diff --git a/platform/win32/msvc/external/exiv2/.gitignore b/platform/win32/msvc/external/exiv2/.gitignore deleted file mode 100644 index 06e75e30b31..00000000000 --- a/platform/win32/msvc/external/exiv2/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -!*.vcxproj -!version*.* diff --git a/platform/win32/msvc/external/exiv2/AUTHORS b/platform/win32/msvc/external/exiv2/AUTHORS deleted file mode 100644 index 9f06aef0e10..00000000000 --- a/platform/win32/msvc/external/exiv2/AUTHORS +++ /dev/null @@ -1 +0,0 @@ -See doc/ChangeLog. Authors and other contributors are mentioned there. diff --git a/platform/win32/msvc/external/exiv2/COPYING b/platform/win32/msvc/external/exiv2/COPYING deleted file mode 100644 index c484a904c8a..00000000000 --- a/platform/win32/msvc/external/exiv2/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 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. - - - Copyright (C) 19yy - - 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. - - , 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/platform/win32/msvc/external/exiv2/README b/platform/win32/msvc/external/exiv2/README deleted file mode 100644 index 25ad3c3ab9d..00000000000 --- a/platform/win32/msvc/external/exiv2/README +++ /dev/null @@ -1,181 +0,0 @@ -Exiv2 -***** - -Welcome to Exiv2, a C++ library and a command line utility to read and -write Exif, IPTC and XMP image metadata. The homepage of Exiv2 is: - - http://www.exiv2.org/ - -See doc/ChangeLog for a list of recent changes to Exiv2. - -Exiv2 API and tag reference documentation is at http://www.exiv2.org/doc -or you can build it and point your browser to doc/index.html. - -For more information on XMP support in Exiv2, see doc/README-XMP. - - -Building and Installing -======================= - -You can build the libraries in the following ways: - -1 UNIX-like systems (including GNU/Linux, Mac OS X, Cygwin, MinGW) - - general notes follow - - FAQ concerning Cygwin/MSYS and Mac OS X: - http://dev.exiv2.org/projects/exiv2/wiki/FAQ - -2 Microsoft Visual C++ - - see msvc/README-MSVC.txt (32bit build VC7.1/2003 and up) - - see msvc64/ReadMe.txt (32bit and 64bit build VC8/2005 and up) - -3 CMake (experimental support for cmake on all platforms) - - see README-CMAKE for more information - -To build a commercial version of the Exiv2 library, see also section -"Commercial version" at the end of this file. - -On UNIX-like systems, use the GNU configure script. Run the following -commands from the top directory (containing this file) to configure, -build and install the library and utility: - - $ ./configure - $ make - $ sudo make install - -If you downloaded the source code from the subversion repository, you -won't have a configure script. Run 'make config' to generate it and see -the section "Hacking" below. - -The default install locations are /usr/local/lib for the library, -/usr/local/bin for the exiv2 utility and /usr/local/include/exiv2 for the -header files. Use the --prefix=directory option of the configure script to -change the default. Run './configure --help' to see a list of all options. - -To uninstall Exiv2 from a UNIX-like system, run: - - $ make uninstall - - -Dependencies -============ - -The following libexiv2 features are enabled by default and may*) -require external libraries. They can be controlled through configure -options. See also './configure --help'. - -Feature Package Configure options --------------------------- -------- ---------------------------- -PNG image support zlib --without-zlib - --with-zlib=DIR -Native language support gettext --disable-nls -Characterset conversions libiconv --without-libiconv-prefix - --with-libiconv-prefix[=DIR] -XMP support expat --disable-xmp - --with-expat=DIR - -zlib http://zlib.net/ -gettext *) http://www.gnu.org/software/gettext/ -libiconv *) http://www.gnu.org/software/libiconv/ -expat http://expat.sourceforge.net/ - -*) Some systems have gettext and iconv in libc. The configure script -should detect this. - -On Linux, it is usually best to install the dependencies through the -package management system of the distribution together with the -corresponding development packages (for the header files and static -libraries). - -To build the sample programs in the samples/ directory ('make samples'), -you also need to have the pkg-config program. - -To generate the documentation ('make doc'), you will further need -doxygen, graphviz, python and xsltproc. - -pkg-config http://pkg-config.freedesktop.org/wiki/ -doxygen http://www.doxygen.org/ -graphviz http://www.graphviz.org/ -python http://www.python.org/ -xsltproc http://xmlsoft.org/XSLT/ - - -Troubleshooting -=============== - -If you have problems building Exiv2 on UNIX-like systems, check the -generated config/config.mk and config/config.h files. You should *not* -need to modify any Makefile directly, in particular not src/Makefile! - - -Support -======= - -All project resources are accessible from the project website at - - http://dev.exiv2.org/wiki/exiv2 - -Please send feedback or queries to the Exiv2 forum. For new bug reports -and feature requests, please open an issue. - - -Hacking -======= - -A pkg-config .pc file is installed together with the library. -Application developers can use pkg-config(1) to obtain correct compile -and link time flags for the Exiv2 library. See samples/Makefile for an -example. - -If you downloaded Exiv2 directly from the subversion repository, and -you want to build it using the GNU configure script, then you need to -have GNU Autoconf installed on your system and create the configure -script as the first step: - - $ make config - -Then run the usual './configure; make; make install' commands. - -Exiv2 uses GNU Libtool in order to build shared libraries on a variety -of systems. While this is very nice for making usable binaries, it can -be a pain when trying to debug a program. For that reason, compilation -of shared libraries can be turned off by specifying the ---disable-shared option to the configure script. - - -License -======= - -Copyright (C) 2004-2012 Andreas Huggel - -Exiv2 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. - -Alternatively, Exiv2 is also available with a commercial license, -which allows it to be used in closed-source projects. Contact me for -more information. - -Exiv2 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., 51 Franklin Street, 5th Floor, Boston, -MA 02110-1301 USA. - - -Commercial version -================== - -If you have a commercial license, you must disable NLS support and -the conversion of Nikon lens data to readable lens names to build a -commercial version of the Exiv2 library. - -To do this on Windows, compile the library with the preprocessor -symbol EXV_COMMERCIAL_VERSION defined in msvc\include\exv_msvc.h or -msvc64\include\exv_msvc.h. On UNIX-like systems, run the configure -script with the options --enable-commercial --disable-nls ---disable-lensdata. diff --git a/platform/win32/msvc/external/exiv2/config/Doxyfile b/platform/win32/msvc/external/exiv2/config/Doxyfile deleted file mode 100644 index 09bf2a6c495..00000000000 --- a/platform/win32/msvc/external/exiv2/config/Doxyfile +++ /dev/null @@ -1,1519 +0,0 @@ -# Doxyfile 1.6.1 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all -# text before the first occurrence of this tag. Doxygen uses libiconv (or the -# iconv built into libc) for the transcoding. See -# http://www.gnu.org/software/libiconv for the list of possible encodings. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = Exiv2 - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, -# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, -# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English -# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, -# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, -# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = NO - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like regular Qt-style comments -# (thus requiring an explicit @brief command for a brief description.) - -JAVADOC_AUTOBRIEF = NO - -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will -# interpret the first line (until the first dot) of a Qt-style -# comment as the brief description. If set to NO, the comments -# will behave just like regular Qt-style comments (thus requiring -# an explicit \brief command for a brief description.) - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 8 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for -# Java. For instance, namespaces will be presented as packages, qualified -# scopes will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources only. Doxygen will then generate output that is more tailored for -# Fortran. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for -# VHDL. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it parses. -# With this tag you can assign which parser to use for a given extension. -# Doxygen has a built-in mapping, but you can override or extend it using this tag. -# The format is ext=language, where ext is a file extension, and language is one of -# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, -# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat -# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), -# use: inc=Fortran f=C. Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. - -BUILTIN_STL_SUPPORT = YES - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. -# Doxygen will parse them like normal C++ but will assume all classes use public -# instead of private inheritance when no explicit protection keyword is present. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate getter -# and setter methods for a property. Setting this option to YES (the default) -# will make doxygen to replace the get and set methods by a property in the -# documentation. This will only work if the methods are indeed getting or -# setting a simple type. If this is not the case, or you want to show the -# methods anyway, you should set this option to NO. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum -# is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically -# be useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. - -TYPEDEF_HIDES_STRUCT = NO - -# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to -# determine which symbols to keep in memory and which to flush to disk. -# When the cache is full, less often used symbols will be written to disk. -# For small to medium size projects (<1000 input files) the default value is -# probably good enough. For larger projects a too small cache size can cause -# doxygen to be busy swapping symbols to and from disk most of the time -# causing a significant performance penality. -# If the system has enough physical memory increasing the cache will improve the -# performance by keeping more symbols in memory. Note that the value works on -# a logarithmic scale so increasing the size by one will rougly double the -# memory usage. The cache size is given by this formula: -# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, -# corresponding to a cache size of 2^16 = 65536 symbols - -SYMBOL_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base -# name of the file that contains the anonymous namespace. By default -# anonymous namespace are hidden. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the (brief and detailed) documentation of class members so that constructors and destructors are listed first. If set to NO (the default) the constructors will appear in the respective orders defined by SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the -# hierarchy of group names into alphabetical order. If set to NO (the default) -# the group names will appear in their defined order. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = NO - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. -# This will remove the Files entry from the Quick Index and from the -# Folder Tree View (if specified). The default is YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the -# Namespaces page. -# This will remove the Namespaces entry from the Quick Index -# and from the Folder Tree View (if specified). The default is YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command , where is the value of -# the FILE_VERSION_FILTER tag, and is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by -# doxygen. The layout file controls the global structure of the generated output files -# in an output format independent way. The create the layout file that represents -# doxygen's defaults, run doxygen with the -l option. You can optionally specify a -# file name after the option, if omitted DoxygenLayout.xml will be used as the name -# of the layout file. - -LAYOUT_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = YES - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be abled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = "$file:$line: $text " - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = ../src/ - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is -# also the default input encoding. Doxygen uses libiconv (or the iconv built -# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for -# the list of possible encodings. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 - -FILE_PATTERNS = - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = NO - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = ../src/getopt_win32.c \ - ../src/getopt_win32.h \ - ../src/localtime.c \ - ../src/private.h \ - ../src/timegm.h \ - ../src/tzfile.h - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix filesystem feature) are excluded -# from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = ../samples/ - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. -# If FILTER_PATTERNS is specified, this tag will be -# ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. -# Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. -# The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER -# is applied to all files. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = YES - -# If the REFERENCES_RELATION tag is set to YES -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = YES - -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. -# Otherwise they will link to the documentation. - -REFERENCES_LINK_SOURCE = YES - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = YES - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 4 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. For this to work a browser that supports -# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox -# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). - -HTML_DYNAMIC_SECTIONS = YES - -# If the GENERATE_DOCSET tag is set to YES, additional index files -# will be generated that can be used as input for Apple's Xcode 3 -# integrated development environment, introduced with OSX 10.5 (Leopard). -# To create a documentation set, doxygen will generate a Makefile in the -# HTML output directory. Running make will produce the docset in that -# directory and running "make install" will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find -# it at startup. -# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information. - -GENERATE_DOCSET = NO - -# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the -# feed. A documentation feed provides an umbrella under which multiple -# documentation sets from a single provider (such as a company or product suite) -# can be grouped. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that -# should uniquely identify the documentation set bundle. This should be a -# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen -# will append .docset to the name. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING -# is used to encode HtmlHelp index (hhk), content (hhc) and project file -# content. - -CHM_INDEX_ENCODING = - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER -# are set, an additional index file will be generated that can be used as input for -# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated -# HTML documentation. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can -# be used to specify the file name of the resulting .qch file. -# The path specified is relative to the HTML output folder. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#namespace - -QHP_NAMESPACE = - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#virtual-folders - -QHP_VIRTUAL_FOLDER = doc - -# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. -# For more information please see -# http://doc.trolltech.com/qthelpproject.html#custom-filters - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see -# Qt Help Project / Custom Filters. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's -# filter section matches. -# Qt Help Project / Filter Attributes. - -QHP_SECT_FILTER_ATTRS = - -# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can -# be used to specify the location of Qt's qhelpgenerator. -# If non-empty doxygen will try to run qhelpgenerator on the generated -# .qhp file. - -QHG_LOCATION = - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - -ENUM_VALUES_PER_LINE = 4 - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. -# If the tag value is set to YES, a side panel will be generated -# containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). -# Windows users are probably better off using the HTML help feature. - -GENERATE_TREEVIEW = NO - -# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, -# and Class Hierarchy pages using a tree view instead of an ordered list. - -USE_INLINE_TREES = NO - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -# Use this tag to change the font size of Latex formulas included -# as images in the HTML documentation. The default is 10. Note that -# when you change the font size after a successful doxygen run you need -# to manually remove any form_*.png images from the HTML output directory -# to force them to be regenerated. - -FORMULA_FONTSIZE = 10 - -# When the SEARCHENGINE tag is enable doxygen will generate a search box for the HTML output. The underlying search engine uses javascript -# and DHTML and should work on any modern browser. Note that when using HTML help (GENERATE_HTMLHELP) or Qt help (GENERATE_QHP) -# there is already a search function so this one should typically -# be disabled. - -SEARCHENGINE = YES - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4wide - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = NO - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = NO - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -# If LATEX_SOURCE_CODE is set to YES then doxygen will include source code with syntax highlighting in the LaTeX output. Note that which sources are shown also depends on other settings such as SOURCE_BROWSER. - -LATEX_SOURCE_CODE = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. -# This is useful -# if you want to understand what is going on. -# On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = NO - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_DEFINED tags. - -EXPAND_ONLY_PREDEF = NO - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -PREDEFINED = - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse -# the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = html/exiv2.xml - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option is superseded by the HAVE_DOT option below. This is only a -# fallback. It is recommended to install and use dot, since it yields more -# powerful graphs. - -CLASS_DIAGRAMS = YES - -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see -# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the -# documentation. The MSCGEN_PATH tag allows you to specify the directory where -# the mscgen tool resides. If left empty the tool is assumed to be found in the -# default search path. - -MSCGEN_PATH = - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = YES - -# By default doxygen will write a font called FreeSans.ttf to the output -# directory and reference it in all dot files that doxygen generates. This -# font does not include all possible unicode characters however, so when you need -# these (or just want a differently looking font) you can specify the font name -# using DOT_FONTNAME. You need need to make sure dot is able to find the font, -# which can be done by putting it in a standard location or by setting the -# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory -# containing the font. - -DOT_FONTNAME = FreeSans - -# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. -# The default size is 10pt. - -DOT_FONTSIZE = 10 - -# By default doxygen will tell dot to use the output directory to look for the -# FreeSans.ttf font (which doxygen will put there itself). If you specify a -# different font using DOT_FONTNAME you can set the path where dot -# can find it using this tag. - -DOT_FONTPATH = - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH and HAVE_DOT options are set to YES then -# doxygen will generate a call dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable call graphs -# for selected functions only using the \callgraph command. - -CALL_GRAPH = NO - -# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then -# doxygen will generate a caller dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable caller -# graphs for selected functions only using the \callergraph command. - -CALLER_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of -# nodes that will be shown in the graph. If the number of nodes in a graph -# becomes larger than this value, doxygen will truncate the graph, which is -# visualized by representing a node as a red box. Note that doxygen if the -# number of direct children of the root node in a graph is already larger than -# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note -# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. - -DOT_GRAPH_MAX_NODES = 50 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes -# that lay further from the root node will be omitted. Note that setting this -# option to 1 or 2 may greatly reduce the computation time needed for large -# code bases. Also note that the size of a graph can be further restricted by -# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. - -MAX_DOT_GRAPH_DEPTH = 0 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, because dot on Windows does not -# seem to support this out of the box. Warning: Depending on the platform used, -# enabling this option may lead to badly anti-aliased labels on the edges of -# a graph (i.e. they become hard to read). - -DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - -DOT_MULTI_TARGETS = NO - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES diff --git a/platform/win32/msvc/external/exiv2/config/Makefile.in b/platform/win32/msvc/external/exiv2/config/Makefile.in deleted file mode 100644 index ea9c0cb2467..00000000000 --- a/platform/win32/msvc/external/exiv2/config/Makefile.in +++ /dev/null @@ -1,100 +0,0 @@ -# ***************************************************** -*- Makefile -*- -# -# Copyright (C) 2004-2012 Andreas Huggel -# -# This Makefile is part of the Exiv2 distribution. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# 3. The name of the author may not be used to endorse or promote -# products derived from this software without specific prior -# written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# File: Makefile.in -# Version: $Rev: 2681 $ -# Author(s): Andreas Huggel (ahu) -# History: 15-Jan-04, ahu: created -# -# Description: -# Simple top-level makefile that mainly forwards to makefiles in -# subdirectories. -# -# Restrictions: -# Requires GNU make. -# - -######################################################################## -# Makefile is a generated file. Do NOT change any settings in this file. -# Run ./configure with the appropriate options to regenerate the file -# and possibly others. -######################################################################## - -SHELL = /bin/sh -ENABLE_XMP = @ENABLE_XMP@ - -.PHONY: all doc config samples xmpsdk \ - mostlyclean clean distclean maintainer-clean \ - install uninstall - -all install: config/config.mk xmpsdk - cd src && $(MAKE) $(MAKECMDGOALS) - cd po && $(MAKE) $(MAKECMDGOALS) - -uninstall: config/config.mk - cd src && $(MAKE) $(MAKECMDGOALS) - cd po && $(MAKE) $(MAKECMDGOALS) - -doc: config/config.mk - cd doc && $(MAKE) $(MAKECMDGOALS) - -samples: config/config.mk - cd samples && $(MAKE) $(MAKECMDGOALS) - -config: - cd config && $(MAKE) -f config.make $(MAKECMDGOALS) - -xmpsdk: config/config.mk - if test "x$(ENABLE_XMP)" = "x1"; then cd xmpsdk/src && $(MAKE) $@; fi; - -mostlyclean clean: config/config.mk - cd src && $(MAKE) $(MAKECMDGOALS) - cd doc && $(MAKE) $(MAKECMDGOALS) - cd samples && $(MAKE) $(MAKECMDGOALS) - cd xmpsdk/src && $(MAKE) $(MAKECMDGOALS) - cd config && $(MAKE) -f config.make $(MAKECMDGOALS) - cd po && $(MAKE) $(MAKECMDGOALS) - -# `make distclean' also removes files created by configuring -# the program. Running `make all distclean' prepares the project -# for packaging. -distclean: clean - rm -f config.log config.status libtool - rm -f *~ *.bak *# - -# This removes almost everything, including the configure script! -maintainer-clean: distclean - rm -f configure - -cd test && $(MAKE) $(MAKECMDGOALS) - -config/config.mk: - $(error File config/config.mk does not exist. Did you run ./configure?) diff --git a/platform/win32/msvc/external/exiv2/config/aclocal.m4 b/platform/win32/msvc/external/exiv2/config/aclocal.m4 deleted file mode 100644 index 3af6a50b40d..00000000000 --- a/platform/win32/msvc/external/exiv2/config/aclocal.m4 +++ /dev/null @@ -1,10200 +0,0 @@ -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008 Free Software Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -m4_define([_LT_COPYING], [dnl -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008 Free Software Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool 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. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -]) - -# serial 56 LT_INIT - - -# LT_PREREQ(VERSION) -# ------------------ -# Complain and exit if this libtool version is less that VERSION. -m4_defun([LT_PREREQ], -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], - [m4_fatal([Libtool version $1 or higher is required], - 63)])], - [$2])]) - - -# _LT_CHECK_BUILDDIR -# ------------------ -# Complain if the absolute build directory name contains unusual characters -m4_defun([_LT_CHECK_BUILDDIR], -[case `pwd` in - *\ * | *\ *) - AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; -esac -]) - - -# LT_INIT([OPTIONS]) -# ------------------ -AC_DEFUN([LT_INIT], -[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT -AC_BEFORE([$0], [LT_LANG])dnl -AC_BEFORE([$0], [LT_OUTPUT])dnl -AC_BEFORE([$0], [LTDL_INIT])dnl -m4_require([_LT_CHECK_BUILDDIR])dnl - -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -AC_REQUIRE([LTVERSION_VERSION])dnl -AC_REQUIRE([LTOBSOLETE_VERSION])dnl -m4_require([_LT_PROG_LTMAIN])dnl - -dnl Parse OPTIONS -_LT_SET_OPTIONS([$0], [$1]) - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -_LT_SETUP - -# Only expand once: -m4_define([LT_INIT]) -])# LT_INIT - -# Old names: -AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) -AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PROG_LIBTOOL], []) -dnl AC_DEFUN([AM_PROG_LIBTOOL], []) - - -# _LT_CC_BASENAME(CC) -# ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -m4_defun([_LT_CC_BASENAME], -[for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` -]) - - -# _LT_FILEUTILS_DEFAULTS -# ---------------------- -# It is okay to use these file commands and assume they have been set -# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. -m4_defun([_LT_FILEUTILS_DEFAULTS], -[: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} -])# _LT_FILEUTILS_DEFAULTS - - -# _LT_SETUP -# --------- -m4_defun([_LT_SETUP], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -_LT_DECL([], [host_alias], [0], [The host system])dnl -_LT_DECL([], [host], [0])dnl -_LT_DECL([], [host_os], [0])dnl -dnl -_LT_DECL([], [build_alias], [0], [The build system])dnl -_LT_DECL([], [build], [0])dnl -_LT_DECL([], [build_os], [0])dnl -dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -test -z "$LN_S" && LN_S="ln -s" -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -dnl -AC_REQUIRE([LT_CMD_MAX_LEN])dnl -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl -dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_CMD_RELOAD])dnl -m4_require([_LT_CHECK_MAGIC_METHOD])dnl -m4_require([_LT_CMD_OLD_ARCHIVE])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl - -_LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi -]) -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -_LT_CHECK_OBJDIR - -m4_require([_LT_TAG_COMPILER])dnl -_LT_PROG_ECHO_BACKSLASH - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([["`\\]]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - _LT_PATH_MAGIC - fi - ;; -esac - -# Use C for the default configuration in the libtool script -LT_SUPPORTED_TAG([CC]) -_LT_LANG_C_CONFIG -_LT_LANG_DEFAULT_CONFIG -_LT_CONFIG_COMMANDS -])# _LT_SETUP - - -# _LT_PROG_LTMAIN -# --------------- -# Note that this code is called both from `configure', and `config.status' -# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# `config.status' has no value for ac_aux_dir unless we are using Automake, -# so we pass a copy along to make sure it has a sensible value anyway. -m4_defun([_LT_PROG_LTMAIN], -[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain="$ac_aux_dir/ltmain.sh" -])# _LT_PROG_LTMAIN - - -## ------------------------------------- ## -## Accumulate code for creating libtool. ## -## ------------------------------------- ## - -# So that we can recreate a full libtool script including additional -# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the `libtool' -# label. - - -# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) -# ---------------------------------------- -# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL_INIT], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_INIT], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_INIT]) - - -# _LT_CONFIG_LIBTOOL([COMMANDS]) -# ------------------------------ -# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) - - -# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) -# ----------------------------------------------------- -m4_defun([_LT_CONFIG_SAVE_COMMANDS], -[_LT_CONFIG_LIBTOOL([$1]) -_LT_CONFIG_LIBTOOL_INIT([$2]) -]) - - -# _LT_FORMAT_COMMENT([COMMENT]) -# ----------------------------- -# Add leading comment marks to the start of each line, and a trailing -# full-stop to the whole comment if one is not present already. -m4_define([_LT_FORMAT_COMMENT], -[m4_ifval([$1], [ -m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], - [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) -)]) - - - -## ------------------------ ## -## FIXME: Eliminate VARNAME ## -## ------------------------ ## - - -# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) -# ------------------------------------------------------------------- -# CONFIGNAME is the name given to the value in the libtool script. -# VARNAME is the (base) name used in the configure script. -# VALUE may be 0, 1 or 2 for a computed quote escaped value based on -# VARNAME. Any other value will be used directly. -m4_define([_LT_DECL], -[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], - [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], - [m4_ifval([$1], [$1], [$2])]) - lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) - m4_ifval([$4], - [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) - lt_dict_add_subkey([lt_decl_dict], [$2], - [tagged?], [m4_ifval([$5], [yes], [no])])]) -]) - - -# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) -# -------------------------------------------------------- -m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) - - -# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_tag_varnames], -[_lt_decl_filter([tagged?], [yes], $@)]) - - -# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) -# --------------------------------------------------------- -m4_define([_lt_decl_filter], -[m4_case([$#], - [0], [m4_fatal([$0: too few arguments: $#])], - [1], [m4_fatal([$0: too few arguments: $#: $1])], - [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], - [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], - [lt_dict_filter([lt_decl_dict], $@)])[]dnl -]) - - -# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) -# -------------------------------------------------- -m4_define([lt_decl_quote_varnames], -[_lt_decl_filter([value], [1], $@)]) - - -# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_dquote_varnames], -[_lt_decl_filter([value], [2], $@)]) - - -# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_varnames_tagged], -[m4_assert([$# <= 2])dnl -_$0(m4_quote(m4_default([$1], [[, ]])), - m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), - m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) -m4_define([_lt_decl_varnames_tagged], -[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) - - -# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_all_varnames], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_if([$2], [], - m4_quote(lt_decl_varnames), - m4_quote(m4_shift($@))))[]dnl -]) -m4_define([_lt_decl_all_varnames], -[lt_join($@, lt_decl_varnames_tagged([$1], - lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl -]) - - -# _LT_CONFIG_STATUS_DECLARE([VARNAME]) -# ------------------------------------ -# Quote a variable value, and forward it to `config.status' so that its -# declaration there will have the same value as in `configure'. VARNAME -# must have a single quote delimited value for this to work. -m4_define([_LT_CONFIG_STATUS_DECLARE], -[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`']) - - -# _LT_CONFIG_STATUS_DECLARATIONS -# ------------------------------ -# We delimit libtool config variables with single quotes, so when -# we write them to config.status, we have to be sure to quote all -# embedded single quotes properly. In configure, this macro expands -# each variable declared with _LT_DECL (and _LT_TAGDECL) into: -# -# ='`$ECHO "X$" | $Xsed -e "$delay_single_quote_subst"`' -m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], -[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), - [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAGS -# ---------------- -# Output comment and list of tags supported by the script -m4_defun([_LT_LIBTOOL_TAGS], -[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags="_LT_TAGS"dnl -]) - - -# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) -# ----------------------------------- -# Extract the dictionary values for VARNAME (optionally with TAG) and -# expand to a commented shell variable setting: -# -# # Some comment about what VAR is for. -# visible_name=$lt_internal_name -m4_define([_LT_LIBTOOL_DECLARE], -[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], - [description])))[]dnl -m4_pushdef([_libtool_name], - m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl -m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), - [0], [_libtool_name=[$]$1], - [1], [_libtool_name=$lt_[]$1], - [2], [_libtool_name=$lt_[]$1], - [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl -m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl -]) - - -# _LT_LIBTOOL_CONFIG_VARS -# ----------------------- -# Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' -# script. Tagged libtool config variables (even for the LIBTOOL CONFIG -# section) are produced by _LT_LIBTOOL_TAG_VARS. -m4_defun([_LT_LIBTOOL_CONFIG_VARS], -[m4_foreach([_lt_var], - m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAG_VARS(TAG) -# ------------------------- -m4_define([_LT_LIBTOOL_TAG_VARS], -[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) - - -# _LT_TAGVAR(VARNAME, [TAGNAME]) -# ------------------------------ -m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) - - -# _LT_CONFIG_COMMANDS -# ------------------- -# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of -# variables for single and double quote escaping we saved from calls -# to _LT_DECL, we can put quote escaped variables declarations -# into `config.status', and then the shell code to quote escape them in -# for loops in `config.status'. Finally, any additional code accumulated -# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. -m4_defun([_LT_CONFIG_COMMANDS], -[AC_PROVIDE_IFELSE([LT_OUTPUT], - dnl If the libtool generation code has been placed in $CONFIG_LT, - dnl instead of duplicating it all over again into config.status, - dnl then we will have config.status run $CONFIG_LT later, so it - dnl needs to know what name is stored there: - [AC_CONFIG_COMMANDS([libtool], - [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], - dnl If the libtool generation code is destined for config.status, - dnl expand the accumulated commands and init code now: - [AC_CONFIG_COMMANDS([libtool], - [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) -])#_LT_CONFIG_COMMANDS - - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], -[ - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -_LT_CONFIG_STATUS_DECLARATIONS -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# Quote evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_quote_varnames); do - case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Fix-up fallback echo if it was mangled by the above quoting rules. -case \$lt_ECHO in -*'\\\[$]0 --fallback-echo"')dnl " - lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\` - ;; -esac - -_LT_OUTPUT_LIBTOOL_INIT -]) - - -# LT_OUTPUT -# --------- -# This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), incase it is used in configure for compilation -# tests. -AC_DEFUN([LT_OUTPUT], -[: ${CONFIG_LT=./config.lt} -AC_MSG_NOTICE([creating $CONFIG_LT]) -cat >"$CONFIG_LT" <<_LTEOF -#! $SHELL -# Generated by $as_me. -# Run this file to recreate a libtool stub with the current configuration. - -lt_cl_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_LTEOF - -cat >>"$CONFIG_LT" <<\_LTEOF -AS_SHELL_SANITIZE -_AS_PREPARE - -exec AS_MESSAGE_FD>&1 -exec AS_MESSAGE_LOG_FD>>config.log -{ - echo - AS_BOX([Running $as_me.]) -} >&AS_MESSAGE_LOG_FD - -lt_cl_help="\ -\`$as_me' creates a local libtool stub from the current configuration, -for use in further configure time tests before the real libtool is -generated. - -Usage: $[0] [[OPTIONS]] - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - -Report bugs to ." - -lt_cl_version="\ -m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl -m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) -configured by $[0], generated by m4_PACKAGE_STRING. - -Copyright (C) 2008 Free Software Foundation, Inc. -This config.lt script is free software; the Free Software Foundation -gives unlimited permision to copy, distribute and modify it." - -while test $[#] != 0 -do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; - --help | --h* | -h ) - echo "$lt_cl_help"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --quiet | --q* | --silent | --s* | -q ) - lt_cl_silent=: ;; - - -*) AC_MSG_ERROR([unrecognized option: $[1] -Try \`$[0] --help' for more information.]) ;; - - *) AC_MSG_ERROR([unrecognized argument: $[1] -Try \`$[0] --help' for more information.]) ;; - esac - shift -done - -if $lt_cl_silent; then - exec AS_MESSAGE_FD>/dev/null -fi -_LTEOF - -cat >>"$CONFIG_LT" <<_LTEOF -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -_LTEOF - -cat >>"$CONFIG_LT" <<\_LTEOF -AC_MSG_NOTICE([creating $ofile]) -_LT_OUTPUT_LIBTOOL_COMMANDS -AS_EXIT(0) -_LTEOF -chmod +x "$CONFIG_LT" - -# configure is writing to config.log, but config.lt does its own redirection, -# appending to config.log, which fails on DOS, as config.log is still kept -# open by configure. Here we exec the FD to /dev/null, effectively closing -# config.log, so it can be properly (re)opened and appended to by config.lt. -if test "$no_create" != yes; then - lt_cl_success=: - test "$silent" = yes && - lt_config_lt_args="$lt_config_lt_args --quiet" - exec AS_MESSAGE_LOG_FD>/dev/null - $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false - exec AS_MESSAGE_LOG_FD>>config.log - $lt_cl_success || AS_EXIT(1) -fi -])# LT_OUTPUT - - -# _LT_CONFIG(TAG) -# --------------- -# If TAG is the built-in tag, create an initial libtool script with a -# default configuration from the untagged config vars. Otherwise add code -# to config.status for appending the configuration named by TAG from the -# matching tagged config vars. -m4_defun([_LT_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_CONFIG_SAVE_COMMANDS([ - m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl - m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -_LT_COPYING -_LT_LIBTOOL_TAGS - -# ### BEGIN LIBTOOL CONFIG -_LT_LIBTOOL_CONFIG_VARS -_LT_LIBTOOL_TAG_VARS -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - _LT_PROG_LTMAIN - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - _LT_PROG_XSI_SHELLFNS - - sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -], -[cat <<_LT_EOF >> "$ofile" - -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -dnl in a comment (ie after a #). -# ### BEGIN LIBTOOL TAG CONFIG: $1 -_LT_LIBTOOL_TAG_VARS(_LT_TAG) -# ### END LIBTOOL TAG CONFIG: $1 -_LT_EOF -])dnl /m4_if -], -[m4_if([$1], [], [ - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile'], []) -])dnl /_LT_CONFIG_SAVE_COMMANDS -])# _LT_CONFIG - - -# LT_SUPPORTED_TAG(TAG) -# --------------------- -# Trace this macro to discover what tags are supported by the libtool -# --tag option, using: -# autoconf --trace 'LT_SUPPORTED_TAG:$1' -AC_DEFUN([LT_SUPPORTED_TAG], []) - - -# C support is built-in for now -m4_define([_LT_LANG_C_enabled], []) -m4_define([_LT_TAGS], []) - - -# LT_LANG(LANG) -# ------------- -# Enable libtool support for the given language if not already enabled. -AC_DEFUN([LT_LANG], -[AC_BEFORE([$0], [LT_OUTPUT])dnl -m4_case([$1], - [C], [_LT_LANG(C)], - [C++], [_LT_LANG(CXX)], - [Java], [_LT_LANG(GCJ)], - [Fortran 77], [_LT_LANG(F77)], - [Fortran], [_LT_LANG(FC)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl -])# LT_LANG - - -# _LT_LANG(LANGNAME) -# ------------------ -m4_defun([_LT_LANG], -[m4_ifdef([_LT_LANG_]$1[_enabled], [], - [LT_SUPPORTED_TAG([$1])dnl - m4_append([_LT_TAGS], [$1 ])dnl - m4_define([_LT_LANG_]$1[_enabled], [])dnl - _LT_LANG_$1_CONFIG($1)])dnl -])# _LT_LANG - - -# _LT_LANG_DEFAULT_CONFIG -# ----------------------- -m4_defun([_LT_LANG_DEFAULT_CONFIG], -[AC_PROVIDE_IFELSE([AC_PROG_CXX], - [LT_LANG(CXX)], - [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) - -AC_PROVIDE_IFELSE([AC_PROG_F77], - [LT_LANG(F77)], - [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) - -AC_PROVIDE_IFELSE([AC_PROG_FC], - [LT_LANG(FC)], - [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) - -dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal -dnl pulling things in needlessly. -AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([LT_PROG_GCJ], - [LT_LANG(GCJ)], - [m4_ifdef([AC_PROG_GCJ], - [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([A][M_PROG_GCJ], - [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([LT_PROG_GCJ], - [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) - -AC_PROVIDE_IFELSE([LT_PROG_RC], - [LT_LANG(RC)], - [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) -])# _LT_LANG_DEFAULT_CONFIG - -# Obsolete macros: -AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) -AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) -AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) -AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_CXX], []) -dnl AC_DEFUN([AC_LIBTOOL_F77], []) -dnl AC_DEFUN([AC_LIBTOOL_FC], []) -dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) - - -# _LT_TAG_COMPILER -# ---------------- -m4_defun([_LT_TAG_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl -_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl -_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_TAG_COMPILER - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -m4_defun([_LT_COMPILER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* -])# _LT_COMPILER_BOILERPLATE - - -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -m4_defun([_LT_LINKER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* -])# _LT_LINKER_BOILERPLATE - -# _LT_REQUIRED_DARWIN_CHECKS -# ------------------------- -m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ - case $host_os in - rhapsody* | darwin*) - AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) - AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) - AC_CHECK_TOOL([LIPO], [lipo], [:]) - AC_CHECK_TOOL([OTOOL], [otool], [:]) - AC_CHECK_TOOL([OTOOL64], [otool64], [:]) - _LT_DECL([], [DSYMUTIL], [1], - [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) - _LT_DECL([], [NMEDIT], [1], - [Tool to change global to local symbols on Mac OS X]) - _LT_DECL([], [LIPO], [1], - [Tool to manipulate fat objects and archives on Mac OS X]) - _LT_DECL([], [OTOOL], [1], - [ldd/readelf like tool for Mach-O binaries on Mac OS X]) - _LT_DECL([], [OTOOL64], [1], - [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) - - AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], - [lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi]) - AC_CACHE_CHECK([for -exported_symbols_list linker flag], - [lt_cv_ld_exported_symbols_list], - [lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS="$save_LDFLAGS" - ]) - case $host_os in - rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[[012]]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac -]) - - -# _LT_DARWIN_LINKER_FEATURES -# -------------------------- -# Checks for linker and compiler features on darwin -m4_defun([_LT_DARWIN_LINKER_FEATURES], -[ - m4_require([_LT_REQUIRED_DARWIN_CHECKS]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(whole_archive_flag_spec, $1)='' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=echo - _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - m4_if([$1], [CXX], -[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi -],[]) - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi -]) - -# _LT_SYS_MODULE_PATH_AIX -# ----------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -m4_defun([_LT_SYS_MODULE_PATH_AIX], -[m4_require([_LT_DECL_SED])dnl -AC_LINK_IFELSE(AC_LANG_PROGRAM,[ -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi],[]) -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -])# _LT_SYS_MODULE_PATH_AIX - - -# _LT_SHELL_INIT(ARG) -# ------------------- -m4_define([_LT_SHELL_INIT], -[ifdef([AC_DIVERSION_NOTICE], - [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], - [AC_DIVERT_PUSH(NOTICE)]) -$1 -AC_DIVERT_POP -])# _LT_SHELL_INIT - - -# _LT_PROG_ECHO_BACKSLASH -# ----------------------- -# Add some code to the start of the generated configure script which -# will find an echo command which doesn't interpret backslashes. -m4_defun([_LT_PROG_ECHO_BACKSLASH], -[_LT_SHELL_INIT([ -# Check that we are running under the correct shell. -SHELL=${CONFIG_SHELL-/bin/sh} - -case X$lt_ECHO in -X*--fallback-echo) - # Remove one level of quotation (which was required for Make). - ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` - ;; -esac - -ECHO=${lt_ECHO-echo} -if test "X[$]1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X[$]1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then - # Yippee, $ECHO works! - : -else - # Restart under the correct shell. - exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} -fi - -if test "X[$]1" = X--fallback-echo; then - # used as fallback echo - shift - cat <<_LT_EOF -[$]* -_LT_EOF - exit 0 -fi - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test -z "$lt_ECHO"; then - if test "X${echo_test_string+set}" != Xset; then - # find a string as large as possible, as long as the shell can cope with it - for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do - # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... - if { echo_test_string=`eval $cmd`; } 2>/dev/null && - { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null - then - break - fi - done - fi - - if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - : - else - # The Solaris, AIX, and Digital Unix default echo programs unquote - # backslashes. This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # - # So, first we look for a working echo in the user's PATH. - - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for dir in $PATH /usr/ucb; do - IFS="$lt_save_ifs" - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - ECHO="$dir/echo" - break - fi - done - IFS="$lt_save_ifs" - - if test "X$ECHO" = Xecho; then - # We didn't find a better echo, so look for alternatives. - if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # This shell has a builtin print -r that does the trick. - ECHO='print -r' - elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && - test "X$CONFIG_SHELL" != X/bin/ksh; then - # If we have ksh, try running configure again with it. - ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - export ORIGINAL_CONFIG_SHELL - CONFIG_SHELL=/bin/ksh - export CONFIG_SHELL - exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} - else - # Try using printf. - ECHO='printf %s\n' - if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # Cool, printf works - : - elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL - export CONFIG_SHELL - SHELL="$CONFIG_SHELL" - export SHELL - ECHO="$CONFIG_SHELL [$]0 --fallback-echo" - elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - ECHO="$CONFIG_SHELL [$]0 --fallback-echo" - else - # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do - if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null - then - break - fi - prev="$cmd" - done - - if test "$prev" != 'sed 50q "[$]0"'; then - echo_test_string=`eval $prev` - export echo_test_string - exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} - else - # Oops. We lost completely, so just stick with echo. - ECHO=echo - fi - fi - fi - fi - fi -fi - -# Copy echo and quote the copy suitably for passing to libtool from -# the Makefile, instead of quoting the original, which is used later. -lt_ECHO=$ECHO -if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then - lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" -fi - -AC_SUBST(lt_ECHO) -]) -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [ECHO], [1], - [An echo program that does not interpret backslashes]) -])# _LT_PROG_ECHO_BACKSLASH - - -# _LT_ENABLE_LOCK -# --------------- -m4_defun([_LT_ENABLE_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AS_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line __oline__ "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" -])# _LT_ENABLE_LOCK - - -# _LT_CMD_OLD_ARCHIVE -# ------------------- -m4_defun([_LT_CMD_OLD_ARCHIVE], -[AC_CHECK_TOOL(AR, ar, false) -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1]) - -AC_CHECK_TOOL(STRIP, strip, :) -test -z "$STRIP" && STRIP=: -_LT_DECL([], [STRIP], [1], [A symbol stripping program]) - -AC_CHECK_TOOL(RANLIB, ranlib, :) -test -z "$RANLIB" && RANLIB=: -_LT_DECL([], [RANLIB], [1], - [Commands used to install an old-style archive]) - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi -_LT_DECL([], [old_postinstall_cmds], [2]) -_LT_DECL([], [old_postuninstall_cmds], [2]) -_LT_TAGDECL([], [old_archive_cmds], [2], - [Commands used to build an old-style archive]) -])# _LT_CMD_OLD_ARCHIVE - - -# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([_LT_COMPILER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - fi - $RM conftest* -]) - -if test x"[$]$2" = xyes; then - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -])# _LT_COMPILER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) - - -# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------- -# Check whether the given linker option works -AC_DEFUN([_LT_LINKER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" -]) - -if test x"[$]$2" = xyes; then - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -])# _LT_LINKER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) - - -# LT_CMD_MAX_LEN -#--------------- -AC_DEFUN([LT_CMD_MAX_LEN], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ - = "XX$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac -]) -if test -n $lt_cv_sys_max_cmd_len ; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -max_cmd_len=$lt_cv_sys_max_cmd_len -_LT_DECL([], [max_cmd_len], [0], - [What is the maximum length of a command?]) -])# LT_CMD_MAX_LEN - -# Old name: -AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) - - -# _LT_HEADER_DLFCN -# ---------------- -m4_defun([_LT_HEADER_DLFCN], -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -])# _LT_HEADER_DLFCN - - -# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ---------------------------------------------------------------- -m4_defun([_LT_TRY_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "$cross_compiling" = yes; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -[#line __oline__ "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -}] -_LT_EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_dlunknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_TRY_DLOPEN_SELF - - -# LT_SYS_DLOPEN_SELF -# ------------------ -AC_DEFUN([LT_SYS_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -])# LT_SYS_DLOPEN_SELF - -# Old name: -AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) - - -# _LT_COMPILER_C_O([TAGNAME]) -# --------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler. -# This macro does not hard code the compiler like AC_PROG_CC_C_O. -m4_defun([_LT_COMPILER_C_O], -[m4_require([_LT_DECL_SED])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* -]) -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) -])# _LT_COMPILER_C_O - - -# _LT_COMPILER_FILE_LOCKS([TAGNAME]) -# ---------------------------------- -# Check to see if we can do hard links to lock some files if needed -m4_defun([_LT_COMPILER_FILE_LOCKS], -[m4_require([_LT_ENABLE_LOCK])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_COMPILER_C_O([$1]) - -hard_links="nottested" -if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -])# _LT_COMPILER_FILE_LOCKS - - -# _LT_CHECK_OBJDIR -# ---------------- -m4_defun([_LT_CHECK_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -_LT_DECL([], [objdir], [0], - [The name of the directory that contains temporary libtool files])dnl -m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", - [Define to the sub-directory in which libtool stores uninstalled libraries.]) -])# _LT_CHECK_OBJDIR - - -# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) -# -------------------------------------- -# Check hardcoding attributes. -m4_defun([_LT_LINKER_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || - test -n "$_LT_TAGVAR(runpath_var, $1)" || - test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) - -if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || - test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi -_LT_TAGDECL([], [hardcode_action], [0], - [How to hardcode a shared library path into an executable]) -])# _LT_LINKER_HARDCODE_LIBPATH - - -# _LT_CMD_STRIPLIB -# ---------------- -m4_defun([_LT_CMD_STRIPLIB], -[m4_require([_LT_DECL_EGREP]) -striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -_LT_DECL([], [striplib], [1]) -])# _LT_CMD_STRIPLIB - - -# _LT_SYS_DYNAMIC_LINKER([TAG]) -# ----------------------------- -# PORTME Fill in your ld.so characteristics -m4_defun([_LT_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_OBJDUMP])dnl -m4_require([_LT_DECL_SED])dnl -AC_MSG_CHECKING([dynamic linker characteristics]) -m4_if([$1], - [], [ -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` - else - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -}'` - sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[[4-9]]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[[45]]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - esac - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[[123]]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ - freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - ;; - -interix[[3-9]]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - # Some binutils ld are patched to set DT_RUNPATH - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ - LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], - [shlibpath_overrides_runpath=yes])]) - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - -_LT_DECL([], [variables_saved_for_relink], [1], - [Variables whose values should be saved in libtool wrapper scripts and - restored at link time]) -_LT_DECL([], [need_lib_prefix], [0], - [Do we need the "lib" prefix for modules?]) -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -_LT_DECL([], [version_type], [0], [Library versioning type]) -_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -_LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shlibpath searched before the hard-coded library search path?]) -_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -_LT_DECL([], [library_names_spec], [1], - [[List of archive names. First name is the real one, the rest are links. - The last name is the one that the linker finds with -lNAME]]) -_LT_DECL([], [soname_spec], [1], - [[The coded name of the library, if different from the real name]]) -_LT_DECL([], [postinstall_cmds], [2], - [Command to use after installation of a shared archive]) -_LT_DECL([], [postuninstall_cmds], [2], - [Command to use after uninstallation of a shared archive]) -_LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) -_LT_DECL([], [finish_eval], [1], - [[As "finish_cmds", except a single script fragment to be evaled but - not shown]]) -_LT_DECL([], [hardcode_into_libs], [0], - [Whether we should hardcode library paths into libraries]) -_LT_DECL([], [sys_lib_search_path_spec], [2], - [Compile-time system search path for libraries]) -_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], - [Run-time system search path for libraries]) -])# _LT_SYS_DYNAMIC_LINKER - - -# _LT_PATH_TOOL_PREFIX(TOOL) -# -------------------------- -# find a file program which can recognize shared library -AC_DEFUN([_LT_PATH_TOOL_PREFIX], -[m4_require([_LT_DECL_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="m4_if([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins with "file"])dnl -])# _LT_PATH_TOOL_PREFIX - -# Old name: -AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) - - -# _LT_PATH_MAGIC -# -------------- -# find a file program which can recognize a shared library -m4_defun([_LT_PATH_MAGIC], -[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# _LT_PATH_MAGIC - - -# LT_PATH_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([LT_PATH_LD], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl - -AC_ARG_WITH([gnu-ld], - [AS_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], - [with_gnu_ld=no])dnl - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - -_LT_DECL([], [deplibs_check_method], [1], - [Method to check whether dependent libraries are shared objects]) -_LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method == "file_magic"]) -])# _LT_CHECK_MAGIC_METHOD - - -# LT_PATH_NM -# ---------- -# find the pathname to a BSD- or MS-compatible name lister -AC_DEFUN([LT_PATH_NM], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi]) -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) - AC_SUBST([DUMPBIN]) - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl - -AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], - [lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD) - cat conftest.out >&AS_MESSAGE_LOG_FD - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest*]) -])# LT_PATH_NM - -# Old names: -AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) -AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_PROG_NM], []) -dnl AC_DEFUN([AC_PROG_NM], []) - - -# LT_LIB_M -# -------- -# check for math library -AC_DEFUN([LT_LIB_M], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM="-lm") - ;; -esac -AC_SUBST([LIBM]) -])# LT_LIB_M - -# Old name: -AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_CHECK_LIBM], []) - - -# _LT_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------- -m4_defun([_LT_COMPILER_NO_RTTI], -[m4_require([_LT_TAG_COMPILER])dnl - -_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - - _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) -])# _LT_COMPILER_NO_RTTI - - -# _LT_CMD_GLOBAL_SYMBOLS -# ---------------------- -m4_defun([_LT_CMD_GLOBAL_SYMBOLS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_PATH_NM])dnl -AC_REQUIRE([LT_PATH_LD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_TAG_COMPILER])dnl - -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris*) - symcode='[[BDRT]]' - ;; -sco3.2v5*) - symcode='[[DT]]' - ;; -sysv4.2uw2*) - symcode='[[DT]]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[[ABDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK ['"\ -" {last_section=section; section=\$ 3};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx]" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[[]] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_save_LIBS="$LIBS" - lt_save_CFLAGS="$CFLAGS" - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS="$lt_save_LIBS" - CFLAGS="$lt_save_CFLAGS" - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi - -_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], - [Take the output of nm and produce a listing of raw symbols and C names]) -_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], - [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) -_LT_DECL([global_symbol_to_c_name_address_lib_prefix], - [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], - [Transform the output of nm in a C name address pair when lib prefix is needed]) -]) # _LT_CMD_GLOBAL_SYMBOLS - - -# _LT_COMPILER_PIC([TAGNAME]) -# --------------------------- -m4_defun([_LT_COMPILER_PIC], -[m4_require([_LT_TAG_COMPILER])dnl -_LT_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_TAGVAR(lt_prog_compiler_static, $1)= - -AC_MSG_CHECKING([for $compiler option to produce PIC]) -m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix[[4-9]]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - dgux*) - case $cc_basename in - ec++*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xlc* | xlC*) - # IBM XL 8.0 on PPC - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd* | netbsdelf*-gnu) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test "$GCC" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - hpux9* | hpux10* | hpux11*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - linux* | k*bsd*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' - _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' - ;; - pgcc* | pgf77* | pgf90* | pgf95*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - ccc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xl*) - # IBM XL C 8.0/Fortran 10.1 on PPC - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - *Sun\ F*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='' - ;; - esac - ;; - esac - ;; - - newsos6) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - rdos*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - unicos*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" - ;; -esac -AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], - [How to pass a linker flag through the compiler]) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], - [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], - [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], - [Additional compiler flags for building library objects]) - -# -# Check to make sure the static flag actually works. -# -wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" -_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], - _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), - $lt_tmp_static_flag, - [], - [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) -_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], - [Compiler flag to prevent dynamic linking]) -])# _LT_COMPILER_PIC - - -# _LT_LINKER_SHLIBS([TAGNAME]) -# ---------------------------- -# See if the linker supports building shared libraries. -m4_defun([_LT_LINKER_SHLIBS], -[AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -m4_if([$1], [CXX], [ - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - case $host_os in - aix[[4-9]]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; - cygwin* | mingw* | cegcc*) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - ;; - linux* | k*bsd*-gnu) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] -], [ - runpath_var= - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_cmds, $1)= - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(compiler_needs_object, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(old_archive_from_new_cmds, $1)= - _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_TAGVAR(thread_safe_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. -dnl Note also adjust exclude_expsyms for C++ above. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - linux* | k*bsd*-gnu) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; - esac - - _LT_TAGVAR(ld_shlibs, $1)=yes - if test "$with_gnu_ld" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[[3-9]]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.9.1, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag= - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - _LT_TAGVAR(whole_archive_flag_spec, $1)= - tmp_sharedflag='--shared' ;; - xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' - _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - sunos4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then - runpath_var= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - _LT_TAGVAR(link_all_deplibs, $1)=no - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - bsdi[[45]]*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' - _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - freebsd1*) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - AC_LINK_IFELSE(int foo(void) {}, - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - ) - LDFLAGS="$save_LDFLAGS" - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac - fi - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - solaris*) - _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - fi - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' - ;; - esac - fi - fi -]) -AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld - -_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl -_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl -_LT_DECL([], [extract_expsyms_cmds], [2], - [The commands to extract the exported symbol list from a shared archive]) - -# -# Do we need to explicitly link libc? -# -case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $_LT_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_MSG_CHECKING([whether -lc should be explicitly linked in]) - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) - pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) - _LT_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) - then - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - else - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)]) - ;; - esac - fi - ;; -esac - -_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], - [Whether or not to add -lc for building shared libraries]) -_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], - [enable_shared_with_static_runtimes], [0], - [Whether or not to disallow shared libs when runtime libs are static]) -_LT_TAGDECL([], [export_dynamic_flag_spec], [1], - [Compiler flag to allow reflexive dlopens]) -_LT_TAGDECL([], [whole_archive_flag_spec], [1], - [Compiler flag to generate shared objects directly from archives]) -_LT_TAGDECL([], [compiler_needs_object], [1], - [Whether the compiler copes with passing no objects directly]) -_LT_TAGDECL([], [old_archive_from_new_cmds], [2], - [Create an old-style archive from a shared archive]) -_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], - [Create a temporary old-style archive to link instead of a shared archive]) -_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) -_LT_TAGDECL([], [archive_expsym_cmds], [2]) -_LT_TAGDECL([], [module_cmds], [2], - [Commands used to build a loadable module if different from building - a shared archive.]) -_LT_TAGDECL([], [module_expsym_cmds], [2]) -_LT_TAGDECL([], [with_gnu_ld], [1], - [Whether we are building with GNU ld or not]) -_LT_TAGDECL([], [allow_undefined_flag], [1], - [Flag that allows shared libraries with undefined symbols to be built]) -_LT_TAGDECL([], [no_undefined_flag], [1], - [Flag that enforces no undefined symbols]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], - [Flag to hardcode $libdir into a binary during linking. - This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], - [[If ld is used when linking, flag to hardcode $libdir into a binary - during linking. This must work even if $libdir does not exist]]) -_LT_TAGDECL([], [hardcode_libdir_separator], [1], - [Whether we need a single "-rpath" flag with a separated argument]) -_LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary]) -_LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting ${shlibpath_var} if the - library is relocated]) -_LT_TAGDECL([], [hardcode_minus_L], [0], - [Set to "yes" if using the -LDIR flag during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_shlibpath_var], [0], - [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_automatic], [0], - [Set to "yes" if building a shared library automatically hardcodes DIR - into the library and all subsequent libraries and executables linked - against it]) -_LT_TAGDECL([], [inherit_rpath], [0], - [Set to yes if linker adds runtime paths of dependent libraries - to runtime path list]) -_LT_TAGDECL([], [link_all_deplibs], [0], - [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [fix_srcfile_path], [1], - [Fix the shell variable $srcfile for the compiler]) -_LT_TAGDECL([], [always_export_symbols], [0], - [Set to "yes" if exported symbols are required]) -_LT_TAGDECL([], [export_symbols_cmds], [2], - [The commands to list exported symbols]) -_LT_TAGDECL([], [exclude_expsyms], [1], - [Symbols that should not be listed in the preloaded symbols]) -_LT_TAGDECL([], [include_expsyms], [1], - [Symbols that must always be exported]) -_LT_TAGDECL([], [prelink_cmds], [2], - [Commands necessary for linking programs (against libraries) with templates]) -_LT_TAGDECL([], [file_list_spec], [1], - [Specify filename containing input files]) -dnl FIXME: Not yet implemented -dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], -dnl [Compiler flag to generate thread safe objects]) -])# _LT_LINKER_SHLIBS - - -# _LT_LANG_C_CONFIG([TAG]) -# ------------------------ -# Ensure that the configuration variables for a C compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_C_CONFIG], -[m4_require([_LT_DECL_EGREP])dnl -lt_save_CC="$CC" -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - -_LT_TAG_COMPILER -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - LT_SYS_DLOPEN_SELF - _LT_CMD_STRIPLIB - - # Report which library types will actually be built - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_CONFIG($1) -fi -AC_LANG_POP -CC="$lt_save_CC" -])# _LT_LANG_C_CONFIG - - -# _LT_PROG_CXX -# ------------ -# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++ -# compiler, we have our own version here. -m4_defun([_LT_PROG_CXX], -[ -pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes]) -AC_PROG_CXX -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_PROG_CXXCPP -else - _lt_caught_CXX_error=yes -fi -popdef([AC_MSG_ERROR]) -])# _LT_PROG_CXX - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([_LT_PROG_CXX], []) - - -# _LT_LANG_CXX_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a C++ compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_CXX_CONFIG], -[AC_REQUIRE([_LT_PROG_CXX])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl - -AC_LANG_PUSH(C++) -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(compiler_needs_object, $1)=no -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - else - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - LT_PATH_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) - _LT_TAGVAR(ld_shlibs, $1)=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - _LT_SYS_MODULE_PATH_AIX - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - freebsd[[12]]*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - freebsd-elf*) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - gnu*) - ;; - - hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' - ;; - *) - if test "$GXX" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' - fi - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; - - linux* | k*bsd*-gnu) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*) - _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' - _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ - $RANLIB $oldlib' - _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 will use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' - ;; - xl*) - # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='echo' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=echo - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - case $host in - osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - ;; - *) - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(archive_cmds_need_lc,$1)=yes - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - - output_verbose_link_cmd='echo' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' - fi - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - - _LT_TAGVAR(GCC, $1)="$GXX" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - CC=$lt_save_CC - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes - -AC_LANG_POP -])# _LT_LANG_CXX_CONFIG - - -# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) -# --------------------------------- -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -m4_defun([_LT_SYS_HIDDEN_LIBDEPS], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -# Dependencies to place before and after the object being linked: -_LT_TAGVAR(predep_objects, $1)= -_LT_TAGVAR(postdep_objects, $1)= -_LT_TAGVAR(predeps, $1)= -_LT_TAGVAR(postdeps, $1)= -_LT_TAGVAR(compiler_lib_search_path, $1)= - -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -int a; -void foo (void) { a = 0; } -_LT_EOF -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -_LT_EOF -], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer a - a=0 - return - end -_LT_EOF -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -_LT_EOF -]) -dnl Parse the compiler output and extract the necessary -dnl objects, libraries and library flags. -if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case $p in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - else - prev= - fi - - if test "$pre_test_object_deps_done" = no; then - case $p in - -L* | -R*) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" - else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)="${prev}${p}" - else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" - fi - fi - ;; - - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)="$p" - else - _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)="$p" - else - _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$RM -f confest.$objext - -# PORTME: override above test on systems where it is broken -m4_if([$1], [CXX], -[case $host_os in -interix[[3-9]]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - _LT_TAGVAR(predep_objects,$1)= - _LT_TAGVAR(postdep_objects,$1)= - _LT_TAGVAR(postdeps,$1)= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac -]) - -case " $_LT_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac - _LT_TAGVAR(compiler_lib_search_dirs, $1)= -if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi -_LT_TAGDECL([], [compiler_lib_search_dirs], [1], - [The directories searched by this compiler when creating a shared library]) -_LT_TAGDECL([], [predep_objects], [1], - [Dependencies to place before and after the objects being linked to - create a shared library]) -_LT_TAGDECL([], [postdep_objects], [1]) -_LT_TAGDECL([], [predeps], [1]) -_LT_TAGDECL([], [postdeps], [1]) -_LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) -])# _LT_SYS_HIDDEN_LIBDEPS - - -# _LT_PROG_F77 -# ------------ -# Since AC_PROG_F77 is broken, in that it returns the empty string -# if there is no fortran compiler, we have our own version here. -m4_defun([_LT_PROG_F77], -[ -pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes]) -AC_PROG_F77 -if test -z "$F77" || test "X$F77" = "Xno"; then - _lt_disable_F77=yes -fi -popdef([AC_MSG_ERROR]) -])# _LT_PROG_F77 - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([_LT_PROG_F77], []) - - -# _LT_LANG_F77_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a Fortran 77 compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_F77_CONFIG], -[AC_REQUIRE([_LT_PROG_F77])dnl -AC_LANG_PUSH(Fortran 77) - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the F77 compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_F77" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - CC=${F77-"f77"} - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - GCC=$G77 - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$G77" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC="$lt_save_CC" -fi # test "$_lt_disable_F77" != yes - -AC_LANG_POP -])# _LT_LANG_F77_CONFIG - - -# _LT_PROG_FC -# ----------- -# Since AC_PROG_FC is broken, in that it returns the empty string -# if there is no fortran compiler, we have our own version here. -m4_defun([_LT_PROG_FC], -[ -pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes]) -AC_PROG_FC -if test -z "$FC" || test "X$FC" = "Xno"; then - _lt_disable_FC=yes -fi -popdef([AC_MSG_ERROR]) -])# _LT_PROG_FC - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([_LT_PROG_FC], []) - - -# _LT_LANG_FC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for a Fortran compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_FC_CONFIG], -[AC_REQUIRE([_LT_PROG_FC])dnl -AC_LANG_PUSH(Fortran) - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for fc test sources. -ac_ext=${ac_fc_srcext-f} - -# Object file extension for compiled fc test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the FC compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_FC" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - CC=${FC-"f95"} - compiler=$CC - GCC=$ac_cv_fc_compiler_gnu - - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC="$lt_save_CC" -fi # test "$_lt_disable_FC" != yes - -AC_LANG_POP -])# _LT_LANG_FC_CONFIG - - -# _LT_LANG_GCJ_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Java Compiler compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_GCJ_CONFIG], -[AC_REQUIRE([LT_PROG_GCJ])dnl -AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -lt_save_GCC=$GCC -GCC=yes -CC=${GCJ-"gcj"} -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" -_LT_CC_BASENAME([$compiler]) - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC="$lt_save_CC" -])# _LT_LANG_GCJ_CONFIG - - -# _LT_LANG_RC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for the Windows resource compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_RC_CONFIG], -[AC_REQUIRE([LT_PROG_RC])dnl -AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' - -# Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -lt_save_GCC=$GCC -GCC= -CC=${RC-"windres"} -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -if test -n "$compiler"; then - : - _LT_CONFIG($1) -fi - -GCC=$lt_save_GCC -AC_LANG_RESTORE -CC="$lt_save_CC" -])# _LT_LANG_RC_CONFIG - - -# LT_PROG_GCJ -# ----------- -AC_DEFUN([LT_PROG_GCJ], -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])[]dnl -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_GCJ], []) - - -# LT_PROG_RC -# ---------- -AC_DEFUN([LT_PROG_RC], -[AC_CHECK_TOOL(RC, windres,) -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_RC], []) - - -# _LT_DECL_EGREP -# -------------- -# If we don't have a new enough Autoconf to choose the best grep -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_EGREP], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_FGREP])dnl -test -z "$GREP" && GREP=grep -_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -_LT_DECL([], [FGREP], [1], [A literal string matcher]) -dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too -AC_SUBST([GREP]) -]) - - -# _LT_DECL_OBJDUMP -# -------------- -# If we don't have a new enough Autoconf to choose the best objdump -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_OBJDUMP], -[AC_CHECK_TOOL(OBJDUMP, objdump, false) -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) -AC_SUBST([OBJDUMP]) -]) - - -# _LT_DECL_SED -# ------------ -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -m4_defun([_LT_DECL_SED], -[AC_PROG_SED -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], - [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -])# _LT_DECL_SED - -m4_ifndef([AC_PROG_SED], [ -############################################################ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -############################################################ - -m4_defun([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef - -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_SED], []) - - -# _LT_CHECK_SHELL_FEATURES -# ------------------------ -# Find out whether the shell is Bourne or XSI compatible, -# or has some other useful features. -m4_defun([_LT_CHECK_SHELL_FEATURES], -[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -AC_MSG_RESULT([$xsi_shell]) -_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) - -AC_MSG_CHECKING([whether the shell understands "+="]) -lt_shell_append=no -( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -AC_MSG_RESULT([$lt_shell_append]) -_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi -_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac -_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl -_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl -])# _LT_CHECK_SHELL_FEATURES - - -# _LT_PROG_XSI_SHELLFNS -# --------------------- -# Bourne and XSI compatible variants of some useful shell functions. -m4_defun([_LT_PROG_XSI_SHELLFNS], -[case $xsi_shell in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac -} - -# func_basename file -func_basename () -{ - func_basename_result="${1##*/}" -} - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}" -} - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -func_stripname () -{ - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"} -} - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=${1%%=*} - func_opt_split_arg=${1#*=} -} - -# func_lo2o object -func_lo2o () -{ - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=${1%.*}.lo -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=$(( $[*] )) -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=${#1} -} - -_LT_EOF - ;; - *) # Bourne compatible functions. - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} - -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` -} - -dnl func_dirname_and_basename -dnl A portable version of this function is already defined in general.m4sh -dnl so there is no need for it here. - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "X${3}" \ - | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "X${3}" \ - | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; - esac -} - -# sed scripts: -my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q' -my_sed_long_arg='1s/^-[[^=]]*=//' - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` - func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` -} - -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'` -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "$[@]"` -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len` -} - -_LT_EOF -esac - -case $lt_shell_append in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$[1]+=\$[2]" -} -_LT_EOF - ;; - *) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$[1]=\$$[1]\$[2]" -} - -_LT_EOF - ;; - esac -]) -# Helper functions for option handling. -*- Autoconf -*- -# -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 6 ltoptions.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) - - -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -# ------------------------------------------ -m4_define([_LT_MANGLE_OPTION], -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) - - -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -# --------------------------------------- -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -# matching handler defined, dispatch to it. Other OPTION-NAMEs are -# saved as a flag. -m4_define([_LT_SET_OPTION], -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), - _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option `$2'])])[]dnl -]) - - -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -# ------------------------------------------------------------ -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -m4_define([_LT_IF_OPTION], -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) - - -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -# ------------------------------------------------------- -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -# are set. -m4_define([_LT_UNLESS_OPTIONS], -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), - [m4_define([$0_found])])])[]dnl -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -])[]dnl -]) - - -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -# ---------------------------------------- -# OPTION-LIST is a space-separated list of Libtool options associated -# with MACRO-NAME. If any OPTION has a matching handler declared with -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -# the unknown option and exit. -m4_defun([_LT_SET_OPTIONS], -[# Set options -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [_LT_SET_OPTION([$1], _LT_Option)]) - -m4_if([$1],[LT_INIT],[ - dnl - dnl Simply set some default values (i.e off) if boolean options were not - dnl specified: - _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no - ]) - _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no - ]) - dnl - dnl If no reference was made to various pairs of opposing options, then - dnl we run the default mode handler for the pair. For example, if neither - dnl `shared' nor `disable-shared' was passed, we enable building of shared - dnl archives by default: - _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) - _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) - ]) -])# _LT_SET_OPTIONS - - -## --------------------------------- ## -## Macros to handle LT_INIT options. ## -## --------------------------------- ## - -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -# ----------------------------------------- -m4_define([_LT_MANGLE_DEFUN], -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) - - -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -# ----------------------------------------------- -m4_define([LT_OPTION_DEFINE], -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -])# LT_OPTION_DEFINE - - -# dlopen -# ------ -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes -]) - -AU_DEFUN([AC_LIBTOOL_DLOPEN], -[_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `dlopen' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) - - -# win32-dll -# --------- -# Declare package support for building win32 dll's. -LT_OPTION_DEFINE([LT_INIT], [win32-dll], -[enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -esac - -test -z "$AS" && AS=as -_LT_DECL([], [AS], [0], [Assembler program])dnl - -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl - -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl -])# win32-dll - -AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `win32-dll' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) - - -# _LT_ENABLE_SHARED([DEFAULT]) -# ---------------------------- -# implement the --enable-shared flag, and supports the `shared' and -# `disable-shared' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_SHARED], -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) - - _LT_DECL([build_libtool_libs], [enable_shared], [0], - [Whether or not to build shared libraries]) -])# _LT_ENABLE_SHARED - -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -]) - -AC_DEFUN([AC_DISABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) - -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_SHARED], []) -dnl AC_DEFUN([AM_DISABLE_SHARED], []) - - - -# _LT_ENABLE_STATIC([DEFAULT]) -# ---------------------------- -# implement the --enable-static flag, and support the `static' and -# `disable-static' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_STATIC], -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_static=]_LT_ENABLE_STATIC_DEFAULT) - - _LT_DECL([build_old_libs], [enable_static], [0], - [Whether or not to build static libraries]) -])# _LT_ENABLE_STATIC - -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) -]) - -AC_DEFUN([AC_DISABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], [disable-static]) -]) - -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_STATIC], []) -dnl AC_DEFUN([AM_DISABLE_STATIC], []) - - - -# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -# ---------------------------------- -# implement the --enable-fast-install flag, and support the `fast-install' -# and `disable-fast-install' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_FAST_INSTALL], -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) - -_LT_DECL([fast_install], [enable_fast_install], [0], - [Whether or not to optimize for fast installation])dnl -])# _LT_ENABLE_FAST_INSTALL - -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) - -# Old names: -AU_DEFUN([AC_ENABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `fast-install' option into LT_INIT's first parameter.]) -]) - -AU_DEFUN([AC_DISABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `disable-fast-install' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) - - -# _LT_WITH_PIC([MODE]) -# -------------------- -# implement the --with-pic flag, and support the `pic-only' and `no-pic' -# LT_INIT options. -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -m4_define([_LT_WITH_PIC], -[AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [pic_mode="$withval"], - [pic_mode=default]) - -test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) - -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -])# _LT_WITH_PIC - -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) - -# Old name: -AU_DEFUN([AC_LIBTOOL_PICMODE], -[_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `pic-only' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) - -## ----------------- ## -## LTDL_INIT Options ## -## ----------------- ## - -m4_define([_LTDL_MODE], []) -LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], - [m4_define([_LTDL_MODE], [nonrecursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [recursive], - [m4_define([_LTDL_MODE], [recursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [subproject], - [m4_define([_LTDL_MODE], [subproject])]) - -m4_define([_LTDL_TYPE], []) -LT_OPTION_DEFINE([LTDL_INIT], [installable], - [m4_define([_LTDL_TYPE], [installable])]) -LT_OPTION_DEFINE([LTDL_INIT], [convenience], - [m4_define([_LTDL_TYPE], [convenience])]) -# ltversion.m4 -- version numbers -*- Autoconf -*- -# -# Copyright (C) 2004 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# Generated from ltversion.in. - -# serial 3012 ltversion.m4 -# This file is part of GNU Libtool - -m4_define([LT_PACKAGE_VERSION], [2.2.6]) -m4_define([LT_PACKAGE_REVISION], [1.3012]) - -AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.2.6' -macro_revision='1.3012' -_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) -_LT_DECL(, macro_revision, 0) -]) -# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 6 ltsugar.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) - - -# lt_join(SEP, ARG1, [ARG2...]) -# ----------------------------- -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -# associated separator. -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -# versions in m4sugar had bugs. -m4_define([lt_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -m4_define([_lt_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) - - -# lt_car(LIST) -# lt_cdr(LIST) -# ------------ -# Manipulate m4 lists. -# These macros are necessary as long as will still need to support -# Autoconf-2.59 which quotes differently. -m4_define([lt_car], [[$1]]) -m4_define([lt_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) -m4_define([lt_unquote], $1) - - -# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. -# Note that neither SEPARATOR nor STRING are expanded; they are appended -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -# No SEPARATOR is output if MACRO-NAME was previously undefined (different -# than defined and empty). -# -# This macro is needed until we can rely on Autoconf 2.62, since earlier -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -m4_define([lt_append], -[m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) - - - -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -# ---------------------------------------------------------- -# Produce a SEP delimited list of all paired combinations of elements of -# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -# has the form PREFIXmINFIXSUFFIXn. -# Needed until we can rely on m4_combine added in Autoconf 2.62. -m4_define([lt_combine], -[m4_if(m4_eval([$# > 3]), [1], - [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -[[m4_foreach([_Lt_prefix], [$2], - [m4_foreach([_Lt_suffix], - ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, - [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) - - -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -# ----------------------------------------------------------------------- -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -m4_define([lt_if_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], - [lt_append([$1], [$2], [$3])$4], - [$5])], - [lt_append([$1], [$2], [$3])$4])]) - - -# lt_dict_add(DICT, KEY, VALUE) -# ----------------------------- -m4_define([lt_dict_add], -[m4_define([$1($2)], [$3])]) - - -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -# -------------------------------------------- -m4_define([lt_dict_add_subkey], -[m4_define([$1($2:$3)], [$4])]) - - -# lt_dict_fetch(DICT, KEY, [SUBKEY]) -# ---------------------------------- -m4_define([lt_dict_fetch], -[m4_ifval([$3], - m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), - m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) - - -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------------------- -m4_define([lt_if_dict_fetch], -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], - [$5], - [$6])]) - - -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -# -------------------------------------------------------------- -m4_define([lt_dict_filter], -[m4_if([$5], [], [], - [lt_join(m4_quote(m4_default([$4], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), - [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -]) -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004. -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 4 lt~obsolete.m4 - -# These exist entirely to fool aclocal when bootstrapping libtool. -# -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) -# which have later been changed to m4_define as they aren't part of the -# exported API, or moved to Autoconf or Automake where they belong. -# -# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us -# using a macro with the same name in our local m4/libtool.m4 it'll -# pull the old libtool.m4 in (it doesn't see our shiny new m4_define -# and doesn't know about Autoconf macros at all.) -# -# So we provide this file, which has a silly filename so it's always -# included after everything else. This provides aclocal with the -# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything -# because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. -# -# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. -# Yes, that means every name once taken will need to remain here until -# we give up compatibility with versions before 1.7, at which point -# we need to keep only those names which we still refer to. - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) - -m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) -m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) -m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) -m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) -m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) -m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) -m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) -m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) -m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) -m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) -m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) -m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) -m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) -m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) -m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) -m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) -m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) -m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) -m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) -m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) -m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) -m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) -m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) -m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) -m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) -m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) -m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) -m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) -m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) -m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) -m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) -m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) -m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) -m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) -m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) -m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])]) -m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) -m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) -m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) -m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) -m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) -m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) -m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) -m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) - -dnl @synopsis CHECK_ZLIB() -dnl -dnl This macro searches for an installed zlib library. If nothing -dnl was specified when calling configure, it searches first in /usr/local -dnl and then in /usr. If the --with-zlib=DIR is specified, it will try -dnl to find it in DIR/include/zlib.h and DIR/lib/libz.a. If --without-zlib -dnl is specified, the library is not searched at all. -dnl -dnl If either the header file (zlib.h) or the library (libz) is not -dnl found, the configuration exits on error, asking for a valid -dnl zlib installation directory or --without-zlib. -dnl -dnl The macro defines the symbol HAVE_LIBZ if the library is found. You should -dnl use autoheader to include a definition for this symbol in a config.h -dnl file. Sample usage in a C/C++ source is as follows: -dnl -dnl #ifdef HAVE_LIBZ -dnl #include -dnl #endif /* HAVE_LIBZ */ -dnl -dnl @version $Id: aclocal.m4,v 1.7 2000/06/26 10:04:08 loic dead $ -dnl @author Loic Dachary -dnl with modifications by Andreas Huggel -dnl -AC_DEFUN([CHECK_ZLIB], -# -# Handle user hints -# -[AC_MSG_CHECKING(if zlib is wanted) -AC_ARG_WITH(zlib, -[ --with-zlib=DIR root directory path of zlib installation [defaults to - /usr/local or /usr if not found in /usr/local] - --without-zlib to disable zlib usage completely], -[if test "$withval" != no ; then - AC_MSG_RESULT(yes) - ZLIB_HOME="$withval" -else - AC_MSG_RESULT(no) -fi], [ -AC_MSG_RESULT(yes) -ZLIB_HOME=/usr/local -if test ! -f "${ZLIB_HOME}/include/zlib.h" -then - ZLIB_HOME=/usr -fi -]) -# -# Locate zlib, if wanted -# -if test -n "${ZLIB_HOME}" -then - ZLIB_OLD_LDFLAGS=$LDFLAGS - ZLIB_OLD_CPPFLAGS=$CPPFLAGS - # - # Adding /usr/lib or /usr/include to the flags/libs may - # hurt if using a compiler not installed in the standard - # place. - # - if test "${ZLIB_HOME}" != "/usr" - then - LDFLAGS="$LDFLAGS -L${ZLIB_HOME}/lib" - CPPFLAGS="$CPPFLAGS -I${ZLIB_HOME}/include" - fi - AC_LANG_SAVE - AC_LANG_C - AC_CHECK_LIB(z, inflateEnd, [zlib_cv_libz=yes], [zlib_cv_libz=no]) - AC_CHECK_HEADER(zlib.h, [zlib_cv_zlib_h=yes], [zlib_cv_zlib_h=no]) - AC_LANG_RESTORE - if test "$zlib_cv_libz" = "yes" -a "$zlib_cv_zlib_h" = "yes" - then - # - # If both library and header were found, use them - # - AC_CHECK_LIB(z, inflateEnd) - AC_MSG_CHECKING(zlib in ${ZLIB_HOME}) - AC_MSG_RESULT(ok) - HAVE_LIBZ=1 - else - # - # If either header or library was not found, revert and bomb - # - AC_MSG_CHECKING(zlib in ${ZLIB_HOME}) - LDFLAGS="$ZLIB_OLD_LDFLAGS" - CPPFLAGS="$ZLIB_OLD_CPPFLAGS" - AC_MSG_RESULT(failed) - AC_MSG_ERROR(either specify a valid zlib installation with --with-zlib=DIR or disable zlib usage with --without-zlib) - fi -fi - -]) -# gettext.m4 serial 37 (gettext-0.14.4) -dnl Copyright (C) 1995-2005 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1995-2000. -dnl Bruno Haible , 2000-2003. - -dnl Macro to add for using GNU gettext. - -dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). -dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The -dnl default (if it is not specified or empty) is 'no-libtool'. -dnl INTLSYMBOL should be 'external' for packages with no intl directory, -dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. -dnl If INTLSYMBOL is 'use-libtool', then a libtool library -dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, -dnl depending on --{enable,disable}-{shared,static} and on the presence of -dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library -dnl $(top_builddir)/intl/libintl.a will be created. -dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext -dnl implementations (in libc or libintl) without the ngettext() function -dnl will be ignored. If NEEDSYMBOL is specified and is -dnl 'need-formatstring-macros', then GNU gettext implementations that don't -dnl support the ISO C 99 formatstring macros will be ignored. -dnl INTLDIR is used to find the intl libraries. If empty, -dnl the value `$(top_builddir)/intl/' is used. -dnl -dnl The result of the configuration is one of three cases: -dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled -dnl and used. -dnl Catalog format: GNU --> install in $(datadir) -dnl Catalog extension: .mo after installation, .gmo in source tree -dnl 2) GNU gettext has been found in the system's C library. -dnl Catalog format: GNU --> install in $(datadir) -dnl Catalog extension: .mo after installation, .gmo in source tree -dnl 3) No internationalization, always use English msgid. -dnl Catalog format: none -dnl Catalog extension: none -dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. -dnl The use of .gmo is historical (it was needed to avoid overwriting the -dnl GNU format catalogs when building on a platform with an X/Open gettext), -dnl but we keep it in order not to force irrelevant filename changes on the -dnl maintainers. -dnl -AC_DEFUN([AM_GNU_GETTEXT], -[ - dnl Argument checking. - ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , - [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT -])])])])]) - ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , - [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT -])])])]) - define([gt_included_intl], ifelse([$1], [external], [no], [yes])) - define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) - - AC_REQUIRE([AM_PO_SUBDIRS])dnl - ifelse(gt_included_intl, yes, [ - AC_REQUIRE([AM_INTL_SUBDIR])dnl - ]) - - dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - - dnl Sometimes libintl requires libiconv, so first search for libiconv. - dnl Ideally we would do this search only after the - dnl if test "$USE_NLS" = "yes"; then - dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then - dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT - dnl the configure script would need to contain the same shell code - dnl again, outside any 'if'. There are two solutions: - dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. - dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. - dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not - dnl documented, we avoid it. - ifelse(gt_included_intl, yes, , [ - AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) - ]) - - dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. - gt_INTL_MACOSX - - dnl Set USE_NLS. - AM_NLS - - ifelse(gt_included_intl, yes, [ - BUILD_INCLUDED_LIBINTL=no - USE_INCLUDED_LIBINTL=no - ]) - LIBINTL= - LTLIBINTL= - POSUB= - - dnl If we use NLS figure out what method - if test "$USE_NLS" = "yes"; then - gt_use_preinstalled_gnugettext=no - ifelse(gt_included_intl, yes, [ - AC_MSG_CHECKING([whether included gettext is requested]) - AC_ARG_WITH(included-gettext, - [ --with-included-gettext use the GNU gettext library included here], - nls_cv_force_use_gnu_gettext=$withval, - nls_cv_force_use_gnu_gettext=no) - AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) - - nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" - if test "$nls_cv_force_use_gnu_gettext" != "yes"; then - ]) - dnl User does not insist on using GNU NLS library. Figure out what - dnl to use. If GNU gettext is available we use this. Else we have - dnl to fall back to GNU NLS library. - - dnl Add a version number to the cache macros. - define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) - define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) - define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) - - AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, - [AC_TRY_LINK([#include -]ifelse([$2], [need-formatstring-macros], -[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -#endif -changequote(,)dnl -typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -changequote([,])dnl -], [])[extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings;], - [bindtextdomain ("", ""); -return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], - gt_cv_func_gnugettext_libc=yes, - gt_cv_func_gnugettext_libc=no)]) - - if test "$gt_cv_func_gnugettext_libc" != "yes"; then - dnl Sometimes libintl requires libiconv, so first search for libiconv. - ifelse(gt_included_intl, yes, , [ - AM_ICONV_LINK - ]) - dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL - dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) - dnl because that would add "-liconv" to LIBINTL and LTLIBINTL - dnl even if libiconv doesn't exist. - AC_LIB_LINKFLAGS_BODY([intl]) - AC_CACHE_CHECK([for GNU gettext in libintl], - gt_cv_func_gnugettext_libintl, - [gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCINTL" - gt_save_LIBS="$LIBS" - LIBS="$LIBS $LIBINTL" - dnl Now see whether libintl exists and does not depend on libiconv. - AC_TRY_LINK([#include -]ifelse([$2], [need-formatstring-macros], -[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -#endif -changequote(,)dnl -typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -changequote([,])dnl -], [])[extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (const char *);], - [bindtextdomain ("", ""); -return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")], - gt_cv_func_gnugettext_libintl=yes, - gt_cv_func_gnugettext_libintl=no) - dnl Now see whether libintl exists and depends on libiconv. - if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then - LIBS="$LIBS $LIBICONV" - AC_TRY_LINK([#include -]ifelse([$2], [need-formatstring-macros], -[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -#endif -changequote(,)dnl -typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -changequote([,])dnl -], [])[extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (const char *);], - [bindtextdomain ("", ""); -return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")], - [LIBINTL="$LIBINTL $LIBICONV" - LTLIBINTL="$LTLIBINTL $LTLIBICONV" - gt_cv_func_gnugettext_libintl=yes - ]) - fi - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS"]) - fi - - dnl If an already present or preinstalled GNU gettext() is found, - dnl use it. But if this macro is used in GNU gettext, and GNU - dnl gettext is already preinstalled in libintl, we update this - dnl libintl. (Cf. the install rule in intl/Makefile.in.) - if test "$gt_cv_func_gnugettext_libc" = "yes" \ - || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ - && test "$PACKAGE" != gettext-runtime \ - && test "$PACKAGE" != gettext-tools; }; then - gt_use_preinstalled_gnugettext=yes - else - dnl Reset the values set by searching for libintl. - LIBINTL= - LTLIBINTL= - INCINTL= - fi - - ifelse(gt_included_intl, yes, [ - if test "$gt_use_preinstalled_gnugettext" != "yes"; then - dnl GNU gettext is not found in the C library. - dnl Fall back on included GNU gettext library. - nls_cv_use_gnu_gettext=yes - fi - fi - - if test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Mark actions used to generate GNU NLS library. - BUILD_INCLUDED_LIBINTL=yes - USE_INCLUDED_LIBINTL=yes - LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" - LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" - LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` - fi - - CATOBJEXT= - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Mark actions to use GNU gettext tools. - CATOBJEXT=.gmo - fi - ]) - - if test -n "$INTL_MACOSX_LIBS"; then - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Some extra flags are needed during linking. - LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" - LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" - fi - fi - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - AC_DEFINE(ENABLE_NLS, 1, - [Define to 1 if translation of program messages to the user's native language - is requested.]) - else - USE_NLS=no - fi - fi - - AC_MSG_CHECKING([whether to use NLS]) - AC_MSG_RESULT([$USE_NLS]) - if test "$USE_NLS" = "yes"; then - AC_MSG_CHECKING([where the gettext function comes from]) - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext_libintl" = "yes"; then - gt_source="external libintl" - else - gt_source="libc" - fi - else - gt_source="included intl directory" - fi - AC_MSG_RESULT([$gt_source]) - fi - - if test "$USE_NLS" = "yes"; then - - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext_libintl" = "yes"; then - AC_MSG_CHECKING([how to link with libintl]) - AC_MSG_RESULT([$LIBINTL]) - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) - fi - - dnl For backward compatibility. Some packages may be using this. - AC_DEFINE(HAVE_GETTEXT, 1, - [Define if the GNU gettext() function is already present or preinstalled.]) - AC_DEFINE(HAVE_DCGETTEXT, 1, - [Define if the GNU dcgettext() function is already present or preinstalled.]) - fi - - dnl We need to process the po/ directory. - POSUB=po - fi - - ifelse(gt_included_intl, yes, [ - dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL - dnl to 'yes' because some of the testsuite requires it. - if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then - BUILD_INCLUDED_LIBINTL=yes - fi - - dnl Make all variables we use known to autoconf. - AC_SUBST(BUILD_INCLUDED_LIBINTL) - AC_SUBST(USE_INCLUDED_LIBINTL) - AC_SUBST(CATOBJEXT) - - dnl For backward compatibility. Some configure.ins may be using this. - nls_cv_header_intl= - nls_cv_header_libgt= - - dnl For backward compatibility. Some Makefiles may be using this. - DATADIRNAME=share - AC_SUBST(DATADIRNAME) - - dnl For backward compatibility. Some Makefiles may be using this. - INSTOBJEXT=.mo - AC_SUBST(INSTOBJEXT) - - dnl For backward compatibility. Some Makefiles may be using this. - GENCAT=gencat - AC_SUBST(GENCAT) - - dnl For backward compatibility. Some Makefiles may be using this. - INTLOBJS= - if test "$USE_INCLUDED_LIBINTL" = yes; then - INTLOBJS="\$(GETTOBJS)" - fi - AC_SUBST(INTLOBJS) - - dnl Enable libtool support if the surrounding package wishes it. - INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix - AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) - ]) - - dnl For backward compatibility. Some Makefiles may be using this. - INTLLIBS="$LIBINTL" - AC_SUBST(INTLLIBS) - - dnl Make all documented variables known to autoconf. - AC_SUBST(LIBINTL) - AC_SUBST(LTLIBINTL) - AC_SUBST(POSUB) -]) - - -dnl Checks for all prerequisites of the intl subdirectory, -dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, -dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. -AC_DEFUN([AM_INTL_SUBDIR], -[ - AC_REQUIRE([AC_PROG_INSTALL])dnl - AC_REQUIRE([AM_MKINSTALLDIRS])dnl - AC_REQUIRE([AC_PROG_CC])dnl - AC_REQUIRE([AC_CANONICAL_HOST])dnl - AC_REQUIRE([gt_GLIBC2])dnl - AC_REQUIRE([AC_PROG_RANLIB])dnl - AC_REQUIRE([AC_ISC_POSIX])dnl - AC_REQUIRE([AC_HEADER_STDC])dnl - AC_REQUIRE([AC_C_CONST])dnl - AC_REQUIRE([bh_C_SIGNED])dnl - AC_REQUIRE([AC_C_INLINE])dnl - AC_REQUIRE([AC_TYPE_OFF_T])dnl - AC_REQUIRE([AC_TYPE_SIZE_T])dnl - AC_REQUIRE([gl_AC_TYPE_LONG_LONG])dnl - AC_REQUIRE([gt_TYPE_LONGDOUBLE])dnl - AC_REQUIRE([gt_TYPE_WCHAR_T])dnl - AC_REQUIRE([gt_TYPE_WINT_T])dnl - AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) - AC_REQUIRE([gl_AC_HEADER_STDINT_H]) - AC_REQUIRE([gt_TYPE_INTMAX_T]) - AC_REQUIRE([gt_PRINTF_POSIX]) - AC_REQUIRE([AC_FUNC_ALLOCA])dnl - AC_REQUIRE([AC_FUNC_MMAP])dnl - AC_REQUIRE([gl_GLIBC21])dnl - AC_REQUIRE([gt_INTDIV0])dnl - AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl - AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl - AC_REQUIRE([gt_INTTYPES_PRI])dnl - AC_REQUIRE([gl_XSIZE])dnl - AC_REQUIRE([gt_INTL_MACOSX])dnl - - AC_CHECK_TYPE([ptrdiff_t], , - [AC_DEFINE([ptrdiff_t], [long], - [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) - ]) - AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ -stdlib.h string.h unistd.h sys/param.h]) - AC_CHECK_FUNCS([asprintf fwprintf getcwd getegid geteuid getgid getuid \ -mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \ -strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \ -__fsetlocking]) - - dnl Use the _snprintf function only if it is declared (because on NetBSD it - dnl is defined as a weak alias of snprintf; we prefer to use the latter). - gt_CHECK_DECL(_snprintf, [#include ]) - gt_CHECK_DECL(_snwprintf, [#include ]) - - dnl Use the *_unlocked functions only if they are declared. - dnl (because some of them were defined without being declared in Solaris - dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built - dnl on Solaris 2.5.1 to run on Solaris 2.6). - dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. - gt_CHECK_DECL(feof_unlocked, [#include ]) - gt_CHECK_DECL(fgets_unlocked, [#include ]) - gt_CHECK_DECL(getc_unlocked, [#include ]) - - case $gt_cv_func_printf_posix in - *yes) HAVE_POSIX_PRINTF=1 ;; - *) HAVE_POSIX_PRINTF=0 ;; - esac - AC_SUBST([HAVE_POSIX_PRINTF]) - if test "$ac_cv_func_asprintf" = yes; then - HAVE_ASPRINTF=1 - else - HAVE_ASPRINTF=0 - fi - AC_SUBST([HAVE_ASPRINTF]) - if test "$ac_cv_func_snprintf" = yes; then - HAVE_SNPRINTF=1 - else - HAVE_SNPRINTF=0 - fi - AC_SUBST([HAVE_SNPRINTF]) - if test "$ac_cv_func_wprintf" = yes; then - HAVE_WPRINTF=1 - else - HAVE_WPRINTF=0 - fi - AC_SUBST([HAVE_WPRINTF]) - - AM_ICONV - AM_LANGINFO_CODESET - if test $ac_cv_header_locale_h = yes; then - gt_LC_MESSAGES - fi - - if test -n "$INTL_MACOSX_LIBS"; then - CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" - fi - - dnl intl/plural.c is generated from intl/plural.y. It requires bison, - dnl because plural.y uses bison specific features. It requires at least - dnl bison-1.26 because earlier versions generate a plural.c that doesn't - dnl compile. - dnl bison is only needed for the maintainer (who touches plural.y). But in - dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put - dnl the rule in general Makefile. Now, some people carelessly touch the - dnl files or have a broken "make" program, hence the plural.c rule will - dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not - dnl present or too old. - AC_CHECK_PROGS([INTLBISON], [bison]) - if test -z "$INTLBISON"; then - ac_verc_fail=yes - else - dnl Found it, now check the version. - AC_MSG_CHECKING([version of bison]) -changequote(<<,>>)dnl - ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) -changequote([,])dnl - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - esac - AC_MSG_RESULT([$ac_prog_version]) - fi - if test $ac_verc_fail = yes; then - INTLBISON=: - fi -]) - - -dnl Checks for special options needed on MacOS X. -dnl Defines INTL_MACOSX_LIBS. -AC_DEFUN([gt_INTL_MACOSX], -[ - dnl Check for API introduced in MacOS X 10.2. - AC_CACHE_CHECK([for CFPreferencesCopyAppValue], - gt_cv_func_CFPreferencesCopyAppValue, - [gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" - gt_save_LIBS="$LIBS" - LIBS="$LIBS -framework CoreFoundation" - AC_TRY_LINK([#include ], - [CFPreferencesCopyAppValue(NULL, NULL)], - [gt_cv_func_CFPreferencesCopyAppValue=yes], - [gt_cv_func_CFPreferencesCopyAppValue=no]) - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS"]) - if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then - AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1, - [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) - fi - dnl Check for API introduced in MacOS X 10.3. - AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent, - [gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" - gt_save_LIBS="$LIBS" - LIBS="$LIBS -framework CoreFoundation" - AC_TRY_LINK([#include ], [CFLocaleCopyCurrent();], - [gt_cv_func_CFLocaleCopyCurrent=yes], - [gt_cv_func_CFLocaleCopyCurrent=no]) - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS"]) - if test $gt_cv_func_CFLocaleCopyCurrent = yes; then - AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1, - [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) - fi - INTL_MACOSX_LIBS= - if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then - INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" - fi - AC_SUBST([INTL_MACOSX_LIBS]) -]) - - -dnl gt_CHECK_DECL(FUNC, INCLUDES) -dnl Check whether a function is declared. -AC_DEFUN([gt_CHECK_DECL], -[ - AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1, - [AC_TRY_COMPILE([$2], [ -#ifndef $1 - char *p = (char *) $1; -#endif -], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)]) - if test $ac_cv_have_decl_$1 = yes; then - gt_value=1 - else - gt_value=0 - fi - AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value], - [Define to 1 if you have the declaration of `$1', and to 0 if you don't.]) -]) - - -dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) -AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) -# iconv.m4 serial AM4 (gettext-0.11.3) -dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Bruno Haible. - -AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], -[ - dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - - dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV - dnl accordingly. - AC_LIB_LINKFLAGS_BODY([iconv]) -]) - -AC_DEFUN([AM_ICONV_LINK], -[ - dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and - dnl those with the standalone portable GNU libiconv installed). - - dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV - dnl accordingly. - AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) - - dnl Add $INCICONV to CPPFLAGS before performing the following checks, - dnl because if the user has installed libiconv and not disabled its use - dnl via --without-libiconv-prefix, he wants to use it. The first - dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. - am_save_CPPFLAGS="$CPPFLAGS" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) - - AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - AC_TRY_LINK([#include -#include ], - [iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);], - am_cv_func_iconv=yes) - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" - AC_TRY_LINK([#include -#include ], - [iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);], - am_cv_lib_iconv=yes - am_cv_func_iconv=yes) - LIBS="$am_save_LIBS" - fi - ]) - if test "$am_cv_func_iconv" = yes; then - AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) - fi - if test "$am_cv_lib_iconv" = yes; then - AC_MSG_CHECKING([how to link with libiconv]) - AC_MSG_RESULT([$LIBICONV]) - else - dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV - dnl either. - CPPFLAGS="$am_save_CPPFLAGS" - LIBICONV= - LTLIBICONV= - fi - AC_SUBST(LIBICONV) - AC_SUBST(LTLIBICONV) -]) - -AC_DEFUN([AM_ICONV], -[ - AM_ICONV_LINK - if test "$am_cv_func_iconv" = yes; then - AC_MSG_CHECKING([for iconv declaration]) - AC_CACHE_VAL(am_cv_proto_iconv, [ - AC_TRY_COMPILE([ -#include -#include -extern -#ifdef __cplusplus -"C" -#endif -#if defined(__STDC__) || defined(__cplusplus) -size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); -#else -size_t iconv(); -#endif -], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") - am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) - am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` - AC_MSG_RESULT([$]{ac_t:- - }[$]am_cv_proto_iconv) - AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, - [Define as const if the declaration of iconv() needs const.]) - fi -]) -# lib-ld.m4 serial 3 (gettext-0.13) -dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl Subroutines of libtool.m4, -dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision -dnl with libtool.m4. - -dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. -AC_DEFUN([AC_LIB_PROG_LD_GNU], -[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, -[# I'd rather use --version here, but apparently some GNU ld's only accept -v. -case `$LD -v 2>&1 conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by GCC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]* | [A-Za-z]:[\\/]*)] - [re_direlt='/[^/][^/]*/\.\./'] - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(acl_cv_path_LD, -[if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - acl_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break ;; - *) - test "$with_gnu_ld" != yes && break ;; - esac - fi - done - IFS="$ac_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. -fi]) -LD="$acl_cv_path_LD" -if test -n "$LD"; then - AC_MSG_RESULT($LD) -else - AC_MSG_RESULT(no) -fi -test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) -AC_LIB_PROG_LD_GNU -]) -# lib-link.m4 serial 6 (gettext-0.14.3) -dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Bruno Haible. - -AC_PREREQ(2.50) - -dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and -dnl the libraries corresponding to explicit and implicit dependencies. -dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and -dnl augments the CPPFLAGS variable. -AC_DEFUN([AC_LIB_LINKFLAGS], -[ - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - define([Name],[translit([$1],[./-], [___])]) - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ - AC_LIB_LINKFLAGS_BODY([$1], [$2]) - ac_cv_lib[]Name[]_libs="$LIB[]NAME" - ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" - ac_cv_lib[]Name[]_cppflags="$INC[]NAME" - ]) - LIB[]NAME="$ac_cv_lib[]Name[]_libs" - LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" - INC[]NAME="$ac_cv_lib[]Name[]_cppflags" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - AC_SUBST([LIB]NAME) - AC_SUBST([LTLIB]NAME) - dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the - dnl results of this search when this library appears as a dependency. - HAVE_LIB[]NAME=yes - undefine([Name]) - undefine([NAME]) -]) - -dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) -dnl searches for libname and the libraries corresponding to explicit and -dnl implicit dependencies, together with the specified include files and -dnl the ability to compile and link the specified testcode. If found, it -dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and -dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and -dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs -dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. -AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], -[ - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - define([Name],[translit([$1],[./-], [___])]) - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - - dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME - dnl accordingly. - AC_LIB_LINKFLAGS_BODY([$1], [$2]) - - dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, - dnl because if the user has installed lib[]Name and not disabled its use - dnl via --without-lib[]Name-prefix, he wants to use it. - ac_save_CPPFLAGS="$CPPFLAGS" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - - AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ - ac_save_LIBS="$LIBS" - LIBS="$LIBS $LIB[]NAME" - AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) - LIBS="$ac_save_LIBS" - ]) - if test "$ac_cv_lib[]Name" = yes; then - HAVE_LIB[]NAME=yes - AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) - AC_MSG_CHECKING([how to link with lib[]$1]) - AC_MSG_RESULT([$LIB[]NAME]) - else - HAVE_LIB[]NAME=no - dnl If $LIB[]NAME didn't lead to a usable library, we don't need - dnl $INC[]NAME either. - CPPFLAGS="$ac_save_CPPFLAGS" - LIB[]NAME= - LTLIB[]NAME= - fi - AC_SUBST([HAVE_LIB]NAME) - AC_SUBST([LIB]NAME) - AC_SUBST([LTLIB]NAME) - undefine([Name]) - undefine([NAME]) -]) - -dnl Determine the platform dependent parameters needed to use rpath: -dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, -dnl hardcode_direct, hardcode_minus_L. -AC_DEFUN([AC_LIB_RPATH], -[ - dnl Tell automake >= 1.10 to complain if config.rpath is missing. - m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) - AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS - AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld - AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host - AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir - AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ - CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ - ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh - . ./conftest.sh - rm -f ./conftest.sh - acl_cv_rpath=done - ]) - wl="$acl_cv_wl" - libext="$acl_cv_libext" - shlibext="$acl_cv_shlibext" - hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" - hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - hardcode_direct="$acl_cv_hardcode_direct" - hardcode_minus_L="$acl_cv_hardcode_minus_L" - dnl Determine whether the user wants rpath handling at all. - AC_ARG_ENABLE(rpath, - [ --disable-rpath do not hardcode runtime library paths], - :, enable_rpath=yes) -]) - -dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and -dnl the libraries corresponding to explicit and implicit dependencies. -dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. -AC_DEFUN([AC_LIB_LINKFLAGS_BODY], -[ - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_LIB_ARG_WITH([lib$1-prefix], -[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib - --without-lib$1-prefix don't search for lib$1 in includedir and libdir], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi -]) - dnl Search the library and its dependencies in $additional_libdir and - dnl $LDFLAGS. Using breadth-first-seach. - LIB[]NAME= - LTLIB[]NAME= - INC[]NAME= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='$1 $2' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - dnl See if it was already located by an earlier AC_LIB_LINKFLAGS - dnl or AC_LIB_HAVE_LINKFLAGS call. - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" - else - dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined - dnl that this library doesn't exist. So just drop it. - : - fi - else - dnl Search the library lib$name in $additional_libdir and $LDFLAGS - dnl and the already constructed $LIBNAME/$LTLIBNAME. - found_dir= - found_la= - found_so= - found_a= - if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then - found_dir="$additional_libdir" - found_so="$additional_libdir/lib$name.$shlibext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - else - if test -f "$additional_libdir/lib$name.$libext"; then - found_dir="$additional_libdir" - found_a="$additional_libdir/lib$name.$libext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then - found_dir="$dir" - found_so="$dir/lib$name.$shlibext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - else - if test -f "$dir/lib$name.$libext"; then - found_dir="$dir" - found_a="$dir/lib$name.$libext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - dnl Found the library. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - dnl Linking with a shared library. We attempt to hardcode its - dnl directory into the executable's runpath, unless it's the - dnl standard /usr/lib. - if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then - dnl No hardcoding is needed. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - dnl Potentially add DIR to ltrpathdirs. - dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - dnl The hardcoding into $LIBNAME is system dependent. - if test "$hardcode_direct" = yes; then - dnl Using DIR/libNAME.so during linking hardcodes DIR into the - dnl resulting binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - dnl Potentially add DIR to rpathdirs. - dnl The rpathdirs will be appended to $LIBNAME at the end. - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - dnl Rely on "-L$found_dir". - dnl But don't add it if it's already contained in the LDFLAGS - dnl or the already constructed $LIBNAME - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" - fi - if test "$hardcode_minus_L" != no; then - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH - dnl here, because this doesn't fit in flags passed to the - dnl compiler. So give up. No hardcoding. This affects only - dnl very old systems. - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - dnl Linking with a static library. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" - else - dnl We shouldn't come here, but anyway it's good to have a - dnl fallback. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" - fi - fi - dnl Assume the include files are nearby. - additional_includedir= - case "$found_dir" in - */lib | */lib/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - dnl Potentially add $additional_includedir to $INCNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's /usr/local/include and we are using GCC on Linux, - dnl 3. if it's already present in $CPPFLAGS or the already - dnl constructed $INCNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INC[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $INCNAME. - INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - dnl Look for dependencies. - if test -n "$found_la"; then - dnl Read the .la file. It defines the variables - dnl dlname, library_names, old_library, dependency_libs, current, - dnl age, revision, installed, dlopen, dlpreopen, libdir. - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - dnl We use only dependency_libs. - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's /usr/local/lib and we are using GCC on Linux, - dnl 3. if it's already present in $LDFLAGS or the already - dnl constructed $LIBNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LIBNAME. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LTLIBNAME. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - dnl Potentially add DIR to rpathdirs. - dnl The rpathdirs will be appended to $LIBNAME at the end. - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - dnl Potentially add DIR to ltrpathdirs. - dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - dnl Handle this in the next round. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - dnl Handle this in the next round. Throw away the .la's - dnl directory; it is already contained in a preceding -L - dnl option. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - dnl Most likely an immediate library name. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" - ;; - esac - done - fi - else - dnl Didn't find the library; assume it is in the system directories - dnl known to the linker and runtime loader. (All the system - dnl directories known to the linker should also be known to the - dnl runtime loader, otherwise the system is severely misconfigured.) - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$hardcode_libdir_separator"; then - dnl Weird platform: only the last -rpath option counts, the user must - dnl pass all path elements in one option. We can arrange that for a - dnl single library, but not when more than one $LIBNAMEs are used. - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" - done - dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - else - dnl The -rpath options are cumulative. - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - dnl When using libtool, the option that works for both libraries and - dnl executables is -R. The -R options are cumulative. - for found_dir in $ltrpathdirs; do - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" - done - fi -]) - -dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, -dnl unless already present in VAR. -dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes -dnl contains two or three consecutive elements that belong together. -AC_DEFUN([AC_LIB_APPENDTOVAR], -[ - for element in [$2]; do - haveit= - for x in $[$1]; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - [$1]="${[$1]}${[$1]:+ }$element" - fi - done -]) -# lib-prefix.m4 serial 4 (gettext-0.14.2) -dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Bruno Haible. - -dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and -dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't -dnl require excessive bracketing. -ifdef([AC_HELP_STRING], -[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], -[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) - -dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed -dnl to access previously installed libraries. The basic assumption is that -dnl a user will want packages to use other packages he previously installed -dnl with the same --prefix option. -dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate -dnl libraries, but is otherwise very convenient. -AC_DEFUN([AC_LIB_PREFIX], -[ - AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) - AC_REQUIRE([AC_PROG_CC]) - AC_REQUIRE([AC_CANONICAL_HOST]) - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_LIB_ARG_WITH([lib-prefix], -[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib - --without-lib-prefix don't search for libraries in includedir and libdir], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi -]) - if test $use_additional = yes; then - dnl Potentially add $additional_includedir to $CPPFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's already present in $CPPFLAGS, - dnl 3. if it's /usr/local/include and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - for x in $CPPFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $CPPFLAGS. - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" - fi - fi - fi - fi - dnl Potentially add $additional_libdir to $LDFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's already present in $LDFLAGS, - dnl 3. if it's /usr/local/lib and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - for x in $LDFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LDFLAGS. - LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" - fi - fi - fi - fi - fi -]) - -dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, -dnl acl_final_exec_prefix, containing the values to which $prefix and -dnl $exec_prefix will expand at the end of the configure script. -AC_DEFUN([AC_LIB_PREPARE_PREFIX], -[ - dnl Unfortunately, prefix and exec_prefix get only finally determined - dnl at the end of configure. - if test "X$prefix" = "XNONE"; then - acl_final_prefix="$ac_default_prefix" - else - acl_final_prefix="$prefix" - fi - if test "X$exec_prefix" = "XNONE"; then - acl_final_exec_prefix='${prefix}' - else - acl_final_exec_prefix="$exec_prefix" - fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" - prefix="$acl_save_prefix" -]) - -dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the -dnl variables prefix and exec_prefix bound to the values they will have -dnl at the end of the configure script. -AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], -[ - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - $1 - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" -]) -# nls.m4 serial 2 (gettext-0.14.3) -dnl Copyright (C) 1995-2003, 2005 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1995-2000. -dnl Bruno Haible , 2000-2003. - -AC_PREREQ(2.50) - -AC_DEFUN([AM_NLS], -[ - AC_MSG_CHECKING([whether NLS is requested]) - dnl Default is enabled NLS - AC_ARG_ENABLE(nls, - [ --disable-nls do not use Native Language Support], - USE_NLS=$enableval, USE_NLS=yes) - AC_MSG_RESULT($USE_NLS) - AC_SUBST(USE_NLS) -]) - -AC_DEFUN([AM_MKINSTALLDIRS], -[ - dnl Tell automake >= 1.10 to complain if mkinstalldirs is missing. - m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([mkinstalldirs])]) - dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly - dnl find the mkinstalldirs script in another subdir but $(top_srcdir). - dnl Try to locate it. - MKINSTALLDIRS= - if test -n "$ac_aux_dir"; then - case "$ac_aux_dir" in - /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; - *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; - esac - fi - if test -z "$MKINSTALLDIRS"; then - MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - AC_SUBST(MKINSTALLDIRS) -]) -# po.m4 serial 7 (gettext-0.14.3) -dnl Copyright (C) 1995-2005 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1995-2000. -dnl Bruno Haible , 2000-2003. - -AC_PREREQ(2.50) - -dnl Checks for all prerequisites of the po subdirectory. -AC_DEFUN([AM_PO_SUBDIRS], -[ - AC_REQUIRE([AC_PROG_MAKE_SET])dnl - AC_REQUIRE([AC_PROG_INSTALL])dnl - AC_REQUIRE([AM_MKINSTALLDIRS])dnl - AC_REQUIRE([AM_NLS])dnl - - dnl Perform the following tests also if --disable-nls has been given, - dnl because they are needed for "make dist" to work. - - dnl Search for GNU msgfmt in the PATH. - dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. - dnl The second test excludes FreeBSD msgfmt. - AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && - (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], - :) - AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) - - dnl Search for GNU xgettext 0.12 or newer in the PATH. - dnl The first test excludes Solaris xgettext and early GNU xgettext versions. - dnl The second test excludes FreeBSD xgettext. - AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && - (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], - :) - dnl Remove leftover from FreeBSD xgettext call. - rm -f messages.po - - dnl Search for GNU msgmerge 0.11 or newer in the PATH. - AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, - [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) - - dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. - dnl Test whether we really found GNU msgfmt. - if test "$GMSGFMT" != ":"; then - dnl If it is no GNU msgfmt we define it as : so that the - dnl Makefiles still can work. - if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && - (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` - AC_MSG_RESULT( - [found $GMSGFMT program is not GNU msgfmt; ignore it]) - GMSGFMT=":" - fi - fi - - dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. - dnl Test whether we really found GNU xgettext. - if test "$XGETTEXT" != ":"; then - dnl If it is no GNU xgettext we define it as : so that the - dnl Makefiles still can work. - if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && - (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - AC_MSG_RESULT( - [found xgettext program is not GNU xgettext; ignore it]) - XGETTEXT=":" - fi - dnl Remove leftover from FreeBSD xgettext call. - rm -f messages.po - fi - - AC_OUTPUT_COMMANDS([ - for ac_file in $CONFIG_FILES; do - # Support "outfile[:infile[:infile...]]" - case "$ac_file" in - *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - esac - # PO directories have a Makefile.in generated from Makefile.in.in. - case "$ac_file" in */Makefile.in) - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - # Treat a directory as a PO directory if and only if it has a - # POTFILES.in file. This allows packages to have multiple PO - # directories under different names or in different locations. - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" - POMAKEFILEDEPS="POTFILES.in" - # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend - # on $ac_dir but don't depend on user-specified configuration - # parameters. - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. - if test -n "$OBSOLETE_ALL_LINGUAS"; then - test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" - fi - ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assigment from automake. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' - POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" - else - # The set of available languages was given in configure.in. - eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' - fi - # Compute POFILES - # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) - # Compute UPDATEPOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) - # Compute DUMMYPOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) - # Compute GMOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= - UPDATEPOFILES= - DUMMYPOFILES= - GMOFILES= - for lang in $ALL_LINGUAS; do - POFILES="$POFILES $srcdirpre$lang.po" - UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" - DUMMYPOFILES="$DUMMYPOFILES $lang.nop" - GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - done - # CATALOGS depends on both $ac_dir and the user's LINGUAS - # environment variable. - INST_LINGUAS= - if test -n "$ALL_LINGUAS"; then - for presentlang in $ALL_LINGUAS; do - useit=no - if test "%UNSET%" != "$LINGUAS"; then - desiredlanguages="$LINGUAS" - else - desiredlanguages="$ALL_LINGUAS" - fi - for desiredlang in $desiredlanguages; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - INST_LINGUAS="$INST_LINGUAS $presentlang" - fi - done - fi - CATALOGS= - if test -n "$INST_LINGUAS"; then - for lang in $INST_LINGUAS; do - CATALOGS="$CATALOGS $lang.gmo" - done - fi - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do - if test -f "$f"; then - case "$f" in - *.orig | *.bak | *~) ;; - *) cat "$f" >> "$ac_dir/Makefile" ;; - esac - fi - done - fi - ;; - esac - done], - [# Capture the value of obsolete ALL_LINGUAS because we need it to compute - # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it - # from automake. - eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' - # Capture the value of LINGUAS because we need it to compute CATALOGS. - LINGUAS="${LINGUAS-%UNSET%}" - ]) -]) - -dnl Postprocesses a Makefile in a directory containing PO files. -AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], -[ - # When this code is run, in config.status, two variables have already been - # set: - # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, - # - LINGUAS is the value of the environment variable LINGUAS at configure - # time. - -changequote(,)dnl - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - # Find a way to echo strings without interpreting backslash. - if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then - gt_echo='echo' - else - if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then - gt_echo='printf %s\n' - else - echo_func () { - cat < "$ac_file.tmp" - if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then - # Add dependencies that cannot be formulated as a simple suffix rule. - for lang in $ALL_LINGUAS; do - frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` - cat >> "$ac_file.tmp" < /dev/null; then - # Add dependencies that cannot be formulated as a simple suffix rule. - for lang in $ALL_LINGUAS; do - frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` - cat >> "$ac_file.tmp" <> "$ac_file.tmp" <, 1996. - -AC_PREREQ(2.50) - -# Search path for a program which passes the given test. - -dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, -dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) -AC_DEFUN([AM_PATH_PROG_WITH_TEST], -[ -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "$2", so it can be a program name with args. -set dummy $2; ac_word=[$]2 -AC_MSG_CHECKING([for $ac_word]) -AC_CACHE_VAL(ac_cv_path_$1, -[case "[$]$1" in - [[\\/]]* | ?:[[\\/]]*) - ac_cv_path_$1="[$]$1" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in ifelse([$5], , $PATH, [$5]); do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD - if [$3]; then - ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - done - IFS="$ac_save_IFS" -dnl If no 4th arg is given, leave the cache variable unset, -dnl so AC_PATH_PROGS will keep looking. -ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" -])dnl - ;; -esac])dnl -$1="$ac_cv_path_$1" -if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then - AC_MSG_RESULT([$]$1) -else - AC_MSG_RESULT(no) -fi -AC_SUBST($1)dnl -]) - -# =========================================================================== -# http://autoconf-archive.cryp.to/ax_cxx_check_flag.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_CXX_CHECK_FLAG(FLAG-TO-CHECK,[PROLOGUE],[BODY],[ACTION-IF-SUCCESS],[ACTION-IF-FAILURE]) -# -# DESCRIPTION -# -# This macro tests if the C++ compiler supports the flag FLAG-TO-CHECK. If -# successfull execute ACTION-IF-SUCCESS otherwise ACTION-IF-FAILURE. -# PROLOGUE and BODY are optional and should be used as in AC_LANG_PROGRAM -# macro. -# -# This code is inspired from KDE_CHECK_COMPILER_FLAG macro. Thanks to -# Bogdan Drozdowski for testing and bug fixes. -# -# LAST MODIFICATION -# -# 2008-04-12 -# -# COPYLEFT -# -# Copyright (c) 2008 Francesco Salvestrini -# -# 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, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Macro Archive. When you make and -# distribute a modified version of the Autoconf Macro, you may extend this -# special exception to the GPL to apply to your modified version as well. - -AC_DEFUN([AX_CXX_CHECK_FLAG],[ - AC_PREREQ([2.61]) - AC_REQUIRE([AC_PROG_CXX]) - AC_REQUIRE([AC_PROG_SED]) - - flag=`echo "$1" | $SED 'y% .=/+-(){}<>:*,%_______________%'` - - AC_CACHE_CHECK([whether the C++ compiler accepts the $1 flag], - [ax_cv_cxx_check_flag_$flag],[ - - AC_LANG_PUSH([C++]) - - save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS $1" - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([$2],[$3]) - ],[ - eval "ax_cv_cxx_check_flag_$flag=yes" - ],[ - eval "ax_cv_cxx_check_flag_$flag=no" - ]) - - CXXFLAGS="$save_CXXFLAGS" - - AC_LANG_POP - - ]) - - AS_IF([eval "test \"`echo '$ax_cv_cxx_check_flag_'$flag`\" = yes"],[ - : - $4 - ],[ - : - $5 - ]) -]) diff --git a/platform/win32/msvc/external/exiv2/config/configure.ac b/platform/win32/msvc/external/exiv2/config/configure.ac deleted file mode 100644 index 56fc54a13a6..00000000000 --- a/platform/win32/msvc/external/exiv2/config/configure.ac +++ /dev/null @@ -1,278 +0,0 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. - -AC_PREREQ(2.61) -AC_INIT(exiv2, 0.23, ahuggel@gmx.net) -# See http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html -EXIV2_LTVERSION=12:0:0 -PACKAGE=$PACKAGE_NAME -VERSION=$PACKAGE_VERSION -AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE") -AC_DEFINE_UNQUOTED(VERSION, "$VERSION") -AC_SUBST(EXIV2_LTVERSION) -AC_SUBST(PACKAGE) -AC_SUBST(VERSION) -AC_CONFIG_SRCDIR([src/exif.cpp]) -AC_CONFIG_HEADER([./config/config.h]) -AC_CONFIG_AUX_DIR([./config]) - -# --------------------------------------------------------------------------- -# Checks for programs. -# --------------------------------------------------------------------------- -# Don't use -g to compile C++ code -ac_cv_prog_cxx_g=no -AC_PROG_CXX -AC_PROG_CXXCPP -# Don't use -g to compile C code -ac_cv_prog_cc_g=no -AC_PROG_CC -AC_PROG_CPP -AC_PROG_INSTALL -AC_PROG_LN_S -AC_PROG_MAKE_SET -AC_CANONICAL_HOST - -# --------------------------------------------------------------------------- -# i18n support -# --------------------------------------------------------------------------- -AM_GNU_GETTEXT([external]) - -# --------------------------------------------------------------------------- -# Libtool support -# --------------------------------------------------------------------------- -LT_INIT -AC_SUBST([LIBTOOL_DEPS]) - -# --------------------------------------------------------------------------- -# Checks for libraries. -# --------------------------------------------------------------------------- -AC_CHECK_LIBM() -LIBS="$LIBS $LIBM" -CHECK_ZLIB() -AC_SUBST(HAVE_LIBZ,$HAVE_LIBZ) -AM_ICONV - -# --------------------------------------------------------------------------- -# Checks for header files. -# --------------------------------------------------------------------------- -AC_HEADER_STDC -AC_CHECK_HEADERS([libintl.h locale.h malloc.h stdint.h stdlib.h string.h unistd.h sys/mman.h utime.h]) - -# --------------------------------------------------------------------------- -# Checks for typedefs, structures, and compiler characteristics. -# --------------------------------------------------------------------------- -AC_HEADER_STDBOOL -AC_C_CONST -AC_C_INLINE -AC_TYPE_PID_T -AC_TYPE_SIZE_T -AC_STRUCT_TM -#AC_TYPE_UINT8_T -#AC_TYPE_UINT16_T -#AC_TYPE_UINT32_T -#AC_TYPE_INT16_T -#AC_TYPE_INT32_T -AC_SUBST(GXX,$GXX) -AC_SUBST(GCC,$GCC) - -# --------------------------------------------------------------------------- -# Checks for library functions. -# --------------------------------------------------------------------------- -#AC_FUNC_MKTIME - fails when using old autoconf with gcc-4.3, see eg. Debian Bug#425544, and we don't use the result anyway -AC_FUNC_MMAP -AC_FUNC_STRERROR_R -AC_CHECK_FUNCS([gmtime_r lstat memset mmap munmap strchr strerror strtol]) -AC_CHECK_FUNCS([timegm], HAVE_TIMEGM=1) -AC_SUBST(HAVE_TIMEGM,$HAVE_TIMEGM) - -# --------------------------------------------------------------------------- -# Miscellaneous -# --------------------------------------------------------------------------- -AC_MSG_CHECKING([whether to enable dependency tracking]) -AC_ARG_ENABLE(dependency-tracking, - [ --disable-dependency-tracking speeds up one-time build], - USE_TRACKING=$enableval, USE_TRACKING=yes) -AC_MSG_RESULT($USE_TRACKING) -DEP_TRACKING= -if test "$USE_TRACKING" = "yes"; then - DEP_TRACKING=1 -fi -AC_SUBST(DEP_TRACKING,$DEP_TRACKING) - -AC_MSG_CHECKING([whether to enable symbol visibility support]) -AC_ARG_ENABLE(visibility, - [ --disable-visibility do not use symbol visibility support ], - VISIBILITY_SUPPORT=$enableval, VISIBILITY_SUPPORT=yes) -AC_MSG_RESULT($VISIBILITY_SUPPORT) -if test "$VISIBILITY_SUPPORT" = "yes"; then - # Sun Studio C++ compiler (which apparently ignores -fvisibility-inlines-hidden) - AX_CXX_CHECK_FLAG(-xldscope=hidden,[],[],[VISIBILITY_SUPPORT=yes],[VISIBILITY_SUPPORT=no]) - if test "$VISIBILITY_SUPPORT" = "yes"; then - CXXFLAGS="${CXXFLAGS} -xldscope=hidden" - else - # GNU g++ - AX_CXX_CHECK_FLAG(-fvisibility-inlines-hidden,[],[],[VISIBILITY_SUPPORT=yes],[VISIBILITY_SUPPORT=no]) - if test "$VISIBILITY_SUPPORT" = "yes"; then - CXXFLAGS="${CXXFLAGS} -fvisibility=hidden -fvisibility-inlines-hidden" - fi - fi - if test "$VISIBILITY_SUPPORT" = "yes"; then - AC_DEFINE(WANT_VISIBILITY_SUPPORT) - fi - if test "$enable_shared" = "yes"; then - AC_DEFINE(HAVE_DLL) - fi -fi - -AC_MSG_CHECKING([whether to use the lens database for Nikon lens names]) -AC_ARG_ENABLE(lensdata, - [ --disable-lensdata do not use the lens database for Nikon lens names ], - USE_LENSDATA=$enableval, USE_LENSDATA=yes) -AC_MSG_RESULT($USE_LENSDATA) -if test "$USE_LENSDATA" = "yes"; then - AC_DEFINE(HAVE_LENSDATA,1) -fi - -AC_MSG_CHECKING([whether to compile a commercial version of the Exiv2 library]) -AC_ARG_ENABLE(commercial, - [ --enable-commercial compile with the EXV_COMMERCIAL_VERSION symbol set ], - COMMERCIAL_VERSION=$enableval, COMMERCIAL_VERSION=no) -AC_MSG_RESULT($COMMERCIAL_VERSION) -AC_SUBST(COMMERCIAL_VERSION,$COMMERCIAL_VERSION) - -AC_MSG_CHECKING([whether to enable XMP support (requires expat)]) -AC_ARG_ENABLE(xmp, - [ --disable-xmp do not compile XMP support and the XMP Toolkit ], - USE_XMP_TOOLKIT=$enableval, USE_XMP_TOOLKIT=yes) -AC_MSG_RESULT($USE_XMP_TOOLKIT) - -# expat option might change flags, so we save them initially -_cppflags="${CPPFLAGS}" -_ldflags="${LDFLAGS}" - -AC_ARG_WITH(expat, -[ --with-expat[[=DIR]] use libexpat in DIR],[ - if test "$withval" != "no" -a "$withval" != "yes"; then - EXPAT_DIR=$withval - CPPFLAGS="${CPPFLAGS} -I$withval/include" - LDFLAGS="${LDFLAGS} -L$withval/lib" - fi -]) - -ENABLE_XMP= -if test "$USE_XMP_TOOLKIT" = "yes"; then - # Check for expat library - found_expat=yes - EXPAT_CPPFLAGS= - EXPAT_LDFLAGS= - EXPAT_LIBS= - if test "$with_expat" != "no"; then - AC_CHECK_HEADERS(expat.h, - AC_CHECK_LIB(expat, XML_ParserCreate,[ - AC_DEFINE([HAVE_EXPAT], [], [Have Expat XML parser library]) - EXPAT_LIBS="-lexpat" - if test "x${EXPAT_DIR}" != "x"; then - EXPAT_CPPFLAGS="-I${EXPAT_DIR}/include" - EXPAT_LDFLAGS="-L${EXPAT_DIR}/lib" - fi],[found_expat=no]),[found_expat=no]) - fi - if test "$with_expat" = "no" -o "$found_expat" = "no"; then - AC_MSG_ERROR(either specify a valid expat installation with --with-expat=DIR or disable XMP support with --disable-xmp) - fi - AC_DEFINE(HAVE_XMP_TOOLKIT,1) - ENABLE_XMP=1 - AC_SUBST(EXPAT_CPPFLAGS) - AC_SUBST(EXPAT_LDFLAGS) - AC_SUBST(EXPAT_LIBS) -fi -AC_SUBST(ENABLE_XMP) - -CPPFLAGS=${_cppflags} -LDFLAGS=${_ldflags} - -# Udi's hack to add libiconv to the Libs section in exiv2.pc -if test "$enable_shared" = "no"; then - EXV_LIB_STATIC=$LTLIBICONV -else - EXV_LIB_STATIC= -fi -AC_SUBST(EXV_LIB_STATIC) - -# Add flag for DLL on Windows -# -# This must happen after all other configure checks, because -# the "-no-undefined" flag is only for libtool and must not be -# passed to GCC by accident. -case "$host_os" in -*mingw* | *cygwin*) - LDFLAGS="$LDFLAGS -no-undefined" - ;; -esac - -# --------------------------------------------------------------------------- -# Create output files. -# --------------------------------------------------------------------------- -AC_CONFIG_FILES([./Makefile:./config/Makefile.in]) -AC_CONFIG_FILES([./config/config.mk]) -AC_CONFIG_FILES([./config/exiv2.pc]) -AC_CONFIG_FILES([./po/Makefile.in]) -AC_CONFIG_FILES([./src/doxygen.hpp]) -AC_OUTPUT - -# --------------------------------------------------------------------------- -# Configuration summary. -# --------------------------------------------------------------------------- - -echo "" -echo "------------------------------------------------------------------" -echo "-- Exiv2 $VERSION feature configuration summary" -echo "--" - -case "$enable_shared" in -yes) echo "-- Build a shared library......... YES" ;; -*) echo "-- Build a shared library......... NO" ;; -esac - -case "$VISIBILITY_SUPPORT" in -yes) echo "-- Use symbol visibility support.. YES" ;; -*) echo "-- Use symbol visibility support.. NO" ;; -esac - -case "x$HAVE_LIBZ" in -x1) echo "-- PNG image support.............. YES" ;; -*) echo "-- PNG image support.............. NO" - echo "" - echo "zlib is required for PNG support. Make sure the zlib header files" - echo "are installed and use --with-zlib=DIR if it is in a non-standard" - echo "location. You can get zlib from http://www.zlib.net/" - echo "" ;; -esac - -case "$USE_NLS" in -yes) echo "-- Native language support........ YES" ;; -*) echo "-- Native language support........ NO" - echo "" - echo "gettext is required for native language support. Make sure the" - echo "gettext header files are installed. You can get gettext from" - echo "http://www.gnu.org/software/gettext/" - echo "" ;; -esac - -case "$USE_LENSDATA" in -yes) echo "-- Nikon lens database............ YES" ;; -*) echo "-- Nikon lens database............ NO" ;; -esac - -case "$USE_XMP_TOOLKIT" in -yes) echo "-- XMP metadata support........... YES" ;; -*) echo "-- XMP metadata support........... NO" - echo "" - echo "Expat is required for XMP support. Make sure the Expat header" - echo "files are installed and use --with-expat=DIR if it is in a" - echo "non-standard location. You can get Expat from" - echo "http://expat.sourceforge.net/" - echo "" ;; -esac - -echo "------------------------------------------------------------------" -echo "" diff --git a/platform/win32/msvc/external/exiv2/config/exiv2.pc.in b/platform/win32/msvc/external/exiv2/config/exiv2.pc.in deleted file mode 100644 index 409458cf107..00000000000 --- a/platform/win32/msvc/external/exiv2/config/exiv2.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: exiv2 -Description: Image metadata library and tools -Version: @PACKAGE_VERSION@ -Libs: -L${libdir} -lexiv2 @EXV_LIB_STATIC@ -Libs.private: @EXPAT_LDFLAGS@ @LTLIBINTL@ @LTLIBICONV@ @LIBS@ @EXPAT_LIBS@ -Cflags: -I${includedir} diff --git a/platform/win32/msvc/external/exiv2/config/install-sh b/platform/win32/msvc/external/exiv2/config/install-sh deleted file mode 100644 index a5897de6ea7..00000000000 --- a/platform/win32/msvc/external/exiv2/config/install-sh +++ /dev/null @@ -1,519 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2006-12-25.00 - -# This originates from X11R5 (mit/util/scripts/install.sh), which was -# later released in X11R6 (xc/config/util/install.sh) with the -# following copyright and license. -# -# Copyright (C) 1994 X Consortium -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name of the X Consortium shall not -# be used in advertising or otherwise to promote the sale, use or other deal- -# ings in this Software without prior written authorization from the X Consor- -# tium. -# -# -# FSF changes to this file are in the public domain. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. - -nl=' -' -IFS=" "" $nl" - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit=${DOITPROG-} -if test -z "$doit"; then - doit_exec=exec -else - doit_exec=$doit -fi - -# Put in absolute file names if you don't have them in your path; -# or use environment vars. - -chgrpprog=${CHGRPPROG-chgrp} -chmodprog=${CHMODPROG-chmod} -chownprog=${CHOWNPROG-chown} -cmpprog=${CMPPROG-cmp} -cpprog=${CPPROG-cp} -mkdirprog=${MKDIRPROG-mkdir} -mvprog=${MVPROG-mv} -rmprog=${RMPROG-rm} -stripprog=${STRIPPROG-strip} - -posix_glob='?' -initialize_posix_glob=' - test "$posix_glob" != "?" || { - if (set -f) 2>/dev/null; then - posix_glob= - else - posix_glob=: - fi - } -' - -posix_mkdir= - -# Desired mode of installed file. -mode=0755 - -chgrpcmd= -chmodcmd=$chmodprog -chowncmd= -mvcmd=$mvprog -rmcmd="$rmprog -f" -stripcmd= - -src= -dst= -dir_arg= -dst_arg= - -copy_on_change=false -no_target_directory= - -usage="\ -Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE - or: $0 [OPTION]... SRCFILES... DIRECTORY - or: $0 [OPTION]... -t DIRECTORY SRCFILES... - or: $0 [OPTION]... -d DIRECTORIES... - -In the 1st form, copy SRCFILE to DSTFILE. -In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. -In the 4th, create DIRECTORIES. - -Options: - --help display this help and exit. - --version display version info and exit. - - -c (ignored) - -C install only if different (preserve the last data modification time) - -d create directories instead of installing files. - -g GROUP $chgrpprog installed files to GROUP. - -m MODE $chmodprog installed files to MODE. - -o USER $chownprog installed files to USER. - -s $stripprog installed files. - -t DIRECTORY install into DIRECTORY. - -T report an error if DSTFILE is a directory. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG - RMPROG STRIPPROG -" - -while test $# -ne 0; do - case $1 in - -c) ;; - - -C) copy_on_change=true;; - - -d) dir_arg=true;; - - -g) chgrpcmd="$chgrpprog $2" - shift;; - - --help) echo "$usage"; exit $?;; - - -m) mode=$2 - case $mode in - *' '* | *' '* | *' -'* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; - - -o) chowncmd="$chownprog $2" - shift;; - - -s) stripcmd=$stripprog;; - - -t) dst_arg=$2 - shift;; - - -T) no_target_directory=true;; - - --version) echo "$0 $scriptversion"; exit $?;; - - --) shift - break;; - - -*) echo "$0: invalid option: $1" >&2 - exit 1;; - - *) break;; - esac - shift -done - -if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then - # When -d is used, all remaining arguments are directories to create. - # When -t is used, the destination is already specified. - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dst_arg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dst_arg" - shift # fnord - fi - shift # arg - dst_arg=$arg - done -fi - -if test $# -eq 0; then - if test -z "$dir_arg"; then - echo "$0: no input file specified." >&2 - exit 1 - fi - # It's OK to call `install-sh -d' without argument. - # This can happen when creating conditional directories. - exit 0 -fi - -if test -z "$dir_arg"; then - trap '(exit $?); exit' 1 2 13 15 - - # Set umask so as not to create temps with too-generous modes. - # However, 'strip' requires both read and write access to temps. - case $mode in - # Optimize common cases. - *644) cp_umask=133;; - *755) cp_umask=22;; - - *[0-7]) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw='% 200' - fi - cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; - *) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw=,u+rw - fi - cp_umask=$mode$u_plus_rw;; - esac -fi - -for src -do - # Protect names starting with `-'. - case $src in - -*) src=./$src;; - esac - - if test -n "$dir_arg"; then - dst=$src - dstdir=$dst - test -d "$dstdir" - dstdir_status=$? - else - - # Waiting for this to be detected by the "$cpprog $src $dsttmp" command - # might cause directories to be created, which would be especially bad - # if $src (and thus $dsttmp) contains '*'. - if test ! -f "$src" && test ! -d "$src"; then - echo "$0: $src does not exist." >&2 - exit 1 - fi - - if test -z "$dst_arg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - - dst=$dst_arg - # Protect names starting with `-'. - case $dst in - -*) dst=./$dst;; - esac - - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. - if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 - fi - dstdir=$dst - dst=$dstdir/`basename "$src"` - dstdir_status=0 - else - # Prefer dirname, but fall back on a substitute if dirname fails. - dstdir=` - (dirname "$dst") 2>/dev/null || - expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$dst" : 'X\(//\)[^/]' \| \ - X"$dst" : 'X\(//\)$' \| \ - X"$dst" : 'X\(/\)' \| . 2>/dev/null || - echo X"$dst" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q' - ` - - test -d "$dstdir" - dstdir_status=$? - fi - fi - - obsolete_mkdir_used=false - - if test $dstdir_status != 0; then - case $posix_mkdir in - '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writeable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; - esac - - if - $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" - ) - then : - else - - # The umask is ridiculous, or mkdir does not conform to POSIX, - # or it failed possibly due to a race condition. Create the - # directory the slow way, step by step, checking for races as we go. - - case $dstdir in - /*) prefix='/';; - -*) prefix='./';; - *) prefix='';; - esac - - eval "$initialize_posix_glob" - - oIFS=$IFS - IFS=/ - $posix_glob set -f - set fnord $dstdir - shift - $posix_glob set +f - IFS=$oIFS - - prefixes= - - for d - do - test -z "$d" && continue - - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ - done - - if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true - fi - fi - fi - - if test -n "$dir_arg"; then - { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && - { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || - test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 - else - - # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 - - # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && - - # and set any options; do chmod last to preserve setuid bits. - # - # If any of these fail, we abort the whole thing. If we want to - # ignore errors from any of these, just make sure not to ignore - # errors from the above "$doit $cpprog $src $dsttmp" command. - # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && - { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && - { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && - - # If -C, don't bother to copy if it wouldn't change the file. - if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - - eval "$initialize_posix_glob" && - $posix_glob set -f && - set X $old && old=:$2:$4:$5:$6 && - set X $new && new=:$2:$4:$5:$6 && - $posix_glob set +f && - - test "$old" = "$new" && - $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 - then - rm -f "$dsttmp" - else - # Rename the file to the real destination. - $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || - - # The rename failed, perhaps because mv can't rename something else - # to itself, or perhaps because mv is so ancient that it does not - # support -f. - { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" - } - fi || exit 1 - - trap '' 0 - fi -done - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/platform/win32/msvc/external/exiv2/config/ltmain.sh b/platform/win32/msvc/external/exiv2/config/ltmain.sh deleted file mode 100644 index 3506ead396b..00000000000 --- a/platform/win32/msvc/external/exiv2/config/ltmain.sh +++ /dev/null @@ -1,8413 +0,0 @@ -# Generated from ltmain.m4sh. - -# ltmain.sh (GNU libtool) 2.2.6 -# Written by Gordon Matzigkeit , 1996 - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool 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. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, -# or obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -# Usage: $progname [OPTION]... [MODE-ARG]... -# -# Provide generalized library-building support services. -# -# --config show all configuration variables -# --debug enable verbose shell tracing -# -n, --dry-run display commands without modifying any files -# --features display basic configuration information and exit -# --mode=MODE use operation mode MODE -# --preserve-dup-deps don't remove duplicate dependency libraries -# --quiet, --silent don't print informational messages -# --tag=TAG use configuration variables from tag TAG -# -v, --verbose print informational messages (default) -# --version print version information -# -h, --help print short or long help message -# -# MODE must be one of the following: -# -# clean remove files from the build directory -# compile compile a source file into a libtool object -# execute automatically set library path, then run a program -# finish complete the installation of libtool libraries -# install install libraries or executables -# link create a library or an executable -# uninstall remove libraries from an installed directory -# -# MODE-ARGS vary depending on the MODE. -# Try `$progname --help --mode=MODE' for a more detailed description of MODE. -# -# When reporting a bug, please describe a test case to reproduce it and -# include the following information: -# -# host-triplet: $host -# shell: $SHELL -# compiler: $LTCC -# compiler flags: $LTCFLAGS -# linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.2.6 Debian-2.2.6a-4 -# automake: $automake_version -# autoconf: $autoconf_version -# -# Report bugs to . - -PROGRAM=ltmain.sh -PACKAGE=libtool -VERSION="2.2.6 Debian-2.2.6a-4" -TIMESTAMP="" -package_revision=1.3012 - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# NLS nuisances: We save the old values to restore during execute mode. -# Only set LANG and LC_ALL to C if already set. -# These must not be set unconditionally because not all systems understand -# e.g. LANG=C (notably SCO). -lt_user_locale= -lt_safe_locale= -for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -do - eval "if test \"\${$lt_var+set}\" = set; then - save_$lt_var=\$$lt_var - $lt_var=C - export $lt_var - lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" - lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" - fi" -done - -$lt_unset CDPATH - - - - - -: ${CP="cp -f"} -: ${ECHO="echo"} -: ${EGREP="/bin/grep -E"} -: ${FGREP="/bin/grep -F"} -: ${GREP="/bin/grep"} -: ${LN_S="ln -s"} -: ${MAKE="make"} -: ${MKDIR="mkdir"} -: ${MV="mv -f"} -: ${RM="rm -f"} -: ${SED="/bin/sed"} -: ${SHELL="${CONFIG_SHELL-/bin/sh}"} -: ${Xsed="$SED -e 1s/^X//"} - -# Global variables: -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. - -exit_status=$EXIT_SUCCESS - -# Make sure IFS has a sensible default -lt_nl=' -' -IFS=" $lt_nl" - -dirname="s,/[^/]*$,," -basename="s,^.*/,," - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi - func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` -} - -# Generated shell functions inserted here. - -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath="$0" - -# The name of this program: -# In the unlikely event $progname began with a '-', it would play havoc with -# func_echo (imagine progname=-n), so we prepend ./ in that case: -func_dirname_and_basename "$progpath" -progname=$func_basename_result -case $progname in - -*) progname=./$progname ;; -esac - -# Make sure we have an absolute path for reexecution: -case $progpath in - [\\/]*|[A-Za-z]:\\*) ;; - *[\\/]*) - progdir=$func_dirname_result - progdir=`cd "$progdir" && pwd` - progpath="$progdir/$progname" - ;; - *) - save_IFS="$IFS" - IFS=: - for progdir in $PATH; do - IFS="$save_IFS" - test -x "$progdir/$progname" && break - done - IFS="$save_IFS" - test -n "$progdir" || progdir=`pwd` - progpath="$progdir/$progname" - ;; -esac - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed="${SED}"' -e 1s/^X//' -sed_quote_subst='s/\([`"$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Re-`\' parameter expansions in output of double_quote_subst that were -# `\'-ed in input to the same. If an odd number of `\' preceded a '$' -# in input to double_quote_subst, that '$' was protected from expansion. -# Since each input `\' is now two `\'s, look for any number of runs of -# four `\'s followed by two `\'s and then a '$'. `\' that '$'. -bs='\\' -bs2='\\\\' -bs4='\\\\\\\\' -dollar='\$' -sed_double_backslash="\ - s/$bs4/&\\ -/g - s/^$bs2$dollar/$bs&/ - s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g - s/\n//g" - -# Standard options: -opt_dry_run=false -opt_help=false -opt_quiet=false -opt_verbose=false -opt_warning=: - -# func_echo arg... -# Echo program name prefixed message, along with the current mode -# name if it has been set yet. -func_echo () -{ - $ECHO "$progname${mode+: }$mode: $*" -} - -# func_verbose arg... -# Echo program name prefixed message in verbose mode only. -func_verbose () -{ - $opt_verbose && func_echo ${1+"$@"} - - # A bug in bash halts the script if the last line of a function - # fails when set -e is in force, so we need another command to - # work around that: - : -} - -# func_error arg... -# Echo program name prefixed message to standard error. -func_error () -{ - $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 -} - -# func_warning arg... -# Echo program name prefixed warning message to standard error. -func_warning () -{ - $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 - - # bash bug again: - : -} - -# func_fatal_error arg... -# Echo program name prefixed message to standard error, and exit. -func_fatal_error () -{ - func_error ${1+"$@"} - exit $EXIT_FAILURE -} - -# func_fatal_help arg... -# Echo program name prefixed message to standard error, followed by -# a help hint, and exit. -func_fatal_help () -{ - func_error ${1+"$@"} - func_fatal_error "$help" -} -help="Try \`$progname --help' for more information." ## default - - -# func_grep expression filename -# Check whether EXPRESSION matches any line of FILENAME, without output. -func_grep () -{ - $GREP "$1" "$2" >/dev/null 2>&1 -} - - -# func_mkdir_p directory-path -# Make sure the entire path to DIRECTORY-PATH is available. -func_mkdir_p () -{ - my_directory_path="$1" - my_dir_list= - - if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then - - # Protect directory names starting with `-' - case $my_directory_path in - -*) my_directory_path="./$my_directory_path" ;; - esac - - # While some portion of DIR does not yet exist... - while test ! -d "$my_directory_path"; do - # ...make a list in topmost first order. Use a colon delimited - # list incase some portion of path contains whitespace. - my_dir_list="$my_directory_path:$my_dir_list" - - # If the last portion added has no slash in it, the list is done - case $my_directory_path in */*) ;; *) break ;; esac - - # ...otherwise throw away the child directory and loop - my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` - done - my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` - - save_mkdir_p_IFS="$IFS"; IFS=':' - for my_dir in $my_dir_list; do - IFS="$save_mkdir_p_IFS" - # mkdir can fail with a `File exist' error if two processes - # try to create one of the directories concurrently. Don't - # stop in that case! - $MKDIR "$my_dir" 2>/dev/null || : - done - IFS="$save_mkdir_p_IFS" - - # Bail out if we (or some other process) failed to create a directory. - test -d "$my_directory_path" || \ - func_fatal_error "Failed to create \`$1'" - fi -} - - -# func_mktempdir [string] -# Make a temporary directory that won't clash with other running -# libtool processes, and avoids race conditions if possible. If -# given, STRING is the basename for that directory. -func_mktempdir () -{ - my_template="${TMPDIR-/tmp}/${1-$progname}" - - if test "$opt_dry_run" = ":"; then - # Return a directory name, but don't create it in dry-run mode - my_tmpdir="${my_template}-$$" - else - - # If mktemp works, use that first and foremost - my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` - - if test ! -d "$my_tmpdir"; then - # Failing that, at least try and use $RANDOM to avoid a race - my_tmpdir="${my_template}-${RANDOM-0}$$" - - save_mktempdir_umask=`umask` - umask 0077 - $MKDIR "$my_tmpdir" - umask $save_mktempdir_umask - fi - - # If we're not in dry-run mode, bomb out on failure - test -d "$my_tmpdir" || \ - func_fatal_error "cannot create temporary directory \`$my_tmpdir'" - fi - - $ECHO "X$my_tmpdir" | $Xsed -} - - -# func_quote_for_eval arg -# Aesthetically quote ARG to be evaled later. -# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT -# is double-quoted, suitable for a subsequent eval, whereas -# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters -# which are still active within double quotes backslashified. -func_quote_for_eval () -{ - case $1 in - *[\\\`\"\$]*) - func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; - *) - func_quote_for_eval_unquoted_result="$1" ;; - esac - - case $func_quote_for_eval_unquoted_result in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and and variable - # expansion for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" - ;; - *) - func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" - esac -} - - -# func_quote_for_expand arg -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () -{ - case $1 in - *[\\\`\"]*) - my_arg=`$ECHO "X$1" | $Xsed \ - -e "$double_quote_subst" -e "$sed_double_backslash"` ;; - *) - my_arg="$1" ;; - esac - - case $my_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - my_arg="\"$my_arg\"" - ;; - esac - - func_quote_for_expand_result="$my_arg" -} - - -# func_show_eval cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. -func_show_eval () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$my_cmd" - my_status=$? - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - - -# func_show_eval_locale cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. Use the saved locale for evaluation. -func_show_eval_locale () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$lt_user_locale - $my_cmd" - my_status=$? - eval "$lt_safe_locale" - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - - - - - -# func_version -# Echo version message to standard output and exit. -func_version () -{ - $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { - s/^# // - s/^# *$// - s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ - p - }' < "$progpath" - exit $? -} - -# func_usage -# Echo short help message to standard output and exit. -func_usage () -{ - $SED -n '/^# Usage:/,/# -h/ { - s/^# // - s/^# *$// - s/\$progname/'$progname'/ - p - }' < "$progpath" - $ECHO - $ECHO "run \`$progname --help | more' for full usage" - exit $? -} - -# func_help -# Echo long help message to standard output and exit. -func_help () -{ - $SED -n '/^# Usage:/,/# Report bugs to/ { - s/^# // - s/^# *$// - s*\$progname*'$progname'* - s*\$host*'"$host"'* - s*\$SHELL*'"$SHELL"'* - s*\$LTCC*'"$LTCC"'* - s*\$LTCFLAGS*'"$LTCFLAGS"'* - s*\$LD*'"$LD"'* - s/\$with_gnu_ld/'"$with_gnu_ld"'/ - s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ - s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ - p - }' < "$progpath" - exit $? -} - -# func_missing_arg argname -# Echo program name prefixed message to standard error and set global -# exit_cmd. -func_missing_arg () -{ - func_error "missing argument for $1" - exit_cmd=exit -} - -exit_cmd=: - - - - - -# Check that we have a working $ECHO. -if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X$1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then - # Yippee, $ECHO works! - : -else - # Restart under the correct shell, and then maybe $ECHO will work. - exec $SHELL "$progpath" --no-reexec ${1+"$@"} -fi - -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat </dev/null 2>&1; then - taglist="$taglist $tagname" - - # Evaluate the configuration. Be careful to quote the path - # and the sed script, to avoid splitting on whitespace, but - # also don't use non-portable quotes within backquotes within - # quotes we have to do it in 2 steps: - extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` - eval "$extractedcf" - else - func_error "ignoring unknown tag $tagname" - fi - ;; - esac -} - -# Parse options once, thoroughly. This comes as soon as possible in -# the script to make things like `libtool --version' happen quickly. -{ - - # Shorthand for --mode=foo, only valid as the first argument - case $1 in - clean|clea|cle|cl) - shift; set dummy --mode clean ${1+"$@"}; shift - ;; - compile|compil|compi|comp|com|co|c) - shift; set dummy --mode compile ${1+"$@"}; shift - ;; - execute|execut|execu|exec|exe|ex|e) - shift; set dummy --mode execute ${1+"$@"}; shift - ;; - finish|finis|fini|fin|fi|f) - shift; set dummy --mode finish ${1+"$@"}; shift - ;; - install|instal|insta|inst|ins|in|i) - shift; set dummy --mode install ${1+"$@"}; shift - ;; - link|lin|li|l) - shift; set dummy --mode link ${1+"$@"}; shift - ;; - uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) - shift; set dummy --mode uninstall ${1+"$@"}; shift - ;; - esac - - # Parse non-mode specific arguments: - while test "$#" -gt 0; do - opt="$1" - shift - - case $opt in - --config) func_config ;; - - --debug) preserve_args="$preserve_args $opt" - func_echo "enabling shell trace mode" - opt_debug='set -x' - $opt_debug - ;; - - -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break - execute_dlfiles="$execute_dlfiles $1" - shift - ;; - - --dry-run | -n) opt_dry_run=: ;; - --features) func_features ;; - --finish) mode="finish" ;; - - --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break - case $1 in - # Valid mode arguments: - clean) ;; - compile) ;; - execute) ;; - finish) ;; - install) ;; - link) ;; - relink) ;; - uninstall) ;; - - # Catch anything else as an error - *) func_error "invalid argument for $opt" - exit_cmd=exit - break - ;; - esac - - mode="$1" - shift - ;; - - --preserve-dup-deps) - opt_duplicate_deps=: ;; - - --quiet|--silent) preserve_args="$preserve_args $opt" - opt_silent=: - ;; - - --verbose| -v) preserve_args="$preserve_args $opt" - opt_silent=false - ;; - - --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break - preserve_args="$preserve_args $opt $1" - func_enable_tag "$1" # tagname is set here - shift - ;; - - # Separate optargs to long options: - -dlopen=*|--mode=*|--tag=*) - func_opt_split "$opt" - set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} - shift - ;; - - -\?|-h) func_usage ;; - --help) opt_help=: ;; - --version) func_version ;; - - -*) func_fatal_help "unrecognized option \`$opt'" ;; - - *) nonopt="$opt" - break - ;; - esac - done - - - case $host in - *cygwin* | *mingw* | *pw32* | *cegcc*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_duplicate_deps - ;; - esac - - # Having warned about all mis-specified options, bail out if - # anything was wrong. - $exit_cmd $EXIT_FAILURE -} - -# func_check_version_match -# Ensure that we are using m4 macros, and libtool script from the same -# release of libtool. -func_check_version_match () -{ - if test "$package_revision" != "$macro_revision"; then - if test "$VERSION" != "$macro_version"; then - if test -z "$macro_version"; then - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from an older release. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - fi - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, -$progname: but the definition of this LT_INIT comes from revision $macro_revision. -$progname: You should recreate aclocal.m4 with macros from revision $package_revision -$progname: of $PACKAGE $VERSION and run autoconf again. -_LT_EOF - fi - - exit $EXIT_MISMATCH - fi -} - - -## ----------- ## -## Main. ## -## ----------- ## - -$opt_help || { - # Sanity checks first: - func_check_version_match - - if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - func_fatal_configuration "not configured to build any kind of library" - fi - - test -z "$mode" && func_fatal_error "error: you must specify a MODE." - - - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" - - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$execute_dlfiles" && test "$mode" != execute; then - func_error "unrecognized option \`-dlopen'" - $ECHO "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$progname --help --mode=$mode' for more information." -} - - -# func_lalib_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_lalib_p () -{ - test -f "$1" && - $SED -e 4q "$1" 2>/dev/null \ - | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 -} - -# func_lalib_unsafe_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function implements the same check as func_lalib_p without -# resorting to external programs. To this end, it redirects stdin and -# closes it afterwards, without saving the original file descriptor. -# As a safety measure, use it only where a negative result would be -# fatal anyway. Works if `file' does not exist. -func_lalib_unsafe_p () -{ - lalib_p=no - if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then - for lalib_p_l in 1 2 3 4 - do - read lalib_p_line - case "$lalib_p_line" in - \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; - esac - done - exec 0<&5 5<&- - fi - test "$lalib_p" = yes -} - -# func_ltwrapper_script_p file -# True iff FILE is a libtool wrapper script -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_script_p () -{ - func_lalib_p "$1" -} - -# func_ltwrapper_executable_p file -# True iff FILE is a libtool wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_executable_p () -{ - func_ltwrapper_exec_suffix= - case $1 in - *.exe) ;; - *) func_ltwrapper_exec_suffix=.exe ;; - esac - $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 -} - -# func_ltwrapper_scriptname file -# Assumes file is an ltwrapper_executable -# uses $file to determine the appropriate filename for a -# temporary ltwrapper_script. -func_ltwrapper_scriptname () -{ - func_ltwrapper_scriptname_result="" - if func_ltwrapper_executable_p "$1"; then - func_dirname_and_basename "$1" "" "." - func_stripname '' '.exe' "$func_basename_result" - func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" - fi -} - -# func_ltwrapper_p file -# True iff FILE is a libtool wrapper script or wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_p () -{ - func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" -} - - -# func_execute_cmds commands fail_cmd -# Execute tilde-delimited COMMANDS. -# If FAIL_CMD is given, eval that upon failure. -# FAIL_CMD may read-access the current command in variable CMD! -func_execute_cmds () -{ - $opt_debug - save_ifs=$IFS; IFS='~' - for cmd in $1; do - IFS=$save_ifs - eval cmd=\"$cmd\" - func_show_eval "$cmd" "${2-:}" - done - IFS=$save_ifs -} - - -# func_source file -# Source FILE, adding directory component if necessary. -# Note that it is not necessary on cygwin/mingw to append a dot to -# FILE even if both FILE and FILE.exe exist: automatic-append-.exe -# behavior happens only for exec(3), not for open(2)! Also, sourcing -# `FILE.' does not work on cygwin managed mounts. -func_source () -{ - $opt_debug - case $1 in - */* | *\\*) . "$1" ;; - *) . "./$1" ;; - esac -} - - -# func_infer_tag arg -# Infer tagged configuration to use if any are available and -# if one wasn't chosen via the "--tag" command line option. -# Only attempt this if the compiler in the base compile -# command doesn't match the default compiler. -# arg is usually of the form 'gcc ...' -func_infer_tag () -{ - $opt_debug - if test -n "$available_tags" && test -z "$tagname"; then - CC_quoted= - for arg in $CC; do - func_quote_for_eval "$arg" - CC_quoted="$CC_quoted $func_quote_for_eval_result" - done - case $@ in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" - CC_quoted= - for arg in $CC; do - # Double-quote args containing other shell metacharacters. - func_quote_for_eval "$arg" - CC_quoted="$CC_quoted $func_quote_for_eval_result" - done - case "$@ " in - " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) - # The compiler in the base compile command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - func_echo "unable to infer tagged configuration" - func_fatal_error "specify a tag with \`--tag'" -# else -# func_verbose "using $tagname tagged configuration" - fi - ;; - esac - fi -} - - - -# func_write_libtool_object output_name pic_name nonpic_name -# Create a libtool object file (analogous to a ".la" file), -# but don't create it if we're doing a dry run. -func_write_libtool_object () -{ - write_libobj=${1} - if test "$build_libtool_libs" = yes; then - write_lobj=\'${2}\' - else - write_lobj=none - fi - - if test "$build_old_libs" = yes; then - write_oldobj=\'${3}\' - else - write_oldobj=none - fi - - $opt_dry_run || { - cat >${write_libobj}T <?"'"'"' &()|`$[]' \ - && func_warning "libobj name \`$libobj' may not contain shell special characters." - func_dirname_and_basename "$obj" "/" "" - objname="$func_basename_result" - xdir="$func_dirname_result" - lobj=${xdir}$objdir/$objname - - test -z "$base_compile" && \ - func_fatal_help "you must specify a compilation command" - - # Delete any leftover library objects. - if test "$build_old_libs" = yes; then - removelist="$obj $lobj $libobj ${libobj}T" - else - removelist="$lobj $libobj ${libobj}T" - fi - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in - cygwin* | mingw* | pw32* | os2* | cegcc*) - pic_mode=default - ;; - esac - if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then - # non-PIC code in shared libraries is not supported - pic_mode=default - fi - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test "$compiler_c_o" = no; then - output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} - lockfile="$output_obj.lock" - else - output_obj= - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test "$need_locks" = yes; then - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - elif test "$need_locks" = warn; then - if test -f "$lockfile"; then - $ECHO "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - removelist="$removelist $output_obj" - $ECHO "$srcfile" > "$lockfile" - fi - - $opt_dry_run || $RM $removelist - removelist="$removelist $lockfile" - trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 - - if test -n "$fix_srcfile_path"; then - eval srcfile=\"$fix_srcfile_path\" - fi - func_quote_for_eval "$srcfile" - qsrcfile=$func_quote_for_eval_result - - # Only build a PIC object if we are building libtool libraries. - if test "$build_libtool_libs" = yes; then - # Without this assignment, base_compile gets emptied. - fbsd_hideous_sh_bug=$base_compile - - if test "$pic_mode" != no; then - command="$base_compile $qsrcfile $pic_flag" - else - # Don't build PIC code - command="$base_compile $qsrcfile" - fi - - func_mkdir_p "$xdir$objdir" - - if test -z "$output_obj"; then - # Place PIC objects in $objdir - command="$command -o $lobj" - fi - - func_show_eval_locale "$command" \ - 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed, then go on to compile the next one - if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - func_show_eval '$MV "$output_obj" "$lobj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - - # Allow error messages only from the first compilation. - if test "$suppress_opt" = yes; then - suppress_output=' >/dev/null 2>&1' - fi - fi - - # Only build a position-dependent object if we build old libraries. - if test "$build_old_libs" = yes; then - if test "$pic_mode" != yes; then - # Don't build PIC code - command="$base_compile $qsrcfile$pie_flag" - else - command="$base_compile $qsrcfile $pic_flag" - fi - if test "$compiler_c_o" = yes; then - command="$command -o $obj" - fi - - # Suppress compiler output if we already did a PIC compilation. - command="$command$suppress_output" - func_show_eval_locale "$command" \ - '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed - if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - func_show_eval '$MV "$output_obj" "$obj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - fi - - $opt_dry_run || { - func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" - - # Unlock the critical section if it was locked - if test "$need_locks" != no; then - removelist=$lockfile - $RM "$lockfile" - fi - } - - exit $EXIT_SUCCESS -} - -$opt_help || { -test "$mode" = compile && func_mode_compile ${1+"$@"} -} - -func_mode_help () -{ - # We need to display help for each of the modes. - case $mode in - "") - # Generic help is extracted from the usage comments - # at the start of this file. - func_help - ;; - - clean) - $ECHO \ -"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - - compile) - $ECHO \ -"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -no-suppress do not suppress compiler output for multiple passes - -prefer-pic try to building PIC objects only - -prefer-non-pic try to building non-PIC objects only - -shared do not build a \`.o' file suitable for static linking - -static only build a \`.o' file suitable for static linking - -COMPILE-COMMAND is a command to be used in creating a \`standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." - ;; - - execute) - $ECHO \ -"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to \`-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - - finish) - $ECHO \ -"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." - ;; - - install) - $ECHO \ -"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. - -The following components of INSTALL-COMMAND are treated specially: - - -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - - link) - $ECHO \ -"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects - -precious-files-regex REGEX - don't remove output files matching REGEX - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -shared only do dynamic linking of libtool libraries - -shrext SUFFIX override the standard shared library file extension - -static do not do any dynamic linking of uninstalled libtool libraries - -static-libtool-libs - do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -weak LIBNAME declare that the target provides the LIBNAME interface - -All other options (arguments beginning with \`-') are ignored. - -Every other argument is treated as a filename. Files ending in \`.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. - -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -is created, otherwise an executable program is created." - ;; - - uninstall) - $ECHO \ -"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - - *) - func_fatal_help "invalid operation mode \`$mode'" - ;; - esac - - $ECHO - $ECHO "Try \`$progname --help' for more information about other modes." - - exit $? -} - - # Now that we've collected a possible --mode arg, show help if necessary - $opt_help && func_mode_help - - -# func_mode_execute arg... -func_mode_execute () -{ - $opt_debug - # The first argument is the command name. - cmd="$nonopt" - test -z "$cmd" && \ - func_fatal_help "you must specify a COMMAND" - - # Handle -dlopen flags immediately. - for file in $execute_dlfiles; do - test -f "$file" \ - || func_fatal_help "\`$file' is not a file" - - dir= - case $file in - *.la) - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$lib' is not a valid libtool archive" - - # Read the libtool library. - dlname= - library_names= - func_source "$file" - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && \ - func_warning "\`$file' was not linked with \`-export-dynamic'" - continue - fi - - func_dirname "$file" "" "." - dir="$func_dirname_result" - - if test -f "$dir/$objdir/$dlname"; then - dir="$dir/$objdir" - else - if test ! -f "$dir/$dlname"; then - func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" - fi - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - func_dirname "$file" "" "." - dir="$func_dirname_result" - ;; - - *) - func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic="$magic" - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -*) ;; - *) - # Do a test to see if this is really a libtool program. - if func_ltwrapper_script_p "$file"; then - func_source "$file" - # Transform arg to wrapped name. - file="$progdir/$program" - elif func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - func_source "$func_ltwrapper_scriptname_result" - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - func_quote_for_eval "$file" - args="$args $func_quote_for_eval_result" - done - - if test "X$opt_dry_run" = Xfalse; then - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved environment variables - for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES - do - eval "if test \"\${save_$lt_var+set}\" = set; then - $lt_var=\$save_$lt_var; export $lt_var - else - $lt_unset $lt_var - fi" - done - - # Now prepare to actually exec the command. - exec_cmd="\$cmd$args" - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - $ECHO "export $shlibpath_var" - fi - $ECHO "$cmd$args" - exit $EXIT_SUCCESS - fi -} - -test "$mode" = execute && func_mode_execute ${1+"$@"} - - -# func_mode_finish arg... -func_mode_finish () -{ - $opt_debug - libdirs="$nonopt" - admincmds= - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for dir - do - libdirs="$libdirs $dir" - done - - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - func_execute_cmds "$finish_cmds" 'admincmds="$admincmds -'"$cmd"'"' - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $opt_dry_run || eval "$cmds" || admincmds="$admincmds - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - $opt_silent && exit $EXIT_SUCCESS - - $ECHO "X----------------------------------------------------------------------" | $Xsed - $ECHO "Libraries have been installed in:" - for libdir in $libdirs; do - $ECHO " $libdir" - done - $ECHO - $ECHO "If you ever happen to want to link against installed libraries" - $ECHO "in a given directory, LIBDIR, you must either use libtool, and" - $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" - $ECHO "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" - $ECHO " during execution" - fi - if test -n "$runpath_var"; then - $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" - $ECHO " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - $ECHO " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then - $ECHO " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" - fi - $ECHO - - $ECHO "See any operating system documentation about shared libraries for" - case $host in - solaris2.[6789]|solaris2.1[0-9]) - $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" - $ECHO "pages." - ;; - *) - $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." - ;; - esac - $ECHO "X----------------------------------------------------------------------" | $Xsed - exit $EXIT_SUCCESS -} - -test "$mode" = finish && func_mode_finish ${1+"$@"} - - -# func_mode_install arg... -func_mode_install () -{ - $opt_debug - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || - # Allow the use of GNU shtool's install command. - $ECHO "X$nonopt" | $GREP shtool >/dev/null; then - # Aesthetically quote it. - func_quote_for_eval "$nonopt" - install_prog="$func_quote_for_eval_result " - arg=$1 - shift - else - install_prog= - arg=$nonopt - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - func_quote_for_eval "$arg" - install_prog="$install_prog$func_quote_for_eval_result" - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=no - stripme= - for arg - do - if test -n "$dest"; then - files="$files $dest" - dest=$arg - continue - fi - - case $arg in - -d) isdir=yes ;; - -f) - case " $install_prog " in - *[\\\ /]cp\ *) ;; - *) prev=$arg ;; - esac - ;; - -g | -m | -o) - prev=$arg - ;; - -s) - stripme=" -s" - continue - ;; - -*) - ;; - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - prev= - else - dest=$arg - continue - fi - ;; - esac - - # Aesthetically quote the argument. - func_quote_for_eval "$arg" - install_prog="$install_prog $func_quote_for_eval_result" - done - - test -z "$install_prog" && \ - func_fatal_help "you must specify an install program" - - test -n "$prev" && \ - func_fatal_help "the \`$prev' option requires an argument" - - if test -z "$files"; then - if test -z "$dest"; then - func_fatal_help "no file or destination specified" - else - func_fatal_help "you must specify a destination" - fi - fi - - # Strip any trailing slash from the destination. - func_stripname '' '/' "$dest" - dest=$func_stripname_result - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" - destname= - else - func_dirname_and_basename "$dest" "" "." - destdir="$func_dirname_result" - destname="$func_basename_result" - - # Not a directory, so check to see that there is only one file specified. - set dummy $files; shift - test "$#" -gt 1 && \ - func_fatal_help "\`$dest' is not a directory" - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - func_fatal_help "\`$destdir' must be an absolute directory name" - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - staticlibs="$staticlibs $file" - ;; - - *.la) - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$file' is not a valid libtool archive" - - library_names= - old_library= - relink_command= - func_source "$file" - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) current_libdirs="$current_libdirs $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) future_libdirs="$future_libdirs $libdir" ;; - esac - fi - - func_dirname "$file" "/" "" - dir="$func_dirname_result" - dir="$dir$objdir" - - if test -n "$relink_command"; then - # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` - - # Don't allow the user to place us outside of our expected - # location b/c this prevents finding dependent libraries that - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - test "$inst_prefix_dir" = "$destdir" && \ - func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else - relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` - fi - - func_warning "relinking \`$file'" - func_show_eval "$relink_command" \ - 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' - fi - - # See the names of the shared library. - set dummy $library_names; shift - if test -n "$1"; then - realname="$1" - shift - - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T - - # Install the shared library and build the symlinks. - func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ - 'exit $?' - tstripme="$stripme" - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - case $realname in - *.dll.a) - tstripme="" - ;; - esac - ;; - esac - if test -n "$tstripme" && test -n "$striplib"; then - func_show_eval "$striplib $destdir/$realname" 'exit $?' - fi - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - # Try `ln -sf' first, because the `ln' binary might depend on - # the symlink we replace! Solaris /bin/ln does not understand -f, - # so we also need to try rm && ln -s. - for linkname - do - test "$linkname" != "$realname" \ - && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" - done - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - func_execute_cmds "$postinstall_cmds" 'exit $?' - fi - - # Install the pseudo-library for information purposes. - func_basename "$file" - name="$func_basename_result" - instname="$dir/$name"i - func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' - - # Maybe install the static library, too. - test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - func_lo2o "$destfile" - staticdest=$func_lo2o_result - ;; - *.$objext) - staticdest="$destfile" - destfile= - ;; - *) - func_fatal_help "cannot copy a libtool object to \`$destfile'" - ;; - esac - - # Install the libtool object if requested. - test -n "$destfile" && \ - func_show_eval "$install_prog $file $destfile" 'exit $?' - - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - func_lo2o "$file" - staticobj=$func_lo2o_result - func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' - fi - exit $EXIT_SUCCESS - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext="" - case $file in - *.exe) - if test ! -f "$file"; then - func_stripname '' '.exe' "$file" - file=$func_stripname_result - stripped_ext=".exe" - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin* | *mingw*) - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - wrapper=$func_ltwrapper_scriptname_result - else - func_stripname '' '.exe' "$file" - wrapper=$func_stripname_result - fi - ;; - *) - wrapper=$file - ;; - esac - if func_ltwrapper_script_p "$wrapper"; then - notinst_deplibs= - relink_command= - - func_source "$wrapper" - - # Check the variables that should have been set. - test -z "$generated_by_libtool_version" && \ - func_fatal_error "invalid libtool wrapper script \`$wrapper'" - - finalize=yes - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - func_source "$lib" - fi - libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test - if test -n "$libdir" && test ! -f "$libfile"; then - func_warning "\`$lib' has not been installed in \`$libdir'" - finalize=no - fi - done - - relink_command= - func_source "$wrapper" - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - $opt_dry_run || { - if test "$finalize" = yes; then - tmpdir=`func_mktempdir` - func_basename "$file$stripped_ext" - file="$func_basename_result" - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` - - $opt_silent || { - func_quote_for_expand "$relink_command" - eval "func_echo $func_quote_for_expand_result" - } - if eval "$relink_command"; then : - else - func_error "error: relink \`$file' with the above command before installing it" - $opt_dry_run || ${RM}r "$tmpdir" - continue - fi - file="$outputname" - else - func_warning "cannot relink \`$file'" - fi - } - else - # Install the binary that we compiled earlier. - file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyway - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - func_stripname '' '.exe' "$destfile" - destfile=$func_stripname_result - ;; - esac - ;; - esac - func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' - $opt_dry_run || if test -n "$outputname"; then - ${RM}r "$tmpdir" - fi - ;; - esac - done - - for file in $staticlibs; do - func_basename "$file" - name="$func_basename_result" - - # Set up the ranlib parameters. - oldlib="$destdir/$name" - - func_show_eval "$install_prog \$file \$oldlib" 'exit $?' - - if test -n "$stripme" && test -n "$old_striplib"; then - func_show_eval "$old_striplib $oldlib" 'exit $?' - fi - - # Do each command in the postinstall commands. - func_execute_cmds "$old_postinstall_cmds" 'exit $?' - done - - test -n "$future_libdirs" && \ - func_warning "remember to run \`$progname --finish$future_libdirs'" - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - $opt_dry_run && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi -} - -test "$mode" = install && func_mode_install ${1+"$@"} - - -# func_generate_dlsyms outputname originator pic_p -# Extract symbols from dlprefiles and create ${outputname}S.o with -# a dlpreopen symbol table. -func_generate_dlsyms () -{ - $opt_debug - my_outputname="$1" - my_originator="$2" - my_pic_p="${3-no}" - my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` - my_dlsyms= - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - my_dlsyms="${my_outputname}S.c" - else - func_error "not configured to extract global symbols from dlpreopened files" - fi - fi - - if test -n "$my_dlsyms"; then - case $my_dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${my_outputname}.nm" - - func_show_eval "$RM $nlist ${nlist}S ${nlist}T" - - # Parse the name list into a source file. - func_verbose "creating $output_objdir/$my_dlsyms" - - $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ -/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -/* External symbol declarations for the compiler. */\ -" - - if test "$dlself" = yes; then - func_verbose "generating symbol list for \`$output'" - - $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - for progfile in $progfiles; do - func_verbose "extracting global C symbols from \`$progfile'" - $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $opt_dry_run || { - eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - if test -n "$export_symbols_regex"; then - $opt_dry_run || { - eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols="$output_objdir/$outputname.exp" - $opt_dry_run || { - $RM $export_symbols - eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' - ;; - esac - } - else - $opt_dry_run || { - eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - case $host in - *cygwin | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' - ;; - esac - } - fi - fi - - for dlprefile in $dlprefiles; do - func_verbose "extracting global C symbols from \`$dlprefile'" - func_basename "$dlprefile" - name="$func_basename_result" - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - done - - $opt_dry_run || { - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $MV "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if $GREP -v "^: " < "$nlist" | - if sort -k 3 /dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - $GREP -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' - else - $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" - fi - - $ECHO >> "$output_objdir/$my_dlsyms" "\ - -/* The mapping between symbol names and symbols. */ -typedef struct { - const char *name; - void *address; -} lt_dlsymlist; -" - case $host in - *cygwin* | *mingw* | *cegcc* ) - $ECHO >> "$output_objdir/$my_dlsyms" "\ -/* DATA imports from DLLs on WIN32 con't be const, because - runtime relocations are performed -- see ld's documentation - on pseudo-relocs. */" - lt_dlsym_const= ;; - *osf5*) - echo >> "$output_objdir/$my_dlsyms" "\ -/* This system does not cope well with relocations in const data */" - lt_dlsym_const= ;; - *) - lt_dlsym_const=const ;; - esac - - $ECHO >> "$output_objdir/$my_dlsyms" "\ -extern $lt_dlsym_const lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[]; -$lt_dlsym_const lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[] = -{\ - { \"$my_originator\", (void *) 0 }," - - case $need_lib_prefix in - no) - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - *) - eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - esac - $ECHO >> "$output_objdir/$my_dlsyms" "\ - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_${my_prefix}_LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - } # !$opt_dry_run - - pic_flag_for_symtable= - case "$compile_command " in - *" -static "*) ;; - *) - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; - *-*-hpux*) - pic_flag_for_symtable=" $pic_flag" ;; - *) - if test "X$my_pic_p" != Xno; then - pic_flag_for_symtable=" $pic_flag" - fi - ;; - esac - ;; - esac - symtab_cflags= - for arg in $LTCFLAGS; do - case $arg in - -pie | -fpie | -fPIE) ;; - *) symtab_cflags="$symtab_cflags $arg" ;; - esac - done - - # Now compile the dynamic symbol file. - func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' - - # Clean up the generated files. - func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' - - # Transform the symbol file into the correct name. - symfileobj="$output_objdir/${my_outputname}S.$objext" - case $host in - *cygwin* | *mingw* | *cegcc* ) - if test -f "$output_objdir/$my_outputname.def"; then - compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - else - compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` - fi - ;; - *) - compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` - ;; - esac - ;; - *) - func_fatal_error "unknown suffix for \`$my_dlsyms'" - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` - finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` - fi -} - -# func_win32_libid arg -# return the library type of file 'arg' -# -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -func_win32_libid () -{ - $opt_debug - win32_libid_type="unknown" - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then - win32_nmres=`eval $NM -f posix -A $1 | - $SED -n -e ' - 1,100{ - / I /{ - s,.*,import, - p - q - } - }'` - case $win32_nmres in - import*) win32_libid_type="x86 archive import";; - *) win32_libid_type="x86 archive static";; - esac - fi - ;; - *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" - ;; - esac - ;; - esac - $ECHO "$win32_libid_type" -} - - - -# func_extract_an_archive dir oldlib -func_extract_an_archive () -{ - $opt_debug - f_ex_an_ar_dir="$1"; shift - f_ex_an_ar_oldlib="$1" - func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' - if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then - : - else - func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" - fi -} - - -# func_extract_archives gentop oldlib ... -func_extract_archives () -{ - $opt_debug - my_gentop="$1"; shift - my_oldlibs=${1+"$@"} - my_oldobjs="" - my_xlib="" - my_xabs="" - my_xdir="" - - for my_xlib in $my_oldlibs; do - # Extract the objects. - case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; - *) my_xabs=`pwd`"/$my_xlib" ;; - esac - func_basename "$my_xlib" - my_xlib="$func_basename_result" - my_xlib_u=$my_xlib - while :; do - case " $extracted_archives " in - *" $my_xlib_u "*) - func_arith $extracted_serial + 1 - extracted_serial=$func_arith_result - my_xlib_u=lt$extracted_serial-$my_xlib ;; - *) break ;; - esac - done - extracted_archives="$extracted_archives $my_xlib_u" - my_xdir="$my_gentop/$my_xlib_u" - - func_mkdir_p "$my_xdir" - - case $host in - *-darwin*) - func_verbose "Extracting $my_xabs" - # Do not bother doing anything if just a dry run - $opt_dry_run || { - darwin_orig_dir=`pwd` - cd $my_xdir || exit $? - darwin_archive=$my_xabs - darwin_curdir=`pwd` - darwin_base_archive=`basename "$darwin_archive"` - darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` - if test -n "$darwin_arches"; then - darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` - darwin_arch= - func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches ; do - func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" - $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" - cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" - func_extract_an_archive "`pwd`" "${darwin_base_archive}" - cd "$darwin_curdir" - $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" - done # $darwin_arches - ## Okay now we've a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` - $LIPO -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - $RM -rf unfat-$$ - cd "$darwin_orig_dir" - else - cd $darwin_orig_dir - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - } # !$opt_dry_run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` - done - - func_extract_archives_result="$my_oldobjs" -} - - - -# func_emit_wrapper_part1 [arg=no] -# -# Emit the first part of a libtool wrapper script on stdout. -# For more information, see the description associated with -# func_emit_wrapper(), below. -func_emit_wrapper_part1 () -{ - func_emit_wrapper_part1_arg1=no - if test -n "$1" ; then - func_emit_wrapper_part1_arg1=$1 - fi - - $ECHO "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='${SED} -e 1s/^X//' -sed_quote_subst='$sed_quote_subst' - -# Be Bourne compatible -if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variables: - generated_by_libtool_version='$macro_version' - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$ECHO are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - ECHO=\"$qecho\" - file=\"\$0\" - # Make sure echo works. - if test \"X\$1\" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift - elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then - # Yippee, \$ECHO works! - : - else - # Restart under the correct shell, and then maybe \$ECHO will work. - exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} - fi - fi\ -" - $ECHO "\ - - # Find the directory that this script lives in. - thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` - done -" -} -# end: func_emit_wrapper_part1 - -# func_emit_wrapper_part2 [arg=no] -# -# Emit the second part of a libtool wrapper script on stdout. -# For more information, see the description associated with -# func_emit_wrapper(), below. -func_emit_wrapper_part2 () -{ - func_emit_wrapper_part2_arg1=no - if test -n "$1" ; then - func_emit_wrapper_part2_arg1=$1 - fi - - $ECHO "\ - - # Usually 'no', except on cygwin/mingw when embedded into - # the cwrapper. - WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 - if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then - # special case for '.' - if test \"\$thisdir\" = \".\"; then - thisdir=\`pwd\` - fi - # remove .libs from thisdir - case \"\$thisdir\" in - *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; - $objdir ) thisdir=. ;; - esac - fi - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test "$fast_install" = yes; then - $ECHO "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $MKDIR \"\$progdir\" - else - $RM \"\$progdir/\$file\" - fi" - - $ECHO "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - $ECHO \"\$relink_command_output\" >&2 - $RM \"\$progdir/\$file\" - exit 1 - fi - fi - - $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $RM \"\$progdir/\$program\"; - $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $RM \"\$progdir/\$file\" - fi" - else - $ECHO "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $ECHO "\ - - if test -f \"\$progdir/\$program\"; then" - - # Export our shlibpath_var if we have one. - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $ECHO "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` - - export $shlibpath_var -" - fi - - # fixup the dll searchpath if we need to. - if test -n "$dllsearchpath"; then - $ECHO "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - - $ECHO "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2* | *-cegcc*) - $ECHO "\ - exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -" - ;; - - *) - $ECHO "\ - exec \"\$progdir/\$program\" \${1+\"\$@\"} -" - ;; - esac - $ECHO "\ - \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 - exit 1 - fi - else - # The program doesn't exist. - \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 - \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 - $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 - exit 1 - fi -fi\ -" -} -# end: func_emit_wrapper_part2 - - -# func_emit_wrapper [arg=no] -# -# Emit a libtool wrapper script on stdout. -# Don't directly open a file because we may want to -# incorporate the script contents within a cygwin/mingw -# wrapper executable. Must ONLY be called from within -# func_mode_link because it depends on a number of variables -# set therein. -# -# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR -# variable will take. If 'yes', then the emitted script -# will assume that the directory in which it is stored is -# the $objdir directory. This is a cygwin/mingw-specific -# behavior. -func_emit_wrapper () -{ - func_emit_wrapper_arg1=no - if test -n "$1" ; then - func_emit_wrapper_arg1=$1 - fi - - # split this up so that func_emit_cwrapperexe_src - # can call each part independently. - func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" - func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" -} - - -# func_to_host_path arg -# -# Convert paths to host format when used with build tools. -# Intended for use with "native" mingw (where libtool itself -# is running under the msys shell), or in the following cross- -# build environments: -# $build $host -# mingw (msys) mingw [e.g. native] -# cygwin mingw -# *nix + wine mingw -# where wine is equipped with the `winepath' executable. -# In the native mingw case, the (msys) shell automatically -# converts paths for any non-msys applications it launches, -# but that facility isn't available from inside the cwrapper. -# Similar accommodations are necessary for $host mingw and -# $build cygwin. Calling this function does no harm for other -# $host/$build combinations not listed above. -# -# ARG is the path (on $build) that should be converted to -# the proper representation for $host. The result is stored -# in $func_to_host_path_result. -func_to_host_path () -{ - func_to_host_path_result="$1" - if test -n "$1" ; then - case $host in - *mingw* ) - lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - case $build in - *mingw* ) # actually, msys - # awkward: cmd appends spaces to result - lt_sed_strip_trailing_spaces="s/[ ]*\$//" - func_to_host_path_tmp1=`( cmd //c echo "$1" |\ - $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` - func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ - $SED -e "$lt_sed_naive_backslashify"` - ;; - *cygwin* ) - func_to_host_path_tmp1=`cygpath -w "$1"` - func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ - $SED -e "$lt_sed_naive_backslashify"` - ;; - * ) - # Unfortunately, winepath does not exit with a non-zero - # error code, so we are forced to check the contents of - # stdout. On the other hand, if the command is not - # found, the shell will set an exit code of 127 and print - # *an error message* to stdout. So we must check for both - # error code of zero AND non-empty stdout, which explains - # the odd construction: - func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` - if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then - func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ - $SED -e "$lt_sed_naive_backslashify"` - else - # Allow warning below. - func_to_host_path_result="" - fi - ;; - esac - if test -z "$func_to_host_path_result" ; then - func_error "Could not determine host path corresponding to" - func_error " '$1'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback: - func_to_host_path_result="$1" - fi - ;; - esac - fi -} -# end: func_to_host_path - -# func_to_host_pathlist arg -# -# Convert pathlists to host format when used with build tools. -# See func_to_host_path(), above. This function supports the -# following $build/$host combinations (but does no harm for -# combinations not listed here): -# $build $host -# mingw (msys) mingw [e.g. native] -# cygwin mingw -# *nix + wine mingw -# -# Path separators are also converted from $build format to -# $host format. If ARG begins or ends with a path separator -# character, it is preserved (but converted to $host format) -# on output. -# -# ARG is a pathlist (on $build) that should be converted to -# the proper representation on $host. The result is stored -# in $func_to_host_pathlist_result. -func_to_host_pathlist () -{ - func_to_host_pathlist_result="$1" - if test -n "$1" ; then - case $host in - *mingw* ) - lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - # Remove leading and trailing path separator characters from - # ARG. msys behavior is inconsistent here, cygpath turns them - # into '.;' and ';.', and winepath ignores them completely. - func_to_host_pathlist_tmp2="$1" - # Once set for this call, this variable should not be - # reassigned. It is used in tha fallback case. - func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ - $SED -e 's|^:*||' -e 's|:*$||'` - case $build in - *mingw* ) # Actually, msys. - # Awkward: cmd appends spaces to result. - lt_sed_strip_trailing_spaces="s/[ ]*\$//" - func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ - $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` - func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ - $SED -e "$lt_sed_naive_backslashify"` - ;; - *cygwin* ) - func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` - func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ - $SED -e "$lt_sed_naive_backslashify"` - ;; - * ) - # unfortunately, winepath doesn't convert pathlists - func_to_host_pathlist_result="" - func_to_host_pathlist_oldIFS=$IFS - IFS=: - for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do - IFS=$func_to_host_pathlist_oldIFS - if test -n "$func_to_host_pathlist_f" ; then - func_to_host_path "$func_to_host_pathlist_f" - if test -n "$func_to_host_path_result" ; then - if test -z "$func_to_host_pathlist_result" ; then - func_to_host_pathlist_result="$func_to_host_path_result" - else - func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" - fi - fi - fi - IFS=: - done - IFS=$func_to_host_pathlist_oldIFS - ;; - esac - if test -z "$func_to_host_pathlist_result" ; then - func_error "Could not determine the host path(s) corresponding to" - func_error " '$1'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback. This may break if $1 contains DOS-style drive - # specifications. The fix is not to complicate the expression - # below, but for the user to provide a working wine installation - # with winepath so that path translation in the cross-to-mingw - # case works properly. - lt_replace_pathsep_nix_to_dos="s|:|;|g" - func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ - $SED -e "$lt_replace_pathsep_nix_to_dos"` - fi - # Now, add the leading and trailing path separators back - case "$1" in - :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" - ;; - esac - case "$1" in - *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" - ;; - esac - ;; - esac - fi -} -# end: func_to_host_pathlist - -# func_emit_cwrapperexe_src -# emit the source code for a wrapper executable on stdout -# Must ONLY be called from within func_mode_link because -# it depends on a number of variable set therein. -func_emit_cwrapperexe_src () -{ - cat < -#include -#ifdef _MSC_VER -# include -# include -# include -# define setmode _setmode -#else -# include -# include -# ifdef __CYGWIN__ -# include -# define HAVE_SETENV -# ifdef __STRICT_ANSI__ -char *realpath (const char *, char *); -int putenv (char *); -int setenv (const char *, const char *, int); -# endif -# endif -#endif -#include -#include -#include -#include -#include -#include -#include -#include - -#if defined(PATH_MAX) -# define LT_PATHMAX PATH_MAX -#elif defined(MAXPATHLEN) -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef S_IXOTH -# define S_IXOTH 0 -#endif -#ifndef S_IXGRP -# define S_IXGRP 0 -#endif - -#ifdef _MSC_VER -# define S_IXUSR _S_IEXEC -# define stat _stat -# ifndef _INTPTR_T_DEFINED -# define intptr_t int -# endif -#endif - -#ifndef DIR_SEPARATOR -# define DIR_SEPARATOR '/' -# define PATH_SEPARATOR ':' -#endif - -#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) -# define HAVE_DOS_BASED_FILE_SYSTEM -# define FOPEN_WB "wb" -# ifndef DIR_SEPARATOR_2 -# define DIR_SEPARATOR_2 '\\' -# endif -# ifndef PATH_SEPARATOR_2 -# define PATH_SEPARATOR_2 ';' -# endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#ifdef __CYGWIN__ -# define FOPEN_WB "wb" -#endif - -#ifndef FOPEN_WB -# define FOPEN_WB "w" -#endif -#ifndef _O_BINARY -# define _O_BINARY 0 -#endif - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ -} while (0) - -#undef LTWRAPPER_DEBUGPRINTF -#if defined DEBUGWRAPPER -# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args -static void -ltwrapper_debugprintf (const char *fmt, ...) -{ - va_list args; - va_start (args, fmt); - (void) vfprintf (stderr, fmt, args); - va_end (args); -} -#else -# define LTWRAPPER_DEBUGPRINTF(args) -#endif - -const char *program_name = NULL; - -void *xmalloc (size_t num); -char *xstrdup (const char *string); -const char *base_name (const char *name); -char *find_executable (const char *wrapper); -char *chase_symlinks (const char *pathspec); -int make_executable (const char *path); -int check_executable (const char *path); -char *strendzap (char *str, const char *pat); -void lt_fatal (const char *message, ...); -void lt_setenv (const char *name, const char *value); -char *lt_extend_str (const char *orig_value, const char *add, int to_end); -void lt_opt_process_env_set (const char *arg); -void lt_opt_process_env_prepend (const char *arg); -void lt_opt_process_env_append (const char *arg); -int lt_split_name_value (const char *arg, char** name, char** value); -void lt_update_exe_path (const char *name, const char *value); -void lt_update_lib_path (const char *name, const char *value); - -static const char *script_text_part1 = -EOF - - func_emit_wrapper_part1 yes | - $SED -e 's/\([\\"]\)/\\\1/g' \ - -e 's/^/ "/' -e 's/$/\\n"/' - echo ";" - cat <"))); - for (i = 0; i < newargc; i++) - { - LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : ""))); - } - -EOF - - case $host_os in - mingw*) - cat <<"EOF" - /* execv doesn't actually work on mingw as expected on unix */ - rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); - if (rval == -1) - { - /* failed to start process */ - LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); - return 127; - } - return rval; -EOF - ;; - *) - cat <<"EOF" - execv (lt_argv_zero, newargz); - return rval; /* =127, but avoids unused variable warning */ -EOF - ;; - esac - - cat <<"EOF" -} - -void * -xmalloc (size_t num) -{ - void *p = (void *) malloc (num); - if (!p) - lt_fatal ("Memory exhausted"); - - return p; -} - -char * -xstrdup (const char *string) -{ - return string ? strcpy ((char *) xmalloc (strlen (string) + 1), - string) : NULL; -} - -const char * -base_name (const char *name) -{ - const char *base; - -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - /* Skip over the disk name in MSDOS pathnames. */ - if (isalpha ((unsigned char) name[0]) && name[1] == ':') - name += 2; -#endif - - for (base = name; *name; name++) - if (IS_DIR_SEPARATOR (*name)) - base = name + 1; - return base; -} - -int -check_executable (const char *path) -{ - struct stat st; - - LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", - path ? (*path ? path : "EMPTY!") : "NULL!")); - if ((!path) || (!*path)) - return 0; - - if ((stat (path, &st) >= 0) - && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) - return 1; - else - return 0; -} - -int -make_executable (const char *path) -{ - int rval = 0; - struct stat st; - - LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", - path ? (*path ? path : "EMPTY!") : "NULL!")); - if ((!path) || (!*path)) - return 0; - - if (stat (path, &st) >= 0) - { - rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); - } - return rval; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise - Does not chase symlinks, even on platforms that support them. -*/ -char * -find_executable (const char *wrapper) -{ - int has_slash = 0; - const char *p; - const char *p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - int tmp_len; - char *concat_name; - - LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", - wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char *path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char *q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR (*q)) - break; - p_len = q - p; - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal ("getcwd failed"); - tmp_len = strlen (tmp); - concat_name = - XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = - XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal ("getcwd failed"); - tmp_len = strlen (tmp); - concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - return NULL; -} - -char * -chase_symlinks (const char *pathspec) -{ -#ifndef S_ISLNK - return xstrdup (pathspec); -#else - char buf[LT_PATHMAX]; - struct stat s; - char *tmp_pathspec = xstrdup (pathspec); - char *p; - int has_symlinks = 0; - while (strlen (tmp_pathspec) && !has_symlinks) - { - LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", - tmp_pathspec)); - if (lstat (tmp_pathspec, &s) == 0) - { - if (S_ISLNK (s.st_mode) != 0) - { - has_symlinks = 1; - break; - } - - /* search backwards for last DIR_SEPARATOR */ - p = tmp_pathspec + strlen (tmp_pathspec) - 1; - while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - p--; - if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - { - /* no more DIR_SEPARATORS left */ - break; - } - *p = '\0'; - } - else - { - char *errstr = strerror (errno); - lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); - } - } - XFREE (tmp_pathspec); - - if (!has_symlinks) - { - return xstrdup (pathspec); - } - - tmp_pathspec = realpath (pathspec, buf); - if (tmp_pathspec == 0) - { - lt_fatal ("Could not follow symlinks for %s", pathspec); - } - return xstrdup (tmp_pathspec); -#endif -} - -char * -strendzap (char *str, const char *pat) -{ - size_t len, patlen; - - assert (str != NULL); - assert (pat != NULL); - - len = strlen (str); - patlen = strlen (pat); - - if (patlen <= len) - { - str += len - patlen; - if (strcmp (str, pat) == 0) - *str = '\0'; - } - return str; -} - -static void -lt_error_core (int exit_status, const char *mode, - const char *message, va_list ap) -{ - fprintf (stderr, "%s: %s: ", program_name, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, "FATAL", message, ap); - va_end (ap); -} - -void -lt_setenv (const char *name, const char *value) -{ - LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", - (name ? name : ""), - (value ? value : ""))); - { -#ifdef HAVE_SETENV - /* always make a copy, for consistency with !HAVE_SETENV */ - char *str = xstrdup (value); - setenv (name, str, 1); -#else - int len = strlen (name) + 1 + strlen (value) + 1; - char *str = XMALLOC (char, len); - sprintf (str, "%s=%s", name, value); - if (putenv (str) != EXIT_SUCCESS) - { - XFREE (str); - } -#endif - } -} - -char * -lt_extend_str (const char *orig_value, const char *add, int to_end) -{ - char *new_value; - if (orig_value && *orig_value) - { - int orig_value_len = strlen (orig_value); - int add_len = strlen (add); - new_value = XMALLOC (char, add_len + orig_value_len + 1); - if (to_end) - { - strcpy (new_value, orig_value); - strcpy (new_value + orig_value_len, add); - } - else - { - strcpy (new_value, add); - strcpy (new_value + add_len, orig_value); - } - } - else - { - new_value = xstrdup (add); - } - return new_value; -} - -int -lt_split_name_value (const char *arg, char** name, char** value) -{ - const char *p; - int len; - if (!arg || !*arg) - return 1; - - p = strchr (arg, (int)'='); - - if (!p) - return 1; - - *value = xstrdup (++p); - - len = strlen (arg) - strlen (*value); - *name = XMALLOC (char, len); - strncpy (*name, arg, len-1); - (*name)[len - 1] = '\0'; - - return 0; -} - -void -lt_opt_process_env_set (const char *arg) -{ - char *name = NULL; - char *value = NULL; - - if (lt_split_name_value (arg, &name, &value) != 0) - { - XFREE (name); - XFREE (value); - lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); - } - - lt_setenv (name, value); - XFREE (name); - XFREE (value); -} - -void -lt_opt_process_env_prepend (const char *arg) -{ - char *name = NULL; - char *value = NULL; - char *new_value = NULL; - - if (lt_split_name_value (arg, &name, &value) != 0) - { - XFREE (name); - XFREE (value); - lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); - } - - new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_value); - XFREE (name); - XFREE (value); -} - -void -lt_opt_process_env_append (const char *arg) -{ - char *name = NULL; - char *value = NULL; - char *new_value = NULL; - - if (lt_split_name_value (arg, &name, &value) != 0) - { - XFREE (name); - XFREE (value); - lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); - } - - new_value = lt_extend_str (getenv (name), value, 1); - lt_setenv (name, new_value); - XFREE (new_value); - XFREE (name); - XFREE (value); -} - -void -lt_update_exe_path (const char *name, const char *value) -{ - LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", - (name ? name : ""), - (value ? value : ""))); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - /* some systems can't cope with a ':'-terminated path #' */ - int len = strlen (new_value); - while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) - { - new_value[len-1] = '\0'; - } - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -void -lt_update_lib_path (const char *name, const char *value) -{ - LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", - (name ? name : ""), - (value ? value : ""))); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_value); - } -} - - -EOF -} -# end: func_emit_cwrapperexe_src - -# func_mode_link arg... -func_mode_link () -{ - $opt_debug - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - # It is impossible to link a dll without this setting, and - # we shouldn't force the makefile maintainer to figure out - # which system we are compiling for in order to pass an extra - # flag for every libtool invocation. - # allow_undefined=no - - # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll which has undefined symbols, in which case not - # even a static library is built. For now, we need to specify - # -no-undefined on the libtool link line when we can be certain - # that all symbols are satisfied, otherwise we get a static library. - allow_undefined=yes - ;; - *) - allow_undefined=yes - ;; - esac - libtool_args=$nonopt - base_compile="$nonopt $@" - compile_command=$nonopt - finalize_command=$nonopt - - compile_rpath= - finalize_rpath= - compile_shlibpath= - finalize_shlibpath= - convenience= - old_convenience= - deplibs= - old_deplibs= - compiler_flags= - linker_flags= - dllsearchpath= - lib_search_path=`pwd` - inst_prefix_dir= - new_inherited_linker_flags= - - avoid_version=no - dlfiles= - dlprefiles= - dlself=no - export_dynamic=no - export_symbols= - export_symbols_regex= - generated= - libobjs= - ltlibs= - module=no - no_install=no - objs= - non_pic_objects= - precious_files_regex= - prefer_static_libs=no - preload=no - prev= - prevarg= - release= - rpath= - xrpath= - perm_rpath= - temp_rpath= - thread_safe=no - vinfo= - vinfo_number=no - weak_libs= - single_module="${wl}-single_module" - func_infer_tag $base_compile - - # We need to know -static, to get the right output filenames. - for arg - do - case $arg in - -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" - build_old_libs=no - break - ;; - -all-static | -static | -static-libtool-libs) - case $arg in - -all-static) - if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then - func_warning "complete static linking is impossible in this configuration" - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - -static) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=built - ;; - -static-libtool-libs) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - esac - build_libtool_libs=no - build_old_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg="$1" - shift - func_quote_for_eval "$arg" - qarg=$func_quote_for_eval_unquoted_result - func_append libtool_args " $func_quote_for_eval_result" - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - func_append compile_command " @OUTPUT@" - func_append finalize_command " @OUTPUT@" - ;; - esac - - case $prev in - dlfiles|dlprefiles) - if test "$preload" = no; then - # Add the symbol object into the linking commands. - func_append compile_command " @SYMFILE@" - func_append finalize_command " @SYMFILE@" - preload=yes - fi - case $arg in - *.la | *.lo) ;; # We handle these cases below. - force) - if test "$dlself" = no; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test "$prev" = dlprefiles; then - dlself=yes - elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" - else - dlprefiles="$dlprefiles $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols="$arg" - test -f "$arg" \ - || func_fatal_error "symbol file \`$arg' does not exist" - prev= - continue - ;; - expsyms_regex) - export_symbols_regex="$arg" - prev= - continue - ;; - framework) - case $host in - *-*-darwin*) - case "$deplibs " in - *" $qarg.ltframework "*) ;; - *) deplibs="$deplibs $qarg.ltframework" # this is fixed later - ;; - esac - ;; - esac - prev= - continue - ;; - inst_prefix) - inst_prefix_dir="$arg" - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat "$save_arg"` - do -# moreargs="$moreargs $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - done - else - func_fatal_error "link input file \`$arg' does not exist" - fi - arg=$save_arg - prev= - continue - ;; - precious_regex) - precious_files_regex="$arg" - prev= - continue - ;; - release) - release="-$arg" - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - if test "$prev" = rpath; then - case "$rpath " in - *" $arg "*) ;; - *) rpath="$rpath $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) xrpath="$xrpath $arg" ;; - esac - fi - prev= - continue - ;; - shrext) - shrext_cmds="$arg" - prev= - continue - ;; - weak) - weak_libs="$weak_libs $arg" - prev= - continue - ;; - xcclinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xcompiler) - compiler_flags="$compiler_flags $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xlinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $wl$qarg" - prev= - func_append compile_command " $wl$qarg" - func_append finalize_command " $wl$qarg" - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi # test -n "$prev" - - prevarg="$arg" - - case $arg in - -all-static) - if test -n "$link_static_flag"; then - # See comment for -static flag below, for more details. - func_append compile_command " $link_static_flag" - func_append finalize_command " $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - func_fatal_error "\`-allow-undefined' must not be used because it is the default" - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - func_fatal_error "more than one -exported-symbols argument is not allowed" - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -framework) - prev=framework - continue - ;; - - -inst-prefix-dir) - prev=inst_prefix - continue - ;; - - # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* - # so, if we see these flags be careful not to treat them like -L - -L[A-Z][A-Z]*:*) - case $with_gcc/$host in - no/*-*-irix* | /*-*-irix*) - func_append compile_command " $arg" - func_append finalize_command " $arg" - ;; - esac - continue - ;; - - -L*) - func_stripname '-L' '' "$arg" - dir=$func_stripname_result - if test -z "$dir"; then - if test "$#" -gt 0; then - func_fatal_error "require no space between \`-L' and \`$1'" - else - func_fatal_error "need path for \`-L' option" - fi - fi - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - test -z "$absdir" && \ - func_fatal_error "cannot determine absolute directory name of \`$dir'" - dir="$absdir" - ;; - esac - case "$deplibs " in - *" -L$dir "*) ;; - *) - deplibs="$deplibs -L$dir" - lib_search_path="$lib_search_path $dir" - ;; - esac - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$dir:"*) ;; - ::) dllsearchpath=$dir;; - *) dllsearchpath="$dllsearchpath:$dir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) dllsearchpath="$dllsearchpath:$testbindir";; - esac - ;; - esac - continue - ;; - - -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-os2*) - # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework - deplibs="$deplibs System.ltframework" - continue - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - test "X$arg" = "X-lc" && continue - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - test "X$arg" = "X-lc" && continue - ;; - esac - elif test "X$arg" = "X-lc_r"; then - case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - deplibs="$deplibs $arg" - continue - ;; - - -module) - module=yes - continue - ;; - - # Tru64 UNIX uses -model [arg] to determine the layout of C++ - # classes, name mangling, and exception handling. - # Darwin uses the -arch flag to determine output architecture. - -model|-arch|-isysroot) - compiler_flags="$compiler_flags $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - prev=xcompiler - continue - ;; - - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) - compiler_flags="$compiler_flags $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - case "$new_inherited_linker_flags " in - *" $arg "*) ;; - * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; - esac - continue - ;; - - -multi_module) - single_module="${wl}-multi_module" - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) - # The PATH hackery in wrapper scripts is required on Windows - # and Darwin in order for the loader to find any dlls it needs. - func_warning "\`-no-install' is ignored for $host" - func_warning "assuming \`-no-fast-install' instead" - fast_install=no - ;; - *) no_install=yes ;; - esac - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -objectlist) - prev=objectlist - continue - ;; - - -o) prev=output ;; - - -precious-files-regex) - prev=precious_regex - continue - ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - func_stripname '-R' '' "$arg" - dir=$func_stripname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - continue - ;; - - -shared) - # The effects of -shared are defined in a previous loop. - continue - ;; - - -shrext) - prev=shrext - continue - ;; - - -static | -static-libtool-libs) - # The effects of -static are defined in a previous loop. - # We used to do the same as -all-static on platforms that - # didn't have a PIC flag, but the assumption that the effects - # would be equivalent was wrong. It would break on at least - # Digital Unix and AIX. - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - - -version-number) - prev=vinfo - vinfo_number=yes - continue - ;; - - -weak) - prev=weak - continue - ;; - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - arg="$arg $wl$func_quote_for_eval_result" - compiler_flags="$compiler_flags $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Wl,*) - func_stripname '-Wl,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - arg="$arg $wl$func_quote_for_eval_result" - compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" - linker_flags="$linker_flags $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Xcompiler) - prev=xcompiler - continue - ;; - - -Xlinker) - prev=xlinker - continue - ;; - - -XCClinker) - prev=xcclinker - continue - ;; - - # -msg_* for osf cc - -msg_*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - # -64, -mips[0-9] enable 64-bit mode on the SGI compiler - # -r[0-9][0-9]* specifies the processor on the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler - # +DA*, +DD* enable 64-bit mode on the HP compiler - # -q* pass through compiler args for the IBM compiler - # -m*, -t[45]*, -txscale* pass through architecture-specific - # compiler args for GCC - # -F/path gives path to uninstalled frameworks, gcc on darwin - # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC - # @file GCC response files - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - func_append compile_command " $arg" - func_append finalize_command " $arg" - compiler_flags="$compiler_flags $arg" - continue - ;; - - # Some other compiler flag. - -* | +*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - *.$objext) - # A standard object. - objs="$objs $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - ;; - - *.$libext) - # An archive. - deplibs="$deplibs $arg" - old_deplibs="$old_deplibs $arg" - continue - ;; - - *.la) - # A libtool-controlled library. - - if test "$prev" = dlfiles; then - # This library was specified with -dlopen. - dlfiles="$dlfiles $arg" - prev= - elif test "$prev" = dlprefiles; then - # The library was specified with -dlpreopen. - dlprefiles="$dlprefiles $arg" - prev= - else - deplibs="$deplibs $arg" - fi - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - esac # arg - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - done # argument parsing loop - - test -n "$prev" && \ - func_fatal_help "the \`$prevarg' option requires an argument" - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - func_basename "$output" - outputname="$func_basename_result" - libobjs_save="$libobjs" - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` - else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - - func_dirname "$output" "/" "" - output_objdir="$func_dirname_result$objdir" - # Create the object directory. - func_mkdir_p "$output_objdir" - - # Determine the type of output - case $output in - "") - func_fatal_help "you must specify an output file" - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - esac - - specialdeplibs= - - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do - if $opt_duplicate_deps ; then - case "$libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - libs="$libs $deplib" - done - - if test "$linkmode" = lib; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" - - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if $opt_duplicate_compiler_generated_deps; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; - esac - pre_post_deps="$pre_post_deps $pre_post_dep" - done - fi - pre_post_deps= - fi - - deplibs= - newdependency_libs= - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries - notinst_path= # paths that contain not-installed libtool libraries - - case $linkmode in - lib) - passes="conv dlpreopen link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" - ;; - esac - done - ;; - prog) - compile_deplibs= - finalize_deplibs= - alldeplibs=no - newdlfiles= - newdlprefiles= - passes="conv scan dlopen dlpreopen link" - ;; - *) passes="conv" - ;; - esac - - for pass in $passes; do - # The preopen pass in lib mode reverses $deplibs; put it back here - # so that -L comes before libs that need it for instance... - if test "$linkmode,$pass" = "lib,link"; then - ## FIXME: Find the place where the list is rebuilt in the wrong - ## order, and fix it there properly - tmp_deplibs= - for deplib in $deplibs; do - tmp_deplibs="$deplib $tmp_deplibs" - done - deplibs="$tmp_deplibs" - fi - - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan"; then - libs="$deplibs" - deplibs= - fi - if test "$linkmode" = prog; then - case $pass in - dlopen) libs="$dlfiles" ;; - dlpreopen) libs="$dlprefiles" ;; - link) - libs="$deplibs %DEPLIBS%" - test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" - ;; - esac - fi - if test "$linkmode,$pass" = "lib,dlpreopen"; then - # Collect and forward deplibs of preopened libtool libs - for lib in $dlprefiles; do - # Ignore non-libtool-libs - dependency_libs= - case $lib in - *.la) func_source "$lib" ;; - esac - - # Collect preopened libtool deplibs, except any this library - # has declared as weak libs - for deplib in $dependency_libs; do - deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` - case " $weak_libs " in - *" $deplib_base "*) ;; - *) deplibs="$deplibs $deplib" ;; - esac - done - done - libs="$dlprefiles" - fi - if test "$pass" = dlopen; then - # Collect dlpreopened libraries - save_deplibs="$deplibs" - deplibs= - fi - - for deplib in $libs; do - lib= - found=no - case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - compiler_flags="$compiler_flags $deplib" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; - esac - fi - fi - continue - ;; - -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - func_warning "\`-l' is ignored for archives/objects" - continue - fi - func_stripname '-l' '' "$deplib" - name=$func_stripname_result - if test "$linkmode" = lib; then - searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" - else - searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" - fi - for searchdir in $searchdirs; do - for search_ext in .la $std_shrext .so .a; do - # Search the libtool library - lib="$searchdir/lib${name}${search_ext}" - if test -f "$lib"; then - if test "$search_ext" = ".la"; then - found=yes - else - found=no - fi - break 2 - fi - done - done - if test "$found" != yes; then - # deplib doesn't seem to be a libtool library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - else # deplib is a libtool library - # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, - # We need to do some special things here, and not later. - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $deplib "*) - if func_lalib_p "$lib"; then - library_names= - old_library= - func_source "$lib" - for l in $old_library $library_names; do - ll="$l" - done - if test "X$ll" = "X$old_library" ; then # only static version available - found=no - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - lib=$ladir/$old_library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - fi - ;; - *) ;; - esac - fi - fi - ;; # -l - *.ltframework) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; - esac - fi - fi - continue - ;; - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test "$pass" = conv && continue - newdependency_libs="$deplib $newdependency_libs" - func_stripname '-L' '' "$deplib" - newlib_search_path="$newlib_search_path $func_stripname_result" - ;; - prog) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - if test "$pass" = scan; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - func_stripname '-L' '' "$deplib" - newlib_search_path="$newlib_search_path $func_stripname_result" - ;; - *) - func_warning "\`-L' is ignored for archives/objects" - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test "$pass" = link; then - func_stripname '-R' '' "$deplib" - dir=$func_stripname_result - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; - *.la) lib="$deplib" ;; - *.$libext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - # Linking convenience modules into shared libraries is allowed, - # but linking other static libraries is non-portable. - case " $dlpreconveniencelibs " in - *" $deplib "*) ;; - *) - valid_a_lib=no - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=yes - fi - ;; - pass_all) - valid_a_lib=yes - ;; - esac - if test "$valid_a_lib" != yes; then - $ECHO - $ECHO "*** Warning: Trying to link with static lib archive $deplib." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have" - $ECHO "*** because the file extensions .$libext of this argument makes me believe" - $ECHO "*** that it is just a static archive that I should not use here." - else - $ECHO - $ECHO "*** Warning: Linking the shared library $output against the" - $ECHO "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - fi - ;; - esac - continue - ;; - prog) - if test "$pass" != link; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - continue - ;; - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - elif test "$linkmode" = prog; then - if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then - # If there is no dlopen support or we're linking statically, - # we need to preload. - newdlprefiles="$newdlprefiles $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - newdlfiles="$newdlfiles $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=yes - continue - ;; - esac # case $deplib - - if test "$found" = yes || test -f "$lib"; then : - else - func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" - fi - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$lib" \ - || func_fatal_error "\`$lib' is not a valid libtool archive" - - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - inherited_linker_flags= - # If the library was installed with an old release of libtool, - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no - avoidtemprpath= - - - # Read the .la file - func_source "$lib" - - # Convert "-framework foo" to "foo.ltframework" - if test -n "$inherited_linker_flags"; then - tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` - for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do - case " $new_inherited_linker_flags " in - *" $tmp_inherited_linker_flag "*) ;; - *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; - esac - done - fi - dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || - { test "$linkmode" != prog && test "$linkmode" != lib; }; then - test -n "$dlopen" && dlfiles="$dlfiles $dlopen" - test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" - fi - - if test "$pass" = conv; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - # It is a libtool convenience library, so add in its objects. - convenience="$convenience $ladir/$objdir/$old_library" - old_convenience="$old_convenience $ladir/$objdir/$old_library" - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_duplicate_deps ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done - elif test "$linkmode" != prog && test "$linkmode" != lib; then - func_fatal_error "\`$lib' is not a convenience library" - fi - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= - for l in $old_library $library_names; do - linklib="$l" - done - if test -z "$linklib"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - - # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - func_fatal_error "cannot -dlopen a convenience library: \`$lib'" - fi - if test -z "$dlname" || - test "$dlopen_support" != yes || - test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. - dlprefiles="$dlprefiles $lib $dependency_libs" - else - newdlfiles="$newdlfiles $lib" - fi - continue - fi # $pass = dlopen - - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; - *) - abs_ladir=`cd "$ladir" && pwd` - if test -z "$abs_ladir"; then - func_warning "cannot determine absolute directory name of \`$ladir'" - func_warning "passing it literally to the linker, although it might fail" - abs_ladir="$ladir" - fi - ;; - esac - func_basename "$lib" - laname="$func_basename_result" - - # Find the relevant object directory and library name. - if test "X$installed" = Xyes; then - if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - func_warning "library \`$lib' was moved." - dir="$ladir" - absdir="$abs_ladir" - libdir="$abs_ladir" - else - dir="$libdir" - absdir="$libdir" - fi - test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes - else - if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir="$ladir" - absdir="$abs_ladir" - # Remove this search path later - notinst_path="$notinst_path $abs_ladir" - else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" - # Remove this search path later - notinst_path="$notinst_path $abs_ladir" - fi - fi # $installed = yes - func_stripname 'lib' '.la' "$laname" - name=$func_stripname_result - - # This library was specified with -dlpreopen. - if test "$pass" = dlpreopen; then - if test -z "$libdir" && test "$linkmode" = prog; then - func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" - fi - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - newdlprefiles="$newdlprefiles $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - newdlprefiles="$newdlprefiles $dir/$dlname" - else - newdlprefiles="$newdlprefiles $dir/$linklib" - fi - fi # $pass = dlpreopen - - if test -z "$libdir"; then - # Link the convenience library - if test "$linkmode" = lib; then - deplibs="$dir/$old_library $deplibs" - elif test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi - - - if test "$linkmode" = prog && test "$pass" != link; then - newlib_search_path="$newlib_search_path $ladir" - deplibs="$lib $deplibs" - - linkalldeplibs=no - if test "$link_all_deplibs" != no || test -z "$library_names" || - test "$build_libtool_libs" = no; then - linkalldeplibs=yes - fi - - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - newlib_search_path="$newlib_search_path $func_stripname_result" - ;; - esac - # Need to link against all dependency_libs? - if test "$linkalldeplibs" = yes; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi - if $opt_duplicate_deps ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done # for deplib - continue - fi # $linkmode = prog... - - if test "$linkmode,$pass" = "prog,link"; then - if test -n "$library_names" && - { { test "$prefer_static_libs" = no || - test "$prefer_static_libs,$installed" = "built,yes"; } || - test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath:" in - *"$absdir:"*) ;; - *) temp_rpath="$temp_rpath$absdir:" ;; - esac - fi - - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" - esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if test "$alldeplibs" = yes && - { test "$deplibs_check_method" = pass_all || - { test "$build_libtool_libs" = yes && - test -n "$library_names"; }; }; then - # We only need to search for static libraries - continue - fi - fi - - link_static=no # Whether the deplib will be linked statically - use_static_libs=$prefer_static_libs - if test "$use_static_libs" = built && test "$installed" = yes; then - use_static_libs=no - fi - if test -n "$library_names" && - { test "$use_static_libs" = no || test -z "$old_library"; }; then - case $host in - *cygwin* | *mingw* | *cegcc*) - # No point in relinking DLLs because paths are not encoded - notinst_deplibs="$notinst_deplibs $lib" - need_relink=no - ;; - *) - if test "$installed" = no; then - notinst_deplibs="$notinst_deplibs $lib" - need_relink=yes - fi - ;; - esac - # This is a shared library - - # Warn about portability, can't link against -module's on some - # systems (darwin). Don't bleat about dlopened modules though! - dlopenmodule="" - for dlpremoduletest in $dlprefiles; do - if test "X$dlpremoduletest" = "X$lib"; then - dlopenmodule="$dlpremoduletest" - break - fi - done - if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then - $ECHO - if test "$linkmode" = prog; then - $ECHO "*** Warning: Linking the executable $output against the loadable module" - else - $ECHO "*** Warning: Linking the shared library $output against the loadable module" - fi - $ECHO "*** $linklib is not portable!" - fi - if test "$linkmode" = lib && - test "$hardcode_into_libs" = yes; then - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - shift - realname="$1" - shift - libname=`eval "\\$ECHO \"$libname_spec\""` - # use dlname if we got it. it's perfectly good, no? - if test -n "$dlname"; then - soname="$dlname" - elif test -n "$soname_spec"; then - # bleh windows - case $host in - *cygwin* | mingw* | *cegcc*) - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - esac - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - - # Make a new name for the extract_expsyms_cmds to use - soroot="$soname" - func_basename "$soroot" - soname="$func_basename_result" - func_stripname 'lib' '.dll' "$soname" - newlib=libimp-$func_stripname_result.a - - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - func_verbose "extracting exported symbol list from \`$soname'" - func_execute_cmds "$extract_expsyms_cmds" 'exit $?' - fi - - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - func_verbose "generating import library for \`$soname'" - func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' - fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" - - if test "$linkmode" = prog || test "$mode" != relink; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" - case $host in - *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; - *-*-sysv4*uw2*) add_dir="-L$dir" ;; - *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ - *-*-unixware7*) add_dir="-L$dir" ;; - *-*-darwin* ) - # if the lib is a (non-dlopened) module then we can not - # link against it, someone is ignoring the earlier warnings - if /usr/bin/file -L $add 2> /dev/null | - $GREP ": [^:]* bundle" >/dev/null ; then - if test "X$dlopenmodule" != "X$lib"; then - $ECHO "*** Warning: lib $linklib is a module, not a shared library" - if test -z "$old_library" ; then - $ECHO - $ECHO "*** And there doesn't seem to be a static archive available" - $ECHO "*** The link will probably fail, sorry" - else - add="$dir/$old_library" - fi - elif test -n "$old_library"; then - add="$dir/$old_library" - fi - fi - esac - elif test "$hardcode_minus_L" = no; then - case $host in - *-*-sunos*) add_shlibpath="$dir" ;; - esac - add_dir="-L$dir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = no; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - relink) - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$dir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - *) lib_linked=no ;; - esac - - if test "$lib_linked" != yes; then - func_fatal_configuration "unsupported hardcode properties" - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; - esac - fi - if test "$linkmode" = prog; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test "$hardcode_direct" != yes && - test "$hardcode_minus_L" != yes && - test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; - esac - fi - fi - fi - - if test "$linkmode" = prog || test "$mode" = relink; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; - esac - add="-l$name" - elif test "$hardcode_automatic" = yes; then - if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" - else - add="$libdir/$linklib" - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir="-L$libdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - fi - - if test "$linkmode" = prog; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" - test -n "$add" && finalize_deplibs="$add $finalize_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - fi - fi - elif test "$linkmode" = prog; then - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" - compile_deplibs="$dir/$linklib $compile_deplibs" - finalize_deplibs="$dir/$linklib $finalize_deplibs" - else - compile_deplibs="-l$name -L$dir $compile_deplibs" - finalize_deplibs="-l$name -L$dir $finalize_deplibs" - fi - elif test "$build_libtool_libs" = yes; then - # Not a shared library - if test "$deplibs_check_method" != pass_all; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. - $ECHO - $ECHO "*** Warning: This system can not link to static lib archive $lib." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have." - if test "$module" = yes; then - $ECHO "*** But as you try to build a module library, libtool will still create " - $ECHO "*** a static module, that should work as long as the dlopening application" - $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then - $ECHO - $ECHO "*** However, this would only work if libtool was able to extract symbol" - $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" - $ECHO "*** not find such a program. So, this module is probably useless." - $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - else - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - - if test "$linkmode" = lib; then - if test -n "$dependency_libs" && - { test "$hardcode_into_libs" != yes || - test "$build_old_libs" = yes || - test "$link_static" = yes; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) func_stripname '-R' '' "$libdir" - temp_xrpath=$func_stripname_result - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) xrpath="$xrpath $temp_xrpath";; - esac;; - *) temp_deplibs="$temp_deplibs $libdir";; - esac - done - dependency_libs="$temp_deplibs" - fi - - newlib_search_path="$newlib_search_path $absdir" - # Link against this library - test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" - # ... and its dependency_libs - tmp_libs= - for deplib in $dependency_libs; do - newdependency_libs="$deplib $newdependency_libs" - if $opt_duplicate_deps ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done - - if test "$link_all_deplibs" != no; then - # Add the search paths of all dependency libraries - for deplib in $dependency_libs; do - path= - case $deplib in - -L*) path="$deplib" ;; - *.la) - func_dirname "$deplib" "" "." - dir="$func_dirname_result" - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - func_warning "cannot determine absolute directory name of \`$dir'" - absdir="$dir" - fi - ;; - esac - if $GREP "^installed=no" $deplib > /dev/null; then - case $host in - *-*-darwin*) - depdepl= - eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names" ; then - for tmp in $deplibrary_names ; do - depdepl=$tmp - done - if test -f "$absdir/$objdir/$depdepl" ; then - depdepl="$absdir/$objdir/$depdepl" - darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - if test -z "$darwin_install_name"; then - darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - fi - compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" - linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" - path= - fi - fi - ;; - *) - path="-L$absdir/$objdir" - ;; - esac - else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - test "$absdir" != "$libdir" && \ - func_warning "\`$deplib' seems to be moved" - - path="-L$absdir" - fi - ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$path $deplibs" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - if test "$pass" = link; then - if test "$linkmode" = "prog"; then - compile_deplibs="$new_inherited_linker_flags $compile_deplibs" - finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" - else - compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` - fi - fi - dependency_libs="$newdependency_libs" - if test "$pass" = dlpreopen; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test "$pass" != dlopen; then - if test "$pass" != conv; then - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; - *) lib_search_path="$lib_search_path $dir" ;; - esac - done - newlib_search_path= - fi - - if test "$linkmode,$pass" != "prog,link"; then - vars="deplibs" - else - vars="compile_deplibs finalize_deplibs" - fi - for var in $vars dependency_libs; do - # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" - new_libs= - for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; - *) tmp_libs="$tmp_libs $deplib" ;; - esac - ;; - *) tmp_libs="$tmp_libs $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - # Last step: remove runtime libs from dependency_libs - # (they stay in deplibs) - tmp_libs= - for i in $dependency_libs ; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i="" - ;; - esac - if test -n "$i" ; then - tmp_libs="$tmp_libs $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test "$linkmode" = prog; then - dlfiles="$newdlfiles" - fi - if test "$linkmode" = prog || test "$linkmode" = lib; then - dlprefiles="$newdlprefiles" - fi - - case $linkmode in - oldlib) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for archives" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for archives" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for archives" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for archives" - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for archives" - - test -n "$release" && \ - func_warning "\`-release' is ignored for archives" - - test -n "$export_symbols$export_symbols_regex" && \ - func_warning "\`-export-symbols' is ignored for archives" - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs="$output" - objs="$objs$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form `libNAME.la'. - case $outputname in - lib*) - func_stripname 'lib' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - ;; - *) - test "$module" = no && \ - func_fatal_help "libtool library \`$output' must begin with \`lib'" - - if test "$need_lib_prefix" != no; then - # Add the "lib" prefix for modules if required - func_stripname '' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - else - func_stripname '' '.la' "$outputname" - libname=$func_stripname_result - fi - ;; - esac - - if test -n "$objs"; then - if test "$deplibs_check_method" != pass_all; then - func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" - else - $ECHO - $ECHO "*** Warning: Linking the shared library $output against the non-libtool" - $ECHO "*** objects $objs is not portable!" - libobjs="$libobjs $objs" - fi - fi - - test "$dlself" != no && \ - func_warning "\`-dlopen self' is ignored for libtool libraries" - - set dummy $rpath - shift - test "$#" -gt 1 && \ - func_warning "ignoring multiple \`-rpath's for a libtool library" - - install_libdir="$1" - - oldlibs= - if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then - # Building a libtool convenience library. - # Some compilers have problems with a `.al' extension so - # convenience libraries should have the same extension an - # archive normally would. - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for convenience libraries" - - test -n "$release" && \ - func_warning "\`-release' is ignored for convenience libraries" - else - - # Parse the version information argument. - save_ifs="$IFS"; IFS=':' - set dummy $vinfo 0 0 0 - shift - IFS="$save_ifs" - - test -n "$7" && \ - func_fatal_help "too many parameters to \`-version-info'" - - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible - - case $vinfo_number in - yes) - number_major="$1" - number_minor="$2" - number_revision="$3" - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # which has an extra 1 added just for fun - # - case $version_type in - darwin|linux|osf|windows|none) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_revision" - ;; - freebsd-aout|freebsd-elf|sunos) - current="$number_major" - revision="$number_minor" - age="0" - ;; - irix|nonstopux) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_minor" - lt_irix_increment=no - ;; - *) - func_fatal_configuration "$modename: unknown library version type \`$version_type'" - ;; - esac - ;; - no) - current="$1" - revision="$2" - age="$3" - ;; - esac - - # Check that each of the things are valid numbers. - case $current in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "CURRENT \`$current' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $revision in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "REVISION \`$revision' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $age in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "AGE \`$age' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - if test "$age" -gt "$current"; then - func_error "AGE \`$age' is greater than the current interface number \`$current'" - func_fatal_error "\`$vinfo' is not valid version information" - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case $version_type in - none) ;; - - darwin) - # Like Linux, but with the current version available in - # verstring for coding it into the library header - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - # Darwin ld doesn't like 0 for these options... - func_arith $current + 1 - minor_current=$func_arith_result - xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - ;; - - freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; - ;; - - freebsd-elf) - major=".$current" - versuffix=".$current" - ;; - - irix | nonstopux) - if test "X$lt_irix_increment" = "Xno"; then - func_arith $current - $age - else - func_arith $current - $age + 1 - fi - major=$func_arith_result - - case $version_type in - nonstopux) verstring_prefix=nonstopux ;; - *) verstring_prefix=sgi ;; - esac - verstring="$verstring_prefix$major.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test "$loop" -ne 0; do - func_arith $revision - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring_prefix$major.$iface:$verstring" - done - - # Before this point, $major must not contain `.'. - major=.$major - versuffix="$major.$revision" - ;; - - linux) - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - ;; - - osf) - func_arith $current - $age - major=.$func_arith_result - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$age - while test "$loop" -ne 0; do - func_arith $current - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring:${iface}.0" - done - - # Make executables depend on our current version. - verstring="$verstring:${current}.0" - ;; - - qnx) - major=".$current" - versuffix=".$current" - ;; - - sunos) - major=".$current" - versuffix=".$current.$revision" - ;; - - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 filesystems. - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - - *) - func_fatal_configuration "unknown library version type \`$version_type'" - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - case $version_type in - darwin) - # we can't check for "0.0" in archive_cmds due to quoting - # problems, so we reset it completely - verstring= - ;; - *) - verstring="0.0" - ;; - esac - if test "$need_version" = no; then - versuffix= - else - versuffix=".0.0" - fi - fi - - # Remove version info from name if versioning should be avoided - if test "$avoid_version" = yes && test "$need_version" = no; then - major= - versuffix= - verstring="" - fi - - # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - func_warning "undefined symbols not allowed in $host shared libraries" - build_libtool_libs=no - build_old_libs=yes - fi - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" - fi - - fi - - func_generate_dlsyms "$libname" "$libname" "yes" - libobjs="$libobjs $symfileobj" - test "X$libobjs" = "X " && libobjs= - - if test "$mode" != relink; then - # Remove our outputs, but don't remove object files since they - # may have been created when compiling PIC objects. - removelist= - tempremovelist=`$ECHO "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext | *.gcno) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) - if test "X$precious_files_regex" != "X"; then - if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then - continue - fi - fi - removelist="$removelist $p" - ;; - *) ;; - esac - done - test -n "$removelist" && \ - func_show_eval "${RM}r \$removelist" - fi - - # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - oldlibs="$oldlibs $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` - fi - - # Eliminate all temporary directories. - #for path in $notinst_path; do - # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` - # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` - # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` - #done - - if test -n "$xrpath"; then - # If the user specified any rpath flags, then add them. - temp_xrpath= - for libdir in $xrpath; do - temp_xrpath="$temp_xrpath -R$libdir" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; - esac - done - if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi - - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles="$dlfiles" - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; - *) dlfiles="$dlfiles $lib" ;; - esac - done - - # Make sure dlprefiles contains only unique files - old_dlprefiles="$dlprefiles" - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; - *) dlprefiles="$dlprefiles $lib" ;; - esac - done - - if test "$build_libtool_libs" = yes; then - if test -n "$rpath"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - deplibs="$deplibs System.ltframework" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then - deplibs="$deplibs -lc" - fi - ;; - esac - fi - - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release="" - versuffix="" - major="" - newdeplibs= - droppeddeps=no - case $deplibs_check_method in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $opt_dry_run || $RM conftest.c - cat > conftest.c </dev/null` - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null | - $GREP " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib="$potent_lib" - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | - $SED -e 10q | - $EGREP "$file_magic_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - $ECHO - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have" - $ECHO "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for file magic test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a file magic. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - for a_deplib in $deplibs; do - case $a_deplib in - -l*) - func_stripname -l '' "$a_deplib" - name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib="$potent_lib" # see symlink-check above in file_magic test - if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ - $EGREP "$match_pattern_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - $ECHO - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have" - $ECHO "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a regex pattern. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs="" - tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ - -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - for i in $predeps $postdeps ; do - # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` - done - fi - if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | - $GREP . >/dev/null; then - $ECHO - if test "X$deplibs_check_method" = "Xnone"; then - $ECHO "*** Warning: inter-library dependencies are not supported in this platform." - else - $ECHO "*** Warning: inter-library dependencies are not known to be supported." - fi - $ECHO "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - fi - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library with the System framework - newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` - ;; - esac - - if test "$droppeddeps" = yes; then - if test "$module" = yes; then - $ECHO - $ECHO "*** Warning: libtool could not satisfy all declared inter-library" - $ECHO "*** dependencies of module $libname. Therefore, libtool will create" - $ECHO "*** a static module, that should work as long as the dlopening" - $ECHO "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - $ECHO - $ECHO "*** However, this would only work if libtool was able to extract symbol" - $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" - $ECHO "*** not find such a program. So, this module is probably useless." - $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - $ECHO "*** The inter-library dependencies that have been dropped here will be" - $ECHO "*** automatically added whenever a program is linked with this library" - $ECHO "*** or is declared to -dlopen it." - - if test "$allow_undefined" = no; then - $ECHO - $ECHO "*** Since this library must not contain undefined symbols," - $ECHO "*** because either the platform does not support them or" - $ECHO "*** it was explicitly requested with -no-undefined," - $ECHO "*** libtool will only create a static version of it." - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - case $host in - *-*-darwin*) - newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` - new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` - deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $deplibs " in - *" -L$path/$objdir "*) - new_libs="$new_libs -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$new_libs $deplib" ;; - esac - ;; - *) new_libs="$new_libs $deplib" ;; - esac - done - deplibs="$new_libs" - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then - if test "$hardcode_into_libs" = yes; then - # Hardcode the library paths - hardcode_libdirs= - dep_rpath= - rpath="$finalize_rpath" - test "$mode" != relink && rpath="$compile_rpath$rpath" - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - dep_rpath="$dep_rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - if test -n "$hardcode_libdir_flag_spec_ld"; then - eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" - else - eval dep_rpath=\"$hardcode_libdir_flag_spec\" - fi - fi - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" - fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath="$finalize_shlibpath" - test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - - # Get the real and link names of the library. - eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - shift - realname="$1" - shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - if test -z "$dlname"; then - dlname=$soname - fi - - lib="$output_objdir/$realname" - linknames= - for link - do - linknames="$linknames $link" - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - test "X$libobjs" = "X " && libobjs= - - delfiles= - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" - export_symbols="$output_objdir/$libname.uexp" - delfiles="$delfiles $export_symbols" - fi - - orig_export_symbols= - case $host_os in - cygwin* | mingw* | cegcc*) - if test -n "$export_symbols" && test -z "$export_symbols_regex"; then - # exporting using user supplied symfile - if test "x`$SED 1q $export_symbols`" != xEXPORTS; then - # and it's NOT already a .def file. Must figure out - # which of the given symbols are data symbols and tag - # them as such. So, trigger use of export_symbols_cmds. - # export_symbols gets reassigned inside the "prepare - # the list of exported symbols" if statement, so the - # include_expsyms logic still works. - orig_export_symbols="$export_symbols" - export_symbols= - always_export_symbols=yes - fi - fi - ;; - esac - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - func_len " $cmd" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - func_show_eval "$cmd" 'exit $?' - skipped_export=false - else - # The command line is too long to execute in one step. - func_verbose "using reloadable object file for export list..." - skipped_export=: - # Break out early, otherwise skipped_export may be - # set to false by a later but shorter cmd. - break - fi - done - IFS="$save_ifs" - if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' - fi - - if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - tmp_deplibs="$tmp_deplibs $test_deplib" - ;; - esac - done - deplibs="$tmp_deplibs" - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec" && - test "$compiler_needs_object" = yes && - test -z "$libobjs"; then - # extract the archives, so we have objects to list. - # TODO: could optimize this to just extract one archive. - whole_archive_flag_spec= - fi - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - else - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - func_extract_archives $gentop $convenience - libobjs="$libobjs $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - fi - - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - linker_flags="$linker_flags $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test "$mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval test_cmds=\"$module_expsym_cmds\" - cmds=$module_expsym_cmds - else - eval test_cmds=\"$module_cmds\" - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" - cmds=$archive_expsym_cmds - else - eval test_cmds=\"$archive_cmds\" - cmds=$archive_cmds - fi - fi - - if test "X$skipped_export" != "X:" && - func_len " $test_cmds" && - len=$func_len_result && - test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise - # or, if using GNU ld and skipped_export is not :, use a linker - # script. - - # Save the value of $output and $libobjs because we want to - # use them later. If we have whole_archive_flag_spec, we - # want to use save_libobjs as it was before - # whole_archive_flag_spec was expanded, because we can't - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - fi - save_output=$output - output_la=`$ECHO "X$output" | $Xsed -e "$basename"` - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - last_robj= - k=1 - - if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then - output=${output_objdir}/${output_la}.lnkscript - func_verbose "creating GNU ld script: $output" - $ECHO 'INPUT (' > $output - for obj in $save_libobjs - do - $ECHO "$obj" >> $output - done - $ECHO ')' >> $output - delfiles="$delfiles $output" - elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then - output=${output_objdir}/${output_la}.lnk - func_verbose "creating linker input file list: $output" - : > $output - set x $save_libobjs - shift - firstobj= - if test "$compiler_needs_object" = yes; then - firstobj="$1 " - shift - fi - for obj - do - $ECHO "$obj" >> $output - done - delfiles="$delfiles $output" - output=$firstobj\"$file_list_spec$output\" - else - if test -n "$save_libobjs"; then - func_verbose "creating reloadable object files..." - output=$output_objdir/$output_la-${k}.$objext - eval test_cmds=\"$reload_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - if test "X$objlist" = X || - test "$len" -lt "$max_cmd_len"; then - func_append objlist " $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test "$k" -eq 1 ; then - # The first file doesn't have a previous command to add. - eval concat_cmds=\"$reload_cmds $objlist $last_robj\" - else - # All subsequent reloadable object files will link in - # the last one created. - eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" - fi - last_robj=$output_objdir/$output_la-${k}.$objext - func_arith $k + 1 - k=$func_arith_result - output=$output_objdir/$output_la-${k}.$objext - objlist=$obj - func_len " $last_robj" - func_arith $len0 + $func_len_result - len=$func_arith_result - fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" - if test -n "$last_robj"; then - eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" - fi - delfiles="$delfiles $output" - - else - output= - fi - - if ${skipped_export-false}; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - libobjs=$output - # Append the command to create the export file. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" - fi - fi - - test -n "$save_libobjs" && - func_verbose "creating a temporary reloadable object file: $output" - - # Loop through the commands generated above and execute them. - save_ifs="$IFS"; IFS='~' - for cmd in $concat_cmds; do - IFS="$save_ifs" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - if test -n "$export_symbols_regex" && ${skipped_export-false}; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - - if ${skipped_export-false}; then - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' - fi - - if test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - fi - - libobjs=$output - # Restore the value of output. - output=$save_output - - if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - fi - # Expand the library linking commands again to reset the - # value of $libobjs for piecewise linking. - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - cmds=$module_expsym_cmds - else - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - cmds=$archive_expsym_cmds - else - cmds=$archive_cmds - fi - fi - fi - - if test -n "$delfiles"; then - # Append the command to remove temporary files to $cmds. - eval cmds=\"\$cmds~\$RM $delfiles\" - fi - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - func_extract_archives $gentop $dlprefiles - libobjs="$libobjs $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? - - if test -n "$convenience"; then - if test -z "$whole_archive_flag_spec"; then - func_show_eval '${RM}r "$gentop"' - fi - fi - - exit $EXIT_SUCCESS - fi - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test "$module" = yes || test "$export_dynamic" = yes; then - # On all known operating systems, these are identical. - dlname="$soname" - fi - fi - ;; - - obj) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for objects" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for objects" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for objects" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for objects" - - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for objects" - - test -n "$release" && \ - func_warning "\`-release' is ignored for objects" - - case $output in - *.lo) - test -n "$objs$old_deplibs" && \ - func_fatal_error "cannot build library object \`$output' from non-libtool objects" - - libobj=$output - func_lo2o "$libobj" - obj=$func_lo2o_result - ;; - *) - libobj= - obj="$output" - ;; - esac - - # Delete the old objects. - $opt_dry_run || $RM $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec and hope we can get by with - # turning comma into space.. - wl= - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` - else - gentop="$output_objdir/${obj}x" - generated="$generated $gentop" - - func_extract_archives $gentop $convenience - reload_conv_objs="$reload_objs $func_extract_archives_result" - fi - fi - - # Create the old-style object. - reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test - - output="$obj" - func_execute_cmds "$reload_cmds" 'exit $?' - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - fi - - if test "$build_libtool_libs" != yes; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? - exit $EXIT_SUCCESS - fi - - if test -n "$pic_flag" || test "$pic_mode" != default; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output="$libobj" - func_execute_cmds "$reload_cmds" 'exit $?' - fi - - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - ;; - - prog) - case $host in - *cygwin*) func_stripname '' '.exe' "$output" - output=$func_stripname_result.exe;; - esac - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for programs" - - test -n "$release" && \ - func_warning "\`-release' is ignored for programs" - - test "$preload" = yes \ - && test "$dlopen_support" = unknown \ - && test "$dlopen_self" = unknown \ - && test "$dlopen_self_static" = unknown && \ - func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` - finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` - ;; - esac - - case $host in - *-*-darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - # But is supposedly fixed on 10.4 or later (yay!). - if test "$tagname" = CXX ; then - case ${MACOSX_DEPLOYMENT_TARGET-10.0} in - 10.[0123]) - compile_command="$compile_command ${wl}-bind_at_load" - finalize_command="$finalize_command ${wl}-bind_at_load" - ;; - esac - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` - finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $compile_deplibs " in - *" -L$path/$objdir "*) - new_libs="$new_libs -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $compile_deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$new_libs $deplib" ;; - esac - ;; - *) new_libs="$new_libs $deplib" ;; - esac - done - compile_deplibs="$new_libs" - - - compile_command="$compile_command $compile_deplibs" - finalize_command="$finalize_command $finalize_deplibs" - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$libdir:"*) ;; - ::) dllsearchpath=$libdir;; - *) dllsearchpath="$dllsearchpath:$libdir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) dllsearchpath="$dllsearchpath:$testbindir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath="$rpath" - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath="$rpath" - - if test -n "$libobjs" && test "$build_old_libs" = yes; then - # Transform all the library objects into standard objects. - compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - fi - - func_generate_dlsyms "$outputname" "@PROGRAM@" "no" - - # template prelinking step - if test -n "$prelink_cmds"; then - func_execute_cmds "$prelink_cmds" 'exit $?' - fi - - wrappers_required=yes - case $host in - *cygwin* | *mingw* ) - if test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - *cegcc) - # Disable wrappers for cegcc, we are cross compiling anyway. - wrappers_required=no - ;; - *) - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - esac - if test "$wrappers_required" = no; then - # Replace the output file specification. - compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" - - # We have no uninstalled library dependencies, so finalize right now. - exit_status=0 - func_show_eval "$link_command" 'exit_status=$?' - - # Delete the generated files. - if test -f "$output_objdir/${outputname}S.${objext}"; then - func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' - fi - - exit $exit_status - fi - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - rpath="$rpath$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test "$no_install" = yes; then - # We don't need to create a wrapper script. - link_command="$compile_var$compile_command$compile_rpath" - # Replace the output file specification. - link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` - # Delete the old output file. - $opt_dry_run || $RM $output - # Link the executable and exit - func_show_eval "$link_command" 'exit $?' - exit $EXIT_SUCCESS - fi - - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - - func_warning "this platform does not like uninstalled shared libraries" - func_warning "\`$output' will be relinked during installation" - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - fi - fi - - # Replace the output file specification. - link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname - - func_show_eval "$link_command" 'exit $?' - - # Now create the wrapper script. - func_verbose "creating $output" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` - fi - - # Quote $ECHO for shipping. - if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then - case $progpath in - [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; - *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; - esac - qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` - else - qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` - fi - - # Only actually do things if not in dry run mode. - $opt_dry_run || { - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) func_stripname '' '.exe' "$output" - output=$func_stripname_result ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin*) - exeext=.exe - func_stripname '' '.exe' "$outputname" - outputname=$func_stripname_result ;; - *) exeext= ;; - esac - case $host in - *cygwin* | *mingw* ) - func_dirname_and_basename "$output" "" "." - output_name=$func_basename_result - output_path=$func_dirname_result - cwrappersource="$output_path/$objdir/lt-$output_name.c" - cwrapper="$output_path/$output_name.exe" - $RM $cwrappersource $cwrapper - trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 - - func_emit_cwrapperexe_src > $cwrappersource - - # The wrapper executable is built using the $host compiler, - # because it contains $host paths and files. If cross- - # compiling, it, like the target executable, must be - # executed on the $host or under an emulation environment. - $opt_dry_run || { - $LTCC $LTCFLAGS -o $cwrapper $cwrappersource - $STRIP $cwrapper - } - - # Now, create the wrapper script for func_source use: - func_ltwrapper_scriptname $cwrapper - $RM $func_ltwrapper_scriptname_result - trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 - $opt_dry_run || { - # note: this script will not be executed, so do not chmod. - if test "x$build" = "x$host" ; then - $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result - else - func_emit_wrapper no > $func_ltwrapper_scriptname_result - fi - } - ;; - * ) - $RM $output - trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 - - func_emit_wrapper no > $output - chmod +x $output - ;; - esac - } - exit $EXIT_SUCCESS - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save $symfileobj" - addlibs="$convenience" - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" - build_libtool_libs=no - else - oldobjs="$old_deplibs $non_pic_objects" - if test "$preload" = yes && test -f "$symfileobj"; then - oldobjs="$oldobjs $symfileobj" - fi - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - func_extract_archives $gentop $addlibs - oldobjs="$oldobjs $func_extract_archives_result" - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - cmds=$old_archive_from_new_cmds - else - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - func_extract_archives $gentop $dlprefiles - oldobjs="$oldobjs $func_extract_archives_result" - fi - - # POSIX demands no paths to be encoded in archives. We have - # to avoid creating archives with duplicate basenames if we - # might have to extract them afterwards, e.g., when creating a - # static archive out of a convenience library, or when linking - # the entirety of a libtool archive into another (currently - # not supported by libtool). - if (for obj in $oldobjs - do - func_basename "$obj" - $ECHO "$func_basename_result" - done | sort | sort -uc >/dev/null 2>&1); then - : - else - $ECHO "copying selected object files to avoid basename conflicts..." - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - func_mkdir_p "$gentop" - save_oldobjs=$oldobjs - oldobjs= - counter=1 - for obj in $save_oldobjs - do - func_basename "$obj" - objbase="$func_basename_result" - case " $oldobjs " in - " ") oldobjs=$obj ;; - *[\ /]"$objbase "*) - while :; do - # Make sure we don't pick an alternate name that also - # overlaps. - newobj=lt$counter-$objbase - func_arith $counter + 1 - counter=$func_arith_result - case " $oldobjs " in - *[\ /]"$newobj "*) ;; - *) if test ! -f "$gentop/$newobj"; then break; fi ;; - esac - done - func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - oldobjs="$oldobjs $gentop/$newobj" - ;; - *) oldobjs="$oldobjs $obj" ;; - esac - done - fi - eval cmds=\"$old_archive_cmds\" - - func_len " $cmds" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - cmds=$old_archive_cmds - else - # the command line is too long to link in one step, link in parts - func_verbose "using piecewise archive linking..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs - oldobjs= - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj - done - eval test_cmds=\"$old_archive_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - for obj in $save_oldobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - func_append objlist " $obj" - if test "$len" -lt "$max_cmd_len"; then - : - else - # the above command should be used before it gets too long - oldobjs=$objlist - if test "$obj" = "$last_oldobj" ; then - RANLIB=$save_RANLIB - fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" - objlist= - len=$len0 - fi - done - RANLIB=$save_RANLIB - oldobjs=$objlist - if test "X$oldobjs" = "X" ; then - eval cmds=\"\$concat_cmds\" - else - eval cmds=\"\$concat_cmds~\$old_archive_cmds\" - fi - fi - fi - func_execute_cmds "$cmds" 'exit $?' - done - - test -n "$generated" && \ - func_show_eval "${RM}r$generated" - - # Now create the libtool archive. - case $output in - *.la) - old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" - func_verbose "creating $output" - - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` - if test "$hardcode_automatic" = yes ; then - relink_command= - fi - - # Only create the output if not a dry run. - $opt_dry_run || { - for installed in no yes; do - if test "$installed" = yes; then - if test -z "$install_libdir"; then - break - fi - output="$output_objdir/$outputname"i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - func_basename "$deplib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - newdependency_libs="$newdependency_libs $libdir/$name" - ;; - *) newdependency_libs="$newdependency_libs $deplib" ;; - esac - done - dependency_libs="$newdependency_libs" - newdlfiles= - - for lib in $dlfiles; do - case $lib in - *.la) - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - newdlfiles="$newdlfiles $libdir/$name" - ;; - *) newdlfiles="$newdlfiles $lib" ;; - esac - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - *.la) - # Only pass preopened files to the pseudo-archive (for - # eventual linking with the app. that links it) if we - # didn't already link the preopened objects directly into - # the library: - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - newdlprefiles="$newdlprefiles $libdir/$name" - ;; - esac - done - dlprefiles="$newdlprefiles" - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - newdlfiles="$newdlfiles $abs" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - newdlprefiles="$newdlprefiles $abs" - done - dlprefiles="$newdlprefiles" - fi - $RM $output - # place dlname in correct position for cygwin - tdlname=$dlname - case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; - esac - $ECHO > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$tdlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Linker flags that can not go in dependency_libs. -inherited_linker_flags='$new_inherited_linker_flags' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Names of additional weak libraries provided by this library -weak_library_names='$weak_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Should we warn about portability when linking against -modules? -shouldnotlink=$module - -# Files to dlopen/dlpreopen -dlopen='$dlfiles' -dlpreopen='$dlprefiles' - -# Directory that this library needs to be installed in: -libdir='$install_libdir'" - if test "$installed" = no && test "$need_relink" = yes; then - $ECHO >> $output "\ -relink_command=\"$relink_command\"" - fi - done - } - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' - ;; - esac - exit $EXIT_SUCCESS -} - -{ test "$mode" = link || test "$mode" = relink; } && - func_mode_link ${1+"$@"} - - -# func_mode_uninstall arg... -func_mode_uninstall () -{ - $opt_debug - RM="$nonopt" - files= - rmforce= - exit_status=0 - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - for arg - do - case $arg in - -f) RM="$RM $arg"; rmforce=yes ;; - -*) RM="$RM $arg" ;; - *) files="$files $arg" ;; - esac - done - - test -z "$RM" && \ - func_fatal_help "you must specify an RM program" - - rmdirs= - - origobjdir="$objdir" - for file in $files; do - func_dirname "$file" "" "." - dir="$func_dirname_result" - if test "X$dir" = X.; then - objdir="$origobjdir" - else - objdir="$dir/$origobjdir" - fi - func_basename "$file" - name="$func_basename_result" - test "$mode" = uninstall && objdir="$dir" - - # Remember objdir for removal later, being careful to avoid duplicates - if test "$mode" = clean; then - case " $rmdirs " in - *" $objdir "*) ;; - *) rmdirs="$rmdirs $objdir" ;; - esac - fi - - # Don't error if the file doesn't exist and rm -f was used. - if { test -L "$file"; } >/dev/null 2>&1 || - { test -h "$file"; } >/dev/null 2>&1 || - test -f "$file"; then - : - elif test -d "$file"; then - exit_status=1 - continue - elif test "$rmforce" = yes; then - continue - fi - - rmfiles="$file" - - case $name in - *.la) - # Possibly a libtool archive, so verify it. - if func_lalib_p "$file"; then - func_source $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - rmfiles="$rmfiles $objdir/$n" - done - test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" - - case "$mode" in - clean) - case " $library_names " in - # " " in the beginning catches empty $dlname - *" $dlname "*) ;; - *) rmfiles="$rmfiles $objdir/$dlname" ;; - esac - test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" - ;; - uninstall) - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - # FIXME: should reinstall the best remaining shared library. - ;; - esac - fi - ;; - - *.lo) - # Possibly a libtool object, so verify it. - if func_lalib_p "$file"; then - - # Read the .lo file - func_source $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" && - test "$pic_object" != none; then - rmfiles="$rmfiles $dir/$pic_object" - fi - - # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" && - test "$non_pic_object" != none; then - rmfiles="$rmfiles $dir/$non_pic_object" - fi - fi - ;; - - *) - if test "$mode" = clean ; then - noexename=$name - case $file in - *.exe) - func_stripname '' '.exe' "$file" - file=$func_stripname_result - func_stripname '' '.exe' "$name" - noexename=$func_stripname_result - # $file with .exe has already been added to rmfiles, - # add $file without .exe - rmfiles="$rmfiles $file" - ;; - esac - # Do a test to see if this is a libtool program. - if func_ltwrapper_p "$file"; then - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - relink_command= - func_source $func_ltwrapper_scriptname_result - rmfiles="$rmfiles $func_ltwrapper_scriptname_result" - else - relink_command= - func_source $dir/$noexename - fi - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles - rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" - if test "$fast_install" = yes && test -n "$relink_command"; then - rmfiles="$rmfiles $objdir/lt-$name" - fi - if test "X$noexename" != "X$name" ; then - rmfiles="$rmfiles $objdir/lt-${noexename}.c" - fi - fi - fi - ;; - esac - func_show_eval "$RM $rmfiles" 'exit_status=1' - done - objdir="$origobjdir" - - # Try to remove the ${objdir}s in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - func_show_eval "rmdir $dir >/dev/null 2>&1" - fi - done - - exit $exit_status -} - -{ test "$mode" = uninstall || test "$mode" = clean; } && - func_mode_uninstall ${1+"$@"} - -test -z "$mode" && { - help="$generic_help" - func_fatal_help "you must specify a MODE" -} - -test -z "$exec_cmd" && \ - func_fatal_help "invalid operation mode \`$mode'" - -if test -n "$exec_cmd"; then - eval exec "$exec_cmd" - exit $EXIT_FAILURE -fi - -exit $exit_status - - -# The TAGs below are defined such that we never get into a situation -# in which we disable both kinds of libraries. Given conflicting -# choices, we go for a static library, that is the most portable, -# since we can't tell whether shared libraries were disabled because -# the user asked for that or because the platform doesn't support -# them. This is particularly important on AIX, because we don't -# support having both static and shared libraries enabled at the same -# time on that platform, so we default to a shared-only configuration. -# If a disable-shared tag is given, we'll fallback to a static-only -# configuration. But we'll never go from static-only to shared-only. - -# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -build_libtool_libs=no -build_old_libs=yes -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: -# vi:sw=2 - diff --git a/platform/win32/msvc/external/exiv2/config/mkinstalldirs b/platform/win32/msvc/external/exiv2/config/mkinstalldirs deleted file mode 100644 index 6fbe5e11762..00000000000 --- a/platform/win32/msvc/external/exiv2/config/mkinstalldirs +++ /dev/null @@ -1,150 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy - -scriptversion=2004-02-15.20 - -# Original author: Noah Friedman -# Created: 1993-05-16 -# Public domain. -# -# This file is maintained in Automake, please report -# bugs to or send patches to -# . - -errstatus=0 -dirmode="" - -usage="\ -Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... - -Create each directory DIR (with mode MODE, if specified), including all -leading file name components. - -Report bugs to ." - -# process command line arguments -while test $# -gt 0 ; do - case $1 in - -h | --help | --h*) # -h for help - echo "$usage" - exit 0 - ;; - -m) # -m PERM arg - shift - test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } - dirmode=$1 - shift - ;; - --version) - echo "$0 $scriptversion" - exit 0 - ;; - --) # stop option processing - shift - break - ;; - -*) # unknown option - echo "$usage" 1>&2 - exit 1 - ;; - *) # first non-opt arg - break - ;; - esac -done - -for file -do - if test -d "$file"; then - shift - else - break - fi -done - -case $# in - 0) exit 0 ;; -esac - -# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and -# mkdir -p a/c at the same time, both will detect that a is missing, -# one will create a, then the other will try to create a and die with -# a "File exists" error. This is a problem when calling mkinstalldirs -# from a parallel make. We use --version in the probe to restrict -# ourselves to GNU mkdir, which is thread-safe. -case $dirmode in - '') - if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then - echo "mkdir -p -- $*" - exec mkdir -p -- "$@" - else - # On NextStep and OpenStep, the `mkdir' command does not - # recognize any option. It will interpret all options as - # directories to create, and then abort because `.' already - # exists. - test -d ./-p && rmdir ./-p - test -d ./--version && rmdir ./--version - fi - ;; - *) - if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && - test ! -d ./--version; then - echo "mkdir -m $dirmode -p -- $*" - exec mkdir -m "$dirmode" -p -- "$@" - else - # Clean up after NextStep and OpenStep mkdir. - for d in ./-m ./-p ./--version "./$dirmode"; - do - test -d $d && rmdir $d - done - fi - ;; -esac - -for file -do - set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` - shift - - pathcomp= - for d - do - pathcomp="$pathcomp$d" - case $pathcomp in - -*) pathcomp=./$pathcomp ;; - esac - - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" - - mkdir "$pathcomp" || lasterr=$? - - if test ! -d "$pathcomp"; then - errstatus=$lasterr - else - if test ! -z "$dirmode"; then - echo "chmod $dirmode $pathcomp" - lasterr="" - chmod "$dirmode" "$pathcomp" || lasterr=$? - - if test ! -z "$lasterr"; then - errstatus=$lasterr - fi - fi - fi - fi - - pathcomp="$pathcomp/" - done -done - -exit $errstatus - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/platform/win32/msvc/external/exiv2/configure b/platform/win32/msvc/external/exiv2/configure deleted file mode 100644 index 353472beac8..00000000000 --- a/platform/win32/msvc/external/exiv2/configure +++ /dev/null @@ -1,19703 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for exiv2 0.23. -# -# Report bugs to . -# -# -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software -# Foundation, Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - # We cannot yet assume a decent shell, so we have to provide a - # neutralization value for shells without unset; and this also - # works around shells that cannot unset nonexistent variables. - # Preserve -v and -x to the replacement shell. - BASH_ENV=/dev/null - ENV=/dev/null - (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV - export CONFIG_SHELL - case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; - esac - exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org and ahuggel@gmx.net -$0: about your system, including any error possibly output -$0: before this message. Then install a modern shell, or -$0: manually run the script under such a shell if you do -$0: have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - - -# Check that we are running under the correct shell. -SHELL=${CONFIG_SHELL-/bin/sh} - -case X$lt_ECHO in -X*--fallback-echo) - # Remove one level of quotation (which was required for Make). - ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` - ;; -esac - -ECHO=${lt_ECHO-echo} -if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X$1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then - # Yippee, $ECHO works! - : -else - # Restart under the correct shell. - exec $SHELL "$0" --no-reexec ${1+"$@"} -fi - -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat <<_LT_EOF -$* -_LT_EOF - exit 0 -fi - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test -z "$lt_ECHO"; then - if test "X${echo_test_string+set}" != Xset; then - # find a string as large as possible, as long as the shell can cope with it - for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do - # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... - if { echo_test_string=`eval $cmd`; } 2>/dev/null && - { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null - then - break - fi - done - fi - - if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - : - else - # The Solaris, AIX, and Digital Unix default echo programs unquote - # backslashes. This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # - # So, first we look for a working echo in the user's PATH. - - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for dir in $PATH /usr/ucb; do - IFS="$lt_save_ifs" - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - ECHO="$dir/echo" - break - fi - done - IFS="$lt_save_ifs" - - if test "X$ECHO" = Xecho; then - # We didn't find a better echo, so look for alternatives. - if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # This shell has a builtin print -r that does the trick. - ECHO='print -r' - elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && - test "X$CONFIG_SHELL" != X/bin/ksh; then - # If we have ksh, try running configure again with it. - ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - export ORIGINAL_CONFIG_SHELL - CONFIG_SHELL=/bin/ksh - export CONFIG_SHELL - exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} - else - # Try using printf. - ECHO='printf %s\n' - if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # Cool, printf works - : - elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL - export CONFIG_SHELL - SHELL="$CONFIG_SHELL" - export SHELL - ECHO="$CONFIG_SHELL $0 --fallback-echo" - elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - ECHO="$CONFIG_SHELL $0 --fallback-echo" - else - # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do - if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null - then - break - fi - prev="$cmd" - done - - if test "$prev" != 'sed 50q "$0"'; then - echo_test_string=`eval $prev` - export echo_test_string - exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} - else - # Oops. We lost completely, so just stick with echo. - ECHO=echo - fi - fi - fi - fi - fi -fi - -# Copy echo and quote the copy suitably for passing to libtool from -# the Makefile, instead of quoting the original, which is used later. -lt_ECHO=$ECHO -if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then - lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" -fi - - - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='exiv2' -PACKAGE_TARNAME='exiv2' -PACKAGE_VERSION='0.23' -PACKAGE_STRING='exiv2 0.23' -PACKAGE_BUGREPORT='ahuggel@gmx.net' -PACKAGE_URL='' - -ac_unique_file="src/exif.cpp" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_header_list= -ac_subst_vars='LTLIBOBJS -LIBOBJS -EXV_LIB_STATIC -ENABLE_XMP -EXPAT_LIBS -EXPAT_LDFLAGS -EXPAT_CPPFLAGS -COMMERCIAL_VERSION -DEP_TRACKING -HAVE_TIMEGM -GCC -GXX -HAVE_LIBZ -LIBM -LIBTOOL_DEPS -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -lt_ECHO -RANLIB -STRIP -AR -OBJDUMP -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -EGREP -GREP -SED -LIBTOOL -POSUB -LTLIBINTL -LIBINTL -INTLLIBS -LTLIBICONV -LIBICONV -INTL_MACOSX_LIBS -MSGMERGE -XGETTEXT -GMSGFMT -MSGFMT -USE_NLS -MKINSTALLDIRS -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -SET_MAKE -LN_S -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -CPP -ac_ct_CC -CFLAGS -CC -CXXCPP -OBJEXT -EXEEXT -ac_ct_CXX -CPPFLAGS -LDFLAGS -CXXFLAGS -CXX -VERSION -PACKAGE -EXIV2_LTVERSION -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_nls -with_gnu_ld -enable_rpath -with_libiconv_prefix -with_libintl_prefix -enable_shared -enable_static -with_pic -enable_fast_install -enable_libtool_lock -with_zlib -enable_dependency_tracking -enable_visibility -enable_lensdata -enable_commercial -enable_xmp -with_expat -' - ac_precious_vars='build_alias -host_alias -target_alias -CXX -CXXFLAGS -LDFLAGS -LIBS -CPPFLAGS -CCC -CXXCPP -CC -CFLAGS -CPP' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used" >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures exiv2 0.23 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/exiv2] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of exiv2 0.23:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-nls do not use Native Language Support - --disable-rpath do not hardcode runtime library paths - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) - --disable-dependency-tracking speeds up one-time build - --disable-visibility do not use symbol visibility support - --disable-lensdata do not use the lens database for Nikon lens names - --enable-commercial compile with the EXV_COMMERCIAL_VERSION symbol set - --disable-xmp do not compile XMP support and the XMP Toolkit - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-gnu-ld assume the C compiler uses GNU ld default=no - --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib - --without-libiconv-prefix don't search for libiconv in includedir and libdir - --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib - --without-libintl-prefix don't search for libintl in includedir and libdir - --with-pic try to use only PIC/non-PIC objects [default=use - both] - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-zlib=DIR root directory path of zlib installation defaults to - /usr/local or /usr if not found in /usr/local - --without-zlib to disable zlib usage completely - --with-expat[=DIR] use libexpat in DIR - -Some influential environment variables: - CXX C++ compiler command - CXXFLAGS C++ compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CXXCPP C++ preprocessor - CC C compiler command - CFLAGS C compiler flags - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to . -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -exiv2 configure 0.23 -generated by GNU Autoconf 2.68 - -Copyright (C) 2010 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_cxx_try_compile LINENO -# ---------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_compile - -# ac_fn_cxx_try_cpp LINENO -# ------------------------ -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_cpp - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_cxx_try_link LINENO -# ------------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_link - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ------------------------------ ## -## Report this to ahuggel@gmx.net ## -## ------------------------------ ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_check_type LINENO TYPE VAR INCLUDES -# ------------------------------------------- -# Tests whether TYPE exists after having included INCLUDES, setting cache -# variable VAR accordingly. -ac_fn_c_check_type () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof ($2)) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof (($2))) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - eval "$3=yes" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_type - -# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES -# --------------------------------------------- -# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR -# accordingly. -ac_fn_c_check_decl () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - as_decl_name=`echo $2|sed 's/ *(.*//'` - as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 -$as_echo_n "checking whether $as_decl_name is declared... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -#ifndef $as_decl_name -#ifdef __cplusplus - (void) $as_decl_use; -#else - (void) $as_decl_name; -#endif -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_decl -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by exiv2 $as_me 0.23, which was -generated by GNU Autoconf 2.68. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -as_fn_append ac_header_list " stdlib.h" -as_fn_append ac_header_list " unistd.h" -as_fn_append ac_header_list " sys/param.h" -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# See http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html -EXIV2_LTVERSION=12:0:0 -PACKAGE=$PACKAGE_NAME -VERSION=$PACKAGE_VERSION -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - - - - - -ac_config_headers="$ac_config_headers ./config/config.h" - -ac_aux_dir= -for ac_dir in ./config "$srcdir"/./config; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in ./config \"$srcdir\"/./config" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - - -# --------------------------------------------------------------------------- -# Checks for programs. -# --------------------------------------------------------------------------- -# Don't use -g to compile C++ code -ac_cv_prog_cxx_g=no -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -z "$CXX"; then - if test -n "$CCC"; then - CXX=$CCC - else - if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -$as_echo "$CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CXX" && break - done -fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -$as_echo "$ac_ct_CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="g++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_ct_CXX - fi -fi - - fi -fi -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 -$as_echo_n "checking whether the C++ compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C++ compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 -$as_echo_n "checking for C++ compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C++ compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 -$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } -if ${ac_cv_cxx_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GXX=yes -else - GXX= -fi -ac_test_CXXFLAGS=${CXXFLAGS+set} -ac_save_CXXFLAGS=$CXXFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -$as_echo_n "checking whether $CXX accepts -g... " >&6; } -if ${ac_cv_prog_cxx_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_cxx_werror_flag=$ac_cxx_werror_flag - ac_cxx_werror_flag=yes - ac_cv_prog_cxx_g=no - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -else - CXXFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - -else - ac_cxx_werror_flag=$ac_save_cxx_werror_flag - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -$as_echo "$ac_cv_prog_cxx_g" >&6; } -if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-g" - fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 -$as_echo_n "checking how to run the C++ preprocessor... " >&6; } -if test -z "$CXXCPP"; then - if ${ac_cv_prog_CXXCPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CXXCPP needs to be expanded - for CXXCPP in "$CXX -E" "/lib/cpp" - do - ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CXXCPP=$CXXCPP - -fi - CXXCPP=$ac_cv_prog_CXXCPP -else - ac_cv_prog_CXXCPP=$CXXCPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 -$as_echo "$CXXCPP" >&6; } -ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -# Don't use -g to compile C code -ac_cv_prog_cc_g=no -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - - -# --------------------------------------------------------------------------- -# i18n support -# --------------------------------------------------------------------------- - - - MKINSTALLDIRS= - if test -n "$ac_aux_dir"; then - case "$ac_aux_dir" in - /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; - *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; - esac - fi - if test -z "$MKINSTALLDIRS"; then - MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 -$as_echo_n "checking whether NLS is requested... " >&6; } - # Check whether --enable-nls was given. -if test "${enable_nls+set}" = set; then : - enableval=$enable_nls; USE_NLS=$enableval -else - USE_NLS=yes -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 -$as_echo "$USE_NLS" >&6; } - - - - - - -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "msgfmt", so it can be a program name with args. -set dummy msgfmt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MSGFMT+:} false; then : - $as_echo_n "(cached) " >&6 -else - case "$MSGFMT" in - [\\/]* | ?:[\\/]*) - ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - echo "$as_me: trying $ac_dir/$ac_word..." >&5 - if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && - (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - done - IFS="$ac_save_IFS" - test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" - ;; -esac -fi -MSGFMT="$ac_cv_path_MSGFMT" -if test "$MSGFMT" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 -$as_echo "$MSGFMT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - # Extract the first word of "gmsgfmt", so it can be a program name with args. -set dummy gmsgfmt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GMSGFMT+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $GMSGFMT in - [\\/]* | ?:[\\/]*) - ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" - ;; -esac -fi -GMSGFMT=$ac_cv_path_GMSGFMT -if test -n "$GMSGFMT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 -$as_echo "$GMSGFMT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "xgettext", so it can be a program name with args. -set dummy xgettext; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_XGETTEXT+:} false; then : - $as_echo_n "(cached) " >&6 -else - case "$XGETTEXT" in - [\\/]* | ?:[\\/]*) - ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - echo "$as_me: trying $ac_dir/$ac_word..." >&5 - if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && - (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - done - IFS="$ac_save_IFS" - test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" - ;; -esac -fi -XGETTEXT="$ac_cv_path_XGETTEXT" -if test "$XGETTEXT" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 -$as_echo "$XGETTEXT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - rm -f messages.po - - -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "msgmerge", so it can be a program name with args. -set dummy msgmerge; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MSGMERGE+:} false; then : - $as_echo_n "(cached) " >&6 -else - case "$MSGMERGE" in - [\\/]* | ?:[\\/]*) - ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - echo "$as_me: trying $ac_dir/$ac_word..." >&5 - if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then - ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - done - IFS="$ac_save_IFS" - test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" - ;; -esac -fi -MSGMERGE="$ac_cv_path_MSGMERGE" -if test "$MSGMERGE" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 -$as_echo "$MSGMERGE" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - if test "$GMSGFMT" != ":"; then - if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && - (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` - { $as_echo "$as_me:${as_lineno-$LINENO}: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 -$as_echo "found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; } - GMSGFMT=":" - fi - fi - - if test "$XGETTEXT" != ":"; then - if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && - (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5 -$as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } - XGETTEXT=":" - fi - rm -f messages.po - fi - - ac_config_commands="$ac_config_commands default-1" - - - - if test "X$prefix" = "XNONE"; then - acl_final_prefix="$ac_default_prefix" - else - acl_final_prefix="$prefix" - fi - if test "X$exec_prefix" = "XNONE"; then - acl_final_exec_prefix='${prefix}' - else - acl_final_exec_prefix="$exec_prefix" - fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" - prefix="$acl_save_prefix" - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5 -$as_echo_n "checking for ld used by GCC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | [A-Za-z]:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${acl_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - acl_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break ;; - *) - test "$with_gnu_ld" != yes && break ;; - esac - fi - done - IFS="$ac_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. -fi -fi - -LD="$acl_cv_path_LD" -if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${acl_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU ld's only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$acl_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$acl_cv_prog_gnu_ld - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 -$as_echo_n "checking for shared library run path origin... " >&6; } -if ${acl_cv_rpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - - CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ - ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh - . ./conftest.sh - rm -f ./conftest.sh - acl_cv_rpath=done - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 -$as_echo "$acl_cv_rpath" >&6; } - wl="$acl_cv_wl" - libext="$acl_cv_libext" - shlibext="$acl_cv_shlibext" - hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" - hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - hardcode_direct="$acl_cv_hardcode_direct" - hardcode_minus_L="$acl_cv_hardcode_minus_L" - # Check whether --enable-rpath was given. -if test "${enable_rpath+set}" = set; then : - enableval=$enable_rpath; : -else - enable_rpath=yes -fi - - - - - - - - - use_additional=yes - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - -# Check whether --with-libiconv-prefix was given. -if test "${with_libiconv_prefix+set}" = set; then : - withval=$with_libiconv_prefix; - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi - -fi - - LIBICONV= - LTLIBICONV= - INCICONV= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='iconv ' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" - else - : - fi - else - found_dir= - found_la= - found_so= - found_a= - if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then - found_dir="$additional_libdir" - found_so="$additional_libdir/lib$name.$shlibext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - else - if test -f "$additional_libdir/lib$name.$libext"; then - found_dir="$additional_libdir" - found_a="$additional_libdir/lib$name.$libext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then - found_dir="$dir" - found_so="$dir/lib$name.$shlibext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - else - if test -f "$dir/lib$name.$libext"; then - found_dir="$dir" - found_a="$dir/lib$name.$libext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - if test "$hardcode_direct" = yes; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - haveit= - for x in $LDFLAGS $LIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" - fi - if test "$hardcode_minus_L" != no; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" - fi - fi - additional_includedir= - case "$found_dir" in - */lib | */lib/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INCICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - if test -n "$found_la"; then - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" - ;; - esac - done - fi - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" - else - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - for found_dir in $ltrpathdirs; do - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" - done - fi - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 -$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } -if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : - $as_echo_n "(cached) " >&6 -else - gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" - gt_save_LIBS="$LIBS" - LIBS="$LIBS -framework CoreFoundation" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -CFPreferencesCopyAppValue(NULL, NULL) - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gt_cv_func_CFPreferencesCopyAppValue=yes -else - gt_cv_func_CFPreferencesCopyAppValue=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 -$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } - if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then - -$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h - - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 -$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } -if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : - $as_echo_n "(cached) " >&6 -else - gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" - gt_save_LIBS="$LIBS" - LIBS="$LIBS -framework CoreFoundation" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -CFLocaleCopyCurrent(); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gt_cv_func_CFLocaleCopyCurrent=yes -else - gt_cv_func_CFLocaleCopyCurrent=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 -$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } - if test $gt_cv_func_CFLocaleCopyCurrent = yes; then - -$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h - - fi - INTL_MACOSX_LIBS= - if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then - INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" - fi - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 -$as_echo_n "checking whether NLS is requested... " >&6; } - # Check whether --enable-nls was given. -if test "${enable_nls+set}" = set; then : - enableval=$enable_nls; USE_NLS=$enableval -else - USE_NLS=yes -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 -$as_echo "$USE_NLS" >&6; } - - - - - LIBINTL= - LTLIBINTL= - POSUB= - - if test "$USE_NLS" = "yes"; then - gt_use_preinstalled_gnugettext=no - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 -$as_echo_n "checking for GNU gettext in libc... " >&6; } -if ${gt_cv_func_gnugettext1_libc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings; -int -main () -{ -bindtextdomain ("", ""); -return * gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gt_cv_func_gnugettext1_libc=yes -else - gt_cv_func_gnugettext1_libc=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext1_libc" >&5 -$as_echo "$gt_cv_func_gnugettext1_libc" >&6; } - - if test "$gt_cv_func_gnugettext1_libc" != "yes"; then - - - - - - am_save_CPPFLAGS="$CPPFLAGS" - - for element in $INCICONV; do - haveit= - for x in $CPPFLAGS; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" - fi - done - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 -$as_echo_n "checking for iconv... " >&6; } -if ${am_cv_func_iconv+:} false; then : - $as_echo_n "(cached) " >&6 -else - - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - am_cv_func_iconv=yes -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - am_cv_lib_iconv=yes - am_cv_func_iconv=yes -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$am_save_LIBS" - fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 -$as_echo "$am_cv_func_iconv" >&6; } - if test "$am_cv_func_iconv" = yes; then - -$as_echo "#define HAVE_ICONV 1" >>confdefs.h - - fi - if test "$am_cv_lib_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 -$as_echo_n "checking how to link with libiconv... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 -$as_echo "$LIBICONV" >&6; } - else - CPPFLAGS="$am_save_CPPFLAGS" - LIBICONV= - LTLIBICONV= - fi - - - - - - - use_additional=yes - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - -# Check whether --with-libintl-prefix was given. -if test "${with_libintl_prefix+set}" = set; then : - withval=$with_libintl_prefix; - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi - -fi - - LIBINTL= - LTLIBINTL= - INCINTL= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='intl ' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" - else - : - fi - else - found_dir= - found_la= - found_so= - found_a= - if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then - found_dir="$additional_libdir" - found_so="$additional_libdir/lib$name.$shlibext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - else - if test -f "$additional_libdir/lib$name.$libext"; then - found_dir="$additional_libdir" - found_a="$additional_libdir/lib$name.$libext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then - found_dir="$dir" - found_so="$dir/lib$name.$shlibext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - else - if test -f "$dir/lib$name.$libext"; then - found_dir="$dir" - found_a="$dir/lib$name.$libext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - else - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - if test "$hardcode_direct" = yes; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - else - if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - haveit= - for x in $LDFLAGS $LIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" - fi - if test "$hardcode_minus_L" != no; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - else - LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" - else - LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" - fi - fi - additional_includedir= - case "$found_dir" in - */lib | */lib/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INCINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - if test -n "$found_la"; then - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" - ;; - esac - done - fi - else - LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" - else - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - for found_dir in $ltrpathdirs; do - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" - done - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 -$as_echo_n "checking for GNU gettext in libintl... " >&6; } -if ${gt_cv_func_gnugettext1_libintl+:} false; then : - $as_echo_n "(cached) " >&6 -else - gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCINTL" - gt_save_LIBS="$LIBS" - LIBS="$LIBS $LIBINTL" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (const char *); -int -main () -{ -bindtextdomain ("", ""); -return * gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("") - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gt_cv_func_gnugettext1_libintl=yes -else - gt_cv_func_gnugettext1_libintl=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then - LIBS="$LIBS $LIBICONV" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (const char *); -int -main () -{ -bindtextdomain ("", ""); -return * gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("") - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - LIBINTL="$LIBINTL $LIBICONV" - LTLIBINTL="$LTLIBINTL $LTLIBICONV" - gt_cv_func_gnugettext1_libintl=yes - -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - fi - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext1_libintl" >&5 -$as_echo "$gt_cv_func_gnugettext1_libintl" >&6; } - fi - - if test "$gt_cv_func_gnugettext1_libc" = "yes" \ - || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ - && test "$PACKAGE" != gettext-runtime \ - && test "$PACKAGE" != gettext-tools; }; then - gt_use_preinstalled_gnugettext=yes - else - LIBINTL= - LTLIBINTL= - INCINTL= - fi - - - - if test -n "$INTL_MACOSX_LIBS"; then - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" - LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" - fi - fi - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - -$as_echo "#define ENABLE_NLS 1" >>confdefs.h - - else - USE_NLS=no - fi - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 -$as_echo_n "checking whether to use NLS... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 -$as_echo "$USE_NLS" >&6; } - if test "$USE_NLS" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 -$as_echo_n "checking where the gettext function comes from... " >&6; } - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then - gt_source="external libintl" - else - gt_source="libc" - fi - else - gt_source="included intl directory" - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 -$as_echo "$gt_source" >&6; } - fi - - if test "$USE_NLS" = "yes"; then - - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 -$as_echo_n "checking how to link with libintl... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 -$as_echo "$LIBINTL" >&6; } - - for element in $INCINTL; do - haveit= - for x in $CPPFLAGS; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" - fi - done - - fi - - -$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h - - -$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h - - fi - - POSUB=po - fi - - - - INTLLIBS="$LIBINTL" - - - - - - - -# --------------------------------------------------------------------------- -# Libtool support -# --------------------------------------------------------------------------- -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.2.6' -macro_revision='1.3012' - - - - - - - - - - - - - -ltmain="$ac_aux_dir/ltmain.sh" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$ac_tool_prefix"; then - for ac_prog in "dumpbin -symbols" "link -dump -symbols" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in "dumpbin -symbols" "link -dump -symbols" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:6431: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:6434: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:6437: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ - = "XX$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n $lt_cv_sys_max_cmd_len ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 -$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 -$as_echo "$xsi_shell" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } -lt_shell_append=no -( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 -$as_echo "$lt_shell_append" >&6; } - - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. -set dummy ${ac_tool_prefix}ar; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AR="${ac_tool_prefix}ar" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_AR"; then - ac_ct_AR=$AR - # Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_AR="ar" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -else - AR="$ac_cv_prog_AR" -fi - -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_save_LIBS="$LIBS" - lt_save_CFLAGS="$CFLAGS" - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS="$lt_save_LIBS" - CFLAGS="$lt_save_CFLAGS" - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } -fi - - - - - - - - - - - - - - - - - - - - - - -# Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '#line 7631 "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -z "$CXX"; then - if test -n "$CCC"; then - CXX=$CCC - else - if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -$as_echo "$CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CXX" && break - done -fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -$as_echo "$ac_ct_CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="g++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_ct_CXX - fi -fi - - fi -fi -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 -$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } -if ${ac_cv_cxx_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GXX=yes -else - GXX= -fi -ac_test_CXXFLAGS=${CXXFLAGS+set} -ac_save_CXXFLAGS=$CXXFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -$as_echo_n "checking whether $CXX accepts -g... " >&6; } -if ${ac_cv_prog_cxx_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_cxx_werror_flag=$ac_cxx_werror_flag - ac_cxx_werror_flag=yes - ac_cv_prog_cxx_g=no - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -else - CXXFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - -else - ac_cxx_werror_flag=$ac_save_cxx_werror_flag - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -$as_echo "$ac_cv_prog_cxx_g" >&6; } -if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-g" - fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 -$as_echo_n "checking how to run the C++ preprocessor... " >&6; } -if test -z "$CXXCPP"; then - if ${ac_cv_prog_CXXCPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CXXCPP needs to be expanded - for CXXCPP in "$CXX -E" "/lib/cpp" - do - ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CXXCPP=$CXXCPP - -fi - CXXCPP=$ac_cv_prog_CXXCPP -else - ac_cv_prog_CXXCPP=$CXXCPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 -$as_echo "$CXXCPP" >&6; } -ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -_lt_caught_CXX_error=yes; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -else - _lt_caught_CXX_error=yes -fi - - - - - -# Set options - - - - enable_dlopen=no - - - enable_win32_dll=no - - - # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - - # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_static=yes -fi - - - - - - - - - - -# Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; pic_mode="$withval" -else - pic_mode=default -fi - - -test -z "$pic_mode" && pic_mode=default - - - - - - - - # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - - - - - - - - - - - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC="$CC" -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test "$GCC" = yes; then - lt_prog_compiler_no_builtin_flag=' -fno-builtin' - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9423: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:9427: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } - - if test "$GCC" = yes; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - pgcc* | pgf77* | pgf90* | pgf95*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl*) - # IBM XL C 8.0/Fortran 10.1 on PPC - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - *Sun\ F*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 -$as_echo "$lt_prog_compiler_pic" >&6; } - - - - - - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9762: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:9766: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works" = xyes; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test x"$lt_cv_prog_compiler_static_works" = xyes; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9867: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:9871: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9922: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:9926: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - linux* | k*bsd*-gnu) - link_all_deplibs=no - ;; - esac - - ld_shlibs=yes - if test "$with_gnu_ld" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.9.1, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag= - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld='-rpath $libdir' - archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = no; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - link_all_deplibs=no - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - archive_cmds_need_lc=yes - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w "$srcfile"`' - enable_shared_with_static_runtimes=yes - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - whole_archive_flag_spec='' - link_all_deplibs=yes - allow_undefined_flag="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=echo - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - freebsd1*) - ld_shlibs=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld='+b $libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo(void) {} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='${wl}-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='${wl}-z,text' - allow_undefined_flag='${wl}-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='${wl}-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test "$ld_shlibs" = no && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - archive_cmds_need_lc=no - else - archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5 -$as_echo "$archive_cmds_need_lc" >&6; } - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` - else - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[123]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - ;; - -interix[3-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - # Some binutils ld are patched to set DT_RUNPATH - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test "X$hardcode_automatic" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test "$hardcode_action" = relink || - test "$inherit_rpath" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line 12305 "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line 12401 "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report which library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC="$lt_save_CC" - - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - -archive_cmds_need_lc_CXX=no -allow_undefined_flag_CXX= -always_export_symbols_CXX=no -archive_expsym_cmds_CXX= -compiler_needs_object_CXX=no -export_dynamic_flag_spec_CXX= -hardcode_direct_CXX=no -hardcode_direct_absolute_CXX=no -hardcode_libdir_flag_spec_CXX= -hardcode_libdir_flag_spec_ld_CXX= -hardcode_libdir_separator_CXX= -hardcode_minus_L_CXX=no -hardcode_shlibpath_var_CXX=unsupported -hardcode_automatic_CXX=no -inherit_rpath_CXX=no -module_cmds_CXX= -module_expsym_cmds_CXX= -link_all_deplibs_CXX=unknown -old_archive_cmds_CXX=$old_archive_cmds -no_undefined_flag_CXX= -whole_archive_flag_spec_CXX= -enable_shared_with_static_runtimes_CXX=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -objext_CXX=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - - # save warnings/boilerplate of simple test code - ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - - ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - compiler=$CC - compiler_CXX=$CC - for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` - - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' - else - lt_prog_compiler_no_builtin_flag_CXX= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec_CXX= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - ld_shlibs_CXX=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds_CXX='' - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - file_list_spec_CXX='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct_CXX=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L_CXX=yes - hardcode_libdir_flag_spec_CXX='-L$libdir' - hardcode_libdir_separator_CXX= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec_CXX='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - always_export_symbols_CXX=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag_CXX='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - - archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag_CXX="-z nodefs" - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag_CXX=' ${wl}-bernotok' - allow_undefined_flag_CXX=' ${wl}-berok' - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_CXX='$convenience' - archive_cmds_need_lc_CXX=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag_CXX=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs_CXX=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec_CXX='-L$libdir' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=no - enable_shared_with_static_runtimes_CXX=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs_CXX=no - fi - ;; - darwin* | rhapsody*) - - - archive_cmds_need_lc_CXX=no - hardcode_direct_CXX=no - hardcode_automatic_CXX=yes - hardcode_shlibpath_var_CXX=unsupported - whole_archive_flag_spec_CXX='' - link_all_deplibs_CXX=yes - allow_undefined_flag_CXX="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=echo - archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - if test "$lt_cv_apple_cc_single_mod" != "yes"; then - archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi - - else - ld_shlibs_CXX=no - fi - - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - freebsd[12]*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - ld_shlibs_CXX=no - ;; - - freebsd-elf*) - archive_cmds_need_lc_CXX=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - ld_shlibs_CXX=yes - ;; - - gnu*) - ;; - - hpux9*) - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - export_dynamic_flag_spec_CXX='${wl}-E' - hardcode_direct_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' - ;; - *) - if test "$GXX" = yes; then - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - export_dynamic_flag_spec_CXX='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - ;; - *) - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - interix[3-9]*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' - fi - fi - link_all_deplibs_CXX=yes - ;; - esac - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - inherit_rpath_CXX=yes - ;; - - linux* | k*bsd*-gnu) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - archive_cmds_need_lc_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [1-5]* | *pgcpp\ [1-5]*) - prelink_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' - old_archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ - $RANLIB $oldlib' - archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - archive_expsym_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 will use weak symbols - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' - ;; - xl*) - # IBM XL 8.0 on PPC, with GNU ld - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - hardcode_libdir_flag_spec_CXX='-R$libdir' - whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object_CXX=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='echo' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - ld_shlibs_CXX=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - ld_shlibs_CXX=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - hardcode_direct_absolute_CXX=yes - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - export_dynamic_flag_spec_CXX='${wl}-E' - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=echo - else - ld_shlibs_CXX=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - hardcode_libdir_separator_CXX=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - cxx*) - case $host in - osf3*) - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - ;; - *) - allow_undefined_flag_CXX=' -expect_unresolved \*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - ;; - esac - - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) - archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC*) - # Sun C++ 4.2, 5.x and Centerline C++ - archive_cmds_need_lc_CXX=yes - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_shlibpath_var_CXX=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' - ;; - esac - link_all_deplibs_CXX=yes - - output_verbose_link_cmd='echo' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - no_undefined_flag_CXX=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' - fi - - hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag_CXX='${wl}-z,text' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag_CXX='${wl}-z,text' - allow_undefined_flag_CXX='${wl}-z,nodefs' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - export_dynamic_flag_spec_CXX='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } - test "$ld_shlibs_CXX" = no && can_build_shared=no - - GCC_CXX="$GXX" - LD_CXX="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - # Dependencies to place before and after the object being linked: -predep_objects_CXX= -postdep_objects_CXX= -predeps_CXX= -postdeps_CXX= -compiler_lib_search_path_CXX= - -cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF - -if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case $p in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - else - prev= - fi - - if test "$pre_test_object_deps_done" = no; then - case $p in - -L* | -R*) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$compiler_lib_search_path_CXX"; then - compiler_lib_search_path_CXX="${prev}${p}" - else - compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$postdeps_CXX"; then - postdeps_CXX="${prev}${p}" - else - postdeps_CXX="${postdeps_CXX} ${prev}${p}" - fi - fi - ;; - - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$predep_objects_CXX"; then - predep_objects_CXX="$p" - else - predep_objects_CXX="$predep_objects_CXX $p" - fi - else - if test -z "$postdep_objects_CXX"; then - postdep_objects_CXX="$p" - else - postdep_objects_CXX="$postdep_objects_CXX $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling CXX test program" -fi - -$RM -f confest.$objext - -# PORTME: override above test on systems where it is broken -case $host_os in -interix[3-9]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - predep_objects_CXX= - postdep_objects_CXX= - postdeps_CXX= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac - - -case " $postdeps_CXX " in -*" -lc "*) archive_cmds_need_lc_CXX=no ;; -esac - compiler_lib_search_dirs_CXX= -if test -n "${compiler_lib_search_path_CXX}"; then - compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lt_prog_compiler_wl_CXX= -lt_prog_compiler_pic_CXX= -lt_prog_compiler_static_CXX= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } - - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic_CXX='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic_CXX='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - lt_prog_compiler_pic_CXX= - ;; - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic_CXX=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - else - case $host_os in - aix[4-9]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - else - lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - dgux*) - case $cc_basename in - ec++*) - lt_prog_compiler_pic_CXX='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - lt_prog_compiler_pic_CXX='+Z' - fi - ;; - aCC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_CXX='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - lt_prog_compiler_wl_CXX='--backend -Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - lt_prog_compiler_static_CXX='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fpic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - xlc* | xlC*) - # IBM XL 8.0 on PPC - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-qpic' - lt_prog_compiler_static_CXX='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - lt_prog_compiler_pic_CXX='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd* | netbsdelf*-gnu) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - lt_prog_compiler_wl_CXX='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - lt_prog_compiler_pic_CXX='-pic' - ;; - cxx*) - # Digital/Compaq C++ - lt_prog_compiler_wl_CXX='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC*) - # Sun C++ 4.2, 5.x and Centerline C++ - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - lt_prog_compiler_pic_CXX='-pic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - lcc*) - # Lucid - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - lt_prog_compiler_pic_CXX='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - lt_prog_compiler_can_build_shared_CXX=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic_CXX= - ;; - *) - lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_CXX" >&5 -$as_echo "$lt_prog_compiler_pic_CXX" >&6; } - - - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } -if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works_CXX=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14357: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:14361: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works_CXX=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then - case $lt_prog_compiler_pic_CXX in - "" | " "*) ;; - *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; - esac -else - lt_prog_compiler_pic_CXX= - lt_prog_compiler_can_build_shared_CXX=no -fi - -fi - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works_CXX=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works_CXX=yes - fi - else - lt_cv_prog_compiler_static_works_CXX=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } - -if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then - : -else - lt_prog_compiler_static_CXX= -fi - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14456: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:14460: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14508: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:14512: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - case $host_os in - aix[4-9]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - export_symbols_cmds_CXX="$ltdll_cmds" - ;; - cygwin* | mingw* | cegcc*) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - ;; - linux* | k*bsd*-gnu) - link_all_deplibs_CXX=no - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } -test "$ld_shlibs_CXX" = no && can_build_shared=no - -with_gnu_ld_CXX=$with_gnu_ld - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc_CXX" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc_CXX=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds_CXX in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl_CXX - pic_flag=$lt_prog_compiler_pic_CXX - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag_CXX - allow_undefined_flag_CXX= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - archive_cmds_need_lc_CXX=no - else - archive_cmds_need_lc_CXX=yes - fi - allow_undefined_flag_CXX=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_CXX" >&5 -$as_echo "$archive_cmds_need_lc_CXX" >&6; } - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[123]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - ;; - -interix[3-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - # Some binutils ld are patched to set DT_RUNPATH - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action_CXX= -if test -n "$hardcode_libdir_flag_spec_CXX" || - test -n "$runpath_var_CXX" || - test "X$hardcode_automatic_CXX" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct_CXX" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && - test "$hardcode_minus_L_CXX" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action_CXX=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_CXX=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_CXX=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 -$as_echo "$hardcode_action_CXX" >&6; } - -if test "$hardcode_action_CXX" = relink || - test "$inherit_rpath_CXX" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - - fi # test -n "$compiler" - - CC=$lt_save_CC - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - - - -# --------------------------------------------------------------------------- -# Checks for libraries. -# --------------------------------------------------------------------------- -LIBM= -case $host in -*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _mwvalidcheckl in -lmw" >&5 -$as_echo_n "checking for _mwvalidcheckl in -lmw... " >&6; } -if ${ac_cv_lib_mw__mwvalidcheckl+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lmw $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char _mwvalidcheckl (); -int -main () -{ -return _mwvalidcheckl (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_mw__mwvalidcheckl=yes -else - ac_cv_lib_mw__mwvalidcheckl=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mw__mwvalidcheckl" >&5 -$as_echo "$ac_cv_lib_mw__mwvalidcheckl" >&6; } -if test "x$ac_cv_lib_mw__mwvalidcheckl" = xyes; then : - LIBM="-lmw" -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5 -$as_echo_n "checking for cos in -lm... " >&6; } -if ${ac_cv_lib_m_cos+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lm $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char cos (); -int -main () -{ -return cos (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_m_cos=yes -else - ac_cv_lib_m_cos=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5 -$as_echo "$ac_cv_lib_m_cos" >&6; } -if test "x$ac_cv_lib_m_cos" = xyes; then : - LIBM="$LIBM -lm" -fi - - ;; -*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5 -$as_echo_n "checking for cos in -lm... " >&6; } -if ${ac_cv_lib_m_cos+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lm $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char cos (); -int -main () -{ -return cos (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_m_cos=yes -else - ac_cv_lib_m_cos=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5 -$as_echo "$ac_cv_lib_m_cos" >&6; } -if test "x$ac_cv_lib_m_cos" = xyes; then : - LIBM="-lm" -fi - - ;; -esac - - -LIBS="$LIBS $LIBM" -# -# Handle user hints -# -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if zlib is wanted" >&5 -$as_echo_n "checking if zlib is wanted... " >&6; } - -# Check whether --with-zlib was given. -if test "${with_zlib+set}" = set; then : - withval=$with_zlib; if test "$withval" != no ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - ZLIB_HOME="$withval" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -else - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -ZLIB_HOME=/usr/local -if test ! -f "${ZLIB_HOME}/include/zlib.h" -then - ZLIB_HOME=/usr -fi - -fi - -# -# Locate zlib, if wanted -# -if test -n "${ZLIB_HOME}" -then - ZLIB_OLD_LDFLAGS=$LDFLAGS - ZLIB_OLD_CPPFLAGS=$CPPFLAGS - # - # Adding /usr/lib or /usr/include to the flags/libs may - # hurt if using a compiler not installed in the standard - # place. - # - if test "${ZLIB_HOME}" != "/usr" - then - LDFLAGS="$LDFLAGS -L${ZLIB_HOME}/lib" - CPPFLAGS="$CPPFLAGS -I${ZLIB_HOME}/include" - fi - - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflateEnd in -lz" >&5 -$as_echo_n "checking for inflateEnd in -lz... " >&6; } -if ${ac_cv_lib_z_inflateEnd+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lz $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char inflateEnd (); -int -main () -{ -return inflateEnd (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_z_inflateEnd=yes -else - ac_cv_lib_z_inflateEnd=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateEnd" >&5 -$as_echo "$ac_cv_lib_z_inflateEnd" >&6; } -if test "x$ac_cv_lib_z_inflateEnd" = xyes; then : - zlib_cv_libz=yes -else - zlib_cv_libz=no -fi - - ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" -if test "x$ac_cv_header_zlib_h" = xyes; then : - zlib_cv_zlib_h=yes -else - zlib_cv_zlib_h=no -fi - - - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - if test "$zlib_cv_libz" = "yes" -a "$zlib_cv_zlib_h" = "yes" - then - # - # If both library and header were found, use them - # - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflateEnd in -lz" >&5 -$as_echo_n "checking for inflateEnd in -lz... " >&6; } -if ${ac_cv_lib_z_inflateEnd+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lz $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char inflateEnd (); -int -main () -{ -return inflateEnd (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_z_inflateEnd=yes -else - ac_cv_lib_z_inflateEnd=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateEnd" >&5 -$as_echo "$ac_cv_lib_z_inflateEnd" >&6; } -if test "x$ac_cv_lib_z_inflateEnd" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBZ 1 -_ACEOF - - LIBS="-lz $LIBS" - -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking zlib in ${ZLIB_HOME}" >&5 -$as_echo_n "checking zlib in ${ZLIB_HOME}... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } - HAVE_LIBZ=1 - else - # - # If either header or library was not found, revert and bomb - # - { $as_echo "$as_me:${as_lineno-$LINENO}: checking zlib in ${ZLIB_HOME}" >&5 -$as_echo_n "checking zlib in ${ZLIB_HOME}... " >&6; } - LDFLAGS="$ZLIB_OLD_LDFLAGS" - CPPFLAGS="$ZLIB_OLD_CPPFLAGS" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } - as_fn_error $? "either specify a valid zlib installation with --with-zlib=DIR or disable zlib usage with --without-zlib" "$LINENO" 5 - fi -fi - - -HAVE_LIBZ=$HAVE_LIBZ - - - - - - - am_save_CPPFLAGS="$CPPFLAGS" - - for element in $INCICONV; do - haveit= - for x in $CPPFLAGS; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" - fi - done - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 -$as_echo_n "checking for iconv... " >&6; } -if ${am_cv_func_iconv+:} false; then : - $as_echo_n "(cached) " >&6 -else - - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - am_cv_func_iconv=yes -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - am_cv_lib_iconv=yes - am_cv_func_iconv=yes -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$am_save_LIBS" - fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 -$as_echo "$am_cv_func_iconv" >&6; } - if test "$am_cv_func_iconv" = yes; then - -$as_echo "#define HAVE_ICONV 1" >>confdefs.h - - fi - if test "$am_cv_lib_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 -$as_echo_n "checking how to link with libiconv... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 -$as_echo "$LIBICONV" >&6; } - else - CPPFLAGS="$am_save_CPPFLAGS" - LIBICONV= - LTLIBICONV= - fi - - - - if test "$am_cv_func_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5 -$as_echo_n "checking for iconv declaration... " >&6; } - if ${am_cv_proto_iconv+:} false; then : - $as_echo_n "(cached) " >&6 -else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -extern -#ifdef __cplusplus -"C" -#endif -#if defined(__STDC__) || defined(__cplusplus) -size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); -#else -size_t iconv(); -#endif - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - am_cv_proto_iconv_arg1="" -else - am_cv_proto_iconv_arg1="const" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" -fi - - am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_t:- - }$am_cv_proto_iconv" >&5 -$as_echo "${ac_t:- - }$am_cv_proto_iconv" >&6; } - -cat >>confdefs.h <<_ACEOF -#define ICONV_CONST $am_cv_proto_iconv_arg1 -_ACEOF - - fi - - -# --------------------------------------------------------------------------- -# Checks for header files. -# --------------------------------------------------------------------------- -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -for ac_header in libintl.h locale.h malloc.h stdint.h stdlib.h string.h unistd.h sys/mman.h utime.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -# --------------------------------------------------------------------------- -# Checks for typedefs, structures, and compiler characteristics. -# --------------------------------------------------------------------------- -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 -$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; } -if ${ac_cv_header_stdbool_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#ifndef bool - "error: bool is not defined" -#endif -#ifndef false - "error: false is not defined" -#endif -#if false - "error: false is not 0" -#endif -#ifndef true - "error: true is not defined" -#endif -#if true != 1 - "error: true is not 1" -#endif -#ifndef __bool_true_false_are_defined - "error: __bool_true_false_are_defined is not defined" -#endif - - struct s { _Bool s: 1; _Bool t; } s; - - char a[true == 1 ? 1 : -1]; - char b[false == 0 ? 1 : -1]; - char c[__bool_true_false_are_defined == 1 ? 1 : -1]; - char d[(bool) 0.5 == true ? 1 : -1]; - /* See body of main program for 'e'. */ - char f[(_Bool) 0.0 == false ? 1 : -1]; - char g[true]; - char h[sizeof (_Bool)]; - char i[sizeof s.t]; - enum { j = false, k = true, l = false * true, m = true * 256 }; - /* The following fails for - HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ - _Bool n[m]; - char o[sizeof n == m * sizeof n[0] ? 1 : -1]; - char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; - /* Catch a bug in an HP-UX C compiler. See - http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html - http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html - */ - _Bool q = true; - _Bool *pq = &q; - -int -main () -{ - - bool e = &s; - *pq |= q; - *pq |= ! q; - /* Refer to every declared value, to avoid compiler optimizations. */ - return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l - + !m + !n + !o + !p + !q + !pq); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdbool_h=yes -else - ac_cv_header_stdbool_h=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 -$as_echo "$ac_cv_header_stdbool_h" >&6; } -ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" -if test "x$ac_cv_type__Bool" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE__BOOL 1 -_ACEOF - - -fi - -if test $ac_cv_header_stdbool_h = yes; then - -$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 -$as_echo_n "checking for an ANSI C-conforming const... " >&6; } -if ${ac_cv_c_const+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -/* FIXME: Include the comments suggested by Paul. */ -#ifndef __cplusplus - /* Ultrix mips cc rejects this. */ - typedef int charset[2]; - const charset cs; - /* SunOS 4.1.1 cc rejects this. */ - char const *const *pcpcc; - char **ppc; - /* NEC SVR4.0.2 mips cc rejects this. */ - struct point {int x, y;}; - static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in - an arm of an if-expression whose if-part is not a constant - expression */ - const char *g = "string"; - pcpcc = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++pcpcc; - ppc = (char**) pcpcc; - pcpcc = (char const *const *) ppc; - { /* SCO 3.2v4 cc rejects this. */ - char *t; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - if (s) return 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* AIX XL C 1.02.0.0 rejects this saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; }; - struct s *b; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - if (!foo) return 0; - } - return !cs[0] && !zero.x; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_const=yes -else - ac_cv_c_const=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 -$as_echo "$ac_cv_c_const" >&6; } -if test $ac_cv_c_const = no; then - -$as_echo "#define const /**/" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 -$as_echo_n "checking for inline... " >&6; } -if ${ac_cv_c_inline+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_c_inline=no -for ac_kw in inline __inline__ __inline; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifndef __cplusplus -typedef int foo_t; -static $ac_kw foo_t static_foo () {return 0; } -$ac_kw foo_t foo () {return 0; } -#endif - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_inline=$ac_kw -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - test "$ac_cv_c_inline" != no && break -done - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 -$as_echo "$ac_cv_c_inline" >&6; } - -case $ac_cv_c_inline in - inline | yes) ;; - *) - case $ac_cv_c_inline in - no) ac_val=;; - *) ac_val=$ac_cv_c_inline;; - esac - cat >>confdefs.h <<_ACEOF -#ifndef __cplusplus -#define inline $ac_val -#endif -_ACEOF - ;; -esac - -ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" -if test "x$ac_cv_type_pid_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define pid_t int -_ACEOF - -fi - -ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 -$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } -if ${ac_cv_struct_tm+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include - -int -main () -{ -struct tm tm; - int *p = &tm.tm_sec; - return !p; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_struct_tm=time.h -else - ac_cv_struct_tm=sys/time.h -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 -$as_echo "$ac_cv_struct_tm" >&6; } -if test $ac_cv_struct_tm = sys/time.h; then - -$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h - -fi - -#AC_TYPE_UINT8_T -#AC_TYPE_UINT16_T -#AC_TYPE_UINT32_T -#AC_TYPE_INT16_T -#AC_TYPE_INT32_T -GXX=$GXX - -GCC=$GCC - - -# --------------------------------------------------------------------------- -# Checks for library functions. -# --------------------------------------------------------------------------- -#AC_FUNC_MKTIME - fails when using old autoconf with gcc-4.3, see eg. Debian Bug#425544, and we don't use the result anyway - - - - for ac_header in $ac_header_list -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - - - - - -for ac_func in getpagesize -do : - ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" -if test "x$ac_cv_func_getpagesize" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETPAGESIZE 1 -_ACEOF - -fi -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 -$as_echo_n "checking for working mmap... " >&6; } -if ${ac_cv_func_mmap_fixed_mapped+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_mmap_fixed_mapped=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -/* malloc might have been renamed as rpl_malloc. */ -#undef malloc - -/* Thanks to Mike Haertel and Jim Avera for this test. - Here is a matrix of mmap possibilities: - mmap private not fixed - mmap private fixed at somewhere currently unmapped - mmap private fixed at somewhere already mapped - mmap shared not fixed - mmap shared fixed at somewhere currently unmapped - mmap shared fixed at somewhere already mapped - For private mappings, we should verify that changes cannot be read() - back from the file, nor mmap's back from the file at a different - address. (There have been systems where private was not correctly - implemented like the infamous i386 svr4.0, and systems where the - VM page cache was not coherent with the file system buffer cache - like early versions of FreeBSD and possibly contemporary NetBSD.) - For shared mappings, we should conversely verify that changes get - propagated back to all the places they're supposed to be. - - Grep wants private fixed already mapped. - The main things grep needs to know about mmap are: - * does it exist and is it safe to write into the mmap'd area - * how to use it (BSD variants) */ - -#include -#include - -#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H -char *malloc (); -#endif - -/* This mess was copied from the GNU getpagesize.h. */ -#ifndef HAVE_GETPAGESIZE -# ifdef _SC_PAGESIZE -# define getpagesize() sysconf(_SC_PAGESIZE) -# else /* no _SC_PAGESIZE */ -# ifdef HAVE_SYS_PARAM_H -# include -# ifdef EXEC_PAGESIZE -# define getpagesize() EXEC_PAGESIZE -# else /* no EXEC_PAGESIZE */ -# ifdef NBPG -# define getpagesize() NBPG * CLSIZE -# ifndef CLSIZE -# define CLSIZE 1 -# endif /* no CLSIZE */ -# else /* no NBPG */ -# ifdef NBPC -# define getpagesize() NBPC -# else /* no NBPC */ -# ifdef PAGESIZE -# define getpagesize() PAGESIZE -# endif /* PAGESIZE */ -# endif /* no NBPC */ -# endif /* no NBPG */ -# endif /* no EXEC_PAGESIZE */ -# else /* no HAVE_SYS_PARAM_H */ -# define getpagesize() 8192 /* punt totally */ -# endif /* no HAVE_SYS_PARAM_H */ -# endif /* no _SC_PAGESIZE */ - -#endif /* no HAVE_GETPAGESIZE */ - -int -main () -{ - char *data, *data2, *data3; - const char *cdata2; - int i, pagesize; - int fd, fd2; - - pagesize = getpagesize (); - - /* First, make a file with some known garbage in it. */ - data = (char *) malloc (pagesize); - if (!data) - return 1; - for (i = 0; i < pagesize; ++i) - *(data + i) = rand (); - umask (0); - fd = creat ("conftest.mmap", 0600); - if (fd < 0) - return 2; - if (write (fd, data, pagesize) != pagesize) - return 3; - close (fd); - - /* Next, check that the tail of a page is zero-filled. File must have - non-zero length, otherwise we risk SIGBUS for entire page. */ - fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600); - if (fd2 < 0) - return 4; - cdata2 = ""; - if (write (fd2, cdata2, 1) != 1) - return 5; - data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L); - if (data2 == MAP_FAILED) - return 6; - for (i = 0; i < pagesize; ++i) - if (*(data2 + i)) - return 7; - close (fd2); - if (munmap (data2, pagesize)) - return 8; - - /* Next, try to mmap the file at a fixed address which already has - something else allocated at it. If we can, also make sure that - we see the same garbage. */ - fd = open ("conftest.mmap", O_RDWR); - if (fd < 0) - return 9; - if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_FIXED, fd, 0L)) - return 10; - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data2 + i)) - return 11; - - /* Finally, make sure that changes to the mapped area do not - percolate back to the file as seen by read(). (This is a bug on - some variants of i386 svr4.0.) */ - for (i = 0; i < pagesize; ++i) - *(data2 + i) = *(data2 + i) + 1; - data3 = (char *) malloc (pagesize); - if (!data3) - return 12; - if (read (fd, data3, pagesize) != pagesize) - return 13; - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data3 + i)) - return 14; - close (fd); - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_func_mmap_fixed_mapped=yes -else - ac_cv_func_mmap_fixed_mapped=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 -$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } -if test $ac_cv_func_mmap_fixed_mapped = yes; then - -$as_echo "#define HAVE_MMAP 1" >>confdefs.h - -fi -rm -f conftest.mmap conftest.txt - -ac_fn_c_check_decl "$LINENO" "strerror_r" "ac_cv_have_decl_strerror_r" "$ac_includes_default" -if test "x$ac_cv_have_decl_strerror_r" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRERROR_R $ac_have_decl -_ACEOF - -for ac_func in strerror_r -do : - ac_fn_c_check_func "$LINENO" "strerror_r" "ac_cv_func_strerror_r" -if test "x$ac_cv_func_strerror_r" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STRERROR_R 1 -_ACEOF - -fi -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether strerror_r returns char *" >&5 -$as_echo_n "checking whether strerror_r returns char *... " >&6; } -if ${ac_cv_func_strerror_r_char_p+:} false; then : - $as_echo_n "(cached) " >&6 -else - - ac_cv_func_strerror_r_char_p=no - if test $ac_cv_have_decl_strerror_r = yes; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ - - char buf[100]; - char x = *strerror_r (0, buf, sizeof buf); - char *p = strerror_r (0, buf, sizeof buf); - return !p || x; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_func_strerror_r_char_p=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - else - # strerror_r is not declared. Choose between - # systems that have relatively inaccessible declarations for the - # function. BeOS and DEC UNIX 4.0 fall in this category, but the - # former has a strerror_r that returns char*, while the latter - # has a strerror_r that returns `int'. - # This test should segfault on the DEC system. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default - extern char *strerror_r (); -int -main () -{ -char buf[100]; - char x = *strerror_r (0, buf, sizeof buf); - return ! isalpha (x); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_func_strerror_r_char_p=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strerror_r_char_p" >&5 -$as_echo "$ac_cv_func_strerror_r_char_p" >&6; } -if test $ac_cv_func_strerror_r_char_p = yes; then - -$as_echo "#define STRERROR_R_CHAR_P 1" >>confdefs.h - -fi - -for ac_func in gmtime_r lstat memset mmap munmap strchr strerror strtol -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -for ac_func in timegm -do : - ac_fn_c_check_func "$LINENO" "timegm" "ac_cv_func_timegm" -if test "x$ac_cv_func_timegm" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_TIMEGM 1 -_ACEOF - HAVE_TIMEGM=1 -fi -done - -HAVE_TIMEGM=$HAVE_TIMEGM - - -# --------------------------------------------------------------------------- -# Miscellaneous -# --------------------------------------------------------------------------- -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable dependency tracking" >&5 -$as_echo_n "checking whether to enable dependency tracking... " >&6; } -# Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; USE_TRACKING=$enableval -else - USE_TRACKING=yes -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_TRACKING" >&5 -$as_echo "$USE_TRACKING" >&6; } -DEP_TRACKING= -if test "$USE_TRACKING" = "yes"; then - DEP_TRACKING=1 -fi -DEP_TRACKING=$DEP_TRACKING - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable symbol visibility support" >&5 -$as_echo_n "checking whether to enable symbol visibility support... " >&6; } -# Check whether --enable-visibility was given. -if test "${enable_visibility+set}" = set; then : - enableval=$enable_visibility; VISIBILITY_SUPPORT=$enableval -else - VISIBILITY_SUPPORT=yes -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $VISIBILITY_SUPPORT" >&5 -$as_echo "$VISIBILITY_SUPPORT" >&6; } -if test "$VISIBILITY_SUPPORT" = "yes"; then - # Sun Studio C++ compiler (which apparently ignores -fvisibility-inlines-hidden) - - - - - - flag=`echo "-xldscope=hidden" | $SED 'y% .=/+-(){}<>:*,%_______________%'` - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler accepts the -xldscope=hidden flag" >&5 -$as_echo_n "checking whether the C++ compiler accepts the -xldscope=hidden flag... " >&6; } -if eval \${ax_cv_cxx_check_flag_$flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - - - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - - save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -xldscope=hidden" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -int -main () -{ - - ; - return 0; -} - -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - - eval "ax_cv_cxx_check_flag_$flag=yes" - -else - - eval "ax_cv_cxx_check_flag_$flag=no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - CXXFLAGS="$save_CXXFLAGS" - - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -fi -eval ac_res=\$ax_cv_cxx_check_flag_$flag - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - - if eval "test \"`echo '$ax_cv_cxx_check_flag_'$flag`\" = yes"; then : - - : - VISIBILITY_SUPPORT=yes - -else - - : - VISIBILITY_SUPPORT=no - -fi - - if test "$VISIBILITY_SUPPORT" = "yes"; then - CXXFLAGS="${CXXFLAGS} -xldscope=hidden" - else - # GNU g++ - - - - - - flag=`echo "-fvisibility-inlines-hidden" | $SED 'y% .=/+-(){}<>:*,%_______________%'` - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler accepts the -fvisibility-inlines-hidden flag" >&5 -$as_echo_n "checking whether the C++ compiler accepts the -fvisibility-inlines-hidden flag... " >&6; } -if eval \${ax_cv_cxx_check_flag_$flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - - - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - - save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -fvisibility-inlines-hidden" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -int -main () -{ - - ; - return 0; -} - -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - - eval "ax_cv_cxx_check_flag_$flag=yes" - -else - - eval "ax_cv_cxx_check_flag_$flag=no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - CXXFLAGS="$save_CXXFLAGS" - - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -fi -eval ac_res=\$ax_cv_cxx_check_flag_$flag - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - - if eval "test \"`echo '$ax_cv_cxx_check_flag_'$flag`\" = yes"; then : - - : - VISIBILITY_SUPPORT=yes - -else - - : - VISIBILITY_SUPPORT=no - -fi - - if test "$VISIBILITY_SUPPORT" = "yes"; then - CXXFLAGS="${CXXFLAGS} -fvisibility=hidden -fvisibility-inlines-hidden" - fi - fi - if test "$VISIBILITY_SUPPORT" = "yes"; then - $as_echo "#define WANT_VISIBILITY_SUPPORT 1" >>confdefs.h - - fi - if test "$enable_shared" = "yes"; then - $as_echo "#define HAVE_DLL 1" >>confdefs.h - - fi -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use the lens database for Nikon lens names" >&5 -$as_echo_n "checking whether to use the lens database for Nikon lens names... " >&6; } -# Check whether --enable-lensdata was given. -if test "${enable_lensdata+set}" = set; then : - enableval=$enable_lensdata; USE_LENSDATA=$enableval -else - USE_LENSDATA=yes -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_LENSDATA" >&5 -$as_echo "$USE_LENSDATA" >&6; } -if test "$USE_LENSDATA" = "yes"; then - $as_echo "#define HAVE_LENSDATA 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to compile a commercial version of the Exiv2 library" >&5 -$as_echo_n "checking whether to compile a commercial version of the Exiv2 library... " >&6; } -# Check whether --enable-commercial was given. -if test "${enable_commercial+set}" = set; then : - enableval=$enable_commercial; COMMERCIAL_VERSION=$enableval -else - COMMERCIAL_VERSION=no -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $COMMERCIAL_VERSION" >&5 -$as_echo "$COMMERCIAL_VERSION" >&6; } -COMMERCIAL_VERSION=$COMMERCIAL_VERSION - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable XMP support (requires expat)" >&5 -$as_echo_n "checking whether to enable XMP support (requires expat)... " >&6; } -# Check whether --enable-xmp was given. -if test "${enable_xmp+set}" = set; then : - enableval=$enable_xmp; USE_XMP_TOOLKIT=$enableval -else - USE_XMP_TOOLKIT=yes -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_XMP_TOOLKIT" >&5 -$as_echo "$USE_XMP_TOOLKIT" >&6; } - -# expat option might change flags, so we save them initially -_cppflags="${CPPFLAGS}" -_ldflags="${LDFLAGS}" - - -# Check whether --with-expat was given. -if test "${with_expat+set}" = set; then : - withval=$with_expat; - if test "$withval" != "no" -a "$withval" != "yes"; then - EXPAT_DIR=$withval - CPPFLAGS="${CPPFLAGS} -I$withval/include" - LDFLAGS="${LDFLAGS} -L$withval/lib" - fi - -fi - - -ENABLE_XMP= -if test "$USE_XMP_TOOLKIT" = "yes"; then - # Check for expat library - found_expat=yes - EXPAT_CPPFLAGS= - EXPAT_LDFLAGS= - EXPAT_LIBS= - if test "$with_expat" != "no"; then - for ac_header in expat.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "expat.h" "ac_cv_header_expat_h" "$ac_includes_default" -if test "x$ac_cv_header_expat_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_EXPAT_H 1 -_ACEOF - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML_ParserCreate in -lexpat" >&5 -$as_echo_n "checking for XML_ParserCreate in -lexpat... " >&6; } -if ${ac_cv_lib_expat_XML_ParserCreate+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lexpat $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char XML_ParserCreate (); -int -main () -{ -return XML_ParserCreate (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_expat_XML_ParserCreate=yes -else - ac_cv_lib_expat_XML_ParserCreate=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_expat_XML_ParserCreate" >&5 -$as_echo "$ac_cv_lib_expat_XML_ParserCreate" >&6; } -if test "x$ac_cv_lib_expat_XML_ParserCreate" = xyes; then : - - -$as_echo "#define HAVE_EXPAT /**/" >>confdefs.h - - EXPAT_LIBS="-lexpat" - if test "x${EXPAT_DIR}" != "x"; then - EXPAT_CPPFLAGS="-I${EXPAT_DIR}/include" - EXPAT_LDFLAGS="-L${EXPAT_DIR}/lib" - fi -else - found_expat=no -fi - -else - found_expat=no -fi - -done - - fi - if test "$with_expat" = "no" -o "$found_expat" = "no"; then - as_fn_error $? "either specify a valid expat installation with --with-expat=DIR or disable XMP support with --disable-xmp" "$LINENO" 5 - fi - $as_echo "#define HAVE_XMP_TOOLKIT 1" >>confdefs.h - - ENABLE_XMP=1 - - - -fi - - -CPPFLAGS=${_cppflags} -LDFLAGS=${_ldflags} - -# Udi's hack to add libiconv to the Libs section in exiv2.pc -if test "$enable_shared" = "no"; then - EXV_LIB_STATIC=$LTLIBICONV -else - EXV_LIB_STATIC= -fi - - -# Add flag for DLL on Windows -# -# This must happen after all other configure checks, because -# the "-no-undefined" flag is only for libtool and must not be -# passed to GCC by accident. -case "$host_os" in -*mingw* | *cygwin*) - LDFLAGS="$LDFLAGS -no-undefined" - ;; -esac - -# --------------------------------------------------------------------------- -# Create output files. -# --------------------------------------------------------------------------- -ac_config_files="$ac_config_files ./Makefile:./config/Makefile.in" - -ac_config_files="$ac_config_files ./config/config.mk" - -ac_config_files="$ac_config_files ./config/exiv2.pc" - -ac_config_files="$ac_config_files ./po/Makefile.in" - -ac_config_files="$ac_config_files ./src/doxygen.hpp" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by exiv2 $as_me 0.23, which was -generated by GNU Autoconf 2.68. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to ." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -exiv2 config.status 0.23 -configured by $0, generated by GNU Autoconf 2.68, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2010 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -# Capture the value of obsolete ALL_LINGUAS because we need it to compute - # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it - # from automake. - eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' - # Capture the value of LINGUAS because we need it to compute CATALOGS. - LINGUAS="${LINGUAS-%UNSET%}" - - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' -macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' -enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' -enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' -pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' -host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' -host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' -host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' -build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' -build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' -build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' -SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' -Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' -GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' -EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' -FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' -LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' -NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' -LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' -ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' -exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' -lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' -reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' -AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' -STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' -RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' -CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' -compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' -GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' -objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' -SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' -ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' -need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' -LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' -OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' -libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' -module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' -fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' -need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' -version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' -runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' -libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' -soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' -finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' -sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' -old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' -striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' -compiler_lib_search_dirs='`$ECHO "X$compiler_lib_search_dirs" | $Xsed -e "$delay_single_quote_subst"`' -predep_objects='`$ECHO "X$predep_objects" | $Xsed -e "$delay_single_quote_subst"`' -postdep_objects='`$ECHO "X$postdep_objects" | $Xsed -e "$delay_single_quote_subst"`' -predeps='`$ECHO "X$predeps" | $Xsed -e "$delay_single_quote_subst"`' -postdeps='`$ECHO "X$postdeps" | $Xsed -e "$delay_single_quote_subst"`' -compiler_lib_search_path='`$ECHO "X$compiler_lib_search_path" | $Xsed -e "$delay_single_quote_subst"`' -LD_CXX='`$ECHO "X$LD_CXX" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_cmds_CXX='`$ECHO "X$old_archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -compiler_CXX='`$ECHO "X$compiler_CXX" | $Xsed -e "$delay_single_quote_subst"`' -GCC_CXX='`$ECHO "X$GCC_CXX" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "X$lt_prog_compiler_no_builtin_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_wl_CXX='`$ECHO "X$lt_prog_compiler_wl_CXX" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_pic_CXX='`$ECHO "X$lt_prog_compiler_pic_CXX" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_static_CXX='`$ECHO "X$lt_prog_compiler_static_CXX" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o_CXX='`$ECHO "X$lt_cv_prog_compiler_c_o_CXX" | $Xsed -e "$delay_single_quote_subst"`' -archive_cmds_need_lc_CXX='`$ECHO "X$archive_cmds_need_lc_CXX" | $Xsed -e "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes_CXX='`$ECHO "X$enable_shared_with_static_runtimes_CXX" | $Xsed -e "$delay_single_quote_subst"`' -export_dynamic_flag_spec_CXX='`$ECHO "X$export_dynamic_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' -whole_archive_flag_spec_CXX='`$ECHO "X$whole_archive_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' -compiler_needs_object_CXX='`$ECHO "X$compiler_needs_object_CXX" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_from_new_cmds_CXX='`$ECHO "X$old_archive_from_new_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds_CXX='`$ECHO "X$old_archive_from_expsyms_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -archive_cmds_CXX='`$ECHO "X$archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -archive_expsym_cmds_CXX='`$ECHO "X$archive_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -module_cmds_CXX='`$ECHO "X$module_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -module_expsym_cmds_CXX='`$ECHO "X$module_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -with_gnu_ld_CXX='`$ECHO "X$with_gnu_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`' -allow_undefined_flag_CXX='`$ECHO "X$allow_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' -no_undefined_flag_CXX='`$ECHO "X$no_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_CXX='`$ECHO "X$hardcode_libdir_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld_CXX='`$ECHO "X$hardcode_libdir_flag_spec_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_separator_CXX='`$ECHO "X$hardcode_libdir_separator_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_direct_CXX='`$ECHO "X$hardcode_direct_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_direct_absolute_CXX='`$ECHO "X$hardcode_direct_absolute_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_minus_L_CXX='`$ECHO "X$hardcode_minus_L_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_shlibpath_var_CXX='`$ECHO "X$hardcode_shlibpath_var_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_automatic_CXX='`$ECHO "X$hardcode_automatic_CXX" | $Xsed -e "$delay_single_quote_subst"`' -inherit_rpath_CXX='`$ECHO "X$inherit_rpath_CXX" | $Xsed -e "$delay_single_quote_subst"`' -link_all_deplibs_CXX='`$ECHO "X$link_all_deplibs_CXX" | $Xsed -e "$delay_single_quote_subst"`' -fix_srcfile_path_CXX='`$ECHO "X$fix_srcfile_path_CXX" | $Xsed -e "$delay_single_quote_subst"`' -always_export_symbols_CXX='`$ECHO "X$always_export_symbols_CXX" | $Xsed -e "$delay_single_quote_subst"`' -export_symbols_cmds_CXX='`$ECHO "X$export_symbols_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -exclude_expsyms_CXX='`$ECHO "X$exclude_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`' -include_expsyms_CXX='`$ECHO "X$include_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`' -prelink_cmds_CXX='`$ECHO "X$prelink_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -file_list_spec_CXX='`$ECHO "X$file_list_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_action_CXX='`$ECHO "X$hardcode_action_CXX" | $Xsed -e "$delay_single_quote_subst"`' -compiler_lib_search_dirs_CXX='`$ECHO "X$compiler_lib_search_dirs_CXX" | $Xsed -e "$delay_single_quote_subst"`' -predep_objects_CXX='`$ECHO "X$predep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`' -postdep_objects_CXX='`$ECHO "X$postdep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`' -predeps_CXX='`$ECHO "X$predeps_CXX" | $Xsed -e "$delay_single_quote_subst"`' -postdeps_CXX='`$ECHO "X$postdeps_CXX" | $Xsed -e "$delay_single_quote_subst"`' -compiler_lib_search_path_CXX='`$ECHO "X$compiler_lib_search_path_CXX" | $Xsed -e "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# Quote evaled strings. -for var in SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -OBJDUMP \ -deplibs_check_method \ -file_magic_cmd \ -AR \ -AR_FLAGS \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -SHELL \ -ECHO \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_wl \ -lt_prog_compiler_pic \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_flag_spec_ld \ -hardcode_libdir_separator \ -fix_srcfile_path \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -finish_eval \ -old_striplib \ -striplib \ -compiler_lib_search_dirs \ -predep_objects \ -postdep_objects \ -predeps \ -postdeps \ -compiler_lib_search_path \ -LD_CXX \ -compiler_CXX \ -lt_prog_compiler_no_builtin_flag_CXX \ -lt_prog_compiler_wl_CXX \ -lt_prog_compiler_pic_CXX \ -lt_prog_compiler_static_CXX \ -lt_cv_prog_compiler_c_o_CXX \ -export_dynamic_flag_spec_CXX \ -whole_archive_flag_spec_CXX \ -compiler_needs_object_CXX \ -with_gnu_ld_CXX \ -allow_undefined_flag_CXX \ -no_undefined_flag_CXX \ -hardcode_libdir_flag_spec_CXX \ -hardcode_libdir_flag_spec_ld_CXX \ -hardcode_libdir_separator_CXX \ -fix_srcfile_path_CXX \ -exclude_expsyms_CXX \ -include_expsyms_CXX \ -file_list_spec_CXX \ -compiler_lib_search_dirs_CXX \ -predep_objects_CXX \ -postdep_objects_CXX \ -predeps_CXX \ -postdeps_CXX \ -compiler_lib_search_path_CXX; do - case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec \ -old_archive_cmds_CXX \ -old_archive_from_new_cmds_CXX \ -old_archive_from_expsyms_cmds_CXX \ -archive_cmds_CXX \ -archive_expsym_cmds_CXX \ -module_cmds_CXX \ -module_expsym_cmds_CXX \ -export_symbols_cmds_CXX \ -prelink_cmds_CXX; do - case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Fix-up fallback echo if it was mangled by the above quoting rules. -case \$lt_ECHO in -*'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` - ;; -esac - -ac_aux_dir='$ac_aux_dir' -xsi_shell='$xsi_shell' -lt_shell_append='$lt_shell_append' - -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile' - - - - - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "./config/config.h") CONFIG_HEADERS="$CONFIG_HEADERS ./config/config.h" ;; - "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "./Makefile") CONFIG_FILES="$CONFIG_FILES ./Makefile:./config/Makefile.in" ;; - "./config/config.mk") CONFIG_FILES="$CONFIG_FILES ./config/config.mk" ;; - "./config/exiv2.pc") CONFIG_FILES="$CONFIG_FILES ./config/exiv2.pc" ;; - "./po/Makefile.in") CONFIG_FILES="$CONFIG_FILES ./po/Makefile.in" ;; - "./src/doxygen.hpp") CONFIG_FILES="$CONFIG_FILES ./src/doxygen.hpp" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi - ;; - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "default-1":C) - for ac_file in $CONFIG_FILES; do - # Support "outfile[:infile[:infile...]]" - case "$ac_file" in - *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - esac - # PO directories have a Makefile.in generated from Makefile.in.in. - case "$ac_file" in */Makefile.in) - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - # Treat a directory as a PO directory if and only if it has a - # POTFILES.in file. This allows packages to have multiple PO - # directories under different names or in different locations. - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" - POMAKEFILEDEPS="POTFILES.in" - # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend - # on $ac_dir but don't depend on user-specified configuration - # parameters. - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. - if test -n "$OBSOLETE_ALL_LINGUAS"; then - test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" - fi - ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assigment from automake. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' - POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" - else - # The set of available languages was given in configure.in. - eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' - fi - # Compute POFILES - # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) - # Compute UPDATEPOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) - # Compute DUMMYPOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) - # Compute GMOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= - UPDATEPOFILES= - DUMMYPOFILES= - GMOFILES= - for lang in $ALL_LINGUAS; do - POFILES="$POFILES $srcdirpre$lang.po" - UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" - DUMMYPOFILES="$DUMMYPOFILES $lang.nop" - GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - done - # CATALOGS depends on both $ac_dir and the user's LINGUAS - # environment variable. - INST_LINGUAS= - if test -n "$ALL_LINGUAS"; then - for presentlang in $ALL_LINGUAS; do - useit=no - if test "%UNSET%" != "$LINGUAS"; then - desiredlanguages="$LINGUAS" - else - desiredlanguages="$ALL_LINGUAS" - fi - for desiredlang in $desiredlanguages; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - INST_LINGUAS="$INST_LINGUAS $presentlang" - fi - done - fi - CATALOGS= - if test -n "$INST_LINGUAS"; then - for lang in $INST_LINGUAS; do - CATALOGS="$CATALOGS $lang.gmo" - done - fi - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do - if test -f "$f"; then - case "$f" in - *.orig | *.bak | *~) ;; - *) cat "$f" >> "$ac_dir/Makefile" ;; - esac - fi - done - fi - ;; - esac - done ;; - "libtool":C) - - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008 Free Software Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool 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. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -# The names of the tagged configurations supported by this script. -available_tags="CXX " - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# An object symbol dumper. -OBJDUMP=$lt_OBJDUMP - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method == "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that does not interpret backslashes. -ECHO=$lt_ECHO - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path=$lt_fix_srcfile_path - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects -postdep_objects=$lt_postdep_objects -predeps=$lt_predeps -postdeps=$lt_postdeps - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path - -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain="$ac_aux_dir/ltmain.sh" - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - case $xsi_shell in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac -} - -# func_basename file -func_basename () -{ - func_basename_result="${1##*/}" -} - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}" -} - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -func_stripname () -{ - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"} -} - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=${1%%=*} - func_opt_split_arg=${1#*=} -} - -# func_lo2o object -func_lo2o () -{ - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=${1%.*}.lo -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=$(( $* )) -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=${#1} -} - -_LT_EOF - ;; - *) # Bourne compatible functions. - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} - -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` -} - - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "X${3}" \ - | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "X${3}" \ - | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; - esac -} - -# sed scripts: -my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' -my_sed_long_arg='1s/^-[^=]*=//' - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` - func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` -} - -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "$@"` -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` -} - -_LT_EOF -esac - -case $lt_shell_append in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$1+=\$2" -} -_LT_EOF - ;; - *) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$1=\$$1\$2" -} - -_LT_EOF - ;; - esac - - - sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - - cat <<_LT_EOF >> "$ofile" - -# ### BEGIN LIBTOOL TAG CONFIG: CXX - -# The linker used to build libraries. -LD=$lt_LD_CXX - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds_CXX - -# A language specific compiler. -CC=$lt_compiler_CXX - -# Is the compiler the GNU compiler? -with_gcc=$GCC_CXX - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_CXX - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_CXX - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_CXX - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_CXX - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object_CXX - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds_CXX -archive_expsym_cmds=$lt_archive_expsym_cmds_CXX - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds_CXX -module_expsym_cmds=$lt_module_expsym_cmds_CXX - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld_CXX - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_CXX - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_CXX - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct_CXX - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute_CXX - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L_CXX - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic_CXX - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath_CXX - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_CXX - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path=$lt_fix_srcfile_path_CXX - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols_CXX - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_CXX - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_CXX - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_CXX - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds_CXX - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec_CXX - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_CXX - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects_CXX -postdep_objects=$lt_postdep_objects_CXX -predeps=$lt_predeps_CXX -postdeps=$lt_postdeps_CXX - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path_CXX - -# ### END LIBTOOL TAG CONFIG: CXX -_LT_EOF - - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - - -# --------------------------------------------------------------------------- -# Configuration summary. -# --------------------------------------------------------------------------- - -echo "" -echo "------------------------------------------------------------------" -echo "-- Exiv2 $VERSION feature configuration summary" -echo "--" - -case "$enable_shared" in -yes) echo "-- Build a shared library......... YES" ;; -*) echo "-- Build a shared library......... NO" ;; -esac - -case "$VISIBILITY_SUPPORT" in -yes) echo "-- Use symbol visibility support.. YES" ;; -*) echo "-- Use symbol visibility support.. NO" ;; -esac - -case "x$HAVE_LIBZ" in -x1) echo "-- PNG image support.............. YES" ;; -*) echo "-- PNG image support.............. NO" - echo "" - echo "zlib is required for PNG support. Make sure the zlib header files" - echo "are installed and use --with-zlib=DIR if it is in a non-standard" - echo "location. You can get zlib from http://www.zlib.net/" - echo "" ;; -esac - -case "$USE_NLS" in -yes) echo "-- Native language support........ YES" ;; -*) echo "-- Native language support........ NO" - echo "" - echo "gettext is required for native language support. Make sure the" - echo "gettext header files are installed. You can get gettext from" - echo "http://www.gnu.org/software/gettext/" - echo "" ;; -esac - -case "$USE_LENSDATA" in -yes) echo "-- Nikon lens database............ YES" ;; -*) echo "-- Nikon lens database............ NO" ;; -esac - -case "$USE_XMP_TOOLKIT" in -yes) echo "-- XMP metadata support........... YES" ;; -*) echo "-- XMP metadata support........... NO" - echo "" - echo "Expat is required for XMP support. Make sure the Expat header" - echo "files are installed and use --with-expat=DIR if it is in a" - echo "non-standard location. You can get Expat from" - echo "http://expat.sourceforge.net/" - echo "" ;; -esac - -echo "------------------------------------------------------------------" -echo "" diff --git a/platform/win32/msvc/external/exiv2/contrib/buildForMac b/platform/win32/msvc/external/exiv2/contrib/buildForMac deleted file mode 100644 index 5e6aa794e1e..00000000000 --- a/platform/win32/msvc/external/exiv2/contrib/buildForMac +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/bash - -## -# buildForMac -# example: contrib/buildForMac --[dis|en]able-shared -# -## - -## -# test OS level (L=9 SL==10 Lion = 11, ML=12) -LION="" -let os=$(uname -a | cut -d' ' -f 3 | cut -d'.' -f 1) -if [ $(( os >= 11 )) ]; then - LION="--with-zlib=/usr/lib" -fi - -if [ ! -d contrib ]; then - echo "you are in the wrong directory - please run $0 in the main directory (which includes contrib and src)" - exit 1 -fi -if [ ! -e configure ]; then make config ; fi -if [ -z $TARGET ]; then export TARGET="MACOSX_DEPLOYMENT_TARGET=10.5" ; fi - -# version=$(grep EXIV2_LTVERSION config/config.mk | cut "-d " -f 3 | cut -d: -f 1) -# lib=libexiv2.$version.dylib - -build() { - make clean - ./configure CFLAGS="$arch" CXXFLAGS="$arch" LDFLAGS="$arch -L${PWD}/xmpsdk/src" OBJCFLAGS="$arch" OBJCXXFLAGS="$arch" $TARGET $LION "$@" - make CFLAGS="$arch" CXXFLAGS="$arch" LDFLAGS="$arch -L${PWD}/xmpsdk/src" OBJCFLAGS="$arch" OBJCXXFLAGS="$arch" $TARGET all - # make CFLAGS="$arch" CXXFLAGS="$arch" LDFLAGS="$arch -L${PWD}/xmpsdk/src" OBJCFLAGS="$arch" OBJCXXFLAGS="$arch" $TARGET samples - if [ "$?" != "0" ]; then - echo build failed - exit - fi -} - -## -# build one architecture at a time -for arch in '-arch i386' '-arch x86_64' ; do - echo arch = $arch - a=${arch:6:100} - build "$@" - - ## - # copy .libs to .arch - for d in $(find . -name ".libs" -type d); do - D=$(dirname $d)/.$a - ditto $d $D - done -done - -## -# combine the builds into a universal -$(dirname $0)/makeUniversal - -# That's all Folks! -## diff --git a/platform/win32/msvc/external/exiv2/contrib/createEpsTestfiles b/platform/win32/msvc/external/exiv2/contrib/createEpsTestfiles deleted file mode 100644 index 479a5b119c2..00000000000 --- a/platform/win32/msvc/external/exiv2/contrib/createEpsTestfiles +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/sh -set -eu - -if [ "$#" -ne 1 ]; then - echo "Usage: $0 BASENAME" - exit 1 -fi - -set -x - -bin=../../../src -$bin/exiv2 -V - -exiv2version="`$bin/exiv2 -V | sed -n '1 s,^exiv2 [^ ]* \([^ ]*\).*,\1,p'`" - -rm -f $1.xmp -$bin/exiv2 -f -eX $1.eps - -cp $1.eps $1.eps.delxmp -if $bin/exiv2 -dx $1.eps.delxmp; then - sed -i "s,%Exiv2Version: $exiv2version,%Exiv2Version: _Exiv2Version_," $1.eps.delxmp -else - rm -f $1.eps.delxmp -fi - -cp $1.eps $1.eps.newxmp -cp eps-test-newxmp.exv $1.eps.exv -if $bin/exiv2 -ix $1.eps.newxmp; then - sed -i "s,%Exiv2Version: $exiv2version,%Exiv2Version: _Exiv2Version_," $1.eps.newxmp -else - rm -f $1.eps.newxmp -fi -rm -f $1.eps.exv diff --git a/platform/win32/msvc/external/exiv2/contrib/diffeps b/platform/win32/msvc/external/exiv2/contrib/diffeps deleted file mode 100644 index 934707ecc91..00000000000 --- a/platform/win32/msvc/external/exiv2/contrib/diffeps +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -if [ "$#" -ne 2 ] ; then - echo "Usage: $0 file1.eps file2.eps" - exit 1 -fi - -suffix='0a8baf61-6321-4899-86e8-8bf9ebd002b3' - -sed 's/\r$//; s/$//; s/\r/\n/g' < "$1" > "$1.$suffix" -sed 's/\r$//; s/$//; s/\r/\n/g' < "$2" > "$2.$suffix" - -diff -a -u "$1.$suffix" "$2.$suffix" -exitcode="$?" - -rm -f "$1.$suffix" "$2.$suffix" - -exit "$exitcode" diff --git a/platform/win32/msvc/external/exiv2/contrib/makeUniversal b/platform/win32/msvc/external/exiv2/contrib/makeUniversal deleted file mode 100644 index 4b086c6bf65..00000000000 --- a/platform/win32/msvc/external/exiv2/contrib/makeUniversal +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash - -## -# makeUniversal - combine .i386 and .x86_64 build results into .libs -# this script is called by buildForMac -## - -## -# search for directories called .x86_64 -# run every file and lipo .x86_64/file .x86_64/file -> .libs/file -for D in $(find . -name ".x86_64"); do - for F in $(find $(dirname $D)/.x86_64 -type f); do - f=$(echo $F | sed -E -e "s/.x86_64/.i386/") - U=$(echo $F | sed -E -e "s/.x86_64/.libs/") - if [[ -e $f && -e $F ]]; then - # echo $F $f -> $U - lipo -arch i386 $f -arch x86_64 $F -create -output $U - if [ $? != '0' ]; then - echo FAILED lipo -arch i386 $f -arch x86_64 $F -create -output $U - else - eval $(stat -s $U) - s=$(printf "%10s" ${st_size}) - echo $(lipo -info $U|sed -E -e "s/Architectures in the fat file://" -e "s/ are://" -e "s#$U##" ) "$s" $U - fi - fi - done -done - -# That's all Folks! -## diff --git a/platform/win32/msvc/external/exiv2/contrib/organize/MD5.cpp b/platform/win32/msvc/external/exiv2/contrib/organize/MD5.cpp deleted file mode 100644 index a6e2e8223f6..00000000000 --- a/platform/win32/msvc/external/exiv2/contrib/organize/MD5.cpp +++ /dev/null @@ -1,235 +0,0 @@ -/* - * This code implements the MD5 message-digest algorithm. - * The algorithm is due to Ron Rivest. This code was - * written by Colin Plumb in 1993, no copyright is claimed. - * This code is in the public domain; do with it what you wish. - * - * Equivalent code is available from RSA Data Security, Inc. - * This code has been tested against that, and is equivalent, - * except that you don't need to include two pages of legalese - * with every copy. - * - * To compute the message digest of a chunk of bytes, declare an - * MD5_CTX structure, pass it to MD5Init, call MD5Update as - * needed on buffers full of bytes, and then call MD5Final, which - * will fill a supplied 16-byte array with the digest. - * - * Changed so as no longer to depend on Colin Plumb's `usual.h' header - * definitions; now uses stuff from dpkg's config.h. - * - Ian Jackson . - * Still in the public domain. - */ - -#include - -#include "MD5.h" - -using namespace std; - -static void -byteSwap(UWORD32 *buf, unsigned words) -{ - const uint32_t byteOrderTest = 0x1; - if (((char *)&byteOrderTest)[0] == 0) { - md5byte *p = (md5byte *)buf; - - do { - *buf++ = (UWORD32)((unsigned)p[3] << 8 | p[2]) << 16 | - ((unsigned)p[1] << 8 | p[0]); - p += 4; - } while (--words); - } -} - -/* - * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious - * initialization constants. - */ -void -MD5Init(struct MD5_CTX *ctx) -{ - ctx->buf[0] = 0x67452301; - ctx->buf[1] = 0xefcdab89; - ctx->buf[2] = 0x98badcfe; - ctx->buf[3] = 0x10325476; - - ctx->bytes[0] = 0; - ctx->bytes[1] = 0; -} - -/* - * Update context to reflect the concatenation of another buffer full - * of bytes. - */ -void -MD5Update(struct MD5_CTX *ctx, md5byte const *buf, unsigned len) -{ - UWORD32 t; - - /* Update byte count */ - - t = ctx->bytes[0]; - if ((ctx->bytes[0] = t + len) < t) - ctx->bytes[1]++; /* Carry from low to high */ - - t = 64 - (t & 0x3f); /* Space available in ctx->in (at least 1) */ - if (t > len) { - memcpy((md5byte *)ctx->in + 64 - t, buf, len); - return; - } - /* First chunk is an odd size */ - memcpy((md5byte *)ctx->in + 64 - t, buf, t); - byteSwap(ctx->in, 16); - MD5Transform(ctx->buf, ctx->in); - buf += t; - len -= t; - - /* Process data in 64-byte chunks */ - while (len >= 64) { - memcpy(ctx->in, buf, 64); - byteSwap(ctx->in, 16); - MD5Transform(ctx->buf, ctx->in); - buf += 64; - len -= 64; - } - - /* Handle any remaining bytes of data. */ - memcpy(ctx->in, buf, len); -} - -/* - * Final wrapup - pad to 64-byte boundary with the bit pattern - * 1 0* (64-bit count of bits processed, MSB-first) - */ -void -MD5Final(md5byte digest[16], struct MD5_CTX *ctx) -{ - int count = ctx->bytes[0] & 0x3f; /* Number of bytes in ctx->in */ - md5byte *p = (md5byte *)ctx->in + count; - - /* Set the first char of padding to 0x80. There is always room. */ - *p++ = 0x80; - - /* Bytes of padding needed to make 56 bytes (-8..55) */ - count = 56 - 1 - count; - - if (count < 0) { /* Padding forces an extra block */ - memset(p, 0, count + 8); - byteSwap(ctx->in, 16); - MD5Transform(ctx->buf, ctx->in); - p = (md5byte *)ctx->in; - count = 56; - } - memset(p, 0, count); - byteSwap(ctx->in, 14); - - /* Append length in bits and transform */ - ctx->in[14] = ctx->bytes[0] << 3; - ctx->in[15] = ctx->bytes[1] << 3 | ctx->bytes[0] >> 29; - MD5Transform(ctx->buf, ctx->in); - - byteSwap(ctx->buf, 4); - memcpy(digest, ctx->buf, 16); - memset(ctx, 0, sizeof(ctx)); /* In case it's sensitive */ -} - -/* The four core functions - F1 is optimized somewhat */ - -/* #define F1(x, y, z) (x & y | ~x & z) */ -#define F1(x, y, z) (z ^ (x & (y ^ z))) -#define F2(x, y, z) F1(z, x, y) -#define F3(x, y, z) (x ^ y ^ z) -#define F4(x, y, z) (y ^ (x | ~z)) - -/* This is the central step in the MD5 algorithm. */ -#define MD5STEP(f,w,x,y,z,in,s) \ - (w += f(x,y,z) + in, w = (w<>(32-s)) + x) - -/* - * The core of the MD5 algorithm, this alters an existing MD5 hash to - * reflect the addition of 16 longwords of new data. MD5Update blocks - * the data and converts bytes into longwords for this routine. - */ -void -MD5Transform(UWORD32 buf[4], UWORD32 const in[16]) -{ - register UWORD32 a, b, c, d; - - a = buf[0]; - b = buf[1]; - c = buf[2]; - d = buf[3]; - - MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7); - MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12); - MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17); - MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22); - MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7); - MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12); - MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17); - MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22); - MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7); - MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12); - MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); - MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22); - MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7); - MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12); - MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17); - MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22); - - MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5); - MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9); - MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14); - MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); - MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5); - MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9); - MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); - MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); - MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5); - MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9); - MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14); - MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20); - MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); - MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); - MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14); - MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); - - MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4); - MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11); - MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); - MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23); - MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4); - MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); - MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); - MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); - MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); - MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11); - MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16); - MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23); - MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4); - MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); - MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); - MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23); - - MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6); - MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10); - MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15); - MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21); - MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6); - MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); - MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15); - MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21); - MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); - MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); - MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15); - MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21); - MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6); - MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10); - MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); - MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21); - - buf[0] += a; - buf[1] += b; - buf[2] += c; - buf[3] += d; -} diff --git a/platform/win32/msvc/external/exiv2/contrib/organize/MD5.h b/platform/win32/msvc/external/exiv2/contrib/organize/MD5.h deleted file mode 100644 index 00a5e94a5b0..00000000000 --- a/platform/win32/msvc/external/exiv2/contrib/organize/MD5.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef __MD5_h__ -#define __MD5_h__ - -/* - * This is the header file for the MD5 message-digest algorithm. - * The algorithm is due to Ron Rivest. This code was - * written by Colin Plumb in 1993, no copyright is claimed. - * This code is in the public domain; do with it what you wish. - * - * Equivalent code is available from RSA Data Security, Inc. - * This code has been tested against that, and is equivalent, - * except that you don't need to include two pages of legalese - * with every copy. - * - * To compute the message digest of a chunk of bytes, declare an - * MD5_CTX structure, pass it to MD5Init, call MD5Update as - * needed on buffers full of bytes, and then call MD5Final, which - * will fill a supplied 16-byte array with the digest. - * - * Changed so as no longer to depend on Colin Plumb's `usual.h' - * header definitions; now uses stuff from dpkg's config.h - * - Ian Jackson . - * Still in the public domain. - */ - -#include -#ifdef EXV_HAVE_STDINT_H -# include -#endif - -/* MSVC doesn't provide C99 types, but it has MS specific variants */ -#ifdef _MSC_VER -typedef unsigned __int32 uint32_t; -#endif - -typedef unsigned char md5byte; -typedef uint32_t UWORD32; - -struct MD5_CTX { - UWORD32 buf[4]; - UWORD32 bytes[2]; - UWORD32 in[16]; -}; - -extern void MD5Init(struct MD5_CTX *context); -extern void MD5Update(struct MD5_CTX *context, md5byte const *buf, unsigned len); -extern void MD5Final(unsigned char digest[16], struct MD5_CTX *context); -extern void MD5Transform(UWORD32 buf[4], UWORD32 const in[16]); - -#endif diff --git a/platform/win32/msvc/external/exiv2/contrib/organize/README b/platform/win32/msvc/external/exiv2/contrib/organize/README deleted file mode 100644 index 26285f72d0b..00000000000 --- a/platform/win32/msvc/external/exiv2/contrib/organize/README +++ /dev/null @@ -1,3 +0,0 @@ -organize uses the Boost library (http://www.boost.org). -Configuration settings for Boost are in the file boost.mk -in this directory and should be changed as required. diff --git a/platform/win32/msvc/external/exiv2/contrib/organize/boost.mk b/platform/win32/msvc/external/exiv2/contrib/organize/boost.mk deleted file mode 100644 index b7cd50cb702..00000000000 --- a/platform/win32/msvc/external/exiv2/contrib/organize/boost.mk +++ /dev/null @@ -1,3 +0,0 @@ -# Boost configuration for organize - change paths and library names as needed -BOOST_INC_DIR = /usr/local/include/boost-1_37 -BOOST_LIBS = /usr/local/lib/libboost_system-gcc43-mt-1_37.a /usr/local/lib/libboost_filesystem-gcc43-mt-1_37.a /usr/local/lib/libboost_regex-gcc43-mt-1_37.a /usr/local/lib/libboost_program_options-gcc43-mt-1_37.a diff --git a/platform/win32/msvc/external/exiv2/contrib/organize/helpers.cpp b/platform/win32/msvc/external/exiv2/contrib/organize/helpers.cpp deleted file mode 100644 index 34e9df5105b..00000000000 --- a/platform/win32/msvc/external/exiv2/contrib/organize/helpers.cpp +++ /dev/null @@ -1,641 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2009 Brad Schick - * - * This file is part of the organize tool. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: helpers.cpp - Version: $Rev: 1762 $ - Author(s): Brad Schick (brad) - History: 19-Jan-09, brad: created -*/ -// ***************************************************************************** - -#include -#include -#include -#include -#include -#include -#include -#include -#include -//#include -#include -#include -#include -#include "helpers.hpp" - -#define BOOST_FILESYSTEM_NO_DEPRECATED - -namespace fs = boost::filesystem; -typedef Exiv2::ExifData::const_iterator (*EasyAccessFct)(const Exiv2::ExifData& ed); - - -std::string scrub(const std::string &dirty, bool strip_space = false) -{ - std::string scrub = boost::trim_copy(dirty); - if(strip_space) { - boost::regex space("\\s"); - scrub = boost::regex_replace(scrub, space, ""); - } - boost::regex dash("[:/\\\\|<>]"); - boost::regex under("[\"'\\[\\]\\{\\}#=%\\$\\?,\\+\\*]"); - scrub = boost::regex_replace(scrub, dash, "-"); - - return boost::regex_replace(scrub, under, "_"); -} - -bool exif_data(const Exiv2::Image *image, const char *key, Exiv2::ExifData::const_iterator &md) -{ - assert(image && key); - bool ok = false; - try { - const Exiv2::ExifData &exifData = image->exifData(); - Exiv2::ExifKey exifKey(key); - md = exifData.findKey(exifKey); - if(md != exifData.end() && md->typeId() != Exiv2::undefined) - ok = true; - } - catch(const Exiv2::AnyError&) { - } - return ok; -} - -bool exif_data_easy(const Exiv2::Image *image, EasyAccessFct easy, Exiv2::ExifData::const_iterator &md) -{ - assert(image && easy); - bool ok = false; - try { - const Exiv2::ExifData &exifData = image->exifData(); - md = easy(exifData); - if(md != exifData.end() && md->typeId() != Exiv2::undefined) - ok = true; - } - catch(const Exiv2::AnyError&) { - } - return ok; -} - - -bool iptc_data(const Exiv2::Image *image, const char *key, Exiv2::IptcData::const_iterator &md) -{ - bool ok = false; - assert(image && key); - try { - const Exiv2::IptcData &iptcData = image->iptcData(); - Exiv2::IptcKey iptcKey(key); - md = iptcData.findKey(iptcKey); - if(md != iptcData.end() && md->typeId() != Exiv2::undefined) - ok = true; - } - catch(const Exiv2::AnyError&) { - } - return ok; -} - -std::string exif_date(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::ExifData::const_iterator md; - bool done = exif_data(image, "Exif.Photo.DateTimeDigitized", md); - if(!done) - done = exif_data(image, "Exif.Photo.DateTimeOriginal", md); - if(!done) - return ""; - - std::string date = scrub(md->print().substr(0,10)); - // Some files have zeros for dates, just fail in that case - if(boost::lexical_cast(date.substr(0,4))==0) - return ""; - - return date; -} - -std::string exif_year(const Exiv2::Image *image, const fs::path &path) -{ - std::string date = exif_date(image, path); - if(date.length()) - return date.substr(0,4); - else - return date; -} - -std::string exif_month(const Exiv2::Image *image, const fs::path &path) -{ - std::string date = exif_date(image, path); - if(date.length()) - return date.substr(5,2); - else - return date; -} - -std::string exif_day(const Exiv2::Image *image, const fs::path &path) -{ - std::string date = exif_date(image, path); - if(date.length()) - return date.substr(8,2); - else - return date; -} - -bool iptc_get_date(const Exiv2::Image *image, Exiv2::DateValue::Date &date) -{ - Exiv2::IptcData::const_iterator md; - bool done = iptc_data(image, "Iptc.Application2.DigitizationDate", md); - if(!done) - done = iptc_data(image, "Iptc.Application2.DateCreated", md); - if(!done) - return false; - date = ((Exiv2::DateValue*)md->getValue().get())->getDate(); - return date.year > 0; -} - -std::string iptc_date(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::DateValue::Date date; - if(iptc_get_date(image, date)) - return str(boost::format("%4d-%02d-%02d") % date.year % date.month % date.day); - else - return ""; -} - -std::string iptc_year(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::DateValue::Date date; - if(iptc_get_date(image, date)) - return str(boost::format("%4d") % date.year); - else - return ""; -} - -std::string iptc_month(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::DateValue::Date date; - if(iptc_get_date(image, date)) - return str(boost::format("%02d") % date.month); - else - return ""; -} - -std::string iptc_day(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::DateValue::Date date; - if(iptc_get_date(image, date)) - return str(boost::format("%02d") % date.day); - else - return ""; -} - -bool file_get_tm(const fs::path &path, std::tm &tm) -{ - std::time_t timer = fs::last_write_time(path); - if(time > 0) { - tm = *localtime(&timer); - return true; - } - else { - return false; - } -} - -std::string file_date(const Exiv2::Image *, const fs::path &path) -{ - std::tm tm; - if(file_get_tm(path, tm)) - return str(boost::format("%4d-%02d-%02d") % (tm.tm_year + 1900) % (tm.tm_mon + 1) % tm.tm_mday); - else - return ""; -} - -std::string file_year(const Exiv2::Image *, const fs::path &path) -{ - std::tm tm; - if(file_get_tm(path, tm)) - return str(boost::format("%4d") % (tm.tm_year + 1900)); - else - return ""; -} - -std::string file_month(const Exiv2::Image *, const fs::path &path) -{ - std::tm tm; - if(file_get_tm(path, tm)) - return str(boost::format("%02d") % (tm.tm_mon + 1)); - else - return ""; -} - -std::string file_day(const Exiv2::Image *, const fs::path &path) -{ - std::tm tm; - if(file_get_tm(path, tm)) - return str(boost::format("%02d") % tm.tm_mday); - else - return ""; -} - -/* -std::string xmp_date(const Exiv2::Image *image, const fs::path &) -{ - return ""; -} - -std::string xmp_year(const Exiv2::Image *image, const fs::path &) -{ - return ""; -} - -std::string xmp_month(const Exiv2::Image *image, const fs::path &) -{ - return ""; -} - -std::string xmp_day(const Exiv2::Image *image, const fs::path &) -{ - return ""; -}*/ - -std::string exif_time(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::ExifData::const_iterator md; - bool done = exif_data(image, "Exif.Photo.DateTimeDigitized", md); - if(!done) - done = exif_data(image, "Exif.Photo.DateTimeOriginal", md); - if(!done) - return ""; - - std::string datetime = md->print(); - // Some files have zeros for dates, just fail in that case - if(boost::lexical_cast(datetime.substr(0,4)) == 0) - return ""; - - return scrub(datetime.substr(11)); -} - -std::string exif_hour(const Exiv2::Image *image, const fs::path &path) -{ - std::string time = exif_time(image, path); - if(time.length()) - return time.substr(0,2); - else - return time; -} - -std::string exif_minute(const Exiv2::Image *image, const fs::path &path) -{ - std::string time = exif_time(image, path); - if(time.length()) - return time.substr(3,2); - else - return time; -} - -std::string exif_second(const Exiv2::Image *image, const fs::path &path) -{ - std::string time = exif_time(image, path); - if(time.length()) - return time.substr(6,2); - else - return time; -} - -bool iptc_get_time(const Exiv2::Image *image, Exiv2::TimeValue::Time &time) -{ - Exiv2::IptcData::const_iterator md; - bool done = iptc_data(image, "Iptc.Application2.DigitizationTime", md); - if(!done) - done = iptc_data(image, "Iptc.Application2.TimeCreated", md); - if(!done) - return false; - time = ((Exiv2::TimeValue*)md->getValue().get())->getTime(); - // Zero is a valid time, so this one is hard to check. - return true; -} - -std::string iptc_time(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::TimeValue::Time time; - if(iptc_get_time(image, time)) - return str(boost::format("%02d-%02d-%02d") % time.hour % time.minute % time.second); - else - return ""; -} - -std::string iptc_hour(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::TimeValue::Time time; - if(iptc_get_time(image, time)) - return str(boost::format("%02d") % time.hour); - else - return ""; -} - -std::string iptc_minute(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::TimeValue::Time time; - if(iptc_get_time(image, time)) - return str(boost::format("%02d") % time.minute); - else - return ""; -} - -std::string iptc_second(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::TimeValue::Time time; - if(iptc_get_time(image, time)) - return str(boost::format("%02d") % time.second); - else - return ""; -} - -std::string file_time(const Exiv2::Image *, const fs::path &path) -{ - std::tm tm; - if(file_get_tm(path, tm)) - return str(boost::format("%02d-%02d-%02d") % tm.tm_hour % tm.tm_min % tm.tm_sec); - else - return ""; -} - -std::string file_hour(const Exiv2::Image *, const fs::path &path) -{ - std::tm tm; - if(file_get_tm(path, tm)) - return str(boost::format("%02d") % tm.tm_hour); - else - return ""; -} - -std::string file_minute(const Exiv2::Image *, const fs::path &path) -{ - std::tm tm; - if(file_get_tm(path, tm)) - return str(boost::format("%02d") % tm.tm_min); - else - return ""; -} - -std::string file_second(const Exiv2::Image *, const fs::path &path) -{ - std::tm tm; - if(file_get_tm(path, tm)) - return str(boost::format("%02d") % tm.tm_sec); - else - return ""; -} - -/*std::string xmp_time(const Exiv2::Image *image, const fs::path &) -{ - return ""; -} - -std::string xmp_hour(const Exiv2::Image *image, const fs::path &) -{ - return ""; -} - -std::string xmp_minute(const Exiv2::Image *image, const fs::path &) -{ - return ""; -} - -std::string xmp_second(const Exiv2::Image *image, const fs::path &) -{ - return ""; -}*/ - -std::string exif_dimension(const Exiv2::Image *image, const fs::path &path) -{ - return exif_width(image, path) + "-" + exif_height(image, path); -} - -std::string exif_width(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::ExifData::const_iterator md; - bool done = exif_data(image, "Exif.Photo.PixelXDimension", md); - if(!done) - return ""; - return scrub(md->print()); -} - -std::string exif_height(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::ExifData::const_iterator md; - bool done = exif_data(image, "Exif.Photo.PixelYDimension", md); - if(!done) - return ""; - return scrub(md->print()); -} - -std::string file_dimension(const Exiv2::Image *image, const fs::path &path) -{ - if(image) - return file_width(image, path) + "-" + file_height(image, path); - else - return ""; -} - -std::string file_width(const Exiv2::Image *image, const fs::path &) -{ - if(image) - return str(boost::format("%02d") % image->pixelWidth()); - else - return ""; -} - -std::string file_height(const Exiv2::Image *image, const fs::path &) -{ - if(image) - return str(boost::format("%02d") % image->pixelHeight()); - else - return ""; -} - -/* -std::string xmp_dimension(const Exiv2::Image *image, const fs::path &) -{ - return "" -} - -std::string xmp_width(const Exiv2::Image *image, const fs::path &) -{ - return ""; -} - -std::string xmp_height(const Exiv2::Image *image, const fs::path &) -{ - return ""; -}*/ - -std::string exif_model(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::ExifData::const_iterator md; - bool done = exif_data(image, "Exif.Image.Model", md); - if(!done) - return ""; - return scrub(md->print()); -} - -std::string exif_make(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::ExifData::const_iterator md; - bool done = exif_data(image, "Exif.Image.Make", md); - if(!done) - return ""; - return scrub(md->print()); -} - -/*std::string xmp_model(const Exiv2::Image *image, const fs::path &) -{ - return ""; -}*/ - -std::string exif_speed(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::ExifData::const_iterator md; - bool done = exif_data(image, "Exif.Photo.ShutterSpeedValue", md); - if(!done) - done = exif_data(image, "Exif.Photo.ExposureTime", md); - if(!done) - return ""; - return scrub(md->print()); -} - -/*std::string xmp_speed(const Exiv2::Image *image, const fs::path &) -{ - return ""; -}*/ - -std::string exif_aperture(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::ExifData::const_iterator md; - bool done = exif_data(image, "Exif.Photo.ApertureValue", md); - if(!done) - done = exif_data(image, "Exif.Photo.FNumber", md); - if(!done) - return ""; - return scrub(md->print()); -} - -/*std::string xmp_aperture(const Exiv2::Image *image, const fs::path &) -{ - return ""; -}*/ - -std::string exif_focal(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::ExifData::const_iterator md; - bool done = exif_data(image, "Exif.Photo.FocalLength", md); - if(!done) - return ""; - return scrub(md->print()); -} - -/*std::string xmp_focal(const Exiv2::Image *image, const fs::path &) -{ - return ""; -}*/ - -std::string exif_distance(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::ExifData::const_iterator md; - bool done = exif_data(image, "Exif.Photo.SubjectDistance", md); - if(!done) - return ""; - return scrub(md->print()); -} - -/*std::string xmp_distance(const Exiv2::Image *image, const fs::path &) -{ - return ""; -}*/ - -std::string exif_meter(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::ExifData::const_iterator md; - bool done = exif_data(image, "Exif.Photo.MeteringMode", md); - if(!done) - return ""; - return scrub(md->print()); -} - -std::string exif_macro(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::ExifData::const_iterator md; - bool done = exif_data_easy(image, Exiv2::macroMode, md); - if(!done) - return ""; - return scrub(md->print()); -} - -std::string exif_orientation(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::ExifData::const_iterator md; - bool done = exif_data_easy(image, Exiv2::orientation, md); - if(!done) - return ""; - return scrub(md->print(), true); -} - -std::string exif_lens(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::ExifData::const_iterator md; - bool done = exif_data_easy(image, Exiv2::lensName, md); - if(!done) - return ""; - return scrub(md->print()); -} - - -std::string exif_iso(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::ExifData::const_iterator md; - bool done = exif_data_easy(image, Exiv2::isoSpeed, md); - if(!done) - return ""; - return scrub(md->print()); -} - -/*std::string xmp_meter(const Exiv2::Image *image, const fs::path &) -{ - return ""; -}*/ - -std::string exif_keyword(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::ExifData::const_iterator md; - bool done = exif_data(image, "Exif.Photo.UserComment", md); - if(!done) - return ""; - return scrub(md->print()); -} - -std::string iptc_keyword(const Exiv2::Image *image, const fs::path &) -{ - Exiv2::IptcData::const_iterator md; - bool done = iptc_data(image, "Iptc.Application2.Keywords", md); - if(!done) - return ""; - return scrub(md->print()); -} - -/*std::string xmp_keyword(const Exiv2::Image *image, const fs::path &) -{ - return ""; -}*/ - diff --git a/platform/win32/msvc/external/exiv2/contrib/organize/helpers.hpp b/platform/win32/msvc/external/exiv2/contrib/organize/helpers.hpp deleted file mode 100644 index 158cea9ebb8..00000000000 --- a/platform/win32/msvc/external/exiv2/contrib/organize/helpers.hpp +++ /dev/null @@ -1,108 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2009 Brad Schick - * - * This file is part of the organize tool. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: helpers.hpp - Version: $Rev: 1762 $ - Author(s): Brad Schick (brad) - History: 19-Jan-09, brad: created -*/ -// ***************************************************************************** - - -#ifndef HELPERS_HPP_ -#define HELPERS_HPP_ - -#include - -#define BOOST_FILESYSTEM_NO_DEPRECATED -namespace fs = boost::filesystem; - - -typedef std::string (*pfunc)(const Exiv2::Image *image, const fs::path &path); - -// This would be a lot smaller if Exiv2 had support -// for unified metadata - -std::string exif_date(const Exiv2::Image *image, const fs::path &path); -std::string exif_year(const Exiv2::Image *image, const fs::path &path); -std::string exif_month(const Exiv2::Image *image, const fs::path &path); -std::string exif_day(const Exiv2::Image *image, const fs::path &path); -std::string iptc_date(const Exiv2::Image *image, const fs::path &path); -std::string iptc_year(const Exiv2::Image *image, const fs::path &path); -std::string iptc_month(const Exiv2::Image *image, const fs::path &path); -std::string iptc_day(const Exiv2::Image *image, const fs::path &path); -std::string file_date(const Exiv2::Image *image, const fs::path &path); -std::string file_year(const Exiv2::Image *image, const fs::path &path); -std::string file_month(const Exiv2::Image *image, const fs::path &path); -std::string file_day(const Exiv2::Image *image, const fs::path &path); -/*std::string xmp_date(const Exiv2::Image *image, const fs::path &path); -std::string xmp_year(const Exiv2::Image *image, const fs::path &path); -std::string xmp_month(const Exiv2::Image *image, const fs::path &path); -std::string xmp_day(const Exiv2::Image *image, const fs::path &path);*/ -std::string exif_time(const Exiv2::Image *image, const fs::path &path); -std::string exif_hour(const Exiv2::Image *image, const fs::path &path); -std::string exif_minute(const Exiv2::Image *image, const fs::path &path); -std::string exif_second(const Exiv2::Image *image, const fs::path &path); -std::string iptc_time(const Exiv2::Image *image, const fs::path &path); -std::string iptc_hour(const Exiv2::Image *image, const fs::path &path); -std::string iptc_minute(const Exiv2::Image *image, const fs::path &path); -std::string iptc_second(const Exiv2::Image *image, const fs::path &path); -std::string file_time(const Exiv2::Image *image, const fs::path &path); -std::string file_hour(const Exiv2::Image *image, const fs::path &path); -std::string file_minute(const Exiv2::Image *image, const fs::path &path); -std::string file_second(const Exiv2::Image *image, const fs::path &path); -/*std::string xmp_time(const Exiv2::Image *image, const fs::path &path); -std::string xmp_hour(const Exiv2::Image *image, const fs::path &path); -std::string xmp_minute(const Exiv2::Image *image, const fs::path &path); -std::string xmp_second(const Exiv2::Image *image, const fs::path &path);*/ -std::string exif_dimension(const Exiv2::Image *image, const fs::path &path); -std::string exif_width(const Exiv2::Image *image, const fs::path &path); -std::string exif_height(const Exiv2::Image *image, const fs::path &path); -std::string file_dimension(const Exiv2::Image *image, const fs::path &path); -std::string file_width(const Exiv2::Image *image, const fs::path &path); -std::string file_height(const Exiv2::Image *image, const fs::path &path); -/*std::string xmp_dimension(const Exiv2::Image *image, const fs::path &path); -std::string xmp_width(const Exiv2::Image *image, const fs::path &path); -std::string xmp_height(const Exiv2::Image *image, const fs::path &path);*/ -std::string exif_model(const Exiv2::Image *image, const fs::path &path); -std::string exif_make(const Exiv2::Image *image, const fs::path &path); -/*std::string xmp_model(const Exiv2::Image *image, const fs::path &path); -std::string xmp_make(const Exiv2::Image *image, const fs::path &path);*/ -std::string exif_speed(const Exiv2::Image *image, const fs::path &path); -//std::string xmp_speed(const Exiv2::Image *image, const fs::path &path); -std::string exif_aperture(const Exiv2::Image *image, const fs::path &path); -//std::string xmp_aperture(const Exiv2::Image *image, const fs::path &path); -std::string exif_focal(const Exiv2::Image *image, const fs::path &path); -//std::string xmp_focal(const Exiv2::Image *image, const fs::path &path); -std::string exif_distance(const Exiv2::Image *image, const fs::path &path); -//std::string xmp_distance(const Exiv2::Image *image, const fs::path &path); -std::string exif_meter(const Exiv2::Image *image, const fs::path &path); -//std::string xmp_meter(const Exiv2::Image *image, const fs::path &path); -std::string exif_macro(const Exiv2::Image *image, const fs::path &path); -std::string exif_orientation(const Exiv2::Image *image, const fs::path &path); -std::string exif_lens(const Exiv2::Image *image, const fs::path &path); -std::string exif_keyword(const Exiv2::Image *image, const fs::path &path); -std::string iptc_keyword(const Exiv2::Image *image, const fs::path &path); -//std::string xmp_keyword(const Exiv2::Image *image, const fs::path &path); -std::string exif_iso(const Exiv2::Image *image, const fs::path &path); - -#endif //HELPERS_HPP_ - diff --git a/platform/win32/msvc/external/exiv2/contrib/organize/organize.cpp b/platform/win32/msvc/external/exiv2/contrib/organize/organize.cpp deleted file mode 100644 index ba7ee4964dc..00000000000 --- a/platform/win32/msvc/external/exiv2/contrib/organize/organize.cpp +++ /dev/null @@ -1,766 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2009 Brad Schick - * - * This file is part of the organize tool. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: organize.cpp - Version: $Rev: 1762 $ - Author(s): Brad Schick (brad) - History: 19-Jan-09, brad: created -*/ -// ***************************************************************************** - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "MD5.h" -#include "helpers.hpp" - -typedef Exiv2::byte md5digest[16]; - -namespace po = boost::program_options; - -bool g_verbose = false; -bool g_neednewline = false; - -// Array size should match number of SLOTs -boost::array g_run_order = {{-1, -1, -1, -1}}; -const int EXIF_SLOT = 0; -const int IPTC_SLOT = 1; -const int XMP_SLOT = 2; -const int FILE_SLOT = 3; - -const unsigned DOT_EVERY = 55; - -struct Pattern { - std::string pat; - std::string desc; - pfunc funcs[4]; // order should always be exif, iptc, xmp, file -}; - -struct PathPart { - std::string pre; - const Pattern *pat; - std::string post; - PathPart(std::string pre_, const Pattern *pat_, std::string post_) - : pre(pre_), pat(pat_), post(post_) {} -}; - -std::vector g_path_parts; - -// Instead of making these all global -struct ProcessParams { - const fs::path &dest_dir; - const bool dry_run; - const bool ignore_dups; - const bool ignore_unsorted; - const bool force; - const bool rename; - const bool symlink; - const bool verify; - const bool move; - const long limit_depth; - const fs::path &dups_dir; - const fs::path &unsorted_dir; - const std::vector &excludes; - unsigned dups_count; - unsigned unsorted_count; - unsigned dir_err_count; - unsigned file_err_count; - unsigned ok_count; - unsigned dups_ignored_count; - unsigned unsorted_ignored_count; - unsigned dir_ex_count; - unsigned file_ex_count; -}; - -void process_directory(const fs::path &directory, const long depth, - ProcessParams ¶ms); - -const Pattern g_patterns[] = { - {"@date", "date captured (2009-01-19)", - {exif_date, iptc_date, NULL, file_date} }, - {"@year", "year captured (2009)", - {exif_year, iptc_year, NULL, file_year} }, - {"@month", "month captured (01)", - {exif_month, iptc_month, NULL, file_month} }, - {"@day", "day captured (19)", - {exif_day, iptc_day, NULL, file_day} }, - {"@time", "time captured (14-35-27)", - {exif_time, iptc_time, NULL, file_time} }, - {"@hour", "hour captured (14)", - {exif_hour, iptc_hour, NULL, file_hour} }, - {"@min", "minute captured (35)", - {exif_minute, iptc_minute, NULL, file_minute} }, - {"@sec", "second captured (27)", - {exif_second, iptc_second, NULL, file_second} }, - {"@dim", "pixel dimension (2272-1704)", - {exif_dimension, NULL, NULL, file_dimension} }, - {"@x", "pixel width (2272)", - {exif_width, NULL, NULL, file_width} }, - {"@y", "pixel height (1704)", - {exif_height, NULL, NULL, file_height} }, - {"@make", "device make (Canon)", - {exif_make, NULL, NULL, NULL} }, - {"@model", "device model (Canon PowerShot S40)", - {exif_model, NULL, NULL, NULL} }, - {"@speed", "shutter speed (1-60)", - {exif_speed, NULL, NULL, NULL} }, - {"@aper", "aperture (F3.2)", - {exif_aperture, NULL, NULL, NULL} }, - {"@iso", "iso speed (400)", - {exif_iso, NULL, NULL, NULL} }, - {"@focal", "focal length (8.6 mm)", - {exif_focal, NULL, NULL, NULL} }, - {"@dist", "subject distance (1.03 m)", - {exif_distance, NULL, NULL, NULL} }, - {"@meter", "meter mode (multi-segment)", - {exif_meter, NULL, NULL, NULL} }, - {"@macro", "macro mode (Off)", - {exif_macro, NULL, NULL, NULL} }, - {"@orient", "orientation (top_left)", - {exif_orientation, NULL, NULL, NULL} }, - {"@lens", "lens name (Tamron 90mm f-2.8)", - {exif_lens, NULL, NULL, NULL} }, - {"@key", "first keyword (Family)", - {exif_keyword, iptc_keyword, NULL, NULL} }, - - {"", "", {NULL, NULL, NULL, NULL} } -}; - - -// Check that 'opt1' and 'opt2' are not specified at the same time. -void conflicting(const po::variables_map& vm, - const char* opt1, const char* opt2) -{ - if (vm.count(opt1) && !vm[opt1].defaulted() - && vm.count(opt2) && !vm[opt2].defaulted()) { - throw std::logic_error(std::string("conflicting options '") - + opt1 + "' and '" + opt2 + "'"); - } -} - -// Check that 'required' is present -void required(const po::variables_map& vm, const char* required) -{ - if (!vm.count(required) || vm[required].defaulted()) { - throw std::logic_error(std::string("required parameter '") + required - + "' is missing"); - } -} - -void info(const std::string &msg) -{ - if(g_verbose) { - std::cout << msg << "\n"; - g_neednewline = false; - } -} - -void error(const std::exception &e, const std::string &msg) -{ - if(g_neednewline) { - std::cout << "\n"; - g_neednewline = false; - } - std::cerr << e.what() << "\n"; - std::cerr << msg << std::endl; -} - -void usage_header(const char* exname) -{ - std::cout << "Usage: " << exname << " [options] source-dir dest-dir pattern\n"; -} - -void usage_full(const po::options_description &options, const char* exname) -{ - usage_header(exname); - std::cout << "\n Creates groups of files in new directories defined by a metadata 'pattern'.\n" << - " Files are copied, moved, or linked from 'source-dir' to 'dest-dir'.\n" << - " The destination directory should not be within the source directory.\n\n"; - std::cout << options; - - std::cout << "\nPattern values:\n"; - for( const Pattern *pattern = g_patterns; pattern->pat.length(); ++pattern) { - std::cout << " " << std::setw(8) << std::left << pattern->pat; - std::cout << pattern->desc << "\n"; - } - - std::cout << "\nExamples:\n"; - std::cout << " `" << exname << " -m mess clean @year-@month'\n"; - std::cout << " Moves files from 'mess' into directories of 'clean' according to\n" << - " year-month the file was captured (clean/2006-11/...)\n\n"; - std::cout << " `" << exname << " -o ie source find width-@x/height-@y'\n"; - std::cout << " Copies files into directories according first to pixel width then pixel\n" << - " height. Check iptc then exif metadata (find/width-2272/height-1704/...)\n\n"; - std::cout << " `" << exname << " -lf source find @aper/@hour'\n"; - std::cout << " Force create symlinks in directories according first to aperture then\n" << - " hour captured (find/F3.2/15/...)\n"; - - std::cout << std::endl; -} - -void version() -{ - std::cout << "organized 0.1\n" << - "Copyright (C) 2009 Brad Schick. \n\n" << - "This program is free software; you can redistribute it and/or\n" - "modify it under the terms of the GNU General Public License\n" - "as published by the Free Software Foundation; either version 2\n" - "of the License, or (at your option) any later version.\n" - "\n" - "This program is distributed in the hope that it will be useful,\n" - "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" - "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" - "GNU General Public License for more details.\n" - "\n" - "You should have received a copy of the GNU General Public\n" - "License along with this program; if not, write to the Free\n" - "Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" - "Boston, MA 02110-1301 USA" << std::endl; -} - -// Returns empty string if the destination subdirectory could not be determined -// for the supplied source file. -std::string build_dest(const fs::path &source_file) -{ - std::string dest; - - Exiv2::Image::AutoPtr image; - try { - image = Exiv2::ImageFactory::open(source_file.string()); - image->readMetadata(); - } - catch(const Exiv2::AnyError&) { - // No metadata, let things continue to try file info - } - - std::vector::iterator iter = g_path_parts.begin(); - std::vector::iterator end = g_path_parts.end(); - for( ; iter != end; ++iter) { - dest += iter->pre; - std::string result; - - const Pattern *pat = iter->pat; - for(unsigned fx = 0; fx < g_run_order.size(); ++fx) { - if(g_run_order[fx] != -1 && pat->funcs[g_run_order[fx]]) { - if(g_run_order[fx] == FILE_SLOT) { - // Always run file operations - result = pat->funcs[g_run_order[fx]](image.get(), source_file); - } - else if(image.get()) { - // No point in running metadata operations without an image - result = pat->funcs[g_run_order[fx]](image.get(), source_file); - } - if(result.length()) - break; - } - } - // If we found no data, even for part of pattern, give up and - // return no destination - if(!result.length()) - return result; - - dest += (result + iter->post); - } - return dest; -} - -bool md5sum(const fs::path &path, md5digest &digest) -{ - try { - Exiv2::FileIo io(path.file_string()); - if (io.open() != 0) - return false; - Exiv2::IoCloser closer(io); - - Exiv2::byte buff[4096]; - MD5_CTX context; - MD5Init(&context); - - long read_count = io.read(buff, 4096); - while(read_count) { - MD5Update(&context, buff, read_count); - read_count = io.read(buff, 4096); - } - MD5Final(digest, &context); - return true; - } - catch (std::exception& ) { - return false; - } -} - - -int main(int argc, char* argv[]) -{ - po::options_description options("Options"); - // Don't use default values because the help print it ugly and too wide - options.add_options() - ("move,m", "move files rather than copy") - ("symlink,s", "symlink files rather than copy (posix only)") - ("order,o", po::value(), - "order and types of metadata to read\ne=exif, i=iptc, f=file (default: eif)") - ("unsorted,u", po::value(), - "special directory to store unsorted files (default: unsorted)") - ("dups,d", po::value(), - "special directory to store files with duplicate names (default: duplicates)") - ("force,f", "overwrite duplicate files instead of using special directory") - ("rename,r", "rename duplicate files instead of using special directory") - ("ignore,i", "ignore both unsorted and duplicate files instead of using special directories") - ("ignore-unsorted", "ignore unsorted files instead of using special directory") - ("ignore-dups", "ignore duplicate files instead of using special directory") - ("verify", "verify copied or moved files and exit if incorrect") - ("exclude,x", po::value< std::vector >(), - "exclude directories and files that contain arg (case sensitive on all platforms)") - ("limit-depth,l", po::value(), - "limit recursion to specified depth (0 disables recursion)") - ("verbose,v", "prints operations as they happen") - ("dry-run,n", "do not make actual changes (implies verbose)") - ("help,h", "show this help message then exit") - ("version,V", "show program version then exit") - ; - - po::options_description hidden("Hidden Options"); - hidden.add_options() - ("source-dir", po::value< std::string >(), "directory of files to organize, may end in file wildcard") - ("dest-dir", po::value< std::string >(), "desination directory for files, may not be within source-dir") - ("pattern", po::value< std::string >(), "subdirectory pattern for grouping files within dest-dir") - ; - - po::options_description cmdline; - cmdline.add(options).add(hidden); - - po::positional_options_description positional; - positional.add("source-dir", 1); - positional.add("dest-dir", 1); - positional.add("pattern", 1); - - try { - po::variables_map vm; - po::store(po::command_line_parser(argc, argv). - options(cmdline).positional(positional).run(), vm); - po::notify(vm); - - if (vm.count("help")) { - usage_full(options, argv[0]); - return 0; - } - - if (vm.count("version")) { - version(); - return 0; - } - - conflicting(vm, "verify", "symlink"); - conflicting(vm, "move", "symlink"); - conflicting(vm, "unsorted", "ignore"); - conflicting(vm, "unsorted", "ignore-unsorted"); - conflicting(vm, "dups", "ignore"); - conflicting(vm, "dups", "ignore-dups"); - conflicting(vm, "force", "ignore"); - conflicting(vm, "force", "ignore-dups"); - conflicting(vm, "force", "rename"); - conflicting(vm, "rename", "ignore"); - conflicting(vm, "rename", "ignore-dups"); - required(vm, "source-dir"); - required(vm, "dest-dir"); - required(vm, "pattern"); - - const bool dry_run = vm.count("dry-run") != 0; - g_verbose = (vm.count("verbose") != 0 || dry_run); - - std::string order = "eif"; - if(vm.count("order")) { - order = vm["order"].as(); - - boost::to_lower(order); - if(order.length() > 3) { - throw std::logic_error(std::string("order is longer than 4 characters")); - } - } - - unsigned i = 0; - std::string::iterator end = order.end(); - for(std::string::iterator iter = order.begin(); iter != end && i < 4; ++iter, ++i) { - switch(*iter) { - case 'e': - g_run_order[i] = EXIF_SLOT; - break; - case 'i': - g_run_order[i] = IPTC_SLOT; - break; - case 'x': - throw std::logic_error(std::string("xmp not implemented yet '") + - *iter + "'"); - break; - case 'f': - g_run_order[i] = FILE_SLOT; - break; - default: - throw std::logic_error(std::string("unknown order character '") + - *iter + "'"); - } - } - - const fs::path source_dir( vm["source-dir"].as() ); - if( !exists(source_dir) || !is_directory(source_dir) ) { - throw std::logic_error(std::string("source '") + - source_dir.string() + "' must exist and be a directory"); - } - - const fs::path dest_dir( vm["dest-dir"].as() ); - if( exists(dest_dir) && !is_directory(dest_dir) ) { - throw std::logic_error(std::string("destination '") + - dest_dir.string() + "' must be a directory"); - } - - // Boost doesn't seem to have a way to get a canonical path, so this - // simple test is easy to confuse with some ../../'s in the paths. Oh - // well, this is good enough for now. - fs::path test_dest(dest_dir); - for(; !test_dest.empty(); test_dest = test_dest.parent_path()) { - if(fs::equivalent(source_dir, test_dest)) { - throw std::logic_error(std::string("dest-dir must not be within source-dir")); - } - } - - // Disect the pattern - std::string pattern = vm["pattern"].as(); - boost::regex regex( "([^@]*)(@[[:alpha:]]+)([^@]*)"); - boost::sregex_iterator m_iter = make_regex_iterator(pattern, regex); - boost::sregex_iterator m_end; - for( ; m_iter != m_end; ++m_iter) { - const boost::smatch &match = *m_iter; - const std::string &pre = match[1]; - const std::string &pat = match[2]; - const std::string &post = match[3]; - - // Should put this in a map, but there aren't that many options now - bool found = false; - for( const Pattern *pattern = g_patterns; pattern->pat.length(); ++pattern) { - if(pattern->pat == pat) { - PathPart part(pre, pattern, post); - g_path_parts.push_back(part); - found = true; - break; - } - } - - if(!found) { - throw std::logic_error(std::string("unknown pattern '") + pat + "'"); - } - } - - // Assign defaults to params that need them - const bool ignore = vm.count("ignore") != 0; - std::vector excludes; - if(vm.count("exclude")) - excludes = vm["exclude"].as< std::vector >(); - long limit_depth = LONG_MAX; - if(vm.count("limit-depth")) { - limit_depth = vm["limit-depth"].as(); - // Boost program_options doesn't work with unsigned, so do it manually - if( limit_depth < 0 ) - throw std::logic_error(std::string("recursion depth limit must be positive")); - } - std::string dups = "duplicates"; - if(vm.count("dups")) - dups = vm["dups"].as(); - const fs::path dups_dir = dest_dir / dups; - - std::string unsorted = "unsorted"; - if(vm.count("unsorted")) - unsorted = vm["unsorted"].as(); - const fs::path unsorted_dir = dest_dir / unsorted; - - ProcessParams params = { - dest_dir, - dry_run, - (vm.count("ignore-dups") != 0 || ignore), - (vm.count("ignore-unsorted") != 0 || ignore), - vm.count("force") != 0, - vm.count("rename") != 0, - vm.count("symlink") != 0, - vm.count("verify") != 0, - vm.count("move") != 0, - limit_depth, - dups_dir, - unsorted_dir, - excludes, - 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - - process_directory(source_dir, 0, params); - - std::string op = "copied"; - if(params.symlink) - op = "linked"; - else if(params.move) - op = "moved"; - - if(dry_run) - op = std::string("would be ") + op; - - if(g_neednewline) - std::cout << "\n"; - - std::cout << "\n" << params.ok_count << " files " << op << "\n"; - std::cout << " " << params.dups_count << " duplicates\n"; - std::cout << " " << params.unsorted_count << " unsorted\n"; - if(params.dups_ignored_count) - std::cout << params.dups_ignored_count << " duplicates ignored\n"; - if(params.unsorted_ignored_count) - std::cout << params.unsorted_ignored_count << " unsorted ignored\n"; - if(params.dir_ex_count) - std::cout << params.dir_ex_count << " directories excluded\n"; - if(params.file_ex_count) - std::cout << params.file_ex_count << " files excluded\n"; - if(params.dir_err_count) - std::cout << params.dir_err_count << " directory errors\n"; - if(params.file_err_count) - std::cout << params.file_err_count << " file errors\n"; - - return 0; - } - catch (Exiv2::AnyError& e) { - error(e, std::string("Aborting")); - return -1; - } - catch(std::logic_error& e) { - error(e, ""); - usage_header(argv[0]); - std::cout << argv[0] << " -h for more help" << std::endl; - return -2; - } - catch(std::exception& e) { - error(e, "Aborting"); - return -3; - } -} - -boost::regex uregex("(.*?)\\(([[:digit:]]{1,2})\\)$"); - -fs::path uniquify(const fs::path &dest) -{ - std::string ext = dest.extension(); - std::string fname = dest.stem(); - fs::path parent = dest.parent_path(); - - unsigned number = 1; - std::string newfname; - fs::path newdest; - - boost::smatch match; - if(boost::regex_search(fname, match, uregex)) { - // Matches are indexes into fname, so don't change it while reading values - newfname = match[1]; - number = boost::lexical_cast(match[2]); - fname = newfname; - } - - do { - newfname = fname + "(" + boost::lexical_cast(++number) + ")" + ext; - newdest = parent / newfname; - } while(fs::exists(newdest)); - - return newdest; -} - -void process_directory(const fs::path &directory, const long depth, - ProcessParams ¶ms) -{ - // Exclude entire directories - bool exclude = false; - std::vector::const_iterator x_iter = params.excludes.begin(); - std::vector::const_iterator x_end = params.excludes.end(); - for( ; x_iter != x_end; ++x_iter ) { - if(boost::contains(directory.file_string(), *x_iter)) { - exclude = true; - break; - } - } - if(exclude) { - info(std::string("excluding directory: ") + directory.file_string() + - " matched: " + *x_iter); - ++params.dir_ex_count; - return; - } - - try { - fs::directory_iterator p_iter(directory), p_end; - for( ; p_iter != p_end; ++p_iter) { - if( is_directory(*p_iter) ) { - // recurse if we haven't hit the limit - if(depth < params.limit_depth) - process_directory(p_iter->path(), depth + 1, params); - else { - info(std::string("depth reached, skipping: ") + - p_iter->path().file_string()); - } - } - else if( is_regular_file(*p_iter) ) { - - // Check again for excluding file names - exclude = false; - x_iter = params.excludes.begin(); - for( ; x_iter != x_end; ++x_iter ) { - if(boost::contains(p_iter->path().file_string(), *x_iter)) { - exclude = true; - break; - } - } - if(exclude) { - info(std::string("excluding file: ") + p_iter->path().file_string() + - " matched: " + *x_iter); - ++params.file_ex_count; - continue; - } - - try { - const fs::path dest_subdir = build_dest(*p_iter); - fs::path dest_file; - if(!dest_subdir.empty()) - dest_file = params.dest_dir / dest_subdir; - else if(params.ignore_unsorted) { - info(std::string("ignoring unsorted: ") + p_iter->path().file_string()); - ++params.unsorted_ignored_count; - continue; - } - else { - info(std::string("unsorted file (missing metadata): ") + p_iter->path().file_string()); - dest_file = params.unsorted_dir; - ++params.unsorted_count; - } - - dest_file /= p_iter->filename(); - - if(fs::exists(dest_file)) { - if(params.ignore_dups) { - info(std::string("ignoring: ") + p_iter->path().file_string() + - " duplicates: " + dest_file.file_string()); - ++params.dups_ignored_count; - continue; - } - else { - if(params.force) { - info(std::string("force removing: ") + dest_file.file_string() + " for: " - + p_iter->path().file_string()); - if(!params.dry_run) - fs::remove(dest_file); - } - else if(params.rename) { - info(std::string("renaming: ") + p_iter->path().file_string() + - " duplicates: " + dest_file.file_string()); - dest_file = uniquify(dest_file); - } - else { - info(std::string("duplicate file: ") + p_iter->path().file_string() + - " of: " + dest_file.file_string()); - dest_file = params.dups_dir / dest_subdir / p_iter->filename(); - // Ugh, more dup possibilities - if(fs::exists(dest_file)) { - info(std::string("renaming: ") + p_iter->path().file_string() + - " duplicates: " + dest_file.file_string()); - dest_file = uniquify(dest_file); - } - } - ++params.dups_count; - } - } - - if(!params.dry_run) - fs::create_directories(dest_file.parent_path()); - - if(params.symlink) { - info(std::string("linking from: ") + p_iter->path().file_string() + - " to: " + dest_file.file_string()); - if(!params.dry_run) { - // The target of a symlink must be either absolute (aka complete) or - // relative to the location of the link. Easiest solution is to make - // a complete path. - fs::path target; - if(p_iter->path().is_complete()) - target = p_iter->path(); - else - target = fs::initial_path() / p_iter->path(); - fs::create_symlink(target, dest_file); - } - } - else { - info(std::string("copying from: ") + p_iter->path().file_string() + - " to: " + dest_file.file_string()); - if(!params.dry_run) { - // Copy the file and restore its write time (needed for posix) - std::time_t time = fs::last_write_time(*p_iter); - fs::copy_file(*p_iter, dest_file); - fs::last_write_time(dest_file, time); - if(params.verify) { - md5digest src_digest, dst_digest; - bool ok = md5sum(p_iter->path(), src_digest); - if(ok) - ok = md5sum(dest_file, dst_digest); - if(ok) - ok = (memcmp(src_digest,dst_digest, sizeof(md5digest))==0); - if(!ok) { - // Should probably find a more appropriate exception for this - throw std::runtime_error(std::string("File verification failed: '") - + p_iter->path().file_string() + "' differs from '" + - dest_file.file_string() + "'"); - } - else { - info(std::string("verification passed")); - } - } - } - } - if(params.move) { - info(std::string("removing: ") + p_iter->path().file_string()); - if(!params.dry_run) - fs::remove(*p_iter); - } - - if(!g_verbose && (params.ok_count % DOT_EVERY)==0) { - std::cout << "." << std::flush; - g_neednewline = true; - } - ++params.ok_count; - } - catch(fs::filesystem_error& e) { - error(e, std::string("skipping file: " + p_iter->path().file_string())); - ++params.file_err_count; - } - } - } - } - catch(fs::filesystem_error& e) { - error(e, std::string("skipping directory: " + directory.file_string())); - ++params.dir_err_count; - } -} - diff --git a/platform/win32/msvc/external/exiv2/doc/COPYING-XMPSDK b/platform/win32/msvc/external/exiv2/doc/COPYING-XMPSDK deleted file mode 100644 index 00fbdd03161..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/COPYING-XMPSDK +++ /dev/null @@ -1,30 +0,0 @@ -Copyright (c) 1999 - 2008, Adobe Systems Incorporated - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -* Neither the name of Adobe Systems Incorporated, nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/platform/win32/msvc/external/exiv2/doc/ChangeLog b/platform/win32/msvc/external/exiv2/doc/ChangeLog deleted file mode 100644 index 2338b8761c4..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/ChangeLog +++ /dev/null @@ -1,1234 +0,0 @@ -Changes from version 0.22 to 0.23 ---------------------------------- - -* Exiv2 utility - - Allow to add/set tags without a value with the command line tool. - -* Exiv2 library - - 0000819: Recognize Pentax MakerNote in DNGPrivateData (Jonathan Kollasch) - - 0000815: Patch for Tokina 11-16mm f/2.8 on Canon (Chris Chiappa) - - 0000812: Exiv2 destroys hard links (Reported by Anders Kamf) - - 0000811: Typo in de.po (Thomas Beutlich) - - 0000810: assert(tiffType() == ttUndefined) error in tiffcomposite.cpp - (Reported by Auke Nauta) - - 0000809: abs ambiguity in nikonmn.cpp (Pavel Heimlich) - - 0000808: build failure in jpgimage.cpp - namespace (Pavel Heimlich) - - 0000807: spelling-error-in-binary usr/lib/libexiv2.so.9.0.0 - Continous Continuous (Mark Purcell) - - 0000806: spelling-error-in-manpage src/exiv2.1 explicitely explicitly - (Mark Purcell) - - 0000803: Rational/URational issue in convert.cpp (Pavel Heimlich) - - 0000800: Missing Photoshop IRB types (8BIM, PHUT, DCSR, AgHg) - (Michael Ulbrich, Volker Grabsch) - - 0000799: Exiv2 returns wrong XMP type for nested XMP keys - - 0000798: Add MS Photo RegionInfo and MetaWorkingGroup Regions schemas - (Benjamin H.) - - 0000797: A crash can occur with certain JPEGs. (Clint Rogers) - - 0000795: Set/Get of PNG comment (Reported by Thomas Beutlich) - - 0000794: Typo in exifFlash description (Thomas Beutlich) - - 0000793: PNG comment is not set (Thomas Beutlich) - - 0000792: New Canon Lens EF-S 18-55mm f/3.5-5.6 IS II (Andreas Ferber) - - 0000791: Tamron SP AF 17-50mm F/2,8 XR Di II LD Aspherical [IF] Nikon lens - (Philip Johnsson) - - 0000790: XMP embedding corrupts CorelDRAW EPS files - - 0000778: Add support for Windows Live Photo Gallery face tags (Leif Huhn) - - 0000635: [Wish] Write support for Canon RAW CR2 files - - Updated Nikon Lens lookup table to v4.3.428.01 of - Robert Rottmerhusen's fmountlens list. - - Added support for Nikon3 AF Fine Tune array. (Frans van den Bergh) - - Added Canon EF-S 18-55mm f/3.5-5.6 III lens. (Jon Charnas) - - Fixes to buildForMac to work with 0.22 on Leopard and Lion - (Robin Mills) - - Added several KIPI XMP properties (Gilles Caulier) - - Added cmake patch to fix compilation on MSVC with KDE Windows - (Ananta Palani) - - Fixed the supported metadata declared by the Image for several - image formats (mostly XMP was missing). - - Added support for CR2 IFD2 image preview. (An uncompressed TIFF - image without white-balance correction.) - -* MSVC related - - Added support for stdint.h being available in DevStudio 2010 - (Thanks to Ketil Wright for bringing this to our attention) - - -Changes from version 0.21.1 to 0.22 ------------------------------------ - -* Exiv2 utility - - Fixed time setting of -T option when DST is in effect. - - Added version hex number to the output of "exiv2 -V". - -* Exiv2 library - - 0000798: Added people/photo region tagging schemas - MS Photo 1.2 RegionInfo and MWG Regions - (Benjamin Henne) - - 0000785: Exif version 2.3 missing tag codes. (Patch by Jens Mueller) - - 0000782: Tamron 18-270mm lens. (Patch by Jens Mueller) - - 0000781: Exif 2.3 & DNG 1.2/1.3 tags. (Patch by Jens Mueller) - - 0000776: Some tests depend on system settings (locale, path, etc). - (Volker Grabsch) - - 0000775: Sort iptc data by record number when encoding. - (Patch by Matthias Baas) - - 0000772: New Tamron 70-300 mm lens improperly recognized. - (Reported by Marie-Noëlle Augendre, patch by Milan Knizek) - - 0000769: "Assertion `sv == d' failed" in 0.21.1 (r2474). - (Reported by Derek Chen-Becker, reproducer by Paolo Bacchilega) - - 0000767: Build failure on MinGW with GCC >= 4.6 because of "-no-undefined". - (Volker Grabsch) - - 0000765: Debug messages of psdimages.cpp go to stdout instead of stderr. - (Volker Grabsch) - - 0000764: PSD resource block handling patch II. - (Patch by Michael Ulbrich) - - 0000761: Setting metadata on an image should always succeed. - (Patch by Matthias Baas) - - 0000760: Exiv2 fails to write to JPEG with an empty APP13 Photoshop PS3 - segment. (Reported by Stefan Brandl) - - 0000757: Wrong ELSE statement in src/CMakeLists.txt. - (Reported by Michael Hansen) - - 0000708: On Windows (MSVC and MinGW builds), charset conversions now - use respective Windows functions if iconv is not available. - - 0000689: Support for Encapsulated PostScript (*.eps) files. - (Michael Ulbrich, Volker Grabsch) - - 0000439: The exiv2 library should be re-entrant. - (Patch by Jonathan Potter, GP Software) - - Fixed typo: SupplementalCategory -> SupplementalCategories. - (Jürgen Wolz) - - Added Tokina AT-X 107 AF DX Fish-eye 10-17mm f/3.5-4.5 lens. - (Milan Knizek) - - Added Exif.Panasonic.LensType to the Exiv2::lensName() - easy-access function. (Adrian Woodley) - - Added Exif.OlympusEq.LensModel to the Exiv2::lensName() - easy-access function. (Niels Kristian Bech Jensen) - - Added new function Exiv2::versionNumberHexString(). - (Volker Grabsch) - - Updated Nikon Lens lookup table to v4.3.423.01 of - Robert Rottmerhusen's fmountlens list. - - Updated Samsung makernote. - - Break-up ValueType constructor into two as a workaround for - a MSVC 7.1 bug. - - Simplified LogMsg to make it more portable and more efficient. - (The original version doesn't build with MSVC 7.1.) - -* MSVC related - - Added build environment for MSVC 64 bit builds. - (Robin Mills) - - -Changes from version 0.21 to 0.21.1 ------------------------------------ - -* Exiv2 library - - 0000759: Cannot extract exif data from Pentax K-x DNG file. - (Reported by Kenneth Bogert) - - 0000752: Crash when writing Exif.Image.Software. - (Reported by Jim Nelson) - - 0000750: Assertion in XmpParser::encode should be an exception. - - 0000749: Regression: Compilation error with EXV_HAVE_XMP_TOOLKIT undefined. - (Reported by Fulvio Senore) - - 0000745: Regression: Panasonic RW2 files are missing information. - (Reported by Matthias Welwarsky) - - Updated configuration files (config.guess, config.sub). - - Added new Color Label value to digiKam 2.0.0 XMP namespace. - (Gilles Caulier) - - -Changes from version 0.20 to 0.21 ---------------------------------- - -* Exiv2 utility - - 0000727: Exiv2 command line tool: grep should find all occurrences of a - tag, not only one. - (Reported by Steve Wright) - - Added option -q (quiet) to silence warnings and error messages - from the Exiv2 library to the exiv2 command line tool. - - Allow "migration" of XMP namespaces. - -* Exiv2 library - - 0000476: Error handler: Applications should be able to register an error - handler. (Based on work by Simson Garfinkel) - - 0000614: Silence warnings from code. - - 0000712: Support of Sigma 17-50 2.8 OS HSM. (Reported by Steffen bla) - - 0000713: Tag 0x0203 in Olympus makernotes should be "Lens ID". - - 0000719: Remove makernote classes and pretty-print functions from the - published interface. - - 0000721: Remove IfdId from the published interface. - - 0000726: Add support for Samsung's .SRW raw format. - (Reported by Oleg Yermakov) - - 0000564: Need a way to get a list of all supported tags. - (Reported by Jan Kundr) - - 0000593: The default type of Array element tags is incorrect. - - 0000625: New image formats and improved makernote support should not - break ABI. - - 0000678: Lensname missing with EF100mm f/2.8L Macro IS USM. - (Reported by Christoph Spiel) - - 0000711: exiv2 0.20 is corrupting ORF files from E-PL1. - (Reported by Mark Haun) - - 0000714: Problem compiling with Sun Studio - visibility. - (Reported by Pavel Heimlich) - - 0000717: Writing Exif.Image.ImageDescription in ORF file corrupts file. - (Reported by Wouter Portegijs) - - 0000734: Support for Tamron 17-50mm f/2.8 SP XR LD II Di VC. - (Reported by Jari-Matti Mäkelä) - - 0000735: Support for Sigma AF 50mm f/1.4 EX DG HSM. - (Reported by Jari-Matti Mäkelä) - - 0000736: Exiv2 crash on "print". - (Reported by Bastian Holst) - - 0000737: Metadata of Canon EF-S 18-55mm are not read correctly. - (Reported by G. Lechner) - - 0000739: exiv2 crashes when examining previews. - (Reported by Jim Nelson) - - 0000709: Typo in XMPCore_Impl.hpp. (Patch by Dimitri Schoolwerth) - - 0000716: Missing header in canonmp.cpp. (Patch by Pavel Heimlich) - - 0000723: Fix pkg-config file. (Patch by Johannes Wienke) - - 0000738: PSD resource block handling patch. - (Patch by Michael Ulbrich) - - Updated Nikon Lens lookup table to v4.3.410.01 of - Robert Rottmerhusen's fmountlens list. - - Introduced exiv2.hpp as a wrapper to include all Exiv2 objects. - - Added a count field to the Exif tag reference data. - (Patch by Matthias Baas) - - Added ExifKey::defaultCount() to access the new count reference - information. - - Fixed zlib uncompression of large PNG metadata buffers. - - Improved determination of MIME type. - - Updated Canon makernote. (Greg Mansfield, Axel Waggershauser) - - Updated Olympus makernote. (Greg Mansfield) - - Updated Sony and Minolta makernote tags. (Gilles Caulier) - - Fixed writing to pseudo memory mapped areas on Linux. - - Modified test for XMP files to not recognize any XML file with - a regular header as XMP. - - Added afPoint() easy-access function. - (Based on a patch by july) - - Updated Spanish translations. (Pablo Valdés) - -* MSVC related - - Updated MSVC project files (and notes) to build with - DevStudio 2010 (and with DevStudio 2003/5/8). (Robin Mills) - - Changes to MSVC build environment: renamed generated libraries. - (Robin Mills, Jon Roch-Berry) - - -Changes from version 0.19 to 0.20 ---------------------------------- - -* Exiv2 utility - - 0000683: %a broken in rename - (Reported by Göran Uddeborg) - - 0000572: It should be possible to insert newlines in text strings. - (Implemented using a new function by Leo Sutic) - - 0000562: Exif.Photo.UserComment unicode comment doesn't work - (Debian bug 486884) - - Added -g option to 'grep' info for individual tags. - -* Exiv2 library - - 0000705: Pentax 645D makernote update - (Patch by Michal ÄŒihaÅ™) - - 0000704: Update of Pentax makernote - (Patch by Michal ÄŒihaÅ™) - - 0000701: Nikon Capture NX won't save a NEF file manipulated with exiv2 - from SVN - (Reported by Frank Hommes) - - 0000699: Padding of XMP data results in invalid XMP JPEG segment larger - than 65535 bytes - (Patch by Joachim Gelhaus) - - 0000695: Add XMP support for src/metacopy - (Patch by Nikolai Saoukh) - - 0000693: src/psdimage.cpp: operands of ? are integers of different - signs: 'unsigned int' and 'long' - (Patch by Nikolai Saoukh) - - 0000690: Wrong conversion of IPTC SpecialInstructions in copyIptcToXmp() - (Patch by Volker Grabsch) - - 0000686: LLVM clang: error: default initialization of an object of const - type 'class Exiv2::IptcData const' requires a user-provided - default constructor. - (Reported by Nikolai Saoukh) - - 0000684: Exif.Image.SubIFDs should support more than 4 sub-IFDs - (Reported by frith [dot] foottit [at] gmail [dot] com in - digiKam bug 210259) - - 0000677: Nikon Makernote tags regression in exiv 0.19 - (Reported by Mark Purcell. digiKam bug 224094, Debian bug 579835) - - 0000674: ShutterSpeedValue should be a signed rational - (Patch by Olivier Tilloy) - - 0000673: Allow XMP sidecar files which start with a UTF-8 BOM - (Reported by Michael Friess) - - 0000672: Image file gets deleted when writing to it - (Reported with reproducer by Thomas Beutlich) - - 0000671: Writing to read-only TIFF-like file fails - - 0000668: "TIFF-safe" setExifData variant - - 0000666: Optimize binary array elements - - 0000665: Write support for Olympus RAW ORF files - - 0000662: Incorrect Unicode encoding of Exif UserComment tag - (Leo Sutic) - - 0000659: LensType not reported for Pentax K-x - (Reported by Piotr Ryszkiewicz) - - 0000611: Add support for makernote of Sony ARW files - (Gilles Caulier) - - 0000569: Unable to write GPS data in ORF files with digikam - (Reported by Johannes Wienke. digiKam bug 170693) - - Added Kipi XMP namespace used by digiKam kipi-plugins - (Gilles Caulier) - - Added iView Media Pro and MS Expression Media XMP schemas. - (Silversleeves) - - Generalized class Error, added class WError for use with - Unicode-Paths. - - Updated Nikon Lens lookup table to v4.3.401.01 of - Robert Rottmerhusen's fmountlens list. - - Various fixes and enhancements when building with MSVC. - (Robin Mills, Thomas Beutlich, Jens Mueller) - - Added several missing TIFF tags (from PageMaker 6.0, Adobe - OPI TIFF, Adobe TIFF&PM6 and TIFF/EP specs). - - Completed support for Nikon makernote (Jens Mueller) - - -Changes from version 0.18.2 to 0.19 ------------------------------------ - -* Exiv2 utility - - Inverted the meaning of -u to deal with large numbers of - unknown Nikon Makernote tags. - - -b option now also suppresses Byte and SByte values. - -* Exiv2 library - - 0000664: Crash when reading PNG image. - (Reported by Marcel Wiesweg. digiKam bug 220322) - - 0000661: Tag Exif.Image.ImageResources (0x8649 in IFD0) should have - type BYTE (1). - - 0000658: Exception to print raw from Olympus SP-560UZ. - (Reported by Francisco Javier Felix Belmonte) - - 0000657: Nef Metadata edit with Digikam make impossible to open it with - captureNX or ViewNX. - (Reported by Nicolas Boulesteix) - - 0000656: Broken image causes exiv2 to abort. - (Reported by Nathaniel W. Turner. digiKam bug 214913) - - 0000653: SVN 1912 fails to build. - (Reported by mike m) - - 0000652: Problems converting SubSec tags to XMP. - - 0000651: Exif tag: TimeZoneOffset (0x882a) and other TIFF/EP tags missing. - (Reported by Gary Cohen) - - 0000649: Converter fixes. - (Patches by Vladimir Nadvornik) - - 0000647: Seg fault with Olympus E-P1 orf. - (Reported by Udi Fuchs) - - 0000646: Additional lens data. - (Reported by mike m) - - 0000645: Conversion from XMP sidecar leaks XMP-SDK exception. - (digiKam bug 204042, patches by Vladimir Nadvornik) - - 0000642: string formatting of error #31. - (Patch by Matthias Barkhoff) - - 0000641: exiv2 "Image size" output broken for Nikon D700 NEF files. - (Reported by Martin Paris) - - 0000634: Locking error on windows when updating a TIFF file with - MemoryMapping enabled. - (Reported and fixed by Robin Mills) - - 0000629: Virtual functions should not be inlined. - - 0000627: typeId methods not available, -fvisibility-inlines-hidden - (Reported by Rex Dieter) - - 0000620: Update Nikon makernotes. - - 0000617: Optimize TIFF writing. - - 0000600: Upgrade XMP Toolkit to version 4.4.2. - - 0000581: Remove FindMetadatum* from API. - - 0000579: Implement memory mapping for Windows platforms. - (Based on an implementation by Robin Mills) - - 0000571: Need to convert character set when writing XMP sidecar. - (Reported by Franz Buchinger, patch by Vladimir Nadvornik) - - 0000533: Support multiple APP13 Photoshop 3.0 segments in a JPEG. - (Designed and implemented by Michael Ulbrich and Volker Grabsch) - - Changed FileIo and MemIo classes to use a Pimpl structure. - - Removed --disable-printucs2 configure option. - - Updated config files - - Added support for Canon FileInfo tags (Andi Clemens). - - Updated Nikon Lens lookup table to v4.1.361.01 of - Robert Rottmerhusen's fmountlens list. - - Added Sigma 28-80mm f/3.5-5.6 lens. - (Jo Hanika) - - Added support for Unicode paths on Windows (experimental) - (Based on work by Jonathan Potter, GP Software) - - Added easy-access functions saturation, sharpness, contrast and - sceneCaptureType. - (Jonathan Potter, GP Software) - - Fixed compilation warnings/error under MSVC when building for x64. - (Jonathan Potter, GP Software) - - On Windows, use Windows function for conversion of UCS-2 strings. - (Jonathan Potter, GP Software) - - Support for PGF files added. - (Gilles Caulier) - - Updated digiKam XMP properties. - (Gilles Caulier) - - Added iptc4xmpExt and plus XMP schemas. - (Based on a patch from Mikolaj Machowski). - - [translation] Updated Finnish translations. - (Mikael Lammentausta) - - [translations] Updated Polish translations. - (Michal Smoczyk) - - -Changes from version 0.18.1 to 0.18.2 -------------------------------------- - -* Exiv2 library - - 0000638: Valgrind reports errors when writing to PNG image. - - 0000636: Exiv2 corrupts certain NEF images when writing to them. - (digiKam bug 193228) - - 0000633: Editing via symlink does not work as expected. - (Reported by Vladimir Nadvornik. Also reported as - Debian bugs 466944 and 511273) - - 0000632: [translation] a few more small bugs. - (Reported by Michal Smoczyk) - - 0000631: [translation] a few bugs. - (Reported by Michal Smoczyk) - - 0000630: PNG images: CRC error in chunk zTXt. - (Reported by gegio 0, patch by Jochen Schug) - - 0000628: JPG images: Exiv2 puts comments directly after SOI. - (Reported by Johannes Hofmann) - - 0000626: PNG images: Setting IPTC preview corrupts PNG image. - (Reported by Gilles Caulier) - - 0000556: timegm() function should work with Windows 64bit time_t. - (Robin Mills) - - PNG images: Embed IPTC data in a Photoshop IRB. - - PNG images: Support creation of an image. (Gilles Caulier) - - JP2 images: Support creation of an image. (Gilles Caulier) - - Added a new Sigma lens to Minolta makernote. (Gilles Caulier) - - Updated Nikon Lens lookup table to v4.0.352.00 of - Robert Rottmerhusen's lens database. - - Fixed illegal read in ValueType::read(). - - [translation] Updated Polish translations. - (Michal Smoczyk) - - -Changes from version 0.18 to 0.18.1 ------------------------------------ - -* Utilities - - 0000612: Failed to delete XMP data from NEF (or any other TIFF-based) - images. (Reported by Martin Eriksson) - - 0000602: Exiv2 generated TIFF incompatible with libtiff. - (Reported by Udi Fuchs) - - Added new "organize" tool (Brad Schick). - -* Exiv2 library - - 0000623: Remove TiffPrinter visitor. - - 0000622: Exiv2 doesn't parse MicrosoftPhoto schema prefix correctly. - (Reported by Gilles Caulier / Sylvain Crouzillat) - - 0000619: Segfault when opening PNG image. - (Reported with patch by Lukasz Krzyzak) - - 0000618: Easy access to information which may be in different Exif tags. - (Based on a patch from Carsten Pfeiffer) - - 0000615: Setting the Exif makernote tag aborts if type is not - "undefined". (digiKam bug 182738) - - 0000609: Building a DLL of Exiv2 0.18 in MinGW requires -no-undefined - linker flag. (Reported with solution by Giuseppe Rota) - - 0000606: Add write support for Photoshop PSD image format. - (Patch from Michael Ulbrich) - - 0000604: Nikkor lens on Nikon D90 not recognized. - (Reported by Niels Kristian Bech Jensen) - - 0000603: Exiv2 does not read lens maker. - (Reported by Niels Kristian Bech Jensen) - - 0000594: Modifying images on an NTFS file system fails. - (digiKam bug 178103) - - 0000494: Patch for displaying focal length (Exif.Canon.FocalLength). - (Patch from Artis Rozentals) - - Updated Panasonic makernote. - - Added read-support for Panasonic RW2 raw images. - (With valuable input from Matthias Welwarsky) - - Some Nikon makernote updates. - - Updated Nikon Lens lookup table to v4.0.347.00 of - Robert Rottmerhusen's lens database. - - Fixed crash in Pentax makernote pretty-printing code. - (Reported by Marijn Kampf) - - Refactored TiffCreator: simplified, fixed several todo's, added - support for multiple TIFF tree structures. - -* MSVC related - - 0000621: windows librarys are forcing a link to - ..\..\..\zlib-1.2.3\projects\visual6\blah\blah. - (Reported by Peter J. Ersts, fix by Robin Mills) - - -Changes from version 0.18-pre2 to 0.18 --------------------------------------- - -* Exiv2 utility - - 0000580: [tools] -M option fails and reports success. - (Reported by Daniel Blueman) - - [tools] Added options -pp and -ep to list and extract preview - images. - - [tools] Added option -pa to print all metadata, added control - for the type of metadata in option -P. - -* Exiv2 library - - 0000591: [build environment] Added missing #includes for g++ 4.4. - (Debian bug 505023, patch from Martin Michlmayr) - - 0000586: [metadata] ValueType constructor makes assumptions of the - endianness of the machine. (Reported by Dimitri) - - 0000584: [build environment] Linking fails for PreviewImage::pData(). - (Reported by Joakim Rosqvist) - - 0000583: [build environment] Linking fails when compiling. - (Reported by Joakim Rosqvist) - - 0000542: [exif] Exiv2 doesn't find exif data in attached file. - (Reported by Paolo Benvenuto) - - [exif] Updated Nikon lens info to v3.82 of Robert Rottmerhusen's - lens database. - - [exif] Fixed adjustment of invalid tag data. - (digiKam bug 177457) - - [exif] Catch unknown makernotes before reading the IFD. - (digiKam bug 174620) - - [exif] Introduced logic to fit Exif data in a 64kB block when - writing to JPEG images. - - [exif] Various TIFF parser improvements. - - [exif] Added support for Olympus FE and Raw Info subdirs and - tags. - - [design] class PreviewImage: Added members to access all preview - properties. - - [design] class Metadatum and derived classes: Added familyName() - and groupName(). - - [design] class ExifData: Added erase(beg, end). - - [translation] Updated Polish translations. - (Piotr Eljasiak) - - [translation] Updated German translation. - (Oliver Dörr) - - [translation] Updated Slovak translations. - (Ivan Masar) - -* MSVC related - - 0000578: [build environment] More fixes for the MSVC build environment. - (Robin Mills) - - -Changes from version 0.18-pre1 to 0.18-pre2 -------------------------------------------- - -* MSVC related - - 0000567: [build environment] Re-wrote MSVC build files. Now builds an - experimental DLL among other improvements. (Robin Mills) - -* Exiv2 library - - 0000570: [exif] Fuji SP-3000 Makernote not recognized. - (Reported by han AT whria DOT net) - - 0000516: [exif] Print functions need access to other tags. - - 0000473: [design] Support Preview images. (Vladimir Nadvornik) - - [exif] Fixed non-intrusive encoding for Minolta array elements. - - [exif] Fixed test whether data area is outside of the data buffer. - - [exif] Added check for circular IFD references to new TIFF parser. - - [exif] Added Exif.CanonCs.LensType and pretty-print function. - - [exif] Added Nikon decryption algorithm and use it to decode - lens data. - - [misc] Initialized variable which lead to crash on Windows. - (Reported by Robin Mills). - - [exif] Added synthesized info tags Exif.MakerNote.Offset and - Exif.MakerNote.ByteOrder. - - [misc] Some performance improvements. - (Analysis by Vladimir Nadvornik) - - [exif] Always add Exif.Photo.Makernote tag, even if the - makernote is decoded. - - [xmp] Fixed issue with custom namespaces ending with a #. - (Reported by chrysn) - - [exif] Added Olympus2 makernote support. (Vladimir Nadvornik) - - [translation] Updated German translation. - (Oliver Dörr) - - [translation] Updated Polish translation. - (Piotr Eljasiak) - - [design] Removed inline functions from class hierarchies. - (Patrick Spendrin) - - -Changes from version 0.17.1 to 0.18-pre1 ----------------------------------------- - -* Exiv2 library - - 0000568: [metadata] exiv2 -ps crash for some jpeg files. (Reported by - aurelien) - - 0000566: [miscellaneous] RSA licensed MD5.cpp file in exiv2 0.16. - (Reported with fix by Dirk Mueller) - - 0000565: [exif] IFDs and IFD offsets need to be aligned to word - boundaries. (Reported by iplabs.de) - - 0000554: [exif] Setting "Exif.Image.DateTime Date" gives "Value too - large" exception. (Debian Bug 426274) - - 0000553: [design] [U]Rational::toLong() and toFloat() should not divide - by 0. - - 0000528: [miscellaneous] typeSize is meant for Exif metadata only. - - 0000526: [metadata] Adding GPS info removes preview image from Nikon - Coolpix JPGs. (Reported by paulb) - - 0000524: [design] Publish only API objects in the installed header files. - - 0000523: [miscellaneous] C++ symbol visibility support for gcc builds. - - 0000464: [metadata] Write support for PNG images. (Gilles Caulier) - - 0000462: [exif] Write support for TIFF format ("New TIFF parser"). - - 0000405: [design] Separate metadata parsing from metadata storage. - - [metadata] Write support for JPEG2000 format. (Gilles Caulier) - - [exif] Updated Nikon lens info to v3.25 of Robert Rottmerhusen's - lens database. - - [xmp] Added Microsoft Photo and digiKam XMP schemas. - (Gilles Caulier) - - [exif] Added DNG tags. - - -Changes from version 0.17 to 0.17.1 ------------------------------------ - -* Exiv2 library - - 0000560: [xmp] Can't delete (last) XMP tag. (Reported by SerGioGioGio) - - 0000559: [exif] Crash when extracting Exif orientation flag from Kodak - DCR raw file. (Reported by Gilles Caulier) - - 0000558: [jpeg i/o] "Warning: JPEG format error, rc = 5" for most of my - JPEG files. (Reported with patch by Marcus Holland-Moritz) - - 0000552: [build environment] Build failure under Mac OS X 10.3.9 - (Reported by Marius Schamschula) - - [exif] Fixed several potential division by 0 bugs. - - -Changes from version 0.16 to 0.17 ---------------------------------- - -* Exiv2 utility - - [tools] exiv2 now writes a proper XMP sidecar file (it used to - just dump the XMP packet to a file). - - [tools] exiv2 can now also save Exif and IPTC data in the XMP - sidecar file (conversion of Exif/IPTC to/from XMP). - -* Exiv2 library - - 0000550: [design] Remove "MakerTagInfo registry" and registration logic. - - 0000547: [build environment] exiv2 0.16 fails to compile with gcc 4.3.0. - - 0000546: [exif] Exiv2 crashes while converting Nikon lens information - for pretty printing. - - 0000541: [translation] French translation mistake. - - 0000540: [xmp] Pretty-print functionality for XMP. - (Adrien Bustany for GHOP 98) - - 0000539: [xmp] Cannot add XMP properties in a custom namespace. - (Vladimir Nadvornik, S M Ryan) - - 0000532: [xmp] Added conversions to and from XMP. (Vladimir Nadvornik) - - 0000474: [design] Add a metadatum member to access translated tag values - without the need to use streams. - - [metadata] Added read support for jp2 and psd images, stubs for - gif, bmp and tga images, and pixelWidth and pixelHeight methods on - class Image. (Marco Piovanelli - Ovolab) - - [exif] Updated Nikon lens info to v3.18 of Robert Rottmerhusen's - lens database. - - [exif] Updated Pentax makernote tags. (Michal Cihar) - - [xmp] Added support for XMP sidecar files. - - [xmp] Improved XMP value toLong, toFloat and toRational using new - functions parseLong, parseFloat and parseRational. - (Vladimir Nadvornik) - - [xmp] Allow format options for XmpParser::encode. - (Vladimir Nadvornik) - - [xmp] Added LangAltValue::toString(const std::string&) to get - the value for a specific language qualifier. - (suggested by Marco Piovanelli) - - [xmp] Fixed XmpKey::tagLabel() for custom keys. - (Reported by Vladimir Nadvornik) - - [miscellaneous] Define pid_t using a typedef instead of #define in - Windows environments. (Robin Mills) - - [translation] Updated German translation. - (Oliver Dörr) - - [translation] Updated French translation. - (Fabien Salvi) - - [translation] Updated Polish translation. - (Piotr Eljasiak) - - [translation] Updated Russian translation. - (Alexandre Prokoudine) - - [translation] Added Slovak translation. - (helix84) - - -Changes from version 0.16-pre1 to 0.16 --------------------------------------- - -* Exiv2 utility - - 0000484: [tools] exiv2 -T adjusts file timestamp wrongly. - (Reported by Dave Locke) - - 0000477: [tools] Adjust year, month and day of the timestamp. - (Based on a patch by David Grundberg) - - [tools] Modified fixiso action to handle Canon tags as well. - (Highlighted by Michael Mather) - -* Exiv2 library - - 0000537: [miscellaneous] Broken PNG image causes exiv2 to crash. - (digiKam bug 155105, reported by Michal Kosmulski) - - 0000534: [exif] Integer overflow when reading thumbnail. - (Reported by Meder Kydyraliev, Google Security Team) - - 0000533: [iptc] Read IPTC data from multiple APP13 Photoshop 3.0 segments. - - 0000531: [exif] Pentax lens info decoding. (Patch by Michal Cihar) - - [exif] Updated Nikon lens info to v2.99 of Robert Rottmerhusen's - lens database. - - [doc] Added reference tables for XMP properties to documentation. - - [miscellaneous] Updated German translation. - (Oliver Dörr) - - [miscellaneous] Updated Polish translation. - (Piotr Eljasiak) - -* MSVC related - - 0000535: [build environment] unlink() declaration conflicts with Visual - Studio stdio.h. (Reported with patch by Nikolai Saoukh) - - 0000514: [miscellaneous] Linking with libexiv2 masks system localtime, - and on MinGW, that of libexiv2 doesn't handle DST correctly. - - [build environment] Fixed compilation of the samples. - - [build environment] Added support for XMP to MSVC project files. - - -Changes from version 0.15 to 0.16-pre1 --------------------------------------- - -* Exiv2 utility - - 0000463: [design] Add support for XMP metadata. - -* Exiv2 library - - 0000529: [exif] Add support for Pentax maker note. (Michal Cihar) - - 0000522: [exif] Lightzone-created JPEG causes exiv2 to segfault. - (Reported by Markus Spring) - - 0000463: [design] Add support for XMP metadata. - - [exif] Support for Olympus ORF format. (Jeff Costlow) - - [exif] Updated Nikon lens info to v2.40 of Robert Rottmerhusen's - lens database. - - [exif] Added Minolta lenses. (Hiroshi Kawashima) - - [exif] Ported various Exif tags from Exiftool. - (Gilles Caulier) - - [miscellaneous] Added i18n for XMP properties, XMP support - in PNG images. (Gilles Caulier) - - [build environment] Isolated sample programs in their own - directory. - - [miscellaneous] Updated French translation. - (Olivier Tilloy) - - [miscellaneous] Updated German translation. - (Oliver Dörr) - - [miscellaneous] Updated Polish translation. - (Piotr Eljasiak) - - [miscellaneous] Updated Russian translation. - (Alexandre Prokoudine) - - -Changes from version 0.14 to 0.15 ---------------------------------- - -* Exiv2 utility - - 0000518: Return code 0 when unable to insert exif tags. - (Reported by Daniel J Blueman) - - Rename action: Use Exif.Image.DateTime if - Exif.Photo.DateTimeOriginal is not present. (Highlighted by - mflanagan_swim) - -* Exiv2 library - - 0000521: [exif] Image with large invalid Exif tag crashes exiv2. - (Reported by Marco Piovanelli) - - 0000520: [exif] crash when loading certain image. - (Reported by Christian Weiske) - - 0000519: [exif] Another Minolta G500 file impossible to read after fix. - (Reported by Alexander Rabtchevich) - - 0000513: [exif] Sony Makernote crashes exiv2. - (Reported by Aaron D. Campbell) - - 0000512: [exif] Wrong AFPoints mapping for Canon cameras. - (Reported with patch by Rob Walker) - - 0000511: [exif] Minolta G500 RAW format support. - (Reported by Udi Fuchs) - - 0000509: [miscellaneous] Since v0.14 the version check macro doesn't work - in a precompiler #if test anymore. (Reported by Udi Fuchs) - - 0000449: [jpeg i/o] Uncouple IPTC and Exif reading. - - [exif] Updated Nikon lens info to v2.30 of Robert Rottmerhusen's - lens database. - - [Exif] Added additional values to the Exif.CanonCs.ISOSpeed. - lookup table. (Patrick Markert) - - [Exif] Canon ModelId patch. (Gerry Patterson) - - [miscellaneous] Updated German translation. - (Oliver Dörr) - - [miscellaneous] Updated Russian translation. - (Alexandre Prokoudine) - - [miscellaneous] Updated French translation. - (Stephane Pontier) - - -Changes from version 0.13 to 0.14 ---------------------------------- - -* Exiv2 utility - - [tools] exiv2 utility: Fixed handling of multiple rename options - -r, -t, -T - -* Exiv2 library - - 0000508: [exif] Fixed mapping of CRW rotation info to Exif orientation. - (Reported and analysed by Marco Piovanelli) - - 0000507: [exif] Fixed RAF read-support for systems without mmap. (Reported - by Udi Fuchs) - - [exif] Added tag names for a few tags used by Windows Vista and - ACDSee. (Gilles Caulier) - - [exif] Updated Nikon lens info to v2.20 of Robert Rottmerhusen's - lens database. - - [build environment] Switched to libtool's -version-info versioning - system. - - [build environment] By default, do not use the -g compiler option. - - [build environment] Added --disable-printucs2 configuration option - to disable Windows tag character convertion using libiconv. - - [build environment] Changes to make Exiv2 cross-compile smoothly - for win32 (Udi Fuchs) - - [build environment] Removed deprecated exiv2-config script and - some obsolescent autoconf macros pointed out by Udi Fuchs. - - [miscellaneous] Changed AnyError to inherit from std::exception; - changed the signature of AnyError::what(). (Suggested by Marco - Piovanelli) - - [miscellaneous] Fixed version check macro to actually check the - runtime version and not the compile-time version. Added version() - and versionNumber() functions. - - [miscellaneous] Updated German translation. (Oliver Dörr) - - [miscellaneous] Changed name of installed translation files to - lower case exiv2.mo. (Highlighted by Angelo Naselli) - - -Changes from version 0.12 to 0.13 ---------------------------------- - -* Exiv2 utility - - 0000504: [tools] exiv2 utility: allow use of -M and -m options with extract - and insert actions. - -* Exiv2 library - - 0000503: [metadata] Tiff generated by photoshop crashes exiv2 - (digikam bug 139658). - - 0000502: [iptc] New TIFF parser: Decode IPTC from Exif.Image.IPTCNAA. - (Reported by Walter Hangartner) - - 0000501: [iptc] IPTC field parsing is still too strict: shouldn't fail if - the type is not as expected. (Reported by Elsa Nordh) - - 0000497: [tools] exiv2 tool doesn't respect unix file rights. (Reported and - analysed by fabien) - - 0000491: [miscellaneous] Probe exiv2 for the extensions it supports. - (Suggested by Will Stokes) - - 0000461: [miscellaneous] Add i18n support. Requires gettext. - (Gilles Caulier) - The currently available translations are still work in progress: - Finnish by Mikael Lammentausta - French by Gilles Caulier (ported from libexif) and Olivier Tilloy - German by Gilles Caulier (ported from libexif) and Oliver Dörr - Russian by Alexandre Prokoudine - Polish, Spanish by Gilles Caulier, ported from libexif - - 0000460: [exif] Exiv2 should support to decode/encode Windows tags - Exif.Image.0x9c9b-0x9c9f. Requires libiconv. - (Suggested by Jose Oliver) - - 0000452: [exif] Non-intrusive writing does not update IFD. - - [exif] Updated Nikon lens info to v2.15 of Robert Rottmerhusen's - lens database. - - [exif] Added read-support for Fujifilm RAF images. - - [exif] Image class hierarchy refactored: Image now has containers - and provides default implementations for most methods. Calling - an unsupported method of any Image subclass now results in an - exception. Added a method to access the MIME type of an image. - -* MSVC related - - [exivsimple] Added get and set thumbnail functions. - (Christian Kuster) - - -Changes from version 0.11 to 0.12 ---------------------------------- - -* Exiv2 utility - - 0000493: [tools] exiv2 -T DST problem. - (Fix suggested by John ) - - 0000459: [exif] Exiv2 tool: Added a variable for the original filename to - the rename option. (Patch by Tobias Jahn) - -* Exiv2 library - - 0000498: [exif] Exiv2 cannot read the Exif data written after deleting all - tags. - - 0000496: [metadata] Digikam bug 136855: Editing metadata on a few selected - imagefiles and clicking forward or apply crashes digikam. - (Reported by several digikam users) - - 0000495: [exif] Image with corrupted metadata crashes Exiv2. (Reported as - digikam bug 136932 by Rainer Krienke) - - 0000490: [build environment] PNG support doesn't compile on MinGW/msys. - (Reported by Udi Fuchs and Will Stokes) - - 0000489: [build environment] exiv2.pc.in includes private/static libs by - default. (Reported with patch by Rex Dieter) - - 0000488: [metadata] GPSInfo Metadata should return decimal numbers. - (Feature requested by Fabien) - - 0000486: [build environment] Test bugfixes-test.sh error under Mac OS X x86. - (Reported with fix by Max Lapshin) - - [exif] Updated Nikon lens info to v2.07 of Robert Rottmerhusen's - lens database. - - [metadata] Added methods to access built-in read-only Exif taglists - and IPTC record lists. (Initiated by Max Lapshin) - - [iptc] Improved IPTC record descriptions using IIM4 specification - version 4.1. (Gilles Caulier) - - [exif] Improved Exif tag descriptions using Exif specification 2.2 - and libexif. (Gilles Caulier) - - [exif] Added and improved pretty print functions for some Exif - tags. (Gilles Caulier) - - [exif] Updated Minolta makernote. (Gilles Caulier, Paul Tribick) - -* MSVC related - - 0000487: Crash in exiv2.exe (built with VC++ 2005 Express) when examing TIFF - images (Reported with patch by Dimitri Schoolwerth) - - -Changes from version 0.10 to 0.11 ---------------------------------- - -* Exiv2 utility - - 0000485: [tools] Weird behaviour when Exif comments contain quotes (Reported - by Scott Baker) - - Changed exiv2 del command to delete all occurences of a tag. - (Christophe Paris) - -* Exiv2 library - - 0000483: [jpeg i/o] Assertion `sizeIptc' fails when reading metadata from - JPEG file. This happened when an image has an empty IPTC IRB. - (digikam bug 132582) - - 0000482: [exif] SONY DSLR-A100 RAW image crashes Exiv2. (Reported to ufraw - by Vishnu Natchu) - - 0000480: [iptc] JPEG APP13 (used to store IPTC IRB) can not be larger than - 64kB but IRB buffers can. (digikam bug 130525) - - 0000479: [exif] JPEGs edited with LightZone crash Exiv2. (Reported by Daniel - Hobe) - - 0000475: [design] Performance: Don't read TIFF-based files completely, use - memory mapping (only on Linux) to read only what is needed. Improves - performance by factor 6. - - 0000471: [exif] New TIFF parser: Create a CommentValue rather than a - DataValue for Exif.Photo.UserComment. (Reported with test program - by Marcel Wiesweg) - - [exif] New TIFF parser: Extract TIFF thumbnail from IFD1 if there - is one. - - [exif] Added read support for PNG images (Gilles Caulier) - - [exif] Updated Canon makernote tags and decoded additional composite - tags, based on Exiftool. Note that some tag names changed. - (David Cannings) - - [exif] Updated Nikon lens info to v2.02 of Robert Rottmerhusen's - lens database. - - [exif] Various smaller tag updates (Gilles Caulier, Jim Westveer, - Nicolas Vilars, Robert Peter) - -* MSVC related - - 0000455: [build environment] Exiv2 finally works with MSVC 2005. (Thanks to - Stephen and Maciej Sakrejda aka Maciek) - - -Changes from version 0.9.1 to 0.10 ----------------------------------- - -* Exiv2 utility - - 0000468: [tools] Added -P option to control what information is displayed - in print mode, added -b and -u options to control output of large - values and unknown tags. (Better print control suggested by Udi Fuchs) - - Display filename in print mode if processing multiple images, - like grep does. (Roger Larsson) - -* Exiv2 library - - 0000469: [miscellaneous] MemIo behaviour differs from FILE* and FileIo. - (Reported by Dimitri) - - 0000462: Support TIFF format, part 1: Read support for TIFF and TIFF-based - RAW formats, including NEF, CR2, PEF, SR2, DNG and MRW. - - 0000458: [build environment] Support pkg-config tool, - removed /include/exiv2 path from exiv2-config output. - (Suggested by Udi Fuchs) - - 0000456: [miscellaneous] Check for 0 pointer before invoking std::string - constructor on C-string. - - Added Minolta makernote. (Gilles Caulier) - - Added support for Exif.Image.Orientation for Canon CRW images. - - Improved the print functions for Exif.Nikon[13].AFFocusPos. - (Roger Larsson) - - Updated some Canon labels and translations (Patrice Boissonneault) - - Changed some Nikon tag names. (Based on feedback from Udi Fuchs) - - Added EXIV2_CHECK_VERSION macro for applications to check at runtime - which version of Exiv2 is installed. - -* MSVC related - Added COM project. (Patrice Boissonneault) - - -Changes from version 0.9 to 0.9.1 ---------------------------------- - -* Exiv2 library - - 0000451: [exif] Fixed bug where an invalid Exif tag was created for - the user comment, when the tag was newly added to an image. - (Thanks to Anatoliy Kovalenko for reporting this bug) - - Added enum MetadataId and Image::supportsMetadata() to check what - metadata an image class supports. Changed CrwImage to silently - ignore calls to Iptc related functions instead of throwing an Error. - (Thanks to Will Stokes for suggesting the check feature) - - Cleaned up some #include statements (mentioned here because this - may lead to unexpected compiler errors). - - -Changes from version 0.8 to 0.9 -------------------------------- - -* Exiv2 utility - - 0000450: [exif] Added action "fixiso" to copy the ISO setting from Nikon - Makernotes to the regular Exif tag Exif.Photo.ISOSpeedRatings. - - 0000448: [tools] Added options -p and -t, -T to preserve file timestamps and - set the timestamp according to the Exif timestamp. - (Thanks to Stephan Ahlswede for suggesting the -p feature) - - 0000446: [misc] Added option -c to set the JPEG comment to the utility. - (Thanks to Tristan Savatier for the suggestion) - -* Exiv2 library - - 0000447: [iptc] Fixed a buffer overflow in sscanf. (Thanks to Maciej Sakrejda - aka Maciek for reporting this bug and the hard work to recreate it) - - 0000438: [exif] Write support for Canon raw images. - - [exif] Updated Nikon lensdata to v2.00 of Robert Rottmerhusen's - amazing lens database. (Thanks to Robert for keeping me updated.) - - [build environment] Added an option to enable/disable dependency- - tracking to the configure script, which is useful to create - "Universal Binaries" under Mac OSX. - (Thanks to Will Stokes for the suggestion) - - [exivsimple] Changed DllTypeId::time and DllTypeId::date to - DllTypeId::isoTime and DllTypeId::isoDate to avoid a name clash. - - -Changes from version 0.7 to 0.8 -------------------------------- - -* Exiv2 utility - - [tools] Added -S .suf option to the utility. This allows, e.g, - to use Canon THM files as source file for the insert command. - - [doc] Added man page. (Based on Peter KELEMEN's Debian man page.) - -* Exiv2 library - - 0000445: [exif] Setting the comment on an image with an existing comment has - no effect. - - 0000444: [iptc] Exiv2 should not panic on slightly misformed IPTC format. - - 0000443: [exif] Exiv2 gives up on corrupted IOP directory. - - 0000440: [iptc] IPTC time without timezone raises exception. - - 0000438: [exif] Support Canon raw images (CRW and THM), currently read-only. - - 0000437: [exif] exiv2 -pt crashes if Exif.Canon.ImageNumber is < 1000. - - 0000433: [exif] Core dump if the value is empty. - - 0000424: [exif] Ifd::read, MakerNote::read and related methods should have - access to the complete data buffer. - - [exif] Updated Nikon lensdata to v1.19 of Robert Rottmerhusen's - list. - - Added a tag and dataset title (label). - - Added #ifndef SUPPRESS_WARNINGS blocks around all output from the - library: compile with -DSUPPRESS_WARNINGS for a quiet library. - - Implemented "copy-on-write" strategy for MemIo to ensure that the - original buffer is only copied if necessary and never modified. - - Added exiv2-config script. Applications that include exiv2 headers - and link with the installed library can use this in their build - commands. - - -Changes from version 0.6.2 to 0.7 ---------------------------------- - -* Exiv2 utility - - 0000422: [tools] Allow renaming pictures taken within one second. - (Reported by jussi AT jjussi DOT com) - - 0000423: [tools] Fixed problems with paths and -l option on Windows. - - [tools] Improved output data and format of the utility to - show the key. - -* Exiv2 library - - 0000404: [design] Insideout design change; made class Exiv2::Image - the top-level class of the library. (Brad Schick) - - 0000403: [design] Added I/O abstraction and implementations. (Brad Schick) - - 0000402: [design] Split image.cpp and hpp files into base class and - subclass files. (Brad Schick) - - 0000425: [exif] Added default type info to Exif tagtables. - - 0000427: [misc] Standardized factories according to the implementation. - of ImageFactory (MakerNoteFactory). Linking with mn.o is not - necessary anymore. - - 0000420: [build environment] Defines should have a library specific - prefix, like e.g., EXV_HAVE_CONFIG_H. - - 0000417: [exif] ExifData needs proper copy constructor and assignment. - - 0000426: [iptc] Fixed problem which prevented Exiv2 from reading IPTC - from jpeg files. (Jeffrey J. Early and others) - - [feature] Added Olympus, Panasonic and a basic Sony Makernote. - (Thanks to Will Stokes for the initial Olympus files) - - [feature] Improved Canon and Nikon Makernote support. - (Thanks to Robert Rottmerhusen for his Nikon lens info) - - [exif] Relaxed checking of Makernote IFD next pointer. - - [design] Overhauled exception handling. - - -Changes from version 0.6.1 to 0.6.2 ------------------------------------ - -* Exiv2 utility - - [feature] New -M option to run modification commands directly - from the command line. - - 0000421: [tools] Command parser fails if no type is specified with a - modify command. - - 0000416: [exif] Fix Exiv2 modify action to use non-intrusive writing - whenever possible. - - 0000418: [feature] Add Exiv2 option to specify path of extracted. - and inserted files. (Suggested by Brian Pugh) - -* Exiv2 library - - 0000408: [build environment] 0.6.1 does not build on OS X: Add libtool - support for automatic library creation (see README). - (Reported by Thomas Lunde and others) - - 0000409: [build environment] compiling emits type warnings. (Thomas Lunde - and others) - - 0000410: [build environment] config.h must be installed, -DHAVE_CONFIG_H - flag should not be necessary. (Daniel Foote and others) - - 0000411: [exif] Support non-standard Ifd layout. (Jeffrey J. Early) - - -Changes from version 0.6 to 0.6.1 ---------------------------------- - -* Exiv2 utility - - * Added option to modify Iptc and Exif metadata based on a command file - -* Exiv2 library - - * Fixed bug #407: Writing metadata to image after modifications may - lose thumbnail. Thanks to Jeffrey J. Early for pointing out this bug. - - * Added CommentValue - - -Changes from version 0.5 to 0.6 -------------------------------- - -* Exiv2 utility - - * Added options to extract, insert and delete different types of metadata - - * Added option to print the Jpeg comment - - * Changed semantics of print option `i' to Iptc - (`t' for translated Exif data) - - * Replaced std::cout << "\n" with std::endl to flush and get the - sequence with error output right - -* Exiv2 library - - * Added support to build Makernotes from scratch - - * Added support to build IFD1 (Thumbnail) entries from scratch - - * Open image files on demand rather than keeping them open. Bug #393 (Brad) - - * Added data area concept to Value, ValueType, Entry, Ifd. Feature #395 - - * Revamped Thumbnail classes to use the new data area feature. Feature #398 - - * Added ExifData::setJpegThumbnail - - * Improved implementation of Exif and Iptc keys, added support for - keys with unknown tag names - - * Added ExifData::op[] and Exifdatum op= and similar operators to - IptcData and Iptcdatum. This operator stuff allows for things like: - exifData["Exif.Thumbnail.Compression"] = uint16_t(6); - - * Converted class hierarchies to use std::auto_ptr where appropriate - - * Replaced custom integer types with C99 types - - * Added test data and drivers to the repository - - * Right align output stream for date and time writes. Bug #397 (Brad) - - * Updated documentation - -* MSVC related (Thanks to Brad Schick) - - * Added exivsimple: a Windows dll that allows languages such as - C# and VB to access limited metadata capabilities (Brad) - - * Added and write2-test projects to MSVC build (Brad) - - * Added mn.cpp to all MSVC projects. Fixes bug #396 (Brad) - - * Fixed various MSVC 7.1 build errors. Bug #394 (Brad) - - * Added write-test to MSVC build project (Brad) - - -Changes from version 0.4 to 0.5 -------------------------------- - -* Exiv2 utility - - * Added -pI print mode to print Iptc data. - - * Bugfix: Use timegm() and gmtime() instead of mktime() and - localtime() to avoid problems when adjusting timestamps. - Thanks to Samir Rostum for pointing out this bug. - - * Added timegm() from the tz distribution for platforms which - do not have this function. - -* Exiv2 library - - * Added full Iptc read and write support. Thanks to Brad Schick for - this and a lot more contributions to this release. - - * Converted Metadatum to an abstract base class, added Exifdatum - and Iptcdatum classes. Migration of existing programs: Use class - Exifdatum instead of Metadatum. (Brad Schick) - - * Added Key, ExifKey and IptcKey class hierarchy. Requires changes - to existing pograms: Use class ExifKey where plain std::string - keys were used before (e.g., ExifData::findKey()). - - * Changed Exif keys to 'Exif.ifdItem.tagName' to be consistent - with the new Iptc keys. All keys of existing programs need to be - updated. See the web pages or documentation for the new keys. - - * Revamped class Image and introduced byte* interface. (Brad Schick) - - * Added autoconf configure script. - - * Added MSVC project files. (Brad Schick) - - * Appended 'Id' to Ifd ids to work around a g++-3.4 problem. - - * Updated documentation. - - -Changes from version 0.3 to 0.4 -------------------------------- - -* Exiv2 utility - - * Less rigid command line argument parsing: Guess the action from the - option given and use print as the default action. - - * Print Nikon makernote values for ISO Speed, Quality and WhiteBalance - in the summary. - -* Exiv2 library - - * Fixed ExifData::copyFromMetadata to automatically add missing - offset tags. Thanks to Joseph Heled for identifying this bug. - - * Started to fix MSVC errors and warnings. Thanks to Steven R. King for - his work to get Exiv2 to compile on MSVC. The task is not yet - completed but the library should compile without too many warnings. - - * Added three different Nikon makernote formats. - - * IfdMakerNote: Replaced too simple prefix with a more general concept - of a makernote header. - - * Added the makernote buffer to the arguments passed to the makernote - create function. This allows the makernote create function to - determine the exact makernote needed based on its content. The new - concept is used to automatically determine which of the three Nikon - makernotes to create. - - * Fixed MakerNoteFactory::match() to prefer an exact match over a - wildcard match with the same number of matching characters (Key - "Nikon" now prefers registry entry "Nikon" over "Nikon*"), simplified - the return value of match() to an integer score value. - - * Sigma makernote: Added "FOVEON" and "*" to registry. - - * Added len argument and boundary checks to various read functions, - in particular, the IFD read method. - - * Improved handling of corrupt IFDs: Truncate field if offset points - outside of the available buffer. - - * Slightly improved error handling: strError() is now a static member - of ExifData. - - * Added exifcomment example program. - - * Fixed an embarassing bug in ExifData::updateEntries, which caused - write after erasing metadata to write back the original metadata. - - * Fixed TypeInfoTable to return invalid if typeId is too large. - - * Makefile: (un)install targets now only (un)install exiv2. - - * Code cleanup, documentation updates and miscellaneous bug fixes. diff --git a/platform/win32/msvc/external/exiv2/doc/README-XMP b/platform/win32/msvc/external/exiv2/doc/README-XMP deleted file mode 100644 index 1cfc048a328..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/README-XMP +++ /dev/null @@ -1,70 +0,0 @@ -Exiv2 XMP support -***************** - -On UNIX-like systems, XMP support is controlled with the --enable-xmp -and --disable-xmp options to the configure script. -Building Exiv2 with XMP support requires the Expat XML parser library -(http://expat.sourceforge.net/). The --with-expat configure option -can be used if it is installed in a non-standard directory. -The MSVC project files for Windows are setup to always build Exiv2 -with XMP support. - -See the main README file for general build information. - -For API documentation of XMP classes and samples, consult the online -documentation at http://www.exiv2.org/doc or build the documentation -and go to doc/html/getting-started.html - -For details on the XMP support of the exiv2 command line tool, see -the exiv2(1) manual page and the sample command file doc/cmdxmp.txt - - -XMP Toolkit -=========== - -Exiv2 uses the XMPCore component of the Adobe XMP Toolkit (XMP SDK) to -parse and serialize XMP packets. Currently, it is integrated and -distributed with Exiv2. The xmpsdk/ directory of the Exiv2 distribution -contains the XMP SDK source code. The final solution should eventually -use an external XMP Toolkit. - -Building the XMP Toolkit is transparent. Following the installation -steps described in the main README will ensure that the XMP Toolkit is -compiled if necessary. It is only needed if XMP support is enabled. -Building the XMP Toolkit results in a "convenience library" in -xmpsdk/src/. This library is only used to link the Exiv2 library with; -it is not installed. - -If you experience problems building this library, please email to the -Exiv2 forum for help, http://dev.exiv2.org/projects/exiv2/boards -and not to Adobe directly. - - -Source -====== - -XMP-Toolkit-SDK-4.4.2.zip obtained via -http://www.adobe.com/devnet/xmp/sdk/eula.html - -The following files were copied from the original XMP SDK -distribution, essentially: - -public/include/* -> xmpsdk/include -source/common/* -> xmpsdk/src -source/XMPCore/* -> xmpsdk/src -build/XMP_BuildInfo.h -> xmpsdk/src - -The MD5 functions included with XMP SDK were replaced with an -equivalent implementation which is in the public domain. For more -details refer to Exiv2 issue #600 and the SVN repository: - - http://dev.exiv2.org/issues/show/600 - http://dev.exiv2.org/repositories/browse/exiv2/trunk/xmpsdk - - -License -======= - -Copyright (c) 1999 - 2008, Adobe Systems Incorporated - -See the file doc/COPYING-XMPSDK for the XMP Toolkit license agreement. diff --git a/platform/win32/msvc/external/exiv2/doc/cmd.txt b/platform/win32/msvc/external/exiv2/doc/cmd.txt deleted file mode 100644 index 2daf491394a..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/cmd.txt +++ /dev/null @@ -1,50 +0,0 @@ -# Sample Exiv2 command file -# ------------------------- -# -# $ exiv2 -m cmd.txt file ... -# -# to apply the commands in cmd.txt to each file. Alternatively, commands can be -# run from the command line directly, without a command file: -# -# $ exiv2 -M"add Iptc.Application2.Credit String mee too!" file ... -# -# Note the quotes. Multiple -m and -M options are allowed and can be combined. -# -# Command file format -# ------------------- -# Empty lines and lines starting with # are ignored -# Each remaining line is a command. The format for command lines is -# [[] ] -# cmd = set|add|del -# set will set the value of an existing tag of the given key or add a tag -# add will add a tag (unless the key is a non-repeatable Iptc key) -# del will delete a tag -# key = Exiv2 Exif or Iptc key -# type = -# Byte|Ascii|Short|Long|Rational|Undefined|SShort|SLong|SRational|Comment -# for Exif keys, and -# String|Date|Time|Short|Undefined for Iptc keys -# The format for Iptc Date values is YYYY-MM-DD (year, month, day) and -# for Iptc Time values it is HH:MM:SS±HH:MM where HH:MM:SS refers to local -# hour, minute and seconds and ±HH:MM refers to hours and minutes ahead or -# behind Universal Coordinated Time. -# A default type is used if none is explicitly given. The default type is -# determined based on the key. -# value -# The remaining text on the line is the value. It can optionally be enclosed -# in double quotes ("value") -# - -add Iptc.Application2.Credit String "mee too! (1)" -add Iptc.Application2.Credit mee too! (2) -del Iptc.Application2.Headline - -set Iptc.Application2.Headline Filename - -add Exif.Image.WhitePoint Short 32 12 4 5 6 - -set Exif.Image.DateTime Ascii "Zwanzig nach fuenf" - set Exif.Image.Artist Ascii nobody - set Exif.Image.Artist "Vincent van Gogh" - -set Exif.Photo.UserComment Comment charset=Ascii This is an ASCII Exif comment diff --git a/platform/win32/msvc/external/exiv2/doc/cmdxmp.txt b/platform/win32/msvc/external/exiv2/doc/cmdxmp.txt deleted file mode 100644 index 313f8ac542a..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/cmdxmp.txt +++ /dev/null @@ -1,85 +0,0 @@ -# Sample Exiv2 command file for XMP tags -# -------------------------------------- - -# Set basic properties. Exiv2 uses the value type of the XMP specification -# for the property, if it is not specified. The default XMP value type -# for unknown properties is a simple text value. - -# A simple text property. -set Xmp.dc.source xmpsample.cpp - -# An array item (unordered array). -set Xmp.dc.subject "Palmtree" - -# Add a 2nd array item -set Xmp.dc.subject "Rubbertree" - -# A language alternative (without a default) -set Xmp.dc.title lang=en-US Sunset on the beach -set Xmp.dc.title lang=de-DE Sonnenuntergang am Strand - -# Any properties can be set provided the namespace is known. -set Xmp.dc.one -1 -set Xmp.dc.two 3.1415 -set Xmp.dc.three 5/7 -set Xmp.dc.four 255 -set Xmp.dc.five 256 -set Xmp.dc.six false -set Xmp.dc.seven Seven - -# The value type can be specified. Exiv2 has support for a limited number -# of specific XMP types with built-in types: The basic XmpText, array -# types XmpAlt (alternative array), XmpBag (unordered array), XmpSeq -# (ordered array) and language alternatives LangAlt. - -# Simple text property with explicitly specified value type -set Xmp.dc.format XmpText "image/jpeg" - -# An ordered array -set Xmp.dc.creator XmpSeq "1) The first creator" -set Xmp.dc.creator "2) The second creator" -set Xmp.dc.creator "3) And another one" - -# A language alternative. The default entry of a langauge alternative -# doesn't need a language qualifier. -set Xmp.dc.description LangAlt lang=de-DE Hallo, Welt -set Xmp.dc.description LangAlt Hello, World - -# According to the XMP specification, Xmp.tiff.ImageDescription is an -# alias for Xmp.dc.description. Exiv2 treats an alias just like any -# other property. -set Xmp.tiff.ImageDescription TIFF image description -set Xmp.tiff.ImageDescription lang=de-DE TIFF Bildbeschreibung - -# Register a namespace which Exiv2 doesn't know yet with a prefix. -reg ns myNamespace/ - -# Add a property in the new custom namespace. -set Xmp.ns.myProperty myValue - -# There are no built-in Exiv2 value types for structures, qualifiers and -# nested types. However, these can be added by using an XmpText value and a -# path as the key. - -# Add a structure -set Xmp.xmpDM.videoFrameSize/stDim:w 16 -set Xmp.xmpDM.videoFrameSize/stDim:h 9 -set Xmp.xmpDM.videoFrameSize/stDim:unit inch - -# Add an element with a qualifier (using the namespace registered earlier) -set Xmp.dc.publisher James Bond -set Xmp.dc.publisher[1]/?ns:role secret agent - -# Add a qualifer to an array element of Xmp.dc.creator (added above) -set Xmp.dc.creator[2]/?ns:role programmer - -# Add an array of structures. First set a text property with just the -# array type. (Note: this is not the same as creating an XmpBag property.) -set Xmp.xmpBJ.JobRef XmpText type=Bag - -# Then set the array items. Each of them is a structure with two elements. -set Xmp.xmpBJ.JobRef[1]/stJob:name XmpText Birthday party -set Xmp.xmpBJ.JobRef[1]/stJob:role XmpText Photographer - -set Xmp.xmpBJ.JobRef[2]/stJob:name Wedding ceremony -set Xmp.xmpBJ.JobRef[2]/stJob:role Best man diff --git a/platform/win32/msvc/external/exiv2/doc/include/ascending.png b/platform/win32/msvc/external/exiv2/doc/include/ascending.png deleted file mode 100644 index c82b76ffe2c..00000000000 Binary files a/platform/win32/msvc/external/exiv2/doc/include/ascending.png and /dev/null differ diff --git a/platform/win32/msvc/external/exiv2/doc/include/blank.png b/platform/win32/msvc/external/exiv2/doc/include/blank.png deleted file mode 100644 index cee9cd37a10..00000000000 Binary files a/platform/win32/msvc/external/exiv2/doc/include/blank.png and /dev/null differ diff --git a/platform/win32/msvc/external/exiv2/doc/include/descending.png b/platform/win32/msvc/external/exiv2/doc/include/descending.png deleted file mode 100644 index 4accf927bed..00000000000 Binary files a/platform/win32/msvc/external/exiv2/doc/include/descending.png and /dev/null differ diff --git a/platform/win32/msvc/external/exiv2/doc/include/exiv2-components.png b/platform/win32/msvc/external/exiv2/doc/include/exiv2-components.png deleted file mode 100644 index 5cb7ae7064c..00000000000 Binary files a/platform/win32/msvc/external/exiv2/doc/include/exiv2-components.png and /dev/null differ diff --git a/platform/win32/msvc/external/exiv2/doc/include/sortabletable.css b/platform/win32/msvc/external/exiv2/doc/include/sortabletable.css deleted file mode 100644 index bd634ba9e78..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/include/sortabletable.css +++ /dev/null @@ -1,90 +0,0 @@ -/* -------------------------------------------------------------------------- */ -.BoxTable { - width: 90%; -} - -.BoxTable>td { - width: 100%; -} - -/* -------------------------------------------------------------------------- */ -.ParamTable { - text-align: right; -} - -.ParamTable td.Desc { - font-weight: bold; - text-align: right; -} - -/* -------------------------------------------------------------------------- */ -.ReportTable { - font: Icon; - width: 100%; - border: 1px Solid ThreeDShadow; - background: Window; - color: WindowText; - border-spacing: 0px; -} - -.ReportTable thead { - background: ButtonFace; - font-weight: bold; -} - -.ReportTable th { - border: 1px solid; - border-color: ButtonHighlight ButtonShadow - ButtonShadow ButtonHighlight; - cursor: default; - text-align: center; - padding: 1px 1px 1px 1px; -} - -.ReportTable th:active { - border-color: ButtonShadow ButtonHighlight - ButtonHighlight ButtonShadow; - padding: 1px 1px 1px 1px; -} - -.ReportTable tbody tr.OddRow { - background: #FFFFFF -} - -.ReportTable tbody tr.EvenRow { - background: #CCDBEA -} - -.ReportTable tfoot { - background: #FFFFFF; - font-weight: bold; -} - -.ReportTable tfoot tr { - border: 1px Solid ThreeDShadow; -} - -.ReportTable>td { - padding: 2px 5px; -} - -.ReportTable td.Total { - text-align: right; -} - -/* -------------------------------------------------------------------------- */ -.SortArrow { - width: 11px; - height: 11px; - background-position: center center; - background-repeat: no-repeat; - margin: 0 2px; -} - -.SortArrow.descending { - background-image: url("descending.png"); /* relative to this css file */ -} - -.SortArrow.ascending { - background-image: url("ascending.png"); /* relative to this css file */ -} diff --git a/platform/win32/msvc/external/exiv2/doc/include/sortabletable.js b/platform/win32/msvc/external/exiv2/doc/include/sortabletable.js deleted file mode 100644 index 4b877aa8c5d..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/include/sortabletable.js +++ /dev/null @@ -1,356 +0,0 @@ -/*----------------------------------------------------------------------------\ -| Sortable Table 1.03 | -|-----------------------------------------------------------------------------| -| Created by Erik Arvidsson | -| (http://webfx.eae.net/contact.html#erik) | -| For WebFX (http://webfx.eae.net/) | -|-----------------------------------------------------------------------------| -| A DOM 1 based script that allows an ordinary HTML table to be sortable. | -|-----------------------------------------------------------------------------| -| Copyright (c) 1998 - 2002 Erik Arvidsson | -|-----------------------------------------------------------------------------| -| This software is provided "as is", without warranty of any kind, express or | -| implied, including but not limited to the warranties of merchantability, | -| fitness for a particular purpose and noninfringement. In no event shall the | -| authors or copyright holders be liable for any claim, damages or other | -| liability, whether in an action of contract, tort or otherwise, arising | -| from, out of or in connection with the software or the use or other | -| dealings in the software. | -| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | -| This software is available under the three different licenses mentioned | -| below. To use this software you must chose, and qualify, for one of those. | -| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | -| The WebFX Non-Commercial License http://webfx.eae.net/license.html | -| Permits anyone the right to use the software in a non-commercial context | -| free of charge. | -| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | -| The WebFX Commercial license http://webfx.eae.net/commercial.html | -| Permits the license holder the right to use the software in a commercial | -| context. Such license must be specifically obtained, however it's valid for | -| any number of implementations of the licensed software. | -| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | -| GPL - The GNU General Public License http://www.gnu.org/licenses/gpl.txt | -| Permits anyone the right to use and modify the software without limitations | -| as long as proper credits are given and the original and modified source | -| code are included. Requires that the final product, software derivate from | -| the original source or any software utilizing a GPL component, such as | -| this, is also licensed under the GPL license. | -|-----------------------------------------------------------------------------| -| 2003-01-10 | First version | -| 2003-01-19 | Minor changes to the date parsing | -| 2003-01-28 | JScript 5.0 fixes (no support for 'in' operator) | -| 2003-02-01 | Sloppy typo like error fixed in getInnerText | -|-----------------------------------------------------------------------------| -| Created 2003-01-10 | All changes are in the log above. | Updated 2003-02-01 | -\----------------------------------------------------------------------------*/ - -/* - Changes made (ahu): - + Support header TH element (headerOnclick) - + Added support for a TD attribute 'sortValue' (getRowValue): - If it is there, use its value for sorting instead of the cell content. - This allows sorting by a value that differs from what is seen on the - screen. As a simple example, consider sorting a column containing - formatted numbers: 1,000.00 - - + 15-May 2004, ahu: changed default sort order (on the first click) to - ascending (SortableTable.prototype.sort) - - ToDo: - - Allow for different Date formats -*/ - -function SortableTable(oTable, oSortTypes) { - - this.element = oTable; - this.tHead = oTable.tHead; - this.tBody = oTable.tBodies[0]; - this.document = oTable.ownerDocument || oTable.document; - - this.sortColumn = null; - this.descending = null; - - var oThis = this; - this._headerOnclick = function (e) { - oThis.headerOnclick(e); - }; - - - // only IE needs this - var win = this.document.defaultView || this.document.parentWindow; - this._onunload = function () { - oThis.destroy(); - }; - if (win && typeof win.attachEvent != "undefined") { - win.attachEvent("onunload", this._onunload); - } - - this.initHeader(oSortTypes || []); -} - -SortableTable.gecko = navigator.product == "Gecko"; -SortableTable.msie = /msie/i.test(navigator.userAgent); -// Mozilla is faster when doing the DOM manipulations on -// an orphaned element. MSIE is not -SortableTable.removeBeforeSort = SortableTable.gecko; - -SortableTable.prototype.onsort = function () {}; - -// adds arrow containers and events -// also binds sort type to the header cells so that reordering columns does -// not break the sort types -SortableTable.prototype.initHeader = function (oSortTypes) { - var cells = this.tHead.rows[0].cells; - var l = cells.length; - var img, c; - for (var i = 0; i < l; i++) { - c = cells[i]; - img = this.document.createElement("IMG"); - img.src = "../include/blank.png"; // relative to the file that uses this - c.appendChild(img); - if (oSortTypes[i] != null) { - c._sortType = oSortTypes[i]; - } - if (typeof c.addEventListener != "undefined") - c.addEventListener("click", this._headerOnclick, false); - else if (typeof c.attachEvent != "undefined") - c.attachEvent("onclick", this._headerOnclick); - } - this.updateHeaderArrows(); -}; - -// remove arrows and events -SortableTable.prototype.uninitHeader = function () { - var cells = this.tHead.rows[0].cells; - var l = cells.length; - var c; - for (var i = 0; i < l; i++) { - c = cells[i]; - c.removeChild(c.lastChild); - if (typeof c.removeEventListener != "undefined") - c.removeEventListener("click", this._headerOnclick, false); - else if (typeof c.detachEvent != "undefined") - c.detachEvent("onclick", this._headerOnclick); - } -}; - -SortableTable.prototype.updateHeaderArrows = function () { - var cells = this.tHead.rows[0].cells; - var l = cells.length; - var img; - for (var i = 0; i < l; i++) { - img = cells[i].lastChild; - if (i == this.sortColumn) - img.className = "SortArrow " + (this.descending ? "descending" : "ascending"); - else - img.className = "SortArrow"; - } -}; - -SortableTable.prototype.headerOnclick = function (e) { - // find TD or TH element - var el = e.target || e.srcElement; - while (el.tagName != "TD" && el.tagName != "TH") - el = el.parentNode; - - this.sort(el.cellIndex); -}; - -SortableTable.prototype.getSortType = function (nColumn) { - var cell = this.tHead.rows[0].cells[nColumn]; - var val = cell._sortType; - if (val != "") - return val; - return "String"; -}; - -// only nColumn is required -// if bDescending is left out the old value is taken into account -// if sSortType is left out the sort type is found from the sortTypes array - -SortableTable.prototype.sort = function (nColumn, bDescending, sSortType) { - if (sSortType == null) - sSortType = this.getSortType(nColumn); - - // exit if None - if (sSortType == "None") - return; - - if (bDescending == null) { - if (this.sortColumn != nColumn) - // 15-May 2004, ahu: change to false for ascending - this.descending = false; - else - this.descending = !this.descending; - } - - this.sortColumn = nColumn; - - if (typeof this.onbeforesort == "function") - this.onbeforesort(); - - var f = this.getSortFunction(sSortType, nColumn); - var a = this.getCache(sSortType, nColumn); - var tBody = this.tBody; - - a.sort(f); - - if (this.descending) - a.reverse(); - - if (SortableTable.removeBeforeSort) { - // remove from doc - var nextSibling = tBody.nextSibling; - var p = tBody.parentNode; - p.removeChild(tBody); - } - - // insert in the new order - var l = a.length; - for (var i = 0; i < l; i++) - tBody.appendChild(a[i].element); - - if (SortableTable.removeBeforeSort) { - // insert into doc - p.insertBefore(tBody, nextSibling); - } - - this.updateHeaderArrows(); - - this.destroyCache(a); - - if (typeof this.onsort == "function") - this.onsort(); -}; - -SortableTable.prototype.asyncSort = function (nColumn, bDescending, sSortType) { - var oThis = this; - this._asyncsort = function () { - oThis.sort(nColumn, bDescending, sSortType); - }; - window.setTimeout(this._asyncsort, 1); -}; - -SortableTable.prototype.getCache = function (sType, nColumn) { - var rows = this.tBody.rows; - var l = rows.length; - var a = new Array(l); - var r; - for (var i = 0; i < l; i++) { - r = rows[i]; - a[i] = { - value: this.getRowValue(r, sType, nColumn), - element: r - }; - }; - return a; -}; - -SortableTable.prototype.destroyCache = function (oArray) { - var l = oArray.length; - for (var i = 0; i < l; i++) { - oArray[i].value = null; - oArray[i].element = null; - oArray[i] = null; - } -} - -SortableTable.prototype.getRowValue = function (oRow, sType, nColumn) { - var c = oRow.cells[nColumn]; - var s = c.getAttribute("sortValue"); - if (!s) { - if (typeof c.innerText != "undefined") - s = c.innerText; - else - s = SortableTable.getInnerText(c); - } - return this.getValueFromString(s, sType); -}; - -SortableTable.getInnerText = function (oNode) { - var s = ""; - var cs = oNode.childNodes; - var l = cs.length; - for (var i = 0; i < l; i++) { - switch (cs[i].nodeType) { - case 1: //ELEMENT_NODE - s += SortableTable.getInnerText(cs[i]); - break; - case 3: //TEXT_NODE - s += cs[i].nodeValue; - break; - } - } - return s; -} - -SortableTable.prototype.getValueFromString = function (sText, sType) { - switch (sType) { - case "Number": - return Number(sText); - case "CaseInsensitiveString": - return sText.toUpperCase(); - case "Date": - var parts = sText.split("-"); - var d = new Date(0); - d.setFullYear(parts[0]); - d.setDate(parts[2]); - d.setMonth(parts[1] - 1); - return d.valueOf(); - } - return sText; -}; - -SortableTable.prototype.getSortFunction = function (sType, nColumn) { - return function compare(n1, n2) { - if (n1.value < n2.value) - return -1; - if (n2.value < n1.value) - return 1; - return 0; - }; -}; - -SortableTable.prototype.destroy = function () { - this.uninitHeader(); - var win = this.document.parentWindow; - if (win && typeof win.detachEvent != "undefined") { // only IE needs this - win.detachEvent("onunload", this._onunload); - } - this._onunload = null; - this.element = null; - this.tHead = null; - this.tBody = null; - this.document = null; - this._headerOnclick = null; - this.sortTypes = null; - this._asyncsort = null; - this.onsort = null; -}; - -/* -------------------------------------------------------------------------- */ - -function addClassName(el, sClassName) { - var s = el.className; - var p = s.split(" "); - var l = p.length; - for (var i = 0; i < l; i++) { - if (p[i] == sClassName) - return; - } - p[p.length] = sClassName; - el.className = p.join(" "); -} - -function removeClassName(el, sClassName) { - var s = el.className; - var p = s.split(" "); - var np = []; - var l = p.length; - var j = 0; - for (var i = 0; i < l; i++) { - if (p[i] != sClassName) - np[j++] = p[i]; - } - el.className = np.join(" "); -} diff --git a/platform/win32/msvc/external/exiv2/doc/index.html b/platform/win32/msvc/external/exiv2/doc/index.html deleted file mode 100644 index 0f2a1a394ef..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - Exiv2 - Exif and Iptc metadata manipulation library and tools - - - - -

Click here to continue if you see this page for more than a moment...

- - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/__CrwMapping__ b/platform/win32/msvc/external/exiv2/doc/templates/__CrwMapping__ deleted file mode 100644 index 5a83e708823..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/__CrwMapping__ +++ /dev/null @@ -1,146 +0,0 @@ - ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Exif KeyCRW TagCRW Directory
Mapped to the image comment0x08050x300a
Exif.Image.Make
-Exif.Image.Model
0x080a0x2807
Exif.Canon.FirmwareVersion0x080b0x3004
Exif.Canon.OwnerName0x08100x2807
Exif.Canon.ImageType0x08150x2804
Exif.Canon.0x00020x10290x300b
Exif.CanonCs2.*
-Exif.Photo.FNumber (not used on write)
-Exif.Photo.ExposureTime (not used on write)
0x102a0x300b
Exif.CanonCs.*0x102d0x300b
Exif.CanonCf.*0x10330x300b
Exif.CanonPi.*0x10380x300b
Exif.Canon.WhiteBalanceTable0x10a90x300b
Exif.Photo.ColorSpace0x10b40x300b
Exif.Canon.0x00b50x10b50x300b
Exif.Canon.0x00c00x10c00x300b
Exif.Canon.0x00c10x10c10x300b
Exif.Photo.SubjectDistance0x18070x3002
Exif.Canon.SerialNumber0x180b0x3004
Exif.Photo.DateTimeOriginal0x180e0x300a
Exif.Image.Orientation
-Exif.Photo.PixelXDimension
-Exif.Photo.PixelYDimension
0x18100x300a
Exif.Canon.ImageNumber0x18170x300a
Exif.Canon.0x00150x183b0x300b
Exif.Thumbnail.Compression
-Exif.Thumbnail.JPEGInterchangeFormat
-Exif.Thumbnail.JPEGInterchangeFormatLength
0x2008root
diff --git a/platform/win32/msvc/external/exiv2/doc/templates/__doctype__ b/platform/win32/msvc/external/exiv2/doc/templates/__doctype__ deleted file mode 100644 index 2ebb9259bf6..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/__doctype__ +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/platform/win32/msvc/external/exiv2/doc/templates/__header2__ b/platform/win32/msvc/external/exiv2/doc/templates/__header2__ deleted file mode 100644 index 4102cc21764..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/__header2__ +++ /dev/null @@ -1,24 +0,0 @@ - - Exiv2 - Exif and IPTC metadata library and tools - - - - - - - - - - - \ No newline at end of file diff --git a/platform/win32/msvc/external/exiv2/doc/templates/__index1__ b/platform/win32/msvc/external/exiv2/doc/templates/__index1__ deleted file mode 100644 index fde8e94b591..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/__index1__ +++ /dev/null @@ -1,10 +0,0 @@ - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/__index2__ b/platform/win32/msvc/external/exiv2/doc/templates/__index2__ deleted file mode 100644 index e9e80b4f7d8..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/__index2__ +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - -

Exiv2 Tag Tables

diff --git a/platform/win32/msvc/external/exiv2/doc/templates/__index3__ b/platform/win32/msvc/external/exiv2/doc/templates/__index3__ deleted file mode 100644 index bf765c32eb4..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/__index3__ +++ /dev/null @@ -1,7 +0,0 @@ -
- -
- -

Exiv2 supported Raw File Formats

diff --git a/platform/win32/msvc/external/exiv2/doc/templates/__intro__ b/platform/win32/msvc/external/exiv2/doc/templates/__intro__ deleted file mode 100644 index e268c9ba8c5..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/__intro__ +++ /dev/null @@ -1,109 +0,0 @@ -

Namespaces

- -

The Exiv2 library is made up of all -elements defined in the Exiv2 -namespace.

- -

Classes

- -

The top-level class of the Exiv2 library is Exiv2::Image. Exiv2::Image -defines the interface to access image metadata. Derived from -Exiv2::Image are implementations for different image formats. Most -importantly, they contain the logic to read metadata from the image -into Exiv2 metadata containers and write it back to the image. -Most applications will use -Exiv2::ImageFactory -to access images in files or memory, in which case the image format -is transparent to them. The factory determines the image format from the -data (not the file extension) and creates an object of the corresponding -Image subclass.

- -

Exif and IPTC metadata is manipulated through the classes -Exiv2::ExifData -and Exiv2::IptcData. -They hold a container of Exif and IPTC metadata, respectively, and define -related methods to access and manipulate the metadata. -
-Exif tag and IPTC dataset reference information for the standard tags -and datasets is available in the two static classes -Exiv2::ExifTags and -Exiv2::IptcDataSets. -
-The metadata containers hold objects derived from -Exiv2::Metadatum. -Interface class Exiv2::Metadatum defines methods to access the -information of one metadatum. It models the tag data as a key and -value pair. -The abstract base class -Exiv2::Key defines the -interface for a key. Concrete keys implement Exif and IPTC keys. -The abstract base class -Exiv2::Value defines -the interface to access tag information, from which concrete values are -derived. The actual value used in a metadatum depends on the type of -the Exif tag or IPTC dataset. It is usually determined when the Exif or -IPTC metadata is read from an image. It is also possible to manually create -a Value and together with a key add it to an ExifData or IptcData -container.

- -The classes to access XMP metadata are -Exiv2::XmpData, -Exiv2::Xmpdatum -and Exiv2::XmpKey. -They work similar to the corresponding Exif and IPTC classes. -The property reference information is in -Exiv2::XmpProperties. -In addition to the expected new members, class -Exiv2::Image -now also has an interface to access the raw XMP packet. -
-All XMP value types are supported: Simple types, structures, -arrays, property qualifiers and language alternatives. -
-XMP properties are accessed through keys of the form -"Xmp.<Prefix>.<PropertyPath>", where <Prefix> is the preferred -(or rather, registered) prefix for a schema namespace and -<PropertyPath> is the path of the XMP node. In its most basic -form, to address simple properties, <PropertyPath> is the name -of the property. In general, <PropertyPath> can be used to -address any XMP node, including array items, structure fields -qualifiers and deeply nested properties. -
-Any properties in known namespaces are supported and additional -namespaces can be registered. -
-The specialized Exiv2 values -Exiv2::XmpTextValue, -Exiv2::XmpArrayValue -and Exiv2::LangAltValue are -provided to simplify the use of XMP properties. -
-Note: Unlike Exif and IPTC tags, XMP properties do not have -a tag number. - -

Examples

- -

There are several simple examples that demonstrate the basic use of Exiv2 -functionality: Exifprint -shows how the Exif data of an image can be read and written to the screen. -Iptcprint is a similar -example to print IPTC data. -Addmoddel shows how to -add, modify and delete Exif metadata. -Exifcomment shows how to -set the exif comment of an image. -Xmpsample.cpp contains examples -of how to set various types of XMP properties. -
-For more real-world code have a look at the implementation of the -different actions of the Exiv2 utility (actions.cpp).

- -

Makernotes

- -

Exif Makernote data can be accessed through ExifData in the same -way as the standard Exif tags. In other words, for each entry of a -known Makernote, there is a corresponding Metadatum in the ExifData -container. Makernote taglists are available in classes -Exiv2::<Make>MakerNote (e.g., -Exiv2::CanonMakerNote.) diff --git a/platform/win32/msvc/external/exiv2/doc/templates/__maintitle__ b/platform/win32/msvc/external/exiv2/doc/templates/__maintitle__ deleted file mode 100644 index 7d763df0448..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/__maintitle__ +++ /dev/null @@ -1 +0,0 @@ -

Exif and IPTC metadata library and tools

\ No newline at end of file diff --git a/platform/win32/msvc/external/exiv2/doc/templates/__makernotes__ b/platform/win32/msvc/external/exiv2/doc/templates/__makernotes__ deleted file mode 100644 index 2776fa265c2..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/__makernotes__ +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MakeFormatHeaderEndian 1)Offsets 2)RefRemarks
CanonIFDNone  [2]Some CR2 images have a non-zero next-IFD pointer
CasioIFD---[4]Not supported by Exiv2 yet
FUJIIFD, usually at offset 12Starts with the string "FUJI" - and a 4 byte pointer to the IFDLittle-endian (II)Relative to the beginning of the makernote[1]Exif data uses big-endian (MM) byte order
Minolta, KONICA MINOLTAIFDNone  [5]Camera settings tag is encoded in big-endian (MM) style, regardless of - the encoding style of the Exif data
NIKONIFDNone  [3]Models using this makernote include E990, D1
NIKONIFD, at offset 8"Nikon\0" followed by two bytes of unknown meaning  [1]Models using this makernote include E700, E800, E900, E900S, E910, E950
NIKONIFD, usually at offset 18"Nikon\0" followed by 4 bytes which look like a version code - and a TIFF headerFrom makernote TIFF headerRelative to the start of the makernote TIFF header Models using this makernote include E5400, SQ, D2H, D70, D100, D200. - Makernote IFD of the D200 has no next-IFD pointer. (Is this a bug?)
OLYMPUSIFD, at offset 8"OLYMP\0" followed by two bytes of unknown meaning  [1] 
OLYMPUSIFD, at offset 12"OLYMPUS\0II" followed by two bytes of unknown meaning Relative to the beginning of the makernote  
PanasonicIFD without a next-IFD pointer at offset 12"Panasonic\0\0\0"  [8] 
PENTAXIFD at offset 6"AOC\0" followed by two bytes of unknown meaning  [11] 
SAMSUNGIFDNone Relative to the beginning of the makernote  
SanyoIFD---[6]Not supported by Exiv2 yet
SIGMA, FOVEONIFD, at offset 10"SIGMA\0\0\0" or "FOVEON\0\0" followed by two bytes - of unknown meaning  [7] 
SONYIFD without a next-IFD pointer at offset 12"SONY DSC \0\0\0"   Seen in Jpeg images, e.g., from DSC-W7, DSC-R1
SONYIFDNone   Seen in SR2 images, e.g., from DSC-R1
- - -

- - 1) If not specified, the byte order of the Exif data is applicable.
- 2) If not specified, offsets are relative to the start of the TIFF header. -
-

diff --git a/platform/win32/msvc/external/exiv2/doc/templates/crw-mapping.html.in b/platform/win32/msvc/external/exiv2/doc/templates/crw-mapping.html.in deleted file mode 100644 index c92fd0c5e3b..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/crw-mapping.html.in +++ /dev/null @@ -1,36 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index3__ -

Canon CRW files: Mapping of CIFF to Exif tags

-
- -

CRW files are encoded in CIFF format. CIFF format consists of a -header and a hierarchy of directories and entries, similar to TIFF -(but easier to deal with). In Exiv2, there is no CRW or CIFF type of -metadata. Instead, known and suitable CIFF tags are mapped to Exif -metadata, but not all CIFF tags are mapped. Exiv2 reads Canon CRW -files, parses the CIFF structure and maps known and suitable tags to -Exif metadata. Writing to CRW files entails a reverse mapping from -Exif metadata to the CIFF tags. This way it is possible, e.g., to -adjust the date when the image was taken by reading the CRW file, -modifying Exif.Photo.DateTimeOriginal and writing the Exif data back -to a CRW file. Tags for which there is no mapping defined are ignored -during both, reading and writing.

- -

Reference: The Canon RAW (CRW) File Format by Phil Harvey.

- -

Exiv2 supports the mappings listed in the table below.

-

Click on a column header to sort the table.

- -
-__CrwMapping__ -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/exiv2.dot b/platform/win32/msvc/external/exiv2/doc/templates/exiv2.dot deleted file mode 100644 index 07b02b90e4e..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/exiv2.dot +++ /dev/null @@ -1,66 +0,0 @@ -################################################################################ -# File : exiv2.dot -# Version : $Rev: 572 $ -# Author(s): Andreas Huggel (ahu) -# History : 18-Feb-04, ahu: created -# 19-Mar-05, ahu: updated after inside-out change -# -# Description: -# Dot file for a graph showing the component dependencies ("uses in the -# interface") of the Exiv2 library. -# Run the following command to get the image: -# $ dot -Tgif -oexiv2.gif exiv2.dot -################################################################################ - -digraph "Exiv2 component dependencies" { - - L1 [shape=plaintext] ; - L2 [shape=plaintext] ; - L3 [shape=plaintext] ; - L4 [shape=plaintext] ; - L5 [shape=plaintext] ; - L6 [shape=plaintext] ; - - "L6" -> "L5" -> "L4" -> "L3" -> "L2" -> "L1" [style=invis] ; - - "exif" [shape=box] ; - "iptc" [shape=box] ; - "metadatum" [shape=box] ; - "ifd" [shape=box] ; - "image" [shape=box] ; - "tags" [shape=box] ; - "datasets" [shape=box] ; - "value" [shape=box] ; - "types" [shape=box] ; - "error" [shape=box] ; - "makernote" [shape=box] ; - "basicio" [shape=box] ; - "*mn" [shape=box] ; - "jpgimage" [shape=box] ; - - clusterrank="local"; - "basicio" -> "error" - "basicio" -> "types" - "*mn" -> "makernote" - "*mn" -> "tags" - "datasets" -> "metadatum" - "exif" -> "ifd" - "exif" -> "tags" - "exif" -> "error" - "ifd" -> "types" - "image" -> "basicio" - "iptc" -> "datasets" - "iptc" -> "error" - "jpgimage" -> "exif" - "jpgimage" -> "image" - "jpgimage" -> "iptc" - "makernote" -> "ifd" - "metadatum" -> "value" - "tags" -> "metadatum" - "value" -> "types" - - { rank=same; L1 "types" } - { rank=same; L2 "value" "ifd" } - { rank=same; L5 "image" "iptc" } - -} diff --git a/platform/win32/msvc/external/exiv2/doc/templates/gen.py b/platform/win32/msvc/external/exiv2/doc/templates/gen.py deleted file mode 100644 index bb9c4130378..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/gen.py +++ /dev/null @@ -1,57 +0,0 @@ -#! /usr/bin/env python -# ---------------------------------------------------------------------- -# Settings -vardir = "." -date_format = "%d-%b-%Y" - -# ---------------------------------------------------------------------- -# functions -def usage(): - print """Usage: gen.py file.in [...] - Substitute placeholders in input files with content - """ - -def gen_html(file): - """Replace variables in the file with their content""" - text = open(file).read() - for var in vars: - vartext = open(vardir + "/" + var).read() - text = text.replace(var, vartext) - text = last_modified(text) - return text - -def last_modified(text): - """Substitute variable __last_modified__ with the current date""" - date = time.strftime(date_format, time.localtime()) - text = text.replace("__last_modified__", date) - return text - -# ---------------------------------------------------------------------- -# main -import sys -import os -import re -import time - -# Check command line arguments -if len(sys.argv) == 1: - usage() - sys.exit() - -# The input files from the command line -input = sys.argv[1:] - -# Get a list of all variables (files in the form __*__) from vardir -vars = os.listdir(vardir) -for i in range(len(vars)-1, -1, -1): - if re.match("^__.*__$", vars[i]): continue - del vars[i] -vars.sort() - -# Substitute variables in all input files -print "Substituting variables", vars -for file in input: - print "Processing", file, "..." - text = gen_html(file) - file = file.replace(".in", "") - open(file, 'w').write(text) diff --git a/platform/win32/msvc/external/exiv2/doc/templates/getting-started.html.in b/platform/win32/msvc/external/exiv2/doc/templates/getting-started.html.in deleted file mode 100644 index 24dee4769e7..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/getting-started.html.in +++ /dev/null @@ -1,17 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ - -

Getting started

- -__intro__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/gpl-license.html.in b/platform/win32/msvc/external/exiv2/doc/templates/gpl-license.html.in deleted file mode 100644 index 7677fa59e8c..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/gpl-license.html.in +++ /dev/null @@ -1,389 +0,0 @@ - - - - GNU General Public License - - - - - - - - - - - - - -
-__index1__ - -

GNU General Public License

-

Version 2, June 1991

- -

Copyright (C) 1989, 1991 Free Software Foundation, Inc. -51 Franklin Street, 5th Floor, Boston, MA 02110-1301 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:

- -
    -
  1. -

    You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change.

    -
  2. - -
  3. -

    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.

    -
  4. - -
  5. -

    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.)

    -
  6. -
- -

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:

- -
    -
  1. -

    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,

    -
  2. - -
  3. -

    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,

    -
  4. - -
  5. -

    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.)

    -
  6. -
- -

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/platform/win32/msvc/external/exiv2/doc/templates/iptc.awk b/platform/win32/msvc/external/exiv2/doc/templates/iptc.awk deleted file mode 100644 index 95584dfc873..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/iptc.awk +++ /dev/null @@ -1,48 +0,0 @@ -################################################################################ -# File : iptc.awk -# Version : $Rev: 570 $ -# Author(s): Andreas Huggel (ahu) -# History : 07-Feb-04, ahu: created -# -# Description: -# Awk script to convert a taglist to XML format used in the documentation. -# $ taglist [SectionName] | awk -f iptc.awk > iptc.xml -################################################################################ - -BEGIN { - FS = ", " - print ""; - print ""; - - print "" - print "
" - print "Iptc datasets defined in Exiv2" - print "" - print "

Datasets are defined according to the specification of the Iptc " - print "Information Interchange Model (IIM).

" - print "

Click on a column header to sort the table.

" - print "
" - print "
" - print "" -} - -{ - print " "; - print " " $1 "" - print " " $2 "" - print " " $3 "" - print " " $4 "" - print " " $5 "" - print " " $6 "" - print " " $7 "" - print " " $8 "" - print " " $9 "" - print " " $10 "" - print " " $11 "" - print " "; -} - -END { - print "" - print "
" -} diff --git a/platform/win32/msvc/external/exiv2/doc/templates/iptc.xsl b/platform/win32/msvc/external/exiv2/doc/templates/iptc.xsl deleted file mode 100644 index 290365c03c1..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/iptc.xsl +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - - - - - - - - - - - - -

- -
- - - - - - - - - - - -
- -
- - - - - - - - - - - - - - - - - - - - Tag (hex) - Tag (dec) - Key - Type - M. - R. - Min. bytes - Max. bytes - Tag description - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Yes - - - No - - - - - - - - - - Yes - - - No - - - - - - - - - - - - - - - - - - -
diff --git a/platform/win32/msvc/external/exiv2/doc/templates/makernote.html.in b/platform/win32/msvc/external/exiv2/doc/templates/makernote.html.in deleted file mode 100644 index c36388568d8..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/makernote.html.in +++ /dev/null @@ -1,86 +0,0 @@ -__doctype__ - -__header2__ - - -
- -__index1__ - -

MakerNote Formats and Specifications

- -

-The Makernote is tag 0x927c in the Exif IFD. According to the - -Exif 2.2 standard, the makernote is "a tag for manufacturers of -Exif writers to record any desired information. The contents are up to -the manufacturer, but this tag should not be used for any other than -its intended purpose."

- -

Most vendors do not publish their makernote specifications. Most of the -specifications available on the Internet -were reverse-engineered. Judging from the size of many makernote -fields, manufacturers store a lot of information there and from the -available specifications, some of this is certainly quite -interesting. For example, makernotes may contain information about the -lens used, contrast, saturation and sharpness settings, image quality -settings, etc. For some more advanced camera settings, the Exif -standard doesn't define a standard tag, so camera vendors have to -resort to using the makernote. Unfortunately, in some cases, camera -vendors store important information only in proprietary makernote -fields, instead of using available Exif standard tags. The most -infamous example for this is Nikon's ISO settings tag.

- -

Most vendors write the makernote in TIFF format, i.e., in the same -format as the rest of the Exif information is encoded. This appears to -be a sensible thing at first glance. Unfortunately, in general it -means that any change of an Exif tag, which moves the -makernote field, will corrupt it. It is an inherent problem of the -TIFF format that a writer must know the format and all extensions -used, in order to be able to write changes correctly; unknown tags are -potentially corrupted when they are moved (rearranged). But since -makernotes are usually proprietary, Exif writers often don't know -these details. The reason to write to the Exif data could be as simple -as to add copyright information, an Exif comment, etc. Some camera -manufacturers seem to have recognized this problem and now use a -modified TIFF format with offsets relative to somewhere at the -beginning of the makernote field for the makernote IFD to address the -issue.

- -

The following table summarizes the structures of the makernote -field used by some vendors. Please let me know if you have additional -information.

- -__makernotes__ - -

Exif.org has another table with similar - info and sample pictures: Digital - Camera Sample Images. According to this source, (at least some) Ricoh and - Kodak cameras do not write the makernote in IFD format.

-

References

-

[1] Exif - file format by TsuruZoh Tachibanaya
- [2] EXIF Makernote - of Canon by David Burren
- [3] Makernote - EXIF Tag of the Nikon 990 by Max Lyons
- [4] "Makernote" - Exif tag of Casio by Eckhard Henkel
- [5] Minolta - MakerNote by Dalibor Jelinek
- [6] Sanyo - MakerNote by John Hawkins
- [7] - SIGMA and FOVEON EXIF MakerNote Documentation by Foveon
- [8] Panasonic - MakerNote Information by Tom Hughes
- [9] - Various Makernote specifications from the - PHP JPEG Metadata Toolkit by Evan Hunter
- [10] ExifTool, the most complete and up-to-date tool for reading and writing meta information in image files, by Phil Harvey
- [11] EXIF: Pentax type3 Makernotes by Ger Vermeulen

-
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-canon.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-canon.html.in deleted file mode 100644 index 629b5a1d491..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-canon.html.in +++ /dev/null @@ -1,56 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ -

Canon MakerNote Tags defined in Exiv2

-
-

Tags found in the MakerNote of images taken with Canon cameras. These tags are defined by Exiv2 in accordance with [2].

-

Click on a column header to sort the table.

-
-__Canon__ -
- -

Canon Camera Settings Tags

-

Click on a column header to sort the table.

-__CanonCs__ -
- -

Canon Shot Info Tags

-

Click on a column header to sort the table.

-__CanonSi__ -
- -

Canon Panorama Tags

-

Click on a column header to sort the table.

-__CanonPa__ -
- -

Canon Custom Function Tags

-

Click on a column header to sort the table.

-__CanonCf__ -
- -

Canon Picture Info Tags

-

Click on a column header to sort the table.

-__CanonPi__ -
- -

Canon File Info Tags

-

Click on a column header to sort the table.

-__CanonFi__ -
- -

Canon Processing Info Tags

-

Click on a column header to sort the table.

-__CanonPr__ -
- -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-exif.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-exif.html.in deleted file mode 100644 index 9d0aa7dce76..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-exif.html.in +++ /dev/null @@ -1,20 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ -

Exif Tags supported by Exiv2

-
-

These are the Exif tags as defined in the Exif 2.2 standard.

-

IFD1 tags are not listed seperately. All IFD0 tags may also be present in IFD1, according to the standard. The second part of the Exiv2 key of an IFD1 tag is Thumbnail (instead of Image), the other two parts of the key are the same as for IFD0 tags.

-

Click on a column header to sort the table.

-
-__Exif__ -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-fujifilm.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-fujifilm.html.in deleted file mode 100644 index 355c92c912e..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-fujifilm.html.in +++ /dev/null @@ -1,19 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ -

Fujifilm MakerNote Tags defined in Exiv2

-
-

Tags found in the MakerNote of images taken with Fujifilm cameras. These tags are defined by Exiv2 in accordance with [1].

-

Click on a column header to sort the table.

-
-__Fujifilm__ -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-iptc.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-iptc.html.in deleted file mode 100644 index 340b03b7702..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-iptc.html.in +++ /dev/null @@ -1,21 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ -

IPTC datasets defined in Exiv2

- -

Datasets are defined according to the specification of the IPTC -Information Interchange Model (IIM).

- -

Click on a column header to sort the table.

- -__Iptc__ -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-minolta.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-minolta.html.in deleted file mode 100644 index c36a63cd251..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-minolta.html.in +++ /dev/null @@ -1,38 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ -

Minolta MakerNote Tags defined in Exiv2

-
-

Tags found in the MakerNote of images taken with Minolta cameras. -The Exiv2 tags are based on [5], [9] and [10]. -

-

Click on a column header to sort the table.

-
-__Minolta__ -
- -

Minolta Camera Settings (tags from older and newer cameras)

-

Click on a column header to sort the table.

-__MinoltaCsNew__ -
- -

Minolta 5D Camera Settings

-

Click on a column header to sort the table.

-__MinoltaCs5D__ -
- -

Minolta 7D Camera Settings

-

Click on a column header to sort the table.

-__MinoltaCs7D__ -
- -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-nikon.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-nikon.html.in deleted file mode 100644 index f7559e45f63..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-nikon.html.in +++ /dev/null @@ -1,168 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ -

There are three different Nikon MakerNote formats. Exiv2 will automatically detect the correct format for the Exif data from a particular Nikon camera model.

-

Nikon (format 1) MakerNote Tags defined in Exiv2

-
-

Tags found in the MakerNote of images taken with Nikon cameras, such as the E990 and D1. These tags are defined by Exiv2 in accordance with [3].

-

Click on a column header to sort the table.

-
-__Nikon1__ -
- -

Nikon (format 2) MakerNote Tags defined in Exiv2

-
-

Tags found in the MakerNote of images taken with Nikon cameras, including the E700, E800, E900, E900S, E910, E950. These tags are defined by Exiv2 in accordance with [1].

-

Click on a column header to sort the table.

-
-__Nikon2__ -
- -

Nikon (format 3) MakerNote Tags defined in Exiv2

-
-

Tags found in the MakerNote of images taken with newer Nikon cameras, e.g., the E5400, SQ, D2H, D70.

-

Click on a column header to sort the table.

-
-__Nikon3__ -
- -

Nikon Vibration Reduction Tags

-

Click on a column header to sort the table.

-__NikonVr__ -
- -

Nikon Picture Control Tags

-

Click on a column header to sort the table.

-__NikonPc__ -
- -

Nikon World Time Tags

-

Click on a column header to sort the table.

-__NikonWt__ -
- -

Nikon ISO Info Tags

-

Click on a column header to sort the table.

-__NikonIi__ -
- -

Nikon Auto Focus Tags

-

Click on a column header to sort the table.

-__NikonAf__ -
- -

Nikon Auto Focus 2 Tags

-

Click on a column header to sort the table.

-__NikonAf2__ -
- -

Nikon AF Fine Tune Tags

-

Click on a column header to sort the table.

-__NikonAFT__ -
- -

Nikon File Info Tags

-

Click on a column header to sort the table.

-__NikonFi__ -
- -

Nikon Multi Exposure Tags

-

Click on a column header to sort the table.

-__NikonMe__ -
- -

Nikon Flash Info 1 Tags

-

Click on a column header to sort the table.

-__NikonFl1__ -
- -

Nikon Flash Info 2 Tags

-

Click on a column header to sort the table.

-__NikonFl2__ -
- -

Nikon Flash Info 3 Tags

-

Click on a column header to sort the table.

-__NikonFl3__ -
- -

Nikon Shot Info D80 Tags

-

Click on a column header to sort the table.

-__NikonSiD80__ -
- -

Nikon Shot Info D40 Tags

-

Click on a column header to sort the table.

-__NikonSiD40__ -
- -

Nikon Shot Info D300a Tags

-

Click on a column header to sort the table.

-__NikonSiD300a__ -
- -

Nikon Shot Info D300b Tags

-

Click on a column header to sort the table.

-__NikonSiD300b__ -
- -

Nikon Shot Info Tags

-

Click on a column header to sort the table.

-__NikonSi01xx__ -
- -

Nikon Color Balance 1 Tags

-

Click on a column header to sort the table.

-__NikonCb1__ -
- -

Nikon Color Balance 2 Tags

-

Click on a column header to sort the table.

-__NikonCb2__ -
- -

Nikon Color Balance 2a Tags

-

Click on a column header to sort the table.

-__NikonCb2a__ -
- -

Nikon Color Balance 2b Tags

-

Click on a column header to sort the table.

-__NikonCb2b__ -
- -

Nikon Color Balance 3 Tags

-

Click on a column header to sort the table.

-__NikonCb3__ -
- -

Nikon Color Balance 4 Tags

-

Click on a column header to sort the table.

-__NikonCb4__ -
- -

Nikon Lens Data 1 Tags

-

Click on a column header to sort the table.

-__NikonLd1__ -
- -

Nikon Lens Data 2 Tags

-

Click on a column header to sort the table.

-__NikonLd2__ -
- -

Nikon Lens Data 3 Tags

-

Click on a column header to sort the table.

-__NikonLd3__ -
- -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-olympus.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-olympus.html.in deleted file mode 100644 index cd271079fdf..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-olympus.html.in +++ /dev/null @@ -1,61 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ -

Olympus MakerNote Tags defined in Exiv2

-
-

Tags found in the MakerNote of images taken with Olympus cameras.

-

Click on a column header to sort the table.

-
-__Olympus__ -
- -

Olympus Camera Settings Tags

-

Click on a column header to sort the table.

-__OlympusCs__ -
- -

Olympus Equipment Tags

-

Click on a column header to sort the table.

-__OlympusEq__ -
- -

Olympus Raw Development Tags

-

Click on a column header to sort the table.

-__OlympusRd__ -
- -

Olympus Raw Development 2 Tags

-

Click on a column header to sort the table.

-__OlympusRd2__ -
- -

Olympus Image Processing Tags

-

Click on a column header to sort the table.

-__OlympusIp__ -
- -

Olympus Focus Info Tags

-

Click on a column header to sort the table.

-__OlympusFi__ -
- -

Olympus FE Tags

-

Click on a column header to sort the table.

-__OlympusFe1__ -
- -

Olympus Raw Info Tags

-

Click on a column header to sort the table.

-__OlympusRi__ -
- -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-panasonic.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-panasonic.html.in deleted file mode 100644 index 149c51a3e5f..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-panasonic.html.in +++ /dev/null @@ -1,26 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ -

Panasonic MakerNote Tags defined in Exiv2

-
-

Tags found in the MakerNote of images taken with Panasonic cameras.

-

Click on a column header to sort the table.

-
-__Panasonic__ -
-

Panasonic RAW Tags defined in Exiv2

-
-

Tags found in IFD0 of Panasonic RAW and RW2 images.

-

Click on a column header to sort the table.

-
-__PanasonicRaw__ - - - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-pentax.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-pentax.html.in deleted file mode 100644 index d9712b59784..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-pentax.html.in +++ /dev/null @@ -1,19 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ -

Pentax MakerNote Tags defined in Exiv2

-
-

Tags found in the MakerNote of images taken with Pentax cameras.

-

Click on a column header to sort the table.

-
-__Pentax__ -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-samsung.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-samsung.html.in deleted file mode 100644 index 11a86f1daff..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-samsung.html.in +++ /dev/null @@ -1,26 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ -

Samsung MakerNote Tags defined in Exiv2

-
-

Tags found in the MakerNote of images taken with Samsung cameras.

-

Click on a column header to sort the table.

-
-__Samsung2__ -
- -

Samsung Picture Wizard Tags

-

Click on a column header to sort the table.

-__SamsungPictureWizard__ -
- -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-sigma.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-sigma.html.in deleted file mode 100644 index c2522160e89..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-sigma.html.in +++ /dev/null @@ -1,19 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ -

Sigma/Foveon MakerNote Tags defined in Exiv2

-
-

Tags found in the MakerNote of images taken with Sigma/Foveon cameras. These tags are defined by Exiv2 in accordance with [7].

-

Click on a column header to sort the table.

-
-__Sigma__ -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-sony.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-sony.html.in deleted file mode 100644 index 4af010f76c1..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-sony.html.in +++ /dev/null @@ -1,57 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ -

Sony MakerNote Tags defined in Exiv2

-
-

Tags found in the MakerNote of images taken with Sony cameras.

-

Click on a column header to sort the table.

-
-__Sony1__ -
- -

Sony Minolta Tags

-

These are the same tags as found in the Minolta MakerNote. -In Sony images the group name is SonyMinolta.

-

Click on a column header to sort the table.

-__SonyMinolta__ -
- -

Sony Camera Settings Tags

-

Click on a column header to sort the table.

-__Sony1Cs__ -
- -

Sony Camera Settings 2 Tags

-

Click on a column header to sort the table.

-__Sony1Cs2__ -
- -

Sony Minolta Camera Settings Tags

-

These are the same tags as the Minolta Camera Settings in the Minolta MakerNote. -In Sony images the group name is Sony1MltCsOld or Sony1MltCsNew.

-

Click on a column header to sort the table.

-__Sony1MltCsOld__ -
- -

Sony Minolta Camera Settings 7D Tags

-

These are the same tags as the Minolta 7D Camera Settings in the Minolta MakerNote. -In Sony images the group name is Sony1MltCs7D.

-

Click on a column header to sort the table.

-__Sony1MltCs7D__ -
- -

Sony Minolta Camera Settings A100 Tags

-

Click on a column header to sort the table.

-__Sony1MltCsA100__ -
- -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-MP.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-MP.html.in deleted file mode 100644 index af25a208628..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-MP.html.in +++ /dev/null @@ -1,27 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

Microsoft Photo 1.2 schema

-

The Microsoft Photo 1.2 schema provides a set of properties for image regions. -

    -
  • Exiv2 keys are Xmp.MP.<Property>
  • -
  • The schema namespace URI is http://ns.microsoft.com/photo/1.2/
  • -
  • The preferred schema namespace prefix is MP
  • -
-Reference: People Tagging Overview

- -

Click on a column header to sort the table.

- -__xmp_MP__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-MPRI.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-MPRI.html.in deleted file mode 100644 index 1ff37469401..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-MPRI.html.in +++ /dev/null @@ -1,27 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

Microsoft Photo RegionInfo schema

-

The Microsoft Photo RegionInfo 1.2 schema provides a set of properties for region info. -

    -
  • Exiv2 keys are Xmp.MPRI.<Property>
  • -
  • The schema namespace URI is http://ns.microsoft.com/photo/1.2/t/RegionInfo#
  • -
  • The preferred schema namespace prefix is MPRI
  • -
-Reference: People Tagging Overview

- -

Click on a column header to sort the table.

- -__xmp_MPRI__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-MPReg.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-MPReg.html.in deleted file mode 100644 index 8cd982040b0..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-MPReg.html.in +++ /dev/null @@ -1,27 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

Microsoft Photo Region schema

-

The Microsoft Photo Region 1.2 schema provides a set of properties for image regions. -

    -
  • Exiv2 keys are Xmp.MPReg.<Property>
  • -
  • The schema namespace URI is http://ns.microsoft.com/photo/1.2/t/Region#
  • -
  • The preferred schema namespace prefix is MPReg
  • -
-Reference: People Tagging Overview

- -

Click on a column header to sort the table.

- -__xmp_MPReg__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-MicrosoftPhoto.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-MicrosoftPhoto.html.in deleted file mode 100644 index 9c21e026689..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-MicrosoftPhoto.html.in +++ /dev/null @@ -1,26 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

Microsoft Photo Schema

-

This schema specifies XMP properties used by Microsoft. -

    -
  • Exiv2 keys are Xmp.MicrosoftPhoto.<Property> -
  • The schema namespace URI is http://ns.microsoft.com/photo/1.0/
  • -
  • The preferred schema namespace prefix is MicrosoftPhoto
  • -
-

-

Click on a column header to sort the table.

- -__xmp_MicrosoftPhoto__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-aux.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-aux.html.in deleted file mode 100644 index 57431cdcc36..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-aux.html.in +++ /dev/null @@ -1,28 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

Exif Schema for Additional Exif Properties

-

The following table lists additional XMP properties that describe the equipment used to produce -Exif data. -

    -
  • Exiv2 keys are Xmp.aux.<Property> -
  • The schema namespace URI is http://ns.adobe.com/exif/1.0/aux/
  • -
  • The preferred schema namespace prefix is aux
  • -
-Reference: XMP specification -

-

Click on a column header to sort the table.

- -__xmp_aux__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-crs.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-crs.html.in deleted file mode 100644 index bd2fae048e4..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-crs.html.in +++ /dev/null @@ -1,27 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

Camera Raw Schema

-

This schema specifies XMP properties associated with image files produced in camera raw mode. -

    -
  • Exiv2 keys are Xmp.crs.<Property> -
  • The schema namespace URI is http://ns.adobe.com/camera-raw-settings/1.0/
  • -
  • The preferred schema namespace prefix is crs
  • -
-Reference: XMP specification -

-

Click on a column header to sort the table.

- -__xmp_crs__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-dc.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-dc.html.in deleted file mode 100644 index dd1e97073d9..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-dc.html.in +++ /dev/null @@ -1,27 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

Dublin Core Schema

-

The Dublin Core schema provides a set of commonly used XMP properties. -

    -
  • Exiv2 keys are Xmp.dc.<Property> -
  • The schema namespace URI is http://purl.org/dc/elements/1.1/
  • -
  • The preferred schema namespace prefix is dc
  • -
-Reference: XMP specification -

-

Click on a column header to sort the table.

- -__xmp_dc__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-digiKam.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-digiKam.html.in deleted file mode 100644 index ff01ff9d6e5..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-digiKam.html.in +++ /dev/null @@ -1,26 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

digiKam Photo Management Schema

-

This schema specifies XMP properties used by digiKam. -

    -
  • Exiv2 keys are Xmp.digiKam.<Property> -
  • The schema namespace URI is http://www.digikam.org/ns/1.0/
  • -
  • The preferred schema namespace prefix is digiKam
  • -
-

-

Click on a column header to sort the table.

- -__xmp_digiKam__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-exif.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-exif.html.in deleted file mode 100644 index 5dcfaee943b..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-exif.html.in +++ /dev/null @@ -1,35 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

Exif Schema for Exif-specific Properties

-

The following table lists the XMP properties defined solely by Exif.

-

Note: A number of Exif 2.2 properties are not included in XMP. These are generally - properties that relate directly to the image stream, or that are of little use without access - to the image stream. A general XMP principle is that XMP metadata should have value - in and of itself, separate from the primary file content. The omitted properties include: - StripOffsets, RowsPerStrip, StripByteCounts, JPEGInterchangeFormat, and - JPEGInterchangeFormatLength.

-

Note: Properties beginning with "GPS" are GPS properties that are also used by DIG-35 and - are part of the JPEG-2000 standard. -

    -
  • Exiv2 keys are Xmp.exif.<Property> -
  • The schema namespace URI is http://ns.adobe.com/exif/1.0/
  • -
  • The preferred schema namespace prefix is exif
  • -
-Reference: XMP specification -

-

Click on a column header to sort the table.

- -__xmp_exif__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-expressionmedia.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-expressionmedia.html.in deleted file mode 100644 index a2144561df0..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-expressionmedia.html.in +++ /dev/null @@ -1,28 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

Microsoft Expression Media schema

-

This is the Microsoft badged version of the - iView Media Pro schema. -

    -
  • Exiv2 keys are Xmp.expressionmedia.<Property>
  • -
  • The schema namespace URI is http://ns.microsoft.com/expressionmedia/1.0/
  • -
  • The preferred schema namespace prefix is expressionmedia
  • -
-Reference: ?

- -

Click on a column header to sort the table.

- -__xmp_expressionmedia__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-iptc.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-iptc.html.in deleted file mode 100644 index fcad925bd40..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-iptc.html.in +++ /dev/null @@ -1,28 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

IPTC Core schema

-

This schema specifies the IPTC Core XMP properties. -

    -
  • Exiv2 keys are Xmp.iptc.<Property> -
  • The schema namespace URI is http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/
  • -
  • The preferred schema namespace prefix is Iptc4xmpCore
  • -
-Reference: "IPTC Core" Schema for XMP

-

Note: Exiv2 uses iptc (rather than Iptc4xmpCore) as the group name for keys of IPTC Core schema properties.

- -

Click on a column header to sort the table.

- -__xmp_iptc__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-iptcExt.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-iptcExt.html.in deleted file mode 100644 index 3a3d26cb6a6..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-iptcExt.html.in +++ /dev/null @@ -1,31 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

IPTC Extension schema

-

This schema specifies the IPTC Extension XMP properties. The IPTC - Extension schema extends and complements the IPTC Core schema by a set - of more granular properties and further specialized rights related - properties from the PLUS metadata schema. -

    -
  • Exiv2 keys are Xmp.iptcExt.<Property>
  • -
  • The schema namespace URI is http://iptc.org/std/Iptc4xmpExt/2008-02-29/
  • -
  • The preferred schema namespace prefix is Iptc4xmpExt
  • -
-Reference: IPTC Photo Metadata 2008 standard

-

Note: Exiv2 uses iptcExt (rather than Iptc4xmpExt) as the group name for keys of IPTC Extension schema properties.

- -

Click on a column header to sort the table.

- -__xmp_iptcExt__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-kipi.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-kipi.html.in deleted file mode 100644 index 5b12cfc4dde..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-kipi.html.in +++ /dev/null @@ -1,27 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

KDE Image Program Interface schema

-

KDE Image Program Interface schema tags, used by digiKam kipi-plugins. -

    -
  • Exiv2 keys are Xmp.kipi.<Property>
  • -
  • The schema namespace URI is http://www.digikam.org/ns/kipi/1.0/
  • -
  • The preferred schema namespace prefix is kipi
  • -
-Reference: ?

- -

Click on a column header to sort the table.

- -__xmp_kipi__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-mediapro.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-mediapro.html.in deleted file mode 100644 index f1b60ab37e3..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-mediapro.html.in +++ /dev/null @@ -1,28 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

iView Media Pro schema

-

iView Media Pro schema tags. See also its successor, the - Microsoft Expression Media schema. -

    -
  • Exiv2 keys are Xmp.mediapro.<Property>
  • -
  • The schema namespace URI is http://ns.iview-multimedia.com/mediapro/1.0/
  • -
  • The preferred schema namespace prefix is mediapro
  • -
-Reference: ?

- -

Click on a column header to sort the table.

- -__xmp_mediapro__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-mwg-rs.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-mwg-rs.html.in deleted file mode 100644 index bf85e68c414..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-mwg-rs.html.in +++ /dev/null @@ -1,27 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

Metadata Working Group Regions schema

-

The Metadata Working Group's schema for image region metadata. -

    -
  • Exiv2 keys are Xmp.mwg-rs.<Property>
  • -
  • The schema namespace URI is http://www.metadataworkinggroup.com/schemas/regions/
  • -
  • The preferred schema namespace prefix is mwg-rs
  • -
-Reference: Guidelines for Handling Image Metadata

- -

Click on a column header to sort the table.

- -__xmp_mwg-rs__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-pdf.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-pdf.html.in deleted file mode 100644 index a8666bb0a48..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-pdf.html.in +++ /dev/null @@ -1,26 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ -

Adobe PDF schema

-

This schema specifies XMP properties used with Adobe PDF documents. -

    -
  • Exiv2 keys are Xmp.pdf.<Property> -
  • The schema namespace URI is http://ns.adobe.com/pdf/1.3/
  • -
  • The preferred schema namespace prefix is pdf
  • -
-Reference: XMP specification -

-

Click on a column header to sort the table.

- -__xmp_pdf__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-photoshop.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-photoshop.html.in deleted file mode 100644 index 15ab2d6bc54..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-photoshop.html.in +++ /dev/null @@ -1,27 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

Photoshop Schema

-

This schema specifies XMP properties used by Adobe Photoshop. -

    -
  • Exiv2 keys are Xmp.photoshop.<Property> -
  • The schema namespace URI is http://ns.adobe.com/photoshop/1.0/
  • -
  • The preferred schema namespace prefix is photoshop
  • -
-Reference: XMP specification -

-

Click on a column header to sort the table.

- -__xmp_photoshop__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-plus.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-plus.html.in deleted file mode 100644 index 252fcbda1ad..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-plus.html.in +++ /dev/null @@ -1,29 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

PLUS License Data Format schema

-

The PLUS License Data Format ("LDF") is an ordered group of fields available - for optional use in embedding and reading image license metadata in digital - files and other documents. -

    -
  • Exiv2 keys are Xmp.plus.<Property>
  • -
  • The schema namespace URI is http://ns.useplus.org/ldf/xmp/1.0/
  • -
  • The preferred schema namespace prefix is plus
  • -
-Reference: PLUS Technical Specification

- -

Click on a column header to sort the table.

- -__xmp_plus__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-tiff.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-tiff.html.in deleted file mode 100644 index 203baad6908..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-tiff.html.in +++ /dev/null @@ -1,28 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

Exif Schema for TIFF Properties

-

The following table lists the XMP properties for TIFF-derived data. Only those TIFF properties that -are mentioned in the EXIF 2.2 specification are included here. -

    -
  • Exiv2 keys are Xmp.tiff.<Property> -
  • The schema namespace URI is http://ns.adobe.com/tiff/1.0/
  • -
  • The preferred schema namespace prefix is tiff
  • -
-Reference: XMP specification -

-

Click on a column header to sort the table.

- -__xmp_tiff__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-xmp.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-xmp.html.in deleted file mode 100644 index cdcc337844d..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-xmp.html.in +++ /dev/null @@ -1,27 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

XMP Basic Schema

-

The XMP Basic Schema contains XMP properties that provide basic descriptive information. -

    -
  • Exiv2 keys are Xmp.xmp.<Property> -
  • The schema namespace URI is http://ns.adobe.com/xap/1.0/
  • -
  • The preferred schema namespace prefix is xmp
  • -
-Reference: XMP specification -

-

Click on a column header to sort the table.

- -__xmp_xmp__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-xmpBJ.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-xmpBJ.html.in deleted file mode 100644 index 93bb909fd9c..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-xmpBJ.html.in +++ /dev/null @@ -1,27 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

XMP Basic Job Ticket Schema

-

The following XMP schema describes very simple workflow or job information. -

    -
  • Exiv2 keys are Xmp.xmpBJ.<Property> -
  • The schema namespace URI is http://ns.adobe.com/xap/1.0/bj/
  • -
  • The preferred schema namespace prefix is xmpBJ
  • -
-Reference: XMP specification -

-

Click on a column header to sort the table.

- -__xmp_xmpBJ__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-xmpDM.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-xmpDM.html.in deleted file mode 100644 index b36bb0ead8d..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-xmpDM.html.in +++ /dev/null @@ -1,27 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

XMP Dynamic Media Schema

-

This schema specifies XMP properties used by the Adobe dynamic media group. -

    -
  • Exiv2 keys are Xmp.xmpDM.<Property> -
  • The schema namespace URI is http://ns.adobe.com/xmp/1.0/DynamicMedia/
  • -
  • The preferred schema namespace prefix is xmpDM
  • -
-Reference: XMP specification -

-

Click on a column header to sort the table.

- -__xmp_xmpDM__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-xmpMM.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-xmpMM.html.in deleted file mode 100644 index 0de5ff0b485..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-xmpMM.html.in +++ /dev/null @@ -1,34 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

XMP Media Management Schema

-

The XMP Media Management Schema is primarily for use by digital asset management (DAM) systems.

-

The following XMP properties are "owned" by the DAM system and should be set by applications -under their direction; they should not be used by unmanaged files: xmpMM:ManagedFrom, -xmpMM:Manager, xmpMM:ManageTo, xmpMM:ManageUI, xmpMM:ManagerVariant.

-

The following properties are owned by the DAM system for managed files, but can also be -used by applications for unmanaged files: xmpMM:DerivedFrom, xmpMM:DocumentID, -xmpMM:RenditionClass, xmpMM:RenditionParams, xmpMM:VersionID, xmpMM:Versions.

-

The xmpMM:History property is always owned by the application. -

    -
  • Exiv2 keys are Xmp.xmpMM.<Property> -
  • The schema namespace URI is http://ns.adobe.com/xap/1.0/mm/
  • -
  • The preferred schema namespace prefix is xmpMM
  • -
-Reference: XMP specification -

-

Click on a column header to sort the table.

- -__xmp_xmpMM__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-xmpRights.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-xmpRights.html.in deleted file mode 100644 index 47847fb6ae4..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-xmpRights.html.in +++ /dev/null @@ -1,29 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

XMP Rights Management Schema

-

This schema includes XMP properties related to rights management. These properties specify -information regarding the legal restrictions associated with a resource.
-Note: XMP is not a rights-enforcement mechanism. -

    -
  • Exiv2 keys are Xmp.xmpRights.<Property> -
  • The schema namespace URI is http://ns.adobe.com/xap/1.0/rights/
  • -
  • The preferred schema namespace prefix is xmpRights
  • -
-Reference: XMP specification -

-

Click on a column header to sort the table.

- -__xmp_xmpRights__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-xmpTPg.html.in b/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-xmpTPg.html.in deleted file mode 100644 index baf2d7892ef..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags-xmp-xmpTPg.html.in +++ /dev/null @@ -1,27 +0,0 @@ -__doctype__ - -__header2__ - - -
-__index1__ -__index2__ - -

XMP Paged-Text Schema

-

The Paged-Text schema is used for XMP properties for text appearing on a page in a document. -

    -
  • Exiv2 keys are Xmp.xmpTPg.<Property> -
  • The schema namespace URI is http://ns.adobe.com/xap/1.0/t/pg/
  • -
  • The preferred schema namespace prefix is xmpTPg
  • -
-Reference: XMP specification -

-

Click on a column header to sort the table.

- -__xmp_xmpTPg__ - -
- - - - diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags.awk b/platform/win32/msvc/external/exiv2/doc/templates/tags.awk deleted file mode 100644 index b883ea42285..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags.awk +++ /dev/null @@ -1,44 +0,0 @@ -################################################################################ -# File : tags.awk -# Version : $Rev: 785 $ -# Author(s): Andreas Huggel (ahu) -# History : 07-Feb-04, ahu: created -# -# Description: -# Awk script to convert a taglist to XML format used in the documentation. -# $ taglist [itemName] | awk -f tags.awk > tags.xml -################################################################################ - -BEGIN { - FS = ", " # ,\t - print ""; - print ""; - - print "" - print "
" - print "XYZ MakerNote Tags defined in Exiv2" - print "" - print "

Tags found in the MakerNote of images taken with XYZ cameras. These tags " - print "are defined by Exiv2 in accordance with [X].

" - print "

Click on a column header to sort the table.

" - print "
" - print "
" - print "" -} - -{ - print " "; - print " " $1 "" - print " " $2 "" - print " " $3 "" - print " " $4 "" - print " " $5 "" - print " " $6 "" - print " " $7 "" - print " "; -} - -END { - print "" - print "
" -} diff --git a/platform/win32/msvc/external/exiv2/doc/templates/tags.xsl b/platform/win32/msvc/external/exiv2/doc/templates/tags.xsl deleted file mode 100644 index e93f1c22f34..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/tags.xsl +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - - - - - - - - - - - - - -

- -
- - - - - - - - - - - -
- -
- - - - - - - - - - - - - - - - - Tag (hex) - Tag (dec) - IFD - Key - Type - Tag description - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/platform/win32/msvc/external/exiv2/doc/templates/xmp.awk b/platform/win32/msvc/external/exiv2/doc/templates/xmp.awk deleted file mode 100644 index 35ec16903e1..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/xmp.awk +++ /dev/null @@ -1,43 +0,0 @@ -################################################################################ -# File : xmp.awk -# Version : $Rev: 1327 $ -# Author(s): Andreas Huggel (ahu) -# History : 23-Nov-07, ahu: created -# -# Description: -# Awk script to convert an XMP property list to XML format used in the -# documentation. -# $ taglist [xmpList] | awk -f xmp.awk > [xmpList].xml -################################################################################ - -BEGIN { - FS = ", " # ,\t - print ""; - print ""; - - print "" - print "
" - print "XMP tags defined in Exiv2" - print "" - print "

Some description

" - print "

Click on a column header to sort the table.

" - print "
" - print "
" - print "" -} - -{ - print " "; - print " " $1 "" - print " " $2 "" - print " " $3 "" - print " " $4 "" - print " " $5 "" - print " " $6 "" - print " "; -} - -END { - print "" - print "
" -} diff --git a/platform/win32/msvc/external/exiv2/doc/templates/xmp.xsl b/platform/win32/msvc/external/exiv2/doc/templates/xmp.xsl deleted file mode 100644 index 24c0f5e2e72..00000000000 --- a/platform/win32/msvc/external/exiv2/doc/templates/xmp.xsl +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - - - - - - - - - - - - - -

- -
- - - - - - - - - - - -
- -
- - - - - - - - - - - - - - - - - Property - Label - Value type - Exiv2 type - Category - Description - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/platform/win32/msvc/external/exiv2/msvc/README-MSVC.txt b/platform/win32/msvc/external/exiv2/msvc/README-MSVC.txt deleted file mode 100644 index 3bfb1171b9e..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/README-MSVC.txt +++ /dev/null @@ -1,413 +0,0 @@ -Notes about msvc 32 bit build of exiv2 --------------------------------------- - -+------------------------------------------------------+ -| This version of the build environment builds 32 bit | -| builds of exiv2 for DevStudio 2003 (VS7.1) and later | -| | -| Please use the project files in msvc64 for 32 and 64 | -| bit builds in VS2005 and later. | -| | -| Please see msvc64\ReadMe.txt for more information | -+------------------------------------------------------+ - -Tools ------ - -Created With: VC9 (VS/2008 Std) -Tested With: VC7.1, VC8 Pro +SP1, VC9Std running Windows/XP 32bit) - VC10 running on Windows/7 64bit, and Windows/XP 32bit - (VC7.1 = VS/2003 .Net; VC8 = VS/2005; VC9 = VS/2008; VC10 = VS/2010) - -I recommend you use the msvc64 environment for VS2010. -VC10/VS 2010 requires a project change which the conversion wizard doesn't handle. See below. - -All builds in msvc are 32bit. Use msvc64 for 64bit and 32bit builds. - -1) Build environments (solution files) - exiv2.sln - this builds the exiv2 libraries (static and dynamic) - and the utility and test programs (exiv2.exe, exifprint.exe) - - DEPENDS on zlib and expat-2.0.1 - Builds with VC9,VC8 and VC7.1, VC10 - - exiv2+organize.sln - builds the same targets as exiv2 - PLUS the organize.exe command-line program - - DEPENDS on zlib and expat-2.0.1 and boost_1_37_0 - Builds with VC9 and VC8 - DOES NOT BUILT WITH VC7.1 - - set Environment string BOOST_ROOT=c:\boost_1_37_0 - -Notes for DevStudio 2010 Users ------------------------------- - -A new setting "TargetName"=$(ProjectName) has been added to DevStudio 2010. There is only one project impacted by this: - -Select Project "exiv2lib" in Project Explorer. Right-Click/Properties - -+ Configuration Properties\General - -exiv2lib.vcproj -Target Name | exiv2sd Debug - | exiv2d DebugDLL - | exiv2s Release - | exiv2 ReleaseDLL - -If you don't add these setting, you will get 1,000s of errors. The damming error concerns: -"Name of output is not equal to target name" (or something obscure such as this). - -This matter has been reported to Microsoft. -http://msdn.microsoft.com/EN-US/library/E0846D4D-2CE1-48E3-B219-674FF070BF4E#11 - -How to build and test exiv2 (with/without organize.exe) -------------------------------------------------------- - -1) Dependancies for exiv2 - You need expat-2.0.1 AND zlib-1.2.3 which you can download from - http://expat.sourceforge.net/ and http://zlib.net/, respectively. - expat-2.0.1, zlib and exiv2 should be in the same directory - - I usually use c:\gnu, however the name 'c:\gnu' does not matter - nor does it have to be a topmost directory. - - c:\gnu\expat-2.0.1 <---- vanilla expat - c:\gnu\zlib-1.2.3 <---- vanilla zlib - c:\gnu\exiv2 <---- this directory - -2) Build expat. See expat documents for details. - This is what I do: - a) Open expat-2.0.1\expat.dsw with DevStudio - This converts the expat-2.0.1 VC6 work space to DevStudio project files - Say "Yes" to everything. - - b) Build/Batch Build/Select - { expat | expat-static } { debug | release } (4 targets) - / Build - - Rattle roll.... less than a minute ...... rattle grrrrrrrr rump. - ========== Build: 4 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== - -3) Build zlib. See zlib documents for details. - This is what I do: - a) Open zlib\zlib-1.2.3\projects\visualc6\zlib.dsw with DevStudio - This converts the zlib-1.2.3 VC6 workspace to DevStudio project files - Say "Yes" to everything. - - b) Build/Batch Build/Select - { zlib } {DLL Debug | DLL Release | LIB Debug | LIB Release } (4 targets) - Build - - Rattle roll.... less than a minute ...... snap, crackle, pop (lots of warnings) - ========== Build: 4 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== - -4) Open the sln file exiv2\msvc\exiv2.sln - On VS2005 and up, the Wizard will offer to upgrade the project files. - Once more, say yes to everything. - -5) Build/Batch Build/Select All/Build - - This will build all the necessary libraries and all the test programs. - At the end of building, you should see the beautiful output: - - ========== Build: 104 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== - - The build takes 6 minutes on my iMac with a 2.8GHz Duo Core Intel Processor - and 4GBytes of Ram. (VS 2005 and VS 2008) - - And about 16 minutes on my elderly 2003 laptop (VS 2003 .Net) - (DeLL Inspiron 8500 2.2GHz Pentium and 1.25GBytes of Ram) - - Both machines are running XP/Pro SP3. - - +--------------------------------------------+ - | DISK SPACE WARNING | - +--------------------------------------------+ - - The total build consumes 1.0GBytes of disk space. - There are 112 targets (4 expats, 4 zlibs and 108 exiv2 targets) - The pdb (debugging) files consume 300MB. - The debug exiv2 static library alone (exiv2.lib) is 35MB - - A more modest build is to build exiv2 - { Debug | Release | DebugDLL | ReleaseDLL } - This consumes: 400MB - - A minimum build is to build exiv2/Release - This consumes: 100MB - -6) Test from the Command Line (cmd.exe): - - cd exiv2\msvc - C:\gnu\exiv2\msvc>runner.bat > new.txt - exiv2.exe: An action must be specified - exiv2.exe: At least one file is required - metacopy.exe: Read and write files must be specified - bla bla white sheep...... - - C:\gnu\exiv2\msvc>diff.exe runner.txt new.txt (Windows/XP) - C:\gnu\exiv2\msvc>diff.exe runner7.txt new.txt (Windows/7) - --- no differences should be reported -- - - The test takes less than 1 minute and runs 200+ different test programs. - -How to build exiv2+organize ---------------------------- - -1) boost - - organize has been built with boost_1_37_0 - It may build successfully with other versions - Please send an email to record your experience to help other succeed (or avoid frustration) - - +---------------------------------------------------------------------------+ - | MSVC 7.1 Users: You can't build organize with VC7.1 and BOOST 1_37_0 | - | You'll get the following compiler error: | - | c:\boost_1_37_0\boost\format\feed_args.hpp(203) : | - | fatal error C1001: INTERNAL COMPILER ERROR | - | (compiler file 'msc1.cpp', line 2701) | - | Please choose the Technical Support command on the Visual C++ | - | Help menu, or open the Technical Support help file for more information | - | | - | If anyone is able to successfully build with VC7.1 + service pack + boost | - | please share your successful experience with us - email address below | - | and let me know the version of BOOST and the Service Pack Level of VC7.1 | - | I am using: | - | Microsoft (R) 32-bit C/C++ Standard Compiler Version 13.00.9466 for 80x86 | - | DevStudio Version 7.1.3088 (Service pack level unknown) | - | | - | VisualC++ 2008 Express Edition (VC9) is a free download from Microsoft | - | and can successfully build exiv2+organize.sln | - +---------------------------------------------------------------------------+ - -2) Download or build boost -EITHER (recommended) - download and install boost_1_37_0 using the BoostPro Computing Wizard - http://www.boostpro.com/products/free - - You'll need: - boost headers - regex - system - filesystem - program options - - +-------------------------------------------------------+ - | DISK SPACE WARNING | - | A full installation of all boost for vc7.1, vc8 & vc9 | - | occupies an amazing 4.5GBytes | - | boost offers 3 compilers (vc7.1, 8 and 9) | - | 8 flavors {MTdll, MT, MTs, STs} x {Debug|Release} | - | 22 libraries (regex, filesystem etc) | - +-------------------------------------------------------+ - - And here are the libraries which are linked with the different versions (for vc9 = VS/2008) - Configuration: ReleaseDLL Win32 - libboost_regex-vc90-mt-1_37.lib - libboost_filesystem-vc90-mt-1_37.lib - libboost_system-vc90-mt-1_37.lib - libboost_program_options-vc90-mt-1_37.lib - - Configuration: DebugDLL Win32 - libboost_regex-vc90-mt-gd-1_37.lib - libboost_filesystem-vc90-mt-gd-1_37.lib - libboost_system-vc90-mt-gd-1_37.lib - libboost_program_options-vc90-mt-gd-1_37.lib - - Configuration: Release Win32 - libboost_regex-vc90-mt-s-1_37.lib - libboost_filesystem-vc90-mt-s-1_37.lib - libboost_system-vc90-mt-s-1_37.lib - libboost_program_options-vc90-mt-s-1_37.lib - - Configuration: Debug Win32 - libboost_regex-vc90-mt-sgd-1_37.lib - libboost_filesystem-vc90-mt-sgd-1_37.lib - libboost_system-vc90-mt-sgd-1_37.lib - libboost_program_options-vc90-mt-sgd-1_37.lib - - I've added an appendix to explain the boost library name conventions. - -OR (if you prefer to build from source) - build boost_1_37_0 from source - http://www.boost.org/ - unzip into c:\boost_1_37_0 - c:\boost_1_37_0\>bjam release - - I believe you can build everything with the command: - bjam --build-type=complete release && bjam --build-type=complete debug - - You can download bjam from here: - http://sourceforge.net/project/showfiles.php?group_id=7586&package_id=72941 - - +------------------------------------------------------+ - | I used the wonderful BoostPro Computing Wizard to | - | install prebuilt libraries - so I didn't build from | - | source. If you'd like to share your know-how about | - | this, please email me and I will updated these notes | - | and of course acknowledge your contribution | - +------------------------------------------------------+ - - The default source build does not build all the necessary targets. - The build machinery for boost is documented here: - http://www.boost.org/doc/libs/1_37_0/more/getting_started/windows.html - - I've added an appendix to explain the boost library name conventions. - -3) build dependances expat-2.0.1 and zlib-1.2.3 (see above) - - -4) Open exiv2+organize.sln in DevStudio - - +--------------------------------------------------------+ - | Set the environment string BOOST_ROOT=c:\boost_1_37_0 | - | (or where you put boost) | - +--------------------------------------------------------+ - - You'll have to set the environment string BEFORE you start DevStudio. - Environment strings are set in the process when it is started. - Or you could update the DevStudio search paths in Tools/Options. - -5) Batch Build/Batch Build... Select all/Build - - This time when you should see: - - ========== Build: 108 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== - - Congratulations. - -Where are the libraries and executables? ----------------------------------------- - -exiv2\msvc\bin\{Debug | DebugDLL | Release | ReleaseDLL } - -What's been built? ------------------- - -Static and dynamic version of exiv2, expat, zlib and the exiv2 sample programs -Debug and Release versions of all targets. - -The static libraries link with MT (MTd for Debug). -The objects are built to use the Static C runtime Libraries. - -DLL targets link dynamically -- exiv2.exe requires libexpat.dll, exiv2.dll and zlib1.dll (zlib1d.dll for debug) -- the objects use the dynamic c runtime dlls (MSVCR70.dll and friends) - -Linking Applications with the exiv2 libraries ---------------------------------------------- - -The following 'flavors' have been build: - -a) DLLs + MD build and work - -DebugDLL| ReleaseDLL = MD{d} : link exiv2{d}.lib, xmpsdk.lib, libexpat.lib and zlib1{d}.lib - Runtime DLLS : exiv2{d}.dll, libexpat.dll, zlib1{d}.dll and MSVC{R|P}{_0D.dll) - _ = 7 for VS2003, 8 for VS2005 and 9 for VS2008 - The MSVC*.dll's are on most machines and a free download from Microsoft - -b) Static + MT build and work - -Debug | Release = MT{d} : link exiv2s{d}.lib, libexpatMT.lib, zlib{d}.lib xmpsdk.lib - Runtime DLLs : none - -c) Static + MD will work (but not built) - -During the development of the build environment, this was working. -However it was dropped from the release because expat-2.0.1 does not support an MD build. - -When you choose to link your application with the exiv2 library, can choose any of the 3 configurations. Please use Google to find additional advice about which flavor is best for your needs. - -d) DLLs + MT WILL NOT FUNCTION even if you build it - -Do not build DLLs + MT. Exiv2.dll exports STL template objects which will crash when linked with the MT run-time. This is because Exiv2.dll is linked with it's own (static) c-runtime library. Exiv2.exe is linked with a different c-runtime library. The two cannot co-exist. - -This is not a bug. There is no workaround. - - -Bugs ----- - -Please consult the issue database: -http://dev.exiv2.org/projects/exiv2/issues - -Support and Questions ---------------------- - -Information/Documentation : http://www.exiv2.org/index.html -Discussion Forum : http://dev.exiv2.org/wiki/exiv2 -The MSVC build environment : Please contact me directly by email. - -Robin Mills -robin@clanmills.com -http://clanmills.com - -APPENDIX - -The following topics are documented for additional information about the status of the build. - -A) Build warning messages -B) Partial Build errors -C) Debugging exiv2 library code -D) Boost library name conventions - -A) Build warning messages -------------------------- - -The following warning and message are part of the build: - -1) exiv2.lib(xmlparse.obj) : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/INCREMENTAL:NO' specification - To eliminate this message, you will have to modify project settings in expat-2.0.1 and rebuild expat. - -2) zlib.lib(zutil.obj) : warning LNK4217: locally defined symbol _malloc imported in function _zcalloc - I believe this is coming from zlib which uses the local (MD) c-runtime library. - It's harmess (although frightening) - -B) Partial Build errors ------------------------ - -Andreas assures me that if you cannot build some targets, eg exifprint/ReleaseDLL on a clean VC71 machine. I havne't been able to reproduced this. Please drop me an email if you find any of those. I'm cross-eyed building different flavors of this on different version of DevStudio. - -C) Debugging exiv2 library code -------------------------------- - -You may wish to debug the exiv2 library code using one of the test utilities. Examples: exiv2.exe and exifprint.exe. You'll find this a little frustrating because the exiv2.sln file contains all the test programs. When you change the library code, DevStudio will relink all 20 test programs. To avoid this frustration, unload the project files which you are no using. For example, if you are debugging exiv2.exe, you only require the following projects to be loaded: - -xmpsdk -exiv2lib -exiv2 - -(when exiting DevStudio, say "No" when it asks you if you wish to save changes to exiv2.sln) - -D) Boost library name conventions - - The library naming convention is: - lib - Prefix: only ordinary static libraries use the lib prefix; import libraries and DLLs do not. - - boost_regex - Library name: all boost library filenames begin with boost_. - -vc71 - Toolset tag: identifies the toolset and version used to build the binary. - -mt - Threading tag: indicates that the library was built with multithreading support enabled. - Libraries built without multithreading support can be identified by the absence of -mt. - -d - ABI tag: encodes details that affect the library's interoperability with other compiled code. For each such feature, a single letter is added to the tag: - - Key Use this library when: - s linking statically to the C++ standard library and compiler runtime support libraries. - g using debug versions of the standard and runtime support libraries. - y using a special debug build of Python. - d building a debug version of your code. - p using the STLPort standard library rather than the default one supplied with your compiler. - n using STLPort's deprecated ìnative iostreamsî feature.8 - For example, if you build a debug version of your code for use with debug versions of the static runtime library and the STLPort standard library in ìnative iostreamsî mode, the tag would be: -sgdpn. If none of the above apply, the ABI tag is ommitted. - - -1_34 - Version tag: the full Boost release number, with periods replaced by underscores. For example, version 1.31.1 would be tagged as "-1_31_1". - .lib - Extension: determined according to the operating system's usual convention. On most unix-style platforms the extensions are .a and .so for static libraries (archives) and shared libraries, respectively. On Windows, .dll indicates a shared library and (except for static libraries built by the gcc toolset, whose names always end in .a) .lib indicates a static or import library. Where supported by toolsets on unix variants, a full version extension is added (e.g. ".so.1.34") and a symbolic link to the library file, named without the trailing version number, will also be created. - --- end -- diff --git a/platform/win32/msvc/external/exiv2/msvc/addmoddel/addmoddel.vcproj b/platform/win32/msvc/external/exiv2/msvc/addmoddel/addmoddel.vcproj deleted file mode 100644 index 07df10624dd..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/addmoddel/addmoddel.vcproj +++ /dev/null @@ -1,399 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/cleaner.bat b/platform/win32/msvc/external/exiv2/msvc/cleaner.bat deleted file mode 100644 index ccb29e11ab4..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/cleaner.bat +++ /dev/null @@ -1,106 +0,0 @@ -rmdir/s/q .\addmoddel\Debug -rmdir/s/q .\addmoddel\DebugDLL -rmdir/s/q .\addmoddel\Release -rmdir/s/q .\addmoddel\ReleaseDLL -rmdir/s/q .\organize\Debug -rmdir/s/q .\organize\DebugDLL -rmdir/s/q .\organize\Release -rmdir/s/q .\organize\ReleaseDLL -rmdir/s/q .\exifcomment\Debug -rmdir/s/q .\exifdata-test\Debug -rmdir/s/q .\exifprint\Debug -rmdir/s/q .\exiv2\Debug -rmdir/s/q .\exiv2lib\Debug -rmdir/s/q .\exivsimple\Debug -rmdir/s/q .\iotest\Debug -rmdir/s/q .\iptceasy\Debug -rmdir/s/q .\iptcprint\Debug -rmdir/s/q .\iptctest\Debug -rmdir/s/q .\largeiptc-test\Debug -rmdir/s/q .\metacopy\Debug -rmdir/s/q .\stringto-test\Debug -rmdir/s/q .\taglist\Debug -rmdir/s/q .\utiltest\Debug -rmdir/s/q .\write-test\Debug -rmdir/s/q .\write2-test\Debug -rmdir/s/q .\xmpparse\Debug -rmdir/s/q .\xmpparser-test\Debug -rmdir/s/q .\xmpsample\Debug -rmdir/s/q .\xmpsdk\Debug -rmdir/s/q .\exifcomment\DebugDLL -rmdir/s/q .\exifdata-test\DebugDLL -rmdir/s/q .\exifprint\DebugDLL -rmdir/s/q .\exiv2\DebugDLL -rmdir/s/q .\exiv2lib\DebugDLL -rmdir/s/q .\exivsimple\DebugDLL -rmdir/s/q .\iotest\DebugDLL -rmdir/s/q .\iptceasy\DebugDLL -rmdir/s/q .\iptcprint\DebugDLL -rmdir/s/q .\iptctest\DebugDLL -rmdir/s/q .\largeiptc-test\DebugDLL -rmdir/s/q .\metacopy\DebugDLL -rmdir/s/q .\stringto-test\DebugDLL -rmdir/s/q .\taglist\DebugDLL -rmdir/s/q .\utiltest\DebugDLL -rmdir/s/q .\write-test\DebugDLL -rmdir/s/q .\write2-test\DebugDLL -rmdir/s/q .\xmpparse\DebugDLL -rmdir/s/q .\xmpparser-test\DebugDLL -rmdir/s/q .\xmpsample\DebugDLL -rmdir/s/q .\xmpsdk\DebugDLL -rmdir/s/q .\exifcomment\Release -rmdir/s/q .\exifdata-test\Release -rmdir/s/q .\exifprint\Release -rmdir/s/q .\exiv2\Release -rmdir/s/q .\exiv2lib\Release -rmdir/s/q .\exivsimple\Release -rmdir/s/q .\iotest\Release -rmdir/s/q .\iptceasy\Release -rmdir/s/q .\iptcprint\Release -rmdir/s/q .\iptctest\Release -rmdir/s/q .\largeiptc-test\Release -rmdir/s/q .\metacopy\Release -rmdir/s/q .\stringto-test\Release -rmdir/s/q .\taglist\Release -rmdir/s/q .\utiltest\Release -rmdir/s/q .\write-test\Release -rmdir/s/q .\write2-test\Release -rmdir/s/q .\xmpparse\Release -rmdir/s/q .\xmpparser-test\Release -rmdir/s/q .\xmpsample\Release -rmdir/s/q .\xmpsdk\Release -rmdir/s/q .\exifcomment\ReleaseDLL -rmdir/s/q .\exifdata-test\ReleaseDLL -rmdir/s/q .\exifprint\ReleaseDLL -rmdir/s/q .\exiv2\ReleaseDLL -rmdir/s/q .\exiv2lib\ReleaseDLL -rmdir/s/q .\exivsimple\ReleaseDLL -rmdir/s/q .\iotest\ReleaseDLL -rmdir/s/q .\iptceasy\ReleaseDLL -rmdir/s/q .\iptcprint\ReleaseDLL -rmdir/s/q .\iptctest\ReleaseDLL -rmdir/s/q .\largeiptc-test\ReleaseDLL -rmdir/s/q .\metacopy\ReleaseDLL -rmdir/s/q .\stringto-test\ReleaseDLL -rmdir/s/q .\taglist\ReleaseDLL -rmdir/s/q .\utiltest\ReleaseDLL -rmdir/s/q .\write-test\ReleaseDLL -rmdir/s/q .\write2-test\ReleaseDLL -rmdir/s/q .\xmpparse\ReleaseDLL -rmdir/s/q .\xmpparser-test\ReleaseDLL -rmdir/s/q .\xmpsample\ReleaseDLL -rmdir/s/q .\xmpsdk\ReleaseDLL -rmdir/s/q .\prevtest\Release -rmdir/s/q .\prevtest\ReleaseDLL -rmdir/s/q .\prevtest\Debug -rmdir/s/q .\prevtest\DebugDLL -rmdir/s/q ..\..\expat-2.0.1\win32\bin\DebugDLL -rmdir/s/q ..\..\expat-2.0.1\win32\bin\ReleaseDLL - -rmdir/s/q .\bin -rmdir/s/q include -del/s *.user -del/s *.old -attrib -h exiv2.suo -del/s exiv2.suo -del/s exiv2.ncb diff --git a/platform/win32/msvc/external/exiv2/msvc/convert-test/convert-test.vcproj b/platform/win32/msvc/external/exiv2/msvc/convert-test/convert-test.vcproj deleted file mode 100644 index 7bfa9409ca8..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/convert-test/convert-test.vcproj +++ /dev/null @@ -1,399 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/d.bat b/platform/win32/msvc/external/exiv2/msvc/d.bat deleted file mode 100644 index bd554788306..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/d.bat +++ /dev/null @@ -1,3 +0,0 @@ -set L=..\src\%1% -set R=\temp\trunk\src\%1% -p4merge -dw %L% %R% diff --git a/platform/win32/msvc/external/exiv2/msvc/editor.bat b/platform/win32/msvc/external/exiv2/msvc/editor.bat deleted file mode 100644 index 45a52f2ef9c..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/editor.bat +++ /dev/null @@ -1,2 +0,0 @@ -find ..\ -name "*.vcproj" -exec ce {} ";" -find ..\ -name "*.sln" -exec ce {} ";" diff --git a/platform/win32/msvc/external/exiv2/msvc/exifcomment/exifcomment.vcproj b/platform/win32/msvc/external/exiv2/msvc/exifcomment/exifcomment.vcproj deleted file mode 100644 index a8de266ae55..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/exifcomment/exifcomment.vcproj +++ /dev/null @@ -1,397 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/exifdata-test/exifdata-test.vcproj b/platform/win32/msvc/external/exiv2/msvc/exifdata-test/exifdata-test.vcproj deleted file mode 100644 index b071513c8ca..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/exifdata-test/exifdata-test.vcproj +++ /dev/null @@ -1,380 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/exifprint/exifprint.vcproj b/platform/win32/msvc/external/exiv2/msvc/exifprint/exifprint.vcproj deleted file mode 100644 index d6f5113d4fa..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/exifprint/exifprint.vcproj +++ /dev/null @@ -1,396 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/exiv2/exiv2.vcproj b/platform/win32/msvc/external/exiv2/msvc/exiv2/exiv2.vcproj deleted file mode 100644 index 6c24c4046cb..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/exiv2/exiv2.vcproj +++ /dev/null @@ -1,441 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/exiv2lib/exiv2lib.vcproj b/platform/win32/msvc/external/exiv2/msvc/exiv2lib/exiv2lib.vcproj deleted file mode 100644 index aa85604ffaf..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/exiv2lib/exiv2lib.vcproj +++ /dev/null @@ -1,727 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/exivsimple/exivsimple.cpp b/platform/win32/msvc/external/exiv2/msvc/exivsimple/exivsimple.cpp deleted file mode 100644 index 5f9381c80ec..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/exivsimple/exivsimple.cpp +++ /dev/null @@ -1,439 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: exivsimple.cpp - Version: $Rev: 2681 $ - Author(s): Brad Schick - Christian Kuster - History: 12-Nov-04, brad: created - */ -// ***************************************************************************** - -#include "stdafx.h" -#include "exivsimple.h" -#include -#include -#include -#include -#include - -struct ImageWrapper -{ - Exiv2::Image::AutoPtr image; -}; - -// Returns NULL (0) handle if failed. -EXIVSIMPLE_API HIMAGE OpenFileImage(const char *file) -{ - assert(file); - - // See if file exists. Sorry for very bad error handling - if (INVALID_FILE_ATTRIBUTES == GetFileAttributes(file)) { - return 0; - } - - ImageWrapper *imgWrap = new ImageWrapper; - try { - imgWrap->image = Exiv2::ImageFactory::open(file); - } - catch(const Exiv2::AnyError&) { - delete imgWrap; - return 0; - } - if (imgWrap->image.get() == 0) { - delete imgWrap; - return 0; - } - // Load existing metadata - try { - imgWrap->image->readMetadata(); - } - catch(const Exiv2::AnyError&) { - delete imgWrap; - return 0; - } - - return (HIMAGE)imgWrap; -} - -EXIVSIMPLE_API HIMAGE OpenMemImage(const BYTE *data, unsigned int size) -{ - assert(data); - ImageWrapper *imgWrap = new ImageWrapper; - - try { - imgWrap->image = Exiv2::ImageFactory::open(data, size); - } - catch(const Exiv2::AnyError&) { - delete imgWrap; - return 0; - } - if (imgWrap->image.get() == 0) { - delete imgWrap; - return 0; - } - // Load existing metadata - try { - imgWrap->image->readMetadata(); - } - catch(const Exiv2::AnyError&) { - delete imgWrap; - return 0; - } - - return (HIMAGE)imgWrap; -} - -EXIVSIMPLE_API void FreeImage(HIMAGE img) -{ - if (img) { - ImageWrapper *imgWrap = (ImageWrapper*)img; - delete imgWrap; - } -} - -// Returns 0 on success -EXIVSIMPLE_API int SaveImage(HIMAGE img) -{ - assert(img); - ImageWrapper *imgWrap = (ImageWrapper*)img; - try { - imgWrap->image->writeMetadata(); - } - catch(const Exiv2::AnyError&) { - return 1; - } - return 0; -} - -// Note that if you have modified the metadata in any way and want the -// size of the image after these modifications, you must call SaveImage -// before calling ImageSize. -// Returns -1 on failure, otherwise the image size -EXIVSIMPLE_API int ImageSize(HIMAGE img) -{ - assert(img); - ImageWrapper *imgWrap = (ImageWrapper*)img; - return imgWrap->image->io().size(); -} - -// Note that if you have modified the metadata in any way and want the -// image data after these modifications, you must call SaveImage before -// calling ImageData. -// Returns number of bytes read, 0 if failure -EXIVSIMPLE_API int ImageData(HIMAGE img, BYTE *buffer, unsigned int size) -{ - assert(img); - int result = 0; - ImageWrapper *imgWrap = (ImageWrapper*)img; - Exiv2::BasicIo &io = imgWrap->image->io(); - if(io.open() == 0) { - result = imgWrap->image->io().read(buffer, size); - io.close(); - } - return result; -} - -EXIVSIMPLE_API void SetThumbnail(HIMAGE img, const BYTE *buffer, unsigned int size) -{ - ImageWrapper *imgWrap = (ImageWrapper*)img; - Exiv2::ExifData& exifData = imgWrap->image->exifData(); - Exiv2::ExifThumb exifThumb(exifData); - exifThumb.setJpegThumbnail(buffer, size); -} - -EXIVSIMPLE_API unsigned int GetThumbnail(HIMAGE img, BYTE *buffer, unsigned int size) -{ - ImageWrapper *imgWrap = (ImageWrapper*)img; - Exiv2::ExifData& exifData = imgWrap->image->exifData(); - Exiv2::ExifThumb exifThumb(exifData); - Exiv2::DataBuf buf = exifThumb.copy(); - if (buf.size_ == 0) { - return 0; - } - if (buf.size_ > (long)size) { - return unsigned int(-1); - } - memcpy(buffer, buf.pData_, buf.size_); - return buf.size_; -} - -// This is weird because iptc and exif have not been "unified". Once -// they are unified, this DLL should not have to know -// about either... just generic images, keys, values, etc. -// -// buffsize should be the total size of *buff (including space for null) -// Note that if there is more than one entry (for some IPTC datasets) this -// returns the first one found. Currently no way to get the others. -// Returns 0 on success -EXIVSIMPLE_API int ReadMeta(HIMAGE img, const char *key, char *buff, int buffsize) -{ - assert(img && key && buff); - if (img==0 || key==0 || buff==0 || buffsize==0) return -1; - ImageWrapper *imgWrap = (ImageWrapper*)img; - int rc = 2; - - Exiv2::IptcData &iptcData = imgWrap->image->iptcData(); - Exiv2::ExifData &exifData = imgWrap->image->exifData(); - - try { - // First try iptc - Exiv2::IptcKey iptcKey(key); - rc = 1; - Exiv2::IptcData::const_iterator iter = iptcData.findKey(iptcKey); - if (iter != iptcData.end()) { - strncpy(buff, iter->value().toString().c_str(), buffsize); - buff[buffsize-1] = 0; - rc = 0; - } - } - catch(const Exiv2::AnyError&) { - } - - if (rc) { - // No iptc value, so try exif - try { - Exiv2::ExifKey exifKey(key); - rc = 1; - Exiv2::ExifData::const_iterator iter = exifData.findKey(exifKey); - if (iter != exifData.end()) { - strncpy(buff, iter->value().toString().c_str(), buffsize); - buff[buffsize-1] = 0; - rc = 0; - } - } - catch(const Exiv2::AnyError&) { - } - } - - return rc; -} - -// Overwrites existing value if found, otherwise creates a new one. -// Passing invalidTypeId causes the type to be guessed. -// Guessing types is accurate for IPTC, but not for EXIF. -// Returns 0 on success -EXIVSIMPLE_API int ModifyMeta(HIMAGE img, const char *key, const char *val, DllTypeId type) -{ - assert(img && key && val); - if (img==0 || key==0 || val==0) return -1; - ImageWrapper *imgWrap = (ImageWrapper*)img; - int rc = 2; - - Exiv2::IptcData &iptcData = imgWrap->image->iptcData(); - Exiv2::ExifData &exifData = imgWrap->image->exifData(); - - std::string data(val); - // if data starts and ends with quotes, remove them - if (data.at(0) == '\"' && data.at(data.size()-1) == '\"') { - data = data.substr(1, data.size()-2); - } - - try { - Exiv2::IptcKey iptcKey(key); - rc = 1; - - if (type == invalidTypeId) - type = (DllTypeId)Exiv2::IptcDataSets::dataSetType(iptcKey.tag(), iptcKey.record()); - Exiv2::Value::AutoPtr value = Exiv2::Value::create((Exiv2::TypeId)type); - value->read(data); - - Exiv2::IptcData::iterator iter = iptcData.findKey(iptcKey); - if (iter != iptcData.end()) { - iter->setValue(value.get()); - rc = 0; - } - else { - rc = iptcData.add(iptcKey, value.get()); - } - } - catch(const Exiv2::AnyError&) { - } - - if (rc) { - // Failed with iptc, so try exif - try { - Exiv2::ExifKey exifKey(key); - rc = 1; - - // No way to get value type for exif... string is the most common - if (type == invalidTypeId) - type = asciiString; - Exiv2::Value::AutoPtr value = Exiv2::Value::create((Exiv2::TypeId)type); - value->read(data); - - Exiv2::ExifData::iterator iter = exifData.findKey(exifKey); - if (iter != exifData.end()) { - iter->setValue(value.get()); - rc = 0; - } - else { - exifData.add(exifKey, value.get()); - rc = 0; - } - } - catch(const Exiv2::AnyError&) { - } - } - - return rc; -} - -// Always creates a new metadata entry. -// Passing invalidTypeId causes the type to be guessed. -// Guessing types is accurate for IPTC, but not for EXIF. -// Returns 0 on success -EXIVSIMPLE_API int AddMeta(HIMAGE img, const char *key, const char *val, DllTypeId type) -{ - assert(img && key && val); - if (img==0 || key==0 || val==0) return -1; - ImageWrapper *imgWrap = (ImageWrapper*)img; - int rc = 2; - - Exiv2::IptcData &iptcData = imgWrap->image->iptcData(); - Exiv2::ExifData &exifData = imgWrap->image->exifData(); - - std::string data(val); - // if data starts and ends with quotes, remove them - if (data.at(0) == '\"' && data.at(data.size()-1) == '\"') { - data = data.substr(1, data.size()-2); - } - - try { - Exiv2::IptcKey iptcKey(key); - rc = 1; - - if (type == invalidTypeId) - type = (DllTypeId)Exiv2::IptcDataSets::dataSetType(iptcKey.tag(), iptcKey.record()); - Exiv2::Value::AutoPtr value = Exiv2::Value::create((Exiv2::TypeId)type); - value->read(data); - - rc = iptcData.add(iptcKey, value.get()); - } - catch(const Exiv2::AnyError&) { - } - - if (rc) { - // Failed with iptc, so try exif - try { - Exiv2::ExifKey exifKey(key); - rc = 1; - - // No way to get value type for exif... string is the most common - if (type == invalidTypeId) - type = asciiString; - Exiv2::Value::AutoPtr value = Exiv2::Value::create((Exiv2::TypeId)type); - value->read(data); - - exifData.add(exifKey, value.get()); - rc = 0; - } - catch(const Exiv2::AnyError&) { - } - } - - return rc; -} - -// If multiple entires exist, this only remove the first one -// found. Call multiple times to remove many. -// Returns 0 on success -EXIVSIMPLE_API int RemoveMeta(HIMAGE img, const char *key) -{ - assert(img && key); - if (img==0 || key==0) return -1; - ImageWrapper *imgWrap = (ImageWrapper*)img; - int rc = 2; - - Exiv2::IptcData &iptcData = imgWrap->image->iptcData(); - Exiv2::ExifData &exifData = imgWrap->image->exifData(); - - try { - Exiv2::IptcKey iptcKey(key); - rc = 1; - Exiv2::IptcData::iterator iter = iptcData.findKey(iptcKey); - if (iter != iptcData.end()) { - iptcData.erase(iter); - rc = 0; - } - } - catch(const Exiv2::AnyError&) { - } - - if (rc) { - // No iptc value, so try exif - try { - Exiv2::ExifKey exifKey(key); - rc = 1; - Exiv2::ExifData::iterator iter = exifData.findKey(exifKey); - if (iter != exifData.end()) { - exifData.erase(iter); - rc = 0; - } - } - catch(const Exiv2::AnyError&) { - } - } - - return rc; -} - -EXIVSIMPLE_API int EnumMeta(HIMAGE img, METAENUMPROC proc, void *user) -{ - assert(img && proc); - if (img==0 || proc==0) return -1; - ImageWrapper *imgWrap = (ImageWrapper*)img; - bool more = true; - - Exiv2::IptcData &iptcData = imgWrap->image->iptcData(); - Exiv2::ExifData &exifData = imgWrap->image->exifData(); - - Exiv2::IptcData::const_iterator iend = iptcData.end(); - for (Exiv2::IptcData::const_iterator i = iptcData.begin(); - i != iend && more; ++i) { - more = proc(i->key().c_str(), i->value().toString().c_str(), user); - } - - Exiv2::ExifData::const_iterator eend = exifData.end(); - for (Exiv2::ExifData::const_iterator e = exifData.begin(); - e != eend && more; ++e) { - more = proc(e->key().c_str(), e->value().toString().c_str(), user); - } - - return 0; -} - - -BOOL APIENTRY DllMain( HANDLE hModule, - DWORD ul_reason_for_call, - LPVOID lpReserved - ) -{ - switch (ul_reason_for_call) { - case DLL_PROCESS_ATTACH: - case DLL_THREAD_ATTACH: - case DLL_THREAD_DETACH: - case DLL_PROCESS_DETACH: - break; - } - return TRUE; -} - diff --git a/platform/win32/msvc/external/exiv2/msvc/exivsimple/exivsimple.h b/platform/win32/msvc/external/exiv2/msvc/exivsimple/exivsimple.h deleted file mode 100644 index 57b634234bc..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/exivsimple/exivsimple.h +++ /dev/null @@ -1,98 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2007 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file exivsimple.h - @brief Limited metadata dll for win32 - @version $Rev: 1703 $ - @author Brad Schick (brad) - brad@robotbattle.com - Christian Kuster (kusti) - christian@kusti.ch - @date 12-Nov-04, brad: created - */ -#ifndef EXIVSIMPLE_H_ -#define EXIVSIMPLE_H_ - -// ***************************************************************************** - - -#ifdef EXIVSIMPLE_EXPORTS -#define EXIVSIMPLE_API __declspec(dllexport) -#else -#define EXIVSIMPLE_API __declspec(dllimport) -#endif - -DECLARE_HANDLE (HIMAGE); - -#ifdef __cplusplus -extern "C" -{ -#endif - -// These types should match those in types.hpp. Copied here so that -// exiv2 headers are not needed. -// For all of the functions -// that take a type, passing invalidTypeId causes the type to be guessed. -// Guessing types is accurate for IPTC but not for EXIF. -enum DllTypeId { invalidTypeId, unsignedByte, asciiString, unsignedShort, - unsignedLong, unsignedRational, invalid6, undefined, - signedShort, signedLong, signedRational, - string, isoDate, isoTime, - lastTypeId }; - -typedef bool (CALLBACK* METAENUMPROC)(const char *key, const char *value, void *user); - -EXIVSIMPLE_API HIMAGE OpenFileImage(const char *file); -EXIVSIMPLE_API HIMAGE OpenMemImage(const BYTE *data, unsigned int size); -EXIVSIMPLE_API void FreeImage(HIMAGE img); -EXIVSIMPLE_API int SaveImage(HIMAGE img); -EXIVSIMPLE_API int ImageSize(HIMAGE img); -EXIVSIMPLE_API int ImageData(HIMAGE img, BYTE *buffer, unsigned int size); -EXIVSIMPLE_API int ReadMeta(HIMAGE img, const char *key, char *buff, int buffsize); -EXIVSIMPLE_API int EnumMeta(HIMAGE img, METAENUMPROC proc, void *user); -EXIVSIMPLE_API int AddMeta(HIMAGE img, const char *key, const char *val, DllTypeId type); -EXIVSIMPLE_API int ModifyMeta(HIMAGE img, const char *key, const char *val, DllTypeId type); -EXIVSIMPLE_API int RemoveMeta(HIMAGE img, const char *key); -/*! - @brief Set the Thumbnail - - @param img Handle to the image - @param buffer Pointer to the Thumbnail data (JPEG) - @param size Size of the thumbnail in bytes -*/ -EXIVSIMPLE_API void SetThumbnail(HIMAGE img, const BYTE *buffer, unsigned int size); -/*! - @brief Get the Thumbnail - - @param img Handle to the image - @param buffer Pointer where the thumbnaildata is written to (large enough!) - @param size Size of buffer - - @return size of the thumbnail, 0 if failed to read the thumbnail, - (unsigned int)-1 if buffer is too small. -*/ -EXIVSIMPLE_API unsigned int GetThumbnail(HIMAGE img, BYTE *buffer, unsigned int size); - -#ifdef __cplusplus -} -#endif - -#endif // #ifndef EXIVSIMPLE_H_ diff --git a/platform/win32/msvc/external/exiv2/msvc/exivsimple/exivsimple.vcproj b/platform/win32/msvc/external/exiv2/msvc/exivsimple/exivsimple.vcproj deleted file mode 100644 index 168cee7a1fa..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/exivsimple/exivsimple.vcproj +++ /dev/null @@ -1,445 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/exivsimple/stdafx.cpp b/platform/win32/msvc/external/exiv2/msvc/exivsimple/stdafx.cpp deleted file mode 100644 index cd9265a3702..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/exivsimple/stdafx.cpp +++ /dev/null @@ -1,29 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2007 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: stdafx.cpp - Version: $Rev: 1703 $ - Author(s): Brad Schick - History: 12-Nov-04, brad: created - */ -// ***************************************************************************** - -#include "stdafx.h" diff --git a/platform/win32/msvc/external/exiv2/msvc/exivsimple/stdafx.h b/platform/win32/msvc/external/exiv2/msvc/exivsimple/stdafx.h deleted file mode 100644 index c0489d6a7f4..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/exivsimple/stdafx.h +++ /dev/null @@ -1,34 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2007 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file stdafx.h - @brief Precompiled header file support - @version $Rev: 1703 $ - @author Brad Schick (brad) - brad@robotbattle.com - @date 12-Nov-04, brad: created - */ -// ***************************************************************************** - -#pragma once - -#define WIN32_LEAN_AND_MEAN -#include diff --git a/platform/win32/msvc/external/exiv2/msvc/include/exv_msvc.h b/platform/win32/msvc/external/exiv2/msvc/include/exv_msvc.h deleted file mode 100644 index f043f4470a4..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/include/exv_msvc.h +++ /dev/null @@ -1,124 +0,0 @@ -/* ***************************************************************** -*- C -*- */ -/*! - @file exv_msvc.h - @brief Configuration settings for MSVC - @version $Rev: 2685 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 07-Feb-04, ahu: created - 26-Feb-05, ahu: renamed and moved to src directory - */ - -/* Todo: The PACKAGE_* defines should be generated */ - -#ifdef _MSC_VER - -#if _MSC_VER >= 1600 -// stdint.h was introduced with DevStudio 2010 -#define EXV_HAVE_STDINT_H 1 -#endif - -/* Define to 1 if you have the header file. */ -#define EXV_HAVE_PROCESS_H 1 - -/* Define to the address where bug reports for this package should be sent. */ -#define EXV_PACKAGE_BUGREPORT "ahuggel@gmx.net" - -/* Define to the full name of this package. */ -#define EXV_PACKAGE_NAME "exiv2" - -/* Define to the full name and version of this package. */ -#define EXV_PACKAGE_STRING "exiv2 0.23" - -/* Define to the one symbol short name of this package. */ -#define EXV_PACKAGE_TARNAME "exiv2" - -/* Define to the version of this package. */ -#define EXV_PACKAGE_VERSION "0.23" - -/* Define to `int' if does not define pid_t. */ -typedef int pid_t; - -#ifndef EXV_COMMERCIAL_VERSION - -/* Define to 1 to enable translation of Nikon lens names. */ -# define EXV_HAVE_LENSDATA 1 - -/* Define to 1 if translation of program messages to the user's - native language is requested. */ -# undef EXV_ENABLE_NLS - -#endif /* !EXV_COMMERCIAL_VERSION */ - -/* Define to 1 if you have the `iconv' function. */ -# undef EXV_HAVE_ICONV - -/* Define as 1 if you have the `zlib' library. (0 to omit zlib) [png support] */ -#define HAVE_LIBZ 1 - -#if HAVE_LIBZ - #define EXV_HAVE_LIBZ - // assist VC7.1 to compile vsnprintf - #if (_MSC_VER < 1400) && !defined(vsnprintf) - #define vsnprintf _vsnprintf - #endif -#endif - -/* Define to 1 if you have the Adobe XMP Toolkit. */ -#define EXV_HAVE_XMP_TOOLKIT 1 - -/* File path seperator */ -#define EXV_SEPERATOR_STR "\\" -#define EXV_SEPERATOR_CHR '\\' - -/* Windows unicode path support */ -#define EXV_UNICODE_PATH - -/* Define to 1 if you have the `mmap' function. */ -/* #undef EXV_HAVE_MMAP */ - -/* Define to 1 if you have the `munmap' function. */ -/* #undef EXV_HAVE_MUNMAP */ - -/* Shared library support */ -#ifdef EXV_HAVE_DLL -#define EXV_IMPORT __declspec(dllimport) -#define EXV_EXPORT __declspec(dllexport) -#define EXV_DLLLOCAL -#define EXV_DLLPUBLIC -#else -#define EXV_IMPORT -#define EXV_EXPORT -#define EXV_DLLLOCAL -#define EXV_DLLPUBLIC -#define EXIV2API -#endif - -/* Define EXIV2API for DLL builds */ -#ifdef EXV_HAVE_DLL -# ifdef EXV_BUILDING_LIB -# define EXIV2API EXV_EXPORT -# else -# define EXIV2API EXV_IMPORT -# endif /* ! EXV_BUILDING_LIB */ -#else -# define EXIV2API -#endif /* ! EXV_HAVE_DLL */ - - -/* - Disable warning 4251. This is warning from std templates about exporting interfaces -*/ -#ifdef EXV_HAVE_DLL -#pragma warning( disable : 4251 ) -#endif -/* - Visual Studio C++ 2005 (8.0) - Disable warnings about 'deprecated' standard functions - See, eg. http://www.informit.com/guides/content.asp?g=cplusplus&seqNum=259 -*/ -#if _MSC_VER >= 1400 -# pragma warning(disable : 4996) -#endif - -#endif /* _MSC_VER */ diff --git a/platform/win32/msvc/external/exiv2/msvc/iotest/iotest.vcproj b/platform/win32/msvc/external/exiv2/msvc/iotest/iotest.vcproj deleted file mode 100644 index 49d64d312f1..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/iotest/iotest.vcproj +++ /dev/null @@ -1,391 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/iptceasy/iptceasy.vcproj b/platform/win32/msvc/external/exiv2/msvc/iptceasy/iptceasy.vcproj deleted file mode 100644 index 51c5f721f01..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/iptceasy/iptceasy.vcproj +++ /dev/null @@ -1,391 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/iptcprint/iptcprint.vcproj b/platform/win32/msvc/external/exiv2/msvc/iptcprint/iptcprint.vcproj deleted file mode 100644 index 885bc4bd4f4..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/iptcprint/iptcprint.vcproj +++ /dev/null @@ -1,391 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/iptctest/iptctest.vcproj b/platform/win32/msvc/external/exiv2/msvc/iptctest/iptctest.vcproj deleted file mode 100644 index 52311ce25d7..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/iptctest/iptctest.vcproj +++ /dev/null @@ -1,396 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/largeiptc-test/largeiptc-test.vcproj b/platform/win32/msvc/external/exiv2/msvc/largeiptc-test/largeiptc-test.vcproj deleted file mode 100644 index a71283943bf..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/largeiptc-test/largeiptc-test.vcproj +++ /dev/null @@ -1,391 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/metacopy/metacopy.vcproj b/platform/win32/msvc/external/exiv2/msvc/metacopy/metacopy.vcproj deleted file mode 100644 index 50a0cf88e4b..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/metacopy/metacopy.vcproj +++ /dev/null @@ -1,415 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/mmap-test/mmap-test.vcproj b/platform/win32/msvc/external/exiv2/msvc/mmap-test/mmap-test.vcproj deleted file mode 100644 index cedb9f91e4c..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/mmap-test/mmap-test.vcproj +++ /dev/null @@ -1,399 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/organize/organize.vcproj b/platform/win32/msvc/external/exiv2/msvc/organize/organize.vcproj deleted file mode 100644 index 60efe6861a5..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/organize/organize.vcproj +++ /dev/null @@ -1,408 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/prevtest/prevtest.vcproj b/platform/win32/msvc/external/exiv2/msvc/prevtest/prevtest.vcproj deleted file mode 100644 index bca2f589fc6..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/prevtest/prevtest.vcproj +++ /dev/null @@ -1,407 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/runner.bat b/platform/win32/msvc/external/exiv2/msvc/runner.bat deleted file mode 100644 index 4e62af2a64e..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/runner.bat +++ /dev/null @@ -1,332 +0,0 @@ -@echo off - -rem --------------------------------- -rem ---- run everything in the bin -bin\Debug\addmoddel.exe -bin\Debug\convert-test.exe -bin\Debug\exifcomment.exe -bin\Debug\exifdata-test.exe -bin\Debug\exifprint.exe -bin\Debug\exiv2.exe -bin\Debug\iotest.exe -bin\Debug\iptceasy.exe -bin\Debug\iptcprint.exe -bin\Debug\iptctest.exe -bin\Debug\largeiptc-test.exe -bin\Debug\metacopy.exe -bin\Debug\mmap-test.exe -bin\Debug\prevtest.exe -bin\Debug\stringto-test.exe -bin\Debug\taglist.exe -bin\Debug\tiff-test.exe -bin\Debug\utiltest.exe -bin\Debug\write-test.exe -bin\Debug\write2-test.exe -bin\Debug\xmpparse.exe -bin\Debug\xmpparser-test.exe -bin\Debug\xmpsample.exe -bin\DebugDLL\addmoddel.exe -bin\DebugDLL\convert-test.exe -bin\DebugDLL\exifcomment.exe -bin\DebugDLL\exifdata-test.exe -bin\DebugDLL\exifprint.exe -bin\DebugDLL\exiv2.exe -bin\DebugDLL\iotest.exe -bin\DebugDLL\iptceasy.exe -bin\DebugDLL\iptcprint.exe -bin\DebugDLL\iptctest.exe -bin\DebugDLL\largeiptc-test.exe -bin\DebugDLL\metacopy.exe -bin\DebugDLL\mmap-test.exe -bin\DebugDLL\prevtest.exe -bin\DebugDLL\stringto-test.exe -bin\DebugDLL\taglist.exe -bin\DebugDLL\tiff-test.exe -bin\DebugDLL\utiltest.exe -bin\DebugDLL\write-test.exe -bin\DebugDLL\write2-test.exe -bin\DebugDLL\xmpparse.exe -bin\DebugDLL\xmpparser-test.exe -bin\DebugDLL\xmpsample.exe -bin\Release\addmoddel.exe -bin\Release\convert-test.exe -bin\Release\exifcomment.exe -bin\Release\exifdata-test.exe -bin\Release\exifprint.exe -bin\Release\exiv2.exe -bin\Release\iotest.exe -bin\Release\iptceasy.exe -bin\Release\iptcprint.exe -bin\Release\iptctest.exe -bin\Release\largeiptc-test.exe -bin\Release\metacopy.exe -bin\Release\mmap-test.exe -bin\Release\prevtest.exe -bin\Release\stringto-test.exe -bin\Release\taglist.exe -bin\Release\tiff-test.exe -bin\Release\utiltest.exe -bin\Release\write-test.exe -bin\Release\write2-test.exe -bin\Release\xmpparse.exe -bin\Release\xmpparser-test.exe -bin\Release\xmpsample.exe -bin\ReleaseDLL\addmoddel.exe -bin\ReleaseDLL\convert-test.exe -bin\ReleaseDLL\exifcomment.exe -bin\ReleaseDLL\exifdata-test.exe -bin\ReleaseDLL\exifprint.exe -bin\ReleaseDLL\exiv2.exe -bin\ReleaseDLL\iotest.exe -bin\ReleaseDLL\iptceasy.exe -bin\ReleaseDLL\iptcprint.exe -bin\ReleaseDLL\iptctest.exe -bin\ReleaseDLL\largeiptc-test.exe -bin\ReleaseDLL\metacopy.exe -bin\ReleaseDLL\mmap-test.exe -bin\ReleaseDLL\prevtest.exe -bin\ReleaseDLL\stringto-test.exe -bin\ReleaseDLL\taglist.exe -bin\ReleaseDLL\tiff-test.exe -bin\ReleaseDLL\utiltest.exe -bin\ReleaseDLL\write-test.exe -bin\ReleaseDLL\write2-test.exe -bin\ReleaseDLL\xmpparse.exe -bin\ReleaseDLL\xmpparser-test.exe -bin\ReleaseDLL\xmpsample.exe - -rem --------------------------------- -rem ---- run everything in the build directories -addmoddel\Debug\addmoddel.exe -addmoddel\DebugDLL\addmoddel.exe -addmoddel\Release\addmoddel.exe -addmoddel\ReleaseDLL\addmoddel.exe -convert-test\Debug\convert-test.exe -convert-test\DebugDLL\convert-test.exe -convert-test\Release\convert-test.exe -convert-test\ReleaseDLL\convert-test.exe -exifcomment\Debug\exifcomment.exe -exifcomment\DebugDLL\exifcomment.exe -exifcomment\Release\exifcomment.exe -exifcomment\ReleaseDLL\exifcomment.exe -tiff-test\Debug\tiff-test.exe -tiff-test\DebugDLL\tiff-test.exe -tiff-test\Release\tiff-test.exe -tiff-test\ReleaseDLL\tiff-test.exe -exifdata-test\Debug\exifdata-test.exe -exifdata-test\DebugDLL\exifdata-test.exe -exifdata-test\Release\exifdata-test.exe -exifdata-test\ReleaseDLL\exifdata-test.exe -exifprint\Debug\exifprint.exe -exifprint\DebugDLL\exifprint.exe -exifprint\Release\exifprint.exe -exifprint\ReleaseDLL\exifprint.exe -exiv2\Debug\exiv2.exe -exiv2\DebugDLL\exiv2.exe -exiv2\Release\exiv2.exe -exiv2\ReleaseDLL\exiv2.exe -iotest\Debug\iotest.exe -iotest\DebugDLL\iotest.exe -iotest\Release\iotest.exe -iotest\ReleaseDLL\iotest.exe -iptceasy\Debug\iptceasy.exe -iptceasy\DebugDLL\iptceasy.exe -iptceasy\Release\iptceasy.exe -iptceasy\ReleaseDLL\iptceasy.exe -iptcprint\Debug\iptcprint.exe -iptcprint\DebugDLL\iptcprint.exe -iptcprint\Release\iptcprint.exe -iptcprint\ReleaseDLL\iptcprint.exe -iptctest\Debug\iptctest.exe -iptctest\DebugDLL\iptctest.exe -iptctest\Release\iptctest.exe -iptctest\ReleaseDLL\iptctest.exe -largeiptc-test\Debug\largeiptc-test.exe -largeiptc-test\DebugDLL\largeiptc-test.exe -largeiptc-test\Release\largeiptc-test.exe -largeiptc-test\ReleaseDLL\largeiptc-test.exe -metacopy\Debug\metacopy.exe -metacopy\DebugDLL\metacopy.exe -metacopy\Release\metacopy.exe -mmap-test\ReleaseDLL\mmap-test.exe -mmap-test\Debug\mmap-test.exe -mmap-test\DebugDLL\mmap-test.exe -mmap-test\Release\mmap-test.exe -metacopy\ReleaseDLL\metacopy.exe -prevtest\Debug\prevtest.exe -prevtest\DebugDLL\prevtest.exe -prevtest\Release\prevtest.exe -prevtest\ReleaseDLL\prevtest.exe -stringto-test\Debug\stringto-test.exe -stringto-test\DebugDLL\stringto-test.exe -stringto-test\Release\stringto-test.exe -stringto-test\ReleaseDLL\stringto-test.exe -taglist\Debug\taglist.exe -taglist\DebugDLL\taglist.exe -taglist\Release\taglist.exe -taglist\ReleaseDLL\taglist.exe -tiff-test\Debug\tiff-test.exe -tiff-test\DebugDLL\tiff-test.exe -tiff-test\Release\tiff-test.exe -tiff-test\ReleaseDLL\tiff-test.exe -utiltest\Debug\utiltest.exe -utiltest\DebugDLL\utiltest.exe -utiltest\Release\utiltest.exe -utiltest\ReleaseDLL\utiltest.exe -write-test\Debug\write-test.exe -write-test\DebugDLL\write-test.exe -write-test\Release\write-test.exe -write-test\ReleaseDLL\write-test.exe -write2-test\Debug\write2-test.exe -write2-test\DebugDLL\write2-test.exe -write2-test\Release\write2-test.exe -write2-test\ReleaseDLL\write2-test.exe -xmpparse\Debug\xmpparse.exe -xmpparse\DebugDLL\xmpparse.exe -xmpparse\Release\xmpparse.exe -xmpparse\ReleaseDLL\xmpparse.exe -xmpparser-test\Debug\xmpparser-test.exe -xmpparser-test\DebugDLL\xmpparser-test.exe -xmpparser-test\Release\xmpparser-test.exe -xmpparser-test\ReleaseDLL\xmpparser-test.exe -xmpsample\Debug\xmpsample.exe -xmpsample\DebugDLL\xmpsample.exe -xmpsample\Release\xmpsample.exe -xmpsample\ReleaseDLL\xmpsample.exe - -rem --------------------------------- -rem ------- exiv2.exe on a file ---- -bin\Debug\exiv2.exe -pt test.jpg -bin\Debug\exiv2.exe test.png -bin\Debug\exiv2.exe test.tiff -bin\DebugDLL\exiv2.exe -pt test.jpg -bin\DebugDLL\exiv2.exe test.png -bin\DebugDLL\exiv2.exe test.tiff -bin\Release\exiv2.exe -pt test.jpg -bin\Release\exiv2.exe test.png -bin\Release\exiv2.exe test.tiff -bin\ReleaseDLL\exiv2.exe -pt test.jpg -bin\ReleaseDLL\exiv2.exe test.png -bin\ReleaseDLL\exiv2.exe test.tiff - -rem --------------------------------- -rem ------- mmap-test on a file ---- -bin\Debug\mmap-test.exe test.tiff -bin\DebugDLL\mmap-test.exe test.tiff -bin\Release\mmap-test.exe test.tiff -bin\ReleaseDLL\mmap-test.exe test.tiff - -rem --------------------------------- -rem Check the DLL dependencies -cd bin\Debug -echo -------Debug--------------- -..\..\depends2.exe addmoddel.exe | sort -..\..\depends2.exe convert-test.exe | sort -..\..\depends2.exe exifcomment.exe | sort -..\..\depends2.exe exifdata-test.exe | sort -..\..\depends2.exe exifprint.exe | sort -..\..\depends2.exe exiv2.exe | sort -..\..\depends2.exe exivsimple.dll | sort -..\..\depends2.exe iotest.exe | sort -..\..\depends2.exe iptceasy.exe | sort -..\..\depends2.exe iptcprint.exe | sort -..\..\depends2.exe iptctest.exe | sort -..\..\depends2.exe largeiptc-test.exe | sort -..\..\depends2.exe metacopy.exe | sort -..\..\depends2.exe mmap-test.exe | sort -..\..\depends2.exe prevtest.exe | sort -..\..\depends2.exe stringto-test.exe | sort -..\..\depends2.exe taglist.exe | sort -..\..\depends2.exe tiff-test.exe | sort -..\..\depends2.exe utiltest.exe | sort -..\..\depends2.exe write-test.exe | sort -..\..\depends2.exe write2-test.exe | sort -..\..\depends2.exe xmpparse.exe | sort -..\..\depends2.exe xmpparser-test.exe | sort -..\..\depends2.exe xmpsample.exe | sort - -cd ..\DebugDLL - -echo -------DebugDLL--------------- -..\..\depends2.exe addmoddel.exe | sort -..\..\depends2.exe convert-test.exe | sort -..\..\depends2.exe exifcomment.exe | sort -..\..\depends2.exe exifdata-test.exe | sort -..\..\depends2.exe exifprint.exe | sort -..\..\depends2.exe exiv2.exe | sort -..\..\depends2.exe exivsimple.dll | sort -..\..\depends2.exe iotest.exe | sort -..\..\depends2.exe iptceasy.exe | sort -..\..\depends2.exe iptcprint.exe | sort -..\..\depends2.exe iptctest.exe | sort -..\..\depends2.exe largeiptc-test.exe | sort -..\..\depends2.exe metacopy.exe | sort -..\..\depends2.exe mmap-test.exe | sort -..\..\depends2.exe prevtest.exe | sort -..\..\depends2.exe stringto-test.exe | sort -..\..\depends2.exe taglist.exe | sort -..\..\depends2.exe tiff-test.exe | sort -..\..\depends2.exe utiltest.exe | sort -..\..\depends2.exe write-test.exe | sort -..\..\depends2.exe write2-test.exe | sort -..\..\depends2.exe xmpparse.exe | sort -..\..\depends2.exe xmpparser-test.exe | sort -..\..\depends2.exe xmpsample.exe | sort - -cd ..\Release - -echo -------Release--------------- -..\..\depends2.exe addmoddel.exe | sort -..\..\depends2.exe convert-test.exe | sort -..\..\depends2.exe exifcomment.exe | sort -..\..\depends2.exe exifdata-test.exe | sort -..\..\depends2.exe exifprint.exe | sort -..\..\depends2.exe exiv2.exe | sort -..\..\depends2.exe exivsimple.dll | sort -..\..\depends2.exe iotest.exe | sort -..\..\depends2.exe iptceasy.exe | sort -..\..\depends2.exe iptcprint.exe | sort -..\..\depends2.exe iptctest.exe | sort -..\..\depends2.exe largeiptc-test.exe | sort -..\..\depends2.exe metacopy.exe | sort -..\..\depends2.exe mmap-test.exe | sort -..\..\depends2.exe prevtest.exe | sort -..\..\depends2.exe stringto-test.exe | sort -..\..\depends2.exe taglist.exe | sort -..\..\depends2.exe tiff-test.exe | sort -..\..\depends2.exe utiltest.exe | sort -..\..\depends2.exe write-test.exe | sort -..\..\depends2.exe write2-test.exe | sort -..\..\depends2.exe xmpparse.exe | sort -..\..\depends2.exe xmpparser-test.exe | sort -..\..\depends2.exe xmpsample.exe | sort - -cd ..\ReleaseDLL - -echo -------ReleaseDLL--------------- -..\..\depends2.exe addmoddel.exe | sort -..\..\depends2.exe convert-test.exe | sort -..\..\depends2.exe exifcomment.exe | sort -..\..\depends2.exe exifdata-test.exe | sort -..\..\depends2.exe exifprint.exe | sort -..\..\depends2.exe exiv2.exe | sort -..\..\depends2.exe exivsimple.dll | sort -..\..\depends2.exe iotest.exe | sort -..\..\depends2.exe iptceasy.exe | sort -..\..\depends2.exe iptcprint.exe | sort -..\..\depends2.exe iptctest.exe | sort -..\..\depends2.exe largeiptc-test.exe | sort -..\..\depends2.exe metacopy.exe | sort -..\..\depends2.exe mmap-test.exe | sort -..\..\depends2.exe prevtest.exe | sort -..\..\depends2.exe stringto-test.exe | sort -..\..\depends2.exe taglist.exe | sort -..\..\depends2.exe tiff-test.exe | sort -..\..\depends2.exe utiltest.exe | sort -..\..\depends2.exe write-test.exe | sort -..\..\depends2.exe write2-test.exe | sort -..\..\depends2.exe xmpparse.exe | sort -..\..\depends2.exe xmpparser-test.exe | sort -..\..\depends2.exe xmpsample.exe | sort - -cd ..\.. diff --git a/platform/win32/msvc/external/exiv2/msvc/runner.txt b/platform/win32/msvc/external/exiv2/msvc/runner.txt deleted file mode 100644 index 44cdd91f3e2..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/runner.txt +++ /dev/null @@ -1,4818 +0,0 @@ -Usage: bin\Debug\addmoddel.exe file -Usage: bin\Debug\convert-test.exe file -Usage: bin\Debug\exifcomment.exe file -Usage: bin\Debug\exifdata-test.exe file -Usage: bin\Debug\exifprint.exe file -Usage: exiv2.exe [ options ] [ action ] file ... - -Manipulate the Exif metadata of images. -Usage: bin\Debug\iotest.exe filein fileout1 fileout2 -fileouts are overwritten and should match filein exactly -Usage: bin\Debug\iptceasy.exe file -Usage: bin\Debug\iptcprint.exe file -Usage: bin\Debug\iptctest.exe image -Commands read from stdin. -Usage: bin\Debug\largeiptc-test.exe image datafile - -Reads and writes raw metadata. Use -h option for help. -Usage: metacopy.exe [-iecaph] readfile writefile -Usage: bin\Debug\mmap-test.exe file -Usage: bin\Debug\prevtest.exe file -string long float Rational -True 1 1 1/1 -False 0 0 0/1 -t 1 1 1/1 -f 0 0 0/1 --1 -1 -1 -1/1 -0 0 0 0/1 -1 1 1 1/1 -0.0 0 0 0/1 -0.1 0 0.1 1/10 -0.01 0 0.01 1/100 -0.001 0 0.001 1/1000 --1.49999 -1 -1.49999 -149999/100000 --1.5 -1 -1.5 -3/2 -1.49999 1 1.49999 149999/100000 -1.5 1 1.5 3/2 -0/1 0 0 0/1 -1/1 1 1 1/1 -1/3 0 0.333333 1/3 --1/3 0 -0.333333 -1/3 -4/3 1 1.33333 4/3 --4/3 -1 -1.33333 -4/3 -0/0 nok nok 0/0 -text nok nok nok -ProcessingSoftware, 11, 0x000b, Image, Exif.Image.ProcessingSoftware, Ascii, The name and version of the software used to post-process the picture. -NewSubfileType, 254, 0x00fe, Image, Exif.Image.NewSubfileType, Long, A general indication of the kind of data contained in this subfile. -SubfileType, 255, 0x00ff, Image, Exif.Image.SubfileType, Short, A general indication of the kind of data contained in this subfile. This field is deprecated. The NewSubfileType field should be used instead. -ImageWidth, 256, 0x0100, Image, Exif.Image.ImageWidth, Long, The number of columns of image data, equal to the number of pixels per row. In JPEG compressed data a JPEG marker is used instead of this tag. -ImageLength, 257, 0x0101, Image, Exif.Image.ImageLength, Long, The number of rows of image data. In JPEG compressed data a JPEG marker is used instead of this tag. -BitsPerSample, 258, 0x0102, Image, Exif.Image.BitsPerSample, Short, The number of bits per image component. In this standard each component of the image is 8 bits, so the value for this tag is 8. See also . In JPEG compressed data a JPEG marker is used instead of this tag. -Compression, 259, 0x0103, Image, Exif.Image.Compression, Short, The compression scheme used for the image data. When a primary image is JPEG compressed, this designation is not necessary and is omitted. When thumbnails use JPEG compression, this tag value is set to 6. -PhotometricInterpretation, 262, 0x0106, Image, Exif.Image.PhotometricInterpretation, Short, The pixel composition. In JPEG compressed data a JPEG marker is used instead of this tag. -Threshholding, 263, 0x0107, Image, Exif.Image.Threshholding, Short, For black and white TIFF files that represent shades of gray, the technique used to convert from gray to black and white pixels. -CellWidth, 264, 0x0108, Image, Exif.Image.CellWidth, Short, The width of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -CellLength, 265, 0x0109, Image, Exif.Image.CellLength, Short, The length of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -FillOrder, 266, 0x010a, Image, Exif.Image.FillOrder, Short, The logical order of bits within a byte -DocumentName, 269, 0x010d, Image, Exif.Image.DocumentName, Ascii, The name of the document from which this image was scanned -ImageDescription, 270, 0x010e, Image, Exif.Image.ImageDescription, Ascii, A character string giving the title of the image. It may be a comment such as "1988 company picnic" or the like. Two-bytes character codes cannot be used. When a 2-bytes code is necessary, the Exif Private tag is to be used. -Make, 271, 0x010f, Image, Exif.Image.Make, Ascii, The manufacturer of the recording equipment. This is the manufacturer of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -Model, 272, 0x0110, Image, Exif.Image.Model, Ascii, The model name or model number of the equipment. This is the model name or number of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -StripOffsets, 273, 0x0111, Image, Exif.Image.StripOffsets, Long, For each strip, the byte offset of that strip. It is recommended that this be selected so the number of strip bytes does not exceed 64 Kbytes. With JPEG compressed data this designation is not needed and is omitted. See also and . -Orientation, 274, 0x0112, Image, Exif.Image.Orientation, Short, The image orientation viewed in terms of rows and columns. -SamplesPerPixel, 277, 0x0115, Image, Exif.Image.SamplesPerPixel, Short, The number of components per pixel. Since this standard applies to RGB and YCbCr images, the value set for this tag is 3. In JPEG compressed data a JPEG marker is used instead of this tag. -RowsPerStrip, 278, 0x0116, Image, Exif.Image.RowsPerStrip, Long, The number of rows per strip. This is the number of rows in the image of one strip when an image is divided into strips. With JPEG compressed data this designation is not needed and is omitted. See also and . -StripByteCounts, 279, 0x0117, Image, Exif.Image.StripByteCounts, Long, The total number of bytes in each strip. With JPEG compressed data this designation is not needed and is omitted. -XResolution, 282, 0x011a, Image, Exif.Image.XResolution, Rational, The number of pixels per in the direction. When the image resolution is unknown, 72 [dpi] is designated. -YResolution, 283, 0x011b, Image, Exif.Image.YResolution, Rational, The number of pixels per in the direction. The same value as is designated. -PlanarConfiguration, 284, 0x011c, Image, Exif.Image.PlanarConfiguration, Short, Indicates whether pixel components are recorded in a chunky or planar format. In JPEG compressed files a JPEG marker is used instead of this tag. If this field does not exist, the TIFF default of 1 (chunky) is assumed. -GrayResponseUnit, 290, 0x0122, Image, Exif.Image.GrayResponseUnit, Short, The precision of the information contained in the GrayResponseCurve. -GrayResponseCurve, 291, 0x0123, Image, Exif.Image.GrayResponseCurve, Short, For grayscale data, the optical density of each possible pixel value. -T4Options, 292, 0x0124, Image, Exif.Image.T4Options, Long, T.4-encoding options. -T6Options, 293, 0x0125, Image, Exif.Image.T6Options, Long, T.6-encoding options. -ResolutionUnit, 296, 0x0128, Image, Exif.Image.ResolutionUnit, Short, The unit for measuring and . The same unit is used for both and . If the image resolution is unknown, 2 (inches) is designated. -TransferFunction, 301, 0x012d, Image, Exif.Image.TransferFunction, Short, A transfer function for the image, described in tabular style. Normally this tag is not necessary, since color space is specified in the color space information tag (). -Software, 305, 0x0131, Image, Exif.Image.Software, Ascii, This tag records the name and version of the software or firmware of the camera or image input device used to generate the image. The detailed format is not specified, but it is recommended that the example shown below be followed. When the field is left blank, it is treated as unknown. -DateTime, 306, 0x0132, Image, Exif.Image.DateTime, Ascii, The date and time of image creation. In Exif standard, it is the date and time the file was changed. -Artist, 315, 0x013b, Image, Exif.Image.Artist, Ascii, This tag records the name of the camera owner, photographer or image creator. The detailed format is not specified, but it is recommended that the information be written as in the example below for ease of Interoperability. When the field is left blank, it is treated as unknown. Ex.) "Camera owner, John Smith; Photographer, Michael Brown; Image creator, Ken James" -HostComputer, 316, 0x013c, Image, Exif.Image.HostComputer, Ascii, This tag records information about the host computer used to generate the image. -Predictor, 317, 0x013d, Image, Exif.Image.Predictor, Short, A predictor is a mathematical operator that is applied to the image data before an encoding scheme is applied. -WhitePoint, 318, 0x013e, Image, Exif.Image.WhitePoint, Rational, The chromaticity of the white point of the image. Normally this tag is not necessary, since color space is specified in the colorspace information tag (). -PrimaryChromaticities, 319, 0x013f, Image, Exif.Image.PrimaryChromaticities, Rational, The chromaticity of the three primary colors of the image. Normally this tag is not necessary, since colorspace is specified in the colorspace information tag (). -ColorMap, 320, 0x0140, Image, Exif.Image.ColorMap, Short, A color map for palette color images. This field defines a Red-Green-Blue color map (often called a lookup table) for palette-color images. In a palette-color image, a pixel value is used to index into an RGB lookup table. -HalftoneHints, 321, 0x0141, Image, Exif.Image.HalftoneHints, Short, The purpose of the HalftoneHints field is to convey to the halftone function the range of gray levels within a colorimetrically-specified image that should retain tonal detail. -TileWidth, 322, 0x0142, Image, Exif.Image.TileWidth, Short, The tile width in pixels. This is the number of columns in each tile. -TileLength, 323, 0x0143, Image, Exif.Image.TileLength, Short, The tile length (height) in pixels. This is the number of rows in each tile. -TileOffsets, 324, 0x0144, Image, Exif.Image.TileOffsets, Short, For each tile, the byte offset of that tile, as compressed and stored on disk. The offset is specified with respect to the beginning of the TIFF file. Note that this implies that each tile has a location independent of the locations of other tiles. -TileByteCounts, 325, 0x0145, Image, Exif.Image.TileByteCounts, Short, For each tile, the number of (compressed) bytes in that tile. See TileOffsets for a description of how the byte counts are ordered. -SubIFDs, 330, 0x014a, Image, Exif.Image.SubIFDs, Long, Defined by Adobe Corporation to enable TIFF Trees within a TIFF file. -InkSet, 332, 0x014c, Image, Exif.Image.InkSet, Short, The set of inks used in a separated (PhotometricInterpretation=5) image. -InkNames, 333, 0x014d, Image, Exif.Image.InkNames, Ascii, The name of each ink used in a separated (PhotometricInterpretation=5) image. -NumberOfInks, 334, 0x014e, Image, Exif.Image.NumberOfInks, Short, The number of inks. Usually equal to SamplesPerPixel, unless there are extra samples. -DotRange, 336, 0x0150, Image, Exif.Image.DotRange, Byte, The component values that correspond to a 0% dot and 100% dot. -TargetPrinter, 337, 0x0151, Image, Exif.Image.TargetPrinter, Ascii, A description of the printing environment for which this separation is intended. -ExtraSamples, 338, 0x0152, Image, Exif.Image.ExtraSamples, Short, Specifies that each pixel has m extra components whose interpretation is defined by one of the values listed below. -SampleFormat, 339, 0x0153, Image, Exif.Image.SampleFormat, Short, This field specifies how to interpret each data sample in a pixel. -SMinSampleValue, 340, 0x0154, Image, Exif.Image.SMinSampleValue, Short, This field specifies the minimum sample value. -SMaxSampleValue, 341, 0x0155, Image, Exif.Image.SMaxSampleValue, Short, This field specifies the maximum sample value. -TransferRange, 342, 0x0156, Image, Exif.Image.TransferRange, Short, Expands the range of the TransferFunction -ClipPath, 343, 0x0157, Image, Exif.Image.ClipPath, Byte, A TIFF ClipPath is intended to mirror the essentials of PostScript's path creation functionality. -XClipPathUnits, 344, 0x0158, Image, Exif.Image.XClipPathUnits, SShort, The number of units that span the width of the image, in terms of integer ClipPath coordinates. -YClipPathUnits, 345, 0x0159, Image, Exif.Image.YClipPathUnits, SShort, The number of units that span the height of the image, in terms of integer ClipPath coordinates. -Indexed, 346, 0x015a, Image, Exif.Image.Indexed, Short, Indexed images are images where the 'pixels' do not represent color values, but rather an index (usually 8-bit) into a separate color table, the ColorMap. -JPEGTables, 347, 0x015b, Image, Exif.Image.JPEGTables, Undefined, This optional tag may be used to encode the JPEG quantization andHuffman tables for subsequent use by the JPEG decompression process. -OPIProxy, 351, 0x015f, Image, Exif.Image.OPIProxy, Short, OPIProxy gives information concerning whether this image is a low-resolution proxy of a high-resolution image (Adobe OPI). -JPEGProc, 512, 0x0200, Image, Exif.Image.JPEGProc, Long, This field indicates the process used to produce the compressed data -JPEGInterchangeFormat, 513, 0x0201, Image, Exif.Image.JPEGInterchangeFormat, Long, The offset to the start byte (SOI) of JPEG compressed thumbnail data. This is not used for primary image JPEG data. -JPEGInterchangeFormatLength, 514, 0x0202, Image, Exif.Image.JPEGInterchangeFormatLength, Long, The number of bytes of JPEG compressed thumbnail data. This is not used for primary image JPEG data. JPEG thumbnails are not divided but are recorded as a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not be recorded. Compressed thumbnails must be recorded in no more than 64 Kbytes, including all other data to be recorded in APP1. -JPEGRestartInterval, 515, 0x0203, Image, Exif.Image.JPEGRestartInterval, Short, This Field indicates the length of the restart interval used in the compressed image data. -JPEGLosslessPredictors, 517, 0x0205, Image, Exif.Image.JPEGLosslessPredictors, Short, This Field points to a list of lossless predictor-selection values, one per component. -JPEGPointTransforms, 518, 0x0206, Image, Exif.Image.JPEGPointTransforms, Short, This Field points to a list of point transform values, one per component. -JPEGQTables, 519, 0x0207, Image, Exif.Image.JPEGQTables, Long, This Field points to a list of offsets to the quantization tables, one per component. -JPEGDCTables, 520, 0x0208, Image, Exif.Image.JPEGDCTables, Long, This Field points to a list of offsets to the DC Huffman tables or the lossless Huffman tables, one per component. -JPEGACTables, 521, 0x0209, Image, Exif.Image.JPEGACTables, Long, This Field points to a list of offsets to the Huffman AC tables, one per component. -YCbCrCoefficients, 529, 0x0211, Image, Exif.Image.YCbCrCoefficients, Rational, The matrix coefficients for transformation from RGB to YCbCr image data. No default is given in TIFF; but here the value given in Appendix E, "Color Space Guidelines", is used as the default. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability this condition. -YCbCrSubSampling, 530, 0x0212, Image, Exif.Image.YCbCrSubSampling, Short, The sampling ratio of chrominance components in relation to the luminance component. In JPEG compressed data a JPEG marker is used instead of this tag. -YCbCrPositioning, 531, 0x0213, Image, Exif.Image.YCbCrPositioning, Short, The position of chrominance components in relation to the luminance component. This field is designated only for JPEG compressed data or uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr = 4:2:2 it is recommended in this standard that 2 (co-sited) be used to record data, in order to improve the image quality when viewed on TV systems. When this field does not exist, the reader shall assume the TIFF default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is recommended. If the reader does not have the capability of supporting both kinds of , it shall follow the TIFF default regardless of the value in this field. It is preferable that readers be able to support both centered and co-sited positioning. -ReferenceBlackWhite, 532, 0x0214, Image, Exif.Image.ReferenceBlackWhite, Rational, The reference black point value and reference white point value. No defaults are given in TIFF, but the values below are given as defaults here. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability these conditions. -XMLPacket, 700, 0x02bc, Image, Exif.Image.XMLPacket, Byte, XMP Metadata (Adobe technote 9-14-02) -Rating, 18246, 0x4746, Image, Exif.Image.Rating, Short, Rating tag used by Windows -RatingPercent, 18249, 0x4749, Image, Exif.Image.RatingPercent, Short, Rating tag used by Windows, value in percent -ImageID, 32781, 0x800d, Image, Exif.Image.ImageID, Ascii, ImageID is the full pathname of the original, high-resolution image, or any other identifying string that uniquely identifies the original image (Adobe OPI). -CFARepeatPatternDim, 33421, 0x828d, Image, Exif.Image.CFARepeatPatternDim, Short, Contains two values representing the minimum rows and columns to define the repeating patterns of the color filter array -CFAPattern, 33422, 0x828e, Image, Exif.Image.CFAPattern, Byte, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods -BatteryLevel, 33423, 0x828f, Image, Exif.Image.BatteryLevel, Rational, Contains a value of the battery level as a fraction or string -Copyright, 33432, 0x8298, Image, Exif.Image.Copyright, Ascii, Copyright information. In this standard the tag is used to indicate both the photographer and editor copyrights. It is the copyright notice of the person or organization claiming rights to the image. The Interoperability copyright statement including date and rights should be written in this field; e.g., "Copyright, John Smith, 19xx. All rights reserved.". In this standard the field records both the photographer and editor copyrights, with each recorded in a separate part of the statement. When there is a clear distinction between the photographer and editor copyrights, these are to be written in the order of photographer followed by editor copyright, separated by NULL (in this case since the statement also ends with a NULL, there are two NULL codes). When only the photographer copyright is given, it is terminated by one NULL code . When only the editor copyright is given, the photographer copyright part consists of one space followed by a terminating NULL code, then the editor copyright is given. When the field is left blank, it is treated as unknown. -ExposureTime, 33434, 0x829a, Image, Exif.Image.ExposureTime, Rational, Exposure time, given in seconds. -FNumber, 33437, 0x829d, Image, Exif.Image.FNumber, Rational, The F number. -IPTCNAA, 33723, 0x83bb, Image, Exif.Image.IPTCNAA, Long, Contains an IPTC/NAA record -ImageResources, 34377, 0x8649, Image, Exif.Image.ImageResources, Byte, Contains information embedded by the Adobe Photoshop application -ExifTag, 34665, 0x8769, Image, Exif.Image.ExifTag, Long, A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure as that of the IFD specified in TIFF. ordinarily, however, it does not contain image data as in the case of TIFF. -InterColorProfile, 34675, 0x8773, Image, Exif.Image.InterColorProfile, Undefined, Contains an InterColor Consortium (ICC) format color space characterization/profile -ExposureProgram, 34850, 0x8822, Image, Exif.Image.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Image, Exif.Image.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. -GPSTag, 34853, 0x8825, Image, Exif.Image.GPSTag, Long, A pointer to the GPS Info IFD. The Interoperability structure of the GPS Info IFD, like that of Exif IFD, has no image data. -ISOSpeedRatings, 34855, 0x8827, Image, Exif.Image.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Image, Exif.Image.OECF, Undefined, Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524. -Interlace, 34857, 0x8829, Image, Exif.Image.Interlace, Short, Indicates the field number of multifield images. -TimeZoneOffset, 34858, 0x882a, Image, Exif.Image.TimeZoneOffset, SShort, This optional tag encodes the time zone of the camera clock (relativeto Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the picture was taken. It may also contain the time zone offsetof the clock used to create the DateTime tag-value when the image wasmodified. -SelfTimerMode, 34859, 0x882b, Image, Exif.Image.SelfTimerMode, Short, Number of seconds image capture was delayed from button press. -DateTimeOriginal, 36867, 0x9003, Image, Exif.Image.DateTimeOriginal, Ascii, The date and time when the original image data was generated. -CompressedBitsPerPixel, 37122, 0x9102, Image, Exif.Image.CompressedBitsPerPixel, Rational, Specific to compressed data; states the compressed bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Image, Exif.Image.ShutterSpeedValue, SRational, Shutter speed. -ApertureValue, 37378, 0x9202, Image, Exif.Image.ApertureValue, Rational, The lens aperture. -BrightnessValue, 37379, 0x9203, Image, Exif.Image.BrightnessValue, SRational, The value of brightness. -ExposureBiasValue, 37380, 0x9204, Image, Exif.Image.ExposureBiasValue, SRational, The exposure bias. -MaxApertureValue, 37381, 0x9205, Image, Exif.Image.MaxApertureValue, Rational, The smallest F number of the lens. -SubjectDistance, 37382, 0x9206, Image, Exif.Image.SubjectDistance, SRational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Image, Exif.Image.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Image, Exif.Image.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Image, Exif.Image.Flash, Short, Indicates the status of flash when the image was shot. -FocalLength, 37386, 0x920a, Image, Exif.Image.FocalLength, Rational, The actual focal length of the lens, in mm. -FlashEnergy, 37387, 0x920b, Image, Exif.Image.FlashEnergy, Rational, Amount of flash energy (BCPS). -SpatialFrequencyResponse, 37388, 0x920c, Image, Exif.Image.SpatialFrequencyResponse, Undefined, SFR of the camera. -Noise, 37389, 0x920d, Image, Exif.Image.Noise, Undefined, Noise measurement values. -FocalPlaneXResolution, 37390, 0x920e, Image, Exif.Image.FocalPlaneXResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth direction for main image. -FocalPlaneYResolution, 37391, 0x920f, Image, Exif.Image.FocalPlaneYResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength direction for main image. -FocalPlaneResolutionUnit, 37392, 0x9210, Image, Exif.Image.FocalPlaneResolutionUnit, Short, Unit of measurement for FocalPlaneXResolution(37390) and FocalPlaneYResolution(37391). -ImageNumber, 37393, 0x9211, Image, Exif.Image.ImageNumber, Long, Number assigned to an image, e.g., in a chained image burst. -SecurityClassification, 37394, 0x9212, Image, Exif.Image.SecurityClassification, Ascii, Security classification assigned to the image. -ImageHistory, 37395, 0x9213, Image, Exif.Image.ImageHistory, Ascii, Record of what has been done to the image. -SubjectLocation, 37396, 0x9214, Image, Exif.Image.SubjectLocation, Short, Indicates the location and area of the main subject in the overall scene. -ExposureIndex, 37397, 0x9215, Image, Exif.Image.ExposureIndex, Rational, Encodes the camera exposure index setting when image was captured. -TIFFEPStandardID, 37398, 0x9216, Image, Exif.Image.TIFFEPStandardID, Byte, Contains four ASCII characters representing the TIFF/EP standard version of a TIFF/EP file, eg '1', '0', '0', '0' -SensingMethod, 37399, 0x9217, Image, Exif.Image.SensingMethod, Short, Type of image sensor. -XPTitle, 40091, 0x9c9b, Image, Exif.Image.XPTitle, Byte, Title tag used by Windows, encoded in UCS2 -XPComment, 40092, 0x9c9c, Image, Exif.Image.XPComment, Byte, Comment tag used by Windows, encoded in UCS2 -XPAuthor, 40093, 0x9c9d, Image, Exif.Image.XPAuthor, Byte, Author tag used by Windows, encoded in UCS2 -XPKeywords, 40094, 0x9c9e, Image, Exif.Image.XPKeywords, Byte, Keywords tag used by Windows, encoded in UCS2 -XPSubject, 40095, 0x9c9f, Image, Exif.Image.XPSubject, Byte, Subject tag used by Windows, encoded in UCS2 -PrintImageMatching, 50341, 0xc4a5, Image, Exif.Image.PrintImageMatching, Undefined, Print Image Matching, description needed. -DNGVersion, 50706, 0xc612, Image, Exif.Image.DNGVersion, Byte, This tag encodes the DNG four-tier version number. For files compliant with version 1.1.0.0 of the DNG specification, this tag should contain the bytes: 1, 1, 0, 0. -DNGBackwardVersion, 50707, 0xc613, Image, Exif.Image.DNGBackwardVersion, Byte, This tag specifies the oldest version of the Digital Negative specification for which a file is compatible. Readers shouldnot attempt to read a file if this tag specifies a version number that is higher than the version number of the specification the reader was based on. In addition to checking the version tags, readers should, for all tags, check the types, counts, and values, to verify it is able to correctly read the file. -UniqueCameraModel, 50708, 0xc614, Image, Exif.Image.UniqueCameraModel, Ascii, Defines a unique, non-localized name for the camera model that created the image in the raw file. This name should include the manufacturer's name to avoid conflicts, and should not be localized, even if the camera name itself is localized for different markets (see LocalizedCameraModel). This string may be used by reader software to index into per-model preferences and replacement profiles. -LocalizedCameraModel, 50709, 0xc615, Image, Exif.Image.LocalizedCameraModel, Byte, Similar to the UniqueCameraModel field, except the name can be localized for different markets to match the localization of the camera name. -CFAPlaneColor, 50710, 0xc616, Image, Exif.Image.CFAPlaneColor, Byte, Provides a mapping between the values in the CFAPattern tag and the plane numbers in LinearRaw space. This is a required tag for non-RGB CFA images. -CFALayout, 50711, 0xc617, Image, Exif.Image.CFALayout, Short, Describes the spatial layout of the CFA. -LinearizationTable, 50712, 0xc618, Image, Exif.Image.LinearizationTable, Short, Describes a lookup table that maps stored values into linear values. This tag is typically used to increase compression ratios by storing the raw data in a non-linear, more visually uniform space with fewer total encoding levels. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelRepeatDim, 50713, 0xc619, Image, Exif.Image.BlackLevelRepeatDim, Short, Specifies repeat pattern size for the BlackLevel tag. -BlackLevel, 50714, 0xc61a, Image, Exif.Image.BlackLevel, Rational, Specifies the zero light (a.k.a. thermal black or black current) encoding level, as a repeating pattern. The origin of this pattern is the top-left corner of the ActiveArea rectangle. The values are stored in row-column-sample scan order. -BlackLevelDeltaH, 50715, 0xc61b, Image, Exif.Image.BlackLevelDeltaH, SRational, If the zero light encoding level is a function of the image column, BlackLevelDeltaH specifies the difference between the zero light encoding level for each column and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelDeltaV, 50716, 0xc61c, Image, Exif.Image.BlackLevelDeltaV, SRational, If the zero light encoding level is a function of the image row, this tag specifies the difference between the zero light encoding level for each row and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -WhiteLevel, 50717, 0xc61d, Image, Exif.Image.WhiteLevel, Short, This tag specifies the fully saturated encoding level for the raw sample values. Saturation is caused either by the sensor itself becoming highly non-linear in response, or by the camera's analog to digital converter clipping. -DefaultScale, 50718, 0xc61e, Image, Exif.Image.DefaultScale, Rational, DefaultScale is required for cameras with non-square pixels. It specifies the default scale factors for each direction to convert the image to square pixels. Typically these factors are selected to approximately preserve total pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such as the Fujifilm SuperCCD, these two values should usually differ by a factor of 2.0. -DefaultCropOrigin, 50719, 0xc61f, Image, Exif.Image.DefaultCropOrigin, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropOrigin specifies the origin of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied), relative to the top-left corner of the ActiveArea rectangle. -DefaultCropSize, 50720, 0xc620, Image, Exif.Image.DefaultCropSize, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropSize specifies the size of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied). -ColorMatrix1, 50721, 0xc621, Image, Exif.Image.ColorMatrix1, SRational, ColorMatrix1 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the first calibration illuminant. The matrix values are stored in row scan order. The ColorMatrix1 tag is required for all non-monochrome DNG files. -ColorMatrix2, 50722, 0xc622, Image, Exif.Image.ColorMatrix2, SRational, ColorMatrix2 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the second calibration illuminant. The matrix values are stored in row scan order. -CameraCalibration1, 50723, 0xc623, Image, Exif.Image.CameraCalibration1, SRational, CameraClalibration1 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the first calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix1 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -CameraCalibration2, 50724, 0xc624, Image, Exif.Image.CameraCalibration2, SRational, CameraCalibration2 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the second calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix2 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -ReductionMatrix1, 50725, 0xc625, Image, Exif.Image.ReductionMatrix1, SRational, ReductionMatrix1 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the first calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -ReductionMatrix2, 50726, 0xc626, Image, Exif.Image.ReductionMatrix2, SRational, ReductionMatrix2 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the second calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -AnalogBalance, 50727, 0xc627, Image, Exif.Image.AnalogBalance, Rational, Normally the stored raw values are not white balanced, since any digital white balancing will reduce the dynamic range of the final image if the user decides to later adjust the white balance; however, if camera hardware is capable of white balancing the color channels before the signal is digitized, it can improve the dynamic range of the final image. AnalogBalance defines the gain, either analog (recommended) or digital (not recommended) that has been applied the stored raw values. -AsShotNeutral, 50728, 0xc628, Image, Exif.Image.AsShotNeutral, Short, Specifies the selected white balance at time of capture, encoded as the coordinates of a perfectly neutral color in linear reference space values. The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag. -AsShotWhiteXY, 50729, 0xc629, Image, Exif.Image.AsShotWhiteXY, Rational, Specifies the selected white balance at time of capture, encoded as x-y chromaticity coordinates. The inclusion of this tag precludes the inclusion of the AsShotNeutral tag. -BaselineExposure, 50730, 0xc62a, Image, Exif.Image.BaselineExposure, SRational, Camera models vary in the trade-off they make between highlight headroom and shadow noise. Some leave a significant amount of highlight headroom during a normal exposure. This allows significant negative exposure compensation to be applied during raw conversion, but also means normal exposures will contain more shadow noise. Other models leave less headroom during normal exposures. This allows for less negative exposure compensation, but results in lower shadow noise for normal exposures. Because of these differences, a raw converter needs to vary the zero point of its exposure compensation control from model to model. BaselineExposure specifies by how much (in EV units) to move the zero point. Positive values result in brighter default results, while negative values result in darker default results. -BaselineNoise, 50731, 0xc62b, Image, Exif.Image.BaselineNoise, Rational, Specifies the relative noise level of the camera model at a baseline ISO value of 100, compared to a reference camera model. Since noise levels tend to vary approximately with the square root of the ISO value, a raw converter can use this value, combined with the current ISO, to estimate the relative noise level of the current image. -BaselineSharpness, 50732, 0xc62c, Image, Exif.Image.BaselineSharpness, Rational, Specifies the relative amount of sharpening required for this camera model, compared to a reference camera model. Camera models vary in the strengths of their anti-aliasing filters. Cameras with weak or no filters require less sharpening than cameras with strong anti-aliasing filters. -BayerGreenSplit, 50733, 0xc62d, Image, Exif.Image.BayerGreenSplit, Long, Only applies to CFA images using a Bayer pattern filter array. This tag specifies, in arbitrary units, how closely the values of the green pixels in the blue/green rows track the values of the green pixels in the red/green rows. A value of zero means the two kinds of green pixels track closely, while a non-zero value means they sometimes diverge. The useful range for this tag is from 0 (no divergence) to about 5000 (quite large divergence). -LinearResponseLimit, 50734, 0xc62e, Image, Exif.Image.LinearResponseLimit, Rational, Some sensors have an unpredictable non-linearity in their response as they near the upper limit of their encoding range. This non-linearity results in color shifts in the highlight areas of the resulting image unless the raw converter compensates for this effect. LinearResponseLimit specifies the fraction of the encoding range above which the response may become significantly non-linear. -CameraSerialNumber, 50735, 0xc62f, Image, Exif.Image.CameraSerialNumber, Ascii, CameraSerialNumber contains the serial number of the camera or camera body that captured the image. -LensInfo, 50736, 0xc630, Image, Exif.Image.LensInfo, Rational, Contains information about the lens that captured the image. If the minimum f-stops are unknown, they should be encoded as 0/0. -ChromaBlurRadius, 50737, 0xc631, Image, Exif.Image.ChromaBlurRadius, Rational, ChromaBlurRadius provides a hint to the DNG reader about how much chroma blur should be applied to the image. If this tag is omitted, the reader will use its default amount of chroma blurring. Normally this tag is only included for non-CFA images, since the amount of chroma blur required for mosaic images is highly dependent on the de-mosaic algorithm, in which case the DNG reader's default value is likely optimized for its particular de-mosaic algorithm. -AntiAliasStrength, 50738, 0xc632, Image, Exif.Image.AntiAliasStrength, Rational, Provides a hint to the DNG reader about how strong the camera's anti-alias filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is prone to aliasing artifacts with some subjects), while a value of 1.0 means a strong anti-alias filter (i.e., the camera almost never has aliasing artifacts). -ShadowScale, 50739, 0xc633, Image, Exif.Image.ShadowScale, SRational, This tag is used by Adobe Camera Raw to control the sensitivity of its 'Shadows' slider. -DNGPrivateData, 50740, 0xc634, Image, Exif.Image.DNGPrivateData, Byte, Provides a way for camera manufacturers to store private data in the DNG file for use by their own raw converters, and to have that data preserved by programs that edit DNG files. -MakerNoteSafety, 50741, 0xc635, Image, Exif.Image.MakerNoteSafety, Short, MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is safe to preserve along with the rest of the EXIF data. File browsers and other image management software processing an image with a preserved MakerNote should be aware that any thumbnail image embedded in the MakerNote may be stale, and may not reflect the current state of the full size image. -CalibrationIlluminant1, 50778, 0xc65a, Image, Exif.Image.CalibrationIlluminant1, Short, The illuminant used for the first set of color calibration tags (ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for this tag are the same as the legal values for the LightSource EXIF tag. -CalibrationIlluminant2, 50779, 0xc65b, Image, Exif.Image.CalibrationIlluminant2, Short, The illuminant used for an optional second set of color calibration tags (ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for this tag are the same as the legal values for the CalibrationIlluminant1 tag; however, if both are included, neither is allowed to have a value of 0 (unknown). -BestQualityScale, 50780, 0xc65c, Image, Exif.Image.BestQualityScale, Rational, For some cameras, the best possible image quality is not achieved by preserving the total pixel count during conversion. For example, Fujifilm SuperCCD images have maximum detail when their total pixel count is doubled. This tag specifies the amount by which the values of the DefaultScale tag need to be multiplied to achieve the best quality image size. -RawDataUniqueID, 50781, 0xc65d, Image, Exif.Image.RawDataUniqueID, Byte, This tag contains a 16-byte unique identifier for the raw image data in the DNG file. DNG readers can use this tag to recognize a particular raw image, even if the file's name or the metadata contained in the file has been changed. If a DNG writer creates such an identifier, it should do so using an algorithm that will ensure that it is very unlikely two different images will end up having the same identifier. -OriginalRawFileName, 50827, 0xc68b, Image, Exif.Image.OriginalRawFileName, Byte, If the DNG file was converted from a non-DNG raw file, then this tag contains the file name of that original raw file. -OriginalRawFileData, 50828, 0xc68c, Image, Exif.Image.OriginalRawFileData, Undefined, If the DNG file was converted from a non-DNG raw file, then this tag contains the compressed contents of that original raw file. The contents of this tag always use the big-endian byte order. The tag contains a sequence of data blocks. Future versions of the DNG specification may define additional data blocks, so DNG readers should ignore extra bytes when parsing this tag. DNG readers should also detect the case where data blocks are missing from the end of the sequence, and should assume a default value for all the missing blocks. There are no padding or alignment bytes between data blocks. -ActiveArea, 50829, 0xc68d, Image, Exif.Image.ActiveArea, Short, This rectangle defines the active (non-masked) pixels of the sensor. The order of the rectangle coordinates is: top, left, bottom, right. -MaskedAreas, 50830, 0xc68e, Image, Exif.Image.MaskedAreas, Short, This tag contains a list of non-overlapping rectangle coordinates of fully masked pixels, which can be optionally used by DNG readers to measure the black encoding level. The order of each rectangle's coordinates is: top, left, bottom, right. If the raw image data has already had its black encoding level subtracted, then this tag should not be used, since the masked pixels are no longer useful. -AsShotICCProfile, 50831, 0xc68f, Image, Exif.Image.AsShotICCProfile, Undefined, This tag contains an ICC profile that, in conjunction with the AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to specify a default color rendering from camera color space coordinates (linear reference values) into the ICC profile connection space. The ICC profile connection space is an output referred colorimetric space, whereas the other color calibration tags in DNG specify a conversion into a scene referred colorimetric space. This means that the rendering in this profile should include any desired tone and gamut mapping needed to convert between scene referred values and output referred values. -AsShotPreProfileMatrix, 50832, 0xc690, Image, Exif.Image.AsShotPreProfileMatrix, SRational, This tag is used in conjunction with the AsShotICCProfile tag. It specifies a matrix that should be applied to the camera color space coordinates before processing the values through the ICC profile specified in the AsShotICCProfile tag. The matrix is stored in the row scan order. If ColorPlanes is greater than three, then this matrix can (but is not required to) reduce the dimensionality of the color data down to three components, in which case the AsShotICCProfile should have three rather than ColorPlanes input components. -CurrentICCProfile, 50833, 0xc691, Image, Exif.Image.CurrentICCProfile, Undefined, This tag is used in conjunction with the CurrentPreProfileMatrix tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -CurrentPreProfileMatrix, 50834, 0xc692, Image, Exif.Image.CurrentPreProfileMatrix, SRational, This tag is used in conjunction with the CurrentICCProfile tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -ExposureTime, 33434, 0x829a, Photo, Exif.Photo.ExposureTime, Rational, Exposure time, given in seconds (sec). -FNumber, 33437, 0x829d, Photo, Exif.Photo.FNumber, Rational, The F number. -ExposureProgram, 34850, 0x8822, Photo, Exif.Photo.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Photo, Exif.Photo.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. The tag value is an ASCII string compatible with the standard developed by the ASTM Technical Committee. -ISOSpeedRatings, 34855, 0x8827, Photo, Exif.Photo.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Photo, Exif.Photo.OECF, Undefined, Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO 14524. is the relationship between the camera optical input and the image values. -ExifVersion, 36864, 0x9000, Photo, Exif.Photo.ExifVersion, Undefined, The version of this standard supported. Nonexistence of this field is taken to mean nonconformance to the standard. -DateTimeOriginal, 36867, 0x9003, Photo, Exif.Photo.DateTimeOriginal, Ascii, The date and time when the original image data was generated. For a digital still camera the date and time the picture was taken are recorded. -DateTimeDigitized, 36868, 0x9004, Photo, Exif.Photo.DateTimeDigitized, Ascii, The date and time when the image was stored as digital data. -ComponentsConfiguration, 37121, 0x9101, Photo, Exif.Photo.ComponentsConfiguration, Undefined, Information specific to compressed data. The channels of each component are arranged in order from the 1st component to the 4th. For uncompressed data the data arrangement is given in the tag. However, since can only express the order of Y, Cb and Cr, this tag is provided for cases when compressed data uses components other than Y, Cb, and Cr and to enable support of other sequences. -CompressedBitsPerPixel, 37122, 0x9102, Photo, Exif.Photo.CompressedBitsPerPixel, Rational, Information specific to compressed data. The compression mode used for a compressed image is indicated in unit bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Photo, Exif.Photo.ShutterSpeedValue, SRational, Shutter speed. The unit is the APEX (Additive System of Photographic Exposure) setting. -ApertureValue, 37378, 0x9202, Photo, Exif.Photo.ApertureValue, Rational, The lens aperture. The unit is the APEX value. -BrightnessValue, 37379, 0x9203, Photo, Exif.Photo.BrightnessValue, SRational, The value of brightness. The unit is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -ExposureBiasValue, 37380, 0x9204, Photo, Exif.Photo.ExposureBiasValue, SRational, The exposure bias. The units is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -MaxApertureValue, 37381, 0x9205, Photo, Exif.Photo.MaxApertureValue, Rational, The smallest F number of the lens. The unit is the APEX value. Ordinarily it is given in the range of 00.00 to 99.99, but it is not limited to this range. -SubjectDistance, 37382, 0x9206, Photo, Exif.Photo.SubjectDistance, Rational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Photo, Exif.Photo.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Photo, Exif.Photo.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Photo, Exif.Photo.Flash, Short, This tag is recorded when an image is taken using a strobe light (flash). -FocalLength, 37386, 0x920a, Photo, Exif.Photo.FocalLength, Rational, The actual focal length of the lens, in mm. Conversion is not made to the focal length of a 35 mm film camera. -SubjectArea, 37396, 0x9214, Photo, Exif.Photo.SubjectArea, Short, This tag indicates the location and area of the main subject in the overall scene. -MakerNote, 37500, 0x927c, Photo, Exif.Photo.MakerNote, Undefined, A tag for manufacturers of Exif writers to record any desired information. The contents are up to the manufacturer. -UserComment, 37510, 0x9286, Photo, Exif.Photo.UserComment, Comment, A tag for Exif users to write keywords or comments on the image besides those in , and without the character code limitations of the tag. -SubSecTime, 37520, 0x9290, Photo, Exif.Photo.SubSecTime, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeOriginal, 37521, 0x9291, Photo, Exif.Photo.SubSecTimeOriginal, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeDigitized, 37522, 0x9292, Photo, Exif.Photo.SubSecTimeDigitized, Ascii, A tag used to record fractions of seconds for the tag. -FlashpixVersion, 40960, 0xa000, Photo, Exif.Photo.FlashpixVersion, Undefined, The FlashPix format version supported by a FPXR file. -ColorSpace, 40961, 0xa001, Photo, Exif.Photo.ColorSpace, Short, The color space information tag is always recorded as the color space specifier. Normally sRGB is used to define the color space based on the PC monitor conditions and environment. If a color space other than sRGB is used, Uncalibrated is set. Image data recorded as Uncalibrated can be treated as sRGB when it is converted to FlashPix. -PixelXDimension, 40962, 0xa002, Photo, Exif.Photo.PixelXDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid width of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. -PixelYDimension, 40963, 0xa003, Photo, Exif.Photo.PixelYDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid height of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. Since data padding is unnecessary in the vertical direction, the number of lines recorded in this valid image height tag will in fact be the same as that recorded in the SOF. -RelatedSoundFile, 40964, 0xa004, Photo, Exif.Photo.RelatedSoundFile, Ascii, This tag is used to record the name of an audio file related to the image data. The only relational information recorded here is the Exif audio file name and extension (an ASCII string consisting of 8 characters + '.' + 3 characters). The path is not recorded. -InteroperabilityTag, 40965, 0xa005, Photo, Exif.Photo.InteroperabilityTag, Long, Interoperability IFD is composed of tags which stores the information to ensure the Interoperability and pointed by the following tag located in Exif IFD. The Interoperability structure of Interoperability IFD is the same as TIFF defined IFD structure but does not contain the image data characteristically compared with normal TIFF IFD. -FlashEnergy, 41483, 0xa20b, Photo, Exif.Photo.FlashEnergy, Rational, Indicates the strobe energy at the time the image is captured, as measured in Beam Candle Power Seconds (BCPS). -SpatialFrequencyResponse, 41484, 0xa20c, Photo, Exif.Photo.SpatialFrequencyResponse, Undefined, This tag records the camera or input device spatial frequency table and SFR values in the direction of image width, image height, and diagonal direction, as specified in ISO 12233. -FocalPlaneXResolution, 41486, 0xa20e, Photo, Exif.Photo.FocalPlaneXResolution, Rational, Indicates the number of pixels in the image width (X) direction per on the camera focal plane. -FocalPlaneYResolution, 41487, 0xa20f, Photo, Exif.Photo.FocalPlaneYResolution, Rational, Indicates the number of pixels in the image height (V) direction per on the camera focal plane. -FocalPlaneResolutionUnit, 41488, 0xa210, Photo, Exif.Photo.FocalPlaneResolutionUnit, Short, Indicates the unit for measuring and . This value is the same as the . -SubjectLocation, 41492, 0xa214, Photo, Exif.Photo.SubjectLocation, Short, Indicates the location of the main subject in the scene. The value of this tag represents the pixel at the center of the main subject relative to the left edge, prior to rotation processing as per the tag. The first value indicates the X column number and second indicates the Y row number. -ExposureIndex, 41493, 0xa215, Photo, Exif.Photo.ExposureIndex, Rational, Indicates the exposure index selected on the camera or input device at the time the image is captured. -SensingMethod, 41495, 0xa217, Photo, Exif.Photo.SensingMethod, Short, Indicates the image sensor type on the camera or input device. -FileSource, 41728, 0xa300, Photo, Exif.Photo.FileSource, Undefined, Indicates the image source. If a DSC recorded the image, this tag value of this tag always be set to 3, indicating that the image was recorded on a DSC. -SceneType, 41729, 0xa301, Photo, Exif.Photo.SceneType, Undefined, Indicates the type of scene. If a DSC recorded the image, this tag value must always be set to 1, indicating that the image was directly photographed. -CFAPattern, 41730, 0xa302, Photo, Exif.Photo.CFAPattern, Undefined, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods. -CustomRendered, 41985, 0xa401, Photo, Exif.Photo.CustomRendered, Short, This tag indicates the use of special processing on image data, such as rendering geared to output. When special processing is performed, the reader is expected to disable or minimize any further processing. -ExposureMode, 41986, 0xa402, Photo, Exif.Photo.ExposureMode, Short, This tag indicates the exposure mode set when the image was shot. In auto-bracketing mode, the camera shoots a series of frames of the same scene at different exposure settings. -WhiteBalance, 41987, 0xa403, Photo, Exif.Photo.WhiteBalance, Short, This tag indicates the white balance mode set when the image was shot. -DigitalZoomRatio, 41988, 0xa404, Photo, Exif.Photo.DigitalZoomRatio, Rational, This tag indicates the digital zoom ratio when the image was shot. If the numerator of the recorded value is 0, this indicates that digital zoom was not used. -FocalLengthIn35mmFilm, 41989, 0xa405, Photo, Exif.Photo.FocalLengthIn35mmFilm, Short, This tag indicates the equivalent focal length assuming a 35mm film camera, in mm. A value of 0 means the focal length is unknown. Note that this tag differs from the tag. -SceneCaptureType, 41990, 0xa406, Photo, Exif.Photo.SceneCaptureType, Short, This tag indicates the type of scene that was shot. It can also be used to record the mode in which the image was shot. Note that this differs from the tag. -GainControl, 41991, 0xa407, Photo, Exif.Photo.GainControl, Short, This tag indicates the degree of overall image gain adjustment. -Contrast, 41992, 0xa408, Photo, Exif.Photo.Contrast, Short, This tag indicates the direction of contrast processing applied by the camera when the image was shot. -Saturation, 41993, 0xa409, Photo, Exif.Photo.Saturation, Short, This tag indicates the direction of saturation processing applied by the camera when the image was shot. -Sharpness, 41994, 0xa40a, Photo, Exif.Photo.Sharpness, Short, This tag indicates the direction of sharpness processing applied by the camera when the image was shot. -DeviceSettingDescription, 41995, 0xa40b, Photo, Exif.Photo.DeviceSettingDescription, Undefined, This tag indicates information on the picture-taking conditions of a particular camera model. The tag is used only to indicate the picture-taking conditions in the reader. -SubjectDistanceRange, 41996, 0xa40c, Photo, Exif.Photo.SubjectDistanceRange, Short, This tag indicates the distance to the subject. -ImageUniqueID, 42016, 0xa420, Photo, Exif.Photo.ImageUniqueID, Ascii, This tag indicates an identifier assigned uniquely to each image. It is recorded as an ASCII string equivalent to hexadecimal notation and 128-bit fixed length. -InteroperabilityIndex, 1, 0x0001, Iop, Exif.Iop.InteroperabilityIndex, Ascii, Indicates the identification of the Interoperability rule. Use "R98" for stating ExifR98 Rules. Four bytes used including the termination code (NULL). see the separate volume of Recommended Exif Interoperability Rules (ExifR98) for other tags used for ExifR98. -InteroperabilityVersion, 2, 0x0002, Iop, Exif.Iop.InteroperabilityVersion, Undefined, Interoperability version -RelatedImageFileFormat, 4096, 0x1000, Iop, Exif.Iop.RelatedImageFileFormat, Ascii, File format of image file -RelatedImageWidth, 4097, 0x1001, Iop, Exif.Iop.RelatedImageWidth, Long, Image width -RelatedImageLength, 4098, 0x1002, Iop, Exif.Iop.RelatedImageLength, Long, Image height -GPSVersionID, 0, 0x0000, GPSInfo, Exif.GPSInfo.GPSVersionID, Byte, Indicates the version of . The version is given as 2.0.0.0. This tag is mandatory when tag is present. (Note: The tag is given in bytes, unlike the tag. When the version is 2.0.0.0, the tag value is 02000000.H). -GPSLatitudeRef, 1, 0x0001, GPSInfo, Exif.GPSInfo.GPSLatitudeRef, Ascii, Indicates whether the latitude is north or south latitude. The ASCII value 'N' indicates north latitude, and 'S' is south latitude. -GPSLatitude, 2, 0x0002, GPSInfo, Exif.GPSInfo.GPSLatitude, Rational, Indicates the latitude. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is dd/1,mmmm/100,0/1. -GPSLongitudeRef, 3, 0x0003, GPSInfo, Exif.GPSInfo.GPSLongitudeRef, Ascii, Indicates whether the longitude is east or west longitude. ASCII 'E' indicates east longitude, and 'W' is west longitude. -GPSLongitude, 4, 0x0004, GPSInfo, Exif.GPSInfo.GPSLongitude, Rational, Indicates the longitude. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is ddd/1,mmmm/100,0/1. -GPSAltitudeRef, 5, 0x0005, GPSInfo, Exif.GPSInfo.GPSAltitudeRef, Byte, Indicates the altitude used as the reference altitude. If the reference is sea level and the altitude is above sea level, 0 is given. If the altitude is below sea level, a value of 1 is given and the altitude is indicated as an absolute value in the GSPAltitude tag. The reference unit is meters. Note that this tag is BYTE type, unlike other reference tags. -GPSAltitude, 6, 0x0006, GPSInfo, Exif.GPSInfo.GPSAltitude, Rational, Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is expressed as one RATIONAL value. The reference unit is meters. -GPSTimeStamp, 7, 0x0007, GPSInfo, Exif.GPSInfo.GPSTimeStamp, Rational, Indicates the time as UTC (Coordinated Universal Time). is expressed as three RATIONAL values giving the hour, minute, and second (atomic clock). -GPSSatellites, 8, 0x0008, GPSInfo, Exif.GPSInfo.GPSSatellites, Ascii, Indicates the GPS satellites used for measurements. This tag can be used to describe the number of satellites, their ID number, angle of elevation, azimuth, SNR and other information in ASCII notation. The format is not specified. If the GPS receiver is incapable of taking measurements, value of the tag is set to NULL. -GPSStatus, 9, 0x0009, GPSInfo, Exif.GPSInfo.GPSStatus, Ascii, Indicates the status of the GPS receiver when the image is recorded. "A" means measurement is in progress, and "V" means the measurement is Interoperability. -GPSMeasureMode, 10, 0x000a, GPSInfo, Exif.GPSInfo.GPSMeasureMode, Ascii, Indicates the GPS measurement mode. "2" means two-dimensional measurement and "3" means three-dimensional measurement is in progress. -GPSDOP, 11, 0x000b, GPSInfo, Exif.GPSInfo.GPSDOP, Rational, Indicates the GPS DOP (data degree of precision). An HDOP value is written during two-dimensional measurement, and PDOP during three-dimensional measurement. -GPSSpeedRef, 12, 0x000c, GPSInfo, Exif.GPSInfo.GPSSpeedRef, Ascii, Indicates the unit used to express the GPS receiver speed of movement. "K" "M" and "N" represents kilometers per hour, miles per hour, and knots. -GPSSpeed, 13, 0x000d, GPSInfo, Exif.GPSInfo.GPSSpeed, Rational, Indicates the speed of GPS receiver movement. -GPSTrackRef, 14, 0x000e, GPSInfo, Exif.GPSInfo.GPSTrackRef, Ascii, Indicates the reference for giving the direction of GPS receiver movement. "T" denotes true direction and "M" is magnetic direction. -GPSTrack, 15, 0x000f, GPSInfo, Exif.GPSInfo.GPSTrack, Rational, Indicates the direction of GPS receiver movement. The range of values is from 0.00 to 359.99. -GPSImgDirectionRef, 16, 0x0010, GPSInfo, Exif.GPSInfo.GPSImgDirectionRef, Ascii, Indicates the reference for giving the direction of the image when it is captured. "T" denotes true direction and "M" is magnetic direction. -GPSImgDirection, 17, 0x0011, GPSInfo, Exif.GPSInfo.GPSImgDirection, Rational, Indicates the direction of the image when it was captured. The range of values is from 0.00 to 359.99. -GPSMapDatum, 18, 0x0012, GPSInfo, Exif.GPSInfo.GPSMapDatum, Ascii, Indicates the geodetic survey data used by the GPS receiver. If the survey data is restricted to Japan, the value of this tag is "TOKYO" or "WGS-84". -GPSDestLatitudeRef, 19, 0x0013, GPSInfo, Exif.GPSInfo.GPSDestLatitudeRef, Ascii, Indicates whether the latitude of the destination point is north or south latitude. The ASCII value "N" indicates north latitude, and "S" is south latitude. -GPSDestLatitude, 20, 0x0014, GPSInfo, Exif.GPSInfo.GPSDestLatitude, Rational, Indicates the latitude of the destination point. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If latitude is expressed as degrees, minutes and seconds, a typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be dd/1,mmmm/100,0/1. -GPSDestLongitudeRef, 21, 0x0015, GPSInfo, Exif.GPSInfo.GPSDestLongitudeRef, Ascii, Indicates whether the longitude of the destination point is east or west longitude. ASCII "E" indicates east longitude, and "W" is west longitude. -GPSDestLongitude, 22, 0x0016, GPSInfo, Exif.GPSInfo.GPSDestLongitude, Rational, Indicates the longitude of the destination point. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If longitude is expressed as degrees, minutes and seconds, a typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be ddd/1,mmmm/100,0/1. -GPSDestBearingRef, 23, 0x0017, GPSInfo, Exif.GPSInfo.GPSDestBearingRef, Ascii, Indicates the reference used for giving the bearing to the destination point. "T" denotes true direction and "M" is magnetic direction. -GPSDestBearing, 24, 0x0018, GPSInfo, Exif.GPSInfo.GPSDestBearing, Rational, Indicates the bearing to the destination point. The range of values is from 0.00 to 359.99. -GPSDestDistanceRef, 25, 0x0019, GPSInfo, Exif.GPSInfo.GPSDestDistanceRef, Ascii, Indicates the unit used to express the distance to the destination point. "K", "M" and "N" represent kilometers, miles and knots. -GPSDestDistance, 26, 0x001a, GPSInfo, Exif.GPSInfo.GPSDestDistance, Rational, Indicates the distance to the destination point. -GPSProcessingMethod, 27, 0x001b, GPSInfo, Exif.GPSInfo.GPSProcessingMethod, Undefined, A character string recording the name of the method used for location finding. The first byte indicates the character code used, and this is followed by the name of the method. -GPSAreaInformation, 28, 0x001c, GPSInfo, Exif.GPSInfo.GPSAreaInformation, Undefined, A character string recording the name of the GPS area. The first byte indicates the character code used, and this is followed by the name of the GPS area. -GPSDateStamp, 29, 0x001d, GPSInfo, Exif.GPSInfo.GPSDateStamp, Ascii, A character string recording date and time information relative to UTC (Coordinated Universal Time). The format is "YYYY:MM:DD.". -GPSDifferential, 30, 0x001e, GPSInfo, Exif.GPSInfo.GPSDifferential, Short, Indicates whether differential correction is applied to the GPS receiver. -Usage: bin\Debug\tiff-test.exe file - /usr/lib /usr lib - /usr/ / usr - usr . usr - / / - . . . - .. . .. - /// / - /usr/.emacs /usr .emacs - /usr/.emacs/ /usr .emacs - /usr/.emacs// /usr .emacs - usr/.emacs usr .emacs - .emacs . .emacs - .emacs.gz . .emacs.gz .gz - /tmp/image.jpg /tmp image.jpg .jpg -/tmp/.image.jpg /tmp .image.jpg .jpg - /image.jpg / image.jpg .jpg - image.jpg . image.jpg .jpg - image.jpg// . image.jpg .jpg - /////image.jpg / image.jpg .jpg - /foo.bar/image /foo.bar image -/foo.bar/images.tar.gz /foo.bar images.tar.gz .gz -d:\foo.bar\images.tar.gz d:\foo.bar images.tar.gz .gz -Usage: write-test file case - -where case is an integer between 1 and 11 -Usage: bin\Debug\write2-test.exe file -Usage: bin\Debug\xmpparse.exe file -Usage: bin\Debug\xmpparser-test.exe file -Xmp.dc.source XmpText 13 xmpsample.cpp -Xmp.dc.subject XmpBag 2 Palmtree, Rubbertree -Xmp.dc.title LangAlt 2 lang="de-DE" Sonnenuntergang am Strand, lang="en-US" Sunset on the beach -Xmp.dc.one XmpText 2 -1 -Xmp.dc.two XmpText 6 3.1415 -Xmp.dc.three XmpText 3 5/7 -Xmp.dc.four XmpText 3 255 -Xmp.dc.five XmpText 3 256 -Xmp.dc.six XmpText 5 False -Xmp.dc.seven XmpText 5 Seven -Xmp.dc.format XmpText 10 image/jpeg -Xmp.dc.creator XmpSeq 3 1) The first creator, 2) The second creator, 3) And another one -Xmp.dc.description LangAlt 2 lang="x-default" Hello, World, lang="de-DE" Hallo, Welt -Xmp.tiff.ImageDescription LangAlt 2 lang="x-default" TIFF image description, lang="de-DE" TIFF Bildbeschreibung -Xmp.ns.myProperty XmpText 7 myValue -Xmp.xmpDM.videoFrameSize/stDim:w XmpText 2 16 -Xmp.xmpDM.videoFrameSize/stDim:h XmpText 1 9 -Xmp.xmpDM.videoFrameSize/stDim:unit XmpText 4 inch -Xmp.dc.publisher XmpBag 1 James Bond -Xmp.dc.publisher[1]/?ns:role XmpText 12 secret agent -Xmp.dc.creator[2]/?ns:role XmpText 10 programmer -Xmp.xmpBJ.JobRef XmpText 0 type="Bag" -Xmp.xmpBJ.JobRef[1]/stJob:name XmpText 14 Birthday party -Xmp.xmpBJ.JobRef[1]/stJob:role XmpText 12 Photographer -Xmp.xmpBJ.JobRef[2]/stJob:name XmpText 16 Wedding ceremony -Xmp.xmpBJ.JobRef[2]/stJob:role XmpText 8 Best man - - - - - - - Palmtree - Rubbertree - - - - - Sonnenuntergang am Strand - Sunset on the beach - - - - - 1) The first creator - - 2) The second creator - programmer - - 3) And another one - - - - - Hello, World - Hallo, Welt - - - - - - James Bond - secret agent - - - - - - TIFF image description - TIFF Bildbeschreibung - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Usage: bin\DebugDLL\addmoddel.exe file -Usage: bin\DebugDLL\convert-test.exe file -Usage: bin\DebugDLL\exifcomment.exe file -Usage: bin\DebugDLL\exifdata-test.exe file -Usage: bin\DebugDLL\exifprint.exe file -Usage: exiv2.exe [ options ] [ action ] file ... - -Manipulate the Exif metadata of images. -Usage: bin\DebugDLL\iotest.exe filein fileout1 fileout2 -fileouts are overwritten and should match filein exactly -Usage: bin\DebugDLL\iptceasy.exe file -Usage: bin\DebugDLL\iptcprint.exe file -Usage: bin\DebugDLL\iptctest.exe image -Commands read from stdin. -Usage: bin\DebugDLL\largeiptc-test.exe image datafile - -Reads and writes raw metadata. Use -h option for help. -Usage: metacopy.exe [-iecaph] readfile writefile -Usage: bin\DebugDLL\mmap-test.exe file -Usage: bin\DebugDLL\prevtest.exe file -string long float Rational -True 1 1 1/1 -False 0 0 0/1 -t 1 1 1/1 -f 0 0 0/1 --1 -1 -1 -1/1 -0 0 0 0/1 -1 1 1 1/1 -0.0 0 0 0/1 -0.1 0 0.1 1/10 -0.01 0 0.01 1/100 -0.001 0 0.001 1/1000 --1.49999 -1 -1.49999 -149999/100000 --1.5 -1 -1.5 -3/2 -1.49999 1 1.49999 149999/100000 -1.5 1 1.5 3/2 -0/1 0 0 0/1 -1/1 1 1 1/1 -1/3 0 0.333333 1/3 --1/3 0 -0.333333 -1/3 -4/3 1 1.33333 4/3 --4/3 -1 -1.33333 -4/3 -0/0 nok nok 0/0 -text nok nok nok -ProcessingSoftware, 11, 0x000b, Image, Exif.Image.ProcessingSoftware, Ascii, The name and version of the software used to post-process the picture. -NewSubfileType, 254, 0x00fe, Image, Exif.Image.NewSubfileType, Long, A general indication of the kind of data contained in this subfile. -SubfileType, 255, 0x00ff, Image, Exif.Image.SubfileType, Short, A general indication of the kind of data contained in this subfile. This field is deprecated. The NewSubfileType field should be used instead. -ImageWidth, 256, 0x0100, Image, Exif.Image.ImageWidth, Long, The number of columns of image data, equal to the number of pixels per row. In JPEG compressed data a JPEG marker is used instead of this tag. -ImageLength, 257, 0x0101, Image, Exif.Image.ImageLength, Long, The number of rows of image data. In JPEG compressed data a JPEG marker is used instead of this tag. -BitsPerSample, 258, 0x0102, Image, Exif.Image.BitsPerSample, Short, The number of bits per image component. In this standard each component of the image is 8 bits, so the value for this tag is 8. See also . In JPEG compressed data a JPEG marker is used instead of this tag. -Compression, 259, 0x0103, Image, Exif.Image.Compression, Short, The compression scheme used for the image data. When a primary image is JPEG compressed, this designation is not necessary and is omitted. When thumbnails use JPEG compression, this tag value is set to 6. -PhotometricInterpretation, 262, 0x0106, Image, Exif.Image.PhotometricInterpretation, Short, The pixel composition. In JPEG compressed data a JPEG marker is used instead of this tag. -Threshholding, 263, 0x0107, Image, Exif.Image.Threshholding, Short, For black and white TIFF files that represent shades of gray, the technique used to convert from gray to black and white pixels. -CellWidth, 264, 0x0108, Image, Exif.Image.CellWidth, Short, The width of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -CellLength, 265, 0x0109, Image, Exif.Image.CellLength, Short, The length of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -FillOrder, 266, 0x010a, Image, Exif.Image.FillOrder, Short, The logical order of bits within a byte -DocumentName, 269, 0x010d, Image, Exif.Image.DocumentName, Ascii, The name of the document from which this image was scanned -ImageDescription, 270, 0x010e, Image, Exif.Image.ImageDescription, Ascii, A character string giving the title of the image. It may be a comment such as "1988 company picnic" or the like. Two-bytes character codes cannot be used. When a 2-bytes code is necessary, the Exif Private tag is to be used. -Make, 271, 0x010f, Image, Exif.Image.Make, Ascii, The manufacturer of the recording equipment. This is the manufacturer of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -Model, 272, 0x0110, Image, Exif.Image.Model, Ascii, The model name or model number of the equipment. This is the model name or number of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -StripOffsets, 273, 0x0111, Image, Exif.Image.StripOffsets, Long, For each strip, the byte offset of that strip. It is recommended that this be selected so the number of strip bytes does not exceed 64 Kbytes. With JPEG compressed data this designation is not needed and is omitted. See also and . -Orientation, 274, 0x0112, Image, Exif.Image.Orientation, Short, The image orientation viewed in terms of rows and columns. -SamplesPerPixel, 277, 0x0115, Image, Exif.Image.SamplesPerPixel, Short, The number of components per pixel. Since this standard applies to RGB and YCbCr images, the value set for this tag is 3. In JPEG compressed data a JPEG marker is used instead of this tag. -RowsPerStrip, 278, 0x0116, Image, Exif.Image.RowsPerStrip, Long, The number of rows per strip. This is the number of rows in the image of one strip when an image is divided into strips. With JPEG compressed data this designation is not needed and is omitted. See also and . -StripByteCounts, 279, 0x0117, Image, Exif.Image.StripByteCounts, Long, The total number of bytes in each strip. With JPEG compressed data this designation is not needed and is omitted. -XResolution, 282, 0x011a, Image, Exif.Image.XResolution, Rational, The number of pixels per in the direction. When the image resolution is unknown, 72 [dpi] is designated. -YResolution, 283, 0x011b, Image, Exif.Image.YResolution, Rational, The number of pixels per in the direction. The same value as is designated. -PlanarConfiguration, 284, 0x011c, Image, Exif.Image.PlanarConfiguration, Short, Indicates whether pixel components are recorded in a chunky or planar format. In JPEG compressed files a JPEG marker is used instead of this tag. If this field does not exist, the TIFF default of 1 (chunky) is assumed. -GrayResponseUnit, 290, 0x0122, Image, Exif.Image.GrayResponseUnit, Short, The precision of the information contained in the GrayResponseCurve. -GrayResponseCurve, 291, 0x0123, Image, Exif.Image.GrayResponseCurve, Short, For grayscale data, the optical density of each possible pixel value. -T4Options, 292, 0x0124, Image, Exif.Image.T4Options, Long, T.4-encoding options. -T6Options, 293, 0x0125, Image, Exif.Image.T6Options, Long, T.6-encoding options. -ResolutionUnit, 296, 0x0128, Image, Exif.Image.ResolutionUnit, Short, The unit for measuring and . The same unit is used for both and . If the image resolution is unknown, 2 (inches) is designated. -TransferFunction, 301, 0x012d, Image, Exif.Image.TransferFunction, Short, A transfer function for the image, described in tabular style. Normally this tag is not necessary, since color space is specified in the color space information tag (). -Software, 305, 0x0131, Image, Exif.Image.Software, Ascii, This tag records the name and version of the software or firmware of the camera or image input device used to generate the image. The detailed format is not specified, but it is recommended that the example shown below be followed. When the field is left blank, it is treated as unknown. -DateTime, 306, 0x0132, Image, Exif.Image.DateTime, Ascii, The date and time of image creation. In Exif standard, it is the date and time the file was changed. -Artist, 315, 0x013b, Image, Exif.Image.Artist, Ascii, This tag records the name of the camera owner, photographer or image creator. The detailed format is not specified, but it is recommended that the information be written as in the example below for ease of Interoperability. When the field is left blank, it is treated as unknown. Ex.) "Camera owner, John Smith; Photographer, Michael Brown; Image creator, Ken James" -HostComputer, 316, 0x013c, Image, Exif.Image.HostComputer, Ascii, This tag records information about the host computer used to generate the image. -Predictor, 317, 0x013d, Image, Exif.Image.Predictor, Short, A predictor is a mathematical operator that is applied to the image data before an encoding scheme is applied. -WhitePoint, 318, 0x013e, Image, Exif.Image.WhitePoint, Rational, The chromaticity of the white point of the image. Normally this tag is not necessary, since color space is specified in the colorspace information tag (). -PrimaryChromaticities, 319, 0x013f, Image, Exif.Image.PrimaryChromaticities, Rational, The chromaticity of the three primary colors of the image. Normally this tag is not necessary, since colorspace is specified in the colorspace information tag (). -ColorMap, 320, 0x0140, Image, Exif.Image.ColorMap, Short, A color map for palette color images. This field defines a Red-Green-Blue color map (often called a lookup table) for palette-color images. In a palette-color image, a pixel value is used to index into an RGB lookup table. -HalftoneHints, 321, 0x0141, Image, Exif.Image.HalftoneHints, Short, The purpose of the HalftoneHints field is to convey to the halftone function the range of gray levels within a colorimetrically-specified image that should retain tonal detail. -TileWidth, 322, 0x0142, Image, Exif.Image.TileWidth, Short, The tile width in pixels. This is the number of columns in each tile. -TileLength, 323, 0x0143, Image, Exif.Image.TileLength, Short, The tile length (height) in pixels. This is the number of rows in each tile. -TileOffsets, 324, 0x0144, Image, Exif.Image.TileOffsets, Short, For each tile, the byte offset of that tile, as compressed and stored on disk. The offset is specified with respect to the beginning of the TIFF file. Note that this implies that each tile has a location independent of the locations of other tiles. -TileByteCounts, 325, 0x0145, Image, Exif.Image.TileByteCounts, Short, For each tile, the number of (compressed) bytes in that tile. See TileOffsets for a description of how the byte counts are ordered. -SubIFDs, 330, 0x014a, Image, Exif.Image.SubIFDs, Long, Defined by Adobe Corporation to enable TIFF Trees within a TIFF file. -InkSet, 332, 0x014c, Image, Exif.Image.InkSet, Short, The set of inks used in a separated (PhotometricInterpretation=5) image. -InkNames, 333, 0x014d, Image, Exif.Image.InkNames, Ascii, The name of each ink used in a separated (PhotometricInterpretation=5) image. -NumberOfInks, 334, 0x014e, Image, Exif.Image.NumberOfInks, Short, The number of inks. Usually equal to SamplesPerPixel, unless there are extra samples. -DotRange, 336, 0x0150, Image, Exif.Image.DotRange, Byte, The component values that correspond to a 0% dot and 100% dot. -TargetPrinter, 337, 0x0151, Image, Exif.Image.TargetPrinter, Ascii, A description of the printing environment for which this separation is intended. -ExtraSamples, 338, 0x0152, Image, Exif.Image.ExtraSamples, Short, Specifies that each pixel has m extra components whose interpretation is defined by one of the values listed below. -SampleFormat, 339, 0x0153, Image, Exif.Image.SampleFormat, Short, This field specifies how to interpret each data sample in a pixel. -SMinSampleValue, 340, 0x0154, Image, Exif.Image.SMinSampleValue, Short, This field specifies the minimum sample value. -SMaxSampleValue, 341, 0x0155, Image, Exif.Image.SMaxSampleValue, Short, This field specifies the maximum sample value. -TransferRange, 342, 0x0156, Image, Exif.Image.TransferRange, Short, Expands the range of the TransferFunction -ClipPath, 343, 0x0157, Image, Exif.Image.ClipPath, Byte, A TIFF ClipPath is intended to mirror the essentials of PostScript's path creation functionality. -XClipPathUnits, 344, 0x0158, Image, Exif.Image.XClipPathUnits, SShort, The number of units that span the width of the image, in terms of integer ClipPath coordinates. -YClipPathUnits, 345, 0x0159, Image, Exif.Image.YClipPathUnits, SShort, The number of units that span the height of the image, in terms of integer ClipPath coordinates. -Indexed, 346, 0x015a, Image, Exif.Image.Indexed, Short, Indexed images are images where the 'pixels' do not represent color values, but rather an index (usually 8-bit) into a separate color table, the ColorMap. -JPEGTables, 347, 0x015b, Image, Exif.Image.JPEGTables, Undefined, This optional tag may be used to encode the JPEG quantization andHuffman tables for subsequent use by the JPEG decompression process. -OPIProxy, 351, 0x015f, Image, Exif.Image.OPIProxy, Short, OPIProxy gives information concerning whether this image is a low-resolution proxy of a high-resolution image (Adobe OPI). -JPEGProc, 512, 0x0200, Image, Exif.Image.JPEGProc, Long, This field indicates the process used to produce the compressed data -JPEGInterchangeFormat, 513, 0x0201, Image, Exif.Image.JPEGInterchangeFormat, Long, The offset to the start byte (SOI) of JPEG compressed thumbnail data. This is not used for primary image JPEG data. -JPEGInterchangeFormatLength, 514, 0x0202, Image, Exif.Image.JPEGInterchangeFormatLength, Long, The number of bytes of JPEG compressed thumbnail data. This is not used for primary image JPEG data. JPEG thumbnails are not divided but are recorded as a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not be recorded. Compressed thumbnails must be recorded in no more than 64 Kbytes, including all other data to be recorded in APP1. -JPEGRestartInterval, 515, 0x0203, Image, Exif.Image.JPEGRestartInterval, Short, This Field indicates the length of the restart interval used in the compressed image data. -JPEGLosslessPredictors, 517, 0x0205, Image, Exif.Image.JPEGLosslessPredictors, Short, This Field points to a list of lossless predictor-selection values, one per component. -JPEGPointTransforms, 518, 0x0206, Image, Exif.Image.JPEGPointTransforms, Short, This Field points to a list of point transform values, one per component. -JPEGQTables, 519, 0x0207, Image, Exif.Image.JPEGQTables, Long, This Field points to a list of offsets to the quantization tables, one per component. -JPEGDCTables, 520, 0x0208, Image, Exif.Image.JPEGDCTables, Long, This Field points to a list of offsets to the DC Huffman tables or the lossless Huffman tables, one per component. -JPEGACTables, 521, 0x0209, Image, Exif.Image.JPEGACTables, Long, This Field points to a list of offsets to the Huffman AC tables, one per component. -YCbCrCoefficients, 529, 0x0211, Image, Exif.Image.YCbCrCoefficients, Rational, The matrix coefficients for transformation from RGB to YCbCr image data. No default is given in TIFF; but here the value given in Appendix E, "Color Space Guidelines", is used as the default. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability this condition. -YCbCrSubSampling, 530, 0x0212, Image, Exif.Image.YCbCrSubSampling, Short, The sampling ratio of chrominance components in relation to the luminance component. In JPEG compressed data a JPEG marker is used instead of this tag. -YCbCrPositioning, 531, 0x0213, Image, Exif.Image.YCbCrPositioning, Short, The position of chrominance components in relation to the luminance component. This field is designated only for JPEG compressed data or uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr = 4:2:2 it is recommended in this standard that 2 (co-sited) be used to record data, in order to improve the image quality when viewed on TV systems. When this field does not exist, the reader shall assume the TIFF default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is recommended. If the reader does not have the capability of supporting both kinds of , it shall follow the TIFF default regardless of the value in this field. It is preferable that readers be able to support both centered and co-sited positioning. -ReferenceBlackWhite, 532, 0x0214, Image, Exif.Image.ReferenceBlackWhite, Rational, The reference black point value and reference white point value. No defaults are given in TIFF, but the values below are given as defaults here. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability these conditions. -XMLPacket, 700, 0x02bc, Image, Exif.Image.XMLPacket, Byte, XMP Metadata (Adobe technote 9-14-02) -Rating, 18246, 0x4746, Image, Exif.Image.Rating, Short, Rating tag used by Windows -RatingPercent, 18249, 0x4749, Image, Exif.Image.RatingPercent, Short, Rating tag used by Windows, value in percent -ImageID, 32781, 0x800d, Image, Exif.Image.ImageID, Ascii, ImageID is the full pathname of the original, high-resolution image, or any other identifying string that uniquely identifies the original image (Adobe OPI). -CFARepeatPatternDim, 33421, 0x828d, Image, Exif.Image.CFARepeatPatternDim, Short, Contains two values representing the minimum rows and columns to define the repeating patterns of the color filter array -CFAPattern, 33422, 0x828e, Image, Exif.Image.CFAPattern, Byte, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods -BatteryLevel, 33423, 0x828f, Image, Exif.Image.BatteryLevel, Rational, Contains a value of the battery level as a fraction or string -Copyright, 33432, 0x8298, Image, Exif.Image.Copyright, Ascii, Copyright information. In this standard the tag is used to indicate both the photographer and editor copyrights. It is the copyright notice of the person or organization claiming rights to the image. The Interoperability copyright statement including date and rights should be written in this field; e.g., "Copyright, John Smith, 19xx. All rights reserved.". In this standard the field records both the photographer and editor copyrights, with each recorded in a separate part of the statement. When there is a clear distinction between the photographer and editor copyrights, these are to be written in the order of photographer followed by editor copyright, separated by NULL (in this case since the statement also ends with a NULL, there are two NULL codes). When only the photographer copyright is given, it is terminated by one NULL code . When only the editor copyright is given, the photographer copyright part consists of one space followed by a terminating NULL code, then the editor copyright is given. When the field is left blank, it is treated as unknown. -ExposureTime, 33434, 0x829a, Image, Exif.Image.ExposureTime, Rational, Exposure time, given in seconds. -FNumber, 33437, 0x829d, Image, Exif.Image.FNumber, Rational, The F number. -IPTCNAA, 33723, 0x83bb, Image, Exif.Image.IPTCNAA, Long, Contains an IPTC/NAA record -ImageResources, 34377, 0x8649, Image, Exif.Image.ImageResources, Byte, Contains information embedded by the Adobe Photoshop application -ExifTag, 34665, 0x8769, Image, Exif.Image.ExifTag, Long, A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure as that of the IFD specified in TIFF. ordinarily, however, it does not contain image data as in the case of TIFF. -InterColorProfile, 34675, 0x8773, Image, Exif.Image.InterColorProfile, Undefined, Contains an InterColor Consortium (ICC) format color space characterization/profile -ExposureProgram, 34850, 0x8822, Image, Exif.Image.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Image, Exif.Image.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. -GPSTag, 34853, 0x8825, Image, Exif.Image.GPSTag, Long, A pointer to the GPS Info IFD. The Interoperability structure of the GPS Info IFD, like that of Exif IFD, has no image data. -ISOSpeedRatings, 34855, 0x8827, Image, Exif.Image.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Image, Exif.Image.OECF, Undefined, Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524. -Interlace, 34857, 0x8829, Image, Exif.Image.Interlace, Short, Indicates the field number of multifield images. -TimeZoneOffset, 34858, 0x882a, Image, Exif.Image.TimeZoneOffset, SShort, This optional tag encodes the time zone of the camera clock (relativeto Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the picture was taken. It may also contain the time zone offsetof the clock used to create the DateTime tag-value when the image wasmodified. -SelfTimerMode, 34859, 0x882b, Image, Exif.Image.SelfTimerMode, Short, Number of seconds image capture was delayed from button press. -DateTimeOriginal, 36867, 0x9003, Image, Exif.Image.DateTimeOriginal, Ascii, The date and time when the original image data was generated. -CompressedBitsPerPixel, 37122, 0x9102, Image, Exif.Image.CompressedBitsPerPixel, Rational, Specific to compressed data; states the compressed bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Image, Exif.Image.ShutterSpeedValue, SRational, Shutter speed. -ApertureValue, 37378, 0x9202, Image, Exif.Image.ApertureValue, Rational, The lens aperture. -BrightnessValue, 37379, 0x9203, Image, Exif.Image.BrightnessValue, SRational, The value of brightness. -ExposureBiasValue, 37380, 0x9204, Image, Exif.Image.ExposureBiasValue, SRational, The exposure bias. -MaxApertureValue, 37381, 0x9205, Image, Exif.Image.MaxApertureValue, Rational, The smallest F number of the lens. -SubjectDistance, 37382, 0x9206, Image, Exif.Image.SubjectDistance, SRational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Image, Exif.Image.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Image, Exif.Image.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Image, Exif.Image.Flash, Short, Indicates the status of flash when the image was shot. -FocalLength, 37386, 0x920a, Image, Exif.Image.FocalLength, Rational, The actual focal length of the lens, in mm. -FlashEnergy, 37387, 0x920b, Image, Exif.Image.FlashEnergy, Rational, Amount of flash energy (BCPS). -SpatialFrequencyResponse, 37388, 0x920c, Image, Exif.Image.SpatialFrequencyResponse, Undefined, SFR of the camera. -Noise, 37389, 0x920d, Image, Exif.Image.Noise, Undefined, Noise measurement values. -FocalPlaneXResolution, 37390, 0x920e, Image, Exif.Image.FocalPlaneXResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth direction for main image. -FocalPlaneYResolution, 37391, 0x920f, Image, Exif.Image.FocalPlaneYResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength direction for main image. -FocalPlaneResolutionUnit, 37392, 0x9210, Image, Exif.Image.FocalPlaneResolutionUnit, Short, Unit of measurement for FocalPlaneXResolution(37390) and FocalPlaneYResolution(37391). -ImageNumber, 37393, 0x9211, Image, Exif.Image.ImageNumber, Long, Number assigned to an image, e.g., in a chained image burst. -SecurityClassification, 37394, 0x9212, Image, Exif.Image.SecurityClassification, Ascii, Security classification assigned to the image. -ImageHistory, 37395, 0x9213, Image, Exif.Image.ImageHistory, Ascii, Record of what has been done to the image. -SubjectLocation, 37396, 0x9214, Image, Exif.Image.SubjectLocation, Short, Indicates the location and area of the main subject in the overall scene. -ExposureIndex, 37397, 0x9215, Image, Exif.Image.ExposureIndex, Rational, Encodes the camera exposure index setting when image was captured. -TIFFEPStandardID, 37398, 0x9216, Image, Exif.Image.TIFFEPStandardID, Byte, Contains four ASCII characters representing the TIFF/EP standard version of a TIFF/EP file, eg '1', '0', '0', '0' -SensingMethod, 37399, 0x9217, Image, Exif.Image.SensingMethod, Short, Type of image sensor. -XPTitle, 40091, 0x9c9b, Image, Exif.Image.XPTitle, Byte, Title tag used by Windows, encoded in UCS2 -XPComment, 40092, 0x9c9c, Image, Exif.Image.XPComment, Byte, Comment tag used by Windows, encoded in UCS2 -XPAuthor, 40093, 0x9c9d, Image, Exif.Image.XPAuthor, Byte, Author tag used by Windows, encoded in UCS2 -XPKeywords, 40094, 0x9c9e, Image, Exif.Image.XPKeywords, Byte, Keywords tag used by Windows, encoded in UCS2 -XPSubject, 40095, 0x9c9f, Image, Exif.Image.XPSubject, Byte, Subject tag used by Windows, encoded in UCS2 -PrintImageMatching, 50341, 0xc4a5, Image, Exif.Image.PrintImageMatching, Undefined, Print Image Matching, description needed. -DNGVersion, 50706, 0xc612, Image, Exif.Image.DNGVersion, Byte, This tag encodes the DNG four-tier version number. For files compliant with version 1.1.0.0 of the DNG specification, this tag should contain the bytes: 1, 1, 0, 0. -DNGBackwardVersion, 50707, 0xc613, Image, Exif.Image.DNGBackwardVersion, Byte, This tag specifies the oldest version of the Digital Negative specification for which a file is compatible. Readers shouldnot attempt to read a file if this tag specifies a version number that is higher than the version number of the specification the reader was based on. In addition to checking the version tags, readers should, for all tags, check the types, counts, and values, to verify it is able to correctly read the file. -UniqueCameraModel, 50708, 0xc614, Image, Exif.Image.UniqueCameraModel, Ascii, Defines a unique, non-localized name for the camera model that created the image in the raw file. This name should include the manufacturer's name to avoid conflicts, and should not be localized, even if the camera name itself is localized for different markets (see LocalizedCameraModel). This string may be used by reader software to index into per-model preferences and replacement profiles. -LocalizedCameraModel, 50709, 0xc615, Image, Exif.Image.LocalizedCameraModel, Byte, Similar to the UniqueCameraModel field, except the name can be localized for different markets to match the localization of the camera name. -CFAPlaneColor, 50710, 0xc616, Image, Exif.Image.CFAPlaneColor, Byte, Provides a mapping between the values in the CFAPattern tag and the plane numbers in LinearRaw space. This is a required tag for non-RGB CFA images. -CFALayout, 50711, 0xc617, Image, Exif.Image.CFALayout, Short, Describes the spatial layout of the CFA. -LinearizationTable, 50712, 0xc618, Image, Exif.Image.LinearizationTable, Short, Describes a lookup table that maps stored values into linear values. This tag is typically used to increase compression ratios by storing the raw data in a non-linear, more visually uniform space with fewer total encoding levels. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelRepeatDim, 50713, 0xc619, Image, Exif.Image.BlackLevelRepeatDim, Short, Specifies repeat pattern size for the BlackLevel tag. -BlackLevel, 50714, 0xc61a, Image, Exif.Image.BlackLevel, Rational, Specifies the zero light (a.k.a. thermal black or black current) encoding level, as a repeating pattern. The origin of this pattern is the top-left corner of the ActiveArea rectangle. The values are stored in row-column-sample scan order. -BlackLevelDeltaH, 50715, 0xc61b, Image, Exif.Image.BlackLevelDeltaH, SRational, If the zero light encoding level is a function of the image column, BlackLevelDeltaH specifies the difference between the zero light encoding level for each column and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelDeltaV, 50716, 0xc61c, Image, Exif.Image.BlackLevelDeltaV, SRational, If the zero light encoding level is a function of the image row, this tag specifies the difference between the zero light encoding level for each row and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -WhiteLevel, 50717, 0xc61d, Image, Exif.Image.WhiteLevel, Short, This tag specifies the fully saturated encoding level for the raw sample values. Saturation is caused either by the sensor itself becoming highly non-linear in response, or by the camera's analog to digital converter clipping. -DefaultScale, 50718, 0xc61e, Image, Exif.Image.DefaultScale, Rational, DefaultScale is required for cameras with non-square pixels. It specifies the default scale factors for each direction to convert the image to square pixels. Typically these factors are selected to approximately preserve total pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such as the Fujifilm SuperCCD, these two values should usually differ by a factor of 2.0. -DefaultCropOrigin, 50719, 0xc61f, Image, Exif.Image.DefaultCropOrigin, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropOrigin specifies the origin of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied), relative to the top-left corner of the ActiveArea rectangle. -DefaultCropSize, 50720, 0xc620, Image, Exif.Image.DefaultCropSize, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropSize specifies the size of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied). -ColorMatrix1, 50721, 0xc621, Image, Exif.Image.ColorMatrix1, SRational, ColorMatrix1 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the first calibration illuminant. The matrix values are stored in row scan order. The ColorMatrix1 tag is required for all non-monochrome DNG files. -ColorMatrix2, 50722, 0xc622, Image, Exif.Image.ColorMatrix2, SRational, ColorMatrix2 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the second calibration illuminant. The matrix values are stored in row scan order. -CameraCalibration1, 50723, 0xc623, Image, Exif.Image.CameraCalibration1, SRational, CameraClalibration1 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the first calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix1 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -CameraCalibration2, 50724, 0xc624, Image, Exif.Image.CameraCalibration2, SRational, CameraCalibration2 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the second calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix2 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -ReductionMatrix1, 50725, 0xc625, Image, Exif.Image.ReductionMatrix1, SRational, ReductionMatrix1 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the first calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -ReductionMatrix2, 50726, 0xc626, Image, Exif.Image.ReductionMatrix2, SRational, ReductionMatrix2 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the second calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -AnalogBalance, 50727, 0xc627, Image, Exif.Image.AnalogBalance, Rational, Normally the stored raw values are not white balanced, since any digital white balancing will reduce the dynamic range of the final image if the user decides to later adjust the white balance; however, if camera hardware is capable of white balancing the color channels before the signal is digitized, it can improve the dynamic range of the final image. AnalogBalance defines the gain, either analog (recommended) or digital (not recommended) that has been applied the stored raw values. -AsShotNeutral, 50728, 0xc628, Image, Exif.Image.AsShotNeutral, Short, Specifies the selected white balance at time of capture, encoded as the coordinates of a perfectly neutral color in linear reference space values. The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag. -AsShotWhiteXY, 50729, 0xc629, Image, Exif.Image.AsShotWhiteXY, Rational, Specifies the selected white balance at time of capture, encoded as x-y chromaticity coordinates. The inclusion of this tag precludes the inclusion of the AsShotNeutral tag. -BaselineExposure, 50730, 0xc62a, Image, Exif.Image.BaselineExposure, SRational, Camera models vary in the trade-off they make between highlight headroom and shadow noise. Some leave a significant amount of highlight headroom during a normal exposure. This allows significant negative exposure compensation to be applied during raw conversion, but also means normal exposures will contain more shadow noise. Other models leave less headroom during normal exposures. This allows for less negative exposure compensation, but results in lower shadow noise for normal exposures. Because of these differences, a raw converter needs to vary the zero point of its exposure compensation control from model to model. BaselineExposure specifies by how much (in EV units) to move the zero point. Positive values result in brighter default results, while negative values result in darker default results. -BaselineNoise, 50731, 0xc62b, Image, Exif.Image.BaselineNoise, Rational, Specifies the relative noise level of the camera model at a baseline ISO value of 100, compared to a reference camera model. Since noise levels tend to vary approximately with the square root of the ISO value, a raw converter can use this value, combined with the current ISO, to estimate the relative noise level of the current image. -BaselineSharpness, 50732, 0xc62c, Image, Exif.Image.BaselineSharpness, Rational, Specifies the relative amount of sharpening required for this camera model, compared to a reference camera model. Camera models vary in the strengths of their anti-aliasing filters. Cameras with weak or no filters require less sharpening than cameras with strong anti-aliasing filters. -BayerGreenSplit, 50733, 0xc62d, Image, Exif.Image.BayerGreenSplit, Long, Only applies to CFA images using a Bayer pattern filter array. This tag specifies, in arbitrary units, how closely the values of the green pixels in the blue/green rows track the values of the green pixels in the red/green rows. A value of zero means the two kinds of green pixels track closely, while a non-zero value means they sometimes diverge. The useful range for this tag is from 0 (no divergence) to about 5000 (quite large divergence). -LinearResponseLimit, 50734, 0xc62e, Image, Exif.Image.LinearResponseLimit, Rational, Some sensors have an unpredictable non-linearity in their response as they near the upper limit of their encoding range. This non-linearity results in color shifts in the highlight areas of the resulting image unless the raw converter compensates for this effect. LinearResponseLimit specifies the fraction of the encoding range above which the response may become significantly non-linear. -CameraSerialNumber, 50735, 0xc62f, Image, Exif.Image.CameraSerialNumber, Ascii, CameraSerialNumber contains the serial number of the camera or camera body that captured the image. -LensInfo, 50736, 0xc630, Image, Exif.Image.LensInfo, Rational, Contains information about the lens that captured the image. If the minimum f-stops are unknown, they should be encoded as 0/0. -ChromaBlurRadius, 50737, 0xc631, Image, Exif.Image.ChromaBlurRadius, Rational, ChromaBlurRadius provides a hint to the DNG reader about how much chroma blur should be applied to the image. If this tag is omitted, the reader will use its default amount of chroma blurring. Normally this tag is only included for non-CFA images, since the amount of chroma blur required for mosaic images is highly dependent on the de-mosaic algorithm, in which case the DNG reader's default value is likely optimized for its particular de-mosaic algorithm. -AntiAliasStrength, 50738, 0xc632, Image, Exif.Image.AntiAliasStrength, Rational, Provides a hint to the DNG reader about how strong the camera's anti-alias filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is prone to aliasing artifacts with some subjects), while a value of 1.0 means a strong anti-alias filter (i.e., the camera almost never has aliasing artifacts). -ShadowScale, 50739, 0xc633, Image, Exif.Image.ShadowScale, SRational, This tag is used by Adobe Camera Raw to control the sensitivity of its 'Shadows' slider. -DNGPrivateData, 50740, 0xc634, Image, Exif.Image.DNGPrivateData, Byte, Provides a way for camera manufacturers to store private data in the DNG file for use by their own raw converters, and to have that data preserved by programs that edit DNG files. -MakerNoteSafety, 50741, 0xc635, Image, Exif.Image.MakerNoteSafety, Short, MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is safe to preserve along with the rest of the EXIF data. File browsers and other image management software processing an image with a preserved MakerNote should be aware that any thumbnail image embedded in the MakerNote may be stale, and may not reflect the current state of the full size image. -CalibrationIlluminant1, 50778, 0xc65a, Image, Exif.Image.CalibrationIlluminant1, Short, The illuminant used for the first set of color calibration tags (ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for this tag are the same as the legal values for the LightSource EXIF tag. -CalibrationIlluminant2, 50779, 0xc65b, Image, Exif.Image.CalibrationIlluminant2, Short, The illuminant used for an optional second set of color calibration tags (ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for this tag are the same as the legal values for the CalibrationIlluminant1 tag; however, if both are included, neither is allowed to have a value of 0 (unknown). -BestQualityScale, 50780, 0xc65c, Image, Exif.Image.BestQualityScale, Rational, For some cameras, the best possible image quality is not achieved by preserving the total pixel count during conversion. For example, Fujifilm SuperCCD images have maximum detail when their total pixel count is doubled. This tag specifies the amount by which the values of the DefaultScale tag need to be multiplied to achieve the best quality image size. -RawDataUniqueID, 50781, 0xc65d, Image, Exif.Image.RawDataUniqueID, Byte, This tag contains a 16-byte unique identifier for the raw image data in the DNG file. DNG readers can use this tag to recognize a particular raw image, even if the file's name or the metadata contained in the file has been changed. If a DNG writer creates such an identifier, it should do so using an algorithm that will ensure that it is very unlikely two different images will end up having the same identifier. -OriginalRawFileName, 50827, 0xc68b, Image, Exif.Image.OriginalRawFileName, Byte, If the DNG file was converted from a non-DNG raw file, then this tag contains the file name of that original raw file. -OriginalRawFileData, 50828, 0xc68c, Image, Exif.Image.OriginalRawFileData, Undefined, If the DNG file was converted from a non-DNG raw file, then this tag contains the compressed contents of that original raw file. The contents of this tag always use the big-endian byte order. The tag contains a sequence of data blocks. Future versions of the DNG specification may define additional data blocks, so DNG readers should ignore extra bytes when parsing this tag. DNG readers should also detect the case where data blocks are missing from the end of the sequence, and should assume a default value for all the missing blocks. There are no padding or alignment bytes between data blocks. -ActiveArea, 50829, 0xc68d, Image, Exif.Image.ActiveArea, Short, This rectangle defines the active (non-masked) pixels of the sensor. The order of the rectangle coordinates is: top, left, bottom, right. -MaskedAreas, 50830, 0xc68e, Image, Exif.Image.MaskedAreas, Short, This tag contains a list of non-overlapping rectangle coordinates of fully masked pixels, which can be optionally used by DNG readers to measure the black encoding level. The order of each rectangle's coordinates is: top, left, bottom, right. If the raw image data has already had its black encoding level subtracted, then this tag should not be used, since the masked pixels are no longer useful. -AsShotICCProfile, 50831, 0xc68f, Image, Exif.Image.AsShotICCProfile, Undefined, This tag contains an ICC profile that, in conjunction with the AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to specify a default color rendering from camera color space coordinates (linear reference values) into the ICC profile connection space. The ICC profile connection space is an output referred colorimetric space, whereas the other color calibration tags in DNG specify a conversion into a scene referred colorimetric space. This means that the rendering in this profile should include any desired tone and gamut mapping needed to convert between scene referred values and output referred values. -AsShotPreProfileMatrix, 50832, 0xc690, Image, Exif.Image.AsShotPreProfileMatrix, SRational, This tag is used in conjunction with the AsShotICCProfile tag. It specifies a matrix that should be applied to the camera color space coordinates before processing the values through the ICC profile specified in the AsShotICCProfile tag. The matrix is stored in the row scan order. If ColorPlanes is greater than three, then this matrix can (but is not required to) reduce the dimensionality of the color data down to three components, in which case the AsShotICCProfile should have three rather than ColorPlanes input components. -CurrentICCProfile, 50833, 0xc691, Image, Exif.Image.CurrentICCProfile, Undefined, This tag is used in conjunction with the CurrentPreProfileMatrix tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -CurrentPreProfileMatrix, 50834, 0xc692, Image, Exif.Image.CurrentPreProfileMatrix, SRational, This tag is used in conjunction with the CurrentICCProfile tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -ExposureTime, 33434, 0x829a, Photo, Exif.Photo.ExposureTime, Rational, Exposure time, given in seconds (sec). -FNumber, 33437, 0x829d, Photo, Exif.Photo.FNumber, Rational, The F number. -ExposureProgram, 34850, 0x8822, Photo, Exif.Photo.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Photo, Exif.Photo.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. The tag value is an ASCII string compatible with the standard developed by the ASTM Technical Committee. -ISOSpeedRatings, 34855, 0x8827, Photo, Exif.Photo.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Photo, Exif.Photo.OECF, Undefined, Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO 14524. is the relationship between the camera optical input and the image values. -ExifVersion, 36864, 0x9000, Photo, Exif.Photo.ExifVersion, Undefined, The version of this standard supported. Nonexistence of this field is taken to mean nonconformance to the standard. -DateTimeOriginal, 36867, 0x9003, Photo, Exif.Photo.DateTimeOriginal, Ascii, The date and time when the original image data was generated. For a digital still camera the date and time the picture was taken are recorded. -DateTimeDigitized, 36868, 0x9004, Photo, Exif.Photo.DateTimeDigitized, Ascii, The date and time when the image was stored as digital data. -ComponentsConfiguration, 37121, 0x9101, Photo, Exif.Photo.ComponentsConfiguration, Undefined, Information specific to compressed data. The channels of each component are arranged in order from the 1st component to the 4th. For uncompressed data the data arrangement is given in the tag. However, since can only express the order of Y, Cb and Cr, this tag is provided for cases when compressed data uses components other than Y, Cb, and Cr and to enable support of other sequences. -CompressedBitsPerPixel, 37122, 0x9102, Photo, Exif.Photo.CompressedBitsPerPixel, Rational, Information specific to compressed data. The compression mode used for a compressed image is indicated in unit bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Photo, Exif.Photo.ShutterSpeedValue, SRational, Shutter speed. The unit is the APEX (Additive System of Photographic Exposure) setting. -ApertureValue, 37378, 0x9202, Photo, Exif.Photo.ApertureValue, Rational, The lens aperture. The unit is the APEX value. -BrightnessValue, 37379, 0x9203, Photo, Exif.Photo.BrightnessValue, SRational, The value of brightness. The unit is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -ExposureBiasValue, 37380, 0x9204, Photo, Exif.Photo.ExposureBiasValue, SRational, The exposure bias. The units is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -MaxApertureValue, 37381, 0x9205, Photo, Exif.Photo.MaxApertureValue, Rational, The smallest F number of the lens. The unit is the APEX value. Ordinarily it is given in the range of 00.00 to 99.99, but it is not limited to this range. -SubjectDistance, 37382, 0x9206, Photo, Exif.Photo.SubjectDistance, Rational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Photo, Exif.Photo.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Photo, Exif.Photo.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Photo, Exif.Photo.Flash, Short, This tag is recorded when an image is taken using a strobe light (flash). -FocalLength, 37386, 0x920a, Photo, Exif.Photo.FocalLength, Rational, The actual focal length of the lens, in mm. Conversion is not made to the focal length of a 35 mm film camera. -SubjectArea, 37396, 0x9214, Photo, Exif.Photo.SubjectArea, Short, This tag indicates the location and area of the main subject in the overall scene. -MakerNote, 37500, 0x927c, Photo, Exif.Photo.MakerNote, Undefined, A tag for manufacturers of Exif writers to record any desired information. The contents are up to the manufacturer. -UserComment, 37510, 0x9286, Photo, Exif.Photo.UserComment, Comment, A tag for Exif users to write keywords or comments on the image besides those in , and without the character code limitations of the tag. -SubSecTime, 37520, 0x9290, Photo, Exif.Photo.SubSecTime, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeOriginal, 37521, 0x9291, Photo, Exif.Photo.SubSecTimeOriginal, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeDigitized, 37522, 0x9292, Photo, Exif.Photo.SubSecTimeDigitized, Ascii, A tag used to record fractions of seconds for the tag. -FlashpixVersion, 40960, 0xa000, Photo, Exif.Photo.FlashpixVersion, Undefined, The FlashPix format version supported by a FPXR file. -ColorSpace, 40961, 0xa001, Photo, Exif.Photo.ColorSpace, Short, The color space information tag is always recorded as the color space specifier. Normally sRGB is used to define the color space based on the PC monitor conditions and environment. If a color space other than sRGB is used, Uncalibrated is set. Image data recorded as Uncalibrated can be treated as sRGB when it is converted to FlashPix. -PixelXDimension, 40962, 0xa002, Photo, Exif.Photo.PixelXDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid width of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. -PixelYDimension, 40963, 0xa003, Photo, Exif.Photo.PixelYDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid height of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. Since data padding is unnecessary in the vertical direction, the number of lines recorded in this valid image height tag will in fact be the same as that recorded in the SOF. -RelatedSoundFile, 40964, 0xa004, Photo, Exif.Photo.RelatedSoundFile, Ascii, This tag is used to record the name of an audio file related to the image data. The only relational information recorded here is the Exif audio file name and extension (an ASCII string consisting of 8 characters + '.' + 3 characters). The path is not recorded. -InteroperabilityTag, 40965, 0xa005, Photo, Exif.Photo.InteroperabilityTag, Long, Interoperability IFD is composed of tags which stores the information to ensure the Interoperability and pointed by the following tag located in Exif IFD. The Interoperability structure of Interoperability IFD is the same as TIFF defined IFD structure but does not contain the image data characteristically compared with normal TIFF IFD. -FlashEnergy, 41483, 0xa20b, Photo, Exif.Photo.FlashEnergy, Rational, Indicates the strobe energy at the time the image is captured, as measured in Beam Candle Power Seconds (BCPS). -SpatialFrequencyResponse, 41484, 0xa20c, Photo, Exif.Photo.SpatialFrequencyResponse, Undefined, This tag records the camera or input device spatial frequency table and SFR values in the direction of image width, image height, and diagonal direction, as specified in ISO 12233. -FocalPlaneXResolution, 41486, 0xa20e, Photo, Exif.Photo.FocalPlaneXResolution, Rational, Indicates the number of pixels in the image width (X) direction per on the camera focal plane. -FocalPlaneYResolution, 41487, 0xa20f, Photo, Exif.Photo.FocalPlaneYResolution, Rational, Indicates the number of pixels in the image height (V) direction per on the camera focal plane. -FocalPlaneResolutionUnit, 41488, 0xa210, Photo, Exif.Photo.FocalPlaneResolutionUnit, Short, Indicates the unit for measuring and . This value is the same as the . -SubjectLocation, 41492, 0xa214, Photo, Exif.Photo.SubjectLocation, Short, Indicates the location of the main subject in the scene. The value of this tag represents the pixel at the center of the main subject relative to the left edge, prior to rotation processing as per the tag. The first value indicates the X column number and second indicates the Y row number. -ExposureIndex, 41493, 0xa215, Photo, Exif.Photo.ExposureIndex, Rational, Indicates the exposure index selected on the camera or input device at the time the image is captured. -SensingMethod, 41495, 0xa217, Photo, Exif.Photo.SensingMethod, Short, Indicates the image sensor type on the camera or input device. -FileSource, 41728, 0xa300, Photo, Exif.Photo.FileSource, Undefined, Indicates the image source. If a DSC recorded the image, this tag value of this tag always be set to 3, indicating that the image was recorded on a DSC. -SceneType, 41729, 0xa301, Photo, Exif.Photo.SceneType, Undefined, Indicates the type of scene. If a DSC recorded the image, this tag value must always be set to 1, indicating that the image was directly photographed. -CFAPattern, 41730, 0xa302, Photo, Exif.Photo.CFAPattern, Undefined, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods. -CustomRendered, 41985, 0xa401, Photo, Exif.Photo.CustomRendered, Short, This tag indicates the use of special processing on image data, such as rendering geared to output. When special processing is performed, the reader is expected to disable or minimize any further processing. -ExposureMode, 41986, 0xa402, Photo, Exif.Photo.ExposureMode, Short, This tag indicates the exposure mode set when the image was shot. In auto-bracketing mode, the camera shoots a series of frames of the same scene at different exposure settings. -WhiteBalance, 41987, 0xa403, Photo, Exif.Photo.WhiteBalance, Short, This tag indicates the white balance mode set when the image was shot. -DigitalZoomRatio, 41988, 0xa404, Photo, Exif.Photo.DigitalZoomRatio, Rational, This tag indicates the digital zoom ratio when the image was shot. If the numerator of the recorded value is 0, this indicates that digital zoom was not used. -FocalLengthIn35mmFilm, 41989, 0xa405, Photo, Exif.Photo.FocalLengthIn35mmFilm, Short, This tag indicates the equivalent focal length assuming a 35mm film camera, in mm. A value of 0 means the focal length is unknown. Note that this tag differs from the tag. -SceneCaptureType, 41990, 0xa406, Photo, Exif.Photo.SceneCaptureType, Short, This tag indicates the type of scene that was shot. It can also be used to record the mode in which the image was shot. Note that this differs from the tag. -GainControl, 41991, 0xa407, Photo, Exif.Photo.GainControl, Short, This tag indicates the degree of overall image gain adjustment. -Contrast, 41992, 0xa408, Photo, Exif.Photo.Contrast, Short, This tag indicates the direction of contrast processing applied by the camera when the image was shot. -Saturation, 41993, 0xa409, Photo, Exif.Photo.Saturation, Short, This tag indicates the direction of saturation processing applied by the camera when the image was shot. -Sharpness, 41994, 0xa40a, Photo, Exif.Photo.Sharpness, Short, This tag indicates the direction of sharpness processing applied by the camera when the image was shot. -DeviceSettingDescription, 41995, 0xa40b, Photo, Exif.Photo.DeviceSettingDescription, Undefined, This tag indicates information on the picture-taking conditions of a particular camera model. The tag is used only to indicate the picture-taking conditions in the reader. -SubjectDistanceRange, 41996, 0xa40c, Photo, Exif.Photo.SubjectDistanceRange, Short, This tag indicates the distance to the subject. -ImageUniqueID, 42016, 0xa420, Photo, Exif.Photo.ImageUniqueID, Ascii, This tag indicates an identifier assigned uniquely to each image. It is recorded as an ASCII string equivalent to hexadecimal notation and 128-bit fixed length. -InteroperabilityIndex, 1, 0x0001, Iop, Exif.Iop.InteroperabilityIndex, Ascii, Indicates the identification of the Interoperability rule. Use "R98" for stating ExifR98 Rules. Four bytes used including the termination code (NULL). see the separate volume of Recommended Exif Interoperability Rules (ExifR98) for other tags used for ExifR98. -InteroperabilityVersion, 2, 0x0002, Iop, Exif.Iop.InteroperabilityVersion, Undefined, Interoperability version -RelatedImageFileFormat, 4096, 0x1000, Iop, Exif.Iop.RelatedImageFileFormat, Ascii, File format of image file -RelatedImageWidth, 4097, 0x1001, Iop, Exif.Iop.RelatedImageWidth, Long, Image width -RelatedImageLength, 4098, 0x1002, Iop, Exif.Iop.RelatedImageLength, Long, Image height -GPSVersionID, 0, 0x0000, GPSInfo, Exif.GPSInfo.GPSVersionID, Byte, Indicates the version of . The version is given as 2.0.0.0. This tag is mandatory when tag is present. (Note: The tag is given in bytes, unlike the tag. When the version is 2.0.0.0, the tag value is 02000000.H). -GPSLatitudeRef, 1, 0x0001, GPSInfo, Exif.GPSInfo.GPSLatitudeRef, Ascii, Indicates whether the latitude is north or south latitude. The ASCII value 'N' indicates north latitude, and 'S' is south latitude. -GPSLatitude, 2, 0x0002, GPSInfo, Exif.GPSInfo.GPSLatitude, Rational, Indicates the latitude. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is dd/1,mmmm/100,0/1. -GPSLongitudeRef, 3, 0x0003, GPSInfo, Exif.GPSInfo.GPSLongitudeRef, Ascii, Indicates whether the longitude is east or west longitude. ASCII 'E' indicates east longitude, and 'W' is west longitude. -GPSLongitude, 4, 0x0004, GPSInfo, Exif.GPSInfo.GPSLongitude, Rational, Indicates the longitude. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is ddd/1,mmmm/100,0/1. -GPSAltitudeRef, 5, 0x0005, GPSInfo, Exif.GPSInfo.GPSAltitudeRef, Byte, Indicates the altitude used as the reference altitude. If the reference is sea level and the altitude is above sea level, 0 is given. If the altitude is below sea level, a value of 1 is given and the altitude is indicated as an absolute value in the GSPAltitude tag. The reference unit is meters. Note that this tag is BYTE type, unlike other reference tags. -GPSAltitude, 6, 0x0006, GPSInfo, Exif.GPSInfo.GPSAltitude, Rational, Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is expressed as one RATIONAL value. The reference unit is meters. -GPSTimeStamp, 7, 0x0007, GPSInfo, Exif.GPSInfo.GPSTimeStamp, Rational, Indicates the time as UTC (Coordinated Universal Time). is expressed as three RATIONAL values giving the hour, minute, and second (atomic clock). -GPSSatellites, 8, 0x0008, GPSInfo, Exif.GPSInfo.GPSSatellites, Ascii, Indicates the GPS satellites used for measurements. This tag can be used to describe the number of satellites, their ID number, angle of elevation, azimuth, SNR and other information in ASCII notation. The format is not specified. If the GPS receiver is incapable of taking measurements, value of the tag is set to NULL. -GPSStatus, 9, 0x0009, GPSInfo, Exif.GPSInfo.GPSStatus, Ascii, Indicates the status of the GPS receiver when the image is recorded. "A" means measurement is in progress, and "V" means the measurement is Interoperability. -GPSMeasureMode, 10, 0x000a, GPSInfo, Exif.GPSInfo.GPSMeasureMode, Ascii, Indicates the GPS measurement mode. "2" means two-dimensional measurement and "3" means three-dimensional measurement is in progress. -GPSDOP, 11, 0x000b, GPSInfo, Exif.GPSInfo.GPSDOP, Rational, Indicates the GPS DOP (data degree of precision). An HDOP value is written during two-dimensional measurement, and PDOP during three-dimensional measurement. -GPSSpeedRef, 12, 0x000c, GPSInfo, Exif.GPSInfo.GPSSpeedRef, Ascii, Indicates the unit used to express the GPS receiver speed of movement. "K" "M" and "N" represents kilometers per hour, miles per hour, and knots. -GPSSpeed, 13, 0x000d, GPSInfo, Exif.GPSInfo.GPSSpeed, Rational, Indicates the speed of GPS receiver movement. -GPSTrackRef, 14, 0x000e, GPSInfo, Exif.GPSInfo.GPSTrackRef, Ascii, Indicates the reference for giving the direction of GPS receiver movement. "T" denotes true direction and "M" is magnetic direction. -GPSTrack, 15, 0x000f, GPSInfo, Exif.GPSInfo.GPSTrack, Rational, Indicates the direction of GPS receiver movement. The range of values is from 0.00 to 359.99. -GPSImgDirectionRef, 16, 0x0010, GPSInfo, Exif.GPSInfo.GPSImgDirectionRef, Ascii, Indicates the reference for giving the direction of the image when it is captured. "T" denotes true direction and "M" is magnetic direction. -GPSImgDirection, 17, 0x0011, GPSInfo, Exif.GPSInfo.GPSImgDirection, Rational, Indicates the direction of the image when it was captured. The range of values is from 0.00 to 359.99. -GPSMapDatum, 18, 0x0012, GPSInfo, Exif.GPSInfo.GPSMapDatum, Ascii, Indicates the geodetic survey data used by the GPS receiver. If the survey data is restricted to Japan, the value of this tag is "TOKYO" or "WGS-84". -GPSDestLatitudeRef, 19, 0x0013, GPSInfo, Exif.GPSInfo.GPSDestLatitudeRef, Ascii, Indicates whether the latitude of the destination point is north or south latitude. The ASCII value "N" indicates north latitude, and "S" is south latitude. -GPSDestLatitude, 20, 0x0014, GPSInfo, Exif.GPSInfo.GPSDestLatitude, Rational, Indicates the latitude of the destination point. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If latitude is expressed as degrees, minutes and seconds, a typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be dd/1,mmmm/100,0/1. -GPSDestLongitudeRef, 21, 0x0015, GPSInfo, Exif.GPSInfo.GPSDestLongitudeRef, Ascii, Indicates whether the longitude of the destination point is east or west longitude. ASCII "E" indicates east longitude, and "W" is west longitude. -GPSDestLongitude, 22, 0x0016, GPSInfo, Exif.GPSInfo.GPSDestLongitude, Rational, Indicates the longitude of the destination point. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If longitude is expressed as degrees, minutes and seconds, a typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be ddd/1,mmmm/100,0/1. -GPSDestBearingRef, 23, 0x0017, GPSInfo, Exif.GPSInfo.GPSDestBearingRef, Ascii, Indicates the reference used for giving the bearing to the destination point. "T" denotes true direction and "M" is magnetic direction. -GPSDestBearing, 24, 0x0018, GPSInfo, Exif.GPSInfo.GPSDestBearing, Rational, Indicates the bearing to the destination point. The range of values is from 0.00 to 359.99. -GPSDestDistanceRef, 25, 0x0019, GPSInfo, Exif.GPSInfo.GPSDestDistanceRef, Ascii, Indicates the unit used to express the distance to the destination point. "K", "M" and "N" represent kilometers, miles and knots. -GPSDestDistance, 26, 0x001a, GPSInfo, Exif.GPSInfo.GPSDestDistance, Rational, Indicates the distance to the destination point. -GPSProcessingMethod, 27, 0x001b, GPSInfo, Exif.GPSInfo.GPSProcessingMethod, Undefined, A character string recording the name of the method used for location finding. The first byte indicates the character code used, and this is followed by the name of the method. -GPSAreaInformation, 28, 0x001c, GPSInfo, Exif.GPSInfo.GPSAreaInformation, Undefined, A character string recording the name of the GPS area. The first byte indicates the character code used, and this is followed by the name of the GPS area. -GPSDateStamp, 29, 0x001d, GPSInfo, Exif.GPSInfo.GPSDateStamp, Ascii, A character string recording date and time information relative to UTC (Coordinated Universal Time). The format is "YYYY:MM:DD.". -GPSDifferential, 30, 0x001e, GPSInfo, Exif.GPSInfo.GPSDifferential, Short, Indicates whether differential correction is applied to the GPS receiver. -Usage: bin\DebugDLL\tiff-test.exe file - /usr/lib /usr lib - /usr/ / usr - usr . usr - / / - . . . - .. . .. - /// / - /usr/.emacs /usr .emacs - /usr/.emacs/ /usr .emacs - /usr/.emacs// /usr .emacs - usr/.emacs usr .emacs - .emacs . .emacs - .emacs.gz . .emacs.gz .gz - /tmp/image.jpg /tmp image.jpg .jpg -/tmp/.image.jpg /tmp .image.jpg .jpg - /image.jpg / image.jpg .jpg - image.jpg . image.jpg .jpg - image.jpg// . image.jpg .jpg - /////image.jpg / image.jpg .jpg - /foo.bar/image /foo.bar image -/foo.bar/images.tar.gz /foo.bar images.tar.gz .gz -d:\foo.bar\images.tar.gz d:\foo.bar images.tar.gz .gz -Usage: write-test file case - -where case is an integer between 1 and 11 -Usage: bin\DebugDLL\write2-test.exe file -Usage: bin\DebugDLL\xmpparse.exe file -Usage: bin\DebugDLL\xmpparser-test.exe file -Xmp.dc.source XmpText 13 xmpsample.cpp -Xmp.dc.subject XmpBag 2 Palmtree, Rubbertree -Xmp.dc.title LangAlt 2 lang="de-DE" Sonnenuntergang am Strand, lang="en-US" Sunset on the beach -Xmp.dc.one XmpText 2 -1 -Xmp.dc.two XmpText 6 3.1415 -Xmp.dc.three XmpText 3 5/7 -Xmp.dc.four XmpText 3 255 -Xmp.dc.five XmpText 3 256 -Xmp.dc.six XmpText 5 False -Xmp.dc.seven XmpText 5 Seven -Xmp.dc.format XmpText 10 image/jpeg -Xmp.dc.creator XmpSeq 3 1) The first creator, 2) The second creator, 3) And another one -Xmp.dc.description LangAlt 2 lang="x-default" Hello, World, lang="de-DE" Hallo, Welt -Xmp.tiff.ImageDescription LangAlt 2 lang="x-default" TIFF image description, lang="de-DE" TIFF Bildbeschreibung -Xmp.ns.myProperty XmpText 7 myValue -Xmp.xmpDM.videoFrameSize/stDim:w XmpText 2 16 -Xmp.xmpDM.videoFrameSize/stDim:h XmpText 1 9 -Xmp.xmpDM.videoFrameSize/stDim:unit XmpText 4 inch -Xmp.dc.publisher XmpBag 1 James Bond -Xmp.dc.publisher[1]/?ns:role XmpText 12 secret agent -Xmp.dc.creator[2]/?ns:role XmpText 10 programmer -Xmp.xmpBJ.JobRef XmpText 0 type="Bag" -Xmp.xmpBJ.JobRef[1]/stJob:name XmpText 14 Birthday party -Xmp.xmpBJ.JobRef[1]/stJob:role XmpText 12 Photographer -Xmp.xmpBJ.JobRef[2]/stJob:name XmpText 16 Wedding ceremony -Xmp.xmpBJ.JobRef[2]/stJob:role XmpText 8 Best man - - - - - - - Palmtree - Rubbertree - - - - - Sonnenuntergang am Strand - Sunset on the beach - - - - - 1) The first creator - - 2) The second creator - programmer - - 3) And another one - - - - - Hello, World - Hallo, Welt - - - - - - James Bond - secret agent - - - - - - TIFF image description - TIFF Bildbeschreibung - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Usage: bin\Release\addmoddel.exe file -Usage: bin\Release\convert-test.exe file -Usage: bin\Release\exifcomment.exe file -Usage: bin\Release\exifdata-test.exe file -Usage: bin\Release\exifprint.exe file -Usage: exiv2.exe [ options ] [ action ] file ... - -Manipulate the Exif metadata of images. -Usage: bin\Release\iotest.exe filein fileout1 fileout2 -fileouts are overwritten and should match filein exactly -Usage: bin\Release\iptceasy.exe file -Usage: bin\Release\iptcprint.exe file -Usage: bin\Release\iptctest.exe image -Commands read from stdin. -Usage: bin\Release\largeiptc-test.exe image datafile - -Reads and writes raw metadata. Use -h option for help. -Usage: metacopy.exe [-iecaph] readfile writefile -Usage: bin\Release\mmap-test.exe file -Usage: bin\Release\prevtest.exe file -string long float Rational -True 1 1 1/1 -False 0 0 0/1 -t 1 1 1/1 -f 0 0 0/1 --1 -1 -1 -1/1 -0 0 0 0/1 -1 1 1 1/1 -0.0 0 0 0/1 -0.1 0 0.1 1/10 -0.01 0 0.01 1/100 -0.001 0 0.001 1/1000 --1.49999 -1 -1.49999 -149999/100000 --1.5 -1 -1.5 -3/2 -1.49999 1 1.49999 149999/100000 -1.5 1 1.5 3/2 -0/1 0 0 0/1 -1/1 1 1 1/1 -1/3 0 0.333333 1/3 --1/3 0 -0.333333 -1/3 -4/3 1 1.33333 4/3 --4/3 -1 -1.33333 -4/3 -0/0 nok nok 0/0 -text nok nok nok -ProcessingSoftware, 11, 0x000b, Image, Exif.Image.ProcessingSoftware, Ascii, The name and version of the software used to post-process the picture. -NewSubfileType, 254, 0x00fe, Image, Exif.Image.NewSubfileType, Long, A general indication of the kind of data contained in this subfile. -SubfileType, 255, 0x00ff, Image, Exif.Image.SubfileType, Short, A general indication of the kind of data contained in this subfile. This field is deprecated. The NewSubfileType field should be used instead. -ImageWidth, 256, 0x0100, Image, Exif.Image.ImageWidth, Long, The number of columns of image data, equal to the number of pixels per row. In JPEG compressed data a JPEG marker is used instead of this tag. -ImageLength, 257, 0x0101, Image, Exif.Image.ImageLength, Long, The number of rows of image data. In JPEG compressed data a JPEG marker is used instead of this tag. -BitsPerSample, 258, 0x0102, Image, Exif.Image.BitsPerSample, Short, The number of bits per image component. In this standard each component of the image is 8 bits, so the value for this tag is 8. See also . In JPEG compressed data a JPEG marker is used instead of this tag. -Compression, 259, 0x0103, Image, Exif.Image.Compression, Short, The compression scheme used for the image data. When a primary image is JPEG compressed, this designation is not necessary and is omitted. When thumbnails use JPEG compression, this tag value is set to 6. -PhotometricInterpretation, 262, 0x0106, Image, Exif.Image.PhotometricInterpretation, Short, The pixel composition. In JPEG compressed data a JPEG marker is used instead of this tag. -Threshholding, 263, 0x0107, Image, Exif.Image.Threshholding, Short, For black and white TIFF files that represent shades of gray, the technique used to convert from gray to black and white pixels. -CellWidth, 264, 0x0108, Image, Exif.Image.CellWidth, Short, The width of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -CellLength, 265, 0x0109, Image, Exif.Image.CellLength, Short, The length of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -FillOrder, 266, 0x010a, Image, Exif.Image.FillOrder, Short, The logical order of bits within a byte -DocumentName, 269, 0x010d, Image, Exif.Image.DocumentName, Ascii, The name of the document from which this image was scanned -ImageDescription, 270, 0x010e, Image, Exif.Image.ImageDescription, Ascii, A character string giving the title of the image. It may be a comment such as "1988 company picnic" or the like. Two-bytes character codes cannot be used. When a 2-bytes code is necessary, the Exif Private tag is to be used. -Make, 271, 0x010f, Image, Exif.Image.Make, Ascii, The manufacturer of the recording equipment. This is the manufacturer of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -Model, 272, 0x0110, Image, Exif.Image.Model, Ascii, The model name or model number of the equipment. This is the model name or number of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -StripOffsets, 273, 0x0111, Image, Exif.Image.StripOffsets, Long, For each strip, the byte offset of that strip. It is recommended that this be selected so the number of strip bytes does not exceed 64 Kbytes. With JPEG compressed data this designation is not needed and is omitted. See also and . -Orientation, 274, 0x0112, Image, Exif.Image.Orientation, Short, The image orientation viewed in terms of rows and columns. -SamplesPerPixel, 277, 0x0115, Image, Exif.Image.SamplesPerPixel, Short, The number of components per pixel. Since this standard applies to RGB and YCbCr images, the value set for this tag is 3. In JPEG compressed data a JPEG marker is used instead of this tag. -RowsPerStrip, 278, 0x0116, Image, Exif.Image.RowsPerStrip, Long, The number of rows per strip. This is the number of rows in the image of one strip when an image is divided into strips. With JPEG compressed data this designation is not needed and is omitted. See also and . -StripByteCounts, 279, 0x0117, Image, Exif.Image.StripByteCounts, Long, The total number of bytes in each strip. With JPEG compressed data this designation is not needed and is omitted. -XResolution, 282, 0x011a, Image, Exif.Image.XResolution, Rational, The number of pixels per in the direction. When the image resolution is unknown, 72 [dpi] is designated. -YResolution, 283, 0x011b, Image, Exif.Image.YResolution, Rational, The number of pixels per in the direction. The same value as is designated. -PlanarConfiguration, 284, 0x011c, Image, Exif.Image.PlanarConfiguration, Short, Indicates whether pixel components are recorded in a chunky or planar format. In JPEG compressed files a JPEG marker is used instead of this tag. If this field does not exist, the TIFF default of 1 (chunky) is assumed. -GrayResponseUnit, 290, 0x0122, Image, Exif.Image.GrayResponseUnit, Short, The precision of the information contained in the GrayResponseCurve. -GrayResponseCurve, 291, 0x0123, Image, Exif.Image.GrayResponseCurve, Short, For grayscale data, the optical density of each possible pixel value. -T4Options, 292, 0x0124, Image, Exif.Image.T4Options, Long, T.4-encoding options. -T6Options, 293, 0x0125, Image, Exif.Image.T6Options, Long, T.6-encoding options. -ResolutionUnit, 296, 0x0128, Image, Exif.Image.ResolutionUnit, Short, The unit for measuring and . The same unit is used for both and . If the image resolution is unknown, 2 (inches) is designated. -TransferFunction, 301, 0x012d, Image, Exif.Image.TransferFunction, Short, A transfer function for the image, described in tabular style. Normally this tag is not necessary, since color space is specified in the color space information tag (). -Software, 305, 0x0131, Image, Exif.Image.Software, Ascii, This tag records the name and version of the software or firmware of the camera or image input device used to generate the image. The detailed format is not specified, but it is recommended that the example shown below be followed. When the field is left blank, it is treated as unknown. -DateTime, 306, 0x0132, Image, Exif.Image.DateTime, Ascii, The date and time of image creation. In Exif standard, it is the date and time the file was changed. -Artist, 315, 0x013b, Image, Exif.Image.Artist, Ascii, This tag records the name of the camera owner, photographer or image creator. The detailed format is not specified, but it is recommended that the information be written as in the example below for ease of Interoperability. When the field is left blank, it is treated as unknown. Ex.) "Camera owner, John Smith; Photographer, Michael Brown; Image creator, Ken James" -HostComputer, 316, 0x013c, Image, Exif.Image.HostComputer, Ascii, This tag records information about the host computer used to generate the image. -Predictor, 317, 0x013d, Image, Exif.Image.Predictor, Short, A predictor is a mathematical operator that is applied to the image data before an encoding scheme is applied. -WhitePoint, 318, 0x013e, Image, Exif.Image.WhitePoint, Rational, The chromaticity of the white point of the image. Normally this tag is not necessary, since color space is specified in the colorspace information tag (). -PrimaryChromaticities, 319, 0x013f, Image, Exif.Image.PrimaryChromaticities, Rational, The chromaticity of the three primary colors of the image. Normally this tag is not necessary, since colorspace is specified in the colorspace information tag (). -ColorMap, 320, 0x0140, Image, Exif.Image.ColorMap, Short, A color map for palette color images. This field defines a Red-Green-Blue color map (often called a lookup table) for palette-color images. In a palette-color image, a pixel value is used to index into an RGB lookup table. -HalftoneHints, 321, 0x0141, Image, Exif.Image.HalftoneHints, Short, The purpose of the HalftoneHints field is to convey to the halftone function the range of gray levels within a colorimetrically-specified image that should retain tonal detail. -TileWidth, 322, 0x0142, Image, Exif.Image.TileWidth, Short, The tile width in pixels. This is the number of columns in each tile. -TileLength, 323, 0x0143, Image, Exif.Image.TileLength, Short, The tile length (height) in pixels. This is the number of rows in each tile. -TileOffsets, 324, 0x0144, Image, Exif.Image.TileOffsets, Short, For each tile, the byte offset of that tile, as compressed and stored on disk. The offset is specified with respect to the beginning of the TIFF file. Note that this implies that each tile has a location independent of the locations of other tiles. -TileByteCounts, 325, 0x0145, Image, Exif.Image.TileByteCounts, Short, For each tile, the number of (compressed) bytes in that tile. See TileOffsets for a description of how the byte counts are ordered. -SubIFDs, 330, 0x014a, Image, Exif.Image.SubIFDs, Long, Defined by Adobe Corporation to enable TIFF Trees within a TIFF file. -InkSet, 332, 0x014c, Image, Exif.Image.InkSet, Short, The set of inks used in a separated (PhotometricInterpretation=5) image. -InkNames, 333, 0x014d, Image, Exif.Image.InkNames, Ascii, The name of each ink used in a separated (PhotometricInterpretation=5) image. -NumberOfInks, 334, 0x014e, Image, Exif.Image.NumberOfInks, Short, The number of inks. Usually equal to SamplesPerPixel, unless there are extra samples. -DotRange, 336, 0x0150, Image, Exif.Image.DotRange, Byte, The component values that correspond to a 0% dot and 100% dot. -TargetPrinter, 337, 0x0151, Image, Exif.Image.TargetPrinter, Ascii, A description of the printing environment for which this separation is intended. -ExtraSamples, 338, 0x0152, Image, Exif.Image.ExtraSamples, Short, Specifies that each pixel has m extra components whose interpretation is defined by one of the values listed below. -SampleFormat, 339, 0x0153, Image, Exif.Image.SampleFormat, Short, This field specifies how to interpret each data sample in a pixel. -SMinSampleValue, 340, 0x0154, Image, Exif.Image.SMinSampleValue, Short, This field specifies the minimum sample value. -SMaxSampleValue, 341, 0x0155, Image, Exif.Image.SMaxSampleValue, Short, This field specifies the maximum sample value. -TransferRange, 342, 0x0156, Image, Exif.Image.TransferRange, Short, Expands the range of the TransferFunction -ClipPath, 343, 0x0157, Image, Exif.Image.ClipPath, Byte, A TIFF ClipPath is intended to mirror the essentials of PostScript's path creation functionality. -XClipPathUnits, 344, 0x0158, Image, Exif.Image.XClipPathUnits, SShort, The number of units that span the width of the image, in terms of integer ClipPath coordinates. -YClipPathUnits, 345, 0x0159, Image, Exif.Image.YClipPathUnits, SShort, The number of units that span the height of the image, in terms of integer ClipPath coordinates. -Indexed, 346, 0x015a, Image, Exif.Image.Indexed, Short, Indexed images are images where the 'pixels' do not represent color values, but rather an index (usually 8-bit) into a separate color table, the ColorMap. -JPEGTables, 347, 0x015b, Image, Exif.Image.JPEGTables, Undefined, This optional tag may be used to encode the JPEG quantization andHuffman tables for subsequent use by the JPEG decompression process. -OPIProxy, 351, 0x015f, Image, Exif.Image.OPIProxy, Short, OPIProxy gives information concerning whether this image is a low-resolution proxy of a high-resolution image (Adobe OPI). -JPEGProc, 512, 0x0200, Image, Exif.Image.JPEGProc, Long, This field indicates the process used to produce the compressed data -JPEGInterchangeFormat, 513, 0x0201, Image, Exif.Image.JPEGInterchangeFormat, Long, The offset to the start byte (SOI) of JPEG compressed thumbnail data. This is not used for primary image JPEG data. -JPEGInterchangeFormatLength, 514, 0x0202, Image, Exif.Image.JPEGInterchangeFormatLength, Long, The number of bytes of JPEG compressed thumbnail data. This is not used for primary image JPEG data. JPEG thumbnails are not divided but are recorded as a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not be recorded. Compressed thumbnails must be recorded in no more than 64 Kbytes, including all other data to be recorded in APP1. -JPEGRestartInterval, 515, 0x0203, Image, Exif.Image.JPEGRestartInterval, Short, This Field indicates the length of the restart interval used in the compressed image data. -JPEGLosslessPredictors, 517, 0x0205, Image, Exif.Image.JPEGLosslessPredictors, Short, This Field points to a list of lossless predictor-selection values, one per component. -JPEGPointTransforms, 518, 0x0206, Image, Exif.Image.JPEGPointTransforms, Short, This Field points to a list of point transform values, one per component. -JPEGQTables, 519, 0x0207, Image, Exif.Image.JPEGQTables, Long, This Field points to a list of offsets to the quantization tables, one per component. -JPEGDCTables, 520, 0x0208, Image, Exif.Image.JPEGDCTables, Long, This Field points to a list of offsets to the DC Huffman tables or the lossless Huffman tables, one per component. -JPEGACTables, 521, 0x0209, Image, Exif.Image.JPEGACTables, Long, This Field points to a list of offsets to the Huffman AC tables, one per component. -YCbCrCoefficients, 529, 0x0211, Image, Exif.Image.YCbCrCoefficients, Rational, The matrix coefficients for transformation from RGB to YCbCr image data. No default is given in TIFF; but here the value given in Appendix E, "Color Space Guidelines", is used as the default. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability this condition. -YCbCrSubSampling, 530, 0x0212, Image, Exif.Image.YCbCrSubSampling, Short, The sampling ratio of chrominance components in relation to the luminance component. In JPEG compressed data a JPEG marker is used instead of this tag. -YCbCrPositioning, 531, 0x0213, Image, Exif.Image.YCbCrPositioning, Short, The position of chrominance components in relation to the luminance component. This field is designated only for JPEG compressed data or uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr = 4:2:2 it is recommended in this standard that 2 (co-sited) be used to record data, in order to improve the image quality when viewed on TV systems. When this field does not exist, the reader shall assume the TIFF default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is recommended. If the reader does not have the capability of supporting both kinds of , it shall follow the TIFF default regardless of the value in this field. It is preferable that readers be able to support both centered and co-sited positioning. -ReferenceBlackWhite, 532, 0x0214, Image, Exif.Image.ReferenceBlackWhite, Rational, The reference black point value and reference white point value. No defaults are given in TIFF, but the values below are given as defaults here. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability these conditions. -XMLPacket, 700, 0x02bc, Image, Exif.Image.XMLPacket, Byte, XMP Metadata (Adobe technote 9-14-02) -Rating, 18246, 0x4746, Image, Exif.Image.Rating, Short, Rating tag used by Windows -RatingPercent, 18249, 0x4749, Image, Exif.Image.RatingPercent, Short, Rating tag used by Windows, value in percent -ImageID, 32781, 0x800d, Image, Exif.Image.ImageID, Ascii, ImageID is the full pathname of the original, high-resolution image, or any other identifying string that uniquely identifies the original image (Adobe OPI). -CFARepeatPatternDim, 33421, 0x828d, Image, Exif.Image.CFARepeatPatternDim, Short, Contains two values representing the minimum rows and columns to define the repeating patterns of the color filter array -CFAPattern, 33422, 0x828e, Image, Exif.Image.CFAPattern, Byte, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods -BatteryLevel, 33423, 0x828f, Image, Exif.Image.BatteryLevel, Rational, Contains a value of the battery level as a fraction or string -Copyright, 33432, 0x8298, Image, Exif.Image.Copyright, Ascii, Copyright information. In this standard the tag is used to indicate both the photographer and editor copyrights. It is the copyright notice of the person or organization claiming rights to the image. The Interoperability copyright statement including date and rights should be written in this field; e.g., "Copyright, John Smith, 19xx. All rights reserved.". In this standard the field records both the photographer and editor copyrights, with each recorded in a separate part of the statement. When there is a clear distinction between the photographer and editor copyrights, these are to be written in the order of photographer followed by editor copyright, separated by NULL (in this case since the statement also ends with a NULL, there are two NULL codes). When only the photographer copyright is given, it is terminated by one NULL code . When only the editor copyright is given, the photographer copyright part consists of one space followed by a terminating NULL code, then the editor copyright is given. When the field is left blank, it is treated as unknown. -ExposureTime, 33434, 0x829a, Image, Exif.Image.ExposureTime, Rational, Exposure time, given in seconds. -FNumber, 33437, 0x829d, Image, Exif.Image.FNumber, Rational, The F number. -IPTCNAA, 33723, 0x83bb, Image, Exif.Image.IPTCNAA, Long, Contains an IPTC/NAA record -ImageResources, 34377, 0x8649, Image, Exif.Image.ImageResources, Byte, Contains information embedded by the Adobe Photoshop application -ExifTag, 34665, 0x8769, Image, Exif.Image.ExifTag, Long, A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure as that of the IFD specified in TIFF. ordinarily, however, it does not contain image data as in the case of TIFF. -InterColorProfile, 34675, 0x8773, Image, Exif.Image.InterColorProfile, Undefined, Contains an InterColor Consortium (ICC) format color space characterization/profile -ExposureProgram, 34850, 0x8822, Image, Exif.Image.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Image, Exif.Image.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. -GPSTag, 34853, 0x8825, Image, Exif.Image.GPSTag, Long, A pointer to the GPS Info IFD. The Interoperability structure of the GPS Info IFD, like that of Exif IFD, has no image data. -ISOSpeedRatings, 34855, 0x8827, Image, Exif.Image.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Image, Exif.Image.OECF, Undefined, Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524. -Interlace, 34857, 0x8829, Image, Exif.Image.Interlace, Short, Indicates the field number of multifield images. -TimeZoneOffset, 34858, 0x882a, Image, Exif.Image.TimeZoneOffset, SShort, This optional tag encodes the time zone of the camera clock (relativeto Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the picture was taken. It may also contain the time zone offsetof the clock used to create the DateTime tag-value when the image wasmodified. -SelfTimerMode, 34859, 0x882b, Image, Exif.Image.SelfTimerMode, Short, Number of seconds image capture was delayed from button press. -DateTimeOriginal, 36867, 0x9003, Image, Exif.Image.DateTimeOriginal, Ascii, The date and time when the original image data was generated. -CompressedBitsPerPixel, 37122, 0x9102, Image, Exif.Image.CompressedBitsPerPixel, Rational, Specific to compressed data; states the compressed bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Image, Exif.Image.ShutterSpeedValue, SRational, Shutter speed. -ApertureValue, 37378, 0x9202, Image, Exif.Image.ApertureValue, Rational, The lens aperture. -BrightnessValue, 37379, 0x9203, Image, Exif.Image.BrightnessValue, SRational, The value of brightness. -ExposureBiasValue, 37380, 0x9204, Image, Exif.Image.ExposureBiasValue, SRational, The exposure bias. -MaxApertureValue, 37381, 0x9205, Image, Exif.Image.MaxApertureValue, Rational, The smallest F number of the lens. -SubjectDistance, 37382, 0x9206, Image, Exif.Image.SubjectDistance, SRational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Image, Exif.Image.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Image, Exif.Image.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Image, Exif.Image.Flash, Short, Indicates the status of flash when the image was shot. -FocalLength, 37386, 0x920a, Image, Exif.Image.FocalLength, Rational, The actual focal length of the lens, in mm. -FlashEnergy, 37387, 0x920b, Image, Exif.Image.FlashEnergy, Rational, Amount of flash energy (BCPS). -SpatialFrequencyResponse, 37388, 0x920c, Image, Exif.Image.SpatialFrequencyResponse, Undefined, SFR of the camera. -Noise, 37389, 0x920d, Image, Exif.Image.Noise, Undefined, Noise measurement values. -FocalPlaneXResolution, 37390, 0x920e, Image, Exif.Image.FocalPlaneXResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth direction for main image. -FocalPlaneYResolution, 37391, 0x920f, Image, Exif.Image.FocalPlaneYResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength direction for main image. -FocalPlaneResolutionUnit, 37392, 0x9210, Image, Exif.Image.FocalPlaneResolutionUnit, Short, Unit of measurement for FocalPlaneXResolution(37390) and FocalPlaneYResolution(37391). -ImageNumber, 37393, 0x9211, Image, Exif.Image.ImageNumber, Long, Number assigned to an image, e.g., in a chained image burst. -SecurityClassification, 37394, 0x9212, Image, Exif.Image.SecurityClassification, Ascii, Security classification assigned to the image. -ImageHistory, 37395, 0x9213, Image, Exif.Image.ImageHistory, Ascii, Record of what has been done to the image. -SubjectLocation, 37396, 0x9214, Image, Exif.Image.SubjectLocation, Short, Indicates the location and area of the main subject in the overall scene. -ExposureIndex, 37397, 0x9215, Image, Exif.Image.ExposureIndex, Rational, Encodes the camera exposure index setting when image was captured. -TIFFEPStandardID, 37398, 0x9216, Image, Exif.Image.TIFFEPStandardID, Byte, Contains four ASCII characters representing the TIFF/EP standard version of a TIFF/EP file, eg '1', '0', '0', '0' -SensingMethod, 37399, 0x9217, Image, Exif.Image.SensingMethod, Short, Type of image sensor. -XPTitle, 40091, 0x9c9b, Image, Exif.Image.XPTitle, Byte, Title tag used by Windows, encoded in UCS2 -XPComment, 40092, 0x9c9c, Image, Exif.Image.XPComment, Byte, Comment tag used by Windows, encoded in UCS2 -XPAuthor, 40093, 0x9c9d, Image, Exif.Image.XPAuthor, Byte, Author tag used by Windows, encoded in UCS2 -XPKeywords, 40094, 0x9c9e, Image, Exif.Image.XPKeywords, Byte, Keywords tag used by Windows, encoded in UCS2 -XPSubject, 40095, 0x9c9f, Image, Exif.Image.XPSubject, Byte, Subject tag used by Windows, encoded in UCS2 -PrintImageMatching, 50341, 0xc4a5, Image, Exif.Image.PrintImageMatching, Undefined, Print Image Matching, description needed. -DNGVersion, 50706, 0xc612, Image, Exif.Image.DNGVersion, Byte, This tag encodes the DNG four-tier version number. For files compliant with version 1.1.0.0 of the DNG specification, this tag should contain the bytes: 1, 1, 0, 0. -DNGBackwardVersion, 50707, 0xc613, Image, Exif.Image.DNGBackwardVersion, Byte, This tag specifies the oldest version of the Digital Negative specification for which a file is compatible. Readers shouldnot attempt to read a file if this tag specifies a version number that is higher than the version number of the specification the reader was based on. In addition to checking the version tags, readers should, for all tags, check the types, counts, and values, to verify it is able to correctly read the file. -UniqueCameraModel, 50708, 0xc614, Image, Exif.Image.UniqueCameraModel, Ascii, Defines a unique, non-localized name for the camera model that created the image in the raw file. This name should include the manufacturer's name to avoid conflicts, and should not be localized, even if the camera name itself is localized for different markets (see LocalizedCameraModel). This string may be used by reader software to index into per-model preferences and replacement profiles. -LocalizedCameraModel, 50709, 0xc615, Image, Exif.Image.LocalizedCameraModel, Byte, Similar to the UniqueCameraModel field, except the name can be localized for different markets to match the localization of the camera name. -CFAPlaneColor, 50710, 0xc616, Image, Exif.Image.CFAPlaneColor, Byte, Provides a mapping between the values in the CFAPattern tag and the plane numbers in LinearRaw space. This is a required tag for non-RGB CFA images. -CFALayout, 50711, 0xc617, Image, Exif.Image.CFALayout, Short, Describes the spatial layout of the CFA. -LinearizationTable, 50712, 0xc618, Image, Exif.Image.LinearizationTable, Short, Describes a lookup table that maps stored values into linear values. This tag is typically used to increase compression ratios by storing the raw data in a non-linear, more visually uniform space with fewer total encoding levels. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelRepeatDim, 50713, 0xc619, Image, Exif.Image.BlackLevelRepeatDim, Short, Specifies repeat pattern size for the BlackLevel tag. -BlackLevel, 50714, 0xc61a, Image, Exif.Image.BlackLevel, Rational, Specifies the zero light (a.k.a. thermal black or black current) encoding level, as a repeating pattern. The origin of this pattern is the top-left corner of the ActiveArea rectangle. The values are stored in row-column-sample scan order. -BlackLevelDeltaH, 50715, 0xc61b, Image, Exif.Image.BlackLevelDeltaH, SRational, If the zero light encoding level is a function of the image column, BlackLevelDeltaH specifies the difference between the zero light encoding level for each column and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelDeltaV, 50716, 0xc61c, Image, Exif.Image.BlackLevelDeltaV, SRational, If the zero light encoding level is a function of the image row, this tag specifies the difference between the zero light encoding level for each row and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -WhiteLevel, 50717, 0xc61d, Image, Exif.Image.WhiteLevel, Short, This tag specifies the fully saturated encoding level for the raw sample values. Saturation is caused either by the sensor itself becoming highly non-linear in response, or by the camera's analog to digital converter clipping. -DefaultScale, 50718, 0xc61e, Image, Exif.Image.DefaultScale, Rational, DefaultScale is required for cameras with non-square pixels. It specifies the default scale factors for each direction to convert the image to square pixels. Typically these factors are selected to approximately preserve total pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such as the Fujifilm SuperCCD, these two values should usually differ by a factor of 2.0. -DefaultCropOrigin, 50719, 0xc61f, Image, Exif.Image.DefaultCropOrigin, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropOrigin specifies the origin of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied), relative to the top-left corner of the ActiveArea rectangle. -DefaultCropSize, 50720, 0xc620, Image, Exif.Image.DefaultCropSize, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropSize specifies the size of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied). -ColorMatrix1, 50721, 0xc621, Image, Exif.Image.ColorMatrix1, SRational, ColorMatrix1 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the first calibration illuminant. The matrix values are stored in row scan order. The ColorMatrix1 tag is required for all non-monochrome DNG files. -ColorMatrix2, 50722, 0xc622, Image, Exif.Image.ColorMatrix2, SRational, ColorMatrix2 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the second calibration illuminant. The matrix values are stored in row scan order. -CameraCalibration1, 50723, 0xc623, Image, Exif.Image.CameraCalibration1, SRational, CameraClalibration1 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the first calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix1 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -CameraCalibration2, 50724, 0xc624, Image, Exif.Image.CameraCalibration2, SRational, CameraCalibration2 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the second calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix2 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -ReductionMatrix1, 50725, 0xc625, Image, Exif.Image.ReductionMatrix1, SRational, ReductionMatrix1 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the first calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -ReductionMatrix2, 50726, 0xc626, Image, Exif.Image.ReductionMatrix2, SRational, ReductionMatrix2 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the second calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -AnalogBalance, 50727, 0xc627, Image, Exif.Image.AnalogBalance, Rational, Normally the stored raw values are not white balanced, since any digital white balancing will reduce the dynamic range of the final image if the user decides to later adjust the white balance; however, if camera hardware is capable of white balancing the color channels before the signal is digitized, it can improve the dynamic range of the final image. AnalogBalance defines the gain, either analog (recommended) or digital (not recommended) that has been applied the stored raw values. -AsShotNeutral, 50728, 0xc628, Image, Exif.Image.AsShotNeutral, Short, Specifies the selected white balance at time of capture, encoded as the coordinates of a perfectly neutral color in linear reference space values. The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag. -AsShotWhiteXY, 50729, 0xc629, Image, Exif.Image.AsShotWhiteXY, Rational, Specifies the selected white balance at time of capture, encoded as x-y chromaticity coordinates. The inclusion of this tag precludes the inclusion of the AsShotNeutral tag. -BaselineExposure, 50730, 0xc62a, Image, Exif.Image.BaselineExposure, SRational, Camera models vary in the trade-off they make between highlight headroom and shadow noise. Some leave a significant amount of highlight headroom during a normal exposure. This allows significant negative exposure compensation to be applied during raw conversion, but also means normal exposures will contain more shadow noise. Other models leave less headroom during normal exposures. This allows for less negative exposure compensation, but results in lower shadow noise for normal exposures. Because of these differences, a raw converter needs to vary the zero point of its exposure compensation control from model to model. BaselineExposure specifies by how much (in EV units) to move the zero point. Positive values result in brighter default results, while negative values result in darker default results. -BaselineNoise, 50731, 0xc62b, Image, Exif.Image.BaselineNoise, Rational, Specifies the relative noise level of the camera model at a baseline ISO value of 100, compared to a reference camera model. Since noise levels tend to vary approximately with the square root of the ISO value, a raw converter can use this value, combined with the current ISO, to estimate the relative noise level of the current image. -BaselineSharpness, 50732, 0xc62c, Image, Exif.Image.BaselineSharpness, Rational, Specifies the relative amount of sharpening required for this camera model, compared to a reference camera model. Camera models vary in the strengths of their anti-aliasing filters. Cameras with weak or no filters require less sharpening than cameras with strong anti-aliasing filters. -BayerGreenSplit, 50733, 0xc62d, Image, Exif.Image.BayerGreenSplit, Long, Only applies to CFA images using a Bayer pattern filter array. This tag specifies, in arbitrary units, how closely the values of the green pixels in the blue/green rows track the values of the green pixels in the red/green rows. A value of zero means the two kinds of green pixels track closely, while a non-zero value means they sometimes diverge. The useful range for this tag is from 0 (no divergence) to about 5000 (quite large divergence). -LinearResponseLimit, 50734, 0xc62e, Image, Exif.Image.LinearResponseLimit, Rational, Some sensors have an unpredictable non-linearity in their response as they near the upper limit of their encoding range. This non-linearity results in color shifts in the highlight areas of the resulting image unless the raw converter compensates for this effect. LinearResponseLimit specifies the fraction of the encoding range above which the response may become significantly non-linear. -CameraSerialNumber, 50735, 0xc62f, Image, Exif.Image.CameraSerialNumber, Ascii, CameraSerialNumber contains the serial number of the camera or camera body that captured the image. -LensInfo, 50736, 0xc630, Image, Exif.Image.LensInfo, Rational, Contains information about the lens that captured the image. If the minimum f-stops are unknown, they should be encoded as 0/0. -ChromaBlurRadius, 50737, 0xc631, Image, Exif.Image.ChromaBlurRadius, Rational, ChromaBlurRadius provides a hint to the DNG reader about how much chroma blur should be applied to the image. If this tag is omitted, the reader will use its default amount of chroma blurring. Normally this tag is only included for non-CFA images, since the amount of chroma blur required for mosaic images is highly dependent on the de-mosaic algorithm, in which case the DNG reader's default value is likely optimized for its particular de-mosaic algorithm. -AntiAliasStrength, 50738, 0xc632, Image, Exif.Image.AntiAliasStrength, Rational, Provides a hint to the DNG reader about how strong the camera's anti-alias filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is prone to aliasing artifacts with some subjects), while a value of 1.0 means a strong anti-alias filter (i.e., the camera almost never has aliasing artifacts). -ShadowScale, 50739, 0xc633, Image, Exif.Image.ShadowScale, SRational, This tag is used by Adobe Camera Raw to control the sensitivity of its 'Shadows' slider. -DNGPrivateData, 50740, 0xc634, Image, Exif.Image.DNGPrivateData, Byte, Provides a way for camera manufacturers to store private data in the DNG file for use by their own raw converters, and to have that data preserved by programs that edit DNG files. -MakerNoteSafety, 50741, 0xc635, Image, Exif.Image.MakerNoteSafety, Short, MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is safe to preserve along with the rest of the EXIF data. File browsers and other image management software processing an image with a preserved MakerNote should be aware that any thumbnail image embedded in the MakerNote may be stale, and may not reflect the current state of the full size image. -CalibrationIlluminant1, 50778, 0xc65a, Image, Exif.Image.CalibrationIlluminant1, Short, The illuminant used for the first set of color calibration tags (ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for this tag are the same as the legal values for the LightSource EXIF tag. -CalibrationIlluminant2, 50779, 0xc65b, Image, Exif.Image.CalibrationIlluminant2, Short, The illuminant used for an optional second set of color calibration tags (ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for this tag are the same as the legal values for the CalibrationIlluminant1 tag; however, if both are included, neither is allowed to have a value of 0 (unknown). -BestQualityScale, 50780, 0xc65c, Image, Exif.Image.BestQualityScale, Rational, For some cameras, the best possible image quality is not achieved by preserving the total pixel count during conversion. For example, Fujifilm SuperCCD images have maximum detail when their total pixel count is doubled. This tag specifies the amount by which the values of the DefaultScale tag need to be multiplied to achieve the best quality image size. -RawDataUniqueID, 50781, 0xc65d, Image, Exif.Image.RawDataUniqueID, Byte, This tag contains a 16-byte unique identifier for the raw image data in the DNG file. DNG readers can use this tag to recognize a particular raw image, even if the file's name or the metadata contained in the file has been changed. If a DNG writer creates such an identifier, it should do so using an algorithm that will ensure that it is very unlikely two different images will end up having the same identifier. -OriginalRawFileName, 50827, 0xc68b, Image, Exif.Image.OriginalRawFileName, Byte, If the DNG file was converted from a non-DNG raw file, then this tag contains the file name of that original raw file. -OriginalRawFileData, 50828, 0xc68c, Image, Exif.Image.OriginalRawFileData, Undefined, If the DNG file was converted from a non-DNG raw file, then this tag contains the compressed contents of that original raw file. The contents of this tag always use the big-endian byte order. The tag contains a sequence of data blocks. Future versions of the DNG specification may define additional data blocks, so DNG readers should ignore extra bytes when parsing this tag. DNG readers should also detect the case where data blocks are missing from the end of the sequence, and should assume a default value for all the missing blocks. There are no padding or alignment bytes between data blocks. -ActiveArea, 50829, 0xc68d, Image, Exif.Image.ActiveArea, Short, This rectangle defines the active (non-masked) pixels of the sensor. The order of the rectangle coordinates is: top, left, bottom, right. -MaskedAreas, 50830, 0xc68e, Image, Exif.Image.MaskedAreas, Short, This tag contains a list of non-overlapping rectangle coordinates of fully masked pixels, which can be optionally used by DNG readers to measure the black encoding level. The order of each rectangle's coordinates is: top, left, bottom, right. If the raw image data has already had its black encoding level subtracted, then this tag should not be used, since the masked pixels are no longer useful. -AsShotICCProfile, 50831, 0xc68f, Image, Exif.Image.AsShotICCProfile, Undefined, This tag contains an ICC profile that, in conjunction with the AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to specify a default color rendering from camera color space coordinates (linear reference values) into the ICC profile connection space. The ICC profile connection space is an output referred colorimetric space, whereas the other color calibration tags in DNG specify a conversion into a scene referred colorimetric space. This means that the rendering in this profile should include any desired tone and gamut mapping needed to convert between scene referred values and output referred values. -AsShotPreProfileMatrix, 50832, 0xc690, Image, Exif.Image.AsShotPreProfileMatrix, SRational, This tag is used in conjunction with the AsShotICCProfile tag. It specifies a matrix that should be applied to the camera color space coordinates before processing the values through the ICC profile specified in the AsShotICCProfile tag. The matrix is stored in the row scan order. If ColorPlanes is greater than three, then this matrix can (but is not required to) reduce the dimensionality of the color data down to three components, in which case the AsShotICCProfile should have three rather than ColorPlanes input components. -CurrentICCProfile, 50833, 0xc691, Image, Exif.Image.CurrentICCProfile, Undefined, This tag is used in conjunction with the CurrentPreProfileMatrix tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -CurrentPreProfileMatrix, 50834, 0xc692, Image, Exif.Image.CurrentPreProfileMatrix, SRational, This tag is used in conjunction with the CurrentICCProfile tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -ExposureTime, 33434, 0x829a, Photo, Exif.Photo.ExposureTime, Rational, Exposure time, given in seconds (sec). -FNumber, 33437, 0x829d, Photo, Exif.Photo.FNumber, Rational, The F number. -ExposureProgram, 34850, 0x8822, Photo, Exif.Photo.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Photo, Exif.Photo.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. The tag value is an ASCII string compatible with the standard developed by the ASTM Technical Committee. -ISOSpeedRatings, 34855, 0x8827, Photo, Exif.Photo.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Photo, Exif.Photo.OECF, Undefined, Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO 14524. is the relationship between the camera optical input and the image values. -ExifVersion, 36864, 0x9000, Photo, Exif.Photo.ExifVersion, Undefined, The version of this standard supported. Nonexistence of this field is taken to mean nonconformance to the standard. -DateTimeOriginal, 36867, 0x9003, Photo, Exif.Photo.DateTimeOriginal, Ascii, The date and time when the original image data was generated. For a digital still camera the date and time the picture was taken are recorded. -DateTimeDigitized, 36868, 0x9004, Photo, Exif.Photo.DateTimeDigitized, Ascii, The date and time when the image was stored as digital data. -ComponentsConfiguration, 37121, 0x9101, Photo, Exif.Photo.ComponentsConfiguration, Undefined, Information specific to compressed data. The channels of each component are arranged in order from the 1st component to the 4th. For uncompressed data the data arrangement is given in the tag. However, since can only express the order of Y, Cb and Cr, this tag is provided for cases when compressed data uses components other than Y, Cb, and Cr and to enable support of other sequences. -CompressedBitsPerPixel, 37122, 0x9102, Photo, Exif.Photo.CompressedBitsPerPixel, Rational, Information specific to compressed data. The compression mode used for a compressed image is indicated in unit bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Photo, Exif.Photo.ShutterSpeedValue, SRational, Shutter speed. The unit is the APEX (Additive System of Photographic Exposure) setting. -ApertureValue, 37378, 0x9202, Photo, Exif.Photo.ApertureValue, Rational, The lens aperture. The unit is the APEX value. -BrightnessValue, 37379, 0x9203, Photo, Exif.Photo.BrightnessValue, SRational, The value of brightness. The unit is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -ExposureBiasValue, 37380, 0x9204, Photo, Exif.Photo.ExposureBiasValue, SRational, The exposure bias. The units is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -MaxApertureValue, 37381, 0x9205, Photo, Exif.Photo.MaxApertureValue, Rational, The smallest F number of the lens. The unit is the APEX value. Ordinarily it is given in the range of 00.00 to 99.99, but it is not limited to this range. -SubjectDistance, 37382, 0x9206, Photo, Exif.Photo.SubjectDistance, Rational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Photo, Exif.Photo.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Photo, Exif.Photo.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Photo, Exif.Photo.Flash, Short, This tag is recorded when an image is taken using a strobe light (flash). -FocalLength, 37386, 0x920a, Photo, Exif.Photo.FocalLength, Rational, The actual focal length of the lens, in mm. Conversion is not made to the focal length of a 35 mm film camera. -SubjectArea, 37396, 0x9214, Photo, Exif.Photo.SubjectArea, Short, This tag indicates the location and area of the main subject in the overall scene. -MakerNote, 37500, 0x927c, Photo, Exif.Photo.MakerNote, Undefined, A tag for manufacturers of Exif writers to record any desired information. The contents are up to the manufacturer. -UserComment, 37510, 0x9286, Photo, Exif.Photo.UserComment, Comment, A tag for Exif users to write keywords or comments on the image besides those in , and without the character code limitations of the tag. -SubSecTime, 37520, 0x9290, Photo, Exif.Photo.SubSecTime, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeOriginal, 37521, 0x9291, Photo, Exif.Photo.SubSecTimeOriginal, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeDigitized, 37522, 0x9292, Photo, Exif.Photo.SubSecTimeDigitized, Ascii, A tag used to record fractions of seconds for the tag. -FlashpixVersion, 40960, 0xa000, Photo, Exif.Photo.FlashpixVersion, Undefined, The FlashPix format version supported by a FPXR file. -ColorSpace, 40961, 0xa001, Photo, Exif.Photo.ColorSpace, Short, The color space information tag is always recorded as the color space specifier. Normally sRGB is used to define the color space based on the PC monitor conditions and environment. If a color space other than sRGB is used, Uncalibrated is set. Image data recorded as Uncalibrated can be treated as sRGB when it is converted to FlashPix. -PixelXDimension, 40962, 0xa002, Photo, Exif.Photo.PixelXDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid width of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. -PixelYDimension, 40963, 0xa003, Photo, Exif.Photo.PixelYDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid height of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. Since data padding is unnecessary in the vertical direction, the number of lines recorded in this valid image height tag will in fact be the same as that recorded in the SOF. -RelatedSoundFile, 40964, 0xa004, Photo, Exif.Photo.RelatedSoundFile, Ascii, This tag is used to record the name of an audio file related to the image data. The only relational information recorded here is the Exif audio file name and extension (an ASCII string consisting of 8 characters + '.' + 3 characters). The path is not recorded. -InteroperabilityTag, 40965, 0xa005, Photo, Exif.Photo.InteroperabilityTag, Long, Interoperability IFD is composed of tags which stores the information to ensure the Interoperability and pointed by the following tag located in Exif IFD. The Interoperability structure of Interoperability IFD is the same as TIFF defined IFD structure but does not contain the image data characteristically compared with normal TIFF IFD. -FlashEnergy, 41483, 0xa20b, Photo, Exif.Photo.FlashEnergy, Rational, Indicates the strobe energy at the time the image is captured, as measured in Beam Candle Power Seconds (BCPS). -SpatialFrequencyResponse, 41484, 0xa20c, Photo, Exif.Photo.SpatialFrequencyResponse, Undefined, This tag records the camera or input device spatial frequency table and SFR values in the direction of image width, image height, and diagonal direction, as specified in ISO 12233. -FocalPlaneXResolution, 41486, 0xa20e, Photo, Exif.Photo.FocalPlaneXResolution, Rational, Indicates the number of pixels in the image width (X) direction per on the camera focal plane. -FocalPlaneYResolution, 41487, 0xa20f, Photo, Exif.Photo.FocalPlaneYResolution, Rational, Indicates the number of pixels in the image height (V) direction per on the camera focal plane. -FocalPlaneResolutionUnit, 41488, 0xa210, Photo, Exif.Photo.FocalPlaneResolutionUnit, Short, Indicates the unit for measuring and . This value is the same as the . -SubjectLocation, 41492, 0xa214, Photo, Exif.Photo.SubjectLocation, Short, Indicates the location of the main subject in the scene. The value of this tag represents the pixel at the center of the main subject relative to the left edge, prior to rotation processing as per the tag. The first value indicates the X column number and second indicates the Y row number. -ExposureIndex, 41493, 0xa215, Photo, Exif.Photo.ExposureIndex, Rational, Indicates the exposure index selected on the camera or input device at the time the image is captured. -SensingMethod, 41495, 0xa217, Photo, Exif.Photo.SensingMethod, Short, Indicates the image sensor type on the camera or input device. -FileSource, 41728, 0xa300, Photo, Exif.Photo.FileSource, Undefined, Indicates the image source. If a DSC recorded the image, this tag value of this tag always be set to 3, indicating that the image was recorded on a DSC. -SceneType, 41729, 0xa301, Photo, Exif.Photo.SceneType, Undefined, Indicates the type of scene. If a DSC recorded the image, this tag value must always be set to 1, indicating that the image was directly photographed. -CFAPattern, 41730, 0xa302, Photo, Exif.Photo.CFAPattern, Undefined, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods. -CustomRendered, 41985, 0xa401, Photo, Exif.Photo.CustomRendered, Short, This tag indicates the use of special processing on image data, such as rendering geared to output. When special processing is performed, the reader is expected to disable or minimize any further processing. -ExposureMode, 41986, 0xa402, Photo, Exif.Photo.ExposureMode, Short, This tag indicates the exposure mode set when the image was shot. In auto-bracketing mode, the camera shoots a series of frames of the same scene at different exposure settings. -WhiteBalance, 41987, 0xa403, Photo, Exif.Photo.WhiteBalance, Short, This tag indicates the white balance mode set when the image was shot. -DigitalZoomRatio, 41988, 0xa404, Photo, Exif.Photo.DigitalZoomRatio, Rational, This tag indicates the digital zoom ratio when the image was shot. If the numerator of the recorded value is 0, this indicates that digital zoom was not used. -FocalLengthIn35mmFilm, 41989, 0xa405, Photo, Exif.Photo.FocalLengthIn35mmFilm, Short, This tag indicates the equivalent focal length assuming a 35mm film camera, in mm. A value of 0 means the focal length is unknown. Note that this tag differs from the tag. -SceneCaptureType, 41990, 0xa406, Photo, Exif.Photo.SceneCaptureType, Short, This tag indicates the type of scene that was shot. It can also be used to record the mode in which the image was shot. Note that this differs from the tag. -GainControl, 41991, 0xa407, Photo, Exif.Photo.GainControl, Short, This tag indicates the degree of overall image gain adjustment. -Contrast, 41992, 0xa408, Photo, Exif.Photo.Contrast, Short, This tag indicates the direction of contrast processing applied by the camera when the image was shot. -Saturation, 41993, 0xa409, Photo, Exif.Photo.Saturation, Short, This tag indicates the direction of saturation processing applied by the camera when the image was shot. -Sharpness, 41994, 0xa40a, Photo, Exif.Photo.Sharpness, Short, This tag indicates the direction of sharpness processing applied by the camera when the image was shot. -DeviceSettingDescription, 41995, 0xa40b, Photo, Exif.Photo.DeviceSettingDescription, Undefined, This tag indicates information on the picture-taking conditions of a particular camera model. The tag is used only to indicate the picture-taking conditions in the reader. -SubjectDistanceRange, 41996, 0xa40c, Photo, Exif.Photo.SubjectDistanceRange, Short, This tag indicates the distance to the subject. -ImageUniqueID, 42016, 0xa420, Photo, Exif.Photo.ImageUniqueID, Ascii, This tag indicates an identifier assigned uniquely to each image. It is recorded as an ASCII string equivalent to hexadecimal notation and 128-bit fixed length. -InteroperabilityIndex, 1, 0x0001, Iop, Exif.Iop.InteroperabilityIndex, Ascii, Indicates the identification of the Interoperability rule. Use "R98" for stating ExifR98 Rules. Four bytes used including the termination code (NULL). see the separate volume of Recommended Exif Interoperability Rules (ExifR98) for other tags used for ExifR98. -InteroperabilityVersion, 2, 0x0002, Iop, Exif.Iop.InteroperabilityVersion, Undefined, Interoperability version -RelatedImageFileFormat, 4096, 0x1000, Iop, Exif.Iop.RelatedImageFileFormat, Ascii, File format of image file -RelatedImageWidth, 4097, 0x1001, Iop, Exif.Iop.RelatedImageWidth, Long, Image width -RelatedImageLength, 4098, 0x1002, Iop, Exif.Iop.RelatedImageLength, Long, Image height -GPSVersionID, 0, 0x0000, GPSInfo, Exif.GPSInfo.GPSVersionID, Byte, Indicates the version of . The version is given as 2.0.0.0. This tag is mandatory when tag is present. (Note: The tag is given in bytes, unlike the tag. When the version is 2.0.0.0, the tag value is 02000000.H). -GPSLatitudeRef, 1, 0x0001, GPSInfo, Exif.GPSInfo.GPSLatitudeRef, Ascii, Indicates whether the latitude is north or south latitude. The ASCII value 'N' indicates north latitude, and 'S' is south latitude. -GPSLatitude, 2, 0x0002, GPSInfo, Exif.GPSInfo.GPSLatitude, Rational, Indicates the latitude. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is dd/1,mmmm/100,0/1. -GPSLongitudeRef, 3, 0x0003, GPSInfo, Exif.GPSInfo.GPSLongitudeRef, Ascii, Indicates whether the longitude is east or west longitude. ASCII 'E' indicates east longitude, and 'W' is west longitude. -GPSLongitude, 4, 0x0004, GPSInfo, Exif.GPSInfo.GPSLongitude, Rational, Indicates the longitude. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is ddd/1,mmmm/100,0/1. -GPSAltitudeRef, 5, 0x0005, GPSInfo, Exif.GPSInfo.GPSAltitudeRef, Byte, Indicates the altitude used as the reference altitude. If the reference is sea level and the altitude is above sea level, 0 is given. If the altitude is below sea level, a value of 1 is given and the altitude is indicated as an absolute value in the GSPAltitude tag. The reference unit is meters. Note that this tag is BYTE type, unlike other reference tags. -GPSAltitude, 6, 0x0006, GPSInfo, Exif.GPSInfo.GPSAltitude, Rational, Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is expressed as one RATIONAL value. The reference unit is meters. -GPSTimeStamp, 7, 0x0007, GPSInfo, Exif.GPSInfo.GPSTimeStamp, Rational, Indicates the time as UTC (Coordinated Universal Time). is expressed as three RATIONAL values giving the hour, minute, and second (atomic clock). -GPSSatellites, 8, 0x0008, GPSInfo, Exif.GPSInfo.GPSSatellites, Ascii, Indicates the GPS satellites used for measurements. This tag can be used to describe the number of satellites, their ID number, angle of elevation, azimuth, SNR and other information in ASCII notation. The format is not specified. If the GPS receiver is incapable of taking measurements, value of the tag is set to NULL. -GPSStatus, 9, 0x0009, GPSInfo, Exif.GPSInfo.GPSStatus, Ascii, Indicates the status of the GPS receiver when the image is recorded. "A" means measurement is in progress, and "V" means the measurement is Interoperability. -GPSMeasureMode, 10, 0x000a, GPSInfo, Exif.GPSInfo.GPSMeasureMode, Ascii, Indicates the GPS measurement mode. "2" means two-dimensional measurement and "3" means three-dimensional measurement is in progress. -GPSDOP, 11, 0x000b, GPSInfo, Exif.GPSInfo.GPSDOP, Rational, Indicates the GPS DOP (data degree of precision). An HDOP value is written during two-dimensional measurement, and PDOP during three-dimensional measurement. -GPSSpeedRef, 12, 0x000c, GPSInfo, Exif.GPSInfo.GPSSpeedRef, Ascii, Indicates the unit used to express the GPS receiver speed of movement. "K" "M" and "N" represents kilometers per hour, miles per hour, and knots. -GPSSpeed, 13, 0x000d, GPSInfo, Exif.GPSInfo.GPSSpeed, Rational, Indicates the speed of GPS receiver movement. -GPSTrackRef, 14, 0x000e, GPSInfo, Exif.GPSInfo.GPSTrackRef, Ascii, Indicates the reference for giving the direction of GPS receiver movement. "T" denotes true direction and "M" is magnetic direction. -GPSTrack, 15, 0x000f, GPSInfo, Exif.GPSInfo.GPSTrack, Rational, Indicates the direction of GPS receiver movement. The range of values is from 0.00 to 359.99. -GPSImgDirectionRef, 16, 0x0010, GPSInfo, Exif.GPSInfo.GPSImgDirectionRef, Ascii, Indicates the reference for giving the direction of the image when it is captured. "T" denotes true direction and "M" is magnetic direction. -GPSImgDirection, 17, 0x0011, GPSInfo, Exif.GPSInfo.GPSImgDirection, Rational, Indicates the direction of the image when it was captured. The range of values is from 0.00 to 359.99. -GPSMapDatum, 18, 0x0012, GPSInfo, Exif.GPSInfo.GPSMapDatum, Ascii, Indicates the geodetic survey data used by the GPS receiver. If the survey data is restricted to Japan, the value of this tag is "TOKYO" or "WGS-84". -GPSDestLatitudeRef, 19, 0x0013, GPSInfo, Exif.GPSInfo.GPSDestLatitudeRef, Ascii, Indicates whether the latitude of the destination point is north or south latitude. The ASCII value "N" indicates north latitude, and "S" is south latitude. -GPSDestLatitude, 20, 0x0014, GPSInfo, Exif.GPSInfo.GPSDestLatitude, Rational, Indicates the latitude of the destination point. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If latitude is expressed as degrees, minutes and seconds, a typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be dd/1,mmmm/100,0/1. -GPSDestLongitudeRef, 21, 0x0015, GPSInfo, Exif.GPSInfo.GPSDestLongitudeRef, Ascii, Indicates whether the longitude of the destination point is east or west longitude. ASCII "E" indicates east longitude, and "W" is west longitude. -GPSDestLongitude, 22, 0x0016, GPSInfo, Exif.GPSInfo.GPSDestLongitude, Rational, Indicates the longitude of the destination point. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If longitude is expressed as degrees, minutes and seconds, a typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be ddd/1,mmmm/100,0/1. -GPSDestBearingRef, 23, 0x0017, GPSInfo, Exif.GPSInfo.GPSDestBearingRef, Ascii, Indicates the reference used for giving the bearing to the destination point. "T" denotes true direction and "M" is magnetic direction. -GPSDestBearing, 24, 0x0018, GPSInfo, Exif.GPSInfo.GPSDestBearing, Rational, Indicates the bearing to the destination point. The range of values is from 0.00 to 359.99. -GPSDestDistanceRef, 25, 0x0019, GPSInfo, Exif.GPSInfo.GPSDestDistanceRef, Ascii, Indicates the unit used to express the distance to the destination point. "K", "M" and "N" represent kilometers, miles and knots. -GPSDestDistance, 26, 0x001a, GPSInfo, Exif.GPSInfo.GPSDestDistance, Rational, Indicates the distance to the destination point. -GPSProcessingMethod, 27, 0x001b, GPSInfo, Exif.GPSInfo.GPSProcessingMethod, Undefined, A character string recording the name of the method used for location finding. The first byte indicates the character code used, and this is followed by the name of the method. -GPSAreaInformation, 28, 0x001c, GPSInfo, Exif.GPSInfo.GPSAreaInformation, Undefined, A character string recording the name of the GPS area. The first byte indicates the character code used, and this is followed by the name of the GPS area. -GPSDateStamp, 29, 0x001d, GPSInfo, Exif.GPSInfo.GPSDateStamp, Ascii, A character string recording date and time information relative to UTC (Coordinated Universal Time). The format is "YYYY:MM:DD.". -GPSDifferential, 30, 0x001e, GPSInfo, Exif.GPSInfo.GPSDifferential, Short, Indicates whether differential correction is applied to the GPS receiver. -Usage: bin\Release\tiff-test.exe file - /usr/lib /usr lib - /usr/ / usr - usr . usr - / / - . . . - .. . .. - /// / - /usr/.emacs /usr .emacs - /usr/.emacs/ /usr .emacs - /usr/.emacs// /usr .emacs - usr/.emacs usr .emacs - .emacs . .emacs - .emacs.gz . .emacs.gz .gz - /tmp/image.jpg /tmp image.jpg .jpg -/tmp/.image.jpg /tmp .image.jpg .jpg - /image.jpg / image.jpg .jpg - image.jpg . image.jpg .jpg - image.jpg// . image.jpg .jpg - /////image.jpg / image.jpg .jpg - /foo.bar/image /foo.bar image -/foo.bar/images.tar.gz /foo.bar images.tar.gz .gz -d:\foo.bar\images.tar.gz d:\foo.bar images.tar.gz .gz -Usage: write-test file case - -where case is an integer between 1 and 11 -Usage: bin\Release\write2-test.exe file -Usage: bin\Release\xmpparse.exe file -Usage: bin\Release\xmpparser-test.exe file -Xmp.dc.source XmpText 13 xmpsample.cpp -Xmp.dc.subject XmpBag 2 Palmtree, Rubbertree -Xmp.dc.title LangAlt 2 lang="de-DE" Sonnenuntergang am Strand, lang="en-US" Sunset on the beach -Xmp.dc.one XmpText 2 -1 -Xmp.dc.two XmpText 6 3.1415 -Xmp.dc.three XmpText 3 5/7 -Xmp.dc.four XmpText 3 255 -Xmp.dc.five XmpText 3 256 -Xmp.dc.six XmpText 5 False -Xmp.dc.seven XmpText 5 Seven -Xmp.dc.format XmpText 10 image/jpeg -Xmp.dc.creator XmpSeq 3 1) The first creator, 2) The second creator, 3) And another one -Xmp.dc.description LangAlt 2 lang="x-default" Hello, World, lang="de-DE" Hallo, Welt -Xmp.tiff.ImageDescription LangAlt 2 lang="x-default" TIFF image description, lang="de-DE" TIFF Bildbeschreibung -Xmp.ns.myProperty XmpText 7 myValue -Xmp.xmpDM.videoFrameSize/stDim:w XmpText 2 16 -Xmp.xmpDM.videoFrameSize/stDim:h XmpText 1 9 -Xmp.xmpDM.videoFrameSize/stDim:unit XmpText 4 inch -Xmp.dc.publisher XmpBag 1 James Bond -Xmp.dc.publisher[1]/?ns:role XmpText 12 secret agent -Xmp.dc.creator[2]/?ns:role XmpText 10 programmer -Xmp.xmpBJ.JobRef XmpText 0 type="Bag" -Xmp.xmpBJ.JobRef[1]/stJob:name XmpText 14 Birthday party -Xmp.xmpBJ.JobRef[1]/stJob:role XmpText 12 Photographer -Xmp.xmpBJ.JobRef[2]/stJob:name XmpText 16 Wedding ceremony -Xmp.xmpBJ.JobRef[2]/stJob:role XmpText 8 Best man - - - - - - - Palmtree - Rubbertree - - - - - Sonnenuntergang am Strand - Sunset on the beach - - - - - 1) The first creator - - 2) The second creator - programmer - - 3) And another one - - - - - Hello, World - Hallo, Welt - - - - - - James Bond - secret agent - - - - - - TIFF image description - TIFF Bildbeschreibung - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Usage: bin\ReleaseDLL\addmoddel.exe file -Usage: bin\ReleaseDLL\convert-test.exe file -Usage: bin\ReleaseDLL\exifcomment.exe file -Usage: bin\ReleaseDLL\exifdata-test.exe file -Usage: bin\ReleaseDLL\exifprint.exe file -Usage: exiv2.exe [ options ] [ action ] file ... - -Manipulate the Exif metadata of images. -Usage: bin\ReleaseDLL\iotest.exe filein fileout1 fileout2 -fileouts are overwritten and should match filein exactly -Usage: bin\ReleaseDLL\iptceasy.exe file -Usage: bin\ReleaseDLL\iptcprint.exe file -Usage: bin\ReleaseDLL\iptctest.exe image -Commands read from stdin. -Usage: bin\ReleaseDLL\largeiptc-test.exe image datafile - -Reads and writes raw metadata. Use -h option for help. -Usage: metacopy.exe [-iecaph] readfile writefile -Usage: bin\ReleaseDLL\mmap-test.exe file -Usage: bin\ReleaseDLL\prevtest.exe file -string long float Rational -True 1 1 1/1 -False 0 0 0/1 -t 1 1 1/1 -f 0 0 0/1 --1 -1 -1 -1/1 -0 0 0 0/1 -1 1 1 1/1 -0.0 0 0 0/1 -0.1 0 0.1 1/10 -0.01 0 0.01 1/100 -0.001 0 0.001 1/1000 --1.49999 -1 -1.49999 -149999/100000 --1.5 -1 -1.5 -3/2 -1.49999 1 1.49999 149999/100000 -1.5 1 1.5 3/2 -0/1 0 0 0/1 -1/1 1 1 1/1 -1/3 0 0.333333 1/3 --1/3 0 -0.333333 -1/3 -4/3 1 1.33333 4/3 --4/3 -1 -1.33333 -4/3 -0/0 nok nok 0/0 -text nok nok nok -ProcessingSoftware, 11, 0x000b, Image, Exif.Image.ProcessingSoftware, Ascii, The name and version of the software used to post-process the picture. -NewSubfileType, 254, 0x00fe, Image, Exif.Image.NewSubfileType, Long, A general indication of the kind of data contained in this subfile. -SubfileType, 255, 0x00ff, Image, Exif.Image.SubfileType, Short, A general indication of the kind of data contained in this subfile. This field is deprecated. The NewSubfileType field should be used instead. -ImageWidth, 256, 0x0100, Image, Exif.Image.ImageWidth, Long, The number of columns of image data, equal to the number of pixels per row. In JPEG compressed data a JPEG marker is used instead of this tag. -ImageLength, 257, 0x0101, Image, Exif.Image.ImageLength, Long, The number of rows of image data. In JPEG compressed data a JPEG marker is used instead of this tag. -BitsPerSample, 258, 0x0102, Image, Exif.Image.BitsPerSample, Short, The number of bits per image component. In this standard each component of the image is 8 bits, so the value for this tag is 8. See also . In JPEG compressed data a JPEG marker is used instead of this tag. -Compression, 259, 0x0103, Image, Exif.Image.Compression, Short, The compression scheme used for the image data. When a primary image is JPEG compressed, this designation is not necessary and is omitted. When thumbnails use JPEG compression, this tag value is set to 6. -PhotometricInterpretation, 262, 0x0106, Image, Exif.Image.PhotometricInterpretation, Short, The pixel composition. In JPEG compressed data a JPEG marker is used instead of this tag. -Threshholding, 263, 0x0107, Image, Exif.Image.Threshholding, Short, For black and white TIFF files that represent shades of gray, the technique used to convert from gray to black and white pixels. -CellWidth, 264, 0x0108, Image, Exif.Image.CellWidth, Short, The width of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -CellLength, 265, 0x0109, Image, Exif.Image.CellLength, Short, The length of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -FillOrder, 266, 0x010a, Image, Exif.Image.FillOrder, Short, The logical order of bits within a byte -DocumentName, 269, 0x010d, Image, Exif.Image.DocumentName, Ascii, The name of the document from which this image was scanned -ImageDescription, 270, 0x010e, Image, Exif.Image.ImageDescription, Ascii, A character string giving the title of the image. It may be a comment such as "1988 company picnic" or the like. Two-bytes character codes cannot be used. When a 2-bytes code is necessary, the Exif Private tag is to be used. -Make, 271, 0x010f, Image, Exif.Image.Make, Ascii, The manufacturer of the recording equipment. This is the manufacturer of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -Model, 272, 0x0110, Image, Exif.Image.Model, Ascii, The model name or model number of the equipment. This is the model name or number of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -StripOffsets, 273, 0x0111, Image, Exif.Image.StripOffsets, Long, For each strip, the byte offset of that strip. It is recommended that this be selected so the number of strip bytes does not exceed 64 Kbytes. With JPEG compressed data this designation is not needed and is omitted. See also and . -Orientation, 274, 0x0112, Image, Exif.Image.Orientation, Short, The image orientation viewed in terms of rows and columns. -SamplesPerPixel, 277, 0x0115, Image, Exif.Image.SamplesPerPixel, Short, The number of components per pixel. Since this standard applies to RGB and YCbCr images, the value set for this tag is 3. In JPEG compressed data a JPEG marker is used instead of this tag. -RowsPerStrip, 278, 0x0116, Image, Exif.Image.RowsPerStrip, Long, The number of rows per strip. This is the number of rows in the image of one strip when an image is divided into strips. With JPEG compressed data this designation is not needed and is omitted. See also and . -StripByteCounts, 279, 0x0117, Image, Exif.Image.StripByteCounts, Long, The total number of bytes in each strip. With JPEG compressed data this designation is not needed and is omitted. -XResolution, 282, 0x011a, Image, Exif.Image.XResolution, Rational, The number of pixels per in the direction. When the image resolution is unknown, 72 [dpi] is designated. -YResolution, 283, 0x011b, Image, Exif.Image.YResolution, Rational, The number of pixels per in the direction. The same value as is designated. -PlanarConfiguration, 284, 0x011c, Image, Exif.Image.PlanarConfiguration, Short, Indicates whether pixel components are recorded in a chunky or planar format. In JPEG compressed files a JPEG marker is used instead of this tag. If this field does not exist, the TIFF default of 1 (chunky) is assumed. -GrayResponseUnit, 290, 0x0122, Image, Exif.Image.GrayResponseUnit, Short, The precision of the information contained in the GrayResponseCurve. -GrayResponseCurve, 291, 0x0123, Image, Exif.Image.GrayResponseCurve, Short, For grayscale data, the optical density of each possible pixel value. -T4Options, 292, 0x0124, Image, Exif.Image.T4Options, Long, T.4-encoding options. -T6Options, 293, 0x0125, Image, Exif.Image.T6Options, Long, T.6-encoding options. -ResolutionUnit, 296, 0x0128, Image, Exif.Image.ResolutionUnit, Short, The unit for measuring and . The same unit is used for both and . If the image resolution is unknown, 2 (inches) is designated. -TransferFunction, 301, 0x012d, Image, Exif.Image.TransferFunction, Short, A transfer function for the image, described in tabular style. Normally this tag is not necessary, since color space is specified in the color space information tag (). -Software, 305, 0x0131, Image, Exif.Image.Software, Ascii, This tag records the name and version of the software or firmware of the camera or image input device used to generate the image. The detailed format is not specified, but it is recommended that the example shown below be followed. When the field is left blank, it is treated as unknown. -DateTime, 306, 0x0132, Image, Exif.Image.DateTime, Ascii, The date and time of image creation. In Exif standard, it is the date and time the file was changed. -Artist, 315, 0x013b, Image, Exif.Image.Artist, Ascii, This tag records the name of the camera owner, photographer or image creator. The detailed format is not specified, but it is recommended that the information be written as in the example below for ease of Interoperability. When the field is left blank, it is treated as unknown. Ex.) "Camera owner, John Smith; Photographer, Michael Brown; Image creator, Ken James" -HostComputer, 316, 0x013c, Image, Exif.Image.HostComputer, Ascii, This tag records information about the host computer used to generate the image. -Predictor, 317, 0x013d, Image, Exif.Image.Predictor, Short, A predictor is a mathematical operator that is applied to the image data before an encoding scheme is applied. -WhitePoint, 318, 0x013e, Image, Exif.Image.WhitePoint, Rational, The chromaticity of the white point of the image. Normally this tag is not necessary, since color space is specified in the colorspace information tag (). -PrimaryChromaticities, 319, 0x013f, Image, Exif.Image.PrimaryChromaticities, Rational, The chromaticity of the three primary colors of the image. Normally this tag is not necessary, since colorspace is specified in the colorspace information tag (). -ColorMap, 320, 0x0140, Image, Exif.Image.ColorMap, Short, A color map for palette color images. This field defines a Red-Green-Blue color map (often called a lookup table) for palette-color images. In a palette-color image, a pixel value is used to index into an RGB lookup table. -HalftoneHints, 321, 0x0141, Image, Exif.Image.HalftoneHints, Short, The purpose of the HalftoneHints field is to convey to the halftone function the range of gray levels within a colorimetrically-specified image that should retain tonal detail. -TileWidth, 322, 0x0142, Image, Exif.Image.TileWidth, Short, The tile width in pixels. This is the number of columns in each tile. -TileLength, 323, 0x0143, Image, Exif.Image.TileLength, Short, The tile length (height) in pixels. This is the number of rows in each tile. -TileOffsets, 324, 0x0144, Image, Exif.Image.TileOffsets, Short, For each tile, the byte offset of that tile, as compressed and stored on disk. The offset is specified with respect to the beginning of the TIFF file. Note that this implies that each tile has a location independent of the locations of other tiles. -TileByteCounts, 325, 0x0145, Image, Exif.Image.TileByteCounts, Short, For each tile, the number of (compressed) bytes in that tile. See TileOffsets for a description of how the byte counts are ordered. -SubIFDs, 330, 0x014a, Image, Exif.Image.SubIFDs, Long, Defined by Adobe Corporation to enable TIFF Trees within a TIFF file. -InkSet, 332, 0x014c, Image, Exif.Image.InkSet, Short, The set of inks used in a separated (PhotometricInterpretation=5) image. -InkNames, 333, 0x014d, Image, Exif.Image.InkNames, Ascii, The name of each ink used in a separated (PhotometricInterpretation=5) image. -NumberOfInks, 334, 0x014e, Image, Exif.Image.NumberOfInks, Short, The number of inks. Usually equal to SamplesPerPixel, unless there are extra samples. -DotRange, 336, 0x0150, Image, Exif.Image.DotRange, Byte, The component values that correspond to a 0% dot and 100% dot. -TargetPrinter, 337, 0x0151, Image, Exif.Image.TargetPrinter, Ascii, A description of the printing environment for which this separation is intended. -ExtraSamples, 338, 0x0152, Image, Exif.Image.ExtraSamples, Short, Specifies that each pixel has m extra components whose interpretation is defined by one of the values listed below. -SampleFormat, 339, 0x0153, Image, Exif.Image.SampleFormat, Short, This field specifies how to interpret each data sample in a pixel. -SMinSampleValue, 340, 0x0154, Image, Exif.Image.SMinSampleValue, Short, This field specifies the minimum sample value. -SMaxSampleValue, 341, 0x0155, Image, Exif.Image.SMaxSampleValue, Short, This field specifies the maximum sample value. -TransferRange, 342, 0x0156, Image, Exif.Image.TransferRange, Short, Expands the range of the TransferFunction -ClipPath, 343, 0x0157, Image, Exif.Image.ClipPath, Byte, A TIFF ClipPath is intended to mirror the essentials of PostScript's path creation functionality. -XClipPathUnits, 344, 0x0158, Image, Exif.Image.XClipPathUnits, SShort, The number of units that span the width of the image, in terms of integer ClipPath coordinates. -YClipPathUnits, 345, 0x0159, Image, Exif.Image.YClipPathUnits, SShort, The number of units that span the height of the image, in terms of integer ClipPath coordinates. -Indexed, 346, 0x015a, Image, Exif.Image.Indexed, Short, Indexed images are images where the 'pixels' do not represent color values, but rather an index (usually 8-bit) into a separate color table, the ColorMap. -JPEGTables, 347, 0x015b, Image, Exif.Image.JPEGTables, Undefined, This optional tag may be used to encode the JPEG quantization andHuffman tables for subsequent use by the JPEG decompression process. -OPIProxy, 351, 0x015f, Image, Exif.Image.OPIProxy, Short, OPIProxy gives information concerning whether this image is a low-resolution proxy of a high-resolution image (Adobe OPI). -JPEGProc, 512, 0x0200, Image, Exif.Image.JPEGProc, Long, This field indicates the process used to produce the compressed data -JPEGInterchangeFormat, 513, 0x0201, Image, Exif.Image.JPEGInterchangeFormat, Long, The offset to the start byte (SOI) of JPEG compressed thumbnail data. This is not used for primary image JPEG data. -JPEGInterchangeFormatLength, 514, 0x0202, Image, Exif.Image.JPEGInterchangeFormatLength, Long, The number of bytes of JPEG compressed thumbnail data. This is not used for primary image JPEG data. JPEG thumbnails are not divided but are recorded as a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not be recorded. Compressed thumbnails must be recorded in no more than 64 Kbytes, including all other data to be recorded in APP1. -JPEGRestartInterval, 515, 0x0203, Image, Exif.Image.JPEGRestartInterval, Short, This Field indicates the length of the restart interval used in the compressed image data. -JPEGLosslessPredictors, 517, 0x0205, Image, Exif.Image.JPEGLosslessPredictors, Short, This Field points to a list of lossless predictor-selection values, one per component. -JPEGPointTransforms, 518, 0x0206, Image, Exif.Image.JPEGPointTransforms, Short, This Field points to a list of point transform values, one per component. -JPEGQTables, 519, 0x0207, Image, Exif.Image.JPEGQTables, Long, This Field points to a list of offsets to the quantization tables, one per component. -JPEGDCTables, 520, 0x0208, Image, Exif.Image.JPEGDCTables, Long, This Field points to a list of offsets to the DC Huffman tables or the lossless Huffman tables, one per component. -JPEGACTables, 521, 0x0209, Image, Exif.Image.JPEGACTables, Long, This Field points to a list of offsets to the Huffman AC tables, one per component. -YCbCrCoefficients, 529, 0x0211, Image, Exif.Image.YCbCrCoefficients, Rational, The matrix coefficients for transformation from RGB to YCbCr image data. No default is given in TIFF; but here the value given in Appendix E, "Color Space Guidelines", is used as the default. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability this condition. -YCbCrSubSampling, 530, 0x0212, Image, Exif.Image.YCbCrSubSampling, Short, The sampling ratio of chrominance components in relation to the luminance component. In JPEG compressed data a JPEG marker is used instead of this tag. -YCbCrPositioning, 531, 0x0213, Image, Exif.Image.YCbCrPositioning, Short, The position of chrominance components in relation to the luminance component. This field is designated only for JPEG compressed data or uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr = 4:2:2 it is recommended in this standard that 2 (co-sited) be used to record data, in order to improve the image quality when viewed on TV systems. When this field does not exist, the reader shall assume the TIFF default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is recommended. If the reader does not have the capability of supporting both kinds of , it shall follow the TIFF default regardless of the value in this field. It is preferable that readers be able to support both centered and co-sited positioning. -ReferenceBlackWhite, 532, 0x0214, Image, Exif.Image.ReferenceBlackWhite, Rational, The reference black point value and reference white point value. No defaults are given in TIFF, but the values below are given as defaults here. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability these conditions. -XMLPacket, 700, 0x02bc, Image, Exif.Image.XMLPacket, Byte, XMP Metadata (Adobe technote 9-14-02) -Rating, 18246, 0x4746, Image, Exif.Image.Rating, Short, Rating tag used by Windows -RatingPercent, 18249, 0x4749, Image, Exif.Image.RatingPercent, Short, Rating tag used by Windows, value in percent -ImageID, 32781, 0x800d, Image, Exif.Image.ImageID, Ascii, ImageID is the full pathname of the original, high-resolution image, or any other identifying string that uniquely identifies the original image (Adobe OPI). -CFARepeatPatternDim, 33421, 0x828d, Image, Exif.Image.CFARepeatPatternDim, Short, Contains two values representing the minimum rows and columns to define the repeating patterns of the color filter array -CFAPattern, 33422, 0x828e, Image, Exif.Image.CFAPattern, Byte, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods -BatteryLevel, 33423, 0x828f, Image, Exif.Image.BatteryLevel, Rational, Contains a value of the battery level as a fraction or string -Copyright, 33432, 0x8298, Image, Exif.Image.Copyright, Ascii, Copyright information. In this standard the tag is used to indicate both the photographer and editor copyrights. It is the copyright notice of the person or organization claiming rights to the image. The Interoperability copyright statement including date and rights should be written in this field; e.g., "Copyright, John Smith, 19xx. All rights reserved.". In this standard the field records both the photographer and editor copyrights, with each recorded in a separate part of the statement. When there is a clear distinction between the photographer and editor copyrights, these are to be written in the order of photographer followed by editor copyright, separated by NULL (in this case since the statement also ends with a NULL, there are two NULL codes). When only the photographer copyright is given, it is terminated by one NULL code . When only the editor copyright is given, the photographer copyright part consists of one space followed by a terminating NULL code, then the editor copyright is given. When the field is left blank, it is treated as unknown. -ExposureTime, 33434, 0x829a, Image, Exif.Image.ExposureTime, Rational, Exposure time, given in seconds. -FNumber, 33437, 0x829d, Image, Exif.Image.FNumber, Rational, The F number. -IPTCNAA, 33723, 0x83bb, Image, Exif.Image.IPTCNAA, Long, Contains an IPTC/NAA record -ImageResources, 34377, 0x8649, Image, Exif.Image.ImageResources, Byte, Contains information embedded by the Adobe Photoshop application -ExifTag, 34665, 0x8769, Image, Exif.Image.ExifTag, Long, A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure as that of the IFD specified in TIFF. ordinarily, however, it does not contain image data as in the case of TIFF. -InterColorProfile, 34675, 0x8773, Image, Exif.Image.InterColorProfile, Undefined, Contains an InterColor Consortium (ICC) format color space characterization/profile -ExposureProgram, 34850, 0x8822, Image, Exif.Image.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Image, Exif.Image.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. -GPSTag, 34853, 0x8825, Image, Exif.Image.GPSTag, Long, A pointer to the GPS Info IFD. The Interoperability structure of the GPS Info IFD, like that of Exif IFD, has no image data. -ISOSpeedRatings, 34855, 0x8827, Image, Exif.Image.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Image, Exif.Image.OECF, Undefined, Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524. -Interlace, 34857, 0x8829, Image, Exif.Image.Interlace, Short, Indicates the field number of multifield images. -TimeZoneOffset, 34858, 0x882a, Image, Exif.Image.TimeZoneOffset, SShort, This optional tag encodes the time zone of the camera clock (relativeto Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the picture was taken. It may also contain the time zone offsetof the clock used to create the DateTime tag-value when the image wasmodified. -SelfTimerMode, 34859, 0x882b, Image, Exif.Image.SelfTimerMode, Short, Number of seconds image capture was delayed from button press. -DateTimeOriginal, 36867, 0x9003, Image, Exif.Image.DateTimeOriginal, Ascii, The date and time when the original image data was generated. -CompressedBitsPerPixel, 37122, 0x9102, Image, Exif.Image.CompressedBitsPerPixel, Rational, Specific to compressed data; states the compressed bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Image, Exif.Image.ShutterSpeedValue, SRational, Shutter speed. -ApertureValue, 37378, 0x9202, Image, Exif.Image.ApertureValue, Rational, The lens aperture. -BrightnessValue, 37379, 0x9203, Image, Exif.Image.BrightnessValue, SRational, The value of brightness. -ExposureBiasValue, 37380, 0x9204, Image, Exif.Image.ExposureBiasValue, SRational, The exposure bias. -MaxApertureValue, 37381, 0x9205, Image, Exif.Image.MaxApertureValue, Rational, The smallest F number of the lens. -SubjectDistance, 37382, 0x9206, Image, Exif.Image.SubjectDistance, SRational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Image, Exif.Image.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Image, Exif.Image.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Image, Exif.Image.Flash, Short, Indicates the status of flash when the image was shot. -FocalLength, 37386, 0x920a, Image, Exif.Image.FocalLength, Rational, The actual focal length of the lens, in mm. -FlashEnergy, 37387, 0x920b, Image, Exif.Image.FlashEnergy, Rational, Amount of flash energy (BCPS). -SpatialFrequencyResponse, 37388, 0x920c, Image, Exif.Image.SpatialFrequencyResponse, Undefined, SFR of the camera. -Noise, 37389, 0x920d, Image, Exif.Image.Noise, Undefined, Noise measurement values. -FocalPlaneXResolution, 37390, 0x920e, Image, Exif.Image.FocalPlaneXResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth direction for main image. -FocalPlaneYResolution, 37391, 0x920f, Image, Exif.Image.FocalPlaneYResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength direction for main image. -FocalPlaneResolutionUnit, 37392, 0x9210, Image, Exif.Image.FocalPlaneResolutionUnit, Short, Unit of measurement for FocalPlaneXResolution(37390) and FocalPlaneYResolution(37391). -ImageNumber, 37393, 0x9211, Image, Exif.Image.ImageNumber, Long, Number assigned to an image, e.g., in a chained image burst. -SecurityClassification, 37394, 0x9212, Image, Exif.Image.SecurityClassification, Ascii, Security classification assigned to the image. -ImageHistory, 37395, 0x9213, Image, Exif.Image.ImageHistory, Ascii, Record of what has been done to the image. -SubjectLocation, 37396, 0x9214, Image, Exif.Image.SubjectLocation, Short, Indicates the location and area of the main subject in the overall scene. -ExposureIndex, 37397, 0x9215, Image, Exif.Image.ExposureIndex, Rational, Encodes the camera exposure index setting when image was captured. -TIFFEPStandardID, 37398, 0x9216, Image, Exif.Image.TIFFEPStandardID, Byte, Contains four ASCII characters representing the TIFF/EP standard version of a TIFF/EP file, eg '1', '0', '0', '0' -SensingMethod, 37399, 0x9217, Image, Exif.Image.SensingMethod, Short, Type of image sensor. -XPTitle, 40091, 0x9c9b, Image, Exif.Image.XPTitle, Byte, Title tag used by Windows, encoded in UCS2 -XPComment, 40092, 0x9c9c, Image, Exif.Image.XPComment, Byte, Comment tag used by Windows, encoded in UCS2 -XPAuthor, 40093, 0x9c9d, Image, Exif.Image.XPAuthor, Byte, Author tag used by Windows, encoded in UCS2 -XPKeywords, 40094, 0x9c9e, Image, Exif.Image.XPKeywords, Byte, Keywords tag used by Windows, encoded in UCS2 -XPSubject, 40095, 0x9c9f, Image, Exif.Image.XPSubject, Byte, Subject tag used by Windows, encoded in UCS2 -PrintImageMatching, 50341, 0xc4a5, Image, Exif.Image.PrintImageMatching, Undefined, Print Image Matching, description needed. -DNGVersion, 50706, 0xc612, Image, Exif.Image.DNGVersion, Byte, This tag encodes the DNG four-tier version number. For files compliant with version 1.1.0.0 of the DNG specification, this tag should contain the bytes: 1, 1, 0, 0. -DNGBackwardVersion, 50707, 0xc613, Image, Exif.Image.DNGBackwardVersion, Byte, This tag specifies the oldest version of the Digital Negative specification for which a file is compatible. Readers shouldnot attempt to read a file if this tag specifies a version number that is higher than the version number of the specification the reader was based on. In addition to checking the version tags, readers should, for all tags, check the types, counts, and values, to verify it is able to correctly read the file. -UniqueCameraModel, 50708, 0xc614, Image, Exif.Image.UniqueCameraModel, Ascii, Defines a unique, non-localized name for the camera model that created the image in the raw file. This name should include the manufacturer's name to avoid conflicts, and should not be localized, even if the camera name itself is localized for different markets (see LocalizedCameraModel). This string may be used by reader software to index into per-model preferences and replacement profiles. -LocalizedCameraModel, 50709, 0xc615, Image, Exif.Image.LocalizedCameraModel, Byte, Similar to the UniqueCameraModel field, except the name can be localized for different markets to match the localization of the camera name. -CFAPlaneColor, 50710, 0xc616, Image, Exif.Image.CFAPlaneColor, Byte, Provides a mapping between the values in the CFAPattern tag and the plane numbers in LinearRaw space. This is a required tag for non-RGB CFA images. -CFALayout, 50711, 0xc617, Image, Exif.Image.CFALayout, Short, Describes the spatial layout of the CFA. -LinearizationTable, 50712, 0xc618, Image, Exif.Image.LinearizationTable, Short, Describes a lookup table that maps stored values into linear values. This tag is typically used to increase compression ratios by storing the raw data in a non-linear, more visually uniform space with fewer total encoding levels. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelRepeatDim, 50713, 0xc619, Image, Exif.Image.BlackLevelRepeatDim, Short, Specifies repeat pattern size for the BlackLevel tag. -BlackLevel, 50714, 0xc61a, Image, Exif.Image.BlackLevel, Rational, Specifies the zero light (a.k.a. thermal black or black current) encoding level, as a repeating pattern. The origin of this pattern is the top-left corner of the ActiveArea rectangle. The values are stored in row-column-sample scan order. -BlackLevelDeltaH, 50715, 0xc61b, Image, Exif.Image.BlackLevelDeltaH, SRational, If the zero light encoding level is a function of the image column, BlackLevelDeltaH specifies the difference between the zero light encoding level for each column and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelDeltaV, 50716, 0xc61c, Image, Exif.Image.BlackLevelDeltaV, SRational, If the zero light encoding level is a function of the image row, this tag specifies the difference between the zero light encoding level for each row and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -WhiteLevel, 50717, 0xc61d, Image, Exif.Image.WhiteLevel, Short, This tag specifies the fully saturated encoding level for the raw sample values. Saturation is caused either by the sensor itself becoming highly non-linear in response, or by the camera's analog to digital converter clipping. -DefaultScale, 50718, 0xc61e, Image, Exif.Image.DefaultScale, Rational, DefaultScale is required for cameras with non-square pixels. It specifies the default scale factors for each direction to convert the image to square pixels. Typically these factors are selected to approximately preserve total pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such as the Fujifilm SuperCCD, these two values should usually differ by a factor of 2.0. -DefaultCropOrigin, 50719, 0xc61f, Image, Exif.Image.DefaultCropOrigin, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropOrigin specifies the origin of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied), relative to the top-left corner of the ActiveArea rectangle. -DefaultCropSize, 50720, 0xc620, Image, Exif.Image.DefaultCropSize, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropSize specifies the size of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied). -ColorMatrix1, 50721, 0xc621, Image, Exif.Image.ColorMatrix1, SRational, ColorMatrix1 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the first calibration illuminant. The matrix values are stored in row scan order. The ColorMatrix1 tag is required for all non-monochrome DNG files. -ColorMatrix2, 50722, 0xc622, Image, Exif.Image.ColorMatrix2, SRational, ColorMatrix2 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the second calibration illuminant. The matrix values are stored in row scan order. -CameraCalibration1, 50723, 0xc623, Image, Exif.Image.CameraCalibration1, SRational, CameraClalibration1 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the first calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix1 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -CameraCalibration2, 50724, 0xc624, Image, Exif.Image.CameraCalibration2, SRational, CameraCalibration2 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the second calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix2 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -ReductionMatrix1, 50725, 0xc625, Image, Exif.Image.ReductionMatrix1, SRational, ReductionMatrix1 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the first calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -ReductionMatrix2, 50726, 0xc626, Image, Exif.Image.ReductionMatrix2, SRational, ReductionMatrix2 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the second calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -AnalogBalance, 50727, 0xc627, Image, Exif.Image.AnalogBalance, Rational, Normally the stored raw values are not white balanced, since any digital white balancing will reduce the dynamic range of the final image if the user decides to later adjust the white balance; however, if camera hardware is capable of white balancing the color channels before the signal is digitized, it can improve the dynamic range of the final image. AnalogBalance defines the gain, either analog (recommended) or digital (not recommended) that has been applied the stored raw values. -AsShotNeutral, 50728, 0xc628, Image, Exif.Image.AsShotNeutral, Short, Specifies the selected white balance at time of capture, encoded as the coordinates of a perfectly neutral color in linear reference space values. The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag. -AsShotWhiteXY, 50729, 0xc629, Image, Exif.Image.AsShotWhiteXY, Rational, Specifies the selected white balance at time of capture, encoded as x-y chromaticity coordinates. The inclusion of this tag precludes the inclusion of the AsShotNeutral tag. -BaselineExposure, 50730, 0xc62a, Image, Exif.Image.BaselineExposure, SRational, Camera models vary in the trade-off they make between highlight headroom and shadow noise. Some leave a significant amount of highlight headroom during a normal exposure. This allows significant negative exposure compensation to be applied during raw conversion, but also means normal exposures will contain more shadow noise. Other models leave less headroom during normal exposures. This allows for less negative exposure compensation, but results in lower shadow noise for normal exposures. Because of these differences, a raw converter needs to vary the zero point of its exposure compensation control from model to model. BaselineExposure specifies by how much (in EV units) to move the zero point. Positive values result in brighter default results, while negative values result in darker default results. -BaselineNoise, 50731, 0xc62b, Image, Exif.Image.BaselineNoise, Rational, Specifies the relative noise level of the camera model at a baseline ISO value of 100, compared to a reference camera model. Since noise levels tend to vary approximately with the square root of the ISO value, a raw converter can use this value, combined with the current ISO, to estimate the relative noise level of the current image. -BaselineSharpness, 50732, 0xc62c, Image, Exif.Image.BaselineSharpness, Rational, Specifies the relative amount of sharpening required for this camera model, compared to a reference camera model. Camera models vary in the strengths of their anti-aliasing filters. Cameras with weak or no filters require less sharpening than cameras with strong anti-aliasing filters. -BayerGreenSplit, 50733, 0xc62d, Image, Exif.Image.BayerGreenSplit, Long, Only applies to CFA images using a Bayer pattern filter array. This tag specifies, in arbitrary units, how closely the values of the green pixels in the blue/green rows track the values of the green pixels in the red/green rows. A value of zero means the two kinds of green pixels track closely, while a non-zero value means they sometimes diverge. The useful range for this tag is from 0 (no divergence) to about 5000 (quite large divergence). -LinearResponseLimit, 50734, 0xc62e, Image, Exif.Image.LinearResponseLimit, Rational, Some sensors have an unpredictable non-linearity in their response as they near the upper limit of their encoding range. This non-linearity results in color shifts in the highlight areas of the resulting image unless the raw converter compensates for this effect. LinearResponseLimit specifies the fraction of the encoding range above which the response may become significantly non-linear. -CameraSerialNumber, 50735, 0xc62f, Image, Exif.Image.CameraSerialNumber, Ascii, CameraSerialNumber contains the serial number of the camera or camera body that captured the image. -LensInfo, 50736, 0xc630, Image, Exif.Image.LensInfo, Rational, Contains information about the lens that captured the image. If the minimum f-stops are unknown, they should be encoded as 0/0. -ChromaBlurRadius, 50737, 0xc631, Image, Exif.Image.ChromaBlurRadius, Rational, ChromaBlurRadius provides a hint to the DNG reader about how much chroma blur should be applied to the image. If this tag is omitted, the reader will use its default amount of chroma blurring. Normally this tag is only included for non-CFA images, since the amount of chroma blur required for mosaic images is highly dependent on the de-mosaic algorithm, in which case the DNG reader's default value is likely optimized for its particular de-mosaic algorithm. -AntiAliasStrength, 50738, 0xc632, Image, Exif.Image.AntiAliasStrength, Rational, Provides a hint to the DNG reader about how strong the camera's anti-alias filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is prone to aliasing artifacts with some subjects), while a value of 1.0 means a strong anti-alias filter (i.e., the camera almost never has aliasing artifacts). -ShadowScale, 50739, 0xc633, Image, Exif.Image.ShadowScale, SRational, This tag is used by Adobe Camera Raw to control the sensitivity of its 'Shadows' slider. -DNGPrivateData, 50740, 0xc634, Image, Exif.Image.DNGPrivateData, Byte, Provides a way for camera manufacturers to store private data in the DNG file for use by their own raw converters, and to have that data preserved by programs that edit DNG files. -MakerNoteSafety, 50741, 0xc635, Image, Exif.Image.MakerNoteSafety, Short, MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is safe to preserve along with the rest of the EXIF data. File browsers and other image management software processing an image with a preserved MakerNote should be aware that any thumbnail image embedded in the MakerNote may be stale, and may not reflect the current state of the full size image. -CalibrationIlluminant1, 50778, 0xc65a, Image, Exif.Image.CalibrationIlluminant1, Short, The illuminant used for the first set of color calibration tags (ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for this tag are the same as the legal values for the LightSource EXIF tag. -CalibrationIlluminant2, 50779, 0xc65b, Image, Exif.Image.CalibrationIlluminant2, Short, The illuminant used for an optional second set of color calibration tags (ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for this tag are the same as the legal values for the CalibrationIlluminant1 tag; however, if both are included, neither is allowed to have a value of 0 (unknown). -BestQualityScale, 50780, 0xc65c, Image, Exif.Image.BestQualityScale, Rational, For some cameras, the best possible image quality is not achieved by preserving the total pixel count during conversion. For example, Fujifilm SuperCCD images have maximum detail when their total pixel count is doubled. This tag specifies the amount by which the values of the DefaultScale tag need to be multiplied to achieve the best quality image size. -RawDataUniqueID, 50781, 0xc65d, Image, Exif.Image.RawDataUniqueID, Byte, This tag contains a 16-byte unique identifier for the raw image data in the DNG file. DNG readers can use this tag to recognize a particular raw image, even if the file's name or the metadata contained in the file has been changed. If a DNG writer creates such an identifier, it should do so using an algorithm that will ensure that it is very unlikely two different images will end up having the same identifier. -OriginalRawFileName, 50827, 0xc68b, Image, Exif.Image.OriginalRawFileName, Byte, If the DNG file was converted from a non-DNG raw file, then this tag contains the file name of that original raw file. -OriginalRawFileData, 50828, 0xc68c, Image, Exif.Image.OriginalRawFileData, Undefined, If the DNG file was converted from a non-DNG raw file, then this tag contains the compressed contents of that original raw file. The contents of this tag always use the big-endian byte order. The tag contains a sequence of data blocks. Future versions of the DNG specification may define additional data blocks, so DNG readers should ignore extra bytes when parsing this tag. DNG readers should also detect the case where data blocks are missing from the end of the sequence, and should assume a default value for all the missing blocks. There are no padding or alignment bytes between data blocks. -ActiveArea, 50829, 0xc68d, Image, Exif.Image.ActiveArea, Short, This rectangle defines the active (non-masked) pixels of the sensor. The order of the rectangle coordinates is: top, left, bottom, right. -MaskedAreas, 50830, 0xc68e, Image, Exif.Image.MaskedAreas, Short, This tag contains a list of non-overlapping rectangle coordinates of fully masked pixels, which can be optionally used by DNG readers to measure the black encoding level. The order of each rectangle's coordinates is: top, left, bottom, right. If the raw image data has already had its black encoding level subtracted, then this tag should not be used, since the masked pixels are no longer useful. -AsShotICCProfile, 50831, 0xc68f, Image, Exif.Image.AsShotICCProfile, Undefined, This tag contains an ICC profile that, in conjunction with the AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to specify a default color rendering from camera color space coordinates (linear reference values) into the ICC profile connection space. The ICC profile connection space is an output referred colorimetric space, whereas the other color calibration tags in DNG specify a conversion into a scene referred colorimetric space. This means that the rendering in this profile should include any desired tone and gamut mapping needed to convert between scene referred values and output referred values. -AsShotPreProfileMatrix, 50832, 0xc690, Image, Exif.Image.AsShotPreProfileMatrix, SRational, This tag is used in conjunction with the AsShotICCProfile tag. It specifies a matrix that should be applied to the camera color space coordinates before processing the values through the ICC profile specified in the AsShotICCProfile tag. The matrix is stored in the row scan order. If ColorPlanes is greater than three, then this matrix can (but is not required to) reduce the dimensionality of the color data down to three components, in which case the AsShotICCProfile should have three rather than ColorPlanes input components. -CurrentICCProfile, 50833, 0xc691, Image, Exif.Image.CurrentICCProfile, Undefined, This tag is used in conjunction with the CurrentPreProfileMatrix tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -CurrentPreProfileMatrix, 50834, 0xc692, Image, Exif.Image.CurrentPreProfileMatrix, SRational, This tag is used in conjunction with the CurrentICCProfile tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -ExposureTime, 33434, 0x829a, Photo, Exif.Photo.ExposureTime, Rational, Exposure time, given in seconds (sec). -FNumber, 33437, 0x829d, Photo, Exif.Photo.FNumber, Rational, The F number. -ExposureProgram, 34850, 0x8822, Photo, Exif.Photo.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Photo, Exif.Photo.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. The tag value is an ASCII string compatible with the standard developed by the ASTM Technical Committee. -ISOSpeedRatings, 34855, 0x8827, Photo, Exif.Photo.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Photo, Exif.Photo.OECF, Undefined, Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO 14524. is the relationship between the camera optical input and the image values. -ExifVersion, 36864, 0x9000, Photo, Exif.Photo.ExifVersion, Undefined, The version of this standard supported. Nonexistence of this field is taken to mean nonconformance to the standard. -DateTimeOriginal, 36867, 0x9003, Photo, Exif.Photo.DateTimeOriginal, Ascii, The date and time when the original image data was generated. For a digital still camera the date and time the picture was taken are recorded. -DateTimeDigitized, 36868, 0x9004, Photo, Exif.Photo.DateTimeDigitized, Ascii, The date and time when the image was stored as digital data. -ComponentsConfiguration, 37121, 0x9101, Photo, Exif.Photo.ComponentsConfiguration, Undefined, Information specific to compressed data. The channels of each component are arranged in order from the 1st component to the 4th. For uncompressed data the data arrangement is given in the tag. However, since can only express the order of Y, Cb and Cr, this tag is provided for cases when compressed data uses components other than Y, Cb, and Cr and to enable support of other sequences. -CompressedBitsPerPixel, 37122, 0x9102, Photo, Exif.Photo.CompressedBitsPerPixel, Rational, Information specific to compressed data. The compression mode used for a compressed image is indicated in unit bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Photo, Exif.Photo.ShutterSpeedValue, SRational, Shutter speed. The unit is the APEX (Additive System of Photographic Exposure) setting. -ApertureValue, 37378, 0x9202, Photo, Exif.Photo.ApertureValue, Rational, The lens aperture. The unit is the APEX value. -BrightnessValue, 37379, 0x9203, Photo, Exif.Photo.BrightnessValue, SRational, The value of brightness. The unit is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -ExposureBiasValue, 37380, 0x9204, Photo, Exif.Photo.ExposureBiasValue, SRational, The exposure bias. The units is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -MaxApertureValue, 37381, 0x9205, Photo, Exif.Photo.MaxApertureValue, Rational, The smallest F number of the lens. The unit is the APEX value. Ordinarily it is given in the range of 00.00 to 99.99, but it is not limited to this range. -SubjectDistance, 37382, 0x9206, Photo, Exif.Photo.SubjectDistance, Rational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Photo, Exif.Photo.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Photo, Exif.Photo.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Photo, Exif.Photo.Flash, Short, This tag is recorded when an image is taken using a strobe light (flash). -FocalLength, 37386, 0x920a, Photo, Exif.Photo.FocalLength, Rational, The actual focal length of the lens, in mm. Conversion is not made to the focal length of a 35 mm film camera. -SubjectArea, 37396, 0x9214, Photo, Exif.Photo.SubjectArea, Short, This tag indicates the location and area of the main subject in the overall scene. -MakerNote, 37500, 0x927c, Photo, Exif.Photo.MakerNote, Undefined, A tag for manufacturers of Exif writers to record any desired information. The contents are up to the manufacturer. -UserComment, 37510, 0x9286, Photo, Exif.Photo.UserComment, Comment, A tag for Exif users to write keywords or comments on the image besides those in , and without the character code limitations of the tag. -SubSecTime, 37520, 0x9290, Photo, Exif.Photo.SubSecTime, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeOriginal, 37521, 0x9291, Photo, Exif.Photo.SubSecTimeOriginal, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeDigitized, 37522, 0x9292, Photo, Exif.Photo.SubSecTimeDigitized, Ascii, A tag used to record fractions of seconds for the tag. -FlashpixVersion, 40960, 0xa000, Photo, Exif.Photo.FlashpixVersion, Undefined, The FlashPix format version supported by a FPXR file. -ColorSpace, 40961, 0xa001, Photo, Exif.Photo.ColorSpace, Short, The color space information tag is always recorded as the color space specifier. Normally sRGB is used to define the color space based on the PC monitor conditions and environment. If a color space other than sRGB is used, Uncalibrated is set. Image data recorded as Uncalibrated can be treated as sRGB when it is converted to FlashPix. -PixelXDimension, 40962, 0xa002, Photo, Exif.Photo.PixelXDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid width of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. -PixelYDimension, 40963, 0xa003, Photo, Exif.Photo.PixelYDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid height of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. Since data padding is unnecessary in the vertical direction, the number of lines recorded in this valid image height tag will in fact be the same as that recorded in the SOF. -RelatedSoundFile, 40964, 0xa004, Photo, Exif.Photo.RelatedSoundFile, Ascii, This tag is used to record the name of an audio file related to the image data. The only relational information recorded here is the Exif audio file name and extension (an ASCII string consisting of 8 characters + '.' + 3 characters). The path is not recorded. -InteroperabilityTag, 40965, 0xa005, Photo, Exif.Photo.InteroperabilityTag, Long, Interoperability IFD is composed of tags which stores the information to ensure the Interoperability and pointed by the following tag located in Exif IFD. The Interoperability structure of Interoperability IFD is the same as TIFF defined IFD structure but does not contain the image data characteristically compared with normal TIFF IFD. -FlashEnergy, 41483, 0xa20b, Photo, Exif.Photo.FlashEnergy, Rational, Indicates the strobe energy at the time the image is captured, as measured in Beam Candle Power Seconds (BCPS). -SpatialFrequencyResponse, 41484, 0xa20c, Photo, Exif.Photo.SpatialFrequencyResponse, Undefined, This tag records the camera or input device spatial frequency table and SFR values in the direction of image width, image height, and diagonal direction, as specified in ISO 12233. -FocalPlaneXResolution, 41486, 0xa20e, Photo, Exif.Photo.FocalPlaneXResolution, Rational, Indicates the number of pixels in the image width (X) direction per on the camera focal plane. -FocalPlaneYResolution, 41487, 0xa20f, Photo, Exif.Photo.FocalPlaneYResolution, Rational, Indicates the number of pixels in the image height (V) direction per on the camera focal plane. -FocalPlaneResolutionUnit, 41488, 0xa210, Photo, Exif.Photo.FocalPlaneResolutionUnit, Short, Indicates the unit for measuring and . This value is the same as the . -SubjectLocation, 41492, 0xa214, Photo, Exif.Photo.SubjectLocation, Short, Indicates the location of the main subject in the scene. The value of this tag represents the pixel at the center of the main subject relative to the left edge, prior to rotation processing as per the tag. The first value indicates the X column number and second indicates the Y row number. -ExposureIndex, 41493, 0xa215, Photo, Exif.Photo.ExposureIndex, Rational, Indicates the exposure index selected on the camera or input device at the time the image is captured. -SensingMethod, 41495, 0xa217, Photo, Exif.Photo.SensingMethod, Short, Indicates the image sensor type on the camera or input device. -FileSource, 41728, 0xa300, Photo, Exif.Photo.FileSource, Undefined, Indicates the image source. If a DSC recorded the image, this tag value of this tag always be set to 3, indicating that the image was recorded on a DSC. -SceneType, 41729, 0xa301, Photo, Exif.Photo.SceneType, Undefined, Indicates the type of scene. If a DSC recorded the image, this tag value must always be set to 1, indicating that the image was directly photographed. -CFAPattern, 41730, 0xa302, Photo, Exif.Photo.CFAPattern, Undefined, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods. -CustomRendered, 41985, 0xa401, Photo, Exif.Photo.CustomRendered, Short, This tag indicates the use of special processing on image data, such as rendering geared to output. When special processing is performed, the reader is expected to disable or minimize any further processing. -ExposureMode, 41986, 0xa402, Photo, Exif.Photo.ExposureMode, Short, This tag indicates the exposure mode set when the image was shot. In auto-bracketing mode, the camera shoots a series of frames of the same scene at different exposure settings. -WhiteBalance, 41987, 0xa403, Photo, Exif.Photo.WhiteBalance, Short, This tag indicates the white balance mode set when the image was shot. -DigitalZoomRatio, 41988, 0xa404, Photo, Exif.Photo.DigitalZoomRatio, Rational, This tag indicates the digital zoom ratio when the image was shot. If the numerator of the recorded value is 0, this indicates that digital zoom was not used. -FocalLengthIn35mmFilm, 41989, 0xa405, Photo, Exif.Photo.FocalLengthIn35mmFilm, Short, This tag indicates the equivalent focal length assuming a 35mm film camera, in mm. A value of 0 means the focal length is unknown. Note that this tag differs from the tag. -SceneCaptureType, 41990, 0xa406, Photo, Exif.Photo.SceneCaptureType, Short, This tag indicates the type of scene that was shot. It can also be used to record the mode in which the image was shot. Note that this differs from the tag. -GainControl, 41991, 0xa407, Photo, Exif.Photo.GainControl, Short, This tag indicates the degree of overall image gain adjustment. -Contrast, 41992, 0xa408, Photo, Exif.Photo.Contrast, Short, This tag indicates the direction of contrast processing applied by the camera when the image was shot. -Saturation, 41993, 0xa409, Photo, Exif.Photo.Saturation, Short, This tag indicates the direction of saturation processing applied by the camera when the image was shot. -Sharpness, 41994, 0xa40a, Photo, Exif.Photo.Sharpness, Short, This tag indicates the direction of sharpness processing applied by the camera when the image was shot. -DeviceSettingDescription, 41995, 0xa40b, Photo, Exif.Photo.DeviceSettingDescription, Undefined, This tag indicates information on the picture-taking conditions of a particular camera model. The tag is used only to indicate the picture-taking conditions in the reader. -SubjectDistanceRange, 41996, 0xa40c, Photo, Exif.Photo.SubjectDistanceRange, Short, This tag indicates the distance to the subject. -ImageUniqueID, 42016, 0xa420, Photo, Exif.Photo.ImageUniqueID, Ascii, This tag indicates an identifier assigned uniquely to each image. It is recorded as an ASCII string equivalent to hexadecimal notation and 128-bit fixed length. -InteroperabilityIndex, 1, 0x0001, Iop, Exif.Iop.InteroperabilityIndex, Ascii, Indicates the identification of the Interoperability rule. Use "R98" for stating ExifR98 Rules. Four bytes used including the termination code (NULL). see the separate volume of Recommended Exif Interoperability Rules (ExifR98) for other tags used for ExifR98. -InteroperabilityVersion, 2, 0x0002, Iop, Exif.Iop.InteroperabilityVersion, Undefined, Interoperability version -RelatedImageFileFormat, 4096, 0x1000, Iop, Exif.Iop.RelatedImageFileFormat, Ascii, File format of image file -RelatedImageWidth, 4097, 0x1001, Iop, Exif.Iop.RelatedImageWidth, Long, Image width -RelatedImageLength, 4098, 0x1002, Iop, Exif.Iop.RelatedImageLength, Long, Image height -GPSVersionID, 0, 0x0000, GPSInfo, Exif.GPSInfo.GPSVersionID, Byte, Indicates the version of . The version is given as 2.0.0.0. This tag is mandatory when tag is present. (Note: The tag is given in bytes, unlike the tag. When the version is 2.0.0.0, the tag value is 02000000.H). -GPSLatitudeRef, 1, 0x0001, GPSInfo, Exif.GPSInfo.GPSLatitudeRef, Ascii, Indicates whether the latitude is north or south latitude. The ASCII value 'N' indicates north latitude, and 'S' is south latitude. -GPSLatitude, 2, 0x0002, GPSInfo, Exif.GPSInfo.GPSLatitude, Rational, Indicates the latitude. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is dd/1,mmmm/100,0/1. -GPSLongitudeRef, 3, 0x0003, GPSInfo, Exif.GPSInfo.GPSLongitudeRef, Ascii, Indicates whether the longitude is east or west longitude. ASCII 'E' indicates east longitude, and 'W' is west longitude. -GPSLongitude, 4, 0x0004, GPSInfo, Exif.GPSInfo.GPSLongitude, Rational, Indicates the longitude. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is ddd/1,mmmm/100,0/1. -GPSAltitudeRef, 5, 0x0005, GPSInfo, Exif.GPSInfo.GPSAltitudeRef, Byte, Indicates the altitude used as the reference altitude. If the reference is sea level and the altitude is above sea level, 0 is given. If the altitude is below sea level, a value of 1 is given and the altitude is indicated as an absolute value in the GSPAltitude tag. The reference unit is meters. Note that this tag is BYTE type, unlike other reference tags. -GPSAltitude, 6, 0x0006, GPSInfo, Exif.GPSInfo.GPSAltitude, Rational, Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is expressed as one RATIONAL value. The reference unit is meters. -GPSTimeStamp, 7, 0x0007, GPSInfo, Exif.GPSInfo.GPSTimeStamp, Rational, Indicates the time as UTC (Coordinated Universal Time). is expressed as three RATIONAL values giving the hour, minute, and second (atomic clock). -GPSSatellites, 8, 0x0008, GPSInfo, Exif.GPSInfo.GPSSatellites, Ascii, Indicates the GPS satellites used for measurements. This tag can be used to describe the number of satellites, their ID number, angle of elevation, azimuth, SNR and other information in ASCII notation. The format is not specified. If the GPS receiver is incapable of taking measurements, value of the tag is set to NULL. -GPSStatus, 9, 0x0009, GPSInfo, Exif.GPSInfo.GPSStatus, Ascii, Indicates the status of the GPS receiver when the image is recorded. "A" means measurement is in progress, and "V" means the measurement is Interoperability. -GPSMeasureMode, 10, 0x000a, GPSInfo, Exif.GPSInfo.GPSMeasureMode, Ascii, Indicates the GPS measurement mode. "2" means two-dimensional measurement and "3" means three-dimensional measurement is in progress. -GPSDOP, 11, 0x000b, GPSInfo, Exif.GPSInfo.GPSDOP, Rational, Indicates the GPS DOP (data degree of precision). An HDOP value is written during two-dimensional measurement, and PDOP during three-dimensional measurement. -GPSSpeedRef, 12, 0x000c, GPSInfo, Exif.GPSInfo.GPSSpeedRef, Ascii, Indicates the unit used to express the GPS receiver speed of movement. "K" "M" and "N" represents kilometers per hour, miles per hour, and knots. -GPSSpeed, 13, 0x000d, GPSInfo, Exif.GPSInfo.GPSSpeed, Rational, Indicates the speed of GPS receiver movement. -GPSTrackRef, 14, 0x000e, GPSInfo, Exif.GPSInfo.GPSTrackRef, Ascii, Indicates the reference for giving the direction of GPS receiver movement. "T" denotes true direction and "M" is magnetic direction. -GPSTrack, 15, 0x000f, GPSInfo, Exif.GPSInfo.GPSTrack, Rational, Indicates the direction of GPS receiver movement. The range of values is from 0.00 to 359.99. -GPSImgDirectionRef, 16, 0x0010, GPSInfo, Exif.GPSInfo.GPSImgDirectionRef, Ascii, Indicates the reference for giving the direction of the image when it is captured. "T" denotes true direction and "M" is magnetic direction. -GPSImgDirection, 17, 0x0011, GPSInfo, Exif.GPSInfo.GPSImgDirection, Rational, Indicates the direction of the image when it was captured. The range of values is from 0.00 to 359.99. -GPSMapDatum, 18, 0x0012, GPSInfo, Exif.GPSInfo.GPSMapDatum, Ascii, Indicates the geodetic survey data used by the GPS receiver. If the survey data is restricted to Japan, the value of this tag is "TOKYO" or "WGS-84". -GPSDestLatitudeRef, 19, 0x0013, GPSInfo, Exif.GPSInfo.GPSDestLatitudeRef, Ascii, Indicates whether the latitude of the destination point is north or south latitude. The ASCII value "N" indicates north latitude, and "S" is south latitude. -GPSDestLatitude, 20, 0x0014, GPSInfo, Exif.GPSInfo.GPSDestLatitude, Rational, Indicates the latitude of the destination point. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If latitude is expressed as degrees, minutes and seconds, a typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be dd/1,mmmm/100,0/1. -GPSDestLongitudeRef, 21, 0x0015, GPSInfo, Exif.GPSInfo.GPSDestLongitudeRef, Ascii, Indicates whether the longitude of the destination point is east or west longitude. ASCII "E" indicates east longitude, and "W" is west longitude. -GPSDestLongitude, 22, 0x0016, GPSInfo, Exif.GPSInfo.GPSDestLongitude, Rational, Indicates the longitude of the destination point. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If longitude is expressed as degrees, minutes and seconds, a typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be ddd/1,mmmm/100,0/1. -GPSDestBearingRef, 23, 0x0017, GPSInfo, Exif.GPSInfo.GPSDestBearingRef, Ascii, Indicates the reference used for giving the bearing to the destination point. "T" denotes true direction and "M" is magnetic direction. -GPSDestBearing, 24, 0x0018, GPSInfo, Exif.GPSInfo.GPSDestBearing, Rational, Indicates the bearing to the destination point. The range of values is from 0.00 to 359.99. -GPSDestDistanceRef, 25, 0x0019, GPSInfo, Exif.GPSInfo.GPSDestDistanceRef, Ascii, Indicates the unit used to express the distance to the destination point. "K", "M" and "N" represent kilometers, miles and knots. -GPSDestDistance, 26, 0x001a, GPSInfo, Exif.GPSInfo.GPSDestDistance, Rational, Indicates the distance to the destination point. -GPSProcessingMethod, 27, 0x001b, GPSInfo, Exif.GPSInfo.GPSProcessingMethod, Undefined, A character string recording the name of the method used for location finding. The first byte indicates the character code used, and this is followed by the name of the method. -GPSAreaInformation, 28, 0x001c, GPSInfo, Exif.GPSInfo.GPSAreaInformation, Undefined, A character string recording the name of the GPS area. The first byte indicates the character code used, and this is followed by the name of the GPS area. -GPSDateStamp, 29, 0x001d, GPSInfo, Exif.GPSInfo.GPSDateStamp, Ascii, A character string recording date and time information relative to UTC (Coordinated Universal Time). The format is "YYYY:MM:DD.". -GPSDifferential, 30, 0x001e, GPSInfo, Exif.GPSInfo.GPSDifferential, Short, Indicates whether differential correction is applied to the GPS receiver. -Usage: bin\ReleaseDLL\tiff-test.exe file - /usr/lib /usr lib - /usr/ / usr - usr . usr - / / - . . . - .. . .. - /// / - /usr/.emacs /usr .emacs - /usr/.emacs/ /usr .emacs - /usr/.emacs// /usr .emacs - usr/.emacs usr .emacs - .emacs . .emacs - .emacs.gz . .emacs.gz .gz - /tmp/image.jpg /tmp image.jpg .jpg -/tmp/.image.jpg /tmp .image.jpg .jpg - /image.jpg / image.jpg .jpg - image.jpg . image.jpg .jpg - image.jpg// . image.jpg .jpg - /////image.jpg / image.jpg .jpg - /foo.bar/image /foo.bar image -/foo.bar/images.tar.gz /foo.bar images.tar.gz .gz -d:\foo.bar\images.tar.gz d:\foo.bar images.tar.gz .gz -Usage: write-test file case - -where case is an integer between 1 and 11 -Usage: bin\ReleaseDLL\write2-test.exe file -Usage: bin\ReleaseDLL\xmpparse.exe file -Usage: bin\ReleaseDLL\xmpparser-test.exe file -Xmp.dc.source XmpText 13 xmpsample.cpp -Xmp.dc.subject XmpBag 2 Palmtree, Rubbertree -Xmp.dc.title LangAlt 2 lang="de-DE" Sonnenuntergang am Strand, lang="en-US" Sunset on the beach -Xmp.dc.one XmpText 2 -1 -Xmp.dc.two XmpText 6 3.1415 -Xmp.dc.three XmpText 3 5/7 -Xmp.dc.four XmpText 3 255 -Xmp.dc.five XmpText 3 256 -Xmp.dc.six XmpText 5 False -Xmp.dc.seven XmpText 5 Seven -Xmp.dc.format XmpText 10 image/jpeg -Xmp.dc.creator XmpSeq 3 1) The first creator, 2) The second creator, 3) And another one -Xmp.dc.description LangAlt 2 lang="x-default" Hello, World, lang="de-DE" Hallo, Welt -Xmp.tiff.ImageDescription LangAlt 2 lang="x-default" TIFF image description, lang="de-DE" TIFF Bildbeschreibung -Xmp.ns.myProperty XmpText 7 myValue -Xmp.xmpDM.videoFrameSize/stDim:w XmpText 2 16 -Xmp.xmpDM.videoFrameSize/stDim:h XmpText 1 9 -Xmp.xmpDM.videoFrameSize/stDim:unit XmpText 4 inch -Xmp.dc.publisher XmpBag 1 James Bond -Xmp.dc.publisher[1]/?ns:role XmpText 12 secret agent -Xmp.dc.creator[2]/?ns:role XmpText 10 programmer -Xmp.xmpBJ.JobRef XmpText 0 type="Bag" -Xmp.xmpBJ.JobRef[1]/stJob:name XmpText 14 Birthday party -Xmp.xmpBJ.JobRef[1]/stJob:role XmpText 12 Photographer -Xmp.xmpBJ.JobRef[2]/stJob:name XmpText 16 Wedding ceremony -Xmp.xmpBJ.JobRef[2]/stJob:role XmpText 8 Best man - - - - - - - Palmtree - Rubbertree - - - - - Sonnenuntergang am Strand - Sunset on the beach - - - - - 1) The first creator - - 2) The second creator - programmer - - 3) And another one - - - - - Hello, World - Hallo, Welt - - - - - - James Bond - secret agent - - - - - - TIFF image description - TIFF Bildbeschreibung - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Usage: addmoddel\Debug\addmoddel.exe file -Usage: addmoddel\DebugDLL\addmoddel.exe file -Usage: addmoddel\Release\addmoddel.exe file -Usage: addmoddel\ReleaseDLL\addmoddel.exe file -Usage: convert-test\Debug\convert-test.exe file -Usage: convert-test\DebugDLL\convert-test.exe file -Usage: convert-test\Release\convert-test.exe file -Usage: convert-test\ReleaseDLL\convert-test.exe file -Usage: exifcomment\Debug\exifcomment.exe file -Usage: exifcomment\DebugDLL\exifcomment.exe file -Usage: exifcomment\Release\exifcomment.exe file -Usage: exifcomment\ReleaseDLL\exifcomment.exe file -Usage: tiff-test\Debug\tiff-test.exe file -Usage: tiff-test\DebugDLL\tiff-test.exe file -Usage: tiff-test\Release\tiff-test.exe file -Usage: tiff-test\ReleaseDLL\tiff-test.exe file -Usage: exifdata-test\Debug\exifdata-test.exe file -Usage: exifdata-test\DebugDLL\exifdata-test.exe file -Usage: exifdata-test\Release\exifdata-test.exe file -Usage: exifdata-test\ReleaseDLL\exifdata-test.exe file -Usage: exifprint\Debug\exifprint.exe file -Usage: exifprint\DebugDLL\exifprint.exe file -Usage: exifprint\Release\exifprint.exe file -Usage: exifprint\ReleaseDLL\exifprint.exe file -Usage: exiv2.exe [ options ] [ action ] file ... - -Manipulate the Exif metadata of images. -Usage: exiv2.exe [ options ] [ action ] file ... - -Manipulate the Exif metadata of images. -Usage: exiv2.exe [ options ] [ action ] file ... - -Manipulate the Exif metadata of images. -Usage: exiv2.exe [ options ] [ action ] file ... - -Manipulate the Exif metadata of images. -Usage: iotest\Debug\iotest.exe filein fileout1 fileout2 -fileouts are overwritten and should match filein exactly -Usage: iotest\DebugDLL\iotest.exe filein fileout1 fileout2 -fileouts are overwritten and should match filein exactly -Usage: iotest\Release\iotest.exe filein fileout1 fileout2 -fileouts are overwritten and should match filein exactly -Usage: iotest\ReleaseDLL\iotest.exe filein fileout1 fileout2 -fileouts are overwritten and should match filein exactly -Usage: iptceasy\Debug\iptceasy.exe file -Usage: iptceasy\DebugDLL\iptceasy.exe file -Usage: iptceasy\Release\iptceasy.exe file -Usage: iptceasy\ReleaseDLL\iptceasy.exe file -Usage: iptcprint\Debug\iptcprint.exe file -Usage: iptcprint\DebugDLL\iptcprint.exe file -Usage: iptcprint\Release\iptcprint.exe file -Usage: iptcprint\ReleaseDLL\iptcprint.exe file -Usage: iptctest\Debug\iptctest.exe image -Commands read from stdin. -Usage: iptctest\DebugDLL\iptctest.exe image -Commands read from stdin. -Usage: iptctest\Release\iptctest.exe image -Commands read from stdin. -Usage: iptctest\ReleaseDLL\iptctest.exe image -Commands read from stdin. -Usage: largeiptc-test\Debug\largeiptc-test.exe image datafile -Usage: largeiptc-test\DebugDLL\largeiptc-test.exe image datafile -Usage: largeiptc-test\Release\largeiptc-test.exe image datafile -Usage: largeiptc-test\ReleaseDLL\largeiptc-test.exe image datafile - -Reads and writes raw metadata. Use -h option for help. -Usage: metacopy.exe [-iecaph] readfile writefile - -Reads and writes raw metadata. Use -h option for help. -Usage: metacopy.exe [-iecaph] readfile writefile - -Reads and writes raw metadata. Use -h option for help. -Usage: metacopy.exe [-iecaph] readfile writefile -Usage: mmap-test\ReleaseDLL\mmap-test.exe file -Usage: mmap-test\Debug\mmap-test.exe file -Usage: mmap-test\DebugDLL\mmap-test.exe file -Usage: mmap-test\Release\mmap-test.exe file - -Reads and writes raw metadata. Use -h option for help. -Usage: metacopy.exe [-iecaph] readfile writefile -Usage: prevtest\Debug\prevtest.exe file -Usage: prevtest\DebugDLL\prevtest.exe file -Usage: prevtest\Release\prevtest.exe file -Usage: prevtest\ReleaseDLL\prevtest.exe file -string long float Rational -True 1 1 1/1 -False 0 0 0/1 -t 1 1 1/1 -f 0 0 0/1 --1 -1 -1 -1/1 -0 0 0 0/1 -1 1 1 1/1 -0.0 0 0 0/1 -0.1 0 0.1 1/10 -0.01 0 0.01 1/100 -0.001 0 0.001 1/1000 --1.49999 -1 -1.49999 -149999/100000 --1.5 -1 -1.5 -3/2 -1.49999 1 1.49999 149999/100000 -1.5 1 1.5 3/2 -0/1 0 0 0/1 -1/1 1 1 1/1 -1/3 0 0.333333 1/3 --1/3 0 -0.333333 -1/3 -4/3 1 1.33333 4/3 --4/3 -1 -1.33333 -4/3 -0/0 nok nok 0/0 -text nok nok nok -string long float Rational -True 1 1 1/1 -False 0 0 0/1 -t 1 1 1/1 -f 0 0 0/1 --1 -1 -1 -1/1 -0 0 0 0/1 -1 1 1 1/1 -0.0 0 0 0/1 -0.1 0 0.1 1/10 -0.01 0 0.01 1/100 -0.001 0 0.001 1/1000 --1.49999 -1 -1.49999 -149999/100000 --1.5 -1 -1.5 -3/2 -1.49999 1 1.49999 149999/100000 -1.5 1 1.5 3/2 -0/1 0 0 0/1 -1/1 1 1 1/1 -1/3 0 0.333333 1/3 --1/3 0 -0.333333 -1/3 -4/3 1 1.33333 4/3 --4/3 -1 -1.33333 -4/3 -0/0 nok nok 0/0 -text nok nok nok -string long float Rational -True 1 1 1/1 -False 0 0 0/1 -t 1 1 1/1 -f 0 0 0/1 --1 -1 -1 -1/1 -0 0 0 0/1 -1 1 1 1/1 -0.0 0 0 0/1 -0.1 0 0.1 1/10 -0.01 0 0.01 1/100 -0.001 0 0.001 1/1000 --1.49999 -1 -1.49999 -149999/100000 --1.5 -1 -1.5 -3/2 -1.49999 1 1.49999 149999/100000 -1.5 1 1.5 3/2 -0/1 0 0 0/1 -1/1 1 1 1/1 -1/3 0 0.333333 1/3 --1/3 0 -0.333333 -1/3 -4/3 1 1.33333 4/3 --4/3 -1 -1.33333 -4/3 -0/0 nok nok 0/0 -text nok nok nok -string long float Rational -True 1 1 1/1 -False 0 0 0/1 -t 1 1 1/1 -f 0 0 0/1 --1 -1 -1 -1/1 -0 0 0 0/1 -1 1 1 1/1 -0.0 0 0 0/1 -0.1 0 0.1 1/10 -0.01 0 0.01 1/100 -0.001 0 0.001 1/1000 --1.49999 -1 -1.49999 -149999/100000 --1.5 -1 -1.5 -3/2 -1.49999 1 1.49999 149999/100000 -1.5 1 1.5 3/2 -0/1 0 0 0/1 -1/1 1 1 1/1 -1/3 0 0.333333 1/3 --1/3 0 -0.333333 -1/3 -4/3 1 1.33333 4/3 --4/3 -1 -1.33333 -4/3 -0/0 nok nok 0/0 -text nok nok nok -ProcessingSoftware, 11, 0x000b, Image, Exif.Image.ProcessingSoftware, Ascii, The name and version of the software used to post-process the picture. -NewSubfileType, 254, 0x00fe, Image, Exif.Image.NewSubfileType, Long, A general indication of the kind of data contained in this subfile. -SubfileType, 255, 0x00ff, Image, Exif.Image.SubfileType, Short, A general indication of the kind of data contained in this subfile. This field is deprecated. The NewSubfileType field should be used instead. -ImageWidth, 256, 0x0100, Image, Exif.Image.ImageWidth, Long, The number of columns of image data, equal to the number of pixels per row. In JPEG compressed data a JPEG marker is used instead of this tag. -ImageLength, 257, 0x0101, Image, Exif.Image.ImageLength, Long, The number of rows of image data. In JPEG compressed data a JPEG marker is used instead of this tag. -BitsPerSample, 258, 0x0102, Image, Exif.Image.BitsPerSample, Short, The number of bits per image component. In this standard each component of the image is 8 bits, so the value for this tag is 8. See also . In JPEG compressed data a JPEG marker is used instead of this tag. -Compression, 259, 0x0103, Image, Exif.Image.Compression, Short, The compression scheme used for the image data. When a primary image is JPEG compressed, this designation is not necessary and is omitted. When thumbnails use JPEG compression, this tag value is set to 6. -PhotometricInterpretation, 262, 0x0106, Image, Exif.Image.PhotometricInterpretation, Short, The pixel composition. In JPEG compressed data a JPEG marker is used instead of this tag. -Threshholding, 263, 0x0107, Image, Exif.Image.Threshholding, Short, For black and white TIFF files that represent shades of gray, the technique used to convert from gray to black and white pixels. -CellWidth, 264, 0x0108, Image, Exif.Image.CellWidth, Short, The width of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -CellLength, 265, 0x0109, Image, Exif.Image.CellLength, Short, The length of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -FillOrder, 266, 0x010a, Image, Exif.Image.FillOrder, Short, The logical order of bits within a byte -DocumentName, 269, 0x010d, Image, Exif.Image.DocumentName, Ascii, The name of the document from which this image was scanned -ImageDescription, 270, 0x010e, Image, Exif.Image.ImageDescription, Ascii, A character string giving the title of the image. It may be a comment such as "1988 company picnic" or the like. Two-bytes character codes cannot be used. When a 2-bytes code is necessary, the Exif Private tag is to be used. -Make, 271, 0x010f, Image, Exif.Image.Make, Ascii, The manufacturer of the recording equipment. This is the manufacturer of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -Model, 272, 0x0110, Image, Exif.Image.Model, Ascii, The model name or model number of the equipment. This is the model name or number of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -StripOffsets, 273, 0x0111, Image, Exif.Image.StripOffsets, Long, For each strip, the byte offset of that strip. It is recommended that this be selected so the number of strip bytes does not exceed 64 Kbytes. With JPEG compressed data this designation is not needed and is omitted. See also and . -Orientation, 274, 0x0112, Image, Exif.Image.Orientation, Short, The image orientation viewed in terms of rows and columns. -SamplesPerPixel, 277, 0x0115, Image, Exif.Image.SamplesPerPixel, Short, The number of components per pixel. Since this standard applies to RGB and YCbCr images, the value set for this tag is 3. In JPEG compressed data a JPEG marker is used instead of this tag. -RowsPerStrip, 278, 0x0116, Image, Exif.Image.RowsPerStrip, Long, The number of rows per strip. This is the number of rows in the image of one strip when an image is divided into strips. With JPEG compressed data this designation is not needed and is omitted. See also and . -StripByteCounts, 279, 0x0117, Image, Exif.Image.StripByteCounts, Long, The total number of bytes in each strip. With JPEG compressed data this designation is not needed and is omitted. -XResolution, 282, 0x011a, Image, Exif.Image.XResolution, Rational, The number of pixels per in the direction. When the image resolution is unknown, 72 [dpi] is designated. -YResolution, 283, 0x011b, Image, Exif.Image.YResolution, Rational, The number of pixels per in the direction. The same value as is designated. -PlanarConfiguration, 284, 0x011c, Image, Exif.Image.PlanarConfiguration, Short, Indicates whether pixel components are recorded in a chunky or planar format. In JPEG compressed files a JPEG marker is used instead of this tag. If this field does not exist, the TIFF default of 1 (chunky) is assumed. -GrayResponseUnit, 290, 0x0122, Image, Exif.Image.GrayResponseUnit, Short, The precision of the information contained in the GrayResponseCurve. -GrayResponseCurve, 291, 0x0123, Image, Exif.Image.GrayResponseCurve, Short, For grayscale data, the optical density of each possible pixel value. -T4Options, 292, 0x0124, Image, Exif.Image.T4Options, Long, T.4-encoding options. -T6Options, 293, 0x0125, Image, Exif.Image.T6Options, Long, T.6-encoding options. -ResolutionUnit, 296, 0x0128, Image, Exif.Image.ResolutionUnit, Short, The unit for measuring and . The same unit is used for both and . If the image resolution is unknown, 2 (inches) is designated. -TransferFunction, 301, 0x012d, Image, Exif.Image.TransferFunction, Short, A transfer function for the image, described in tabular style. Normally this tag is not necessary, since color space is specified in the color space information tag (). -Software, 305, 0x0131, Image, Exif.Image.Software, Ascii, This tag records the name and version of the software or firmware of the camera or image input device used to generate the image. The detailed format is not specified, but it is recommended that the example shown below be followed. When the field is left blank, it is treated as unknown. -DateTime, 306, 0x0132, Image, Exif.Image.DateTime, Ascii, The date and time of image creation. In Exif standard, it is the date and time the file was changed. -Artist, 315, 0x013b, Image, Exif.Image.Artist, Ascii, This tag records the name of the camera owner, photographer or image creator. The detailed format is not specified, but it is recommended that the information be written as in the example below for ease of Interoperability. When the field is left blank, it is treated as unknown. Ex.) "Camera owner, John Smith; Photographer, Michael Brown; Image creator, Ken James" -HostComputer, 316, 0x013c, Image, Exif.Image.HostComputer, Ascii, This tag records information about the host computer used to generate the image. -Predictor, 317, 0x013d, Image, Exif.Image.Predictor, Short, A predictor is a mathematical operator that is applied to the image data before an encoding scheme is applied. -WhitePoint, 318, 0x013e, Image, Exif.Image.WhitePoint, Rational, The chromaticity of the white point of the image. Normally this tag is not necessary, since color space is specified in the colorspace information tag (). -PrimaryChromaticities, 319, 0x013f, Image, Exif.Image.PrimaryChromaticities, Rational, The chromaticity of the three primary colors of the image. Normally this tag is not necessary, since colorspace is specified in the colorspace information tag (). -ColorMap, 320, 0x0140, Image, Exif.Image.ColorMap, Short, A color map for palette color images. This field defines a Red-Green-Blue color map (often called a lookup table) for palette-color images. In a palette-color image, a pixel value is used to index into an RGB lookup table. -HalftoneHints, 321, 0x0141, Image, Exif.Image.HalftoneHints, Short, The purpose of the HalftoneHints field is to convey to the halftone function the range of gray levels within a colorimetrically-specified image that should retain tonal detail. -TileWidth, 322, 0x0142, Image, Exif.Image.TileWidth, Short, The tile width in pixels. This is the number of columns in each tile. -TileLength, 323, 0x0143, Image, Exif.Image.TileLength, Short, The tile length (height) in pixels. This is the number of rows in each tile. -TileOffsets, 324, 0x0144, Image, Exif.Image.TileOffsets, Short, For each tile, the byte offset of that tile, as compressed and stored on disk. The offset is specified with respect to the beginning of the TIFF file. Note that this implies that each tile has a location independent of the locations of other tiles. -TileByteCounts, 325, 0x0145, Image, Exif.Image.TileByteCounts, Short, For each tile, the number of (compressed) bytes in that tile. See TileOffsets for a description of how the byte counts are ordered. -SubIFDs, 330, 0x014a, Image, Exif.Image.SubIFDs, Long, Defined by Adobe Corporation to enable TIFF Trees within a TIFF file. -InkSet, 332, 0x014c, Image, Exif.Image.InkSet, Short, The set of inks used in a separated (PhotometricInterpretation=5) image. -InkNames, 333, 0x014d, Image, Exif.Image.InkNames, Ascii, The name of each ink used in a separated (PhotometricInterpretation=5) image. -NumberOfInks, 334, 0x014e, Image, Exif.Image.NumberOfInks, Short, The number of inks. Usually equal to SamplesPerPixel, unless there are extra samples. -DotRange, 336, 0x0150, Image, Exif.Image.DotRange, Byte, The component values that correspond to a 0% dot and 100% dot. -TargetPrinter, 337, 0x0151, Image, Exif.Image.TargetPrinter, Ascii, A description of the printing environment for which this separation is intended. -ExtraSamples, 338, 0x0152, Image, Exif.Image.ExtraSamples, Short, Specifies that each pixel has m extra components whose interpretation is defined by one of the values listed below. -SampleFormat, 339, 0x0153, Image, Exif.Image.SampleFormat, Short, This field specifies how to interpret each data sample in a pixel. -SMinSampleValue, 340, 0x0154, Image, Exif.Image.SMinSampleValue, Short, This field specifies the minimum sample value. -SMaxSampleValue, 341, 0x0155, Image, Exif.Image.SMaxSampleValue, Short, This field specifies the maximum sample value. -TransferRange, 342, 0x0156, Image, Exif.Image.TransferRange, Short, Expands the range of the TransferFunction -ClipPath, 343, 0x0157, Image, Exif.Image.ClipPath, Byte, A TIFF ClipPath is intended to mirror the essentials of PostScript's path creation functionality. -XClipPathUnits, 344, 0x0158, Image, Exif.Image.XClipPathUnits, SShort, The number of units that span the width of the image, in terms of integer ClipPath coordinates. -YClipPathUnits, 345, 0x0159, Image, Exif.Image.YClipPathUnits, SShort, The number of units that span the height of the image, in terms of integer ClipPath coordinates. -Indexed, 346, 0x015a, Image, Exif.Image.Indexed, Short, Indexed images are images where the 'pixels' do not represent color values, but rather an index (usually 8-bit) into a separate color table, the ColorMap. -JPEGTables, 347, 0x015b, Image, Exif.Image.JPEGTables, Undefined, This optional tag may be used to encode the JPEG quantization andHuffman tables for subsequent use by the JPEG decompression process. -OPIProxy, 351, 0x015f, Image, Exif.Image.OPIProxy, Short, OPIProxy gives information concerning whether this image is a low-resolution proxy of a high-resolution image (Adobe OPI). -JPEGProc, 512, 0x0200, Image, Exif.Image.JPEGProc, Long, This field indicates the process used to produce the compressed data -JPEGInterchangeFormat, 513, 0x0201, Image, Exif.Image.JPEGInterchangeFormat, Long, The offset to the start byte (SOI) of JPEG compressed thumbnail data. This is not used for primary image JPEG data. -JPEGInterchangeFormatLength, 514, 0x0202, Image, Exif.Image.JPEGInterchangeFormatLength, Long, The number of bytes of JPEG compressed thumbnail data. This is not used for primary image JPEG data. JPEG thumbnails are not divided but are recorded as a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not be recorded. Compressed thumbnails must be recorded in no more than 64 Kbytes, including all other data to be recorded in APP1. -JPEGRestartInterval, 515, 0x0203, Image, Exif.Image.JPEGRestartInterval, Short, This Field indicates the length of the restart interval used in the compressed image data. -JPEGLosslessPredictors, 517, 0x0205, Image, Exif.Image.JPEGLosslessPredictors, Short, This Field points to a list of lossless predictor-selection values, one per component. -JPEGPointTransforms, 518, 0x0206, Image, Exif.Image.JPEGPointTransforms, Short, This Field points to a list of point transform values, one per component. -JPEGQTables, 519, 0x0207, Image, Exif.Image.JPEGQTables, Long, This Field points to a list of offsets to the quantization tables, one per component. -JPEGDCTables, 520, 0x0208, Image, Exif.Image.JPEGDCTables, Long, This Field points to a list of offsets to the DC Huffman tables or the lossless Huffman tables, one per component. -JPEGACTables, 521, 0x0209, Image, Exif.Image.JPEGACTables, Long, This Field points to a list of offsets to the Huffman AC tables, one per component. -YCbCrCoefficients, 529, 0x0211, Image, Exif.Image.YCbCrCoefficients, Rational, The matrix coefficients for transformation from RGB to YCbCr image data. No default is given in TIFF; but here the value given in Appendix E, "Color Space Guidelines", is used as the default. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability this condition. -YCbCrSubSampling, 530, 0x0212, Image, Exif.Image.YCbCrSubSampling, Short, The sampling ratio of chrominance components in relation to the luminance component. In JPEG compressed data a JPEG marker is used instead of this tag. -YCbCrPositioning, 531, 0x0213, Image, Exif.Image.YCbCrPositioning, Short, The position of chrominance components in relation to the luminance component. This field is designated only for JPEG compressed data or uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr = 4:2:2 it is recommended in this standard that 2 (co-sited) be used to record data, in order to improve the image quality when viewed on TV systems. When this field does not exist, the reader shall assume the TIFF default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is recommended. If the reader does not have the capability of supporting both kinds of , it shall follow the TIFF default regardless of the value in this field. It is preferable that readers be able to support both centered and co-sited positioning. -ReferenceBlackWhite, 532, 0x0214, Image, Exif.Image.ReferenceBlackWhite, Rational, The reference black point value and reference white point value. No defaults are given in TIFF, but the values below are given as defaults here. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability these conditions. -XMLPacket, 700, 0x02bc, Image, Exif.Image.XMLPacket, Byte, XMP Metadata (Adobe technote 9-14-02) -Rating, 18246, 0x4746, Image, Exif.Image.Rating, Short, Rating tag used by Windows -RatingPercent, 18249, 0x4749, Image, Exif.Image.RatingPercent, Short, Rating tag used by Windows, value in percent -ImageID, 32781, 0x800d, Image, Exif.Image.ImageID, Ascii, ImageID is the full pathname of the original, high-resolution image, or any other identifying string that uniquely identifies the original image (Adobe OPI). -CFARepeatPatternDim, 33421, 0x828d, Image, Exif.Image.CFARepeatPatternDim, Short, Contains two values representing the minimum rows and columns to define the repeating patterns of the color filter array -CFAPattern, 33422, 0x828e, Image, Exif.Image.CFAPattern, Byte, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods -BatteryLevel, 33423, 0x828f, Image, Exif.Image.BatteryLevel, Rational, Contains a value of the battery level as a fraction or string -Copyright, 33432, 0x8298, Image, Exif.Image.Copyright, Ascii, Copyright information. In this standard the tag is used to indicate both the photographer and editor copyrights. It is the copyright notice of the person or organization claiming rights to the image. The Interoperability copyright statement including date and rights should be written in this field; e.g., "Copyright, John Smith, 19xx. All rights reserved.". In this standard the field records both the photographer and editor copyrights, with each recorded in a separate part of the statement. When there is a clear distinction between the photographer and editor copyrights, these are to be written in the order of photographer followed by editor copyright, separated by NULL (in this case since the statement also ends with a NULL, there are two NULL codes). When only the photographer copyright is given, it is terminated by one NULL code . When only the editor copyright is given, the photographer copyright part consists of one space followed by a terminating NULL code, then the editor copyright is given. When the field is left blank, it is treated as unknown. -ExposureTime, 33434, 0x829a, Image, Exif.Image.ExposureTime, Rational, Exposure time, given in seconds. -FNumber, 33437, 0x829d, Image, Exif.Image.FNumber, Rational, The F number. -IPTCNAA, 33723, 0x83bb, Image, Exif.Image.IPTCNAA, Long, Contains an IPTC/NAA record -ImageResources, 34377, 0x8649, Image, Exif.Image.ImageResources, Byte, Contains information embedded by the Adobe Photoshop application -ExifTag, 34665, 0x8769, Image, Exif.Image.ExifTag, Long, A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure as that of the IFD specified in TIFF. ordinarily, however, it does not contain image data as in the case of TIFF. -InterColorProfile, 34675, 0x8773, Image, Exif.Image.InterColorProfile, Undefined, Contains an InterColor Consortium (ICC) format color space characterization/profile -ExposureProgram, 34850, 0x8822, Image, Exif.Image.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Image, Exif.Image.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. -GPSTag, 34853, 0x8825, Image, Exif.Image.GPSTag, Long, A pointer to the GPS Info IFD. The Interoperability structure of the GPS Info IFD, like that of Exif IFD, has no image data. -ISOSpeedRatings, 34855, 0x8827, Image, Exif.Image.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Image, Exif.Image.OECF, Undefined, Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524. -Interlace, 34857, 0x8829, Image, Exif.Image.Interlace, Short, Indicates the field number of multifield images. -TimeZoneOffset, 34858, 0x882a, Image, Exif.Image.TimeZoneOffset, SShort, This optional tag encodes the time zone of the camera clock (relativeto Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the picture was taken. It may also contain the time zone offsetof the clock used to create the DateTime tag-value when the image wasmodified. -SelfTimerMode, 34859, 0x882b, Image, Exif.Image.SelfTimerMode, Short, Number of seconds image capture was delayed from button press. -DateTimeOriginal, 36867, 0x9003, Image, Exif.Image.DateTimeOriginal, Ascii, The date and time when the original image data was generated. -CompressedBitsPerPixel, 37122, 0x9102, Image, Exif.Image.CompressedBitsPerPixel, Rational, Specific to compressed data; states the compressed bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Image, Exif.Image.ShutterSpeedValue, SRational, Shutter speed. -ApertureValue, 37378, 0x9202, Image, Exif.Image.ApertureValue, Rational, The lens aperture. -BrightnessValue, 37379, 0x9203, Image, Exif.Image.BrightnessValue, SRational, The value of brightness. -ExposureBiasValue, 37380, 0x9204, Image, Exif.Image.ExposureBiasValue, SRational, The exposure bias. -MaxApertureValue, 37381, 0x9205, Image, Exif.Image.MaxApertureValue, Rational, The smallest F number of the lens. -SubjectDistance, 37382, 0x9206, Image, Exif.Image.SubjectDistance, SRational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Image, Exif.Image.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Image, Exif.Image.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Image, Exif.Image.Flash, Short, Indicates the status of flash when the image was shot. -FocalLength, 37386, 0x920a, Image, Exif.Image.FocalLength, Rational, The actual focal length of the lens, in mm. -FlashEnergy, 37387, 0x920b, Image, Exif.Image.FlashEnergy, Rational, Amount of flash energy (BCPS). -SpatialFrequencyResponse, 37388, 0x920c, Image, Exif.Image.SpatialFrequencyResponse, Undefined, SFR of the camera. -Noise, 37389, 0x920d, Image, Exif.Image.Noise, Undefined, Noise measurement values. -FocalPlaneXResolution, 37390, 0x920e, Image, Exif.Image.FocalPlaneXResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth direction for main image. -FocalPlaneYResolution, 37391, 0x920f, Image, Exif.Image.FocalPlaneYResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength direction for main image. -FocalPlaneResolutionUnit, 37392, 0x9210, Image, Exif.Image.FocalPlaneResolutionUnit, Short, Unit of measurement for FocalPlaneXResolution(37390) and FocalPlaneYResolution(37391). -ImageNumber, 37393, 0x9211, Image, Exif.Image.ImageNumber, Long, Number assigned to an image, e.g., in a chained image burst. -SecurityClassification, 37394, 0x9212, Image, Exif.Image.SecurityClassification, Ascii, Security classification assigned to the image. -ImageHistory, 37395, 0x9213, Image, Exif.Image.ImageHistory, Ascii, Record of what has been done to the image. -SubjectLocation, 37396, 0x9214, Image, Exif.Image.SubjectLocation, Short, Indicates the location and area of the main subject in the overall scene. -ExposureIndex, 37397, 0x9215, Image, Exif.Image.ExposureIndex, Rational, Encodes the camera exposure index setting when image was captured. -TIFFEPStandardID, 37398, 0x9216, Image, Exif.Image.TIFFEPStandardID, Byte, Contains four ASCII characters representing the TIFF/EP standard version of a TIFF/EP file, eg '1', '0', '0', '0' -SensingMethod, 37399, 0x9217, Image, Exif.Image.SensingMethod, Short, Type of image sensor. -XPTitle, 40091, 0x9c9b, Image, Exif.Image.XPTitle, Byte, Title tag used by Windows, encoded in UCS2 -XPComment, 40092, 0x9c9c, Image, Exif.Image.XPComment, Byte, Comment tag used by Windows, encoded in UCS2 -XPAuthor, 40093, 0x9c9d, Image, Exif.Image.XPAuthor, Byte, Author tag used by Windows, encoded in UCS2 -XPKeywords, 40094, 0x9c9e, Image, Exif.Image.XPKeywords, Byte, Keywords tag used by Windows, encoded in UCS2 -XPSubject, 40095, 0x9c9f, Image, Exif.Image.XPSubject, Byte, Subject tag used by Windows, encoded in UCS2 -PrintImageMatching, 50341, 0xc4a5, Image, Exif.Image.PrintImageMatching, Undefined, Print Image Matching, description needed. -DNGVersion, 50706, 0xc612, Image, Exif.Image.DNGVersion, Byte, This tag encodes the DNG four-tier version number. For files compliant with version 1.1.0.0 of the DNG specification, this tag should contain the bytes: 1, 1, 0, 0. -DNGBackwardVersion, 50707, 0xc613, Image, Exif.Image.DNGBackwardVersion, Byte, This tag specifies the oldest version of the Digital Negative specification for which a file is compatible. Readers shouldnot attempt to read a file if this tag specifies a version number that is higher than the version number of the specification the reader was based on. In addition to checking the version tags, readers should, for all tags, check the types, counts, and values, to verify it is able to correctly read the file. -UniqueCameraModel, 50708, 0xc614, Image, Exif.Image.UniqueCameraModel, Ascii, Defines a unique, non-localized name for the camera model that created the image in the raw file. This name should include the manufacturer's name to avoid conflicts, and should not be localized, even if the camera name itself is localized for different markets (see LocalizedCameraModel). This string may be used by reader software to index into per-model preferences and replacement profiles. -LocalizedCameraModel, 50709, 0xc615, Image, Exif.Image.LocalizedCameraModel, Byte, Similar to the UniqueCameraModel field, except the name can be localized for different markets to match the localization of the camera name. -CFAPlaneColor, 50710, 0xc616, Image, Exif.Image.CFAPlaneColor, Byte, Provides a mapping between the values in the CFAPattern tag and the plane numbers in LinearRaw space. This is a required tag for non-RGB CFA images. -CFALayout, 50711, 0xc617, Image, Exif.Image.CFALayout, Short, Describes the spatial layout of the CFA. -LinearizationTable, 50712, 0xc618, Image, Exif.Image.LinearizationTable, Short, Describes a lookup table that maps stored values into linear values. This tag is typically used to increase compression ratios by storing the raw data in a non-linear, more visually uniform space with fewer total encoding levels. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelRepeatDim, 50713, 0xc619, Image, Exif.Image.BlackLevelRepeatDim, Short, Specifies repeat pattern size for the BlackLevel tag. -BlackLevel, 50714, 0xc61a, Image, Exif.Image.BlackLevel, Rational, Specifies the zero light (a.k.a. thermal black or black current) encoding level, as a repeating pattern. The origin of this pattern is the top-left corner of the ActiveArea rectangle. The values are stored in row-column-sample scan order. -BlackLevelDeltaH, 50715, 0xc61b, Image, Exif.Image.BlackLevelDeltaH, SRational, If the zero light encoding level is a function of the image column, BlackLevelDeltaH specifies the difference between the zero light encoding level for each column and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelDeltaV, 50716, 0xc61c, Image, Exif.Image.BlackLevelDeltaV, SRational, If the zero light encoding level is a function of the image row, this tag specifies the difference between the zero light encoding level for each row and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -WhiteLevel, 50717, 0xc61d, Image, Exif.Image.WhiteLevel, Short, This tag specifies the fully saturated encoding level for the raw sample values. Saturation is caused either by the sensor itself becoming highly non-linear in response, or by the camera's analog to digital converter clipping. -DefaultScale, 50718, 0xc61e, Image, Exif.Image.DefaultScale, Rational, DefaultScale is required for cameras with non-square pixels. It specifies the default scale factors for each direction to convert the image to square pixels. Typically these factors are selected to approximately preserve total pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such as the Fujifilm SuperCCD, these two values should usually differ by a factor of 2.0. -DefaultCropOrigin, 50719, 0xc61f, Image, Exif.Image.DefaultCropOrigin, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropOrigin specifies the origin of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied), relative to the top-left corner of the ActiveArea rectangle. -DefaultCropSize, 50720, 0xc620, Image, Exif.Image.DefaultCropSize, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropSize specifies the size of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied). -ColorMatrix1, 50721, 0xc621, Image, Exif.Image.ColorMatrix1, SRational, ColorMatrix1 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the first calibration illuminant. The matrix values are stored in row scan order. The ColorMatrix1 tag is required for all non-monochrome DNG files. -ColorMatrix2, 50722, 0xc622, Image, Exif.Image.ColorMatrix2, SRational, ColorMatrix2 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the second calibration illuminant. The matrix values are stored in row scan order. -CameraCalibration1, 50723, 0xc623, Image, Exif.Image.CameraCalibration1, SRational, CameraClalibration1 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the first calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix1 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -CameraCalibration2, 50724, 0xc624, Image, Exif.Image.CameraCalibration2, SRational, CameraCalibration2 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the second calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix2 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -ReductionMatrix1, 50725, 0xc625, Image, Exif.Image.ReductionMatrix1, SRational, ReductionMatrix1 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the first calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -ReductionMatrix2, 50726, 0xc626, Image, Exif.Image.ReductionMatrix2, SRational, ReductionMatrix2 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the second calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -AnalogBalance, 50727, 0xc627, Image, Exif.Image.AnalogBalance, Rational, Normally the stored raw values are not white balanced, since any digital white balancing will reduce the dynamic range of the final image if the user decides to later adjust the white balance; however, if camera hardware is capable of white balancing the color channels before the signal is digitized, it can improve the dynamic range of the final image. AnalogBalance defines the gain, either analog (recommended) or digital (not recommended) that has been applied the stored raw values. -AsShotNeutral, 50728, 0xc628, Image, Exif.Image.AsShotNeutral, Short, Specifies the selected white balance at time of capture, encoded as the coordinates of a perfectly neutral color in linear reference space values. The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag. -AsShotWhiteXY, 50729, 0xc629, Image, Exif.Image.AsShotWhiteXY, Rational, Specifies the selected white balance at time of capture, encoded as x-y chromaticity coordinates. The inclusion of this tag precludes the inclusion of the AsShotNeutral tag. -BaselineExposure, 50730, 0xc62a, Image, Exif.Image.BaselineExposure, SRational, Camera models vary in the trade-off they make between highlight headroom and shadow noise. Some leave a significant amount of highlight headroom during a normal exposure. This allows significant negative exposure compensation to be applied during raw conversion, but also means normal exposures will contain more shadow noise. Other models leave less headroom during normal exposures. This allows for less negative exposure compensation, but results in lower shadow noise for normal exposures. Because of these differences, a raw converter needs to vary the zero point of its exposure compensation control from model to model. BaselineExposure specifies by how much (in EV units) to move the zero point. Positive values result in brighter default results, while negative values result in darker default results. -BaselineNoise, 50731, 0xc62b, Image, Exif.Image.BaselineNoise, Rational, Specifies the relative noise level of the camera model at a baseline ISO value of 100, compared to a reference camera model. Since noise levels tend to vary approximately with the square root of the ISO value, a raw converter can use this value, combined with the current ISO, to estimate the relative noise level of the current image. -BaselineSharpness, 50732, 0xc62c, Image, Exif.Image.BaselineSharpness, Rational, Specifies the relative amount of sharpening required for this camera model, compared to a reference camera model. Camera models vary in the strengths of their anti-aliasing filters. Cameras with weak or no filters require less sharpening than cameras with strong anti-aliasing filters. -BayerGreenSplit, 50733, 0xc62d, Image, Exif.Image.BayerGreenSplit, Long, Only applies to CFA images using a Bayer pattern filter array. This tag specifies, in arbitrary units, how closely the values of the green pixels in the blue/green rows track the values of the green pixels in the red/green rows. A value of zero means the two kinds of green pixels track closely, while a non-zero value means they sometimes diverge. The useful range for this tag is from 0 (no divergence) to about 5000 (quite large divergence). -LinearResponseLimit, 50734, 0xc62e, Image, Exif.Image.LinearResponseLimit, Rational, Some sensors have an unpredictable non-linearity in their response as they near the upper limit of their encoding range. This non-linearity results in color shifts in the highlight areas of the resulting image unless the raw converter compensates for this effect. LinearResponseLimit specifies the fraction of the encoding range above which the response may become significantly non-linear. -CameraSerialNumber, 50735, 0xc62f, Image, Exif.Image.CameraSerialNumber, Ascii, CameraSerialNumber contains the serial number of the camera or camera body that captured the image. -LensInfo, 50736, 0xc630, Image, Exif.Image.LensInfo, Rational, Contains information about the lens that captured the image. If the minimum f-stops are unknown, they should be encoded as 0/0. -ChromaBlurRadius, 50737, 0xc631, Image, Exif.Image.ChromaBlurRadius, Rational, ChromaBlurRadius provides a hint to the DNG reader about how much chroma blur should be applied to the image. If this tag is omitted, the reader will use its default amount of chroma blurring. Normally this tag is only included for non-CFA images, since the amount of chroma blur required for mosaic images is highly dependent on the de-mosaic algorithm, in which case the DNG reader's default value is likely optimized for its particular de-mosaic algorithm. -AntiAliasStrength, 50738, 0xc632, Image, Exif.Image.AntiAliasStrength, Rational, Provides a hint to the DNG reader about how strong the camera's anti-alias filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is prone to aliasing artifacts with some subjects), while a value of 1.0 means a strong anti-alias filter (i.e., the camera almost never has aliasing artifacts). -ShadowScale, 50739, 0xc633, Image, Exif.Image.ShadowScale, SRational, This tag is used by Adobe Camera Raw to control the sensitivity of its 'Shadows' slider. -DNGPrivateData, 50740, 0xc634, Image, Exif.Image.DNGPrivateData, Byte, Provides a way for camera manufacturers to store private data in the DNG file for use by their own raw converters, and to have that data preserved by programs that edit DNG files. -MakerNoteSafety, 50741, 0xc635, Image, Exif.Image.MakerNoteSafety, Short, MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is safe to preserve along with the rest of the EXIF data. File browsers and other image management software processing an image with a preserved MakerNote should be aware that any thumbnail image embedded in the MakerNote may be stale, and may not reflect the current state of the full size image. -CalibrationIlluminant1, 50778, 0xc65a, Image, Exif.Image.CalibrationIlluminant1, Short, The illuminant used for the first set of color calibration tags (ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for this tag are the same as the legal values for the LightSource EXIF tag. -CalibrationIlluminant2, 50779, 0xc65b, Image, Exif.Image.CalibrationIlluminant2, Short, The illuminant used for an optional second set of color calibration tags (ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for this tag are the same as the legal values for the CalibrationIlluminant1 tag; however, if both are included, neither is allowed to have a value of 0 (unknown). -BestQualityScale, 50780, 0xc65c, Image, Exif.Image.BestQualityScale, Rational, For some cameras, the best possible image quality is not achieved by preserving the total pixel count during conversion. For example, Fujifilm SuperCCD images have maximum detail when their total pixel count is doubled. This tag specifies the amount by which the values of the DefaultScale tag need to be multiplied to achieve the best quality image size. -RawDataUniqueID, 50781, 0xc65d, Image, Exif.Image.RawDataUniqueID, Byte, This tag contains a 16-byte unique identifier for the raw image data in the DNG file. DNG readers can use this tag to recognize a particular raw image, even if the file's name or the metadata contained in the file has been changed. If a DNG writer creates such an identifier, it should do so using an algorithm that will ensure that it is very unlikely two different images will end up having the same identifier. -OriginalRawFileName, 50827, 0xc68b, Image, Exif.Image.OriginalRawFileName, Byte, If the DNG file was converted from a non-DNG raw file, then this tag contains the file name of that original raw file. -OriginalRawFileData, 50828, 0xc68c, Image, Exif.Image.OriginalRawFileData, Undefined, If the DNG file was converted from a non-DNG raw file, then this tag contains the compressed contents of that original raw file. The contents of this tag always use the big-endian byte order. The tag contains a sequence of data blocks. Future versions of the DNG specification may define additional data blocks, so DNG readers should ignore extra bytes when parsing this tag. DNG readers should also detect the case where data blocks are missing from the end of the sequence, and should assume a default value for all the missing blocks. There are no padding or alignment bytes between data blocks. -ActiveArea, 50829, 0xc68d, Image, Exif.Image.ActiveArea, Short, This rectangle defines the active (non-masked) pixels of the sensor. The order of the rectangle coordinates is: top, left, bottom, right. -MaskedAreas, 50830, 0xc68e, Image, Exif.Image.MaskedAreas, Short, This tag contains a list of non-overlapping rectangle coordinates of fully masked pixels, which can be optionally used by DNG readers to measure the black encoding level. The order of each rectangle's coordinates is: top, left, bottom, right. If the raw image data has already had its black encoding level subtracted, then this tag should not be used, since the masked pixels are no longer useful. -AsShotICCProfile, 50831, 0xc68f, Image, Exif.Image.AsShotICCProfile, Undefined, This tag contains an ICC profile that, in conjunction with the AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to specify a default color rendering from camera color space coordinates (linear reference values) into the ICC profile connection space. The ICC profile connection space is an output referred colorimetric space, whereas the other color calibration tags in DNG specify a conversion into a scene referred colorimetric space. This means that the rendering in this profile should include any desired tone and gamut mapping needed to convert between scene referred values and output referred values. -AsShotPreProfileMatrix, 50832, 0xc690, Image, Exif.Image.AsShotPreProfileMatrix, SRational, This tag is used in conjunction with the AsShotICCProfile tag. It specifies a matrix that should be applied to the camera color space coordinates before processing the values through the ICC profile specified in the AsShotICCProfile tag. The matrix is stored in the row scan order. If ColorPlanes is greater than three, then this matrix can (but is not required to) reduce the dimensionality of the color data down to three components, in which case the AsShotICCProfile should have three rather than ColorPlanes input components. -CurrentICCProfile, 50833, 0xc691, Image, Exif.Image.CurrentICCProfile, Undefined, This tag is used in conjunction with the CurrentPreProfileMatrix tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -CurrentPreProfileMatrix, 50834, 0xc692, Image, Exif.Image.CurrentPreProfileMatrix, SRational, This tag is used in conjunction with the CurrentICCProfile tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -ExposureTime, 33434, 0x829a, Photo, Exif.Photo.ExposureTime, Rational, Exposure time, given in seconds (sec). -FNumber, 33437, 0x829d, Photo, Exif.Photo.FNumber, Rational, The F number. -ExposureProgram, 34850, 0x8822, Photo, Exif.Photo.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Photo, Exif.Photo.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. The tag value is an ASCII string compatible with the standard developed by the ASTM Technical Committee. -ISOSpeedRatings, 34855, 0x8827, Photo, Exif.Photo.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Photo, Exif.Photo.OECF, Undefined, Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO 14524. is the relationship between the camera optical input and the image values. -ExifVersion, 36864, 0x9000, Photo, Exif.Photo.ExifVersion, Undefined, The version of this standard supported. Nonexistence of this field is taken to mean nonconformance to the standard. -DateTimeOriginal, 36867, 0x9003, Photo, Exif.Photo.DateTimeOriginal, Ascii, The date and time when the original image data was generated. For a digital still camera the date and time the picture was taken are recorded. -DateTimeDigitized, 36868, 0x9004, Photo, Exif.Photo.DateTimeDigitized, Ascii, The date and time when the image was stored as digital data. -ComponentsConfiguration, 37121, 0x9101, Photo, Exif.Photo.ComponentsConfiguration, Undefined, Information specific to compressed data. The channels of each component are arranged in order from the 1st component to the 4th. For uncompressed data the data arrangement is given in the tag. However, since can only express the order of Y, Cb and Cr, this tag is provided for cases when compressed data uses components other than Y, Cb, and Cr and to enable support of other sequences. -CompressedBitsPerPixel, 37122, 0x9102, Photo, Exif.Photo.CompressedBitsPerPixel, Rational, Information specific to compressed data. The compression mode used for a compressed image is indicated in unit bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Photo, Exif.Photo.ShutterSpeedValue, SRational, Shutter speed. The unit is the APEX (Additive System of Photographic Exposure) setting. -ApertureValue, 37378, 0x9202, Photo, Exif.Photo.ApertureValue, Rational, The lens aperture. The unit is the APEX value. -BrightnessValue, 37379, 0x9203, Photo, Exif.Photo.BrightnessValue, SRational, The value of brightness. The unit is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -ExposureBiasValue, 37380, 0x9204, Photo, Exif.Photo.ExposureBiasValue, SRational, The exposure bias. The units is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -MaxApertureValue, 37381, 0x9205, Photo, Exif.Photo.MaxApertureValue, Rational, The smallest F number of the lens. The unit is the APEX value. Ordinarily it is given in the range of 00.00 to 99.99, but it is not limited to this range. -SubjectDistance, 37382, 0x9206, Photo, Exif.Photo.SubjectDistance, Rational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Photo, Exif.Photo.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Photo, Exif.Photo.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Photo, Exif.Photo.Flash, Short, This tag is recorded when an image is taken using a strobe light (flash). -FocalLength, 37386, 0x920a, Photo, Exif.Photo.FocalLength, Rational, The actual focal length of the lens, in mm. Conversion is not made to the focal length of a 35 mm film camera. -SubjectArea, 37396, 0x9214, Photo, Exif.Photo.SubjectArea, Short, This tag indicates the location and area of the main subject in the overall scene. -MakerNote, 37500, 0x927c, Photo, Exif.Photo.MakerNote, Undefined, A tag for manufacturers of Exif writers to record any desired information. The contents are up to the manufacturer. -UserComment, 37510, 0x9286, Photo, Exif.Photo.UserComment, Comment, A tag for Exif users to write keywords or comments on the image besides those in , and without the character code limitations of the tag. -SubSecTime, 37520, 0x9290, Photo, Exif.Photo.SubSecTime, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeOriginal, 37521, 0x9291, Photo, Exif.Photo.SubSecTimeOriginal, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeDigitized, 37522, 0x9292, Photo, Exif.Photo.SubSecTimeDigitized, Ascii, A tag used to record fractions of seconds for the tag. -FlashpixVersion, 40960, 0xa000, Photo, Exif.Photo.FlashpixVersion, Undefined, The FlashPix format version supported by a FPXR file. -ColorSpace, 40961, 0xa001, Photo, Exif.Photo.ColorSpace, Short, The color space information tag is always recorded as the color space specifier. Normally sRGB is used to define the color space based on the PC monitor conditions and environment. If a color space other than sRGB is used, Uncalibrated is set. Image data recorded as Uncalibrated can be treated as sRGB when it is converted to FlashPix. -PixelXDimension, 40962, 0xa002, Photo, Exif.Photo.PixelXDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid width of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. -PixelYDimension, 40963, 0xa003, Photo, Exif.Photo.PixelYDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid height of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. Since data padding is unnecessary in the vertical direction, the number of lines recorded in this valid image height tag will in fact be the same as that recorded in the SOF. -RelatedSoundFile, 40964, 0xa004, Photo, Exif.Photo.RelatedSoundFile, Ascii, This tag is used to record the name of an audio file related to the image data. The only relational information recorded here is the Exif audio file name and extension (an ASCII string consisting of 8 characters + '.' + 3 characters). The path is not recorded. -InteroperabilityTag, 40965, 0xa005, Photo, Exif.Photo.InteroperabilityTag, Long, Interoperability IFD is composed of tags which stores the information to ensure the Interoperability and pointed by the following tag located in Exif IFD. The Interoperability structure of Interoperability IFD is the same as TIFF defined IFD structure but does not contain the image data characteristically compared with normal TIFF IFD. -FlashEnergy, 41483, 0xa20b, Photo, Exif.Photo.FlashEnergy, Rational, Indicates the strobe energy at the time the image is captured, as measured in Beam Candle Power Seconds (BCPS). -SpatialFrequencyResponse, 41484, 0xa20c, Photo, Exif.Photo.SpatialFrequencyResponse, Undefined, This tag records the camera or input device spatial frequency table and SFR values in the direction of image width, image height, and diagonal direction, as specified in ISO 12233. -FocalPlaneXResolution, 41486, 0xa20e, Photo, Exif.Photo.FocalPlaneXResolution, Rational, Indicates the number of pixels in the image width (X) direction per on the camera focal plane. -FocalPlaneYResolution, 41487, 0xa20f, Photo, Exif.Photo.FocalPlaneYResolution, Rational, Indicates the number of pixels in the image height (V) direction per on the camera focal plane. -FocalPlaneResolutionUnit, 41488, 0xa210, Photo, Exif.Photo.FocalPlaneResolutionUnit, Short, Indicates the unit for measuring and . This value is the same as the . -SubjectLocation, 41492, 0xa214, Photo, Exif.Photo.SubjectLocation, Short, Indicates the location of the main subject in the scene. The value of this tag represents the pixel at the center of the main subject relative to the left edge, prior to rotation processing as per the tag. The first value indicates the X column number and second indicates the Y row number. -ExposureIndex, 41493, 0xa215, Photo, Exif.Photo.ExposureIndex, Rational, Indicates the exposure index selected on the camera or input device at the time the image is captured. -SensingMethod, 41495, 0xa217, Photo, Exif.Photo.SensingMethod, Short, Indicates the image sensor type on the camera or input device. -FileSource, 41728, 0xa300, Photo, Exif.Photo.FileSource, Undefined, Indicates the image source. If a DSC recorded the image, this tag value of this tag always be set to 3, indicating that the image was recorded on a DSC. -SceneType, 41729, 0xa301, Photo, Exif.Photo.SceneType, Undefined, Indicates the type of scene. If a DSC recorded the image, this tag value must always be set to 1, indicating that the image was directly photographed. -CFAPattern, 41730, 0xa302, Photo, Exif.Photo.CFAPattern, Undefined, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods. -CustomRendered, 41985, 0xa401, Photo, Exif.Photo.CustomRendered, Short, This tag indicates the use of special processing on image data, such as rendering geared to output. When special processing is performed, the reader is expected to disable or minimize any further processing. -ExposureMode, 41986, 0xa402, Photo, Exif.Photo.ExposureMode, Short, This tag indicates the exposure mode set when the image was shot. In auto-bracketing mode, the camera shoots a series of frames of the same scene at different exposure settings. -WhiteBalance, 41987, 0xa403, Photo, Exif.Photo.WhiteBalance, Short, This tag indicates the white balance mode set when the image was shot. -DigitalZoomRatio, 41988, 0xa404, Photo, Exif.Photo.DigitalZoomRatio, Rational, This tag indicates the digital zoom ratio when the image was shot. If the numerator of the recorded value is 0, this indicates that digital zoom was not used. -FocalLengthIn35mmFilm, 41989, 0xa405, Photo, Exif.Photo.FocalLengthIn35mmFilm, Short, This tag indicates the equivalent focal length assuming a 35mm film camera, in mm. A value of 0 means the focal length is unknown. Note that this tag differs from the tag. -SceneCaptureType, 41990, 0xa406, Photo, Exif.Photo.SceneCaptureType, Short, This tag indicates the type of scene that was shot. It can also be used to record the mode in which the image was shot. Note that this differs from the tag. -GainControl, 41991, 0xa407, Photo, Exif.Photo.GainControl, Short, This tag indicates the degree of overall image gain adjustment. -Contrast, 41992, 0xa408, Photo, Exif.Photo.Contrast, Short, This tag indicates the direction of contrast processing applied by the camera when the image was shot. -Saturation, 41993, 0xa409, Photo, Exif.Photo.Saturation, Short, This tag indicates the direction of saturation processing applied by the camera when the image was shot. -Sharpness, 41994, 0xa40a, Photo, Exif.Photo.Sharpness, Short, This tag indicates the direction of sharpness processing applied by the camera when the image was shot. -DeviceSettingDescription, 41995, 0xa40b, Photo, Exif.Photo.DeviceSettingDescription, Undefined, This tag indicates information on the picture-taking conditions of a particular camera model. The tag is used only to indicate the picture-taking conditions in the reader. -SubjectDistanceRange, 41996, 0xa40c, Photo, Exif.Photo.SubjectDistanceRange, Short, This tag indicates the distance to the subject. -ImageUniqueID, 42016, 0xa420, Photo, Exif.Photo.ImageUniqueID, Ascii, This tag indicates an identifier assigned uniquely to each image. It is recorded as an ASCII string equivalent to hexadecimal notation and 128-bit fixed length. -InteroperabilityIndex, 1, 0x0001, Iop, Exif.Iop.InteroperabilityIndex, Ascii, Indicates the identification of the Interoperability rule. Use "R98" for stating ExifR98 Rules. Four bytes used including the termination code (NULL). see the separate volume of Recommended Exif Interoperability Rules (ExifR98) for other tags used for ExifR98. -InteroperabilityVersion, 2, 0x0002, Iop, Exif.Iop.InteroperabilityVersion, Undefined, Interoperability version -RelatedImageFileFormat, 4096, 0x1000, Iop, Exif.Iop.RelatedImageFileFormat, Ascii, File format of image file -RelatedImageWidth, 4097, 0x1001, Iop, Exif.Iop.RelatedImageWidth, Long, Image width -RelatedImageLength, 4098, 0x1002, Iop, Exif.Iop.RelatedImageLength, Long, Image height -GPSVersionID, 0, 0x0000, GPSInfo, Exif.GPSInfo.GPSVersionID, Byte, Indicates the version of . The version is given as 2.0.0.0. This tag is mandatory when tag is present. (Note: The tag is given in bytes, unlike the tag. When the version is 2.0.0.0, the tag value is 02000000.H). -GPSLatitudeRef, 1, 0x0001, GPSInfo, Exif.GPSInfo.GPSLatitudeRef, Ascii, Indicates whether the latitude is north or south latitude. The ASCII value 'N' indicates north latitude, and 'S' is south latitude. -GPSLatitude, 2, 0x0002, GPSInfo, Exif.GPSInfo.GPSLatitude, Rational, Indicates the latitude. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is dd/1,mmmm/100,0/1. -GPSLongitudeRef, 3, 0x0003, GPSInfo, Exif.GPSInfo.GPSLongitudeRef, Ascii, Indicates whether the longitude is east or west longitude. ASCII 'E' indicates east longitude, and 'W' is west longitude. -GPSLongitude, 4, 0x0004, GPSInfo, Exif.GPSInfo.GPSLongitude, Rational, Indicates the longitude. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is ddd/1,mmmm/100,0/1. -GPSAltitudeRef, 5, 0x0005, GPSInfo, Exif.GPSInfo.GPSAltitudeRef, Byte, Indicates the altitude used as the reference altitude. If the reference is sea level and the altitude is above sea level, 0 is given. If the altitude is below sea level, a value of 1 is given and the altitude is indicated as an absolute value in the GSPAltitude tag. The reference unit is meters. Note that this tag is BYTE type, unlike other reference tags. -GPSAltitude, 6, 0x0006, GPSInfo, Exif.GPSInfo.GPSAltitude, Rational, Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is expressed as one RATIONAL value. The reference unit is meters. -GPSTimeStamp, 7, 0x0007, GPSInfo, Exif.GPSInfo.GPSTimeStamp, Rational, Indicates the time as UTC (Coordinated Universal Time). is expressed as three RATIONAL values giving the hour, minute, and second (atomic clock). -GPSSatellites, 8, 0x0008, GPSInfo, Exif.GPSInfo.GPSSatellites, Ascii, Indicates the GPS satellites used for measurements. This tag can be used to describe the number of satellites, their ID number, angle of elevation, azimuth, SNR and other information in ASCII notation. The format is not specified. If the GPS receiver is incapable of taking measurements, value of the tag is set to NULL. -GPSStatus, 9, 0x0009, GPSInfo, Exif.GPSInfo.GPSStatus, Ascii, Indicates the status of the GPS receiver when the image is recorded. "A" means measurement is in progress, and "V" means the measurement is Interoperability. -GPSMeasureMode, 10, 0x000a, GPSInfo, Exif.GPSInfo.GPSMeasureMode, Ascii, Indicates the GPS measurement mode. "2" means two-dimensional measurement and "3" means three-dimensional measurement is in progress. -GPSDOP, 11, 0x000b, GPSInfo, Exif.GPSInfo.GPSDOP, Rational, Indicates the GPS DOP (data degree of precision). An HDOP value is written during two-dimensional measurement, and PDOP during three-dimensional measurement. -GPSSpeedRef, 12, 0x000c, GPSInfo, Exif.GPSInfo.GPSSpeedRef, Ascii, Indicates the unit used to express the GPS receiver speed of movement. "K" "M" and "N" represents kilometers per hour, miles per hour, and knots. -GPSSpeed, 13, 0x000d, GPSInfo, Exif.GPSInfo.GPSSpeed, Rational, Indicates the speed of GPS receiver movement. -GPSTrackRef, 14, 0x000e, GPSInfo, Exif.GPSInfo.GPSTrackRef, Ascii, Indicates the reference for giving the direction of GPS receiver movement. "T" denotes true direction and "M" is magnetic direction. -GPSTrack, 15, 0x000f, GPSInfo, Exif.GPSInfo.GPSTrack, Rational, Indicates the direction of GPS receiver movement. The range of values is from 0.00 to 359.99. -GPSImgDirectionRef, 16, 0x0010, GPSInfo, Exif.GPSInfo.GPSImgDirectionRef, Ascii, Indicates the reference for giving the direction of the image when it is captured. "T" denotes true direction and "M" is magnetic direction. -GPSImgDirection, 17, 0x0011, GPSInfo, Exif.GPSInfo.GPSImgDirection, Rational, Indicates the direction of the image when it was captured. The range of values is from 0.00 to 359.99. -GPSMapDatum, 18, 0x0012, GPSInfo, Exif.GPSInfo.GPSMapDatum, Ascii, Indicates the geodetic survey data used by the GPS receiver. If the survey data is restricted to Japan, the value of this tag is "TOKYO" or "WGS-84". -GPSDestLatitudeRef, 19, 0x0013, GPSInfo, Exif.GPSInfo.GPSDestLatitudeRef, Ascii, Indicates whether the latitude of the destination point is north or south latitude. The ASCII value "N" indicates north latitude, and "S" is south latitude. -GPSDestLatitude, 20, 0x0014, GPSInfo, Exif.GPSInfo.GPSDestLatitude, Rational, Indicates the latitude of the destination point. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If latitude is expressed as degrees, minutes and seconds, a typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be dd/1,mmmm/100,0/1. -GPSDestLongitudeRef, 21, 0x0015, GPSInfo, Exif.GPSInfo.GPSDestLongitudeRef, Ascii, Indicates whether the longitude of the destination point is east or west longitude. ASCII "E" indicates east longitude, and "W" is west longitude. -GPSDestLongitude, 22, 0x0016, GPSInfo, Exif.GPSInfo.GPSDestLongitude, Rational, Indicates the longitude of the destination point. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If longitude is expressed as degrees, minutes and seconds, a typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be ddd/1,mmmm/100,0/1. -GPSDestBearingRef, 23, 0x0017, GPSInfo, Exif.GPSInfo.GPSDestBearingRef, Ascii, Indicates the reference used for giving the bearing to the destination point. "T" denotes true direction and "M" is magnetic direction. -GPSDestBearing, 24, 0x0018, GPSInfo, Exif.GPSInfo.GPSDestBearing, Rational, Indicates the bearing to the destination point. The range of values is from 0.00 to 359.99. -GPSDestDistanceRef, 25, 0x0019, GPSInfo, Exif.GPSInfo.GPSDestDistanceRef, Ascii, Indicates the unit used to express the distance to the destination point. "K", "M" and "N" represent kilometers, miles and knots. -GPSDestDistance, 26, 0x001a, GPSInfo, Exif.GPSInfo.GPSDestDistance, Rational, Indicates the distance to the destination point. -GPSProcessingMethod, 27, 0x001b, GPSInfo, Exif.GPSInfo.GPSProcessingMethod, Undefined, A character string recording the name of the method used for location finding. The first byte indicates the character code used, and this is followed by the name of the method. -GPSAreaInformation, 28, 0x001c, GPSInfo, Exif.GPSInfo.GPSAreaInformation, Undefined, A character string recording the name of the GPS area. The first byte indicates the character code used, and this is followed by the name of the GPS area. -GPSDateStamp, 29, 0x001d, GPSInfo, Exif.GPSInfo.GPSDateStamp, Ascii, A character string recording date and time information relative to UTC (Coordinated Universal Time). The format is "YYYY:MM:DD.". -GPSDifferential, 30, 0x001e, GPSInfo, Exif.GPSInfo.GPSDifferential, Short, Indicates whether differential correction is applied to the GPS receiver. -ProcessingSoftware, 11, 0x000b, Image, Exif.Image.ProcessingSoftware, Ascii, The name and version of the software used to post-process the picture. -NewSubfileType, 254, 0x00fe, Image, Exif.Image.NewSubfileType, Long, A general indication of the kind of data contained in this subfile. -SubfileType, 255, 0x00ff, Image, Exif.Image.SubfileType, Short, A general indication of the kind of data contained in this subfile. This field is deprecated. The NewSubfileType field should be used instead. -ImageWidth, 256, 0x0100, Image, Exif.Image.ImageWidth, Long, The number of columns of image data, equal to the number of pixels per row. In JPEG compressed data a JPEG marker is used instead of this tag. -ImageLength, 257, 0x0101, Image, Exif.Image.ImageLength, Long, The number of rows of image data. In JPEG compressed data a JPEG marker is used instead of this tag. -BitsPerSample, 258, 0x0102, Image, Exif.Image.BitsPerSample, Short, The number of bits per image component. In this standard each component of the image is 8 bits, so the value for this tag is 8. See also . In JPEG compressed data a JPEG marker is used instead of this tag. -Compression, 259, 0x0103, Image, Exif.Image.Compression, Short, The compression scheme used for the image data. When a primary image is JPEG compressed, this designation is not necessary and is omitted. When thumbnails use JPEG compression, this tag value is set to 6. -PhotometricInterpretation, 262, 0x0106, Image, Exif.Image.PhotometricInterpretation, Short, The pixel composition. In JPEG compressed data a JPEG marker is used instead of this tag. -Threshholding, 263, 0x0107, Image, Exif.Image.Threshholding, Short, For black and white TIFF files that represent shades of gray, the technique used to convert from gray to black and white pixels. -CellWidth, 264, 0x0108, Image, Exif.Image.CellWidth, Short, The width of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -CellLength, 265, 0x0109, Image, Exif.Image.CellLength, Short, The length of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -FillOrder, 266, 0x010a, Image, Exif.Image.FillOrder, Short, The logical order of bits within a byte -DocumentName, 269, 0x010d, Image, Exif.Image.DocumentName, Ascii, The name of the document from which this image was scanned -ImageDescription, 270, 0x010e, Image, Exif.Image.ImageDescription, Ascii, A character string giving the title of the image. It may be a comment such as "1988 company picnic" or the like. Two-bytes character codes cannot be used. When a 2-bytes code is necessary, the Exif Private tag is to be used. -Make, 271, 0x010f, Image, Exif.Image.Make, Ascii, The manufacturer of the recording equipment. This is the manufacturer of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -Model, 272, 0x0110, Image, Exif.Image.Model, Ascii, The model name or model number of the equipment. This is the model name or number of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -StripOffsets, 273, 0x0111, Image, Exif.Image.StripOffsets, Long, For each strip, the byte offset of that strip. It is recommended that this be selected so the number of strip bytes does not exceed 64 Kbytes. With JPEG compressed data this designation is not needed and is omitted. See also and . -Orientation, 274, 0x0112, Image, Exif.Image.Orientation, Short, The image orientation viewed in terms of rows and columns. -SamplesPerPixel, 277, 0x0115, Image, Exif.Image.SamplesPerPixel, Short, The number of components per pixel. Since this standard applies to RGB and YCbCr images, the value set for this tag is 3. In JPEG compressed data a JPEG marker is used instead of this tag. -RowsPerStrip, 278, 0x0116, Image, Exif.Image.RowsPerStrip, Long, The number of rows per strip. This is the number of rows in the image of one strip when an image is divided into strips. With JPEG compressed data this designation is not needed and is omitted. See also and . -StripByteCounts, 279, 0x0117, Image, Exif.Image.StripByteCounts, Long, The total number of bytes in each strip. With JPEG compressed data this designation is not needed and is omitted. -XResolution, 282, 0x011a, Image, Exif.Image.XResolution, Rational, The number of pixels per in the direction. When the image resolution is unknown, 72 [dpi] is designated. -YResolution, 283, 0x011b, Image, Exif.Image.YResolution, Rational, The number of pixels per in the direction. The same value as is designated. -PlanarConfiguration, 284, 0x011c, Image, Exif.Image.PlanarConfiguration, Short, Indicates whether pixel components are recorded in a chunky or planar format. In JPEG compressed files a JPEG marker is used instead of this tag. If this field does not exist, the TIFF default of 1 (chunky) is assumed. -GrayResponseUnit, 290, 0x0122, Image, Exif.Image.GrayResponseUnit, Short, The precision of the information contained in the GrayResponseCurve. -GrayResponseCurve, 291, 0x0123, Image, Exif.Image.GrayResponseCurve, Short, For grayscale data, the optical density of each possible pixel value. -T4Options, 292, 0x0124, Image, Exif.Image.T4Options, Long, T.4-encoding options. -T6Options, 293, 0x0125, Image, Exif.Image.T6Options, Long, T.6-encoding options. -ResolutionUnit, 296, 0x0128, Image, Exif.Image.ResolutionUnit, Short, The unit for measuring and . The same unit is used for both and . If the image resolution is unknown, 2 (inches) is designated. -TransferFunction, 301, 0x012d, Image, Exif.Image.TransferFunction, Short, A transfer function for the image, described in tabular style. Normally this tag is not necessary, since color space is specified in the color space information tag (). -Software, 305, 0x0131, Image, Exif.Image.Software, Ascii, This tag records the name and version of the software or firmware of the camera or image input device used to generate the image. The detailed format is not specified, but it is recommended that the example shown below be followed. When the field is left blank, it is treated as unknown. -DateTime, 306, 0x0132, Image, Exif.Image.DateTime, Ascii, The date and time of image creation. In Exif standard, it is the date and time the file was changed. -Artist, 315, 0x013b, Image, Exif.Image.Artist, Ascii, This tag records the name of the camera owner, photographer or image creator. The detailed format is not specified, but it is recommended that the information be written as in the example below for ease of Interoperability. When the field is left blank, it is treated as unknown. Ex.) "Camera owner, John Smith; Photographer, Michael Brown; Image creator, Ken James" -HostComputer, 316, 0x013c, Image, Exif.Image.HostComputer, Ascii, This tag records information about the host computer used to generate the image. -Predictor, 317, 0x013d, Image, Exif.Image.Predictor, Short, A predictor is a mathematical operator that is applied to the image data before an encoding scheme is applied. -WhitePoint, 318, 0x013e, Image, Exif.Image.WhitePoint, Rational, The chromaticity of the white point of the image. Normally this tag is not necessary, since color space is specified in the colorspace information tag (). -PrimaryChromaticities, 319, 0x013f, Image, Exif.Image.PrimaryChromaticities, Rational, The chromaticity of the three primary colors of the image. Normally this tag is not necessary, since colorspace is specified in the colorspace information tag (). -ColorMap, 320, 0x0140, Image, Exif.Image.ColorMap, Short, A color map for palette color images. This field defines a Red-Green-Blue color map (often called a lookup table) for palette-color images. In a palette-color image, a pixel value is used to index into an RGB lookup table. -HalftoneHints, 321, 0x0141, Image, Exif.Image.HalftoneHints, Short, The purpose of the HalftoneHints field is to convey to the halftone function the range of gray levels within a colorimetrically-specified image that should retain tonal detail. -TileWidth, 322, 0x0142, Image, Exif.Image.TileWidth, Short, The tile width in pixels. This is the number of columns in each tile. -TileLength, 323, 0x0143, Image, Exif.Image.TileLength, Short, The tile length (height) in pixels. This is the number of rows in each tile. -TileOffsets, 324, 0x0144, Image, Exif.Image.TileOffsets, Short, For each tile, the byte offset of that tile, as compressed and stored on disk. The offset is specified with respect to the beginning of the TIFF file. Note that this implies that each tile has a location independent of the locations of other tiles. -TileByteCounts, 325, 0x0145, Image, Exif.Image.TileByteCounts, Short, For each tile, the number of (compressed) bytes in that tile. See TileOffsets for a description of how the byte counts are ordered. -SubIFDs, 330, 0x014a, Image, Exif.Image.SubIFDs, Long, Defined by Adobe Corporation to enable TIFF Trees within a TIFF file. -InkSet, 332, 0x014c, Image, Exif.Image.InkSet, Short, The set of inks used in a separated (PhotometricInterpretation=5) image. -InkNames, 333, 0x014d, Image, Exif.Image.InkNames, Ascii, The name of each ink used in a separated (PhotometricInterpretation=5) image. -NumberOfInks, 334, 0x014e, Image, Exif.Image.NumberOfInks, Short, The number of inks. Usually equal to SamplesPerPixel, unless there are extra samples. -DotRange, 336, 0x0150, Image, Exif.Image.DotRange, Byte, The component values that correspond to a 0% dot and 100% dot. -TargetPrinter, 337, 0x0151, Image, Exif.Image.TargetPrinter, Ascii, A description of the printing environment for which this separation is intended. -ExtraSamples, 338, 0x0152, Image, Exif.Image.ExtraSamples, Short, Specifies that each pixel has m extra components whose interpretation is defined by one of the values listed below. -SampleFormat, 339, 0x0153, Image, Exif.Image.SampleFormat, Short, This field specifies how to interpret each data sample in a pixel. -SMinSampleValue, 340, 0x0154, Image, Exif.Image.SMinSampleValue, Short, This field specifies the minimum sample value. -SMaxSampleValue, 341, 0x0155, Image, Exif.Image.SMaxSampleValue, Short, This field specifies the maximum sample value. -TransferRange, 342, 0x0156, Image, Exif.Image.TransferRange, Short, Expands the range of the TransferFunction -ClipPath, 343, 0x0157, Image, Exif.Image.ClipPath, Byte, A TIFF ClipPath is intended to mirror the essentials of PostScript's path creation functionality. -XClipPathUnits, 344, 0x0158, Image, Exif.Image.XClipPathUnits, SShort, The number of units that span the width of the image, in terms of integer ClipPath coordinates. -YClipPathUnits, 345, 0x0159, Image, Exif.Image.YClipPathUnits, SShort, The number of units that span the height of the image, in terms of integer ClipPath coordinates. -Indexed, 346, 0x015a, Image, Exif.Image.Indexed, Short, Indexed images are images where the 'pixels' do not represent color values, but rather an index (usually 8-bit) into a separate color table, the ColorMap. -JPEGTables, 347, 0x015b, Image, Exif.Image.JPEGTables, Undefined, This optional tag may be used to encode the JPEG quantization andHuffman tables for subsequent use by the JPEG decompression process. -OPIProxy, 351, 0x015f, Image, Exif.Image.OPIProxy, Short, OPIProxy gives information concerning whether this image is a low-resolution proxy of a high-resolution image (Adobe OPI). -JPEGProc, 512, 0x0200, Image, Exif.Image.JPEGProc, Long, This field indicates the process used to produce the compressed data -JPEGInterchangeFormat, 513, 0x0201, Image, Exif.Image.JPEGInterchangeFormat, Long, The offset to the start byte (SOI) of JPEG compressed thumbnail data. This is not used for primary image JPEG data. -JPEGInterchangeFormatLength, 514, 0x0202, Image, Exif.Image.JPEGInterchangeFormatLength, Long, The number of bytes of JPEG compressed thumbnail data. This is not used for primary image JPEG data. JPEG thumbnails are not divided but are recorded as a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not be recorded. Compressed thumbnails must be recorded in no more than 64 Kbytes, including all other data to be recorded in APP1. -JPEGRestartInterval, 515, 0x0203, Image, Exif.Image.JPEGRestartInterval, Short, This Field indicates the length of the restart interval used in the compressed image data. -JPEGLosslessPredictors, 517, 0x0205, Image, Exif.Image.JPEGLosslessPredictors, Short, This Field points to a list of lossless predictor-selection values, one per component. -JPEGPointTransforms, 518, 0x0206, Image, Exif.Image.JPEGPointTransforms, Short, This Field points to a list of point transform values, one per component. -JPEGQTables, 519, 0x0207, Image, Exif.Image.JPEGQTables, Long, This Field points to a list of offsets to the quantization tables, one per component. -JPEGDCTables, 520, 0x0208, Image, Exif.Image.JPEGDCTables, Long, This Field points to a list of offsets to the DC Huffman tables or the lossless Huffman tables, one per component. -JPEGACTables, 521, 0x0209, Image, Exif.Image.JPEGACTables, Long, This Field points to a list of offsets to the Huffman AC tables, one per component. -YCbCrCoefficients, 529, 0x0211, Image, Exif.Image.YCbCrCoefficients, Rational, The matrix coefficients for transformation from RGB to YCbCr image data. No default is given in TIFF; but here the value given in Appendix E, "Color Space Guidelines", is used as the default. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability this condition. -YCbCrSubSampling, 530, 0x0212, Image, Exif.Image.YCbCrSubSampling, Short, The sampling ratio of chrominance components in relation to the luminance component. In JPEG compressed data a JPEG marker is used instead of this tag. -YCbCrPositioning, 531, 0x0213, Image, Exif.Image.YCbCrPositioning, Short, The position of chrominance components in relation to the luminance component. This field is designated only for JPEG compressed data or uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr = 4:2:2 it is recommended in this standard that 2 (co-sited) be used to record data, in order to improve the image quality when viewed on TV systems. When this field does not exist, the reader shall assume the TIFF default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is recommended. If the reader does not have the capability of supporting both kinds of , it shall follow the TIFF default regardless of the value in this field. It is preferable that readers be able to support both centered and co-sited positioning. -ReferenceBlackWhite, 532, 0x0214, Image, Exif.Image.ReferenceBlackWhite, Rational, The reference black point value and reference white point value. No defaults are given in TIFF, but the values below are given as defaults here. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability these conditions. -XMLPacket, 700, 0x02bc, Image, Exif.Image.XMLPacket, Byte, XMP Metadata (Adobe technote 9-14-02) -Rating, 18246, 0x4746, Image, Exif.Image.Rating, Short, Rating tag used by Windows -RatingPercent, 18249, 0x4749, Image, Exif.Image.RatingPercent, Short, Rating tag used by Windows, value in percent -ImageID, 32781, 0x800d, Image, Exif.Image.ImageID, Ascii, ImageID is the full pathname of the original, high-resolution image, or any other identifying string that uniquely identifies the original image (Adobe OPI). -CFARepeatPatternDim, 33421, 0x828d, Image, Exif.Image.CFARepeatPatternDim, Short, Contains two values representing the minimum rows and columns to define the repeating patterns of the color filter array -CFAPattern, 33422, 0x828e, Image, Exif.Image.CFAPattern, Byte, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods -BatteryLevel, 33423, 0x828f, Image, Exif.Image.BatteryLevel, Rational, Contains a value of the battery level as a fraction or string -Copyright, 33432, 0x8298, Image, Exif.Image.Copyright, Ascii, Copyright information. In this standard the tag is used to indicate both the photographer and editor copyrights. It is the copyright notice of the person or organization claiming rights to the image. The Interoperability copyright statement including date and rights should be written in this field; e.g., "Copyright, John Smith, 19xx. All rights reserved.". In this standard the field records both the photographer and editor copyrights, with each recorded in a separate part of the statement. When there is a clear distinction between the photographer and editor copyrights, these are to be written in the order of photographer followed by editor copyright, separated by NULL (in this case since the statement also ends with a NULL, there are two NULL codes). When only the photographer copyright is given, it is terminated by one NULL code . When only the editor copyright is given, the photographer copyright part consists of one space followed by a terminating NULL code, then the editor copyright is given. When the field is left blank, it is treated as unknown. -ExposureTime, 33434, 0x829a, Image, Exif.Image.ExposureTime, Rational, Exposure time, given in seconds. -FNumber, 33437, 0x829d, Image, Exif.Image.FNumber, Rational, The F number. -IPTCNAA, 33723, 0x83bb, Image, Exif.Image.IPTCNAA, Long, Contains an IPTC/NAA record -ImageResources, 34377, 0x8649, Image, Exif.Image.ImageResources, Byte, Contains information embedded by the Adobe Photoshop application -ExifTag, 34665, 0x8769, Image, Exif.Image.ExifTag, Long, A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure as that of the IFD specified in TIFF. ordinarily, however, it does not contain image data as in the case of TIFF. -InterColorProfile, 34675, 0x8773, Image, Exif.Image.InterColorProfile, Undefined, Contains an InterColor Consortium (ICC) format color space characterization/profile -ExposureProgram, 34850, 0x8822, Image, Exif.Image.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Image, Exif.Image.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. -GPSTag, 34853, 0x8825, Image, Exif.Image.GPSTag, Long, A pointer to the GPS Info IFD. The Interoperability structure of the GPS Info IFD, like that of Exif IFD, has no image data. -ISOSpeedRatings, 34855, 0x8827, Image, Exif.Image.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Image, Exif.Image.OECF, Undefined, Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524. -Interlace, 34857, 0x8829, Image, Exif.Image.Interlace, Short, Indicates the field number of multifield images. -TimeZoneOffset, 34858, 0x882a, Image, Exif.Image.TimeZoneOffset, SShort, This optional tag encodes the time zone of the camera clock (relativeto Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the picture was taken. It may also contain the time zone offsetof the clock used to create the DateTime tag-value when the image wasmodified. -SelfTimerMode, 34859, 0x882b, Image, Exif.Image.SelfTimerMode, Short, Number of seconds image capture was delayed from button press. -DateTimeOriginal, 36867, 0x9003, Image, Exif.Image.DateTimeOriginal, Ascii, The date and time when the original image data was generated. -CompressedBitsPerPixel, 37122, 0x9102, Image, Exif.Image.CompressedBitsPerPixel, Rational, Specific to compressed data; states the compressed bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Image, Exif.Image.ShutterSpeedValue, SRational, Shutter speed. -ApertureValue, 37378, 0x9202, Image, Exif.Image.ApertureValue, Rational, The lens aperture. -BrightnessValue, 37379, 0x9203, Image, Exif.Image.BrightnessValue, SRational, The value of brightness. -ExposureBiasValue, 37380, 0x9204, Image, Exif.Image.ExposureBiasValue, SRational, The exposure bias. -MaxApertureValue, 37381, 0x9205, Image, Exif.Image.MaxApertureValue, Rational, The smallest F number of the lens. -SubjectDistance, 37382, 0x9206, Image, Exif.Image.SubjectDistance, SRational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Image, Exif.Image.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Image, Exif.Image.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Image, Exif.Image.Flash, Short, Indicates the status of flash when the image was shot. -FocalLength, 37386, 0x920a, Image, Exif.Image.FocalLength, Rational, The actual focal length of the lens, in mm. -FlashEnergy, 37387, 0x920b, Image, Exif.Image.FlashEnergy, Rational, Amount of flash energy (BCPS). -SpatialFrequencyResponse, 37388, 0x920c, Image, Exif.Image.SpatialFrequencyResponse, Undefined, SFR of the camera. -Noise, 37389, 0x920d, Image, Exif.Image.Noise, Undefined, Noise measurement values. -FocalPlaneXResolution, 37390, 0x920e, Image, Exif.Image.FocalPlaneXResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth direction for main image. -FocalPlaneYResolution, 37391, 0x920f, Image, Exif.Image.FocalPlaneYResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength direction for main image. -FocalPlaneResolutionUnit, 37392, 0x9210, Image, Exif.Image.FocalPlaneResolutionUnit, Short, Unit of measurement for FocalPlaneXResolution(37390) and FocalPlaneYResolution(37391). -ImageNumber, 37393, 0x9211, Image, Exif.Image.ImageNumber, Long, Number assigned to an image, e.g., in a chained image burst. -SecurityClassification, 37394, 0x9212, Image, Exif.Image.SecurityClassification, Ascii, Security classification assigned to the image. -ImageHistory, 37395, 0x9213, Image, Exif.Image.ImageHistory, Ascii, Record of what has been done to the image. -SubjectLocation, 37396, 0x9214, Image, Exif.Image.SubjectLocation, Short, Indicates the location and area of the main subject in the overall scene. -ExposureIndex, 37397, 0x9215, Image, Exif.Image.ExposureIndex, Rational, Encodes the camera exposure index setting when image was captured. -TIFFEPStandardID, 37398, 0x9216, Image, Exif.Image.TIFFEPStandardID, Byte, Contains four ASCII characters representing the TIFF/EP standard version of a TIFF/EP file, eg '1', '0', '0', '0' -SensingMethod, 37399, 0x9217, Image, Exif.Image.SensingMethod, Short, Type of image sensor. -XPTitle, 40091, 0x9c9b, Image, Exif.Image.XPTitle, Byte, Title tag used by Windows, encoded in UCS2 -XPComment, 40092, 0x9c9c, Image, Exif.Image.XPComment, Byte, Comment tag used by Windows, encoded in UCS2 -XPAuthor, 40093, 0x9c9d, Image, Exif.Image.XPAuthor, Byte, Author tag used by Windows, encoded in UCS2 -XPKeywords, 40094, 0x9c9e, Image, Exif.Image.XPKeywords, Byte, Keywords tag used by Windows, encoded in UCS2 -XPSubject, 40095, 0x9c9f, Image, Exif.Image.XPSubject, Byte, Subject tag used by Windows, encoded in UCS2 -PrintImageMatching, 50341, 0xc4a5, Image, Exif.Image.PrintImageMatching, Undefined, Print Image Matching, description needed. -DNGVersion, 50706, 0xc612, Image, Exif.Image.DNGVersion, Byte, This tag encodes the DNG four-tier version number. For files compliant with version 1.1.0.0 of the DNG specification, this tag should contain the bytes: 1, 1, 0, 0. -DNGBackwardVersion, 50707, 0xc613, Image, Exif.Image.DNGBackwardVersion, Byte, This tag specifies the oldest version of the Digital Negative specification for which a file is compatible. Readers shouldnot attempt to read a file if this tag specifies a version number that is higher than the version number of the specification the reader was based on. In addition to checking the version tags, readers should, for all tags, check the types, counts, and values, to verify it is able to correctly read the file. -UniqueCameraModel, 50708, 0xc614, Image, Exif.Image.UniqueCameraModel, Ascii, Defines a unique, non-localized name for the camera model that created the image in the raw file. This name should include the manufacturer's name to avoid conflicts, and should not be localized, even if the camera name itself is localized for different markets (see LocalizedCameraModel). This string may be used by reader software to index into per-model preferences and replacement profiles. -LocalizedCameraModel, 50709, 0xc615, Image, Exif.Image.LocalizedCameraModel, Byte, Similar to the UniqueCameraModel field, except the name can be localized for different markets to match the localization of the camera name. -CFAPlaneColor, 50710, 0xc616, Image, Exif.Image.CFAPlaneColor, Byte, Provides a mapping between the values in the CFAPattern tag and the plane numbers in LinearRaw space. This is a required tag for non-RGB CFA images. -CFALayout, 50711, 0xc617, Image, Exif.Image.CFALayout, Short, Describes the spatial layout of the CFA. -LinearizationTable, 50712, 0xc618, Image, Exif.Image.LinearizationTable, Short, Describes a lookup table that maps stored values into linear values. This tag is typically used to increase compression ratios by storing the raw data in a non-linear, more visually uniform space with fewer total encoding levels. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelRepeatDim, 50713, 0xc619, Image, Exif.Image.BlackLevelRepeatDim, Short, Specifies repeat pattern size for the BlackLevel tag. -BlackLevel, 50714, 0xc61a, Image, Exif.Image.BlackLevel, Rational, Specifies the zero light (a.k.a. thermal black or black current) encoding level, as a repeating pattern. The origin of this pattern is the top-left corner of the ActiveArea rectangle. The values are stored in row-column-sample scan order. -BlackLevelDeltaH, 50715, 0xc61b, Image, Exif.Image.BlackLevelDeltaH, SRational, If the zero light encoding level is a function of the image column, BlackLevelDeltaH specifies the difference between the zero light encoding level for each column and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelDeltaV, 50716, 0xc61c, Image, Exif.Image.BlackLevelDeltaV, SRational, If the zero light encoding level is a function of the image row, this tag specifies the difference between the zero light encoding level for each row and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -WhiteLevel, 50717, 0xc61d, Image, Exif.Image.WhiteLevel, Short, This tag specifies the fully saturated encoding level for the raw sample values. Saturation is caused either by the sensor itself becoming highly non-linear in response, or by the camera's analog to digital converter clipping. -DefaultScale, 50718, 0xc61e, Image, Exif.Image.DefaultScale, Rational, DefaultScale is required for cameras with non-square pixels. It specifies the default scale factors for each direction to convert the image to square pixels. Typically these factors are selected to approximately preserve total pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such as the Fujifilm SuperCCD, these two values should usually differ by a factor of 2.0. -DefaultCropOrigin, 50719, 0xc61f, Image, Exif.Image.DefaultCropOrigin, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropOrigin specifies the origin of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied), relative to the top-left corner of the ActiveArea rectangle. -DefaultCropSize, 50720, 0xc620, Image, Exif.Image.DefaultCropSize, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropSize specifies the size of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied). -ColorMatrix1, 50721, 0xc621, Image, Exif.Image.ColorMatrix1, SRational, ColorMatrix1 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the first calibration illuminant. The matrix values are stored in row scan order. The ColorMatrix1 tag is required for all non-monochrome DNG files. -ColorMatrix2, 50722, 0xc622, Image, Exif.Image.ColorMatrix2, SRational, ColorMatrix2 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the second calibration illuminant. The matrix values are stored in row scan order. -CameraCalibration1, 50723, 0xc623, Image, Exif.Image.CameraCalibration1, SRational, CameraClalibration1 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the first calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix1 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -CameraCalibration2, 50724, 0xc624, Image, Exif.Image.CameraCalibration2, SRational, CameraCalibration2 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the second calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix2 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -ReductionMatrix1, 50725, 0xc625, Image, Exif.Image.ReductionMatrix1, SRational, ReductionMatrix1 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the first calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -ReductionMatrix2, 50726, 0xc626, Image, Exif.Image.ReductionMatrix2, SRational, ReductionMatrix2 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the second calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -AnalogBalance, 50727, 0xc627, Image, Exif.Image.AnalogBalance, Rational, Normally the stored raw values are not white balanced, since any digital white balancing will reduce the dynamic range of the final image if the user decides to later adjust the white balance; however, if camera hardware is capable of white balancing the color channels before the signal is digitized, it can improve the dynamic range of the final image. AnalogBalance defines the gain, either analog (recommended) or digital (not recommended) that has been applied the stored raw values. -AsShotNeutral, 50728, 0xc628, Image, Exif.Image.AsShotNeutral, Short, Specifies the selected white balance at time of capture, encoded as the coordinates of a perfectly neutral color in linear reference space values. The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag. -AsShotWhiteXY, 50729, 0xc629, Image, Exif.Image.AsShotWhiteXY, Rational, Specifies the selected white balance at time of capture, encoded as x-y chromaticity coordinates. The inclusion of this tag precludes the inclusion of the AsShotNeutral tag. -BaselineExposure, 50730, 0xc62a, Image, Exif.Image.BaselineExposure, SRational, Camera models vary in the trade-off they make between highlight headroom and shadow noise. Some leave a significant amount of highlight headroom during a normal exposure. This allows significant negative exposure compensation to be applied during raw conversion, but also means normal exposures will contain more shadow noise. Other models leave less headroom during normal exposures. This allows for less negative exposure compensation, but results in lower shadow noise for normal exposures. Because of these differences, a raw converter needs to vary the zero point of its exposure compensation control from model to model. BaselineExposure specifies by how much (in EV units) to move the zero point. Positive values result in brighter default results, while negative values result in darker default results. -BaselineNoise, 50731, 0xc62b, Image, Exif.Image.BaselineNoise, Rational, Specifies the relative noise level of the camera model at a baseline ISO value of 100, compared to a reference camera model. Since noise levels tend to vary approximately with the square root of the ISO value, a raw converter can use this value, combined with the current ISO, to estimate the relative noise level of the current image. -BaselineSharpness, 50732, 0xc62c, Image, Exif.Image.BaselineSharpness, Rational, Specifies the relative amount of sharpening required for this camera model, compared to a reference camera model. Camera models vary in the strengths of their anti-aliasing filters. Cameras with weak or no filters require less sharpening than cameras with strong anti-aliasing filters. -BayerGreenSplit, 50733, 0xc62d, Image, Exif.Image.BayerGreenSplit, Long, Only applies to CFA images using a Bayer pattern filter array. This tag specifies, in arbitrary units, how closely the values of the green pixels in the blue/green rows track the values of the green pixels in the red/green rows. A value of zero means the two kinds of green pixels track closely, while a non-zero value means they sometimes diverge. The useful range for this tag is from 0 (no divergence) to about 5000 (quite large divergence). -LinearResponseLimit, 50734, 0xc62e, Image, Exif.Image.LinearResponseLimit, Rational, Some sensors have an unpredictable non-linearity in their response as they near the upper limit of their encoding range. This non-linearity results in color shifts in the highlight areas of the resulting image unless the raw converter compensates for this effect. LinearResponseLimit specifies the fraction of the encoding range above which the response may become significantly non-linear. -CameraSerialNumber, 50735, 0xc62f, Image, Exif.Image.CameraSerialNumber, Ascii, CameraSerialNumber contains the serial number of the camera or camera body that captured the image. -LensInfo, 50736, 0xc630, Image, Exif.Image.LensInfo, Rational, Contains information about the lens that captured the image. If the minimum f-stops are unknown, they should be encoded as 0/0. -ChromaBlurRadius, 50737, 0xc631, Image, Exif.Image.ChromaBlurRadius, Rational, ChromaBlurRadius provides a hint to the DNG reader about how much chroma blur should be applied to the image. If this tag is omitted, the reader will use its default amount of chroma blurring. Normally this tag is only included for non-CFA images, since the amount of chroma blur required for mosaic images is highly dependent on the de-mosaic algorithm, in which case the DNG reader's default value is likely optimized for its particular de-mosaic algorithm. -AntiAliasStrength, 50738, 0xc632, Image, Exif.Image.AntiAliasStrength, Rational, Provides a hint to the DNG reader about how strong the camera's anti-alias filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is prone to aliasing artifacts with some subjects), while a value of 1.0 means a strong anti-alias filter (i.e., the camera almost never has aliasing artifacts). -ShadowScale, 50739, 0xc633, Image, Exif.Image.ShadowScale, SRational, This tag is used by Adobe Camera Raw to control the sensitivity of its 'Shadows' slider. -DNGPrivateData, 50740, 0xc634, Image, Exif.Image.DNGPrivateData, Byte, Provides a way for camera manufacturers to store private data in the DNG file for use by their own raw converters, and to have that data preserved by programs that edit DNG files. -MakerNoteSafety, 50741, 0xc635, Image, Exif.Image.MakerNoteSafety, Short, MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is safe to preserve along with the rest of the EXIF data. File browsers and other image management software processing an image with a preserved MakerNote should be aware that any thumbnail image embedded in the MakerNote may be stale, and may not reflect the current state of the full size image. -CalibrationIlluminant1, 50778, 0xc65a, Image, Exif.Image.CalibrationIlluminant1, Short, The illuminant used for the first set of color calibration tags (ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for this tag are the same as the legal values for the LightSource EXIF tag. -CalibrationIlluminant2, 50779, 0xc65b, Image, Exif.Image.CalibrationIlluminant2, Short, The illuminant used for an optional second set of color calibration tags (ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for this tag are the same as the legal values for the CalibrationIlluminant1 tag; however, if both are included, neither is allowed to have a value of 0 (unknown). -BestQualityScale, 50780, 0xc65c, Image, Exif.Image.BestQualityScale, Rational, For some cameras, the best possible image quality is not achieved by preserving the total pixel count during conversion. For example, Fujifilm SuperCCD images have maximum detail when their total pixel count is doubled. This tag specifies the amount by which the values of the DefaultScale tag need to be multiplied to achieve the best quality image size. -RawDataUniqueID, 50781, 0xc65d, Image, Exif.Image.RawDataUniqueID, Byte, This tag contains a 16-byte unique identifier for the raw image data in the DNG file. DNG readers can use this tag to recognize a particular raw image, even if the file's name or the metadata contained in the file has been changed. If a DNG writer creates such an identifier, it should do so using an algorithm that will ensure that it is very unlikely two different images will end up having the same identifier. -OriginalRawFileName, 50827, 0xc68b, Image, Exif.Image.OriginalRawFileName, Byte, If the DNG file was converted from a non-DNG raw file, then this tag contains the file name of that original raw file. -OriginalRawFileData, 50828, 0xc68c, Image, Exif.Image.OriginalRawFileData, Undefined, If the DNG file was converted from a non-DNG raw file, then this tag contains the compressed contents of that original raw file. The contents of this tag always use the big-endian byte order. The tag contains a sequence of data blocks. Future versions of the DNG specification may define additional data blocks, so DNG readers should ignore extra bytes when parsing this tag. DNG readers should also detect the case where data blocks are missing from the end of the sequence, and should assume a default value for all the missing blocks. There are no padding or alignment bytes between data blocks. -ActiveArea, 50829, 0xc68d, Image, Exif.Image.ActiveArea, Short, This rectangle defines the active (non-masked) pixels of the sensor. The order of the rectangle coordinates is: top, left, bottom, right. -MaskedAreas, 50830, 0xc68e, Image, Exif.Image.MaskedAreas, Short, This tag contains a list of non-overlapping rectangle coordinates of fully masked pixels, which can be optionally used by DNG readers to measure the black encoding level. The order of each rectangle's coordinates is: top, left, bottom, right. If the raw image data has already had its black encoding level subtracted, then this tag should not be used, since the masked pixels are no longer useful. -AsShotICCProfile, 50831, 0xc68f, Image, Exif.Image.AsShotICCProfile, Undefined, This tag contains an ICC profile that, in conjunction with the AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to specify a default color rendering from camera color space coordinates (linear reference values) into the ICC profile connection space. The ICC profile connection space is an output referred colorimetric space, whereas the other color calibration tags in DNG specify a conversion into a scene referred colorimetric space. This means that the rendering in this profile should include any desired tone and gamut mapping needed to convert between scene referred values and output referred values. -AsShotPreProfileMatrix, 50832, 0xc690, Image, Exif.Image.AsShotPreProfileMatrix, SRational, This tag is used in conjunction with the AsShotICCProfile tag. It specifies a matrix that should be applied to the camera color space coordinates before processing the values through the ICC profile specified in the AsShotICCProfile tag. The matrix is stored in the row scan order. If ColorPlanes is greater than three, then this matrix can (but is not required to) reduce the dimensionality of the color data down to three components, in which case the AsShotICCProfile should have three rather than ColorPlanes input components. -CurrentICCProfile, 50833, 0xc691, Image, Exif.Image.CurrentICCProfile, Undefined, This tag is used in conjunction with the CurrentPreProfileMatrix tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -CurrentPreProfileMatrix, 50834, 0xc692, Image, Exif.Image.CurrentPreProfileMatrix, SRational, This tag is used in conjunction with the CurrentICCProfile tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -ExposureTime, 33434, 0x829a, Photo, Exif.Photo.ExposureTime, Rational, Exposure time, given in seconds (sec). -FNumber, 33437, 0x829d, Photo, Exif.Photo.FNumber, Rational, The F number. -ExposureProgram, 34850, 0x8822, Photo, Exif.Photo.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Photo, Exif.Photo.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. The tag value is an ASCII string compatible with the standard developed by the ASTM Technical Committee. -ISOSpeedRatings, 34855, 0x8827, Photo, Exif.Photo.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Photo, Exif.Photo.OECF, Undefined, Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO 14524. is the relationship between the camera optical input and the image values. -ExifVersion, 36864, 0x9000, Photo, Exif.Photo.ExifVersion, Undefined, The version of this standard supported. Nonexistence of this field is taken to mean nonconformance to the standard. -DateTimeOriginal, 36867, 0x9003, Photo, Exif.Photo.DateTimeOriginal, Ascii, The date and time when the original image data was generated. For a digital still camera the date and time the picture was taken are recorded. -DateTimeDigitized, 36868, 0x9004, Photo, Exif.Photo.DateTimeDigitized, Ascii, The date and time when the image was stored as digital data. -ComponentsConfiguration, 37121, 0x9101, Photo, Exif.Photo.ComponentsConfiguration, Undefined, Information specific to compressed data. The channels of each component are arranged in order from the 1st component to the 4th. For uncompressed data the data arrangement is given in the tag. However, since can only express the order of Y, Cb and Cr, this tag is provided for cases when compressed data uses components other than Y, Cb, and Cr and to enable support of other sequences. -CompressedBitsPerPixel, 37122, 0x9102, Photo, Exif.Photo.CompressedBitsPerPixel, Rational, Information specific to compressed data. The compression mode used for a compressed image is indicated in unit bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Photo, Exif.Photo.ShutterSpeedValue, SRational, Shutter speed. The unit is the APEX (Additive System of Photographic Exposure) setting. -ApertureValue, 37378, 0x9202, Photo, Exif.Photo.ApertureValue, Rational, The lens aperture. The unit is the APEX value. -BrightnessValue, 37379, 0x9203, Photo, Exif.Photo.BrightnessValue, SRational, The value of brightness. The unit is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -ExposureBiasValue, 37380, 0x9204, Photo, Exif.Photo.ExposureBiasValue, SRational, The exposure bias. The units is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -MaxApertureValue, 37381, 0x9205, Photo, Exif.Photo.MaxApertureValue, Rational, The smallest F number of the lens. The unit is the APEX value. Ordinarily it is given in the range of 00.00 to 99.99, but it is not limited to this range. -SubjectDistance, 37382, 0x9206, Photo, Exif.Photo.SubjectDistance, Rational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Photo, Exif.Photo.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Photo, Exif.Photo.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Photo, Exif.Photo.Flash, Short, This tag is recorded when an image is taken using a strobe light (flash). -FocalLength, 37386, 0x920a, Photo, Exif.Photo.FocalLength, Rational, The actual focal length of the lens, in mm. Conversion is not made to the focal length of a 35 mm film camera. -SubjectArea, 37396, 0x9214, Photo, Exif.Photo.SubjectArea, Short, This tag indicates the location and area of the main subject in the overall scene. -MakerNote, 37500, 0x927c, Photo, Exif.Photo.MakerNote, Undefined, A tag for manufacturers of Exif writers to record any desired information. The contents are up to the manufacturer. -UserComment, 37510, 0x9286, Photo, Exif.Photo.UserComment, Comment, A tag for Exif users to write keywords or comments on the image besides those in , and without the character code limitations of the tag. -SubSecTime, 37520, 0x9290, Photo, Exif.Photo.SubSecTime, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeOriginal, 37521, 0x9291, Photo, Exif.Photo.SubSecTimeOriginal, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeDigitized, 37522, 0x9292, Photo, Exif.Photo.SubSecTimeDigitized, Ascii, A tag used to record fractions of seconds for the tag. -FlashpixVersion, 40960, 0xa000, Photo, Exif.Photo.FlashpixVersion, Undefined, The FlashPix format version supported by a FPXR file. -ColorSpace, 40961, 0xa001, Photo, Exif.Photo.ColorSpace, Short, The color space information tag is always recorded as the color space specifier. Normally sRGB is used to define the color space based on the PC monitor conditions and environment. If a color space other than sRGB is used, Uncalibrated is set. Image data recorded as Uncalibrated can be treated as sRGB when it is converted to FlashPix. -PixelXDimension, 40962, 0xa002, Photo, Exif.Photo.PixelXDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid width of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. -PixelYDimension, 40963, 0xa003, Photo, Exif.Photo.PixelYDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid height of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. Since data padding is unnecessary in the vertical direction, the number of lines recorded in this valid image height tag will in fact be the same as that recorded in the SOF. -RelatedSoundFile, 40964, 0xa004, Photo, Exif.Photo.RelatedSoundFile, Ascii, This tag is used to record the name of an audio file related to the image data. The only relational information recorded here is the Exif audio file name and extension (an ASCII string consisting of 8 characters + '.' + 3 characters). The path is not recorded. -InteroperabilityTag, 40965, 0xa005, Photo, Exif.Photo.InteroperabilityTag, Long, Interoperability IFD is composed of tags which stores the information to ensure the Interoperability and pointed by the following tag located in Exif IFD. The Interoperability structure of Interoperability IFD is the same as TIFF defined IFD structure but does not contain the image data characteristically compared with normal TIFF IFD. -FlashEnergy, 41483, 0xa20b, Photo, Exif.Photo.FlashEnergy, Rational, Indicates the strobe energy at the time the image is captured, as measured in Beam Candle Power Seconds (BCPS). -SpatialFrequencyResponse, 41484, 0xa20c, Photo, Exif.Photo.SpatialFrequencyResponse, Undefined, This tag records the camera or input device spatial frequency table and SFR values in the direction of image width, image height, and diagonal direction, as specified in ISO 12233. -FocalPlaneXResolution, 41486, 0xa20e, Photo, Exif.Photo.FocalPlaneXResolution, Rational, Indicates the number of pixels in the image width (X) direction per on the camera focal plane. -FocalPlaneYResolution, 41487, 0xa20f, Photo, Exif.Photo.FocalPlaneYResolution, Rational, Indicates the number of pixels in the image height (V) direction per on the camera focal plane. -FocalPlaneResolutionUnit, 41488, 0xa210, Photo, Exif.Photo.FocalPlaneResolutionUnit, Short, Indicates the unit for measuring and . This value is the same as the . -SubjectLocation, 41492, 0xa214, Photo, Exif.Photo.SubjectLocation, Short, Indicates the location of the main subject in the scene. The value of this tag represents the pixel at the center of the main subject relative to the left edge, prior to rotation processing as per the tag. The first value indicates the X column number and second indicates the Y row number. -ExposureIndex, 41493, 0xa215, Photo, Exif.Photo.ExposureIndex, Rational, Indicates the exposure index selected on the camera or input device at the time the image is captured. -SensingMethod, 41495, 0xa217, Photo, Exif.Photo.SensingMethod, Short, Indicates the image sensor type on the camera or input device. -FileSource, 41728, 0xa300, Photo, Exif.Photo.FileSource, Undefined, Indicates the image source. If a DSC recorded the image, this tag value of this tag always be set to 3, indicating that the image was recorded on a DSC. -SceneType, 41729, 0xa301, Photo, Exif.Photo.SceneType, Undefined, Indicates the type of scene. If a DSC recorded the image, this tag value must always be set to 1, indicating that the image was directly photographed. -CFAPattern, 41730, 0xa302, Photo, Exif.Photo.CFAPattern, Undefined, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods. -CustomRendered, 41985, 0xa401, Photo, Exif.Photo.CustomRendered, Short, This tag indicates the use of special processing on image data, such as rendering geared to output. When special processing is performed, the reader is expected to disable or minimize any further processing. -ExposureMode, 41986, 0xa402, Photo, Exif.Photo.ExposureMode, Short, This tag indicates the exposure mode set when the image was shot. In auto-bracketing mode, the camera shoots a series of frames of the same scene at different exposure settings. -WhiteBalance, 41987, 0xa403, Photo, Exif.Photo.WhiteBalance, Short, This tag indicates the white balance mode set when the image was shot. -DigitalZoomRatio, 41988, 0xa404, Photo, Exif.Photo.DigitalZoomRatio, Rational, This tag indicates the digital zoom ratio when the image was shot. If the numerator of the recorded value is 0, this indicates that digital zoom was not used. -FocalLengthIn35mmFilm, 41989, 0xa405, Photo, Exif.Photo.FocalLengthIn35mmFilm, Short, This tag indicates the equivalent focal length assuming a 35mm film camera, in mm. A value of 0 means the focal length is unknown. Note that this tag differs from the tag. -SceneCaptureType, 41990, 0xa406, Photo, Exif.Photo.SceneCaptureType, Short, This tag indicates the type of scene that was shot. It can also be used to record the mode in which the image was shot. Note that this differs from the tag. -GainControl, 41991, 0xa407, Photo, Exif.Photo.GainControl, Short, This tag indicates the degree of overall image gain adjustment. -Contrast, 41992, 0xa408, Photo, Exif.Photo.Contrast, Short, This tag indicates the direction of contrast processing applied by the camera when the image was shot. -Saturation, 41993, 0xa409, Photo, Exif.Photo.Saturation, Short, This tag indicates the direction of saturation processing applied by the camera when the image was shot. -Sharpness, 41994, 0xa40a, Photo, Exif.Photo.Sharpness, Short, This tag indicates the direction of sharpness processing applied by the camera when the image was shot. -DeviceSettingDescription, 41995, 0xa40b, Photo, Exif.Photo.DeviceSettingDescription, Undefined, This tag indicates information on the picture-taking conditions of a particular camera model. The tag is used only to indicate the picture-taking conditions in the reader. -SubjectDistanceRange, 41996, 0xa40c, Photo, Exif.Photo.SubjectDistanceRange, Short, This tag indicates the distance to the subject. -ImageUniqueID, 42016, 0xa420, Photo, Exif.Photo.ImageUniqueID, Ascii, This tag indicates an identifier assigned uniquely to each image. It is recorded as an ASCII string equivalent to hexadecimal notation and 128-bit fixed length. -InteroperabilityIndex, 1, 0x0001, Iop, Exif.Iop.InteroperabilityIndex, Ascii, Indicates the identification of the Interoperability rule. Use "R98" for stating ExifR98 Rules. Four bytes used including the termination code (NULL). see the separate volume of Recommended Exif Interoperability Rules (ExifR98) for other tags used for ExifR98. -InteroperabilityVersion, 2, 0x0002, Iop, Exif.Iop.InteroperabilityVersion, Undefined, Interoperability version -RelatedImageFileFormat, 4096, 0x1000, Iop, Exif.Iop.RelatedImageFileFormat, Ascii, File format of image file -RelatedImageWidth, 4097, 0x1001, Iop, Exif.Iop.RelatedImageWidth, Long, Image width -RelatedImageLength, 4098, 0x1002, Iop, Exif.Iop.RelatedImageLength, Long, Image height -GPSVersionID, 0, 0x0000, GPSInfo, Exif.GPSInfo.GPSVersionID, Byte, Indicates the version of . The version is given as 2.0.0.0. This tag is mandatory when tag is present. (Note: The tag is given in bytes, unlike the tag. When the version is 2.0.0.0, the tag value is 02000000.H). -GPSLatitudeRef, 1, 0x0001, GPSInfo, Exif.GPSInfo.GPSLatitudeRef, Ascii, Indicates whether the latitude is north or south latitude. The ASCII value 'N' indicates north latitude, and 'S' is south latitude. -GPSLatitude, 2, 0x0002, GPSInfo, Exif.GPSInfo.GPSLatitude, Rational, Indicates the latitude. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is dd/1,mmmm/100,0/1. -GPSLongitudeRef, 3, 0x0003, GPSInfo, Exif.GPSInfo.GPSLongitudeRef, Ascii, Indicates whether the longitude is east or west longitude. ASCII 'E' indicates east longitude, and 'W' is west longitude. -GPSLongitude, 4, 0x0004, GPSInfo, Exif.GPSInfo.GPSLongitude, Rational, Indicates the longitude. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is ddd/1,mmmm/100,0/1. -GPSAltitudeRef, 5, 0x0005, GPSInfo, Exif.GPSInfo.GPSAltitudeRef, Byte, Indicates the altitude used as the reference altitude. If the reference is sea level and the altitude is above sea level, 0 is given. If the altitude is below sea level, a value of 1 is given and the altitude is indicated as an absolute value in the GSPAltitude tag. The reference unit is meters. Note that this tag is BYTE type, unlike other reference tags. -GPSAltitude, 6, 0x0006, GPSInfo, Exif.GPSInfo.GPSAltitude, Rational, Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is expressed as one RATIONAL value. The reference unit is meters. -GPSTimeStamp, 7, 0x0007, GPSInfo, Exif.GPSInfo.GPSTimeStamp, Rational, Indicates the time as UTC (Coordinated Universal Time). is expressed as three RATIONAL values giving the hour, minute, and second (atomic clock). -GPSSatellites, 8, 0x0008, GPSInfo, Exif.GPSInfo.GPSSatellites, Ascii, Indicates the GPS satellites used for measurements. This tag can be used to describe the number of satellites, their ID number, angle of elevation, azimuth, SNR and other information in ASCII notation. The format is not specified. If the GPS receiver is incapable of taking measurements, value of the tag is set to NULL. -GPSStatus, 9, 0x0009, GPSInfo, Exif.GPSInfo.GPSStatus, Ascii, Indicates the status of the GPS receiver when the image is recorded. "A" means measurement is in progress, and "V" means the measurement is Interoperability. -GPSMeasureMode, 10, 0x000a, GPSInfo, Exif.GPSInfo.GPSMeasureMode, Ascii, Indicates the GPS measurement mode. "2" means two-dimensional measurement and "3" means three-dimensional measurement is in progress. -GPSDOP, 11, 0x000b, GPSInfo, Exif.GPSInfo.GPSDOP, Rational, Indicates the GPS DOP (data degree of precision). An HDOP value is written during two-dimensional measurement, and PDOP during three-dimensional measurement. -GPSSpeedRef, 12, 0x000c, GPSInfo, Exif.GPSInfo.GPSSpeedRef, Ascii, Indicates the unit used to express the GPS receiver speed of movement. "K" "M" and "N" represents kilometers per hour, miles per hour, and knots. -GPSSpeed, 13, 0x000d, GPSInfo, Exif.GPSInfo.GPSSpeed, Rational, Indicates the speed of GPS receiver movement. -GPSTrackRef, 14, 0x000e, GPSInfo, Exif.GPSInfo.GPSTrackRef, Ascii, Indicates the reference for giving the direction of GPS receiver movement. "T" denotes true direction and "M" is magnetic direction. -GPSTrack, 15, 0x000f, GPSInfo, Exif.GPSInfo.GPSTrack, Rational, Indicates the direction of GPS receiver movement. The range of values is from 0.00 to 359.99. -GPSImgDirectionRef, 16, 0x0010, GPSInfo, Exif.GPSInfo.GPSImgDirectionRef, Ascii, Indicates the reference for giving the direction of the image when it is captured. "T" denotes true direction and "M" is magnetic direction. -GPSImgDirection, 17, 0x0011, GPSInfo, Exif.GPSInfo.GPSImgDirection, Rational, Indicates the direction of the image when it was captured. The range of values is from 0.00 to 359.99. -GPSMapDatum, 18, 0x0012, GPSInfo, Exif.GPSInfo.GPSMapDatum, Ascii, Indicates the geodetic survey data used by the GPS receiver. If the survey data is restricted to Japan, the value of this tag is "TOKYO" or "WGS-84". -GPSDestLatitudeRef, 19, 0x0013, GPSInfo, Exif.GPSInfo.GPSDestLatitudeRef, Ascii, Indicates whether the latitude of the destination point is north or south latitude. The ASCII value "N" indicates north latitude, and "S" is south latitude. -GPSDestLatitude, 20, 0x0014, GPSInfo, Exif.GPSInfo.GPSDestLatitude, Rational, Indicates the latitude of the destination point. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If latitude is expressed as degrees, minutes and seconds, a typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be dd/1,mmmm/100,0/1. -GPSDestLongitudeRef, 21, 0x0015, GPSInfo, Exif.GPSInfo.GPSDestLongitudeRef, Ascii, Indicates whether the longitude of the destination point is east or west longitude. ASCII "E" indicates east longitude, and "W" is west longitude. -GPSDestLongitude, 22, 0x0016, GPSInfo, Exif.GPSInfo.GPSDestLongitude, Rational, Indicates the longitude of the destination point. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If longitude is expressed as degrees, minutes and seconds, a typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be ddd/1,mmmm/100,0/1. -GPSDestBearingRef, 23, 0x0017, GPSInfo, Exif.GPSInfo.GPSDestBearingRef, Ascii, Indicates the reference used for giving the bearing to the destination point. "T" denotes true direction and "M" is magnetic direction. -GPSDestBearing, 24, 0x0018, GPSInfo, Exif.GPSInfo.GPSDestBearing, Rational, Indicates the bearing to the destination point. The range of values is from 0.00 to 359.99. -GPSDestDistanceRef, 25, 0x0019, GPSInfo, Exif.GPSInfo.GPSDestDistanceRef, Ascii, Indicates the unit used to express the distance to the destination point. "K", "M" and "N" represent kilometers, miles and knots. -GPSDestDistance, 26, 0x001a, GPSInfo, Exif.GPSInfo.GPSDestDistance, Rational, Indicates the distance to the destination point. -GPSProcessingMethod, 27, 0x001b, GPSInfo, Exif.GPSInfo.GPSProcessingMethod, Undefined, A character string recording the name of the method used for location finding. The first byte indicates the character code used, and this is followed by the name of the method. -GPSAreaInformation, 28, 0x001c, GPSInfo, Exif.GPSInfo.GPSAreaInformation, Undefined, A character string recording the name of the GPS area. The first byte indicates the character code used, and this is followed by the name of the GPS area. -GPSDateStamp, 29, 0x001d, GPSInfo, Exif.GPSInfo.GPSDateStamp, Ascii, A character string recording date and time information relative to UTC (Coordinated Universal Time). The format is "YYYY:MM:DD.". -GPSDifferential, 30, 0x001e, GPSInfo, Exif.GPSInfo.GPSDifferential, Short, Indicates whether differential correction is applied to the GPS receiver. -ProcessingSoftware, 11, 0x000b, Image, Exif.Image.ProcessingSoftware, Ascii, The name and version of the software used to post-process the picture. -NewSubfileType, 254, 0x00fe, Image, Exif.Image.NewSubfileType, Long, A general indication of the kind of data contained in this subfile. -SubfileType, 255, 0x00ff, Image, Exif.Image.SubfileType, Short, A general indication of the kind of data contained in this subfile. This field is deprecated. The NewSubfileType field should be used instead. -ImageWidth, 256, 0x0100, Image, Exif.Image.ImageWidth, Long, The number of columns of image data, equal to the number of pixels per row. In JPEG compressed data a JPEG marker is used instead of this tag. -ImageLength, 257, 0x0101, Image, Exif.Image.ImageLength, Long, The number of rows of image data. In JPEG compressed data a JPEG marker is used instead of this tag. -BitsPerSample, 258, 0x0102, Image, Exif.Image.BitsPerSample, Short, The number of bits per image component. In this standard each component of the image is 8 bits, so the value for this tag is 8. See also . In JPEG compressed data a JPEG marker is used instead of this tag. -Compression, 259, 0x0103, Image, Exif.Image.Compression, Short, The compression scheme used for the image data. When a primary image is JPEG compressed, this designation is not necessary and is omitted. When thumbnails use JPEG compression, this tag value is set to 6. -PhotometricInterpretation, 262, 0x0106, Image, Exif.Image.PhotometricInterpretation, Short, The pixel composition. In JPEG compressed data a JPEG marker is used instead of this tag. -Threshholding, 263, 0x0107, Image, Exif.Image.Threshholding, Short, For black and white TIFF files that represent shades of gray, the technique used to convert from gray to black and white pixels. -CellWidth, 264, 0x0108, Image, Exif.Image.CellWidth, Short, The width of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -CellLength, 265, 0x0109, Image, Exif.Image.CellLength, Short, The length of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -FillOrder, 266, 0x010a, Image, Exif.Image.FillOrder, Short, The logical order of bits within a byte -DocumentName, 269, 0x010d, Image, Exif.Image.DocumentName, Ascii, The name of the document from which this image was scanned -ImageDescription, 270, 0x010e, Image, Exif.Image.ImageDescription, Ascii, A character string giving the title of the image. It may be a comment such as "1988 company picnic" or the like. Two-bytes character codes cannot be used. When a 2-bytes code is necessary, the Exif Private tag is to be used. -Make, 271, 0x010f, Image, Exif.Image.Make, Ascii, The manufacturer of the recording equipment. This is the manufacturer of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -Model, 272, 0x0110, Image, Exif.Image.Model, Ascii, The model name or model number of the equipment. This is the model name or number of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -StripOffsets, 273, 0x0111, Image, Exif.Image.StripOffsets, Long, For each strip, the byte offset of that strip. It is recommended that this be selected so the number of strip bytes does not exceed 64 Kbytes. With JPEG compressed data this designation is not needed and is omitted. See also and . -Orientation, 274, 0x0112, Image, Exif.Image.Orientation, Short, The image orientation viewed in terms of rows and columns. -SamplesPerPixel, 277, 0x0115, Image, Exif.Image.SamplesPerPixel, Short, The number of components per pixel. Since this standard applies to RGB and YCbCr images, the value set for this tag is 3. In JPEG compressed data a JPEG marker is used instead of this tag. -RowsPerStrip, 278, 0x0116, Image, Exif.Image.RowsPerStrip, Long, The number of rows per strip. This is the number of rows in the image of one strip when an image is divided into strips. With JPEG compressed data this designation is not needed and is omitted. See also and . -StripByteCounts, 279, 0x0117, Image, Exif.Image.StripByteCounts, Long, The total number of bytes in each strip. With JPEG compressed data this designation is not needed and is omitted. -XResolution, 282, 0x011a, Image, Exif.Image.XResolution, Rational, The number of pixels per in the direction. When the image resolution is unknown, 72 [dpi] is designated. -YResolution, 283, 0x011b, Image, Exif.Image.YResolution, Rational, The number of pixels per in the direction. The same value as is designated. -PlanarConfiguration, 284, 0x011c, Image, Exif.Image.PlanarConfiguration, Short, Indicates whether pixel components are recorded in a chunky or planar format. In JPEG compressed files a JPEG marker is used instead of this tag. If this field does not exist, the TIFF default of 1 (chunky) is assumed. -GrayResponseUnit, 290, 0x0122, Image, Exif.Image.GrayResponseUnit, Short, The precision of the information contained in the GrayResponseCurve. -GrayResponseCurve, 291, 0x0123, Image, Exif.Image.GrayResponseCurve, Short, For grayscale data, the optical density of each possible pixel value. -T4Options, 292, 0x0124, Image, Exif.Image.T4Options, Long, T.4-encoding options. -T6Options, 293, 0x0125, Image, Exif.Image.T6Options, Long, T.6-encoding options. -ResolutionUnit, 296, 0x0128, Image, Exif.Image.ResolutionUnit, Short, The unit for measuring and . The same unit is used for both and . If the image resolution is unknown, 2 (inches) is designated. -TransferFunction, 301, 0x012d, Image, Exif.Image.TransferFunction, Short, A transfer function for the image, described in tabular style. Normally this tag is not necessary, since color space is specified in the color space information tag (). -Software, 305, 0x0131, Image, Exif.Image.Software, Ascii, This tag records the name and version of the software or firmware of the camera or image input device used to generate the image. The detailed format is not specified, but it is recommended that the example shown below be followed. When the field is left blank, it is treated as unknown. -DateTime, 306, 0x0132, Image, Exif.Image.DateTime, Ascii, The date and time of image creation. In Exif standard, it is the date and time the file was changed. -Artist, 315, 0x013b, Image, Exif.Image.Artist, Ascii, This tag records the name of the camera owner, photographer or image creator. The detailed format is not specified, but it is recommended that the information be written as in the example below for ease of Interoperability. When the field is left blank, it is treated as unknown. Ex.) "Camera owner, John Smith; Photographer, Michael Brown; Image creator, Ken James" -HostComputer, 316, 0x013c, Image, Exif.Image.HostComputer, Ascii, This tag records information about the host computer used to generate the image. -Predictor, 317, 0x013d, Image, Exif.Image.Predictor, Short, A predictor is a mathematical operator that is applied to the image data before an encoding scheme is applied. -WhitePoint, 318, 0x013e, Image, Exif.Image.WhitePoint, Rational, The chromaticity of the white point of the image. Normally this tag is not necessary, since color space is specified in the colorspace information tag (). -PrimaryChromaticities, 319, 0x013f, Image, Exif.Image.PrimaryChromaticities, Rational, The chromaticity of the three primary colors of the image. Normally this tag is not necessary, since colorspace is specified in the colorspace information tag (). -ColorMap, 320, 0x0140, Image, Exif.Image.ColorMap, Short, A color map for palette color images. This field defines a Red-Green-Blue color map (often called a lookup table) for palette-color images. In a palette-color image, a pixel value is used to index into an RGB lookup table. -HalftoneHints, 321, 0x0141, Image, Exif.Image.HalftoneHints, Short, The purpose of the HalftoneHints field is to convey to the halftone function the range of gray levels within a colorimetrically-specified image that should retain tonal detail. -TileWidth, 322, 0x0142, Image, Exif.Image.TileWidth, Short, The tile width in pixels. This is the number of columns in each tile. -TileLength, 323, 0x0143, Image, Exif.Image.TileLength, Short, The tile length (height) in pixels. This is the number of rows in each tile. -TileOffsets, 324, 0x0144, Image, Exif.Image.TileOffsets, Short, For each tile, the byte offset of that tile, as compressed and stored on disk. The offset is specified with respect to the beginning of the TIFF file. Note that this implies that each tile has a location independent of the locations of other tiles. -TileByteCounts, 325, 0x0145, Image, Exif.Image.TileByteCounts, Short, For each tile, the number of (compressed) bytes in that tile. See TileOffsets for a description of how the byte counts are ordered. -SubIFDs, 330, 0x014a, Image, Exif.Image.SubIFDs, Long, Defined by Adobe Corporation to enable TIFF Trees within a TIFF file. -InkSet, 332, 0x014c, Image, Exif.Image.InkSet, Short, The set of inks used in a separated (PhotometricInterpretation=5) image. -InkNames, 333, 0x014d, Image, Exif.Image.InkNames, Ascii, The name of each ink used in a separated (PhotometricInterpretation=5) image. -NumberOfInks, 334, 0x014e, Image, Exif.Image.NumberOfInks, Short, The number of inks. Usually equal to SamplesPerPixel, unless there are extra samples. -DotRange, 336, 0x0150, Image, Exif.Image.DotRange, Byte, The component values that correspond to a 0% dot and 100% dot. -TargetPrinter, 337, 0x0151, Image, Exif.Image.TargetPrinter, Ascii, A description of the printing environment for which this separation is intended. -ExtraSamples, 338, 0x0152, Image, Exif.Image.ExtraSamples, Short, Specifies that each pixel has m extra components whose interpretation is defined by one of the values listed below. -SampleFormat, 339, 0x0153, Image, Exif.Image.SampleFormat, Short, This field specifies how to interpret each data sample in a pixel. -SMinSampleValue, 340, 0x0154, Image, Exif.Image.SMinSampleValue, Short, This field specifies the minimum sample value. -SMaxSampleValue, 341, 0x0155, Image, Exif.Image.SMaxSampleValue, Short, This field specifies the maximum sample value. -TransferRange, 342, 0x0156, Image, Exif.Image.TransferRange, Short, Expands the range of the TransferFunction -ClipPath, 343, 0x0157, Image, Exif.Image.ClipPath, Byte, A TIFF ClipPath is intended to mirror the essentials of PostScript's path creation functionality. -XClipPathUnits, 344, 0x0158, Image, Exif.Image.XClipPathUnits, SShort, The number of units that span the width of the image, in terms of integer ClipPath coordinates. -YClipPathUnits, 345, 0x0159, Image, Exif.Image.YClipPathUnits, SShort, The number of units that span the height of the image, in terms of integer ClipPath coordinates. -Indexed, 346, 0x015a, Image, Exif.Image.Indexed, Short, Indexed images are images where the 'pixels' do not represent color values, but rather an index (usually 8-bit) into a separate color table, the ColorMap. -JPEGTables, 347, 0x015b, Image, Exif.Image.JPEGTables, Undefined, This optional tag may be used to encode the JPEG quantization andHuffman tables for subsequent use by the JPEG decompression process. -OPIProxy, 351, 0x015f, Image, Exif.Image.OPIProxy, Short, OPIProxy gives information concerning whether this image is a low-resolution proxy of a high-resolution image (Adobe OPI). -JPEGProc, 512, 0x0200, Image, Exif.Image.JPEGProc, Long, This field indicates the process used to produce the compressed data -JPEGInterchangeFormat, 513, 0x0201, Image, Exif.Image.JPEGInterchangeFormat, Long, The offset to the start byte (SOI) of JPEG compressed thumbnail data. This is not used for primary image JPEG data. -JPEGInterchangeFormatLength, 514, 0x0202, Image, Exif.Image.JPEGInterchangeFormatLength, Long, The number of bytes of JPEG compressed thumbnail data. This is not used for primary image JPEG data. JPEG thumbnails are not divided but are recorded as a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not be recorded. Compressed thumbnails must be recorded in no more than 64 Kbytes, including all other data to be recorded in APP1. -JPEGRestartInterval, 515, 0x0203, Image, Exif.Image.JPEGRestartInterval, Short, This Field indicates the length of the restart interval used in the compressed image data. -JPEGLosslessPredictors, 517, 0x0205, Image, Exif.Image.JPEGLosslessPredictors, Short, This Field points to a list of lossless predictor-selection values, one per component. -JPEGPointTransforms, 518, 0x0206, Image, Exif.Image.JPEGPointTransforms, Short, This Field points to a list of point transform values, one per component. -JPEGQTables, 519, 0x0207, Image, Exif.Image.JPEGQTables, Long, This Field points to a list of offsets to the quantization tables, one per component. -JPEGDCTables, 520, 0x0208, Image, Exif.Image.JPEGDCTables, Long, This Field points to a list of offsets to the DC Huffman tables or the lossless Huffman tables, one per component. -JPEGACTables, 521, 0x0209, Image, Exif.Image.JPEGACTables, Long, This Field points to a list of offsets to the Huffman AC tables, one per component. -YCbCrCoefficients, 529, 0x0211, Image, Exif.Image.YCbCrCoefficients, Rational, The matrix coefficients for transformation from RGB to YCbCr image data. No default is given in TIFF; but here the value given in Appendix E, "Color Space Guidelines", is used as the default. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability this condition. -YCbCrSubSampling, 530, 0x0212, Image, Exif.Image.YCbCrSubSampling, Short, The sampling ratio of chrominance components in relation to the luminance component. In JPEG compressed data a JPEG marker is used instead of this tag. -YCbCrPositioning, 531, 0x0213, Image, Exif.Image.YCbCrPositioning, Short, The position of chrominance components in relation to the luminance component. This field is designated only for JPEG compressed data or uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr = 4:2:2 it is recommended in this standard that 2 (co-sited) be used to record data, in order to improve the image quality when viewed on TV systems. When this field does not exist, the reader shall assume the TIFF default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is recommended. If the reader does not have the capability of supporting both kinds of , it shall follow the TIFF default regardless of the value in this field. It is preferable that readers be able to support both centered and co-sited positioning. -ReferenceBlackWhite, 532, 0x0214, Image, Exif.Image.ReferenceBlackWhite, Rational, The reference black point value and reference white point value. No defaults are given in TIFF, but the values below are given as defaults here. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability these conditions. -XMLPacket, 700, 0x02bc, Image, Exif.Image.XMLPacket, Byte, XMP Metadata (Adobe technote 9-14-02) -Rating, 18246, 0x4746, Image, Exif.Image.Rating, Short, Rating tag used by Windows -RatingPercent, 18249, 0x4749, Image, Exif.Image.RatingPercent, Short, Rating tag used by Windows, value in percent -ImageID, 32781, 0x800d, Image, Exif.Image.ImageID, Ascii, ImageID is the full pathname of the original, high-resolution image, or any other identifying string that uniquely identifies the original image (Adobe OPI). -CFARepeatPatternDim, 33421, 0x828d, Image, Exif.Image.CFARepeatPatternDim, Short, Contains two values representing the minimum rows and columns to define the repeating patterns of the color filter array -CFAPattern, 33422, 0x828e, Image, Exif.Image.CFAPattern, Byte, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods -BatteryLevel, 33423, 0x828f, Image, Exif.Image.BatteryLevel, Rational, Contains a value of the battery level as a fraction or string -Copyright, 33432, 0x8298, Image, Exif.Image.Copyright, Ascii, Copyright information. In this standard the tag is used to indicate both the photographer and editor copyrights. It is the copyright notice of the person or organization claiming rights to the image. The Interoperability copyright statement including date and rights should be written in this field; e.g., "Copyright, John Smith, 19xx. All rights reserved.". In this standard the field records both the photographer and editor copyrights, with each recorded in a separate part of the statement. When there is a clear distinction between the photographer and editor copyrights, these are to be written in the order of photographer followed by editor copyright, separated by NULL (in this case since the statement also ends with a NULL, there are two NULL codes). When only the photographer copyright is given, it is terminated by one NULL code . When only the editor copyright is given, the photographer copyright part consists of one space followed by a terminating NULL code, then the editor copyright is given. When the field is left blank, it is treated as unknown. -ExposureTime, 33434, 0x829a, Image, Exif.Image.ExposureTime, Rational, Exposure time, given in seconds. -FNumber, 33437, 0x829d, Image, Exif.Image.FNumber, Rational, The F number. -IPTCNAA, 33723, 0x83bb, Image, Exif.Image.IPTCNAA, Long, Contains an IPTC/NAA record -ImageResources, 34377, 0x8649, Image, Exif.Image.ImageResources, Byte, Contains information embedded by the Adobe Photoshop application -ExifTag, 34665, 0x8769, Image, Exif.Image.ExifTag, Long, A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure as that of the IFD specified in TIFF. ordinarily, however, it does not contain image data as in the case of TIFF. -InterColorProfile, 34675, 0x8773, Image, Exif.Image.InterColorProfile, Undefined, Contains an InterColor Consortium (ICC) format color space characterization/profile -ExposureProgram, 34850, 0x8822, Image, Exif.Image.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Image, Exif.Image.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. -GPSTag, 34853, 0x8825, Image, Exif.Image.GPSTag, Long, A pointer to the GPS Info IFD. The Interoperability structure of the GPS Info IFD, like that of Exif IFD, has no image data. -ISOSpeedRatings, 34855, 0x8827, Image, Exif.Image.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Image, Exif.Image.OECF, Undefined, Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524. -Interlace, 34857, 0x8829, Image, Exif.Image.Interlace, Short, Indicates the field number of multifield images. -TimeZoneOffset, 34858, 0x882a, Image, Exif.Image.TimeZoneOffset, SShort, This optional tag encodes the time zone of the camera clock (relativeto Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the picture was taken. It may also contain the time zone offsetof the clock used to create the DateTime tag-value when the image wasmodified. -SelfTimerMode, 34859, 0x882b, Image, Exif.Image.SelfTimerMode, Short, Number of seconds image capture was delayed from button press. -DateTimeOriginal, 36867, 0x9003, Image, Exif.Image.DateTimeOriginal, Ascii, The date and time when the original image data was generated. -CompressedBitsPerPixel, 37122, 0x9102, Image, Exif.Image.CompressedBitsPerPixel, Rational, Specific to compressed data; states the compressed bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Image, Exif.Image.ShutterSpeedValue, SRational, Shutter speed. -ApertureValue, 37378, 0x9202, Image, Exif.Image.ApertureValue, Rational, The lens aperture. -BrightnessValue, 37379, 0x9203, Image, Exif.Image.BrightnessValue, SRational, The value of brightness. -ExposureBiasValue, 37380, 0x9204, Image, Exif.Image.ExposureBiasValue, SRational, The exposure bias. -MaxApertureValue, 37381, 0x9205, Image, Exif.Image.MaxApertureValue, Rational, The smallest F number of the lens. -SubjectDistance, 37382, 0x9206, Image, Exif.Image.SubjectDistance, SRational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Image, Exif.Image.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Image, Exif.Image.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Image, Exif.Image.Flash, Short, Indicates the status of flash when the image was shot. -FocalLength, 37386, 0x920a, Image, Exif.Image.FocalLength, Rational, The actual focal length of the lens, in mm. -FlashEnergy, 37387, 0x920b, Image, Exif.Image.FlashEnergy, Rational, Amount of flash energy (BCPS). -SpatialFrequencyResponse, 37388, 0x920c, Image, Exif.Image.SpatialFrequencyResponse, Undefined, SFR of the camera. -Noise, 37389, 0x920d, Image, Exif.Image.Noise, Undefined, Noise measurement values. -FocalPlaneXResolution, 37390, 0x920e, Image, Exif.Image.FocalPlaneXResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth direction for main image. -FocalPlaneYResolution, 37391, 0x920f, Image, Exif.Image.FocalPlaneYResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength direction for main image. -FocalPlaneResolutionUnit, 37392, 0x9210, Image, Exif.Image.FocalPlaneResolutionUnit, Short, Unit of measurement for FocalPlaneXResolution(37390) and FocalPlaneYResolution(37391). -ImageNumber, 37393, 0x9211, Image, Exif.Image.ImageNumber, Long, Number assigned to an image, e.g., in a chained image burst. -SecurityClassification, 37394, 0x9212, Image, Exif.Image.SecurityClassification, Ascii, Security classification assigned to the image. -ImageHistory, 37395, 0x9213, Image, Exif.Image.ImageHistory, Ascii, Record of what has been done to the image. -SubjectLocation, 37396, 0x9214, Image, Exif.Image.SubjectLocation, Short, Indicates the location and area of the main subject in the overall scene. -ExposureIndex, 37397, 0x9215, Image, Exif.Image.ExposureIndex, Rational, Encodes the camera exposure index setting when image was captured. -TIFFEPStandardID, 37398, 0x9216, Image, Exif.Image.TIFFEPStandardID, Byte, Contains four ASCII characters representing the TIFF/EP standard version of a TIFF/EP file, eg '1', '0', '0', '0' -SensingMethod, 37399, 0x9217, Image, Exif.Image.SensingMethod, Short, Type of image sensor. -XPTitle, 40091, 0x9c9b, Image, Exif.Image.XPTitle, Byte, Title tag used by Windows, encoded in UCS2 -XPComment, 40092, 0x9c9c, Image, Exif.Image.XPComment, Byte, Comment tag used by Windows, encoded in UCS2 -XPAuthor, 40093, 0x9c9d, Image, Exif.Image.XPAuthor, Byte, Author tag used by Windows, encoded in UCS2 -XPKeywords, 40094, 0x9c9e, Image, Exif.Image.XPKeywords, Byte, Keywords tag used by Windows, encoded in UCS2 -XPSubject, 40095, 0x9c9f, Image, Exif.Image.XPSubject, Byte, Subject tag used by Windows, encoded in UCS2 -PrintImageMatching, 50341, 0xc4a5, Image, Exif.Image.PrintImageMatching, Undefined, Print Image Matching, description needed. -DNGVersion, 50706, 0xc612, Image, Exif.Image.DNGVersion, Byte, This tag encodes the DNG four-tier version number. For files compliant with version 1.1.0.0 of the DNG specification, this tag should contain the bytes: 1, 1, 0, 0. -DNGBackwardVersion, 50707, 0xc613, Image, Exif.Image.DNGBackwardVersion, Byte, This tag specifies the oldest version of the Digital Negative specification for which a file is compatible. Readers shouldnot attempt to read a file if this tag specifies a version number that is higher than the version number of the specification the reader was based on. In addition to checking the version tags, readers should, for all tags, check the types, counts, and values, to verify it is able to correctly read the file. -UniqueCameraModel, 50708, 0xc614, Image, Exif.Image.UniqueCameraModel, Ascii, Defines a unique, non-localized name for the camera model that created the image in the raw file. This name should include the manufacturer's name to avoid conflicts, and should not be localized, even if the camera name itself is localized for different markets (see LocalizedCameraModel). This string may be used by reader software to index into per-model preferences and replacement profiles. -LocalizedCameraModel, 50709, 0xc615, Image, Exif.Image.LocalizedCameraModel, Byte, Similar to the UniqueCameraModel field, except the name can be localized for different markets to match the localization of the camera name. -CFAPlaneColor, 50710, 0xc616, Image, Exif.Image.CFAPlaneColor, Byte, Provides a mapping between the values in the CFAPattern tag and the plane numbers in LinearRaw space. This is a required tag for non-RGB CFA images. -CFALayout, 50711, 0xc617, Image, Exif.Image.CFALayout, Short, Describes the spatial layout of the CFA. -LinearizationTable, 50712, 0xc618, Image, Exif.Image.LinearizationTable, Short, Describes a lookup table that maps stored values into linear values. This tag is typically used to increase compression ratios by storing the raw data in a non-linear, more visually uniform space with fewer total encoding levels. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelRepeatDim, 50713, 0xc619, Image, Exif.Image.BlackLevelRepeatDim, Short, Specifies repeat pattern size for the BlackLevel tag. -BlackLevel, 50714, 0xc61a, Image, Exif.Image.BlackLevel, Rational, Specifies the zero light (a.k.a. thermal black or black current) encoding level, as a repeating pattern. The origin of this pattern is the top-left corner of the ActiveArea rectangle. The values are stored in row-column-sample scan order. -BlackLevelDeltaH, 50715, 0xc61b, Image, Exif.Image.BlackLevelDeltaH, SRational, If the zero light encoding level is a function of the image column, BlackLevelDeltaH specifies the difference between the zero light encoding level for each column and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelDeltaV, 50716, 0xc61c, Image, Exif.Image.BlackLevelDeltaV, SRational, If the zero light encoding level is a function of the image row, this tag specifies the difference between the zero light encoding level for each row and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -WhiteLevel, 50717, 0xc61d, Image, Exif.Image.WhiteLevel, Short, This tag specifies the fully saturated encoding level for the raw sample values. Saturation is caused either by the sensor itself becoming highly non-linear in response, or by the camera's analog to digital converter clipping. -DefaultScale, 50718, 0xc61e, Image, Exif.Image.DefaultScale, Rational, DefaultScale is required for cameras with non-square pixels. It specifies the default scale factors for each direction to convert the image to square pixels. Typically these factors are selected to approximately preserve total pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such as the Fujifilm SuperCCD, these two values should usually differ by a factor of 2.0. -DefaultCropOrigin, 50719, 0xc61f, Image, Exif.Image.DefaultCropOrigin, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropOrigin specifies the origin of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied), relative to the top-left corner of the ActiveArea rectangle. -DefaultCropSize, 50720, 0xc620, Image, Exif.Image.DefaultCropSize, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropSize specifies the size of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied). -ColorMatrix1, 50721, 0xc621, Image, Exif.Image.ColorMatrix1, SRational, ColorMatrix1 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the first calibration illuminant. The matrix values are stored in row scan order. The ColorMatrix1 tag is required for all non-monochrome DNG files. -ColorMatrix2, 50722, 0xc622, Image, Exif.Image.ColorMatrix2, SRational, ColorMatrix2 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the second calibration illuminant. The matrix values are stored in row scan order. -CameraCalibration1, 50723, 0xc623, Image, Exif.Image.CameraCalibration1, SRational, CameraClalibration1 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the first calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix1 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -CameraCalibration2, 50724, 0xc624, Image, Exif.Image.CameraCalibration2, SRational, CameraCalibration2 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the second calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix2 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -ReductionMatrix1, 50725, 0xc625, Image, Exif.Image.ReductionMatrix1, SRational, ReductionMatrix1 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the first calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -ReductionMatrix2, 50726, 0xc626, Image, Exif.Image.ReductionMatrix2, SRational, ReductionMatrix2 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the second calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -AnalogBalance, 50727, 0xc627, Image, Exif.Image.AnalogBalance, Rational, Normally the stored raw values are not white balanced, since any digital white balancing will reduce the dynamic range of the final image if the user decides to later adjust the white balance; however, if camera hardware is capable of white balancing the color channels before the signal is digitized, it can improve the dynamic range of the final image. AnalogBalance defines the gain, either analog (recommended) or digital (not recommended) that has been applied the stored raw values. -AsShotNeutral, 50728, 0xc628, Image, Exif.Image.AsShotNeutral, Short, Specifies the selected white balance at time of capture, encoded as the coordinates of a perfectly neutral color in linear reference space values. The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag. -AsShotWhiteXY, 50729, 0xc629, Image, Exif.Image.AsShotWhiteXY, Rational, Specifies the selected white balance at time of capture, encoded as x-y chromaticity coordinates. The inclusion of this tag precludes the inclusion of the AsShotNeutral tag. -BaselineExposure, 50730, 0xc62a, Image, Exif.Image.BaselineExposure, SRational, Camera models vary in the trade-off they make between highlight headroom and shadow noise. Some leave a significant amount of highlight headroom during a normal exposure. This allows significant negative exposure compensation to be applied during raw conversion, but also means normal exposures will contain more shadow noise. Other models leave less headroom during normal exposures. This allows for less negative exposure compensation, but results in lower shadow noise for normal exposures. Because of these differences, a raw converter needs to vary the zero point of its exposure compensation control from model to model. BaselineExposure specifies by how much (in EV units) to move the zero point. Positive values result in brighter default results, while negative values result in darker default results. -BaselineNoise, 50731, 0xc62b, Image, Exif.Image.BaselineNoise, Rational, Specifies the relative noise level of the camera model at a baseline ISO value of 100, compared to a reference camera model. Since noise levels tend to vary approximately with the square root of the ISO value, a raw converter can use this value, combined with the current ISO, to estimate the relative noise level of the current image. -BaselineSharpness, 50732, 0xc62c, Image, Exif.Image.BaselineSharpness, Rational, Specifies the relative amount of sharpening required for this camera model, compared to a reference camera model. Camera models vary in the strengths of their anti-aliasing filters. Cameras with weak or no filters require less sharpening than cameras with strong anti-aliasing filters. -BayerGreenSplit, 50733, 0xc62d, Image, Exif.Image.BayerGreenSplit, Long, Only applies to CFA images using a Bayer pattern filter array. This tag specifies, in arbitrary units, how closely the values of the green pixels in the blue/green rows track the values of the green pixels in the red/green rows. A value of zero means the two kinds of green pixels track closely, while a non-zero value means they sometimes diverge. The useful range for this tag is from 0 (no divergence) to about 5000 (quite large divergence). -LinearResponseLimit, 50734, 0xc62e, Image, Exif.Image.LinearResponseLimit, Rational, Some sensors have an unpredictable non-linearity in their response as they near the upper limit of their encoding range. This non-linearity results in color shifts in the highlight areas of the resulting image unless the raw converter compensates for this effect. LinearResponseLimit specifies the fraction of the encoding range above which the response may become significantly non-linear. -CameraSerialNumber, 50735, 0xc62f, Image, Exif.Image.CameraSerialNumber, Ascii, CameraSerialNumber contains the serial number of the camera or camera body that captured the image. -LensInfo, 50736, 0xc630, Image, Exif.Image.LensInfo, Rational, Contains information about the lens that captured the image. If the minimum f-stops are unknown, they should be encoded as 0/0. -ChromaBlurRadius, 50737, 0xc631, Image, Exif.Image.ChromaBlurRadius, Rational, ChromaBlurRadius provides a hint to the DNG reader about how much chroma blur should be applied to the image. If this tag is omitted, the reader will use its default amount of chroma blurring. Normally this tag is only included for non-CFA images, since the amount of chroma blur required for mosaic images is highly dependent on the de-mosaic algorithm, in which case the DNG reader's default value is likely optimized for its particular de-mosaic algorithm. -AntiAliasStrength, 50738, 0xc632, Image, Exif.Image.AntiAliasStrength, Rational, Provides a hint to the DNG reader about how strong the camera's anti-alias filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is prone to aliasing artifacts with some subjects), while a value of 1.0 means a strong anti-alias filter (i.e., the camera almost never has aliasing artifacts). -ShadowScale, 50739, 0xc633, Image, Exif.Image.ShadowScale, SRational, This tag is used by Adobe Camera Raw to control the sensitivity of its 'Shadows' slider. -DNGPrivateData, 50740, 0xc634, Image, Exif.Image.DNGPrivateData, Byte, Provides a way for camera manufacturers to store private data in the DNG file for use by their own raw converters, and to have that data preserved by programs that edit DNG files. -MakerNoteSafety, 50741, 0xc635, Image, Exif.Image.MakerNoteSafety, Short, MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is safe to preserve along with the rest of the EXIF data. File browsers and other image management software processing an image with a preserved MakerNote should be aware that any thumbnail image embedded in the MakerNote may be stale, and may not reflect the current state of the full size image. -CalibrationIlluminant1, 50778, 0xc65a, Image, Exif.Image.CalibrationIlluminant1, Short, The illuminant used for the first set of color calibration tags (ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for this tag are the same as the legal values for the LightSource EXIF tag. -CalibrationIlluminant2, 50779, 0xc65b, Image, Exif.Image.CalibrationIlluminant2, Short, The illuminant used for an optional second set of color calibration tags (ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for this tag are the same as the legal values for the CalibrationIlluminant1 tag; however, if both are included, neither is allowed to have a value of 0 (unknown). -BestQualityScale, 50780, 0xc65c, Image, Exif.Image.BestQualityScale, Rational, For some cameras, the best possible image quality is not achieved by preserving the total pixel count during conversion. For example, Fujifilm SuperCCD images have maximum detail when their total pixel count is doubled. This tag specifies the amount by which the values of the DefaultScale tag need to be multiplied to achieve the best quality image size. -RawDataUniqueID, 50781, 0xc65d, Image, Exif.Image.RawDataUniqueID, Byte, This tag contains a 16-byte unique identifier for the raw image data in the DNG file. DNG readers can use this tag to recognize a particular raw image, even if the file's name or the metadata contained in the file has been changed. If a DNG writer creates such an identifier, it should do so using an algorithm that will ensure that it is very unlikely two different images will end up having the same identifier. -OriginalRawFileName, 50827, 0xc68b, Image, Exif.Image.OriginalRawFileName, Byte, If the DNG file was converted from a non-DNG raw file, then this tag contains the file name of that original raw file. -OriginalRawFileData, 50828, 0xc68c, Image, Exif.Image.OriginalRawFileData, Undefined, If the DNG file was converted from a non-DNG raw file, then this tag contains the compressed contents of that original raw file. The contents of this tag always use the big-endian byte order. The tag contains a sequence of data blocks. Future versions of the DNG specification may define additional data blocks, so DNG readers should ignore extra bytes when parsing this tag. DNG readers should also detect the case where data blocks are missing from the end of the sequence, and should assume a default value for all the missing blocks. There are no padding or alignment bytes between data blocks. -ActiveArea, 50829, 0xc68d, Image, Exif.Image.ActiveArea, Short, This rectangle defines the active (non-masked) pixels of the sensor. The order of the rectangle coordinates is: top, left, bottom, right. -MaskedAreas, 50830, 0xc68e, Image, Exif.Image.MaskedAreas, Short, This tag contains a list of non-overlapping rectangle coordinates of fully masked pixels, which can be optionally used by DNG readers to measure the black encoding level. The order of each rectangle's coordinates is: top, left, bottom, right. If the raw image data has already had its black encoding level subtracted, then this tag should not be used, since the masked pixels are no longer useful. -AsShotICCProfile, 50831, 0xc68f, Image, Exif.Image.AsShotICCProfile, Undefined, This tag contains an ICC profile that, in conjunction with the AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to specify a default color rendering from camera color space coordinates (linear reference values) into the ICC profile connection space. The ICC profile connection space is an output referred colorimetric space, whereas the other color calibration tags in DNG specify a conversion into a scene referred colorimetric space. This means that the rendering in this profile should include any desired tone and gamut mapping needed to convert between scene referred values and output referred values. -AsShotPreProfileMatrix, 50832, 0xc690, Image, Exif.Image.AsShotPreProfileMatrix, SRational, This tag is used in conjunction with the AsShotICCProfile tag. It specifies a matrix that should be applied to the camera color space coordinates before processing the values through the ICC profile specified in the AsShotICCProfile tag. The matrix is stored in the row scan order. If ColorPlanes is greater than three, then this matrix can (but is not required to) reduce the dimensionality of the color data down to three components, in which case the AsShotICCProfile should have three rather than ColorPlanes input components. -CurrentICCProfile, 50833, 0xc691, Image, Exif.Image.CurrentICCProfile, Undefined, This tag is used in conjunction with the CurrentPreProfileMatrix tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -CurrentPreProfileMatrix, 50834, 0xc692, Image, Exif.Image.CurrentPreProfileMatrix, SRational, This tag is used in conjunction with the CurrentICCProfile tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -ExposureTime, 33434, 0x829a, Photo, Exif.Photo.ExposureTime, Rational, Exposure time, given in seconds (sec). -FNumber, 33437, 0x829d, Photo, Exif.Photo.FNumber, Rational, The F number. -ExposureProgram, 34850, 0x8822, Photo, Exif.Photo.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Photo, Exif.Photo.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. The tag value is an ASCII string compatible with the standard developed by the ASTM Technical Committee. -ISOSpeedRatings, 34855, 0x8827, Photo, Exif.Photo.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Photo, Exif.Photo.OECF, Undefined, Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO 14524. is the relationship between the camera optical input and the image values. -ExifVersion, 36864, 0x9000, Photo, Exif.Photo.ExifVersion, Undefined, The version of this standard supported. Nonexistence of this field is taken to mean nonconformance to the standard. -DateTimeOriginal, 36867, 0x9003, Photo, Exif.Photo.DateTimeOriginal, Ascii, The date and time when the original image data was generated. For a digital still camera the date and time the picture was taken are recorded. -DateTimeDigitized, 36868, 0x9004, Photo, Exif.Photo.DateTimeDigitized, Ascii, The date and time when the image was stored as digital data. -ComponentsConfiguration, 37121, 0x9101, Photo, Exif.Photo.ComponentsConfiguration, Undefined, Information specific to compressed data. The channels of each component are arranged in order from the 1st component to the 4th. For uncompressed data the data arrangement is given in the tag. However, since can only express the order of Y, Cb and Cr, this tag is provided for cases when compressed data uses components other than Y, Cb, and Cr and to enable support of other sequences. -CompressedBitsPerPixel, 37122, 0x9102, Photo, Exif.Photo.CompressedBitsPerPixel, Rational, Information specific to compressed data. The compression mode used for a compressed image is indicated in unit bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Photo, Exif.Photo.ShutterSpeedValue, SRational, Shutter speed. The unit is the APEX (Additive System of Photographic Exposure) setting. -ApertureValue, 37378, 0x9202, Photo, Exif.Photo.ApertureValue, Rational, The lens aperture. The unit is the APEX value. -BrightnessValue, 37379, 0x9203, Photo, Exif.Photo.BrightnessValue, SRational, The value of brightness. The unit is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -ExposureBiasValue, 37380, 0x9204, Photo, Exif.Photo.ExposureBiasValue, SRational, The exposure bias. The units is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -MaxApertureValue, 37381, 0x9205, Photo, Exif.Photo.MaxApertureValue, Rational, The smallest F number of the lens. The unit is the APEX value. Ordinarily it is given in the range of 00.00 to 99.99, but it is not limited to this range. -SubjectDistance, 37382, 0x9206, Photo, Exif.Photo.SubjectDistance, Rational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Photo, Exif.Photo.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Photo, Exif.Photo.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Photo, Exif.Photo.Flash, Short, This tag is recorded when an image is taken using a strobe light (flash). -FocalLength, 37386, 0x920a, Photo, Exif.Photo.FocalLength, Rational, The actual focal length of the lens, in mm. Conversion is not made to the focal length of a 35 mm film camera. -SubjectArea, 37396, 0x9214, Photo, Exif.Photo.SubjectArea, Short, This tag indicates the location and area of the main subject in the overall scene. -MakerNote, 37500, 0x927c, Photo, Exif.Photo.MakerNote, Undefined, A tag for manufacturers of Exif writers to record any desired information. The contents are up to the manufacturer. -UserComment, 37510, 0x9286, Photo, Exif.Photo.UserComment, Comment, A tag for Exif users to write keywords or comments on the image besides those in , and without the character code limitations of the tag. -SubSecTime, 37520, 0x9290, Photo, Exif.Photo.SubSecTime, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeOriginal, 37521, 0x9291, Photo, Exif.Photo.SubSecTimeOriginal, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeDigitized, 37522, 0x9292, Photo, Exif.Photo.SubSecTimeDigitized, Ascii, A tag used to record fractions of seconds for the tag. -FlashpixVersion, 40960, 0xa000, Photo, Exif.Photo.FlashpixVersion, Undefined, The FlashPix format version supported by a FPXR file. -ColorSpace, 40961, 0xa001, Photo, Exif.Photo.ColorSpace, Short, The color space information tag is always recorded as the color space specifier. Normally sRGB is used to define the color space based on the PC monitor conditions and environment. If a color space other than sRGB is used, Uncalibrated is set. Image data recorded as Uncalibrated can be treated as sRGB when it is converted to FlashPix. -PixelXDimension, 40962, 0xa002, Photo, Exif.Photo.PixelXDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid width of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. -PixelYDimension, 40963, 0xa003, Photo, Exif.Photo.PixelYDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid height of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. Since data padding is unnecessary in the vertical direction, the number of lines recorded in this valid image height tag will in fact be the same as that recorded in the SOF. -RelatedSoundFile, 40964, 0xa004, Photo, Exif.Photo.RelatedSoundFile, Ascii, This tag is used to record the name of an audio file related to the image data. The only relational information recorded here is the Exif audio file name and extension (an ASCII string consisting of 8 characters + '.' + 3 characters). The path is not recorded. -InteroperabilityTag, 40965, 0xa005, Photo, Exif.Photo.InteroperabilityTag, Long, Interoperability IFD is composed of tags which stores the information to ensure the Interoperability and pointed by the following tag located in Exif IFD. The Interoperability structure of Interoperability IFD is the same as TIFF defined IFD structure but does not contain the image data characteristically compared with normal TIFF IFD. -FlashEnergy, 41483, 0xa20b, Photo, Exif.Photo.FlashEnergy, Rational, Indicates the strobe energy at the time the image is captured, as measured in Beam Candle Power Seconds (BCPS). -SpatialFrequencyResponse, 41484, 0xa20c, Photo, Exif.Photo.SpatialFrequencyResponse, Undefined, This tag records the camera or input device spatial frequency table and SFR values in the direction of image width, image height, and diagonal direction, as specified in ISO 12233. -FocalPlaneXResolution, 41486, 0xa20e, Photo, Exif.Photo.FocalPlaneXResolution, Rational, Indicates the number of pixels in the image width (X) direction per on the camera focal plane. -FocalPlaneYResolution, 41487, 0xa20f, Photo, Exif.Photo.FocalPlaneYResolution, Rational, Indicates the number of pixels in the image height (V) direction per on the camera focal plane. -FocalPlaneResolutionUnit, 41488, 0xa210, Photo, Exif.Photo.FocalPlaneResolutionUnit, Short, Indicates the unit for measuring and . This value is the same as the . -SubjectLocation, 41492, 0xa214, Photo, Exif.Photo.SubjectLocation, Short, Indicates the location of the main subject in the scene. The value of this tag represents the pixel at the center of the main subject relative to the left edge, prior to rotation processing as per the tag. The first value indicates the X column number and second indicates the Y row number. -ExposureIndex, 41493, 0xa215, Photo, Exif.Photo.ExposureIndex, Rational, Indicates the exposure index selected on the camera or input device at the time the image is captured. -SensingMethod, 41495, 0xa217, Photo, Exif.Photo.SensingMethod, Short, Indicates the image sensor type on the camera or input device. -FileSource, 41728, 0xa300, Photo, Exif.Photo.FileSource, Undefined, Indicates the image source. If a DSC recorded the image, this tag value of this tag always be set to 3, indicating that the image was recorded on a DSC. -SceneType, 41729, 0xa301, Photo, Exif.Photo.SceneType, Undefined, Indicates the type of scene. If a DSC recorded the image, this tag value must always be set to 1, indicating that the image was directly photographed. -CFAPattern, 41730, 0xa302, Photo, Exif.Photo.CFAPattern, Undefined, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods. -CustomRendered, 41985, 0xa401, Photo, Exif.Photo.CustomRendered, Short, This tag indicates the use of special processing on image data, such as rendering geared to output. When special processing is performed, the reader is expected to disable or minimize any further processing. -ExposureMode, 41986, 0xa402, Photo, Exif.Photo.ExposureMode, Short, This tag indicates the exposure mode set when the image was shot. In auto-bracketing mode, the camera shoots a series of frames of the same scene at different exposure settings. -WhiteBalance, 41987, 0xa403, Photo, Exif.Photo.WhiteBalance, Short, This tag indicates the white balance mode set when the image was shot. -DigitalZoomRatio, 41988, 0xa404, Photo, Exif.Photo.DigitalZoomRatio, Rational, This tag indicates the digital zoom ratio when the image was shot. If the numerator of the recorded value is 0, this indicates that digital zoom was not used. -FocalLengthIn35mmFilm, 41989, 0xa405, Photo, Exif.Photo.FocalLengthIn35mmFilm, Short, This tag indicates the equivalent focal length assuming a 35mm film camera, in mm. A value of 0 means the focal length is unknown. Note that this tag differs from the tag. -SceneCaptureType, 41990, 0xa406, Photo, Exif.Photo.SceneCaptureType, Short, This tag indicates the type of scene that was shot. It can also be used to record the mode in which the image was shot. Note that this differs from the tag. -GainControl, 41991, 0xa407, Photo, Exif.Photo.GainControl, Short, This tag indicates the degree of overall image gain adjustment. -Contrast, 41992, 0xa408, Photo, Exif.Photo.Contrast, Short, This tag indicates the direction of contrast processing applied by the camera when the image was shot. -Saturation, 41993, 0xa409, Photo, Exif.Photo.Saturation, Short, This tag indicates the direction of saturation processing applied by the camera when the image was shot. -Sharpness, 41994, 0xa40a, Photo, Exif.Photo.Sharpness, Short, This tag indicates the direction of sharpness processing applied by the camera when the image was shot. -DeviceSettingDescription, 41995, 0xa40b, Photo, Exif.Photo.DeviceSettingDescription, Undefined, This tag indicates information on the picture-taking conditions of a particular camera model. The tag is used only to indicate the picture-taking conditions in the reader. -SubjectDistanceRange, 41996, 0xa40c, Photo, Exif.Photo.SubjectDistanceRange, Short, This tag indicates the distance to the subject. -ImageUniqueID, 42016, 0xa420, Photo, Exif.Photo.ImageUniqueID, Ascii, This tag indicates an identifier assigned uniquely to each image. It is recorded as an ASCII string equivalent to hexadecimal notation and 128-bit fixed length. -InteroperabilityIndex, 1, 0x0001, Iop, Exif.Iop.InteroperabilityIndex, Ascii, Indicates the identification of the Interoperability rule. Use "R98" for stating ExifR98 Rules. Four bytes used including the termination code (NULL). see the separate volume of Recommended Exif Interoperability Rules (ExifR98) for other tags used for ExifR98. -InteroperabilityVersion, 2, 0x0002, Iop, Exif.Iop.InteroperabilityVersion, Undefined, Interoperability version -RelatedImageFileFormat, 4096, 0x1000, Iop, Exif.Iop.RelatedImageFileFormat, Ascii, File format of image file -RelatedImageWidth, 4097, 0x1001, Iop, Exif.Iop.RelatedImageWidth, Long, Image width -RelatedImageLength, 4098, 0x1002, Iop, Exif.Iop.RelatedImageLength, Long, Image height -GPSVersionID, 0, 0x0000, GPSInfo, Exif.GPSInfo.GPSVersionID, Byte, Indicates the version of . The version is given as 2.0.0.0. This tag is mandatory when tag is present. (Note: The tag is given in bytes, unlike the tag. When the version is 2.0.0.0, the tag value is 02000000.H). -GPSLatitudeRef, 1, 0x0001, GPSInfo, Exif.GPSInfo.GPSLatitudeRef, Ascii, Indicates whether the latitude is north or south latitude. The ASCII value 'N' indicates north latitude, and 'S' is south latitude. -GPSLatitude, 2, 0x0002, GPSInfo, Exif.GPSInfo.GPSLatitude, Rational, Indicates the latitude. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is dd/1,mmmm/100,0/1. -GPSLongitudeRef, 3, 0x0003, GPSInfo, Exif.GPSInfo.GPSLongitudeRef, Ascii, Indicates whether the longitude is east or west longitude. ASCII 'E' indicates east longitude, and 'W' is west longitude. -GPSLongitude, 4, 0x0004, GPSInfo, Exif.GPSInfo.GPSLongitude, Rational, Indicates the longitude. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is ddd/1,mmmm/100,0/1. -GPSAltitudeRef, 5, 0x0005, GPSInfo, Exif.GPSInfo.GPSAltitudeRef, Byte, Indicates the altitude used as the reference altitude. If the reference is sea level and the altitude is above sea level, 0 is given. If the altitude is below sea level, a value of 1 is given and the altitude is indicated as an absolute value in the GSPAltitude tag. The reference unit is meters. Note that this tag is BYTE type, unlike other reference tags. -GPSAltitude, 6, 0x0006, GPSInfo, Exif.GPSInfo.GPSAltitude, Rational, Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is expressed as one RATIONAL value. The reference unit is meters. -GPSTimeStamp, 7, 0x0007, GPSInfo, Exif.GPSInfo.GPSTimeStamp, Rational, Indicates the time as UTC (Coordinated Universal Time). is expressed as three RATIONAL values giving the hour, minute, and second (atomic clock). -GPSSatellites, 8, 0x0008, GPSInfo, Exif.GPSInfo.GPSSatellites, Ascii, Indicates the GPS satellites used for measurements. This tag can be used to describe the number of satellites, their ID number, angle of elevation, azimuth, SNR and other information in ASCII notation. The format is not specified. If the GPS receiver is incapable of taking measurements, value of the tag is set to NULL. -GPSStatus, 9, 0x0009, GPSInfo, Exif.GPSInfo.GPSStatus, Ascii, Indicates the status of the GPS receiver when the image is recorded. "A" means measurement is in progress, and "V" means the measurement is Interoperability. -GPSMeasureMode, 10, 0x000a, GPSInfo, Exif.GPSInfo.GPSMeasureMode, Ascii, Indicates the GPS measurement mode. "2" means two-dimensional measurement and "3" means three-dimensional measurement is in progress. -GPSDOP, 11, 0x000b, GPSInfo, Exif.GPSInfo.GPSDOP, Rational, Indicates the GPS DOP (data degree of precision). An HDOP value is written during two-dimensional measurement, and PDOP during three-dimensional measurement. -GPSSpeedRef, 12, 0x000c, GPSInfo, Exif.GPSInfo.GPSSpeedRef, Ascii, Indicates the unit used to express the GPS receiver speed of movement. "K" "M" and "N" represents kilometers per hour, miles per hour, and knots. -GPSSpeed, 13, 0x000d, GPSInfo, Exif.GPSInfo.GPSSpeed, Rational, Indicates the speed of GPS receiver movement. -GPSTrackRef, 14, 0x000e, GPSInfo, Exif.GPSInfo.GPSTrackRef, Ascii, Indicates the reference for giving the direction of GPS receiver movement. "T" denotes true direction and "M" is magnetic direction. -GPSTrack, 15, 0x000f, GPSInfo, Exif.GPSInfo.GPSTrack, Rational, Indicates the direction of GPS receiver movement. The range of values is from 0.00 to 359.99. -GPSImgDirectionRef, 16, 0x0010, GPSInfo, Exif.GPSInfo.GPSImgDirectionRef, Ascii, Indicates the reference for giving the direction of the image when it is captured. "T" denotes true direction and "M" is magnetic direction. -GPSImgDirection, 17, 0x0011, GPSInfo, Exif.GPSInfo.GPSImgDirection, Rational, Indicates the direction of the image when it was captured. The range of values is from 0.00 to 359.99. -GPSMapDatum, 18, 0x0012, GPSInfo, Exif.GPSInfo.GPSMapDatum, Ascii, Indicates the geodetic survey data used by the GPS receiver. If the survey data is restricted to Japan, the value of this tag is "TOKYO" or "WGS-84". -GPSDestLatitudeRef, 19, 0x0013, GPSInfo, Exif.GPSInfo.GPSDestLatitudeRef, Ascii, Indicates whether the latitude of the destination point is north or south latitude. The ASCII value "N" indicates north latitude, and "S" is south latitude. -GPSDestLatitude, 20, 0x0014, GPSInfo, Exif.GPSInfo.GPSDestLatitude, Rational, Indicates the latitude of the destination point. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If latitude is expressed as degrees, minutes and seconds, a typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be dd/1,mmmm/100,0/1. -GPSDestLongitudeRef, 21, 0x0015, GPSInfo, Exif.GPSInfo.GPSDestLongitudeRef, Ascii, Indicates whether the longitude of the destination point is east or west longitude. ASCII "E" indicates east longitude, and "W" is west longitude. -GPSDestLongitude, 22, 0x0016, GPSInfo, Exif.GPSInfo.GPSDestLongitude, Rational, Indicates the longitude of the destination point. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If longitude is expressed as degrees, minutes and seconds, a typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be ddd/1,mmmm/100,0/1. -GPSDestBearingRef, 23, 0x0017, GPSInfo, Exif.GPSInfo.GPSDestBearingRef, Ascii, Indicates the reference used for giving the bearing to the destination point. "T" denotes true direction and "M" is magnetic direction. -GPSDestBearing, 24, 0x0018, GPSInfo, Exif.GPSInfo.GPSDestBearing, Rational, Indicates the bearing to the destination point. The range of values is from 0.00 to 359.99. -GPSDestDistanceRef, 25, 0x0019, GPSInfo, Exif.GPSInfo.GPSDestDistanceRef, Ascii, Indicates the unit used to express the distance to the destination point. "K", "M" and "N" represent kilometers, miles and knots. -GPSDestDistance, 26, 0x001a, GPSInfo, Exif.GPSInfo.GPSDestDistance, Rational, Indicates the distance to the destination point. -GPSProcessingMethod, 27, 0x001b, GPSInfo, Exif.GPSInfo.GPSProcessingMethod, Undefined, A character string recording the name of the method used for location finding. The first byte indicates the character code used, and this is followed by the name of the method. -GPSAreaInformation, 28, 0x001c, GPSInfo, Exif.GPSInfo.GPSAreaInformation, Undefined, A character string recording the name of the GPS area. The first byte indicates the character code used, and this is followed by the name of the GPS area. -GPSDateStamp, 29, 0x001d, GPSInfo, Exif.GPSInfo.GPSDateStamp, Ascii, A character string recording date and time information relative to UTC (Coordinated Universal Time). The format is "YYYY:MM:DD.". -GPSDifferential, 30, 0x001e, GPSInfo, Exif.GPSInfo.GPSDifferential, Short, Indicates whether differential correction is applied to the GPS receiver. -ProcessingSoftware, 11, 0x000b, Image, Exif.Image.ProcessingSoftware, Ascii, The name and version of the software used to post-process the picture. -NewSubfileType, 254, 0x00fe, Image, Exif.Image.NewSubfileType, Long, A general indication of the kind of data contained in this subfile. -SubfileType, 255, 0x00ff, Image, Exif.Image.SubfileType, Short, A general indication of the kind of data contained in this subfile. This field is deprecated. The NewSubfileType field should be used instead. -ImageWidth, 256, 0x0100, Image, Exif.Image.ImageWidth, Long, The number of columns of image data, equal to the number of pixels per row. In JPEG compressed data a JPEG marker is used instead of this tag. -ImageLength, 257, 0x0101, Image, Exif.Image.ImageLength, Long, The number of rows of image data. In JPEG compressed data a JPEG marker is used instead of this tag. -BitsPerSample, 258, 0x0102, Image, Exif.Image.BitsPerSample, Short, The number of bits per image component. In this standard each component of the image is 8 bits, so the value for this tag is 8. See also . In JPEG compressed data a JPEG marker is used instead of this tag. -Compression, 259, 0x0103, Image, Exif.Image.Compression, Short, The compression scheme used for the image data. When a primary image is JPEG compressed, this designation is not necessary and is omitted. When thumbnails use JPEG compression, this tag value is set to 6. -PhotometricInterpretation, 262, 0x0106, Image, Exif.Image.PhotometricInterpretation, Short, The pixel composition. In JPEG compressed data a JPEG marker is used instead of this tag. -Threshholding, 263, 0x0107, Image, Exif.Image.Threshholding, Short, For black and white TIFF files that represent shades of gray, the technique used to convert from gray to black and white pixels. -CellWidth, 264, 0x0108, Image, Exif.Image.CellWidth, Short, The width of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -CellLength, 265, 0x0109, Image, Exif.Image.CellLength, Short, The length of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -FillOrder, 266, 0x010a, Image, Exif.Image.FillOrder, Short, The logical order of bits within a byte -DocumentName, 269, 0x010d, Image, Exif.Image.DocumentName, Ascii, The name of the document from which this image was scanned -ImageDescription, 270, 0x010e, Image, Exif.Image.ImageDescription, Ascii, A character string giving the title of the image. It may be a comment such as "1988 company picnic" or the like. Two-bytes character codes cannot be used. When a 2-bytes code is necessary, the Exif Private tag is to be used. -Make, 271, 0x010f, Image, Exif.Image.Make, Ascii, The manufacturer of the recording equipment. This is the manufacturer of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -Model, 272, 0x0110, Image, Exif.Image.Model, Ascii, The model name or model number of the equipment. This is the model name or number of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -StripOffsets, 273, 0x0111, Image, Exif.Image.StripOffsets, Long, For each strip, the byte offset of that strip. It is recommended that this be selected so the number of strip bytes does not exceed 64 Kbytes. With JPEG compressed data this designation is not needed and is omitted. See also and . -Orientation, 274, 0x0112, Image, Exif.Image.Orientation, Short, The image orientation viewed in terms of rows and columns. -SamplesPerPixel, 277, 0x0115, Image, Exif.Image.SamplesPerPixel, Short, The number of components per pixel. Since this standard applies to RGB and YCbCr images, the value set for this tag is 3. In JPEG compressed data a JPEG marker is used instead of this tag. -RowsPerStrip, 278, 0x0116, Image, Exif.Image.RowsPerStrip, Long, The number of rows per strip. This is the number of rows in the image of one strip when an image is divided into strips. With JPEG compressed data this designation is not needed and is omitted. See also and . -StripByteCounts, 279, 0x0117, Image, Exif.Image.StripByteCounts, Long, The total number of bytes in each strip. With JPEG compressed data this designation is not needed and is omitted. -XResolution, 282, 0x011a, Image, Exif.Image.XResolution, Rational, The number of pixels per in the direction. When the image resolution is unknown, 72 [dpi] is designated. -YResolution, 283, 0x011b, Image, Exif.Image.YResolution, Rational, The number of pixels per in the direction. The same value as is designated. -PlanarConfiguration, 284, 0x011c, Image, Exif.Image.PlanarConfiguration, Short, Indicates whether pixel components are recorded in a chunky or planar format. In JPEG compressed files a JPEG marker is used instead of this tag. If this field does not exist, the TIFF default of 1 (chunky) is assumed. -GrayResponseUnit, 290, 0x0122, Image, Exif.Image.GrayResponseUnit, Short, The precision of the information contained in the GrayResponseCurve. -GrayResponseCurve, 291, 0x0123, Image, Exif.Image.GrayResponseCurve, Short, For grayscale data, the optical density of each possible pixel value. -T4Options, 292, 0x0124, Image, Exif.Image.T4Options, Long, T.4-encoding options. -T6Options, 293, 0x0125, Image, Exif.Image.T6Options, Long, T.6-encoding options. -ResolutionUnit, 296, 0x0128, Image, Exif.Image.ResolutionUnit, Short, The unit for measuring and . The same unit is used for both and . If the image resolution is unknown, 2 (inches) is designated. -TransferFunction, 301, 0x012d, Image, Exif.Image.TransferFunction, Short, A transfer function for the image, described in tabular style. Normally this tag is not necessary, since color space is specified in the color space information tag (). -Software, 305, 0x0131, Image, Exif.Image.Software, Ascii, This tag records the name and version of the software or firmware of the camera or image input device used to generate the image. The detailed format is not specified, but it is recommended that the example shown below be followed. When the field is left blank, it is treated as unknown. -DateTime, 306, 0x0132, Image, Exif.Image.DateTime, Ascii, The date and time of image creation. In Exif standard, it is the date and time the file was changed. -Artist, 315, 0x013b, Image, Exif.Image.Artist, Ascii, This tag records the name of the camera owner, photographer or image creator. The detailed format is not specified, but it is recommended that the information be written as in the example below for ease of Interoperability. When the field is left blank, it is treated as unknown. Ex.) "Camera owner, John Smith; Photographer, Michael Brown; Image creator, Ken James" -HostComputer, 316, 0x013c, Image, Exif.Image.HostComputer, Ascii, This tag records information about the host computer used to generate the image. -Predictor, 317, 0x013d, Image, Exif.Image.Predictor, Short, A predictor is a mathematical operator that is applied to the image data before an encoding scheme is applied. -WhitePoint, 318, 0x013e, Image, Exif.Image.WhitePoint, Rational, The chromaticity of the white point of the image. Normally this tag is not necessary, since color space is specified in the colorspace information tag (). -PrimaryChromaticities, 319, 0x013f, Image, Exif.Image.PrimaryChromaticities, Rational, The chromaticity of the three primary colors of the image. Normally this tag is not necessary, since colorspace is specified in the colorspace information tag (). -ColorMap, 320, 0x0140, Image, Exif.Image.ColorMap, Short, A color map for palette color images. This field defines a Red-Green-Blue color map (often called a lookup table) for palette-color images. In a palette-color image, a pixel value is used to index into an RGB lookup table. -HalftoneHints, 321, 0x0141, Image, Exif.Image.HalftoneHints, Short, The purpose of the HalftoneHints field is to convey to the halftone function the range of gray levels within a colorimetrically-specified image that should retain tonal detail. -TileWidth, 322, 0x0142, Image, Exif.Image.TileWidth, Short, The tile width in pixels. This is the number of columns in each tile. -TileLength, 323, 0x0143, Image, Exif.Image.TileLength, Short, The tile length (height) in pixels. This is the number of rows in each tile. -TileOffsets, 324, 0x0144, Image, Exif.Image.TileOffsets, Short, For each tile, the byte offset of that tile, as compressed and stored on disk. The offset is specified with respect to the beginning of the TIFF file. Note that this implies that each tile has a location independent of the locations of other tiles. -TileByteCounts, 325, 0x0145, Image, Exif.Image.TileByteCounts, Short, For each tile, the number of (compressed) bytes in that tile. See TileOffsets for a description of how the byte counts are ordered. -SubIFDs, 330, 0x014a, Image, Exif.Image.SubIFDs, Long, Defined by Adobe Corporation to enable TIFF Trees within a TIFF file. -InkSet, 332, 0x014c, Image, Exif.Image.InkSet, Short, The set of inks used in a separated (PhotometricInterpretation=5) image. -InkNames, 333, 0x014d, Image, Exif.Image.InkNames, Ascii, The name of each ink used in a separated (PhotometricInterpretation=5) image. -NumberOfInks, 334, 0x014e, Image, Exif.Image.NumberOfInks, Short, The number of inks. Usually equal to SamplesPerPixel, unless there are extra samples. -DotRange, 336, 0x0150, Image, Exif.Image.DotRange, Byte, The component values that correspond to a 0% dot and 100% dot. -TargetPrinter, 337, 0x0151, Image, Exif.Image.TargetPrinter, Ascii, A description of the printing environment for which this separation is intended. -ExtraSamples, 338, 0x0152, Image, Exif.Image.ExtraSamples, Short, Specifies that each pixel has m extra components whose interpretation is defined by one of the values listed below. -SampleFormat, 339, 0x0153, Image, Exif.Image.SampleFormat, Short, This field specifies how to interpret each data sample in a pixel. -SMinSampleValue, 340, 0x0154, Image, Exif.Image.SMinSampleValue, Short, This field specifies the minimum sample value. -SMaxSampleValue, 341, 0x0155, Image, Exif.Image.SMaxSampleValue, Short, This field specifies the maximum sample value. -TransferRange, 342, 0x0156, Image, Exif.Image.TransferRange, Short, Expands the range of the TransferFunction -ClipPath, 343, 0x0157, Image, Exif.Image.ClipPath, Byte, A TIFF ClipPath is intended to mirror the essentials of PostScript's path creation functionality. -XClipPathUnits, 344, 0x0158, Image, Exif.Image.XClipPathUnits, SShort, The number of units that span the width of the image, in terms of integer ClipPath coordinates. -YClipPathUnits, 345, 0x0159, Image, Exif.Image.YClipPathUnits, SShort, The number of units that span the height of the image, in terms of integer ClipPath coordinates. -Indexed, 346, 0x015a, Image, Exif.Image.Indexed, Short, Indexed images are images where the 'pixels' do not represent color values, but rather an index (usually 8-bit) into a separate color table, the ColorMap. -JPEGTables, 347, 0x015b, Image, Exif.Image.JPEGTables, Undefined, This optional tag may be used to encode the JPEG quantization andHuffman tables for subsequent use by the JPEG decompression process. -OPIProxy, 351, 0x015f, Image, Exif.Image.OPIProxy, Short, OPIProxy gives information concerning whether this image is a low-resolution proxy of a high-resolution image (Adobe OPI). -JPEGProc, 512, 0x0200, Image, Exif.Image.JPEGProc, Long, This field indicates the process used to produce the compressed data -JPEGInterchangeFormat, 513, 0x0201, Image, Exif.Image.JPEGInterchangeFormat, Long, The offset to the start byte (SOI) of JPEG compressed thumbnail data. This is not used for primary image JPEG data. -JPEGInterchangeFormatLength, 514, 0x0202, Image, Exif.Image.JPEGInterchangeFormatLength, Long, The number of bytes of JPEG compressed thumbnail data. This is not used for primary image JPEG data. JPEG thumbnails are not divided but are recorded as a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not be recorded. Compressed thumbnails must be recorded in no more than 64 Kbytes, including all other data to be recorded in APP1. -JPEGRestartInterval, 515, 0x0203, Image, Exif.Image.JPEGRestartInterval, Short, This Field indicates the length of the restart interval used in the compressed image data. -JPEGLosslessPredictors, 517, 0x0205, Image, Exif.Image.JPEGLosslessPredictors, Short, This Field points to a list of lossless predictor-selection values, one per component. -JPEGPointTransforms, 518, 0x0206, Image, Exif.Image.JPEGPointTransforms, Short, This Field points to a list of point transform values, one per component. -JPEGQTables, 519, 0x0207, Image, Exif.Image.JPEGQTables, Long, This Field points to a list of offsets to the quantization tables, one per component. -JPEGDCTables, 520, 0x0208, Image, Exif.Image.JPEGDCTables, Long, This Field points to a list of offsets to the DC Huffman tables or the lossless Huffman tables, one per component. -JPEGACTables, 521, 0x0209, Image, Exif.Image.JPEGACTables, Long, This Field points to a list of offsets to the Huffman AC tables, one per component. -YCbCrCoefficients, 529, 0x0211, Image, Exif.Image.YCbCrCoefficients, Rational, The matrix coefficients for transformation from RGB to YCbCr image data. No default is given in TIFF; but here the value given in Appendix E, "Color Space Guidelines", is used as the default. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability this condition. -YCbCrSubSampling, 530, 0x0212, Image, Exif.Image.YCbCrSubSampling, Short, The sampling ratio of chrominance components in relation to the luminance component. In JPEG compressed data a JPEG marker is used instead of this tag. -YCbCrPositioning, 531, 0x0213, Image, Exif.Image.YCbCrPositioning, Short, The position of chrominance components in relation to the luminance component. This field is designated only for JPEG compressed data or uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr = 4:2:2 it is recommended in this standard that 2 (co-sited) be used to record data, in order to improve the image quality when viewed on TV systems. When this field does not exist, the reader shall assume the TIFF default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is recommended. If the reader does not have the capability of supporting both kinds of , it shall follow the TIFF default regardless of the value in this field. It is preferable that readers be able to support both centered and co-sited positioning. -ReferenceBlackWhite, 532, 0x0214, Image, Exif.Image.ReferenceBlackWhite, Rational, The reference black point value and reference white point value. No defaults are given in TIFF, but the values below are given as defaults here. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability these conditions. -XMLPacket, 700, 0x02bc, Image, Exif.Image.XMLPacket, Byte, XMP Metadata (Adobe technote 9-14-02) -Rating, 18246, 0x4746, Image, Exif.Image.Rating, Short, Rating tag used by Windows -RatingPercent, 18249, 0x4749, Image, Exif.Image.RatingPercent, Short, Rating tag used by Windows, value in percent -ImageID, 32781, 0x800d, Image, Exif.Image.ImageID, Ascii, ImageID is the full pathname of the original, high-resolution image, or any other identifying string that uniquely identifies the original image (Adobe OPI). -CFARepeatPatternDim, 33421, 0x828d, Image, Exif.Image.CFARepeatPatternDim, Short, Contains two values representing the minimum rows and columns to define the repeating patterns of the color filter array -CFAPattern, 33422, 0x828e, Image, Exif.Image.CFAPattern, Byte, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods -BatteryLevel, 33423, 0x828f, Image, Exif.Image.BatteryLevel, Rational, Contains a value of the battery level as a fraction or string -Copyright, 33432, 0x8298, Image, Exif.Image.Copyright, Ascii, Copyright information. In this standard the tag is used to indicate both the photographer and editor copyrights. It is the copyright notice of the person or organization claiming rights to the image. The Interoperability copyright statement including date and rights should be written in this field; e.g., "Copyright, John Smith, 19xx. All rights reserved.". In this standard the field records both the photographer and editor copyrights, with each recorded in a separate part of the statement. When there is a clear distinction between the photographer and editor copyrights, these are to be written in the order of photographer followed by editor copyright, separated by NULL (in this case since the statement also ends with a NULL, there are two NULL codes). When only the photographer copyright is given, it is terminated by one NULL code . When only the editor copyright is given, the photographer copyright part consists of one space followed by a terminating NULL code, then the editor copyright is given. When the field is left blank, it is treated as unknown. -ExposureTime, 33434, 0x829a, Image, Exif.Image.ExposureTime, Rational, Exposure time, given in seconds. -FNumber, 33437, 0x829d, Image, Exif.Image.FNumber, Rational, The F number. -IPTCNAA, 33723, 0x83bb, Image, Exif.Image.IPTCNAA, Long, Contains an IPTC/NAA record -ImageResources, 34377, 0x8649, Image, Exif.Image.ImageResources, Byte, Contains information embedded by the Adobe Photoshop application -ExifTag, 34665, 0x8769, Image, Exif.Image.ExifTag, Long, A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure as that of the IFD specified in TIFF. ordinarily, however, it does not contain image data as in the case of TIFF. -InterColorProfile, 34675, 0x8773, Image, Exif.Image.InterColorProfile, Undefined, Contains an InterColor Consortium (ICC) format color space characterization/profile -ExposureProgram, 34850, 0x8822, Image, Exif.Image.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Image, Exif.Image.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. -GPSTag, 34853, 0x8825, Image, Exif.Image.GPSTag, Long, A pointer to the GPS Info IFD. The Interoperability structure of the GPS Info IFD, like that of Exif IFD, has no image data. -ISOSpeedRatings, 34855, 0x8827, Image, Exif.Image.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Image, Exif.Image.OECF, Undefined, Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524. -Interlace, 34857, 0x8829, Image, Exif.Image.Interlace, Short, Indicates the field number of multifield images. -TimeZoneOffset, 34858, 0x882a, Image, Exif.Image.TimeZoneOffset, SShort, This optional tag encodes the time zone of the camera clock (relativeto Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the picture was taken. It may also contain the time zone offsetof the clock used to create the DateTime tag-value when the image wasmodified. -SelfTimerMode, 34859, 0x882b, Image, Exif.Image.SelfTimerMode, Short, Number of seconds image capture was delayed from button press. -DateTimeOriginal, 36867, 0x9003, Image, Exif.Image.DateTimeOriginal, Ascii, The date and time when the original image data was generated. -CompressedBitsPerPixel, 37122, 0x9102, Image, Exif.Image.CompressedBitsPerPixel, Rational, Specific to compressed data; states the compressed bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Image, Exif.Image.ShutterSpeedValue, SRational, Shutter speed. -ApertureValue, 37378, 0x9202, Image, Exif.Image.ApertureValue, Rational, The lens aperture. -BrightnessValue, 37379, 0x9203, Image, Exif.Image.BrightnessValue, SRational, The value of brightness. -ExposureBiasValue, 37380, 0x9204, Image, Exif.Image.ExposureBiasValue, SRational, The exposure bias. -MaxApertureValue, 37381, 0x9205, Image, Exif.Image.MaxApertureValue, Rational, The smallest F number of the lens. -SubjectDistance, 37382, 0x9206, Image, Exif.Image.SubjectDistance, SRational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Image, Exif.Image.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Image, Exif.Image.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Image, Exif.Image.Flash, Short, Indicates the status of flash when the image was shot. -FocalLength, 37386, 0x920a, Image, Exif.Image.FocalLength, Rational, The actual focal length of the lens, in mm. -FlashEnergy, 37387, 0x920b, Image, Exif.Image.FlashEnergy, Rational, Amount of flash energy (BCPS). -SpatialFrequencyResponse, 37388, 0x920c, Image, Exif.Image.SpatialFrequencyResponse, Undefined, SFR of the camera. -Noise, 37389, 0x920d, Image, Exif.Image.Noise, Undefined, Noise measurement values. -FocalPlaneXResolution, 37390, 0x920e, Image, Exif.Image.FocalPlaneXResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth direction for main image. -FocalPlaneYResolution, 37391, 0x920f, Image, Exif.Image.FocalPlaneYResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength direction for main image. -FocalPlaneResolutionUnit, 37392, 0x9210, Image, Exif.Image.FocalPlaneResolutionUnit, Short, Unit of measurement for FocalPlaneXResolution(37390) and FocalPlaneYResolution(37391). -ImageNumber, 37393, 0x9211, Image, Exif.Image.ImageNumber, Long, Number assigned to an image, e.g., in a chained image burst. -SecurityClassification, 37394, 0x9212, Image, Exif.Image.SecurityClassification, Ascii, Security classification assigned to the image. -ImageHistory, 37395, 0x9213, Image, Exif.Image.ImageHistory, Ascii, Record of what has been done to the image. -SubjectLocation, 37396, 0x9214, Image, Exif.Image.SubjectLocation, Short, Indicates the location and area of the main subject in the overall scene. -ExposureIndex, 37397, 0x9215, Image, Exif.Image.ExposureIndex, Rational, Encodes the camera exposure index setting when image was captured. -TIFFEPStandardID, 37398, 0x9216, Image, Exif.Image.TIFFEPStandardID, Byte, Contains four ASCII characters representing the TIFF/EP standard version of a TIFF/EP file, eg '1', '0', '0', '0' -SensingMethod, 37399, 0x9217, Image, Exif.Image.SensingMethod, Short, Type of image sensor. -XPTitle, 40091, 0x9c9b, Image, Exif.Image.XPTitle, Byte, Title tag used by Windows, encoded in UCS2 -XPComment, 40092, 0x9c9c, Image, Exif.Image.XPComment, Byte, Comment tag used by Windows, encoded in UCS2 -XPAuthor, 40093, 0x9c9d, Image, Exif.Image.XPAuthor, Byte, Author tag used by Windows, encoded in UCS2 -XPKeywords, 40094, 0x9c9e, Image, Exif.Image.XPKeywords, Byte, Keywords tag used by Windows, encoded in UCS2 -XPSubject, 40095, 0x9c9f, Image, Exif.Image.XPSubject, Byte, Subject tag used by Windows, encoded in UCS2 -PrintImageMatching, 50341, 0xc4a5, Image, Exif.Image.PrintImageMatching, Undefined, Print Image Matching, description needed. -DNGVersion, 50706, 0xc612, Image, Exif.Image.DNGVersion, Byte, This tag encodes the DNG four-tier version number. For files compliant with version 1.1.0.0 of the DNG specification, this tag should contain the bytes: 1, 1, 0, 0. -DNGBackwardVersion, 50707, 0xc613, Image, Exif.Image.DNGBackwardVersion, Byte, This tag specifies the oldest version of the Digital Negative specification for which a file is compatible. Readers shouldnot attempt to read a file if this tag specifies a version number that is higher than the version number of the specification the reader was based on. In addition to checking the version tags, readers should, for all tags, check the types, counts, and values, to verify it is able to correctly read the file. -UniqueCameraModel, 50708, 0xc614, Image, Exif.Image.UniqueCameraModel, Ascii, Defines a unique, non-localized name for the camera model that created the image in the raw file. This name should include the manufacturer's name to avoid conflicts, and should not be localized, even if the camera name itself is localized for different markets (see LocalizedCameraModel). This string may be used by reader software to index into per-model preferences and replacement profiles. -LocalizedCameraModel, 50709, 0xc615, Image, Exif.Image.LocalizedCameraModel, Byte, Similar to the UniqueCameraModel field, except the name can be localized for different markets to match the localization of the camera name. -CFAPlaneColor, 50710, 0xc616, Image, Exif.Image.CFAPlaneColor, Byte, Provides a mapping between the values in the CFAPattern tag and the plane numbers in LinearRaw space. This is a required tag for non-RGB CFA images. -CFALayout, 50711, 0xc617, Image, Exif.Image.CFALayout, Short, Describes the spatial layout of the CFA. -LinearizationTable, 50712, 0xc618, Image, Exif.Image.LinearizationTable, Short, Describes a lookup table that maps stored values into linear values. This tag is typically used to increase compression ratios by storing the raw data in a non-linear, more visually uniform space with fewer total encoding levels. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelRepeatDim, 50713, 0xc619, Image, Exif.Image.BlackLevelRepeatDim, Short, Specifies repeat pattern size for the BlackLevel tag. -BlackLevel, 50714, 0xc61a, Image, Exif.Image.BlackLevel, Rational, Specifies the zero light (a.k.a. thermal black or black current) encoding level, as a repeating pattern. The origin of this pattern is the top-left corner of the ActiveArea rectangle. The values are stored in row-column-sample scan order. -BlackLevelDeltaH, 50715, 0xc61b, Image, Exif.Image.BlackLevelDeltaH, SRational, If the zero light encoding level is a function of the image column, BlackLevelDeltaH specifies the difference between the zero light encoding level for each column and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelDeltaV, 50716, 0xc61c, Image, Exif.Image.BlackLevelDeltaV, SRational, If the zero light encoding level is a function of the image row, this tag specifies the difference between the zero light encoding level for each row and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -WhiteLevel, 50717, 0xc61d, Image, Exif.Image.WhiteLevel, Short, This tag specifies the fully saturated encoding level for the raw sample values. Saturation is caused either by the sensor itself becoming highly non-linear in response, or by the camera's analog to digital converter clipping. -DefaultScale, 50718, 0xc61e, Image, Exif.Image.DefaultScale, Rational, DefaultScale is required for cameras with non-square pixels. It specifies the default scale factors for each direction to convert the image to square pixels. Typically these factors are selected to approximately preserve total pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such as the Fujifilm SuperCCD, these two values should usually differ by a factor of 2.0. -DefaultCropOrigin, 50719, 0xc61f, Image, Exif.Image.DefaultCropOrigin, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropOrigin specifies the origin of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied), relative to the top-left corner of the ActiveArea rectangle. -DefaultCropSize, 50720, 0xc620, Image, Exif.Image.DefaultCropSize, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropSize specifies the size of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied). -ColorMatrix1, 50721, 0xc621, Image, Exif.Image.ColorMatrix1, SRational, ColorMatrix1 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the first calibration illuminant. The matrix values are stored in row scan order. The ColorMatrix1 tag is required for all non-monochrome DNG files. -ColorMatrix2, 50722, 0xc622, Image, Exif.Image.ColorMatrix2, SRational, ColorMatrix2 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the second calibration illuminant. The matrix values are stored in row scan order. -CameraCalibration1, 50723, 0xc623, Image, Exif.Image.CameraCalibration1, SRational, CameraClalibration1 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the first calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix1 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -CameraCalibration2, 50724, 0xc624, Image, Exif.Image.CameraCalibration2, SRational, CameraCalibration2 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the second calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix2 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -ReductionMatrix1, 50725, 0xc625, Image, Exif.Image.ReductionMatrix1, SRational, ReductionMatrix1 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the first calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -ReductionMatrix2, 50726, 0xc626, Image, Exif.Image.ReductionMatrix2, SRational, ReductionMatrix2 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the second calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -AnalogBalance, 50727, 0xc627, Image, Exif.Image.AnalogBalance, Rational, Normally the stored raw values are not white balanced, since any digital white balancing will reduce the dynamic range of the final image if the user decides to later adjust the white balance; however, if camera hardware is capable of white balancing the color channels before the signal is digitized, it can improve the dynamic range of the final image. AnalogBalance defines the gain, either analog (recommended) or digital (not recommended) that has been applied the stored raw values. -AsShotNeutral, 50728, 0xc628, Image, Exif.Image.AsShotNeutral, Short, Specifies the selected white balance at time of capture, encoded as the coordinates of a perfectly neutral color in linear reference space values. The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag. -AsShotWhiteXY, 50729, 0xc629, Image, Exif.Image.AsShotWhiteXY, Rational, Specifies the selected white balance at time of capture, encoded as x-y chromaticity coordinates. The inclusion of this tag precludes the inclusion of the AsShotNeutral tag. -BaselineExposure, 50730, 0xc62a, Image, Exif.Image.BaselineExposure, SRational, Camera models vary in the trade-off they make between highlight headroom and shadow noise. Some leave a significant amount of highlight headroom during a normal exposure. This allows significant negative exposure compensation to be applied during raw conversion, but also means normal exposures will contain more shadow noise. Other models leave less headroom during normal exposures. This allows for less negative exposure compensation, but results in lower shadow noise for normal exposures. Because of these differences, a raw converter needs to vary the zero point of its exposure compensation control from model to model. BaselineExposure specifies by how much (in EV units) to move the zero point. Positive values result in brighter default results, while negative values result in darker default results. -BaselineNoise, 50731, 0xc62b, Image, Exif.Image.BaselineNoise, Rational, Specifies the relative noise level of the camera model at a baseline ISO value of 100, compared to a reference camera model. Since noise levels tend to vary approximately with the square root of the ISO value, a raw converter can use this value, combined with the current ISO, to estimate the relative noise level of the current image. -BaselineSharpness, 50732, 0xc62c, Image, Exif.Image.BaselineSharpness, Rational, Specifies the relative amount of sharpening required for this camera model, compared to a reference camera model. Camera models vary in the strengths of their anti-aliasing filters. Cameras with weak or no filters require less sharpening than cameras with strong anti-aliasing filters. -BayerGreenSplit, 50733, 0xc62d, Image, Exif.Image.BayerGreenSplit, Long, Only applies to CFA images using a Bayer pattern filter array. This tag specifies, in arbitrary units, how closely the values of the green pixels in the blue/green rows track the values of the green pixels in the red/green rows. A value of zero means the two kinds of green pixels track closely, while a non-zero value means they sometimes diverge. The useful range for this tag is from 0 (no divergence) to about 5000 (quite large divergence). -LinearResponseLimit, 50734, 0xc62e, Image, Exif.Image.LinearResponseLimit, Rational, Some sensors have an unpredictable non-linearity in their response as they near the upper limit of their encoding range. This non-linearity results in color shifts in the highlight areas of the resulting image unless the raw converter compensates for this effect. LinearResponseLimit specifies the fraction of the encoding range above which the response may become significantly non-linear. -CameraSerialNumber, 50735, 0xc62f, Image, Exif.Image.CameraSerialNumber, Ascii, CameraSerialNumber contains the serial number of the camera or camera body that captured the image. -LensInfo, 50736, 0xc630, Image, Exif.Image.LensInfo, Rational, Contains information about the lens that captured the image. If the minimum f-stops are unknown, they should be encoded as 0/0. -ChromaBlurRadius, 50737, 0xc631, Image, Exif.Image.ChromaBlurRadius, Rational, ChromaBlurRadius provides a hint to the DNG reader about how much chroma blur should be applied to the image. If this tag is omitted, the reader will use its default amount of chroma blurring. Normally this tag is only included for non-CFA images, since the amount of chroma blur required for mosaic images is highly dependent on the de-mosaic algorithm, in which case the DNG reader's default value is likely optimized for its particular de-mosaic algorithm. -AntiAliasStrength, 50738, 0xc632, Image, Exif.Image.AntiAliasStrength, Rational, Provides a hint to the DNG reader about how strong the camera's anti-alias filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is prone to aliasing artifacts with some subjects), while a value of 1.0 means a strong anti-alias filter (i.e., the camera almost never has aliasing artifacts). -ShadowScale, 50739, 0xc633, Image, Exif.Image.ShadowScale, SRational, This tag is used by Adobe Camera Raw to control the sensitivity of its 'Shadows' slider. -DNGPrivateData, 50740, 0xc634, Image, Exif.Image.DNGPrivateData, Byte, Provides a way for camera manufacturers to store private data in the DNG file for use by their own raw converters, and to have that data preserved by programs that edit DNG files. -MakerNoteSafety, 50741, 0xc635, Image, Exif.Image.MakerNoteSafety, Short, MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is safe to preserve along with the rest of the EXIF data. File browsers and other image management software processing an image with a preserved MakerNote should be aware that any thumbnail image embedded in the MakerNote may be stale, and may not reflect the current state of the full size image. -CalibrationIlluminant1, 50778, 0xc65a, Image, Exif.Image.CalibrationIlluminant1, Short, The illuminant used for the first set of color calibration tags (ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for this tag are the same as the legal values for the LightSource EXIF tag. -CalibrationIlluminant2, 50779, 0xc65b, Image, Exif.Image.CalibrationIlluminant2, Short, The illuminant used for an optional second set of color calibration tags (ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for this tag are the same as the legal values for the CalibrationIlluminant1 tag; however, if both are included, neither is allowed to have a value of 0 (unknown). -BestQualityScale, 50780, 0xc65c, Image, Exif.Image.BestQualityScale, Rational, For some cameras, the best possible image quality is not achieved by preserving the total pixel count during conversion. For example, Fujifilm SuperCCD images have maximum detail when their total pixel count is doubled. This tag specifies the amount by which the values of the DefaultScale tag need to be multiplied to achieve the best quality image size. -RawDataUniqueID, 50781, 0xc65d, Image, Exif.Image.RawDataUniqueID, Byte, This tag contains a 16-byte unique identifier for the raw image data in the DNG file. DNG readers can use this tag to recognize a particular raw image, even if the file's name or the metadata contained in the file has been changed. If a DNG writer creates such an identifier, it should do so using an algorithm that will ensure that it is very unlikely two different images will end up having the same identifier. -OriginalRawFileName, 50827, 0xc68b, Image, Exif.Image.OriginalRawFileName, Byte, If the DNG file was converted from a non-DNG raw file, then this tag contains the file name of that original raw file. -OriginalRawFileData, 50828, 0xc68c, Image, Exif.Image.OriginalRawFileData, Undefined, If the DNG file was converted from a non-DNG raw file, then this tag contains the compressed contents of that original raw file. The contents of this tag always use the big-endian byte order. The tag contains a sequence of data blocks. Future versions of the DNG specification may define additional data blocks, so DNG readers should ignore extra bytes when parsing this tag. DNG readers should also detect the case where data blocks are missing from the end of the sequence, and should assume a default value for all the missing blocks. There are no padding or alignment bytes between data blocks. -ActiveArea, 50829, 0xc68d, Image, Exif.Image.ActiveArea, Short, This rectangle defines the active (non-masked) pixels of the sensor. The order of the rectangle coordinates is: top, left, bottom, right. -MaskedAreas, 50830, 0xc68e, Image, Exif.Image.MaskedAreas, Short, This tag contains a list of non-overlapping rectangle coordinates of fully masked pixels, which can be optionally used by DNG readers to measure the black encoding level. The order of each rectangle's coordinates is: top, left, bottom, right. If the raw image data has already had its black encoding level subtracted, then this tag should not be used, since the masked pixels are no longer useful. -AsShotICCProfile, 50831, 0xc68f, Image, Exif.Image.AsShotICCProfile, Undefined, This tag contains an ICC profile that, in conjunction with the AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to specify a default color rendering from camera color space coordinates (linear reference values) into the ICC profile connection space. The ICC profile connection space is an output referred colorimetric space, whereas the other color calibration tags in DNG specify a conversion into a scene referred colorimetric space. This means that the rendering in this profile should include any desired tone and gamut mapping needed to convert between scene referred values and output referred values. -AsShotPreProfileMatrix, 50832, 0xc690, Image, Exif.Image.AsShotPreProfileMatrix, SRational, This tag is used in conjunction with the AsShotICCProfile tag. It specifies a matrix that should be applied to the camera color space coordinates before processing the values through the ICC profile specified in the AsShotICCProfile tag. The matrix is stored in the row scan order. If ColorPlanes is greater than three, then this matrix can (but is not required to) reduce the dimensionality of the color data down to three components, in which case the AsShotICCProfile should have three rather than ColorPlanes input components. -CurrentICCProfile, 50833, 0xc691, Image, Exif.Image.CurrentICCProfile, Undefined, This tag is used in conjunction with the CurrentPreProfileMatrix tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -CurrentPreProfileMatrix, 50834, 0xc692, Image, Exif.Image.CurrentPreProfileMatrix, SRational, This tag is used in conjunction with the CurrentICCProfile tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -ExposureTime, 33434, 0x829a, Photo, Exif.Photo.ExposureTime, Rational, Exposure time, given in seconds (sec). -FNumber, 33437, 0x829d, Photo, Exif.Photo.FNumber, Rational, The F number. -ExposureProgram, 34850, 0x8822, Photo, Exif.Photo.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Photo, Exif.Photo.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. The tag value is an ASCII string compatible with the standard developed by the ASTM Technical Committee. -ISOSpeedRatings, 34855, 0x8827, Photo, Exif.Photo.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Photo, Exif.Photo.OECF, Undefined, Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO 14524. is the relationship between the camera optical input and the image values. -ExifVersion, 36864, 0x9000, Photo, Exif.Photo.ExifVersion, Undefined, The version of this standard supported. Nonexistence of this field is taken to mean nonconformance to the standard. -DateTimeOriginal, 36867, 0x9003, Photo, Exif.Photo.DateTimeOriginal, Ascii, The date and time when the original image data was generated. For a digital still camera the date and time the picture was taken are recorded. -DateTimeDigitized, 36868, 0x9004, Photo, Exif.Photo.DateTimeDigitized, Ascii, The date and time when the image was stored as digital data. -ComponentsConfiguration, 37121, 0x9101, Photo, Exif.Photo.ComponentsConfiguration, Undefined, Information specific to compressed data. The channels of each component are arranged in order from the 1st component to the 4th. For uncompressed data the data arrangement is given in the tag. However, since can only express the order of Y, Cb and Cr, this tag is provided for cases when compressed data uses components other than Y, Cb, and Cr and to enable support of other sequences. -CompressedBitsPerPixel, 37122, 0x9102, Photo, Exif.Photo.CompressedBitsPerPixel, Rational, Information specific to compressed data. The compression mode used for a compressed image is indicated in unit bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Photo, Exif.Photo.ShutterSpeedValue, SRational, Shutter speed. The unit is the APEX (Additive System of Photographic Exposure) setting. -ApertureValue, 37378, 0x9202, Photo, Exif.Photo.ApertureValue, Rational, The lens aperture. The unit is the APEX value. -BrightnessValue, 37379, 0x9203, Photo, Exif.Photo.BrightnessValue, SRational, The value of brightness. The unit is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -ExposureBiasValue, 37380, 0x9204, Photo, Exif.Photo.ExposureBiasValue, SRational, The exposure bias. The units is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -MaxApertureValue, 37381, 0x9205, Photo, Exif.Photo.MaxApertureValue, Rational, The smallest F number of the lens. The unit is the APEX value. Ordinarily it is given in the range of 00.00 to 99.99, but it is not limited to this range. -SubjectDistance, 37382, 0x9206, Photo, Exif.Photo.SubjectDistance, Rational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Photo, Exif.Photo.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Photo, Exif.Photo.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Photo, Exif.Photo.Flash, Short, This tag is recorded when an image is taken using a strobe light (flash). -FocalLength, 37386, 0x920a, Photo, Exif.Photo.FocalLength, Rational, The actual focal length of the lens, in mm. Conversion is not made to the focal length of a 35 mm film camera. -SubjectArea, 37396, 0x9214, Photo, Exif.Photo.SubjectArea, Short, This tag indicates the location and area of the main subject in the overall scene. -MakerNote, 37500, 0x927c, Photo, Exif.Photo.MakerNote, Undefined, A tag for manufacturers of Exif writers to record any desired information. The contents are up to the manufacturer. -UserComment, 37510, 0x9286, Photo, Exif.Photo.UserComment, Comment, A tag for Exif users to write keywords or comments on the image besides those in , and without the character code limitations of the tag. -SubSecTime, 37520, 0x9290, Photo, Exif.Photo.SubSecTime, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeOriginal, 37521, 0x9291, Photo, Exif.Photo.SubSecTimeOriginal, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeDigitized, 37522, 0x9292, Photo, Exif.Photo.SubSecTimeDigitized, Ascii, A tag used to record fractions of seconds for the tag. -FlashpixVersion, 40960, 0xa000, Photo, Exif.Photo.FlashpixVersion, Undefined, The FlashPix format version supported by a FPXR file. -ColorSpace, 40961, 0xa001, Photo, Exif.Photo.ColorSpace, Short, The color space information tag is always recorded as the color space specifier. Normally sRGB is used to define the color space based on the PC monitor conditions and environment. If a color space other than sRGB is used, Uncalibrated is set. Image data recorded as Uncalibrated can be treated as sRGB when it is converted to FlashPix. -PixelXDimension, 40962, 0xa002, Photo, Exif.Photo.PixelXDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid width of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. -PixelYDimension, 40963, 0xa003, Photo, Exif.Photo.PixelYDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid height of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. Since data padding is unnecessary in the vertical direction, the number of lines recorded in this valid image height tag will in fact be the same as that recorded in the SOF. -RelatedSoundFile, 40964, 0xa004, Photo, Exif.Photo.RelatedSoundFile, Ascii, This tag is used to record the name of an audio file related to the image data. The only relational information recorded here is the Exif audio file name and extension (an ASCII string consisting of 8 characters + '.' + 3 characters). The path is not recorded. -InteroperabilityTag, 40965, 0xa005, Photo, Exif.Photo.InteroperabilityTag, Long, Interoperability IFD is composed of tags which stores the information to ensure the Interoperability and pointed by the following tag located in Exif IFD. The Interoperability structure of Interoperability IFD is the same as TIFF defined IFD structure but does not contain the image data characteristically compared with normal TIFF IFD. -FlashEnergy, 41483, 0xa20b, Photo, Exif.Photo.FlashEnergy, Rational, Indicates the strobe energy at the time the image is captured, as measured in Beam Candle Power Seconds (BCPS). -SpatialFrequencyResponse, 41484, 0xa20c, Photo, Exif.Photo.SpatialFrequencyResponse, Undefined, This tag records the camera or input device spatial frequency table and SFR values in the direction of image width, image height, and diagonal direction, as specified in ISO 12233. -FocalPlaneXResolution, 41486, 0xa20e, Photo, Exif.Photo.FocalPlaneXResolution, Rational, Indicates the number of pixels in the image width (X) direction per on the camera focal plane. -FocalPlaneYResolution, 41487, 0xa20f, Photo, Exif.Photo.FocalPlaneYResolution, Rational, Indicates the number of pixels in the image height (V) direction per on the camera focal plane. -FocalPlaneResolutionUnit, 41488, 0xa210, Photo, Exif.Photo.FocalPlaneResolutionUnit, Short, Indicates the unit for measuring and . This value is the same as the . -SubjectLocation, 41492, 0xa214, Photo, Exif.Photo.SubjectLocation, Short, Indicates the location of the main subject in the scene. The value of this tag represents the pixel at the center of the main subject relative to the left edge, prior to rotation processing as per the tag. The first value indicates the X column number and second indicates the Y row number. -ExposureIndex, 41493, 0xa215, Photo, Exif.Photo.ExposureIndex, Rational, Indicates the exposure index selected on the camera or input device at the time the image is captured. -SensingMethod, 41495, 0xa217, Photo, Exif.Photo.SensingMethod, Short, Indicates the image sensor type on the camera or input device. -FileSource, 41728, 0xa300, Photo, Exif.Photo.FileSource, Undefined, Indicates the image source. If a DSC recorded the image, this tag value of this tag always be set to 3, indicating that the image was recorded on a DSC. -SceneType, 41729, 0xa301, Photo, Exif.Photo.SceneType, Undefined, Indicates the type of scene. If a DSC recorded the image, this tag value must always be set to 1, indicating that the image was directly photographed. -CFAPattern, 41730, 0xa302, Photo, Exif.Photo.CFAPattern, Undefined, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods. -CustomRendered, 41985, 0xa401, Photo, Exif.Photo.CustomRendered, Short, This tag indicates the use of special processing on image data, such as rendering geared to output. When special processing is performed, the reader is expected to disable or minimize any further processing. -ExposureMode, 41986, 0xa402, Photo, Exif.Photo.ExposureMode, Short, This tag indicates the exposure mode set when the image was shot. In auto-bracketing mode, the camera shoots a series of frames of the same scene at different exposure settings. -WhiteBalance, 41987, 0xa403, Photo, Exif.Photo.WhiteBalance, Short, This tag indicates the white balance mode set when the image was shot. -DigitalZoomRatio, 41988, 0xa404, Photo, Exif.Photo.DigitalZoomRatio, Rational, This tag indicates the digital zoom ratio when the image was shot. If the numerator of the recorded value is 0, this indicates that digital zoom was not used. -FocalLengthIn35mmFilm, 41989, 0xa405, Photo, Exif.Photo.FocalLengthIn35mmFilm, Short, This tag indicates the equivalent focal length assuming a 35mm film camera, in mm. A value of 0 means the focal length is unknown. Note that this tag differs from the tag. -SceneCaptureType, 41990, 0xa406, Photo, Exif.Photo.SceneCaptureType, Short, This tag indicates the type of scene that was shot. It can also be used to record the mode in which the image was shot. Note that this differs from the tag. -GainControl, 41991, 0xa407, Photo, Exif.Photo.GainControl, Short, This tag indicates the degree of overall image gain adjustment. -Contrast, 41992, 0xa408, Photo, Exif.Photo.Contrast, Short, This tag indicates the direction of contrast processing applied by the camera when the image was shot. -Saturation, 41993, 0xa409, Photo, Exif.Photo.Saturation, Short, This tag indicates the direction of saturation processing applied by the camera when the image was shot. -Sharpness, 41994, 0xa40a, Photo, Exif.Photo.Sharpness, Short, This tag indicates the direction of sharpness processing applied by the camera when the image was shot. -DeviceSettingDescription, 41995, 0xa40b, Photo, Exif.Photo.DeviceSettingDescription, Undefined, This tag indicates information on the picture-taking conditions of a particular camera model. The tag is used only to indicate the picture-taking conditions in the reader. -SubjectDistanceRange, 41996, 0xa40c, Photo, Exif.Photo.SubjectDistanceRange, Short, This tag indicates the distance to the subject. -ImageUniqueID, 42016, 0xa420, Photo, Exif.Photo.ImageUniqueID, Ascii, This tag indicates an identifier assigned uniquely to each image. It is recorded as an ASCII string equivalent to hexadecimal notation and 128-bit fixed length. -InteroperabilityIndex, 1, 0x0001, Iop, Exif.Iop.InteroperabilityIndex, Ascii, Indicates the identification of the Interoperability rule. Use "R98" for stating ExifR98 Rules. Four bytes used including the termination code (NULL). see the separate volume of Recommended Exif Interoperability Rules (ExifR98) for other tags used for ExifR98. -InteroperabilityVersion, 2, 0x0002, Iop, Exif.Iop.InteroperabilityVersion, Undefined, Interoperability version -RelatedImageFileFormat, 4096, 0x1000, Iop, Exif.Iop.RelatedImageFileFormat, Ascii, File format of image file -RelatedImageWidth, 4097, 0x1001, Iop, Exif.Iop.RelatedImageWidth, Long, Image width -RelatedImageLength, 4098, 0x1002, Iop, Exif.Iop.RelatedImageLength, Long, Image height -GPSVersionID, 0, 0x0000, GPSInfo, Exif.GPSInfo.GPSVersionID, Byte, Indicates the version of . The version is given as 2.0.0.0. This tag is mandatory when tag is present. (Note: The tag is given in bytes, unlike the tag. When the version is 2.0.0.0, the tag value is 02000000.H). -GPSLatitudeRef, 1, 0x0001, GPSInfo, Exif.GPSInfo.GPSLatitudeRef, Ascii, Indicates whether the latitude is north or south latitude. The ASCII value 'N' indicates north latitude, and 'S' is south latitude. -GPSLatitude, 2, 0x0002, GPSInfo, Exif.GPSInfo.GPSLatitude, Rational, Indicates the latitude. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is dd/1,mmmm/100,0/1. -GPSLongitudeRef, 3, 0x0003, GPSInfo, Exif.GPSInfo.GPSLongitudeRef, Ascii, Indicates whether the longitude is east or west longitude. ASCII 'E' indicates east longitude, and 'W' is west longitude. -GPSLongitude, 4, 0x0004, GPSInfo, Exif.GPSInfo.GPSLongitude, Rational, Indicates the longitude. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is ddd/1,mmmm/100,0/1. -GPSAltitudeRef, 5, 0x0005, GPSInfo, Exif.GPSInfo.GPSAltitudeRef, Byte, Indicates the altitude used as the reference altitude. If the reference is sea level and the altitude is above sea level, 0 is given. If the altitude is below sea level, a value of 1 is given and the altitude is indicated as an absolute value in the GSPAltitude tag. The reference unit is meters. Note that this tag is BYTE type, unlike other reference tags. -GPSAltitude, 6, 0x0006, GPSInfo, Exif.GPSInfo.GPSAltitude, Rational, Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is expressed as one RATIONAL value. The reference unit is meters. -GPSTimeStamp, 7, 0x0007, GPSInfo, Exif.GPSInfo.GPSTimeStamp, Rational, Indicates the time as UTC (Coordinated Universal Time). is expressed as three RATIONAL values giving the hour, minute, and second (atomic clock). -GPSSatellites, 8, 0x0008, GPSInfo, Exif.GPSInfo.GPSSatellites, Ascii, Indicates the GPS satellites used for measurements. This tag can be used to describe the number of satellites, their ID number, angle of elevation, azimuth, SNR and other information in ASCII notation. The format is not specified. If the GPS receiver is incapable of taking measurements, value of the tag is set to NULL. -GPSStatus, 9, 0x0009, GPSInfo, Exif.GPSInfo.GPSStatus, Ascii, Indicates the status of the GPS receiver when the image is recorded. "A" means measurement is in progress, and "V" means the measurement is Interoperability. -GPSMeasureMode, 10, 0x000a, GPSInfo, Exif.GPSInfo.GPSMeasureMode, Ascii, Indicates the GPS measurement mode. "2" means two-dimensional measurement and "3" means three-dimensional measurement is in progress. -GPSDOP, 11, 0x000b, GPSInfo, Exif.GPSInfo.GPSDOP, Rational, Indicates the GPS DOP (data degree of precision). An HDOP value is written during two-dimensional measurement, and PDOP during three-dimensional measurement. -GPSSpeedRef, 12, 0x000c, GPSInfo, Exif.GPSInfo.GPSSpeedRef, Ascii, Indicates the unit used to express the GPS receiver speed of movement. "K" "M" and "N" represents kilometers per hour, miles per hour, and knots. -GPSSpeed, 13, 0x000d, GPSInfo, Exif.GPSInfo.GPSSpeed, Rational, Indicates the speed of GPS receiver movement. -GPSTrackRef, 14, 0x000e, GPSInfo, Exif.GPSInfo.GPSTrackRef, Ascii, Indicates the reference for giving the direction of GPS receiver movement. "T" denotes true direction and "M" is magnetic direction. -GPSTrack, 15, 0x000f, GPSInfo, Exif.GPSInfo.GPSTrack, Rational, Indicates the direction of GPS receiver movement. The range of values is from 0.00 to 359.99. -GPSImgDirectionRef, 16, 0x0010, GPSInfo, Exif.GPSInfo.GPSImgDirectionRef, Ascii, Indicates the reference for giving the direction of the image when it is captured. "T" denotes true direction and "M" is magnetic direction. -GPSImgDirection, 17, 0x0011, GPSInfo, Exif.GPSInfo.GPSImgDirection, Rational, Indicates the direction of the image when it was captured. The range of values is from 0.00 to 359.99. -GPSMapDatum, 18, 0x0012, GPSInfo, Exif.GPSInfo.GPSMapDatum, Ascii, Indicates the geodetic survey data used by the GPS receiver. If the survey data is restricted to Japan, the value of this tag is "TOKYO" or "WGS-84". -GPSDestLatitudeRef, 19, 0x0013, GPSInfo, Exif.GPSInfo.GPSDestLatitudeRef, Ascii, Indicates whether the latitude of the destination point is north or south latitude. The ASCII value "N" indicates north latitude, and "S" is south latitude. -GPSDestLatitude, 20, 0x0014, GPSInfo, Exif.GPSInfo.GPSDestLatitude, Rational, Indicates the latitude of the destination point. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If latitude is expressed as degrees, minutes and seconds, a typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be dd/1,mmmm/100,0/1. -GPSDestLongitudeRef, 21, 0x0015, GPSInfo, Exif.GPSInfo.GPSDestLongitudeRef, Ascii, Indicates whether the longitude of the destination point is east or west longitude. ASCII "E" indicates east longitude, and "W" is west longitude. -GPSDestLongitude, 22, 0x0016, GPSInfo, Exif.GPSInfo.GPSDestLongitude, Rational, Indicates the longitude of the destination point. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If longitude is expressed as degrees, minutes and seconds, a typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be ddd/1,mmmm/100,0/1. -GPSDestBearingRef, 23, 0x0017, GPSInfo, Exif.GPSInfo.GPSDestBearingRef, Ascii, Indicates the reference used for giving the bearing to the destination point. "T" denotes true direction and "M" is magnetic direction. -GPSDestBearing, 24, 0x0018, GPSInfo, Exif.GPSInfo.GPSDestBearing, Rational, Indicates the bearing to the destination point. The range of values is from 0.00 to 359.99. -GPSDestDistanceRef, 25, 0x0019, GPSInfo, Exif.GPSInfo.GPSDestDistanceRef, Ascii, Indicates the unit used to express the distance to the destination point. "K", "M" and "N" represent kilometers, miles and knots. -GPSDestDistance, 26, 0x001a, GPSInfo, Exif.GPSInfo.GPSDestDistance, Rational, Indicates the distance to the destination point. -GPSProcessingMethod, 27, 0x001b, GPSInfo, Exif.GPSInfo.GPSProcessingMethod, Undefined, A character string recording the name of the method used for location finding. The first byte indicates the character code used, and this is followed by the name of the method. -GPSAreaInformation, 28, 0x001c, GPSInfo, Exif.GPSInfo.GPSAreaInformation, Undefined, A character string recording the name of the GPS area. The first byte indicates the character code used, and this is followed by the name of the GPS area. -GPSDateStamp, 29, 0x001d, GPSInfo, Exif.GPSInfo.GPSDateStamp, Ascii, A character string recording date and time information relative to UTC (Coordinated Universal Time). The format is "YYYY:MM:DD.". -GPSDifferential, 30, 0x001e, GPSInfo, Exif.GPSInfo.GPSDifferential, Short, Indicates whether differential correction is applied to the GPS receiver. -Usage: tiff-test\Debug\tiff-test.exe file -Usage: tiff-test\DebugDLL\tiff-test.exe file -Usage: tiff-test\Release\tiff-test.exe file -Usage: tiff-test\ReleaseDLL\tiff-test.exe file - /usr/lib /usr lib - /usr/ / usr - usr . usr - / / - . . . - .. . .. - /// / - /usr/.emacs /usr .emacs - /usr/.emacs/ /usr .emacs - /usr/.emacs// /usr .emacs - usr/.emacs usr .emacs - .emacs . .emacs - .emacs.gz . .emacs.gz .gz - /tmp/image.jpg /tmp image.jpg .jpg -/tmp/.image.jpg /tmp .image.jpg .jpg - /image.jpg / image.jpg .jpg - image.jpg . image.jpg .jpg - image.jpg// . image.jpg .jpg - /////image.jpg / image.jpg .jpg - /foo.bar/image /foo.bar image -/foo.bar/images.tar.gz /foo.bar images.tar.gz .gz -d:\foo.bar\images.tar.gz d:\foo.bar images.tar.gz .gz - /usr/lib /usr lib - /usr/ / usr - usr . usr - / / - . . . - .. . .. - /// / - /usr/.emacs /usr .emacs - /usr/.emacs/ /usr .emacs - /usr/.emacs// /usr .emacs - usr/.emacs usr .emacs - .emacs . .emacs - .emacs.gz . .emacs.gz .gz - /tmp/image.jpg /tmp image.jpg .jpg -/tmp/.image.jpg /tmp .image.jpg .jpg - /image.jpg / image.jpg .jpg - image.jpg . image.jpg .jpg - image.jpg// . image.jpg .jpg - /////image.jpg / image.jpg .jpg - /foo.bar/image /foo.bar image -/foo.bar/images.tar.gz /foo.bar images.tar.gz .gz -d:\foo.bar\images.tar.gz d:\foo.bar images.tar.gz .gz - /usr/lib /usr lib - /usr/ / usr - usr . usr - / / - . . . - .. . .. - /// / - /usr/.emacs /usr .emacs - /usr/.emacs/ /usr .emacs - /usr/.emacs// /usr .emacs - usr/.emacs usr .emacs - .emacs . .emacs - .emacs.gz . .emacs.gz .gz - /tmp/image.jpg /tmp image.jpg .jpg -/tmp/.image.jpg /tmp .image.jpg .jpg - /image.jpg / image.jpg .jpg - image.jpg . image.jpg .jpg - image.jpg// . image.jpg .jpg - /////image.jpg / image.jpg .jpg - /foo.bar/image /foo.bar image -/foo.bar/images.tar.gz /foo.bar images.tar.gz .gz -d:\foo.bar\images.tar.gz d:\foo.bar images.tar.gz .gz - /usr/lib /usr lib - /usr/ / usr - usr . usr - / / - . . . - .. . .. - /// / - /usr/.emacs /usr .emacs - /usr/.emacs/ /usr .emacs - /usr/.emacs// /usr .emacs - usr/.emacs usr .emacs - .emacs . .emacs - .emacs.gz . .emacs.gz .gz - /tmp/image.jpg /tmp image.jpg .jpg -/tmp/.image.jpg /tmp .image.jpg .jpg - /image.jpg / image.jpg .jpg - image.jpg . image.jpg .jpg - image.jpg// . image.jpg .jpg - /////image.jpg / image.jpg .jpg - /foo.bar/image /foo.bar image -/foo.bar/images.tar.gz /foo.bar images.tar.gz .gz -d:\foo.bar\images.tar.gz d:\foo.bar images.tar.gz .gz -Usage: write-test file case - -where case is an integer between 1 and 11 -Usage: write-test file case - -where case is an integer between 1 and 11 -Usage: write-test file case - -where case is an integer between 1 and 11 -Usage: write-test file case - -where case is an integer between 1 and 11 -Usage: write2-test\Debug\write2-test.exe file -Usage: write2-test\DebugDLL\write2-test.exe file -Usage: write2-test\Release\write2-test.exe file -Usage: write2-test\ReleaseDLL\write2-test.exe file -Usage: xmpparse\Debug\xmpparse.exe file -Usage: xmpparse\DebugDLL\xmpparse.exe file -Usage: xmpparse\Release\xmpparse.exe file -Usage: xmpparse\ReleaseDLL\xmpparse.exe file -Usage: xmpparser-test\Debug\xmpparser-test.exe file -Usage: xmpparser-test\DebugDLL\xmpparser-test.exe file -Usage: xmpparser-test\Release\xmpparser-test.exe file -Usage: xmpparser-test\ReleaseDLL\xmpparser-test.exe file -Xmp.dc.source XmpText 13 xmpsample.cpp -Xmp.dc.subject XmpBag 2 Palmtree, Rubbertree -Xmp.dc.title LangAlt 2 lang="de-DE" Sonnenuntergang am Strand, lang="en-US" Sunset on the beach -Xmp.dc.one XmpText 2 -1 -Xmp.dc.two XmpText 6 3.1415 -Xmp.dc.three XmpText 3 5/7 -Xmp.dc.four XmpText 3 255 -Xmp.dc.five XmpText 3 256 -Xmp.dc.six XmpText 5 False -Xmp.dc.seven XmpText 5 Seven -Xmp.dc.format XmpText 10 image/jpeg -Xmp.dc.creator XmpSeq 3 1) The first creator, 2) The second creator, 3) And another one -Xmp.dc.description LangAlt 2 lang="x-default" Hello, World, lang="de-DE" Hallo, Welt -Xmp.tiff.ImageDescription LangAlt 2 lang="x-default" TIFF image description, lang="de-DE" TIFF Bildbeschreibung -Xmp.ns.myProperty XmpText 7 myValue -Xmp.xmpDM.videoFrameSize/stDim:w XmpText 2 16 -Xmp.xmpDM.videoFrameSize/stDim:h XmpText 1 9 -Xmp.xmpDM.videoFrameSize/stDim:unit XmpText 4 inch -Xmp.dc.publisher XmpBag 1 James Bond -Xmp.dc.publisher[1]/?ns:role XmpText 12 secret agent -Xmp.dc.creator[2]/?ns:role XmpText 10 programmer -Xmp.xmpBJ.JobRef XmpText 0 type="Bag" -Xmp.xmpBJ.JobRef[1]/stJob:name XmpText 14 Birthday party -Xmp.xmpBJ.JobRef[1]/stJob:role XmpText 12 Photographer -Xmp.xmpBJ.JobRef[2]/stJob:name XmpText 16 Wedding ceremony -Xmp.xmpBJ.JobRef[2]/stJob:role XmpText 8 Best man - - - - - - - Palmtree - Rubbertree - - - - - Sonnenuntergang am Strand - Sunset on the beach - - - - - 1) The first creator - - 2) The second creator - programmer - - 3) And another one - - - - - Hello, World - Hallo, Welt - - - - - - James Bond - secret agent - - - - - - TIFF image description - TIFF Bildbeschreibung - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Xmp.dc.source XmpText 13 xmpsample.cpp -Xmp.dc.subject XmpBag 2 Palmtree, Rubbertree -Xmp.dc.title LangAlt 2 lang="de-DE" Sonnenuntergang am Strand, lang="en-US" Sunset on the beach -Xmp.dc.one XmpText 2 -1 -Xmp.dc.two XmpText 6 3.1415 -Xmp.dc.three XmpText 3 5/7 -Xmp.dc.four XmpText 3 255 -Xmp.dc.five XmpText 3 256 -Xmp.dc.six XmpText 5 False -Xmp.dc.seven XmpText 5 Seven -Xmp.dc.format XmpText 10 image/jpeg -Xmp.dc.creator XmpSeq 3 1) The first creator, 2) The second creator, 3) And another one -Xmp.dc.description LangAlt 2 lang="x-default" Hello, World, lang="de-DE" Hallo, Welt -Xmp.tiff.ImageDescription LangAlt 2 lang="x-default" TIFF image description, lang="de-DE" TIFF Bildbeschreibung -Xmp.ns.myProperty XmpText 7 myValue -Xmp.xmpDM.videoFrameSize/stDim:w XmpText 2 16 -Xmp.xmpDM.videoFrameSize/stDim:h XmpText 1 9 -Xmp.xmpDM.videoFrameSize/stDim:unit XmpText 4 inch -Xmp.dc.publisher XmpBag 1 James Bond -Xmp.dc.publisher[1]/?ns:role XmpText 12 secret agent -Xmp.dc.creator[2]/?ns:role XmpText 10 programmer -Xmp.xmpBJ.JobRef XmpText 0 type="Bag" -Xmp.xmpBJ.JobRef[1]/stJob:name XmpText 14 Birthday party -Xmp.xmpBJ.JobRef[1]/stJob:role XmpText 12 Photographer -Xmp.xmpBJ.JobRef[2]/stJob:name XmpText 16 Wedding ceremony -Xmp.xmpBJ.JobRef[2]/stJob:role XmpText 8 Best man - - - - - - - Palmtree - Rubbertree - - - - - Sonnenuntergang am Strand - Sunset on the beach - - - - - 1) The first creator - - 2) The second creator - programmer - - 3) And another one - - - - - Hello, World - Hallo, Welt - - - - - - James Bond - secret agent - - - - - - TIFF image description - TIFF Bildbeschreibung - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Xmp.dc.source XmpText 13 xmpsample.cpp -Xmp.dc.subject XmpBag 2 Palmtree, Rubbertree -Xmp.dc.title LangAlt 2 lang="de-DE" Sonnenuntergang am Strand, lang="en-US" Sunset on the beach -Xmp.dc.one XmpText 2 -1 -Xmp.dc.two XmpText 6 3.1415 -Xmp.dc.three XmpText 3 5/7 -Xmp.dc.four XmpText 3 255 -Xmp.dc.five XmpText 3 256 -Xmp.dc.six XmpText 5 False -Xmp.dc.seven XmpText 5 Seven -Xmp.dc.format XmpText 10 image/jpeg -Xmp.dc.creator XmpSeq 3 1) The first creator, 2) The second creator, 3) And another one -Xmp.dc.description LangAlt 2 lang="x-default" Hello, World, lang="de-DE" Hallo, Welt -Xmp.tiff.ImageDescription LangAlt 2 lang="x-default" TIFF image description, lang="de-DE" TIFF Bildbeschreibung -Xmp.ns.myProperty XmpText 7 myValue -Xmp.xmpDM.videoFrameSize/stDim:w XmpText 2 16 -Xmp.xmpDM.videoFrameSize/stDim:h XmpText 1 9 -Xmp.xmpDM.videoFrameSize/stDim:unit XmpText 4 inch -Xmp.dc.publisher XmpBag 1 James Bond -Xmp.dc.publisher[1]/?ns:role XmpText 12 secret agent -Xmp.dc.creator[2]/?ns:role XmpText 10 programmer -Xmp.xmpBJ.JobRef XmpText 0 type="Bag" -Xmp.xmpBJ.JobRef[1]/stJob:name XmpText 14 Birthday party -Xmp.xmpBJ.JobRef[1]/stJob:role XmpText 12 Photographer -Xmp.xmpBJ.JobRef[2]/stJob:name XmpText 16 Wedding ceremony -Xmp.xmpBJ.JobRef[2]/stJob:role XmpText 8 Best man - - - - - - - Palmtree - Rubbertree - - - - - Sonnenuntergang am Strand - Sunset on the beach - - - - - 1) The first creator - - 2) The second creator - programmer - - 3) And another one - - - - - Hello, World - Hallo, Welt - - - - - - James Bond - secret agent - - - - - - TIFF image description - TIFF Bildbeschreibung - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Xmp.dc.source XmpText 13 xmpsample.cpp -Xmp.dc.subject XmpBag 2 Palmtree, Rubbertree -Xmp.dc.title LangAlt 2 lang="de-DE" Sonnenuntergang am Strand, lang="en-US" Sunset on the beach -Xmp.dc.one XmpText 2 -1 -Xmp.dc.two XmpText 6 3.1415 -Xmp.dc.three XmpText 3 5/7 -Xmp.dc.four XmpText 3 255 -Xmp.dc.five XmpText 3 256 -Xmp.dc.six XmpText 5 False -Xmp.dc.seven XmpText 5 Seven -Xmp.dc.format XmpText 10 image/jpeg -Xmp.dc.creator XmpSeq 3 1) The first creator, 2) The second creator, 3) And another one -Xmp.dc.description LangAlt 2 lang="x-default" Hello, World, lang="de-DE" Hallo, Welt -Xmp.tiff.ImageDescription LangAlt 2 lang="x-default" TIFF image description, lang="de-DE" TIFF Bildbeschreibung -Xmp.ns.myProperty XmpText 7 myValue -Xmp.xmpDM.videoFrameSize/stDim:w XmpText 2 16 -Xmp.xmpDM.videoFrameSize/stDim:h XmpText 1 9 -Xmp.xmpDM.videoFrameSize/stDim:unit XmpText 4 inch -Xmp.dc.publisher XmpBag 1 James Bond -Xmp.dc.publisher[1]/?ns:role XmpText 12 secret agent -Xmp.dc.creator[2]/?ns:role XmpText 10 programmer -Xmp.xmpBJ.JobRef XmpText 0 type="Bag" -Xmp.xmpBJ.JobRef[1]/stJob:name XmpText 14 Birthday party -Xmp.xmpBJ.JobRef[1]/stJob:role XmpText 12 Photographer -Xmp.xmpBJ.JobRef[2]/stJob:name XmpText 16 Wedding ceremony -Xmp.xmpBJ.JobRef[2]/stJob:role XmpText 8 Best man - - - - - - - Palmtree - Rubbertree - - - - - Sonnenuntergang am Strand - Sunset on the beach - - - - - 1) The first creator - - 2) The second creator - programmer - - 3) And another one - - - - - Hello, World - Hallo, Welt - - - - - - James Bond - secret agent - - - - - - TIFF image description - TIFF Bildbeschreibung - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Exif.Image.Make Ascii 6 Canon -Exif.Image.Model Ascii 22 Canon PowerShot S5 IS -Exif.Image.Orientation Short 1 top, left -Exif.Image.XResolution Rational 1 180 -Exif.Image.YResolution Rational 1 180 -Exif.Image.ResolutionUnit Short 1 inch -Exif.Image.DateTime Ascii 20 2008:09:06 14:34:23 -Exif.Image.YCbCrPositioning Short 1 Centered -Exif.Image.ExifTag Long 1 186 -Exif.Photo.ExposureTime Rational 1 1/500 s -Exif.Photo.FNumber Rational 1 F4 -Exif.Photo.ISOSpeedRatings Short 1 80 -Exif.Photo.ExifVersion Undefined 4 2.20 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeDigitized Ascii 20 2008:09:06 14:34:23 -Exif.Photo.ComponentsConfiguration Undefined 4 YCbCr -Exif.Photo.CompressedBitsPerPixel Rational 1 3 -Exif.Photo.ShutterSpeedValue SRational 1 1/501 s -Exif.Photo.ApertureValue Rational 1 F4 -Exif.Photo.ExposureBiasValue SRational 1 0 EV -Exif.Photo.MaxApertureValue Rational 1 F3.5 -Exif.Photo.MeteringMode Short 1 Multi-segment -Exif.Photo.Flash Short 1 No, compulsory -Exif.Photo.FocalLength Rational 1 21.3 mm -Exif.Photo.MakerNote Undefined 2382 (Binary value suppressed) -Exif.MakerNote.Offset Long 1 680 -Exif.MakerNote.ByteOrder Ascii 3 MM -Exif.CanonCs.Macro Short 1 Off -Exif.CanonCs.Selftimer Short 1 Off -Exif.CanonCs.Quality Short 1 Fine -Exif.CanonCs.FlashMode Short 1 Off -Exif.CanonCs.DriveMode Short 1 Single / timer -Exif.CanonCs.FocusMode Short 1 Single -Exif.CanonCs.ImageSize Short 1 Medium 1 -Exif.CanonCs.EasyMode Short 1 Manual -Exif.CanonCs.DigitalZoom Short 1 None -Exif.CanonCs.Contrast Short 1 Normal -Exif.CanonCs.Saturation Short 1 Normal -Exif.CanonCs.Sharpness Short 1 Normal -Exif.CanonCs.ISOSpeed Short 1 Auto -Exif.CanonCs.MeteringMode Short 1 Evaluative -Exif.CanonCs.FocusType Short 1 Auto -Exif.CanonCs.AFPoint Short 1 Manual AF point selection -Exif.CanonCs.ExposureProgram Short 1 Program (P) -Exif.CanonCs.LensType Short 1 (65535) -Exif.CanonCs.Lens Short 3 6.0 - 72.0 mm -Exif.CanonCs.MaxAperture Short 1 F3.6 -Exif.CanonCs.MinAperture Short 1 F8 -Exif.CanonCs.FlashActivity Short 1 Did not fire -Exif.CanonCs.FlashDetails Short 1 -Exif.CanonCs.FocusContinuous Short 1 Continuous -Exif.CanonCs.AESetting Short 1 Normal AE -Exif.CanonCs.ImageStabilization Short 1 On -Exif.CanonCs.DisplayAperture Short 1 0 -Exif.CanonCs.ZoomSourceWidth Short 1 3264 -Exif.CanonCs.ZoomTargetWidth Short 1 3264 -Exif.CanonCs.SpotMeteringMode Short 1 Center -Exif.CanonCs.PhotoEffect Short 1 (65535) -Exif.CanonCs.ManualFlashOutput Short 1 n/a -Exif.CanonCs.ColorTone Short 1 32767 -Exif.Canon.FocalLength Short 4 21.3 mm -Exif.CanonSi.ISOSpeed Short 1 100 -Exif.CanonSi.MeasuredEV Short 1 14.25 -Exif.CanonSi.TargetAperture Short 1 F4 -Exif.CanonSi.TargetShutterSpeed Short 1 1/501 s -Exif.CanonSi.WhiteBalance Short 1 Sunny -Exif.CanonSi.Sequence Short 1 0 -Exif.CanonSi.AFPointUsed Short 1 0 focus points; none used -Exif.CanonSi.FlashBias Short 1 0 EV -Exif.CanonSi.SubjectDistance Short 1 503 -Exif.CanonSi.ApertureValue Short 1 F4 -Exif.CanonSi.ShutterSpeedValue Short 1 1/546 s -Exif.CanonSi.MeasuredEV2 Short 1 -6.00 -Exif.Canon.ImageType Ascii 25 IMG:PowerShot S5 IS JPEG -Exif.Canon.FirmwareVersion Ascii 22 Firmware Version 1.01 -Exif.Canon.FileNumber Long 1 100-1904 -Exif.Canon.OwnerName Ascii 32 Robin Mills -Exif.Canon.CameraInfo Long 148 370 411 0 0 0 384 874 4294967255 0 0 0 0 577 889 4294967150 0 0 4294967287 0 0 1 0 0 0 9 10 888 888 888 384 1015 4294967148 0 0 888 888 0 0 1 3072 3072 3072 3072 3072 4294964224 4294964224 4294964224 4294964224 4294964224 0 4294964224 4294967287 0 0 0 0 0 0 0 0 0 0 164 1024 1024 40 94 0 0 0 0 0 0 525 0 40 94 0 0 3 1 0 0 921 1027 1024 1280 0 40 97 10 881 1646 1711 881 1 1014 384 888 659 4294967148 2 128 1 0 0 0 0 7532 5 0 0 0 0 0 0 7819 8252 8279 128 1 0 4294961112 3 1 7471 0 0 0 0 0 0 0 0 5345 1088 245 446 100 196 44 4091 4091 1 1 25 8 2400605383 -Exif.Canon.ModelID Long 1 PowerShot S5 IS -Exif.Canon.ThumbnailImageValidArea Short 4 0 0 0 0 -Exif.Canon.SuperMacro Short 1 Off -Exif.Canon.AFInfo Short 48 96 2 9 1 2592 1944 1088 245 196 0 0 0 0 0 0 0 0 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -Exif.Photo.UserComment Undefined 264 (Binary value suppressed) -Exif.Photo.FlashpixVersion Undefined 4 1.00 -Exif.Photo.ColorSpace Short 1 sRGB -Exif.Photo.PixelXDimension Short 1 2592 -Exif.Photo.PixelYDimension Short 1 1944 -Exif.Photo.InteroperabilityTag Long 1 3350 -Exif.Iop.InteroperabilityIndex Ascii 4 R98 -Exif.Iop.InteroperabilityVersion Undefined 4 1.00 -Exif.Iop.RelatedImageWidth Short 1 2592 -Exif.Iop.RelatedImageLength Short 1 1944 -Exif.Photo.FocalPlaneXResolution Rational 1 11520 -Exif.Photo.FocalPlaneYResolution Rational 1 11503 -Exif.Photo.FocalPlaneResolutionUnit Short 1 inch -Exif.Photo.SensingMethod Short 1 One-chip color area -Exif.Photo.FileSource Undefined 1 Digital still camera -Exif.Photo.CustomRendered Short 1 Normal process -Exif.Photo.ExposureMode Short 1 Auto -Exif.Photo.WhiteBalance Short 1 Manual -Exif.Photo.DigitalZoomRatio Rational 1 1.0 -Exif.Photo.SceneCaptureType Short 1 Standard -Exif.Thumbnail.Compression Short 1 JPEG (old-style) -Exif.Thumbnail.XResolution Rational 1 180 -Exif.Thumbnail.YResolution Rational 1 180 -Exif.Thumbnail.ResolutionUnit Short 1 inch -Exif.Thumbnail.JPEGInterchangeFormat Long 1 3498 -Exif.Thumbnail.JPEGInterchangeFormatLength Long 1 6714 -File name : test.png -File size : 135047 Bytes -MIME type : image/png -Image size : 200 x 150 -Camera make : Canon -Camera model : Canon PowerShot S5 IS -Image timestamp : 2008:09:06 14:34:23 -Image number : 100-1904 -Exposure time : 1/500 s -Aperture : F4 -Exposure bias : 0 EV -Flash : No, compulsory -Flash bias : 0 EV -Focal length : 21.3 mm -Subject distance: 503 -ISO speed : 80 -Exposure mode : Program (P) -Metering mode : Multi-segment -Macro mode : Off -Image quality : Fine -Exif Resolution : 2592 x 1944 -White balance : Sunny -Thumbnail : image/jpeg, 6714 Bytes -Copyright : -Exif comment : - -File name : test.tiff -File size : 194752 Bytes -MIME type : image/tiff -Image size : 282 x 212 -Camera make : SONY -Camera model : DSC-S600 -Image timestamp : -Image number : -Exposure time : -Aperture : -Exposure bias : -Flash : -Flash bias : -Focal length : -Subject distance: -ISO speed : -Exposure mode : -Metering mode : -Macro mode : -Image quality : -Exif Resolution : 282 x 212 -White balance : -Thumbnail : None -Copyright : -Exif comment : - -Exif.Image.Make Ascii 6 Canon -Exif.Image.Model Ascii 22 Canon PowerShot S5 IS -Exif.Image.Orientation Short 1 top, left -Exif.Image.XResolution Rational 1 180 -Exif.Image.YResolution Rational 1 180 -Exif.Image.ResolutionUnit Short 1 inch -Exif.Image.DateTime Ascii 20 2008:09:06 14:34:23 -Exif.Image.YCbCrPositioning Short 1 Centered -Exif.Image.ExifTag Long 1 186 -Exif.Photo.ExposureTime Rational 1 1/500 s -Exif.Photo.FNumber Rational 1 F4 -Exif.Photo.ISOSpeedRatings Short 1 80 -Exif.Photo.ExifVersion Undefined 4 2.20 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeDigitized Ascii 20 2008:09:06 14:34:23 -Exif.Photo.ComponentsConfiguration Undefined 4 YCbCr -Exif.Photo.CompressedBitsPerPixel Rational 1 3 -Exif.Photo.ShutterSpeedValue SRational 1 1/501 s -Exif.Photo.ApertureValue Rational 1 F4 -Exif.Photo.ExposureBiasValue SRational 1 0 EV -Exif.Photo.MaxApertureValue Rational 1 F3.5 -Exif.Photo.MeteringMode Short 1 Multi-segment -Exif.Photo.Flash Short 1 No, compulsory -Exif.Photo.FocalLength Rational 1 21.3 mm -Exif.Photo.MakerNote Undefined 2382 (Binary value suppressed) -Exif.MakerNote.Offset Long 1 680 -Exif.MakerNote.ByteOrder Ascii 3 MM -Exif.CanonCs.Macro Short 1 Off -Exif.CanonCs.Selftimer Short 1 Off -Exif.CanonCs.Quality Short 1 Fine -Exif.CanonCs.FlashMode Short 1 Off -Exif.CanonCs.DriveMode Short 1 Single / timer -Exif.CanonCs.FocusMode Short 1 Single -Exif.CanonCs.ImageSize Short 1 Medium 1 -Exif.CanonCs.EasyMode Short 1 Manual -Exif.CanonCs.DigitalZoom Short 1 None -Exif.CanonCs.Contrast Short 1 Normal -Exif.CanonCs.Saturation Short 1 Normal -Exif.CanonCs.Sharpness Short 1 Normal -Exif.CanonCs.ISOSpeed Short 1 Auto -Exif.CanonCs.MeteringMode Short 1 Evaluative -Exif.CanonCs.FocusType Short 1 Auto -Exif.CanonCs.AFPoint Short 1 Manual AF point selection -Exif.CanonCs.ExposureProgram Short 1 Program (P) -Exif.CanonCs.LensType Short 1 (65535) -Exif.CanonCs.Lens Short 3 6.0 - 72.0 mm -Exif.CanonCs.MaxAperture Short 1 F3.6 -Exif.CanonCs.MinAperture Short 1 F8 -Exif.CanonCs.FlashActivity Short 1 Did not fire -Exif.CanonCs.FlashDetails Short 1 -Exif.CanonCs.FocusContinuous Short 1 Continuous -Exif.CanonCs.AESetting Short 1 Normal AE -Exif.CanonCs.ImageStabilization Short 1 On -Exif.CanonCs.DisplayAperture Short 1 0 -Exif.CanonCs.ZoomSourceWidth Short 1 3264 -Exif.CanonCs.ZoomTargetWidth Short 1 3264 -Exif.CanonCs.SpotMeteringMode Short 1 Center -Exif.CanonCs.PhotoEffect Short 1 (65535) -Exif.CanonCs.ManualFlashOutput Short 1 n/a -Exif.CanonCs.ColorTone Short 1 32767 -Exif.Canon.FocalLength Short 4 21.3 mm -Exif.CanonSi.ISOSpeed Short 1 100 -Exif.CanonSi.MeasuredEV Short 1 14.25 -Exif.CanonSi.TargetAperture Short 1 F4 -Exif.CanonSi.TargetShutterSpeed Short 1 1/501 s -Exif.CanonSi.WhiteBalance Short 1 Sunny -Exif.CanonSi.Sequence Short 1 0 -Exif.CanonSi.AFPointUsed Short 1 0 focus points; none used -Exif.CanonSi.FlashBias Short 1 0 EV -Exif.CanonSi.SubjectDistance Short 1 503 -Exif.CanonSi.ApertureValue Short 1 F4 -Exif.CanonSi.ShutterSpeedValue Short 1 1/546 s -Exif.CanonSi.MeasuredEV2 Short 1 -6.00 -Exif.Canon.ImageType Ascii 25 IMG:PowerShot S5 IS JPEG -Exif.Canon.FirmwareVersion Ascii 22 Firmware Version 1.01 -Exif.Canon.FileNumber Long 1 100-1904 -Exif.Canon.OwnerName Ascii 32 Robin Mills -Exif.Canon.CameraInfo Long 148 370 411 0 0 0 384 874 4294967255 0 0 0 0 577 889 4294967150 0 0 4294967287 0 0 1 0 0 0 9 10 888 888 888 384 1015 4294967148 0 0 888 888 0 0 1 3072 3072 3072 3072 3072 4294964224 4294964224 4294964224 4294964224 4294964224 0 4294964224 4294967287 0 0 0 0 0 0 0 0 0 0 164 1024 1024 40 94 0 0 0 0 0 0 525 0 40 94 0 0 3 1 0 0 921 1027 1024 1280 0 40 97 10 881 1646 1711 881 1 1014 384 888 659 4294967148 2 128 1 0 0 0 0 7532 5 0 0 0 0 0 0 7819 8252 8279 128 1 0 4294961112 3 1 7471 0 0 0 0 0 0 0 0 5345 1088 245 446 100 196 44 4091 4091 1 1 25 8 2400605383 -Exif.Canon.ModelID Long 1 PowerShot S5 IS -Exif.Canon.ThumbnailImageValidArea Short 4 0 0 0 0 -Exif.Canon.SuperMacro Short 1 Off -Exif.Canon.AFInfo Short 48 96 2 9 1 2592 1944 1088 245 196 0 0 0 0 0 0 0 0 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -Exif.Photo.UserComment Undefined 264 (Binary value suppressed) -Exif.Photo.FlashpixVersion Undefined 4 1.00 -Exif.Photo.ColorSpace Short 1 sRGB -Exif.Photo.PixelXDimension Short 1 2592 -Exif.Photo.PixelYDimension Short 1 1944 -Exif.Photo.InteroperabilityTag Long 1 3350 -Exif.Iop.InteroperabilityIndex Ascii 4 R98 -Exif.Iop.InteroperabilityVersion Undefined 4 1.00 -Exif.Iop.RelatedImageWidth Short 1 2592 -Exif.Iop.RelatedImageLength Short 1 1944 -Exif.Photo.FocalPlaneXResolution Rational 1 11520 -Exif.Photo.FocalPlaneYResolution Rational 1 11503 -Exif.Photo.FocalPlaneResolutionUnit Short 1 inch -Exif.Photo.SensingMethod Short 1 One-chip color area -Exif.Photo.FileSource Undefined 1 Digital still camera -Exif.Photo.CustomRendered Short 1 Normal process -Exif.Photo.ExposureMode Short 1 Auto -Exif.Photo.WhiteBalance Short 1 Manual -Exif.Photo.DigitalZoomRatio Rational 1 1.0 -Exif.Photo.SceneCaptureType Short 1 Standard -Exif.Thumbnail.Compression Short 1 JPEG (old-style) -Exif.Thumbnail.XResolution Rational 1 180 -Exif.Thumbnail.YResolution Rational 1 180 -Exif.Thumbnail.ResolutionUnit Short 1 inch -Exif.Thumbnail.JPEGInterchangeFormat Long 1 3498 -Exif.Thumbnail.JPEGInterchangeFormatLength Long 1 6714 -File name : test.png -File size : 135047 Bytes -MIME type : image/png -Image size : 200 x 150 -Camera make : Canon -Camera model : Canon PowerShot S5 IS -Image timestamp : 2008:09:06 14:34:23 -Image number : 100-1904 -Exposure time : 1/500 s -Aperture : F4 -Exposure bias : 0 EV -Flash : No, compulsory -Flash bias : 0 EV -Focal length : 21.3 mm -Subject distance: 503 -ISO speed : 80 -Exposure mode : Program (P) -Metering mode : Multi-segment -Macro mode : Off -Image quality : Fine -Exif Resolution : 2592 x 1944 -White balance : Sunny -Thumbnail : image/jpeg, 6714 Bytes -Copyright : -Exif comment : - -File name : test.tiff -File size : 194752 Bytes -MIME type : image/tiff -Image size : 282 x 212 -Camera make : SONY -Camera model : DSC-S600 -Image timestamp : -Image number : -Exposure time : -Aperture : -Exposure bias : -Flash : -Flash bias : -Focal length : -Subject distance: -ISO speed : -Exposure mode : -Metering mode : -Macro mode : -Image quality : -Exif Resolution : 282 x 212 -White balance : -Thumbnail : None -Copyright : -Exif comment : - -Exif.Image.Make Ascii 6 Canon -Exif.Image.Model Ascii 22 Canon PowerShot S5 IS -Exif.Image.Orientation Short 1 top, left -Exif.Image.XResolution Rational 1 180 -Exif.Image.YResolution Rational 1 180 -Exif.Image.ResolutionUnit Short 1 inch -Exif.Image.DateTime Ascii 20 2008:09:06 14:34:23 -Exif.Image.YCbCrPositioning Short 1 Centered -Exif.Image.ExifTag Long 1 186 -Exif.Photo.ExposureTime Rational 1 1/500 s -Exif.Photo.FNumber Rational 1 F4 -Exif.Photo.ISOSpeedRatings Short 1 80 -Exif.Photo.ExifVersion Undefined 4 2.20 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeDigitized Ascii 20 2008:09:06 14:34:23 -Exif.Photo.ComponentsConfiguration Undefined 4 YCbCr -Exif.Photo.CompressedBitsPerPixel Rational 1 3 -Exif.Photo.ShutterSpeedValue SRational 1 1/501 s -Exif.Photo.ApertureValue Rational 1 F4 -Exif.Photo.ExposureBiasValue SRational 1 0 EV -Exif.Photo.MaxApertureValue Rational 1 F3.5 -Exif.Photo.MeteringMode Short 1 Multi-segment -Exif.Photo.Flash Short 1 No, compulsory -Exif.Photo.FocalLength Rational 1 21.3 mm -Exif.Photo.MakerNote Undefined 2382 (Binary value suppressed) -Exif.MakerNote.Offset Long 1 680 -Exif.MakerNote.ByteOrder Ascii 3 MM -Exif.CanonCs.Macro Short 1 Off -Exif.CanonCs.Selftimer Short 1 Off -Exif.CanonCs.Quality Short 1 Fine -Exif.CanonCs.FlashMode Short 1 Off -Exif.CanonCs.DriveMode Short 1 Single / timer -Exif.CanonCs.FocusMode Short 1 Single -Exif.CanonCs.ImageSize Short 1 Medium 1 -Exif.CanonCs.EasyMode Short 1 Manual -Exif.CanonCs.DigitalZoom Short 1 None -Exif.CanonCs.Contrast Short 1 Normal -Exif.CanonCs.Saturation Short 1 Normal -Exif.CanonCs.Sharpness Short 1 Normal -Exif.CanonCs.ISOSpeed Short 1 Auto -Exif.CanonCs.MeteringMode Short 1 Evaluative -Exif.CanonCs.FocusType Short 1 Auto -Exif.CanonCs.AFPoint Short 1 Manual AF point selection -Exif.CanonCs.ExposureProgram Short 1 Program (P) -Exif.CanonCs.LensType Short 1 (65535) -Exif.CanonCs.Lens Short 3 6.0 - 72.0 mm -Exif.CanonCs.MaxAperture Short 1 F3.6 -Exif.CanonCs.MinAperture Short 1 F8 -Exif.CanonCs.FlashActivity Short 1 Did not fire -Exif.CanonCs.FlashDetails Short 1 -Exif.CanonCs.FocusContinuous Short 1 Continuous -Exif.CanonCs.AESetting Short 1 Normal AE -Exif.CanonCs.ImageStabilization Short 1 On -Exif.CanonCs.DisplayAperture Short 1 0 -Exif.CanonCs.ZoomSourceWidth Short 1 3264 -Exif.CanonCs.ZoomTargetWidth Short 1 3264 -Exif.CanonCs.SpotMeteringMode Short 1 Center -Exif.CanonCs.PhotoEffect Short 1 (65535) -Exif.CanonCs.ManualFlashOutput Short 1 n/a -Exif.CanonCs.ColorTone Short 1 32767 -Exif.Canon.FocalLength Short 4 21.3 mm -Exif.CanonSi.ISOSpeed Short 1 100 -Exif.CanonSi.MeasuredEV Short 1 14.25 -Exif.CanonSi.TargetAperture Short 1 F4 -Exif.CanonSi.TargetShutterSpeed Short 1 1/501 s -Exif.CanonSi.WhiteBalance Short 1 Sunny -Exif.CanonSi.Sequence Short 1 0 -Exif.CanonSi.AFPointUsed Short 1 0 focus points; none used -Exif.CanonSi.FlashBias Short 1 0 EV -Exif.CanonSi.SubjectDistance Short 1 503 -Exif.CanonSi.ApertureValue Short 1 F4 -Exif.CanonSi.ShutterSpeedValue Short 1 1/546 s -Exif.CanonSi.MeasuredEV2 Short 1 -6.00 -Exif.Canon.ImageType Ascii 25 IMG:PowerShot S5 IS JPEG -Exif.Canon.FirmwareVersion Ascii 22 Firmware Version 1.01 -Exif.Canon.FileNumber Long 1 100-1904 -Exif.Canon.OwnerName Ascii 32 Robin Mills -Exif.Canon.CameraInfo Long 148 370 411 0 0 0 384 874 4294967255 0 0 0 0 577 889 4294967150 0 0 4294967287 0 0 1 0 0 0 9 10 888 888 888 384 1015 4294967148 0 0 888 888 0 0 1 3072 3072 3072 3072 3072 4294964224 4294964224 4294964224 4294964224 4294964224 0 4294964224 4294967287 0 0 0 0 0 0 0 0 0 0 164 1024 1024 40 94 0 0 0 0 0 0 525 0 40 94 0 0 3 1 0 0 921 1027 1024 1280 0 40 97 10 881 1646 1711 881 1 1014 384 888 659 4294967148 2 128 1 0 0 0 0 7532 5 0 0 0 0 0 0 7819 8252 8279 128 1 0 4294961112 3 1 7471 0 0 0 0 0 0 0 0 5345 1088 245 446 100 196 44 4091 4091 1 1 25 8 2400605383 -Exif.Canon.ModelID Long 1 PowerShot S5 IS -Exif.Canon.ThumbnailImageValidArea Short 4 0 0 0 0 -Exif.Canon.SuperMacro Short 1 Off -Exif.Canon.AFInfo Short 48 96 2 9 1 2592 1944 1088 245 196 0 0 0 0 0 0 0 0 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -Exif.Photo.UserComment Undefined 264 (Binary value suppressed) -Exif.Photo.FlashpixVersion Undefined 4 1.00 -Exif.Photo.ColorSpace Short 1 sRGB -Exif.Photo.PixelXDimension Short 1 2592 -Exif.Photo.PixelYDimension Short 1 1944 -Exif.Photo.InteroperabilityTag Long 1 3350 -Exif.Iop.InteroperabilityIndex Ascii 4 R98 -Exif.Iop.InteroperabilityVersion Undefined 4 1.00 -Exif.Iop.RelatedImageWidth Short 1 2592 -Exif.Iop.RelatedImageLength Short 1 1944 -Exif.Photo.FocalPlaneXResolution Rational 1 11520 -Exif.Photo.FocalPlaneYResolution Rational 1 11503 -Exif.Photo.FocalPlaneResolutionUnit Short 1 inch -Exif.Photo.SensingMethod Short 1 One-chip color area -Exif.Photo.FileSource Undefined 1 Digital still camera -Exif.Photo.CustomRendered Short 1 Normal process -Exif.Photo.ExposureMode Short 1 Auto -Exif.Photo.WhiteBalance Short 1 Manual -Exif.Photo.DigitalZoomRatio Rational 1 1.0 -Exif.Photo.SceneCaptureType Short 1 Standard -Exif.Thumbnail.Compression Short 1 JPEG (old-style) -Exif.Thumbnail.XResolution Rational 1 180 -Exif.Thumbnail.YResolution Rational 1 180 -Exif.Thumbnail.ResolutionUnit Short 1 inch -Exif.Thumbnail.JPEGInterchangeFormat Long 1 3498 -Exif.Thumbnail.JPEGInterchangeFormatLength Long 1 6714 -File name : test.png -File size : 135047 Bytes -MIME type : image/png -Image size : 200 x 150 -Camera make : Canon -Camera model : Canon PowerShot S5 IS -Image timestamp : 2008:09:06 14:34:23 -Image number : 100-1904 -Exposure time : 1/500 s -Aperture : F4 -Exposure bias : 0 EV -Flash : No, compulsory -Flash bias : 0 EV -Focal length : 21.3 mm -Subject distance: 503 -ISO speed : 80 -Exposure mode : Program (P) -Metering mode : Multi-segment -Macro mode : Off -Image quality : Fine -Exif Resolution : 2592 x 1944 -White balance : Sunny -Thumbnail : image/jpeg, 6714 Bytes -Copyright : -Exif comment : - -File name : test.tiff -File size : 194752 Bytes -MIME type : image/tiff -Image size : 282 x 212 -Camera make : SONY -Camera model : DSC-S600 -Image timestamp : -Image number : -Exposure time : -Aperture : -Exposure bias : -Flash : -Flash bias : -Focal length : -Subject distance: -ISO speed : -Exposure mode : -Metering mode : -Macro mode : -Image quality : -Exif Resolution : 282 x 212 -White balance : -Thumbnail : None -Copyright : -Exif comment : - -Exif.Image.Make Ascii 6 Canon -Exif.Image.Model Ascii 22 Canon PowerShot S5 IS -Exif.Image.Orientation Short 1 top, left -Exif.Image.XResolution Rational 1 180 -Exif.Image.YResolution Rational 1 180 -Exif.Image.ResolutionUnit Short 1 inch -Exif.Image.DateTime Ascii 20 2008:09:06 14:34:23 -Exif.Image.YCbCrPositioning Short 1 Centered -Exif.Image.ExifTag Long 1 186 -Exif.Photo.ExposureTime Rational 1 1/500 s -Exif.Photo.FNumber Rational 1 F4 -Exif.Photo.ISOSpeedRatings Short 1 80 -Exif.Photo.ExifVersion Undefined 4 2.20 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeDigitized Ascii 20 2008:09:06 14:34:23 -Exif.Photo.ComponentsConfiguration Undefined 4 YCbCr -Exif.Photo.CompressedBitsPerPixel Rational 1 3 -Exif.Photo.ShutterSpeedValue SRational 1 1/501 s -Exif.Photo.ApertureValue Rational 1 F4 -Exif.Photo.ExposureBiasValue SRational 1 0 EV -Exif.Photo.MaxApertureValue Rational 1 F3.5 -Exif.Photo.MeteringMode Short 1 Multi-segment -Exif.Photo.Flash Short 1 No, compulsory -Exif.Photo.FocalLength Rational 1 21.3 mm -Exif.Photo.MakerNote Undefined 2382 (Binary value suppressed) -Exif.MakerNote.Offset Long 1 680 -Exif.MakerNote.ByteOrder Ascii 3 MM -Exif.CanonCs.Macro Short 1 Off -Exif.CanonCs.Selftimer Short 1 Off -Exif.CanonCs.Quality Short 1 Fine -Exif.CanonCs.FlashMode Short 1 Off -Exif.CanonCs.DriveMode Short 1 Single / timer -Exif.CanonCs.FocusMode Short 1 Single -Exif.CanonCs.ImageSize Short 1 Medium 1 -Exif.CanonCs.EasyMode Short 1 Manual -Exif.CanonCs.DigitalZoom Short 1 None -Exif.CanonCs.Contrast Short 1 Normal -Exif.CanonCs.Saturation Short 1 Normal -Exif.CanonCs.Sharpness Short 1 Normal -Exif.CanonCs.ISOSpeed Short 1 Auto -Exif.CanonCs.MeteringMode Short 1 Evaluative -Exif.CanonCs.FocusType Short 1 Auto -Exif.CanonCs.AFPoint Short 1 Manual AF point selection -Exif.CanonCs.ExposureProgram Short 1 Program (P) -Exif.CanonCs.LensType Short 1 (65535) -Exif.CanonCs.Lens Short 3 6.0 - 72.0 mm -Exif.CanonCs.MaxAperture Short 1 F3.6 -Exif.CanonCs.MinAperture Short 1 F8 -Exif.CanonCs.FlashActivity Short 1 Did not fire -Exif.CanonCs.FlashDetails Short 1 -Exif.CanonCs.FocusContinuous Short 1 Continuous -Exif.CanonCs.AESetting Short 1 Normal AE -Exif.CanonCs.ImageStabilization Short 1 On -Exif.CanonCs.DisplayAperture Short 1 0 -Exif.CanonCs.ZoomSourceWidth Short 1 3264 -Exif.CanonCs.ZoomTargetWidth Short 1 3264 -Exif.CanonCs.SpotMeteringMode Short 1 Center -Exif.CanonCs.PhotoEffect Short 1 (65535) -Exif.CanonCs.ManualFlashOutput Short 1 n/a -Exif.CanonCs.ColorTone Short 1 32767 -Exif.Canon.FocalLength Short 4 21.3 mm -Exif.CanonSi.ISOSpeed Short 1 100 -Exif.CanonSi.MeasuredEV Short 1 14.25 -Exif.CanonSi.TargetAperture Short 1 F4 -Exif.CanonSi.TargetShutterSpeed Short 1 1/501 s -Exif.CanonSi.WhiteBalance Short 1 Sunny -Exif.CanonSi.Sequence Short 1 0 -Exif.CanonSi.AFPointUsed Short 1 0 focus points; none used -Exif.CanonSi.FlashBias Short 1 0 EV -Exif.CanonSi.SubjectDistance Short 1 503 -Exif.CanonSi.ApertureValue Short 1 F4 -Exif.CanonSi.ShutterSpeedValue Short 1 1/546 s -Exif.CanonSi.MeasuredEV2 Short 1 -6.00 -Exif.Canon.ImageType Ascii 25 IMG:PowerShot S5 IS JPEG -Exif.Canon.FirmwareVersion Ascii 22 Firmware Version 1.01 -Exif.Canon.FileNumber Long 1 100-1904 -Exif.Canon.OwnerName Ascii 32 Robin Mills -Exif.Canon.CameraInfo Long 148 370 411 0 0 0 384 874 4294967255 0 0 0 0 577 889 4294967150 0 0 4294967287 0 0 1 0 0 0 9 10 888 888 888 384 1015 4294967148 0 0 888 888 0 0 1 3072 3072 3072 3072 3072 4294964224 4294964224 4294964224 4294964224 4294964224 0 4294964224 4294967287 0 0 0 0 0 0 0 0 0 0 164 1024 1024 40 94 0 0 0 0 0 0 525 0 40 94 0 0 3 1 0 0 921 1027 1024 1280 0 40 97 10 881 1646 1711 881 1 1014 384 888 659 4294967148 2 128 1 0 0 0 0 7532 5 0 0 0 0 0 0 7819 8252 8279 128 1 0 4294961112 3 1 7471 0 0 0 0 0 0 0 0 5345 1088 245 446 100 196 44 4091 4091 1 1 25 8 2400605383 -Exif.Canon.ModelID Long 1 PowerShot S5 IS -Exif.Canon.ThumbnailImageValidArea Short 4 0 0 0 0 -Exif.Canon.SuperMacro Short 1 Off -Exif.Canon.AFInfo Short 48 96 2 9 1 2592 1944 1088 245 196 0 0 0 0 0 0 0 0 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -Exif.Photo.UserComment Undefined 264 (Binary value suppressed) -Exif.Photo.FlashpixVersion Undefined 4 1.00 -Exif.Photo.ColorSpace Short 1 sRGB -Exif.Photo.PixelXDimension Short 1 2592 -Exif.Photo.PixelYDimension Short 1 1944 -Exif.Photo.InteroperabilityTag Long 1 3350 -Exif.Iop.InteroperabilityIndex Ascii 4 R98 -Exif.Iop.InteroperabilityVersion Undefined 4 1.00 -Exif.Iop.RelatedImageWidth Short 1 2592 -Exif.Iop.RelatedImageLength Short 1 1944 -Exif.Photo.FocalPlaneXResolution Rational 1 11520 -Exif.Photo.FocalPlaneYResolution Rational 1 11503 -Exif.Photo.FocalPlaneResolutionUnit Short 1 inch -Exif.Photo.SensingMethod Short 1 One-chip color area -Exif.Photo.FileSource Undefined 1 Digital still camera -Exif.Photo.CustomRendered Short 1 Normal process -Exif.Photo.ExposureMode Short 1 Auto -Exif.Photo.WhiteBalance Short 1 Manual -Exif.Photo.DigitalZoomRatio Rational 1 1.0 -Exif.Photo.SceneCaptureType Short 1 Standard -Exif.Thumbnail.Compression Short 1 JPEG (old-style) -Exif.Thumbnail.XResolution Rational 1 180 -Exif.Thumbnail.YResolution Rational 1 180 -Exif.Thumbnail.ResolutionUnit Short 1 inch -Exif.Thumbnail.JPEGInterchangeFormat Long 1 3498 -Exif.Thumbnail.JPEGInterchangeFormatLength Long 1 6714 -File name : test.png -File size : 135047 Bytes -MIME type : image/png -Image size : 200 x 150 -Camera make : Canon -Camera model : Canon PowerShot S5 IS -Image timestamp : 2008:09:06 14:34:23 -Image number : 100-1904 -Exposure time : 1/500 s -Aperture : F4 -Exposure bias : 0 EV -Flash : No, compulsory -Flash bias : 0 EV -Focal length : 21.3 mm -Subject distance: 503 -ISO speed : 80 -Exposure mode : Program (P) -Metering mode : Multi-segment -Macro mode : Off -Image quality : Fine -Exif Resolution : 2592 x 1944 -White balance : Sunny -Thumbnail : image/jpeg, 6714 Bytes -Copyright : -Exif comment : - -File name : test.tiff -File size : 194752 Bytes -MIME type : image/tiff -Image size : 282 x 212 -Camera make : SONY -Camera model : DSC-S600 -Image timestamp : -Image number : -Exposure time : -Aperture : -Exposure bias : -Flash : -Flash bias : -Focal length : -Subject distance: -ISO speed : -Exposure mode : -Metering mode : -Macro mode : -Image quality : -Exif Resolution : 282 x 212 -White balance : -Thumbnail : None -Copyright : -Exif comment : - --------Debug--------------- -KERNEL32.dll -addmoddel.exe -ntdll.dll -KERNEL32.dll -convert-test.exe -ntdll.dll -KERNEL32.dll -exifcomment.exe -ntdll.dll -KERNEL32.dll -exifdata-test.exe -ntdll.dll -KERNEL32.dll -exifprint.exe -ntdll.dll -KERNEL32.dll -exiv2.exe -ntdll.dll -KERNEL32.dll -exivsimple.dll -ntdll.dll -KERNEL32.dll -iotest.exe -ntdll.dll -KERNEL32.dll -iptceasy.exe -ntdll.dll -KERNEL32.dll -iptcprint.exe -ntdll.dll -KERNEL32.dll -iptctest.exe -ntdll.dll -KERNEL32.dll -largeiptc-test.exe -ntdll.dll -KERNEL32.dll -metacopy.exe -ntdll.dll -KERNEL32.dll -mmap-test.exe -ntdll.dll -KERNEL32.dll -ntdll.dll -prevtest.exe -KERNEL32.dll -ntdll.dll -stringto-test.exe -KERNEL32.dll -ntdll.dll -taglist.exe -KERNEL32.dll -ntdll.dll -tiff-test.exe -KERNEL32.dll -ntdll.dll -utiltest.exe -KERNEL32.dll -ntdll.dll -write-test.exe -KERNEL32.dll -ntdll.dll -write2-test.exe -KERNEL32.dll -ntdll.dll -xmpparse.exe -KERNEL32.dll -ntdll.dll -xmpparser-test.exe -KERNEL32.dll -ntdll.dll -xmpsample.exe --------DebugDLL--------------- -KERNEL32.dll -addmoddel.exe -exiv2d.dll -libexpat.dll -ntdll.dll -zlib1d.dll -KERNEL32.dll -convert-test.exe -exiv2d.dll -libexpat.dll -ntdll.dll -zlib1d.dll -KERNEL32.dll -exifcomment.exe -exiv2d.dll -libexpat.dll -ntdll.dll -zlib1d.dll -KERNEL32.dll -exifdata-test.exe -exiv2d.dll -libexpat.dll -ntdll.dll -zlib1d.dll -KERNEL32.dll -exifprint.exe -exiv2d.dll -libexpat.dll -ntdll.dll -zlib1d.dll -KERNEL32.dll -exiv2.exe -exiv2d.dll -libexpat.dll -ntdll.dll -zlib1d.dll -KERNEL32.dll -exiv2d.dll -exivsimple.dll -libexpat.dll -ntdll.dll -zlib1d.dll -KERNEL32.dll -exiv2d.dll -iotest.exe -libexpat.dll -ntdll.dll -zlib1d.dll -KERNEL32.dll -exiv2d.dll -iptceasy.exe -libexpat.dll -ntdll.dll -zlib1d.dll -KERNEL32.dll -exiv2d.dll -iptcprint.exe -libexpat.dll -ntdll.dll -zlib1d.dll -KERNEL32.dll -exiv2d.dll -iptctest.exe -libexpat.dll -ntdll.dll -zlib1d.dll -KERNEL32.dll -exiv2d.dll -largeiptc-test.exe -libexpat.dll -ntdll.dll -zlib1d.dll -KERNEL32.dll -exiv2d.dll -libexpat.dll -metacopy.exe -ntdll.dll -zlib1d.dll -KERNEL32.dll -exiv2d.dll -libexpat.dll -mmap-test.exe -ntdll.dll -zlib1d.dll -KERNEL32.dll -exiv2d.dll -libexpat.dll -ntdll.dll -prevtest.exe -zlib1d.dll -KERNEL32.dll -exiv2d.dll -libexpat.dll -ntdll.dll -stringto-test.exe -zlib1d.dll -KERNEL32.dll -exiv2d.dll -libexpat.dll -ntdll.dll -taglist.exe -zlib1d.dll -KERNEL32.dll -exiv2d.dll -libexpat.dll -ntdll.dll -tiff-test.exe -zlib1d.dll -KERNEL32.dll -ntdll.dll -utiltest.exe -KERNEL32.dll -exiv2d.dll -libexpat.dll -ntdll.dll -write-test.exe -zlib1d.dll -KERNEL32.dll -exiv2d.dll -libexpat.dll -ntdll.dll -write2-test.exe -zlib1d.dll -KERNEL32.dll -exiv2d.dll -libexpat.dll -ntdll.dll -xmpparse.exe -zlib1d.dll -KERNEL32.dll -exiv2d.dll -libexpat.dll -ntdll.dll -xmpparser-test.exe -zlib1d.dll -KERNEL32.dll -exiv2d.dll -libexpat.dll -ntdll.dll -xmpsample.exe -zlib1d.dll --------Release--------------- -KERNEL32.dll -addmoddel.exe -ntdll.dll -KERNEL32.dll -convert-test.exe -ntdll.dll -KERNEL32.dll -exifcomment.exe -ntdll.dll -KERNEL32.dll -exifdata-test.exe -ntdll.dll -KERNEL32.dll -exifprint.exe -ntdll.dll -KERNEL32.dll -exiv2.exe -ntdll.dll -KERNEL32.dll -exivsimple.dll -ntdll.dll -KERNEL32.dll -iotest.exe -ntdll.dll -KERNEL32.dll -iptceasy.exe -ntdll.dll -KERNEL32.dll -iptcprint.exe -ntdll.dll -KERNEL32.dll -iptctest.exe -ntdll.dll -KERNEL32.dll -largeiptc-test.exe -ntdll.dll -KERNEL32.dll -metacopy.exe -ntdll.dll -KERNEL32.dll -mmap-test.exe -ntdll.dll -KERNEL32.dll -ntdll.dll -prevtest.exe -KERNEL32.dll -ntdll.dll -stringto-test.exe -KERNEL32.dll -ntdll.dll -taglist.exe -KERNEL32.dll -ntdll.dll -tiff-test.exe -KERNEL32.dll -ntdll.dll -utiltest.exe -KERNEL32.dll -ntdll.dll -write-test.exe -KERNEL32.dll -ntdll.dll -write2-test.exe -KERNEL32.dll -ntdll.dll -xmpparse.exe -KERNEL32.dll -ntdll.dll -xmpparser-test.exe -KERNEL32.dll -ntdll.dll -xmpsample.exe --------ReleaseDLL--------------- -KERNEL32.dll -addmoddel.exe -exiv2.dll -libexpat.dll -ntdll.dll -zlib1.dll -KERNEL32.dll -convert-test.exe -exiv2.dll -libexpat.dll -ntdll.dll -zlib1.dll -KERNEL32.dll -exifcomment.exe -exiv2.dll -libexpat.dll -ntdll.dll -zlib1.dll -KERNEL32.dll -exifdata-test.exe -exiv2.dll -libexpat.dll -ntdll.dll -zlib1.dll -KERNEL32.dll -exifprint.exe -exiv2.dll -libexpat.dll -ntdll.dll -zlib1.dll -KERNEL32.dll -exiv2.dll -exiv2.exe -libexpat.dll -ntdll.dll -zlib1.dll -KERNEL32.dll -exiv2.dll -exivsimple.dll -libexpat.dll -ntdll.dll -zlib1.dll -KERNEL32.dll -exiv2.dll -iotest.exe -libexpat.dll -ntdll.dll -zlib1.dll -KERNEL32.dll -exiv2.dll -iptceasy.exe -libexpat.dll -ntdll.dll -zlib1.dll -KERNEL32.dll -exiv2.dll -iptcprint.exe -libexpat.dll -ntdll.dll -zlib1.dll -KERNEL32.dll -exiv2.dll -iptctest.exe -libexpat.dll -ntdll.dll -zlib1.dll -KERNEL32.dll -exiv2.dll -largeiptc-test.exe -libexpat.dll -ntdll.dll -zlib1.dll -KERNEL32.dll -exiv2.dll -libexpat.dll -metacopy.exe -ntdll.dll -zlib1.dll -KERNEL32.dll -exiv2.dll -libexpat.dll -mmap-test.exe -ntdll.dll -zlib1.dll -KERNEL32.dll -exiv2.dll -libexpat.dll -ntdll.dll -prevtest.exe -zlib1.dll -KERNEL32.dll -exiv2.dll -libexpat.dll -ntdll.dll -stringto-test.exe -zlib1.dll -KERNEL32.dll -exiv2.dll -libexpat.dll -ntdll.dll -taglist.exe -zlib1.dll -KERNEL32.dll -exiv2.dll -libexpat.dll -ntdll.dll -tiff-test.exe -zlib1.dll -KERNEL32.dll -ntdll.dll -utiltest.exe -KERNEL32.dll -exiv2.dll -libexpat.dll -ntdll.dll -write-test.exe -zlib1.dll -KERNEL32.dll -exiv2.dll -libexpat.dll -ntdll.dll -write2-test.exe -zlib1.dll -KERNEL32.dll -exiv2.dll -libexpat.dll -ntdll.dll -xmpparse.exe -zlib1.dll -KERNEL32.dll -exiv2.dll -libexpat.dll -ntdll.dll -xmpparser-test.exe -zlib1.dll -KERNEL32.dll -exiv2.dll -libexpat.dll -ntdll.dll -xmpsample.exe -zlib1.dll diff --git a/platform/win32/msvc/external/exiv2/msvc/runner7.txt b/platform/win32/msvc/external/exiv2/msvc/runner7.txt deleted file mode 100644 index eba2c7fbc0d..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/runner7.txt +++ /dev/null @@ -1,7426 +0,0 @@ -Usage: bin\Debug\addmoddel.exe file -Usage: bin\Debug\convert-test.exe file -Usage: bin\Debug\exifcomment.exe file -Usage: bin\Debug\exifdata-test.exe file -Usage: bin\Debug\exifprint.exe file -Usage: exiv2.exe [ options ] [ action ] file ... - -Manipulate the Exif metadata of images. -Usage: bin\Debug\iotest.exe filein fileout1 fileout2 -fileouts are overwritten and should match filein exactly -Usage: bin\Debug\iptceasy.exe file -Usage: bin\Debug\iptcprint.exe file -Usage: bin\Debug\iptctest.exe image -Commands read from stdin. -Usage: bin\Debug\largeiptc-test.exe image datafile - -Reads and writes raw metadata. Use -h option for help. -Usage: metacopy.exe [-iecaph] readfile writefile -Usage: bin\Debug\mmap-test.exe file -Usage: bin\Debug\prevtest.exe file -string long float Rational -True 1 1 1/1 -False 0 0 0/1 -t 1 1 1/1 -f 0 0 0/1 --1 -1 -1 -1/1 -0 0 0 0/1 -1 1 1 1/1 -0.0 0 0 0/1 -0.1 0 0.1 1/10 -0.01 0 0.01 1/100 -0.001 0 0.001 1/1000 --1.49999 -1 -1.49999 -149999/100000 --1.5 -1 -1.5 -3/2 -1.49999 1 1.49999 149999/100000 -1.5 1 1.5 3/2 -0/1 0 0 0/1 -1/1 1 1 1/1 -1/3 0 0.333333 1/3 --1/3 0 -0.333333 -1/3 -4/3 1 1.33333 4/3 --4/3 -1 -1.33333 -4/3 -0/0 nok nok 0/0 -text nok nok nok -ProcessingSoftware, 11, 0x000b, Image, Exif.Image.ProcessingSoftware, Ascii, The name and version of the software used to post-process the picture. -NewSubfileType, 254, 0x00fe, Image, Exif.Image.NewSubfileType, Long, A general indication of the kind of data contained in this subfile. -SubfileType, 255, 0x00ff, Image, Exif.Image.SubfileType, Short, A general indication of the kind of data contained in this subfile. This field is deprecated. The NewSubfileType field should be used instead. -ImageWidth, 256, 0x0100, Image, Exif.Image.ImageWidth, Long, The number of columns of image data, equal to the number of pixels per row. In JPEG compressed data a JPEG marker is used instead of this tag. -ImageLength, 257, 0x0101, Image, Exif.Image.ImageLength, Long, The number of rows of image data. In JPEG compressed data a JPEG marker is used instead of this tag. -BitsPerSample, 258, 0x0102, Image, Exif.Image.BitsPerSample, Short, The number of bits per image component. In this standard each component of the image is 8 bits, so the value for this tag is 8. See also . In JPEG compressed data a JPEG marker is used instead of this tag. -Compression, 259, 0x0103, Image, Exif.Image.Compression, Short, The compression scheme used for the image data. When a primary image is JPEG compressed, this designation is not necessary and is omitted. When thumbnails use JPEG compression, this tag value is set to 6. -PhotometricInterpretation, 262, 0x0106, Image, Exif.Image.PhotometricInterpretation, Short, The pixel composition. In JPEG compressed data a JPEG marker is used instead of this tag. -Threshholding, 263, 0x0107, Image, Exif.Image.Threshholding, Short, For black and white TIFF files that represent shades of gray, the technique used to convert from gray to black and white pixels. -CellWidth, 264, 0x0108, Image, Exif.Image.CellWidth, Short, The width of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -CellLength, 265, 0x0109, Image, Exif.Image.CellLength, Short, The length of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -FillOrder, 266, 0x010a, Image, Exif.Image.FillOrder, Short, The logical order of bits within a byte -DocumentName, 269, 0x010d, Image, Exif.Image.DocumentName, Ascii, The name of the document from which this image was scanned -ImageDescription, 270, 0x010e, Image, Exif.Image.ImageDescription, Ascii, A character string giving the title of the image. It may be a comment such as "1988 company picnic" or the like. Two-bytes character codes cannot be used. When a 2-bytes code is necessary, the Exif Private tag is to be used. -Make, 271, 0x010f, Image, Exif.Image.Make, Ascii, The manufacturer of the recording equipment. This is the manufacturer of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -Model, 272, 0x0110, Image, Exif.Image.Model, Ascii, The model name or model number of the equipment. This is the model name or number of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -StripOffsets, 273, 0x0111, Image, Exif.Image.StripOffsets, Long, For each strip, the byte offset of that strip. It is recommended that this be selected so the number of strip bytes does not exceed 64 Kbytes. With JPEG compressed data this designation is not needed and is omitted. See also and . -Orientation, 274, 0x0112, Image, Exif.Image.Orientation, Short, The image orientation viewed in terms of rows and columns. -SamplesPerPixel, 277, 0x0115, Image, Exif.Image.SamplesPerPixel, Short, The number of components per pixel. Since this standard applies to RGB and YCbCr images, the value set for this tag is 3. In JPEG compressed data a JPEG marker is used instead of this tag. -RowsPerStrip, 278, 0x0116, Image, Exif.Image.RowsPerStrip, Long, The number of rows per strip. This is the number of rows in the image of one strip when an image is divided into strips. With JPEG compressed data this designation is not needed and is omitted. See also and . -StripByteCounts, 279, 0x0117, Image, Exif.Image.StripByteCounts, Long, The total number of bytes in each strip. With JPEG compressed data this designation is not needed and is omitted. -XResolution, 282, 0x011a, Image, Exif.Image.XResolution, Rational, The number of pixels per in the direction. When the image resolution is unknown, 72 [dpi] is designated. -YResolution, 283, 0x011b, Image, Exif.Image.YResolution, Rational, The number of pixels per in the direction. The same value as is designated. -PlanarConfiguration, 284, 0x011c, Image, Exif.Image.PlanarConfiguration, Short, Indicates whether pixel components are recorded in a chunky or planar format. In JPEG compressed files a JPEG marker is used instead of this tag. If this field does not exist, the TIFF default of 1 (chunky) is assumed. -GrayResponseUnit, 290, 0x0122, Image, Exif.Image.GrayResponseUnit, Short, The precision of the information contained in the GrayResponseCurve. -GrayResponseCurve, 291, 0x0123, Image, Exif.Image.GrayResponseCurve, Short, For grayscale data, the optical density of each possible pixel value. -T4Options, 292, 0x0124, Image, Exif.Image.T4Options, Long, T.4-encoding options. -T6Options, 293, 0x0125, Image, Exif.Image.T6Options, Long, T.6-encoding options. -ResolutionUnit, 296, 0x0128, Image, Exif.Image.ResolutionUnit, Short, The unit for measuring and . The same unit is used for both and . If the image resolution is unknown, 2 (inches) is designated. -TransferFunction, 301, 0x012d, Image, Exif.Image.TransferFunction, Short, A transfer function for the image, described in tabular style. Normally this tag is not necessary, since color space is specified in the color space information tag (). -Software, 305, 0x0131, Image, Exif.Image.Software, Ascii, This tag records the name and version of the software or firmware of the camera or image input device used to generate the image. The detailed format is not specified, but it is recommended that the example shown below be followed. When the field is left blank, it is treated as unknown. -DateTime, 306, 0x0132, Image, Exif.Image.DateTime, Ascii, The date and time of image creation. In Exif standard, it is the date and time the file was changed. -Artist, 315, 0x013b, Image, Exif.Image.Artist, Ascii, This tag records the name of the camera owner, photographer or image creator. The detailed format is not specified, but it is recommended that the information be written as in the example below for ease of Interoperability. When the field is left blank, it is treated as unknown. Ex.) "Camera owner, John Smith; Photographer, Michael Brown; Image creator, Ken James" -HostComputer, 316, 0x013c, Image, Exif.Image.HostComputer, Ascii, This tag records information about the host computer used to generate the image. -Predictor, 317, 0x013d, Image, Exif.Image.Predictor, Short, A predictor is a mathematical operator that is applied to the image data before an encoding scheme is applied. -WhitePoint, 318, 0x013e, Image, Exif.Image.WhitePoint, Rational, The chromaticity of the white point of the image. Normally this tag is not necessary, since color space is specified in the colorspace information tag (). -PrimaryChromaticities, 319, 0x013f, Image, Exif.Image.PrimaryChromaticities, Rational, The chromaticity of the three primary colors of the image. Normally this tag is not necessary, since colorspace is specified in the colorspace information tag (). -ColorMap, 320, 0x0140, Image, Exif.Image.ColorMap, Short, A color map for palette color images. This field defines a Red-Green-Blue color map (often called a lookup table) for palette-color images. In a palette-color image, a pixel value is used to index into an RGB lookup table. -HalftoneHints, 321, 0x0141, Image, Exif.Image.HalftoneHints, Short, The purpose of the HalftoneHints field is to convey to the halftone function the range of gray levels within a colorimetrically-specified image that should retain tonal detail. -TileWidth, 322, 0x0142, Image, Exif.Image.TileWidth, Short, The tile width in pixels. This is the number of columns in each tile. -TileLength, 323, 0x0143, Image, Exif.Image.TileLength, Short, The tile length (height) in pixels. This is the number of rows in each tile. -TileOffsets, 324, 0x0144, Image, Exif.Image.TileOffsets, Short, For each tile, the byte offset of that tile, as compressed and stored on disk. The offset is specified with respect to the beginning of the TIFF file. Note that this implies that each tile has a location independent of the locations of other tiles. -TileByteCounts, 325, 0x0145, Image, Exif.Image.TileByteCounts, Short, For each tile, the number of (compressed) bytes in that tile. See TileOffsets for a description of how the byte counts are ordered. -SubIFDs, 330, 0x014a, Image, Exif.Image.SubIFDs, Long, Defined by Adobe Corporation to enable TIFF Trees within a TIFF file. -InkSet, 332, 0x014c, Image, Exif.Image.InkSet, Short, The set of inks used in a separated (PhotometricInterpretation=5) image. -InkNames, 333, 0x014d, Image, Exif.Image.InkNames, Ascii, The name of each ink used in a separated (PhotometricInterpretation=5) image. -NumberOfInks, 334, 0x014e, Image, Exif.Image.NumberOfInks, Short, The number of inks. Usually equal to SamplesPerPixel, unless there are extra samples. -DotRange, 336, 0x0150, Image, Exif.Image.DotRange, Byte, The component values that correspond to a 0% dot and 100% dot. -TargetPrinter, 337, 0x0151, Image, Exif.Image.TargetPrinter, Ascii, A description of the printing environment for which this separation is intended. -ExtraSamples, 338, 0x0152, Image, Exif.Image.ExtraSamples, Short, Specifies that each pixel has m extra components whose interpretation is defined by one of the values listed below. -SampleFormat, 339, 0x0153, Image, Exif.Image.SampleFormat, Short, This field specifies how to interpret each data sample in a pixel. -SMinSampleValue, 340, 0x0154, Image, Exif.Image.SMinSampleValue, Short, This field specifies the minimum sample value. -SMaxSampleValue, 341, 0x0155, Image, Exif.Image.SMaxSampleValue, Short, This field specifies the maximum sample value. -TransferRange, 342, 0x0156, Image, Exif.Image.TransferRange, Short, Expands the range of the TransferFunction -ClipPath, 343, 0x0157, Image, Exif.Image.ClipPath, Byte, A TIFF ClipPath is intended to mirror the essentials of PostScript's path creation functionality. -XClipPathUnits, 344, 0x0158, Image, Exif.Image.XClipPathUnits, SShort, The number of units that span the width of the image, in terms of integer ClipPath coordinates. -YClipPathUnits, 345, 0x0159, Image, Exif.Image.YClipPathUnits, SShort, The number of units that span the height of the image, in terms of integer ClipPath coordinates. -Indexed, 346, 0x015a, Image, Exif.Image.Indexed, Short, Indexed images are images where the 'pixels' do not represent color values, but rather an index (usually 8-bit) into a separate color table, the ColorMap. -JPEGTables, 347, 0x015b, Image, Exif.Image.JPEGTables, Undefined, This optional tag may be used to encode the JPEG quantization andHuffman tables for subsequent use by the JPEG decompression process. -OPIProxy, 351, 0x015f, Image, Exif.Image.OPIProxy, Short, OPIProxy gives information concerning whether this image is a low-resolution proxy of a high-resolution image (Adobe OPI). -JPEGProc, 512, 0x0200, Image, Exif.Image.JPEGProc, Long, This field indicates the process used to produce the compressed data -JPEGInterchangeFormat, 513, 0x0201, Image, Exif.Image.JPEGInterchangeFormat, Long, The offset to the start byte (SOI) of JPEG compressed thumbnail data. This is not used for primary image JPEG data. -JPEGInterchangeFormatLength, 514, 0x0202, Image, Exif.Image.JPEGInterchangeFormatLength, Long, The number of bytes of JPEG compressed thumbnail data. This is not used for primary image JPEG data. JPEG thumbnails are not divided but are recorded as a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not be recorded. Compressed thumbnails must be recorded in no more than 64 Kbytes, including all other data to be recorded in APP1. -JPEGRestartInterval, 515, 0x0203, Image, Exif.Image.JPEGRestartInterval, Short, This Field indicates the length of the restart interval used in the compressed image data. -JPEGLosslessPredictors, 517, 0x0205, Image, Exif.Image.JPEGLosslessPredictors, Short, This Field points to a list of lossless predictor-selection values, one per component. -JPEGPointTransforms, 518, 0x0206, Image, Exif.Image.JPEGPointTransforms, Short, This Field points to a list of point transform values, one per component. -JPEGQTables, 519, 0x0207, Image, Exif.Image.JPEGQTables, Long, This Field points to a list of offsets to the quantization tables, one per component. -JPEGDCTables, 520, 0x0208, Image, Exif.Image.JPEGDCTables, Long, This Field points to a list of offsets to the DC Huffman tables or the lossless Huffman tables, one per component. -JPEGACTables, 521, 0x0209, Image, Exif.Image.JPEGACTables, Long, This Field points to a list of offsets to the Huffman AC tables, one per component. -YCbCrCoefficients, 529, 0x0211, Image, Exif.Image.YCbCrCoefficients, Rational, The matrix coefficients for transformation from RGB to YCbCr image data. No default is given in TIFF; but here the value given in Appendix E, "Color Space Guidelines", is used as the default. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability this condition. -YCbCrSubSampling, 530, 0x0212, Image, Exif.Image.YCbCrSubSampling, Short, The sampling ratio of chrominance components in relation to the luminance component. In JPEG compressed data a JPEG marker is used instead of this tag. -YCbCrPositioning, 531, 0x0213, Image, Exif.Image.YCbCrPositioning, Short, The position of chrominance components in relation to the luminance component. This field is designated only for JPEG compressed data or uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr = 4:2:2 it is recommended in this standard that 2 (co-sited) be used to record data, in order to improve the image quality when viewed on TV systems. When this field does not exist, the reader shall assume the TIFF default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is recommended. If the reader does not have the capability of supporting both kinds of , it shall follow the TIFF default regardless of the value in this field. It is preferable that readers be able to support both centered and co-sited positioning. -ReferenceBlackWhite, 532, 0x0214, Image, Exif.Image.ReferenceBlackWhite, Rational, The reference black point value and reference white point value. No defaults are given in TIFF, but the values below are given as defaults here. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability these conditions. -XMLPacket, 700, 0x02bc, Image, Exif.Image.XMLPacket, Byte, XMP Metadata (Adobe technote 9-14-02) -Rating, 18246, 0x4746, Image, Exif.Image.Rating, Short, Rating tag used by Windows -RatingPercent, 18249, 0x4749, Image, Exif.Image.RatingPercent, Short, Rating tag used by Windows, value in percent -ImageID, 32781, 0x800d, Image, Exif.Image.ImageID, Ascii, ImageID is the full pathname of the original, high-resolution image, or any other identifying string that uniquely identifies the original image (Adobe OPI). -CFARepeatPatternDim, 33421, 0x828d, Image, Exif.Image.CFARepeatPatternDim, Short, Contains two values representing the minimum rows and columns to define the repeating patterns of the color filter array -CFAPattern, 33422, 0x828e, Image, Exif.Image.CFAPattern, Byte, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods -BatteryLevel, 33423, 0x828f, Image, Exif.Image.BatteryLevel, Rational, Contains a value of the battery level as a fraction or string -Copyright, 33432, 0x8298, Image, Exif.Image.Copyright, Ascii, Copyright information. In this standard the tag is used to indicate both the photographer and editor copyrights. It is the copyright notice of the person or organization claiming rights to the image. The Interoperability copyright statement including date and rights should be written in this field; e.g., "Copyright, John Smith, 19xx. All rights reserved.". In this standard the field records both the photographer and editor copyrights, with each recorded in a separate part of the statement. When there is a clear distinction between the photographer and editor copyrights, these are to be written in the order of photographer followed by editor copyright, separated by NULL (in this case since the statement also ends with a NULL, there are two NULL codes). When only the photographer copyright is given, it is terminated by one NULL code . When only the editor copyright is given, the photographer copyright part consists of one space followed by a terminating NULL code, then the editor copyright is given. When the field is left blank, it is treated as unknown. -ExposureTime, 33434, 0x829a, Image, Exif.Image.ExposureTime, Rational, Exposure time, given in seconds. -FNumber, 33437, 0x829d, Image, Exif.Image.FNumber, Rational, The F number. -IPTCNAA, 33723, 0x83bb, Image, Exif.Image.IPTCNAA, Long, Contains an IPTC/NAA record -ImageResources, 34377, 0x8649, Image, Exif.Image.ImageResources, Byte, Contains information embedded by the Adobe Photoshop application -ExifTag, 34665, 0x8769, Image, Exif.Image.ExifTag, Long, A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure as that of the IFD specified in TIFF. ordinarily, however, it does not contain image data as in the case of TIFF. -InterColorProfile, 34675, 0x8773, Image, Exif.Image.InterColorProfile, Undefined, Contains an InterColor Consortium (ICC) format color space characterization/profile -ExposureProgram, 34850, 0x8822, Image, Exif.Image.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Image, Exif.Image.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. -GPSTag, 34853, 0x8825, Image, Exif.Image.GPSTag, Long, A pointer to the GPS Info IFD. The Interoperability structure of the GPS Info IFD, like that of Exif IFD, has no image data. -ISOSpeedRatings, 34855, 0x8827, Image, Exif.Image.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Image, Exif.Image.OECF, Undefined, Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524. -Interlace, 34857, 0x8829, Image, Exif.Image.Interlace, Short, Indicates the field number of multifield images. -TimeZoneOffset, 34858, 0x882a, Image, Exif.Image.TimeZoneOffset, SShort, This optional tag encodes the time zone of the camera clock (relativeto Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the picture was taken. It may also contain the time zone offsetof the clock used to create the DateTime tag-value when the image wasmodified. -SelfTimerMode, 34859, 0x882b, Image, Exif.Image.SelfTimerMode, Short, Number of seconds image capture was delayed from button press. -DateTimeOriginal, 36867, 0x9003, Image, Exif.Image.DateTimeOriginal, Ascii, The date and time when the original image data was generated. -CompressedBitsPerPixel, 37122, 0x9102, Image, Exif.Image.CompressedBitsPerPixel, Rational, Specific to compressed data; states the compressed bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Image, Exif.Image.ShutterSpeedValue, SRational, Shutter speed. -ApertureValue, 37378, 0x9202, Image, Exif.Image.ApertureValue, Rational, The lens aperture. -BrightnessValue, 37379, 0x9203, Image, Exif.Image.BrightnessValue, SRational, The value of brightness. -ExposureBiasValue, 37380, 0x9204, Image, Exif.Image.ExposureBiasValue, SRational, The exposure bias. -MaxApertureValue, 37381, 0x9205, Image, Exif.Image.MaxApertureValue, Rational, The smallest F number of the lens. -SubjectDistance, 37382, 0x9206, Image, Exif.Image.SubjectDistance, SRational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Image, Exif.Image.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Image, Exif.Image.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Image, Exif.Image.Flash, Short, Indicates the status of flash when the image was shot. -FocalLength, 37386, 0x920a, Image, Exif.Image.FocalLength, Rational, The actual focal length of the lens, in mm. -FlashEnergy, 37387, 0x920b, Image, Exif.Image.FlashEnergy, Rational, Amount of flash energy (BCPS). -SpatialFrequencyResponse, 37388, 0x920c, Image, Exif.Image.SpatialFrequencyResponse, Undefined, SFR of the camera. -Noise, 37389, 0x920d, Image, Exif.Image.Noise, Undefined, Noise measurement values. -FocalPlaneXResolution, 37390, 0x920e, Image, Exif.Image.FocalPlaneXResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth direction for main image. -FocalPlaneYResolution, 37391, 0x920f, Image, Exif.Image.FocalPlaneYResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength direction for main image. -FocalPlaneResolutionUnit, 37392, 0x9210, Image, Exif.Image.FocalPlaneResolutionUnit, Short, Unit of measurement for FocalPlaneXResolution(37390) and FocalPlaneYResolution(37391). -ImageNumber, 37393, 0x9211, Image, Exif.Image.ImageNumber, Long, Number assigned to an image, e.g., in a chained image burst. -SecurityClassification, 37394, 0x9212, Image, Exif.Image.SecurityClassification, Ascii, Security classification assigned to the image. -ImageHistory, 37395, 0x9213, Image, Exif.Image.ImageHistory, Ascii, Record of what has been done to the image. -SubjectLocation, 37396, 0x9214, Image, Exif.Image.SubjectLocation, Short, Indicates the location and area of the main subject in the overall scene. -ExposureIndex, 37397, 0x9215, Image, Exif.Image.ExposureIndex, Rational, Encodes the camera exposure index setting when image was captured. -TIFFEPStandardID, 37398, 0x9216, Image, Exif.Image.TIFFEPStandardID, Byte, Contains four ASCII characters representing the TIFF/EP standard version of a TIFF/EP file, eg '1', '0', '0', '0' -SensingMethod, 37399, 0x9217, Image, Exif.Image.SensingMethod, Short, Type of image sensor. -XPTitle, 40091, 0x9c9b, Image, Exif.Image.XPTitle, Byte, Title tag used by Windows, encoded in UCS2 -XPComment, 40092, 0x9c9c, Image, Exif.Image.XPComment, Byte, Comment tag used by Windows, encoded in UCS2 -XPAuthor, 40093, 0x9c9d, Image, Exif.Image.XPAuthor, Byte, Author tag used by Windows, encoded in UCS2 -XPKeywords, 40094, 0x9c9e, Image, Exif.Image.XPKeywords, Byte, Keywords tag used by Windows, encoded in UCS2 -XPSubject, 40095, 0x9c9f, Image, Exif.Image.XPSubject, Byte, Subject tag used by Windows, encoded in UCS2 -PrintImageMatching, 50341, 0xc4a5, Image, Exif.Image.PrintImageMatching, Undefined, Print Image Matching, description needed. -DNGVersion, 50706, 0xc612, Image, Exif.Image.DNGVersion, Byte, This tag encodes the DNG four-tier version number. For files compliant with version 1.1.0.0 of the DNG specification, this tag should contain the bytes: 1, 1, 0, 0. -DNGBackwardVersion, 50707, 0xc613, Image, Exif.Image.DNGBackwardVersion, Byte, This tag specifies the oldest version of the Digital Negative specification for which a file is compatible. Readers shouldnot attempt to read a file if this tag specifies a version number that is higher than the version number of the specification the reader was based on. In addition to checking the version tags, readers should, for all tags, check the types, counts, and values, to verify it is able to correctly read the file. -UniqueCameraModel, 50708, 0xc614, Image, Exif.Image.UniqueCameraModel, Ascii, Defines a unique, non-localized name for the camera model that created the image in the raw file. This name should include the manufacturer's name to avoid conflicts, and should not be localized, even if the camera name itself is localized for different markets (see LocalizedCameraModel). This string may be used by reader software to index into per-model preferences and replacement profiles. -LocalizedCameraModel, 50709, 0xc615, Image, Exif.Image.LocalizedCameraModel, Byte, Similar to the UniqueCameraModel field, except the name can be localized for different markets to match the localization of the camera name. -CFAPlaneColor, 50710, 0xc616, Image, Exif.Image.CFAPlaneColor, Byte, Provides a mapping between the values in the CFAPattern tag and the plane numbers in LinearRaw space. This is a required tag for non-RGB CFA images. -CFALayout, 50711, 0xc617, Image, Exif.Image.CFALayout, Short, Describes the spatial layout of the CFA. -LinearizationTable, 50712, 0xc618, Image, Exif.Image.LinearizationTable, Short, Describes a lookup table that maps stored values into linear values. This tag is typically used to increase compression ratios by storing the raw data in a non-linear, more visually uniform space with fewer total encoding levels. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelRepeatDim, 50713, 0xc619, Image, Exif.Image.BlackLevelRepeatDim, Short, Specifies repeat pattern size for the BlackLevel tag. -BlackLevel, 50714, 0xc61a, Image, Exif.Image.BlackLevel, Rational, Specifies the zero light (a.k.a. thermal black or black current) encoding level, as a repeating pattern. The origin of this pattern is the top-left corner of the ActiveArea rectangle. The values are stored in row-column-sample scan order. -BlackLevelDeltaH, 50715, 0xc61b, Image, Exif.Image.BlackLevelDeltaH, SRational, If the zero light encoding level is a function of the image column, BlackLevelDeltaH specifies the difference between the zero light encoding level for each column and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelDeltaV, 50716, 0xc61c, Image, Exif.Image.BlackLevelDeltaV, SRational, If the zero light encoding level is a function of the image row, this tag specifies the difference between the zero light encoding level for each row and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -WhiteLevel, 50717, 0xc61d, Image, Exif.Image.WhiteLevel, Short, This tag specifies the fully saturated encoding level for the raw sample values. Saturation is caused either by the sensor itself becoming highly non-linear in response, or by the camera's analog to digital converter clipping. -DefaultScale, 50718, 0xc61e, Image, Exif.Image.DefaultScale, Rational, DefaultScale is required for cameras with non-square pixels. It specifies the default scale factors for each direction to convert the image to square pixels. Typically these factors are selected to approximately preserve total pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such as the Fujifilm SuperCCD, these two values should usually differ by a factor of 2.0. -DefaultCropOrigin, 50719, 0xc61f, Image, Exif.Image.DefaultCropOrigin, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropOrigin specifies the origin of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied), relative to the top-left corner of the ActiveArea rectangle. -DefaultCropSize, 50720, 0xc620, Image, Exif.Image.DefaultCropSize, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropSize specifies the size of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied). -ColorMatrix1, 50721, 0xc621, Image, Exif.Image.ColorMatrix1, SRational, ColorMatrix1 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the first calibration illuminant. The matrix values are stored in row scan order. The ColorMatrix1 tag is required for all non-monochrome DNG files. -ColorMatrix2, 50722, 0xc622, Image, Exif.Image.ColorMatrix2, SRational, ColorMatrix2 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the second calibration illuminant. The matrix values are stored in row scan order. -CameraCalibration1, 50723, 0xc623, Image, Exif.Image.CameraCalibration1, SRational, CameraClalibration1 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the first calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix1 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -CameraCalibration2, 50724, 0xc624, Image, Exif.Image.CameraCalibration2, SRational, CameraCalibration2 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the second calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix2 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -ReductionMatrix1, 50725, 0xc625, Image, Exif.Image.ReductionMatrix1, SRational, ReductionMatrix1 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the first calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -ReductionMatrix2, 50726, 0xc626, Image, Exif.Image.ReductionMatrix2, SRational, ReductionMatrix2 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the second calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -AnalogBalance, 50727, 0xc627, Image, Exif.Image.AnalogBalance, Rational, Normally the stored raw values are not white balanced, since any digital white balancing will reduce the dynamic range of the final image if the user decides to later adjust the white balance; however, if camera hardware is capable of white balancing the color channels before the signal is digitized, it can improve the dynamic range of the final image. AnalogBalance defines the gain, either analog (recommended) or digital (not recommended) that has been applied the stored raw values. -AsShotNeutral, 50728, 0xc628, Image, Exif.Image.AsShotNeutral, Short, Specifies the selected white balance at time of capture, encoded as the coordinates of a perfectly neutral color in linear reference space values. The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag. -AsShotWhiteXY, 50729, 0xc629, Image, Exif.Image.AsShotWhiteXY, Rational, Specifies the selected white balance at time of capture, encoded as x-y chromaticity coordinates. The inclusion of this tag precludes the inclusion of the AsShotNeutral tag. -BaselineExposure, 50730, 0xc62a, Image, Exif.Image.BaselineExposure, SRational, Camera models vary in the trade-off they make between highlight headroom and shadow noise. Some leave a significant amount of highlight headroom during a normal exposure. This allows significant negative exposure compensation to be applied during raw conversion, but also means normal exposures will contain more shadow noise. Other models leave less headroom during normal exposures. This allows for less negative exposure compensation, but results in lower shadow noise for normal exposures. Because of these differences, a raw converter needs to vary the zero point of its exposure compensation control from model to model. BaselineExposure specifies by how much (in EV units) to move the zero point. Positive values result in brighter default results, while negative values result in darker default results. -BaselineNoise, 50731, 0xc62b, Image, Exif.Image.BaselineNoise, Rational, Specifies the relative noise level of the camera model at a baseline ISO value of 100, compared to a reference camera model. Since noise levels tend to vary approximately with the square root of the ISO value, a raw converter can use this value, combined with the current ISO, to estimate the relative noise level of the current image. -BaselineSharpness, 50732, 0xc62c, Image, Exif.Image.BaselineSharpness, Rational, Specifies the relative amount of sharpening required for this camera model, compared to a reference camera model. Camera models vary in the strengths of their anti-aliasing filters. Cameras with weak or no filters require less sharpening than cameras with strong anti-aliasing filters. -BayerGreenSplit, 50733, 0xc62d, Image, Exif.Image.BayerGreenSplit, Long, Only applies to CFA images using a Bayer pattern filter array. This tag specifies, in arbitrary units, how closely the values of the green pixels in the blue/green rows track the values of the green pixels in the red/green rows. A value of zero means the two kinds of green pixels track closely, while a non-zero value means they sometimes diverge. The useful range for this tag is from 0 (no divergence) to about 5000 (quite large divergence). -LinearResponseLimit, 50734, 0xc62e, Image, Exif.Image.LinearResponseLimit, Rational, Some sensors have an unpredictable non-linearity in their response as they near the upper limit of their encoding range. This non-linearity results in color shifts in the highlight areas of the resulting image unless the raw converter compensates for this effect. LinearResponseLimit specifies the fraction of the encoding range above which the response may become significantly non-linear. -CameraSerialNumber, 50735, 0xc62f, Image, Exif.Image.CameraSerialNumber, Ascii, CameraSerialNumber contains the serial number of the camera or camera body that captured the image. -LensInfo, 50736, 0xc630, Image, Exif.Image.LensInfo, Rational, Contains information about the lens that captured the image. If the minimum f-stops are unknown, they should be encoded as 0/0. -ChromaBlurRadius, 50737, 0xc631, Image, Exif.Image.ChromaBlurRadius, Rational, ChromaBlurRadius provides a hint to the DNG reader about how much chroma blur should be applied to the image. If this tag is omitted, the reader will use its default amount of chroma blurring. Normally this tag is only included for non-CFA images, since the amount of chroma blur required for mosaic images is highly dependent on the de-mosaic algorithm, in which case the DNG reader's default value is likely optimized for its particular de-mosaic algorithm. -AntiAliasStrength, 50738, 0xc632, Image, Exif.Image.AntiAliasStrength, Rational, Provides a hint to the DNG reader about how strong the camera's anti-alias filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is prone to aliasing artifacts with some subjects), while a value of 1.0 means a strong anti-alias filter (i.e., the camera almost never has aliasing artifacts). -ShadowScale, 50739, 0xc633, Image, Exif.Image.ShadowScale, SRational, This tag is used by Adobe Camera Raw to control the sensitivity of its 'Shadows' slider. -DNGPrivateData, 50740, 0xc634, Image, Exif.Image.DNGPrivateData, Byte, Provides a way for camera manufacturers to store private data in the DNG file for use by their own raw converters, and to have that data preserved by programs that edit DNG files. -MakerNoteSafety, 50741, 0xc635, Image, Exif.Image.MakerNoteSafety, Short, MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is safe to preserve along with the rest of the EXIF data. File browsers and other image management software processing an image with a preserved MakerNote should be aware that any thumbnail image embedded in the MakerNote may be stale, and may not reflect the current state of the full size image. -CalibrationIlluminant1, 50778, 0xc65a, Image, Exif.Image.CalibrationIlluminant1, Short, The illuminant used for the first set of color calibration tags (ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for this tag are the same as the legal values for the LightSource EXIF tag. -CalibrationIlluminant2, 50779, 0xc65b, Image, Exif.Image.CalibrationIlluminant2, Short, The illuminant used for an optional second set of color calibration tags (ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for this tag are the same as the legal values for the CalibrationIlluminant1 tag; however, if both are included, neither is allowed to have a value of 0 (unknown). -BestQualityScale, 50780, 0xc65c, Image, Exif.Image.BestQualityScale, Rational, For some cameras, the best possible image quality is not achieved by preserving the total pixel count during conversion. For example, Fujifilm SuperCCD images have maximum detail when their total pixel count is doubled. This tag specifies the amount by which the values of the DefaultScale tag need to be multiplied to achieve the best quality image size. -RawDataUniqueID, 50781, 0xc65d, Image, Exif.Image.RawDataUniqueID, Byte, This tag contains a 16-byte unique identifier for the raw image data in the DNG file. DNG readers can use this tag to recognize a particular raw image, even if the file's name or the metadata contained in the file has been changed. If a DNG writer creates such an identifier, it should do so using an algorithm that will ensure that it is very unlikely two different images will end up having the same identifier. -OriginalRawFileName, 50827, 0xc68b, Image, Exif.Image.OriginalRawFileName, Byte, If the DNG file was converted from a non-DNG raw file, then this tag contains the file name of that original raw file. -OriginalRawFileData, 50828, 0xc68c, Image, Exif.Image.OriginalRawFileData, Undefined, If the DNG file was converted from a non-DNG raw file, then this tag contains the compressed contents of that original raw file. The contents of this tag always use the big-endian byte order. The tag contains a sequence of data blocks. Future versions of the DNG specification may define additional data blocks, so DNG readers should ignore extra bytes when parsing this tag. DNG readers should also detect the case where data blocks are missing from the end of the sequence, and should assume a default value for all the missing blocks. There are no padding or alignment bytes between data blocks. -ActiveArea, 50829, 0xc68d, Image, Exif.Image.ActiveArea, Short, This rectangle defines the active (non-masked) pixels of the sensor. The order of the rectangle coordinates is: top, left, bottom, right. -MaskedAreas, 50830, 0xc68e, Image, Exif.Image.MaskedAreas, Short, This tag contains a list of non-overlapping rectangle coordinates of fully masked pixels, which can be optionally used by DNG readers to measure the black encoding level. The order of each rectangle's coordinates is: top, left, bottom, right. If the raw image data has already had its black encoding level subtracted, then this tag should not be used, since the masked pixels are no longer useful. -AsShotICCProfile, 50831, 0xc68f, Image, Exif.Image.AsShotICCProfile, Undefined, This tag contains an ICC profile that, in conjunction with the AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to specify a default color rendering from camera color space coordinates (linear reference values) into the ICC profile connection space. The ICC profile connection space is an output referred colorimetric space, whereas the other color calibration tags in DNG specify a conversion into a scene referred colorimetric space. This means that the rendering in this profile should include any desired tone and gamut mapping needed to convert between scene referred values and output referred values. -AsShotPreProfileMatrix, 50832, 0xc690, Image, Exif.Image.AsShotPreProfileMatrix, SRational, This tag is used in conjunction with the AsShotICCProfile tag. It specifies a matrix that should be applied to the camera color space coordinates before processing the values through the ICC profile specified in the AsShotICCProfile tag. The matrix is stored in the row scan order. If ColorPlanes is greater than three, then this matrix can (but is not required to) reduce the dimensionality of the color data down to three components, in which case the AsShotICCProfile should have three rather than ColorPlanes input components. -CurrentICCProfile, 50833, 0xc691, Image, Exif.Image.CurrentICCProfile, Undefined, This tag is used in conjunction with the CurrentPreProfileMatrix tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -CurrentPreProfileMatrix, 50834, 0xc692, Image, Exif.Image.CurrentPreProfileMatrix, SRational, This tag is used in conjunction with the CurrentICCProfile tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -ColorimetricReference, 50879, 0xc6bf, Image, Exif.Image.ColorimetricReference, Short, The DNG color model documents a transform between camera colors and CIE XYZ values. This tag describes the colorimetric reference for the CIE XYZ values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-referred, using the ICC profile perceptual dynamic range. This tag allows output-referred data to be stored in DNG files and still processed correctly by DNG readers. -CameraCalibrationSignature, 50931, 0xc6f3, Image, Exif.Image.CameraCalibrationSignature, Byte, A UTF-8 encoded string associated with the CameraCalibration1 and CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags should only be used in the DNG color transform if the string stored in the CameraCalibrationSignature tag exactly matches the string stored in the ProfileCalibrationSignature tag for the selected camera profile. -ProfileCalibrationSignature, 50932, 0xc6f4, Image, Exif.Image.ProfileCalibrationSignature, Byte, A UTF-8 encoded string associated with the camera profile tags. The CameraCalibration1 and CameraCalibration2 tags should only be used in the DNG color transfer if the string stored in the CameraCalibrationSignature tag exactly matches the string stored in the ProfileCalibrationSignature tag for the selected camera profile. -AsShotProfileName, 50934, 0xc6f6, Image, Exif.Image.AsShotProfileName, Byte, A UTF-8 encoded string containing the name of the "as shot" camera profile, if any. -NoiseReductionApplied, 50935, 0xc6f7, Image, Exif.Image.NoiseReductionApplied, Rational, This tag indicates how much noise reduction has been applied to the raw data on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has been applied. A 1.0 value indicates that the "ideal" amount of noise reduction has been applied, i.e. that the DNG reader should not apply additional noise reduction by default. A value of 0/0 indicates that this parameter is unknown. -ProfileName, 50936, 0xc6f8, Image, Exif.Image.ProfileName, Byte, A UTF-8 encoded string containing the name of the camera profile. This tag is optional if there is only a single camera profile stored in the file but is required for all camera profiles if there is more than one camera profile stored in the file. -ProfileHueSatMapDims, 50937, 0xc6f9, Image, Exif.Image.ProfileHueSatMapDims, Long, This tag specifies the number of input samples in each dimension of the hue/saturation/value mapping tables. The data for these tables are stored in ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case has ValueDivisions equal to 1, so only hue and saturation are used as inputs to the mapping table. -ProfileHueSatMapData1, 50938, 0xc6fa, Image, Exif.Image.ProfileHueSatMapData1, Float, This tag contains the data for the first hue/saturation/value mapping table. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees; the second entry is saturation scale factor; and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -ProfileHueSatMapData2, 50939, 0xc6fb, Image, Exif.Image.ProfileHueSatMapData2, Float, This tag contains the data for the second hue/saturation/value mapping table. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees; the second entry is a saturation scale factor; and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -ProfileToneCurve, 50940, 0xc6fc, Image, Exif.Image.ProfileToneCurve, Float, This tag contains a default tone curve that can be applied while processing the image as a starting point for user adjustments. The curve is specified as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each sample has an input value in the range of 0.0 to 1.0, and an output value in the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and the last sample is required to be (1.0, 1.0). Interpolated the curve using a cubic spline. -ProfileEmbedPolicy, 50941, 0xc6fd, Image, Exif.Image.ProfileEmbedPolicy, Long, This tag contains information about the usage rules for the associated camera profile. -ProfileCopyright, 50942, 0xc6fe, Image, Exif.Image.ProfileCopyright, Byte, A UTF-8 encoded string containing the copyright information for the camera profile. This string always should be preserved along with the other camera profile tags. -ForwardMatrix1, 50964, 0xc714, Image, Exif.Image.ForwardMatrix1, SRational, This tag defines a matrix that maps white balanced camera colors to XYZ D50 colors. -ForwardMatrix2, 50965, 0xc715, Image, Exif.Image.ForwardMatrix2, SRational, This tag defines a matrix that maps white balanced camera colors to XYZ D50 colors. -PreviewApplicationName, 50966, 0xc716, Image, Exif.Image.PreviewApplicationName, Byte, A UTF-8 encoded string containing the name of the application that created the preview stored in the IFD. -PreviewApplicationVersion, 50967, 0xc717, Image, Exif.Image.PreviewApplicationVersion, Byte, A UTF-8 encoded string containing the version number of the application that created the preview stored in the IFD. -PreviewSettingsName, 50968, 0xc718, Image, Exif.Image.PreviewSettingsName, Byte, A UTF-8 encoded string containing the name of the conversion settings (for example, snapshot name) used for the preview stored in the IFD. -PreviewSettingsDigest, 50969, 0xc719, Image, Exif.Image.PreviewSettingsDigest, Byte, A unique ID of the conversion settings (for example, MD5 digest) used to render the preview stored in the IFD. -PreviewColorSpace, 50970, 0xc71a, Image, Exif.Image.PreviewColorSpace, Long, This tag specifies the color space in which the rendered preview in this IFD is stored. The default value for this tag is sRGB for color previews and Gray Gamma 2.2 for monochrome previews. -PreviewDateTime, 50971, 0xc71b, Image, Exif.Image.PreviewDateTime, Ascii, This tag is an ASCII string containing the name of the date/time at which the preview stored in the IFD was rendered. The date/time is encoded using ISO 8601 format. -RawImageDigest, 50972, 0xc71c, Image, Exif.Image.RawImageDigest, Undefined, This tag is an MD5 digest of the raw image data. All pixels in the image are processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep (16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The data for each pixel is processed in little-endian byte order. -OriginalRawFileDigest, 50973, 0xc71d, Image, Exif.Image.OriginalRawFileDigest, Undefined, This tag is an MD5 digest of the data stored in the OriginalRawFileData tag. -SubTileBlockSize, 50974, 0xc71e, Image, Exif.Image.SubTileBlockSize, Long, Normally, the pixels within a tile are stored in simple row-scan order. This tag specifies that the pixels within a tile should be grouped first into rectangular blocks of the specified size. These blocks are stored in row-scan order. Within each block, the pixels are stored in row-scan order. The use of a non-default value for this tag requires setting the DNGBackwardVersion tag to at least 1.2.0.0. -RowInterleaveFactor, 50975, 0xc71f, Image, Exif.Image.RowInterleaveFactor, Long, This tag specifies that rows of the image are stored in interleaved order. The value of the tag specifies the number of interleaved fields. The use of a non-default value for this tag requires setting the DNGBackwardVersion tag to at least 1.2.0.0. -ProfileLookTableDims, 50981, 0xc725, Image, Exif.Image.ProfileLookTableDims, Long, This tag specifies the number of input samples in each dimension of a default "look" table. The data for this table is stored in the ProfileLookTableData tag. -ProfileLookTableData, 50982, 0xc726, Image, Exif.Image.ProfileLookTableData, Float, This tag contains a default "look" table that can be applied while processing the image as a starting point for user adjustment. This table uses the same format as the tables stored in the ProfileHueSatMapData1 and ProfileHueSatMapData2 tags, and is applied in the same color space. However, it should be applied later in the processing pipe, after any exposure compensation and/or fill light stages, but before any tone curve stage. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees, the second entry is a saturation scale factor, and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -OpcodeList1, 51008, 0xc740, Image, Exif.Image.OpcodeList1, Undefined, Specifies the list of opcodes that should be applied to the raw image, as read directly from the file. -OpcodeList2, 51009, 0xc741, Image, Exif.Image.OpcodeList2, Undefined, Specifies the list of opcodes that should be applied to the raw image, just after it has been mapped to linear reference values. -OpcodeList3, 51022, 0xc74e, Image, Exif.Image.OpcodeList3, Undefined, Specifies the list of opcodes that should be applied to the raw image, just after it has been demosaiced. -NoiseProfile, 51041, 0xc761, Image, Exif.Image.NoiseProfile, Double, NoiseProfile describes the amount of noise in a raw image. Specifically, this tag models the amount of signal-dependent photon (shot) noise and signal-independent sensor readout noise, two common sources of noise in raw images. The model assumes that the noise is white and spatially independent, ignoring fixed pattern effects and other sources of noise (e.g., pixel response non-uniformity, spatially-dependent thermal effects, etc.). -ExposureTime, 33434, 0x829a, Photo, Exif.Photo.ExposureTime, Rational, Exposure time, given in seconds (sec). -FNumber, 33437, 0x829d, Photo, Exif.Photo.FNumber, Rational, The F number. -ExposureProgram, 34850, 0x8822, Photo, Exif.Photo.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Photo, Exif.Photo.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. The tag value is an ASCII string compatible with the standard developed by the ASTM Technical Committee. -ISOSpeedRatings, 34855, 0x8827, Photo, Exif.Photo.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Photo, Exif.Photo.OECF, Undefined, Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO 14524. is the relationship between the camera optical input and the image values. -SensitivityType, 34864, 0x8830, Photo, Exif.Photo.SensitivityType, Short, The SensitivityType tag indicates PhotographicSensitivity tag. which one of the parameters of ISO12232 is the Although it is an optional tag, it should be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, or 7 may be used in case that the values of plural parameters are the same. -StandardOutputSensitivity, 34865, 0x8831, Photo, Exif.Photo.StandardOutputSensitivity, Long, This tag indicates the standard output sensitivity value of a camera or input device defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -RecommendedExposureIndex, 34866, 0x8832, Photo, Exif.Photo.RecommendedExposureIndex, Long, This tag indicates the recommended exposure index value of a camera or input device defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -ISOSpeed, 34867, 0x8833, Photo, Exif.Photo.ISOSpeed, Long, This tag indicates the ISO speed value of a camera or input device that is defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -ISOSpeedLatitudeyyy, 34868, 0x8834, Photo, Exif.Photo.ISOSpeedLatitudeyyy, Long, This tag indicates the ISO speed latitude yyy value of a camera or input device that is defined in ISO 12232. However, this tag shall not be recorded without ISOSpeed and ISOSpeedLatitudezzz. -ISOSpeedLatitudezzz, 34869, 0x8835, Photo, Exif.Photo.ISOSpeedLatitudezzz, Long, This tag indicates the ISO speed latitude zzz value of a camera or input device that is defined in ISO 12232. However, this tag shall not be recorded without ISOSpeed and ISOSpeedLatitudeyyy. -ExifVersion, 36864, 0x9000, Photo, Exif.Photo.ExifVersion, Undefined, The version of this standard supported. Nonexistence of this field is taken to mean nonconformance to the standard. -DateTimeOriginal, 36867, 0x9003, Photo, Exif.Photo.DateTimeOriginal, Ascii, The date and time when the original image data was generated. For a digital still camera the date and time the picture was taken are recorded. -DateTimeDigitized, 36868, 0x9004, Photo, Exif.Photo.DateTimeDigitized, Ascii, The date and time when the image was stored as digital data. -ComponentsConfiguration, 37121, 0x9101, Photo, Exif.Photo.ComponentsConfiguration, Undefined, Information specific to compressed data. The channels of each component are arranged in order from the 1st component to the 4th. For uncompressed data the data arrangement is given in the tag. However, since can only express the order of Y, Cb and Cr, this tag is provided for cases when compressed data uses components other than Y, Cb, and Cr and to enable support of other sequences. -CompressedBitsPerPixel, 37122, 0x9102, Photo, Exif.Photo.CompressedBitsPerPixel, Rational, Information specific to compressed data. The compression mode used for a compressed image is indicated in unit bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Photo, Exif.Photo.ShutterSpeedValue, SRational, Shutter speed. The unit is the APEX (Additive System of Photographic Exposure) setting. -ApertureValue, 37378, 0x9202, Photo, Exif.Photo.ApertureValue, Rational, The lens aperture. The unit is the APEX value. -BrightnessValue, 37379, 0x9203, Photo, Exif.Photo.BrightnessValue, SRational, The value of brightness. The unit is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -ExposureBiasValue, 37380, 0x9204, Photo, Exif.Photo.ExposureBiasValue, SRational, The exposure bias. The units is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -MaxApertureValue, 37381, 0x9205, Photo, Exif.Photo.MaxApertureValue, Rational, The smallest F number of the lens. The unit is the APEX value. Ordinarily it is given in the range of 00.00 to 99.99, but it is not limited to this range. -SubjectDistance, 37382, 0x9206, Photo, Exif.Photo.SubjectDistance, Rational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Photo, Exif.Photo.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Photo, Exif.Photo.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Photo, Exif.Photo.Flash, Short, This tag is recorded when an image is taken using a strobe light (flash). -FocalLength, 37386, 0x920a, Photo, Exif.Photo.FocalLength, Rational, The actual focal length of the lens, in mm. Conversion is not made to the focal length of a 35 mm film camera. -SubjectArea, 37396, 0x9214, Photo, Exif.Photo.SubjectArea, Short, This tag indicates the location and area of the main subject in the overall scene. -MakerNote, 37500, 0x927c, Photo, Exif.Photo.MakerNote, Undefined, A tag for manufacturers of Exif writers to record any desired information. The contents are up to the manufacturer. -UserComment, 37510, 0x9286, Photo, Exif.Photo.UserComment, Comment, A tag for Exif users to write keywords or comments on the image besides those in , and without the character code limitations of the tag. -SubSecTime, 37520, 0x9290, Photo, Exif.Photo.SubSecTime, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeOriginal, 37521, 0x9291, Photo, Exif.Photo.SubSecTimeOriginal, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeDigitized, 37522, 0x9292, Photo, Exif.Photo.SubSecTimeDigitized, Ascii, A tag used to record fractions of seconds for the tag. -FlashpixVersion, 40960, 0xa000, Photo, Exif.Photo.FlashpixVersion, Undefined, The FlashPix format version supported by a FPXR file. -ColorSpace, 40961, 0xa001, Photo, Exif.Photo.ColorSpace, Short, The color space information tag is always recorded as the color space specifier. Normally sRGB is used to define the color space based on the PC monitor conditions and environment. If a color space other than sRGB is used, Uncalibrated is set. Image data recorded as Uncalibrated can be treated as sRGB when it is converted to FlashPix. -PixelXDimension, 40962, 0xa002, Photo, Exif.Photo.PixelXDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid width of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. -PixelYDimension, 40963, 0xa003, Photo, Exif.Photo.PixelYDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid height of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. Since data padding is unnecessary in the vertical direction, the number of lines recorded in this valid image height tag will in fact be the same as that recorded in the SOF. -RelatedSoundFile, 40964, 0xa004, Photo, Exif.Photo.RelatedSoundFile, Ascii, This tag is used to record the name of an audio file related to the image data. The only relational information recorded here is the Exif audio file name and extension (an ASCII string consisting of 8 characters + '.' + 3 characters). The path is not recorded. -InteroperabilityTag, 40965, 0xa005, Photo, Exif.Photo.InteroperabilityTag, Long, Interoperability IFD is composed of tags which stores the information to ensure the Interoperability and pointed by the following tag located in Exif IFD. The Interoperability structure of Interoperability IFD is the same as TIFF defined IFD structure but does not contain the image data characteristically compared with normal TIFF IFD. -FlashEnergy, 41483, 0xa20b, Photo, Exif.Photo.FlashEnergy, Rational, Indicates the strobe energy at the time the image is captured, as measured in Beam Candle Power Seconds (BCPS). -SpatialFrequencyResponse, 41484, 0xa20c, Photo, Exif.Photo.SpatialFrequencyResponse, Undefined, This tag records the camera or input device spatial frequency table and SFR values in the direction of image width, image height, and diagonal direction, as specified in ISO 12233. -FocalPlaneXResolution, 41486, 0xa20e, Photo, Exif.Photo.FocalPlaneXResolution, Rational, Indicates the number of pixels in the image width (X) direction per on the camera focal plane. -FocalPlaneYResolution, 41487, 0xa20f, Photo, Exif.Photo.FocalPlaneYResolution, Rational, Indicates the number of pixels in the image height (V) direction per on the camera focal plane. -FocalPlaneResolutionUnit, 41488, 0xa210, Photo, Exif.Photo.FocalPlaneResolutionUnit, Short, Indicates the unit for measuring and . This value is the same as the . -SubjectLocation, 41492, 0xa214, Photo, Exif.Photo.SubjectLocation, Short, Indicates the location of the main subject in the scene. The value of this tag represents the pixel at the center of the main subject relative to the left edge, prior to rotation processing as per the tag. The first value indicates the X column number and second indicates the Y row number. -ExposureIndex, 41493, 0xa215, Photo, Exif.Photo.ExposureIndex, Rational, Indicates the exposure index selected on the camera or input device at the time the image is captured. -SensingMethod, 41495, 0xa217, Photo, Exif.Photo.SensingMethod, Short, Indicates the image sensor type on the camera or input device. -FileSource, 41728, 0xa300, Photo, Exif.Photo.FileSource, Undefined, Indicates the image source. If a DSC recorded the image, this tag value of this tag always be set to 3, indicating that the image was recorded on a DSC. -SceneType, 41729, 0xa301, Photo, Exif.Photo.SceneType, Undefined, Indicates the type of scene. If a DSC recorded the image, this tag value must always be set to 1, indicating that the image was directly photographed. -CFAPattern, 41730, 0xa302, Photo, Exif.Photo.CFAPattern, Undefined, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods. -CustomRendered, 41985, 0xa401, Photo, Exif.Photo.CustomRendered, Short, This tag indicates the use of special processing on image data, such as rendering geared to output. When special processing is performed, the reader is expected to disable or minimize any further processing. -ExposureMode, 41986, 0xa402, Photo, Exif.Photo.ExposureMode, Short, This tag indicates the exposure mode set when the image was shot. In auto-bracketing mode, the camera shoots a series of frames of the same scene at different exposure settings. -WhiteBalance, 41987, 0xa403, Photo, Exif.Photo.WhiteBalance, Short, This tag indicates the white balance mode set when the image was shot. -DigitalZoomRatio, 41988, 0xa404, Photo, Exif.Photo.DigitalZoomRatio, Rational, This tag indicates the digital zoom ratio when the image was shot. If the numerator of the recorded value is 0, this indicates that digital zoom was not used. -FocalLengthIn35mmFilm, 41989, 0xa405, Photo, Exif.Photo.FocalLengthIn35mmFilm, Short, This tag indicates the equivalent focal length assuming a 35mm film camera, in mm. A value of 0 means the focal length is unknown. Note that this tag differs from the tag. -SceneCaptureType, 41990, 0xa406, Photo, Exif.Photo.SceneCaptureType, Short, This tag indicates the type of scene that was shot. It can also be used to record the mode in which the image was shot. Note that this differs from the tag. -GainControl, 41991, 0xa407, Photo, Exif.Photo.GainControl, Short, This tag indicates the degree of overall image gain adjustment. -Contrast, 41992, 0xa408, Photo, Exif.Photo.Contrast, Short, This tag indicates the direction of contrast processing applied by the camera when the image was shot. -Saturation, 41993, 0xa409, Photo, Exif.Photo.Saturation, Short, This tag indicates the direction of saturation processing applied by the camera when the image was shot. -Sharpness, 41994, 0xa40a, Photo, Exif.Photo.Sharpness, Short, This tag indicates the direction of sharpness processing applied by the camera when the image was shot. -DeviceSettingDescription, 41995, 0xa40b, Photo, Exif.Photo.DeviceSettingDescription, Undefined, This tag indicates information on the picture-taking conditions of a particular camera model. The tag is used only to indicate the picture-taking conditions in the reader. -SubjectDistanceRange, 41996, 0xa40c, Photo, Exif.Photo.SubjectDistanceRange, Short, This tag indicates the distance to the subject. -ImageUniqueID, 42016, 0xa420, Photo, Exif.Photo.ImageUniqueID, Ascii, This tag indicates an identifier assigned uniquely to each image. It is recorded as an ASCII string equivalent to hexadecimal notation and 128-bit fixed length. -CameraOwnerName, 42032, 0xa430, Photo, Exif.Photo.CameraOwnerName, Ascii, This tag records the owner of a camera used in photography as an ASCII string. -BodySerialNumber, 42033, 0xa431, Photo, Exif.Photo.BodySerialNumber, Ascii, This tag records the serial number of the body of the camera that was used in photography as an ASCII string. -LensSpecification, 42034, 0xa432, Photo, Exif.Photo.LensSpecification, Rational, This tag notes minimum focal length, maximum focal length, minimum F number in the minimum focal length, and minimum F number in the maximum focal length, which are specification information for the lens that was used in photography. When the minimum F number is unknown, the notation is 0/0 -LensMake, 42035, 0xa433, Photo, Exif.Photo.LensMake, Ascii, This tag records the lens manufactor as an ASCII string. -LensModel, 42036, 0xa434, Photo, Exif.Photo.LensModel, Ascii, This tag records the lens's model name and model number as an ASCII string. -LensSerialNumber, 42037, 0xa435, Photo, Exif.Photo.LensSerialNumber, Ascii, This tag records the serial number of the interchangeable lens that was used in photography as an ASCII string. -InteroperabilityIndex, 1, 0x0001, Iop, Exif.Iop.InteroperabilityIndex, Ascii, Indicates the identification of the Interoperability rule. Use "R98" for stating ExifR98 Rules. Four bytes used including the termination code (NULL). see the separate volume of Recommended Exif Interoperability Rules (ExifR98) for other tags used for ExifR98. -InteroperabilityVersion, 2, 0x0002, Iop, Exif.Iop.InteroperabilityVersion, Undefined, Interoperability version -RelatedImageFileFormat, 4096, 0x1000, Iop, Exif.Iop.RelatedImageFileFormat, Ascii, File format of image file -RelatedImageWidth, 4097, 0x1001, Iop, Exif.Iop.RelatedImageWidth, Long, Image width -RelatedImageLength, 4098, 0x1002, Iop, Exif.Iop.RelatedImageLength, Long, Image height -GPSVersionID, 0, 0x0000, GPSInfo, Exif.GPSInfo.GPSVersionID, Byte, Indicates the version of . The version is given as 2.0.0.0. This tag is mandatory when tag is present. (Note: The tag is given in bytes, unlike the tag. When the version is 2.0.0.0, the tag value is 02000000.H). -GPSLatitudeRef, 1, 0x0001, GPSInfo, Exif.GPSInfo.GPSLatitudeRef, Ascii, Indicates whether the latitude is north or south latitude. The ASCII value 'N' indicates north latitude, and 'S' is south latitude. -GPSLatitude, 2, 0x0002, GPSInfo, Exif.GPSInfo.GPSLatitude, Rational, Indicates the latitude. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is dd/1,mmmm/100,0/1. -GPSLongitudeRef, 3, 0x0003, GPSInfo, Exif.GPSInfo.GPSLongitudeRef, Ascii, Indicates whether the longitude is east or west longitude. ASCII 'E' indicates east longitude, and 'W' is west longitude. -GPSLongitude, 4, 0x0004, GPSInfo, Exif.GPSInfo.GPSLongitude, Rational, Indicates the longitude. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is ddd/1,mmmm/100,0/1. -GPSAltitudeRef, 5, 0x0005, GPSInfo, Exif.GPSInfo.GPSAltitudeRef, Byte, Indicates the altitude used as the reference altitude. If the reference is sea level and the altitude is above sea level, 0 is given. If the altitude is below sea level, a value of 1 is given and the altitude is indicated as an absolute value in the GSPAltitude tag. The reference unit is meters. Note that this tag is BYTE type, unlike other reference tags. -GPSAltitude, 6, 0x0006, GPSInfo, Exif.GPSInfo.GPSAltitude, Rational, Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is expressed as one RATIONAL value. The reference unit is meters. -GPSTimeStamp, 7, 0x0007, GPSInfo, Exif.GPSInfo.GPSTimeStamp, Rational, Indicates the time as UTC (Coordinated Universal Time). is expressed as three RATIONAL values giving the hour, minute, and second (atomic clock). -GPSSatellites, 8, 0x0008, GPSInfo, Exif.GPSInfo.GPSSatellites, Ascii, Indicates the GPS satellites used for measurements. This tag can be used to describe the number of satellites, their ID number, angle of elevation, azimuth, SNR and other information in ASCII notation. The format is not specified. If the GPS receiver is incapable of taking measurements, value of the tag is set to NULL. -GPSStatus, 9, 0x0009, GPSInfo, Exif.GPSInfo.GPSStatus, Ascii, Indicates the status of the GPS receiver when the image is recorded. "A" means measurement is in progress, and "V" means the measurement is Interoperability. -GPSMeasureMode, 10, 0x000a, GPSInfo, Exif.GPSInfo.GPSMeasureMode, Ascii, Indicates the GPS measurement mode. "2" means two-dimensional measurement and "3" means three-dimensional measurement is in progress. -GPSDOP, 11, 0x000b, GPSInfo, Exif.GPSInfo.GPSDOP, Rational, Indicates the GPS DOP (data degree of precision). An HDOP value is written during two-dimensional measurement, and PDOP during three-dimensional measurement. -GPSSpeedRef, 12, 0x000c, GPSInfo, Exif.GPSInfo.GPSSpeedRef, Ascii, Indicates the unit used to express the GPS receiver speed of movement. "K" "M" and "N" represents kilometers per hour, miles per hour, and knots. -GPSSpeed, 13, 0x000d, GPSInfo, Exif.GPSInfo.GPSSpeed, Rational, Indicates the speed of GPS receiver movement. -GPSTrackRef, 14, 0x000e, GPSInfo, Exif.GPSInfo.GPSTrackRef, Ascii, Indicates the reference for giving the direction of GPS receiver movement. "T" denotes true direction and "M" is magnetic direction. -GPSTrack, 15, 0x000f, GPSInfo, Exif.GPSInfo.GPSTrack, Rational, Indicates the direction of GPS receiver movement. The range of values is from 0.00 to 359.99. -GPSImgDirectionRef, 16, 0x0010, GPSInfo, Exif.GPSInfo.GPSImgDirectionRef, Ascii, Indicates the reference for giving the direction of the image when it is captured. "T" denotes true direction and "M" is magnetic direction. -GPSImgDirection, 17, 0x0011, GPSInfo, Exif.GPSInfo.GPSImgDirection, Rational, Indicates the direction of the image when it was captured. The range of values is from 0.00 to 359.99. -GPSMapDatum, 18, 0x0012, GPSInfo, Exif.GPSInfo.GPSMapDatum, Ascii, Indicates the geodetic survey data used by the GPS receiver. If the survey data is restricted to Japan, the value of this tag is "TOKYO" or "WGS-84". -GPSDestLatitudeRef, 19, 0x0013, GPSInfo, Exif.GPSInfo.GPSDestLatitudeRef, Ascii, Indicates whether the latitude of the destination point is north or south latitude. The ASCII value "N" indicates north latitude, and "S" is south latitude. -GPSDestLatitude, 20, 0x0014, GPSInfo, Exif.GPSInfo.GPSDestLatitude, Rational, Indicates the latitude of the destination point. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If latitude is expressed as degrees, minutes and seconds, a typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be dd/1,mmmm/100,0/1. -GPSDestLongitudeRef, 21, 0x0015, GPSInfo, Exif.GPSInfo.GPSDestLongitudeRef, Ascii, Indicates whether the longitude of the destination point is east or west longitude. ASCII "E" indicates east longitude, and "W" is west longitude. -GPSDestLongitude, 22, 0x0016, GPSInfo, Exif.GPSInfo.GPSDestLongitude, Rational, Indicates the longitude of the destination point. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If longitude is expressed as degrees, minutes and seconds, a typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be ddd/1,mmmm/100,0/1. -GPSDestBearingRef, 23, 0x0017, GPSInfo, Exif.GPSInfo.GPSDestBearingRef, Ascii, Indicates the reference used for giving the bearing to the destination point. "T" denotes true direction and "M" is magnetic direction. -GPSDestBearing, 24, 0x0018, GPSInfo, Exif.GPSInfo.GPSDestBearing, Rational, Indicates the bearing to the destination point. The range of values is from 0.00 to 359.99. -GPSDestDistanceRef, 25, 0x0019, GPSInfo, Exif.GPSInfo.GPSDestDistanceRef, Ascii, Indicates the unit used to express the distance to the destination point. "K", "M" and "N" represent kilometers, miles and knots. -GPSDestDistance, 26, 0x001a, GPSInfo, Exif.GPSInfo.GPSDestDistance, Rational, Indicates the distance to the destination point. -GPSProcessingMethod, 27, 0x001b, GPSInfo, Exif.GPSInfo.GPSProcessingMethod, Undefined, A character string recording the name of the method used for location finding. The first byte indicates the character code used, and this is followed by the name of the method. -GPSAreaInformation, 28, 0x001c, GPSInfo, Exif.GPSInfo.GPSAreaInformation, Undefined, A character string recording the name of the GPS area. The first byte indicates the character code used, and this is followed by the name of the GPS area. -GPSDateStamp, 29, 0x001d, GPSInfo, Exif.GPSInfo.GPSDateStamp, Ascii, A character string recording date and time information relative to UTC (Coordinated Universal Time). The format is "YYYY:MM:DD.". -GPSDifferential, 30, 0x001e, GPSInfo, Exif.GPSInfo.GPSDifferential, Short, Indicates whether differential correction is applied to the GPS receiver. -Usage: bin\Debug\tiff-test.exe file - /usr/lib /usr lib - /usr/ / usr - usr . usr - / / - . . . - .. . .. - /// / - /usr/.emacs /usr .emacs - /usr/.emacs/ /usr .emacs - /usr/.emacs// /usr .emacs - usr/.emacs usr .emacs - .emacs . .emacs - .emacs.gz . .emacs.gz .gz - /tmp/image.jpg /tmp image.jpg .jpg -/tmp/.image.jpg /tmp .image.jpg .jpg - /image.jpg / image.jpg .jpg - image.jpg . image.jpg .jpg - image.jpg// . image.jpg .jpg - /////image.jpg / image.jpg .jpg - /foo.bar/image /foo.bar image -/foo.bar/images.tar.gz /foo.bar images.tar.gz .gz -d:\foo.bar\images.tar.gz d:\foo.bar images.tar.gz .gz -Usage: write-test file case - -where case is an integer between 1 and 11 -Usage: bin\Debug\write2-test.exe file -Usage: bin\Debug\xmpparse.exe file -Usage: bin\Debug\xmpparser-test.exe file -Xmp.dc.source XmpText 13 xmpsample.cpp -Xmp.dc.subject XmpBag 2 Palmtree, Rubbertree -Xmp.dc.title LangAlt 2 lang="de-DE" Sonnenuntergang am Strand, lang="en-US" Sunset on the beach -Xmp.dc.one XmpText 2 -1 -Xmp.dc.two XmpText 6 3.1415 -Xmp.dc.three XmpText 3 5/7 -Xmp.dc.four XmpText 3 255 -Xmp.dc.five XmpText 3 256 -Xmp.dc.six XmpText 5 False -Xmp.dc.seven XmpText 5 Seven -Xmp.dc.format XmpText 10 image/jpeg -Xmp.dc.creator XmpSeq 3 1) The first creator, 2) The second creator, 3) And another one -Xmp.dc.description LangAlt 2 lang="x-default" Hello, World, lang="de-DE" Hallo, Welt -Xmp.tiff.ImageDescription LangAlt 2 lang="x-default" TIFF image description, lang="de-DE" TIFF Bildbeschreibung -Xmp.ns.myProperty XmpText 7 myValue -Xmp.xmpDM.videoFrameSize/stDim:w XmpText 2 16 -Xmp.xmpDM.videoFrameSize/stDim:h XmpText 1 9 -Xmp.xmpDM.videoFrameSize/stDim:unit XmpText 4 inch -Xmp.dc.publisher XmpBag 1 James Bond -Xmp.dc.publisher[1]/?ns:role XmpText 12 secret agent -Xmp.dc.creator[2]/?ns:role XmpText 10 programmer -Xmp.xmpBJ.JobRef XmpText 0 type="Bag" -Xmp.xmpBJ.JobRef[1]/stJob:name XmpText 14 Birthday party -Xmp.xmpBJ.JobRef[1]/stJob:role XmpText 12 Photographer -Xmp.xmpBJ.JobRef[2]/stJob:name XmpText 16 Wedding ceremony -Xmp.xmpBJ.JobRef[2]/stJob:role XmpText 8 Best man -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCity XmpText 12 Kuala Lumpur -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCtry XmpText 8 Malaysia -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiUrlWork XmpText 20 http://www.exiv2.org - - - - - - - Palmtree - Rubbertree - - - - - Sonnenuntergang am Strand - Sunset on the beach - - - - - 1) The first creator - - 2) The second creator - programmer - - 3) And another one - - - - - Hello, World - Hallo, Welt - - - - - - James Bond - secret agent - - - - - - TIFF image description - TIFF Bildbeschreibung - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Usage: bin\DebugDLL\addmoddel.exe file -Usage: bin\DebugDLL\convert-test.exe file -Usage: bin\DebugDLL\exifcomment.exe file -Usage: bin\DebugDLL\exifdata-test.exe file -Usage: bin\DebugDLL\exifprint.exe file -Usage: exiv2.exe [ options ] [ action ] file ... - -Manipulate the Exif metadata of images. -Usage: bin\DebugDLL\iotest.exe filein fileout1 fileout2 -fileouts are overwritten and should match filein exactly -Usage: bin\DebugDLL\iptceasy.exe file -Usage: bin\DebugDLL\iptcprint.exe file -Usage: bin\DebugDLL\iptctest.exe image -Commands read from stdin. -Usage: bin\DebugDLL\largeiptc-test.exe image datafile - -Reads and writes raw metadata. Use -h option for help. -Usage: metacopy.exe [-iecaph] readfile writefile -Usage: bin\DebugDLL\mmap-test.exe file -Usage: bin\DebugDLL\prevtest.exe file -string long float Rational -True 1 1 1/1 -False 0 0 0/1 -t 1 1 1/1 -f 0 0 0/1 --1 -1 -1 -1/1 -0 0 0 0/1 -1 1 1 1/1 -0.0 0 0 0/1 -0.1 0 0.1 1/10 -0.01 0 0.01 1/100 -0.001 0 0.001 1/1000 --1.49999 -1 -1.49999 -149999/100000 --1.5 -1 -1.5 -3/2 -1.49999 1 1.49999 149999/100000 -1.5 1 1.5 3/2 -0/1 0 0 0/1 -1/1 1 1 1/1 -1/3 0 0.333333 1/3 --1/3 0 -0.333333 -1/3 -4/3 1 1.33333 4/3 --4/3 -1 -1.33333 -4/3 -0/0 nok nok 0/0 -text nok nok nok -ProcessingSoftware, 11, 0x000b, Image, Exif.Image.ProcessingSoftware, Ascii, The name and version of the software used to post-process the picture. -NewSubfileType, 254, 0x00fe, Image, Exif.Image.NewSubfileType, Long, A general indication of the kind of data contained in this subfile. -SubfileType, 255, 0x00ff, Image, Exif.Image.SubfileType, Short, A general indication of the kind of data contained in this subfile. This field is deprecated. The NewSubfileType field should be used instead. -ImageWidth, 256, 0x0100, Image, Exif.Image.ImageWidth, Long, The number of columns of image data, equal to the number of pixels per row. In JPEG compressed data a JPEG marker is used instead of this tag. -ImageLength, 257, 0x0101, Image, Exif.Image.ImageLength, Long, The number of rows of image data. In JPEG compressed data a JPEG marker is used instead of this tag. -BitsPerSample, 258, 0x0102, Image, Exif.Image.BitsPerSample, Short, The number of bits per image component. In this standard each component of the image is 8 bits, so the value for this tag is 8. See also . In JPEG compressed data a JPEG marker is used instead of this tag. -Compression, 259, 0x0103, Image, Exif.Image.Compression, Short, The compression scheme used for the image data. When a primary image is JPEG compressed, this designation is not necessary and is omitted. When thumbnails use JPEG compression, this tag value is set to 6. -PhotometricInterpretation, 262, 0x0106, Image, Exif.Image.PhotometricInterpretation, Short, The pixel composition. In JPEG compressed data a JPEG marker is used instead of this tag. -Threshholding, 263, 0x0107, Image, Exif.Image.Threshholding, Short, For black and white TIFF files that represent shades of gray, the technique used to convert from gray to black and white pixels. -CellWidth, 264, 0x0108, Image, Exif.Image.CellWidth, Short, The width of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -CellLength, 265, 0x0109, Image, Exif.Image.CellLength, Short, The length of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -FillOrder, 266, 0x010a, Image, Exif.Image.FillOrder, Short, The logical order of bits within a byte -DocumentName, 269, 0x010d, Image, Exif.Image.DocumentName, Ascii, The name of the document from which this image was scanned -ImageDescription, 270, 0x010e, Image, Exif.Image.ImageDescription, Ascii, A character string giving the title of the image. It may be a comment such as "1988 company picnic" or the like. Two-bytes character codes cannot be used. When a 2-bytes code is necessary, the Exif Private tag is to be used. -Make, 271, 0x010f, Image, Exif.Image.Make, Ascii, The manufacturer of the recording equipment. This is the manufacturer of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -Model, 272, 0x0110, Image, Exif.Image.Model, Ascii, The model name or model number of the equipment. This is the model name or number of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -StripOffsets, 273, 0x0111, Image, Exif.Image.StripOffsets, Long, For each strip, the byte offset of that strip. It is recommended that this be selected so the number of strip bytes does not exceed 64 Kbytes. With JPEG compressed data this designation is not needed and is omitted. See also and . -Orientation, 274, 0x0112, Image, Exif.Image.Orientation, Short, The image orientation viewed in terms of rows and columns. -SamplesPerPixel, 277, 0x0115, Image, Exif.Image.SamplesPerPixel, Short, The number of components per pixel. Since this standard applies to RGB and YCbCr images, the value set for this tag is 3. In JPEG compressed data a JPEG marker is used instead of this tag. -RowsPerStrip, 278, 0x0116, Image, Exif.Image.RowsPerStrip, Long, The number of rows per strip. This is the number of rows in the image of one strip when an image is divided into strips. With JPEG compressed data this designation is not needed and is omitted. See also and . -StripByteCounts, 279, 0x0117, Image, Exif.Image.StripByteCounts, Long, The total number of bytes in each strip. With JPEG compressed data this designation is not needed and is omitted. -XResolution, 282, 0x011a, Image, Exif.Image.XResolution, Rational, The number of pixels per in the direction. When the image resolution is unknown, 72 [dpi] is designated. -YResolution, 283, 0x011b, Image, Exif.Image.YResolution, Rational, The number of pixels per in the direction. The same value as is designated. -PlanarConfiguration, 284, 0x011c, Image, Exif.Image.PlanarConfiguration, Short, Indicates whether pixel components are recorded in a chunky or planar format. In JPEG compressed files a JPEG marker is used instead of this tag. If this field does not exist, the TIFF default of 1 (chunky) is assumed. -GrayResponseUnit, 290, 0x0122, Image, Exif.Image.GrayResponseUnit, Short, The precision of the information contained in the GrayResponseCurve. -GrayResponseCurve, 291, 0x0123, Image, Exif.Image.GrayResponseCurve, Short, For grayscale data, the optical density of each possible pixel value. -T4Options, 292, 0x0124, Image, Exif.Image.T4Options, Long, T.4-encoding options. -T6Options, 293, 0x0125, Image, Exif.Image.T6Options, Long, T.6-encoding options. -ResolutionUnit, 296, 0x0128, Image, Exif.Image.ResolutionUnit, Short, The unit for measuring and . The same unit is used for both and . If the image resolution is unknown, 2 (inches) is designated. -TransferFunction, 301, 0x012d, Image, Exif.Image.TransferFunction, Short, A transfer function for the image, described in tabular style. Normally this tag is not necessary, since color space is specified in the color space information tag (). -Software, 305, 0x0131, Image, Exif.Image.Software, Ascii, This tag records the name and version of the software or firmware of the camera or image input device used to generate the image. The detailed format is not specified, but it is recommended that the example shown below be followed. When the field is left blank, it is treated as unknown. -DateTime, 306, 0x0132, Image, Exif.Image.DateTime, Ascii, The date and time of image creation. In Exif standard, it is the date and time the file was changed. -Artist, 315, 0x013b, Image, Exif.Image.Artist, Ascii, This tag records the name of the camera owner, photographer or image creator. The detailed format is not specified, but it is recommended that the information be written as in the example below for ease of Interoperability. When the field is left blank, it is treated as unknown. Ex.) "Camera owner, John Smith; Photographer, Michael Brown; Image creator, Ken James" -HostComputer, 316, 0x013c, Image, Exif.Image.HostComputer, Ascii, This tag records information about the host computer used to generate the image. -Predictor, 317, 0x013d, Image, Exif.Image.Predictor, Short, A predictor is a mathematical operator that is applied to the image data before an encoding scheme is applied. -WhitePoint, 318, 0x013e, Image, Exif.Image.WhitePoint, Rational, The chromaticity of the white point of the image. Normally this tag is not necessary, since color space is specified in the colorspace information tag (). -PrimaryChromaticities, 319, 0x013f, Image, Exif.Image.PrimaryChromaticities, Rational, The chromaticity of the three primary colors of the image. Normally this tag is not necessary, since colorspace is specified in the colorspace information tag (). -ColorMap, 320, 0x0140, Image, Exif.Image.ColorMap, Short, A color map for palette color images. This field defines a Red-Green-Blue color map (often called a lookup table) for palette-color images. In a palette-color image, a pixel value is used to index into an RGB lookup table. -HalftoneHints, 321, 0x0141, Image, Exif.Image.HalftoneHints, Short, The purpose of the HalftoneHints field is to convey to the halftone function the range of gray levels within a colorimetrically-specified image that should retain tonal detail. -TileWidth, 322, 0x0142, Image, Exif.Image.TileWidth, Short, The tile width in pixels. This is the number of columns in each tile. -TileLength, 323, 0x0143, Image, Exif.Image.TileLength, Short, The tile length (height) in pixels. This is the number of rows in each tile. -TileOffsets, 324, 0x0144, Image, Exif.Image.TileOffsets, Short, For each tile, the byte offset of that tile, as compressed and stored on disk. The offset is specified with respect to the beginning of the TIFF file. Note that this implies that each tile has a location independent of the locations of other tiles. -TileByteCounts, 325, 0x0145, Image, Exif.Image.TileByteCounts, Short, For each tile, the number of (compressed) bytes in that tile. See TileOffsets for a description of how the byte counts are ordered. -SubIFDs, 330, 0x014a, Image, Exif.Image.SubIFDs, Long, Defined by Adobe Corporation to enable TIFF Trees within a TIFF file. -InkSet, 332, 0x014c, Image, Exif.Image.InkSet, Short, The set of inks used in a separated (PhotometricInterpretation=5) image. -InkNames, 333, 0x014d, Image, Exif.Image.InkNames, Ascii, The name of each ink used in a separated (PhotometricInterpretation=5) image. -NumberOfInks, 334, 0x014e, Image, Exif.Image.NumberOfInks, Short, The number of inks. Usually equal to SamplesPerPixel, unless there are extra samples. -DotRange, 336, 0x0150, Image, Exif.Image.DotRange, Byte, The component values that correspond to a 0% dot and 100% dot. -TargetPrinter, 337, 0x0151, Image, Exif.Image.TargetPrinter, Ascii, A description of the printing environment for which this separation is intended. -ExtraSamples, 338, 0x0152, Image, Exif.Image.ExtraSamples, Short, Specifies that each pixel has m extra components whose interpretation is defined by one of the values listed below. -SampleFormat, 339, 0x0153, Image, Exif.Image.SampleFormat, Short, This field specifies how to interpret each data sample in a pixel. -SMinSampleValue, 340, 0x0154, Image, Exif.Image.SMinSampleValue, Short, This field specifies the minimum sample value. -SMaxSampleValue, 341, 0x0155, Image, Exif.Image.SMaxSampleValue, Short, This field specifies the maximum sample value. -TransferRange, 342, 0x0156, Image, Exif.Image.TransferRange, Short, Expands the range of the TransferFunction -ClipPath, 343, 0x0157, Image, Exif.Image.ClipPath, Byte, A TIFF ClipPath is intended to mirror the essentials of PostScript's path creation functionality. -XClipPathUnits, 344, 0x0158, Image, Exif.Image.XClipPathUnits, SShort, The number of units that span the width of the image, in terms of integer ClipPath coordinates. -YClipPathUnits, 345, 0x0159, Image, Exif.Image.YClipPathUnits, SShort, The number of units that span the height of the image, in terms of integer ClipPath coordinates. -Indexed, 346, 0x015a, Image, Exif.Image.Indexed, Short, Indexed images are images where the 'pixels' do not represent color values, but rather an index (usually 8-bit) into a separate color table, the ColorMap. -JPEGTables, 347, 0x015b, Image, Exif.Image.JPEGTables, Undefined, This optional tag may be used to encode the JPEG quantization andHuffman tables for subsequent use by the JPEG decompression process. -OPIProxy, 351, 0x015f, Image, Exif.Image.OPIProxy, Short, OPIProxy gives information concerning whether this image is a low-resolution proxy of a high-resolution image (Adobe OPI). -JPEGProc, 512, 0x0200, Image, Exif.Image.JPEGProc, Long, This field indicates the process used to produce the compressed data -JPEGInterchangeFormat, 513, 0x0201, Image, Exif.Image.JPEGInterchangeFormat, Long, The offset to the start byte (SOI) of JPEG compressed thumbnail data. This is not used for primary image JPEG data. -JPEGInterchangeFormatLength, 514, 0x0202, Image, Exif.Image.JPEGInterchangeFormatLength, Long, The number of bytes of JPEG compressed thumbnail data. This is not used for primary image JPEG data. JPEG thumbnails are not divided but are recorded as a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not be recorded. Compressed thumbnails must be recorded in no more than 64 Kbytes, including all other data to be recorded in APP1. -JPEGRestartInterval, 515, 0x0203, Image, Exif.Image.JPEGRestartInterval, Short, This Field indicates the length of the restart interval used in the compressed image data. -JPEGLosslessPredictors, 517, 0x0205, Image, Exif.Image.JPEGLosslessPredictors, Short, This Field points to a list of lossless predictor-selection values, one per component. -JPEGPointTransforms, 518, 0x0206, Image, Exif.Image.JPEGPointTransforms, Short, This Field points to a list of point transform values, one per component. -JPEGQTables, 519, 0x0207, Image, Exif.Image.JPEGQTables, Long, This Field points to a list of offsets to the quantization tables, one per component. -JPEGDCTables, 520, 0x0208, Image, Exif.Image.JPEGDCTables, Long, This Field points to a list of offsets to the DC Huffman tables or the lossless Huffman tables, one per component. -JPEGACTables, 521, 0x0209, Image, Exif.Image.JPEGACTables, Long, This Field points to a list of offsets to the Huffman AC tables, one per component. -YCbCrCoefficients, 529, 0x0211, Image, Exif.Image.YCbCrCoefficients, Rational, The matrix coefficients for transformation from RGB to YCbCr image data. No default is given in TIFF; but here the value given in Appendix E, "Color Space Guidelines", is used as the default. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability this condition. -YCbCrSubSampling, 530, 0x0212, Image, Exif.Image.YCbCrSubSampling, Short, The sampling ratio of chrominance components in relation to the luminance component. In JPEG compressed data a JPEG marker is used instead of this tag. -YCbCrPositioning, 531, 0x0213, Image, Exif.Image.YCbCrPositioning, Short, The position of chrominance components in relation to the luminance component. This field is designated only for JPEG compressed data or uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr = 4:2:2 it is recommended in this standard that 2 (co-sited) be used to record data, in order to improve the image quality when viewed on TV systems. When this field does not exist, the reader shall assume the TIFF default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is recommended. If the reader does not have the capability of supporting both kinds of , it shall follow the TIFF default regardless of the value in this field. It is preferable that readers be able to support both centered and co-sited positioning. -ReferenceBlackWhite, 532, 0x0214, Image, Exif.Image.ReferenceBlackWhite, Rational, The reference black point value and reference white point value. No defaults are given in TIFF, but the values below are given as defaults here. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability these conditions. -XMLPacket, 700, 0x02bc, Image, Exif.Image.XMLPacket, Byte, XMP Metadata (Adobe technote 9-14-02) -Rating, 18246, 0x4746, Image, Exif.Image.Rating, Short, Rating tag used by Windows -RatingPercent, 18249, 0x4749, Image, Exif.Image.RatingPercent, Short, Rating tag used by Windows, value in percent -ImageID, 32781, 0x800d, Image, Exif.Image.ImageID, Ascii, ImageID is the full pathname of the original, high-resolution image, or any other identifying string that uniquely identifies the original image (Adobe OPI). -CFARepeatPatternDim, 33421, 0x828d, Image, Exif.Image.CFARepeatPatternDim, Short, Contains two values representing the minimum rows and columns to define the repeating patterns of the color filter array -CFAPattern, 33422, 0x828e, Image, Exif.Image.CFAPattern, Byte, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods -BatteryLevel, 33423, 0x828f, Image, Exif.Image.BatteryLevel, Rational, Contains a value of the battery level as a fraction or string -Copyright, 33432, 0x8298, Image, Exif.Image.Copyright, Ascii, Copyright information. In this standard the tag is used to indicate both the photographer and editor copyrights. It is the copyright notice of the person or organization claiming rights to the image. The Interoperability copyright statement including date and rights should be written in this field; e.g., "Copyright, John Smith, 19xx. All rights reserved.". In this standard the field records both the photographer and editor copyrights, with each recorded in a separate part of the statement. When there is a clear distinction between the photographer and editor copyrights, these are to be written in the order of photographer followed by editor copyright, separated by NULL (in this case since the statement also ends with a NULL, there are two NULL codes). When only the photographer copyright is given, it is terminated by one NULL code . When only the editor copyright is given, the photographer copyright part consists of one space followed by a terminating NULL code, then the editor copyright is given. When the field is left blank, it is treated as unknown. -ExposureTime, 33434, 0x829a, Image, Exif.Image.ExposureTime, Rational, Exposure time, given in seconds. -FNumber, 33437, 0x829d, Image, Exif.Image.FNumber, Rational, The F number. -IPTCNAA, 33723, 0x83bb, Image, Exif.Image.IPTCNAA, Long, Contains an IPTC/NAA record -ImageResources, 34377, 0x8649, Image, Exif.Image.ImageResources, Byte, Contains information embedded by the Adobe Photoshop application -ExifTag, 34665, 0x8769, Image, Exif.Image.ExifTag, Long, A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure as that of the IFD specified in TIFF. ordinarily, however, it does not contain image data as in the case of TIFF. -InterColorProfile, 34675, 0x8773, Image, Exif.Image.InterColorProfile, Undefined, Contains an InterColor Consortium (ICC) format color space characterization/profile -ExposureProgram, 34850, 0x8822, Image, Exif.Image.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Image, Exif.Image.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. -GPSTag, 34853, 0x8825, Image, Exif.Image.GPSTag, Long, A pointer to the GPS Info IFD. The Interoperability structure of the GPS Info IFD, like that of Exif IFD, has no image data. -ISOSpeedRatings, 34855, 0x8827, Image, Exif.Image.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Image, Exif.Image.OECF, Undefined, Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524. -Interlace, 34857, 0x8829, Image, Exif.Image.Interlace, Short, Indicates the field number of multifield images. -TimeZoneOffset, 34858, 0x882a, Image, Exif.Image.TimeZoneOffset, SShort, This optional tag encodes the time zone of the camera clock (relativeto Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the picture was taken. It may also contain the time zone offsetof the clock used to create the DateTime tag-value when the image wasmodified. -SelfTimerMode, 34859, 0x882b, Image, Exif.Image.SelfTimerMode, Short, Number of seconds image capture was delayed from button press. -DateTimeOriginal, 36867, 0x9003, Image, Exif.Image.DateTimeOriginal, Ascii, The date and time when the original image data was generated. -CompressedBitsPerPixel, 37122, 0x9102, Image, Exif.Image.CompressedBitsPerPixel, Rational, Specific to compressed data; states the compressed bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Image, Exif.Image.ShutterSpeedValue, SRational, Shutter speed. -ApertureValue, 37378, 0x9202, Image, Exif.Image.ApertureValue, Rational, The lens aperture. -BrightnessValue, 37379, 0x9203, Image, Exif.Image.BrightnessValue, SRational, The value of brightness. -ExposureBiasValue, 37380, 0x9204, Image, Exif.Image.ExposureBiasValue, SRational, The exposure bias. -MaxApertureValue, 37381, 0x9205, Image, Exif.Image.MaxApertureValue, Rational, The smallest F number of the lens. -SubjectDistance, 37382, 0x9206, Image, Exif.Image.SubjectDistance, SRational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Image, Exif.Image.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Image, Exif.Image.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Image, Exif.Image.Flash, Short, Indicates the status of flash when the image was shot. -FocalLength, 37386, 0x920a, Image, Exif.Image.FocalLength, Rational, The actual focal length of the lens, in mm. -FlashEnergy, 37387, 0x920b, Image, Exif.Image.FlashEnergy, Rational, Amount of flash energy (BCPS). -SpatialFrequencyResponse, 37388, 0x920c, Image, Exif.Image.SpatialFrequencyResponse, Undefined, SFR of the camera. -Noise, 37389, 0x920d, Image, Exif.Image.Noise, Undefined, Noise measurement values. -FocalPlaneXResolution, 37390, 0x920e, Image, Exif.Image.FocalPlaneXResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth direction for main image. -FocalPlaneYResolution, 37391, 0x920f, Image, Exif.Image.FocalPlaneYResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength direction for main image. -FocalPlaneResolutionUnit, 37392, 0x9210, Image, Exif.Image.FocalPlaneResolutionUnit, Short, Unit of measurement for FocalPlaneXResolution(37390) and FocalPlaneYResolution(37391). -ImageNumber, 37393, 0x9211, Image, Exif.Image.ImageNumber, Long, Number assigned to an image, e.g., in a chained image burst. -SecurityClassification, 37394, 0x9212, Image, Exif.Image.SecurityClassification, Ascii, Security classification assigned to the image. -ImageHistory, 37395, 0x9213, Image, Exif.Image.ImageHistory, Ascii, Record of what has been done to the image. -SubjectLocation, 37396, 0x9214, Image, Exif.Image.SubjectLocation, Short, Indicates the location and area of the main subject in the overall scene. -ExposureIndex, 37397, 0x9215, Image, Exif.Image.ExposureIndex, Rational, Encodes the camera exposure index setting when image was captured. -TIFFEPStandardID, 37398, 0x9216, Image, Exif.Image.TIFFEPStandardID, Byte, Contains four ASCII characters representing the TIFF/EP standard version of a TIFF/EP file, eg '1', '0', '0', '0' -SensingMethod, 37399, 0x9217, Image, Exif.Image.SensingMethod, Short, Type of image sensor. -XPTitle, 40091, 0x9c9b, Image, Exif.Image.XPTitle, Byte, Title tag used by Windows, encoded in UCS2 -XPComment, 40092, 0x9c9c, Image, Exif.Image.XPComment, Byte, Comment tag used by Windows, encoded in UCS2 -XPAuthor, 40093, 0x9c9d, Image, Exif.Image.XPAuthor, Byte, Author tag used by Windows, encoded in UCS2 -XPKeywords, 40094, 0x9c9e, Image, Exif.Image.XPKeywords, Byte, Keywords tag used by Windows, encoded in UCS2 -XPSubject, 40095, 0x9c9f, Image, Exif.Image.XPSubject, Byte, Subject tag used by Windows, encoded in UCS2 -PrintImageMatching, 50341, 0xc4a5, Image, Exif.Image.PrintImageMatching, Undefined, Print Image Matching, description needed. -DNGVersion, 50706, 0xc612, Image, Exif.Image.DNGVersion, Byte, This tag encodes the DNG four-tier version number. For files compliant with version 1.1.0.0 of the DNG specification, this tag should contain the bytes: 1, 1, 0, 0. -DNGBackwardVersion, 50707, 0xc613, Image, Exif.Image.DNGBackwardVersion, Byte, This tag specifies the oldest version of the Digital Negative specification for which a file is compatible. Readers shouldnot attempt to read a file if this tag specifies a version number that is higher than the version number of the specification the reader was based on. In addition to checking the version tags, readers should, for all tags, check the types, counts, and values, to verify it is able to correctly read the file. -UniqueCameraModel, 50708, 0xc614, Image, Exif.Image.UniqueCameraModel, Ascii, Defines a unique, non-localized name for the camera model that created the image in the raw file. This name should include the manufacturer's name to avoid conflicts, and should not be localized, even if the camera name itself is localized for different markets (see LocalizedCameraModel). This string may be used by reader software to index into per-model preferences and replacement profiles. -LocalizedCameraModel, 50709, 0xc615, Image, Exif.Image.LocalizedCameraModel, Byte, Similar to the UniqueCameraModel field, except the name can be localized for different markets to match the localization of the camera name. -CFAPlaneColor, 50710, 0xc616, Image, Exif.Image.CFAPlaneColor, Byte, Provides a mapping between the values in the CFAPattern tag and the plane numbers in LinearRaw space. This is a required tag for non-RGB CFA images. -CFALayout, 50711, 0xc617, Image, Exif.Image.CFALayout, Short, Describes the spatial layout of the CFA. -LinearizationTable, 50712, 0xc618, Image, Exif.Image.LinearizationTable, Short, Describes a lookup table that maps stored values into linear values. This tag is typically used to increase compression ratios by storing the raw data in a non-linear, more visually uniform space with fewer total encoding levels. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelRepeatDim, 50713, 0xc619, Image, Exif.Image.BlackLevelRepeatDim, Short, Specifies repeat pattern size for the BlackLevel tag. -BlackLevel, 50714, 0xc61a, Image, Exif.Image.BlackLevel, Rational, Specifies the zero light (a.k.a. thermal black or black current) encoding level, as a repeating pattern. The origin of this pattern is the top-left corner of the ActiveArea rectangle. The values are stored in row-column-sample scan order. -BlackLevelDeltaH, 50715, 0xc61b, Image, Exif.Image.BlackLevelDeltaH, SRational, If the zero light encoding level is a function of the image column, BlackLevelDeltaH specifies the difference between the zero light encoding level for each column and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelDeltaV, 50716, 0xc61c, Image, Exif.Image.BlackLevelDeltaV, SRational, If the zero light encoding level is a function of the image row, this tag specifies the difference between the zero light encoding level for each row and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -WhiteLevel, 50717, 0xc61d, Image, Exif.Image.WhiteLevel, Short, This tag specifies the fully saturated encoding level for the raw sample values. Saturation is caused either by the sensor itself becoming highly non-linear in response, or by the camera's analog to digital converter clipping. -DefaultScale, 50718, 0xc61e, Image, Exif.Image.DefaultScale, Rational, DefaultScale is required for cameras with non-square pixels. It specifies the default scale factors for each direction to convert the image to square pixels. Typically these factors are selected to approximately preserve total pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such as the Fujifilm SuperCCD, these two values should usually differ by a factor of 2.0. -DefaultCropOrigin, 50719, 0xc61f, Image, Exif.Image.DefaultCropOrigin, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropOrigin specifies the origin of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied), relative to the top-left corner of the ActiveArea rectangle. -DefaultCropSize, 50720, 0xc620, Image, Exif.Image.DefaultCropSize, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropSize specifies the size of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied). -ColorMatrix1, 50721, 0xc621, Image, Exif.Image.ColorMatrix1, SRational, ColorMatrix1 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the first calibration illuminant. The matrix values are stored in row scan order. The ColorMatrix1 tag is required for all non-monochrome DNG files. -ColorMatrix2, 50722, 0xc622, Image, Exif.Image.ColorMatrix2, SRational, ColorMatrix2 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the second calibration illuminant. The matrix values are stored in row scan order. -CameraCalibration1, 50723, 0xc623, Image, Exif.Image.CameraCalibration1, SRational, CameraClalibration1 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the first calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix1 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -CameraCalibration2, 50724, 0xc624, Image, Exif.Image.CameraCalibration2, SRational, CameraCalibration2 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the second calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix2 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -ReductionMatrix1, 50725, 0xc625, Image, Exif.Image.ReductionMatrix1, SRational, ReductionMatrix1 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the first calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -ReductionMatrix2, 50726, 0xc626, Image, Exif.Image.ReductionMatrix2, SRational, ReductionMatrix2 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the second calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -AnalogBalance, 50727, 0xc627, Image, Exif.Image.AnalogBalance, Rational, Normally the stored raw values are not white balanced, since any digital white balancing will reduce the dynamic range of the final image if the user decides to later adjust the white balance; however, if camera hardware is capable of white balancing the color channels before the signal is digitized, it can improve the dynamic range of the final image. AnalogBalance defines the gain, either analog (recommended) or digital (not recommended) that has been applied the stored raw values. -AsShotNeutral, 50728, 0xc628, Image, Exif.Image.AsShotNeutral, Short, Specifies the selected white balance at time of capture, encoded as the coordinates of a perfectly neutral color in linear reference space values. The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag. -AsShotWhiteXY, 50729, 0xc629, Image, Exif.Image.AsShotWhiteXY, Rational, Specifies the selected white balance at time of capture, encoded as x-y chromaticity coordinates. The inclusion of this tag precludes the inclusion of the AsShotNeutral tag. -BaselineExposure, 50730, 0xc62a, Image, Exif.Image.BaselineExposure, SRational, Camera models vary in the trade-off they make between highlight headroom and shadow noise. Some leave a significant amount of highlight headroom during a normal exposure. This allows significant negative exposure compensation to be applied during raw conversion, but also means normal exposures will contain more shadow noise. Other models leave less headroom during normal exposures. This allows for less negative exposure compensation, but results in lower shadow noise for normal exposures. Because of these differences, a raw converter needs to vary the zero point of its exposure compensation control from model to model. BaselineExposure specifies by how much (in EV units) to move the zero point. Positive values result in brighter default results, while negative values result in darker default results. -BaselineNoise, 50731, 0xc62b, Image, Exif.Image.BaselineNoise, Rational, Specifies the relative noise level of the camera model at a baseline ISO value of 100, compared to a reference camera model. Since noise levels tend to vary approximately with the square root of the ISO value, a raw converter can use this value, combined with the current ISO, to estimate the relative noise level of the current image. -BaselineSharpness, 50732, 0xc62c, Image, Exif.Image.BaselineSharpness, Rational, Specifies the relative amount of sharpening required for this camera model, compared to a reference camera model. Camera models vary in the strengths of their anti-aliasing filters. Cameras with weak or no filters require less sharpening than cameras with strong anti-aliasing filters. -BayerGreenSplit, 50733, 0xc62d, Image, Exif.Image.BayerGreenSplit, Long, Only applies to CFA images using a Bayer pattern filter array. This tag specifies, in arbitrary units, how closely the values of the green pixels in the blue/green rows track the values of the green pixels in the red/green rows. A value of zero means the two kinds of green pixels track closely, while a non-zero value means they sometimes diverge. The useful range for this tag is from 0 (no divergence) to about 5000 (quite large divergence). -LinearResponseLimit, 50734, 0xc62e, Image, Exif.Image.LinearResponseLimit, Rational, Some sensors have an unpredictable non-linearity in their response as they near the upper limit of their encoding range. This non-linearity results in color shifts in the highlight areas of the resulting image unless the raw converter compensates for this effect. LinearResponseLimit specifies the fraction of the encoding range above which the response may become significantly non-linear. -CameraSerialNumber, 50735, 0xc62f, Image, Exif.Image.CameraSerialNumber, Ascii, CameraSerialNumber contains the serial number of the camera or camera body that captured the image. -LensInfo, 50736, 0xc630, Image, Exif.Image.LensInfo, Rational, Contains information about the lens that captured the image. If the minimum f-stops are unknown, they should be encoded as 0/0. -ChromaBlurRadius, 50737, 0xc631, Image, Exif.Image.ChromaBlurRadius, Rational, ChromaBlurRadius provides a hint to the DNG reader about how much chroma blur should be applied to the image. If this tag is omitted, the reader will use its default amount of chroma blurring. Normally this tag is only included for non-CFA images, since the amount of chroma blur required for mosaic images is highly dependent on the de-mosaic algorithm, in which case the DNG reader's default value is likely optimized for its particular de-mosaic algorithm. -AntiAliasStrength, 50738, 0xc632, Image, Exif.Image.AntiAliasStrength, Rational, Provides a hint to the DNG reader about how strong the camera's anti-alias filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is prone to aliasing artifacts with some subjects), while a value of 1.0 means a strong anti-alias filter (i.e., the camera almost never has aliasing artifacts). -ShadowScale, 50739, 0xc633, Image, Exif.Image.ShadowScale, SRational, This tag is used by Adobe Camera Raw to control the sensitivity of its 'Shadows' slider. -DNGPrivateData, 50740, 0xc634, Image, Exif.Image.DNGPrivateData, Byte, Provides a way for camera manufacturers to store private data in the DNG file for use by their own raw converters, and to have that data preserved by programs that edit DNG files. -MakerNoteSafety, 50741, 0xc635, Image, Exif.Image.MakerNoteSafety, Short, MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is safe to preserve along with the rest of the EXIF data. File browsers and other image management software processing an image with a preserved MakerNote should be aware that any thumbnail image embedded in the MakerNote may be stale, and may not reflect the current state of the full size image. -CalibrationIlluminant1, 50778, 0xc65a, Image, Exif.Image.CalibrationIlluminant1, Short, The illuminant used for the first set of color calibration tags (ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for this tag are the same as the legal values for the LightSource EXIF tag. -CalibrationIlluminant2, 50779, 0xc65b, Image, Exif.Image.CalibrationIlluminant2, Short, The illuminant used for an optional second set of color calibration tags (ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for this tag are the same as the legal values for the CalibrationIlluminant1 tag; however, if both are included, neither is allowed to have a value of 0 (unknown). -BestQualityScale, 50780, 0xc65c, Image, Exif.Image.BestQualityScale, Rational, For some cameras, the best possible image quality is not achieved by preserving the total pixel count during conversion. For example, Fujifilm SuperCCD images have maximum detail when their total pixel count is doubled. This tag specifies the amount by which the values of the DefaultScale tag need to be multiplied to achieve the best quality image size. -RawDataUniqueID, 50781, 0xc65d, Image, Exif.Image.RawDataUniqueID, Byte, This tag contains a 16-byte unique identifier for the raw image data in the DNG file. DNG readers can use this tag to recognize a particular raw image, even if the file's name or the metadata contained in the file has been changed. If a DNG writer creates such an identifier, it should do so using an algorithm that will ensure that it is very unlikely two different images will end up having the same identifier. -OriginalRawFileName, 50827, 0xc68b, Image, Exif.Image.OriginalRawFileName, Byte, If the DNG file was converted from a non-DNG raw file, then this tag contains the file name of that original raw file. -OriginalRawFileData, 50828, 0xc68c, Image, Exif.Image.OriginalRawFileData, Undefined, If the DNG file was converted from a non-DNG raw file, then this tag contains the compressed contents of that original raw file. The contents of this tag always use the big-endian byte order. The tag contains a sequence of data blocks. Future versions of the DNG specification may define additional data blocks, so DNG readers should ignore extra bytes when parsing this tag. DNG readers should also detect the case where data blocks are missing from the end of the sequence, and should assume a default value for all the missing blocks. There are no padding or alignment bytes between data blocks. -ActiveArea, 50829, 0xc68d, Image, Exif.Image.ActiveArea, Short, This rectangle defines the active (non-masked) pixels of the sensor. The order of the rectangle coordinates is: top, left, bottom, right. -MaskedAreas, 50830, 0xc68e, Image, Exif.Image.MaskedAreas, Short, This tag contains a list of non-overlapping rectangle coordinates of fully masked pixels, which can be optionally used by DNG readers to measure the black encoding level. The order of each rectangle's coordinates is: top, left, bottom, right. If the raw image data has already had its black encoding level subtracted, then this tag should not be used, since the masked pixels are no longer useful. -AsShotICCProfile, 50831, 0xc68f, Image, Exif.Image.AsShotICCProfile, Undefined, This tag contains an ICC profile that, in conjunction with the AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to specify a default color rendering from camera color space coordinates (linear reference values) into the ICC profile connection space. The ICC profile connection space is an output referred colorimetric space, whereas the other color calibration tags in DNG specify a conversion into a scene referred colorimetric space. This means that the rendering in this profile should include any desired tone and gamut mapping needed to convert between scene referred values and output referred values. -AsShotPreProfileMatrix, 50832, 0xc690, Image, Exif.Image.AsShotPreProfileMatrix, SRational, This tag is used in conjunction with the AsShotICCProfile tag. It specifies a matrix that should be applied to the camera color space coordinates before processing the values through the ICC profile specified in the AsShotICCProfile tag. The matrix is stored in the row scan order. If ColorPlanes is greater than three, then this matrix can (but is not required to) reduce the dimensionality of the color data down to three components, in which case the AsShotICCProfile should have three rather than ColorPlanes input components. -CurrentICCProfile, 50833, 0xc691, Image, Exif.Image.CurrentICCProfile, Undefined, This tag is used in conjunction with the CurrentPreProfileMatrix tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -CurrentPreProfileMatrix, 50834, 0xc692, Image, Exif.Image.CurrentPreProfileMatrix, SRational, This tag is used in conjunction with the CurrentICCProfile tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -ColorimetricReference, 50879, 0xc6bf, Image, Exif.Image.ColorimetricReference, Short, The DNG color model documents a transform between camera colors and CIE XYZ values. This tag describes the colorimetric reference for the CIE XYZ values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-referred, using the ICC profile perceptual dynamic range. This tag allows output-referred data to be stored in DNG files and still processed correctly by DNG readers. -CameraCalibrationSignature, 50931, 0xc6f3, Image, Exif.Image.CameraCalibrationSignature, Byte, A UTF-8 encoded string associated with the CameraCalibration1 and CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags should only be used in the DNG color transform if the string stored in the CameraCalibrationSignature tag exactly matches the string stored in the ProfileCalibrationSignature tag for the selected camera profile. -ProfileCalibrationSignature, 50932, 0xc6f4, Image, Exif.Image.ProfileCalibrationSignature, Byte, A UTF-8 encoded string associated with the camera profile tags. The CameraCalibration1 and CameraCalibration2 tags should only be used in the DNG color transfer if the string stored in the CameraCalibrationSignature tag exactly matches the string stored in the ProfileCalibrationSignature tag for the selected camera profile. -AsShotProfileName, 50934, 0xc6f6, Image, Exif.Image.AsShotProfileName, Byte, A UTF-8 encoded string containing the name of the "as shot" camera profile, if any. -NoiseReductionApplied, 50935, 0xc6f7, Image, Exif.Image.NoiseReductionApplied, Rational, This tag indicates how much noise reduction has been applied to the raw data on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has been applied. A 1.0 value indicates that the "ideal" amount of noise reduction has been applied, i.e. that the DNG reader should not apply additional noise reduction by default. A value of 0/0 indicates that this parameter is unknown. -ProfileName, 50936, 0xc6f8, Image, Exif.Image.ProfileName, Byte, A UTF-8 encoded string containing the name of the camera profile. This tag is optional if there is only a single camera profile stored in the file but is required for all camera profiles if there is more than one camera profile stored in the file. -ProfileHueSatMapDims, 50937, 0xc6f9, Image, Exif.Image.ProfileHueSatMapDims, Long, This tag specifies the number of input samples in each dimension of the hue/saturation/value mapping tables. The data for these tables are stored in ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case has ValueDivisions equal to 1, so only hue and saturation are used as inputs to the mapping table. -ProfileHueSatMapData1, 50938, 0xc6fa, Image, Exif.Image.ProfileHueSatMapData1, Float, This tag contains the data for the first hue/saturation/value mapping table. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees; the second entry is saturation scale factor; and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -ProfileHueSatMapData2, 50939, 0xc6fb, Image, Exif.Image.ProfileHueSatMapData2, Float, This tag contains the data for the second hue/saturation/value mapping table. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees; the second entry is a saturation scale factor; and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -ProfileToneCurve, 50940, 0xc6fc, Image, Exif.Image.ProfileToneCurve, Float, This tag contains a default tone curve that can be applied while processing the image as a starting point for user adjustments. The curve is specified as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each sample has an input value in the range of 0.0 to 1.0, and an output value in the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and the last sample is required to be (1.0, 1.0). Interpolated the curve using a cubic spline. -ProfileEmbedPolicy, 50941, 0xc6fd, Image, Exif.Image.ProfileEmbedPolicy, Long, This tag contains information about the usage rules for the associated camera profile. -ProfileCopyright, 50942, 0xc6fe, Image, Exif.Image.ProfileCopyright, Byte, A UTF-8 encoded string containing the copyright information for the camera profile. This string always should be preserved along with the other camera profile tags. -ForwardMatrix1, 50964, 0xc714, Image, Exif.Image.ForwardMatrix1, SRational, This tag defines a matrix that maps white balanced camera colors to XYZ D50 colors. -ForwardMatrix2, 50965, 0xc715, Image, Exif.Image.ForwardMatrix2, SRational, This tag defines a matrix that maps white balanced camera colors to XYZ D50 colors. -PreviewApplicationName, 50966, 0xc716, Image, Exif.Image.PreviewApplicationName, Byte, A UTF-8 encoded string containing the name of the application that created the preview stored in the IFD. -PreviewApplicationVersion, 50967, 0xc717, Image, Exif.Image.PreviewApplicationVersion, Byte, A UTF-8 encoded string containing the version number of the application that created the preview stored in the IFD. -PreviewSettingsName, 50968, 0xc718, Image, Exif.Image.PreviewSettingsName, Byte, A UTF-8 encoded string containing the name of the conversion settings (for example, snapshot name) used for the preview stored in the IFD. -PreviewSettingsDigest, 50969, 0xc719, Image, Exif.Image.PreviewSettingsDigest, Byte, A unique ID of the conversion settings (for example, MD5 digest) used to render the preview stored in the IFD. -PreviewColorSpace, 50970, 0xc71a, Image, Exif.Image.PreviewColorSpace, Long, This tag specifies the color space in which the rendered preview in this IFD is stored. The default value for this tag is sRGB for color previews and Gray Gamma 2.2 for monochrome previews. -PreviewDateTime, 50971, 0xc71b, Image, Exif.Image.PreviewDateTime, Ascii, This tag is an ASCII string containing the name of the date/time at which the preview stored in the IFD was rendered. The date/time is encoded using ISO 8601 format. -RawImageDigest, 50972, 0xc71c, Image, Exif.Image.RawImageDigest, Undefined, This tag is an MD5 digest of the raw image data. All pixels in the image are processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep (16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The data for each pixel is processed in little-endian byte order. -OriginalRawFileDigest, 50973, 0xc71d, Image, Exif.Image.OriginalRawFileDigest, Undefined, This tag is an MD5 digest of the data stored in the OriginalRawFileData tag. -SubTileBlockSize, 50974, 0xc71e, Image, Exif.Image.SubTileBlockSize, Long, Normally, the pixels within a tile are stored in simple row-scan order. This tag specifies that the pixels within a tile should be grouped first into rectangular blocks of the specified size. These blocks are stored in row-scan order. Within each block, the pixels are stored in row-scan order. The use of a non-default value for this tag requires setting the DNGBackwardVersion tag to at least 1.2.0.0. -RowInterleaveFactor, 50975, 0xc71f, Image, Exif.Image.RowInterleaveFactor, Long, This tag specifies that rows of the image are stored in interleaved order. The value of the tag specifies the number of interleaved fields. The use of a non-default value for this tag requires setting the DNGBackwardVersion tag to at least 1.2.0.0. -ProfileLookTableDims, 50981, 0xc725, Image, Exif.Image.ProfileLookTableDims, Long, This tag specifies the number of input samples in each dimension of a default "look" table. The data for this table is stored in the ProfileLookTableData tag. -ProfileLookTableData, 50982, 0xc726, Image, Exif.Image.ProfileLookTableData, Float, This tag contains a default "look" table that can be applied while processing the image as a starting point for user adjustment. This table uses the same format as the tables stored in the ProfileHueSatMapData1 and ProfileHueSatMapData2 tags, and is applied in the same color space. However, it should be applied later in the processing pipe, after any exposure compensation and/or fill light stages, but before any tone curve stage. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees, the second entry is a saturation scale factor, and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -OpcodeList1, 51008, 0xc740, Image, Exif.Image.OpcodeList1, Undefined, Specifies the list of opcodes that should be applied to the raw image, as read directly from the file. -OpcodeList2, 51009, 0xc741, Image, Exif.Image.OpcodeList2, Undefined, Specifies the list of opcodes that should be applied to the raw image, just after it has been mapped to linear reference values. -OpcodeList3, 51022, 0xc74e, Image, Exif.Image.OpcodeList3, Undefined, Specifies the list of opcodes that should be applied to the raw image, just after it has been demosaiced. -NoiseProfile, 51041, 0xc761, Image, Exif.Image.NoiseProfile, Double, NoiseProfile describes the amount of noise in a raw image. Specifically, this tag models the amount of signal-dependent photon (shot) noise and signal-independent sensor readout noise, two common sources of noise in raw images. The model assumes that the noise is white and spatially independent, ignoring fixed pattern effects and other sources of noise (e.g., pixel response non-uniformity, spatially-dependent thermal effects, etc.). -ExposureTime, 33434, 0x829a, Photo, Exif.Photo.ExposureTime, Rational, Exposure time, given in seconds (sec). -FNumber, 33437, 0x829d, Photo, Exif.Photo.FNumber, Rational, The F number. -ExposureProgram, 34850, 0x8822, Photo, Exif.Photo.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Photo, Exif.Photo.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. The tag value is an ASCII string compatible with the standard developed by the ASTM Technical Committee. -ISOSpeedRatings, 34855, 0x8827, Photo, Exif.Photo.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Photo, Exif.Photo.OECF, Undefined, Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO 14524. is the relationship between the camera optical input and the image values. -SensitivityType, 34864, 0x8830, Photo, Exif.Photo.SensitivityType, Short, The SensitivityType tag indicates PhotographicSensitivity tag. which one of the parameters of ISO12232 is the Although it is an optional tag, it should be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, or 7 may be used in case that the values of plural parameters are the same. -StandardOutputSensitivity, 34865, 0x8831, Photo, Exif.Photo.StandardOutputSensitivity, Long, This tag indicates the standard output sensitivity value of a camera or input device defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -RecommendedExposureIndex, 34866, 0x8832, Photo, Exif.Photo.RecommendedExposureIndex, Long, This tag indicates the recommended exposure index value of a camera or input device defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -ISOSpeed, 34867, 0x8833, Photo, Exif.Photo.ISOSpeed, Long, This tag indicates the ISO speed value of a camera or input device that is defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -ISOSpeedLatitudeyyy, 34868, 0x8834, Photo, Exif.Photo.ISOSpeedLatitudeyyy, Long, This tag indicates the ISO speed latitude yyy value of a camera or input device that is defined in ISO 12232. However, this tag shall not be recorded without ISOSpeed and ISOSpeedLatitudezzz. -ISOSpeedLatitudezzz, 34869, 0x8835, Photo, Exif.Photo.ISOSpeedLatitudezzz, Long, This tag indicates the ISO speed latitude zzz value of a camera or input device that is defined in ISO 12232. However, this tag shall not be recorded without ISOSpeed and ISOSpeedLatitudeyyy. -ExifVersion, 36864, 0x9000, Photo, Exif.Photo.ExifVersion, Undefined, The version of this standard supported. Nonexistence of this field is taken to mean nonconformance to the standard. -DateTimeOriginal, 36867, 0x9003, Photo, Exif.Photo.DateTimeOriginal, Ascii, The date and time when the original image data was generated. For a digital still camera the date and time the picture was taken are recorded. -DateTimeDigitized, 36868, 0x9004, Photo, Exif.Photo.DateTimeDigitized, Ascii, The date and time when the image was stored as digital data. -ComponentsConfiguration, 37121, 0x9101, Photo, Exif.Photo.ComponentsConfiguration, Undefined, Information specific to compressed data. The channels of each component are arranged in order from the 1st component to the 4th. For uncompressed data the data arrangement is given in the tag. However, since can only express the order of Y, Cb and Cr, this tag is provided for cases when compressed data uses components other than Y, Cb, and Cr and to enable support of other sequences. -CompressedBitsPerPixel, 37122, 0x9102, Photo, Exif.Photo.CompressedBitsPerPixel, Rational, Information specific to compressed data. The compression mode used for a compressed image is indicated in unit bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Photo, Exif.Photo.ShutterSpeedValue, SRational, Shutter speed. The unit is the APEX (Additive System of Photographic Exposure) setting. -ApertureValue, 37378, 0x9202, Photo, Exif.Photo.ApertureValue, Rational, The lens aperture. The unit is the APEX value. -BrightnessValue, 37379, 0x9203, Photo, Exif.Photo.BrightnessValue, SRational, The value of brightness. The unit is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -ExposureBiasValue, 37380, 0x9204, Photo, Exif.Photo.ExposureBiasValue, SRational, The exposure bias. The units is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -MaxApertureValue, 37381, 0x9205, Photo, Exif.Photo.MaxApertureValue, Rational, The smallest F number of the lens. The unit is the APEX value. Ordinarily it is given in the range of 00.00 to 99.99, but it is not limited to this range. -SubjectDistance, 37382, 0x9206, Photo, Exif.Photo.SubjectDistance, Rational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Photo, Exif.Photo.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Photo, Exif.Photo.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Photo, Exif.Photo.Flash, Short, This tag is recorded when an image is taken using a strobe light (flash). -FocalLength, 37386, 0x920a, Photo, Exif.Photo.FocalLength, Rational, The actual focal length of the lens, in mm. Conversion is not made to the focal length of a 35 mm film camera. -SubjectArea, 37396, 0x9214, Photo, Exif.Photo.SubjectArea, Short, This tag indicates the location and area of the main subject in the overall scene. -MakerNote, 37500, 0x927c, Photo, Exif.Photo.MakerNote, Undefined, A tag for manufacturers of Exif writers to record any desired information. The contents are up to the manufacturer. -UserComment, 37510, 0x9286, Photo, Exif.Photo.UserComment, Comment, A tag for Exif users to write keywords or comments on the image besides those in , and without the character code limitations of the tag. -SubSecTime, 37520, 0x9290, Photo, Exif.Photo.SubSecTime, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeOriginal, 37521, 0x9291, Photo, Exif.Photo.SubSecTimeOriginal, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeDigitized, 37522, 0x9292, Photo, Exif.Photo.SubSecTimeDigitized, Ascii, A tag used to record fractions of seconds for the tag. -FlashpixVersion, 40960, 0xa000, Photo, Exif.Photo.FlashpixVersion, Undefined, The FlashPix format version supported by a FPXR file. -ColorSpace, 40961, 0xa001, Photo, Exif.Photo.ColorSpace, Short, The color space information tag is always recorded as the color space specifier. Normally sRGB is used to define the color space based on the PC monitor conditions and environment. If a color space other than sRGB is used, Uncalibrated is set. Image data recorded as Uncalibrated can be treated as sRGB when it is converted to FlashPix. -PixelXDimension, 40962, 0xa002, Photo, Exif.Photo.PixelXDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid width of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. -PixelYDimension, 40963, 0xa003, Photo, Exif.Photo.PixelYDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid height of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. Since data padding is unnecessary in the vertical direction, the number of lines recorded in this valid image height tag will in fact be the same as that recorded in the SOF. -RelatedSoundFile, 40964, 0xa004, Photo, Exif.Photo.RelatedSoundFile, Ascii, This tag is used to record the name of an audio file related to the image data. The only relational information recorded here is the Exif audio file name and extension (an ASCII string consisting of 8 characters + '.' + 3 characters). The path is not recorded. -InteroperabilityTag, 40965, 0xa005, Photo, Exif.Photo.InteroperabilityTag, Long, Interoperability IFD is composed of tags which stores the information to ensure the Interoperability and pointed by the following tag located in Exif IFD. The Interoperability structure of Interoperability IFD is the same as TIFF defined IFD structure but does not contain the image data characteristically compared with normal TIFF IFD. -FlashEnergy, 41483, 0xa20b, Photo, Exif.Photo.FlashEnergy, Rational, Indicates the strobe energy at the time the image is captured, as measured in Beam Candle Power Seconds (BCPS). -SpatialFrequencyResponse, 41484, 0xa20c, Photo, Exif.Photo.SpatialFrequencyResponse, Undefined, This tag records the camera or input device spatial frequency table and SFR values in the direction of image width, image height, and diagonal direction, as specified in ISO 12233. -FocalPlaneXResolution, 41486, 0xa20e, Photo, Exif.Photo.FocalPlaneXResolution, Rational, Indicates the number of pixels in the image width (X) direction per on the camera focal plane. -FocalPlaneYResolution, 41487, 0xa20f, Photo, Exif.Photo.FocalPlaneYResolution, Rational, Indicates the number of pixels in the image height (V) direction per on the camera focal plane. -FocalPlaneResolutionUnit, 41488, 0xa210, Photo, Exif.Photo.FocalPlaneResolutionUnit, Short, Indicates the unit for measuring and . This value is the same as the . -SubjectLocation, 41492, 0xa214, Photo, Exif.Photo.SubjectLocation, Short, Indicates the location of the main subject in the scene. The value of this tag represents the pixel at the center of the main subject relative to the left edge, prior to rotation processing as per the tag. The first value indicates the X column number and second indicates the Y row number. -ExposureIndex, 41493, 0xa215, Photo, Exif.Photo.ExposureIndex, Rational, Indicates the exposure index selected on the camera or input device at the time the image is captured. -SensingMethod, 41495, 0xa217, Photo, Exif.Photo.SensingMethod, Short, Indicates the image sensor type on the camera or input device. -FileSource, 41728, 0xa300, Photo, Exif.Photo.FileSource, Undefined, Indicates the image source. If a DSC recorded the image, this tag value of this tag always be set to 3, indicating that the image was recorded on a DSC. -SceneType, 41729, 0xa301, Photo, Exif.Photo.SceneType, Undefined, Indicates the type of scene. If a DSC recorded the image, this tag value must always be set to 1, indicating that the image was directly photographed. -CFAPattern, 41730, 0xa302, Photo, Exif.Photo.CFAPattern, Undefined, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods. -CustomRendered, 41985, 0xa401, Photo, Exif.Photo.CustomRendered, Short, This tag indicates the use of special processing on image data, such as rendering geared to output. When special processing is performed, the reader is expected to disable or minimize any further processing. -ExposureMode, 41986, 0xa402, Photo, Exif.Photo.ExposureMode, Short, This tag indicates the exposure mode set when the image was shot. In auto-bracketing mode, the camera shoots a series of frames of the same scene at different exposure settings. -WhiteBalance, 41987, 0xa403, Photo, Exif.Photo.WhiteBalance, Short, This tag indicates the white balance mode set when the image was shot. -DigitalZoomRatio, 41988, 0xa404, Photo, Exif.Photo.DigitalZoomRatio, Rational, This tag indicates the digital zoom ratio when the image was shot. If the numerator of the recorded value is 0, this indicates that digital zoom was not used. -FocalLengthIn35mmFilm, 41989, 0xa405, Photo, Exif.Photo.FocalLengthIn35mmFilm, Short, This tag indicates the equivalent focal length assuming a 35mm film camera, in mm. A value of 0 means the focal length is unknown. Note that this tag differs from the tag. -SceneCaptureType, 41990, 0xa406, Photo, Exif.Photo.SceneCaptureType, Short, This tag indicates the type of scene that was shot. It can also be used to record the mode in which the image was shot. Note that this differs from the tag. -GainControl, 41991, 0xa407, Photo, Exif.Photo.GainControl, Short, This tag indicates the degree of overall image gain adjustment. -Contrast, 41992, 0xa408, Photo, Exif.Photo.Contrast, Short, This tag indicates the direction of contrast processing applied by the camera when the image was shot. -Saturation, 41993, 0xa409, Photo, Exif.Photo.Saturation, Short, This tag indicates the direction of saturation processing applied by the camera when the image was shot. -Sharpness, 41994, 0xa40a, Photo, Exif.Photo.Sharpness, Short, This tag indicates the direction of sharpness processing applied by the camera when the image was shot. -DeviceSettingDescription, 41995, 0xa40b, Photo, Exif.Photo.DeviceSettingDescription, Undefined, This tag indicates information on the picture-taking conditions of a particular camera model. The tag is used only to indicate the picture-taking conditions in the reader. -SubjectDistanceRange, 41996, 0xa40c, Photo, Exif.Photo.SubjectDistanceRange, Short, This tag indicates the distance to the subject. -ImageUniqueID, 42016, 0xa420, Photo, Exif.Photo.ImageUniqueID, Ascii, This tag indicates an identifier assigned uniquely to each image. It is recorded as an ASCII string equivalent to hexadecimal notation and 128-bit fixed length. -CameraOwnerName, 42032, 0xa430, Photo, Exif.Photo.CameraOwnerName, Ascii, This tag records the owner of a camera used in photography as an ASCII string. -BodySerialNumber, 42033, 0xa431, Photo, Exif.Photo.BodySerialNumber, Ascii, This tag records the serial number of the body of the camera that was used in photography as an ASCII string. -LensSpecification, 42034, 0xa432, Photo, Exif.Photo.LensSpecification, Rational, This tag notes minimum focal length, maximum focal length, minimum F number in the minimum focal length, and minimum F number in the maximum focal length, which are specification information for the lens that was used in photography. When the minimum F number is unknown, the notation is 0/0 -LensMake, 42035, 0xa433, Photo, Exif.Photo.LensMake, Ascii, This tag records the lens manufactor as an ASCII string. -LensModel, 42036, 0xa434, Photo, Exif.Photo.LensModel, Ascii, This tag records the lens's model name and model number as an ASCII string. -LensSerialNumber, 42037, 0xa435, Photo, Exif.Photo.LensSerialNumber, Ascii, This tag records the serial number of the interchangeable lens that was used in photography as an ASCII string. -InteroperabilityIndex, 1, 0x0001, Iop, Exif.Iop.InteroperabilityIndex, Ascii, Indicates the identification of the Interoperability rule. Use "R98" for stating ExifR98 Rules. Four bytes used including the termination code (NULL). see the separate volume of Recommended Exif Interoperability Rules (ExifR98) for other tags used for ExifR98. -InteroperabilityVersion, 2, 0x0002, Iop, Exif.Iop.InteroperabilityVersion, Undefined, Interoperability version -RelatedImageFileFormat, 4096, 0x1000, Iop, Exif.Iop.RelatedImageFileFormat, Ascii, File format of image file -RelatedImageWidth, 4097, 0x1001, Iop, Exif.Iop.RelatedImageWidth, Long, Image width -RelatedImageLength, 4098, 0x1002, Iop, Exif.Iop.RelatedImageLength, Long, Image height -GPSVersionID, 0, 0x0000, GPSInfo, Exif.GPSInfo.GPSVersionID, Byte, Indicates the version of . The version is given as 2.0.0.0. This tag is mandatory when tag is present. (Note: The tag is given in bytes, unlike the tag. When the version is 2.0.0.0, the tag value is 02000000.H). -GPSLatitudeRef, 1, 0x0001, GPSInfo, Exif.GPSInfo.GPSLatitudeRef, Ascii, Indicates whether the latitude is north or south latitude. The ASCII value 'N' indicates north latitude, and 'S' is south latitude. -GPSLatitude, 2, 0x0002, GPSInfo, Exif.GPSInfo.GPSLatitude, Rational, Indicates the latitude. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is dd/1,mmmm/100,0/1. -GPSLongitudeRef, 3, 0x0003, GPSInfo, Exif.GPSInfo.GPSLongitudeRef, Ascii, Indicates whether the longitude is east or west longitude. ASCII 'E' indicates east longitude, and 'W' is west longitude. -GPSLongitude, 4, 0x0004, GPSInfo, Exif.GPSInfo.GPSLongitude, Rational, Indicates the longitude. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is ddd/1,mmmm/100,0/1. -GPSAltitudeRef, 5, 0x0005, GPSInfo, Exif.GPSInfo.GPSAltitudeRef, Byte, Indicates the altitude used as the reference altitude. If the reference is sea level and the altitude is above sea level, 0 is given. If the altitude is below sea level, a value of 1 is given and the altitude is indicated as an absolute value in the GSPAltitude tag. The reference unit is meters. Note that this tag is BYTE type, unlike other reference tags. -GPSAltitude, 6, 0x0006, GPSInfo, Exif.GPSInfo.GPSAltitude, Rational, Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is expressed as one RATIONAL value. The reference unit is meters. -GPSTimeStamp, 7, 0x0007, GPSInfo, Exif.GPSInfo.GPSTimeStamp, Rational, Indicates the time as UTC (Coordinated Universal Time). is expressed as three RATIONAL values giving the hour, minute, and second (atomic clock). -GPSSatellites, 8, 0x0008, GPSInfo, Exif.GPSInfo.GPSSatellites, Ascii, Indicates the GPS satellites used for measurements. This tag can be used to describe the number of satellites, their ID number, angle of elevation, azimuth, SNR and other information in ASCII notation. The format is not specified. If the GPS receiver is incapable of taking measurements, value of the tag is set to NULL. -GPSStatus, 9, 0x0009, GPSInfo, Exif.GPSInfo.GPSStatus, Ascii, Indicates the status of the GPS receiver when the image is recorded. "A" means measurement is in progress, and "V" means the measurement is Interoperability. -GPSMeasureMode, 10, 0x000a, GPSInfo, Exif.GPSInfo.GPSMeasureMode, Ascii, Indicates the GPS measurement mode. "2" means two-dimensional measurement and "3" means three-dimensional measurement is in progress. -GPSDOP, 11, 0x000b, GPSInfo, Exif.GPSInfo.GPSDOP, Rational, Indicates the GPS DOP (data degree of precision). An HDOP value is written during two-dimensional measurement, and PDOP during three-dimensional measurement. -GPSSpeedRef, 12, 0x000c, GPSInfo, Exif.GPSInfo.GPSSpeedRef, Ascii, Indicates the unit used to express the GPS receiver speed of movement. "K" "M" and "N" represents kilometers per hour, miles per hour, and knots. -GPSSpeed, 13, 0x000d, GPSInfo, Exif.GPSInfo.GPSSpeed, Rational, Indicates the speed of GPS receiver movement. -GPSTrackRef, 14, 0x000e, GPSInfo, Exif.GPSInfo.GPSTrackRef, Ascii, Indicates the reference for giving the direction of GPS receiver movement. "T" denotes true direction and "M" is magnetic direction. -GPSTrack, 15, 0x000f, GPSInfo, Exif.GPSInfo.GPSTrack, Rational, Indicates the direction of GPS receiver movement. The range of values is from 0.00 to 359.99. -GPSImgDirectionRef, 16, 0x0010, GPSInfo, Exif.GPSInfo.GPSImgDirectionRef, Ascii, Indicates the reference for giving the direction of the image when it is captured. "T" denotes true direction and "M" is magnetic direction. -GPSImgDirection, 17, 0x0011, GPSInfo, Exif.GPSInfo.GPSImgDirection, Rational, Indicates the direction of the image when it was captured. The range of values is from 0.00 to 359.99. -GPSMapDatum, 18, 0x0012, GPSInfo, Exif.GPSInfo.GPSMapDatum, Ascii, Indicates the geodetic survey data used by the GPS receiver. If the survey data is restricted to Japan, the value of this tag is "TOKYO" or "WGS-84". -GPSDestLatitudeRef, 19, 0x0013, GPSInfo, Exif.GPSInfo.GPSDestLatitudeRef, Ascii, Indicates whether the latitude of the destination point is north or south latitude. The ASCII value "N" indicates north latitude, and "S" is south latitude. -GPSDestLatitude, 20, 0x0014, GPSInfo, Exif.GPSInfo.GPSDestLatitude, Rational, Indicates the latitude of the destination point. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If latitude is expressed as degrees, minutes and seconds, a typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be dd/1,mmmm/100,0/1. -GPSDestLongitudeRef, 21, 0x0015, GPSInfo, Exif.GPSInfo.GPSDestLongitudeRef, Ascii, Indicates whether the longitude of the destination point is east or west longitude. ASCII "E" indicates east longitude, and "W" is west longitude. -GPSDestLongitude, 22, 0x0016, GPSInfo, Exif.GPSInfo.GPSDestLongitude, Rational, Indicates the longitude of the destination point. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If longitude is expressed as degrees, minutes and seconds, a typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be ddd/1,mmmm/100,0/1. -GPSDestBearingRef, 23, 0x0017, GPSInfo, Exif.GPSInfo.GPSDestBearingRef, Ascii, Indicates the reference used for giving the bearing to the destination point. "T" denotes true direction and "M" is magnetic direction. -GPSDestBearing, 24, 0x0018, GPSInfo, Exif.GPSInfo.GPSDestBearing, Rational, Indicates the bearing to the destination point. The range of values is from 0.00 to 359.99. -GPSDestDistanceRef, 25, 0x0019, GPSInfo, Exif.GPSInfo.GPSDestDistanceRef, Ascii, Indicates the unit used to express the distance to the destination point. "K", "M" and "N" represent kilometers, miles and knots. -GPSDestDistance, 26, 0x001a, GPSInfo, Exif.GPSInfo.GPSDestDistance, Rational, Indicates the distance to the destination point. -GPSProcessingMethod, 27, 0x001b, GPSInfo, Exif.GPSInfo.GPSProcessingMethod, Undefined, A character string recording the name of the method used for location finding. The first byte indicates the character code used, and this is followed by the name of the method. -GPSAreaInformation, 28, 0x001c, GPSInfo, Exif.GPSInfo.GPSAreaInformation, Undefined, A character string recording the name of the GPS area. The first byte indicates the character code used, and this is followed by the name of the GPS area. -GPSDateStamp, 29, 0x001d, GPSInfo, Exif.GPSInfo.GPSDateStamp, Ascii, A character string recording date and time information relative to UTC (Coordinated Universal Time). The format is "YYYY:MM:DD.". -GPSDifferential, 30, 0x001e, GPSInfo, Exif.GPSInfo.GPSDifferential, Short, Indicates whether differential correction is applied to the GPS receiver. -Usage: bin\DebugDLL\tiff-test.exe file - /usr/lib /usr lib - /usr/ / usr - usr . usr - / / - . . . - .. . .. - /// / - /usr/.emacs /usr .emacs - /usr/.emacs/ /usr .emacs - /usr/.emacs// /usr .emacs - usr/.emacs usr .emacs - .emacs . .emacs - .emacs.gz . .emacs.gz .gz - /tmp/image.jpg /tmp image.jpg .jpg -/tmp/.image.jpg /tmp .image.jpg .jpg - /image.jpg / image.jpg .jpg - image.jpg . image.jpg .jpg - image.jpg// . image.jpg .jpg - /////image.jpg / image.jpg .jpg - /foo.bar/image /foo.bar image -/foo.bar/images.tar.gz /foo.bar images.tar.gz .gz -d:\foo.bar\images.tar.gz d:\foo.bar images.tar.gz .gz -Usage: write-test file case - -where case is an integer between 1 and 11 -Usage: bin\DebugDLL\write2-test.exe file -Usage: bin\DebugDLL\xmpparse.exe file -Usage: bin\DebugDLL\xmpparser-test.exe file -Xmp.dc.source XmpText 13 xmpsample.cpp -Xmp.dc.subject XmpBag 2 Palmtree, Rubbertree -Xmp.dc.title LangAlt 2 lang="de-DE" Sonnenuntergang am Strand, lang="en-US" Sunset on the beach -Xmp.dc.one XmpText 2 -1 -Xmp.dc.two XmpText 6 3.1415 -Xmp.dc.three XmpText 3 5/7 -Xmp.dc.four XmpText 3 255 -Xmp.dc.five XmpText 3 256 -Xmp.dc.six XmpText 5 False -Xmp.dc.seven XmpText 5 Seven -Xmp.dc.format XmpText 10 image/jpeg -Xmp.dc.creator XmpSeq 3 1) The first creator, 2) The second creator, 3) And another one -Xmp.dc.description LangAlt 2 lang="x-default" Hello, World, lang="de-DE" Hallo, Welt -Xmp.tiff.ImageDescription LangAlt 2 lang="x-default" TIFF image description, lang="de-DE" TIFF Bildbeschreibung -Xmp.ns.myProperty XmpText 7 myValue -Xmp.xmpDM.videoFrameSize/stDim:w XmpText 2 16 -Xmp.xmpDM.videoFrameSize/stDim:h XmpText 1 9 -Xmp.xmpDM.videoFrameSize/stDim:unit XmpText 4 inch -Xmp.dc.publisher XmpBag 1 James Bond -Xmp.dc.publisher[1]/?ns:role XmpText 12 secret agent -Xmp.dc.creator[2]/?ns:role XmpText 10 programmer -Xmp.xmpBJ.JobRef XmpText 0 type="Bag" -Xmp.xmpBJ.JobRef[1]/stJob:name XmpText 14 Birthday party -Xmp.xmpBJ.JobRef[1]/stJob:role XmpText 12 Photographer -Xmp.xmpBJ.JobRef[2]/stJob:name XmpText 16 Wedding ceremony -Xmp.xmpBJ.JobRef[2]/stJob:role XmpText 8 Best man -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCity XmpText 12 Kuala Lumpur -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCtry XmpText 8 Malaysia -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiUrlWork XmpText 20 http://www.exiv2.org - - - - - - - Palmtree - Rubbertree - - - - - Sonnenuntergang am Strand - Sunset on the beach - - - - - 1) The first creator - - 2) The second creator - programmer - - 3) And another one - - - - - Hello, World - Hallo, Welt - - - - - - James Bond - secret agent - - - - - - TIFF image description - TIFF Bildbeschreibung - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Usage: bin\Release\addmoddel.exe file -Usage: bin\Release\convert-test.exe file -Usage: bin\Release\exifcomment.exe file -Usage: bin\Release\exifdata-test.exe file -Usage: bin\Release\exifprint.exe file -Usage: exiv2.exe [ options ] [ action ] file ... - -Manipulate the Exif metadata of images. -Usage: bin\Release\iotest.exe filein fileout1 fileout2 -fileouts are overwritten and should match filein exactly -Usage: bin\Release\iptceasy.exe file -Usage: bin\Release\iptcprint.exe file -Usage: bin\Release\iptctest.exe image -Commands read from stdin. -Usage: bin\Release\largeiptc-test.exe image datafile - -Reads and writes raw metadata. Use -h option for help. -Usage: metacopy.exe [-iecaph] readfile writefile -Usage: bin\Release\mmap-test.exe file -Usage: bin\Release\prevtest.exe file -string long float Rational -True 1 1 1/1 -False 0 0 0/1 -t 1 1 1/1 -f 0 0 0/1 --1 -1 -1 -1/1 -0 0 0 0/1 -1 1 1 1/1 -0.0 0 0 0/1 -0.1 0 0.1 1/10 -0.01 0 0.01 1/100 -0.001 0 0.001 1/1000 --1.49999 -1 -1.49999 -149999/100000 --1.5 -1 -1.5 -3/2 -1.49999 1 1.49999 149999/100000 -1.5 1 1.5 3/2 -0/1 0 0 0/1 -1/1 1 1 1/1 -1/3 0 0.333333 1/3 --1/3 0 -0.333333 -1/3 -4/3 1 1.33333 4/3 --4/3 -1 -1.33333 -4/3 -0/0 nok nok 0/0 -text nok nok nok -ProcessingSoftware, 11, 0x000b, Image, Exif.Image.ProcessingSoftware, Ascii, The name and version of the software used to post-process the picture. -NewSubfileType, 254, 0x00fe, Image, Exif.Image.NewSubfileType, Long, A general indication of the kind of data contained in this subfile. -SubfileType, 255, 0x00ff, Image, Exif.Image.SubfileType, Short, A general indication of the kind of data contained in this subfile. This field is deprecated. The NewSubfileType field should be used instead. -ImageWidth, 256, 0x0100, Image, Exif.Image.ImageWidth, Long, The number of columns of image data, equal to the number of pixels per row. In JPEG compressed data a JPEG marker is used instead of this tag. -ImageLength, 257, 0x0101, Image, Exif.Image.ImageLength, Long, The number of rows of image data. In JPEG compressed data a JPEG marker is used instead of this tag. -BitsPerSample, 258, 0x0102, Image, Exif.Image.BitsPerSample, Short, The number of bits per image component. In this standard each component of the image is 8 bits, so the value for this tag is 8. See also . In JPEG compressed data a JPEG marker is used instead of this tag. -Compression, 259, 0x0103, Image, Exif.Image.Compression, Short, The compression scheme used for the image data. When a primary image is JPEG compressed, this designation is not necessary and is omitted. When thumbnails use JPEG compression, this tag value is set to 6. -PhotometricInterpretation, 262, 0x0106, Image, Exif.Image.PhotometricInterpretation, Short, The pixel composition. In JPEG compressed data a JPEG marker is used instead of this tag. -Threshholding, 263, 0x0107, Image, Exif.Image.Threshholding, Short, For black and white TIFF files that represent shades of gray, the technique used to convert from gray to black and white pixels. -CellWidth, 264, 0x0108, Image, Exif.Image.CellWidth, Short, The width of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -CellLength, 265, 0x0109, Image, Exif.Image.CellLength, Short, The length of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -FillOrder, 266, 0x010a, Image, Exif.Image.FillOrder, Short, The logical order of bits within a byte -DocumentName, 269, 0x010d, Image, Exif.Image.DocumentName, Ascii, The name of the document from which this image was scanned -ImageDescription, 270, 0x010e, Image, Exif.Image.ImageDescription, Ascii, A character string giving the title of the image. It may be a comment such as "1988 company picnic" or the like. Two-bytes character codes cannot be used. When a 2-bytes code is necessary, the Exif Private tag is to be used. -Make, 271, 0x010f, Image, Exif.Image.Make, Ascii, The manufacturer of the recording equipment. This is the manufacturer of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -Model, 272, 0x0110, Image, Exif.Image.Model, Ascii, The model name or model number of the equipment. This is the model name or number of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -StripOffsets, 273, 0x0111, Image, Exif.Image.StripOffsets, Long, For each strip, the byte offset of that strip. It is recommended that this be selected so the number of strip bytes does not exceed 64 Kbytes. With JPEG compressed data this designation is not needed and is omitted. See also and . -Orientation, 274, 0x0112, Image, Exif.Image.Orientation, Short, The image orientation viewed in terms of rows and columns. -SamplesPerPixel, 277, 0x0115, Image, Exif.Image.SamplesPerPixel, Short, The number of components per pixel. Since this standard applies to RGB and YCbCr images, the value set for this tag is 3. In JPEG compressed data a JPEG marker is used instead of this tag. -RowsPerStrip, 278, 0x0116, Image, Exif.Image.RowsPerStrip, Long, The number of rows per strip. This is the number of rows in the image of one strip when an image is divided into strips. With JPEG compressed data this designation is not needed and is omitted. See also and . -StripByteCounts, 279, 0x0117, Image, Exif.Image.StripByteCounts, Long, The total number of bytes in each strip. With JPEG compressed data this designation is not needed and is omitted. -XResolution, 282, 0x011a, Image, Exif.Image.XResolution, Rational, The number of pixels per in the direction. When the image resolution is unknown, 72 [dpi] is designated. -YResolution, 283, 0x011b, Image, Exif.Image.YResolution, Rational, The number of pixels per in the direction. The same value as is designated. -PlanarConfiguration, 284, 0x011c, Image, Exif.Image.PlanarConfiguration, Short, Indicates whether pixel components are recorded in a chunky or planar format. In JPEG compressed files a JPEG marker is used instead of this tag. If this field does not exist, the TIFF default of 1 (chunky) is assumed. -GrayResponseUnit, 290, 0x0122, Image, Exif.Image.GrayResponseUnit, Short, The precision of the information contained in the GrayResponseCurve. -GrayResponseCurve, 291, 0x0123, Image, Exif.Image.GrayResponseCurve, Short, For grayscale data, the optical density of each possible pixel value. -T4Options, 292, 0x0124, Image, Exif.Image.T4Options, Long, T.4-encoding options. -T6Options, 293, 0x0125, Image, Exif.Image.T6Options, Long, T.6-encoding options. -ResolutionUnit, 296, 0x0128, Image, Exif.Image.ResolutionUnit, Short, The unit for measuring and . The same unit is used for both and . If the image resolution is unknown, 2 (inches) is designated. -TransferFunction, 301, 0x012d, Image, Exif.Image.TransferFunction, Short, A transfer function for the image, described in tabular style. Normally this tag is not necessary, since color space is specified in the color space information tag (). -Software, 305, 0x0131, Image, Exif.Image.Software, Ascii, This tag records the name and version of the software or firmware of the camera or image input device used to generate the image. The detailed format is not specified, but it is recommended that the example shown below be followed. When the field is left blank, it is treated as unknown. -DateTime, 306, 0x0132, Image, Exif.Image.DateTime, Ascii, The date and time of image creation. In Exif standard, it is the date and time the file was changed. -Artist, 315, 0x013b, Image, Exif.Image.Artist, Ascii, This tag records the name of the camera owner, photographer or image creator. The detailed format is not specified, but it is recommended that the information be written as in the example below for ease of Interoperability. When the field is left blank, it is treated as unknown. Ex.) "Camera owner, John Smith; Photographer, Michael Brown; Image creator, Ken James" -HostComputer, 316, 0x013c, Image, Exif.Image.HostComputer, Ascii, This tag records information about the host computer used to generate the image. -Predictor, 317, 0x013d, Image, Exif.Image.Predictor, Short, A predictor is a mathematical operator that is applied to the image data before an encoding scheme is applied. -WhitePoint, 318, 0x013e, Image, Exif.Image.WhitePoint, Rational, The chromaticity of the white point of the image. Normally this tag is not necessary, since color space is specified in the colorspace information tag (). -PrimaryChromaticities, 319, 0x013f, Image, Exif.Image.PrimaryChromaticities, Rational, The chromaticity of the three primary colors of the image. Normally this tag is not necessary, since colorspace is specified in the colorspace information tag (). -ColorMap, 320, 0x0140, Image, Exif.Image.ColorMap, Short, A color map for palette color images. This field defines a Red-Green-Blue color map (often called a lookup table) for palette-color images. In a palette-color image, a pixel value is used to index into an RGB lookup table. -HalftoneHints, 321, 0x0141, Image, Exif.Image.HalftoneHints, Short, The purpose of the HalftoneHints field is to convey to the halftone function the range of gray levels within a colorimetrically-specified image that should retain tonal detail. -TileWidth, 322, 0x0142, Image, Exif.Image.TileWidth, Short, The tile width in pixels. This is the number of columns in each tile. -TileLength, 323, 0x0143, Image, Exif.Image.TileLength, Short, The tile length (height) in pixels. This is the number of rows in each tile. -TileOffsets, 324, 0x0144, Image, Exif.Image.TileOffsets, Short, For each tile, the byte offset of that tile, as compressed and stored on disk. The offset is specified with respect to the beginning of the TIFF file. Note that this implies that each tile has a location independent of the locations of other tiles. -TileByteCounts, 325, 0x0145, Image, Exif.Image.TileByteCounts, Short, For each tile, the number of (compressed) bytes in that tile. See TileOffsets for a description of how the byte counts are ordered. -SubIFDs, 330, 0x014a, Image, Exif.Image.SubIFDs, Long, Defined by Adobe Corporation to enable TIFF Trees within a TIFF file. -InkSet, 332, 0x014c, Image, Exif.Image.InkSet, Short, The set of inks used in a separated (PhotometricInterpretation=5) image. -InkNames, 333, 0x014d, Image, Exif.Image.InkNames, Ascii, The name of each ink used in a separated (PhotometricInterpretation=5) image. -NumberOfInks, 334, 0x014e, Image, Exif.Image.NumberOfInks, Short, The number of inks. Usually equal to SamplesPerPixel, unless there are extra samples. -DotRange, 336, 0x0150, Image, Exif.Image.DotRange, Byte, The component values that correspond to a 0% dot and 100% dot. -TargetPrinter, 337, 0x0151, Image, Exif.Image.TargetPrinter, Ascii, A description of the printing environment for which this separation is intended. -ExtraSamples, 338, 0x0152, Image, Exif.Image.ExtraSamples, Short, Specifies that each pixel has m extra components whose interpretation is defined by one of the values listed below. -SampleFormat, 339, 0x0153, Image, Exif.Image.SampleFormat, Short, This field specifies how to interpret each data sample in a pixel. -SMinSampleValue, 340, 0x0154, Image, Exif.Image.SMinSampleValue, Short, This field specifies the minimum sample value. -SMaxSampleValue, 341, 0x0155, Image, Exif.Image.SMaxSampleValue, Short, This field specifies the maximum sample value. -TransferRange, 342, 0x0156, Image, Exif.Image.TransferRange, Short, Expands the range of the TransferFunction -ClipPath, 343, 0x0157, Image, Exif.Image.ClipPath, Byte, A TIFF ClipPath is intended to mirror the essentials of PostScript's path creation functionality. -XClipPathUnits, 344, 0x0158, Image, Exif.Image.XClipPathUnits, SShort, The number of units that span the width of the image, in terms of integer ClipPath coordinates. -YClipPathUnits, 345, 0x0159, Image, Exif.Image.YClipPathUnits, SShort, The number of units that span the height of the image, in terms of integer ClipPath coordinates. -Indexed, 346, 0x015a, Image, Exif.Image.Indexed, Short, Indexed images are images where the 'pixels' do not represent color values, but rather an index (usually 8-bit) into a separate color table, the ColorMap. -JPEGTables, 347, 0x015b, Image, Exif.Image.JPEGTables, Undefined, This optional tag may be used to encode the JPEG quantization andHuffman tables for subsequent use by the JPEG decompression process. -OPIProxy, 351, 0x015f, Image, Exif.Image.OPIProxy, Short, OPIProxy gives information concerning whether this image is a low-resolution proxy of a high-resolution image (Adobe OPI). -JPEGProc, 512, 0x0200, Image, Exif.Image.JPEGProc, Long, This field indicates the process used to produce the compressed data -JPEGInterchangeFormat, 513, 0x0201, Image, Exif.Image.JPEGInterchangeFormat, Long, The offset to the start byte (SOI) of JPEG compressed thumbnail data. This is not used for primary image JPEG data. -JPEGInterchangeFormatLength, 514, 0x0202, Image, Exif.Image.JPEGInterchangeFormatLength, Long, The number of bytes of JPEG compressed thumbnail data. This is not used for primary image JPEG data. JPEG thumbnails are not divided but are recorded as a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not be recorded. Compressed thumbnails must be recorded in no more than 64 Kbytes, including all other data to be recorded in APP1. -JPEGRestartInterval, 515, 0x0203, Image, Exif.Image.JPEGRestartInterval, Short, This Field indicates the length of the restart interval used in the compressed image data. -JPEGLosslessPredictors, 517, 0x0205, Image, Exif.Image.JPEGLosslessPredictors, Short, This Field points to a list of lossless predictor-selection values, one per component. -JPEGPointTransforms, 518, 0x0206, Image, Exif.Image.JPEGPointTransforms, Short, This Field points to a list of point transform values, one per component. -JPEGQTables, 519, 0x0207, Image, Exif.Image.JPEGQTables, Long, This Field points to a list of offsets to the quantization tables, one per component. -JPEGDCTables, 520, 0x0208, Image, Exif.Image.JPEGDCTables, Long, This Field points to a list of offsets to the DC Huffman tables or the lossless Huffman tables, one per component. -JPEGACTables, 521, 0x0209, Image, Exif.Image.JPEGACTables, Long, This Field points to a list of offsets to the Huffman AC tables, one per component. -YCbCrCoefficients, 529, 0x0211, Image, Exif.Image.YCbCrCoefficients, Rational, The matrix coefficients for transformation from RGB to YCbCr image data. No default is given in TIFF; but here the value given in Appendix E, "Color Space Guidelines", is used as the default. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability this condition. -YCbCrSubSampling, 530, 0x0212, Image, Exif.Image.YCbCrSubSampling, Short, The sampling ratio of chrominance components in relation to the luminance component. In JPEG compressed data a JPEG marker is used instead of this tag. -YCbCrPositioning, 531, 0x0213, Image, Exif.Image.YCbCrPositioning, Short, The position of chrominance components in relation to the luminance component. This field is designated only for JPEG compressed data or uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr = 4:2:2 it is recommended in this standard that 2 (co-sited) be used to record data, in order to improve the image quality when viewed on TV systems. When this field does not exist, the reader shall assume the TIFF default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is recommended. If the reader does not have the capability of supporting both kinds of , it shall follow the TIFF default regardless of the value in this field. It is preferable that readers be able to support both centered and co-sited positioning. -ReferenceBlackWhite, 532, 0x0214, Image, Exif.Image.ReferenceBlackWhite, Rational, The reference black point value and reference white point value. No defaults are given in TIFF, but the values below are given as defaults here. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability these conditions. -XMLPacket, 700, 0x02bc, Image, Exif.Image.XMLPacket, Byte, XMP Metadata (Adobe technote 9-14-02) -Rating, 18246, 0x4746, Image, Exif.Image.Rating, Short, Rating tag used by Windows -RatingPercent, 18249, 0x4749, Image, Exif.Image.RatingPercent, Short, Rating tag used by Windows, value in percent -ImageID, 32781, 0x800d, Image, Exif.Image.ImageID, Ascii, ImageID is the full pathname of the original, high-resolution image, or any other identifying string that uniquely identifies the original image (Adobe OPI). -CFARepeatPatternDim, 33421, 0x828d, Image, Exif.Image.CFARepeatPatternDim, Short, Contains two values representing the minimum rows and columns to define the repeating patterns of the color filter array -CFAPattern, 33422, 0x828e, Image, Exif.Image.CFAPattern, Byte, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods -BatteryLevel, 33423, 0x828f, Image, Exif.Image.BatteryLevel, Rational, Contains a value of the battery level as a fraction or string -Copyright, 33432, 0x8298, Image, Exif.Image.Copyright, Ascii, Copyright information. In this standard the tag is used to indicate both the photographer and editor copyrights. It is the copyright notice of the person or organization claiming rights to the image. The Interoperability copyright statement including date and rights should be written in this field; e.g., "Copyright, John Smith, 19xx. All rights reserved.". In this standard the field records both the photographer and editor copyrights, with each recorded in a separate part of the statement. When there is a clear distinction between the photographer and editor copyrights, these are to be written in the order of photographer followed by editor copyright, separated by NULL (in this case since the statement also ends with a NULL, there are two NULL codes). When only the photographer copyright is given, it is terminated by one NULL code . When only the editor copyright is given, the photographer copyright part consists of one space followed by a terminating NULL code, then the editor copyright is given. When the field is left blank, it is treated as unknown. -ExposureTime, 33434, 0x829a, Image, Exif.Image.ExposureTime, Rational, Exposure time, given in seconds. -FNumber, 33437, 0x829d, Image, Exif.Image.FNumber, Rational, The F number. -IPTCNAA, 33723, 0x83bb, Image, Exif.Image.IPTCNAA, Long, Contains an IPTC/NAA record -ImageResources, 34377, 0x8649, Image, Exif.Image.ImageResources, Byte, Contains information embedded by the Adobe Photoshop application -ExifTag, 34665, 0x8769, Image, Exif.Image.ExifTag, Long, A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure as that of the IFD specified in TIFF. ordinarily, however, it does not contain image data as in the case of TIFF. -InterColorProfile, 34675, 0x8773, Image, Exif.Image.InterColorProfile, Undefined, Contains an InterColor Consortium (ICC) format color space characterization/profile -ExposureProgram, 34850, 0x8822, Image, Exif.Image.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Image, Exif.Image.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. -GPSTag, 34853, 0x8825, Image, Exif.Image.GPSTag, Long, A pointer to the GPS Info IFD. The Interoperability structure of the GPS Info IFD, like that of Exif IFD, has no image data. -ISOSpeedRatings, 34855, 0x8827, Image, Exif.Image.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Image, Exif.Image.OECF, Undefined, Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524. -Interlace, 34857, 0x8829, Image, Exif.Image.Interlace, Short, Indicates the field number of multifield images. -TimeZoneOffset, 34858, 0x882a, Image, Exif.Image.TimeZoneOffset, SShort, This optional tag encodes the time zone of the camera clock (relativeto Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the picture was taken. It may also contain the time zone offsetof the clock used to create the DateTime tag-value when the image wasmodified. -SelfTimerMode, 34859, 0x882b, Image, Exif.Image.SelfTimerMode, Short, Number of seconds image capture was delayed from button press. -DateTimeOriginal, 36867, 0x9003, Image, Exif.Image.DateTimeOriginal, Ascii, The date and time when the original image data was generated. -CompressedBitsPerPixel, 37122, 0x9102, Image, Exif.Image.CompressedBitsPerPixel, Rational, Specific to compressed data; states the compressed bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Image, Exif.Image.ShutterSpeedValue, SRational, Shutter speed. -ApertureValue, 37378, 0x9202, Image, Exif.Image.ApertureValue, Rational, The lens aperture. -BrightnessValue, 37379, 0x9203, Image, Exif.Image.BrightnessValue, SRational, The value of brightness. -ExposureBiasValue, 37380, 0x9204, Image, Exif.Image.ExposureBiasValue, SRational, The exposure bias. -MaxApertureValue, 37381, 0x9205, Image, Exif.Image.MaxApertureValue, Rational, The smallest F number of the lens. -SubjectDistance, 37382, 0x9206, Image, Exif.Image.SubjectDistance, SRational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Image, Exif.Image.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Image, Exif.Image.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Image, Exif.Image.Flash, Short, Indicates the status of flash when the image was shot. -FocalLength, 37386, 0x920a, Image, Exif.Image.FocalLength, Rational, The actual focal length of the lens, in mm. -FlashEnergy, 37387, 0x920b, Image, Exif.Image.FlashEnergy, Rational, Amount of flash energy (BCPS). -SpatialFrequencyResponse, 37388, 0x920c, Image, Exif.Image.SpatialFrequencyResponse, Undefined, SFR of the camera. -Noise, 37389, 0x920d, Image, Exif.Image.Noise, Undefined, Noise measurement values. -FocalPlaneXResolution, 37390, 0x920e, Image, Exif.Image.FocalPlaneXResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth direction for main image. -FocalPlaneYResolution, 37391, 0x920f, Image, Exif.Image.FocalPlaneYResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength direction for main image. -FocalPlaneResolutionUnit, 37392, 0x9210, Image, Exif.Image.FocalPlaneResolutionUnit, Short, Unit of measurement for FocalPlaneXResolution(37390) and FocalPlaneYResolution(37391). -ImageNumber, 37393, 0x9211, Image, Exif.Image.ImageNumber, Long, Number assigned to an image, e.g., in a chained image burst. -SecurityClassification, 37394, 0x9212, Image, Exif.Image.SecurityClassification, Ascii, Security classification assigned to the image. -ImageHistory, 37395, 0x9213, Image, Exif.Image.ImageHistory, Ascii, Record of what has been done to the image. -SubjectLocation, 37396, 0x9214, Image, Exif.Image.SubjectLocation, Short, Indicates the location and area of the main subject in the overall scene. -ExposureIndex, 37397, 0x9215, Image, Exif.Image.ExposureIndex, Rational, Encodes the camera exposure index setting when image was captured. -TIFFEPStandardID, 37398, 0x9216, Image, Exif.Image.TIFFEPStandardID, Byte, Contains four ASCII characters representing the TIFF/EP standard version of a TIFF/EP file, eg '1', '0', '0', '0' -SensingMethod, 37399, 0x9217, Image, Exif.Image.SensingMethod, Short, Type of image sensor. -XPTitle, 40091, 0x9c9b, Image, Exif.Image.XPTitle, Byte, Title tag used by Windows, encoded in UCS2 -XPComment, 40092, 0x9c9c, Image, Exif.Image.XPComment, Byte, Comment tag used by Windows, encoded in UCS2 -XPAuthor, 40093, 0x9c9d, Image, Exif.Image.XPAuthor, Byte, Author tag used by Windows, encoded in UCS2 -XPKeywords, 40094, 0x9c9e, Image, Exif.Image.XPKeywords, Byte, Keywords tag used by Windows, encoded in UCS2 -XPSubject, 40095, 0x9c9f, Image, Exif.Image.XPSubject, Byte, Subject tag used by Windows, encoded in UCS2 -PrintImageMatching, 50341, 0xc4a5, Image, Exif.Image.PrintImageMatching, Undefined, Print Image Matching, description needed. -DNGVersion, 50706, 0xc612, Image, Exif.Image.DNGVersion, Byte, This tag encodes the DNG four-tier version number. For files compliant with version 1.1.0.0 of the DNG specification, this tag should contain the bytes: 1, 1, 0, 0. -DNGBackwardVersion, 50707, 0xc613, Image, Exif.Image.DNGBackwardVersion, Byte, This tag specifies the oldest version of the Digital Negative specification for which a file is compatible. Readers shouldnot attempt to read a file if this tag specifies a version number that is higher than the version number of the specification the reader was based on. In addition to checking the version tags, readers should, for all tags, check the types, counts, and values, to verify it is able to correctly read the file. -UniqueCameraModel, 50708, 0xc614, Image, Exif.Image.UniqueCameraModel, Ascii, Defines a unique, non-localized name for the camera model that created the image in the raw file. This name should include the manufacturer's name to avoid conflicts, and should not be localized, even if the camera name itself is localized for different markets (see LocalizedCameraModel). This string may be used by reader software to index into per-model preferences and replacement profiles. -LocalizedCameraModel, 50709, 0xc615, Image, Exif.Image.LocalizedCameraModel, Byte, Similar to the UniqueCameraModel field, except the name can be localized for different markets to match the localization of the camera name. -CFAPlaneColor, 50710, 0xc616, Image, Exif.Image.CFAPlaneColor, Byte, Provides a mapping between the values in the CFAPattern tag and the plane numbers in LinearRaw space. This is a required tag for non-RGB CFA images. -CFALayout, 50711, 0xc617, Image, Exif.Image.CFALayout, Short, Describes the spatial layout of the CFA. -LinearizationTable, 50712, 0xc618, Image, Exif.Image.LinearizationTable, Short, Describes a lookup table that maps stored values into linear values. This tag is typically used to increase compression ratios by storing the raw data in a non-linear, more visually uniform space with fewer total encoding levels. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelRepeatDim, 50713, 0xc619, Image, Exif.Image.BlackLevelRepeatDim, Short, Specifies repeat pattern size for the BlackLevel tag. -BlackLevel, 50714, 0xc61a, Image, Exif.Image.BlackLevel, Rational, Specifies the zero light (a.k.a. thermal black or black current) encoding level, as a repeating pattern. The origin of this pattern is the top-left corner of the ActiveArea rectangle. The values are stored in row-column-sample scan order. -BlackLevelDeltaH, 50715, 0xc61b, Image, Exif.Image.BlackLevelDeltaH, SRational, If the zero light encoding level is a function of the image column, BlackLevelDeltaH specifies the difference between the zero light encoding level for each column and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelDeltaV, 50716, 0xc61c, Image, Exif.Image.BlackLevelDeltaV, SRational, If the zero light encoding level is a function of the image row, this tag specifies the difference between the zero light encoding level for each row and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -WhiteLevel, 50717, 0xc61d, Image, Exif.Image.WhiteLevel, Short, This tag specifies the fully saturated encoding level for the raw sample values. Saturation is caused either by the sensor itself becoming highly non-linear in response, or by the camera's analog to digital converter clipping. -DefaultScale, 50718, 0xc61e, Image, Exif.Image.DefaultScale, Rational, DefaultScale is required for cameras with non-square pixels. It specifies the default scale factors for each direction to convert the image to square pixels. Typically these factors are selected to approximately preserve total pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such as the Fujifilm SuperCCD, these two values should usually differ by a factor of 2.0. -DefaultCropOrigin, 50719, 0xc61f, Image, Exif.Image.DefaultCropOrigin, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropOrigin specifies the origin of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied), relative to the top-left corner of the ActiveArea rectangle. -DefaultCropSize, 50720, 0xc620, Image, Exif.Image.DefaultCropSize, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropSize specifies the size of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied). -ColorMatrix1, 50721, 0xc621, Image, Exif.Image.ColorMatrix1, SRational, ColorMatrix1 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the first calibration illuminant. The matrix values are stored in row scan order. The ColorMatrix1 tag is required for all non-monochrome DNG files. -ColorMatrix2, 50722, 0xc622, Image, Exif.Image.ColorMatrix2, SRational, ColorMatrix2 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the second calibration illuminant. The matrix values are stored in row scan order. -CameraCalibration1, 50723, 0xc623, Image, Exif.Image.CameraCalibration1, SRational, CameraClalibration1 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the first calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix1 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -CameraCalibration2, 50724, 0xc624, Image, Exif.Image.CameraCalibration2, SRational, CameraCalibration2 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the second calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix2 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -ReductionMatrix1, 50725, 0xc625, Image, Exif.Image.ReductionMatrix1, SRational, ReductionMatrix1 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the first calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -ReductionMatrix2, 50726, 0xc626, Image, Exif.Image.ReductionMatrix2, SRational, ReductionMatrix2 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the second calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -AnalogBalance, 50727, 0xc627, Image, Exif.Image.AnalogBalance, Rational, Normally the stored raw values are not white balanced, since any digital white balancing will reduce the dynamic range of the final image if the user decides to later adjust the white balance; however, if camera hardware is capable of white balancing the color channels before the signal is digitized, it can improve the dynamic range of the final image. AnalogBalance defines the gain, either analog (recommended) or digital (not recommended) that has been applied the stored raw values. -AsShotNeutral, 50728, 0xc628, Image, Exif.Image.AsShotNeutral, Short, Specifies the selected white balance at time of capture, encoded as the coordinates of a perfectly neutral color in linear reference space values. The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag. -AsShotWhiteXY, 50729, 0xc629, Image, Exif.Image.AsShotWhiteXY, Rational, Specifies the selected white balance at time of capture, encoded as x-y chromaticity coordinates. The inclusion of this tag precludes the inclusion of the AsShotNeutral tag. -BaselineExposure, 50730, 0xc62a, Image, Exif.Image.BaselineExposure, SRational, Camera models vary in the trade-off they make between highlight headroom and shadow noise. Some leave a significant amount of highlight headroom during a normal exposure. This allows significant negative exposure compensation to be applied during raw conversion, but also means normal exposures will contain more shadow noise. Other models leave less headroom during normal exposures. This allows for less negative exposure compensation, but results in lower shadow noise for normal exposures. Because of these differences, a raw converter needs to vary the zero point of its exposure compensation control from model to model. BaselineExposure specifies by how much (in EV units) to move the zero point. Positive values result in brighter default results, while negative values result in darker default results. -BaselineNoise, 50731, 0xc62b, Image, Exif.Image.BaselineNoise, Rational, Specifies the relative noise level of the camera model at a baseline ISO value of 100, compared to a reference camera model. Since noise levels tend to vary approximately with the square root of the ISO value, a raw converter can use this value, combined with the current ISO, to estimate the relative noise level of the current image. -BaselineSharpness, 50732, 0xc62c, Image, Exif.Image.BaselineSharpness, Rational, Specifies the relative amount of sharpening required for this camera model, compared to a reference camera model. Camera models vary in the strengths of their anti-aliasing filters. Cameras with weak or no filters require less sharpening than cameras with strong anti-aliasing filters. -BayerGreenSplit, 50733, 0xc62d, Image, Exif.Image.BayerGreenSplit, Long, Only applies to CFA images using a Bayer pattern filter array. This tag specifies, in arbitrary units, how closely the values of the green pixels in the blue/green rows track the values of the green pixels in the red/green rows. A value of zero means the two kinds of green pixels track closely, while a non-zero value means they sometimes diverge. The useful range for this tag is from 0 (no divergence) to about 5000 (quite large divergence). -LinearResponseLimit, 50734, 0xc62e, Image, Exif.Image.LinearResponseLimit, Rational, Some sensors have an unpredictable non-linearity in their response as they near the upper limit of their encoding range. This non-linearity results in color shifts in the highlight areas of the resulting image unless the raw converter compensates for this effect. LinearResponseLimit specifies the fraction of the encoding range above which the response may become significantly non-linear. -CameraSerialNumber, 50735, 0xc62f, Image, Exif.Image.CameraSerialNumber, Ascii, CameraSerialNumber contains the serial number of the camera or camera body that captured the image. -LensInfo, 50736, 0xc630, Image, Exif.Image.LensInfo, Rational, Contains information about the lens that captured the image. If the minimum f-stops are unknown, they should be encoded as 0/0. -ChromaBlurRadius, 50737, 0xc631, Image, Exif.Image.ChromaBlurRadius, Rational, ChromaBlurRadius provides a hint to the DNG reader about how much chroma blur should be applied to the image. If this tag is omitted, the reader will use its default amount of chroma blurring. Normally this tag is only included for non-CFA images, since the amount of chroma blur required for mosaic images is highly dependent on the de-mosaic algorithm, in which case the DNG reader's default value is likely optimized for its particular de-mosaic algorithm. -AntiAliasStrength, 50738, 0xc632, Image, Exif.Image.AntiAliasStrength, Rational, Provides a hint to the DNG reader about how strong the camera's anti-alias filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is prone to aliasing artifacts with some subjects), while a value of 1.0 means a strong anti-alias filter (i.e., the camera almost never has aliasing artifacts). -ShadowScale, 50739, 0xc633, Image, Exif.Image.ShadowScale, SRational, This tag is used by Adobe Camera Raw to control the sensitivity of its 'Shadows' slider. -DNGPrivateData, 50740, 0xc634, Image, Exif.Image.DNGPrivateData, Byte, Provides a way for camera manufacturers to store private data in the DNG file for use by their own raw converters, and to have that data preserved by programs that edit DNG files. -MakerNoteSafety, 50741, 0xc635, Image, Exif.Image.MakerNoteSafety, Short, MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is safe to preserve along with the rest of the EXIF data. File browsers and other image management software processing an image with a preserved MakerNote should be aware that any thumbnail image embedded in the MakerNote may be stale, and may not reflect the current state of the full size image. -CalibrationIlluminant1, 50778, 0xc65a, Image, Exif.Image.CalibrationIlluminant1, Short, The illuminant used for the first set of color calibration tags (ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for this tag are the same as the legal values for the LightSource EXIF tag. -CalibrationIlluminant2, 50779, 0xc65b, Image, Exif.Image.CalibrationIlluminant2, Short, The illuminant used for an optional second set of color calibration tags (ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for this tag are the same as the legal values for the CalibrationIlluminant1 tag; however, if both are included, neither is allowed to have a value of 0 (unknown). -BestQualityScale, 50780, 0xc65c, Image, Exif.Image.BestQualityScale, Rational, For some cameras, the best possible image quality is not achieved by preserving the total pixel count during conversion. For example, Fujifilm SuperCCD images have maximum detail when their total pixel count is doubled. This tag specifies the amount by which the values of the DefaultScale tag need to be multiplied to achieve the best quality image size. -RawDataUniqueID, 50781, 0xc65d, Image, Exif.Image.RawDataUniqueID, Byte, This tag contains a 16-byte unique identifier for the raw image data in the DNG file. DNG readers can use this tag to recognize a particular raw image, even if the file's name or the metadata contained in the file has been changed. If a DNG writer creates such an identifier, it should do so using an algorithm that will ensure that it is very unlikely two different images will end up having the same identifier. -OriginalRawFileName, 50827, 0xc68b, Image, Exif.Image.OriginalRawFileName, Byte, If the DNG file was converted from a non-DNG raw file, then this tag contains the file name of that original raw file. -OriginalRawFileData, 50828, 0xc68c, Image, Exif.Image.OriginalRawFileData, Undefined, If the DNG file was converted from a non-DNG raw file, then this tag contains the compressed contents of that original raw file. The contents of this tag always use the big-endian byte order. The tag contains a sequence of data blocks. Future versions of the DNG specification may define additional data blocks, so DNG readers should ignore extra bytes when parsing this tag. DNG readers should also detect the case where data blocks are missing from the end of the sequence, and should assume a default value for all the missing blocks. There are no padding or alignment bytes between data blocks. -ActiveArea, 50829, 0xc68d, Image, Exif.Image.ActiveArea, Short, This rectangle defines the active (non-masked) pixels of the sensor. The order of the rectangle coordinates is: top, left, bottom, right. -MaskedAreas, 50830, 0xc68e, Image, Exif.Image.MaskedAreas, Short, This tag contains a list of non-overlapping rectangle coordinates of fully masked pixels, which can be optionally used by DNG readers to measure the black encoding level. The order of each rectangle's coordinates is: top, left, bottom, right. If the raw image data has already had its black encoding level subtracted, then this tag should not be used, since the masked pixels are no longer useful. -AsShotICCProfile, 50831, 0xc68f, Image, Exif.Image.AsShotICCProfile, Undefined, This tag contains an ICC profile that, in conjunction with the AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to specify a default color rendering from camera color space coordinates (linear reference values) into the ICC profile connection space. The ICC profile connection space is an output referred colorimetric space, whereas the other color calibration tags in DNG specify a conversion into a scene referred colorimetric space. This means that the rendering in this profile should include any desired tone and gamut mapping needed to convert between scene referred values and output referred values. -AsShotPreProfileMatrix, 50832, 0xc690, Image, Exif.Image.AsShotPreProfileMatrix, SRational, This tag is used in conjunction with the AsShotICCProfile tag. It specifies a matrix that should be applied to the camera color space coordinates before processing the values through the ICC profile specified in the AsShotICCProfile tag. The matrix is stored in the row scan order. If ColorPlanes is greater than three, then this matrix can (but is not required to) reduce the dimensionality of the color data down to three components, in which case the AsShotICCProfile should have three rather than ColorPlanes input components. -CurrentICCProfile, 50833, 0xc691, Image, Exif.Image.CurrentICCProfile, Undefined, This tag is used in conjunction with the CurrentPreProfileMatrix tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -CurrentPreProfileMatrix, 50834, 0xc692, Image, Exif.Image.CurrentPreProfileMatrix, SRational, This tag is used in conjunction with the CurrentICCProfile tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -ColorimetricReference, 50879, 0xc6bf, Image, Exif.Image.ColorimetricReference, Short, The DNG color model documents a transform between camera colors and CIE XYZ values. This tag describes the colorimetric reference for the CIE XYZ values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-referred, using the ICC profile perceptual dynamic range. This tag allows output-referred data to be stored in DNG files and still processed correctly by DNG readers. -CameraCalibrationSignature, 50931, 0xc6f3, Image, Exif.Image.CameraCalibrationSignature, Byte, A UTF-8 encoded string associated with the CameraCalibration1 and CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags should only be used in the DNG color transform if the string stored in the CameraCalibrationSignature tag exactly matches the string stored in the ProfileCalibrationSignature tag for the selected camera profile. -ProfileCalibrationSignature, 50932, 0xc6f4, Image, Exif.Image.ProfileCalibrationSignature, Byte, A UTF-8 encoded string associated with the camera profile tags. The CameraCalibration1 and CameraCalibration2 tags should only be used in the DNG color transfer if the string stored in the CameraCalibrationSignature tag exactly matches the string stored in the ProfileCalibrationSignature tag for the selected camera profile. -AsShotProfileName, 50934, 0xc6f6, Image, Exif.Image.AsShotProfileName, Byte, A UTF-8 encoded string containing the name of the "as shot" camera profile, if any. -NoiseReductionApplied, 50935, 0xc6f7, Image, Exif.Image.NoiseReductionApplied, Rational, This tag indicates how much noise reduction has been applied to the raw data on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has been applied. A 1.0 value indicates that the "ideal" amount of noise reduction has been applied, i.e. that the DNG reader should not apply additional noise reduction by default. A value of 0/0 indicates that this parameter is unknown. -ProfileName, 50936, 0xc6f8, Image, Exif.Image.ProfileName, Byte, A UTF-8 encoded string containing the name of the camera profile. This tag is optional if there is only a single camera profile stored in the file but is required for all camera profiles if there is more than one camera profile stored in the file. -ProfileHueSatMapDims, 50937, 0xc6f9, Image, Exif.Image.ProfileHueSatMapDims, Long, This tag specifies the number of input samples in each dimension of the hue/saturation/value mapping tables. The data for these tables are stored in ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case has ValueDivisions equal to 1, so only hue and saturation are used as inputs to the mapping table. -ProfileHueSatMapData1, 50938, 0xc6fa, Image, Exif.Image.ProfileHueSatMapData1, Float, This tag contains the data for the first hue/saturation/value mapping table. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees; the second entry is saturation scale factor; and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -ProfileHueSatMapData2, 50939, 0xc6fb, Image, Exif.Image.ProfileHueSatMapData2, Float, This tag contains the data for the second hue/saturation/value mapping table. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees; the second entry is a saturation scale factor; and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -ProfileToneCurve, 50940, 0xc6fc, Image, Exif.Image.ProfileToneCurve, Float, This tag contains a default tone curve that can be applied while processing the image as a starting point for user adjustments. The curve is specified as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each sample has an input value in the range of 0.0 to 1.0, and an output value in the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and the last sample is required to be (1.0, 1.0). Interpolated the curve using a cubic spline. -ProfileEmbedPolicy, 50941, 0xc6fd, Image, Exif.Image.ProfileEmbedPolicy, Long, This tag contains information about the usage rules for the associated camera profile. -ProfileCopyright, 50942, 0xc6fe, Image, Exif.Image.ProfileCopyright, Byte, A UTF-8 encoded string containing the copyright information for the camera profile. This string always should be preserved along with the other camera profile tags. -ForwardMatrix1, 50964, 0xc714, Image, Exif.Image.ForwardMatrix1, SRational, This tag defines a matrix that maps white balanced camera colors to XYZ D50 colors. -ForwardMatrix2, 50965, 0xc715, Image, Exif.Image.ForwardMatrix2, SRational, This tag defines a matrix that maps white balanced camera colors to XYZ D50 colors. -PreviewApplicationName, 50966, 0xc716, Image, Exif.Image.PreviewApplicationName, Byte, A UTF-8 encoded string containing the name of the application that created the preview stored in the IFD. -PreviewApplicationVersion, 50967, 0xc717, Image, Exif.Image.PreviewApplicationVersion, Byte, A UTF-8 encoded string containing the version number of the application that created the preview stored in the IFD. -PreviewSettingsName, 50968, 0xc718, Image, Exif.Image.PreviewSettingsName, Byte, A UTF-8 encoded string containing the name of the conversion settings (for example, snapshot name) used for the preview stored in the IFD. -PreviewSettingsDigest, 50969, 0xc719, Image, Exif.Image.PreviewSettingsDigest, Byte, A unique ID of the conversion settings (for example, MD5 digest) used to render the preview stored in the IFD. -PreviewColorSpace, 50970, 0xc71a, Image, Exif.Image.PreviewColorSpace, Long, This tag specifies the color space in which the rendered preview in this IFD is stored. The default value for this tag is sRGB for color previews and Gray Gamma 2.2 for monochrome previews. -PreviewDateTime, 50971, 0xc71b, Image, Exif.Image.PreviewDateTime, Ascii, This tag is an ASCII string containing the name of the date/time at which the preview stored in the IFD was rendered. The date/time is encoded using ISO 8601 format. -RawImageDigest, 50972, 0xc71c, Image, Exif.Image.RawImageDigest, Undefined, This tag is an MD5 digest of the raw image data. All pixels in the image are processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep (16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The data for each pixel is processed in little-endian byte order. -OriginalRawFileDigest, 50973, 0xc71d, Image, Exif.Image.OriginalRawFileDigest, Undefined, This tag is an MD5 digest of the data stored in the OriginalRawFileData tag. -SubTileBlockSize, 50974, 0xc71e, Image, Exif.Image.SubTileBlockSize, Long, Normally, the pixels within a tile are stored in simple row-scan order. This tag specifies that the pixels within a tile should be grouped first into rectangular blocks of the specified size. These blocks are stored in row-scan order. Within each block, the pixels are stored in row-scan order. The use of a non-default value for this tag requires setting the DNGBackwardVersion tag to at least 1.2.0.0. -RowInterleaveFactor, 50975, 0xc71f, Image, Exif.Image.RowInterleaveFactor, Long, This tag specifies that rows of the image are stored in interleaved order. The value of the tag specifies the number of interleaved fields. The use of a non-default value for this tag requires setting the DNGBackwardVersion tag to at least 1.2.0.0. -ProfileLookTableDims, 50981, 0xc725, Image, Exif.Image.ProfileLookTableDims, Long, This tag specifies the number of input samples in each dimension of a default "look" table. The data for this table is stored in the ProfileLookTableData tag. -ProfileLookTableData, 50982, 0xc726, Image, Exif.Image.ProfileLookTableData, Float, This tag contains a default "look" table that can be applied while processing the image as a starting point for user adjustment. This table uses the same format as the tables stored in the ProfileHueSatMapData1 and ProfileHueSatMapData2 tags, and is applied in the same color space. However, it should be applied later in the processing pipe, after any exposure compensation and/or fill light stages, but before any tone curve stage. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees, the second entry is a saturation scale factor, and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -OpcodeList1, 51008, 0xc740, Image, Exif.Image.OpcodeList1, Undefined, Specifies the list of opcodes that should be applied to the raw image, as read directly from the file. -OpcodeList2, 51009, 0xc741, Image, Exif.Image.OpcodeList2, Undefined, Specifies the list of opcodes that should be applied to the raw image, just after it has been mapped to linear reference values. -OpcodeList3, 51022, 0xc74e, Image, Exif.Image.OpcodeList3, Undefined, Specifies the list of opcodes that should be applied to the raw image, just after it has been demosaiced. -NoiseProfile, 51041, 0xc761, Image, Exif.Image.NoiseProfile, Double, NoiseProfile describes the amount of noise in a raw image. Specifically, this tag models the amount of signal-dependent photon (shot) noise and signal-independent sensor readout noise, two common sources of noise in raw images. The model assumes that the noise is white and spatially independent, ignoring fixed pattern effects and other sources of noise (e.g., pixel response non-uniformity, spatially-dependent thermal effects, etc.). -ExposureTime, 33434, 0x829a, Photo, Exif.Photo.ExposureTime, Rational, Exposure time, given in seconds (sec). -FNumber, 33437, 0x829d, Photo, Exif.Photo.FNumber, Rational, The F number. -ExposureProgram, 34850, 0x8822, Photo, Exif.Photo.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Photo, Exif.Photo.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. The tag value is an ASCII string compatible with the standard developed by the ASTM Technical Committee. -ISOSpeedRatings, 34855, 0x8827, Photo, Exif.Photo.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Photo, Exif.Photo.OECF, Undefined, Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO 14524. is the relationship between the camera optical input and the image values. -SensitivityType, 34864, 0x8830, Photo, Exif.Photo.SensitivityType, Short, The SensitivityType tag indicates PhotographicSensitivity tag. which one of the parameters of ISO12232 is the Although it is an optional tag, it should be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, or 7 may be used in case that the values of plural parameters are the same. -StandardOutputSensitivity, 34865, 0x8831, Photo, Exif.Photo.StandardOutputSensitivity, Long, This tag indicates the standard output sensitivity value of a camera or input device defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -RecommendedExposureIndex, 34866, 0x8832, Photo, Exif.Photo.RecommendedExposureIndex, Long, This tag indicates the recommended exposure index value of a camera or input device defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -ISOSpeed, 34867, 0x8833, Photo, Exif.Photo.ISOSpeed, Long, This tag indicates the ISO speed value of a camera or input device that is defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -ISOSpeedLatitudeyyy, 34868, 0x8834, Photo, Exif.Photo.ISOSpeedLatitudeyyy, Long, This tag indicates the ISO speed latitude yyy value of a camera or input device that is defined in ISO 12232. However, this tag shall not be recorded without ISOSpeed and ISOSpeedLatitudezzz. -ISOSpeedLatitudezzz, 34869, 0x8835, Photo, Exif.Photo.ISOSpeedLatitudezzz, Long, This tag indicates the ISO speed latitude zzz value of a camera or input device that is defined in ISO 12232. However, this tag shall not be recorded without ISOSpeed and ISOSpeedLatitudeyyy. -ExifVersion, 36864, 0x9000, Photo, Exif.Photo.ExifVersion, Undefined, The version of this standard supported. Nonexistence of this field is taken to mean nonconformance to the standard. -DateTimeOriginal, 36867, 0x9003, Photo, Exif.Photo.DateTimeOriginal, Ascii, The date and time when the original image data was generated. For a digital still camera the date and time the picture was taken are recorded. -DateTimeDigitized, 36868, 0x9004, Photo, Exif.Photo.DateTimeDigitized, Ascii, The date and time when the image was stored as digital data. -ComponentsConfiguration, 37121, 0x9101, Photo, Exif.Photo.ComponentsConfiguration, Undefined, Information specific to compressed data. The channels of each component are arranged in order from the 1st component to the 4th. For uncompressed data the data arrangement is given in the tag. However, since can only express the order of Y, Cb and Cr, this tag is provided for cases when compressed data uses components other than Y, Cb, and Cr and to enable support of other sequences. -CompressedBitsPerPixel, 37122, 0x9102, Photo, Exif.Photo.CompressedBitsPerPixel, Rational, Information specific to compressed data. The compression mode used for a compressed image is indicated in unit bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Photo, Exif.Photo.ShutterSpeedValue, SRational, Shutter speed. The unit is the APEX (Additive System of Photographic Exposure) setting. -ApertureValue, 37378, 0x9202, Photo, Exif.Photo.ApertureValue, Rational, The lens aperture. The unit is the APEX value. -BrightnessValue, 37379, 0x9203, Photo, Exif.Photo.BrightnessValue, SRational, The value of brightness. The unit is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -ExposureBiasValue, 37380, 0x9204, Photo, Exif.Photo.ExposureBiasValue, SRational, The exposure bias. The units is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -MaxApertureValue, 37381, 0x9205, Photo, Exif.Photo.MaxApertureValue, Rational, The smallest F number of the lens. The unit is the APEX value. Ordinarily it is given in the range of 00.00 to 99.99, but it is not limited to this range. -SubjectDistance, 37382, 0x9206, Photo, Exif.Photo.SubjectDistance, Rational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Photo, Exif.Photo.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Photo, Exif.Photo.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Photo, Exif.Photo.Flash, Short, This tag is recorded when an image is taken using a strobe light (flash). -FocalLength, 37386, 0x920a, Photo, Exif.Photo.FocalLength, Rational, The actual focal length of the lens, in mm. Conversion is not made to the focal length of a 35 mm film camera. -SubjectArea, 37396, 0x9214, Photo, Exif.Photo.SubjectArea, Short, This tag indicates the location and area of the main subject in the overall scene. -MakerNote, 37500, 0x927c, Photo, Exif.Photo.MakerNote, Undefined, A tag for manufacturers of Exif writers to record any desired information. The contents are up to the manufacturer. -UserComment, 37510, 0x9286, Photo, Exif.Photo.UserComment, Comment, A tag for Exif users to write keywords or comments on the image besides those in , and without the character code limitations of the tag. -SubSecTime, 37520, 0x9290, Photo, Exif.Photo.SubSecTime, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeOriginal, 37521, 0x9291, Photo, Exif.Photo.SubSecTimeOriginal, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeDigitized, 37522, 0x9292, Photo, Exif.Photo.SubSecTimeDigitized, Ascii, A tag used to record fractions of seconds for the tag. -FlashpixVersion, 40960, 0xa000, Photo, Exif.Photo.FlashpixVersion, Undefined, The FlashPix format version supported by a FPXR file. -ColorSpace, 40961, 0xa001, Photo, Exif.Photo.ColorSpace, Short, The color space information tag is always recorded as the color space specifier. Normally sRGB is used to define the color space based on the PC monitor conditions and environment. If a color space other than sRGB is used, Uncalibrated is set. Image data recorded as Uncalibrated can be treated as sRGB when it is converted to FlashPix. -PixelXDimension, 40962, 0xa002, Photo, Exif.Photo.PixelXDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid width of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. -PixelYDimension, 40963, 0xa003, Photo, Exif.Photo.PixelYDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid height of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. Since data padding is unnecessary in the vertical direction, the number of lines recorded in this valid image height tag will in fact be the same as that recorded in the SOF. -RelatedSoundFile, 40964, 0xa004, Photo, Exif.Photo.RelatedSoundFile, Ascii, This tag is used to record the name of an audio file related to the image data. The only relational information recorded here is the Exif audio file name and extension (an ASCII string consisting of 8 characters + '.' + 3 characters). The path is not recorded. -InteroperabilityTag, 40965, 0xa005, Photo, Exif.Photo.InteroperabilityTag, Long, Interoperability IFD is composed of tags which stores the information to ensure the Interoperability and pointed by the following tag located in Exif IFD. The Interoperability structure of Interoperability IFD is the same as TIFF defined IFD structure but does not contain the image data characteristically compared with normal TIFF IFD. -FlashEnergy, 41483, 0xa20b, Photo, Exif.Photo.FlashEnergy, Rational, Indicates the strobe energy at the time the image is captured, as measured in Beam Candle Power Seconds (BCPS). -SpatialFrequencyResponse, 41484, 0xa20c, Photo, Exif.Photo.SpatialFrequencyResponse, Undefined, This tag records the camera or input device spatial frequency table and SFR values in the direction of image width, image height, and diagonal direction, as specified in ISO 12233. -FocalPlaneXResolution, 41486, 0xa20e, Photo, Exif.Photo.FocalPlaneXResolution, Rational, Indicates the number of pixels in the image width (X) direction per on the camera focal plane. -FocalPlaneYResolution, 41487, 0xa20f, Photo, Exif.Photo.FocalPlaneYResolution, Rational, Indicates the number of pixels in the image height (V) direction per on the camera focal plane. -FocalPlaneResolutionUnit, 41488, 0xa210, Photo, Exif.Photo.FocalPlaneResolutionUnit, Short, Indicates the unit for measuring and . This value is the same as the . -SubjectLocation, 41492, 0xa214, Photo, Exif.Photo.SubjectLocation, Short, Indicates the location of the main subject in the scene. The value of this tag represents the pixel at the center of the main subject relative to the left edge, prior to rotation processing as per the tag. The first value indicates the X column number and second indicates the Y row number. -ExposureIndex, 41493, 0xa215, Photo, Exif.Photo.ExposureIndex, Rational, Indicates the exposure index selected on the camera or input device at the time the image is captured. -SensingMethod, 41495, 0xa217, Photo, Exif.Photo.SensingMethod, Short, Indicates the image sensor type on the camera or input device. -FileSource, 41728, 0xa300, Photo, Exif.Photo.FileSource, Undefined, Indicates the image source. If a DSC recorded the image, this tag value of this tag always be set to 3, indicating that the image was recorded on a DSC. -SceneType, 41729, 0xa301, Photo, Exif.Photo.SceneType, Undefined, Indicates the type of scene. If a DSC recorded the image, this tag value must always be set to 1, indicating that the image was directly photographed. -CFAPattern, 41730, 0xa302, Photo, Exif.Photo.CFAPattern, Undefined, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods. -CustomRendered, 41985, 0xa401, Photo, Exif.Photo.CustomRendered, Short, This tag indicates the use of special processing on image data, such as rendering geared to output. When special processing is performed, the reader is expected to disable or minimize any further processing. -ExposureMode, 41986, 0xa402, Photo, Exif.Photo.ExposureMode, Short, This tag indicates the exposure mode set when the image was shot. In auto-bracketing mode, the camera shoots a series of frames of the same scene at different exposure settings. -WhiteBalance, 41987, 0xa403, Photo, Exif.Photo.WhiteBalance, Short, This tag indicates the white balance mode set when the image was shot. -DigitalZoomRatio, 41988, 0xa404, Photo, Exif.Photo.DigitalZoomRatio, Rational, This tag indicates the digital zoom ratio when the image was shot. If the numerator of the recorded value is 0, this indicates that digital zoom was not used. -FocalLengthIn35mmFilm, 41989, 0xa405, Photo, Exif.Photo.FocalLengthIn35mmFilm, Short, This tag indicates the equivalent focal length assuming a 35mm film camera, in mm. A value of 0 means the focal length is unknown. Note that this tag differs from the tag. -SceneCaptureType, 41990, 0xa406, Photo, Exif.Photo.SceneCaptureType, Short, This tag indicates the type of scene that was shot. It can also be used to record the mode in which the image was shot. Note that this differs from the tag. -GainControl, 41991, 0xa407, Photo, Exif.Photo.GainControl, Short, This tag indicates the degree of overall image gain adjustment. -Contrast, 41992, 0xa408, Photo, Exif.Photo.Contrast, Short, This tag indicates the direction of contrast processing applied by the camera when the image was shot. -Saturation, 41993, 0xa409, Photo, Exif.Photo.Saturation, Short, This tag indicates the direction of saturation processing applied by the camera when the image was shot. -Sharpness, 41994, 0xa40a, Photo, Exif.Photo.Sharpness, Short, This tag indicates the direction of sharpness processing applied by the camera when the image was shot. -DeviceSettingDescription, 41995, 0xa40b, Photo, Exif.Photo.DeviceSettingDescription, Undefined, This tag indicates information on the picture-taking conditions of a particular camera model. The tag is used only to indicate the picture-taking conditions in the reader. -SubjectDistanceRange, 41996, 0xa40c, Photo, Exif.Photo.SubjectDistanceRange, Short, This tag indicates the distance to the subject. -ImageUniqueID, 42016, 0xa420, Photo, Exif.Photo.ImageUniqueID, Ascii, This tag indicates an identifier assigned uniquely to each image. It is recorded as an ASCII string equivalent to hexadecimal notation and 128-bit fixed length. -CameraOwnerName, 42032, 0xa430, Photo, Exif.Photo.CameraOwnerName, Ascii, This tag records the owner of a camera used in photography as an ASCII string. -BodySerialNumber, 42033, 0xa431, Photo, Exif.Photo.BodySerialNumber, Ascii, This tag records the serial number of the body of the camera that was used in photography as an ASCII string. -LensSpecification, 42034, 0xa432, Photo, Exif.Photo.LensSpecification, Rational, This tag notes minimum focal length, maximum focal length, minimum F number in the minimum focal length, and minimum F number in the maximum focal length, which are specification information for the lens that was used in photography. When the minimum F number is unknown, the notation is 0/0 -LensMake, 42035, 0xa433, Photo, Exif.Photo.LensMake, Ascii, This tag records the lens manufactor as an ASCII string. -LensModel, 42036, 0xa434, Photo, Exif.Photo.LensModel, Ascii, This tag records the lens's model name and model number as an ASCII string. -LensSerialNumber, 42037, 0xa435, Photo, Exif.Photo.LensSerialNumber, Ascii, This tag records the serial number of the interchangeable lens that was used in photography as an ASCII string. -InteroperabilityIndex, 1, 0x0001, Iop, Exif.Iop.InteroperabilityIndex, Ascii, Indicates the identification of the Interoperability rule. Use "R98" for stating ExifR98 Rules. Four bytes used including the termination code (NULL). see the separate volume of Recommended Exif Interoperability Rules (ExifR98) for other tags used for ExifR98. -InteroperabilityVersion, 2, 0x0002, Iop, Exif.Iop.InteroperabilityVersion, Undefined, Interoperability version -RelatedImageFileFormat, 4096, 0x1000, Iop, Exif.Iop.RelatedImageFileFormat, Ascii, File format of image file -RelatedImageWidth, 4097, 0x1001, Iop, Exif.Iop.RelatedImageWidth, Long, Image width -RelatedImageLength, 4098, 0x1002, Iop, Exif.Iop.RelatedImageLength, Long, Image height -GPSVersionID, 0, 0x0000, GPSInfo, Exif.GPSInfo.GPSVersionID, Byte, Indicates the version of . The version is given as 2.0.0.0. This tag is mandatory when tag is present. (Note: The tag is given in bytes, unlike the tag. When the version is 2.0.0.0, the tag value is 02000000.H). -GPSLatitudeRef, 1, 0x0001, GPSInfo, Exif.GPSInfo.GPSLatitudeRef, Ascii, Indicates whether the latitude is north or south latitude. The ASCII value 'N' indicates north latitude, and 'S' is south latitude. -GPSLatitude, 2, 0x0002, GPSInfo, Exif.GPSInfo.GPSLatitude, Rational, Indicates the latitude. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is dd/1,mmmm/100,0/1. -GPSLongitudeRef, 3, 0x0003, GPSInfo, Exif.GPSInfo.GPSLongitudeRef, Ascii, Indicates whether the longitude is east or west longitude. ASCII 'E' indicates east longitude, and 'W' is west longitude. -GPSLongitude, 4, 0x0004, GPSInfo, Exif.GPSInfo.GPSLongitude, Rational, Indicates the longitude. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is ddd/1,mmmm/100,0/1. -GPSAltitudeRef, 5, 0x0005, GPSInfo, Exif.GPSInfo.GPSAltitudeRef, Byte, Indicates the altitude used as the reference altitude. If the reference is sea level and the altitude is above sea level, 0 is given. If the altitude is below sea level, a value of 1 is given and the altitude is indicated as an absolute value in the GSPAltitude tag. The reference unit is meters. Note that this tag is BYTE type, unlike other reference tags. -GPSAltitude, 6, 0x0006, GPSInfo, Exif.GPSInfo.GPSAltitude, Rational, Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is expressed as one RATIONAL value. The reference unit is meters. -GPSTimeStamp, 7, 0x0007, GPSInfo, Exif.GPSInfo.GPSTimeStamp, Rational, Indicates the time as UTC (Coordinated Universal Time). is expressed as three RATIONAL values giving the hour, minute, and second (atomic clock). -GPSSatellites, 8, 0x0008, GPSInfo, Exif.GPSInfo.GPSSatellites, Ascii, Indicates the GPS satellites used for measurements. This tag can be used to describe the number of satellites, their ID number, angle of elevation, azimuth, SNR and other information in ASCII notation. The format is not specified. If the GPS receiver is incapable of taking measurements, value of the tag is set to NULL. -GPSStatus, 9, 0x0009, GPSInfo, Exif.GPSInfo.GPSStatus, Ascii, Indicates the status of the GPS receiver when the image is recorded. "A" means measurement is in progress, and "V" means the measurement is Interoperability. -GPSMeasureMode, 10, 0x000a, GPSInfo, Exif.GPSInfo.GPSMeasureMode, Ascii, Indicates the GPS measurement mode. "2" means two-dimensional measurement and "3" means three-dimensional measurement is in progress. -GPSDOP, 11, 0x000b, GPSInfo, Exif.GPSInfo.GPSDOP, Rational, Indicates the GPS DOP (data degree of precision). An HDOP value is written during two-dimensional measurement, and PDOP during three-dimensional measurement. -GPSSpeedRef, 12, 0x000c, GPSInfo, Exif.GPSInfo.GPSSpeedRef, Ascii, Indicates the unit used to express the GPS receiver speed of movement. "K" "M" and "N" represents kilometers per hour, miles per hour, and knots. -GPSSpeed, 13, 0x000d, GPSInfo, Exif.GPSInfo.GPSSpeed, Rational, Indicates the speed of GPS receiver movement. -GPSTrackRef, 14, 0x000e, GPSInfo, Exif.GPSInfo.GPSTrackRef, Ascii, Indicates the reference for giving the direction of GPS receiver movement. "T" denotes true direction and "M" is magnetic direction. -GPSTrack, 15, 0x000f, GPSInfo, Exif.GPSInfo.GPSTrack, Rational, Indicates the direction of GPS receiver movement. The range of values is from 0.00 to 359.99. -GPSImgDirectionRef, 16, 0x0010, GPSInfo, Exif.GPSInfo.GPSImgDirectionRef, Ascii, Indicates the reference for giving the direction of the image when it is captured. "T" denotes true direction and "M" is magnetic direction. -GPSImgDirection, 17, 0x0011, GPSInfo, Exif.GPSInfo.GPSImgDirection, Rational, Indicates the direction of the image when it was captured. The range of values is from 0.00 to 359.99. -GPSMapDatum, 18, 0x0012, GPSInfo, Exif.GPSInfo.GPSMapDatum, Ascii, Indicates the geodetic survey data used by the GPS receiver. If the survey data is restricted to Japan, the value of this tag is "TOKYO" or "WGS-84". -GPSDestLatitudeRef, 19, 0x0013, GPSInfo, Exif.GPSInfo.GPSDestLatitudeRef, Ascii, Indicates whether the latitude of the destination point is north or south latitude. The ASCII value "N" indicates north latitude, and "S" is south latitude. -GPSDestLatitude, 20, 0x0014, GPSInfo, Exif.GPSInfo.GPSDestLatitude, Rational, Indicates the latitude of the destination point. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If latitude is expressed as degrees, minutes and seconds, a typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be dd/1,mmmm/100,0/1. -GPSDestLongitudeRef, 21, 0x0015, GPSInfo, Exif.GPSInfo.GPSDestLongitudeRef, Ascii, Indicates whether the longitude of the destination point is east or west longitude. ASCII "E" indicates east longitude, and "W" is west longitude. -GPSDestLongitude, 22, 0x0016, GPSInfo, Exif.GPSInfo.GPSDestLongitude, Rational, Indicates the longitude of the destination point. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If longitude is expressed as degrees, minutes and seconds, a typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be ddd/1,mmmm/100,0/1. -GPSDestBearingRef, 23, 0x0017, GPSInfo, Exif.GPSInfo.GPSDestBearingRef, Ascii, Indicates the reference used for giving the bearing to the destination point. "T" denotes true direction and "M" is magnetic direction. -GPSDestBearing, 24, 0x0018, GPSInfo, Exif.GPSInfo.GPSDestBearing, Rational, Indicates the bearing to the destination point. The range of values is from 0.00 to 359.99. -GPSDestDistanceRef, 25, 0x0019, GPSInfo, Exif.GPSInfo.GPSDestDistanceRef, Ascii, Indicates the unit used to express the distance to the destination point. "K", "M" and "N" represent kilometers, miles and knots. -GPSDestDistance, 26, 0x001a, GPSInfo, Exif.GPSInfo.GPSDestDistance, Rational, Indicates the distance to the destination point. -GPSProcessingMethod, 27, 0x001b, GPSInfo, Exif.GPSInfo.GPSProcessingMethod, Undefined, A character string recording the name of the method used for location finding. The first byte indicates the character code used, and this is followed by the name of the method. -GPSAreaInformation, 28, 0x001c, GPSInfo, Exif.GPSInfo.GPSAreaInformation, Undefined, A character string recording the name of the GPS area. The first byte indicates the character code used, and this is followed by the name of the GPS area. -GPSDateStamp, 29, 0x001d, GPSInfo, Exif.GPSInfo.GPSDateStamp, Ascii, A character string recording date and time information relative to UTC (Coordinated Universal Time). The format is "YYYY:MM:DD.". -GPSDifferential, 30, 0x001e, GPSInfo, Exif.GPSInfo.GPSDifferential, Short, Indicates whether differential correction is applied to the GPS receiver. -Usage: bin\Release\tiff-test.exe file - /usr/lib /usr lib - /usr/ / usr - usr . usr - / / - . . . - .. . .. - /// / - /usr/.emacs /usr .emacs - /usr/.emacs/ /usr .emacs - /usr/.emacs// /usr .emacs - usr/.emacs usr .emacs - .emacs . .emacs - .emacs.gz . .emacs.gz .gz - /tmp/image.jpg /tmp image.jpg .jpg -/tmp/.image.jpg /tmp .image.jpg .jpg - /image.jpg / image.jpg .jpg - image.jpg . image.jpg .jpg - image.jpg// . image.jpg .jpg - /////image.jpg / image.jpg .jpg - /foo.bar/image /foo.bar image -/foo.bar/images.tar.gz /foo.bar images.tar.gz .gz -d:\foo.bar\images.tar.gz d:\foo.bar images.tar.gz .gz -Usage: write-test file case - -where case is an integer between 1 and 11 -Usage: bin\Release\write2-test.exe file -Usage: bin\Release\xmpparse.exe file -Usage: bin\Release\xmpparser-test.exe file -Xmp.dc.source XmpText 13 xmpsample.cpp -Xmp.dc.subject XmpBag 2 Palmtree, Rubbertree -Xmp.dc.title LangAlt 2 lang="de-DE" Sonnenuntergang am Strand, lang="en-US" Sunset on the beach -Xmp.dc.one XmpText 2 -1 -Xmp.dc.two XmpText 6 3.1415 -Xmp.dc.three XmpText 3 5/7 -Xmp.dc.four XmpText 3 255 -Xmp.dc.five XmpText 3 256 -Xmp.dc.six XmpText 5 False -Xmp.dc.seven XmpText 5 Seven -Xmp.dc.format XmpText 10 image/jpeg -Xmp.dc.creator XmpSeq 3 1) The first creator, 2) The second creator, 3) And another one -Xmp.dc.description LangAlt 2 lang="x-default" Hello, World, lang="de-DE" Hallo, Welt -Xmp.tiff.ImageDescription LangAlt 2 lang="x-default" TIFF image description, lang="de-DE" TIFF Bildbeschreibung -Xmp.ns.myProperty XmpText 7 myValue -Xmp.xmpDM.videoFrameSize/stDim:w XmpText 2 16 -Xmp.xmpDM.videoFrameSize/stDim:h XmpText 1 9 -Xmp.xmpDM.videoFrameSize/stDim:unit XmpText 4 inch -Xmp.dc.publisher XmpBag 1 James Bond -Xmp.dc.publisher[1]/?ns:role XmpText 12 secret agent -Xmp.dc.creator[2]/?ns:role XmpText 10 programmer -Xmp.xmpBJ.JobRef XmpText 0 type="Bag" -Xmp.xmpBJ.JobRef[1]/stJob:name XmpText 14 Birthday party -Xmp.xmpBJ.JobRef[1]/stJob:role XmpText 12 Photographer -Xmp.xmpBJ.JobRef[2]/stJob:name XmpText 16 Wedding ceremony -Xmp.xmpBJ.JobRef[2]/stJob:role XmpText 8 Best man -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCity XmpText 12 Kuala Lumpur -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCtry XmpText 8 Malaysia -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiUrlWork XmpText 20 http://www.exiv2.org - - - - - - - Palmtree - Rubbertree - - - - - Sonnenuntergang am Strand - Sunset on the beach - - - - - 1) The first creator - - 2) The second creator - programmer - - 3) And another one - - - - - Hello, World - Hallo, Welt - - - - - - James Bond - secret agent - - - - - - TIFF image description - TIFF Bildbeschreibung - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Usage: bin\ReleaseDLL\addmoddel.exe file -Usage: bin\ReleaseDLL\convert-test.exe file -Usage: bin\ReleaseDLL\exifcomment.exe file -Usage: bin\ReleaseDLL\exifdata-test.exe file -Usage: bin\ReleaseDLL\exifprint.exe file -Usage: exiv2.exe [ options ] [ action ] file ... - -Manipulate the Exif metadata of images. -Usage: bin\ReleaseDLL\iotest.exe filein fileout1 fileout2 -fileouts are overwritten and should match filein exactly -Usage: bin\ReleaseDLL\iptceasy.exe file -Usage: bin\ReleaseDLL\iptcprint.exe file -Usage: bin\ReleaseDLL\iptctest.exe image -Commands read from stdin. -Usage: bin\ReleaseDLL\largeiptc-test.exe image datafile - -Reads and writes raw metadata. Use -h option for help. -Usage: metacopy.exe [-iecaph] readfile writefile -Usage: bin\ReleaseDLL\mmap-test.exe file -Usage: bin\ReleaseDLL\prevtest.exe file -string long float Rational -True 1 1 1/1 -False 0 0 0/1 -t 1 1 1/1 -f 0 0 0/1 --1 -1 -1 -1/1 -0 0 0 0/1 -1 1 1 1/1 -0.0 0 0 0/1 -0.1 0 0.1 1/10 -0.01 0 0.01 1/100 -0.001 0 0.001 1/1000 --1.49999 -1 -1.49999 -149999/100000 --1.5 -1 -1.5 -3/2 -1.49999 1 1.49999 149999/100000 -1.5 1 1.5 3/2 -0/1 0 0 0/1 -1/1 1 1 1/1 -1/3 0 0.333333 1/3 --1/3 0 -0.333333 -1/3 -4/3 1 1.33333 4/3 --4/3 -1 -1.33333 -4/3 -0/0 nok nok 0/0 -text nok nok nok -ProcessingSoftware, 11, 0x000b, Image, Exif.Image.ProcessingSoftware, Ascii, The name and version of the software used to post-process the picture. -NewSubfileType, 254, 0x00fe, Image, Exif.Image.NewSubfileType, Long, A general indication of the kind of data contained in this subfile. -SubfileType, 255, 0x00ff, Image, Exif.Image.SubfileType, Short, A general indication of the kind of data contained in this subfile. This field is deprecated. The NewSubfileType field should be used instead. -ImageWidth, 256, 0x0100, Image, Exif.Image.ImageWidth, Long, The number of columns of image data, equal to the number of pixels per row. In JPEG compressed data a JPEG marker is used instead of this tag. -ImageLength, 257, 0x0101, Image, Exif.Image.ImageLength, Long, The number of rows of image data. In JPEG compressed data a JPEG marker is used instead of this tag. -BitsPerSample, 258, 0x0102, Image, Exif.Image.BitsPerSample, Short, The number of bits per image component. In this standard each component of the image is 8 bits, so the value for this tag is 8. See also . In JPEG compressed data a JPEG marker is used instead of this tag. -Compression, 259, 0x0103, Image, Exif.Image.Compression, Short, The compression scheme used for the image data. When a primary image is JPEG compressed, this designation is not necessary and is omitted. When thumbnails use JPEG compression, this tag value is set to 6. -PhotometricInterpretation, 262, 0x0106, Image, Exif.Image.PhotometricInterpretation, Short, The pixel composition. In JPEG compressed data a JPEG marker is used instead of this tag. -Threshholding, 263, 0x0107, Image, Exif.Image.Threshholding, Short, For black and white TIFF files that represent shades of gray, the technique used to convert from gray to black and white pixels. -CellWidth, 264, 0x0108, Image, Exif.Image.CellWidth, Short, The width of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -CellLength, 265, 0x0109, Image, Exif.Image.CellLength, Short, The length of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -FillOrder, 266, 0x010a, Image, Exif.Image.FillOrder, Short, The logical order of bits within a byte -DocumentName, 269, 0x010d, Image, Exif.Image.DocumentName, Ascii, The name of the document from which this image was scanned -ImageDescription, 270, 0x010e, Image, Exif.Image.ImageDescription, Ascii, A character string giving the title of the image. It may be a comment such as "1988 company picnic" or the like. Two-bytes character codes cannot be used. When a 2-bytes code is necessary, the Exif Private tag is to be used. -Make, 271, 0x010f, Image, Exif.Image.Make, Ascii, The manufacturer of the recording equipment. This is the manufacturer of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -Model, 272, 0x0110, Image, Exif.Image.Model, Ascii, The model name or model number of the equipment. This is the model name or number of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -StripOffsets, 273, 0x0111, Image, Exif.Image.StripOffsets, Long, For each strip, the byte offset of that strip. It is recommended that this be selected so the number of strip bytes does not exceed 64 Kbytes. With JPEG compressed data this designation is not needed and is omitted. See also and . -Orientation, 274, 0x0112, Image, Exif.Image.Orientation, Short, The image orientation viewed in terms of rows and columns. -SamplesPerPixel, 277, 0x0115, Image, Exif.Image.SamplesPerPixel, Short, The number of components per pixel. Since this standard applies to RGB and YCbCr images, the value set for this tag is 3. In JPEG compressed data a JPEG marker is used instead of this tag. -RowsPerStrip, 278, 0x0116, Image, Exif.Image.RowsPerStrip, Long, The number of rows per strip. This is the number of rows in the image of one strip when an image is divided into strips. With JPEG compressed data this designation is not needed and is omitted. See also and . -StripByteCounts, 279, 0x0117, Image, Exif.Image.StripByteCounts, Long, The total number of bytes in each strip. With JPEG compressed data this designation is not needed and is omitted. -XResolution, 282, 0x011a, Image, Exif.Image.XResolution, Rational, The number of pixels per in the direction. When the image resolution is unknown, 72 [dpi] is designated. -YResolution, 283, 0x011b, Image, Exif.Image.YResolution, Rational, The number of pixels per in the direction. The same value as is designated. -PlanarConfiguration, 284, 0x011c, Image, Exif.Image.PlanarConfiguration, Short, Indicates whether pixel components are recorded in a chunky or planar format. In JPEG compressed files a JPEG marker is used instead of this tag. If this field does not exist, the TIFF default of 1 (chunky) is assumed. -GrayResponseUnit, 290, 0x0122, Image, Exif.Image.GrayResponseUnit, Short, The precision of the information contained in the GrayResponseCurve. -GrayResponseCurve, 291, 0x0123, Image, Exif.Image.GrayResponseCurve, Short, For grayscale data, the optical density of each possible pixel value. -T4Options, 292, 0x0124, Image, Exif.Image.T4Options, Long, T.4-encoding options. -T6Options, 293, 0x0125, Image, Exif.Image.T6Options, Long, T.6-encoding options. -ResolutionUnit, 296, 0x0128, Image, Exif.Image.ResolutionUnit, Short, The unit for measuring and . The same unit is used for both and . If the image resolution is unknown, 2 (inches) is designated. -TransferFunction, 301, 0x012d, Image, Exif.Image.TransferFunction, Short, A transfer function for the image, described in tabular style. Normally this tag is not necessary, since color space is specified in the color space information tag (). -Software, 305, 0x0131, Image, Exif.Image.Software, Ascii, This tag records the name and version of the software or firmware of the camera or image input device used to generate the image. The detailed format is not specified, but it is recommended that the example shown below be followed. When the field is left blank, it is treated as unknown. -DateTime, 306, 0x0132, Image, Exif.Image.DateTime, Ascii, The date and time of image creation. In Exif standard, it is the date and time the file was changed. -Artist, 315, 0x013b, Image, Exif.Image.Artist, Ascii, This tag records the name of the camera owner, photographer or image creator. The detailed format is not specified, but it is recommended that the information be written as in the example below for ease of Interoperability. When the field is left blank, it is treated as unknown. Ex.) "Camera owner, John Smith; Photographer, Michael Brown; Image creator, Ken James" -HostComputer, 316, 0x013c, Image, Exif.Image.HostComputer, Ascii, This tag records information about the host computer used to generate the image. -Predictor, 317, 0x013d, Image, Exif.Image.Predictor, Short, A predictor is a mathematical operator that is applied to the image data before an encoding scheme is applied. -WhitePoint, 318, 0x013e, Image, Exif.Image.WhitePoint, Rational, The chromaticity of the white point of the image. Normally this tag is not necessary, since color space is specified in the colorspace information tag (). -PrimaryChromaticities, 319, 0x013f, Image, Exif.Image.PrimaryChromaticities, Rational, The chromaticity of the three primary colors of the image. Normally this tag is not necessary, since colorspace is specified in the colorspace information tag (). -ColorMap, 320, 0x0140, Image, Exif.Image.ColorMap, Short, A color map for palette color images. This field defines a Red-Green-Blue color map (often called a lookup table) for palette-color images. In a palette-color image, a pixel value is used to index into an RGB lookup table. -HalftoneHints, 321, 0x0141, Image, Exif.Image.HalftoneHints, Short, The purpose of the HalftoneHints field is to convey to the halftone function the range of gray levels within a colorimetrically-specified image that should retain tonal detail. -TileWidth, 322, 0x0142, Image, Exif.Image.TileWidth, Short, The tile width in pixels. This is the number of columns in each tile. -TileLength, 323, 0x0143, Image, Exif.Image.TileLength, Short, The tile length (height) in pixels. This is the number of rows in each tile. -TileOffsets, 324, 0x0144, Image, Exif.Image.TileOffsets, Short, For each tile, the byte offset of that tile, as compressed and stored on disk. The offset is specified with respect to the beginning of the TIFF file. Note that this implies that each tile has a location independent of the locations of other tiles. -TileByteCounts, 325, 0x0145, Image, Exif.Image.TileByteCounts, Short, For each tile, the number of (compressed) bytes in that tile. See TileOffsets for a description of how the byte counts are ordered. -SubIFDs, 330, 0x014a, Image, Exif.Image.SubIFDs, Long, Defined by Adobe Corporation to enable TIFF Trees within a TIFF file. -InkSet, 332, 0x014c, Image, Exif.Image.InkSet, Short, The set of inks used in a separated (PhotometricInterpretation=5) image. -InkNames, 333, 0x014d, Image, Exif.Image.InkNames, Ascii, The name of each ink used in a separated (PhotometricInterpretation=5) image. -NumberOfInks, 334, 0x014e, Image, Exif.Image.NumberOfInks, Short, The number of inks. Usually equal to SamplesPerPixel, unless there are extra samples. -DotRange, 336, 0x0150, Image, Exif.Image.DotRange, Byte, The component values that correspond to a 0% dot and 100% dot. -TargetPrinter, 337, 0x0151, Image, Exif.Image.TargetPrinter, Ascii, A description of the printing environment for which this separation is intended. -ExtraSamples, 338, 0x0152, Image, Exif.Image.ExtraSamples, Short, Specifies that each pixel has m extra components whose interpretation is defined by one of the values listed below. -SampleFormat, 339, 0x0153, Image, Exif.Image.SampleFormat, Short, This field specifies how to interpret each data sample in a pixel. -SMinSampleValue, 340, 0x0154, Image, Exif.Image.SMinSampleValue, Short, This field specifies the minimum sample value. -SMaxSampleValue, 341, 0x0155, Image, Exif.Image.SMaxSampleValue, Short, This field specifies the maximum sample value. -TransferRange, 342, 0x0156, Image, Exif.Image.TransferRange, Short, Expands the range of the TransferFunction -ClipPath, 343, 0x0157, Image, Exif.Image.ClipPath, Byte, A TIFF ClipPath is intended to mirror the essentials of PostScript's path creation functionality. -XClipPathUnits, 344, 0x0158, Image, Exif.Image.XClipPathUnits, SShort, The number of units that span the width of the image, in terms of integer ClipPath coordinates. -YClipPathUnits, 345, 0x0159, Image, Exif.Image.YClipPathUnits, SShort, The number of units that span the height of the image, in terms of integer ClipPath coordinates. -Indexed, 346, 0x015a, Image, Exif.Image.Indexed, Short, Indexed images are images where the 'pixels' do not represent color values, but rather an index (usually 8-bit) into a separate color table, the ColorMap. -JPEGTables, 347, 0x015b, Image, Exif.Image.JPEGTables, Undefined, This optional tag may be used to encode the JPEG quantization andHuffman tables for subsequent use by the JPEG decompression process. -OPIProxy, 351, 0x015f, Image, Exif.Image.OPIProxy, Short, OPIProxy gives information concerning whether this image is a low-resolution proxy of a high-resolution image (Adobe OPI). -JPEGProc, 512, 0x0200, Image, Exif.Image.JPEGProc, Long, This field indicates the process used to produce the compressed data -JPEGInterchangeFormat, 513, 0x0201, Image, Exif.Image.JPEGInterchangeFormat, Long, The offset to the start byte (SOI) of JPEG compressed thumbnail data. This is not used for primary image JPEG data. -JPEGInterchangeFormatLength, 514, 0x0202, Image, Exif.Image.JPEGInterchangeFormatLength, Long, The number of bytes of JPEG compressed thumbnail data. This is not used for primary image JPEG data. JPEG thumbnails are not divided but are recorded as a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not be recorded. Compressed thumbnails must be recorded in no more than 64 Kbytes, including all other data to be recorded in APP1. -JPEGRestartInterval, 515, 0x0203, Image, Exif.Image.JPEGRestartInterval, Short, This Field indicates the length of the restart interval used in the compressed image data. -JPEGLosslessPredictors, 517, 0x0205, Image, Exif.Image.JPEGLosslessPredictors, Short, This Field points to a list of lossless predictor-selection values, one per component. -JPEGPointTransforms, 518, 0x0206, Image, Exif.Image.JPEGPointTransforms, Short, This Field points to a list of point transform values, one per component. -JPEGQTables, 519, 0x0207, Image, Exif.Image.JPEGQTables, Long, This Field points to a list of offsets to the quantization tables, one per component. -JPEGDCTables, 520, 0x0208, Image, Exif.Image.JPEGDCTables, Long, This Field points to a list of offsets to the DC Huffman tables or the lossless Huffman tables, one per component. -JPEGACTables, 521, 0x0209, Image, Exif.Image.JPEGACTables, Long, This Field points to a list of offsets to the Huffman AC tables, one per component. -YCbCrCoefficients, 529, 0x0211, Image, Exif.Image.YCbCrCoefficients, Rational, The matrix coefficients for transformation from RGB to YCbCr image data. No default is given in TIFF; but here the value given in Appendix E, "Color Space Guidelines", is used as the default. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability this condition. -YCbCrSubSampling, 530, 0x0212, Image, Exif.Image.YCbCrSubSampling, Short, The sampling ratio of chrominance components in relation to the luminance component. In JPEG compressed data a JPEG marker is used instead of this tag. -YCbCrPositioning, 531, 0x0213, Image, Exif.Image.YCbCrPositioning, Short, The position of chrominance components in relation to the luminance component. This field is designated only for JPEG compressed data or uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr = 4:2:2 it is recommended in this standard that 2 (co-sited) be used to record data, in order to improve the image quality when viewed on TV systems. When this field does not exist, the reader shall assume the TIFF default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is recommended. If the reader does not have the capability of supporting both kinds of , it shall follow the TIFF default regardless of the value in this field. It is preferable that readers be able to support both centered and co-sited positioning. -ReferenceBlackWhite, 532, 0x0214, Image, Exif.Image.ReferenceBlackWhite, Rational, The reference black point value and reference white point value. No defaults are given in TIFF, but the values below are given as defaults here. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability these conditions. -XMLPacket, 700, 0x02bc, Image, Exif.Image.XMLPacket, Byte, XMP Metadata (Adobe technote 9-14-02) -Rating, 18246, 0x4746, Image, Exif.Image.Rating, Short, Rating tag used by Windows -RatingPercent, 18249, 0x4749, Image, Exif.Image.RatingPercent, Short, Rating tag used by Windows, value in percent -ImageID, 32781, 0x800d, Image, Exif.Image.ImageID, Ascii, ImageID is the full pathname of the original, high-resolution image, or any other identifying string that uniquely identifies the original image (Adobe OPI). -CFARepeatPatternDim, 33421, 0x828d, Image, Exif.Image.CFARepeatPatternDim, Short, Contains two values representing the minimum rows and columns to define the repeating patterns of the color filter array -CFAPattern, 33422, 0x828e, Image, Exif.Image.CFAPattern, Byte, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods -BatteryLevel, 33423, 0x828f, Image, Exif.Image.BatteryLevel, Rational, Contains a value of the battery level as a fraction or string -Copyright, 33432, 0x8298, Image, Exif.Image.Copyright, Ascii, Copyright information. In this standard the tag is used to indicate both the photographer and editor copyrights. It is the copyright notice of the person or organization claiming rights to the image. The Interoperability copyright statement including date and rights should be written in this field; e.g., "Copyright, John Smith, 19xx. All rights reserved.". In this standard the field records both the photographer and editor copyrights, with each recorded in a separate part of the statement. When there is a clear distinction between the photographer and editor copyrights, these are to be written in the order of photographer followed by editor copyright, separated by NULL (in this case since the statement also ends with a NULL, there are two NULL codes). When only the photographer copyright is given, it is terminated by one NULL code . When only the editor copyright is given, the photographer copyright part consists of one space followed by a terminating NULL code, then the editor copyright is given. When the field is left blank, it is treated as unknown. -ExposureTime, 33434, 0x829a, Image, Exif.Image.ExposureTime, Rational, Exposure time, given in seconds. -FNumber, 33437, 0x829d, Image, Exif.Image.FNumber, Rational, The F number. -IPTCNAA, 33723, 0x83bb, Image, Exif.Image.IPTCNAA, Long, Contains an IPTC/NAA record -ImageResources, 34377, 0x8649, Image, Exif.Image.ImageResources, Byte, Contains information embedded by the Adobe Photoshop application -ExifTag, 34665, 0x8769, Image, Exif.Image.ExifTag, Long, A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure as that of the IFD specified in TIFF. ordinarily, however, it does not contain image data as in the case of TIFF. -InterColorProfile, 34675, 0x8773, Image, Exif.Image.InterColorProfile, Undefined, Contains an InterColor Consortium (ICC) format color space characterization/profile -ExposureProgram, 34850, 0x8822, Image, Exif.Image.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Image, Exif.Image.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. -GPSTag, 34853, 0x8825, Image, Exif.Image.GPSTag, Long, A pointer to the GPS Info IFD. The Interoperability structure of the GPS Info IFD, like that of Exif IFD, has no image data. -ISOSpeedRatings, 34855, 0x8827, Image, Exif.Image.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Image, Exif.Image.OECF, Undefined, Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524. -Interlace, 34857, 0x8829, Image, Exif.Image.Interlace, Short, Indicates the field number of multifield images. -TimeZoneOffset, 34858, 0x882a, Image, Exif.Image.TimeZoneOffset, SShort, This optional tag encodes the time zone of the camera clock (relativeto Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the picture was taken. It may also contain the time zone offsetof the clock used to create the DateTime tag-value when the image wasmodified. -SelfTimerMode, 34859, 0x882b, Image, Exif.Image.SelfTimerMode, Short, Number of seconds image capture was delayed from button press. -DateTimeOriginal, 36867, 0x9003, Image, Exif.Image.DateTimeOriginal, Ascii, The date and time when the original image data was generated. -CompressedBitsPerPixel, 37122, 0x9102, Image, Exif.Image.CompressedBitsPerPixel, Rational, Specific to compressed data; states the compressed bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Image, Exif.Image.ShutterSpeedValue, SRational, Shutter speed. -ApertureValue, 37378, 0x9202, Image, Exif.Image.ApertureValue, Rational, The lens aperture. -BrightnessValue, 37379, 0x9203, Image, Exif.Image.BrightnessValue, SRational, The value of brightness. -ExposureBiasValue, 37380, 0x9204, Image, Exif.Image.ExposureBiasValue, SRational, The exposure bias. -MaxApertureValue, 37381, 0x9205, Image, Exif.Image.MaxApertureValue, Rational, The smallest F number of the lens. -SubjectDistance, 37382, 0x9206, Image, Exif.Image.SubjectDistance, SRational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Image, Exif.Image.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Image, Exif.Image.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Image, Exif.Image.Flash, Short, Indicates the status of flash when the image was shot. -FocalLength, 37386, 0x920a, Image, Exif.Image.FocalLength, Rational, The actual focal length of the lens, in mm. -FlashEnergy, 37387, 0x920b, Image, Exif.Image.FlashEnergy, Rational, Amount of flash energy (BCPS). -SpatialFrequencyResponse, 37388, 0x920c, Image, Exif.Image.SpatialFrequencyResponse, Undefined, SFR of the camera. -Noise, 37389, 0x920d, Image, Exif.Image.Noise, Undefined, Noise measurement values. -FocalPlaneXResolution, 37390, 0x920e, Image, Exif.Image.FocalPlaneXResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth direction for main image. -FocalPlaneYResolution, 37391, 0x920f, Image, Exif.Image.FocalPlaneYResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength direction for main image. -FocalPlaneResolutionUnit, 37392, 0x9210, Image, Exif.Image.FocalPlaneResolutionUnit, Short, Unit of measurement for FocalPlaneXResolution(37390) and FocalPlaneYResolution(37391). -ImageNumber, 37393, 0x9211, Image, Exif.Image.ImageNumber, Long, Number assigned to an image, e.g., in a chained image burst. -SecurityClassification, 37394, 0x9212, Image, Exif.Image.SecurityClassification, Ascii, Security classification assigned to the image. -ImageHistory, 37395, 0x9213, Image, Exif.Image.ImageHistory, Ascii, Record of what has been done to the image. -SubjectLocation, 37396, 0x9214, Image, Exif.Image.SubjectLocation, Short, Indicates the location and area of the main subject in the overall scene. -ExposureIndex, 37397, 0x9215, Image, Exif.Image.ExposureIndex, Rational, Encodes the camera exposure index setting when image was captured. -TIFFEPStandardID, 37398, 0x9216, Image, Exif.Image.TIFFEPStandardID, Byte, Contains four ASCII characters representing the TIFF/EP standard version of a TIFF/EP file, eg '1', '0', '0', '0' -SensingMethod, 37399, 0x9217, Image, Exif.Image.SensingMethod, Short, Type of image sensor. -XPTitle, 40091, 0x9c9b, Image, Exif.Image.XPTitle, Byte, Title tag used by Windows, encoded in UCS2 -XPComment, 40092, 0x9c9c, Image, Exif.Image.XPComment, Byte, Comment tag used by Windows, encoded in UCS2 -XPAuthor, 40093, 0x9c9d, Image, Exif.Image.XPAuthor, Byte, Author tag used by Windows, encoded in UCS2 -XPKeywords, 40094, 0x9c9e, Image, Exif.Image.XPKeywords, Byte, Keywords tag used by Windows, encoded in UCS2 -XPSubject, 40095, 0x9c9f, Image, Exif.Image.XPSubject, Byte, Subject tag used by Windows, encoded in UCS2 -PrintImageMatching, 50341, 0xc4a5, Image, Exif.Image.PrintImageMatching, Undefined, Print Image Matching, description needed. -DNGVersion, 50706, 0xc612, Image, Exif.Image.DNGVersion, Byte, This tag encodes the DNG four-tier version number. For files compliant with version 1.1.0.0 of the DNG specification, this tag should contain the bytes: 1, 1, 0, 0. -DNGBackwardVersion, 50707, 0xc613, Image, Exif.Image.DNGBackwardVersion, Byte, This tag specifies the oldest version of the Digital Negative specification for which a file is compatible. Readers shouldnot attempt to read a file if this tag specifies a version number that is higher than the version number of the specification the reader was based on. In addition to checking the version tags, readers should, for all tags, check the types, counts, and values, to verify it is able to correctly read the file. -UniqueCameraModel, 50708, 0xc614, Image, Exif.Image.UniqueCameraModel, Ascii, Defines a unique, non-localized name for the camera model that created the image in the raw file. This name should include the manufacturer's name to avoid conflicts, and should not be localized, even if the camera name itself is localized for different markets (see LocalizedCameraModel). This string may be used by reader software to index into per-model preferences and replacement profiles. -LocalizedCameraModel, 50709, 0xc615, Image, Exif.Image.LocalizedCameraModel, Byte, Similar to the UniqueCameraModel field, except the name can be localized for different markets to match the localization of the camera name. -CFAPlaneColor, 50710, 0xc616, Image, Exif.Image.CFAPlaneColor, Byte, Provides a mapping between the values in the CFAPattern tag and the plane numbers in LinearRaw space. This is a required tag for non-RGB CFA images. -CFALayout, 50711, 0xc617, Image, Exif.Image.CFALayout, Short, Describes the spatial layout of the CFA. -LinearizationTable, 50712, 0xc618, Image, Exif.Image.LinearizationTable, Short, Describes a lookup table that maps stored values into linear values. This tag is typically used to increase compression ratios by storing the raw data in a non-linear, more visually uniform space with fewer total encoding levels. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelRepeatDim, 50713, 0xc619, Image, Exif.Image.BlackLevelRepeatDim, Short, Specifies repeat pattern size for the BlackLevel tag. -BlackLevel, 50714, 0xc61a, Image, Exif.Image.BlackLevel, Rational, Specifies the zero light (a.k.a. thermal black or black current) encoding level, as a repeating pattern. The origin of this pattern is the top-left corner of the ActiveArea rectangle. The values are stored in row-column-sample scan order. -BlackLevelDeltaH, 50715, 0xc61b, Image, Exif.Image.BlackLevelDeltaH, SRational, If the zero light encoding level is a function of the image column, BlackLevelDeltaH specifies the difference between the zero light encoding level for each column and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelDeltaV, 50716, 0xc61c, Image, Exif.Image.BlackLevelDeltaV, SRational, If the zero light encoding level is a function of the image row, this tag specifies the difference between the zero light encoding level for each row and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -WhiteLevel, 50717, 0xc61d, Image, Exif.Image.WhiteLevel, Short, This tag specifies the fully saturated encoding level for the raw sample values. Saturation is caused either by the sensor itself becoming highly non-linear in response, or by the camera's analog to digital converter clipping. -DefaultScale, 50718, 0xc61e, Image, Exif.Image.DefaultScale, Rational, DefaultScale is required for cameras with non-square pixels. It specifies the default scale factors for each direction to convert the image to square pixels. Typically these factors are selected to approximately preserve total pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such as the Fujifilm SuperCCD, these two values should usually differ by a factor of 2.0. -DefaultCropOrigin, 50719, 0xc61f, Image, Exif.Image.DefaultCropOrigin, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropOrigin specifies the origin of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied), relative to the top-left corner of the ActiveArea rectangle. -DefaultCropSize, 50720, 0xc620, Image, Exif.Image.DefaultCropSize, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropSize specifies the size of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied). -ColorMatrix1, 50721, 0xc621, Image, Exif.Image.ColorMatrix1, SRational, ColorMatrix1 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the first calibration illuminant. The matrix values are stored in row scan order. The ColorMatrix1 tag is required for all non-monochrome DNG files. -ColorMatrix2, 50722, 0xc622, Image, Exif.Image.ColorMatrix2, SRational, ColorMatrix2 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the second calibration illuminant. The matrix values are stored in row scan order. -CameraCalibration1, 50723, 0xc623, Image, Exif.Image.CameraCalibration1, SRational, CameraClalibration1 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the first calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix1 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -CameraCalibration2, 50724, 0xc624, Image, Exif.Image.CameraCalibration2, SRational, CameraCalibration2 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the second calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix2 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -ReductionMatrix1, 50725, 0xc625, Image, Exif.Image.ReductionMatrix1, SRational, ReductionMatrix1 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the first calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -ReductionMatrix2, 50726, 0xc626, Image, Exif.Image.ReductionMatrix2, SRational, ReductionMatrix2 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the second calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -AnalogBalance, 50727, 0xc627, Image, Exif.Image.AnalogBalance, Rational, Normally the stored raw values are not white balanced, since any digital white balancing will reduce the dynamic range of the final image if the user decides to later adjust the white balance; however, if camera hardware is capable of white balancing the color channels before the signal is digitized, it can improve the dynamic range of the final image. AnalogBalance defines the gain, either analog (recommended) or digital (not recommended) that has been applied the stored raw values. -AsShotNeutral, 50728, 0xc628, Image, Exif.Image.AsShotNeutral, Short, Specifies the selected white balance at time of capture, encoded as the coordinates of a perfectly neutral color in linear reference space values. The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag. -AsShotWhiteXY, 50729, 0xc629, Image, Exif.Image.AsShotWhiteXY, Rational, Specifies the selected white balance at time of capture, encoded as x-y chromaticity coordinates. The inclusion of this tag precludes the inclusion of the AsShotNeutral tag. -BaselineExposure, 50730, 0xc62a, Image, Exif.Image.BaselineExposure, SRational, Camera models vary in the trade-off they make between highlight headroom and shadow noise. Some leave a significant amount of highlight headroom during a normal exposure. This allows significant negative exposure compensation to be applied during raw conversion, but also means normal exposures will contain more shadow noise. Other models leave less headroom during normal exposures. This allows for less negative exposure compensation, but results in lower shadow noise for normal exposures. Because of these differences, a raw converter needs to vary the zero point of its exposure compensation control from model to model. BaselineExposure specifies by how much (in EV units) to move the zero point. Positive values result in brighter default results, while negative values result in darker default results. -BaselineNoise, 50731, 0xc62b, Image, Exif.Image.BaselineNoise, Rational, Specifies the relative noise level of the camera model at a baseline ISO value of 100, compared to a reference camera model. Since noise levels tend to vary approximately with the square root of the ISO value, a raw converter can use this value, combined with the current ISO, to estimate the relative noise level of the current image. -BaselineSharpness, 50732, 0xc62c, Image, Exif.Image.BaselineSharpness, Rational, Specifies the relative amount of sharpening required for this camera model, compared to a reference camera model. Camera models vary in the strengths of their anti-aliasing filters. Cameras with weak or no filters require less sharpening than cameras with strong anti-aliasing filters. -BayerGreenSplit, 50733, 0xc62d, Image, Exif.Image.BayerGreenSplit, Long, Only applies to CFA images using a Bayer pattern filter array. This tag specifies, in arbitrary units, how closely the values of the green pixels in the blue/green rows track the values of the green pixels in the red/green rows. A value of zero means the two kinds of green pixels track closely, while a non-zero value means they sometimes diverge. The useful range for this tag is from 0 (no divergence) to about 5000 (quite large divergence). -LinearResponseLimit, 50734, 0xc62e, Image, Exif.Image.LinearResponseLimit, Rational, Some sensors have an unpredictable non-linearity in their response as they near the upper limit of their encoding range. This non-linearity results in color shifts in the highlight areas of the resulting image unless the raw converter compensates for this effect. LinearResponseLimit specifies the fraction of the encoding range above which the response may become significantly non-linear. -CameraSerialNumber, 50735, 0xc62f, Image, Exif.Image.CameraSerialNumber, Ascii, CameraSerialNumber contains the serial number of the camera or camera body that captured the image. -LensInfo, 50736, 0xc630, Image, Exif.Image.LensInfo, Rational, Contains information about the lens that captured the image. If the minimum f-stops are unknown, they should be encoded as 0/0. -ChromaBlurRadius, 50737, 0xc631, Image, Exif.Image.ChromaBlurRadius, Rational, ChromaBlurRadius provides a hint to the DNG reader about how much chroma blur should be applied to the image. If this tag is omitted, the reader will use its default amount of chroma blurring. Normally this tag is only included for non-CFA images, since the amount of chroma blur required for mosaic images is highly dependent on the de-mosaic algorithm, in which case the DNG reader's default value is likely optimized for its particular de-mosaic algorithm. -AntiAliasStrength, 50738, 0xc632, Image, Exif.Image.AntiAliasStrength, Rational, Provides a hint to the DNG reader about how strong the camera's anti-alias filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is prone to aliasing artifacts with some subjects), while a value of 1.0 means a strong anti-alias filter (i.e., the camera almost never has aliasing artifacts). -ShadowScale, 50739, 0xc633, Image, Exif.Image.ShadowScale, SRational, This tag is used by Adobe Camera Raw to control the sensitivity of its 'Shadows' slider. -DNGPrivateData, 50740, 0xc634, Image, Exif.Image.DNGPrivateData, Byte, Provides a way for camera manufacturers to store private data in the DNG file for use by their own raw converters, and to have that data preserved by programs that edit DNG files. -MakerNoteSafety, 50741, 0xc635, Image, Exif.Image.MakerNoteSafety, Short, MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is safe to preserve along with the rest of the EXIF data. File browsers and other image management software processing an image with a preserved MakerNote should be aware that any thumbnail image embedded in the MakerNote may be stale, and may not reflect the current state of the full size image. -CalibrationIlluminant1, 50778, 0xc65a, Image, Exif.Image.CalibrationIlluminant1, Short, The illuminant used for the first set of color calibration tags (ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for this tag are the same as the legal values for the LightSource EXIF tag. -CalibrationIlluminant2, 50779, 0xc65b, Image, Exif.Image.CalibrationIlluminant2, Short, The illuminant used for an optional second set of color calibration tags (ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for this tag are the same as the legal values for the CalibrationIlluminant1 tag; however, if both are included, neither is allowed to have a value of 0 (unknown). -BestQualityScale, 50780, 0xc65c, Image, Exif.Image.BestQualityScale, Rational, For some cameras, the best possible image quality is not achieved by preserving the total pixel count during conversion. For example, Fujifilm SuperCCD images have maximum detail when their total pixel count is doubled. This tag specifies the amount by which the values of the DefaultScale tag need to be multiplied to achieve the best quality image size. -RawDataUniqueID, 50781, 0xc65d, Image, Exif.Image.RawDataUniqueID, Byte, This tag contains a 16-byte unique identifier for the raw image data in the DNG file. DNG readers can use this tag to recognize a particular raw image, even if the file's name or the metadata contained in the file has been changed. If a DNG writer creates such an identifier, it should do so using an algorithm that will ensure that it is very unlikely two different images will end up having the same identifier. -OriginalRawFileName, 50827, 0xc68b, Image, Exif.Image.OriginalRawFileName, Byte, If the DNG file was converted from a non-DNG raw file, then this tag contains the file name of that original raw file. -OriginalRawFileData, 50828, 0xc68c, Image, Exif.Image.OriginalRawFileData, Undefined, If the DNG file was converted from a non-DNG raw file, then this tag contains the compressed contents of that original raw file. The contents of this tag always use the big-endian byte order. The tag contains a sequence of data blocks. Future versions of the DNG specification may define additional data blocks, so DNG readers should ignore extra bytes when parsing this tag. DNG readers should also detect the case where data blocks are missing from the end of the sequence, and should assume a default value for all the missing blocks. There are no padding or alignment bytes between data blocks. -ActiveArea, 50829, 0xc68d, Image, Exif.Image.ActiveArea, Short, This rectangle defines the active (non-masked) pixels of the sensor. The order of the rectangle coordinates is: top, left, bottom, right. -MaskedAreas, 50830, 0xc68e, Image, Exif.Image.MaskedAreas, Short, This tag contains a list of non-overlapping rectangle coordinates of fully masked pixels, which can be optionally used by DNG readers to measure the black encoding level. The order of each rectangle's coordinates is: top, left, bottom, right. If the raw image data has already had its black encoding level subtracted, then this tag should not be used, since the masked pixels are no longer useful. -AsShotICCProfile, 50831, 0xc68f, Image, Exif.Image.AsShotICCProfile, Undefined, This tag contains an ICC profile that, in conjunction with the AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to specify a default color rendering from camera color space coordinates (linear reference values) into the ICC profile connection space. The ICC profile connection space is an output referred colorimetric space, whereas the other color calibration tags in DNG specify a conversion into a scene referred colorimetric space. This means that the rendering in this profile should include any desired tone and gamut mapping needed to convert between scene referred values and output referred values. -AsShotPreProfileMatrix, 50832, 0xc690, Image, Exif.Image.AsShotPreProfileMatrix, SRational, This tag is used in conjunction with the AsShotICCProfile tag. It specifies a matrix that should be applied to the camera color space coordinates before processing the values through the ICC profile specified in the AsShotICCProfile tag. The matrix is stored in the row scan order. If ColorPlanes is greater than three, then this matrix can (but is not required to) reduce the dimensionality of the color data down to three components, in which case the AsShotICCProfile should have three rather than ColorPlanes input components. -CurrentICCProfile, 50833, 0xc691, Image, Exif.Image.CurrentICCProfile, Undefined, This tag is used in conjunction with the CurrentPreProfileMatrix tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -CurrentPreProfileMatrix, 50834, 0xc692, Image, Exif.Image.CurrentPreProfileMatrix, SRational, This tag is used in conjunction with the CurrentICCProfile tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -ColorimetricReference, 50879, 0xc6bf, Image, Exif.Image.ColorimetricReference, Short, The DNG color model documents a transform between camera colors and CIE XYZ values. This tag describes the colorimetric reference for the CIE XYZ values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-referred, using the ICC profile perceptual dynamic range. This tag allows output-referred data to be stored in DNG files and still processed correctly by DNG readers. -CameraCalibrationSignature, 50931, 0xc6f3, Image, Exif.Image.CameraCalibrationSignature, Byte, A UTF-8 encoded string associated with the CameraCalibration1 and CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags should only be used in the DNG color transform if the string stored in the CameraCalibrationSignature tag exactly matches the string stored in the ProfileCalibrationSignature tag for the selected camera profile. -ProfileCalibrationSignature, 50932, 0xc6f4, Image, Exif.Image.ProfileCalibrationSignature, Byte, A UTF-8 encoded string associated with the camera profile tags. The CameraCalibration1 and CameraCalibration2 tags should only be used in the DNG color transfer if the string stored in the CameraCalibrationSignature tag exactly matches the string stored in the ProfileCalibrationSignature tag for the selected camera profile. -AsShotProfileName, 50934, 0xc6f6, Image, Exif.Image.AsShotProfileName, Byte, A UTF-8 encoded string containing the name of the "as shot" camera profile, if any. -NoiseReductionApplied, 50935, 0xc6f7, Image, Exif.Image.NoiseReductionApplied, Rational, This tag indicates how much noise reduction has been applied to the raw data on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has been applied. A 1.0 value indicates that the "ideal" amount of noise reduction has been applied, i.e. that the DNG reader should not apply additional noise reduction by default. A value of 0/0 indicates that this parameter is unknown. -ProfileName, 50936, 0xc6f8, Image, Exif.Image.ProfileName, Byte, A UTF-8 encoded string containing the name of the camera profile. This tag is optional if there is only a single camera profile stored in the file but is required for all camera profiles if there is more than one camera profile stored in the file. -ProfileHueSatMapDims, 50937, 0xc6f9, Image, Exif.Image.ProfileHueSatMapDims, Long, This tag specifies the number of input samples in each dimension of the hue/saturation/value mapping tables. The data for these tables are stored in ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case has ValueDivisions equal to 1, so only hue and saturation are used as inputs to the mapping table. -ProfileHueSatMapData1, 50938, 0xc6fa, Image, Exif.Image.ProfileHueSatMapData1, Float, This tag contains the data for the first hue/saturation/value mapping table. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees; the second entry is saturation scale factor; and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -ProfileHueSatMapData2, 50939, 0xc6fb, Image, Exif.Image.ProfileHueSatMapData2, Float, This tag contains the data for the second hue/saturation/value mapping table. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees; the second entry is a saturation scale factor; and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -ProfileToneCurve, 50940, 0xc6fc, Image, Exif.Image.ProfileToneCurve, Float, This tag contains a default tone curve that can be applied while processing the image as a starting point for user adjustments. The curve is specified as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each sample has an input value in the range of 0.0 to 1.0, and an output value in the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and the last sample is required to be (1.0, 1.0). Interpolated the curve using a cubic spline. -ProfileEmbedPolicy, 50941, 0xc6fd, Image, Exif.Image.ProfileEmbedPolicy, Long, This tag contains information about the usage rules for the associated camera profile. -ProfileCopyright, 50942, 0xc6fe, Image, Exif.Image.ProfileCopyright, Byte, A UTF-8 encoded string containing the copyright information for the camera profile. This string always should be preserved along with the other camera profile tags. -ForwardMatrix1, 50964, 0xc714, Image, Exif.Image.ForwardMatrix1, SRational, This tag defines a matrix that maps white balanced camera colors to XYZ D50 colors. -ForwardMatrix2, 50965, 0xc715, Image, Exif.Image.ForwardMatrix2, SRational, This tag defines a matrix that maps white balanced camera colors to XYZ D50 colors. -PreviewApplicationName, 50966, 0xc716, Image, Exif.Image.PreviewApplicationName, Byte, A UTF-8 encoded string containing the name of the application that created the preview stored in the IFD. -PreviewApplicationVersion, 50967, 0xc717, Image, Exif.Image.PreviewApplicationVersion, Byte, A UTF-8 encoded string containing the version number of the application that created the preview stored in the IFD. -PreviewSettingsName, 50968, 0xc718, Image, Exif.Image.PreviewSettingsName, Byte, A UTF-8 encoded string containing the name of the conversion settings (for example, snapshot name) used for the preview stored in the IFD. -PreviewSettingsDigest, 50969, 0xc719, Image, Exif.Image.PreviewSettingsDigest, Byte, A unique ID of the conversion settings (for example, MD5 digest) used to render the preview stored in the IFD. -PreviewColorSpace, 50970, 0xc71a, Image, Exif.Image.PreviewColorSpace, Long, This tag specifies the color space in which the rendered preview in this IFD is stored. The default value for this tag is sRGB for color previews and Gray Gamma 2.2 for monochrome previews. -PreviewDateTime, 50971, 0xc71b, Image, Exif.Image.PreviewDateTime, Ascii, This tag is an ASCII string containing the name of the date/time at which the preview stored in the IFD was rendered. The date/time is encoded using ISO 8601 format. -RawImageDigest, 50972, 0xc71c, Image, Exif.Image.RawImageDigest, Undefined, This tag is an MD5 digest of the raw image data. All pixels in the image are processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep (16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The data for each pixel is processed in little-endian byte order. -OriginalRawFileDigest, 50973, 0xc71d, Image, Exif.Image.OriginalRawFileDigest, Undefined, This tag is an MD5 digest of the data stored in the OriginalRawFileData tag. -SubTileBlockSize, 50974, 0xc71e, Image, Exif.Image.SubTileBlockSize, Long, Normally, the pixels within a tile are stored in simple row-scan order. This tag specifies that the pixels within a tile should be grouped first into rectangular blocks of the specified size. These blocks are stored in row-scan order. Within each block, the pixels are stored in row-scan order. The use of a non-default value for this tag requires setting the DNGBackwardVersion tag to at least 1.2.0.0. -RowInterleaveFactor, 50975, 0xc71f, Image, Exif.Image.RowInterleaveFactor, Long, This tag specifies that rows of the image are stored in interleaved order. The value of the tag specifies the number of interleaved fields. The use of a non-default value for this tag requires setting the DNGBackwardVersion tag to at least 1.2.0.0. -ProfileLookTableDims, 50981, 0xc725, Image, Exif.Image.ProfileLookTableDims, Long, This tag specifies the number of input samples in each dimension of a default "look" table. The data for this table is stored in the ProfileLookTableData tag. -ProfileLookTableData, 50982, 0xc726, Image, Exif.Image.ProfileLookTableData, Float, This tag contains a default "look" table that can be applied while processing the image as a starting point for user adjustment. This table uses the same format as the tables stored in the ProfileHueSatMapData1 and ProfileHueSatMapData2 tags, and is applied in the same color space. However, it should be applied later in the processing pipe, after any exposure compensation and/or fill light stages, but before any tone curve stage. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees, the second entry is a saturation scale factor, and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -OpcodeList1, 51008, 0xc740, Image, Exif.Image.OpcodeList1, Undefined, Specifies the list of opcodes that should be applied to the raw image, as read directly from the file. -OpcodeList2, 51009, 0xc741, Image, Exif.Image.OpcodeList2, Undefined, Specifies the list of opcodes that should be applied to the raw image, just after it has been mapped to linear reference values. -OpcodeList3, 51022, 0xc74e, Image, Exif.Image.OpcodeList3, Undefined, Specifies the list of opcodes that should be applied to the raw image, just after it has been demosaiced. -NoiseProfile, 51041, 0xc761, Image, Exif.Image.NoiseProfile, Double, NoiseProfile describes the amount of noise in a raw image. Specifically, this tag models the amount of signal-dependent photon (shot) noise and signal-independent sensor readout noise, two common sources of noise in raw images. The model assumes that the noise is white and spatially independent, ignoring fixed pattern effects and other sources of noise (e.g., pixel response non-uniformity, spatially-dependent thermal effects, etc.). -ExposureTime, 33434, 0x829a, Photo, Exif.Photo.ExposureTime, Rational, Exposure time, given in seconds (sec). -FNumber, 33437, 0x829d, Photo, Exif.Photo.FNumber, Rational, The F number. -ExposureProgram, 34850, 0x8822, Photo, Exif.Photo.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Photo, Exif.Photo.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. The tag value is an ASCII string compatible with the standard developed by the ASTM Technical Committee. -ISOSpeedRatings, 34855, 0x8827, Photo, Exif.Photo.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Photo, Exif.Photo.OECF, Undefined, Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO 14524. is the relationship between the camera optical input and the image values. -SensitivityType, 34864, 0x8830, Photo, Exif.Photo.SensitivityType, Short, The SensitivityType tag indicates PhotographicSensitivity tag. which one of the parameters of ISO12232 is the Although it is an optional tag, it should be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, or 7 may be used in case that the values of plural parameters are the same. -StandardOutputSensitivity, 34865, 0x8831, Photo, Exif.Photo.StandardOutputSensitivity, Long, This tag indicates the standard output sensitivity value of a camera or input device defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -RecommendedExposureIndex, 34866, 0x8832, Photo, Exif.Photo.RecommendedExposureIndex, Long, This tag indicates the recommended exposure index value of a camera or input device defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -ISOSpeed, 34867, 0x8833, Photo, Exif.Photo.ISOSpeed, Long, This tag indicates the ISO speed value of a camera or input device that is defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -ISOSpeedLatitudeyyy, 34868, 0x8834, Photo, Exif.Photo.ISOSpeedLatitudeyyy, Long, This tag indicates the ISO speed latitude yyy value of a camera or input device that is defined in ISO 12232. However, this tag shall not be recorded without ISOSpeed and ISOSpeedLatitudezzz. -ISOSpeedLatitudezzz, 34869, 0x8835, Photo, Exif.Photo.ISOSpeedLatitudezzz, Long, This tag indicates the ISO speed latitude zzz value of a camera or input device that is defined in ISO 12232. However, this tag shall not be recorded without ISOSpeed and ISOSpeedLatitudeyyy. -ExifVersion, 36864, 0x9000, Photo, Exif.Photo.ExifVersion, Undefined, The version of this standard supported. Nonexistence of this field is taken to mean nonconformance to the standard. -DateTimeOriginal, 36867, 0x9003, Photo, Exif.Photo.DateTimeOriginal, Ascii, The date and time when the original image data was generated. For a digital still camera the date and time the picture was taken are recorded. -DateTimeDigitized, 36868, 0x9004, Photo, Exif.Photo.DateTimeDigitized, Ascii, The date and time when the image was stored as digital data. -ComponentsConfiguration, 37121, 0x9101, Photo, Exif.Photo.ComponentsConfiguration, Undefined, Information specific to compressed data. The channels of each component are arranged in order from the 1st component to the 4th. For uncompressed data the data arrangement is given in the tag. However, since can only express the order of Y, Cb and Cr, this tag is provided for cases when compressed data uses components other than Y, Cb, and Cr and to enable support of other sequences. -CompressedBitsPerPixel, 37122, 0x9102, Photo, Exif.Photo.CompressedBitsPerPixel, Rational, Information specific to compressed data. The compression mode used for a compressed image is indicated in unit bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Photo, Exif.Photo.ShutterSpeedValue, SRational, Shutter speed. The unit is the APEX (Additive System of Photographic Exposure) setting. -ApertureValue, 37378, 0x9202, Photo, Exif.Photo.ApertureValue, Rational, The lens aperture. The unit is the APEX value. -BrightnessValue, 37379, 0x9203, Photo, Exif.Photo.BrightnessValue, SRational, The value of brightness. The unit is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -ExposureBiasValue, 37380, 0x9204, Photo, Exif.Photo.ExposureBiasValue, SRational, The exposure bias. The units is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -MaxApertureValue, 37381, 0x9205, Photo, Exif.Photo.MaxApertureValue, Rational, The smallest F number of the lens. The unit is the APEX value. Ordinarily it is given in the range of 00.00 to 99.99, but it is not limited to this range. -SubjectDistance, 37382, 0x9206, Photo, Exif.Photo.SubjectDistance, Rational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Photo, Exif.Photo.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Photo, Exif.Photo.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Photo, Exif.Photo.Flash, Short, This tag is recorded when an image is taken using a strobe light (flash). -FocalLength, 37386, 0x920a, Photo, Exif.Photo.FocalLength, Rational, The actual focal length of the lens, in mm. Conversion is not made to the focal length of a 35 mm film camera. -SubjectArea, 37396, 0x9214, Photo, Exif.Photo.SubjectArea, Short, This tag indicates the location and area of the main subject in the overall scene. -MakerNote, 37500, 0x927c, Photo, Exif.Photo.MakerNote, Undefined, A tag for manufacturers of Exif writers to record any desired information. The contents are up to the manufacturer. -UserComment, 37510, 0x9286, Photo, Exif.Photo.UserComment, Comment, A tag for Exif users to write keywords or comments on the image besides those in , and without the character code limitations of the tag. -SubSecTime, 37520, 0x9290, Photo, Exif.Photo.SubSecTime, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeOriginal, 37521, 0x9291, Photo, Exif.Photo.SubSecTimeOriginal, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeDigitized, 37522, 0x9292, Photo, Exif.Photo.SubSecTimeDigitized, Ascii, A tag used to record fractions of seconds for the tag. -FlashpixVersion, 40960, 0xa000, Photo, Exif.Photo.FlashpixVersion, Undefined, The FlashPix format version supported by a FPXR file. -ColorSpace, 40961, 0xa001, Photo, Exif.Photo.ColorSpace, Short, The color space information tag is always recorded as the color space specifier. Normally sRGB is used to define the color space based on the PC monitor conditions and environment. If a color space other than sRGB is used, Uncalibrated is set. Image data recorded as Uncalibrated can be treated as sRGB when it is converted to FlashPix. -PixelXDimension, 40962, 0xa002, Photo, Exif.Photo.PixelXDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid width of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. -PixelYDimension, 40963, 0xa003, Photo, Exif.Photo.PixelYDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid height of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. Since data padding is unnecessary in the vertical direction, the number of lines recorded in this valid image height tag will in fact be the same as that recorded in the SOF. -RelatedSoundFile, 40964, 0xa004, Photo, Exif.Photo.RelatedSoundFile, Ascii, This tag is used to record the name of an audio file related to the image data. The only relational information recorded here is the Exif audio file name and extension (an ASCII string consisting of 8 characters + '.' + 3 characters). The path is not recorded. -InteroperabilityTag, 40965, 0xa005, Photo, Exif.Photo.InteroperabilityTag, Long, Interoperability IFD is composed of tags which stores the information to ensure the Interoperability and pointed by the following tag located in Exif IFD. The Interoperability structure of Interoperability IFD is the same as TIFF defined IFD structure but does not contain the image data characteristically compared with normal TIFF IFD. -FlashEnergy, 41483, 0xa20b, Photo, Exif.Photo.FlashEnergy, Rational, Indicates the strobe energy at the time the image is captured, as measured in Beam Candle Power Seconds (BCPS). -SpatialFrequencyResponse, 41484, 0xa20c, Photo, Exif.Photo.SpatialFrequencyResponse, Undefined, This tag records the camera or input device spatial frequency table and SFR values in the direction of image width, image height, and diagonal direction, as specified in ISO 12233. -FocalPlaneXResolution, 41486, 0xa20e, Photo, Exif.Photo.FocalPlaneXResolution, Rational, Indicates the number of pixels in the image width (X) direction per on the camera focal plane. -FocalPlaneYResolution, 41487, 0xa20f, Photo, Exif.Photo.FocalPlaneYResolution, Rational, Indicates the number of pixels in the image height (V) direction per on the camera focal plane. -FocalPlaneResolutionUnit, 41488, 0xa210, Photo, Exif.Photo.FocalPlaneResolutionUnit, Short, Indicates the unit for measuring and . This value is the same as the . -SubjectLocation, 41492, 0xa214, Photo, Exif.Photo.SubjectLocation, Short, Indicates the location of the main subject in the scene. The value of this tag represents the pixel at the center of the main subject relative to the left edge, prior to rotation processing as per the tag. The first value indicates the X column number and second indicates the Y row number. -ExposureIndex, 41493, 0xa215, Photo, Exif.Photo.ExposureIndex, Rational, Indicates the exposure index selected on the camera or input device at the time the image is captured. -SensingMethod, 41495, 0xa217, Photo, Exif.Photo.SensingMethod, Short, Indicates the image sensor type on the camera or input device. -FileSource, 41728, 0xa300, Photo, Exif.Photo.FileSource, Undefined, Indicates the image source. If a DSC recorded the image, this tag value of this tag always be set to 3, indicating that the image was recorded on a DSC. -SceneType, 41729, 0xa301, Photo, Exif.Photo.SceneType, Undefined, Indicates the type of scene. If a DSC recorded the image, this tag value must always be set to 1, indicating that the image was directly photographed. -CFAPattern, 41730, 0xa302, Photo, Exif.Photo.CFAPattern, Undefined, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods. -CustomRendered, 41985, 0xa401, Photo, Exif.Photo.CustomRendered, Short, This tag indicates the use of special processing on image data, such as rendering geared to output. When special processing is performed, the reader is expected to disable or minimize any further processing. -ExposureMode, 41986, 0xa402, Photo, Exif.Photo.ExposureMode, Short, This tag indicates the exposure mode set when the image was shot. In auto-bracketing mode, the camera shoots a series of frames of the same scene at different exposure settings. -WhiteBalance, 41987, 0xa403, Photo, Exif.Photo.WhiteBalance, Short, This tag indicates the white balance mode set when the image was shot. -DigitalZoomRatio, 41988, 0xa404, Photo, Exif.Photo.DigitalZoomRatio, Rational, This tag indicates the digital zoom ratio when the image was shot. If the numerator of the recorded value is 0, this indicates that digital zoom was not used. -FocalLengthIn35mmFilm, 41989, 0xa405, Photo, Exif.Photo.FocalLengthIn35mmFilm, Short, This tag indicates the equivalent focal length assuming a 35mm film camera, in mm. A value of 0 means the focal length is unknown. Note that this tag differs from the tag. -SceneCaptureType, 41990, 0xa406, Photo, Exif.Photo.SceneCaptureType, Short, This tag indicates the type of scene that was shot. It can also be used to record the mode in which the image was shot. Note that this differs from the tag. -GainControl, 41991, 0xa407, Photo, Exif.Photo.GainControl, Short, This tag indicates the degree of overall image gain adjustment. -Contrast, 41992, 0xa408, Photo, Exif.Photo.Contrast, Short, This tag indicates the direction of contrast processing applied by the camera when the image was shot. -Saturation, 41993, 0xa409, Photo, Exif.Photo.Saturation, Short, This tag indicates the direction of saturation processing applied by the camera when the image was shot. -Sharpness, 41994, 0xa40a, Photo, Exif.Photo.Sharpness, Short, This tag indicates the direction of sharpness processing applied by the camera when the image was shot. -DeviceSettingDescription, 41995, 0xa40b, Photo, Exif.Photo.DeviceSettingDescription, Undefined, This tag indicates information on the picture-taking conditions of a particular camera model. The tag is used only to indicate the picture-taking conditions in the reader. -SubjectDistanceRange, 41996, 0xa40c, Photo, Exif.Photo.SubjectDistanceRange, Short, This tag indicates the distance to the subject. -ImageUniqueID, 42016, 0xa420, Photo, Exif.Photo.ImageUniqueID, Ascii, This tag indicates an identifier assigned uniquely to each image. It is recorded as an ASCII string equivalent to hexadecimal notation and 128-bit fixed length. -CameraOwnerName, 42032, 0xa430, Photo, Exif.Photo.CameraOwnerName, Ascii, This tag records the owner of a camera used in photography as an ASCII string. -BodySerialNumber, 42033, 0xa431, Photo, Exif.Photo.BodySerialNumber, Ascii, This tag records the serial number of the body of the camera that was used in photography as an ASCII string. -LensSpecification, 42034, 0xa432, Photo, Exif.Photo.LensSpecification, Rational, This tag notes minimum focal length, maximum focal length, minimum F number in the minimum focal length, and minimum F number in the maximum focal length, which are specification information for the lens that was used in photography. When the minimum F number is unknown, the notation is 0/0 -LensMake, 42035, 0xa433, Photo, Exif.Photo.LensMake, Ascii, This tag records the lens manufactor as an ASCII string. -LensModel, 42036, 0xa434, Photo, Exif.Photo.LensModel, Ascii, This tag records the lens's model name and model number as an ASCII string. -LensSerialNumber, 42037, 0xa435, Photo, Exif.Photo.LensSerialNumber, Ascii, This tag records the serial number of the interchangeable lens that was used in photography as an ASCII string. -InteroperabilityIndex, 1, 0x0001, Iop, Exif.Iop.InteroperabilityIndex, Ascii, Indicates the identification of the Interoperability rule. Use "R98" for stating ExifR98 Rules. Four bytes used including the termination code (NULL). see the separate volume of Recommended Exif Interoperability Rules (ExifR98) for other tags used for ExifR98. -InteroperabilityVersion, 2, 0x0002, Iop, Exif.Iop.InteroperabilityVersion, Undefined, Interoperability version -RelatedImageFileFormat, 4096, 0x1000, Iop, Exif.Iop.RelatedImageFileFormat, Ascii, File format of image file -RelatedImageWidth, 4097, 0x1001, Iop, Exif.Iop.RelatedImageWidth, Long, Image width -RelatedImageLength, 4098, 0x1002, Iop, Exif.Iop.RelatedImageLength, Long, Image height -GPSVersionID, 0, 0x0000, GPSInfo, Exif.GPSInfo.GPSVersionID, Byte, Indicates the version of . The version is given as 2.0.0.0. This tag is mandatory when tag is present. (Note: The tag is given in bytes, unlike the tag. When the version is 2.0.0.0, the tag value is 02000000.H). -GPSLatitudeRef, 1, 0x0001, GPSInfo, Exif.GPSInfo.GPSLatitudeRef, Ascii, Indicates whether the latitude is north or south latitude. The ASCII value 'N' indicates north latitude, and 'S' is south latitude. -GPSLatitude, 2, 0x0002, GPSInfo, Exif.GPSInfo.GPSLatitude, Rational, Indicates the latitude. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is dd/1,mmmm/100,0/1. -GPSLongitudeRef, 3, 0x0003, GPSInfo, Exif.GPSInfo.GPSLongitudeRef, Ascii, Indicates whether the longitude is east or west longitude. ASCII 'E' indicates east longitude, and 'W' is west longitude. -GPSLongitude, 4, 0x0004, GPSInfo, Exif.GPSInfo.GPSLongitude, Rational, Indicates the longitude. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is ddd/1,mmmm/100,0/1. -GPSAltitudeRef, 5, 0x0005, GPSInfo, Exif.GPSInfo.GPSAltitudeRef, Byte, Indicates the altitude used as the reference altitude. If the reference is sea level and the altitude is above sea level, 0 is given. If the altitude is below sea level, a value of 1 is given and the altitude is indicated as an absolute value in the GSPAltitude tag. The reference unit is meters. Note that this tag is BYTE type, unlike other reference tags. -GPSAltitude, 6, 0x0006, GPSInfo, Exif.GPSInfo.GPSAltitude, Rational, Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is expressed as one RATIONAL value. The reference unit is meters. -GPSTimeStamp, 7, 0x0007, GPSInfo, Exif.GPSInfo.GPSTimeStamp, Rational, Indicates the time as UTC (Coordinated Universal Time). is expressed as three RATIONAL values giving the hour, minute, and second (atomic clock). -GPSSatellites, 8, 0x0008, GPSInfo, Exif.GPSInfo.GPSSatellites, Ascii, Indicates the GPS satellites used for measurements. This tag can be used to describe the number of satellites, their ID number, angle of elevation, azimuth, SNR and other information in ASCII notation. The format is not specified. If the GPS receiver is incapable of taking measurements, value of the tag is set to NULL. -GPSStatus, 9, 0x0009, GPSInfo, Exif.GPSInfo.GPSStatus, Ascii, Indicates the status of the GPS receiver when the image is recorded. "A" means measurement is in progress, and "V" means the measurement is Interoperability. -GPSMeasureMode, 10, 0x000a, GPSInfo, Exif.GPSInfo.GPSMeasureMode, Ascii, Indicates the GPS measurement mode. "2" means two-dimensional measurement and "3" means three-dimensional measurement is in progress. -GPSDOP, 11, 0x000b, GPSInfo, Exif.GPSInfo.GPSDOP, Rational, Indicates the GPS DOP (data degree of precision). An HDOP value is written during two-dimensional measurement, and PDOP during three-dimensional measurement. -GPSSpeedRef, 12, 0x000c, GPSInfo, Exif.GPSInfo.GPSSpeedRef, Ascii, Indicates the unit used to express the GPS receiver speed of movement. "K" "M" and "N" represents kilometers per hour, miles per hour, and knots. -GPSSpeed, 13, 0x000d, GPSInfo, Exif.GPSInfo.GPSSpeed, Rational, Indicates the speed of GPS receiver movement. -GPSTrackRef, 14, 0x000e, GPSInfo, Exif.GPSInfo.GPSTrackRef, Ascii, Indicates the reference for giving the direction of GPS receiver movement. "T" denotes true direction and "M" is magnetic direction. -GPSTrack, 15, 0x000f, GPSInfo, Exif.GPSInfo.GPSTrack, Rational, Indicates the direction of GPS receiver movement. The range of values is from 0.00 to 359.99. -GPSImgDirectionRef, 16, 0x0010, GPSInfo, Exif.GPSInfo.GPSImgDirectionRef, Ascii, Indicates the reference for giving the direction of the image when it is captured. "T" denotes true direction and "M" is magnetic direction. -GPSImgDirection, 17, 0x0011, GPSInfo, Exif.GPSInfo.GPSImgDirection, Rational, Indicates the direction of the image when it was captured. The range of values is from 0.00 to 359.99. -GPSMapDatum, 18, 0x0012, GPSInfo, Exif.GPSInfo.GPSMapDatum, Ascii, Indicates the geodetic survey data used by the GPS receiver. If the survey data is restricted to Japan, the value of this tag is "TOKYO" or "WGS-84". -GPSDestLatitudeRef, 19, 0x0013, GPSInfo, Exif.GPSInfo.GPSDestLatitudeRef, Ascii, Indicates whether the latitude of the destination point is north or south latitude. The ASCII value "N" indicates north latitude, and "S" is south latitude. -GPSDestLatitude, 20, 0x0014, GPSInfo, Exif.GPSInfo.GPSDestLatitude, Rational, Indicates the latitude of the destination point. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If latitude is expressed as degrees, minutes and seconds, a typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be dd/1,mmmm/100,0/1. -GPSDestLongitudeRef, 21, 0x0015, GPSInfo, Exif.GPSInfo.GPSDestLongitudeRef, Ascii, Indicates whether the longitude of the destination point is east or west longitude. ASCII "E" indicates east longitude, and "W" is west longitude. -GPSDestLongitude, 22, 0x0016, GPSInfo, Exif.GPSInfo.GPSDestLongitude, Rational, Indicates the longitude of the destination point. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If longitude is expressed as degrees, minutes and seconds, a typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be ddd/1,mmmm/100,0/1. -GPSDestBearingRef, 23, 0x0017, GPSInfo, Exif.GPSInfo.GPSDestBearingRef, Ascii, Indicates the reference used for giving the bearing to the destination point. "T" denotes true direction and "M" is magnetic direction. -GPSDestBearing, 24, 0x0018, GPSInfo, Exif.GPSInfo.GPSDestBearing, Rational, Indicates the bearing to the destination point. The range of values is from 0.00 to 359.99. -GPSDestDistanceRef, 25, 0x0019, GPSInfo, Exif.GPSInfo.GPSDestDistanceRef, Ascii, Indicates the unit used to express the distance to the destination point. "K", "M" and "N" represent kilometers, miles and knots. -GPSDestDistance, 26, 0x001a, GPSInfo, Exif.GPSInfo.GPSDestDistance, Rational, Indicates the distance to the destination point. -GPSProcessingMethod, 27, 0x001b, GPSInfo, Exif.GPSInfo.GPSProcessingMethod, Undefined, A character string recording the name of the method used for location finding. The first byte indicates the character code used, and this is followed by the name of the method. -GPSAreaInformation, 28, 0x001c, GPSInfo, Exif.GPSInfo.GPSAreaInformation, Undefined, A character string recording the name of the GPS area. The first byte indicates the character code used, and this is followed by the name of the GPS area. -GPSDateStamp, 29, 0x001d, GPSInfo, Exif.GPSInfo.GPSDateStamp, Ascii, A character string recording date and time information relative to UTC (Coordinated Universal Time). The format is "YYYY:MM:DD.". -GPSDifferential, 30, 0x001e, GPSInfo, Exif.GPSInfo.GPSDifferential, Short, Indicates whether differential correction is applied to the GPS receiver. -Usage: bin\ReleaseDLL\tiff-test.exe file - /usr/lib /usr lib - /usr/ / usr - usr . usr - / / - . . . - .. . .. - /// / - /usr/.emacs /usr .emacs - /usr/.emacs/ /usr .emacs - /usr/.emacs// /usr .emacs - usr/.emacs usr .emacs - .emacs . .emacs - .emacs.gz . .emacs.gz .gz - /tmp/image.jpg /tmp image.jpg .jpg -/tmp/.image.jpg /tmp .image.jpg .jpg - /image.jpg / image.jpg .jpg - image.jpg . image.jpg .jpg - image.jpg// . image.jpg .jpg - /////image.jpg / image.jpg .jpg - /foo.bar/image /foo.bar image -/foo.bar/images.tar.gz /foo.bar images.tar.gz .gz -d:\foo.bar\images.tar.gz d:\foo.bar images.tar.gz .gz -Usage: write-test file case - -where case is an integer between 1 and 11 -Usage: bin\ReleaseDLL\write2-test.exe file -Usage: bin\ReleaseDLL\xmpparse.exe file -Usage: bin\ReleaseDLL\xmpparser-test.exe file -Xmp.dc.source XmpText 13 xmpsample.cpp -Xmp.dc.subject XmpBag 2 Palmtree, Rubbertree -Xmp.dc.title LangAlt 2 lang="de-DE" Sonnenuntergang am Strand, lang="en-US" Sunset on the beach -Xmp.dc.one XmpText 2 -1 -Xmp.dc.two XmpText 6 3.1415 -Xmp.dc.three XmpText 3 5/7 -Xmp.dc.four XmpText 3 255 -Xmp.dc.five XmpText 3 256 -Xmp.dc.six XmpText 5 False -Xmp.dc.seven XmpText 5 Seven -Xmp.dc.format XmpText 10 image/jpeg -Xmp.dc.creator XmpSeq 3 1) The first creator, 2) The second creator, 3) And another one -Xmp.dc.description LangAlt 2 lang="x-default" Hello, World, lang="de-DE" Hallo, Welt -Xmp.tiff.ImageDescription LangAlt 2 lang="x-default" TIFF image description, lang="de-DE" TIFF Bildbeschreibung -Xmp.ns.myProperty XmpText 7 myValue -Xmp.xmpDM.videoFrameSize/stDim:w XmpText 2 16 -Xmp.xmpDM.videoFrameSize/stDim:h XmpText 1 9 -Xmp.xmpDM.videoFrameSize/stDim:unit XmpText 4 inch -Xmp.dc.publisher XmpBag 1 James Bond -Xmp.dc.publisher[1]/?ns:role XmpText 12 secret agent -Xmp.dc.creator[2]/?ns:role XmpText 10 programmer -Xmp.xmpBJ.JobRef XmpText 0 type="Bag" -Xmp.xmpBJ.JobRef[1]/stJob:name XmpText 14 Birthday party -Xmp.xmpBJ.JobRef[1]/stJob:role XmpText 12 Photographer -Xmp.xmpBJ.JobRef[2]/stJob:name XmpText 16 Wedding ceremony -Xmp.xmpBJ.JobRef[2]/stJob:role XmpText 8 Best man -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCity XmpText 12 Kuala Lumpur -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCtry XmpText 8 Malaysia -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiUrlWork XmpText 20 http://www.exiv2.org - - - - - - - Palmtree - Rubbertree - - - - - Sonnenuntergang am Strand - Sunset on the beach - - - - - 1) The first creator - - 2) The second creator - programmer - - 3) And another one - - - - - Hello, World - Hallo, Welt - - - - - - James Bond - secret agent - - - - - - TIFF image description - TIFF Bildbeschreibung - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Usage: addmoddel\Debug\addmoddel.exe file -Usage: addmoddel\DebugDLL\addmoddel.exe file -Usage: addmoddel\Release\addmoddel.exe file -Usage: addmoddel\ReleaseDLL\addmoddel.exe file -Usage: convert-test\Debug\convert-test.exe file -Usage: convert-test\DebugDLL\convert-test.exe file -Usage: convert-test\Release\convert-test.exe file -Usage: convert-test\ReleaseDLL\convert-test.exe file -Usage: exifcomment\Debug\exifcomment.exe file -Usage: exifcomment\DebugDLL\exifcomment.exe file -Usage: exifcomment\Release\exifcomment.exe file -Usage: exifcomment\ReleaseDLL\exifcomment.exe file -Usage: tiff-test\Debug\tiff-test.exe file -Usage: tiff-test\DebugDLL\tiff-test.exe file -Usage: tiff-test\Release\tiff-test.exe file -Usage: tiff-test\ReleaseDLL\tiff-test.exe file -Usage: exifdata-test\Debug\exifdata-test.exe file -Usage: exifdata-test\DebugDLL\exifdata-test.exe file -Usage: exifdata-test\Release\exifdata-test.exe file -Usage: exifdata-test\ReleaseDLL\exifdata-test.exe file -Usage: exifprint\Debug\exifprint.exe file -Usage: exifprint\DebugDLL\exifprint.exe file -Usage: exifprint\Release\exifprint.exe file -Usage: exifprint\ReleaseDLL\exifprint.exe file -Usage: exiv2.exe [ options ] [ action ] file ... - -Manipulate the Exif metadata of images. -Usage: exiv2.exe [ options ] [ action ] file ... - -Manipulate the Exif metadata of images. -Usage: exiv2.exe [ options ] [ action ] file ... - -Manipulate the Exif metadata of images. -Usage: exiv2.exe [ options ] [ action ] file ... - -Manipulate the Exif metadata of images. -Usage: iotest\Debug\iotest.exe filein fileout1 fileout2 -fileouts are overwritten and should match filein exactly -Usage: iotest\DebugDLL\iotest.exe filein fileout1 fileout2 -fileouts are overwritten and should match filein exactly -Usage: iotest\Release\iotest.exe filein fileout1 fileout2 -fileouts are overwritten and should match filein exactly -Usage: iotest\ReleaseDLL\iotest.exe filein fileout1 fileout2 -fileouts are overwritten and should match filein exactly -Usage: iptceasy\Debug\iptceasy.exe file -Usage: iptceasy\DebugDLL\iptceasy.exe file -Usage: iptceasy\Release\iptceasy.exe file -Usage: iptceasy\ReleaseDLL\iptceasy.exe file -Usage: iptcprint\Debug\iptcprint.exe file -Usage: iptcprint\DebugDLL\iptcprint.exe file -Usage: iptcprint\Release\iptcprint.exe file -Usage: iptcprint\ReleaseDLL\iptcprint.exe file -Usage: iptctest\Debug\iptctest.exe image -Commands read from stdin. -Usage: iptctest\DebugDLL\iptctest.exe image -Commands read from stdin. -Usage: iptctest\Release\iptctest.exe image -Commands read from stdin. -Usage: iptctest\ReleaseDLL\iptctest.exe image -Commands read from stdin. -Usage: largeiptc-test\Debug\largeiptc-test.exe image datafile -Usage: largeiptc-test\DebugDLL\largeiptc-test.exe image datafile -Usage: largeiptc-test\Release\largeiptc-test.exe image datafile -Usage: largeiptc-test\ReleaseDLL\largeiptc-test.exe image datafile - -Reads and writes raw metadata. Use -h option for help. -Usage: metacopy.exe [-iecaph] readfile writefile - -Reads and writes raw metadata. Use -h option for help. -Usage: metacopy.exe [-iecaph] readfile writefile - -Reads and writes raw metadata. Use -h option for help. -Usage: metacopy.exe [-iecaph] readfile writefile -Usage: mmap-test\ReleaseDLL\mmap-test.exe file -Usage: mmap-test\Debug\mmap-test.exe file -Usage: mmap-test\DebugDLL\mmap-test.exe file -Usage: mmap-test\Release\mmap-test.exe file - -Reads and writes raw metadata. Use -h option for help. -Usage: metacopy.exe [-iecaph] readfile writefile -Usage: prevtest\Debug\prevtest.exe file -Usage: prevtest\DebugDLL\prevtest.exe file -Usage: prevtest\Release\prevtest.exe file -Usage: prevtest\ReleaseDLL\prevtest.exe file -string long float Rational -True 1 1 1/1 -False 0 0 0/1 -t 1 1 1/1 -f 0 0 0/1 --1 -1 -1 -1/1 -0 0 0 0/1 -1 1 1 1/1 -0.0 0 0 0/1 -0.1 0 0.1 1/10 -0.01 0 0.01 1/100 -0.001 0 0.001 1/1000 --1.49999 -1 -1.49999 -149999/100000 --1.5 -1 -1.5 -3/2 -1.49999 1 1.49999 149999/100000 -1.5 1 1.5 3/2 -0/1 0 0 0/1 -1/1 1 1 1/1 -1/3 0 0.333333 1/3 --1/3 0 -0.333333 -1/3 -4/3 1 1.33333 4/3 --4/3 -1 -1.33333 -4/3 -0/0 nok nok 0/0 -text nok nok nok -string long float Rational -True 1 1 1/1 -False 0 0 0/1 -t 1 1 1/1 -f 0 0 0/1 --1 -1 -1 -1/1 -0 0 0 0/1 -1 1 1 1/1 -0.0 0 0 0/1 -0.1 0 0.1 1/10 -0.01 0 0.01 1/100 -0.001 0 0.001 1/1000 --1.49999 -1 -1.49999 -149999/100000 --1.5 -1 -1.5 -3/2 -1.49999 1 1.49999 149999/100000 -1.5 1 1.5 3/2 -0/1 0 0 0/1 -1/1 1 1 1/1 -1/3 0 0.333333 1/3 --1/3 0 -0.333333 -1/3 -4/3 1 1.33333 4/3 --4/3 -1 -1.33333 -4/3 -0/0 nok nok 0/0 -text nok nok nok -string long float Rational -True 1 1 1/1 -False 0 0 0/1 -t 1 1 1/1 -f 0 0 0/1 --1 -1 -1 -1/1 -0 0 0 0/1 -1 1 1 1/1 -0.0 0 0 0/1 -0.1 0 0.1 1/10 -0.01 0 0.01 1/100 -0.001 0 0.001 1/1000 --1.49999 -1 -1.49999 -149999/100000 --1.5 -1 -1.5 -3/2 -1.49999 1 1.49999 149999/100000 -1.5 1 1.5 3/2 -0/1 0 0 0/1 -1/1 1 1 1/1 -1/3 0 0.333333 1/3 --1/3 0 -0.333333 -1/3 -4/3 1 1.33333 4/3 --4/3 -1 -1.33333 -4/3 -0/0 nok nok 0/0 -text nok nok nok -string long float Rational -True 1 1 1/1 -False 0 0 0/1 -t 1 1 1/1 -f 0 0 0/1 --1 -1 -1 -1/1 -0 0 0 0/1 -1 1 1 1/1 -0.0 0 0 0/1 -0.1 0 0.1 1/10 -0.01 0 0.01 1/100 -0.001 0 0.001 1/1000 --1.49999 -1 -1.49999 -149999/100000 --1.5 -1 -1.5 -3/2 -1.49999 1 1.49999 149999/100000 -1.5 1 1.5 3/2 -0/1 0 0 0/1 -1/1 1 1 1/1 -1/3 0 0.333333 1/3 --1/3 0 -0.333333 -1/3 -4/3 1 1.33333 4/3 --4/3 -1 -1.33333 -4/3 -0/0 nok nok 0/0 -text nok nok nok -ProcessingSoftware, 11, 0x000b, Image, Exif.Image.ProcessingSoftware, Ascii, The name and version of the software used to post-process the picture. -NewSubfileType, 254, 0x00fe, Image, Exif.Image.NewSubfileType, Long, A general indication of the kind of data contained in this subfile. -SubfileType, 255, 0x00ff, Image, Exif.Image.SubfileType, Short, A general indication of the kind of data contained in this subfile. This field is deprecated. The NewSubfileType field should be used instead. -ImageWidth, 256, 0x0100, Image, Exif.Image.ImageWidth, Long, The number of columns of image data, equal to the number of pixels per row. In JPEG compressed data a JPEG marker is used instead of this tag. -ImageLength, 257, 0x0101, Image, Exif.Image.ImageLength, Long, The number of rows of image data. In JPEG compressed data a JPEG marker is used instead of this tag. -BitsPerSample, 258, 0x0102, Image, Exif.Image.BitsPerSample, Short, The number of bits per image component. In this standard each component of the image is 8 bits, so the value for this tag is 8. See also . In JPEG compressed data a JPEG marker is used instead of this tag. -Compression, 259, 0x0103, Image, Exif.Image.Compression, Short, The compression scheme used for the image data. When a primary image is JPEG compressed, this designation is not necessary and is omitted. When thumbnails use JPEG compression, this tag value is set to 6. -PhotometricInterpretation, 262, 0x0106, Image, Exif.Image.PhotometricInterpretation, Short, The pixel composition. In JPEG compressed data a JPEG marker is used instead of this tag. -Threshholding, 263, 0x0107, Image, Exif.Image.Threshholding, Short, For black and white TIFF files that represent shades of gray, the technique used to convert from gray to black and white pixels. -CellWidth, 264, 0x0108, Image, Exif.Image.CellWidth, Short, The width of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -CellLength, 265, 0x0109, Image, Exif.Image.CellLength, Short, The length of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -FillOrder, 266, 0x010a, Image, Exif.Image.FillOrder, Short, The logical order of bits within a byte -DocumentName, 269, 0x010d, Image, Exif.Image.DocumentName, Ascii, The name of the document from which this image was scanned -ImageDescription, 270, 0x010e, Image, Exif.Image.ImageDescription, Ascii, A character string giving the title of the image. It may be a comment such as "1988 company picnic" or the like. Two-bytes character codes cannot be used. When a 2-bytes code is necessary, the Exif Private tag is to be used. -Make, 271, 0x010f, Image, Exif.Image.Make, Ascii, The manufacturer of the recording equipment. This is the manufacturer of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -Model, 272, 0x0110, Image, Exif.Image.Model, Ascii, The model name or model number of the equipment. This is the model name or number of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -StripOffsets, 273, 0x0111, Image, Exif.Image.StripOffsets, Long, For each strip, the byte offset of that strip. It is recommended that this be selected so the number of strip bytes does not exceed 64 Kbytes. With JPEG compressed data this designation is not needed and is omitted. See also and . -Orientation, 274, 0x0112, Image, Exif.Image.Orientation, Short, The image orientation viewed in terms of rows and columns. -SamplesPerPixel, 277, 0x0115, Image, Exif.Image.SamplesPerPixel, Short, The number of components per pixel. Since this standard applies to RGB and YCbCr images, the value set for this tag is 3. In JPEG compressed data a JPEG marker is used instead of this tag. -RowsPerStrip, 278, 0x0116, Image, Exif.Image.RowsPerStrip, Long, The number of rows per strip. This is the number of rows in the image of one strip when an image is divided into strips. With JPEG compressed data this designation is not needed and is omitted. See also and . -StripByteCounts, 279, 0x0117, Image, Exif.Image.StripByteCounts, Long, The total number of bytes in each strip. With JPEG compressed data this designation is not needed and is omitted. -XResolution, 282, 0x011a, Image, Exif.Image.XResolution, Rational, The number of pixels per in the direction. When the image resolution is unknown, 72 [dpi] is designated. -YResolution, 283, 0x011b, Image, Exif.Image.YResolution, Rational, The number of pixels per in the direction. The same value as is designated. -PlanarConfiguration, 284, 0x011c, Image, Exif.Image.PlanarConfiguration, Short, Indicates whether pixel components are recorded in a chunky or planar format. In JPEG compressed files a JPEG marker is used instead of this tag. If this field does not exist, the TIFF default of 1 (chunky) is assumed. -GrayResponseUnit, 290, 0x0122, Image, Exif.Image.GrayResponseUnit, Short, The precision of the information contained in the GrayResponseCurve. -GrayResponseCurve, 291, 0x0123, Image, Exif.Image.GrayResponseCurve, Short, For grayscale data, the optical density of each possible pixel value. -T4Options, 292, 0x0124, Image, Exif.Image.T4Options, Long, T.4-encoding options. -T6Options, 293, 0x0125, Image, Exif.Image.T6Options, Long, T.6-encoding options. -ResolutionUnit, 296, 0x0128, Image, Exif.Image.ResolutionUnit, Short, The unit for measuring and . The same unit is used for both and . If the image resolution is unknown, 2 (inches) is designated. -TransferFunction, 301, 0x012d, Image, Exif.Image.TransferFunction, Short, A transfer function for the image, described in tabular style. Normally this tag is not necessary, since color space is specified in the color space information tag (). -Software, 305, 0x0131, Image, Exif.Image.Software, Ascii, This tag records the name and version of the software or firmware of the camera or image input device used to generate the image. The detailed format is not specified, but it is recommended that the example shown below be followed. When the field is left blank, it is treated as unknown. -DateTime, 306, 0x0132, Image, Exif.Image.DateTime, Ascii, The date and time of image creation. In Exif standard, it is the date and time the file was changed. -Artist, 315, 0x013b, Image, Exif.Image.Artist, Ascii, This tag records the name of the camera owner, photographer or image creator. The detailed format is not specified, but it is recommended that the information be written as in the example below for ease of Interoperability. When the field is left blank, it is treated as unknown. Ex.) "Camera owner, John Smith; Photographer, Michael Brown; Image creator, Ken James" -HostComputer, 316, 0x013c, Image, Exif.Image.HostComputer, Ascii, This tag records information about the host computer used to generate the image. -Predictor, 317, 0x013d, Image, Exif.Image.Predictor, Short, A predictor is a mathematical operator that is applied to the image data before an encoding scheme is applied. -WhitePoint, 318, 0x013e, Image, Exif.Image.WhitePoint, Rational, The chromaticity of the white point of the image. Normally this tag is not necessary, since color space is specified in the colorspace information tag (). -PrimaryChromaticities, 319, 0x013f, Image, Exif.Image.PrimaryChromaticities, Rational, The chromaticity of the three primary colors of the image. Normally this tag is not necessary, since colorspace is specified in the colorspace information tag (). -ColorMap, 320, 0x0140, Image, Exif.Image.ColorMap, Short, A color map for palette color images. This field defines a Red-Green-Blue color map (often called a lookup table) for palette-color images. In a palette-color image, a pixel value is used to index into an RGB lookup table. -HalftoneHints, 321, 0x0141, Image, Exif.Image.HalftoneHints, Short, The purpose of the HalftoneHints field is to convey to the halftone function the range of gray levels within a colorimetrically-specified image that should retain tonal detail. -TileWidth, 322, 0x0142, Image, Exif.Image.TileWidth, Short, The tile width in pixels. This is the number of columns in each tile. -TileLength, 323, 0x0143, Image, Exif.Image.TileLength, Short, The tile length (height) in pixels. This is the number of rows in each tile. -TileOffsets, 324, 0x0144, Image, Exif.Image.TileOffsets, Short, For each tile, the byte offset of that tile, as compressed and stored on disk. The offset is specified with respect to the beginning of the TIFF file. Note that this implies that each tile has a location independent of the locations of other tiles. -TileByteCounts, 325, 0x0145, Image, Exif.Image.TileByteCounts, Short, For each tile, the number of (compressed) bytes in that tile. See TileOffsets for a description of how the byte counts are ordered. -SubIFDs, 330, 0x014a, Image, Exif.Image.SubIFDs, Long, Defined by Adobe Corporation to enable TIFF Trees within a TIFF file. -InkSet, 332, 0x014c, Image, Exif.Image.InkSet, Short, The set of inks used in a separated (PhotometricInterpretation=5) image. -InkNames, 333, 0x014d, Image, Exif.Image.InkNames, Ascii, The name of each ink used in a separated (PhotometricInterpretation=5) image. -NumberOfInks, 334, 0x014e, Image, Exif.Image.NumberOfInks, Short, The number of inks. Usually equal to SamplesPerPixel, unless there are extra samples. -DotRange, 336, 0x0150, Image, Exif.Image.DotRange, Byte, The component values that correspond to a 0% dot and 100% dot. -TargetPrinter, 337, 0x0151, Image, Exif.Image.TargetPrinter, Ascii, A description of the printing environment for which this separation is intended. -ExtraSamples, 338, 0x0152, Image, Exif.Image.ExtraSamples, Short, Specifies that each pixel has m extra components whose interpretation is defined by one of the values listed below. -SampleFormat, 339, 0x0153, Image, Exif.Image.SampleFormat, Short, This field specifies how to interpret each data sample in a pixel. -SMinSampleValue, 340, 0x0154, Image, Exif.Image.SMinSampleValue, Short, This field specifies the minimum sample value. -SMaxSampleValue, 341, 0x0155, Image, Exif.Image.SMaxSampleValue, Short, This field specifies the maximum sample value. -TransferRange, 342, 0x0156, Image, Exif.Image.TransferRange, Short, Expands the range of the TransferFunction -ClipPath, 343, 0x0157, Image, Exif.Image.ClipPath, Byte, A TIFF ClipPath is intended to mirror the essentials of PostScript's path creation functionality. -XClipPathUnits, 344, 0x0158, Image, Exif.Image.XClipPathUnits, SShort, The number of units that span the width of the image, in terms of integer ClipPath coordinates. -YClipPathUnits, 345, 0x0159, Image, Exif.Image.YClipPathUnits, SShort, The number of units that span the height of the image, in terms of integer ClipPath coordinates. -Indexed, 346, 0x015a, Image, Exif.Image.Indexed, Short, Indexed images are images where the 'pixels' do not represent color values, but rather an index (usually 8-bit) into a separate color table, the ColorMap. -JPEGTables, 347, 0x015b, Image, Exif.Image.JPEGTables, Undefined, This optional tag may be used to encode the JPEG quantization andHuffman tables for subsequent use by the JPEG decompression process. -OPIProxy, 351, 0x015f, Image, Exif.Image.OPIProxy, Short, OPIProxy gives information concerning whether this image is a low-resolution proxy of a high-resolution image (Adobe OPI). -JPEGProc, 512, 0x0200, Image, Exif.Image.JPEGProc, Long, This field indicates the process used to produce the compressed data -JPEGInterchangeFormat, 513, 0x0201, Image, Exif.Image.JPEGInterchangeFormat, Long, The offset to the start byte (SOI) of JPEG compressed thumbnail data. This is not used for primary image JPEG data. -JPEGInterchangeFormatLength, 514, 0x0202, Image, Exif.Image.JPEGInterchangeFormatLength, Long, The number of bytes of JPEG compressed thumbnail data. This is not used for primary image JPEG data. JPEG thumbnails are not divided but are recorded as a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not be recorded. Compressed thumbnails must be recorded in no more than 64 Kbytes, including all other data to be recorded in APP1. -JPEGRestartInterval, 515, 0x0203, Image, Exif.Image.JPEGRestartInterval, Short, This Field indicates the length of the restart interval used in the compressed image data. -JPEGLosslessPredictors, 517, 0x0205, Image, Exif.Image.JPEGLosslessPredictors, Short, This Field points to a list of lossless predictor-selection values, one per component. -JPEGPointTransforms, 518, 0x0206, Image, Exif.Image.JPEGPointTransforms, Short, This Field points to a list of point transform values, one per component. -JPEGQTables, 519, 0x0207, Image, Exif.Image.JPEGQTables, Long, This Field points to a list of offsets to the quantization tables, one per component. -JPEGDCTables, 520, 0x0208, Image, Exif.Image.JPEGDCTables, Long, This Field points to a list of offsets to the DC Huffman tables or the lossless Huffman tables, one per component. -JPEGACTables, 521, 0x0209, Image, Exif.Image.JPEGACTables, Long, This Field points to a list of offsets to the Huffman AC tables, one per component. -YCbCrCoefficients, 529, 0x0211, Image, Exif.Image.YCbCrCoefficients, Rational, The matrix coefficients for transformation from RGB to YCbCr image data. No default is given in TIFF; but here the value given in Appendix E, "Color Space Guidelines", is used as the default. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability this condition. -YCbCrSubSampling, 530, 0x0212, Image, Exif.Image.YCbCrSubSampling, Short, The sampling ratio of chrominance components in relation to the luminance component. In JPEG compressed data a JPEG marker is used instead of this tag. -YCbCrPositioning, 531, 0x0213, Image, Exif.Image.YCbCrPositioning, Short, The position of chrominance components in relation to the luminance component. This field is designated only for JPEG compressed data or uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr = 4:2:2 it is recommended in this standard that 2 (co-sited) be used to record data, in order to improve the image quality when viewed on TV systems. When this field does not exist, the reader shall assume the TIFF default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is recommended. If the reader does not have the capability of supporting both kinds of , it shall follow the TIFF default regardless of the value in this field. It is preferable that readers be able to support both centered and co-sited positioning. -ReferenceBlackWhite, 532, 0x0214, Image, Exif.Image.ReferenceBlackWhite, Rational, The reference black point value and reference white point value. No defaults are given in TIFF, but the values below are given as defaults here. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability these conditions. -XMLPacket, 700, 0x02bc, Image, Exif.Image.XMLPacket, Byte, XMP Metadata (Adobe technote 9-14-02) -Rating, 18246, 0x4746, Image, Exif.Image.Rating, Short, Rating tag used by Windows -RatingPercent, 18249, 0x4749, Image, Exif.Image.RatingPercent, Short, Rating tag used by Windows, value in percent -ImageID, 32781, 0x800d, Image, Exif.Image.ImageID, Ascii, ImageID is the full pathname of the original, high-resolution image, or any other identifying string that uniquely identifies the original image (Adobe OPI). -CFARepeatPatternDim, 33421, 0x828d, Image, Exif.Image.CFARepeatPatternDim, Short, Contains two values representing the minimum rows and columns to define the repeating patterns of the color filter array -CFAPattern, 33422, 0x828e, Image, Exif.Image.CFAPattern, Byte, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods -BatteryLevel, 33423, 0x828f, Image, Exif.Image.BatteryLevel, Rational, Contains a value of the battery level as a fraction or string -Copyright, 33432, 0x8298, Image, Exif.Image.Copyright, Ascii, Copyright information. In this standard the tag is used to indicate both the photographer and editor copyrights. It is the copyright notice of the person or organization claiming rights to the image. The Interoperability copyright statement including date and rights should be written in this field; e.g., "Copyright, John Smith, 19xx. All rights reserved.". In this standard the field records both the photographer and editor copyrights, with each recorded in a separate part of the statement. When there is a clear distinction between the photographer and editor copyrights, these are to be written in the order of photographer followed by editor copyright, separated by NULL (in this case since the statement also ends with a NULL, there are two NULL codes). When only the photographer copyright is given, it is terminated by one NULL code . When only the editor copyright is given, the photographer copyright part consists of one space followed by a terminating NULL code, then the editor copyright is given. When the field is left blank, it is treated as unknown. -ExposureTime, 33434, 0x829a, Image, Exif.Image.ExposureTime, Rational, Exposure time, given in seconds. -FNumber, 33437, 0x829d, Image, Exif.Image.FNumber, Rational, The F number. -IPTCNAA, 33723, 0x83bb, Image, Exif.Image.IPTCNAA, Long, Contains an IPTC/NAA record -ImageResources, 34377, 0x8649, Image, Exif.Image.ImageResources, Byte, Contains information embedded by the Adobe Photoshop application -ExifTag, 34665, 0x8769, Image, Exif.Image.ExifTag, Long, A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure as that of the IFD specified in TIFF. ordinarily, however, it does not contain image data as in the case of TIFF. -InterColorProfile, 34675, 0x8773, Image, Exif.Image.InterColorProfile, Undefined, Contains an InterColor Consortium (ICC) format color space characterization/profile -ExposureProgram, 34850, 0x8822, Image, Exif.Image.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Image, Exif.Image.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. -GPSTag, 34853, 0x8825, Image, Exif.Image.GPSTag, Long, A pointer to the GPS Info IFD. The Interoperability structure of the GPS Info IFD, like that of Exif IFD, has no image data. -ISOSpeedRatings, 34855, 0x8827, Image, Exif.Image.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Image, Exif.Image.OECF, Undefined, Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524. -Interlace, 34857, 0x8829, Image, Exif.Image.Interlace, Short, Indicates the field number of multifield images. -TimeZoneOffset, 34858, 0x882a, Image, Exif.Image.TimeZoneOffset, SShort, This optional tag encodes the time zone of the camera clock (relativeto Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the picture was taken. It may also contain the time zone offsetof the clock used to create the DateTime tag-value when the image wasmodified. -SelfTimerMode, 34859, 0x882b, Image, Exif.Image.SelfTimerMode, Short, Number of seconds image capture was delayed from button press. -DateTimeOriginal, 36867, 0x9003, Image, Exif.Image.DateTimeOriginal, Ascii, The date and time when the original image data was generated. -CompressedBitsPerPixel, 37122, 0x9102, Image, Exif.Image.CompressedBitsPerPixel, Rational, Specific to compressed data; states the compressed bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Image, Exif.Image.ShutterSpeedValue, SRational, Shutter speed. -ApertureValue, 37378, 0x9202, Image, Exif.Image.ApertureValue, Rational, The lens aperture. -BrightnessValue, 37379, 0x9203, Image, Exif.Image.BrightnessValue, SRational, The value of brightness. -ExposureBiasValue, 37380, 0x9204, Image, Exif.Image.ExposureBiasValue, SRational, The exposure bias. -MaxApertureValue, 37381, 0x9205, Image, Exif.Image.MaxApertureValue, Rational, The smallest F number of the lens. -SubjectDistance, 37382, 0x9206, Image, Exif.Image.SubjectDistance, SRational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Image, Exif.Image.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Image, Exif.Image.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Image, Exif.Image.Flash, Short, Indicates the status of flash when the image was shot. -FocalLength, 37386, 0x920a, Image, Exif.Image.FocalLength, Rational, The actual focal length of the lens, in mm. -FlashEnergy, 37387, 0x920b, Image, Exif.Image.FlashEnergy, Rational, Amount of flash energy (BCPS). -SpatialFrequencyResponse, 37388, 0x920c, Image, Exif.Image.SpatialFrequencyResponse, Undefined, SFR of the camera. -Noise, 37389, 0x920d, Image, Exif.Image.Noise, Undefined, Noise measurement values. -FocalPlaneXResolution, 37390, 0x920e, Image, Exif.Image.FocalPlaneXResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth direction for main image. -FocalPlaneYResolution, 37391, 0x920f, Image, Exif.Image.FocalPlaneYResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength direction for main image. -FocalPlaneResolutionUnit, 37392, 0x9210, Image, Exif.Image.FocalPlaneResolutionUnit, Short, Unit of measurement for FocalPlaneXResolution(37390) and FocalPlaneYResolution(37391). -ImageNumber, 37393, 0x9211, Image, Exif.Image.ImageNumber, Long, Number assigned to an image, e.g., in a chained image burst. -SecurityClassification, 37394, 0x9212, Image, Exif.Image.SecurityClassification, Ascii, Security classification assigned to the image. -ImageHistory, 37395, 0x9213, Image, Exif.Image.ImageHistory, Ascii, Record of what has been done to the image. -SubjectLocation, 37396, 0x9214, Image, Exif.Image.SubjectLocation, Short, Indicates the location and area of the main subject in the overall scene. -ExposureIndex, 37397, 0x9215, Image, Exif.Image.ExposureIndex, Rational, Encodes the camera exposure index setting when image was captured. -TIFFEPStandardID, 37398, 0x9216, Image, Exif.Image.TIFFEPStandardID, Byte, Contains four ASCII characters representing the TIFF/EP standard version of a TIFF/EP file, eg '1', '0', '0', '0' -SensingMethod, 37399, 0x9217, Image, Exif.Image.SensingMethod, Short, Type of image sensor. -XPTitle, 40091, 0x9c9b, Image, Exif.Image.XPTitle, Byte, Title tag used by Windows, encoded in UCS2 -XPComment, 40092, 0x9c9c, Image, Exif.Image.XPComment, Byte, Comment tag used by Windows, encoded in UCS2 -XPAuthor, 40093, 0x9c9d, Image, Exif.Image.XPAuthor, Byte, Author tag used by Windows, encoded in UCS2 -XPKeywords, 40094, 0x9c9e, Image, Exif.Image.XPKeywords, Byte, Keywords tag used by Windows, encoded in UCS2 -XPSubject, 40095, 0x9c9f, Image, Exif.Image.XPSubject, Byte, Subject tag used by Windows, encoded in UCS2 -PrintImageMatching, 50341, 0xc4a5, Image, Exif.Image.PrintImageMatching, Undefined, Print Image Matching, description needed. -DNGVersion, 50706, 0xc612, Image, Exif.Image.DNGVersion, Byte, This tag encodes the DNG four-tier version number. For files compliant with version 1.1.0.0 of the DNG specification, this tag should contain the bytes: 1, 1, 0, 0. -DNGBackwardVersion, 50707, 0xc613, Image, Exif.Image.DNGBackwardVersion, Byte, This tag specifies the oldest version of the Digital Negative specification for which a file is compatible. Readers shouldnot attempt to read a file if this tag specifies a version number that is higher than the version number of the specification the reader was based on. In addition to checking the version tags, readers should, for all tags, check the types, counts, and values, to verify it is able to correctly read the file. -UniqueCameraModel, 50708, 0xc614, Image, Exif.Image.UniqueCameraModel, Ascii, Defines a unique, non-localized name for the camera model that created the image in the raw file. This name should include the manufacturer's name to avoid conflicts, and should not be localized, even if the camera name itself is localized for different markets (see LocalizedCameraModel). This string may be used by reader software to index into per-model preferences and replacement profiles. -LocalizedCameraModel, 50709, 0xc615, Image, Exif.Image.LocalizedCameraModel, Byte, Similar to the UniqueCameraModel field, except the name can be localized for different markets to match the localization of the camera name. -CFAPlaneColor, 50710, 0xc616, Image, Exif.Image.CFAPlaneColor, Byte, Provides a mapping between the values in the CFAPattern tag and the plane numbers in LinearRaw space. This is a required tag for non-RGB CFA images. -CFALayout, 50711, 0xc617, Image, Exif.Image.CFALayout, Short, Describes the spatial layout of the CFA. -LinearizationTable, 50712, 0xc618, Image, Exif.Image.LinearizationTable, Short, Describes a lookup table that maps stored values into linear values. This tag is typically used to increase compression ratios by storing the raw data in a non-linear, more visually uniform space with fewer total encoding levels. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelRepeatDim, 50713, 0xc619, Image, Exif.Image.BlackLevelRepeatDim, Short, Specifies repeat pattern size for the BlackLevel tag. -BlackLevel, 50714, 0xc61a, Image, Exif.Image.BlackLevel, Rational, Specifies the zero light (a.k.a. thermal black or black current) encoding level, as a repeating pattern. The origin of this pattern is the top-left corner of the ActiveArea rectangle. The values are stored in row-column-sample scan order. -BlackLevelDeltaH, 50715, 0xc61b, Image, Exif.Image.BlackLevelDeltaH, SRational, If the zero light encoding level is a function of the image column, BlackLevelDeltaH specifies the difference between the zero light encoding level for each column and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelDeltaV, 50716, 0xc61c, Image, Exif.Image.BlackLevelDeltaV, SRational, If the zero light encoding level is a function of the image row, this tag specifies the difference between the zero light encoding level for each row and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -WhiteLevel, 50717, 0xc61d, Image, Exif.Image.WhiteLevel, Short, This tag specifies the fully saturated encoding level for the raw sample values. Saturation is caused either by the sensor itself becoming highly non-linear in response, or by the camera's analog to digital converter clipping. -DefaultScale, 50718, 0xc61e, Image, Exif.Image.DefaultScale, Rational, DefaultScale is required for cameras with non-square pixels. It specifies the default scale factors for each direction to convert the image to square pixels. Typically these factors are selected to approximately preserve total pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such as the Fujifilm SuperCCD, these two values should usually differ by a factor of 2.0. -DefaultCropOrigin, 50719, 0xc61f, Image, Exif.Image.DefaultCropOrigin, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropOrigin specifies the origin of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied), relative to the top-left corner of the ActiveArea rectangle. -DefaultCropSize, 50720, 0xc620, Image, Exif.Image.DefaultCropSize, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropSize specifies the size of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied). -ColorMatrix1, 50721, 0xc621, Image, Exif.Image.ColorMatrix1, SRational, ColorMatrix1 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the first calibration illuminant. The matrix values are stored in row scan order. The ColorMatrix1 tag is required for all non-monochrome DNG files. -ColorMatrix2, 50722, 0xc622, Image, Exif.Image.ColorMatrix2, SRational, ColorMatrix2 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the second calibration illuminant. The matrix values are stored in row scan order. -CameraCalibration1, 50723, 0xc623, Image, Exif.Image.CameraCalibration1, SRational, CameraClalibration1 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the first calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix1 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -CameraCalibration2, 50724, 0xc624, Image, Exif.Image.CameraCalibration2, SRational, CameraCalibration2 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the second calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix2 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -ReductionMatrix1, 50725, 0xc625, Image, Exif.Image.ReductionMatrix1, SRational, ReductionMatrix1 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the first calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -ReductionMatrix2, 50726, 0xc626, Image, Exif.Image.ReductionMatrix2, SRational, ReductionMatrix2 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the second calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -AnalogBalance, 50727, 0xc627, Image, Exif.Image.AnalogBalance, Rational, Normally the stored raw values are not white balanced, since any digital white balancing will reduce the dynamic range of the final image if the user decides to later adjust the white balance; however, if camera hardware is capable of white balancing the color channels before the signal is digitized, it can improve the dynamic range of the final image. AnalogBalance defines the gain, either analog (recommended) or digital (not recommended) that has been applied the stored raw values. -AsShotNeutral, 50728, 0xc628, Image, Exif.Image.AsShotNeutral, Short, Specifies the selected white balance at time of capture, encoded as the coordinates of a perfectly neutral color in linear reference space values. The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag. -AsShotWhiteXY, 50729, 0xc629, Image, Exif.Image.AsShotWhiteXY, Rational, Specifies the selected white balance at time of capture, encoded as x-y chromaticity coordinates. The inclusion of this tag precludes the inclusion of the AsShotNeutral tag. -BaselineExposure, 50730, 0xc62a, Image, Exif.Image.BaselineExposure, SRational, Camera models vary in the trade-off they make between highlight headroom and shadow noise. Some leave a significant amount of highlight headroom during a normal exposure. This allows significant negative exposure compensation to be applied during raw conversion, but also means normal exposures will contain more shadow noise. Other models leave less headroom during normal exposures. This allows for less negative exposure compensation, but results in lower shadow noise for normal exposures. Because of these differences, a raw converter needs to vary the zero point of its exposure compensation control from model to model. BaselineExposure specifies by how much (in EV units) to move the zero point. Positive values result in brighter default results, while negative values result in darker default results. -BaselineNoise, 50731, 0xc62b, Image, Exif.Image.BaselineNoise, Rational, Specifies the relative noise level of the camera model at a baseline ISO value of 100, compared to a reference camera model. Since noise levels tend to vary approximately with the square root of the ISO value, a raw converter can use this value, combined with the current ISO, to estimate the relative noise level of the current image. -BaselineSharpness, 50732, 0xc62c, Image, Exif.Image.BaselineSharpness, Rational, Specifies the relative amount of sharpening required for this camera model, compared to a reference camera model. Camera models vary in the strengths of their anti-aliasing filters. Cameras with weak or no filters require less sharpening than cameras with strong anti-aliasing filters. -BayerGreenSplit, 50733, 0xc62d, Image, Exif.Image.BayerGreenSplit, Long, Only applies to CFA images using a Bayer pattern filter array. This tag specifies, in arbitrary units, how closely the values of the green pixels in the blue/green rows track the values of the green pixels in the red/green rows. A value of zero means the two kinds of green pixels track closely, while a non-zero value means they sometimes diverge. The useful range for this tag is from 0 (no divergence) to about 5000 (quite large divergence). -LinearResponseLimit, 50734, 0xc62e, Image, Exif.Image.LinearResponseLimit, Rational, Some sensors have an unpredictable non-linearity in their response as they near the upper limit of their encoding range. This non-linearity results in color shifts in the highlight areas of the resulting image unless the raw converter compensates for this effect. LinearResponseLimit specifies the fraction of the encoding range above which the response may become significantly non-linear. -CameraSerialNumber, 50735, 0xc62f, Image, Exif.Image.CameraSerialNumber, Ascii, CameraSerialNumber contains the serial number of the camera or camera body that captured the image. -LensInfo, 50736, 0xc630, Image, Exif.Image.LensInfo, Rational, Contains information about the lens that captured the image. If the minimum f-stops are unknown, they should be encoded as 0/0. -ChromaBlurRadius, 50737, 0xc631, Image, Exif.Image.ChromaBlurRadius, Rational, ChromaBlurRadius provides a hint to the DNG reader about how much chroma blur should be applied to the image. If this tag is omitted, the reader will use its default amount of chroma blurring. Normally this tag is only included for non-CFA images, since the amount of chroma blur required for mosaic images is highly dependent on the de-mosaic algorithm, in which case the DNG reader's default value is likely optimized for its particular de-mosaic algorithm. -AntiAliasStrength, 50738, 0xc632, Image, Exif.Image.AntiAliasStrength, Rational, Provides a hint to the DNG reader about how strong the camera's anti-alias filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is prone to aliasing artifacts with some subjects), while a value of 1.0 means a strong anti-alias filter (i.e., the camera almost never has aliasing artifacts). -ShadowScale, 50739, 0xc633, Image, Exif.Image.ShadowScale, SRational, This tag is used by Adobe Camera Raw to control the sensitivity of its 'Shadows' slider. -DNGPrivateData, 50740, 0xc634, Image, Exif.Image.DNGPrivateData, Byte, Provides a way for camera manufacturers to store private data in the DNG file for use by their own raw converters, and to have that data preserved by programs that edit DNG files. -MakerNoteSafety, 50741, 0xc635, Image, Exif.Image.MakerNoteSafety, Short, MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is safe to preserve along with the rest of the EXIF data. File browsers and other image management software processing an image with a preserved MakerNote should be aware that any thumbnail image embedded in the MakerNote may be stale, and may not reflect the current state of the full size image. -CalibrationIlluminant1, 50778, 0xc65a, Image, Exif.Image.CalibrationIlluminant1, Short, The illuminant used for the first set of color calibration tags (ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for this tag are the same as the legal values for the LightSource EXIF tag. -CalibrationIlluminant2, 50779, 0xc65b, Image, Exif.Image.CalibrationIlluminant2, Short, The illuminant used for an optional second set of color calibration tags (ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for this tag are the same as the legal values for the CalibrationIlluminant1 tag; however, if both are included, neither is allowed to have a value of 0 (unknown). -BestQualityScale, 50780, 0xc65c, Image, Exif.Image.BestQualityScale, Rational, For some cameras, the best possible image quality is not achieved by preserving the total pixel count during conversion. For example, Fujifilm SuperCCD images have maximum detail when their total pixel count is doubled. This tag specifies the amount by which the values of the DefaultScale tag need to be multiplied to achieve the best quality image size. -RawDataUniqueID, 50781, 0xc65d, Image, Exif.Image.RawDataUniqueID, Byte, This tag contains a 16-byte unique identifier for the raw image data in the DNG file. DNG readers can use this tag to recognize a particular raw image, even if the file's name or the metadata contained in the file has been changed. If a DNG writer creates such an identifier, it should do so using an algorithm that will ensure that it is very unlikely two different images will end up having the same identifier. -OriginalRawFileName, 50827, 0xc68b, Image, Exif.Image.OriginalRawFileName, Byte, If the DNG file was converted from a non-DNG raw file, then this tag contains the file name of that original raw file. -OriginalRawFileData, 50828, 0xc68c, Image, Exif.Image.OriginalRawFileData, Undefined, If the DNG file was converted from a non-DNG raw file, then this tag contains the compressed contents of that original raw file. The contents of this tag always use the big-endian byte order. The tag contains a sequence of data blocks. Future versions of the DNG specification may define additional data blocks, so DNG readers should ignore extra bytes when parsing this tag. DNG readers should also detect the case where data blocks are missing from the end of the sequence, and should assume a default value for all the missing blocks. There are no padding or alignment bytes between data blocks. -ActiveArea, 50829, 0xc68d, Image, Exif.Image.ActiveArea, Short, This rectangle defines the active (non-masked) pixels of the sensor. The order of the rectangle coordinates is: top, left, bottom, right. -MaskedAreas, 50830, 0xc68e, Image, Exif.Image.MaskedAreas, Short, This tag contains a list of non-overlapping rectangle coordinates of fully masked pixels, which can be optionally used by DNG readers to measure the black encoding level. The order of each rectangle's coordinates is: top, left, bottom, right. If the raw image data has already had its black encoding level subtracted, then this tag should not be used, since the masked pixels are no longer useful. -AsShotICCProfile, 50831, 0xc68f, Image, Exif.Image.AsShotICCProfile, Undefined, This tag contains an ICC profile that, in conjunction with the AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to specify a default color rendering from camera color space coordinates (linear reference values) into the ICC profile connection space. The ICC profile connection space is an output referred colorimetric space, whereas the other color calibration tags in DNG specify a conversion into a scene referred colorimetric space. This means that the rendering in this profile should include any desired tone and gamut mapping needed to convert between scene referred values and output referred values. -AsShotPreProfileMatrix, 50832, 0xc690, Image, Exif.Image.AsShotPreProfileMatrix, SRational, This tag is used in conjunction with the AsShotICCProfile tag. It specifies a matrix that should be applied to the camera color space coordinates before processing the values through the ICC profile specified in the AsShotICCProfile tag. The matrix is stored in the row scan order. If ColorPlanes is greater than three, then this matrix can (but is not required to) reduce the dimensionality of the color data down to three components, in which case the AsShotICCProfile should have three rather than ColorPlanes input components. -CurrentICCProfile, 50833, 0xc691, Image, Exif.Image.CurrentICCProfile, Undefined, This tag is used in conjunction with the CurrentPreProfileMatrix tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -CurrentPreProfileMatrix, 50834, 0xc692, Image, Exif.Image.CurrentPreProfileMatrix, SRational, This tag is used in conjunction with the CurrentICCProfile tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -ColorimetricReference, 50879, 0xc6bf, Image, Exif.Image.ColorimetricReference, Short, The DNG color model documents a transform between camera colors and CIE XYZ values. This tag describes the colorimetric reference for the CIE XYZ values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-referred, using the ICC profile perceptual dynamic range. This tag allows output-referred data to be stored in DNG files and still processed correctly by DNG readers. -CameraCalibrationSignature, 50931, 0xc6f3, Image, Exif.Image.CameraCalibrationSignature, Byte, A UTF-8 encoded string associated with the CameraCalibration1 and CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags should only be used in the DNG color transform if the string stored in the CameraCalibrationSignature tag exactly matches the string stored in the ProfileCalibrationSignature tag for the selected camera profile. -ProfileCalibrationSignature, 50932, 0xc6f4, Image, Exif.Image.ProfileCalibrationSignature, Byte, A UTF-8 encoded string associated with the camera profile tags. The CameraCalibration1 and CameraCalibration2 tags should only be used in the DNG color transfer if the string stored in the CameraCalibrationSignature tag exactly matches the string stored in the ProfileCalibrationSignature tag for the selected camera profile. -AsShotProfileName, 50934, 0xc6f6, Image, Exif.Image.AsShotProfileName, Byte, A UTF-8 encoded string containing the name of the "as shot" camera profile, if any. -NoiseReductionApplied, 50935, 0xc6f7, Image, Exif.Image.NoiseReductionApplied, Rational, This tag indicates how much noise reduction has been applied to the raw data on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has been applied. A 1.0 value indicates that the "ideal" amount of noise reduction has been applied, i.e. that the DNG reader should not apply additional noise reduction by default. A value of 0/0 indicates that this parameter is unknown. -ProfileName, 50936, 0xc6f8, Image, Exif.Image.ProfileName, Byte, A UTF-8 encoded string containing the name of the camera profile. This tag is optional if there is only a single camera profile stored in the file but is required for all camera profiles if there is more than one camera profile stored in the file. -ProfileHueSatMapDims, 50937, 0xc6f9, Image, Exif.Image.ProfileHueSatMapDims, Long, This tag specifies the number of input samples in each dimension of the hue/saturation/value mapping tables. The data for these tables are stored in ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case has ValueDivisions equal to 1, so only hue and saturation are used as inputs to the mapping table. -ProfileHueSatMapData1, 50938, 0xc6fa, Image, Exif.Image.ProfileHueSatMapData1, Float, This tag contains the data for the first hue/saturation/value mapping table. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees; the second entry is saturation scale factor; and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -ProfileHueSatMapData2, 50939, 0xc6fb, Image, Exif.Image.ProfileHueSatMapData2, Float, This tag contains the data for the second hue/saturation/value mapping table. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees; the second entry is a saturation scale factor; and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -ProfileToneCurve, 50940, 0xc6fc, Image, Exif.Image.ProfileToneCurve, Float, This tag contains a default tone curve that can be applied while processing the image as a starting point for user adjustments. The curve is specified as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each sample has an input value in the range of 0.0 to 1.0, and an output value in the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and the last sample is required to be (1.0, 1.0). Interpolated the curve using a cubic spline. -ProfileEmbedPolicy, 50941, 0xc6fd, Image, Exif.Image.ProfileEmbedPolicy, Long, This tag contains information about the usage rules for the associated camera profile. -ProfileCopyright, 50942, 0xc6fe, Image, Exif.Image.ProfileCopyright, Byte, A UTF-8 encoded string containing the copyright information for the camera profile. This string always should be preserved along with the other camera profile tags. -ForwardMatrix1, 50964, 0xc714, Image, Exif.Image.ForwardMatrix1, SRational, This tag defines a matrix that maps white balanced camera colors to XYZ D50 colors. -ForwardMatrix2, 50965, 0xc715, Image, Exif.Image.ForwardMatrix2, SRational, This tag defines a matrix that maps white balanced camera colors to XYZ D50 colors. -PreviewApplicationName, 50966, 0xc716, Image, Exif.Image.PreviewApplicationName, Byte, A UTF-8 encoded string containing the name of the application that created the preview stored in the IFD. -PreviewApplicationVersion, 50967, 0xc717, Image, Exif.Image.PreviewApplicationVersion, Byte, A UTF-8 encoded string containing the version number of the application that created the preview stored in the IFD. -PreviewSettingsName, 50968, 0xc718, Image, Exif.Image.PreviewSettingsName, Byte, A UTF-8 encoded string containing the name of the conversion settings (for example, snapshot name) used for the preview stored in the IFD. -PreviewSettingsDigest, 50969, 0xc719, Image, Exif.Image.PreviewSettingsDigest, Byte, A unique ID of the conversion settings (for example, MD5 digest) used to render the preview stored in the IFD. -PreviewColorSpace, 50970, 0xc71a, Image, Exif.Image.PreviewColorSpace, Long, This tag specifies the color space in which the rendered preview in this IFD is stored. The default value for this tag is sRGB for color previews and Gray Gamma 2.2 for monochrome previews. -PreviewDateTime, 50971, 0xc71b, Image, Exif.Image.PreviewDateTime, Ascii, This tag is an ASCII string containing the name of the date/time at which the preview stored in the IFD was rendered. The date/time is encoded using ISO 8601 format. -RawImageDigest, 50972, 0xc71c, Image, Exif.Image.RawImageDigest, Undefined, This tag is an MD5 digest of the raw image data. All pixels in the image are processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep (16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The data for each pixel is processed in little-endian byte order. -OriginalRawFileDigest, 50973, 0xc71d, Image, Exif.Image.OriginalRawFileDigest, Undefined, This tag is an MD5 digest of the data stored in the OriginalRawFileData tag. -SubTileBlockSize, 50974, 0xc71e, Image, Exif.Image.SubTileBlockSize, Long, Normally, the pixels within a tile are stored in simple row-scan order. This tag specifies that the pixels within a tile should be grouped first into rectangular blocks of the specified size. These blocks are stored in row-scan order. Within each block, the pixels are stored in row-scan order. The use of a non-default value for this tag requires setting the DNGBackwardVersion tag to at least 1.2.0.0. -RowInterleaveFactor, 50975, 0xc71f, Image, Exif.Image.RowInterleaveFactor, Long, This tag specifies that rows of the image are stored in interleaved order. The value of the tag specifies the number of interleaved fields. The use of a non-default value for this tag requires setting the DNGBackwardVersion tag to at least 1.2.0.0. -ProfileLookTableDims, 50981, 0xc725, Image, Exif.Image.ProfileLookTableDims, Long, This tag specifies the number of input samples in each dimension of a default "look" table. The data for this table is stored in the ProfileLookTableData tag. -ProfileLookTableData, 50982, 0xc726, Image, Exif.Image.ProfileLookTableData, Float, This tag contains a default "look" table that can be applied while processing the image as a starting point for user adjustment. This table uses the same format as the tables stored in the ProfileHueSatMapData1 and ProfileHueSatMapData2 tags, and is applied in the same color space. However, it should be applied later in the processing pipe, after any exposure compensation and/or fill light stages, but before any tone curve stage. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees, the second entry is a saturation scale factor, and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -OpcodeList1, 51008, 0xc740, Image, Exif.Image.OpcodeList1, Undefined, Specifies the list of opcodes that should be applied to the raw image, as read directly from the file. -OpcodeList2, 51009, 0xc741, Image, Exif.Image.OpcodeList2, Undefined, Specifies the list of opcodes that should be applied to the raw image, just after it has been mapped to linear reference values. -OpcodeList3, 51022, 0xc74e, Image, Exif.Image.OpcodeList3, Undefined, Specifies the list of opcodes that should be applied to the raw image, just after it has been demosaiced. -NoiseProfile, 51041, 0xc761, Image, Exif.Image.NoiseProfile, Double, NoiseProfile describes the amount of noise in a raw image. Specifically, this tag models the amount of signal-dependent photon (shot) noise and signal-independent sensor readout noise, two common sources of noise in raw images. The model assumes that the noise is white and spatially independent, ignoring fixed pattern effects and other sources of noise (e.g., pixel response non-uniformity, spatially-dependent thermal effects, etc.). -ExposureTime, 33434, 0x829a, Photo, Exif.Photo.ExposureTime, Rational, Exposure time, given in seconds (sec). -FNumber, 33437, 0x829d, Photo, Exif.Photo.FNumber, Rational, The F number. -ExposureProgram, 34850, 0x8822, Photo, Exif.Photo.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Photo, Exif.Photo.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. The tag value is an ASCII string compatible with the standard developed by the ASTM Technical Committee. -ISOSpeedRatings, 34855, 0x8827, Photo, Exif.Photo.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Photo, Exif.Photo.OECF, Undefined, Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO 14524. is the relationship between the camera optical input and the image values. -SensitivityType, 34864, 0x8830, Photo, Exif.Photo.SensitivityType, Short, The SensitivityType tag indicates PhotographicSensitivity tag. which one of the parameters of ISO12232 is the Although it is an optional tag, it should be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, or 7 may be used in case that the values of plural parameters are the same. -StandardOutputSensitivity, 34865, 0x8831, Photo, Exif.Photo.StandardOutputSensitivity, Long, This tag indicates the standard output sensitivity value of a camera or input device defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -RecommendedExposureIndex, 34866, 0x8832, Photo, Exif.Photo.RecommendedExposureIndex, Long, This tag indicates the recommended exposure index value of a camera or input device defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -ISOSpeed, 34867, 0x8833, Photo, Exif.Photo.ISOSpeed, Long, This tag indicates the ISO speed value of a camera or input device that is defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -ISOSpeedLatitudeyyy, 34868, 0x8834, Photo, Exif.Photo.ISOSpeedLatitudeyyy, Long, This tag indicates the ISO speed latitude yyy value of a camera or input device that is defined in ISO 12232. However, this tag shall not be recorded without ISOSpeed and ISOSpeedLatitudezzz. -ISOSpeedLatitudezzz, 34869, 0x8835, Photo, Exif.Photo.ISOSpeedLatitudezzz, Long, This tag indicates the ISO speed latitude zzz value of a camera or input device that is defined in ISO 12232. However, this tag shall not be recorded without ISOSpeed and ISOSpeedLatitudeyyy. -ExifVersion, 36864, 0x9000, Photo, Exif.Photo.ExifVersion, Undefined, The version of this standard supported. Nonexistence of this field is taken to mean nonconformance to the standard. -DateTimeOriginal, 36867, 0x9003, Photo, Exif.Photo.DateTimeOriginal, Ascii, The date and time when the original image data was generated. For a digital still camera the date and time the picture was taken are recorded. -DateTimeDigitized, 36868, 0x9004, Photo, Exif.Photo.DateTimeDigitized, Ascii, The date and time when the image was stored as digital data. -ComponentsConfiguration, 37121, 0x9101, Photo, Exif.Photo.ComponentsConfiguration, Undefined, Information specific to compressed data. The channels of each component are arranged in order from the 1st component to the 4th. For uncompressed data the data arrangement is given in the tag. However, since can only express the order of Y, Cb and Cr, this tag is provided for cases when compressed data uses components other than Y, Cb, and Cr and to enable support of other sequences. -CompressedBitsPerPixel, 37122, 0x9102, Photo, Exif.Photo.CompressedBitsPerPixel, Rational, Information specific to compressed data. The compression mode used for a compressed image is indicated in unit bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Photo, Exif.Photo.ShutterSpeedValue, SRational, Shutter speed. The unit is the APEX (Additive System of Photographic Exposure) setting. -ApertureValue, 37378, 0x9202, Photo, Exif.Photo.ApertureValue, Rational, The lens aperture. The unit is the APEX value. -BrightnessValue, 37379, 0x9203, Photo, Exif.Photo.BrightnessValue, SRational, The value of brightness. The unit is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -ExposureBiasValue, 37380, 0x9204, Photo, Exif.Photo.ExposureBiasValue, SRational, The exposure bias. The units is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -MaxApertureValue, 37381, 0x9205, Photo, Exif.Photo.MaxApertureValue, Rational, The smallest F number of the lens. The unit is the APEX value. Ordinarily it is given in the range of 00.00 to 99.99, but it is not limited to this range. -SubjectDistance, 37382, 0x9206, Photo, Exif.Photo.SubjectDistance, Rational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Photo, Exif.Photo.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Photo, Exif.Photo.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Photo, Exif.Photo.Flash, Short, This tag is recorded when an image is taken using a strobe light (flash). -FocalLength, 37386, 0x920a, Photo, Exif.Photo.FocalLength, Rational, The actual focal length of the lens, in mm. Conversion is not made to the focal length of a 35 mm film camera. -SubjectArea, 37396, 0x9214, Photo, Exif.Photo.SubjectArea, Short, This tag indicates the location and area of the main subject in the overall scene. -MakerNote, 37500, 0x927c, Photo, Exif.Photo.MakerNote, Undefined, A tag for manufacturers of Exif writers to record any desired information. The contents are up to the manufacturer. -UserComment, 37510, 0x9286, Photo, Exif.Photo.UserComment, Comment, A tag for Exif users to write keywords or comments on the image besides those in , and without the character code limitations of the tag. -SubSecTime, 37520, 0x9290, Photo, Exif.Photo.SubSecTime, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeOriginal, 37521, 0x9291, Photo, Exif.Photo.SubSecTimeOriginal, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeDigitized, 37522, 0x9292, Photo, Exif.Photo.SubSecTimeDigitized, Ascii, A tag used to record fractions of seconds for the tag. -FlashpixVersion, 40960, 0xa000, Photo, Exif.Photo.FlashpixVersion, Undefined, The FlashPix format version supported by a FPXR file. -ColorSpace, 40961, 0xa001, Photo, Exif.Photo.ColorSpace, Short, The color space information tag is always recorded as the color space specifier. Normally sRGB is used to define the color space based on the PC monitor conditions and environment. If a color space other than sRGB is used, Uncalibrated is set. Image data recorded as Uncalibrated can be treated as sRGB when it is converted to FlashPix. -PixelXDimension, 40962, 0xa002, Photo, Exif.Photo.PixelXDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid width of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. -PixelYDimension, 40963, 0xa003, Photo, Exif.Photo.PixelYDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid height of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. Since data padding is unnecessary in the vertical direction, the number of lines recorded in this valid image height tag will in fact be the same as that recorded in the SOF. -RelatedSoundFile, 40964, 0xa004, Photo, Exif.Photo.RelatedSoundFile, Ascii, This tag is used to record the name of an audio file related to the image data. The only relational information recorded here is the Exif audio file name and extension (an ASCII string consisting of 8 characters + '.' + 3 characters). The path is not recorded. -InteroperabilityTag, 40965, 0xa005, Photo, Exif.Photo.InteroperabilityTag, Long, Interoperability IFD is composed of tags which stores the information to ensure the Interoperability and pointed by the following tag located in Exif IFD. The Interoperability structure of Interoperability IFD is the same as TIFF defined IFD structure but does not contain the image data characteristically compared with normal TIFF IFD. -FlashEnergy, 41483, 0xa20b, Photo, Exif.Photo.FlashEnergy, Rational, Indicates the strobe energy at the time the image is captured, as measured in Beam Candle Power Seconds (BCPS). -SpatialFrequencyResponse, 41484, 0xa20c, Photo, Exif.Photo.SpatialFrequencyResponse, Undefined, This tag records the camera or input device spatial frequency table and SFR values in the direction of image width, image height, and diagonal direction, as specified in ISO 12233. -FocalPlaneXResolution, 41486, 0xa20e, Photo, Exif.Photo.FocalPlaneXResolution, Rational, Indicates the number of pixels in the image width (X) direction per on the camera focal plane. -FocalPlaneYResolution, 41487, 0xa20f, Photo, Exif.Photo.FocalPlaneYResolution, Rational, Indicates the number of pixels in the image height (V) direction per on the camera focal plane. -FocalPlaneResolutionUnit, 41488, 0xa210, Photo, Exif.Photo.FocalPlaneResolutionUnit, Short, Indicates the unit for measuring and . This value is the same as the . -SubjectLocation, 41492, 0xa214, Photo, Exif.Photo.SubjectLocation, Short, Indicates the location of the main subject in the scene. The value of this tag represents the pixel at the center of the main subject relative to the left edge, prior to rotation processing as per the tag. The first value indicates the X column number and second indicates the Y row number. -ExposureIndex, 41493, 0xa215, Photo, Exif.Photo.ExposureIndex, Rational, Indicates the exposure index selected on the camera or input device at the time the image is captured. -SensingMethod, 41495, 0xa217, Photo, Exif.Photo.SensingMethod, Short, Indicates the image sensor type on the camera or input device. -FileSource, 41728, 0xa300, Photo, Exif.Photo.FileSource, Undefined, Indicates the image source. If a DSC recorded the image, this tag value of this tag always be set to 3, indicating that the image was recorded on a DSC. -SceneType, 41729, 0xa301, Photo, Exif.Photo.SceneType, Undefined, Indicates the type of scene. If a DSC recorded the image, this tag value must always be set to 1, indicating that the image was directly photographed. -CFAPattern, 41730, 0xa302, Photo, Exif.Photo.CFAPattern, Undefined, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods. -CustomRendered, 41985, 0xa401, Photo, Exif.Photo.CustomRendered, Short, This tag indicates the use of special processing on image data, such as rendering geared to output. When special processing is performed, the reader is expected to disable or minimize any further processing. -ExposureMode, 41986, 0xa402, Photo, Exif.Photo.ExposureMode, Short, This tag indicates the exposure mode set when the image was shot. In auto-bracketing mode, the camera shoots a series of frames of the same scene at different exposure settings. -WhiteBalance, 41987, 0xa403, Photo, Exif.Photo.WhiteBalance, Short, This tag indicates the white balance mode set when the image was shot. -DigitalZoomRatio, 41988, 0xa404, Photo, Exif.Photo.DigitalZoomRatio, Rational, This tag indicates the digital zoom ratio when the image was shot. If the numerator of the recorded value is 0, this indicates that digital zoom was not used. -FocalLengthIn35mmFilm, 41989, 0xa405, Photo, Exif.Photo.FocalLengthIn35mmFilm, Short, This tag indicates the equivalent focal length assuming a 35mm film camera, in mm. A value of 0 means the focal length is unknown. Note that this tag differs from the tag. -SceneCaptureType, 41990, 0xa406, Photo, Exif.Photo.SceneCaptureType, Short, This tag indicates the type of scene that was shot. It can also be used to record the mode in which the image was shot. Note that this differs from the tag. -GainControl, 41991, 0xa407, Photo, Exif.Photo.GainControl, Short, This tag indicates the degree of overall image gain adjustment. -Contrast, 41992, 0xa408, Photo, Exif.Photo.Contrast, Short, This tag indicates the direction of contrast processing applied by the camera when the image was shot. -Saturation, 41993, 0xa409, Photo, Exif.Photo.Saturation, Short, This tag indicates the direction of saturation processing applied by the camera when the image was shot. -Sharpness, 41994, 0xa40a, Photo, Exif.Photo.Sharpness, Short, This tag indicates the direction of sharpness processing applied by the camera when the image was shot. -DeviceSettingDescription, 41995, 0xa40b, Photo, Exif.Photo.DeviceSettingDescription, Undefined, This tag indicates information on the picture-taking conditions of a particular camera model. The tag is used only to indicate the picture-taking conditions in the reader. -SubjectDistanceRange, 41996, 0xa40c, Photo, Exif.Photo.SubjectDistanceRange, Short, This tag indicates the distance to the subject. -ImageUniqueID, 42016, 0xa420, Photo, Exif.Photo.ImageUniqueID, Ascii, This tag indicates an identifier assigned uniquely to each image. It is recorded as an ASCII string equivalent to hexadecimal notation and 128-bit fixed length. -CameraOwnerName, 42032, 0xa430, Photo, Exif.Photo.CameraOwnerName, Ascii, This tag records the owner of a camera used in photography as an ASCII string. -BodySerialNumber, 42033, 0xa431, Photo, Exif.Photo.BodySerialNumber, Ascii, This tag records the serial number of the body of the camera that was used in photography as an ASCII string. -LensSpecification, 42034, 0xa432, Photo, Exif.Photo.LensSpecification, Rational, This tag notes minimum focal length, maximum focal length, minimum F number in the minimum focal length, and minimum F number in the maximum focal length, which are specification information for the lens that was used in photography. When the minimum F number is unknown, the notation is 0/0 -LensMake, 42035, 0xa433, Photo, Exif.Photo.LensMake, Ascii, This tag records the lens manufactor as an ASCII string. -LensModel, 42036, 0xa434, Photo, Exif.Photo.LensModel, Ascii, This tag records the lens's model name and model number as an ASCII string. -LensSerialNumber, 42037, 0xa435, Photo, Exif.Photo.LensSerialNumber, Ascii, This tag records the serial number of the interchangeable lens that was used in photography as an ASCII string. -InteroperabilityIndex, 1, 0x0001, Iop, Exif.Iop.InteroperabilityIndex, Ascii, Indicates the identification of the Interoperability rule. Use "R98" for stating ExifR98 Rules. Four bytes used including the termination code (NULL). see the separate volume of Recommended Exif Interoperability Rules (ExifR98) for other tags used for ExifR98. -InteroperabilityVersion, 2, 0x0002, Iop, Exif.Iop.InteroperabilityVersion, Undefined, Interoperability version -RelatedImageFileFormat, 4096, 0x1000, Iop, Exif.Iop.RelatedImageFileFormat, Ascii, File format of image file -RelatedImageWidth, 4097, 0x1001, Iop, Exif.Iop.RelatedImageWidth, Long, Image width -RelatedImageLength, 4098, 0x1002, Iop, Exif.Iop.RelatedImageLength, Long, Image height -GPSVersionID, 0, 0x0000, GPSInfo, Exif.GPSInfo.GPSVersionID, Byte, Indicates the version of . The version is given as 2.0.0.0. This tag is mandatory when tag is present. (Note: The tag is given in bytes, unlike the tag. When the version is 2.0.0.0, the tag value is 02000000.H). -GPSLatitudeRef, 1, 0x0001, GPSInfo, Exif.GPSInfo.GPSLatitudeRef, Ascii, Indicates whether the latitude is north or south latitude. The ASCII value 'N' indicates north latitude, and 'S' is south latitude. -GPSLatitude, 2, 0x0002, GPSInfo, Exif.GPSInfo.GPSLatitude, Rational, Indicates the latitude. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is dd/1,mmmm/100,0/1. -GPSLongitudeRef, 3, 0x0003, GPSInfo, Exif.GPSInfo.GPSLongitudeRef, Ascii, Indicates whether the longitude is east or west longitude. ASCII 'E' indicates east longitude, and 'W' is west longitude. -GPSLongitude, 4, 0x0004, GPSInfo, Exif.GPSInfo.GPSLongitude, Rational, Indicates the longitude. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is ddd/1,mmmm/100,0/1. -GPSAltitudeRef, 5, 0x0005, GPSInfo, Exif.GPSInfo.GPSAltitudeRef, Byte, Indicates the altitude used as the reference altitude. If the reference is sea level and the altitude is above sea level, 0 is given. If the altitude is below sea level, a value of 1 is given and the altitude is indicated as an absolute value in the GSPAltitude tag. The reference unit is meters. Note that this tag is BYTE type, unlike other reference tags. -GPSAltitude, 6, 0x0006, GPSInfo, Exif.GPSInfo.GPSAltitude, Rational, Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is expressed as one RATIONAL value. The reference unit is meters. -GPSTimeStamp, 7, 0x0007, GPSInfo, Exif.GPSInfo.GPSTimeStamp, Rational, Indicates the time as UTC (Coordinated Universal Time). is expressed as three RATIONAL values giving the hour, minute, and second (atomic clock). -GPSSatellites, 8, 0x0008, GPSInfo, Exif.GPSInfo.GPSSatellites, Ascii, Indicates the GPS satellites used for measurements. This tag can be used to describe the number of satellites, their ID number, angle of elevation, azimuth, SNR and other information in ASCII notation. The format is not specified. If the GPS receiver is incapable of taking measurements, value of the tag is set to NULL. -GPSStatus, 9, 0x0009, GPSInfo, Exif.GPSInfo.GPSStatus, Ascii, Indicates the status of the GPS receiver when the image is recorded. "A" means measurement is in progress, and "V" means the measurement is Interoperability. -GPSMeasureMode, 10, 0x000a, GPSInfo, Exif.GPSInfo.GPSMeasureMode, Ascii, Indicates the GPS measurement mode. "2" means two-dimensional measurement and "3" means three-dimensional measurement is in progress. -GPSDOP, 11, 0x000b, GPSInfo, Exif.GPSInfo.GPSDOP, Rational, Indicates the GPS DOP (data degree of precision). An HDOP value is written during two-dimensional measurement, and PDOP during three-dimensional measurement. -GPSSpeedRef, 12, 0x000c, GPSInfo, Exif.GPSInfo.GPSSpeedRef, Ascii, Indicates the unit used to express the GPS receiver speed of movement. "K" "M" and "N" represents kilometers per hour, miles per hour, and knots. -GPSSpeed, 13, 0x000d, GPSInfo, Exif.GPSInfo.GPSSpeed, Rational, Indicates the speed of GPS receiver movement. -GPSTrackRef, 14, 0x000e, GPSInfo, Exif.GPSInfo.GPSTrackRef, Ascii, Indicates the reference for giving the direction of GPS receiver movement. "T" denotes true direction and "M" is magnetic direction. -GPSTrack, 15, 0x000f, GPSInfo, Exif.GPSInfo.GPSTrack, Rational, Indicates the direction of GPS receiver movement. The range of values is from 0.00 to 359.99. -GPSImgDirectionRef, 16, 0x0010, GPSInfo, Exif.GPSInfo.GPSImgDirectionRef, Ascii, Indicates the reference for giving the direction of the image when it is captured. "T" denotes true direction and "M" is magnetic direction. -GPSImgDirection, 17, 0x0011, GPSInfo, Exif.GPSInfo.GPSImgDirection, Rational, Indicates the direction of the image when it was captured. The range of values is from 0.00 to 359.99. -GPSMapDatum, 18, 0x0012, GPSInfo, Exif.GPSInfo.GPSMapDatum, Ascii, Indicates the geodetic survey data used by the GPS receiver. If the survey data is restricted to Japan, the value of this tag is "TOKYO" or "WGS-84". -GPSDestLatitudeRef, 19, 0x0013, GPSInfo, Exif.GPSInfo.GPSDestLatitudeRef, Ascii, Indicates whether the latitude of the destination point is north or south latitude. The ASCII value "N" indicates north latitude, and "S" is south latitude. -GPSDestLatitude, 20, 0x0014, GPSInfo, Exif.GPSInfo.GPSDestLatitude, Rational, Indicates the latitude of the destination point. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If latitude is expressed as degrees, minutes and seconds, a typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be dd/1,mmmm/100,0/1. -GPSDestLongitudeRef, 21, 0x0015, GPSInfo, Exif.GPSInfo.GPSDestLongitudeRef, Ascii, Indicates whether the longitude of the destination point is east or west longitude. ASCII "E" indicates east longitude, and "W" is west longitude. -GPSDestLongitude, 22, 0x0016, GPSInfo, Exif.GPSInfo.GPSDestLongitude, Rational, Indicates the longitude of the destination point. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If longitude is expressed as degrees, minutes and seconds, a typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be ddd/1,mmmm/100,0/1. -GPSDestBearingRef, 23, 0x0017, GPSInfo, Exif.GPSInfo.GPSDestBearingRef, Ascii, Indicates the reference used for giving the bearing to the destination point. "T" denotes true direction and "M" is magnetic direction. -GPSDestBearing, 24, 0x0018, GPSInfo, Exif.GPSInfo.GPSDestBearing, Rational, Indicates the bearing to the destination point. The range of values is from 0.00 to 359.99. -GPSDestDistanceRef, 25, 0x0019, GPSInfo, Exif.GPSInfo.GPSDestDistanceRef, Ascii, Indicates the unit used to express the distance to the destination point. "K", "M" and "N" represent kilometers, miles and knots. -GPSDestDistance, 26, 0x001a, GPSInfo, Exif.GPSInfo.GPSDestDistance, Rational, Indicates the distance to the destination point. -GPSProcessingMethod, 27, 0x001b, GPSInfo, Exif.GPSInfo.GPSProcessingMethod, Undefined, A character string recording the name of the method used for location finding. The first byte indicates the character code used, and this is followed by the name of the method. -GPSAreaInformation, 28, 0x001c, GPSInfo, Exif.GPSInfo.GPSAreaInformation, Undefined, A character string recording the name of the GPS area. The first byte indicates the character code used, and this is followed by the name of the GPS area. -GPSDateStamp, 29, 0x001d, GPSInfo, Exif.GPSInfo.GPSDateStamp, Ascii, A character string recording date and time information relative to UTC (Coordinated Universal Time). The format is "YYYY:MM:DD.". -GPSDifferential, 30, 0x001e, GPSInfo, Exif.GPSInfo.GPSDifferential, Short, Indicates whether differential correction is applied to the GPS receiver. -ProcessingSoftware, 11, 0x000b, Image, Exif.Image.ProcessingSoftware, Ascii, The name and version of the software used to post-process the picture. -NewSubfileType, 254, 0x00fe, Image, Exif.Image.NewSubfileType, Long, A general indication of the kind of data contained in this subfile. -SubfileType, 255, 0x00ff, Image, Exif.Image.SubfileType, Short, A general indication of the kind of data contained in this subfile. This field is deprecated. The NewSubfileType field should be used instead. -ImageWidth, 256, 0x0100, Image, Exif.Image.ImageWidth, Long, The number of columns of image data, equal to the number of pixels per row. In JPEG compressed data a JPEG marker is used instead of this tag. -ImageLength, 257, 0x0101, Image, Exif.Image.ImageLength, Long, The number of rows of image data. In JPEG compressed data a JPEG marker is used instead of this tag. -BitsPerSample, 258, 0x0102, Image, Exif.Image.BitsPerSample, Short, The number of bits per image component. In this standard each component of the image is 8 bits, so the value for this tag is 8. See also . In JPEG compressed data a JPEG marker is used instead of this tag. -Compression, 259, 0x0103, Image, Exif.Image.Compression, Short, The compression scheme used for the image data. When a primary image is JPEG compressed, this designation is not necessary and is omitted. When thumbnails use JPEG compression, this tag value is set to 6. -PhotometricInterpretation, 262, 0x0106, Image, Exif.Image.PhotometricInterpretation, Short, The pixel composition. In JPEG compressed data a JPEG marker is used instead of this tag. -Threshholding, 263, 0x0107, Image, Exif.Image.Threshholding, Short, For black and white TIFF files that represent shades of gray, the technique used to convert from gray to black and white pixels. -CellWidth, 264, 0x0108, Image, Exif.Image.CellWidth, Short, The width of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -CellLength, 265, 0x0109, Image, Exif.Image.CellLength, Short, The length of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -FillOrder, 266, 0x010a, Image, Exif.Image.FillOrder, Short, The logical order of bits within a byte -DocumentName, 269, 0x010d, Image, Exif.Image.DocumentName, Ascii, The name of the document from which this image was scanned -ImageDescription, 270, 0x010e, Image, Exif.Image.ImageDescription, Ascii, A character string giving the title of the image. It may be a comment such as "1988 company picnic" or the like. Two-bytes character codes cannot be used. When a 2-bytes code is necessary, the Exif Private tag is to be used. -Make, 271, 0x010f, Image, Exif.Image.Make, Ascii, The manufacturer of the recording equipment. This is the manufacturer of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -Model, 272, 0x0110, Image, Exif.Image.Model, Ascii, The model name or model number of the equipment. This is the model name or number of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -StripOffsets, 273, 0x0111, Image, Exif.Image.StripOffsets, Long, For each strip, the byte offset of that strip. It is recommended that this be selected so the number of strip bytes does not exceed 64 Kbytes. With JPEG compressed data this designation is not needed and is omitted. See also and . -Orientation, 274, 0x0112, Image, Exif.Image.Orientation, Short, The image orientation viewed in terms of rows and columns. -SamplesPerPixel, 277, 0x0115, Image, Exif.Image.SamplesPerPixel, Short, The number of components per pixel. Since this standard applies to RGB and YCbCr images, the value set for this tag is 3. In JPEG compressed data a JPEG marker is used instead of this tag. -RowsPerStrip, 278, 0x0116, Image, Exif.Image.RowsPerStrip, Long, The number of rows per strip. This is the number of rows in the image of one strip when an image is divided into strips. With JPEG compressed data this designation is not needed and is omitted. See also and . -StripByteCounts, 279, 0x0117, Image, Exif.Image.StripByteCounts, Long, The total number of bytes in each strip. With JPEG compressed data this designation is not needed and is omitted. -XResolution, 282, 0x011a, Image, Exif.Image.XResolution, Rational, The number of pixels per in the direction. When the image resolution is unknown, 72 [dpi] is designated. -YResolution, 283, 0x011b, Image, Exif.Image.YResolution, Rational, The number of pixels per in the direction. The same value as is designated. -PlanarConfiguration, 284, 0x011c, Image, Exif.Image.PlanarConfiguration, Short, Indicates whether pixel components are recorded in a chunky or planar format. In JPEG compressed files a JPEG marker is used instead of this tag. If this field does not exist, the TIFF default of 1 (chunky) is assumed. -GrayResponseUnit, 290, 0x0122, Image, Exif.Image.GrayResponseUnit, Short, The precision of the information contained in the GrayResponseCurve. -GrayResponseCurve, 291, 0x0123, Image, Exif.Image.GrayResponseCurve, Short, For grayscale data, the optical density of each possible pixel value. -T4Options, 292, 0x0124, Image, Exif.Image.T4Options, Long, T.4-encoding options. -T6Options, 293, 0x0125, Image, Exif.Image.T6Options, Long, T.6-encoding options. -ResolutionUnit, 296, 0x0128, Image, Exif.Image.ResolutionUnit, Short, The unit for measuring and . The same unit is used for both and . If the image resolution is unknown, 2 (inches) is designated. -TransferFunction, 301, 0x012d, Image, Exif.Image.TransferFunction, Short, A transfer function for the image, described in tabular style. Normally this tag is not necessary, since color space is specified in the color space information tag (). -Software, 305, 0x0131, Image, Exif.Image.Software, Ascii, This tag records the name and version of the software or firmware of the camera or image input device used to generate the image. The detailed format is not specified, but it is recommended that the example shown below be followed. When the field is left blank, it is treated as unknown. -DateTime, 306, 0x0132, Image, Exif.Image.DateTime, Ascii, The date and time of image creation. In Exif standard, it is the date and time the file was changed. -Artist, 315, 0x013b, Image, Exif.Image.Artist, Ascii, This tag records the name of the camera owner, photographer or image creator. The detailed format is not specified, but it is recommended that the information be written as in the example below for ease of Interoperability. When the field is left blank, it is treated as unknown. Ex.) "Camera owner, John Smith; Photographer, Michael Brown; Image creator, Ken James" -HostComputer, 316, 0x013c, Image, Exif.Image.HostComputer, Ascii, This tag records information about the host computer used to generate the image. -Predictor, 317, 0x013d, Image, Exif.Image.Predictor, Short, A predictor is a mathematical operator that is applied to the image data before an encoding scheme is applied. -WhitePoint, 318, 0x013e, Image, Exif.Image.WhitePoint, Rational, The chromaticity of the white point of the image. Normally this tag is not necessary, since color space is specified in the colorspace information tag (). -PrimaryChromaticities, 319, 0x013f, Image, Exif.Image.PrimaryChromaticities, Rational, The chromaticity of the three primary colors of the image. Normally this tag is not necessary, since colorspace is specified in the colorspace information tag (). -ColorMap, 320, 0x0140, Image, Exif.Image.ColorMap, Short, A color map for palette color images. This field defines a Red-Green-Blue color map (often called a lookup table) for palette-color images. In a palette-color image, a pixel value is used to index into an RGB lookup table. -HalftoneHints, 321, 0x0141, Image, Exif.Image.HalftoneHints, Short, The purpose of the HalftoneHints field is to convey to the halftone function the range of gray levels within a colorimetrically-specified image that should retain tonal detail. -TileWidth, 322, 0x0142, Image, Exif.Image.TileWidth, Short, The tile width in pixels. This is the number of columns in each tile. -TileLength, 323, 0x0143, Image, Exif.Image.TileLength, Short, The tile length (height) in pixels. This is the number of rows in each tile. -TileOffsets, 324, 0x0144, Image, Exif.Image.TileOffsets, Short, For each tile, the byte offset of that tile, as compressed and stored on disk. The offset is specified with respect to the beginning of the TIFF file. Note that this implies that each tile has a location independent of the locations of other tiles. -TileByteCounts, 325, 0x0145, Image, Exif.Image.TileByteCounts, Short, For each tile, the number of (compressed) bytes in that tile. See TileOffsets for a description of how the byte counts are ordered. -SubIFDs, 330, 0x014a, Image, Exif.Image.SubIFDs, Long, Defined by Adobe Corporation to enable TIFF Trees within a TIFF file. -InkSet, 332, 0x014c, Image, Exif.Image.InkSet, Short, The set of inks used in a separated (PhotometricInterpretation=5) image. -InkNames, 333, 0x014d, Image, Exif.Image.InkNames, Ascii, The name of each ink used in a separated (PhotometricInterpretation=5) image. -NumberOfInks, 334, 0x014e, Image, Exif.Image.NumberOfInks, Short, The number of inks. Usually equal to SamplesPerPixel, unless there are extra samples. -DotRange, 336, 0x0150, Image, Exif.Image.DotRange, Byte, The component values that correspond to a 0% dot and 100% dot. -TargetPrinter, 337, 0x0151, Image, Exif.Image.TargetPrinter, Ascii, A description of the printing environment for which this separation is intended. -ExtraSamples, 338, 0x0152, Image, Exif.Image.ExtraSamples, Short, Specifies that each pixel has m extra components whose interpretation is defined by one of the values listed below. -SampleFormat, 339, 0x0153, Image, Exif.Image.SampleFormat, Short, This field specifies how to interpret each data sample in a pixel. -SMinSampleValue, 340, 0x0154, Image, Exif.Image.SMinSampleValue, Short, This field specifies the minimum sample value. -SMaxSampleValue, 341, 0x0155, Image, Exif.Image.SMaxSampleValue, Short, This field specifies the maximum sample value. -TransferRange, 342, 0x0156, Image, Exif.Image.TransferRange, Short, Expands the range of the TransferFunction -ClipPath, 343, 0x0157, Image, Exif.Image.ClipPath, Byte, A TIFF ClipPath is intended to mirror the essentials of PostScript's path creation functionality. -XClipPathUnits, 344, 0x0158, Image, Exif.Image.XClipPathUnits, SShort, The number of units that span the width of the image, in terms of integer ClipPath coordinates. -YClipPathUnits, 345, 0x0159, Image, Exif.Image.YClipPathUnits, SShort, The number of units that span the height of the image, in terms of integer ClipPath coordinates. -Indexed, 346, 0x015a, Image, Exif.Image.Indexed, Short, Indexed images are images where the 'pixels' do not represent color values, but rather an index (usually 8-bit) into a separate color table, the ColorMap. -JPEGTables, 347, 0x015b, Image, Exif.Image.JPEGTables, Undefined, This optional tag may be used to encode the JPEG quantization andHuffman tables for subsequent use by the JPEG decompression process. -OPIProxy, 351, 0x015f, Image, Exif.Image.OPIProxy, Short, OPIProxy gives information concerning whether this image is a low-resolution proxy of a high-resolution image (Adobe OPI). -JPEGProc, 512, 0x0200, Image, Exif.Image.JPEGProc, Long, This field indicates the process used to produce the compressed data -JPEGInterchangeFormat, 513, 0x0201, Image, Exif.Image.JPEGInterchangeFormat, Long, The offset to the start byte (SOI) of JPEG compressed thumbnail data. This is not used for primary image JPEG data. -JPEGInterchangeFormatLength, 514, 0x0202, Image, Exif.Image.JPEGInterchangeFormatLength, Long, The number of bytes of JPEG compressed thumbnail data. This is not used for primary image JPEG data. JPEG thumbnails are not divided but are recorded as a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not be recorded. Compressed thumbnails must be recorded in no more than 64 Kbytes, including all other data to be recorded in APP1. -JPEGRestartInterval, 515, 0x0203, Image, Exif.Image.JPEGRestartInterval, Short, This Field indicates the length of the restart interval used in the compressed image data. -JPEGLosslessPredictors, 517, 0x0205, Image, Exif.Image.JPEGLosslessPredictors, Short, This Field points to a list of lossless predictor-selection values, one per component. -JPEGPointTransforms, 518, 0x0206, Image, Exif.Image.JPEGPointTransforms, Short, This Field points to a list of point transform values, one per component. -JPEGQTables, 519, 0x0207, Image, Exif.Image.JPEGQTables, Long, This Field points to a list of offsets to the quantization tables, one per component. -JPEGDCTables, 520, 0x0208, Image, Exif.Image.JPEGDCTables, Long, This Field points to a list of offsets to the DC Huffman tables or the lossless Huffman tables, one per component. -JPEGACTables, 521, 0x0209, Image, Exif.Image.JPEGACTables, Long, This Field points to a list of offsets to the Huffman AC tables, one per component. -YCbCrCoefficients, 529, 0x0211, Image, Exif.Image.YCbCrCoefficients, Rational, The matrix coefficients for transformation from RGB to YCbCr image data. No default is given in TIFF; but here the value given in Appendix E, "Color Space Guidelines", is used as the default. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability this condition. -YCbCrSubSampling, 530, 0x0212, Image, Exif.Image.YCbCrSubSampling, Short, The sampling ratio of chrominance components in relation to the luminance component. In JPEG compressed data a JPEG marker is used instead of this tag. -YCbCrPositioning, 531, 0x0213, Image, Exif.Image.YCbCrPositioning, Short, The position of chrominance components in relation to the luminance component. This field is designated only for JPEG compressed data or uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr = 4:2:2 it is recommended in this standard that 2 (co-sited) be used to record data, in order to improve the image quality when viewed on TV systems. When this field does not exist, the reader shall assume the TIFF default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is recommended. If the reader does not have the capability of supporting both kinds of , it shall follow the TIFF default regardless of the value in this field. It is preferable that readers be able to support both centered and co-sited positioning. -ReferenceBlackWhite, 532, 0x0214, Image, Exif.Image.ReferenceBlackWhite, Rational, The reference black point value and reference white point value. No defaults are given in TIFF, but the values below are given as defaults here. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability these conditions. -XMLPacket, 700, 0x02bc, Image, Exif.Image.XMLPacket, Byte, XMP Metadata (Adobe technote 9-14-02) -Rating, 18246, 0x4746, Image, Exif.Image.Rating, Short, Rating tag used by Windows -RatingPercent, 18249, 0x4749, Image, Exif.Image.RatingPercent, Short, Rating tag used by Windows, value in percent -ImageID, 32781, 0x800d, Image, Exif.Image.ImageID, Ascii, ImageID is the full pathname of the original, high-resolution image, or any other identifying string that uniquely identifies the original image (Adobe OPI). -CFARepeatPatternDim, 33421, 0x828d, Image, Exif.Image.CFARepeatPatternDim, Short, Contains two values representing the minimum rows and columns to define the repeating patterns of the color filter array -CFAPattern, 33422, 0x828e, Image, Exif.Image.CFAPattern, Byte, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods -BatteryLevel, 33423, 0x828f, Image, Exif.Image.BatteryLevel, Rational, Contains a value of the battery level as a fraction or string -Copyright, 33432, 0x8298, Image, Exif.Image.Copyright, Ascii, Copyright information. In this standard the tag is used to indicate both the photographer and editor copyrights. It is the copyright notice of the person or organization claiming rights to the image. The Interoperability copyright statement including date and rights should be written in this field; e.g., "Copyright, John Smith, 19xx. All rights reserved.". In this standard the field records both the photographer and editor copyrights, with each recorded in a separate part of the statement. When there is a clear distinction between the photographer and editor copyrights, these are to be written in the order of photographer followed by editor copyright, separated by NULL (in this case since the statement also ends with a NULL, there are two NULL codes). When only the photographer copyright is given, it is terminated by one NULL code . When only the editor copyright is given, the photographer copyright part consists of one space followed by a terminating NULL code, then the editor copyright is given. When the field is left blank, it is treated as unknown. -ExposureTime, 33434, 0x829a, Image, Exif.Image.ExposureTime, Rational, Exposure time, given in seconds. -FNumber, 33437, 0x829d, Image, Exif.Image.FNumber, Rational, The F number. -IPTCNAA, 33723, 0x83bb, Image, Exif.Image.IPTCNAA, Long, Contains an IPTC/NAA record -ImageResources, 34377, 0x8649, Image, Exif.Image.ImageResources, Byte, Contains information embedded by the Adobe Photoshop application -ExifTag, 34665, 0x8769, Image, Exif.Image.ExifTag, Long, A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure as that of the IFD specified in TIFF. ordinarily, however, it does not contain image data as in the case of TIFF. -InterColorProfile, 34675, 0x8773, Image, Exif.Image.InterColorProfile, Undefined, Contains an InterColor Consortium (ICC) format color space characterization/profile -ExposureProgram, 34850, 0x8822, Image, Exif.Image.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Image, Exif.Image.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. -GPSTag, 34853, 0x8825, Image, Exif.Image.GPSTag, Long, A pointer to the GPS Info IFD. The Interoperability structure of the GPS Info IFD, like that of Exif IFD, has no image data. -ISOSpeedRatings, 34855, 0x8827, Image, Exif.Image.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Image, Exif.Image.OECF, Undefined, Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524. -Interlace, 34857, 0x8829, Image, Exif.Image.Interlace, Short, Indicates the field number of multifield images. -TimeZoneOffset, 34858, 0x882a, Image, Exif.Image.TimeZoneOffset, SShort, This optional tag encodes the time zone of the camera clock (relativeto Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the picture was taken. It may also contain the time zone offsetof the clock used to create the DateTime tag-value when the image wasmodified. -SelfTimerMode, 34859, 0x882b, Image, Exif.Image.SelfTimerMode, Short, Number of seconds image capture was delayed from button press. -DateTimeOriginal, 36867, 0x9003, Image, Exif.Image.DateTimeOriginal, Ascii, The date and time when the original image data was generated. -CompressedBitsPerPixel, 37122, 0x9102, Image, Exif.Image.CompressedBitsPerPixel, Rational, Specific to compressed data; states the compressed bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Image, Exif.Image.ShutterSpeedValue, SRational, Shutter speed. -ApertureValue, 37378, 0x9202, Image, Exif.Image.ApertureValue, Rational, The lens aperture. -BrightnessValue, 37379, 0x9203, Image, Exif.Image.BrightnessValue, SRational, The value of brightness. -ExposureBiasValue, 37380, 0x9204, Image, Exif.Image.ExposureBiasValue, SRational, The exposure bias. -MaxApertureValue, 37381, 0x9205, Image, Exif.Image.MaxApertureValue, Rational, The smallest F number of the lens. -SubjectDistance, 37382, 0x9206, Image, Exif.Image.SubjectDistance, SRational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Image, Exif.Image.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Image, Exif.Image.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Image, Exif.Image.Flash, Short, Indicates the status of flash when the image was shot. -FocalLength, 37386, 0x920a, Image, Exif.Image.FocalLength, Rational, The actual focal length of the lens, in mm. -FlashEnergy, 37387, 0x920b, Image, Exif.Image.FlashEnergy, Rational, Amount of flash energy (BCPS). -SpatialFrequencyResponse, 37388, 0x920c, Image, Exif.Image.SpatialFrequencyResponse, Undefined, SFR of the camera. -Noise, 37389, 0x920d, Image, Exif.Image.Noise, Undefined, Noise measurement values. -FocalPlaneXResolution, 37390, 0x920e, Image, Exif.Image.FocalPlaneXResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth direction for main image. -FocalPlaneYResolution, 37391, 0x920f, Image, Exif.Image.FocalPlaneYResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength direction for main image. -FocalPlaneResolutionUnit, 37392, 0x9210, Image, Exif.Image.FocalPlaneResolutionUnit, Short, Unit of measurement for FocalPlaneXResolution(37390) and FocalPlaneYResolution(37391). -ImageNumber, 37393, 0x9211, Image, Exif.Image.ImageNumber, Long, Number assigned to an image, e.g., in a chained image burst. -SecurityClassification, 37394, 0x9212, Image, Exif.Image.SecurityClassification, Ascii, Security classification assigned to the image. -ImageHistory, 37395, 0x9213, Image, Exif.Image.ImageHistory, Ascii, Record of what has been done to the image. -SubjectLocation, 37396, 0x9214, Image, Exif.Image.SubjectLocation, Short, Indicates the location and area of the main subject in the overall scene. -ExposureIndex, 37397, 0x9215, Image, Exif.Image.ExposureIndex, Rational, Encodes the camera exposure index setting when image was captured. -TIFFEPStandardID, 37398, 0x9216, Image, Exif.Image.TIFFEPStandardID, Byte, Contains four ASCII characters representing the TIFF/EP standard version of a TIFF/EP file, eg '1', '0', '0', '0' -SensingMethod, 37399, 0x9217, Image, Exif.Image.SensingMethod, Short, Type of image sensor. -XPTitle, 40091, 0x9c9b, Image, Exif.Image.XPTitle, Byte, Title tag used by Windows, encoded in UCS2 -XPComment, 40092, 0x9c9c, Image, Exif.Image.XPComment, Byte, Comment tag used by Windows, encoded in UCS2 -XPAuthor, 40093, 0x9c9d, Image, Exif.Image.XPAuthor, Byte, Author tag used by Windows, encoded in UCS2 -XPKeywords, 40094, 0x9c9e, Image, Exif.Image.XPKeywords, Byte, Keywords tag used by Windows, encoded in UCS2 -XPSubject, 40095, 0x9c9f, Image, Exif.Image.XPSubject, Byte, Subject tag used by Windows, encoded in UCS2 -PrintImageMatching, 50341, 0xc4a5, Image, Exif.Image.PrintImageMatching, Undefined, Print Image Matching, description needed. -DNGVersion, 50706, 0xc612, Image, Exif.Image.DNGVersion, Byte, This tag encodes the DNG four-tier version number. For files compliant with version 1.1.0.0 of the DNG specification, this tag should contain the bytes: 1, 1, 0, 0. -DNGBackwardVersion, 50707, 0xc613, Image, Exif.Image.DNGBackwardVersion, Byte, This tag specifies the oldest version of the Digital Negative specification for which a file is compatible. Readers shouldnot attempt to read a file if this tag specifies a version number that is higher than the version number of the specification the reader was based on. In addition to checking the version tags, readers should, for all tags, check the types, counts, and values, to verify it is able to correctly read the file. -UniqueCameraModel, 50708, 0xc614, Image, Exif.Image.UniqueCameraModel, Ascii, Defines a unique, non-localized name for the camera model that created the image in the raw file. This name should include the manufacturer's name to avoid conflicts, and should not be localized, even if the camera name itself is localized for different markets (see LocalizedCameraModel). This string may be used by reader software to index into per-model preferences and replacement profiles. -LocalizedCameraModel, 50709, 0xc615, Image, Exif.Image.LocalizedCameraModel, Byte, Similar to the UniqueCameraModel field, except the name can be localized for different markets to match the localization of the camera name. -CFAPlaneColor, 50710, 0xc616, Image, Exif.Image.CFAPlaneColor, Byte, Provides a mapping between the values in the CFAPattern tag and the plane numbers in LinearRaw space. This is a required tag for non-RGB CFA images. -CFALayout, 50711, 0xc617, Image, Exif.Image.CFALayout, Short, Describes the spatial layout of the CFA. -LinearizationTable, 50712, 0xc618, Image, Exif.Image.LinearizationTable, Short, Describes a lookup table that maps stored values into linear values. This tag is typically used to increase compression ratios by storing the raw data in a non-linear, more visually uniform space with fewer total encoding levels. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelRepeatDim, 50713, 0xc619, Image, Exif.Image.BlackLevelRepeatDim, Short, Specifies repeat pattern size for the BlackLevel tag. -BlackLevel, 50714, 0xc61a, Image, Exif.Image.BlackLevel, Rational, Specifies the zero light (a.k.a. thermal black or black current) encoding level, as a repeating pattern. The origin of this pattern is the top-left corner of the ActiveArea rectangle. The values are stored in row-column-sample scan order. -BlackLevelDeltaH, 50715, 0xc61b, Image, Exif.Image.BlackLevelDeltaH, SRational, If the zero light encoding level is a function of the image column, BlackLevelDeltaH specifies the difference between the zero light encoding level for each column and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelDeltaV, 50716, 0xc61c, Image, Exif.Image.BlackLevelDeltaV, SRational, If the zero light encoding level is a function of the image row, this tag specifies the difference between the zero light encoding level for each row and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -WhiteLevel, 50717, 0xc61d, Image, Exif.Image.WhiteLevel, Short, This tag specifies the fully saturated encoding level for the raw sample values. Saturation is caused either by the sensor itself becoming highly non-linear in response, or by the camera's analog to digital converter clipping. -DefaultScale, 50718, 0xc61e, Image, Exif.Image.DefaultScale, Rational, DefaultScale is required for cameras with non-square pixels. It specifies the default scale factors for each direction to convert the image to square pixels. Typically these factors are selected to approximately preserve total pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such as the Fujifilm SuperCCD, these two values should usually differ by a factor of 2.0. -DefaultCropOrigin, 50719, 0xc61f, Image, Exif.Image.DefaultCropOrigin, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropOrigin specifies the origin of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied), relative to the top-left corner of the ActiveArea rectangle. -DefaultCropSize, 50720, 0xc620, Image, Exif.Image.DefaultCropSize, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropSize specifies the size of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied). -ColorMatrix1, 50721, 0xc621, Image, Exif.Image.ColorMatrix1, SRational, ColorMatrix1 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the first calibration illuminant. The matrix values are stored in row scan order. The ColorMatrix1 tag is required for all non-monochrome DNG files. -ColorMatrix2, 50722, 0xc622, Image, Exif.Image.ColorMatrix2, SRational, ColorMatrix2 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the second calibration illuminant. The matrix values are stored in row scan order. -CameraCalibration1, 50723, 0xc623, Image, Exif.Image.CameraCalibration1, SRational, CameraClalibration1 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the first calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix1 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -CameraCalibration2, 50724, 0xc624, Image, Exif.Image.CameraCalibration2, SRational, CameraCalibration2 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the second calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix2 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -ReductionMatrix1, 50725, 0xc625, Image, Exif.Image.ReductionMatrix1, SRational, ReductionMatrix1 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the first calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -ReductionMatrix2, 50726, 0xc626, Image, Exif.Image.ReductionMatrix2, SRational, ReductionMatrix2 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the second calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -AnalogBalance, 50727, 0xc627, Image, Exif.Image.AnalogBalance, Rational, Normally the stored raw values are not white balanced, since any digital white balancing will reduce the dynamic range of the final image if the user decides to later adjust the white balance; however, if camera hardware is capable of white balancing the color channels before the signal is digitized, it can improve the dynamic range of the final image. AnalogBalance defines the gain, either analog (recommended) or digital (not recommended) that has been applied the stored raw values. -AsShotNeutral, 50728, 0xc628, Image, Exif.Image.AsShotNeutral, Short, Specifies the selected white balance at time of capture, encoded as the coordinates of a perfectly neutral color in linear reference space values. The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag. -AsShotWhiteXY, 50729, 0xc629, Image, Exif.Image.AsShotWhiteXY, Rational, Specifies the selected white balance at time of capture, encoded as x-y chromaticity coordinates. The inclusion of this tag precludes the inclusion of the AsShotNeutral tag. -BaselineExposure, 50730, 0xc62a, Image, Exif.Image.BaselineExposure, SRational, Camera models vary in the trade-off they make between highlight headroom and shadow noise. Some leave a significant amount of highlight headroom during a normal exposure. This allows significant negative exposure compensation to be applied during raw conversion, but also means normal exposures will contain more shadow noise. Other models leave less headroom during normal exposures. This allows for less negative exposure compensation, but results in lower shadow noise for normal exposures. Because of these differences, a raw converter needs to vary the zero point of its exposure compensation control from model to model. BaselineExposure specifies by how much (in EV units) to move the zero point. Positive values result in brighter default results, while negative values result in darker default results. -BaselineNoise, 50731, 0xc62b, Image, Exif.Image.BaselineNoise, Rational, Specifies the relative noise level of the camera model at a baseline ISO value of 100, compared to a reference camera model. Since noise levels tend to vary approximately with the square root of the ISO value, a raw converter can use this value, combined with the current ISO, to estimate the relative noise level of the current image. -BaselineSharpness, 50732, 0xc62c, Image, Exif.Image.BaselineSharpness, Rational, Specifies the relative amount of sharpening required for this camera model, compared to a reference camera model. Camera models vary in the strengths of their anti-aliasing filters. Cameras with weak or no filters require less sharpening than cameras with strong anti-aliasing filters. -BayerGreenSplit, 50733, 0xc62d, Image, Exif.Image.BayerGreenSplit, Long, Only applies to CFA images using a Bayer pattern filter array. This tag specifies, in arbitrary units, how closely the values of the green pixels in the blue/green rows track the values of the green pixels in the red/green rows. A value of zero means the two kinds of green pixels track closely, while a non-zero value means they sometimes diverge. The useful range for this tag is from 0 (no divergence) to about 5000 (quite large divergence). -LinearResponseLimit, 50734, 0xc62e, Image, Exif.Image.LinearResponseLimit, Rational, Some sensors have an unpredictable non-linearity in their response as they near the upper limit of their encoding range. This non-linearity results in color shifts in the highlight areas of the resulting image unless the raw converter compensates for this effect. LinearResponseLimit specifies the fraction of the encoding range above which the response may become significantly non-linear. -CameraSerialNumber, 50735, 0xc62f, Image, Exif.Image.CameraSerialNumber, Ascii, CameraSerialNumber contains the serial number of the camera or camera body that captured the image. -LensInfo, 50736, 0xc630, Image, Exif.Image.LensInfo, Rational, Contains information about the lens that captured the image. If the minimum f-stops are unknown, they should be encoded as 0/0. -ChromaBlurRadius, 50737, 0xc631, Image, Exif.Image.ChromaBlurRadius, Rational, ChromaBlurRadius provides a hint to the DNG reader about how much chroma blur should be applied to the image. If this tag is omitted, the reader will use its default amount of chroma blurring. Normally this tag is only included for non-CFA images, since the amount of chroma blur required for mosaic images is highly dependent on the de-mosaic algorithm, in which case the DNG reader's default value is likely optimized for its particular de-mosaic algorithm. -AntiAliasStrength, 50738, 0xc632, Image, Exif.Image.AntiAliasStrength, Rational, Provides a hint to the DNG reader about how strong the camera's anti-alias filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is prone to aliasing artifacts with some subjects), while a value of 1.0 means a strong anti-alias filter (i.e., the camera almost never has aliasing artifacts). -ShadowScale, 50739, 0xc633, Image, Exif.Image.ShadowScale, SRational, This tag is used by Adobe Camera Raw to control the sensitivity of its 'Shadows' slider. -DNGPrivateData, 50740, 0xc634, Image, Exif.Image.DNGPrivateData, Byte, Provides a way for camera manufacturers to store private data in the DNG file for use by their own raw converters, and to have that data preserved by programs that edit DNG files. -MakerNoteSafety, 50741, 0xc635, Image, Exif.Image.MakerNoteSafety, Short, MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is safe to preserve along with the rest of the EXIF data. File browsers and other image management software processing an image with a preserved MakerNote should be aware that any thumbnail image embedded in the MakerNote may be stale, and may not reflect the current state of the full size image. -CalibrationIlluminant1, 50778, 0xc65a, Image, Exif.Image.CalibrationIlluminant1, Short, The illuminant used for the first set of color calibration tags (ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for this tag are the same as the legal values for the LightSource EXIF tag. -CalibrationIlluminant2, 50779, 0xc65b, Image, Exif.Image.CalibrationIlluminant2, Short, The illuminant used for an optional second set of color calibration tags (ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for this tag are the same as the legal values for the CalibrationIlluminant1 tag; however, if both are included, neither is allowed to have a value of 0 (unknown). -BestQualityScale, 50780, 0xc65c, Image, Exif.Image.BestQualityScale, Rational, For some cameras, the best possible image quality is not achieved by preserving the total pixel count during conversion. For example, Fujifilm SuperCCD images have maximum detail when their total pixel count is doubled. This tag specifies the amount by which the values of the DefaultScale tag need to be multiplied to achieve the best quality image size. -RawDataUniqueID, 50781, 0xc65d, Image, Exif.Image.RawDataUniqueID, Byte, This tag contains a 16-byte unique identifier for the raw image data in the DNG file. DNG readers can use this tag to recognize a particular raw image, even if the file's name or the metadata contained in the file has been changed. If a DNG writer creates such an identifier, it should do so using an algorithm that will ensure that it is very unlikely two different images will end up having the same identifier. -OriginalRawFileName, 50827, 0xc68b, Image, Exif.Image.OriginalRawFileName, Byte, If the DNG file was converted from a non-DNG raw file, then this tag contains the file name of that original raw file. -OriginalRawFileData, 50828, 0xc68c, Image, Exif.Image.OriginalRawFileData, Undefined, If the DNG file was converted from a non-DNG raw file, then this tag contains the compressed contents of that original raw file. The contents of this tag always use the big-endian byte order. The tag contains a sequence of data blocks. Future versions of the DNG specification may define additional data blocks, so DNG readers should ignore extra bytes when parsing this tag. DNG readers should also detect the case where data blocks are missing from the end of the sequence, and should assume a default value for all the missing blocks. There are no padding or alignment bytes between data blocks. -ActiveArea, 50829, 0xc68d, Image, Exif.Image.ActiveArea, Short, This rectangle defines the active (non-masked) pixels of the sensor. The order of the rectangle coordinates is: top, left, bottom, right. -MaskedAreas, 50830, 0xc68e, Image, Exif.Image.MaskedAreas, Short, This tag contains a list of non-overlapping rectangle coordinates of fully masked pixels, which can be optionally used by DNG readers to measure the black encoding level. The order of each rectangle's coordinates is: top, left, bottom, right. If the raw image data has already had its black encoding level subtracted, then this tag should not be used, since the masked pixels are no longer useful. -AsShotICCProfile, 50831, 0xc68f, Image, Exif.Image.AsShotICCProfile, Undefined, This tag contains an ICC profile that, in conjunction with the AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to specify a default color rendering from camera color space coordinates (linear reference values) into the ICC profile connection space. The ICC profile connection space is an output referred colorimetric space, whereas the other color calibration tags in DNG specify a conversion into a scene referred colorimetric space. This means that the rendering in this profile should include any desired tone and gamut mapping needed to convert between scene referred values and output referred values. -AsShotPreProfileMatrix, 50832, 0xc690, Image, Exif.Image.AsShotPreProfileMatrix, SRational, This tag is used in conjunction with the AsShotICCProfile tag. It specifies a matrix that should be applied to the camera color space coordinates before processing the values through the ICC profile specified in the AsShotICCProfile tag. The matrix is stored in the row scan order. If ColorPlanes is greater than three, then this matrix can (but is not required to) reduce the dimensionality of the color data down to three components, in which case the AsShotICCProfile should have three rather than ColorPlanes input components. -CurrentICCProfile, 50833, 0xc691, Image, Exif.Image.CurrentICCProfile, Undefined, This tag is used in conjunction with the CurrentPreProfileMatrix tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -CurrentPreProfileMatrix, 50834, 0xc692, Image, Exif.Image.CurrentPreProfileMatrix, SRational, This tag is used in conjunction with the CurrentICCProfile tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -ColorimetricReference, 50879, 0xc6bf, Image, Exif.Image.ColorimetricReference, Short, The DNG color model documents a transform between camera colors and CIE XYZ values. This tag describes the colorimetric reference for the CIE XYZ values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-referred, using the ICC profile perceptual dynamic range. This tag allows output-referred data to be stored in DNG files and still processed correctly by DNG readers. -CameraCalibrationSignature, 50931, 0xc6f3, Image, Exif.Image.CameraCalibrationSignature, Byte, A UTF-8 encoded string associated with the CameraCalibration1 and CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags should only be used in the DNG color transform if the string stored in the CameraCalibrationSignature tag exactly matches the string stored in the ProfileCalibrationSignature tag for the selected camera profile. -ProfileCalibrationSignature, 50932, 0xc6f4, Image, Exif.Image.ProfileCalibrationSignature, Byte, A UTF-8 encoded string associated with the camera profile tags. The CameraCalibration1 and CameraCalibration2 tags should only be used in the DNG color transfer if the string stored in the CameraCalibrationSignature tag exactly matches the string stored in the ProfileCalibrationSignature tag for the selected camera profile. -AsShotProfileName, 50934, 0xc6f6, Image, Exif.Image.AsShotProfileName, Byte, A UTF-8 encoded string containing the name of the "as shot" camera profile, if any. -NoiseReductionApplied, 50935, 0xc6f7, Image, Exif.Image.NoiseReductionApplied, Rational, This tag indicates how much noise reduction has been applied to the raw data on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has been applied. A 1.0 value indicates that the "ideal" amount of noise reduction has been applied, i.e. that the DNG reader should not apply additional noise reduction by default. A value of 0/0 indicates that this parameter is unknown. -ProfileName, 50936, 0xc6f8, Image, Exif.Image.ProfileName, Byte, A UTF-8 encoded string containing the name of the camera profile. This tag is optional if there is only a single camera profile stored in the file but is required for all camera profiles if there is more than one camera profile stored in the file. -ProfileHueSatMapDims, 50937, 0xc6f9, Image, Exif.Image.ProfileHueSatMapDims, Long, This tag specifies the number of input samples in each dimension of the hue/saturation/value mapping tables. The data for these tables are stored in ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case has ValueDivisions equal to 1, so only hue and saturation are used as inputs to the mapping table. -ProfileHueSatMapData1, 50938, 0xc6fa, Image, Exif.Image.ProfileHueSatMapData1, Float, This tag contains the data for the first hue/saturation/value mapping table. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees; the second entry is saturation scale factor; and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -ProfileHueSatMapData2, 50939, 0xc6fb, Image, Exif.Image.ProfileHueSatMapData2, Float, This tag contains the data for the second hue/saturation/value mapping table. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees; the second entry is a saturation scale factor; and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -ProfileToneCurve, 50940, 0xc6fc, Image, Exif.Image.ProfileToneCurve, Float, This tag contains a default tone curve that can be applied while processing the image as a starting point for user adjustments. The curve is specified as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each sample has an input value in the range of 0.0 to 1.0, and an output value in the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and the last sample is required to be (1.0, 1.0). Interpolated the curve using a cubic spline. -ProfileEmbedPolicy, 50941, 0xc6fd, Image, Exif.Image.ProfileEmbedPolicy, Long, This tag contains information about the usage rules for the associated camera profile. -ProfileCopyright, 50942, 0xc6fe, Image, Exif.Image.ProfileCopyright, Byte, A UTF-8 encoded string containing the copyright information for the camera profile. This string always should be preserved along with the other camera profile tags. -ForwardMatrix1, 50964, 0xc714, Image, Exif.Image.ForwardMatrix1, SRational, This tag defines a matrix that maps white balanced camera colors to XYZ D50 colors. -ForwardMatrix2, 50965, 0xc715, Image, Exif.Image.ForwardMatrix2, SRational, This tag defines a matrix that maps white balanced camera colors to XYZ D50 colors. -PreviewApplicationName, 50966, 0xc716, Image, Exif.Image.PreviewApplicationName, Byte, A UTF-8 encoded string containing the name of the application that created the preview stored in the IFD. -PreviewApplicationVersion, 50967, 0xc717, Image, Exif.Image.PreviewApplicationVersion, Byte, A UTF-8 encoded string containing the version number of the application that created the preview stored in the IFD. -PreviewSettingsName, 50968, 0xc718, Image, Exif.Image.PreviewSettingsName, Byte, A UTF-8 encoded string containing the name of the conversion settings (for example, snapshot name) used for the preview stored in the IFD. -PreviewSettingsDigest, 50969, 0xc719, Image, Exif.Image.PreviewSettingsDigest, Byte, A unique ID of the conversion settings (for example, MD5 digest) used to render the preview stored in the IFD. -PreviewColorSpace, 50970, 0xc71a, Image, Exif.Image.PreviewColorSpace, Long, This tag specifies the color space in which the rendered preview in this IFD is stored. The default value for this tag is sRGB for color previews and Gray Gamma 2.2 for monochrome previews. -PreviewDateTime, 50971, 0xc71b, Image, Exif.Image.PreviewDateTime, Ascii, This tag is an ASCII string containing the name of the date/time at which the preview stored in the IFD was rendered. The date/time is encoded using ISO 8601 format. -RawImageDigest, 50972, 0xc71c, Image, Exif.Image.RawImageDigest, Undefined, This tag is an MD5 digest of the raw image data. All pixels in the image are processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep (16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The data for each pixel is processed in little-endian byte order. -OriginalRawFileDigest, 50973, 0xc71d, Image, Exif.Image.OriginalRawFileDigest, Undefined, This tag is an MD5 digest of the data stored in the OriginalRawFileData tag. -SubTileBlockSize, 50974, 0xc71e, Image, Exif.Image.SubTileBlockSize, Long, Normally, the pixels within a tile are stored in simple row-scan order. This tag specifies that the pixels within a tile should be grouped first into rectangular blocks of the specified size. These blocks are stored in row-scan order. Within each block, the pixels are stored in row-scan order. The use of a non-default value for this tag requires setting the DNGBackwardVersion tag to at least 1.2.0.0. -RowInterleaveFactor, 50975, 0xc71f, Image, Exif.Image.RowInterleaveFactor, Long, This tag specifies that rows of the image are stored in interleaved order. The value of the tag specifies the number of interleaved fields. The use of a non-default value for this tag requires setting the DNGBackwardVersion tag to at least 1.2.0.0. -ProfileLookTableDims, 50981, 0xc725, Image, Exif.Image.ProfileLookTableDims, Long, This tag specifies the number of input samples in each dimension of a default "look" table. The data for this table is stored in the ProfileLookTableData tag. -ProfileLookTableData, 50982, 0xc726, Image, Exif.Image.ProfileLookTableData, Float, This tag contains a default "look" table that can be applied while processing the image as a starting point for user adjustment. This table uses the same format as the tables stored in the ProfileHueSatMapData1 and ProfileHueSatMapData2 tags, and is applied in the same color space. However, it should be applied later in the processing pipe, after any exposure compensation and/or fill light stages, but before any tone curve stage. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees, the second entry is a saturation scale factor, and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -OpcodeList1, 51008, 0xc740, Image, Exif.Image.OpcodeList1, Undefined, Specifies the list of opcodes that should be applied to the raw image, as read directly from the file. -OpcodeList2, 51009, 0xc741, Image, Exif.Image.OpcodeList2, Undefined, Specifies the list of opcodes that should be applied to the raw image, just after it has been mapped to linear reference values. -OpcodeList3, 51022, 0xc74e, Image, Exif.Image.OpcodeList3, Undefined, Specifies the list of opcodes that should be applied to the raw image, just after it has been demosaiced. -NoiseProfile, 51041, 0xc761, Image, Exif.Image.NoiseProfile, Double, NoiseProfile describes the amount of noise in a raw image. Specifically, this tag models the amount of signal-dependent photon (shot) noise and signal-independent sensor readout noise, two common sources of noise in raw images. The model assumes that the noise is white and spatially independent, ignoring fixed pattern effects and other sources of noise (e.g., pixel response non-uniformity, spatially-dependent thermal effects, etc.). -ExposureTime, 33434, 0x829a, Photo, Exif.Photo.ExposureTime, Rational, Exposure time, given in seconds (sec). -FNumber, 33437, 0x829d, Photo, Exif.Photo.FNumber, Rational, The F number. -ExposureProgram, 34850, 0x8822, Photo, Exif.Photo.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Photo, Exif.Photo.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. The tag value is an ASCII string compatible with the standard developed by the ASTM Technical Committee. -ISOSpeedRatings, 34855, 0x8827, Photo, Exif.Photo.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Photo, Exif.Photo.OECF, Undefined, Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO 14524. is the relationship between the camera optical input and the image values. -SensitivityType, 34864, 0x8830, Photo, Exif.Photo.SensitivityType, Short, The SensitivityType tag indicates PhotographicSensitivity tag. which one of the parameters of ISO12232 is the Although it is an optional tag, it should be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, or 7 may be used in case that the values of plural parameters are the same. -StandardOutputSensitivity, 34865, 0x8831, Photo, Exif.Photo.StandardOutputSensitivity, Long, This tag indicates the standard output sensitivity value of a camera or input device defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -RecommendedExposureIndex, 34866, 0x8832, Photo, Exif.Photo.RecommendedExposureIndex, Long, This tag indicates the recommended exposure index value of a camera or input device defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -ISOSpeed, 34867, 0x8833, Photo, Exif.Photo.ISOSpeed, Long, This tag indicates the ISO speed value of a camera or input device that is defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -ISOSpeedLatitudeyyy, 34868, 0x8834, Photo, Exif.Photo.ISOSpeedLatitudeyyy, Long, This tag indicates the ISO speed latitude yyy value of a camera or input device that is defined in ISO 12232. However, this tag shall not be recorded without ISOSpeed and ISOSpeedLatitudezzz. -ISOSpeedLatitudezzz, 34869, 0x8835, Photo, Exif.Photo.ISOSpeedLatitudezzz, Long, This tag indicates the ISO speed latitude zzz value of a camera or input device that is defined in ISO 12232. However, this tag shall not be recorded without ISOSpeed and ISOSpeedLatitudeyyy. -ExifVersion, 36864, 0x9000, Photo, Exif.Photo.ExifVersion, Undefined, The version of this standard supported. Nonexistence of this field is taken to mean nonconformance to the standard. -DateTimeOriginal, 36867, 0x9003, Photo, Exif.Photo.DateTimeOriginal, Ascii, The date and time when the original image data was generated. For a digital still camera the date and time the picture was taken are recorded. -DateTimeDigitized, 36868, 0x9004, Photo, Exif.Photo.DateTimeDigitized, Ascii, The date and time when the image was stored as digital data. -ComponentsConfiguration, 37121, 0x9101, Photo, Exif.Photo.ComponentsConfiguration, Undefined, Information specific to compressed data. The channels of each component are arranged in order from the 1st component to the 4th. For uncompressed data the data arrangement is given in the tag. However, since can only express the order of Y, Cb and Cr, this tag is provided for cases when compressed data uses components other than Y, Cb, and Cr and to enable support of other sequences. -CompressedBitsPerPixel, 37122, 0x9102, Photo, Exif.Photo.CompressedBitsPerPixel, Rational, Information specific to compressed data. The compression mode used for a compressed image is indicated in unit bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Photo, Exif.Photo.ShutterSpeedValue, SRational, Shutter speed. The unit is the APEX (Additive System of Photographic Exposure) setting. -ApertureValue, 37378, 0x9202, Photo, Exif.Photo.ApertureValue, Rational, The lens aperture. The unit is the APEX value. -BrightnessValue, 37379, 0x9203, Photo, Exif.Photo.BrightnessValue, SRational, The value of brightness. The unit is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -ExposureBiasValue, 37380, 0x9204, Photo, Exif.Photo.ExposureBiasValue, SRational, The exposure bias. The units is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -MaxApertureValue, 37381, 0x9205, Photo, Exif.Photo.MaxApertureValue, Rational, The smallest F number of the lens. The unit is the APEX value. Ordinarily it is given in the range of 00.00 to 99.99, but it is not limited to this range. -SubjectDistance, 37382, 0x9206, Photo, Exif.Photo.SubjectDistance, Rational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Photo, Exif.Photo.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Photo, Exif.Photo.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Photo, Exif.Photo.Flash, Short, This tag is recorded when an image is taken using a strobe light (flash). -FocalLength, 37386, 0x920a, Photo, Exif.Photo.FocalLength, Rational, The actual focal length of the lens, in mm. Conversion is not made to the focal length of a 35 mm film camera. -SubjectArea, 37396, 0x9214, Photo, Exif.Photo.SubjectArea, Short, This tag indicates the location and area of the main subject in the overall scene. -MakerNote, 37500, 0x927c, Photo, Exif.Photo.MakerNote, Undefined, A tag for manufacturers of Exif writers to record any desired information. The contents are up to the manufacturer. -UserComment, 37510, 0x9286, Photo, Exif.Photo.UserComment, Comment, A tag for Exif users to write keywords or comments on the image besides those in , and without the character code limitations of the tag. -SubSecTime, 37520, 0x9290, Photo, Exif.Photo.SubSecTime, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeOriginal, 37521, 0x9291, Photo, Exif.Photo.SubSecTimeOriginal, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeDigitized, 37522, 0x9292, Photo, Exif.Photo.SubSecTimeDigitized, Ascii, A tag used to record fractions of seconds for the tag. -FlashpixVersion, 40960, 0xa000, Photo, Exif.Photo.FlashpixVersion, Undefined, The FlashPix format version supported by a FPXR file. -ColorSpace, 40961, 0xa001, Photo, Exif.Photo.ColorSpace, Short, The color space information tag is always recorded as the color space specifier. Normally sRGB is used to define the color space based on the PC monitor conditions and environment. If a color space other than sRGB is used, Uncalibrated is set. Image data recorded as Uncalibrated can be treated as sRGB when it is converted to FlashPix. -PixelXDimension, 40962, 0xa002, Photo, Exif.Photo.PixelXDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid width of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. -PixelYDimension, 40963, 0xa003, Photo, Exif.Photo.PixelYDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid height of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. Since data padding is unnecessary in the vertical direction, the number of lines recorded in this valid image height tag will in fact be the same as that recorded in the SOF. -RelatedSoundFile, 40964, 0xa004, Photo, Exif.Photo.RelatedSoundFile, Ascii, This tag is used to record the name of an audio file related to the image data. The only relational information recorded here is the Exif audio file name and extension (an ASCII string consisting of 8 characters + '.' + 3 characters). The path is not recorded. -InteroperabilityTag, 40965, 0xa005, Photo, Exif.Photo.InteroperabilityTag, Long, Interoperability IFD is composed of tags which stores the information to ensure the Interoperability and pointed by the following tag located in Exif IFD. The Interoperability structure of Interoperability IFD is the same as TIFF defined IFD structure but does not contain the image data characteristically compared with normal TIFF IFD. -FlashEnergy, 41483, 0xa20b, Photo, Exif.Photo.FlashEnergy, Rational, Indicates the strobe energy at the time the image is captured, as measured in Beam Candle Power Seconds (BCPS). -SpatialFrequencyResponse, 41484, 0xa20c, Photo, Exif.Photo.SpatialFrequencyResponse, Undefined, This tag records the camera or input device spatial frequency table and SFR values in the direction of image width, image height, and diagonal direction, as specified in ISO 12233. -FocalPlaneXResolution, 41486, 0xa20e, Photo, Exif.Photo.FocalPlaneXResolution, Rational, Indicates the number of pixels in the image width (X) direction per on the camera focal plane. -FocalPlaneYResolution, 41487, 0xa20f, Photo, Exif.Photo.FocalPlaneYResolution, Rational, Indicates the number of pixels in the image height (V) direction per on the camera focal plane. -FocalPlaneResolutionUnit, 41488, 0xa210, Photo, Exif.Photo.FocalPlaneResolutionUnit, Short, Indicates the unit for measuring and . This value is the same as the . -SubjectLocation, 41492, 0xa214, Photo, Exif.Photo.SubjectLocation, Short, Indicates the location of the main subject in the scene. The value of this tag represents the pixel at the center of the main subject relative to the left edge, prior to rotation processing as per the tag. The first value indicates the X column number and second indicates the Y row number. -ExposureIndex, 41493, 0xa215, Photo, Exif.Photo.ExposureIndex, Rational, Indicates the exposure index selected on the camera or input device at the time the image is captured. -SensingMethod, 41495, 0xa217, Photo, Exif.Photo.SensingMethod, Short, Indicates the image sensor type on the camera or input device. -FileSource, 41728, 0xa300, Photo, Exif.Photo.FileSource, Undefined, Indicates the image source. If a DSC recorded the image, this tag value of this tag always be set to 3, indicating that the image was recorded on a DSC. -SceneType, 41729, 0xa301, Photo, Exif.Photo.SceneType, Undefined, Indicates the type of scene. If a DSC recorded the image, this tag value must always be set to 1, indicating that the image was directly photographed. -CFAPattern, 41730, 0xa302, Photo, Exif.Photo.CFAPattern, Undefined, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods. -CustomRendered, 41985, 0xa401, Photo, Exif.Photo.CustomRendered, Short, This tag indicates the use of special processing on image data, such as rendering geared to output. When special processing is performed, the reader is expected to disable or minimize any further processing. -ExposureMode, 41986, 0xa402, Photo, Exif.Photo.ExposureMode, Short, This tag indicates the exposure mode set when the image was shot. In auto-bracketing mode, the camera shoots a series of frames of the same scene at different exposure settings. -WhiteBalance, 41987, 0xa403, Photo, Exif.Photo.WhiteBalance, Short, This tag indicates the white balance mode set when the image was shot. -DigitalZoomRatio, 41988, 0xa404, Photo, Exif.Photo.DigitalZoomRatio, Rational, This tag indicates the digital zoom ratio when the image was shot. If the numerator of the recorded value is 0, this indicates that digital zoom was not used. -FocalLengthIn35mmFilm, 41989, 0xa405, Photo, Exif.Photo.FocalLengthIn35mmFilm, Short, This tag indicates the equivalent focal length assuming a 35mm film camera, in mm. A value of 0 means the focal length is unknown. Note that this tag differs from the tag. -SceneCaptureType, 41990, 0xa406, Photo, Exif.Photo.SceneCaptureType, Short, This tag indicates the type of scene that was shot. It can also be used to record the mode in which the image was shot. Note that this differs from the tag. -GainControl, 41991, 0xa407, Photo, Exif.Photo.GainControl, Short, This tag indicates the degree of overall image gain adjustment. -Contrast, 41992, 0xa408, Photo, Exif.Photo.Contrast, Short, This tag indicates the direction of contrast processing applied by the camera when the image was shot. -Saturation, 41993, 0xa409, Photo, Exif.Photo.Saturation, Short, This tag indicates the direction of saturation processing applied by the camera when the image was shot. -Sharpness, 41994, 0xa40a, Photo, Exif.Photo.Sharpness, Short, This tag indicates the direction of sharpness processing applied by the camera when the image was shot. -DeviceSettingDescription, 41995, 0xa40b, Photo, Exif.Photo.DeviceSettingDescription, Undefined, This tag indicates information on the picture-taking conditions of a particular camera model. The tag is used only to indicate the picture-taking conditions in the reader. -SubjectDistanceRange, 41996, 0xa40c, Photo, Exif.Photo.SubjectDistanceRange, Short, This tag indicates the distance to the subject. -ImageUniqueID, 42016, 0xa420, Photo, Exif.Photo.ImageUniqueID, Ascii, This tag indicates an identifier assigned uniquely to each image. It is recorded as an ASCII string equivalent to hexadecimal notation and 128-bit fixed length. -CameraOwnerName, 42032, 0xa430, Photo, Exif.Photo.CameraOwnerName, Ascii, This tag records the owner of a camera used in photography as an ASCII string. -BodySerialNumber, 42033, 0xa431, Photo, Exif.Photo.BodySerialNumber, Ascii, This tag records the serial number of the body of the camera that was used in photography as an ASCII string. -LensSpecification, 42034, 0xa432, Photo, Exif.Photo.LensSpecification, Rational, This tag notes minimum focal length, maximum focal length, minimum F number in the minimum focal length, and minimum F number in the maximum focal length, which are specification information for the lens that was used in photography. When the minimum F number is unknown, the notation is 0/0 -LensMake, 42035, 0xa433, Photo, Exif.Photo.LensMake, Ascii, This tag records the lens manufactor as an ASCII string. -LensModel, 42036, 0xa434, Photo, Exif.Photo.LensModel, Ascii, This tag records the lens's model name and model number as an ASCII string. -LensSerialNumber, 42037, 0xa435, Photo, Exif.Photo.LensSerialNumber, Ascii, This tag records the serial number of the interchangeable lens that was used in photography as an ASCII string. -InteroperabilityIndex, 1, 0x0001, Iop, Exif.Iop.InteroperabilityIndex, Ascii, Indicates the identification of the Interoperability rule. Use "R98" for stating ExifR98 Rules. Four bytes used including the termination code (NULL). see the separate volume of Recommended Exif Interoperability Rules (ExifR98) for other tags used for ExifR98. -InteroperabilityVersion, 2, 0x0002, Iop, Exif.Iop.InteroperabilityVersion, Undefined, Interoperability version -RelatedImageFileFormat, 4096, 0x1000, Iop, Exif.Iop.RelatedImageFileFormat, Ascii, File format of image file -RelatedImageWidth, 4097, 0x1001, Iop, Exif.Iop.RelatedImageWidth, Long, Image width -RelatedImageLength, 4098, 0x1002, Iop, Exif.Iop.RelatedImageLength, Long, Image height -GPSVersionID, 0, 0x0000, GPSInfo, Exif.GPSInfo.GPSVersionID, Byte, Indicates the version of . The version is given as 2.0.0.0. This tag is mandatory when tag is present. (Note: The tag is given in bytes, unlike the tag. When the version is 2.0.0.0, the tag value is 02000000.H). -GPSLatitudeRef, 1, 0x0001, GPSInfo, Exif.GPSInfo.GPSLatitudeRef, Ascii, Indicates whether the latitude is north or south latitude. The ASCII value 'N' indicates north latitude, and 'S' is south latitude. -GPSLatitude, 2, 0x0002, GPSInfo, Exif.GPSInfo.GPSLatitude, Rational, Indicates the latitude. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is dd/1,mmmm/100,0/1. -GPSLongitudeRef, 3, 0x0003, GPSInfo, Exif.GPSInfo.GPSLongitudeRef, Ascii, Indicates whether the longitude is east or west longitude. ASCII 'E' indicates east longitude, and 'W' is west longitude. -GPSLongitude, 4, 0x0004, GPSInfo, Exif.GPSInfo.GPSLongitude, Rational, Indicates the longitude. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is ddd/1,mmmm/100,0/1. -GPSAltitudeRef, 5, 0x0005, GPSInfo, Exif.GPSInfo.GPSAltitudeRef, Byte, Indicates the altitude used as the reference altitude. If the reference is sea level and the altitude is above sea level, 0 is given. If the altitude is below sea level, a value of 1 is given and the altitude is indicated as an absolute value in the GSPAltitude tag. The reference unit is meters. Note that this tag is BYTE type, unlike other reference tags. -GPSAltitude, 6, 0x0006, GPSInfo, Exif.GPSInfo.GPSAltitude, Rational, Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is expressed as one RATIONAL value. The reference unit is meters. -GPSTimeStamp, 7, 0x0007, GPSInfo, Exif.GPSInfo.GPSTimeStamp, Rational, Indicates the time as UTC (Coordinated Universal Time). is expressed as three RATIONAL values giving the hour, minute, and second (atomic clock). -GPSSatellites, 8, 0x0008, GPSInfo, Exif.GPSInfo.GPSSatellites, Ascii, Indicates the GPS satellites used for measurements. This tag can be used to describe the number of satellites, their ID number, angle of elevation, azimuth, SNR and other information in ASCII notation. The format is not specified. If the GPS receiver is incapable of taking measurements, value of the tag is set to NULL. -GPSStatus, 9, 0x0009, GPSInfo, Exif.GPSInfo.GPSStatus, Ascii, Indicates the status of the GPS receiver when the image is recorded. "A" means measurement is in progress, and "V" means the measurement is Interoperability. -GPSMeasureMode, 10, 0x000a, GPSInfo, Exif.GPSInfo.GPSMeasureMode, Ascii, Indicates the GPS measurement mode. "2" means two-dimensional measurement and "3" means three-dimensional measurement is in progress. -GPSDOP, 11, 0x000b, GPSInfo, Exif.GPSInfo.GPSDOP, Rational, Indicates the GPS DOP (data degree of precision). An HDOP value is written during two-dimensional measurement, and PDOP during three-dimensional measurement. -GPSSpeedRef, 12, 0x000c, GPSInfo, Exif.GPSInfo.GPSSpeedRef, Ascii, Indicates the unit used to express the GPS receiver speed of movement. "K" "M" and "N" represents kilometers per hour, miles per hour, and knots. -GPSSpeed, 13, 0x000d, GPSInfo, Exif.GPSInfo.GPSSpeed, Rational, Indicates the speed of GPS receiver movement. -GPSTrackRef, 14, 0x000e, GPSInfo, Exif.GPSInfo.GPSTrackRef, Ascii, Indicates the reference for giving the direction of GPS receiver movement. "T" denotes true direction and "M" is magnetic direction. -GPSTrack, 15, 0x000f, GPSInfo, Exif.GPSInfo.GPSTrack, Rational, Indicates the direction of GPS receiver movement. The range of values is from 0.00 to 359.99. -GPSImgDirectionRef, 16, 0x0010, GPSInfo, Exif.GPSInfo.GPSImgDirectionRef, Ascii, Indicates the reference for giving the direction of the image when it is captured. "T" denotes true direction and "M" is magnetic direction. -GPSImgDirection, 17, 0x0011, GPSInfo, Exif.GPSInfo.GPSImgDirection, Rational, Indicates the direction of the image when it was captured. The range of values is from 0.00 to 359.99. -GPSMapDatum, 18, 0x0012, GPSInfo, Exif.GPSInfo.GPSMapDatum, Ascii, Indicates the geodetic survey data used by the GPS receiver. If the survey data is restricted to Japan, the value of this tag is "TOKYO" or "WGS-84". -GPSDestLatitudeRef, 19, 0x0013, GPSInfo, Exif.GPSInfo.GPSDestLatitudeRef, Ascii, Indicates whether the latitude of the destination point is north or south latitude. The ASCII value "N" indicates north latitude, and "S" is south latitude. -GPSDestLatitude, 20, 0x0014, GPSInfo, Exif.GPSInfo.GPSDestLatitude, Rational, Indicates the latitude of the destination point. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If latitude is expressed as degrees, minutes and seconds, a typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be dd/1,mmmm/100,0/1. -GPSDestLongitudeRef, 21, 0x0015, GPSInfo, Exif.GPSInfo.GPSDestLongitudeRef, Ascii, Indicates whether the longitude of the destination point is east or west longitude. ASCII "E" indicates east longitude, and "W" is west longitude. -GPSDestLongitude, 22, 0x0016, GPSInfo, Exif.GPSInfo.GPSDestLongitude, Rational, Indicates the longitude of the destination point. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If longitude is expressed as degrees, minutes and seconds, a typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be ddd/1,mmmm/100,0/1. -GPSDestBearingRef, 23, 0x0017, GPSInfo, Exif.GPSInfo.GPSDestBearingRef, Ascii, Indicates the reference used for giving the bearing to the destination point. "T" denotes true direction and "M" is magnetic direction. -GPSDestBearing, 24, 0x0018, GPSInfo, Exif.GPSInfo.GPSDestBearing, Rational, Indicates the bearing to the destination point. The range of values is from 0.00 to 359.99. -GPSDestDistanceRef, 25, 0x0019, GPSInfo, Exif.GPSInfo.GPSDestDistanceRef, Ascii, Indicates the unit used to express the distance to the destination point. "K", "M" and "N" represent kilometers, miles and knots. -GPSDestDistance, 26, 0x001a, GPSInfo, Exif.GPSInfo.GPSDestDistance, Rational, Indicates the distance to the destination point. -GPSProcessingMethod, 27, 0x001b, GPSInfo, Exif.GPSInfo.GPSProcessingMethod, Undefined, A character string recording the name of the method used for location finding. The first byte indicates the character code used, and this is followed by the name of the method. -GPSAreaInformation, 28, 0x001c, GPSInfo, Exif.GPSInfo.GPSAreaInformation, Undefined, A character string recording the name of the GPS area. The first byte indicates the character code used, and this is followed by the name of the GPS area. -GPSDateStamp, 29, 0x001d, GPSInfo, Exif.GPSInfo.GPSDateStamp, Ascii, A character string recording date and time information relative to UTC (Coordinated Universal Time). The format is "YYYY:MM:DD.". -GPSDifferential, 30, 0x001e, GPSInfo, Exif.GPSInfo.GPSDifferential, Short, Indicates whether differential correction is applied to the GPS receiver. -ProcessingSoftware, 11, 0x000b, Image, Exif.Image.ProcessingSoftware, Ascii, The name and version of the software used to post-process the picture. -NewSubfileType, 254, 0x00fe, Image, Exif.Image.NewSubfileType, Long, A general indication of the kind of data contained in this subfile. -SubfileType, 255, 0x00ff, Image, Exif.Image.SubfileType, Short, A general indication of the kind of data contained in this subfile. This field is deprecated. The NewSubfileType field should be used instead. -ImageWidth, 256, 0x0100, Image, Exif.Image.ImageWidth, Long, The number of columns of image data, equal to the number of pixels per row. In JPEG compressed data a JPEG marker is used instead of this tag. -ImageLength, 257, 0x0101, Image, Exif.Image.ImageLength, Long, The number of rows of image data. In JPEG compressed data a JPEG marker is used instead of this tag. -BitsPerSample, 258, 0x0102, Image, Exif.Image.BitsPerSample, Short, The number of bits per image component. In this standard each component of the image is 8 bits, so the value for this tag is 8. See also . In JPEG compressed data a JPEG marker is used instead of this tag. -Compression, 259, 0x0103, Image, Exif.Image.Compression, Short, The compression scheme used for the image data. When a primary image is JPEG compressed, this designation is not necessary and is omitted. When thumbnails use JPEG compression, this tag value is set to 6. -PhotometricInterpretation, 262, 0x0106, Image, Exif.Image.PhotometricInterpretation, Short, The pixel composition. In JPEG compressed data a JPEG marker is used instead of this tag. -Threshholding, 263, 0x0107, Image, Exif.Image.Threshholding, Short, For black and white TIFF files that represent shades of gray, the technique used to convert from gray to black and white pixels. -CellWidth, 264, 0x0108, Image, Exif.Image.CellWidth, Short, The width of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -CellLength, 265, 0x0109, Image, Exif.Image.CellLength, Short, The length of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -FillOrder, 266, 0x010a, Image, Exif.Image.FillOrder, Short, The logical order of bits within a byte -DocumentName, 269, 0x010d, Image, Exif.Image.DocumentName, Ascii, The name of the document from which this image was scanned -ImageDescription, 270, 0x010e, Image, Exif.Image.ImageDescription, Ascii, A character string giving the title of the image. It may be a comment such as "1988 company picnic" or the like. Two-bytes character codes cannot be used. When a 2-bytes code is necessary, the Exif Private tag is to be used. -Make, 271, 0x010f, Image, Exif.Image.Make, Ascii, The manufacturer of the recording equipment. This is the manufacturer of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -Model, 272, 0x0110, Image, Exif.Image.Model, Ascii, The model name or model number of the equipment. This is the model name or number of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -StripOffsets, 273, 0x0111, Image, Exif.Image.StripOffsets, Long, For each strip, the byte offset of that strip. It is recommended that this be selected so the number of strip bytes does not exceed 64 Kbytes. With JPEG compressed data this designation is not needed and is omitted. See also and . -Orientation, 274, 0x0112, Image, Exif.Image.Orientation, Short, The image orientation viewed in terms of rows and columns. -SamplesPerPixel, 277, 0x0115, Image, Exif.Image.SamplesPerPixel, Short, The number of components per pixel. Since this standard applies to RGB and YCbCr images, the value set for this tag is 3. In JPEG compressed data a JPEG marker is used instead of this tag. -RowsPerStrip, 278, 0x0116, Image, Exif.Image.RowsPerStrip, Long, The number of rows per strip. This is the number of rows in the image of one strip when an image is divided into strips. With JPEG compressed data this designation is not needed and is omitted. See also and . -StripByteCounts, 279, 0x0117, Image, Exif.Image.StripByteCounts, Long, The total number of bytes in each strip. With JPEG compressed data this designation is not needed and is omitted. -XResolution, 282, 0x011a, Image, Exif.Image.XResolution, Rational, The number of pixels per in the direction. When the image resolution is unknown, 72 [dpi] is designated. -YResolution, 283, 0x011b, Image, Exif.Image.YResolution, Rational, The number of pixels per in the direction. The same value as is designated. -PlanarConfiguration, 284, 0x011c, Image, Exif.Image.PlanarConfiguration, Short, Indicates whether pixel components are recorded in a chunky or planar format. In JPEG compressed files a JPEG marker is used instead of this tag. If this field does not exist, the TIFF default of 1 (chunky) is assumed. -GrayResponseUnit, 290, 0x0122, Image, Exif.Image.GrayResponseUnit, Short, The precision of the information contained in the GrayResponseCurve. -GrayResponseCurve, 291, 0x0123, Image, Exif.Image.GrayResponseCurve, Short, For grayscale data, the optical density of each possible pixel value. -T4Options, 292, 0x0124, Image, Exif.Image.T4Options, Long, T.4-encoding options. -T6Options, 293, 0x0125, Image, Exif.Image.T6Options, Long, T.6-encoding options. -ResolutionUnit, 296, 0x0128, Image, Exif.Image.ResolutionUnit, Short, The unit for measuring and . The same unit is used for both and . If the image resolution is unknown, 2 (inches) is designated. -TransferFunction, 301, 0x012d, Image, Exif.Image.TransferFunction, Short, A transfer function for the image, described in tabular style. Normally this tag is not necessary, since color space is specified in the color space information tag (). -Software, 305, 0x0131, Image, Exif.Image.Software, Ascii, This tag records the name and version of the software or firmware of the camera or image input device used to generate the image. The detailed format is not specified, but it is recommended that the example shown below be followed. When the field is left blank, it is treated as unknown. -DateTime, 306, 0x0132, Image, Exif.Image.DateTime, Ascii, The date and time of image creation. In Exif standard, it is the date and time the file was changed. -Artist, 315, 0x013b, Image, Exif.Image.Artist, Ascii, This tag records the name of the camera owner, photographer or image creator. The detailed format is not specified, but it is recommended that the information be written as in the example below for ease of Interoperability. When the field is left blank, it is treated as unknown. Ex.) "Camera owner, John Smith; Photographer, Michael Brown; Image creator, Ken James" -HostComputer, 316, 0x013c, Image, Exif.Image.HostComputer, Ascii, This tag records information about the host computer used to generate the image. -Predictor, 317, 0x013d, Image, Exif.Image.Predictor, Short, A predictor is a mathematical operator that is applied to the image data before an encoding scheme is applied. -WhitePoint, 318, 0x013e, Image, Exif.Image.WhitePoint, Rational, The chromaticity of the white point of the image. Normally this tag is not necessary, since color space is specified in the colorspace information tag (). -PrimaryChromaticities, 319, 0x013f, Image, Exif.Image.PrimaryChromaticities, Rational, The chromaticity of the three primary colors of the image. Normally this tag is not necessary, since colorspace is specified in the colorspace information tag (). -ColorMap, 320, 0x0140, Image, Exif.Image.ColorMap, Short, A color map for palette color images. This field defines a Red-Green-Blue color map (often called a lookup table) for palette-color images. In a palette-color image, a pixel value is used to index into an RGB lookup table. -HalftoneHints, 321, 0x0141, Image, Exif.Image.HalftoneHints, Short, The purpose of the HalftoneHints field is to convey to the halftone function the range of gray levels within a colorimetrically-specified image that should retain tonal detail. -TileWidth, 322, 0x0142, Image, Exif.Image.TileWidth, Short, The tile width in pixels. This is the number of columns in each tile. -TileLength, 323, 0x0143, Image, Exif.Image.TileLength, Short, The tile length (height) in pixels. This is the number of rows in each tile. -TileOffsets, 324, 0x0144, Image, Exif.Image.TileOffsets, Short, For each tile, the byte offset of that tile, as compressed and stored on disk. The offset is specified with respect to the beginning of the TIFF file. Note that this implies that each tile has a location independent of the locations of other tiles. -TileByteCounts, 325, 0x0145, Image, Exif.Image.TileByteCounts, Short, For each tile, the number of (compressed) bytes in that tile. See TileOffsets for a description of how the byte counts are ordered. -SubIFDs, 330, 0x014a, Image, Exif.Image.SubIFDs, Long, Defined by Adobe Corporation to enable TIFF Trees within a TIFF file. -InkSet, 332, 0x014c, Image, Exif.Image.InkSet, Short, The set of inks used in a separated (PhotometricInterpretation=5) image. -InkNames, 333, 0x014d, Image, Exif.Image.InkNames, Ascii, The name of each ink used in a separated (PhotometricInterpretation=5) image. -NumberOfInks, 334, 0x014e, Image, Exif.Image.NumberOfInks, Short, The number of inks. Usually equal to SamplesPerPixel, unless there are extra samples. -DotRange, 336, 0x0150, Image, Exif.Image.DotRange, Byte, The component values that correspond to a 0% dot and 100% dot. -TargetPrinter, 337, 0x0151, Image, Exif.Image.TargetPrinter, Ascii, A description of the printing environment for which this separation is intended. -ExtraSamples, 338, 0x0152, Image, Exif.Image.ExtraSamples, Short, Specifies that each pixel has m extra components whose interpretation is defined by one of the values listed below. -SampleFormat, 339, 0x0153, Image, Exif.Image.SampleFormat, Short, This field specifies how to interpret each data sample in a pixel. -SMinSampleValue, 340, 0x0154, Image, Exif.Image.SMinSampleValue, Short, This field specifies the minimum sample value. -SMaxSampleValue, 341, 0x0155, Image, Exif.Image.SMaxSampleValue, Short, This field specifies the maximum sample value. -TransferRange, 342, 0x0156, Image, Exif.Image.TransferRange, Short, Expands the range of the TransferFunction -ClipPath, 343, 0x0157, Image, Exif.Image.ClipPath, Byte, A TIFF ClipPath is intended to mirror the essentials of PostScript's path creation functionality. -XClipPathUnits, 344, 0x0158, Image, Exif.Image.XClipPathUnits, SShort, The number of units that span the width of the image, in terms of integer ClipPath coordinates. -YClipPathUnits, 345, 0x0159, Image, Exif.Image.YClipPathUnits, SShort, The number of units that span the height of the image, in terms of integer ClipPath coordinates. -Indexed, 346, 0x015a, Image, Exif.Image.Indexed, Short, Indexed images are images where the 'pixels' do not represent color values, but rather an index (usually 8-bit) into a separate color table, the ColorMap. -JPEGTables, 347, 0x015b, Image, Exif.Image.JPEGTables, Undefined, This optional tag may be used to encode the JPEG quantization andHuffman tables for subsequent use by the JPEG decompression process. -OPIProxy, 351, 0x015f, Image, Exif.Image.OPIProxy, Short, OPIProxy gives information concerning whether this image is a low-resolution proxy of a high-resolution image (Adobe OPI). -JPEGProc, 512, 0x0200, Image, Exif.Image.JPEGProc, Long, This field indicates the process used to produce the compressed data -JPEGInterchangeFormat, 513, 0x0201, Image, Exif.Image.JPEGInterchangeFormat, Long, The offset to the start byte (SOI) of JPEG compressed thumbnail data. This is not used for primary image JPEG data. -JPEGInterchangeFormatLength, 514, 0x0202, Image, Exif.Image.JPEGInterchangeFormatLength, Long, The number of bytes of JPEG compressed thumbnail data. This is not used for primary image JPEG data. JPEG thumbnails are not divided but are recorded as a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not be recorded. Compressed thumbnails must be recorded in no more than 64 Kbytes, including all other data to be recorded in APP1. -JPEGRestartInterval, 515, 0x0203, Image, Exif.Image.JPEGRestartInterval, Short, This Field indicates the length of the restart interval used in the compressed image data. -JPEGLosslessPredictors, 517, 0x0205, Image, Exif.Image.JPEGLosslessPredictors, Short, This Field points to a list of lossless predictor-selection values, one per component. -JPEGPointTransforms, 518, 0x0206, Image, Exif.Image.JPEGPointTransforms, Short, This Field points to a list of point transform values, one per component. -JPEGQTables, 519, 0x0207, Image, Exif.Image.JPEGQTables, Long, This Field points to a list of offsets to the quantization tables, one per component. -JPEGDCTables, 520, 0x0208, Image, Exif.Image.JPEGDCTables, Long, This Field points to a list of offsets to the DC Huffman tables or the lossless Huffman tables, one per component. -JPEGACTables, 521, 0x0209, Image, Exif.Image.JPEGACTables, Long, This Field points to a list of offsets to the Huffman AC tables, one per component. -YCbCrCoefficients, 529, 0x0211, Image, Exif.Image.YCbCrCoefficients, Rational, The matrix coefficients for transformation from RGB to YCbCr image data. No default is given in TIFF; but here the value given in Appendix E, "Color Space Guidelines", is used as the default. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability this condition. -YCbCrSubSampling, 530, 0x0212, Image, Exif.Image.YCbCrSubSampling, Short, The sampling ratio of chrominance components in relation to the luminance component. In JPEG compressed data a JPEG marker is used instead of this tag. -YCbCrPositioning, 531, 0x0213, Image, Exif.Image.YCbCrPositioning, Short, The position of chrominance components in relation to the luminance component. This field is designated only for JPEG compressed data or uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr = 4:2:2 it is recommended in this standard that 2 (co-sited) be used to record data, in order to improve the image quality when viewed on TV systems. When this field does not exist, the reader shall assume the TIFF default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is recommended. If the reader does not have the capability of supporting both kinds of , it shall follow the TIFF default regardless of the value in this field. It is preferable that readers be able to support both centered and co-sited positioning. -ReferenceBlackWhite, 532, 0x0214, Image, Exif.Image.ReferenceBlackWhite, Rational, The reference black point value and reference white point value. No defaults are given in TIFF, but the values below are given as defaults here. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability these conditions. -XMLPacket, 700, 0x02bc, Image, Exif.Image.XMLPacket, Byte, XMP Metadata (Adobe technote 9-14-02) -Rating, 18246, 0x4746, Image, Exif.Image.Rating, Short, Rating tag used by Windows -RatingPercent, 18249, 0x4749, Image, Exif.Image.RatingPercent, Short, Rating tag used by Windows, value in percent -ImageID, 32781, 0x800d, Image, Exif.Image.ImageID, Ascii, ImageID is the full pathname of the original, high-resolution image, or any other identifying string that uniquely identifies the original image (Adobe OPI). -CFARepeatPatternDim, 33421, 0x828d, Image, Exif.Image.CFARepeatPatternDim, Short, Contains two values representing the minimum rows and columns to define the repeating patterns of the color filter array -CFAPattern, 33422, 0x828e, Image, Exif.Image.CFAPattern, Byte, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods -BatteryLevel, 33423, 0x828f, Image, Exif.Image.BatteryLevel, Rational, Contains a value of the battery level as a fraction or string -Copyright, 33432, 0x8298, Image, Exif.Image.Copyright, Ascii, Copyright information. In this standard the tag is used to indicate both the photographer and editor copyrights. It is the copyright notice of the person or organization claiming rights to the image. The Interoperability copyright statement including date and rights should be written in this field; e.g., "Copyright, John Smith, 19xx. All rights reserved.". In this standard the field records both the photographer and editor copyrights, with each recorded in a separate part of the statement. When there is a clear distinction between the photographer and editor copyrights, these are to be written in the order of photographer followed by editor copyright, separated by NULL (in this case since the statement also ends with a NULL, there are two NULL codes). When only the photographer copyright is given, it is terminated by one NULL code . When only the editor copyright is given, the photographer copyright part consists of one space followed by a terminating NULL code, then the editor copyright is given. When the field is left blank, it is treated as unknown. -ExposureTime, 33434, 0x829a, Image, Exif.Image.ExposureTime, Rational, Exposure time, given in seconds. -FNumber, 33437, 0x829d, Image, Exif.Image.FNumber, Rational, The F number. -IPTCNAA, 33723, 0x83bb, Image, Exif.Image.IPTCNAA, Long, Contains an IPTC/NAA record -ImageResources, 34377, 0x8649, Image, Exif.Image.ImageResources, Byte, Contains information embedded by the Adobe Photoshop application -ExifTag, 34665, 0x8769, Image, Exif.Image.ExifTag, Long, A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure as that of the IFD specified in TIFF. ordinarily, however, it does not contain image data as in the case of TIFF. -InterColorProfile, 34675, 0x8773, Image, Exif.Image.InterColorProfile, Undefined, Contains an InterColor Consortium (ICC) format color space characterization/profile -ExposureProgram, 34850, 0x8822, Image, Exif.Image.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Image, Exif.Image.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. -GPSTag, 34853, 0x8825, Image, Exif.Image.GPSTag, Long, A pointer to the GPS Info IFD. The Interoperability structure of the GPS Info IFD, like that of Exif IFD, has no image data. -ISOSpeedRatings, 34855, 0x8827, Image, Exif.Image.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Image, Exif.Image.OECF, Undefined, Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524. -Interlace, 34857, 0x8829, Image, Exif.Image.Interlace, Short, Indicates the field number of multifield images. -TimeZoneOffset, 34858, 0x882a, Image, Exif.Image.TimeZoneOffset, SShort, This optional tag encodes the time zone of the camera clock (relativeto Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the picture was taken. It may also contain the time zone offsetof the clock used to create the DateTime tag-value when the image wasmodified. -SelfTimerMode, 34859, 0x882b, Image, Exif.Image.SelfTimerMode, Short, Number of seconds image capture was delayed from button press. -DateTimeOriginal, 36867, 0x9003, Image, Exif.Image.DateTimeOriginal, Ascii, The date and time when the original image data was generated. -CompressedBitsPerPixel, 37122, 0x9102, Image, Exif.Image.CompressedBitsPerPixel, Rational, Specific to compressed data; states the compressed bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Image, Exif.Image.ShutterSpeedValue, SRational, Shutter speed. -ApertureValue, 37378, 0x9202, Image, Exif.Image.ApertureValue, Rational, The lens aperture. -BrightnessValue, 37379, 0x9203, Image, Exif.Image.BrightnessValue, SRational, The value of brightness. -ExposureBiasValue, 37380, 0x9204, Image, Exif.Image.ExposureBiasValue, SRational, The exposure bias. -MaxApertureValue, 37381, 0x9205, Image, Exif.Image.MaxApertureValue, Rational, The smallest F number of the lens. -SubjectDistance, 37382, 0x9206, Image, Exif.Image.SubjectDistance, SRational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Image, Exif.Image.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Image, Exif.Image.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Image, Exif.Image.Flash, Short, Indicates the status of flash when the image was shot. -FocalLength, 37386, 0x920a, Image, Exif.Image.FocalLength, Rational, The actual focal length of the lens, in mm. -FlashEnergy, 37387, 0x920b, Image, Exif.Image.FlashEnergy, Rational, Amount of flash energy (BCPS). -SpatialFrequencyResponse, 37388, 0x920c, Image, Exif.Image.SpatialFrequencyResponse, Undefined, SFR of the camera. -Noise, 37389, 0x920d, Image, Exif.Image.Noise, Undefined, Noise measurement values. -FocalPlaneXResolution, 37390, 0x920e, Image, Exif.Image.FocalPlaneXResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth direction for main image. -FocalPlaneYResolution, 37391, 0x920f, Image, Exif.Image.FocalPlaneYResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength direction for main image. -FocalPlaneResolutionUnit, 37392, 0x9210, Image, Exif.Image.FocalPlaneResolutionUnit, Short, Unit of measurement for FocalPlaneXResolution(37390) and FocalPlaneYResolution(37391). -ImageNumber, 37393, 0x9211, Image, Exif.Image.ImageNumber, Long, Number assigned to an image, e.g., in a chained image burst. -SecurityClassification, 37394, 0x9212, Image, Exif.Image.SecurityClassification, Ascii, Security classification assigned to the image. -ImageHistory, 37395, 0x9213, Image, Exif.Image.ImageHistory, Ascii, Record of what has been done to the image. -SubjectLocation, 37396, 0x9214, Image, Exif.Image.SubjectLocation, Short, Indicates the location and area of the main subject in the overall scene. -ExposureIndex, 37397, 0x9215, Image, Exif.Image.ExposureIndex, Rational, Encodes the camera exposure index setting when image was captured. -TIFFEPStandardID, 37398, 0x9216, Image, Exif.Image.TIFFEPStandardID, Byte, Contains four ASCII characters representing the TIFF/EP standard version of a TIFF/EP file, eg '1', '0', '0', '0' -SensingMethod, 37399, 0x9217, Image, Exif.Image.SensingMethod, Short, Type of image sensor. -XPTitle, 40091, 0x9c9b, Image, Exif.Image.XPTitle, Byte, Title tag used by Windows, encoded in UCS2 -XPComment, 40092, 0x9c9c, Image, Exif.Image.XPComment, Byte, Comment tag used by Windows, encoded in UCS2 -XPAuthor, 40093, 0x9c9d, Image, Exif.Image.XPAuthor, Byte, Author tag used by Windows, encoded in UCS2 -XPKeywords, 40094, 0x9c9e, Image, Exif.Image.XPKeywords, Byte, Keywords tag used by Windows, encoded in UCS2 -XPSubject, 40095, 0x9c9f, Image, Exif.Image.XPSubject, Byte, Subject tag used by Windows, encoded in UCS2 -PrintImageMatching, 50341, 0xc4a5, Image, Exif.Image.PrintImageMatching, Undefined, Print Image Matching, description needed. -DNGVersion, 50706, 0xc612, Image, Exif.Image.DNGVersion, Byte, This tag encodes the DNG four-tier version number. For files compliant with version 1.1.0.0 of the DNG specification, this tag should contain the bytes: 1, 1, 0, 0. -DNGBackwardVersion, 50707, 0xc613, Image, Exif.Image.DNGBackwardVersion, Byte, This tag specifies the oldest version of the Digital Negative specification for which a file is compatible. Readers shouldnot attempt to read a file if this tag specifies a version number that is higher than the version number of the specification the reader was based on. In addition to checking the version tags, readers should, for all tags, check the types, counts, and values, to verify it is able to correctly read the file. -UniqueCameraModel, 50708, 0xc614, Image, Exif.Image.UniqueCameraModel, Ascii, Defines a unique, non-localized name for the camera model that created the image in the raw file. This name should include the manufacturer's name to avoid conflicts, and should not be localized, even if the camera name itself is localized for different markets (see LocalizedCameraModel). This string may be used by reader software to index into per-model preferences and replacement profiles. -LocalizedCameraModel, 50709, 0xc615, Image, Exif.Image.LocalizedCameraModel, Byte, Similar to the UniqueCameraModel field, except the name can be localized for different markets to match the localization of the camera name. -CFAPlaneColor, 50710, 0xc616, Image, Exif.Image.CFAPlaneColor, Byte, Provides a mapping between the values in the CFAPattern tag and the plane numbers in LinearRaw space. This is a required tag for non-RGB CFA images. -CFALayout, 50711, 0xc617, Image, Exif.Image.CFALayout, Short, Describes the spatial layout of the CFA. -LinearizationTable, 50712, 0xc618, Image, Exif.Image.LinearizationTable, Short, Describes a lookup table that maps stored values into linear values. This tag is typically used to increase compression ratios by storing the raw data in a non-linear, more visually uniform space with fewer total encoding levels. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelRepeatDim, 50713, 0xc619, Image, Exif.Image.BlackLevelRepeatDim, Short, Specifies repeat pattern size for the BlackLevel tag. -BlackLevel, 50714, 0xc61a, Image, Exif.Image.BlackLevel, Rational, Specifies the zero light (a.k.a. thermal black or black current) encoding level, as a repeating pattern. The origin of this pattern is the top-left corner of the ActiveArea rectangle. The values are stored in row-column-sample scan order. -BlackLevelDeltaH, 50715, 0xc61b, Image, Exif.Image.BlackLevelDeltaH, SRational, If the zero light encoding level is a function of the image column, BlackLevelDeltaH specifies the difference between the zero light encoding level for each column and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelDeltaV, 50716, 0xc61c, Image, Exif.Image.BlackLevelDeltaV, SRational, If the zero light encoding level is a function of the image row, this tag specifies the difference between the zero light encoding level for each row and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -WhiteLevel, 50717, 0xc61d, Image, Exif.Image.WhiteLevel, Short, This tag specifies the fully saturated encoding level for the raw sample values. Saturation is caused either by the sensor itself becoming highly non-linear in response, or by the camera's analog to digital converter clipping. -DefaultScale, 50718, 0xc61e, Image, Exif.Image.DefaultScale, Rational, DefaultScale is required for cameras with non-square pixels. It specifies the default scale factors for each direction to convert the image to square pixels. Typically these factors are selected to approximately preserve total pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such as the Fujifilm SuperCCD, these two values should usually differ by a factor of 2.0. -DefaultCropOrigin, 50719, 0xc61f, Image, Exif.Image.DefaultCropOrigin, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropOrigin specifies the origin of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied), relative to the top-left corner of the ActiveArea rectangle. -DefaultCropSize, 50720, 0xc620, Image, Exif.Image.DefaultCropSize, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropSize specifies the size of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied). -ColorMatrix1, 50721, 0xc621, Image, Exif.Image.ColorMatrix1, SRational, ColorMatrix1 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the first calibration illuminant. The matrix values are stored in row scan order. The ColorMatrix1 tag is required for all non-monochrome DNG files. -ColorMatrix2, 50722, 0xc622, Image, Exif.Image.ColorMatrix2, SRational, ColorMatrix2 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the second calibration illuminant. The matrix values are stored in row scan order. -CameraCalibration1, 50723, 0xc623, Image, Exif.Image.CameraCalibration1, SRational, CameraClalibration1 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the first calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix1 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -CameraCalibration2, 50724, 0xc624, Image, Exif.Image.CameraCalibration2, SRational, CameraCalibration2 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the second calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix2 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -ReductionMatrix1, 50725, 0xc625, Image, Exif.Image.ReductionMatrix1, SRational, ReductionMatrix1 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the first calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -ReductionMatrix2, 50726, 0xc626, Image, Exif.Image.ReductionMatrix2, SRational, ReductionMatrix2 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the second calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -AnalogBalance, 50727, 0xc627, Image, Exif.Image.AnalogBalance, Rational, Normally the stored raw values are not white balanced, since any digital white balancing will reduce the dynamic range of the final image if the user decides to later adjust the white balance; however, if camera hardware is capable of white balancing the color channels before the signal is digitized, it can improve the dynamic range of the final image. AnalogBalance defines the gain, either analog (recommended) or digital (not recommended) that has been applied the stored raw values. -AsShotNeutral, 50728, 0xc628, Image, Exif.Image.AsShotNeutral, Short, Specifies the selected white balance at time of capture, encoded as the coordinates of a perfectly neutral color in linear reference space values. The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag. -AsShotWhiteXY, 50729, 0xc629, Image, Exif.Image.AsShotWhiteXY, Rational, Specifies the selected white balance at time of capture, encoded as x-y chromaticity coordinates. The inclusion of this tag precludes the inclusion of the AsShotNeutral tag. -BaselineExposure, 50730, 0xc62a, Image, Exif.Image.BaselineExposure, SRational, Camera models vary in the trade-off they make between highlight headroom and shadow noise. Some leave a significant amount of highlight headroom during a normal exposure. This allows significant negative exposure compensation to be applied during raw conversion, but also means normal exposures will contain more shadow noise. Other models leave less headroom during normal exposures. This allows for less negative exposure compensation, but results in lower shadow noise for normal exposures. Because of these differences, a raw converter needs to vary the zero point of its exposure compensation control from model to model. BaselineExposure specifies by how much (in EV units) to move the zero point. Positive values result in brighter default results, while negative values result in darker default results. -BaselineNoise, 50731, 0xc62b, Image, Exif.Image.BaselineNoise, Rational, Specifies the relative noise level of the camera model at a baseline ISO value of 100, compared to a reference camera model. Since noise levels tend to vary approximately with the square root of the ISO value, a raw converter can use this value, combined with the current ISO, to estimate the relative noise level of the current image. -BaselineSharpness, 50732, 0xc62c, Image, Exif.Image.BaselineSharpness, Rational, Specifies the relative amount of sharpening required for this camera model, compared to a reference camera model. Camera models vary in the strengths of their anti-aliasing filters. Cameras with weak or no filters require less sharpening than cameras with strong anti-aliasing filters. -BayerGreenSplit, 50733, 0xc62d, Image, Exif.Image.BayerGreenSplit, Long, Only applies to CFA images using a Bayer pattern filter array. This tag specifies, in arbitrary units, how closely the values of the green pixels in the blue/green rows track the values of the green pixels in the red/green rows. A value of zero means the two kinds of green pixels track closely, while a non-zero value means they sometimes diverge. The useful range for this tag is from 0 (no divergence) to about 5000 (quite large divergence). -LinearResponseLimit, 50734, 0xc62e, Image, Exif.Image.LinearResponseLimit, Rational, Some sensors have an unpredictable non-linearity in their response as they near the upper limit of their encoding range. This non-linearity results in color shifts in the highlight areas of the resulting image unless the raw converter compensates for this effect. LinearResponseLimit specifies the fraction of the encoding range above which the response may become significantly non-linear. -CameraSerialNumber, 50735, 0xc62f, Image, Exif.Image.CameraSerialNumber, Ascii, CameraSerialNumber contains the serial number of the camera or camera body that captured the image. -LensInfo, 50736, 0xc630, Image, Exif.Image.LensInfo, Rational, Contains information about the lens that captured the image. If the minimum f-stops are unknown, they should be encoded as 0/0. -ChromaBlurRadius, 50737, 0xc631, Image, Exif.Image.ChromaBlurRadius, Rational, ChromaBlurRadius provides a hint to the DNG reader about how much chroma blur should be applied to the image. If this tag is omitted, the reader will use its default amount of chroma blurring. Normally this tag is only included for non-CFA images, since the amount of chroma blur required for mosaic images is highly dependent on the de-mosaic algorithm, in which case the DNG reader's default value is likely optimized for its particular de-mosaic algorithm. -AntiAliasStrength, 50738, 0xc632, Image, Exif.Image.AntiAliasStrength, Rational, Provides a hint to the DNG reader about how strong the camera's anti-alias filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is prone to aliasing artifacts with some subjects), while a value of 1.0 means a strong anti-alias filter (i.e., the camera almost never has aliasing artifacts). -ShadowScale, 50739, 0xc633, Image, Exif.Image.ShadowScale, SRational, This tag is used by Adobe Camera Raw to control the sensitivity of its 'Shadows' slider. -DNGPrivateData, 50740, 0xc634, Image, Exif.Image.DNGPrivateData, Byte, Provides a way for camera manufacturers to store private data in the DNG file for use by their own raw converters, and to have that data preserved by programs that edit DNG files. -MakerNoteSafety, 50741, 0xc635, Image, Exif.Image.MakerNoteSafety, Short, MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is safe to preserve along with the rest of the EXIF data. File browsers and other image management software processing an image with a preserved MakerNote should be aware that any thumbnail image embedded in the MakerNote may be stale, and may not reflect the current state of the full size image. -CalibrationIlluminant1, 50778, 0xc65a, Image, Exif.Image.CalibrationIlluminant1, Short, The illuminant used for the first set of color calibration tags (ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for this tag are the same as the legal values for the LightSource EXIF tag. -CalibrationIlluminant2, 50779, 0xc65b, Image, Exif.Image.CalibrationIlluminant2, Short, The illuminant used for an optional second set of color calibration tags (ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for this tag are the same as the legal values for the CalibrationIlluminant1 tag; however, if both are included, neither is allowed to have a value of 0 (unknown). -BestQualityScale, 50780, 0xc65c, Image, Exif.Image.BestQualityScale, Rational, For some cameras, the best possible image quality is not achieved by preserving the total pixel count during conversion. For example, Fujifilm SuperCCD images have maximum detail when their total pixel count is doubled. This tag specifies the amount by which the values of the DefaultScale tag need to be multiplied to achieve the best quality image size. -RawDataUniqueID, 50781, 0xc65d, Image, Exif.Image.RawDataUniqueID, Byte, This tag contains a 16-byte unique identifier for the raw image data in the DNG file. DNG readers can use this tag to recognize a particular raw image, even if the file's name or the metadata contained in the file has been changed. If a DNG writer creates such an identifier, it should do so using an algorithm that will ensure that it is very unlikely two different images will end up having the same identifier. -OriginalRawFileName, 50827, 0xc68b, Image, Exif.Image.OriginalRawFileName, Byte, If the DNG file was converted from a non-DNG raw file, then this tag contains the file name of that original raw file. -OriginalRawFileData, 50828, 0xc68c, Image, Exif.Image.OriginalRawFileData, Undefined, If the DNG file was converted from a non-DNG raw file, then this tag contains the compressed contents of that original raw file. The contents of this tag always use the big-endian byte order. The tag contains a sequence of data blocks. Future versions of the DNG specification may define additional data blocks, so DNG readers should ignore extra bytes when parsing this tag. DNG readers should also detect the case where data blocks are missing from the end of the sequence, and should assume a default value for all the missing blocks. There are no padding or alignment bytes between data blocks. -ActiveArea, 50829, 0xc68d, Image, Exif.Image.ActiveArea, Short, This rectangle defines the active (non-masked) pixels of the sensor. The order of the rectangle coordinates is: top, left, bottom, right. -MaskedAreas, 50830, 0xc68e, Image, Exif.Image.MaskedAreas, Short, This tag contains a list of non-overlapping rectangle coordinates of fully masked pixels, which can be optionally used by DNG readers to measure the black encoding level. The order of each rectangle's coordinates is: top, left, bottom, right. If the raw image data has already had its black encoding level subtracted, then this tag should not be used, since the masked pixels are no longer useful. -AsShotICCProfile, 50831, 0xc68f, Image, Exif.Image.AsShotICCProfile, Undefined, This tag contains an ICC profile that, in conjunction with the AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to specify a default color rendering from camera color space coordinates (linear reference values) into the ICC profile connection space. The ICC profile connection space is an output referred colorimetric space, whereas the other color calibration tags in DNG specify a conversion into a scene referred colorimetric space. This means that the rendering in this profile should include any desired tone and gamut mapping needed to convert between scene referred values and output referred values. -AsShotPreProfileMatrix, 50832, 0xc690, Image, Exif.Image.AsShotPreProfileMatrix, SRational, This tag is used in conjunction with the AsShotICCProfile tag. It specifies a matrix that should be applied to the camera color space coordinates before processing the values through the ICC profile specified in the AsShotICCProfile tag. The matrix is stored in the row scan order. If ColorPlanes is greater than three, then this matrix can (but is not required to) reduce the dimensionality of the color data down to three components, in which case the AsShotICCProfile should have three rather than ColorPlanes input components. -CurrentICCProfile, 50833, 0xc691, Image, Exif.Image.CurrentICCProfile, Undefined, This tag is used in conjunction with the CurrentPreProfileMatrix tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -CurrentPreProfileMatrix, 50834, 0xc692, Image, Exif.Image.CurrentPreProfileMatrix, SRational, This tag is used in conjunction with the CurrentICCProfile tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -ColorimetricReference, 50879, 0xc6bf, Image, Exif.Image.ColorimetricReference, Short, The DNG color model documents a transform between camera colors and CIE XYZ values. This tag describes the colorimetric reference for the CIE XYZ values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-referred, using the ICC profile perceptual dynamic range. This tag allows output-referred data to be stored in DNG files and still processed correctly by DNG readers. -CameraCalibrationSignature, 50931, 0xc6f3, Image, Exif.Image.CameraCalibrationSignature, Byte, A UTF-8 encoded string associated with the CameraCalibration1 and CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags should only be used in the DNG color transform if the string stored in the CameraCalibrationSignature tag exactly matches the string stored in the ProfileCalibrationSignature tag for the selected camera profile. -ProfileCalibrationSignature, 50932, 0xc6f4, Image, Exif.Image.ProfileCalibrationSignature, Byte, A UTF-8 encoded string associated with the camera profile tags. The CameraCalibration1 and CameraCalibration2 tags should only be used in the DNG color transfer if the string stored in the CameraCalibrationSignature tag exactly matches the string stored in the ProfileCalibrationSignature tag for the selected camera profile. -AsShotProfileName, 50934, 0xc6f6, Image, Exif.Image.AsShotProfileName, Byte, A UTF-8 encoded string containing the name of the "as shot" camera profile, if any. -NoiseReductionApplied, 50935, 0xc6f7, Image, Exif.Image.NoiseReductionApplied, Rational, This tag indicates how much noise reduction has been applied to the raw data on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has been applied. A 1.0 value indicates that the "ideal" amount of noise reduction has been applied, i.e. that the DNG reader should not apply additional noise reduction by default. A value of 0/0 indicates that this parameter is unknown. -ProfileName, 50936, 0xc6f8, Image, Exif.Image.ProfileName, Byte, A UTF-8 encoded string containing the name of the camera profile. This tag is optional if there is only a single camera profile stored in the file but is required for all camera profiles if there is more than one camera profile stored in the file. -ProfileHueSatMapDims, 50937, 0xc6f9, Image, Exif.Image.ProfileHueSatMapDims, Long, This tag specifies the number of input samples in each dimension of the hue/saturation/value mapping tables. The data for these tables are stored in ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case has ValueDivisions equal to 1, so only hue and saturation are used as inputs to the mapping table. -ProfileHueSatMapData1, 50938, 0xc6fa, Image, Exif.Image.ProfileHueSatMapData1, Float, This tag contains the data for the first hue/saturation/value mapping table. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees; the second entry is saturation scale factor; and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -ProfileHueSatMapData2, 50939, 0xc6fb, Image, Exif.Image.ProfileHueSatMapData2, Float, This tag contains the data for the second hue/saturation/value mapping table. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees; the second entry is a saturation scale factor; and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -ProfileToneCurve, 50940, 0xc6fc, Image, Exif.Image.ProfileToneCurve, Float, This tag contains a default tone curve that can be applied while processing the image as a starting point for user adjustments. The curve is specified as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each sample has an input value in the range of 0.0 to 1.0, and an output value in the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and the last sample is required to be (1.0, 1.0). Interpolated the curve using a cubic spline. -ProfileEmbedPolicy, 50941, 0xc6fd, Image, Exif.Image.ProfileEmbedPolicy, Long, This tag contains information about the usage rules for the associated camera profile. -ProfileCopyright, 50942, 0xc6fe, Image, Exif.Image.ProfileCopyright, Byte, A UTF-8 encoded string containing the copyright information for the camera profile. This string always should be preserved along with the other camera profile tags. -ForwardMatrix1, 50964, 0xc714, Image, Exif.Image.ForwardMatrix1, SRational, This tag defines a matrix that maps white balanced camera colors to XYZ D50 colors. -ForwardMatrix2, 50965, 0xc715, Image, Exif.Image.ForwardMatrix2, SRational, This tag defines a matrix that maps white balanced camera colors to XYZ D50 colors. -PreviewApplicationName, 50966, 0xc716, Image, Exif.Image.PreviewApplicationName, Byte, A UTF-8 encoded string containing the name of the application that created the preview stored in the IFD. -PreviewApplicationVersion, 50967, 0xc717, Image, Exif.Image.PreviewApplicationVersion, Byte, A UTF-8 encoded string containing the version number of the application that created the preview stored in the IFD. -PreviewSettingsName, 50968, 0xc718, Image, Exif.Image.PreviewSettingsName, Byte, A UTF-8 encoded string containing the name of the conversion settings (for example, snapshot name) used for the preview stored in the IFD. -PreviewSettingsDigest, 50969, 0xc719, Image, Exif.Image.PreviewSettingsDigest, Byte, A unique ID of the conversion settings (for example, MD5 digest) used to render the preview stored in the IFD. -PreviewColorSpace, 50970, 0xc71a, Image, Exif.Image.PreviewColorSpace, Long, This tag specifies the color space in which the rendered preview in this IFD is stored. The default value for this tag is sRGB for color previews and Gray Gamma 2.2 for monochrome previews. -PreviewDateTime, 50971, 0xc71b, Image, Exif.Image.PreviewDateTime, Ascii, This tag is an ASCII string containing the name of the date/time at which the preview stored in the IFD was rendered. The date/time is encoded using ISO 8601 format. -RawImageDigest, 50972, 0xc71c, Image, Exif.Image.RawImageDigest, Undefined, This tag is an MD5 digest of the raw image data. All pixels in the image are processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep (16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The data for each pixel is processed in little-endian byte order. -OriginalRawFileDigest, 50973, 0xc71d, Image, Exif.Image.OriginalRawFileDigest, Undefined, This tag is an MD5 digest of the data stored in the OriginalRawFileData tag. -SubTileBlockSize, 50974, 0xc71e, Image, Exif.Image.SubTileBlockSize, Long, Normally, the pixels within a tile are stored in simple row-scan order. This tag specifies that the pixels within a tile should be grouped first into rectangular blocks of the specified size. These blocks are stored in row-scan order. Within each block, the pixels are stored in row-scan order. The use of a non-default value for this tag requires setting the DNGBackwardVersion tag to at least 1.2.0.0. -RowInterleaveFactor, 50975, 0xc71f, Image, Exif.Image.RowInterleaveFactor, Long, This tag specifies that rows of the image are stored in interleaved order. The value of the tag specifies the number of interleaved fields. The use of a non-default value for this tag requires setting the DNGBackwardVersion tag to at least 1.2.0.0. -ProfileLookTableDims, 50981, 0xc725, Image, Exif.Image.ProfileLookTableDims, Long, This tag specifies the number of input samples in each dimension of a default "look" table. The data for this table is stored in the ProfileLookTableData tag. -ProfileLookTableData, 50982, 0xc726, Image, Exif.Image.ProfileLookTableData, Float, This tag contains a default "look" table that can be applied while processing the image as a starting point for user adjustment. This table uses the same format as the tables stored in the ProfileHueSatMapData1 and ProfileHueSatMapData2 tags, and is applied in the same color space. However, it should be applied later in the processing pipe, after any exposure compensation and/or fill light stages, but before any tone curve stage. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees, the second entry is a saturation scale factor, and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -OpcodeList1, 51008, 0xc740, Image, Exif.Image.OpcodeList1, Undefined, Specifies the list of opcodes that should be applied to the raw image, as read directly from the file. -OpcodeList2, 51009, 0xc741, Image, Exif.Image.OpcodeList2, Undefined, Specifies the list of opcodes that should be applied to the raw image, just after it has been mapped to linear reference values. -OpcodeList3, 51022, 0xc74e, Image, Exif.Image.OpcodeList3, Undefined, Specifies the list of opcodes that should be applied to the raw image, just after it has been demosaiced. -NoiseProfile, 51041, 0xc761, Image, Exif.Image.NoiseProfile, Double, NoiseProfile describes the amount of noise in a raw image. Specifically, this tag models the amount of signal-dependent photon (shot) noise and signal-independent sensor readout noise, two common sources of noise in raw images. The model assumes that the noise is white and spatially independent, ignoring fixed pattern effects and other sources of noise (e.g., pixel response non-uniformity, spatially-dependent thermal effects, etc.). -ExposureTime, 33434, 0x829a, Photo, Exif.Photo.ExposureTime, Rational, Exposure time, given in seconds (sec). -FNumber, 33437, 0x829d, Photo, Exif.Photo.FNumber, Rational, The F number. -ExposureProgram, 34850, 0x8822, Photo, Exif.Photo.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Photo, Exif.Photo.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. The tag value is an ASCII string compatible with the standard developed by the ASTM Technical Committee. -ISOSpeedRatings, 34855, 0x8827, Photo, Exif.Photo.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Photo, Exif.Photo.OECF, Undefined, Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO 14524. is the relationship between the camera optical input and the image values. -SensitivityType, 34864, 0x8830, Photo, Exif.Photo.SensitivityType, Short, The SensitivityType tag indicates PhotographicSensitivity tag. which one of the parameters of ISO12232 is the Although it is an optional tag, it should be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, or 7 may be used in case that the values of plural parameters are the same. -StandardOutputSensitivity, 34865, 0x8831, Photo, Exif.Photo.StandardOutputSensitivity, Long, This tag indicates the standard output sensitivity value of a camera or input device defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -RecommendedExposureIndex, 34866, 0x8832, Photo, Exif.Photo.RecommendedExposureIndex, Long, This tag indicates the recommended exposure index value of a camera or input device defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -ISOSpeed, 34867, 0x8833, Photo, Exif.Photo.ISOSpeed, Long, This tag indicates the ISO speed value of a camera or input device that is defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -ISOSpeedLatitudeyyy, 34868, 0x8834, Photo, Exif.Photo.ISOSpeedLatitudeyyy, Long, This tag indicates the ISO speed latitude yyy value of a camera or input device that is defined in ISO 12232. However, this tag shall not be recorded without ISOSpeed and ISOSpeedLatitudezzz. -ISOSpeedLatitudezzz, 34869, 0x8835, Photo, Exif.Photo.ISOSpeedLatitudezzz, Long, This tag indicates the ISO speed latitude zzz value of a camera or input device that is defined in ISO 12232. However, this tag shall not be recorded without ISOSpeed and ISOSpeedLatitudeyyy. -ExifVersion, 36864, 0x9000, Photo, Exif.Photo.ExifVersion, Undefined, The version of this standard supported. Nonexistence of this field is taken to mean nonconformance to the standard. -DateTimeOriginal, 36867, 0x9003, Photo, Exif.Photo.DateTimeOriginal, Ascii, The date and time when the original image data was generated. For a digital still camera the date and time the picture was taken are recorded. -DateTimeDigitized, 36868, 0x9004, Photo, Exif.Photo.DateTimeDigitized, Ascii, The date and time when the image was stored as digital data. -ComponentsConfiguration, 37121, 0x9101, Photo, Exif.Photo.ComponentsConfiguration, Undefined, Information specific to compressed data. The channels of each component are arranged in order from the 1st component to the 4th. For uncompressed data the data arrangement is given in the tag. However, since can only express the order of Y, Cb and Cr, this tag is provided for cases when compressed data uses components other than Y, Cb, and Cr and to enable support of other sequences. -CompressedBitsPerPixel, 37122, 0x9102, Photo, Exif.Photo.CompressedBitsPerPixel, Rational, Information specific to compressed data. The compression mode used for a compressed image is indicated in unit bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Photo, Exif.Photo.ShutterSpeedValue, SRational, Shutter speed. The unit is the APEX (Additive System of Photographic Exposure) setting. -ApertureValue, 37378, 0x9202, Photo, Exif.Photo.ApertureValue, Rational, The lens aperture. The unit is the APEX value. -BrightnessValue, 37379, 0x9203, Photo, Exif.Photo.BrightnessValue, SRational, The value of brightness. The unit is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -ExposureBiasValue, 37380, 0x9204, Photo, Exif.Photo.ExposureBiasValue, SRational, The exposure bias. The units is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -MaxApertureValue, 37381, 0x9205, Photo, Exif.Photo.MaxApertureValue, Rational, The smallest F number of the lens. The unit is the APEX value. Ordinarily it is given in the range of 00.00 to 99.99, but it is not limited to this range. -SubjectDistance, 37382, 0x9206, Photo, Exif.Photo.SubjectDistance, Rational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Photo, Exif.Photo.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Photo, Exif.Photo.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Photo, Exif.Photo.Flash, Short, This tag is recorded when an image is taken using a strobe light (flash). -FocalLength, 37386, 0x920a, Photo, Exif.Photo.FocalLength, Rational, The actual focal length of the lens, in mm. Conversion is not made to the focal length of a 35 mm film camera. -SubjectArea, 37396, 0x9214, Photo, Exif.Photo.SubjectArea, Short, This tag indicates the location and area of the main subject in the overall scene. -MakerNote, 37500, 0x927c, Photo, Exif.Photo.MakerNote, Undefined, A tag for manufacturers of Exif writers to record any desired information. The contents are up to the manufacturer. -UserComment, 37510, 0x9286, Photo, Exif.Photo.UserComment, Comment, A tag for Exif users to write keywords or comments on the image besides those in , and without the character code limitations of the tag. -SubSecTime, 37520, 0x9290, Photo, Exif.Photo.SubSecTime, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeOriginal, 37521, 0x9291, Photo, Exif.Photo.SubSecTimeOriginal, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeDigitized, 37522, 0x9292, Photo, Exif.Photo.SubSecTimeDigitized, Ascii, A tag used to record fractions of seconds for the tag. -FlashpixVersion, 40960, 0xa000, Photo, Exif.Photo.FlashpixVersion, Undefined, The FlashPix format version supported by a FPXR file. -ColorSpace, 40961, 0xa001, Photo, Exif.Photo.ColorSpace, Short, The color space information tag is always recorded as the color space specifier. Normally sRGB is used to define the color space based on the PC monitor conditions and environment. If a color space other than sRGB is used, Uncalibrated is set. Image data recorded as Uncalibrated can be treated as sRGB when it is converted to FlashPix. -PixelXDimension, 40962, 0xa002, Photo, Exif.Photo.PixelXDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid width of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. -PixelYDimension, 40963, 0xa003, Photo, Exif.Photo.PixelYDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid height of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. Since data padding is unnecessary in the vertical direction, the number of lines recorded in this valid image height tag will in fact be the same as that recorded in the SOF. -RelatedSoundFile, 40964, 0xa004, Photo, Exif.Photo.RelatedSoundFile, Ascii, This tag is used to record the name of an audio file related to the image data. The only relational information recorded here is the Exif audio file name and extension (an ASCII string consisting of 8 characters + '.' + 3 characters). The path is not recorded. -InteroperabilityTag, 40965, 0xa005, Photo, Exif.Photo.InteroperabilityTag, Long, Interoperability IFD is composed of tags which stores the information to ensure the Interoperability and pointed by the following tag located in Exif IFD. The Interoperability structure of Interoperability IFD is the same as TIFF defined IFD structure but does not contain the image data characteristically compared with normal TIFF IFD. -FlashEnergy, 41483, 0xa20b, Photo, Exif.Photo.FlashEnergy, Rational, Indicates the strobe energy at the time the image is captured, as measured in Beam Candle Power Seconds (BCPS). -SpatialFrequencyResponse, 41484, 0xa20c, Photo, Exif.Photo.SpatialFrequencyResponse, Undefined, This tag records the camera or input device spatial frequency table and SFR values in the direction of image width, image height, and diagonal direction, as specified in ISO 12233. -FocalPlaneXResolution, 41486, 0xa20e, Photo, Exif.Photo.FocalPlaneXResolution, Rational, Indicates the number of pixels in the image width (X) direction per on the camera focal plane. -FocalPlaneYResolution, 41487, 0xa20f, Photo, Exif.Photo.FocalPlaneYResolution, Rational, Indicates the number of pixels in the image height (V) direction per on the camera focal plane. -FocalPlaneResolutionUnit, 41488, 0xa210, Photo, Exif.Photo.FocalPlaneResolutionUnit, Short, Indicates the unit for measuring and . This value is the same as the . -SubjectLocation, 41492, 0xa214, Photo, Exif.Photo.SubjectLocation, Short, Indicates the location of the main subject in the scene. The value of this tag represents the pixel at the center of the main subject relative to the left edge, prior to rotation processing as per the tag. The first value indicates the X column number and second indicates the Y row number. -ExposureIndex, 41493, 0xa215, Photo, Exif.Photo.ExposureIndex, Rational, Indicates the exposure index selected on the camera or input device at the time the image is captured. -SensingMethod, 41495, 0xa217, Photo, Exif.Photo.SensingMethod, Short, Indicates the image sensor type on the camera or input device. -FileSource, 41728, 0xa300, Photo, Exif.Photo.FileSource, Undefined, Indicates the image source. If a DSC recorded the image, this tag value of this tag always be set to 3, indicating that the image was recorded on a DSC. -SceneType, 41729, 0xa301, Photo, Exif.Photo.SceneType, Undefined, Indicates the type of scene. If a DSC recorded the image, this tag value must always be set to 1, indicating that the image was directly photographed. -CFAPattern, 41730, 0xa302, Photo, Exif.Photo.CFAPattern, Undefined, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods. -CustomRendered, 41985, 0xa401, Photo, Exif.Photo.CustomRendered, Short, This tag indicates the use of special processing on image data, such as rendering geared to output. When special processing is performed, the reader is expected to disable or minimize any further processing. -ExposureMode, 41986, 0xa402, Photo, Exif.Photo.ExposureMode, Short, This tag indicates the exposure mode set when the image was shot. In auto-bracketing mode, the camera shoots a series of frames of the same scene at different exposure settings. -WhiteBalance, 41987, 0xa403, Photo, Exif.Photo.WhiteBalance, Short, This tag indicates the white balance mode set when the image was shot. -DigitalZoomRatio, 41988, 0xa404, Photo, Exif.Photo.DigitalZoomRatio, Rational, This tag indicates the digital zoom ratio when the image was shot. If the numerator of the recorded value is 0, this indicates that digital zoom was not used. -FocalLengthIn35mmFilm, 41989, 0xa405, Photo, Exif.Photo.FocalLengthIn35mmFilm, Short, This tag indicates the equivalent focal length assuming a 35mm film camera, in mm. A value of 0 means the focal length is unknown. Note that this tag differs from the tag. -SceneCaptureType, 41990, 0xa406, Photo, Exif.Photo.SceneCaptureType, Short, This tag indicates the type of scene that was shot. It can also be used to record the mode in which the image was shot. Note that this differs from the tag. -GainControl, 41991, 0xa407, Photo, Exif.Photo.GainControl, Short, This tag indicates the degree of overall image gain adjustment. -Contrast, 41992, 0xa408, Photo, Exif.Photo.Contrast, Short, This tag indicates the direction of contrast processing applied by the camera when the image was shot. -Saturation, 41993, 0xa409, Photo, Exif.Photo.Saturation, Short, This tag indicates the direction of saturation processing applied by the camera when the image was shot. -Sharpness, 41994, 0xa40a, Photo, Exif.Photo.Sharpness, Short, This tag indicates the direction of sharpness processing applied by the camera when the image was shot. -DeviceSettingDescription, 41995, 0xa40b, Photo, Exif.Photo.DeviceSettingDescription, Undefined, This tag indicates information on the picture-taking conditions of a particular camera model. The tag is used only to indicate the picture-taking conditions in the reader. -SubjectDistanceRange, 41996, 0xa40c, Photo, Exif.Photo.SubjectDistanceRange, Short, This tag indicates the distance to the subject. -ImageUniqueID, 42016, 0xa420, Photo, Exif.Photo.ImageUniqueID, Ascii, This tag indicates an identifier assigned uniquely to each image. It is recorded as an ASCII string equivalent to hexadecimal notation and 128-bit fixed length. -CameraOwnerName, 42032, 0xa430, Photo, Exif.Photo.CameraOwnerName, Ascii, This tag records the owner of a camera used in photography as an ASCII string. -BodySerialNumber, 42033, 0xa431, Photo, Exif.Photo.BodySerialNumber, Ascii, This tag records the serial number of the body of the camera that was used in photography as an ASCII string. -LensSpecification, 42034, 0xa432, Photo, Exif.Photo.LensSpecification, Rational, This tag notes minimum focal length, maximum focal length, minimum F number in the minimum focal length, and minimum F number in the maximum focal length, which are specification information for the lens that was used in photography. When the minimum F number is unknown, the notation is 0/0 -LensMake, 42035, 0xa433, Photo, Exif.Photo.LensMake, Ascii, This tag records the lens manufactor as an ASCII string. -LensModel, 42036, 0xa434, Photo, Exif.Photo.LensModel, Ascii, This tag records the lens's model name and model number as an ASCII string. -LensSerialNumber, 42037, 0xa435, Photo, Exif.Photo.LensSerialNumber, Ascii, This tag records the serial number of the interchangeable lens that was used in photography as an ASCII string. -InteroperabilityIndex, 1, 0x0001, Iop, Exif.Iop.InteroperabilityIndex, Ascii, Indicates the identification of the Interoperability rule. Use "R98" for stating ExifR98 Rules. Four bytes used including the termination code (NULL). see the separate volume of Recommended Exif Interoperability Rules (ExifR98) for other tags used for ExifR98. -InteroperabilityVersion, 2, 0x0002, Iop, Exif.Iop.InteroperabilityVersion, Undefined, Interoperability version -RelatedImageFileFormat, 4096, 0x1000, Iop, Exif.Iop.RelatedImageFileFormat, Ascii, File format of image file -RelatedImageWidth, 4097, 0x1001, Iop, Exif.Iop.RelatedImageWidth, Long, Image width -RelatedImageLength, 4098, 0x1002, Iop, Exif.Iop.RelatedImageLength, Long, Image height -GPSVersionID, 0, 0x0000, GPSInfo, Exif.GPSInfo.GPSVersionID, Byte, Indicates the version of . The version is given as 2.0.0.0. This tag is mandatory when tag is present. (Note: The tag is given in bytes, unlike the tag. When the version is 2.0.0.0, the tag value is 02000000.H). -GPSLatitudeRef, 1, 0x0001, GPSInfo, Exif.GPSInfo.GPSLatitudeRef, Ascii, Indicates whether the latitude is north or south latitude. The ASCII value 'N' indicates north latitude, and 'S' is south latitude. -GPSLatitude, 2, 0x0002, GPSInfo, Exif.GPSInfo.GPSLatitude, Rational, Indicates the latitude. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is dd/1,mmmm/100,0/1. -GPSLongitudeRef, 3, 0x0003, GPSInfo, Exif.GPSInfo.GPSLongitudeRef, Ascii, Indicates whether the longitude is east or west longitude. ASCII 'E' indicates east longitude, and 'W' is west longitude. -GPSLongitude, 4, 0x0004, GPSInfo, Exif.GPSInfo.GPSLongitude, Rational, Indicates the longitude. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is ddd/1,mmmm/100,0/1. -GPSAltitudeRef, 5, 0x0005, GPSInfo, Exif.GPSInfo.GPSAltitudeRef, Byte, Indicates the altitude used as the reference altitude. If the reference is sea level and the altitude is above sea level, 0 is given. If the altitude is below sea level, a value of 1 is given and the altitude is indicated as an absolute value in the GSPAltitude tag. The reference unit is meters. Note that this tag is BYTE type, unlike other reference tags. -GPSAltitude, 6, 0x0006, GPSInfo, Exif.GPSInfo.GPSAltitude, Rational, Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is expressed as one RATIONAL value. The reference unit is meters. -GPSTimeStamp, 7, 0x0007, GPSInfo, Exif.GPSInfo.GPSTimeStamp, Rational, Indicates the time as UTC (Coordinated Universal Time). is expressed as three RATIONAL values giving the hour, minute, and second (atomic clock). -GPSSatellites, 8, 0x0008, GPSInfo, Exif.GPSInfo.GPSSatellites, Ascii, Indicates the GPS satellites used for measurements. This tag can be used to describe the number of satellites, their ID number, angle of elevation, azimuth, SNR and other information in ASCII notation. The format is not specified. If the GPS receiver is incapable of taking measurements, value of the tag is set to NULL. -GPSStatus, 9, 0x0009, GPSInfo, Exif.GPSInfo.GPSStatus, Ascii, Indicates the status of the GPS receiver when the image is recorded. "A" means measurement is in progress, and "V" means the measurement is Interoperability. -GPSMeasureMode, 10, 0x000a, GPSInfo, Exif.GPSInfo.GPSMeasureMode, Ascii, Indicates the GPS measurement mode. "2" means two-dimensional measurement and "3" means three-dimensional measurement is in progress. -GPSDOP, 11, 0x000b, GPSInfo, Exif.GPSInfo.GPSDOP, Rational, Indicates the GPS DOP (data degree of precision). An HDOP value is written during two-dimensional measurement, and PDOP during three-dimensional measurement. -GPSSpeedRef, 12, 0x000c, GPSInfo, Exif.GPSInfo.GPSSpeedRef, Ascii, Indicates the unit used to express the GPS receiver speed of movement. "K" "M" and "N" represents kilometers per hour, miles per hour, and knots. -GPSSpeed, 13, 0x000d, GPSInfo, Exif.GPSInfo.GPSSpeed, Rational, Indicates the speed of GPS receiver movement. -GPSTrackRef, 14, 0x000e, GPSInfo, Exif.GPSInfo.GPSTrackRef, Ascii, Indicates the reference for giving the direction of GPS receiver movement. "T" denotes true direction and "M" is magnetic direction. -GPSTrack, 15, 0x000f, GPSInfo, Exif.GPSInfo.GPSTrack, Rational, Indicates the direction of GPS receiver movement. The range of values is from 0.00 to 359.99. -GPSImgDirectionRef, 16, 0x0010, GPSInfo, Exif.GPSInfo.GPSImgDirectionRef, Ascii, Indicates the reference for giving the direction of the image when it is captured. "T" denotes true direction and "M" is magnetic direction. -GPSImgDirection, 17, 0x0011, GPSInfo, Exif.GPSInfo.GPSImgDirection, Rational, Indicates the direction of the image when it was captured. The range of values is from 0.00 to 359.99. -GPSMapDatum, 18, 0x0012, GPSInfo, Exif.GPSInfo.GPSMapDatum, Ascii, Indicates the geodetic survey data used by the GPS receiver. If the survey data is restricted to Japan, the value of this tag is "TOKYO" or "WGS-84". -GPSDestLatitudeRef, 19, 0x0013, GPSInfo, Exif.GPSInfo.GPSDestLatitudeRef, Ascii, Indicates whether the latitude of the destination point is north or south latitude. The ASCII value "N" indicates north latitude, and "S" is south latitude. -GPSDestLatitude, 20, 0x0014, GPSInfo, Exif.GPSInfo.GPSDestLatitude, Rational, Indicates the latitude of the destination point. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If latitude is expressed as degrees, minutes and seconds, a typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be dd/1,mmmm/100,0/1. -GPSDestLongitudeRef, 21, 0x0015, GPSInfo, Exif.GPSInfo.GPSDestLongitudeRef, Ascii, Indicates whether the longitude of the destination point is east or west longitude. ASCII "E" indicates east longitude, and "W" is west longitude. -GPSDestLongitude, 22, 0x0016, GPSInfo, Exif.GPSInfo.GPSDestLongitude, Rational, Indicates the longitude of the destination point. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If longitude is expressed as degrees, minutes and seconds, a typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be ddd/1,mmmm/100,0/1. -GPSDestBearingRef, 23, 0x0017, GPSInfo, Exif.GPSInfo.GPSDestBearingRef, Ascii, Indicates the reference used for giving the bearing to the destination point. "T" denotes true direction and "M" is magnetic direction. -GPSDestBearing, 24, 0x0018, GPSInfo, Exif.GPSInfo.GPSDestBearing, Rational, Indicates the bearing to the destination point. The range of values is from 0.00 to 359.99. -GPSDestDistanceRef, 25, 0x0019, GPSInfo, Exif.GPSInfo.GPSDestDistanceRef, Ascii, Indicates the unit used to express the distance to the destination point. "K", "M" and "N" represent kilometers, miles and knots. -GPSDestDistance, 26, 0x001a, GPSInfo, Exif.GPSInfo.GPSDestDistance, Rational, Indicates the distance to the destination point. -GPSProcessingMethod, 27, 0x001b, GPSInfo, Exif.GPSInfo.GPSProcessingMethod, Undefined, A character string recording the name of the method used for location finding. The first byte indicates the character code used, and this is followed by the name of the method. -GPSAreaInformation, 28, 0x001c, GPSInfo, Exif.GPSInfo.GPSAreaInformation, Undefined, A character string recording the name of the GPS area. The first byte indicates the character code used, and this is followed by the name of the GPS area. -GPSDateStamp, 29, 0x001d, GPSInfo, Exif.GPSInfo.GPSDateStamp, Ascii, A character string recording date and time information relative to UTC (Coordinated Universal Time). The format is "YYYY:MM:DD.". -GPSDifferential, 30, 0x001e, GPSInfo, Exif.GPSInfo.GPSDifferential, Short, Indicates whether differential correction is applied to the GPS receiver. -ProcessingSoftware, 11, 0x000b, Image, Exif.Image.ProcessingSoftware, Ascii, The name and version of the software used to post-process the picture. -NewSubfileType, 254, 0x00fe, Image, Exif.Image.NewSubfileType, Long, A general indication of the kind of data contained in this subfile. -SubfileType, 255, 0x00ff, Image, Exif.Image.SubfileType, Short, A general indication of the kind of data contained in this subfile. This field is deprecated. The NewSubfileType field should be used instead. -ImageWidth, 256, 0x0100, Image, Exif.Image.ImageWidth, Long, The number of columns of image data, equal to the number of pixels per row. In JPEG compressed data a JPEG marker is used instead of this tag. -ImageLength, 257, 0x0101, Image, Exif.Image.ImageLength, Long, The number of rows of image data. In JPEG compressed data a JPEG marker is used instead of this tag. -BitsPerSample, 258, 0x0102, Image, Exif.Image.BitsPerSample, Short, The number of bits per image component. In this standard each component of the image is 8 bits, so the value for this tag is 8. See also . In JPEG compressed data a JPEG marker is used instead of this tag. -Compression, 259, 0x0103, Image, Exif.Image.Compression, Short, The compression scheme used for the image data. When a primary image is JPEG compressed, this designation is not necessary and is omitted. When thumbnails use JPEG compression, this tag value is set to 6. -PhotometricInterpretation, 262, 0x0106, Image, Exif.Image.PhotometricInterpretation, Short, The pixel composition. In JPEG compressed data a JPEG marker is used instead of this tag. -Threshholding, 263, 0x0107, Image, Exif.Image.Threshholding, Short, For black and white TIFF files that represent shades of gray, the technique used to convert from gray to black and white pixels. -CellWidth, 264, 0x0108, Image, Exif.Image.CellWidth, Short, The width of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -CellLength, 265, 0x0109, Image, Exif.Image.CellLength, Short, The length of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file. -FillOrder, 266, 0x010a, Image, Exif.Image.FillOrder, Short, The logical order of bits within a byte -DocumentName, 269, 0x010d, Image, Exif.Image.DocumentName, Ascii, The name of the document from which this image was scanned -ImageDescription, 270, 0x010e, Image, Exif.Image.ImageDescription, Ascii, A character string giving the title of the image. It may be a comment such as "1988 company picnic" or the like. Two-bytes character codes cannot be used. When a 2-bytes code is necessary, the Exif Private tag is to be used. -Make, 271, 0x010f, Image, Exif.Image.Make, Ascii, The manufacturer of the recording equipment. This is the manufacturer of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -Model, 272, 0x0110, Image, Exif.Image.Model, Ascii, The model name or model number of the equipment. This is the model name or number of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown. -StripOffsets, 273, 0x0111, Image, Exif.Image.StripOffsets, Long, For each strip, the byte offset of that strip. It is recommended that this be selected so the number of strip bytes does not exceed 64 Kbytes. With JPEG compressed data this designation is not needed and is omitted. See also and . -Orientation, 274, 0x0112, Image, Exif.Image.Orientation, Short, The image orientation viewed in terms of rows and columns. -SamplesPerPixel, 277, 0x0115, Image, Exif.Image.SamplesPerPixel, Short, The number of components per pixel. Since this standard applies to RGB and YCbCr images, the value set for this tag is 3. In JPEG compressed data a JPEG marker is used instead of this tag. -RowsPerStrip, 278, 0x0116, Image, Exif.Image.RowsPerStrip, Long, The number of rows per strip. This is the number of rows in the image of one strip when an image is divided into strips. With JPEG compressed data this designation is not needed and is omitted. See also and . -StripByteCounts, 279, 0x0117, Image, Exif.Image.StripByteCounts, Long, The total number of bytes in each strip. With JPEG compressed data this designation is not needed and is omitted. -XResolution, 282, 0x011a, Image, Exif.Image.XResolution, Rational, The number of pixels per in the direction. When the image resolution is unknown, 72 [dpi] is designated. -YResolution, 283, 0x011b, Image, Exif.Image.YResolution, Rational, The number of pixels per in the direction. The same value as is designated. -PlanarConfiguration, 284, 0x011c, Image, Exif.Image.PlanarConfiguration, Short, Indicates whether pixel components are recorded in a chunky or planar format. In JPEG compressed files a JPEG marker is used instead of this tag. If this field does not exist, the TIFF default of 1 (chunky) is assumed. -GrayResponseUnit, 290, 0x0122, Image, Exif.Image.GrayResponseUnit, Short, The precision of the information contained in the GrayResponseCurve. -GrayResponseCurve, 291, 0x0123, Image, Exif.Image.GrayResponseCurve, Short, For grayscale data, the optical density of each possible pixel value. -T4Options, 292, 0x0124, Image, Exif.Image.T4Options, Long, T.4-encoding options. -T6Options, 293, 0x0125, Image, Exif.Image.T6Options, Long, T.6-encoding options. -ResolutionUnit, 296, 0x0128, Image, Exif.Image.ResolutionUnit, Short, The unit for measuring and . The same unit is used for both and . If the image resolution is unknown, 2 (inches) is designated. -TransferFunction, 301, 0x012d, Image, Exif.Image.TransferFunction, Short, A transfer function for the image, described in tabular style. Normally this tag is not necessary, since color space is specified in the color space information tag (). -Software, 305, 0x0131, Image, Exif.Image.Software, Ascii, This tag records the name and version of the software or firmware of the camera or image input device used to generate the image. The detailed format is not specified, but it is recommended that the example shown below be followed. When the field is left blank, it is treated as unknown. -DateTime, 306, 0x0132, Image, Exif.Image.DateTime, Ascii, The date and time of image creation. In Exif standard, it is the date and time the file was changed. -Artist, 315, 0x013b, Image, Exif.Image.Artist, Ascii, This tag records the name of the camera owner, photographer or image creator. The detailed format is not specified, but it is recommended that the information be written as in the example below for ease of Interoperability. When the field is left blank, it is treated as unknown. Ex.) "Camera owner, John Smith; Photographer, Michael Brown; Image creator, Ken James" -HostComputer, 316, 0x013c, Image, Exif.Image.HostComputer, Ascii, This tag records information about the host computer used to generate the image. -Predictor, 317, 0x013d, Image, Exif.Image.Predictor, Short, A predictor is a mathematical operator that is applied to the image data before an encoding scheme is applied. -WhitePoint, 318, 0x013e, Image, Exif.Image.WhitePoint, Rational, The chromaticity of the white point of the image. Normally this tag is not necessary, since color space is specified in the colorspace information tag (). -PrimaryChromaticities, 319, 0x013f, Image, Exif.Image.PrimaryChromaticities, Rational, The chromaticity of the three primary colors of the image. Normally this tag is not necessary, since colorspace is specified in the colorspace information tag (). -ColorMap, 320, 0x0140, Image, Exif.Image.ColorMap, Short, A color map for palette color images. This field defines a Red-Green-Blue color map (often called a lookup table) for palette-color images. In a palette-color image, a pixel value is used to index into an RGB lookup table. -HalftoneHints, 321, 0x0141, Image, Exif.Image.HalftoneHints, Short, The purpose of the HalftoneHints field is to convey to the halftone function the range of gray levels within a colorimetrically-specified image that should retain tonal detail. -TileWidth, 322, 0x0142, Image, Exif.Image.TileWidth, Short, The tile width in pixels. This is the number of columns in each tile. -TileLength, 323, 0x0143, Image, Exif.Image.TileLength, Short, The tile length (height) in pixels. This is the number of rows in each tile. -TileOffsets, 324, 0x0144, Image, Exif.Image.TileOffsets, Short, For each tile, the byte offset of that tile, as compressed and stored on disk. The offset is specified with respect to the beginning of the TIFF file. Note that this implies that each tile has a location independent of the locations of other tiles. -TileByteCounts, 325, 0x0145, Image, Exif.Image.TileByteCounts, Short, For each tile, the number of (compressed) bytes in that tile. See TileOffsets for a description of how the byte counts are ordered. -SubIFDs, 330, 0x014a, Image, Exif.Image.SubIFDs, Long, Defined by Adobe Corporation to enable TIFF Trees within a TIFF file. -InkSet, 332, 0x014c, Image, Exif.Image.InkSet, Short, The set of inks used in a separated (PhotometricInterpretation=5) image. -InkNames, 333, 0x014d, Image, Exif.Image.InkNames, Ascii, The name of each ink used in a separated (PhotometricInterpretation=5) image. -NumberOfInks, 334, 0x014e, Image, Exif.Image.NumberOfInks, Short, The number of inks. Usually equal to SamplesPerPixel, unless there are extra samples. -DotRange, 336, 0x0150, Image, Exif.Image.DotRange, Byte, The component values that correspond to a 0% dot and 100% dot. -TargetPrinter, 337, 0x0151, Image, Exif.Image.TargetPrinter, Ascii, A description of the printing environment for which this separation is intended. -ExtraSamples, 338, 0x0152, Image, Exif.Image.ExtraSamples, Short, Specifies that each pixel has m extra components whose interpretation is defined by one of the values listed below. -SampleFormat, 339, 0x0153, Image, Exif.Image.SampleFormat, Short, This field specifies how to interpret each data sample in a pixel. -SMinSampleValue, 340, 0x0154, Image, Exif.Image.SMinSampleValue, Short, This field specifies the minimum sample value. -SMaxSampleValue, 341, 0x0155, Image, Exif.Image.SMaxSampleValue, Short, This field specifies the maximum sample value. -TransferRange, 342, 0x0156, Image, Exif.Image.TransferRange, Short, Expands the range of the TransferFunction -ClipPath, 343, 0x0157, Image, Exif.Image.ClipPath, Byte, A TIFF ClipPath is intended to mirror the essentials of PostScript's path creation functionality. -XClipPathUnits, 344, 0x0158, Image, Exif.Image.XClipPathUnits, SShort, The number of units that span the width of the image, in terms of integer ClipPath coordinates. -YClipPathUnits, 345, 0x0159, Image, Exif.Image.YClipPathUnits, SShort, The number of units that span the height of the image, in terms of integer ClipPath coordinates. -Indexed, 346, 0x015a, Image, Exif.Image.Indexed, Short, Indexed images are images where the 'pixels' do not represent color values, but rather an index (usually 8-bit) into a separate color table, the ColorMap. -JPEGTables, 347, 0x015b, Image, Exif.Image.JPEGTables, Undefined, This optional tag may be used to encode the JPEG quantization andHuffman tables for subsequent use by the JPEG decompression process. -OPIProxy, 351, 0x015f, Image, Exif.Image.OPIProxy, Short, OPIProxy gives information concerning whether this image is a low-resolution proxy of a high-resolution image (Adobe OPI). -JPEGProc, 512, 0x0200, Image, Exif.Image.JPEGProc, Long, This field indicates the process used to produce the compressed data -JPEGInterchangeFormat, 513, 0x0201, Image, Exif.Image.JPEGInterchangeFormat, Long, The offset to the start byte (SOI) of JPEG compressed thumbnail data. This is not used for primary image JPEG data. -JPEGInterchangeFormatLength, 514, 0x0202, Image, Exif.Image.JPEGInterchangeFormatLength, Long, The number of bytes of JPEG compressed thumbnail data. This is not used for primary image JPEG data. JPEG thumbnails are not divided but are recorded as a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not be recorded. Compressed thumbnails must be recorded in no more than 64 Kbytes, including all other data to be recorded in APP1. -JPEGRestartInterval, 515, 0x0203, Image, Exif.Image.JPEGRestartInterval, Short, This Field indicates the length of the restart interval used in the compressed image data. -JPEGLosslessPredictors, 517, 0x0205, Image, Exif.Image.JPEGLosslessPredictors, Short, This Field points to a list of lossless predictor-selection values, one per component. -JPEGPointTransforms, 518, 0x0206, Image, Exif.Image.JPEGPointTransforms, Short, This Field points to a list of point transform values, one per component. -JPEGQTables, 519, 0x0207, Image, Exif.Image.JPEGQTables, Long, This Field points to a list of offsets to the quantization tables, one per component. -JPEGDCTables, 520, 0x0208, Image, Exif.Image.JPEGDCTables, Long, This Field points to a list of offsets to the DC Huffman tables or the lossless Huffman tables, one per component. -JPEGACTables, 521, 0x0209, Image, Exif.Image.JPEGACTables, Long, This Field points to a list of offsets to the Huffman AC tables, one per component. -YCbCrCoefficients, 529, 0x0211, Image, Exif.Image.YCbCrCoefficients, Rational, The matrix coefficients for transformation from RGB to YCbCr image data. No default is given in TIFF; but here the value given in Appendix E, "Color Space Guidelines", is used as the default. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability this condition. -YCbCrSubSampling, 530, 0x0212, Image, Exif.Image.YCbCrSubSampling, Short, The sampling ratio of chrominance components in relation to the luminance component. In JPEG compressed data a JPEG marker is used instead of this tag. -YCbCrPositioning, 531, 0x0213, Image, Exif.Image.YCbCrPositioning, Short, The position of chrominance components in relation to the luminance component. This field is designated only for JPEG compressed data or uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr = 4:2:2 it is recommended in this standard that 2 (co-sited) be used to record data, in order to improve the image quality when viewed on TV systems. When this field does not exist, the reader shall assume the TIFF default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is recommended. If the reader does not have the capability of supporting both kinds of , it shall follow the TIFF default regardless of the value in this field. It is preferable that readers be able to support both centered and co-sited positioning. -ReferenceBlackWhite, 532, 0x0214, Image, Exif.Image.ReferenceBlackWhite, Rational, The reference black point value and reference white point value. No defaults are given in TIFF, but the values below are given as defaults here. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability these conditions. -XMLPacket, 700, 0x02bc, Image, Exif.Image.XMLPacket, Byte, XMP Metadata (Adobe technote 9-14-02) -Rating, 18246, 0x4746, Image, Exif.Image.Rating, Short, Rating tag used by Windows -RatingPercent, 18249, 0x4749, Image, Exif.Image.RatingPercent, Short, Rating tag used by Windows, value in percent -ImageID, 32781, 0x800d, Image, Exif.Image.ImageID, Ascii, ImageID is the full pathname of the original, high-resolution image, or any other identifying string that uniquely identifies the original image (Adobe OPI). -CFARepeatPatternDim, 33421, 0x828d, Image, Exif.Image.CFARepeatPatternDim, Short, Contains two values representing the minimum rows and columns to define the repeating patterns of the color filter array -CFAPattern, 33422, 0x828e, Image, Exif.Image.CFAPattern, Byte, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods -BatteryLevel, 33423, 0x828f, Image, Exif.Image.BatteryLevel, Rational, Contains a value of the battery level as a fraction or string -Copyright, 33432, 0x8298, Image, Exif.Image.Copyright, Ascii, Copyright information. In this standard the tag is used to indicate both the photographer and editor copyrights. It is the copyright notice of the person or organization claiming rights to the image. The Interoperability copyright statement including date and rights should be written in this field; e.g., "Copyright, John Smith, 19xx. All rights reserved.". In this standard the field records both the photographer and editor copyrights, with each recorded in a separate part of the statement. When there is a clear distinction between the photographer and editor copyrights, these are to be written in the order of photographer followed by editor copyright, separated by NULL (in this case since the statement also ends with a NULL, there are two NULL codes). When only the photographer copyright is given, it is terminated by one NULL code . When only the editor copyright is given, the photographer copyright part consists of one space followed by a terminating NULL code, then the editor copyright is given. When the field is left blank, it is treated as unknown. -ExposureTime, 33434, 0x829a, Image, Exif.Image.ExposureTime, Rational, Exposure time, given in seconds. -FNumber, 33437, 0x829d, Image, Exif.Image.FNumber, Rational, The F number. -IPTCNAA, 33723, 0x83bb, Image, Exif.Image.IPTCNAA, Long, Contains an IPTC/NAA record -ImageResources, 34377, 0x8649, Image, Exif.Image.ImageResources, Byte, Contains information embedded by the Adobe Photoshop application -ExifTag, 34665, 0x8769, Image, Exif.Image.ExifTag, Long, A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure as that of the IFD specified in TIFF. ordinarily, however, it does not contain image data as in the case of TIFF. -InterColorProfile, 34675, 0x8773, Image, Exif.Image.InterColorProfile, Undefined, Contains an InterColor Consortium (ICC) format color space characterization/profile -ExposureProgram, 34850, 0x8822, Image, Exif.Image.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Image, Exif.Image.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. -GPSTag, 34853, 0x8825, Image, Exif.Image.GPSTag, Long, A pointer to the GPS Info IFD. The Interoperability structure of the GPS Info IFD, like that of Exif IFD, has no image data. -ISOSpeedRatings, 34855, 0x8827, Image, Exif.Image.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Image, Exif.Image.OECF, Undefined, Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524. -Interlace, 34857, 0x8829, Image, Exif.Image.Interlace, Short, Indicates the field number of multifield images. -TimeZoneOffset, 34858, 0x882a, Image, Exif.Image.TimeZoneOffset, SShort, This optional tag encodes the time zone of the camera clock (relativeto Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the picture was taken. It may also contain the time zone offsetof the clock used to create the DateTime tag-value when the image wasmodified. -SelfTimerMode, 34859, 0x882b, Image, Exif.Image.SelfTimerMode, Short, Number of seconds image capture was delayed from button press. -DateTimeOriginal, 36867, 0x9003, Image, Exif.Image.DateTimeOriginal, Ascii, The date and time when the original image data was generated. -CompressedBitsPerPixel, 37122, 0x9102, Image, Exif.Image.CompressedBitsPerPixel, Rational, Specific to compressed data; states the compressed bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Image, Exif.Image.ShutterSpeedValue, SRational, Shutter speed. -ApertureValue, 37378, 0x9202, Image, Exif.Image.ApertureValue, Rational, The lens aperture. -BrightnessValue, 37379, 0x9203, Image, Exif.Image.BrightnessValue, SRational, The value of brightness. -ExposureBiasValue, 37380, 0x9204, Image, Exif.Image.ExposureBiasValue, SRational, The exposure bias. -MaxApertureValue, 37381, 0x9205, Image, Exif.Image.MaxApertureValue, Rational, The smallest F number of the lens. -SubjectDistance, 37382, 0x9206, Image, Exif.Image.SubjectDistance, SRational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Image, Exif.Image.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Image, Exif.Image.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Image, Exif.Image.Flash, Short, Indicates the status of flash when the image was shot. -FocalLength, 37386, 0x920a, Image, Exif.Image.FocalLength, Rational, The actual focal length of the lens, in mm. -FlashEnergy, 37387, 0x920b, Image, Exif.Image.FlashEnergy, Rational, Amount of flash energy (BCPS). -SpatialFrequencyResponse, 37388, 0x920c, Image, Exif.Image.SpatialFrequencyResponse, Undefined, SFR of the camera. -Noise, 37389, 0x920d, Image, Exif.Image.Noise, Undefined, Noise measurement values. -FocalPlaneXResolution, 37390, 0x920e, Image, Exif.Image.FocalPlaneXResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth direction for main image. -FocalPlaneYResolution, 37391, 0x920f, Image, Exif.Image.FocalPlaneYResolution, Rational, Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength direction for main image. -FocalPlaneResolutionUnit, 37392, 0x9210, Image, Exif.Image.FocalPlaneResolutionUnit, Short, Unit of measurement for FocalPlaneXResolution(37390) and FocalPlaneYResolution(37391). -ImageNumber, 37393, 0x9211, Image, Exif.Image.ImageNumber, Long, Number assigned to an image, e.g., in a chained image burst. -SecurityClassification, 37394, 0x9212, Image, Exif.Image.SecurityClassification, Ascii, Security classification assigned to the image. -ImageHistory, 37395, 0x9213, Image, Exif.Image.ImageHistory, Ascii, Record of what has been done to the image. -SubjectLocation, 37396, 0x9214, Image, Exif.Image.SubjectLocation, Short, Indicates the location and area of the main subject in the overall scene. -ExposureIndex, 37397, 0x9215, Image, Exif.Image.ExposureIndex, Rational, Encodes the camera exposure index setting when image was captured. -TIFFEPStandardID, 37398, 0x9216, Image, Exif.Image.TIFFEPStandardID, Byte, Contains four ASCII characters representing the TIFF/EP standard version of a TIFF/EP file, eg '1', '0', '0', '0' -SensingMethod, 37399, 0x9217, Image, Exif.Image.SensingMethod, Short, Type of image sensor. -XPTitle, 40091, 0x9c9b, Image, Exif.Image.XPTitle, Byte, Title tag used by Windows, encoded in UCS2 -XPComment, 40092, 0x9c9c, Image, Exif.Image.XPComment, Byte, Comment tag used by Windows, encoded in UCS2 -XPAuthor, 40093, 0x9c9d, Image, Exif.Image.XPAuthor, Byte, Author tag used by Windows, encoded in UCS2 -XPKeywords, 40094, 0x9c9e, Image, Exif.Image.XPKeywords, Byte, Keywords tag used by Windows, encoded in UCS2 -XPSubject, 40095, 0x9c9f, Image, Exif.Image.XPSubject, Byte, Subject tag used by Windows, encoded in UCS2 -PrintImageMatching, 50341, 0xc4a5, Image, Exif.Image.PrintImageMatching, Undefined, Print Image Matching, description needed. -DNGVersion, 50706, 0xc612, Image, Exif.Image.DNGVersion, Byte, This tag encodes the DNG four-tier version number. For files compliant with version 1.1.0.0 of the DNG specification, this tag should contain the bytes: 1, 1, 0, 0. -DNGBackwardVersion, 50707, 0xc613, Image, Exif.Image.DNGBackwardVersion, Byte, This tag specifies the oldest version of the Digital Negative specification for which a file is compatible. Readers shouldnot attempt to read a file if this tag specifies a version number that is higher than the version number of the specification the reader was based on. In addition to checking the version tags, readers should, for all tags, check the types, counts, and values, to verify it is able to correctly read the file. -UniqueCameraModel, 50708, 0xc614, Image, Exif.Image.UniqueCameraModel, Ascii, Defines a unique, non-localized name for the camera model that created the image in the raw file. This name should include the manufacturer's name to avoid conflicts, and should not be localized, even if the camera name itself is localized for different markets (see LocalizedCameraModel). This string may be used by reader software to index into per-model preferences and replacement profiles. -LocalizedCameraModel, 50709, 0xc615, Image, Exif.Image.LocalizedCameraModel, Byte, Similar to the UniqueCameraModel field, except the name can be localized for different markets to match the localization of the camera name. -CFAPlaneColor, 50710, 0xc616, Image, Exif.Image.CFAPlaneColor, Byte, Provides a mapping between the values in the CFAPattern tag and the plane numbers in LinearRaw space. This is a required tag for non-RGB CFA images. -CFALayout, 50711, 0xc617, Image, Exif.Image.CFALayout, Short, Describes the spatial layout of the CFA. -LinearizationTable, 50712, 0xc618, Image, Exif.Image.LinearizationTable, Short, Describes a lookup table that maps stored values into linear values. This tag is typically used to increase compression ratios by storing the raw data in a non-linear, more visually uniform space with fewer total encoding levels. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelRepeatDim, 50713, 0xc619, Image, Exif.Image.BlackLevelRepeatDim, Short, Specifies repeat pattern size for the BlackLevel tag. -BlackLevel, 50714, 0xc61a, Image, Exif.Image.BlackLevel, Rational, Specifies the zero light (a.k.a. thermal black or black current) encoding level, as a repeating pattern. The origin of this pattern is the top-left corner of the ActiveArea rectangle. The values are stored in row-column-sample scan order. -BlackLevelDeltaH, 50715, 0xc61b, Image, Exif.Image.BlackLevelDeltaH, SRational, If the zero light encoding level is a function of the image column, BlackLevelDeltaH specifies the difference between the zero light encoding level for each column and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -BlackLevelDeltaV, 50716, 0xc61c, Image, Exif.Image.BlackLevelDeltaV, SRational, If the zero light encoding level is a function of the image row, this tag specifies the difference between the zero light encoding level for each row and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel. -WhiteLevel, 50717, 0xc61d, Image, Exif.Image.WhiteLevel, Short, This tag specifies the fully saturated encoding level for the raw sample values. Saturation is caused either by the sensor itself becoming highly non-linear in response, or by the camera's analog to digital converter clipping. -DefaultScale, 50718, 0xc61e, Image, Exif.Image.DefaultScale, Rational, DefaultScale is required for cameras with non-square pixels. It specifies the default scale factors for each direction to convert the image to square pixels. Typically these factors are selected to approximately preserve total pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such as the Fujifilm SuperCCD, these two values should usually differ by a factor of 2.0. -DefaultCropOrigin, 50719, 0xc61f, Image, Exif.Image.DefaultCropOrigin, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropOrigin specifies the origin of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied), relative to the top-left corner of the ActiveArea rectangle. -DefaultCropSize, 50720, 0xc620, Image, Exif.Image.DefaultCropSize, Short, Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropSize specifies the size of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied). -ColorMatrix1, 50721, 0xc621, Image, Exif.Image.ColorMatrix1, SRational, ColorMatrix1 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the first calibration illuminant. The matrix values are stored in row scan order. The ColorMatrix1 tag is required for all non-monochrome DNG files. -ColorMatrix2, 50722, 0xc622, Image, Exif.Image.ColorMatrix2, SRational, ColorMatrix2 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the second calibration illuminant. The matrix values are stored in row scan order. -CameraCalibration1, 50723, 0xc623, Image, Exif.Image.CameraCalibration1, SRational, CameraClalibration1 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the first calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix1 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -CameraCalibration2, 50724, 0xc624, Image, Exif.Image.CameraCalibration2, SRational, CameraCalibration2 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the second calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix2 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. -ReductionMatrix1, 50725, 0xc625, Image, Exif.Image.ReductionMatrix1, SRational, ReductionMatrix1 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the first calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -ReductionMatrix2, 50726, 0xc626, Image, Exif.Image.ReductionMatrix2, SRational, ReductionMatrix2 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the second calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order. -AnalogBalance, 50727, 0xc627, Image, Exif.Image.AnalogBalance, Rational, Normally the stored raw values are not white balanced, since any digital white balancing will reduce the dynamic range of the final image if the user decides to later adjust the white balance; however, if camera hardware is capable of white balancing the color channels before the signal is digitized, it can improve the dynamic range of the final image. AnalogBalance defines the gain, either analog (recommended) or digital (not recommended) that has been applied the stored raw values. -AsShotNeutral, 50728, 0xc628, Image, Exif.Image.AsShotNeutral, Short, Specifies the selected white balance at time of capture, encoded as the coordinates of a perfectly neutral color in linear reference space values. The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag. -AsShotWhiteXY, 50729, 0xc629, Image, Exif.Image.AsShotWhiteXY, Rational, Specifies the selected white balance at time of capture, encoded as x-y chromaticity coordinates. The inclusion of this tag precludes the inclusion of the AsShotNeutral tag. -BaselineExposure, 50730, 0xc62a, Image, Exif.Image.BaselineExposure, SRational, Camera models vary in the trade-off they make between highlight headroom and shadow noise. Some leave a significant amount of highlight headroom during a normal exposure. This allows significant negative exposure compensation to be applied during raw conversion, but also means normal exposures will contain more shadow noise. Other models leave less headroom during normal exposures. This allows for less negative exposure compensation, but results in lower shadow noise for normal exposures. Because of these differences, a raw converter needs to vary the zero point of its exposure compensation control from model to model. BaselineExposure specifies by how much (in EV units) to move the zero point. Positive values result in brighter default results, while negative values result in darker default results. -BaselineNoise, 50731, 0xc62b, Image, Exif.Image.BaselineNoise, Rational, Specifies the relative noise level of the camera model at a baseline ISO value of 100, compared to a reference camera model. Since noise levels tend to vary approximately with the square root of the ISO value, a raw converter can use this value, combined with the current ISO, to estimate the relative noise level of the current image. -BaselineSharpness, 50732, 0xc62c, Image, Exif.Image.BaselineSharpness, Rational, Specifies the relative amount of sharpening required for this camera model, compared to a reference camera model. Camera models vary in the strengths of their anti-aliasing filters. Cameras with weak or no filters require less sharpening than cameras with strong anti-aliasing filters. -BayerGreenSplit, 50733, 0xc62d, Image, Exif.Image.BayerGreenSplit, Long, Only applies to CFA images using a Bayer pattern filter array. This tag specifies, in arbitrary units, how closely the values of the green pixels in the blue/green rows track the values of the green pixels in the red/green rows. A value of zero means the two kinds of green pixels track closely, while a non-zero value means they sometimes diverge. The useful range for this tag is from 0 (no divergence) to about 5000 (quite large divergence). -LinearResponseLimit, 50734, 0xc62e, Image, Exif.Image.LinearResponseLimit, Rational, Some sensors have an unpredictable non-linearity in their response as they near the upper limit of their encoding range. This non-linearity results in color shifts in the highlight areas of the resulting image unless the raw converter compensates for this effect. LinearResponseLimit specifies the fraction of the encoding range above which the response may become significantly non-linear. -CameraSerialNumber, 50735, 0xc62f, Image, Exif.Image.CameraSerialNumber, Ascii, CameraSerialNumber contains the serial number of the camera or camera body that captured the image. -LensInfo, 50736, 0xc630, Image, Exif.Image.LensInfo, Rational, Contains information about the lens that captured the image. If the minimum f-stops are unknown, they should be encoded as 0/0. -ChromaBlurRadius, 50737, 0xc631, Image, Exif.Image.ChromaBlurRadius, Rational, ChromaBlurRadius provides a hint to the DNG reader about how much chroma blur should be applied to the image. If this tag is omitted, the reader will use its default amount of chroma blurring. Normally this tag is only included for non-CFA images, since the amount of chroma blur required for mosaic images is highly dependent on the de-mosaic algorithm, in which case the DNG reader's default value is likely optimized for its particular de-mosaic algorithm. -AntiAliasStrength, 50738, 0xc632, Image, Exif.Image.AntiAliasStrength, Rational, Provides a hint to the DNG reader about how strong the camera's anti-alias filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is prone to aliasing artifacts with some subjects), while a value of 1.0 means a strong anti-alias filter (i.e., the camera almost never has aliasing artifacts). -ShadowScale, 50739, 0xc633, Image, Exif.Image.ShadowScale, SRational, This tag is used by Adobe Camera Raw to control the sensitivity of its 'Shadows' slider. -DNGPrivateData, 50740, 0xc634, Image, Exif.Image.DNGPrivateData, Byte, Provides a way for camera manufacturers to store private data in the DNG file for use by their own raw converters, and to have that data preserved by programs that edit DNG files. -MakerNoteSafety, 50741, 0xc635, Image, Exif.Image.MakerNoteSafety, Short, MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is safe to preserve along with the rest of the EXIF data. File browsers and other image management software processing an image with a preserved MakerNote should be aware that any thumbnail image embedded in the MakerNote may be stale, and may not reflect the current state of the full size image. -CalibrationIlluminant1, 50778, 0xc65a, Image, Exif.Image.CalibrationIlluminant1, Short, The illuminant used for the first set of color calibration tags (ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for this tag are the same as the legal values for the LightSource EXIF tag. -CalibrationIlluminant2, 50779, 0xc65b, Image, Exif.Image.CalibrationIlluminant2, Short, The illuminant used for an optional second set of color calibration tags (ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for this tag are the same as the legal values for the CalibrationIlluminant1 tag; however, if both are included, neither is allowed to have a value of 0 (unknown). -BestQualityScale, 50780, 0xc65c, Image, Exif.Image.BestQualityScale, Rational, For some cameras, the best possible image quality is not achieved by preserving the total pixel count during conversion. For example, Fujifilm SuperCCD images have maximum detail when their total pixel count is doubled. This tag specifies the amount by which the values of the DefaultScale tag need to be multiplied to achieve the best quality image size. -RawDataUniqueID, 50781, 0xc65d, Image, Exif.Image.RawDataUniqueID, Byte, This tag contains a 16-byte unique identifier for the raw image data in the DNG file. DNG readers can use this tag to recognize a particular raw image, even if the file's name or the metadata contained in the file has been changed. If a DNG writer creates such an identifier, it should do so using an algorithm that will ensure that it is very unlikely two different images will end up having the same identifier. -OriginalRawFileName, 50827, 0xc68b, Image, Exif.Image.OriginalRawFileName, Byte, If the DNG file was converted from a non-DNG raw file, then this tag contains the file name of that original raw file. -OriginalRawFileData, 50828, 0xc68c, Image, Exif.Image.OriginalRawFileData, Undefined, If the DNG file was converted from a non-DNG raw file, then this tag contains the compressed contents of that original raw file. The contents of this tag always use the big-endian byte order. The tag contains a sequence of data blocks. Future versions of the DNG specification may define additional data blocks, so DNG readers should ignore extra bytes when parsing this tag. DNG readers should also detect the case where data blocks are missing from the end of the sequence, and should assume a default value for all the missing blocks. There are no padding or alignment bytes between data blocks. -ActiveArea, 50829, 0xc68d, Image, Exif.Image.ActiveArea, Short, This rectangle defines the active (non-masked) pixels of the sensor. The order of the rectangle coordinates is: top, left, bottom, right. -MaskedAreas, 50830, 0xc68e, Image, Exif.Image.MaskedAreas, Short, This tag contains a list of non-overlapping rectangle coordinates of fully masked pixels, which can be optionally used by DNG readers to measure the black encoding level. The order of each rectangle's coordinates is: top, left, bottom, right. If the raw image data has already had its black encoding level subtracted, then this tag should not be used, since the masked pixels are no longer useful. -AsShotICCProfile, 50831, 0xc68f, Image, Exif.Image.AsShotICCProfile, Undefined, This tag contains an ICC profile that, in conjunction with the AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to specify a default color rendering from camera color space coordinates (linear reference values) into the ICC profile connection space. The ICC profile connection space is an output referred colorimetric space, whereas the other color calibration tags in DNG specify a conversion into a scene referred colorimetric space. This means that the rendering in this profile should include any desired tone and gamut mapping needed to convert between scene referred values and output referred values. -AsShotPreProfileMatrix, 50832, 0xc690, Image, Exif.Image.AsShotPreProfileMatrix, SRational, This tag is used in conjunction with the AsShotICCProfile tag. It specifies a matrix that should be applied to the camera color space coordinates before processing the values through the ICC profile specified in the AsShotICCProfile tag. The matrix is stored in the row scan order. If ColorPlanes is greater than three, then this matrix can (but is not required to) reduce the dimensionality of the color data down to three components, in which case the AsShotICCProfile should have three rather than ColorPlanes input components. -CurrentICCProfile, 50833, 0xc691, Image, Exif.Image.CurrentICCProfile, Undefined, This tag is used in conjunction with the CurrentPreProfileMatrix tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -CurrentPreProfileMatrix, 50834, 0xc692, Image, Exif.Image.CurrentPreProfileMatrix, SRational, This tag is used in conjunction with the CurrentICCProfile tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers. -ColorimetricReference, 50879, 0xc6bf, Image, Exif.Image.ColorimetricReference, Short, The DNG color model documents a transform between camera colors and CIE XYZ values. This tag describes the colorimetric reference for the CIE XYZ values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-referred, using the ICC profile perceptual dynamic range. This tag allows output-referred data to be stored in DNG files and still processed correctly by DNG readers. -CameraCalibrationSignature, 50931, 0xc6f3, Image, Exif.Image.CameraCalibrationSignature, Byte, A UTF-8 encoded string associated with the CameraCalibration1 and CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags should only be used in the DNG color transform if the string stored in the CameraCalibrationSignature tag exactly matches the string stored in the ProfileCalibrationSignature tag for the selected camera profile. -ProfileCalibrationSignature, 50932, 0xc6f4, Image, Exif.Image.ProfileCalibrationSignature, Byte, A UTF-8 encoded string associated with the camera profile tags. The CameraCalibration1 and CameraCalibration2 tags should only be used in the DNG color transfer if the string stored in the CameraCalibrationSignature tag exactly matches the string stored in the ProfileCalibrationSignature tag for the selected camera profile. -AsShotProfileName, 50934, 0xc6f6, Image, Exif.Image.AsShotProfileName, Byte, A UTF-8 encoded string containing the name of the "as shot" camera profile, if any. -NoiseReductionApplied, 50935, 0xc6f7, Image, Exif.Image.NoiseReductionApplied, Rational, This tag indicates how much noise reduction has been applied to the raw data on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has been applied. A 1.0 value indicates that the "ideal" amount of noise reduction has been applied, i.e. that the DNG reader should not apply additional noise reduction by default. A value of 0/0 indicates that this parameter is unknown. -ProfileName, 50936, 0xc6f8, Image, Exif.Image.ProfileName, Byte, A UTF-8 encoded string containing the name of the camera profile. This tag is optional if there is only a single camera profile stored in the file but is required for all camera profiles if there is more than one camera profile stored in the file. -ProfileHueSatMapDims, 50937, 0xc6f9, Image, Exif.Image.ProfileHueSatMapDims, Long, This tag specifies the number of input samples in each dimension of the hue/saturation/value mapping tables. The data for these tables are stored in ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case has ValueDivisions equal to 1, so only hue and saturation are used as inputs to the mapping table. -ProfileHueSatMapData1, 50938, 0xc6fa, Image, Exif.Image.ProfileHueSatMapData1, Float, This tag contains the data for the first hue/saturation/value mapping table. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees; the second entry is saturation scale factor; and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -ProfileHueSatMapData2, 50939, 0xc6fb, Image, Exif.Image.ProfileHueSatMapData2, Float, This tag contains the data for the second hue/saturation/value mapping table. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees; the second entry is a saturation scale factor; and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -ProfileToneCurve, 50940, 0xc6fc, Image, Exif.Image.ProfileToneCurve, Float, This tag contains a default tone curve that can be applied while processing the image as a starting point for user adjustments. The curve is specified as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each sample has an input value in the range of 0.0 to 1.0, and an output value in the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and the last sample is required to be (1.0, 1.0). Interpolated the curve using a cubic spline. -ProfileEmbedPolicy, 50941, 0xc6fd, Image, Exif.Image.ProfileEmbedPolicy, Long, This tag contains information about the usage rules for the associated camera profile. -ProfileCopyright, 50942, 0xc6fe, Image, Exif.Image.ProfileCopyright, Byte, A UTF-8 encoded string containing the copyright information for the camera profile. This string always should be preserved along with the other camera profile tags. -ForwardMatrix1, 50964, 0xc714, Image, Exif.Image.ForwardMatrix1, SRational, This tag defines a matrix that maps white balanced camera colors to XYZ D50 colors. -ForwardMatrix2, 50965, 0xc715, Image, Exif.Image.ForwardMatrix2, SRational, This tag defines a matrix that maps white balanced camera colors to XYZ D50 colors. -PreviewApplicationName, 50966, 0xc716, Image, Exif.Image.PreviewApplicationName, Byte, A UTF-8 encoded string containing the name of the application that created the preview stored in the IFD. -PreviewApplicationVersion, 50967, 0xc717, Image, Exif.Image.PreviewApplicationVersion, Byte, A UTF-8 encoded string containing the version number of the application that created the preview stored in the IFD. -PreviewSettingsName, 50968, 0xc718, Image, Exif.Image.PreviewSettingsName, Byte, A UTF-8 encoded string containing the name of the conversion settings (for example, snapshot name) used for the preview stored in the IFD. -PreviewSettingsDigest, 50969, 0xc719, Image, Exif.Image.PreviewSettingsDigest, Byte, A unique ID of the conversion settings (for example, MD5 digest) used to render the preview stored in the IFD. -PreviewColorSpace, 50970, 0xc71a, Image, Exif.Image.PreviewColorSpace, Long, This tag specifies the color space in which the rendered preview in this IFD is stored. The default value for this tag is sRGB for color previews and Gray Gamma 2.2 for monochrome previews. -PreviewDateTime, 50971, 0xc71b, Image, Exif.Image.PreviewDateTime, Ascii, This tag is an ASCII string containing the name of the date/time at which the preview stored in the IFD was rendered. The date/time is encoded using ISO 8601 format. -RawImageDigest, 50972, 0xc71c, Image, Exif.Image.RawImageDigest, Undefined, This tag is an MD5 digest of the raw image data. All pixels in the image are processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep (16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The data for each pixel is processed in little-endian byte order. -OriginalRawFileDigest, 50973, 0xc71d, Image, Exif.Image.OriginalRawFileDigest, Undefined, This tag is an MD5 digest of the data stored in the OriginalRawFileData tag. -SubTileBlockSize, 50974, 0xc71e, Image, Exif.Image.SubTileBlockSize, Long, Normally, the pixels within a tile are stored in simple row-scan order. This tag specifies that the pixels within a tile should be grouped first into rectangular blocks of the specified size. These blocks are stored in row-scan order. Within each block, the pixels are stored in row-scan order. The use of a non-default value for this tag requires setting the DNGBackwardVersion tag to at least 1.2.0.0. -RowInterleaveFactor, 50975, 0xc71f, Image, Exif.Image.RowInterleaveFactor, Long, This tag specifies that rows of the image are stored in interleaved order. The value of the tag specifies the number of interleaved fields. The use of a non-default value for this tag requires setting the DNGBackwardVersion tag to at least 1.2.0.0. -ProfileLookTableDims, 50981, 0xc725, Image, Exif.Image.ProfileLookTableDims, Long, This tag specifies the number of input samples in each dimension of a default "look" table. The data for this table is stored in the ProfileLookTableData tag. -ProfileLookTableData, 50982, 0xc726, Image, Exif.Image.ProfileLookTableData, Float, This tag contains a default "look" table that can be applied while processing the image as a starting point for user adjustment. This table uses the same format as the tables stored in the ProfileHueSatMapData1 and ProfileHueSatMapData2 tags, and is applied in the same color space. However, it should be applied later in the processing pipe, after any exposure compensation and/or fill light stages, but before any tone curve stage. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees, the second entry is a saturation scale factor, and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0. -OpcodeList1, 51008, 0xc740, Image, Exif.Image.OpcodeList1, Undefined, Specifies the list of opcodes that should be applied to the raw image, as read directly from the file. -OpcodeList2, 51009, 0xc741, Image, Exif.Image.OpcodeList2, Undefined, Specifies the list of opcodes that should be applied to the raw image, just after it has been mapped to linear reference values. -OpcodeList3, 51022, 0xc74e, Image, Exif.Image.OpcodeList3, Undefined, Specifies the list of opcodes that should be applied to the raw image, just after it has been demosaiced. -NoiseProfile, 51041, 0xc761, Image, Exif.Image.NoiseProfile, Double, NoiseProfile describes the amount of noise in a raw image. Specifically, this tag models the amount of signal-dependent photon (shot) noise and signal-independent sensor readout noise, two common sources of noise in raw images. The model assumes that the noise is white and spatially independent, ignoring fixed pattern effects and other sources of noise (e.g., pixel response non-uniformity, spatially-dependent thermal effects, etc.). -ExposureTime, 33434, 0x829a, Photo, Exif.Photo.ExposureTime, Rational, Exposure time, given in seconds (sec). -FNumber, 33437, 0x829d, Photo, Exif.Photo.FNumber, Rational, The F number. -ExposureProgram, 34850, 0x8822, Photo, Exif.Photo.ExposureProgram, Short, The class of the program used by the camera to set exposure when the picture is taken. -SpectralSensitivity, 34852, 0x8824, Photo, Exif.Photo.SpectralSensitivity, Ascii, Indicates the spectral sensitivity of each channel of the camera used. The tag value is an ASCII string compatible with the standard developed by the ASTM Technical Committee. -ISOSpeedRatings, 34855, 0x8827, Photo, Exif.Photo.ISOSpeedRatings, Short, Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. -OECF, 34856, 0x8828, Photo, Exif.Photo.OECF, Undefined, Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO 14524. is the relationship between the camera optical input and the image values. -SensitivityType, 34864, 0x8830, Photo, Exif.Photo.SensitivityType, Short, The SensitivityType tag indicates PhotographicSensitivity tag. which one of the parameters of ISO12232 is the Although it is an optional tag, it should be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, or 7 may be used in case that the values of plural parameters are the same. -StandardOutputSensitivity, 34865, 0x8831, Photo, Exif.Photo.StandardOutputSensitivity, Long, This tag indicates the standard output sensitivity value of a camera or input device defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -RecommendedExposureIndex, 34866, 0x8832, Photo, Exif.Photo.RecommendedExposureIndex, Long, This tag indicates the recommended exposure index value of a camera or input device defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -ISOSpeed, 34867, 0x8833, Photo, Exif.Photo.ISOSpeed, Long, This tag indicates the ISO speed value of a camera or input device that is defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded. -ISOSpeedLatitudeyyy, 34868, 0x8834, Photo, Exif.Photo.ISOSpeedLatitudeyyy, Long, This tag indicates the ISO speed latitude yyy value of a camera or input device that is defined in ISO 12232. However, this tag shall not be recorded without ISOSpeed and ISOSpeedLatitudezzz. -ISOSpeedLatitudezzz, 34869, 0x8835, Photo, Exif.Photo.ISOSpeedLatitudezzz, Long, This tag indicates the ISO speed latitude zzz value of a camera or input device that is defined in ISO 12232. However, this tag shall not be recorded without ISOSpeed and ISOSpeedLatitudeyyy. -ExifVersion, 36864, 0x9000, Photo, Exif.Photo.ExifVersion, Undefined, The version of this standard supported. Nonexistence of this field is taken to mean nonconformance to the standard. -DateTimeOriginal, 36867, 0x9003, Photo, Exif.Photo.DateTimeOriginal, Ascii, The date and time when the original image data was generated. For a digital still camera the date and time the picture was taken are recorded. -DateTimeDigitized, 36868, 0x9004, Photo, Exif.Photo.DateTimeDigitized, Ascii, The date and time when the image was stored as digital data. -ComponentsConfiguration, 37121, 0x9101, Photo, Exif.Photo.ComponentsConfiguration, Undefined, Information specific to compressed data. The channels of each component are arranged in order from the 1st component to the 4th. For uncompressed data the data arrangement is given in the tag. However, since can only express the order of Y, Cb and Cr, this tag is provided for cases when compressed data uses components other than Y, Cb, and Cr and to enable support of other sequences. -CompressedBitsPerPixel, 37122, 0x9102, Photo, Exif.Photo.CompressedBitsPerPixel, Rational, Information specific to compressed data. The compression mode used for a compressed image is indicated in unit bits per pixel. -ShutterSpeedValue, 37377, 0x9201, Photo, Exif.Photo.ShutterSpeedValue, SRational, Shutter speed. The unit is the APEX (Additive System of Photographic Exposure) setting. -ApertureValue, 37378, 0x9202, Photo, Exif.Photo.ApertureValue, Rational, The lens aperture. The unit is the APEX value. -BrightnessValue, 37379, 0x9203, Photo, Exif.Photo.BrightnessValue, SRational, The value of brightness. The unit is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -ExposureBiasValue, 37380, 0x9204, Photo, Exif.Photo.ExposureBiasValue, SRational, The exposure bias. The units is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. -MaxApertureValue, 37381, 0x9205, Photo, Exif.Photo.MaxApertureValue, Rational, The smallest F number of the lens. The unit is the APEX value. Ordinarily it is given in the range of 00.00 to 99.99, but it is not limited to this range. -SubjectDistance, 37382, 0x9206, Photo, Exif.Photo.SubjectDistance, Rational, The distance to the subject, given in meters. -MeteringMode, 37383, 0x9207, Photo, Exif.Photo.MeteringMode, Short, The metering mode. -LightSource, 37384, 0x9208, Photo, Exif.Photo.LightSource, Short, The kind of light source. -Flash, 37385, 0x9209, Photo, Exif.Photo.Flash, Short, This tag is recorded when an image is taken using a strobe light (flash). -FocalLength, 37386, 0x920a, Photo, Exif.Photo.FocalLength, Rational, The actual focal length of the lens, in mm. Conversion is not made to the focal length of a 35 mm film camera. -SubjectArea, 37396, 0x9214, Photo, Exif.Photo.SubjectArea, Short, This tag indicates the location and area of the main subject in the overall scene. -MakerNote, 37500, 0x927c, Photo, Exif.Photo.MakerNote, Undefined, A tag for manufacturers of Exif writers to record any desired information. The contents are up to the manufacturer. -UserComment, 37510, 0x9286, Photo, Exif.Photo.UserComment, Comment, A tag for Exif users to write keywords or comments on the image besides those in , and without the character code limitations of the tag. -SubSecTime, 37520, 0x9290, Photo, Exif.Photo.SubSecTime, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeOriginal, 37521, 0x9291, Photo, Exif.Photo.SubSecTimeOriginal, Ascii, A tag used to record fractions of seconds for the tag. -SubSecTimeDigitized, 37522, 0x9292, Photo, Exif.Photo.SubSecTimeDigitized, Ascii, A tag used to record fractions of seconds for the tag. -FlashpixVersion, 40960, 0xa000, Photo, Exif.Photo.FlashpixVersion, Undefined, The FlashPix format version supported by a FPXR file. -ColorSpace, 40961, 0xa001, Photo, Exif.Photo.ColorSpace, Short, The color space information tag is always recorded as the color space specifier. Normally sRGB is used to define the color space based on the PC monitor conditions and environment. If a color space other than sRGB is used, Uncalibrated is set. Image data recorded as Uncalibrated can be treated as sRGB when it is converted to FlashPix. -PixelXDimension, 40962, 0xa002, Photo, Exif.Photo.PixelXDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid width of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. -PixelYDimension, 40963, 0xa003, Photo, Exif.Photo.PixelYDimension, Long, Information specific to compressed data. When a compressed file is recorded, the valid height of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. Since data padding is unnecessary in the vertical direction, the number of lines recorded in this valid image height tag will in fact be the same as that recorded in the SOF. -RelatedSoundFile, 40964, 0xa004, Photo, Exif.Photo.RelatedSoundFile, Ascii, This tag is used to record the name of an audio file related to the image data. The only relational information recorded here is the Exif audio file name and extension (an ASCII string consisting of 8 characters + '.' + 3 characters). The path is not recorded. -InteroperabilityTag, 40965, 0xa005, Photo, Exif.Photo.InteroperabilityTag, Long, Interoperability IFD is composed of tags which stores the information to ensure the Interoperability and pointed by the following tag located in Exif IFD. The Interoperability structure of Interoperability IFD is the same as TIFF defined IFD structure but does not contain the image data characteristically compared with normal TIFF IFD. -FlashEnergy, 41483, 0xa20b, Photo, Exif.Photo.FlashEnergy, Rational, Indicates the strobe energy at the time the image is captured, as measured in Beam Candle Power Seconds (BCPS). -SpatialFrequencyResponse, 41484, 0xa20c, Photo, Exif.Photo.SpatialFrequencyResponse, Undefined, This tag records the camera or input device spatial frequency table and SFR values in the direction of image width, image height, and diagonal direction, as specified in ISO 12233. -FocalPlaneXResolution, 41486, 0xa20e, Photo, Exif.Photo.FocalPlaneXResolution, Rational, Indicates the number of pixels in the image width (X) direction per on the camera focal plane. -FocalPlaneYResolution, 41487, 0xa20f, Photo, Exif.Photo.FocalPlaneYResolution, Rational, Indicates the number of pixels in the image height (V) direction per on the camera focal plane. -FocalPlaneResolutionUnit, 41488, 0xa210, Photo, Exif.Photo.FocalPlaneResolutionUnit, Short, Indicates the unit for measuring and . This value is the same as the . -SubjectLocation, 41492, 0xa214, Photo, Exif.Photo.SubjectLocation, Short, Indicates the location of the main subject in the scene. The value of this tag represents the pixel at the center of the main subject relative to the left edge, prior to rotation processing as per the tag. The first value indicates the X column number and second indicates the Y row number. -ExposureIndex, 41493, 0xa215, Photo, Exif.Photo.ExposureIndex, Rational, Indicates the exposure index selected on the camera or input device at the time the image is captured. -SensingMethod, 41495, 0xa217, Photo, Exif.Photo.SensingMethod, Short, Indicates the image sensor type on the camera or input device. -FileSource, 41728, 0xa300, Photo, Exif.Photo.FileSource, Undefined, Indicates the image source. If a DSC recorded the image, this tag value of this tag always be set to 3, indicating that the image was recorded on a DSC. -SceneType, 41729, 0xa301, Photo, Exif.Photo.SceneType, Undefined, Indicates the type of scene. If a DSC recorded the image, this tag value must always be set to 1, indicating that the image was directly photographed. -CFAPattern, 41730, 0xa302, Photo, Exif.Photo.CFAPattern, Undefined, Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods. -CustomRendered, 41985, 0xa401, Photo, Exif.Photo.CustomRendered, Short, This tag indicates the use of special processing on image data, such as rendering geared to output. When special processing is performed, the reader is expected to disable or minimize any further processing. -ExposureMode, 41986, 0xa402, Photo, Exif.Photo.ExposureMode, Short, This tag indicates the exposure mode set when the image was shot. In auto-bracketing mode, the camera shoots a series of frames of the same scene at different exposure settings. -WhiteBalance, 41987, 0xa403, Photo, Exif.Photo.WhiteBalance, Short, This tag indicates the white balance mode set when the image was shot. -DigitalZoomRatio, 41988, 0xa404, Photo, Exif.Photo.DigitalZoomRatio, Rational, This tag indicates the digital zoom ratio when the image was shot. If the numerator of the recorded value is 0, this indicates that digital zoom was not used. -FocalLengthIn35mmFilm, 41989, 0xa405, Photo, Exif.Photo.FocalLengthIn35mmFilm, Short, This tag indicates the equivalent focal length assuming a 35mm film camera, in mm. A value of 0 means the focal length is unknown. Note that this tag differs from the tag. -SceneCaptureType, 41990, 0xa406, Photo, Exif.Photo.SceneCaptureType, Short, This tag indicates the type of scene that was shot. It can also be used to record the mode in which the image was shot. Note that this differs from the tag. -GainControl, 41991, 0xa407, Photo, Exif.Photo.GainControl, Short, This tag indicates the degree of overall image gain adjustment. -Contrast, 41992, 0xa408, Photo, Exif.Photo.Contrast, Short, This tag indicates the direction of contrast processing applied by the camera when the image was shot. -Saturation, 41993, 0xa409, Photo, Exif.Photo.Saturation, Short, This tag indicates the direction of saturation processing applied by the camera when the image was shot. -Sharpness, 41994, 0xa40a, Photo, Exif.Photo.Sharpness, Short, This tag indicates the direction of sharpness processing applied by the camera when the image was shot. -DeviceSettingDescription, 41995, 0xa40b, Photo, Exif.Photo.DeviceSettingDescription, Undefined, This tag indicates information on the picture-taking conditions of a particular camera model. The tag is used only to indicate the picture-taking conditions in the reader. -SubjectDistanceRange, 41996, 0xa40c, Photo, Exif.Photo.SubjectDistanceRange, Short, This tag indicates the distance to the subject. -ImageUniqueID, 42016, 0xa420, Photo, Exif.Photo.ImageUniqueID, Ascii, This tag indicates an identifier assigned uniquely to each image. It is recorded as an ASCII string equivalent to hexadecimal notation and 128-bit fixed length. -CameraOwnerName, 42032, 0xa430, Photo, Exif.Photo.CameraOwnerName, Ascii, This tag records the owner of a camera used in photography as an ASCII string. -BodySerialNumber, 42033, 0xa431, Photo, Exif.Photo.BodySerialNumber, Ascii, This tag records the serial number of the body of the camera that was used in photography as an ASCII string. -LensSpecification, 42034, 0xa432, Photo, Exif.Photo.LensSpecification, Rational, This tag notes minimum focal length, maximum focal length, minimum F number in the minimum focal length, and minimum F number in the maximum focal length, which are specification information for the lens that was used in photography. When the minimum F number is unknown, the notation is 0/0 -LensMake, 42035, 0xa433, Photo, Exif.Photo.LensMake, Ascii, This tag records the lens manufactor as an ASCII string. -LensModel, 42036, 0xa434, Photo, Exif.Photo.LensModel, Ascii, This tag records the lens's model name and model number as an ASCII string. -LensSerialNumber, 42037, 0xa435, Photo, Exif.Photo.LensSerialNumber, Ascii, This tag records the serial number of the interchangeable lens that was used in photography as an ASCII string. -InteroperabilityIndex, 1, 0x0001, Iop, Exif.Iop.InteroperabilityIndex, Ascii, Indicates the identification of the Interoperability rule. Use "R98" for stating ExifR98 Rules. Four bytes used including the termination code (NULL). see the separate volume of Recommended Exif Interoperability Rules (ExifR98) for other tags used for ExifR98. -InteroperabilityVersion, 2, 0x0002, Iop, Exif.Iop.InteroperabilityVersion, Undefined, Interoperability version -RelatedImageFileFormat, 4096, 0x1000, Iop, Exif.Iop.RelatedImageFileFormat, Ascii, File format of image file -RelatedImageWidth, 4097, 0x1001, Iop, Exif.Iop.RelatedImageWidth, Long, Image width -RelatedImageLength, 4098, 0x1002, Iop, Exif.Iop.RelatedImageLength, Long, Image height -GPSVersionID, 0, 0x0000, GPSInfo, Exif.GPSInfo.GPSVersionID, Byte, Indicates the version of . The version is given as 2.0.0.0. This tag is mandatory when tag is present. (Note: The tag is given in bytes, unlike the tag. When the version is 2.0.0.0, the tag value is 02000000.H). -GPSLatitudeRef, 1, 0x0001, GPSInfo, Exif.GPSInfo.GPSLatitudeRef, Ascii, Indicates whether the latitude is north or south latitude. The ASCII value 'N' indicates north latitude, and 'S' is south latitude. -GPSLatitude, 2, 0x0002, GPSInfo, Exif.GPSInfo.GPSLatitude, Rational, Indicates the latitude. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is dd/1,mmmm/100,0/1. -GPSLongitudeRef, 3, 0x0003, GPSInfo, Exif.GPSInfo.GPSLongitudeRef, Ascii, Indicates whether the longitude is east or west longitude. ASCII 'E' indicates east longitude, and 'W' is west longitude. -GPSLongitude, 4, 0x0004, GPSInfo, Exif.GPSInfo.GPSLongitude, Rational, Indicates the longitude. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is ddd/1,mmmm/100,0/1. -GPSAltitudeRef, 5, 0x0005, GPSInfo, Exif.GPSInfo.GPSAltitudeRef, Byte, Indicates the altitude used as the reference altitude. If the reference is sea level and the altitude is above sea level, 0 is given. If the altitude is below sea level, a value of 1 is given and the altitude is indicated as an absolute value in the GSPAltitude tag. The reference unit is meters. Note that this tag is BYTE type, unlike other reference tags. -GPSAltitude, 6, 0x0006, GPSInfo, Exif.GPSInfo.GPSAltitude, Rational, Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is expressed as one RATIONAL value. The reference unit is meters. -GPSTimeStamp, 7, 0x0007, GPSInfo, Exif.GPSInfo.GPSTimeStamp, Rational, Indicates the time as UTC (Coordinated Universal Time). is expressed as three RATIONAL values giving the hour, minute, and second (atomic clock). -GPSSatellites, 8, 0x0008, GPSInfo, Exif.GPSInfo.GPSSatellites, Ascii, Indicates the GPS satellites used for measurements. This tag can be used to describe the number of satellites, their ID number, angle of elevation, azimuth, SNR and other information in ASCII notation. The format is not specified. If the GPS receiver is incapable of taking measurements, value of the tag is set to NULL. -GPSStatus, 9, 0x0009, GPSInfo, Exif.GPSInfo.GPSStatus, Ascii, Indicates the status of the GPS receiver when the image is recorded. "A" means measurement is in progress, and "V" means the measurement is Interoperability. -GPSMeasureMode, 10, 0x000a, GPSInfo, Exif.GPSInfo.GPSMeasureMode, Ascii, Indicates the GPS measurement mode. "2" means two-dimensional measurement and "3" means three-dimensional measurement is in progress. -GPSDOP, 11, 0x000b, GPSInfo, Exif.GPSInfo.GPSDOP, Rational, Indicates the GPS DOP (data degree of precision). An HDOP value is written during two-dimensional measurement, and PDOP during three-dimensional measurement. -GPSSpeedRef, 12, 0x000c, GPSInfo, Exif.GPSInfo.GPSSpeedRef, Ascii, Indicates the unit used to express the GPS receiver speed of movement. "K" "M" and "N" represents kilometers per hour, miles per hour, and knots. -GPSSpeed, 13, 0x000d, GPSInfo, Exif.GPSInfo.GPSSpeed, Rational, Indicates the speed of GPS receiver movement. -GPSTrackRef, 14, 0x000e, GPSInfo, Exif.GPSInfo.GPSTrackRef, Ascii, Indicates the reference for giving the direction of GPS receiver movement. "T" denotes true direction and "M" is magnetic direction. -GPSTrack, 15, 0x000f, GPSInfo, Exif.GPSInfo.GPSTrack, Rational, Indicates the direction of GPS receiver movement. The range of values is from 0.00 to 359.99. -GPSImgDirectionRef, 16, 0x0010, GPSInfo, Exif.GPSInfo.GPSImgDirectionRef, Ascii, Indicates the reference for giving the direction of the image when it is captured. "T" denotes true direction and "M" is magnetic direction. -GPSImgDirection, 17, 0x0011, GPSInfo, Exif.GPSInfo.GPSImgDirection, Rational, Indicates the direction of the image when it was captured. The range of values is from 0.00 to 359.99. -GPSMapDatum, 18, 0x0012, GPSInfo, Exif.GPSInfo.GPSMapDatum, Ascii, Indicates the geodetic survey data used by the GPS receiver. If the survey data is restricted to Japan, the value of this tag is "TOKYO" or "WGS-84". -GPSDestLatitudeRef, 19, 0x0013, GPSInfo, Exif.GPSInfo.GPSDestLatitudeRef, Ascii, Indicates whether the latitude of the destination point is north or south latitude. The ASCII value "N" indicates north latitude, and "S" is south latitude. -GPSDestLatitude, 20, 0x0014, GPSInfo, Exif.GPSInfo.GPSDestLatitude, Rational, Indicates the latitude of the destination point. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If latitude is expressed as degrees, minutes and seconds, a typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be dd/1,mmmm/100,0/1. -GPSDestLongitudeRef, 21, 0x0015, GPSInfo, Exif.GPSInfo.GPSDestLongitudeRef, Ascii, Indicates whether the longitude of the destination point is east or west longitude. ASCII "E" indicates east longitude, and "W" is west longitude. -GPSDestLongitude, 22, 0x0016, GPSInfo, Exif.GPSInfo.GPSDestLongitude, Rational, Indicates the longitude of the destination point. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If longitude is expressed as degrees, minutes and seconds, a typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be ddd/1,mmmm/100,0/1. -GPSDestBearingRef, 23, 0x0017, GPSInfo, Exif.GPSInfo.GPSDestBearingRef, Ascii, Indicates the reference used for giving the bearing to the destination point. "T" denotes true direction and "M" is magnetic direction. -GPSDestBearing, 24, 0x0018, GPSInfo, Exif.GPSInfo.GPSDestBearing, Rational, Indicates the bearing to the destination point. The range of values is from 0.00 to 359.99. -GPSDestDistanceRef, 25, 0x0019, GPSInfo, Exif.GPSInfo.GPSDestDistanceRef, Ascii, Indicates the unit used to express the distance to the destination point. "K", "M" and "N" represent kilometers, miles and knots. -GPSDestDistance, 26, 0x001a, GPSInfo, Exif.GPSInfo.GPSDestDistance, Rational, Indicates the distance to the destination point. -GPSProcessingMethod, 27, 0x001b, GPSInfo, Exif.GPSInfo.GPSProcessingMethod, Undefined, A character string recording the name of the method used for location finding. The first byte indicates the character code used, and this is followed by the name of the method. -GPSAreaInformation, 28, 0x001c, GPSInfo, Exif.GPSInfo.GPSAreaInformation, Undefined, A character string recording the name of the GPS area. The first byte indicates the character code used, and this is followed by the name of the GPS area. -GPSDateStamp, 29, 0x001d, GPSInfo, Exif.GPSInfo.GPSDateStamp, Ascii, A character string recording date and time information relative to UTC (Coordinated Universal Time). The format is "YYYY:MM:DD.". -GPSDifferential, 30, 0x001e, GPSInfo, Exif.GPSInfo.GPSDifferential, Short, Indicates whether differential correction is applied to the GPS receiver. -Usage: tiff-test\Debug\tiff-test.exe file -Usage: tiff-test\DebugDLL\tiff-test.exe file -Usage: tiff-test\Release\tiff-test.exe file -Usage: tiff-test\ReleaseDLL\tiff-test.exe file - /usr/lib /usr lib - /usr/ / usr - usr . usr - / / - . . . - .. . .. - /// / - /usr/.emacs /usr .emacs - /usr/.emacs/ /usr .emacs - /usr/.emacs// /usr .emacs - usr/.emacs usr .emacs - .emacs . .emacs - .emacs.gz . .emacs.gz .gz - /tmp/image.jpg /tmp image.jpg .jpg -/tmp/.image.jpg /tmp .image.jpg .jpg - /image.jpg / image.jpg .jpg - image.jpg . image.jpg .jpg - image.jpg// . image.jpg .jpg - /////image.jpg / image.jpg .jpg - /foo.bar/image /foo.bar image -/foo.bar/images.tar.gz /foo.bar images.tar.gz .gz -d:\foo.bar\images.tar.gz d:\foo.bar images.tar.gz .gz - /usr/lib /usr lib - /usr/ / usr - usr . usr - / / - . . . - .. . .. - /// / - /usr/.emacs /usr .emacs - /usr/.emacs/ /usr .emacs - /usr/.emacs// /usr .emacs - usr/.emacs usr .emacs - .emacs . .emacs - .emacs.gz . .emacs.gz .gz - /tmp/image.jpg /tmp image.jpg .jpg -/tmp/.image.jpg /tmp .image.jpg .jpg - /image.jpg / image.jpg .jpg - image.jpg . image.jpg .jpg - image.jpg// . image.jpg .jpg - /////image.jpg / image.jpg .jpg - /foo.bar/image /foo.bar image -/foo.bar/images.tar.gz /foo.bar images.tar.gz .gz -d:\foo.bar\images.tar.gz d:\foo.bar images.tar.gz .gz - /usr/lib /usr lib - /usr/ / usr - usr . usr - / / - . . . - .. . .. - /// / - /usr/.emacs /usr .emacs - /usr/.emacs/ /usr .emacs - /usr/.emacs// /usr .emacs - usr/.emacs usr .emacs - .emacs . .emacs - .emacs.gz . .emacs.gz .gz - /tmp/image.jpg /tmp image.jpg .jpg -/tmp/.image.jpg /tmp .image.jpg .jpg - /image.jpg / image.jpg .jpg - image.jpg . image.jpg .jpg - image.jpg// . image.jpg .jpg - /////image.jpg / image.jpg .jpg - /foo.bar/image /foo.bar image -/foo.bar/images.tar.gz /foo.bar images.tar.gz .gz -d:\foo.bar\images.tar.gz d:\foo.bar images.tar.gz .gz - /usr/lib /usr lib - /usr/ / usr - usr . usr - / / - . . . - .. . .. - /// / - /usr/.emacs /usr .emacs - /usr/.emacs/ /usr .emacs - /usr/.emacs// /usr .emacs - usr/.emacs usr .emacs - .emacs . .emacs - .emacs.gz . .emacs.gz .gz - /tmp/image.jpg /tmp image.jpg .jpg -/tmp/.image.jpg /tmp .image.jpg .jpg - /image.jpg / image.jpg .jpg - image.jpg . image.jpg .jpg - image.jpg// . image.jpg .jpg - /////image.jpg / image.jpg .jpg - /foo.bar/image /foo.bar image -/foo.bar/images.tar.gz /foo.bar images.tar.gz .gz -d:\foo.bar\images.tar.gz d:\foo.bar images.tar.gz .gz -Usage: write-test file case - -where case is an integer between 1 and 11 -Usage: write-test file case - -where case is an integer between 1 and 11 -Usage: write-test file case - -where case is an integer between 1 and 11 -Usage: write-test file case - -where case is an integer between 1 and 11 -Usage: write2-test\Debug\write2-test.exe file -Usage: write2-test\DebugDLL\write2-test.exe file -Usage: write2-test\Release\write2-test.exe file -Usage: write2-test\ReleaseDLL\write2-test.exe file -Usage: xmpparse\Debug\xmpparse.exe file -Usage: xmpparse\DebugDLL\xmpparse.exe file -Usage: xmpparse\Release\xmpparse.exe file -Usage: xmpparse\ReleaseDLL\xmpparse.exe file -Usage: xmpparser-test\Debug\xmpparser-test.exe file -Usage: xmpparser-test\DebugDLL\xmpparser-test.exe file -Usage: xmpparser-test\Release\xmpparser-test.exe file -Usage: xmpparser-test\ReleaseDLL\xmpparser-test.exe file -Xmp.dc.source XmpText 13 xmpsample.cpp -Xmp.dc.subject XmpBag 2 Palmtree, Rubbertree -Xmp.dc.title LangAlt 2 lang="de-DE" Sonnenuntergang am Strand, lang="en-US" Sunset on the beach -Xmp.dc.one XmpText 2 -1 -Xmp.dc.two XmpText 6 3.1415 -Xmp.dc.three XmpText 3 5/7 -Xmp.dc.four XmpText 3 255 -Xmp.dc.five XmpText 3 256 -Xmp.dc.six XmpText 5 False -Xmp.dc.seven XmpText 5 Seven -Xmp.dc.format XmpText 10 image/jpeg -Xmp.dc.creator XmpSeq 3 1) The first creator, 2) The second creator, 3) And another one -Xmp.dc.description LangAlt 2 lang="x-default" Hello, World, lang="de-DE" Hallo, Welt -Xmp.tiff.ImageDescription LangAlt 2 lang="x-default" TIFF image description, lang="de-DE" TIFF Bildbeschreibung -Xmp.ns.myProperty XmpText 7 myValue -Xmp.xmpDM.videoFrameSize/stDim:w XmpText 2 16 -Xmp.xmpDM.videoFrameSize/stDim:h XmpText 1 9 -Xmp.xmpDM.videoFrameSize/stDim:unit XmpText 4 inch -Xmp.dc.publisher XmpBag 1 James Bond -Xmp.dc.publisher[1]/?ns:role XmpText 12 secret agent -Xmp.dc.creator[2]/?ns:role XmpText 10 programmer -Xmp.xmpBJ.JobRef XmpText 0 type="Bag" -Xmp.xmpBJ.JobRef[1]/stJob:name XmpText 14 Birthday party -Xmp.xmpBJ.JobRef[1]/stJob:role XmpText 12 Photographer -Xmp.xmpBJ.JobRef[2]/stJob:name XmpText 16 Wedding ceremony -Xmp.xmpBJ.JobRef[2]/stJob:role XmpText 8 Best man -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCity XmpText 12 Kuala Lumpur -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCtry XmpText 8 Malaysia -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiUrlWork XmpText 20 http://www.exiv2.org - - - - - - - Palmtree - Rubbertree - - - - - Sonnenuntergang am Strand - Sunset on the beach - - - - - 1) The first creator - - 2) The second creator - programmer - - 3) And another one - - - - - Hello, World - Hallo, Welt - - - - - - James Bond - secret agent - - - - - - TIFF image description - TIFF Bildbeschreibung - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Xmp.dc.source XmpText 13 xmpsample.cpp -Xmp.dc.subject XmpBag 2 Palmtree, Rubbertree -Xmp.dc.title LangAlt 2 lang="de-DE" Sonnenuntergang am Strand, lang="en-US" Sunset on the beach -Xmp.dc.one XmpText 2 -1 -Xmp.dc.two XmpText 6 3.1415 -Xmp.dc.three XmpText 3 5/7 -Xmp.dc.four XmpText 3 255 -Xmp.dc.five XmpText 3 256 -Xmp.dc.six XmpText 5 False -Xmp.dc.seven XmpText 5 Seven -Xmp.dc.format XmpText 10 image/jpeg -Xmp.dc.creator XmpSeq 3 1) The first creator, 2) The second creator, 3) And another one -Xmp.dc.description LangAlt 2 lang="x-default" Hello, World, lang="de-DE" Hallo, Welt -Xmp.tiff.ImageDescription LangAlt 2 lang="x-default" TIFF image description, lang="de-DE" TIFF Bildbeschreibung -Xmp.ns.myProperty XmpText 7 myValue -Xmp.xmpDM.videoFrameSize/stDim:w XmpText 2 16 -Xmp.xmpDM.videoFrameSize/stDim:h XmpText 1 9 -Xmp.xmpDM.videoFrameSize/stDim:unit XmpText 4 inch -Xmp.dc.publisher XmpBag 1 James Bond -Xmp.dc.publisher[1]/?ns:role XmpText 12 secret agent -Xmp.dc.creator[2]/?ns:role XmpText 10 programmer -Xmp.xmpBJ.JobRef XmpText 0 type="Bag" -Xmp.xmpBJ.JobRef[1]/stJob:name XmpText 14 Birthday party -Xmp.xmpBJ.JobRef[1]/stJob:role XmpText 12 Photographer -Xmp.xmpBJ.JobRef[2]/stJob:name XmpText 16 Wedding ceremony -Xmp.xmpBJ.JobRef[2]/stJob:role XmpText 8 Best man -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCity XmpText 12 Kuala Lumpur -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCtry XmpText 8 Malaysia -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiUrlWork XmpText 20 http://www.exiv2.org - - - - - - - Palmtree - Rubbertree - - - - - Sonnenuntergang am Strand - Sunset on the beach - - - - - 1) The first creator - - 2) The second creator - programmer - - 3) And another one - - - - - Hello, World - Hallo, Welt - - - - - - James Bond - secret agent - - - - - - TIFF image description - TIFF Bildbeschreibung - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Xmp.dc.source XmpText 13 xmpsample.cpp -Xmp.dc.subject XmpBag 2 Palmtree, Rubbertree -Xmp.dc.title LangAlt 2 lang="de-DE" Sonnenuntergang am Strand, lang="en-US" Sunset on the beach -Xmp.dc.one XmpText 2 -1 -Xmp.dc.two XmpText 6 3.1415 -Xmp.dc.three XmpText 3 5/7 -Xmp.dc.four XmpText 3 255 -Xmp.dc.five XmpText 3 256 -Xmp.dc.six XmpText 5 False -Xmp.dc.seven XmpText 5 Seven -Xmp.dc.format XmpText 10 image/jpeg -Xmp.dc.creator XmpSeq 3 1) The first creator, 2) The second creator, 3) And another one -Xmp.dc.description LangAlt 2 lang="x-default" Hello, World, lang="de-DE" Hallo, Welt -Xmp.tiff.ImageDescription LangAlt 2 lang="x-default" TIFF image description, lang="de-DE" TIFF Bildbeschreibung -Xmp.ns.myProperty XmpText 7 myValue -Xmp.xmpDM.videoFrameSize/stDim:w XmpText 2 16 -Xmp.xmpDM.videoFrameSize/stDim:h XmpText 1 9 -Xmp.xmpDM.videoFrameSize/stDim:unit XmpText 4 inch -Xmp.dc.publisher XmpBag 1 James Bond -Xmp.dc.publisher[1]/?ns:role XmpText 12 secret agent -Xmp.dc.creator[2]/?ns:role XmpText 10 programmer -Xmp.xmpBJ.JobRef XmpText 0 type="Bag" -Xmp.xmpBJ.JobRef[1]/stJob:name XmpText 14 Birthday party -Xmp.xmpBJ.JobRef[1]/stJob:role XmpText 12 Photographer -Xmp.xmpBJ.JobRef[2]/stJob:name XmpText 16 Wedding ceremony -Xmp.xmpBJ.JobRef[2]/stJob:role XmpText 8 Best man -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCity XmpText 12 Kuala Lumpur -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCtry XmpText 8 Malaysia -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiUrlWork XmpText 20 http://www.exiv2.org - - - - - - - Palmtree - Rubbertree - - - - - Sonnenuntergang am Strand - Sunset on the beach - - - - - 1) The first creator - - 2) The second creator - programmer - - 3) And another one - - - - - Hello, World - Hallo, Welt - - - - - - James Bond - secret agent - - - - - - TIFF image description - TIFF Bildbeschreibung - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Xmp.dc.source XmpText 13 xmpsample.cpp -Xmp.dc.subject XmpBag 2 Palmtree, Rubbertree -Xmp.dc.title LangAlt 2 lang="de-DE" Sonnenuntergang am Strand, lang="en-US" Sunset on the beach -Xmp.dc.one XmpText 2 -1 -Xmp.dc.two XmpText 6 3.1415 -Xmp.dc.three XmpText 3 5/7 -Xmp.dc.four XmpText 3 255 -Xmp.dc.five XmpText 3 256 -Xmp.dc.six XmpText 5 False -Xmp.dc.seven XmpText 5 Seven -Xmp.dc.format XmpText 10 image/jpeg -Xmp.dc.creator XmpSeq 3 1) The first creator, 2) The second creator, 3) And another one -Xmp.dc.description LangAlt 2 lang="x-default" Hello, World, lang="de-DE" Hallo, Welt -Xmp.tiff.ImageDescription LangAlt 2 lang="x-default" TIFF image description, lang="de-DE" TIFF Bildbeschreibung -Xmp.ns.myProperty XmpText 7 myValue -Xmp.xmpDM.videoFrameSize/stDim:w XmpText 2 16 -Xmp.xmpDM.videoFrameSize/stDim:h XmpText 1 9 -Xmp.xmpDM.videoFrameSize/stDim:unit XmpText 4 inch -Xmp.dc.publisher XmpBag 1 James Bond -Xmp.dc.publisher[1]/?ns:role XmpText 12 secret agent -Xmp.dc.creator[2]/?ns:role XmpText 10 programmer -Xmp.xmpBJ.JobRef XmpText 0 type="Bag" -Xmp.xmpBJ.JobRef[1]/stJob:name XmpText 14 Birthday party -Xmp.xmpBJ.JobRef[1]/stJob:role XmpText 12 Photographer -Xmp.xmpBJ.JobRef[2]/stJob:name XmpText 16 Wedding ceremony -Xmp.xmpBJ.JobRef[2]/stJob:role XmpText 8 Best man -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCity XmpText 12 Kuala Lumpur -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCtry XmpText 8 Malaysia -Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiUrlWork XmpText 20 http://www.exiv2.org - - - - - - - Palmtree - Rubbertree - - - - - Sonnenuntergang am Strand - Sunset on the beach - - - - - 1) The first creator - - 2) The second creator - programmer - - 3) And another one - - - - - Hello, World - Hallo, Welt - - - - - - James Bond - secret agent - - - - - - TIFF image description - TIFF Bildbeschreibung - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Exif.Image.Make Ascii 6 Canon -Exif.Image.Model Ascii 22 Canon PowerShot S5 IS -Exif.Image.Orientation Short 1 top, left -Exif.Image.XResolution Rational 1 180 -Exif.Image.YResolution Rational 1 180 -Exif.Image.ResolutionUnit Short 1 inch -Exif.Image.DateTime Ascii 20 2008:09:06 14:34:23 -Exif.Image.YCbCrPositioning Short 1 Centered -Exif.Image.ExifTag Long 1 186 -Exif.Photo.ExposureTime Rational 1 1/500 s -Exif.Photo.FNumber Rational 1 F4 -Exif.Photo.ISOSpeedRatings Short 1 80 -Exif.Photo.ExifVersion Undefined 4 2.20 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeDigitized Ascii 20 2008:09:06 14:34:23 -Exif.Photo.ComponentsConfiguration Undefined 4 YCbCr -Exif.Photo.CompressedBitsPerPixel Rational 1 3 -Exif.Photo.ShutterSpeedValue SRational 1 1/501 s -Exif.Photo.ApertureValue Rational 1 F4 -Exif.Photo.ExposureBiasValue SRational 1 0 EV -Exif.Photo.MaxApertureValue Rational 1 F3.5 -Exif.Photo.MeteringMode Short 1 Multi-segment -Exif.Photo.Flash Short 1 No, compulsory -Exif.Photo.FocalLength Rational 1 21.3 mm -Exif.Photo.MakerNote Undefined 2382 (Binary value suppressed) -Exif.MakerNote.Offset Long 1 680 -Exif.MakerNote.ByteOrder Ascii 3 MM -Exif.CanonCs.Macro Short 1 Off -Exif.CanonCs.Selftimer Short 1 Off -Exif.CanonCs.Quality Short 1 Fine -Exif.CanonCs.FlashMode Short 1 Off -Exif.CanonCs.DriveMode Short 1 Single / timer -Exif.CanonCs.FocusMode Short 1 Single -Exif.CanonCs.ImageSize Short 1 Medium 1 -Exif.CanonCs.EasyMode Short 1 Manual -Exif.CanonCs.DigitalZoom Short 1 None -Exif.CanonCs.Contrast Short 1 Normal -Exif.CanonCs.Saturation Short 1 Normal -Exif.CanonCs.Sharpness Short 1 Normal -Exif.CanonCs.ISOSpeed Short 1 Auto -Exif.CanonCs.MeteringMode Short 1 Evaluative -Exif.CanonCs.FocusType Short 1 Auto -Exif.CanonCs.AFPoint Short 1 Manual AF point selection -Exif.CanonCs.ExposureProgram Short 1 Program (P) -Exif.CanonCs.LensType Short 1 (65535) -Exif.CanonCs.Lens Short 3 6.0 - 72.0 mm -Exif.CanonCs.MaxAperture Short 1 F3.6 -Exif.CanonCs.MinAperture Short 1 F8 -Exif.CanonCs.FlashActivity Short 1 Did not fire -Exif.CanonCs.FlashDetails Short 1 -Exif.CanonCs.FocusContinuous Short 1 Continuous -Exif.CanonCs.AESetting Short 1 Normal AE -Exif.CanonCs.ImageStabilization Short 1 On -Exif.CanonCs.DisplayAperture Short 1 0 -Exif.CanonCs.ZoomSourceWidth Short 1 3264 -Exif.CanonCs.ZoomTargetWidth Short 1 3264 -Exif.CanonCs.SpotMeteringMode Short 1 Center -Exif.CanonCs.PhotoEffect Short 1 (65535) -Exif.CanonCs.ManualFlashOutput Short 1 n/a -Exif.CanonCs.ColorTone Short 1 32767 -Exif.Canon.FocalLength Short 4 21.3 mm -Exif.CanonSi.ISOSpeed Short 1 100 -Exif.CanonSi.MeasuredEV Short 1 14.25 -Exif.CanonSi.TargetAperture Short 1 F4 -Exif.CanonSi.TargetShutterSpeed Short 1 1/501 s -Exif.CanonSi.WhiteBalance Short 1 Sunny -Exif.CanonSi.Sequence Short 1 0 -Exif.CanonSi.AFPointUsed Short 1 0 focus points; none used -Exif.CanonSi.FlashBias Short 1 0 EV -Exif.CanonSi.SubjectDistance Short 1 503 -Exif.CanonSi.ApertureValue Short 1 F4 -Exif.CanonSi.ShutterSpeedValue Short 1 1/546 s -Exif.CanonSi.MeasuredEV2 Short 1 -6.00 -Exif.Canon.ImageType Ascii 25 IMG:PowerShot S5 IS JPEG -Exif.Canon.FirmwareVersion Ascii 22 Firmware Version 1.01 -Exif.Canon.FileNumber Long 1 100-1904 -Exif.Canon.OwnerName Ascii 32 Robin Mills -Exif.Canon.CameraInfo Long 148 370 411 0 0 0 384 874 4294967255 0 0 0 0 577 889 4294967150 0 0 4294967287 0 0 1 0 0 0 9 10 888 888 888 384 1015 4294967148 0 0 888 888 0 0 1 3072 3072 3072 3072 3072 4294964224 4294964224 4294964224 4294964224 4294964224 0 4294964224 4294967287 0 0 0 0 0 0 0 0 0 0 164 1024 1024 40 94 0 0 0 0 0 0 525 0 40 94 0 0 3 1 0 0 921 1027 1024 1280 0 40 97 10 881 1646 1711 881 1 1014 384 888 659 4294967148 2 128 1 0 0 0 0 7532 5 0 0 0 0 0 0 7819 8252 8279 128 1 0 4294961112 3 1 7471 0 0 0 0 0 0 0 0 5345 1088 245 446 100 196 44 4091 4091 1 1 25 8 2400605383 -Exif.Canon.ModelID Long 1 PowerShot S5 IS -Exif.Canon.ThumbnailImageValidArea Short 4 0 0 0 0 -Exif.Canon.SuperMacro Short 1 Off -Exif.Canon.AFInfo Short 48 96 2 9 1 2592 1944 1088 245 196 0 0 0 0 0 0 0 0 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -Exif.Photo.UserComment Undefined 264 (Binary value suppressed) -Exif.Photo.FlashpixVersion Undefined 4 1.00 -Exif.Photo.ColorSpace Short 1 sRGB -Exif.Photo.PixelXDimension Short 1 2592 -Exif.Photo.PixelYDimension Short 1 1944 -Exif.Photo.InteroperabilityTag Long 1 3350 -Exif.Iop.InteroperabilityIndex Ascii 4 R98 -Exif.Iop.InteroperabilityVersion Undefined 4 1.00 -Exif.Iop.RelatedImageWidth Short 1 2592 -Exif.Iop.RelatedImageLength Short 1 1944 -Exif.Photo.FocalPlaneXResolution Rational 1 11520 -Exif.Photo.FocalPlaneYResolution Rational 1 11503 -Exif.Photo.FocalPlaneResolutionUnit Short 1 inch -Exif.Photo.SensingMethod Short 1 One-chip color area -Exif.Photo.FileSource Undefined 1 Digital still camera -Exif.Photo.CustomRendered Short 1 Normal process -Exif.Photo.ExposureMode Short 1 Auto -Exif.Photo.WhiteBalance Short 1 Manual -Exif.Photo.DigitalZoomRatio Rational 1 1.0 -Exif.Photo.SceneCaptureType Short 1 Standard -Exif.Thumbnail.Compression Short 1 JPEG (old-style) -Exif.Thumbnail.XResolution Rational 1 180 -Exif.Thumbnail.YResolution Rational 1 180 -Exif.Thumbnail.ResolutionUnit Short 1 inch -Exif.Thumbnail.JPEGInterchangeFormat Long 1 3498 -Exif.Thumbnail.JPEGInterchangeFormatLength Long 1 6714 -File name : test.png -File size : 135047 Bytes -MIME type : image/png -Image size : 200 x 150 -Camera make : Canon -Camera model : Canon PowerShot S5 IS -Image timestamp : 2008:09:06 14:34:23 -Image number : 100-1904 -Exposure time : 1/500 s -Aperture : F4 -Exposure bias : 0 EV -Flash : No, compulsory -Flash bias : 0 EV -Focal length : 21.3 mm -Subject distance: 503 -ISO speed : 80 -Exposure mode : Program (P) -Metering mode : Multi-segment -Macro mode : Off -Image quality : Fine -Exif Resolution : 2592 x 1944 -White balance : Sunny -Thumbnail : image/jpeg, 6714 Bytes -Copyright : -Exif comment : - -File name : test.tiff -File size : 194752 Bytes -MIME type : image/tiff -Image size : 282 x 212 -Camera make : SONY -Camera model : DSC-S600 -Image timestamp : -Image number : -Exposure time : -Aperture : -Exposure bias : -Flash : -Flash bias : -Focal length : -Subject distance: -ISO speed : -Exposure mode : -Metering mode : -Macro mode : -Image quality : -Exif Resolution : 282 x 212 -White balance : -Thumbnail : None -Copyright : -Exif comment : - -Exif.Image.Make Ascii 6 Canon -Exif.Image.Model Ascii 22 Canon PowerShot S5 IS -Exif.Image.Orientation Short 1 top, left -Exif.Image.XResolution Rational 1 180 -Exif.Image.YResolution Rational 1 180 -Exif.Image.ResolutionUnit Short 1 inch -Exif.Image.DateTime Ascii 20 2008:09:06 14:34:23 -Exif.Image.YCbCrPositioning Short 1 Centered -Exif.Image.ExifTag Long 1 186 -Exif.Photo.ExposureTime Rational 1 1/500 s -Exif.Photo.FNumber Rational 1 F4 -Exif.Photo.ISOSpeedRatings Short 1 80 -Exif.Photo.ExifVersion Undefined 4 2.20 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeDigitized Ascii 20 2008:09:06 14:34:23 -Exif.Photo.ComponentsConfiguration Undefined 4 YCbCr -Exif.Photo.CompressedBitsPerPixel Rational 1 3 -Exif.Photo.ShutterSpeedValue SRational 1 1/501 s -Exif.Photo.ApertureValue Rational 1 F4 -Exif.Photo.ExposureBiasValue SRational 1 0 EV -Exif.Photo.MaxApertureValue Rational 1 F3.5 -Exif.Photo.MeteringMode Short 1 Multi-segment -Exif.Photo.Flash Short 1 No, compulsory -Exif.Photo.FocalLength Rational 1 21.3 mm -Exif.Photo.MakerNote Undefined 2382 (Binary value suppressed) -Exif.MakerNote.Offset Long 1 680 -Exif.MakerNote.ByteOrder Ascii 3 MM -Exif.CanonCs.Macro Short 1 Off -Exif.CanonCs.Selftimer Short 1 Off -Exif.CanonCs.Quality Short 1 Fine -Exif.CanonCs.FlashMode Short 1 Off -Exif.CanonCs.DriveMode Short 1 Single / timer -Exif.CanonCs.FocusMode Short 1 Single -Exif.CanonCs.ImageSize Short 1 Medium 1 -Exif.CanonCs.EasyMode Short 1 Manual -Exif.CanonCs.DigitalZoom Short 1 None -Exif.CanonCs.Contrast Short 1 Normal -Exif.CanonCs.Saturation Short 1 Normal -Exif.CanonCs.Sharpness Short 1 Normal -Exif.CanonCs.ISOSpeed Short 1 Auto -Exif.CanonCs.MeteringMode Short 1 Evaluative -Exif.CanonCs.FocusType Short 1 Auto -Exif.CanonCs.AFPoint Short 1 Manual AF point selection -Exif.CanonCs.ExposureProgram Short 1 Program (P) -Exif.CanonCs.LensType Short 1 (65535) -Exif.CanonCs.Lens Short 3 6.0 - 72.0 mm -Exif.CanonCs.MaxAperture Short 1 F3.6 -Exif.CanonCs.MinAperture Short 1 F8 -Exif.CanonCs.FlashActivity Short 1 Did not fire -Exif.CanonCs.FlashDetails Short 1 -Exif.CanonCs.FocusContinuous Short 1 Continuous -Exif.CanonCs.AESetting Short 1 Normal AE -Exif.CanonCs.ImageStabilization Short 1 On -Exif.CanonCs.DisplayAperture Short 1 0 -Exif.CanonCs.ZoomSourceWidth Short 1 3264 -Exif.CanonCs.ZoomTargetWidth Short 1 3264 -Exif.CanonCs.SpotMeteringMode Short 1 Center -Exif.CanonCs.PhotoEffect Short 1 (65535) -Exif.CanonCs.ManualFlashOutput Short 1 n/a -Exif.CanonCs.ColorTone Short 1 32767 -Exif.Canon.FocalLength Short 4 21.3 mm -Exif.CanonSi.ISOSpeed Short 1 100 -Exif.CanonSi.MeasuredEV Short 1 14.25 -Exif.CanonSi.TargetAperture Short 1 F4 -Exif.CanonSi.TargetShutterSpeed Short 1 1/501 s -Exif.CanonSi.WhiteBalance Short 1 Sunny -Exif.CanonSi.Sequence Short 1 0 -Exif.CanonSi.AFPointUsed Short 1 0 focus points; none used -Exif.CanonSi.FlashBias Short 1 0 EV -Exif.CanonSi.SubjectDistance Short 1 503 -Exif.CanonSi.ApertureValue Short 1 F4 -Exif.CanonSi.ShutterSpeedValue Short 1 1/546 s -Exif.CanonSi.MeasuredEV2 Short 1 -6.00 -Exif.Canon.ImageType Ascii 25 IMG:PowerShot S5 IS JPEG -Exif.Canon.FirmwareVersion Ascii 22 Firmware Version 1.01 -Exif.Canon.FileNumber Long 1 100-1904 -Exif.Canon.OwnerName Ascii 32 Robin Mills -Exif.Canon.CameraInfo Long 148 370 411 0 0 0 384 874 4294967255 0 0 0 0 577 889 4294967150 0 0 4294967287 0 0 1 0 0 0 9 10 888 888 888 384 1015 4294967148 0 0 888 888 0 0 1 3072 3072 3072 3072 3072 4294964224 4294964224 4294964224 4294964224 4294964224 0 4294964224 4294967287 0 0 0 0 0 0 0 0 0 0 164 1024 1024 40 94 0 0 0 0 0 0 525 0 40 94 0 0 3 1 0 0 921 1027 1024 1280 0 40 97 10 881 1646 1711 881 1 1014 384 888 659 4294967148 2 128 1 0 0 0 0 7532 5 0 0 0 0 0 0 7819 8252 8279 128 1 0 4294961112 3 1 7471 0 0 0 0 0 0 0 0 5345 1088 245 446 100 196 44 4091 4091 1 1 25 8 2400605383 -Exif.Canon.ModelID Long 1 PowerShot S5 IS -Exif.Canon.ThumbnailImageValidArea Short 4 0 0 0 0 -Exif.Canon.SuperMacro Short 1 Off -Exif.Canon.AFInfo Short 48 96 2 9 1 2592 1944 1088 245 196 0 0 0 0 0 0 0 0 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -Exif.Photo.UserComment Undefined 264 (Binary value suppressed) -Exif.Photo.FlashpixVersion Undefined 4 1.00 -Exif.Photo.ColorSpace Short 1 sRGB -Exif.Photo.PixelXDimension Short 1 2592 -Exif.Photo.PixelYDimension Short 1 1944 -Exif.Photo.InteroperabilityTag Long 1 3350 -Exif.Iop.InteroperabilityIndex Ascii 4 R98 -Exif.Iop.InteroperabilityVersion Undefined 4 1.00 -Exif.Iop.RelatedImageWidth Short 1 2592 -Exif.Iop.RelatedImageLength Short 1 1944 -Exif.Photo.FocalPlaneXResolution Rational 1 11520 -Exif.Photo.FocalPlaneYResolution Rational 1 11503 -Exif.Photo.FocalPlaneResolutionUnit Short 1 inch -Exif.Photo.SensingMethod Short 1 One-chip color area -Exif.Photo.FileSource Undefined 1 Digital still camera -Exif.Photo.CustomRendered Short 1 Normal process -Exif.Photo.ExposureMode Short 1 Auto -Exif.Photo.WhiteBalance Short 1 Manual -Exif.Photo.DigitalZoomRatio Rational 1 1.0 -Exif.Photo.SceneCaptureType Short 1 Standard -Exif.Thumbnail.Compression Short 1 JPEG (old-style) -Exif.Thumbnail.XResolution Rational 1 180 -Exif.Thumbnail.YResolution Rational 1 180 -Exif.Thumbnail.ResolutionUnit Short 1 inch -Exif.Thumbnail.JPEGInterchangeFormat Long 1 3498 -Exif.Thumbnail.JPEGInterchangeFormatLength Long 1 6714 -File name : test.png -File size : 135047 Bytes -MIME type : image/png -Image size : 200 x 150 -Camera make : Canon -Camera model : Canon PowerShot S5 IS -Image timestamp : 2008:09:06 14:34:23 -Image number : 100-1904 -Exposure time : 1/500 s -Aperture : F4 -Exposure bias : 0 EV -Flash : No, compulsory -Flash bias : 0 EV -Focal length : 21.3 mm -Subject distance: 503 -ISO speed : 80 -Exposure mode : Program (P) -Metering mode : Multi-segment -Macro mode : Off -Image quality : Fine -Exif Resolution : 2592 x 1944 -White balance : Sunny -Thumbnail : image/jpeg, 6714 Bytes -Copyright : -Exif comment : - -File name : test.tiff -File size : 194752 Bytes -MIME type : image/tiff -Image size : 282 x 212 -Camera make : SONY -Camera model : DSC-S600 -Image timestamp : -Image number : -Exposure time : -Aperture : -Exposure bias : -Flash : -Flash bias : -Focal length : -Subject distance: -ISO speed : -Exposure mode : -Metering mode : -Macro mode : -Image quality : -Exif Resolution : 282 x 212 -White balance : -Thumbnail : None -Copyright : -Exif comment : - -Exif.Image.Make Ascii 6 Canon -Exif.Image.Model Ascii 22 Canon PowerShot S5 IS -Exif.Image.Orientation Short 1 top, left -Exif.Image.XResolution Rational 1 180 -Exif.Image.YResolution Rational 1 180 -Exif.Image.ResolutionUnit Short 1 inch -Exif.Image.DateTime Ascii 20 2008:09:06 14:34:23 -Exif.Image.YCbCrPositioning Short 1 Centered -Exif.Image.ExifTag Long 1 186 -Exif.Photo.ExposureTime Rational 1 1/500 s -Exif.Photo.FNumber Rational 1 F4 -Exif.Photo.ISOSpeedRatings Short 1 80 -Exif.Photo.ExifVersion Undefined 4 2.20 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeDigitized Ascii 20 2008:09:06 14:34:23 -Exif.Photo.ComponentsConfiguration Undefined 4 YCbCr -Exif.Photo.CompressedBitsPerPixel Rational 1 3 -Exif.Photo.ShutterSpeedValue SRational 1 1/501 s -Exif.Photo.ApertureValue Rational 1 F4 -Exif.Photo.ExposureBiasValue SRational 1 0 EV -Exif.Photo.MaxApertureValue Rational 1 F3.5 -Exif.Photo.MeteringMode Short 1 Multi-segment -Exif.Photo.Flash Short 1 No, compulsory -Exif.Photo.FocalLength Rational 1 21.3 mm -Exif.Photo.MakerNote Undefined 2382 (Binary value suppressed) -Exif.MakerNote.Offset Long 1 680 -Exif.MakerNote.ByteOrder Ascii 3 MM -Exif.CanonCs.Macro Short 1 Off -Exif.CanonCs.Selftimer Short 1 Off -Exif.CanonCs.Quality Short 1 Fine -Exif.CanonCs.FlashMode Short 1 Off -Exif.CanonCs.DriveMode Short 1 Single / timer -Exif.CanonCs.FocusMode Short 1 Single -Exif.CanonCs.ImageSize Short 1 Medium 1 -Exif.CanonCs.EasyMode Short 1 Manual -Exif.CanonCs.DigitalZoom Short 1 None -Exif.CanonCs.Contrast Short 1 Normal -Exif.CanonCs.Saturation Short 1 Normal -Exif.CanonCs.Sharpness Short 1 Normal -Exif.CanonCs.ISOSpeed Short 1 Auto -Exif.CanonCs.MeteringMode Short 1 Evaluative -Exif.CanonCs.FocusType Short 1 Auto -Exif.CanonCs.AFPoint Short 1 Manual AF point selection -Exif.CanonCs.ExposureProgram Short 1 Program (P) -Exif.CanonCs.LensType Short 1 (65535) -Exif.CanonCs.Lens Short 3 6.0 - 72.0 mm -Exif.CanonCs.MaxAperture Short 1 F3.6 -Exif.CanonCs.MinAperture Short 1 F8 -Exif.CanonCs.FlashActivity Short 1 Did not fire -Exif.CanonCs.FlashDetails Short 1 -Exif.CanonCs.FocusContinuous Short 1 Continuous -Exif.CanonCs.AESetting Short 1 Normal AE -Exif.CanonCs.ImageStabilization Short 1 On -Exif.CanonCs.DisplayAperture Short 1 0 -Exif.CanonCs.ZoomSourceWidth Short 1 3264 -Exif.CanonCs.ZoomTargetWidth Short 1 3264 -Exif.CanonCs.SpotMeteringMode Short 1 Center -Exif.CanonCs.PhotoEffect Short 1 (65535) -Exif.CanonCs.ManualFlashOutput Short 1 n/a -Exif.CanonCs.ColorTone Short 1 32767 -Exif.Canon.FocalLength Short 4 21.3 mm -Exif.CanonSi.ISOSpeed Short 1 100 -Exif.CanonSi.MeasuredEV Short 1 14.25 -Exif.CanonSi.TargetAperture Short 1 F4 -Exif.CanonSi.TargetShutterSpeed Short 1 1/501 s -Exif.CanonSi.WhiteBalance Short 1 Sunny -Exif.CanonSi.Sequence Short 1 0 -Exif.CanonSi.AFPointUsed Short 1 0 focus points; none used -Exif.CanonSi.FlashBias Short 1 0 EV -Exif.CanonSi.SubjectDistance Short 1 503 -Exif.CanonSi.ApertureValue Short 1 F4 -Exif.CanonSi.ShutterSpeedValue Short 1 1/546 s -Exif.CanonSi.MeasuredEV2 Short 1 -6.00 -Exif.Canon.ImageType Ascii 25 IMG:PowerShot S5 IS JPEG -Exif.Canon.FirmwareVersion Ascii 22 Firmware Version 1.01 -Exif.Canon.FileNumber Long 1 100-1904 -Exif.Canon.OwnerName Ascii 32 Robin Mills -Exif.Canon.CameraInfo Long 148 370 411 0 0 0 384 874 4294967255 0 0 0 0 577 889 4294967150 0 0 4294967287 0 0 1 0 0 0 9 10 888 888 888 384 1015 4294967148 0 0 888 888 0 0 1 3072 3072 3072 3072 3072 4294964224 4294964224 4294964224 4294964224 4294964224 0 4294964224 4294967287 0 0 0 0 0 0 0 0 0 0 164 1024 1024 40 94 0 0 0 0 0 0 525 0 40 94 0 0 3 1 0 0 921 1027 1024 1280 0 40 97 10 881 1646 1711 881 1 1014 384 888 659 4294967148 2 128 1 0 0 0 0 7532 5 0 0 0 0 0 0 7819 8252 8279 128 1 0 4294961112 3 1 7471 0 0 0 0 0 0 0 0 5345 1088 245 446 100 196 44 4091 4091 1 1 25 8 2400605383 -Exif.Canon.ModelID Long 1 PowerShot S5 IS -Exif.Canon.ThumbnailImageValidArea Short 4 0 0 0 0 -Exif.Canon.SuperMacro Short 1 Off -Exif.Canon.AFInfo Short 48 96 2 9 1 2592 1944 1088 245 196 0 0 0 0 0 0 0 0 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -Exif.Photo.UserComment Undefined 264 (Binary value suppressed) -Exif.Photo.FlashpixVersion Undefined 4 1.00 -Exif.Photo.ColorSpace Short 1 sRGB -Exif.Photo.PixelXDimension Short 1 2592 -Exif.Photo.PixelYDimension Short 1 1944 -Exif.Photo.InteroperabilityTag Long 1 3350 -Exif.Iop.InteroperabilityIndex Ascii 4 R98 -Exif.Iop.InteroperabilityVersion Undefined 4 1.00 -Exif.Iop.RelatedImageWidth Short 1 2592 -Exif.Iop.RelatedImageLength Short 1 1944 -Exif.Photo.FocalPlaneXResolution Rational 1 11520 -Exif.Photo.FocalPlaneYResolution Rational 1 11503 -Exif.Photo.FocalPlaneResolutionUnit Short 1 inch -Exif.Photo.SensingMethod Short 1 One-chip color area -Exif.Photo.FileSource Undefined 1 Digital still camera -Exif.Photo.CustomRendered Short 1 Normal process -Exif.Photo.ExposureMode Short 1 Auto -Exif.Photo.WhiteBalance Short 1 Manual -Exif.Photo.DigitalZoomRatio Rational 1 1.0 -Exif.Photo.SceneCaptureType Short 1 Standard -Exif.Thumbnail.Compression Short 1 JPEG (old-style) -Exif.Thumbnail.XResolution Rational 1 180 -Exif.Thumbnail.YResolution Rational 1 180 -Exif.Thumbnail.ResolutionUnit Short 1 inch -Exif.Thumbnail.JPEGInterchangeFormat Long 1 3498 -Exif.Thumbnail.JPEGInterchangeFormatLength Long 1 6714 -File name : test.png -File size : 135047 Bytes -MIME type : image/png -Image size : 200 x 150 -Camera make : Canon -Camera model : Canon PowerShot S5 IS -Image timestamp : 2008:09:06 14:34:23 -Image number : 100-1904 -Exposure time : 1/500 s -Aperture : F4 -Exposure bias : 0 EV -Flash : No, compulsory -Flash bias : 0 EV -Focal length : 21.3 mm -Subject distance: 503 -ISO speed : 80 -Exposure mode : Program (P) -Metering mode : Multi-segment -Macro mode : Off -Image quality : Fine -Exif Resolution : 2592 x 1944 -White balance : Sunny -Thumbnail : image/jpeg, 6714 Bytes -Copyright : -Exif comment : - -File name : test.tiff -File size : 194752 Bytes -MIME type : image/tiff -Image size : 282 x 212 -Camera make : SONY -Camera model : DSC-S600 -Image timestamp : -Image number : -Exposure time : -Aperture : -Exposure bias : -Flash : -Flash bias : -Focal length : -Subject distance: -ISO speed : -Exposure mode : -Metering mode : -Macro mode : -Image quality : -Exif Resolution : 282 x 212 -White balance : -Thumbnail : None -Copyright : -Exif comment : - -Exif.Image.Make Ascii 6 Canon -Exif.Image.Model Ascii 22 Canon PowerShot S5 IS -Exif.Image.Orientation Short 1 top, left -Exif.Image.XResolution Rational 1 180 -Exif.Image.YResolution Rational 1 180 -Exif.Image.ResolutionUnit Short 1 inch -Exif.Image.DateTime Ascii 20 2008:09:06 14:34:23 -Exif.Image.YCbCrPositioning Short 1 Centered -Exif.Image.ExifTag Long 1 186 -Exif.Photo.ExposureTime Rational 1 1/500 s -Exif.Photo.FNumber Rational 1 F4 -Exif.Photo.ISOSpeedRatings Short 1 80 -Exif.Photo.ExifVersion Undefined 4 2.20 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeDigitized Ascii 20 2008:09:06 14:34:23 -Exif.Photo.ComponentsConfiguration Undefined 4 YCbCr -Exif.Photo.CompressedBitsPerPixel Rational 1 3 -Exif.Photo.ShutterSpeedValue SRational 1 1/501 s -Exif.Photo.ApertureValue Rational 1 F4 -Exif.Photo.ExposureBiasValue SRational 1 0 EV -Exif.Photo.MaxApertureValue Rational 1 F3.5 -Exif.Photo.MeteringMode Short 1 Multi-segment -Exif.Photo.Flash Short 1 No, compulsory -Exif.Photo.FocalLength Rational 1 21.3 mm -Exif.Photo.MakerNote Undefined 2382 (Binary value suppressed) -Exif.MakerNote.Offset Long 1 680 -Exif.MakerNote.ByteOrder Ascii 3 MM -Exif.CanonCs.Macro Short 1 Off -Exif.CanonCs.Selftimer Short 1 Off -Exif.CanonCs.Quality Short 1 Fine -Exif.CanonCs.FlashMode Short 1 Off -Exif.CanonCs.DriveMode Short 1 Single / timer -Exif.CanonCs.FocusMode Short 1 Single -Exif.CanonCs.ImageSize Short 1 Medium 1 -Exif.CanonCs.EasyMode Short 1 Manual -Exif.CanonCs.DigitalZoom Short 1 None -Exif.CanonCs.Contrast Short 1 Normal -Exif.CanonCs.Saturation Short 1 Normal -Exif.CanonCs.Sharpness Short 1 Normal -Exif.CanonCs.ISOSpeed Short 1 Auto -Exif.CanonCs.MeteringMode Short 1 Evaluative -Exif.CanonCs.FocusType Short 1 Auto -Exif.CanonCs.AFPoint Short 1 Manual AF point selection -Exif.CanonCs.ExposureProgram Short 1 Program (P) -Exif.CanonCs.LensType Short 1 (65535) -Exif.CanonCs.Lens Short 3 6.0 - 72.0 mm -Exif.CanonCs.MaxAperture Short 1 F3.6 -Exif.CanonCs.MinAperture Short 1 F8 -Exif.CanonCs.FlashActivity Short 1 Did not fire -Exif.CanonCs.FlashDetails Short 1 -Exif.CanonCs.FocusContinuous Short 1 Continuous -Exif.CanonCs.AESetting Short 1 Normal AE -Exif.CanonCs.ImageStabilization Short 1 On -Exif.CanonCs.DisplayAperture Short 1 0 -Exif.CanonCs.ZoomSourceWidth Short 1 3264 -Exif.CanonCs.ZoomTargetWidth Short 1 3264 -Exif.CanonCs.SpotMeteringMode Short 1 Center -Exif.CanonCs.PhotoEffect Short 1 (65535) -Exif.CanonCs.ManualFlashOutput Short 1 n/a -Exif.CanonCs.ColorTone Short 1 32767 -Exif.Canon.FocalLength Short 4 21.3 mm -Exif.CanonSi.ISOSpeed Short 1 100 -Exif.CanonSi.MeasuredEV Short 1 14.25 -Exif.CanonSi.TargetAperture Short 1 F4 -Exif.CanonSi.TargetShutterSpeed Short 1 1/501 s -Exif.CanonSi.WhiteBalance Short 1 Sunny -Exif.CanonSi.Sequence Short 1 0 -Exif.CanonSi.AFPointUsed Short 1 0 focus points; none used -Exif.CanonSi.FlashBias Short 1 0 EV -Exif.CanonSi.SubjectDistance Short 1 503 -Exif.CanonSi.ApertureValue Short 1 F4 -Exif.CanonSi.ShutterSpeedValue Short 1 1/546 s -Exif.CanonSi.MeasuredEV2 Short 1 -6.00 -Exif.Canon.ImageType Ascii 25 IMG:PowerShot S5 IS JPEG -Exif.Canon.FirmwareVersion Ascii 22 Firmware Version 1.01 -Exif.Canon.FileNumber Long 1 100-1904 -Exif.Canon.OwnerName Ascii 32 Robin Mills -Exif.Canon.CameraInfo Long 148 370 411 0 0 0 384 874 4294967255 0 0 0 0 577 889 4294967150 0 0 4294967287 0 0 1 0 0 0 9 10 888 888 888 384 1015 4294967148 0 0 888 888 0 0 1 3072 3072 3072 3072 3072 4294964224 4294964224 4294964224 4294964224 4294964224 0 4294964224 4294967287 0 0 0 0 0 0 0 0 0 0 164 1024 1024 40 94 0 0 0 0 0 0 525 0 40 94 0 0 3 1 0 0 921 1027 1024 1280 0 40 97 10 881 1646 1711 881 1 1014 384 888 659 4294967148 2 128 1 0 0 0 0 7532 5 0 0 0 0 0 0 7819 8252 8279 128 1 0 4294961112 3 1 7471 0 0 0 0 0 0 0 0 5345 1088 245 446 100 196 44 4091 4091 1 1 25 8 2400605383 -Exif.Canon.ModelID Long 1 PowerShot S5 IS -Exif.Canon.ThumbnailImageValidArea Short 4 0 0 0 0 -Exif.Canon.SuperMacro Short 1 Off -Exif.Canon.AFInfo Short 48 96 2 9 1 2592 1944 1088 245 196 0 0 0 0 0 0 0 0 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -Exif.Photo.UserComment Undefined 264 (Binary value suppressed) -Exif.Photo.FlashpixVersion Undefined 4 1.00 -Exif.Photo.ColorSpace Short 1 sRGB -Exif.Photo.PixelXDimension Short 1 2592 -Exif.Photo.PixelYDimension Short 1 1944 -Exif.Photo.InteroperabilityTag Long 1 3350 -Exif.Iop.InteroperabilityIndex Ascii 4 R98 -Exif.Iop.InteroperabilityVersion Undefined 4 1.00 -Exif.Iop.RelatedImageWidth Short 1 2592 -Exif.Iop.RelatedImageLength Short 1 1944 -Exif.Photo.FocalPlaneXResolution Rational 1 11520 -Exif.Photo.FocalPlaneYResolution Rational 1 11503 -Exif.Photo.FocalPlaneResolutionUnit Short 1 inch -Exif.Photo.SensingMethod Short 1 One-chip color area -Exif.Photo.FileSource Undefined 1 Digital still camera -Exif.Photo.CustomRendered Short 1 Normal process -Exif.Photo.ExposureMode Short 1 Auto -Exif.Photo.WhiteBalance Short 1 Manual -Exif.Photo.DigitalZoomRatio Rational 1 1.0 -Exif.Photo.SceneCaptureType Short 1 Standard -Exif.Thumbnail.Compression Short 1 JPEG (old-style) -Exif.Thumbnail.XResolution Rational 1 180 -Exif.Thumbnail.YResolution Rational 1 180 -Exif.Thumbnail.ResolutionUnit Short 1 inch -Exif.Thumbnail.JPEGInterchangeFormat Long 1 3498 -Exif.Thumbnail.JPEGInterchangeFormatLength Long 1 6714 -File name : test.png -File size : 135047 Bytes -MIME type : image/png -Image size : 200 x 150 -Camera make : Canon -Camera model : Canon PowerShot S5 IS -Image timestamp : 2008:09:06 14:34:23 -Image number : 100-1904 -Exposure time : 1/500 s -Aperture : F4 -Exposure bias : 0 EV -Flash : No, compulsory -Flash bias : 0 EV -Focal length : 21.3 mm -Subject distance: 503 -ISO speed : 80 -Exposure mode : Program (P) -Metering mode : Multi-segment -Macro mode : Off -Image quality : Fine -Exif Resolution : 2592 x 1944 -White balance : Sunny -Thumbnail : image/jpeg, 6714 Bytes -Copyright : -Exif comment : - -File name : test.tiff -File size : 194752 Bytes -MIME type : image/tiff -Image size : 282 x 212 -Camera make : SONY -Camera model : DSC-S600 -Image timestamp : -Image number : -Exposure time : -Aperture : -Exposure bias : -Flash : -Flash bias : -Focal length : -Subject distance: -ISO speed : -Exposure mode : -Metering mode : -Macro mode : -Image quality : -Exif Resolution : 282 x 212 -White balance : -Thumbnail : None -Copyright : -Exif comment : - --------Debug--------------- -addmoddel.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -convert-test.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exifcomment.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exifdata-test.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exifprint.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exivsimple.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -iotest.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -iptceasy.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -iptcprint.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -iptctest.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -largeiptc-test.exe -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -metacopy.exe -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -mmap-test.exe -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -prevtest.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -stringto-test.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -taglist.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -tiff-test.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -utiltest.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -write-test.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -write2-test.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -xmpparse.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -xmpparser-test.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -xmpsample.exe --------DebugDLL--------------- -addmoddel.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1d.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -convert-test.exe -exiv2d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1d.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exifcomment.exe -exiv2d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1d.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exifdata-test.exe -exiv2d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1d.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exifprint.exe -exiv2d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1d.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2.exe -exiv2d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1d.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2d.dll -exivsimple.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1d.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2d.dll -iotest.exe -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1d.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2d.dll -iptceasy.exe -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1d.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2d.dll -iptcprint.exe -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1d.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2d.dll -iptctest.exe -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1d.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2d.dll -KERNEL32.dll -KERNELBASE.dll -largeiptc-test.exe -libexpat.dll -ntdll.dll -zlib1d.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -metacopy.exe -ntdll.dll -zlib1d.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -mmap-test.exe -ntdll.dll -zlib1d.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -prevtest.exe -zlib1d.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -stringto-test.exe -zlib1d.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -taglist.exe -zlib1d.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -tiff-test.exe -zlib1d.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -utiltest.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -write-test.exe -zlib1d.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -write2-test.exe -zlib1d.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -xmpparse.exe -zlib1d.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -xmpparser-test.exe -zlib1d.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -xmpsample.exe -zlib1d.dll --------Release--------------- -addmoddel.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -convert-test.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exifcomment.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exifdata-test.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exifprint.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exivsimple.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -iotest.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -iptceasy.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -iptcprint.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -iptctest.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -largeiptc-test.exe -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -metacopy.exe -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -mmap-test.exe -ntdll.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -prevtest.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -stringto-test.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -taglist.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -tiff-test.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -utiltest.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -write-test.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -write2-test.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -xmpparse.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -xmpparser-test.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -xmpsample.exe --------ReleaseDLL--------------- -addmoddel.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -convert-test.exe -exiv2.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exifcomment.exe -exiv2.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exifdata-test.exe -exiv2.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exifprint.exe -exiv2.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2.dll -exiv2.exe -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2.dll -exivsimple.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2.dll -iotest.exe -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2.dll -iptceasy.exe -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2.dll -iptcprint.exe -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2.dll -iptctest.exe -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2.dll -KERNEL32.dll -KERNELBASE.dll -largeiptc-test.exe -libexpat.dll -ntdll.dll -zlib1.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -metacopy.exe -ntdll.dll -zlib1.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -mmap-test.exe -ntdll.dll -zlib1.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -prevtest.exe -zlib1.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -stringto-test.exe -zlib1.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -taglist.exe -zlib1.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -tiff-test.exe -zlib1.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -utiltest.exe -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -write-test.exe -zlib1.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -write2-test.exe -zlib1.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -xmpparse.exe -zlib1.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -xmpparser-test.exe -zlib1.dll -API-MS-Win-Core-Debug-L1-1-0.dll -API-MS-Win-Core-ErrorHandling-L1-1-0.dll -API-MS-Win-Core-Fibers-L1-1-0.dll -API-MS-Win-Core-File-L1-1-0.dll -API-MS-Win-Core-Handle-L1-1-0.dll -API-MS-Win-Core-Heap-L1-1-0.dll -API-MS-Win-Core-IO-L1-1-0.dll -API-MS-Win-Core-LibraryLoader-L1-1-0.dll -API-MS-Win-Core-Localization-L1-1-0.dll -API-MS-Win-Core-Memory-L1-1-0.dll -API-MS-Win-Core-Misc-L1-1-0.dll -API-MS-Win-Core-NamedPipe-L1-1-0.dll -API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll -API-MS-Win-Core-ProcessThreads-L1-1-0.dll -API-MS-Win-Core-Profile-L1-1-0.dll -API-MS-Win-Core-RtlSupport-L1-1-0.dll -API-MS-Win-Core-String-L1-1-0.dll -API-MS-Win-Core-Synch-L1-1-0.dll -API-MS-Win-Core-SysInfo-L1-1-0.dll -API-MS-Win-Core-ThreadPool-L1-1-0.dll -API-MS-Win-Core-Util-L1-1-0.dll -API-MS-Win-Security-Base-L1-1-0.dll -exiv2.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -xmpsample.exe -zlib1.dll diff --git a/platform/win32/msvc/external/exiv2/msvc/stringto-test/stringto-test.vcproj b/platform/win32/msvc/external/exiv2/msvc/stringto-test/stringto-test.vcproj deleted file mode 100644 index 4d0842fe80b..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/stringto-test/stringto-test.vcproj +++ /dev/null @@ -1,392 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/taglist/taglist.vcproj b/platform/win32/msvc/external/exiv2/msvc/taglist/taglist.vcproj deleted file mode 100644 index e963de7ec9e..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/taglist/taglist.vcproj +++ /dev/null @@ -1,395 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/test.jpg b/platform/win32/msvc/external/exiv2/msvc/test.jpg deleted file mode 100644 index fa0e7bbf7ea..00000000000 Binary files a/platform/win32/msvc/external/exiv2/msvc/test.jpg and /dev/null differ diff --git a/platform/win32/msvc/external/exiv2/msvc/test.png b/platform/win32/msvc/external/exiv2/msvc/test.png deleted file mode 100644 index ccc802ac1a2..00000000000 Binary files a/platform/win32/msvc/external/exiv2/msvc/test.png and /dev/null differ diff --git a/platform/win32/msvc/external/exiv2/msvc/test.tiff b/platform/win32/msvc/external/exiv2/msvc/test.tiff deleted file mode 100644 index f2b19fa7c27..00000000000 Binary files a/platform/win32/msvc/external/exiv2/msvc/test.tiff and /dev/null differ diff --git a/platform/win32/msvc/external/exiv2/msvc/tiff-test/tiff-test.vcproj b/platform/win32/msvc/external/exiv2/msvc/tiff-test/tiff-test.vcproj deleted file mode 100644 index e27d2cf1395..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/tiff-test/tiff-test.vcproj +++ /dev/null @@ -1,399 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/updater.bat b/platform/win32/msvc/external/exiv2/msvc/updater.bat deleted file mode 100644 index 1ab5b99af6d..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/updater.bat +++ /dev/null @@ -1,36 +0,0 @@ -@echo off -set F=..\..\ -set T=..\..\..\gnu.master\ -set X=exiv2\msvc\runner.txt && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\updater.bat && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\cleaner.bat && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\editor.bat && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\test.jpg && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\test.png && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\exiv2.sln && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\exiv2+organize.sln && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\addmoddel\addmoddel.vcproj && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\exifcomment\exifcomment.vcproj && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\exifdata-test\exifdata-test.vcproj && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\exifprint\exifprint.vcproj && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\exiv2\exiv2.vcproj && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\exiv2lib\exiv2lib.vcproj && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\exivsimple\exivsimple.vcproj && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\iotest\iotest.vcproj && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\iptceasy\iptceasy.vcproj && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\iptcprint\iptcprint.vcproj && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\iptctest\iptctest.vcproj && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\largeiptc-test\largeiptc-test.vcproj && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\metacopy\metacopy.vcproj && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\prevtest\prevtest.vcproj && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\organize\organize.vcproj && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\stringto-test\stringto-test.vcproj && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\taglist\taglist.vcproj && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\utiltest\utiltest.vcproj && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\write-test\write-test.vcproj && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\write2-test\write2-test.vcproj && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\xmpparse\xmpparse.vcproj && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\xmpparser-test\xmpparser-test.vcproj && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\xmpsample\xmpsample.vcproj && copy/y "%F%%X%" "%T%%X%" -set X=exiv2\msvc\xmpsdk\xmpsdk.vcproj && copy/y "%F%%X%" "%T%%X%" - diff --git a/platform/win32/msvc/external/exiv2/msvc/utiltest/utiltest.vcproj b/platform/win32/msvc/external/exiv2/msvc/utiltest/utiltest.vcproj deleted file mode 100644 index c8757c3100d..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/utiltest/utiltest.vcproj +++ /dev/null @@ -1,411 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/write-test/write-test.vcproj b/platform/win32/msvc/external/exiv2/msvc/write-test/write-test.vcproj deleted file mode 100644 index 3451e0f7bbd..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/write-test/write-test.vcproj +++ /dev/null @@ -1,395 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/write2-test/write2-test.vcproj b/platform/win32/msvc/external/exiv2/msvc/write2-test/write2-test.vcproj deleted file mode 100644 index dbd8e19b0cd..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/write2-test/write2-test.vcproj +++ /dev/null @@ -1,395 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/xmpparse/xmpparse.vcproj b/platform/win32/msvc/external/exiv2/msvc/xmpparse/xmpparse.vcproj deleted file mode 100644 index cf2be756e3a..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/xmpparse/xmpparse.vcproj +++ /dev/null @@ -1,395 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/xmpparser-test/xmpparser-test.vcproj b/platform/win32/msvc/external/exiv2/msvc/xmpparser-test/xmpparser-test.vcproj deleted file mode 100644 index eead74ab9f8..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/xmpparser-test/xmpparser-test.vcproj +++ /dev/null @@ -1,395 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/xmpsample/xmpsample.vcproj b/platform/win32/msvc/external/exiv2/msvc/xmpsample/xmpsample.vcproj deleted file mode 100644 index 8d54378602b..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/xmpsample/xmpsample.vcproj +++ /dev/null @@ -1,395 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc/xmpsdk/xmpsdk.vcproj b/platform/win32/msvc/external/exiv2/msvc/xmpsdk/xmpsdk.vcproj deleted file mode 100644 index 7aca29f4a41..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc/xmpsdk/xmpsdk.vcproj +++ /dev/null @@ -1,481 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc64/ReadMe.txt b/platform/win32/msvc/external/exiv2/msvc64/ReadMe.txt deleted file mode 100644 index 8a5f6539c71..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/ReadMe.txt +++ /dev/null @@ -1,248 +0,0 @@ -exiv2\msvc64\ReadMe.txt ------------------------ - -Updated: 2011-02-25 -This is work in progress. -However this is sufficiently robust to be in current use by a commercial licensee of exiv2. - -1) Working - Build 32 bit and 64 bit builds of exiv2.exe (and libraries exiv2lib,expat,zlib,xmpsdk). - Builds with VS2005, 2008 and 2010. - Supports zlib-1.2.5 or zlib-1.2.3 - setbuild.py "doctors" the project files for DevStudio Express - buildall.bat batch building script - runner.py build verification script (and binaries/code for depends{32|64}.exe) - -2) TODO (in priority order) - a) Build sample/test applications (exifprint etc) - b) Use .vsprop files to hold "common" project settings - - Assistance appreciated if you wish to become involved. - -Robin Mills -http://clanmills.com -email: robin@clanmills.com - -#### -T A B L E o f C O N T E N T S - -1 Build Instructions -1.1 Tools -1.2 Install zlib and expat sources. -1.3 Open exiv2\msvc64\exiv2.sln -1.4 What is build -1.5 Building with zlib1.2.3 -1.6 Express editions of DevStudio (or 32 bit only builds, or 64 bit only builds) - -2 Design -2.1 Architecture -2.2 Changing the version of expat/zlib/xmpsdk -2.3 Relationship with msvc build environment - -3 Acknowledgment of prior work -3.1 Differences between inherited project and the exiv2 projects - -4 Batch builds and tests -4.1 buildall.bat -4.2 runner.py - -## End Table of Contents End ## -#### - -1 Build Instructions - -1.1 Tools - This has been tested with the "Pro" versions of VS 2005/08/10 - Express editions don't support 64 bit builds, however it is - possible to build 32 bit libraries with "Express". - See notes below about DevStudio Express and building only Win32 or x64 builds - -1.2 Install zlib and expat sources. - I use the directory c:\gnu for this purpose, however the name isn't important. - - c:\gnu>dir - Directory of c:\gnu - 2010-12-05 10:05 exiv2 <--- this tree - 2010-12-02 21:06 expat-2.0.1 <--- "vanilla" expat 2.0.1 source tree - 2010-12-02 20:58 zlib-1.2.5 <--- "vanilla" zlib 1.2.5 source tree - 2010-12-02 20:58 zlib-1.2.3 OPTIONAL <--- "vanilla" zlib 1.2.3 source tree - c:\gnu> - - The URLs from which to obtain zlib and expat are documented in exiv2\msvc\README-MSVC.txt - expat-2.0.1 is available from http://voxel.dl.sourceforge.net/sourceforge/expat/expat-2.0.1.tar.gz - zlib-1.2.5 is available from http://zlib.net/zlib-1.2.5.tar.gz - -1.3 Open exiv2\msvc64\exiv2.sln - Projects are zlib, expat, xmpsdk, exiv2lib, exiv2 - Build/Batch build... Select All, Build - - 5 projects (zlib, expat, xmpsdk, exiv2lib, exiv2) - x 2 Platforms (x64|Win32) - x 4 Configurations (Debug|Release|DebugDLL|ReleaseDLL) - = 5x2x4 = 40 builds. - - If you haven't installed the x64 compiler, don't select the 64 bit configurations! - You may have to hand-edit the vcproj and sln files to hide the 64 bit information. - See the notes about DevStudio Express for more information about this. - - Build time is 15 minutes on a 2.2GHz Duo Core and consumes 1.0 gBytes of disk space. - -1.4 What is built - The DLL builds use the DLL version of the C runtime libraries - The Debug|Release builds use static C runtime libraries - This is discussed in exiv2\msvc\README-MSVC.txt - -1.5 Building with zlib1.2.3 - By default, msvc64 builds with zlib-1.2.5 - You can build with zlib1.2.3. To do this: - - 1) copy/y exiv2\msvc64\zlib123\zlib.vcproj exiv2\msvc64\zlib\zlib.vcproj - - 2) You will need the sources in a directory parallel to exiv2 - c:\gnu>dir - Directory of c:\gnu - 2010-12-05 10:05 exiv2 <--- this tree - 2010-12-02 21:06 expat-2.0.1 <--- "vanilla" expat 2.0.1 source tree - 2010-12-02 20:58 zlib-1.2.5 <--- "vanilla" zlib 1.2.5 source tree - 2010-12-02 20:58 zlib-1.2.3 OPTIONAL <--- "vanilla" zlib 1.2.3 source tree - c:\gnu> - Please see exiv2\msvc\README-MSVC.txt for information about obtaining zlib-1.2.3 - - 3) Alter the "AdditionalIncludeDirectories" in the following projects: - xmpsdk.vcproj - exiv2lib.vcproj - exiv2.vcproj - There are 8 occurances of "AdditionalIncludeDirectories" in each of the 3 projects. - - If you have both 1.2.3 and 1.2.5 in your build tree, you'll probably "get away with" not - making this change - however this is due to good luck and you should really adjust the vcprojects. - -1.6 Express editions of DevStudio (or 32 bit only builds, or 64 bit only builds) - Express does not provide a 64 bit compiler. - You can build 32 bit libraries with DevStudio Express (with a little effort) - - Before loading the project, use the python script setbuild.py to select Win32: - - c:\gnu\exiv2\msvc64>setbuild.py Win32 - - setbuild.py is none destructive. If you have a 64 bit compiler, you can: - 1) Restore the build environment with: setbuild.py all - 2) Select x64 bit builds only with: setbuild.py x64 - - If you don't have python available (it's a free download from ActiveState.com), - you can "doctor" to project files manually to remove mentiosn of X64 using an editor: - - Cleanup your tree and edit the files. - cd exiv2\msvc64 - call cleaner.bat - for /r %f in (*.vcproj) do notepad %f - for /r %f in (*.sln) do notepad %f - - I personally don't recommend notepad for any purpose at all. - I use TextPad http://www.textpad.com/ Notepad++ is also good. - - DevStudio Express 2010 does not have the "Batch Build" feature. - Select "exiv2" right-click "Set as Startup Project" and - Select Platform="Win32" Configuration="Debug|DebugDLL|Release|ReleaseDLL" Build. - Build the Configurations you need. Build time is about 2 minutes/Configuration. - - To remove the "memory" of old configurations: - setbuild.py reset - -2 Design - - expat and zlib do not provide 64 bit builds for DevStudio, - so it has been necessary to create the build environments for exiv2. - However, we don't include the source code for zlib or expat - only the build environment. - You are expected to install the "vanilla" expat and zlib libraries - in a directory at the same level as exiv2. - I personally always build in the directory c:\gnu, - however the name/location/spaces of the build directory are all irrelevant, - it's only the relative position of expat-2.0.1 and zlib-1.2.5 that matter. - The names expat-2.0.1 and zlib-1.2.5 fixed (and used by the .vcproj files) - - zlib and expat - exiv2\msvc64\zlib\zlib.{sln|vcproj} DevStudio files - ..\..\..\zlib-1.2.5\ Source code - - exiv2\msvc64\expat\expat.sln expat.vcproj DevStudio files - ..\..\..\expat-2.0.1\ Source code - -2.1 Architecture - There are directories for every component: - The libraries: zlib, expat, xmpsdk, exiv2lib - Applications: exiv2 (exifprint.exe and other sample apps will be added on request) - - For each component, there are three build directories: - exiv2lib\build intermediate results - exiv2lib\Win32\{Debug|Release|DebugDLL|ReleaseDLL} 32 bit builds - exiv2lib\x64\{Debug|Release|DebugDLL|ReleaseDLL} 64 bit builds - - Final builds and include directories (for export to "foreign" projects) - bin\{win32|x84}\Win32\{Debug|Release|DebugDLL|ReleaseDLL} - include - -2.2 Changing the version of expat/zlib/xmpsdk - At the moment, zlib contains references to zlib-1.2.3 and expat to expat-2.0.1 - It is planned to support zlib 1.2.5 shortly and these notes will be updated at that time. - -2.3 Relationship with msvc build environment - msvc64 is similar to msvc. - However there are significant differences: - 1) msvc64 supports 64 bit and 32 bit builds - 2) msvc64 provides projects to build expat and zlib - 3) msvc64 is designed to accomodate new versions of expat and zlib when they become available. - 4) msvc64 supports DevStudio 2005, 2008 and 2010 (no support for 2003) - 5) msvc64 does not require you to build 'vanilla' expat and zlib projects in advance - 6) msvc64 does not support the organize application - 7) msvc64 does not build the sample/test applications (such as exfprint.exe) - 8) msvc64 has no test/build verification scripts - 9) msvc64 supports building with zlib1.2.5 (default) or zlib1.2.3 - - msvc will continue to be supported for 32 bit builds using DevStudio 2003/05/08, - however there is no plan to enhance or develop msvc going forward. - -3 Acknowledgement of prior work - This work is based on work by the following people: - zlib 64 bit build - - Copyright (C) 2000-2004 Simon-Pierre Cadieux. - Copyright (C) 2004 Cosmin Truta. - For conditions of distribution and use, see copyright notice in zlib.h. - - And was obtained from: http://www.achacha.org/vc2008_zlib/ - - expat 64 bit build - http://www.start64.com/index.php?option=com_content&task=view&id=3461&Itemid=114 - - I recognise and respect the work performed by those individuals. - -3.1 Differences between inherited projects and the exiv2 projects - There is no compatiblity. - -4 Batch builds and tests - -4.1 buildall.bat - This was intended to be a "throw away" kind of script and it's grown to be quite useful. - You will have to run vcvars32.bat for the compiler you intend to use to ensure devenv is - on your path. - - It doesn't know anything about building only x64 or only Win32. Change the script if you - want something special. - - I'll probably combine buildall.bat and setbuild.py into a single script one day. - -4.2 runner.py - runner.py [Win32|x64|all] - - This script runs some basic "sanity" checks on the build. You should compare the - output of runner.py with the reference output runner.txt. - diff/windiff/winmergeu - or whatever your favorite diff tool. - - python runner.py all > new.txt - winmergeu.exe new.txt runner.txt - - If you have only build Win32 (or x64), you'll have to remove the output from - runner.txt for the target that isn't of interest. - -# That's all Folks! -## diff --git a/platform/win32/msvc/external/exiv2/msvc64/buildall.bat b/platform/win32/msvc/external/exiv2/msvc64/buildall.bat deleted file mode 100644 index a16d65d5e85..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/buildall.bat +++ /dev/null @@ -1,52 +0,0 @@ -@echo off - -rem ## -rem buildall - wee script for building from the command line - -setlocal ENABLEEXTENSIONS -set "SYNTAX=buildall [ /build ^| /rebuild ^| /clean ^| /upgrade ]" - -rem ## -rem test arguments -set "ACTION=%1%" -if NOT DEFINED ACTION ( - echo %SYNTAX% - goto jail -) - -rem ## -rem execute /upgrade -if %ACTION%==/upgrade ( - devenv /upgrade exiv2.sln - goto jail -) - -rem ## -rem cleanup the bin if necessary -set DELBIN=0 -if %ACTION%==/rebuild set DELBIN=1 -if %ACTION%==/clean set DELBIN=1 -if %DELBIN%==1 ( - if EXIST bin rmdir/s/q bin - del/s *.pdb *.ild *.ncb *.bsc *.idb *.ilk *.pch *.tlog > NUL - rmdir/s/q exiv2lib\win32 rmdir/s/q exiv2lib\x64 rmdir/s/q zlib\win32 zlib\x64 > NUL -) - -rem ## -rem the main build activity -devenv exiv2.sln %ACTION% "Debug|Win32" -devenv exiv2.sln %ACTION% "DebugDLL|Win32" -devenv exiv2.sln %ACTION% "Release|Win32" -devenv exiv2.sln %ACTION% "ReleaseDLL|Win32" -devenv exiv2.sln %ACTION% "Debug|x64" -devenv exiv2.sln %ACTION% "DebugDLL|x64" -devenv exiv2.sln %ACTION% "Release|x64" -devenv exiv2.sln %ACTION% "ReleaseDLL|x64" - -rem ## -rem cleanup and leave -:jail -endlocal - -rem That's all Folks! -rem ## diff --git a/platform/win32/msvc/external/exiv2/msvc64/cleanup.bat b/platform/win32/msvc/external/exiv2/msvc64/cleanup.bat deleted file mode 100644 index e149af78d01..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/cleanup.bat +++ /dev/null @@ -1,40 +0,0 @@ -setlocal - -set X=exiv2\build && if EXIST %X% rmdir/s/q %X% -set X=exiv2\Win32 && if EXIST %X% rmdir/s/q %X% -set X=exiv2\x64 && if EXIST %X% rmdir/s/q %X% - -set X=exiv2lib\build && if EXIST %X% rmdir/s/q %X% -set X=exiv2lib\Win32 && if EXIST %X% rmdir/s/q %X% -set X=exiv2lib\x64 && if EXIST %X% rmdir/s/q %X% - -set X=expat\build && if EXIST %X% rmdir/s/q %X% -set X=expat\Win32 && if EXIST %X% rmdir/s/q %X% -set X=expat\x64 && if EXIST %X% rmdir/s/q %X% - -set X=xmpsdk\build && if EXIST %X% rmdir/s/q %X% -set X=xmpsdk\Win32 && if EXIST %X% rmdir/s/q %X% -set X=xmpsdk\x64 && if EXIST %X% rmdir/s/q %X% - -set X=zlib\build && if EXIST %X% rmdir/s/q %X% -set X=zlib\Win32 && if EXIST %X% rmdir/s/q %X% -set X=zlib\x64 && if EXIST %X% rmdir/s/q %X% - -set X=zlib123\build && if EXIST %X% rmdir/s/q %X% -set X=zlib123\Win32 && if EXIST %X% rmdir/s/q %X% -set X=zlib123\x64 && if EXIST %X% rmdir/s/q %X% - -set X=zlib125\build && if EXIST %X% rmdir/s/q %X% -set X=zlib125\Win32 && if EXIST %X% rmdir/s/q %X% -set X=zlib125\x64 && if EXIST %X% rmdir/s/q %X% - -del/s *.ncb -del/s *.sdf -del/s *.vcxproj -del/s *%USERNAME%* -del/s *.filters - -rmdir/s/q bin - -endlocal - diff --git a/platform/win32/msvc/external/exiv2/msvc64/exiv2/cleaner.bat b/platform/win32/msvc/external/exiv2/msvc64/exiv2/cleaner.bat deleted file mode 100644 index 778d2766061..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/exiv2/cleaner.bat +++ /dev/null @@ -1,2 +0,0 @@ -del/s *.vcxproj *.ncb *.user *.filters *.sdf -for /r %d in (build,win32,x64) do rmdir/s/q %d diff --git a/platform/win32/msvc/external/exiv2/msvc64/exiv2/exiv2.vcproj b/platform/win32/msvc/external/exiv2/msvc64/exiv2/exiv2.vcproj deleted file mode 100644 index 5ff85427415..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/exiv2/exiv2.vcproj +++ /dev/null @@ -1,797 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc64/exiv2lib/exiv2lib.vcproj b/platform/win32/msvc/external/exiv2/msvc64/exiv2lib/exiv2lib.vcproj deleted file mode 100644 index f46ea553b8c..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/exiv2lib/exiv2lib.vcproj +++ /dev/null @@ -1,1028 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc64/expat/expat.vcproj b/platform/win32/msvc/external/exiv2/msvc64/expat/expat.vcproj deleted file mode 100644 index 99bce455f08..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/expat/expat.vcproj +++ /dev/null @@ -1,771 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc64/include/exv_msvc.h b/platform/win32/msvc/external/exiv2/msvc64/include/exv_msvc.h deleted file mode 100644 index 4e315e28113..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/include/exv_msvc.h +++ /dev/null @@ -1,124 +0,0 @@ -/* ***************************************************************** -*- C -*- */ -/*! - @file exv_msvc.h - @brief Configuration settings for MSVC - @version $Rev: 2320 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 07-Feb-04, ahu: created - 26-Feb-05, ahu: renamed and moved to src directory - */ - -/* Todo: The PACKAGE_* defines should be generated */ - -#ifdef _MSC_VER - -#if _MSC_VER >= 1600 -// stdint.h was introduced with DevStudio 2010 -#define EXV_HAVE_STDINT_H 1 -#endif - -/* Define to 1 if you have the header file. */ -#define EXV_HAVE_PROCESS_H 1 - -/* Define to the address where bug reports for this package should be sent. */ -#define EXV_PACKAGE_BUGREPORT "ahuggel@gmx.net" - -/* Define to the full name of this package. */ -#define EXV_PACKAGE_NAME "exiv2" - -/* Define to the full name and version of this package. */ -#define EXV_PACKAGE_STRING "exiv2 0.23" - -/* Define to the one symbol short name of this package. */ -#define EXV_PACKAGE_TARNAME "exiv2" - -/* Define to the version of this package. */ -#define EXV_PACKAGE_VERSION "0.23" - -/* Define to `int' if does not define pid_t. */ -typedef int pid_t; - -#ifndef EXV_COMMERCIAL_VERSION - -/* Define to 1 to enable translation of Nikon lens names. */ -# define EXV_HAVE_LENSDATA 1 - -/* Define to 1 if translation of program messages to the user's - native language is requested. */ -# undef EXV_ENABLE_NLS - -#endif /* !EXV_COMMERCIAL_VERSION */ - -/* Define to 1 if you have the `iconv' function. */ -# undef EXV_HAVE_ICONV - -/* Define as 1 if you have the `zlib' library. (0 to omit zlib) [png support] */ -#define HAVE_LIBZ 1 - -#if HAVE_LIBZ - #define EXV_HAVE_LIBZ - // assist VC7.1 to compile vsnprintf - #if (_MSC_VER < 1400) && !defined(vsnprintf) - #define vsnprintf _vsnprintf - #endif -#endif - -/* Define to 1 if you have the Adobe XMP Toolkit. */ -#define EXV_HAVE_XMP_TOOLKIT 1 - -/* File path seperator */ -#define EXV_SEPERATOR_STR "\\" -#define EXV_SEPERATOR_CHR '\\' - -/* Windows unicode path support */ -#define EXV_UNICODE_PATH - -/* Define to 1 if you have the `mmap' function. */ -/* #undef EXV_HAVE_MMAP */ - -/* Define to 1 if you have the `munmap' function. */ -/* #undef EXV_HAVE_MUNMAP */ - -/* Shared library support */ -#ifdef EXV_HAVE_DLL -#define EXV_IMPORT __declspec(dllimport) -#define EXV_EXPORT __declspec(dllexport) -#define EXV_DLLLOCAL -#define EXV_DLLPUBLIC -#else -#define EXV_IMPORT -#define EXV_EXPORT -#define EXV_DLLLOCAL -#define EXV_DLLPUBLIC -#define EXIV2API -#endif - -/* Define EXIV2API for DLL builds */ -#ifdef EXV_HAVE_DLL -# ifdef EXV_BUILDING_LIB -# define EXIV2API EXV_EXPORT -# else -# define EXIV2API EXV_IMPORT -# endif /* ! EXV_BUILDING_LIB */ -#else -# define EXIV2API -#endif /* ! EXV_HAVE_DLL */ - - -/* - Disable warning 4251. This is warning from std templates about exporting interfaces -*/ -#ifdef EXV_HAVE_DLL -#pragma warning( disable : 4251 ) -#endif -/* - Visual Studio C++ 2005 (8.0) - Disable warnings about 'deprecated' standard functions - See, eg. http://www.informit.com/guides/content.asp?g=cplusplus&seqNum=259 -*/ -#if _MSC_VER >= 1400 -# pragma warning(disable : 4996) -#endif - -#endif /* _MSC_VER */ diff --git a/platform/win32/msvc/external/exiv2/msvc64/runner.py b/platform/win32/msvc/external/exiv2/msvc64/runner.py deleted file mode 100644 index aa2b9000463..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/runner.py +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env python -# -*- coding: Latin-1 -*- - -## -def syntax(): - print "syntax: python runner.py Win32|x64|all" -## - -r"""runner.py - run some tests on the exiv2 build""" - -## -import sys -import os.path - -## -def Q(path): - return '"' + path + '"' -## - -## -def exe(path,option): - """exe - handle a .exe file""" - -# print "testing ",path - - testimages=os.path.realpath('testimages') - tif=os.path.join(testimages,'test.tiff') - png=os.path.join(testimages,'test.png') - jpg=os.path.join(testimages,'test.jpg') - - os.system(path + " -V") - os.system(path + " -pt "+Q(tif) + '2>NUL | grep Original') - os.system(path + " -pt "+Q(png) + '2>NUL | grep Original') - os.system(path + " -pt "+Q(jpg) + '2>NUL | grep Original') - os.system(path + " -pt "+Q(jpg) ) -## - -## -def dll(path,option): - """dll - handle a .dll file""" - -# print "testing ",path - - bits=32 if path.find('Win32')>=0 else 64 - - depends='tools/bin/depends%d.exe' % (bits) - depends=os.path.realpath( depends ) - os.system(depends + ' -q ' + path + ' | sort') -## - -## -def visit(myData, directoryName, filesInDirectory): # called for each dir - """visit - called by os.path.walk""" - # print "in visitor",directoryName, "myData = ",myData - # print "filesInDirectory => ",filesInDirectory - for filename in filesInDirectory: # do non-dir files here - pathname = os.path.join(directoryName, filename) - if not os.path.isdir(pathname): - global paths - paths.append(pathname) -## - -## -def handle(paths,handlers): - for path in sorted(paths): - ext=os.path.splitext(path)[1].lower() - if handlers.has_key(ext): - handlers[ext](path,option) -## - -## -def runner(option): - """runner -option == None, means both x64 and Win32""" - if option in set(['x64','Win32',None]): - directory = os.path.abspath(os.path.dirname(sys.argv[0])) - directory = os.path.join(directory,"bin") - if option: - directory = os.path.join(directory,option) - - global paths - - paths=[] - os.path.walk(directory, visit, None) - handle(paths,{ '.exe' : exe } ) - handle(paths,{ '.dll' : dll } ) - handle(paths,{ '.exe' : dll } ) - else: - syntax() -## - -## -if __name__ == '__main__': - - argc = len(sys.argv) - syntaxError = argc < 2 - - if not syntaxError: - option='all' - if argc>1: - option=sys.argv[1].lower() - options = { 'x64' : 'x64' - , 'x86' : 'Win32' - , 'win32' : 'Win32' - , 'all' : None - , 'both' : None - } - syntaxError = not options.has_key(option) - if not syntaxError: - runner(options[option]) - - if syntaxError: - syntax() - -# That's all Folks! -## diff --git a/platform/win32/msvc/external/exiv2/msvc64/runner.txt b/platform/win32/msvc/external/exiv2/msvc64/runner.txt deleted file mode 100644 index efb439f82a1..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/runner.txt +++ /dev/null @@ -1,1116 +0,0 @@ -exiv2 0.23 001700 (32 bit build) -Copyright (C) 2004-2012 Andreas Huggel. - -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., 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301 USA -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Image.Make Ascii 6 Canon -Exif.Image.Model Ascii 22 Canon PowerShot S5 IS -Exif.Image.Orientation Short 1 top, left -Exif.Image.XResolution Rational 1 180 -Exif.Image.YResolution Rational 1 180 -Exif.Image.ResolutionUnit Short 1 inch -Exif.Image.DateTime Ascii 20 2008:09:06 14:34:23 -Exif.Image.YCbCrPositioning Short 1 Centered -Exif.Image.ExifTag Long 1 186 -Exif.Photo.ExposureTime Rational 1 1/500 s -Exif.Photo.FNumber Rational 1 F4 -Exif.Photo.ISOSpeedRatings Short 1 80 -Exif.Photo.ExifVersion Undefined 4 2.20 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeDigitized Ascii 20 2008:09:06 14:34:23 -Exif.Photo.ComponentsConfiguration Undefined 4 YCbCr -Exif.Photo.CompressedBitsPerPixel Rational 1 3 -Exif.Photo.ShutterSpeedValue SRational 1 1/501 s -Exif.Photo.ApertureValue Rational 1 F4 -Exif.Photo.ExposureBiasValue SRational 1 0 EV -Exif.Photo.MaxApertureValue Rational 1 F3.5 -Exif.Photo.MeteringMode Short 1 Multi-segment -Exif.Photo.Flash Short 1 No, compulsory -Exif.Photo.FocalLength Rational 1 21.3 mm -Exif.Photo.MakerNote Undefined 2382 (Binary value suppressed) -Exif.MakerNote.Offset Long 1 680 -Exif.MakerNote.ByteOrder Ascii 3 MM -Exif.CanonCs.Macro Short 1 Off -Exif.CanonCs.Selftimer Short 1 Off -Exif.CanonCs.Quality Short 1 Fine -Exif.CanonCs.FlashMode Short 1 Off -Exif.CanonCs.DriveMode Short 1 Single / timer -Exif.CanonCs.FocusMode Short 1 Single -Exif.CanonCs.ImageSize Short 1 Medium 1 -Exif.CanonCs.EasyMode Short 1 Manual -Exif.CanonCs.DigitalZoom Short 1 None -Exif.CanonCs.Contrast Short 1 Normal -Exif.CanonCs.Saturation Short 1 Normal -Exif.CanonCs.Sharpness Short 1 Normal -Exif.CanonCs.ISOSpeed Short 1 Auto -Exif.CanonCs.MeteringMode Short 1 Evaluative -Exif.CanonCs.FocusType Short 1 Auto -Exif.CanonCs.AFPoint Short 1 Manual AF point selection -Exif.CanonCs.ExposureProgram Short 1 Program (P) -Exif.CanonCs.LensType Short 1 (65535) -Exif.CanonCs.Lens Short 3 6.0 - 72.0 mm -Exif.CanonCs.MaxAperture Short 1 F3.6 -Exif.CanonCs.MinAperture Short 1 F8 -Exif.CanonCs.FlashActivity Short 1 Did not fire -Exif.CanonCs.FlashDetails Short 1 -Exif.CanonCs.FocusContinuous Short 1 Continuous -Exif.CanonCs.AESetting Short 1 Normal AE -Exif.CanonCs.ImageStabilization Short 1 On -Exif.CanonCs.DisplayAperture Short 1 0 -Exif.CanonCs.ZoomSourceWidth Short 1 3264 -Exif.CanonCs.ZoomTargetWidth Short 1 3264 -Exif.CanonCs.SpotMeteringMode Short 1 Center -Exif.CanonCs.PhotoEffect Short 1 (65535) -Exif.CanonCs.ManualFlashOutput Short 1 n/a -Exif.CanonCs.ColorTone Short 1 32767 -Exif.Canon.FocalLength Short 4 21.3 mm -Exif.CanonSi.ISOSpeed Short 1 100 -Exif.CanonSi.MeasuredEV Short 1 14.25 -Exif.CanonSi.TargetAperture Short 1 F4 -Exif.CanonSi.TargetShutterSpeed Short 1 1/501 s -Exif.CanonSi.WhiteBalance Short 1 Sunny -Exif.CanonSi.Sequence Short 1 0 -Exif.CanonSi.AFPointUsed Short 1 0 focus points; none used -Exif.CanonSi.FlashBias Short 1 0 EV -Exif.CanonSi.SubjectDistance Short 1 503 -Exif.CanonSi.ApertureValue Short 1 F4 -Exif.CanonSi.ShutterSpeedValue Short 1 1/546 s -Exif.CanonSi.MeasuredEV2 Short 1 -6.00 -Exif.Canon.ImageType Ascii 25 IMG:PowerShot S5 IS JPEG -Exif.Canon.FirmwareVersion Ascii 22 Firmware Version 1.01 -Exif.Canon.FileNumber Long 1 100-1904 -Exif.Canon.OwnerName Ascii 32 Robin Mills -Exif.Canon.CameraInfo Long 148 370 411 0 0 0 384 874 4294967255 0 0 0 0 577 889 4294967150 0 0 4294967287 0 0 1 0 0 0 9 10 888 888 888 384 1015 4294967148 0 0 888 888 0 0 1 3072 3072 3072 3072 3072 4294964224 4294964224 4294964224 4294964224 4294964224 0 4294964224 4294967287 0 0 0 0 0 0 0 0 0 0 164 1024 1024 40 94 0 0 0 0 0 0 525 0 40 94 0 0 3 1 0 0 921 1027 1024 1280 0 40 97 10 881 1646 1711 881 1 1014 384 888 659 4294967148 2 128 1 0 0 0 0 7532 5 0 0 0 0 0 0 7819 8252 8279 128 1 0 4294961112 3 1 7471 0 0 0 0 0 0 0 0 5345 1088 245 446 100 196 44 4091 4091 1 1 25 8 2400605383 -Exif.Canon.ModelID Long 1 PowerShot S5 IS -Exif.Canon.ThumbnailImageValidArea Short 4 0 0 0 0 -Exif.Canon.SuperMacro Short 1 Off -Exif.Canon.AFInfo Short 48 96 2 9 1 2592 1944 1088 245 196 0 0 0 0 0 0 0 0 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -Exif.Photo.UserComment Undefined 264 (Binary value suppressed) -Exif.Photo.FlashpixVersion Undefined 4 1.00 -Exif.Photo.ColorSpace Short 1 sRGB -Exif.Photo.PixelXDimension Short 1 2592 -Exif.Photo.PixelYDimension Short 1 1944 -Exif.Photo.InteroperabilityTag Long 1 3350 -Exif.Iop.InteroperabilityIndex Ascii 4 R98 -Exif.Iop.InteroperabilityVersion Undefined 4 1.00 -Exif.Iop.RelatedImageWidth Short 1 2592 -Exif.Iop.RelatedImageLength Short 1 1944 -Exif.Photo.FocalPlaneXResolution Rational 1 11520 -Exif.Photo.FocalPlaneYResolution Rational 1 11503 -Exif.Photo.FocalPlaneResolutionUnit Short 1 inch -Exif.Photo.SensingMethod Short 1 One-chip color area -Exif.Photo.FileSource Undefined 1 Digital still camera -Exif.Photo.CustomRendered Short 1 Normal process -Exif.Photo.ExposureMode Short 1 Auto -Exif.Photo.WhiteBalance Short 1 Manual -Exif.Photo.DigitalZoomRatio Rational 1 1.0 -Exif.Photo.SceneCaptureType Short 1 Standard -Exif.Thumbnail.Compression Short 1 JPEG (old-style) -Exif.Thumbnail.XResolution Rational 1 180 -Exif.Thumbnail.YResolution Rational 1 180 -Exif.Thumbnail.ResolutionUnit Short 1 inch -Exif.Thumbnail.JPEGInterchangeFormat Long 1 3498 -Exif.Thumbnail.JPEGInterchangeFormatLength Long 1 6714 -exiv2 0.23 001700 (32 bit build) -Copyright (C) 2004-2012 Andreas Huggel. - -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., 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301 USA -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Image.Make Ascii 6 Canon -Exif.Image.Model Ascii 22 Canon PowerShot S5 IS -Exif.Image.Orientation Short 1 top, left -Exif.Image.XResolution Rational 1 180 -Exif.Image.YResolution Rational 1 180 -Exif.Image.ResolutionUnit Short 1 inch -Exif.Image.DateTime Ascii 20 2008:09:06 14:34:23 -Exif.Image.YCbCrPositioning Short 1 Centered -Exif.Image.ExifTag Long 1 186 -Exif.Photo.ExposureTime Rational 1 1/500 s -Exif.Photo.FNumber Rational 1 F4 -Exif.Photo.ISOSpeedRatings Short 1 80 -Exif.Photo.ExifVersion Undefined 4 2.20 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeDigitized Ascii 20 2008:09:06 14:34:23 -Exif.Photo.ComponentsConfiguration Undefined 4 YCbCr -Exif.Photo.CompressedBitsPerPixel Rational 1 3 -Exif.Photo.ShutterSpeedValue SRational 1 1/501 s -Exif.Photo.ApertureValue Rational 1 F4 -Exif.Photo.ExposureBiasValue SRational 1 0 EV -Exif.Photo.MaxApertureValue Rational 1 F3.5 -Exif.Photo.MeteringMode Short 1 Multi-segment -Exif.Photo.Flash Short 1 No, compulsory -Exif.Photo.FocalLength Rational 1 21.3 mm -Exif.Photo.MakerNote Undefined 2382 (Binary value suppressed) -Exif.MakerNote.Offset Long 1 680 -Exif.MakerNote.ByteOrder Ascii 3 MM -Exif.CanonCs.Macro Short 1 Off -Exif.CanonCs.Selftimer Short 1 Off -Exif.CanonCs.Quality Short 1 Fine -Exif.CanonCs.FlashMode Short 1 Off -Exif.CanonCs.DriveMode Short 1 Single / timer -Exif.CanonCs.FocusMode Short 1 Single -Exif.CanonCs.ImageSize Short 1 Medium 1 -Exif.CanonCs.EasyMode Short 1 Manual -Exif.CanonCs.DigitalZoom Short 1 None -Exif.CanonCs.Contrast Short 1 Normal -Exif.CanonCs.Saturation Short 1 Normal -Exif.CanonCs.Sharpness Short 1 Normal -Exif.CanonCs.ISOSpeed Short 1 Auto -Exif.CanonCs.MeteringMode Short 1 Evaluative -Exif.CanonCs.FocusType Short 1 Auto -Exif.CanonCs.AFPoint Short 1 Manual AF point selection -Exif.CanonCs.ExposureProgram Short 1 Program (P) -Exif.CanonCs.LensType Short 1 (65535) -Exif.CanonCs.Lens Short 3 6.0 - 72.0 mm -Exif.CanonCs.MaxAperture Short 1 F3.6 -Exif.CanonCs.MinAperture Short 1 F8 -Exif.CanonCs.FlashActivity Short 1 Did not fire -Exif.CanonCs.FlashDetails Short 1 -Exif.CanonCs.FocusContinuous Short 1 Continuous -Exif.CanonCs.AESetting Short 1 Normal AE -Exif.CanonCs.ImageStabilization Short 1 On -Exif.CanonCs.DisplayAperture Short 1 0 -Exif.CanonCs.ZoomSourceWidth Short 1 3264 -Exif.CanonCs.ZoomTargetWidth Short 1 3264 -Exif.CanonCs.SpotMeteringMode Short 1 Center -Exif.CanonCs.PhotoEffect Short 1 (65535) -Exif.CanonCs.ManualFlashOutput Short 1 n/a -Exif.CanonCs.ColorTone Short 1 32767 -Exif.Canon.FocalLength Short 4 21.3 mm -Exif.CanonSi.ISOSpeed Short 1 100 -Exif.CanonSi.MeasuredEV Short 1 14.25 -Exif.CanonSi.TargetAperture Short 1 F4 -Exif.CanonSi.TargetShutterSpeed Short 1 1/501 s -Exif.CanonSi.WhiteBalance Short 1 Sunny -Exif.CanonSi.Sequence Short 1 0 -Exif.CanonSi.AFPointUsed Short 1 0 focus points; none used -Exif.CanonSi.FlashBias Short 1 0 EV -Exif.CanonSi.SubjectDistance Short 1 503 -Exif.CanonSi.ApertureValue Short 1 F4 -Exif.CanonSi.ShutterSpeedValue Short 1 1/546 s -Exif.CanonSi.MeasuredEV2 Short 1 -6.00 -Exif.Canon.ImageType Ascii 25 IMG:PowerShot S5 IS JPEG -Exif.Canon.FirmwareVersion Ascii 22 Firmware Version 1.01 -Exif.Canon.FileNumber Long 1 100-1904 -Exif.Canon.OwnerName Ascii 32 Robin Mills -Exif.Canon.CameraInfo Long 148 370 411 0 0 0 384 874 4294967255 0 0 0 0 577 889 4294967150 0 0 4294967287 0 0 1 0 0 0 9 10 888 888 888 384 1015 4294967148 0 0 888 888 0 0 1 3072 3072 3072 3072 3072 4294964224 4294964224 4294964224 4294964224 4294964224 0 4294964224 4294967287 0 0 0 0 0 0 0 0 0 0 164 1024 1024 40 94 0 0 0 0 0 0 525 0 40 94 0 0 3 1 0 0 921 1027 1024 1280 0 40 97 10 881 1646 1711 881 1 1014 384 888 659 4294967148 2 128 1 0 0 0 0 7532 5 0 0 0 0 0 0 7819 8252 8279 128 1 0 4294961112 3 1 7471 0 0 0 0 0 0 0 0 5345 1088 245 446 100 196 44 4091 4091 1 1 25 8 2400605383 -Exif.Canon.ModelID Long 1 PowerShot S5 IS -Exif.Canon.ThumbnailImageValidArea Short 4 0 0 0 0 -Exif.Canon.SuperMacro Short 1 Off -Exif.Canon.AFInfo Short 48 96 2 9 1 2592 1944 1088 245 196 0 0 0 0 0 0 0 0 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -Exif.Photo.UserComment Undefined 264 (Binary value suppressed) -Exif.Photo.FlashpixVersion Undefined 4 1.00 -Exif.Photo.ColorSpace Short 1 sRGB -Exif.Photo.PixelXDimension Short 1 2592 -Exif.Photo.PixelYDimension Short 1 1944 -Exif.Photo.InteroperabilityTag Long 1 3350 -Exif.Iop.InteroperabilityIndex Ascii 4 R98 -Exif.Iop.InteroperabilityVersion Undefined 4 1.00 -Exif.Iop.RelatedImageWidth Short 1 2592 -Exif.Iop.RelatedImageLength Short 1 1944 -Exif.Photo.FocalPlaneXResolution Rational 1 11520 -Exif.Photo.FocalPlaneYResolution Rational 1 11503 -Exif.Photo.FocalPlaneResolutionUnit Short 1 inch -Exif.Photo.SensingMethod Short 1 One-chip color area -Exif.Photo.FileSource Undefined 1 Digital still camera -Exif.Photo.CustomRendered Short 1 Normal process -Exif.Photo.ExposureMode Short 1 Auto -Exif.Photo.WhiteBalance Short 1 Manual -Exif.Photo.DigitalZoomRatio Rational 1 1.0 -Exif.Photo.SceneCaptureType Short 1 Standard -Exif.Thumbnail.Compression Short 1 JPEG (old-style) -Exif.Thumbnail.XResolution Rational 1 180 -Exif.Thumbnail.YResolution Rational 1 180 -Exif.Thumbnail.ResolutionUnit Short 1 inch -Exif.Thumbnail.JPEGInterchangeFormat Long 1 3498 -Exif.Thumbnail.JPEGInterchangeFormatLength Long 1 6714 -exiv2 0.23 001700 (32 bit build) -Copyright (C) 2004-2012 Andreas Huggel. - -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., 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301 USA -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Image.Make Ascii 6 Canon -Exif.Image.Model Ascii 22 Canon PowerShot S5 IS -Exif.Image.Orientation Short 1 top, left -Exif.Image.XResolution Rational 1 180 -Exif.Image.YResolution Rational 1 180 -Exif.Image.ResolutionUnit Short 1 inch -Exif.Image.DateTime Ascii 20 2008:09:06 14:34:23 -Exif.Image.YCbCrPositioning Short 1 Centered -Exif.Image.ExifTag Long 1 186 -Exif.Photo.ExposureTime Rational 1 1/500 s -Exif.Photo.FNumber Rational 1 F4 -Exif.Photo.ISOSpeedRatings Short 1 80 -Exif.Photo.ExifVersion Undefined 4 2.20 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeDigitized Ascii 20 2008:09:06 14:34:23 -Exif.Photo.ComponentsConfiguration Undefined 4 YCbCr -Exif.Photo.CompressedBitsPerPixel Rational 1 3 -Exif.Photo.ShutterSpeedValue SRational 1 1/501 s -Exif.Photo.ApertureValue Rational 1 F4 -Exif.Photo.ExposureBiasValue SRational 1 0 EV -Exif.Photo.MaxApertureValue Rational 1 F3.5 -Exif.Photo.MeteringMode Short 1 Multi-segment -Exif.Photo.Flash Short 1 No, compulsory -Exif.Photo.FocalLength Rational 1 21.3 mm -Exif.Photo.MakerNote Undefined 2382 (Binary value suppressed) -Exif.MakerNote.Offset Long 1 680 -Exif.MakerNote.ByteOrder Ascii 3 MM -Exif.CanonCs.Macro Short 1 Off -Exif.CanonCs.Selftimer Short 1 Off -Exif.CanonCs.Quality Short 1 Fine -Exif.CanonCs.FlashMode Short 1 Off -Exif.CanonCs.DriveMode Short 1 Single / timer -Exif.CanonCs.FocusMode Short 1 Single -Exif.CanonCs.ImageSize Short 1 Medium 1 -Exif.CanonCs.EasyMode Short 1 Manual -Exif.CanonCs.DigitalZoom Short 1 None -Exif.CanonCs.Contrast Short 1 Normal -Exif.CanonCs.Saturation Short 1 Normal -Exif.CanonCs.Sharpness Short 1 Normal -Exif.CanonCs.ISOSpeed Short 1 Auto -Exif.CanonCs.MeteringMode Short 1 Evaluative -Exif.CanonCs.FocusType Short 1 Auto -Exif.CanonCs.AFPoint Short 1 Manual AF point selection -Exif.CanonCs.ExposureProgram Short 1 Program (P) -Exif.CanonCs.LensType Short 1 (65535) -Exif.CanonCs.Lens Short 3 6.0 - 72.0 mm -Exif.CanonCs.MaxAperture Short 1 F3.6 -Exif.CanonCs.MinAperture Short 1 F8 -Exif.CanonCs.FlashActivity Short 1 Did not fire -Exif.CanonCs.FlashDetails Short 1 -Exif.CanonCs.FocusContinuous Short 1 Continuous -Exif.CanonCs.AESetting Short 1 Normal AE -Exif.CanonCs.ImageStabilization Short 1 On -Exif.CanonCs.DisplayAperture Short 1 0 -Exif.CanonCs.ZoomSourceWidth Short 1 3264 -Exif.CanonCs.ZoomTargetWidth Short 1 3264 -Exif.CanonCs.SpotMeteringMode Short 1 Center -Exif.CanonCs.PhotoEffect Short 1 (65535) -Exif.CanonCs.ManualFlashOutput Short 1 n/a -Exif.CanonCs.ColorTone Short 1 32767 -Exif.Canon.FocalLength Short 4 21.3 mm -Exif.CanonSi.ISOSpeed Short 1 100 -Exif.CanonSi.MeasuredEV Short 1 14.25 -Exif.CanonSi.TargetAperture Short 1 F4 -Exif.CanonSi.TargetShutterSpeed Short 1 1/501 s -Exif.CanonSi.WhiteBalance Short 1 Sunny -Exif.CanonSi.Sequence Short 1 0 -Exif.CanonSi.AFPointUsed Short 1 0 focus points; none used -Exif.CanonSi.FlashBias Short 1 0 EV -Exif.CanonSi.SubjectDistance Short 1 503 -Exif.CanonSi.ApertureValue Short 1 F4 -Exif.CanonSi.ShutterSpeedValue Short 1 1/546 s -Exif.CanonSi.MeasuredEV2 Short 1 -6.00 -Exif.Canon.ImageType Ascii 25 IMG:PowerShot S5 IS JPEG -Exif.Canon.FirmwareVersion Ascii 22 Firmware Version 1.01 -Exif.Canon.FileNumber Long 1 100-1904 -Exif.Canon.OwnerName Ascii 32 Robin Mills -Exif.Canon.CameraInfo Long 148 370 411 0 0 0 384 874 4294967255 0 0 0 0 577 889 4294967150 0 0 4294967287 0 0 1 0 0 0 9 10 888 888 888 384 1015 4294967148 0 0 888 888 0 0 1 3072 3072 3072 3072 3072 4294964224 4294964224 4294964224 4294964224 4294964224 0 4294964224 4294967287 0 0 0 0 0 0 0 0 0 0 164 1024 1024 40 94 0 0 0 0 0 0 525 0 40 94 0 0 3 1 0 0 921 1027 1024 1280 0 40 97 10 881 1646 1711 881 1 1014 384 888 659 4294967148 2 128 1 0 0 0 0 7532 5 0 0 0 0 0 0 7819 8252 8279 128 1 0 4294961112 3 1 7471 0 0 0 0 0 0 0 0 5345 1088 245 446 100 196 44 4091 4091 1 1 25 8 2400605383 -Exif.Canon.ModelID Long 1 PowerShot S5 IS -Exif.Canon.ThumbnailImageValidArea Short 4 0 0 0 0 -Exif.Canon.SuperMacro Short 1 Off -Exif.Canon.AFInfo Short 48 96 2 9 1 2592 1944 1088 245 196 0 0 0 0 0 0 0 0 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -Exif.Photo.UserComment Undefined 264 (Binary value suppressed) -Exif.Photo.FlashpixVersion Undefined 4 1.00 -Exif.Photo.ColorSpace Short 1 sRGB -Exif.Photo.PixelXDimension Short 1 2592 -Exif.Photo.PixelYDimension Short 1 1944 -Exif.Photo.InteroperabilityTag Long 1 3350 -Exif.Iop.InteroperabilityIndex Ascii 4 R98 -Exif.Iop.InteroperabilityVersion Undefined 4 1.00 -Exif.Iop.RelatedImageWidth Short 1 2592 -Exif.Iop.RelatedImageLength Short 1 1944 -Exif.Photo.FocalPlaneXResolution Rational 1 11520 -Exif.Photo.FocalPlaneYResolution Rational 1 11503 -Exif.Photo.FocalPlaneResolutionUnit Short 1 inch -Exif.Photo.SensingMethod Short 1 One-chip color area -Exif.Photo.FileSource Undefined 1 Digital still camera -Exif.Photo.CustomRendered Short 1 Normal process -Exif.Photo.ExposureMode Short 1 Auto -Exif.Photo.WhiteBalance Short 1 Manual -Exif.Photo.DigitalZoomRatio Rational 1 1.0 -Exif.Photo.SceneCaptureType Short 1 Standard -Exif.Thumbnail.Compression Short 1 JPEG (old-style) -Exif.Thumbnail.XResolution Rational 1 180 -Exif.Thumbnail.YResolution Rational 1 180 -Exif.Thumbnail.ResolutionUnit Short 1 inch -Exif.Thumbnail.JPEGInterchangeFormat Long 1 3498 -Exif.Thumbnail.JPEGInterchangeFormatLength Long 1 6714 -exiv2 0.23 001700 (32 bit build) -Copyright (C) 2004-2012 Andreas Huggel. - -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., 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301 USA -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Image.Make Ascii 6 Canon -Exif.Image.Model Ascii 22 Canon PowerShot S5 IS -Exif.Image.Orientation Short 1 top, left -Exif.Image.XResolution Rational 1 180 -Exif.Image.YResolution Rational 1 180 -Exif.Image.ResolutionUnit Short 1 inch -Exif.Image.DateTime Ascii 20 2008:09:06 14:34:23 -Exif.Image.YCbCrPositioning Short 1 Centered -Exif.Image.ExifTag Long 1 186 -Exif.Photo.ExposureTime Rational 1 1/500 s -Exif.Photo.FNumber Rational 1 F4 -Exif.Photo.ISOSpeedRatings Short 1 80 -Exif.Photo.ExifVersion Undefined 4 2.20 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeDigitized Ascii 20 2008:09:06 14:34:23 -Exif.Photo.ComponentsConfiguration Undefined 4 YCbCr -Exif.Photo.CompressedBitsPerPixel Rational 1 3 -Exif.Photo.ShutterSpeedValue SRational 1 1/501 s -Exif.Photo.ApertureValue Rational 1 F4 -Exif.Photo.ExposureBiasValue SRational 1 0 EV -Exif.Photo.MaxApertureValue Rational 1 F3.5 -Exif.Photo.MeteringMode Short 1 Multi-segment -Exif.Photo.Flash Short 1 No, compulsory -Exif.Photo.FocalLength Rational 1 21.3 mm -Exif.Photo.MakerNote Undefined 2382 (Binary value suppressed) -Exif.MakerNote.Offset Long 1 680 -Exif.MakerNote.ByteOrder Ascii 3 MM -Exif.CanonCs.Macro Short 1 Off -Exif.CanonCs.Selftimer Short 1 Off -Exif.CanonCs.Quality Short 1 Fine -Exif.CanonCs.FlashMode Short 1 Off -Exif.CanonCs.DriveMode Short 1 Single / timer -Exif.CanonCs.FocusMode Short 1 Single -Exif.CanonCs.ImageSize Short 1 Medium 1 -Exif.CanonCs.EasyMode Short 1 Manual -Exif.CanonCs.DigitalZoom Short 1 None -Exif.CanonCs.Contrast Short 1 Normal -Exif.CanonCs.Saturation Short 1 Normal -Exif.CanonCs.Sharpness Short 1 Normal -Exif.CanonCs.ISOSpeed Short 1 Auto -Exif.CanonCs.MeteringMode Short 1 Evaluative -Exif.CanonCs.FocusType Short 1 Auto -Exif.CanonCs.AFPoint Short 1 Manual AF point selection -Exif.CanonCs.ExposureProgram Short 1 Program (P) -Exif.CanonCs.LensType Short 1 (65535) -Exif.CanonCs.Lens Short 3 6.0 - 72.0 mm -Exif.CanonCs.MaxAperture Short 1 F3.6 -Exif.CanonCs.MinAperture Short 1 F8 -Exif.CanonCs.FlashActivity Short 1 Did not fire -Exif.CanonCs.FlashDetails Short 1 -Exif.CanonCs.FocusContinuous Short 1 Continuous -Exif.CanonCs.AESetting Short 1 Normal AE -Exif.CanonCs.ImageStabilization Short 1 On -Exif.CanonCs.DisplayAperture Short 1 0 -Exif.CanonCs.ZoomSourceWidth Short 1 3264 -Exif.CanonCs.ZoomTargetWidth Short 1 3264 -Exif.CanonCs.SpotMeteringMode Short 1 Center -Exif.CanonCs.PhotoEffect Short 1 (65535) -Exif.CanonCs.ManualFlashOutput Short 1 n/a -Exif.CanonCs.ColorTone Short 1 32767 -Exif.Canon.FocalLength Short 4 21.3 mm -Exif.CanonSi.ISOSpeed Short 1 100 -Exif.CanonSi.MeasuredEV Short 1 14.25 -Exif.CanonSi.TargetAperture Short 1 F4 -Exif.CanonSi.TargetShutterSpeed Short 1 1/501 s -Exif.CanonSi.WhiteBalance Short 1 Sunny -Exif.CanonSi.Sequence Short 1 0 -Exif.CanonSi.AFPointUsed Short 1 0 focus points; none used -Exif.CanonSi.FlashBias Short 1 0 EV -Exif.CanonSi.SubjectDistance Short 1 503 -Exif.CanonSi.ApertureValue Short 1 F4 -Exif.CanonSi.ShutterSpeedValue Short 1 1/546 s -Exif.CanonSi.MeasuredEV2 Short 1 -6.00 -Exif.Canon.ImageType Ascii 25 IMG:PowerShot S5 IS JPEG -Exif.Canon.FirmwareVersion Ascii 22 Firmware Version 1.01 -Exif.Canon.FileNumber Long 1 100-1904 -Exif.Canon.OwnerName Ascii 32 Robin Mills -Exif.Canon.CameraInfo Long 148 370 411 0 0 0 384 874 4294967255 0 0 0 0 577 889 4294967150 0 0 4294967287 0 0 1 0 0 0 9 10 888 888 888 384 1015 4294967148 0 0 888 888 0 0 1 3072 3072 3072 3072 3072 4294964224 4294964224 4294964224 4294964224 4294964224 0 4294964224 4294967287 0 0 0 0 0 0 0 0 0 0 164 1024 1024 40 94 0 0 0 0 0 0 525 0 40 94 0 0 3 1 0 0 921 1027 1024 1280 0 40 97 10 881 1646 1711 881 1 1014 384 888 659 4294967148 2 128 1 0 0 0 0 7532 5 0 0 0 0 0 0 7819 8252 8279 128 1 0 4294961112 3 1 7471 0 0 0 0 0 0 0 0 5345 1088 245 446 100 196 44 4091 4091 1 1 25 8 2400605383 -Exif.Canon.ModelID Long 1 PowerShot S5 IS -Exif.Canon.ThumbnailImageValidArea Short 4 0 0 0 0 -Exif.Canon.SuperMacro Short 1 Off -Exif.Canon.AFInfo Short 48 96 2 9 1 2592 1944 1088 245 196 0 0 0 0 0 0 0 0 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -Exif.Photo.UserComment Undefined 264 (Binary value suppressed) -Exif.Photo.FlashpixVersion Undefined 4 1.00 -Exif.Photo.ColorSpace Short 1 sRGB -Exif.Photo.PixelXDimension Short 1 2592 -Exif.Photo.PixelYDimension Short 1 1944 -Exif.Photo.InteroperabilityTag Long 1 3350 -Exif.Iop.InteroperabilityIndex Ascii 4 R98 -Exif.Iop.InteroperabilityVersion Undefined 4 1.00 -Exif.Iop.RelatedImageWidth Short 1 2592 -Exif.Iop.RelatedImageLength Short 1 1944 -Exif.Photo.FocalPlaneXResolution Rational 1 11520 -Exif.Photo.FocalPlaneYResolution Rational 1 11503 -Exif.Photo.FocalPlaneResolutionUnit Short 1 inch -Exif.Photo.SensingMethod Short 1 One-chip color area -Exif.Photo.FileSource Undefined 1 Digital still camera -Exif.Photo.CustomRendered Short 1 Normal process -Exif.Photo.ExposureMode Short 1 Auto -Exif.Photo.WhiteBalance Short 1 Manual -Exif.Photo.DigitalZoomRatio Rational 1 1.0 -Exif.Photo.SceneCaptureType Short 1 Standard -Exif.Thumbnail.Compression Short 1 JPEG (old-style) -Exif.Thumbnail.XResolution Rational 1 180 -Exif.Thumbnail.YResolution Rational 1 180 -Exif.Thumbnail.ResolutionUnit Short 1 inch -Exif.Thumbnail.JPEGInterchangeFormat Long 1 3498 -Exif.Thumbnail.JPEGInterchangeFormatLength Long 1 6714 -exiv2 0.23 001700 (64 bit build) -Copyright (C) 2004-2012 Andreas Huggel. - -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., 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301 USA -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Image.Make Ascii 6 Canon -Exif.Image.Model Ascii 22 Canon PowerShot S5 IS -Exif.Image.Orientation Short 1 top, left -Exif.Image.XResolution Rational 1 180 -Exif.Image.YResolution Rational 1 180 -Exif.Image.ResolutionUnit Short 1 inch -Exif.Image.DateTime Ascii 20 2008:09:06 14:34:23 -Exif.Image.YCbCrPositioning Short 1 Centered -Exif.Image.ExifTag Long 1 186 -Exif.Photo.ExposureTime Rational 1 1/500 s -Exif.Photo.FNumber Rational 1 F4 -Exif.Photo.ISOSpeedRatings Short 1 80 -Exif.Photo.ExifVersion Undefined 4 2.20 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeDigitized Ascii 20 2008:09:06 14:34:23 -Exif.Photo.ComponentsConfiguration Undefined 4 YCbCr -Exif.Photo.CompressedBitsPerPixel Rational 1 3 -Exif.Photo.ShutterSpeedValue SRational 1 1/501 s -Exif.Photo.ApertureValue Rational 1 F4 -Exif.Photo.ExposureBiasValue SRational 1 0 EV -Exif.Photo.MaxApertureValue Rational 1 F3.5 -Exif.Photo.MeteringMode Short 1 Multi-segment -Exif.Photo.Flash Short 1 No, compulsory -Exif.Photo.FocalLength Rational 1 21.3 mm -Exif.Photo.MakerNote Undefined 2382 (Binary value suppressed) -Exif.MakerNote.Offset Long 1 680 -Exif.MakerNote.ByteOrder Ascii 3 MM -Exif.CanonCs.Macro Short 1 Off -Exif.CanonCs.Selftimer Short 1 Off -Exif.CanonCs.Quality Short 1 Fine -Exif.CanonCs.FlashMode Short 1 Off -Exif.CanonCs.DriveMode Short 1 Single / timer -Exif.CanonCs.FocusMode Short 1 Single -Exif.CanonCs.ImageSize Short 1 Medium 1 -Exif.CanonCs.EasyMode Short 1 Manual -Exif.CanonCs.DigitalZoom Short 1 None -Exif.CanonCs.Contrast Short 1 Normal -Exif.CanonCs.Saturation Short 1 Normal -Exif.CanonCs.Sharpness Short 1 Normal -Exif.CanonCs.ISOSpeed Short 1 Auto -Exif.CanonCs.MeteringMode Short 1 Evaluative -Exif.CanonCs.FocusType Short 1 Auto -Exif.CanonCs.AFPoint Short 1 Manual AF point selection -Exif.CanonCs.ExposureProgram Short 1 Program (P) -Exif.CanonCs.LensType Short 1 (65535) -Exif.CanonCs.Lens Short 3 6.0 - 72.0 mm -Exif.CanonCs.MaxAperture Short 1 F3.6 -Exif.CanonCs.MinAperture Short 1 F8 -Exif.CanonCs.FlashActivity Short 1 Did not fire -Exif.CanonCs.FlashDetails Short 1 -Exif.CanonCs.FocusContinuous Short 1 Continuous -Exif.CanonCs.AESetting Short 1 Normal AE -Exif.CanonCs.ImageStabilization Short 1 On -Exif.CanonCs.DisplayAperture Short 1 0 -Exif.CanonCs.ZoomSourceWidth Short 1 3264 -Exif.CanonCs.ZoomTargetWidth Short 1 3264 -Exif.CanonCs.SpotMeteringMode Short 1 Center -Exif.CanonCs.PhotoEffect Short 1 (65535) -Exif.CanonCs.ManualFlashOutput Short 1 n/a -Exif.CanonCs.ColorTone Short 1 32767 -Exif.Canon.FocalLength Short 4 21.3 mm -Exif.CanonSi.ISOSpeed Short 1 100 -Exif.CanonSi.MeasuredEV Short 1 14.25 -Exif.CanonSi.TargetAperture Short 1 F4 -Exif.CanonSi.TargetShutterSpeed Short 1 1/501 s -Exif.CanonSi.WhiteBalance Short 1 Sunny -Exif.CanonSi.Sequence Short 1 0 -Exif.CanonSi.AFPointUsed Short 1 0 focus points; none used -Exif.CanonSi.FlashBias Short 1 0 EV -Exif.CanonSi.SubjectDistance Short 1 503 -Exif.CanonSi.ApertureValue Short 1 F4 -Exif.CanonSi.ShutterSpeedValue Short 1 1/546 s -Exif.CanonSi.MeasuredEV2 Short 1 -6.00 -Exif.Canon.ImageType Ascii 25 IMG:PowerShot S5 IS JPEG -Exif.Canon.FirmwareVersion Ascii 22 Firmware Version 1.01 -Exif.Canon.FileNumber Long 1 100-1904 -Exif.Canon.OwnerName Ascii 32 Robin Mills -Exif.Canon.CameraInfo Long 148 370 411 0 0 0 384 874 4294967255 0 0 0 0 577 889 4294967150 0 0 4294967287 0 0 1 0 0 0 9 10 888 888 888 384 1015 4294967148 0 0 888 888 0 0 1 3072 3072 3072 3072 3072 4294964224 4294964224 4294964224 4294964224 4294964224 0 4294964224 4294967287 0 0 0 0 0 0 0 0 0 0 164 1024 1024 40 94 0 0 0 0 0 0 525 0 40 94 0 0 3 1 0 0 921 1027 1024 1280 0 40 97 10 881 1646 1711 881 1 1014 384 888 659 4294967148 2 128 1 0 0 0 0 7532 5 0 0 0 0 0 0 7819 8252 8279 128 1 0 4294961112 3 1 7471 0 0 0 0 0 0 0 0 5345 1088 245 446 100 196 44 4091 4091 1 1 25 8 2400605383 -Exif.Canon.ModelID Long 1 PowerShot S5 IS -Exif.Canon.ThumbnailImageValidArea Short 4 0 0 0 0 -Exif.Canon.SuperMacro Short 1 Off -Exif.Canon.AFInfo Short 48 96 2 9 1 2592 1944 1088 245 196 0 0 0 0 0 0 0 0 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -Exif.Photo.UserComment Undefined 264 (Binary value suppressed) -Exif.Photo.FlashpixVersion Undefined 4 1.00 -Exif.Photo.ColorSpace Short 1 sRGB -Exif.Photo.PixelXDimension Short 1 2592 -Exif.Photo.PixelYDimension Short 1 1944 -Exif.Photo.InteroperabilityTag Long 1 3350 -Exif.Iop.InteroperabilityIndex Ascii 4 R98 -Exif.Iop.InteroperabilityVersion Undefined 4 1.00 -Exif.Iop.RelatedImageWidth Short 1 2592 -Exif.Iop.RelatedImageLength Short 1 1944 -Exif.Photo.FocalPlaneXResolution Rational 1 11520 -Exif.Photo.FocalPlaneYResolution Rational 1 11503 -Exif.Photo.FocalPlaneResolutionUnit Short 1 inch -Exif.Photo.SensingMethod Short 1 One-chip color area -Exif.Photo.FileSource Undefined 1 Digital still camera -Exif.Photo.CustomRendered Short 1 Normal process -Exif.Photo.ExposureMode Short 1 Auto -Exif.Photo.WhiteBalance Short 1 Manual -Exif.Photo.DigitalZoomRatio Rational 1 1.0 -Exif.Photo.SceneCaptureType Short 1 Standard -Exif.Thumbnail.Compression Short 1 JPEG (old-style) -Exif.Thumbnail.XResolution Rational 1 180 -Exif.Thumbnail.YResolution Rational 1 180 -Exif.Thumbnail.ResolutionUnit Short 1 inch -Exif.Thumbnail.JPEGInterchangeFormat Long 1 3498 -Exif.Thumbnail.JPEGInterchangeFormatLength Long 1 6714 -exiv2 0.23 001700 (64 bit build) -Copyright (C) 2004-2012 Andreas Huggel. - -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., 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301 USA -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Image.Make Ascii 6 Canon -Exif.Image.Model Ascii 22 Canon PowerShot S5 IS -Exif.Image.Orientation Short 1 top, left -Exif.Image.XResolution Rational 1 180 -Exif.Image.YResolution Rational 1 180 -Exif.Image.ResolutionUnit Short 1 inch -Exif.Image.DateTime Ascii 20 2008:09:06 14:34:23 -Exif.Image.YCbCrPositioning Short 1 Centered -Exif.Image.ExifTag Long 1 186 -Exif.Photo.ExposureTime Rational 1 1/500 s -Exif.Photo.FNumber Rational 1 F4 -Exif.Photo.ISOSpeedRatings Short 1 80 -Exif.Photo.ExifVersion Undefined 4 2.20 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeDigitized Ascii 20 2008:09:06 14:34:23 -Exif.Photo.ComponentsConfiguration Undefined 4 YCbCr -Exif.Photo.CompressedBitsPerPixel Rational 1 3 -Exif.Photo.ShutterSpeedValue SRational 1 1/501 s -Exif.Photo.ApertureValue Rational 1 F4 -Exif.Photo.ExposureBiasValue SRational 1 0 EV -Exif.Photo.MaxApertureValue Rational 1 F3.5 -Exif.Photo.MeteringMode Short 1 Multi-segment -Exif.Photo.Flash Short 1 No, compulsory -Exif.Photo.FocalLength Rational 1 21.3 mm -Exif.Photo.MakerNote Undefined 2382 (Binary value suppressed) -Exif.MakerNote.Offset Long 1 680 -Exif.MakerNote.ByteOrder Ascii 3 MM -Exif.CanonCs.Macro Short 1 Off -Exif.CanonCs.Selftimer Short 1 Off -Exif.CanonCs.Quality Short 1 Fine -Exif.CanonCs.FlashMode Short 1 Off -Exif.CanonCs.DriveMode Short 1 Single / timer -Exif.CanonCs.FocusMode Short 1 Single -Exif.CanonCs.ImageSize Short 1 Medium 1 -Exif.CanonCs.EasyMode Short 1 Manual -Exif.CanonCs.DigitalZoom Short 1 None -Exif.CanonCs.Contrast Short 1 Normal -Exif.CanonCs.Saturation Short 1 Normal -Exif.CanonCs.Sharpness Short 1 Normal -Exif.CanonCs.ISOSpeed Short 1 Auto -Exif.CanonCs.MeteringMode Short 1 Evaluative -Exif.CanonCs.FocusType Short 1 Auto -Exif.CanonCs.AFPoint Short 1 Manual AF point selection -Exif.CanonCs.ExposureProgram Short 1 Program (P) -Exif.CanonCs.LensType Short 1 (65535) -Exif.CanonCs.Lens Short 3 6.0 - 72.0 mm -Exif.CanonCs.MaxAperture Short 1 F3.6 -Exif.CanonCs.MinAperture Short 1 F8 -Exif.CanonCs.FlashActivity Short 1 Did not fire -Exif.CanonCs.FlashDetails Short 1 -Exif.CanonCs.FocusContinuous Short 1 Continuous -Exif.CanonCs.AESetting Short 1 Normal AE -Exif.CanonCs.ImageStabilization Short 1 On -Exif.CanonCs.DisplayAperture Short 1 0 -Exif.CanonCs.ZoomSourceWidth Short 1 3264 -Exif.CanonCs.ZoomTargetWidth Short 1 3264 -Exif.CanonCs.SpotMeteringMode Short 1 Center -Exif.CanonCs.PhotoEffect Short 1 (65535) -Exif.CanonCs.ManualFlashOutput Short 1 n/a -Exif.CanonCs.ColorTone Short 1 32767 -Exif.Canon.FocalLength Short 4 21.3 mm -Exif.CanonSi.ISOSpeed Short 1 100 -Exif.CanonSi.MeasuredEV Short 1 14.25 -Exif.CanonSi.TargetAperture Short 1 F4 -Exif.CanonSi.TargetShutterSpeed Short 1 1/501 s -Exif.CanonSi.WhiteBalance Short 1 Sunny -Exif.CanonSi.Sequence Short 1 0 -Exif.CanonSi.AFPointUsed Short 1 0 focus points; none used -Exif.CanonSi.FlashBias Short 1 0 EV -Exif.CanonSi.SubjectDistance Short 1 503 -Exif.CanonSi.ApertureValue Short 1 F4 -Exif.CanonSi.ShutterSpeedValue Short 1 1/546 s -Exif.CanonSi.MeasuredEV2 Short 1 -6.00 -Exif.Canon.ImageType Ascii 25 IMG:PowerShot S5 IS JPEG -Exif.Canon.FirmwareVersion Ascii 22 Firmware Version 1.01 -Exif.Canon.FileNumber Long 1 100-1904 -Exif.Canon.OwnerName Ascii 32 Robin Mills -Exif.Canon.CameraInfo Long 148 370 411 0 0 0 384 874 4294967255 0 0 0 0 577 889 4294967150 0 0 4294967287 0 0 1 0 0 0 9 10 888 888 888 384 1015 4294967148 0 0 888 888 0 0 1 3072 3072 3072 3072 3072 4294964224 4294964224 4294964224 4294964224 4294964224 0 4294964224 4294967287 0 0 0 0 0 0 0 0 0 0 164 1024 1024 40 94 0 0 0 0 0 0 525 0 40 94 0 0 3 1 0 0 921 1027 1024 1280 0 40 97 10 881 1646 1711 881 1 1014 384 888 659 4294967148 2 128 1 0 0 0 0 7532 5 0 0 0 0 0 0 7819 8252 8279 128 1 0 4294961112 3 1 7471 0 0 0 0 0 0 0 0 5345 1088 245 446 100 196 44 4091 4091 1 1 25 8 2400605383 -Exif.Canon.ModelID Long 1 PowerShot S5 IS -Exif.Canon.ThumbnailImageValidArea Short 4 0 0 0 0 -Exif.Canon.SuperMacro Short 1 Off -Exif.Canon.AFInfo Short 48 96 2 9 1 2592 1944 1088 245 196 0 0 0 0 0 0 0 0 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -Exif.Photo.UserComment Undefined 264 (Binary value suppressed) -Exif.Photo.FlashpixVersion Undefined 4 1.00 -Exif.Photo.ColorSpace Short 1 sRGB -Exif.Photo.PixelXDimension Short 1 2592 -Exif.Photo.PixelYDimension Short 1 1944 -Exif.Photo.InteroperabilityTag Long 1 3350 -Exif.Iop.InteroperabilityIndex Ascii 4 R98 -Exif.Iop.InteroperabilityVersion Undefined 4 1.00 -Exif.Iop.RelatedImageWidth Short 1 2592 -Exif.Iop.RelatedImageLength Short 1 1944 -Exif.Photo.FocalPlaneXResolution Rational 1 11520 -Exif.Photo.FocalPlaneYResolution Rational 1 11503 -Exif.Photo.FocalPlaneResolutionUnit Short 1 inch -Exif.Photo.SensingMethod Short 1 One-chip color area -Exif.Photo.FileSource Undefined 1 Digital still camera -Exif.Photo.CustomRendered Short 1 Normal process -Exif.Photo.ExposureMode Short 1 Auto -Exif.Photo.WhiteBalance Short 1 Manual -Exif.Photo.DigitalZoomRatio Rational 1 1.0 -Exif.Photo.SceneCaptureType Short 1 Standard -Exif.Thumbnail.Compression Short 1 JPEG (old-style) -Exif.Thumbnail.XResolution Rational 1 180 -Exif.Thumbnail.YResolution Rational 1 180 -Exif.Thumbnail.ResolutionUnit Short 1 inch -Exif.Thumbnail.JPEGInterchangeFormat Long 1 3498 -Exif.Thumbnail.JPEGInterchangeFormatLength Long 1 6714 -exiv2 0.23 001700 (64 bit build) -Copyright (C) 2004-2012 Andreas Huggel. - -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., 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301 USA -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Image.Make Ascii 6 Canon -Exif.Image.Model Ascii 22 Canon PowerShot S5 IS -Exif.Image.Orientation Short 1 top, left -Exif.Image.XResolution Rational 1 180 -Exif.Image.YResolution Rational 1 180 -Exif.Image.ResolutionUnit Short 1 inch -Exif.Image.DateTime Ascii 20 2008:09:06 14:34:23 -Exif.Image.YCbCrPositioning Short 1 Centered -Exif.Image.ExifTag Long 1 186 -Exif.Photo.ExposureTime Rational 1 1/500 s -Exif.Photo.FNumber Rational 1 F4 -Exif.Photo.ISOSpeedRatings Short 1 80 -Exif.Photo.ExifVersion Undefined 4 2.20 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeDigitized Ascii 20 2008:09:06 14:34:23 -Exif.Photo.ComponentsConfiguration Undefined 4 YCbCr -Exif.Photo.CompressedBitsPerPixel Rational 1 3 -Exif.Photo.ShutterSpeedValue SRational 1 1/501 s -Exif.Photo.ApertureValue Rational 1 F4 -Exif.Photo.ExposureBiasValue SRational 1 0 EV -Exif.Photo.MaxApertureValue Rational 1 F3.5 -Exif.Photo.MeteringMode Short 1 Multi-segment -Exif.Photo.Flash Short 1 No, compulsory -Exif.Photo.FocalLength Rational 1 21.3 mm -Exif.Photo.MakerNote Undefined 2382 (Binary value suppressed) -Exif.MakerNote.Offset Long 1 680 -Exif.MakerNote.ByteOrder Ascii 3 MM -Exif.CanonCs.Macro Short 1 Off -Exif.CanonCs.Selftimer Short 1 Off -Exif.CanonCs.Quality Short 1 Fine -Exif.CanonCs.FlashMode Short 1 Off -Exif.CanonCs.DriveMode Short 1 Single / timer -Exif.CanonCs.FocusMode Short 1 Single -Exif.CanonCs.ImageSize Short 1 Medium 1 -Exif.CanonCs.EasyMode Short 1 Manual -Exif.CanonCs.DigitalZoom Short 1 None -Exif.CanonCs.Contrast Short 1 Normal -Exif.CanonCs.Saturation Short 1 Normal -Exif.CanonCs.Sharpness Short 1 Normal -Exif.CanonCs.ISOSpeed Short 1 Auto -Exif.CanonCs.MeteringMode Short 1 Evaluative -Exif.CanonCs.FocusType Short 1 Auto -Exif.CanonCs.AFPoint Short 1 Manual AF point selection -Exif.CanonCs.ExposureProgram Short 1 Program (P) -Exif.CanonCs.LensType Short 1 (65535) -Exif.CanonCs.Lens Short 3 6.0 - 72.0 mm -Exif.CanonCs.MaxAperture Short 1 F3.6 -Exif.CanonCs.MinAperture Short 1 F8 -Exif.CanonCs.FlashActivity Short 1 Did not fire -Exif.CanonCs.FlashDetails Short 1 -Exif.CanonCs.FocusContinuous Short 1 Continuous -Exif.CanonCs.AESetting Short 1 Normal AE -Exif.CanonCs.ImageStabilization Short 1 On -Exif.CanonCs.DisplayAperture Short 1 0 -Exif.CanonCs.ZoomSourceWidth Short 1 3264 -Exif.CanonCs.ZoomTargetWidth Short 1 3264 -Exif.CanonCs.SpotMeteringMode Short 1 Center -Exif.CanonCs.PhotoEffect Short 1 (65535) -Exif.CanonCs.ManualFlashOutput Short 1 n/a -Exif.CanonCs.ColorTone Short 1 32767 -Exif.Canon.FocalLength Short 4 21.3 mm -Exif.CanonSi.ISOSpeed Short 1 100 -Exif.CanonSi.MeasuredEV Short 1 14.25 -Exif.CanonSi.TargetAperture Short 1 F4 -Exif.CanonSi.TargetShutterSpeed Short 1 1/501 s -Exif.CanonSi.WhiteBalance Short 1 Sunny -Exif.CanonSi.Sequence Short 1 0 -Exif.CanonSi.AFPointUsed Short 1 0 focus points; none used -Exif.CanonSi.FlashBias Short 1 0 EV -Exif.CanonSi.SubjectDistance Short 1 503 -Exif.CanonSi.ApertureValue Short 1 F4 -Exif.CanonSi.ShutterSpeedValue Short 1 1/546 s -Exif.CanonSi.MeasuredEV2 Short 1 -6.00 -Exif.Canon.ImageType Ascii 25 IMG:PowerShot S5 IS JPEG -Exif.Canon.FirmwareVersion Ascii 22 Firmware Version 1.01 -Exif.Canon.FileNumber Long 1 100-1904 -Exif.Canon.OwnerName Ascii 32 Robin Mills -Exif.Canon.CameraInfo Long 148 370 411 0 0 0 384 874 4294967255 0 0 0 0 577 889 4294967150 0 0 4294967287 0 0 1 0 0 0 9 10 888 888 888 384 1015 4294967148 0 0 888 888 0 0 1 3072 3072 3072 3072 3072 4294964224 4294964224 4294964224 4294964224 4294964224 0 4294964224 4294967287 0 0 0 0 0 0 0 0 0 0 164 1024 1024 40 94 0 0 0 0 0 0 525 0 40 94 0 0 3 1 0 0 921 1027 1024 1280 0 40 97 10 881 1646 1711 881 1 1014 384 888 659 4294967148 2 128 1 0 0 0 0 7532 5 0 0 0 0 0 0 7819 8252 8279 128 1 0 4294961112 3 1 7471 0 0 0 0 0 0 0 0 5345 1088 245 446 100 196 44 4091 4091 1 1 25 8 2400605383 -Exif.Canon.ModelID Long 1 PowerShot S5 IS -Exif.Canon.ThumbnailImageValidArea Short 4 0 0 0 0 -Exif.Canon.SuperMacro Short 1 Off -Exif.Canon.AFInfo Short 48 96 2 9 1 2592 1944 1088 245 196 0 0 0 0 0 0 0 0 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -Exif.Photo.UserComment Undefined 264 (Binary value suppressed) -Exif.Photo.FlashpixVersion Undefined 4 1.00 -Exif.Photo.ColorSpace Short 1 sRGB -Exif.Photo.PixelXDimension Short 1 2592 -Exif.Photo.PixelYDimension Short 1 1944 -Exif.Photo.InteroperabilityTag Long 1 3350 -Exif.Iop.InteroperabilityIndex Ascii 4 R98 -Exif.Iop.InteroperabilityVersion Undefined 4 1.00 -Exif.Iop.RelatedImageWidth Short 1 2592 -Exif.Iop.RelatedImageLength Short 1 1944 -Exif.Photo.FocalPlaneXResolution Rational 1 11520 -Exif.Photo.FocalPlaneYResolution Rational 1 11503 -Exif.Photo.FocalPlaneResolutionUnit Short 1 inch -Exif.Photo.SensingMethod Short 1 One-chip color area -Exif.Photo.FileSource Undefined 1 Digital still camera -Exif.Photo.CustomRendered Short 1 Normal process -Exif.Photo.ExposureMode Short 1 Auto -Exif.Photo.WhiteBalance Short 1 Manual -Exif.Photo.DigitalZoomRatio Rational 1 1.0 -Exif.Photo.SceneCaptureType Short 1 Standard -Exif.Thumbnail.Compression Short 1 JPEG (old-style) -Exif.Thumbnail.XResolution Rational 1 180 -Exif.Thumbnail.YResolution Rational 1 180 -Exif.Thumbnail.ResolutionUnit Short 1 inch -Exif.Thumbnail.JPEGInterchangeFormat Long 1 3498 -Exif.Thumbnail.JPEGInterchangeFormatLength Long 1 6714 -exiv2 0.23 001700 (64 bit build) -Copyright (C) 2004-2012 Andreas Huggel. - -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., 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301 USA -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Image.Make Ascii 6 Canon -Exif.Image.Model Ascii 22 Canon PowerShot S5 IS -Exif.Image.Orientation Short 1 top, left -Exif.Image.XResolution Rational 1 180 -Exif.Image.YResolution Rational 1 180 -Exif.Image.ResolutionUnit Short 1 inch -Exif.Image.DateTime Ascii 20 2008:09:06 14:34:23 -Exif.Image.YCbCrPositioning Short 1 Centered -Exif.Image.ExifTag Long 1 186 -Exif.Photo.ExposureTime Rational 1 1/500 s -Exif.Photo.FNumber Rational 1 F4 -Exif.Photo.ISOSpeedRatings Short 1 80 -Exif.Photo.ExifVersion Undefined 4 2.20 -Exif.Photo.DateTimeOriginal Ascii 20 2008:09:06 14:34:23 -Exif.Photo.DateTimeDigitized Ascii 20 2008:09:06 14:34:23 -Exif.Photo.ComponentsConfiguration Undefined 4 YCbCr -Exif.Photo.CompressedBitsPerPixel Rational 1 3 -Exif.Photo.ShutterSpeedValue SRational 1 1/501 s -Exif.Photo.ApertureValue Rational 1 F4 -Exif.Photo.ExposureBiasValue SRational 1 0 EV -Exif.Photo.MaxApertureValue Rational 1 F3.5 -Exif.Photo.MeteringMode Short 1 Multi-segment -Exif.Photo.Flash Short 1 No, compulsory -Exif.Photo.FocalLength Rational 1 21.3 mm -Exif.Photo.MakerNote Undefined 2382 (Binary value suppressed) -Exif.MakerNote.Offset Long 1 680 -Exif.MakerNote.ByteOrder Ascii 3 MM -Exif.CanonCs.Macro Short 1 Off -Exif.CanonCs.Selftimer Short 1 Off -Exif.CanonCs.Quality Short 1 Fine -Exif.CanonCs.FlashMode Short 1 Off -Exif.CanonCs.DriveMode Short 1 Single / timer -Exif.CanonCs.FocusMode Short 1 Single -Exif.CanonCs.ImageSize Short 1 Medium 1 -Exif.CanonCs.EasyMode Short 1 Manual -Exif.CanonCs.DigitalZoom Short 1 None -Exif.CanonCs.Contrast Short 1 Normal -Exif.CanonCs.Saturation Short 1 Normal -Exif.CanonCs.Sharpness Short 1 Normal -Exif.CanonCs.ISOSpeed Short 1 Auto -Exif.CanonCs.MeteringMode Short 1 Evaluative -Exif.CanonCs.FocusType Short 1 Auto -Exif.CanonCs.AFPoint Short 1 Manual AF point selection -Exif.CanonCs.ExposureProgram Short 1 Program (P) -Exif.CanonCs.LensType Short 1 (65535) -Exif.CanonCs.Lens Short 3 6.0 - 72.0 mm -Exif.CanonCs.MaxAperture Short 1 F3.6 -Exif.CanonCs.MinAperture Short 1 F8 -Exif.CanonCs.FlashActivity Short 1 Did not fire -Exif.CanonCs.FlashDetails Short 1 -Exif.CanonCs.FocusContinuous Short 1 Continuous -Exif.CanonCs.AESetting Short 1 Normal AE -Exif.CanonCs.ImageStabilization Short 1 On -Exif.CanonCs.DisplayAperture Short 1 0 -Exif.CanonCs.ZoomSourceWidth Short 1 3264 -Exif.CanonCs.ZoomTargetWidth Short 1 3264 -Exif.CanonCs.SpotMeteringMode Short 1 Center -Exif.CanonCs.PhotoEffect Short 1 (65535) -Exif.CanonCs.ManualFlashOutput Short 1 n/a -Exif.CanonCs.ColorTone Short 1 32767 -Exif.Canon.FocalLength Short 4 21.3 mm -Exif.CanonSi.ISOSpeed Short 1 100 -Exif.CanonSi.MeasuredEV Short 1 14.25 -Exif.CanonSi.TargetAperture Short 1 F4 -Exif.CanonSi.TargetShutterSpeed Short 1 1/501 s -Exif.CanonSi.WhiteBalance Short 1 Sunny -Exif.CanonSi.Sequence Short 1 0 -Exif.CanonSi.AFPointUsed Short 1 0 focus points; none used -Exif.CanonSi.FlashBias Short 1 0 EV -Exif.CanonSi.SubjectDistance Short 1 503 -Exif.CanonSi.ApertureValue Short 1 F4 -Exif.CanonSi.ShutterSpeedValue Short 1 1/546 s -Exif.CanonSi.MeasuredEV2 Short 1 -6.00 -Exif.Canon.ImageType Ascii 25 IMG:PowerShot S5 IS JPEG -Exif.Canon.FirmwareVersion Ascii 22 Firmware Version 1.01 -Exif.Canon.FileNumber Long 1 100-1904 -Exif.Canon.OwnerName Ascii 32 Robin Mills -Exif.Canon.CameraInfo Long 148 370 411 0 0 0 384 874 4294967255 0 0 0 0 577 889 4294967150 0 0 4294967287 0 0 1 0 0 0 9 10 888 888 888 384 1015 4294967148 0 0 888 888 0 0 1 3072 3072 3072 3072 3072 4294964224 4294964224 4294964224 4294964224 4294964224 0 4294964224 4294967287 0 0 0 0 0 0 0 0 0 0 164 1024 1024 40 94 0 0 0 0 0 0 525 0 40 94 0 0 3 1 0 0 921 1027 1024 1280 0 40 97 10 881 1646 1711 881 1 1014 384 888 659 4294967148 2 128 1 0 0 0 0 7532 5 0 0 0 0 0 0 7819 8252 8279 128 1 0 4294961112 3 1 7471 0 0 0 0 0 0 0 0 5345 1088 245 446 100 196 44 4091 4091 1 1 25 8 2400605383 -Exif.Canon.ModelID Long 1 PowerShot S5 IS -Exif.Canon.ThumbnailImageValidArea Short 4 0 0 0 0 -Exif.Canon.SuperMacro Short 1 Off -Exif.Canon.AFInfo Short 48 96 2 9 1 2592 1944 1088 245 196 0 0 0 0 0 0 0 0 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -Exif.Photo.UserComment Undefined 264 (Binary value suppressed) -Exif.Photo.FlashpixVersion Undefined 4 1.00 -Exif.Photo.ColorSpace Short 1 sRGB -Exif.Photo.PixelXDimension Short 1 2592 -Exif.Photo.PixelYDimension Short 1 1944 -Exif.Photo.InteroperabilityTag Long 1 3350 -Exif.Iop.InteroperabilityIndex Ascii 4 R98 -Exif.Iop.InteroperabilityVersion Undefined 4 1.00 -Exif.Iop.RelatedImageWidth Short 1 2592 -Exif.Iop.RelatedImageLength Short 1 1944 -Exif.Photo.FocalPlaneXResolution Rational 1 11520 -Exif.Photo.FocalPlaneYResolution Rational 1 11503 -Exif.Photo.FocalPlaneResolutionUnit Short 1 inch -Exif.Photo.SensingMethod Short 1 One-chip color area -Exif.Photo.FileSource Undefined 1 Digital still camera -Exif.Photo.CustomRendered Short 1 Normal process -Exif.Photo.ExposureMode Short 1 Auto -Exif.Photo.WhiteBalance Short 1 Manual -Exif.Photo.DigitalZoomRatio Rational 1 1.0 -Exif.Photo.SceneCaptureType Short 1 Standard -Exif.Thumbnail.Compression Short 1 JPEG (old-style) -Exif.Thumbnail.XResolution Rational 1 180 -Exif.Thumbnail.YResolution Rational 1 180 -Exif.Thumbnail.ResolutionUnit Short 1 inch -Exif.Thumbnail.JPEGInterchangeFormat Long 1 3498 -Exif.Thumbnail.JPEGInterchangeFormatLength Long 1 6714 -exiv2d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -zlib1d.dll -exiv2.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -zlib1.dll -exiv2d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -zlib1d.dll -exiv2.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -zlib1.dll -exiv2.exe -exiv2d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1d.dll -exiv2.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -exiv2.dll -exiv2.exe -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1.dll -exiv2.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -exiv2.exe -exiv2d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1d.dll -exiv2.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -exiv2.dll -exiv2.exe -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1.dll -exiv2.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll diff --git a/platform/win32/msvc/external/exiv2/msvc64/setbuild.py b/platform/win32/msvc/external/exiv2/msvc64/setbuild.py deleted file mode 100644 index dae2ebd7759..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/setbuild.py +++ /dev/null @@ -1,168 +0,0 @@ -#!/usr/bin/env python -# -*- coding: Latin-1 -*- - -""" setbuild - set the build environment you require """ - -## -def syntax(): - "syntax - print syntax of setbuild.py " - print "syntax: python setbuild.py Win32|x64|all|reset" -## - -## -# import modules -import os.path -import sys -import xml.dom.minidom -from xml.sax.saxutils import escape - -## -# from PP3E/System/Filetools/cpall.py -maxfileload = 5 * 1024 * 1024 -blksize = 100 * 1024 - -## -def cp(pathFrom, pathTo, maxfileload=maxfileload): - """ - copy file pathFrom to pathTo, byte for byte - """ - if os.path.getsize(pathFrom) <= maxfileload: - bytesFrom = open(pathFrom, 'rb').read() # read small file all at once - open(pathTo, 'wb').write(bytesFrom) # need b mode on Windows - else: - fileFrom = open(pathFrom, 'rb') # read big files in chunks - fileTo = open(pathTo, 'wb') # need b mode here too - while 1: - bytesFrom = fileFrom.read(blksize) # get one block, less at end - if not bytesFrom: break # empty after last chunk - fileTo.write(bytesFrom) -## - -## -def save(path): - """save - make a backup (or restore the backup)""" - orig = path+'.orig' - if os.path.exists(orig): - cp(orig,path) - else: - cp(path,orig) -## - -## -def sln(path,remove): - """sln - remove the x64 stuff from a sln""" - - save(path) - - if remove: - f = open(path, 'r') - lines = [] - for line in f: - if line.find(remove)<0: - lines.append(line) - f.close() - - f = open(path,'w') - for line in lines: - f.write(line) - f.close() -## - -## -def vcproj(path,remove): - """vcproj - remove the x64 stuff from a vcproj""" - - save(path) - - if remove: - f = open(path,'r') - dom = xml.dom.minidom.parseString(f.read()) - f.close() - - for tag in [ 'Platform','Configuration' ]: - tags = dom.getElementsByTagName(tag) - kills = [] - for t in tags: - if t.getAttribute("Name").find(remove)>=0: - kills.append(t) - - for kill in kills: - kill.parentNode.removeChild(kill) - - # repair the command lines! - for tool in dom.getElementsByTagName('Tool'): - cl=tool.getAttribute('CommandLine') - if cl: - cl=escape(cl) - cl=cl.replace('\r','__CR__') - cl=cl.replace('\n','__LF__') - tool.setAttribute('CommandLine',cl) - # print '-----------',cl,'----------' - - code=dom.toxml() - code=code.replace('__CR__',' ') - code=code.replace('__LF__',' ') - f = open(path,'w') - f.write(code) - f.close() -## - -## -def visit(myData, directoryName, filesInDirectory): # called for each dir - """visit - called by os.path.walk""" - # print "in visitor",directoryName, "myData = ",myData - # print "filesInDirectory => ",filesInDirectory - for filename in filesInDirectory: # do non-dir files here - pathname = os.path.join(directoryName, filename) - if not os.path.isdir(pathname): - global paths - paths.append(pathname) -## - -## -def setbuild(remove): - """setbuild - remove == None, means both x64 and Win32""" - if remove in set(['x64','Win32',None]): - directory = os.path.abspath(os.path.dirname(sys.argv[0])) - print "directory = ",directory - global paths - - paths=[] - os.path.walk(directory, visit, None) - for path in paths: - # print path - handlers = { '.sln' : sln - , '.vcproj' : vcproj - } ; - ext=os.path.splitext(path)[1] - if handlers.has_key(ext): - handlers[ext](path,remove) - else: - syntax() -## - -## -if __name__ == '__main__': - - argc = len(sys.argv) - syntaxError = argc < 2 - - if not syntaxError: - option=sys.argv[1].lower() - removes = { 'x64' : 'Win32' - , 'win32' : 'x64' - , 'all' : None - , 'reset' : None - } - syntaxError = not removes.has_key(option) - if not syntaxError: - setbuild(removes[option]) - - if option=='reset': - os.system('del/s *.orig') - - if syntaxError: - syntax() - -# That's all Folks! -## diff --git a/platform/win32/msvc/external/exiv2/msvc64/testimages/test.jpg b/platform/win32/msvc/external/exiv2/msvc64/testimages/test.jpg deleted file mode 100644 index fa0e7bbf7ea..00000000000 Binary files a/platform/win32/msvc/external/exiv2/msvc64/testimages/test.jpg and /dev/null differ diff --git a/platform/win32/msvc/external/exiv2/msvc64/testimages/test.png b/platform/win32/msvc/external/exiv2/msvc64/testimages/test.png deleted file mode 100644 index ccc802ac1a2..00000000000 Binary files a/platform/win32/msvc/external/exiv2/msvc64/testimages/test.png and /dev/null differ diff --git a/platform/win32/msvc/external/exiv2/msvc64/testimages/test.tiff b/platform/win32/msvc/external/exiv2/msvc64/testimages/test.tiff deleted file mode 100644 index f2b19fa7c27..00000000000 Binary files a/platform/win32/msvc/external/exiv2/msvc64/testimages/test.tiff and /dev/null differ diff --git a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/ReadMe.txt b/platform/win32/msvc/external/exiv2/msvc64/tools/depends/ReadMe.txt deleted file mode 100644 index cb7ce89592a..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/ReadMe.txt +++ /dev/null @@ -1,13 +0,0 @@ -Depends/ReadMe.txt ------------------- - -This project is "depends" and is code from MSJ (now MSDN) in 1997. I appreciate and respect the code provided by Matt Pietrik. I have made the following changes: -1) Added the -q option -2) Added the MSVC build environment (for 32bit and 64bit builds) -3) Modified the default response to report 1 and 2. - -The projects builds depends32.exe and depends64.exe which are used by runner32.bat and runner64.bat to test dependancies post build. - -Robin Mills -http://clanmills.com -2011-01-02 diff --git a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/depends.vcproj b/platform/win32/msvc/external/exiv2/msvc64/tools/depends/depends.vcproj deleted file mode 100644 index ee26e2594be..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/depends.vcproj +++ /dev/null @@ -1,411 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/include/DEPENDENCYLIST.H b/platform/win32/msvc/external/exiv2/msvc64/tools/depends/include/DEPENDENCYLIST.H deleted file mode 100644 index 4955f680ec8..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/include/DEPENDENCYLIST.H +++ /dev/null @@ -1,57 +0,0 @@ -//========================================== -// Matt Pietrek -// Microsoft Systems Journal, Feb 1997 -// FILE: DEPENDENCYLIST.H -//========================================== -#ifndef __DEPLIST_H__ -#define __DEPLIST_H__ - -#ifndef __MODULEFILEINFO_H__ -#include "modulefileinfo.h" -#endif - -enum errModuleDependencyList { errMDL_NO_ERROR, - errMDL_FILE_NOT_FOUND, - errMDL_NOT_PE_FILE, - errMDL_GENERAL_FAILURE }; - -// -// The MODULE_DEPENDENCY_LIST class creates a linked list of MODULE_FILE_INFO -// structures. In theory, this list will represent every executable file -// loaded by the Win32 loader when the executable is loaded. The class creates -// the list by starting with the file passed to the constructor, and recursing -// through all the import tables. -// -class MODULE_DEPENDENCY_LIST -{ - public: - - MODULE_DEPENDENCY_LIST( PSTR pszFileName ); - - ~MODULE_DEPENDENCY_LIST( ); - - BOOL IsValid( void ){ return (BOOL)(m_errorType == errMDL_NO_ERROR); } - - errModuleDependencyList GetErrorType( void ){ return m_errorType; } - - PSTR GetErrorString( void ); - - PMODULE_FILE_INFO GetNextModule( PMODULE_FILE_INFO p ); - - PMODULE_FILE_INFO LookupModule( PSTR pszFileName, BOOL fFullName ); - - unsigned GetNumberOfModules( void ){ return m_cModules; } - - protected: - - unsigned m_cModules; // Number of modules in list - - PMODULE_FILE_INFO m_pList; // Pointer to head of linked list - - // Recursively adds modules to the list - errModuleDependencyList AddModule( PSTR pszFullName ); - - errModuleDependencyList m_errorType; // Error type -}; - -#endif diff --git a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/include/EXEFILE.H b/platform/win32/msvc/external/exiv2/msvc64/tools/depends/include/EXEFILE.H deleted file mode 100644 index ae4ecba695b..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/include/EXEFILE.H +++ /dev/null @@ -1,54 +0,0 @@ -//========================================== -// Matt Pietrek -// Microsoft Systems Journal, Feb 1997 -// FILE: EXEFILE.H -//========================================== -#ifndef __EXEFILE_H__ -#define __EXEFILE_H__ - -#ifndef __MEMMAPFL_H__ -#include "memorymappedfile.h" -#endif - -// MakePtr is a macro that allows you to easily add to values (including -// pointers) together without dealing with C's pointer arithmetic. It -// essentially treats the last two parameters as DWORDs. The first -// parameter is used to typecast the result to the appropriate pointer type. -#define MakePtr( cast, ptr, addValue ) (cast)( (DWORD)(ptr) + (DWORD)(addValue)) - -enum EXE_TYPE { exeType_Invalid, exeType_DOS, exeType_NE, exeType_VXD, - exeType_LX, exeType_PE }; - -enum errEXE_FILE { errEXE_FILE_NO_ERROR, - errEXE_FILE_FILE_NOT_FOUND, - errEXE_FILE_INVALID_FORMAT }; - -class EXE_FILE : public MEMORY_MAPPED_FILE -{ - public: - - EXE_FILE( PSTR pszFileName ); - ~EXE_FILE( ){ ; } - - BOOL IsValid( void ){ return errMMF_NoError == m_errorType; } - - errEXE_FILE GetErrorType( void ){ return m_errorType; } - - DWORD GetSecondaryHeaderOffset( void ){ return m_secondaryHeaderOffset; } - - EXE_TYPE GetExeType( void ){ return m_exeType; } - - PSTR GetFileTypeDescription( void ); - - protected: - - errEXE_FILE m_errorType; - - private: - - LONG m_secondaryHeaderOffset; - EXE_TYPE m_exeType; - -}; - -#endif diff --git a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/include/MEMORYMAPPEDFILE.H b/platform/win32/msvc/external/exiv2/msvc64/tools/depends/include/MEMORYMAPPEDFILE.H deleted file mode 100644 index c0db0e2b33d..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/include/MEMORYMAPPEDFILE.H +++ /dev/null @@ -1,35 +0,0 @@ -//========================================== -// Matt Pietrek -// Microsoft Systems Journal, Feb 1997 -// FILE: MEMORYMAPPEDFILE.H -//========================================== -#ifndef __MEMMAPFL_H__ -#define __MEMMAPFL_H__ - -enum errMMF { errMMF_NoError, errMMF_FileOpen, - errMMF_FileMapping, errMMF_MapView }; - -class MEMORY_MAPPED_FILE -{ - public: - - MEMORY_MAPPED_FILE( PSTR pszFileName ); - ~MEMORY_MAPPED_FILE(void); - - PVOID GetBase( void ){ return m_pMemoryMappedFileBase; } - DWORD GetFileSize( void ){ return m_cbFile; } - BOOL IsValid( void ) { return errMMF_NoError == m_errCode; } - errMMF GetErrorType(){ return m_errCode; } - - private: - - HANDLE m_hFile; - HANDLE m_hFileMapping; // Handle of memory mapped file - PVOID m_pMemoryMappedFileBase; - DWORD m_cbFile; - errMMF m_errCode; -}; - -typedef MEMORY_MAPPED_FILE *PMEMORY_MAPPED_FILE; - -#endif diff --git a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/include/PEEXE.H b/platform/win32/msvc/external/exiv2/msvc64/tools/depends/include/PEEXE.H deleted file mode 100644 index 95a9c95a263..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/include/PEEXE.H +++ /dev/null @@ -1,98 +0,0 @@ -//========================================== -// Matt Pietrek -// Microsoft Systems Journal, Feb 1997 -// FILE: PEEXE.H -//========================================== -#ifndef __PEEXE_H__ -#define __PEEXE_H__ - -#ifndef __EXEFILE_H__ -#include "exefile.h" -#endif - -class PE_EXE : public EXE_FILE -{ - public: - - PE_EXE( PSTR pszFileName ); - ~PE_EXE( ){ } - - BOOL IsValid() { return m_pNtHdr ? TRUE : FALSE; } - - // For those who want at the data directly - PIMAGE_NT_HEADERS GetIMAGE_NT_HEADERS( void ) { return m_pNtHdr; } - - // IMAGE_FILE_HEADER fields - WORD GetMachine( void ) - { return m_pNtHdr->FileHeader.Machine; } - WORD GetNumberOfSections( void ) - { return m_pNtHdr->FileHeader.NumberOfSections; } - DWORD GetTimeDateStamp(void) - { return m_pNtHdr->FileHeader.TimeDateStamp; } - DWORD GetCharacteristics( void ) - { return m_pNtHdr->FileHeader.Characteristics; } - - // IMAGE_OPTIONAL_HEADER fields - DWORD GetSizeOfCode( void ) - { return m_pNtHdr->OptionalHeader.SizeOfCode; } - DWORD GetSizeOfInitializedData( void ) - { return m_pNtHdr->OptionalHeader.SizeOfInitializedData; } - DWORD GetSizeOfUninitializedData( void ) - { return m_pNtHdr->OptionalHeader.SizeOfUninitializedData; } - DWORD GetAddressOfEntryPoint( void ) - { return m_pNtHdr->OptionalHeader.AddressOfEntryPoint; } - DWORD GetBaseOfCode( void ) - { return m_pNtHdr->OptionalHeader.BaseOfCode; } -/* - DWORD GetBaseOfData( void ) - { return m_pNtHdr->OptionalHeader.BaseOfData; } -*/ - DWORD GetImageBase( void ) - { return m_pNtHdr->OptionalHeader.ImageBase; } - DWORD GetSectionAlignment( void ) - { return m_pNtHdr->OptionalHeader.SectionAlignment; } - DWORD GetFileAlignment( void ) - { return m_pNtHdr->OptionalHeader.FileAlignment; } - WORD GetMajorOperatingSystemVersion( void ) - { return m_pNtHdr->OptionalHeader.MajorOperatingSystemVersion; } - WORD GetMinorOperatingSystemVersion( void ) - { return m_pNtHdr->OptionalHeader.MinorOperatingSystemVersion; } - WORD GetMajorImageVersion( void ) - { return m_pNtHdr->OptionalHeader.MajorImageVersion; } - WORD GetMinorImageVersion( void ) - { return m_pNtHdr->OptionalHeader.MinorImageVersion; } - WORD GetMajorSubsystemVersion( void ) - { return m_pNtHdr->OptionalHeader.MajorSubsystemVersion; } - WORD GetMinorSubsystemVersion( void ) - { return m_pNtHdr->OptionalHeader.MinorSubsystemVersion; } -// DWORD GetWin32VersionValue( void ) -// { return m_pNtHdr->OptionalHeader.Win32VersionValue; } - DWORD GetSizeOfImage( void ) - { return m_pNtHdr->OptionalHeader.SizeOfImage; } - DWORD GetSizeOfHeaders( void ) - { return m_pNtHdr->OptionalHeader.SizeOfHeaders; } - WORD GetSubsystem( void ) - { return m_pNtHdr->OptionalHeader.Subsystem; } - DWORD GetSizeOfStackReserve( void ) - { return m_pNtHdr->OptionalHeader.SizeOfStackReserve; } - DWORD GetSizeOfStackCommit( void ) - { return m_pNtHdr->OptionalHeader.SizeOfStackCommit; } - DWORD GetSizeOfHeapReserve( void ) - { return m_pNtHdr->OptionalHeader.SizeOfHeapReserve; } - DWORD GetSizeOfHeapCommit( void ) - { return m_pNtHdr->OptionalHeader.SizeOfHeapCommit; } - - DWORD GetDataDirectoryEntryRVA( DWORD id ); - PVOID GetDataDirectoryEntryPointer( DWORD id ); - DWORD GetDataDirectoryEntrySize( DWORD id ); - - PVOID GetReadablePointerFromRVA( DWORD rva ); - - protected: - - DWORD RVAToFileOffset( DWORD rva ); - - PIMAGE_NT_HEADERS m_pNtHdr; -}; - -#endif diff --git a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/include/modulefileinfo.h b/platform/win32/msvc/external/exiv2/msvc64/tools/depends/include/modulefileinfo.h deleted file mode 100644 index 27b17b59721..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/include/modulefileinfo.h +++ /dev/null @@ -1,44 +0,0 @@ -//========================================== -// Matt Pietrek -// Microsoft Systems Journal, Feb 1997 -// FILE: MODULEFILEINFO.H -//========================================== -#ifndef __MODULEFILEINFO_H__ -#define __MODULEFILEINFO_H__ - -class MODULE_DEPENDENCY_LIST; - -// -// This structure represents one executable file in a module dependency list. -// Both the base filename and the complete path are stored. -// -class MODULE_FILE_INFO -{ - public: - - MODULE_FILE_INFO( PSTR pszFileName ); - ~MODULE_FILE_INFO( void ){} - - PSTR GetBaseName( void ){ return m_szBaseName; } - PSTR GetFullName( void ){ return m_szFullName; } - - // For enumerating through the unlocatable imported modules - MODULE_FILE_INFO * GetNextNotFoundModule( MODULE_FILE_INFO * ); - - private: - - MODULE_FILE_INFO * m_pNext; - MODULE_FILE_INFO * m_pNotFoundNext; - - char m_szBaseName[MAX_PATH]; - char m_szFullName[MAX_PATH]; - - // And an unlocatable module to the "not found" list - void AddNotFoundModule( PSTR pszFileName ); - - friend class MODULE_DEPENDENCY_LIST; -}; - -typedef MODULE_FILE_INFO * PMODULE_FILE_INFO; - -#endif diff --git a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/src/DEPENDENCYLIST.CPP b/platform/win32/msvc/external/exiv2/msvc64/tools/depends/src/DEPENDENCYLIST.CPP deleted file mode 100644 index 6b5a90424ba..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/src/DEPENDENCYLIST.CPP +++ /dev/null @@ -1,187 +0,0 @@ -//========================================== -// Matt Pietrek -// Microsoft Systems Journal, Feb 1997 -// FILE: DEPENDENCYLIST.CPP -//========================================== -#include -#include -#pragma hdrstop -#include "peexe.h" -#include "dependencylist.h" - -MODULE_DEPENDENCY_LIST::MODULE_DEPENDENCY_LIST( PSTR pszFileName ) -{ - m_errorType = errMDL_GENERAL_FAILURE; - m_cModules = 0; - m_pList = 0; - - // Make a copy of the path that we can modify to get just the path portion - PSTR pszJustPath = _strdup( pszFileName ); - if ( !pszJustPath ) - return; - - BOOL fHasPath = FALSE; - PSTR pszEnd = strrchr( pszJustPath, '\\' ); - if ( pszEnd ) - { - *pszEnd = 0; /// Strip off the filename - fHasPath = TRUE; - } - - // - // If a path was part of the input filename, save the current directory, - // then switch to the new directory. - // - char szOriginalPath[MAX_PATH]; - if ( fHasPath ) - { - // This doesn't take into account "App_Paths"! - GetCurrentDirectory(MAX_PATH, szOriginalPath); // Save original dir - SetCurrentDirectory( pszJustPath ); // Switch to app's dir - } - - // - // recursively build the module list - // - m_errorType = AddModule( pszFileName ); - - if ( fHasPath ) // Set things back to the way they were - SetCurrentDirectory( szOriginalPath ); - - free( pszJustPath ); // Free the copy of the path that we allocated -} - - -MODULE_DEPENDENCY_LIST::~MODULE_DEPENDENCY_LIST( ) -{ - PMODULE_FILE_INFO pTemp; - - // Delete each MODULE_FILE_INFO structures in the regular linked list - pTemp = m_pList; - while ( pTemp ) - { - pTemp = m_pList->m_pNext; - - // Before we delete the module, delete each MODULE_FILE_INFO - // structures in the not found list - PMODULE_FILE_INFO pNotFound = m_pList->m_pNotFoundNext; - while ( pNotFound ) - { - pNotFound = m_pList->m_pNotFoundNext->m_pNotFoundNext; - delete m_pList->m_pNotFoundNext; - m_pList->m_pNotFoundNext = pNotFound; - } - - // Now it's OK to delete the module - delete m_pList; - m_pList = pTemp; - m_cModules--; - } - - m_pList = 0; -} - - - -PMODULE_FILE_INFO MODULE_DEPENDENCY_LIST::GetNextModule( PMODULE_FILE_INFO p ) -{ - // Returns the next module in the linked list of MODULE_FILE_INFO's - return p ? p->m_pNext : m_pList; -} - - -// Given the name of a file, find the MODULE_FILE_INFO structure that -// represents it. The fFullName parameter specifies whether the full path -// names or just the base file names will be compared. -PMODULE_FILE_INFO MODULE_DEPENDENCY_LIST::LookupModule( PSTR pszFileName, - BOOL fFullName ) -{ - PMODULE_FILE_INFO p = m_pList; // Start at the list head - - while ( p ) // While there's still entries in the list... - { - PSTR pszCompName = fFullName ? p->m_szFullName : p->m_szBaseName; - - if ( 0 == lstrcmpi( pszFileName, pszCompName ) ) - return p; - - p = p->m_pNext; - } - - return 0; -} - - -PSTR MODULE_DEPENDENCY_LIST::GetErrorString( void ) -{ - switch ( m_errorType ) - { - case errMDL_NO_ERROR: return "No error"; - case errMDL_FILE_NOT_FOUND: return "File not found"; - case errMDL_NOT_PE_FILE: return "Not a PE file"; - case errMDL_GENERAL_FAILURE:return "General failure"; - default: return ""; - } -} - - -// Adds a modules to the MODULE_FILE_INFO list. If the module imports other -// modules, this routine recurses to add them, and check their imports. -errModuleDependencyList -MODULE_DEPENDENCY_LIST::AddModule( PSTR pszFileName ) -{ - PE_EXE peFile( pszFileName ); // Get easy access to the executable - - if ( FALSE == peFile.IsValid() ) // A valid PE file??? - return (errModuleDependencyList)peFile.GetErrorType(); - - PMODULE_FILE_INFO pNew = new MODULE_FILE_INFO( pszFileName ); - if ( !pNew ) - return errMDL_GENERAL_FAILURE; - - pNew->m_pNext = m_pList; - m_pList = pNew; - - m_cModules++; - - // - // Now see if this module imports any other modules. If so, we need - // to recurse and add them as well. - // - if (0 == peFile.GetDataDirectoryEntrySize( IMAGE_DIRECTORY_ENTRY_IMPORT )) - return errMDL_NO_ERROR; - - // Make a pointer to the imports table - PIMAGE_IMPORT_DESCRIPTOR pImportDir; - pImportDir = (PIMAGE_IMPORT_DESCRIPTOR) - peFile.GetDataDirectoryEntryPointer(IMAGE_DIRECTORY_ENTRY_IMPORT); - if ( !pImportDir ) - return errMDL_NO_ERROR; - - // While there are still non-null IMAGE_IMPORT_DESCRIPTORs... - while ( pImportDir->Name ) - { - // Get a pointer to the imported module's base name - PSTR pszBaseName; - pszBaseName = (PSTR)peFile.GetReadablePointerFromRVA(pImportDir->Name); - if ( !pszBaseName ) - break; - - // Check to see if it's already in our list. Don't add again if so. - if ( 0 == LookupModule( pszBaseName, FALSE ) ) - { - // Search path supposedly has the same searching algorithm as - // the the Win32 loader... - char szPath[MAX_PATH]; - PSTR pszDontCare; - if ( SearchPath(0, pszBaseName, 0, MAX_PATH, szPath, &pszDontCare)) - AddModule( szPath ); - else - pNew->AddNotFoundModule( pszBaseName ); - } - - pImportDir++; // Advance to next imported module - } - - return errMDL_NO_ERROR; -} diff --git a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/src/EXEFILE.CPP b/platform/win32/msvc/external/exiv2/msvc64/tools/depends/src/EXEFILE.CPP deleted file mode 100644 index 79e84491ca5..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/src/EXEFILE.CPP +++ /dev/null @@ -1,72 +0,0 @@ -//========================================== -// Matt Pietrek -// Microsoft Systems Journal, Feb 1997 -// FILE: EXEFILE.CPP -//========================================== -#include -#pragma hdrstop -#include "exefile.h" - -EXE_FILE::EXE_FILE( PSTR pszFileName ) : MEMORY_MAPPED_FILE( pszFileName ) -{ - m_errorType = errEXE_FILE_FILE_NOT_FOUND; - m_secondaryHeaderOffset = -1; // A bogus value to catch bugs - m_exeType = exeType_Invalid; - - if ( FALSE == MEMORY_MAPPED_FILE::IsValid() ) - return; // m_errorType already set to errEXE_FILE_FILE_NOT_FOUND - - // If we get here, the file exists, and was mapped. We're still not - // sure that it's a valid EXE though - m_errorType = errEXE_FILE_INVALID_FORMAT; - - if ( GetFileSize() < sizeof(IMAGE_DOS_HEADER) ) - return; - - PIMAGE_DOS_HEADER pDosHdr = (PIMAGE_DOS_HEADER)GetBase(); - if ( IMAGE_DOS_SIGNATURE != pDosHdr->e_magic ) - return; - - // If we get here, it's at least a DOS 'MZ' file - m_errorType = errEXE_FILE_NO_ERROR; - - if ( pDosHdr->e_lfarlc < 0x40 ) // Theoretically, this field must be >= - { // 0x40 for it to be a non-DOS executable - m_exeType = exeType_DOS; - return; - } - - // Sanity check. Make sure the "new header" offset isn't past the end - // of the file - if ( pDosHdr->e_lfanew > (LONG)GetFileSize() ) - return; - - // Make a pointer to the secondary header - m_secondaryHeaderOffset = pDosHdr->e_lfanew; - PWORD pSecondHdr = MakePtr( PWORD, GetBase(), m_secondaryHeaderOffset ); - - // Decide what type of EXE, based on the start of the secondary header - switch ( *pSecondHdr ) - { - case IMAGE_OS2_SIGNATURE: m_exeType = exeType_NE; break; - case IMAGE_VXD_SIGNATURE: m_exeType = exeType_VXD; break; - case 0x4558: m_exeType = exeType_LX; break; // OS/2 2.X - } - - if ( *(PDWORD)pSecondHdr == IMAGE_NT_SIGNATURE ) - m_exeType = exeType_PE; -} - -PSTR EXE_FILE::GetFileTypeDescription( void ) -{ - // Returns a static string that describes what type this file is - switch ( m_exeType ) - { - case exeType_DOS: return "DOS"; - case exeType_NE: return "NE"; - case exeType_VXD: return "VXD"; - case exeType_LX: return "LX"; - case exeType_PE: return "PE"; - default: return "Invalid"; - } -} diff --git a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/src/MEMORYMAPPEDFILE.CPP b/platform/win32/msvc/external/exiv2/msvc64/tools/depends/src/MEMORYMAPPEDFILE.CPP deleted file mode 100644 index 89237bbc6a3..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/src/MEMORYMAPPEDFILE.CPP +++ /dev/null @@ -1,75 +0,0 @@ -//========================================== -// Matt Pietrek -// Microsoft Systems Journal, Feb 1997 -// FILE: MEMORYMPAPPEDFILE.CPP -//========================================== -#include -#pragma hdrstop -#include "memorymappedfile.h" - -MEMORY_MAPPED_FILE::MEMORY_MAPPED_FILE( PSTR pszFileName ) -{ - // - // Given a filename, the constructor opens a file handle, creates a file - // mapping, and maps the entire file into memory. - // - m_hFile = INVALID_HANDLE_VALUE; - m_hFileMapping = 0; - m_pMemoryMappedFileBase = 0; - m_cbFile = 0; - m_errCode = errMMF_FileOpen; // Initial error code: not found - - // First get a file handle - m_hFile = CreateFile(pszFileName, GENERIC_READ, FILE_SHARE_READ, NULL, - OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE)0); - - if ( m_hFile == INVALID_HANDLE_VALUE ) - { - m_errCode = errMMF_FileOpen; - return; - } - - m_cbFile = ::GetFileSize( m_hFile, 0 ); - - // Now, create a file mapping - m_hFileMapping = CreateFileMapping(m_hFile,NULL, PAGE_READONLY, 0, 0,NULL); - if ( m_hFileMapping == 0 ) - { - // Oops. Something went wrong. Clean up. - CloseHandle(m_hFile); - m_hFile = INVALID_HANDLE_VALUE; - m_errCode = errMMF_FileMapping; - return; - } - - m_pMemoryMappedFileBase = (PCHAR)MapViewOfFile( m_hFileMapping, - FILE_MAP_READ, 0, 0, 0); - - if ( m_pMemoryMappedFileBase == 0 ) - { - // Oops. Something went wrong. Clean up. - CloseHandle(m_hFileMapping); - m_hFileMapping = 0; - CloseHandle(m_hFile); - m_hFile = INVALID_HANDLE_VALUE; - m_errCode = errMMF_MapView; - return; - } - - m_errCode = errMMF_NoError; -} - -MEMORY_MAPPED_FILE::~MEMORY_MAPPED_FILE(void) -{ - // Clean up everything that was created by the constructor - if ( m_pMemoryMappedFileBase ) - UnmapViewOfFile( m_pMemoryMappedFileBase ); - - if ( m_hFileMapping ) - CloseHandle( m_hFileMapping ); - - if ( m_hFile != INVALID_HANDLE_VALUE ) - CloseHandle( m_hFile ); - - m_errCode = errMMF_FileOpen; -} diff --git a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/src/PEEXE.CPP b/platform/win32/msvc/external/exiv2/msvc64/tools/depends/src/PEEXE.CPP deleted file mode 100644 index 56f2f29ccdf..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/src/PEEXE.CPP +++ /dev/null @@ -1,99 +0,0 @@ -//========================================== -// Matt Pietrek -// Microsoft Systems Journal, Feb 1997 -// FILE: PEEXE.CPP -//========================================== -#include -#include -#pragma hdrstop -#include "peexe.h" - -PE_EXE::PE_EXE( PSTR pszFileName ) : EXE_FILE( pszFileName ) -{ - m_pNtHdr = 0; - - if ( FALSE == EXE_FILE::IsValid() ) - return; - - // It's an EXE, but is it a *PE* file??? If not, set code and bail - if ( GetExeType() != exeType_PE ) - { - m_errorType = errEXE_FILE_INVALID_FORMAT; - return; - } - - m_pNtHdr = MakePtr(PIMAGE_NT_HEADERS,GetBase(),GetSecondaryHeaderOffset()); -} - -DWORD PE_EXE::GetDataDirectoryEntryRVA( DWORD id ) -{ - // Given a IMAGE_DIRECTORY_ENTRY_XXX value (see WINNT.H), retrive the - // RVA stored in the corresponding slot - - if ( id >= IMAGE_NUMBEROF_DIRECTORY_ENTRIES ) - return (DWORD)-1; - - return m_pNtHdr->OptionalHeader.DataDirectory[id].VirtualAddress; -} - -PVOID PE_EXE::GetDataDirectoryEntryPointer( DWORD id ) -{ - // Given a IMAGE_DIRECTORY_ENTRY_XXX value (see WINNT.H), return a pointer - // to memory that corresponds to the RVA in the specified slot. - - if ( id >= IMAGE_NUMBEROF_DIRECTORY_ENTRIES ) - return (PVOID)-1; - - DWORD va = m_pNtHdr->OptionalHeader.DataDirectory[id].VirtualAddress; - - if ( !va ) // Return 0 if the RVA is 0 - return 0; - - return GetReadablePointerFromRVA( va ); -} - -DWORD PE_EXE::GetDataDirectoryEntrySize( DWORD id ) -{ - // Given a IMAGE_DIRECTORY_ENTRY_XXX value (see WINNT.H), retrive the - // size value stored in the corresponding slot - - if ( id >= IMAGE_NUMBEROF_DIRECTORY_ENTRIES ) - return (DWORD)-1; - - return m_pNtHdr->OptionalHeader.DataDirectory[id].Size; -} - -PVOID PE_EXE::GetReadablePointerFromRVA( DWORD rva ) -{ - // Given an RVA, translate it into a pointer within our linear memory - // mapping for the executable. - - DWORD fileOffset = RVAToFileOffset( rva ); - if ( (DWORD)-1 == fileOffset ) - return 0; - - return MakePtr( PVOID, GetBase(), fileOffset ); -} - -DWORD PE_EXE::RVAToFileOffset( DWORD rva ) -{ - // Given an RVA, figure out which section encompasses it. Next, using - // the PointerToRawData field for the found section, return an actual - // file offset that corresponds to the RVA - - PIMAGE_SECTION_HEADER pSectHdr = IMAGE_FIRST_SECTION( m_pNtHdr ); - - for ( unsigned i = 0; i < GetNumberOfSections(); i++, pSectHdr++ ) - { - DWORD cbMaxOnDisk - = min( pSectHdr->Misc.VirtualSize, pSectHdr->SizeOfRawData ); - - DWORD startSectRVA = pSectHdr->VirtualAddress; - DWORD endSectRVA = startSectRVA + cbMaxOnDisk; - - if ( (rva >= startSectRVA) && (rva < endSectRVA) ) - return pSectHdr->PointerToRawData + (rva - startSectRVA); - } - - return (DWORD)-1; // RVA not found in the section table... Ooops! -} diff --git a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/src/depends.cpp b/platform/win32/msvc/external/exiv2/msvc64/tools/depends/src/depends.cpp deleted file mode 100644 index f587eea623a..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/src/depends.cpp +++ /dev/null @@ -1,321 +0,0 @@ -//========================================== -// Matt Pietrek -// Microsoft Systems Journal, Feb 1997 -// FILE: DEPENDS.CPP -//========================================== -#include -#include -#include "dependencylist.h" -#include "peexe.h" - -//============================== Variables =============================== -char g_szHelpSyntax[] = -"DEPENDS - Matt Pietrek, 1997, for MSJ\n" -"Syntax: DEPENDS [args] \n" -" /v show version information\n" -" /t show time & date information\n" -" /p show full path\n" -" /q quiet (don't report some MS dlls)\n" -" /l show link time & date information\n\n"; - -char * g_pszPrimaryFile = 0; - -BOOL g_fShowDateTime = FALSE; -BOOL g_fShowLinkDateTime = FALSE; -BOOL g_fShowVersion = FALSE; -BOOL g_fShowFullPath = FALSE; -BOOL g_fQuiet = FALSE; - -//============================== Prototypes =============================== -void DisplayFileInformation( PMODULE_FILE_INFO pModInfo,BOOL bQuiet ); -void ShowVersionInfo( PSTR pszFileName ); -BOOL TimeDateStampToFileTime( DWORD timeDateStamp, LPFILETIME pFileTime ); -BOOL GetFileDateAsString( LPFILETIME pFt, char * pszDate, unsigned cbIn ); -BOOL GetFileTimeAsString( LPFILETIME pFt, char * pszTime, unsigned cbIn, - BOOL fSeconds ); - -//=================================== Code ================================ - -BOOL ProcessCommandLine( int argc, char * argv[] ) -{ - BOOL fSawFileName = FALSE; - - if ( argc < 2 ) - return FALSE; - - for ( int i = 1; i < argc; i++ ) - { - PSTR pArg = argv[i]; - - if ( (*pArg == '/') || (*pArg == '-') ) // Is it a switch char? - { - pArg++; // Point past switch char - - if ( 0 == lstrcmpi( pArg, "v" ) ) - g_fShowVersion = TRUE; - else if ( 0 == lstrcmpi( pArg, "t" ) ) - g_fShowDateTime = TRUE; - else if ( 0 == lstrcmpi( pArg, "l" ) ) - g_fShowLinkDateTime = TRUE; - else if ( 0 == lstrcmpi( pArg, "p" ) ) - g_fShowFullPath = TRUE; - else if ( 0 == lstrcmpi( pArg, "q" ) ) - g_fQuiet = TRUE; - else - { - printf( "Unrecognized option: \"%s\"\n", pArg ); - return FALSE; - } - } - else - { - if ( fSawFileName ) - return FALSE; - - g_pszPrimaryFile = pArg; - fSawFileName = TRUE; - } - } - - return fSawFileName; -} - -LPCTSTR getModuleBase(PMODULE_FILE_INFO pModule,BOOL bQuiet) -{ - LPCTSTR base = pModule->GetBaseName() ; - LPCTSTR result = base ; - if ( bQuiet ) { - // keep quiet about these guys - they're build/compiler dependant - if ( _strnicmp(base,"MSVCR",5) == 0 ) result = NULL ; - if ( _strnicmp(base,"MSVCP",5) == 0 ) result = NULL ; - if ( _strnicmp(base,"API-MS-Win",10) == 0 ) result = NULL ; - } - return result ; -} - -int main( int argc, char * argv[] ) -{ - if ( !ProcessCommandLine( argc, argv ) ) - { - printf( "%s %d bit build\n%s",argv[0],8*sizeof(void*),g_szHelpSyntax ); - return 1; - } - - MODULE_DEPENDENCY_LIST depends( g_pszPrimaryFile ); - - if ( !depends.IsValid() ) - { - printf( "Error: %s %s\n", g_pszPrimaryFile, depends.GetErrorString() ); - return 1; - } - - PMODULE_FILE_INFO pModInfo = 0; - - while ( pModInfo = depends.GetNextModule( pModInfo ) ) - { - DisplayFileInformation( pModInfo,g_fQuiet ); - - PMODULE_FILE_INFO pNotFound = 0; - - while ( pNotFound = pModInfo->GetNextNotFoundModule(pNotFound) ) - { - LPCTSTR base = getModuleBase(pNotFound,g_fQuiet) ; - if ( base ) printf( " Not found: %s\n", base ); - } - } - - return 0; -} - -void DisplayFileInformation( PMODULE_FILE_INFO pModInfo, BOOL bQuiet ) -{ - LPCTSTR base = getModuleBase(pModInfo,bQuiet); - if ( !base ) return ; - printf( "%-14s", base) ; // ->GetBaseName() ); - - PSTR pszFullName = pModInfo->GetFullName(); - - if ( g_fShowDateTime ) - { - HFILE hFile = _lopen( pszFullName, OF_READ ); - if ( HFILE_ERROR != hFile ) - { - FILETIME ft; - - if ( GetFileTime( (HANDLE)hFile, 0, 0, &ft ) ) - { - char szFileDate[32] = { 0 }; - char szFileTime[32] = { 0 }; - - GetFileDateAsString(&ft, szFileDate, sizeof(szFileDate) ); - GetFileTimeAsString(&ft, szFileTime, sizeof(szFileTime), - TRUE); - - printf( "%s %s ", szFileDate, szFileTime ); - } - - _lclose( hFile ); - } - } - - if ( g_fShowLinkDateTime ) - { - FILETIME ft; - char szFileDate[32] = { 0 }; - char szFileTime[32] = { 0 }; - - PE_EXE exe( pszFullName ); - - TimeDateStampToFileTime( exe.GetTimeDateStamp(), &ft ); - - GetFileDateAsString(&ft, szFileDate, sizeof(szFileDate) ); - GetFileTimeAsString(&ft, szFileTime, sizeof(szFileTime), - TRUE); - - printf( "%s %s ", szFileDate, szFileTime ); - } - - if ( g_fShowFullPath ) - printf( "(%s)", pszFullName ); - - printf( "\n" ); - - if ( g_fShowVersion ) - ShowVersionInfo( pszFullName ); -} - -void ShowVersionInfo( PSTR pszFileName ) -{ - DWORD cbVerInfo, dummy; - - // How big is the version info? - cbVerInfo = GetFileVersionInfoSize( pszFileName, &dummy ); - if ( !cbVerInfo ) - return; - - // Allocate space to hold the info - PBYTE pVerInfo = new BYTE[cbVerInfo]; - if ( !pVerInfo ) - return; - - _try - { - if ( !GetFileVersionInfo(pszFileName, 0, cbVerInfo, pVerInfo) ) - _leave; - - char * predefResStrings[] = - { - "CompanyName", - "FileDescription", - "FileVersion", - "InternalName", - "LegalCopyright", - "OriginalFilename", - "ProductName", - "ProductVersion", - 0 - }; - - for ( unsigned i=0; predefResStrings[i]; i++ ) - { - char szQueryStr[ 0x100 ]; - char szQueryStr2[0x100 ]; - - // Format the string with the 1200 codepage (Unicode) - wsprintf( szQueryStr, "\\StringFileInfo\\%04X%04X\\%s", - GetUserDefaultLangID(), 1200, - predefResStrings[i] ); - - // Format the string with the 1252 codepage (Windows Multilingual) - wsprintf( szQueryStr2, "\\StringFileInfo\\%04X%04X\\%s", - GetUserDefaultLangID(), 1252, - predefResStrings[i] ); - // We may want to format a string with the "0000" codepage - - PSTR pszVerRetVal; - UINT cbReturn; - BOOL fFound; - - // Try first with the 1252 codepage - fFound = VerQueryValue( pVerInfo, szQueryStr, - (LPVOID *)&pszVerRetVal, &cbReturn ); - if ( !fFound ) - { - // Hmm... 1252 wasn't found. Try the 1200 codepage - fFound = VerQueryValue( pVerInfo, szQueryStr2, - (LPVOID *)&pszVerRetVal, &cbReturn ); - } - - if ( fFound ) - printf( " %s %s\n", predefResStrings[i], pszVerRetVal ); - } - } - _finally - { - delete []pVerInfo; - } -} - - -// Convert a TimeDateStamp (i.e., # of seconds since 1/1/1970) into a FILETIME - -BOOL TimeDateStampToFileTime( DWORD timeDateStamp, LPFILETIME pFileTime ) -{ - __int64 t1970 = 0x019DB1DED53E8000; // Magic... GMT... Don't ask.... - - __int64 timeStampIn100nsIncr = (__int64)timeDateStamp * 10000000; - - __int64 finalValue = t1970 + timeStampIn100nsIncr; - - memcpy( pFileTime, &finalValue, sizeof( finalValue ) ); - - return TRUE; -} - -BOOL GetFileDateAsString( LPFILETIME pFt, char * pszDate, unsigned cbIn ) -{ - FILETIME ftLocal; - SYSTEMTIME st; - - if ( !FileTimeToLocalFileTime( pFt, &ftLocal ) ) - return FALSE; - - if ( !FileTimeToSystemTime( &ftLocal, &st ) ) - return FALSE; - - char szTemp[12]; - - wsprintf( szTemp, "%02u/%02u/%04u", - st.wMonth, st.wDay, st.wYear ); - lstrcpyn( pszDate, szTemp, cbIn ); - - return TRUE; -} - -BOOL GetFileTimeAsString( LPFILETIME pFt, char * pszTime, unsigned cbIn, - BOOL fSeconds ) -{ - FILETIME ftLocal; - SYSTEMTIME st; - - if ( !FileTimeToLocalFileTime( pFt, &ftLocal ) ) - return FALSE; - - if ( !FileTimeToSystemTime( &ftLocal, &st ) ) - return FALSE; - - char szTemp[12]; - - if ( fSeconds ) // Want seconds??? - { - wsprintf( szTemp, "%02u:%02u:%02u", st.wHour, st.wMinute, st.wSecond ); - } - else // No thanks.. Just hours and minutes - { - wsprintf( szTemp, "%02u:%02u", st.wHour, st.wMinute ); - } - - lstrcpyn( pszTime, szTemp, cbIn ); - - return TRUE; -} diff --git a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/src/modulefileinfo.cpp b/platform/win32/msvc/external/exiv2/msvc64/tools/depends/src/modulefileinfo.cpp deleted file mode 100644 index ac82223dcfd..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/src/modulefileinfo.cpp +++ /dev/null @@ -1,42 +0,0 @@ -//========================================== -// Matt Pietrek -// Microsoft Systems Journal, Feb 1997 -// FILE: MODULEFILEINFO.CPP -//========================================== -#include -#include "modulefileinfo.h" - -MODULE_FILE_INFO::MODULE_FILE_INFO( PSTR pszFileName ) -{ - m_pNext = 0; - m_pNotFoundNext = 0; - - // Find the last '\\' to obtain a pointer to just the base filename part - PSTR pszBaseName = strrchr( pszFileName, '\\' ); - if ( pszBaseName ) // We found a path, so advance to the base filename - pszBaseName++; - else - pszBaseName = pszFileName; // No path. Use the same name for both - - // Initialize the new MODULE_FILE_INFO, and stick it at the head - // of the list. - lstrcpyn( m_szFullName, pszFileName, sizeof(m_szFullName) ); - lstrcpyn( m_szBaseName, pszBaseName, sizeof(m_szBaseName) ); - -} - -void MODULE_FILE_INFO::AddNotFoundModule( PSTR pszFileName ) -{ - PMODULE_FILE_INFO pNew = new MODULE_FILE_INFO( pszFileName ); - - pNew->m_pNotFoundNext = m_pNotFoundNext; - m_pNotFoundNext = pNew; -} - -MODULE_FILE_INFO * MODULE_FILE_INFO::GetNextNotFoundModule( PMODULE_FILE_INFO p) -{ - PMODULE_FILE_INFO pNext = p ? p->m_pNotFoundNext : m_pNotFoundNext; - - return pNext; -} - diff --git a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/stdafx.cpp b/platform/win32/msvc/external/exiv2/msvc64/tools/depends/stdafx.cpp deleted file mode 100644 index 061fd2f13e6..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/stdafx.cpp +++ /dev/null @@ -1,8 +0,0 @@ -// stdafx.cpp : source file that includes just the standard includes -// Depends2.pch will be the pre-compiled header -// stdafx.obj will contain the pre-compiled type information - -#include "stdafx.h" - -// TODO: reference any additional headers you need in STDAFX.H -// and not in this file diff --git a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/stdafx.h b/platform/win32/msvc/external/exiv2/msvc64/tools/depends/stdafx.h deleted file mode 100644 index 47a0d0252b1..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/stdafx.h +++ /dev/null @@ -1,15 +0,0 @@ -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently -// - -#pragma once - -#include "targetver.h" - -#include -#include - - - -// TODO: reference additional headers your program requires here diff --git a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/targetver.h b/platform/win32/msvc/external/exiv2/msvc64/tools/depends/targetver.h deleted file mode 100644 index a38195a4ef1..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/tools/depends/targetver.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -// The following macros define the minimum required platform. The minimum required platform -// is the earliest version of Windows, Internet Explorer etc. that has the necessary features to run -// your application. The macros work by enabling all features available on platform versions up to and -// including the version specified. - -// Modify the following defines if you have to target a platform prior to the ones specified below. -// Refer to MSDN for the latest info on corresponding values for different platforms. -#ifndef _WIN32_WINNT // Specifies that the minimum required platform is Windows Vista. -#define _WIN32_WINNT 0x0600 // Change this to the appropriate value to target other versions of Windows. -#endif - diff --git a/platform/win32/msvc/external/exiv2/msvc64/xmpsdk/xmpsdk.vcproj b/platform/win32/msvc/external/exiv2/msvc64/xmpsdk/xmpsdk.vcproj deleted file mode 100644 index d751ca91569..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/xmpsdk/xmpsdk.vcproj +++ /dev/null @@ -1,745 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc64/zlib/zlib.vcproj b/platform/win32/msvc/external/exiv2/msvc64/zlib/zlib.vcproj deleted file mode 100644 index feeac49e9a2..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/zlib/zlib.vcproj +++ /dev/null @@ -1,777 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc64/zlib123/zlib.vcproj b/platform/win32/msvc/external/exiv2/msvc64/zlib123/zlib.vcproj deleted file mode 100644 index 24652b53902..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/zlib123/zlib.vcproj +++ /dev/null @@ -1,781 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/msvc64/zlib125/zlib.vcproj b/platform/win32/msvc/external/exiv2/msvc64/zlib125/zlib.vcproj deleted file mode 100644 index feeac49e9a2..00000000000 --- a/platform/win32/msvc/external/exiv2/msvc64/zlib125/zlib.vcproj +++ /dev/null @@ -1,777 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/exiv2/mythexiv2lib.vcxproj b/platform/win32/msvc/external/exiv2/mythexiv2lib.vcxproj deleted file mode 100644 index 10b35a422bc..00000000000 --- a/platform/win32/msvc/external/exiv2/mythexiv2lib.vcxproj +++ /dev/null @@ -1,303 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {831EF580-92C8-4CA8-B0CE-3D906280A54D} - exiv2lib - Win32Proj - - - - DynamicLibrary - MultiByte - v140 - - - DynamicLibrary - MultiByte - v140 - - - DynamicLibrary - MultiByte - v140 - - - DynamicLibrary - MultiByte - v140 - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.40219.1 - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - build\$(Platform)\$(Configuration)\ - build\$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - build\$(Platform)\$(Configuration)\ - build\$(Platform)\$(Configuration)\ - AllRules.ruleset - AllRules.ruleset - - - - - AllRules.ruleset - AllRules.ruleset - - - - - - - - Disabled - msvc64/include;msvc64/include/exiv2;xmpsdk/include;xmpsdk/src;../expat/lib;../zlib - WIN32;_DEBUG;EXV_HAVE_DLL;EXV_BUILDING_LIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - true - true - - - true - Level3 - false - ProgramDatabase - - - false - - - /NODEFAULTLIB:LIBMTD %(AdditionalOptions) - $(Platform)\$(Configuration)\xmpsdk.lib;..\expat\$(Platform)\bin\$(Configuration)\libexpat.lib;..\zlib\zlib.lib;%(AdditionalDependencies) - $(OutDir)exiv2.dll - true - $(TargetDir)\exiv2.lib - MachineX86 - $(TargetDir)exiv2.pdb - $(IntDir)exiv2$(TargetExt).intermediate.manifest - $(TargetDir)exiv2.pgd - - - - - Disabled - msvc64/include;msvc64/include/exiv2;xmpsdk/include;xmpsdk/src;../expat/lib;../zlib - WIN32;_DEBUG;EXV_HAVE_DLL;EXV_BUILDING_LIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - true - true - - - true - Level3 - false - ProgramDatabase - - - false - - - /NODEFAULTLIB:LIBMTD %(AdditionalOptions) - $(Platform)\$(Configuration)\xmpsdk.lib;..\expat\$(Platform)\$(Configuration)\libexpat.lib;..\zlib\zlib.lib;%(AdditionalDependencies) - $(OutDir)exiv2.dll - true - $(TargetDir)\exiv2.lib - $(TargetDir)exiv2.pdb - $(IntDir)exiv2$(TargetExt).intermediate.manifest - $(TargetDir)exiv2.pgd - - - - - MinSpace - msvc64/include;msvc64/include/exiv2;xmpsdk/include;xmpsdk/src;../expat/lib;../zlib - WIN32;_NDEBUG;EXV_HAVE_DLL;EXV_BUILDING_LIB;%(PreprocessorDefinitions) - true - Default - MultiThreadedDLL - true - true - - - true - Level3 - false - ProgramDatabase - - - false - - - /NODEFAULTLIB:LIBCMT %(AdditionalOptions) - $(Platform)\$(Configuration)\xmpsdk.lib;..\expat\$(Platform)\bin\$(Configuration)\libexpat.lib;..\zlib\zlib.lib;%(AdditionalDependencies) - $(OutDir)exiv2.dll - false - $(TargetDir)\exiv2.lib - MachineX86 - $(TargetDir)exiv2.pdb - $(TargetDir)exiv2.pgd - $(IntDir)exiv2$(TargetExt).intermediate.manifest - - - - - MinSpace - msvc64/include;msvc64/include/exiv2;xmpsdk/include;xmpsdk/src;../expat/lib;../zlib - WIN32;_NDEBUG;EXV_HAVE_DLL;EXV_BUILDING_LIB;%(PreprocessorDefinitions) - Default - MultiThreadedDLL - true - true - - - true - Level3 - false - ProgramDatabase - - - false - - - /NODEFAULTLIB:LIBCMT %(AdditionalOptions) - $(Platform)\$(Configuration)\xmpsdk.lib;..\expat\$(Platform)\bin\$(Configuration)\libexpat.lib;..\zlib\zlib.lib;%(AdditionalDependencies) - $(OutDir)exiv2.dll - false - $(TargetDir)\exiv2.lib - $(TargetDir)exiv2.pdb - $(TargetDir)exiv2.pgd - $(IntDir)exiv2$(TargetExt).intermediate.manifest - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/platform/win32/msvc/external/exiv2/mythxmpsdk.vcxproj b/platform/win32/msvc/external/exiv2/mythxmpsdk.vcxproj deleted file mode 100644 index ae590390550..00000000000 --- a/platform/win32/msvc/external/exiv2/mythxmpsdk.vcxproj +++ /dev/null @@ -1,227 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {09877CF4-83B6-44FE-A2E2-629AA5C8093E} - xmpsdk - Win32Proj - - - - StaticLibrary - MultiByte - v140 - - - StaticLibrary - MultiByte - v140 - - - StaticLibrary - MultiByte - v140 - - - StaticLibrary - MultiByte - v140 - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.40219.1 - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - .\build\$(Platform)\$(Configuration)\ - .\build\$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - .\build\$(Platform)\$(Configuration)\ - .\build\$(Platform)\$(Configuration)\ - AllRules.ruleset - AllRules.ruleset - - - - - AllRules.ruleset - AllRules.ruleset - - - - - - - - - - - - Disabled - msvc64/include;msvc64/include/exiv2;xmpsdk/include;xmpsdk/src;../expat/lib;../zlib;%(AdditionalIncludeDirectories) - WIN32;_DebugDLL;_LIB;%(PreprocessorDefinitions) - false - EnableFastChecks - MultiThreadedDebugDLL - true - true - - - - - Level3 - - - $(OutDir)xmpsdk.lib - ..\expat\win32\bin\$(Configuration);%(AdditionalLibraryDirectories) - - - - - - - - - Disabled - msvc64/include;msvc64/include/exiv2;xmpsdk/include;xmpsdk/src;../expat/lib;../zlib;%(AdditionalIncludeDirectories) - WIN32;_DebugDLL;_LIB;%(PreprocessorDefinitions) - false - EnableFastChecks - MultiThreadedDebugDLL - true - true - - - - - Level3 - - - $(OutDir)xmpsdk.lib - ..\expat\win32\bin\$(Configuration);%(AdditionalLibraryDirectories) - - - - - - - - - msvc64/include;msvc64/include/exiv2;xmpsdk/include;xmpsdk/src;../expat/lib;../zlib;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) - false - MultiThreadedDLL - - - Level3 - ProgramDatabase - - - $(OutDir)xmpsdk.lib - ..\expat\win32\bin\$(Configuration);%(AdditionalLibraryDirectories) - - - - - - - - - msvc64/include;msvc64/include/exiv2;xmpsdk/include;xmpsdk/src;../expat/lib;../zlib;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) - false - MultiThreadedDLL - - - Level3 - ProgramDatabase - - - $(OutDir)xmpsdk.lib - ..\expat\win32\bin\$(Configuration);%(AdditionalLibraryDirectories) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/platform/win32/msvc/external/exiv2/po/ChangeLog b/platform/win32/msvc/external/exiv2/po/ChangeLog deleted file mode 100644 index af49ff7543d..00000000000 --- a/platform/win32/msvc/external/exiv2/po/ChangeLog +++ /dev/null @@ -1,12 +0,0 @@ -2006-10-31 gettextize - - * Makefile.in.in: New file, from gettext-0.14.6. - * boldquot.sed: New file, from gettext-0.14.6. - * en@boldquot.header: New file, from gettext-0.14.6. - * en@quot.header: New file, from gettext-0.14.6. - * insert-header.sin: New file, from gettext-0.14.6. - * quot.sed: New file, from gettext-0.14.6. - * remove-potcdate.sin: New file, from gettext-0.14.6. - * Rules-quot: New file, from gettext-0.14.6. - * POTFILES.in: New file. - diff --git a/platform/win32/msvc/external/exiv2/po/LINGUAS b/platform/win32/msvc/external/exiv2/po/LINGUAS deleted file mode 100644 index ebb8dc5cc78..00000000000 --- a/platform/win32/msvc/external/exiv2/po/LINGUAS +++ /dev/null @@ -1,2 +0,0 @@ -# Set of available languages. -de es fi fr pl ru sk diff --git a/platform/win32/msvc/external/exiv2/po/Makefile.in.in b/platform/win32/msvc/external/exiv2/po/Makefile.in.in deleted file mode 100644 index 6c646a88ca7..00000000000 --- a/platform/win32/msvc/external/exiv2/po/Makefile.in.in +++ /dev/null @@ -1,385 +0,0 @@ -# Makefile for PO directory in any package using GNU gettext. -# Copyright (C) 1995-1997, 2000-2005 by Ulrich Drepper -# -# This file can be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU General Public -# License but which still want to provide support for the GNU gettext -# functionality. -# Please note that the actual code of GNU gettext is covered by the GNU -# General Public License and is *not* in the public domain. -# -# Origin: gettext-0.14.4 - -PACKAGE = @PACKAGE@ -VERSION = @VERSION@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ - -SHELL = /bin/sh -@SET_MAKE@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ - -prefix = @prefix@ -exec_prefix = @exec_prefix@ -datarootdir = @datarootdir@ -datadir = @datadir@ -localedir = $(datadir)/locale -gettextsrcdir = $(datadir)/gettext/po - -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -mkinstalldirs = $(SHELL) $(MKINSTALLDIRS) - -GMSGFMT = @GMSGFMT@ -MSGFMT = @MSGFMT@ -XGETTEXT = @XGETTEXT@ -MSGMERGE = msgmerge -MSGMERGE_UPDATE = @MSGMERGE@ --update -MSGINIT = msginit -MSGCONV = msgconv -MSGFILTER = msgfilter - -POFILES = @POFILES@ -GMOFILES = @GMOFILES@ -UPDATEPOFILES = @UPDATEPOFILES@ -DUMMYPOFILES = @DUMMYPOFILES@ -DISTFILES.common = Makefile.in.in remove-potcdate.sin \ -$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) -DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ -$(POFILES) $(GMOFILES) \ -$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) - -POTFILES = \ - -CATALOGS = @CATALOGS@ - -# Makevars gets inserted here. (Don't remove this line!) - -.SUFFIXES: -.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update - -.po.mo: - @echo "$(MSGFMT) -c -o $@ $<"; \ - $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ - -.po.gmo: - @lang=`echo $* | sed -e 's,.*/,,'`; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ - cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo - -.sin.sed: - sed -e '/^#/d' $< > t-$@ - mv t-$@ $@ - - -all: all-@USE_NLS@ - -all-yes: stamp-po -all-no: - -# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no -# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because -# we don't want to bother translators with empty POT files). We assume that -# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. -# In this case, stamp-po is a nop (i.e. a phony target). - -# stamp-po is a timestamp denoting the last time at which the CATALOGS have -# been loosely updated. Its purpose is that when a developer or translator -# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, -# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent -# invocations of "make" will do nothing. This timestamp would not be necessary -# if updating the $(CATALOGS) would always touch them; however, the rule for -# $(POFILES) has been designed to not touch files that don't need to be -# changed. -stamp-po: $(srcdir)/$(DOMAIN).pot - test ! -f $(srcdir)/$(DOMAIN).pot || \ - test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) - @test ! -f $(srcdir)/$(DOMAIN).pot || { \ - echo "touch stamp-po" && \ - echo timestamp > stamp-poT && \ - mv stamp-poT stamp-po; \ - } - -# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', -# otherwise packages like GCC can not be built if only parts of the source -# have been downloaded. - -# This target rebuilds $(DOMAIN).pot; it is an expensive operation. -# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. -$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed - if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ - msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ - else \ - msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ - fi; \ - $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ - --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ - --files-from=$(srcdir)/POTFILES.in \ - --copyright-holder='$(COPYRIGHT_HOLDER)' \ - --msgid-bugs-address="$$msgid_bugs_address" - test ! -f $(DOMAIN).po || { \ - if test -f $(srcdir)/$(DOMAIN).pot; then \ - sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ - sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ - if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ - rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ - else \ - rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ - mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ - fi; \ - else \ - mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ - fi; \ - } - -# This rule has no dependencies: we don't need to update $(DOMAIN).pot at -# every "make" invocation, only create it when it is missing. -# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. -$(srcdir)/$(DOMAIN).pot: - $(MAKE) $(DOMAIN).pot-update - -# This target rebuilds a PO file if $(DOMAIN).pot has changed. -# Note that a PO file is not touched if it doesn't need to be changed. -$(POFILES): $(srcdir)/$(DOMAIN).pot - @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ - if test -f "$(srcdir)/$${lang}.po"; then \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ - cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \ - else \ - $(MAKE) $${lang}.po-create; \ - fi - - -install: install-exec install-data -install-exec: -install-data: install-data-@USE_NLS@ - if test "$(PACKAGE)" = "gettext-tools"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - for file in $(DISTFILES.common) Makevars.template; do \ - $(INSTALL_DATA) $(srcdir)/$$file \ - $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - for file in Makevars; do \ - rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi -install-data-no: all -install-data-yes: all - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ - $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ - echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ - for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ - if test -n "$$lc"; then \ - if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ - link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ - mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ - for file in *; do \ - if test -f $$file; then \ - ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ - fi; \ - done); \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - else \ - if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ - :; \ - else \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - fi; \ - fi; \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ - ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ - cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ - fi; \ - done; \ - done - -install-strip: install - -installdirs: installdirs-exec installdirs-data -installdirs-exec: -installdirs-data: installdirs-data-@USE_NLS@ - if test "$(PACKAGE)" = "gettext-tools"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - else \ - : ; \ - fi -installdirs-data-no: -installdirs-data-yes: - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ - if test -n "$$lc"; then \ - if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ - link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ - mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ - for file in *; do \ - if test -f $$file; then \ - ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ - fi; \ - done); \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - else \ - if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ - :; \ - else \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - fi; \ - fi; \ - fi; \ - done; \ - done - -# Define this as empty until I found a useful application. -installcheck: - -uninstall: uninstall-exec uninstall-data -uninstall-exec: -uninstall-data: uninstall-data-@USE_NLS@ - if test "$(PACKAGE)" = "gettext-tools"; then \ - for file in $(DISTFILES.common) Makevars.template; do \ - rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi -uninstall-data-no: -uninstall-data-yes: - catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - done; \ - done - -check: all - -info dvi ps pdf html tags TAGS ctags CTAGS ID: - -mostlyclean: - rm -f remove-potcdate.sed - rm -f stamp-poT - rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po - rm -fr *.o - -clean: mostlyclean - -distclean: clean - rm -f Makefile Makefile.in POTFILES *.mo - -maintainer-clean: distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - rm -f stamp-po $(GMOFILES) - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: - $(MAKE) update-po - @$(MAKE) dist2 -# This is a separate target because 'update-po' must be executed before. -dist2: stamp-po $(DISTFILES) - dists="$(DISTFILES)"; \ - if test "$(PACKAGE)" = "gettext-tools"; then \ - dists="$$dists Makevars.template"; \ - fi; \ - if test -f $(srcdir)/$(DOMAIN).pot; then \ - dists="$$dists $(DOMAIN).pot stamp-po"; \ - fi; \ - if test -f $(srcdir)/ChangeLog; then \ - dists="$$dists ChangeLog"; \ - fi; \ - for i in 0 1 2 3 4 5 6 7 8 9; do \ - if test -f $(srcdir)/ChangeLog.$$i; then \ - dists="$$dists ChangeLog.$$i"; \ - fi; \ - done; \ - if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ - for file in $$dists; do \ - if test -f $$file; then \ - cp -p $$file $(distdir) || exit 1; \ - else \ - cp -p $(srcdir)/$$file $(distdir) || exit 1; \ - fi; \ - done - -update-po: Makefile - $(MAKE) $(DOMAIN).pot-update - test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) - $(MAKE) update-gmo - -# General rule for creating PO files. - -.nop.po-create: - @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ - echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ - exit 1 - -# General rule for updating PO files. - -.nop.po-update: - @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ - if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ - tmpdir=`pwd`; \ - echo "$$lang:"; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ - cd $(srcdir); \ - if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ - if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ - rm -f $$tmpdir/$$lang.new.po; \ - else \ - if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ - :; \ - else \ - echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ - exit 1; \ - fi; \ - fi; \ - else \ - echo "msgmerge for $$lang.po failed!" 1>&2; \ - rm -f $$tmpdir/$$lang.new.po; \ - fi - -$(DUMMYPOFILES): - -update-gmo: Makefile $(GMOFILES) - @: - -Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ - $(SHELL) ./config.status - -force: - -# Tell versions [3.59,3.63) of GNU make not to export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/platform/win32/msvc/external/exiv2/po/Makevars b/platform/win32/msvc/external/exiv2/po/Makevars deleted file mode 100644 index 41545181c6f..00000000000 --- a/platform/win32/msvc/external/exiv2/po/Makevars +++ /dev/null @@ -1,41 +0,0 @@ -# Makefile variables for PO directory in any package using GNU gettext. - -# Usually the message domain is the same as the package name. -DOMAIN = $(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 = Andreas Huggel - -# 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 = ahuggel@gmx.net - -# 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/platform/win32/msvc/external/exiv2/po/POTFILES.in b/platform/win32/msvc/external/exiv2/po/POTFILES.in deleted file mode 100644 index 490acfa8241..00000000000 --- a/platform/win32/msvc/external/exiv2/po/POTFILES.in +++ /dev/null @@ -1,22 +0,0 @@ -# List of source files with translatable strings, generated with -# $ grep -l '[N ]_(' src/*.cpp src/*.hpp | sort -# Note: Please run 'make update-po' after changing this list - -src/actions.cpp -src/canonmn.cpp -src/crwimage.cpp -src/datasets.cpp -src/error.cpp -src/exiv2.cpp -src/fujimn.cpp -src/minoltamn.cpp -src/nikonmn.cpp -src/olympusmn.cpp -src/panasonicmn.cpp -src/pentaxmn.cpp -src/properties.cpp -src/sigmamn.cpp -src/sonymn.cpp -src/tags.cpp -src/tiffimage.cpp -src/tiffvisitor.cpp diff --git a/platform/win32/msvc/external/exiv2/po/Rules-quot b/platform/win32/msvc/external/exiv2/po/Rules-quot deleted file mode 100644 index 9c2a995e300..00000000000 --- a/platform/win32/msvc/external/exiv2/po/Rules-quot +++ /dev/null @@ -1,47 +0,0 @@ -# Special Makefile rules for English message catalogs with quotation marks. - -DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot - -.SUFFIXES: .insert-header .po-update-en - -en@quot.po-create: - $(MAKE) en@quot.po-update -en@boldquot.po-create: - $(MAKE) en@boldquot.po-update - -en@quot.po-update: en@quot.po-update-en -en@boldquot.po-update: en@boldquot.po-update-en - -.insert-header.po-update-en: - @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ - if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ - tmpdir=`pwd`; \ - echo "$$lang:"; \ - ll=`echo $$lang | sed -e 's/@.*//'`; \ - LC_ALL=C; export LC_ALL; \ - cd $(srcdir); \ - if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ - if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ - rm -f $$tmpdir/$$lang.new.po; \ - else \ - if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ - :; \ - else \ - echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ - exit 1; \ - fi; \ - fi; \ - else \ - echo "creation of $$lang.po failed!" 1>&2; \ - rm -f $$tmpdir/$$lang.new.po; \ - fi - -en@quot.insert-header: insert-header.sin - sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header - -en@boldquot.insert-header: insert-header.sin - sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header - -mostlyclean: mostlyclean-quot -mostlyclean-quot: - rm -f *.insert-header diff --git a/platform/win32/msvc/external/exiv2/po/boldquot.sed b/platform/win32/msvc/external/exiv2/po/boldquot.sed deleted file mode 100644 index 4b937aa517b..00000000000 --- a/platform/win32/msvc/external/exiv2/po/boldquot.sed +++ /dev/null @@ -1,10 +0,0 @@ -s/"\([^"]*\)"/“\1â€/g -s/`\([^`']*\)'/‘\1’/g -s/ '\([^`']*\)' / ‘\1’ /g -s/ '\([^`']*\)'$/ ‘\1’/g -s/^'\([^`']*\)' /‘\1’ /g -s/“â€/""/g -s/“/“/g -s/â€/â€/g -s/‘/‘/g -s/’/’/g diff --git a/platform/win32/msvc/external/exiv2/po/de.gmo b/platform/win32/msvc/external/exiv2/po/de.gmo deleted file mode 100644 index 4a926635b34..00000000000 Binary files a/platform/win32/msvc/external/exiv2/po/de.gmo and /dev/null differ diff --git a/platform/win32/msvc/external/exiv2/po/de.po b/platform/win32/msvc/external/exiv2/po/de.po deleted file mode 100644 index 093b27f4ba1..00000000000 --- a/platform/win32/msvc/external/exiv2/po/de.po +++ /dev/null @@ -1,23270 +0,0 @@ -# translation of de.po to german -# translation of de.po to -# German translations of Exiv2. -# Copyright: -# This file is distributed under the same license as the Exiv2 package. -# -# Free Software Foundation, Inc., 2002. -# Lutz Mueller , 2002. -# Marcus Meissner , 2004, 2005. -# Oliver Dörr , 2007, 2008. -msgid "" -msgstr "" -"Project-Id-Version: de\n" -"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" -"POT-Creation-Date: 2012-03-23 18:06+0800\n" -"PO-Revision-Date: 2008-11-16 21:57+0100\n" -"Last-Translator: Oliver Dörr \n" -"Language-Team: german \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" - -#: src/actions.cpp:253 src/actions.cpp:486 src/actions.cpp:698 -#: src/actions.cpp:715 src/actions.cpp:760 src/actions.cpp:850 -#: src/actions.cpp:993 src/actions.cpp:1035 src/actions.cpp:1104 -#: src/actions.cpp:1146 src/actions.cpp:1151 src/actions.cpp:1171 -#: src/actions.cpp:1176 src/actions.cpp:1208 src/actions.cpp:1451 -#: src/actions.cpp:1587 src/actions.cpp:1652 src/actions.cpp:1820 -msgid "Failed to open the file\n" -msgstr "Die Datei konnte nicht geöffnet werden\n" - -#: src/actions.cpp:263 -msgid "File name" -msgstr "Dateiname" - -#: src/actions.cpp:269 -msgid "File size" -msgstr "Dateigröße" - -#: src/actions.cpp:270 src/actions.cpp:422 src/actions.cpp:1019 -msgid "Bytes" -msgstr "Bytes" - -#: src/actions.cpp:274 -msgid "MIME type" -msgstr "MIME-Typ" - -#: src/actions.cpp:278 src/canonmn.cpp:785 src/minoltamn.cpp:500 -#: src/minoltamn.cpp:745 src/minoltamn.cpp:988 src/pentaxmn.cpp:892 -msgid "Image size" -msgstr "Bildgrõße" - -#: src/actions.cpp:283 src/actions.cpp:513 src/actions.cpp:773 -#: src/actions.cpp:1002 src/actions.cpp:1464 src/actions.cpp:1600 -#: src/actions.cpp:1665 -msgid "No Exif data found in the file\n" -msgstr "Es wurden keine Exif-Daten in der Datei gefunden\n" - -#: src/actions.cpp:288 -msgid "Camera make" -msgstr "Kamerahersteller" - -#: src/actions.cpp:291 -msgid "Camera model" -msgstr "Kameramodell" - -#: src/actions.cpp:294 -msgid "Image timestamp" -msgstr "Zeitstempel des Bildes" - -#: src/actions.cpp:298 src/minoltamn.cpp:805 src/minoltamn.cpp:812 -#: src/minoltamn.cpp:1066 -msgid "Image number" -msgstr "Bildnummer" - -#: src/actions.cpp:303 src/minoltamn.cpp:515 src/minoltamn.cpp:798 -#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1368 src/pentaxmn.cpp:909 -#: src/pentaxmn.cpp:910 -msgid "Exposure time" -msgstr "Belichtungszeit" - -#: src/actions.cpp:315 src/canonmn.cpp:903 src/minoltamn.cpp:1262 -#: src/tags.cpp:1627 -msgid "Aperture" -msgstr "Blende" - -#: src/actions.cpp:325 -msgid "Exposure bias" -msgstr "Belichtungskontrolle" - -#: src/actions.cpp:328 src/canonmn.cpp:835 src/minoltamn.cpp:874 -#: src/minoltamn.cpp:1198 src/minoltamn.cpp:2098 src/panasonicmn.cpp:69 -#: src/pentaxmn.cpp:320 src/properties.cpp:563 src/sonymn.cpp:171 -#: src/tags.cpp:827 src/tags.cpp:1431 src/tags.cpp:1652 -msgid "Flash" -msgstr "Blitz" - -#: src/actions.cpp:331 src/canonmn.cpp:897 src/panasonicmn.cpp:249 -msgid "Flash bias" -msgstr "Blitzkontrolle" - -#: src/actions.cpp:336 src/canonmn.cpp:201 src/minoltamn.cpp:539 -#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1372 -msgid "Focal length" -msgstr "Brennweite" - -#: src/actions.cpp:341 -msgid "35 mm equivalent" -msgstr "35 mm äquivalent" - -#: src/actions.cpp:351 -msgid "Subject distance" -msgstr "Entfernung des Motivs" - -#: src/actions.cpp:362 -msgid "ISO speed" -msgstr "ISO Geschwindigkeit" - -#: src/actions.cpp:365 src/minoltamn.cpp:491 src/minoltamn.cpp:742 -#: src/minoltamn.cpp:985 src/minoltamn.cpp:1353 src/olympusmn.cpp:659 -#: src/sigmamn.cpp:75 -msgid "Exposure mode" -msgstr "Belichtungsmodus" - -#: src/actions.cpp:368 src/minoltamn.cpp:509 src/minoltamn.cpp:1006 -#: src/minoltamn.cpp:1395 src/olympusmn.cpp:661 src/sigmamn.cpp:78 -msgid "Metering mode" -msgstr "Messmodus" - -#: src/actions.cpp:371 src/canonmn.cpp:776 src/minoltamn.cpp:521 -#: src/olympusmn.cpp:202 src/olympusmn.cpp:663 src/panasonicmn.cpp:243 -msgid "Macro mode" -msgstr "Makromodus" - -#: src/actions.cpp:374 src/minoltamn.cpp:133 src/minoltamn.cpp:503 -#: src/minoltamn.cpp:748 src/minoltamn.cpp:991 src/pentaxmn.cpp:889 -#: src/sonymn.cpp:275 -msgid "Image quality" -msgstr "Bildqualität" - -#: src/actions.cpp:377 -msgid "Exif Resolution" -msgstr "Exif-Auflösung" - -#: src/actions.cpp:406 src/canonmn.cpp:1140 src/minoltamn.cpp:178 -#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:994 -#: src/minoltamn.cpp:1377 src/nikonmn.cpp:226 src/nikonmn.cpp:472 -#: src/nikonmn.cpp:528 src/olympusmn.cpp:880 src/sigmamn.cpp:72 -#: src/sonymn.cpp:290 -msgid "White balance" -msgstr "Weißabgleich" - -#: src/actions.cpp:409 src/minoltamn.cpp:114 src/olympusmn.cpp:426 -msgid "Thumbnail" -msgstr "Vorschau" - -#: src/actions.cpp:413 src/actions.cpp:418 src/canonmn.cpp:339 -#: src/canonmn.cpp:1048 src/canonmn.cpp:1057 src/canonmn.cpp:1109 -#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2076 -#: src/nikonmn.cpp:173 src/nikonmn.cpp:188 src/nikonmn.cpp:903 -#: src/nikonmn.cpp:926 src/nikonmn.cpp:988 src/olympusmn.cpp:142 -#: src/olympusmn.cpp:720 src/olympusmn.cpp:727 src/olympusmn.cpp:1181 -#: src/olympusmn.cpp:1240 src/olympusmn.cpp:1337 src/olympusmn.cpp:1493 -#: src/olympusmn.cpp:1502 src/pentaxmn.cpp:230 src/pentaxmn.cpp:349 -#: src/pentaxmn.cpp:350 src/properties.cpp:914 src/properties.cpp:922 -#: src/tags.cpp:1510 -msgid "None" -msgstr "Keine" - -#: src/actions.cpp:428 src/datasets.cpp:376 src/properties.cpp:357 -#: src/properties.cpp:523 src/tags.cpp:762 -msgid "Copyright" -msgstr "Copyright" - -#: src/actions.cpp:431 -msgid "Exif comment" -msgstr "Exif-Kommentar" - -#: src/actions.cpp:526 -msgid "No IPTC data found in the file\n" -msgstr "Es wurden keine IPTC-Daten in der Datei gefunden.\n" - -#: src/actions.cpp:539 -msgid "No XMP data found in the file\n" -msgstr "Es wurden keine XMP-Daten in der Datei gefunden.\n" - -#: src/actions.cpp:638 src/actions.cpp:663 src/actions.cpp:684 -msgid "(Binary value suppressed)" -msgstr "(Binäre Werte sind unterdrückt)" - -#: src/actions.cpp:705 -msgid "JPEG comment" -msgstr "JPEG-Kommentar" - -#: src/actions.cpp:730 -#, fuzzy -msgid "Preview" -msgstr "Vorschaudaten" - -#: src/actions.cpp:734 src/actions.cpp:1074 src/properties.cpp:426 -msgid "pixels" -msgstr "Pixel" - -#: src/actions.cpp:736 src/actions.cpp:1076 -msgid "bytes" -msgstr "Bytes" - -#: src/actions.cpp:783 -msgid "Neither tag" -msgstr "Keins der Stichwörter" - -#: src/actions.cpp:784 -msgid "nor" -msgstr "noch" - -#: src/actions.cpp:785 -msgid "found in the file" -msgstr "wurde in der Datei gefunden" - -#: src/actions.cpp:790 -msgid "Image file creation timestamp not set in the file" -msgstr "" -"Der Erstellungszeitstempel der Bilddatei ist nicht in der Datei gesetzt." - -#: src/actions.cpp:796 src/actions.cpp:1553 -msgid "Failed to parse timestamp" -msgstr "Der Zeitstempel konnte nicht verarbeitet werden." - -#: src/actions.cpp:797 -msgid "in the file" -msgstr "in der Datei" - -#: src/actions.cpp:808 -msgid "Updating timestamp to" -msgstr "Aktualisiere den Zeitstempel auf" - -#: src/actions.cpp:902 -msgid "Erasing thumbnail data" -msgstr "Die Vorschaudaten werden gelöscht." - -#: src/actions.cpp:910 -msgid "Erasing Exif data from the file" -msgstr "Die Exif-Daten der Datei werden gelöscht." - -#: src/actions.cpp:919 -msgid "Erasing IPTC data from the file" -msgstr "Die IPTC-Daten der Datei werden gelöscht." - -#: src/actions.cpp:928 -msgid "Erasing JPEG comment from the file" -msgstr "Der JPEG-Kommentar der Datei wird gelöscht." - -#: src/actions.cpp:937 -msgid "Erasing XMP data from the file" -msgstr "Die XMP-Daten der Datei werden gelöscht." - -#: src/actions.cpp:1009 -msgid "Image does not contain an Exif thumbnail\n" -msgstr "Das Bild enthält keine Exif-Bildvorschau.\n" - -#: src/actions.cpp:1018 -msgid "Writing thumbnail" -msgstr "Die Vorschau wird geschrieben." - -#: src/actions.cpp:1019 src/actions.cpp:1077 -msgid "to file" -msgstr "in die Datei" - -#: src/actions.cpp:1025 -msgid "Exif data doesn't contain a thumbnail\n" -msgstr "Die Exif-Daten enthalten keine Vorschau.\n" - -#: src/actions.cpp:1055 src/actions.cpp:1081 -msgid "Image does not have preview" -msgstr "" - -#: src/actions.cpp:1070 -msgid "Writing preview" -msgstr "" - -#: src/actions.cpp:1241 -msgid "Setting JPEG comment" -msgstr "Der JPEG-Kommentar wird gesetzt." - -#: src/actions.cpp:1282 -msgid "Add" -msgstr "Hinzufügen" - -#: src/actions.cpp:1304 src/actions.cpp:1378 -msgid "Warning" -msgstr "Warnung" - -#: src/actions.cpp:1305 src/actions.cpp:1379 -msgid "Failed to read" -msgstr "Fehler beim lesen" - -#: src/actions.cpp:1307 src/actions.cpp:1381 -msgid "value" -msgstr "Wert" - -#: src/actions.cpp:1318 -msgid "Set" -msgstr "Setzen" - -#: src/actions.cpp:1390 -msgid "Del" -msgstr "Löschen" - -#: src/actions.cpp:1422 -msgid "Reg " -msgstr "Reg " - -#: src/actions.cpp:1506 -msgid "Timestamp of metadatum with key" -msgstr "Zeitstempel des Metadatums mit Schlüssel" - -#: src/actions.cpp:1507 -msgid "not set\n" -msgstr "nicht gesetzt\n" - -#: src/actions.cpp:1512 -msgid "Adjusting" -msgstr "Justiere" - -#: src/actions.cpp:1512 -msgid "by" -msgstr "durch" - -#: src/actions.cpp:1516 src/actions.cpp:1565 -msgid "years" -msgstr "Jahre" - -#: src/actions.cpp:1519 -msgid "year" -msgstr "Jahr" - -#: src/actions.cpp:1527 -msgid "months" -msgstr "Monate" - -#: src/actions.cpp:1530 -msgid "month" -msgstr "Monat" - -#: src/actions.cpp:1538 -msgid "days" -msgstr "Tage" - -#: src/actions.cpp:1541 -msgid "day" -msgstr "Tag" - -#: src/actions.cpp:1547 -msgid "s" -msgstr "s" - -#: src/actions.cpp:1563 -msgid "Can't adjust timestamp by" -msgstr "Der Zeitstempel konnte nicht verändert werden von" - -#: src/actions.cpp:1572 src/actions.cpp:1844 src/actions.cpp:1852 -#: src/actions.cpp:1860 src/actions.cpp:1869 src/actions.cpp:1979 -msgid "to" -msgstr "nach" - -#: src/actions.cpp:1607 -msgid "Standard Exif ISO tag exists; not modified\n" -msgstr "" -"Es existiert ein Standard-Exif-ISO-Stichwort; dies wird nicht geändert\n" - -#: src/actions.cpp:1615 -msgid "Setting Exif ISO value to" -msgstr "Setze den Exif-ISO Wert auf" - -#: src/actions.cpp:1671 -#, fuzzy -msgid "No Exif user comment found" -msgstr "Exif-Kommentar" - -#: src/actions.cpp:1679 -msgid "Found Exif user comment with unexpected value type" -msgstr "" - -#: src/actions.cpp:1686 -msgid "No Exif UNICODE user comment found" -msgstr "" - -#: src/actions.cpp:1692 -#, fuzzy -msgid "Setting Exif UNICODE user comment to" -msgstr "Setze den Exif-ISO Wert auf" - -#: src/actions.cpp:1843 -msgid "Writing Exif data from" -msgstr "Schreibe die Exif-Daten von" - -#: src/actions.cpp:1851 -msgid "Writing IPTC data from" -msgstr "Schreibe die IPTC-Daten von" - -#: src/actions.cpp:1859 -msgid "Writing XMP data from" -msgstr "Schreibe die XMP-Daten von" - -#: src/actions.cpp:1868 -msgid "Writing JPEG comment from" -msgstr "Schreibe den JPEG-Kommentar von" - -#: src/actions.cpp:1878 -msgid "Could not write metadata to file" -msgstr "Die Metadaten konnten nicht in die Datei geschrieben werden" - -#: src/actions.cpp:1905 -msgid "Filename format yields empty filename for the file" -msgstr "Das Format des Dateinamens führt zu keinem Dateinamen für die Datei" - -#: src/actions.cpp:1914 -msgid "This file already has the correct name" -msgstr "Diese Datei hat schon den richtigen Namen" - -#: src/actions.cpp:1938 src/exiv2.cpp:168 -msgid "File" -msgstr "Datei" - -#: src/actions.cpp:1939 -msgid "exists. [O]verwrite, [r]ename or [s]kip?" -msgstr "existiert [O]überschreiben, [r]umbennenen oder [s]überspringen?" - -#: src/actions.cpp:1967 -msgid "Renaming file to" -msgstr "Die Datei wird umbenannt nach" - -#: src/actions.cpp:1969 -msgid "updating timestamp" -msgstr "aktualisiere Zeitstempel" - -#: src/actions.cpp:1978 -msgid "Failed to rename" -msgstr "Fehler beim umbenennen" - -#: src/actions.cpp:2000 -msgid "Overwrite" -msgstr "Ãœberschreiben" - -#: src/canonmn.cpp:58 src/canonmn.cpp:186 src/canonmn.cpp:245 -#: src/canonmn.cpp:260 src/canonmn.cpp:734 src/canonmn.cpp:747 -#: src/canonmn.cpp:1009 src/canonmn.cpp:1032 src/canonmn.cpp:1041 -#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 -#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 -#: src/minoltamn.cpp:1134 src/minoltamn.cpp:1275 src/minoltamn.cpp:1337 -#: src/minoltamn.cpp:1910 src/minoltamn.cpp:1924 src/minoltamn.cpp:1972 -#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 -#: src/nikonmn.cpp:204 src/nikonmn.cpp:641 src/nikonmn.cpp:666 -#: src/nikonmn.cpp:715 src/nikonmn.cpp:750 src/nikonmn.cpp:836 -#: src/nikonmn.cpp:881 src/nikonmn.cpp:968 src/nikonmn.cpp:1210 -#: src/nikonmn.cpp:1219 src/olympusmn.cpp:59 src/olympusmn.cpp:79 -#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 -#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:586 -#: src/olympusmn.cpp:648 src/olympusmn.cpp:912 src/olympusmn.cpp:1133 -#: src/olympusmn.cpp:1431 src/olympusmn.cpp:1432 src/olympusmn.cpp:1471 -#: src/panasonicmn.cpp:87 src/panasonicmn.cpp:94 src/panasonicmn.cpp:100 -#: src/panasonicmn.cpp:145 src/panasonicmn.cpp:154 src/panasonicmn.cpp:183 -#: src/panasonicmn.cpp:210 src/pentaxmn.cpp:183 src/pentaxmn.cpp:292 -#: src/pentaxmn.cpp:713 src/pentaxmn.cpp:719 src/sonymn.cpp:56 -#: src/sonymn.cpp:87 src/sonymn.cpp:141 src/sonymn.cpp:149 src/sonymn.cpp:156 -#: src/sonymn.cpp:199 src/sonymn.cpp:206 src/sonymn.cpp:237 src/sonymn.cpp:500 -msgid "Off" -msgstr "Aus" - -#: src/canonmn.cpp:59 src/canonmn.cpp:244 src/canonmn.cpp:262 -#: src/canonmn.cpp:735 src/canonmn.cpp:1035 src/fujimn.cpp:57 -#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 -#: src/minoltamn.cpp:1911 src/minoltamn.cpp:1923 src/nikonmn.cpp:63 -#: src/nikonmn.cpp:640 src/nikonmn.cpp:716 src/nikonmn.cpp:717 -#: src/nikonmn.cpp:1220 src/olympusmn.cpp:60 src/olympusmn.cpp:80 -#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 -#: src/olympusmn.cpp:1472 src/panasonicmn.cpp:93 src/pentaxmn.cpp:186 -#: src/pentaxmn.cpp:293 src/pentaxmn.cpp:714 src/sonymn.cpp:157 -#: src/sonymn.cpp:207 src/sonymn.cpp:238 -msgid "On" -msgstr "An" - -#: src/canonmn.cpp:69 -msgid "PowerShot A30" -msgstr "PowerShot A30" - -#: src/canonmn.cpp:70 -msgid "PowerShot S300 / Digital IXUS 300 / IXY Digital 300" -msgstr "PowerShot S300 / Digital IXUS 300 / IXY Digital 300" - -#: src/canonmn.cpp:71 -msgid "PowerShot A20" -msgstr "PowerShot A20" - -#: src/canonmn.cpp:72 -msgid "PowerShot A10" -msgstr "PowerShot A10" - -#: src/canonmn.cpp:73 -msgid "PowerShot S110 / Digital IXUS v / IXY Digital 200" -msgstr "PowerShot S110 / Digital IXUS v / IXY Digital 200" - -#: src/canonmn.cpp:74 -msgid "PowerShot G2" -msgstr "PowerShot G2" - -#: src/canonmn.cpp:75 -msgid "PowerShot S40" -msgstr "PowerShot S40" - -#: src/canonmn.cpp:76 -msgid "PowerShot S30" -msgstr "PowerShot S30" - -#: src/canonmn.cpp:77 -msgid "PowerShot A40" -msgstr "PowerShot A40" - -#: src/canonmn.cpp:78 -msgid "EOS D30" -msgstr "EOS D30" - -#: src/canonmn.cpp:79 -msgid "PowerShot A100" -msgstr "PowerShot A100" - -#: src/canonmn.cpp:80 -msgid "PowerShot S200 / Digital IXUS v2 / IXY Digital 200a" -msgstr "PowerShot S200 / Digital IXUS v2 / IXY Digital 200a" - -#: src/canonmn.cpp:81 -msgid "PowerShot A200" -msgstr "PowerShot A200" - -#: src/canonmn.cpp:82 -msgid "PowerShot S330 / Digital IXUS 330 / IXY Digital 300a" -msgstr "PowerShot S330 / Digital IXUS 330 / IXY Digital 300a" - -#: src/canonmn.cpp:83 -msgid "PowerShot G3" -msgstr "PowerShot G3" - -#: src/canonmn.cpp:84 -msgid "PowerShot S45" -msgstr "PowerShot S45" - -#: src/canonmn.cpp:85 -msgid "PowerShot SD100 / Digital IXUS II / IXY Digital 30" -msgstr "PowerShot SD100 / Digital IXUS II / IXY Digital 30" - -#: src/canonmn.cpp:86 -msgid "PowerShot S230 / Digital IXUS v3 / IXY Digital 320" -msgstr "PowerShot S230 / Digital IXUS v3 / IXY Digital 320" - -#: src/canonmn.cpp:87 -msgid "PowerShot A70" -msgstr "PowerShot A70" - -#: src/canonmn.cpp:88 -msgid "PowerShot A60" -msgstr "PowerShot A60" - -#: src/canonmn.cpp:89 -msgid "PowerShot S400 / Digital IXUS 400 / IXY Digital 400" -msgstr "PowerShot S400 / Digital IXUS 400 / IXY Digital 400" - -#: src/canonmn.cpp:90 -msgid "PowerShot G5" -msgstr "PowerShot G5" - -#: src/canonmn.cpp:91 -msgid "PowerShot A300" -msgstr "PowerShot A300" - -#: src/canonmn.cpp:92 -msgid "PowerShot S50" -msgstr "PowerShot S50" - -#: src/canonmn.cpp:93 -msgid "PowerShot A80" -msgstr "PowerShot A80" - -#: src/canonmn.cpp:94 -msgid "PowerShot SD10 / Digital IXUS i / IXY Digital L" -msgstr "PowerShot SD10 / Digital IXUS i / IXY Digital L" - -#: src/canonmn.cpp:95 -msgid "PowerShot S1 IS" -msgstr "PowerShot S1 IS" - -#: src/canonmn.cpp:96 -msgid "PowerShot Pro1" -msgstr "PowerShot Pro1" - -#: src/canonmn.cpp:97 -msgid "PowerShot S70" -msgstr "PowerShot S70" - -#: src/canonmn.cpp:98 -msgid "PowerShot S60" -msgstr "PowerShot S60" - -#: src/canonmn.cpp:99 -msgid "PowerShot G6" -msgstr "PowerShot G6" - -#: src/canonmn.cpp:100 -msgid "PowerShot S500 / Digital IXUS 500 / IXY Digital 500" -msgstr "PowerShot S500 / Digital IXUS 500 / IXY Digital 500" - -#: src/canonmn.cpp:101 -msgid "PowerShot A75" -msgstr "PowerShot A75" - -#: src/canonmn.cpp:102 -msgid "PowerShot SD110 / Digital IXUS IIs / IXY Digital 30a" -msgstr "PowerShot SD110 / Digital IXUS IIs / IXY Digital 30a" - -#: src/canonmn.cpp:103 -msgid "PowerShot A400" -msgstr "PowerShot A400" - -#: src/canonmn.cpp:104 -msgid "PowerShot A310" -msgstr "PowerShot A310" - -#: src/canonmn.cpp:105 -msgid "PowerShot A85" -msgstr "PowerShot A85" - -#: src/canonmn.cpp:106 -msgid "PowerShot S410 / Digital IXUS 430 / IXY Digital 450" -msgstr "PowerShot S410 / Digital IXUS 430 / IXY Digital 450" - -#: src/canonmn.cpp:107 -msgid "PowerShot A95" -msgstr "PowerShot A95" - -#: src/canonmn.cpp:108 -msgid "PowerShot SD300 / Digital IXUS 40 / IXY Digital 50" -msgstr "PowerShot SD300 / Digital IXUS 40 / IXY Digital 50" - -#: src/canonmn.cpp:109 -msgid "PowerShot SD200 / Digital IXUS 30 / IXY Digital 40" -msgstr "PowerShot SD200 / Digital IXUS 30 / IXY Digital 40" - -#: src/canonmn.cpp:110 -msgid "PowerShot A520" -msgstr "PowerShot A520" - -#: src/canonmn.cpp:111 -msgid "PowerShot A510" -msgstr "PowerShot A510" - -#: src/canonmn.cpp:112 -msgid "PowerShot SD20 / Digital IXUS i5 / IXY Digital L2" -msgstr "PowerShot SD20 / Digital IXUS i5 / IXY Digital L2" - -#: src/canonmn.cpp:113 -msgid "PowerShot S2 IS" -msgstr "PowerShot S2 IS" - -#: src/canonmn.cpp:114 -msgid "PowerShot SD430 / IXUS Wireless / IXY Wireless" -msgstr "PowerShot SD430 / IXUS Wireless / IXY Wireless" - -#: src/canonmn.cpp:115 -msgid "PowerShot SD500 / Digital IXUS 700 / IXY Digital 600" -msgstr "PowerShot SD500 / Digital IXUS 700 / IXY Digital 600" - -#: src/canonmn.cpp:116 -msgid "EOS D60" -msgstr "EOS D60" - -#: src/canonmn.cpp:117 -msgid "PowerShot SD30 / Digital IXUS i zoom / IXY Digital L3" -msgstr "PowerShot SD30 / Digital IXUS i zoom / IXY Digital L3" - -#: src/canonmn.cpp:118 -msgid "PowerShot A430" -msgstr "PowerShot A430" - -#: src/canonmn.cpp:119 -msgid "PowerShot A410" -msgstr "PowerShot A410" - -#: src/canonmn.cpp:120 -msgid "PowerShot S80" -msgstr "PowerShot S80" - -#: src/canonmn.cpp:121 -msgid "PowerShot A620" -msgstr "PowerShot A620" - -#: src/canonmn.cpp:122 -msgid "PowerShot A610" -msgstr "PowerShot A610" - -#: src/canonmn.cpp:123 -msgid "PowerShot SD630 / Digital IXUS 65 / IXY Digital 80" -msgstr "PowerShot SD630 / Digital IXUS 65 / IXY Digital 80" - -#: src/canonmn.cpp:124 -msgid "PowerShot SD450 / Digital IXUS 55 / IXY Digital 60" -msgstr "PowerShot SD450 / Digital IXUS 55 / IXY Digital 60" - -#: src/canonmn.cpp:125 -msgid "PowerShot TX1" -msgstr "PowerShot TX1" - -#: src/canonmn.cpp:126 -msgid "PowerShot SD400 / Digital IXUS 50 / IXY Digital 55" -msgstr "PowerShot SD400 / Digital IXUS 50 / IXY Digital 55" - -#: src/canonmn.cpp:127 -msgid "PowerShot A420" -msgstr "PowerShot A420" - -#: src/canonmn.cpp:128 -msgid "PowerShot SD900 / Digital IXUS 900 Ti / IXY Digital 1000" -msgstr "PowerShot SD900 / Digital IXUS 900 Ti / IXY Digital 1000" - -#: src/canonmn.cpp:129 -msgid "PowerShot SD550 / Digital IXUS 750 / IXY Digital 700" -msgstr "PowerShot SD550 / Digital IXUS 750 / IXY Digital 700" - -#: src/canonmn.cpp:130 -msgid "PowerShot A700" -msgstr "PowerShot A700" - -#: src/canonmn.cpp:131 -msgid "PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS" -msgstr "PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS" - -#: src/canonmn.cpp:132 -msgid "PowerShot S3 IS" -msgstr "PowerShot S3 IS" - -#: src/canonmn.cpp:133 -msgid "PowerShot A540" -msgstr "PowerShot A540" - -#: src/canonmn.cpp:134 -msgid "PowerShot SD600 / Digital IXUS 60 / IXY Digital 70" -msgstr "PowerShot SD600 / Digital IXUS 60 / IXY Digital 70" - -#: src/canonmn.cpp:135 -msgid "PowerShot G7" -msgstr "PowerShot G7" - -#: src/canonmn.cpp:136 -msgid "PowerShot A530" -msgstr "PowerShot A530" - -#: src/canonmn.cpp:137 -msgid "PowerShot SD800 IS / Digital IXUS 850 IS / IXY Digital 900 IS" -msgstr "PowerShot SD800 IS / Digital IXUS 850 IS / IXY Digital 900 IS" - -#: src/canonmn.cpp:138 -msgid "PowerShot SD40 / Digital IXUS i7 / IXY Digital L4" -msgstr "PowerShot SD40 / Digital IXUS i7 / IXY Digital L4" - -#: src/canonmn.cpp:139 -msgid "PowerShot A710 IS" -msgstr "PowerShot A710 IS" - -#: src/canonmn.cpp:140 -msgid "PowerShot A640" -msgstr "PowerShot A640" - -#: src/canonmn.cpp:141 -msgid "PowerShot A630" -msgstr "PowerShot A630" - -#: src/canonmn.cpp:142 -msgid "PowerShot S5 IS" -msgstr "PowerShot S5 IS" - -#: src/canonmn.cpp:143 -msgid "PowerShot A460" -msgstr "PowerShot A460" - -#: src/canonmn.cpp:144 -msgid "PowerShot SD850 IS / Digital IXUS 950 IS" -msgstr "PowerShot SD850 IS / Digital IXUS 950 IS" - -#: src/canonmn.cpp:145 -msgid "PowerShot A570 IS" -msgstr "PowerShot A570 IS" - -#: src/canonmn.cpp:146 -msgid "PowerShot A560" -msgstr "PowerShot A560" - -#: src/canonmn.cpp:147 -msgid "PowerShot SD750 / Digital IXUS 75 / IXY Digital 90" -msgstr "PowerShot SD750 / Digital IXUS 75 / IXY Digital 90" - -#: src/canonmn.cpp:148 -msgid "PowerShot SD1000 / Digital IXUS 70 / IXY Digital 10" -msgstr "PowerShot SD1000 / Digital IXUS 70 / IXY Digital 10" - -#: src/canonmn.cpp:149 -msgid "PowerShot A550" -msgstr "PowerShot A550" - -#: src/canonmn.cpp:150 -msgid "PowerShot A450" -msgstr "PowerShot A450" - -#: src/canonmn.cpp:151 -msgid "PowerShot Pro90 IS" -msgstr "PowerShot Pro90 IS" - -#: src/canonmn.cpp:152 -msgid "PowerShot G1" -msgstr "PowerShot G1" - -#: src/canonmn.cpp:153 -msgid "PowerShot S100 / Digital IXUS / IXY Digital" -msgstr "PowerShot S100 / Digital IXUS / IXY Digital" - -#: src/canonmn.cpp:154 -msgid "HV10" -msgstr "HV10" - -#: src/canonmn.cpp:155 -msgid "iVIS DC50" -msgstr "iVIS DC50" - -#: src/canonmn.cpp:156 -msgid "iVIS HV20" -msgstr "iVIS HV20" - -#: src/canonmn.cpp:157 -msgid "EOS-1D" -msgstr "EOS-1D" - -#: src/canonmn.cpp:158 -msgid "EOS-1DS" -msgstr "EOS-1DS" - -#: src/canonmn.cpp:159 -msgid "EOS 10D" -msgstr "EOS 10D" - -#: src/canonmn.cpp:160 -msgid "EOS-1D Mark III" -msgstr "EOS-1D Mark III" - -#: src/canonmn.cpp:161 -msgid "EOS Digital Rebel / 300D / Kiss Digital" -msgstr "EOS Digital Rebel / 300D / Kiss Digital" - -#: src/canonmn.cpp:162 -msgid "EOS-1D Mark II" -msgstr "EOS-1D Mark II" - -#: src/canonmn.cpp:163 -msgid "EOS 20D" -msgstr "EOS 20D" - -#: src/canonmn.cpp:164 -msgid "EOS-1Ds Mark II" -msgstr "EOS-1Ds Mark II" - -#: src/canonmn.cpp:165 -msgid "EOS Digital Rebel XT / 350D / Kiss Digital N" -msgstr "EOS Digital Rebel XT / 350D / Kiss Digital N" - -#: src/canonmn.cpp:166 -msgid "EOS 5D" -msgstr "EOS 5D" - -#: src/canonmn.cpp:167 -msgid "EOS-1D Mark II N" -msgstr "EOS-1D Mark II N" - -#: src/canonmn.cpp:168 -msgid "EOS 30D" -msgstr "EOS 30D" - -#: src/canonmn.cpp:169 -msgid "EOS Digital Rebel XTi / 400D / Kiss Digital X" -msgstr "EOS Digital Rebel XTi / 400D / Kiss Digital X" - -#: src/canonmn.cpp:170 -#, fuzzy -msgid "EOS 7D" -msgstr "EOS 5D" - -#: src/canonmn.cpp:171 -#, fuzzy -msgid "EOS Rebel T1i / 500D / Kiss X3" -msgstr "EOS Digital Rebel XTi / 400D / Kiss Digital X" - -#: src/canonmn.cpp:172 -#, fuzzy -msgid "EOS Rebel XS / 1000D / Kiss F" -msgstr "EOS Digital Rebel / 300D / Kiss Digital" - -#: src/canonmn.cpp:173 -#, fuzzy -msgid "EOS 50D" -msgstr "EOS 5D" - -#: src/canonmn.cpp:174 -#, fuzzy -msgid "EOS Rebel T2i / 550D / Kiss X4" -msgstr "EOS Digital Rebel XTi / 400D / Kiss Digital X" - -#: src/canonmn.cpp:175 -#, fuzzy -msgid "EOS-1D Mark IV" -msgstr "EOS-1D Mark II" - -#: src/canonmn.cpp:180 -#, fuzzy -msgid "Format 1" -msgstr "Format" - -#: src/canonmn.cpp:181 -#, fuzzy -msgid "Format 2" -msgstr "Format" - -#: src/canonmn.cpp:187 src/nikonmn.cpp:1211 -#, fuzzy -msgid "On (1)" -msgstr "An" - -#: src/canonmn.cpp:188 src/nikonmn.cpp:1212 -#, fuzzy -msgid "On (2)" -msgstr "An" - -#: src/canonmn.cpp:193 src/minoltamn.cpp:1142 src/nikonmn.cpp:136 -#: src/olympusmn.cpp:595 src/olympusmn.cpp:774 src/olympusmn.cpp:839 -#: src/pentaxmn.cpp:548 src/tags.cpp:1452 -msgid "sRGB" -msgstr "sRGB" - -#: src/canonmn.cpp:194 src/canonmn.cpp:1113 src/minoltamn.cpp:359 -#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 -#: src/minoltamn.cpp:1143 src/nikonmn.cpp:137 src/olympusmn.cpp:596 -#: src/olympusmn.cpp:775 src/olympusmn.cpp:840 src/pentaxmn.cpp:549 -#: src/sonymn.cpp:482 src/sonymn.cpp:507 src/tags.cpp:1453 -msgid "Adobe RGB" -msgstr "Adobe RGB" - -#: src/canonmn.cpp:199 src/canonmn.cpp:202 src/canonmn.cpp:227 -#: src/canonmn.cpp:228 src/canonmn.cpp:229 src/canonmn.cpp:781 -#: src/canonmn.cpp:783 src/canonmn.cpp:784 src/canonmn.cpp:796 -#: src/canonmn.cpp:805 src/canonmn.cpp:806 src/canonmn.cpp:813 -#: src/canonmn.cpp:883 src/canonmn.cpp:888 src/canonmn.cpp:890 -#: src/canonmn.cpp:892 src/canonmn.cpp:893 src/canonmn.cpp:894 -#: src/canonmn.cpp:895 src/canonmn.cpp:898 src/canonmn.cpp:899 -#: src/canonmn.cpp:900 src/canonmn.cpp:902 src/canonmn.cpp:906 -#: src/canonmn.cpp:907 src/canonmn.cpp:908 src/fujimn.cpp:214 -#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:238 -#: src/nikonmn.cpp:303 src/nikonmn.cpp:457 src/nikonmn.cpp:478 -#: src/nikonmn.cpp:487 src/nikonmn.cpp:533 src/nikonmn.cpp:585 -#: src/nikonmn.cpp:588 src/nikonmn.cpp:591 src/nikonmn.cpp:1003 -#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1495 src/nikonmn.cpp:2554 -#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 -#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 -#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 -#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 -#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 -#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 -#: src/olympusmn.cpp:1039 src/panasonicmn.cpp:239 src/panasonicmn.cpp:247 -#: src/panasonicmn.cpp:252 src/panasonicmn.cpp:260 src/panasonicmn.cpp:262 -#: src/panasonicmn.cpp:280 src/pentaxmn.cpp:323 src/properties.cpp:809 -#: src/properties.cpp:816 src/sonymn.cpp:293 src/sonymn.cpp:312 -#: src/sonymn.cpp:318 src/sonymn.cpp:321 src/sonymn.cpp:330 src/sonymn.cpp:333 -#: src/sonymn.cpp:336 src/sonymn.cpp:339 src/tags.cpp:1414 src/tags.cpp:1427 -#: src/tags.cpp:1533 src/tags.cpp:2565 src/tags.cpp:2678 -msgid "Unknown" -msgstr "Unbekannt" - -#: src/canonmn.cpp:200 src/olympusmn.cpp:450 src/sonymn.cpp:286 -#: src/sonymn.cpp:287 -msgid "Camera Settings" -msgstr "Kameraeinstellungen" - -#: src/canonmn.cpp:200 -msgid "Various camera settings" -msgstr "Verschiedene Kameraeinstellungen" - -#: src/canonmn.cpp:201 src/minoltamn.cpp:538 src/nikonmn.cpp:1347 -#: src/nikonmn.cpp:1372 src/properties.cpp:564 src/tags.cpp:828 -#: src/tags.cpp:1655 -msgid "Focal Length" -msgstr "Brennweite" - -#: src/canonmn.cpp:203 src/sonymn.cpp:345 -msgid "Shot Info" -msgstr "Aufnahmeinfo" - -#: src/canonmn.cpp:203 -msgid "Shot information" -msgstr "Aufnahmeinformation" - -#: src/canonmn.cpp:204 src/olympusmn.cpp:101 src/olympusmn.cpp:1152 -#: src/sonymn.cpp:124 src/sonymn.cpp:308 src/sonymn.cpp:309 -msgid "Panorama" -msgstr "Panorama" - -#: src/canonmn.cpp:205 src/datasets.cpp:396 src/properties.cpp:761 -msgid "Image Type" -msgstr "Bildtyp" - -#: src/canonmn.cpp:205 -msgid "Image type" -msgstr "Bildtyp" - -#: src/canonmn.cpp:206 src/panasonicmn.cpp:237 -msgid "Firmware Version" -msgstr "Firmware Version" - -#: src/canonmn.cpp:206 src/panasonicmn.cpp:237 -msgid "Firmware version" -msgstr "Firmware Version" - -#: src/canonmn.cpp:207 src/canonmn.cpp:1066 src/nikonmn.cpp:869 -#, fuzzy -msgid "File Number" -msgstr "Blende" - -#: src/canonmn.cpp:207 src/nikonmn.cpp:869 -#, fuzzy -msgid "File number" -msgstr "Dateiname" - -#: src/canonmn.cpp:208 -msgid "Owner Name" -msgstr "Besitzername" - -#: src/canonmn.cpp:209 src/fujimn.cpp:182 src/nikonmn.cpp:550 -#: src/olympusmn.cpp:741 src/pentaxmn.cpp:1120 src/pentaxmn.cpp:1121 -#: src/sigmamn.cpp:56 -msgid "Serial Number" -msgstr "Seriennummer" - -#: src/canonmn.cpp:209 src/sigmamn.cpp:57 -msgid "Camera serial number" -msgstr "Kamera-Seriennummer" - -#: src/canonmn.cpp:210 -#, fuzzy -msgid "Camera Info" -msgstr "Kamerainformation" - -#: src/canonmn.cpp:210 -#, fuzzy -msgid "Camera info" -msgstr "Kamerainformation" - -#: src/canonmn.cpp:211 src/canonmn.cpp:223 -msgid "Custom Functions" -msgstr "Angepasste Funktionen" - -#: src/canonmn.cpp:212 -msgid "ModelID" -msgstr "Modell-ID" - -#: src/canonmn.cpp:212 -msgid "Model ID" -msgstr "Modell-ID" - -#: src/canonmn.cpp:213 src/olympusmn.cpp:219 -msgid "Picture Info" -msgstr "Bild-Info" - -#: src/canonmn.cpp:213 -msgid "Picture info" -msgstr "Bild-Info" - -#: src/canonmn.cpp:214 -#, fuzzy -msgid "Thumbnail Image Valid Area" -msgstr "Vorschaubild" - -#: src/canonmn.cpp:214 -#, fuzzy -msgid "Thumbnail image valid area" -msgstr "Vorschaubild" - -#: src/canonmn.cpp:215 -#, fuzzy -msgid "Serial Number Format" -msgstr "Seriennummer 2" - -#: src/canonmn.cpp:215 -#, fuzzy -msgid "Serial number format" -msgstr "Seriennummer 2" - -#: src/canonmn.cpp:216 src/minoltamn.cpp:2042 src/olympusmn.cpp:110 -#: src/olympusmn.cpp:503 src/pentaxmn.cpp:202 -msgid "Super Macro" -msgstr "Supermakro" - -#: src/canonmn.cpp:216 src/canonmn.cpp:323 src/canonmn.cpp:393 -#: src/olympusmn.cpp:81 -msgid "Super macro" -msgstr "Supermakro" - -#: src/canonmn.cpp:217 src/nikonmn.cpp:567 -#, fuzzy -msgid "AF Info" -msgstr "Autofokus-Information" - -#: src/canonmn.cpp:217 src/nikonmn.cpp:567 -#, fuzzy -msgid "AF info" -msgstr "Autofokus-Information" - -#: src/canonmn.cpp:218 -msgid "Original Decision Data Offset" -msgstr "" - -#: src/canonmn.cpp:218 -msgid "Original decision data offset" -msgstr "" - -#: src/canonmn.cpp:219 -msgid "White Balance Table" -msgstr "Weißabgleichstabelle" - -#: src/canonmn.cpp:219 -msgid "White balance table" -msgstr "Weißabgleichstabelle" - -#: src/canonmn.cpp:220 -#, fuzzy -msgid "LensModel" -msgstr "Linsenmodell" - -#: src/canonmn.cpp:221 src/olympusmn.cpp:742 src/panasonicmn.cpp:250 -msgid "Internal Serial Number" -msgstr "Interne Seriennummer" - -#: src/canonmn.cpp:221 src/olympusmn.cpp:742 -msgid "Internal serial number" -msgstr "Interne Seriennummer" - -#: src/canonmn.cpp:222 -msgid "Dust Removal Data" -msgstr "" - -#: src/canonmn.cpp:222 -msgid "Dust removal data" -msgstr "" - -#: src/canonmn.cpp:223 -#, fuzzy -msgid "Custom functions" -msgstr "Angepasste Funktionen" - -#: src/canonmn.cpp:224 -#, fuzzy -msgid "Processing Info" -msgstr "Verarbeitungssoftware" - -#: src/canonmn.cpp:224 -#, fuzzy -msgid "Processing info" -msgstr "Verarbeitungssoftware" - -#: src/canonmn.cpp:225 -#, fuzzy -msgid "Measured Color" -msgstr "Natürliche Farbe" - -#: src/canonmn.cpp:225 -#, fuzzy -msgid "Measured color" -msgstr "Natürliche Farben" - -#: src/canonmn.cpp:226 -#, fuzzy -msgid "ColorSpace" -msgstr "Farbraum" - -#: src/canonmn.cpp:230 -#, fuzzy -msgid "VRD Offset" -msgstr "Offset" - -#: src/canonmn.cpp:230 -#, fuzzy -msgid "VRD offset" -msgstr "Offset" - -#: src/canonmn.cpp:231 -#, fuzzy -msgid "Sensor Info" -msgstr "Linseninformation" - -#: src/canonmn.cpp:231 -#, fuzzy -msgid "Sensor info" -msgstr "Aufnahmeinfo" - -#: src/canonmn.cpp:232 -#, fuzzy -msgid "Color Data" -msgstr "Farbmatrix" - -#: src/canonmn.cpp:232 -#, fuzzy -msgid "Color data" -msgstr "Meine Farbdaten" - -#: src/canonmn.cpp:234 -msgid "Unknown CanonMakerNote tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Canon" - -#: src/canonmn.cpp:250 src/minoltamn.cpp:78 src/minoltamn.cpp:246 -#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2060 -msgid "Economy" -msgstr "Economy" - -#: src/canonmn.cpp:251 src/canonmn.cpp:349 src/fujimn.cpp:64 src/fujimn.cpp:84 -#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 -#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 -#: src/nikonmn.cpp:207 src/nikonmn.cpp:428 src/olympusmn.cpp:150 -#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1108 -#: src/olympusmn.cpp:1150 src/panasonicmn.cpp:56 src/panasonicmn.cpp:101 -#: src/panasonicmn.cpp:161 src/panasonicmn.cpp:197 src/pentaxmn.cpp:198 -#: src/pentaxmn.cpp:343 src/pentaxmn.cpp:356 src/pentaxmn.cpp:367 -#: src/sonymn.cpp:134 src/sonymn.cpp:216 src/sonymn.cpp:222 src/tags.cpp:1519 -#: src/tags.cpp:1526 -msgid "Normal" -msgstr "Normal" - -#: src/canonmn.cpp:252 src/minoltamn.cpp:76 src/minoltamn.cpp:244 -#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2004 -#: src/minoltamn.cpp:2058 src/sonymn.cpp:135 -msgid "Fine" -msgstr "Fein" - -#: src/canonmn.cpp:253 src/olympusmn.cpp:643 src/pentaxmn.cpp:156 -msgid "RAW" -msgstr "Roh" - -#: src/canonmn.cpp:254 -msgid "Superfine" -msgstr "Superfein" - -#: src/canonmn.cpp:255 -#, fuzzy -msgid "Normal Movie" -msgstr "Normale Verarbeitung" - -#: src/canonmn.cpp:261 src/canonmn.cpp:357 src/canonmn.cpp:385 -#: src/canonmn.cpp:830 src/canonmn.cpp:1036 src/fujimn.cpp:71 -#: src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 -#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 -#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 -#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1119 -#: src/minoltamn.cpp:1182 src/minoltamn.cpp:1235 src/minoltamn.cpp:1976 -#: src/minoltamn.cpp:2043 src/minoltamn.cpp:2092 src/nikonmn.cpp:81 -#: src/nikonmn.cpp:445 src/olympusmn.cpp:94 src/olympusmn.cpp:156 -#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:605 -#: src/olympusmn.cpp:1196 src/olympusmn.cpp:1202 src/olympusmn.cpp:1203 -#: src/panasonicmn.cpp:64 src/panasonicmn.cpp:77 src/pentaxmn.cpp:56 -#: src/pentaxmn.cpp:211 src/pentaxmn.cpp:311 src/sonymn.cpp:57 -#: src/sonymn.cpp:90 src/sonymn.cpp:105 src/sonymn.cpp:163 src/sonymn.cpp:200 -#: src/sonymn.cpp:499 src/sonymn.cpp:516 src/tags.cpp:1403 src/tags.cpp:1488 -#: src/tags.cpp:1495 -msgid "Auto" -msgstr "Automatisch" - -#: src/canonmn.cpp:263 src/olympusmn.cpp:532 -msgid "Red-eye" -msgstr "Rote-Augen" - -#: src/canonmn.cpp:264 -msgid "Slow sync" -msgstr "Langsame Synchronisation" - -#: src/canonmn.cpp:265 -msgid "Auto + red-eye" -msgstr "Auto + Rote-Augen" - -#: src/canonmn.cpp:266 -msgid "On + red-eye" -msgstr "An + Rote-Augen" - -#: src/canonmn.cpp:267 src/canonmn.cpp:268 src/minoltamn.cpp:1339 -#: src/nikonmn.cpp:904 src/olympusmn.cpp:144 -msgid "External" -msgstr "Extern" - -#: src/canonmn.cpp:273 -msgid "Single / timer" -msgstr "Einzel / Timer" - -#: src/canonmn.cpp:274 src/canonmn.cpp:288 src/canonmn.cpp:720 -#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1097 -#: src/minoltamn.cpp:1149 src/nikonmn.cpp:151 src/nikonmn.cpp:162 -#: src/pentaxmn.cpp:534 -msgid "Continuous" -msgstr "Kontinuierlich" - -#: src/canonmn.cpp:275 src/olympusmn.cpp:103 -msgid "Movie" -msgstr "Film" - -#: src/canonmn.cpp:276 -msgid "Continuous, speed priority" -msgstr "Kontinuierlich, Gerschwindigkeit prioritisiert" - -#: src/canonmn.cpp:277 -msgid "Continuous, low" -msgstr "Kontinuierlich, niedrig" - -#: src/canonmn.cpp:278 -msgid "Continuous, high" -msgstr "Kontinuierlich, hoch" - -#: src/canonmn.cpp:283 -msgid "One shot AF" -msgstr "Eine Aufnahme mit Autofokus" - -#: src/canonmn.cpp:284 -msgid "AI servo AF" -msgstr "" - -#: src/canonmn.cpp:285 -#, fuzzy -msgid "AI focus AF" -msgstr "Automatischer Fokus" - -#: src/canonmn.cpp:286 src/canonmn.cpp:289 src/minoltamn.cpp:374 -msgid "Manual focus" -msgstr "Manueller Fokus" - -#: src/canonmn.cpp:287 src/canonmn.cpp:719 src/sonymn.cpp:231 -msgid "Single" -msgstr "Einzel" - -#: src/canonmn.cpp:290 src/canonmn.cpp:291 src/canonmn.cpp:318 -#: src/canonmn.cpp:392 -msgid "Pan focus" -msgstr "Schwenk-Fokus" - -#: src/canonmn.cpp:296 src/canonmn.cpp:1018 src/minoltamn.cpp:666 -#: src/minoltamn.cpp:852 src/sonymn.cpp:534 -msgid "Large" -msgstr "Groß" - -#: src/canonmn.cpp:297 src/canonmn.cpp:762 src/canonmn.cpp:1019 -#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1222 -#: src/sonymn.cpp:535 -msgid "Medium" -msgstr "Mittel" - -#: src/canonmn.cpp:298 src/canonmn.cpp:1020 src/minoltamn.cpp:668 -#: src/minoltamn.cpp:854 src/minoltamn.cpp:1223 src/sonymn.cpp:536 -msgid "Small" -msgstr "Klein" - -#: src/canonmn.cpp:299 src/canonmn.cpp:1021 -msgid "Medium 1" -msgstr "Mittel 1" - -#: src/canonmn.cpp:300 src/canonmn.cpp:1022 -msgid "Medium 2" -msgstr "Mittel 2" - -#: src/canonmn.cpp:301 src/canonmn.cpp:1023 -msgid "Medium 3" -msgstr "Mittel 3" - -#: src/canonmn.cpp:306 -msgid "Full auto" -msgstr "Vollautomatisch" - -#: src/canonmn.cpp:307 src/canonmn.cpp:384 src/canonmn.cpp:708 -#: src/canonmn.cpp:1093 src/fujimn.cpp:110 src/fujimn.cpp:135 -#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 -#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 -#: src/minoltamn.cpp:876 src/minoltamn.cpp:1281 src/nikonmn.cpp:974 -#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 -#: src/panasonicmn.cpp:68 src/panasonicmn.cpp:71 src/panasonicmn.cpp:72 -#: src/panasonicmn.cpp:78 src/panasonicmn.cpp:111 src/pentaxmn.cpp:58 -#: src/pentaxmn.cpp:201 src/pentaxmn.cpp:316 src/pentaxmn.cpp:500 -#: src/pentaxmn.cpp:512 src/sigmamn.cpp:157 src/sonymn.cpp:119 -#: src/sonymn.cpp:164 src/sonymn.cpp:460 src/sonymn.cpp:517 src/tags.cpp:1402 -#: src/tags.cpp:1489 src/tags.cpp:1496 -msgid "Manual" -msgstr "Manuell" - -#: src/canonmn.cpp:308 src/canonmn.cpp:1125 src/fujimn.cpp:117 -#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1887 -#: src/minoltamn.cpp:2039 src/olympusmn.cpp:98 src/pentaxmn.cpp:472 -#: src/pentaxmn.cpp:705 src/sonymn.cpp:478 src/sonymn.cpp:527 -#: src/tags.cpp:1502 -msgid "Landscape" -msgstr "Landschaft" - -#: src/canonmn.cpp:309 -msgid "Fast shutter" -msgstr "Schneller Verschluß" - -#: src/canonmn.cpp:310 -msgid "Slow shutter" -msgstr "Langsamer Verschluß" - -#: src/canonmn.cpp:311 src/minoltamn.cpp:68 src/minoltamn.cpp:951 -#: src/minoltamn.cpp:2036 src/olympusmn.cpp:99 src/pentaxmn.cpp:478 -msgid "Night Scene" -msgstr "Nachtszene" - -#: src/canonmn.cpp:312 -msgid "Gray scale" -msgstr "Grauskalierung" - -#: src/canonmn.cpp:313 src/canonmn.cpp:751 src/canonmn.cpp:1058 -#: src/minoltamn.cpp:61 src/nikonmn.cpp:190 src/nikonmn.cpp:677 -#: src/olympusmn.cpp:615 src/olympusmn.cpp:632 src/olympusmn.cpp:856 -#: src/olympusmn.cpp:871 src/panasonicmn.cpp:149 src/sonymn.cpp:488 -msgid "Sepia" -msgstr "Sepia" - -#: src/canonmn.cpp:314 src/canonmn.cpp:1111 src/canonmn.cpp:1124 -#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 -#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1886 -#: src/minoltamn.cpp:2034 src/olympusmn.cpp:96 src/olympusmn.cpp:613 -#: src/panasonicmn.cpp:102 src/pentaxmn.cpp:471 src/pentaxmn.cpp:704 -#: src/sonymn.cpp:106 src/sonymn.cpp:477 src/sonymn.cpp:523 src/tags.cpp:1503 -msgid "Portrait" -msgstr "Portrait" - -#: src/canonmn.cpp:315 src/fujimn.cpp:118 src/minoltamn.cpp:843 -#: src/minoltamn.cpp:2038 src/panasonicmn.cpp:104 src/sonymn.cpp:524 -msgid "Sports" -msgstr "Sport" - -#: src/canonmn.cpp:316 -msgid "Macro / close-up" -msgstr "Makro/Großaufnahme" - -#: src/canonmn.cpp:317 src/fujimn.cpp:149 -msgid "Black & white" -msgstr "Schwarz/Weiß" - -#: src/canonmn.cpp:319 src/canonmn.cpp:748 src/olympusmn.cpp:134 -#: src/olympusmn.cpp:610 src/olympusmn.cpp:852 src/panasonicmn.cpp:199 -#: src/sonymn.cpp:476 src/sonymn.cpp:506 -msgid "Vivid" -msgstr "Vivid" - -#: src/canonmn.cpp:320 src/canonmn.cpp:749 src/canonmn.cpp:1126 -#: src/minoltamn.cpp:1892 src/minoltamn.cpp:1893 src/olympusmn.cpp:621 -#: src/olympusmn.cpp:631 src/olympusmn.cpp:861 src/olympusmn.cpp:870 -#: src/sonymn.cpp:483 src/sonymn.cpp:508 -msgid "Neutral" -msgstr "Neutral" - -#: src/canonmn.cpp:321 -msgid "Flash off" -msgstr "Blitz aus" - -#: src/canonmn.cpp:322 -msgid "Long shutter" -msgstr "Langsamer Verschluß" - -#: src/canonmn.cpp:324 -msgid "Foliage" -msgstr "Blätter" - -#: src/canonmn.cpp:325 src/olympusmn.cpp:106 -msgid "Indoor" -msgstr "Innen" - -#: src/canonmn.cpp:326 src/fujimn.cpp:131 src/olympusmn.cpp:107 -#: src/panasonicmn.cpp:116 src/sonymn.cpp:117 -msgid "Fireworks" -msgstr "Feuerwerk" - -#: src/canonmn.cpp:327 src/fujimn.cpp:129 src/olympusmn.cpp:129 -#: src/panasonicmn.cpp:128 src/sonymn.cpp:107 -msgid "Beach" -msgstr "Strand" - -#: src/canonmn.cpp:328 src/canonmn.cpp:846 src/fujimn.cpp:132 -#: src/panasonicmn.cpp:127 src/sonymn.cpp:122 -msgid "Underwater" -msgstr "Unterwasser" - -#: src/canonmn.cpp:329 src/fujimn.cpp:130 src/olympusmn.cpp:130 -#: src/panasonicmn.cpp:118 src/sonymn.cpp:108 -msgid "Snow" -msgstr "Schnee" - -#: src/canonmn.cpp:330 -msgid "Kids & pets" -msgstr "Kinder & Tiere" - -#: src/canonmn.cpp:331 -msgid "Night SnapShot" -msgstr "Nachtaufnahme" - -#: src/canonmn.cpp:332 -msgid "Digital macro" -msgstr "Digitales Makro" - -#: src/canonmn.cpp:333 -msgid "My Colors" -msgstr "Meine Farben" - -#: src/canonmn.cpp:334 src/minoltamn.cpp:343 -msgid "Still image" -msgstr "Standbild" - -#: src/canonmn.cpp:342 src/canonmn.cpp:343 src/properties.cpp:859 -#: src/properties.cpp:881 src/tags.cpp:1421 src/tags.cpp:1422 -msgid "Other" -msgstr "Andere" - -#: src/canonmn.cpp:348 src/canonmn.cpp:763 src/canonmn.cpp:1101 -#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1164 -#: src/minoltamn.cpp:1170 src/minoltamn.cpp:1176 src/minoltamn.cpp:1345 -#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:206 -#: src/olympusmn.cpp:171 src/olympusmn.cpp:1134 src/panasonicmn.cpp:162 -#: src/panasonicmn.cpp:166 src/pentaxmn.cpp:342 src/pentaxmn.cpp:355 -#: src/sonymn.cpp:214 src/tags.cpp:1527 -msgid "Low" -msgstr "Niedrig" - -#: src/canonmn.cpp:350 src/canonmn.cpp:1103 src/fujimn.cpp:85 -#: src/fujimn.cpp:94 src/minoltamn.cpp:1165 src/minoltamn.cpp:1171 -#: src/minoltamn.cpp:1177 src/nikonmn.cpp:71 src/nikonmn.cpp:79 -#: src/nikonmn.cpp:208 src/olympusmn.cpp:169 src/olympusmn.cpp:1136 -#: src/panasonicmn.cpp:55 src/panasonicmn.cpp:163 src/panasonicmn.cpp:168 -#: src/panasonicmn.cpp:169 src/pentaxmn.cpp:344 src/pentaxmn.cpp:357 -#: src/sonymn.cpp:217 src/tags.cpp:1528 -msgid "High" -msgstr "Hoch" - -#: src/canonmn.cpp:355 src/canonmn.cpp:760 src/canonmn.cpp:764 -#: src/canonmn.cpp:769 src/canonmn.cpp:1099 src/nikonmn.cpp:671 -#: src/nikonmn.cpp:686 src/nikonmn.cpp:910 src/nikonmn.cpp:963 -#: src/nikonmn.cpp:1218 src/olympusmn.cpp:620 src/olympusmn.cpp:630 -#: src/sonymn.cpp:129 src/sonymn.cpp:136 src/sonymn.cpp:144 src/sonymn.cpp:181 -#: src/sonymn.cpp:194 src/sonymn.cpp:201 src/sonymn.cpp:209 src/sonymn.cpp:215 -#: src/sonymn.cpp:226 src/sonymn.cpp:232 src/sonymn.cpp:239 -msgid "n/a" -msgstr "n/v" - -#: src/canonmn.cpp:356 -msgid "Auto High" -msgstr "Automatisch Hoch" - -#: src/canonmn.cpp:374 src/sonymn.cpp:186 -msgid "Default" -msgstr "Standard" - -#: src/canonmn.cpp:375 src/minoltamn.cpp:265 src/minoltamn.cpp:883 -#: src/minoltamn.cpp:933 src/minoltamn.cpp:1129 src/minoltamn.cpp:1938 -#: src/olympusmn.cpp:492 src/panasonicmn.cpp:110 src/pentaxmn.cpp:306 -#: src/sonymn.cpp:470 src/tags.cpp:1417 -msgid "Spot" -msgstr "Punkt" - -#: src/canonmn.cpp:376 src/sigmamn.cpp:168 src/tags.cpp:1415 -msgid "Average" -msgstr "Durchschnitt" - -#: src/canonmn.cpp:377 -msgid "Evaluative" -msgstr "Bewertend" - -#: src/canonmn.cpp:378 src/tags.cpp:1420 -msgid "Partial" -msgstr "Partiell" - -#: src/canonmn.cpp:379 src/minoltamn.cpp:882 -msgid "Center weighted" -msgstr "Zentriert gewichtet" - -#: src/canonmn.cpp:386 -msgid "Not known" -msgstr "Unbekannt" - -#: src/canonmn.cpp:387 src/canonmn.cpp:776 src/fujimn.cpp:207 -#: src/minoltamn.cpp:847 src/minoltamn.cpp:2041 src/olympusmn.cpp:109 -#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:109 -#: src/panasonicmn.cpp:213 src/panasonicmn.cpp:214 src/panasonicmn.cpp:243 -#: src/pentaxmn.cpp:199 src/pentaxmn.cpp:473 src/sonymn.cpp:390 -#: src/sonymn.cpp:391 src/sonymn.cpp:528 src/tags.cpp:1534 -msgid "Macro" -msgstr "Macro" - -#: src/canonmn.cpp:388 -msgid "Very close" -msgstr "Sehr nahe Aufnahme" - -#: src/canonmn.cpp:389 -msgid "Close" -msgstr "Nahaufnahme" - -#: src/canonmn.cpp:390 -msgid "Middle range" -msgstr "Mittlere Entfernung" - -#: src/canonmn.cpp:391 -msgid "Far range" -msgstr "Weite Entfernung" - -#: src/canonmn.cpp:394 src/pentaxmn.cpp:200 src/tags.cpp:2568 -msgid "Infinity" -msgstr "Unendlich" - -#: src/canonmn.cpp:399 -msgid "Manual AF point selection" -msgstr "Manuelle Auswahl des Autofokus-Punktes" - -#: src/canonmn.cpp:400 -msgid "None (MF)" -msgstr "Keine (Manueller Fokus)" - -#: src/canonmn.cpp:401 -msgid "Auto-selected" -msgstr "Automatische Erfassung" - -#: src/canonmn.cpp:402 src/minoltamn.cpp:287 src/minoltamn.cpp:706 -#: src/minoltamn.cpp:921 src/minoltamn.cpp:1953 src/nikonmn.cpp:103 -#: src/olympusmn.cpp:1491 src/pentaxmn.cpp:222 src/pentaxmn.cpp:237 -msgid "Right" -msgstr "Rechts" - -#: src/canonmn.cpp:403 src/canonmn.cpp:741 src/minoltamn.cpp:284 -#: src/minoltamn.cpp:703 src/minoltamn.cpp:1950 src/nikonmn.cpp:99 -#: src/nikonmn.cpp:792 src/nikonmn.cpp:807 src/pentaxmn.cpp:220 -#: src/pentaxmn.cpp:236 src/sigmamn.cpp:169 -msgid "Center" -msgstr "Zentriert" - -#: src/canonmn.cpp:404 src/minoltamn.cpp:291 src/minoltamn.cpp:710 -#: src/minoltamn.cpp:925 src/minoltamn.cpp:1957 src/nikonmn.cpp:102 -#: src/pentaxmn.cpp:218 src/pentaxmn.cpp:235 -msgid "Left" -msgstr "Links" - -#: src/canonmn.cpp:405 -msgid "Auto AF point selection" -msgstr "Autofokus-Punktauswahl" - -#: src/canonmn.cpp:410 -msgid "Easy shooting (Auto)" -msgstr "Einfach Aufnahme (Auto)" - -#: src/canonmn.cpp:411 -msgid "Program (P)" -msgstr "Programm (P)" - -#: src/canonmn.cpp:412 -msgid "Shutter priority (Tv)" -msgstr "Verschlußpriorität (Tv)" - -#: src/canonmn.cpp:413 -msgid "Aperture priority (Av)" -msgstr "Blendenpriorität (Av)" - -#: src/canonmn.cpp:414 -msgid "Manual (M)" -msgstr "Manuell (M)" - -#: src/canonmn.cpp:415 -msgid "A-DEP" -msgstr "A-DEP" - -#: src/canonmn.cpp:416 -msgid "M-DEP" -msgstr "M-DEP" - -#: src/canonmn.cpp:700 src/minoltamn.cpp:297 src/nikonmn.cpp:142 -msgid "Did not fire" -msgstr "Blitz löste nicht aus" - -#: src/canonmn.cpp:701 src/minoltamn.cpp:298 src/nikonmn.cpp:981 -#: src/tags.cpp:365 -msgid "Fired" -msgstr "Blitz ausgelöst" - -#: src/canonmn.cpp:706 src/olympusmn.cpp:1009 -msgid "External flash" -msgstr "Externer Blitz" - -#: src/canonmn.cpp:707 src/olympusmn.cpp:1013 -msgid "Internal flash" -msgstr "Eingebauter Blitz" - -#: src/canonmn.cpp:709 src/olympusmn.cpp:558 src/sonymn.cpp:494 -msgid "TTL" -msgstr "TTL" - -#: src/canonmn.cpp:710 -msgid "A-TTL" -msgstr "A-TTL" - -#: src/canonmn.cpp:711 -msgid "E-TTL" -msgstr "E-TTL" - -#: src/canonmn.cpp:712 -msgid "FP sync enabled" -msgstr "" - -#: src/canonmn.cpp:713 -msgid "2nd-curtain sync used" -msgstr "" - -#: src/canonmn.cpp:714 -#, fuzzy -msgid "FP sync used" -msgstr "Benutzter Autofokus-Punkt" - -#: src/canonmn.cpp:725 -msgid "Normal AE" -msgstr "Normale automatische Belichtung" - -#: src/canonmn.cpp:726 src/minoltamn.cpp:527 src/minoltamn.cpp:769 -#: src/minoltamn.cpp:1045 src/pentaxmn.cpp:919 src/pentaxmn.cpp:920 -msgid "Exposure compensation" -msgstr "Belichtungskompensation" - -#: src/canonmn.cpp:727 src/minoltamn.cpp:1575 src/pentaxmn.cpp:1021 -#: src/pentaxmn.cpp:1022 -msgid "AE lock" -msgstr "Automatische Belichtungssperre" - -#: src/canonmn.cpp:728 -msgid "AE lock + exposure compensation" -msgstr "Automatische Belichtungssperre + Belichtungskompensation" - -#: src/canonmn.cpp:729 -msgid "No AE" -msgstr "Keine automatische Belichtung" - -#: src/canonmn.cpp:736 -msgid "On, shot only" -msgstr "An, nur Aufnahme" - -#: src/canonmn.cpp:742 src/canonmn.cpp:794 src/nikonmn.cpp:823 -#: src/olympusmn.cpp:1008 -msgid "AF Point" -msgstr "Autofokus-Punkt" - -#: src/canonmn.cpp:750 -msgid "Smooth" -msgstr "Glatt" - -#: src/canonmn.cpp:752 src/nikonmn.cpp:676 -msgid "B&W" -msgstr "S&W" - -#: src/canonmn.cpp:753 src/canonmn.cpp:836 src/canonmn.cpp:1094 -#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 -#: src/minoltamn.cpp:1184 src/minoltamn.cpp:1187 src/minoltamn.cpp:2100 -#: src/pentaxmn.cpp:723 -msgid "Custom" -msgstr "Benutzerdefiniert" - -#: src/canonmn.cpp:754 src/canonmn.cpp:755 -msgid "My color data" -msgstr "Meine Farbdaten" - -#: src/canonmn.cpp:761 src/pentaxmn.cpp:163 -msgid "Full" -msgstr "Vollbild" - -#: src/canonmn.cpp:770 -msgid "sRAW1 (mRAW)" -msgstr "" - -#: src/canonmn.cpp:771 -msgid "sRAW2 (sRAW)" -msgstr "" - -#: src/canonmn.cpp:777 -msgid "Selftimer" -msgstr "Selbstauslöser" - -#: src/canonmn.cpp:777 src/panasonicmn.cpp:259 -msgid "Self timer" -msgstr "Selbstauslöser" - -#: src/canonmn.cpp:778 src/fujimn.cpp:186 src/minoltamn.cpp:1484 -#: src/minoltamn.cpp:1485 src/nikonmn.cpp:222 src/nikonmn.cpp:459 -#: src/nikonmn.cpp:527 src/olympusmn.cpp:198 src/panasonicmn.cpp:236 -#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:647 -#: src/sonymn.cpp:648 -msgid "Quality" -msgstr "Qualität" - -#: src/canonmn.cpp:779 src/fujimn.cpp:201 src/minoltamn.cpp:493 -#: src/minoltamn.cpp:762 src/nikonmn.cpp:566 src/olympusmn.cpp:279 -#: src/olympusmn.cpp:670 -msgid "Flash Mode" -msgstr "Blitzmodus" - -#: src/canonmn.cpp:779 -msgid "Flash mode setting" -msgstr "Blitzmodus-Einstellungen" - -#: src/canonmn.cpp:780 src/minoltamn.cpp:505 src/minoltamn.cpp:1427 -#: src/olympusmn.cpp:700 src/sigmamn.cpp:59 src/sonymn.cpp:559 -#: src/sonymn.cpp:560 -msgid "Drive Mode" -msgstr "Antriebsmodus" - -#: src/canonmn.cpp:780 -msgid "Drive mode setting" -msgstr "Antriebsmodus-Einstellungen" - -#: src/canonmn.cpp:782 src/fujimn.cpp:210 src/minoltamn.cpp:622 -#: src/minoltamn.cpp:753 src/minoltamn.cpp:1035 src/minoltamn.cpp:1379 -#: src/nikonmn.cpp:474 src/olympusmn.cpp:300 src/olympusmn.cpp:664 -#: src/panasonicmn.cpp:240 src/sonymn.cpp:396 src/sonymn.cpp:397 -#: src/sonymn.cpp:566 src/sonymn.cpp:567 src/sonymn.cpp:672 src/sonymn.cpp:673 -msgid "Focus Mode" -msgstr "Fokusmodus" - -#: src/canonmn.cpp:782 -msgid "Focus mode setting" -msgstr "Fokusmodus-Einstellung" - -#: src/canonmn.cpp:785 src/minoltamn.cpp:499 src/minoltamn.cpp:744 -#: src/minoltamn.cpp:987 -msgid "Image Size" -msgstr "Bildgrõße" - -#: src/canonmn.cpp:786 -msgid "Easy Mode" -msgstr "Einfacher Modus" - -#: src/canonmn.cpp:786 -msgid "Easy shooting mode" -msgstr "Einfacher Aufnahmemodus" - -#: src/canonmn.cpp:787 src/minoltamn.cpp:523 src/nikonmn.cpp:255 -#: src/nikonmn.cpp:480 src/nikonmn.cpp:565 src/olympusmn.cpp:207 -msgid "Digital Zoom" -msgstr "Digitaler Zoom" - -#: src/canonmn.cpp:787 src/minoltamn.cpp:524 src/pentaxmn.cpp:944 -#: src/pentaxmn.cpp:945 -msgid "Digital zoom" -msgstr "Digitaler Zoom" - -#: src/canonmn.cpp:788 src/minoltamn.cpp:386 src/minoltamn.cpp:574 -#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 -#: src/minoltamn.cpp:1017 src/minoltamn.cpp:1018 src/minoltamn.cpp:1415 -#: src/minoltamn.cpp:1416 src/nikonmn.cpp:697 src/olympusmn.cpp:390 -#: src/olympusmn.cpp:800 src/panasonicmn.cpp:257 src/panasonicmn.cpp:268 -#: src/pentaxmn.cpp:850 src/pentaxmn.cpp:950 src/pentaxmn.cpp:951 -#: src/properties.cpp:443 src/properties.cpp:589 src/sigmamn.cpp:89 -#: src/sigmamn.cpp:90 src/sonymn.cpp:324 src/sonymn.cpp:593 src/sonymn.cpp:594 -#: src/sonymn.cpp:699 src/sonymn.cpp:700 src/tags.cpp:1807 -msgid "Contrast" -msgstr "Kontrast" - -#: src/canonmn.cpp:788 src/fujimn.cpp:199 src/olympusmn.cpp:391 -#: src/olympusmn.cpp:681 src/olympusmn.cpp:1080 src/panasonicmn.cpp:257 -msgid "Contrast setting" -msgstr "Kontrasteinstellungen" - -#: src/canonmn.cpp:789 src/minoltamn.cpp:387 src/minoltamn.cpp:571 -#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 -#: src/minoltamn.cpp:1020 src/minoltamn.cpp:1021 src/minoltamn.cpp:1418 -#: src/minoltamn.cpp:1419 src/nikonmn.cpp:578 src/nikonmn.cpp:597 -#: src/nikonmn.cpp:699 src/olympusmn.cpp:799 src/olympusmn.cpp:898 -#: src/panasonicmn.cpp:271 src/pentaxmn.cpp:844 src/pentaxmn.cpp:947 -#: src/pentaxmn.cpp:948 src/properties.cpp:461 src/properties.cpp:590 -#: src/sigmamn.cpp:98 src/sigmamn.cpp:99 src/sonymn.cpp:327 src/sonymn.cpp:596 -#: src/sonymn.cpp:597 src/sonymn.cpp:702 src/sonymn.cpp:703 src/tags.cpp:1811 -msgid "Saturation" -msgstr "Sättigung" - -#: src/canonmn.cpp:789 src/olympusmn.cpp:1078 -msgid "Saturation setting" -msgstr "Sättigungseinstellung" - -#: src/canonmn.cpp:790 src/canonmn.cpp:1134 src/fujimn.cpp:189 -#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 -#: src/minoltamn.cpp:775 src/minoltamn.cpp:1014 src/minoltamn.cpp:1015 -#: src/minoltamn.cpp:1412 src/minoltamn.cpp:1413 src/nikonmn.cpp:696 -#: src/olympusmn.cpp:801 src/panasonicmn.cpp:272 src/pentaxmn.cpp:847 -#: src/pentaxmn.cpp:953 src/pentaxmn.cpp:954 src/properties.cpp:464 -#: src/properties.cpp:591 src/sigmamn.cpp:101 src/sigmamn.cpp:102 -#: src/sonymn.cpp:590 src/sonymn.cpp:591 src/sonymn.cpp:696 src/sonymn.cpp:697 -#: src/tags.cpp:1815 -msgid "Sharpness" -msgstr "Schärfe" - -#: src/canonmn.cpp:790 src/fujimn.cpp:190 src/olympusmn.cpp:682 -#: src/olympusmn.cpp:1081 -msgid "Sharpness setting" -msgstr "Schärfeneinstellung" - -#: src/canonmn.cpp:791 src/minoltamn.cpp:765 src/minoltamn.cpp:1008 -msgid "ISO Speed Mode" -msgstr "ISO Geschwindigkeitsangabe" - -#: src/canonmn.cpp:791 src/minoltamn.cpp:766 src/minoltamn.cpp:1009 -#: src/nikonmn.cpp:217 src/nikonmn.cpp:469 src/nikonmn.cpp:525 -#: src/panasonicmn.cpp:344 -msgid "ISO speed setting" -msgstr "ISO Geschwindigkeitseinstellung" - -#: src/canonmn.cpp:792 src/minoltamn.cpp:508 src/minoltamn.cpp:1005 -#: src/minoltamn.cpp:1394 src/olympusmn.cpp:661 src/properties.cpp:561 -#: src/sigmamn.cpp:77 src/sonymn.cpp:575 src/sonymn.cpp:576 src/sonymn.cpp:681 -#: src/sonymn.cpp:682 src/tags.cpp:825 src/tags.cpp:1646 -msgid "Metering Mode" -msgstr "Belichtungsmessungsmodus" - -#: src/canonmn.cpp:792 -msgid "Metering mode setting" -msgstr "Belichtungsmessungsmodus-Einstellungen" - -#: src/canonmn.cpp:793 -msgid "Focus Type" -msgstr "Fokustyp" - -#: src/canonmn.cpp:793 -msgid "Focus type setting" -msgstr "Fokustypeinstellung" - -#: src/canonmn.cpp:794 -msgid "AF point selected" -msgstr "Ausgewählter Autofokus-Punkt" - -#: src/canonmn.cpp:795 src/properties.cpp:550 src/sonymn.cpp:632 -#: src/sonymn.cpp:633 src/sonymn.cpp:708 src/sonymn.cpp:709 src/tags.cpp:799 -#: src/tags.cpp:1548 -msgid "Exposure Program" -msgstr "Belichtungsprogramm" - -#: src/canonmn.cpp:795 -msgid "Exposure mode setting" -msgstr "Belichtungseinstellung" - -#: src/canonmn.cpp:797 src/nikonmn.cpp:562 src/olympusmn.cpp:745 -#: src/panasonicmn.cpp:276 -msgid "Lens Type" -msgstr "Linsentyp" - -#: src/canonmn.cpp:797 src/nikonmn.cpp:562 src/olympusmn.cpp:745 -#: src/panasonicmn.cpp:276 src/pentaxmn.cpp:1008 src/pentaxmn.cpp:1009 -msgid "Lens type" -msgstr "Linsentyp" - -#: src/canonmn.cpp:798 src/nikonmn.cpp:563 src/properties.cpp:633 -msgid "Lens" -msgstr "Linse" - -#: src/canonmn.cpp:798 -msgid "" -"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " -"per mm" -msgstr "" -"Brennweite der Linse, 'lang' und 'kurz', in Brennweiteneinheiten und " -"Brennweiteeinheit in mm" - -#: src/canonmn.cpp:799 -msgid "Short Focal" -msgstr "" - -#: src/canonmn.cpp:799 -#, fuzzy -msgid "Short focal" -msgstr "Punktfokus" - -#: src/canonmn.cpp:800 -#, fuzzy -msgid "Focal Units" -msgstr "Brennweite" - -#: src/canonmn.cpp:800 -#, fuzzy -msgid "Focal units" -msgstr "Brennweite" - -#: src/canonmn.cpp:801 src/minoltamn.cpp:553 -msgid "Max Aperture" -msgstr "Maximale Blende" - -#: src/canonmn.cpp:801 src/minoltamn.cpp:554 -msgid "Max aperture" -msgstr "Maximale Blende" - -#: src/canonmn.cpp:802 -msgid "Min Aperture" -msgstr "Minimale Blende" - -#: src/canonmn.cpp:802 -msgid "Min aperture" -msgstr "Minimale Blende" - -#: src/canonmn.cpp:803 -msgid "Flash Activity" -msgstr "Blitzaktivität" - -#: src/canonmn.cpp:803 -msgid "Flash activity" -msgstr "Blitzaktivität" - -#: src/canonmn.cpp:804 -msgid "Flash Details" -msgstr "Blitzdetails" - -#: src/canonmn.cpp:804 -msgid "Flash details" -msgstr "Blitzdetails" - -#: src/canonmn.cpp:807 -msgid "Focus Continuous" -msgstr "Kontinuierlicher Fokus" - -#: src/canonmn.cpp:807 -msgid "Focus continuous setting" -msgstr "Einstellung des kontinuierlichen Fokus" - -#: src/canonmn.cpp:808 -msgid "AESetting" -msgstr "Automatische Belichtung-Einstellungen" - -#: src/canonmn.cpp:808 -msgid "AE setting" -msgstr "Automatische Belichtung-Einstellungen" - -#: src/canonmn.cpp:809 src/minoltamn.cpp:147 src/minoltamn.cpp:814 -#: src/minoltamn.cpp:1071 src/minoltamn.cpp:1562 src/nikonmn.cpp:599 -#: src/olympusmn.cpp:703 src/olympusmn.cpp:1016 src/panasonicmn.cpp:242 -#: src/sonymn.cpp:372 src/sonymn.cpp:635 src/sonymn.cpp:636 -msgid "Image Stabilization" -msgstr "Bildstabilisierung" - -#: src/canonmn.cpp:809 src/minoltamn.cpp:148 src/minoltamn.cpp:815 -#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1563 src/nikonmn.cpp:599 -#: src/olympusmn.cpp:703 src/olympusmn.cpp:1016 src/panasonicmn.cpp:242 -#: src/sonymn.cpp:373 -msgid "Image stabilization" -msgstr "Bildstabilisierung" - -#: src/canonmn.cpp:810 -msgid "Display Aperture" -msgstr "Blende anzeigen" - -#: src/canonmn.cpp:810 -msgid "Display aperture" -msgstr "Blende anzeigen" - -#: src/canonmn.cpp:811 -msgid "Zoom Source Width" -msgstr "Quellweite zoomen" - -#: src/canonmn.cpp:811 -msgid "Zoom source width" -msgstr "Quellweite zoomen" - -#: src/canonmn.cpp:812 -msgid "Zoom Target Width" -msgstr "Zielweite zoomen" - -#: src/canonmn.cpp:812 -msgid "Zoom target width" -msgstr "Zielweite zoomen" - -#: src/canonmn.cpp:814 -#, fuzzy -msgid "Spot Metering Mode" -msgstr "Belichtungsmessungsmodus" - -#: src/canonmn.cpp:814 -#, fuzzy -msgid "Spot metering mode" -msgstr "Der Messmodus." - -#: src/canonmn.cpp:815 -msgid "Photo Effect" -msgstr "Fotoeffekt" - -#: src/canonmn.cpp:815 -msgid "Photo effect" -msgstr "Fotoeffekt" - -#: src/canonmn.cpp:816 -#, fuzzy -msgid "Manual Flash Output" -msgstr "Manuell ausgelöst" - -#: src/canonmn.cpp:816 -#, fuzzy -msgid "Manual flash output" -msgstr "Manuell ausgelöst" - -#: src/canonmn.cpp:817 -msgid "Color Tone" -msgstr "Farbton" - -#: src/canonmn.cpp:817 -msgid "Color tone" -msgstr "Farbton" - -#: src/canonmn.cpp:818 -msgid "SRAW Quality Tone" -msgstr "" - -#: src/canonmn.cpp:818 -#, fuzzy -msgid "SRAW quality" -msgstr "Bildqualität" - -#: src/canonmn.cpp:820 -msgid "Unknown Canon Camera Settings 1 tag" -msgstr "Unbekanntes Feld in den Canon-Kameraeinstellungen 1" - -#: src/canonmn.cpp:831 -msgid "Sunny" -msgstr "Sonnig" - -#: src/canonmn.cpp:832 src/fujimn.cpp:73 src/minoltamn.cpp:220 -#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1194 -#: src/minoltamn.cpp:2095 src/nikonmn.cpp:450 src/olympusmn.cpp:1041 -#: src/panasonicmn.cpp:66 src/pentaxmn.cpp:321 src/sonymn.cpp:166 -msgid "Cloudy" -msgstr "Wolkiges Wetter" - -#: src/canonmn.cpp:833 src/minoltamn.cpp:221 src/minoltamn.cpp:686 -#: src/minoltamn.cpp:872 src/minoltamn.cpp:1196 src/minoltamn.cpp:2097 -#: src/pentaxmn.cpp:315 -msgid "Tungsten" -msgstr "Wolframlicht" - -#: src/canonmn.cpp:834 src/minoltamn.cpp:223 src/minoltamn.cpp:687 -#: src/minoltamn.cpp:873 src/minoltamn.cpp:1197 src/minoltamn.cpp:2099 -#: src/nikonmn.cpp:449 src/pentaxmn.cpp:314 src/tags.cpp:1429 -msgid "Fluorescent" -msgstr "Leuchtstoffröhre" - -#: src/canonmn.cpp:837 src/minoltamn.cpp:57 src/minoltamn.cpp:1890 -#: src/sonymn.cpp:481 -msgid "Black & White" -msgstr "Schwarz/Weiß" - -#: src/canonmn.cpp:838 src/minoltamn.cpp:684 src/minoltamn.cpp:871 -#: src/minoltamn.cpp:1195 src/minoltamn.cpp:2096 src/olympusmn.cpp:1040 -#: src/pentaxmn.cpp:313 src/tags.cpp:1434 -msgid "Shade" -msgstr "Schatten" - -#: src/canonmn.cpp:839 -msgid "Manual Temperature (Kelvin)" -msgstr "Manuelle Temperatur (Kelvin)" - -#: src/canonmn.cpp:840 -msgid "PC Set 1" -msgstr "PC Satz 1" - -#: src/canonmn.cpp:841 -msgid "PC Set 2" -msgstr "PC Satz 2" - -#: src/canonmn.cpp:842 -msgid "PC Set 3" -msgstr "PC Satz 3" - -#: src/canonmn.cpp:843 -msgid "Daylight Fluorescent" -msgstr "Flursozierendes Tageslicht" - -#: src/canonmn.cpp:844 src/properties.cpp:791 -msgid "Custom 1" -msgstr "Benutzerdefiniert 1" - -#: src/canonmn.cpp:845 src/minoltamn.cpp:225 src/properties.cpp:792 -msgid "Custom 2" -msgstr "Benutzerdefiniert 2" - -#: src/canonmn.cpp:847 src/canonmn.cpp:848 src/minoltamn.cpp:226 -#: src/properties.cpp:793 -msgid "Custom 3" -msgstr "Benutzerdefiniert 3" - -#: src/canonmn.cpp:849 -#, fuzzy -msgid "PC Set 4" -msgstr "PC Satz 1" - -#: src/canonmn.cpp:850 -#, fuzzy -msgid "PC Set 5" -msgstr "PC Satz 1" - -#: src/canonmn.cpp:855 src/canonmn.cpp:974 src/canonmn.cpp:982 -msgid "left" -msgstr "Links" - -#: src/canonmn.cpp:856 src/canonmn.cpp:971 src/canonmn.cpp:983 -msgid "center" -msgstr "Zentriert" - -#: src/canonmn.cpp:857 src/canonmn.cpp:968 src/canonmn.cpp:984 -msgid "right" -msgstr "Rechts" - -#: src/canonmn.cpp:884 -msgid "ISO Speed Used" -msgstr "ISO Geschwindigkeitsangabe" - -#: src/canonmn.cpp:884 -msgid "ISO speed used" -msgstr "ISO Geschwindigkeitsangabe" - -#: src/canonmn.cpp:885 -msgid "Measured EV" -msgstr "" - -#: src/canonmn.cpp:886 -msgid "Target Aperture" -msgstr "Zielblende" - -#: src/canonmn.cpp:887 -msgid "Target Shutter Speed" -msgstr "Zielverschlussgeschwindigkeit" - -#: src/canonmn.cpp:887 -msgid "Target shutter speed" -msgstr "Zielverschlussgeschwindigkeit" - -#: src/canonmn.cpp:889 src/fujimn.cpp:192 src/minoltamn.cpp:177 -#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:993 -#: src/minoltamn.cpp:1376 src/nikonmn.cpp:225 src/nikonmn.cpp:471 -#: src/nikonmn.cpp:528 src/olympusmn.cpp:330 src/olympusmn.cpp:880 -#: src/panasonicmn.cpp:238 src/properties.cpp:473 src/properties.cpp:582 -#: src/sigmamn.cpp:71 src/sonymn.cpp:289 src/tags.cpp:1785 -msgid "White Balance" -msgstr "Weißabgleich" - -#: src/canonmn.cpp:889 src/fujimn.cpp:193 src/minoltamn.cpp:1443 -#: src/panasonicmn.cpp:238 -msgid "White balance setting" -msgstr "Weißabgleichseinstellung" - -#: src/canonmn.cpp:891 -msgid "Sequence" -msgstr "Reihenfolge" - -#: src/canonmn.cpp:891 -msgid "Sequence number (if in a continuous burst)" -msgstr "Fortlaufende Nummer (wenn Sie im Burst-Modus fotografieren)" - -#: src/canonmn.cpp:896 -msgid "AF Point Used" -msgstr "Benutzter Autofokus-Punkt" - -#: src/canonmn.cpp:896 -msgid "AF point used" -msgstr "Benutzter Autofokus-Punkt" - -#: src/canonmn.cpp:897 src/olympusmn.cpp:372 -msgid "Flash Bias" -msgstr "Blitzkontrolle" - -#: src/canonmn.cpp:901 src/properties.cpp:560 src/tags.cpp:824 -#: src/tags.cpp:1643 -msgid "Subject Distance" -msgstr "Entfernung des Motivs" - -#: src/canonmn.cpp:901 -msgid "Subject distance (units are not clear)" -msgstr "Motivabstand (Einheiten nicht klar definiert)" - -#: src/canonmn.cpp:903 src/olympusmn.cpp:273 src/properties.cpp:556 -#: src/tags.cpp:820 -msgid "Aperture Value" -msgstr "Blendenwert" - -#: src/canonmn.cpp:904 src/properties.cpp:555 src/tags.cpp:819 -msgid "Shutter Speed Value" -msgstr "Verschlussgeschwindigkeitswert" - -#: src/canonmn.cpp:904 src/tags.cpp:1623 -msgid "Shutter speed" -msgstr "Verschlussgeschwindigkeit" - -#: src/canonmn.cpp:905 -msgid "Measured EV 2" -msgstr "" - -#: src/canonmn.cpp:910 -msgid "Unknown Canon Camera Settings 2 tag" -msgstr "Unbekanntes Feld in den Canon-Kameraeinstellungen 2" - -#: src/canonmn.cpp:920 src/olympusmn.cpp:1164 -msgid "Left to right" -msgstr "links nach rechts" - -#: src/canonmn.cpp:921 src/olympusmn.cpp:1165 -msgid "Right to left" -msgstr "rechts nach links" - -#: src/canonmn.cpp:922 src/olympusmn.cpp:1166 -msgid "Bottom to top" -msgstr "unten nach oben" - -#: src/canonmn.cpp:923 src/olympusmn.cpp:1167 -msgid "Top to bottom" -msgstr "oben nach unten" - -#: src/canonmn.cpp:924 -msgid "2x2 matrix (Clockwise)" -msgstr "2x2 Matrix (Im Uhrzeigersinn)" - -#: src/canonmn.cpp:929 -msgid "Panorama Frame" -msgstr "Panoramaeinzelbild" - -#: src/canonmn.cpp:929 -msgid "Panorama frame number" -msgstr "Nummer des Panoramaeinzelbildes" - -#: src/canonmn.cpp:930 -msgid "Panorama Direction" -msgstr "Pamoramarichtung" - -#: src/canonmn.cpp:930 -msgid "Panorama direction" -msgstr "Pamoramarichtung" - -#: src/canonmn.cpp:932 -msgid "Unknown Canon Panorama tag" -msgstr "Unbekanntes Canon-Panoramafeld" - -#: src/canonmn.cpp:942 src/canonmn.cpp:1072 src/minoltamn.cpp:807 -#: src/minoltamn.cpp:1068 src/minoltamn.cpp:1493 src/nikonmn.cpp:579 -#: src/olympusmn.cpp:438 src/olympusmn.cpp:602 src/olympusmn.cpp:685 -#: src/olympusmn.cpp:804 src/olympusmn.cpp:819 src/olympusmn.cpp:889 -#: src/olympusmn.cpp:974 -msgid "Noise Reduction" -msgstr "Rauschunterdrückung" - -#: src/canonmn.cpp:942 -msgid "Long exposure noise reduction" -msgstr "Rauschreduktion einer langen Belichtung" - -#: src/canonmn.cpp:943 -#, fuzzy -msgid "Shutter Ae Lock" -msgstr "Verschlussgeschwindigkeit" - -#: src/canonmn.cpp:943 -#, fuzzy -msgid "Shutter/AE lock buttons" -msgstr "Verschlusszähler" - -#: src/canonmn.cpp:944 -msgid "Mirror Lockup" -msgstr "Spiegelvorauslösung" - -#: src/canonmn.cpp:944 -msgid "Mirror lockup" -msgstr "Spiegelvorauslösung" - -#: src/canonmn.cpp:945 src/sonymn.cpp:650 src/sonymn.cpp:651 -#, fuzzy -msgid "Exposure Level Increments" -msgstr "Belichtungsabstand" - -#: src/canonmn.cpp:945 -msgid "Tv/Av and exposure level" -msgstr "" - -#: src/canonmn.cpp:946 src/minoltamn.cpp:1520 -msgid "AF Assist" -msgstr "Autofokus-Unterstützung" - -#: src/canonmn.cpp:946 -msgid "AF assist light" -msgstr "Autofokus-Lichtunterstützung" - -#: src/canonmn.cpp:947 -#, fuzzy -msgid "Flash Sync Speed Av" -msgstr "Blitztyp" - -#: src/canonmn.cpp:947 -#, fuzzy -msgid "Shutter speed in Av mode" -msgstr "Verschlusswert" - -#: src/canonmn.cpp:948 -msgid "AEB Sequence" -msgstr "AEB Sequenz" - -#: src/canonmn.cpp:948 -msgid "AEB sequence/auto cancellation" -msgstr "AEB Sequenz/Automatischer Abbruch" - -#: src/canonmn.cpp:949 -#, fuzzy -msgid "Shutter Curtain Sync" -msgstr "Verschlusszähler" - -#: src/canonmn.cpp:949 -#, fuzzy -msgid "Shutter curtain sync" -msgstr "Verschlusszähler" - -#: src/canonmn.cpp:950 -msgid "Lens AF Stop Button" -msgstr "Stoppknopf der Autofokus-Linse" - -#: src/canonmn.cpp:950 -msgid "Lens AF stop button Fn. Switch" -msgstr "Stoppknopf der Autofokus-Linse Funktionswechsel" - -#: src/canonmn.cpp:951 -msgid "Fill Flash Auto Reduction" -msgstr "Automatische Verringerung des Aufhellblitzes" - -#: src/canonmn.cpp:951 -msgid "Auto reduction of fill flash" -msgstr "Automatische Verringerung des Aufhellblitzes" - -#: src/canonmn.cpp:952 -msgid "Menu Button Return" -msgstr "Menüknopf \"Eingabe\"" - -#: src/canonmn.cpp:952 -#, fuzzy -msgid "Menu button return position" -msgstr "Menüknopf \"Eingabe\"" - -#: src/canonmn.cpp:953 -msgid "Set Button Function" -msgstr "Knopffunktion setzen" - -#: src/canonmn.cpp:953 -msgid "SET button func. when shooting" -msgstr "" - -#: src/canonmn.cpp:954 -msgid "Sensor Cleaning" -msgstr "Sensorenreinigung" - -#: src/canonmn.cpp:954 -msgid "Sensor cleaning" -msgstr "Sensorenreinigung" - -#: src/canonmn.cpp:955 -msgid "Superimposed Display" -msgstr "Eingeblendetes Display" - -#: src/canonmn.cpp:955 -msgid "Superimposed display" -msgstr "Eingeblendetes Display" - -#: src/canonmn.cpp:956 -msgid "Shutter Release No CF Card" -msgstr "" - -#: src/canonmn.cpp:956 -msgid "Shutter Release W/O CF Card" -msgstr "" - -#: src/canonmn.cpp:958 -msgid "Unknown Canon Custom Function tag" -msgstr "Unbekanntes Feld in den benutzerdefinierten Funktionen von Canon" - -#: src/canonmn.cpp:969 -msgid "mid-right" -msgstr "Mitte - rechts" - -#: src/canonmn.cpp:970 src/canonmn.cpp:987 -msgid "bottom" -msgstr "Unten" - -#: src/canonmn.cpp:972 src/canonmn.cpp:979 -msgid "top" -msgstr "Oben" - -#: src/canonmn.cpp:973 -msgid "mid-left" -msgstr "Mitte - links" - -#: src/canonmn.cpp:980 -msgid "upper-left" -msgstr "Oben - links" - -#: src/canonmn.cpp:981 -msgid "upper-right" -msgstr "Oben - rechts" - -#: src/canonmn.cpp:985 -msgid "lower-left" -msgstr "Unten - links" - -#: src/canonmn.cpp:986 -msgid "lower-right" -msgstr "Unten - rechts" - -#: src/canonmn.cpp:992 src/olympusmn.cpp:225 src/olympusmn.cpp:405 -#: src/panasonicmn.cpp:341 src/properties.cpp:480 src/tags.cpp:415 -msgid "Image Width" -msgstr "Bildbreite" - -#: src/canonmn.cpp:992 src/olympusmn.cpp:226 src/olympusmn.cpp:406 -#: src/panasonicmn.cpp:341 src/tags.cpp:2103 -msgid "Image width" -msgstr "Bildbreite" - -#: src/canonmn.cpp:993 src/olympusmn.cpp:228 src/olympusmn.cpp:408 -#: src/panasonicmn.cpp:340 -msgid "Image Height" -msgstr "Bildhöhe" - -#: src/canonmn.cpp:993 src/olympusmn.cpp:229 src/olympusmn.cpp:409 -#: src/panasonicmn.cpp:340 src/tags.cpp:2106 -msgid "Image height" -msgstr "Bildhöhe" - -#: src/canonmn.cpp:994 -msgid "Image Width As Shot" -msgstr "Bildbreite während der Aufnahme" - -#: src/canonmn.cpp:994 -msgid "Image width (as shot)" -msgstr "Bildbreite bei der Aufnahme" - -#: src/canonmn.cpp:995 -msgid "Image Height As Shot" -msgstr "Bildhöhe bei der Aufnahme" - -#: src/canonmn.cpp:995 -msgid "Image height (as shot)" -msgstr "Bildhöhe (bei der Aufnahme)" - -#: src/canonmn.cpp:996 src/nikonmn.cpp:848 -msgid "AF Points Used" -msgstr "Benutzte Autofokus-Punkte" - -#: src/canonmn.cpp:996 src/nikonmn.cpp:848 -msgid "AF points used" -msgstr "Benutzte Autofokus-Punkte" - -#: src/canonmn.cpp:997 -msgid "AF Points Used 20D" -msgstr "Benutzte Autofokus-Punkte 20D" - -#: src/canonmn.cpp:997 -msgid "AF points used (20D)" -msgstr "Benutzte Autofokus-Punkte (20D)" - -#: src/canonmn.cpp:999 -msgid "Unknown Canon Picture Info tag" -msgstr "Unbekanntes Feld in der Canon-Bildinfo" - -#: src/canonmn.cpp:1010 -msgid "AEB" -msgstr "" - -#: src/canonmn.cpp:1011 -msgid "FEB" -msgstr "" - -#: src/canonmn.cpp:1012 src/minoltamn.cpp:511 src/nikonmn.cpp:767 -#: src/nikonmn.cpp:1136 src/nikonmn.cpp:1196 src/nikonmn.cpp:1232 -#, fuzzy -msgid "ISO" -msgstr "Aufnahmeinfo" - -#: src/canonmn.cpp:1013 -msgid "WB" -msgstr "" - -#: src/canonmn.cpp:1024 -msgid "Postcard" -msgstr "" - -#: src/canonmn.cpp:1025 -msgid "Widescreen" -msgstr "" - -#: src/canonmn.cpp:1026 -#, fuzzy -msgid "Medium Movie" -msgstr "Mittel 1" - -#: src/canonmn.cpp:1027 -#, fuzzy -msgid "Small Movie" -msgstr "Film" - -#: src/canonmn.cpp:1033 -#, fuzzy -msgid "On 1" -msgstr "An" - -#: src/canonmn.cpp:1034 -#, fuzzy -msgid "On 2" -msgstr "An" - -#: src/canonmn.cpp:1042 -#, fuzzy -msgid "On (shift AB)" -msgstr "Eine Aufnahme mit Autofokus" - -#: src/canonmn.cpp:1043 -#, fuzzy -msgid "On (shift GM)" -msgstr "Eine Aufnahme mit Autofokus" - -#: src/canonmn.cpp:1049 src/nikonmn.cpp:667 src/nikonmn.cpp:680 -#: src/nikonmn.cpp:995 src/olympusmn.cpp:622 src/olympusmn.cpp:862 -msgid "Yellow" -msgstr "Gelb" - -#: src/canonmn.cpp:1050 src/nikonmn.cpp:668 src/olympusmn.cpp:623 -#: src/olympusmn.cpp:863 -msgid "Orange" -msgstr "Orange" - -#: src/canonmn.cpp:1051 src/nikonmn.cpp:669 src/nikonmn.cpp:679 -#: src/nikonmn.cpp:993 src/olympusmn.cpp:624 src/olympusmn.cpp:864 -msgid "Red" -msgstr "Rot" - -#: src/canonmn.cpp:1052 src/canonmn.cpp:1061 src/nikonmn.cpp:670 -#: src/nikonmn.cpp:681 src/olympusmn.cpp:625 src/olympusmn.cpp:635 -#: src/olympusmn.cpp:865 src/olympusmn.cpp:874 -msgid "Green" -msgstr "Grün" - -#: src/canonmn.cpp:1059 src/nikonmn.cpp:683 src/nikonmn.cpp:994 -#: src/olympusmn.cpp:633 src/olympusmn.cpp:872 -msgid "Blue" -msgstr "Blau" - -#: src/canonmn.cpp:1060 src/olympusmn.cpp:634 src/olympusmn.cpp:873 -msgid "Purple" -msgstr "Lila" - -#: src/canonmn.cpp:1067 -#, fuzzy -msgid "Bracket Mode" -msgstr "Automatischer Erfassungsschritt" - -#: src/canonmn.cpp:1068 -#, fuzzy -msgid "Bracket Value" -msgstr "Automatischer Erfassungsschritt" - -#: src/canonmn.cpp:1069 -#, fuzzy -msgid "Bracket Shot Number" -msgstr "Automatischer Erfassungsschritt" - -#: src/canonmn.cpp:1070 -#, fuzzy -msgid "Raw Jpg Quality" -msgstr "Bildqualität" - -#: src/canonmn.cpp:1071 -#, fuzzy -msgid "Raw Jpg Size" -msgstr "Bildgrõße" - -#: src/canonmn.cpp:1073 -#, fuzzy -msgid "WB Bracket Mode" -msgstr "Automatischer Erfassungsschritt" - -#: src/canonmn.cpp:1074 -#, fuzzy -msgid "WB Bracket Value AB" -msgstr "Weißabgleichswert" - -#: src/canonmn.cpp:1075 -#, fuzzy -msgid "WB Bracket Value GM" -msgstr "Weißabgleichswert" - -#: src/canonmn.cpp:1076 src/nikonmn.cpp:701 -#, fuzzy -msgid "Filter Effect" -msgstr "Farbeffekt" - -#: src/canonmn.cpp:1077 src/nikonmn.cpp:702 -#, fuzzy -msgid "Toning Effect" -msgstr "Fotoeffekt" - -#: src/canonmn.cpp:1078 -#, fuzzy -msgid "Macro Magnification" -msgstr "Elektronische Vergrößerung" - -#: src/canonmn.cpp:1078 -#, fuzzy -msgid "Macro magnification" -msgstr "Elektronische Vergrößerung" - -#: src/canonmn.cpp:1079 -msgid "Live View Shooting" -msgstr "" - -#: src/canonmn.cpp:1079 -#, fuzzy -msgid "Live view shooting" -msgstr "Antriebsmodus-Einstellungen" - -#: src/canonmn.cpp:1080 -#, fuzzy -msgid "Flash Exposure Lock" -msgstr "Blitzbelichtungskompensation" - -#: src/canonmn.cpp:1080 -#, fuzzy -msgid "Flash exposure lock" -msgstr "Blitzbelichtungskompensation" - -#: src/canonmn.cpp:1082 -#, fuzzy -msgid "Unknown Canon File Info tag" -msgstr "Unbekanntes Feld in der Canon-Bildinfo" - -#: src/canonmn.cpp:1092 src/canonmn.cpp:1102 src/canonmn.cpp:1110 -#: src/canonmn.cpp:1123 src/fujimn.cpp:147 src/fujimn.cpp:154 -#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1135 -#: src/minoltamn.cpp:1221 src/minoltamn.cpp:1884 src/minoltamn.cpp:1973 -#: src/minoltamn.cpp:2007 src/minoltamn.cpp:2033 src/minoltamn.cpp:2059 -#: src/olympusmn.cpp:93 src/olympusmn.cpp:1135 src/panasonicmn.cpp:167 -#: src/panasonicmn.cpp:174 src/panasonicmn.cpp:204 src/pentaxmn.cpp:470 -#: src/sonymn.cpp:150 src/sonymn.cpp:475 src/sonymn.cpp:505 src/tags.cpp:1501 -msgid "Standard" -msgstr "Standard" - -#: src/canonmn.cpp:1100 -#, fuzzy -msgid "Lowest" -msgstr "Abwärts-Links" - -#: src/canonmn.cpp:1104 -#, fuzzy -msgid "Highest" -msgstr "Hoch" - -#: src/canonmn.cpp:1112 -#, fuzzy -msgid "High Saturation" -msgstr "Sättigung" - -#: src/canonmn.cpp:1114 -#, fuzzy -msgid "Low Saturation" -msgstr "Sättigung" - -#: src/canonmn.cpp:1115 -#, fuzzy -msgid "CM Set 1" -msgstr "PC Satz 1" - -#: src/canonmn.cpp:1116 -#, fuzzy -msgid "CM Set 2" -msgstr "PC Satz 2" - -#: src/canonmn.cpp:1117 -msgid "User Def. 1" -msgstr "" - -#: src/canonmn.cpp:1118 -msgid "User Def. 2" -msgstr "" - -#: src/canonmn.cpp:1119 -msgid "User Def. 3" -msgstr "" - -#: src/canonmn.cpp:1120 -msgid "PC 1" -msgstr "" - -#: src/canonmn.cpp:1121 -msgid "PC 2" -msgstr "" - -#: src/canonmn.cpp:1122 -msgid "PC 3" -msgstr "" - -#: src/canonmn.cpp:1127 -msgid "Faithful" -msgstr "" - -#: src/canonmn.cpp:1128 src/minoltamn.cpp:903 src/minoltamn.cpp:953 -#: src/nikonmn.cpp:423 src/pentaxmn.cpp:707 -msgid "Monochrome" -msgstr "Monochrom" - -#: src/canonmn.cpp:1133 -#, fuzzy -msgid "ToneCurve" -msgstr "Farbtonkurve" - -#: src/canonmn.cpp:1133 -msgid "Tone curve" -msgstr "Farbtonkurve" - -#: src/canonmn.cpp:1135 -#, fuzzy -msgid "SharpnessFrequency" -msgstr "Schärfe" - -#: src/canonmn.cpp:1135 -#, fuzzy -msgid "Sharpness frequency" -msgstr "Schärfe-Wert" - -#: src/canonmn.cpp:1136 -#, fuzzy -msgid "SensorRedLevel" -msgstr "WB_RGGBLevelsShade" - -#: src/canonmn.cpp:1136 -#, fuzzy -msgid "Sensor red level" -msgstr "Schwarzlevel" - -#: src/canonmn.cpp:1137 -#, fuzzy -msgid "SensorBlueLevel" -msgstr "WB_RGGBLevelsShade" - -#: src/canonmn.cpp:1137 -#, fuzzy -msgid "Sensor blue level" -msgstr "Schwarzlevel" - -#: src/canonmn.cpp:1138 -#, fuzzy -msgid "WhiteBalanceRed" -msgstr "Weißabgleich" - -#: src/canonmn.cpp:1138 -#, fuzzy -msgid "White balance red" -msgstr "Weißabgleich 2" - -#: src/canonmn.cpp:1139 -#, fuzzy -msgid "WhiteBalanceBlue" -msgstr "Weißabgleichswert" - -#: src/canonmn.cpp:1139 -#, fuzzy -msgid "White balance blue" -msgstr "Weißabgleichstabelle" - -#: src/canonmn.cpp:1140 -#, fuzzy -msgid "WhiteBalance" -msgstr "Weißabgleich" - -#: src/canonmn.cpp:1141 -#, fuzzy -msgid "ColorTemperature" -msgstr "Farbtemperatur" - -#: src/canonmn.cpp:1141 src/minoltamn.cpp:156 src/minoltamn.cpp:786 -#: src/minoltamn.cpp:1038 src/minoltamn.cpp:1053 src/minoltamn.cpp:1054 -#: src/minoltamn.cpp:1475 src/minoltamn.cpp:1577 src/olympusmn.cpp:833 -#: src/sonymn.cpp:357 src/sonymn.cpp:358 -msgid "Color Temperature" -msgstr "Farbtemperatur" - -#: src/canonmn.cpp:1142 -#, fuzzy -msgid "PictureStyle" -msgstr "Bildmodus" - -#: src/canonmn.cpp:1142 -#, fuzzy -msgid "Picture style" -msgstr "Bildmodus" - -#: src/canonmn.cpp:1143 -#, fuzzy -msgid "DigitalGain" -msgstr "Digitales Makro" - -#: src/canonmn.cpp:1143 -#, fuzzy -msgid "Digital gain" -msgstr "Digitales Makro" - -#: src/canonmn.cpp:1144 -msgid "WBShiftAB" -msgstr "" - -#: src/canonmn.cpp:1144 -#, fuzzy -msgid "WBShift AB" -msgstr "Eine Aufnahme mit Autofokus" - -#: src/canonmn.cpp:1145 -msgid "WBShiftGM" -msgstr "" - -#: src/canonmn.cpp:1145 -#, fuzzy -msgid "WB Shift GM" -msgstr "Eine Aufnahme mit Autofokus" - -#: src/canonmn.cpp:1146 -#, fuzzy -msgid "Unknown Canon Processing Info tag" -msgstr "Unbekanntes Feld in der Canon-Bildinfo" - -#: src/crwimage.cpp:664 -msgid "Header, offset" -msgstr "Header, offset" - -#: src/crwimage.cpp:681 -msgid "tag" -msgstr "Feld" - -#: src/crwimage.cpp:683 -msgid "dir" -msgstr "Ordner" - -#: src/crwimage.cpp:685 -msgid "type" -msgstr "Typ" - -#: src/crwimage.cpp:686 -msgid "size" -msgstr "GrößeVoll" - -#: src/crwimage.cpp:687 -msgid "offset" -msgstr "Offset" - -#: src/datasets.cpp:79 -msgid "(invalid)" -msgstr "(ungültig)" - -#: src/datasets.cpp:80 -msgid "IIM envelope record" -msgstr "IIM Umschlagsdatensatz" - -#: src/datasets.cpp:81 -msgid "IIM application record 2" -msgstr "IIM Anwendungsdatensatz 2" - -#: src/datasets.cpp:85 -msgid "Model Version" -msgstr "Modellversion" - -#: src/datasets.cpp:86 -msgid "" -"A binary number identifying the version of the Information Interchange " -"Model, Part I, utilised by the provider. Version numbers are assigned by " -"IPTC and NAA organizations." -msgstr "" -"Eine binäre Zahl, die die Version des Informations-Austausch-Modell (IIM) " -"vom Anbieter, Teil 1identifiziert. Die Versionsnummern werden von der IPTC " -"und NAA Organisationen zugewiesen." - -#: src/datasets.cpp:90 src/panasonicmn.cpp:220 src/pentaxmn.cpp:378 -#: src/pentaxmn.cpp:962 src/pentaxmn.cpp:963 -msgid "Destination" -msgstr "Ziel" - -#: src/datasets.cpp:91 -msgid "" -"This DataSet is to accommodate some providers who require routing " -"information above the appropriate OSI layers." -msgstr "" -"Dieser Datensatz ist für die Anbieter die Weiterleitungsinformationen " -"oberhalb der entsprechenden OSI-Layer benötigen." - -#: src/datasets.cpp:94 src/sonymn.cpp:348 src/sonymn.cpp:349 -msgid "File Format" -msgstr "Dateiformat" - -#: src/datasets.cpp:95 -msgid "" -"A binary number representing the file format. The file format must be " -"registered with IPTC or NAA with a unique number assigned to it. The " -"information is used to route the data to the appropriate system and to allow " -"the receiving system to perform the appropriate actions there to." -msgstr "" -"Eine binäre Nummer die das Dateiformat repräsentiert. Das Format muss bei " -"IPTC oder NAA durch eine eindeutige Nummer registriert werden, die dem " -"Format zugeordnet wird. Diese Information wird benutzt, um die Daten an das " -"richtige System weiterzuleiten und erlaubt es dem empfangenden System die " -"richtigen Aktionen durchzuführen." - -#: src/datasets.cpp:101 -msgid "File Version" -msgstr "Dateiversion" - -#: src/datasets.cpp:102 -msgid "" -"A binary number representing the particular version of the File Format " -"specified by tag." -msgstr "" -"Eine binäre Zahl, die genaue Version des Dateiformats angibt, das durch den " -" Feld angegeben wurde." - -#: src/datasets.cpp:105 -msgid "Service Id" -msgstr "Dienst-ID" - -#: src/datasets.cpp:106 -msgid "Identifies the provider and product" -msgstr "Identifiziert den Anbieter und das Produkt" - -#: src/datasets.cpp:108 -msgid "Envelope Number" -msgstr "Umschlagsnummer" - -#: src/datasets.cpp:109 -msgid "" -"The characters form a number that will be unique for the date specified in " -" tag and for the Service Identifier specified by " -" tag. If identical envelope numbers appear with the same " -"date and with the same Service Identifier, records 2-9 must be unchanged " -"from the original. This is not intended to be a sequential serial number " -"reception check." -msgstr "" -"Die Zeichen ergeben eine Zahl, die eindeutig ist für das Datum, dass durch " -"das -Feld angegeben wurde und für die Dienst-ID, die durch das " -"-Feld angegeben wurde, ist. Wenn identische " -"Umschlagsnummern mit dem gleichen Datum und der gleichen Dienst-ID " -"auftauchen, dann müssen die Datensätze 2-9 identisch mit dem Original sein. " -"Dies ist nicht als fortlaufende Seriennummer gedacht." - -#: src/datasets.cpp:117 -msgid "Product Id" -msgstr "Produkt-ID" - -#: src/datasets.cpp:118 -msgid "" -"Allows a provider to identify subsets of its overall service. Used to " -"provide receiving organisation data on which to select, route, or otherwise " -"handle data." -msgstr "" -"Erlaubt es einem Anbieter eine Teilmenge seiner Dienste zu identifizieren. " -"Sie wird dazu benutzt, damit die empfangende Organisation wählen kann wie " -"die Daten weitergeleitet oder anderweitig behandelt werden." - -#: src/datasets.cpp:122 -msgid "Envelope Priority" -msgstr "Unschlagspriorität" - -#: src/datasets.cpp:123 -msgid "" -"Specifies the envelope handling priority and not the editorial urgency (see " -" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " -"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " -"Priority. The numeral \"0\" is reserved for future use." -msgstr "" -"Gibt die Behandlungspriorität des Umschlags an und nicht die redaktionelle " -"Wichtigkeit. Dazu ist das -Feld gedacht. \"1\" steht für die " -"höchste Priorität, \"5\" für normal und \"8\" für die geringste . Die Nummer " -"\"9\" ist für eine benutzerdefinierte Priorität und \"0\" für eine " -"zukünftige Anwendung." - -#: src/datasets.cpp:129 -msgid "Date Sent" -msgstr "Sendedatum" - -#: src/datasets.cpp:130 -msgid "" -"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " -"to indicate year, month and day the service sent the material." -msgstr "" -"Benutzt das Format CCYYMMDD (Jahrhundert/C, Jahr/Y, Monat/M, Tag/D), wie im " -"ISO Standard 8601 angegeben, um das Jahr, den Monat und den Tag anzugeben an " -"dem das Material gesendet wurde." - -#: src/datasets.cpp:133 -msgid "Time Sent" -msgstr "Sendezeit" - -#: src/datasets.cpp:134 -msgid "" -"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " -"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " -"Universal Coordinated Time as described in ISO 8601. This is the time the " -"service sent the material." -msgstr "" -"Benutzt das Format HHMMSS:HHMM wobei HHMMSS die lokale Stunde/H, Minute/M " -"und Sekunden/S darstellt und HHMM die Stunden/H und Minuten/M bevor (+) oder " -"hinter (-) der UTC Zeit die im ISO Standard 8601 beschrieben wird. Dies ist " -"die Uhrzeit zu der das Material versendet wurde." - -#: src/datasets.cpp:139 -msgid "Character Set" -msgstr "Zeichensatz" - -#: src/datasets.cpp:140 -msgid "" -"This tag consisting of one or more control functions used for the " -"announcement, invocation or designation of coded character sets. The control " -"functions follow the ISO 2022 standard and may consist of the escape control " -"character and one or more graphic characters." -msgstr "" -"Dieses Feld enthält eine oder mehrere Kontrollfunktionen die benutzt werden " -"für die Ankündigung, Aufruf oder Zuweisung von kodierten Zeichensätzen. Die " -"Kontrollfunktionen folgen dem ISO 2022 Standard und können aus einem Escape " -"Kontrollzeichen und mehreren Graphikzeichen bestehen." - -#: src/datasets.cpp:145 -msgid "Unique Name Object" -msgstr "Eindeutiges Namensobjekt" - -#: src/datasets.cpp:146 -msgid "" -"This tag provide a globally unique identification for objects as specified " -"in the IIM, independent of provider and for any media form. The provider " -"must ensure the UNO is unique. Objects with the same UNO are identical." -msgstr "" -"Dieses Feld stellt, wie im IIM spezifiziert, eine globale eindeutige " -"Identifikation für Objekte zur Verfügung, die unabhängig vom Anbieter und " -"der Medienform ist. Der Anbieter muss gewährleisten, dass das eindeutige " -"Namensobjekt auch wirklich eindeutig ist. D.h. Objekte mit demselben " -"Namensobjekt sind identisch." - -#: src/datasets.cpp:151 -msgid "ARM Identifier" -msgstr "ARM-ID" - -#: src/datasets.cpp:152 -msgid "" -"The DataSet identifies the Abstract Relationship Method identifier (ARM) " -"which is described in a document registered by the originator of the ARM " -"with the IPTC and NAA organizations." -msgstr "" -"Das \"DataSet\" identifiziert die \"Abstract Relationship Method-ID\" (ARM). " -"Dies ist in einem Dokument beschrieben, dass der Urheber des ARM bei den " -"Organisationen IPTC und NAA registriert hat." - -#: src/datasets.cpp:156 -msgid "ARM Version" -msgstr "ARM-Version" - -#: src/datasets.cpp:157 -msgid "" -"This tag consisting of a binary number representing the particular version " -"of the ARM specified by tag ." -msgstr "" -"Dieses Feld enthält eine binäre Nummer die die genaue Version des ARM " -"angibt, der mit dem Feld angegeben wurde." - -#: src/datasets.cpp:170 -msgid "Record Version" -msgstr "Datensatzversion" - -#: src/datasets.cpp:171 -msgid "" -"A binary number identifying the version of the Information Interchange " -"Model, Part II, utilised by the provider. Version numbers are assigned by " -"IPTC and NAA organizations." -msgstr "" -"Eine binäre Nummer, die vom Erzeuger angepasst wurde, die die Version des " -"\"Information Interchange Model, Part II\" angibt. Die versionen werden " -"durch die Organisationen IPTC und NAA zugewiesen." - -#: src/datasets.cpp:175 -msgid "Object Type" -msgstr "Motivtyp" - -#: src/datasets.cpp:176 -msgid "" -"The Object Type is used to distinguish between different types of objects " -"within the IIM. The first part is a number representing a language " -"independent international reference to an Object Type followed by a colon " -"separator. The second part, if used, is a text representation of the Object " -"Type Number consisting of graphic characters plus spaces either in English " -"or in the language of the service as indicated in tag " -msgstr "" -"Der Objekttyp wird benutzt, um zwischen verschiedenen Typen innerhalb des " -"IIM zu unterscheiden. Der erste Teil ist eine Nummer, die ein " -"sprachunabhängige Referenz auf den Objekttyp gefolgt von einem Doppelpunkt " -"bildet. Der zweite Teil, wenn er benutzt wird, ist eine Textrepräsentation " -"der Nummer des Objekttyps, die aus graphischen Zeichen und Freistellen in " -"Englisch oder in der Sprache besteht, die mit dem Feld " -"angegeben wurde." - -#: src/datasets.cpp:184 -msgid "Object Attribute" -msgstr "Motivattribut" - -#: src/datasets.cpp:185 -msgid "" -"The Object Attribute defines the nature of the object independent of the " -"Subject. The first part is a number representing a language independent " -"international reference to an Object Attribute followed by a colon " -"separator. The second part, if used, is a text representation of the Object " -"Attribute Number consisting of graphic characters plus spaces either in " -"English, or in the language of the service as indicated in tag " -"" -msgstr "" -"Das Attribut Objekt definiert die Natur des Objektes unabhängig vom Motiv. " -"Der erste Teil ist eine Nummer, gefolgt von einem Doppelpunkt, die " -"sprachunabhängig die international Referenz auf das Objektattribut " -"repräsentiert. Der zweite Teil enthält, wenn er benutzt wird, einen Text aus " -"Zeichen und Freizeichen, in englisch oder der Sprache die durch das Feld " -" angegeben wird. Dieser Text repräsentiert die " -"Attributnummer." - -#: src/datasets.cpp:193 -msgid "Object Name" -msgstr "Motivname" - -#: src/datasets.cpp:194 -msgid "" -"Used as a shorthand reference for the object. Changes to exist-ing data, " -"such as updated stories or new crops on photos, should be identified in tag " -"." -msgstr "" -"Wird als Kurzreferenz für das Motiv benutzt. Wird zu existierenden Daten wie " -"z.B. aktualisierten Stories, neuen Zuschnitten der geänderten Fotos, " -"aktualisiert. Sollte mit dem Feld identifiziert werden." - -#: src/datasets.cpp:198 -msgid "Document Title" -msgstr "Dokumententitel" - -#: src/datasets.cpp:199 src/olympusmn.cpp:820 -msgid "Edit Status" -msgstr "Bearbeitungsstatus" - -#: src/datasets.cpp:200 -msgid "Status of the object data, according to the practice of the provider." -msgstr "Der Status der Motivdaten wie der Anbieter ihn benutzen will." - -#: src/datasets.cpp:202 -msgid "Editorial Update" -msgstr "Redaktionelle Aktualisierung" - -#: src/datasets.cpp:203 -msgid "" -"Indicates the type of update that this object provides to a previous object. " -"The link to the previous object is made using the tags and " -", according to the practices of the provider." -msgstr "" -"Gibt den Typ der Aktualisierung zwischen diesem und dem vorangegangenen " -"Objekt an. Die Verknüpfung zu dem vorangegangenen Objekt wird über die " -"Felder und hergestellt. Dies geschieht durch " -"die Standards des Anbieters." - -#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:419 -msgid "Urgency" -msgstr "Dringlichkeit" - -#: src/datasets.cpp:208 -msgid "" -"Specifies the editorial urgency of content and not necessarily the envelope " -"handling priority (see tag ). The \"1\" is most urgent, " -"\"5\" normal and \"8\" denotes the least-urgent copy." -msgstr "" -"Gibt die redaktionelle Wichtigkeit des Inhalts und nicht notwendigerweise " -"Die Wichtigkeit mit der der Umschlag behandelt werden muß. Siehe dazu daß " -"Sichwort . \"1\" ist die höchste, \"5\" normal und \"8\" " -"die niedrigste Wichtigkeit." - -#: src/datasets.cpp:213 src/properties.cpp:167 -msgid "Subject" -msgstr "Motiv" - -#: src/datasets.cpp:214 -msgid "The Subject Reference is a structured definition of the subject matter." -msgstr "" -"Die Referenz des Motivs ist eine strukturierte Definition des Motivs, um das " -"es sich dreht." - -#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:405 -msgid "Category" -msgstr "Kategorie" - -#: src/datasets.cpp:217 -msgid "" -"Identifies the subject of the object data in the opinion of the provider. A " -"list of categories will be maintained by a regional registry, where " -"available, otherwise by the provider." -msgstr "" -"Identifiziert das Motiv der Objektdaten aus der Sicht des Anbieters. Eine " -"Liste von Kategorien wird durch eine regionale Instanz, insofern vorhanden, " -"verwaltet. Wenn nicht wird die Liste vom Anbieter bereit gestellt." - -#: src/datasets.cpp:222 -msgid "Supplemental Category" -msgstr "Zusätzliche Kategorie" - -#: src/datasets.cpp:223 -msgid "" -"Supplemental categories further refine the subject of an object data. A " -"supplemental category may include any of the recognised categories as used " -"in tag . Otherwise, selection of supplemental categories are left " -"to the provider." -msgstr "" -"Zusätzliche Kategorien verfeinern das Motiv der Objektdaten. Eine " -"zusätzliche Kategorie kann jede bekannte Kategorie die im Feld " -"enthalten ist. Falls nicht, so bleibt die Auswahl der zusätzlichen Kategorie " -"beim Anbieter." - -#: src/datasets.cpp:228 src/properties.cpp:417 -msgid "Supplemental Categories" -msgstr "Zusätzliche Kategorien" - -#: src/datasets.cpp:229 -msgid "Fixture Id" -msgstr "Fix-ID" - -#: src/datasets.cpp:230 -msgid "" -"Identifies object data that recurs often and predictably. Enables users to " -"immediately find or recall such an object." -msgstr "" -"Identifiziert Objektdaten die häufiger und vorhersagbar wieder auftreten. " -"Dadurch wird es dem Benutzer möglich ein solches Objekt schnell zu finden " -"oder wieder aufzurufen." - -#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:395 -msgid "Keywords" -msgstr "Schlüsselbegriffe" - -#: src/datasets.cpp:234 -msgid "" -"Used to indicate specific information retrieval words. It is expected that a " -"provider of various types of data that are related in subject matter uses " -"the same keyword, enabling the receiving system or subsystems to search " -"across all types of data for related material." -msgstr "" -"Schlüsselbegriffe werden benutzt, um spezielle Abfrageworte zu hinterlegen. " -"Dabei wird davon ausgegangen, dass verschiedenen Typen von Daten, die mit " -"demselben Motiv in Verbindung stehen, dieselben Schlüsselbegriffe benutzen. " -"Dies erlaubt es dem empfangenden System oder den Subsystemen über alle Typen " -"von Daten zu suchen um zusammengehörendes Material zu finden." - -#: src/datasets.cpp:240 -msgid "Location Code" -msgstr "Ortscode" - -#: src/datasets.cpp:241 -msgid "" -"Indicates the code of a country/geographical location referenced by the " -"content of the object. Where ISO has established an appropriate country code " -"under ISO 3166, that code will be used. When ISO 3166 does not adequately " -"provide for identification of a location or a country, e.g. ships at sea, " -"space, IPTC will assign an appropriate three-character code under the " -"provisions of ISO 3166 to avoid conflicts." -msgstr "" -"Gibt den Code des Landes bzw. der geographischen Lage an, die den Inhalt des " -"Motivs entspricht. Wenn ISO einen passenden Ländercode in der ISO 3166 " -"eingeführt hat, dann wird dieser benutzt. Wenn kein Code für die Lokation " -"existiert, z.B. für Schiffe auf See oder im Weltraum, dann wird IPTC einen " -"entsprechenden Code gemäß der Vorschriften von ISO 3166 aus drei Zeichen " -"einführen um Konflikte zu vermeiden." - -#: src/datasets.cpp:248 -msgid "Location Name" -msgstr "Ortsname" - -#: src/datasets.cpp:249 -msgid "" -"Provides a full, publishable name of a country/geographical location " -"referenced by the content of the object, according to guidelines of the " -"provider." -msgstr "" -"Stellt einen kompletten, veröffentlichbaren Namen des Landes/des " -"geographischen Ortes zur Verfügung der dem Inhalt des Motivs entspricht. " -"Dies geschieht nach den Richtlinien des Anbieters." - -#: src/datasets.cpp:253 src/properties.cpp:358 -msgid "Release Date" -msgstr "Freigabedatum" - -#: src/datasets.cpp:254 -msgid "" -"Designates in the form CCYYMMDD the earliest date the provider intends the " -"object to be used. Follows ISO 8601 standard." -msgstr "" -"Gibt im Format JJJJMMTT das früheste Datum an, an dem der Anbieter eine " -"Benutzung des Motivs vorgesehen hat. Es folgt dem ISO 8601 Standard." - -#: src/datasets.cpp:257 -msgid "Release Time" -msgstr "Freigabezeit" - -#: src/datasets.cpp:258 -msgid "" -"Designates in the form HHMMSS:HHMM the earliest time the provider intends " -"the object to be used. Follows ISO 8601 standard." -msgstr "" -"Gibt im Format SSMMSS:HHMM die früheste Zeit an, an dem der Anbieter eine " -"Benutzung des Motivs vorgesehen hat. Es folgt dem ISO 8601 Standard." - -#: src/datasets.cpp:261 -msgid "Expiration Date" -msgstr "Verfalldatum" - -#: src/datasets.cpp:262 -msgid "" -"Designates in the form CCYYMMDD the latest date the provider or owner " -"intends the object data to be used. Follows ISO 8601 standard." -msgstr "" -"Gibt im Format JJJJMMTT das letzte Datum an, an dem der Anbieter eine " -"Benutzung des Motivs vorgesehen hat. Es folgt dem ISO 8601 Standard." - -#: src/datasets.cpp:265 -msgid "ExpirationTime" -msgstr "Verfallzeit" - -#: src/datasets.cpp:266 -msgid "" -"Designates in the form HHMMSS:HHMM the latest time the provider or owner " -"intends the object data to be used. Follows ISO 8601 standard." -msgstr "" -"Gibt im Format SSMMSS:HHMM die letzte Zeit an, an dem der Anbieter eine " -"Benutzung des Motivs vorgesehen hat. Es folgt dem ISO 8601 Standard." - -#: src/datasets.cpp:269 -msgid "Special Instructions" -msgstr "Besondere Anweisungen" - -#: src/datasets.cpp:270 -msgid "" -"Other editorial instructions concerning the use of the object data, such as " -"embargoes and warnings." -msgstr "" -"Andere redaktionelle Anweisungen, wie z.B. Embargos und Warnungen, bezüglich " -"der Benutzung der Objektdaten." - -#: src/datasets.cpp:273 src/properties.cpp:414 -msgid "Instructions" -msgstr "Anweisungen" - -#: src/datasets.cpp:274 -msgid "Action Advised" -msgstr "Empfohlene Aktion" - -#: src/datasets.cpp:275 -msgid "" -"Indicates the type of action that this object provides to a previous object. " -"The link to the previous object is made using tags and " -", according to the practices of the provider." -msgstr "" -"Gibt den Typ der Aktion an, die dieses Objekt für ein vorangegangenes Objekt " -"zur Verfügung stellt. Die Verknüpfung zum vorangegangenen Objekt wird mit " -"den Feldern und nach den Standards des " -"Anbieters hergestellt." - -#: src/datasets.cpp:279 -msgid "Reference Service" -msgstr "Referenzdienst" - -#: src/datasets.cpp:280 -msgid "" -"Identifies the Service Identifier of a prior envelope to which the current " -"object refers." -msgstr "" -"Gibt den Dienstidentifizierer eines vorangegangenen Umschlags an, auf den " -"aktuelle Objekt verweist." - -#: src/datasets.cpp:283 -msgid "Reference Date" -msgstr "Referenzdatum" - -#: src/datasets.cpp:284 -msgid "" -"Identifies the date of a prior envelope to which the current object refers." -msgstr "" -"Gibt das Datum eines vorangegangenen Umschlags an, auf den das aktuelle " -"Objekt verweist." - -#: src/datasets.cpp:286 -msgid "Reference Number" -msgstr "Referenznummer" - -#: src/datasets.cpp:287 -msgid "" -"Identifies the Envelope Number of a prior envelope to which the current " -"object refers." -msgstr "" -"Gibt die Umschlagsnummer eines vorangegangenen Umschlags an, auf den das " -"aktuelle Objekt verweist." - -#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:409 -msgid "Date Created" -msgstr "Erstellungsdatum" - -#: src/datasets.cpp:290 -msgid "" -"Represented in the form CCYYMMDD to designate the date the intellectual " -"content of the object data was created rather than the date of the creation " -"of the physical representation. Follows ISO 8601 standard." -msgstr "" -"Gibt in der Form JJJJMMTT das Datum des intellektuellen Inhalts an dem die " -"Objektdaten erstellt wurden an. Nicht jedoch das datum der Erstellung der " -"phyiskalischen Repräsentation. Es wird der ISO 8601 Standard benutzt." - -#: src/datasets.cpp:295 -msgid "Time Created" -msgstr "Erstellungszeit" - -#: src/datasets.cpp:296 -msgid "" -"Represented in the form HHMMSS:HHMM to designate the time the intellectual " -"content of the object data current source material was created rather than " -"the creation of the physical representation. Follows ISO 8601 standard." -msgstr "" -"Gibt in der Form SSMMSS:HHMM die Uhrzeit des intellektuellen Inhalts an dem " -"die Objektdaten erstellt wurden an. Nicht jedoch das datum der Erstellung " -"der phyiskalischen Repräsentation. Es wird der ISO 8601 Standard benutzt." - -#: src/datasets.cpp:301 -msgid "Digitization Date" -msgstr "Digitalisierungsdatum" - -#: src/datasets.cpp:302 -msgid "" -"Represented in the form CCYYMMDD to designate the date the digital " -"representation of the object data was created. Follows ISO 8601 standard." -msgstr "" -"Gibt in der Form JJJJMMTT das Datum an, an dem die digitale Version der " -"Objektdaten erstellt wurde. Es wird der ISO 8601 Standard benutzt." - -#: src/datasets.cpp:305 -msgid "Digitization Time" -msgstr "Digitalisierungszeit" - -#: src/datasets.cpp:306 -msgid "" -"Represented in the form HHMMSS:HHMM to designate the time the digital " -"representation of the object data was created. Follows ISO 8601 standard." -msgstr "" -"Gibt in der Form SSMMSS:HHMM die Uhrzeit an, an dem die digitale Version der " -"Objektdaten erstellt wurde. Es wird der ISO 8601 Standard benutzt." - -#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 -#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:106 -#: src/pentaxmn.cpp:468 src/pentaxmn.cpp:526 src/sigmamn.cpp:154 -#: src/sonymn.cpp:110 -msgid "Program" -msgstr "Programm" - -#: src/datasets.cpp:311 -msgid "Identifies the type of program used to originate the object data." -msgstr "Gibt den benutzen Programmtyp zum Erzeugen der Objektdaten an." - -#: src/datasets.cpp:313 -msgid "Program Version" -msgstr "Programmversion" - -#: src/datasets.cpp:314 -msgid "Used to identify the version of the program mentioned in tag ." -msgstr "" -"Gibt die Version des Programms an, dass mit dem Feld angegeben " -"swurde." - -#: src/datasets.cpp:316 -msgid "Object Cycle" -msgstr "Objektzyklus" - -#: src/datasets.cpp:317 -msgid "Used to identify the editorial cycle of object data." -msgstr "Gibt den redaktionellen Zyklus der Objektdaten an." - -#: src/datasets.cpp:319 -msgid "By-line" -msgstr "Verfasserzeile" - -#: src/datasets.cpp:320 -msgid "" -"Contains name of the creator of the object data, e.g. writer, photographer " -"or graphic artist." -msgstr "" -"Enthält den Namen des Erstellers, wie z.B. Autor, Fotograph oder Graphiker, " -"des Motivs." - -#: src/datasets.cpp:323 -msgid "Author" -msgstr "Autor" - -#: src/datasets.cpp:324 -msgid "By-line Title" -msgstr "Titel der Verfasserzeile" - -#: src/datasets.cpp:325 -msgid "" -"A by-line title is the title of the creator or creators of an object data. " -"Where used, a by-line title should follow the by-line it modifies." -msgstr "" -"Der Titel der Verfasserzeile ist der Titel des oder der Ersteller der " -"Objektdaten." - -#: src/datasets.cpp:328 src/datasets.cpp:332 src/properties.cpp:406 -msgid "City" -msgstr "Stadt" - -#: src/datasets.cpp:329 -msgid "" -"Identifies city of object data origin according to guidelines established by " -"the provider." -msgstr "" -"Identifiziert die Stadt, nach dem Standard des Anbieters, in der das Motiv " -"liegt." - -#: src/datasets.cpp:333 -msgid "Sub Location" -msgstr "Genauer Ort" - -#: src/datasets.cpp:334 -msgid "" -"Identifies the location within a city from which the object data originates, " -"according to guidelines established by the provider." -msgstr "" -"Identifiziert den Ort innerhalb der Stadt, nach dem Standard des Anbieters, " -"in der das Motiv liegt." - -#: src/datasets.cpp:337 -msgid "Province State" -msgstr "Provinz/Staat" - -#: src/datasets.cpp:338 -msgid "" -"Identifies Province/State of origin according to guidelines established by " -"the provider." -msgstr "" -"Identifiziert enthält die Provinz bzw. den Staat, nach dem Standard des " -"Anbieters, in der das Motiv liegt." - -#: src/datasets.cpp:341 -msgid "State/Province" -msgstr "Staat/Provinz" - -#: src/datasets.cpp:342 src/properties.cpp:649 -msgid "Country Code" -msgstr "Länderkode" - -#: src/datasets.cpp:343 -msgid "" -"Indicates the code of the country/primary location where the intellectual " -"property of the object data was created, e.g. a photo was taken, an event " -"occurred. Where ISO has established an appropriate country code under ISO " -"3166, that code will be used. When ISO 3166 does not adequately provide for " -"identification of a location or a new country, e.g. ships at sea, space, " -"IPTC will assign an appropriate three-character code under the provisions of " -"ISO 3166 to avoid conflicts." -msgstr "" -"Gibt den Kode des Landes/des primären Ortes an, in dem das geistige Eigentum " -"der Objektdaten erstellt wurde. Dies ist z.B. für ein Foto der Ort an dem es " -"gemacht wurde oder ein Ereigniss geschah. Für die Orte die von dem " -"entsprechenden ISO-Länderkode 3166 erfasst sind, wird diese Kode benutzt. " -"Wenn ISO 3166 keine adäquate Möglichkeit zur Identifikation darstellt, z.B. " -"bei Schiffen oder im Weltraum, dann wird IPTC einen passenden Kode aus drei " -"Zeichen zur Verfügung stellen. Hierbei wird die ISO 3166 zur Vermeidung von " -"Konflikten berücksichtigt." - -#: src/datasets.cpp:352 -msgid "Country Name" -msgstr "Ländername" - -#: src/datasets.cpp:353 -msgid "" -"Provides full, publishable, name of the country/primary location where the " -"intellectual property of the object data was created, according to " -"guidelines of the provider." -msgstr "" -"Stellt den vollen, veröffentlichbarern Namen des Landes bzw. der primären " -"Lokation zur Verfügung, wo das intellektuelle Eigentum der Objektdaten " -"erstellt wurde. Hierbei werden die Richtlinien des Anbieters beachtet." - -#: src/datasets.cpp:357 src/properties.cpp:407 -msgid "Country" -msgstr "Land" - -#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:418 -msgid "Transmission Reference" -msgstr "Ãœbertragungsreferenz" - -#: src/datasets.cpp:359 -msgid "" -"A code representing the location of original transmission according to " -"practices of the provider." -msgstr "" -"Ein Code nach den Standards des Anbieters, der den Ursprung der " -"Originalübertragung angibt." - -#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:413 -msgid "Headline" -msgstr "Schlagzeile" - -#: src/datasets.cpp:364 -msgid "" -"A publishable entry providing a synopsis of the contents of the object data." -msgstr "" -"Ein veröffentlichbarer Eintrag, der eine Zusammenfassung des Inhalts der " -"Objektdaten zur Verfügung stellt." - -#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:408 -msgid "Credit" -msgstr "Anbieter" - -#: src/datasets.cpp:368 -msgid "" -"Identifies the provider of the object data, not necessarily the owner/" -"creator." -msgstr "" -"Identifiziert den Anbieter der Objektdaten. Dies ist nicht unbedingt der " -"Besitzer oder der Ersteller." - -#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:166 -#: src/properties.cpp:415 -msgid "Source" -msgstr "Quelle" - -#: src/datasets.cpp:372 -msgid "" -"Identifies the original owner of the intellectual content of the object " -"data. This could be an agency, a member of an agency or an individual." -msgstr "" -"Identifiziert den Originalbesitzer des intellektuellen Inhalts der " -"Objektdaten. Dies kan eine Agentur, ein Mitglied einer Agentur oder ein " -"Individuum sein." - -#: src/datasets.cpp:377 -msgid "Contains any necessary copyright notice." -msgstr "Enthält die Notwendigen Copyright-Notizen." - -#: src/datasets.cpp:379 -msgid "Copyright Notice" -msgstr "Copyright-Notiz" - -#: src/datasets.cpp:380 src/properties.cpp:937 src/properties.cpp:946 -msgid "Contact" -msgstr "Kontakt" - -#: src/datasets.cpp:381 -msgid "" -"Identifies the person or organisation which can provide further background " -"information on the object data." -msgstr "" -"Identifiziert die Person oder Organisation, die weitere " -"Hintergrundinformationen über die Objektdaten zur Verfügung stellen kann." - -#: src/datasets.cpp:384 -msgid "Caption" -msgstr "Abschnitt" - -#: src/datasets.cpp:385 -msgid "A textual description of the object data." -msgstr "Eine textuelle Beschreibung der Objektdaten." - -#: src/datasets.cpp:387 src/properties.cpp:151 src/properties.cpp:981 -msgid "Description" -msgstr "Beschreibung" - -#: src/datasets.cpp:388 -msgid "Writer" -msgstr "Schreiber" - -#: src/datasets.cpp:389 -msgid "" -"Identification of the name of the person involved in the writing, editing or " -"correcting the object data or caption/abstract." -msgstr "" -"Identifiziert den Namen der Person die beim Schreiben, Bearbeiten oder dem " -"Korrigieren der Objektdaten, der Beschriftung oder der Zusammenfassung " -"beteilgt war." - -#: src/datasets.cpp:392 -msgid "Rasterized Caption" -msgstr "Gerasterte Beschriftung" - -#: src/datasets.cpp:393 -msgid "" -"Contains the rasterized object data description and is used where characters " -"that have not been coded are required for the caption." -msgstr "" -"Enthält die Beschreibung der Objektdaten gerastert und wird benutzt wenn " -"nicht kodierte Zeichen für die Beschriftung benötigt werden ." - -#: src/datasets.cpp:397 -msgid "Indicates the color components of an image." -msgstr "Gibt die Farbkomponenten eines Bildes an." - -#: src/datasets.cpp:399 -msgid "Image Orientation" -msgstr "Bild-Orientierung" - -#: src/datasets.cpp:400 -msgid "Indicates the layout of an image." -msgstr "Gibt das Layout eines Bildes an." - -#: src/datasets.cpp:402 src/properties.cpp:157 -msgid "Language" -msgstr "Sprache" - -#: src/datasets.cpp:403 -msgid "" -"Describes the major national language of the object, according to the 2-" -"letter codes of ISO 639:1988. Does not define or imply any coded character " -"set, but is used for internal routing, e.g. to various editorial desks." -msgstr "" -"Beschreibt die Hauptsprache eines Objektes. Dazu wird der zwei Zeichen-Kode " -"nach ISO 639:1988 benutzt. Dadurch wird keine Zeichensatzkodierung definiert " -"oder impliziert. Es kann aber für eine interen Weiterleitung benutzt werden, " -"z:B. durch die richtigen redaktionellen Abteilungen." - -#: src/datasets.cpp:408 -msgid "Audio Type" -msgstr "Audiotyp" - -#: src/datasets.cpp:409 -msgid "Indicates the type of an audio content." -msgstr "Gibt den Typen eines Audioinhalts an." - -#: src/datasets.cpp:411 -msgid "Audio Rate" -msgstr "Audiorate" - -#: src/datasets.cpp:412 -msgid "Indicates the sampling rate in Hertz of an audio content." -msgstr "Gibt die Sampling Rate eines Audioinhalts in Hertz an." - -#: src/datasets.cpp:414 -msgid "Audio Resolution" -msgstr "Audioauflösung" - -#: src/datasets.cpp:415 -msgid "Indicates the sampling resolution of an audio content." -msgstr "Gibt die Sampling-Auflösung eines Audioinhalts an." - -#: src/datasets.cpp:417 -msgid "Audio Duration" -msgstr "Audiodauer" - -#: src/datasets.cpp:418 -msgid "Indicates the duration of an audio content." -msgstr "Gibt der Dauer eines Audioinhalts an." - -#: src/datasets.cpp:420 -msgid "Audio Outcue" -msgstr "Audio-Outcue" - -#: src/datasets.cpp:421 -msgid "" -"Identifies the content of the end of an audio object data, according to " -"guidelines established by the provider." -msgstr "" -"Identifiziert den Inhlat am Ende eines Audiodatenobjektes nach den " -"Anbieterrichtlinen." - -#: src/datasets.cpp:424 -msgid "Preview Format" -msgstr "Vorschauformat" - -#: src/datasets.cpp:425 -msgid "" -"A binary number representing the file format of the object data preview. The " -"file format must be registered with IPTC or NAA organizations with a unique " -"number assigned to it." -msgstr "" -"Eine binäre Zahl die das Dateiformat der Vorschau der Objektdaten " -"repräsentiert. Das Dateiformat muss bei den Organisationen IPTC oder NAA " -"registriert sein und bekommt dort die eindeutige Zahl zugewiesen." - -#: src/datasets.cpp:429 -msgid "Preview Version" -msgstr "Vorschauversion" - -#: src/datasets.cpp:430 -msgid "" -"A binary number representing the particular version of the object data " -"preview file format specified in tag ." -msgstr "" -"Eine binäre Zahl die die genaue Version eines der Vorschau eines " -"Datenobjektes im Feld angibt." - -#: src/datasets.cpp:433 -msgid "Preview Data" -msgstr "Vorschaudaten" - -#: src/datasets.cpp:434 -msgid "Binary image preview data." -msgstr "Vorschaudaten des binären Bildes." - -#: src/datasets.cpp:436 src/datasets.cpp:437 -msgid "(Invalid)" -msgstr "(Ungültig)" - -#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 -msgid "Unknown dataset" -msgstr "Unbekannter Datensatz" - -#: src/error.cpp:55 -#, fuzzy -msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." -msgstr "Fehler %0: arg1=%1, arg2=%2, arg3=%3." - -#: src/error.cpp:56 -msgid "Success" -msgstr "Erfolgreich" - -#: src/error.cpp:59 -msgid "This does not look like a %1 image" -msgstr "Dies scheint kein %1-Bild zu sein." - -#: src/error.cpp:60 -msgid "Invalid dataset name `%1'" -msgstr "Ungültiger Datensatzname \"%1\"" - -#: src/error.cpp:61 -msgid "Invalid record name `%1'" -msgstr "Ungültiger Datensatzname \"%1\"" - -#: src/error.cpp:62 -msgid "Invalid key `%1'" -msgstr "Ungültiger Schlüssel \"%1\"" - -#: src/error.cpp:63 -msgid "Invalid tag name or ifdId `%1', ifdId %2" -msgstr "Ungültiger Feldname oder IFD-ID `%1', IFD-ID %2" - -#: src/error.cpp:64 -msgid "Value not set" -msgstr "Wert nicht gesetzt" - -#: src/error.cpp:65 -msgid "%1: Failed to open the data source: %2" -msgstr "%1: Die Datenquelle konnte nicht geöffnet werden: %2" - -#: src/error.cpp:66 -msgid "%1: Failed to open file (%2): %3" -msgstr "%1: Die Datei konnte nicht geöffnet werden (%2): %3" - -#: src/error.cpp:67 -msgid "%1: The file contains data of an unknown image type" -msgstr "%1: Die Datei enthält Daten eines unbekannten Bildtyps." - -#: src/error.cpp:68 -msgid "The memory contains data of an unknown image type" -msgstr "Der Speicher enthält Daten eines unbekannten Bildtypes." - -#: src/error.cpp:69 -msgid "Image type %1 is not supported" -msgstr "Der Bildtyp %1 wird nicht unterstützt." - -#: src/error.cpp:70 -msgid "Failed to read image data" -msgstr "Die Bilddaten konnten nicht gelesen werden." - -#: src/error.cpp:71 -msgid "This does not look like a JPEG image" -msgstr "Dies scheint kein JPEG-Bild zu sein." - -#: src/error.cpp:72 -#, fuzzy -msgid "%1: Failed to map file for reading and writing: %2" -msgstr "Die Kommandozeile konnte nicht gelesen werden\n" - -#: src/error.cpp:73 -msgid "%1: Failed to rename file to %2: %3" -msgstr "%1: Datei konnte nicht umbenannt werden nach %2: %3" - -#: src/error.cpp:74 -msgid "%1: Transfer failed: %2" -msgstr "%1: Transfer fehlgeschlagen: %2" - -#: src/error.cpp:75 -msgid "Memory transfer failed: %1" -msgstr "Speichertransfer fehlgeschlagen: %1" - -#: src/error.cpp:76 -msgid "Failed to read input data" -msgstr "Die Eingabedaten konnten nicht gelesen werden." - -#: src/error.cpp:77 -msgid "Failed to write image" -msgstr "Das Bild konnte nicht geschrieben werden." - -#: src/error.cpp:78 -msgid "Input data does not contain a valid image" -msgstr "Die Eingabedaten enthalten kein gültiges Bild." - -#: src/error.cpp:79 -msgid "Invalid ifdId %1" -msgstr "Ungültige IFD-ID %1" - -#: src/error.cpp:80 -msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" -msgstr "Entry::setValue: Wert zu groß (Feld=%1, Größe=%2, Angefragt=%3)" - -#: src/error.cpp:81 -msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" -msgstr "Entry::setDataArea: Wert zu groß (Feld=%1, Größe=%2, Angefragt=%3)" - -#: src/error.cpp:82 -msgid "Offset out of range" -msgstr "Offset ausserhalb des zulässigen Bereiches" - -#: src/error.cpp:83 -msgid "Unsupported data area offset type" -msgstr "Nicht unterstützter Datenbereich für den Offsettyp" - -#: src/error.cpp:84 -msgid "Invalid charset: `%1'" -msgstr "Ungültiger Zeichensatz: \"%1\"" - -#: src/error.cpp:85 -msgid "Unsupported date format" -msgstr "Nicht unterstütztes Datumsformat" - -#: src/error.cpp:86 -msgid "Unsupported time format" -msgstr "Nicht unterstütztes Zeitformat" - -#: src/error.cpp:87 -msgid "Writing to %1 images is not supported" -msgstr "Das Schreiben von %2-Bildern wird nicht unterstützt." - -#: src/error.cpp:88 -msgid "Setting %1 in %2 images is not supported" -msgstr "Das Setzen von %1 in %2-Bildern wird nicht unterstützt." - -#: src/error.cpp:89 -msgid "This does not look like a CRW image" -msgstr "Dies scheint kein CRW Bild zu sein." - -#: src/error.cpp:90 -msgid "%1: Not supported" -msgstr "%1: Nicht unterstützt" - -#: src/error.cpp:91 -msgid "No namespace info available for XMP prefix `%1'" -msgstr "Keine Namensrauminformation für den XMP-Präfix `%1' verfügbar" - -#: src/error.cpp:92 -msgid "No prefix registered for namespace `%2', needed for property path `%1'" -msgstr "" -"Es ist kein Präfix registriert für den Namensraum `%2', dieser wird benötigt " -"für den Eigenschaftspfad `%1'" - -#: src/error.cpp:93 -msgid "Size of %1 JPEG segment is larger than 65535 bytes" -msgstr "Die Größe des %1 JPEG-Segments ist größer als 5535 Bytes." - -#: src/error.cpp:94 -msgid "Unhandled Xmpdatum %1 of type %2" -msgstr "Nicht verwaltbares XMP-Datum %1 vom Typ %2" - -#: src/error.cpp:95 -msgid "Unhandled XMP node %1 with opt=%2" -msgstr "Nicht verwaltbarer XMP-Knoten %1 mit opt=%2" - -#: src/error.cpp:96 -msgid "XMP Toolkit error %1: %2" -msgstr "Fehler des XMP-Werkzeugsatzes %1: %2" - -#: src/error.cpp:97 -msgid "Failed to decode Lang Alt property %1 with opt=%2" -msgstr "" -"Fehler beim Dekodieren der alternativen Spracheigenschaft %1 mit opt=%2" - -#: src/error.cpp:98 -msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" -msgstr "Fehler beim Dekodieren der alternativen Sprachvermerks %1 mit opt=%2" - -#: src/error.cpp:99 -msgid "Failed to encode Lang Alt property %1" -msgstr "Fehler beim Enkodieren der alternativen Spracheigenschaft %1" - -#: src/error.cpp:100 -msgid "Failed to determine property name from path %1, namespace %2" -msgstr "" -"Fehler bei der Bestimmung des Eigenschaftsnamen aus dem Pfad %1, Namensraum " -"%2" - -#: src/error.cpp:101 -msgid "Schema namespace %1 is not registered with the XMP Toolkit" -msgstr "Namensraum des Schemas %1 ist nicht im XMP Werkzeugsatz registriert" - -#: src/error.cpp:102 -msgid "No namespace registered for prefix `%1'" -msgstr "Es ist kein Namensraum für den Präfix `%1' registriert" - -#: src/error.cpp:103 -msgid "" -"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" -"%1', `%2', `%3'" -msgstr "" -"Aliase werden nicht unterstützt. Bitte senden Sie dieses XMP-Packet an " -"ahuggel@gmx.net `%1', `%2', `%3'" - -#: src/error.cpp:104 -msgid "Invalid XmpText type `%1'" -msgstr "Ungültiger Xmp-Texttyp `%1'" - -#: src/error.cpp:105 -msgid "TIFF directory %1 has too many entries" -msgstr "Der TIFF Ordner %1 hat zu viele Einträge" - -#: src/error.cpp:106 -msgid "Multiple TIFF array element tags %1 in one directory" -msgstr "Mehrfache TIFF-Feldelemente %1 in einem Ordner" - -#: src/error.cpp:107 -msgid "TIFF array element tag %1 has wrong type" -msgstr "Das TIFF-Feldelement %1 hat den falschen Typ" - -#: src/error.cpp:108 -msgid "%1 has invalid XMP value type `%2'" -msgstr "%1 hat ungültigen XMP-Wertetyp \"%1\"" - -#: src/exiv2.cpp:212 -msgid "Copyright (C) 2004-2012 Andreas Huggel.\n" -msgstr "Copyright (C) 2004-2012 Andreas Huggel.\n" - -#: src/exiv2.cpp:214 -msgid "" -"This program is free software; you can redistribute it and/or\n" -"modify it under the terms of the GNU General Public License\n" -"as published by the Free Software Foundation; either version 2\n" -"of the License, or (at your option) any later version.\n" -msgstr "" -"Dieses Programm ist freie Software. Sie können es weitergeben und/oder\n" -"verändern unter den Bedingungen der GNU General Public Lizenz, die von\n" -"der Free Software Foundation veröffentlicht wurde. Gültig ist die Version 2\n" -"der Lizenz oder, wenn Sie es wünschen, spätere Versionen.\n" - -#: src/exiv2.cpp:219 -msgid "" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -msgstr "" -"Dieses Programm wird Ihnen in der Hoffnung zur Verfügung gestellt,\n" -"das Sie es brauchbar finden. Es gibt KEINE GARANTIE, noch nicht mal\n" -"eine implizite Zusicherung allgemeiner Gebrauchstauglichkeit oder der\n" -"Zusicherung der erforderlichen Gebrauchstauglichkeit. Weitere Details\n" -"finden Sie in der GNU General Public Lizenz.\n" - -#: src/exiv2.cpp:224 -msgid "" -"You should have received a copy of the GNU General Public\n" -"License along with this program; if not, write to the Free\n" -"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" -"Boston, MA 02110-1301 USA\n" -msgstr "" -"Sie sollten mit diesem Programm eine Kopie der GNU General Public\n" -"Lizenz bekommen haben. Falls nicht, so wenden Sie sich bitte an die\n" -"Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" -"Boston, MA 02110-1301 USA\n" - -#: src/exiv2.cpp:232 -msgid "Usage:" -msgstr "Benutzung:" - -#: src/exiv2.cpp:233 -msgid "" -"[ options ] [ action ] file ...\n" -"\n" -msgstr "" -"[ Optionen ] [ Aktionen ] Datei ...\n" -"\n" - -#: src/exiv2.cpp:234 -msgid "Manipulate the Exif metadata of images.\n" -msgstr "Ändert die Exif-Metadaten von Bildern.\n" - -#: src/exiv2.cpp:240 -msgid "" -"\n" -"Actions:\n" -msgstr "" -"\n" -"Aktionen:\n" - -#: src/exiv2.cpp:241 -msgid "" -" ad | adjust Adjust Exif timestamps by the given time. This action\n" -" requires at least one of the -a, -Y, -O or -D options.\n" -msgstr "" -" ad | adjust ändert die Exif-Zeitstempel um eine gegebene Zeit. Diese\n" -" Aktion benötigt mindestens eine der Optionen -a, -Y, -O oder " -"-D.\n" - -#: src/exiv2.cpp:243 -msgid " pr | print Print image metadata.\n" -msgstr " pr | print Druckt die Metadaten des Bildes.\n" - -#: src/exiv2.cpp:244 -msgid " rm | delete Delete image metadata from the files.\n" -msgstr " rm | delete Löscht die Bildmetadaten aus den Dateien.\n" - -#: src/exiv2.cpp:245 -msgid "" -" in | insert Insert metadata from corresponding *.exv files.\n" -" Use option -S to change the suffix of the input files.\n" -msgstr "" -" in | insert Fügt die Metadaten aus den zugehörigen *.exv Dateien ein.\n" -" Benutzen Sie die Option -S um die Erweiterung der " -"Eingabedateien zu ändern.\n" - -#: src/exiv2.cpp:247 -msgid "" -" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" -msgstr "" -" ex | extract Extrahiert die Metadaten in *.exv, *.xmp und " -"Bildvorschaudateien.\n" - -#: src/exiv2.cpp:248 -msgid "" -" mv | rename Rename files and/or set file timestamps according to the\n" -" Exif create timestamp. The filename format can be set with\n" -" -r format, timestamp options are controlled with -t and -T.\n" -msgstr "" -" mv | rename Benennt Dateien und/oder setzt die Dateizeitstempel passend " -"zu den\n" -" Exif-Erstellungszeitstempeln. Das Format der Dateinamen kann " -"mit der Option\n" -" -r format gesetzt werden. Die Optionen der Zeitstempel " -"werden mit -t und -T kontrolliert.\n" - -#: src/exiv2.cpp:251 -msgid "" -" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" -" IPTC metadata of image files or set the JPEG comment.\n" -" Requires option -c, -m or -M.\n" -msgstr "" -" mo | modify Wendet Kommandos zum Ändern (Hinzufügen, Setzen, Löschen) " -"der Exif- und\n" -" IPTC Metadaten von Bilddateien an oder setzt das JPEG-" -"Kommentar.\n" -" Benötigt zusätzlich eine Option von-c, -m oder -M.\n" - -#: src/exiv2.cpp:254 -msgid "" -" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" -" Exif tag.\n" -msgstr "" -" fi | fixiso Kopiert die ISO-Einstellungen aus der Nikon-" -"Herstellerbemerkung in das reguläre\n" -" Exif-Feld.\n" - -#: src/exiv2.cpp:256 -msgid "" -" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" -" character encoding can be specified with the -n option.\n" -msgstr "" - -#: src/exiv2.cpp:258 -msgid "" -"\n" -"Options:\n" -msgstr "" -"\n" -"Optionen:\n" - -#: src/exiv2.cpp:259 -msgid " -h Display this help and exit.\n" -msgstr " -h Gibt diese Hilfe aus und beendet sich.\n" - -#: src/exiv2.cpp:260 -msgid " -V Show the program version and exit.\n" -msgstr " -V Zeigt die Programmversion an und beendet sich.\n" - -#: src/exiv2.cpp:261 -msgid " -v Be verbose during the program run.\n" -msgstr " -v Ausführliche Meldungen während des Programmlaufs.\n" - -#: src/exiv2.cpp:262 -#, fuzzy -msgid "" -" -q Silence warnings and error messages during the program run " -"(quiet).\n" -msgstr " -v Ausführliche Meldungen während des Programmlaufs.\n" - -#: src/exiv2.cpp:263 -msgid "" -" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" -msgstr "" - -#: src/exiv2.cpp:264 -msgid " -b Show large binary values.\n" -msgstr " -b zeigt große binäre Werte an.\n" - -#: src/exiv2.cpp:265 -#, fuzzy -msgid " -u Show unknown tags.\n" -msgstr " -u Zeigt keine unbekannten Felder an.\n" - -#: src/exiv2.cpp:266 -msgid " -g key Only output info for this key (grep).\n" -msgstr "" - -#: src/exiv2.cpp:267 -msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" -msgstr "" - -#: src/exiv2.cpp:268 -msgid " -k Preserve file timestamps (keep).\n" -msgstr " -k Bewahrt die Dateizeitstempel (keep).\n" - -#: src/exiv2.cpp:269 -msgid "" -" -t Also set the file timestamp in 'rename' action (overrides -k).\n" -msgstr "" -" -t Setzt beim \"Umbennenen\" auch die Zeitstempel der Datei " -"(überschreibt -k).\n" - -#: src/exiv2.cpp:270 -msgid "" -" -T Only set the file timestamp in 'rename' action, do not rename\n" -" the file (overrides -k).\n" -msgstr "" -" -T Setzt nur die Dateizeitstempel in der Aktion \"umbenennen\" und " -"benennt nicht die \n" -" Datei um (überschreibt -k).\n" - -#: src/exiv2.cpp:272 -msgid " -f Do not prompt before overwriting existing files (force).\n" -msgstr "" -" -f Vor dem überschreiben von existierenden Dateien nicht nachfragen " -"(force).\n" - -#: src/exiv2.cpp:273 -msgid " -F Do not prompt before renaming files (Force).\n" -msgstr " -F Vor dem umbenennen nicht nachfragen (Force).\n" - -#: src/exiv2.cpp:274 -msgid "" -" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" -" is only used with the 'adjust' action.\n" -msgstr "" -" -a time Zeitjustierung im Format [-]HH[:MM[:SS]]. Diese Option wird\n" -" nur in Zusammenhang mit der Aktion 'Justieren' benutzt.\n" - -#: src/exiv2.cpp:276 -msgid " -Y yrs Year adjustment with the 'adjust' action.\n" -msgstr " -Y yrs Justierung von Jahren in der Aktion \"justieren\".\n" - -#: src/exiv2.cpp:277 -msgid " -O mon Month adjustment with the 'adjust' action.\n" -msgstr " -O mon Justierung der Monate in der Aktion 'justieren'.\n" - -#: src/exiv2.cpp:278 -msgid " -D day Day adjustment with the 'adjust' action.\n" -msgstr " -D day Jusitierung von tagen in der Aktion \"Justierung\".\n" - -#: src/exiv2.cpp:279 -msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" -msgstr " -p mode Druckmodus für die Aktion 'Drucken'. Mögliche Modi sind:\n" - -#: src/exiv2.cpp:280 -msgid " s : print a summary of the Exif metadata (the default)\n" -msgstr "" -" s : druckt eine Zusammenfassung der Exif-Metadaten (Standard)\n" - -#: src/exiv2.cpp:281 -#, fuzzy -msgid "" -" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" -msgstr "" -" v : Vollständige Exif-Datenwerte (Kurzform für -Pxgnycv)\n" - -#: src/exiv2.cpp:282 -#, fuzzy -msgid " t : interpreted (translated) Exif data (-PEkyct)\n" -msgstr "" -" t : interpretiert (übersetzt) die Exif-Daten (Kurzform für -" -"Pkyct)\n" - -#: src/exiv2.cpp:283 -#, fuzzy -msgid " v : plain Exif data values (-PExgnycv)\n" -msgstr "" -" v : Vollständige Exif-Datenwerte (Kurzform für -Pxgnycv)\n" - -#: src/exiv2.cpp:284 -#, fuzzy -msgid " h : hexdump of the Exif data (-PExgnycsh)\n" -msgstr " h : Hexdump der Exif-Daten (Kurzform für -Pxgnycsh)\n" - -#: src/exiv2.cpp:285 -#, fuzzy -msgid " i : IPTC data values (-PIkyct)\n" -msgstr " i : IPTC-Datenwerte\n" - -#: src/exiv2.cpp:286 -#, fuzzy -msgid " x : XMP properties (-PXkyct)\n" -msgstr " x : XMP-Eigenschaften\n" - -#: src/exiv2.cpp:287 src/exiv2.cpp:310 -msgid " c : JPEG comment\n" -msgstr " c : JPEG-Kommentar\n" - -#: src/exiv2.cpp:288 -#, fuzzy -msgid " p : list available previews\n" -msgstr " l : Feldlabel\n" - -#: src/exiv2.cpp:289 -#, fuzzy -msgid "" -" -P flgs Print flags for fine control of tag lists ('print' action):\n" -msgstr "" -" -P cols Druckt Spalten für die Exif-Feldliste (Aktion 'Drucken' action). " -"Gültig sind:\n" - -#: src/exiv2.cpp:290 -#, fuzzy -msgid " E : include Exif tags in the list\n" -msgstr " s : Größe in Bytes\n" - -#: src/exiv2.cpp:291 -#, fuzzy -msgid " I : IPTC datasets\n" -msgstr " i : IPTC-Daten\n" - -#: src/exiv2.cpp:292 -#, fuzzy -msgid " X : XMP properties\n" -msgstr " x : XMP-Eigenschaften\n" - -#: src/exiv2.cpp:293 -#, fuzzy -msgid " x : print a column with the tag number\n" -msgstr " x : Druckt eine Spalte mit dem Feldwert\n" - -#: src/exiv2.cpp:294 -msgid " g : group name\n" -msgstr " g : Gruppenname\n" - -#: src/exiv2.cpp:295 -msgid " k : key\n" -msgstr " k : Schlüssel\n" - -#: src/exiv2.cpp:296 -msgid " l : tag label\n" -msgstr " l : Feldlabel\n" - -#: src/exiv2.cpp:297 -msgid " n : tag name\n" -msgstr " n : Feldname\n" - -#: src/exiv2.cpp:298 -msgid " y : type\n" -msgstr " y : Typ\n" - -#: src/exiv2.cpp:299 -msgid " c : number of components (count)\n" -msgstr " c : Anzahl der Komponenten (Zähler)\n" - -#: src/exiv2.cpp:300 -msgid " s : size in bytes\n" -msgstr " s : Größe in Bytes\n" - -#: src/exiv2.cpp:301 -msgid " v : plain data value\n" -msgstr " v : Vollständiger Datenwert\n" - -#: src/exiv2.cpp:302 -msgid " t : interpreted (translated) data\n" -msgstr " t : interpretierte, übersetzte Daten\n" - -#: src/exiv2.cpp:303 -msgid " h : hexdump of the data\n" -msgstr " h : Hexdump der Daten\n" - -#: src/exiv2.cpp:304 -msgid "" -" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" -msgstr " -d ziel Ziele für die Aktion \"Löschen\". Mögliche Ziele sind:\n" - -#: src/exiv2.cpp:305 -msgid " a : all supported metadata (the default)\n" -msgstr " a : Alle unterstützten Metadaten (Standard)\n" - -#: src/exiv2.cpp:306 -msgid " e : Exif section\n" -msgstr " e : Exif-Abschnitt\n" - -#: src/exiv2.cpp:307 -msgid " t : Exif thumbnail only\n" -msgstr " t : Nur die Exif-Vorschau\n" - -#: src/exiv2.cpp:308 -msgid " i : IPTC data\n" -msgstr " i : IPTC-Daten\n" - -#: src/exiv2.cpp:309 -msgid " x : XMP packet\n" -msgstr " x : XMP-Paket\n" - -#: src/exiv2.cpp:311 -msgid "" -" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" -" the same as those for the -d option, plus a modifier:\n" -" X : Insert metadata from an XMP sidecar file .xmp\n" -" Only JPEG thumbnails can be inserted, they need to be named\n" -" -thumb.jpg\n" -msgstr "" -" -i ziel Einfügeziele für die Aktion \"Einfügen\". Mögliche Ziele sind\n" -" die gleichen wie bei der Option -d und:\n" -" X : Fügt die Metadaten aus der XMP-Zusatzdatei .xmp ein\n" -" Nur JPEG Bildvorschauen können eingefügt werden. Sie müssen den " -"Namen\n" -" -thumb.jpg haben.\n" - -#: src/exiv2.cpp:316 -#, fuzzy -msgid "" -" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" -" are the same as those for the -d option, plus a target to " -"extract\n" -" preview images and a modifier to generate an XMP sidecar file:\n" -" p[[, ...]] : Extract preview images.\n" -" X : Extract metadata to an XMP sidecar file .xmp\n" -msgstr "" -" -e ziel Extraktionsziele für die Aktion 'Extrahieren'. Mögliche Ziele " -"sind\n" -" die gleichen wie bei der Option -d, und:\n" -" X : Extrahiert die Metadaten in die XMP-Zusatzdatei .xmp\n" - -#: src/exiv2.cpp:321 -msgid "" -" -r fmt Filename format for the 'rename' action. The format string\n" -" follows strftime(3). The following keywords are supported:\n" -msgstr "" -" -r fmt Dateinamensformat für die Aktion 'umbenennen'. Die " -"Formatierungszeichenkette\n" -" entspricht strftime(3). Die folgenden Schlüsselwörter werden " -"unterstützt:\n" - -#: src/exiv2.cpp:323 -msgid " :basename: - original filename without extension\n" -msgstr " :basename: - Originaldateiname ohne Erweiterung\n" - -#: src/exiv2.cpp:324 -msgid "" -" :dirname: - name of the directory holding the original file\n" -msgstr "" -" :dirname: - Name des Ordners in dem die Originaldatei liegt\n" - -#: src/exiv2.cpp:325 -msgid " :parentname: - name of parent directory\n" -msgstr " :parentname: - Name des Elternordners\n" - -#: src/exiv2.cpp:326 -msgid " Default filename format is " -msgstr " Das Standardformat des Dateinamens ist " - -#: src/exiv2.cpp:328 -msgid " -c txt JPEG comment string to set in the image.\n" -msgstr " -c txt JPEG-Kommentar der im Bild gesetzt wird.\n" - -#: src/exiv2.cpp:329 -msgid "" -" -m file Command file for the modify action. The format for commands is\n" -" set|add|del [[] ].\n" -msgstr "" -" -m datei Befehlsdatei für die Aktion \"Modifizieren\". Das Format für die " -"Befehle ist\n" -" set|add|del [[] ].\n" - -#: src/exiv2.cpp:331 -msgid "" -" -M cmd Command line for the modify action. The format for the\n" -" commands is the same as that of the lines of a command file.\n" -msgstr "" -" -M bef Befehlszeile für die Aktion \"Modifizieren\". Das Format für die\n" -" Befehle ist das gleiche wie der Befehlsdatei.\n" - -#: src/exiv2.cpp:333 -msgid "" -" -l dir Location (directory) for files to be inserted from or extracted " -"to.\n" -msgstr "" -" -l ord Lokation (Ordner) für die Dateien aus den eingefügt bzw. " -"extrahiert wird.\n" - -#: src/exiv2.cpp:334 -msgid "" -" -S .suf Use suffix .suf for source files for insert command.\n" -"\n" -msgstr "" -" -S .suf Benutzt den Suffix .suf für die Quelldateien beim Befehl " -"Einfügen.\n" -"\n" - -#: src/exiv2.cpp:371 src/exiv2.cpp:401 src/exiv2.cpp:436 src/exiv2.cpp:495 -#: src/exiv2.cpp:682 -msgid "Option" -msgstr "Option" - -#: src/exiv2.cpp:372 -msgid "requires an argument\n" -msgstr "benötigt ein Argument\n" - -#: src/exiv2.cpp:376 -msgid "Unrecognized option" -msgstr "Unbekannte Option" - -#: src/exiv2.cpp:382 -msgid "getopt returned unexpected character code" -msgstr "\"getopt\" gab einen unerwarteten Zeichencode zurück" - -#: src/exiv2.cpp:402 -#, fuzzy -msgid "Invalid argument" -msgstr "Ungültiger Schlüssel" - -#: src/exiv2.cpp:427 src/exiv2.cpp:480 -msgid "Ignoring surplus option" -msgstr "Die überzählige Option wird ignoriert" - -#: src/exiv2.cpp:437 src/exiv2.cpp:497 src/exiv2.cpp:683 -msgid "is not compatible with a previous option\n" -msgstr "kann nicht mit der vorangegangene Option zusammen benutzt werden\n" - -#: src/exiv2.cpp:452 -msgid "Ignoring surplus option -a" -msgstr "Die überflüssige Option \"-a\" wird ignoriert" - -#: src/exiv2.cpp:458 -msgid "Error parsing -a option argument" -msgstr "Fehler beim Verarbeiten des Arguments \"-a\"" - -#: src/exiv2.cpp:465 -msgid "Option -a is not compatible with a previous option\n" -msgstr "" -"Die Option \"-a\" kann nicht mit der vorangegangene Option zusammen benutzt " -"werden\n" - -#: src/exiv2.cpp:487 -msgid "Error parsing" -msgstr "Fehler bei der Verarbeitung" - -#: src/exiv2.cpp:489 -msgid "option argument" -msgstr "Optionsargument" - -#: src/exiv2.cpp:520 -msgid "Unrecognized print mode" -msgstr "Unbekannter Druckmodus" - -#: src/exiv2.cpp:528 -msgid "Ignoring surplus option -p" -msgstr "Die überflüssige Option \"-p\" wird ignoriert" - -#: src/exiv2.cpp:532 -msgid "Option -p is not compatible with a previous option\n" -msgstr "" -"Die Option \"-p\" kann nicht mit der vorangegangene Option zusammen benutzt " -"werden\n" - -#: src/exiv2.cpp:563 -msgid "Unrecognized print item" -msgstr "Unbekannter Druckeintrag" - -#: src/exiv2.cpp:572 -msgid "Ignoring surplus option -P" -msgstr "Die überflüssige Option \"-P\" wird ignoriert" - -#: src/exiv2.cpp:576 -msgid "Option -P is not compatible with a previous option\n" -msgstr "" -"Die Option \"-P\" kann nicht mit der vorangegangene Option zusammen benutzt " -"werden\n" - -#: src/exiv2.cpp:603 -msgid "Option -d is not compatible with a previous option\n" -msgstr "" -"Die Option \"-d\" kann nicht mit der vorangegangene Option zusammen benutzt " -"werden\n" - -#: src/exiv2.cpp:631 -msgid "Option -e is not compatible with a previous option\n" -msgstr "" -"Die Option \"-e\" kann nicht mit der vorangegangene Option zusammen benutzt " -"werden\n" - -#: src/exiv2.cpp:659 -msgid "Option -i is not compatible with a previous option\n" -msgstr "" -"Die Option \"-i\" kann nicht mit der vorangegangene Option zusammen benutzt " -"werden\n" - -#: src/exiv2.cpp:700 -msgid "Action adjust is not compatible with the given options\n" -msgstr "" -"Die Aktion \"adjust\" kann nicht mit den anderen Optionen zusammen benutzt " -"werden\n" - -#: src/exiv2.cpp:709 -msgid "Action print is not compatible with the given options\n" -msgstr "" -"Die Aktion \"print\" kann nicht mit den anderen Optionen zusammen benutzt " -"werden\n" - -#: src/exiv2.cpp:718 -msgid "Action delete is not compatible with the given options\n" -msgstr "" -"Die Aktion \"delete\" kann nicht mit den anderen Option zusammen benutzt " -"werden\n" - -#: src/exiv2.cpp:729 -msgid "Action extract is not compatible with the given options\n" -msgstr "" -"Die Aktion \"extract\" kann nicht mit den anderen Optionen zusammen benutzt " -"werden\n" - -#: src/exiv2.cpp:740 -msgid "Action insert is not compatible with the given options\n" -msgstr "" -"Die Aktion \"insert\" kann nicht mit den anderen Optionen zusammen benutzt " -"werden\n" - -#: src/exiv2.cpp:749 -msgid "Action rename is not compatible with the given options\n" -msgstr "" -"Die Aktion \"rename\" kann nicht mit den anderen Optionen zusammen benutzt " -"werden\n" - -#: src/exiv2.cpp:758 -msgid "Action modify is not compatible with the given options\n" -msgstr "" -"Die Aktion \"modify\" kann nicht mit den anderen Optionen zusammen benutzt " -"werden\n" - -#: src/exiv2.cpp:767 -msgid "Action fixiso is not compatible with the given options\n" -msgstr "" -"Die Aktion \"fixiso\" kann nicht mit den anderen Optionen zusammen benutzt " -"werden \n" - -#: src/exiv2.cpp:776 -#, fuzzy -msgid "Action fixcom is not compatible with the given options\n" -msgstr "" -"Die Aktion \"fixiso\" kann nicht mit den anderen Optionen zusammen benutzt " -"werden \n" - -#: src/exiv2.cpp:800 -msgid "An action must be specified\n" -msgstr "Eine Aktion muss angegeben werden\n" - -#: src/exiv2.cpp:809 -msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" -msgstr "" -"Die Aktion \"justieren\" benötigt mindestens eine der Optionen \"-a\", \"-Y" -"\", \"-O\" oder \"-D\"\n" - -#: src/exiv2.cpp:815 -msgid "Modify action requires at least one -c, -m or -M option\n" -msgstr "" -"Die Aktion \"modify\" benötigt mindestens eine der Optionen \"-c\", \"-m\" " -"oder \"-M\"\n" - -#: src/exiv2.cpp:819 -msgid "At least one file is required\n" -msgstr "Es muss mindestens eine Datei angegeben werden\n" - -#: src/exiv2.cpp:825 -msgid "Error parsing -m option arguments\n" -msgstr "Fehler beim verarbeiten der Argumente der Option \"-m\"\n" - -#: src/exiv2.cpp:832 -msgid "Error parsing -M option arguments\n" -msgstr "Fehler beim verarbeiten der Argumente der Option \"-M\"\n" - -#: src/exiv2.cpp:843 -msgid "-l option can only be used with extract or insert actions\n" -msgstr "" -"-l Option kann nur bei den Aktionen \"extract\" und \"insert\" benutzt " -"werden\n" - -#: src/exiv2.cpp:848 -msgid "-S option can only be used with insert action\n" -msgstr "-S Option kann nur bei der Aktion \"insert\" benutzt werden\n" - -#: src/exiv2.cpp:853 -msgid "-t option can only be used with rename action\n" -msgstr "-t Option kann nur bei der Aktion \"rename\" benutzt werden.\n" - -#: src/exiv2.cpp:858 -msgid "-T option can only be used with rename action\n" -msgstr "-T Option kann nur bei der Aktion \"rename\" benutzt werden.\n" - -#: src/exiv2.cpp:938 -msgid "Unrecognized " -msgstr "Unbekannt" - -#: src/exiv2.cpp:939 -msgid "target" -msgstr "Ziel" - -#: src/exiv2.cpp:965 -#, fuzzy -msgid "Invalid preview number" -msgstr "Intervallnummer" - -#: src/exiv2.cpp:997 -msgid "Failed to open command file for reading\n" -msgstr "Die Kommandozeile konnte nicht gelesen werden\n" - -#: src/exiv2.cpp:1010 -msgid "line" -msgstr "Zeile" - -#: src/exiv2.cpp:1033 -msgid "-M option" -msgstr "Option \"-M\"" - -#: src/exiv2.cpp:1054 src/exiv2.cpp:1113 src/exiv2.cpp:1125 -msgid "Invalid command line" -msgstr "Ungültige Kommandozeile" - -#: src/exiv2.cpp:1061 -msgid "Invalid command" -msgstr "Ungültiges Kommando" - -#: src/exiv2.cpp:1093 -msgid "Invalid key" -msgstr "Ungültiger Schlüssel" - -#: src/fujimn.cpp:62 -msgid "Soft mode 1" -msgstr "Softmodus 1" - -#: src/fujimn.cpp:63 -msgid "Soft mode 2" -msgstr "Softmodus 2" - -#: src/fujimn.cpp:65 -msgid "Hard mode 1" -msgstr "Hartmodus 1" - -#: src/fujimn.cpp:66 -msgid "Hard mode 2" -msgstr "Hartmodus 2" - -#: src/fujimn.cpp:72 src/minoltamn.cpp:219 src/minoltamn.cpp:683 -#: src/minoltamn.cpp:869 src/minoltamn.cpp:1193 src/minoltamn.cpp:2094 -#: src/nikonmn.cpp:447 src/panasonicmn.cpp:65 src/pentaxmn.cpp:312 -#: src/sonymn.cpp:165 src/tags.cpp:1428 -msgid "Daylight" -msgstr "Tageslicht" - -#: src/fujimn.cpp:74 -msgid "Fluorescent (daylight)" -msgstr "Fluoreszenz (Tageslicht)" - -#: src/fujimn.cpp:75 -msgid "Fluorescent (warm white)" -msgstr "Fluoreszenz (warmes Weiß)" - -#: src/fujimn.cpp:76 -msgid "Fluorescent (cool white)" -msgstr "Fluoreszenz (kaltes Weiß)" - -#: src/fujimn.cpp:77 src/nikonmn.cpp:448 src/sonymn.cpp:170 -msgid "Incandescent" -msgstr "Glühend" - -#: src/fujimn.cpp:87 src/fujimn.cpp:88 -msgid "None (black & white)" -msgstr "Nichts (Schwarz/Weiß)" - -#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 -msgid "Red-eye reduction" -msgstr "Rote Augen reduzieren" - -#: src/fujimn.cpp:119 src/tags.cpp:1504 src/tags.cpp:1505 -msgid "Night scene" -msgstr "Nachtszene" - -#: src/fujimn.cpp:120 src/pentaxmn.cpp:496 src/pentaxmn.cpp:503 -#: src/sonymn.cpp:518 -msgid "Program AE" -msgstr "Program \"automatische Belichtung\"" - -#: src/fujimn.cpp:121 -msgid "Natural light" -msgstr "Natürliches Licht" - -#: src/fujimn.cpp:122 -msgid "Anti-blur" -msgstr "Anti-Unschärfe" - -#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 -#: src/minoltamn.cpp:1888 src/minoltamn.cpp:2037 src/olympusmn.cpp:108 -#: src/panasonicmn.cpp:130 src/pentaxmn.cpp:481 src/sonymn.cpp:479 -#: src/sonymn.cpp:525 -msgid "Sunset" -msgstr "Sonnenuntergang" - -#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:485 -msgid "Museum" -msgstr "Museum" - -#: src/fujimn.cpp:125 src/panasonicmn.cpp:117 -msgid "Party" -msgstr "Feier" - -#: src/fujimn.cpp:126 -msgid "Flower" -msgstr "Blume" - -#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 -#: src/minoltamn.cpp:2035 src/pentaxmn.cpp:480 -msgid "Text" -msgstr "Text" - -#: src/fujimn.cpp:128 -msgid "Natural light & flash" -msgstr "Natürliches Licht & Blitz" - -#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:519 -msgid "Aperture-priority AE" -msgstr "Blendenpriorität AE" - -#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:520 -#, fuzzy -msgid "Shutter speed priority AE" -msgstr "Verschlussgeschwindigkeit-Priorität" - -#: src/fujimn.cpp:142 -msgid "No flash & flash" -msgstr "Kein Blitz & Blitz" - -#: src/fujimn.cpp:148 -msgid "Chrome" -msgstr "Chrom" - -#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 -#: src/minoltamn.cpp:1936 src/panasonicmn.cpp:211 -msgid "Wide" -msgstr "Weit" - -#: src/fujimn.cpp:160 -msgid "F0/Standard" -msgstr "F0/Standard" - -#: src/fujimn.cpp:161 -msgid "F1/Studio portrait" -msgstr "F1/Studioportrait" - -#: src/fujimn.cpp:162 -msgid "F2/Fujichrome" -msgstr "F2/Fujichrome" - -#: src/fujimn.cpp:163 -msgid "F3/Studio portrait Ex" -msgstr "F3/Studioportrait Ex" - -#: src/fujimn.cpp:164 -msgid "F4/Velvia" -msgstr "F4/Velvia" - -#: src/fujimn.cpp:169 -msgid "Auto (100-400%)" -msgstr "Auto (100-400%)" - -#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 -#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2056 -#: src/olympusmn.cpp:74 src/panasonicmn.cpp:58 -msgid "Raw" -msgstr "Roh" - -#: src/fujimn.cpp:171 -msgid "Standard (100%)" -msgstr "Standard (100%)" - -#: src/fujimn.cpp:172 -msgid "Wide mode 1 (230%)" -msgstr "Weitenmodus 1 (230%)" - -#: src/fujimn.cpp:173 -msgid "Wide mode 2 (400%)" -msgstr "Weitenmodus 2 (400%)" - -#: src/fujimn.cpp:174 -msgid "Film simulation mode" -msgstr "Film-Simulationsmodus" - -#: src/fujimn.cpp:179 src/nikonmn.cpp:213 src/nikonmn.cpp:524 -#: src/nikonmn.cpp:646 src/nikonmn.cpp:691 src/nikonmn.cpp:843 -#: src/nikonmn.cpp:867 src/nikonmn.cpp:888 src/nikonmn.cpp:1001 -#: src/nikonmn.cpp:1023 src/nikonmn.cpp:1043 src/nikonmn.cpp:1063 -#: src/nikonmn.cpp:1076 src/nikonmn.cpp:1135 src/nikonmn.cpp:1195 -#: src/nikonmn.cpp:1225 src/nikonmn.cpp:1245 src/nikonmn.cpp:1258 -#: src/nikonmn.cpp:1271 src/nikonmn.cpp:1284 src/nikonmn.cpp:1297 -#: src/nikonmn.cpp:1310 src/nikonmn.cpp:1323 src/nikonmn.cpp:1342 -#: src/nikonmn.cpp:1367 src/panasonicmn.cpp:335 src/pentaxmn.cpp:865 -#: src/properties.cpp:470 -msgid "Version" -msgstr "Version" - -#: src/fujimn.cpp:180 -msgid "Fujifilm Makernote version" -msgstr "Version der Fujifilm Herstellerbemerkung" - -#: src/fujimn.cpp:183 src/panasonicmn.cpp:250 -msgid "" -"This number is unique, and contains the date of manufacture, but is not the " -"same as the number printed on the camera body." -msgstr "" -"Die Nummer ist eindeutig und enthält das Datum der Herstellung. Es handelt " -"sich nicht, um die gleiche Nummer wie die auf dem Kameragehäuse." - -#: src/fujimn.cpp:187 src/nikonmn.cpp:223 src/nikonmn.cpp:460 -#: src/nikonmn.cpp:527 src/olympusmn.cpp:199 -msgid "Image quality setting" -msgstr "Bildqualitätseinstellung" - -#: src/fujimn.cpp:195 src/nikonmn.cpp:422 -msgid "Color" -msgstr "Farbe" - -#: src/fujimn.cpp:196 -msgid "Chroma saturation setting" -msgstr "Chroma-Sättigungseinstellungen" - -#: src/fujimn.cpp:198 -msgid "Tone" -msgstr "Ton" - -#: src/fujimn.cpp:202 -msgid "Flash firing mode setting" -msgstr "Blitzeinstellung" - -#: src/fujimn.cpp:204 -msgid "Flash Strength" -msgstr "Blitzstärke" - -#: src/fujimn.cpp:205 -#, fuzzy -msgid "Flash firing strength compensation setting" -msgstr "Blitzkompensationseinstellung" - -#: src/fujimn.cpp:208 -msgid "Macro mode setting" -msgstr "Makromoduseinstellung" - -#: src/fujimn.cpp:211 -msgid "Focusing mode setting" -msgstr "Fokusmoduseinstellung" - -#: src/fujimn.cpp:216 -msgid "Slow Sync" -msgstr "Langsame Synchronisation" - -#: src/fujimn.cpp:217 -msgid "Slow synchro mode setting" -msgstr "Einstellungen des langsamen Synchronisationsmodus" - -#: src/fujimn.cpp:219 src/olympusmn.cpp:690 src/olympusmn.cpp:891 -msgid "Picture Mode" -msgstr "Bildmodus" - -#: src/fujimn.cpp:220 -msgid "Picture mode setting" -msgstr "Bildmoduseinstellung" - -#: src/fujimn.cpp:226 -msgid "Continuous shooting or auto bracketing setting" -msgstr "Einstellungen für kontinuierliche Aufnahmen oder Belichtungsreihen" - -#: src/fujimn.cpp:228 src/panasonicmn.cpp:256 src/sonymn.cpp:414 -msgid "Sequence Number" -msgstr "Sequenznummer" - -#: src/fujimn.cpp:229 src/olympusmn.cpp:1158 src/panasonicmn.cpp:256 -msgid "Sequence number" -msgstr "Sequenznummer" - -#: src/fujimn.cpp:234 -msgid "FinePix Color" -msgstr "FinePix Farbe" - -#: src/fujimn.cpp:235 -msgid "Fuji FinePix color setting" -msgstr "Fuji FinePix Farbeinstellung" - -#: src/fujimn.cpp:237 -msgid "Blur Warning" -msgstr "Unschärfewarnung" - -#: src/fujimn.cpp:238 -msgid "Blur warning status" -msgstr "Unschärfewarnung-Status" - -#: src/fujimn.cpp:240 -msgid "Focus Warning" -msgstr "Fokuswarnung" - -#: src/fujimn.cpp:241 -msgid "Auto Focus warning status" -msgstr "Status der Auto-Fokuswarnung" - -#: src/fujimn.cpp:243 -msgid "Exposure Warning" -msgstr "Belichtungswarnung" - -#: src/fujimn.cpp:244 -msgid "Auto exposure warning status" -msgstr "Status der Auto-Belichtungswarnung" - -#: src/fujimn.cpp:246 -msgid "Dynamic Range" -msgstr "Dynamischer Bereich" - -#: src/fujimn.cpp:247 -msgid "Dynamic range" -msgstr "Dynamischer Bereich" - -#: src/fujimn.cpp:249 src/panasonicmn.cpp:273 -msgid "Film Mode" -msgstr "Filmmodus" - -#: src/fujimn.cpp:250 src/panasonicmn.cpp:273 -msgid "Film mode" -msgstr "Filmmodus" - -#: src/fujimn.cpp:252 -msgid "Dynamic Range Setting" -msgstr "Dynamische Bereichseinstellung" - -#: src/fujimn.cpp:253 -msgid "Dynamic range settings" -msgstr "Dynamische Bereichseinstellung" - -#: src/fujimn.cpp:255 -msgid "Development Dynamic Range" -msgstr "Entwicklungsdynamischer Bereich" - -#: src/fujimn.cpp:256 -msgid "Development dynamic range" -msgstr "Entwicklungsdynamischer Bereich" - -#: src/fujimn.cpp:258 -msgid "Minimum Focal Length" -msgstr "Minimale Fokuslänge" - -#: src/fujimn.cpp:259 -msgid "Minimum focal length" -msgstr "Minimale Fokuslänge" - -#: src/fujimn.cpp:261 -msgid "Maximum Focal Length" -msgstr "Maximale Fokuslänge" - -#: src/fujimn.cpp:262 -msgid "Maximum focal length" -msgstr "Maximale Fokuslänge" - -#: src/fujimn.cpp:264 -msgid "Maximum Aperture at Mininimum Focal" -msgstr "Maximale Blende bei minimalem Fokus" - -#: src/fujimn.cpp:265 -msgid "Maximum aperture at mininimum focal" -msgstr "Maximale Blende bei minimalem Fokus" - -#: src/fujimn.cpp:267 -msgid "Maximum Aperture at Maxinimum Focal" -msgstr "Maximale Blende bei maximalem Fokus" - -#: src/fujimn.cpp:268 -msgid "Maximum aperture at maxinimum focal" -msgstr "Maximale Blende bei maximalem Fokus" - -#: src/fujimn.cpp:270 src/properties.cpp:577 src/tags.cpp:1759 -msgid "File Source" -msgstr "Dateiquelle" - -#: src/fujimn.cpp:271 -msgid "File source" -msgstr "Dateiquelle" - -#: src/fujimn.cpp:273 -msgid "Order Number" -msgstr "Ablaufsnummer" - -#: src/fujimn.cpp:274 -msgid "Order number" -msgstr "Ablaufsnummer" - -#: src/fujimn.cpp:276 -msgid "Frame Number" -msgstr "Einzelbildnummer" - -#: src/fujimn.cpp:277 src/pentaxmn.cpp:977 src/pentaxmn.cpp:978 -msgid "Frame number" -msgstr "Einzelbildnummer" - -#: src/fujimn.cpp:281 -msgid "Unknown FujiMakerNote tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Fujii" - -#: src/minoltamn.cpp:56 -msgid "Natural Color" -msgstr "Natürliche Farbe" - -#: src/minoltamn.cpp:58 src/minoltamn.cpp:1885 -msgid "Vivid Color" -msgstr "Vivid Farbe" - -#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 -msgid "Solarization" -msgstr "Solarisation" - -#: src/minoltamn.cpp:60 src/minoltamn.cpp:1891 -msgid "AdobeRGB" -msgstr "AdobeRGB" - -#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:611 -#: src/olympusmn.cpp:853 src/panasonicmn.cpp:198 src/pentaxmn.cpp:702 -msgid "Natural" -msgstr "Natürlich" - -#: src/minoltamn.cpp:64 -msgid "Natural sRGB" -msgstr "Natürliches sRGB" - -#: src/minoltamn.cpp:65 -msgid "Natural+ sRGB" -msgstr "Natürlich + sRGB" - -#: src/minoltamn.cpp:67 -msgid "Evening" -msgstr "Abend" - -#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2040 -#: src/sonymn.cpp:526 -msgid "Night Portrait" -msgstr "Nachtportrait" - -#: src/minoltamn.cpp:75 src/minoltamn.cpp:2057 -msgid "Super Fine" -msgstr "Superfein" - -#: src/minoltamn.cpp:79 src/minoltamn.cpp:2003 src/minoltamn.cpp:2061 -msgid "Extra Fine" -msgstr "Extrafein" - -#: src/minoltamn.cpp:90 -msgid "Makernote Version" -msgstr "Version der Herstellerbemerkung" - -#: src/minoltamn.cpp:91 -msgid "String 'MLT0' (not null terminated)" -msgstr "" - -#: src/minoltamn.cpp:93 -msgid "Camera Settings (Std Old)" -msgstr "Kameraeinstellungen(Alter Standard)" - -#: src/minoltamn.cpp:94 -msgid "" -"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" -msgstr "" -"Standard-Kameraeinstellungen (für alte Kameras wie z.B. D5, D7, S304 und " -"S404)" - -#: src/minoltamn.cpp:96 -msgid "Camera Settings (Std New)" -msgstr "Kameraeinstellungen(Neuer Standard)" - -#: src/minoltamn.cpp:97 -msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" -msgstr "" -"Standard-Kameraeinstellungen (für neue Kameras wie z.B. D7u, D7i und D7hi)" - -#: src/minoltamn.cpp:99 -msgid "Camera Settings (7D)" -msgstr "Kameraeinstellungen (7D)" - -#: src/minoltamn.cpp:100 -msgid "Camera Settings (for Dynax 7D model)" -msgstr "Kameraeinstellungen (für das Modell Dynax 7D)" - -#: src/minoltamn.cpp:102 -msgid "Image Stabilization Data" -msgstr "Bildstabilisierungsdaten" - -#: src/minoltamn.cpp:103 -msgid "Image stabilization data" -msgstr "Bildstabilisierungsdaten" - -#: src/minoltamn.cpp:107 -msgid "WB Info A100" -msgstr "" - -#: src/minoltamn.cpp:108 -msgid "White balance information for the Sony DSLR-A100" -msgstr "" - -#: src/minoltamn.cpp:111 -msgid "Compressed Image Size" -msgstr "Komprimierte Bildgröße" - -#: src/minoltamn.cpp:112 -msgid "Compressed image size" -msgstr "Komprimierte Bildgröße" - -#: src/minoltamn.cpp:115 -msgid "Jpeg thumbnail 640x480 pixels" -msgstr "Jpeg-Vorschau 640x480 Pixel" - -#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 -msgid "Thumbnail Offset" -msgstr "Bildvorschauoffset" - -#: src/minoltamn.cpp:118 -msgid "Offset of the thumbnail" -msgstr "Offset der Bildvorschau" - -#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 -msgid "Thumbnail Length" -msgstr "Bildvorschaulänge" - -#: src/minoltamn.cpp:121 -msgid "Size of the thumbnail" -msgstr "Größe der Bildvorschau" - -#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:573 -#: src/olympusmn.cpp:252 src/olympusmn.cpp:684 src/panasonicmn.cpp:282 -#: src/sonymn.cpp:363 src/sonymn.cpp:364 -msgid "Scene Mode" -msgstr "Szenenmodus" - -#: src/minoltamn.cpp:128 src/minoltamn.cpp:1406 src/nikonmn.cpp:219 -#: src/nikonmn.cpp:462 src/nikonmn.cpp:526 src/panasonicmn.cpp:263 -#: src/sonymn.cpp:381 src/sonymn.cpp:382 -msgid "Color Mode" -msgstr "Farbmodus" - -#: src/minoltamn.cpp:129 src/minoltamn.cpp:1407 src/nikonmn.cpp:220 -#: src/nikonmn.cpp:463 src/nikonmn.cpp:526 src/panasonicmn.cpp:263 -msgid "Color mode" -msgstr "Farbmodus" - -#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 -#: src/minoltamn.cpp:990 src/panasonicmn.cpp:236 src/sonymn.cpp:274 -msgid "Image Quality" -msgstr "Bildqualität" - -#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 -msgid "0x0103" -msgstr "" - -#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:671 -#: src/sonymn.cpp:277 -msgid "Flash Exposure Compensation" -msgstr "Blitzkompensation" - -#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:278 -msgid "Flash exposure compensation in EV" -msgstr "Blitzkompensation in EV" - -#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:280 -#: src/sonymn.cpp:281 -#, fuzzy -msgid "Teleconverter Model" -msgstr "Modell der Erweiterung" - -#: src/minoltamn.cpp:150 -msgid "RAW+JPG Recording" -msgstr "" - -#: src/minoltamn.cpp:151 -msgid "RAW and JPG files recording" -msgstr "" - -#: src/minoltamn.cpp:153 src/sonymn.cpp:366 src/sonymn.cpp:367 -msgid "Zone Matching" -msgstr "Zonenabgleich" - -#: src/minoltamn.cpp:154 -msgid "Zone matching" -msgstr "Zonenabgleich" - -#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1039 -#: src/minoltamn.cpp:1476 src/minoltamn.cpp:1578 -msgid "Color temperature" -msgstr "Farbtemperatur" - -#: src/minoltamn.cpp:159 src/sonymn.cpp:375 -msgid "Lens ID" -msgstr "Linsen-ID" - -#: src/minoltamn.cpp:160 src/sonymn.cpp:376 -msgid "Lens identifier" -msgstr "Linsen-Identifizierung" - -#: src/minoltamn.cpp:162 src/minoltamn.cpp:1478 src/minoltamn.cpp:1580 -#: src/sonymn.cpp:360 -#, fuzzy -msgid "Color Compensation Filter" -msgstr "Tonkompensation" - -#: src/minoltamn.cpp:163 src/sonymn.cpp:361 -msgid "Color Compensation Filter: negative is green, positive is magenta" -msgstr "" - -#: src/minoltamn.cpp:165 src/minoltamn.cpp:1472 src/sonymn.cpp:283 -#: src/sonymn.cpp:563 src/sonymn.cpp:564 -#, fuzzy -msgid "White Balance Fine Tune" -msgstr "Weißabgleichstabelle" - -#: src/minoltamn.cpp:166 src/sonymn.cpp:284 -#, fuzzy -msgid "White Balance Fine Tune Value" -msgstr "Weißabgleichswert" - -#: src/minoltamn.cpp:168 -#, fuzzy -msgid "Image Stabilization A100" -msgstr "Bildstabilisierung" - -#: src/minoltamn.cpp:169 -#, fuzzy -msgid "Image Stabilization for the Sony DSLR-A100" -msgstr "Bildstabilisierungsdaten" - -#: src/minoltamn.cpp:173 -msgid "Camera Settings (5D)" -msgstr "Kameraeinstellungen (5D)" - -#: src/minoltamn.cpp:174 -msgid "Camera Settings (for Dynax 5D model)" -msgstr "Kameraeinstellungen (für Dynax 5D Modell)" - -#: src/minoltamn.cpp:180 src/nikonmn.cpp:607 src/olympusmn.cpp:258 -#: src/panasonicmn.cpp:279 src/sonymn.cpp:295 -msgid "Print IM" -msgstr "" - -#: src/minoltamn.cpp:181 src/nikonmn.cpp:607 src/olympusmn.cpp:259 -#: src/panasonicmn.cpp:279 src/sonymn.cpp:296 -#, fuzzy -msgid "PrintIM information" -msgstr "GPS-Informationen" - -#: src/minoltamn.cpp:183 -msgid "Camera Settings (Z1)" -msgstr "Kameraeinstellungen (Z1)" - -#: src/minoltamn.cpp:184 -msgid "Camera Settings (for Z1, DImage X, and F100 models)" -msgstr "Kameraeinstellungen (für Z1, DImage X und F100 Modelle)" - -#: src/minoltamn.cpp:188 -msgid "Unknown Minolta MakerNote tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Minolta" - -#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 -#: src/panasonicmn.cpp:107 src/sigmamn.cpp:155 src/sonymn.cpp:111 -#: src/tags.cpp:1404 -msgid "Aperture priority" -msgstr "Blendenpriorität" - -#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 -#: src/sigmamn.cpp:156 src/sonymn.cpp:112 src/tags.cpp:1405 -msgid "Shutter priority" -msgstr "Verschlußpriorität" - -#: src/minoltamn.cpp:209 src/minoltamn.cpp:1122 -msgid "Fill flash" -msgstr "Aufhellblitz" - -#: src/minoltamn.cpp:211 src/minoltamn.cpp:1120 -msgid "Rear flash sync" -msgstr "Rear-Flash-Sync" - -#: src/minoltamn.cpp:212 src/minoltamn.cpp:1121 -msgid "Wireless" -msgstr "Drahtlos" - -#: src/minoltamn.cpp:224 -msgid "Fluorescent 2" -msgstr "Fluroszierend 2" - -#: src/minoltamn.cpp:231 -msgid "Full size" -msgstr "Volle Größe" - -#: src/minoltamn.cpp:243 -msgid "Super fine" -msgstr "Superfein" - -#: src/minoltamn.cpp:247 -msgid "Extra fine" -msgstr "Extrafein" - -#: src/minoltamn.cpp:252 src/minoltamn.cpp:1099 src/minoltamn.cpp:1148 -#: src/sonymn.cpp:447 -#, fuzzy -msgid "Single Frame" -msgstr "Einzelbild" - -#: src/minoltamn.cpp:254 src/minoltamn.cpp:1150 -msgid "Self-timer" -msgstr "Selbstauslöser" - -#: src/minoltamn.cpp:255 -msgid "Bracketing" -msgstr "Automatische Erfassung" - -#: src/minoltamn.cpp:256 -msgid "Interval" -msgstr "Intervall" - -#: src/minoltamn.cpp:257 -msgid "UHS continuous" -msgstr "UHS fortlaufend" - -#: src/minoltamn.cpp:258 -msgid "HS continuous" -msgstr "HS fortlaufend" - -#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1127 -#: src/sonymn.cpp:468 src/tags.cpp:1419 -msgid "Multi-segment" -msgstr "Mehr-Segment" - -#: src/minoltamn.cpp:264 src/minoltamn.cpp:1128 src/sonymn.cpp:469 -#: src/tags.cpp:1416 -msgid "Center weighted average" -msgstr "Mittelpunkt gewichteter Durchschnitt" - -#: src/minoltamn.cpp:271 -msgid "Electronic magnification" -msgstr "Elektronische Vergrößerung" - -#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:1951 -#: src/nikonmn.cpp:100 src/nikonmn.cpp:793 src/nikonmn.cpp:808 -#: src/pentaxmn.cpp:216 -msgid "Top" -msgstr "Oben" - -#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:234 -msgid "Top-right" -msgstr "Oben - rechts" - -#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:240 -msgid "Bottom-right" -msgstr "Unten - rechts" - -#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:1955 -#: src/nikonmn.cpp:101 src/nikonmn.cpp:794 src/nikonmn.cpp:809 -#: src/pentaxmn.cpp:224 -msgid "Bottom" -msgstr "Unten" - -#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:238 -msgid "Bottom-left" -msgstr "Unten - links" - -#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:232 -msgid "Top-left" -msgstr "Oben - links" - -#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:368 -#: src/tags.cpp:1521 -msgid "Hard" -msgstr "Hart" - -#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:366 -#: src/tags.cpp:1520 -msgid "Soft" -msgstr "Weich" - -#: src/minoltamn.cpp:313 src/panasonicmn.cpp:105 -msgid "Night portrait" -msgstr "Nachtportrait" - -#: src/minoltamn.cpp:315 -msgid "Sports action" -msgstr "Sportaktion" - -#: src/minoltamn.cpp:344 -msgid "Time-lapse movie" -msgstr "Zeitrafferfilm" - -#: src/minoltamn.cpp:349 -msgid "Standard form" -msgstr "Standardformat" - -#: src/minoltamn.cpp:350 -msgid "Data form" -msgstr "Datenformat" - -#: src/minoltamn.cpp:355 -msgid "Natural color" -msgstr "Natürliche Farben" - -#: src/minoltamn.cpp:356 src/panasonicmn.cpp:70 src/panasonicmn.cpp:148 -msgid "Black and white" -msgstr "Schwarz/weiß" - -#: src/minoltamn.cpp:357 -msgid "Vivid color" -msgstr "Vivid Farbe" - -#: src/minoltamn.cpp:364 -msgid "No zone" -msgstr "Keine Zone" - -#: src/minoltamn.cpp:365 -msgid "Center zone (horizontal orientation)" -msgstr "Mittelzone (Horizontale Orientierung)" - -#: src/minoltamn.cpp:366 -msgid "Center zone (vertical orientation)" -msgstr "Mittelzone (Vertikale Orientierung)" - -#: src/minoltamn.cpp:367 -msgid "Left zone" -msgstr "Linke Zone" - -#: src/minoltamn.cpp:368 -msgid "Right zone" -msgstr "Rechte Zone" - -#: src/minoltamn.cpp:373 src/olympusmn.cpp:999 -msgid "Auto focus" -msgstr "Automatischer Fokus" - -#: src/minoltamn.cpp:379 -msgid "Wide focus (normal)" -msgstr "Weiter Fokus (Normal)" - -#: src/minoltamn.cpp:380 -msgid "Spot focus" -msgstr "Punktfokus" - -#: src/minoltamn.cpp:385 src/properties.cpp:452 src/sigmamn.cpp:86 -#: src/sigmamn.cpp:87 -msgid "Exposure" -msgstr "Belichtung" - -#: src/minoltamn.cpp:388 -msgid "Filter" -msgstr "Filter" - -#: src/minoltamn.cpp:393 -msgid "Not embedded" -msgstr "Nicht eingebettet" - -#: src/minoltamn.cpp:394 -msgid "Embedded" -msgstr "Eingebettet" - -#: src/minoltamn.cpp:403 -msgid "Text + ID#" -msgstr "Text + ID#" - -#: src/minoltamn.cpp:408 -msgid "ADI (Advanced Distance Integration)" -msgstr "ADI (Advanced Distance Integration)" - -#: src/minoltamn.cpp:409 -msgid "Pre-flash TTl" -msgstr "Pre-flash TTl" - -#: src/minoltamn.cpp:410 -msgid "Manual flash control" -msgstr "Manuelle Blitzkontrolle" - -#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:984 -#: src/minoltamn.cpp:1352 src/olympusmn.cpp:659 src/properties.cpp:581 -#: src/sigmamn.cpp:74 src/sonymn.cpp:393 src/sonymn.cpp:394 src/tags.cpp:1780 -msgid "Exposure Mode" -msgstr "Belichtungsmodus" - -#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 -#: src/olympusmn.cpp:670 src/pentaxmn.cpp:896 -msgid "Flash mode" -msgstr "Blitzmodus" - -#: src/minoltamn.cpp:506 src/minoltamn.cpp:1428 src/olympusmn.cpp:700 -#: src/pentaxmn.cpp:991 src/pentaxmn.cpp:992 src/sigmamn.cpp:60 -msgid "Drive mode" -msgstr "Antriebsmodus" - -#: src/minoltamn.cpp:512 -#, fuzzy -msgid "ISO Value" -msgstr "ISO-Geschwindigkeitswert" - -#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1023 -#: src/minoltamn.cpp:1367 src/properties.cpp:548 src/tags.cpp:782 -#: src/tags.cpp:1542 -msgid "Exposure Time" -msgstr "Belichtungszeit" - -#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1026 -#: src/minoltamn.cpp:1370 src/minoltamn.cpp:1371 src/tags.cpp:783 -#: src/tags.cpp:1545 -msgid "FNumber" -msgstr "F Nummer." - -#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1027 -msgid "The F-Number" -msgstr "Die F Nummer" - -#: src/minoltamn.cpp:520 src/olympusmn.cpp:663 -msgid "Macro Mode" -msgstr "Makromodus" - -#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1044 -msgid "Exposure Compensation" -msgstr "Belichtungskompensierung" - -#: src/minoltamn.cpp:529 -msgid "Bracket Step" -msgstr "Automatischer Erfassungsschritt" - -#: src/minoltamn.cpp:530 -msgid "Bracket step" -msgstr "Automatischer Erfassungsschritt" - -#: src/minoltamn.cpp:532 -msgid "Interval Length" -msgstr "Intervalllänge" - -#: src/minoltamn.cpp:533 -msgid "Interval length" -msgstr "Intervalllänge" - -#: src/minoltamn.cpp:535 -msgid "Interval Number" -msgstr "Intervallnummer" - -#: src/minoltamn.cpp:536 -msgid "Interval number" -msgstr "Intervallnummer" - -#: src/minoltamn.cpp:541 src/nikonmn.cpp:252 src/nikonmn.cpp:564 -#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1371 src/olympusmn.cpp:303 -#: src/olympusmn.cpp:1007 -msgid "Focus Distance" -msgstr "Fokusabstand" - -#: src/minoltamn.cpp:542 src/nikonmn.cpp:1346 src/nikonmn.cpp:1371 -#: src/olympusmn.cpp:1007 -msgid "Focus distance" -msgstr "Fokusabstand" - -#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1002 -#, fuzzy -msgid "Flash Fired" -msgstr "Blitzgerät" - -#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1003 -#, fuzzy -msgid "Flash fired" -msgstr "Blitz aus" - -#: src/minoltamn.cpp:547 -msgid "Minolta Date" -msgstr "Minolta Datum" - -#: src/minoltamn.cpp:548 -msgid "Minolta date" -msgstr "Minolta Datum" - -#: src/minoltamn.cpp:550 -msgid "Minolta Time" -msgstr "Minolta Zeit" - -#: src/minoltamn.cpp:551 -msgid "Minolta time" -msgstr "Minolta Zeit" - -#: src/minoltamn.cpp:556 -msgid "File Number Memory" -msgstr "Dateinummerspeicher" - -#: src/minoltamn.cpp:557 -msgid "File number memory" -msgstr "Dateinummerspeicher" - -#: src/minoltamn.cpp:559 -#, fuzzy -msgid "Last Image Number" -msgstr "Bildnummer" - -#: src/minoltamn.cpp:560 -#, fuzzy -msgid "Last image number" -msgstr "Bildnummer" - -#: src/minoltamn.cpp:562 -msgid "Color Balance Red" -msgstr "Roter Farbabgleich" - -#: src/minoltamn.cpp:563 -msgid "Color balance red" -msgstr "Roter Farbabgleich" - -#: src/minoltamn.cpp:565 -msgid "Color Balance Green" -msgstr "Grüner Farbabgleich" - -#: src/minoltamn.cpp:566 -msgid "Color balance green" -msgstr "Grüner Farbabgleich" - -#: src/minoltamn.cpp:568 -msgid "Color Balance Blue" -msgstr "Blauer Farbabgleich" - -#: src/minoltamn.cpp:569 -msgid "Color balance blue" -msgstr "Blauer Farbabgleich" - -#: src/minoltamn.cpp:580 -msgid "Subject Program" -msgstr "Motiv-Programm" - -#: src/minoltamn.cpp:581 -msgid "Subject program" -msgstr "Motiv-Programm" - -#: src/minoltamn.cpp:586 src/nikonmn.cpp:542 -msgid "ISO Settings" -msgstr "ISO-Einstellungen" - -#: src/minoltamn.cpp:587 src/minoltamn.cpp:1398 src/nikonmn.cpp:542 -msgid "ISO setting" -msgstr "ISO-Einstellung" - -#: src/minoltamn.cpp:589 -msgid "Minolta Model" -msgstr "Minolta Modell" - -#: src/minoltamn.cpp:590 -msgid "Minolta model" -msgstr "Minolta Modell" - -#: src/minoltamn.cpp:592 -msgid "Interval Mode" -msgstr "Intervallmodus" - -#: src/minoltamn.cpp:593 -msgid "Interval mode" -msgstr "Intervallmodus" - -#: src/minoltamn.cpp:595 -msgid "Folder Name" -msgstr "Ordnername" - -#: src/minoltamn.cpp:596 -msgid "Folder name" -msgstr "Ordnername" - -#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 -msgid "ColorMode" -msgstr "Farbmodus" - -#: src/minoltamn.cpp:601 src/minoltamn.cpp:1204 src/pentaxmn.cpp:462 -msgid "Color Filter" -msgstr "Farbfilter" - -#: src/minoltamn.cpp:602 -msgid "Color filter" -msgstr "Farbfilter" - -#: src/minoltamn.cpp:604 -msgid "Black and White Filter" -msgstr "Schwarz/Weiß-Filter" - -#: src/minoltamn.cpp:605 -msgid "Black and white filter" -msgstr "Schwarz/Weiß-Filter" - -#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1013 -msgid "Internal Flash" -msgstr "Eingebauter Blitz" - -#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:698 -#: src/olympusmn.cpp:276 src/properties.cpp:438 src/sonymn.cpp:602 -#: src/sonymn.cpp:603 src/tags.cpp:1630 -msgid "Brightness" -msgstr "Helligkeit" - -#: src/minoltamn.cpp:613 -msgid "Spot Focus Point X" -msgstr "Punktschärfe X-Wert" - -#: src/minoltamn.cpp:614 -msgid "Spot focus point X" -msgstr "Punktschärfe X-Wert" - -#: src/minoltamn.cpp:616 -msgid "Spot Focus Point Y" -msgstr "Punktschärfe Y-Wert" - -#: src/minoltamn.cpp:617 -msgid "Spot focus point Y" -msgstr "Punktschärfe Y-Wert" - -#: src/minoltamn.cpp:619 -msgid "Wide Focus Zone" -msgstr "Weite Fokuszone" - -#: src/minoltamn.cpp:620 -msgid "Wide focus zone" -msgstr "Weite Fokuszone" - -#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1036 -#: src/minoltamn.cpp:1380 src/nikonmn.cpp:232 src/nikonmn.cpp:475 -#: src/nikonmn.cpp:530 src/olympusmn.cpp:301 src/olympusmn.cpp:664 -#: src/panasonicmn.cpp:240 src/pentaxmn.cpp:899 -msgid "Focus mode" -msgstr "Fokusmodus" - -#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1000 -msgid "Focus area" -msgstr "Fokusbereich" - -#: src/minoltamn.cpp:628 -#, fuzzy -msgid "DEC Switch Position" -msgstr "Autofokus-Position" - -#: src/minoltamn.cpp:629 -#, fuzzy -msgid "DEC switch position" -msgstr "Autofokus-Position" - -#: src/minoltamn.cpp:631 -msgid "Color Profile" -msgstr "Farbprofil" - -#: src/minoltamn.cpp:632 -msgid "Color profile" -msgstr "Farbprofil" - -#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 -#, fuzzy -msgid "Data Imprint" -msgstr "Datendump" - -#: src/minoltamn.cpp:637 src/minoltamn.cpp:1421 -msgid "Flash Metering" -msgstr "Blitzdosierung" - -#: src/minoltamn.cpp:638 src/minoltamn.cpp:1422 -msgid "Flash metering" -msgstr "Blitzdosierung" - -#: src/minoltamn.cpp:642 -msgid "Unknown Minolta Camera Settings tag" -msgstr "Unbekanntes Feld in den Minolta-Kameraeinstellungen" - -#: src/minoltamn.cpp:660 -#, fuzzy -msgid "Program-shift A" -msgstr "Programmwechsel" - -#: src/minoltamn.cpp:661 -#, fuzzy -msgid "Program-shift S" -msgstr "Programmwechsel" - -#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 -msgid "Raw+Jpeg" -msgstr "Roh+Jpeg" - -#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/pentaxmn.cpp:322 -msgid "Kelvin" -msgstr "Kelvin" - -#: src/minoltamn.cpp:695 -msgid "Single-shot AF" -msgstr "Einzelaufnahme-Autofokus" - -#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1371 -msgid "Continuous AF" -msgstr "Kontinuierlicher Autofokus" - -#: src/minoltamn.cpp:698 -msgid "Automatic AF" -msgstr "Automatischer Autofokus" - -#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 -msgid "sRGB (Natural)" -msgstr "sRGB (Natürlich)" - -#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 -msgid "sRGB (Natural+)" -msgstr "sRGB (Natürlich+)" - -#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2019 -#: src/panasonicmn.cpp:190 -msgid "Horizontal (normal)" -msgstr "Horizontal (Normal)" - -#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2020 -#: src/panasonicmn.cpp:191 -msgid "Rotate 90 CW" -msgstr "90 Grad drehen (Im Uhrzeigersinn)" - -#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2021 -#: src/panasonicmn.cpp:192 -msgid "Rotate 270 CW" -msgstr "270 Grad drehen (Im Uhrzeigersinn)" - -#: src/minoltamn.cpp:756 -msgid "AF Points" -msgstr "Autofokus-Punkte" - -#: src/minoltamn.cpp:757 -msgid "AF points" -msgstr "Autofokus-Punkte" - -#: src/minoltamn.cpp:771 src/minoltamn.cpp:1011 src/minoltamn.cpp:1409 -#: src/nikonmn.cpp:551 src/olympusmn.cpp:683 src/olympusmn.cpp:802 -#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 src/properties.cpp:532 -#: src/sigmamn.cpp:83 src/tags.cpp:1684 -msgid "Color Space" -msgstr "Farbraum" - -#: src/minoltamn.cpp:772 src/minoltamn.cpp:1012 src/minoltamn.cpp:1410 -#: src/nikonmn.cpp:551 src/olympusmn.cpp:683 src/olympusmn.cpp:817 -#: src/olympusmn.cpp:888 src/pentaxmn.cpp:995 src/pentaxmn.cpp:996 -#: src/sigmamn.cpp:84 -msgid "Color space" -msgstr "Farbraum" - -#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1029 -#: src/minoltamn.cpp:1047 src/minoltamn.cpp:1457 -msgid "Free Memory Card Images" -msgstr "Freie Bilder auf der Speicherkarte" - -#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1030 -#: src/minoltamn.cpp:1048 src/minoltamn.cpp:1458 -msgid "Free memory card images" -msgstr "Freie Bilder auf der Speicherkarte" - -#: src/minoltamn.cpp:789 -msgid "Hue" -msgstr "Sättigung" - -#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1041 -#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1571 src/minoltamn.cpp:1572 -#: src/panasonicmn.cpp:261 src/sonymn.cpp:638 src/sonymn.cpp:639 -#: src/sonymn.cpp:711 src/sonymn.cpp:712 -msgid "Rotation" -msgstr "Drehung" - -#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1065 -#: src/tags.cpp:835 -msgid "Image Number" -msgstr "Bildnummer" - -#: src/minoltamn.cpp:808 src/minoltamn.cpp:1069 src/minoltamn.cpp:1494 -#: src/nikonmn.cpp:579 src/olympusmn.cpp:439 src/olympusmn.cpp:685 -#: src/olympusmn.cpp:819 src/olympusmn.cpp:889 src/olympusmn.cpp:974 -#: src/panasonicmn.cpp:258 src/pentaxmn.cpp:1024 src/pentaxmn.cpp:1025 -msgid "Noise reduction" -msgstr "Rauschreduktion" - -#: src/minoltamn.cpp:817 -msgid "Zone Matching On" -msgstr "Zonenabgleich eingeschaltet" - -#: src/minoltamn.cpp:818 -msgid "Zone matching on" -msgstr "Zonenabgleich eingeschaltet" - -#: src/minoltamn.cpp:822 -msgid "Unknown Minolta Camera Settings 7D tag" -msgstr "Unbekanntes Feld in den Minolta-Kameraeinstellungen für 7D" - -#: src/minoltamn.cpp:840 src/sonymn.cpp:521 -#, fuzzy -msgid "Program Shift A" -msgstr "Programmwechsel" - -#: src/minoltamn.cpp:841 src/sonymn.cpp:522 -#, fuzzy -msgid "Program Shift S" -msgstr "Programmwechsel" - -#: src/minoltamn.cpp:845 src/minoltamn.cpp:1889 src/minoltamn.cpp:2044 -#: src/sonymn.cpp:480 -#, fuzzy -msgid "Night View/Portrait" -msgstr "Nachtportrait" - -#: src/minoltamn.cpp:895 -msgid "200 (Zone Matching High)" -msgstr "200 (Zonenabgleich Hoch)" - -#: src/minoltamn.cpp:896 -msgid "80 (Zone Matching Low)" -msgstr "80 (Zonenabgleich Niedrig)" - -#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 -#, fuzzy -msgid "Adobe RGB (ICC)" -msgstr "Adobe RGB" - -#: src/minoltamn.cpp:918 -msgid "Central" -msgstr "Zentriert" - -#: src/minoltamn.cpp:919 -msgid "Up" -msgstr "Aufwärts" - -#: src/minoltamn.cpp:920 -msgid "Up right" -msgstr "Aufwärts - Rechts" - -#: src/minoltamn.cpp:922 -msgid "Down right" -msgstr "Abwärts - Rechts" - -#: src/minoltamn.cpp:923 -msgid "Down" -msgstr "Abwärts" - -#: src/minoltamn.cpp:924 -msgid "Down left" -msgstr "Abwärts - Links" - -#: src/minoltamn.cpp:926 -msgid "Up left" -msgstr "Aufwärts -. Links" - -#: src/minoltamn.cpp:932 -msgid "Selection" -msgstr "Auswahl" - -#: src/minoltamn.cpp:947 -#, fuzzy -msgid "Natural+" -msgstr "Natürlich" - -#: src/minoltamn.cpp:949 -#, fuzzy -msgid "Wind Scene" -msgstr "Nachtszene" - -#: src/minoltamn.cpp:950 -#, fuzzy -msgid "Evening Scene" -msgstr "Abend" - -#: src/minoltamn.cpp:996 src/nikonmn.cpp:1345 src/nikonmn.cpp:1370 -msgid "Focus Position" -msgstr "Fokusposition" - -#: src/minoltamn.cpp:997 src/nikonmn.cpp:1345 src/nikonmn.cpp:1370 -msgid "Focus position" -msgstr "Fokusposition" - -#: src/minoltamn.cpp:999 -msgid "Focus Area" -msgstr "Fokusbereich" - -#: src/minoltamn.cpp:1032 -msgid "Exposure Revision" -msgstr "Belichtungs-Revision" - -#: src/minoltamn.cpp:1033 -msgid "Exposure revision" -msgstr "Belichtungs-Revision" - -#: src/minoltamn.cpp:1050 src/minoltamn.cpp:1051 -#, fuzzy -msgid "Rotation2" -msgstr "Drehung" - -#: src/minoltamn.cpp:1056 src/minoltamn.cpp:1057 -#, fuzzy -msgid "Picture Finish" -msgstr "Bild-Info" - -#: src/minoltamn.cpp:1059 -msgid "Exposure Manual Bias" -msgstr "Manuelle Belichtungskontrolle" - -#: src/minoltamn.cpp:1060 -msgid "Exposure manual bias" -msgstr "Manuelle Belichtungskontrolle" - -#: src/minoltamn.cpp:1062 src/panasonicmn.cpp:241 src/sonymn.cpp:399 -#: src/sonymn.cpp:400 -msgid "AF Mode" -msgstr "Autofokus-Modus" - -#: src/minoltamn.cpp:1063 src/panasonicmn.cpp:241 -msgid "AF mode" -msgstr "Autofokus-Modus" - -#: src/minoltamn.cpp:1083 -msgid "Unknown Minolta Camera Settings 5D tag" -msgstr "Unbekanntes Feld in den Minolta-Kameraeinstellungen für 5D" - -#: src/minoltamn.cpp:1096 src/sonymn.cpp:449 -#, fuzzy -msgid "Self-timer 10 sec" -msgstr "Selbstauslöser (12 Sek.)" - -#: src/minoltamn.cpp:1098 src/sonymn.cpp:450 -#, fuzzy -msgid "Self-timer 2 sec" -msgstr "Selbstauslöser (2 Sek.)" - -#: src/minoltamn.cpp:1100 src/sonymn.cpp:453 -#, fuzzy -msgid "White Balance Bracketing Low" -msgstr "Weißabgleichsreihe" - -#: src/minoltamn.cpp:1101 -#, fuzzy -msgid "White Balance Bracketing High" -msgstr "Weißabgleichsreihe" - -#: src/minoltamn.cpp:1102 -#, fuzzy -msgid "Single-frame Bracketing Low" -msgstr "Einzelbild" - -#: src/minoltamn.cpp:1103 -#, fuzzy -msgid "Continuous Bracketing Low" -msgstr "Automatischer Erfassung" - -#: src/minoltamn.cpp:1104 -#, fuzzy -msgid "Single-frame Bracketing High" -msgstr "Einzelbild" - -#: src/minoltamn.cpp:1105 -#, fuzzy -msgid "Continuous Bracketing High" -msgstr "Kontinuierlich, hoch" - -#: src/minoltamn.cpp:1136 src/sonymn.cpp:158 -msgid "Advanced" -msgstr "" - -#: src/minoltamn.cpp:1151 src/minoltamn.cpp:1433 src/sonymn.cpp:451 -#, fuzzy -msgid "Continuous Bracketing" -msgstr "Kontinuierlich, hoch" - -#: src/minoltamn.cpp:1152 -#, fuzzy -msgid "Single-Frame Bracketing" -msgstr "Einzelbild" - -#: src/minoltamn.cpp:1153 src/minoltamn.cpp:1439 src/sonymn.cpp:225 -#, fuzzy -msgid "White Balance Bracketing" -msgstr "Weißabgleichsreihe" - -#: src/minoltamn.cpp:1183 src/minoltamn.cpp:1186 src/nikonmn.cpp:446 -msgid "Preset" -msgstr "Voreinstellung" - -#: src/minoltamn.cpp:1185 src/minoltamn.cpp:1188 src/minoltamn.cpp:2093 -#, fuzzy -msgid "Color Temperature/Color Filter" -msgstr "Farbtemperatur" - -#: src/minoltamn.cpp:1203 src/pentaxmn.cpp:1018 src/properties.cpp:465 -msgid "Temperature" -msgstr "Temperatur" - -#: src/minoltamn.cpp:1209 -#, fuzzy -msgid "Setup" -msgstr "Setzen" - -#: src/minoltamn.cpp:1210 -#, fuzzy -msgid "Recall" -msgstr "Gelb" - -#: src/minoltamn.cpp:1215 -msgid "Ok" -msgstr "" - -#: src/minoltamn.cpp:1216 -msgid "Error" -msgstr "" - -#: src/minoltamn.cpp:1228 -#, fuzzy -msgid "Image and Information" -msgstr "Bildkonfiguration" - -#: src/minoltamn.cpp:1229 -#, fuzzy -msgid "Image Only" -msgstr "Bildtyp" - -#: src/minoltamn.cpp:1230 -#, fuzzy -msgid "Image and Histogram" -msgstr "Bildhöhe" - -#: src/minoltamn.cpp:1236 -#, fuzzy -msgid "Fill Flash" -msgstr "Aufhellblitz" - -#: src/minoltamn.cpp:1247 -#, fuzzy -msgid "Focus Hold" -msgstr "Fokusmodus" - -#: src/minoltamn.cpp:1248 -#, fuzzy -msgid "DOF Preview" -msgstr "Vorschaudaten" - -#: src/minoltamn.cpp:1253 -msgid "Hold" -msgstr "" - -#: src/minoltamn.cpp:1254 -#, fuzzy -msgid "Toggle" -msgstr "Ton" - -#: src/minoltamn.cpp:1255 -#, fuzzy -msgid "Spot Hold" -msgstr "Punktmodus" - -#: src/minoltamn.cpp:1256 -#, fuzzy -msgid "Spot Toggle" -msgstr "Punktmodus" - -#: src/minoltamn.cpp:1261 src/olympusmn.cpp:267 -msgid "Shutter Speed" -msgstr "Verschlusszeit" - -#: src/minoltamn.cpp:1267 -msgid "Ambient and Flash" -msgstr "" - -#: src/minoltamn.cpp:1268 -msgid "Ambient Only" -msgstr "" - -#: src/minoltamn.cpp:1273 -msgid "0.3 seconds" -msgstr "" - -#: src/minoltamn.cpp:1274 -msgid "0.6 seconds" -msgstr "" - -#: src/minoltamn.cpp:1280 src/nikonmn.cpp:292 src/nikonmn.cpp:972 -#: src/nikonmn.cpp:1418 -#, fuzzy -msgid "Automatic" -msgstr "Automatischer Autofokus" - -#: src/minoltamn.cpp:1286 src/minoltamn.cpp:1292 -#, fuzzy -msgid "Auto-rotate" -msgstr "Autokontrast" - -#: src/minoltamn.cpp:1287 -#, fuzzy -msgid "Horizontal" -msgstr "Horizontal (Normal)" - -#: src/minoltamn.cpp:1293 -#, fuzzy -msgid "Manual Rotate" -msgstr "Manuell ausgelöst" - -#: src/minoltamn.cpp:1298 -#, fuzzy -msgid "Within Range" -msgstr "Linsenweite" - -#: src/minoltamn.cpp:1299 -#, fuzzy -msgid "Under/Over Range" -msgstr "Transferbereich" - -#: src/minoltamn.cpp:1300 -#, fuzzy -msgid "Out of Range" -msgstr "Offset ausserhalb des zulässigen Bereiches" - -#: src/minoltamn.cpp:1305 -#, fuzzy -msgid "Not Indicated" -msgstr "Undefiniert" - -#: src/minoltamn.cpp:1306 -#, fuzzy -msgid "Under Scale" -msgstr "Unterwasser" - -#: src/minoltamn.cpp:1307 -#, fuzzy -msgid "Bottom of Scale" -msgstr "unten nach oben" - -#: src/minoltamn.cpp:1325 -msgid "Top of Scale" -msgstr "" - -#: src/minoltamn.cpp:1326 -#, fuzzy -msgid "Over Scale" -msgstr "Standard-Skalierung" - -#: src/minoltamn.cpp:1331 -msgid "AM" -msgstr "" - -#: src/minoltamn.cpp:1332 src/olympusmn.cpp:512 src/olympusmn.cpp:1374 -#: src/olympusmn.cpp:1384 -msgid "MF" -msgstr "" - -#: src/minoltamn.cpp:1338 -#, fuzzy -msgid "Built-in" -msgstr "Ausfüllen" - -#: src/minoltamn.cpp:1344 src/pentaxmn.cpp:347 src/pentaxmn.cpp:360 -msgid "Very Low" -msgstr "Sehr niedrig" - -#: src/minoltamn.cpp:1346 -#, fuzzy -msgid "Half Full" -msgstr "Vollbild" - -#: src/minoltamn.cpp:1347 -msgid "Sufficient Power Remaining" -msgstr "" - -#: src/minoltamn.cpp:1355 -#, fuzzy -msgid "Exposure Compensation Setting" -msgstr "Belichtungskompensierung" - -#: src/minoltamn.cpp:1356 -#, fuzzy -msgid "Exposure compensation setting" -msgstr "Belichtungskompensation" - -#: src/minoltamn.cpp:1358 -#, fuzzy -msgid "High Speed Sync" -msgstr "Hohe Empfindlichkeit" - -#: src/minoltamn.cpp:1359 -#, fuzzy -msgid "High speed sync" -msgstr "Hohe Empfindlichkeit" - -#: src/minoltamn.cpp:1361 -#, fuzzy -msgid "Manual Exposure Time" -msgstr "Belichtungszeit" - -#: src/minoltamn.cpp:1362 -#, fuzzy -msgid "Manual exposure time" -msgstr "Belichtungszeit" - -#: src/minoltamn.cpp:1364 src/minoltamn.cpp:1365 -#, fuzzy -msgid "Manual FNumber" -msgstr "Intervallnummer" - -#: src/minoltamn.cpp:1373 -#, fuzzy -msgid "Drive Mode 2" -msgstr "Antriebsmodus" - -#: src/minoltamn.cpp:1374 -#, fuzzy -msgid "Drive mode 2" -msgstr "Antriebsmodus" - -#: src/minoltamn.cpp:1382 src/minoltamn.cpp:1383 src/sonymn.cpp:572 -#: src/sonymn.cpp:573 src/sonymn.cpp:678 src/sonymn.cpp:679 -msgid "Local AF Area Point" -msgstr "" - -#: src/minoltamn.cpp:1385 src/minoltamn.cpp:1386 src/nikonmn.cpp:822 -#: src/nikonmn.cpp:845 src/sonymn.cpp:569 src/sonymn.cpp:570 -#: src/sonymn.cpp:675 src/sonymn.cpp:676 -#, fuzzy -msgid "AF Area Mode" -msgstr "Autofokus-Modus" - -#: src/minoltamn.cpp:1388 src/minoltamn.cpp:1389 src/sonymn.cpp:605 -#: src/sonymn.cpp:606 src/sonymn.cpp:705 src/sonymn.cpp:706 -#, fuzzy -msgid "FlashMode" -msgstr "Blitzmodus" - -#: src/minoltamn.cpp:1391 -#, fuzzy -msgid "Flash Exposure Comp Setting" -msgstr "Blitzkompensation" - -#: src/minoltamn.cpp:1392 -#, fuzzy -msgid "Flash exposure compensation setting" -msgstr "Blitzkompensation in EV" - -#: src/minoltamn.cpp:1397 src/sonymn.cpp:578 src/sonymn.cpp:579 -#: src/sonymn.cpp:684 src/sonymn.cpp:685 -#, fuzzy -msgid "ISO Setting" -msgstr "ISO-Einstellungen" - -#: src/minoltamn.cpp:1400 src/minoltamn.cpp:1401 -#, fuzzy -msgid "Zone Matching Mode" -msgstr "Zonenabgleich" - -#: src/minoltamn.cpp:1403 src/sonymn.cpp:581 src/sonymn.cpp:582 -#: src/sonymn.cpp:687 src/sonymn.cpp:688 -#, fuzzy -msgid "Dynamic Range Optimizer Mode" -msgstr "Dynamische Bereichseinstellung" - -#: src/minoltamn.cpp:1404 -#, fuzzy -msgid "Dynamic range optimizer mode" -msgstr "Dynamische Bereichserweiterung" - -#: src/minoltamn.cpp:1424 src/minoltamn.cpp:1425 src/sonymn.cpp:609 -#: src/sonymn.cpp:610 -msgid "Priority Setup Shutter Release" -msgstr "" - -#: src/minoltamn.cpp:1430 -#, fuzzy -msgid "Self Timer Time" -msgstr "Selbstauslöser" - -#: src/minoltamn.cpp:1431 -#, fuzzy -msgid "Self timer time" -msgstr "Selbstauslöser" - -#: src/minoltamn.cpp:1434 -#, fuzzy -msgid "Continuous bracketing" -msgstr "Kontinuierlich, hoch" - -#: src/minoltamn.cpp:1436 -#, fuzzy -msgid "Single Frame Bracketing" -msgstr "Weißabgleichsauslöser" - -#: src/minoltamn.cpp:1437 -#, fuzzy -msgid "Single frame bracketing" -msgstr "Weißabgleichsauslöser" - -#: src/minoltamn.cpp:1440 src/nikonmn.cpp:156 src/nikonmn.cpp:167 -msgid "White balance bracketing" -msgstr "Weißabgleichsauslöser" - -#: src/minoltamn.cpp:1442 -#, fuzzy -msgid "White Balance Setting" -msgstr "Weißabgleichseinstellung" - -#: src/minoltamn.cpp:1445 -#, fuzzy -msgid "Preset White Balance" -msgstr "Weißabgleich" - -#: src/minoltamn.cpp:1446 -#, fuzzy -msgid "Preset white balance" -msgstr "Weißabgleich" - -#: src/minoltamn.cpp:1448 -#, fuzzy -msgid "Color Temperature Setting" -msgstr "Farbtemperatur" - -#: src/minoltamn.cpp:1449 -#, fuzzy -msgid "Color temperature setting" -msgstr "Farbtemperatur" - -#: src/minoltamn.cpp:1451 -#, fuzzy -msgid "Custom WB Setting" -msgstr "Benutzerdefiniert WB 1" - -#: src/minoltamn.cpp:1452 -#, fuzzy -msgid "Custom WB setting" -msgstr "Benutzerdefiniert WB 1" - -#: src/minoltamn.cpp:1454 src/minoltamn.cpp:1455 -#, fuzzy -msgid "Dynamic Range Optimizer Settings" -msgstr "Dynamische Bereichseinstellung" - -#: src/minoltamn.cpp:1460 -#, fuzzy -msgid "Custom WB Red Level" -msgstr "WB_RGGBLevelsShade" - -#: src/minoltamn.cpp:1461 -#, fuzzy -msgid "Custom WB red level" -msgstr "Schwarzlevel" - -#: src/minoltamn.cpp:1463 -#, fuzzy -msgid "Custom WB Green Level" -msgstr "Schwarzlevel" - -#: src/minoltamn.cpp:1464 -#, fuzzy -msgid "Custom WB green level" -msgstr "Schwarzlevel" - -#: src/minoltamn.cpp:1466 -#, fuzzy -msgid "Custom WB Blue Level" -msgstr "WB_RGGBLevelsShade" - -#: src/minoltamn.cpp:1467 -#, fuzzy -msgid "CustomWB blue level" -msgstr "Schwarzlevel" - -#: src/minoltamn.cpp:1469 src/minoltamn.cpp:1470 -#, fuzzy -msgid "Custom WB Error" -msgstr "Benutzerdefiniert WB 1" - -#: src/minoltamn.cpp:1473 -#, fuzzy -msgid "White balance fine tune" -msgstr "Weißabgleich-Anpassung" - -#: src/minoltamn.cpp:1479 -#, fuzzy -msgid "Color compensation filter" -msgstr "Blitzkompensationswert" - -#: src/minoltamn.cpp:1481 src/minoltamn.cpp:1482 src/sonymn.cpp:641 -#: src/sonymn.cpp:642 src/sonymn.cpp:714 src/sonymn.cpp:715 -#, fuzzy -msgid "Sony Image Size" -msgstr "Bildgrõße" - -#: src/minoltamn.cpp:1487 -msgid "Instant Playback Time" -msgstr "" - -#: src/minoltamn.cpp:1488 -msgid "Instant playback time" -msgstr "" - -#: src/minoltamn.cpp:1490 -msgid "Instant Playback Setup" -msgstr "" - -#: src/minoltamn.cpp:1491 -msgid "Instant playback setup" -msgstr "" - -#: src/minoltamn.cpp:1496 -msgid "Eye Start AF" -msgstr "" - -#: src/minoltamn.cpp:1497 -#, fuzzy -msgid "Eye start AF" -msgstr "Eine Aufnahme mit Autofokus" - -#: src/minoltamn.cpp:1499 -#, fuzzy -msgid "Red Eye Reduction" -msgstr "Rote Augen reduzieren" - -#: src/minoltamn.cpp:1500 -#, fuzzy -msgid "Red eye reduction" -msgstr "Rote Augen reduzieren" - -#: src/minoltamn.cpp:1502 -#, fuzzy -msgid "Flash Default" -msgstr "Blitzdetails" - -#: src/minoltamn.cpp:1503 -#, fuzzy -msgid "Flash default" -msgstr "Blitzdetails" - -#: src/minoltamn.cpp:1505 -#, fuzzy -msgid "Auto Bracket Order" -msgstr "Automatische Erfassung" - -#: src/minoltamn.cpp:1506 -#, fuzzy -msgid "Auto bracket order" -msgstr "Automatischer Erfassung" - -#: src/minoltamn.cpp:1508 -#, fuzzy -msgid "Focus Hold Button" -msgstr "Fokusmodus-Einstellung" - -#: src/minoltamn.cpp:1509 -#, fuzzy -msgid "Focus hold button" -msgstr "Fokusmodus-Einstellung" - -#: src/minoltamn.cpp:1511 -#, fuzzy -msgid "AEL Button" -msgstr "Automatische Belichtung-Einstellungen" - -#: src/minoltamn.cpp:1512 -#, fuzzy -msgid "AEL button" -msgstr "Automatische Belichtung-Einstellungen" - -#: src/minoltamn.cpp:1514 -#, fuzzy -msgid "Control Dial Set" -msgstr "Kontrasteinstellung" - -#: src/minoltamn.cpp:1515 -#, fuzzy -msgid "Control dial set" -msgstr "Kontrast" - -#: src/minoltamn.cpp:1517 -#, fuzzy -msgid "Exposure Compensation Mode" -msgstr "Belichtungskompensierung" - -#: src/minoltamn.cpp:1518 -#, fuzzy -msgid "Exposure compensation mode" -msgstr "Belichtungskompensation" - -#: src/minoltamn.cpp:1521 -#, fuzzy -msgid "AF assist" -msgstr "Autofokus-Unterstützung" - -#: src/minoltamn.cpp:1523 -#, fuzzy -msgid "Card Shutter Lock" -msgstr "Verschlusszähler" - -#: src/minoltamn.cpp:1524 -#, fuzzy -msgid "Card shutter lock" -msgstr "Schneller Verschluß" - -#: src/minoltamn.cpp:1526 -#, fuzzy -msgid "Lens Shutter Lock" -msgstr "Langsamer Verschluß" - -#: src/minoltamn.cpp:1527 -#, fuzzy -msgid "Lens shutter lock" -msgstr "Langsamer Verschluß" - -#: src/minoltamn.cpp:1529 -#, fuzzy -msgid "AF Area Illumination" -msgstr "GPS Bereichsinformation" - -#: src/minoltamn.cpp:1530 -#, fuzzy -msgid "AF area illumination" -msgstr "Autofokus-Modus" - -#: src/minoltamn.cpp:1532 -msgid "Monitor Display Off" -msgstr "" - -#: src/minoltamn.cpp:1533 -msgid "Monitor display off" -msgstr "" - -#: src/minoltamn.cpp:1535 -#, fuzzy -msgid "Record Display" -msgstr "Eingeblendetes Display" - -#: src/minoltamn.cpp:1536 -#, fuzzy -msgid "Record display" -msgstr "Eingeblendetes Display" - -#: src/minoltamn.cpp:1538 -msgid "Play Display" -msgstr "" - -#: src/minoltamn.cpp:1539 -msgid "Play display" -msgstr "" - -#: src/minoltamn.cpp:1541 -#, fuzzy -msgid "Exposure Indicator" -msgstr "Belichtungsindex" - -#: src/minoltamn.cpp:1542 -#, fuzzy -msgid "Exposure indicator" -msgstr "Belichtungsindex" - -#: src/minoltamn.cpp:1544 -#, fuzzy -msgid "AEL Exposure Indicator" -msgstr "Belichtungsindex" - -#: src/minoltamn.cpp:1545 -msgid "" -"AEL exposure indicator (also indicates exposure for next shot when " -"bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1547 -#, fuzzy -msgid "Exposure Bracketing Indicator Last" -msgstr "Belichtungserfassung" - -#: src/minoltamn.cpp:1548 -msgid "" -"Exposure bracketing indicator last (indicator for last shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1550 -msgid "Metering Off Scale Indicator" -msgstr "" - -#: src/minoltamn.cpp:1551 -msgid "" -"Metering off scale indicator (two flashing triangles when under or over " -"metering scale)" -msgstr "" - -#: src/minoltamn.cpp:1553 -#, fuzzy -msgid "Flash Exposure Indicator" -msgstr "Blitzkompensation" - -#: src/minoltamn.cpp:1554 -#, fuzzy -msgid "Flash exposure indicator" -msgstr "Blitzbelichtungskompensation" - -#: src/minoltamn.cpp:1556 -#, fuzzy -msgid "Flash Exposure Indicator Next" -msgstr "Blitzkompensation" - -#: src/minoltamn.cpp:1557 -msgid "Flash exposure indicator next (indicator for next shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1559 -#, fuzzy -msgid "Flash Exposure Indicator Last" -msgstr "Blitzkompensation" - -#: src/minoltamn.cpp:1560 -msgid "Flash exposure indicator last (indicator for last shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1565 -#, fuzzy -msgid "Focus Mode Switch" -msgstr "Fokusmodus" - -#: src/minoltamn.cpp:1566 -#, fuzzy -msgid "Focus mode switch" -msgstr "Fokusmodus-Einstellung" - -#: src/minoltamn.cpp:1568 src/olympusmn.cpp:759 -msgid "Flash Type" -msgstr "Blitztyp" - -#: src/minoltamn.cpp:1569 src/olympusmn.cpp:759 -msgid "Flash type" -msgstr "Blitztyp" - -#: src/minoltamn.cpp:1574 src/olympusmn.cpp:660 -msgid "AE Lock" -msgstr "Automatische Belichtungssperre" - -#: src/minoltamn.cpp:1581 -msgid "Color compensation filter: negative is green, positive is magenta" -msgstr "" - -#: src/minoltamn.cpp:1583 src/tags.cpp:759 -msgid "Battery Level" -msgstr "Batteriestatus" - -#: src/minoltamn.cpp:1584 -#, fuzzy -msgid "Battery level" -msgstr "Batteriestatus" - -#: src/minoltamn.cpp:1588 -#, fuzzy -msgid "Unknown Sony Camera Settings A100 tag" -msgstr "Unbekanntes Feld in den Canon-Kameraeinstellungen 1" - -#: src/minoltamn.cpp:1894 src/sonymn.cpp:484 -#, fuzzy -msgid "Clear" -msgstr "Jahr" - -#: src/minoltamn.cpp:1895 src/sonymn.cpp:485 -#, fuzzy -msgid "Deep" -msgstr "Denver" - -#: src/minoltamn.cpp:1896 src/sonymn.cpp:486 -#, fuzzy -msgid "Light" -msgstr "Rechts" - -#: src/minoltamn.cpp:1897 -#, fuzzy -msgid "Night View" -msgstr "Nachtszene" - -#: src/minoltamn.cpp:1898 -msgid "Autumn Leaves" -msgstr "" - -#: src/minoltamn.cpp:1937 -#, fuzzy -msgid "Local" -msgstr "Ort" - -#: src/minoltamn.cpp:1952 -#, fuzzy -msgid "Top-Right" -msgstr "Oben - rechts" - -#: src/minoltamn.cpp:1954 -#, fuzzy -msgid "Bottom-Right" -msgstr "Unten - rechts" - -#: src/minoltamn.cpp:1956 -#, fuzzy -msgid "Bottom-Left" -msgstr "Unten - links" - -#: src/minoltamn.cpp:1958 -#, fuzzy -msgid "Top-Left" -msgstr "Oben - links" - -#: src/minoltamn.cpp:1959 -#, fuzzy -msgid "Far-Right" -msgstr "Rechts zuschneiden" - -#: src/minoltamn.cpp:1960 -#, fuzzy -msgid "Far-Left" -msgstr "Links zuschneiden" - -#: src/minoltamn.cpp:1974 src/sonymn.cpp:89 -#, fuzzy -msgid "Advanced Auto" -msgstr "Fortgeschrittene hohe Funktion" - -#: src/minoltamn.cpp:1975 -#, fuzzy -msgid "Advanced Level" -msgstr "Fortgeschrittene hohe Empfindlichkeit" - -#: src/minoltamn.cpp:1988 -#, fuzzy -msgid "AF" -msgstr "Autofokus-S" - -#: src/minoltamn.cpp:1989 -#, fuzzy -msgid "Release" -msgstr "Freigabedatum" - -#: src/minoltamn.cpp:2001 -#, fuzzy -msgid "RAW " -msgstr "Roh" - -#: src/minoltamn.cpp:2002 -#, fuzzy -msgid "CRAW " -msgstr "Roh" - -#: src/minoltamn.cpp:2005 -#, fuzzy -msgid "RAW+JPEG" -msgstr "JPEG" - -#: src/minoltamn.cpp:2006 -#, fuzzy -msgid "CRAW+JPEG" -msgstr "JPEG" - -#: src/minoltamn.cpp:2062 -msgid "Raw + JPEG" -msgstr "" - -#: src/minoltamn.cpp:2063 -#, fuzzy -msgid "Compressed Raw" -msgstr "Kompressionsrate" - -#: src/minoltamn.cpp:2064 -#, fuzzy -msgid "Compressed Raw + JPEG" -msgstr "Komprimierte Bildgröße" - -#: src/minoltamn.cpp:2077 -msgid "Minolta AF 2x APO (D)" -msgstr "" - -#: src/minoltamn.cpp:2078 -msgid "Minolta AF 2x APO II" -msgstr "" - -#: src/minoltamn.cpp:2079 -msgid "Minolta AF 1.4x APO (D)" -msgstr "" - -#: src/minoltamn.cpp:2080 -msgid "Minolta AF 1.4x APO II" -msgstr "" - -#: src/minoltamn.cpp:2110 -msgid "ISO Setting Used" -msgstr "Benutzte ISO-Einstellungen" - -#: src/minoltamn.cpp:2111 src/olympusmn.cpp:126 src/olympusmn.cpp:1109 -msgid "High Key" -msgstr "Hoher Schlüssel" - -#: src/minoltamn.cpp:2112 src/olympusmn.cpp:132 src/olympusmn.cpp:1107 -msgid "Low Key" -msgstr "Niedriger Schlüssel" - -#: src/nikonmn.cpp:80 -#, fuzzy -msgid "Extra High" -msgstr "Extrafein" - -#: src/nikonmn.cpp:86 src/nikonmn.cpp:1560 -msgid "Single area" -msgstr "Einzelbereich" - -#: src/nikonmn.cpp:87 src/nikonmn.cpp:1561 -msgid "Dynamic area" -msgstr "Dynamischer Bereich" - -#: src/nikonmn.cpp:88 -msgid "Dynamic area, closest subject" -msgstr "Dynamischer Bereich, nächstes Motiv" - -#: src/nikonmn.cpp:89 -msgid "Group dynamic" -msgstr "Gruppendynamisch" - -#: src/nikonmn.cpp:90 src/nikonmn.cpp:1564 -msgid "Single area (wide)" -msgstr "Einzelbereich (Weit)" - -#: src/nikonmn.cpp:91 src/nikonmn.cpp:1565 -msgid "Dynamic area (wide)" -msgstr "Dynamischer Bereich (Weit)" - -#: src/nikonmn.cpp:104 src/nikonmn.cpp:797 src/nikonmn.cpp:812 -#: src/pentaxmn.cpp:215 -msgid "Upper-left" -msgstr "Aufwärts-Links" - -#: src/nikonmn.cpp:105 src/nikonmn.cpp:798 src/nikonmn.cpp:813 -#: src/pentaxmn.cpp:217 -msgid "Upper-right" -msgstr "Aufwärts-Rechts" - -#: src/nikonmn.cpp:106 src/nikonmn.cpp:799 src/nikonmn.cpp:814 -#: src/pentaxmn.cpp:223 -msgid "Lower-left" -msgstr "Abwärts-Links" - -#: src/nikonmn.cpp:107 src/nikonmn.cpp:800 src/nikonmn.cpp:815 -#: src/pentaxmn.cpp:225 -msgid "Lower-right" -msgstr "Abwärts-Rechts" - -#: src/nikonmn.cpp:108 -msgid "Left-most" -msgstr "Ganz Links" - -#: src/nikonmn.cpp:109 -msgid "Right-most" -msgstr "Ganz Rechts" - -#: src/nikonmn.cpp:143 -msgid "Fire, manual" -msgstr "Ausgelöst, manuell" - -#: src/nikonmn.cpp:144 -msgid "Fire, external" -msgstr "Ausgelöst, extern" - -#: src/nikonmn.cpp:145 -msgid "Fire, commander mode" -msgstr "Ausgelöst, Kommandomodus" - -#: src/nikonmn.cpp:146 -msgid "Fire, TTL mode" -msgstr "Ausgelöst, TTL-Modus" - -#: src/nikonmn.cpp:152 src/nikonmn.cpp:163 -msgid "Delay" -msgstr "Verzögerung" - -#: src/nikonmn.cpp:153 src/nikonmn.cpp:164 -msgid "PC control" -msgstr "PC Kontrolle" - -#: src/nikonmn.cpp:154 src/nikonmn.cpp:165 -msgid "Exposure bracketing" -msgstr "Belichtungserfassung" - -#: src/nikonmn.cpp:155 -#, fuzzy -msgid "Auto ISO" -msgstr "Automatisch" - -#: src/nikonmn.cpp:157 src/nikonmn.cpp:168 -msgid "IR control" -msgstr "IR Kontrolle" - -#: src/nikonmn.cpp:166 -msgid "Unused LE-NR slowdown" -msgstr "" - -#: src/nikonmn.cpp:174 -msgid "Auto release" -msgstr "Automatisch ausgelöst" - -#: src/nikonmn.cpp:175 -msgid "Manual release" -msgstr "Manuell ausgelöst" - -#: src/nikonmn.cpp:180 -#, fuzzy -msgid "Lossy (type 1)" -msgstr "Linsentyp" - -#: src/nikonmn.cpp:181 src/tags.cpp:247 -msgid "Uncompressed" -msgstr "Unkomprimiert" - -#: src/nikonmn.cpp:182 -#, fuzzy -msgid "Lossless" -msgstr "Los Angeles" - -#: src/nikonmn.cpp:183 -#, fuzzy -msgid "Lossy (type 2)" -msgstr "Linsentyp" - -#: src/nikonmn.cpp:189 -#, fuzzy -msgid "B & W" -msgstr "S&W" - -#: src/nikonmn.cpp:191 -#, fuzzy -msgid "Trim" -msgstr "Zeit" - -#: src/nikonmn.cpp:192 -#, fuzzy -msgid "Small picture" -msgstr "Film" - -#: src/nikonmn.cpp:193 -#, fuzzy -msgid "D-Lighting" -msgstr "Tageslicht" - -#: src/nikonmn.cpp:194 -#, fuzzy -msgid "Red eye" -msgstr "Rote-Augen" - -#: src/nikonmn.cpp:195 src/nikonmn.cpp:678 -#, fuzzy -msgid "Cyanotype" -msgstr "Typ" - -#: src/nikonmn.cpp:196 -#, fuzzy -msgid "Sky light" -msgstr "Tageslicht" - -#: src/nikonmn.cpp:197 -#, fuzzy -msgid "Warm tone" -msgstr "Farbton" - -#: src/nikonmn.cpp:198 -#, fuzzy -msgid "Color custom" -msgstr "Farbton" - -#: src/nikonmn.cpp:199 -#, fuzzy -msgid "Image overlay" -msgstr "Bildton" - -#: src/nikonmn.cpp:205 -#, fuzzy -msgid "Minimal" -msgstr "Manuell" - -#: src/nikonmn.cpp:214 src/nikonmn.cpp:524 -msgid "Nikon Makernote version" -msgstr "Version der Herstellerbemerkung von Nikon" - -#: src/nikonmn.cpp:216 src/nikonmn.cpp:468 src/nikonmn.cpp:525 -#: src/olympusmn.cpp:270 src/panasonicmn.cpp:344 src/tags.cpp:1583 -msgid "ISO Speed" -msgstr "ISO-Geschwindigkeit" - -#: src/nikonmn.cpp:228 src/nikonmn.cpp:529 -msgid "Sharpening" -msgstr "Schärfung" - -#: src/nikonmn.cpp:229 src/nikonmn.cpp:529 -msgid "Image sharpening setting" -msgstr "Bildschärfungseinstellung" - -#: src/nikonmn.cpp:231 src/nikonmn.cpp:530 -msgid "Focus" -msgstr "Fokus" - -#: src/nikonmn.cpp:234 src/nikonmn.cpp:531 -msgid "Flash Setting" -msgstr "Blitzeinstellung" - -#: src/nikonmn.cpp:235 src/nikonmn.cpp:531 -msgid "Flash setting" -msgstr "Blitzeinstellung" - -#: src/nikonmn.cpp:240 src/nikonmn.cpp:538 -msgid "ISO Selection" -msgstr "ISO-Auswahl" - -#: src/nikonmn.cpp:241 src/nikonmn.cpp:538 -msgid "ISO selection" -msgstr "ISO-Auswahl" - -#: src/nikonmn.cpp:243 src/nikonmn.cpp:539 src/panasonicmn.cpp:246 -msgid "Data Dump" -msgstr "Datendump" - -#: src/nikonmn.cpp:244 src/nikonmn.cpp:539 src/panasonicmn.cpp:246 -msgid "Data dump" -msgstr "Datendump" - -#: src/nikonmn.cpp:246 src/nikonmn.cpp:465 src/nikonmn.cpp:559 -msgid "Image Adjustment" -msgstr "Bildanpassung" - -#: src/nikonmn.cpp:247 src/nikonmn.cpp:466 src/nikonmn.cpp:559 -msgid "Image adjustment setting" -msgstr "Bildanpassung-Einstellung" - -#: src/nikonmn.cpp:249 src/nikonmn.cpp:483 src/nikonmn.cpp:561 -msgid "Auxiliary Lens" -msgstr "Zusatzlinse" - -#: src/nikonmn.cpp:250 src/nikonmn.cpp:484 src/nikonmn.cpp:561 -msgid "Auxiliary lens (adapter)" -msgstr "Zusatzlinse (Adapter)" - -#: src/nikonmn.cpp:253 src/nikonmn.cpp:564 src/olympusmn.cpp:304 -msgid "Manual focus distance" -msgstr "Manueller Fokusabstand" - -#: src/nikonmn.cpp:256 src/nikonmn.cpp:481 src/nikonmn.cpp:565 -msgid "Digital zoom setting" -msgstr "Digitale Zoomeinstellung" - -#: src/nikonmn.cpp:258 -msgid "AF Focus Position" -msgstr "Autofokus-Position" - -#: src/nikonmn.cpp:259 -msgid "AF focus position information" -msgstr "Autofokus-Positioninformation" - -#: src/nikonmn.cpp:263 -msgid "Unknown Nikon1MakerNote tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Nikon1" - -#: src/nikonmn.cpp:290 src/nikonmn.cpp:1416 -msgid "Continuous autofocus" -msgstr "Kontinuierlicher Autofokus" - -#: src/nikonmn.cpp:291 src/nikonmn.cpp:1417 -msgid "Single autofocus" -msgstr "Einzel Autofokus" - -#: src/nikonmn.cpp:325 src/nikonmn.cpp:506 src/nikonmn.cpp:1517 -msgid "Not used" -msgstr "Nicht benutzt" - -#: src/nikonmn.cpp:365 -msgid "guess" -msgstr "Raten" - -#: src/nikonmn.cpp:412 -msgid "VGA Basic" -msgstr "VGA Basis" - -#: src/nikonmn.cpp:413 -msgid "VGA Normal" -msgstr "VGA Normal" - -#: src/nikonmn.cpp:414 -msgid "VGA Fine" -msgstr "VGA Fein" - -#: src/nikonmn.cpp:415 -msgid "SXGA Basic" -msgstr "SXGA Basis" - -#: src/nikonmn.cpp:416 -msgid "SXGA Normal" -msgstr "SXGA Normal" - -#: src/nikonmn.cpp:417 -msgid "SXGA Fine" -msgstr "SXGA Fein" - -#: src/nikonmn.cpp:429 -msgid "Bright+" -msgstr "Helligkeit+" - -#: src/nikonmn.cpp:430 -msgid "Bright-" -msgstr "Helligkeit-" - -#: src/nikonmn.cpp:431 -msgid "Contrast+" -msgstr "Kontrast+" - -#: src/nikonmn.cpp:432 -msgid "Contrast-" -msgstr "Kontrast-" - -#: src/nikonmn.cpp:451 -msgid "Speedlight" -msgstr "Speedlight" - -#: src/nikonmn.cpp:491 -msgid "Unknown Nikon2MakerNote tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Nikon2" - -#: src/nikonmn.cpp:532 src/olympusmn.cpp:282 -msgid "Flash Device" -msgstr "Blitzgerät" - -#: src/nikonmn.cpp:532 src/olympusmn.cpp:283 -msgid "Flash device" -msgstr "Blitzgerät" - -#: src/nikonmn.cpp:534 src/olympusmn.cpp:249 src/panasonicmn.cpp:248 -msgid "White Balance Bias" -msgstr "Weißabgleichskontrolle" - -#: src/nikonmn.cpp:534 src/olympusmn.cpp:250 -msgid "White balance bias" -msgstr "Weißabgleichskontrolle" - -#: src/nikonmn.cpp:535 src/olympusmn.cpp:932 -#, fuzzy -msgid "WB RB Levels" -msgstr "WB_RGGBLevelsShade" - -#: src/nikonmn.cpp:535 src/olympusmn.cpp:932 -#, fuzzy -msgid "WB RB levels" -msgstr "Schwarzlevel" - -#: src/nikonmn.cpp:536 -msgid "Program Shift" -msgstr "Programmwechsel" - -#: src/nikonmn.cpp:536 -msgid "Program shift" -msgstr "Programmwechsel" - -#: src/nikonmn.cpp:537 -msgid "Exposure Difference" -msgstr "Belichtungsabstand" - -#: src/nikonmn.cpp:537 -msgid "Exposure difference" -msgstr "Belichtungsabstand" - -#: src/nikonmn.cpp:540 src/pentaxmn.cpp:877 -msgid "Pointer to a preview image" -msgstr "Zeiger auf ein Vorschaubild" - -#: src/nikonmn.cpp:540 src/pentaxmn.cpp:878 -#, fuzzy -msgid "Offset to an IFD containing a preview image" -msgstr "Offset des Vorschaubildes" - -#: src/nikonmn.cpp:541 -msgid "Flash Comp" -msgstr "Blitzkompensation" - -#: src/nikonmn.cpp:541 -msgid "Flash compensation setting" -msgstr "Blitzkompensationseinstellung" - -#: src/nikonmn.cpp:543 -msgid "Image Boundary" -msgstr "Bildgrenzen" - -#: src/nikonmn.cpp:543 -msgid "Image boundary" -msgstr "Bildgrenzen" - -#: src/nikonmn.cpp:544 -#, fuzzy -msgid "Flash exposure comp" -msgstr "Blitzbelichtungskompensation" - -#: src/nikonmn.cpp:545 -#, fuzzy -msgid "Flash Bracket Comp" -msgstr "Blitzkompensation" - -#: src/nikonmn.cpp:545 -#, fuzzy -msgid "Flash bracket compensation applied" -msgstr "Blitzbelichtungskompensation" - -#: src/nikonmn.cpp:546 -#, fuzzy -msgid "Exposure Bracket Comp" -msgstr "Belichtungserfassung" - -#: src/nikonmn.cpp:546 -#, fuzzy -msgid "AE bracket compensation applied" -msgstr "Blitzkompensationswert" - -#: src/nikonmn.cpp:547 src/olympusmn.cpp:459 -msgid "Image Processing" -msgstr "Bildverarbeitung" - -#: src/nikonmn.cpp:547 src/pentaxmn.cpp:985 src/pentaxmn.cpp:986 -msgid "Image processing" -msgstr "Bildverarbeitung" - -#: src/nikonmn.cpp:548 -#, fuzzy -msgid "Crop High Speed" -msgstr "Hohe Empfindlichkeit" - -#: src/nikonmn.cpp:548 -#, fuzzy -msgid "Crop high speed" -msgstr "Höhe des Zuschnitts" - -#: src/nikonmn.cpp:549 -#, fuzzy -msgid "Exposure Tuning" -msgstr "Belichtungswarnung" - -#: src/nikonmn.cpp:549 -#, fuzzy -msgid "Exposure tuning" -msgstr "Belichtungswarnung" - -#: src/nikonmn.cpp:552 -#, fuzzy -msgid "VR Info" -msgstr "Rohinfo" - -#: src/nikonmn.cpp:552 -#, fuzzy -msgid "VR info" -msgstr "Rohinfo" - -#: src/nikonmn.cpp:553 -#, fuzzy -msgid "Image Authentication" -msgstr "Bild-Orientierung" - -#: src/nikonmn.cpp:553 -#, fuzzy -msgid "Image authentication" -msgstr "Bild-Orientierung" - -#: src/nikonmn.cpp:554 -msgid "ActiveD-Lighting" -msgstr "" - -#: src/nikonmn.cpp:554 -msgid "ActiveD-lighting" -msgstr "" - -#: src/nikonmn.cpp:555 -#, fuzzy -msgid "Picture Control" -msgstr "Bild-Info" - -#: src/nikonmn.cpp:555 -#, fuzzy -msgid " Picture control" -msgstr "Bild-Info" - -#: src/nikonmn.cpp:556 -#, fuzzy -msgid "World Time" -msgstr "Minolta Zeit" - -#: src/nikonmn.cpp:556 -#, fuzzy -msgid "World time" -msgstr "Minolta Zeit" - -#: src/nikonmn.cpp:557 -#, fuzzy -msgid "ISO Info" -msgstr "Aufnahmeinfo" - -#: src/nikonmn.cpp:557 -#, fuzzy -msgid "ISO info" -msgstr "ISO-Einstellung" - -#: src/nikonmn.cpp:558 -#, fuzzy -msgid "Vignette Control" -msgstr "Vignettierungsmenge" - -#: src/nikonmn.cpp:558 -#, fuzzy -msgid "Vignette control" -msgstr "Vignettierungsmenge" - -#: src/nikonmn.cpp:560 -msgid "Tone Compensation" -msgstr "Tonkompensation" - -#: src/nikonmn.cpp:560 -msgid "Tone compensation" -msgstr "Tonkompensation" - -#: src/nikonmn.cpp:566 -msgid "Mode of flash used" -msgstr "Modus des benutzten Blitzes" - -#: src/nikonmn.cpp:568 src/panasonicmn.cpp:244 -msgid "Shooting Mode" -msgstr "Aufnahmemodus" - -#: src/nikonmn.cpp:568 src/panasonicmn.cpp:244 src/pentaxmn.cpp:868 -msgid "Shooting mode" -msgstr "Aufnahmemodus" - -#: src/nikonmn.cpp:569 -msgid "Auto Bracket Release" -msgstr "Auslöser der Automatische Erfassung" - -#: src/nikonmn.cpp:569 -msgid "Auto bracket release" -msgstr "Auslöser der Automatische Erfassung" - -#: src/nikonmn.cpp:570 -msgid "Lens FStops" -msgstr "Blendeneinstellung der Linse" - -#: src/nikonmn.cpp:571 -#, fuzzy -msgid "Contrast Curve" -msgstr "Kontrast-Wert" - -#: src/nikonmn.cpp:571 -#, fuzzy -msgid "Contrast curve" -msgstr "Kontrast-Wert" - -#: src/nikonmn.cpp:572 -#, fuzzy -msgid "Color Hue" -msgstr "Farbton" - -#: src/nikonmn.cpp:572 -#, fuzzy -msgid "Color hue" -msgstr "Farbton" - -#: src/nikonmn.cpp:573 src/olympusmn.cpp:253 src/olympusmn.cpp:684 -#: src/panasonicmn.cpp:282 -msgid "Scene mode" -msgstr "Szenenmodus" - -#: src/nikonmn.cpp:574 src/olympusmn.cpp:1076 src/properties.cpp:562 -#: src/tags.cpp:826 src/tags.cpp:1649 -msgid "Light Source" -msgstr "Lichtquelle" - -#: src/nikonmn.cpp:574 src/olympusmn.cpp:1076 -msgid "Light source" -msgstr "Lichtquelle" - -#: src/nikonmn.cpp:575 -#, fuzzy -msgid "Shot info" -msgstr "Aufnahmeinfo" - -#: src/nikonmn.cpp:576 src/nikonmn.cpp:700 -msgid "Hue Adjustment" -msgstr "Sättigungsanpassung" - -#: src/nikonmn.cpp:576 src/nikonmn.cpp:700 -msgid "Hue adjustment" -msgstr "Sättigungsanpassung" - -#: src/nikonmn.cpp:577 -#, fuzzy -msgid "NEF Compression" -msgstr "Kompression" - -#: src/nikonmn.cpp:577 -#, fuzzy -msgid "NEF compression" -msgstr "Kompression" - -#: src/nikonmn.cpp:580 src/tags.cpp:898 -msgid "Linearization Table" -msgstr "Linearisierungstabelle" - -#: src/nikonmn.cpp:580 -#, fuzzy -msgid "Linearization table" -msgstr "Linearisierungstabelle" - -#: src/nikonmn.cpp:581 -#, fuzzy -msgid "Color Balance" -msgstr "Farbabgleich 1" - -#: src/nikonmn.cpp:581 -#, fuzzy -msgid "Color balance" -msgstr "Roter Farbabgleich" - -#: src/nikonmn.cpp:582 -msgid "Lens Data" -msgstr "Linsendaten" - -#: src/nikonmn.cpp:582 -msgid "Lens data settings" -msgstr "Linsendaten-Einstellungen" - -#: src/nikonmn.cpp:583 -msgid "Raw Image Center" -msgstr "Rohbild-Center" - -#: src/nikonmn.cpp:583 -msgid "Raw image center" -msgstr "Rohbild-Center" - -#: src/nikonmn.cpp:584 -msgid "Sensor Pixel Size" -msgstr "Sensor-Pixelgröße" - -#: src/nikonmn.cpp:584 -msgid "Sensor pixel size" -msgstr "Sensor-Pixelgröße" - -#: src/nikonmn.cpp:586 -#, fuzzy -msgid "Scene Assist" -msgstr "Autofokus-Unterstützung" - -#: src/nikonmn.cpp:586 -#, fuzzy -msgid "Scene assist" -msgstr "Szenenbereich" - -#: src/nikonmn.cpp:587 -#, fuzzy -msgid "Retouch History" -msgstr "Historie" - -#: src/nikonmn.cpp:587 -#, fuzzy -msgid "Retouch history" -msgstr "Historie" - -#: src/nikonmn.cpp:589 -msgid "Serial NO" -msgstr "Seriennummer" - -#: src/nikonmn.cpp:589 -msgid "Camera serial number, usually starts with \"NO= \"" -msgstr "" - -#: src/nikonmn.cpp:590 -msgid "Image Data Size" -msgstr "Bilddatengröße" - -#: src/nikonmn.cpp:590 -msgid "Image data size" -msgstr "Bilddatengröße" - -#: src/nikonmn.cpp:592 -msgid "Image Count" -msgstr "Bildanzahl" - -#: src/nikonmn.cpp:592 -msgid "Image count" -msgstr "Bildanzahl" - -#: src/nikonmn.cpp:593 src/nikonmn.cpp:1227 -#, fuzzy -msgid "Deleted Image Count" -msgstr "Bildanzahl löschen" - -#: src/nikonmn.cpp:593 src/nikonmn.cpp:1227 -#, fuzzy -msgid "Deleted image count" -msgstr "Bildanzahl löschen" - -#: src/nikonmn.cpp:594 src/nikonmn.cpp:1064 src/nikonmn.cpp:1077 -#: src/nikonmn.cpp:1137 src/nikonmn.cpp:1197 src/nikonmn.cpp:1233 -msgid "Shutter Count" -msgstr "Verschlusszähler" - -#: src/nikonmn.cpp:594 -msgid "Number of shots taken by camera" -msgstr "Anzahl der Fotos dieser Kamera" - -#: src/nikonmn.cpp:595 -#, fuzzy -msgid "Flash info" -msgstr "Blitzinformation" - -#: src/nikonmn.cpp:596 -msgid "Image Optimization" -msgstr "Bildoptimierung" - -#: src/nikonmn.cpp:596 -msgid "Image optimization" -msgstr "Bildoptimierung" - -#: src/nikonmn.cpp:598 -msgid "Program Variation" -msgstr "Programmvariation" - -#: src/nikonmn.cpp:598 -msgid "Program variation" -msgstr "Programmvariation" - -#: src/nikonmn.cpp:600 -msgid "AF Response" -msgstr "Autofokus-Antwort" - -#: src/nikonmn.cpp:600 -msgid "AF response" -msgstr "Autofokus-Antwort" - -#: src/nikonmn.cpp:601 -#, fuzzy -msgid "Multi exposure" -msgstr "Mehrfache Belichtung" - -#: src/nikonmn.cpp:602 -msgid "High ISO Noise Reduction" -msgstr "Hohe ISO-Rauschreduktion" - -#: src/nikonmn.cpp:603 src/nikonmn.cpp:702 -#, fuzzy -msgid "Toning effect" -msgstr "Fotoeffekt" - -#: src/nikonmn.cpp:604 -#, fuzzy -msgid "AF info 2" -msgstr "Autofokus-Information" - -#: src/nikonmn.cpp:605 -#, fuzzy -msgid "File info" -msgstr "Dateiname" - -#: src/nikonmn.cpp:606 -#, fuzzy -msgid "AF tune" -msgstr "Benutzter Autofokus-Punkt" - -#: src/nikonmn.cpp:609 -msgid "Capture Data" -msgstr "Eingelesene Daten" - -#: src/nikonmn.cpp:609 -msgid "Capture data" -msgstr "Eingelesene Daten" - -#: src/nikonmn.cpp:610 -msgid "Capture Version" -msgstr "Version der gelesenen Daten" - -#: src/nikonmn.cpp:610 -msgid "Capture version" -msgstr "Version der gelesenen Daten" - -#: src/nikonmn.cpp:612 -msgid "Capture Offsets" -msgstr "Erfassungsoffsets" - -#: src/nikonmn.cpp:612 -msgid "Capture offsets" -msgstr "Erfassungsoffsets" - -#: src/nikonmn.cpp:613 -#, fuzzy -msgid "Scan IFD" -msgstr "Speicherungs-ID" - -#: src/nikonmn.cpp:614 -#, fuzzy -msgid "ICC profile" -msgstr "Farbprofil" - -#: src/nikonmn.cpp:615 -#, fuzzy -msgid "Capture output" -msgstr "Eingelesene Daten" - -#: src/nikonmn.cpp:617 -msgid "Unknown Nikon3MakerNote tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Nikon3" - -#: src/nikonmn.cpp:627 src/olympusmn.cpp:65 src/panasonicmn.cpp:140 -#: src/pentaxmn.cpp:298 -msgid "No" -msgstr "Nein" - -#: src/nikonmn.cpp:628 src/olympusmn.cpp:66 src/panasonicmn.cpp:139 -#: src/pentaxmn.cpp:299 -msgid "Yes" -msgstr "Ja" - -#: src/nikonmn.cpp:633 -msgid "Y/M/D" -msgstr "" - -#: src/nikonmn.cpp:634 -msgid "M/D/Y" -msgstr "" - -#: src/nikonmn.cpp:635 -msgid "D/M/Y" -msgstr "" - -#: src/nikonmn.cpp:647 src/nikonmn.cpp:1228 -#, fuzzy -msgid "Vibration Reduction" -msgstr "Verzerrungskorrektur" - -#: src/nikonmn.cpp:647 src/nikonmn.cpp:1228 -#, fuzzy -msgid "Vibration reduction" -msgstr "Verzerrungskorrektur" - -#: src/nikonmn.cpp:649 -#, fuzzy -msgid "Unknown Nikon Vibration Reduction Tag" -msgstr "Unbekanntes Feld in den benutzerdefinierten Funktionen von Canon" - -#: src/nikonmn.cpp:659 -#, fuzzy -msgid "Default Settings" -msgstr "Besitzt Einstellungen" - -#: src/nikonmn.cpp:660 src/nikonmn.cpp:695 -#, fuzzy -msgid "Quick Adjust" -msgstr "Sättigungsanpassung" - -#: src/nikonmn.cpp:661 -#, fuzzy -msgid "Full Control" -msgstr "Farbkontrolle" - -#: src/nikonmn.cpp:682 -msgid "Blue-green" -msgstr "" - -#: src/nikonmn.cpp:684 -#, fuzzy -msgid "Purple-blue" -msgstr "Lila" - -#: src/nikonmn.cpp:685 -#, fuzzy -msgid "Red-purple" -msgstr "Lila" - -#: src/nikonmn.cpp:692 src/properties.cpp:980 -#, fuzzy -msgid "Name" -msgstr "Spitzname" - -#: src/nikonmn.cpp:693 -#, fuzzy -msgid "Base" -msgstr "Basis-Adresse" - -#: src/nikonmn.cpp:694 -#, fuzzy -msgid "Adjust" -msgstr "Justiere" - -#: src/nikonmn.cpp:695 -#, fuzzy -msgid "Quick adjust" -msgstr "Sättigungsanpassung" - -#: src/nikonmn.cpp:701 -#, fuzzy -msgid "Filter effect" -msgstr "Farbeffekt" - -#: src/nikonmn.cpp:703 -#, fuzzy -msgid "Toning Saturation" -msgstr "Sättigung" - -#: src/nikonmn.cpp:703 -#, fuzzy -msgid "Toning saturation" -msgstr "Sättigung" - -#: src/nikonmn.cpp:705 -#, fuzzy -msgid "Unknown Nikon Picture Control Tag" -msgstr "Unbekanntes Feld in der Canon-Bildinfo" - -#: src/nikonmn.cpp:722 -#, fuzzy -msgid "AF Fine Tune" -msgstr "Benutzter Autofokus-Punkt" - -#: src/nikonmn.cpp:722 -#, fuzzy -msgid "AF fine tune" -msgstr "Benutzter Autofokus-Punkt" - -#: src/nikonmn.cpp:723 -#, fuzzy -msgid "AF Fine Tune Index" -msgstr "Benutzter Autofokus-Punkt" - -#: src/nikonmn.cpp:723 -#, fuzzy -msgid "AF fine tune index" -msgstr "Benutzter Autofokus-Punkt" - -#: src/nikonmn.cpp:724 -#, fuzzy -msgid "AF Fine Tune Adjustment" -msgstr "Benutzter Autofokus-Punkt" - -#: src/nikonmn.cpp:724 -#, fuzzy -msgid "AF fine tune adjustment" -msgstr "Benutzter Autofokus-Punkt" - -#: src/nikonmn.cpp:726 -#, fuzzy -msgid "Unknown Nikon AF Fine Tune Tag" -msgstr "Unbekanntes Feld in der Canon-Bildinfo" - -#: src/nikonmn.cpp:736 -#, fuzzy -msgid "Timezone" -msgstr "Ton" - -#: src/nikonmn.cpp:737 -#, fuzzy -msgid "Daylight Savings" -msgstr "Tageslicht" - -#: src/nikonmn.cpp:737 -#, fuzzy -msgid "Daylight savings" -msgstr "Tageslicht" - -#: src/nikonmn.cpp:738 -#, fuzzy -msgid "Date Display Format" -msgstr "Dateiformat" - -#: src/nikonmn.cpp:738 -#, fuzzy -msgid "Date display format" -msgstr "Datenformat" - -#: src/nikonmn.cpp:740 -#, fuzzy -msgid "Unknown Nikon World Time Tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Nikon1" - -#: src/nikonmn.cpp:751 -#, fuzzy -msgid "Hi 0.3" -msgstr "HV10" - -#: src/nikonmn.cpp:752 -#, fuzzy -msgid "Hi 0.5" -msgstr "HV10" - -#: src/nikonmn.cpp:753 -#, fuzzy -msgid "Hi 0.7" -msgstr "HV10" - -#: src/nikonmn.cpp:754 -#, fuzzy -msgid "Hi 1.0" -msgstr "HV10" - -#: src/nikonmn.cpp:755 -#, fuzzy -msgid "Hi 1.3" -msgstr "HV10" - -#: src/nikonmn.cpp:756 -#, fuzzy -msgid "Hi 1.5" -msgstr "HV10" - -#: src/nikonmn.cpp:757 -#, fuzzy -msgid "Hi 1.7" -msgstr "HV10" - -#: src/nikonmn.cpp:758 -#, fuzzy -msgid "Hi 2.0" -msgstr "HV10" - -#: src/nikonmn.cpp:759 -msgid "Lo 0.3" -msgstr "" - -#: src/nikonmn.cpp:760 -msgid "Lo 0.5" -msgstr "" - -#: src/nikonmn.cpp:761 -msgid "Lo 0.7" -msgstr "" - -#: src/nikonmn.cpp:762 -#, fuzzy -msgid "Lo 1.0" -msgstr "HV10" - -#: src/nikonmn.cpp:768 -#, fuzzy -msgid "ISO Expansion" -msgstr "ISO-Auswahl" - -#: src/nikonmn.cpp:768 -#, fuzzy -msgid "ISO expansion" -msgstr "ISO-Auswahl" - -#: src/nikonmn.cpp:769 -#, fuzzy -msgid "ISO 2" -msgstr "Aufnahmeinfo" - -#: src/nikonmn.cpp:770 -#, fuzzy -msgid "ISO Expansion 2" -msgstr "ISO-Auswahl" - -#: src/nikonmn.cpp:770 -#, fuzzy -msgid "ISO expansion 2" -msgstr "ISO-Auswahl" - -#: src/nikonmn.cpp:772 -#, fuzzy -msgid "Unknown Nikon Iso Info Tag" -msgstr "Unbekanntes Feld in der Canon-Bildinfo" - -#: src/nikonmn.cpp:782 -#, fuzzy -msgid "Single Area" -msgstr "Einzelbereich" - -#: src/nikonmn.cpp:783 -#, fuzzy -msgid "Dynamic Area" -msgstr "Dynamischer Bereich" - -#: src/nikonmn.cpp:784 -#, fuzzy -msgid "Dynamic Area, Closest Subject" -msgstr "Dynamischer Bereich, nächstes Motiv" - -#: src/nikonmn.cpp:785 -#, fuzzy -msgid "Group Dynamic" -msgstr "Gruppendynamisch" - -#: src/nikonmn.cpp:786 -#, fuzzy -msgid "Single Area (wide)" -msgstr "Einzelbereich (Weit)" - -#: src/nikonmn.cpp:787 -#, fuzzy -msgid "Dynamic Area (wide)" -msgstr "Dynamischer Bereich (Weit)" - -#: src/nikonmn.cpp:795 src/nikonmn.cpp:810 src/pentaxmn.cpp:219 -msgid "Mid-left" -msgstr "Mitte - links" - -#: src/nikonmn.cpp:796 src/nikonmn.cpp:811 src/pentaxmn.cpp:221 -msgid "Mid-right" -msgstr "Mitte - rechts" - -#: src/nikonmn.cpp:801 src/nikonmn.cpp:816 -#, fuzzy -msgid "Far Left" -msgstr "Links zuschneiden" - -#: src/nikonmn.cpp:802 src/nikonmn.cpp:817 -#, fuzzy -msgid "Far Right" -msgstr "Rechts zuschneiden" - -#: src/nikonmn.cpp:822 src/nikonmn.cpp:845 -#, fuzzy -msgid "AF area mode" -msgstr "Autofokus-Modus" - -#: src/nikonmn.cpp:823 src/olympusmn.cpp:1008 src/pentaxmn.cpp:902 -msgid "AF point" -msgstr "Autofokus-Punkt" - -#: src/nikonmn.cpp:824 -#, fuzzy -msgid "AF Points In Focus" -msgstr "Benutzte Autofokus-Punkte" - -#: src/nikonmn.cpp:824 -#, fuzzy -msgid "AF points in focus" -msgstr "Benutzte Autofokus-Punkte" - -#: src/nikonmn.cpp:826 -#, fuzzy -msgid "Unknown Nikon Auto Focus Tag" -msgstr "Unbekanntes Feld in den benutzerdefinierten Funktionen von Canon" - -#: src/nikonmn.cpp:837 -msgid "On (51-point)" -msgstr "" - -#: src/nikonmn.cpp:838 -msgid "On (11-point)" -msgstr "" - -#: src/nikonmn.cpp:844 -#, fuzzy -msgid "Contrast Detect AF" -msgstr "Kontrasteinstellungen" - -#: src/nikonmn.cpp:844 -#, fuzzy -msgid "Contrast detect AF" -msgstr "Kontrasteinstellungen" - -#: src/nikonmn.cpp:846 -#, fuzzy -msgid "Phase Detect AF" -msgstr "Fehler beim lesen" - -#: src/nikonmn.cpp:846 -#, fuzzy -msgid "Phase detect AF" -msgstr "Fehler beim lesen" - -#: src/nikonmn.cpp:847 -#, fuzzy -msgid "Primary AF Point" -msgstr "Graupunkt" - -#: src/nikonmn.cpp:847 -#, fuzzy -msgid "Primary AF point" -msgstr "Graupunkt" - -#: src/nikonmn.cpp:849 -#, fuzzy -msgid "AF Image Width" -msgstr "Bildbreite" - -#: src/nikonmn.cpp:849 -#, fuzzy -msgid "AF image width" -msgstr "Bildbreite" - -#: src/nikonmn.cpp:850 -#, fuzzy -msgid "AF Image Height" -msgstr "Bildhöhe" - -#: src/nikonmn.cpp:850 -#, fuzzy -msgid "AF image height" -msgstr "Bildhöhe" - -#: src/nikonmn.cpp:851 -#, fuzzy -msgid "AF Area X Position" -msgstr "Autofokus-Position" - -#: src/nikonmn.cpp:851 -#, fuzzy -msgid "AF area x position" -msgstr "Autofokus-Position" - -#: src/nikonmn.cpp:852 -#, fuzzy -msgid "AF Area Y Position" -msgstr "Autofokus-Position" - -#: src/nikonmn.cpp:852 -#, fuzzy -msgid "AF area y position" -msgstr "Autofokus-Position" - -#: src/nikonmn.cpp:853 -#, fuzzy -msgid "AF Area Width" -msgstr "Autofokus-Modus" - -#: src/nikonmn.cpp:853 -#, fuzzy -msgid "AF area width" -msgstr "Autofokus-Modus" - -#: src/nikonmn.cpp:854 -#, fuzzy -msgid "AF Area Height" -msgstr "Autofokus-Modus" - -#: src/nikonmn.cpp:854 -#, fuzzy -msgid "AF area height" -msgstr "Rechts zuschneiden" - -#: src/nikonmn.cpp:855 -#, fuzzy -msgid "Contrast Detect AF In Focus" -msgstr "Kontrasteinstellungen" - -#: src/nikonmn.cpp:855 -#, fuzzy -msgid "Contrast detect AF in focus" -msgstr "Kontrasteinstellungen" - -#: src/nikonmn.cpp:857 -#, fuzzy -msgid "Unknown Nikon Auto Focus 2 Tag" -msgstr "Unbekanntes Feld in den benutzerdefinierten Funktionen von Canon" - -#: src/nikonmn.cpp:868 -#, fuzzy -msgid "Directory Number" -msgstr "Ablaufsnummer" - -#: src/nikonmn.cpp:868 -#, fuzzy -msgid "Directory number" -msgstr "Ablaufsnummer" - -#: src/nikonmn.cpp:871 -#, fuzzy -msgid "Unknown Nikon File Info Tag" -msgstr "Unbekanntes Feld in der Canon-Bildinfo" - -#: src/nikonmn.cpp:882 src/pentaxmn.cpp:542 -msgid "Multiple Exposure" -msgstr "Mehrfache Belichtung" - -#: src/nikonmn.cpp:883 -#, fuzzy -msgid "Image Overlay" -msgstr "Bildton" - -#: src/nikonmn.cpp:889 -#, fuzzy -msgid "Multi Exposure Mode" -msgstr "Belichtungsmodus" - -#: src/nikonmn.cpp:889 -#, fuzzy -msgid "Multi exposure mode" -msgstr "Mehrfache Belichtung" - -#: src/nikonmn.cpp:890 -#, fuzzy -msgid "Multi Exposure Shots" -msgstr "Mehrfache Belichtung" - -#: src/nikonmn.cpp:890 -#, fuzzy -msgid "Multi exposure shots" -msgstr "Mehrfache Belichtung" - -#: src/nikonmn.cpp:891 -#, fuzzy -msgid "Multi Exposure Auto Gain" -msgstr "Mehrfache Belichtung" - -#: src/nikonmn.cpp:891 -#, fuzzy -msgid "Multi exposure auto gain" -msgstr "Mehrfache Belichtung" - -#: src/nikonmn.cpp:893 src/nikonmn.cpp:1013 src/nikonmn.cpp:1033 -#: src/nikonmn.cpp:1053 -#, fuzzy -msgid "Unknown Nikon Multi Exposure Tag" -msgstr "Unbekanntes Feld in den benutzerdefinierten Funktionen von Canon" - -#: src/nikonmn.cpp:905 src/olympusmn.cpp:143 -msgid "Internal" -msgstr "Intern" - -#: src/nikonmn.cpp:911 -msgid "1.01 (SB-800 or Metz 58 AF-1)" -msgstr "" - -#: src/nikonmn.cpp:912 -msgid "1.03 (SB-800)" -msgstr "" - -#: src/nikonmn.cpp:913 -msgid "2.01 (SB-800)" -msgstr "" - -#: src/nikonmn.cpp:914 -msgid "2.04 (SB-600)" -msgstr "" - -#: src/nikonmn.cpp:915 -msgid "2.05 (SB-600)" -msgstr "" - -#: src/nikonmn.cpp:916 -msgid "3.01 (SU-800 Remote Commander)" -msgstr "" - -#: src/nikonmn.cpp:917 -msgid "4.01 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:918 -msgid "4.02 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:919 -msgid "4.04 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:920 -msgid "5.01 (SB-900)" -msgstr "" - -#: src/nikonmn.cpp:921 -msgid "5.02 (SB-900)" -msgstr "" - -#: src/nikonmn.cpp:927 -msgid "0.1 m" -msgstr "" - -#: src/nikonmn.cpp:928 -msgid "0.2 m" -msgstr "" - -#: src/nikonmn.cpp:929 -msgid "0.3 m" -msgstr "" - -#: src/nikonmn.cpp:930 -msgid "0.4 m" -msgstr "" - -#: src/nikonmn.cpp:931 -msgid "0.5 m" -msgstr "" - -#: src/nikonmn.cpp:932 -msgid "0.6 m" -msgstr "" - -#: src/nikonmn.cpp:933 -msgid "0.7 m" -msgstr "" - -#: src/nikonmn.cpp:934 -msgid "0.8 m" -msgstr "" - -#: src/nikonmn.cpp:935 -msgid "0.9 m" -msgstr "" - -#: src/nikonmn.cpp:936 -msgid "1.0 m" -msgstr "" - -#: src/nikonmn.cpp:937 -msgid "1.1 m" -msgstr "" - -#: src/nikonmn.cpp:938 -msgid "1.3 m" -msgstr "" - -#: src/nikonmn.cpp:939 -msgid "1.4 m" -msgstr "" - -#: src/nikonmn.cpp:940 -msgid "1.6 m" -msgstr "" - -#: src/nikonmn.cpp:941 -msgid "1.8 m" -msgstr "" - -#: src/nikonmn.cpp:942 -msgid "2.0 m" -msgstr "" - -#: src/nikonmn.cpp:943 -msgid "2.2 m" -msgstr "" - -#: src/nikonmn.cpp:944 -msgid "2.5 m" -msgstr "" - -#: src/nikonmn.cpp:945 -msgid "2.8 m" -msgstr "" - -#: src/nikonmn.cpp:946 -msgid "3.2 m" -msgstr "" - -#: src/nikonmn.cpp:947 -msgid "3.6 m" -msgstr "" - -#: src/nikonmn.cpp:948 -msgid "4.0 m" -msgstr "" - -#: src/nikonmn.cpp:949 -msgid "4.5 m" -msgstr "" - -#: src/nikonmn.cpp:950 -msgid "5.0 m" -msgstr "" - -#: src/nikonmn.cpp:951 -msgid "5.6 m" -msgstr "" - -#: src/nikonmn.cpp:952 -msgid "6.3 m" -msgstr "" - -#: src/nikonmn.cpp:953 -msgid "7.1 m" -msgstr "" - -#: src/nikonmn.cpp:954 -msgid "8.0 m" -msgstr "" - -#: src/nikonmn.cpp:955 -msgid "9.0 m" -msgstr "" - -#: src/nikonmn.cpp:956 -#, fuzzy -msgid "10.0 m" -msgstr "100" - -#: src/nikonmn.cpp:957 -msgid "11.0 m" -msgstr "" - -#: src/nikonmn.cpp:958 -msgid "13.0 m" -msgstr "" - -#: src/nikonmn.cpp:959 -msgid "14.0 m" -msgstr "" - -#: src/nikonmn.cpp:960 -#, fuzzy -msgid "16.0 m" -msgstr "160" - -#: src/nikonmn.cpp:961 -msgid "18.0 m" -msgstr "" - -#: src/nikonmn.cpp:962 -#, fuzzy -msgid "20.0 m" -msgstr "200" - -#: src/nikonmn.cpp:969 -#, fuzzy -msgid "iTTL-BL" -msgstr "TTL" - -#: src/nikonmn.cpp:970 -#, fuzzy -msgid "iTTL" -msgstr "TTL" - -#: src/nikonmn.cpp:971 -#, fuzzy -msgid "Auto Aperture" -msgstr "Blende" - -#: src/nikonmn.cpp:973 -msgid "GN (distance priority)" -msgstr "" - -#: src/nikonmn.cpp:975 src/nikonmn.cpp:976 -#, fuzzy -msgid "Repeating Flash" -msgstr "Wiedergabeklasse" - -#: src/nikonmn.cpp:982 -#, fuzzy -msgid "Bounce Flash" -msgstr "Kein Blitz" - -#: src/nikonmn.cpp:983 -msgid "Wide Flash Adapter" -msgstr "" - -#: src/nikonmn.cpp:989 -msgid "FL-GL1" -msgstr "" - -#: src/nikonmn.cpp:990 -msgid "FL-GL2" -msgstr "" - -#: src/nikonmn.cpp:991 -msgid "TN-A1" -msgstr "" - -#: src/nikonmn.cpp:992 -msgid "TN-A2" -msgstr "" - -#: src/nikonmn.cpp:996 -#, fuzzy -msgid "Amber" -msgstr "F Nummer." - -#: src/nikonmn.cpp:1002 src/nikonmn.cpp:1024 src/nikonmn.cpp:1044 -#, fuzzy -msgid "Flash Source" -msgstr "Dateiquelle" - -#: src/nikonmn.cpp:1002 src/nikonmn.cpp:1024 src/nikonmn.cpp:1044 -#, fuzzy -msgid "Flash source" -msgstr "Dateiquelle" - -#: src/nikonmn.cpp:1003 src/nikonmn.cpp:1025 -#, fuzzy -msgid "0x0005" -msgstr "1000" - -#: src/nikonmn.cpp:1004 src/nikonmn.cpp:1026 src/nikonmn.cpp:1045 -#, fuzzy -msgid "External Flash Firmware" -msgstr "Externer Blitzzoom" - -#: src/nikonmn.cpp:1004 src/nikonmn.cpp:1026 src/nikonmn.cpp:1045 -#, fuzzy -msgid "External flash firmware" -msgstr "Externer Blitzmodus" - -#: src/nikonmn.cpp:1005 src/nikonmn.cpp:1027 src/nikonmn.cpp:1046 -#, fuzzy -msgid "External Flash Flags" -msgstr "Externer Blitz" - -#: src/nikonmn.cpp:1005 src/nikonmn.cpp:1027 src/nikonmn.cpp:1046 -#, fuzzy -msgid "External flash flags" -msgstr "Externer Blitz" - -#: src/nikonmn.cpp:1006 src/nikonmn.cpp:1028 src/nikonmn.cpp:1047 -#, fuzzy -msgid "Flash Focal Length" -msgstr "Maximale Fokuslänge" - -#: src/nikonmn.cpp:1006 src/nikonmn.cpp:1028 src/nikonmn.cpp:1047 -#, fuzzy -msgid "Flash focal length" -msgstr "Maximale Fokuslänge" - -#: src/nikonmn.cpp:1007 src/nikonmn.cpp:1029 src/nikonmn.cpp:1048 -msgid "Repeating Flash Rate" -msgstr "" - -#: src/nikonmn.cpp:1007 src/nikonmn.cpp:1029 src/nikonmn.cpp:1048 -#, fuzzy -msgid "Repeating flash rate" -msgstr "Die Datei wird umbenannt nach" - -#: src/nikonmn.cpp:1008 src/nikonmn.cpp:1030 src/nikonmn.cpp:1049 -msgid "Repeating Flash Count" -msgstr "" - -#: src/nikonmn.cpp:1008 src/nikonmn.cpp:1030 src/nikonmn.cpp:1049 -#, fuzzy -msgid "Repeating flash count" -msgstr "Manuelle Blitzkontrolle" - -#: src/nikonmn.cpp:1009 src/nikonmn.cpp:1031 src/nikonmn.cpp:1050 -#, fuzzy -msgid "Flash GN Distance" -msgstr "Fokusabstand" - -#: src/nikonmn.cpp:1009 src/nikonmn.cpp:1031 src/nikonmn.cpp:1050 -#, fuzzy -msgid "Flash GN distance" -msgstr "Fokusabstand" - -#: src/nikonmn.cpp:1010 -msgid "Flash Group A Control Mode" -msgstr "" - -#: src/nikonmn.cpp:1010 -msgid "Flash group a control mode" -msgstr "" - -#: src/nikonmn.cpp:1011 -msgid "Flash Group B Control Mode" -msgstr "" - -#: src/nikonmn.cpp:1011 -msgid "Flash group b control mode" -msgstr "" - -#: src/nikonmn.cpp:1051 -#, fuzzy -msgid "Flash Color Filter" -msgstr "Farbfilter" - -#: src/nikonmn.cpp:1051 -#, fuzzy -msgid "Flash color filter" -msgstr "Farbfilter" - -#: src/nikonmn.cpp:1064 src/nikonmn.cpp:1077 src/nikonmn.cpp:1137 -#: src/nikonmn.cpp:1197 src/nikonmn.cpp:1233 src/pentaxmn.cpp:1042 -#: src/pentaxmn.cpp:1043 -msgid "Shutter count" -msgstr "Verschlusszähler" - -#: src/nikonmn.cpp:1066 -#, fuzzy -msgid "Unknown Nikon Shot Info D80 Tag" -msgstr "Unbekanntes Feld in der Canon-Bildinfo" - -#: src/nikonmn.cpp:1078 src/sonymn.cpp:408 src/sonymn.cpp:409 -#, fuzzy -msgid "Flash Level" -msgstr "Blitzgerät" - -#: src/nikonmn.cpp:1078 -#, fuzzy -msgid "Flash level" -msgstr "Blitzgerät" - -#: src/nikonmn.cpp:1080 -#, fuzzy -msgid "Unknown Nikon Shot Info D40 Tag" -msgstr "Unbekanntes Feld in der Canon-Bildinfo" - -#: src/nikonmn.cpp:1090 src/nikonmn.cpp:1150 -#, fuzzy -msgid "0" -msgstr "50" - -#: src/nikonmn.cpp:1091 src/nikonmn.cpp:1159 -#, fuzzy -msgid "+1" -msgstr "160" - -#: src/nikonmn.cpp:1092 src/nikonmn.cpp:1160 -#, fuzzy -msgid "+2" -msgstr "200" - -#: src/nikonmn.cpp:1093 src/nikonmn.cpp:1161 -msgid "+4" -msgstr "" - -#: src/nikonmn.cpp:1094 src/nikonmn.cpp:1162 -msgid "+8" -msgstr "" - -#: src/nikonmn.cpp:1095 src/nikonmn.cpp:1163 -#, fuzzy -msgid "+16" -msgstr "160" - -#: src/nikonmn.cpp:1096 src/nikonmn.cpp:1164 -#, fuzzy -msgid "-16" -msgstr "160" - -#: src/nikonmn.cpp:1097 src/nikonmn.cpp:1165 -msgid "-8" -msgstr "" - -#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1166 -msgid "-4" -msgstr "" - -#: src/nikonmn.cpp:1099 src/nikonmn.cpp:1167 -#, fuzzy -msgid "-2" -msgstr "200" - -#: src/nikonmn.cpp:1100 src/nikonmn.cpp:1168 -#, fuzzy -msgid "-1" -msgstr "160" - -#: src/nikonmn.cpp:1101 src/nikonmn.cpp:1169 -#, fuzzy -msgid "+17" -msgstr "160" - -#: src/nikonmn.cpp:1102 src/nikonmn.cpp:1170 -#, fuzzy -msgid "-17" -msgstr "160" - -#: src/nikonmn.cpp:1103 src/nikonmn.cpp:1171 -msgid "+9" -msgstr "" - -#: src/nikonmn.cpp:1104 src/nikonmn.cpp:1172 -#, fuzzy -msgid "+18" -msgstr "160" - -#: src/nikonmn.cpp:1105 src/nikonmn.cpp:1173 -#, fuzzy -msgid "-18" -msgstr "160" - -#: src/nikonmn.cpp:1106 src/nikonmn.cpp:1174 -msgid "-9" -msgstr "" - -#: src/nikonmn.cpp:1107 src/nikonmn.cpp:1175 -#, fuzzy -msgid "+19" -msgstr "160" - -#: src/nikonmn.cpp:1108 src/nikonmn.cpp:1176 -#, fuzzy -msgid "-19" -msgstr "160" - -#: src/nikonmn.cpp:1109 src/nikonmn.cpp:1177 -#, fuzzy -msgid "+5" -msgstr "125" - -#: src/nikonmn.cpp:1110 src/nikonmn.cpp:1178 -#, fuzzy -msgid "+10" -msgstr "10s" - -#: src/nikonmn.cpp:1111 src/nikonmn.cpp:1179 -#, fuzzy -msgid "+20" -msgstr "200" - -#: src/nikonmn.cpp:1112 src/nikonmn.cpp:1180 -#, fuzzy -msgid "-20" -msgstr "200" - -#: src/nikonmn.cpp:1113 src/nikonmn.cpp:1181 -#, fuzzy -msgid "-10" -msgstr "10s" - -#: src/nikonmn.cpp:1114 src/nikonmn.cpp:1182 -#, fuzzy -msgid "-5" -msgstr "125" - -#: src/nikonmn.cpp:1115 src/nikonmn.cpp:1183 -#, fuzzy -msgid "+11" -msgstr "160" - -#: src/nikonmn.cpp:1116 src/nikonmn.cpp:1184 -#, fuzzy -msgid "-11" -msgstr "160" - -#: src/nikonmn.cpp:1117 src/nikonmn.cpp:1185 -msgid "+3" -msgstr "" - -#: src/nikonmn.cpp:1118 src/nikonmn.cpp:1186 -#, fuzzy -msgid "+6" -msgstr "160" - -#: src/nikonmn.cpp:1119 src/nikonmn.cpp:1187 -#, fuzzy -msgid "+12" -msgstr "125" - -#: src/nikonmn.cpp:1120 src/nikonmn.cpp:1188 -#, fuzzy -msgid "-12" -msgstr "125" - -#: src/nikonmn.cpp:1121 src/nikonmn.cpp:1189 -#, fuzzy -msgid "-6" -msgstr "160" - -#: src/nikonmn.cpp:1122 src/nikonmn.cpp:1190 -msgid "-3" -msgstr "" - -#: src/nikonmn.cpp:1123 src/nikonmn.cpp:1151 -#, fuzzy -msgid "+13" -msgstr "160" - -#: src/nikonmn.cpp:1124 src/nikonmn.cpp:1152 -#, fuzzy -msgid "-13" -msgstr "160" - -#: src/nikonmn.cpp:1125 src/nikonmn.cpp:1153 -msgid "+7" -msgstr "" - -#: src/nikonmn.cpp:1126 src/nikonmn.cpp:1154 -#, fuzzy -msgid "+14" -msgstr "160" - -#: src/nikonmn.cpp:1127 src/nikonmn.cpp:1155 -#, fuzzy -msgid "-14" -msgstr "160" - -#: src/nikonmn.cpp:1128 src/nikonmn.cpp:1156 -msgid "-7" -msgstr "" - -#: src/nikonmn.cpp:1129 src/nikonmn.cpp:1157 -#, fuzzy -msgid "+15" -msgstr "125" - -#: src/nikonmn.cpp:1130 src/nikonmn.cpp:1158 -#, fuzzy -msgid "-15" -msgstr "125" - -#: src/nikonmn.cpp:1138 src/nikonmn.cpp:1198 -#, fuzzy -msgid "AF Fine Tune Adj" -msgstr "Benutzter Autofokus-Punkt" - -#: src/nikonmn.cpp:1138 src/nikonmn.cpp:1198 -#, fuzzy -msgid "AF fine tune adj" -msgstr "Benutzter Autofokus-Punkt" - -#: src/nikonmn.cpp:1140 -#, fuzzy -msgid "Unknown Nikon Shot Info D300 (a) Tag" -msgstr "Unbekanntes Feld in der Canon-Bildinfo" - -#: src/nikonmn.cpp:1200 -#, fuzzy -msgid "Unknown Nikon Shot Info D300 (b) Tag" -msgstr "Unbekanntes Feld in der Canon-Bildinfo" - -#: src/nikonmn.cpp:1213 -#, fuzzy -msgid "On (3)" -msgstr "An" - -#: src/nikonmn.cpp:1226 -#, fuzzy -msgid "Shutter Count 1" -msgstr "Verschlusszähler" - -#: src/nikonmn.cpp:1226 -#, fuzzy -msgid "Shutter count 1" -msgstr "Verschlusszähler" - -#: src/nikonmn.cpp:1229 -#, fuzzy -msgid "Vibration Reduction 1" -msgstr "Verzerrungskorrektur" - -#: src/nikonmn.cpp:1229 -#, fuzzy -msgid "Vibration reduction 1" -msgstr "Verzerrungskorrektur" - -#: src/nikonmn.cpp:1230 -#, fuzzy -msgid "Shutter Count 2" -msgstr "Verschlusszähler" - -#: src/nikonmn.cpp:1230 -#, fuzzy -msgid "Shutter count 2" -msgstr "Verschlusszähler" - -#: src/nikonmn.cpp:1231 -#, fuzzy -msgid "Vibration Reduction 2" -msgstr "Verzerrungskorrektur" - -#: src/nikonmn.cpp:1231 -#, fuzzy -msgid "Vibration reduction 2" -msgstr "Verzerrungskorrektur" - -#: src/nikonmn.cpp:1235 -#, fuzzy -msgid "Unknown Nikon Shot Info Tag" -msgstr "Unbekanntes Feld in der Canon-Bildinfo" - -#: src/nikonmn.cpp:1246 -#, fuzzy -msgid "WB RBGG Levels" -msgstr "WB_RGGBLevelsShade" - -#: src/nikonmn.cpp:1246 -#, fuzzy -msgid "WB RBGG levels" -msgstr "Schwarzlevel" - -#: src/nikonmn.cpp:1248 -#, fuzzy -msgid "Unknown Nikon Color Balance 1 Tag" -msgstr "Farbabgleich 1" - -#: src/nikonmn.cpp:1259 src/nikonmn.cpp:1272 src/nikonmn.cpp:1285 -#, fuzzy -msgid "WB RGGB Levels" -msgstr "WB_RGGBLevelsShade" - -#: src/nikonmn.cpp:1259 src/nikonmn.cpp:1272 src/nikonmn.cpp:1285 -#, fuzzy -msgid "WB RGGB levels" -msgstr "Schwarzlevel" - -#: src/nikonmn.cpp:1261 -#, fuzzy -msgid "Unknown Nikon Color Balance 2 Tag" -msgstr "Farbabgleich 2" - -#: src/nikonmn.cpp:1274 -#, fuzzy -msgid "Unknown Nikon Color Balance 2a Tag" -msgstr "Farbabgleich 2" - -#: src/nikonmn.cpp:1287 -#, fuzzy -msgid "Unknown Nikon Color Balance 2b Tag" -msgstr "Farbabgleich 2" - -#: src/nikonmn.cpp:1298 -#, fuzzy -msgid "WB RGBG Levels" -msgstr "WB_RGGBLevelsShade" - -#: src/nikonmn.cpp:1298 -#, fuzzy -msgid "WB RGBG levels" -msgstr "Schwarzlevel" - -#: src/nikonmn.cpp:1300 -#, fuzzy -msgid "Unknown Nikon Color Balance 3 Tag" -msgstr "Unbekanntes Canon-Panoramafeld" - -#: src/nikonmn.cpp:1311 -#, fuzzy -msgid "WB GRBG Levels" -msgstr "WB_RGGBLevelsShade" - -#: src/nikonmn.cpp:1311 -#, fuzzy -msgid "WB GRBG levels" -msgstr "Schwarzlevel" - -#: src/nikonmn.cpp:1313 -#, fuzzy -msgid "Unknown Nikon Color Balance 4 Tag" -msgstr "Unbekanntes Canon-Panoramafeld" - -#: src/nikonmn.cpp:1324 src/nikonmn.cpp:1348 src/nikonmn.cpp:1373 -#, fuzzy -msgid "Lens ID Number" -msgstr "Linsen-Seriennummer" - -#: src/nikonmn.cpp:1324 src/nikonmn.cpp:1348 src/nikonmn.cpp:1373 -#, fuzzy -msgid "Lens ID number" -msgstr "Linsen-Seriennummer" - -#: src/nikonmn.cpp:1325 src/nikonmn.cpp:1349 src/nikonmn.cpp:1374 -#, fuzzy -msgid "Lens F-Stops" -msgstr "Blendeneinstellung der Linse" - -#: src/nikonmn.cpp:1325 src/nikonmn.cpp:1349 src/nikonmn.cpp:1374 -#, fuzzy -msgid "Lens F-stops" -msgstr "Blendeneinstellung der Linse" - -#: src/nikonmn.cpp:1326 src/nikonmn.cpp:1350 src/nikonmn.cpp:1375 -#: src/olympusmn.cpp:751 -msgid "Min Focal Length" -msgstr "Minimale Fokuslänge" - -#: src/nikonmn.cpp:1326 src/nikonmn.cpp:1350 src/nikonmn.cpp:1375 -#: src/olympusmn.cpp:751 -msgid "Min focal length" -msgstr "Minimale Fokuslänge" - -#: src/nikonmn.cpp:1327 src/nikonmn.cpp:1351 src/nikonmn.cpp:1376 -#: src/olympusmn.cpp:752 -msgid "Max Focal Length" -msgstr "Maximale Fokuslänge" - -#: src/nikonmn.cpp:1327 src/nikonmn.cpp:1351 src/nikonmn.cpp:1376 -#: src/olympusmn.cpp:752 -msgid "Max focal length" -msgstr "Maximale Fokuslänge" - -#: src/nikonmn.cpp:1328 src/nikonmn.cpp:1352 src/nikonmn.cpp:1377 -#: src/olympusmn.cpp:749 -msgid "Max Aperture At Min Focal" -msgstr "Maximale Blende bei minimalem Fokus" - -#: src/nikonmn.cpp:1328 src/nikonmn.cpp:1352 src/olympusmn.cpp:749 -msgid "Max aperture at min focal" -msgstr "Maximale Blende bei minimalem Fokus" - -#: src/nikonmn.cpp:1329 src/nikonmn.cpp:1353 src/nikonmn.cpp:1378 -#: src/olympusmn.cpp:750 -msgid "Max Aperture At Max Focal" -msgstr "Maximale Blende bei maximalem Fokus" - -#: src/nikonmn.cpp:1329 src/nikonmn.cpp:1353 src/olympusmn.cpp:750 -msgid "Max aperture at max focal" -msgstr "Maximale Blende bei maximalem Fokus" - -#: src/nikonmn.cpp:1330 src/nikonmn.cpp:1354 src/nikonmn.cpp:1379 -#, fuzzy -msgid "MCU Version" -msgstr "ARM-Version" - -#: src/nikonmn.cpp:1330 src/nikonmn.cpp:1354 src/nikonmn.cpp:1379 -#, fuzzy -msgid "MCU version" -msgstr "ARM-Version" - -#: src/nikonmn.cpp:1332 -#, fuzzy -msgid "Unknown Nikon Lens Data 1 Tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Nikon1" - -#: src/nikonmn.cpp:1343 src/nikonmn.cpp:1368 -#, fuzzy -msgid "Exit Pupil Position" -msgstr "Autofokus-Position" - -#: src/nikonmn.cpp:1343 src/nikonmn.cpp:1368 -#, fuzzy -msgid "Exit pupil position" -msgstr "Fokusposition" - -#: src/nikonmn.cpp:1344 src/nikonmn.cpp:1369 -#, fuzzy -msgid "AF Aperture" -msgstr "Blende" - -#: src/nikonmn.cpp:1344 src/nikonmn.cpp:1369 -#, fuzzy -msgid "AF aperture" -msgstr "Blende" - -#: src/nikonmn.cpp:1355 src/nikonmn.cpp:1380 -#, fuzzy -msgid "Effective Max Aperture" -msgstr "Maximale Blende" - -#: src/nikonmn.cpp:1355 src/nikonmn.cpp:1380 -#, fuzzy -msgid "Effective max aperture" -msgstr "Maximale Blende" - -#: src/nikonmn.cpp:1357 -#, fuzzy -msgid "Unknown Nikon Lens Data 2 Tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Nikon1" - -#: src/nikonmn.cpp:1377 -#, fuzzy -msgid "Max aperture at min focal length" -msgstr "Maximale Blende bei minimalem Fokus" - -#: src/nikonmn.cpp:1378 -#, fuzzy -msgid "Max aperture at max focal length" -msgstr "Maximale Blende bei maximalem Fokus" - -#: src/nikonmn.cpp:1382 -#, fuzzy -msgid "Unknown Nikon Lens Data 3 Tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Nikon1" - -#: src/nikonmn.cpp:1562 -msgid "Closest subject" -msgstr "Nächstes Motiv" - -#: src/nikonmn.cpp:1563 -msgid "Group dynamic-AF" -msgstr "Gruppen dynamischer Autofokus" - -#: src/nikonmn.cpp:1586 src/tags.cpp:240 -msgid "none" -msgstr "Keine" - -#: src/nikonmn.cpp:1596 -msgid "used" -msgstr "benutzt" - -#: src/nikonmn.cpp:1622 -#, fuzzy -msgid "All 11 Points" -msgstr "Autofokus-Punkte" - -#: src/nikonmn.cpp:1637 src/nikonmn.cpp:1638 src/pentaxmn.cpp:533 -#: src/pentaxmn.cpp:537 -msgid "Single-frame" -msgstr "Einzelbild" - -#: src/olympusmn.cpp:71 -msgid "Standard Quality (SQ)" -msgstr "Standard Qualität (SQ)" - -#: src/olympusmn.cpp:72 -msgid "High Quality (HQ)" -msgstr "Hohe Qualität (HQ)" - -#: src/olympusmn.cpp:73 -msgid "Super High Quality (SHQ)" -msgstr "Super Hohe Qualität (SHQ)" - -#: src/olympusmn.cpp:88 -msgid "On (preset)" -msgstr "Ein (Standard)" - -#: src/olympusmn.cpp:95 src/pentaxmn.cpp:474 -msgid "Sport" -msgstr "Sport" - -#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 -msgid "Landscape+Portrait" -msgstr "Landschaft und Portrait" - -#: src/olympusmn.cpp:100 -msgid "Self Portrait" -msgstr "Selbstportrait" - -#: src/olympusmn.cpp:102 -msgid "2 in 1" -msgstr "2 in 1" - -#: src/olympusmn.cpp:105 -msgid "Night+Portrait" -msgstr "Nacht und Portrait" - -#: src/olympusmn.cpp:111 src/panasonicmn.cpp:120 src/pentaxmn.cpp:486 -msgid "Food" -msgstr "Essen" - -#: src/olympusmn.cpp:112 -msgid "Documents" -msgstr "Dokumente" - -#: src/olympusmn.cpp:114 -msgid "Shoot & Select" -msgstr "Aufnehmen & Auswählen" - -#: src/olympusmn.cpp:115 -msgid "Beach & Snow" -msgstr "Strand & Schnee" - -#: src/olympusmn.cpp:116 -msgid "Self Portrait+Timer" -msgstr "Selbstportrait und -Auslöser" - -#: src/olympusmn.cpp:117 -msgid "Candle" -msgstr "Kerze" - -#: src/olympusmn.cpp:118 -msgid "Available Light" -msgstr "Verfügbares Licht" - -#: src/olympusmn.cpp:119 -msgid "Behind Glass" -msgstr "Hinter Glas" - -#: src/olympusmn.cpp:120 -msgid "My Mode" -msgstr "Eigener Modus" - -#: src/olympusmn.cpp:121 src/panasonicmn.cpp:131 src/pentaxmn.cpp:483 -#: src/sonymn.cpp:127 -msgid "Pet" -msgstr "Haustier" - -#: src/olympusmn.cpp:122 -msgid "Underwater Wide1" -msgstr "Unterwasser-Weite1" - -#: src/olympusmn.cpp:123 -msgid "Underwater Macro" -msgstr "Unterwasser-Makro" - -#: src/olympusmn.cpp:124 -msgid "Shoot & Select1" -msgstr "Aufnehmen & Auswählen1" - -#: src/olympusmn.cpp:125 -msgid "Shoot & Select2" -msgstr "Aufnehmen & Auswählen2" - -#: src/olympusmn.cpp:127 -msgid "Digital Image Stabilization" -msgstr "Digitale Bildstabilisierung" - -#: src/olympusmn.cpp:128 -msgid "Auction" -msgstr "Auktion" - -#: src/olympusmn.cpp:131 -msgid "Underwater Wide2" -msgstr "Unterwasser Weite2" - -#: src/olympusmn.cpp:133 -msgid "Children" -msgstr "Kinder" - -#: src/olympusmn.cpp:135 -msgid "Nature Macro" -msgstr "Natur-Makro" - -#: src/olympusmn.cpp:136 -msgid "Underwater Snapshot" -msgstr "Unterwasser-Aufnahme" - -#: src/olympusmn.cpp:137 -msgid "Shooting Guide" -msgstr "Aufnahmehilfe" - -#: src/olympusmn.cpp:145 -msgid "Internal + External" -msgstr "Intern + Extern" - -#: src/olympusmn.cpp:176 -msgid "Interlaced" -msgstr "Interlaced" - -#: src/olympusmn.cpp:177 -msgid "Progressive" -msgstr "Progressiv" - -#: src/olympusmn.cpp:188 -msgid "Thumbnail Image" -msgstr "Vorschaubild" - -#: src/olympusmn.cpp:189 -msgid "Thumbnail image" -msgstr "Vorschaubild" - -#: src/olympusmn.cpp:192 src/olympusmn.cpp:744 src/olympusmn.cpp:1027 -#, fuzzy -msgid "Body Firmware Version" -msgstr "Firmware Version" - -#: src/olympusmn.cpp:193 src/olympusmn.cpp:744 src/olympusmn.cpp:1027 -#, fuzzy -msgid "Body firmware version" -msgstr "Firmware Version" - -#: src/olympusmn.cpp:195 -msgid "Special Mode" -msgstr "Spezialmodus" - -#: src/olympusmn.cpp:196 -msgid "Picture taking mode" -msgstr "Bildaufnahmemodus" - -#: src/olympusmn.cpp:204 -msgid "Black & White Mode" -msgstr "Schwarz/Weiß-Modus" - -#: src/olympusmn.cpp:205 -msgid "Black and white mode" -msgstr "Schwarz/Weiß-Modus" - -#: src/olympusmn.cpp:208 -msgid "Digital zoom ratio" -msgstr "Digitale Zoomrate" - -#: src/olympusmn.cpp:210 src/olympusmn.cpp:743 -msgid "Focal Plane Diagonal" -msgstr "Brennebene" - -#: src/olympusmn.cpp:211 src/olympusmn.cpp:743 -msgid "Focal plane diagonal" -msgstr "Brennebene" - -#: src/olympusmn.cpp:213 -msgid "Lens Distortion Parameters" -msgstr "Linsenverzerrungsparameter" - -#: src/olympusmn.cpp:214 -msgid "Lens distortion parameters" -msgstr "Linsenverzerrungsparameter" - -#: src/olympusmn.cpp:216 src/olympusmn.cpp:740 -msgid "Camera Type" -msgstr "Kameratyp" - -#: src/olympusmn.cpp:217 src/olympusmn.cpp:740 -msgid "Camera type" -msgstr "Kameratyp" - -#: src/olympusmn.cpp:220 -msgid "ASCII format data such as [PictureInfo]" -msgstr "ASCII-Formatdaten wie z.B. bei [BildInfo]" - -#: src/olympusmn.cpp:222 -msgid "Camera ID" -msgstr "Kamera ID" - -#: src/olympusmn.cpp:223 -msgid "Camera ID data" -msgstr "Kamera ID-Daten" - -#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:519 -#: src/sigmamn.cpp:119 src/sigmamn.cpp:120 src/tags.cpp:538 -msgid "Software" -msgstr "Software" - -#: src/olympusmn.cpp:234 src/panasonicmn.cpp:348 src/sonymn.cpp:314 -#, fuzzy -msgid "Preview Image" -msgstr "Bildvorschau gültig" - -#: src/olympusmn.cpp:235 src/panasonicmn.cpp:348 -#, fuzzy -msgid "Preview image" -msgstr "Bildvorschau gültig" - -#: src/olympusmn.cpp:237 -msgid "Pre Capture Frames" -msgstr "Vorerfassungsbilder" - -#: src/olympusmn.cpp:238 -msgid "Pre-capture frames" -msgstr "Vorerfassungsbilder" - -#: src/olympusmn.cpp:240 -#, fuzzy -msgid "White Board" -msgstr "Weißabgleich" - -#: src/olympusmn.cpp:241 -#, fuzzy -msgid "White board" -msgstr "Weißabgleich" - -#: src/olympusmn.cpp:243 -msgid "One Touch WB" -msgstr "Ein-Tasten-Weißabgleich" - -#: src/olympusmn.cpp:244 -msgid "One touch white balance" -msgstr "Ein-Tasten-Weißabgleich" - -#: src/olympusmn.cpp:246 src/olympusmn.cpp:678 -msgid "White Balance Bracket" -msgstr "Weißabgleichsreihe" - -#: src/olympusmn.cpp:247 src/olympusmn.cpp:678 -msgid "White balance bracket" -msgstr "Weißabgleichsreihe" - -#: src/olympusmn.cpp:255 src/sigmamn.cpp:116 src/sigmamn.cpp:117 -msgid "Firmware" -msgstr "Firmware" - -#: src/olympusmn.cpp:256 -#, fuzzy -msgid "Firmwarer" -msgstr "Firmware" - -#: src/olympusmn.cpp:261 -msgid "Data Dump 1" -msgstr "Datendump 1" - -#: src/olympusmn.cpp:262 -msgid "Various camera settings 1" -msgstr "Verschiedene Kameraeinstellungen 1" - -#: src/olympusmn.cpp:264 -msgid "Data Dump 2" -msgstr "Datendump 2" - -#: src/olympusmn.cpp:265 -msgid "Various camera settings 2" -msgstr "Verschiedene Kameraeinstellungen 2" - -#: src/olympusmn.cpp:268 -msgid "Shutter speed value" -msgstr "Verschlusswert" - -#: src/olympusmn.cpp:271 -msgid "ISO speed value" -msgstr "ISO-Geschwindigkeitswert" - -#: src/olympusmn.cpp:274 -msgid "Aperture value" -msgstr "Blendenwert" - -#: src/olympusmn.cpp:277 -msgid "Brightness value" -msgstr "Helligkeitswert" - -#: src/olympusmn.cpp:285 -msgid "Bracket" -msgstr "Erfassung" - -#: src/olympusmn.cpp:286 -msgid "Exposure compensation value" -msgstr "Blitzkompensationswert" - -#: src/olympusmn.cpp:288 src/olympusmn.cpp:1015 -msgid "Sensor Temperature" -msgstr "Sensortemperatur" - -#: src/olympusmn.cpp:289 src/olympusmn.cpp:1015 -msgid "Sensor temperature" -msgstr "Sensortemperatur" - -#: src/olympusmn.cpp:291 -msgid "Lens Temperature" -msgstr "Linsentemperatur" - -#: src/olympusmn.cpp:292 -msgid "Lens temperature" -msgstr "Linsentemperatur" - -#: src/olympusmn.cpp:294 -#, fuzzy -msgid "Light Condition" -msgstr "Hohe Funktionen" - -#: src/olympusmn.cpp:295 -#, fuzzy -msgid "Light condition" -msgstr "Hohe Funktionen" - -#: src/olympusmn.cpp:297 -#, fuzzy -msgid "Focus Range" -msgstr "Fokusbereich" - -#: src/olympusmn.cpp:298 -#, fuzzy -msgid "Focus range" -msgstr "Fokusbereich" - -#: src/olympusmn.cpp:306 -msgid "Zoom" -msgstr "Zoom" - -#: src/olympusmn.cpp:307 src/olympusmn.cpp:1003 -msgid "Zoom step count" -msgstr "Zoom-Schrittweite" - -#: src/olympusmn.cpp:309 -msgid "Macro Focus" -msgstr "Makro-Fokus" - -#: src/olympusmn.cpp:310 -msgid "Macro focus step count" -msgstr "Makro-Fokus-Schrittweite" - -#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 -msgid "Sharpness Factor" -msgstr "Schärfefaktor" - -#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 -msgid "Sharpness factor" -msgstr "Schärfefaktor" - -#: src/olympusmn.cpp:315 -msgid "Flash Charge Level" -msgstr "Batteriestatus des Blitzes" - -#: src/olympusmn.cpp:316 -msgid "Flash charge level" -msgstr "Batteriestatus des Blitzes" - -#: src/olympusmn.cpp:318 src/olympusmn.cpp:962 -msgid "Color Matrix" -msgstr "Farbmatrix" - -#: src/olympusmn.cpp:319 src/olympusmn.cpp:962 -msgid "Color matrix" -msgstr "Farbmatrix" - -#: src/olympusmn.cpp:321 -msgid "BlackLevel" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:322 src/olympusmn.cpp:967 -msgid "Black level" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:331 -msgid "White balance mode" -msgstr "Weißabgleichsmodus" - -#: src/olympusmn.cpp:336 src/panasonicmn.cpp:342 -msgid "Red Balance" -msgstr "Rotabgleich" - -#: src/olympusmn.cpp:337 src/pentaxmn.cpp:938 -msgid "Red balance" -msgstr "Rotabgleich" - -#: src/olympusmn.cpp:339 src/panasonicmn.cpp:343 -msgid "Blue Balance" -msgstr "Blauabgleich" - -#: src/olympusmn.cpp:340 src/panasonicmn.cpp:343 src/pentaxmn.cpp:935 -msgid "Blue balance" -msgstr "Blauabgleich" - -#: src/olympusmn.cpp:342 -#, fuzzy -msgid "Color Matrix Number" -msgstr "Farbmatrix 1" - -#: src/olympusmn.cpp:343 -#, fuzzy -msgid "Color matrix mumber" -msgstr "Farbmatrix 2" - -#: src/olympusmn.cpp:345 -msgid "Serial Number 2" -msgstr "Seriennummer 2" - -#: src/olympusmn.cpp:346 -msgid "Serial number 2" -msgstr "Seriennummer 2" - -#: src/olympusmn.cpp:373 src/olympusmn.cpp:671 src/pentaxmn.cpp:1028 -#: src/pentaxmn.cpp:1029 -msgid "Flash exposure compensation" -msgstr "Blitzbelichtungskompensation" - -#: src/olympusmn.cpp:381 src/olympusmn.cpp:1011 -#, fuzzy -msgid "External Flash Bounce" -msgstr "Externer Blitzmodus" - -#: src/olympusmn.cpp:382 src/olympusmn.cpp:1011 -#, fuzzy -msgid "External flash bounce" -msgstr "Externer Blitzmodus" - -#: src/olympusmn.cpp:384 src/olympusmn.cpp:1012 -msgid "External Flash Zoom" -msgstr "Externer Blitzzoom" - -#: src/olympusmn.cpp:385 src/olympusmn.cpp:1012 -msgid "External flash zoom" -msgstr "Externer Blitzzoom" - -#: src/olympusmn.cpp:387 -msgid "External Flash Mode" -msgstr "Externer Blitzmodus" - -#: src/olympusmn.cpp:388 -msgid "External flash mode" -msgstr "Externer Blitzmodus" - -#: src/olympusmn.cpp:396 -msgid "Color Control" -msgstr "Farbkontrolle" - -#: src/olympusmn.cpp:397 -msgid "Color control" -msgstr "Farbkontrolle" - -#: src/olympusmn.cpp:399 -msgid "ValidBits" -msgstr "Gültige Bits" - -#: src/olympusmn.cpp:400 src/olympusmn.cpp:969 -msgid "Valid bits" -msgstr "Gültige Bits" - -#: src/olympusmn.cpp:402 -msgid "CoringFilter" -msgstr "Kernfiilter" - -#: src/olympusmn.cpp:403 src/olympusmn.cpp:965 src/olympusmn.cpp:1067 -msgid "Coring filter" -msgstr "Kernfilter" - -#: src/olympusmn.cpp:423 -msgid "Compression Ratio" -msgstr "Kompressionsrate" - -#: src/olympusmn.cpp:424 -msgid "Compression ratio" -msgstr "Kompressionsrate" - -#: src/olympusmn.cpp:427 -msgid "Preview image embedded" -msgstr "Eingebettetes Vorschaubild" - -#: src/olympusmn.cpp:430 -msgid "Offset of the preview image" -msgstr "Offset des Vorschaubildes" - -#: src/olympusmn.cpp:433 -msgid "Size of the preview image" -msgstr "Größe des Vorschaubildes" - -#: src/olympusmn.cpp:435 -msgid "CCD Scan Mode" -msgstr "CCD-Scanmodus" - -#: src/olympusmn.cpp:436 -msgid "CCD scan mode" -msgstr "CCD-Scanmodus" - -#: src/olympusmn.cpp:441 -msgid "Infinity Lens Step" -msgstr "Unendlicher Linsenschritt" - -#: src/olympusmn.cpp:442 -msgid "Infinity lens step" -msgstr "Unendlicher Linsenschritt" - -#: src/olympusmn.cpp:444 -msgid "Near Lens Step" -msgstr "Naher Linsenschritt" - -#: src/olympusmn.cpp:445 -msgid "Near lens step" -msgstr "Naher Linsenschritt" - -#: src/olympusmn.cpp:447 -msgid "Equipment Info" -msgstr "Ausrüstungsinfo" - -#: src/olympusmn.cpp:448 -msgid "Camera equipment sub-IFD" -msgstr "Kamerasausrüstung Unter-IFD" - -#: src/olympusmn.cpp:451 -msgid "Camera Settings sub-IFD" -msgstr "Kameraeinstellungen (Unter-IFD)" - -#: src/olympusmn.cpp:453 -msgid "Raw Development" -msgstr "Rohentwicklung" - -#: src/olympusmn.cpp:454 -msgid "Raw development sub-IFD" -msgstr "Rohentwicklung Unter-IFD" - -#: src/olympusmn.cpp:456 -msgid "Raw Development 2" -msgstr "Rohentwicklung 2" - -#: src/olympusmn.cpp:457 -msgid "Raw development 2 sub-IFD" -msgstr "Rohentwicklung 2 Unter-IFD" - -#: src/olympusmn.cpp:460 -msgid "Image processing sub-IFD" -msgstr "Bildverarbeitung Unter-IFD" - -#: src/olympusmn.cpp:462 -msgid "Focus Info" -msgstr "Fokus-Info" - -#: src/olympusmn.cpp:463 -msgid "Focus sub-IFD" -msgstr "Fokus Unter-IFD" - -#: src/olympusmn.cpp:465 -msgid "Raw Info" -msgstr "Rohinfo" - -#: src/olympusmn.cpp:466 -#, fuzzy -msgid "Raw sub-IFD" -msgstr "Fokus Unter-IFD" - -#: src/olympusmn.cpp:470 -msgid "Unknown OlympusMakerNote tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Olympus" - -#: src/olympusmn.cpp:486 -msgid "Program-shift" -msgstr "Programmwechsel" - -#: src/olympusmn.cpp:491 -msgid "Center-weighted average" -msgstr "Mittelpunkt gewichteter Durchschnitt" - -#: src/olympusmn.cpp:493 -msgid "ESP" -msgstr "" - -#: src/olympusmn.cpp:494 -msgid "Pattern+AF" -msgstr "Muster und Autofokus" - -#: src/olympusmn.cpp:495 -msgid "Spot+Highlight control" -msgstr "" - -#: src/olympusmn.cpp:496 -#, fuzzy -msgid "Spot+Shadow control" -msgstr "Farbkontrolle" - -#: src/olympusmn.cpp:508 src/olympusmn.cpp:1369 -msgid "Single AF" -msgstr "Einzel-Autofokus" - -#: src/olympusmn.cpp:509 src/olympusmn.cpp:1370 -msgid "Sequential shooting AF" -msgstr "Serienaufnahmen-Autofokus" - -#: src/olympusmn.cpp:511 src/olympusmn.cpp:1372 src/sonymn.cpp:187 -msgid "Multi AF" -msgstr "Mehrfacher Autofokus" - -#: src/olympusmn.cpp:517 -msgid "AF Not Used" -msgstr "Autofokus wurde nicht benutzt" - -#: src/olympusmn.cpp:518 -msgid "AF Used" -msgstr "Autofokus wurde benutzt" - -#: src/olympusmn.cpp:523 -msgid "Not Ready" -msgstr "Nicht bereit" - -#: src/olympusmn.cpp:524 -msgid "Ready" -msgstr "Fertig" - -#: src/olympusmn.cpp:531 -msgid "Fill-in" -msgstr "Ausfüllen" - -#: src/olympusmn.cpp:533 -msgid "Slow-sync" -msgstr "Langsame Synchronisation" - -#: src/olympusmn.cpp:534 -#, fuzzy -msgid "Forced On" -msgstr "Leuchtstoffröhre" - -#: src/olympusmn.cpp:535 -msgid "2nd Curtain" -msgstr "" - -#: src/olympusmn.cpp:541 -msgid "Channel 1, Low" -msgstr "" - -#: src/olympusmn.cpp:542 -msgid "Channel 2, Low" -msgstr "" - -#: src/olympusmn.cpp:543 -msgid "Channel 3, Low" -msgstr "" - -#: src/olympusmn.cpp:544 -msgid "Channel 4, Low" -msgstr "" - -#: src/olympusmn.cpp:545 -msgid "Channel 1, Mid" -msgstr "" - -#: src/olympusmn.cpp:546 -msgid "Channel 2, Mid" -msgstr "" - -#: src/olympusmn.cpp:547 -msgid "Channel 3, Mid" -msgstr "" - -#: src/olympusmn.cpp:548 -msgid "Channel 4, Mid" -msgstr "" - -#: src/olympusmn.cpp:549 -msgid "Channel 1, High" -msgstr "" - -#: src/olympusmn.cpp:550 -msgid "Channel 2, High" -msgstr "" - -#: src/olympusmn.cpp:551 -msgid "Channel 3, High" -msgstr "" - -#: src/olympusmn.cpp:552 -msgid "Channel 4, High" -msgstr "" - -#: src/olympusmn.cpp:566 -#, fuzzy -msgid "7500K (Fine Weather with Shade)" -msgstr "5300K (Gutes Wetter)" - -#: src/olympusmn.cpp:567 -msgid "6000K (Cloudy)" -msgstr "6000K (Wolkig)" - -#: src/olympusmn.cpp:568 -msgid "5300K (Fine Weather)" -msgstr "5300K (Gutes Wetter)" - -#: src/olympusmn.cpp:569 -msgid "3000K (Tungsten light)" -msgstr "3000K (Wolframlicht)" - -#: src/olympusmn.cpp:570 src/olympusmn.cpp:574 -msgid "3600K (Tungsten light-like)" -msgstr "3600K (Ähnlich Wolframlicht)" - -#: src/olympusmn.cpp:571 -msgid "6600K (Daylight fluorescent)" -msgstr "6600K (Tageslicht-Fluroszierend)" - -#: src/olympusmn.cpp:572 -msgid "4500K (Neutral white fluorescent)" -msgstr "4500K (Neutral-Weiß-Fluroszierend)" - -#: src/olympusmn.cpp:573 -msgid "4000K (Cool white fluorescent)" -msgstr "4000K (Kühl-Weiß-Fluroszierend)" - -#: src/olympusmn.cpp:575 -msgid "Custom WB 1" -msgstr "Benutzerdefiniert WB 1" - -#: src/olympusmn.cpp:576 -msgid "Custom WB 2" -msgstr "Benutzerdefiniert WB 2" - -#: src/olympusmn.cpp:577 -msgid "Custom WB 3" -msgstr "Benutzerdefiniert WB 3" - -#: src/olympusmn.cpp:578 -msgid "Custom WB 4" -msgstr "Benutzerdefiniert WB 4" - -#: src/olympusmn.cpp:579 -msgid "Custom WB 5400K" -msgstr "Benutzerdefiniert WB 5400K" - -#: src/olympusmn.cpp:580 -msgid "Custom WB 2900K" -msgstr "Benutzerdefiniert WB 2900K" - -#: src/olympusmn.cpp:581 -msgid "Custom WB 8000K" -msgstr "Benutzerdefiniert WB 8000K" - -#: src/olympusmn.cpp:587 -msgid "CM1 (Red Enhance)" -msgstr "CM1 (Rotverbesserung)" - -#: src/olympusmn.cpp:588 -msgid "CM2 (Green Enhance)" -msgstr "CM2 (Grünverbesserung)" - -#: src/olympusmn.cpp:589 -msgid "CM3 (Blue Enhance)" -msgstr "CM3 (Blauverbesserung)" - -#: src/olympusmn.cpp:590 -msgid "CM4 (Skin Tones)" -msgstr "CM4 (Hauttöne)" - -#: src/olympusmn.cpp:597 src/olympusmn.cpp:776 src/olympusmn.cpp:841 -msgid "Pro Photo RGB" -msgstr "" - -#: src/olympusmn.cpp:603 src/olympusmn.cpp:697 -msgid "Noise Filter" -msgstr "Rauschfilter" - -#: src/olympusmn.cpp:604 -msgid "Noise Filter (ISO Boost)" -msgstr "Rauschfilter (ISO-Boost)" - -#: src/olympusmn.cpp:612 src/olympusmn.cpp:854 -msgid "Muted" -msgstr "Stumm" - -#: src/olympusmn.cpp:614 src/olympusmn.cpp:855 -msgid "Monotone" -msgstr "Monoton" - -#: src/olympusmn.cpp:640 -msgid "SQ" -msgstr "" - -#: src/olympusmn.cpp:641 -msgid "HQ" -msgstr "" - -#: src/olympusmn.cpp:642 -msgid "SHQ" -msgstr "" - -#: src/olympusmn.cpp:649 src/panasonicmn.cpp:86 -msgid "On, Mode 1" -msgstr "An, Modus 1" - -#: src/olympusmn.cpp:650 src/panasonicmn.cpp:88 -msgid "On, Mode 2" -msgstr "An, Modus 2" - -#: src/olympusmn.cpp:651 -#, fuzzy -msgid "On, Mode 3" -msgstr "An, Modus 1" - -#: src/olympusmn.cpp:655 -msgid "Camera Settings Version" -msgstr "Kameraeinstellungen-Version" - -#: src/olympusmn.cpp:655 -msgid "Camera settings version" -msgstr "Kameraeinstellungen-Version" - -#: src/olympusmn.cpp:656 -msgid "PreviewImage Valid" -msgstr "Bildvorschau gültig" - -#: src/olympusmn.cpp:656 -msgid "Preview image valid" -msgstr "Bildvorschau gültig" - -#: src/olympusmn.cpp:657 -msgid "PreviewImage Start" -msgstr "Start der Bildvorschau" - -#: src/olympusmn.cpp:657 -msgid "Preview image start" -msgstr "Start der Bildvorschau" - -#: src/olympusmn.cpp:658 -msgid "PreviewImage Length" -msgstr "Länge der Bildvorschau" - -#: src/olympusmn.cpp:658 -msgid "Preview image length" -msgstr "Länge der Bildvorschau" - -#: src/olympusmn.cpp:660 -msgid "Auto exposure lock" -msgstr "Automatische Belichtungssperre" - -#: src/olympusmn.cpp:662 -#, fuzzy -msgid "Exposure Shift" -msgstr "Belichtungszeit" - -#: src/olympusmn.cpp:662 -#, fuzzy -msgid "Exposure shift" -msgstr "Belichtungszeit" - -#: src/olympusmn.cpp:665 -msgid "Focus Process" -msgstr "Fokusverarbeitung" - -#: src/olympusmn.cpp:665 -msgid "Focus process" -msgstr "Fokusverarbeitung" - -#: src/olympusmn.cpp:666 -msgid "AF Search" -msgstr "Autofokus-Suche" - -#: src/olympusmn.cpp:666 -msgid "AF search" -msgstr "Autofokus-Suche" - -#: src/olympusmn.cpp:667 -msgid "AF Areas" -msgstr "Autofokus-Bereiche" - -#: src/olympusmn.cpp:667 -msgid "AF areas" -msgstr "Autofokus-Bereiche" - -#: src/olympusmn.cpp:668 -#, fuzzy -msgid "AFPointSelected" -msgstr "Ausgewählter Autofokus-Punkt" - -#: src/olympusmn.cpp:669 -#, fuzzy -msgid "AF Fine Tune Adjust" -msgstr "Benutzter Autofokus-Punkt" - -#: src/olympusmn.cpp:669 -#, fuzzy -msgid "AF fine tune adjust" -msgstr "Benutzter Autofokus-Punkt" - -#: src/olympusmn.cpp:672 -#, fuzzy -msgid "Flash Remote Control" -msgstr "Fernbedienung" - -#: src/olympusmn.cpp:672 -#, fuzzy -msgid "Flash remote control" -msgstr "Fernbedienung" - -#: src/olympusmn.cpp:673 -#, fuzzy -msgid "Flash Control Mode" -msgstr "Blitzmodus" - -#: src/olympusmn.cpp:673 -#, fuzzy -msgid "Flash control mode" -msgstr "Blitzmodus" - -#: src/olympusmn.cpp:674 -#, fuzzy -msgid "Flash Intensity" -msgstr "Blitzaktivität" - -#: src/olympusmn.cpp:674 -#, fuzzy -msgid "Flash intensity" -msgstr "Blitzaktivität" - -#: src/olympusmn.cpp:675 -#, fuzzy -msgid "Manual Flash Strength" -msgstr "Blitzstärke" - -#: src/olympusmn.cpp:675 -#, fuzzy -msgid "Manual flash strength" -msgstr "Manuelle Blitzkontrolle" - -#: src/olympusmn.cpp:676 src/sonymn.cpp:429 -msgid "White Balance 2" -msgstr "Weißabgleich 2" - -#: src/olympusmn.cpp:676 src/sonymn.cpp:430 -msgid "White balance 2" -msgstr "Weißabgleich 2" - -#: src/olympusmn.cpp:677 -msgid "White Balance Temperature" -msgstr "Weißabgleichstemperatur" - -#: src/olympusmn.cpp:677 -msgid "White balance temperature" -msgstr "Weißabgleichstemperatur" - -#: src/olympusmn.cpp:679 -msgid "Custom Saturation" -msgstr "Benutzerdefinierte Sättigung" - -#: src/olympusmn.cpp:679 -msgid "Custom saturation" -msgstr "Benutzerdefinierte Sättigung" - -#: src/olympusmn.cpp:680 -msgid "Modified Saturation" -msgstr "Geänderte Sättigung" - -#: src/olympusmn.cpp:680 -msgid "Modified saturation" -msgstr "Geänderte Sättigung" - -#: src/olympusmn.cpp:681 src/olympusmn.cpp:1080 -msgid "Contrast Setting" -msgstr "Kontrasteinstellung" - -#: src/olympusmn.cpp:682 src/olympusmn.cpp:1081 -msgid "Sharpness Setting" -msgstr "Schärfeneinstellung" - -#: src/olympusmn.cpp:686 src/olympusmn.cpp:975 -msgid "Distortion Correction" -msgstr "Verzerrungskorrektur" - -#: src/olympusmn.cpp:686 src/olympusmn.cpp:975 -msgid "Distortion correction" -msgstr "Verzerrungskorrektur" - -#: src/olympusmn.cpp:687 src/olympusmn.cpp:976 -msgid "Shading Compensation" -msgstr "Abschattungskompensation" - -#: src/olympusmn.cpp:687 src/olympusmn.cpp:976 -msgid "Shading compensation" -msgstr "Abschattungskompensation" - -#: src/olympusmn.cpp:688 -msgid "Compression Factor" -msgstr "Kompressionsrate" - -#: src/olympusmn.cpp:688 -msgid "Compression factor" -msgstr "Kompressionsrate" - -#: src/olympusmn.cpp:689 src/olympusmn.cpp:897 -msgid "Gradation" -msgstr "Gradation" - -#: src/olympusmn.cpp:690 src/olympusmn.cpp:891 src/pentaxmn.cpp:988 -#: src/pentaxmn.cpp:989 -msgid "Picture mode" -msgstr "Bildmodus" - -#: src/olympusmn.cpp:691 -msgid "Picture Mode Saturation" -msgstr "Bildmodus-Sättigung" - -#: src/olympusmn.cpp:691 src/olympusmn.cpp:892 -msgid "Picture mode saturation" -msgstr "Bildmodus-Sättigung" - -#: src/olympusmn.cpp:692 -msgid "Picture Mode Hue" -msgstr "Bildmodus-Farbton" - -#: src/olympusmn.cpp:692 -msgid "Picture mode hue" -msgstr "Bildmodus-Farbton" - -#: src/olympusmn.cpp:693 -msgid "Picture Mode Contrast" -msgstr "Bildmodus-Kontrast" - -#: src/olympusmn.cpp:693 src/olympusmn.cpp:893 -msgid "Picture mode contrast" -msgstr "Bildmodus-Kontrast" - -#: src/olympusmn.cpp:694 -msgid "Picture Mode Sharpness" -msgstr "Bildmodus-Schärfe" - -#: src/olympusmn.cpp:694 src/olympusmn.cpp:894 -msgid "Picture mode sharpness" -msgstr "Bildmodus-Schärfe" - -#: src/olympusmn.cpp:695 -msgid "Picture Mode BW Filter" -msgstr "Bildmodus-Monochromfilter" - -#: src/olympusmn.cpp:695 -msgid "Picture mode BW filter" -msgstr "Bildmodus-Monochromfilter" - -#: src/olympusmn.cpp:696 -msgid "Picture Mode Tone" -msgstr "Bildmodus-Ton" - -#: src/olympusmn.cpp:696 -msgid "Picture mode tone" -msgstr "Bildmodus-Ton" - -#: src/olympusmn.cpp:697 -msgid "Noise filter" -msgstr "Rauschfilter" - -#: src/olympusmn.cpp:698 -#, fuzzy -msgid "Art Filter" -msgstr "Filter" - -#: src/olympusmn.cpp:698 -#, fuzzy -msgid "Art filter" -msgstr "Farbfilter" - -#: src/olympusmn.cpp:699 -#, fuzzy -msgid "Magic Filter" -msgstr "Digitaler Filter" - -#: src/olympusmn.cpp:699 -#, fuzzy -msgid "Magic filter" -msgstr "Digitaler Filter" - -#: src/olympusmn.cpp:701 -msgid "Panorama Mode" -msgstr "Panorama-Modus" - -#: src/olympusmn.cpp:701 -msgid "Panorama mode" -msgstr "Panorama-Modus" - -#: src/olympusmn.cpp:702 -msgid "Image Quality 2" -msgstr "Bildqualität 2" - -#: src/olympusmn.cpp:702 -msgid "Image quality 2" -msgstr "Bildqualität 2" - -#: src/olympusmn.cpp:704 -#, fuzzy -msgid "Manometer Pressure" -msgstr "Druckmesser-Druck" - -#: src/olympusmn.cpp:704 -msgid "Manometer pressure" -msgstr "Druckmesser-Druck" - -#: src/olympusmn.cpp:705 -msgid "Manometer Reading" -msgstr "Druckmesser-Lesen" - -#: src/olympusmn.cpp:705 -msgid "Manometer reading" -msgstr "Druckmesser-Lesen" - -#: src/olympusmn.cpp:706 -#, fuzzy -msgid "Extended WB Detect" -msgstr "Szenenerkennung" - -#: src/olympusmn.cpp:706 -#, fuzzy -msgid "Extended WB detect" -msgstr "Szenenerkennung" - -#: src/olympusmn.cpp:707 -msgid "Level Gauge Roll" -msgstr "" - -#: src/olympusmn.cpp:707 -msgid "Level gauge roll" -msgstr "" - -#: src/olympusmn.cpp:708 -msgid "Level Gauge Pitch" -msgstr "" - -#: src/olympusmn.cpp:708 -msgid "Level gauge pitch" -msgstr "" - -#: src/olympusmn.cpp:710 -#, fuzzy -msgid "Unknown OlympusCs tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Olympus" - -#: src/olympusmn.cpp:721 -msgid "Simple E-System" -msgstr "" - -#: src/olympusmn.cpp:722 -msgid "E-System" -msgstr "" - -#: src/olympusmn.cpp:739 -msgid "Equipment Version" -msgstr "Ausrüstungsversion" - -#: src/olympusmn.cpp:739 -msgid "Equipment version" -msgstr "Ausrüstungsversion" - -#: src/olympusmn.cpp:741 -msgid "Serial number" -msgstr "Seriennummer" - -#: src/olympusmn.cpp:746 src/panasonicmn.cpp:277 src/tags.cpp:1854 -msgid "Lens Serial Number" -msgstr "Linsen-Seriennummer" - -#: src/olympusmn.cpp:746 src/panasonicmn.cpp:277 -msgid "Lens serial number" -msgstr "Linsen-Seriennummer" - -#: src/olympusmn.cpp:747 src/properties.cpp:388 src/tags.cpp:1850 -msgid "Lens Model" -msgstr "Linsenmodell" - -#: src/olympusmn.cpp:747 -#, fuzzy -msgid "Lens model" -msgstr "Linsenmodell" - -#: src/olympusmn.cpp:748 -msgid "Lens Firmware Version" -msgstr "Linsen-Firmware Version" - -#: src/olympusmn.cpp:748 -msgid "Lens firmware version" -msgstr "Linsen-Firmware Version" - -#: src/olympusmn.cpp:753 -msgid "Max Aperture At Current Focal" -msgstr "Maximale Blende bei aktuellem Fokus" - -#: src/olympusmn.cpp:753 -msgid "Max aperture at current focal" -msgstr "Maximale Blende bei aktuellem Fokus" - -#: src/olympusmn.cpp:754 -msgid "Lens Properties" -msgstr "Linseneigenschaften" - -#: src/olympusmn.cpp:754 -msgid "Lens properties" -msgstr "Linseneigenschaften" - -#: src/olympusmn.cpp:755 -msgid "Extender" -msgstr "Erweiterung" - -#: src/olympusmn.cpp:756 -msgid "Extender Serial Number" -msgstr "Seriennummer der Erweiterung" - -#: src/olympusmn.cpp:756 -msgid "Extender serial number" -msgstr "Seriennummer der Erweiterung" - -#: src/olympusmn.cpp:757 -msgid "Extender Model" -msgstr "Modell der Erweiterung" - -#: src/olympusmn.cpp:757 -msgid "Extender model" -msgstr "Modell der Erweiterung" - -#: src/olympusmn.cpp:758 -msgid "Extender Firmware Version" -msgstr "Firmware Version der Erweiterung" - -#: src/olympusmn.cpp:758 -msgid "Extender firmwareversion" -msgstr "Firmware Version der Erweiterung" - -#: src/olympusmn.cpp:760 src/properties.cpp:384 -msgid "Flash Model" -msgstr "Blitzmodell" - -#: src/olympusmn.cpp:760 -msgid "Flash model" -msgstr "Blitzmodell" - -#: src/olympusmn.cpp:761 -msgid "Flash Firmware Version" -msgstr "Firmware Version des Blitzes" - -#: src/olympusmn.cpp:761 -msgid "Flash firmware version" -msgstr "Firmware Version des Blitzes" - -#: src/olympusmn.cpp:762 -msgid "FlashSerialNumber" -msgstr "Seriennummer des Blitzes" - -#: src/olympusmn.cpp:764 -#, fuzzy -msgid "Unknown OlympusEq tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Olympus" - -#: src/olympusmn.cpp:781 src/olympusmn.cpp:846 -msgid "High Speed" -msgstr "Hohe Empfindlichkeit" - -#: src/olympusmn.cpp:782 src/olympusmn.cpp:803 src/olympusmn.cpp:847 -msgid "High Function" -msgstr "Hohe Funktionen" - -#: src/olympusmn.cpp:783 -msgid "Advanced High Speed" -msgstr "Fortgeschrittene hohe Empfindlichkeit" - -#: src/olympusmn.cpp:784 -msgid "Advanced High Function" -msgstr "Fortgeschrittene hohe Funktion" - -#: src/olympusmn.cpp:789 -msgid "Original" -msgstr "Original" - -#: src/olympusmn.cpp:790 -msgid "Edited (Landscape)" -msgstr "Bearbeitet (Landschaft)" - -#: src/olympusmn.cpp:791 src/olympusmn.cpp:792 -msgid "Edited (Portrait)" -msgstr "Bearbeitet (Portrait)" - -#: src/olympusmn.cpp:797 -msgid "WB Color Temp" -msgstr "Weißabgleich-Farbtemperatur" - -#: src/olympusmn.cpp:798 -msgid "WB Gray Point" -msgstr "Weißabgleich-Graupunkt" - -#: src/olympusmn.cpp:808 -msgid "Raw Development Version" -msgstr "Version der Rohentwicklung" - -#: src/olympusmn.cpp:808 -msgid "Raw development version" -msgstr "Version der Rohentwicklung" - -#: src/olympusmn.cpp:809 src/olympusmn.cpp:879 src/properties.cpp:558 -#: src/tags.cpp:822 -msgid "Exposure Bias Value" -msgstr "Belichtungsfehler" - -#: src/olympusmn.cpp:809 src/olympusmn.cpp:879 -#, fuzzy -msgid "Exposure bias value" -msgstr "Belichtungsfehler" - -#: src/olympusmn.cpp:810 src/olympusmn.cpp:881 -msgid "White Balance Value" -msgstr "Weißabgleichswert" - -#: src/olympusmn.cpp:810 src/olympusmn.cpp:881 -msgid "White balance value" -msgstr "Weißabgleichswert" - -#: src/olympusmn.cpp:811 src/olympusmn.cpp:882 -#, fuzzy -msgid "WB Fine Adjustment" -msgstr "Sättigungsanpassung" - -#: src/olympusmn.cpp:811 -#, fuzzy -msgid "WB fine adjustment" -msgstr "Sättigungsanpassung" - -#: src/olympusmn.cpp:812 src/olympusmn.cpp:834 src/olympusmn.cpp:883 -msgid "Gray Point" -msgstr "Graupunkt" - -#: src/olympusmn.cpp:812 src/olympusmn.cpp:883 -msgid "Gray point" -msgstr "Graupunkt" - -#: src/olympusmn.cpp:813 src/olympusmn.cpp:886 -#, fuzzy -msgid "Saturation Emphasis" -msgstr "Sättigungseinstellung" - -#: src/olympusmn.cpp:813 src/olympusmn.cpp:886 -#, fuzzy -msgid "Saturation emphasis" -msgstr "Sättigungseinstellung" - -#: src/olympusmn.cpp:814 src/olympusmn.cpp:887 -#, fuzzy -msgid "Memory Color Emphasis" -msgstr "Meine Farben" - -#: src/olympusmn.cpp:814 src/olympusmn.cpp:887 -#, fuzzy -msgid "Memory color emphasis" -msgstr "Meine Farben" - -#: src/olympusmn.cpp:815 src/olympusmn.cpp:884 -msgid "Contrast Value" -msgstr "Kontrast-Wert" - -#: src/olympusmn.cpp:815 src/olympusmn.cpp:884 -msgid "Contrast value" -msgstr "Kontrast-Wert" - -#: src/olympusmn.cpp:816 src/olympusmn.cpp:885 -msgid "Sharpness Value" -msgstr "Schärfe-Wert" - -#: src/olympusmn.cpp:816 src/olympusmn.cpp:885 -msgid "Sharpness value" -msgstr "Schärfe-Wert" - -#: src/olympusmn.cpp:818 src/olympusmn.cpp:890 -#, fuzzy -msgid "Engine" -msgstr "Techniker" - -#: src/olympusmn.cpp:820 -msgid "Edit status" -msgstr "Bearbeitungsstatus" - -#: src/olympusmn.cpp:821 -msgid "Settings" -msgstr "Einstellungen" - -#: src/olympusmn.cpp:823 -#, fuzzy -msgid "Unknown OlympusRd tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Olympus" - -#: src/olympusmn.cpp:878 -#, fuzzy -msgid "Raw Development 2 Version" -msgstr "Rohentwicklung" - -#: src/olympusmn.cpp:878 -#, fuzzy -msgid "Raw development 2 version" -msgstr "Roh-Entwicklungsinformation" - -#: src/olympusmn.cpp:882 -#, fuzzy -msgid "White balance fine adjustment" -msgstr "Weißabgleich-Anpassung" - -#: src/olympusmn.cpp:892 -#, fuzzy -msgid "PM Saturation" -msgstr "Sättigung" - -#: src/olympusmn.cpp:893 -#, fuzzy -msgid "PM Contrast" -msgstr "Kontrast" - -#: src/olympusmn.cpp:894 -#, fuzzy -msgid "PM Sharpness" -msgstr "Schärfe" - -#: src/olympusmn.cpp:895 -#, fuzzy -msgid "PM BW Filter" -msgstr "Filter" - -#: src/olympusmn.cpp:895 -#, fuzzy -msgid "PM BW filter" -msgstr "Filter" - -#: src/olympusmn.cpp:896 -#, fuzzy -msgid "PM Picture Tone" -msgstr "Bildmodus" - -#: src/olympusmn.cpp:896 -#, fuzzy -msgid "PM picture tone" -msgstr "Bildmodus" - -#: src/olympusmn.cpp:899 -#, fuzzy -msgid "Auto Gradation" -msgstr "Audiodauer" - -#: src/olympusmn.cpp:899 -#, fuzzy -msgid "Auto gradation" -msgstr "Audiodauer" - -#: src/olympusmn.cpp:900 -#, fuzzy -msgid "PM Noise Filter" -msgstr "Rauschfilter" - -#: src/olympusmn.cpp:900 -#, fuzzy -msgid "Picture mode noise filter" -msgstr "Bildmoduseinstellung" - -#: src/olympusmn.cpp:902 -#, fuzzy -msgid "Unknown OlympusRd2 tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Olympus" - -#: src/olympusmn.cpp:913 -#, fuzzy -msgid "On (2 frames)" -msgstr "Ein (Standard)" - -#: src/olympusmn.cpp:914 -#, fuzzy -msgid "On (3 frames)" -msgstr "Ein (Standard)" - -#: src/olympusmn.cpp:919 -msgid "4:3" -msgstr "" - -#: src/olympusmn.cpp:920 -#, fuzzy -msgid "3:2" -msgstr "320" - -#: src/olympusmn.cpp:921 -msgid "16:9" -msgstr "" - -#: src/olympusmn.cpp:922 -msgid "6:6" -msgstr "" - -#: src/olympusmn.cpp:923 -msgid "5:4" -msgstr "" - -#: src/olympusmn.cpp:924 -msgid "7:6" -msgstr "" - -#: src/olympusmn.cpp:925 -#, fuzzy -msgid "6:5" -msgstr "D65" - -#: src/olympusmn.cpp:926 -#, fuzzy -msgid "7:5" -msgstr "D75" - -#: src/olympusmn.cpp:927 -msgid "3:4" -msgstr "" - -#: src/olympusmn.cpp:931 -#, fuzzy -msgid "Image Processing Version" -msgstr "Bildverarbeitung" - -#: src/olympusmn.cpp:931 -#, fuzzy -msgid "Image processing version" -msgstr "Informationen zur Bildverarbeitung" - -#: src/olympusmn.cpp:933 -#, fuzzy -msgid "WB RB Levels 3000K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:933 -#, fuzzy -msgid "WB RB levels 3000K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:934 -#, fuzzy -msgid "WB RB Levels 3300K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:934 -#, fuzzy -msgid "WB RB levels 3300K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:935 -#, fuzzy -msgid "WB RB Levels 3600K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:935 -#, fuzzy -msgid "WB RB levels 3600K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:936 -#, fuzzy -msgid "WB RB Levels 3900K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:936 -#, fuzzy -msgid "WB RB levels 3900K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:937 -#, fuzzy -msgid "WB RB Levels 4000K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:937 -#, fuzzy -msgid "WB RB levels 4000K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:938 -#, fuzzy -msgid "WB RB Levels 4300K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:938 -#, fuzzy -msgid "WB RB levels 4300K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:939 -#, fuzzy -msgid "WB RB Levels 4500K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:939 -#, fuzzy -msgid "WB RB levels 4500K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:940 -#, fuzzy -msgid "WB RB Levels 4800K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:940 -#, fuzzy -msgid "WB RB levels 4800K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:941 -#, fuzzy -msgid "WB RB Levels 5300K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:941 -#, fuzzy -msgid "WB RB levels 5300K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:942 -#, fuzzy -msgid "WB RB Levels 6000K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:942 -#, fuzzy -msgid "WB RB levels 6000K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:943 -#, fuzzy -msgid "WB RB Levels 6600K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:943 -#, fuzzy -msgid "WB RB levels 6600K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:944 -#, fuzzy -msgid "WB RB Levels 7500K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:944 -#, fuzzy -msgid "WB RB levels 7500K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:945 -#, fuzzy -msgid "WB RB Levels CWB1" -msgstr "WB_RGGBLevelsCloudy" - -#: src/olympusmn.cpp:945 -#, fuzzy -msgid "WB RB levels CWB1" -msgstr "WB_RGGBLevelsCloudy" - -#: src/olympusmn.cpp:946 -#, fuzzy -msgid "WB RB Levels CWB2" -msgstr "WB_RGGBLevelsCloudy" - -#: src/olympusmn.cpp:946 -#, fuzzy -msgid "WB RB levels CWB2" -msgstr "WB_RGGBLevelsCloudy" - -#: src/olympusmn.cpp:947 -#, fuzzy -msgid "WB RB Levels CWB3" -msgstr "WB_RGGBLevelsCloudy" - -#: src/olympusmn.cpp:947 -#, fuzzy -msgid "WB RB levels CWB3" -msgstr "WB_RGGBLevelsCloudy" - -#: src/olympusmn.cpp:948 -#, fuzzy -msgid "WB RB Levels CWB4" -msgstr "WB_RGGBLevelsCloudy" - -#: src/olympusmn.cpp:948 -#, fuzzy -msgid "WB RB levels CWB4" -msgstr "WB_RGGBLevelsCloudy" - -#: src/olympusmn.cpp:949 -#, fuzzy -msgid "WB G Level 3000K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:949 -#, fuzzy -msgid "WB G level 3000K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:950 -#, fuzzy -msgid "WB G Level 3300K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:950 -#, fuzzy -msgid "WB G level 3300K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:951 -#, fuzzy -msgid "WB G Level 3600K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:951 -#, fuzzy -msgid "WB G level 3600K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:952 -#, fuzzy -msgid "WB G Level 3900K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:952 -#, fuzzy -msgid "WB G level 3900K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:953 -#, fuzzy -msgid "WB G Level 4000K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:953 -#, fuzzy -msgid "WB G level 4000K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:954 -#, fuzzy -msgid "WB G Level 4300K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:954 -#, fuzzy -msgid "WB G level 4300K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:955 -#, fuzzy -msgid "WB G Level 4500K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:955 -#, fuzzy -msgid "WB G level 4500K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:956 -#, fuzzy -msgid "WB G Level 4800K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:956 -#, fuzzy -msgid "WB G level 4800K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:957 -#, fuzzy -msgid "WB G Level 5300K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:957 -#, fuzzy -msgid "WB G level 5300K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:958 -#, fuzzy -msgid "WB G Level 6000K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:958 -#, fuzzy -msgid "WB G level 6000K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:959 -#, fuzzy -msgid "WB G Level 6600K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:959 -#, fuzzy -msgid "WB G level 6600K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:960 -#, fuzzy -msgid "WB G Level 7500K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:960 -#, fuzzy -msgid "WB G level 7500K" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:961 -#, fuzzy -msgid "WB G Level" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:961 -#, fuzzy -msgid "WB G level" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:963 -msgid "Enhancer" -msgstr "Verbesserer" - -#: src/olympusmn.cpp:964 -msgid "Enhancer Values" -msgstr "Verbesserer-Werte" - -#: src/olympusmn.cpp:964 -#, fuzzy -msgid "Enhancer values" -msgstr "Verbesserer-Werte" - -#: src/olympusmn.cpp:965 src/olympusmn.cpp:1067 -#, fuzzy -msgid "Coring Filter" -msgstr "Kernfiilter" - -#: src/olympusmn.cpp:966 src/olympusmn.cpp:1068 -#, fuzzy -msgid "Coring Values" -msgstr "Kernfilter" - -#: src/olympusmn.cpp:966 src/olympusmn.cpp:1068 -#, fuzzy -msgid "Coring values" -msgstr "Kernfilter" - -#: src/olympusmn.cpp:967 src/tags.cpp:908 -msgid "Black Level" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:968 -#, fuzzy -msgid "Gain Base" -msgstr "Basis-Adresse" - -#: src/olympusmn.cpp:968 -msgid "Gain base" -msgstr "" - -#: src/olympusmn.cpp:969 -msgid "Valid Bits" -msgstr "Gültige Bits" - -#: src/olympusmn.cpp:970 src/olympusmn.cpp:1072 src/properties.cpp:445 -msgid "Crop Left" -msgstr "Links zuschneiden" - -#: src/olympusmn.cpp:970 src/olympusmn.cpp:1072 -msgid "Crop left" -msgstr "Links zuschneiden" - -#: src/olympusmn.cpp:971 src/olympusmn.cpp:1073 src/properties.cpp:444 -msgid "Crop Top" -msgstr "Oben zuschneiden" - -#: src/olympusmn.cpp:971 src/olympusmn.cpp:1073 -msgid "Crop top" -msgstr "Oben zuschneiden" - -#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 src/properties.cpp:449 -msgid "Crop Width" -msgstr "Breite des Zuschnitts" - -#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 -msgid "Crop width" -msgstr "Breite des Zuschnitts" - -#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 src/properties.cpp:450 -msgid "Crop Height" -msgstr "Höhe des Zuschnitts" - -#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 -msgid "Crop height" -msgstr "Höhe des Zuschnitts" - -#: src/olympusmn.cpp:977 -#, fuzzy -msgid "Multiple Exposure Mode" -msgstr "Belichtungsmodus" - -#: src/olympusmn.cpp:977 -#, fuzzy -msgid "Multiple exposure mode" -msgstr "Mehrfache Belichtung" - -#: src/olympusmn.cpp:978 src/sonymn.cpp:644 src/sonymn.cpp:645 -#, fuzzy -msgid "Aspect Ratio" -msgstr "Video-Pixelverhältnis" - -#: src/olympusmn.cpp:978 -#, fuzzy -msgid "Aspect ratio" -msgstr "Video-Pixelverhältnis" - -#: src/olympusmn.cpp:979 -#, fuzzy -msgid "Aspect Frame" -msgstr "Video-Pixelverhältnis" - -#: src/olympusmn.cpp:979 -#, fuzzy -msgid "Aspect frame" -msgstr "Video-Pixelverhältnis" - -#: src/olympusmn.cpp:980 -#, fuzzy -msgid "Face Detect" -msgstr "Fehler beim lesen" - -#: src/olympusmn.cpp:980 src/olympusmn.cpp:1373 src/olympusmn.cpp:1385 -#, fuzzy -msgid "Face detect" -msgstr "Fehler beim lesen" - -#: src/olympusmn.cpp:981 -#, fuzzy -msgid "Face Detect Area" -msgstr "Fehler beim lesen" - -#: src/olympusmn.cpp:981 -#, fuzzy -msgid "Face detect area" -msgstr "Fehler beim lesen" - -#: src/olympusmn.cpp:983 -#, fuzzy -msgid "Unknown OlympusIp tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Olympus" - -#: src/olympusmn.cpp:993 -msgid "Bounce or Off" -msgstr "" - -#: src/olympusmn.cpp:994 -msgid "Direct" -msgstr "Direkt" - -#: src/olympusmn.cpp:998 -msgid "Focus Info Version" -msgstr "Version der Fokus-Information" - -#: src/olympusmn.cpp:998 -msgid "Focus info version" -msgstr "Version der Fokus-Information" - -#: src/olympusmn.cpp:999 -msgid "Auto Focus" -msgstr "Automatischer Fokus" - -#: src/olympusmn.cpp:1000 -msgid "Scene Detect" -msgstr "Szenenerkennung" - -#: src/olympusmn.cpp:1000 -msgid "Scene detect" -msgstr "Szenenerkennung" - -#: src/olympusmn.cpp:1001 -msgid "Scene Area" -msgstr "Szenenbereich" - -#: src/olympusmn.cpp:1001 -msgid "Scene area" -msgstr "Szenenbereich" - -#: src/olympusmn.cpp:1002 -msgid "Scene Detect Data" -msgstr "Szenenerkennungsdaten" - -#: src/olympusmn.cpp:1002 -msgid "Scene detect data" -msgstr "Szenenerkennungsdaten" - -#: src/olympusmn.cpp:1003 -msgid "Zoom Step Count" -msgstr "Zoom-Schrittweite" - -#: src/olympusmn.cpp:1004 -msgid "Focus Step Count" -msgstr "Fokus-Schrittweite" - -#: src/olympusmn.cpp:1004 -msgid "Focus step count" -msgstr "Fokus-Schrittweite" - -#: src/olympusmn.cpp:1005 -#, fuzzy -msgid "Focus Step Infinity" -msgstr "Fokuseinstellung" - -#: src/olympusmn.cpp:1005 -#, fuzzy -msgid "Focus step infinity" -msgstr "Fokuseinstellung" - -#: src/olympusmn.cpp:1006 -#, fuzzy -msgid "Focus Step Near" -msgstr "Fokustyp" - -#: src/olympusmn.cpp:1006 -#, fuzzy -msgid "Focus step near" -msgstr "Fokusabstand" - -#: src/olympusmn.cpp:1009 -msgid "External Flash" -msgstr "Externer Blitz" - -#: src/olympusmn.cpp:1010 -#, fuzzy -msgid "External Flash Guide Number" -msgstr "Externer Blitzmodus" - -#: src/olympusmn.cpp:1010 -#, fuzzy -msgid "External flash guide number" -msgstr "Externer Blitzmodus" - -#: src/olympusmn.cpp:1014 -msgid "Manual Flash" -msgstr "Manuell ausgelöst" - -#: src/olympusmn.cpp:1014 -msgid "Manual flash" -msgstr "Manuell ausgelöst" - -#: src/olympusmn.cpp:1018 -#, fuzzy -msgid "Unknown OlympusFi tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Olympus" - -#: src/olympusmn.cpp:1029 -#, fuzzy -msgid "Unknown OlympusFe tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Olympus" - -#: src/olympusmn.cpp:1042 -#, fuzzy -msgid "Fine Weather" -msgstr "Gutes Wetter" - -#: src/olympusmn.cpp:1043 -#, fuzzy -msgid "Tungsten (incandescent)" -msgstr "weißglühendes Wolfram Licht" - -#: src/olympusmn.cpp:1044 -#, fuzzy -msgid "Evening Sunlight" -msgstr "Abend" - -#: src/olympusmn.cpp:1045 -#, fuzzy -msgid "Daylight Fluorescent (D 5700 - 7100K)" -msgstr "Tageslicht Leuchtstoff (D 5700 - 7100K)" - -#: src/olympusmn.cpp:1046 -#, fuzzy -msgid "Day White Fluorescent (N 4600 - 5400K)" -msgstr "Tageslichtweiß Leuchtstoff (N 4600 - 5400K)" - -#: src/olympusmn.cpp:1047 -#, fuzzy -msgid "Cool White Fluorescent (W 3900 - 4500K)" -msgstr "Kühles weißes Leuchtstoff (W 3900 - 4500K)" - -#: src/olympusmn.cpp:1048 -#, fuzzy -msgid "White Fluorescent (WW 3200 - 3700K)" -msgstr "Weißes Leuchtstofflicht (WW 3200 - 3700K)" - -#: src/olympusmn.cpp:1049 -#, fuzzy -msgid "One Touch White Balance" -msgstr "Ein-Tasten-Weißabgleich" - -#: src/olympusmn.cpp:1050 -#, fuzzy -msgid "Custom 1-4" -msgstr "Benutzerdefiniert 1" - -#: src/olympusmn.cpp:1054 -#, fuzzy -msgid "Raw Info Version" -msgstr "Version der Fokus-Information" - -#: src/olympusmn.cpp:1054 -#, fuzzy -msgid "Raw info version" -msgstr "Version der Fokus-Information" - -#: src/olympusmn.cpp:1055 -#, fuzzy -msgid "WB_RB Levels Used" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:1055 -#, fuzzy -msgid "WB_RB levels used" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:1056 -#, fuzzy -msgid "WB_RB Levels Auto" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:1056 -#, fuzzy -msgid "WB_RB levels auto" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:1057 -#, fuzzy -msgid "WB_RB Levels Shade" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:1057 -#, fuzzy -msgid "WB_RB levels shade" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:1058 -#, fuzzy -msgid "WB_RB Levels Cloudy" -msgstr "WB_RGGBLevelsCloudy" - -#: src/olympusmn.cpp:1058 -#, fuzzy -msgid "WB_RB levels cloudy" -msgstr "WB_RGGBLevelsCloudy" - -#: src/olympusmn.cpp:1059 -#, fuzzy -msgid "WB_RB Levels Fine Weather" -msgstr "WB_RGGBLevelsFlash" - -#: src/olympusmn.cpp:1059 -#, fuzzy -msgid "WB_RB levels fine weather" -msgstr "WB_RGGBLevelsFlash" - -#: src/olympusmn.cpp:1060 -#, fuzzy -msgid "WB_RB Levels Tungsten" -msgstr "WB_RGGBLevelsTungsten" - -#: src/olympusmn.cpp:1060 -#, fuzzy -msgid "WB_RB levels tungsten" -msgstr "WB_RGGBLevelsTungsten" - -#: src/olympusmn.cpp:1061 -#, fuzzy -msgid "WB_RB Levels Evening Sunlight" -msgstr "WB_RGGBLevelsDaylight" - -#: src/olympusmn.cpp:1061 -#, fuzzy -msgid "WB_RB levels evening sunlight" -msgstr "WB_RGGBLevelsDaylight" - -#: src/olympusmn.cpp:1062 -#, fuzzy -msgid "WB_RB Levels Daylight Fluor" -msgstr "WB_RGGBLevelsDaylight" - -#: src/olympusmn.cpp:1062 -#, fuzzy -msgid "WB_RB levels daylight fluor" -msgstr "WB_RGGBLevelsDaylight" - -#: src/olympusmn.cpp:1063 -#, fuzzy -msgid "WB_RB Levels Day White Fluor" -msgstr "WB_RGGBLevelsDaylight" - -#: src/olympusmn.cpp:1063 -#, fuzzy -msgid "WB_RB levels day white fluor" -msgstr "WB_RGGBLevelsDaylight" - -#: src/olympusmn.cpp:1064 -#, fuzzy -msgid "WB_RB Levels Cool White Fluor" -msgstr "WB_RGGBLevelsCloudy" - -#: src/olympusmn.cpp:1064 -#, fuzzy -msgid "WB_RB levels cool white fluor" -msgstr "WB_RGGBLevelsCloudy" - -#: src/olympusmn.cpp:1065 -#, fuzzy -msgid "WB_RB Levels White Fluorescent" -msgstr "WB_RGGBLevelsFluorescentD" - -#: src/olympusmn.cpp:1065 -#, fuzzy -msgid "WB_RB levels white fluorescent" -msgstr "WB_RGGBLevelsFluorescentD" - -#: src/olympusmn.cpp:1066 -#, fuzzy -msgid "Color Matrix2" -msgstr "Farbmatrix 2" - -#: src/olympusmn.cpp:1066 -#, fuzzy -msgid "Color matrix 2" -msgstr "Farbmatrix 2" - -#: src/olympusmn.cpp:1069 -#, fuzzy -msgid "Black Level 2" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:1069 -#, fuzzy -msgid "Black level 2" -msgstr "Schwarzlevel" - -#: src/olympusmn.cpp:1070 src/properties.cpp:508 src/tags.cpp:699 -msgid "YCbCr Coefficients" -msgstr "YCbCr Koeffizienten" - -#: src/olympusmn.cpp:1070 -#, fuzzy -msgid "YCbCr coefficients" -msgstr "YCbCr Koeffizienten" - -#: src/olympusmn.cpp:1071 -#, fuzzy -msgid "Valid Pixel Depth" -msgstr "Video-Pixeltiefe" - -#: src/olympusmn.cpp:1071 -#, fuzzy -msgid "Valid pixel depth" -msgstr "Video-Pixeltiefe" - -#: src/olympusmn.cpp:1077 -#, fuzzy -msgid "White Balance Comp" -msgstr "Weißabgleich 2" - -#: src/olympusmn.cpp:1077 -#, fuzzy -msgid "White balance comp" -msgstr "Weißabgleich 2" - -#: src/olympusmn.cpp:1078 -#, fuzzy -msgid "Saturation Setting" -msgstr "Sättigungseinstellung" - -#: src/olympusmn.cpp:1079 -#, fuzzy -msgid "Hue Setting" -msgstr "Besitzt Einstellungen" - -#: src/olympusmn.cpp:1079 -#, fuzzy -msgid "Hue setting" -msgstr "Automatische Belichtung-Einstellungen" - -#: src/olympusmn.cpp:1082 -#, fuzzy -msgid "CM Exposure Compensation" -msgstr "Belichtungskompensierung" - -#: src/olympusmn.cpp:1082 -#, fuzzy -msgid "CM exposure compensation" -msgstr "Belichtungskompensation" - -#: src/olympusmn.cpp:1083 -#, fuzzy -msgid "CM White Balance" -msgstr "Weißabgleich" - -#: src/olympusmn.cpp:1083 -#, fuzzy -msgid "CM white balance" -msgstr "Weißabgleich" - -#: src/olympusmn.cpp:1084 -#, fuzzy -msgid "CM White Balance Comp" -msgstr "Weißabgleich 2" - -#: src/olympusmn.cpp:1084 -#, fuzzy -msgid "CM white balance comp" -msgstr "Weißabgleich 2" - -#: src/olympusmn.cpp:1085 -#, fuzzy -msgid "CM White Balance Gray Point" -msgstr "Weißabgleichsreihe" - -#: src/olympusmn.cpp:1085 -#, fuzzy -msgid "CM white balance gray point" -msgstr "Weißabgleichsauslöser" - -#: src/olympusmn.cpp:1086 -#, fuzzy -msgid "CM Saturation" -msgstr "Sättigung" - -#: src/olympusmn.cpp:1086 -#, fuzzy -msgid "CM saturation" -msgstr "Sättigung" - -#: src/olympusmn.cpp:1087 -#, fuzzy -msgid "CM Hue" -msgstr "Sättigung" - -#: src/olympusmn.cpp:1087 -#, fuzzy -msgid "CM hue" -msgstr "Sättigung" - -#: src/olympusmn.cpp:1088 -#, fuzzy -msgid "CM Contrast" -msgstr "Kontrast" - -#: src/olympusmn.cpp:1088 -#, fuzzy -msgid "CM contrast" -msgstr "Kontrast" - -#: src/olympusmn.cpp:1089 -#, fuzzy -msgid "CM Sharpness" -msgstr "Schärfe" - -#: src/olympusmn.cpp:1089 -#, fuzzy -msgid "CM sharpness" -msgstr "Schärfe" - -#: src/olympusmn.cpp:1091 -#, fuzzy -msgid "Unknown OlympusRi tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Olympus" - -#: src/olympusmn.cpp:1114 src/pentaxmn.cpp:336 -msgid "User-Selected" -msgstr "Vom Benutzer ausgewählt" - -#: src/olympusmn.cpp:1115 -#, fuzzy -msgid "Auto-Override" -msgstr "Ãœberschreiben" - -#: src/olympusmn.cpp:1151 -msgid "Fast" -msgstr "Schnell" - -#: src/olympusmn.cpp:1208 -msgid "3000 Kelvin" -msgstr "3000 Kelvin" - -#: src/olympusmn.cpp:1209 -msgid "3700 Kelvin" -msgstr "3700 Kelvin" - -#: src/olympusmn.cpp:1210 -msgid "4000 Kelvin" -msgstr "4000 Kelvin" - -#: src/olympusmn.cpp:1211 -msgid "4500 Kelvin" -msgstr "4500 Kelvin" - -#: src/olympusmn.cpp:1212 -msgid "5500 Kelvin" -msgstr "5500 Kelvin" - -#: src/olympusmn.cpp:1213 -msgid "6500 Kelvin" -msgstr "6500 Kelvin" - -#: src/olympusmn.cpp:1214 -msgid "7500 Kelvin" -msgstr "7500 Kelvin" - -#: src/olympusmn.cpp:1220 -msgid "One-touch" -msgstr "Eine Berührung" - -#: src/olympusmn.cpp:1241 -msgid "Olympus Zuiko Digital ED 50mm F2.0 Macro" -msgstr "" - -#: src/olympusmn.cpp:1242 -msgid "Olympus Zuiko Digital 40-150mm F3.5-4.5" -msgstr "" - -#: src/olympusmn.cpp:1243 src/olympusmn.cpp:1259 -msgid "Olympus Zuiko Digital ED 14-42mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1244 -msgid "Olympus Zuiko Digital ED 150mm F2.0" -msgstr "" - -#: src/olympusmn.cpp:1245 -msgid "Olympus Zuiko Digital 17mm F2.8 Pancake" -msgstr "" - -#: src/olympusmn.cpp:1246 -msgid "Olympus Zuiko Digital ED 300mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1247 -msgid "Olympus Zuiko Digital 14-54mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1248 -msgid "Olympus Zuiko Digital Pro ED 90-250mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1249 -msgid "Olympus Zuiko Digital ED 50-200mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1250 -msgid "Olympus Zuiko Digital ED 8mm F3.5 Fisheye" -msgstr "" - -#: src/olympusmn.cpp:1251 -msgid "Olympus Zuiko Digital 11-22mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1252 -msgid "Olympus Zuiko Digital 18-180mm F3.5-6.3" -msgstr "" - -#: src/olympusmn.cpp:1253 -msgid "Olympus Zuiko Digital 70-300mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1254 -msgid "Olympus Zuiko Digital ED 7-14mm F4.0" -msgstr "" - -#: src/olympusmn.cpp:1255 -msgid "Olympus Zuiko Digital Pro ED 35-100mm F2.0" -msgstr "" - -#: src/olympusmn.cpp:1256 -msgid "Olympus Zuiko Digital 14-45mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1257 -msgid "Olympus Zuiko Digital 35mm F3.5 Macro" -msgstr "" - -#: src/olympusmn.cpp:1258 -msgid "Olympus Zuiko Digital 17.5-45mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1260 -msgid "Olympus Zuiko Digital ED 40-150mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1261 -msgid "Olympus Zuiko Digital ED 50-200mm F2.8-3.5 SWD" -msgstr "" - -#: src/olympusmn.cpp:1262 -msgid "Olympus Zuiko Digital ED 12-60mm F2.8-4.0 SWD" -msgstr "" - -#: src/olympusmn.cpp:1263 -msgid "Olympus Zuiko Digital ED 14-35mm F2.0 SWD" -msgstr "" - -#: src/olympusmn.cpp:1264 -msgid "Olympus Zuiko Digital 25mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1265 -msgid "Olympus Zuiko Digital ED 9-18mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1266 -msgid "Olympus Zuiko Digital 14-54mm F2.8-3.5 II" -msgstr "" - -#: src/olympusmn.cpp:1267 -msgid "Sigma 18-50mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1268 -msgid "Sigma 55-200mm F4.0-5.6 DC" -msgstr "" - -#: src/olympusmn.cpp:1269 -msgid "Sigma 18-125mm F3.5-5.6 DC" -msgstr "" - -#: src/olympusmn.cpp:1270 -msgid "Sigma 18-125mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1271 -msgid "Sigma 30mm F1.4" -msgstr "" - -#: src/olympusmn.cpp:1272 src/olympusmn.cpp:1278 -msgid "Sigma 50-500mm F4.0-6.3 EX DG APO HSM RF" -msgstr "" - -#: src/olympusmn.cpp:1273 -msgid "Sigma 105mm F2.8 DG" -msgstr "" - -#: src/olympusmn.cpp:1274 -msgid "Sigma 150mm F2.8 DG HSM" -msgstr "" - -#: src/olympusmn.cpp:1275 -msgid "Sigma 24mm F1.8 EX DG Aspherical Macro" -msgstr "" - -#: src/olympusmn.cpp:1276 -msgid "Sigma 135-400mm F4.5-5.6 DG ASP APO RF" -msgstr "" - -#: src/olympusmn.cpp:1277 -msgid "Sigma 300-800mm F5.6 EX DG APO" -msgstr "" - -#: src/olympusmn.cpp:1279 -msgid "Sigma 10-20mm F4.0-5.6 EX DC HSM" -msgstr "" - -#: src/olympusmn.cpp:1280 src/olympusmn.cpp:1289 -msgid "Leica D Vario Elmarit 14-50mm F2.8-3.5 Asph." -msgstr "" - -#: src/olympusmn.cpp:1281 -msgid "Lumix G Vario 14-45mm F3.5-5.6 Asph. Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1282 src/olympusmn.cpp:1290 -msgid "Leica D Summilux 25mm F1.4 Asph." -msgstr "" - -#: src/olympusmn.cpp:1283 -msgid "Lumix G Vario 45-200mm F4-5.6 Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1284 -msgid "Leica D Vario Elmar 14-50mm F3.8-5.6 Asph." -msgstr "" - -#: src/olympusmn.cpp:1285 -msgid "Lumix G Vario HD 14-140mm F4-5.8 Asph. Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1286 -msgid "Leica D Vario Elmar 14-150mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1287 -msgid "Lumix G Vario 7-14mm F4 Asph." -msgstr "" - -#: src/olympusmn.cpp:1288 -msgid "Lumix G 20mm F1.7 Asph." -msgstr "" - -#: src/olympusmn.cpp:1338 -msgid "Olympus Zuiko Digital EC-14 1.4x Teleconverter" -msgstr "" - -#: src/olympusmn.cpp:1339 -msgid "Olympus EX-25 Extension Tube" -msgstr "" - -#: src/olympusmn.cpp:1340 -msgid "Olympus Zuiko Digital EC-20 2.0x Teleconverter" -msgstr "" - -#: src/olympusmn.cpp:1382 -msgid "S-AF" -msgstr "" - -#: src/olympusmn.cpp:1383 -msgid "C-AF" -msgstr "" - -#: src/olympusmn.cpp:1386 -#, fuzzy -msgid "Imager AF" -msgstr "Eindeutige Bildnummer" - -#: src/olympusmn.cpp:1387 -#, fuzzy -msgid "AF sensor" -msgstr "Autofokus-Suche" - -#: src/olympusmn.cpp:1433 -#, fuzzy -msgid "Soft Focus" -msgstr "Punktfokus" - -#: src/olympusmn.cpp:1434 -msgid "Pop Art" -msgstr "" - -#: src/olympusmn.cpp:1435 -msgid "Pale & Light Color" -msgstr "" - -#: src/olympusmn.cpp:1436 -#, fuzzy -msgid "Light Tone" -msgstr "Rechte Zone" - -#: src/olympusmn.cpp:1437 -msgid "Pin Hole" -msgstr "" - -#: src/olympusmn.cpp:1438 -msgid "Grainy Film" -msgstr "" - -#: src/olympusmn.cpp:1439 -#, fuzzy -msgid "Diorama" -msgstr "Panorama" - -#: src/olympusmn.cpp:1440 -#, fuzzy -msgid "Cross Process" -msgstr "Fokusverarbeitung" - -#: src/olympusmn.cpp:1441 -#, fuzzy -msgid "Fish Eye" -msgstr "Energie des Blitzes" - -#: src/olympusmn.cpp:1442 -msgid "Drawing" -msgstr "" - -#: src/olympusmn.cpp:1489 -#, fuzzy -msgid "Left (or n/a)" -msgstr "Linke Zone" - -#: src/olympusmn.cpp:1490 src/olympusmn.cpp:1508 -#, fuzzy -msgid "Center (horizontal)" -msgstr "Mittelzone (Horizontale Orientierung)" - -#: src/olympusmn.cpp:1492 src/olympusmn.cpp:1519 -#, fuzzy -msgid "Center (vertical)" -msgstr "Mittelzone (Vertikale Orientierung)" - -#: src/olympusmn.cpp:1503 -msgid "Top-left (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1504 -#, fuzzy -msgid "Top-center (horizontal)" -msgstr "Mittelzone (Horizontale Orientierung)" - -#: src/olympusmn.cpp:1505 -msgid "Top-right (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1506 -#, fuzzy -msgid "Left (horizontal)" -msgstr "Horizontal (Normal)" - -#: src/olympusmn.cpp:1507 -msgid "Mid-left (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1509 -msgid "Mid-right (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1510 -#, fuzzy -msgid "Right (horizontal)" -msgstr "Horizontal (Normal)" - -#: src/olympusmn.cpp:1511 -#, fuzzy -msgid "Bottom-left (horizontal)" -msgstr "Unten - links" - -#: src/olympusmn.cpp:1512 -#, fuzzy -msgid "Bottom-center (horizontal)" -msgstr "Unten - links" - -#: src/olympusmn.cpp:1513 -#, fuzzy -msgid "Bottom-right (horizontal)" -msgstr "Unten - rechts" - -#: src/olympusmn.cpp:1514 -msgid "Top-left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1515 -#, fuzzy -msgid "Top-center (vertical)" -msgstr "Zentriert" - -#: src/olympusmn.cpp:1516 -#, fuzzy -msgid "Top-right (vertical)" -msgstr "Oben - rechts" - -#: src/olympusmn.cpp:1517 -msgid "Left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1518 -msgid "Mid-left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1520 -#, fuzzy -msgid "Mid-right (vertical)" -msgstr "Mitte - rechts" - -#: src/olympusmn.cpp:1521 -msgid "Right (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1522 -#, fuzzy -msgid "Bottom-left (vertical)" -msgstr "Unten - links" - -#: src/olympusmn.cpp:1523 -#, fuzzy -msgid "Bottom-center (vertical)" -msgstr "Unten - links" - -#: src/olympusmn.cpp:1524 -#, fuzzy -msgid "Bottom-right (vertical)" -msgstr "Unten - rechts" - -#: src/olympusmn.cpp:1561 -#, fuzzy -msgid "Single Target" -msgstr "Einzelbereich" - -#: src/olympusmn.cpp:1562 -#, fuzzy -msgid "All Target" -msgstr "Ziel" - -#: src/olympusmn.cpp:1563 -#, fuzzy -msgid "Dynamic Single Target" -msgstr "Dynamische Bereichseinstellung" - -#: src/panasonicmn.cpp:57 src/pentaxmn.cpp:348 src/pentaxmn.cpp:361 -msgid "Very High" -msgstr "Sehr hoch" - -#: src/panasonicmn.cpp:59 -#, fuzzy -msgid "Motion Picture" -msgstr "Bildmodus" - -#: src/panasonicmn.cpp:67 -msgid "Halogen" -msgstr "Halogen" - -#: src/panasonicmn.cpp:79 -msgid "Auto, focus button" -msgstr "Automatisch, Fokusknopf" - -#: src/panasonicmn.cpp:80 src/panasonicmn.cpp:81 -msgid "Auto, continuous" -msgstr "Automatisch, dauerhaft" - -#: src/panasonicmn.cpp:95 -msgid "Tele-macro" -msgstr "Telemakro" - -#: src/panasonicmn.cpp:103 -msgid "Scenery" -msgstr "Szene" - -#: src/panasonicmn.cpp:108 -msgid "Shutter-speed priority" -msgstr "Verschlussgeschwindigkeit-Priorität" - -#: src/panasonicmn.cpp:112 -#, fuzzy -msgid "Movie preview" -msgstr "Nahaufnahme" - -#: src/panasonicmn.cpp:113 -msgid "Panning" -msgstr "Verschieben" - -#: src/panasonicmn.cpp:114 -#, fuzzy -msgid "Simple" -msgstr "Einzel" - -#: src/panasonicmn.cpp:115 -#, fuzzy -msgid "Color effects" -msgstr "Farbeffekt" - -#: src/panasonicmn.cpp:119 -msgid "Night scenery" -msgstr "Nachtszene" - -#: src/panasonicmn.cpp:121 -#, fuzzy -msgid "Baby" -msgstr "durch" - -#: src/panasonicmn.cpp:122 -#, fuzzy -msgid "Soft skin" -msgstr "Weich" - -#: src/panasonicmn.cpp:123 src/pentaxmn.cpp:484 -msgid "Candlelight" -msgstr "Kerzenlicht" - -#: src/panasonicmn.cpp:124 -#, fuzzy -msgid "Starry night" -msgstr "Standard Licht A" - -#: src/panasonicmn.cpp:125 -#, fuzzy -msgid "High sensitivity" -msgstr "ISO-Empfindlichkeit" - -#: src/panasonicmn.cpp:126 -#, fuzzy -msgid "Panorama assist" -msgstr "Panorama" - -#: src/panasonicmn.cpp:129 -msgid "Aerial photo" -msgstr "" - -#: src/panasonicmn.cpp:132 -#, fuzzy -msgid "Intelligent ISO" -msgstr "Intervalllänge" - -#: src/panasonicmn.cpp:133 -#, fuzzy -msgid "High speed continuous shooting" -msgstr "Einstellung des kontinuierlichen Fokus" - -#: src/panasonicmn.cpp:134 -#, fuzzy -msgid "Intelligent auto" -msgstr "Intervalllänge" - -#: src/panasonicmn.cpp:146 -msgid "Warm" -msgstr "Warm" - -#: src/panasonicmn.cpp:147 -msgid "Cool" -msgstr "Kalt" - -#: src/panasonicmn.cpp:155 -msgid "Low/High quality" -msgstr "Niedrige/Hohe Qualität" - -#: src/panasonicmn.cpp:156 -msgid "Infinite" -msgstr "Unendlich" - -#: src/panasonicmn.cpp:164 -#, fuzzy -msgid "Medium low" -msgstr "Mittel 1" - -#: src/panasonicmn.cpp:165 -#, fuzzy -msgid "Medium high" -msgstr "Mittel 1" - -#: src/panasonicmn.cpp:175 -msgid "Low (-1)" -msgstr "" - -#: src/panasonicmn.cpp:176 -#, fuzzy -msgid "High (+1)" -msgstr "Hoch" - -#: src/panasonicmn.cpp:177 -msgid "Lowest (-2)" -msgstr "" - -#: src/panasonicmn.cpp:178 -#, fuzzy -msgid "Highest (+2)" -msgstr "Hoch" - -#: src/panasonicmn.cpp:184 -msgid "10s" -msgstr "10s" - -#: src/panasonicmn.cpp:185 -msgid "2s" -msgstr "2s" - -#: src/panasonicmn.cpp:205 -msgid "EX optics" -msgstr "" - -#: src/panasonicmn.cpp:212 -msgid "Telephoto" -msgstr "" - -#: src/panasonicmn.cpp:219 src/properties.cpp:890 -#, fuzzy -msgid "Home" -msgstr "Rom" - -#: src/panasonicmn.cpp:225 -#, fuzzy -msgid "Standard (color)" -msgstr "Standardformat" - -#: src/panasonicmn.cpp:226 -#, fuzzy -msgid "Dynamic (color)" -msgstr "Dynamischer Bereich" - -#: src/panasonicmn.cpp:227 -#, fuzzy -msgid "Nature (color)" -msgstr "Natürliche Farben" - -#: src/panasonicmn.cpp:228 -#, fuzzy -msgid "Smooth (color)" -msgstr "Glatt" - -#: src/panasonicmn.cpp:229 -#, fuzzy -msgid "Standard (B&W)" -msgstr "Standard (100%)" - -#: src/panasonicmn.cpp:230 -#, fuzzy -msgid "Dynamic (B&W)" -msgstr "Dynamischer Bereich" - -#: src/panasonicmn.cpp:231 -#, fuzzy -msgid "Smooth (B&W)" -msgstr "Glatt" - -#: src/panasonicmn.cpp:245 -msgid "Audio" -msgstr "Audio" - -#: src/panasonicmn.cpp:248 -msgid "White balance adjustment" -msgstr "Weißabgleich-Anpassung" - -#: src/panasonicmn.cpp:249 -msgid "FlashBias" -msgstr "Blitzkontrolle" - -#: src/panasonicmn.cpp:251 src/tags.cpp:190 -msgid "Exif version" -msgstr "Exif-Version" - -#: src/panasonicmn.cpp:253 -msgid "Color Effect" -msgstr "Farbeffekt" - -#: src/panasonicmn.cpp:253 -msgid "Color effect" -msgstr "Farbeffekt" - -#: src/panasonicmn.cpp:254 -msgid "" -"Time in 1/100 s from when the camera was powered on to when the image is " -"written to memory card" -msgstr "" - -#: src/panasonicmn.cpp:255 -msgid "Burst Mode" -msgstr "Burst Mode" - -#: src/panasonicmn.cpp:255 -msgid "Burst mode" -msgstr "Burst Mode" - -#: src/panasonicmn.cpp:258 -msgid "NoiseReduction" -msgstr "Rauschreduktion" - -#: src/panasonicmn.cpp:259 -msgid "Self Timer" -msgstr "Selbstauslöser" - -#: src/panasonicmn.cpp:264 src/panasonicmn.cpp:286 -#, fuzzy -msgid "Baby Age" -msgstr "durch" - -#: src/panasonicmn.cpp:264 src/panasonicmn.cpp:286 -msgid "Baby (or pet) age" -msgstr "" - -#: src/panasonicmn.cpp:265 -#, fuzzy -msgid "Optical Zoom Mode" -msgstr "Spezialmodus" - -#: src/panasonicmn.cpp:265 -#, fuzzy -msgid "Optical zoom mode" -msgstr "Filmmodus" - -#: src/panasonicmn.cpp:266 -#, fuzzy -msgid "Conversion Lens" -msgstr "Versionen" - -#: src/panasonicmn.cpp:266 -#, fuzzy -msgid "Conversion lens" -msgstr "Kernfilter" - -#: src/panasonicmn.cpp:267 -msgid "Travel Day" -msgstr "Reisetag" - -#: src/panasonicmn.cpp:267 -msgid "Travel day" -msgstr "Reisetag" - -#: src/panasonicmn.cpp:269 -#, fuzzy -msgid "World Time Location" -msgstr "Aufnahmeort" - -#: src/panasonicmn.cpp:269 -#, fuzzy -msgid "World time location" -msgstr "Aufnahmeort" - -#: src/panasonicmn.cpp:270 -#, fuzzy -msgid "Program ISO" -msgstr "Programm" - -#: src/panasonicmn.cpp:274 -#, fuzzy -msgid "WB Adjust AB" -msgstr "Sättigungsanpassung" - -#: src/panasonicmn.cpp:274 -msgid "WB adjust AB. Positive is a shift toward blue." -msgstr "" - -#: src/panasonicmn.cpp:275 -#, fuzzy -msgid "WB Adjust GM" -msgstr "Sättigungsanpassung" - -#: src/panasonicmn.cpp:275 -msgid "WBAdjustGM. Positive is a shift toward green." -msgstr "" - -#: src/panasonicmn.cpp:278 -#, fuzzy -msgid "Accessory Type" -msgstr "Linsentyp" - -#: src/panasonicmn.cpp:278 -#, fuzzy -msgid "Accessory type" -msgstr "Linsentyp" - -#: src/panasonicmn.cpp:281 -#, fuzzy -msgid "MakerNote Version" -msgstr "Version der Herstellerbemerkung" - -#: src/panasonicmn.cpp:281 -#, fuzzy -msgid "MakerNote version" -msgstr "Version der Herstellerbemerkung" - -#: src/panasonicmn.cpp:283 src/panasonicmn.cpp:345 -#, fuzzy -msgid "WB Red Level" -msgstr "WB_RGGBLevelsShade" - -#: src/panasonicmn.cpp:283 src/panasonicmn.cpp:345 -#, fuzzy -msgid "WB red level" -msgstr "Schwarzlevel" - -#: src/panasonicmn.cpp:284 src/panasonicmn.cpp:346 -#, fuzzy -msgid "WB Green Level" -msgstr "Schwarzlevel" - -#: src/panasonicmn.cpp:284 src/panasonicmn.cpp:346 -#, fuzzy -msgid "WB green level" -msgstr "Schwarzlevel" - -#: src/panasonicmn.cpp:285 src/panasonicmn.cpp:347 -#, fuzzy -msgid "WB Blue Level" -msgstr "WB_RGGBLevelsShade" - -#: src/panasonicmn.cpp:285 src/panasonicmn.cpp:347 -#, fuzzy -msgid "WB blue level" -msgstr "Schwarzlevel" - -#: src/panasonicmn.cpp:288 -msgid "Unknown PanasonicMakerNote tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Panasonic" - -#: src/panasonicmn.cpp:305 -#, fuzzy -msgid "Spot mode on" -msgstr "Punktmodus" - -#: src/panasonicmn.cpp:306 -msgid "Spot mode off or 3-area (high speed)" -msgstr "" - -#: src/panasonicmn.cpp:307 -#, fuzzy -msgid "Spot focussing" -msgstr "Punktfokus" - -#: src/panasonicmn.cpp:308 -msgid "5-area" -msgstr "" - -#: src/panasonicmn.cpp:309 -msgid "1-area" -msgstr "" - -#: src/panasonicmn.cpp:310 -msgid "1-area (high speed)" -msgstr "" - -#: src/panasonicmn.cpp:311 -msgid "3-area (auto)" -msgstr "" - -#: src/panasonicmn.cpp:312 -msgid "3-area (left)" -msgstr "" - -#: src/panasonicmn.cpp:313 -msgid "3-area (center)" -msgstr "" - -#: src/panasonicmn.cpp:314 -msgid "3-area (right)" -msgstr "" - -#: src/panasonicmn.cpp:326 -msgid " EV" -msgstr " EV" - -#: src/panasonicmn.cpp:335 -#, fuzzy -msgid "Panasonic raw version" -msgstr "Linsen-Firmware Version" - -#: src/panasonicmn.cpp:336 -#, fuzzy -msgid "Sensor Width" -msgstr "Breite des Zuschnitts" - -#: src/panasonicmn.cpp:336 -#, fuzzy -msgid "Sensor width" -msgstr "Breite des Zuschnitts" - -#: src/panasonicmn.cpp:337 -#, fuzzy -msgid "Sensor Height" -msgstr "Sensorenreinigung" - -#: src/panasonicmn.cpp:337 -#, fuzzy -msgid "Sensor height" -msgstr "Sensorenreinigung" - -#: src/panasonicmn.cpp:338 -#, fuzzy -msgid "Sensor Top Border" -msgstr "Sensortemperatur" - -#: src/panasonicmn.cpp:338 -#, fuzzy -msgid "Sensor top border" -msgstr "Sensortemperatur" - -#: src/panasonicmn.cpp:339 -#, fuzzy -msgid "Sensor Left Border" -msgstr "Sensortemperatur" - -#: src/panasonicmn.cpp:339 -#, fuzzy -msgid "Sensor left border" -msgstr "Sensortemperatur" - -#: src/panasonicmn.cpp:342 -msgid "Red balance (found in Digilux 2 RAW images)" -msgstr "" - -#: src/panasonicmn.cpp:349 src/tags.cpp:465 -msgid "Manufacturer" -msgstr "Hersteller" - -#: src/panasonicmn.cpp:349 -#, fuzzy -msgid "The manufacturer of the recording equipment" -msgstr "TIFF-Feld 271, 0x10F. Hersteller der Aufnahmeausrüstung." - -#: src/panasonicmn.cpp:350 src/properties.cpp:518 src/tags.cpp:471 -msgid "Model" -msgstr "Modell" - -#: src/panasonicmn.cpp:350 -#, fuzzy -msgid "The model name or model number of the equipment" -msgstr "TIFF-Feld 272, 0x110. Modellname oder -nummer der Ausrüstung." - -#: src/panasonicmn.cpp:351 src/tags.cpp:477 -msgid "Strip Offsets" -msgstr "Strip Offsets" - -#: src/panasonicmn.cpp:351 -#, fuzzy -msgid "Strip offsets" -msgstr "Strip Offsets" - -#: src/panasonicmn.cpp:352 src/properties.cpp:485 src/tags.cpp:484 -msgid "Orientation" -msgstr "Orientierung" - -#: src/panasonicmn.cpp:353 -#, fuzzy -msgid "Rows Per Strip" -msgstr "Zeilen pro Strip" - -#: src/panasonicmn.cpp:353 -#, fuzzy -msgid "The number of rows per strip" -msgstr "Die Anzahl der Takte." - -#: src/panasonicmn.cpp:354 -#, fuzzy -msgid "Strip Byte Counts" -msgstr "Strip Byte Anzahl" - -#: src/panasonicmn.cpp:354 -#, fuzzy -msgid "Strip byte counts" -msgstr "Strip Byte Anzahl" - -#: src/panasonicmn.cpp:355 -#, fuzzy -msgid "Raw Data Offset" -msgstr "Eindeutige ID der Rohdaten" - -#: src/panasonicmn.cpp:355 -#, fuzzy -msgid "Raw data offset" -msgstr "Header, offset" - -#: src/panasonicmn.cpp:356 src/tags.cpp:790 -msgid "Exif IFD Pointer" -msgstr "Exif IFD Zeiger" - -#: src/panasonicmn.cpp:356 -msgid "A pointer to the Exif IFD" -msgstr "" - -#: src/panasonicmn.cpp:357 src/tags.cpp:801 -msgid "GPS Info IFD Pointer" -msgstr "GPS Info IFD Zeiger" - -#: src/panasonicmn.cpp:357 -msgid "A pointer to the GPS Info IFD" -msgstr "" - -#: src/panasonicmn.cpp:359 -#, fuzzy -msgid "Unknown PanasonicRaw tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Panasonic" - -#: src/pentaxmn.cpp:57 -msgid "Night-Scene" -msgstr "Nachtszene" - -#: src/pentaxmn.cpp:63 -msgid "Optio 330/430" -msgstr "Optio 330/430" - -#: src/pentaxmn.cpp:64 -msgid "Optio 230" -msgstr "Optio 230" - -#: src/pentaxmn.cpp:65 -msgid "Optio 330GS" -msgstr "Optio 330GS" - -#: src/pentaxmn.cpp:66 -msgid "Optio 450/550" -msgstr "Optio 450/550" - -#: src/pentaxmn.cpp:67 -msgid "Optio S" -msgstr "Optio S" - -#: src/pentaxmn.cpp:68 -msgid "*ist D" -msgstr "*ist D" - -#: src/pentaxmn.cpp:69 -msgid "Optio 33L" -msgstr "Optio 33L" - -#: src/pentaxmn.cpp:70 -msgid "Optio 33LF" -msgstr "Optio 33LF" - -#: src/pentaxmn.cpp:71 -msgid "Optio 33WR/43WR/555" -msgstr "Optio 33WR/43WR/555" - -#: src/pentaxmn.cpp:72 -msgid "Optio S4" -msgstr "Optio S4" - -#: src/pentaxmn.cpp:73 -msgid "Optio MX" -msgstr "Optio MX" - -#: src/pentaxmn.cpp:74 -msgid "Optio S40" -msgstr "Optio S40" - -#: src/pentaxmn.cpp:75 -msgid "Optio S4i" -msgstr "Optio S4i" - -#: src/pentaxmn.cpp:76 -msgid "Optio 30" -msgstr "Optio 30" - -#: src/pentaxmn.cpp:77 -msgid "Optio S30" -msgstr "Optio S30" - -#: src/pentaxmn.cpp:78 -msgid "Optio 750Z" -msgstr "Optio 750Z" - -#: src/pentaxmn.cpp:79 -msgid "Optio SV" -msgstr "Optio SV" - -#: src/pentaxmn.cpp:80 -msgid "Optio SVi" -msgstr "Optio SVi" - -#: src/pentaxmn.cpp:81 -msgid "Optio X" -msgstr "Optio X" - -#: src/pentaxmn.cpp:82 -msgid "Optio S5i" -msgstr "Optio S5i" - -#: src/pentaxmn.cpp:83 -msgid "Optio S50" -msgstr "Optio S50" - -#: src/pentaxmn.cpp:84 -msgid "*ist DS" -msgstr "*ist DS" - -#: src/pentaxmn.cpp:85 -msgid "Optio MX4" -msgstr "Optio MX4" - -#: src/pentaxmn.cpp:86 -msgid "Optio S5n" -msgstr "Optio S5n" - -#: src/pentaxmn.cpp:87 -msgid "Optio WP" -msgstr "Optio WP" - -#: src/pentaxmn.cpp:88 -msgid "Optio S55" -msgstr "Optio S55" - -#: src/pentaxmn.cpp:89 -msgid "Optio S5z" -msgstr "Optio S5z" - -#: src/pentaxmn.cpp:90 -msgid "*ist DL" -msgstr "*ist DL" - -#: src/pentaxmn.cpp:91 -msgid "Optio S60" -msgstr "Optio S60" - -#: src/pentaxmn.cpp:92 -msgid "Optio S45" -msgstr "Optio S45" - -#: src/pentaxmn.cpp:93 -msgid "Optio S6" -msgstr "Optio S6" - -#: src/pentaxmn.cpp:94 -msgid "Optio WPi" -msgstr "Optio WPi" - -#: src/pentaxmn.cpp:95 -msgid "BenQ DC X600" -msgstr "BenQ DC X600" - -#: src/pentaxmn.cpp:96 -msgid "*ist DS2" -msgstr "*ist DS2" - -#: src/pentaxmn.cpp:97 -msgid "Samsung GX-1S" -msgstr "Samsung GX-1S" - -#: src/pentaxmn.cpp:98 -msgid "Optio A10" -msgstr "Optio A10" - -#: src/pentaxmn.cpp:99 -msgid "*ist DL2" -msgstr "*ist DL2" - -#: src/pentaxmn.cpp:100 -msgid "Samsung GX-1L" -msgstr "Samsung GX-1L" - -#: src/pentaxmn.cpp:101 -msgid "K100D" -msgstr "K100D" - -#: src/pentaxmn.cpp:102 -msgid "K110D" -msgstr "K110D" - -#: src/pentaxmn.cpp:103 -msgid "K100D Super" -msgstr "K100D Super" - -#: src/pentaxmn.cpp:104 -#, fuzzy -msgid "Optio T10/T20" -msgstr "Optio T10" - -#: src/pentaxmn.cpp:105 -msgid "Optio W10" -msgstr "Optio W10" - -#: src/pentaxmn.cpp:106 -msgid "Optio M10" -msgstr "Optio M10" - -#: src/pentaxmn.cpp:107 -msgid "K10D" -msgstr "K10D" - -#: src/pentaxmn.cpp:108 -msgid "Samsung GX10" -msgstr "Samsung GX10" - -#: src/pentaxmn.cpp:109 -msgid "Optio S7" -msgstr "Optio S7" - -#: src/pentaxmn.cpp:110 -#, fuzzy -msgid "Optio L20" -msgstr "Optio 230" - -#: src/pentaxmn.cpp:111 -msgid "Optio M20" -msgstr "Optio M20" - -#: src/pentaxmn.cpp:112 -msgid "Optio W20" -msgstr "Optio W20" - -#: src/pentaxmn.cpp:113 -msgid "Optio A20" -msgstr "Optio A20" - -#: src/pentaxmn.cpp:114 -msgid "Optio M30" -msgstr "Optio M30" - -#: src/pentaxmn.cpp:115 -msgid "Optio E30" -msgstr "Optio E30" - -#: src/pentaxmn.cpp:116 -#, fuzzy -msgid "Optio E35" -msgstr "Optio E30" - -#: src/pentaxmn.cpp:117 -msgid "Optio T30" -msgstr "Optio T30" - -#: src/pentaxmn.cpp:118 -msgid "Optio W30" -msgstr "Optio W30" - -#: src/pentaxmn.cpp:119 -msgid "Optio A30" -msgstr "Optio A30" - -#: src/pentaxmn.cpp:120 -msgid "Optio E40" -msgstr "Optio E40" - -#: src/pentaxmn.cpp:121 -msgid "Optio M40" -msgstr "Optio M40" - -#: src/pentaxmn.cpp:122 -msgid "Optio Z10" -msgstr "Optio Z10" - -#: src/pentaxmn.cpp:123 -msgid "K20D" -msgstr "K20D" - -#: src/pentaxmn.cpp:124 -#, fuzzy -msgid "Samsung GX20" -msgstr "Samsung GX10" - -#: src/pentaxmn.cpp:125 -msgid "Optio S10" -msgstr "Optio S10" - -#: src/pentaxmn.cpp:126 -msgid "Optio A40" -msgstr "Optio A40" - -#: src/pentaxmn.cpp:127 -msgid "Optio V10" -msgstr "Optio V10" - -#: src/pentaxmn.cpp:128 -msgid "K200D" -msgstr "K200D" - -#: src/pentaxmn.cpp:129 -#, fuzzy -msgid "Optio S12" -msgstr "Optio S10" - -#: src/pentaxmn.cpp:130 -msgid "Optio E50" -msgstr "Optio E50" - -#: src/pentaxmn.cpp:131 -msgid "Optio M50" -msgstr "Optio M50" - -#: src/pentaxmn.cpp:132 -#, fuzzy -msgid "Optio V20" -msgstr "Optio 230" - -#: src/pentaxmn.cpp:133 -#, fuzzy -msgid "Optio W60" -msgstr "Optio S60" - -#: src/pentaxmn.cpp:134 -#, fuzzy -msgid "Optio M60" -msgstr "Optio S60" - -#: src/pentaxmn.cpp:135 -#, fuzzy -msgid "Optio E60" -msgstr "Optio S60" - -#: src/pentaxmn.cpp:136 -#, fuzzy -msgid "K2000" -msgstr "K200D" - -#: src/pentaxmn.cpp:137 -msgid "K-m" -msgstr "" - -#: src/pentaxmn.cpp:138 -#, fuzzy -msgid "Optio P70" -msgstr "Optio 750Z" - -#: src/pentaxmn.cpp:139 -#, fuzzy -msgid "Optio E70" -msgstr "Optio E30" - -#: src/pentaxmn.cpp:140 -msgid "X70" -msgstr "" - -#: src/pentaxmn.cpp:141 -msgid "K-7" -msgstr "" - -#: src/pentaxmn.cpp:142 -#, fuzzy -msgid "Optio W80" -msgstr "Optio W10" - -#: src/pentaxmn.cpp:143 -#, fuzzy -msgid "Optio P80" -msgstr "Optio 30" - -#: src/pentaxmn.cpp:144 -#, fuzzy -msgid "Optio WS80" -msgstr "Optio S40" - -#: src/pentaxmn.cpp:145 -msgid "K-x" -msgstr "" - -#: src/pentaxmn.cpp:146 -#, fuzzy -msgid "645D" -msgstr "64" - -#: src/pentaxmn.cpp:147 -#, fuzzy -msgid "Optio I-10" -msgstr "Optio A10" - -#: src/pentaxmn.cpp:152 -msgid "Good" -msgstr "Gut" - -#: src/pentaxmn.cpp:153 -msgid "Better" -msgstr "Besser" - -#: src/pentaxmn.cpp:154 -msgid "Best" -msgstr "Am Besten" - -#: src/pentaxmn.cpp:155 -msgid "TIFF" -msgstr "TIFF" - -#: src/pentaxmn.cpp:157 -msgid "Premium" -msgstr "Premium" - -#: src/pentaxmn.cpp:162 -msgid "640x480" -msgstr "640x480" - -#: src/pentaxmn.cpp:164 -msgid "1024x768" -msgstr "1024x768" - -#: src/pentaxmn.cpp:165 -msgid "1280x960" -msgstr "1280x960" - -#: src/pentaxmn.cpp:166 -msgid "1600x1200" -msgstr "1600x1200" - -#: src/pentaxmn.cpp:167 -msgid "2048x1536" -msgstr "2048x1536" - -#: src/pentaxmn.cpp:168 -msgid "2560x1920 or 2304x1728" -msgstr "2560x1920 oder 2304x1728" - -#: src/pentaxmn.cpp:169 -msgid "3072x2304" -msgstr "3072x2304" - -#: src/pentaxmn.cpp:170 -msgid "3264x2448" -msgstr "3264x2448" - -#: src/pentaxmn.cpp:171 -msgid "320x240" -msgstr "320x240" - -#: src/pentaxmn.cpp:172 -msgid "2288x1712" -msgstr "2288x1712" - -#: src/pentaxmn.cpp:173 -msgid "2592x1944" -msgstr "2592x1944" - -#: src/pentaxmn.cpp:174 -msgid "2304x1728 or 2592x1944" -msgstr "2304x1728 oder 2592x1944" - -#: src/pentaxmn.cpp:175 -msgid "3056x2296" -msgstr "3056x2296" - -#: src/pentaxmn.cpp:176 -msgid "2816x2212 or 2816x2112" -msgstr "2816x2212 oder 2816x2112" - -#: src/pentaxmn.cpp:177 -msgid "3648x2736" -msgstr "3648x2736" - -#: src/pentaxmn.cpp:182 -msgid "Auto, Did not fire" -msgstr "Blitz nicht ausgelöst, automatisch" - -#: src/pentaxmn.cpp:184 -msgid "Auto, Did not fire, Red-eye reduction" -msgstr "Blitz nicht ausgelöst, automatisch, Rote-Augen-Reduktion" - -#: src/pentaxmn.cpp:185 -msgid "Auto, Fired" -msgstr "Blitz ausgelöst, automatisch" - -#: src/pentaxmn.cpp:187 -msgid "Auto, Fired, Red-eye reduction" -msgstr "Blitz ausgelöst, automatisch, Rote-Augen-Reduktion" - -#: src/pentaxmn.cpp:188 -msgid "On, Red-eye reduction" -msgstr "Ein, Rote Augen reduzieren" - -#: src/pentaxmn.cpp:189 -msgid "On, Wireless" -msgstr "Ein, Drahtlos" - -#: src/pentaxmn.cpp:190 -msgid "On, Soft" -msgstr "Ein, weich" - -#: src/pentaxmn.cpp:191 -msgid "On, Slow-sync" -msgstr "Ein, langsame Synchronisation" - -#: src/pentaxmn.cpp:192 -msgid "On, Slow-sync, Red-eye reduction" -msgstr "Ein, langsame Synchronisation, Rote-Augen-Reduktion" - -#: src/pentaxmn.cpp:193 -msgid "On, Trailing-curtain Sync" -msgstr "" - -#: src/pentaxmn.cpp:203 -msgid "Pan Focus" -msgstr "Schwenk-Fokus" - -#: src/pentaxmn.cpp:204 -msgid "AF-S" -msgstr "Autofokus-S" - -#: src/pentaxmn.cpp:205 -msgid "AF-C" -msgstr "Autofokus-C" - -#: src/pentaxmn.cpp:206 -#, fuzzy -msgid "AF-A" -msgstr "Autofokus-S" - -#: src/pentaxmn.cpp:212 -msgid "Fixed Center" -msgstr "Fixierte Mitte" - -#: src/pentaxmn.cpp:213 -#, fuzzy -msgid "Automatic Tracking AF" -msgstr "Automatischer Autofokus" - -#: src/pentaxmn.cpp:214 -msgid "Face Recognition AF" -msgstr "" - -#: src/pentaxmn.cpp:231 -#, fuzzy -msgid "Fixed Center or multiple" -msgstr "Fixierte Mitte" - -#: src/pentaxmn.cpp:233 -#, fuzzy -msgid "Top-center" -msgstr "Zentriert" - -#: src/pentaxmn.cpp:239 -#, fuzzy -msgid "Bottom-center" -msgstr "Unten - links" - -#: src/pentaxmn.cpp:245 src/pentaxmn.cpp:267 src/pentaxmn.cpp:275 -msgid "50" -msgstr "50" - -#: src/pentaxmn.cpp:246 -msgid "64" -msgstr "64" - -#: src/pentaxmn.cpp:247 -msgid "80" -msgstr "80" - -#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:268 src/pentaxmn.cpp:277 -msgid "100" -msgstr "100" - -#: src/pentaxmn.cpp:249 -msgid "125" -msgstr "125" - -#: src/pentaxmn.cpp:250 -msgid "160" -msgstr "160" - -#: src/pentaxmn.cpp:251 src/pentaxmn.cpp:269 src/pentaxmn.cpp:270 -#: src/pentaxmn.cpp:279 -msgid "200" -msgstr "200" - -#: src/pentaxmn.cpp:252 -msgid "250" -msgstr "250" - -#: src/pentaxmn.cpp:253 -msgid "320" -msgstr "320" - -#: src/pentaxmn.cpp:254 src/pentaxmn.cpp:271 src/pentaxmn.cpp:281 -msgid "400" -msgstr "400" - -#: src/pentaxmn.cpp:255 -msgid "500" -msgstr "500" - -#: src/pentaxmn.cpp:256 -msgid "640" -msgstr "640" - -#: src/pentaxmn.cpp:257 src/pentaxmn.cpp:272 src/pentaxmn.cpp:283 -msgid "800" -msgstr "800" - -#: src/pentaxmn.cpp:258 -msgid "1000" -msgstr "1000" - -#: src/pentaxmn.cpp:259 -msgid "1250" -msgstr "1250" - -#: src/pentaxmn.cpp:260 src/pentaxmn.cpp:273 src/pentaxmn.cpp:285 -msgid "1600" -msgstr "1600" - -#: src/pentaxmn.cpp:261 -#, fuzzy -msgid "2000" -msgstr "200" - -#: src/pentaxmn.cpp:262 -#, fuzzy -msgid "2500" -msgstr "200" - -#: src/pentaxmn.cpp:263 src/pentaxmn.cpp:274 src/pentaxmn.cpp:287 -msgid "3200" -msgstr "3200" - -#: src/pentaxmn.cpp:264 -#, fuzzy -msgid "4000" -msgstr "400" - -#: src/pentaxmn.cpp:265 -#, fuzzy -msgid "5000" -msgstr "500" - -#: src/pentaxmn.cpp:266 -#, fuzzy -msgid "6400" -msgstr "400" - -#: src/pentaxmn.cpp:276 -#, fuzzy -msgid "70" -msgstr "50" - -#: src/pentaxmn.cpp:278 -#, fuzzy -msgid "140" -msgstr "10s" - -#: src/pentaxmn.cpp:280 -#, fuzzy -msgid "280" -msgstr "80" - -#: src/pentaxmn.cpp:282 -#, fuzzy -msgid "560" -msgstr "50" - -#: src/pentaxmn.cpp:284 -#, fuzzy -msgid "1100" -msgstr "100" - -#: src/pentaxmn.cpp:286 -#, fuzzy -msgid "2200" -msgstr "200" - -#: src/pentaxmn.cpp:304 -msgid "Multi Segment" -msgstr "Mehr-Segment" - -#: src/pentaxmn.cpp:305 -msgid "Center Weighted" -msgstr "Zentriert gewichtet" - -#: src/pentaxmn.cpp:317 -msgid "DaylightFluorescent" -msgstr "Tageslicht fluoreszent" - -#: src/pentaxmn.cpp:318 -msgid "DaywhiteFluorescent" -msgstr "Tagesweiß fluoreszent" - -#: src/pentaxmn.cpp:319 -msgid "WhiteFluorescent" -msgstr "Weiß fluoreszent" - -#: src/pentaxmn.cpp:324 -msgid "User Selected" -msgstr "Vom Benutzer ausgewählt" - -#: src/pentaxmn.cpp:329 -msgid "Auto (Daylight)" -msgstr "Automatisch (Tageslicht)" - -#: src/pentaxmn.cpp:330 -msgid "Auto (Shade)" -msgstr "Automatisch (Schatten)" - -#: src/pentaxmn.cpp:331 -msgid "Auto (Flash)" -msgstr "Automatisch (Blitz)" - -#: src/pentaxmn.cpp:332 -msgid "Auto (Tungsten)" -msgstr "Automatisch (Wolframlicht)" - -#: src/pentaxmn.cpp:333 -msgid "Auto (DaywhiteFluorescent)" -msgstr "Automatisch (Tageslicht fluoreszent)" - -#: src/pentaxmn.cpp:334 -msgid "Auto (WhiteFluorescent)" -msgstr "Automatisch (Leuchstoffröhre)" - -#: src/pentaxmn.cpp:335 -msgid "Auto (Cloudy)" -msgstr "Automatisch (Wolkiges Wetter)" - -#: src/pentaxmn.cpp:337 -msgid "Preset (Fireworks?)" -msgstr "Voreingestellt (Feuerwerk?)" - -#: src/pentaxmn.cpp:345 src/pentaxmn.cpp:358 -msgid "Med Low" -msgstr "Mitte bis niedrig" - -#: src/pentaxmn.cpp:346 src/pentaxmn.cpp:359 -msgid "Med High" -msgstr "Mitte bis hoch" - -#: src/pentaxmn.cpp:369 -msgid "Med Soft" -msgstr "Mitte bis weich" - -#: src/pentaxmn.cpp:370 -msgid "Med Hard" -msgstr "Mitte bis hart" - -#: src/pentaxmn.cpp:371 -msgid "Very Soft" -msgstr "Sehr weich" - -#: src/pentaxmn.cpp:372 -msgid "Very Hard" -msgstr "Sehr hart" - -#: src/pentaxmn.cpp:377 src/pentaxmn.cpp:960 -msgid "Home town" -msgstr "Heimatstadt" - -#: src/pentaxmn.cpp:383 -msgid "Pago Pago" -msgstr "Pago Pago" - -#: src/pentaxmn.cpp:384 -msgid "Honolulu" -msgstr "Honolulu" - -#: src/pentaxmn.cpp:385 -msgid "Anchorage" -msgstr "Anchorage" - -#: src/pentaxmn.cpp:386 -msgid "Vancouver" -msgstr "Vancouver" - -#: src/pentaxmn.cpp:387 -msgid "San Fransisco" -msgstr "San Fransisco" - -#: src/pentaxmn.cpp:388 -msgid "Los Angeles" -msgstr "Los Angeles" - -#: src/pentaxmn.cpp:389 -msgid "Calgary" -msgstr "Calgary" - -#: src/pentaxmn.cpp:390 -msgid "Denver" -msgstr "Denver" - -#: src/pentaxmn.cpp:391 -msgid "Mexico City" -msgstr "Mexico Stadt" - -#: src/pentaxmn.cpp:392 -msgid "Chicago" -msgstr "Chicago" - -#: src/pentaxmn.cpp:393 -msgid "Miami" -msgstr "Miami" - -#: src/pentaxmn.cpp:394 -msgid "Toronto" -msgstr "Toronto" - -#: src/pentaxmn.cpp:395 -msgid "New York" -msgstr "New York" - -#: src/pentaxmn.cpp:396 -msgid "Santiago" -msgstr "Santiago" - -#: src/pentaxmn.cpp:397 -msgid "Caracus" -msgstr "Caracas" - -#: src/pentaxmn.cpp:398 -msgid "Halifax" -msgstr "Halifax" - -#: src/pentaxmn.cpp:399 -msgid "Buenos Aires" -msgstr "Buenos Aires" - -#: src/pentaxmn.cpp:400 -msgid "Sao Paulo" -msgstr "Sao Paulo" - -#: src/pentaxmn.cpp:401 -msgid "Rio de Janeiro" -msgstr "Rio de Janeiro" - -#: src/pentaxmn.cpp:402 -msgid "Madrid" -msgstr "Madrid" - -#: src/pentaxmn.cpp:403 -msgid "London" -msgstr "London" - -#: src/pentaxmn.cpp:404 -msgid "Paris" -msgstr "Paris" - -#: src/pentaxmn.cpp:405 -msgid "Milan" -msgstr "Mailand" - -#: src/pentaxmn.cpp:406 -msgid "Rome" -msgstr "Rom" - -#: src/pentaxmn.cpp:407 -msgid "Berlin" -msgstr "Berlin" - -#: src/pentaxmn.cpp:408 -msgid "Johannesburg" -msgstr "Johannesburg" - -#: src/pentaxmn.cpp:409 -msgid "Istanbul" -msgstr "Istanbul" - -#: src/pentaxmn.cpp:410 -msgid "Cairo" -msgstr "Kairo" - -#: src/pentaxmn.cpp:411 -msgid "Jerusalem" -msgstr "Jerusalem" - -#: src/pentaxmn.cpp:412 -msgid "Moscow" -msgstr "Moskau" - -#: src/pentaxmn.cpp:413 -msgid "Jeddah" -msgstr "Dschidda" - -#: src/pentaxmn.cpp:414 -msgid "Tehran" -msgstr "Tehran" - -#: src/pentaxmn.cpp:415 -msgid "Dubai" -msgstr "Dubai" - -#: src/pentaxmn.cpp:416 -msgid "Karachi" -msgstr "Karatschi" - -#: src/pentaxmn.cpp:417 -msgid "Kabul" -msgstr "Kabul" - -#: src/pentaxmn.cpp:418 -msgid "Male" -msgstr "Male" - -#: src/pentaxmn.cpp:419 -msgid "Delhi" -msgstr "Delhi" - -#: src/pentaxmn.cpp:420 -msgid "Colombo" -msgstr "Colombo" - -#: src/pentaxmn.cpp:421 -msgid "Kathmandu" -msgstr "Kathmandu" - -#: src/pentaxmn.cpp:422 -msgid "Dacca" -msgstr "Dacca" - -#: src/pentaxmn.cpp:423 -msgid "Yangon" -msgstr "Yangon" - -#: src/pentaxmn.cpp:424 -msgid "Bangkok" -msgstr "Bangkok" - -#: src/pentaxmn.cpp:425 -msgid "Kuala Lumpur" -msgstr "Kuala Lumpur" - -#: src/pentaxmn.cpp:426 -msgid "Vientiane" -msgstr "Vientiane" - -#: src/pentaxmn.cpp:427 -msgid "Singapore" -msgstr "Singapur" - -#: src/pentaxmn.cpp:428 -msgid "Phnom Penh" -msgstr "Phnom Penh" - -#: src/pentaxmn.cpp:429 -msgid "Ho Chi Minh" -msgstr "Ho Chi Minh" - -#: src/pentaxmn.cpp:430 -msgid "Jakarta" -msgstr "Jakarta" - -#: src/pentaxmn.cpp:431 -msgid "Hong Kong" -msgstr "Hongkong" - -#: src/pentaxmn.cpp:432 -msgid "Perth" -msgstr "Perth" - -#: src/pentaxmn.cpp:433 -msgid "Beijing" -msgstr "Peking" - -#: src/pentaxmn.cpp:434 -msgid "Shanghai" -msgstr "Shanghai" - -#: src/pentaxmn.cpp:435 -msgid "Manila" -msgstr "Manila" - -#: src/pentaxmn.cpp:436 -msgid "Taipei" -msgstr "Taipei" - -#: src/pentaxmn.cpp:437 -msgid "Seoul" -msgstr "Seoul" - -#: src/pentaxmn.cpp:438 -msgid "Adelaide" -msgstr "Adelaide" - -#: src/pentaxmn.cpp:439 -msgid "Tokyo" -msgstr "Tokio" - -#: src/pentaxmn.cpp:440 -msgid "Guam" -msgstr "Guam" - -#: src/pentaxmn.cpp:441 -msgid "Sydney" -msgstr "Sydney" - -#: src/pentaxmn.cpp:442 -msgid "Noumea" -msgstr "Numea" - -#: src/pentaxmn.cpp:443 -msgid "Wellington" -msgstr "Wellington" - -#: src/pentaxmn.cpp:444 -msgid "Auckland" -msgstr "Auckland" - -#: src/pentaxmn.cpp:445 -msgid "Lima" -msgstr "Lima" - -#: src/pentaxmn.cpp:446 -msgid "Dakar" -msgstr "Dakar" - -#: src/pentaxmn.cpp:447 -msgid "Algiers" -msgstr "Algier" - -#: src/pentaxmn.cpp:448 -msgid "Helsinki" -msgstr "Helsinki" - -#: src/pentaxmn.cpp:449 -msgid "Athens" -msgstr "Athen" - -#: src/pentaxmn.cpp:450 -msgid "Nairobi" -msgstr "Nairobi" - -#: src/pentaxmn.cpp:451 -msgid "Amsterdam" -msgstr "Amsterdam" - -#: src/pentaxmn.cpp:452 -msgid "Stockholm" -msgstr "Stockholm" - -#: src/pentaxmn.cpp:453 -msgid "Lisbon" -msgstr "Lisabon" - -#: src/pentaxmn.cpp:454 -#, fuzzy -msgid "Copenhagen" -msgstr "Abdeckung" - -#: src/pentaxmn.cpp:459 -msgid "Unprocessed" -msgstr "Unverarbeitet" - -#: src/pentaxmn.cpp:460 -msgid "Digital Filter" -msgstr "Digitaler Filter" - -#: src/pentaxmn.cpp:461 -msgid "Cropped" -msgstr "Zugeschnitten" - -#: src/pentaxmn.cpp:463 -msgid "Frame Synthesis?" -msgstr "" - -#: src/pentaxmn.cpp:469 src/pentaxmn.cpp:506 -msgid "MTF Program" -msgstr "MTF Programm" - -#: src/pentaxmn.cpp:475 -msgid "Night Scene Portrait" -msgstr "Nachtportrait" - -#: src/pentaxmn.cpp:476 -msgid "No Flash" -msgstr "Kein Blitz" - -#: src/pentaxmn.cpp:479 -msgid "Surf & Snow" -msgstr "Surfen & Schnee" - -#: src/pentaxmn.cpp:482 -msgid "Kids" -msgstr "Kinder" - -#: src/pentaxmn.cpp:487 -#, fuzzy -msgid "Stage Lighting" -msgstr "Bildhöhe" - -#: src/pentaxmn.cpp:488 -#, fuzzy -msgid "Night Snap" -msgstr "Nachtaufnahme" - -#: src/pentaxmn.cpp:490 -msgid "Auto PICT (Standard)" -msgstr "Auto PICT (Standard)" - -#: src/pentaxmn.cpp:491 -msgid "Auto PICT (Portrait)" -msgstr "Auto PICT (Portrait)" - -#: src/pentaxmn.cpp:492 -msgid "Auto PICT (Landscape)" -msgstr "Auto PICT (Landschaft)" - -#: src/pentaxmn.cpp:493 -msgid "Auto PICT (Macro)" -msgstr "Auto PICT (Makro)" - -#: src/pentaxmn.cpp:494 -msgid "Auto PICT (Sport)" -msgstr "Auto PICT (Sport)" - -#: src/pentaxmn.cpp:497 src/pentaxmn.cpp:507 -msgid "Green Mode" -msgstr "Grüner Modus" - -#: src/pentaxmn.cpp:498 src/pentaxmn.cpp:508 -msgid "Shutter Speed Priority" -msgstr "Verschlussgeschwindigkeit-Priorität" - -#: src/pentaxmn.cpp:499 src/pentaxmn.cpp:509 -msgid "Aperture Priority" -msgstr "Blendenpriorität" - -#: src/pentaxmn.cpp:501 src/pentaxmn.cpp:513 -msgid "Bulb" -msgstr "Glühbirne" - -#: src/pentaxmn.cpp:504 -msgid "Hi-speed Program" -msgstr "Hi-Speed Programm" - -#: src/pentaxmn.cpp:505 -msgid "DOF Program" -msgstr "DOF Programm" - -#: src/pentaxmn.cpp:510 -#, fuzzy -msgid "Program Tv Shift" -msgstr "Programmwechsel" - -#: src/pentaxmn.cpp:511 -#, fuzzy -msgid "Program Av Shift" -msgstr "Programmwechsel" - -#: src/pentaxmn.cpp:514 -#, fuzzy -msgid "Aperture Priority (Off-Auto-Aperture)" -msgstr "Blendenpriorität (Av)" - -#: src/pentaxmn.cpp:515 -msgid "Manual (Off-Auto-Aperture)" -msgstr "" - -#: src/pentaxmn.cpp:516 -msgid "Bulb (Off-Auto-Aperture)" -msgstr "" - -#: src/pentaxmn.cpp:518 -msgid "Shutter Priority" -msgstr "Verschlußpriorität" - -#: src/pentaxmn.cpp:519 -#, fuzzy -msgid "Shutter & Aperture Priority AE" -msgstr "Verschlussgeschwindigkeit-Priorität" - -#: src/pentaxmn.cpp:520 -#, fuzzy -msgid "Shutter & Aperture Priority AE (1)" -msgstr "Verschlussgeschwindigkeit-Priorität" - -#: src/pentaxmn.cpp:521 -#, fuzzy -msgid "Sensitivity Priority AE" -msgstr "Empfindlichkeit justieren" - -#: src/pentaxmn.cpp:522 -msgid "Sensitivity Priority AE (1)" -msgstr "" - -#: src/pentaxmn.cpp:523 -msgid "Flash X-Sync Speed AE" -msgstr "" - -#: src/pentaxmn.cpp:524 -msgid "Flash X-Sync Speed AE (1)" -msgstr "" - -#: src/pentaxmn.cpp:527 -msgid "Video (30 fps)" -msgstr "" - -#: src/pentaxmn.cpp:528 -msgid "Video (24 fps)" -msgstr "" - -#: src/pentaxmn.cpp:535 -msgid "Continuous (Hi)" -msgstr "Kontinuierlich (Hi)" - -#: src/pentaxmn.cpp:536 src/sonymn.cpp:223 -msgid "Burst" -msgstr "Bersten" - -#: src/pentaxmn.cpp:538 -msgid "Self-timer (12 sec)" -msgstr "Selbstauslöser (12 Sek.)" - -#: src/pentaxmn.cpp:539 -msgid "Self-timer (2 sec)" -msgstr "Selbstauslöser (2 Sek.)" - -#: src/pentaxmn.cpp:540 -msgid "Remote Control (3 sec)" -msgstr "Fernbedienung (3 Sec)" - -#: src/pentaxmn.cpp:541 -msgid "Remote Control" -msgstr "Fernbedienung" - -#: src/pentaxmn.cpp:543 src/properties.cpp:883 -#, fuzzy -msgid "Video" -msgstr "Weit" - -#: src/pentaxmn.cpp:554 -msgid "M-42 or No Lens" -msgstr "M-42 oder keine Linsen" - -#: src/pentaxmn.cpp:555 -msgid "K,M Lens" -msgstr "K,M Linsen" - -#: src/pentaxmn.cpp:556 -msgid "A Series Lens" -msgstr "A-Serien Linsen" - -#: src/pentaxmn.cpp:703 -msgid "Bright" -msgstr "Helligkeit" - -#: src/pentaxmn.cpp:706 -msgid "Vibrant" -msgstr "Dynamisch" - -#: src/pentaxmn.cpp:708 -msgid "Reversal film" -msgstr "" - -#: src/pentaxmn.cpp:720 -msgid "Weakest" -msgstr "Schwächste" - -#: src/pentaxmn.cpp:721 -msgid "Weak" -msgstr "Schwach" - -#: src/pentaxmn.cpp:722 -msgid "Strong" -msgstr "Stark" - -#: src/pentaxmn.cpp:832 -msgid "No extended bracketing" -msgstr "Keine erweiterte Erfassung" - -#: src/pentaxmn.cpp:838 -msgid "WB-BA" -msgstr "WB-BA" - -#: src/pentaxmn.cpp:841 -msgid "WB-GM" -msgstr "WB-GM" - -#: src/pentaxmn.cpp:853 -msgid "Unknown " -msgstr "Unbekannt" - -#: src/pentaxmn.cpp:866 -msgid "Pentax Makernote version" -msgstr "Version der Pentax-Herstellerbemerkung" - -#: src/pentaxmn.cpp:869 -msgid "Camera shooting mode" -msgstr "Kamera-Aufnahmemodus" - -#: src/pentaxmn.cpp:871 src/pentaxmn.cpp:872 -msgid "Resolution of a preview image" -msgstr "Auflösung des Vorschaubildes" - -#: src/pentaxmn.cpp:874 -msgid "Length of a preview image" -msgstr "Länge des Vorschaubildes" - -#: src/pentaxmn.cpp:875 -#, fuzzy -msgid "Size of an IFD containing a preview image" -msgstr "Größe des Vorschaubildes" - -#: src/pentaxmn.cpp:880 -msgid "Model identification" -msgstr "Modellidentifikation" - -#: src/pentaxmn.cpp:881 -msgid "Pentax model idenfication" -msgstr "Pentax-Modellidentifikation" - -#: src/pentaxmn.cpp:883 src/pentaxmn.cpp:884 src/properties.cpp:150 -msgid "Date" -msgstr "Datum" - -#: src/pentaxmn.cpp:886 src/pentaxmn.cpp:887 -msgid "Time" -msgstr "Zeit" - -#: src/pentaxmn.cpp:890 -msgid "Image quality settings" -msgstr "Bildqualitätseinstellungen" - -#: src/pentaxmn.cpp:893 -msgid "Image size settings" -msgstr "Bildgröße-Einstellungen" - -#: src/pentaxmn.cpp:897 -msgid "Flash mode settings" -msgstr "Blitzmodus-Einstellungen" - -#: src/pentaxmn.cpp:900 -msgid "Focus mode settings" -msgstr "Fokusmodus-Einstellungen" - -#: src/pentaxmn.cpp:903 -msgid "Selected AF point" -msgstr "Ausgewählter Autofokus-Punkt" - -#: src/pentaxmn.cpp:905 src/pentaxmn.cpp:906 -#, fuzzy -msgid "AF point in focus" -msgstr "Benutzte Autofokus-Punkte" - -#: src/pentaxmn.cpp:912 src/pentaxmn.cpp:913 -msgid "F-Number" -msgstr "F-Nummer" - -#: src/pentaxmn.cpp:915 -msgid "ISO sensitivity" -msgstr "ISO-Empfindlichkeit" - -#: src/pentaxmn.cpp:916 -msgid "ISO sensitivity settings" -msgstr "ISO-Empfindlichkeitseinstellungen" - -#: src/pentaxmn.cpp:923 src/pentaxmn.cpp:924 -msgid "MeteringMode" -msgstr "Messmodus" - -#: src/pentaxmn.cpp:926 src/pentaxmn.cpp:927 -msgid "AutoBracketing" -msgstr "Automatischer Erfassung" - -#: src/pentaxmn.cpp:929 src/pentaxmn.cpp:930 -msgid "White ballance" -msgstr "Weißabgleich" - -#: src/pentaxmn.cpp:932 src/pentaxmn.cpp:933 -msgid "White ballance mode" -msgstr "Weißabgleichsmodus" - -#: src/pentaxmn.cpp:936 -#, fuzzy -msgid "Blue color balance" -msgstr "Blauabgleich" - -#: src/pentaxmn.cpp:939 -#, fuzzy -msgid "Red color balance" -msgstr "Roter Farbabgleich" - -#: src/pentaxmn.cpp:941 src/pentaxmn.cpp:942 -msgid "FocalLength" -msgstr "Brennweite" - -#: src/pentaxmn.cpp:956 src/pentaxmn.cpp:957 src/properties.cpp:657 -msgid "Location" -msgstr "Ort" - -#: src/pentaxmn.cpp:959 -msgid "Hometown" -msgstr "Heimatstadt" - -#: src/pentaxmn.cpp:965 -msgid "Hometown DST" -msgstr "Heimatstadt (Sommerzeit)" - -#: src/pentaxmn.cpp:966 -msgid "Whether day saving time is active in home town" -msgstr "Sommerzeit aktiv in der Heimatstadt" - -#: src/pentaxmn.cpp:968 -msgid "Destination DST" -msgstr "Zielort (Sommerzeit)" - -#: src/pentaxmn.cpp:969 -msgid "Whether day saving time is active in destination" -msgstr "Ist die Sommerzeit aktiv im Zielort" - -#: src/pentaxmn.cpp:971 src/pentaxmn.cpp:972 -msgid "DSPFirmwareVersion" -msgstr "DSP-Firmware Version" - -#: src/pentaxmn.cpp:974 src/pentaxmn.cpp:975 -msgid "CPUFirmwareVersion" -msgstr "CPU-Firmware Version" - -#: src/pentaxmn.cpp:981 -msgid "Light value" -msgstr "Helligkeitswert" - -#: src/pentaxmn.cpp:982 -msgid "Camera calculated light value, includes exposure compensation" -msgstr "" -"Der von der Kamera berechnete Helligkeitswert inklusive " -"Belichtungskompensation" - -#: src/pentaxmn.cpp:998 src/pentaxmn.cpp:999 -#, fuzzy -msgid "Image area offset" -msgstr "Bilddatengröße" - -#: src/pentaxmn.cpp:1001 src/pentaxmn.cpp:1002 -#, fuzzy -msgid "Raw image size" -msgstr "Bildgrõße" - -#: src/pentaxmn.cpp:1005 src/pentaxmn.cpp:1006 -msgid "Preview image borders" -msgstr "Vorschau der Bildränder" - -#: src/pentaxmn.cpp:1011 src/pentaxmn.cpp:1012 -msgid "Sensitivity adjust" -msgstr "Empfindlichkeit justieren" - -#: src/pentaxmn.cpp:1014 src/pentaxmn.cpp:1015 -msgid "Digital filter" -msgstr "Digitaler Filter" - -#: src/pentaxmn.cpp:1019 -msgid "Camera temperature" -msgstr "Kameratemperatur" - -#: src/pentaxmn.cpp:1032 src/pentaxmn.cpp:1033 -msgid "Image tone" -msgstr "Bildton" - -#: src/pentaxmn.cpp:1035 src/pentaxmn.cpp:1036 -msgid "Colort temperature" -msgstr "Farbtemperatur" - -#: src/pentaxmn.cpp:1039 -msgid "Shake reduction" -msgstr "Schüttelreduktion" - -#: src/pentaxmn.cpp:1040 -msgid "Shake reduction information" -msgstr "Information zu der Schüttelreduktion" - -#: src/pentaxmn.cpp:1045 src/pentaxmn.cpp:1046 -msgid "Dynamic range expansion" -msgstr "Dynamische Bereichserweiterung" - -#: src/pentaxmn.cpp:1048 src/pentaxmn.cpp:1049 -msgid "High ISO noise reduction" -msgstr "Hohe ISO-Rauschreduktion" - -#: src/pentaxmn.cpp:1051 src/pentaxmn.cpp:1052 -#, fuzzy -msgid "AF Adjustment" -msgstr "Sättigungsanpassung" - -#: src/pentaxmn.cpp:1055 src/pentaxmn.cpp:1056 -msgid "Black point" -msgstr "Schwarzpunkt" - -#: src/pentaxmn.cpp:1058 src/pentaxmn.cpp:1059 -msgid "White point" -msgstr "Weißpunkt" - -#: src/pentaxmn.cpp:1062 src/pentaxmn.cpp:1063 -msgid "ShotInfo" -msgstr "Aufnahmeinfo" - -#: src/pentaxmn.cpp:1065 src/pentaxmn.cpp:1066 -#, fuzzy -msgid "AEInfo" -msgstr "Autofokus-Information" - -#: src/pentaxmn.cpp:1068 src/pentaxmn.cpp:1069 -msgid "LensInfo" -msgstr "Linseninformation" - -#: src/pentaxmn.cpp:1071 src/pentaxmn.cpp:1072 -msgid "FlashInfo" -msgstr "Blitzinformation" - -#: src/pentaxmn.cpp:1074 src/pentaxmn.cpp:1075 -msgid "AEMeteringSegments" -msgstr "AEMeteringSegments" - -#: src/pentaxmn.cpp:1077 src/pentaxmn.cpp:1078 -msgid "FlashADump" -msgstr "FlashADump" - -#: src/pentaxmn.cpp:1080 src/pentaxmn.cpp:1081 -msgid "FlashBDump" -msgstr "FlashBDump" - -#: src/pentaxmn.cpp:1084 src/pentaxmn.cpp:1085 -msgid "WB_RGGBLevelsDaylight" -msgstr "WB_RGGBLevelsDaylight" - -#: src/pentaxmn.cpp:1087 src/pentaxmn.cpp:1088 -msgid "WB_RGGBLevelsShade" -msgstr "WB_RGGBLevelsShade" - -#: src/pentaxmn.cpp:1090 src/pentaxmn.cpp:1091 -msgid "WB_RGGBLevelsCloudy" -msgstr "WB_RGGBLevelsCloudy" - -#: src/pentaxmn.cpp:1093 src/pentaxmn.cpp:1094 -msgid "WB_RGGBLevelsTungsten" -msgstr "WB_RGGBLevelsTungsten" - -#: src/pentaxmn.cpp:1096 src/pentaxmn.cpp:1097 -msgid "WB_RGGBLevelsFluorescentD" -msgstr "WB_RGGBLevelsFluorescentD" - -#: src/pentaxmn.cpp:1099 src/pentaxmn.cpp:1100 -msgid "WB_RGGBLevelsFluorescentN" -msgstr "WB_RGGBLevelsFluorescentN" - -#: src/pentaxmn.cpp:1102 src/pentaxmn.cpp:1103 -msgid "WB_RGGBLevelsFluorescentW" -msgstr "WB_RGGBLevelsFluorescentW" - -#: src/pentaxmn.cpp:1105 src/pentaxmn.cpp:1106 -msgid "WB_RGGBLevelsFlash" -msgstr "WB_RGGBLevelsFlash" - -#: src/pentaxmn.cpp:1108 src/pentaxmn.cpp:1109 -msgid "CameraInfo" -msgstr "Kamerainformation" - -#: src/pentaxmn.cpp:1111 src/pentaxmn.cpp:1112 -msgid "BatteryInfo" -msgstr "Batterieinformation" - -#: src/pentaxmn.cpp:1114 src/pentaxmn.cpp:1115 -msgid "AFInfo" -msgstr "Autofokus-Information" - -#: src/pentaxmn.cpp:1117 src/pentaxmn.cpp:1118 -msgid "ColorInfo" -msgstr "Farbinfo" - -#: src/pentaxmn.cpp:1125 -msgid "Unknown PentaxMakerNote tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Pentax" - -#: src/properties.cpp:102 -msgid "Dublin Core schema" -msgstr "Dublin-Hauptschema" - -#: src/properties.cpp:103 -msgid "digiKam Photo Management schema" -msgstr "digiKam-Fotoverwaltungsschema" - -#: src/properties.cpp:104 -msgid "KDE Image Program Interface schema" -msgstr "" - -#: src/properties.cpp:105 -msgid "XMP Basic schema" -msgstr "XMP-Basisschema" - -#: src/properties.cpp:106 -msgid "XMP Rights Management schema" -msgstr "XMP-Rechteverwaltungsschema" - -#: src/properties.cpp:107 -msgid "XMP Media Management schema" -msgstr "XMP-Mediverwaltungsschema" - -#: src/properties.cpp:108 -msgid "XMP Basic Job Ticket schema" -msgstr "XMP-Basis-Job-Ticket-Schema" - -#: src/properties.cpp:109 -msgid "XMP Paged-Text schema" -msgstr "XMP eingelagertes Textschema" - -#: src/properties.cpp:110 -msgid "XMP Dynamic Media schema" -msgstr "XMP-Dynamisches Medienschema" - -#: src/properties.cpp:111 -msgid "Microsoft Photo schema" -msgstr "Microsoft-Fotoschema" - -#: src/properties.cpp:112 -msgid "Adobe PDF schema" -msgstr "Adobe PDF-Schema" - -#: src/properties.cpp:113 -msgid "Adobe photoshop schema" -msgstr "Adobe Photoshop-Schema" - -#: src/properties.cpp:114 -msgid "Camera Raw schema" -msgstr "Kamera-Rohschema" - -#: src/properties.cpp:115 -msgid "Exif Schema for TIFF Properties" -msgstr "Exif-Schema für TIFF-Eigenschaften" - -#: src/properties.cpp:116 -msgid "Exif schema for Exif-specific Properties" -msgstr "Exif-Schema für Exif-spezifische Eigenschaften" - -#: src/properties.cpp:117 -msgid "Exif schema for Additional Exif Properties" -msgstr "Exif-Schema für zusätzliche Exif-Eigenschaften" - -#: src/properties.cpp:118 src/properties.cpp:119 -msgid "IPTC Core schema" -msgstr "IPTC-Hauptschema" - -#: src/properties.cpp:120 src/properties.cpp:121 -#, fuzzy -msgid "IPTC Extension schema" -msgstr "IPTC-Hauptschema" - -#: src/properties.cpp:122 -msgid "PLUS License Data Format schema" -msgstr "" - -#: src/properties.cpp:123 -#, fuzzy -msgid "iView Media Pro schema" -msgstr "XMP-Dynamisches Medienschema" - -#: src/properties.cpp:124 -#, fuzzy -msgid "Expression Media schema" -msgstr "IPTC-Hauptschema" - -#: src/properties.cpp:125 -#, fuzzy -msgid "Microsoft Photo 1.2 schema" -msgstr "Microsoft-Fotoschema" - -#: src/properties.cpp:126 -#, fuzzy -msgid "Microsoft Photo RegionInfo schema" -msgstr "Microsoft-Fotoschema" - -#: src/properties.cpp:127 -#, fuzzy -msgid "Microsoft Photo Region schema" -msgstr "Microsoft-Fotoschema" - -#: src/properties.cpp:128 -msgid "Metadata Working Group Regions schema" -msgstr "" - -#: src/properties.cpp:131 -msgid "Colorant structure" -msgstr "Farbmittelstruktur" - -#: src/properties.cpp:132 -msgid "Dimensions structure" -msgstr "Dimensionsstruktur" - -#: src/properties.cpp:133 -msgid "Font structure" -msgstr "Schriftartstruktur" - -#: src/properties.cpp:134 -msgid "Thumbnail structure" -msgstr "Vorschaustruktur" - -#: src/properties.cpp:135 -msgid "Resource Event structure" -msgstr "Eventstruktur der Ressource" - -#: src/properties.cpp:136 -msgid "ResourceRef structure" -msgstr "RessourceRef-Struktur" - -#: src/properties.cpp:137 -msgid "Version structure" -msgstr "Versionsstruktur" - -#: src/properties.cpp:138 -msgid "Basic Job/Workflow structure" -msgstr "Basisaufgabe/Arbeitsablaufstruktur" - -#: src/properties.cpp:139 -#, fuzzy -msgid "Area structure" -msgstr "Farbmittelstruktur" - -#: src/properties.cpp:142 -msgid "Qualifier for xmp:Identifier" -msgstr "Kennzeichnung für XMP:Identifikator" - -#: src/properties.cpp:146 -msgid "Contributor" -msgstr "Mitwirkende" - -#: src/properties.cpp:146 -msgid "Contributors to the resource (other than the authors)." -msgstr "Andere Mitwirkende als die Autoren bei den Ressourcen." - -#: src/properties.cpp:147 -msgid "Coverage" -msgstr "Abdeckung" - -#: src/properties.cpp:147 -msgid "" -"The spatial or temporal topic of the resource, the spatial applicability of " -"the resource, or the jurisdiction under which the resource is relevant." -msgstr "" - -#: src/properties.cpp:149 -msgid "Creator" -msgstr "Ersteller" - -#: src/properties.cpp:149 -msgid "" -"The authors of the resource (listed in order of precedence, if significant)." -msgstr "Die Autoren der Ressource in der Ordnung Ihres Beitrags." - -#: src/properties.cpp:150 -msgid "Date(s) that something interesting happened to the resource." -msgstr "Daten an denen etwas Interessantes an der Ressource geschah." - -#: src/properties.cpp:151 -msgid "" -"A textual description of the content of the resource. Multiple values may be " -"present for different languages." -msgstr "" -"Eine textliche Beschreibung des Inhalts der Ressource. Mehrere Werte können " -"für unterschiedliche Sprachen vorhanden sein." - -#: src/properties.cpp:153 -msgid "Format" -msgstr "Format" - -#: src/properties.cpp:153 -msgid "" -"The file format used when saving the resource. Tools and applications should " -"set this property to the save format of the data. It may include appropriate " -"qualifiers." -msgstr "" -"Das zum Speichern der Ressource benutzte Dateiformat. Werkzeuge und " -"Programme sollten diese Eignschaft setzen, um das Format der Daten zu " -"speichern. Es kann auch It zugehörige Kennzeichnungen enthalten." - -#: src/properties.cpp:155 src/properties.cpp:210 -msgid "Identifier" -msgstr "Identifizierer" - -#: src/properties.cpp:155 -msgid "" -"Unique identifier of the resource. Recommended best practice is to identify " -"the resource by means of a string conforming to a formal identification " -"system." -msgstr "" -"Eindeutiger Identifikator der Ressource. Die praktische Empfehlung ist es, " -"die Ressource über eine Zeichnkette zu identifizieren, die einem formellen " -"Identifikationssystem entspricht." - -#: src/properties.cpp:157 -msgid "An unordered array specifying the languages used in the resource." -msgstr "" -"Eine unsortierte Liste die die in der Ressource benutzten Sprachen aufzählt." - -#: src/properties.cpp:158 -msgid "Publisher" -msgstr "Herausgeber" - -#: src/properties.cpp:158 -msgid "" -"An entity responsible for making the resource available. Examples of a " -"Publisher include a person, an organization, or a service. Typically, the " -"name of a Publisher should be used to indicate the entity." -msgstr "" -"Eine Entität die benutzt wird, um die Ressource zur Verfügung zu stellen. " -"Beispiele für den Herausgeber könnten eine Person, eine Organisation oder " -"ein Dienst sein. Typischerweise sollte der Name eines Herausgebers benutzt " -"werden, um die Entität zu kennzeichen" - -#: src/properties.cpp:161 -msgid "Relation" -msgstr "Beziehung" - -#: src/properties.cpp:161 -msgid "" -"Relationships to other documents. Recommended best practice is to identify " -"the related resource by means of a string conforming to a formal " -"identification system." -msgstr "" -"Beziehungen zu anderen Dokumenten. Die Empfehlung aus der Praxis ist es, die " -"betreffende Ressource durch eine Zeichenkette zu identifizieren, die einem " -"formellen Identifizierungssystem entspricht." - -#: src/properties.cpp:163 -msgid "Rights" -msgstr "Rechte" - -#: src/properties.cpp:163 -msgid "" -"Informal rights statement, selected by language. Typically, rights " -"information includes a statement about various property rights associated " -"with the resource, including intellectual property rights." -msgstr "" -"Informelle Rechtsaussage die durch die Sprache ausgewählt wird. " -"Typischerweise enthalten Rechtsinformationen eine Aussage über verschiedene " -"Eigenschaftsrechte, inklusive geistige Eigentumsrechte, die mit der " -"Ressource assoziert sind." - -#: src/properties.cpp:166 -msgid "Unique identifier of the work from which this resource was derived." -msgstr "" -"Eindeutige Identifikation der Arbeit von der diese Ressource abgeleitet " -"wurde." - -#: src/properties.cpp:167 -msgid "" -"An unordered array of descriptive phrases or keywords that specify the topic " -"of the content of the resource." -msgstr "" -"Eine ungeordnete Liste von beschreibenden Begriffen oder Sitchwörtern, die " -"das Thema des Inhalts der Ressource angeben." - -#: src/properties.cpp:169 -msgid "Title" -msgstr "Titel" - -#: src/properties.cpp:169 -msgid "" -"The title of the document, or the name given to the resource. Typically, it " -"will be a name by which the resource is formally known." -msgstr "" -"Der Titel des Dokuments oder der Name den die Ressource hat. Normalerweise " -"ist dies der Name unter dem die Ressource allgemein bekannt ist." - -#: src/properties.cpp:171 src/properties.cpp:979 -msgid "Type" -msgstr "Typ" - -#: src/properties.cpp:171 -msgid "A document type; for example, novel, poem, or working paper." -msgstr "En Dokumenttyp wie z.B. Roman, Gedicht oder Arbeitspapier." - -#: src/properties.cpp:177 -msgid "Tags List" -msgstr "Felderliste" - -#: src/properties.cpp:177 -msgid "" -"The list of complete tags path as string. The path hierarchy is separated by " -"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." -msgstr "" -"Die Liste des kompletten Stichwortpfads als Zeichenkette. Die Teile der " -"Zeichenkette werden durch das Zeichen \"/\" getrennt, wie z.B. in \"Stadt/" -"Paris/Monument/Eiffelturm\"." - -#: src/properties.cpp:178 -#, fuzzy -msgid "Captions Author Names" -msgstr "Ländername" - -#: src/properties.cpp:178 -msgid "" -"The list of all captions author names for each language alternative captions " -"set in standard XMP tags." -msgstr "" - -#: src/properties.cpp:179 -#, fuzzy -msgid "Captions Date Time Stamps" -msgstr "aktualisiere Zeitstempel" - -#: src/properties.cpp:179 -msgid "" -"The list of all captions date time stamps for each language alternative " -"captions set in standard XMP tags." -msgstr "" - -#: src/properties.cpp:180 src/tags.cpp:837 -#, fuzzy -msgid "Image History" -msgstr "Bildhöhe" - -#: src/properties.cpp:180 -msgid "" -"An XML based content to list all action processed on this image with image " -"editor (as crop, rotate, color corrections, adjustements, etc.)." -msgstr "" - -#: src/properties.cpp:181 -#, fuzzy -msgid "Lens Correction Settings" -msgstr "Linsendaten-Einstellungen" - -#: src/properties.cpp:181 -msgid "" -"The list of Lens Correction tools settings used to fix lens distorsion. This " -"include Batch Queue Manager and Image editor tools based on LensFun library." -msgstr "" - -#: src/properties.cpp:182 -#, fuzzy -msgid "Color Label" -msgstr "Farbraum" - -#: src/properties.cpp:182 -msgid "" -"The color label assigned to this item. Possible values are \"0\": no label; " -"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " -"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." -msgstr "" - -#: src/properties.cpp:183 -#, fuzzy -msgid "Pick Label" -msgstr "Name" - -#: src/properties.cpp:183 -msgid "" -"The pick label assigned to this item. Possible values are \"0\": no label; " -"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " -"accepted." -msgstr "" - -#: src/properties.cpp:189 -msgid "Enfuse Input Files" -msgstr "" - -#: src/properties.cpp:189 -msgid "" -"The list of files processed with Enfuse program through ExpoBlending tool." -msgstr "" - -#: src/properties.cpp:190 -#, fuzzy -msgid "Enfuse Settings" -msgstr "Besitzt Einstellungen" - -#: src/properties.cpp:190 -msgid "" -"The list of Enfuse settings used to blend image stack with ExpoBlending tool." -msgstr "" - -#: src/properties.cpp:191 -msgid "PicasaWeb Item ID" -msgstr "" - -#: src/properties.cpp:191 -msgid "Item ID from PicasaWeb web service." -msgstr "" - -#: src/properties.cpp:192 -msgid "Yandex Fotki Item ID" -msgstr "" - -#: src/properties.cpp:192 -msgid "Item ID from Yandex Fotki web service." -msgstr "" - -#: src/properties.cpp:198 -msgid "Advisory" -msgstr "Hinweise" - -#: src/properties.cpp:198 -msgid "" -"An unordered array specifying properties that were edited outside the " -"authoring application. Each item should contain a single namespace and XPath " -"separated by one ASCII space (U+0020)." -msgstr "" -"Eine ungeordnete Liste die Eigenschaften angibt, die ausserhalb der " -"erstellenden Anwendung bearbeitet wurden. Jeder Eintrag sollte seinen " -"Namensraum und XPath enthalten, die über ein ASCII-Leerzeichen (U+0020). " -"getrennt sind." - -#: src/properties.cpp:201 -msgid "Base URL" -msgstr "Basis-Adresse" - -#: src/properties.cpp:201 -msgid "" -"The base URL for relative URLs in the document content. If this document " -"contains Internet links, and those links are relative, they are relative to " -"this base URL. This property provides a standard way for embedded relative " -"URLs to be interpreted by tools. Web authoring tools should set the value " -"based on their notion of where URLs will be interpreted." -msgstr "" -"Die Basis-URL für relative URL's im Dokument. Wenn dieses Dokument " -"Verknüpfungen im Internet enthält und diese relativ sind, dann sind sie " -"relativ zu dieser Basis-URL. Diese Eigenschaft stellt einen Standard für " -"eingebettete URL's zur Verfügung damit sie von Werkzeugen interpretiert " -"werden können. Web-Autorenwerkzeuge sollten diesen Wert, basierend auf Ihrer " -"Absicht wie URL's interpretiert werden, setzen." - -#: src/properties.cpp:206 -msgid "Create Date" -msgstr "Erstellungsdatum" - -#: src/properties.cpp:206 -msgid "The date and time the resource was originally created." -msgstr "" -"Das Datum und die Uhrzeit an dem die Ressource im Original erstellt wurde." - -#: src/properties.cpp:207 -msgid "Creator Tool" -msgstr "Erstellungswerkzeug" - -#: src/properties.cpp:207 -msgid "" -"The name of the first known tool used to create the resource. If history is " -"present in the metadata, this value should be equivalent to that of xmpMM:" -"History's softwareAgent property." -msgstr "" -"Der Name des ersten bekannten Werkzeuges mit dem die Ressource erstellt " -"wurde. Wenn in den Metadaten eine Historie geführt wird, dann sollte dieser " -"Wert gleich dem in der Eigenschaft xmpMM:History's softwareAgent sein." - -#: src/properties.cpp:210 -msgid "" -"An unordered array of text strings that unambiguously identify the resource " -"within a given context. An array item may be qualified with xmpidq:Scheme to " -"denote the formal identification system to which that identifier conforms. " -"Note: The dc:identifier property is not used because it lacks a defined " -"scheme qualifier and has been defined in the XMP Specification as a simple " -"(single-valued) property." -msgstr "" -"Eine ungeordnete Liste von Zeichenketten, die die Ressource in einem " -"gegebenenen Kontext eindeutig identifizieren. Ein Listeneintrag kann mit dem " -"xmpidq:Scheme qualifiziert werden, um das formale Identifikationssystem zu " -"bezeichnen dem der Identifikator folgt. Achtung: Die Eigenschaft dc:" -"identifier wird nicht benutzt, da ihr ein definierter Schemavermerk fehlt " -"und sie in der XMP-Spezifikation als als einfache, einwertige Eigenschaft " -"definiert wurde." - -#: src/properties.cpp:215 -msgid "Label" -msgstr "Name" - -#: src/properties.cpp:215 -msgid "" -"A word or short phrase that identifies a document as a member of a user-" -"defined collection. Used to organize documents in a file browser." -msgstr "" -"Ein Wort oder eine kurze Umschreibung die das Dokument als einen Teil einer " -"benutzerdefinierten SDammlung identifiziert. Es wird benutzt, um die " -"Dokumente in einem Dateimanager zu organisieren." - -#: src/properties.cpp:217 -msgid "Metadata Date" -msgstr "Metadaten-Datum" - -#: src/properties.cpp:217 -msgid "" -"The date and time that any metadata for this resource was last changed. It " -"should be the same as or more recent than xmp:ModifyDate." -msgstr "" -"Das Datum und die Zeit an dem die Metadaten dieser Ressource das letzte Mal " -"geändert wurden. Es sollte das gleiche oder ein aktuelleres Datum als xmp:" -"ModifyDate sein." - -#: src/properties.cpp:219 -msgid "Modify Date" -msgstr "Änderungsdatum" - -#: src/properties.cpp:219 -msgid "" -"The date and time the resource was last modified. Note: The value of this " -"property is not necessarily the same as the file's system modification date " -"because it is set before the file is saved." -msgstr "" -"Das Datum und die Zeit am dem die Ressource zuletzt geändert wurde. Achtung: " -"Der Wert dieser Eigenschaft muss nicht der gleiche sein wie das " -"Änderungsdatum des Dateisystems, da es gesetzt wird bevor die Datei " -"gespeichert wird." - -#: src/properties.cpp:222 -msgid "Nickname" -msgstr "Spitzname" - -#: src/properties.cpp:222 -msgid "A short informal name for the resource." -msgstr "Ein kurzer informeller Name für die Ressource." - -#: src/properties.cpp:223 -msgid "Rating" -msgstr "Bewertung" - -#: src/properties.cpp:223 -msgid "" -"A number that indicates a document's status relative to other documents, " -"used to organize documents in a file browser. Values are user-defined within " -"an application-defined range." -msgstr "" -"Eine Zahl die den Dokumentenstatus realtiv zu anderen Dokumenten beschreibt. " -"Sie wird benutzt, um Dokumente in einem dateimanager zu organisieren. Die " -"Werte werden vom Benutzer innerhalb eines von der Anwendung vorgegebenen " -"Bereichs gesetzt." - -#: src/properties.cpp:226 -msgid "Thumbnails" -msgstr "Vorschaubilder" - -#: src/properties.cpp:226 -msgid "" -"An alternative array of thumbnail images for a file, which can differ in " -"characteristics such as size or image encoding." -msgstr "" -"Eine alternative Liste von Vorschaubildern für eine Datei. Diese können sich " -"in Eigenschaften wie z.B. Größe oder Bildkodierung unterscheiden." - -#: src/properties.cpp:233 -msgid "Certificate" -msgstr "Zertifikat" - -#: src/properties.cpp:233 -msgid "Online rights management certificate." -msgstr "Online-Rechteverwaltungszertifikat" - -#: src/properties.cpp:234 -msgid "Marked" -msgstr "Markiert" - -#: src/properties.cpp:234 -msgid "Indicates that this is a rights-managed resource." -msgstr "Zeigt an, dass dies eine Ressource ist deren Rechet verwaltet sind." - -#: src/properties.cpp:235 -msgid "Owner" -msgstr "Besitzer" - -#: src/properties.cpp:235 -msgid "An unordered array specifying the legal owner(s) of a resource." -msgstr "" -"Eine ungeordnete Liste von einem oder mehreren rechtlichen Besitzer einer " -"Ressource." - -#: src/properties.cpp:236 -msgid "Usage Terms" -msgstr "Benutzungsbedingungen" - -#: src/properties.cpp:236 -msgid "Text instructions on how a resource can be legally used." -msgstr "Textbeschreibung wie die Ressource legal benutzt werden kann." - -#: src/properties.cpp:237 -msgid "Web Statement" -msgstr "Web-Angaben" - -#: src/properties.cpp:237 -msgid "" -"The location of a web page describing the owner and/or rights statement for " -"this resource." -msgstr "" -"Die Adresse einer-Web-Seite die den Besitzer und/oder die Rechteangaben für " -"die Ressource beschreibt." - -#: src/properties.cpp:243 -msgid "Derived From" -msgstr "Abgeleitet von" - -#: src/properties.cpp:243 -msgid "" -"A reference to the original document from which this one is derived. It is a " -"minimal reference; missing components can be assumed to be unchanged. For " -"example, a new version might only need to specify the instance ID and " -"version number of the previous version, or a rendition might only need to " -"specify the instance ID and rendition class of the original." -msgstr "" -"Eine Referenz auf das Originaldokument von dem dieses hier abgeleitet wurde. " -"Es handelt sich um eine minimale Referenz, Bei fehlenden Komponenten können " -"Sie davon ausgehen, dass Sie nicht geändert wurden. So müssen Sie für eine " -"neue Version z.B. nur die Instanz-ID und die Versionsnummer der " -"vorangegangenen Version angeben. Eine Wiedergabe braucht also nur die " -"Instanz-ID un die Wiedergabeklasse des Originals angeben." - -#: src/properties.cpp:248 -msgid "Document ID" -msgstr "Dokumenten-ID" - -#: src/properties.cpp:248 -msgid "" -"The common identifier for all versions and renditions of a document. It " -"should be based on a UUID; see Document and Instance IDs below." -msgstr "" -"Der allgemeine Identifikator für alle Versionen und Wiedergaben eines " -"Dokuments. Er sollte daher auf der UUID basieren. Sehen Sie dazu die " -"Dokumenten und Instanz-ID's unten." - -#: src/properties.cpp:250 -msgid "History" -msgstr "Historie" - -#: src/properties.cpp:250 -msgid "" -"An ordered array of high-level user actions that resulted in this resource. " -"It is intended to give human readers a general indication of the steps taken " -"to make the changes from the previous version to this one. The list should " -"be at an abstract level; it is not intended to be an exhaustive keystroke or " -"other detailed history." -msgstr "" -"Eine sortierte Liste von groben umschriebenen Benutzeraktionen die zu dieser " -"Ressource führten. Dadurch sollen menschliche Leser eine Idee von den " -"Schritten bekommen die von der vorangegangenen Version zu dieser geführt " -"haben. Diese Liste sollte auf einer abstrakten Ebene vorliegen. Es ist nicht " -"gedacht als vollständige Zusammenstellung aller Tastenanschläge oder als " -"detailierte Anleitung." - -#: src/properties.cpp:254 -msgid "Instance ID" -msgstr "Instanz-ID" - -#: src/properties.cpp:254 -msgid "" -"An identifier for a specific incarnation of a document, updated each time a " -"file is saved. It should be based on a UUID; see Document and Instance IDs " -"below." -msgstr "" -"Eine Identikator für eine spezielle Version des Dokumentes, der jedes Mal " -"aktualisiert wird, wenn die Datei gespeichert wird. Er sollte auf einer UUID " -"basieren. Sehen Sie dazu unten die Dokumenten und Instanz-ID." - -#: src/properties.cpp:256 -msgid "Managed From" -msgstr "Verwaltet von" - -#: src/properties.cpp:256 -msgid "" -"A reference to the document as it was prior to becoming managed. It is set " -"when a managed document is introduced to an asset management system that " -"does not currently own it. It may or may not include references to different " -"management systems." -msgstr "" -"Eine Referenz auf das Dokument das es war bevor es verwaltet wurde. Diese " -"wird gesetzt wenn ein verwaltetes Dokument in eine Bestandsverwaltung " -"aufgenommen wird, die es nicht besitzt. Es kann oder auch nicht Referenzen " -"auf verschiedene Verwaltungssysteme enthalten." - -#: src/properties.cpp:259 -msgid "Manager" -msgstr "Verwalter" - -#: src/properties.cpp:259 -msgid "" -"The name of the asset management system that manages this resource. Along " -"with xmpMM: ManagerVariant, it tells applications which asset management " -"system to contact concerning this document." -msgstr "" -"Der Name des Verwaltungssystems das diese Ressource verwaltet. Zusammen mit " -"xmpMM: ManagerVariant, teilt es der Anwendung mit welches " -"Bestandsverwaltungssystem zu diesem Dokument kontaktiert werden muss." - -#: src/properties.cpp:262 -msgid "Manage To" -msgstr "Verwaltet für" - -#: src/properties.cpp:262 -msgid "" -"A URI identifying the managed resource to the asset management system; the " -"presence of this property is the formal indication that this resource is " -"managed. The form and content of this URI is private to the asset management " -"system." -msgstr "" -"Eine URI die die verwaltete Ressource für das Bestandsverwaltungssystem " -"identifiziert. Das Vorhandensein dieser Eigenschaft ist ein formaler " -"Indikator das diese Ressource verwaltet ist. Form und Inhalt dieser URI ist " -"nur für das Bestandsverwaltungssystem." - -#: src/properties.cpp:265 -msgid "Manage UI" -msgstr "Verwaltungs-UI" - -#: src/properties.cpp:265 -msgid "" -"A URI that can be used to access information about the managed resource " -"through a web browser. It might require a custom browser plug-in." -msgstr "" -"Eine URI die benutzt werden kann, um Informationen über die verwaltete " -"Ressource mittels eines Web-Browsers zu bekommen. Sie setzt unter Umständen " -"ein Browsermodul voraus." - -#: src/properties.cpp:267 -msgid "Manager Variant" -msgstr "Verwaltungsvariante" - -#: src/properties.cpp:267 -msgid "" -"Specifies a particular variant of the asset management system. The format of " -"this property is private to the specific asset management system." -msgstr "" -"Gibt eine bestimmte Variante des Bestandsverwaltungssystems an. Das Format " -"dieser Eigenschaft ist nur für die angegebene Bestandsverwaltungssystem." - -#: src/properties.cpp:269 -msgid "Rendition Class" -msgstr "Wiedergabeklasse" - -#: src/properties.cpp:269 -msgid "" -"The rendition class name for this resource. This property should be absent " -"or set to default for a document version that is not a derived rendition." -msgstr "" -"Die Wiedergabeklasse für diese Ressource. Diese Eigenschaft sollte fehlen " -"oder auf den Standard gesetzt sein für alle Dokumentenversionen die keine " -"abgeleitete Umsetzungen sind." - -#: src/properties.cpp:271 -msgid "Rendition Params" -msgstr "Wiedergabeparameter" - -#: src/properties.cpp:271 -msgid "" -"Can be used to provide additional rendition parameters that are too complex " -"or verbose to encode in xmpMM: RenditionClass." -msgstr "" -"Kann benutzt werden, um zusätzliche Wiedergabeparameter zur Verfügung zu " -"stellen, die zu komplex oder zu umfangreich sind, um in der Wiedergabeklasse " -"xmpMM: gespeichert zu werden." - -#: src/properties.cpp:273 -msgid "Version ID" -msgstr "Version-ID" - -#: src/properties.cpp:273 -msgid "" -"The document version identifier for this resource. Each version of a " -"document gets a new identifier, usually simply by incrementing integers 1, " -"2, 3 . . . and so on. Media management systems can have other conventions or " -"support branching which requires a more complex scheme." -msgstr "" -"Der Identifikator für die Version des Dokumentes für diese Ressource. Jede " -"Version eines Dokumentes bekommt einen neuen Identifikator, der " -"normalerweise einfach durch das Hochzählen 1, 2, 3 . . . und so weiter " -"gebildet. Medienverwaltungssystemw haben unter Umständen andere Konventionen " -"oder unterstützen Abzweigungen die ein komplexeres Schema benötigen." - -#: src/properties.cpp:277 -msgid "Versions" -msgstr "Versionen" - -#: src/properties.cpp:277 -msgid "" -"The version history associated with this resource. Entry [1] is the oldest " -"known version for this document, entry [last()] is the most recent version. " -"Typically, a media management system would fill in the version information " -"in the metadata on check-in. It is not guaranteed that a complete history " -"versions from the first to this one will be present in the xmpMM:Versions " -"property. Interior version information can be compressed or eliminated and " -"the version history can be truncated at some point." -msgstr "" -"Die Historie der Versionen die mit dieser Ressource assoziert ist. Der " -"Eintrag [1] ist die älteste bekannte Version für dieses Dokument, der " -"Eintrag [letzter()] ist die aktuellste Version. Typischerweise trägt ein " -"Medienverwaltungssystem die Versionsinformationen in den Metadaten bei der " -"Aufnahme ein. Es gibt aber keine Garantie, dass eine komplette Historie von " -"dem ersten bis zu dem gerade präsentierten in der Eigenschaft xmpMM:Versions " -"vorhanden ist. Interne Versionsinformationen können komprimiert oder " -"gelöscht und die Versionshistorie kann an einem Punkt abgeschnitten werden." - -#: src/properties.cpp:283 -msgid "Last URL" -msgstr "Letzte Adresse" - -#: src/properties.cpp:283 -msgid "Deprecated for privacy protection." -msgstr "Veraltet wegen dem Schutz der Privatsphäre." - -#: src/properties.cpp:284 -msgid "Rendition Of" -msgstr "Wiedergabe von" - -#: src/properties.cpp:284 -msgid "" -"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " -"which this is a rendition." -msgstr "" -"Veraltet und durch xmpMM:DerivedFrom ersetzt. Eine Referenz auf das Dokument " -"von dem dieses eine Ableitung ist." - -#: src/properties.cpp:286 -msgid "Save ID" -msgstr "Speicherungs-ID" - -#: src/properties.cpp:286 -msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." -msgstr "" -"Veraltet. Wurde vorher benutzt, um die Eigenschaft xmpMM:LastURL zu " -"unterstützen" - -#: src/properties.cpp:292 -msgid "Job Reference" -msgstr "Jobreferenz" - -#: src/properties.cpp:292 -msgid "" -"References an external job management file for a job process in which the " -"document is being used. Use of job names is under user control. Typical use " -"would be to identify all documents that are part of a particular job or " -"contract. There are multiple values because there can be more than one job " -"using a particular document at any time, and it can also be useful to keep " -"historical information about what jobs a document was part of previously." -msgstr "" -"Referenzen auf ein externe Jobverwaltungsdatei für einen for einen Prozess " -"in dem das Dokument benutzt wird. Die Benutzung der Jobnamen liegt unter dre " -"Kontrolle des Benutzers. Eine typische Anwendung ist es alle Dokumente zu " -"identifizieren, die Teil eines bestimmten Jobs oder Vertrags sind. Es können " -"mehrere Werte eingegeben werden, da ein Dokument zu mehr als einen Job zur " -"gleichen Zeit zugehören kann. Ebenfalls kann es sinnvoll sein historische " -"Informationen zu speichern, in welchem Jobs das Dokument früher benutzt " -"wurde." - -#: src/properties.cpp:301 -msgid "Maximum Page Size" -msgstr "Maximale Seitengröße" - -#: src/properties.cpp:301 -msgid "" -"The size of the largest page in the document (including any in contained " -"documents)." -msgstr "" -"Die Größe der größten Seite, inklusive aller eingebetten Seiten, im Dokument." - -#: src/properties.cpp:302 -msgid "Number of Pages" -msgstr "Anzahl der Seiten" - -#: src/properties.cpp:302 -msgid "" -"The number of pages in the document (including any in contained documents)." -msgstr "" -"Die Anzahl der Seiten, inklusive aller eingebetten Seiten, des Dokuments." - -#: src/properties.cpp:303 -msgid "Fonts" -msgstr "Schriftarten" - -#: src/properties.cpp:303 -msgid "" -"An unordered array of fonts that are used in the document (including any in " -"contained documents)." -msgstr "" -"Eine ungeordnete Liste von Zeichensätzen die in diesem Dokument benutzt " -"werden. Diese enthält auch die Zeichensätze von eingebetteten Dokumenten." - -#: src/properties.cpp:304 -msgid "Colorants" -msgstr "Farbmittel" - -#: src/properties.cpp:304 -msgid "" -"An ordered array of colorants (swatches) that are used in the document " -"(including any in contained documents)." -msgstr "" -"Eine ungeordnete Liste von Farbmitteln die in diesem Dokument benutzt " -"werden. Diese enthält auch alle Farbmittel in eingebetteten Dokumenten." - -#: src/properties.cpp:305 -msgid "Plate Names" -msgstr "Druckstocknamen" - -#: src/properties.cpp:305 -msgid "" -"An ordered array of plate names that are needed to print the document " -"(including any in contained documents)." -msgstr "" -"Eine geordnete Liste von Druckstocknamen, die benötigt werden um das " -"Dokument zu drucken. Diese enthält auch die Druckstöcke aus allen " -"eingebetteten Druckstöcken." - -#: src/properties.cpp:311 -msgid "Project Reference" -msgstr "Projektreferenz" - -#: src/properties.cpp:311 -msgid "A reference to the project that created this file." -msgstr "Eine Referenz zu dem Projekt das diese Datei erstellt hat." - -#: src/properties.cpp:312 -msgid "Video Frame Rate" -msgstr "Video-Bildrate" - -#: src/properties.cpp:312 -msgid "The video frame rate. One of: 24, NTSC, PAL." -msgstr "Für die Video-Bildrate mögliche Werte sind: 24, NTSC, PAL." - -#: src/properties.cpp:313 -msgid "Video Frame Size" -msgstr "Video-Bildgröße" - -#: src/properties.cpp:313 -msgid "The frame size. For example: w:720, h: 480, unit:pixels" -msgstr "" -"Die Größe des Video Bildes, z.B. Breite: 720, Höhe: 480, Einheit: Pixel" - -#: src/properties.cpp:314 -msgid "Video Pixel Aspect Ratio" -msgstr "Video-Pixelverhältnis" - -#: src/properties.cpp:314 -msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" -msgstr "" -"Das Verhältnis der Videopixel augedrückt als Höhe/Breite, z.B.: \"648/720\" " -"= 0.9." - -#: src/properties.cpp:315 -msgid "Video Pixel Depth" -msgstr "Video-Pixeltiefe" - -#: src/properties.cpp:315 -msgid "" -"The size in bits of each color component of a pixel. Standard Windows 32-bit " -"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." -msgstr "" -"Die Größe in BNits für jede Farbkomponente eines Pixels. Standard Windows 32-" -"Bit Pixel haben 8 Bit pro Farbe. Erlaubt sind : 8Int, 16Int, 32Int, 32Float." - -#: src/properties.cpp:317 -msgid "Video Color Space" -msgstr "Video-Farbraum" - -#: src/properties.cpp:317 -msgid "" -"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " -"CCIR-709 (used for HD)." -msgstr "" -"Der benutzte Farbraum. Erlaubt sind: sRGB (von Photoshop), CCIR-601 (von " -"NTSC), CCIR-709 (von HD)." - -#: src/properties.cpp:319 -msgid "Video Alpha Mode" -msgstr "Video-Alphamodus" - -#: src/properties.cpp:319 -msgid "The alpha mode. One of: straight, pre-multiplied." -msgstr "Der benutzte Alphamodus. Erlaubt sind: straight, pre-multiplied." - -#: src/properties.cpp:320 -msgid "Video Alpha Premultiple Color" -msgstr "" - -#: src/properties.cpp:320 -msgid "" -"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " -"is pre-multiplied." -msgstr "" - -#: src/properties.cpp:322 -msgid "Video Alpha Unity Is Transparent" -msgstr "" - -#: src/properties.cpp:322 -msgid "When true, unity is clear, when false, it is opaque." -msgstr "" - -#: src/properties.cpp:323 -msgid "Video Compressor" -msgstr "Videokompression" - -#: src/properties.cpp:323 -msgid "Video compression used. For example, jpeg." -msgstr "Benutzte Videokompression, z.B. jpeg." - -#: src/properties.cpp:324 -msgid "Video Field Order" -msgstr "Video-Feldreihenfolge" - -#: src/properties.cpp:324 -msgid "The field order for video. One of: Upper, Lower, Progressive." -msgstr "" - -#: src/properties.cpp:325 -msgid "Pull Down" -msgstr "Nach unten ziehen" - -#: src/properties.cpp:325 -msgid "" -"The sampling phase of film to be converted to video (pull-down). One of: " -"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " -"WWWSS_24p, WWSSW_24p." -msgstr "" - -#: src/properties.cpp:327 -msgid "Audio Sample Rate" -msgstr "Audio-Abtastrate" - -#: src/properties.cpp:327 -msgid "" -"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." -msgstr "" -"Die Audio-Abtastrate kann ein beliebiger Wert sein. Empfohlen sind die Werte " -"32000, 41100, oder 48000." - -#: src/properties.cpp:328 -msgid "Audio Sample Type" -msgstr "Audio-Abtasttyp" - -#: src/properties.cpp:328 -msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." -msgstr "Der Audio-Abtasttyp, ein Wert aus: 8Int, 16Int, 32Int, 32Float." - -#: src/properties.cpp:329 -msgid "Audio Channel Type" -msgstr "Audio-Kanaltyp" - -#: src/properties.cpp:329 -msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." -msgstr "Der Audio-Kanaltyp, ein Wert aus: Mono, Stereo, 5.1, 7.1." - -#: src/properties.cpp:330 -msgid "Audio Compressor" -msgstr "Audio-Kompression" - -#: src/properties.cpp:330 -msgid "The audio compression used. For example, MP3." -msgstr "Die benutzte Audio-Kompression, z.B. MP3." - -#: src/properties.cpp:331 -msgid "Speaker Placement" -msgstr "Lautsprecheraufstellung" - -#: src/properties.cpp:331 -msgid "" -"A description of the speaker angles from center front in degrees. For " -"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " -"-110, Right Surround = 110\"" -msgstr "" - -#: src/properties.cpp:333 -msgid "File Data Rate" -msgstr "Dateidatenrate" - -#: src/properties.cpp:333 -#, fuzzy -msgid "" -"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" -"sec" -msgstr "" -"Das Verhältnis der Videopixel augedrückt als Höhe/Breite, z.B.: \"648/720\" " -"= 0.9." - -#: src/properties.cpp:334 -msgid "Tape Name" -msgstr "Bandname" - -#: src/properties.cpp:334 -msgid "" -"The name of the tape from which the clip was captured, as set during the " -"capture process." -msgstr "" - -#: src/properties.cpp:335 -msgid "Alternative Tape Name" -msgstr "Alternativer Bandname" - -#: src/properties.cpp:335 -msgid "" -"An alternative tape name, set via the project window or timecode dialog in " -"Premiere. If an alternative name has been set and has not been reverted, " -"that name is displayed." -msgstr "" - -#: src/properties.cpp:337 -msgid "Start Time Code" -msgstr "Startzeitstempel" - -#: src/properties.cpp:337 -msgid "" -"The timecode of the first frame of video in the file, as obtained from the " -"device control." -msgstr "" -"Der Zeitstempel des ersten Bildes des Videos in der Datei. Er stammt von der " -"Gerätekontrolle." - -#: src/properties.cpp:338 -msgid "Alternative Time code" -msgstr "Alternativer Zeitstempel" - -#: src/properties.cpp:338 -msgid "" -"A timecode set by the user. When specified, it is used instead of the " -"startTimecode." -msgstr "" -"Ein Zeitstempel der vom Benutzer. Wenn er gesetzt ist, dann wird er anstatt " -"des Startzeitstempels benutzt." - -#: src/properties.cpp:339 -msgid "Duration" -msgstr "Dauer" - -#: src/properties.cpp:339 -msgid "The duration of the media file." -msgstr "Die Abspieldauer der Mediendatei." - -#: src/properties.cpp:340 -msgid "Scene" -msgstr "Szene" - -#: src/properties.cpp:340 -msgid "The name of the scene." -msgstr "Der Name der Szene." - -#: src/properties.cpp:341 -msgid "Shot Name" -msgstr "Aufnahmename" - -#: src/properties.cpp:341 -msgid "The name of the shot or take." -msgstr "Der Name der Aufnahme." - -#: src/properties.cpp:342 -msgid "Shot Date" -msgstr "Aufnahmedatum" - -#: src/properties.cpp:342 -msgid "The date and time when the video was shot." -msgstr "Das Datum und die Uhrzeit an dem das Video aufgenommen wurde." - -#: src/properties.cpp:343 -msgid "Shot Location" -msgstr "Aufnahmeort" - -#: src/properties.cpp:343 -msgid "" -"The name of the location where the video was shot. For example: " -"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " -"GPS values." -msgstr "" -"Der Name des Ortes, z.B. \"Oktoberfest, München, Deutschland\", an dem das " -"Video aufgenommen wurde. Für eine genauere Positionsbestimmung sollten Sie " -"die Exif-GPS-Werte benutzen." - -#: src/properties.cpp:345 -msgid "Log Comment" -msgstr "Protokollkommentar" - -#: src/properties.cpp:345 -msgid "User's log comments." -msgstr "Protokollkommentar des Benutzers." - -#: src/properties.cpp:346 -msgid "Markers" -msgstr "Markierungen" - -#: src/properties.cpp:346 -msgid "An ordered list of markers" -msgstr "Eine geordnete Liste von Markierungen" - -#: src/properties.cpp:347 -msgid "Contributed Media" -msgstr "Mitwirkende Medien" - -#: src/properties.cpp:347 -msgid "An unordered list of all media used to create this media." -msgstr "" -"Ein ungeordnete Liste aller Medien die benutzt wurdenum dieses Medium zu " -"erstellen." - -#: src/properties.cpp:348 -msgid "Absolute Peak Audio File Path" -msgstr "" - -#: src/properties.cpp:348 -msgid "" -"The absolute path to the file's peak audio file. If empty, no peak file " -"exists." -msgstr "" - -#: src/properties.cpp:349 -msgid "Relative Peak Audio File Path" -msgstr "" - -#: src/properties.cpp:349 -msgid "" -"The relative path to the file's peak audio file. If empty, no peak file " -"exists." -msgstr "" - -#: src/properties.cpp:350 -msgid "Video Modified Date" -msgstr "Änderungsdatum des Videos" - -#: src/properties.cpp:350 -msgid "The date and time when the video was last modified." -msgstr "Das Datum und die Uhrzeit der letzten Änderung des Videos." - -#: src/properties.cpp:351 -msgid "Audio Modified Date" -msgstr "Änderungsdatum der Audiodaten" - -#: src/properties.cpp:351 -msgid "The date and time when the audio was last modified." -msgstr "Das Datum und die Uhrzeit der letzten Änderung der Audiodaten." - -#: src/properties.cpp:352 -msgid "Metadata Modified Date" -msgstr "Änderungsdatum der Metadaten" - -#: src/properties.cpp:352 -msgid "The date and time when the metadata was last modified." -msgstr "Das Datum und die Uhrzeit der letzten Änderung der Metadaten." - -#: src/properties.cpp:353 src/properties.cpp:521 src/tags.cpp:549 -msgid "Artist" -msgstr "Künstler" - -#: src/properties.cpp:353 -msgid "The name of the artist or artists." -msgstr "Der Name des Künstlers bzw. der Künstler." - -#: src/properties.cpp:354 -msgid "Album" -msgstr "Album" - -#: src/properties.cpp:354 -msgid "The name of the album." -msgstr "Der Name des Albums." - -#: src/properties.cpp:355 -msgid "Track Number" -msgstr "Stücknummer" - -#: src/properties.cpp:355 -msgid "" -"A numeric value indicating the order of the audio file within its original " -"recording." -msgstr "" -"Ein numerischer Wert, der die Reihenfolge der Audiodatei in der " -"Originalaufnahme anzeigt." - -#: src/properties.cpp:356 -msgid "Genre" -msgstr "Genre" - -#: src/properties.cpp:356 -msgid "The name of the genre." -msgstr "Der Name des Genres." - -#: src/properties.cpp:357 -msgid "The copyright information." -msgstr "Die urheberrechtliche Information." - -#: src/properties.cpp:358 -msgid "The date the title was released." -msgstr "Das Datum andem der Titel veröffentlicht wurde." - -#: src/properties.cpp:359 -msgid "Composer" -msgstr "Verfasser" - -#: src/properties.cpp:359 -msgid "The composer's name." -msgstr "Der Name des Verfassers." - -#: src/properties.cpp:360 -msgid "Engineer" -msgstr "Techniker" - -#: src/properties.cpp:360 -msgid "The engineer's name." -msgstr "Der Name des Technikers." - -#: src/properties.cpp:361 -msgid "Tempo" -msgstr "Geschwindigkeit" - -#: src/properties.cpp:361 -msgid "The audio's tempo." -msgstr "Die Geschwindigkeit des Audio." - -#: src/properties.cpp:362 -msgid "Instrument" -msgstr "Instrument" - -#: src/properties.cpp:362 -msgid "The musical instrument." -msgstr "Das musikalische Instrument." - -#: src/properties.cpp:363 -msgid "Intro Time" -msgstr "Introzeit" - -#: src/properties.cpp:363 -msgid "The duration of lead time for queuing music." -msgstr "Die Dauer der Einführungszeit für Wartemusik." - -#: src/properties.cpp:364 -msgid "Out Cue" -msgstr "Out Cue" - -#: src/properties.cpp:364 -msgid "The time at which to fade out." -msgstr "Die Zeit zu der ausgeblendet werden sollte." - -#: src/properties.cpp:365 -msgid "Relative Timestamp" -msgstr "Relativer Zeitstempel" - -#: src/properties.cpp:365 -msgid "The start time of the media inside the audio project." -msgstr "Die Startzeit des Mediums innerhalb des Audioprojektes." - -#: src/properties.cpp:366 -msgid "Loop" -msgstr "Schleife" - -#: src/properties.cpp:366 -msgid "When true, the clip can be looped seemlessly." -msgstr "" -"Wenn dieser gesetzt ist, dann kann der Clip nahtlos in einer Schleife laufen." - -#: src/properties.cpp:367 -msgid "Number Of Beats" -msgstr "Taktanzahl" - -#: src/properties.cpp:367 -msgid "The number of beats." -msgstr "Die Anzahl der Takte." - -#: src/properties.cpp:368 -msgid "Key" -msgstr "Schlüssel" - -#: src/properties.cpp:368 -msgid "" -"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." -msgstr "" -"Der musikalische Schlüssel des Audios. Dies ist einer aus : C, C#, D, D#, E, " -"F, F#, G, G#, A, A#, B." - -#: src/properties.cpp:369 -msgid "Stretch Mode" -msgstr "Stretchmodus" - -#: src/properties.cpp:369 -msgid "" -"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " -"Splice, Hybrid." -msgstr "" -"Der Audio-Stretchmodus ist einer aus: Feste Länge, Zeitskalieren, Resample, " -"Taktverbund und Hybrid." - -#: src/properties.cpp:370 -msgid "Time Scale Parameters" -msgstr "Zeitskalierungsparameter" - -#: src/properties.cpp:370 -msgid "Additional parameters for Time-Scale stretch mode." -msgstr "Zusätzliche Parameter für den Zeitskalierungs-Stretchmodus." - -#: src/properties.cpp:371 -msgid "Resample Parameters" -msgstr "Paramter des Resamples" - -#: src/properties.cpp:371 -msgid "Additional parameters for Resample stretch mode." -msgstr "Zusätzliche Parameter für den Stretchmodus des Resamples" - -#: src/properties.cpp:372 -msgid "Beat Splice Parameters" -msgstr "Parameter des Taktverbundes" - -#: src/properties.cpp:372 -msgid "Additional parameters for Beat Splice stretch mode." -msgstr "Zusätzliche Parameter für den Stretchmodus des Taktverbundes." - -#: src/properties.cpp:373 -msgid "Time Signature" -msgstr "Takt-Signatur" - -#: src/properties.cpp:373 -msgid "" -"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " -"12/8, other." -msgstr "" -"Die Takt-Signatur der Musik ist eine von: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " -"12/8 oder andere." - -#: src/properties.cpp:374 -msgid "Scale Type" -msgstr "Skalierungstyp" - -#: src/properties.cpp:374 -msgid "" -"The musical scale used in the music. One of: Major, Minor, Both, Neither. " -"Neither is most often used for instruments with no associated scale, such as " -"drums." -msgstr "" - -#: src/properties.cpp:381 src/tags.cpp:1071 -msgid "Camera Serial Number" -msgstr "Kamera-Seriennummer" - -#: src/properties.cpp:381 -msgid "Camera Serial Number." -msgstr "Kamera-Seriennummer." - -#: src/properties.cpp:382 -msgid "Date Acquired" -msgstr "Erwerbungsdatum" - -#: src/properties.cpp:382 -msgid "Date Acquired." -msgstr "Erwerbungsdatum." - -#: src/properties.cpp:383 -msgid "Flash Manufacturer" -msgstr "Hersteller des Blitzes." - -#: src/properties.cpp:383 -msgid "Flash Manufacturer." -msgstr "Hersteller des Blitzes." - -#: src/properties.cpp:384 -msgid "Flash Model." -msgstr "Blitzmodell." - -#: src/properties.cpp:385 -msgid "Last Keyword IPTC" -msgstr "Letzter IPTC-Schlüsselbegriff" - -#: src/properties.cpp:385 -msgid "Last Keyword IPTC." -msgstr "Letzter IPTC-Schlüsselbegriff." - -#: src/properties.cpp:386 -msgid "Last Keyword XMP" -msgstr "Letzter XMP-Schlüsselbegriff" - -#: src/properties.cpp:386 -msgid "Last Keyword XMP." -msgstr "Letzter XMP-Schlüsselbegriff." - -#: src/properties.cpp:387 -msgid "Lens Manufacturer" -msgstr "Linsen-Hersteller" - -#: src/properties.cpp:387 -msgid "Lens Manufacturer." -msgstr "Linsen-Hersteller." - -#: src/properties.cpp:388 -msgid "Lens Model." -msgstr "Linsenmodell." - -#: src/properties.cpp:389 -msgid "Rating Percent" -msgstr "Bewertung in Prozent" - -#: src/properties.cpp:389 -msgid "Rating Percent." -msgstr "Bewertung in Prozent." - -#: src/properties.cpp:395 -msgid "Keywords." -msgstr "Schlüsselbegriffe." - -#: src/properties.cpp:396 -msgid "PDF Version" -msgstr "PDF-Version" - -#: src/properties.cpp:396 -msgid "The PDF file version (for example: 1.0, 1.3, and so on)." -msgstr "Die Version der PDF-Datei, z.B. 1.0, 1.3 usw." - -#: src/properties.cpp:397 -msgid "Producer" -msgstr "Hersteller" - -#: src/properties.cpp:397 -msgid "The name of the tool that created the PDF document." -msgstr "Der Name des Werkzeugs, dass das PDF-Dokument erstellt hat." - -#: src/properties.cpp:403 -msgid "Authors Position" -msgstr "Position des Autors." - -#: src/properties.cpp:403 -msgid "By-line title." -msgstr "Titel der Verfasserzeile." - -#: src/properties.cpp:404 -msgid "Caption Writer" -msgstr "Abschnittsautor" - -#: src/properties.cpp:404 -msgid "Writer/editor." -msgstr "Autor/Verfasser" - -#: src/properties.cpp:405 -msgid "Category. Limited to 3 7-bit ASCII characters." -msgstr "Diese Kategorie ist auf drei 7-Bit ASCII-Zeichen beschränkt." - -#: src/properties.cpp:406 -msgid "City." -msgstr "Stadt." - -#: src/properties.cpp:407 -msgid "Country/primary location." -msgstr "Land/Primäre Lokation." - -#: src/properties.cpp:408 -msgid "Credit." -msgstr "Danksagungen." - -#: src/properties.cpp:409 -msgid "" -"The date the intellectual content of the document was created (rather than " -"the creation date of the physical representation), following IIM " -"conventions. For example, a photo taken during the American Civil War would " -"have a creation date during that epoch (1861-1865) rather than the date the " -"photo was digitized for archiving." -msgstr "" - -#: src/properties.cpp:413 -msgid "Headline." -msgstr "Schlagzeile." - -#: src/properties.cpp:414 -msgid "Special instructions." -msgstr "Besondere Anweisungen." - -#: src/properties.cpp:415 -msgid "Source." -msgstr "Quelle." - -#: src/properties.cpp:416 -msgid "State" -msgstr "Staat" - -#: src/properties.cpp:416 -msgid "Province/state." -msgstr "Provinz/Staat." - -#: src/properties.cpp:417 -msgid "Supplemental category." -msgstr "Zusätzliche Kategorie." - -#: src/properties.cpp:418 -msgid "Original transmission reference." -msgstr "Original-Ãœbertragungsreferenz." - -#: src/properties.cpp:419 -msgid "Urgency. Valid range is 1-8." -msgstr "Dringlichkeit. Der gültige Bereich ist 1-8." - -#: src/properties.cpp:427 -msgid "inches" -msgstr "Zoll" - -#: src/properties.cpp:428 src/tags.cpp:242 -msgid "cm" -msgstr "cm" - -#: src/properties.cpp:432 -msgid "Auto Brightness" -msgstr "Automatische Helligkeit" - -#: src/properties.cpp:432 -msgid "When true, \"Brightness\" is automatically adjusted." -msgstr "" -"Wenn diese Option gesetzt ist, dann wird die Helligkeit automatisch justiert." - -#: src/properties.cpp:433 -msgid "Auto Contrast" -msgstr "Autokontrast" - -#: src/properties.cpp:433 -msgid "When true, \"Contrast\" is automatically adjusted." -msgstr "" -"Wenn diese Option gesetzt ist, dann wird der kontrast automatisch justiert." - -#: src/properties.cpp:434 -msgid "Auto Exposure" -msgstr "Automatische Belichtung" - -#: src/properties.cpp:434 -msgid "When true, \"Exposure\" is automatically adjusted." -msgstr "" -"Wenn diese Option gesetzt ist, dann wird die Belichtung automatisch justiert." - -#: src/properties.cpp:435 -msgid "Auto Shadows" -msgstr "Automatisch (Schatten)" - -#: src/properties.cpp:435 -msgid "When true,\"Shadows\" is automatically adjusted." -msgstr "" -"Wenn diese Option gesetzt ist, dann werden die Schatten automatisch justiert." - -#: src/properties.cpp:436 -msgid "Blue Hue" -msgstr "Blauabgleich" - -#: src/properties.cpp:436 -msgid "\"Blue Hue\" setting. Range -100 to 100." -msgstr "Einstellungen des Blauabgleichs. Der Bereich geht von -100 bis 100." - -#: src/properties.cpp:437 -msgid "Blue Saturation" -msgstr "Blau-Sättigung" - -#: src/properties.cpp:437 -msgid "\"Blue Saturation\" setting. Range -100 to +100." -msgstr "Einstellungen der Blausättigung. Der Bereich geht von -100 bis +100." - -#: src/properties.cpp:438 -msgid "\"Brightness\" setting. Range 0 to +150." -msgstr "Die Einstellung der Helligkeit. Der Bereich geht von 0 bis + 150." - -#: src/properties.cpp:439 -msgid "Camera Profile" -msgstr "Kameraprofil" - -#: src/properties.cpp:439 -msgid "\"Camera Profile\" setting." -msgstr "Einstellungen des Kameraprofils." - -#: src/properties.cpp:440 -msgid "Chromatic Aberration Blue" -msgstr "Chromatische Aberration Blau" - -#: src/properties.cpp:440 -msgid "" -"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." -msgstr "" -"Einstellung \"Chromatische Aberration, Blau/Gelb-Ränder korrigieren\". " -"Bereich von -100 bis +100." - -#: src/properties.cpp:441 -msgid "Chromatic Aberration Red" -msgstr "Chromatische Aberration Rot" - -#: src/properties.cpp:441 -msgid "" -"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." -msgstr "" -"Einstellung \"Chromatische Aberration, Rot/Cyan-Ränder korrigieren\". " -"Bereich von -100 bis +100." - -#: src/properties.cpp:442 -msgid "Color Noise Reduction" -msgstr "Farbrauschunterdrückung" - -#: src/properties.cpp:442 -msgid "\"Color Noise Reducton\" setting. Range 0 to +100." -msgstr "" -"Einstellung der \"Farbrauschunterdrückung\". Im Bereich von 0 bis +100." - -#: src/properties.cpp:443 -msgid "\"Contrast\" setting. Range -50 to +100." -msgstr "Einstellung des \"Kontrastes\". Im Bereich von -50 bis +100." - -#: src/properties.cpp:444 -msgid "When \"Has Crop\" is true, top of crop rectangle" -msgstr "" -"Wenn die Option \"Zuschneiden\" gesetzt ist, dann wird das Rechteck oben " -"zugeschnitten" - -#: src/properties.cpp:445 -msgid "When \"Has Crop\" is true, left of crop rectangle." -msgstr "" -"Wenn die Option \"Zuschneiden\" gesetzt ist, dann wird das Rechteck links " -"zugeschnitten" - -#: src/properties.cpp:446 -msgid "Crop Bottom" -msgstr "Unten zuschneiden" - -#: src/properties.cpp:446 -msgid "When \"Has Crop\" is true, bottom of crop rectangle." -msgstr "" -"Wenn die Option \"Zuschneiden\" gesetzt ist, dann wird das Rechteck unten " -"zugeschnitten" - -#: src/properties.cpp:447 -msgid "Crop Right" -msgstr "Rechts zuschneiden" - -#: src/properties.cpp:447 -msgid "When \"Has Crop\" is true, right of crop rectangle." -msgstr "" -"Wenn die Option \"Zuschneiden\" gesetzt ist, dann wird das Rechteck rechts " -"zugeschnitten" - -#: src/properties.cpp:448 -msgid "Crop Angle" -msgstr "Winkel zuschneiden" - -#: src/properties.cpp:448 -msgid "When \"Has Crop\" is true, angle of crop rectangle." -msgstr "" -"Wenn die Option \"Zuschneiden\" gesetzt ist, dann werden die Winkel des " -"Rechtecks zugeschnitten" - -#: src/properties.cpp:449 -msgid "Width of resulting cropped image in CropUnits units." -msgstr "Breite des zugeschnittenen Bildes in zugeschnittenen Einheiten." - -#: src/properties.cpp:450 -msgid "Height of resulting cropped image in CropUnits units." -msgstr "Höhe des zugeschnittenen Bildes in zugeschnittenen Einheiten." - -#: src/properties.cpp:451 -msgid "Crop Units" -msgstr "Zuschnittene Einheiten" - -#: src/properties.cpp:451 -msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" -msgstr "" -"Einheit für \"Breite des Zuschnitts\" und \"Höhe des Zuschnitts\": 0=Pixel, " -"1=Zoll, 2=Zentimeter" - -#: src/properties.cpp:452 -msgid "\"Exposure\" setting. Range -4.0 to +4.0." -msgstr "Einstellung der \"Belichtung\". Im Bereich von -4.0 bis +4.0." - -#: src/properties.cpp:453 -msgid "GreenHue" -msgstr "Grünabgleich" - -#: src/properties.cpp:453 -msgid "\"Green Hue\" setting. Range -100 to +100." -msgstr "Einstellung des \"Grünabgleichs\". Im Bereich von -100 bis +100." - -#: src/properties.cpp:454 -msgid "Green Saturation" -msgstr "Grünsättigung" - -#: src/properties.cpp:454 -msgid "\"Green Saturation\" setting. Range -100 to +100." -msgstr "Einstellung der \"Grünsättigung\". Im Bereich von -100 bis +100." - -#: src/properties.cpp:455 -msgid "Has Crop" -msgstr "Wurde zugeschnitten" - -#: src/properties.cpp:455 -msgid "When true, image has a cropping rectangle." -msgstr "" -"Wenn die Option gesetzt ist, dann hat das Bild ein zuschneidendes Rechteck." - -#: src/properties.cpp:456 -msgid "Has Settings" -msgstr "Besitzt Einstellungen" - -#: src/properties.cpp:456 -msgid "When true, non-default camera raw settings." -msgstr "" -"Wenn diese Option gesetzt ist, dann wurden nicht die Standardeinstellungen " -"der Kamera genutzt." - -#: src/properties.cpp:457 -msgid "Luminance Smoothing" -msgstr "" - -#: src/properties.cpp:457 -#, fuzzy -msgid "\"Luminance Smoothing\" setting. Range 0 to +100." -msgstr "Einstellungen der Blausättigung. Der Bereich geht von -100 bis +100." - -#: src/properties.cpp:458 -msgid "Raw File Name" -msgstr "Rohdateiname" - -#: src/properties.cpp:458 -msgid "File name of raw file (not a complete path)." -msgstr "Dateiname der Rohdatei (nicht der komplette Pfad)." - -#: src/properties.cpp:459 -msgid "Red Hue" -msgstr "Rotabgleich" - -#: src/properties.cpp:459 -msgid "\"Red Hue\" setting. Range -100 to +100." -msgstr "Einstellung des \"Rotabgleichs\". Im Bereich von -100 bis +100." - -#: src/properties.cpp:460 -msgid "Red Saturation" -msgstr "Rotsättigung" - -#: src/properties.cpp:460 -msgid "\"Red Saturation\" setting. Range -100 to +100." -msgstr "Einstellungen der \"Rotsättigung\". Im Bereich von -100 bis +100." - -#: src/properties.cpp:461 -msgid "\"Saturation\" setting. Range -100 to +100." -msgstr "Einstellungen der\"Sättigung\". Im Bereich von -100 bis +100." - -#: src/properties.cpp:462 -msgid "Shadows" -msgstr "Schatten" - -#: src/properties.cpp:462 -msgid "\"Shadows\" setting. Range 0 to +100." -msgstr "Einstellungen der\"Schatten\". Im Bereich von 0 bis +100." - -#: src/properties.cpp:463 -msgid "Shadow Tint" -msgstr "Dunkle Tinte" - -#: src/properties.cpp:463 -msgid "\"Shadow Tint\" setting. Range -100 to +100." -msgstr "Einstellungen der\"dunklen Tinte\". Im Bereich von -100 bis +100." - -#: src/properties.cpp:464 -msgid "\"Sharpness\" setting. Range 0 to +100." -msgstr "Einstellungen der\"Schärfe\". Im Bereich von 0 bis +100." - -#: src/properties.cpp:465 -msgid "\"Temperature\" setting. Range 2000 to 50000." -msgstr "Einstellungen der\"Temperatur\". Im Bereich von 2000 bis 50000." - -#: src/properties.cpp:466 -msgid "Tint" -msgstr "Tinte" - -#: src/properties.cpp:466 -msgid "\"Tint\" setting. Range -150 to +150." -msgstr "Einstellungen der \"Tinte\". Im Bereich von -150 bis +150." - -#: src/properties.cpp:467 -msgid "Tone Curve" -msgstr "Farbtonkurve" - -#: src/properties.cpp:467 -msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." -msgstr "" -"Vektor von Punkten (Ganzzahlig, Ganzzahlig) der eine \"Farbtonkurve\" " -"beschreibt." - -#: src/properties.cpp:468 -msgid "Tone Curve Name" -msgstr "Name der Farbtonkurve" - -#: src/properties.cpp:468 -msgid "" -"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " -"Contrast, Strong Contrast, Custom or a user-defined preset name." -msgstr "" -"Der Name der Farbtonkurve ist einer der folgenden: Linear, Mittler Kontrast, " -"Starker Kontrast, Anwendungsspezifisch oder ein benutzerdefinierter " -"voreingestellter Name." - -#: src/properties.cpp:470 -msgid "Version of Camera Raw plugin." -msgstr "Version des Kamerarohmoduls." - -#: src/properties.cpp:471 -msgid "Vignette Amount" -msgstr "Vignettierungsmenge" - -#: src/properties.cpp:471 -msgid "\"Vignetting Amount\" setting. Range -100 to +100." -msgstr "" -"Einstellungen der \"Vignettierungsmenge\". Im Bereich von -100 bis +100." - -#: src/properties.cpp:472 -msgid "Vignette Midpoint" -msgstr "Vignettierungsmittelpunkt" - -#: src/properties.cpp:472 -msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." -msgstr "" -"Einstellung des \"Vignettierungsmittelpunkt\". Im Bereich von -150 bis +150." - -#: src/properties.cpp:473 -msgid "" -"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " -"Tungsten, Fluorescent, Flash, Custom" -msgstr "" - -#: src/properties.cpp:480 -msgid "TIFF tag 256, 0x100. Image width in pixels." -msgstr "TIFF-Feld 256, 0x100: Bildbreite in Pixeln." - -#: src/properties.cpp:481 src/tags.cpp:420 -msgid "Image Length" -msgstr "Bildlänge" - -#: src/properties.cpp:481 -msgid "TIFF tag 257, 0x101. Image height in pixels." -msgstr "TIFF-Feld 257, 0x101: Bildbreite in Pixeln." - -#: src/properties.cpp:482 -msgid "Bits Per Sample" -msgstr "Bits pro Abtastung" - -#: src/properties.cpp:482 -msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." -msgstr "TIFF-Feld 258, 0x102: Anzahl der Bits pro Komponente in jedem Kanal." - -#: src/properties.cpp:483 src/tags.cpp:430 -msgid "Compression" -msgstr "Kompression" - -#: src/properties.cpp:483 -msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." -msgstr "" -"TIFF-Feld 259, 0x103: Kompressionsschema: 1 = keine Kompression; 6 = JPEG." - -#: src/properties.cpp:484 src/tags.cpp:436 -msgid "Photometric Interpretation" -msgstr "Fotometrische Interpretation" - -#: src/properties.cpp:484 -msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." -msgstr "TIFF-Feld 262, 0x106, Pixelzusammensetzung: 2 = RGB; 6 = YCbCr." - -#: src/properties.cpp:485 -msgid "" -"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " -"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " -"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " -"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " -"0th column at bottom 8 = 0th row at left, 0th column at bottom" -msgstr "" - -#: src/properties.cpp:494 -msgid "Samples Per Pixel" -msgstr "Abtastung pro Pixel" - -#: src/properties.cpp:494 -msgid "TIFF tag 277, 0x115. Number of components per pixel." -msgstr "TIFF-Feld 277, 0x115: Anzahl der Komponenten pro Pixel." - -#: src/properties.cpp:495 src/tags.cpp:510 -msgid "Planar Configuration" -msgstr "Planar Konfiguration" - -#: src/properties.cpp:495 -msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." -msgstr "TIFF-Feld 284, 0x11C. Datenlayout:1 = kompakt; 2 = flach." - -#: src/properties.cpp:496 -msgid "YCbCr Sub Sampling" -msgstr "YCbCr Sub Sampling" - -#: src/properties.cpp:496 -msgid "" -"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " -"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" -msgstr "" - -#: src/properties.cpp:498 src/tags.cpp:713 -msgid "YCbCr Positioning" -msgstr "YCbCr Positionierung" - -#: src/properties.cpp:498 -msgid "" -"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " -"centered; 2 = co-sited." -msgstr "" - -#: src/properties.cpp:500 -msgid "X Resolution" -msgstr "x-Auflösung" - -#: src/properties.cpp:500 -msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." -msgstr "TIFF-Feld 282, 0x11A. Horizontale Auflösung in Pixeln pro Einheit." - -#: src/properties.cpp:501 -msgid "Y Resolution" -msgstr "y-Auflösung" - -#: src/properties.cpp:501 -msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." -msgstr "TIFF-Feld 283, 0x11B. Vertikale Auflösung in Pixeln pro Einheit." - -#: src/properties.cpp:502 src/tags.cpp:528 -msgid "Resolution Unit" -msgstr "Maßeinheit der Auflösung" - -#: src/properties.cpp:502 -msgid "" -"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " -"of: 2 = inches; 3 = centimeters." -msgstr "" -"TIFF-Feld 296, 0x128. Die für die x- und y-Auflösung benutzten Einheiten. " -"Der Wert ist: 2 = Zoll; 3 = Zentimeter." - -#: src/properties.cpp:504 src/tags.cpp:533 -msgid "Transfer Function" -msgstr "(Farb)transfer Funktion" - -#: src/properties.cpp:504 -msgid "" -"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " -"with 3 * 256 entries." -msgstr "" - -#: src/properties.cpp:506 src/tags.cpp:565 -msgid "White Point" -msgstr "Weißpunkt" - -#: src/properties.cpp:506 -msgid "TIFF tag 318, 0x13E. Chromaticity of white point." -msgstr "TIFF-Feld 318, 0x13E. Chromatizität des Weißpunktes." - -#: src/properties.cpp:507 src/tags.cpp:570 -msgid "Primary Chromaticities" -msgstr "Primäre Chromazität" - -#: src/properties.cpp:507 -msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." -msgstr "TIFF-Feld 319, 0x13F. Chromatizität der drei Primärfarben." - -#: src/properties.cpp:508 -msgid "" -"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." -msgstr "" - -#: src/properties.cpp:509 -msgid "Reference Black White" -msgstr "Schwarz/Weiß-Referenz" - -#: src/properties.cpp:509 -#, fuzzy -msgid "TIFF tag 532, 0x214. Reference black and white point values." -msgstr "TIFF-Feld 318, 0x13E. Chromatizität des Weißpunktes." - -#: src/properties.cpp:510 src/tags.cpp:545 -msgid "Date and Time" -msgstr "Datum und Uhrzeit" - -#: src/properties.cpp:510 -msgid "" -"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " -"and time of image creation (no time zone in EXIF), stored in ISO 8601 " -"format, not the original EXIF format. This property includes the value for " -"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" -"ModifyDate." -msgstr "" - -#: src/properties.cpp:516 src/tags.cpp:458 -msgid "Image Description" -msgstr "Bildbeschreibung" - -#: src/properties.cpp:516 -msgid "" -"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " -"in XMP as dc:description." -msgstr "" -"TIFF-Feld 270, 0x10E. Beschreibung des Bildes. Achtung: Diese Eigenschaft " -"wird in XMP unter dc:description gespeichert." - -#: src/properties.cpp:517 -msgid "Make" -msgstr "Hersteller" - -#: src/properties.cpp:517 -msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." -msgstr "TIFF-Feld 271, 0x10F. Hersteller der Aufnahmeausrüstung." - -#: src/properties.cpp:518 -msgid "TIFF tag 272, 0x110. Model name or number of equipment." -msgstr "TIFF-Feld 272, 0x110. Modellname oder -nummer der Ausrüstung." - -#: src/properties.cpp:519 -msgid "" -"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " -"property is stored in XMP as xmp:CreatorTool. " -msgstr "" -"TIFF-Feld 305, 0x131. Software oder Firmware, die benutzt wurde um die " -"Bilder zu erstellen. Achtung: Diese Eigenschaft wird in XMP unter xmp:" -"CreatorTool gespeichert." - -#: src/properties.cpp:521 -msgid "" -"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " -"property is stored in XMP as the first item in the dc:creator array." -msgstr "" -"TIFF-Feld 315, 0x13B. Kamerabesitzer, Fotograph oder Bildersteller. Achtung: " -"Diese Eigenschaft wird in XMP als erster Eintrag im Feld dc:creator " -"gespeichert." - -#: src/properties.cpp:523 -#, fuzzy -msgid "" -"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " -"in XMP as dc:rights." -msgstr "" -"TIFF-Feld 270, 0x10E. Beschreibung des Bildes. Achtung: Diese Eigenschaft " -"wird in XMP unter dc:description gespeichert." - -#: src/properties.cpp:530 src/tags.cpp:1598 -msgid "Exif Version" -msgstr "Exif-Version" - -#: src/properties.cpp:530 -msgid "EXIF tag 36864, 0x9000. EXIF version number." -msgstr "Exif-Feld 36864, 0x9000. Exif-Versionsnummer." - -#: src/properties.cpp:531 -msgid "Flashpix Version" -msgstr "FlashPix Version" - -#: src/properties.cpp:531 -msgid "EXIF tag 40960, 0xA000. Version of FlashPix." -msgstr "Exif-Feld 40960, 0xA000. Version des FlashPix." - -#: src/properties.cpp:532 -msgid "EXIF tag 40961, 0xA001. Color space information" -msgstr "Exif-Feld 40961, 0xA001. Informationen über den Farbraum." - -#: src/properties.cpp:533 src/tags.cpp:1609 -msgid "Components Configuration" -msgstr "Komponentenkonfiguration" - -#: src/properties.cpp:533 -msgid "" -"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " -"compressed data), 1 2 3 0 (other cases)." -msgstr "" - -#: src/properties.cpp:535 src/tags.cpp:818 -msgid "Compressed Bits Per Pixel" -msgstr "Komprimierte Bits pro Pixel" - -#: src/properties.cpp:535 -msgid "" -"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " -"indicated in unit bits per pixel." -msgstr "" -"Exif-Feld 37122, 0x9102. Kompressionsmodus der benutzt wurde, um das Bild zu " -"komprimieren in der Einheit Bits pro Pixel." - -#: src/properties.cpp:537 src/tags.cpp:1693 -msgid "Pixel X Dimension" -msgstr "Pixel X-Dimension" - -#: src/properties.cpp:537 -msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." -msgstr "Exif-Feld 40962, 0xA002. Gültige Bildbreite in Pixeln." - -#: src/properties.cpp:538 src/tags.cpp:1700 -msgid "Pixel Y Dimension" -msgstr "Pixel Y-Dimension" - -#: src/properties.cpp:538 -msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." -msgstr "Exif-Feld 40963, 0xA003. Gültige Bildhöhe in Pixeln." - -#: src/properties.cpp:539 src/tags.cpp:1667 -msgid "User Comment" -msgstr "Anmerkung des Nutzers" - -#: src/properties.cpp:539 -msgid "EXIF tag 37510, 0x9286. Comments from user." -msgstr "Exif-Feld 37510, 0x9286. Kommentar des Benutzers." - -#: src/properties.cpp:540 src/tags.cpp:1709 -msgid "Related Sound File" -msgstr "Zugehörige Audiodatei" - -#: src/properties.cpp:540 -msgid "" -"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." -msgstr "" -"Exif-Feld 40964, 0xA004. Ein \"8.3\" Dateiname für die zugehörige Sounddatei." - -#: src/properties.cpp:541 -msgid "Date and Time Original" -msgstr "Datum und Uhrzeit (Original)" - -#: src/properties.cpp:541 -msgid "" -"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " -"time when original image was generated, in ISO 8601 format. Includes the " -"EXIF SubSecTimeOriginal data." -msgstr "" -"Exif-Feld 36867, 0x9003 (primär) und 37521, 0x9291 (Sekundenbruchteile). " -"Datum und Zeit, im ISO 8601-Format, an dem das Originalbild erstellt wurde. " -"Enthält die Exif-SubSecTimeOriginal Daten." - -#: src/properties.cpp:544 -msgid "Date and Time Digitized" -msgstr "Datum und Uhrzeit (Digitalisiert)" - -#: src/properties.cpp:544 -msgid "" -"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " -"time when image was stored as digital data, can be the same as " -"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " -"format. Includes the EXIF SubSecTimeDigitized data." -msgstr "" -"Exif-Feld 36868, 0x9004 (primär) und 37522, 0x9292 (Sekundenbruchteilen). " -"Datum und Zeit zu dem das Bild als digitale Daten gespeichert wurde. Der " -"Wert is identisch mit DateTimeOriginal, falls das Bild im original digital " -"gespeichert wurde. Gespeichert wird im ISO 8601-Format und enthält die Exif-" -"SubSecTimeDigitized-Daten." - -#: src/properties.cpp:548 -msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." -msgstr "Exif-Feld 33434, 0x829A. Belichtungszeit in Sekunden." - -#: src/properties.cpp:549 -msgid "F Number" -msgstr "Blende" - -#: src/properties.cpp:549 -msgid "EXIF tag 33437, 0x829D. F number." -msgstr "Exif-Feld 33437, 0x829D. Blende." - -#: src/properties.cpp:550 -msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." -msgstr "" -"Exif-Feld 34850, 0x8822. Klasse des Programmes das für die Belichtung " -"benutzt wurde." - -#: src/properties.cpp:551 src/tags.cpp:800 src/tags.cpp:1552 -msgid "Spectral Sensitivity" -msgstr "Spektrale Empfindlichkeit" - -#: src/properties.cpp:551 -msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." -msgstr "Exif-Feld 34852, 0x8824. Spektrale Empfindlichkeit jedes Kanals." - -#: src/properties.cpp:552 -msgid "ISOSpeedRatings" -msgstr "ISO Geschwindigkeitsangabe" - -#: src/properties.cpp:552 -msgid "" -"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " -"specified in ISO 12232." -msgstr "" -"Exif-Feld 34855, 0x8827. Gibt die ISO Geschwindigkeit und -breite der Kamera " -"bzw. des Eingabegeräts an, wie in ISO 12232 spezifiziert." - -#: src/properties.cpp:554 src/tags.cpp:807 -msgid "OECF" -msgstr "OECF" - -#: src/properties.cpp:554 -msgid "" -"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " -"ISO 14524." -msgstr "" -"Exif-Feld 34856, 0x8828. Verfahren zur Messung optoelektronischer Kennlinien " -"wie in ISO 14524 spezifiziert." - -#: src/properties.cpp:555 -msgid "" -"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " -"specification." -msgstr "" -"Exif-Feld 37377, 0x9201. Verschlussgeschwindigkeit. Die Einheit ist APEX. " -"Siehe auch Anhang C der Exif-Spezifikation." - -#: src/properties.cpp:556 -msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." -msgstr "Exif-Feld 37378, 0x9202. Linsenblende, Einheit ist APEX." - -#: src/properties.cpp:557 src/tags.cpp:821 -msgid "Brightness Value" -msgstr "Helligkeitswert" - -#: src/properties.cpp:557 -msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." -msgstr "Exif-Feld 37379, 0x9203. Helligkeit, Einheit ist APEX." - -#: src/properties.cpp:558 -msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." -msgstr "Exif-Feld 37380, 0x9204. Belichtungsfehler, Einheit ist APEX." - -#: src/properties.cpp:559 -msgid "Maximum Aperture Value" -msgstr "Maximale Blende" - -#: src/properties.cpp:559 -msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." -msgstr "Exif-Feld 37381, 0x9205. Die kleineste Blende der Linse, in APEX." - -#: src/properties.cpp:560 -msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." -msgstr "Exif-Feld 37382, 0x9206. Die Entfernung zum Motiv (in Metern)." - -#: src/properties.cpp:561 -#, fuzzy -msgid "EXIF tag 37383, 0x9207. Metering mode." -msgstr "Exif-Feld 37382, 0x9206. Die Entfernung zum Motiv (in Metern)." - -#: src/properties.cpp:562 -#, fuzzy -msgid "EXIF tag 37384, 0x9208. Light source." -msgstr "Exif-Feld 33437, 0x829D. Blende." - -#: src/properties.cpp:563 -msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." -msgstr "" - -#: src/properties.cpp:564 -#, fuzzy -msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." -msgstr "Exif-Feld 37382, 0x9206. Die Entfernung zum Motiv (in Metern)." - -#: src/properties.cpp:565 src/tags.cpp:1659 -msgid "Subject Area" -msgstr "Motivbereich" - -#: src/properties.cpp:565 -msgid "" -"EXIF tag 37396, 0x9214. The location and area of the main subject in the " -"overall scene." -msgstr "" -"Exif-Feld 37396, 0x9214. Dieses Feld gibt die Position und Größe des " -"Hauptmotivs in der Szene an." - -#: src/properties.cpp:566 src/tags.cpp:829 src/tags.cpp:1724 -msgid "Flash Energy" -msgstr "Energie des Blitzes" - -#: src/properties.cpp:566 -msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." -msgstr "" - -#: src/properties.cpp:567 src/tags.cpp:830 src/tags.cpp:1728 -msgid "Spatial Frequency Response" -msgstr "" - -#: src/properties.cpp:567 -#, fuzzy -msgid "" -"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " -"as specified in ISO 12233." -msgstr "" -"Exif-Feld 34855, 0x8827. Gibt die ISO Geschwindigkeit und -breite der Kamera " -"bzw. des Eingabegeräts an, wie in ISO 12232 spezifiziert." - -#: src/properties.cpp:569 src/tags.cpp:832 -msgid "Focal Plane X Resolution" -msgstr "Fokusebene x-Auflösung" - -#: src/properties.cpp:569 -#, fuzzy -msgid "" -"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " -"unit." -msgstr "TIFF-Feld 282, 0x11A. Horizontale Auflösung in Pixeln pro Einheit." - -#: src/properties.cpp:570 src/tags.cpp:833 -msgid "Focal Plane Y Resolution" -msgstr "Fokusebene y-Auflösung" - -#: src/properties.cpp:570 -#, fuzzy -msgid "" -"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " -"unit." -msgstr "TIFF-Feld 283, 0x11B. Vertikale Auflösung in Pixeln pro Einheit." - -#: src/properties.cpp:571 src/tags.cpp:834 src/tags.cpp:1741 -msgid "Focal Plane Resolution Unit" -msgstr "Einheit der Angaben der Fokusebene" - -#: src/properties.cpp:571 -msgid "" -"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " -"FocalPlaneYResolution." -msgstr "" - -#: src/properties.cpp:572 src/tags.cpp:838 src/tags.cpp:1745 -msgid "Subject Location" -msgstr "Ort des Motivs" - -#: src/properties.cpp:572 -msgid "" -"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " -"value is the horizontal pixel and the second value is the vertical pixel at " -"which the main subject appears." -msgstr "" - -#: src/properties.cpp:575 src/tags.cpp:839 -msgid "Exposure Index" -msgstr "Belichtungsindex" - -#: src/properties.cpp:575 -#, fuzzy -msgid "EXIF tag 41493, 0xA215. Exposure index of input device." -msgstr "" -"Exif-Feld 41495, 0xA217. Gibt den Sensortyp in der Kamera bzw. Eingabegerät " -"an." - -#: src/properties.cpp:576 src/tags.cpp:844 src/tags.cpp:1756 -msgid "Sensing Method" -msgstr "Bildsensor" - -#: src/properties.cpp:576 -msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." -msgstr "" -"Exif-Feld 41495, 0xA217. Gibt den Sensortyp in der Kamera bzw. Eingabegerät " -"an." - -#: src/properties.cpp:577 -#, fuzzy -msgid "EXIF tag 41728, 0xA300. Indicates image source." -msgstr "Exif-Feld 41996, 0xA40C gibt den Abstand zum Motiv an." - -#: src/properties.cpp:578 src/tags.cpp:1764 -msgid "Scene Type" -msgstr "Szenentyp" - -#: src/properties.cpp:578 -#, fuzzy -msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." -msgstr "Exif-Feld 41996, 0xA40C gibt den Abstand zum Motiv an." - -#: src/properties.cpp:579 src/tags.cpp:754 -msgid "CFA Pattern" -msgstr "CFA Pattern" - -#: src/properties.cpp:579 -msgid "" -"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " -"sense." -msgstr "" - -#: src/properties.cpp:580 src/tags.cpp:1774 -msgid "Custom Rendered" -msgstr "Besondere Verarbeitung" - -#: src/properties.cpp:580 -#, fuzzy -msgid "" -"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " -"data." -msgstr "" -"Exif-Feld 41986, 0xA402. Dieses Feld enthält den Belichtungsmodus, der zur " -"Aufnahme eingestellt war." - -#: src/properties.cpp:581 -msgid "" -"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " -"shot." -msgstr "" -"Exif-Feld 41986, 0xA402. Dieses Feld enthält den Belichtungsmodus, der zur " -"Aufnahme eingestellt war." - -#: src/properties.cpp:582 -msgid "" -"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " -"was shot." -msgstr "" -"Exif-Feld 41987, 0xA403 enthält den Weißabgleichsmodus, der zur Aufnahme " -"eingestellt war." - -#: src/properties.cpp:583 src/tags.cpp:1788 -msgid "Digital Zoom Ratio" -msgstr "Digitale Zoomrate" - -#: src/properties.cpp:583 -msgid "" -"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " -"shot." -msgstr "" -"EXIF-Feld 41988, 0xA404 gibt den Grad des digitalen Zooms an mit dem das " -"Bild aufgenommen wurde." - -#: src/properties.cpp:584 src/tags.cpp:1793 -msgid "Focal Length In 35mm Film" -msgstr "Brennweite in 35mm Film" - -#: src/properties.cpp:584 -msgid "" -"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " -"35mm film camera, in mm. A value of 0 means the focal length is unknown. " -"Note that this tag differs from the FocalLength tag." -msgstr "" -"Dieses Feld gibt die äquivalente Brennweite bei angenommener 35mm Filmkamera " -"an. Der Wert 0 bedeutet das die Brennweite unbekannt ist. Es unterscheidet " -"sich vom Feld." - -#: src/properties.cpp:587 src/tags.cpp:1799 -msgid "Scene Capture Type" -msgstr "Szenenmodus" - -#: src/properties.cpp:587 -#, fuzzy -msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." -msgstr "" -"Exif-Feld 41986, 0xA402. Dieses Feld enthält den Belichtungsmodus, der zur " -"Aufnahme eingestellt war." - -#: src/properties.cpp:588 src/tags.cpp:1804 -msgid "Gain Control" -msgstr "Körnungskontrolle" - -#: src/properties.cpp:588 -#, fuzzy -msgid "" -"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " -"adjustment." -msgstr "" -"Exif-Feld 41986, 0xA402. Dieses Feld enthält den Belichtungsmodus, der zur " -"Aufnahme eingestellt war." - -#: src/properties.cpp:589 -msgid "" -"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " -"applied by the camera." -msgstr "" -"Exif-Feld 41992, 0xA408 gibt die Richtung der Kontrastbearbeitung an, die " -"bei der Aufnahme des Bildes angewandt wurde." - -#: src/properties.cpp:590 -msgid "" -"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " -"applied by the camera." -msgstr "" -"Exif-Feld 41993, 0xA409 gibt die Richtung der Sättigungsbearbeitung an, die " -"bei der Aufnahme des Bildes angewandt wurde." - -#: src/properties.cpp:591 -msgid "" -"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " -"applied by the camera." -msgstr "" -"Exif-Feld 41994, 0xA40A gibt die Richtung der Schärfebearbeitung bei der " -"Aufnahme des Bildes an." - -#: src/properties.cpp:592 src/tags.cpp:1819 -msgid "Device Setting Description" -msgstr "Beschreibung der Geräteeinstellungen" - -#: src/properties.cpp:592 -#, fuzzy -msgid "" -"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " -"conditions of a particular camera model." -msgstr "" -"Dieses Feld enthält Informationen über die Bildaufnahmebedingungen eines " -"bestimmten Kameramodells. Es wird nur zur Angabe der Bedingungen im Leser " -"benutzt." - -#: src/properties.cpp:593 src/tags.cpp:1824 -msgid "Subject Distance Range" -msgstr "Motivabstand" - -#: src/properties.cpp:593 -msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." -msgstr "Exif-Feld 41996, 0xA40C gibt den Abstand zum Motiv an." - -#: src/properties.cpp:594 src/tags.cpp:1827 -msgid "Image Unique ID" -msgstr "Eindeutige Bildnummer" - -#: src/properties.cpp:594 -msgid "" -"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " -"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " -"and 128-bit fixed length." -msgstr "" -"Exif-Feld 42016, 0xA420. Dieses Feld gibt einen eindeutigen Bild-" -"Identifikator an. Er wird als ASCII-Zeichenkette in mit einer Länge von 32 " -"Zeichen aufgezeichnet und hat damit in hexadezimaler Notation eine 128 Bit " -"Länge ." - -#: src/properties.cpp:596 src/tags.cpp:1927 -msgid "GPS Version ID" -msgstr "GPS Version ID" - -#: src/properties.cpp:596 -msgid "" -"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " -"period separators. The current value is \"2.0.0.0\"." -msgstr "" - -#: src/properties.cpp:598 src/tags.cpp:1938 -msgid "GPS Latitude" -msgstr "GPS-Breitengrad" - -#: src/properties.cpp:598 -msgid "" -"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." -msgstr "" - -#: src/properties.cpp:599 src/tags.cpp:1950 -msgid "GPS Longitude" -msgstr "GPS-Längengrad" - -#: src/properties.cpp:599 -msgid "" -"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." -msgstr "" - -#: src/properties.cpp:600 src/tags.cpp:1958 -msgid "GPS Altitude Reference" -msgstr "GPS-Höhenreferenz" - -#: src/properties.cpp:600 -#, fuzzy -msgid "" -"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." -msgstr "GPS-Feld 6, 0x06 gibt die Höhe in Metern an." - -#: src/properties.cpp:601 src/tags.cpp:1966 -msgid "GPS Altitude" -msgstr "GPS-Höhe" - -#: src/properties.cpp:601 -msgid "GPS tag 6, 0x06. Indicates altitude in meters." -msgstr "GPS-Feld 6, 0x06 gibt die Höhe in Metern an." - -#: src/properties.cpp:602 src/tags.cpp:1970 -msgid "GPS Time Stamp" -msgstr "GPS-Zeitstempel" - -#: src/properties.cpp:602 -msgid "" -"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " -"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " -"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " -"present, the date component for the XMP should be taken from exif:" -"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " -"no date is available, do not write exif:GPSTimeStamp to XMP." -msgstr "" - -#: src/properties.cpp:608 src/tags.cpp:1975 -msgid "GPS Satellites" -msgstr "GPS-Satelliten" - -#: src/properties.cpp:608 -msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." -msgstr "" - -#: src/properties.cpp:609 src/tags.cpp:1982 -msgid "GPS Status" -msgstr "GPS-Status" - -#: src/properties.cpp:609 -#, fuzzy -msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." -msgstr "GPS-Feld 26, 0x1A. Die Entfernung zum Objekt (in Metern)." - -#: src/properties.cpp:610 src/tags.cpp:1987 -msgid "GPS Measure Mode" -msgstr "GPS-Messungsmodus" - -#: src/properties.cpp:610 -msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." -msgstr "" - -#: src/properties.cpp:611 -msgid "GPS DOP" -msgstr "" - -#: src/properties.cpp:611 -msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." -msgstr "GPS-Feld 11, 0x0B. Grad der Präzision der GPS-Daten" - -#: src/properties.cpp:612 src/tags.cpp:1995 -msgid "GPS Speed Reference" -msgstr "GPS-Geschwindigkeitsreferenz" - -#: src/properties.cpp:612 -#, fuzzy -msgid "GPS tag 12, 0x0C. Units used to speed measurement." -msgstr "GPS-Feld 26, 0x1A. Die Entfernung zum Objekt (in Metern)." - -#: src/properties.cpp:613 src/tags.cpp:1999 -msgid "GPS Speed" -msgstr "GPS-Geschwindigkeit" - -#: src/properties.cpp:613 -#, fuzzy -msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." -msgstr "GPS-Feld 11, 0x0B. Grad der Präzision der GPS-Daten" - -#: src/properties.cpp:614 -msgid "GPS Track Reference" -msgstr "GPS-Spurreferenz" - -#: src/properties.cpp:614 -#, fuzzy -msgid "GPS tag 14, 0x0E. Reference for movement direction." -msgstr "GPS-Feld 26, 0x1A. Die Entfernung zum Objekt (in Metern)." - -#: src/properties.cpp:615 src/tags.cpp:2006 -msgid "GPS Track" -msgstr "GPS-Spur" - -#: src/properties.cpp:615 -#, fuzzy -msgid "" -"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." -msgstr "" -"GPS-Feld 17, 0x11. Gibt die Richtung an in der das Bild gemacht wurde. Der " -"Wertebereich geht von 0,00 bis 359,99." - -#: src/properties.cpp:616 src/tags.cpp:2010 -#, fuzzy -msgid "GPS Image Direction Reference" -msgstr "GPS-Bildrichtung" - -#: src/properties.cpp:616 -#, fuzzy -msgid "GPS tag 16, 0x10. Reference for image direction." -msgstr "GPS-Feld 26, 0x1A. Die Entfernung zum Objekt (in Metern)." - -#: src/properties.cpp:617 src/tags.cpp:2014 -msgid "GPS Image Direction" -msgstr "GPS-Bildrichtung" - -#: src/properties.cpp:617 -msgid "" -"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " -"359.99." -msgstr "" -"GPS-Feld 17, 0x11. Gibt die Richtung an in der das Bild gemacht wurde. Der " -"Wertebereich geht von 0,00 bis 359,99." - -#: src/properties.cpp:618 src/tags.cpp:2018 -#, fuzzy -msgid "GPS Map Datum" -msgstr "GPS-Status" - -#: src/properties.cpp:618 -#, fuzzy -msgid "GPS tag 18, 0x12. Geodetic survey data." -msgstr "GPS-Feld 11, 0x0B. Grad der Präzision der GPS-Daten" - -#: src/properties.cpp:619 src/tags.cpp:2026 -msgid "GPS Destination Latitude" -msgstr "GPS Breitengrad des Ziels" - -#: src/properties.cpp:619 -msgid "" -"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " -"destination latitude." -msgstr "" - -#: src/properties.cpp:620 src/tags.cpp:2038 -msgid "GPS Destination Longitude" -msgstr "GPS Längengrad des Ziels" - -#: src/properties.cpp:620 -msgid "" -"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " -"longitude." -msgstr "" - -#: src/properties.cpp:621 src/tags.cpp:2045 -msgid "GPS Destination Bearing Reference" -msgstr "GPS Referenz zur Richtung zum Ziel" - -#: src/properties.cpp:621 -#, fuzzy -msgid "GPS tag 23, 0x17. Reference for movement direction." -msgstr "GPS-Feld 26, 0x1A. Die Entfernung zum Objekt (in Metern)." - -#: src/properties.cpp:622 src/tags.cpp:2049 -msgid "GPS Destination Bearing" -msgstr "GPS Richtung zum Ziel" - -#: src/properties.cpp:622 -#, fuzzy -msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." -msgstr "" -"GPS-Feld 17, 0x11. Gibt die Richtung an in der das Bild gemacht wurde. Der " -"Wertebereich geht von 0,00 bis 359,99." - -#: src/properties.cpp:623 -msgid "GPS Destination Distance Refefrence" -msgstr "GPS Referenz zur Entfernung des Objektes" - -#: src/properties.cpp:623 -#, fuzzy -msgid "GPS tag 25, 0x19. Units used for speed measurement." -msgstr "GPS-Feld 26, 0x1A. Die Entfernung zum Objekt (in Metern)." - -#: src/properties.cpp:624 src/tags.cpp:2057 -msgid "GPS Destination Distance" -msgstr "GPS Entfernung des Objekts" - -#: src/properties.cpp:624 -msgid "GPS tag 26, 0x1A. Distance to destination." -msgstr "GPS-Feld 26, 0x1A. Die Entfernung zum Objekt (in Metern)." - -#: src/properties.cpp:625 src/tags.cpp:2060 -msgid "GPS Processing Method" -msgstr "GPS Verarbeitungsmethode" - -#: src/properties.cpp:625 -msgid "" -"GPS tag 27, 0x1B. A character string recording the name of the method used " -"for location finding." -msgstr "" - -#: src/properties.cpp:626 src/tags.cpp:2065 -msgid "GPS Area Information" -msgstr "GPS Bereichsinformation" - -#: src/properties.cpp:626 -msgid "" -"GPS tag 28, 0x1C. A character string recording the name of the GPS area." -msgstr "" - -#: src/properties.cpp:627 src/tags.cpp:2073 -msgid "GPS Differential" -msgstr "" - -#: src/properties.cpp:627 -#, fuzzy -msgid "" -"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " -"the GPS receiver." -msgstr "GPS-Feld 6, 0x06 gibt die Höhe in Metern an." - -#: src/properties.cpp:633 -msgid "" -"A description of the lens used to take the photograph. For example, \"70-200 " -"mm f/2.8-4.0\"." -msgstr "" - -#: src/properties.cpp:634 -msgid "SerialNumber" -msgstr "Seriennummer" - -#: src/properties.cpp:634 -msgid "" -"The serial number of the camera or camera body used to take the photograph." -msgstr "" -"Die Seriennummer der Kamera oder des Kamerakörpers mit dem das Foto gemacht " -"wurde." - -#: src/properties.cpp:640 -msgid "Contact Info-City" -msgstr "Kontaktinfo-Stadt" - -#: src/properties.cpp:640 -msgid "The contact information city part." -msgstr "Der Teil der Kontaktinformation für die Stadt." - -#: src/properties.cpp:641 -msgid "Contact Info-Country" -msgstr "Kontaktinfo-Land" - -#: src/properties.cpp:641 -msgid "The contact information country part." -msgstr "Der Teil der Kontaktinformation für das Land." - -#: src/properties.cpp:642 -msgid "Contact Info-Address" -msgstr "Kontaktinfo-Adresse" - -#: src/properties.cpp:642 -msgid "" -"The contact information address part. Comprises an optional company name and " -"all required information to locate the building or postbox to which mail " -"should be sent." -msgstr "" -"Der Teil der Kontaktinformation für die Adresse. Besteht aus einem " -"optionalen Firmennamen und alle benötigten Informationen um das Gebäude oder " -"das Postfach zu finden, um Briefe dort hin zusenden." - -#: src/properties.cpp:644 -msgid "Contact Info-Postal Code" -msgstr "Kontaktinfo-Postleitzahl" - -#: src/properties.cpp:644 -msgid "The contact information part denoting the local postal code." -msgstr "Der Teil der Kontaktinformation der die Postleitzahl enthält." - -#: src/properties.cpp:645 -msgid "Contact Info-State/Province" -msgstr "Kontaktinfo-Staat/Provinz" - -#: src/properties.cpp:645 -msgid "" -"The contact information part denoting regional information like state or " -"province." -msgstr "" -"Der Teil der Kontaktinformation der die reginalen Informationen wie Staat " -"oder Provinz enthält." - -#: src/properties.cpp:646 -msgid "Contact Info-Email" -msgstr "Kontaktinfo-E-Mail" - -#: src/properties.cpp:646 -msgid "The contact information email address part." -msgstr "Der Teil der Kontaktinformation der die E-Mail Adresse enthält." - -#: src/properties.cpp:647 -msgid "Contact Info-Phone" -msgstr "Kontaktinfo-Telefon" - -#: src/properties.cpp:647 -msgid "The contact information phone number part." -msgstr "Der Teil der Kontaktinformation der die Telefonnumer enthält." - -#: src/properties.cpp:648 -msgid "Contact Info-Web URL" -msgstr "Kontaktinfo-Web URL" - -#: src/properties.cpp:648 -msgid "The contact information web address part." -msgstr "Der Teil der Kontaktinformation der die Web-Adresse enthält." - -#: src/properties.cpp:649 -msgid "" -"Code of the country the content is focussing on -- either the country shown " -"in visual media or referenced in text or audio media. This element is at the " -"top/first level of a top-down geographical hierarchy. The code should be " -"taken from ISO 3166 two or three letter code. The full name of a country " -"should go to the \"Country\" element." -msgstr "" - -#: src/properties.cpp:653 -msgid "Creator's Contact Info" -msgstr "Kontaktinfo des Erstellers" - -#: src/properties.cpp:653 -msgid "" -"The creator's contact information provides all necessary information to get " -"in contact with the creator of this news object and comprises a set of sub-" -"properties for proper addressing." -msgstr "" - -#: src/properties.cpp:655 -msgid "Intellectual Genre" -msgstr "" - -#: src/properties.cpp:655 -msgid "" -"Describes the nature, intellectual or journalistic characteristic of a news " -"object, not specifically its content." -msgstr "" - -#: src/properties.cpp:657 -msgid "" -"Name of a location the content is focussing on -- either the location shown " -"in visual media or referenced by text or audio media. This location name " -"could either be the name of a sublocation to a city or the name of a well " -"known location or (natural) monument outside a city. In the sense of a " -"sublocation to a city this element is at the fourth level of a top-down " -"geographical hierarchy." -msgstr "" - -#: src/properties.cpp:662 -msgid "IPTC Scene" -msgstr "IPTC-Szene" - -#: src/properties.cpp:662 -msgid "" -"Describes the scene of a photo content. Specifies one or more terms from the " -"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " -"in an unordered list." -msgstr "" - -#: src/properties.cpp:664 -msgid "IPTC Subject Code" -msgstr "IPTC-Motivkode" - -#: src/properties.cpp:664 -msgid "" -"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " -"to categorize the content. Each Subject is represented as a string of 8 " -"digits in an unordered list." -msgstr "" - -#: src/properties.cpp:671 -#, fuzzy -msgid "Additional model info" -msgstr "Autofokus-Positioninformation" - -#: src/properties.cpp:671 -msgid "" -"Information about the ethnicity and other facts of the model(s) in a model-" -"released image." -msgstr "" - -#: src/properties.cpp:672 -msgid "Code of featured Organisation" -msgstr "" - -#: src/properties.cpp:672 -msgid "" -"Code from controlled vocabulary for identyfing the organisation or company " -"which is featured in the image." -msgstr "" - -#: src/properties.cpp:673 -msgid "Controlled Vocabulary Term" -msgstr "" - -#: src/properties.cpp:673 -msgid "" -"A term to describe the content of the image by a value from a Controlled " -"Vocabulary." -msgstr "" - -#: src/properties.cpp:674 -#, fuzzy -msgid "Model age" -msgstr "Modell" - -#: src/properties.cpp:674 -msgid "" -"Age of the human model(s) at the time this image was taken in a model " -"released image." -msgstr "" - -#: src/properties.cpp:675 -msgid "Name of featured Organisation" -msgstr "" - -#: src/properties.cpp:675 -msgid "Name of the organisation or company which is featured in the image." -msgstr "" - -#: src/properties.cpp:676 -#, fuzzy -msgid "Person shown" -msgstr "Versionen" - -#: src/properties.cpp:676 -msgid "Name of a person shown in the image." -msgstr "" - -#: src/properties.cpp:677 -#, fuzzy -msgid "Digital Image Identifier" -msgstr "Digitale Bildstabilisierung" - -#: src/properties.cpp:677 -msgid "" -"Globally unique identifier for this digital image. It is created and applied " -"by the creator of the digital image at the time of its creation. this value " -"shall not be changed after that time." -msgstr "" - -#: src/properties.cpp:678 -msgid "Physical type of original photo" -msgstr "" - -#: src/properties.cpp:678 -#, fuzzy -msgid "The type of the source digital file." -msgstr "Die Abspieldauer der Mediendatei." - -#: src/properties.cpp:679 src/properties.cpp:935 src/properties.cpp:944 -#, fuzzy -msgid "Event" -msgstr "Abend" - -#: src/properties.cpp:679 -msgid "Names or describes the specific event at which the photo was taken." -msgstr "" - -#: src/properties.cpp:680 -#, fuzzy -msgid "Maximum available height" -msgstr "Verfügbares Licht" - -#: src/properties.cpp:680 -msgid "" -"The maximum available height in pixels of the original photo from which this " -"photo has been derived by downsizing." -msgstr "" - -#: src/properties.cpp:681 -#, fuzzy -msgid "Maximum available width" -msgstr "Maximale Fokuslänge" - -#: src/properties.cpp:681 -msgid "" -"The maximum available width in pixels of the original photo from which this " -"photo has been derived by downsizing." -msgstr "" - -#: src/properties.cpp:682 -#, fuzzy -msgid "Registry Entry" -msgstr "Feldeintrag" - -#: src/properties.cpp:682 -msgid "" -"Both a Registry Item Id and a Registry Organisation Id to record any " -"registration of this digital image with a registry." -msgstr "" - -#: src/properties.cpp:683 -#, fuzzy -msgid "Registry Entry-Item Identifier" -msgstr "Feldeintrag" - -#: src/properties.cpp:683 -msgid "" -"A unique identifier created by a registry and applied by the creator of the " -"digital image. This value shall not be changed after being applied. This " -"identifier is linked to a corresponding Registry Organisation Identifier." -msgstr "" - -#: src/properties.cpp:684 -msgid "Registry Entry-Organisation Identifier" -msgstr "" - -#: src/properties.cpp:684 -msgid "" -"An identifier for the registry which issued the corresponding Registry Image " -"Id." -msgstr "" - -#: src/properties.cpp:685 -msgid "IPTC Fields Last Edited" -msgstr "" - -#: src/properties.cpp:685 -#, fuzzy -msgid "" -"The date and optionally time when any of the IPTC photo metadata fields has " -"been last edited." -msgstr "Das Datum und die Uhrzeit der letzten Änderung der Metadaten." - -#: src/properties.cpp:686 -#, fuzzy -msgid "Location shown" -msgstr "Ortscode" - -#: src/properties.cpp:686 -#, fuzzy -msgid "A location shown in the image." -msgstr "Offset des Vorschaubildes" - -#: src/properties.cpp:687 -#, fuzzy -msgid "Location Created" -msgstr "Ortscode" - -#: src/properties.cpp:687 -#, fuzzy -msgid "The location the photo was taken." -msgstr "Der Name der Aufnahme." - -#: src/properties.cpp:688 -#, fuzzy -msgid "Location-City" -msgstr "Ort" - -#: src/properties.cpp:688 -#, fuzzy -msgid "Name of the city of a location." -msgstr "Der Name des Künstlers bzw. der Künstler." - -#: src/properties.cpp:689 -#, fuzzy -msgid "Location-Country ISO-Code" -msgstr "Ortscode" - -#: src/properties.cpp:689 -#, fuzzy -msgid "The ISO code of a country of a location." -msgstr "Der Name der Aufnahme." - -#: src/properties.cpp:690 -#, fuzzy -msgid "Location-Country Name" -msgstr "Ortsname" - -#: src/properties.cpp:690 -#, fuzzy -msgid "The name of a country of a location." -msgstr "Der Name der Aufnahme." - -#: src/properties.cpp:691 -#, fuzzy -msgid "Location-Province/State" -msgstr "Provinz/Staat" - -#: src/properties.cpp:691 -#, fuzzy -msgid "" -"The name of a subregion of a country - a province or state - of a location." -msgstr "Der Name der Aufnahme." - -#: src/properties.cpp:692 -#, fuzzy -msgid "Location-Sublocation" -msgstr "Genauer Ort" - -#: src/properties.cpp:692 -msgid "" -"Name of a sublocation. This sublocation name could either be the name of a " -"sublocation to a city or the name of a well known location or (natural) " -"monument outside a city." -msgstr "" - -#: src/properties.cpp:693 -#, fuzzy -msgid "Location-World Region" -msgstr "Ortscode" - -#: src/properties.cpp:693 -#, fuzzy -msgid "The name of a world region of a location." -msgstr "Der Name der Aufnahme." - -#: src/properties.cpp:694 -#, fuzzy -msgid "Artwork or object in the image" -msgstr "Eine Referenz zu dem Projekt das diese Datei erstellt hat." - -#: src/properties.cpp:694 -#, fuzzy -msgid "A set of metadata about artwork or an object in the image." -msgstr "Eine Referenz zu dem Projekt das diese Datei erstellt hat." - -#: src/properties.cpp:695 -#, fuzzy -msgid "Artwork or object-Copyright notice" -msgstr "Copyright-Notiz" - -#: src/properties.cpp:695 -msgid "" -"Contains any necessary copyright notice for claiming the intellectual " -"property for artwork or an object in the image and should identify the " -"current owner of the copyright of this work with associated intellectual " -"property rights." -msgstr "" - -#: src/properties.cpp:696 -#, fuzzy -msgid "Artwork or object-Creator" -msgstr "Copyright-Notiz" - -#: src/properties.cpp:696 -msgid "" -"Contains the name of the artist who has created artwork or an object in the " -"image. In cases where the artist could or should not be identified the name " -"of a company or organisation may be appropriate." -msgstr "" - -#: src/properties.cpp:697 -#, fuzzy -msgid "Artwork or object-Date Created" -msgstr "Copyright-Notiz" - -#: src/properties.cpp:697 -msgid "" -"Designates the date and optionally the time the artwork or object in the " -"image was created. This relates to artwork or objects with associated " -"intellectual property rights." -msgstr "" - -#: src/properties.cpp:698 -#, fuzzy -msgid "Artwork or object-Source" -msgstr "Copyright-Notiz" - -#: src/properties.cpp:698 -msgid "" -"The organisation or body holding and registering the artwork or object in " -"the image for inventory purposes." -msgstr "" - -#: src/properties.cpp:699 -#, fuzzy -msgid "Artwork or object-Source inventory number" -msgstr "Copyright-Notiz" - -#: src/properties.cpp:699 -msgid "" -"The inventory number issued by the organisation or body holding and " -"registering the artwork or object in the image." -msgstr "" - -#: src/properties.cpp:700 -#, fuzzy -msgid "Artwork or object-Title" -msgstr "Copyright-Notiz" - -#: src/properties.cpp:700 -#, fuzzy -msgid "A reference for the artwork or object in the image." -msgstr "Eine Referenz zu dem Projekt das diese Datei erstellt hat." - -#: src/properties.cpp:707 -msgid "Scan from film" -msgstr "" - -#: src/properties.cpp:708 -msgid "Scan from transparency (including slide)" -msgstr "" - -#: src/properties.cpp:709 -msgid "Scan from print" -msgstr "" - -#: src/properties.cpp:710 -#, fuzzy -msgid "Camera RAW" -msgstr "Kamera ID" - -#: src/properties.cpp:711 -#, fuzzy -msgid "Camera TIFF" -msgstr "Kamera ID" - -#: src/properties.cpp:712 -#, fuzzy -msgid "Camera JPEG" -msgstr "Kamera ID" - -#: src/properties.cpp:717 -#, fuzzy -msgid "PLUS Version" -msgstr "PDF-Version" - -#: src/properties.cpp:717 -msgid "" -"The version number of the PLUS standards in place at the time of the " -"transaction." -msgstr "" - -#: src/properties.cpp:718 -#, fuzzy -msgid "Licensee" -msgstr "Linse" - -#: src/properties.cpp:718 -msgid "" -"Party or parties to whom the license is granted by the Licensor/s under the " -"license transaction." -msgstr "" - -#: src/properties.cpp:719 -#, fuzzy -msgid "Licensee ID" -msgstr "Linsen-ID" - -#: src/properties.cpp:719 -msgid "Optional PLUS-ID identifying each Licensee." -msgstr "" - -#: src/properties.cpp:720 -#, fuzzy -msgid "Licensee Name" -msgstr "Ortsname" - -#: src/properties.cpp:720 -#, fuzzy -msgid "Name of each Licensee." -msgstr "Der Name der Szene." - -#: src/properties.cpp:721 -#, fuzzy -msgid "End User" -msgstr "Erweiterung" - -#: src/properties.cpp:721 -msgid "Party or parties ultimately making use of the image under the license." -msgstr "" - -#: src/properties.cpp:722 -#, fuzzy -msgid "End User ID" -msgstr "Erweiterung" - -#: src/properties.cpp:722 -msgid "Optional PLUS-ID identifying each End User." -msgstr "" - -#: src/properties.cpp:723 -#, fuzzy -msgid "End User Name" -msgstr "Besitzername" - -#: src/properties.cpp:723 -#, fuzzy -msgid "Name of each End User." -msgstr "Der Name der Szene." - -#: src/properties.cpp:724 -#, fuzzy -msgid "Licensor" -msgstr "Linse" - -#: src/properties.cpp:724 -msgid "Party or parties granting the license to the Licensee." -msgstr "" - -#: src/properties.cpp:725 -#, fuzzy -msgid "Licensor ID" -msgstr "Linsen-ID" - -#: src/properties.cpp:725 -msgid "Optional PLUS-ID identifying each Licensor." -msgstr "" - -#: src/properties.cpp:726 -#, fuzzy -msgid "Licensor Name" -msgstr "Ortsname" - -#: src/properties.cpp:726 -#, fuzzy -msgid "Name of each Licensor." -msgstr "Der Name der Szene." - -#: src/properties.cpp:727 -#, fuzzy -msgid "Licensor Address" -msgstr "Linseneigenschaften" - -#: src/properties.cpp:727 -#, fuzzy -msgid "Licensor street address." -msgstr "Ländername" - -#: src/properties.cpp:728 -#, fuzzy -msgid "Licensor Address Detail" -msgstr "Kontaktinfo-Postleitzahl" - -#: src/properties.cpp:728 -#, fuzzy -msgid "Additional Licensor mailing address details." -msgstr "Autofokus-Positioninformation" - -#: src/properties.cpp:729 -#, fuzzy -msgid "Licensor City" -msgstr "Mexico Stadt" - -#: src/properties.cpp:729 -#, fuzzy -msgid "Licensor City name." -msgstr "Ländername" - -#: src/properties.cpp:730 -#, fuzzy -msgid "Licensor State or Province" -msgstr "Staat/Provinz" - -#: src/properties.cpp:730 -#, fuzzy -msgid "Licensor State or Province name." -msgstr "Staat/Provinz" - -#: src/properties.cpp:731 -#, fuzzy -msgid "Licensor Postal Code" -msgstr "Kontaktinfo-Postleitzahl" - -#: src/properties.cpp:731 -#, fuzzy -msgid "Licensor Postal Code or Zip Code." -msgstr "Kontaktinfo-Postleitzahl" - -#: src/properties.cpp:732 -#, fuzzy -msgid "Licensor Country" -msgstr "Land" - -#: src/properties.cpp:732 -#, fuzzy -msgid "Licensor Country name." -msgstr "Ländername" - -#: src/properties.cpp:733 -#, fuzzy -msgid "Licensor Telephone Type 1" -msgstr "Linsen-Seriennummer" - -#: src/properties.cpp:733 -#, fuzzy -msgid "Licensor Telephone Type 1." -msgstr "Linsen-Seriennummer" - -#: src/properties.cpp:734 -#, fuzzy -msgid "Licensor Telephone 1" -msgstr "Linsen-Seriennummer" - -#: src/properties.cpp:734 -#, fuzzy -msgid "Licensor Telephone number 1." -msgstr "Linsen-Seriennummer" - -#: src/properties.cpp:735 -#, fuzzy -msgid "Licensor Telephone Type 2" -msgstr "Linsen-Seriennummer" - -#: src/properties.cpp:735 -#, fuzzy -msgid "Licensor Telephone Type 2." -msgstr "Linsen-Seriennummer" - -#: src/properties.cpp:736 -#, fuzzy -msgid "Licensor Telephone 2" -msgstr "Linsen-Seriennummer" - -#: src/properties.cpp:736 -#, fuzzy -msgid "Licensor Telephone number 2." -msgstr "Linsen-Seriennummer" - -#: src/properties.cpp:737 -#, fuzzy -msgid "Licensor Email" -msgstr "Ortsname" - -#: src/properties.cpp:737 -#, fuzzy -msgid "Licensor Email address." -msgstr "Kontaktinfo-Postleitzahl" - -#: src/properties.cpp:738 -#, fuzzy -msgid "Licensor URL" -msgstr "Letzte Adresse" - -#: src/properties.cpp:738 -msgid "Licensor world wide web address." -msgstr "" - -#: src/properties.cpp:739 -#, fuzzy -msgid "Licensor Notes" -msgstr "Linseneigenschaften" - -#: src/properties.cpp:739 -msgid "" -"Supplemental information for use in identifying and contacting the Licensor/" -"s." -msgstr "" - -#: src/properties.cpp:740 -#, fuzzy -msgid "PLUS Media Summary Code" -msgstr "GPS-Messungsmodus" - -#: src/properties.cpp:740 -msgid "" -"A PLUS-standardized alphanumeric code string summarizing the media usages " -"included in the license." -msgstr "" - -#: src/properties.cpp:741 -#, fuzzy -msgid "License Start Date" -msgstr "Szenenerkennungsdaten" - -#: src/properties.cpp:741 -#, fuzzy -msgid "The date on which the license takes effect." -msgstr "Das Datum und die Uhrzeit an dem das Video aufgenommen wurde." - -#: src/properties.cpp:742 -#, fuzzy -msgid "License End Date" -msgstr "Linsendaten" - -#: src/properties.cpp:742 -#, fuzzy -msgid "The date on which the license expires." -msgstr "Der Name der Szene." - -#: src/properties.cpp:743 -#, fuzzy -msgid "Media Constraints" -msgstr "Kontrast" - -#: src/properties.cpp:743 -msgid "" -"Constraints limiting the scope of PLUS Media Usage/s included in the license " -"to particular named media or to media not yet specifically defined in the " -"PLUS Media Matrix." -msgstr "" - -#: src/properties.cpp:744 -#, fuzzy -msgid "Region Constraints" -msgstr "Kontrast" - -#: src/properties.cpp:744 -msgid "" -"Constraints limiting the scope of geographic distribution to specific " -"cities, states, provinces or other areas to be included in or excluded from " -"the PLUS Regions specified in the Media Usages specified in the license." -msgstr "" - -#: src/properties.cpp:745 -#, fuzzy -msgid "Product or Service Constraints" -msgstr "Autokontrast" - -#: src/properties.cpp:745 -msgid "" -"Constraints limiting usage of the image to promotion of/association with a " -"named product or service." -msgstr "" - -#: src/properties.cpp:746 -#, fuzzy -msgid "Image File Constraints" -msgstr "Bildgröße-Einstellungen" - -#: src/properties.cpp:746 -msgid "" -"Constraints on the changing of the image file name, metadata or file type." -msgstr "" - -#: src/properties.cpp:747 -#, fuzzy -msgid "Image Alteration Constraints" -msgstr "Bildqualitätseinstellungen" - -#: src/properties.cpp:747 -msgid "" -"Constraints on alteration of the image by cropping, flipping, retouching, " -"colorization, de-colorization or merging." -msgstr "" - -#: src/properties.cpp:748 -#, fuzzy -msgid "Image Duplication Constraints" -msgstr "Bildqualitätseinstellungen" - -#: src/properties.cpp:748 -msgid "Constraints on the creation of duplicates of the image." -msgstr "" - -#: src/properties.cpp:749 -#, fuzzy -msgid "Model Release Status" -msgstr "Freigabedatum" - -#: src/properties.cpp:749 -msgid "" -"Summarizes the availability and scope of model releases authorizing usage of " -"the likenesses of persons appearing in the photograph." -msgstr "" - -#: src/properties.cpp:750 -#, fuzzy -msgid "Model Release ID" -msgstr "Modell-ID" - -#: src/properties.cpp:750 -msgid "Optional identifier associated with each Model Release." -msgstr "" - -#: src/properties.cpp:751 -msgid "Minor Model Age Disclosure" -msgstr "" - -#: src/properties.cpp:751 -msgid "" -"Age of the youngest model pictured in the image, at the time that the image " -"was made." -msgstr "" - -#: src/properties.cpp:752 -#, fuzzy -msgid "Property Release Status" -msgstr "Freigabedatum" - -#: src/properties.cpp:752 -msgid "" -"Summarizes the availability and scope of property releases authorizing usage " -"of the properties appearing in the photograph." -msgstr "" - -#: src/properties.cpp:753 -#, fuzzy -msgid "Property Release ID" -msgstr "Modell-ID" - -#: src/properties.cpp:753 -msgid "Optional identifier associated with each Property Release." -msgstr "" - -#: src/properties.cpp:754 -#, fuzzy -msgid "Other Constraints" -msgstr "Autokontrast" - -#: src/properties.cpp:754 -#, fuzzy -msgid "Additional constraints on the license." -msgstr "Zusätzliche Parameter für den Stretchmodus des Taktverbundes." - -#: src/properties.cpp:755 -#, fuzzy -msgid "Credit Line Required" -msgstr "Nicht benutzt" - -#: src/properties.cpp:755 -msgid "Attribution requirements, if any." -msgstr "" - -#: src/properties.cpp:756 -msgid "Adult Content Warning" -msgstr "" - -#: src/properties.cpp:756 -msgid "Warning indicating the presence of content not suitable for minors." -msgstr "" - -#: src/properties.cpp:757 -#, fuzzy -msgid "Other License Requirements" -msgstr "Linseninformation" - -#: src/properties.cpp:757 -#, fuzzy -msgid "Additional license requirements." -msgstr "Autofokus-Positioninformation" - -#: src/properties.cpp:758 -#, fuzzy -msgid "Terms and Conditions Text" -msgstr "Aufnahmebedingungen" - -#: src/properties.cpp:758 -#, fuzzy -msgid "Terms and Conditions applying to the license." -msgstr "Zusätzliche Parameter für den Stretchmodus des Taktverbundes." - -#: src/properties.cpp:759 -#, fuzzy -msgid "Terms and Conditions URL" -msgstr "Aufnahmebedingungen" - -#: src/properties.cpp:759 -msgid "URL for Terms and Conditions applying to the license." -msgstr "" - -#: src/properties.cpp:760 -#, fuzzy -msgid "Other License Conditions" -msgstr "Aufnahmebedingungen" - -#: src/properties.cpp:760 -#, fuzzy -msgid "Additional license conditions." -msgstr "Autofokus-Positioninformation" - -#: src/properties.cpp:761 -#, fuzzy -msgid "Identifies the type of image delivered." -msgstr "Identifiziert den Anbieter und das Produkt" - -#: src/properties.cpp:762 -#, fuzzy -msgid "Licensor Image ID" -msgstr "Linsen-ID" - -#: src/properties.cpp:762 -msgid "Optional identifier assigned by the Licensor to the image." -msgstr "" - -#: src/properties.cpp:763 -#, fuzzy -msgid "Image File Name As Delivered" -msgstr "Zugehöriges Bilddateiformat" - -#: src/properties.cpp:763 -msgid "" -"Name of the image file delivered to the Licensee for use under the license." -msgstr "" - -#: src/properties.cpp:764 -#, fuzzy -msgid "Image File Format As Delivered" -msgstr "Zugehöriges Bilddateiformat" - -#: src/properties.cpp:764 -msgid "" -"File format of the image file delivered to the Licensee for use under the " -"license." -msgstr "" - -#: src/properties.cpp:765 -#, fuzzy -msgid "Image File Size As Delivered" -msgstr "Zugehöriges Bilddateiformat" - -#: src/properties.cpp:765 -msgid "Size of the image file delivered to the Licensee." -msgstr "" - -#: src/properties.cpp:766 -#, fuzzy -msgid "Copyright Status" -msgstr "Copyright" - -#: src/properties.cpp:766 -#, fuzzy -msgid "Copyright status of the image." -msgstr "Copyright-Notiz" - -#: src/properties.cpp:767 -#, fuzzy -msgid "Copyright Registration Number" -msgstr "Besitzername" - -#: src/properties.cpp:767 -msgid "Copyright Registration Number, if any, applying to the licensed image." -msgstr "" - -#: src/properties.cpp:768 -#, fuzzy -msgid "First Publication Date" -msgstr "Digitalisierungsdatum" - -#: src/properties.cpp:768 -#, fuzzy -msgid "The date on which the image was first published." -msgstr "Das Datum andem der Titel veröffentlicht wurde." - -#: src/properties.cpp:769 -#, fuzzy -msgid "Copyright Owner" -msgstr "Copyright" - -#: src/properties.cpp:769 -msgid "Owner or owners of the copyright in the licensed image." -msgstr "" - -#: src/properties.cpp:770 -#, fuzzy -msgid "Copyright Owner ID" -msgstr "Copyright" - -#: src/properties.cpp:770 -msgid "Optional PLUS-ID identifying each Copyright Owner." -msgstr "" - -#: src/properties.cpp:771 -#, fuzzy -msgid "Copyright Owner Name" -msgstr "Besitzername" - -#: src/properties.cpp:771 -#, fuzzy -msgid "Name of Copyright Owner." -msgstr "Copyright" - -#: src/properties.cpp:772 -#, fuzzy -msgid "Copyright Owner Image ID" -msgstr "Copyright" - -#: src/properties.cpp:772 -msgid "Optional identifier assigned by the Copyright Owner to the image." -msgstr "" - -#: src/properties.cpp:773 -#, fuzzy -msgid "Image Creator" -msgstr "Bild-Orientierung" - -#: src/properties.cpp:773 -#, fuzzy -msgid "Creator/s of the image." -msgstr "Offset des Vorschaubildes" - -#: src/properties.cpp:774 -#, fuzzy -msgid "Image Creator ID" -msgstr "Bild-Orientierung" - -#: src/properties.cpp:774 -msgid "Optional PLUS-ID identifying each Image Creator." -msgstr "" - -#: src/properties.cpp:775 -#, fuzzy -msgid "Image Creator Name" -msgstr "Bildton" - -#: src/properties.cpp:775 -#, fuzzy -msgid "Name of Image Creator." -msgstr "Rohbild-Center" - -#: src/properties.cpp:776 -#, fuzzy -msgid "Image Creator Image ID" -msgstr "Bild-Orientierung" - -#: src/properties.cpp:776 -msgid "Optional identifier assigned by the Image Creator to the image." -msgstr "" - -#: src/properties.cpp:777 -#, fuzzy -msgid "Image Supplier ID" -msgstr "Eindeutige Bildnummer" - -#: src/properties.cpp:777 -msgid "Optional PLUS-ID identifying the Image Supplier." -msgstr "" - -#: src/properties.cpp:778 -#, fuzzy -msgid "Image Supplier Name" -msgstr "Bildgrõße" - -#: src/properties.cpp:778 -#, fuzzy -msgid "Name of Image Supplier." -msgstr "Rohbild-Center" - -#: src/properties.cpp:779 -#, fuzzy -msgid "Image Supplier Image ID" -msgstr "Eindeutige Bildnummer" - -#: src/properties.cpp:779 -msgid "Optional identifier assigned by the Image Supplier to the image." -msgstr "" - -#: src/properties.cpp:780 -#, fuzzy -msgid "Licensee Image ID" -msgstr "Bildanzahl löschen" - -#: src/properties.cpp:780 -msgid "Optional identifier assigned by the Licensee to the image." -msgstr "" - -#: src/properties.cpp:781 -#, fuzzy -msgid "Licensee Image Notes" -msgstr "Bildanzahl löschen" - -#: src/properties.cpp:781 -#, fuzzy -msgid "Notes added by Licensee." -msgstr "Der Name der Szene." - -#: src/properties.cpp:782 -#, fuzzy -msgid "Other Image Info" -msgstr "Linseninformation" - -#: src/properties.cpp:782 -#, fuzzy -msgid "Additional image information." -msgstr "Autofokus-Positioninformation" - -#: src/properties.cpp:783 -#, fuzzy -msgid "License ID" -msgstr "Linsen-ID" - -#: src/properties.cpp:783 -msgid "Optional PLUS-ID assigned by the Licensor to the License." -msgstr "" - -#: src/properties.cpp:784 -#, fuzzy -msgid "Licensor Transaction ID" -msgstr "Verfalldatum" - -#: src/properties.cpp:784 -msgid "" -"Identifier assigned by Licensor for Licensor's reference and internal use." -msgstr "" - -#: src/properties.cpp:785 -#, fuzzy -msgid "Licensee Transaction ID" -msgstr "Verfalldatum" - -#: src/properties.cpp:785 -msgid "" -"Identifier assigned by Licensee for Licensee's reference and internal use." -msgstr "" - -#: src/properties.cpp:786 -#, fuzzy -msgid "Licensee Project Reference" -msgstr "Projektreferenz" - -#: src/properties.cpp:786 -msgid "Project reference name or description assigned by Licensee." -msgstr "" - -#: src/properties.cpp:787 -#, fuzzy -msgid "License Transaction Date" -msgstr "Verfalldatum" - -#: src/properties.cpp:787 -#, fuzzy -msgid "The date of the License Transaction." -msgstr "Der Name der Szene." - -#: src/properties.cpp:788 -#, fuzzy -msgid "Reuse" -msgstr "benutzt" - -#: src/properties.cpp:788 -msgid "" -"Indicates whether a license is a repeat or an initial license. Reuse may " -"require that licenses stored in files previously delivered to the customer " -"be updated." -msgstr "" - -#: src/properties.cpp:789 -#, fuzzy -msgid "Other License Documents" -msgstr "Aufnahmebedingungen" - -#: src/properties.cpp:789 -msgid "" -"Reference information for additional documents associated with the license." -msgstr "" - -#: src/properties.cpp:790 -#, fuzzy -msgid "Other License Info" -msgstr "Linseninformation" - -#: src/properties.cpp:790 -#, fuzzy -msgid "Additional license information." -msgstr "Autofokus-Positioninformation" - -#: src/properties.cpp:791 src/properties.cpp:792 src/properties.cpp:793 -#: src/properties.cpp:794 src/properties.cpp:795 -msgid "Optional field for use at Licensor's discretion." -msgstr "" - -#: src/properties.cpp:794 -#, fuzzy -msgid "Custom 4" -msgstr "Benutzerdefiniert 1" - -#: src/properties.cpp:795 -#, fuzzy -msgid "Custom 5" -msgstr "Benutzerdefiniert 1" - -#: src/properties.cpp:796 -#, fuzzy -msgid "Custom 6" -msgstr "Benutzerdefiniert 1" - -#: src/properties.cpp:796 src/properties.cpp:797 src/properties.cpp:798 -#: src/properties.cpp:799 src/properties.cpp:800 -msgid "Optional field for use at Licensee's discretion." -msgstr "" - -#: src/properties.cpp:797 -#, fuzzy -msgid "Custom 7" -msgstr "Benutzerdefiniert 1" - -#: src/properties.cpp:798 -#, fuzzy -msgid "Custom 8" -msgstr "Benutzerdefiniert 1" - -#: src/properties.cpp:799 -#, fuzzy -msgid "Custom 9" -msgstr "Benutzerdefiniert 1" - -#: src/properties.cpp:800 -#, fuzzy -msgid "Custom 10" -msgstr "Benutzerdefiniert 1" - -#: src/properties.cpp:807 -msgid "Adult Content Warning Required" -msgstr "" - -#: src/properties.cpp:808 -#, fuzzy -msgid "Not Required" -msgstr "Nicht benutzt" - -#: src/properties.cpp:814 -#, fuzzy -msgid "Protected" -msgstr "Produkt-ID" - -#: src/properties.cpp:815 -#, fuzzy -msgid "Public Domain" -msgstr "Nach unten ziehen" - -#: src/properties.cpp:821 -#, fuzzy -msgid "Credit Adjacent To Image" -msgstr "Bildvorschau gültig" - -#: src/properties.cpp:822 -msgid "Credit in Credits Area" -msgstr "" - -#: src/properties.cpp:823 -#, fuzzy -msgid "Credit on Image" -msgstr "Bildvorschau gültig" - -#: src/properties.cpp:824 -#, fuzzy -msgid "Not Require" -msgstr "Undefiniert" - -#: src/properties.cpp:829 -#, fuzzy -msgid "No Colorization" -msgstr "Solarisation" - -#: src/properties.cpp:830 -msgid "No Cropping" -msgstr "" - -#: src/properties.cpp:831 -#, fuzzy -msgid "No De-Colorization" -msgstr "Solarisation" - -#: src/properties.cpp:832 -msgid "No Flipping" -msgstr "" - -#: src/properties.cpp:833 -#, fuzzy -msgid "No Merging" -msgstr "Rauschunterdrückung" - -#: src/properties.cpp:834 -#, fuzzy -msgid "No Retouching" -msgstr "Rauschunterdrückung" - -#: src/properties.cpp:839 -msgid "Duplication Only as Necessary Under License" -msgstr "" - -#: src/properties.cpp:840 -#, fuzzy -msgid "No Duplication Constraints" -msgstr "Bildqualitätseinstellungen" - -#: src/properties.cpp:841 -#, fuzzy -msgid "No Duplication" -msgstr "Audiodauer" - -#: src/properties.cpp:846 -#, fuzzy -msgid "Maintain File Name" -msgstr "Rohdateiname" - -#: src/properties.cpp:847 -#, fuzzy -msgid "Maintain File Type" -msgstr "Rohdateiname" - -#: src/properties.cpp:848 -#, fuzzy -msgid "Maintain ID in File Name" -msgstr "Originaler Rohdateiname" - -#: src/properties.cpp:849 -#, fuzzy -msgid "Maintain Metadata" -msgstr "Minolta Datum" - -#: src/properties.cpp:854 -#, fuzzy -msgid "Windows Bitmap (BMP)" -msgstr "Windows-Titel" - -#: src/properties.cpp:855 -msgid "Digital Negative (DNG)" -msgstr "" - -#: src/properties.cpp:856 -msgid "Encapsulated PostScript (EPS)" -msgstr "" - -#: src/properties.cpp:857 -#, fuzzy -msgid "Graphics Interchange Format (GIF)" -msgstr "JPEG Interchange Format" - -#: src/properties.cpp:858 -#, fuzzy -msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" -msgstr "JPEG Interchange Format" - -#: src/properties.cpp:860 -msgid "Macintosh Picture (PICT)" -msgstr "" - -#: src/properties.cpp:861 -msgid "Portable Network Graphics (PNG)" -msgstr "" - -#: src/properties.cpp:862 -msgid "Photoshop Document (PSD)" -msgstr "" - -#: src/properties.cpp:863 -msgid "Proprietary RAW Image Format" -msgstr "" - -#: src/properties.cpp:864 -#, fuzzy -msgid "Tagged Image File Format (TIFF)" -msgstr "Zugehöriges Bilddateiformat" - -#: src/properties.cpp:865 -msgid "Windows Media Photo (HD Photo)" -msgstr "" - -#: src/properties.cpp:870 -msgid "Greater than 50 MB" -msgstr "" - -#: src/properties.cpp:871 -#, fuzzy -msgid "Up to 1 MB" -msgstr "Optio A10" - -#: src/properties.cpp:872 -#, fuzzy -msgid "Up to 10 MB" -msgstr "Optio A10" - -#: src/properties.cpp:873 -#, fuzzy -msgid "Up to 30 MB" -msgstr "Optio 30" - -#: src/properties.cpp:874 -#, fuzzy -msgid "Up to 50 MB" -msgstr "Optio S50" - -#: src/properties.cpp:879 -#, fuzzy -msgid "Illustrated Image" -msgstr "Zugehörige Bildbreite" - -#: src/properties.cpp:880 -msgid "Multimedia or Composited Image" -msgstr "" - -#: src/properties.cpp:882 -msgid "Photographic Image" -msgstr "" - -#: src/properties.cpp:888 -#, fuzzy -msgid "Cell" -msgstr "Gelb" - -#: src/properties.cpp:889 -msgid "FAX" -msgstr "" - -#: src/properties.cpp:891 -#, fuzzy -msgid "Pager" -msgstr "Verwalter" - -#: src/properties.cpp:892 -msgid "Work" -msgstr "" - -#: src/properties.cpp:897 -#, fuzzy -msgid "Age Unknown" -msgstr "Unbekannt" - -#: src/properties.cpp:898 -msgid "Age 25 or Over" -msgstr "" - -#: src/properties.cpp:899 -msgid "Age 24" -msgstr "" - -#: src/properties.cpp:900 -msgid "Age 23" -msgstr "" - -#: src/properties.cpp:901 -msgid "Age 22" -msgstr "" - -#: src/properties.cpp:902 -msgid "Age 21" -msgstr "" - -#: src/properties.cpp:903 -msgid "Age 20" -msgstr "" - -#: src/properties.cpp:904 -msgid "Age 19" -msgstr "" - -#: src/properties.cpp:905 -msgid "Age 18" -msgstr "" - -#: src/properties.cpp:906 -msgid "Age 17" -msgstr "" - -#: src/properties.cpp:907 -msgid "Age 16" -msgstr "" - -#: src/properties.cpp:908 -msgid "Age 15" -msgstr "" - -#: src/properties.cpp:909 -msgid "Age 14 or Under" -msgstr "" - -#: src/properties.cpp:915 src/properties.cpp:923 src/properties.cpp:930 -msgid "Not Applicable" -msgstr "" - -#: src/properties.cpp:916 -#, fuzzy -msgid "Unlimited Model Releases" -msgstr "Modell-ID" - -#: src/properties.cpp:917 -msgid "Limited or Incomplete Model Releases" -msgstr "" - -#: src/properties.cpp:924 -msgid "Unlimited Property Releases" -msgstr "" - -#: src/properties.cpp:925 -msgid "Limited or Incomplete Property Releases" -msgstr "" - -#: src/properties.cpp:931 -msgid "Repeat Use" -msgstr "" - -#: src/properties.cpp:935 src/properties.cpp:944 -#, fuzzy -msgid "Fixture Identification" -msgstr "Modellidentifikation" - -#: src/properties.cpp:936 src/properties.cpp:945 -#, fuzzy -msgid "Status" -msgstr "GPS-Status" - -#: src/properties.cpp:936 src/properties.cpp:945 -msgid "A notation making the image unique" -msgstr "" - -#: src/properties.cpp:937 src/properties.cpp:946 -#, fuzzy -msgid "People" -msgstr "Lila" - -#: src/properties.cpp:938 src/properties.cpp:947 -msgid "CatalogSets" -msgstr "" - -#: src/properties.cpp:938 src/properties.cpp:947 src/properties.cpp:978 -#: src/properties.cpp:982 -msgid "Descriptive markers of catalog items by content" -msgstr "" - -#: src/properties.cpp:953 -#, fuzzy -msgid "RegionInfo" -msgstr "Linseninformation" - -#: src/properties.cpp:953 -msgid "Microsoft Photo people-tagging metadata root" -msgstr "" - -#: src/properties.cpp:959 -msgid "DateRegionsValid" -msgstr "" - -#: src/properties.cpp:959 -#, fuzzy -msgid "Date the last region was created" -msgstr "Das Datum andem der Titel veröffentlicht wurde." - -#: src/properties.cpp:960 src/properties.cpp:975 -#, fuzzy -msgid "Regions" -msgstr "Versionen" - -#: src/properties.cpp:960 -msgid "Contains Regions/person tags" -msgstr "" - -#: src/properties.cpp:966 -#, fuzzy -msgid "PersonDisplayName" -msgstr "Druckstocknamen" - -#: src/properties.cpp:966 -msgid "Name of the person (in the given rectangle)" -msgstr "" - -#: src/properties.cpp:967 -msgid "Rectangle" -msgstr "" - -#: src/properties.cpp:967 -msgid "Rectangle that identifies the person within the photo" -msgstr "" - -#: src/properties.cpp:968 -msgid "PersonEmailDigest" -msgstr "" - -#: src/properties.cpp:968 -msgid "" -"SHA-1 encrypted message hash of the person's Windows Live e-mail address" -msgstr "" - -#: src/properties.cpp:969 -msgid "PersonLiveCID" -msgstr "" - -#: src/properties.cpp:969 -msgid "Signed decimal representation of the person's Windows Live CID" -msgstr "" - -#: src/properties.cpp:975 -msgid "Main structure containing region based information" -msgstr "" - -#: src/properties.cpp:976 -#, fuzzy -msgid "AppliedToDimensions" -msgstr "Pixel X-Dimension" - -#: src/properties.cpp:976 -msgid "Width and height of image when storing region data" -msgstr "" - -#: src/properties.cpp:977 -msgid "RegionList" -msgstr "" - -#: src/properties.cpp:977 -#, fuzzy -msgid "List of Region structures" -msgstr "Versionsstruktur" - -#: src/properties.cpp:978 -#, fuzzy -msgid "Area" -msgstr "Autofokus-Bereiche" - -#: src/properties.cpp:979 -msgid "Type purpose of region (Face|Pet|Focus|BarCode)" -msgstr "" - -#: src/properties.cpp:980 -msgid "Name/ short description of content in image region" -msgstr "" - -#: src/properties.cpp:981 -msgid "" -"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" -"NotEvaluatedNotUsed)" -msgstr "" - -#: src/properties.cpp:982 -#, fuzzy -msgid "FocusUsage" -msgstr "Fokusbereich" - -#: src/properties.cpp:983 -#, fuzzy -msgid "BarCodeValue" -msgstr "Automatischer Erfassungsschritt" - -#: src/properties.cpp:983 -msgid "Decoded BarCode value string" -msgstr "" - -#: src/properties.cpp:984 -#, fuzzy -msgid "Extensions" -msgstr "Versionen" - -#: src/properties.cpp:984 -msgid "Any top level XMP property to describe the region content" -msgstr "" - -#: src/sigmamn.cpp:62 -msgid "Resolution Mode" -msgstr "Auflösungsmodus" - -#: src/sigmamn.cpp:63 -msgid "Resolution mode" -msgstr "Auflösungsmodus" - -#: src/sigmamn.cpp:65 -msgid "Autofocus Mode" -msgstr "Autofokusmodus" - -#: src/sigmamn.cpp:66 -msgid "Autofocus mode" -msgstr "Autofokusmodus" - -#: src/sigmamn.cpp:68 -msgid "Focus Setting" -msgstr "Fokuseinstellung" - -#: src/sigmamn.cpp:69 -msgid "Focus setting" -msgstr "Fokuseinstellung" - -#: src/sigmamn.cpp:80 -msgid "Lens Range" -msgstr "Linsenweite" - -#: src/sigmamn.cpp:81 -msgid "Lens focal length range" -msgstr "Linsenbrennweitenbereich" - -#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 -msgid "Shadow" -msgstr "Schatten" - -#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 -msgid "Highlight" -msgstr "Spitzlichter" - -#: src/sigmamn.cpp:104 -msgid "Fill Light" -msgstr "Fülllicht" - -#: src/sigmamn.cpp:105 -msgid "X3 Fill light" -msgstr "X3 Fülllicht" - -#: src/sigmamn.cpp:107 -msgid "Color Adjustment" -msgstr "Farbanpassung" - -#: src/sigmamn.cpp:108 -msgid "Color adjustment" -msgstr "Farbanpassung" - -#: src/sigmamn.cpp:110 -msgid "Adjustment Mode" -msgstr "Anpassungsmodus" - -#: src/sigmamn.cpp:111 -msgid "Adjustment mode" -msgstr "Anpassungsmodus" - -#: src/sigmamn.cpp:122 -msgid "Auto Bracket" -msgstr "Automatische Erfassung" - -#: src/sigmamn.cpp:123 src/tags.cpp:1490 -msgid "Auto bracket" -msgstr "Automatischer Erfassung" - -#: src/sigmamn.cpp:127 -msgid "Unknown SigmaMakerNote tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Sigma" - -#: src/sigmamn.cpp:170 -msgid "8-Segment" -msgstr "8-Segment" - -#: src/sonymn.cpp:88 -#, fuzzy -msgid "Standard " -msgstr "Standard" - -#: src/sonymn.cpp:91 -msgid "Advanced Lv1" -msgstr "" - -#: src/sonymn.cpp:92 -msgid "Advanced Lv2" -msgstr "" - -#: src/sonymn.cpp:93 -msgid "Advanced Lv3" -msgstr "" - -#: src/sonymn.cpp:94 -msgid "Advanced Lv4" -msgstr "" - -#: src/sonymn.cpp:95 -msgid "Advanced Lv5" -msgstr "" - -#: src/sonymn.cpp:109 -#, fuzzy -msgid "Landscape " -msgstr "Landschaft" - -#: src/sonymn.cpp:113 -#, fuzzy -msgid "Night Scene / Twilight" -msgstr "Nachtszene" - -#: src/sonymn.cpp:114 -msgid "Hi-Speed Shutter" -msgstr "" - -#: src/sonymn.cpp:115 -#, fuzzy -msgid "Twilight Portrait" -msgstr "Nachtportrait" - -#: src/sonymn.cpp:116 -#, fuzzy -msgid "Soft Snap" -msgstr "Weich" - -#: src/sonymn.cpp:118 -#, fuzzy -msgid "Smile Shutter" -msgstr "Langsamer Verschluß" - -#: src/sonymn.cpp:120 -#, fuzzy -msgid "High Sensitivity" -msgstr "ISO-Empfindlichkeit" - -#: src/sonymn.cpp:121 -msgid "Advanced Sports Shooting" -msgstr "" - -#: src/sonymn.cpp:123 -#, fuzzy -msgid "Gourmet" -msgstr "Dokumente" - -#: src/sonymn.cpp:125 -#, fuzzy -msgid "Handheld Twilight" -msgstr "Kerzenlicht" - -#: src/sonymn.cpp:126 -#, fuzzy -msgid "Anti Motion Blur" -msgstr "Bildmodus" - -#: src/sonymn.cpp:128 -#, fuzzy -msgid "Backlight Correction HDR" -msgstr "Ohne Korrektur" - -#: src/sonymn.cpp:142 -#, fuzzy -msgid "On (Continuous)" -msgstr "Kontinuierlich" - -#: src/sonymn.cpp:143 -#, fuzzy -msgid "On (Shooting)" -msgstr "Aufnahmemodus" - -#: src/sonymn.cpp:151 -msgid "Plus" -msgstr "" - -#: src/sonymn.cpp:167 -#, fuzzy -msgid "White Flourescent" -msgstr "Weiß fluoreszent" - -#: src/sonymn.cpp:168 -#, fuzzy -msgid "Cool White Flourescent" -msgstr "Weiß fluoreszent" - -#: src/sonymn.cpp:169 -#, fuzzy -msgid "Day White Flourescent" -msgstr "Tagesweiß fluoreszent" - -#: src/sonymn.cpp:172 -#, fuzzy -msgid "Underwater 1 (Blue Water)" -msgstr "Unterwasser-Weite1" - -#: src/sonymn.cpp:173 -#, fuzzy -msgid "Underwater 2 (Green Water)" -msgstr "Unterwasser-Aufnahme" - -#: src/sonymn.cpp:180 -msgid "Permanent-AF" -msgstr "" - -#: src/sonymn.cpp:188 -#, fuzzy -msgid "Center AF" -msgstr "Zentriert" - -#: src/sonymn.cpp:189 -#, fuzzy -msgid "Spot AF" -msgstr "Punkt" - -#: src/sonymn.cpp:190 -msgid "Flexible Spot AF" -msgstr "" - -#: src/sonymn.cpp:191 -#, fuzzy -msgid "Touch AF" -msgstr "Ein-Tasten-Weißabgleich" - -#: src/sonymn.cpp:192 -#, fuzzy -msgid "Manual Focus" -msgstr "Manueller Fokus" - -#: src/sonymn.cpp:193 -#, fuzzy -msgid "Face Detected" -msgstr "Fehler beim lesen" - -#: src/sonymn.cpp:208 -#, fuzzy -msgid "Close Focus" -msgstr "Automatischer Fokus" - -#: src/sonymn.cpp:224 -#, fuzzy -msgid "Exposure Bracketing" -msgstr "Belichtungserfassung" - -#: src/sonymn.cpp:298 src/sonymn.cpp:299 -#, fuzzy -msgid "Multi Burst Mode" -msgstr "Burst Mode" - -#: src/sonymn.cpp:301 src/sonymn.cpp:302 -#, fuzzy -msgid "Multi Burst Image Width" -msgstr "Zugehörige Bildbreite" - -#: src/sonymn.cpp:304 src/sonymn.cpp:305 -#, fuzzy -msgid "Multi Burst Image Height" -msgstr "Bildhöhe" - -#: src/sonymn.cpp:315 -#, fuzzy -msgid "JPEG preview image" -msgstr "Bildvorschau gültig" - -#: src/sonymn.cpp:341 -#, fuzzy -msgid "Auto HDR" -msgstr "Automatisch Hoch" - -#: src/sonymn.cpp:342 -msgid "High Definition Range Mode" -msgstr "" - -#: src/sonymn.cpp:346 -#, fuzzy -msgid "Shot Information" -msgstr "Aufnahmeinformation" - -#: src/sonymn.cpp:351 src/sonymn.cpp:352 -#, fuzzy -msgid "Sony Model ID" -msgstr "Modell-ID" - -#: src/sonymn.cpp:354 src/sonymn.cpp:355 -#, fuzzy -msgid "Color Reproduction" -msgstr "Farbrauschunterdrückung" - -#: src/sonymn.cpp:369 src/sonymn.cpp:370 src/sonymn.cpp:423 src/sonymn.cpp:424 -#, fuzzy -msgid "Dynamic Range Optimizer" -msgstr "Dynamische Bereichseinstellung" - -#: src/sonymn.cpp:378 src/sonymn.cpp:379 -#, fuzzy -msgid "Minolta MakerNote" -msgstr "Minolta Datum" - -#: src/sonymn.cpp:384 src/sonymn.cpp:385 -#, fuzzy -msgid "Full Image Size" -msgstr "Bildgrõße" - -#: src/sonymn.cpp:387 -#, fuzzy -msgid "Preview Image Size" -msgstr "Bildvorschau gültig" - -#: src/sonymn.cpp:388 -#, fuzzy -msgid "Preview image size" -msgstr "Bildvorschau gültig" - -#: src/sonymn.cpp:402 src/sonymn.cpp:403 src/sonymn.cpp:613 src/sonymn.cpp:614 -msgid "AF Illuminator" -msgstr "" - -#: src/sonymn.cpp:405 src/sonymn.cpp:406 -#, fuzzy -msgid "JPEG Quality" -msgstr "Qualität" - -#: src/sonymn.cpp:411 src/sonymn.cpp:412 -#, fuzzy -msgid "Release Mode" -msgstr "Freigabedatum" - -#: src/sonymn.cpp:415 -#, fuzzy -msgid "Shot number in continous burst mode" -msgstr "Fortlaufende Nummer (wenn Sie im Burst-Modus fotografieren)" - -#: src/sonymn.cpp:417 src/sonymn.cpp:418 -#, fuzzy -msgid "Anti-Blur" -msgstr "Anti-Unschärfe" - -#: src/sonymn.cpp:420 src/sonymn.cpp:421 src/sonymn.cpp:621 src/sonymn.cpp:622 -#, fuzzy -msgid "Long Exposure Noise Reduction" -msgstr "Rauschreduktion einer langen Belichtung" - -#: src/sonymn.cpp:426 src/sonymn.cpp:427 -#, fuzzy -msgid "Intelligent Auto" -msgstr "Intervalllänge" - -#: src/sonymn.cpp:434 -#, fuzzy -msgid "Unknown Sony1MakerNote tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Sony" - -#: src/sonymn.cpp:448 -#, fuzzy -msgid "Continuous High" -msgstr "Kontinuierlich, hoch" - -#: src/sonymn.cpp:452 -#, fuzzy -msgid "Continuous Low" -msgstr "Kontinuierlich, niedrig" - -#: src/sonymn.cpp:454 src/sonymn.cpp:455 -#, fuzzy -msgid "D-Range Optimizer Bracketing Low" -msgstr "Bildoptimierung" - -#: src/sonymn.cpp:487 -#, fuzzy -msgid "Autumn" -msgstr "Auktion" - -#: src/sonymn.cpp:493 -msgid "ADI" -msgstr "" - -#: src/sonymn.cpp:509 src/sonymn.cpp:510 src/sonymn.cpp:511 -msgid "StyleBox1" -msgstr "" - -#: src/sonymn.cpp:529 -#, fuzzy -msgid "Auto No Flash" -msgstr "Automatisch (Blitz)" - -#: src/sonymn.cpp:584 src/sonymn.cpp:585 src/sonymn.cpp:690 src/sonymn.cpp:691 -#, fuzzy -msgid "Dynamic Range Optimizer Level" -msgstr "Dynamische Bereichseinstellung" - -#: src/sonymn.cpp:587 src/sonymn.cpp:588 src/sonymn.cpp:693 src/sonymn.cpp:694 -#, fuzzy -msgid "Creative Style" -msgstr "Erstellungsdatum" - -#: src/sonymn.cpp:599 src/sonymn.cpp:600 -#, fuzzy -msgid "Zone Matching Value" -msgstr "Zonenabgleich" - -#: src/sonymn.cpp:617 src/sonymn.cpp:618 -#, fuzzy -msgid "AF With Shutter" -msgstr "Schneller Verschluß" - -#: src/sonymn.cpp:625 src/sonymn.cpp:626 -#, fuzzy -msgid "High ISO NoiseReduction" -msgstr "Hohe ISO-Rauschreduktion" - -#: src/sonymn.cpp:629 src/sonymn.cpp:630 -#, fuzzy -msgid "Image Style" -msgstr "Bildtyp" - -#: src/sonymn.cpp:655 -#, fuzzy -msgid "Unknown Sony1 Camera Settings tag" -msgstr "Unbekanntes Feld in den Canon-Kameraeinstellungen 1" - -#: src/sonymn.cpp:719 -#, fuzzy -msgid "Unknown Sony1 Camera Settings 2 tag" -msgstr "Unbekanntes Feld in den Canon-Kameraeinstellungen 2" - -#: src/tags.cpp:184 -msgid "Unknown section" -msgstr "Unbekannter Abschnitt" - -#: src/tags.cpp:185 -msgid "Image data structure" -msgstr "Bilddatenstruktur" - -#: src/tags.cpp:186 -#, fuzzy -msgid "Recording offset" -msgstr "Fotoeffekt" - -#: src/tags.cpp:187 -msgid "Image data characteristics" -msgstr "Bilddatencharakteristik" - -#: src/tags.cpp:188 -msgid "Other data" -msgstr "Andere Daten" - -#: src/tags.cpp:189 -msgid "Exif data structure" -msgstr "Exif-Datenstruktur" - -#: src/tags.cpp:191 -msgid "Image configuration" -msgstr "Bildkonfiguration" - -#: src/tags.cpp:192 -msgid "User information" -msgstr "Benutzerinformationen" - -#: src/tags.cpp:193 -msgid "Related file" -msgstr "Zugehörige Datei" - -#: src/tags.cpp:194 -msgid "Date and time" -msgstr "Datum und Uhrzeit" - -#: src/tags.cpp:195 -msgid "Picture taking conditions" -msgstr "Aufnahmebedingungen" - -#: src/tags.cpp:196 -msgid "GPS information" -msgstr "GPS-Informationen" - -#: src/tags.cpp:197 -msgid "Interoperability information" -msgstr "Interoperabelitätsinformationen." - -#: src/tags.cpp:198 -msgid "Vendor specific information" -msgstr "Hersteller spezifische Informationen" - -#: src/tags.cpp:199 -msgid "Adobe DNG tags" -msgstr "Adobe DNG -Felder" - -#: src/tags.cpp:200 -#, fuzzy -msgid "Panasonic RAW tags" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Panasonic" - -#: src/tags.cpp:201 -#, fuzzy -msgid "TIFF/EP tags" -msgstr "TIFF/EP Standard ID" - -#: src/tags.cpp:202 -msgid "TIFF PageMaker 6.0 tags" -msgstr "" - -#: src/tags.cpp:203 -#, fuzzy -msgid "Adobe OPI tags" -msgstr "Adobe DNG -Felder" - -#: src/tags.cpp:204 -msgid "Last section" -msgstr "Letzter Abschnitt" - -#: src/tags.cpp:220 -msgid "Primary image" -msgstr "Anfangsbild" - -#: src/tags.cpp:221 -msgid "Thumbnail/Preview image" -msgstr "Bildvorschau" - -#: src/tags.cpp:222 -msgid "Primary image, Multi page file" -msgstr "Anfangsbild, Mehrseitendatei" - -#: src/tags.cpp:223 -msgid "Thumbnail/Preview image, Multi page file" -msgstr "Vorschaubild, Mehrseitendatei" - -#: src/tags.cpp:224 -msgid "Primary image, Transparency mask" -msgstr "Anfangsbild, Transparenzmaske" - -#: src/tags.cpp:225 -msgid "Thumbnail/Preview image, Transparency mask" -msgstr "Bildvorschau, Transparenzmaske" - -#: src/tags.cpp:226 -msgid "Primary image, Multi page file, Transparency mask" -msgstr "Anfangsbild, Mehrseitendatei, Transparenzmaske" - -#: src/tags.cpp:227 src/tags.cpp:228 -msgid "Thumbnail/Preview image, Multi page file, Transparency mask" -msgstr "Vorschaubild, Mehrseitendatei, Transparenzmaske" - -#: src/tags.cpp:233 -#, fuzzy -msgid "Full-resolution image data" -msgstr "Die Bilddaten konnten nicht gelesen werden." - -#: src/tags.cpp:234 -msgid "Reduced-resolution image data" -msgstr "" - -#: src/tags.cpp:235 -msgid "A single page of a multi-page image" -msgstr "" - -#: src/tags.cpp:241 -msgid "inch" -msgstr "Zoll" - -#: src/tags.cpp:248 -msgid "CCITT RLE" -msgstr "CCITT RLE" - -#: src/tags.cpp:249 -msgid "T4/Group 3 Fax" -msgstr "T4/Fax-Gruppe 3" - -#: src/tags.cpp:250 -msgid "T6/Group 4 Fax" -msgstr "T6/Fax-Gruppe 4" - -#: src/tags.cpp:251 -msgid "LZW" -msgstr "LZW" - -#: src/tags.cpp:252 -msgid "JPEG (old-style)" -msgstr "JPEG (alter Stil)" - -#: src/tags.cpp:253 -msgid "JPEG" -msgstr "JPEG" - -#: src/tags.cpp:254 -msgid "Adobe Deflate" -msgstr "Adobe Deflate" - -#: src/tags.cpp:255 -msgid "JBIG B&W" -msgstr "JBIG B&W" - -#: src/tags.cpp:256 -msgid "JBIG Color" -msgstr "JBIG Farbe" - -#: src/tags.cpp:257 -msgid "Next 2-bits RLE" -msgstr "Nächsten 2-Bits RLE" - -#: src/tags.cpp:258 -msgid "Epson ERF Compressed" -msgstr "Epson ERF komprimiert" - -#: src/tags.cpp:259 -#, fuzzy -msgid "Samsung SRW Compressed" -msgstr "Epson ERF komprimiert" - -#: src/tags.cpp:260 -msgid "CCITT RLE 1-word" -msgstr "CCITT RLE 1-Wort" - -#: src/tags.cpp:261 -msgid "PackBits (Macintosh RLE)" -msgstr "PackBits (Macintosh RLE)" - -#: src/tags.cpp:262 -msgid "Thunderscan RLE" -msgstr "Thunderscan RLE" - -#: src/tags.cpp:263 -msgid "IT8 CT Padding" -msgstr "IT8 CT Einlage" - -#: src/tags.cpp:264 -msgid "IT8 Linework RLE" -msgstr "IT8 Zeilenarbeit RLE" - -#: src/tags.cpp:265 -msgid "IT8 Monochrome Picture" -msgstr "IT8 Monochrombild" - -#: src/tags.cpp:266 -msgid "IT8 Binary Lineart" -msgstr "IT8 binäre Zeilenkunst" - -#: src/tags.cpp:267 -msgid "Pixar Film (10-bits LZW)" -msgstr "Pixar Film (10-Bit LZW)" - -#: src/tags.cpp:268 -msgid "Pixar Log (11-bits ZIP)" -msgstr "Pixar Log (11-Bit ZIP)" - -#: src/tags.cpp:269 -msgid "Pixar Deflate" -msgstr "Pixar Deflate" - -#: src/tags.cpp:270 -msgid "Kodak DCS Encoding" -msgstr "Kodak DCS Encoding" - -#: src/tags.cpp:271 -msgid "ISO JBIG" -msgstr "ISO JBIG" - -#: src/tags.cpp:272 -msgid "SGI Log Luminance RLE" -msgstr "SGI Log beleuchtetes RLE" - -#: src/tags.cpp:273 -msgid "SGI Log 24-bits packed" -msgstr "SGI Log 24-bits gepackt" - -#: src/tags.cpp:274 -msgid "Leadtools JPEG 2000" -msgstr "" - -#: src/tags.cpp:275 -msgid "Nikon NEF Compressed" -msgstr "Nikon NEF komprimiert" - -#: src/tags.cpp:276 -msgid "Kodak DCR Compressed" -msgstr "Kodak DCR komprimiert" - -#: src/tags.cpp:277 -msgid "Pentax PEF Compressed" -msgstr "Pentax PEF komprimiert" - -#: src/tags.cpp:282 -msgid "White Is Zero" -msgstr "Null ist weiß" - -#: src/tags.cpp:283 -msgid "Black Is Zero" -msgstr "Null ist schwarz" - -#: src/tags.cpp:284 -msgid "RGB" -msgstr "RGB" - -#: src/tags.cpp:285 -msgid "RGB Palette" -msgstr "RGB Palette" - -#: src/tags.cpp:286 -msgid "Transparency Mask" -msgstr "Transparenzmaske" - -#: src/tags.cpp:287 src/tags.cpp:326 -msgid "CMYK" -msgstr "CMYK" - -#: src/tags.cpp:288 -msgid "YCbCr" -msgstr "YCbCr" - -#: src/tags.cpp:289 -msgid "CIELab" -msgstr "CIELab" - -#: src/tags.cpp:290 -msgid "ICCLab" -msgstr "ICCLab" - -#: src/tags.cpp:291 -msgid "ITULab" -msgstr "ITULab" - -#: src/tags.cpp:292 -msgid "Color Filter Array" -msgstr "Farbfilterliste" - -#: src/tags.cpp:293 -msgid "Pixar LogL" -msgstr "Pixar LogL" - -#: src/tags.cpp:294 -msgid "Pixar LogLuv" -msgstr "Pixar LogLuv" - -#: src/tags.cpp:295 -msgid "Linear Raw" -msgstr "Lineares Roh" - -#: src/tags.cpp:300 -msgid "No dithering or halftoning" -msgstr "" - -#: src/tags.cpp:301 -msgid "Ordered dither or halftone technique" -msgstr "" - -#: src/tags.cpp:302 -#, fuzzy -msgid "Randomized process" -msgstr "Normale Verarbeitung" - -#: src/tags.cpp:307 -msgid "top, left" -msgstr "oben - links" - -#: src/tags.cpp:308 -msgid "top, right" -msgstr "oben - rechts" - -#: src/tags.cpp:309 -msgid "bottom, right" -msgstr "unten - rechts" - -#: src/tags.cpp:310 -msgid "bottom, left" -msgstr "unten - links" - -#: src/tags.cpp:311 -msgid "left, top" -msgstr "links - oben" - -#: src/tags.cpp:312 -msgid "right, top" -msgstr "rechts - oben" - -#: src/tags.cpp:313 -msgid "right, bottom" -msgstr "rechts - unten" - -#: src/tags.cpp:314 src/tags.cpp:315 -msgid "left, bottom" -msgstr "links - unten" - -#: src/tags.cpp:320 -msgid "No prediction scheme used" -msgstr "" - -#: src/tags.cpp:321 -msgid "Horizontal differencing" -msgstr "" - -#: src/tags.cpp:327 -#, fuzzy -msgid "not CMYK" -msgstr "CMYK" - -#: src/tags.cpp:332 -msgid "Unsigned integer data" -msgstr "" - -#: src/tags.cpp:333 -msgid "Two's complement signed integer data" -msgstr "" - -#: src/tags.cpp:334 -msgid "IEEE floating point data" -msgstr "" - -#: src/tags.cpp:335 src/tags.cpp:336 -#, fuzzy -msgid "Undefined data format" -msgstr "Nicht unterstütztes Datumsformat" - -#: src/tags.cpp:341 -#, fuzzy -msgid "Not indexed" -msgstr "Undefiniert" - -#: src/tags.cpp:342 src/tags.cpp:648 -msgid "Indexed" -msgstr "" - -#: src/tags.cpp:347 -msgid "A" -msgstr "" - -#: src/tags.cpp:348 -msgid "B" -msgstr "" - -#: src/tags.cpp:349 -msgid "C" -msgstr "" - -#: src/tags.cpp:350 -#, fuzzy -msgid "A+B-C" -msgstr "Autofokus-C" - -#: src/tags.cpp:351 -msgid "A+((B-C)/2)" -msgstr "" - -#: src/tags.cpp:352 -msgid "B+((A-C)/2)" -msgstr "" - -#: src/tags.cpp:353 -msgid "(A+B)/2" -msgstr "" - -#: src/tags.cpp:358 -msgid "Centered" -msgstr "zentriert" - -#: src/tags.cpp:359 -msgid "Co-sited" -msgstr "Co-sited" - -#: src/tags.cpp:364 -msgid "No flash" -msgstr "Kein Blitz" - -#: src/tags.cpp:366 -#, fuzzy -msgid "Fired, return light not detected" -msgstr "Blitz ausgelöst, keine Reflektion erkannt" - -#: src/tags.cpp:367 -#, fuzzy -msgid "Fired, return light detected" -msgstr "Blitz ausgelöst, Reflektion erkannt" - -#: src/tags.cpp:368 -msgid "Yes, did not fire" -msgstr "Blitz löste nicht aus" - -#: src/tags.cpp:369 -msgid "Yes, compulsory" -msgstr "Blitz ausgelöst, festgelegter Modus" - -#: src/tags.cpp:370 -msgid "Yes, compulsory, return light not detected" -msgstr "Blitz ausgelöst, festgelegter Modus, keine Reflektion erkannt" - -#: src/tags.cpp:371 -msgid "Yes, compulsory, return light detected" -msgstr "Blitz ausgelöst, festgelegter Modus, Reflektion erkannt" - -#: src/tags.cpp:372 -msgid "No, compulsory" -msgstr "Blitz nicht ausgelöst, festgelegter Modus" - -#: src/tags.cpp:373 -#, fuzzy -msgid "No, did not fire, return light not detected" -msgstr "Blitz wurde nicht ausgelöst, keine Reflektion erkannt" - -#: src/tags.cpp:374 -msgid "No, auto" -msgstr "Blitz nicht ausgelöst, automatisch" - -#: src/tags.cpp:375 -msgid "Yes, auto" -msgstr "Blitz ausgelöst, automatisch" - -#: src/tags.cpp:376 -msgid "Yes, auto, return light not detected" -msgstr "Blitz ausgelöst, automatisch, keine Reflektion erkannt" - -#: src/tags.cpp:377 -msgid "Yes, auto, return light detected" -msgstr "Blitz ausgelöst, automatisch, Reflektion erkannt" - -#: src/tags.cpp:378 -msgid "No flash function" -msgstr "Keine Blitzlichtfunktion." - -#: src/tags.cpp:379 -msgid "No, no flash function" -msgstr "Keine Blitzlichtfunktion." - -#: src/tags.cpp:380 -msgid "Yes, red-eye reduction" -msgstr "Blitz ausgelöst, Rote-Augen-Reduktion" - -#: src/tags.cpp:381 -msgid "Yes, red-eye reduction, return light not detected" -msgstr "Blitz ausgelöst, Rote-Augen-Reduktion, keine Reflektion erkannt" - -#: src/tags.cpp:382 -msgid "Yes, red-eye reduction, return light detected" -msgstr "Blitz ausgelöst, Rote-Augen-Reduktion, Reflektion erkannt" - -#: src/tags.cpp:383 -msgid "Yes, compulsory, red-eye reduction" -msgstr "Blitz ausgelöst, fester Modus, Rote-Augen-Reduktion" - -#: src/tags.cpp:384 -msgid "Yes, compulsory, red-eye reduction, return light not detected" -msgstr "" -"Blitz ausgelöst, fester Modus, Rote-Augen-Reduktion, keine Reflektion erkannt" - -#: src/tags.cpp:385 -msgid "Yes, compulsory, red-eye reduction, return light detected" -msgstr "" -"Blitz ausgelöst, fester Modus, Rote-Augen-Reduktion, Reflektion erkannt" - -#: src/tags.cpp:386 -msgid "No, red-eye reduction" -msgstr "Blitz nicht ausgelöst, Rote-Augen-Reduktion" - -#: src/tags.cpp:387 -msgid "No, auto, red-eye reduction" -msgstr "Blitz nicht ausgelöst, automatisch, Rote-Augen-Reduktion" - -#: src/tags.cpp:388 -msgid "Yes, auto, red-eye reduction" -msgstr "Blitz ausgelöst, automatisch, Rote-Augen-Reduktion" - -#: src/tags.cpp:389 -msgid "Yes, auto, red-eye reduction, return light not detected" -msgstr "Blitz ausgelöst, Rote-Augen-Reduktion, keine Reflektion erkannt" - -#: src/tags.cpp:390 -msgid "Yes, auto, red-eye reduction, return light detected" -msgstr "Blitz ausgelöst, automatisch, Rote-Augen-Reduktion, Reflektion erkannt" - -#: src/tags.cpp:395 -msgid "Rectangular (or square) layout" -msgstr "" - -#: src/tags.cpp:396 -msgid "Staggered layout A: even columns are offset down by 1/2 row" -msgstr "" - -#: src/tags.cpp:397 -msgid "Staggered layout B: even columns are offset up by 1/2 row" -msgstr "" - -#: src/tags.cpp:398 -msgid "Staggered layout C: even rows are offset right by 1/2 column" -msgstr "" - -#: src/tags.cpp:399 -msgid "Staggered layout D: even rows are offset left by 1/2 column" -msgstr "" - -#: src/tags.cpp:404 -msgid "Processing Software" -msgstr "Verarbeitungssoftware" - -#: src/tags.cpp:405 -msgid "The name and version of the software used to post-process the picture." -msgstr "" -"Der Name und die Version der Software, die benutzt wurde um das Bild nach zu " -"bearbeiten." - -#: src/tags.cpp:408 -msgid "New Subfile Type" -msgstr "Neuer Unterdateityp" - -#: src/tags.cpp:409 -msgid "A general indication of the kind of data contained in this subfile." -msgstr "Genereller Hinweis auf die Art der Daten in dieser Unterdatei" - -#: src/tags.cpp:411 -#, fuzzy -msgid "Subfile Type" -msgstr "Neuer Unterdateityp" - -#: src/tags.cpp:412 -#, fuzzy -msgid "" -"A general indication of the kind of data contained in this subfile. This " -"field is deprecated. The NewSubfileType field should be used instead." -msgstr "Genereller Hinweis auf die Art der Daten in dieser Unterdatei" - -#: src/tags.cpp:416 -msgid "" -"The number of columns of image data, equal to the number of pixels per row. " -"In JPEG compressed data a JPEG marker is used instead of this tag." -msgstr "" -"Die Anzahl der Spalten der Bilddaten, gleich zu der Anzahl an Pixel per " -"Zeile. Im JPEG Datenstrom wird ein JPEG Marker anstelle dieses Feldes " -"verwendet." - -#: src/tags.cpp:421 -msgid "" -"The number of rows of image data. In JPEG compressed data a JPEG marker is " -"used instead of this tag." -msgstr "" -"Die Anzahl an Spalten in den Bilddaten. In einem JPEG Datenstrom wird ein " -"JPEG Marker anstelle dieses Feldes verwendet." - -#: src/tags.cpp:424 -msgid "Bits per Sample" -msgstr "Bits per Sample." - -#: src/tags.cpp:425 -msgid "" -"The number of bits per image component. In this standard each component of " -"the image is 8 bits, so the value for this tag is 8. See also " -". In JPEG compressed data a JPEG marker is used instead of " -"this tag." -msgstr "" -"Die Anzahl der Bits pro Image Komponente. In diesem Standard ist jede " -"Komponente 8 Bit, und somit der Wert dieses Feldes 8. Siehe auch " -". Im JPEG Datenstrom wird ein JPEG Marker statt diesem " -"Feld benutzt." - -#: src/tags.cpp:431 -msgid "" -"The compression scheme used for the image data. When a primary image is JPEG " -"compressed, this designation is not necessary and is omitted. When " -"thumbnails use JPEG compression, this tag value is set to 6." -msgstr "" -"Das Kompressionsschema das für diese Bilddaten verwendet wird. Wenn ein " -"Primärbild komprimiert wird ist diese Spezifikation nicht notwendig und wird " -"weggelassen. Wenn die Vorschaubilder JPEG Kompression verwenden, hat dieses " -"Feld den Wert 6." - -#: src/tags.cpp:437 -msgid "" -"The pixel composition. In JPEG compressed data a JPEG marker is used instead " -"of this tag." -msgstr "" -"Der Pixel Aufbau. Im JPEG Datenstrom wird ein JPEG Marker statt diesem Feld " -"benutzt." - -#: src/tags.cpp:440 -msgid "Threshholding" -msgstr "" - -#: src/tags.cpp:441 -msgid "" -"For black and white TIFF files that represent shades of gray, the technique " -"used to convert from gray to black and white pixels." -msgstr "" - -#: src/tags.cpp:444 -#, fuzzy -msgid "Cell Width" -msgstr "Breite des Zuschnitts" - -#: src/tags.cpp:445 -msgid "" -"The width of the dithering or halftoning matrix used to create a dithered or " -"halftoned bilevel file." -msgstr "" - -#: src/tags.cpp:448 -#, fuzzy -msgid "Cell Length" -msgstr "Kachellänge" - -#: src/tags.cpp:449 -msgid "" -"The length of the dithering or halftoning matrix used to create a dithered " -"or halftoned bilevel file." -msgstr "" - -#: src/tags.cpp:452 -msgid "Fill Order" -msgstr "Füllreihenfolge" - -#: src/tags.cpp:453 -msgid "The logical order of bits within a byte" -msgstr "Die logische Reihenfolge der Bits in einem Byte." - -#: src/tags.cpp:455 -msgid "Document Name" -msgstr "Dokumentenname" - -#: src/tags.cpp:456 -msgid "The name of the document from which this image was scanned" -msgstr "Der Name des Dokuments von dem das Bild eingelesen wurde." - -#: src/tags.cpp:459 -msgid "" -"A character string giving the title of the image. It may be a comment such " -"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " -"used. When a 2-bytes code is necessary, the Exif Private tag " -"is to be used." -msgstr "" -"Eine ASCII Zeichenkette der den Titel des Bildes spezifiziert. Dieser kann " -"ein Kommentar sein wie zb \"1988 Firmen Picknick\" oder ähnlich. 2 Byte " -"Character Codes können nicht benutzt werden. Wenn ein 2 Byte Code notwendig " -"ist, sollte das Exif Privatfeld benutzt werden." - -#: src/tags.cpp:466 -msgid "" -"The manufacturer of the recording equipment. This is the manufacturer of the " -"DSC, scanner, video digitizer or other equipment that generated the image. " -"When the field is left blank, it is treated as unknown." -msgstr "" -"Der Hersteller des Bildaufzeichnungsgerätes.Dies ist der Hersteller der " -"Kamera, des Scanners, des Video Digitalisierers oder anderem Equipment " -"welches dieses Bild erzeugte. Wenn das Feld leer ist, wird er als unbekannt " -"behandelt." - -#: src/tags.cpp:472 -msgid "" -"The model name or model number of the equipment. This is the model name or " -"number of the DSC, scanner, video digitizer or other equipment that " -"generated the image. When the field is left blank, it is treated as unknown." -msgstr "" -"Der Name oder die Modellnummer des Equipments. Dies ist der Name oder die " -"Modellnummer der Kamera, des Scanners, des Video Digitalisierers oder des " -"Equipments, das das Bild generiert hat. Wenn das Feld leer ist, wird es als " -"unbekannt behandelt." - -#: src/tags.cpp:478 -msgid "" -"For each strip, the byte offset of that strip. It is recommended that this " -"be selected so the number of strip bytes does not exceed 64 Kbytes. With " -"JPEG compressed data this designation is not needed and is omitted. See also " -" and ." -msgstr "" -"Für jeden Strip ist dies das Offset für diesen Strip in Bytes. Es wird " -"empfohlen, diese so zu wählen, das die Anzahl an Byts pro Strip nicht 64 " -"KBytes überschreitet. In einem JPEG Datenstrom diese Spezifikation nicht " -"nötig und wird weggelassen. Siehe auch und ." - -#: src/tags.cpp:485 -msgid "The image orientation viewed in terms of rows and columns." -msgstr "Die Bildausrichtung in Sicht von Spalten und Zeilen." - -#: src/tags.cpp:487 -msgid "Samples per Pixel" -msgstr "Samples pro Pixel" - -#: src/tags.cpp:488 -msgid "" -"The number of components per pixel. Since this standard applies to RGB and " -"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " -"JPEG marker is used instead of this tag." -msgstr "" -"Die Anzahl der Komponenten pro Pixel. Da sicher dieser Standard auf RGB und " -"YCbCr Bilder bezieht, ist der Wert dieses Feldes immer 3. Im JPEG Datenstrom " -"wird anstatt diesem Feld ein JPEG Marker benutzt." - -#: src/tags.cpp:492 -msgid "Rows per Strip" -msgstr "Zeilen pro Strip" - -#: src/tags.cpp:493 -msgid "" -"The number of rows per strip. This is the number of rows in the image of one " -"strip when an image is divided into strips. With JPEG compressed data this " -"designation is not needed and is omitted. See also and " -"." -msgstr "" -"Die Anzahl der Zeilen pro Strip. Dieses ist die Anzahl der Zeilen in einem " -"Strip falls ein Bild in Strips unterteilt ist. In einem JPEG Datenstrom ist " -"dieses Feld nicht nötig und wird weggelassen. Siehe auch und " -"." - -#: src/tags.cpp:498 -msgid "Strip Byte Count" -msgstr "Strip Byte Anzahl" - -#: src/tags.cpp:499 -msgid "" -"The total number of bytes in each strip. With JPEG compressed data this " -"designation is not needed and is omitted." -msgstr "" -"Die Anzahl der Bytes pro Strip. In einem JPEG Datenstrom ist dieses Feld " -"nicht nötig und wird weggelassen." - -#: src/tags.cpp:502 -msgid "X-Resolution" -msgstr "Auflösung in x-Richtung" - -#: src/tags.cpp:503 -msgid "" -"The number of pixels per in the direction. " -"When the image resolution is unknown, 72 [dpi] is designated." -msgstr "" -"Die Anzahl an Pixel pro in der Richtung. Wenn " -"keine bekannt ist, werden 72 [dpi] angenommen." - -#: src/tags.cpp:506 -msgid "Y-Resolution" -msgstr "Auflösung in y-Richtung" - -#: src/tags.cpp:507 -msgid "" -"The number of pixels per in the direction. " -"The same value as is designated." -msgstr "" -"Die Anzahl an Pixel pro in der Richtung. " -"Derselbe Wert wie in wird spezifiziert." - -#: src/tags.cpp:511 -msgid "" -"Indicates whether pixel components are recorded in a chunky or planar " -"format. In JPEG compressed files a JPEG marker is used instead of this tag. " -"If this field does not exist, the TIFF default of 1 (chunky) is assumed." -msgstr "" -"Zeigt an, ob Pixelkomponenten im planarer oder \"chunky\" Format vorliegen. " -"In einem JPEG Bild wird ein JPEG Marker statt diesem Feld benutzt. Wenn " -"dieses Feld nicht existiert wird das TIFF Default 1 (\"chunky\") angenommen." - -#: src/tags.cpp:516 -#, fuzzy -msgid "Gray Response Unit" -msgstr "Graupunkt" - -#: src/tags.cpp:517 -msgid "The precision of the information contained in the GrayResponseCurve." -msgstr "" - -#: src/tags.cpp:519 -#, fuzzy -msgid "Gray Response Curve" -msgstr "Farbtonkurve" - -#: src/tags.cpp:520 -msgid "For grayscale data, the optical density of each possible pixel value." -msgstr "" - -#: src/tags.cpp:522 -#, fuzzy -msgid "T4 Options" -msgstr "Option" - -#: src/tags.cpp:523 -msgid "T.4-encoding options." -msgstr "" - -#: src/tags.cpp:525 -#, fuzzy -msgid "T6 Options" -msgstr "Option" - -#: src/tags.cpp:526 -msgid "T.6-encoding options." -msgstr "" - -#: src/tags.cpp:529 -msgid "" -"The unit for measuring and . The same unit is " -"used for both and . If the image resolution is " -"unknown, 2 (inches) is designated." -msgstr "" -"Die Einheit zur Messung von und . Die selbe " -"Einheit wird für und verwendet. Wenn diese " -"unbekannt ist, wird der Standard von 2 (Zoll) angenommen." - -#: src/tags.cpp:534 -msgid "" -"A transfer function for the image, described in tabular style. Normally this " -"tag is not necessary, since color space is specified in the color space " -"information tag ()." -msgstr "" -"Eine Transferfunktion für das Bild, beschrieben in tabuliertem Stil. " -"Normalerweise ist dieses Feld nicht nötig, da der Farbraum bereits im " -"Farbraum Informationsfeld angegeben wurde ()." - -#: src/tags.cpp:539 -msgid "" -"This tag records the name and version of the software or firmware of the " -"camera or image input device used to generate the image. The detailed format " -"is not specified, but it is recommended that the example shown below be " -"followed. When the field is left blank, it is treated as unknown." -msgstr "" -"Dieses Feld spezifiziert den Namen und die Version der Software oder " -"Firmware des Kameras oder anderen Bildeingabegerätes, das dieses Bild " -"erzeugt hat. Das detaillierte Format ist nicht spezifiziert, aber es ist " -"empfohlen, das das untenstehende Beispiel nachgeahmt wird. Wenn das Feld " -"leer ist, wird es als unbekannt angenommen." - -#: src/tags.cpp:546 -msgid "" -"The date and time of image creation. In Exif standard, it is the date and " -"time the file was changed." -msgstr "" -"Das Datum und die Uhrzeit der Erstellung des Bildes. In diesem Exif-Standard " -"ist es das Datum und die Zeit der letzten Änderung." - -#: src/tags.cpp:550 -msgid "" -"This tag records the name of the camera owner, photographer or image " -"creator. The detailed format is not specified, but it is recommended that " -"the information be written as in the example below for ease of " -"Interoperability. When the field is left blank, it is treated as unknown. " -"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " -"Ken James\"" -msgstr "" -"Dieses Feld enthält den Namen des Besitzers der Kamera, des Fotographen oder " -"Bilderschaffers. Das Format ist nicht festgelegt, aber es wird empfohlen die " -"Informationen wie in unten stehendem Beispiel anzugeben für bessere " -"Interoperabilität. Wenn das Feld leer ist, wird der Name als unbekannt " -"angenommen." - -#: src/tags.cpp:557 -#, fuzzy -msgid "Host Computer" -msgstr "Host-Rechner" - -#: src/tags.cpp:558 -msgid "" -"This tag records information about the host computer used to generate the " -"image." -msgstr "" -"Dieses Feld enthält Informationen über den Host-Rechner, der benutzt wurde " -"um das Bild zu generieren." - -#: src/tags.cpp:561 -#, fuzzy -msgid "Predictor" -msgstr "Anbieter" - -#: src/tags.cpp:562 -msgid "" -"A predictor is a mathematical operator that is applied to the image data " -"before an encoding scheme is applied." -msgstr "" - -#: src/tags.cpp:566 -msgid "" -"The chromaticity of the white point of the image. Normally this tag is not " -"necessary, since color space is specified in the colorspace information tag " -"()." -msgstr "" -"Die Chromazität des Weißpunktes des Bildes. Normalerweise ist dieses Feld " -"nicht nötig, da der Farbraum im -Feld spezifiziert wird." - -#: src/tags.cpp:571 -msgid "" -"The chromaticity of the three primary colors of the image. Normally this tag " -"is not necessary, since colorspace is specified in the colorspace " -"information tag ()." -msgstr "" -"Die Chromazität der drei primären Farben des Bildes. Normalerweise ist " -"dieses Feld nicht notwendig, da der Farbraum bereits im Farbraum " -"Informationsfeld angeben wurde." - -#: src/tags.cpp:575 -#, fuzzy -msgid "Color Map" -msgstr "Farbmatrix" - -#: src/tags.cpp:576 -msgid "" -"A color map for palette color images. This field defines a Red-Green-Blue " -"color map (often called a lookup table) for palette-color images. In a " -"palette-color image, a pixel value is used to index into an RGB lookup table." -msgstr "" - -#: src/tags.cpp:581 -msgid "Halftone Hints" -msgstr "" - -#: src/tags.cpp:582 -msgid "" -"The purpose of the HalftoneHints field is to convey to the halftone function " -"the range of gray levels within a colorimetrically-specified image that " -"should retain tonal detail." -msgstr "" - -#: src/tags.cpp:586 -msgid "Tile Width" -msgstr "Kachelbreite" - -#: src/tags.cpp:587 -msgid "The tile width in pixels. This is the number of columns in each tile." -msgstr "" - -#: src/tags.cpp:589 -msgid "Tile Length" -msgstr "Kachellänge" - -#: src/tags.cpp:590 -msgid "" -"The tile length (height) in pixels. This is the number of rows in each tile." -msgstr "" - -#: src/tags.cpp:592 -msgid "Tile Offsets" -msgstr "Kachel-Offsets" - -#: src/tags.cpp:593 -msgid "" -"For each tile, the byte offset of that tile, as compressed and stored on " -"disk. The offset is specified with respect to the beginning of the TIFF " -"file. Note that this implies that each tile has a location independent of " -"the locations of other tiles." -msgstr "" - -#: src/tags.cpp:598 -msgid "Tile Byte Counts" -msgstr "Kachel-Byte-Anzahl" - -#: src/tags.cpp:599 -msgid "" -"For each tile, the number of (compressed) bytes in that tile. See " -"TileOffsets for a description of how the byte counts are ordered." -msgstr "" - -#: src/tags.cpp:602 -msgid "SubIFD Offsets" -msgstr "SubIFD Offsets" - -#: src/tags.cpp:603 -msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." -msgstr "" -"Definiert von der Adobe Corporation um TIFF Bäume innerhalb von TIFF Dateien " -"zu erlauben." - -#: src/tags.cpp:605 -#, fuzzy -msgid "Ink Set" -msgstr "Setzen" - -#: src/tags.cpp:606 -msgid "" -"The set of inks used in a separated (PhotometricInterpretation=5) image." -msgstr "" - -#: src/tags.cpp:608 -#, fuzzy -msgid "Ink Names" -msgstr "Besitzername" - -#: src/tags.cpp:609 -msgid "" -"The name of each ink used in a separated (PhotometricInterpretation=5) image." -msgstr "" - -#: src/tags.cpp:611 -#, fuzzy -msgid "Number Of Inks" -msgstr "Taktanzahl" - -#: src/tags.cpp:612 -msgid "" -"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " -"samples." -msgstr "" - -#: src/tags.cpp:614 -#, fuzzy -msgid "Dot Range" -msgstr "Dynamischer Bereich" - -#: src/tags.cpp:615 -#, c-format -msgid "The component values that correspond to a 0% dot and 100% dot." -msgstr "" - -#: src/tags.cpp:617 -#, fuzzy -msgid "Target Printer" -msgstr "Zielblende" - -#: src/tags.cpp:618 -msgid "" -"A description of the printing environment for which this separation is " -"intended." -msgstr "" - -#: src/tags.cpp:620 -#, fuzzy -msgid "Extra Samples" -msgstr "Bits pro Abtastung" - -#: src/tags.cpp:621 -msgid "" -"Specifies that each pixel has m extra components whose interpretation is " -"defined by one of the values listed below." -msgstr "" - -#: src/tags.cpp:624 -#, fuzzy -msgid "Sample Format" -msgstr "Dateiformat" - -#: src/tags.cpp:625 -msgid "This field specifies how to interpret each data sample in a pixel." -msgstr "" - -#: src/tags.cpp:627 -#, fuzzy -msgid "SMin Sample Value" -msgstr "Audio-Abtastrate" - -#: src/tags.cpp:628 -msgid "This field specifies the minimum sample value." -msgstr "" - -#: src/tags.cpp:630 -#, fuzzy -msgid "SMax Sample Value" -msgstr "Maximale Blende" - -#: src/tags.cpp:631 -msgid "This field specifies the maximum sample value." -msgstr "" - -#: src/tags.cpp:633 -msgid "Transfer Range" -msgstr "Transferbereich" - -#: src/tags.cpp:634 -msgid "Expands the range of the TransferFunction" -msgstr "Erweitert den Bereich der Transferfunktion" - -#: src/tags.cpp:636 -msgid "Clip Path" -msgstr "" - -#: src/tags.cpp:637 -msgid "" -"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " -"creation functionality." -msgstr "" - -#: src/tags.cpp:640 -msgid "X Clip Path Units" -msgstr "" - -#: src/tags.cpp:641 -msgid "" -"The number of units that span the width of the image, in terms of integer " -"ClipPath coordinates." -msgstr "" - -#: src/tags.cpp:644 -msgid "Y Clip Path Units" -msgstr "" - -#: src/tags.cpp:645 -msgid "" -"The number of units that span the height of the image, in terms of integer " -"ClipPath coordinates." -msgstr "" - -#: src/tags.cpp:649 -msgid "" -"Indexed images are images where the 'pixels' do not represent color values, " -"but rather an index (usually 8-bit) into a separate color table, the " -"ColorMap." -msgstr "" - -#: src/tags.cpp:653 -#, fuzzy -msgid "JPEG tables" -msgstr "JPEG-Verarbeitung" - -#: src/tags.cpp:654 -msgid "" -"This optional tag may be used to encode the JPEG quantization andHuffman " -"tables for subsequent use by the JPEG decompression process." -msgstr "" - -#: src/tags.cpp:657 -msgid "OPI Proxy" -msgstr "" - -#: src/tags.cpp:658 -msgid "" -"OPIProxy gives information concerning whether this image is a low-resolution " -"proxy of a high-resolution image (Adobe OPI)." -msgstr "" - -#: src/tags.cpp:661 -msgid "JPEG Process" -msgstr "JPEG-Verarbeitung" - -#: src/tags.cpp:662 -msgid "This field indicates the process used to produce the compressed data" -msgstr "" -"Dieses Feld gibt einen Hinweis auf die Verarbeitung die benutzt wurde, um " -"die komprimierten Daten zu erzeugen." - -#: src/tags.cpp:664 -msgid "JPEG Interchange Format" -msgstr "JPEG Interchange Format" - -#: src/tags.cpp:665 -msgid "" -"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " -"is not used for primary image JPEG data." -msgstr "" -"Der Abstand zum Startbyte (SOI) der JPEG Vorschaubilddaten. Dieses Feld wird " -"nicht für die primären JPEG Daten benutzt." - -#: src/tags.cpp:668 -msgid "JPEG Interchange Format Length" -msgstr "JPEG Interchange Format Länge" - -#: src/tags.cpp:669 -msgid "" -"The number of bytes of JPEG compressed thumbnail data. This is not used for " -"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " -"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " -"be recorded. Compressed thumbnails must be recorded in no more than 64 " -"Kbytes, including all other data to be recorded in APP1." -msgstr "" -"Die Anzahl an Bytes von JPEG Daten im Vorschaubild. Dieses Feld wird nicht " -"für die primären Bilddaten benutzt. JPEG Vorschaudaten werden nicht " -"aufgeteilt, sondern als kontinuierlicher Datenstrom zwischen den SOI und EOI " -"Markern aufgezeichnet. JPEG komprimierte Vorschaubilder müssen inklusive " -"aller anderen Daten in weniger als 64 KByte aufgezeichnet werden um in den " -"APP1 JPEG Marker zu passen." - -#: src/tags.cpp:676 -msgid "JPEG Restart Interval" -msgstr "" - -#: src/tags.cpp:677 -#, fuzzy -msgid "" -"This Field indicates the length of the restart interval used in the " -"compressed image data." -msgstr "" -"Dieses Feld gibt einen Hinweis auf die Verarbeitung die benutzt wurde, um " -"die komprimierten Daten zu erzeugen." - -#: src/tags.cpp:680 -msgid "JPEG Lossless Predictors" -msgstr "" - -#: src/tags.cpp:681 -msgid "" -"This Field points to a list of lossless predictor-selection values, one per " -"component." -msgstr "" - -#: src/tags.cpp:684 -msgid "JPEG Point Transforms" -msgstr "" - -#: src/tags.cpp:685 -msgid "" -"This Field points to a list of point transform values, one per component." -msgstr "" - -#: src/tags.cpp:687 -#, fuzzy -msgid "JPEG Q-Tables" -msgstr "JPEG-Verarbeitung" - -#: src/tags.cpp:688 -msgid "" -"This Field points to a list of offsets to the quantization tables, one per " -"component." -msgstr "" - -#: src/tags.cpp:691 -#, fuzzy -msgid "JPEG DC-Tables" -msgstr "JPEG-Verarbeitung" - -#: src/tags.cpp:692 -msgid "" -"This Field points to a list of offsets to the DC Huffman tables or the " -"lossless Huffman tables, one per component." -msgstr "" - -#: src/tags.cpp:695 -#, fuzzy -msgid "JPEG AC-Tables" -msgstr "JPEG-Verarbeitung" - -#: src/tags.cpp:696 -msgid "" -"This Field points to a list of offsets to the Huffman AC tables, one per " -"component." -msgstr "" - -#: src/tags.cpp:700 -msgid "" -"The matrix coefficients for transformation from RGB to YCbCr image data. No " -"default is given in TIFF; but here the value given in Appendix E, \"Color " -"Space Guidelines\", is used as the default. The color space is declared in a " -"color space information tag, with the default being the value that gives the " -"optimal image characteristics Interoperability this condition." -msgstr "" -"Die Matrix Koeffizienten für Transformationen von RGB in YCbCr Imagedaten. " -"In TIFF ist kein Default angegeben, aber hier wird der Wert, der in Appendix " -"E \"Color Space Guidelines\" angegeben ist, als Default verwendet. Der " -"Farbraum ist im Farbraum Informationsfeld deklariert, mit dem Standardwert, " -"welche die beste Bild Interoperabilität unter diesen Bedingungen ergibt." - -#: src/tags.cpp:708 -msgid "YCbCr Sub-Sampling" -msgstr "YCbCr Sub Sampling" - -#: src/tags.cpp:709 -msgid "" -"The sampling ratio of chrominance components in relation to the luminance " -"component. In JPEG compressed data a JPEG marker is used instead of this tag." -msgstr "" -"Die Samplingrate der Chrominanz Komponenten in Bezug zu den " -"Helligkeitskomponenten. In JPEG Datenströmen wird ein JPEG Marker anstelle " -"dieses Feldes verwendet." - -#: src/tags.cpp:714 -msgid "" -"The position of chrominance components in relation to the luminance " -"component. This field is designated only for JPEG compressed data or " -"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " -"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " -"record data, in order to improve the image quality when viewed on TV " -"systems. When this field does not exist, the reader shall assume the TIFF " -"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " -"recommended. If the reader does not have the capability of supporting both " -"kinds of , it shall follow the TIFF default regardless of " -"the value in this field. It is preferable that readers be able to support " -"both centered and co-sited positioning." -msgstr "" - -#: src/tags.cpp:728 -msgid "Reference Black/White" -msgstr "Schwarz/Weiß Referenz" - -#: src/tags.cpp:729 -msgid "" -"The reference black point value and reference white point value. No defaults " -"are given in TIFF, but the values below are given as defaults here. The " -"color space is declared in a color space information tag, with the default " -"being the value that gives the optimal image characteristics " -"Interoperability these conditions." -msgstr "" -"Der Referenz Schwarzwert und der Referenzweißwert. Im TIFF Standard sind " -"keine Standards angegeben, aber unten stehende Werte werden als Default hier " -"verwendet. Der Farbraum ist in einem Farbraum Informationsfeld deklariert, " -"mit dem Wert als Standard, der die besten Bildwerte für Interoperabilität " -"garantiert." - -#: src/tags.cpp:736 -msgid "XML Packet" -msgstr "XML Paket" - -#: src/tags.cpp:737 -msgid "XMP Metadata (Adobe technote 9-14-02)" -msgstr "XMP-Metadaten (Adobe Technische Notiz 9-14-02)" - -#: src/tags.cpp:739 -msgid "Windows Rating" -msgstr "Windows-Bewertung" - -#: src/tags.cpp:740 -msgid "Rating tag used by Windows" -msgstr "Bewertungsfeld das von Windows benutzt wird." - -#: src/tags.cpp:742 -msgid "Windows Rating Percent" -msgstr "Windows-Bewertung in Prozent" - -#: src/tags.cpp:743 -msgid "Rating tag used by Windows, value in percent" -msgstr "Bewertungsfeld das von Windows benutzt wird. Der Wert ist in Prozent." - -#: src/tags.cpp:745 -#, fuzzy -msgid "Image ID" -msgstr "Eindeutige Bildnummer" - -#: src/tags.cpp:746 -msgid "" -"ImageID is the full pathname of the original, high-resolution image, or any " -"other identifying string that uniquely identifies the original image (Adobe " -"OPI)." -msgstr "" - -#: src/tags.cpp:750 -msgid "CFA Repeat Pattern Dimension" -msgstr "" - -#: src/tags.cpp:751 -msgid "" -"Contains two values representing the minimum rows and columns to define the " -"repeating patterns of the color filter array" -msgstr "" - -#: src/tags.cpp:755 -msgid "" -"Indicates the color filter array (CFA) geometric pattern of the image sensor " -"when a one-chip color area sensor is used. It does not apply to all sensing " -"methods" -msgstr "" -"Gibt das geometrische Muster des Farbfilter Arrays (CFA - Color Filter " -"Array) des Bildsensors an, wenn ein 1-Chip-Farbflächen-Sensor benutzt wird. " -"Es bezieht sich nicht auf alle Sensormethoden." - -#: src/tags.cpp:763 -msgid "" -"Copyright information. In this standard the tag is used to indicate both the " -"photographer and editor copyrights. It is the copyright notice of the person " -"or organization claiming rights to the image. The Interoperability copyright " -"statement including date and rights should be written in this field; e.g., " -"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " -"field records both the photographer and editor copyrights, with each " -"recorded in a separate part of the statement. When there is a clear " -"distinction between the photographer and editor copyrights, these are to be " -"written in the order of photographer followed by editor copyright, separated " -"by NULL (in this case since the statement also ends with a NULL, there are " -"two NULL codes). When only the photographer copyright is given, it is " -"terminated by one NULL code . When only the editor copyright is given, the " -"photographer copyright part consists of one space followed by a terminating " -"NULL code, then the editor copyright is given. When the field is left blank, " -"it is treated as unknown." -msgstr "" -"Copyright Information. In diesem Standard wird dieses Feld dafür benutzt, um " -"sowohl das Copyright des Fotographen als auch des Editors anzugeben. Es " -"beinhaltet die Copyright Notiz der Person oder der Organisation die Rechte " -"an dem Bild einfordert. Die interoperable Copyrightnotiz sollte in dieses " -"Feld geschrieben werden; z.B., \"Copyright Claudia Mustermann, 200x. All " -"rights reserved.\" In diesem Standard enthält dieses Feld sowohl Copyright " -"des Fotographen als auch des Editors in getrennten Feldern. Wenn das Feld " -"leer ist, wird es als unbekannt gewertet." - -#: src/tags.cpp:782 -#, fuzzy -msgid "Exposure time, given in seconds." -msgstr "Belichtungszeit in Sekunden." - -#: src/tags.cpp:783 src/tags.cpp:1546 -msgid "The F number." -msgstr "Die F Nummer." - -#: src/tags.cpp:784 -msgid "IPTC/NAA" -msgstr "IPTC/NAA" - -#: src/tags.cpp:785 -msgid "Contains an IPTC/NAA record" -msgstr "Enthält den IPTC/NAA Eintrag." - -#: src/tags.cpp:787 -msgid "Image Resources Block" -msgstr "Bildressourcenblock" - -#: src/tags.cpp:788 -msgid "Contains information embedded by the Adobe Photoshop application" -msgstr "" -"Enthält die Informationen die von dem Programm Adobe Photoshop eingebettet " -"wurden." - -#: src/tags.cpp:791 -msgid "" -"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " -"as that of the IFD specified in TIFF. ordinarily, however, it does not " -"contain image data as in the case of TIFF." -msgstr "" -"Ein Zeiger auf die Exif IFD Interoperabilität, Exif IFD hat die gleiche " -"Struktur wie die des im TIFF spezifizierte IFD, allerdings enthält es keine " -"Bilddaten wie im Fall von TIFF." - -#: src/tags.cpp:796 -msgid "Inter Color Profile" -msgstr "Farbprofile" - -#: src/tags.cpp:797 -msgid "" -"Contains an InterColor Consortium (ICC) format color space characterization/" -"profile" -msgstr "" -"Enthält eine Farbrofil zur Charakterisierung des Farbraums gemäß dem " -"InterColor Consortium (ICC)" - -#: src/tags.cpp:799 src/tags.cpp:1549 -msgid "" -"The class of the program used by the camera to set exposure when the picture " -"is taken." -msgstr "" -"Die Programmklasse, die die Kamera zum Setzen der Belichtungszeit bei der " -"Aufnahme benutzte." - -#: src/tags.cpp:800 -#, fuzzy -msgid "Indicates the spectral sensitivity of each channel of the camera used." -msgstr "Exif-Feld 34852, 0x8824. Spektrale Empfindlichkeit jedes Kanals." - -#: src/tags.cpp:802 -msgid "" -"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " -"Info IFD, like that of Exif IFD, has no image data." -msgstr "" -"Ein Zeiger auf das GPS Info IFD. Die Interoperabilitätsstruktur des GPS Info " -"IFD hat, genau wie das Exif IFD, keine Bilddaten." - -#: src/tags.cpp:806 src/tags.cpp:1557 -msgid "ISO Speed Ratings" -msgstr "ISO Geschwindigkeitsangabe" - -#: src/tags.cpp:806 src/tags.cpp:1558 -msgid "" -"Indicates the ISO Speed and ISO Latitude of the camera or input device as " -"specified in ISO 12232." -msgstr "" -"Gibt die ISO Geschwindigkeit und Breite der Kamera bzw. des Eingabegeräts " -"an, wie in ISO 12232 spezifiziert." - -#: src/tags.cpp:807 -#, fuzzy -msgid "" -"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " -"14524." -msgstr "" -"Exif-Feld 34856, 0x8828. Verfahren zur Messung optoelektronischer Kennlinien " -"wie in ISO 14524 spezifiziert." - -#: src/tags.cpp:808 -#, fuzzy -msgid "Interlace" -msgstr "Interlaced" - -#: src/tags.cpp:808 -#, fuzzy -msgid "Indicates the field number of multifield images." -msgstr "Gibt das Layout eines Bildes an." - -#: src/tags.cpp:809 -#, fuzzy -msgid "Time Zone Offset" -msgstr "Kachel-Offsets" - -#: src/tags.cpp:810 -msgid "" -"This optional tag encodes the time zone of the camera clock (relativeto " -"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " -"picture was taken. It may also contain the time zone offsetof the clock used " -"to create the DateTime tag-value when the image wasmodified." -msgstr "" - -#: src/tags.cpp:816 -#, fuzzy -msgid "Self Timer Mode" -msgstr "Selbstauslöser" - -#: src/tags.cpp:816 -msgid "Number of seconds image capture was delayed from button press." -msgstr "" - -#: src/tags.cpp:817 -#, fuzzy -msgid "Date Time Original" -msgstr "Datum und Uhrzeit (Original)" - -#: src/tags.cpp:817 -#, fuzzy -msgid "The date and time when the original image data was generated." -msgstr "Das Datum und die Uhrzeit der letzten Änderung der Metadaten." - -#: src/tags.cpp:818 -#, fuzzy -msgid "Specific to compressed data; states the compressed bits per pixel." -msgstr "" -"Zu den komprimierten Daten gehörige Informationen. Der Kompressionsmodus der " -"für ein komprimiertes Bild verwendet wird ist hier in Teilbits per Pixel " -"angegeben." - -#: src/tags.cpp:819 -#, fuzzy -msgid "Shutter speed." -msgstr "Verschlussgeschwindigkeit" - -#: src/tags.cpp:820 -#, fuzzy -msgid "The lens aperture." -msgstr "Minimale Blende" - -#: src/tags.cpp:821 -#, fuzzy -msgid "The value of brightness." -msgstr "Die Anzahl der Takte." - -#: src/tags.cpp:822 -#, fuzzy -msgid "The exposure bias." -msgstr "Belichtungskontrolle" - -#: src/tags.cpp:823 src/tags.cpp:1638 -msgid "Max Aperture Value" -msgstr "Maximale Blende" - -#: src/tags.cpp:823 -#, fuzzy -msgid "The smallest F number of the lens." -msgstr "Der Name der Szene." - -#: src/tags.cpp:824 src/tags.cpp:1644 -msgid "The distance to the subject, given in meters." -msgstr "Die Entfernung zum Motiv (in Metern)." - -#: src/tags.cpp:825 src/tags.cpp:1647 -msgid "The metering mode." -msgstr "Der Messmodus." - -#: src/tags.cpp:826 src/tags.cpp:1650 -msgid "The kind of light source." -msgstr "Die Art der Lichtquelle." - -#: src/tags.cpp:827 -#, fuzzy -msgid "Indicates the status of flash when the image was shot." -msgstr "" -"Dieses Feld enthält den Weißabgleichsmodus, der zur Aufnahme eingestellt war." - -#: src/tags.cpp:828 -msgid "The actual focal length of the lens, in mm." -msgstr "" - -#: src/tags.cpp:829 -msgid "Amount of flash energy (BCPS)." -msgstr "" - -#: src/tags.cpp:830 -msgid "SFR of the camera." -msgstr "" - -#: src/tags.cpp:831 -#, fuzzy -msgid "Noise" -msgstr "Keine" - -#: src/tags.cpp:831 -msgid "Noise measurement values." -msgstr "" - -#: src/tags.cpp:832 -#, fuzzy -msgid "" -"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " -"direction for main image." -msgstr "" -"Die Anzahl an Pixel pro in der Richtung. " -"Derselbe Wert wie in wird spezifiziert." - -#: src/tags.cpp:833 -#, fuzzy -msgid "" -"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " -"direction for main image." -msgstr "" -"Die Anzahl an Pixel pro in der Richtung. " -"Derselbe Wert wie in wird spezifiziert." - -#: src/tags.cpp:834 -msgid "" -"Unit of measurement for FocalPlaneXResolution(37390) and " -"FocalPlaneYResolution(37391)." -msgstr "" - -#: src/tags.cpp:835 -msgid "Number assigned to an image, e.g., in a chained image burst." -msgstr "" - -#: src/tags.cpp:836 -#, fuzzy -msgid "Security Classification" -msgstr "Elektronische Vergrößerung" - -#: src/tags.cpp:836 -#, fuzzy -msgid "Security classification assigned to the image." -msgstr "Elektronische Vergrößerung" - -#: src/tags.cpp:837 -msgid "Record of what has been done to the image." -msgstr "" - -#: src/tags.cpp:838 -#, fuzzy -msgid "" -"Indicates the location and area of the main subject in the overall scene." -msgstr "" -"Dieses Feld gibt die Position und Größe des Hauptmotivs in der Szene an." - -#: src/tags.cpp:839 -#, fuzzy -msgid "Encodes the camera exposure index setting when image was captured." -msgstr "" -"Gibt den Belichtungsindex an, der in der Kamera oder im Eingabegerät während " -"der Aufnahme selektiert ist." - -#: src/tags.cpp:840 -msgid "TIFF/EP Standard ID" -msgstr "TIFF/EP Standard ID" - -#: src/tags.cpp:841 -msgid "" -"Contains four ASCII characters representing the TIFF/EP standard version of " -"a TIFF/EP file, eg '1', '0', '0', '0'" -msgstr "" -"Enthält vier ASCII Zeichen, wie z.B. \"1\",\"0\",\"0\",\"0\", die die TIFF/" -"EP Standardversion der TIFF/EP Datei repräsentiert." - -#: src/tags.cpp:844 -#, fuzzy -msgid "Type of image sensor." -msgstr "Rohbild-Center" - -#: src/tags.cpp:845 -msgid "Windows Title" -msgstr "Windows-Titel" - -#: src/tags.cpp:846 -msgid "Title tag used by Windows, encoded in UCS2" -msgstr "Titelfeld, in UCS2 kodiert, das von Windows benutzt wird." - -#: src/tags.cpp:848 -msgid "Windows Comment" -msgstr "Windows-Kommentar" - -#: src/tags.cpp:849 -msgid "Comment tag used by Windows, encoded in UCS2" -msgstr "Kommentarfeld, in UCS2 kodiert, das von Windows benutzt wird." - -#: src/tags.cpp:851 -msgid "Windows Author" -msgstr "Windows-Autor" - -#: src/tags.cpp:852 -msgid "Author tag used by Windows, encoded in UCS2" -msgstr "Autorfeld, in UCS2 kodiert, das von Windows benutzt wird." - -#: src/tags.cpp:854 -msgid "Windows Keywords" -msgstr "Windows-Schlüsselbegriffe" - -#: src/tags.cpp:855 -msgid "Keywords tag used by Windows, encoded in UCS2" -msgstr "Schlüsselfelder, kodiert in UCS2, die von Windows benutzt werden." - -#: src/tags.cpp:857 -msgid "Windows Subject" -msgstr "Windows-Motiv" - -#: src/tags.cpp:858 -msgid "Subject tag used by Windows, encoded in UCS2" -msgstr "Motivfeld, kodiert in UCS2, das von Windows benutzt wird." - -#: src/tags.cpp:860 -#, fuzzy -msgid "Print Image Matching" -msgstr "Zonenabgleich" - -#: src/tags.cpp:861 -#, fuzzy -msgid "Print Image Matching, description needed." -msgstr "Zonenabgleich" - -#: src/tags.cpp:863 -msgid "DNG version" -msgstr "DNG-Version" - -#: src/tags.cpp:864 -msgid "" -"This tag encodes the DNG four-tier version number. For files compliant with " -"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " -"1, 1, 0, 0." -msgstr "" - -#: src/tags.cpp:868 -msgid "DNG backward version" -msgstr "DNG-Rückversion" - -#: src/tags.cpp:869 -msgid "" -"This tag specifies the oldest version of the Digital Negative specification " -"for which a file is compatible. Readers shouldnot attempt to read a file if " -"this tag specifies a version number that is higher than the version number " -"of the specification the reader was based on. In addition to checking the " -"version tags, readers should, for all tags, check the types, counts, and " -"values, to verify it is able to correctly read the file." -msgstr "" - -#: src/tags.cpp:877 -msgid "Unique Camera Model" -msgstr "Eindeutiges Kameramodell" - -#: src/tags.cpp:878 -msgid "" -"Defines a unique, non-localized name for the camera model that created the " -"image in the raw file. This name should include the manufacturer's name to " -"avoid conflicts, and should not be localized, even if the camera name itself " -"is localized for different markets (see LocalizedCameraModel). This string " -"may be used by reader software to index into per-model preferences and " -"replacement profiles." -msgstr "" - -#: src/tags.cpp:885 -msgid "Localized Camera Model" -msgstr "Lokalisiertes Kameramodell" - -#: src/tags.cpp:886 -msgid "" -"Similar to the UniqueCameraModel field, except the name can be localized for " -"different markets to match the localization of the camera name." -msgstr "" - -#: src/tags.cpp:890 -msgid "CFA Plane Color" -msgstr "CFA Ebenenfarbe" - -#: src/tags.cpp:891 -msgid "" -"Provides a mapping between the values in the CFAPattern tag and the plane " -"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." -msgstr "" - -#: src/tags.cpp:895 -msgid "CFA Layout" -msgstr "" - -#: src/tags.cpp:896 -msgid "Describes the spatial layout of the CFA." -msgstr "" - -#: src/tags.cpp:899 -msgid "" -"Describes a lookup table that maps stored values into linear values. This " -"tag is typically used to increase compression ratios by storing the raw data " -"in a non-linear, more visually uniform space with fewer total encoding " -"levels. If SamplesPerPixel is not equal to one, this single table applies to " -"all the samples for each pixel." -msgstr "" - -#: src/tags.cpp:905 -#, fuzzy -msgid "Black Level Repeat Dim" -msgstr "Schwarzlevel Delta H" - -#: src/tags.cpp:906 -msgid "Specifies repeat pattern size for the BlackLevel tag." -msgstr "" - -#: src/tags.cpp:909 -msgid "" -"Specifies the zero light (a.k.a. thermal black or black current) encoding " -"level, as a repeating pattern. The origin of this pattern is the top-left " -"corner of the ActiveArea rectangle. The values are stored in row-column-" -"sample scan order." -msgstr "" - -#: src/tags.cpp:914 -msgid "Black Level Delta H" -msgstr "Schwarzlevel Delta H" - -#: src/tags.cpp:915 -msgid "" -"If the zero light encoding level is a function of the image column, " -"BlackLevelDeltaH specifies the difference between the zero light encoding " -"level for each column and the baseline zero light encoding level. If " -"SamplesPerPixel is not equal to one, this single table applies to all the " -"samples for each pixel." -msgstr "" - -#: src/tags.cpp:921 -msgid "Black Level Delta V" -msgstr "Schwarzlevel Delta V" - -#: src/tags.cpp:922 -msgid "" -"If the zero light encoding level is a function of the image row, this tag " -"specifies the difference between the zero light encoding level for each row " -"and the baseline zero light encoding level. If SamplesPerPixel is not equal " -"to one, this single table applies to all the samples for each pixel." -msgstr "" - -#: src/tags.cpp:928 -msgid "White Level" -msgstr "Weißlevel" - -#: src/tags.cpp:929 -msgid "" -"This tag specifies the fully saturated encoding level for the raw sample " -"values. Saturation is caused either by the sensor itself becoming highly non-" -"linear in response, or by the camera's analog to digital converter clipping." -msgstr "" - -#: src/tags.cpp:934 -msgid "Default Scale" -msgstr "Standard-Skalierung" - -#: src/tags.cpp:935 -msgid "" -"DefaultScale is required for cameras with non-square pixels. It specifies " -"the default scale factors for each direction to convert the image to square " -"pixels. Typically these factors are selected to approximately preserve total " -"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " -"as the Fujifilm SuperCCD, these two values should usually differ by a factor " -"of 2.0." -msgstr "" - -#: src/tags.cpp:942 -msgid "Default Crop Origin" -msgstr "" - -#: src/tags.cpp:943 -msgid "" -"Raw images often store extra pixels around the edges of the final image. " -"These extra pixels help prevent interpolation artifacts near the edges of " -"the final image. DefaultCropOrigin specifies the origin of the final image " -"area, in raw image coordinates (i.e., before the DefaultScale has been " -"applied), relative to the top-left corner of the ActiveArea rectangle." -msgstr "" - -#: src/tags.cpp:950 -#, fuzzy -msgid "Default Crop Size" -msgstr "Standard-Skalierung" - -#: src/tags.cpp:951 -msgid "" -"Raw images often store extra pixels around the edges of the final image. " -"These extra pixels help prevent interpolation artifacts near the edges of " -"the final image. DefaultCropSize specifies the size of the final image area, " -"in raw image coordinates (i.e., before the DefaultScale has been applied)." -msgstr "" - -#: src/tags.cpp:957 -msgid "Color Matrix 1" -msgstr "Farbmatrix 1" - -#: src/tags.cpp:958 -msgid "" -"ColorMatrix1 defines a transformation matrix that converts XYZ values to " -"reference camera native color space values, under the first calibration " -"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " -"tag is required for all non-monochrome DNG files." -msgstr "" - -#: src/tags.cpp:964 -msgid "Color Matrix 2" -msgstr "Farbmatrix 2" - -#: src/tags.cpp:965 -msgid "" -"ColorMatrix2 defines a transformation matrix that converts XYZ values to " -"reference camera native color space values, under the second calibration " -"illuminant. The matrix values are stored in row scan order." -msgstr "" - -#: src/tags.cpp:970 -msgid "Camera Calibration 1" -msgstr "Kamerakalibrierung 1" - -#: src/tags.cpp:971 -msgid "" -"CameraClalibration1 defines a calibration matrix that transforms reference " -"camera native space values to individual camera native space values under " -"the first calibration illuminant. The matrix is stored in row scan order. " -"This matrix is stored separately from the matrix specified by the " -"ColorMatrix1 tag to allow raw converters to swap in replacement color " -"matrices based on UniqueCameraModel tag, while still taking advantage of any " -"per-individual camera calibration performed by the camera manufacturer." -msgstr "" - -#: src/tags.cpp:980 -msgid "Camera Calibration 2" -msgstr "Kamerakalibrierung 2" - -#: src/tags.cpp:981 -msgid "" -"CameraCalibration2 defines a calibration matrix that transforms reference " -"camera native space values to individual camera native space values under " -"the second calibration illuminant. The matrix is stored in row scan order. " -"This matrix is stored separately from the matrix specified by the " -"ColorMatrix2 tag to allow raw converters to swap in replacement color " -"matrices based on UniqueCameraModel tag, while still taking advantage of any " -"per-individual camera calibration performed by the camera manufacturer." -msgstr "" - -#: src/tags.cpp:990 -#, fuzzy -msgid "Reduction Matrix 1" -msgstr "Farbmatrix 1" - -#: src/tags.cpp:991 -msgid "" -"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " -"first stage in converting color camera native space values to XYZ values, " -"under the first calibration illuminant. This tag may only be used if " -"ColorPlanes is greater than 3. The matrix is stored in row scan order." -msgstr "" - -#: src/tags.cpp:997 -#, fuzzy -msgid "Reduction Matrix 2" -msgstr "Farbmatrix 2" - -#: src/tags.cpp:998 -msgid "" -"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " -"first stage in converting color camera native space values to XYZ values, " -"under the second calibration illuminant. This tag may only be used if " -"ColorPlanes is greater than 3. The matrix is stored in row scan order." -msgstr "" - -#: src/tags.cpp:1004 -msgid "Analog Balance" -msgstr "Analogabgleich" - -#: src/tags.cpp:1005 -msgid "" -"Normally the stored raw values are not white balanced, since any digital " -"white balancing will reduce the dynamic range of the final image if the user " -"decides to later adjust the white balance; however, if camera hardware is " -"capable of white balancing the color channels before the signal is " -"digitized, it can improve the dynamic range of the final image. " -"AnalogBalance defines the gain, either analog (recommended) or digital (not " -"recommended) that has been applied the stored raw values." -msgstr "" - -#: src/tags.cpp:1014 -msgid "As Shot Neutral" -msgstr "Neutral wie aufgenommen" - -#: src/tags.cpp:1015 -msgid "" -"Specifies the selected white balance at time of capture, encoded as the " -"coordinates of a perfectly neutral color in linear reference space values. " -"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." -msgstr "" - -#: src/tags.cpp:1020 -msgid "As Shot White XY" -msgstr "Weiß XY wie aufgenommen " - -#: src/tags.cpp:1021 -msgid "" -"Specifies the selected white balance at time of capture, encoded as x-y " -"chromaticity coordinates. The inclusion of this tag precludes the inclusion " -"of the AsShotNeutral tag." -msgstr "" - -#: src/tags.cpp:1025 -#, fuzzy -msgid "Baseline Exposure" -msgstr "Mehrfache Belichtung" - -#: src/tags.cpp:1026 -msgid "" -"Camera models vary in the trade-off they make between highlight headroom and " -"shadow noise. Some leave a significant amount of highlight headroom during a " -"normal exposure. This allows significant negative exposure compensation to " -"be applied during raw conversion, but also means normal exposures will " -"contain more shadow noise. Other models leave less headroom during normal " -"exposures. This allows for less negative exposure compensation, but results " -"in lower shadow noise for normal exposures. Because of these differences, a " -"raw converter needs to vary the zero point of its exposure compensation " -"control from model to model. BaselineExposure specifies by how much (in EV " -"units) to move the zero point. Positive values result in brighter default " -"results, while negative values result in darker default results." -msgstr "" - -#: src/tags.cpp:1040 -msgid "Baseline Noise" -msgstr "" - -#: src/tags.cpp:1041 -msgid "" -"Specifies the relative noise level of the camera model at a baseline ISO " -"value of 100, compared to a reference camera model. Since noise levels tend " -"to vary approximately with the square root of the ISO value, a raw converter " -"can use this value, combined with the current ISO, to estimate the relative " -"noise level of the current image." -msgstr "" - -#: src/tags.cpp:1047 -#, fuzzy -msgid "Baseline Sharpness" -msgstr "Schärfe" - -#: src/tags.cpp:1048 -msgid "" -"Specifies the relative amount of sharpening required for this camera model, " -"compared to a reference camera model. Camera models vary in the strengths of " -"their anti-aliasing filters. Cameras with weak or no filters require less " -"sharpening than cameras with strong anti-aliasing filters." -msgstr "" - -#: src/tags.cpp:1054 -msgid "Bayer Green Split" -msgstr "" - -#: src/tags.cpp:1055 -msgid "" -"Only applies to CFA images using a Bayer pattern filter array. This tag " -"specifies, in arbitrary units, how closely the values of the green pixels in " -"the blue/green rows track the values of the green pixels in the red/green " -"rows. A value of zero means the two kinds of green pixels track closely, " -"while a non-zero value means they sometimes diverge. The useful range for " -"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." -msgstr "" - -#: src/tags.cpp:1063 -msgid "Linear Response Limit" -msgstr "" - -#: src/tags.cpp:1064 -msgid "" -"Some sensors have an unpredictable non-linearity in their response as they " -"near the upper limit of their encoding range. This non-linearity results in " -"color shifts in the highlight areas of the resulting image unless the raw " -"converter compensates for this effect. LinearResponseLimit specifies the " -"fraction of the encoding range above which the response may become " -"significantly non-linear." -msgstr "" - -#: src/tags.cpp:1072 -msgid "" -"CameraSerialNumber contains the serial number of the camera or camera body " -"that captured the image." -msgstr "" -"CameraSerialNumber enthält die Seriennummer der Kamera oder des " -"Kamerakörpers mit dem das Foto gemacht wurde." - -#: src/tags.cpp:1075 -msgid "Lens Info" -msgstr "Linseninformation" - -#: src/tags.cpp:1076 -msgid "" -"Contains information about the lens that captured the image. If the minimum " -"f-stops are unknown, they should be encoded as 0/0." -msgstr "" - -#: src/tags.cpp:1079 -msgid "Chroma Blur Radius" -msgstr "" - -#: src/tags.cpp:1080 -msgid "" -"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " -"blur should be applied to the image. If this tag is omitted, the reader will " -"use its default amount of chroma blurring. Normally this tag is only " -"included for non-CFA images, since the amount of chroma blur required for " -"mosaic images is highly dependent on the de-mosaic algorithm, in which case " -"the DNG reader's default value is likely optimized for its particular de-" -"mosaic algorithm." -msgstr "" - -#: src/tags.cpp:1088 -#, fuzzy -msgid "Anti Alias Strength" -msgstr "Blitzstärke" - -#: src/tags.cpp:1089 -msgid "" -"Provides a hint to the DNG reader about how strong the camera's anti-alias " -"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " -"prone to aliasing artifacts with some subjects), while a value of 1.0 means " -"a strong anti-alias filter (i.e., the camera almost never has aliasing " -"artifacts)." -msgstr "" - -#: src/tags.cpp:1095 -msgid "Shadow Scale" -msgstr "Schatten-Skalierung" - -#: src/tags.cpp:1096 -msgid "" -"This tag is used by Adobe Camera Raw to control the sensitivity of its " -"'Shadows' slider." -msgstr "" - -#: src/tags.cpp:1099 -msgid "DNG Private Data" -msgstr "DNG-Privatdaten" - -#: src/tags.cpp:1100 -msgid "" -"Provides a way for camera manufacturers to store private data in the DNG " -"file for use by their own raw converters, and to have that data preserved by " -"programs that edit DNG files." -msgstr "" - -#: src/tags.cpp:1104 -#, fuzzy -msgid "MakerNote Safety" -msgstr "Anmerkungen des Herstellers" - -#: src/tags.cpp:1105 -msgid "" -"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " -"safe to preserve along with the rest of the EXIF data. File browsers and " -"other image management software processing an image with a preserved " -"MakerNote should be aware that any thumbnail image embedded in the MakerNote " -"may be stale, and may not reflect the current state of the full size image." -msgstr "" - -#: src/tags.cpp:1112 -msgid "Calibration Illuminant 1" -msgstr "" - -#: src/tags.cpp:1113 -msgid "" -"The illuminant used for the first set of color calibration tags " -"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " -"this tag are the same as the legal values for the LightSource EXIF tag." -msgstr "" - -#: src/tags.cpp:1118 -#, fuzzy -msgid "Calibration Illuminant 2" -msgstr "Verzerrungskorrektur" - -#: src/tags.cpp:1119 -msgid "" -"The illuminant used for an optional second set of color calibration tags " -"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " -"this tag are the same as the legal values for the CalibrationIlluminant1 " -"tag; however, if both are included, neither is allowed to have a value of 0 " -"(unknown)." -msgstr "" - -#: src/tags.cpp:1125 -#, fuzzy -msgid "Best Quality Scale" -msgstr "Standard-Skalierung" - -#: src/tags.cpp:1126 -msgid "" -"For some cameras, the best possible image quality is not achieved by " -"preserving the total pixel count during conversion. For example, Fujifilm " -"SuperCCD images have maximum detail when their total pixel count is doubled. " -"This tag specifies the amount by which the values of the DefaultScale tag " -"need to be multiplied to achieve the best quality image size." -msgstr "" - -#: src/tags.cpp:1133 -msgid "Raw Data Unique ID" -msgstr "Eindeutige ID der Rohdaten" - -#: src/tags.cpp:1134 -msgid "" -"This tag contains a 16-byte unique identifier for the raw image data in the " -"DNG file. DNG readers can use this tag to recognize a particular raw image, " -"even if the file's name or the metadata contained in the file has been " -"changed. If a DNG writer creates such an identifier, it should do so using " -"an algorithm that will ensure that it is very unlikely two different images " -"will end up having the same identifier." -msgstr "" - -#: src/tags.cpp:1142 -msgid "Original Raw File Name" -msgstr "Originaler Rohdateiname" - -#: src/tags.cpp:1143 -msgid "" -"If the DNG file was converted from a non-DNG raw file, then this tag " -"contains the file name of that original raw file." -msgstr "" - -#: src/tags.cpp:1146 -#, fuzzy -msgid "Original Raw File Data" -msgstr "Originaler Rohdateiname" - -#: src/tags.cpp:1147 -msgid "" -"If the DNG file was converted from a non-DNG raw file, then this tag " -"contains the compressed contents of that original raw file. The contents of " -"this tag always use the big-endian byte order. The tag contains a sequence " -"of data blocks. Future versions of the DNG specification may define " -"additional data blocks, so DNG readers should ignore extra bytes when " -"parsing this tag. DNG readers should also detect the case where data blocks " -"are missing from the end of the sequence, and should assume a default value " -"for all the missing blocks. There are no padding or alignment bytes between " -"data blocks." -msgstr "" - -#: src/tags.cpp:1157 -msgid "Active Area" -msgstr "Aktiver Bereich" - -#: src/tags.cpp:1158 -msgid "" -"This rectangle defines the active (non-masked) pixels of the sensor. The " -"order of the rectangle coordinates is: top, left, bottom, right." -msgstr "" - -#: src/tags.cpp:1161 -msgid "Masked Areas" -msgstr "Maskierte Bereiche" - -#: src/tags.cpp:1162 -msgid "" -"This tag contains a list of non-overlapping rectangle coordinates of fully " -"masked pixels, which can be optionally used by DNG readers to measure the " -"black encoding level. The order of each rectangle's coordinates is: top, " -"left, bottom, right. If the raw image data has already had its black " -"encoding level subtracted, then this tag should not be used, since the " -"masked pixels are no longer useful." -msgstr "" - -#: src/tags.cpp:1169 -#, fuzzy -msgid "As-Shot ICC Profile" -msgstr "Aktuelles ICC-Profil" - -#: src/tags.cpp:1170 -msgid "" -"This tag contains an ICC profile that, in conjunction with the " -"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " -"specify a default color rendering from camera color space coordinates " -"(linear reference values) into the ICC profile connection space. The ICC " -"profile connection space is an output referred colorimetric space, whereas " -"the other color calibration tags in DNG specify a conversion into a scene " -"referred colorimetric space. This means that the rendering in this profile " -"should include any desired tone and gamut mapping needed to convert between " -"scene referred values and output referred values." -msgstr "" - -#: src/tags.cpp:1181 -msgid "As-Shot Pre-Profile Matrix" -msgstr "" - -#: src/tags.cpp:1182 -msgid "" -"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " -"a matrix that should be applied to the camera color space coordinates before " -"processing the values through the ICC profile specified in the " -"AsShotICCProfile tag. The matrix is stored in the row scan order. If " -"ColorPlanes is greater than three, then this matrix can (but is not required " -"to) reduce the dimensionality of the color data down to three components, in " -"which case the AsShotICCProfile should have three rather than ColorPlanes " -"input components." -msgstr "" - -#: src/tags.cpp:1191 -msgid "Current ICC Profile" -msgstr "Aktuelles ICC-Profil" - -#: src/tags.cpp:1192 -msgid "" -"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " -"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " -"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " -"they are for use by raw file editors rather than camera manufacturers." -msgstr "" - -#: src/tags.cpp:1198 -#, fuzzy -msgid "Current Pre-Profile Matrix" -msgstr "Aktuelles ICC-Profil" - -#: src/tags.cpp:1199 -msgid "" -"This tag is used in conjunction with the CurrentICCProfile tag. The " -"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " -"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " -"they are for use by raw file editors rather than camera manufacturers." -msgstr "" - -#: src/tags.cpp:1205 -#, fuzzy -msgid "Colorimetric Reference" -msgstr "Projektreferenz" - -#: src/tags.cpp:1206 -msgid "" -"The DNG color model documents a transform between camera colors and CIE XYZ " -"values. This tag describes the colorimetric reference for the CIE XYZ " -"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" -"referred, using the ICC profile perceptual dynamic range. This tag allows " -"output-referred data to be stored in DNG files and still processed correctly " -"by DNG readers." -msgstr "" - -#: src/tags.cpp:1213 -#, fuzzy -msgid "Camera Calibration Signature" -msgstr "Kamerakalibrierung 1" - -#: src/tags.cpp:1214 -msgid "" -"A UTF-8 encoded string associated with the CameraCalibration1 and " -"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " -"should only be used in the DNG color transform if the string stored in the " -"CameraCalibrationSignature tag exactly matches the string stored in the " -"ProfileCalibrationSignature tag for the selected camera profile." -msgstr "" - -#: src/tags.cpp:1220 -#, fuzzy -msgid "Profile Calibration Signature" -msgstr "Verzerrungskorrektur" - -#: src/tags.cpp:1221 -msgid "" -"A UTF-8 encoded string associated with the camera profile tags. The " -"CameraCalibration1 and CameraCalibration2 tags should only be used in the " -"DNG color transfer if the string stored in the CameraCalibrationSignature " -"tag exactly matches the string stored in the ProfileCalibrationSignature tag " -"for the selected camera profile." -msgstr "" - -#: src/tags.cpp:1227 -#, fuzzy -msgid "As Shot Profile Name" -msgstr "Aktuelles ICC-Profil" - -#: src/tags.cpp:1228 -msgid "" -"A UTF-8 encoded string containing the name of the \"as shot\" camera " -"profile, if any." -msgstr "" - -#: src/tags.cpp:1231 -#, fuzzy -msgid "Noise Reduction Applied" -msgstr "Rauschunterdrückung" - -#: src/tags.cpp:1232 -msgid "" -"This tag indicates how much noise reduction has been applied to the raw data " -"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " -"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " -"reduction has been applied, i.e. that the DNG reader should not apply " -"additional noise reduction by default. A value of 0/0 indicates that this " -"parameter is unknown." -msgstr "" - -#: src/tags.cpp:1239 -#, fuzzy -msgid "Profile Name" -msgstr "Druckstocknamen" - -#: src/tags.cpp:1240 -msgid "" -"A UTF-8 encoded string containing the name of the camera profile. This tag " -"is optional if there is only a single camera profile stored in the file but " -"is required for all camera profiles if there is more than one camera profile " -"stored in the file." -msgstr "" - -#: src/tags.cpp:1245 -msgid "Profile Hue Sat Map Dims" -msgstr "" - -#: src/tags.cpp:1246 -msgid "" -"This tag specifies the number of input samples in each dimension of the hue/" -"saturation/value mapping tables. The data for these tables are stored in " -"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " -"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " -"to the mapping table." -msgstr "" - -#: src/tags.cpp:1252 -msgid "Profile Hue Sat Map Data 1" -msgstr "" - -#: src/tags.cpp:1253 -msgid "" -"This tag contains the data for the first hue/saturation/value mapping table. " -"Each entry of the table contains three 32-bit IEEE floating-point values. " -"The first entry is hue shift in degrees; the second entry is saturation " -"scale factor; and the third entry is a value scale factor. The table entries " -"are stored in the tag in nested loop order, with the value divisions in the " -"outer loop, the hue divisions in the middle loop, and the saturation " -"divisions in the inner loop. All zero input saturation entries are required " -"to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1262 -msgid "Profile Hue Sat Map Data 2" -msgstr "" - -#: src/tags.cpp:1263 -msgid "" -"This tag contains the data for the second hue/saturation/value mapping " -"table. Each entry of the table contains three 32-bit IEEE floating-point " -"values. The first entry is hue shift in degrees; the second entry is a " -"saturation scale factor; and the third entry is a value scale factor. The " -"table entries are stored in the tag in nested loop order, with the value " -"divisions in the outer loop, the hue divisions in the middle loop, and the " -"saturation divisions in the inner loop. All zero input saturation entries " -"are required to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1272 -#, fuzzy -msgid "Profile Tone Curve" -msgstr "Farbtonkurve" - -#: src/tags.cpp:1273 -msgid "" -"This tag contains a default tone curve that can be applied while processing " -"the image as a starting point for user adjustments. The curve is specified " -"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " -"sample has an input value in the range of 0.0 to 1.0, and an output value in " -"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " -"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " -"cubic spline." -msgstr "" - -#: src/tags.cpp:1281 -msgid "Profile Embed Policy" -msgstr "" - -#: src/tags.cpp:1282 -#, fuzzy -msgid "" -"This tag contains information about the usage rules for the associated " -"camera profile." -msgstr "" -"Dieses Feld enthält Informationen über den Host-Rechner, der benutzt wurde " -"um das Bild zu generieren." - -#: src/tags.cpp:1285 -#, fuzzy -msgid "Profile Copyright" -msgstr "Copyright" - -#: src/tags.cpp:1286 -msgid "" -"A UTF-8 encoded string containing the copyright information for the camera " -"profile. This string always should be preserved along with the other camera " -"profile tags." -msgstr "" - -#: src/tags.cpp:1290 -#, fuzzy -msgid "Forward Matrix 1" -msgstr "Farbmatrix 1" - -#: src/tags.cpp:1291 src/tags.cpp:1295 -msgid "" -"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " -"colors." -msgstr "" - -#: src/tags.cpp:1294 -#, fuzzy -msgid "Forward Matrix 2" -msgstr "Farbmatrix 2" - -#: src/tags.cpp:1298 -#, fuzzy -msgid "Preview Application Name" -msgstr "Vorschaudaten" - -#: src/tags.cpp:1299 -msgid "" -"A UTF-8 encoded string containing the name of the application that created " -"the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1302 -#, fuzzy -msgid "Preview Application Version" -msgstr "Vorschauversion" - -#: src/tags.cpp:1303 -msgid "" -"A UTF-8 encoded string containing the version number of the application that " -"created the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1306 -#, fuzzy -msgid "Preview Settings Name" -msgstr "Bildvorschau gültig" - -#: src/tags.cpp:1307 -msgid "" -"A UTF-8 encoded string containing the name of the conversion settings (for " -"example, snapshot name) used for the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1310 -#, fuzzy -msgid "Preview Settings Digest" -msgstr "Beschreibung der Geräteeinstellungen" - -#: src/tags.cpp:1311 -msgid "" -"A unique ID of the conversion settings (for example, MD5 digest) used to " -"render the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1314 -#, fuzzy -msgid "Preview Color Space" -msgstr "Video-Farbraum" - -#: src/tags.cpp:1315 -msgid "" -"This tag specifies the color space in which the rendered preview in this IFD " -"is stored. The default value for this tag is sRGB for color previews and " -"Gray Gamma 2.2 for monochrome previews." -msgstr "" - -#: src/tags.cpp:1319 -#, fuzzy -msgid "Preview Date Time" -msgstr "Vorschaudaten" - -#: src/tags.cpp:1320 -msgid "" -"This tag is an ASCII string containing the name of the date/time at which " -"the preview stored in the IFD was rendered. The date/time is encoded using " -"ISO 8601 format." -msgstr "" - -#: src/tags.cpp:1324 -#, fuzzy -msgid "Raw Image Digest" -msgstr "Rohbild-Center" - -#: src/tags.cpp:1325 -msgid "" -"This tag is an MD5 digest of the raw image data. All pixels in the image are " -"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " -"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " -"data for each pixel is processed in little-endian byte order." -msgstr "" - -#: src/tags.cpp:1330 -#, fuzzy -msgid "Original Raw File Digest" -msgstr "Originaler Rohdateiname" - -#: src/tags.cpp:1331 -msgid "" -"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." -msgstr "" - -#: src/tags.cpp:1334 -msgid "Sub Tile Block Size" -msgstr "" - -#: src/tags.cpp:1335 -msgid "" -"Normally, the pixels within a tile are stored in simple row-scan order. This " -"tag specifies that the pixels within a tile should be grouped first into " -"rectangular blocks of the specified size. These blocks are stored in row-" -"scan order. Within each block, the pixels are stored in row-scan order. The " -"use of a non-default value for this tag requires setting the " -"DNGBackwardVersion tag to at least 1.2.0.0." -msgstr "" - -#: src/tags.cpp:1342 -msgid "Row Interleave Factor" -msgstr "" - -#: src/tags.cpp:1343 -msgid "" -"This tag specifies that rows of the image are stored in interleaved order. " -"The value of the tag specifies the number of interleaved fields. The use of " -"a non-default value for this tag requires setting the DNGBackwardVersion tag " -"to at least 1.2.0.0." -msgstr "" - -#: src/tags.cpp:1348 -msgid "Profile Look Table Dims" -msgstr "" - -#: src/tags.cpp:1349 -msgid "" -"This tag specifies the number of input samples in each dimension of a " -"default \"look\" table. The data for this table is stored in the " -"ProfileLookTableData tag." -msgstr "" - -#: src/tags.cpp:1353 -msgid "Profile Look Table Data" -msgstr "" - -#: src/tags.cpp:1354 -msgid "" -"This tag contains a default \"look\" table that can be applied while " -"processing the image as a starting point for user adjustment. This table " -"uses the same format as the tables stored in the ProfileHueSatMapData1 and " -"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " -"it should be applied later in the processing pipe, after any exposure " -"compensation and/or fill light stages, but before any tone curve stage. Each " -"entry of the table contains three 32-bit IEEE floating-point values. The " -"first entry is hue shift in degrees, the second entry is a saturation scale " -"factor, and the third entry is a value scale factor. The table entries are " -"stored in the tag in nested loop order, with the value divisions in the " -"outer loop, the hue divisions in the middle loop, and the saturation " -"divisions in the inner loop. All zero input saturation entries are required " -"to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1368 -msgid "Opcode List 1" -msgstr "" - -#: src/tags.cpp:1369 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, as " -"read directly from the file." -msgstr "" - -#: src/tags.cpp:1372 -msgid "Opcode List 2" -msgstr "" - -#: src/tags.cpp:1373 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, just " -"after it has been mapped to linear reference values." -msgstr "" - -#: src/tags.cpp:1376 -msgid "Opcode List 3" -msgstr "" - -#: src/tags.cpp:1377 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, just " -"after it has been demosaiced." -msgstr "" - -#: src/tags.cpp:1380 -#, fuzzy -msgid "Noise Profile" -msgstr "Rauschfilter" - -#: src/tags.cpp:1381 -msgid "" -"NoiseProfile describes the amount of noise in a raw image. Specifically, " -"this tag models the amount of signal-dependent photon (shot) noise and " -"signal-independent sensor readout noise, two common sources of noise in raw " -"images. The model assumes that the noise is white and spatially independent, " -"ignoring fixed pattern effects and other sources of noise (e.g., pixel " -"response non-uniformity, spatially-dependent thermal effects, etc.)." -msgstr "" - -#: src/tags.cpp:1389 src/tags.cpp:1390 -msgid "Unknown IFD tag" -msgstr "Unbekanntes IFD-Feld" - -#: src/tags.cpp:1401 src/tags.cpp:1459 -msgid "Not defined" -msgstr "Undefiniert" - -#: src/tags.cpp:1406 -msgid "Creative program" -msgstr "Kreativprogramm" - -#: src/tags.cpp:1407 -msgid "Action program" -msgstr "Aktionsprogramm" - -#: src/tags.cpp:1408 -msgid "Portrait mode" -msgstr "Portraitmodus" - -#: src/tags.cpp:1409 -msgid "Landscape mode" -msgstr "Landschaftsmodus" - -#: src/tags.cpp:1418 -msgid "Multi-spot" -msgstr "Mehr-Punkt" - -#: src/tags.cpp:1430 -msgid "Tungsten (incandescent light)" -msgstr "weißglühendes Wolfram Licht" - -#: src/tags.cpp:1432 -msgid "Fine weather" -msgstr "Gutes Wetter" - -#: src/tags.cpp:1433 -msgid "Cloudy weather" -msgstr "Wolkiges Wetter" - -#: src/tags.cpp:1435 -msgid "Daylight fluorescent (D 5700 - 7100K)" -msgstr "Tageslicht Leuchtstoff (D 5700 - 7100K)" - -#: src/tags.cpp:1436 -msgid "Day white fluorescent (N 4600 - 5400K)" -msgstr "Tageslichtweiß Leuchtstoff (N 4600 - 5400K)" - -#: src/tags.cpp:1437 -msgid "Cool white fluorescent (W 3900 - 4500K)" -msgstr "Kühles weißes Leuchtstoff (W 3900 - 4500K)" - -#: src/tags.cpp:1438 -msgid "White fluorescent (WW 3200 - 3700K)" -msgstr "Weißes Leuchtstofflicht (WW 3200 - 3700K)" - -#: src/tags.cpp:1439 -msgid "Standard light A" -msgstr "Standard Licht A" - -#: src/tags.cpp:1440 -msgid "Standard light B" -msgstr "Standard Licht B" - -#: src/tags.cpp:1441 -msgid "Standard light C" -msgstr "Standard Licht C" - -#: src/tags.cpp:1442 -msgid "D55" -msgstr "D55" - -#: src/tags.cpp:1443 -msgid "D65" -msgstr "D65" - -#: src/tags.cpp:1444 -msgid "D75" -msgstr "D75" - -#: src/tags.cpp:1445 -msgid "D50" -msgstr "D50" - -#: src/tags.cpp:1446 -msgid "ISO studio tungsten" -msgstr "ISO Studio Wolfram" - -#: src/tags.cpp:1447 -msgid "Other light source" -msgstr "Andere Lichtquelle" - -#: src/tags.cpp:1454 -msgid "Uncalibrated" -msgstr "Unkalibriert" - -#: src/tags.cpp:1460 -msgid "One-chip color area" -msgstr "Einzel-Chip-Farbsensor" - -#: src/tags.cpp:1461 -msgid "Two-chip color area" -msgstr "Zwei-Chip-Farbsensor" - -#: src/tags.cpp:1462 -msgid "Three-chip color area" -msgstr "Drei-Chip-Farbsensor" - -#: src/tags.cpp:1463 -msgid "Color sequential area" -msgstr "Farb-sequentieller Bereich" - -#: src/tags.cpp:1464 -msgid "Trilinear sensor" -msgstr "Trilinearer Sensor" - -#: src/tags.cpp:1465 -msgid "Color sequential linear" -msgstr "Farb-sequentieller linear" - -#: src/tags.cpp:1470 -msgid "Film scanner" -msgstr "Filmscanner" - -#: src/tags.cpp:1471 -msgid "Reflexion print scanner" -msgstr "Reflexiondruckscanner" - -#: src/tags.cpp:1472 -msgid "Digital still camera" -msgstr "Digitalkamera" - -#: src/tags.cpp:1477 -msgid "Directly photographed" -msgstr "Direkt fotographiert" - -#: src/tags.cpp:1482 -msgid "Normal process" -msgstr "Normale Verarbeitung" - -#: src/tags.cpp:1483 -msgid "Custom process" -msgstr "Gesonderte Verarbeitung" - -#: src/tags.cpp:1511 -msgid "Low gain up" -msgstr "Langsamer Zugewinn" - -#: src/tags.cpp:1512 -msgid "High gain up" -msgstr "Schneller Zugewinn" - -#: src/tags.cpp:1513 -msgid "Low gain down" -msgstr "Langsame Abnahme" - -#: src/tags.cpp:1514 -msgid "High gain down" -msgstr "Schnelle Abnahme" - -#: src/tags.cpp:1535 -msgid "Close view" -msgstr "Nahaufnahme" - -#: src/tags.cpp:1536 src/tags.cpp:1537 -msgid "Distant view" -msgstr "Große Entfernung" - -#: src/tags.cpp:1543 -msgid "Exposure time, given in seconds (sec)." -msgstr "Belichtungszeit in Sekunden." - -#: src/tags.cpp:1553 -msgid "" -"Indicates the spectral sensitivity of each channel of the camera used. The " -"tag value is an ASCII string compatible with the standard developed by the " -"ASTM Technical Committee." -msgstr "" -"Gibt die spektrale Empfindlichkeit jedes Kanals der Kamera an. Der Wert des " -"Feldes ist eine ASCII-Zeichenkette kompatibel mit dem Standard der vom ASTM " -"Technical Committee entwickelt wurde." - -#: src/tags.cpp:1561 -msgid "Opto-Electoric Conversion Function" -msgstr "" - -#: src/tags.cpp:1562 -msgid "" -"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " -"14524. is the relationship between the camera optical input and the " -"image values." -msgstr "" -"Gibt die Opto Elektronische Konvertierungsfunktion (OECF) an, die in ISO " -"14524 spezifiziert ist. ist der Zusammenhang zwischen dem optischen " -"Input und den Bildwerten." - -#: src/tags.cpp:1566 -#, fuzzy -msgid "Sensitivity Type" -msgstr "ISO-Empfindlichkeit" - -#: src/tags.cpp:1567 -msgid "" -"The SensitivityType tag indicates PhotographicSensitivity tag. which one of " -"the parameters of ISO12232 is the Although it is an optional tag, it should " -"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " -"or 7 may be used in case that the values of plural parameters are the same." -msgstr "" - -#: src/tags.cpp:1573 -#, fuzzy -msgid "Standard Output Sensitivity" -msgstr "Spektrale Empfindlichkeit" - -#: src/tags.cpp:1574 -msgid "" -"This tag indicates the standard output sensitivity value of a camera or " -"input device defined in ISO 12232. When recording this tag, the " -"PhotographicSensitivity and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1578 -#, fuzzy -msgid "Recommended Exposure Index" -msgstr "Belichtungsindex" - -#: src/tags.cpp:1579 -msgid "" -"This tag indicates the recommended exposure index value of a camera or input " -"device defined in ISO 12232. When recording this tag, the " -"PhotographicSensitivity and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1584 -msgid "" -"This tag indicates the ISO speed value of a camera or input device that is " -"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " -"and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1588 -#, fuzzy -msgid "ISO Speed Latitude yyy" -msgstr "ISO Geschwindigkeitsangabe" - -#: src/tags.cpp:1589 -msgid "" -"This tag indicates the ISO speed latitude yyy value of a camera or input " -"device that is defined in ISO 12232. However, this tag shall not be recorded " -"without ISOSpeed and ISOSpeedLatitudezzz." -msgstr "" - -#: src/tags.cpp:1593 -#, fuzzy -msgid "ISO Speed Latitude zzz" -msgstr "ISO Geschwindigkeitsangabe" - -#: src/tags.cpp:1594 -msgid "" -"This tag indicates the ISO speed latitude zzz value of a camera or input " -"device that is defined in ISO 12232. However, this tag shall not be recorded " -"without ISOSpeed and ISOSpeedLatitudeyyy." -msgstr "" - -#: src/tags.cpp:1599 -msgid "" -"The version of this standard supported. Nonexistence of this field is taken " -"to mean nonconformance to the standard." -msgstr "" -"Die Version des Exif Standards die unterstützt wird. Wenn dieses Feld nicht " -"vorhanden ist wird angenommen, das der Standard nicht beachtet wird." - -#: src/tags.cpp:1602 -msgid "Date and Time (original)" -msgstr "Datum und Uhrzeit (original)" - -#: src/tags.cpp:1603 -msgid "" -"The date and time when the original image data was generated. For a digital " -"still camera the date and time the picture was taken are recorded." -msgstr "" -"Das Datum und die Uhrzeit zu der das Bild generiert wurde. Für eine " -"Digitalkamera ist das der Zeitpunkt an dem das Bild geschossen wurde." - -#: src/tags.cpp:1606 -msgid "Date and Time (digitized)" -msgstr "Datum und Uhrzeit (digitalisiert)" - -#: src/tags.cpp:1607 -msgid "The date and time when the image was stored as digital data." -msgstr "" -"Das Datum und die Uhrzeit der Speicherung des Bildes als digitale Daten." - -#: src/tags.cpp:1610 -msgid "" -"Information specific to compressed data. The channels of each component are " -"arranged in order from the 1st component to the 4th. For uncompressed data " -"the data arrangement is given in the tag. " -"However, since can only express the order of Y, " -"Cb and Cr, this tag is provided for cases when compressed data uses " -"components other than Y, Cb, and Cr and to enable support of other sequences." -msgstr "" -"Zu den komprimierten Daten gehörende Informationen. Die Kanäle jeder " -"Komponente sind in der Reihenfolge erster bis vierter sortiert. Für " -"unkomprimierte Daten ist das Datenlayout im -Feld " -"spezifiziert. Da aber nur die Reihenfolge von Y, " -"Cb und Cr angeben kann, wird dieses Feld dann benutzt, wenn die " -"komprimierten Daten andere Komponenten als Y, Cb und Cr benutzen, oder um " -"die Unterstützung anderer Sequenzen zu erlauben." - -#: src/tags.cpp:1619 -msgid "Compressed Bits per Pixel" -msgstr "Komprimierte Bits per Pixel" - -#: src/tags.cpp:1620 -msgid "" -"Information specific to compressed data. The compression mode used for a " -"compressed image is indicated in unit bits per pixel." -msgstr "" -"Zu den komprimierten Daten gehörige Informationen. Der Kompressionsmodus der " -"für ein komprimiertes Bild verwendet wird ist hier in Teilbits per Pixel " -"angegeben." - -#: src/tags.cpp:1624 -msgid "" -"Shutter speed. The unit is the APEX (Additive System of Photographic " -"Exposure) setting." -msgstr "" -"Verschlussgeschwindigkeit. Die Einheit ist die APEX (Additive System of " -"Photographic Exposure) Einstellung" - -#: src/tags.cpp:1628 -msgid "The lens aperture. The unit is the APEX value." -msgstr "Die Linsenblende. Die Einheit ist der APEX Wert." - -#: src/tags.cpp:1631 -msgid "" -"The value of brightness. The unit is the APEX value. Ordinarily it is given " -"in the range of -99.99 to 99.99." -msgstr "" -"Die Helligkeit. Die Einheit ist der APEX Wert. Normalerweise ist dieser Wert " -"zwischen -99.99 und 99.99." - -#: src/tags.cpp:1634 -msgid "Exposure Bias" -msgstr "Belichtungskontrolle" - -#: src/tags.cpp:1635 -msgid "" -"The exposure bias. The units is the APEX value. Ordinarily it is given in " -"the range of -99.99 to 99.99." -msgstr "" -"Die Belichtungskontrolle. Die Einheit ist der APEX Wert. Normalerweise wird " -"diese innerhalb des Bereiches -99.99 bis 99.99 spezifiziert." - -#: src/tags.cpp:1639 -msgid "" -"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " -"is given in the range of 00.00 to 99.99, but it is not limited to this range." -msgstr "" -"Die kleinste F Nummer der Linse. Die Einheit ist der APEX Wert. " -"Normalerweise wird es im Bereich von 00.00 bis 99.99 angegeben, ist aber " -"nicht limitiert auf diesen Bereich." - -#: src/tags.cpp:1653 -msgid "" -"This tag is recorded when an image is taken using a strobe light (flash)." -msgstr "" -"Dieser Eintrag wird aufgezeichnet, wenn das Bild mit einem Blitz gemacht " -"wurde." - -#: src/tags.cpp:1656 -msgid "" -"The actual focal length of the lens, in mm. Conversion is not made to the " -"focal length of a 35 mm film camera." -msgstr "" -"Die wirkliche Brennweite der Linse, in mm. Es wird nicht auf das 35mm " -"Filmkamera Äquivalent konvertiert." - -#: src/tags.cpp:1660 -msgid "" -"This tag indicates the location and area of the main subject in the overall " -"scene." -msgstr "" -"Dieses Feld gibt die Position und Größe des Hauptmotivs in der Szene an." - -#: src/tags.cpp:1663 -msgid "Maker Note" -msgstr "Anmerkungen des Herstellers" - -#: src/tags.cpp:1664 -msgid "" -"A tag for manufacturers of Exif writers to record any desired information. " -"The contents are up to the manufacturer." -msgstr "" -"Ein Feld für die Hersteller von Exif-Schreibern um variable Informationen " -"abzuspeichern. Der Inhalt ist vom Hersteller abhängig." - -#: src/tags.cpp:1668 -msgid "" -"A tag for Exif users to write keywords or comments on the image besides " -"those in , and without the character code limitations of " -"the tag." -msgstr "" - -#: src/tags.cpp:1672 -msgid "Sub-seconds Time" -msgstr "Sekundenbruchteile/Zeit" - -#: src/tags.cpp:1673 -msgid "A tag used to record fractions of seconds for the tag." -msgstr "" -"Das Feld wird benutzt um Sekundenbruchteile für das -Feld zu " -"erfassen." - -#: src/tags.cpp:1675 -msgid "Sub-seconds Time Original" -msgstr "Sekundenbruchteile (original)" - -#: src/tags.cpp:1676 -msgid "" -"A tag used to record fractions of seconds for the tag." -msgstr "" -"Das Feld wird benutzt um Sekundenbruchteile für des -Feld " -"zu erfassen." - -#: src/tags.cpp:1678 -msgid "Sub-seconds Time Digitized" -msgstr "Sekundenbruchteile (digitalisiert)" - -#: src/tags.cpp:1679 -msgid "" -"A tag used to record fractions of seconds for the tag." -msgstr "" -"Das Feld wird benutzt um Sekundenbruchteile für das -Feld " -"zu erfassen." - -#: src/tags.cpp:1681 -msgid "FlashPix Version" -msgstr "FlashPix Version" - -#: src/tags.cpp:1682 -msgid "The FlashPix format version supported by a FPXR file." -msgstr "Die FlashPix Formatversion die von einer FPXR Datei unterstützt wird." - -#: src/tags.cpp:1685 -msgid "" -"The color space information tag is always recorded as the color space " -"specifier. Normally sRGB is used to define the color space based on the PC " -"monitor conditions and environment. If a color space other than sRGB is " -"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " -"treated as sRGB when it is converted to FlashPix." -msgstr "" -"Das Farbrauminformationsfeld wird immer als Farbraumspezifikator " -"gespeichert. Normalerweise wird sRGB benutzt, um den Farbraum an PC und " -"Monitor anzupassen. Wenn ein anderer Farbraum als sRGB benutzt wird, wird " -"\"unkalibriert\" gesetzt. Bilddaten die als unkalibriert aufgezeichnet " -"wurden kõnnen als sRGB betrachtet werden wenn sie in FlashPix konvertiert " -"werden." - -#: src/tags.cpp:1694 -msgid "" -"Information specific to compressed data. When a compressed file is recorded, " -"the valid width of the meaningful image must be recorded in this tag, " -"whether or not there is padding data or a restart marker. This tag should " -"not exist in an uncompressed file." -msgstr "" -"Informationen spezifisch zu den komprimierten Daten. Wenn eine komprimierte " -"Datei aufgezeichnet wird muß die Breite des sinnvollen Bildausschnitts in " -"diesem Feld aufgezeichnet werden, egal ob Padding Daten oder ein Restart " -"Marker vorhanden sind. Dieser Feld sollte nicht in einer unkomprimierten " -"Datei existieren." - -#: src/tags.cpp:1701 -msgid "" -"Information specific to compressed data. When a compressed file is recorded, " -"the valid height of the meaningful image must be recorded in this tag, " -"whether or not there is padding data or a restart marker. This tag should " -"not exist in an uncompressed file. Since data padding is unnecessary in the " -"vertical direction, the number of lines recorded in this valid image height " -"tag will in fact be the same as that recorded in the SOF." -msgstr "" -"Informationen spezifisch zu den komprimierten Daten. Wenn eine komprimierte " -"Datei aufgezeichnet wird, muß die Höhe des sinnvollen Bildausschnitts in " -"diesem Feld aufgezeichnet werden, egal ob Padding Daten oder ein Restart " -"Marker vorhanden sind. Dieses Feld sollte nicht in einer unkomprimierten " -"Datei existieren. Da Padding in der Vertikalen nicht nötig ist, ist die " -"Anzahl an Zeilen in diesem Feld die gleiche wie die im JPEG SOF Marker." - -#: src/tags.cpp:1710 -msgid "" -"This tag is used to record the name of an audio file related to the image " -"data. The only relational information recorded here is the Exif audio file " -"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " -"characters). The path is not recorded." -msgstr "" -"Dieses Feld wird benutzt, um den Namen einer Audiodatei zu speichern, die zu " -"den Bilddaten gehört. Die einzigen Informationen die hier gespeichert " -"werden, sind der Dateiname und seinen Erweiterung. Also eine ASCII-" -"Zeichenkette bestehend aus acht Zeichen, einem \".\" und drei weiteren " -"Zeichen. Der Pfad wird nicht gespeichert." - -#: src/tags.cpp:1716 -msgid "Interoperability IFD Pointer" -msgstr "Interoperabilitäts IFD-Zeiger" - -#: src/tags.cpp:1717 -msgid "" -"Interoperability IFD is composed of tags which stores the information to " -"ensure the Interoperability and pointed by the following tag located in Exif " -"IFD. The Interoperability structure of Interoperability IFD is the same as " -"TIFF defined IFD structure but does not contain the image data " -"characteristically compared with normal TIFF IFD." -msgstr "" -"Das Interoperabilitäts IFD besteht aus Feldern die Informationen enthalten, " -"die die Interoperabilität sicherstellen. Die Interoperabilitätsstruktur des " -"Interoperabilitäts IFD ist die gleiche wie in der TIFF IFD Struktur, enthält " -"aber keine Bildcharakteristiken wie das normale TIFF IFD." - -#: src/tags.cpp:1725 -msgid "" -"Indicates the strobe energy at the time the image is captured, as measured " -"in Beam Candle Power Seconds (BCPS)." -msgstr "" -"Gibt die Energie des Blitzes zum Zeitpunkt der Aufnahme an, in Beam Candle " -"Power Seconds (BCPS)." - -#: src/tags.cpp:1729 -msgid "" -"This tag records the camera or input device spatial frequency table and SFR " -"values in the direction of image width, image height, and diagonal " -"direction, as specified in ISO 12233." -msgstr "" - -#: src/tags.cpp:1733 -msgid "Focal Plane X-Resolution" -msgstr "Fokusebene x-Auflösung" - -#: src/tags.cpp:1734 -msgid "" -"Indicates the number of pixels in the image width (X) direction per " -" on the camera focal plane." -msgstr "" -"Gibt die Anzahl an Pixeln in der Breite (X Ebene) pro " -" in der Fokusebene an." - -#: src/tags.cpp:1737 -msgid "Focal Plane Y-Resolution" -msgstr "Fokusebene y-Auflösung" - -#: src/tags.cpp:1738 -msgid "" -"Indicates the number of pixels in the image height (V) direction per " -" on the camera focal plane." -msgstr "" -"Gibt die Anzahl an Pixeln in der Höhe (Y Ebene) pro " -" in der Fokusebene an." - -#: src/tags.cpp:1742 -msgid "" -"Indicates the unit for measuring and " -". This value is the same as the ." -msgstr "" -"Gibt die Einheit für die Messung der und der " -" an. Der Wert ist der gleiche wie ." - -#: src/tags.cpp:1746 -msgid "" -"Indicates the location of the main subject in the scene. The value of this " -"tag represents the pixel at the center of the main subject relative to the " -"left edge, prior to rotation processing as per the tag. The first " -"value indicates the X column number and second indicates the Y row number." -msgstr "" -"Gibt den Ort des Hauptmotivs in der Szene an. Der Wert dieses Feldes " -"repräsentiert den Pixel im Zentrum des Hauptmotivs relativ zur linken " -"Bildkante, vor der Rotation (siehe -Feld). Der erste Wert gibt die " -"X, der zweite die Y Koordinate an." - -#: src/tags.cpp:1752 -msgid "Exposure index" -msgstr "Belichtungsindex" - -#: src/tags.cpp:1753 -msgid "" -"Indicates the exposure index selected on the camera or input device at the " -"time the image is captured." -msgstr "" -"Gibt den Belichtungsindex an, der in der Kamera oder im Eingabegerät während " -"der Aufnahme selektiert ist." - -#: src/tags.cpp:1757 -msgid "Indicates the image sensor type on the camera or input device." -msgstr "Gibt den Sensortyp in der Kamera bzw. Eingabegerät an." - -#: src/tags.cpp:1760 -msgid "" -"Indicates the image source. If a DSC recorded the image, this tag value of " -"this tag always be set to 3, indicating that the image was recorded on a DSC." -msgstr "" -"Gibt die Quelle des Bildes an. Wenn das Bild durch eine Digitalkamera " -"aufgenommen wurde, ist der Wert 3." - -#: src/tags.cpp:1765 -msgid "" -"Indicates the type of scene. If a DSC recorded the image, this tag value " -"must always be set to 1, indicating that the image was directly photographed." -msgstr "" -"Gibt den Typ der Szene an. Wenn eine Digitalkamera die Szene aufgenommen " -"hat, muß diese Zahl immer auf 1 gesetzt werden, um anzugeben, das die Szene " -"direkt fotographiert wurde." - -#: src/tags.cpp:1769 -#, fuzzy -msgid "Color Filter Array Pattern" -msgstr "Farbfilterliste" - -#: src/tags.cpp:1770 -msgid "" -"Indicates the color filter array (CFA) geometric pattern of the image sensor " -"when a one-chip color area sensor is used. It does not apply to all sensing " -"methods." -msgstr "" -"Gibt das geometrische Muster des Farbfilter Arrays (CFA - Color Filter " -"Array) des Bildsensors an, wenn ein 1 Chip Farbflächen Sensor benutzt wird. " -"Es bezieht sich nicht auf alle Sensormethoden." - -#: src/tags.cpp:1775 -msgid "" -"This tag indicates the use of special processing on image data, such as " -"rendering geared to output. When special processing is performed, the reader " -"is expected to disable or minimize any further processing." -msgstr "" -"Dieses Feld gibt einen Hinweis auf eine besondere Verarbeitung der Bilddaten " -"wie z:B. den Berechnungen zur Ausgabe. Wenn eine besondere Verarbeitung " -"durchgeführt wurde, dann wird der Betrachter gebeten keine oder nur eine " -"minimale weitere Verarbeitung durchzuführen." - -#: src/tags.cpp:1781 -msgid "" -"This tag indicates the exposure mode set when the image was shot. In auto-" -"bracketing mode, the camera shoots a series of frames of the same scene at " -"different exposure settings." -msgstr "" -"Dieses Feld gibt den Belichtungsmodus bei der Aufnahme des Bildes an. Bei " -"der automatischen Erfassung nimmt die Kamera mehrere Bilder derselben Szene " -"mit verschiedenen Belichtungseinstellungen auf." - -#: src/tags.cpp:1786 -msgid "This tag indicates the white balance mode set when the image was shot." -msgstr "" -"Dieses Feld enthält den Weißabgleichsmodus, der zur Aufnahme eingestellt war." - -#: src/tags.cpp:1789 -msgid "" -"This tag indicates the digital zoom ratio when the image was shot. If the " -"numerator of the recorded value is 0, this indicates that digital zoom was " -"not used." -msgstr "" -"Dieses Feld gibt die digitale Zoomrate bei der Aufnahme des Bildes an. Wenn " -"der Divisor 0 ist, wurde kein Digitalzoom benutzt." - -#: src/tags.cpp:1794 -msgid "" -"This tag indicates the equivalent focal length assuming a 35mm film camera, " -"in mm. A value of 0 means the focal length is unknown. Note that this tag " -"differs from the tag." -msgstr "" -"Dieses Feld gibt die äquivalente Brennweite bei angenommener 35mm Filmkamera " -"an. Der Wert 0 bedeutet das die Brennweite unbekannt ist. Es unterscheidet " -"sich vom -Feld." - -#: src/tags.cpp:1800 -msgid "" -"This tag indicates the type of scene that was shot. It can also be used to " -"record the mode in which the image was shot. Note that this differs from the " -" tag." -msgstr "" -"Dieses Feld gibt an welche Art von Szene aufgenommen wurde. Es kann auch zum " -"Angeben des Aufnahmemodus verwendet werden. Beachten Sie, das es sich vom " -"-Feld unterscheidet." - -#: src/tags.cpp:1805 -#, fuzzy -msgid "This tag indicates the degree of overall image gain adjustment." -msgstr "Dieses Feld gibt den Motivabstand an." - -#: src/tags.cpp:1808 -msgid "" -"This tag indicates the direction of contrast processing applied by the " -"camera when the image was shot." -msgstr "" -"Dieses Feld gibt die Richtung der Kontrastbearbeitung an, die bei der " -"Aufnahme des Bildes angewandt wurde." - -#: src/tags.cpp:1812 -msgid "" -"This tag indicates the direction of saturation processing applied by the " -"camera when the image was shot." -msgstr "" -"Dieses Feld gibt die Richtung der Sättigungsbearbeitung an, die bei der " -"Aufnahme des Bildes angewandt wurde." - -#: src/tags.cpp:1816 -msgid "" -"This tag indicates the direction of sharpness processing applied by the " -"camera when the image was shot." -msgstr "" -"Dieses Feld gibt die Richtung der Schärfebearbeitung bei der Aufnahme des " -"Bildes an." - -#: src/tags.cpp:1820 -msgid "" -"This tag indicates information on the picture-taking conditions of a " -"particular camera model. The tag is used only to indicate the picture-taking " -"conditions in the reader." -msgstr "" -"Dieses Feld enthält Informationen über die Bildaufnahmebedingungen eines " -"bestimmten Kameramodells. Es wird nur zur Angabe der Bedingungen im Leser " -"benutzt." - -#: src/tags.cpp:1825 -msgid "This tag indicates the distance to the subject." -msgstr "Dieses Feld gibt den Motivabstand an." - -#: src/tags.cpp:1828 -msgid "" -"This tag indicates an identifier assigned uniquely to each image. It is " -"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " -"fixed length." -msgstr "" -"Dieses Feld gibt eine eindeutige Bild-Identifizierung an. Sie wird als ASCII-" -"Zeichenkette in hexadezimaler Schreibweise aufgezeichnet und hat 128 Bit " -"Länge." - -#: src/tags.cpp:1832 -#, fuzzy -msgid "Camera Owner Name" -msgstr "Besitzername" - -#: src/tags.cpp:1833 -msgid "" -"This tag records the owner of a camera used in photography as an ASCII " -"string." -msgstr "" - -#: src/tags.cpp:1836 -#, fuzzy -msgid "Body Serial Number" -msgstr "Seriennummer" - -#: src/tags.cpp:1837 -msgid "" -"This tag records the serial number of the body of the camera that was used " -"in photography as an ASCII string." -msgstr "" - -#: src/tags.cpp:1840 -#, fuzzy -msgid "Lens Specification" -msgstr "Hersteller spezifische Informationen" - -#: src/tags.cpp:1841 -msgid "" -"This tag notes minimum focal length, maximum focal length, minimum F number " -"in the minimum focal length, and minimum F number in the maximum focal " -"length, which are specification information for the lens that was used in " -"photography. When the minimum F number is unknown, the notation is 0/0" -msgstr "" - -#: src/tags.cpp:1847 -#, fuzzy -msgid "Lens Make" -msgstr "Linsenmodell" - -#: src/tags.cpp:1848 -msgid "This tag records the lens manufactor as an ASCII string." -msgstr "" - -#: src/tags.cpp:1851 -msgid "" -"This tag records the lens's model name and model number as an ASCII string." -msgstr "" - -#: src/tags.cpp:1855 -msgid "" -"This tag records the serial number of the interchangeable lens that was used " -"in photography as an ASCII string." -msgstr "" - -#: src/tags.cpp:1859 src/tags.cpp:1860 -msgid "Unknown Exif tag" -msgstr "Unbekanntes Exif-Feld" - -#: src/tags.cpp:1871 -msgid "North" -msgstr "Norden" - -#: src/tags.cpp:1872 -msgid "South" -msgstr "Süden" - -#: src/tags.cpp:1877 -msgid "East" -msgstr "Osten" - -#: src/tags.cpp:1878 -msgid "West" -msgstr "Westen" - -#: src/tags.cpp:1883 -msgid "Above sea level" -msgstr "Ãœber dem Meeresspiegel" - -#: src/tags.cpp:1884 -msgid "Below sea level" -msgstr "Unter dem Meeresspiegel" - -#: src/tags.cpp:1889 -msgid "Measurement in progress" -msgstr "Messung wird durchgeführt" - -#: src/tags.cpp:1890 -msgid "Measurement Interoperability" -msgstr "Messungskompatibilität" - -#: src/tags.cpp:1895 -msgid "Two-dimensional measurement" -msgstr "Zweidimensionale Messung" - -#: src/tags.cpp:1896 -msgid "Three-dimensional measurement" -msgstr "Dreidimensionale Messung" - -#: src/tags.cpp:1901 -msgid "km/h" -msgstr "km/h" - -#: src/tags.cpp:1902 -msgid "mph" -msgstr "mph" - -#: src/tags.cpp:1903 -msgid "knots" -msgstr "Knoten" - -#: src/tags.cpp:1908 -msgid "True direction" -msgstr "Echte Richtung" - -#: src/tags.cpp:1909 -msgid "Magnetic direction" -msgstr "Magnetische Richtung" - -#: src/tags.cpp:1914 -msgid "Kilometers" -msgstr "Kilometer" - -#: src/tags.cpp:1915 -msgid "Miles" -msgstr "Meilen" - -#: src/tags.cpp:1916 -msgid "Knots" -msgstr "Knoten" - -#: src/tags.cpp:1921 -msgid "Without correction" -msgstr "Ohne Korrektur" - -#: src/tags.cpp:1922 -msgid "Correction applied" -msgstr "Korrektur wurde angewendet" - -#: src/tags.cpp:1928 -msgid "" -"Indicates the version of . The version is given as 2.0.0.0. This " -"tag is mandatory when tag is present. (Note: The " -"tag is given in bytes, unlike the tag. When the version is " -"2.0.0.0, the tag value is 02000000.H)." -msgstr "" -"Gibt die Version des Feldes an. Die Version ist 2.0.0.0. Es ist " -"zwingend erforderlich wenn ein -Feld vorhanden ist. Beachten Sie " -"bitte, :das -Feld ist in Bytes spezifiziert, im Unterschied " -"zum -Feld. Für die Version 2.0.0.0 ist der Wert des Feldes " -"02000000 H." - -#: src/tags.cpp:1934 -msgid "GPS Latitude Reference" -msgstr "GPS-Breitengradreferenz" - -#: src/tags.cpp:1935 -msgid "" -"Indicates whether the latitude is north or south latitude. The ASCII value " -"'N' indicates north latitude, and 'S' is south latitude." -msgstr "" -"Gibt an, ob die Breite in nördlicher oder südlicher Breite angegeben ist. " -"Der ASCII Wert \"N\" gibt nördliche Breite an, der Wert \"S\" ist südliche " -"Breite." - -#: src/tags.cpp:1939 -msgid "" -"Indicates the latitude. The latitude is expressed as three RATIONAL values " -"giving the degrees, minutes, and seconds, respectively. When degrees, " -"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " -"degrees and minutes are used and, for example, fractions of minutes are " -"given up to two decimal places, the format is dd/1,mmmm/100,0/1." -msgstr "" -"Enthält den Breitengrad. Der Breitengrad wird durch drei RATIONAL Werte " -"angegeben, den Grad, die Minuten und die Sekunden. Wenn Grad, Minuten und " -"Sekunden angegeben werden, ist das Format dd/1, mm/1, ss/1. Wenn Grade und " -"Minuten benutzt werden und, z.B., Minutenteil auf 2 Stellen Genauigkeit, " -"dann ist das Format, dd/1, mmmm/100, 0/1." - -#: src/tags.cpp:1946 -msgid "GPS Longitude Reference" -msgstr "GPS-Längengradreferenz" - -#: src/tags.cpp:1947 -msgid "" -"Indicates whether the longitude is east or west longitude. ASCII 'E' " -"indicates east longitude, and 'W' is west longitude." -msgstr "" -"Gibt an, ob die Länge östliche oder westliche Länge ist. ASCII 'E' steht für " -"östliche Länge und 'W' für westliche." - -#: src/tags.cpp:1951 -msgid "" -"Indicates the longitude. The longitude is expressed as three RATIONAL values " -"giving the degrees, minutes, and seconds, respectively. When degrees, " -"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " -"degrees and minutes are used and, for example, fractions of minutes are " -"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." -msgstr "" -"Enthält den Längengrad. Der Längengrad wird durch drei RATIONAL Werte " -"angegeben, den Grad, die Minuten und die Sekunden. Wenn Grad, Minuten und " -"Sekunden angegeben werden, ist das Format dd/1, mm/1, ss/1. Wenn Grade und " -"Minuten benutzt werden und, z.B., Minutenteil auf 2 Stellen Genauigkeit, " -"dann ist das Format, dd/1, mmmm/100, 0/1." - -#: src/tags.cpp:1959 -msgid "" -"Indicates the altitude used as the reference altitude. If the reference is " -"sea level and the altitude is above sea level, 0 is given. If the altitude " -"is below sea level, a value of 1 is given and the altitude is indicated as " -"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " -"that this tag is BYTE type, unlike other reference tags." -msgstr "" -"Gibt die Referenzhöhe an. Wenn die Referenz der Meeresspiegel ist, und die " -"Höhe ist über dem Meeresspiegel, dann ist dieser Wert 0. Wenn sie unter dem " -"Meeresspiegel ist, dann ist hier ein Wert von 1 und die Höhe ist als " -"absoluter Wert im -Feld angegeben. Die verwendete Einheit ist " -"Meter. Beachten sie, das dieses Feld den Typ BYTE hat." - -#: src/tags.cpp:1967 -msgid "" -"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " -"expressed as one RATIONAL value. The reference unit is meters." -msgstr "" -"Gibt die Höhe über der Referenz Höhe an in an. Höhe ist ein " -"RATIONAL Wert. Die Referenzeinheit ist Meter." - -#: src/tags.cpp:1971 -msgid "" -"Indicates the time as UTC (Coordinated Universal Time). is " -"expressed as three RATIONAL values giving the hour, minute, and second " -"(atomic clock)." -msgstr "" -"Gibt die Zeit in UTC (Universal Time Coordinated ) an. wird " -"durch drei RATIONAL Werte ausgegeben, die die Stunde, die Minute und die " -"Sekunden mit einer Atomuhr gemessen angeben." - -#: src/tags.cpp:1976 -msgid "" -"Indicates the GPS satellites used for measurements. This tag can be used to " -"describe the number of satellites, their ID number, angle of elevation, " -"azimuth, SNR and other information in ASCII notation. The format is not " -"specified. If the GPS receiver is incapable of taking measurements, value of " -"the tag is set to NULL." -msgstr "" -"Gibt die GPS-Satelliten an, die für die Messung benutzt wurden. Dieses Feld " -"kann dafür benutzt werden, um die Anzahl der Satelliten, ihre ID-Nummer, den " -"Erhöhungswinkel, die Abweichung, SNR und andere Informationen mit ASCII-" -"Zeichen zu speichern. Es ist kein Format vorgegeben. Wenn der GPS-Empfänger " -"die Messung nicht durchführen kann, dann wird dieser Wert auf NULL gesetzt." - -#: src/tags.cpp:1983 -msgid "" -"Indicates the status of the GPS receiver when the image is recorded. \"A\" " -"means measurement is in progress, and \"V\" means the measurement is " -"Interoperability." -msgstr "" -"Gibt den Status des GPS-Empfängers bei der Aufnahme des Bildes wieder. \"A\" " -"bedeutet, dass die Messung in Arbeit war und \"V\" bedeutet, dass die " -"Messung kompatibel ist." - -#: src/tags.cpp:1988 -msgid "" -"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " -"and \"3\" means three-dimensional measurement is in progress." -msgstr "" -"Gibt den GPS-Messungsmoduis an. \"2\" steht für eine zwei-dimensionale " -"Messung und \"3\" für drei-dimensional." - -#: src/tags.cpp:1991 -msgid "GPS Data Degree of Precision" -msgstr "Grad der Präzision der GPS-Daten" - -#: src/tags.cpp:1992 -#, fuzzy -msgid "" -"Indicates the GPS DOP (data degree of precision). An HDOP value is written " -"during two-dimensional measurement, and PDOP during three-dimensional " -"measurement." -msgstr "" -"Gibt den GPS-Messungsmoduis an. \"2\" steht für eine zwei-dimensionale " -"Messung und \"3\" für drei-dimensional." - -#: src/tags.cpp:1996 -msgid "" -"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " -"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." -msgstr "" - -#: src/tags.cpp:2000 -#, fuzzy -msgid "Indicates the speed of GPS receiver movement." -msgstr "Gibt den Typen eines Audioinhalts an." - -#: src/tags.cpp:2002 -msgid "GPS Track Ref" -msgstr "GPS-Spurreferenz" - -#: src/tags.cpp:2003 -#, fuzzy -msgid "" -"Indicates the reference for giving the direction of GPS receiver movement. " -"\"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" -"Gibt die Referenz für die Richtung des Zielbuildes während der Aufnahme an. " -"\"T\" bezeichnet die wahre und \"M\" die magnetische Richtung." - -#: src/tags.cpp:2007 -#, fuzzy -msgid "" -"Indicates the direction of GPS receiver movement. The range of values is " -"from 0.00 to 359.99." -msgstr "" -"Gibt die Richtung an in der das Bild gemacht wurde. Der Wertebereich geht " -"von 0.00 bis 359.99." - -#: src/tags.cpp:2011 -msgid "" -"Indicates the reference for giving the direction of the image when it is " -"captured. \"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" -"Gibt die Referenz für die Richtung des Zielbuildes während der Aufnahme an. " -"\"T\" bezeichnet die wahre und \"M\" die magnetische Richtung." - -#: src/tags.cpp:2015 -msgid "" -"Indicates the direction of the image when it was captured. The range of " -"values is from 0.00 to 359.99." -msgstr "" -"Gibt die Richtung an in der das Bild gemacht wurde. Der Wertebereich geht " -"von 0.00 bis 359.99." - -#: src/tags.cpp:2019 -msgid "" -"Indicates the geodetic survey data used by the GPS receiver. If the survey " -"data is restricted to Japan, the value of this tag is \"TOKYO\" or " -"\"WGS-84\"." -msgstr "" - -#: src/tags.cpp:2022 -msgid "GPS Destination Latitude Refeference" -msgstr "GPS Referenz zum Breitengrad des Ziels" - -#: src/tags.cpp:2023 -msgid "" -"Indicates whether the latitude of the destination point is north or south " -"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " -"latitude." -msgstr "" -"Gibt an, ob die Breite in nördlicher oder südlicher Breite angegeben ist. " -"Der ASCII Wert \"N\" gibt nördliche Breite an, der Wert \"S\" ist südliche " -"Breite." - -#: src/tags.cpp:2027 -msgid "" -"Indicates the latitude of the destination point. The latitude is expressed " -"as three RATIONAL values giving the degrees, minutes, and seconds, " -"respectively. If latitude is expressed as degrees, minutes and seconds, a " -"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " -"and, for example, fractions of minutes are given up to two decimal places, " -"the format would be dd/1,mmmm/100,0/1." -msgstr "" -"Enthält den Breitengrad. Der Breitengrad wird durch drei RATIONAL Werte " -"angegeben, den Grad, die Minuten und die Sekunden. Wenn Grad, Minuten und " -"Sekunden angegeben werden, ist das Format dd/1, mm/1, ss/1. Wenn Grade und " -"Minuten benutzt werden und, z.B., Minutenteil auf 2 Stellen Genauigkeit, " -"dann ist das Format, dd/1, mmmm/100, 0/1." - -#: src/tags.cpp:2034 -msgid "GPS Destination Longitude Reference" -msgstr "GPS Referenz auf den Längengrad des Ziels" - -#: src/tags.cpp:2035 -msgid "" -"Indicates whether the longitude of the destination point is east or west " -"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." -msgstr "" -"Gibt an, ob die Länge östliche oder westliche Länge ist. ASCII \"E\" steht " -"für östliche Länge und \"W\" für westliche." - -#: src/tags.cpp:2039 -msgid "" -"Indicates the longitude of the destination point. The longitude is expressed " -"as three RATIONAL values giving the degrees, minutes, and seconds, " -"respectively. If longitude is expressed as degrees, minutes and seconds, a " -"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " -"and, for example, fractions of minutes are given up to two decimal places, " -"the format would be ddd/1,mmmm/100,0/1." -msgstr "" -"Enthält den Längengrad. Der Längengrad wird durch drei RATIONAL Werte " -"angegeben, den Grad, die Minuten und die Sekunden. Wenn Grad, Minuten und " -"Sekunden angegeben werden, ist das Format dd/1, mm/1, ss/1. Wenn Grade und " -"Minuten benutzt werden und, z.B., Minutenteil auf 2 Stellen Genauigkeit, " -"dann ist das Format, dd/1, mmmm/100, 0/1." - -#: src/tags.cpp:2046 -msgid "" -"Indicates the reference used for giving the bearing to the destination " -"point. \"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" -"Gibt eine Referenz für die Richtung des Zielpunktes an. \"T\" bezeichnet die " -"wahre und \"M\" die magnetische Richtung." - -#: src/tags.cpp:2050 -#, fuzzy -msgid "" -"Indicates the bearing to the destination point. The range of values is from " -"0.00 to 359.99." -msgstr "" -"Gibt die Richtung an in der das Bild gemacht wurde. Der Wertebereich geht " -"von 0.00 bis 359.99." - -#: src/tags.cpp:2053 -#, fuzzy -msgid "GPS Destination Distance Reference" -msgstr "GPS Referenz zur Entfernung des Objektes" - -#: src/tags.cpp:2054 -msgid "" -"Indicates the unit used to express the distance to the destination point. \"K" -"\", \"M\" and \"N\" represent kilometers, miles and knots." -msgstr "" - -#: src/tags.cpp:2058 -msgid "Indicates the distance to the destination point." -msgstr "Gibt den Abstand zum Zielpunkt an." - -#: src/tags.cpp:2061 -#, fuzzy -msgid "" -"A character string recording the name of the method used for location " -"finding. The first byte indicates the character code used, and this is " -"followed by the name of the method." -msgstr "" -"Eine Zeichenkette die den Namen des GPS Bereichs enthält. Das erste Byte " -"weisst auf den verwendeten Zeichensatz hin und wird dann vom Namen des GPS " -"Bereichs gefolgt." - -#: src/tags.cpp:2066 -msgid "" -"A character string recording the name of the GPS area. The first byte " -"indicates the character code used, and this is followed by the name of the " -"GPS area." -msgstr "" -"Eine Zeichenkette die den Namen des GPS Bereichs enthält. Das erste Byte " -"weisst auf den verwendeten Zeichensatz hin und wird dann vom Namen des GPS " -"Bereichs gefolgt." - -#: src/tags.cpp:2069 -msgid "GPS Date Stamp" -msgstr "GPS Datumsstempel" - -#: src/tags.cpp:2070 -msgid "" -"A character string recording date and time information relative to UTC " -"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." -msgstr "" - -#: src/tags.cpp:2074 -msgid "" -"Indicates whether differential correction is applied to the GPS receiver." -msgstr "" - -#: src/tags.cpp:2077 src/tags.cpp:2078 -msgid "Unknown GPSInfo tag" -msgstr "Unbekanntes GPSInfo-Feld" - -#: src/tags.cpp:2089 -msgid "Interoperability Index" -msgstr "Interoperabilitätsindex" - -#: src/tags.cpp:2090 -msgid "" -"Indicates the identification of the Interoperability rule. Use \"R98\" for " -"stating ExifR98 Rules. Four bytes used including the termination code " -"(NULL). see the separate volume of Recommended Exif Interoperability Rules " -"(ExifR98) for other tags used for ExifR98." -msgstr "" -"Spezifiziert die Identifikation der Interoperabilitätsregel. Benutzen Sie " -"\"R98\" für ExifR98 Regeln. Vier Bytes werden benutzt inklusive des " -"Endecodes (NULL). Sehen Sie dazu auch das separate Dokument der " -"\"Recommended Exif Interoperability Rules\" (ExifR98) für andere Felder die " -"für ExifR98 benutzt werden." - -#: src/tags.cpp:2096 -msgid "Interoperability Version" -msgstr "Interoperabilitätsversion" - -#: src/tags.cpp:2097 -msgid "Interoperability version" -msgstr "Interoperabilitätsversion" - -#: src/tags.cpp:2099 -msgid "Related Image File Format" -msgstr "Zugehöriges Bilddateiformat" - -#: src/tags.cpp:2100 -msgid "File format of image file" -msgstr "Dateiformat der Bilddatei" - -#: src/tags.cpp:2102 -msgid "Related Image Width" -msgstr "Zugehörige Bildbreite" - -#: src/tags.cpp:2105 -msgid "Related Image Length" -msgstr "Zugehörige Bildlänge" - -#: src/tags.cpp:2109 src/tags.cpp:2110 -msgid "Unknown Exif Interoperability tag" -msgstr "Unbekanntes Exif-Kompatibilitätsfeld" - -#: src/tags.cpp:2121 -#, fuzzy -msgid "Offset" -msgstr "Offset" - -#: src/tags.cpp:2122 -msgid "Offset of the makernote from the start of the TIFF header." -msgstr "" - -#: src/tags.cpp:2124 -#, fuzzy -msgid "Byte Order" -msgstr "Füllreihenfolge" - -#: src/tags.cpp:2125 -msgid "" -"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" -"endian)." -msgstr "" - -#: src/tags.cpp:2128 src/tags.cpp:2129 -#, fuzzy -msgid "Unknown Exiv2 Makernote info tag" -msgstr "Unbekanntes Herstellerbemerkungsfeld von Nikon2" - -#: src/tags.cpp:2139 src/tags.cpp:2140 -msgid "Unknown tag" -msgstr "Unbekanntes Feld" - -#: src/tags.cpp:2662 -msgid "Digital zoom not used" -msgstr "Digital Zoom wurde nicht benutzt" - -#: src/tiffimage.cpp:2034 -msgid "TIFF header, offset" -msgstr "TIFF-Header, offset" - -#: src/tiffimage.cpp:2039 -msgid "little endian encoded" -msgstr "\"Little-Endian\" kodiert" - -#: src/tiffimage.cpp:2040 -msgid "big endian encoded" -msgstr "\"Big Endian\" kodiert" - -#~ msgid "Software firmware version" -#~ msgstr "Firmware-Version der Software" - -#, fuzzy -#~ msgid "White Balance Bracketing " -#~ msgstr "Weißabgleichsreihe" - -#~ msgid "(Unknown Error)" -#~ msgstr "(Unbekannter Fehler)" - -#~ msgid "Exposure Speed" -#~ msgstr "Belichtungsgeschwindigkeit" - -#~ msgid "Exposure speed" -#~ msgstr "Belichtungsgeschwindigkeit" - -#~ msgid "Color balance settings 1" -#~ msgstr "Farbabgleich-Einstellungen 1" - -#~ msgid "Compression Curve" -#~ msgstr "Kompressionskurve" - -#~ msgid "Compression curve" -#~ msgstr "Kompressionskurve" - -#~ msgid "Color balance settings 2" -#~ msgstr "Farbabgleich-Einstellungen 2" - -#~ msgid "Dynamic area (wide" -#~ msgstr "Dynamischer Bereich (Weit)" - -#~ msgid "On for ISO 1600/3200" -#~ msgstr "An für ISO 1600/3200" - -#~ msgid "ImageStabilizer" -#~ msgstr "Bildstabilisierer" - -#~ msgid "Image stabilizer" -#~ msgstr "Bildstabilisierer" - -#~ msgid "Data area" -#~ msgstr "Datenbereich" - -#~ msgid "bytes.\n" -#~ msgstr "Bytes.\n" - -#~ msgid "directory with" -#~ msgstr "Ordner mit" - -#~ msgid "entry:\n" -#~ msgstr "Eintrag:\n" - -#~ msgid "entries:\n" -#~ msgstr "Einträge:\n" - -#~ msgid "Next directory:\n" -#~ msgstr "Nächster Ordner:\n" - -#~ msgid "No next directory\n" -#~ msgstr "Kein weitere Ordner\n" - -#~ msgid "Makernote" -#~ msgstr "Herstellerbemerkung" - -#~ msgid "component" -#~ msgstr "Komponente" - -#~ msgid "with" -#~ msgstr "mit" - -#~ msgid "elements" -#~ msgstr "Elementen" - -#~ msgid "element" -#~ msgstr "Element" diff --git a/platform/win32/msvc/external/exiv2/po/en@boldquot.header b/platform/win32/msvc/external/exiv2/po/en@boldquot.header deleted file mode 100644 index fedb6a06d12..00000000000 --- a/platform/win32/msvc/external/exiv2/po/en@boldquot.header +++ /dev/null @@ -1,25 +0,0 @@ -# All this catalog "translates" are quotation characters. -# The msgids must be ASCII and therefore cannot contain real quotation -# characters, only substitutes like grave accent (0x60), apostrophe (0x27) -# and double quote (0x22). These substitutes look strange; see -# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html -# -# This catalog translates grave accent (0x60) and apostrophe (0x27) to -# left single quotation mark (U+2018) and right single quotation mark (U+2019). -# It also translates pairs of apostrophe (0x27) to -# left single quotation mark (U+2018) and right single quotation mark (U+2019) -# and pairs of quotation mark (0x22) to -# left double quotation mark (U+201C) and right double quotation mark (U+201D). -# -# When output to an UTF-8 terminal, the quotation characters appear perfectly. -# When output to an ISO-8859-1 terminal, the single quotation marks are -# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to -# grave/acute accent (by libiconv), and the double quotation marks are -# transliterated to 0x22. -# When output to an ASCII terminal, the single quotation marks are -# transliterated to apostrophes, and the double quotation marks are -# transliterated to 0x22. -# -# This catalog furthermore displays the text between the quotation marks in -# bold face, assuming the VT100/XTerm escape sequences. -# diff --git a/platform/win32/msvc/external/exiv2/po/en@quot.header b/platform/win32/msvc/external/exiv2/po/en@quot.header deleted file mode 100644 index a9647fc35c3..00000000000 --- a/platform/win32/msvc/external/exiv2/po/en@quot.header +++ /dev/null @@ -1,22 +0,0 @@ -# All this catalog "translates" are quotation characters. -# The msgids must be ASCII and therefore cannot contain real quotation -# characters, only substitutes like grave accent (0x60), apostrophe (0x27) -# and double quote (0x22). These substitutes look strange; see -# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html -# -# This catalog translates grave accent (0x60) and apostrophe (0x27) to -# left single quotation mark (U+2018) and right single quotation mark (U+2019). -# It also translates pairs of apostrophe (0x27) to -# left single quotation mark (U+2018) and right single quotation mark (U+2019) -# and pairs of quotation mark (0x22) to -# left double quotation mark (U+201C) and right double quotation mark (U+201D). -# -# When output to an UTF-8 terminal, the quotation characters appear perfectly. -# When output to an ISO-8859-1 terminal, the single quotation marks are -# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to -# grave/acute accent (by libiconv), and the double quotation marks are -# transliterated to 0x22. -# When output to an ASCII terminal, the single quotation marks are -# transliterated to apostrophes, and the double quotation marks are -# transliterated to 0x22. -# diff --git a/platform/win32/msvc/external/exiv2/po/es.gmo b/platform/win32/msvc/external/exiv2/po/es.gmo deleted file mode 100644 index 23da0ce35e6..00000000000 Binary files a/platform/win32/msvc/external/exiv2/po/es.gmo and /dev/null differ diff --git a/platform/win32/msvc/external/exiv2/po/es.po b/platform/win32/msvc/external/exiv2/po/es.po deleted file mode 100644 index edb526d8715..00000000000 --- a/platform/win32/msvc/external/exiv2/po/es.po +++ /dev/null @@ -1,24937 +0,0 @@ -# Spanish translations of Exiv2. -# Copyright: -# Free Software Foundation, Inc., 2002 -# Fabian Mandelbaum , 2002 -# This file is distributed under the same license as the Exiv2 package. -# Este archivo se distribuye bajo la misma licencia que el paquete Exiv2. -# -msgid "" -msgstr "" -"Project-Id-Version: Exiv2\n" -"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" -"POT-Creation-Date: 2012-03-23 18:06+0800\n" -"PO-Revision-Date: 2005-03-12 05:43+0100\n" -"Last-Translator: Fabian Mandelbaum \n" -"Language-Team: Spanish \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: src/actions.cpp:253 src/actions.cpp:486 src/actions.cpp:698 -#: src/actions.cpp:715 src/actions.cpp:760 src/actions.cpp:850 -#: src/actions.cpp:993 src/actions.cpp:1035 src/actions.cpp:1104 -#: src/actions.cpp:1146 src/actions.cpp:1151 src/actions.cpp:1171 -#: src/actions.cpp:1176 src/actions.cpp:1208 src/actions.cpp:1451 -#: src/actions.cpp:1587 src/actions.cpp:1652 src/actions.cpp:1820 -msgid "Failed to open the file\n" -msgstr "Fallo al abrir el archivo\n" - -#: src/actions.cpp:263 -#, fuzzy -msgid "File name" -msgstr "Nombre del archivo" - -#: src/actions.cpp:269 -#, fuzzy -msgid "File size" -msgstr "Tamaño del archivo" - -#: src/actions.cpp:270 src/actions.cpp:422 src/actions.cpp:1019 -#, fuzzy -msgid "Bytes" -msgstr "Bytes" - -#: src/actions.cpp:274 -#, fuzzy -msgid "MIME type" -msgstr "tipo MIME" - -#: src/actions.cpp:278 src/canonmn.cpp:785 src/minoltamn.cpp:500 -#: src/minoltamn.cpp:745 src/minoltamn.cpp:988 src/pentaxmn.cpp:892 -#, fuzzy -msgid "Image size" -msgstr "Tamaño de la imagen" - -#: src/actions.cpp:283 src/actions.cpp:513 src/actions.cpp:773 -#: src/actions.cpp:1002 src/actions.cpp:1464 src/actions.cpp:1600 -#: src/actions.cpp:1665 -msgid "No Exif data found in the file\n" -msgstr "No se encontraron datos EXIF en el archivo\n" - -#: src/actions.cpp:288 -#, fuzzy -msgid "Camera make" -msgstr "Contraste" - -#: src/actions.cpp:291 -#, fuzzy -msgid "Camera model" -msgstr "Modelo de la cámara" - -#: src/actions.cpp:294 -#, fuzzy -msgid "Image timestamp" -msgstr "Fecha y hora de la imagen" - -#: src/actions.cpp:298 src/minoltamn.cpp:805 src/minoltamn.cpp:812 -#: src/minoltamn.cpp:1066 -#, fuzzy -msgid "Image number" -msgstr "ID único de imagen" - -#: src/actions.cpp:303 src/minoltamn.cpp:515 src/minoltamn.cpp:798 -#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1368 src/pentaxmn.cpp:909 -#: src/pentaxmn.cpp:910 -#, fuzzy -msgid "Exposure time" -msgstr "Tiempo de exposición" - -#: src/actions.cpp:315 src/canonmn.cpp:903 src/minoltamn.cpp:1262 -#: src/tags.cpp:1627 -msgid "Aperture" -msgstr "Apertura" - -#: src/actions.cpp:325 -#, fuzzy -msgid "Exposure bias" -msgstr "Ajuste de exposición" - -#: src/actions.cpp:328 src/canonmn.cpp:835 src/minoltamn.cpp:874 -#: src/minoltamn.cpp:1198 src/minoltamn.cpp:2098 src/panasonicmn.cpp:69 -#: src/pentaxmn.cpp:320 src/properties.cpp:563 src/sonymn.cpp:171 -#: src/tags.cpp:827 src/tags.cpp:1431 src/tags.cpp:1652 -msgid "Flash" -msgstr "Flash" - -#: src/actions.cpp:331 src/canonmn.cpp:897 src/panasonicmn.cpp:249 -#, fuzzy -msgid "Flash bias" -msgstr "Ajuste del Flash" - -#: src/actions.cpp:336 src/canonmn.cpp:201 src/minoltamn.cpp:539 -#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1372 -#, fuzzy -msgid "Focal length" -msgstr "Distancia focal" - -#: src/actions.cpp:341 -#, fuzzy -msgid "35 mm equivalent" -msgstr " (equivalente 35: %d mm)" - -#: src/actions.cpp:351 -#, fuzzy -msgid "Subject distance" -msgstr "Distancia al sujeto" - -#: src/actions.cpp:362 -#, fuzzy -msgid "ISO speed" -msgstr "Velocidad ISO" - -#: src/actions.cpp:365 src/minoltamn.cpp:491 src/minoltamn.cpp:742 -#: src/minoltamn.cpp:985 src/minoltamn.cpp:1353 src/olympusmn.cpp:659 -#: src/sigmamn.cpp:75 -#, fuzzy -msgid "Exposure mode" -msgstr "Modo de exposición" - -#: src/actions.cpp:368 src/minoltamn.cpp:509 src/minoltamn.cpp:1006 -#: src/minoltamn.cpp:1395 src/olympusmn.cpp:661 src/sigmamn.cpp:78 -#, fuzzy -msgid "Metering mode" -msgstr "Modo de cálculo de la exposición óptima" - -#: src/actions.cpp:371 src/canonmn.cpp:776 src/minoltamn.cpp:521 -#: src/olympusmn.cpp:202 src/olympusmn.cpp:663 src/panasonicmn.cpp:243 -#, fuzzy -msgid "Macro mode" -msgstr "Macro" - -#: src/actions.cpp:374 src/minoltamn.cpp:133 src/minoltamn.cpp:503 -#: src/minoltamn.cpp:748 src/minoltamn.cpp:991 src/pentaxmn.cpp:889 -#: src/sonymn.cpp:275 -#, fuzzy -msgid "Image quality" -msgstr "Calidad de imágen" - -#: src/actions.cpp:377 -#, fuzzy -msgid "Exif Resolution" -msgstr "Resolución Y" - -#: src/actions.cpp:406 src/canonmn.cpp:1140 src/minoltamn.cpp:178 -#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:994 -#: src/minoltamn.cpp:1377 src/nikonmn.cpp:226 src/nikonmn.cpp:472 -#: src/nikonmn.cpp:528 src/olympusmn.cpp:880 src/sigmamn.cpp:72 -#: src/sonymn.cpp:290 -#, fuzzy -msgid "White balance" -msgstr "Balance de blanco" - -#: src/actions.cpp:409 src/minoltamn.cpp:114 src/olympusmn.cpp:426 -msgid "Thumbnail" -msgstr "Miniatura" - -#: src/actions.cpp:413 src/actions.cpp:418 src/canonmn.cpp:339 -#: src/canonmn.cpp:1048 src/canonmn.cpp:1057 src/canonmn.cpp:1109 -#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2076 -#: src/nikonmn.cpp:173 src/nikonmn.cpp:188 src/nikonmn.cpp:903 -#: src/nikonmn.cpp:926 src/nikonmn.cpp:988 src/olympusmn.cpp:142 -#: src/olympusmn.cpp:720 src/olympusmn.cpp:727 src/olympusmn.cpp:1181 -#: src/olympusmn.cpp:1240 src/olympusmn.cpp:1337 src/olympusmn.cpp:1493 -#: src/olympusmn.cpp:1502 src/pentaxmn.cpp:230 src/pentaxmn.cpp:349 -#: src/pentaxmn.cpp:350 src/properties.cpp:914 src/properties.cpp:922 -#: src/tags.cpp:1510 -msgid "None" -msgstr "" - -#: src/actions.cpp:428 src/datasets.cpp:376 src/properties.cpp:357 -#: src/properties.cpp:523 src/tags.cpp:762 -msgid "Copyright" -msgstr "Copyright" - -#: src/actions.cpp:431 -msgid "Exif comment" -msgstr "Comentario Exif" - -#: src/actions.cpp:526 -#, fuzzy -msgid "No IPTC data found in the file\n" -msgstr "No se encontraron metadatos de tipo IPTC en el archivo\n" - -#: src/actions.cpp:539 -#, fuzzy -msgid "No XMP data found in the file\n" -msgstr "No se encontraron metadatos XMP en el archivo\n" - -#: src/actions.cpp:638 src/actions.cpp:663 src/actions.cpp:684 -msgid "(Binary value suppressed)" -msgstr "(Valor Binario suprimido)" - -#: src/actions.cpp:705 -#, fuzzy -msgid "JPEG comment" -msgstr "Comentario del usuario" - -#: src/actions.cpp:730 -#, fuzzy -msgid "Preview" -msgstr "Vista Preliminar" - -#: src/actions.cpp:734 src/actions.cpp:1074 src/properties.cpp:426 -msgid "pixels" -msgstr "píxeles" - -#: src/actions.cpp:736 src/actions.cpp:1076 -#, fuzzy -msgid "bytes" -msgstr "bytes" - -#: src/actions.cpp:783 -#, fuzzy -msgid "Neither tag" -msgstr "Otro" - -#: src/actions.cpp:784 -#, fuzzy -msgid "nor" -msgstr "normal" - -#: src/actions.cpp:785 -#, fuzzy -msgid "found in the file" -msgstr "encontrado en el archivo" - -#: src/actions.cpp:790 -msgid "Image file creation timestamp not set in the file" -msgstr "No se registró el momento de creación de la imagen" - -#: src/actions.cpp:796 src/actions.cpp:1553 -msgid "Failed to parse timestamp" -msgstr "Fallo al procesar la fecha y hora" - -#: src/actions.cpp:797 -#, fuzzy -msgid "in the file" -msgstr "en el archivo" - -#: src/actions.cpp:808 -msgid "Updating timestamp to" -msgstr "Actualizando fecha y hora a" - -#: src/actions.cpp:902 -#, fuzzy -msgid "Erasing thumbnail data" -msgstr "Borrando miniatura" - -#: src/actions.cpp:910 -msgid "Erasing Exif data from the file" -msgstr "Borrando los datos Exif del archivo" - -#: src/actions.cpp:919 -msgid "Erasing IPTC data from the file" -msgstr "Borrando los metadatos IPTC del archivo" - -#: src/actions.cpp:928 -msgid "Erasing JPEG comment from the file" -msgstr "Borrando los comentarios JPEG del archivo" - -#: src/actions.cpp:937 -msgid "Erasing XMP data from the file" -msgstr "Borrando los metadatos XMP del archivo" - -#: src/actions.cpp:1009 -msgid "Image does not contain an Exif thumbnail\n" -msgstr "La imágen no contiene una miniatura Exif\n" - -#: src/actions.cpp:1018 -#, fuzzy -msgid "Writing thumbnail" -msgstr "Escribiendo imágen miniatura" - -#: src/actions.cpp:1019 src/actions.cpp:1077 -#, fuzzy -msgid "to file" -msgstr "al archivo" - -#: src/actions.cpp:1025 -msgid "Exif data doesn't contain a thumbnail\n" -msgstr "los datos Exif no contienen una miniatura\n" - -#: src/actions.cpp:1055 src/actions.cpp:1081 -msgid "Image does not have preview" -msgstr "La imágen no tiene vista previa" - -#: src/actions.cpp:1070 -msgid "Writing preview" -msgstr "Escribiendo vista previa" - -#: src/actions.cpp:1241 -#, fuzzy -msgid "Setting JPEG comment" -msgstr "ajustando comentario del usuario" - -#: src/actions.cpp:1282 -msgid "Add" -msgstr "Añadir" - -#: src/actions.cpp:1304 src/actions.cpp:1378 -#, fuzzy -msgid "Warning" -msgstr "Aviso" - -#: src/actions.cpp:1305 src/actions.cpp:1379 -#, fuzzy -msgid "Failed to read" -msgstr "Fallo al leer" - -#: src/actions.cpp:1307 src/actions.cpp:1381 -#, fuzzy -msgid "value" -msgstr "valor" - -#: src/actions.cpp:1318 -#, fuzzy -msgid "Set" -msgstr "Establecer" - -#: src/actions.cpp:1390 -msgid "Del" -msgstr "" - -#: src/actions.cpp:1422 -msgid "Reg " -msgstr "" - -#: src/actions.cpp:1506 -msgid "Timestamp of metadatum with key" -msgstr "Metadatos de fecha y hora con clave" - -#: src/actions.cpp:1507 -msgid "not set\n" -msgstr "no establecido\n" - -#: src/actions.cpp:1512 -msgid "Adjusting" -msgstr "Ajustando" - -#: src/actions.cpp:1512 -msgid "by" -msgstr "por" - -#: src/actions.cpp:1516 src/actions.cpp:1565 -#, fuzzy -msgid "years" -msgstr "años" - -#: src/actions.cpp:1519 -msgid "year" -msgstr "año" - -#: src/actions.cpp:1527 -#, fuzzy -msgid "months" -msgstr "meses" - -#: src/actions.cpp:1530 -#, fuzzy -msgid "month" -msgstr "més" - -#: src/actions.cpp:1538 -msgid "days" -msgstr "días" - -#: src/actions.cpp:1541 -msgid "day" -msgstr "día" - -#: src/actions.cpp:1547 -msgid "s" -msgstr "s" - -#: src/actions.cpp:1563 -msgid "Can't adjust timestamp by" -msgstr "No puedo ajustar fecha y hora" - -#: src/actions.cpp:1572 src/actions.cpp:1844 src/actions.cpp:1852 -#: src/actions.cpp:1860 src/actions.cpp:1869 src/actions.cpp:1979 -#, fuzzy -msgid "to" -msgstr "a" - -#: src/actions.cpp:1607 -msgid "Standard Exif ISO tag exists; not modified\n" -msgstr "la etiqueta ISO Exif standard ya existe; no se modifica\n" - -#: src/actions.cpp:1615 -msgid "Setting Exif ISO value to" -msgstr "Estableciando valor Exif ISO a" - -#: src/actions.cpp:1671 -msgid "No Exif user comment found" -msgstr "No se encontraron comentarios Exif del usuario" - -#: src/actions.cpp:1679 -msgid "Found Exif user comment with unexpected value type" -msgstr "Comentario Exif del usuario con un tipo de valor inesperado" - -#: src/actions.cpp:1686 -msgid "No Exif UNICODE user comment found" -msgstr "Comentario Exif UNICODE del usuario no encontrado" - -#: src/actions.cpp:1692 -#, fuzzy -msgid "Setting Exif UNICODE user comment to" -msgstr "Estableciendo comentario Exif UNICODE del usuario a" - -#: src/actions.cpp:1843 -msgid "Writing Exif data from" -msgstr "Escribiendo datos Exif desde" - -#: src/actions.cpp:1851 -msgid "Writing IPTC data from" -msgstr "Escribiendo datos IPTC desde" - -#: src/actions.cpp:1859 -msgid "Writing XMP data from" -msgstr "Escribiendo datos XMP desde" - -#: src/actions.cpp:1868 -msgid "Writing JPEG comment from" -msgstr "Escribiendo comentario JPEG desde" - -#: src/actions.cpp:1878 -msgid "Could not write metadata to file" -msgstr "No se pudieron escribir los metadatos al archivo" - -#: src/actions.cpp:1905 -msgid "Filename format yields empty filename for the file" -msgstr "" -"Nombre del archivo perdido por un problema de formato.(Se produjo un archivo " -"cuyo nombre es una cadena vacía)" - -#: src/actions.cpp:1914 -msgid "This file already has the correct name" -msgstr "El nombre del archivo ya es el correcto" - -#: src/actions.cpp:1938 src/exiv2.cpp:168 -#, fuzzy -msgid "File" -msgstr "Orden de llenado" - -# context here? File = archivo , to fill = llenar -#: src/actions.cpp:1939 -msgid "exists. [O]verwrite, [r]ename or [s]kip?" -msgstr "ya existe. S[O]breescribir, [r]enombrar or [s]altar?" - -# check that both ``o'' and ``O'' are valid for Overwrite order -#: src/actions.cpp:1967 -#, fuzzy -msgid "Renaming file to" -msgstr "Renombrando archivo a" - -#: src/actions.cpp:1969 -msgid "updating timestamp" -msgstr "actualizando fecha y hora" - -#: src/actions.cpp:1978 -msgid "Failed to rename" -msgstr "Fallo al renombrar" - -#: src/actions.cpp:2000 -msgid "Overwrite" -msgstr "Sobreescribir" - -#: src/canonmn.cpp:58 src/canonmn.cpp:186 src/canonmn.cpp:245 -#: src/canonmn.cpp:260 src/canonmn.cpp:734 src/canonmn.cpp:747 -#: src/canonmn.cpp:1009 src/canonmn.cpp:1032 src/canonmn.cpp:1041 -#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 -#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 -#: src/minoltamn.cpp:1134 src/minoltamn.cpp:1275 src/minoltamn.cpp:1337 -#: src/minoltamn.cpp:1910 src/minoltamn.cpp:1924 src/minoltamn.cpp:1972 -#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 -#: src/nikonmn.cpp:204 src/nikonmn.cpp:641 src/nikonmn.cpp:666 -#: src/nikonmn.cpp:715 src/nikonmn.cpp:750 src/nikonmn.cpp:836 -#: src/nikonmn.cpp:881 src/nikonmn.cpp:968 src/nikonmn.cpp:1210 -#: src/nikonmn.cpp:1219 src/olympusmn.cpp:59 src/olympusmn.cpp:79 -#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 -#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:586 -#: src/olympusmn.cpp:648 src/olympusmn.cpp:912 src/olympusmn.cpp:1133 -#: src/olympusmn.cpp:1431 src/olympusmn.cpp:1432 src/olympusmn.cpp:1471 -#: src/panasonicmn.cpp:87 src/panasonicmn.cpp:94 src/panasonicmn.cpp:100 -#: src/panasonicmn.cpp:145 src/panasonicmn.cpp:154 src/panasonicmn.cpp:183 -#: src/panasonicmn.cpp:210 src/pentaxmn.cpp:183 src/pentaxmn.cpp:292 -#: src/pentaxmn.cpp:713 src/pentaxmn.cpp:719 src/sonymn.cpp:56 -#: src/sonymn.cpp:87 src/sonymn.cpp:141 src/sonymn.cpp:149 src/sonymn.cpp:156 -#: src/sonymn.cpp:199 src/sonymn.cpp:206 src/sonymn.cpp:237 src/sonymn.cpp:500 -msgid "Off" -msgstr "Apagado" - -#: src/canonmn.cpp:59 src/canonmn.cpp:244 src/canonmn.cpp:262 -#: src/canonmn.cpp:735 src/canonmn.cpp:1035 src/fujimn.cpp:57 -#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 -#: src/minoltamn.cpp:1911 src/minoltamn.cpp:1923 src/nikonmn.cpp:63 -#: src/nikonmn.cpp:640 src/nikonmn.cpp:716 src/nikonmn.cpp:717 -#: src/nikonmn.cpp:1220 src/olympusmn.cpp:60 src/olympusmn.cpp:80 -#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 -#: src/olympusmn.cpp:1472 src/panasonicmn.cpp:93 src/pentaxmn.cpp:186 -#: src/pentaxmn.cpp:293 src/pentaxmn.cpp:714 src/sonymn.cpp:157 -#: src/sonymn.cpp:207 src/sonymn.cpp:238 -msgid "On" -msgstr "Encendido" - -#: src/canonmn.cpp:69 -#, fuzzy -msgid "PowerShot A30" -msgstr "Lugar" - -# don't understand all of these. Lugar = a Place -#: src/canonmn.cpp:70 -msgid "PowerShot S300 / Digital IXUS 300 / IXY Digital 300" -msgstr "" - -#: src/canonmn.cpp:71 -#, fuzzy -msgid "PowerShot A20" -msgstr "Lugar" - -#: src/canonmn.cpp:72 -#, fuzzy -msgid "PowerShot A10" -msgstr "Lugar" - -#: src/canonmn.cpp:73 -msgid "PowerShot S110 / Digital IXUS v / IXY Digital 200" -msgstr "" - -#: src/canonmn.cpp:74 -#, fuzzy -msgid "PowerShot G2" -msgstr "Lugar" - -#: src/canonmn.cpp:75 -#, fuzzy -msgid "PowerShot S40" -msgstr "Lugar" - -#: src/canonmn.cpp:76 -#, fuzzy -msgid "PowerShot S30" -msgstr "Lugar" - -#: src/canonmn.cpp:77 -#, fuzzy -msgid "PowerShot A40" -msgstr "Lugar" - -#: src/canonmn.cpp:78 -msgid "EOS D30" -msgstr "" - -#: src/canonmn.cpp:79 -#, fuzzy -msgid "PowerShot A100" -msgstr "Lugar" - -#: src/canonmn.cpp:80 -msgid "PowerShot S200 / Digital IXUS v2 / IXY Digital 200a" -msgstr "" - -#: src/canonmn.cpp:81 -#, fuzzy -msgid "PowerShot A200" -msgstr "Lugar" - -#: src/canonmn.cpp:82 -msgid "PowerShot S330 / Digital IXUS 330 / IXY Digital 300a" -msgstr "" - -#: src/canonmn.cpp:83 -#, fuzzy -msgid "PowerShot G3" -msgstr "Lugar" - -#: src/canonmn.cpp:84 -#, fuzzy -msgid "PowerShot S45" -msgstr "Lugar" - -#: src/canonmn.cpp:85 -msgid "PowerShot SD100 / Digital IXUS II / IXY Digital 30" -msgstr "" - -#: src/canonmn.cpp:86 -msgid "PowerShot S230 / Digital IXUS v3 / IXY Digital 320" -msgstr "" - -#: src/canonmn.cpp:87 -#, fuzzy -msgid "PowerShot A70" -msgstr "Lugar" - -#: src/canonmn.cpp:88 -#, fuzzy -msgid "PowerShot A60" -msgstr "Lugar" - -#: src/canonmn.cpp:89 -msgid "PowerShot S400 / Digital IXUS 400 / IXY Digital 400" -msgstr "" - -#: src/canonmn.cpp:90 -#, fuzzy -msgid "PowerShot G5" -msgstr "Lugar" - -#: src/canonmn.cpp:91 -#, fuzzy -msgid "PowerShot A300" -msgstr "Lugar" - -#: src/canonmn.cpp:92 -#, fuzzy -msgid "PowerShot S50" -msgstr "Lugar" - -#: src/canonmn.cpp:93 -#, fuzzy -msgid "PowerShot A80" -msgstr "Lugar" - -#: src/canonmn.cpp:94 -msgid "PowerShot SD10 / Digital IXUS i / IXY Digital L" -msgstr "" - -#: src/canonmn.cpp:95 -#, fuzzy -msgid "PowerShot S1 IS" -msgstr "Lugar" - -#: src/canonmn.cpp:96 -#, fuzzy -msgid "PowerShot Pro1" -msgstr "Lugar" - -#: src/canonmn.cpp:97 -#, fuzzy -msgid "PowerShot S70" -msgstr "Lugar" - -#: src/canonmn.cpp:98 -#, fuzzy -msgid "PowerShot S60" -msgstr "Lugar" - -#: src/canonmn.cpp:99 -#, fuzzy -msgid "PowerShot G6" -msgstr "Lugar" - -#: src/canonmn.cpp:100 -msgid "PowerShot S500 / Digital IXUS 500 / IXY Digital 500" -msgstr "" - -#: src/canonmn.cpp:101 -#, fuzzy -msgid "PowerShot A75" -msgstr "Lugar" - -#: src/canonmn.cpp:102 -msgid "PowerShot SD110 / Digital IXUS IIs / IXY Digital 30a" -msgstr "" - -#: src/canonmn.cpp:103 -#, fuzzy -msgid "PowerShot A400" -msgstr "Lugar" - -#: src/canonmn.cpp:104 -#, fuzzy -msgid "PowerShot A310" -msgstr "Lugar" - -#: src/canonmn.cpp:105 -#, fuzzy -msgid "PowerShot A85" -msgstr "Lugar" - -#: src/canonmn.cpp:106 -msgid "PowerShot S410 / Digital IXUS 430 / IXY Digital 450" -msgstr "" - -#: src/canonmn.cpp:107 -#, fuzzy -msgid "PowerShot A95" -msgstr "Lugar" - -#: src/canonmn.cpp:108 -msgid "PowerShot SD300 / Digital IXUS 40 / IXY Digital 50" -msgstr "" - -#: src/canonmn.cpp:109 -msgid "PowerShot SD200 / Digital IXUS 30 / IXY Digital 40" -msgstr "" - -#: src/canonmn.cpp:110 -#, fuzzy -msgid "PowerShot A520" -msgstr "Lugar" - -#: src/canonmn.cpp:111 -#, fuzzy -msgid "PowerShot A510" -msgstr "Lugar" - -#: src/canonmn.cpp:112 -msgid "PowerShot SD20 / Digital IXUS i5 / IXY Digital L2" -msgstr "" - -#: src/canonmn.cpp:113 -#, fuzzy -msgid "PowerShot S2 IS" -msgstr "Lugar" - -#: src/canonmn.cpp:114 -msgid "PowerShot SD430 / IXUS Wireless / IXY Wireless" -msgstr "" - -#: src/canonmn.cpp:115 -msgid "PowerShot SD500 / Digital IXUS 700 / IXY Digital 600" -msgstr "" - -#: src/canonmn.cpp:116 -msgid "EOS D60" -msgstr "" - -#: src/canonmn.cpp:117 -msgid "PowerShot SD30 / Digital IXUS i zoom / IXY Digital L3" -msgstr "" - -#: src/canonmn.cpp:118 -#, fuzzy -msgid "PowerShot A430" -msgstr "Lugar" - -#: src/canonmn.cpp:119 -#, fuzzy -msgid "PowerShot A410" -msgstr "Lugar" - -#: src/canonmn.cpp:120 -#, fuzzy -msgid "PowerShot S80" -msgstr "Lugar" - -#: src/canonmn.cpp:121 -#, fuzzy -msgid "PowerShot A620" -msgstr "Lugar" - -#: src/canonmn.cpp:122 -#, fuzzy -msgid "PowerShot A610" -msgstr "Lugar" - -#: src/canonmn.cpp:123 -msgid "PowerShot SD630 / Digital IXUS 65 / IXY Digital 80" -msgstr "" - -#: src/canonmn.cpp:124 -msgid "PowerShot SD450 / Digital IXUS 55 / IXY Digital 60" -msgstr "" - -#: src/canonmn.cpp:125 -#, fuzzy -msgid "PowerShot TX1" -msgstr "Lugar" - -#: src/canonmn.cpp:126 -msgid "PowerShot SD400 / Digital IXUS 50 / IXY Digital 55" -msgstr "" - -#: src/canonmn.cpp:127 -#, fuzzy -msgid "PowerShot A420" -msgstr "Lugar" - -#: src/canonmn.cpp:128 -msgid "PowerShot SD900 / Digital IXUS 900 Ti / IXY Digital 1000" -msgstr "" - -#: src/canonmn.cpp:129 -msgid "PowerShot SD550 / Digital IXUS 750 / IXY Digital 700" -msgstr "" - -#: src/canonmn.cpp:130 -#, fuzzy -msgid "PowerShot A700" -msgstr "Lugar" - -#: src/canonmn.cpp:131 -msgid "PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS" -msgstr "" - -#: src/canonmn.cpp:132 -#, fuzzy -msgid "PowerShot S3 IS" -msgstr "Lugar" - -#: src/canonmn.cpp:133 -#, fuzzy -msgid "PowerShot A540" -msgstr "Lugar" - -#: src/canonmn.cpp:134 -msgid "PowerShot SD600 / Digital IXUS 60 / IXY Digital 70" -msgstr "" - -#: src/canonmn.cpp:135 -#, fuzzy -msgid "PowerShot G7" -msgstr "Lugar" - -#: src/canonmn.cpp:136 -#, fuzzy -msgid "PowerShot A530" -msgstr "Lugar" - -#: src/canonmn.cpp:137 -msgid "PowerShot SD800 IS / Digital IXUS 850 IS / IXY Digital 900 IS" -msgstr "" - -#: src/canonmn.cpp:138 -msgid "PowerShot SD40 / Digital IXUS i7 / IXY Digital L4" -msgstr "" - -#: src/canonmn.cpp:139 -#, fuzzy -msgid "PowerShot A710 IS" -msgstr "Lugar" - -#: src/canonmn.cpp:140 -#, fuzzy -msgid "PowerShot A640" -msgstr "Lugar" - -#: src/canonmn.cpp:141 -#, fuzzy -msgid "PowerShot A630" -msgstr "Lugar" - -#: src/canonmn.cpp:142 -#, fuzzy -msgid "PowerShot S5 IS" -msgstr "Lugar" - -#: src/canonmn.cpp:143 -#, fuzzy -msgid "PowerShot A460" -msgstr "Lugar" - -#: src/canonmn.cpp:144 -msgid "PowerShot SD850 IS / Digital IXUS 950 IS" -msgstr "" - -#: src/canonmn.cpp:145 -#, fuzzy -msgid "PowerShot A570 IS" -msgstr "Lugar" - -#: src/canonmn.cpp:146 -#, fuzzy -msgid "PowerShot A560" -msgstr "Lugar" - -#: src/canonmn.cpp:147 -msgid "PowerShot SD750 / Digital IXUS 75 / IXY Digital 90" -msgstr "" - -#: src/canonmn.cpp:148 -msgid "PowerShot SD1000 / Digital IXUS 70 / IXY Digital 10" -msgstr "" - -#: src/canonmn.cpp:149 -#, fuzzy -msgid "PowerShot A550" -msgstr "Lugar" - -#: src/canonmn.cpp:150 -#, fuzzy -msgid "PowerShot A450" -msgstr "Lugar" - -#: src/canonmn.cpp:151 -#, fuzzy -msgid "PowerShot Pro90 IS" -msgstr "Lugar" - -#: src/canonmn.cpp:152 -#, fuzzy -msgid "PowerShot G1" -msgstr "Lugar" - -#: src/canonmn.cpp:153 -msgid "PowerShot S100 / Digital IXUS / IXY Digital" -msgstr "" - -#: src/canonmn.cpp:154 -msgid "HV10" -msgstr "" - -#: src/canonmn.cpp:155 -msgid "iVIS DC50" -msgstr "" - -#: src/canonmn.cpp:156 -msgid "iVIS HV20" -msgstr "" - -#: src/canonmn.cpp:157 -msgid "EOS-1D" -msgstr "" - -#: src/canonmn.cpp:158 -msgid "EOS-1DS" -msgstr "" - -#: src/canonmn.cpp:159 -msgid "EOS 10D" -msgstr "" - -#: src/canonmn.cpp:160 -msgid "EOS-1D Mark III" -msgstr "" - -#: src/canonmn.cpp:161 -msgid "EOS Digital Rebel / 300D / Kiss Digital" -msgstr "" - -#: src/canonmn.cpp:162 -msgid "EOS-1D Mark II" -msgstr "" - -#: src/canonmn.cpp:163 -msgid "EOS 20D" -msgstr "" - -#: src/canonmn.cpp:164 -msgid "EOS-1Ds Mark II" -msgstr "" - -#: src/canonmn.cpp:165 -msgid "EOS Digital Rebel XT / 350D / Kiss Digital N" -msgstr "" - -#: src/canonmn.cpp:166 -msgid "EOS 5D" -msgstr "" - -#: src/canonmn.cpp:167 -msgid "EOS-1D Mark II N" -msgstr "" - -#: src/canonmn.cpp:168 -msgid "EOS 30D" -msgstr "" - -#: src/canonmn.cpp:169 -msgid "EOS Digital Rebel XTi / 400D / Kiss Digital X" -msgstr "" - -#: src/canonmn.cpp:170 -msgid "EOS 7D" -msgstr "" - -#: src/canonmn.cpp:171 -msgid "EOS Rebel T1i / 500D / Kiss X3" -msgstr "" - -#: src/canonmn.cpp:172 -msgid "EOS Rebel XS / 1000D / Kiss F" -msgstr "" - -#: src/canonmn.cpp:173 -msgid "EOS 50D" -msgstr "" - -#: src/canonmn.cpp:174 -msgid "EOS Rebel T2i / 550D / Kiss X4" -msgstr "" - -#: src/canonmn.cpp:175 -msgid "EOS-1D Mark IV" -msgstr "" - -#: src/canonmn.cpp:180 -#, fuzzy -msgid "Format 1" -msgstr "Fuente de archivo" - -#: src/canonmn.cpp:181 -#, fuzzy -msgid "Format 2" -msgstr "Fuente de archivo" - -#: src/canonmn.cpp:187 src/nikonmn.cpp:1211 -msgid "On (1)" -msgstr "" - -#: src/canonmn.cpp:188 src/nikonmn.cpp:1212 -msgid "On (2)" -msgstr "" - -#: src/canonmn.cpp:193 src/minoltamn.cpp:1142 src/nikonmn.cpp:136 -#: src/olympusmn.cpp:595 src/olympusmn.cpp:774 src/olympusmn.cpp:839 -#: src/pentaxmn.cpp:548 src/tags.cpp:1452 -msgid "sRGB" -msgstr "sRVA" - -#: src/canonmn.cpp:194 src/canonmn.cpp:1113 src/minoltamn.cpp:359 -#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 -#: src/minoltamn.cpp:1143 src/nikonmn.cpp:137 src/olympusmn.cpp:596 -#: src/olympusmn.cpp:775 src/olympusmn.cpp:840 src/pentaxmn.cpp:549 -#: src/sonymn.cpp:482 src/sonymn.cpp:507 src/tags.cpp:1453 -msgid "Adobe RGB" -msgstr "" - -#: src/canonmn.cpp:199 src/canonmn.cpp:202 src/canonmn.cpp:227 -#: src/canonmn.cpp:228 src/canonmn.cpp:229 src/canonmn.cpp:781 -#: src/canonmn.cpp:783 src/canonmn.cpp:784 src/canonmn.cpp:796 -#: src/canonmn.cpp:805 src/canonmn.cpp:806 src/canonmn.cpp:813 -#: src/canonmn.cpp:883 src/canonmn.cpp:888 src/canonmn.cpp:890 -#: src/canonmn.cpp:892 src/canonmn.cpp:893 src/canonmn.cpp:894 -#: src/canonmn.cpp:895 src/canonmn.cpp:898 src/canonmn.cpp:899 -#: src/canonmn.cpp:900 src/canonmn.cpp:902 src/canonmn.cpp:906 -#: src/canonmn.cpp:907 src/canonmn.cpp:908 src/fujimn.cpp:214 -#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:238 -#: src/nikonmn.cpp:303 src/nikonmn.cpp:457 src/nikonmn.cpp:478 -#: src/nikonmn.cpp:487 src/nikonmn.cpp:533 src/nikonmn.cpp:585 -#: src/nikonmn.cpp:588 src/nikonmn.cpp:591 src/nikonmn.cpp:1003 -#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1495 src/nikonmn.cpp:2554 -#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 -#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 -#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 -#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 -#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 -#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 -#: src/olympusmn.cpp:1039 src/panasonicmn.cpp:239 src/panasonicmn.cpp:247 -#: src/panasonicmn.cpp:252 src/panasonicmn.cpp:260 src/panasonicmn.cpp:262 -#: src/panasonicmn.cpp:280 src/pentaxmn.cpp:323 src/properties.cpp:809 -#: src/properties.cpp:816 src/sonymn.cpp:293 src/sonymn.cpp:312 -#: src/sonymn.cpp:318 src/sonymn.cpp:321 src/sonymn.cpp:330 src/sonymn.cpp:333 -#: src/sonymn.cpp:336 src/sonymn.cpp:339 src/tags.cpp:1414 src/tags.cpp:1427 -#: src/tags.cpp:1533 src/tags.cpp:2565 src/tags.cpp:2678 -msgid "Unknown" -msgstr "Desconocido" - -#: src/canonmn.cpp:200 src/olympusmn.cpp:450 src/sonymn.cpp:286 -#: src/sonymn.cpp:287 -#, fuzzy -msgid "Camera Settings" -msgstr "Ajustes de cámara" - -#: src/canonmn.cpp:200 -#, fuzzy -msgid "Various camera settings" -msgstr "Varios ajustes de cámara" - -#: src/canonmn.cpp:201 src/minoltamn.cpp:538 src/nikonmn.cpp:1347 -#: src/nikonmn.cpp:1372 src/properties.cpp:564 src/tags.cpp:828 -#: src/tags.cpp:1655 -msgid "Focal Length" -msgstr "Distancia focal" - -#: src/canonmn.cpp:203 src/sonymn.cpp:345 -#, fuzzy -msgid "Shot Info" -msgstr "Modo de exposición" - -#: src/canonmn.cpp:203 -#, fuzzy -msgid "Shot information" -msgstr "Posicionamiento YCbCr" - -#: src/canonmn.cpp:204 src/olympusmn.cpp:101 src/olympusmn.cpp:1152 -#: src/sonymn.cpp:124 src/sonymn.cpp:308 src/sonymn.cpp:309 -#, fuzzy -msgid "Panorama" -msgstr "normal" - -# ### context? Panorama = Apaisado, Panorámica -#: src/canonmn.cpp:205 src/datasets.cpp:396 src/properties.cpp:761 -#, fuzzy -msgid "Image Type" -msgstr "Tipo de imágen" - -#: src/canonmn.cpp:205 -#, fuzzy -msgid "Image type" -msgstr "Tipo de imágen" - -#: src/canonmn.cpp:206 src/panasonicmn.cpp:237 -#, fuzzy -msgid "Firmware Version" -msgstr "Versión del Firmware" - -#: src/canonmn.cpp:206 src/panasonicmn.cpp:237 -#, fuzzy -msgid "Firmware version" -msgstr "Versión del Firmware" - -#: src/canonmn.cpp:207 src/canonmn.cpp:1066 src/nikonmn.cpp:869 -#, fuzzy -msgid "File Number" -msgstr "Número del archivo" - -#: src/canonmn.cpp:207 src/nikonmn.cpp:869 -#, fuzzy -msgid "File number" -msgstr "Número del archivo" - -#: src/canonmn.cpp:208 -#, fuzzy -msgid "Owner Name" -msgstr "Propietario" - -#: src/canonmn.cpp:209 src/fujimn.cpp:182 src/nikonmn.cpp:550 -#: src/olympusmn.cpp:741 src/pentaxmn.cpp:1120 src/pentaxmn.cpp:1121 -#: src/sigmamn.cpp:56 -#, fuzzy -msgid "Serial Number" -msgstr "Número Serie" - -#: src/canonmn.cpp:209 src/sigmamn.cpp:57 -#, fuzzy -msgid "Camera serial number" -msgstr "Número serie de la cámara" - -#: src/canonmn.cpp:210 -#, fuzzy -msgid "Camera Info" -msgstr "Retrato" - -#: src/canonmn.cpp:210 -#, fuzzy -msgid "Camera info" -msgstr "Retrato" - -#: src/canonmn.cpp:211 src/canonmn.cpp:223 -#, fuzzy -msgid "Custom Functions" -msgstr "Funciones personalizadas" - -#: src/canonmn.cpp:212 -#, fuzzy -msgid "ModelID" -msgstr "Modelo" - -#: src/canonmn.cpp:212 -#, fuzzy -msgid "Model ID" -msgstr "Modelo" - -#: src/canonmn.cpp:213 src/olympusmn.cpp:219 -#, fuzzy -msgid "Picture Info" -msgstr "Información de imágen" - -#: src/canonmn.cpp:213 -#, fuzzy -msgid "Picture info" -msgstr "Información de imágen" - -#: src/canonmn.cpp:214 -#, fuzzy -msgid "Thumbnail Image Valid Area" -msgstr "Desplazamiento de tira" - -#: src/canonmn.cpp:214 -#, fuzzy -msgid "Thumbnail image valid area" -msgstr "Desplazamiento de tira" - -#: src/canonmn.cpp:215 -#, fuzzy -msgid "Serial Number Format" -msgstr "El número F." - -#: src/canonmn.cpp:215 -#, fuzzy -msgid "Serial number format" -msgstr "El número F." - -#: src/canonmn.cpp:216 src/minoltamn.cpp:2042 src/olympusmn.cpp:110 -#: src/olympusmn.cpp:503 src/pentaxmn.cpp:202 -#, fuzzy -msgid "Super Macro" -msgstr "Macro" - -#: src/canonmn.cpp:216 src/canonmn.cpp:323 src/canonmn.cpp:393 -#: src/olympusmn.cpp:81 -#, fuzzy -msgid "Super macro" -msgstr "Supermacro" - -#: src/canonmn.cpp:217 src/nikonmn.cpp:567 -#, fuzzy -msgid "AF Info" -msgstr "Modo de exposición" - -#: src/canonmn.cpp:217 src/nikonmn.cpp:567 -#, fuzzy -msgid "AF info" -msgstr "Modo de exposición" - -#: src/canonmn.cpp:218 -msgid "Original Decision Data Offset" -msgstr "" - -#: src/canonmn.cpp:218 -msgid "Original decision data offset" -msgstr "" - -#: src/canonmn.cpp:219 -#, fuzzy -msgid "White Balance Table" -msgstr "Tabla de balance de blanco" - -#: src/canonmn.cpp:219 -#, fuzzy -msgid "White balance table" -msgstr "Tabla de balance de blanco" - -#: src/canonmn.cpp:220 -#, fuzzy -msgid "LensModel" -msgstr "Tipo de escena" - -#: src/canonmn.cpp:221 src/olympusmn.cpp:742 src/panasonicmn.cpp:250 -#, fuzzy -msgid "Internal Serial Number" -msgstr "El número F." - -#: src/canonmn.cpp:221 src/olympusmn.cpp:742 -#, fuzzy -msgid "Internal serial number" -msgstr "El número F." - -#: src/canonmn.cpp:222 -msgid "Dust Removal Data" -msgstr "" - -#: src/canonmn.cpp:222 -msgid "Dust removal data" -msgstr "" - -#: src/canonmn.cpp:223 -#, fuzzy -msgid "Custom functions" -msgstr "Funciones personalizadas" - -#: src/canonmn.cpp:224 -#, fuzzy -msgid "Processing Info" -msgstr "Método de sensado" - -#: src/canonmn.cpp:224 -#, fuzzy -msgid "Processing info" -msgstr "Método de sensado" - -#: src/canonmn.cpp:225 -#, fuzzy -msgid "Measured Color" -msgstr "Manual" - -#: src/canonmn.cpp:225 -#, fuzzy -msgid "Measured color" -msgstr "Manual" - -#: src/canonmn.cpp:226 -#, fuzzy -msgid "ColorSpace" -msgstr "Espacio de color" - -#: src/canonmn.cpp:230 -#, fuzzy -msgid "VRD Offset" -msgstr "Suave" - -#: src/canonmn.cpp:230 -#, fuzzy -msgid "VRD offset" -msgstr "Suave" - -#: src/canonmn.cpp:231 -#, fuzzy -msgid "Sensor Info" -msgstr "Ancho de la imagen" - -#: src/canonmn.cpp:231 -#, fuzzy -msgid "Sensor info" -msgstr "Modo de exposición" - -#: src/canonmn.cpp:232 -#, fuzzy -msgid "Color Data" -msgstr "Espacio de color" - -#: src/canonmn.cpp:232 -#, fuzzy -msgid "Color data" -msgstr "Mis colores" - -#: src/canonmn.cpp:234 -#, fuzzy -msgid "Unknown CanonMakerNote tag" -msgstr "etiqueta CanonMakerNote desconocida" - -#: src/canonmn.cpp:250 src/minoltamn.cpp:78 src/minoltamn.cpp:246 -#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2060 -msgid "Economy" -msgstr "Modo económico" - -# ## Economía ? it depends on the context -#: src/canonmn.cpp:251 src/canonmn.cpp:349 src/fujimn.cpp:64 src/fujimn.cpp:84 -#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 -#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 -#: src/nikonmn.cpp:207 src/nikonmn.cpp:428 src/olympusmn.cpp:150 -#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1108 -#: src/olympusmn.cpp:1150 src/panasonicmn.cpp:56 src/panasonicmn.cpp:101 -#: src/panasonicmn.cpp:161 src/panasonicmn.cpp:197 src/pentaxmn.cpp:198 -#: src/pentaxmn.cpp:343 src/pentaxmn.cpp:356 src/pentaxmn.cpp:367 -#: src/sonymn.cpp:134 src/sonymn.cpp:216 src/sonymn.cpp:222 src/tags.cpp:1519 -#: src/tags.cpp:1526 -msgid "Normal" -msgstr "Normal" - -#: src/canonmn.cpp:252 src/minoltamn.cpp:76 src/minoltamn.cpp:244 -#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2004 -#: src/minoltamn.cpp:2058 src/sonymn.cpp:135 -#, fuzzy -msgid "Fine" -msgstr "pulg" - -# ### context? don't understand this. -#: src/canonmn.cpp:253 src/olympusmn.cpp:643 src/pentaxmn.cpp:156 -msgid "RAW" -msgstr "" - -#: src/canonmn.cpp:254 -msgid "Superfine" -msgstr "" - -# ### context? maybe Extrafino -#: src/canonmn.cpp:255 -#, fuzzy -msgid "Normal Movie" -msgstr "Película normal" - -#: src/canonmn.cpp:261 src/canonmn.cpp:357 src/canonmn.cpp:385 -#: src/canonmn.cpp:830 src/canonmn.cpp:1036 src/fujimn.cpp:71 -#: src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 -#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 -#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 -#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1119 -#: src/minoltamn.cpp:1182 src/minoltamn.cpp:1235 src/minoltamn.cpp:1976 -#: src/minoltamn.cpp:2043 src/minoltamn.cpp:2092 src/nikonmn.cpp:81 -#: src/nikonmn.cpp:445 src/olympusmn.cpp:94 src/olympusmn.cpp:156 -#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:605 -#: src/olympusmn.cpp:1196 src/olympusmn.cpp:1202 src/olympusmn.cpp:1203 -#: src/panasonicmn.cpp:64 src/panasonicmn.cpp:77 src/pentaxmn.cpp:56 -#: src/pentaxmn.cpp:211 src/pentaxmn.cpp:311 src/sonymn.cpp:57 -#: src/sonymn.cpp:90 src/sonymn.cpp:105 src/sonymn.cpp:163 src/sonymn.cpp:200 -#: src/sonymn.cpp:499 src/sonymn.cpp:516 src/tags.cpp:1403 src/tags.cpp:1488 -#: src/tags.cpp:1495 -#, fuzzy -msgid "Auto" -msgstr "Auto" - -#: src/canonmn.cpp:263 src/olympusmn.cpp:532 -#, fuzzy -msgid "Red-eye" -msgstr "Ojos Rojos" - -#: src/canonmn.cpp:264 -msgid "Slow sync" -msgstr "Sincronización lenta" - -#: src/canonmn.cpp:265 -#, fuzzy -msgid "Auto + red-eye" -msgstr "Auto + ojos rojos" - -#: src/canonmn.cpp:266 -#, fuzzy -msgid "On + red-eye" -msgstr "Encendido + ojos rojos" - -#: src/canonmn.cpp:267 src/canonmn.cpp:268 src/minoltamn.cpp:1339 -#: src/nikonmn.cpp:904 src/olympusmn.cpp:144 -#, fuzzy -msgid "External" -msgstr "Externo" - -#: src/canonmn.cpp:273 -msgid "Single / timer" -msgstr "" - -#: src/canonmn.cpp:274 src/canonmn.cpp:288 src/canonmn.cpp:720 -#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1097 -#: src/minoltamn.cpp:1149 src/nikonmn.cpp:151 src/nikonmn.cpp:162 -#: src/pentaxmn.cpp:534 -#, fuzzy -msgid "Continuous" -msgstr "Exposición automática" - -#: src/canonmn.cpp:275 src/olympusmn.cpp:103 -#, fuzzy -msgid "Movie" -msgstr "Película" - -#: src/canonmn.cpp:276 -#, fuzzy -msgid "Continuous, speed priority" -msgstr "Exposición automática, Prioridad del obturador" - -#: src/canonmn.cpp:277 -#, fuzzy -msgid "Continuous, low" -msgstr "Exposición automática, obturador lento" - -#: src/canonmn.cpp:278 -#, fuzzy -msgid "Continuous, high" -msgstr "Exposición automática, obturador rápido" - -#: src/canonmn.cpp:283 -msgid "One shot AF" -msgstr "" - -#: src/canonmn.cpp:284 -#, fuzzy -msgid "AI servo AF" -msgstr "Exposición automática" - -#: src/canonmn.cpp:285 -#, fuzzy -msgid "AI focus AF" -msgstr "Exposición automática" - -#: src/canonmn.cpp:286 src/canonmn.cpp:289 src/minoltamn.cpp:374 -#, fuzzy -msgid "Manual focus" -msgstr "Exposición manual" - -#: src/canonmn.cpp:287 src/canonmn.cpp:719 src/sonymn.cpp:231 -msgid "Single" -msgstr "" - -# ## unico? it depends on the context -#: src/canonmn.cpp:290 src/canonmn.cpp:291 src/canonmn.cpp:318 -#: src/canonmn.cpp:392 -#, fuzzy -msgid "Pan focus" -msgstr "Exposición manual" - -#: src/canonmn.cpp:296 src/canonmn.cpp:1018 src/minoltamn.cpp:666 -#: src/minoltamn.cpp:852 src/sonymn.cpp:534 -#, fuzzy -msgid "Large" -msgstr "Promedio" - -# ## large = grande. mean = promedio... context? -#: src/canonmn.cpp:297 src/canonmn.cpp:762 src/canonmn.cpp:1019 -#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1222 -#: src/sonymn.cpp:535 -#, fuzzy -msgid "Medium" -msgstr "Luz de día" - -#: src/canonmn.cpp:298 src/canonmn.cpp:1020 src/minoltamn.cpp:668 -#: src/minoltamn.cpp:854 src/minoltamn.cpp:1223 src/sonymn.cpp:536 -#, fuzzy -msgid "Small" -msgstr "Pequeño" - -#: src/canonmn.cpp:299 src/canonmn.cpp:1021 -#, fuzzy -msgid "Medium 1" -msgstr "Luz de día 1" - -#: src/canonmn.cpp:300 src/canonmn.cpp:1022 -#, fuzzy -msgid "Medium 2" -msgstr "Luz de día 2" - -#: src/canonmn.cpp:301 src/canonmn.cpp:1023 -#, fuzzy -msgid "Medium 3" -msgstr "Luz de día 3" - -#: src/canonmn.cpp:306 -#, fuzzy -msgid "Full auto" -msgstr "Automático" - -#: src/canonmn.cpp:307 src/canonmn.cpp:384 src/canonmn.cpp:708 -#: src/canonmn.cpp:1093 src/fujimn.cpp:110 src/fujimn.cpp:135 -#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 -#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 -#: src/minoltamn.cpp:876 src/minoltamn.cpp:1281 src/nikonmn.cpp:974 -#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 -#: src/panasonicmn.cpp:68 src/panasonicmn.cpp:71 src/panasonicmn.cpp:72 -#: src/panasonicmn.cpp:78 src/panasonicmn.cpp:111 src/pentaxmn.cpp:58 -#: src/pentaxmn.cpp:201 src/pentaxmn.cpp:316 src/pentaxmn.cpp:500 -#: src/pentaxmn.cpp:512 src/sigmamn.cpp:157 src/sonymn.cpp:119 -#: src/sonymn.cpp:164 src/sonymn.cpp:460 src/sonymn.cpp:517 src/tags.cpp:1402 -#: src/tags.cpp:1489 src/tags.cpp:1496 -msgid "Manual" -msgstr "Manual" - -#: src/canonmn.cpp:308 src/canonmn.cpp:1125 src/fujimn.cpp:117 -#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1887 -#: src/minoltamn.cpp:2039 src/olympusmn.cpp:98 src/pentaxmn.cpp:472 -#: src/pentaxmn.cpp:705 src/sonymn.cpp:478 src/sonymn.cpp:527 -#: src/tags.cpp:1502 -msgid "Landscape" -msgstr "Paisaje" - -#: src/canonmn.cpp:309 -#, fuzzy -msgid "Fast shutter" -msgstr "obturador rápido" - -#: src/canonmn.cpp:310 -#, fuzzy -msgid "Slow shutter" -msgstr "obturador lento" - -#: src/canonmn.cpp:311 src/minoltamn.cpp:68 src/minoltamn.cpp:951 -#: src/minoltamn.cpp:2036 src/olympusmn.cpp:99 src/pentaxmn.cpp:478 -#, fuzzy -msgid "Night Scene" -msgstr "Escena nocturna" - -#: src/canonmn.cpp:312 -#, fuzzy -msgid "Gray scale" -msgstr "Escala de gríses" - -#: src/canonmn.cpp:313 src/canonmn.cpp:751 src/canonmn.cpp:1058 -#: src/minoltamn.cpp:61 src/nikonmn.cpp:190 src/nikonmn.cpp:677 -#: src/olympusmn.cpp:615 src/olympusmn.cpp:632 src/olympusmn.cpp:856 -#: src/olympusmn.cpp:871 src/panasonicmn.cpp:149 src/sonymn.cpp:488 -msgid "Sepia" -msgstr "Sepia" - -#: src/canonmn.cpp:314 src/canonmn.cpp:1111 src/canonmn.cpp:1124 -#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 -#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1886 -#: src/minoltamn.cpp:2034 src/olympusmn.cpp:96 src/olympusmn.cpp:613 -#: src/panasonicmn.cpp:102 src/pentaxmn.cpp:471 src/pentaxmn.cpp:704 -#: src/sonymn.cpp:106 src/sonymn.cpp:477 src/sonymn.cpp:523 src/tags.cpp:1503 -msgid "Portrait" -msgstr "Retrato" - -#: src/canonmn.cpp:315 src/fujimn.cpp:118 src/minoltamn.cpp:843 -#: src/minoltamn.cpp:2038 src/panasonicmn.cpp:104 src/sonymn.cpp:524 -#, fuzzy -msgid "Sports" -msgstr "Deportes" - -#: src/canonmn.cpp:316 -#, fuzzy -msgid "Macro / close-up" -msgstr "Macro / Primer plano" - -#: src/canonmn.cpp:317 src/fujimn.cpp:149 -msgid "Black & white" -msgstr "Blanco y Negro" - -#: src/canonmn.cpp:319 src/canonmn.cpp:748 src/olympusmn.cpp:134 -#: src/olympusmn.cpp:610 src/olympusmn.cpp:852 src/panasonicmn.cpp:199 -#: src/sonymn.cpp:476 src/sonymn.cpp:506 -msgid "Vivid" -msgstr "Expresivo" - -#: src/canonmn.cpp:320 src/canonmn.cpp:749 src/canonmn.cpp:1126 -#: src/minoltamn.cpp:1892 src/minoltamn.cpp:1893 src/olympusmn.cpp:621 -#: src/olympusmn.cpp:631 src/olympusmn.cpp:861 src/olympusmn.cpp:870 -#: src/sonymn.cpp:483 src/sonymn.cpp:508 -#, fuzzy -msgid "Neutral" -msgstr "Neutro" - -#: src/canonmn.cpp:321 -#, fuzzy -msgid "Flash off" -msgstr "Sin Flash" - -#: src/canonmn.cpp:322 -#, fuzzy -msgid "Long shutter" -msgstr "obturador largo" - -#: src/canonmn.cpp:324 -#, fuzzy -msgid "Foliage" -msgstr "Follaje" - -#: src/canonmn.cpp:325 src/olympusmn.cpp:106 -#, fuzzy -msgid "Indoor" -msgstr "Interiores" - -#: src/canonmn.cpp:326 src/fujimn.cpp:131 src/olympusmn.cpp:107 -#: src/panasonicmn.cpp:116 src/sonymn.cpp:117 -msgid "Fireworks" -msgstr "Fuegos artificiales" - -#: src/canonmn.cpp:327 src/fujimn.cpp:129 src/olympusmn.cpp:129 -#: src/panasonicmn.cpp:128 src/sonymn.cpp:107 -msgid "Beach" -msgstr "Escena de playa" - -#: src/canonmn.cpp:328 src/canonmn.cpp:846 src/fujimn.cpp:132 -#: src/panasonicmn.cpp:127 src/sonymn.cpp:122 -#, fuzzy -msgid "Underwater" -msgstr "Escena subacuática" - -#: src/canonmn.cpp:329 src/fujimn.cpp:130 src/olympusmn.cpp:130 -#: src/panasonicmn.cpp:118 src/sonymn.cpp:108 -#, fuzzy -msgid "Snow" -msgstr "Nieve" - -#: src/canonmn.cpp:330 -msgid "Kids & pets" -msgstr "Niños y Mascotas" - -#: src/canonmn.cpp:331 -#, fuzzy -msgid "Night SnapShot" -msgstr "Instantánea Nocturna" - -#: src/canonmn.cpp:332 -#, fuzzy -msgid "Digital macro" -msgstr "Zoom digital" - -#: src/canonmn.cpp:333 -#, fuzzy -msgid "My Colors" -msgstr "Colores personalizados" - -# ### probably, it depends on the context -#: src/canonmn.cpp:334 src/minoltamn.cpp:343 -#, fuzzy -msgid "Still image" -msgstr "Foto fija" - -#: src/canonmn.cpp:342 src/canonmn.cpp:343 src/properties.cpp:859 -#: src/properties.cpp:881 src/tags.cpp:1421 src/tags.cpp:1422 -#, fuzzy -msgid "Other" -msgstr "Otros" - -#: src/canonmn.cpp:348 src/canonmn.cpp:763 src/canonmn.cpp:1101 -#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1164 -#: src/minoltamn.cpp:1170 src/minoltamn.cpp:1176 src/minoltamn.cpp:1345 -#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:206 -#: src/olympusmn.cpp:171 src/olympusmn.cpp:1134 src/panasonicmn.cpp:162 -#: src/panasonicmn.cpp:166 src/pentaxmn.cpp:342 src/pentaxmn.cpp:355 -#: src/sonymn.cpp:214 src/tags.cpp:1527 -msgid "Low" -msgstr "Poca luz" - -#: src/canonmn.cpp:350 src/canonmn.cpp:1103 src/fujimn.cpp:85 -#: src/fujimn.cpp:94 src/minoltamn.cpp:1165 src/minoltamn.cpp:1171 -#: src/minoltamn.cpp:1177 src/nikonmn.cpp:71 src/nikonmn.cpp:79 -#: src/nikonmn.cpp:208 src/olympusmn.cpp:169 src/olympusmn.cpp:1136 -#: src/panasonicmn.cpp:55 src/panasonicmn.cpp:163 src/panasonicmn.cpp:168 -#: src/panasonicmn.cpp:169 src/pentaxmn.cpp:344 src/pentaxmn.cpp:357 -#: src/sonymn.cpp:217 src/tags.cpp:1528 -#, fuzzy -msgid "High" -msgstr "Luz de día" - -#: src/canonmn.cpp:355 src/canonmn.cpp:760 src/canonmn.cpp:764 -#: src/canonmn.cpp:769 src/canonmn.cpp:1099 src/nikonmn.cpp:671 -#: src/nikonmn.cpp:686 src/nikonmn.cpp:910 src/nikonmn.cpp:963 -#: src/nikonmn.cpp:1218 src/olympusmn.cpp:620 src/olympusmn.cpp:630 -#: src/sonymn.cpp:129 src/sonymn.cpp:136 src/sonymn.cpp:144 src/sonymn.cpp:181 -#: src/sonymn.cpp:194 src/sonymn.cpp:201 src/sonymn.cpp:209 src/sonymn.cpp:215 -#: src/sonymn.cpp:226 src/sonymn.cpp:232 src/sonymn.cpp:239 -msgid "n/a" -msgstr "" - -#: src/canonmn.cpp:356 -#, fuzzy -msgid "Auto High" -msgstr "Auto / arriba - derecha" - -# ## ? -#: src/canonmn.cpp:374 src/sonymn.cpp:186 -#, fuzzy -msgid "Default" -msgstr "Por defecto" - -#: src/canonmn.cpp:375 src/minoltamn.cpp:265 src/minoltamn.cpp:883 -#: src/minoltamn.cpp:933 src/minoltamn.cpp:1129 src/minoltamn.cpp:1938 -#: src/olympusmn.cpp:492 src/panasonicmn.cpp:110 src/pentaxmn.cpp:306 -#: src/sonymn.cpp:470 src/tags.cpp:1417 -msgid "Spot" -msgstr "Punto" - -#: src/canonmn.cpp:376 src/sigmamn.cpp:168 src/tags.cpp:1415 -msgid "Average" -msgstr "Promedio" - -#: src/canonmn.cpp:377 -#, fuzzy -msgid "Evaluative" -msgstr "creativo" - -#: src/canonmn.cpp:378 src/tags.cpp:1420 -msgid "Partial" -msgstr "Parcial" - -#: src/canonmn.cpp:379 src/minoltamn.cpp:882 -#, fuzzy -msgid "Center weighted" -msgstr "peso centrado" - -#: src/canonmn.cpp:386 -#, fuzzy -msgid "Not known" -msgstr "Desconocido" - -#: src/canonmn.cpp:387 src/canonmn.cpp:776 src/fujimn.cpp:207 -#: src/minoltamn.cpp:847 src/minoltamn.cpp:2041 src/olympusmn.cpp:109 -#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:109 -#: src/panasonicmn.cpp:213 src/panasonicmn.cpp:214 src/panasonicmn.cpp:243 -#: src/pentaxmn.cpp:199 src/pentaxmn.cpp:473 src/sonymn.cpp:390 -#: src/sonymn.cpp:391 src/sonymn.cpp:528 src/tags.cpp:1534 -msgid "Macro" -msgstr "Macro" - -#: src/canonmn.cpp:388 -#, fuzzy -msgid "Very close" -msgstr "Muy próximo" - -#: src/canonmn.cpp:389 -#, fuzzy -msgid "Close" -msgstr "Próximo" - -#: src/canonmn.cpp:390 -#, fuzzy -msgid "Middle range" -msgstr "Rango medio" - -# ### distancia media, or "objetivo a media distancia" could be better here -#: src/canonmn.cpp:391 -#, fuzzy -msgid "Far range" -msgstr "Rango lejano" - -#: src/canonmn.cpp:394 src/pentaxmn.cpp:200 src/tags.cpp:2568 -msgid "Infinity" -msgstr "Infinito" - -#: src/canonmn.cpp:399 -#, fuzzy -msgid "Manual AF point selection" -msgstr "Balance de blanco manual" - -#: src/canonmn.cpp:400 -msgid "None (MF)" -msgstr "Ninguno (Enfoque manual)" - -#: src/canonmn.cpp:401 -#, fuzzy -msgid "Auto-selected" -msgstr "Auto seleccionado" - -#: src/canonmn.cpp:402 src/minoltamn.cpp:287 src/minoltamn.cpp:706 -#: src/minoltamn.cpp:921 src/minoltamn.cpp:1953 src/nikonmn.cpp:103 -#: src/olympusmn.cpp:1491 src/pentaxmn.cpp:222 src/pentaxmn.cpp:237 -#, fuzzy -msgid "Right" -msgstr "Correcto" - -#: src/canonmn.cpp:403 src/canonmn.cpp:741 src/minoltamn.cpp:284 -#: src/minoltamn.cpp:703 src/minoltamn.cpp:1950 src/nikonmn.cpp:99 -#: src/nikonmn.cpp:792 src/nikonmn.cpp:807 src/pentaxmn.cpp:220 -#: src/pentaxmn.cpp:236 src/sigmamn.cpp:169 -#, fuzzy -msgid "Center" -msgstr "Centrado" - -#: src/canonmn.cpp:404 src/minoltamn.cpp:291 src/minoltamn.cpp:710 -#: src/minoltamn.cpp:925 src/minoltamn.cpp:1957 src/nikonmn.cpp:102 -#: src/pentaxmn.cpp:218 src/pentaxmn.cpp:235 -#, fuzzy -msgid "Left" -msgstr "Izquierda" - -#: src/canonmn.cpp:405 -#, fuzzy -msgid "Auto AF point selection" -msgstr "Balance de blanco manual" - -#: src/canonmn.cpp:410 -#, fuzzy -msgid "Easy shooting (Auto)" -msgstr "Modo de métrica (Exposición automática)" - -#: src/canonmn.cpp:411 -#, fuzzy -msgid "Program (P)" -msgstr "Modo de exposición" - -#: src/canonmn.cpp:412 -#, fuzzy -msgid "Shutter priority (Tv)" -msgstr "Modo de prioridad a la velocidad del obturador (Tv)" - -#: src/canonmn.cpp:413 -#, fuzzy -msgid "Aperture priority (Av)" -msgstr "Modo de prioridad a la apertura (Av)" - -#: src/canonmn.cpp:414 -#, fuzzy -msgid "Manual (M)" -msgstr "Manual" - -#: src/canonmn.cpp:415 -msgid "A-DEP" -msgstr "" - -#: src/canonmn.cpp:416 -msgid "M-DEP" -msgstr "" - -#: src/canonmn.cpp:700 src/minoltamn.cpp:297 src/nikonmn.cpp:142 -#, fuzzy -msgid "Did not fire" -msgstr "El flash no disparó" - -#: src/canonmn.cpp:701 src/minoltamn.cpp:298 src/nikonmn.cpp:981 -#: src/tags.cpp:365 -#, fuzzy -msgid "Fired" -msgstr "Disparado" - -#: src/canonmn.cpp:706 src/olympusmn.cpp:1009 -#, fuzzy -msgid "External flash" -msgstr "Flash externo" - -#: src/canonmn.cpp:707 src/olympusmn.cpp:1013 -#, fuzzy -msgid "Internal flash" -msgstr "Flash interno" - -#: src/canonmn.cpp:709 src/olympusmn.cpp:558 src/sonymn.cpp:494 -msgid "TTL" -msgstr "Medición a través de la Lente (TTL)" - -#: src/canonmn.cpp:710 -msgid "A-TTL" -msgstr "" - -#: src/canonmn.cpp:711 -msgid "E-TTL" -msgstr "" - -#: src/canonmn.cpp:712 -msgid "FP sync enabled" -msgstr "" - -#: src/canonmn.cpp:713 -msgid "2nd-curtain sync used" -msgstr "" - -#: src/canonmn.cpp:714 -#, fuzzy -msgid "FP sync used" -msgstr "Punto blanco" - -# ### ? -#: src/canonmn.cpp:725 -#, fuzzy -msgid "Normal AE" -msgstr "Exposición automática normal" - -#: src/canonmn.cpp:726 src/minoltamn.cpp:527 src/minoltamn.cpp:769 -#: src/minoltamn.cpp:1045 src/pentaxmn.cpp:919 src/pentaxmn.cpp:920 -#, fuzzy -msgid "Exposure compensation" -msgstr "Tiempo de exposición" - -# context? tiempo de exposición = Exposure timne. Probably better as "Tiempo de compensación de la exposición" -#: src/canonmn.cpp:727 src/minoltamn.cpp:1575 src/pentaxmn.cpp:1021 -#: src/pentaxmn.cpp:1022 -msgid "AE lock" -msgstr "Bloqueo de la Exposición Automática" - -#: src/canonmn.cpp:728 -#, fuzzy -msgid "AE lock + exposure compensation" -msgstr "Exposición automática bloqueada + Tiempo de exposición" - -#: src/canonmn.cpp:729 -#, fuzzy -msgid "No AE" -msgstr "Sin exposición automatica (Normal)" - -#: src/canonmn.cpp:736 -msgid "On, shot only" -msgstr "" - -#: src/canonmn.cpp:742 src/canonmn.cpp:794 src/nikonmn.cpp:823 -#: src/olympusmn.cpp:1008 -#, fuzzy -msgid "AF Point" -msgstr "Autofocus punto" - -#: src/canonmn.cpp:750 -#, fuzzy -msgid "Smooth" -msgstr "Suave" - -#: src/canonmn.cpp:752 src/nikonmn.cpp:676 -msgid "B&W" -msgstr "B/N" - -#: src/canonmn.cpp:753 src/canonmn.cpp:836 src/canonmn.cpp:1094 -#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 -#: src/minoltamn.cpp:1184 src/minoltamn.cpp:1187 src/minoltamn.cpp:2100 -#: src/pentaxmn.cpp:723 -#, fuzzy -msgid "Custom" -msgstr "Proceso personalizado" - -#: src/canonmn.cpp:754 src/canonmn.cpp:755 -#, fuzzy -msgid "My color data" -msgstr "Mis colores" - -#: src/canonmn.cpp:761 src/pentaxmn.cpp:163 -#, fuzzy -msgid "Full" -msgstr "acción" - -#: src/canonmn.cpp:770 -msgid "sRAW1 (mRAW)" -msgstr "" - -#: src/canonmn.cpp:771 -msgid "sRAW2 (sRAW)" -msgstr "" - -#: src/canonmn.cpp:777 -#, fuzzy -msgid "Selftimer" -msgstr "disparo retardado (Temporizador)" - -#: src/canonmn.cpp:777 src/panasonicmn.cpp:259 -#, fuzzy -msgid "Self timer" -msgstr "disparo retardado (Temporizador)" - -#: src/canonmn.cpp:778 src/fujimn.cpp:186 src/minoltamn.cpp:1484 -#: src/minoltamn.cpp:1485 src/nikonmn.cpp:222 src/nikonmn.cpp:459 -#: src/nikonmn.cpp:527 src/olympusmn.cpp:198 src/panasonicmn.cpp:236 -#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:647 -#: src/sonymn.cpp:648 -#, fuzzy -msgid "Quality" -msgstr "Nivel de la batería" - -# ## context? -#: src/canonmn.cpp:779 src/fujimn.cpp:201 src/minoltamn.cpp:493 -#: src/minoltamn.cpp:762 src/nikonmn.cpp:566 src/olympusmn.cpp:279 -#: src/olympusmn.cpp:670 -#, fuzzy -msgid "Flash Mode" -msgstr "Modo Flash" - -#: src/canonmn.cpp:779 -#, fuzzy -msgid "Flash mode setting" -msgstr "Ajuste del modo flash" - -#: src/canonmn.cpp:780 src/minoltamn.cpp:505 src/minoltamn.cpp:1427 -#: src/olympusmn.cpp:700 src/sigmamn.cpp:59 src/sonymn.cpp:559 -#: src/sonymn.cpp:560 -#, fuzzy -msgid "Drive Mode" -msgstr "Modo de métrica" - -# ### ? -#: src/canonmn.cpp:780 -#, fuzzy -msgid "Drive mode setting" -msgstr "Macro" - -# ### ? -#: src/canonmn.cpp:782 src/fujimn.cpp:210 src/minoltamn.cpp:622 -#: src/minoltamn.cpp:753 src/minoltamn.cpp:1035 src/minoltamn.cpp:1379 -#: src/nikonmn.cpp:474 src/olympusmn.cpp:300 src/olympusmn.cpp:664 -#: src/panasonicmn.cpp:240 src/sonymn.cpp:396 src/sonymn.cpp:397 -#: src/sonymn.cpp:566 src/sonymn.cpp:567 src/sonymn.cpp:672 src/sonymn.cpp:673 -#, fuzzy -msgid "Focus Mode" -msgstr "Modo de enfoque" - -#: src/canonmn.cpp:782 -#, fuzzy -msgid "Focus mode setting" -msgstr "Ajustes del modo de enfoque" - -#: src/canonmn.cpp:785 src/minoltamn.cpp:499 src/minoltamn.cpp:744 -#: src/minoltamn.cpp:987 -#, fuzzy -msgid "Image Size" -msgstr "Tamaño de la imagen" - -#: src/canonmn.cpp:786 -#, fuzzy -msgid "Easy Mode" -msgstr "Flash" - -# ### ? -#: src/canonmn.cpp:786 -#, fuzzy -msgid "Easy shooting mode" -msgstr "Modo de métrica" - -# ### ? -#: src/canonmn.cpp:787 src/minoltamn.cpp:523 src/nikonmn.cpp:255 -#: src/nikonmn.cpp:480 src/nikonmn.cpp:565 src/olympusmn.cpp:207 -#, fuzzy -msgid "Digital Zoom" -msgstr "Relación de zoom digital" - -#: src/canonmn.cpp:787 src/minoltamn.cpp:524 src/pentaxmn.cpp:944 -#: src/pentaxmn.cpp:945 -#, fuzzy -msgid "Digital zoom" -msgstr "Relación de zoom digital" - -#: src/canonmn.cpp:788 src/minoltamn.cpp:386 src/minoltamn.cpp:574 -#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 -#: src/minoltamn.cpp:1017 src/minoltamn.cpp:1018 src/minoltamn.cpp:1415 -#: src/minoltamn.cpp:1416 src/nikonmn.cpp:697 src/olympusmn.cpp:390 -#: src/olympusmn.cpp:800 src/panasonicmn.cpp:257 src/panasonicmn.cpp:268 -#: src/pentaxmn.cpp:850 src/pentaxmn.cpp:950 src/pentaxmn.cpp:951 -#: src/properties.cpp:443 src/properties.cpp:589 src/sigmamn.cpp:89 -#: src/sigmamn.cpp:90 src/sonymn.cpp:324 src/sonymn.cpp:593 src/sonymn.cpp:594 -#: src/sonymn.cpp:699 src/sonymn.cpp:700 src/tags.cpp:1807 -msgid "Contrast" -msgstr "Contraste" - -#: src/canonmn.cpp:788 src/fujimn.cpp:199 src/olympusmn.cpp:391 -#: src/olympusmn.cpp:681 src/olympusmn.cpp:1080 src/panasonicmn.cpp:257 -#, fuzzy -msgid "Contrast setting" -msgstr "Ajuste del contraste" - -#: src/canonmn.cpp:789 src/minoltamn.cpp:387 src/minoltamn.cpp:571 -#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 -#: src/minoltamn.cpp:1020 src/minoltamn.cpp:1021 src/minoltamn.cpp:1418 -#: src/minoltamn.cpp:1419 src/nikonmn.cpp:578 src/nikonmn.cpp:597 -#: src/nikonmn.cpp:699 src/olympusmn.cpp:799 src/olympusmn.cpp:898 -#: src/panasonicmn.cpp:271 src/pentaxmn.cpp:844 src/pentaxmn.cpp:947 -#: src/pentaxmn.cpp:948 src/properties.cpp:461 src/properties.cpp:590 -#: src/sigmamn.cpp:98 src/sigmamn.cpp:99 src/sonymn.cpp:327 src/sonymn.cpp:596 -#: src/sonymn.cpp:597 src/sonymn.cpp:702 src/sonymn.cpp:703 src/tags.cpp:1811 -msgid "Saturation" -msgstr "Saturación" - -#: src/canonmn.cpp:789 src/olympusmn.cpp:1078 -#, fuzzy -msgid "Saturation setting" -msgstr "Ajuste de la saturación" - -#: src/canonmn.cpp:790 src/canonmn.cpp:1134 src/fujimn.cpp:189 -#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 -#: src/minoltamn.cpp:775 src/minoltamn.cpp:1014 src/minoltamn.cpp:1015 -#: src/minoltamn.cpp:1412 src/minoltamn.cpp:1413 src/nikonmn.cpp:696 -#: src/olympusmn.cpp:801 src/panasonicmn.cpp:272 src/pentaxmn.cpp:847 -#: src/pentaxmn.cpp:953 src/pentaxmn.cpp:954 src/properties.cpp:464 -#: src/properties.cpp:591 src/sigmamn.cpp:101 src/sigmamn.cpp:102 -#: src/sonymn.cpp:590 src/sonymn.cpp:591 src/sonymn.cpp:696 src/sonymn.cpp:697 -#: src/tags.cpp:1815 -msgid "Sharpness" -msgstr "Nitidez" - -#: src/canonmn.cpp:790 src/fujimn.cpp:190 src/olympusmn.cpp:682 -#: src/olympusmn.cpp:1081 -#, fuzzy -msgid "Sharpness setting" -msgstr "Nitidez" - -#: src/canonmn.cpp:791 src/minoltamn.cpp:765 src/minoltamn.cpp:1008 -#, fuzzy -msgid "ISO Speed Mode" -msgstr "Velocidad ISO" - -#: src/canonmn.cpp:791 src/minoltamn.cpp:766 src/minoltamn.cpp:1009 -#: src/nikonmn.cpp:217 src/nikonmn.cpp:469 src/nikonmn.cpp:525 -#: src/panasonicmn.cpp:344 -#, fuzzy -msgid "ISO speed setting" -msgstr "ajuste de velocidad ISO" - -#: src/canonmn.cpp:792 src/minoltamn.cpp:508 src/minoltamn.cpp:1005 -#: src/minoltamn.cpp:1394 src/olympusmn.cpp:661 src/properties.cpp:561 -#: src/sigmamn.cpp:77 src/sonymn.cpp:575 src/sonymn.cpp:576 src/sonymn.cpp:681 -#: src/sonymn.cpp:682 src/tags.cpp:825 src/tags.cpp:1646 -msgid "Metering Mode" -msgstr "Modo de métrica (Exposición automática)" - -#: src/canonmn.cpp:792 -#, fuzzy -msgid "Metering mode setting" -msgstr "ajuste del modo de Exposición automática" - -#: src/canonmn.cpp:793 -#, fuzzy -msgid "Focus Type" -msgstr "Tipo de enfoque" - -#: src/canonmn.cpp:793 -#, fuzzy -msgid "Focus type setting" -msgstr "Ajuste del tipo de enfoque" - -#: src/canonmn.cpp:794 -#, fuzzy -msgid "AF point selected" -msgstr "Autofocus punto seleccionado" - -#: src/canonmn.cpp:795 src/properties.cpp:550 src/sonymn.cpp:632 -#: src/sonymn.cpp:633 src/sonymn.cpp:708 src/sonymn.cpp:709 src/tags.cpp:799 -#: src/tags.cpp:1548 -#, fuzzy -msgid "Exposure Program" -msgstr "Programa de exposición" - -#: src/canonmn.cpp:795 -#, fuzzy -msgid "Exposure mode setting" -msgstr "Ajuste del modo de exposición" - -#: src/canonmn.cpp:797 src/nikonmn.cpp:562 src/olympusmn.cpp:745 -#: src/panasonicmn.cpp:276 -#, fuzzy -msgid "Lens Type" -msgstr "Tipo de lente" - -#: src/canonmn.cpp:797 src/nikonmn.cpp:562 src/olympusmn.cpp:745 -#: src/panasonicmn.cpp:276 src/pentaxmn.cpp:1008 src/pentaxmn.cpp:1009 -#, fuzzy -msgid "Lens type" -msgstr "Tipo de lente" - -#: src/canonmn.cpp:798 src/nikonmn.cpp:563 src/properties.cpp:633 -#, fuzzy -msgid "Lens" -msgstr "Lente" - -#: src/canonmn.cpp:798 -msgid "" -"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " -"per mm" -msgstr "" -"longitud focal 'larga' y 'corta' (en 'unidades focales') y 'unidades focales " -"por mm' " - -#: src/canonmn.cpp:799 -#, fuzzy -msgid "Short Focal" -msgstr "Lugar" - -#: src/canonmn.cpp:799 -#, fuzzy -msgid "Short focal" -msgstr "Lugar" - -#: src/canonmn.cpp:800 -#, fuzzy -msgid "Focal Units" -msgstr "Distancia focal" - -#: src/canonmn.cpp:800 -#, fuzzy -msgid "Focal units" -msgstr "Distancia focal" - -# ### can be improved, '()'? -#: src/canonmn.cpp:801 src/minoltamn.cpp:553 -#, fuzzy -msgid "Max Aperture" -msgstr "Apertura máxima" - -#: src/canonmn.cpp:801 src/minoltamn.cpp:554 -#, fuzzy -msgid "Max aperture" -msgstr "apertura máxima" - -#: src/canonmn.cpp:802 -#, fuzzy -msgid "Min Aperture" -msgstr "Apertura mínima" - -#: src/canonmn.cpp:802 -#, fuzzy -msgid "Min aperture" -msgstr "apertura mínima" - -#: src/canonmn.cpp:803 -#, fuzzy -msgid "Flash Activity" -msgstr "Actividad del Flash" - -#: src/canonmn.cpp:803 -#, fuzzy -msgid "Flash activity" -msgstr "Actividad del Flash" - -#: src/canonmn.cpp:804 -#, fuzzy -msgid "Flash Details" -msgstr "Detalles del Flash" - -#: src/canonmn.cpp:804 -#, fuzzy -msgid "Flash details" -msgstr "Detalles del Flash" - -#: src/canonmn.cpp:807 -#, fuzzy -msgid "Focus Continuous" -msgstr "Exposición automática" - -#: src/canonmn.cpp:807 -#, fuzzy -msgid "Focus continuous setting" -msgstr "Ajuste del modo de exposición automática" - -#: src/canonmn.cpp:808 -#, fuzzy -msgid "AESetting" -msgstr "Velocidad ISO" - -#: src/canonmn.cpp:808 -#, fuzzy -msgid "AE setting" -msgstr "Velocidad ISO" - -#: src/canonmn.cpp:809 src/minoltamn.cpp:147 src/minoltamn.cpp:814 -#: src/minoltamn.cpp:1071 src/minoltamn.cpp:1562 src/nikonmn.cpp:599 -#: src/olympusmn.cpp:703 src/olympusmn.cpp:1016 src/panasonicmn.cpp:242 -#: src/sonymn.cpp:372 src/sonymn.cpp:635 src/sonymn.cpp:636 -#, fuzzy -msgid "Image Stabilization" -msgstr "Orientación" - -# ### don't understand this. Context? -#: src/canonmn.cpp:809 src/minoltamn.cpp:148 src/minoltamn.cpp:815 -#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1563 src/nikonmn.cpp:599 -#: src/olympusmn.cpp:703 src/olympusmn.cpp:1016 src/panasonicmn.cpp:242 -#: src/sonymn.cpp:373 -#, fuzzy -msgid "Image stabilization" -msgstr "Orientación" - -# ### ? -#: src/canonmn.cpp:810 -#, fuzzy -msgid "Display Aperture" -msgstr "Apertura" - -#: src/canonmn.cpp:810 -#, fuzzy -msgid "Display aperture" -msgstr "apertura" - -#: src/canonmn.cpp:811 -#, fuzzy -msgid "Zoom Source Width" -msgstr "Ancho de la imagen ampliada" - -# ### can be improved -#: src/canonmn.cpp:811 -#, fuzzy -msgid "Zoom source width" -msgstr "Ancho de la imagen" - -#: src/canonmn.cpp:812 -#, fuzzy -msgid "Zoom Target Width" -msgstr "Ancho de la imagen" - -# ### ? -#: src/canonmn.cpp:812 -#, fuzzy -msgid "Zoom target width" -msgstr "Ancho de la imagen" - -#: src/canonmn.cpp:814 -#, fuzzy -msgid "Spot Metering Mode" -msgstr "Modo de métrica (Exposición automática)" - -#: src/canonmn.cpp:814 -#, fuzzy -msgid "Spot metering mode" -msgstr "El modo de la métrica." - -#: src/canonmn.cpp:815 -#, fuzzy -msgid "Photo Effect" -msgstr "Espacio de color" - -#: src/canonmn.cpp:815 -#, fuzzy -msgid "Photo effect" -msgstr "Espacio de color" - -#: src/canonmn.cpp:816 -#, fuzzy -msgid "Manual Flash Output" -msgstr "Exposición manual" - -#: src/canonmn.cpp:816 -#, fuzzy -msgid "Manual flash output" -msgstr "Exposición manual" - -#: src/canonmn.cpp:817 -#, fuzzy -msgid "Color Tone" -msgstr "Tonos de color" - -#: src/canonmn.cpp:817 -#, fuzzy -msgid "Color tone" -msgstr "Tonos de color" - -#: src/canonmn.cpp:818 -msgid "SRAW Quality Tone" -msgstr "" - -#: src/canonmn.cpp:818 -#, fuzzy -msgid "SRAW quality" -msgstr "Calidad de imágen" - -#: src/canonmn.cpp:820 -#, fuzzy -msgid "Unknown Canon Camera Settings 1 tag" -msgstr "Contraste" - -#: src/canonmn.cpp:831 -#, fuzzy -msgid "Sunny" -msgstr "Soleado" - -#: src/canonmn.cpp:832 src/fujimn.cpp:73 src/minoltamn.cpp:220 -#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1194 -#: src/minoltamn.cpp:2095 src/nikonmn.cpp:450 src/olympusmn.cpp:1041 -#: src/panasonicmn.cpp:66 src/pentaxmn.cpp:321 src/sonymn.cpp:166 -#, fuzzy -msgid "Cloudy" -msgstr "Nublado" - -#: src/canonmn.cpp:833 src/minoltamn.cpp:221 src/minoltamn.cpp:686 -#: src/minoltamn.cpp:872 src/minoltamn.cpp:1196 src/minoltamn.cpp:2097 -#: src/pentaxmn.cpp:315 -#, fuzzy -msgid "Tungsten" -msgstr "luz de bombilla incandescente (tungsteno)" - -#: src/canonmn.cpp:834 src/minoltamn.cpp:223 src/minoltamn.cpp:687 -#: src/minoltamn.cpp:873 src/minoltamn.cpp:1197 src/minoltamn.cpp:2099 -#: src/nikonmn.cpp:449 src/pentaxmn.cpp:314 src/tags.cpp:1429 -msgid "Fluorescent" -msgstr "iluminación con fluorescente" - -#: src/canonmn.cpp:837 src/minoltamn.cpp:57 src/minoltamn.cpp:1890 -#: src/sonymn.cpp:481 -#, fuzzy -msgid "Black & White" -msgstr "Blanco/Negro" - -#: src/canonmn.cpp:838 src/minoltamn.cpp:684 src/minoltamn.cpp:871 -#: src/minoltamn.cpp:1195 src/minoltamn.cpp:2096 src/olympusmn.cpp:1040 -#: src/pentaxmn.cpp:313 src/tags.cpp:1434 -msgid "Shade" -msgstr "Sombra" - -#: src/canonmn.cpp:839 -#, fuzzy -msgid "Manual Temperature (Kelvin)" -msgstr "Temperatura de color manual (Kelvin)" - -#: src/canonmn.cpp:840 -msgid "PC Set 1" -msgstr "Ajuste PC 1" - -#: src/canonmn.cpp:841 -msgid "PC Set 2" -msgstr "Ajuste PC 2" - -#: src/canonmn.cpp:842 -msgid "PC Set 3" -msgstr "Ajuste PC 13" - -#: src/canonmn.cpp:843 -#, fuzzy -msgid "Daylight Fluorescent" -msgstr "Fluorescente luz de día" - -#: src/canonmn.cpp:844 src/properties.cpp:791 -#, fuzzy -msgid "Custom 1" -msgstr "Personalizado 1" - -#: src/canonmn.cpp:845 src/minoltamn.cpp:225 src/properties.cpp:792 -#, fuzzy -msgid "Custom 2" -msgstr "Personalizado 2" - -#: src/canonmn.cpp:847 src/canonmn.cpp:848 src/minoltamn.cpp:226 -#: src/properties.cpp:793 -#, fuzzy -msgid "Custom 3" -msgstr "Proceso personalizado" - -#: src/canonmn.cpp:849 -#, fuzzy -msgid "PC Set 4" -msgstr "Ajuste PC 1" - -#: src/canonmn.cpp:850 -#, fuzzy -msgid "PC Set 5" -msgstr "Ajuste PC 1" - -#: src/canonmn.cpp:855 src/canonmn.cpp:974 src/canonmn.cpp:982 -#, fuzzy -msgid "left" -msgstr "izquierda" - -#: src/canonmn.cpp:856 src/canonmn.cpp:971 src/canonmn.cpp:983 -#, fuzzy -msgid "center" -msgstr "centro" - -#: src/canonmn.cpp:857 src/canonmn.cpp:968 src/canonmn.cpp:984 -#, fuzzy -msgid "right" -msgstr "derecho" - -#: src/canonmn.cpp:884 -#, fuzzy -msgid "ISO Speed Used" -msgstr "Velocidad ISO utilizada" - -#: src/canonmn.cpp:884 -#, fuzzy -msgid "ISO speed used" -msgstr "Velocidad ISO utilizada" - -#: src/canonmn.cpp:885 -msgid "Measured EV" -msgstr "" - -#: src/canonmn.cpp:886 -#, fuzzy -msgid "Target Aperture" -msgstr "Apertura" - -#: src/canonmn.cpp:887 -#, fuzzy -msgid "Target Shutter Speed" -msgstr "Velocidad del obturador" - -#: src/canonmn.cpp:887 -#, fuzzy -msgid "Target shutter speed" -msgstr "Velocidad del obturador" - -#: src/canonmn.cpp:889 src/fujimn.cpp:192 src/minoltamn.cpp:177 -#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:993 -#: src/minoltamn.cpp:1376 src/nikonmn.cpp:225 src/nikonmn.cpp:471 -#: src/nikonmn.cpp:528 src/olympusmn.cpp:330 src/olympusmn.cpp:880 -#: src/panasonicmn.cpp:238 src/properties.cpp:473 src/properties.cpp:582 -#: src/sigmamn.cpp:71 src/sonymn.cpp:289 src/tags.cpp:1785 -msgid "White Balance" -msgstr "Balance de blanco" - -#: src/canonmn.cpp:889 src/fujimn.cpp:193 src/minoltamn.cpp:1443 -#: src/panasonicmn.cpp:238 -#, fuzzy -msgid "White balance setting" -msgstr "ajuste de balance de blanco" - -#: src/canonmn.cpp:891 -#, fuzzy -msgid "Sequence" -msgstr "Apertura (número F)" - -#: src/canonmn.cpp:891 -msgid "Sequence number (if in a continuous burst)" -msgstr "Número de secuencia (si estamos en modo ráfaga)" - -# ## the word secuence is ambiguous to me here, context? -#: src/canonmn.cpp:896 -#, fuzzy -msgid "AF Point Used" -msgstr "Autofocus punto usado" - -#: src/canonmn.cpp:896 -#, fuzzy -msgid "AF point used" -msgstr "Autofocus punto usado" - -#: src/canonmn.cpp:897 src/olympusmn.cpp:372 -#, fuzzy -msgid "Flash Bias" -msgstr "Ajuste de flash" - -#: src/canonmn.cpp:901 src/properties.cpp:560 src/tags.cpp:824 -#: src/tags.cpp:1643 -msgid "Subject Distance" -msgstr "Distancia al sujeto" - -#: src/canonmn.cpp:901 -#, fuzzy -msgid "Subject distance (units are not clear)" -msgstr "Rango de distancia al sujeto (unidades no claras)." - -#: src/canonmn.cpp:903 src/olympusmn.cpp:273 src/properties.cpp:556 -#: src/tags.cpp:820 -#, fuzzy -msgid "Aperture Value" -msgstr "Apertura del diafragma (valor)" - -#: src/canonmn.cpp:904 src/properties.cpp:555 src/tags.cpp:819 -#, fuzzy -msgid "Shutter Speed Value" -msgstr "Velocidad del obturador" - -#: src/canonmn.cpp:904 src/tags.cpp:1623 -msgid "Shutter speed" -msgstr "Velocidad del obturador" - -#: src/canonmn.cpp:905 -msgid "Measured EV 2" -msgstr "" - -#: src/canonmn.cpp:910 -#, fuzzy -msgid "Unknown Canon Camera Settings 2 tag" -msgstr "Versión Exif" - -# ### ? -#: src/canonmn.cpp:920 src/olympusmn.cpp:1164 -#, fuzzy -msgid "Left to right" -msgstr "De izquierda a derecha" - -#: src/canonmn.cpp:921 src/olympusmn.cpp:1165 -#, fuzzy -msgid "Right to left" -msgstr "de derecha a izquiera" - -#: src/canonmn.cpp:922 src/olympusmn.cpp:1166 -#, fuzzy -msgid "Bottom to top" -msgstr "de abajo a arriba" - -#: src/canonmn.cpp:923 src/olympusmn.cpp:1167 -#, fuzzy -msgid "Top to bottom" -msgstr "de arriba a abajo" - -#: src/canonmn.cpp:924 -msgid "2x2 matrix (Clockwise)" -msgstr "matriz 2x2 (en sentido de las agujas del reloj)" - -#: src/canonmn.cpp:929 -#, fuzzy -msgid "Panorama Frame" -msgstr "normal" - -#: src/canonmn.cpp:929 -#, fuzzy -msgid "Panorama frame number" -msgstr "ID único de imagen" - -#: src/canonmn.cpp:930 -#, fuzzy -msgid "Panorama Direction" -msgstr "Descripción de la imagen" - -# ## context? -#: src/canonmn.cpp:930 -#, fuzzy -msgid "Panorama direction" -msgstr "Descripción de la imagen" - -# ## context? -#: src/canonmn.cpp:932 -#, fuzzy -msgid "Unknown Canon Panorama tag" -msgstr "Etiqueta Canon Panorama desconocida" - -#: src/canonmn.cpp:942 src/canonmn.cpp:1072 src/minoltamn.cpp:807 -#: src/minoltamn.cpp:1068 src/minoltamn.cpp:1493 src/nikonmn.cpp:579 -#: src/olympusmn.cpp:438 src/olympusmn.cpp:602 src/olympusmn.cpp:685 -#: src/olympusmn.cpp:804 src/olympusmn.cpp:819 src/olympusmn.cpp:889 -#: src/olympusmn.cpp:974 -#, fuzzy -msgid "Noise Reduction" -msgstr "El flash disparó, modo de reducción de ruido" - -#: src/canonmn.cpp:942 -#, fuzzy -msgid "Long exposure noise reduction" -msgstr "" -"El flash disparó, modo de reducción de ruido en exposiciones prolongadas" - -#: src/canonmn.cpp:943 -#, fuzzy -msgid "Shutter Ae Lock" -msgstr "Obturador con bloqueo de exposición automática" - -#: src/canonmn.cpp:943 -#, fuzzy -msgid "Shutter/AE lock buttons" -msgstr "obturador" - -#: src/canonmn.cpp:944 -msgid "Mirror Lockup" -msgstr "" - -#: src/canonmn.cpp:944 -msgid "Mirror lockup" -msgstr "" - -#: src/canonmn.cpp:945 src/sonymn.cpp:650 src/sonymn.cpp:651 -#, fuzzy -msgid "Exposure Level Increments" -msgstr "Incrementos en nivel de exposición" - -#: src/canonmn.cpp:945 -msgid "Tv/Av and exposure level" -msgstr "Tv/Av y nivel de exposición" - -#: src/canonmn.cpp:946 src/minoltamn.cpp:1520 -#, fuzzy -msgid "AF Assist" -msgstr "Asistencia Autofocus centrado" - -#: src/canonmn.cpp:946 -msgid "AF assist light" -msgstr "Apoyo a Autofocus claro" - -#: src/canonmn.cpp:947 -#, fuzzy -msgid "Flash Sync Speed Av" -msgstr "Flash" - -# ### ? -#: src/canonmn.cpp:947 -#, fuzzy -msgid "Shutter speed in Av mode" -msgstr "Velocidad del obturador" - -#: src/canonmn.cpp:948 -#, fuzzy -msgid "AEB Sequence" -msgstr "El número F." - -#: src/canonmn.cpp:948 -msgid "AEB sequence/auto cancellation" -msgstr "secuencia AEB / autocancelación" - -#: src/canonmn.cpp:949 -#, fuzzy -msgid "Shutter Curtain Sync" -msgstr "obturador" - -# ### incomplete -#: src/canonmn.cpp:949 -#, fuzzy -msgid "Shutter curtain sync" -msgstr "Prioridad del obturador" - -#: src/canonmn.cpp:950 -#, fuzzy -msgid "Lens AF Stop Button" -msgstr "Espacio de color" - -# ### don't understand... context? -#: src/canonmn.cpp:950 -#, fuzzy -msgid "Lens AF stop button Fn. Switch" -msgstr "Espacio de color" - -#: src/canonmn.cpp:951 -#, fuzzy -msgid "Fill Flash Auto Reduction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/canonmn.cpp:951 -msgid "Auto reduction of fill flash" -msgstr "Auto reducción del flash de relleno" - -# ### can be improved probably -#: src/canonmn.cpp:952 -msgid "Menu Button Return" -msgstr "Volver al menú" - -#: src/canonmn.cpp:952 -msgid "Menu button return position" -msgstr "" - -#: src/canonmn.cpp:953 -#, fuzzy -msgid "Set Button Function" -msgstr "Proceso personalizado" - -#: src/canonmn.cpp:953 -msgid "SET button func. when shooting" -msgstr "" - -#: src/canonmn.cpp:954 -#, fuzzy -msgid "Sensor Cleaning" -msgstr "Copyright" - -# ### ? -#: src/canonmn.cpp:954 -#, fuzzy -msgid "Sensor cleaning" -msgstr "Copyright" - -# ### ? -#: src/canonmn.cpp:955 -msgid "Superimposed Display" -msgstr "Enfoque en imágenes superpuestas" - -#: src/canonmn.cpp:955 -msgid "Superimposed display" -msgstr "Enfoque en imágenes superpuestas" - -#: src/canonmn.cpp:956 -msgid "Shutter Release No CF Card" -msgstr "" - -#: src/canonmn.cpp:956 -msgid "Shutter Release W/O CF Card" -msgstr "" - -#: src/canonmn.cpp:958 -#, fuzzy -msgid "Unknown Canon Custom Function tag" -msgstr "Versión Exif" - -# ###? -#: src/canonmn.cpp:969 -#, fuzzy -msgid "mid-right" -msgstr "Copyright" - -# ### ? -#: src/canonmn.cpp:970 src/canonmn.cpp:987 -#, fuzzy -msgid "bottom" -msgstr "fondo" - -#: src/canonmn.cpp:972 src/canonmn.cpp:979 -#, fuzzy -msgid "top" -msgstr "arriba" - -#: src/canonmn.cpp:973 -#, fuzzy -msgid "mid-left" -msgstr "abajo - izquierda" - -#: src/canonmn.cpp:980 -#, fuzzy -msgid "upper-left" -msgstr "arriba - izquierda" - -#: src/canonmn.cpp:981 -#, fuzzy -msgid "upper-right" -msgstr "arriba - derecha" - -#: src/canonmn.cpp:985 -#, fuzzy -msgid "lower-left" -msgstr "arriba - izquierda" - -#: src/canonmn.cpp:986 -#, fuzzy -msgid "lower-right" -msgstr "Copyright" - -# ### ? -#: src/canonmn.cpp:992 src/olympusmn.cpp:225 src/olympusmn.cpp:405 -#: src/panasonicmn.cpp:341 src/properties.cpp:480 src/tags.cpp:415 -msgid "Image Width" -msgstr "Ancho de la imagen" - -#: src/canonmn.cpp:992 src/olympusmn.cpp:226 src/olympusmn.cpp:406 -#: src/panasonicmn.cpp:341 src/tags.cpp:2103 -#, fuzzy -msgid "Image width" -msgstr "Ancho de la imagen" - -#: src/canonmn.cpp:993 src/olympusmn.cpp:228 src/olympusmn.cpp:408 -#: src/panasonicmn.cpp:340 -#, fuzzy -msgid "Image Height" -msgstr "Longitud de la imagen" - -#: src/canonmn.cpp:993 src/olympusmn.cpp:229 src/olympusmn.cpp:409 -#: src/panasonicmn.cpp:340 src/tags.cpp:2106 -#, fuzzy -msgid "Image height" -msgstr "Longitud de la imagen" - -#: src/canonmn.cpp:994 -#, fuzzy -msgid "Image Width As Shot" -msgstr "Ancho de la imagen" - -# ### probably right... context? -#: src/canonmn.cpp:994 -#, fuzzy -msgid "Image width (as shot)" -msgstr "Ancho de la imagen" - -#: src/canonmn.cpp:995 -#, fuzzy -msgid "Image Height As Shot" -msgstr "Longitud de la imagen" - -#: src/canonmn.cpp:995 -#, fuzzy -msgid "Image height (as shot)" -msgstr "Longitud de la imagen" - -#: src/canonmn.cpp:996 src/nikonmn.cpp:848 -#, fuzzy -msgid "AF Points Used" -msgstr "Autofocus Punto blanco" - -#: src/canonmn.cpp:996 src/nikonmn.cpp:848 -#, fuzzy -msgid "AF points used" -msgstr "Autofocus Punto blanco" - -#: src/canonmn.cpp:997 -#, fuzzy -msgid "AF Points Used 20D" -msgstr "Punto blanco" - -#: src/canonmn.cpp:997 -#, fuzzy -msgid "AF points used (20D)" -msgstr "Punto blanco" - -#: src/canonmn.cpp:999 -#, fuzzy -msgid "Unknown Canon Picture Info tag" -msgstr "Desconocido" - -#: src/canonmn.cpp:1010 -msgid "AEB" -msgstr "" - -#: src/canonmn.cpp:1011 -msgid "FEB" -msgstr "" - -#: src/canonmn.cpp:1012 src/minoltamn.cpp:511 src/nikonmn.cpp:767 -#: src/nikonmn.cpp:1136 src/nikonmn.cpp:1196 src/nikonmn.cpp:1232 -#, fuzzy -msgid "ISO" -msgstr "Modo de exposición" - -#: src/canonmn.cpp:1013 -#, fuzzy -msgid "WB" -msgstr "A" - -#: src/canonmn.cpp:1024 -msgid "Postcard" -msgstr "Postal" - -#: src/canonmn.cpp:1025 -msgid "Widescreen" -msgstr "Pantalla ancha" - -#: src/canonmn.cpp:1026 -#, fuzzy -msgid "Medium Movie" -msgstr "Luz de día" - -#: src/canonmn.cpp:1027 -#, fuzzy -msgid "Small Movie" -msgstr "Modelo" - -# ### ? -#: src/canonmn.cpp:1033 -msgid "On 1" -msgstr "" - -# ### ? -#: src/canonmn.cpp:1034 -#, fuzzy -msgid "On 2" -msgstr "Modo de exposición" - -#: src/canonmn.cpp:1042 -msgid "On (shift AB)" -msgstr "" - -#: src/canonmn.cpp:1043 -msgid "On (shift GM)" -msgstr "" - -#: src/canonmn.cpp:1049 src/nikonmn.cpp:667 src/nikonmn.cpp:680 -#: src/nikonmn.cpp:995 src/olympusmn.cpp:622 src/olympusmn.cpp:862 -msgid "Yellow" -msgstr "Amarillo" - -#: src/canonmn.cpp:1050 src/nikonmn.cpp:668 src/olympusmn.cpp:623 -#: src/olympusmn.cpp:863 -#, fuzzy -msgid "Orange" -msgstr "Naranja" - -# ##context? previously "Rango de transferencia" -#: src/canonmn.cpp:1051 src/nikonmn.cpp:669 src/nikonmn.cpp:679 -#: src/nikonmn.cpp:993 src/olympusmn.cpp:624 src/olympusmn.cpp:864 -#, fuzzy -msgid "Red" -msgstr "Balance de rojo" - -#: src/canonmn.cpp:1052 src/canonmn.cpp:1061 src/nikonmn.cpp:670 -#: src/nikonmn.cpp:681 src/olympusmn.cpp:625 src/olympusmn.cpp:635 -#: src/olympusmn.cpp:865 src/olympusmn.cpp:874 -#, fuzzy -msgid "Green" -msgstr "Verde" - -#: src/canonmn.cpp:1059 src/nikonmn.cpp:683 src/nikonmn.cpp:994 -#: src/olympusmn.cpp:633 src/olympusmn.cpp:872 -#, fuzzy -msgid "Blue" -msgstr "Azul" - -#: src/canonmn.cpp:1060 src/olympusmn.cpp:634 src/olympusmn.cpp:873 -msgid "Purple" -msgstr "Púrpura" - -#: src/canonmn.cpp:1067 -#, fuzzy -msgid "Bracket Mode" -msgstr "modo horquillado (Bracket)" - -#: src/canonmn.cpp:1068 -#, fuzzy -msgid "Bracket Value" -msgstr "acción" - -#: src/canonmn.cpp:1069 -#, fuzzy -msgid "Bracket Shot Number" -msgstr "número de disparos en modo horquillado (Bracket)" - -#: src/canonmn.cpp:1070 -#, fuzzy -msgid "Raw Jpg Quality" -msgstr "Ancho de la imagen" - -# ### ? -#: src/canonmn.cpp:1071 -#, fuzzy -msgid "Raw Jpg Size" -msgstr "Ancho de la imagen" - -# ### ? tamaño crudo de jpg? -#: src/canonmn.cpp:1073 -#, fuzzy -msgid "WB Bracket Mode" -msgstr "acción" - -# ### ? -#: src/canonmn.cpp:1074 -#, fuzzy -msgid "WB Bracket Value AB" -msgstr "Balance de blanco" - -# ### not related, context? -#: src/canonmn.cpp:1075 -#, fuzzy -msgid "WB Bracket Value GM" -msgstr "Balance de blanco" - -#: src/canonmn.cpp:1076 src/nikonmn.cpp:701 -#, fuzzy -msgid "Filter Effect" -msgstr "Espacio de color" - -# ###? filter effect = color space??? -#: src/canonmn.cpp:1077 src/nikonmn.cpp:702 -#, fuzzy -msgid "Toning Effect" -msgstr "Espacio de color" - -#: src/canonmn.cpp:1078 -#, fuzzy -msgid "Macro Magnification" -msgstr "Versión Exif" - -#: src/canonmn.cpp:1078 -#, fuzzy -msgid "Macro magnification" -msgstr "Versión Exif" - -#: src/canonmn.cpp:1079 -msgid "Live View Shooting" -msgstr "" - -# ### ? -#: src/canonmn.cpp:1079 -#, fuzzy -msgid "Live view shooting" -msgstr "Macro" - -#: src/canonmn.cpp:1080 -#, fuzzy -msgid "Flash Exposure Lock" -msgstr "Tiempo de exposición" - -#: src/canonmn.cpp:1080 -#, fuzzy -msgid "Flash exposure lock" -msgstr "Tiempo de exposición" - -# ###? toning effect = color space??? -#: src/canonmn.cpp:1082 -#, fuzzy -msgid "Unknown Canon File Info tag" -msgstr "Desconocido" - -# don't understand well the context -#: src/canonmn.cpp:1092 src/canonmn.cpp:1102 src/canonmn.cpp:1110 -#: src/canonmn.cpp:1123 src/fujimn.cpp:147 src/fujimn.cpp:154 -#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1135 -#: src/minoltamn.cpp:1221 src/minoltamn.cpp:1884 src/minoltamn.cpp:1973 -#: src/minoltamn.cpp:2007 src/minoltamn.cpp:2033 src/minoltamn.cpp:2059 -#: src/olympusmn.cpp:93 src/olympusmn.cpp:1135 src/panasonicmn.cpp:167 -#: src/panasonicmn.cpp:174 src/panasonicmn.cpp:204 src/pentaxmn.cpp:470 -#: src/sonymn.cpp:150 src/sonymn.cpp:475 src/sonymn.cpp:505 src/tags.cpp:1501 -msgid "Standard" -msgstr "Estándar" - -#: src/canonmn.cpp:1100 -#, fuzzy -msgid "Lowest" -msgstr "arriba - izquierda" - -#: src/canonmn.cpp:1104 -#, fuzzy -msgid "Highest" -msgstr "Luz de día" - -#: src/canonmn.cpp:1112 -#, fuzzy -msgid "High Saturation" -msgstr "Saturación" - -#: src/canonmn.cpp:1114 -#, fuzzy -msgid "Low Saturation" -msgstr "Saturación" - -#: src/canonmn.cpp:1115 -#, fuzzy -msgid "CM Set 1" -msgstr "Ajuste PC 1" - -#: src/canonmn.cpp:1116 -#, fuzzy -msgid "CM Set 2" -msgstr "Ajuste PC 2" - -#: src/canonmn.cpp:1117 -msgid "User Def. 1" -msgstr "" - -#: src/canonmn.cpp:1118 -msgid "User Def. 2" -msgstr "" - -#: src/canonmn.cpp:1119 -msgid "User Def. 3" -msgstr "" - -#: src/canonmn.cpp:1120 -msgid "PC 1" -msgstr "" - -#: src/canonmn.cpp:1121 -msgid "PC 2" -msgstr "" - -#: src/canonmn.cpp:1122 -msgid "PC 3" -msgstr "" - -#: src/canonmn.cpp:1127 -msgid "Faithful" -msgstr "" - -#: src/canonmn.cpp:1128 src/minoltamn.cpp:903 src/minoltamn.cpp:953 -#: src/nikonmn.cpp:423 src/pentaxmn.cpp:707 -#, fuzzy -msgid "Monochrome" -msgstr "Macro" - -#: src/canonmn.cpp:1133 -#, fuzzy -msgid "ToneCurve" -msgstr "Nombre del documento" - -#: src/canonmn.cpp:1133 -#, fuzzy -msgid "Tone curve" -msgstr "Nombre del documento" - -#: src/canonmn.cpp:1135 -#, fuzzy -msgid "SharpnessFrequency" -msgstr "Nitidez" - -#: src/canonmn.cpp:1135 -#, fuzzy -msgid "Sharpness frequency" -msgstr "Nitidez" - -#: src/canonmn.cpp:1136 -#, fuzzy -msgid "SensorRedLevel" -msgstr "Nivel de la batería" - -#: src/canonmn.cpp:1136 -#, fuzzy -msgid "Sensor red level" -msgstr "Nivel de la batería" - -#: src/canonmn.cpp:1137 -#, fuzzy -msgid "SensorBlueLevel" -msgstr "Nivel de la batería" - -#: src/canonmn.cpp:1137 -#, fuzzy -msgid "Sensor blue level" -msgstr "Nivel de la batería" - -#: src/canonmn.cpp:1138 -#, fuzzy -msgid "WhiteBalanceRed" -msgstr "Balance de blanco" - -#: src/canonmn.cpp:1138 -#, fuzzy -msgid "White balance red" -msgstr "Balance de blanco" - -#: src/canonmn.cpp:1139 -#, fuzzy -msgid "WhiteBalanceBlue" -msgstr "Balance de blanco" - -#: src/canonmn.cpp:1139 -#, fuzzy -msgid "White balance blue" -msgstr "Tabla de balance de blanco" - -#: src/canonmn.cpp:1140 -#, fuzzy -msgid "WhiteBalance" -msgstr "Balance de blanco" - -#: src/canonmn.cpp:1141 -#, fuzzy -msgid "ColorTemperature" -msgstr "Espacio de color" - -#: src/canonmn.cpp:1141 src/minoltamn.cpp:156 src/minoltamn.cpp:786 -#: src/minoltamn.cpp:1038 src/minoltamn.cpp:1053 src/minoltamn.cpp:1054 -#: src/minoltamn.cpp:1475 src/minoltamn.cpp:1577 src/olympusmn.cpp:833 -#: src/sonymn.cpp:357 src/sonymn.cpp:358 -#, fuzzy -msgid "Color Temperature" -msgstr "Espacio de color" - -#: src/canonmn.cpp:1142 -#, fuzzy -msgid "PictureStyle" -msgstr "Modo de exposición" - -#: src/canonmn.cpp:1142 -#, fuzzy -msgid "Picture style" -msgstr "Modo de exposición" - -#: src/canonmn.cpp:1143 -#, fuzzy -msgid "DigitalGain" -msgstr "Zoom digital" - -#: src/canonmn.cpp:1143 -#, fuzzy -msgid "Digital gain" -msgstr "Zoom digital" - -#: src/canonmn.cpp:1144 -msgid "WBShiftAB" -msgstr "" - -#: src/canonmn.cpp:1144 -msgid "WBShift AB" -msgstr "" - -#: src/canonmn.cpp:1145 -msgid "WBShiftGM" -msgstr "" - -#: src/canonmn.cpp:1145 -#, fuzzy -msgid "WB Shift GM" -msgstr "Longitud de la imagen" - -#: src/canonmn.cpp:1146 -#, fuzzy -msgid "Unknown Canon Processing Info tag" -msgstr "Desconocido" - -#: src/crwimage.cpp:664 -msgid "Header, offset" -msgstr "Encabezado, offset" - -#: src/crwimage.cpp:681 -#, fuzzy -msgid "tag" -msgstr "etiqueta" - -#: src/crwimage.cpp:683 -msgid "dir" -msgstr "directorio" - -#: src/crwimage.cpp:685 -#, fuzzy -msgid "type" -msgstr "tipo" - -#: src/crwimage.cpp:686 -#, fuzzy -msgid "size" -msgstr "talla" - -#: src/crwimage.cpp:687 -#, fuzzy -msgid "offset" -msgstr "Suave" - -# ### ? offset = soft? -#: src/datasets.cpp:79 -msgid "(invalid)" -msgstr "(no válida)" - -#: src/datasets.cpp:80 -#, fuzzy -msgid "IIM envelope record" -msgstr "Prioridad de apertura" - -# ###? -#: src/datasets.cpp:81 -msgid "IIM application record 2" -msgstr "" - -#: src/datasets.cpp:85 -#, fuzzy -msgid "Model Version" -msgstr "Versión Exif" - -#: src/datasets.cpp:86 -msgid "" -"A binary number identifying the version of the Information Interchange " -"Model, Part I, utilised by the provider. Version numbers are assigned by " -"IPTC and NAA organizations." -msgstr "" -"Un número binario identificando la versión del modelo de intercambio de " -"información, Parte I, usado por el proveedor. Los números de version son " -"asignados por las organizaciones IPTC y NAA." - -# ### situation de Parte 1 in the phrase? -#: src/datasets.cpp:90 src/panasonicmn.cpp:220 src/pentaxmn.cpp:378 -#: src/pentaxmn.cpp:962 src/pentaxmn.cpp:963 -#, fuzzy -msgid "Destination" -msgstr "Orientación" - -# ### Destino? context? -#: src/datasets.cpp:91 -msgid "" -"This DataSet is to accommodate some providers who require routing " -"information above the appropriate OSI layers." -msgstr "" - -#: src/datasets.cpp:94 src/sonymn.cpp:348 src/sonymn.cpp:349 -#, fuzzy -msgid "File Format" -msgstr "Formato de archivo" - -#: src/datasets.cpp:95 -msgid "" -"A binary number representing the file format. The file format must be " -"registered with IPTC or NAA with a unique number assigned to it. The " -"information is used to route the data to the appropriate system and to allow " -"the receiving system to perform the appropriate actions there to." -msgstr "" -"Un número binario representando el formato del archivo. Dicho formato debe " -"estar registrado por medio de un número único asignado por IPTC o NAA. La " -"información se usa para dirigir los datos al sistema apropiado y permitir al " -"sistema receptor ejecutar las acciones que sean apropiadas." - -#: src/datasets.cpp:101 -#, fuzzy -msgid "File Version" -msgstr "Versión del documento" - -#: src/datasets.cpp:102 -msgid "" -"A binary number representing the particular version of the File Format " -"specified by tag." -msgstr "" -"Un número binario representando la versión particular del formato de archivo " -"especificado por la etiqueta ." - -#: src/datasets.cpp:105 -msgid "Service Id" -msgstr "Id del Servicio" - -#: src/datasets.cpp:106 -#, fuzzy -msgid "Identifies the provider and product" -msgstr "Identifica al proveedor y el producto" - -#: src/datasets.cpp:108 -#, fuzzy -msgid "Envelope Number" -msgstr "El número F." - -# ### context? número de sobre -#: src/datasets.cpp:109 -msgid "" -"The characters form a number that will be unique for the date specified in " -" tag and for the Service Identifier specified by " -" tag. If identical envelope numbers appear with the same " -"date and with the same Service Identifier, records 2-9 must be unchanged " -"from the original. This is not intended to be a sequential serial number " -"reception check." -msgstr "" - -#: src/datasets.cpp:117 -msgid "Product Id" -msgstr "Id del Producto" - -#: src/datasets.cpp:118 -msgid "" -"Allows a provider to identify subsets of its overall service. Used to " -"provide receiving organisation data on which to select, route, or otherwise " -"handle data." -msgstr "" -"Permite a un proveedor identificar subconjuntos de su servicio global. " -"Utilizado para recepcionar los datos organizativos de un modo que permita " -"seleccionar, dirigir o manipular los datos de varios modos." - -# ### can be improved -#: src/datasets.cpp:122 -#, fuzzy -msgid "Envelope Priority" -msgstr "Clasificación de los sobres por prioridades" - -#: src/datasets.cpp:123 -msgid "" -"Specifies the envelope handling priority and not the editorial urgency (see " -" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " -"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " -"Priority. The numeral \"0\" is reserved for future use." -msgstr "" -"No especifica la urgencia editorial (para eso véase la etiqueta )" -"sino la prioridad de manejo de los sobres. \"1\" indica el más urgente, " -"\"5\" urgencia normal y \"8\" las copias menos urgentes. El \"9\" permite al " -"usuario definir una prioridad personalizada. El \"0\" está reservado para " -"usos futuros." - -#: src/datasets.cpp:129 -#, fuzzy -msgid "Date Sent" -msgstr "Fecha de envío" - -#: src/datasets.cpp:130 -msgid "" -"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " -"to indicate year, month and day the service sent the material." -msgstr "" -"Usa el formato SSAAMMDD (siglo, año, mes, día) definido en ISO 8601 para " -"indicar año, mes y día en que el servicio envió el material." - -#: src/datasets.cpp:133 -#, fuzzy -msgid "Time Sent" -msgstr "Hora del envío" - -#: src/datasets.cpp:134 -msgid "" -"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " -"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " -"Universal Coordinated Time as described in ISO 8601. This is the time the " -"service sent the material." -msgstr "" -"Utiliza el formato HHMMSS:HHMM donde HHMMSS se refiere a la hora local, " -"minuto y segundos y HHMM se refiere a horas y minutos posteriores (+) o " -"antes (-) delUniversal Coordinated Time tal y como está descrito en la ISO " -"8601. Este es el momento en que el servicio envió el material." - -#: src/datasets.cpp:139 -#, fuzzy -msgid "Character Set" -msgstr "Set de caracteres" - -# ################################################# stop. rev 26 jul 2010 -#: src/datasets.cpp:140 -msgid "" -"This tag consisting of one or more control functions used for the " -"announcement, invocation or designation of coded character sets. The control " -"functions follow the ISO 2022 standard and may consist of the escape control " -"character and one or more graphic characters." -msgstr "" -"Esta etiqueta consiste en una o mas funciones de control utilizadas para el " -"anuncio, invocación o designio de juegos de caracteres codificados. Las " -"funciones de control siguen el estándar ISO 2022 y pueden consistir en el " -"caracter de control escape y uno o más caracteres gráficos." - -#: src/datasets.cpp:145 -#, fuzzy -msgid "Unique Name Object" -msgstr "Nombre único de Objeto" - -#: src/datasets.cpp:146 -msgid "" -"This tag provide a globally unique identification for objects as specified " -"in the IIM, independent of provider and for any media form. The provider " -"must ensure the UNO is unique. Objects with the same UNO are identical." -msgstr "" -"Esta etiqueta proporciona un identificador único globalmente para objetos, " -"independiente del proveedor y para cualquier tipo de medio, tal y como está " -"especificado en el IIM. El proveedor debe garantizar que el UNO es único. " -"Los objetos con el mismo UNO son idénticos." - -#: src/datasets.cpp:151 -#, fuzzy -msgid "ARM Identifier" -msgstr "Identificador ARM" - -#: src/datasets.cpp:152 -msgid "" -"The DataSet identifies the Abstract Relationship Method identifier (ARM) " -"which is described in a document registered by the originator of the ARM " -"with the IPTC and NAA organizations." -msgstr "" -"El DataSet identifica al Abstract Relationship Method identifier (ARM) que " -"es descrito en un documento registrado por el creador del ARM con las " -"organizaciones IPTC y NAA." - -# ## can be improved probably -#: src/datasets.cpp:156 -#, fuzzy -msgid "ARM Version" -msgstr "Versión ARM" - -#: src/datasets.cpp:157 -msgid "" -"This tag consisting of a binary number representing the particular version " -"of the ARM specified by tag ." -msgstr "" -"Consiste en un número binario representando la versión particular del ARM " -"especificado por la etiqueta ." - -#: src/datasets.cpp:170 -#, fuzzy -msgid "Record Version" -msgstr "Versión Exif" - -# ## ? not translated -#: src/datasets.cpp:171 -msgid "" -"A binary number identifying the version of the Information Interchange " -"Model, Part II, utilised by the provider. Version numbers are assigned by " -"IPTC and NAA organizations." -msgstr "" -"Número binario, asignado por las organizaciones IPTC y NAA, que identifica " -"la versión del Modelo de Intercambio de Información, Parte II, utilizado por " -"el proveedor." - -#: src/datasets.cpp:175 -#, fuzzy -msgid "Object Type" -msgstr "Tipo de Objeto" - -#: src/datasets.cpp:176 -msgid "" -"The Object Type is used to distinguish between different types of objects " -"within the IIM. The first part is a number representing a language " -"independent international reference to an Object Type followed by a colon " -"separator. The second part, if used, is a text representation of the Object " -"Type Number consisting of graphic characters plus spaces either in English " -"or in the language of the service as indicated in tag " -msgstr "" -"Tipo de Objeto; se utiliza para distinguir entre diferentes tipos de objetos " -"dentro del IIM. Consta de dos partes separadas por un signo de dos puntos, " -"siendo la segunda parte opcional. La primera es un número de referencia " -"internacional e independiente del lenguaje para un tipo de objeto; La " -"segunda una representación textual del Object Type Number mediante " -"caracteres gráficos y espacios, bien en Inglés o en el lenguaje del servicio " -"indicado en la etiqueta ." - -#: src/datasets.cpp:184 -#, fuzzy -msgid "Object Attribute" -msgstr "Atributos del objeto" - -#: src/datasets.cpp:185 -msgid "" -"The Object Attribute defines the nature of the object independent of the " -"Subject. The first part is a number representing a language independent " -"international reference to an Object Attribute followed by a colon " -"separator. The second part, if used, is a text representation of the Object " -"Attribute Number consisting of graphic characters plus spaces either in " -"English, or in the language of the service as indicated in tag " -"" -msgstr "" -"El Object Attribute define la naturaleza del objeto independientemente del " -"tema que trate. Consta de dos partes separadas por un signo de dos puntos, " -"siendo la segunda parte opcional.La primera es un número de referencia " -"internacional (independiente del lenguaje) para un atributo del objeto; La " -"segunda una representación textual del Object Attribute Number mediante " -"caracteres gráficos y espacios, bien en Inglés o en el lenguaje del servicio " -"indicado en la etiqueta " - -#: src/datasets.cpp:193 -#, fuzzy -msgid "Object Name" -msgstr "Nombre del Objeto" - -#: src/datasets.cpp:194 -msgid "" -"Used as a shorthand reference for the object. Changes to exist-ing data, " -"such as updated stories or new crops on photos, should be identified in tag " -"." -msgstr "" -"Utilizado como referencia rápida (taquigráfica) para el objeto. Los cambios " -"a datos existentes, como historias actualizadas o nuevos recortes en fotos, " -"deben estar identificados en la etiqueta ." - -#: src/datasets.cpp:198 -#, fuzzy -msgid "Document Title" -msgstr "Título del documento" - -#: src/datasets.cpp:199 src/olympusmn.cpp:820 -#, fuzzy -msgid "Edit Status" -msgstr "Editar Estátus" - -# ### temptatively, can have several meanings here -#: src/datasets.cpp:200 -msgid "Status of the object data, according to the practice of the provider." -msgstr "" -"Estatus de los datos del objeto, de acuerdo con la costumbre del proveedor " - -#: src/datasets.cpp:202 -msgid "Editorial Update" -msgstr "Actualización Editorial" - -#: src/datasets.cpp:203 -msgid "" -"Indicates the type of update that this object provides to a previous object. " -"The link to the previous object is made using the tags and " -", according to the practices of the provider." -msgstr "" -"Indica el tipo de actualización que éste objeto proporciona a un objeto " -"previo. El enlace al objeto previo se hace usando las etiquetas " -" y , de acuerdo a las costumbres del proveedor." - -#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:419 -msgid "Urgency" -msgstr "Urgencia (de edición)" - -#: src/datasets.cpp:208 -msgid "" -"Specifies the editorial urgency of content and not necessarily the envelope " -"handling priority (see tag ). The \"1\" is most urgent, " -"\"5\" normal and \"8\" denotes the least-urgent copy." -msgstr "" -"Especifica la urgencia editorial del contenido y no equivale necesariamente " -"a la prioridad de manejo del sobre (véase ). El \"1\" es " -"el más urgente, \"5\" indica normal y \"8\" denota a la copia menos " -"prioritaria." - -#: src/datasets.cpp:213 src/properties.cpp:167 -#, fuzzy -msgid "Subject" -msgstr "Sujeto" - -#: src/datasets.cpp:214 -msgid "The Subject Reference is a structured definition of the subject matter." -msgstr "La referencia Sujeto es una definición estructurada del contenido" - -#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:405 -#, fuzzy -msgid "Category" -msgstr "Categoría" - -#: src/datasets.cpp:217 -msgid "" -"Identifies the subject of the object data in the opinion of the provider. A " -"list of categories will be maintained by a regional registry, where " -"available, otherwise by the provider." -msgstr "" -"Identifica el tema del objeto dato en opinión del proveedor. Donde sea " -"posible una lista de categorías será mantenida por un registro regional, en " -"otro caso sera proporcionada por el proveedor." - -#: src/datasets.cpp:222 -msgid "Supplemental Category" -msgstr "Categoría suplementaria" - -#: src/datasets.cpp:223 -msgid "" -"Supplemental categories further refine the subject of an object data. A " -"supplemental category may include any of the recognised categories as used " -"in tag . Otherwise, selection of supplemental categories are left " -"to the provider." -msgstr "" -"Las categorías suplementarias permiten refinar el tema de un objeto de " -"datos. Una categoría suplementaria puede incluir cualquiera de las " -"categorías ya reconocidas en la etiqueta . Por lo demás, la " -"selección de categorías suplementarias se deja al proveedor." - -#: src/datasets.cpp:228 src/properties.cpp:417 -msgid "Supplemental Categories" -msgstr "Categorías suplementarias" - -#: src/datasets.cpp:229 -#, fuzzy -msgid "Fixture Id" -msgstr "Id de objetos permanentes" - -# ## only my best effort, can be improved probably -#: src/datasets.cpp:230 -msgid "" -"Identifies object data that recurs often and predictably. Enables users to " -"immediately find or recall such an object." -msgstr "" -"Identifica objetos de datos que recurren a menudo y de modo predecible, " -"permitiendo a los usuarios encontrarlos inmediatamente o rellamarlos cuando " -"se precise." - -#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:395 -msgid "Keywords" -msgstr "Palabras Clave" - -#: src/datasets.cpp:234 -msgid "" -"Used to indicate specific information retrieval words. It is expected that a " -"provider of various types of data that are related in subject matter uses " -"the same keyword, enabling the receiving system or subsystems to search " -"across all types of data for related material." -msgstr "" -"Utilizado para indicar palabras clave específicas. Se espera que un " -"proveedor de varios tipos de datos ligados a un mismo tema utilice la misma " -"palabra clave, permitiendo al sistema receptor o a los distintos subsistemas " -"encontrar rápidamente todo el material relacionado entre todos los tipos de " -"datos." - -#: src/datasets.cpp:240 -#, fuzzy -msgid "Location Code" -msgstr "Código de Localidad" - -#: src/datasets.cpp:241 -msgid "" -"Indicates the code of a country/geographical location referenced by the " -"content of the object. Where ISO has established an appropriate country code " -"under ISO 3166, that code will be used. When ISO 3166 does not adequately " -"provide for identification of a location or a country, e.g. ships at sea, " -"space, IPTC will assign an appropriate three-character code under the " -"provisions of ISO 3166 to avoid conflicts." -msgstr "" -"Indica el código de País/localización geográfica referenciado por el " -"contenido de un objeto. Allí donde la ISO 3166 haya establecido un código " -"apropiado de país se utilizará ése código. En caso contrario (ej. el espacio " -"o barcos en alta mar, IPTC asignará un código de tres caracteres apropiado " -"bajo las previsiones de la ISO 3166 para evitar conflictos." - -#: src/datasets.cpp:248 -#, fuzzy -msgid "Location Name" -msgstr "Nombre de la localización" - -#: src/datasets.cpp:249 -msgid "" -"Provides a full, publishable name of a country/geographical location " -"referenced by the content of the object, according to guidelines of the " -"provider." -msgstr "" -"Proporciona un nombre, publicable y completo, del país o localización " -"geográfica referenciado por el contenido de un objeto, de acuerdo a las " -"directrices del proveedor." - -#: src/datasets.cpp:253 src/properties.cpp:358 -#, fuzzy -msgid "Release Date" -msgstr "Fecha de publicación" - -#: src/datasets.cpp:254 -msgid "" -"Designates in the form CCYYMMDD the earliest date the provider intends the " -"object to be used. Follows ISO 8601 standard." -msgstr "" -"Designa la fecha inicial (expresada en forma CCYYMMDD) a partir de la cual " -"el proveedor tiene intención de que un objeto concreto pueda ser usado. " -"Sigue el estándar ISO 8601." - -#: src/datasets.cpp:257 -#, fuzzy -msgid "Release Time" -msgstr "Tiempo de Publicación" - -#: src/datasets.cpp:258 -msgid "" -"Designates in the form HHMMSS:HHMM the earliest time the provider intends " -"the object to be used. Follows ISO 8601 standard." -msgstr "" -"Designa la hora inicial (expresada en forma HHMMSS:HHMM) a partir de la cual " -"el proveedor tiene intención de que un objeto concreto pueda ser usado. " -"Sigue el estándar ISO 8601." - -#: src/datasets.cpp:261 -#, fuzzy -msgid "Expiration Date" -msgstr "Fecha de Caducidad" - -#: src/datasets.cpp:262 -msgid "" -"Designates in the form CCYYMMDD the latest date the provider or owner " -"intends the object data to be used. Follows ISO 8601 standard." -msgstr "" -"Designa la fecha de expiración de la validez de un objeto para su uso " -"(expresada en forma CCYYMMDD) a partir de la cual el proveedor o el usuario " -"consideran que ya no debe utilizarse mas dicho objeto. Sigue el estándar ISO " -"8601." - -#: src/datasets.cpp:265 -#, fuzzy -msgid "ExpirationTime" -msgstr "Tiempo de Caducidad" - -#: src/datasets.cpp:266 -msgid "" -"Designates in the form HHMMSS:HHMM the latest time the provider or owner " -"intends the object data to be used. Follows ISO 8601 standard." -msgstr "" -"Designa la hora de expiración de la validez de un objeto para su uso " -"(expresada en forma HHMMSS:HHMM) a partir de la cual el proveedor o el " -"usuario consideran que ya no debe utilizarse mas dicho objeto. Sigue el " -"estándar ISO 8601." - -#: src/datasets.cpp:269 -#, fuzzy -msgid "Special Instructions" -msgstr "Instrucciones especiales" - -#: src/datasets.cpp:270 -msgid "" -"Other editorial instructions concerning the use of the object data, such as " -"embargoes and warnings." -msgstr "" -"Instrucciones editoriales adicionales sobre el uso del objeto dato, como " -"embargos y advertencias." - -#: src/datasets.cpp:273 src/properties.cpp:414 -#, fuzzy -msgid "Instructions" -msgstr "Instrucciones" - -# ################################################# stop. rev 18 oct 2010 -#: src/datasets.cpp:274 -#, fuzzy -msgid "Action Advised" -msgstr "acción" - -#: src/datasets.cpp:275 -msgid "" -"Indicates the type of action that this object provides to a previous object. " -"The link to the previous object is made using tags and " -", according to the practices of the provider." -msgstr "" - -#: src/datasets.cpp:279 -#, fuzzy -msgid "Reference Service" -msgstr "Referencia Blanco/Negro" - -#: src/datasets.cpp:280 -msgid "" -"Identifies the Service Identifier of a prior envelope to which the current " -"object refers." -msgstr "" - -#: src/datasets.cpp:283 -#, fuzzy -msgid "Reference Date" -msgstr "Referencia Blanco/Negro" - -#: src/datasets.cpp:284 -msgid "" -"Identifies the date of a prior envelope to which the current object refers." -msgstr "" - -#: src/datasets.cpp:286 -#, fuzzy -msgid "Reference Number" -msgstr "El número F." - -#: src/datasets.cpp:287 -msgid "" -"Identifies the Envelope Number of a prior envelope to which the current " -"object refers." -msgstr "" - -#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:409 -#, fuzzy -msgid "Date Created" -msgstr "Fecha y hora" - -#: src/datasets.cpp:290 -msgid "" -"Represented in the form CCYYMMDD to designate the date the intellectual " -"content of the object data was created rather than the date of the creation " -"of the physical representation. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:295 -#, fuzzy -msgid "Time Created" -msgstr "Fecha y hora" - -#: src/datasets.cpp:296 -msgid "" -"Represented in the form HHMMSS:HHMM to designate the time the intellectual " -"content of the object data current source material was created rather than " -"the creation of the physical representation. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:301 -#, fuzzy -msgid "Digitization Date" -msgstr "Fecha y hora" - -#: src/datasets.cpp:302 -msgid "" -"Represented in the form CCYYMMDD to designate the date the digital " -"representation of the object data was created. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:305 -#, fuzzy -msgid "Digitization Time" -msgstr "Fecha y hora" - -#: src/datasets.cpp:306 -msgid "" -"Represented in the form HHMMSS:HHMM to designate the time the digital " -"representation of the object data was created. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 -#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:106 -#: src/pentaxmn.cpp:468 src/pentaxmn.cpp:526 src/sigmamn.cpp:154 -#: src/sonymn.cpp:110 -#, fuzzy -msgid "Program" -msgstr "Modo de exposición" - -#: src/datasets.cpp:311 -msgid "Identifies the type of program used to originate the object data." -msgstr "" - -#: src/datasets.cpp:313 -#, fuzzy -msgid "Program Version" -msgstr "Versión Exif" - -#: src/datasets.cpp:314 -msgid "Used to identify the version of the program mentioned in tag ." -msgstr "" - -#: src/datasets.cpp:316 -#, fuzzy -msgid "Object Cycle" -msgstr "Ãrea del sujeto" - -#: src/datasets.cpp:317 -msgid "Used to identify the editorial cycle of object data." -msgstr "" - -#: src/datasets.cpp:319 -#, fuzzy -msgid "By-line" -msgstr "pulg" - -#: src/datasets.cpp:320 -msgid "" -"Contains name of the creator of the object data, e.g. writer, photographer " -"or graphic artist." -msgstr "" - -#: src/datasets.cpp:323 -#, fuzzy -msgid "Author" -msgstr "acción" - -#: src/datasets.cpp:324 -msgid "By-line Title" -msgstr "" - -#: src/datasets.cpp:325 -msgid "" -"A by-line title is the title of the creator or creators of an object data. " -"Where used, a by-line title should follow the by-line it modifies." -msgstr "" - -#: src/datasets.cpp:328 src/datasets.cpp:332 src/properties.cpp:406 -msgid "City" -msgstr "" - -#: src/datasets.cpp:329 -msgid "" -"Identifies city of object data origin according to guidelines established by " -"the provider." -msgstr "" - -#: src/datasets.cpp:333 -#, fuzzy -msgid "Sub Location" -msgstr "Ubicación del sujeto" - -#: src/datasets.cpp:334 -msgid "" -"Identifies the location within a city from which the object data originates, " -"according to guidelines established by the provider." -msgstr "" - -#: src/datasets.cpp:337 -#, fuzzy -msgid "Province State" -msgstr "Orientación" - -#: src/datasets.cpp:338 -msgid "" -"Identifies Province/State of origin according to guidelines established by " -"the provider." -msgstr "" - -#: src/datasets.cpp:341 -msgid "State/Province" -msgstr "" - -#: src/datasets.cpp:342 src/properties.cpp:649 -#, fuzzy -msgid "Country Code" -msgstr "Nombre del documento" - -#: src/datasets.cpp:343 -msgid "" -"Indicates the code of the country/primary location where the intellectual " -"property of the object data was created, e.g. a photo was taken, an event " -"occurred. Where ISO has established an appropriate country code under ISO " -"3166, that code will be used. When ISO 3166 does not adequately provide for " -"identification of a location or a new country, e.g. ships at sea, space, " -"IPTC will assign an appropriate three-character code under the provisions of " -"ISO 3166 to avoid conflicts." -msgstr "" - -#: src/datasets.cpp:352 -#, fuzzy -msgid "Country Name" -msgstr "Nombre del documento" - -#: src/datasets.cpp:353 -msgid "" -"Provides full, publishable, name of the country/primary location where the " -"intellectual property of the object data was created, according to " -"guidelines of the provider." -msgstr "" - -#: src/datasets.cpp:357 src/properties.cpp:407 -#, fuzzy -msgid "Country" -msgstr "Nombre del documento" - -#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:418 -#, fuzzy -msgid "Transmission Reference" -msgstr "Referencia Blanco/Negro" - -#: src/datasets.cpp:359 -msgid "" -"A code representing the location of original transmission according to " -"practices of the provider." -msgstr "" - -#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:413 -#, fuzzy -msgid "Headline" -msgstr "pulg" - -#: src/datasets.cpp:364 -msgid "" -"A publishable entry providing a synopsis of the contents of the object data." -msgstr "" - -#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:408 -#, fuzzy -msgid "Credit" -msgstr "Centímetro" - -#: src/datasets.cpp:368 -msgid "" -"Identifies the provider of the object data, not necessarily the owner/" -"creator." -msgstr "" - -#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:166 -#: src/properties.cpp:415 -#, fuzzy -msgid "Source" -msgstr "Fuente de archivo" - -#: src/datasets.cpp:372 -msgid "" -"Identifies the original owner of the intellectual content of the object " -"data. This could be an agency, a member of an agency or an individual." -msgstr "" - -#: src/datasets.cpp:377 -msgid "Contains any necessary copyright notice." -msgstr "" - -#: src/datasets.cpp:379 -#, fuzzy -msgid "Copyright Notice" -msgstr "Copyright" - -#: src/datasets.cpp:380 src/properties.cpp:937 src/properties.cpp:946 -#, fuzzy -msgid "Contact" -msgstr "Contraste" - -#: src/datasets.cpp:381 -msgid "" -"Identifies the person or organisation which can provide further background " -"information on the object data." -msgstr "" - -#: src/datasets.cpp:384 -#, fuzzy -msgid "Caption" -msgstr "acción" - -#: src/datasets.cpp:385 -msgid "A textual description of the object data." -msgstr "" - -#: src/datasets.cpp:387 src/properties.cpp:151 src/properties.cpp:981 -#, fuzzy -msgid "Description" -msgstr "Descripción de la imagen" - -#: src/datasets.cpp:388 -#, fuzzy -msgid "Writer" -msgstr "Orden de llenado" - -#: src/datasets.cpp:389 -msgid "" -"Identification of the name of the person involved in the writing, editing or " -"correcting the object data or caption/abstract." -msgstr "" - -#: src/datasets.cpp:392 -#, fuzzy -msgid "Rasterized Caption" -msgstr "Saturación" - -#: src/datasets.cpp:393 -msgid "" -"Contains the rasterized object data description and is used where characters " -"that have not been coded are required for the caption." -msgstr "" - -#: src/datasets.cpp:397 -#, fuzzy -msgid "Indicates the color components of an image." -msgstr "Esta etiqueta indica la distancia al sujeto." - -#: src/datasets.cpp:399 -#, fuzzy -msgid "Image Orientation" -msgstr "Orientación" - -#: src/datasets.cpp:400 -#, fuzzy -msgid "Indicates the layout of an image." -msgstr "Esta etiqueta indica la distancia al sujeto." - -#: src/datasets.cpp:402 src/properties.cpp:157 -#, fuzzy -msgid "Language" -msgstr "Fabricante" - -#: src/datasets.cpp:403 -msgid "" -"Describes the major national language of the object, according to the 2-" -"letter codes of ISO 639:1988. Does not define or imply any coded character " -"set, but is used for internal routing, e.g. to various editorial desks." -msgstr "" - -#: src/datasets.cpp:408 -#, fuzzy -msgid "Audio Type" -msgstr "acción" - -#: src/datasets.cpp:409 -#, fuzzy -msgid "Indicates the type of an audio content." -msgstr "Esta etiqueta indica la distancia al sujeto." - -#: src/datasets.cpp:411 -#, fuzzy -msgid "Audio Rate" -msgstr "Baja saturación" - -#: src/datasets.cpp:412 -#, fuzzy -msgid "Indicates the sampling rate in Hertz of an audio content." -msgstr "Esta etiqueta indica la distancia al sujeto." - -#: src/datasets.cpp:414 -#, fuzzy -msgid "Audio Resolution" -msgstr "Resolución Y" - -#: src/datasets.cpp:415 -#, fuzzy -msgid "Indicates the sampling resolution of an audio content." -msgstr "Esta etiqueta indica la distancia al sujeto." - -#: src/datasets.cpp:417 -#, fuzzy -msgid "Audio Duration" -msgstr "Baja saturación" - -#: src/datasets.cpp:418 -#, fuzzy -msgid "Indicates the duration of an audio content." -msgstr "Esta etiqueta indica la distancia al sujeto." - -#: src/datasets.cpp:420 -#, fuzzy -msgid "Audio Outcue" -msgstr "Baja saturación" - -#: src/datasets.cpp:421 -msgid "" -"Identifies the content of the end of an audio object data, according to " -"guidelines established by the provider." -msgstr "" - -#: src/datasets.cpp:424 -#, fuzzy -msgid "Preview Format" -msgstr "Orientación" - -#: src/datasets.cpp:425 -msgid "" -"A binary number representing the file format of the object data preview. The " -"file format must be registered with IPTC or NAA organizations with a unique " -"number assigned to it." -msgstr "" - -#: src/datasets.cpp:429 -#, fuzzy -msgid "Preview Version" -msgstr "Versión Exif" - -#: src/datasets.cpp:430 -msgid "" -"A binary number representing the particular version of the object data " -"preview file format specified in tag ." -msgstr "" - -#: src/datasets.cpp:433 -#, fuzzy -msgid "Preview Data" -msgstr "Versión Exif" - -#: src/datasets.cpp:434 -msgid "Binary image preview data." -msgstr "" - -#: src/datasets.cpp:436 src/datasets.cpp:437 -msgid "(Invalid)" -msgstr "" - -#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 -#, fuzzy -msgid "Unknown dataset" -msgstr "Desconocido" - -#: src/error.cpp:55 -msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." -msgstr "" - -#: src/error.cpp:56 -#, fuzzy -msgid "Success" -msgstr "Fuente de archivo" - -#: src/error.cpp:59 -msgid "This does not look like a %1 image" -msgstr "" - -#: src/error.cpp:60 -msgid "Invalid dataset name `%1'" -msgstr "" - -#: src/error.cpp:61 -#, fuzzy -msgid "Invalid record name `%1'" -msgstr "El número F." - -#: src/error.cpp:62 -msgid "Invalid key `%1'" -msgstr "" - -#: src/error.cpp:63 -msgid "Invalid tag name or ifdId `%1', ifdId %2" -msgstr "" - -#: src/error.cpp:64 -msgid "Value not set" -msgstr "" - -#: src/error.cpp:65 -msgid "%1: Failed to open the data source: %2" -msgstr "" - -#: src/error.cpp:66 -msgid "%1: Failed to open file (%2): %3" -msgstr "" - -#: src/error.cpp:67 -msgid "%1: The file contains data of an unknown image type" -msgstr "" - -#: src/error.cpp:68 -msgid "The memory contains data of an unknown image type" -msgstr "" - -#: src/error.cpp:69 -msgid "Image type %1 is not supported" -msgstr "" - -#: src/error.cpp:70 -#, fuzzy -msgid "Failed to read image data" -msgstr "Fuente de archivo" - -#: src/error.cpp:71 -msgid "This does not look like a JPEG image" -msgstr "" - -#: src/error.cpp:72 -msgid "%1: Failed to map file for reading and writing: %2" -msgstr "" - -#: src/error.cpp:73 -msgid "%1: Failed to rename file to %2: %3" -msgstr "" - -#: src/error.cpp:74 -msgid "%1: Transfer failed: %2" -msgstr "" - -#: src/error.cpp:75 -msgid "Memory transfer failed: %1" -msgstr "" - -#: src/error.cpp:76 -#, fuzzy -msgid "Failed to read input data" -msgstr "Fuente de archivo" - -#: src/error.cpp:77 -#, fuzzy -msgid "Failed to write image" -msgstr "Fuente de archivo" - -#: src/error.cpp:78 -msgid "Input data does not contain a valid image" -msgstr "" - -#: src/error.cpp:79 -msgid "Invalid ifdId %1" -msgstr "" - -#: src/error.cpp:80 -msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" -msgstr "" - -#: src/error.cpp:81 -msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" -msgstr "" - -#: src/error.cpp:82 -msgid "Offset out of range" -msgstr "" - -#: src/error.cpp:83 -msgid "Unsupported data area offset type" -msgstr "" - -#: src/error.cpp:84 -msgid "Invalid charset: `%1'" -msgstr "" - -#: src/error.cpp:85 -msgid "Unsupported date format" -msgstr "" - -#: src/error.cpp:86 -msgid "Unsupported time format" -msgstr "" - -#: src/error.cpp:87 -msgid "Writing to %1 images is not supported" -msgstr "" - -#: src/error.cpp:88 -msgid "Setting %1 in %2 images is not supported" -msgstr "" - -#: src/error.cpp:89 -msgid "This does not look like a CRW image" -msgstr "" - -#: src/error.cpp:90 -msgid "%1: Not supported" -msgstr "" - -#: src/error.cpp:91 -msgid "No namespace info available for XMP prefix `%1'" -msgstr "" - -#: src/error.cpp:92 -msgid "No prefix registered for namespace `%2', needed for property path `%1'" -msgstr "" - -#: src/error.cpp:93 -msgid "Size of %1 JPEG segment is larger than 65535 bytes" -msgstr "" - -#: src/error.cpp:94 -msgid "Unhandled Xmpdatum %1 of type %2" -msgstr "" - -#: src/error.cpp:95 -msgid "Unhandled XMP node %1 with opt=%2" -msgstr "" - -#: src/error.cpp:96 -msgid "XMP Toolkit error %1: %2" -msgstr "" - -#: src/error.cpp:97 -msgid "Failed to decode Lang Alt property %1 with opt=%2" -msgstr "" - -#: src/error.cpp:98 -msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" -msgstr "" - -#: src/error.cpp:99 -msgid "Failed to encode Lang Alt property %1" -msgstr "" - -#: src/error.cpp:100 -msgid "Failed to determine property name from path %1, namespace %2" -msgstr "" - -#: src/error.cpp:101 -msgid "Schema namespace %1 is not registered with the XMP Toolkit" -msgstr "" - -#: src/error.cpp:102 -msgid "No namespace registered for prefix `%1'" -msgstr "" - -#: src/error.cpp:103 -msgid "" -"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" -"%1', `%2', `%3'" -msgstr "" - -#: src/error.cpp:104 -msgid "Invalid XmpText type `%1'" -msgstr "" - -#: src/error.cpp:105 -msgid "TIFF directory %1 has too many entries" -msgstr "" - -#: src/error.cpp:106 -msgid "Multiple TIFF array element tags %1 in one directory" -msgstr "" - -#: src/error.cpp:107 -msgid "TIFF array element tag %1 has wrong type" -msgstr "" - -#: src/error.cpp:108 -msgid "%1 has invalid XMP value type `%2'" -msgstr "" - -#: src/exiv2.cpp:212 -msgid "Copyright (C) 2004-2012 Andreas Huggel.\n" -msgstr "" - -#: src/exiv2.cpp:214 -msgid "" -"This program is free software; you can redistribute it and/or\n" -"modify it under the terms of the GNU General Public License\n" -"as published by the Free Software Foundation; either version 2\n" -"of the License, or (at your option) any later version.\n" -msgstr "" - -#: src/exiv2.cpp:219 -msgid "" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -msgstr "" - -#: src/exiv2.cpp:224 -msgid "" -"You should have received a copy of the GNU General Public\n" -"License along with this program; if not, write to the Free\n" -"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" -"Boston, MA 02110-1301 USA\n" -msgstr "" - -#: src/exiv2.cpp:232 -msgid "Usage:" -msgstr "" - -#: src/exiv2.cpp:233 -msgid "" -"[ options ] [ action ] file ...\n" -"\n" -msgstr "" - -#: src/exiv2.cpp:234 -msgid "Manipulate the Exif metadata of images.\n" -msgstr "" - -#: src/exiv2.cpp:240 -msgid "" -"\n" -"Actions:\n" -msgstr "" - -#: src/exiv2.cpp:241 -msgid "" -" ad | adjust Adjust Exif timestamps by the given time. This action\n" -" requires at least one of the -a, -Y, -O or -D options.\n" -msgstr "" - -#: src/exiv2.cpp:243 -msgid " pr | print Print image metadata.\n" -msgstr "" - -#: src/exiv2.cpp:244 -msgid " rm | delete Delete image metadata from the files.\n" -msgstr "" - -#: src/exiv2.cpp:245 -msgid "" -" in | insert Insert metadata from corresponding *.exv files.\n" -" Use option -S to change the suffix of the input files.\n" -msgstr "" - -#: src/exiv2.cpp:247 -msgid "" -" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" -msgstr "" - -#: src/exiv2.cpp:248 -msgid "" -" mv | rename Rename files and/or set file timestamps according to the\n" -" Exif create timestamp. The filename format can be set with\n" -" -r format, timestamp options are controlled with -t and -T.\n" -msgstr "" - -#: src/exiv2.cpp:251 -msgid "" -" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" -" IPTC metadata of image files or set the JPEG comment.\n" -" Requires option -c, -m or -M.\n" -msgstr "" - -#: src/exiv2.cpp:254 -msgid "" -" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" -" Exif tag.\n" -msgstr "" - -#: src/exiv2.cpp:256 -msgid "" -" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" -" character encoding can be specified with the -n option.\n" -msgstr "" - -#: src/exiv2.cpp:258 -msgid "" -"\n" -"Options:\n" -msgstr "" - -#: src/exiv2.cpp:259 -msgid " -h Display this help and exit.\n" -msgstr "" - -#: src/exiv2.cpp:260 -msgid " -V Show the program version and exit.\n" -msgstr "" - -#: src/exiv2.cpp:261 -msgid " -v Be verbose during the program run.\n" -msgstr "" - -#: src/exiv2.cpp:262 -msgid "" -" -q Silence warnings and error messages during the program run " -"(quiet).\n" -msgstr "" - -#: src/exiv2.cpp:263 -msgid "" -" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" -msgstr "" - -#: src/exiv2.cpp:264 -msgid " -b Show large binary values.\n" -msgstr "" - -#: src/exiv2.cpp:265 -msgid " -u Show unknown tags.\n" -msgstr "" - -#: src/exiv2.cpp:266 -msgid " -g key Only output info for this key (grep).\n" -msgstr "" - -#: src/exiv2.cpp:267 -msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" -msgstr "" - -#: src/exiv2.cpp:268 -msgid " -k Preserve file timestamps (keep).\n" -msgstr "" - -#: src/exiv2.cpp:269 -msgid "" -" -t Also set the file timestamp in 'rename' action (overrides -k).\n" -msgstr "" - -#: src/exiv2.cpp:270 -msgid "" -" -T Only set the file timestamp in 'rename' action, do not rename\n" -" the file (overrides -k).\n" -msgstr "" - -#: src/exiv2.cpp:272 -msgid " -f Do not prompt before overwriting existing files (force).\n" -msgstr "" - -#: src/exiv2.cpp:273 -msgid " -F Do not prompt before renaming files (Force).\n" -msgstr "" - -#: src/exiv2.cpp:274 -msgid "" -" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" -" is only used with the 'adjust' action.\n" -msgstr "" - -#: src/exiv2.cpp:276 -msgid " -Y yrs Year adjustment with the 'adjust' action.\n" -msgstr "" - -#: src/exiv2.cpp:277 -msgid " -O mon Month adjustment with the 'adjust' action.\n" -msgstr "" - -#: src/exiv2.cpp:278 -msgid " -D day Day adjustment with the 'adjust' action.\n" -msgstr "" - -#: src/exiv2.cpp:279 -msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" -msgstr "" - -#: src/exiv2.cpp:280 -msgid " s : print a summary of the Exif metadata (the default)\n" -msgstr "" - -#: src/exiv2.cpp:281 -msgid "" -" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" -msgstr "" - -#: src/exiv2.cpp:282 -msgid " t : interpreted (translated) Exif data (-PEkyct)\n" -msgstr "" - -#: src/exiv2.cpp:283 -msgid " v : plain Exif data values (-PExgnycv)\n" -msgstr "" - -#: src/exiv2.cpp:284 -msgid " h : hexdump of the Exif data (-PExgnycsh)\n" -msgstr "" - -#: src/exiv2.cpp:285 -msgid " i : IPTC data values (-PIkyct)\n" -msgstr "" - -#: src/exiv2.cpp:286 -msgid " x : XMP properties (-PXkyct)\n" -msgstr "" - -#: src/exiv2.cpp:287 src/exiv2.cpp:310 -msgid " c : JPEG comment\n" -msgstr "" - -#: src/exiv2.cpp:288 -msgid " p : list available previews\n" -msgstr "" - -#: src/exiv2.cpp:289 -msgid "" -" -P flgs Print flags for fine control of tag lists ('print' action):\n" -msgstr "" - -#: src/exiv2.cpp:290 -msgid " E : include Exif tags in the list\n" -msgstr "" - -#: src/exiv2.cpp:291 -msgid " I : IPTC datasets\n" -msgstr "" - -#: src/exiv2.cpp:292 -msgid " X : XMP properties\n" -msgstr "" - -#: src/exiv2.cpp:293 -msgid " x : print a column with the tag number\n" -msgstr "" - -#: src/exiv2.cpp:294 -msgid " g : group name\n" -msgstr "" - -#: src/exiv2.cpp:295 -msgid " k : key\n" -msgstr "" - -#: src/exiv2.cpp:296 -msgid " l : tag label\n" -msgstr "" - -#: src/exiv2.cpp:297 -msgid " n : tag name\n" -msgstr "" - -#: src/exiv2.cpp:298 -msgid " y : type\n" -msgstr "" - -#: src/exiv2.cpp:299 -msgid " c : number of components (count)\n" -msgstr "" - -#: src/exiv2.cpp:300 -msgid " s : size in bytes\n" -msgstr "" - -#: src/exiv2.cpp:301 -msgid " v : plain data value\n" -msgstr "" - -#: src/exiv2.cpp:302 -msgid " t : interpreted (translated) data\n" -msgstr "" - -#: src/exiv2.cpp:303 -msgid " h : hexdump of the data\n" -msgstr "" - -#: src/exiv2.cpp:304 -msgid "" -" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" -msgstr "" - -#: src/exiv2.cpp:305 -msgid " a : all supported metadata (the default)\n" -msgstr "" - -#: src/exiv2.cpp:306 -msgid " e : Exif section\n" -msgstr "" - -#: src/exiv2.cpp:307 -msgid " t : Exif thumbnail only\n" -msgstr "" - -#: src/exiv2.cpp:308 -msgid " i : IPTC data\n" -msgstr "" - -#: src/exiv2.cpp:309 -msgid " x : XMP packet\n" -msgstr "" - -#: src/exiv2.cpp:311 -msgid "" -" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" -" the same as those for the -d option, plus a modifier:\n" -" X : Insert metadata from an XMP sidecar file .xmp\n" -" Only JPEG thumbnails can be inserted, they need to be named\n" -" -thumb.jpg\n" -msgstr "" - -#: src/exiv2.cpp:316 -msgid "" -" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" -" are the same as those for the -d option, plus a target to " -"extract\n" -" preview images and a modifier to generate an XMP sidecar file:\n" -" p[[, ...]] : Extract preview images.\n" -" X : Extract metadata to an XMP sidecar file .xmp\n" -msgstr "" - -#: src/exiv2.cpp:321 -msgid "" -" -r fmt Filename format for the 'rename' action. The format string\n" -" follows strftime(3). The following keywords are supported:\n" -msgstr "" - -#: src/exiv2.cpp:323 -msgid " :basename: - original filename without extension\n" -msgstr "" - -#: src/exiv2.cpp:324 -msgid "" -" :dirname: - name of the directory holding the original file\n" -msgstr "" - -#: src/exiv2.cpp:325 -msgid " :parentname: - name of parent directory\n" -msgstr "" - -#: src/exiv2.cpp:326 -msgid " Default filename format is " -msgstr "" - -#: src/exiv2.cpp:328 -msgid " -c txt JPEG comment string to set in the image.\n" -msgstr "" - -#: src/exiv2.cpp:329 -msgid "" -" -m file Command file for the modify action. The format for commands is\n" -" set|add|del [[] ].\n" -msgstr "" - -#: src/exiv2.cpp:331 -msgid "" -" -M cmd Command line for the modify action. The format for the\n" -" commands is the same as that of the lines of a command file.\n" -msgstr "" - -#: src/exiv2.cpp:333 -msgid "" -" -l dir Location (directory) for files to be inserted from or extracted " -"to.\n" -msgstr "" - -#: src/exiv2.cpp:334 -msgid "" -" -S .suf Use suffix .suf for source files for insert command.\n" -"\n" -msgstr "" - -#: src/exiv2.cpp:371 src/exiv2.cpp:401 src/exiv2.cpp:436 src/exiv2.cpp:495 -#: src/exiv2.cpp:682 -#, fuzzy -msgid "Option" -msgstr "acción" - -#: src/exiv2.cpp:372 -msgid "requires an argument\n" -msgstr "" - -#: src/exiv2.cpp:376 -msgid "Unrecognized option" -msgstr "" - -#: src/exiv2.cpp:382 -msgid "getopt returned unexpected character code" -msgstr "" - -#: src/exiv2.cpp:402 -#, fuzzy -msgid "Invalid argument" -msgstr "Clave no válida" - -#: src/exiv2.cpp:427 src/exiv2.cpp:480 -msgid "Ignoring surplus option" -msgstr "" - -#: src/exiv2.cpp:437 src/exiv2.cpp:497 src/exiv2.cpp:683 -msgid "is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:452 -msgid "Ignoring surplus option -a" -msgstr "" - -#: src/exiv2.cpp:458 -msgid "Error parsing -a option argument" -msgstr "" - -#: src/exiv2.cpp:465 -msgid "Option -a is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:487 -#, fuzzy -msgid "Error parsing" -msgstr "Ãndice de exposición" - -#: src/exiv2.cpp:489 -#, fuzzy -msgid "option argument" -msgstr "Nombre del documento" - -#: src/exiv2.cpp:520 -msgid "Unrecognized print mode" -msgstr "" - -#: src/exiv2.cpp:528 -msgid "Ignoring surplus option -p" -msgstr "" - -#: src/exiv2.cpp:532 -msgid "Option -p is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:563 -msgid "Unrecognized print item" -msgstr "" - -#: src/exiv2.cpp:572 -msgid "Ignoring surplus option -P" -msgstr "" - -#: src/exiv2.cpp:576 -msgid "Option -P is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:603 -msgid "Option -d is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:631 -msgid "Option -e is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:659 -msgid "Option -i is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:700 -msgid "Action adjust is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:709 -msgid "Action print is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:718 -msgid "Action delete is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:729 -msgid "Action extract is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:740 -msgid "Action insert is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:749 -msgid "Action rename is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:758 -msgid "Action modify is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:767 -msgid "Action fixiso is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:776 -msgid "Action fixcom is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:800 -msgid "An action must be specified\n" -msgstr "" - -#: src/exiv2.cpp:809 -msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" -msgstr "" - -#: src/exiv2.cpp:815 -msgid "Modify action requires at least one -c, -m or -M option\n" -msgstr "" - -#: src/exiv2.cpp:819 -msgid "At least one file is required\n" -msgstr "" - -#: src/exiv2.cpp:825 -msgid "Error parsing -m option arguments\n" -msgstr "" - -#: src/exiv2.cpp:832 -msgid "Error parsing -M option arguments\n" -msgstr "" - -#: src/exiv2.cpp:843 -msgid "-l option can only be used with extract or insert actions\n" -msgstr "" - -#: src/exiv2.cpp:848 -msgid "-S option can only be used with insert action\n" -msgstr "" - -#: src/exiv2.cpp:853 -msgid "-t option can only be used with rename action\n" -msgstr "" - -#: src/exiv2.cpp:858 -msgid "-T option can only be used with rename action\n" -msgstr "" - -#: src/exiv2.cpp:938 -msgid "Unrecognized " -msgstr "" - -#: src/exiv2.cpp:939 -#, fuzzy -msgid "target" -msgstr "promedio" - -#: src/exiv2.cpp:965 -#, fuzzy -msgid "Invalid preview number" -msgstr "El número F." - -#: src/exiv2.cpp:997 -msgid "Failed to open command file for reading\n" -msgstr "" - -#: src/exiv2.cpp:1010 -#, fuzzy -msgid "line" -msgstr "pulg" - -#: src/exiv2.cpp:1033 -#, fuzzy -msgid "-M option" -msgstr "acción" - -#: src/exiv2.cpp:1054 src/exiv2.cpp:1113 src/exiv2.cpp:1125 -msgid "Invalid command line" -msgstr "" - -#: src/exiv2.cpp:1061 -msgid "Invalid command" -msgstr "" - -#: src/exiv2.cpp:1093 -msgid "Invalid key" -msgstr "Clave no válida" - -#: src/fujimn.cpp:62 -#, fuzzy -msgid "Soft mode 1" -msgstr "Retrato" - -#: src/fujimn.cpp:63 -#, fuzzy -msgid "Soft mode 2" -msgstr "Retrato" - -#: src/fujimn.cpp:65 -#, fuzzy -msgid "Hard mode 1" -msgstr "Macro" - -#: src/fujimn.cpp:66 -#, fuzzy -msgid "Hard mode 2" -msgstr "Macro" - -#: src/fujimn.cpp:72 src/minoltamn.cpp:219 src/minoltamn.cpp:683 -#: src/minoltamn.cpp:869 src/minoltamn.cpp:1193 src/minoltamn.cpp:2094 -#: src/nikonmn.cpp:447 src/panasonicmn.cpp:65 src/pentaxmn.cpp:312 -#: src/sonymn.cpp:165 src/tags.cpp:1428 -msgid "Daylight" -msgstr "Luz de día" - -#: src/fujimn.cpp:74 -#, fuzzy -msgid "Fluorescent (daylight)" -msgstr "Fluorescente (luz de día)" - -#: src/fujimn.cpp:75 -#, fuzzy -msgid "Fluorescent (warm white)" -msgstr "Fluorescente (luz cálida)" - -#: src/fujimn.cpp:76 -#, fuzzy -msgid "Fluorescent (cool white)" -msgstr "Fluorescente (luz fría)" - -#: src/fujimn.cpp:77 src/nikonmn.cpp:448 src/sonymn.cpp:170 -#, fuzzy -msgid "Incandescent" -msgstr "Tungsteno (luz incandescente)" - -#: src/fujimn.cpp:87 src/fujimn.cpp:88 -msgid "None (black & white)" -msgstr "Ninguno (B/N)" - -#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 -#, fuzzy -msgid "Red-eye reduction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/fujimn.cpp:119 src/tags.cpp:1504 src/tags.cpp:1505 -msgid "Night scene" -msgstr "Escena nocturna" - -#: src/fujimn.cpp:120 src/pentaxmn.cpp:496 src/pentaxmn.cpp:503 -#: src/sonymn.cpp:518 -#, fuzzy -msgid "Program AE" -msgstr "Modo de exposición" - -#: src/fujimn.cpp:121 -#, fuzzy -msgid "Natural light" -msgstr "luz natural" - -#: src/fujimn.cpp:122 -#, fuzzy -msgid "Anti-blur" -msgstr "Contraste" - -#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 -#: src/minoltamn.cpp:1888 src/minoltamn.cpp:2037 src/olympusmn.cpp:108 -#: src/panasonicmn.cpp:130 src/pentaxmn.cpp:481 src/sonymn.cpp:479 -#: src/sonymn.cpp:525 -#, fuzzy -msgid "Sunset" -msgstr "Puesta de sol" - -#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:485 -#, fuzzy -msgid "Museum" -msgstr "Museo" - -#: src/fujimn.cpp:125 src/panasonicmn.cpp:117 -#, fuzzy -msgid "Party" -msgstr "Fiesta" - -#: src/fujimn.cpp:126 -#, fuzzy -msgid "Flower" -msgstr "Flores" - -#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 -#: src/minoltamn.cpp:2035 src/pentaxmn.cpp:480 -msgid "Text" -msgstr "Texto" - -#: src/fujimn.cpp:128 -#, fuzzy -msgid "Natural light & flash" -msgstr "Natural, luz y flash" - -#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:519 -#, fuzzy -msgid "Aperture-priority AE" -msgstr "Prioridad de apertura" - -#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:520 -#, fuzzy -msgid "Shutter speed priority AE" -msgstr "Prioridad del obturador" - -#: src/fujimn.cpp:142 -#, fuzzy -msgid "No flash & flash" -msgstr "Sin flash y flash" - -#: src/fujimn.cpp:148 -#, fuzzy -msgid "Chrome" -msgstr "Macro" - -#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 -#: src/minoltamn.cpp:1936 src/panasonicmn.cpp:211 -msgid "Wide" -msgstr "Amplio" - -#: src/fujimn.cpp:160 -#, fuzzy -msgid "F0/Standard" -msgstr "Estándar" - -#: src/fujimn.cpp:161 -#, fuzzy -msgid "F1/Studio portrait" -msgstr "retrato de estudio" - -#: src/fujimn.cpp:162 -msgid "F2/Fujichrome" -msgstr "F2/Fujichrome" - -#: src/fujimn.cpp:163 -#, fuzzy -msgid "F3/Studio portrait Ex" -msgstr "retrato" - -#: src/fujimn.cpp:164 -msgid "F4/Velvia" -msgstr "" - -#: src/fujimn.cpp:169 -msgid "Auto (100-400%)" -msgstr "" - -#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 -#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2056 -#: src/olympusmn.cpp:74 src/panasonicmn.cpp:58 -msgid "Raw" -msgstr "" - -#: src/fujimn.cpp:171 -#, fuzzy -msgid "Standard (100%)" -msgstr "Estándar" - -#: src/fujimn.cpp:172 -msgid "Wide mode 1 (230%)" -msgstr "Panorámico 1 (230%)" - -#: src/fujimn.cpp:173 -msgid "Wide mode 2 (400%)" -msgstr "Panorámico 2 (400%)" - -#: src/fujimn.cpp:174 -#, fuzzy -msgid "Film simulation mode" -msgstr "Modo simulación de película" - -#: src/fujimn.cpp:179 src/nikonmn.cpp:213 src/nikonmn.cpp:524 -#: src/nikonmn.cpp:646 src/nikonmn.cpp:691 src/nikonmn.cpp:843 -#: src/nikonmn.cpp:867 src/nikonmn.cpp:888 src/nikonmn.cpp:1001 -#: src/nikonmn.cpp:1023 src/nikonmn.cpp:1043 src/nikonmn.cpp:1063 -#: src/nikonmn.cpp:1076 src/nikonmn.cpp:1135 src/nikonmn.cpp:1195 -#: src/nikonmn.cpp:1225 src/nikonmn.cpp:1245 src/nikonmn.cpp:1258 -#: src/nikonmn.cpp:1271 src/nikonmn.cpp:1284 src/nikonmn.cpp:1297 -#: src/nikonmn.cpp:1310 src/nikonmn.cpp:1323 src/nikonmn.cpp:1342 -#: src/nikonmn.cpp:1367 src/panasonicmn.cpp:335 src/pentaxmn.cpp:865 -#: src/properties.cpp:470 -#, fuzzy -msgid "Version" -msgstr "Versión Exif" - -#: src/fujimn.cpp:180 -#, fuzzy -msgid "Fujifilm Makernote version" -msgstr "Versión Exif" - -#: src/fujimn.cpp:183 src/panasonicmn.cpp:250 -msgid "" -"This number is unique, and contains the date of manufacture, but is not the " -"same as the number printed on the camera body." -msgstr "" -"Este número es único, y contiene la fecha de manufactura, pero no es el " -"mismonúmero que el impreso en el cuerpo de la cámara" - -#: src/fujimn.cpp:187 src/nikonmn.cpp:223 src/nikonmn.cpp:460 -#: src/nikonmn.cpp:527 src/olympusmn.cpp:199 -#, fuzzy -msgid "Image quality setting" -msgstr "Ancho de la imagen" - -#: src/fujimn.cpp:195 src/nikonmn.cpp:422 -#, fuzzy -msgid "Color" -msgstr "Espacio de color" - -#: src/fujimn.cpp:196 -#, fuzzy -msgid "Chroma saturation setting" -msgstr "Alta saturación" - -#: src/fujimn.cpp:198 -msgid "Tone" -msgstr "Tono" - -#: src/fujimn.cpp:202 -#, fuzzy -msgid "Flash firing mode setting" -msgstr "Contraste" - -#: src/fujimn.cpp:204 -#, fuzzy -msgid "Flash Strength" -msgstr "Contraste" - -#: src/fujimn.cpp:205 -#, fuzzy -msgid "Flash firing strength compensation setting" -msgstr "Tiempo de exposición" - -#: src/fujimn.cpp:208 -#, fuzzy -msgid "Macro mode setting" -msgstr "ajuste del modo Macro" - -#: src/fujimn.cpp:211 -#, fuzzy -msgid "Focusing mode setting" -msgstr "Modo de exposición" - -#: src/fujimn.cpp:216 -msgid "Slow Sync" -msgstr "Sincronización lenta" - -#: src/fujimn.cpp:217 -#, fuzzy -msgid "Slow synchro mode setting" -msgstr "Contraste" - -#: src/fujimn.cpp:219 src/olympusmn.cpp:690 src/olympusmn.cpp:891 -#, fuzzy -msgid "Picture Mode" -msgstr "Modo de exposición" - -#: src/fujimn.cpp:220 -#, fuzzy -msgid "Picture mode setting" -msgstr "Modo de exposición" - -#: src/fujimn.cpp:226 -msgid "Continuous shooting or auto bracketing setting" -msgstr "" - -#: src/fujimn.cpp:228 src/panasonicmn.cpp:256 src/sonymn.cpp:414 -#, fuzzy -msgid "Sequence Number" -msgstr "El número F." - -#: src/fujimn.cpp:229 src/olympusmn.cpp:1158 src/panasonicmn.cpp:256 -#, fuzzy -msgid "Sequence number" -msgstr "El número F." - -#: src/fujimn.cpp:234 -#, fuzzy -msgid "FinePix Color" -msgstr "Patrón CFA" - -#: src/fujimn.cpp:235 -msgid "Fuji FinePix color setting" -msgstr "Ajuste de color Fuji FinePix" - -#: src/fujimn.cpp:237 -#, fuzzy -msgid "Blur Warning" -msgstr "Nitidez" - -#: src/fujimn.cpp:238 -msgid "Blur warning status" -msgstr "" - -#: src/fujimn.cpp:240 -#, fuzzy -msgid "Focus Warning" -msgstr "Modo de exposición" - -#: src/fujimn.cpp:241 -#, fuzzy -msgid "Auto Focus warning status" -msgstr "Modo de exposición" - -#: src/fujimn.cpp:243 -#, fuzzy -msgid "Exposure Warning" -msgstr "Ãndice de exposición" - -#: src/fujimn.cpp:244 -#, fuzzy -msgid "Auto exposure warning status" -msgstr "Ãndice de exposición" - -#: src/fujimn.cpp:246 -#, fuzzy -msgid "Dynamic Range" -msgstr "formato planar" - -#: src/fujimn.cpp:247 -#, fuzzy -msgid "Dynamic range" -msgstr "formato planar" - -#: src/fujimn.cpp:249 src/panasonicmn.cpp:273 -#, fuzzy -msgid "Film Mode" -msgstr "Modo de exposición" - -#: src/fujimn.cpp:250 src/panasonicmn.cpp:273 -#, fuzzy -msgid "Film mode" -msgstr "Flash" - -#: src/fujimn.cpp:252 -#, fuzzy -msgid "Dynamic Range Setting" -msgstr "Balance de blanco" - -#: src/fujimn.cpp:253 -#, fuzzy -msgid "Dynamic range settings" -msgstr "Balance de blanco" - -#: src/fujimn.cpp:255 -msgid "Development Dynamic Range" -msgstr "" - -#: src/fujimn.cpp:256 -#, fuzzy -msgid "Development dynamic range" -msgstr "Orientación" - -#: src/fujimn.cpp:258 -#, fuzzy -msgid "Minimum Focal Length" -msgstr "Distancia focal" - -#: src/fujimn.cpp:259 -#, fuzzy -msgid "Minimum focal length" -msgstr "Distancia focal" - -#: src/fujimn.cpp:261 -#, fuzzy -msgid "Maximum Focal Length" -msgstr "Distancia focal" - -#: src/fujimn.cpp:262 -#, fuzzy -msgid "Maximum focal length" -msgstr "Distancia focal" - -#: src/fujimn.cpp:264 -#, fuzzy -msgid "Maximum Aperture at Mininimum Focal" -msgstr "apertura" - -#: src/fujimn.cpp:265 -#, fuzzy -msgid "Maximum aperture at mininimum focal" -msgstr "apertura" - -#: src/fujimn.cpp:267 -#, fuzzy -msgid "Maximum Aperture at Maxinimum Focal" -msgstr "apertura" - -#: src/fujimn.cpp:268 -#, fuzzy -msgid "Maximum aperture at maxinimum focal" -msgstr "apertura" - -#: src/fujimn.cpp:270 src/properties.cpp:577 src/tags.cpp:1759 -msgid "File Source" -msgstr "Fuente de archivo" - -#: src/fujimn.cpp:271 -#, fuzzy -msgid "File source" -msgstr "Fuente de archivo" - -#: src/fujimn.cpp:273 -#, fuzzy -msgid "Order Number" -msgstr "ID único de imagen" - -#: src/fujimn.cpp:274 -#, fuzzy -msgid "Order number" -msgstr "ID único de imagen" - -#: src/fujimn.cpp:276 -#, fuzzy -msgid "Frame Number" -msgstr "ID único de imagen" - -#: src/fujimn.cpp:277 src/pentaxmn.cpp:977 src/pentaxmn.cpp:978 -#, fuzzy -msgid "Frame number" -msgstr "ID único de imagen" - -#: src/fujimn.cpp:281 -#, fuzzy -msgid "Unknown FujiMakerNote tag" -msgstr "Versión Exif" - -#: src/minoltamn.cpp:56 -#, fuzzy -msgid "Natural Color" -msgstr "Manual" - -#: src/minoltamn.cpp:58 src/minoltamn.cpp:1885 -#, fuzzy -msgid "Vivid Color" -msgstr "Espacio de color" - -#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 -#, fuzzy -msgid "Solarization" -msgstr "Saturación" - -#: src/minoltamn.cpp:60 src/minoltamn.cpp:1891 -msgid "AdobeRGB" -msgstr "" - -#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:611 -#: src/olympusmn.cpp:853 src/panasonicmn.cpp:198 src/pentaxmn.cpp:702 -#, fuzzy -msgid "Natural" -msgstr "Manual" - -#: src/minoltamn.cpp:64 -#, fuzzy -msgid "Natural sRGB" -msgstr "Manual" - -#: src/minoltamn.cpp:65 -#, fuzzy -msgid "Natural+ sRGB" -msgstr "Manual" - -#: src/minoltamn.cpp:67 -#, fuzzy -msgid "Evening" -msgstr "Velocidad ISO" - -#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2040 -#: src/sonymn.cpp:526 -#, fuzzy -msgid "Night Portrait" -msgstr "Retrato" - -#: src/minoltamn.cpp:75 src/minoltamn.cpp:2057 -#, fuzzy -msgid "Super Fine" -msgstr "pulg" - -#: src/minoltamn.cpp:79 src/minoltamn.cpp:2003 src/minoltamn.cpp:2061 -msgid "Extra Fine" -msgstr "" - -#: src/minoltamn.cpp:90 -#, fuzzy -msgid "Makernote Version" -msgstr "Versión Exif" - -#: src/minoltamn.cpp:91 -msgid "String 'MLT0' (not null terminated)" -msgstr "" - -#: src/minoltamn.cpp:93 -#, fuzzy -msgid "Camera Settings (Std Old)" -msgstr "Contraste" - -#: src/minoltamn.cpp:94 -msgid "" -"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" -msgstr "" - -#: src/minoltamn.cpp:96 -#, fuzzy -msgid "Camera Settings (Std New)" -msgstr "Contraste" - -#: src/minoltamn.cpp:97 -msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" -msgstr "" - -#: src/minoltamn.cpp:99 -#, fuzzy -msgid "Camera Settings (7D)" -msgstr "Contraste" - -#: src/minoltamn.cpp:100 -#, fuzzy -msgid "Camera Settings (for Dynax 7D model)" -msgstr "Contraste" - -#: src/minoltamn.cpp:102 -#, fuzzy -msgid "Image Stabilization Data" -msgstr "Orientación" - -#: src/minoltamn.cpp:103 -#, fuzzy -msgid "Image stabilization data" -msgstr "Orientación" - -#: src/minoltamn.cpp:107 -msgid "WB Info A100" -msgstr "" - -#: src/minoltamn.cpp:108 -msgid "White balance information for the Sony DSLR-A100" -msgstr "" - -#: src/minoltamn.cpp:111 -#, fuzzy -msgid "Compressed Image Size" -msgstr "Bits comprimidos por pixel" - -#: src/minoltamn.cpp:112 -#, fuzzy -msgid "Compressed image size" -msgstr "Bits comprimidos por pixel" - -#: src/minoltamn.cpp:115 -msgid "Jpeg thumbnail 640x480 pixels" -msgstr "miniatura Jpeg 640x480 pixeles" - -#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 -#, fuzzy -msgid "Thumbnail Offset" -msgstr "Desplazamiento de miniatura" - -#: src/minoltamn.cpp:118 -msgid "Offset of the thumbnail" -msgstr "" - -#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 -#, fuzzy -msgid "Thumbnail Length" -msgstr "Longitud de la miniatura" - -#: src/minoltamn.cpp:121 -#, fuzzy -msgid "Size of the thumbnail" -msgstr "Tamaño de la miniatura" - -# msgstr "Desplazamiento de tira" -#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:573 -#: src/olympusmn.cpp:252 src/olympusmn.cpp:684 src/panasonicmn.cpp:282 -#: src/sonymn.cpp:363 src/sonymn.cpp:364 -#, fuzzy -msgid "Scene Mode" -msgstr "Tipo de escena" - -#: src/minoltamn.cpp:128 src/minoltamn.cpp:1406 src/nikonmn.cpp:219 -#: src/nikonmn.cpp:462 src/nikonmn.cpp:526 src/panasonicmn.cpp:263 -#: src/sonymn.cpp:381 src/sonymn.cpp:382 -#, fuzzy -msgid "Color Mode" -msgstr "Espacio de color" - -#: src/minoltamn.cpp:129 src/minoltamn.cpp:1407 src/nikonmn.cpp:220 -#: src/nikonmn.cpp:463 src/nikonmn.cpp:526 src/panasonicmn.cpp:263 -#, fuzzy -msgid "Color mode" -msgstr "Espacio de color" - -#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 -#: src/minoltamn.cpp:990 src/panasonicmn.cpp:236 src/sonymn.cpp:274 -#, fuzzy -msgid "Image Quality" -msgstr "Ancho de la imagen" - -#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 -msgid "0x0103" -msgstr "" - -#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:671 -#: src/sonymn.cpp:277 -#, fuzzy -msgid "Flash Exposure Compensation" -msgstr "Tiempo de exposición" - -#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:278 -#, fuzzy -msgid "Flash exposure compensation in EV" -msgstr "Tiempo de exposición" - -#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:280 -#: src/sonymn.cpp:281 -#, fuzzy -msgid "Teleconverter Model" -msgstr "Tipo de escena" - -#: src/minoltamn.cpp:150 -msgid "RAW+JPG Recording" -msgstr "" - -#: src/minoltamn.cpp:151 -msgid "RAW and JPG files recording" -msgstr "" - -#: src/minoltamn.cpp:153 src/sonymn.cpp:366 src/sonymn.cpp:367 -#, fuzzy -msgid "Zone Matching" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/minoltamn.cpp:154 -#, fuzzy -msgid "Zone matching" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1039 -#: src/minoltamn.cpp:1476 src/minoltamn.cpp:1578 -#, fuzzy -msgid "Color temperature" -msgstr "Temperatura de color" - -# msgstr "Espacio de color" -#: src/minoltamn.cpp:159 src/sonymn.cpp:375 -#, fuzzy -msgid "Lens ID" -msgstr "Lente" - -# msgstr "Ancho de la imagen" -#: src/minoltamn.cpp:160 src/sonymn.cpp:376 -#, fuzzy -msgid "Lens identifier" -msgstr "Centímetro" - -#: src/minoltamn.cpp:162 src/minoltamn.cpp:1478 src/minoltamn.cpp:1580 -#: src/sonymn.cpp:360 -#, fuzzy -msgid "Color Compensation Filter" -msgstr "Tiempo de exposición" - -#: src/minoltamn.cpp:163 src/sonymn.cpp:361 -msgid "Color Compensation Filter: negative is green, positive is magenta" -msgstr "" -"Filtro de compensación del color: el verde es negativo, el magenta es " -"positivo" - -#: src/minoltamn.cpp:165 src/minoltamn.cpp:1472 src/sonymn.cpp:283 -#: src/sonymn.cpp:563 src/sonymn.cpp:564 -#, fuzzy -msgid "White Balance Fine Tune" -msgstr "Balance de blanco" - -#: src/minoltamn.cpp:166 src/sonymn.cpp:284 -#, fuzzy -msgid "White Balance Fine Tune Value" -msgstr "Balance de blanco" - -#: src/minoltamn.cpp:168 -#, fuzzy -msgid "Image Stabilization A100" -msgstr "Orientación" - -#: src/minoltamn.cpp:169 -#, fuzzy -msgid "Image Stabilization for the Sony DSLR-A100" -msgstr "Orientación" - -#: src/minoltamn.cpp:173 -#, fuzzy -msgid "Camera Settings (5D)" -msgstr "Contraste" - -#: src/minoltamn.cpp:174 -#, fuzzy -msgid "Camera Settings (for Dynax 5D model)" -msgstr "Contraste" - -#: src/minoltamn.cpp:180 src/nikonmn.cpp:607 src/olympusmn.cpp:258 -#: src/panasonicmn.cpp:279 src/sonymn.cpp:295 -msgid "Print IM" -msgstr "" - -#: src/minoltamn.cpp:181 src/nikonmn.cpp:607 src/olympusmn.cpp:259 -#: src/panasonicmn.cpp:279 src/sonymn.cpp:296 -#, fuzzy -msgid "PrintIM information" -msgstr "Orientación" - -#: src/minoltamn.cpp:183 -#, fuzzy -msgid "Camera Settings (Z1)" -msgstr "Contraste" - -#: src/minoltamn.cpp:184 -msgid "Camera Settings (for Z1, DImage X, and F100 models)" -msgstr "" - -#: src/minoltamn.cpp:188 -#, fuzzy -msgid "Unknown Minolta MakerNote tag" -msgstr "Versión Exif" - -#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 -#: src/panasonicmn.cpp:107 src/sigmamn.cpp:155 src/sonymn.cpp:111 -#: src/tags.cpp:1404 -msgid "Aperture priority" -msgstr "Prioridad de apertura" - -#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 -#: src/sigmamn.cpp:156 src/sonymn.cpp:112 src/tags.cpp:1405 -msgid "Shutter priority" -msgstr "Prioridad del obturador" - -#: src/minoltamn.cpp:209 src/minoltamn.cpp:1122 -#, fuzzy -msgid "Fill flash" -msgstr "Flash" - -#: src/minoltamn.cpp:211 src/minoltamn.cpp:1120 -msgid "Rear flash sync" -msgstr "" - -#: src/minoltamn.cpp:212 src/minoltamn.cpp:1121 -#, fuzzy -msgid "Wireless" -msgstr "Orden de llenado" - -#: src/minoltamn.cpp:224 -#, fuzzy -msgid "Fluorescent 2" -msgstr "Fluorescente" - -#: src/minoltamn.cpp:231 -#, fuzzy -msgid "Full size" -msgstr "Fuente de archivo" - -#: src/minoltamn.cpp:243 -msgid "Super fine" -msgstr "" - -#: src/minoltamn.cpp:247 -msgid "Extra fine" -msgstr "" - -#: src/minoltamn.cpp:252 src/minoltamn.cpp:1099 src/minoltamn.cpp:1148 -#: src/sonymn.cpp:447 -#, fuzzy -msgid "Single Frame" -msgstr "Nombre del documento" - -#: src/minoltamn.cpp:254 src/minoltamn.cpp:1150 -#, fuzzy -msgid "Self-timer" -msgstr "Centímetro" - -#: src/minoltamn.cpp:255 -#, fuzzy -msgid "Bracketing" -msgstr "Horquillado" - -#: src/minoltamn.cpp:256 -#, fuzzy -msgid "Interval" -msgstr "Intervalo" - -#: src/minoltamn.cpp:257 -#, fuzzy -msgid "UHS continuous" -msgstr "Exposición automática" - -#: src/minoltamn.cpp:258 -#, fuzzy -msgid "HS continuous" -msgstr "Exposición automática" - -#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1127 -#: src/sonymn.cpp:468 src/tags.cpp:1419 -#, fuzzy -msgid "Multi-segment" -msgstr "multi-lugar" - -#: src/minoltamn.cpp:264 src/minoltamn.cpp:1128 src/sonymn.cpp:469 -#: src/tags.cpp:1416 -#, fuzzy -msgid "Center weighted average" -msgstr "Promedio Ponderado en el Centro" - -#: src/minoltamn.cpp:271 -msgid "Electronic magnification" -msgstr "" - -#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:1951 -#: src/nikonmn.cpp:100 src/nikonmn.cpp:793 src/nikonmn.cpp:808 -#: src/pentaxmn.cpp:216 -#, fuzzy -msgid "Top" -msgstr "acción" - -#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:234 -#, fuzzy -msgid "Top-right" -msgstr "Copyright" - -#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:240 -#, fuzzy -msgid "Bottom-right" -msgstr "abajo - derecha" - -#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:1955 -#: src/nikonmn.cpp:101 src/nikonmn.cpp:794 src/nikonmn.cpp:809 -#: src/pentaxmn.cpp:224 -#, fuzzy -msgid "Bottom" -msgstr "izquierda - abajo" - -#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:238 -#, fuzzy -msgid "Bottom-left" -msgstr "abajo - izquierda" - -#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:232 -#, fuzzy -msgid "Top-left" -msgstr "arriba - izquierda" - -#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:368 -#: src/tags.cpp:1521 -msgid "Hard" -msgstr "Duro" - -#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:366 -#: src/tags.cpp:1520 -msgid "Soft" -msgstr "Suave" - -#: src/minoltamn.cpp:313 src/panasonicmn.cpp:105 -#, fuzzy -msgid "Night portrait" -msgstr "retrato" - -#: src/minoltamn.cpp:315 -#, fuzzy -msgid "Sports action" -msgstr "Lugar" - -#: src/minoltamn.cpp:344 -msgid "Time-lapse movie" -msgstr "" - -#: src/minoltamn.cpp:349 -#, fuzzy -msgid "Standard form" -msgstr "Estándar" - -#: src/minoltamn.cpp:350 -#, fuzzy -msgid "Data form" -msgstr "formato planar" - -#: src/minoltamn.cpp:355 -#, fuzzy -msgid "Natural color" -msgstr "Manual" - -#: src/minoltamn.cpp:356 src/panasonicmn.cpp:70 src/panasonicmn.cpp:148 -msgid "Black and white" -msgstr "" - -#: src/minoltamn.cpp:357 -msgid "Vivid color" -msgstr "" - -#: src/minoltamn.cpp:364 -#, fuzzy -msgid "No zone" -msgstr "Desconocido" - -#: src/minoltamn.cpp:365 -msgid "Center zone (horizontal orientation)" -msgstr "" - -#: src/minoltamn.cpp:366 -msgid "Center zone (vertical orientation)" -msgstr "" - -#: src/minoltamn.cpp:367 -#, fuzzy -msgid "Left zone" -msgstr "Escena nocturna" - -#: src/minoltamn.cpp:368 -#, fuzzy -msgid "Right zone" -msgstr "Escena nocturna" - -#: src/minoltamn.cpp:373 src/olympusmn.cpp:999 -#, fuzzy -msgid "Auto focus" -msgstr "Exposición automática" - -#: src/minoltamn.cpp:379 -#, fuzzy -msgid "Wide focus (normal)" -msgstr "Modo de exposición" - -#: src/minoltamn.cpp:380 -#, fuzzy -msgid "Spot focus" -msgstr "Lugar" - -#: src/minoltamn.cpp:385 src/properties.cpp:452 src/sigmamn.cpp:86 -#: src/sigmamn.cpp:87 -#, fuzzy -msgid "Exposure" -msgstr "Modo de exposición" - -#: src/minoltamn.cpp:388 -#, fuzzy -msgid "Filter" -msgstr "Orden de llenado" - -#: src/minoltamn.cpp:393 -#, fuzzy -msgid "Not embedded" -msgstr "No definido" - -#: src/minoltamn.cpp:394 -#, fuzzy -msgid "Embedded" -msgstr "No definido" - -#: src/minoltamn.cpp:403 -msgid "Text + ID#" -msgstr "" - -#: src/minoltamn.cpp:408 -msgid "ADI (Advanced Distance Integration)" -msgstr "" - -#: src/minoltamn.cpp:409 -msgid "Pre-flash TTl" -msgstr "" - -#: src/minoltamn.cpp:410 -#, fuzzy -msgid "Manual flash control" -msgstr "Exposición manual" - -#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:984 -#: src/minoltamn.cpp:1352 src/olympusmn.cpp:659 src/properties.cpp:581 -#: src/sigmamn.cpp:74 src/sonymn.cpp:393 src/sonymn.cpp:394 src/tags.cpp:1780 -msgid "Exposure Mode" -msgstr "Modo de exposición" - -#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 -#: src/olympusmn.cpp:670 src/pentaxmn.cpp:896 -#, fuzzy -msgid "Flash mode" -msgstr "Flash" - -#: src/minoltamn.cpp:506 src/minoltamn.cpp:1428 src/olympusmn.cpp:700 -#: src/pentaxmn.cpp:991 src/pentaxmn.cpp:992 src/sigmamn.cpp:60 -#, fuzzy -msgid "Drive mode" -msgstr "Retrato" - -#: src/minoltamn.cpp:512 -#, fuzzy -msgid "ISO Value" -msgstr "Velocidad ISO" - -#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1023 -#: src/minoltamn.cpp:1367 src/properties.cpp:548 src/tags.cpp:782 -#: src/tags.cpp:1542 -msgid "Exposure Time" -msgstr "Tiempo de exposición" - -#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1026 -#: src/minoltamn.cpp:1370 src/minoltamn.cpp:1371 src/tags.cpp:783 -#: src/tags.cpp:1545 -#, fuzzy -msgid "FNumber" -msgstr "El número F." - -#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1027 -#, fuzzy -msgid "The F-Number" -msgstr "El número F." - -#: src/minoltamn.cpp:520 src/olympusmn.cpp:663 -#, fuzzy -msgid "Macro Mode" -msgstr "Macro" - -#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1044 -#, fuzzy -msgid "Exposure Compensation" -msgstr "Tiempo de exposición" - -#: src/minoltamn.cpp:529 -#, fuzzy -msgid "Bracket Step" -msgstr "acción" - -#: src/minoltamn.cpp:530 -#, fuzzy -msgid "Bracket step" -msgstr "acción" - -#: src/minoltamn.cpp:532 -#, fuzzy -msgid "Interval Length" -msgstr "Distancia focal" - -#: src/minoltamn.cpp:533 -#, fuzzy -msgid "Interval length" -msgstr "Distancia focal" - -#: src/minoltamn.cpp:535 -#, fuzzy -msgid "Interval Number" -msgstr "El número F." - -#: src/minoltamn.cpp:536 -#, fuzzy -msgid "Interval number" -msgstr "El número F." - -#: src/minoltamn.cpp:541 src/nikonmn.cpp:252 src/nikonmn.cpp:564 -#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1371 src/olympusmn.cpp:303 -#: src/olympusmn.cpp:1007 -#, fuzzy -msgid "Focus Distance" -msgstr "Balance de blanco manual" - -#: src/minoltamn.cpp:542 src/nikonmn.cpp:1346 src/nikonmn.cpp:1371 -#: src/olympusmn.cpp:1007 -#, fuzzy -msgid "Focus distance" -msgstr "Balance de blanco manual" - -#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1002 -#, fuzzy -msgid "Flash Fired" -msgstr "El flash disparó." - -#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1003 -#, fuzzy -msgid "Flash fired" -msgstr "El flash disparó." - -#: src/minoltamn.cpp:547 -#, fuzzy -msgid "Minolta Date" -msgstr "Modo de métrica" - -#: src/minoltamn.cpp:548 -#, fuzzy -msgid "Minolta date" -msgstr "Modo de métrica" - -#: src/minoltamn.cpp:550 -#, fuzzy -msgid "Minolta Time" -msgstr "Retrato" - -#: src/minoltamn.cpp:551 -#, fuzzy -msgid "Minolta time" -msgstr "Retrato" - -#: src/minoltamn.cpp:556 -#, fuzzy -msgid "File Number Memory" -msgstr "El número F." - -#: src/minoltamn.cpp:557 -#, fuzzy -msgid "File number memory" -msgstr "Nombre del documento" - -#: src/minoltamn.cpp:559 -#, fuzzy -msgid "Last Image Number" -msgstr "ID único de imagen" - -#: src/minoltamn.cpp:560 -#, fuzzy -msgid "Last image number" -msgstr "ID único de imagen" - -#: src/minoltamn.cpp:562 -#, fuzzy -msgid "Color Balance Red" -msgstr "Espacio de color" - -#: src/minoltamn.cpp:563 -#, fuzzy -msgid "Color balance red" -msgstr "Espacio de color" - -#: src/minoltamn.cpp:565 -#, fuzzy -msgid "Color Balance Green" -msgstr "Espacio de color" - -#: src/minoltamn.cpp:566 -#, fuzzy -msgid "Color balance green" -msgstr "Espacio de color" - -#: src/minoltamn.cpp:568 -#, fuzzy -msgid "Color Balance Blue" -msgstr "Espacio de color" - -#: src/minoltamn.cpp:569 -#, fuzzy -msgid "Color balance blue" -msgstr "Espacio de color" - -#: src/minoltamn.cpp:580 -#, fuzzy -msgid "Subject Program" -msgstr "Ãrea del sujeto" - -#: src/minoltamn.cpp:581 -#, fuzzy -msgid "Subject program" -msgstr "Ãrea del sujeto" - -#: src/minoltamn.cpp:586 src/nikonmn.cpp:542 -#, fuzzy -msgid "ISO Settings" -msgstr "Velocidad ISO" - -#: src/minoltamn.cpp:587 src/minoltamn.cpp:1398 src/nikonmn.cpp:542 -#, fuzzy -msgid "ISO setting" -msgstr "Velocidad ISO" - -#: src/minoltamn.cpp:589 -#, fuzzy -msgid "Minolta Model" -msgstr "Modo de métrica" - -#: src/minoltamn.cpp:590 -#, fuzzy -msgid "Minolta model" -msgstr "Retrato" - -#: src/minoltamn.cpp:592 -#, fuzzy -msgid "Interval Mode" -msgstr "Modo de métrica" - -#: src/minoltamn.cpp:593 -#, fuzzy -msgid "Interval mode" -msgstr "Retrato" - -#: src/minoltamn.cpp:595 -#, fuzzy -msgid "Folder Name" -msgstr "Nombre del documento" - -#: src/minoltamn.cpp:596 -#, fuzzy -msgid "Folder name" -msgstr "Nombre del documento" - -#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 -#, fuzzy -msgid "ColorMode" -msgstr "Espacio de color" - -#: src/minoltamn.cpp:601 src/minoltamn.cpp:1204 src/pentaxmn.cpp:462 -#, fuzzy -msgid "Color Filter" -msgstr "Espacio de color" - -#: src/minoltamn.cpp:602 -#, fuzzy -msgid "Color filter" -msgstr "Espacio de color" - -#: src/minoltamn.cpp:604 -msgid "Black and White Filter" -msgstr "" - -#: src/minoltamn.cpp:605 -msgid "Black and white filter" -msgstr "" - -#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1013 -#, fuzzy -msgid "Internal Flash" -msgstr "Retrato" - -#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:698 -#: src/olympusmn.cpp:276 src/properties.cpp:438 src/sonymn.cpp:602 -#: src/sonymn.cpp:603 src/tags.cpp:1630 -msgid "Brightness" -msgstr "Brillo" - -#: src/minoltamn.cpp:613 -#, fuzzy -msgid "Spot Focus Point X" -msgstr "Lugar" - -#: src/minoltamn.cpp:614 -#, fuzzy -msgid "Spot focus point X" -msgstr "Lugar" - -#: src/minoltamn.cpp:616 -#, fuzzy -msgid "Spot Focus Point Y" -msgstr "Lugar" - -#: src/minoltamn.cpp:617 -#, fuzzy -msgid "Spot focus point Y" -msgstr "Lugar" - -#: src/minoltamn.cpp:619 -#, fuzzy -msgid "Wide Focus Zone" -msgstr "Modo de exposición" - -#: src/minoltamn.cpp:620 -#, fuzzy -msgid "Wide focus zone" -msgstr "Modo de exposición" - -#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1036 -#: src/minoltamn.cpp:1380 src/nikonmn.cpp:232 src/nikonmn.cpp:475 -#: src/nikonmn.cpp:530 src/olympusmn.cpp:301 src/olympusmn.cpp:664 -#: src/panasonicmn.cpp:240 src/pentaxmn.cpp:899 -#, fuzzy -msgid "Focus mode" -msgstr "Modo de exposición" - -#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1000 -#, fuzzy -msgid "Focus area" -msgstr "Modo de exposición" - -#: src/minoltamn.cpp:628 -#, fuzzy -msgid "DEC Switch Position" -msgstr "Posicionamiento YCbCr" - -#: src/minoltamn.cpp:629 -#, fuzzy -msgid "DEC switch position" -msgstr "Posicionamiento YCbCr" - -#: src/minoltamn.cpp:631 -#, fuzzy -msgid "Color Profile" -msgstr "Espacio de color" - -#: src/minoltamn.cpp:632 -#, fuzzy -msgid "Color profile" -msgstr "Espacio de color" - -#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 -#, fuzzy -msgid "Data Imprint" -msgstr "formato planar" - -#: src/minoltamn.cpp:637 src/minoltamn.cpp:1421 -#, fuzzy -msgid "Flash Metering" -msgstr "Contraste" - -#: src/minoltamn.cpp:638 src/minoltamn.cpp:1422 -#, fuzzy -msgid "Flash metering" -msgstr "Contraste" - -#: src/minoltamn.cpp:642 -#, fuzzy -msgid "Unknown Minolta Camera Settings tag" -msgstr "Contraste" - -#: src/minoltamn.cpp:660 -#, fuzzy -msgid "Program-shift A" -msgstr "Modo de exposición" - -#: src/minoltamn.cpp:661 -#, fuzzy -msgid "Program-shift S" -msgstr "Modo de exposición" - -#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 -#, fuzzy -msgid "Raw+Jpeg" -msgstr "Ancho de la imagen" - -#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/pentaxmn.cpp:322 -#, fuzzy -msgid "Kelvin" -msgstr "Versión Exif" - -#: src/minoltamn.cpp:695 -#, fuzzy -msgid "Single-shot AF" -msgstr "Nombre del documento" - -#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1371 -#, fuzzy -msgid "Continuous AF" -msgstr "Exposición automática" - -#: src/minoltamn.cpp:698 -#, fuzzy -msgid "Automatic AF" -msgstr "multi-lugar" - -#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 -#, fuzzy -msgid "sRGB (Natural)" -msgstr "Manual" - -#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 -#, fuzzy -msgid "sRGB (Natural+)" -msgstr "Manual" - -#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2019 -#: src/panasonicmn.cpp:190 -msgid "Horizontal (normal)" -msgstr "" - -#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2020 -#: src/panasonicmn.cpp:191 -msgid "Rotate 90 CW" -msgstr "" - -#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2021 -#: src/panasonicmn.cpp:192 -msgid "Rotate 270 CW" -msgstr "" - -#: src/minoltamn.cpp:756 -#, fuzzy -msgid "AF Points" -msgstr "Punto blanco" - -#: src/minoltamn.cpp:757 -#, fuzzy -msgid "AF points" -msgstr "Punto blanco" - -#: src/minoltamn.cpp:771 src/minoltamn.cpp:1011 src/minoltamn.cpp:1409 -#: src/nikonmn.cpp:551 src/olympusmn.cpp:683 src/olympusmn.cpp:802 -#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 src/properties.cpp:532 -#: src/sigmamn.cpp:83 src/tags.cpp:1684 -msgid "Color Space" -msgstr "Espacio de color" - -#: src/minoltamn.cpp:772 src/minoltamn.cpp:1012 src/minoltamn.cpp:1410 -#: src/nikonmn.cpp:551 src/olympusmn.cpp:683 src/olympusmn.cpp:817 -#: src/olympusmn.cpp:888 src/pentaxmn.cpp:995 src/pentaxmn.cpp:996 -#: src/sigmamn.cpp:84 -#, fuzzy -msgid "Color space" -msgstr "Espacio de color" - -#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1029 -#: src/minoltamn.cpp:1047 src/minoltamn.cpp:1457 -msgid "Free Memory Card Images" -msgstr "" - -#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1030 -#: src/minoltamn.cpp:1048 src/minoltamn.cpp:1458 -msgid "Free memory card images" -msgstr "" - -#: src/minoltamn.cpp:789 -#, fuzzy -msgid "Hue" -msgstr "Espacio de color" - -#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1041 -#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1571 src/minoltamn.cpp:1572 -#: src/panasonicmn.cpp:261 src/sonymn.cpp:638 src/sonymn.cpp:639 -#: src/sonymn.cpp:711 src/sonymn.cpp:712 -#, fuzzy -msgid "Rotation" -msgstr "acción" - -#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1065 -#: src/tags.cpp:835 -#, fuzzy -msgid "Image Number" -msgstr "ID único de imagen" - -#: src/minoltamn.cpp:808 src/minoltamn.cpp:1069 src/minoltamn.cpp:1494 -#: src/nikonmn.cpp:579 src/olympusmn.cpp:439 src/olympusmn.cpp:685 -#: src/olympusmn.cpp:819 src/olympusmn.cpp:889 src/olympusmn.cpp:974 -#: src/panasonicmn.cpp:258 src/pentaxmn.cpp:1024 src/pentaxmn.cpp:1025 -#, fuzzy -msgid "Noise reduction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/minoltamn.cpp:817 -msgid "Zone Matching On" -msgstr "" - -#: src/minoltamn.cpp:818 -#, fuzzy -msgid "Zone matching on" -msgstr "Tiempo de exposición" - -#: src/minoltamn.cpp:822 -#, fuzzy -msgid "Unknown Minolta Camera Settings 7D tag" -msgstr "Contraste" - -#: src/minoltamn.cpp:840 src/sonymn.cpp:521 -#, fuzzy -msgid "Program Shift A" -msgstr "Modo de exposición" - -#: src/minoltamn.cpp:841 src/sonymn.cpp:522 -#, fuzzy -msgid "Program Shift S" -msgstr "Modo de exposición" - -#: src/minoltamn.cpp:845 src/minoltamn.cpp:1889 src/minoltamn.cpp:2044 -#: src/sonymn.cpp:480 -#, fuzzy -msgid "Night View/Portrait" -msgstr "Retrato" - -#: src/minoltamn.cpp:895 -msgid "200 (Zone Matching High)" -msgstr "" - -#: src/minoltamn.cpp:896 -msgid "80 (Zone Matching Low)" -msgstr "" - -#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 -msgid "Adobe RGB (ICC)" -msgstr "" - -#: src/minoltamn.cpp:918 -#, fuzzy -msgid "Central" -msgstr "Centímetro" - -#: src/minoltamn.cpp:919 -msgid "Up" -msgstr "" - -#: src/minoltamn.cpp:920 -#, fuzzy -msgid "Up right" -msgstr "arriba - derecha" - -#: src/minoltamn.cpp:922 -#, fuzzy -msgid "Down right" -msgstr "arriba - derecha" - -#: src/minoltamn.cpp:923 -#, fuzzy -msgid "Down" -msgstr "arriba - izquierda" - -#: src/minoltamn.cpp:924 -#, fuzzy -msgid "Down left" -msgstr "arriba - izquierda" - -#: src/minoltamn.cpp:926 -#, fuzzy -msgid "Up left" -msgstr "arriba - izquierda" - -#: src/minoltamn.cpp:932 -#, fuzzy -msgid "Selection" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/minoltamn.cpp:947 -#, fuzzy -msgid "Natural+" -msgstr "Manual" - -#: src/minoltamn.cpp:949 -#, fuzzy -msgid "Wind Scene" -msgstr "Escena nocturna" - -#: src/minoltamn.cpp:950 -#, fuzzy -msgid "Evening Scene" -msgstr "Velocidad ISO" - -#: src/minoltamn.cpp:996 src/nikonmn.cpp:1345 src/nikonmn.cpp:1370 -#, fuzzy -msgid "Focus Position" -msgstr "Posicionamiento YCbCr" - -#: src/minoltamn.cpp:997 src/nikonmn.cpp:1345 src/nikonmn.cpp:1370 -#, fuzzy -msgid "Focus position" -msgstr "Posicionamiento YCbCr" - -#: src/minoltamn.cpp:999 -#, fuzzy -msgid "Focus Area" -msgstr "Modo de exposición" - -#: src/minoltamn.cpp:1032 -#, fuzzy -msgid "Exposure Revision" -msgstr "Ajuste de exposición" - -#: src/minoltamn.cpp:1033 -#, fuzzy -msgid "Exposure revision" -msgstr "Ajuste de exposición" - -#: src/minoltamn.cpp:1050 src/minoltamn.cpp:1051 -#, fuzzy -msgid "Rotation2" -msgstr "acción" - -#: src/minoltamn.cpp:1056 src/minoltamn.cpp:1057 -#, fuzzy -msgid "Picture Finish" -msgstr "Información de imágen" - -#: src/minoltamn.cpp:1059 -#, fuzzy -msgid "Exposure Manual Bias" -msgstr "Ajuste de exposición" - -#: src/minoltamn.cpp:1060 -#, fuzzy -msgid "Exposure manual bias" -msgstr "Ajuste de exposición" - -#: src/minoltamn.cpp:1062 src/panasonicmn.cpp:241 src/sonymn.cpp:399 -#: src/sonymn.cpp:400 -#, fuzzy -msgid "AF Mode" -msgstr "Modo de exposición" - -#: src/minoltamn.cpp:1063 src/panasonicmn.cpp:241 -#, fuzzy -msgid "AF mode" -msgstr "Flash" - -#: src/minoltamn.cpp:1083 -#, fuzzy -msgid "Unknown Minolta Camera Settings 5D tag" -msgstr "Contraste" - -#: src/minoltamn.cpp:1096 src/sonymn.cpp:449 -#, fuzzy -msgid "Self-timer 10 sec" -msgstr "Centímetro" - -#: src/minoltamn.cpp:1098 src/sonymn.cpp:450 -#, fuzzy -msgid "Self-timer 2 sec" -msgstr "Centímetro" - -#: src/minoltamn.cpp:1100 src/sonymn.cpp:453 -#, fuzzy -msgid "White Balance Bracketing Low" -msgstr "Agrupamiento bajo de Balance de blanco" - -#: src/minoltamn.cpp:1101 -#, fuzzy -msgid "White Balance Bracketing High" -msgstr "Agrupamiento alto Balance de blanco" - -#: src/minoltamn.cpp:1102 -#, fuzzy -msgid "Single-frame Bracketing Low" -msgstr "Nombre del documento" - -#: src/minoltamn.cpp:1103 -#, fuzzy -msgid "Continuous Bracketing Low" -msgstr "Auto bracket" - -#: src/minoltamn.cpp:1104 -#, fuzzy -msgid "Single-frame Bracketing High" -msgstr "Nombre del documento" - -#: src/minoltamn.cpp:1105 -#, fuzzy -msgid "Continuous Bracketing High" -msgstr "Auto bracket" - -#: src/minoltamn.cpp:1136 src/sonymn.cpp:158 -msgid "Advanced" -msgstr "Avanzado" - -#: src/minoltamn.cpp:1151 src/minoltamn.cpp:1433 src/sonymn.cpp:451 -#, fuzzy -msgid "Continuous Bracketing" -msgstr "Auto bracket" - -#: src/minoltamn.cpp:1152 -#, fuzzy -msgid "Single-Frame Bracketing" -msgstr "Nombre del documento" - -#: src/minoltamn.cpp:1153 src/minoltamn.cpp:1439 src/sonymn.cpp:225 -#, fuzzy -msgid "White Balance Bracketing" -msgstr "Balance de blanco" - -#: src/minoltamn.cpp:1183 src/minoltamn.cpp:1186 src/nikonmn.cpp:446 -#, fuzzy -msgid "Preset" -msgstr "Ãrea del sujeto" - -#: src/minoltamn.cpp:1185 src/minoltamn.cpp:1188 src/minoltamn.cpp:2093 -#, fuzzy -msgid "Color Temperature/Color Filter" -msgstr "Temperatura de color/ Filtro de color" - -#: src/minoltamn.cpp:1203 src/pentaxmn.cpp:1018 src/properties.cpp:465 -#, fuzzy -msgid "Temperature" -msgstr "Temperatura de color" - -#: src/minoltamn.cpp:1209 -#, fuzzy -msgid "Setup" -msgstr "Ãrea del sujeto" - -#: src/minoltamn.cpp:1210 -msgid "Recall" -msgstr "" - -#: src/minoltamn.cpp:1215 -msgid "Ok" -msgstr "Ok" - -#: src/minoltamn.cpp:1216 -msgid "Error" -msgstr "Error" - -#: src/minoltamn.cpp:1228 -#, fuzzy -msgid "Image and Information" -msgstr "Configuración planar" - -#: src/minoltamn.cpp:1229 -#, fuzzy -msgid "Image Only" -msgstr "Ancho de la imagen" - -#: src/minoltamn.cpp:1230 -#, fuzzy -msgid "Image and Histogram" -msgstr "Imágen e Histograma" - -#: src/minoltamn.cpp:1236 -#, fuzzy -msgid "Fill Flash" -msgstr "Flash de relleno" - -#: src/minoltamn.cpp:1247 -#, fuzzy -msgid "Focus Hold" -msgstr "Modo de exposición" - -#: src/minoltamn.cpp:1248 -#, fuzzy -msgid "DOF Preview" -msgstr "Versión Exif" - -#: src/minoltamn.cpp:1253 -msgid "Hold" -msgstr "" - -#: src/minoltamn.cpp:1254 -msgid "Toggle" -msgstr "" - -#: src/minoltamn.cpp:1255 -#, fuzzy -msgid "Spot Hold" -msgstr "Modo de métrica" - -#: src/minoltamn.cpp:1256 -#, fuzzy -msgid "Spot Toggle" -msgstr "Modo de métrica" - -#: src/minoltamn.cpp:1261 src/olympusmn.cpp:267 -#, fuzzy -msgid "Shutter Speed" -msgstr "Velocidad del obturador" - -#: src/minoltamn.cpp:1267 -msgid "Ambient and Flash" -msgstr "" - -#: src/minoltamn.cpp:1268 -msgid "Ambient Only" -msgstr "" - -#: src/minoltamn.cpp:1273 -msgid "0.3 seconds" -msgstr "" - -#: src/minoltamn.cpp:1274 -msgid "0.6 seconds" -msgstr "" - -#: src/minoltamn.cpp:1280 src/nikonmn.cpp:292 src/nikonmn.cpp:972 -#: src/nikonmn.cpp:1418 -#, fuzzy -msgid "Automatic" -msgstr "acción" - -#: src/minoltamn.cpp:1286 src/minoltamn.cpp:1292 -#, fuzzy -msgid "Auto-rotate" -msgstr "Contraste" - -#: src/minoltamn.cpp:1287 -msgid "Horizontal" -msgstr "" - -#: src/minoltamn.cpp:1293 -#, fuzzy -msgid "Manual Rotate" -msgstr "Exposición manual" - -#: src/minoltamn.cpp:1298 -#, fuzzy -msgid "Within Range" -msgstr "Rango de transferencia" - -#: src/minoltamn.cpp:1299 -#, fuzzy -msgid "Under/Over Range" -msgstr "Rango de transferencia" - -#: src/minoltamn.cpp:1300 -msgid "Out of Range" -msgstr "" - -#: src/minoltamn.cpp:1305 -#, fuzzy -msgid "Not Indicated" -msgstr "No definido" - -#: src/minoltamn.cpp:1306 -#, fuzzy -msgid "Under Scale" -msgstr "Tiempo bueno" - -#: src/minoltamn.cpp:1307 -#, fuzzy -msgid "Bottom of Scale" -msgstr "abajo - izquierda" - -#: src/minoltamn.cpp:1325 -msgid "Top of Scale" -msgstr "" - -#: src/minoltamn.cpp:1326 -#, fuzzy -msgid "Over Scale" -msgstr "Nombre del documento" - -#: src/minoltamn.cpp:1331 -msgid "AM" -msgstr "" - -#: src/minoltamn.cpp:1332 src/olympusmn.cpp:512 src/olympusmn.cpp:1374 -#: src/olympusmn.cpp:1384 -msgid "MF" -msgstr "Enfoque manual" - -#: src/minoltamn.cpp:1338 -msgid "Built-in" -msgstr "" - -#: src/minoltamn.cpp:1344 src/pentaxmn.cpp:347 src/pentaxmn.cpp:360 -#, fuzzy -msgid "Very Low" -msgstr "co-situado" - -#: src/minoltamn.cpp:1346 -#, fuzzy -msgid "Half Full" -msgstr "acción" - -#: src/minoltamn.cpp:1347 -msgid "Sufficient Power Remaining" -msgstr "" - -#: src/minoltamn.cpp:1355 -#, fuzzy -msgid "Exposure Compensation Setting" -msgstr "Tiempo de exposición" - -#: src/minoltamn.cpp:1356 -#, fuzzy -msgid "Exposure compensation setting" -msgstr "Tiempo de exposición" - -#: src/minoltamn.cpp:1358 -#, fuzzy -msgid "High Speed Sync" -msgstr "Escena nocturna" - -#: src/minoltamn.cpp:1359 -#, fuzzy -msgid "High speed sync" -msgstr "Escena nocturna" - -#: src/minoltamn.cpp:1361 -#, fuzzy -msgid "Manual Exposure Time" -msgstr "Exposición manual" - -#: src/minoltamn.cpp:1362 -#, fuzzy -msgid "Manual exposure time" -msgstr "Exposición manual" - -#: src/minoltamn.cpp:1364 src/minoltamn.cpp:1365 -#, fuzzy -msgid "Manual FNumber" -msgstr "El número F." - -#: src/minoltamn.cpp:1373 -#, fuzzy -msgid "Drive Mode 2" -msgstr "Modo de métrica" - -#: src/minoltamn.cpp:1374 -#, fuzzy -msgid "Drive mode 2" -msgstr "Retrato" - -#: src/minoltamn.cpp:1382 src/minoltamn.cpp:1383 src/sonymn.cpp:572 -#: src/sonymn.cpp:573 src/sonymn.cpp:678 src/sonymn.cpp:679 -msgid "Local AF Area Point" -msgstr "" - -#: src/minoltamn.cpp:1385 src/minoltamn.cpp:1386 src/nikonmn.cpp:822 -#: src/nikonmn.cpp:845 src/sonymn.cpp:569 src/sonymn.cpp:570 -#: src/sonymn.cpp:675 src/sonymn.cpp:676 -#, fuzzy -msgid "AF Area Mode" -msgstr "Modo de exposición" - -#: src/minoltamn.cpp:1388 src/minoltamn.cpp:1389 src/sonymn.cpp:605 -#: src/sonymn.cpp:606 src/sonymn.cpp:705 src/sonymn.cpp:706 -#, fuzzy -msgid "FlashMode" -msgstr "Flash" - -#: src/minoltamn.cpp:1391 -#, fuzzy -msgid "Flash Exposure Comp Setting" -msgstr "Tiempo de exposición" - -#: src/minoltamn.cpp:1392 -#, fuzzy -msgid "Flash exposure compensation setting" -msgstr "Tiempo de exposición" - -#: src/minoltamn.cpp:1397 src/sonymn.cpp:578 src/sonymn.cpp:579 -#: src/sonymn.cpp:684 src/sonymn.cpp:685 -#, fuzzy -msgid "ISO Setting" -msgstr "Velocidad ISO" - -#: src/minoltamn.cpp:1400 src/minoltamn.cpp:1401 -#, fuzzy -msgid "Zone Matching Mode" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/minoltamn.cpp:1403 src/sonymn.cpp:581 src/sonymn.cpp:582 -#: src/sonymn.cpp:687 src/sonymn.cpp:688 -#, fuzzy -msgid "Dynamic Range Optimizer Mode" -msgstr "Balance de blanco" - -#: src/minoltamn.cpp:1404 -#, fuzzy -msgid "Dynamic range optimizer mode" -msgstr "Balance de blanco" - -#: src/minoltamn.cpp:1424 src/minoltamn.cpp:1425 src/sonymn.cpp:609 -#: src/sonymn.cpp:610 -msgid "Priority Setup Shutter Release" -msgstr "" - -#: src/minoltamn.cpp:1430 -#, fuzzy -msgid "Self Timer Time" -msgstr "Centímetro" - -#: src/minoltamn.cpp:1431 -#, fuzzy -msgid "Self timer time" -msgstr "Centímetro" - -#: src/minoltamn.cpp:1434 -#, fuzzy -msgid "Continuous bracketing" -msgstr "Modo de exposición" - -#: src/minoltamn.cpp:1436 -#, fuzzy -msgid "Single Frame Bracketing" -msgstr "Balance de blanco" - -#: src/minoltamn.cpp:1437 -#, fuzzy -msgid "Single frame bracketing" -msgstr "Balance de blanco" - -#: src/minoltamn.cpp:1440 src/nikonmn.cpp:156 src/nikonmn.cpp:167 -#, fuzzy -msgid "White balance bracketing" -msgstr "Balance de blanco" - -#: src/minoltamn.cpp:1442 -#, fuzzy -msgid "White Balance Setting" -msgstr "Balance de blanco" - -#: src/minoltamn.cpp:1445 -#, fuzzy -msgid "Preset White Balance" -msgstr "Balance de blanco" - -#: src/minoltamn.cpp:1446 -#, fuzzy -msgid "Preset white balance" -msgstr "Balance de blanco manual" - -#: src/minoltamn.cpp:1448 -#, fuzzy -msgid "Color Temperature Setting" -msgstr "Espacio de color" - -#: src/minoltamn.cpp:1449 -#, fuzzy -msgid "Color temperature setting" -msgstr "Espacio de color" - -#: src/minoltamn.cpp:1451 -#, fuzzy -msgid "Custom WB Setting" -msgstr "Proceso personalizado" - -#: src/minoltamn.cpp:1452 -#, fuzzy -msgid "Custom WB setting" -msgstr "Proceso personalizado" - -#: src/minoltamn.cpp:1454 src/minoltamn.cpp:1455 -#, fuzzy -msgid "Dynamic Range Optimizer Settings" -msgstr "Balance de blanco" - -#: src/minoltamn.cpp:1460 -#, fuzzy -msgid "Custom WB Red Level" -msgstr "Nivel de la batería" - -#: src/minoltamn.cpp:1461 -#, fuzzy -msgid "Custom WB red level" -msgstr "Nivel de la batería" - -#: src/minoltamn.cpp:1463 -#, fuzzy -msgid "Custom WB Green Level" -msgstr "Nivel de la batería" - -#: src/minoltamn.cpp:1464 -#, fuzzy -msgid "Custom WB green level" -msgstr "Nivel de la batería" - -#: src/minoltamn.cpp:1466 -#, fuzzy -msgid "Custom WB Blue Level" -msgstr "Nivel de la batería" - -#: src/minoltamn.cpp:1467 -#, fuzzy -msgid "CustomWB blue level" -msgstr "Nivel de la batería" - -#: src/minoltamn.cpp:1469 src/minoltamn.cpp:1470 -#, fuzzy -msgid "Custom WB Error" -msgstr "Proceso personalizado" - -#: src/minoltamn.cpp:1473 -#, fuzzy -msgid "White balance fine tune" -msgstr "Balance de blanco" - -#: src/minoltamn.cpp:1479 -#, fuzzy -msgid "Color compensation filter" -msgstr "Tiempo de exposición" - -#: src/minoltamn.cpp:1481 src/minoltamn.cpp:1482 src/sonymn.cpp:641 -#: src/sonymn.cpp:642 src/sonymn.cpp:714 src/sonymn.cpp:715 -#, fuzzy -msgid "Sony Image Size" -msgstr "Ancho de la imagen" - -#: src/minoltamn.cpp:1487 -msgid "Instant Playback Time" -msgstr "" - -#: src/minoltamn.cpp:1488 -msgid "Instant playback time" -msgstr "" - -#: src/minoltamn.cpp:1490 -msgid "Instant Playback Setup" -msgstr "" - -#: src/minoltamn.cpp:1491 -msgid "Instant playback setup" -msgstr "" - -#: src/minoltamn.cpp:1496 -msgid "Eye Start AF" -msgstr "" - -#: src/minoltamn.cpp:1497 -msgid "Eye start AF" -msgstr "" - -#: src/minoltamn.cpp:1499 -#, fuzzy -msgid "Red Eye Reduction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/minoltamn.cpp:1500 -#, fuzzy -msgid "Red eye reduction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/minoltamn.cpp:1502 -#, fuzzy -msgid "Flash Default" -msgstr "Flash" - -#: src/minoltamn.cpp:1503 -#, fuzzy -msgid "Flash default" -msgstr "Flash" - -#: src/minoltamn.cpp:1505 -#, fuzzy -msgid "Auto Bracket Order" -msgstr "Auto bracket" - -#: src/minoltamn.cpp:1506 -#, fuzzy -msgid "Auto bracket order" -msgstr "Auto bracket" - -#: src/minoltamn.cpp:1508 -#, fuzzy -msgid "Focus Hold Button" -msgstr "Modo de exposición" - -#: src/minoltamn.cpp:1509 -#, fuzzy -msgid "Focus hold button" -msgstr "Modo de exposición" - -#: src/minoltamn.cpp:1511 -#, fuzzy -msgid "AEL Button" -msgstr "Velocidad ISO" - -#: src/minoltamn.cpp:1512 -#, fuzzy -msgid "AEL button" -msgstr "Velocidad ISO" - -#: src/minoltamn.cpp:1514 -#, fuzzy -msgid "Control Dial Set" -msgstr "Contraste" - -#: src/minoltamn.cpp:1515 -#, fuzzy -msgid "Control dial set" -msgstr "Contraste" - -#: src/minoltamn.cpp:1517 -#, fuzzy -msgid "Exposure Compensation Mode" -msgstr "Tiempo de exposición" - -#: src/minoltamn.cpp:1518 -#, fuzzy -msgid "Exposure compensation mode" -msgstr "Tiempo de exposición" - -#: src/minoltamn.cpp:1521 -#, fuzzy -msgid "AF assist" -msgstr "centrado" - -#: src/minoltamn.cpp:1523 -#, fuzzy -msgid "Card Shutter Lock" -msgstr "Velocidad del obturador" - -#: src/minoltamn.cpp:1524 -#, fuzzy -msgid "Card shutter lock" -msgstr "Velocidad del obturador" - -#: src/minoltamn.cpp:1526 -#, fuzzy -msgid "Lens Shutter Lock" -msgstr "Velocidad del obturador" - -#: src/minoltamn.cpp:1527 -#, fuzzy -msgid "Lens shutter lock" -msgstr "obturador" - -#: src/minoltamn.cpp:1529 -msgid "AF Area Illumination" -msgstr "" - -#: src/minoltamn.cpp:1530 -#, fuzzy -msgid "AF area illumination" -msgstr "Flash" - -#: src/minoltamn.cpp:1532 -msgid "Monitor Display Off" -msgstr "" - -#: src/minoltamn.cpp:1533 -msgid "Monitor display off" -msgstr "" - -#: src/minoltamn.cpp:1535 -msgid "Record Display" -msgstr "" - -#: src/minoltamn.cpp:1536 -msgid "Record display" -msgstr "" - -#: src/minoltamn.cpp:1538 -msgid "Play Display" -msgstr "" - -#: src/minoltamn.cpp:1539 -msgid "Play display" -msgstr "" - -#: src/minoltamn.cpp:1541 -#, fuzzy -msgid "Exposure Indicator" -msgstr "Ãndice de exposición" - -#: src/minoltamn.cpp:1542 -#, fuzzy -msgid "Exposure indicator" -msgstr "Ãndice de exposición" - -#: src/minoltamn.cpp:1544 -#, fuzzy -msgid "AEL Exposure Indicator" -msgstr "Ãndice de exposición" - -#: src/minoltamn.cpp:1545 -msgid "" -"AEL exposure indicator (also indicates exposure for next shot when " -"bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1547 -#, fuzzy -msgid "Exposure Bracketing Indicator Last" -msgstr "Ajuste de exposición" - -#: src/minoltamn.cpp:1548 -msgid "" -"Exposure bracketing indicator last (indicator for last shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1550 -msgid "Metering Off Scale Indicator" -msgstr "" - -#: src/minoltamn.cpp:1551 -msgid "" -"Metering off scale indicator (two flashing triangles when under or over " -"metering scale)" -msgstr "" - -#: src/minoltamn.cpp:1553 -#, fuzzy -msgid "Flash Exposure Indicator" -msgstr "Tiempo de exposición" - -#: src/minoltamn.cpp:1554 -#, fuzzy -msgid "Flash exposure indicator" -msgstr "Tiempo de exposición" - -#: src/minoltamn.cpp:1556 -#, fuzzy -msgid "Flash Exposure Indicator Next" -msgstr "Ãndice de exposición" - -#: src/minoltamn.cpp:1557 -msgid "Flash exposure indicator next (indicator for next shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1559 -#, fuzzy -msgid "Flash Exposure Indicator Last" -msgstr "Tiempo de exposición" - -#: src/minoltamn.cpp:1560 -msgid "Flash exposure indicator last (indicator for last shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1565 -#, fuzzy -msgid "Focus Mode Switch" -msgstr "Modo de exposición" - -#: src/minoltamn.cpp:1566 -#, fuzzy -msgid "Focus mode switch" -msgstr "Modo de exposición" - -#: src/minoltamn.cpp:1568 src/olympusmn.cpp:759 -#, fuzzy -msgid "Flash Type" -msgstr "Flash" - -#: src/minoltamn.cpp:1569 src/olympusmn.cpp:759 -#, fuzzy -msgid "Flash type" -msgstr "Flash" - -#: src/minoltamn.cpp:1574 src/olympusmn.cpp:660 -msgid "AE Lock" -msgstr "" - -#: src/minoltamn.cpp:1581 -msgid "Color compensation filter: negative is green, positive is magenta" -msgstr "" - -#: src/minoltamn.cpp:1583 src/tags.cpp:759 -msgid "Battery Level" -msgstr "Nivel de la batería" - -#: src/minoltamn.cpp:1584 -#, fuzzy -msgid "Battery level" -msgstr "Nivel de la batería" - -#: src/minoltamn.cpp:1588 -#, fuzzy -msgid "Unknown Sony Camera Settings A100 tag" -msgstr "Contraste" - -#: src/minoltamn.cpp:1894 src/sonymn.cpp:484 -#, fuzzy -msgid "Clear" -msgstr "Centímetro" - -#: src/minoltamn.cpp:1895 src/sonymn.cpp:485 -#, fuzzy -msgid "Deep" -msgstr "Centímetro" - -#: src/minoltamn.cpp:1896 src/sonymn.cpp:486 -#, fuzzy -msgid "Light" -msgstr "Escena nocturna" - -#: src/minoltamn.cpp:1897 -#, fuzzy -msgid "Night View" -msgstr "Escena nocturna" - -#: src/minoltamn.cpp:1898 -msgid "Autumn Leaves" -msgstr "" - -#: src/minoltamn.cpp:1937 -#, fuzzy -msgid "Local" -msgstr "Ubicación del sujeto" - -#: src/minoltamn.cpp:1952 -#, fuzzy -msgid "Top-Right" -msgstr "Copyright" - -#: src/minoltamn.cpp:1954 -#, fuzzy -msgid "Bottom-Right" -msgstr "abajo - derecha" - -#: src/minoltamn.cpp:1956 -#, fuzzy -msgid "Bottom-Left" -msgstr "abajo - izquierda" - -#: src/minoltamn.cpp:1958 -#, fuzzy -msgid "Top-Left" -msgstr "arriba - izquierda" - -#: src/minoltamn.cpp:1959 -#, fuzzy -msgid "Far-Right" -msgstr "Copyright" - -#: src/minoltamn.cpp:1960 -#, fuzzy -msgid "Far-Left" -msgstr "arriba - izquierda" - -#: src/minoltamn.cpp:1974 src/sonymn.cpp:89 -#, fuzzy -msgid "Advanced Auto" -msgstr "Función de transferencia" - -#: src/minoltamn.cpp:1975 -#, fuzzy -msgid "Advanced Level" -msgstr "Nivel de la batería" - -#: src/minoltamn.cpp:1988 -msgid "AF" -msgstr "" - -#: src/minoltamn.cpp:1989 -#, fuzzy -msgid "Release" -msgstr "No definido" - -#: src/minoltamn.cpp:2001 -msgid "RAW " -msgstr "" - -#: src/minoltamn.cpp:2002 -msgid "CRAW " -msgstr "" - -#: src/minoltamn.cpp:2005 -msgid "RAW+JPEG" -msgstr "" - -#: src/minoltamn.cpp:2006 -msgid "CRAW+JPEG" -msgstr "" - -#: src/minoltamn.cpp:2062 -msgid "Raw + JPEG" -msgstr "" - -#: src/minoltamn.cpp:2063 -#, fuzzy -msgid "Compressed Raw" -msgstr "Compresión" - -#: src/minoltamn.cpp:2064 -#, fuzzy -msgid "Compressed Raw + JPEG" -msgstr "Bits comprimidos por pixel" - -#: src/minoltamn.cpp:2077 -msgid "Minolta AF 2x APO (D)" -msgstr "" - -#: src/minoltamn.cpp:2078 -msgid "Minolta AF 2x APO II" -msgstr "" - -#: src/minoltamn.cpp:2079 -msgid "Minolta AF 1.4x APO (D)" -msgstr "" - -#: src/minoltamn.cpp:2080 -msgid "Minolta AF 1.4x APO II" -msgstr "" - -#: src/minoltamn.cpp:2110 -#, fuzzy -msgid "ISO Setting Used" -msgstr "Velocidad ISO" - -#: src/minoltamn.cpp:2111 src/olympusmn.cpp:126 src/olympusmn.cpp:1109 -#, fuzzy -msgid "High Key" -msgstr "Luz de día" - -#: src/minoltamn.cpp:2112 src/olympusmn.cpp:132 src/olympusmn.cpp:1107 -msgid "Low Key" -msgstr "" - -#: src/nikonmn.cpp:80 -#, fuzzy -msgid "Extra High" -msgstr "arriba - derecha" - -#: src/nikonmn.cpp:86 src/nikonmn.cpp:1560 -#, fuzzy -msgid "Single area" -msgstr "Nombre del documento" - -#: src/nikonmn.cpp:87 src/nikonmn.cpp:1561 -#, fuzzy -msgid "Dynamic area" -msgstr "formato planar" - -#: src/nikonmn.cpp:88 -msgid "Dynamic area, closest subject" -msgstr "" - -#: src/nikonmn.cpp:89 -msgid "Group dynamic" -msgstr "" - -#: src/nikonmn.cpp:90 src/nikonmn.cpp:1564 -msgid "Single area (wide)" -msgstr "" - -#: src/nikonmn.cpp:91 src/nikonmn.cpp:1565 -#, fuzzy -msgid "Dynamic area (wide)" -msgstr "Balance de blanco" - -#: src/nikonmn.cpp:104 src/nikonmn.cpp:797 src/nikonmn.cpp:812 -#: src/pentaxmn.cpp:215 -#, fuzzy -msgid "Upper-left" -msgstr "arriba - izquierda" - -#: src/nikonmn.cpp:105 src/nikonmn.cpp:798 src/nikonmn.cpp:813 -#: src/pentaxmn.cpp:217 -#, fuzzy -msgid "Upper-right" -msgstr "arriba - derecha" - -#: src/nikonmn.cpp:106 src/nikonmn.cpp:799 src/nikonmn.cpp:814 -#: src/pentaxmn.cpp:223 -#, fuzzy -msgid "Lower-left" -msgstr "arriba - izquierda" - -#: src/nikonmn.cpp:107 src/nikonmn.cpp:800 src/nikonmn.cpp:815 -#: src/pentaxmn.cpp:225 -#, fuzzy -msgid "Lower-right" -msgstr "Copyright" - -#: src/nikonmn.cpp:108 -#, fuzzy -msgid "Left-most" -msgstr "Escena nocturna" - -#: src/nikonmn.cpp:109 -#, fuzzy -msgid "Right-most" -msgstr "Escena nocturna" - -#: src/nikonmn.cpp:143 -#, fuzzy -msgid "Fire, manual" -msgstr "manual" - -#: src/nikonmn.cpp:144 -#, fuzzy -msgid "Fire, external" -msgstr "Tiempo bueno" - -#: src/nikonmn.cpp:145 -#, fuzzy -msgid "Fire, commander mode" -msgstr "Flash" - -#: src/nikonmn.cpp:146 -#, fuzzy -msgid "Fire, TTL mode" -msgstr "Flash" - -#: src/nikonmn.cpp:152 src/nikonmn.cpp:163 -msgid "Delay" -msgstr "" - -#: src/nikonmn.cpp:153 src/nikonmn.cpp:164 -#, fuzzy -msgid "PC control" -msgstr "Espacio de color" - -#: src/nikonmn.cpp:154 src/nikonmn.cpp:165 -#, fuzzy -msgid "Exposure bracketing" -msgstr "Ajuste de exposición" - -#: src/nikonmn.cpp:155 -#, fuzzy -msgid "Auto ISO" -msgstr "acción" - -#: src/nikonmn.cpp:157 src/nikonmn.cpp:168 -#, fuzzy -msgid "IR control" -msgstr "Espacio de color" - -#: src/nikonmn.cpp:166 -msgid "Unused LE-NR slowdown" -msgstr "" - -#: src/nikonmn.cpp:174 -#, fuzzy -msgid "Auto release" -msgstr "Auto bracket" - -#: src/nikonmn.cpp:175 -#, fuzzy -msgid "Manual release" -msgstr "Exposición manual" - -#: src/nikonmn.cpp:180 -#, fuzzy -msgid "Lossy (type 1)" -msgstr "Espacio de color" - -#: src/nikonmn.cpp:181 src/tags.cpp:247 -msgid "Uncompressed" -msgstr "Descomprimido" - -#: src/nikonmn.cpp:182 -msgid "Lossless" -msgstr "" - -#: src/nikonmn.cpp:183 -#, fuzzy -msgid "Lossy (type 2)" -msgstr "Espacio de color" - -#: src/nikonmn.cpp:189 -msgid "B & W" -msgstr "" - -#: src/nikonmn.cpp:191 -msgid "Trim" -msgstr "" - -#: src/nikonmn.cpp:192 -#, fuzzy -msgid "Small picture" -msgstr "Modelo" - -#: src/nikonmn.cpp:193 -#, fuzzy -msgid "D-Lighting" -msgstr "Luz de día" - -#: src/nikonmn.cpp:194 -#, fuzzy -msgid "Red eye" -msgstr "Balance de blanco" - -#: src/nikonmn.cpp:195 src/nikonmn.cpp:678 -#, fuzzy -msgid "Cyanotype" -msgstr "Escena nocturna" - -#: src/nikonmn.cpp:196 -#, fuzzy -msgid "Sky light" -msgstr "Luz de día" - -#: src/nikonmn.cpp:197 -#, fuzzy -msgid "Warm tone" -msgstr "Espacio de color" - -#: src/nikonmn.cpp:198 -#, fuzzy -msgid "Color custom" -msgstr "Espacio de color" - -#: src/nikonmn.cpp:199 -#, fuzzy -msgid "Image overlay" -msgstr "Ancho de la imagen" - -#: src/nikonmn.cpp:205 -#, fuzzy -msgid "Minimal" -msgstr "Manual" - -#: src/nikonmn.cpp:214 src/nikonmn.cpp:524 -#, fuzzy -msgid "Nikon Makernote version" -msgstr "Versión Exif" - -#: src/nikonmn.cpp:216 src/nikonmn.cpp:468 src/nikonmn.cpp:525 -#: src/olympusmn.cpp:270 src/panasonicmn.cpp:344 src/tags.cpp:1583 -#, fuzzy -msgid "ISO Speed" -msgstr "Velocidad ISO" - -#: src/nikonmn.cpp:228 src/nikonmn.cpp:529 -#, fuzzy -msgid "Sharpening" -msgstr "Nitidez" - -#: src/nikonmn.cpp:229 src/nikonmn.cpp:529 -#, fuzzy -msgid "Image sharpening setting" -msgstr "Ancho de la imagen" - -#: src/nikonmn.cpp:231 src/nikonmn.cpp:530 -#, fuzzy -msgid "Focus" -msgstr "Modo de exposición" - -#: src/nikonmn.cpp:234 src/nikonmn.cpp:531 -#, fuzzy -msgid "Flash Setting" -msgstr "Contraste" - -#: src/nikonmn.cpp:235 src/nikonmn.cpp:531 -#, fuzzy -msgid "Flash setting" -msgstr "Contraste" - -#: src/nikonmn.cpp:240 src/nikonmn.cpp:538 -#, fuzzy -msgid "ISO Selection" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/nikonmn.cpp:241 src/nikonmn.cpp:538 -#, fuzzy -msgid "ISO selection" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/nikonmn.cpp:243 src/nikonmn.cpp:539 src/panasonicmn.cpp:246 -#, fuzzy -msgid "Data Dump" -msgstr "formato planar" - -#: src/nikonmn.cpp:244 src/nikonmn.cpp:539 src/panasonicmn.cpp:246 -#, fuzzy -msgid "Data dump" -msgstr "formato planar" - -#: src/nikonmn.cpp:246 src/nikonmn.cpp:465 src/nikonmn.cpp:559 -#, fuzzy -msgid "Image Adjustment" -msgstr "Longitud de la imagen" - -#: src/nikonmn.cpp:247 src/nikonmn.cpp:466 src/nikonmn.cpp:559 -#, fuzzy -msgid "Image adjustment setting" -msgstr "Ancho de la imagen" - -#: src/nikonmn.cpp:249 src/nikonmn.cpp:483 src/nikonmn.cpp:561 -#, fuzzy -msgid "Auxiliary Lens" -msgstr "Sensor tri-lineal" - -#: src/nikonmn.cpp:250 src/nikonmn.cpp:484 src/nikonmn.cpp:561 -#, fuzzy -msgid "Auxiliary lens (adapter)" -msgstr "Sensor tri-lineal" - -#: src/nikonmn.cpp:253 src/nikonmn.cpp:564 src/olympusmn.cpp:304 -#, fuzzy -msgid "Manual focus distance" -msgstr "Balance de blanco manual" - -#: src/nikonmn.cpp:256 src/nikonmn.cpp:481 src/nikonmn.cpp:565 -#, fuzzy -msgid "Digital zoom setting" -msgstr "Relación de zoom digital" - -#: src/nikonmn.cpp:258 -#, fuzzy -msgid "AF Focus Position" -msgstr "Posicionamiento YCbCr" - -#: src/nikonmn.cpp:259 -#, fuzzy -msgid "AF focus position information" -msgstr "Posicionamiento YCbCr" - -#: src/nikonmn.cpp:263 -#, fuzzy -msgid "Unknown Nikon1MakerNote tag" -msgstr "Versión Exif" - -#: src/nikonmn.cpp:290 src/nikonmn.cpp:1416 -msgid "Continuous autofocus" -msgstr "" - -#: src/nikonmn.cpp:291 src/nikonmn.cpp:1417 -#, fuzzy -msgid "Single autofocus" -msgstr "Exposición automática" - -#: src/nikonmn.cpp:325 src/nikonmn.cpp:506 src/nikonmn.cpp:1517 -#, fuzzy -msgid "Not used" -msgstr "No definido" - -#: src/nikonmn.cpp:365 -#, fuzzy -msgid "guess" -msgstr "Fuente de archivo" - -#: src/nikonmn.cpp:412 -msgid "VGA Basic" -msgstr "" - -#: src/nikonmn.cpp:413 -#, fuzzy -msgid "VGA Normal" -msgstr "Normal" - -#: src/nikonmn.cpp:414 -#, fuzzy -msgid "VGA Fine" -msgstr "pulg" - -#: src/nikonmn.cpp:415 -#, fuzzy -msgid "SXGA Basic" -msgstr "pulg" - -#: src/nikonmn.cpp:416 -#, fuzzy -msgid "SXGA Normal" -msgstr "Normal" - -#: src/nikonmn.cpp:417 -#, fuzzy -msgid "SXGA Fine" -msgstr "pulg" - -#: src/nikonmn.cpp:429 -#, fuzzy -msgid "Bright+" -msgstr "Copyright" - -#: src/nikonmn.cpp:430 -#, fuzzy -msgid "Bright-" -msgstr "Copyright" - -#: src/nikonmn.cpp:431 -#, fuzzy -msgid "Contrast+" -msgstr "Contraste" - -#: src/nikonmn.cpp:432 -#, fuzzy -msgid "Contrast-" -msgstr "Contraste" - -#: src/nikonmn.cpp:451 -#, fuzzy -msgid "Speedlight" -msgstr "Luz de día" - -#: src/nikonmn.cpp:491 -#, fuzzy -msgid "Unknown Nikon2MakerNote tag" -msgstr "Versión Exif" - -#: src/nikonmn.cpp:532 src/olympusmn.cpp:282 -#, fuzzy -msgid "Flash Device" -msgstr "Flash" - -#: src/nikonmn.cpp:532 src/olympusmn.cpp:283 -#, fuzzy -msgid "Flash device" -msgstr "Flash" - -#: src/nikonmn.cpp:534 src/olympusmn.cpp:249 src/panasonicmn.cpp:248 -#, fuzzy -msgid "White Balance Bias" -msgstr "Balance de blanco" - -#: src/nikonmn.cpp:534 src/olympusmn.cpp:250 -#, fuzzy -msgid "White balance bias" -msgstr "Balance de blanco" - -#: src/nikonmn.cpp:535 src/olympusmn.cpp:932 -#, fuzzy -msgid "WB RB Levels" -msgstr "Nivel de la batería" - -#: src/nikonmn.cpp:535 src/olympusmn.cpp:932 -#, fuzzy -msgid "WB RB levels" -msgstr "Nivel de la batería" - -#: src/nikonmn.cpp:536 -#, fuzzy -msgid "Program Shift" -msgstr "Modo de exposición" - -#: src/nikonmn.cpp:536 -#, fuzzy -msgid "Program shift" -msgstr "Modo de exposición" - -#: src/nikonmn.cpp:537 -#, fuzzy -msgid "Exposure Difference" -msgstr "Ãndice de exposición" - -#: src/nikonmn.cpp:537 -#, fuzzy -msgid "Exposure difference" -msgstr "Ãndice de exposición" - -#: src/nikonmn.cpp:540 src/pentaxmn.cpp:877 -#, fuzzy -msgid "Pointer to a preview image" -msgstr "Orientación" - -#: src/nikonmn.cpp:540 src/pentaxmn.cpp:878 -msgid "Offset to an IFD containing a preview image" -msgstr "" - -#: src/nikonmn.cpp:541 -#, fuzzy -msgid "Flash Comp" -msgstr "Flash" - -#: src/nikonmn.cpp:541 -#, fuzzy -msgid "Flash compensation setting" -msgstr "Tiempo de exposición" - -#: src/nikonmn.cpp:543 -#, fuzzy -msgid "Image Boundary" -msgstr "Ancho de la imagen" - -#: src/nikonmn.cpp:543 -#, fuzzy -msgid "Image boundary" -msgstr "Ancho de la imagen" - -#: src/nikonmn.cpp:544 -#, fuzzy -msgid "Flash exposure comp" -msgstr "Tiempo de exposición" - -#: src/nikonmn.cpp:545 -#, fuzzy -msgid "Flash Bracket Comp" -msgstr "El flash disparó." - -#: src/nikonmn.cpp:545 -#, fuzzy -msgid "Flash bracket compensation applied" -msgstr "Tiempo de exposición" - -#: src/nikonmn.cpp:546 -#, fuzzy -msgid "Exposure Bracket Comp" -msgstr "Ajuste de exposición" - -#: src/nikonmn.cpp:546 -#, fuzzy -msgid "AE bracket compensation applied" -msgstr "Tiempo de exposición" - -#: src/nikonmn.cpp:547 src/olympusmn.cpp:459 -#, fuzzy -msgid "Image Processing" -msgstr "Longitud de la imagen" - -#: src/nikonmn.cpp:547 src/pentaxmn.cpp:985 src/pentaxmn.cpp:986 -#, fuzzy -msgid "Image processing" -msgstr "Longitud de la imagen" - -#: src/nikonmn.cpp:548 -#, fuzzy -msgid "Crop High Speed" -msgstr "Escena nocturna" - -#: src/nikonmn.cpp:548 -#, fuzzy -msgid "Crop high speed" -msgstr "Copyright" - -#: src/nikonmn.cpp:549 -#, fuzzy -msgid "Exposure Tuning" -msgstr "Ãndice de exposición" - -#: src/nikonmn.cpp:549 -#, fuzzy -msgid "Exposure tuning" -msgstr "Ãndice de exposición" - -#: src/nikonmn.cpp:552 -#, fuzzy -msgid "VR Info" -msgstr "Modo de exposición" - -#: src/nikonmn.cpp:552 -#, fuzzy -msgid "VR info" -msgstr "Modo de exposición" - -#: src/nikonmn.cpp:553 -#, fuzzy -msgid "Image Authentication" -msgstr "Orientación" - -#: src/nikonmn.cpp:553 -#, fuzzy -msgid "Image authentication" -msgstr "Orientación" - -#: src/nikonmn.cpp:554 -#, fuzzy -msgid "ActiveD-Lighting" -msgstr "Luz de día" - -#: src/nikonmn.cpp:554 -#, fuzzy -msgid "ActiveD-lighting" -msgstr "Luz de día" - -#: src/nikonmn.cpp:555 -#, fuzzy -msgid "Picture Control" -msgstr "Modo de exposición" - -#: src/nikonmn.cpp:555 -#, fuzzy -msgid " Picture control" -msgstr "Modo de exposición" - -#: src/nikonmn.cpp:556 -#, fuzzy -msgid "World Time" -msgstr "Tiempo de exposición" - -#: src/nikonmn.cpp:556 -#, fuzzy -msgid "World time" -msgstr "Tiempo de exposición" - -#: src/nikonmn.cpp:557 -#, fuzzy -msgid "ISO Info" -msgstr "Modo de exposición" - -#: src/nikonmn.cpp:557 -#, fuzzy -msgid "ISO info" -msgstr "Velocidad ISO" - -#: src/nikonmn.cpp:558 -#, fuzzy -msgid "Vignette Control" -msgstr "Punto blanco" - -#: src/nikonmn.cpp:558 -#, fuzzy -msgid "Vignette control" -msgstr "Punto blanco" - -#: src/nikonmn.cpp:560 -#, fuzzy -msgid "Tone Compensation" -msgstr "Tiempo de exposición" - -#: src/nikonmn.cpp:560 -#, fuzzy -msgid "Tone compensation" -msgstr "Tiempo de exposición" - -#: src/nikonmn.cpp:566 -#, fuzzy -msgid "Mode of flash used" -msgstr "El flash disparó." - -#: src/nikonmn.cpp:568 src/panasonicmn.cpp:244 -#, fuzzy -msgid "Shooting Mode" -msgstr "Modo de métrica" - -#: src/nikonmn.cpp:568 src/panasonicmn.cpp:244 src/pentaxmn.cpp:868 -#, fuzzy -msgid "Shooting mode" -msgstr "Modo de métrica" - -#: src/nikonmn.cpp:569 -#, fuzzy -msgid "Auto Bracket Release" -msgstr "Auto bracket" - -#: src/nikonmn.cpp:569 -#, fuzzy -msgid "Auto bracket release" -msgstr "Auto bracket" - -#: src/nikonmn.cpp:570 -#, fuzzy -msgid "Lens FStops" -msgstr "Espacio de color" - -#: src/nikonmn.cpp:571 -#, fuzzy -msgid "Contrast Curve" -msgstr "Contraste" - -#: src/nikonmn.cpp:571 -#, fuzzy -msgid "Contrast curve" -msgstr "Contraste" - -#: src/nikonmn.cpp:572 -#, fuzzy -msgid "Color Hue" -msgstr "Espacio de color" - -#: src/nikonmn.cpp:572 -#, fuzzy -msgid "Color hue" -msgstr "Espacio de color" - -#: src/nikonmn.cpp:573 src/olympusmn.cpp:253 src/olympusmn.cpp:684 -#: src/panasonicmn.cpp:282 -#, fuzzy -msgid "Scene mode" -msgstr "Tipo de escena" - -#: src/nikonmn.cpp:574 src/olympusmn.cpp:1076 src/properties.cpp:562 -#: src/tags.cpp:826 src/tags.cpp:1649 -msgid "Light Source" -msgstr "Fuente de luz" - -#: src/nikonmn.cpp:574 src/olympusmn.cpp:1076 -#, fuzzy -msgid "Light source" -msgstr "Fuente de luz" - -#: src/nikonmn.cpp:575 -#, fuzzy -msgid "Shot info" -msgstr "Modo de exposición" - -#: src/nikonmn.cpp:576 src/nikonmn.cpp:700 -#, fuzzy -msgid "Hue Adjustment" -msgstr "Longitud de la imagen" - -#: src/nikonmn.cpp:576 src/nikonmn.cpp:700 -#, fuzzy -msgid "Hue adjustment" -msgstr "Longitud de la imagen" - -#: src/nikonmn.cpp:577 -#, fuzzy -msgid "NEF Compression" -msgstr "Compresión" - -#: src/nikonmn.cpp:577 -#, fuzzy -msgid "NEF compression" -msgstr "compresión JPEG" - -#: src/nikonmn.cpp:580 src/tags.cpp:898 -#, fuzzy -msgid "Linearization Table" -msgstr "Fecha y hora" - -#: src/nikonmn.cpp:580 -#, fuzzy -msgid "Linearization table" -msgstr "Fecha y hora" - -#: src/nikonmn.cpp:581 -#, fuzzy -msgid "Color Balance" -msgstr "Espacio de color" - -#: src/nikonmn.cpp:581 -#, fuzzy -msgid "Color balance" -msgstr "Espacio de color" - -#: src/nikonmn.cpp:582 -#, fuzzy -msgid "Lens Data" -msgstr "Ancho de la imagen" - -#: src/nikonmn.cpp:582 -#, fuzzy -msgid "Lens data settings" -msgstr "Contraste" - -#: src/nikonmn.cpp:583 -#, fuzzy -msgid "Raw Image Center" -msgstr "Longitud de la imagen" - -#: src/nikonmn.cpp:583 -#, fuzzy -msgid "Raw image center" -msgstr "Longitud de la imagen" - -#: src/nikonmn.cpp:584 -#, fuzzy -msgid "Sensor Pixel Size" -msgstr "Copyright" - -#: src/nikonmn.cpp:584 -#, fuzzy -msgid "Sensor pixel size" -msgstr "Copyright" - -#: src/nikonmn.cpp:586 -#, fuzzy -msgid "Scene Assist" -msgstr "centrado" - -#: src/nikonmn.cpp:586 -#, fuzzy -msgid "Scene assist" -msgstr "centrado" - -#: src/nikonmn.cpp:587 -#, fuzzy -msgid "Retouch History" -msgstr "Longitud de la imagen" - -#: src/nikonmn.cpp:587 -msgid "Retouch history" -msgstr "" - -#: src/nikonmn.cpp:589 -#, fuzzy -msgid "Serial NO" -msgstr "El número F." - -#: src/nikonmn.cpp:589 -msgid "Camera serial number, usually starts with \"NO= \"" -msgstr "" - -#: src/nikonmn.cpp:590 -#, fuzzy -msgid "Image Data Size" -msgstr "Ancho de la imagen" - -#: src/nikonmn.cpp:590 -#, fuzzy -msgid "Image data size" -msgstr "Ancho de la imagen" - -#: src/nikonmn.cpp:592 -#, fuzzy -msgid "Image Count" -msgstr "Ancho de la imagen" - -#: src/nikonmn.cpp:592 -#, fuzzy -msgid "Image count" -msgstr "Ancho de la imagen" - -#: src/nikonmn.cpp:593 src/nikonmn.cpp:1227 -#, fuzzy -msgid "Deleted Image Count" -msgstr "Longitud de la imagen" - -#: src/nikonmn.cpp:593 src/nikonmn.cpp:1227 -#, fuzzy -msgid "Deleted image count" -msgstr "Longitud de la imagen" - -#: src/nikonmn.cpp:594 src/nikonmn.cpp:1064 src/nikonmn.cpp:1077 -#: src/nikonmn.cpp:1137 src/nikonmn.cpp:1197 src/nikonmn.cpp:1233 -#, fuzzy -msgid "Shutter Count" -msgstr "obturador" - -#: src/nikonmn.cpp:594 -msgid "Number of shots taken by camera" -msgstr "" - -#: src/nikonmn.cpp:595 -#, fuzzy -msgid "Flash info" -msgstr "Flash" - -#: src/nikonmn.cpp:596 -#, fuzzy -msgid "Image Optimization" -msgstr "Orientación" - -#: src/nikonmn.cpp:596 -#, fuzzy -msgid "Image optimization" -msgstr "Orientación" - -#: src/nikonmn.cpp:598 -#, fuzzy -msgid "Program Variation" -msgstr "Versión Exif" - -#: src/nikonmn.cpp:598 -#, fuzzy -msgid "Program variation" -msgstr "Versión Exif" - -#: src/nikonmn.cpp:600 -#, fuzzy -msgid "AF Response" -msgstr "Punto blanco" - -#: src/nikonmn.cpp:600 -#, fuzzy -msgid "AF response" -msgstr "Punto blanco" - -#: src/nikonmn.cpp:601 -#, fuzzy -msgid "Multi exposure" -msgstr "Modo de exposición" - -#: src/nikonmn.cpp:602 -#, fuzzy -msgid "High ISO Noise Reduction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/nikonmn.cpp:603 src/nikonmn.cpp:702 -#, fuzzy -msgid "Toning effect" -msgstr "Espacio de color" - -#: src/nikonmn.cpp:604 -#, fuzzy -msgid "AF info 2" -msgstr "Modo de exposición" - -#: src/nikonmn.cpp:605 -#, fuzzy -msgid "File info" -msgstr "Nombre del documento" - -#: src/nikonmn.cpp:606 -#, fuzzy -msgid "AF tune" -msgstr "Punto blanco" - -#: src/nikonmn.cpp:609 -#, fuzzy -msgid "Capture Data" -msgstr "Tipo de captura de escena" - -#: src/nikonmn.cpp:609 -#, fuzzy -msgid "Capture data" -msgstr "Otro" - -#: src/nikonmn.cpp:610 -#, fuzzy -msgid "Capture Version" -msgstr "Versión Exif" - -#: src/nikonmn.cpp:610 -#, fuzzy -msgid "Capture version" -msgstr "Versión Exif" - -#: src/nikonmn.cpp:612 -#, fuzzy -msgid "Capture Offsets" -msgstr "Desplazamiento de tira" - -#: src/nikonmn.cpp:612 -#, fuzzy -msgid "Capture offsets" -msgstr "Desplazamiento de tira" - -#: src/nikonmn.cpp:613 -msgid "Scan IFD" -msgstr "" - -#: src/nikonmn.cpp:614 -#, fuzzy -msgid "ICC profile" -msgstr "Espacio de color" - -#: src/nikonmn.cpp:615 -#, fuzzy -msgid "Capture output" -msgstr "Tipo de captura de escena" - -#: src/nikonmn.cpp:617 -#, fuzzy -msgid "Unknown Nikon3MakerNote tag" -msgstr "Versión Exif" - -#: src/nikonmn.cpp:627 src/olympusmn.cpp:65 src/panasonicmn.cpp:140 -#: src/pentaxmn.cpp:298 -msgid "No" -msgstr "" - -#: src/nikonmn.cpp:628 src/olympusmn.cpp:66 src/panasonicmn.cpp:139 -#: src/pentaxmn.cpp:299 -#, fuzzy -msgid "Yes" -msgstr "sí" - -#: src/nikonmn.cpp:633 -msgid "Y/M/D" -msgstr "" - -#: src/nikonmn.cpp:634 -msgid "M/D/Y" -msgstr "" - -#: src/nikonmn.cpp:635 -msgid "D/M/Y" -msgstr "" - -#: src/nikonmn.cpp:647 src/nikonmn.cpp:1228 -#, fuzzy -msgid "Vibration Reduction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/nikonmn.cpp:647 src/nikonmn.cpp:1228 -#, fuzzy -msgid "Vibration reduction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/nikonmn.cpp:649 -#, fuzzy -msgid "Unknown Nikon Vibration Reduction Tag" -msgstr "Versión Exif" - -#: src/nikonmn.cpp:659 -#, fuzzy -msgid "Default Settings" -msgstr "Contraste" - -#: src/nikonmn.cpp:660 src/nikonmn.cpp:695 -#, fuzzy -msgid "Quick Adjust" -msgstr "Longitud de la imagen" - -#: src/nikonmn.cpp:661 -#, fuzzy -msgid "Full Control" -msgstr "Espacio de color" - -#: src/nikonmn.cpp:682 -msgid "Blue-green" -msgstr "" - -#: src/nikonmn.cpp:684 -msgid "Purple-blue" -msgstr "" - -#: src/nikonmn.cpp:685 -msgid "Red-purple" -msgstr "" - -#: src/nikonmn.cpp:692 src/properties.cpp:980 -#, fuzzy -msgid "Name" -msgstr "Nombre del documento" - -#: src/nikonmn.cpp:693 -msgid "Base" -msgstr "" - -#: src/nikonmn.cpp:694 -#, fuzzy -msgid "Adjust" -msgstr "Longitud de la imagen" - -#: src/nikonmn.cpp:695 -#, fuzzy -msgid "Quick adjust" -msgstr "Longitud de la imagen" - -#: src/nikonmn.cpp:701 -#, fuzzy -msgid "Filter effect" -msgstr "Espacio de color" - -#: src/nikonmn.cpp:703 -#, fuzzy -msgid "Toning Saturation" -msgstr "Saturación" - -#: src/nikonmn.cpp:703 -#, fuzzy -msgid "Toning saturation" -msgstr "Saturación" - -#: src/nikonmn.cpp:705 -#, fuzzy -msgid "Unknown Nikon Picture Control Tag" -msgstr "Desconocido" - -#: src/nikonmn.cpp:722 -#, fuzzy -msgid "AF Fine Tune" -msgstr "Punto blanco" - -#: src/nikonmn.cpp:722 -#, fuzzy -msgid "AF fine tune" -msgstr "Punto blanco" - -#: src/nikonmn.cpp:723 -#, fuzzy -msgid "AF Fine Tune Index" -msgstr "Punto blanco" - -#: src/nikonmn.cpp:723 -#, fuzzy -msgid "AF fine tune index" -msgstr "Punto blanco" - -#: src/nikonmn.cpp:724 -#, fuzzy -msgid "AF Fine Tune Adjustment" -msgstr "Punto blanco" - -#: src/nikonmn.cpp:724 -#, fuzzy -msgid "AF fine tune adjustment" -msgstr "Punto blanco" - -#: src/nikonmn.cpp:726 -#, fuzzy -msgid "Unknown Nikon AF Fine Tune Tag" -msgstr "Desconocido" - -#: src/nikonmn.cpp:736 -msgid "Timezone" -msgstr "" - -#: src/nikonmn.cpp:737 -#, fuzzy -msgid "Daylight Savings" -msgstr "Luz de día" - -#: src/nikonmn.cpp:737 -#, fuzzy -msgid "Daylight savings" -msgstr "Luz de día" - -#: src/nikonmn.cpp:738 -#, fuzzy -msgid "Date Display Format" -msgstr "Fuente de archivo" - -#: src/nikonmn.cpp:738 -#, fuzzy -msgid "Date display format" -msgstr "formato planar" - -#: src/nikonmn.cpp:740 -#, fuzzy -msgid "Unknown Nikon World Time Tag" -msgstr "Versión Exif" - -#: src/nikonmn.cpp:751 -msgid "Hi 0.3" -msgstr "" - -#: src/nikonmn.cpp:752 -msgid "Hi 0.5" -msgstr "" - -#: src/nikonmn.cpp:753 -msgid "Hi 0.7" -msgstr "" - -#: src/nikonmn.cpp:754 -msgid "Hi 1.0" -msgstr "" - -#: src/nikonmn.cpp:755 -msgid "Hi 1.3" -msgstr "" - -#: src/nikonmn.cpp:756 -msgid "Hi 1.5" -msgstr "" - -#: src/nikonmn.cpp:757 -msgid "Hi 1.7" -msgstr "" - -#: src/nikonmn.cpp:758 -msgid "Hi 2.0" -msgstr "" - -#: src/nikonmn.cpp:759 -msgid "Lo 0.3" -msgstr "" - -#: src/nikonmn.cpp:760 -msgid "Lo 0.5" -msgstr "" - -#: src/nikonmn.cpp:761 -msgid "Lo 0.7" -msgstr "" - -#: src/nikonmn.cpp:762 -msgid "Lo 1.0" -msgstr "" - -#: src/nikonmn.cpp:768 -#, fuzzy -msgid "ISO Expansion" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/nikonmn.cpp:768 -#, fuzzy -msgid "ISO expansion" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/nikonmn.cpp:769 -#, fuzzy -msgid "ISO 2" -msgstr "Modo de exposición" - -#: src/nikonmn.cpp:770 -#, fuzzy -msgid "ISO Expansion 2" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/nikonmn.cpp:770 -#, fuzzy -msgid "ISO expansion 2" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/nikonmn.cpp:772 -#, fuzzy -msgid "Unknown Nikon Iso Info Tag" -msgstr "Desconocido" - -#: src/nikonmn.cpp:782 -#, fuzzy -msgid "Single Area" -msgstr "Nombre del documento" - -#: src/nikonmn.cpp:783 -#, fuzzy -msgid "Dynamic Area" -msgstr "formato planar" - -#: src/nikonmn.cpp:784 -msgid "Dynamic Area, Closest Subject" -msgstr "" - -#: src/nikonmn.cpp:785 -msgid "Group Dynamic" -msgstr "" - -#: src/nikonmn.cpp:786 -#, fuzzy -msgid "Single Area (wide)" -msgstr "Nombre del documento" - -#: src/nikonmn.cpp:787 -#, fuzzy -msgid "Dynamic Area (wide)" -msgstr "Balance de blanco" - -#: src/nikonmn.cpp:795 src/nikonmn.cpp:810 src/pentaxmn.cpp:219 -#, fuzzy -msgid "Mid-left" -msgstr "abajo - izquierda" - -#: src/nikonmn.cpp:796 src/nikonmn.cpp:811 src/pentaxmn.cpp:221 -#, fuzzy -msgid "Mid-right" -msgstr "Copyright" - -#: src/nikonmn.cpp:801 src/nikonmn.cpp:816 -#, fuzzy -msgid "Far Left" -msgstr "arriba - izquierda" - -#: src/nikonmn.cpp:802 src/nikonmn.cpp:817 -#, fuzzy -msgid "Far Right" -msgstr "Copyright" - -#: src/nikonmn.cpp:822 src/nikonmn.cpp:845 -#, fuzzy -msgid "AF area mode" -msgstr "Flash" - -#: src/nikonmn.cpp:823 src/olympusmn.cpp:1008 src/pentaxmn.cpp:902 -#, fuzzy -msgid "AF point" -msgstr "Punto blanco" - -#: src/nikonmn.cpp:824 -#, fuzzy -msgid "AF Points In Focus" -msgstr "Punto blanco" - -#: src/nikonmn.cpp:824 -#, fuzzy -msgid "AF points in focus" -msgstr "Punto blanco" - -#: src/nikonmn.cpp:826 -#, fuzzy -msgid "Unknown Nikon Auto Focus Tag" -msgstr "Versión Exif" - -#: src/nikonmn.cpp:837 -msgid "On (51-point)" -msgstr "" - -#: src/nikonmn.cpp:838 -msgid "On (11-point)" -msgstr "" - -#: src/nikonmn.cpp:844 -#, fuzzy -msgid "Contrast Detect AF" -msgstr "Contraste" - -#: src/nikonmn.cpp:844 -#, fuzzy -msgid "Contrast detect AF" -msgstr "Contraste" - -#: src/nikonmn.cpp:846 -#, fuzzy -msgid "Phase Detect AF" -msgstr "Fuente de archivo" - -#: src/nikonmn.cpp:846 -#, fuzzy -msgid "Phase detect AF" -msgstr "Fuente de archivo" - -#: src/nikonmn.cpp:847 -#, fuzzy -msgid "Primary AF Point" -msgstr "Punto blanco" - -#: src/nikonmn.cpp:847 -#, fuzzy -msgid "Primary AF point" -msgstr "Punto blanco" - -#: src/nikonmn.cpp:849 -#, fuzzy -msgid "AF Image Width" -msgstr "Ancho de la imagen" - -#: src/nikonmn.cpp:849 -#, fuzzy -msgid "AF image width" -msgstr "Ancho de la imagen" - -#: src/nikonmn.cpp:850 -#, fuzzy -msgid "AF Image Height" -msgstr "Longitud de la imagen" - -#: src/nikonmn.cpp:850 -#, fuzzy -msgid "AF image height" -msgstr "Longitud de la imagen" - -#: src/nikonmn.cpp:851 -#, fuzzy -msgid "AF Area X Position" -msgstr "Posicionamiento YCbCr" - -#: src/nikonmn.cpp:851 -#, fuzzy -msgid "AF area x position" -msgstr "Posicionamiento YCbCr" - -#: src/nikonmn.cpp:852 -#, fuzzy -msgid "AF Area Y Position" -msgstr "Posicionamiento YCbCr" - -#: src/nikonmn.cpp:852 -#, fuzzy -msgid "AF area y position" -msgstr "Posicionamiento YCbCr" - -#: src/nikonmn.cpp:853 -#, fuzzy -msgid "AF Area Width" -msgstr "Modo de exposición" - -#: src/nikonmn.cpp:853 -#, fuzzy -msgid "AF area width" -msgstr "Flash" - -#: src/nikonmn.cpp:854 -#, fuzzy -msgid "AF Area Height" -msgstr "Modo de exposición" - -#: src/nikonmn.cpp:854 -#, fuzzy -msgid "AF area height" -msgstr "Copyright" - -#: src/nikonmn.cpp:855 -#, fuzzy -msgid "Contrast Detect AF In Focus" -msgstr "Contraste" - -#: src/nikonmn.cpp:855 -#, fuzzy -msgid "Contrast detect AF in focus" -msgstr "Contraste" - -#: src/nikonmn.cpp:857 -#, fuzzy -msgid "Unknown Nikon Auto Focus 2 Tag" -msgstr "Versión Exif" - -#: src/nikonmn.cpp:868 -#, fuzzy -msgid "Directory Number" -msgstr "ID único de imagen" - -#: src/nikonmn.cpp:868 -#, fuzzy -msgid "Directory number" -msgstr "ID único de imagen" - -#: src/nikonmn.cpp:871 -#, fuzzy -msgid "Unknown Nikon File Info Tag" -msgstr "Desconocido" - -#: src/nikonmn.cpp:882 src/pentaxmn.cpp:542 -#, fuzzy -msgid "Multiple Exposure" -msgstr "Modo de exposición" - -#: src/nikonmn.cpp:883 -#, fuzzy -msgid "Image Overlay" -msgstr "Ancho de la imagen" - -#: src/nikonmn.cpp:889 -#, fuzzy -msgid "Multi Exposure Mode" -msgstr "Modo de exposición" - -#: src/nikonmn.cpp:889 -#, fuzzy -msgid "Multi exposure mode" -msgstr "Modo de exposición" - -#: src/nikonmn.cpp:890 -#, fuzzy -msgid "Multi Exposure Shots" -msgstr "Modo de exposición" - -#: src/nikonmn.cpp:890 -#, fuzzy -msgid "Multi exposure shots" -msgstr "Modo de exposición" - -#: src/nikonmn.cpp:891 -#, fuzzy -msgid "Multi Exposure Auto Gain" -msgstr "Modo de exposición" - -#: src/nikonmn.cpp:891 -#, fuzzy -msgid "Multi exposure auto gain" -msgstr "Modo de exposición" - -#: src/nikonmn.cpp:893 src/nikonmn.cpp:1013 src/nikonmn.cpp:1033 -#: src/nikonmn.cpp:1053 -#, fuzzy -msgid "Unknown Nikon Multi Exposure Tag" -msgstr "Versión Exif" - -#: src/nikonmn.cpp:905 src/olympusmn.cpp:143 -#, fuzzy -msgid "Internal" -msgstr "Centímetro" - -#: src/nikonmn.cpp:911 -msgid "1.01 (SB-800 or Metz 58 AF-1)" -msgstr "" - -#: src/nikonmn.cpp:912 -msgid "1.03 (SB-800)" -msgstr "" - -#: src/nikonmn.cpp:913 -msgid "2.01 (SB-800)" -msgstr "" - -#: src/nikonmn.cpp:914 -msgid "2.04 (SB-600)" -msgstr "" - -#: src/nikonmn.cpp:915 -msgid "2.05 (SB-600)" -msgstr "" - -#: src/nikonmn.cpp:916 -msgid "3.01 (SU-800 Remote Commander)" -msgstr "" - -#: src/nikonmn.cpp:917 -msgid "4.01 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:918 -msgid "4.02 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:919 -msgid "4.04 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:920 -msgid "5.01 (SB-900)" -msgstr "" - -#: src/nikonmn.cpp:921 -msgid "5.02 (SB-900)" -msgstr "" - -#: src/nikonmn.cpp:927 -msgid "0.1 m" -msgstr "" - -#: src/nikonmn.cpp:928 -msgid "0.2 m" -msgstr "" - -#: src/nikonmn.cpp:929 -msgid "0.3 m" -msgstr "" - -#: src/nikonmn.cpp:930 -msgid "0.4 m" -msgstr "" - -#: src/nikonmn.cpp:931 -msgid "0.5 m" -msgstr "" - -#: src/nikonmn.cpp:932 -msgid "0.6 m" -msgstr "" - -#: src/nikonmn.cpp:933 -msgid "0.7 m" -msgstr "" - -#: src/nikonmn.cpp:934 -msgid "0.8 m" -msgstr "" - -#: src/nikonmn.cpp:935 -msgid "0.9 m" -msgstr "" - -#: src/nikonmn.cpp:936 -msgid "1.0 m" -msgstr "" - -#: src/nikonmn.cpp:937 -msgid "1.1 m" -msgstr "" - -#: src/nikonmn.cpp:938 -msgid "1.3 m" -msgstr "" - -#: src/nikonmn.cpp:939 -msgid "1.4 m" -msgstr "" - -#: src/nikonmn.cpp:940 -msgid "1.6 m" -msgstr "" - -#: src/nikonmn.cpp:941 -msgid "1.8 m" -msgstr "" - -#: src/nikonmn.cpp:942 -msgid "2.0 m" -msgstr "" - -#: src/nikonmn.cpp:943 -msgid "2.2 m" -msgstr "" - -#: src/nikonmn.cpp:944 -msgid "2.5 m" -msgstr "" - -#: src/nikonmn.cpp:945 -msgid "2.8 m" -msgstr "" - -#: src/nikonmn.cpp:946 -msgid "3.2 m" -msgstr "" - -#: src/nikonmn.cpp:947 -msgid "3.6 m" -msgstr "" - -#: src/nikonmn.cpp:948 -msgid "4.0 m" -msgstr "" - -#: src/nikonmn.cpp:949 -msgid "4.5 m" -msgstr "" - -#: src/nikonmn.cpp:950 -msgid "5.0 m" -msgstr "" - -#: src/nikonmn.cpp:951 -msgid "5.6 m" -msgstr "" - -#: src/nikonmn.cpp:952 -msgid "6.3 m" -msgstr "" - -#: src/nikonmn.cpp:953 -msgid "7.1 m" -msgstr "" - -#: src/nikonmn.cpp:954 -msgid "8.0 m" -msgstr "" - -#: src/nikonmn.cpp:955 -msgid "9.0 m" -msgstr "" - -#: src/nikonmn.cpp:956 -msgid "10.0 m" -msgstr "" - -#: src/nikonmn.cpp:957 -msgid "11.0 m" -msgstr "" - -#: src/nikonmn.cpp:958 -msgid "13.0 m" -msgstr "" - -#: src/nikonmn.cpp:959 -msgid "14.0 m" -msgstr "" - -#: src/nikonmn.cpp:960 -msgid "16.0 m" -msgstr "" - -#: src/nikonmn.cpp:961 -msgid "18.0 m" -msgstr "" - -#: src/nikonmn.cpp:962 -msgid "20.0 m" -msgstr "" - -#: src/nikonmn.cpp:969 -msgid "iTTL-BL" -msgstr "" - -#: src/nikonmn.cpp:970 -msgid "iTTL" -msgstr "" - -#: src/nikonmn.cpp:971 -#, fuzzy -msgid "Auto Aperture" -msgstr "Apertura" - -#: src/nikonmn.cpp:973 -msgid "GN (distance priority)" -msgstr "" - -#: src/nikonmn.cpp:975 src/nikonmn.cpp:976 -msgid "Repeating Flash" -msgstr "" - -#: src/nikonmn.cpp:982 -#, fuzzy -msgid "Bounce Flash" -msgstr "Flash" - -#: src/nikonmn.cpp:983 -msgid "Wide Flash Adapter" -msgstr "" - -#: src/nikonmn.cpp:989 -msgid "FL-GL1" -msgstr "" - -#: src/nikonmn.cpp:990 -msgid "FL-GL2" -msgstr "" - -#: src/nikonmn.cpp:991 -msgid "TN-A1" -msgstr "" - -#: src/nikonmn.cpp:992 -msgid "TN-A2" -msgstr "" - -#: src/nikonmn.cpp:996 -#, fuzzy -msgid "Amber" -msgstr "El número F." - -#: src/nikonmn.cpp:1002 src/nikonmn.cpp:1024 src/nikonmn.cpp:1044 -#, fuzzy -msgid "Flash Source" -msgstr "Fuente de archivo" - -#: src/nikonmn.cpp:1002 src/nikonmn.cpp:1024 src/nikonmn.cpp:1044 -#, fuzzy -msgid "Flash source" -msgstr "Fuente de archivo" - -#: src/nikonmn.cpp:1003 src/nikonmn.cpp:1025 -msgid "0x0005" -msgstr "" - -#: src/nikonmn.cpp:1004 src/nikonmn.cpp:1026 src/nikonmn.cpp:1045 -#, fuzzy -msgid "External Flash Firmware" -msgstr "Flash" - -#: src/nikonmn.cpp:1004 src/nikonmn.cpp:1026 src/nikonmn.cpp:1045 -#, fuzzy -msgid "External flash firmware" -msgstr "Retrato" - -#: src/nikonmn.cpp:1005 src/nikonmn.cpp:1027 src/nikonmn.cpp:1046 -#, fuzzy -msgid "External Flash Flags" -msgstr "Retrato" - -#: src/nikonmn.cpp:1005 src/nikonmn.cpp:1027 src/nikonmn.cpp:1046 -#, fuzzy -msgid "External flash flags" -msgstr "Retrato" - -#: src/nikonmn.cpp:1006 src/nikonmn.cpp:1028 src/nikonmn.cpp:1047 -#, fuzzy -msgid "Flash Focal Length" -msgstr "Distancia focal" - -#: src/nikonmn.cpp:1006 src/nikonmn.cpp:1028 src/nikonmn.cpp:1047 -#, fuzzy -msgid "Flash focal length" -msgstr "Distancia focal" - -#: src/nikonmn.cpp:1007 src/nikonmn.cpp:1029 src/nikonmn.cpp:1048 -msgid "Repeating Flash Rate" -msgstr "" - -#: src/nikonmn.cpp:1007 src/nikonmn.cpp:1029 src/nikonmn.cpp:1048 -#, fuzzy -msgid "Repeating flash rate" -msgstr "Método de sensado" - -#: src/nikonmn.cpp:1008 src/nikonmn.cpp:1030 src/nikonmn.cpp:1049 -msgid "Repeating Flash Count" -msgstr "" - -#: src/nikonmn.cpp:1008 src/nikonmn.cpp:1030 src/nikonmn.cpp:1049 -msgid "Repeating flash count" -msgstr "" - -#: src/nikonmn.cpp:1009 src/nikonmn.cpp:1031 src/nikonmn.cpp:1050 -#, fuzzy -msgid "Flash GN Distance" -msgstr "Balance de blanco manual" - -#: src/nikonmn.cpp:1009 src/nikonmn.cpp:1031 src/nikonmn.cpp:1050 -#, fuzzy -msgid "Flash GN distance" -msgstr "Balance de blanco manual" - -#: src/nikonmn.cpp:1010 -msgid "Flash Group A Control Mode" -msgstr "" - -#: src/nikonmn.cpp:1010 -#, fuzzy -msgid "Flash group a control mode" -msgstr "El flash disparó, modo automático." - -#: src/nikonmn.cpp:1011 -msgid "Flash Group B Control Mode" -msgstr "" - -#: src/nikonmn.cpp:1011 -#, fuzzy -msgid "Flash group b control mode" -msgstr "El flash disparó, modo automático." - -#: src/nikonmn.cpp:1051 -#, fuzzy -msgid "Flash Color Filter" -msgstr "Espacio de color" - -#: src/nikonmn.cpp:1051 -#, fuzzy -msgid "Flash color filter" -msgstr "Espacio de color" - -#: src/nikonmn.cpp:1064 src/nikonmn.cpp:1077 src/nikonmn.cpp:1137 -#: src/nikonmn.cpp:1197 src/nikonmn.cpp:1233 src/pentaxmn.cpp:1042 -#: src/pentaxmn.cpp:1043 -#, fuzzy -msgid "Shutter count" -msgstr "obturador" - -#: src/nikonmn.cpp:1066 -#, fuzzy -msgid "Unknown Nikon Shot Info D80 Tag" -msgstr "Desconocido" - -#: src/nikonmn.cpp:1078 src/sonymn.cpp:408 src/sonymn.cpp:409 -#, fuzzy -msgid "Flash Level" -msgstr "Flash" - -#: src/nikonmn.cpp:1078 -#, fuzzy -msgid "Flash level" -msgstr "Flash" - -#: src/nikonmn.cpp:1080 -#, fuzzy -msgid "Unknown Nikon Shot Info D40 Tag" -msgstr "Desconocido" - -#: src/nikonmn.cpp:1090 src/nikonmn.cpp:1150 -#, fuzzy -msgid "0" -msgstr "D75" - -#: src/nikonmn.cpp:1091 src/nikonmn.cpp:1159 -msgid "+1" -msgstr "" - -#: src/nikonmn.cpp:1092 src/nikonmn.cpp:1160 -#, fuzzy -msgid "+2" -msgstr "D75" - -#: src/nikonmn.cpp:1093 src/nikonmn.cpp:1161 -msgid "+4" -msgstr "" - -#: src/nikonmn.cpp:1094 src/nikonmn.cpp:1162 -msgid "+8" -msgstr "" - -#: src/nikonmn.cpp:1095 src/nikonmn.cpp:1163 -msgid "+16" -msgstr "" - -#: src/nikonmn.cpp:1096 src/nikonmn.cpp:1164 -#, fuzzy -msgid "-16" -msgstr "-" - -#: src/nikonmn.cpp:1097 src/nikonmn.cpp:1165 -#, fuzzy -msgid "-8" -msgstr "-" - -#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1166 -#, fuzzy -msgid "-4" -msgstr "-" - -#: src/nikonmn.cpp:1099 src/nikonmn.cpp:1167 -#, fuzzy -msgid "-2" -msgstr "-" - -#: src/nikonmn.cpp:1100 src/nikonmn.cpp:1168 -#, fuzzy -msgid "-1" -msgstr "-" - -#: src/nikonmn.cpp:1101 src/nikonmn.cpp:1169 -msgid "+17" -msgstr "" - -#: src/nikonmn.cpp:1102 src/nikonmn.cpp:1170 -#, fuzzy -msgid "-17" -msgstr "-" - -#: src/nikonmn.cpp:1103 src/nikonmn.cpp:1171 -msgid "+9" -msgstr "" - -#: src/nikonmn.cpp:1104 src/nikonmn.cpp:1172 -msgid "+18" -msgstr "" - -#: src/nikonmn.cpp:1105 src/nikonmn.cpp:1173 -#, fuzzy -msgid "-18" -msgstr "-" - -#: src/nikonmn.cpp:1106 src/nikonmn.cpp:1174 -#, fuzzy -msgid "-9" -msgstr "-" - -#: src/nikonmn.cpp:1107 src/nikonmn.cpp:1175 -msgid "+19" -msgstr "" - -#: src/nikonmn.cpp:1108 src/nikonmn.cpp:1176 -#, fuzzy -msgid "-19" -msgstr "-" - -#: src/nikonmn.cpp:1109 src/nikonmn.cpp:1177 -msgid "+5" -msgstr "" - -#: src/nikonmn.cpp:1110 src/nikonmn.cpp:1178 -#, fuzzy -msgid "+10" -msgstr "D75" - -#: src/nikonmn.cpp:1111 src/nikonmn.cpp:1179 -#, fuzzy -msgid "+20" -msgstr "D75" - -#: src/nikonmn.cpp:1112 src/nikonmn.cpp:1180 -#, fuzzy -msgid "-20" -msgstr "D75" - -#: src/nikonmn.cpp:1113 src/nikonmn.cpp:1181 -#, fuzzy -msgid "-10" -msgstr "-" - -#: src/nikonmn.cpp:1114 src/nikonmn.cpp:1182 -#, fuzzy -msgid "-5" -msgstr "-" - -#: src/nikonmn.cpp:1115 src/nikonmn.cpp:1183 -msgid "+11" -msgstr "" - -#: src/nikonmn.cpp:1116 src/nikonmn.cpp:1184 -#, fuzzy -msgid "-11" -msgstr "-" - -#: src/nikonmn.cpp:1117 src/nikonmn.cpp:1185 -msgid "+3" -msgstr "" - -#: src/nikonmn.cpp:1118 src/nikonmn.cpp:1186 -msgid "+6" -msgstr "" - -#: src/nikonmn.cpp:1119 src/nikonmn.cpp:1187 -#, fuzzy -msgid "+12" -msgstr "D75" - -#: src/nikonmn.cpp:1120 src/nikonmn.cpp:1188 -#, fuzzy -msgid "-12" -msgstr "-" - -#: src/nikonmn.cpp:1121 src/nikonmn.cpp:1189 -#, fuzzy -msgid "-6" -msgstr "-" - -#: src/nikonmn.cpp:1122 src/nikonmn.cpp:1190 -#, fuzzy -msgid "-3" -msgstr "-" - -#: src/nikonmn.cpp:1123 src/nikonmn.cpp:1151 -msgid "+13" -msgstr "" - -#: src/nikonmn.cpp:1124 src/nikonmn.cpp:1152 -#, fuzzy -msgid "-13" -msgstr "-" - -#: src/nikonmn.cpp:1125 src/nikonmn.cpp:1153 -msgid "+7" -msgstr "" - -#: src/nikonmn.cpp:1126 src/nikonmn.cpp:1154 -msgid "+14" -msgstr "" - -#: src/nikonmn.cpp:1127 src/nikonmn.cpp:1155 -#, fuzzy -msgid "-14" -msgstr "-" - -#: src/nikonmn.cpp:1128 src/nikonmn.cpp:1156 -#, fuzzy -msgid "-7" -msgstr "-" - -#: src/nikonmn.cpp:1129 src/nikonmn.cpp:1157 -msgid "+15" -msgstr "" - -#: src/nikonmn.cpp:1130 src/nikonmn.cpp:1158 -#, fuzzy -msgid "-15" -msgstr "-" - -#: src/nikonmn.cpp:1138 src/nikonmn.cpp:1198 -#, fuzzy -msgid "AF Fine Tune Adj" -msgstr "Punto blanco" - -#: src/nikonmn.cpp:1138 src/nikonmn.cpp:1198 -#, fuzzy -msgid "AF fine tune adj" -msgstr "Punto blanco" - -#: src/nikonmn.cpp:1140 -#, fuzzy -msgid "Unknown Nikon Shot Info D300 (a) Tag" -msgstr "Desconocido" - -#: src/nikonmn.cpp:1200 -#, fuzzy -msgid "Unknown Nikon Shot Info D300 (b) Tag" -msgstr "Desconocido" - -#: src/nikonmn.cpp:1213 -msgid "On (3)" -msgstr "" - -#: src/nikonmn.cpp:1226 -#, fuzzy -msgid "Shutter Count 1" -msgstr "obturador" - -#: src/nikonmn.cpp:1226 -#, fuzzy -msgid "Shutter count 1" -msgstr "obturador" - -#: src/nikonmn.cpp:1229 -#, fuzzy -msgid "Vibration Reduction 1" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/nikonmn.cpp:1229 -#, fuzzy -msgid "Vibration reduction 1" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/nikonmn.cpp:1230 -#, fuzzy -msgid "Shutter Count 2" -msgstr "obturador" - -#: src/nikonmn.cpp:1230 -#, fuzzy -msgid "Shutter count 2" -msgstr "obturador" - -#: src/nikonmn.cpp:1231 -#, fuzzy -msgid "Vibration Reduction 2" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/nikonmn.cpp:1231 -#, fuzzy -msgid "Vibration reduction 2" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/nikonmn.cpp:1235 -#, fuzzy -msgid "Unknown Nikon Shot Info Tag" -msgstr "Desconocido" - -#: src/nikonmn.cpp:1246 -#, fuzzy -msgid "WB RBGG Levels" -msgstr "Nivel de la batería" - -#: src/nikonmn.cpp:1246 -#, fuzzy -msgid "WB RBGG levels" -msgstr "Nivel de la batería" - -#: src/nikonmn.cpp:1248 -#, fuzzy -msgid "Unknown Nikon Color Balance 1 Tag" -msgstr "Espacio de color" - -#: src/nikonmn.cpp:1259 src/nikonmn.cpp:1272 src/nikonmn.cpp:1285 -#, fuzzy -msgid "WB RGGB Levels" -msgstr "Nivel de la batería" - -#: src/nikonmn.cpp:1259 src/nikonmn.cpp:1272 src/nikonmn.cpp:1285 -#, fuzzy -msgid "WB RGGB levels" -msgstr "Nivel de la batería" - -#: src/nikonmn.cpp:1261 -#, fuzzy -msgid "Unknown Nikon Color Balance 2 Tag" -msgstr "Espacio de color" - -#: src/nikonmn.cpp:1274 -#, fuzzy -msgid "Unknown Nikon Color Balance 2a Tag" -msgstr "Espacio de color" - -#: src/nikonmn.cpp:1287 -#, fuzzy -msgid "Unknown Nikon Color Balance 2b Tag" -msgstr "Espacio de color" - -#: src/nikonmn.cpp:1298 -#, fuzzy -msgid "WB RGBG Levels" -msgstr "Nivel de la batería" - -#: src/nikonmn.cpp:1298 -#, fuzzy -msgid "WB RGBG levels" -msgstr "Nivel de la batería" - -#: src/nikonmn.cpp:1300 -#, fuzzy -msgid "Unknown Nikon Color Balance 3 Tag" -msgstr "Desconocido" - -#: src/nikonmn.cpp:1311 -#, fuzzy -msgid "WB GRBG Levels" -msgstr "Nivel de la batería" - -#: src/nikonmn.cpp:1311 -#, fuzzy -msgid "WB GRBG levels" -msgstr "Nivel de la batería" - -#: src/nikonmn.cpp:1313 -#, fuzzy -msgid "Unknown Nikon Color Balance 4 Tag" -msgstr "Desconocido" - -#: src/nikonmn.cpp:1324 src/nikonmn.cpp:1348 src/nikonmn.cpp:1373 -#, fuzzy -msgid "Lens ID Number" -msgstr "El número F." - -#: src/nikonmn.cpp:1324 src/nikonmn.cpp:1348 src/nikonmn.cpp:1373 -#, fuzzy -msgid "Lens ID number" -msgstr "El número F." - -#: src/nikonmn.cpp:1325 src/nikonmn.cpp:1349 src/nikonmn.cpp:1374 -#, fuzzy -msgid "Lens F-Stops" -msgstr "Espacio de color" - -#: src/nikonmn.cpp:1325 src/nikonmn.cpp:1349 src/nikonmn.cpp:1374 -#, fuzzy -msgid "Lens F-stops" -msgstr "Espacio de color" - -#: src/nikonmn.cpp:1326 src/nikonmn.cpp:1350 src/nikonmn.cpp:1375 -#: src/olympusmn.cpp:751 -#, fuzzy -msgid "Min Focal Length" -msgstr "Distancia focal" - -#: src/nikonmn.cpp:1326 src/nikonmn.cpp:1350 src/nikonmn.cpp:1375 -#: src/olympusmn.cpp:751 -#, fuzzy -msgid "Min focal length" -msgstr "Distancia focal" - -#: src/nikonmn.cpp:1327 src/nikonmn.cpp:1351 src/nikonmn.cpp:1376 -#: src/olympusmn.cpp:752 -#, fuzzy -msgid "Max Focal Length" -msgstr "Distancia focal" - -#: src/nikonmn.cpp:1327 src/nikonmn.cpp:1351 src/nikonmn.cpp:1376 -#: src/olympusmn.cpp:752 -#, fuzzy -msgid "Max focal length" -msgstr "Distancia focal" - -#: src/nikonmn.cpp:1328 src/nikonmn.cpp:1352 src/nikonmn.cpp:1377 -#: src/olympusmn.cpp:749 -#, fuzzy -msgid "Max Aperture At Min Focal" -msgstr "apertura" - -#: src/nikonmn.cpp:1328 src/nikonmn.cpp:1352 src/olympusmn.cpp:749 -#, fuzzy -msgid "Max aperture at min focal" -msgstr "apertura" - -#: src/nikonmn.cpp:1329 src/nikonmn.cpp:1353 src/nikonmn.cpp:1378 -#: src/olympusmn.cpp:750 -#, fuzzy -msgid "Max Aperture At Max Focal" -msgstr "apertura" - -#: src/nikonmn.cpp:1329 src/nikonmn.cpp:1353 src/olympusmn.cpp:750 -#, fuzzy -msgid "Max aperture at max focal" -msgstr "apertura" - -#: src/nikonmn.cpp:1330 src/nikonmn.cpp:1354 src/nikonmn.cpp:1379 -#, fuzzy -msgid "MCU Version" -msgstr "Versión Exif" - -#: src/nikonmn.cpp:1330 src/nikonmn.cpp:1354 src/nikonmn.cpp:1379 -#, fuzzy -msgid "MCU version" -msgstr "Versión Exif" - -#: src/nikonmn.cpp:1332 -#, fuzzy -msgid "Unknown Nikon Lens Data 1 Tag" -msgstr "Versión Exif" - -#: src/nikonmn.cpp:1343 src/nikonmn.cpp:1368 -#, fuzzy -msgid "Exit Pupil Position" -msgstr "Posicionamiento YCbCr" - -#: src/nikonmn.cpp:1343 src/nikonmn.cpp:1368 -#, fuzzy -msgid "Exit pupil position" -msgstr "Posicionamiento YCbCr" - -#: src/nikonmn.cpp:1344 src/nikonmn.cpp:1369 -#, fuzzy -msgid "AF Aperture" -msgstr "Apertura" - -#: src/nikonmn.cpp:1344 src/nikonmn.cpp:1369 -#, fuzzy -msgid "AF aperture" -msgstr "Apertura" - -#: src/nikonmn.cpp:1355 src/nikonmn.cpp:1380 -#, fuzzy -msgid "Effective Max Aperture" -msgstr "Apertura" - -#: src/nikonmn.cpp:1355 src/nikonmn.cpp:1380 -#, fuzzy -msgid "Effective max aperture" -msgstr "apertura" - -#: src/nikonmn.cpp:1357 -#, fuzzy -msgid "Unknown Nikon Lens Data 2 Tag" -msgstr "Versión Exif" - -#: src/nikonmn.cpp:1377 -#, fuzzy -msgid "Max aperture at min focal length" -msgstr "apertura" - -#: src/nikonmn.cpp:1378 -#, fuzzy -msgid "Max aperture at max focal length" -msgstr "apertura" - -#: src/nikonmn.cpp:1382 -#, fuzzy -msgid "Unknown Nikon Lens Data 3 Tag" -msgstr "Versión Exif" - -#: src/nikonmn.cpp:1562 -msgid "Closest subject" -msgstr "" - -#: src/nikonmn.cpp:1563 -msgid "Group dynamic-AF" -msgstr "" - -#: src/nikonmn.cpp:1586 src/tags.cpp:240 -msgid "none" -msgstr "" - -#: src/nikonmn.cpp:1596 -#, fuzzy -msgid "used" -msgstr "No definido" - -#: src/nikonmn.cpp:1622 -#, fuzzy -msgid "All 11 Points" -msgstr "Punto blanco" - -#: src/nikonmn.cpp:1637 src/nikonmn.cpp:1638 src/pentaxmn.cpp:533 -#: src/pentaxmn.cpp:537 -#, fuzzy -msgid "Single-frame" -msgstr "Nombre del documento" - -#: src/olympusmn.cpp:71 -#, fuzzy -msgid "Standard Quality (SQ)" -msgstr "Luz estándar A" - -#: src/olympusmn.cpp:72 -#, fuzzy -msgid "High Quality (HQ)" -msgstr "Ancho de la imagen" - -#: src/olympusmn.cpp:73 -#, fuzzy -msgid "Super High Quality (SHQ)" -msgstr "Ancho de la imagen" - -#: src/olympusmn.cpp:88 -msgid "On (preset)" -msgstr "" - -#: src/olympusmn.cpp:95 src/pentaxmn.cpp:474 -#, fuzzy -msgid "Sport" -msgstr "Lugar" - -#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 -#, fuzzy -msgid "Landscape+Portrait" -msgstr "Paisaje" - -#: src/olympusmn.cpp:100 -#, fuzzy -msgid "Self Portrait" -msgstr "Retrato" - -#: src/olympusmn.cpp:102 -msgid "2 in 1" -msgstr "" - -#: src/olympusmn.cpp:105 -#, fuzzy -msgid "Night+Portrait" -msgstr "Retrato" - -#: src/olympusmn.cpp:111 src/panasonicmn.cpp:120 src/pentaxmn.cpp:486 -msgid "Food" -msgstr "" - -#: src/olympusmn.cpp:112 -#, fuzzy -msgid "Documents" -msgstr "Nombre del documento" - -#: src/olympusmn.cpp:114 -#, fuzzy -msgid "Shoot & Select" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:115 -msgid "Beach & Snow" -msgstr "" - -#: src/olympusmn.cpp:116 -#, fuzzy -msgid "Self Portrait+Timer" -msgstr "Centímetro" - -#: src/olympusmn.cpp:117 -#, fuzzy -msgid "Candle" -msgstr "Luz de día" - -#: src/olympusmn.cpp:118 -#, fuzzy -msgid "Available Light" -msgstr "Flash" - -#: src/olympusmn.cpp:119 -msgid "Behind Glass" -msgstr "" - -#: src/olympusmn.cpp:120 -#, fuzzy -msgid "My Mode" -msgstr "Flash" - -#: src/olympusmn.cpp:121 src/panasonicmn.cpp:131 src/pentaxmn.cpp:483 -#: src/sonymn.cpp:127 -#, fuzzy -msgid "Pet" -msgstr "Ãrea del sujeto" - -#: src/olympusmn.cpp:122 -#, fuzzy -msgid "Underwater Wide1" -msgstr "Tiempo bueno" - -#: src/olympusmn.cpp:123 -#, fuzzy -msgid "Underwater Macro" -msgstr "Tiempo bueno" - -#: src/olympusmn.cpp:124 -#, fuzzy -msgid "Shoot & Select1" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:125 -#, fuzzy -msgid "Shoot & Select2" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:127 -#, fuzzy -msgid "Digital Image Stabilization" -msgstr "Orientación" - -#: src/olympusmn.cpp:128 -#, fuzzy -msgid "Auction" -msgstr "acción" - -#: src/olympusmn.cpp:131 -#, fuzzy -msgid "Underwater Wide2" -msgstr "Tiempo bueno" - -#: src/olympusmn.cpp:133 -msgid "Children" -msgstr "" - -#: src/olympusmn.cpp:135 -#, fuzzy -msgid "Nature Macro" -msgstr "Manual" - -#: src/olympusmn.cpp:136 -#, fuzzy -msgid "Underwater Snapshot" -msgstr "Tiempo bueno" - -#: src/olympusmn.cpp:137 -#, fuzzy -msgid "Shooting Guide" -msgstr "Modo de métrica" - -#: src/olympusmn.cpp:145 -#, fuzzy -msgid "Internal + External" -msgstr "El número F." - -#: src/olympusmn.cpp:176 -#, fuzzy -msgid "Interlaced" -msgstr "centrado" - -#: src/olympusmn.cpp:177 -#, fuzzy -msgid "Progressive" -msgstr "Versión Exif" - -#: src/olympusmn.cpp:188 -#, fuzzy -msgid "Thumbnail Image" -msgstr "Desplazamiento de tira" - -#: src/olympusmn.cpp:189 -#, fuzzy -msgid "Thumbnail image" -msgstr "Desplazamiento de tira" - -#: src/olympusmn.cpp:192 src/olympusmn.cpp:744 src/olympusmn.cpp:1027 -#, fuzzy -msgid "Body Firmware Version" -msgstr "Versión Exif" - -#: src/olympusmn.cpp:193 src/olympusmn.cpp:744 src/olympusmn.cpp:1027 -#, fuzzy -msgid "Body firmware version" -msgstr "Versión Exif" - -#: src/olympusmn.cpp:195 -#, fuzzy -msgid "Special Mode" -msgstr "Modo de métrica" - -#: src/olympusmn.cpp:196 -#, fuzzy -msgid "Picture taking mode" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:204 -#, fuzzy -msgid "Black & White Mode" -msgstr "acción" - -#: src/olympusmn.cpp:205 -msgid "Black and white mode" -msgstr "" - -#: src/olympusmn.cpp:208 -#, fuzzy -msgid "Digital zoom ratio" -msgstr "Relación de zoom digital" - -#: src/olympusmn.cpp:210 src/olympusmn.cpp:743 -#, fuzzy -msgid "Focal Plane Diagonal" -msgstr "Resolución Y del plano focal" - -#: src/olympusmn.cpp:211 src/olympusmn.cpp:743 -#, fuzzy -msgid "Focal plane diagonal" -msgstr "Resolución Y del plano focal" - -#: src/olympusmn.cpp:213 -msgid "Lens Distortion Parameters" -msgstr "" - -#: src/olympusmn.cpp:214 -msgid "Lens distortion parameters" -msgstr "" - -#: src/olympusmn.cpp:216 src/olympusmn.cpp:740 -#, fuzzy -msgid "Camera Type" -msgstr "Contraste" - -#: src/olympusmn.cpp:217 src/olympusmn.cpp:740 -#, fuzzy -msgid "Camera type" -msgstr "Contraste" - -#: src/olympusmn.cpp:220 -msgid "ASCII format data such as [PictureInfo]" -msgstr "" - -#: src/olympusmn.cpp:222 -#, fuzzy -msgid "Camera ID" -msgstr "Contraste" - -#: src/olympusmn.cpp:223 -#, fuzzy -msgid "Camera ID data" -msgstr "Contraste" - -#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:519 -#: src/sigmamn.cpp:119 src/sigmamn.cpp:120 src/tags.cpp:538 -msgid "Software" -msgstr "Software" - -#: src/olympusmn.cpp:234 src/panasonicmn.cpp:348 src/sonymn.cpp:314 -#, fuzzy -msgid "Preview Image" -msgstr "Orientación" - -#: src/olympusmn.cpp:235 src/panasonicmn.cpp:348 -#, fuzzy -msgid "Preview image" -msgstr "Orientación" - -#: src/olympusmn.cpp:237 -#, fuzzy -msgid "Pre Capture Frames" -msgstr "Tipo de captura de escena" - -#: src/olympusmn.cpp:238 -#, fuzzy -msgid "Pre-capture frames" -msgstr "Tipo de captura de escena" - -#: src/olympusmn.cpp:240 -#, fuzzy -msgid "White Board" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:241 -#, fuzzy -msgid "White board" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:243 -#, fuzzy -msgid "One Touch WB" -msgstr "Balance de blanco automático" - -#: src/olympusmn.cpp:244 -#, fuzzy -msgid "One touch white balance" -msgstr "Balance de blanco automático" - -#: src/olympusmn.cpp:246 src/olympusmn.cpp:678 -#, fuzzy -msgid "White Balance Bracket" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:247 src/olympusmn.cpp:678 -#, fuzzy -msgid "White balance bracket" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:255 src/sigmamn.cpp:116 src/sigmamn.cpp:117 -#, fuzzy -msgid "Firmware" -msgstr "Versión Exif" - -#: src/olympusmn.cpp:256 -#, fuzzy -msgid "Firmwarer" -msgstr "Versión Exif" - -#: src/olympusmn.cpp:261 -#, fuzzy -msgid "Data Dump 1" -msgstr "formato planar" - -#: src/olympusmn.cpp:262 -#, fuzzy -msgid "Various camera settings 1" -msgstr "Contraste" - -#: src/olympusmn.cpp:264 -#, fuzzy -msgid "Data Dump 2" -msgstr "formato planar" - -#: src/olympusmn.cpp:265 -#, fuzzy -msgid "Various camera settings 2" -msgstr "Macro" - -#: src/olympusmn.cpp:268 -#, fuzzy -msgid "Shutter speed value" -msgstr "Velocidad del obturador" - -#: src/olympusmn.cpp:271 -#, fuzzy -msgid "ISO speed value" -msgstr "Velocidad ISO" - -#: src/olympusmn.cpp:274 -#, fuzzy -msgid "Aperture value" -msgstr "apertura" - -#: src/olympusmn.cpp:277 -#, fuzzy -msgid "Brightness value" -msgstr "Brillo" - -#: src/olympusmn.cpp:285 -#, fuzzy -msgid "Bracket" -msgstr "acción" - -#: src/olympusmn.cpp:286 -#, fuzzy -msgid "Exposure compensation value" -msgstr "Tiempo de exposición" - -#: src/olympusmn.cpp:288 src/olympusmn.cpp:1015 -#, fuzzy -msgid "Sensor Temperature" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:289 src/olympusmn.cpp:1015 -#, fuzzy -msgid "Sensor temperature" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:291 -#, fuzzy -msgid "Lens Temperature" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:292 -#, fuzzy -msgid "Lens temperature" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:294 -#, fuzzy -msgid "Light Condition" -msgstr "Saturación" - -#: src/olympusmn.cpp:295 -#, fuzzy -msgid "Light condition" -msgstr "Saturación" - -#: src/olympusmn.cpp:297 -#, fuzzy -msgid "Focus Range" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:298 -#, fuzzy -msgid "Focus range" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:306 -#, fuzzy -msgid "Zoom" -msgstr "izquierda - abajo" - -#: src/olympusmn.cpp:307 src/olympusmn.cpp:1003 -#, fuzzy -msgid "Zoom step count" -msgstr "obturador" - -#: src/olympusmn.cpp:309 -#, fuzzy -msgid "Macro Focus" -msgstr "Macro" - -#: src/olympusmn.cpp:310 -#, fuzzy -msgid "Macro focus step count" -msgstr "Posicionamiento YCbCr" - -#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 -#, fuzzy -msgid "Sharpness Factor" -msgstr "Nitidez" - -#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 -#, fuzzy -msgid "Sharpness factor" -msgstr "Nitidez" - -#: src/olympusmn.cpp:315 -#, fuzzy -msgid "Flash Charge Level" -msgstr "Flash" - -#: src/olympusmn.cpp:316 -#, fuzzy -msgid "Flash charge level" -msgstr "Flash" - -#: src/olympusmn.cpp:318 src/olympusmn.cpp:962 -#, fuzzy -msgid "Color Matrix" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:319 src/olympusmn.cpp:962 -#, fuzzy -msgid "Color matrix" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:321 -#, fuzzy -msgid "BlackLevel" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:322 src/olympusmn.cpp:967 -#, fuzzy -msgid "Black level" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:331 -#, fuzzy -msgid "White balance mode" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:336 src/panasonicmn.cpp:342 -#, fuzzy -msgid "Red Balance" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:337 src/pentaxmn.cpp:938 -#, fuzzy -msgid "Red balance" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:339 src/panasonicmn.cpp:343 -#, fuzzy -msgid "Blue Balance" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:340 src/panasonicmn.cpp:343 src/pentaxmn.cpp:935 -#, fuzzy -msgid "Blue balance" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:342 -#, fuzzy -msgid "Color Matrix Number" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:343 -#, fuzzy -msgid "Color matrix mumber" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:345 -#, fuzzy -msgid "Serial Number 2" -msgstr "El número F." - -#: src/olympusmn.cpp:346 -#, fuzzy -msgid "Serial number 2" -msgstr "El número F." - -#: src/olympusmn.cpp:373 src/olympusmn.cpp:671 src/pentaxmn.cpp:1028 -#: src/pentaxmn.cpp:1029 -#, fuzzy -msgid "Flash exposure compensation" -msgstr "Tiempo de exposición" - -#: src/olympusmn.cpp:381 src/olympusmn.cpp:1011 -#, fuzzy -msgid "External Flash Bounce" -msgstr "Flash" - -#: src/olympusmn.cpp:382 src/olympusmn.cpp:1011 -#, fuzzy -msgid "External flash bounce" -msgstr "Retrato" - -#: src/olympusmn.cpp:384 src/olympusmn.cpp:1012 -#, fuzzy -msgid "External Flash Zoom" -msgstr "Retrato" - -#: src/olympusmn.cpp:385 src/olympusmn.cpp:1012 -#, fuzzy -msgid "External flash zoom" -msgstr "Retrato" - -#: src/olympusmn.cpp:387 -#, fuzzy -msgid "External Flash Mode" -msgstr "Flash" - -#: src/olympusmn.cpp:388 -#, fuzzy -msgid "External flash mode" -msgstr "Retrato" - -#: src/olympusmn.cpp:396 -#, fuzzy -msgid "Color Control" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:397 -#, fuzzy -msgid "Color control" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:399 -msgid "ValidBits" -msgstr "" - -#: src/olympusmn.cpp:400 src/olympusmn.cpp:969 -msgid "Valid bits" -msgstr "" - -#: src/olympusmn.cpp:402 -#, fuzzy -msgid "CoringFilter" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:403 src/olympusmn.cpp:965 src/olympusmn.cpp:1067 -#, fuzzy -msgid "Coring filter" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:423 -#, fuzzy -msgid "Compression Ratio" -msgstr "Compresión" - -#: src/olympusmn.cpp:424 -#, fuzzy -msgid "Compression ratio" -msgstr "Compresión" - -#: src/olympusmn.cpp:427 -#, fuzzy -msgid "Preview image embedded" -msgstr "Orientación" - -#: src/olympusmn.cpp:430 -#, fuzzy -msgid "Offset of the preview image" -msgstr "Orientación" - -#: src/olympusmn.cpp:433 -#, fuzzy -msgid "Size of the preview image" -msgstr "Orientación" - -#: src/olympusmn.cpp:435 -#, fuzzy -msgid "CCD Scan Mode" -msgstr "Tipo de escena" - -#: src/olympusmn.cpp:436 -#, fuzzy -msgid "CCD scan mode" -msgstr "Tipo de escena" - -#: src/olympusmn.cpp:441 -msgid "Infinity Lens Step" -msgstr "" - -#: src/olympusmn.cpp:442 -msgid "Infinity lens step" -msgstr "" - -#: src/olympusmn.cpp:444 -#, fuzzy -msgid "Near Lens Step" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:445 -msgid "Near lens step" -msgstr "" - -#: src/olympusmn.cpp:447 -#, fuzzy -msgid "Equipment Info" -msgstr "Versión Exif" - -#: src/olympusmn.cpp:448 -#, fuzzy -msgid "Camera equipment sub-IFD" -msgstr "Orientación" - -#: src/olympusmn.cpp:451 -#, fuzzy -msgid "Camera Settings sub-IFD" -msgstr "Contraste" - -#: src/olympusmn.cpp:453 -#, fuzzy -msgid "Raw Development" -msgstr "Orientación" - -#: src/olympusmn.cpp:454 -#, fuzzy -msgid "Raw development sub-IFD" -msgstr "Orientación" - -#: src/olympusmn.cpp:456 -#, fuzzy -msgid "Raw Development 2" -msgstr "Orientación" - -#: src/olympusmn.cpp:457 -#, fuzzy -msgid "Raw development 2 sub-IFD" -msgstr "Orientación" - -#: src/olympusmn.cpp:460 -#, fuzzy -msgid "Image processing sub-IFD" -msgstr "Longitud de la imagen" - -#: src/olympusmn.cpp:462 -#, fuzzy -msgid "Focus Info" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:463 -#, fuzzy -msgid "Focus sub-IFD" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:465 -#, fuzzy -msgid "Raw Info" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:466 -#, fuzzy -msgid "Raw sub-IFD" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:470 -#, fuzzy -msgid "Unknown OlympusMakerNote tag" -msgstr "Versión Exif" - -#: src/olympusmn.cpp:486 -#, fuzzy -msgid "Program-shift" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:491 -#, fuzzy -msgid "Center-weighted average" -msgstr "Promedio Ponderado en el Centro" - -#: src/olympusmn.cpp:493 -msgid "ESP" -msgstr "" - -#: src/olympusmn.cpp:494 -#, fuzzy -msgid "Pattern+AF" -msgstr "Patrón CFA" - -#: src/olympusmn.cpp:495 -#, fuzzy -msgid "Spot+Highlight control" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:496 -#, fuzzy -msgid "Spot+Shadow control" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:508 src/olympusmn.cpp:1369 -#, fuzzy -msgid "Single AF" -msgstr "Nombre del documento" - -#: src/olympusmn.cpp:509 src/olympusmn.cpp:1370 -msgid "Sequential shooting AF" -msgstr "" - -#: src/olympusmn.cpp:511 src/olympusmn.cpp:1372 src/sonymn.cpp:187 -#, fuzzy -msgid "Multi AF" -msgstr "multi-lugar" - -#: src/olympusmn.cpp:517 -#, fuzzy -msgid "AF Not Used" -msgstr "Autofocus no utilizado" - -#: src/olympusmn.cpp:518 -#, fuzzy -msgid "AF Used" -msgstr "Autofocus utilizado" - -#: src/olympusmn.cpp:523 -#, fuzzy -msgid "Not Ready" -msgstr "No definido" - -#: src/olympusmn.cpp:524 -#, fuzzy -msgid "Ready" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:531 -#, fuzzy -msgid "Fill-in" -msgstr "Relleno" - -#: src/olympusmn.cpp:533 -msgid "Slow-sync" -msgstr "" - -#: src/olympusmn.cpp:534 -#, fuzzy -msgid "Forced On" -msgstr "Fluorescente" - -#: src/olympusmn.cpp:535 -msgid "2nd Curtain" -msgstr "" - -#: src/olympusmn.cpp:541 -msgid "Channel 1, Low" -msgstr "" - -#: src/olympusmn.cpp:542 -msgid "Channel 2, Low" -msgstr "" - -#: src/olympusmn.cpp:543 -msgid "Channel 3, Low" -msgstr "" - -#: src/olympusmn.cpp:544 -msgid "Channel 4, Low" -msgstr "" - -#: src/olympusmn.cpp:545 -msgid "Channel 1, Mid" -msgstr "" - -#: src/olympusmn.cpp:546 -msgid "Channel 2, Mid" -msgstr "" - -#: src/olympusmn.cpp:547 -msgid "Channel 3, Mid" -msgstr "" - -#: src/olympusmn.cpp:548 -msgid "Channel 4, Mid" -msgstr "" - -#: src/olympusmn.cpp:549 -msgid "Channel 1, High" -msgstr "" - -#: src/olympusmn.cpp:550 -msgid "Channel 2, High" -msgstr "" - -#: src/olympusmn.cpp:551 -msgid "Channel 3, High" -msgstr "" - -#: src/olympusmn.cpp:552 -msgid "Channel 4, High" -msgstr "" - -#: src/olympusmn.cpp:566 -#, fuzzy -msgid "7500K (Fine Weather with Shade)" -msgstr "7500K (Buen tiempo con sombra" - -#: src/olympusmn.cpp:567 -#, fuzzy -msgid "6000K (Cloudy)" -msgstr "6000K (Nublado)" - -#: src/olympusmn.cpp:568 -#, fuzzy -msgid "5300K (Fine Weather)" -msgstr "5300K (Buen tiempo)" - -#: src/olympusmn.cpp:569 -msgid "3000K (Tungsten light)" -msgstr "3000K (Bombilla incandescente)" - -#: src/olympusmn.cpp:570 src/olympusmn.cpp:574 -msgid "3600K (Tungsten light-like)" -msgstr "" - -#: src/olympusmn.cpp:571 -#, fuzzy -msgid "6600K (Daylight fluorescent)" -msgstr "Fluorescente luz de día" - -#: src/olympusmn.cpp:572 -#, fuzzy -msgid "4500K (Neutral white fluorescent)" -msgstr "Fluorescente" - -#: src/olympusmn.cpp:573 -#, fuzzy -msgid "4000K (Cool white fluorescent)" -msgstr "Blanco frío fluorescente" - -#: src/olympusmn.cpp:575 -#, fuzzy -msgid "Custom WB 1" -msgstr "Proceso personalizado" - -#: src/olympusmn.cpp:576 -#, fuzzy -msgid "Custom WB 2" -msgstr "Proceso personalizado" - -#: src/olympusmn.cpp:577 -#, fuzzy -msgid "Custom WB 3" -msgstr "Proceso personalizado" - -#: src/olympusmn.cpp:578 -#, fuzzy -msgid "Custom WB 4" -msgstr "Proceso personalizado" - -#: src/olympusmn.cpp:579 -#, fuzzy -msgid "Custom WB 5400K" -msgstr "Proceso personalizado" - -#: src/olympusmn.cpp:580 -#, fuzzy -msgid "Custom WB 2900K" -msgstr "Proceso personalizado" - -#: src/olympusmn.cpp:581 -#, fuzzy -msgid "Custom WB 8000K" -msgstr "Proceso personalizado" - -#: src/olympusmn.cpp:587 -#, fuzzy -msgid "CM1 (Red Enhance)" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:588 -#, fuzzy -msgid "CM2 (Green Enhance)" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:589 -#, fuzzy -msgid "CM3 (Blue Enhance)" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:590 -msgid "CM4 (Skin Tones)" -msgstr "" - -#: src/olympusmn.cpp:597 src/olympusmn.cpp:776 src/olympusmn.cpp:841 -msgid "Pro Photo RGB" -msgstr "" - -#: src/olympusmn.cpp:603 src/olympusmn.cpp:697 -#, fuzzy -msgid "Noise Filter" -msgstr "Orden de llenado" - -#: src/olympusmn.cpp:604 -#, fuzzy -msgid "Noise Filter (ISO Boost)" -msgstr "Orden de llenado" - -#: src/olympusmn.cpp:612 src/olympusmn.cpp:854 -#, fuzzy -msgid "Muted" -msgstr "No definido" - -#: src/olympusmn.cpp:614 src/olympusmn.cpp:855 -#, fuzzy -msgid "Monotone" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:640 -msgid "SQ" -msgstr "" - -#: src/olympusmn.cpp:641 -msgid "HQ" -msgstr "" - -#: src/olympusmn.cpp:642 -msgid "SHQ" -msgstr "" - -#: src/olympusmn.cpp:649 src/panasonicmn.cpp:86 -#, fuzzy -msgid "On, Mode 1" -msgstr "Tipo de escena" - -#: src/olympusmn.cpp:650 src/panasonicmn.cpp:88 -#, fuzzy -msgid "On, Mode 2" -msgstr "Tipo de escena" - -#: src/olympusmn.cpp:651 -#, fuzzy -msgid "On, Mode 3" -msgstr "Tipo de escena" - -#: src/olympusmn.cpp:655 -#, fuzzy -msgid "Camera Settings Version" -msgstr "Contraste" - -#: src/olympusmn.cpp:655 -#, fuzzy -msgid "Camera settings version" -msgstr "Contraste" - -#: src/olympusmn.cpp:656 -#, fuzzy -msgid "PreviewImage Valid" -msgstr "Orientación" - -#: src/olympusmn.cpp:656 -#, fuzzy -msgid "Preview image valid" -msgstr "Orientación" - -#: src/olympusmn.cpp:657 -#, fuzzy -msgid "PreviewImage Start" -msgstr "Orientación" - -#: src/olympusmn.cpp:657 -#, fuzzy -msgid "Preview image start" -msgstr "Orientación" - -#: src/olympusmn.cpp:658 -#, fuzzy -msgid "PreviewImage Length" -msgstr "Longitud de la imagen" - -#: src/olympusmn.cpp:658 -#, fuzzy -msgid "Preview image length" -msgstr "Orientación" - -#: src/olympusmn.cpp:660 -#, fuzzy -msgid "Auto exposure lock" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:662 -#, fuzzy -msgid "Exposure Shift" -msgstr "Tiempo de exposición" - -#: src/olympusmn.cpp:662 -#, fuzzy -msgid "Exposure shift" -msgstr "Tiempo de exposición" - -#: src/olympusmn.cpp:665 -#, fuzzy -msgid "Focus Process" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:665 -#, fuzzy -msgid "Focus process" -msgstr "Proceso personalizado" - -#: src/olympusmn.cpp:666 -msgid "AF Search" -msgstr "" - -#: src/olympusmn.cpp:666 -#, fuzzy -msgid "AF search" -msgstr "Punto blanco" - -#: src/olympusmn.cpp:667 -#, fuzzy -msgid "AF Areas" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:667 -#, fuzzy -msgid "AF areas" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:668 -#, fuzzy -msgid "AFPointSelected" -msgstr "Autofocus punto seleccionado" - -#: src/olympusmn.cpp:669 -#, fuzzy -msgid "AF Fine Tune Adjust" -msgstr "Punto blanco" - -#: src/olympusmn.cpp:669 -#, fuzzy -msgid "AF fine tune adjust" -msgstr "Punto blanco" - -#: src/olympusmn.cpp:672 -#, fuzzy -msgid "Flash Remote Control" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:672 -#, fuzzy -msgid "Flash remote control" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:673 -#, fuzzy -msgid "Flash Control Mode" -msgstr "El flash disparó, modo automático." - -#: src/olympusmn.cpp:673 -#, fuzzy -msgid "Flash control mode" -msgstr "El flash disparó, modo automático." - -#: src/olympusmn.cpp:674 -#, fuzzy -msgid "Flash Intensity" -msgstr "Actividad del Flash" - -#: src/olympusmn.cpp:674 -#, fuzzy -msgid "Flash intensity" -msgstr "Actividad del Flash" - -#: src/olympusmn.cpp:675 -#, fuzzy -msgid "Manual Flash Strength" -msgstr "Contraste" - -#: src/olympusmn.cpp:675 -#, fuzzy -msgid "Manual flash strength" -msgstr "Exposición manual" - -#: src/olympusmn.cpp:676 src/sonymn.cpp:429 -#, fuzzy -msgid "White Balance 2" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:676 src/sonymn.cpp:430 -#, fuzzy -msgid "White balance 2" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:677 -#, fuzzy -msgid "White Balance Temperature" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:677 -#, fuzzy -msgid "White balance temperature" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:679 -#, fuzzy -msgid "Custom Saturation" -msgstr "Saturación" - -#: src/olympusmn.cpp:679 -#, fuzzy -msgid "Custom saturation" -msgstr "Saturación" - -#: src/olympusmn.cpp:680 -#, fuzzy -msgid "Modified Saturation" -msgstr "Saturación" - -#: src/olympusmn.cpp:680 -#, fuzzy -msgid "Modified saturation" -msgstr "Saturación" - -#: src/olympusmn.cpp:681 src/olympusmn.cpp:1080 -#, fuzzy -msgid "Contrast Setting" -msgstr "Contraste" - -#: src/olympusmn.cpp:682 src/olympusmn.cpp:1081 -#, fuzzy -msgid "Sharpness Setting" -msgstr "Nitidez" - -#: src/olympusmn.cpp:686 src/olympusmn.cpp:975 -#, fuzzy -msgid "Distortion Correction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/olympusmn.cpp:686 src/olympusmn.cpp:975 -#, fuzzy -msgid "Distortion correction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/olympusmn.cpp:687 src/olympusmn.cpp:976 -#, fuzzy -msgid "Shading Compensation" -msgstr "Tiempo de exposición" - -#: src/olympusmn.cpp:687 src/olympusmn.cpp:976 -#, fuzzy -msgid "Shading compensation" -msgstr "Tiempo de exposición" - -#: src/olympusmn.cpp:688 -#, fuzzy -msgid "Compression Factor" -msgstr "Compresión" - -#: src/olympusmn.cpp:688 -#, fuzzy -msgid "Compression factor" -msgstr "Compresión" - -#: src/olympusmn.cpp:689 src/olympusmn.cpp:897 -#, fuzzy -msgid "Gradation" -msgstr "Saturación" - -#: src/olympusmn.cpp:690 src/olympusmn.cpp:891 src/pentaxmn.cpp:988 -#: src/pentaxmn.cpp:989 -#, fuzzy -msgid "Picture mode" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:691 -#, fuzzy -msgid "Picture Mode Saturation" -msgstr "Saturación" - -#: src/olympusmn.cpp:691 src/olympusmn.cpp:892 -#, fuzzy -msgid "Picture mode saturation" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:692 -#, fuzzy -msgid "Picture Mode Hue" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:692 -#, fuzzy -msgid "Picture mode hue" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:693 -#, fuzzy -msgid "Picture Mode Contrast" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:693 src/olympusmn.cpp:893 -#, fuzzy -msgid "Picture mode contrast" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:694 -#, fuzzy -msgid "Picture Mode Sharpness" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:694 src/olympusmn.cpp:894 -#, fuzzy -msgid "Picture mode sharpness" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:695 -#, fuzzy -msgid "Picture Mode BW Filter" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:695 -#, fuzzy -msgid "Picture mode BW filter" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:696 -#, fuzzy -msgid "Picture Mode Tone" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:696 -#, fuzzy -msgid "Picture mode tone" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:697 -#, fuzzy -msgid "Noise filter" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:698 -#, fuzzy -msgid "Art Filter" -msgstr "Orden de llenado" - -#: src/olympusmn.cpp:698 -#, fuzzy -msgid "Art filter" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:699 -#, fuzzy -msgid "Magic Filter" -msgstr "Relación de zoom digital" - -#: src/olympusmn.cpp:699 -#, fuzzy -msgid "Magic filter" -msgstr "Relación de zoom digital" - -#: src/olympusmn.cpp:701 -#, fuzzy -msgid "Panorama Mode" -msgstr "normal" - -#: src/olympusmn.cpp:701 -#, fuzzy -msgid "Panorama mode" -msgstr "normal" - -#: src/olympusmn.cpp:702 -#, fuzzy -msgid "Image Quality 2" -msgstr "Ancho de la imagen" - -#: src/olympusmn.cpp:702 -#, fuzzy -msgid "Image quality 2" -msgstr "Ancho de la imagen" - -#: src/olympusmn.cpp:704 -#, fuzzy -msgid "Manometer Pressure" -msgstr "Descomprimido" - -#: src/olympusmn.cpp:704 -#, fuzzy -msgid "Manometer pressure" -msgstr "Descomprimido" - -#: src/olympusmn.cpp:705 -#, fuzzy -msgid "Manometer Reading" -msgstr "Descomprimido" - -#: src/olympusmn.cpp:705 -#, fuzzy -msgid "Manometer reading" -msgstr "Descomprimido" - -#: src/olympusmn.cpp:706 -#, fuzzy -msgid "Extended WB Detect" -msgstr "Tipo de escena" - -#: src/olympusmn.cpp:706 -#, fuzzy -msgid "Extended WB detect" -msgstr "Tipo de escena" - -#: src/olympusmn.cpp:707 -msgid "Level Gauge Roll" -msgstr "" - -#: src/olympusmn.cpp:707 -msgid "Level gauge roll" -msgstr "" - -#: src/olympusmn.cpp:708 -msgid "Level Gauge Pitch" -msgstr "" - -#: src/olympusmn.cpp:708 -msgid "Level gauge pitch" -msgstr "" - -#: src/olympusmn.cpp:710 -#, fuzzy -msgid "Unknown OlympusCs tag" -msgstr "Versión Exif" - -#: src/olympusmn.cpp:721 -msgid "Simple E-System" -msgstr "" - -#: src/olympusmn.cpp:722 -msgid "E-System" -msgstr "" - -#: src/olympusmn.cpp:739 -#, fuzzy -msgid "Equipment Version" -msgstr "Versión Exif" - -#: src/olympusmn.cpp:739 -#, fuzzy -msgid "Equipment version" -msgstr "Versión Exif" - -#: src/olympusmn.cpp:741 -#, fuzzy -msgid "Serial number" -msgstr "El número F." - -#: src/olympusmn.cpp:746 src/panasonicmn.cpp:277 src/tags.cpp:1854 -#, fuzzy -msgid "Lens Serial Number" -msgstr "El número F." - -#: src/olympusmn.cpp:746 src/panasonicmn.cpp:277 -#, fuzzy -msgid "Lens serial number" -msgstr "El número F." - -#: src/olympusmn.cpp:747 src/properties.cpp:388 src/tags.cpp:1850 -#, fuzzy -msgid "Lens Model" -msgstr "Tipo de escena" - -#: src/olympusmn.cpp:747 -#, fuzzy -msgid "Lens model" -msgstr "Tipo de escena" - -#: src/olympusmn.cpp:748 -#, fuzzy -msgid "Lens Firmware Version" -msgstr "Versión Exif" - -#: src/olympusmn.cpp:748 -#, fuzzy -msgid "Lens firmware version" -msgstr "Versión Exif" - -#: src/olympusmn.cpp:753 -#, fuzzy -msgid "Max Aperture At Current Focal" -msgstr "apertura" - -#: src/olympusmn.cpp:753 -#, fuzzy -msgid "Max aperture at current focal" -msgstr "apertura" - -#: src/olympusmn.cpp:754 -#, fuzzy -msgid "Lens Properties" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:754 -#, fuzzy -msgid "Lens properties" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:755 -#, fuzzy -msgid "Extender" -msgstr "Tipo de escena" - -#: src/olympusmn.cpp:756 -#, fuzzy -msgid "Extender Serial Number" -msgstr "El número F." - -#: src/olympusmn.cpp:756 -#, fuzzy -msgid "Extender serial number" -msgstr "El número F." - -#: src/olympusmn.cpp:757 -#, fuzzy -msgid "Extender Model" -msgstr "Tipo de escena" - -#: src/olympusmn.cpp:757 -#, fuzzy -msgid "Extender model" -msgstr "Tipo de escena" - -#: src/olympusmn.cpp:758 -#, fuzzy -msgid "Extender Firmware Version" -msgstr "Versión Exif" - -#: src/olympusmn.cpp:758 -#, fuzzy -msgid "Extender firmwareversion" -msgstr "Versión Exif" - -#: src/olympusmn.cpp:760 src/properties.cpp:384 -#, fuzzy -msgid "Flash Model" -msgstr "Flash" - -#: src/olympusmn.cpp:760 -#, fuzzy -msgid "Flash model" -msgstr "Flash" - -#: src/olympusmn.cpp:761 -#, fuzzy -msgid "Flash Firmware Version" -msgstr "Versión Exif" - -#: src/olympusmn.cpp:761 -#, fuzzy -msgid "Flash firmware version" -msgstr "Versión Exif" - -#: src/olympusmn.cpp:762 -#, fuzzy -msgid "FlashSerialNumber" -msgstr "El número F." - -#: src/olympusmn.cpp:764 -#, fuzzy -msgid "Unknown OlympusEq tag" -msgstr "Versión Exif" - -#: src/olympusmn.cpp:781 src/olympusmn.cpp:846 -#, fuzzy -msgid "High Speed" -msgstr "Escena nocturna" - -#: src/olympusmn.cpp:782 src/olympusmn.cpp:803 src/olympusmn.cpp:847 -#, fuzzy -msgid "High Function" -msgstr "Saturación" - -#: src/olympusmn.cpp:783 -#, fuzzy -msgid "Advanced High Speed" -msgstr "Escena nocturna" - -#: src/olympusmn.cpp:784 -#, fuzzy -msgid "Advanced High Function" -msgstr "Función de transferencia" - -#: src/olympusmn.cpp:789 -#, fuzzy -msgid "Original" -msgstr "Fecha y Hora (original)" - -#: src/olympusmn.cpp:790 -#, fuzzy -msgid "Edited (Landscape)" -msgstr "Paisaje" - -#: src/olympusmn.cpp:791 src/olympusmn.cpp:792 -#, fuzzy -msgid "Edited (Portrait)" -msgstr "Retrato" - -#: src/olympusmn.cpp:797 -#, fuzzy -msgid "WB Color Temp" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:798 -#, fuzzy -msgid "WB Gray Point" -msgstr "Punto blanco" - -#: src/olympusmn.cpp:808 -#, fuzzy -msgid "Raw Development Version" -msgstr "Orientación" - -#: src/olympusmn.cpp:808 -#, fuzzy -msgid "Raw development version" -msgstr "Orientación" - -#: src/olympusmn.cpp:809 src/olympusmn.cpp:879 src/properties.cpp:558 -#: src/tags.cpp:822 -#, fuzzy -msgid "Exposure Bias Value" -msgstr "Ajuste de exposición" - -#: src/olympusmn.cpp:809 src/olympusmn.cpp:879 -#, fuzzy -msgid "Exposure bias value" -msgstr "Ajuste de exposición" - -#: src/olympusmn.cpp:810 src/olympusmn.cpp:881 -#, fuzzy -msgid "White Balance Value" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:810 src/olympusmn.cpp:881 -#, fuzzy -msgid "White balance value" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:811 src/olympusmn.cpp:882 -#, fuzzy -msgid "WB Fine Adjustment" -msgstr "Longitud de la imagen" - -#: src/olympusmn.cpp:811 -#, fuzzy -msgid "WB fine adjustment" -msgstr "Longitud de la imagen" - -#: src/olympusmn.cpp:812 src/olympusmn.cpp:834 src/olympusmn.cpp:883 -#, fuzzy -msgid "Gray Point" -msgstr "Punto blanco" - -#: src/olympusmn.cpp:812 src/olympusmn.cpp:883 -#, fuzzy -msgid "Gray point" -msgstr "Punto blanco" - -#: src/olympusmn.cpp:813 src/olympusmn.cpp:886 -#, fuzzy -msgid "Saturation Emphasis" -msgstr "Alta saturación" - -#: src/olympusmn.cpp:813 src/olympusmn.cpp:886 -#, fuzzy -msgid "Saturation emphasis" -msgstr "Alta saturación" - -#: src/olympusmn.cpp:814 src/olympusmn.cpp:887 -#, fuzzy -msgid "Memory Color Emphasis" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:814 src/olympusmn.cpp:887 -#, fuzzy -msgid "Memory color emphasis" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:815 src/olympusmn.cpp:884 -#, fuzzy -msgid "Contrast Value" -msgstr "Contraste" - -#: src/olympusmn.cpp:815 src/olympusmn.cpp:884 -#, fuzzy -msgid "Contrast value" -msgstr "Contraste" - -#: src/olympusmn.cpp:816 src/olympusmn.cpp:885 -#, fuzzy -msgid "Sharpness Value" -msgstr "Nitidez" - -#: src/olympusmn.cpp:816 src/olympusmn.cpp:885 -#, fuzzy -msgid "Sharpness value" -msgstr "Nitidez" - -#: src/olympusmn.cpp:818 src/olympusmn.cpp:890 -#, fuzzy -msgid "Engine" -msgstr "Centímetro" - -#: src/olympusmn.cpp:820 -#, fuzzy -msgid "Edit status" -msgstr "Vista distante" - -#: src/olympusmn.cpp:821 -#, fuzzy -msgid "Settings" -msgstr "Velocidad ISO" - -#: src/olympusmn.cpp:823 -#, fuzzy -msgid "Unknown OlympusRd tag" -msgstr "Versión Exif" - -#: src/olympusmn.cpp:878 -#, fuzzy -msgid "Raw Development 2 Version" -msgstr "Orientación" - -#: src/olympusmn.cpp:878 -#, fuzzy -msgid "Raw development 2 version" -msgstr "Orientación" - -#: src/olympusmn.cpp:882 -#, fuzzy -msgid "White balance fine adjustment" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:892 -#, fuzzy -msgid "PM Saturation" -msgstr "Saturación" - -#: src/olympusmn.cpp:893 -#, fuzzy -msgid "PM Contrast" -msgstr "Contraste" - -#: src/olympusmn.cpp:894 -#, fuzzy -msgid "PM Sharpness" -msgstr "Nitidez" - -#: src/olympusmn.cpp:895 -#, fuzzy -msgid "PM BW Filter" -msgstr "Orden de llenado" - -#: src/olympusmn.cpp:895 -#, fuzzy -msgid "PM BW filter" -msgstr "Orden de llenado" - -#: src/olympusmn.cpp:896 -#, fuzzy -msgid "PM Picture Tone" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:896 -#, fuzzy -msgid "PM picture tone" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:899 -#, fuzzy -msgid "Auto Gradation" -msgstr "Baja saturación" - -#: src/olympusmn.cpp:899 -#, fuzzy -msgid "Auto gradation" -msgstr "Baja saturación" - -#: src/olympusmn.cpp:900 -#, fuzzy -msgid "PM Noise Filter" -msgstr "Orden de llenado" - -#: src/olympusmn.cpp:900 -#, fuzzy -msgid "Picture mode noise filter" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:902 -#, fuzzy -msgid "Unknown OlympusRd2 tag" -msgstr "Versión Exif" - -#: src/olympusmn.cpp:913 -msgid "On (2 frames)" -msgstr "" - -#: src/olympusmn.cpp:914 -msgid "On (3 frames)" -msgstr "" - -#: src/olympusmn.cpp:919 -msgid "4:3" -msgstr "" - -#: src/olympusmn.cpp:920 -#, fuzzy -msgid "3:2" -msgstr "D75" - -#: src/olympusmn.cpp:921 -msgid "16:9" -msgstr "" - -#: src/olympusmn.cpp:922 -msgid "6:6" -msgstr "" - -#: src/olympusmn.cpp:923 -msgid "5:4" -msgstr "" - -#: src/olympusmn.cpp:924 -msgid "7:6" -msgstr "" - -#: src/olympusmn.cpp:925 -#, fuzzy -msgid "6:5" -msgstr "D65" - -#: src/olympusmn.cpp:926 -#, fuzzy -msgid "7:5" -msgstr "D75" - -#: src/olympusmn.cpp:927 -msgid "3:4" -msgstr "" - -#: src/olympusmn.cpp:931 -#, fuzzy -msgid "Image Processing Version" -msgstr "Longitud de la imagen" - -#: src/olympusmn.cpp:931 -#, fuzzy -msgid "Image processing version" -msgstr "Configuración planar" - -#: src/olympusmn.cpp:933 -#, fuzzy -msgid "WB RB Levels 3000K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:933 -#, fuzzy -msgid "WB RB levels 3000K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:934 -#, fuzzy -msgid "WB RB Levels 3300K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:934 -#, fuzzy -msgid "WB RB levels 3300K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:935 -#, fuzzy -msgid "WB RB Levels 3600K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:935 -#, fuzzy -msgid "WB RB levels 3600K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:936 -#, fuzzy -msgid "WB RB Levels 3900K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:936 -#, fuzzy -msgid "WB RB levels 3900K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:937 -#, fuzzy -msgid "WB RB Levels 4000K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:937 -#, fuzzy -msgid "WB RB levels 4000K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:938 -#, fuzzy -msgid "WB RB Levels 4300K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:938 -#, fuzzy -msgid "WB RB levels 4300K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:939 -#, fuzzy -msgid "WB RB Levels 4500K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:939 -#, fuzzy -msgid "WB RB levels 4500K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:940 -#, fuzzy -msgid "WB RB Levels 4800K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:940 -#, fuzzy -msgid "WB RB levels 4800K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:941 -#, fuzzy -msgid "WB RB Levels 5300K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:941 -#, fuzzy -msgid "WB RB levels 5300K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:942 -#, fuzzy -msgid "WB RB Levels 6000K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:942 -#, fuzzy -msgid "WB RB levels 6000K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:943 -#, fuzzy -msgid "WB RB Levels 6600K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:943 -#, fuzzy -msgid "WB RB levels 6600K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:944 -#, fuzzy -msgid "WB RB Levels 7500K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:944 -#, fuzzy -msgid "WB RB levels 7500K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:945 -#, fuzzy -msgid "WB RB Levels CWB1" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:945 -#, fuzzy -msgid "WB RB levels CWB1" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:946 -#, fuzzy -msgid "WB RB Levels CWB2" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:946 -#, fuzzy -msgid "WB RB levels CWB2" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:947 -#, fuzzy -msgid "WB RB Levels CWB3" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:947 -#, fuzzy -msgid "WB RB levels CWB3" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:948 -#, fuzzy -msgid "WB RB Levels CWB4" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:948 -#, fuzzy -msgid "WB RB levels CWB4" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:949 -#, fuzzy -msgid "WB G Level 3000K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:949 -#, fuzzy -msgid "WB G level 3000K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:950 -#, fuzzy -msgid "WB G Level 3300K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:950 -#, fuzzy -msgid "WB G level 3300K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:951 -#, fuzzy -msgid "WB G Level 3600K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:951 -#, fuzzy -msgid "WB G level 3600K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:952 -#, fuzzy -msgid "WB G Level 3900K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:952 -#, fuzzy -msgid "WB G level 3900K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:953 -#, fuzzy -msgid "WB G Level 4000K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:953 -#, fuzzy -msgid "WB G level 4000K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:954 -#, fuzzy -msgid "WB G Level 4300K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:954 -#, fuzzy -msgid "WB G level 4300K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:955 -#, fuzzy -msgid "WB G Level 4500K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:955 -#, fuzzy -msgid "WB G level 4500K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:956 -#, fuzzy -msgid "WB G Level 4800K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:956 -#, fuzzy -msgid "WB G level 4800K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:957 -#, fuzzy -msgid "WB G Level 5300K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:957 -#, fuzzy -msgid "WB G level 5300K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:958 -#, fuzzy -msgid "WB G Level 6000K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:958 -#, fuzzy -msgid "WB G level 6000K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:959 -#, fuzzy -msgid "WB G Level 6600K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:959 -#, fuzzy -msgid "WB G level 6600K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:960 -#, fuzzy -msgid "WB G Level 7500K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:960 -#, fuzzy -msgid "WB G level 7500K" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:961 -#, fuzzy -msgid "WB G Level" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:961 -#, fuzzy -msgid "WB G level" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:963 -#, fuzzy -msgid "Enhancer" -msgstr "Centímetro" - -#: src/olympusmn.cpp:964 -#, fuzzy -msgid "Enhancer Values" -msgstr "Centímetro" - -#: src/olympusmn.cpp:964 -#, fuzzy -msgid "Enhancer values" -msgstr "Centímetro" - -#: src/olympusmn.cpp:965 src/olympusmn.cpp:1067 -#, fuzzy -msgid "Coring Filter" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:966 src/olympusmn.cpp:1068 -#, fuzzy -msgid "Coring Values" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:966 src/olympusmn.cpp:1068 -#, fuzzy -msgid "Coring values" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:967 src/tags.cpp:908 -#, fuzzy -msgid "Black Level" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:968 -msgid "Gain Base" -msgstr "" - -#: src/olympusmn.cpp:968 -msgid "Gain base" -msgstr "" - -#: src/olympusmn.cpp:969 -msgid "Valid Bits" -msgstr "" - -#: src/olympusmn.cpp:970 src/olympusmn.cpp:1072 src/properties.cpp:445 -#, fuzzy -msgid "Crop Left" -msgstr "arriba - izquierda" - -#: src/olympusmn.cpp:970 src/olympusmn.cpp:1072 -#, fuzzy -msgid "Crop left" -msgstr "arriba - izquierda" - -#: src/olympusmn.cpp:971 src/olympusmn.cpp:1073 src/properties.cpp:444 -#, fuzzy -msgid "Crop Top" -msgstr "izquierda - abajo" - -#: src/olympusmn.cpp:971 src/olympusmn.cpp:1073 -#, fuzzy -msgid "Crop top" -msgstr "izquierda - abajo" - -#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 src/properties.cpp:449 -#, fuzzy -msgid "Crop Width" -msgstr "Copyright" - -#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 -#, fuzzy -msgid "Crop width" -msgstr "Copyright" - -#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 src/properties.cpp:450 -#, fuzzy -msgid "Crop Height" -msgstr "Copyright" - -#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 -#, fuzzy -msgid "Crop height" -msgstr "Copyright" - -#: src/olympusmn.cpp:977 -#, fuzzy -msgid "Multiple Exposure Mode" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:977 -#, fuzzy -msgid "Multiple exposure mode" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:978 src/sonymn.cpp:644 src/sonymn.cpp:645 -msgid "Aspect Ratio" -msgstr "Ratio de aspecto" - -#: src/olympusmn.cpp:978 -#, fuzzy -msgid "Aspect ratio" -msgstr "Ratio de aspecto" - -#: src/olympusmn.cpp:979 -#, fuzzy -msgid "Aspect Frame" -msgstr "Ratio de aspecto" - -#: src/olympusmn.cpp:979 -#, fuzzy -msgid "Aspect frame" -msgstr "Ratio de aspecto" - -#: src/olympusmn.cpp:980 -#, fuzzy -msgid "Face Detect" -msgstr "Fuente de archivo" - -#: src/olympusmn.cpp:980 src/olympusmn.cpp:1373 src/olympusmn.cpp:1385 -#, fuzzy -msgid "Face detect" -msgstr "Fuente de archivo" - -#: src/olympusmn.cpp:981 -#, fuzzy -msgid "Face Detect Area" -msgstr "Fuente de archivo" - -#: src/olympusmn.cpp:981 -#, fuzzy -msgid "Face detect area" -msgstr "Fuente de archivo" - -#: src/olympusmn.cpp:983 -#, fuzzy -msgid "Unknown OlympusIp tag" -msgstr "Versión Exif" - -#: src/olympusmn.cpp:993 -msgid "Bounce or Off" -msgstr "" - -#: src/olympusmn.cpp:994 -msgid "Direct" -msgstr "" - -#: src/olympusmn.cpp:998 -#, fuzzy -msgid "Focus Info Version" -msgstr "Posicionamiento YCbCr" - -#: src/olympusmn.cpp:998 -#, fuzzy -msgid "Focus info version" -msgstr "Posicionamiento YCbCr" - -#: src/olympusmn.cpp:999 -#, fuzzy -msgid "Auto Focus" -msgstr "Exposición automática" - -#: src/olympusmn.cpp:1000 -#, fuzzy -msgid "Scene Detect" -msgstr "Tipo de escena" - -#: src/olympusmn.cpp:1000 -#, fuzzy -msgid "Scene detect" -msgstr "Tipo de escena" - -#: src/olympusmn.cpp:1001 -#, fuzzy -msgid "Scene Area" -msgstr "centrado" - -#: src/olympusmn.cpp:1001 -#, fuzzy -msgid "Scene area" -msgstr "Nombre del documento" - -#: src/olympusmn.cpp:1002 -#, fuzzy -msgid "Scene Detect Data" -msgstr "Tipo de escena" - -#: src/olympusmn.cpp:1002 -#, fuzzy -msgid "Scene detect data" -msgstr "Tipo de escena" - -#: src/olympusmn.cpp:1003 -#, fuzzy -msgid "Zoom Step Count" -msgstr "obturador" - -#: src/olympusmn.cpp:1004 -#, fuzzy -msgid "Focus Step Count" -msgstr "Exposición automática" - -#: src/olympusmn.cpp:1004 -#, fuzzy -msgid "Focus step count" -msgstr "Posicionamiento YCbCr" - -#: src/olympusmn.cpp:1005 -#, fuzzy -msgid "Focus Step Infinity" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:1005 -#, fuzzy -msgid "Focus step infinity" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:1006 -#, fuzzy -msgid "Focus Step Near" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:1006 -#, fuzzy -msgid "Focus step near" -msgstr "Balance de blanco manual" - -#: src/olympusmn.cpp:1009 -#, fuzzy -msgid "External Flash" -msgstr "Retrato" - -#: src/olympusmn.cpp:1010 -#, fuzzy -msgid "External Flash Guide Number" -msgstr "Flash" - -#: src/olympusmn.cpp:1010 -#, fuzzy -msgid "External flash guide number" -msgstr "Retrato" - -#: src/olympusmn.cpp:1014 -#, fuzzy -msgid "Manual Flash" -msgstr "Exposición manual" - -#: src/olympusmn.cpp:1014 -#, fuzzy -msgid "Manual flash" -msgstr "Exposición manual" - -#: src/olympusmn.cpp:1018 -#, fuzzy -msgid "Unknown OlympusFi tag" -msgstr "Versión Exif" - -#: src/olympusmn.cpp:1029 -#, fuzzy -msgid "Unknown OlympusFe tag" -msgstr "Versión Exif" - -#: src/olympusmn.cpp:1042 -#, fuzzy -msgid "Fine Weather" -msgstr "Tiempo bueno" - -#: src/olympusmn.cpp:1043 -#, fuzzy -msgid "Tungsten (incandescent)" -msgstr "Tungsteno (luz incandescente)" - -#: src/olympusmn.cpp:1044 -msgid "Evening Sunlight" -msgstr "" - -#: src/olympusmn.cpp:1045 -#, fuzzy -msgid "Daylight Fluorescent (D 5700 - 7100K)" -msgstr "Luz de día fluorescente" - -#: src/olympusmn.cpp:1046 -#, fuzzy -msgid "Day White Fluorescent (N 4600 - 5400K)" -msgstr "Día blanco fluorescente" - -#: src/olympusmn.cpp:1047 -#, fuzzy -msgid "Cool White Fluorescent (W 3900 - 4500K)" -msgstr "Blanco frío fluorescente" - -#: src/olympusmn.cpp:1048 -#, fuzzy -msgid "White Fluorescent (WW 3200 - 3700K)" -msgstr "Blanco fluorescente" - -#: src/olympusmn.cpp:1049 -#, fuzzy -msgid "One Touch White Balance" -msgstr "Balance de blanco automático" - -#: src/olympusmn.cpp:1050 -#, fuzzy -msgid "Custom 1-4" -msgstr "Proceso personalizado" - -#: src/olympusmn.cpp:1054 -#, fuzzy -msgid "Raw Info Version" -msgstr "Posicionamiento YCbCr" - -#: src/olympusmn.cpp:1054 -#, fuzzy -msgid "Raw info version" -msgstr "Orientación" - -#: src/olympusmn.cpp:1055 -#, fuzzy -msgid "WB_RB Levels Used" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:1055 -#, fuzzy -msgid "WB_RB levels used" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:1056 -#, fuzzy -msgid "WB_RB Levels Auto" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:1056 -#, fuzzy -msgid "WB_RB levels auto" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:1057 -#, fuzzy -msgid "WB_RB Levels Shade" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:1057 -#, fuzzy -msgid "WB_RB levels shade" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:1058 -#, fuzzy -msgid "WB_RB Levels Cloudy" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:1058 -#, fuzzy -msgid "WB_RB levels cloudy" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:1059 -#, fuzzy -msgid "WB_RB Levels Fine Weather" -msgstr "Fluorescente" - -#: src/olympusmn.cpp:1059 -#, fuzzy -msgid "WB_RB levels fine weather" -msgstr "Fluorescente" - -#: src/olympusmn.cpp:1060 -#, fuzzy -msgid "WB_RB Levels Tungsten" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:1060 -#, fuzzy -msgid "WB_RB levels tungsten" -msgstr "Fluorescente" - -#: src/olympusmn.cpp:1061 -#, fuzzy -msgid "WB_RB Levels Evening Sunlight" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:1061 -#, fuzzy -msgid "WB_RB levels evening sunlight" -msgstr "Fluorescente" - -#: src/olympusmn.cpp:1062 -#, fuzzy -msgid "WB_RB Levels Daylight Fluor" -msgstr "Fluorescente" - -#: src/olympusmn.cpp:1062 -#, fuzzy -msgid "WB_RB levels daylight fluor" -msgstr "Fluorescente" - -#: src/olympusmn.cpp:1063 -#, fuzzy -msgid "WB_RB Levels Day White Fluor" -msgstr "Fluorescente" - -#: src/olympusmn.cpp:1063 -#, fuzzy -msgid "WB_RB levels day white fluor" -msgstr "Fluorescente" - -#: src/olympusmn.cpp:1064 -#, fuzzy -msgid "WB_RB Levels Cool White Fluor" -msgstr "Fluorescente" - -#: src/olympusmn.cpp:1064 -#, fuzzy -msgid "WB_RB levels cool white fluor" -msgstr "Fluorescente" - -#: src/olympusmn.cpp:1065 -#, fuzzy -msgid "WB_RB Levels White Fluorescent" -msgstr "Fluorescente" - -#: src/olympusmn.cpp:1065 -#, fuzzy -msgid "WB_RB levels white fluorescent" -msgstr "Fluorescente" - -#: src/olympusmn.cpp:1066 -#, fuzzy -msgid "Color Matrix2" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:1066 -#, fuzzy -msgid "Color matrix 2" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:1069 -#, fuzzy -msgid "Black Level 2" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:1069 -#, fuzzy -msgid "Black level 2" -msgstr "Nivel de la batería" - -#: src/olympusmn.cpp:1070 src/properties.cpp:508 src/tags.cpp:699 -msgid "YCbCr Coefficients" -msgstr "Coeficientes YCbCr" - -#: src/olympusmn.cpp:1070 -#, fuzzy -msgid "YCbCr coefficients" -msgstr "Coeficientes YCbCr" - -#: src/olympusmn.cpp:1071 -msgid "Valid Pixel Depth" -msgstr "" - -#: src/olympusmn.cpp:1071 -msgid "Valid pixel depth" -msgstr "" - -#: src/olympusmn.cpp:1077 -#, fuzzy -msgid "White Balance Comp" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:1077 -#, fuzzy -msgid "White balance comp" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:1078 -#, fuzzy -msgid "Saturation Setting" -msgstr "Alta saturación" - -#: src/olympusmn.cpp:1079 -#, fuzzy -msgid "Hue Setting" -msgstr "Contraste" - -#: src/olympusmn.cpp:1079 -#, fuzzy -msgid "Hue setting" -msgstr "Velocidad ISO" - -#: src/olympusmn.cpp:1082 -#, fuzzy -msgid "CM Exposure Compensation" -msgstr "Tiempo de exposición" - -#: src/olympusmn.cpp:1082 -#, fuzzy -msgid "CM exposure compensation" -msgstr "Tiempo de exposición" - -#: src/olympusmn.cpp:1083 -#, fuzzy -msgid "CM White Balance" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:1083 -#, fuzzy -msgid "CM white balance" -msgstr "Balance de blanco manual" - -#: src/olympusmn.cpp:1084 -#, fuzzy -msgid "CM White Balance Comp" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:1084 -#, fuzzy -msgid "CM white balance comp" -msgstr "Balance de blanco manual" - -#: src/olympusmn.cpp:1085 -#, fuzzy -msgid "CM White Balance Gray Point" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:1085 -#, fuzzy -msgid "CM white balance gray point" -msgstr "Balance de blanco" - -#: src/olympusmn.cpp:1086 -#, fuzzy -msgid "CM Saturation" -msgstr "Saturación" - -#: src/olympusmn.cpp:1086 -#, fuzzy -msgid "CM saturation" -msgstr "Saturación" - -#: src/olympusmn.cpp:1087 -#, fuzzy -msgid "CM Hue" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:1087 -#, fuzzy -msgid "CM hue" -msgstr "Espacio de color" - -#: src/olympusmn.cpp:1088 -#, fuzzy -msgid "CM Contrast" -msgstr "Contraste" - -#: src/olympusmn.cpp:1088 -#, fuzzy -msgid "CM contrast" -msgstr "Contraste" - -#: src/olympusmn.cpp:1089 -#, fuzzy -msgid "CM Sharpness" -msgstr "Nitidez" - -#: src/olympusmn.cpp:1089 -#, fuzzy -msgid "CM sharpness" -msgstr "Nitidez" - -#: src/olympusmn.cpp:1091 -#, fuzzy -msgid "Unknown OlympusRi tag" -msgstr "Versión Exif" - -#: src/olympusmn.cpp:1114 src/pentaxmn.cpp:336 -#, fuzzy -msgid "User-Selected" -msgstr "Auto bracket" - -#: src/olympusmn.cpp:1115 -msgid "Auto-Override" -msgstr "" - -#: src/olympusmn.cpp:1151 -#, fuzzy -msgid "Fast" -msgstr "Flash" - -#: src/olympusmn.cpp:1208 -msgid "3000 Kelvin" -msgstr "" - -#: src/olympusmn.cpp:1209 -msgid "3700 Kelvin" -msgstr "" - -#: src/olympusmn.cpp:1210 -msgid "4000 Kelvin" -msgstr "" - -#: src/olympusmn.cpp:1211 -msgid "4500 Kelvin" -msgstr "" - -#: src/olympusmn.cpp:1212 -msgid "5500 Kelvin" -msgstr "" - -#: src/olympusmn.cpp:1213 -msgid "6500 Kelvin" -msgstr "" - -#: src/olympusmn.cpp:1214 -msgid "7500 Kelvin" -msgstr "" - -#: src/olympusmn.cpp:1220 -msgid "One-touch" -msgstr "" - -#: src/olympusmn.cpp:1241 -msgid "Olympus Zuiko Digital ED 50mm F2.0 Macro" -msgstr "" - -#: src/olympusmn.cpp:1242 -msgid "Olympus Zuiko Digital 40-150mm F3.5-4.5" -msgstr "" - -#: src/olympusmn.cpp:1243 src/olympusmn.cpp:1259 -msgid "Olympus Zuiko Digital ED 14-42mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1244 -msgid "Olympus Zuiko Digital ED 150mm F2.0" -msgstr "" - -#: src/olympusmn.cpp:1245 -msgid "Olympus Zuiko Digital 17mm F2.8 Pancake" -msgstr "" - -#: src/olympusmn.cpp:1246 -msgid "Olympus Zuiko Digital ED 300mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1247 -msgid "Olympus Zuiko Digital 14-54mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1248 -msgid "Olympus Zuiko Digital Pro ED 90-250mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1249 -msgid "Olympus Zuiko Digital ED 50-200mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1250 -msgid "Olympus Zuiko Digital ED 8mm F3.5 Fisheye" -msgstr "" - -#: src/olympusmn.cpp:1251 -msgid "Olympus Zuiko Digital 11-22mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1252 -msgid "Olympus Zuiko Digital 18-180mm F3.5-6.3" -msgstr "" - -#: src/olympusmn.cpp:1253 -msgid "Olympus Zuiko Digital 70-300mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1254 -msgid "Olympus Zuiko Digital ED 7-14mm F4.0" -msgstr "" - -#: src/olympusmn.cpp:1255 -msgid "Olympus Zuiko Digital Pro ED 35-100mm F2.0" -msgstr "" - -#: src/olympusmn.cpp:1256 -msgid "Olympus Zuiko Digital 14-45mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1257 -msgid "Olympus Zuiko Digital 35mm F3.5 Macro" -msgstr "" - -#: src/olympusmn.cpp:1258 -msgid "Olympus Zuiko Digital 17.5-45mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1260 -msgid "Olympus Zuiko Digital ED 40-150mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1261 -msgid "Olympus Zuiko Digital ED 50-200mm F2.8-3.5 SWD" -msgstr "" - -#: src/olympusmn.cpp:1262 -msgid "Olympus Zuiko Digital ED 12-60mm F2.8-4.0 SWD" -msgstr "" - -#: src/olympusmn.cpp:1263 -msgid "Olympus Zuiko Digital ED 14-35mm F2.0 SWD" -msgstr "" - -#: src/olympusmn.cpp:1264 -msgid "Olympus Zuiko Digital 25mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1265 -msgid "Olympus Zuiko Digital ED 9-18mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1266 -msgid "Olympus Zuiko Digital 14-54mm F2.8-3.5 II" -msgstr "" - -#: src/olympusmn.cpp:1267 -msgid "Sigma 18-50mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1268 -msgid "Sigma 55-200mm F4.0-5.6 DC" -msgstr "" - -#: src/olympusmn.cpp:1269 -msgid "Sigma 18-125mm F3.5-5.6 DC" -msgstr "" - -#: src/olympusmn.cpp:1270 -msgid "Sigma 18-125mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1271 -msgid "Sigma 30mm F1.4" -msgstr "" - -#: src/olympusmn.cpp:1272 src/olympusmn.cpp:1278 -msgid "Sigma 50-500mm F4.0-6.3 EX DG APO HSM RF" -msgstr "" - -#: src/olympusmn.cpp:1273 -msgid "Sigma 105mm F2.8 DG" -msgstr "" - -#: src/olympusmn.cpp:1274 -msgid "Sigma 150mm F2.8 DG HSM" -msgstr "" - -#: src/olympusmn.cpp:1275 -msgid "Sigma 24mm F1.8 EX DG Aspherical Macro" -msgstr "" - -#: src/olympusmn.cpp:1276 -msgid "Sigma 135-400mm F4.5-5.6 DG ASP APO RF" -msgstr "" - -#: src/olympusmn.cpp:1277 -msgid "Sigma 300-800mm F5.6 EX DG APO" -msgstr "" - -#: src/olympusmn.cpp:1279 -msgid "Sigma 10-20mm F4.0-5.6 EX DC HSM" -msgstr "" - -#: src/olympusmn.cpp:1280 src/olympusmn.cpp:1289 -msgid "Leica D Vario Elmarit 14-50mm F2.8-3.5 Asph." -msgstr "" - -#: src/olympusmn.cpp:1281 -msgid "Lumix G Vario 14-45mm F3.5-5.6 Asph. Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1282 src/olympusmn.cpp:1290 -msgid "Leica D Summilux 25mm F1.4 Asph." -msgstr "" - -#: src/olympusmn.cpp:1283 -msgid "Lumix G Vario 45-200mm F4-5.6 Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1284 -msgid "Leica D Vario Elmar 14-50mm F3.8-5.6 Asph." -msgstr "" - -#: src/olympusmn.cpp:1285 -msgid "Lumix G Vario HD 14-140mm F4-5.8 Asph. Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1286 -msgid "Leica D Vario Elmar 14-150mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1287 -msgid "Lumix G Vario 7-14mm F4 Asph." -msgstr "" - -#: src/olympusmn.cpp:1288 -msgid "Lumix G 20mm F1.7 Asph." -msgstr "" - -#: src/olympusmn.cpp:1338 -msgid "Olympus Zuiko Digital EC-14 1.4x Teleconverter" -msgstr "" - -#: src/olympusmn.cpp:1339 -msgid "Olympus EX-25 Extension Tube" -msgstr "" - -#: src/olympusmn.cpp:1340 -msgid "Olympus Zuiko Digital EC-20 2.0x Teleconverter" -msgstr "" - -#: src/olympusmn.cpp:1382 -msgid "S-AF" -msgstr "" - -#: src/olympusmn.cpp:1383 -msgid "C-AF" -msgstr "" - -#: src/olympusmn.cpp:1386 -#, fuzzy -msgid "Imager AF" -msgstr "ID único de imagen" - -#: src/olympusmn.cpp:1387 -#, fuzzy -msgid "AF sensor" -msgstr "Punto blanco" - -#: src/olympusmn.cpp:1433 -#, fuzzy -msgid "Soft Focus" -msgstr "Lugar" - -#: src/olympusmn.cpp:1434 -msgid "Pop Art" -msgstr "" - -#: src/olympusmn.cpp:1435 -msgid "Pale & Light Color" -msgstr "" - -#: src/olympusmn.cpp:1436 -#, fuzzy -msgid "Light Tone" -msgstr "Escena nocturna" - -#: src/olympusmn.cpp:1437 -msgid "Pin Hole" -msgstr "" - -#: src/olympusmn.cpp:1438 -msgid "Grainy Film" -msgstr "" - -#: src/olympusmn.cpp:1439 -#, fuzzy -msgid "Diorama" -msgstr "normal" - -#: src/olympusmn.cpp:1440 -#, fuzzy -msgid "Cross Process" -msgstr "Modo de exposición" - -#: src/olympusmn.cpp:1441 -#, fuzzy -msgid "Fish Eye" -msgstr "Flash" - -#: src/olympusmn.cpp:1442 -msgid "Drawing" -msgstr "" - -#: src/olympusmn.cpp:1489 -#, fuzzy -msgid "Left (or n/a)" -msgstr "Escena nocturna" - -#: src/olympusmn.cpp:1490 src/olympusmn.cpp:1508 -msgid "Center (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1492 src/olympusmn.cpp:1519 -msgid "Center (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1503 -msgid "Top-left (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1504 -#, fuzzy -msgid "Top-center (horizontal)" -msgstr "Centímetro" - -#: src/olympusmn.cpp:1505 -msgid "Top-right (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1506 -#, fuzzy -msgid "Left (horizontal)" -msgstr "Escena nocturna" - -#: src/olympusmn.cpp:1507 -msgid "Mid-left (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1509 -msgid "Mid-right (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1510 -#, fuzzy -msgid "Right (horizontal)" -msgstr "Escena nocturna" - -#: src/olympusmn.cpp:1511 -#, fuzzy -msgid "Bottom-left (horizontal)" -msgstr "abajo - izquierda" - -#: src/olympusmn.cpp:1512 -#, fuzzy -msgid "Bottom-center (horizontal)" -msgstr "abajo - izquierda" - -#: src/olympusmn.cpp:1513 -#, fuzzy -msgid "Bottom-right (horizontal)" -msgstr "abajo - derecha" - -#: src/olympusmn.cpp:1514 -msgid "Top-left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1515 -#, fuzzy -msgid "Top-center (vertical)" -msgstr "Centímetro" - -#: src/olympusmn.cpp:1516 -#, fuzzy -msgid "Top-right (vertical)" -msgstr "Copyright" - -#: src/olympusmn.cpp:1517 -msgid "Left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1518 -msgid "Mid-left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1520 -#, fuzzy -msgid "Mid-right (vertical)" -msgstr "Copyright" - -#: src/olympusmn.cpp:1521 -msgid "Right (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1522 -#, fuzzy -msgid "Bottom-left (vertical)" -msgstr "abajo - izquierda" - -#: src/olympusmn.cpp:1523 -#, fuzzy -msgid "Bottom-center (vertical)" -msgstr "abajo - izquierda" - -#: src/olympusmn.cpp:1524 -#, fuzzy -msgid "Bottom-right (vertical)" -msgstr "abajo - derecha" - -#: src/olympusmn.cpp:1561 -#, fuzzy -msgid "Single Target" -msgstr "Nombre del documento" - -#: src/olympusmn.cpp:1562 -#, fuzzy -msgid "All Target" -msgstr "promedio" - -#: src/olympusmn.cpp:1563 -#, fuzzy -msgid "Dynamic Single Target" -msgstr "Balance de blanco" - -#: src/panasonicmn.cpp:57 src/pentaxmn.cpp:348 src/pentaxmn.cpp:361 -#, fuzzy -msgid "Very High" -msgstr "Luz de día" - -#: src/panasonicmn.cpp:59 -#, fuzzy -msgid "Motion Picture" -msgstr "Modo de exposición" - -#: src/panasonicmn.cpp:67 -msgid "Halogen" -msgstr "" - -#: src/panasonicmn.cpp:79 -#, fuzzy -msgid "Auto, focus button" -msgstr "Exposición automática" - -#: src/panasonicmn.cpp:80 src/panasonicmn.cpp:81 -#, fuzzy -msgid "Auto, continuous" -msgstr "Exposición automática" - -#: src/panasonicmn.cpp:95 -#, fuzzy -msgid "Tele-macro" -msgstr "Macro" - -#: src/panasonicmn.cpp:103 -#, fuzzy -msgid "Scenery" -msgstr "centrado" - -#: src/panasonicmn.cpp:108 -#, fuzzy -msgid "Shutter-speed priority" -msgstr "Prioridad del obturador" - -#: src/panasonicmn.cpp:112 -#, fuzzy -msgid "Movie preview" -msgstr "Vista cercana" - -#: src/panasonicmn.cpp:113 -#, fuzzy -msgid "Panning" -msgstr "Nitidez" - -#: src/panasonicmn.cpp:114 -#, fuzzy -msgid "Simple" -msgstr "Orden de llenado" - -#: src/panasonicmn.cpp:115 -#, fuzzy -msgid "Color effects" -msgstr "Espacio de color" - -#: src/panasonicmn.cpp:119 -#, fuzzy -msgid "Night scenery" -msgstr "Escena nocturna" - -#: src/panasonicmn.cpp:121 -msgid "Baby" -msgstr "" - -#: src/panasonicmn.cpp:122 -#, fuzzy -msgid "Soft skin" -msgstr "Suave" - -#: src/panasonicmn.cpp:123 src/pentaxmn.cpp:484 -#, fuzzy -msgid "Candlelight" -msgstr "Luz de día" - -#: src/panasonicmn.cpp:124 -#, fuzzy -msgid "Starry night" -msgstr "Luz estándar A" - -#: src/panasonicmn.cpp:125 -#, fuzzy -msgid "High sensitivity" -msgstr "Sensibilidad espectral" - -#: src/panasonicmn.cpp:126 -#, fuzzy -msgid "Panorama assist" -msgstr "normal" - -#: src/panasonicmn.cpp:129 -msgid "Aerial photo" -msgstr "" - -#: src/panasonicmn.cpp:132 -msgid "Intelligent ISO" -msgstr "" - -#: src/panasonicmn.cpp:133 -#, fuzzy -msgid "High speed continuous shooting" -msgstr "Modo de exposición" - -#: src/panasonicmn.cpp:134 -msgid "Intelligent auto" -msgstr "" - -#: src/panasonicmn.cpp:146 -#, fuzzy -msgid "Warm" -msgstr "Espacio de color" - -#: src/panasonicmn.cpp:147 -#, fuzzy -msgid "Cool" -msgstr "Espacio de color" - -#: src/panasonicmn.cpp:155 -#, fuzzy -msgid "Low/High quality" -msgstr "Ancho de la imagen" - -#: src/panasonicmn.cpp:156 -msgid "Infinite" -msgstr "" - -#: src/panasonicmn.cpp:164 -#, fuzzy -msgid "Medium low" -msgstr "Luz de día" - -#: src/panasonicmn.cpp:165 -#, fuzzy -msgid "Medium high" -msgstr "Luz de día" - -#: src/panasonicmn.cpp:175 -msgid "Low (-1)" -msgstr "" - -#: src/panasonicmn.cpp:176 -#, fuzzy -msgid "High (+1)" -msgstr "Luz de día" - -#: src/panasonicmn.cpp:177 -msgid "Lowest (-2)" -msgstr "" - -#: src/panasonicmn.cpp:178 -#, fuzzy -msgid "Highest (+2)" -msgstr "Luz de día" - -#: src/panasonicmn.cpp:184 -msgid "10s" -msgstr "" - -#: src/panasonicmn.cpp:185 -msgid "2s" -msgstr "" - -#: src/panasonicmn.cpp:205 -msgid "EX optics" -msgstr "" - -#: src/panasonicmn.cpp:212 -msgid "Telephoto" -msgstr "" - -#: src/panasonicmn.cpp:219 src/properties.cpp:890 -#, fuzzy -msgid "Home" -msgstr "Normal" - -#: src/panasonicmn.cpp:225 -#, fuzzy -msgid "Standard (color)" -msgstr "Estándar" - -#: src/panasonicmn.cpp:226 -#, fuzzy -msgid "Dynamic (color)" -msgstr "formato planar" - -#: src/panasonicmn.cpp:227 -#, fuzzy -msgid "Nature (color)" -msgstr "Manual" - -#: src/panasonicmn.cpp:228 -#, fuzzy -msgid "Smooth (color)" -msgstr "Lugar" - -#: src/panasonicmn.cpp:229 -#, fuzzy -msgid "Standard (B&W)" -msgstr "Estándar" - -#: src/panasonicmn.cpp:230 -#, fuzzy -msgid "Dynamic (B&W)" -msgstr "formato planar" - -#: src/panasonicmn.cpp:231 -#, fuzzy -msgid "Smooth (B&W)" -msgstr "Lugar" - -#: src/panasonicmn.cpp:245 -#, fuzzy -msgid "Audio" -msgstr "acción" - -#: src/panasonicmn.cpp:248 -#, fuzzy -msgid "White balance adjustment" -msgstr "Balance de blanco" - -#: src/panasonicmn.cpp:249 -#, fuzzy -msgid "FlashBias" -msgstr "El flash disparó." - -#: src/panasonicmn.cpp:251 src/tags.cpp:190 -#, fuzzy -msgid "Exif version" -msgstr "Versión Exif" - -#: src/panasonicmn.cpp:253 -#, fuzzy -msgid "Color Effect" -msgstr "Espacio de color" - -#: src/panasonicmn.cpp:253 -#, fuzzy -msgid "Color effect" -msgstr "Espacio de color" - -#: src/panasonicmn.cpp:254 -msgid "" -"Time in 1/100 s from when the camera was powered on to when the image is " -"written to memory card" -msgstr "" - -#: src/panasonicmn.cpp:255 -#, fuzzy -msgid "Burst Mode" -msgstr "Modo de exposición" - -#: src/panasonicmn.cpp:255 -#, fuzzy -msgid "Burst mode" -msgstr "Modo de exposición" - -#: src/panasonicmn.cpp:258 -#, fuzzy -msgid "NoiseReduction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/panasonicmn.cpp:259 -#, fuzzy -msgid "Self Timer" -msgstr "Centímetro" - -#: src/panasonicmn.cpp:264 src/panasonicmn.cpp:286 -msgid "Baby Age" -msgstr "" - -#: src/panasonicmn.cpp:264 src/panasonicmn.cpp:286 -msgid "Baby (or pet) age" -msgstr "" - -#: src/panasonicmn.cpp:265 -#, fuzzy -msgid "Optical Zoom Mode" -msgstr "Modo de métrica" - -#: src/panasonicmn.cpp:265 -#, fuzzy -msgid "Optical zoom mode" -msgstr "Flash" - -#: src/panasonicmn.cpp:266 -#, fuzzy -msgid "Conversion Lens" -msgstr "Versión Exif" - -#: src/panasonicmn.cpp:266 -#, fuzzy -msgid "Conversion lens" -msgstr "Espacio de color" - -#: src/panasonicmn.cpp:267 -msgid "Travel Day" -msgstr "" - -#: src/panasonicmn.cpp:267 -msgid "Travel day" -msgstr "" - -#: src/panasonicmn.cpp:269 -#, fuzzy -msgid "World Time Location" -msgstr "Ubicación del sujeto" - -#: src/panasonicmn.cpp:269 -#, fuzzy -msgid "World time location" -msgstr "Ubicación del sujeto" - -#: src/panasonicmn.cpp:270 -#, fuzzy -msgid "Program ISO" -msgstr "Modo de exposición" - -#: src/panasonicmn.cpp:274 -#, fuzzy -msgid "WB Adjust AB" -msgstr "Longitud de la imagen" - -#: src/panasonicmn.cpp:274 -msgid "WB adjust AB. Positive is a shift toward blue." -msgstr "" - -#: src/panasonicmn.cpp:275 -#, fuzzy -msgid "WB Adjust GM" -msgstr "Longitud de la imagen" - -#: src/panasonicmn.cpp:275 -msgid "WBAdjustGM. Positive is a shift toward green." -msgstr "" - -#: src/panasonicmn.cpp:278 -#, fuzzy -msgid "Accessory Type" -msgstr "Tipo de escena" - -#: src/panasonicmn.cpp:278 -#, fuzzy -msgid "Accessory type" -msgstr "Espacio de color" - -#: src/panasonicmn.cpp:281 -#, fuzzy -msgid "MakerNote Version" -msgstr "Versión Exif" - -#: src/panasonicmn.cpp:281 -#, fuzzy -msgid "MakerNote version" -msgstr "Versión Exif" - -#: src/panasonicmn.cpp:283 src/panasonicmn.cpp:345 -#, fuzzy -msgid "WB Red Level" -msgstr "Nivel de la batería" - -#: src/panasonicmn.cpp:283 src/panasonicmn.cpp:345 -#, fuzzy -msgid "WB red level" -msgstr "Nivel de la batería" - -#: src/panasonicmn.cpp:284 src/panasonicmn.cpp:346 -#, fuzzy -msgid "WB Green Level" -msgstr "Nivel de la batería" - -#: src/panasonicmn.cpp:284 src/panasonicmn.cpp:346 -#, fuzzy -msgid "WB green level" -msgstr "Nivel de la batería" - -#: src/panasonicmn.cpp:285 src/panasonicmn.cpp:347 -#, fuzzy -msgid "WB Blue Level" -msgstr "Nivel de la batería" - -#: src/panasonicmn.cpp:285 src/panasonicmn.cpp:347 -#, fuzzy -msgid "WB blue level" -msgstr "Nivel de la batería" - -#: src/panasonicmn.cpp:288 -#, fuzzy -msgid "Unknown PanasonicMakerNote tag" -msgstr "Versión Exif" - -#: src/panasonicmn.cpp:305 -#, fuzzy -msgid "Spot mode on" -msgstr "Retrato" - -#: src/panasonicmn.cpp:306 -msgid "Spot mode off or 3-area (high speed)" -msgstr "" - -#: src/panasonicmn.cpp:307 -#, fuzzy -msgid "Spot focussing" -msgstr "Lugar" - -#: src/panasonicmn.cpp:308 -msgid "5-area" -msgstr "" - -#: src/panasonicmn.cpp:309 -msgid "1-area" -msgstr "" - -#: src/panasonicmn.cpp:310 -msgid "1-area (high speed)" -msgstr "" - -#: src/panasonicmn.cpp:311 -msgid "3-area (auto)" -msgstr "" - -#: src/panasonicmn.cpp:312 -msgid "3-area (left)" -msgstr "" - -#: src/panasonicmn.cpp:313 -msgid "3-area (center)" -msgstr "" - -#: src/panasonicmn.cpp:314 -msgid "3-area (right)" -msgstr "" - -#: src/panasonicmn.cpp:326 -msgid " EV" -msgstr "" - -#: src/panasonicmn.cpp:335 -#, fuzzy -msgid "Panasonic raw version" -msgstr "Versión Exif" - -#: src/panasonicmn.cpp:336 -#, fuzzy -msgid "Sensor Width" -msgstr "Copyright" - -#: src/panasonicmn.cpp:336 -#, fuzzy -msgid "Sensor width" -msgstr "Copyright" - -#: src/panasonicmn.cpp:337 -#, fuzzy -msgid "Sensor Height" -msgstr "Copyright" - -#: src/panasonicmn.cpp:337 -#, fuzzy -msgid "Sensor height" -msgstr "Copyright" - -#: src/panasonicmn.cpp:338 -#, fuzzy -msgid "Sensor Top Border" -msgstr "Espacio de color" - -#: src/panasonicmn.cpp:338 -#, fuzzy -msgid "Sensor top border" -msgstr "Espacio de color" - -#: src/panasonicmn.cpp:339 -#, fuzzy -msgid "Sensor Left Border" -msgstr "Espacio de color" - -#: src/panasonicmn.cpp:339 -#, fuzzy -msgid "Sensor left border" -msgstr "Espacio de color" - -#: src/panasonicmn.cpp:342 -msgid "Red balance (found in Digilux 2 RAW images)" -msgstr "" - -#: src/panasonicmn.cpp:349 src/tags.cpp:465 -msgid "Manufacturer" -msgstr "Fabricante" - -#: src/panasonicmn.cpp:349 -msgid "The manufacturer of the recording equipment" -msgstr "" - -#: src/panasonicmn.cpp:350 src/properties.cpp:518 src/tags.cpp:471 -msgid "Model" -msgstr "Modelo" - -#: src/panasonicmn.cpp:350 -#, fuzzy -msgid "The model name or model number of the equipment" -msgstr "El tipo de fuente de luz." - -#: src/panasonicmn.cpp:351 src/tags.cpp:477 -msgid "Strip Offsets" -msgstr "Desplazamiento de tira" - -#: src/panasonicmn.cpp:351 -#, fuzzy -msgid "Strip offsets" -msgstr "Desplazamiento de tira" - -#: src/panasonicmn.cpp:352 src/properties.cpp:485 src/tags.cpp:484 -msgid "Orientation" -msgstr "Orientación" - -#: src/panasonicmn.cpp:353 -#, fuzzy -msgid "Rows Per Strip" -msgstr "Filas por tira" - -#: src/panasonicmn.cpp:353 -#, fuzzy -msgid "The number of rows per strip" -msgstr "El número F." - -#: src/panasonicmn.cpp:354 -#, fuzzy -msgid "Strip Byte Counts" -msgstr "Cantidad de bytes por tira" - -#: src/panasonicmn.cpp:354 -#, fuzzy -msgid "Strip byte counts" -msgstr "Cantidad de bytes por tira" - -#: src/panasonicmn.cpp:355 -#, fuzzy -msgid "Raw Data Offset" -msgstr "Desplazamiento de tira" - -#: src/panasonicmn.cpp:355 -#, fuzzy -msgid "Raw data offset" -msgstr "Desconocido" - -#: src/panasonicmn.cpp:356 src/tags.cpp:790 -msgid "Exif IFD Pointer" -msgstr "" - -#: src/panasonicmn.cpp:356 -msgid "A pointer to the Exif IFD" -msgstr "" - -#: src/panasonicmn.cpp:357 src/tags.cpp:801 -msgid "GPS Info IFD Pointer" -msgstr "" - -#: src/panasonicmn.cpp:357 -msgid "A pointer to the GPS Info IFD" -msgstr "" - -#: src/panasonicmn.cpp:359 -#, fuzzy -msgid "Unknown PanasonicRaw tag" -msgstr "Versión Exif" - -#: src/pentaxmn.cpp:57 -#, fuzzy -msgid "Night-Scene" -msgstr "Escena nocturna" - -#: src/pentaxmn.cpp:63 -#, fuzzy -msgid "Optio 330/430" -msgstr "acción" - -#: src/pentaxmn.cpp:64 -#, fuzzy -msgid "Optio 230" -msgstr "acción" - -#: src/pentaxmn.cpp:65 -#, fuzzy -msgid "Optio 330GS" -msgstr "acción" - -#: src/pentaxmn.cpp:66 -#, fuzzy -msgid "Optio 450/550" -msgstr "acción" - -#: src/pentaxmn.cpp:67 -#, fuzzy -msgid "Optio S" -msgstr "acción" - -#: src/pentaxmn.cpp:68 -msgid "*ist D" -msgstr "" - -#: src/pentaxmn.cpp:69 -#, fuzzy -msgid "Optio 33L" -msgstr "acción" - -#: src/pentaxmn.cpp:70 -#, fuzzy -msgid "Optio 33LF" -msgstr "acción" - -#: src/pentaxmn.cpp:71 -msgid "Optio 33WR/43WR/555" -msgstr "" - -#: src/pentaxmn.cpp:72 -#, fuzzy -msgid "Optio S4" -msgstr "acción" - -#: src/pentaxmn.cpp:73 -#, fuzzy -msgid "Optio MX" -msgstr "acción" - -#: src/pentaxmn.cpp:74 -#, fuzzy -msgid "Optio S40" -msgstr "acción" - -#: src/pentaxmn.cpp:75 -#, fuzzy -msgid "Optio S4i" -msgstr "acción" - -#: src/pentaxmn.cpp:76 -#, fuzzy -msgid "Optio 30" -msgstr "acción" - -#: src/pentaxmn.cpp:77 -#, fuzzy -msgid "Optio S30" -msgstr "acción" - -#: src/pentaxmn.cpp:78 -#, fuzzy -msgid "Optio 750Z" -msgstr "acción" - -#: src/pentaxmn.cpp:79 -#, fuzzy -msgid "Optio SV" -msgstr "acción" - -#: src/pentaxmn.cpp:80 -#, fuzzy -msgid "Optio SVi" -msgstr "acción" - -#: src/pentaxmn.cpp:81 -#, fuzzy -msgid "Optio X" -msgstr "acción" - -#: src/pentaxmn.cpp:82 -#, fuzzy -msgid "Optio S5i" -msgstr "acción" - -#: src/pentaxmn.cpp:83 -#, fuzzy -msgid "Optio S50" -msgstr "acción" - -#: src/pentaxmn.cpp:84 -msgid "*ist DS" -msgstr "" - -#: src/pentaxmn.cpp:85 -#, fuzzy -msgid "Optio MX4" -msgstr "acción" - -#: src/pentaxmn.cpp:86 -#, fuzzy -msgid "Optio S5n" -msgstr "acción" - -#: src/pentaxmn.cpp:87 -#, fuzzy -msgid "Optio WP" -msgstr "acción" - -#: src/pentaxmn.cpp:88 -#, fuzzy -msgid "Optio S55" -msgstr "acción" - -#: src/pentaxmn.cpp:89 -#, fuzzy -msgid "Optio S5z" -msgstr "acción" - -#: src/pentaxmn.cpp:90 -msgid "*ist DL" -msgstr "" - -#: src/pentaxmn.cpp:91 -#, fuzzy -msgid "Optio S60" -msgstr "acción" - -#: src/pentaxmn.cpp:92 -#, fuzzy -msgid "Optio S45" -msgstr "acción" - -#: src/pentaxmn.cpp:93 -#, fuzzy -msgid "Optio S6" -msgstr "acción" - -#: src/pentaxmn.cpp:94 -#, fuzzy -msgid "Optio WPi" -msgstr "acción" - -#: src/pentaxmn.cpp:95 -msgid "BenQ DC X600" -msgstr "" - -#: src/pentaxmn.cpp:96 -msgid "*ist DS2" -msgstr "" - -#: src/pentaxmn.cpp:97 -msgid "Samsung GX-1S" -msgstr "" - -#: src/pentaxmn.cpp:98 -#, fuzzy -msgid "Optio A10" -msgstr "acción" - -#: src/pentaxmn.cpp:99 -msgid "*ist DL2" -msgstr "" - -#: src/pentaxmn.cpp:100 -msgid "Samsung GX-1L" -msgstr "" - -#: src/pentaxmn.cpp:101 -msgid "K100D" -msgstr "" - -#: src/pentaxmn.cpp:102 -msgid "K110D" -msgstr "" - -#: src/pentaxmn.cpp:103 -msgid "K100D Super" -msgstr "" - -#: src/pentaxmn.cpp:104 -#, fuzzy -msgid "Optio T10/T20" -msgstr "acción" - -#: src/pentaxmn.cpp:105 -#, fuzzy -msgid "Optio W10" -msgstr "acción" - -#: src/pentaxmn.cpp:106 -#, fuzzy -msgid "Optio M10" -msgstr "acción" - -#: src/pentaxmn.cpp:107 -msgid "K10D" -msgstr "" - -#: src/pentaxmn.cpp:108 -msgid "Samsung GX10" -msgstr "" - -#: src/pentaxmn.cpp:109 -#, fuzzy -msgid "Optio S7" -msgstr "acción" - -#: src/pentaxmn.cpp:110 -#, fuzzy -msgid "Optio L20" -msgstr "acción" - -#: src/pentaxmn.cpp:111 -#, fuzzy -msgid "Optio M20" -msgstr "acción" - -#: src/pentaxmn.cpp:112 -#, fuzzy -msgid "Optio W20" -msgstr "acción" - -#: src/pentaxmn.cpp:113 -#, fuzzy -msgid "Optio A20" -msgstr "acción" - -#: src/pentaxmn.cpp:114 -#, fuzzy -msgid "Optio M30" -msgstr "acción" - -#: src/pentaxmn.cpp:115 -#, fuzzy -msgid "Optio E30" -msgstr "acción" - -#: src/pentaxmn.cpp:116 -#, fuzzy -msgid "Optio E35" -msgstr "acción" - -#: src/pentaxmn.cpp:117 -#, fuzzy -msgid "Optio T30" -msgstr "acción" - -#: src/pentaxmn.cpp:118 -#, fuzzy -msgid "Optio W30" -msgstr "acción" - -#: src/pentaxmn.cpp:119 -#, fuzzy -msgid "Optio A30" -msgstr "acción" - -#: src/pentaxmn.cpp:120 -#, fuzzy -msgid "Optio E40" -msgstr "acción" - -#: src/pentaxmn.cpp:121 -#, fuzzy -msgid "Optio M40" -msgstr "acción" - -#: src/pentaxmn.cpp:122 -#, fuzzy -msgid "Optio Z10" -msgstr "acción" - -#: src/pentaxmn.cpp:123 -msgid "K20D" -msgstr "" - -#: src/pentaxmn.cpp:124 -msgid "Samsung GX20" -msgstr "" - -#: src/pentaxmn.cpp:125 -#, fuzzy -msgid "Optio S10" -msgstr "acción" - -#: src/pentaxmn.cpp:126 -#, fuzzy -msgid "Optio A40" -msgstr "acción" - -#: src/pentaxmn.cpp:127 -#, fuzzy -msgid "Optio V10" -msgstr "acción" - -#: src/pentaxmn.cpp:128 -msgid "K200D" -msgstr "" - -#: src/pentaxmn.cpp:129 -#, fuzzy -msgid "Optio S12" -msgstr "acción" - -#: src/pentaxmn.cpp:130 -#, fuzzy -msgid "Optio E50" -msgstr "acción" - -#: src/pentaxmn.cpp:131 -#, fuzzy -msgid "Optio M50" -msgstr "acción" - -#: src/pentaxmn.cpp:132 -#, fuzzy -msgid "Optio V20" -msgstr "acción" - -#: src/pentaxmn.cpp:133 -#, fuzzy -msgid "Optio W60" -msgstr "acción" - -#: src/pentaxmn.cpp:134 -#, fuzzy -msgid "Optio M60" -msgstr "acción" - -#: src/pentaxmn.cpp:135 -#, fuzzy -msgid "Optio E60" -msgstr "acción" - -#: src/pentaxmn.cpp:136 -msgid "K2000" -msgstr "" - -#: src/pentaxmn.cpp:137 -msgid "K-m" -msgstr "" - -#: src/pentaxmn.cpp:138 -#, fuzzy -msgid "Optio P70" -msgstr "acción" - -#: src/pentaxmn.cpp:139 -#, fuzzy -msgid "Optio E70" -msgstr "acción" - -#: src/pentaxmn.cpp:140 -msgid "X70" -msgstr "" - -#: src/pentaxmn.cpp:141 -#, fuzzy -msgid "K-7" -msgstr "-" - -#: src/pentaxmn.cpp:142 -#, fuzzy -msgid "Optio W80" -msgstr "acción" - -#: src/pentaxmn.cpp:143 -#, fuzzy -msgid "Optio P80" -msgstr "acción" - -#: src/pentaxmn.cpp:144 -#, fuzzy -msgid "Optio WS80" -msgstr "acción" - -#: src/pentaxmn.cpp:145 -msgid "K-x" -msgstr "" - -#: src/pentaxmn.cpp:146 -msgid "645D" -msgstr "" - -#: src/pentaxmn.cpp:147 -#, fuzzy -msgid "Optio I-10" -msgstr "acción" - -#: src/pentaxmn.cpp:152 -msgid "Good" -msgstr "" - -#: src/pentaxmn.cpp:153 -#, fuzzy -msgid "Better" -msgstr "Centímetro" - -#: src/pentaxmn.cpp:154 -#, fuzzy -msgid "Best" -msgstr "Centímetro" - -#: src/pentaxmn.cpp:155 -msgid "TIFF" -msgstr "" - -#: src/pentaxmn.cpp:157 -msgid "Premium" -msgstr "" - -#: src/pentaxmn.cpp:162 -msgid "640x480" -msgstr "" - -#: src/pentaxmn.cpp:164 -msgid "1024x768" -msgstr "" - -#: src/pentaxmn.cpp:165 -msgid "1280x960" -msgstr "" - -#: src/pentaxmn.cpp:166 -msgid "1600x1200" -msgstr "" - -#: src/pentaxmn.cpp:167 -msgid "2048x1536" -msgstr "" - -#: src/pentaxmn.cpp:168 -msgid "2560x1920 or 2304x1728" -msgstr "" - -#: src/pentaxmn.cpp:169 -msgid "3072x2304" -msgstr "" - -#: src/pentaxmn.cpp:170 -msgid "3264x2448" -msgstr "" - -#: src/pentaxmn.cpp:171 -msgid "320x240" -msgstr "" - -#: src/pentaxmn.cpp:172 -msgid "2288x1712" -msgstr "" - -#: src/pentaxmn.cpp:173 -msgid "2592x1944" -msgstr "" - -#: src/pentaxmn.cpp:174 -msgid "2304x1728 or 2592x1944" -msgstr "" - -#: src/pentaxmn.cpp:175 -msgid "3056x2296" -msgstr "" - -#: src/pentaxmn.cpp:176 -msgid "2816x2212 or 2816x2112" -msgstr "" - -#: src/pentaxmn.cpp:177 -msgid "3648x2736" -msgstr "" - -#: src/pentaxmn.cpp:182 -#, fuzzy -msgid "Auto, Did not fire" -msgstr "El flash no disparó." - -#: src/pentaxmn.cpp:184 -#, fuzzy -msgid "Auto, Did not fire, Red-eye reduction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/pentaxmn.cpp:185 -#, fuzzy -msgid "Auto, Fired" -msgstr "Auto bracket" - -#: src/pentaxmn.cpp:187 -#, fuzzy -msgid "Auto, Fired, Red-eye reduction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/pentaxmn.cpp:188 -#, fuzzy -msgid "On, Red-eye reduction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/pentaxmn.cpp:189 -msgid "On, Wireless" -msgstr "" - -#: src/pentaxmn.cpp:190 -#, fuzzy -msgid "On, Soft" -msgstr "Suave" - -#: src/pentaxmn.cpp:191 -msgid "On, Slow-sync" -msgstr "" - -#: src/pentaxmn.cpp:192 -#, fuzzy -msgid "On, Slow-sync, Red-eye reduction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/pentaxmn.cpp:193 -msgid "On, Trailing-curtain Sync" -msgstr "" - -#: src/pentaxmn.cpp:203 -#, fuzzy -msgid "Pan Focus" -msgstr "Exposición manual" - -#: src/pentaxmn.cpp:204 -msgid "AF-S" -msgstr "" - -#: src/pentaxmn.cpp:205 -msgid "AF-C" -msgstr "" - -#: src/pentaxmn.cpp:206 -msgid "AF-A" -msgstr "" - -#: src/pentaxmn.cpp:212 -#, fuzzy -msgid "Fixed Center" -msgstr "Tiempo bueno" - -#: src/pentaxmn.cpp:213 -#, fuzzy -msgid "Automatic Tracking AF" -msgstr "Auto bracket" - -#: src/pentaxmn.cpp:214 -msgid "Face Recognition AF" -msgstr "" - -#: src/pentaxmn.cpp:231 -#, fuzzy -msgid "Fixed Center or multiple" -msgstr "Tiempo bueno" - -#: src/pentaxmn.cpp:233 -#, fuzzy -msgid "Top-center" -msgstr "Centímetro" - -#: src/pentaxmn.cpp:239 -#, fuzzy -msgid "Bottom-center" -msgstr "abajo - izquierda" - -#: src/pentaxmn.cpp:245 src/pentaxmn.cpp:267 src/pentaxmn.cpp:275 -#, fuzzy -msgid "50" -msgstr "D75" - -#: src/pentaxmn.cpp:246 -msgid "64" -msgstr "" - -#: src/pentaxmn.cpp:247 -#, fuzzy -msgid "80" -msgstr "D75" - -#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:268 src/pentaxmn.cpp:277 -#, fuzzy -msgid "100" -msgstr "D75" - -#: src/pentaxmn.cpp:249 -#, fuzzy -msgid "125" -msgstr "D75" - -#: src/pentaxmn.cpp:250 -msgid "160" -msgstr "" - -#: src/pentaxmn.cpp:251 src/pentaxmn.cpp:269 src/pentaxmn.cpp:270 -#: src/pentaxmn.cpp:279 -#, fuzzy -msgid "200" -msgstr "D75" - -#: src/pentaxmn.cpp:252 -#, fuzzy -msgid "250" -msgstr "D75" - -#: src/pentaxmn.cpp:253 -#, fuzzy -msgid "320" -msgstr "D75" - -#: src/pentaxmn.cpp:254 src/pentaxmn.cpp:271 src/pentaxmn.cpp:281 -#, fuzzy -msgid "400" -msgstr "D75" - -#: src/pentaxmn.cpp:255 -#, fuzzy -msgid "500" -msgstr "D75" - -#: src/pentaxmn.cpp:256 -msgid "640" -msgstr "" - -#: src/pentaxmn.cpp:257 src/pentaxmn.cpp:272 src/pentaxmn.cpp:283 -#, fuzzy -msgid "800" -msgstr "D75" - -#: src/pentaxmn.cpp:258 -msgid "1000" -msgstr "" - -#: src/pentaxmn.cpp:259 -#, fuzzy -msgid "1250" -msgstr "D75" - -#: src/pentaxmn.cpp:260 src/pentaxmn.cpp:273 src/pentaxmn.cpp:285 -msgid "1600" -msgstr "" - -#: src/pentaxmn.cpp:261 -msgid "2000" -msgstr "" - -#: src/pentaxmn.cpp:262 -#, fuzzy -msgid "2500" -msgstr "D75" - -#: src/pentaxmn.cpp:263 src/pentaxmn.cpp:274 src/pentaxmn.cpp:287 -msgid "3200" -msgstr "" - -#: src/pentaxmn.cpp:264 -msgid "4000" -msgstr "" - -#: src/pentaxmn.cpp:265 -#, fuzzy -msgid "5000" -msgstr "D75" - -#: src/pentaxmn.cpp:266 -msgid "6400" -msgstr "" - -#: src/pentaxmn.cpp:276 -#, fuzzy -msgid "70" -msgstr "D75" - -#: src/pentaxmn.cpp:278 -msgid "140" -msgstr "" - -#: src/pentaxmn.cpp:280 -#, fuzzy -msgid "280" -msgstr "D75" - -#: src/pentaxmn.cpp:282 -#, fuzzy -msgid "560" -msgstr "D75" - -#: src/pentaxmn.cpp:284 -msgid "1100" -msgstr "" - -#: src/pentaxmn.cpp:286 -msgid "2200" -msgstr "" - -#: src/pentaxmn.cpp:304 -#, fuzzy -msgid "Multi Segment" -msgstr "multi-lugar" - -#: src/pentaxmn.cpp:305 -#, fuzzy -msgid "Center Weighted" -msgstr "peso centrado" - -#: src/pentaxmn.cpp:317 -#, fuzzy -msgid "DaylightFluorescent" -msgstr "Fluorescente" - -#: src/pentaxmn.cpp:318 -#, fuzzy -msgid "DaywhiteFluorescent" -msgstr "Fluorescente" - -#: src/pentaxmn.cpp:319 -#, fuzzy -msgid "WhiteFluorescent" -msgstr "Fluorescente" - -#: src/pentaxmn.cpp:324 -#, fuzzy -msgid "User Selected" -msgstr "Auto bracket" - -#: src/pentaxmn.cpp:329 -#, fuzzy -msgid "Auto (Daylight)" -msgstr "Luz de día" - -#: src/pentaxmn.cpp:330 -#, fuzzy -msgid "Auto (Shade)" -msgstr "Sombra" - -#: src/pentaxmn.cpp:331 -#, fuzzy -msgid "Auto (Flash)" -msgstr "Auto bracket" - -#: src/pentaxmn.cpp:332 -#, fuzzy -msgid "Auto (Tungsten)" -msgstr "tungsteno" - -#: src/pentaxmn.cpp:333 -#, fuzzy -msgid "Auto (DaywhiteFluorescent)" -msgstr "Fluorescente" - -#: src/pentaxmn.cpp:334 -#, fuzzy -msgid "Auto (WhiteFluorescent)" -msgstr "Fluorescente" - -#: src/pentaxmn.cpp:335 -#, fuzzy -msgid "Auto (Cloudy)" -msgstr "nublado" - -#: src/pentaxmn.cpp:337 -msgid "Preset (Fireworks?)" -msgstr "" - -#: src/pentaxmn.cpp:345 src/pentaxmn.cpp:358 -#, fuzzy -msgid "Med Low" -msgstr "co-situado" - -#: src/pentaxmn.cpp:346 src/pentaxmn.cpp:359 -#, fuzzy -msgid "Med High" -msgstr "Luz de día" - -#: src/pentaxmn.cpp:369 -#, fuzzy -msgid "Med Soft" -msgstr "Suave" - -#: src/pentaxmn.cpp:370 -#, fuzzy -msgid "Med Hard" -msgstr "Duro" - -#: src/pentaxmn.cpp:371 -#, fuzzy -msgid "Very Soft" -msgstr "co-situado" - -#: src/pentaxmn.cpp:372 -#, fuzzy -msgid "Very Hard" -msgstr "Luz de día" - -#: src/pentaxmn.cpp:377 src/pentaxmn.cpp:960 -#, fuzzy -msgid "Home town" -msgstr "Ancho de la imagen" - -#: src/pentaxmn.cpp:383 -msgid "Pago Pago" -msgstr "" - -#: src/pentaxmn.cpp:384 -msgid "Honolulu" -msgstr "" - -#: src/pentaxmn.cpp:385 -#, fuzzy -msgid "Anchorage" -msgstr "Promedio" - -#: src/pentaxmn.cpp:386 -msgid "Vancouver" -msgstr "" - -#: src/pentaxmn.cpp:387 -msgid "San Fransisco" -msgstr "" - -#: src/pentaxmn.cpp:388 -#, fuzzy -msgid "Los Angeles" -msgstr "arriba - izquierda" - -#: src/pentaxmn.cpp:389 -msgid "Calgary" -msgstr "" - -#: src/pentaxmn.cpp:390 -#, fuzzy -msgid "Denver" -msgstr "Centímetro" - -#: src/pentaxmn.cpp:391 -#, fuzzy -msgid "Mexico City" -msgstr "Copyright" - -#: src/pentaxmn.cpp:392 -msgid "Chicago" -msgstr "" - -#: src/pentaxmn.cpp:393 -msgid "Miami" -msgstr "" - -#: src/pentaxmn.cpp:394 -#, fuzzy -msgid "Toronto" -msgstr "Espacio de color" - -#: src/pentaxmn.cpp:395 -msgid "New York" -msgstr "" - -#: src/pentaxmn.cpp:396 -msgid "Santiago" -msgstr "" - -#: src/pentaxmn.cpp:397 -msgid "Caracus" -msgstr "" - -#: src/pentaxmn.cpp:398 -msgid "Halifax" -msgstr "" - -#: src/pentaxmn.cpp:399 -msgid "Buenos Aires" -msgstr "" - -#: src/pentaxmn.cpp:400 -msgid "Sao Paulo" -msgstr "" - -#: src/pentaxmn.cpp:401 -msgid "Rio de Janeiro" -msgstr "" - -#: src/pentaxmn.cpp:402 -#, fuzzy -msgid "Madrid" -msgstr "Duro" - -#: src/pentaxmn.cpp:403 -#, fuzzy -msgid "London" -msgstr "Ganancia baja baja" - -#: src/pentaxmn.cpp:404 -#, fuzzy -msgid "Paris" -msgstr "Parcial" - -#: src/pentaxmn.cpp:405 -#, fuzzy -msgid "Milan" -msgstr "Manual" - -#: src/pentaxmn.cpp:406 -#, fuzzy -msgid "Rome" -msgstr "Normal" - -#: src/pentaxmn.cpp:407 -#, fuzzy -msgid "Berlin" -msgstr "Versión Exif" - -#: src/pentaxmn.cpp:408 -msgid "Johannesburg" -msgstr "" - -#: src/pentaxmn.cpp:409 -msgid "Istanbul" -msgstr "" - -#: src/pentaxmn.cpp:410 -#, fuzzy -msgid "Cairo" -msgstr "acción" - -#: src/pentaxmn.cpp:411 -msgid "Jerusalem" -msgstr "" - -#: src/pentaxmn.cpp:412 -msgid "Moscow" -msgstr "" - -#: src/pentaxmn.cpp:413 -msgid "Jeddah" -msgstr "" - -#: src/pentaxmn.cpp:414 -msgid "Tehran" -msgstr "" - -#: src/pentaxmn.cpp:415 -#, fuzzy -msgid "Dubai" -msgstr "Saturación" - -#: src/pentaxmn.cpp:416 -msgid "Karachi" -msgstr "" - -#: src/pentaxmn.cpp:417 -#, fuzzy -msgid "Kabul" -msgstr "promedio" - -#: src/pentaxmn.cpp:418 -#, fuzzy -msgid "Male" -msgstr "Manual" - -#: src/pentaxmn.cpp:419 -msgid "Delhi" -msgstr "" - -#: src/pentaxmn.cpp:420 -#, fuzzy -msgid "Colombo" -msgstr "Espacio de color" - -#: src/pentaxmn.cpp:421 -msgid "Kathmandu" -msgstr "" - -#: src/pentaxmn.cpp:422 -msgid "Dacca" -msgstr "" - -#: src/pentaxmn.cpp:423 -msgid "Yangon" -msgstr "" - -#: src/pentaxmn.cpp:424 -msgid "Bangkok" -msgstr "" - -#: src/pentaxmn.cpp:425 -msgid "Kuala Lumpur" -msgstr "" - -#: src/pentaxmn.cpp:426 -#, fuzzy -msgid "Vientiane" -msgstr "Orientación" - -#: src/pentaxmn.cpp:427 -#, fuzzy -msgid "Singapore" -msgstr "Nombre del documento" - -#: src/pentaxmn.cpp:428 -msgid "Phnom Penh" -msgstr "" - -#: src/pentaxmn.cpp:429 -msgid "Ho Chi Minh" -msgstr "" - -#: src/pentaxmn.cpp:430 -msgid "Jakarta" -msgstr "" - -#: src/pentaxmn.cpp:431 -msgid "Hong Kong" -msgstr "" - -#: src/pentaxmn.cpp:432 -#, fuzzy -msgid "Perth" -msgstr "otro" - -#: src/pentaxmn.cpp:433 -#, fuzzy -msgid "Beijing" -msgstr "Versión Exif" - -#: src/pentaxmn.cpp:434 -msgid "Shanghai" -msgstr "" - -#: src/pentaxmn.cpp:435 -#, fuzzy -msgid "Manila" -msgstr "Manual" - -#: src/pentaxmn.cpp:436 -#, fuzzy -msgid "Taipei" -msgstr "Escena nocturna" - -#: src/pentaxmn.cpp:437 -#, fuzzy -msgid "Seoul" -msgstr "Lugar" - -#: src/pentaxmn.cpp:438 -msgid "Adelaide" -msgstr "" - -#: src/pentaxmn.cpp:439 -msgid "Tokyo" -msgstr "" - -#: src/pentaxmn.cpp:440 -msgid "Guam" -msgstr "" - -#: src/pentaxmn.cpp:441 -#, fuzzy -msgid "Sydney" -msgstr "centrado" - -#: src/pentaxmn.cpp:442 -#, fuzzy -msgid "Noumea" -msgstr "Normal" - -#: src/pentaxmn.cpp:443 -msgid "Wellington" -msgstr "" - -#: src/pentaxmn.cpp:444 -msgid "Auckland" -msgstr "" - -#: src/pentaxmn.cpp:445 -msgid "Lima" -msgstr "" - -#: src/pentaxmn.cpp:446 -msgid "Dakar" -msgstr "" - -#: src/pentaxmn.cpp:447 -msgid "Algiers" -msgstr "" - -#: src/pentaxmn.cpp:448 -msgid "Helsinki" -msgstr "" - -#: src/pentaxmn.cpp:449 -#, fuzzy -msgid "Athens" -msgstr "Ancho de la imagen" - -#: src/pentaxmn.cpp:450 -#, fuzzy -msgid "Nairobi" -msgstr "acción" - -#: src/pentaxmn.cpp:451 -msgid "Amsterdam" -msgstr "" - -#: src/pentaxmn.cpp:452 -msgid "Stockholm" -msgstr "" - -#: src/pentaxmn.cpp:453 -msgid "Lisbon" -msgstr "" - -#: src/pentaxmn.cpp:454 -#, fuzzy -msgid "Copenhagen" -msgstr "Promedio" - -#: src/pentaxmn.cpp:459 -#, fuzzy -msgid "Unprocessed" -msgstr "Descomprimido" - -#: src/pentaxmn.cpp:460 -#, fuzzy -msgid "Digital Filter" -msgstr "Relación de zoom digital" - -#: src/pentaxmn.cpp:461 -#, fuzzy -msgid "Cropped" -msgstr "izquierda - abajo" - -#: src/pentaxmn.cpp:463 -msgid "Frame Synthesis?" -msgstr "" - -#: src/pentaxmn.cpp:469 src/pentaxmn.cpp:506 -#, fuzzy -msgid "MTF Program" -msgstr "Modo de exposición" - -#: src/pentaxmn.cpp:475 -#, fuzzy -msgid "Night Scene Portrait" -msgstr "Retrato" - -#: src/pentaxmn.cpp:476 -#, fuzzy -msgid "No Flash" -msgstr "Flash" - -#: src/pentaxmn.cpp:479 -msgid "Surf & Snow" -msgstr "" - -#: src/pentaxmn.cpp:482 -msgid "Kids" -msgstr "" - -#: src/pentaxmn.cpp:487 -#, fuzzy -msgid "Stage Lighting" -msgstr "Luz de día" - -#: src/pentaxmn.cpp:488 -#, fuzzy -msgid "Night Snap" -msgstr "retrato" - -#: src/pentaxmn.cpp:490 -#, fuzzy -msgid "Auto PICT (Standard)" -msgstr "Paisaje" - -#: src/pentaxmn.cpp:491 -#, fuzzy -msgid "Auto PICT (Portrait)" -msgstr "Contraste" - -#: src/pentaxmn.cpp:492 -#, fuzzy -msgid "Auto PICT (Landscape)" -msgstr "Paisaje" - -#: src/pentaxmn.cpp:493 -#, fuzzy -msgid "Auto PICT (Macro)" -msgstr "Paisaje" - -#: src/pentaxmn.cpp:494 -#, fuzzy -msgid "Auto PICT (Sport)" -msgstr "Paisaje" - -#: src/pentaxmn.cpp:497 src/pentaxmn.cpp:507 -#, fuzzy -msgid "Green Mode" -msgstr "Modo de métrica" - -#: src/pentaxmn.cpp:498 src/pentaxmn.cpp:508 -#, fuzzy -msgid "Shutter Speed Priority" -msgstr "Prioridad del obturador" - -#: src/pentaxmn.cpp:499 src/pentaxmn.cpp:509 -#, fuzzy -msgid "Aperture Priority" -msgstr "Prioridad de apertura" - -#: src/pentaxmn.cpp:501 src/pentaxmn.cpp:513 -msgid "Bulb" -msgstr "" - -#: src/pentaxmn.cpp:504 -#, fuzzy -msgid "Hi-speed Program" -msgstr "Modo de exposición" - -#: src/pentaxmn.cpp:505 -#, fuzzy -msgid "DOF Program" -msgstr "Modo de exposición" - -#: src/pentaxmn.cpp:510 -#, fuzzy -msgid "Program Tv Shift" -msgstr "Modo de exposición" - -#: src/pentaxmn.cpp:511 -#, fuzzy -msgid "Program Av Shift" -msgstr "Modo de exposición" - -#: src/pentaxmn.cpp:514 -#, fuzzy -msgid "Aperture Priority (Off-Auto-Aperture)" -msgstr "Prioridad de apertura" - -#: src/pentaxmn.cpp:515 -#, fuzzy -msgid "Manual (Off-Auto-Aperture)" -msgstr "Prioridad de apertura" - -#: src/pentaxmn.cpp:516 -#, fuzzy -msgid "Bulb (Off-Auto-Aperture)" -msgstr "Prioridad de apertura" - -#: src/pentaxmn.cpp:518 -#, fuzzy -msgid "Shutter Priority" -msgstr "Prioridad del obturador" - -#: src/pentaxmn.cpp:519 -#, fuzzy -msgid "Shutter & Aperture Priority AE" -msgstr "Prioridad del obturador" - -#: src/pentaxmn.cpp:520 -#, fuzzy -msgid "Shutter & Aperture Priority AE (1)" -msgstr "Prioridad del obturador" - -#: src/pentaxmn.cpp:521 -#, fuzzy -msgid "Sensitivity Priority AE" -msgstr "Sensibilidad espectral" - -#: src/pentaxmn.cpp:522 -#, fuzzy -msgid "Sensitivity Priority AE (1)" -msgstr "Prioridad del obturador" - -#: src/pentaxmn.cpp:523 -msgid "Flash X-Sync Speed AE" -msgstr "" - -#: src/pentaxmn.cpp:524 -msgid "Flash X-Sync Speed AE (1)" -msgstr "" - -#: src/pentaxmn.cpp:527 -msgid "Video (30 fps)" -msgstr "" - -#: src/pentaxmn.cpp:528 -msgid "Video (24 fps)" -msgstr "" - -#: src/pentaxmn.cpp:535 -#, fuzzy -msgid "Continuous (Hi)" -msgstr "Exposición automática" - -#: src/pentaxmn.cpp:536 src/sonymn.cpp:223 -#, fuzzy -msgid "Burst" -msgstr "Modo de exposición" - -#: src/pentaxmn.cpp:538 -#, fuzzy -msgid "Self-timer (12 sec)" -msgstr "Centímetro" - -#: src/pentaxmn.cpp:539 -#, fuzzy -msgid "Self-timer (2 sec)" -msgstr "Centímetro" - -#: src/pentaxmn.cpp:540 -#, fuzzy -msgid "Remote Control (3 sec)" -msgstr "Espacio de color" - -#: src/pentaxmn.cpp:541 -#, fuzzy -msgid "Remote Control" -msgstr "Espacio de color" - -#: src/pentaxmn.cpp:543 src/properties.cpp:883 -msgid "Video" -msgstr "" - -#: src/pentaxmn.cpp:554 -msgid "M-42 or No Lens" -msgstr "" - -#: src/pentaxmn.cpp:555 -#, fuzzy -msgid "K,M Lens" -msgstr "Ancho de la imagen" - -#: src/pentaxmn.cpp:556 -msgid "A Series Lens" -msgstr "" - -#: src/pentaxmn.cpp:703 -#, fuzzy -msgid "Bright" -msgstr "Copyright" - -#: src/pentaxmn.cpp:706 -msgid "Vibrant" -msgstr "" - -#: src/pentaxmn.cpp:708 -msgid "Reversal film" -msgstr "" - -#: src/pentaxmn.cpp:720 -msgid "Weakest" -msgstr "" - -#: src/pentaxmn.cpp:721 -msgid "Weak" -msgstr "" - -#: src/pentaxmn.cpp:722 -#, fuzzy -msgid "Strong" -msgstr "Saturación" - -#: src/pentaxmn.cpp:832 -#, fuzzy -msgid "No extended bracketing" -msgstr "Balance de blanco" - -#: src/pentaxmn.cpp:838 -msgid "WB-BA" -msgstr "" - -#: src/pentaxmn.cpp:841 -msgid "WB-GM" -msgstr "" - -#: src/pentaxmn.cpp:853 -#, fuzzy -msgid "Unknown " -msgstr "Desconocido" - -#: src/pentaxmn.cpp:866 -#, fuzzy -msgid "Pentax Makernote version" -msgstr "Versión Exif" - -#: src/pentaxmn.cpp:869 -#, fuzzy -msgid "Camera shooting mode" -msgstr "Modo de métrica" - -#: src/pentaxmn.cpp:871 src/pentaxmn.cpp:872 -msgid "Resolution of a preview image" -msgstr "" - -#: src/pentaxmn.cpp:874 -#, fuzzy -msgid "Length of a preview image" -msgstr "Orientación" - -#: src/pentaxmn.cpp:875 -msgid "Size of an IFD containing a preview image" -msgstr "" - -#: src/pentaxmn.cpp:880 -#, fuzzy -msgid "Model identification" -msgstr "Versión Exif" - -#: src/pentaxmn.cpp:881 -#, fuzzy -msgid "Pentax model idenfication" -msgstr "Versión Exif" - -#: src/pentaxmn.cpp:883 src/pentaxmn.cpp:884 src/properties.cpp:150 -#, fuzzy -msgid "Date" -msgstr "Fecha y hora" - -#: src/pentaxmn.cpp:886 src/pentaxmn.cpp:887 -#, fuzzy -msgid "Time" -msgstr "Orden de llenado" - -#: src/pentaxmn.cpp:890 -#, fuzzy -msgid "Image quality settings" -msgstr "Ancho de la imagen" - -#: src/pentaxmn.cpp:893 -#, fuzzy -msgid "Image size settings" -msgstr "Ancho de la imagen" - -#: src/pentaxmn.cpp:897 -#, fuzzy -msgid "Flash mode settings" -msgstr "Contraste" - -#: src/pentaxmn.cpp:900 -#, fuzzy -msgid "Focus mode settings" -msgstr "Modo de exposición" - -#: src/pentaxmn.cpp:903 -#, fuzzy -msgid "Selected AF point" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/pentaxmn.cpp:905 src/pentaxmn.cpp:906 -#, fuzzy -msgid "AF point in focus" -msgstr "Punto blanco" - -#: src/pentaxmn.cpp:912 src/pentaxmn.cpp:913 -#, fuzzy -msgid "F-Number" -msgstr "El número F." - -#: src/pentaxmn.cpp:915 -#, fuzzy -msgid "ISO sensitivity" -msgstr "Sensibilidad espectral" - -#: src/pentaxmn.cpp:916 -#, fuzzy -msgid "ISO sensitivity settings" -msgstr "Velocidad ISO" - -#: src/pentaxmn.cpp:923 src/pentaxmn.cpp:924 -#, fuzzy -msgid "MeteringMode" -msgstr "Modo de métrica" - -#: src/pentaxmn.cpp:926 src/pentaxmn.cpp:927 -#, fuzzy -msgid "AutoBracketing" -msgstr "Auto bracket" - -#: src/pentaxmn.cpp:929 src/pentaxmn.cpp:930 -#, fuzzy -msgid "White ballance" -msgstr "Balance de blanco" - -#: src/pentaxmn.cpp:932 src/pentaxmn.cpp:933 -#, fuzzy -msgid "White ballance mode" -msgstr "Balance de blanco" - -#: src/pentaxmn.cpp:936 -#, fuzzy -msgid "Blue color balance" -msgstr "Balance de blanco" - -#: src/pentaxmn.cpp:939 -#, fuzzy -msgid "Red color balance" -msgstr "Espacio de color" - -#: src/pentaxmn.cpp:941 src/pentaxmn.cpp:942 -#, fuzzy -msgid "FocalLength" -msgstr "Distancia focal" - -#: src/pentaxmn.cpp:956 src/pentaxmn.cpp:957 src/properties.cpp:657 -#, fuzzy -msgid "Location" -msgstr "Ubicación del sujeto" - -#: src/pentaxmn.cpp:959 -#, fuzzy -msgid "Hometown" -msgstr "Normal" - -#: src/pentaxmn.cpp:965 -msgid "Hometown DST" -msgstr "" - -#: src/pentaxmn.cpp:966 -msgid "Whether day saving time is active in home town" -msgstr "" - -#: src/pentaxmn.cpp:968 -#, fuzzy -msgid "Destination DST" -msgstr "Orientación" - -#: src/pentaxmn.cpp:969 -msgid "Whether day saving time is active in destination" -msgstr "" - -#: src/pentaxmn.cpp:971 src/pentaxmn.cpp:972 -#, fuzzy -msgid "DSPFirmwareVersion" -msgstr "Versión Exif" - -#: src/pentaxmn.cpp:974 src/pentaxmn.cpp:975 -#, fuzzy -msgid "CPUFirmwareVersion" -msgstr "Versión Exif" - -#: src/pentaxmn.cpp:981 -#, fuzzy -msgid "Light value" -msgstr "Brillo" - -#: src/pentaxmn.cpp:982 -msgid "Camera calculated light value, includes exposure compensation" -msgstr "" - -#: src/pentaxmn.cpp:998 src/pentaxmn.cpp:999 -#, fuzzy -msgid "Image area offset" -msgstr "Ancho de la imagen" - -#: src/pentaxmn.cpp:1001 src/pentaxmn.cpp:1002 -#, fuzzy -msgid "Raw image size" -msgstr "Ancho de la imagen" - -#: src/pentaxmn.cpp:1005 src/pentaxmn.cpp:1006 -#, fuzzy -msgid "Preview image borders" -msgstr "Orientación" - -#: src/pentaxmn.cpp:1011 src/pentaxmn.cpp:1012 -#, fuzzy -msgid "Sensitivity adjust" -msgstr "Sensibilidad espectral" - -#: src/pentaxmn.cpp:1014 src/pentaxmn.cpp:1015 -#, fuzzy -msgid "Digital filter" -msgstr "Relación de zoom digital" - -#: src/pentaxmn.cpp:1019 -#, fuzzy -msgid "Camera temperature" -msgstr "Espacio de color" - -#: src/pentaxmn.cpp:1032 src/pentaxmn.cpp:1033 -#, fuzzy -msgid "Image tone" -msgstr "Ancho de la imagen" - -#: src/pentaxmn.cpp:1035 src/pentaxmn.cpp:1036 -#, fuzzy -msgid "Colort temperature" -msgstr "Espacio de color" - -#: src/pentaxmn.cpp:1039 -#, fuzzy -msgid "Shake reduction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/pentaxmn.cpp:1040 -#, fuzzy -msgid "Shake reduction information" -msgstr "Contraste" - -#: src/pentaxmn.cpp:1045 src/pentaxmn.cpp:1046 -#, fuzzy -msgid "Dynamic range expansion" -msgstr "Balance de blanco" - -#: src/pentaxmn.cpp:1048 src/pentaxmn.cpp:1049 -#, fuzzy -msgid "High ISO noise reduction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/pentaxmn.cpp:1051 src/pentaxmn.cpp:1052 -#, fuzzy -msgid "AF Adjustment" -msgstr "Longitud de la imagen" - -#: src/pentaxmn.cpp:1055 src/pentaxmn.cpp:1056 -#, fuzzy -msgid "Black point" -msgstr "Punto blanco" - -#: src/pentaxmn.cpp:1058 src/pentaxmn.cpp:1059 -#, fuzzy -msgid "White point" -msgstr "Punto blanco" - -#: src/pentaxmn.cpp:1062 src/pentaxmn.cpp:1063 -#, fuzzy -msgid "ShotInfo" -msgstr "Modo de exposición" - -#: src/pentaxmn.cpp:1065 src/pentaxmn.cpp:1066 -#, fuzzy -msgid "AEInfo" -msgstr "Modo de exposición" - -#: src/pentaxmn.cpp:1068 src/pentaxmn.cpp:1069 -#, fuzzy -msgid "LensInfo" -msgstr "Ancho de la imagen" - -#: src/pentaxmn.cpp:1071 src/pentaxmn.cpp:1072 -#, fuzzy -msgid "FlashInfo" -msgstr "Flash" - -#: src/pentaxmn.cpp:1074 src/pentaxmn.cpp:1075 -#, fuzzy -msgid "AEMeteringSegments" -msgstr "Modo de métrica" - -#: src/pentaxmn.cpp:1077 src/pentaxmn.cpp:1078 -#, fuzzy -msgid "FlashADump" -msgstr "Flash" - -#: src/pentaxmn.cpp:1080 src/pentaxmn.cpp:1081 -#, fuzzy -msgid "FlashBDump" -msgstr "Flash" - -#: src/pentaxmn.cpp:1084 src/pentaxmn.cpp:1085 -#, fuzzy -msgid "WB_RGGBLevelsDaylight" -msgstr "Fluorescente" - -#: src/pentaxmn.cpp:1087 src/pentaxmn.cpp:1088 -#, fuzzy -msgid "WB_RGGBLevelsShade" -msgstr "Nivel de la batería" - -#: src/pentaxmn.cpp:1090 src/pentaxmn.cpp:1091 -#, fuzzy -msgid "WB_RGGBLevelsCloudy" -msgstr "Nivel de la batería" - -#: src/pentaxmn.cpp:1093 src/pentaxmn.cpp:1094 -#, fuzzy -msgid "WB_RGGBLevelsTungsten" -msgstr "Nivel de la batería" - -#: src/pentaxmn.cpp:1096 src/pentaxmn.cpp:1097 -#, fuzzy -msgid "WB_RGGBLevelsFluorescentD" -msgstr "Fluorescente" - -#: src/pentaxmn.cpp:1099 src/pentaxmn.cpp:1100 -#, fuzzy -msgid "WB_RGGBLevelsFluorescentN" -msgstr "Fluorescente" - -#: src/pentaxmn.cpp:1102 src/pentaxmn.cpp:1103 -#, fuzzy -msgid "WB_RGGBLevelsFluorescentW" -msgstr "Fluorescente" - -#: src/pentaxmn.cpp:1105 src/pentaxmn.cpp:1106 -#, fuzzy -msgid "WB_RGGBLevelsFlash" -msgstr "Nivel de la batería" - -#: src/pentaxmn.cpp:1108 src/pentaxmn.cpp:1109 -#, fuzzy -msgid "CameraInfo" -msgstr "Retrato" - -#: src/pentaxmn.cpp:1111 src/pentaxmn.cpp:1112 -#, fuzzy -msgid "BatteryInfo" -msgstr "Patrón" - -#: src/pentaxmn.cpp:1114 src/pentaxmn.cpp:1115 -#, fuzzy -msgid "AFInfo" -msgstr "Modo de exposición" - -#: src/pentaxmn.cpp:1117 src/pentaxmn.cpp:1118 -#, fuzzy -msgid "ColorInfo" -msgstr "Espacio de color" - -#: src/pentaxmn.cpp:1125 -#, fuzzy -msgid "Unknown PentaxMakerNote tag" -msgstr "Versión Exif" - -#: src/properties.cpp:102 -msgid "Dublin Core schema" -msgstr "" - -#: src/properties.cpp:103 -msgid "digiKam Photo Management schema" -msgstr "" - -#: src/properties.cpp:104 -msgid "KDE Image Program Interface schema" -msgstr "" - -#: src/properties.cpp:105 -#, fuzzy -msgid "XMP Basic schema" -msgstr "formato planar" - -#: src/properties.cpp:106 -msgid "XMP Rights Management schema" -msgstr "" - -#: src/properties.cpp:107 -#, fuzzy -msgid "XMP Media Management schema" -msgstr "formato planar" - -#: src/properties.cpp:108 -#, fuzzy -msgid "XMP Basic Job Ticket schema" -msgstr "formato planar" - -#: src/properties.cpp:109 -#, fuzzy -msgid "XMP Paged-Text schema" -msgstr "formato planar" - -#: src/properties.cpp:110 -#, fuzzy -msgid "XMP Dynamic Media schema" -msgstr "formato planar" - -#: src/properties.cpp:111 -msgid "Microsoft Photo schema" -msgstr "" - -#: src/properties.cpp:112 -msgid "Adobe PDF schema" -msgstr "" - -#: src/properties.cpp:113 -msgid "Adobe photoshop schema" -msgstr "" - -#: src/properties.cpp:114 -#, fuzzy -msgid "Camera Raw schema" -msgstr "Contraste" - -#: src/properties.cpp:115 -msgid "Exif Schema for TIFF Properties" -msgstr "" - -#: src/properties.cpp:116 -msgid "Exif schema for Exif-specific Properties" -msgstr "" - -#: src/properties.cpp:117 -msgid "Exif schema for Additional Exif Properties" -msgstr "" - -#: src/properties.cpp:118 src/properties.cpp:119 -msgid "IPTC Core schema" -msgstr "" - -#: src/properties.cpp:120 src/properties.cpp:121 -msgid "IPTC Extension schema" -msgstr "" - -#: src/properties.cpp:122 -msgid "PLUS License Data Format schema" -msgstr "" - -#: src/properties.cpp:123 -#, fuzzy -msgid "iView Media Pro schema" -msgstr "formato planar" - -#: src/properties.cpp:124 -msgid "Expression Media schema" -msgstr "" - -#: src/properties.cpp:125 -msgid "Microsoft Photo 1.2 schema" -msgstr "" - -#: src/properties.cpp:126 -msgid "Microsoft Photo RegionInfo schema" -msgstr "" - -#: src/properties.cpp:127 -msgid "Microsoft Photo Region schema" -msgstr "" - -#: src/properties.cpp:128 -msgid "Metadata Working Group Regions schema" -msgstr "" - -#: src/properties.cpp:131 -#, fuzzy -msgid "Colorant structure" -msgstr "Espacio de color" - -#: src/properties.cpp:132 -#, fuzzy -msgid "Dimensions structure" -msgstr "Desplazamiento de tira" - -#: src/properties.cpp:133 -#, fuzzy -msgid "Font structure" -msgstr "Espacio de color" - -#: src/properties.cpp:134 -#, fuzzy -msgid "Thumbnail structure" -msgstr "Desplazamiento de tira" - -#: src/properties.cpp:135 -#, fuzzy -msgid "Resource Event structure" -msgstr "Espacio de color" - -#: src/properties.cpp:136 -#, fuzzy -msgid "ResourceRef structure" -msgstr "Espacio de color" - -#: src/properties.cpp:137 -#, fuzzy -msgid "Version structure" -msgstr "Espacio de color" - -#: src/properties.cpp:138 -msgid "Basic Job/Workflow structure" -msgstr "" - -#: src/properties.cpp:139 -#, fuzzy -msgid "Area structure" -msgstr "Espacio de color" - -#: src/properties.cpp:142 -msgid "Qualifier for xmp:Identifier" -msgstr "" - -#: src/properties.cpp:146 -#, fuzzy -msgid "Contributor" -msgstr "Contraste" - -#: src/properties.cpp:146 -msgid "Contributors to the resource (other than the authors)." -msgstr "" - -#: src/properties.cpp:147 -#, fuzzy -msgid "Coverage" -msgstr "Promedio" - -#: src/properties.cpp:147 -msgid "" -"The spatial or temporal topic of the resource, the spatial applicability of " -"the resource, or the jurisdiction under which the resource is relevant." -msgstr "" - -#: src/properties.cpp:149 -#, fuzzy -msgid "Creator" -msgstr "Centímetro" - -#: src/properties.cpp:149 -msgid "" -"The authors of the resource (listed in order of precedence, if significant)." -msgstr "" - -#: src/properties.cpp:150 -msgid "Date(s) that something interesting happened to the resource." -msgstr "" - -#: src/properties.cpp:151 -msgid "" -"A textual description of the content of the resource. Multiple values may be " -"present for different languages." -msgstr "" - -#: src/properties.cpp:153 -#, fuzzy -msgid "Format" -msgstr "Fuente de archivo" - -#: src/properties.cpp:153 -msgid "" -"The file format used when saving the resource. Tools and applications should " -"set this property to the save format of the data. It may include appropriate " -"qualifiers." -msgstr "" - -#: src/properties.cpp:155 src/properties.cpp:210 -#, fuzzy -msgid "Identifier" -msgstr "Centímetro" - -#: src/properties.cpp:155 -msgid "" -"Unique identifier of the resource. Recommended best practice is to identify " -"the resource by means of a string conforming to a formal identification " -"system." -msgstr "" - -#: src/properties.cpp:157 -msgid "An unordered array specifying the languages used in the resource." -msgstr "" - -#: src/properties.cpp:158 -msgid "Publisher" -msgstr "" - -#: src/properties.cpp:158 -msgid "" -"An entity responsible for making the resource available. Examples of a " -"Publisher include a person, an organization, or a service. Typically, the " -"name of a Publisher should be used to indicate the entity." -msgstr "" - -#: src/properties.cpp:161 -#, fuzzy -msgid "Relation" -msgstr "acción" - -#: src/properties.cpp:161 -msgid "" -"Relationships to other documents. Recommended best practice is to identify " -"the related resource by means of a string conforming to a formal " -"identification system." -msgstr "" - -#: src/properties.cpp:163 -#, fuzzy -msgid "Rights" -msgstr "Escena nocturna" - -#: src/properties.cpp:163 -msgid "" -"Informal rights statement, selected by language. Typically, rights " -"information includes a statement about various property rights associated " -"with the resource, including intellectual property rights." -msgstr "" - -#: src/properties.cpp:166 -msgid "Unique identifier of the work from which this resource was derived." -msgstr "" - -#: src/properties.cpp:167 -msgid "" -"An unordered array of descriptive phrases or keywords that specify the topic " -"of the content of the resource." -msgstr "" - -#: src/properties.cpp:169 -#, fuzzy -msgid "Title" -msgstr "Orden de llenado" - -#: src/properties.cpp:169 -msgid "" -"The title of the document, or the name given to the resource. Typically, it " -"will be a name by which the resource is formally known." -msgstr "" - -#: src/properties.cpp:171 src/properties.cpp:979 -#, fuzzy -msgid "Type" -msgstr "Escena nocturna" - -#: src/properties.cpp:171 -msgid "A document type; for example, novel, poem, or working paper." -msgstr "" - -#: src/properties.cpp:177 -msgid "Tags List" -msgstr "" - -#: src/properties.cpp:177 -msgid "" -"The list of complete tags path as string. The path hierarchy is separated by " -"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." -msgstr "" - -#: src/properties.cpp:178 -#, fuzzy -msgid "Captions Author Names" -msgstr "Nombre del documento" - -#: src/properties.cpp:178 -msgid "" -"The list of all captions author names for each language alternative captions " -"set in standard XMP tags." -msgstr "" - -#: src/properties.cpp:179 -#, fuzzy -msgid "Captions Date Time Stamps" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:179 -msgid "" -"The list of all captions date time stamps for each language alternative " -"captions set in standard XMP tags." -msgstr "" - -#: src/properties.cpp:180 src/tags.cpp:837 -#, fuzzy -msgid "Image History" -msgstr "Longitud de la imagen" - -#: src/properties.cpp:180 -msgid "" -"An XML based content to list all action processed on this image with image " -"editor (as crop, rotate, color corrections, adjustements, etc.)." -msgstr "" - -#: src/properties.cpp:181 -#, fuzzy -msgid "Lens Correction Settings" -msgstr "Contraste" - -#: src/properties.cpp:181 -msgid "" -"The list of Lens Correction tools settings used to fix lens distorsion. This " -"include Batch Queue Manager and Image editor tools based on LensFun library." -msgstr "" - -#: src/properties.cpp:182 -#, fuzzy -msgid "Color Label" -msgstr "Espacio de color" - -#: src/properties.cpp:182 -msgid "" -"The color label assigned to this item. Possible values are \"0\": no label; " -"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " -"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." -msgstr "" - -#: src/properties.cpp:183 -#, fuzzy -msgid "Pick Label" -msgstr "promedio" - -#: src/properties.cpp:183 -msgid "" -"The pick label assigned to this item. Possible values are \"0\": no label; " -"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " -"accepted." -msgstr "" - -#: src/properties.cpp:189 -msgid "Enfuse Input Files" -msgstr "" - -#: src/properties.cpp:189 -msgid "" -"The list of files processed with Enfuse program through ExpoBlending tool." -msgstr "" - -#: src/properties.cpp:190 -#, fuzzy -msgid "Enfuse Settings" -msgstr "Contraste" - -#: src/properties.cpp:190 -msgid "" -"The list of Enfuse settings used to blend image stack with ExpoBlending tool." -msgstr "" - -#: src/properties.cpp:191 -msgid "PicasaWeb Item ID" -msgstr "" - -#: src/properties.cpp:191 -msgid "Item ID from PicasaWeb web service." -msgstr "" - -#: src/properties.cpp:192 -msgid "Yandex Fotki Item ID" -msgstr "" - -#: src/properties.cpp:192 -msgid "Item ID from Yandex Fotki web service." -msgstr "" - -#: src/properties.cpp:198 -#, fuzzy -msgid "Advisory" -msgstr "acción" - -#: src/properties.cpp:198 -msgid "" -"An unordered array specifying properties that were edited outside the " -"authoring application. Each item should contain a single namespace and XPath " -"separated by one ASCII space (U+0020)." -msgstr "" - -#: src/properties.cpp:201 -msgid "Base URL" -msgstr "" - -#: src/properties.cpp:201 -msgid "" -"The base URL for relative URLs in the document content. If this document " -"contains Internet links, and those links are relative, they are relative to " -"this base URL. This property provides a standard way for embedded relative " -"URLs to be interpreted by tools. Web authoring tools should set the value " -"based on their notion of where URLs will be interpreted." -msgstr "" - -#: src/properties.cpp:206 -#, fuzzy -msgid "Create Date" -msgstr "Tipo de captura de escena" - -#: src/properties.cpp:206 -#, fuzzy -msgid "The date and time the resource was originally created." -msgstr "" -"La fehca y hora cuando se almacenó la imagen en forma de datos digitales." - -#: src/properties.cpp:207 -#, fuzzy -msgid "Creator Tool" -msgstr "Centímetro" - -#: src/properties.cpp:207 -msgid "" -"The name of the first known tool used to create the resource. If history is " -"present in the metadata, this value should be equivalent to that of xmpMM:" -"History's softwareAgent property." -msgstr "" - -#: src/properties.cpp:210 -msgid "" -"An unordered array of text strings that unambiguously identify the resource " -"within a given context. An array item may be qualified with xmpidq:Scheme to " -"denote the formal identification system to which that identifier conforms. " -"Note: The dc:identifier property is not used because it lacks a defined " -"scheme qualifier and has been defined in the XMP Specification as a simple " -"(single-valued) property." -msgstr "" - -#: src/properties.cpp:215 -#, fuzzy -msgid "Label" -msgstr "promedio" - -#: src/properties.cpp:215 -msgid "" -"A word or short phrase that identifies a document as a member of a user-" -"defined collection. Used to organize documents in a file browser." -msgstr "" - -#: src/properties.cpp:217 -#, fuzzy -msgid "Metadata Date" -msgstr "Tipo de captura de escena" - -#: src/properties.cpp:217 -msgid "" -"The date and time that any metadata for this resource was last changed. It " -"should be the same as or more recent than xmp:ModifyDate." -msgstr "" - -#: src/properties.cpp:219 -#, fuzzy -msgid "Modify Date" -msgstr "Orden de llenado" - -#: src/properties.cpp:219 -msgid "" -"The date and time the resource was last modified. Note: The value of this " -"property is not necessarily the same as the file's system modification date " -"because it is set before the file is saved." -msgstr "" - -#: src/properties.cpp:222 -#, fuzzy -msgid "Nickname" -msgstr "Nombre del documento" - -#: src/properties.cpp:222 -msgid "A short informal name for the resource." -msgstr "" - -#: src/properties.cpp:223 -#, fuzzy -msgid "Rating" -msgstr "acción" - -#: src/properties.cpp:223 -msgid "" -"A number that indicates a document's status relative to other documents, " -"used to organize documents in a file browser. Values are user-defined within " -"an application-defined range." -msgstr "" - -#: src/properties.cpp:226 -#, fuzzy -msgid "Thumbnails" -msgstr "Desplazamiento de tira" - -#: src/properties.cpp:226 -msgid "" -"An alternative array of thumbnail images for a file, which can differ in " -"characteristics such as size or image encoding." -msgstr "" - -#: src/properties.cpp:233 -msgid "Certificate" -msgstr "" - -#: src/properties.cpp:233 -msgid "Online rights management certificate." -msgstr "" - -#: src/properties.cpp:234 -#, fuzzy -msgid "Marked" -msgstr "Duro" - -#: src/properties.cpp:234 -msgid "Indicates that this is a rights-managed resource." -msgstr "" - -#: src/properties.cpp:235 -#, fuzzy -msgid "Owner" -msgstr "Nombre del documento" - -#: src/properties.cpp:235 -msgid "An unordered array specifying the legal owner(s) of a resource." -msgstr "" - -#: src/properties.cpp:236 -msgid "Usage Terms" -msgstr "" - -#: src/properties.cpp:236 -msgid "Text instructions on how a resource can be legally used." -msgstr "" - -#: src/properties.cpp:237 -#, fuzzy -msgid "Web Statement" -msgstr "multi-lugar" - -#: src/properties.cpp:237 -msgid "" -"The location of a web page describing the owner and/or rights statement for " -"this resource." -msgstr "" - -#: src/properties.cpp:243 -#, fuzzy -msgid "Derived From" -msgstr "Modo de métrica" - -#: src/properties.cpp:243 -msgid "" -"A reference to the original document from which this one is derived. It is a " -"minimal reference; missing components can be assumed to be unchanged. For " -"example, a new version might only need to specify the instance ID and " -"version number of the previous version, or a rendition might only need to " -"specify the instance ID and rendition class of the original." -msgstr "" - -#: src/properties.cpp:248 -#, fuzzy -msgid "Document ID" -msgstr "Nombre del documento" - -#: src/properties.cpp:248 -msgid "" -"The common identifier for all versions and renditions of a document. It " -"should be based on a UUID; see Document and Instance IDs below." -msgstr "" - -#: src/properties.cpp:250 -#, fuzzy -msgid "History" -msgstr "Longitud de la imagen" - -#: src/properties.cpp:250 -msgid "" -"An ordered array of high-level user actions that resulted in this resource. " -"It is intended to give human readers a general indication of the steps taken " -"to make the changes from the previous version to this one. The list should " -"be at an abstract level; it is not intended to be an exhaustive keystroke or " -"other detailed history." -msgstr "" - -#: src/properties.cpp:254 -#, fuzzy -msgid "Instance ID" -msgstr "centrado" - -#: src/properties.cpp:254 -msgid "" -"An identifier for a specific incarnation of a document, updated each time a " -"file is saved. It should be based on a UUID; see Document and Instance IDs " -"below." -msgstr "" - -#: src/properties.cpp:256 -#, fuzzy -msgid "Managed From" -msgstr "Fabricante" - -#: src/properties.cpp:256 -msgid "" -"A reference to the document as it was prior to becoming managed. It is set " -"when a managed document is introduced to an asset management system that " -"does not currently own it. It may or may not include references to different " -"management systems." -msgstr "" - -#: src/properties.cpp:259 -#, fuzzy -msgid "Manager" -msgstr "Fabricante" - -#: src/properties.cpp:259 -msgid "" -"The name of the asset management system that manages this resource. Along " -"with xmpMM: ManagerVariant, it tells applications which asset management " -"system to contact concerning this document." -msgstr "" - -#: src/properties.cpp:262 -#, fuzzy -msgid "Manage To" -msgstr "Fabricante" - -#: src/properties.cpp:262 -msgid "" -"A URI identifying the managed resource to the asset management system; the " -"presence of this property is the formal indication that this resource is " -"managed. The form and content of this URI is private to the asset management " -"system." -msgstr "" - -#: src/properties.cpp:265 -#, fuzzy -msgid "Manage UI" -msgstr "Fabricante" - -#: src/properties.cpp:265 -msgid "" -"A URI that can be used to access information about the managed resource " -"through a web browser. It might require a custom browser plug-in." -msgstr "" - -#: src/properties.cpp:267 -#, fuzzy -msgid "Manager Variant" -msgstr "Fabricante" - -#: src/properties.cpp:267 -msgid "" -"Specifies a particular variant of the asset management system. The format of " -"this property is private to the specific asset management system." -msgstr "" - -#: src/properties.cpp:269 -msgid "Rendition Class" -msgstr "" - -#: src/properties.cpp:269 -msgid "" -"The rendition class name for this resource. This property should be absent " -"or set to default for a document version that is not a derived rendition." -msgstr "" - -#: src/properties.cpp:271 -msgid "Rendition Params" -msgstr "" - -#: src/properties.cpp:271 -msgid "" -"Can be used to provide additional rendition parameters that are too complex " -"or verbose to encode in xmpMM: RenditionClass." -msgstr "" - -#: src/properties.cpp:273 -#, fuzzy -msgid "Version ID" -msgstr "Versión Exif" - -#: src/properties.cpp:273 -msgid "" -"The document version identifier for this resource. Each version of a " -"document gets a new identifier, usually simply by incrementing integers 1, " -"2, 3 . . . and so on. Media management systems can have other conventions or " -"support branching which requires a more complex scheme." -msgstr "" - -#: src/properties.cpp:277 -#, fuzzy -msgid "Versions" -msgstr "Versión Exif" - -#: src/properties.cpp:277 -msgid "" -"The version history associated with this resource. Entry [1] is the oldest " -"known version for this document, entry [last()] is the most recent version. " -"Typically, a media management system would fill in the version information " -"in the metadata on check-in. It is not guaranteed that a complete history " -"versions from the first to this one will be present in the xmpMM:Versions " -"property. Interior version information can be compressed or eliminated and " -"the version history can be truncated at some point." -msgstr "" - -#: src/properties.cpp:283 -msgid "Last URL" -msgstr "" - -#: src/properties.cpp:283 -msgid "Deprecated for privacy protection." -msgstr "" - -#: src/properties.cpp:284 -#, fuzzy -msgid "Rendition Of" -msgstr "acción" - -#: src/properties.cpp:284 -msgid "" -"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " -"which this is a rendition." -msgstr "" - -#: src/properties.cpp:286 -msgid "Save ID" -msgstr "" - -#: src/properties.cpp:286 -msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." -msgstr "" - -#: src/properties.cpp:292 -#, fuzzy -msgid "Job Reference" -msgstr "Referencia Blanco/Negro" - -#: src/properties.cpp:292 -msgid "" -"References an external job management file for a job process in which the " -"document is being used. Use of job names is under user control. Typical use " -"would be to identify all documents that are part of a particular job or " -"contract. There are multiple values because there can be more than one job " -"using a particular document at any time, and it can also be useful to keep " -"historical information about what jobs a document was part of previously." -msgstr "" - -#: src/properties.cpp:301 -#, fuzzy -msgid "Maximum Page Size" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:301 -msgid "" -"The size of the largest page in the document (including any in contained " -"documents)." -msgstr "" - -#: src/properties.cpp:302 -#, fuzzy -msgid "Number of Pages" -msgstr "El número F." - -#: src/properties.cpp:302 -msgid "" -"The number of pages in the document (including any in contained documents)." -msgstr "" - -#: src/properties.cpp:303 -#, fuzzy -msgid "Fonts" -msgstr "Punto blanco" - -#: src/properties.cpp:303 -msgid "" -"An unordered array of fonts that are used in the document (including any in " -"contained documents)." -msgstr "" - -#: src/properties.cpp:304 -#, fuzzy -msgid "Colorants" -msgstr "Espacio de color" - -#: src/properties.cpp:304 -msgid "" -"An ordered array of colorants (swatches) that are used in the document " -"(including any in contained documents)." -msgstr "" - -#: src/properties.cpp:305 -#, fuzzy -msgid "Plate Names" -msgstr "Nombre del documento" - -#: src/properties.cpp:305 -msgid "" -"An ordered array of plate names that are needed to print the document " -"(including any in contained documents)." -msgstr "" - -#: src/properties.cpp:311 -#, fuzzy -msgid "Project Reference" -msgstr "Referencia Blanco/Negro" - -#: src/properties.cpp:311 -msgid "A reference to the project that created this file." -msgstr "" - -#: src/properties.cpp:312 -#, fuzzy -msgid "Video Frame Rate" -msgstr "Orden de llenado" - -#: src/properties.cpp:312 -msgid "The video frame rate. One of: 24, NTSC, PAL." -msgstr "" - -#: src/properties.cpp:313 -#, fuzzy -msgid "Video Frame Size" -msgstr "Espacio de color" - -#: src/properties.cpp:313 -msgid "The frame size. For example: w:720, h: 480, unit:pixels" -msgstr "" - -#: src/properties.cpp:314 -msgid "Video Pixel Aspect Ratio" -msgstr "" - -#: src/properties.cpp:314 -msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" -msgstr "" - -#: src/properties.cpp:315 -#, fuzzy -msgid "Video Pixel Depth" -msgstr "Orden de llenado" - -#: src/properties.cpp:315 -msgid "" -"The size in bits of each color component of a pixel. Standard Windows 32-bit " -"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." -msgstr "" - -#: src/properties.cpp:317 -#, fuzzy -msgid "Video Color Space" -msgstr "Espacio de color" - -#: src/properties.cpp:317 -msgid "" -"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " -"CCIR-709 (used for HD)." -msgstr "" - -#: src/properties.cpp:319 -#, fuzzy -msgid "Video Alpha Mode" -msgstr "Modo de métrica" - -#: src/properties.cpp:319 -msgid "The alpha mode. One of: straight, pre-multiplied." -msgstr "" - -#: src/properties.cpp:320 -msgid "Video Alpha Premultiple Color" -msgstr "" - -#: src/properties.cpp:320 -msgid "" -"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " -"is pre-multiplied." -msgstr "" - -#: src/properties.cpp:322 -msgid "Video Alpha Unity Is Transparent" -msgstr "" - -#: src/properties.cpp:322 -msgid "When true, unity is clear, when false, it is opaque." -msgstr "" - -#: src/properties.cpp:323 -#, fuzzy -msgid "Video Compressor" -msgstr "Compresión" - -#: src/properties.cpp:323 -msgid "Video compression used. For example, jpeg." -msgstr "" - -#: src/properties.cpp:324 -#, fuzzy -msgid "Video Field Order" -msgstr "Orden de llenado" - -#: src/properties.cpp:324 -msgid "The field order for video. One of: Upper, Lower, Progressive." -msgstr "" - -#: src/properties.cpp:325 -msgid "Pull Down" -msgstr "" - -#: src/properties.cpp:325 -msgid "" -"The sampling phase of film to be converted to video (pull-down). One of: " -"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " -"WWWSS_24p, WWSSW_24p." -msgstr "" - -#: src/properties.cpp:327 -msgid "Audio Sample Rate" -msgstr "" - -#: src/properties.cpp:327 -msgid "" -"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." -msgstr "" - -#: src/properties.cpp:328 -#, fuzzy -msgid "Audio Sample Type" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:328 -msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." -msgstr "" - -#: src/properties.cpp:329 -msgid "Audio Channel Type" -msgstr "" - -#: src/properties.cpp:329 -msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." -msgstr "" - -#: src/properties.cpp:330 -#, fuzzy -msgid "Audio Compressor" -msgstr "Compresión" - -#: src/properties.cpp:330 -msgid "The audio compression used. For example, MP3." -msgstr "" - -#: src/properties.cpp:331 -msgid "Speaker Placement" -msgstr "" - -#: src/properties.cpp:331 -msgid "" -"A description of the speaker angles from center front in degrees. For " -"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " -"-110, Right Surround = 110\"" -msgstr "" - -#: src/properties.cpp:333 -#, fuzzy -msgid "File Data Rate" -msgstr "Nombre del documento" - -#: src/properties.cpp:333 -msgid "" -"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" -"sec" -msgstr "" - -#: src/properties.cpp:334 -#, fuzzy -msgid "Tape Name" -msgstr "Nombre del documento" - -#: src/properties.cpp:334 -msgid "" -"The name of the tape from which the clip was captured, as set during the " -"capture process." -msgstr "" - -#: src/properties.cpp:335 -#, fuzzy -msgid "Alternative Tape Name" -msgstr "Nombre del documento" - -#: src/properties.cpp:335 -msgid "" -"An alternative tape name, set via the project window or timecode dialog in " -"Premiere. If an alternative name has been set and has not been reverted, " -"that name is displayed." -msgstr "" - -#: src/properties.cpp:337 -#, fuzzy -msgid "Start Time Code" -msgstr "Flash" - -#: src/properties.cpp:337 -msgid "" -"The timecode of the first frame of video in the file, as obtained from the " -"device control." -msgstr "" - -#: src/properties.cpp:338 -#, fuzzy -msgid "Alternative Time code" -msgstr "Flash" - -#: src/properties.cpp:338 -msgid "" -"A timecode set by the user. When specified, it is used instead of the " -"startTimecode." -msgstr "" - -#: src/properties.cpp:339 -#, fuzzy -msgid "Duration" -msgstr "Saturación" - -#: src/properties.cpp:339 -#, fuzzy -msgid "The duration of the media file." -msgstr "El tipo de fuente de luz." - -#: src/properties.cpp:340 -#, fuzzy -msgid "Scene" -msgstr "centrado" - -#: src/properties.cpp:340 -#, fuzzy -msgid "The name of the scene." -msgstr "El tipo de fuente de luz." - -#: src/properties.cpp:341 -#, fuzzy -msgid "Shot Name" -msgstr "Nombre del documento" - -#: src/properties.cpp:341 -#, fuzzy -msgid "The name of the shot or take." -msgstr "El tipo de fuente de luz." - -#: src/properties.cpp:342 -#, fuzzy -msgid "Shot Date" -msgstr "Fecha y hora" - -#: src/properties.cpp:342 -#, fuzzy -msgid "The date and time when the video was shot." -msgstr "" -"La fehca y hora cuando se almacenó la imagen en forma de datos digitales." - -#: src/properties.cpp:343 -#, fuzzy -msgid "Shot Location" -msgstr "Ubicación del sujeto" - -#: src/properties.cpp:343 -msgid "" -"The name of the location where the video was shot. For example: " -"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " -"GPS values." -msgstr "" - -#: src/properties.cpp:345 -#, fuzzy -msgid "Log Comment" -msgstr "Comentario del usuario" - -#: src/properties.cpp:345 -#, fuzzy -msgid "User's log comments." -msgstr "Comentario del usuario" - -#: src/properties.cpp:346 -#, fuzzy -msgid "Markers" -msgstr "Duro" - -#: src/properties.cpp:346 -msgid "An ordered list of markers" -msgstr "" - -#: src/properties.cpp:347 -#, fuzzy -msgid "Contributed Media" -msgstr "Contraste" - -#: src/properties.cpp:347 -msgid "An unordered list of all media used to create this media." -msgstr "" - -#: src/properties.cpp:348 -msgid "Absolute Peak Audio File Path" -msgstr "" - -#: src/properties.cpp:348 -msgid "" -"The absolute path to the file's peak audio file. If empty, no peak file " -"exists." -msgstr "" - -#: src/properties.cpp:349 -msgid "Relative Peak Audio File Path" -msgstr "" - -#: src/properties.cpp:349 -msgid "" -"The relative path to the file's peak audio file. If empty, no peak file " -"exists." -msgstr "" - -#: src/properties.cpp:350 -#, fuzzy -msgid "Video Modified Date" -msgstr "Orden de llenado" - -#: src/properties.cpp:350 -#, fuzzy -msgid "The date and time when the video was last modified." -msgstr "" -"La fehca y hora cuando se almacenó la imagen en forma de datos digitales." - -#: src/properties.cpp:351 -#, fuzzy -msgid "Audio Modified Date" -msgstr "Orden de llenado" - -#: src/properties.cpp:351 -#, fuzzy -msgid "The date and time when the audio was last modified." -msgstr "" -"La fehca y hora cuando se almacenó la imagen en forma de datos digitales." - -#: src/properties.cpp:352 -#, fuzzy -msgid "Metadata Modified Date" -msgstr "Orden de llenado" - -#: src/properties.cpp:352 -#, fuzzy -msgid "The date and time when the metadata was last modified." -msgstr "" -"La fehca y hora cuando se almacenó la imagen en forma de datos digitales." - -#: src/properties.cpp:353 src/properties.cpp:521 src/tags.cpp:549 -msgid "Artist" -msgstr "Artista" - -#: src/properties.cpp:353 -#, fuzzy -msgid "The name of the artist or artists." -msgstr "El tipo de fuente de luz." - -#: src/properties.cpp:354 -#, fuzzy -msgid "Album" -msgstr "creativo" - -#: src/properties.cpp:354 -#, fuzzy -msgid "The name of the album." -msgstr "El tipo de fuente de luz." - -#: src/properties.cpp:355 -#, fuzzy -msgid "Track Number" -msgstr "ID único de imagen" - -#: src/properties.cpp:355 -msgid "" -"A numeric value indicating the order of the audio file within its original " -"recording." -msgstr "" - -#: src/properties.cpp:356 -#, fuzzy -msgid "Genre" -msgstr "centrado" - -#: src/properties.cpp:356 -#, fuzzy -msgid "The name of the genre." -msgstr "El tipo de fuente de luz." - -#: src/properties.cpp:357 -#, fuzzy -msgid "The copyright information." -msgstr "Posicionamiento YCbCr" - -#: src/properties.cpp:358 -#, fuzzy -msgid "The date the title was released." -msgstr "" -"La fehca y hora cuando se almacenó la imagen en forma de datos digitales." - -#: src/properties.cpp:359 -#, fuzzy -msgid "Composer" -msgstr "Descomprimido" - -#: src/properties.cpp:359 -msgid "The composer's name." -msgstr "" - -#: src/properties.cpp:360 -#, fuzzy -msgid "Engineer" -msgstr "Centímetro" - -#: src/properties.cpp:360 -msgid "The engineer's name." -msgstr "" - -#: src/properties.cpp:361 -msgid "Tempo" -msgstr "" - -#: src/properties.cpp:361 -msgid "The audio's tempo." -msgstr "" - -#: src/properties.cpp:362 -#, fuzzy -msgid "Instrument" -msgstr "Proceso personalizado" - -#: src/properties.cpp:362 -msgid "The musical instrument." -msgstr "" - -#: src/properties.cpp:363 -#, fuzzy -msgid "Intro Time" -msgstr "Fecha y hora" - -#: src/properties.cpp:363 -#, fuzzy -msgid "The duration of lead time for queuing music." -msgstr "El tipo de fuente de luz." - -#: src/properties.cpp:364 -msgid "Out Cue" -msgstr "" - -#: src/properties.cpp:364 -msgid "The time at which to fade out." -msgstr "" - -#: src/properties.cpp:365 -#, fuzzy -msgid "Relative Timestamp" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:365 -msgid "The start time of the media inside the audio project." -msgstr "" - -#: src/properties.cpp:366 -#, fuzzy -msgid "Loop" -msgstr "Ganancia baja baja" - -#: src/properties.cpp:366 -msgid "When true, the clip can be looped seemlessly." -msgstr "" - -#: src/properties.cpp:367 -#, fuzzy -msgid "Number Of Beats" -msgstr "El número F." - -#: src/properties.cpp:367 -#, fuzzy -msgid "The number of beats." -msgstr "El número F." - -#: src/properties.cpp:368 -msgid "Key" -msgstr "" - -#: src/properties.cpp:368 -msgid "" -"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." -msgstr "" - -#: src/properties.cpp:369 -#, fuzzy -msgid "Stretch Mode" -msgstr "Longitud de la imagen" - -#: src/properties.cpp:369 -msgid "" -"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " -"Splice, Hybrid." -msgstr "" - -#: src/properties.cpp:370 -msgid "Time Scale Parameters" -msgstr "" - -#: src/properties.cpp:370 -msgid "Additional parameters for Time-Scale stretch mode." -msgstr "" - -#: src/properties.cpp:371 -msgid "Resample Parameters" -msgstr "" - -#: src/properties.cpp:371 -msgid "Additional parameters for Resample stretch mode." -msgstr "" - -#: src/properties.cpp:372 -msgid "Beat Splice Parameters" -msgstr "" - -#: src/properties.cpp:372 -msgid "Additional parameters for Beat Splice stretch mode." -msgstr "" - -#: src/properties.cpp:373 -#, fuzzy -msgid "Time Signature" -msgstr "Espacio de color" - -#: src/properties.cpp:373 -msgid "" -"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " -"12/8, other." -msgstr "" - -#: src/properties.cpp:374 -#, fuzzy -msgid "Scale Type" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:374 -msgid "" -"The musical scale used in the music. One of: Major, Minor, Both, Neither. " -"Neither is most often used for instruments with no associated scale, such as " -"drums." -msgstr "" - -#: src/properties.cpp:381 src/tags.cpp:1071 -#, fuzzy -msgid "Camera Serial Number" -msgstr "El número F." - -#: src/properties.cpp:381 -#, fuzzy -msgid "Camera Serial Number." -msgstr "El número F." - -#: src/properties.cpp:382 -#, fuzzy -msgid "Date Acquired" -msgstr "Fecha y hora" - -#: src/properties.cpp:382 -#, fuzzy -msgid "Date Acquired." -msgstr "Fecha y hora" - -#: src/properties.cpp:383 -#, fuzzy -msgid "Flash Manufacturer" -msgstr "Fabricante" - -#: src/properties.cpp:383 -#, fuzzy -msgid "Flash Manufacturer." -msgstr "Fabricante" - -#: src/properties.cpp:384 -#, fuzzy -msgid "Flash Model." -msgstr "Flash" - -#: src/properties.cpp:385 -msgid "Last Keyword IPTC" -msgstr "" - -#: src/properties.cpp:385 -msgid "Last Keyword IPTC." -msgstr "" - -#: src/properties.cpp:386 -msgid "Last Keyword XMP" -msgstr "" - -#: src/properties.cpp:386 -msgid "Last Keyword XMP." -msgstr "" - -#: src/properties.cpp:387 -#, fuzzy -msgid "Lens Manufacturer" -msgstr "Fabricante" - -#: src/properties.cpp:387 -#, fuzzy -msgid "Lens Manufacturer." -msgstr "Fabricante" - -#: src/properties.cpp:388 -#, fuzzy -msgid "Lens Model." -msgstr "Tipo de escena" - -#: src/properties.cpp:389 -#, fuzzy -msgid "Rating Percent" -msgstr "acción" - -#: src/properties.cpp:389 -#, fuzzy -msgid "Rating Percent." -msgstr "acción" - -#: src/properties.cpp:395 -msgid "Keywords." -msgstr "" - -#: src/properties.cpp:396 -#, fuzzy -msgid "PDF Version" -msgstr "Versión Exif" - -#: src/properties.cpp:396 -msgid "The PDF file version (for example: 1.0, 1.3, and so on)." -msgstr "" - -#: src/properties.cpp:397 -msgid "Producer" -msgstr "" - -#: src/properties.cpp:397 -#, fuzzy -msgid "The name of the tool that created the PDF document." -msgstr "El tipo de fuente de luz." - -#: src/properties.cpp:403 -#, fuzzy -msgid "Authors Position" -msgstr "Posicionamiento YCbCr" - -#: src/properties.cpp:403 -msgid "By-line title." -msgstr "" - -#: src/properties.cpp:404 -#, fuzzy -msgid "Caption Writer" -msgstr "acción" - -#: src/properties.cpp:404 -msgid "Writer/editor." -msgstr "" - -#: src/properties.cpp:405 -msgid "Category. Limited to 3 7-bit ASCII characters." -msgstr "" - -#: src/properties.cpp:406 -msgid "City." -msgstr "" - -#: src/properties.cpp:407 -msgid "Country/primary location." -msgstr "" - -#: src/properties.cpp:408 -msgid "Credit." -msgstr "" - -#: src/properties.cpp:409 -msgid "" -"The date the intellectual content of the document was created (rather than " -"the creation date of the physical representation), following IIM " -"conventions. For example, a photo taken during the American Civil War would " -"have a creation date during that epoch (1861-1865) rather than the date the " -"photo was digitized for archiving." -msgstr "" - -#: src/properties.cpp:413 -#, fuzzy -msgid "Headline." -msgstr "pulg" - -#: src/properties.cpp:414 -#, fuzzy -msgid "Special instructions." -msgstr "Proceso personalizado" - -#: src/properties.cpp:415 -#, fuzzy -msgid "Source." -msgstr "Fuente de archivo" - -#: src/properties.cpp:416 -#, fuzzy -msgid "State" -msgstr "Fecha y hora" - -#: src/properties.cpp:416 -msgid "Province/state." -msgstr "" - -#: src/properties.cpp:417 -msgid "Supplemental category." -msgstr "" - -#: src/properties.cpp:418 -msgid "Original transmission reference." -msgstr "" - -#: src/properties.cpp:419 -msgid "Urgency. Valid range is 1-8." -msgstr "" - -#: src/properties.cpp:427 -#, fuzzy -msgid "inches" -msgstr "Pulgada" - -#: src/properties.cpp:428 src/tags.cpp:242 -msgid "cm" -msgstr "cm" - -#: src/properties.cpp:432 -#, fuzzy -msgid "Auto Brightness" -msgstr "Brillo" - -#: src/properties.cpp:432 -msgid "When true, \"Brightness\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:433 -#, fuzzy -msgid "Auto Contrast" -msgstr "Contraste" - -#: src/properties.cpp:433 -msgid "When true, \"Contrast\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:434 -#, fuzzy -msgid "Auto Exposure" -msgstr "Modo de exposición" - -#: src/properties.cpp:434 -msgid "When true, \"Exposure\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:435 -#, fuzzy -msgid "Auto Shadows" -msgstr "Sombra" - -#: src/properties.cpp:435 -msgid "When true,\"Shadows\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:436 -#, fuzzy -msgid "Blue Hue" -msgstr "Balance de blanco" - -#: src/properties.cpp:436 -#, fuzzy -msgid "\"Blue Hue\" setting. Range -100 to 100." -msgstr "Alta saturación" - -#: src/properties.cpp:437 -#, fuzzy -msgid "Blue Saturation" -msgstr "Saturación" - -#: src/properties.cpp:437 -#, fuzzy -msgid "\"Blue Saturation\" setting. Range -100 to +100." -msgstr "Alta saturación" - -#: src/properties.cpp:438 -#, fuzzy -msgid "\"Brightness\" setting. Range 0 to +150." -msgstr "Nitidez" - -#: src/properties.cpp:439 -#, fuzzy -msgid "Camera Profile" -msgstr "Espacio de color" - -#: src/properties.cpp:439 -#, fuzzy -msgid "\"Camera Profile\" setting." -msgstr "Contraste" - -#: src/properties.cpp:440 -#, fuzzy -msgid "Chromatic Aberration Blue" -msgstr "Alta saturación" - -#: src/properties.cpp:440 -#, fuzzy -msgid "" -"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." -msgstr "Alta saturación" - -#: src/properties.cpp:441 -#, fuzzy -msgid "Chromatic Aberration Red" -msgstr "Alta saturación" - -#: src/properties.cpp:441 -#, fuzzy -msgid "" -"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." -msgstr "Alta saturación" - -#: src/properties.cpp:442 -#, fuzzy -msgid "Color Noise Reduction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/properties.cpp:442 -#, fuzzy -msgid "\"Color Noise Reducton\" setting. Range 0 to +100." -msgstr "Alta saturación" - -#: src/properties.cpp:443 -#, fuzzy -msgid "\"Contrast\" setting. Range -50 to +100." -msgstr "Alta saturación" - -#: src/properties.cpp:444 -msgid "When \"Has Crop\" is true, top of crop rectangle" -msgstr "" - -#: src/properties.cpp:445 -msgid "When \"Has Crop\" is true, left of crop rectangle." -msgstr "" - -#: src/properties.cpp:446 -#, fuzzy -msgid "Crop Bottom" -msgstr "izquierda - abajo" - -#: src/properties.cpp:446 -msgid "When \"Has Crop\" is true, bottom of crop rectangle." -msgstr "" - -#: src/properties.cpp:447 -#, fuzzy -msgid "Crop Right" -msgstr "Copyright" - -#: src/properties.cpp:447 -msgid "When \"Has Crop\" is true, right of crop rectangle." -msgstr "" - -#: src/properties.cpp:448 -#, fuzzy -msgid "Crop Angle" -msgstr "arriba - izquierda" - -#: src/properties.cpp:448 -msgid "When \"Has Crop\" is true, angle of crop rectangle." -msgstr "" - -#: src/properties.cpp:449 -msgid "Width of resulting cropped image in CropUnits units." -msgstr "" - -#: src/properties.cpp:450 -msgid "Height of resulting cropped image in CropUnits units." -msgstr "" - -#: src/properties.cpp:451 -#, fuzzy -msgid "Crop Units" -msgstr "Copyright" - -#: src/properties.cpp:451 -msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" -msgstr "" - -#: src/properties.cpp:452 -#, fuzzy -msgid "\"Exposure\" setting. Range -4.0 to +4.0." -msgstr "Nitidez" - -#: src/properties.cpp:453 -#, fuzzy -msgid "GreenHue" -msgstr "Modo de métrica" - -#: src/properties.cpp:453 -#, fuzzy -msgid "\"Green Hue\" setting. Range -100 to +100." -msgstr "Alta saturación" - -#: src/properties.cpp:454 -#, fuzzy -msgid "Green Saturation" -msgstr "Saturación" - -#: src/properties.cpp:454 -#, fuzzy -msgid "\"Green Saturation\" setting. Range -100 to +100." -msgstr "Alta saturación" - -#: src/properties.cpp:455 -#, fuzzy -msgid "Has Crop" -msgstr "Tiene crop" - -#: src/properties.cpp:455 -msgid "When true, image has a cropping rectangle." -msgstr "" - -#: src/properties.cpp:456 -#, fuzzy -msgid "Has Settings" -msgstr "Contraste" - -#: src/properties.cpp:456 -msgid "When true, non-default camera raw settings." -msgstr "" - -#: src/properties.cpp:457 -msgid "Luminance Smoothing" -msgstr "" - -#: src/properties.cpp:457 -#, fuzzy -msgid "\"Luminance Smoothing\" setting. Range 0 to +100." -msgstr "Alta saturación" - -#: src/properties.cpp:458 -#, fuzzy -msgid "Raw File Name" -msgstr "Nombre del documento" - -#: src/properties.cpp:458 -msgid "File name of raw file (not a complete path)." -msgstr "" - -#: src/properties.cpp:459 -#, fuzzy -msgid "Red Hue" -msgstr "Balance de blanco" - -#: src/properties.cpp:459 -#, fuzzy -msgid "\"Red Hue\" setting. Range -100 to +100." -msgstr "Alta saturación" - -#: src/properties.cpp:460 -#, fuzzy -msgid "Red Saturation" -msgstr "Saturación" - -#: src/properties.cpp:460 -#, fuzzy -msgid "\"Red Saturation\" setting. Range -100 to +100." -msgstr "Alta saturación" - -#: src/properties.cpp:461 -#, fuzzy -msgid "\"Saturation\" setting. Range -100 to +100." -msgstr "Alta saturación" - -#: src/properties.cpp:462 -#, fuzzy -msgid "Shadows" -msgstr "Sombra" - -#: src/properties.cpp:462 -#, fuzzy -msgid "\"Shadows\" setting. Range 0 to +100." -msgstr "Nitidez" - -#: src/properties.cpp:463 -#, fuzzy -msgid "Shadow Tint" -msgstr "Sombra" - -#: src/properties.cpp:463 -#, fuzzy -msgid "\"Shadow Tint\" setting. Range -100 to +100." -msgstr "Alta saturación" - -#: src/properties.cpp:464 -#, fuzzy -msgid "\"Sharpness\" setting. Range 0 to +100." -msgstr "Nitidez" - -#: src/properties.cpp:465 -#, fuzzy -msgid "\"Temperature\" setting. Range 2000 to 50000." -msgstr "Alta saturación" - -#: src/properties.cpp:466 -#, fuzzy -msgid "Tint" -msgstr "Orden de llenado" - -#: src/properties.cpp:466 -#, fuzzy -msgid "\"Tint\" setting. Range -150 to +150." -msgstr "Alta saturación" - -#: src/properties.cpp:467 -#, fuzzy -msgid "Tone Curve" -msgstr "Nombre del documento" - -#: src/properties.cpp:467 -msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." -msgstr "" - -#: src/properties.cpp:468 -#, fuzzy -msgid "Tone Curve Name" -msgstr "Nombre del documento" - -#: src/properties.cpp:468 -msgid "" -"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " -"Contrast, Strong Contrast, Custom or a user-defined preset name." -msgstr "" - -#: src/properties.cpp:470 -msgid "Version of Camera Raw plugin." -msgstr "" - -#: src/properties.cpp:471 -#, fuzzy -msgid "Vignette Amount" -msgstr "Punto blanco" - -#: src/properties.cpp:471 -#, fuzzy -msgid "\"Vignetting Amount\" setting. Range -100 to +100." -msgstr "Alta saturación" - -#: src/properties.cpp:472 -#, fuzzy -msgid "Vignette Midpoint" -msgstr "Punto blanco" - -#: src/properties.cpp:472 -#, fuzzy -msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." -msgstr "Alta saturación" - -#: src/properties.cpp:473 -msgid "" -"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " -"Tungsten, Fluorescent, Flash, Custom" -msgstr "" - -#: src/properties.cpp:480 -msgid "TIFF tag 256, 0x100. Image width in pixels." -msgstr "" - -#: src/properties.cpp:481 src/tags.cpp:420 -msgid "Image Length" -msgstr "Longitud de la imagen" - -#: src/properties.cpp:481 -msgid "TIFF tag 257, 0x101. Image height in pixels." -msgstr "" - -#: src/properties.cpp:482 -#, fuzzy -msgid "Bits Per Sample" -msgstr "Bits por muestra" - -#: src/properties.cpp:482 -msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." -msgstr "" - -#: src/properties.cpp:483 src/tags.cpp:430 -msgid "Compression" -msgstr "Compresión" - -#: src/properties.cpp:483 -msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." -msgstr "" - -#: src/properties.cpp:484 src/tags.cpp:436 -msgid "Photometric Interpretation" -msgstr "Interpretación fotométrica" - -#: src/properties.cpp:484 -msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." -msgstr "" - -#: src/properties.cpp:485 -msgid "" -"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " -"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " -"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " -"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " -"0th column at bottom 8 = 0th row at left, 0th column at bottom" -msgstr "" - -#: src/properties.cpp:494 -#, fuzzy -msgid "Samples Per Pixel" -msgstr "Muestras por pixel" - -#: src/properties.cpp:494 -msgid "TIFF tag 277, 0x115. Number of components per pixel." -msgstr "" - -#: src/properties.cpp:495 src/tags.cpp:510 -#, fuzzy -msgid "Planar Configuration" -msgstr "Configuración planar" - -#: src/properties.cpp:495 -msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." -msgstr "" - -#: src/properties.cpp:496 -#, fuzzy -msgid "YCbCr Sub Sampling" -msgstr "Sub-muestreo YCbCr" - -#: src/properties.cpp:496 -msgid "" -"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " -"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" -msgstr "" - -#: src/properties.cpp:498 src/tags.cpp:713 -msgid "YCbCr Positioning" -msgstr "Posicionamiento YCbCr" - -#: src/properties.cpp:498 -msgid "" -"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " -"centered; 2 = co-sited." -msgstr "" - -#: src/properties.cpp:500 -#, fuzzy -msgid "X Resolution" -msgstr "Resolución Y" - -#: src/properties.cpp:500 -msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." -msgstr "" - -#: src/properties.cpp:501 -#, fuzzy -msgid "Y Resolution" -msgstr "Resolución Y" - -#: src/properties.cpp:501 -msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." -msgstr "" - -#: src/properties.cpp:502 src/tags.cpp:528 -msgid "Resolution Unit" -msgstr "Unidad de resolución" - -#: src/properties.cpp:502 -msgid "" -"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " -"of: 2 = inches; 3 = centimeters." -msgstr "" - -#: src/properties.cpp:504 src/tags.cpp:533 -msgid "Transfer Function" -msgstr "Función de transferencia" - -#: src/properties.cpp:504 -msgid "" -"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " -"with 3 * 256 entries." -msgstr "" - -#: src/properties.cpp:506 src/tags.cpp:565 -msgid "White Point" -msgstr "Punto blanco" - -#: src/properties.cpp:506 -msgid "TIFF tag 318, 0x13E. Chromaticity of white point." -msgstr "" - -#: src/properties.cpp:507 src/tags.cpp:570 -#, fuzzy -msgid "Primary Chromaticities" -msgstr "Cromaticidades primarias" - -#: src/properties.cpp:507 -msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." -msgstr "" - -#: src/properties.cpp:508 -msgid "" -"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." -msgstr "" - -#: src/properties.cpp:509 -#, fuzzy -msgid "Reference Black White" -msgstr "Referencia Blanco/Negro" - -#: src/properties.cpp:509 -msgid "TIFF tag 532, 0x214. Reference black and white point values." -msgstr "" - -#: src/properties.cpp:510 src/tags.cpp:545 -#, fuzzy -msgid "Date and Time" -msgstr "Fecha y hora" - -#: src/properties.cpp:510 -msgid "" -"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " -"and time of image creation (no time zone in EXIF), stored in ISO 8601 " -"format, not the original EXIF format. This property includes the value for " -"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" -"ModifyDate." -msgstr "" - -#: src/properties.cpp:516 src/tags.cpp:458 -msgid "Image Description" -msgstr "Descripción de la imagen" - -#: src/properties.cpp:516 -msgid "" -"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " -"in XMP as dc:description." -msgstr "" - -#: src/properties.cpp:517 -#, fuzzy -msgid "Make" -msgstr "Duro" - -#: src/properties.cpp:517 -msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." -msgstr "" - -#: src/properties.cpp:518 -msgid "TIFF tag 272, 0x110. Model name or number of equipment." -msgstr "" - -#: src/properties.cpp:519 -msgid "" -"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " -"property is stored in XMP as xmp:CreatorTool. " -msgstr "" - -#: src/properties.cpp:521 -msgid "" -"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " -"property is stored in XMP as the first item in the dc:creator array." -msgstr "" - -#: src/properties.cpp:523 -msgid "" -"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " -"in XMP as dc:rights." -msgstr "" - -#: src/properties.cpp:530 src/tags.cpp:1598 -#, fuzzy -msgid "Exif Version" -msgstr "Versión Exif" - -#: src/properties.cpp:530 -msgid "EXIF tag 36864, 0x9000. EXIF version number." -msgstr "" - -#: src/properties.cpp:531 -#, fuzzy -msgid "Flashpix Version" -msgstr "Flash" - -#: src/properties.cpp:531 -msgid "EXIF tag 40960, 0xA000. Version of FlashPix." -msgstr "" - -#: src/properties.cpp:532 -msgid "EXIF tag 40961, 0xA001. Color space information" -msgstr "" - -#: src/properties.cpp:533 src/tags.cpp:1609 -#, fuzzy -msgid "Components Configuration" -msgstr "Configuración planar" - -#: src/properties.cpp:533 -msgid "" -"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " -"compressed data), 1 2 3 0 (other cases)." -msgstr "" - -#: src/properties.cpp:535 src/tags.cpp:818 -#, fuzzy -msgid "Compressed Bits Per Pixel" -msgstr "Bits comprimidos por pixel" - -#: src/properties.cpp:535 -#, fuzzy -msgid "" -"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " -"indicated in unit bits per pixel." -msgstr "" -"Información específica sobre los datos comprimidos. El modo de compresión " -"utilizado para una imagen comprimida está indicado en unidades de bits por " -"pixel." - -#: src/properties.cpp:537 src/tags.cpp:1693 -msgid "Pixel X Dimension" -msgstr "" - -#: src/properties.cpp:537 -msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." -msgstr "" - -#: src/properties.cpp:538 src/tags.cpp:1700 -msgid "Pixel Y Dimension" -msgstr "" - -#: src/properties.cpp:538 -msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." -msgstr "" - -#: src/properties.cpp:539 src/tags.cpp:1667 -msgid "User Comment" -msgstr "Comentario del usuario" - -#: src/properties.cpp:539 -msgid "EXIF tag 37510, 0x9286. Comments from user." -msgstr "" - -#: src/properties.cpp:540 src/tags.cpp:1709 -msgid "Related Sound File" -msgstr "" - -#: src/properties.cpp:540 -msgid "" -"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." -msgstr "" - -#: src/properties.cpp:541 -#, fuzzy -msgid "Date and Time Original" -msgstr "Fecha y Hora (original)" - -#: src/properties.cpp:541 -msgid "" -"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " -"time when original image was generated, in ISO 8601 format. Includes the " -"EXIF SubSecTimeOriginal data." -msgstr "" - -#: src/properties.cpp:544 -#, fuzzy -msgid "Date and Time Digitized" -msgstr "Fecha y Hora (digitalizado)" - -#: src/properties.cpp:544 -msgid "" -"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " -"time when image was stored as digital data, can be the same as " -"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " -"format. Includes the EXIF SubSecTimeDigitized data." -msgstr "" - -#: src/properties.cpp:548 -#, fuzzy -msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." -msgstr "Tiempo de exposición, dado en segundos (seg)." - -#: src/properties.cpp:549 -#, fuzzy -msgid "F Number" -msgstr "El número F." - -#: src/properties.cpp:549 -msgid "EXIF tag 33437, 0x829D. F number." -msgstr "" - -#: src/properties.cpp:550 -msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." -msgstr "" - -#: src/properties.cpp:551 src/tags.cpp:800 src/tags.cpp:1552 -msgid "Spectral Sensitivity" -msgstr "Sensibilidad espectral" - -#: src/properties.cpp:551 -#, fuzzy -msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." -msgstr "" -"Indica el tipo de sensor de imagen en la cámara o dispositivo de entrada." - -#: src/properties.cpp:552 -#, fuzzy -msgid "ISOSpeedRatings" -msgstr "Velocidad ISO" - -#: src/properties.cpp:552 -#, fuzzy -msgid "" -"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " -"specified in ISO 12232." -msgstr "" -"Indica la velocidad ISO y la latitud ISO de la cámara o dispositivo de " -"entrada como se especifica en ISO 12232." - -#: src/properties.cpp:554 src/tags.cpp:807 -msgid "OECF" -msgstr "" - -#: src/properties.cpp:554 -#, fuzzy -msgid "" -"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " -"ISO 14524." -msgstr "" -"Indica la Función de Conversión Opto-Electrónica (OECF) especificada en ISO " -"14524. es la relación entre la entrada óptica de la cámara y los " -"valores de la imagen." - -#: src/properties.cpp:555 -msgid "" -"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " -"specification." -msgstr "" - -#: src/properties.cpp:556 -#, fuzzy -msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." -msgstr "La distancia al sujeto, dada en metros." - -#: src/properties.cpp:557 src/tags.cpp:821 -#, fuzzy -msgid "Brightness Value" -msgstr "Brillo" - -#: src/properties.cpp:557 -#, fuzzy -msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." -msgstr "La distancia al sujeto, dada en metros." - -#: src/properties.cpp:558 -msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." -msgstr "" - -#: src/properties.cpp:559 -#, fuzzy -msgid "Maximum Aperture Value" -msgstr "apertura" - -#: src/properties.cpp:559 -#, fuzzy -msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." -msgstr "La distancia al sujeto, dada en metros." - -#: src/properties.cpp:560 -#, fuzzy -msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." -msgstr "La distancia al sujeto, dada en metros." - -#: src/properties.cpp:561 -#, fuzzy -msgid "EXIF tag 37383, 0x9207. Metering mode." -msgstr "La distancia al sujeto, dada en metros." - -#: src/properties.cpp:562 -#, fuzzy -msgid "EXIF tag 37384, 0x9208. Light source." -msgstr "La distancia al sujeto, dada en metros." - -#: src/properties.cpp:563 -msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." -msgstr "" - -#: src/properties.cpp:564 -#, fuzzy -msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." -msgstr "La distancia al sujeto, dada en metros." - -#: src/properties.cpp:565 src/tags.cpp:1659 -msgid "Subject Area" -msgstr "Ãrea del sujeto" - -#: src/properties.cpp:565 -#, fuzzy -msgid "" -"EXIF tag 37396, 0x9214. The location and area of the main subject in the " -"overall scene." -msgstr "" -"Esta etiqueta indica la ubicación y el área del sujeto principal en la " -"escena general." - -#: src/properties.cpp:566 src/tags.cpp:829 src/tags.cpp:1724 -msgid "Flash Energy" -msgstr "Energía del flash" - -#: src/properties.cpp:566 -msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." -msgstr "" - -#: src/properties.cpp:567 src/tags.cpp:830 src/tags.cpp:1728 -msgid "Spatial Frequency Response" -msgstr "Respuesta en frecuencia espacial" - -#: src/properties.cpp:567 -#, fuzzy -msgid "" -"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " -"as specified in ISO 12233." -msgstr "" -"Indica la velocidad ISO y la latitud ISO de la cámara o dispositivo de " -"entrada como se especifica en ISO 12232." - -#: src/properties.cpp:569 src/tags.cpp:832 -#, fuzzy -msgid "Focal Plane X Resolution" -msgstr "Resolución X del plano focal" - -#: src/properties.cpp:569 -msgid "" -"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " -"unit." -msgstr "" - -#: src/properties.cpp:570 src/tags.cpp:833 -#, fuzzy -msgid "Focal Plane Y Resolution" -msgstr "Resolución X del plano focal" - -#: src/properties.cpp:570 -msgid "" -"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " -"unit." -msgstr "" - -#: src/properties.cpp:571 src/tags.cpp:834 src/tags.cpp:1741 -msgid "Focal Plane Resolution Unit" -msgstr "Unidad de resolución del plano focal" - -#: src/properties.cpp:571 -msgid "" -"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " -"FocalPlaneYResolution." -msgstr "" - -#: src/properties.cpp:572 src/tags.cpp:838 src/tags.cpp:1745 -msgid "Subject Location" -msgstr "Ubicación del sujeto" - -#: src/properties.cpp:572 -msgid "" -"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " -"value is the horizontal pixel and the second value is the vertical pixel at " -"which the main subject appears." -msgstr "" - -#: src/properties.cpp:575 src/tags.cpp:839 -#, fuzzy -msgid "Exposure Index" -msgstr "Ãndice de exposición" - -#: src/properties.cpp:575 -#, fuzzy -msgid "EXIF tag 41493, 0xA215. Exposure index of input device." -msgstr "" -"Indica el tipo de sensor de imagen en la cámara o dispositivo de entrada." - -#: src/properties.cpp:576 src/tags.cpp:844 src/tags.cpp:1756 -msgid "Sensing Method" -msgstr "Método de sensado" - -#: src/properties.cpp:576 -#, fuzzy -msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." -msgstr "" -"Indica el tipo de sensor de imagen en la cámara o dispositivo de entrada." - -#: src/properties.cpp:577 -#, fuzzy -msgid "EXIF tag 41728, 0xA300. Indicates image source." -msgstr "Esta etiqueta indica la distancia al sujeto." - -#: src/properties.cpp:578 src/tags.cpp:1764 -msgid "Scene Type" -msgstr "Tipo de escena" - -#: src/properties.cpp:578 -#, fuzzy -msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." -msgstr "Esta etiqueta indica la distancia al sujeto." - -#: src/properties.cpp:579 src/tags.cpp:754 -msgid "CFA Pattern" -msgstr "Patrón CFA" - -#: src/properties.cpp:579 -msgid "" -"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " -"sense." -msgstr "" - -#: src/properties.cpp:580 src/tags.cpp:1774 -msgid "Custom Rendered" -msgstr "Render personalizado" - -#: src/properties.cpp:580 -#, fuzzy -msgid "" -"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " -"data." -msgstr "" -"Esta etiqueta indica el modo de balance de blanco ajustado cuando se tomó la " -"imagen." - -#: src/properties.cpp:581 -#, fuzzy -msgid "" -"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " -"shot." -msgstr "" -"Esta etiqueta indica el modo de balance de blanco ajustado cuando se tomó la " -"imagen." - -#: src/properties.cpp:582 -#, fuzzy -msgid "" -"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " -"was shot." -msgstr "" -"Esta etiqueta indica el modo de balance de blanco ajustado cuando se tomó la " -"imagen." - -#: src/properties.cpp:583 src/tags.cpp:1788 -msgid "Digital Zoom Ratio" -msgstr "Relación de zoom digital" - -#: src/properties.cpp:583 -#, fuzzy -msgid "" -"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " -"shot." -msgstr "" -"Esta etiqueta indica el modo de balance de blanco ajustado cuando se tomó la " -"imagen." - -#: src/properties.cpp:584 src/tags.cpp:1793 -msgid "Focal Length In 35mm Film" -msgstr "Distancia focal en película de 35mm" - -#: src/properties.cpp:584 -#, fuzzy -msgid "" -"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " -"35mm film camera, in mm. A value of 0 means the focal length is unknown. " -"Note that this tag differs from the FocalLength tag." -msgstr "" -"Esta etiqueta indica la distancia focal equivalente asumiendo una cámara de " -"película de 35mm, en mm. Un valor de 0 significa que se desconoce la " -"distancia focal. Note que esta etiqueta difiere de la etiqueta FocalLength." - -#: src/properties.cpp:587 src/tags.cpp:1799 -msgid "Scene Capture Type" -msgstr "Tipo de captura de escena" - -#: src/properties.cpp:587 -#, fuzzy -msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." -msgstr "" -"Esta etiqueta indica el modo de balance de blanco ajustado cuando se tomó la " -"imagen." - -#: src/properties.cpp:588 src/tags.cpp:1804 -msgid "Gain Control" -msgstr "Control de ganancia" - -#: src/properties.cpp:588 -#, fuzzy -msgid "" -"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " -"adjustment." -msgstr "" -"Esta etiqueta indica el grado del ajuste de ganancia general de imagen." - -#: src/properties.cpp:589 -#, fuzzy -msgid "" -"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " -"applied by the camera." -msgstr "" -"Esta etiqueta indica la dirección del procesamiento de contraste aplicado " -"por la cámara cuando se tomó la imagen." - -#: src/properties.cpp:590 -#, fuzzy -msgid "" -"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " -"applied by the camera." -msgstr "" -"Esta etiqueta indica la dirección del procesamiento de stauración aplicado " -"por la cámara cuando se tomó la imagen." - -#: src/properties.cpp:591 -#, fuzzy -msgid "" -"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " -"applied by the camera." -msgstr "" -"Esta etiqueta indica la dirección del procesamiento de nitidez aplicado por " -"la cámara cuando se tomó la imagen." - -#: src/properties.cpp:592 src/tags.cpp:1819 -msgid "Device Setting Description" -msgstr "Descripción de ajuste del dispositivo" - -#: src/properties.cpp:592 -#, fuzzy -msgid "" -"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " -"conditions of a particular camera model." -msgstr "" -"Esta etiqueta indica información sobre las condiciones de toma de la foto de " -"un modelo de cámara en particular. La etiqueta sólo se usa para indicar las " -"condiciones de toma de fotos en el lector." - -#: src/properties.cpp:593 src/tags.cpp:1824 -msgid "Subject Distance Range" -msgstr "Rango de distancia al sujeto." - -#: src/properties.cpp:593 -#, fuzzy -msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." -msgstr "Esta etiqueta indica la distancia al sujeto." - -#: src/properties.cpp:594 src/tags.cpp:1827 -msgid "Image Unique ID" -msgstr "ID único de imagen" - -#: src/properties.cpp:594 -#, fuzzy -msgid "" -"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " -"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " -"and 128-bit fixed length." -msgstr "" -"Esta etiqueta indica un identificador asignado unívocamente a cada imagen. " -"Se registra como una cadena de caracteres ASCII equivalente a notación " -"hexadecimal y de una longitud fija de 128 bits." - -#: src/properties.cpp:596 src/tags.cpp:1927 -#, fuzzy -msgid "GPS Version ID" -msgstr "Versión Exif" - -#: src/properties.cpp:596 -msgid "" -"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " -"period separators. The current value is \"2.0.0.0\"." -msgstr "" - -#: src/properties.cpp:598 src/tags.cpp:1938 -msgid "GPS Latitude" -msgstr "" - -#: src/properties.cpp:598 -msgid "" -"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." -msgstr "" - -#: src/properties.cpp:599 src/tags.cpp:1950 -msgid "GPS Longitude" -msgstr "" - -#: src/properties.cpp:599 -msgid "" -"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." -msgstr "" - -#: src/properties.cpp:600 src/tags.cpp:1958 -#, fuzzy -msgid "GPS Altitude Reference" -msgstr "Referencia Blanco/Negro" - -#: src/properties.cpp:600 -#, fuzzy -msgid "" -"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." -msgstr "La distancia al sujeto, dada en metros." - -#: src/properties.cpp:601 src/tags.cpp:1966 -msgid "GPS Altitude" -msgstr "" - -#: src/properties.cpp:601 -#, fuzzy -msgid "GPS tag 6, 0x06. Indicates altitude in meters." -msgstr "La distancia al sujeto, dada en metros." - -#: src/properties.cpp:602 src/tags.cpp:1970 -msgid "GPS Time Stamp" -msgstr "" - -#: src/properties.cpp:602 -msgid "" -"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " -"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " -"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " -"present, the date component for the XMP should be taken from exif:" -"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " -"no date is available, do not write exif:GPSTimeStamp to XMP." -msgstr "" - -#: src/properties.cpp:608 src/tags.cpp:1975 -#, fuzzy -msgid "GPS Satellites" -msgstr "Velocidad ISO" - -#: src/properties.cpp:608 -msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." -msgstr "" - -#: src/properties.cpp:609 src/tags.cpp:1982 -msgid "GPS Status" -msgstr "" - -#: src/properties.cpp:609 -#, fuzzy -msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." -msgstr "La distancia al sujeto, dada en metros." - -#: src/properties.cpp:610 src/tags.cpp:1987 -#, fuzzy -msgid "GPS Measure Mode" -msgstr "Modo de exposición" - -#: src/properties.cpp:610 -msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." -msgstr "" - -#: src/properties.cpp:611 -msgid "GPS DOP" -msgstr "" - -#: src/properties.cpp:611 -#, fuzzy -msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." -msgstr "La distancia al sujeto, dada en metros." - -#: src/properties.cpp:612 src/tags.cpp:1995 -#, fuzzy -msgid "GPS Speed Reference" -msgstr "Referencia Blanco/Negro" - -#: src/properties.cpp:612 -#, fuzzy -msgid "GPS tag 12, 0x0C. Units used to speed measurement." -msgstr "La distancia al sujeto, dada en metros." - -#: src/properties.cpp:613 src/tags.cpp:1999 -#, fuzzy -msgid "GPS Speed" -msgstr "Velocidad ISO" - -#: src/properties.cpp:613 -msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." -msgstr "" - -#: src/properties.cpp:614 -#, fuzzy -msgid "GPS Track Reference" -msgstr "Referencia Blanco/Negro" - -#: src/properties.cpp:614 -#, fuzzy -msgid "GPS tag 14, 0x0E. Reference for movement direction." -msgstr "La distancia al sujeto, dada en metros." - -#: src/properties.cpp:615 src/tags.cpp:2006 -#, fuzzy -msgid "GPS Track" -msgstr "Referencia Blanco/Negro" - -#: src/properties.cpp:615 -msgid "" -"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." -msgstr "" - -#: src/properties.cpp:616 src/tags.cpp:2010 -#, fuzzy -msgid "GPS Image Direction Reference" -msgstr "Descripción de la imagen" - -#: src/properties.cpp:616 -#, fuzzy -msgid "GPS tag 16, 0x10. Reference for image direction." -msgstr "La distancia al sujeto, dada en metros." - -#: src/properties.cpp:617 src/tags.cpp:2014 -#, fuzzy -msgid "GPS Image Direction" -msgstr "Descripción de la imagen" - -#: src/properties.cpp:617 -msgid "" -"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " -"359.99." -msgstr "" - -#: src/properties.cpp:618 src/tags.cpp:2018 -msgid "GPS Map Datum" -msgstr "" - -#: src/properties.cpp:618 -msgid "GPS tag 18, 0x12. Geodetic survey data." -msgstr "" - -#: src/properties.cpp:619 src/tags.cpp:2026 -#, fuzzy -msgid "GPS Destination Latitude" -msgstr "Distancia del sujeto" - -#: src/properties.cpp:619 -msgid "" -"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " -"destination latitude." -msgstr "" - -#: src/properties.cpp:620 src/tags.cpp:2038 -#, fuzzy -msgid "GPS Destination Longitude" -msgstr "Distancia del sujeto" - -#: src/properties.cpp:620 -msgid "" -"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " -"longitude." -msgstr "" - -#: src/properties.cpp:621 src/tags.cpp:2045 -#, fuzzy -msgid "GPS Destination Bearing Reference" -msgstr "Distancia del sujeto" - -#: src/properties.cpp:621 -#, fuzzy -msgid "GPS tag 23, 0x17. Reference for movement direction." -msgstr "La distancia al sujeto, dada en metros." - -#: src/properties.cpp:622 src/tags.cpp:2049 -#, fuzzy -msgid "GPS Destination Bearing" -msgstr "Distancia del sujeto" - -#: src/properties.cpp:622 -msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." -msgstr "" - -#: src/properties.cpp:623 -#, fuzzy -msgid "GPS Destination Distance Refefrence" -msgstr "Distancia del sujeto" - -#: src/properties.cpp:623 -#, fuzzy -msgid "GPS tag 25, 0x19. Units used for speed measurement." -msgstr "La distancia al sujeto, dada en metros." - -#: src/properties.cpp:624 src/tags.cpp:2057 -#, fuzzy -msgid "GPS Destination Distance" -msgstr "Distancia del sujeto" - -#: src/properties.cpp:624 -#, fuzzy -msgid "GPS tag 26, 0x1A. Distance to destination." -msgstr "La distancia al sujeto, dada en metros." - -#: src/properties.cpp:625 src/tags.cpp:2060 -#, fuzzy -msgid "GPS Processing Method" -msgstr "Método de sensado" - -#: src/properties.cpp:625 -msgid "" -"GPS tag 27, 0x1B. A character string recording the name of the method used " -"for location finding." -msgstr "" - -#: src/properties.cpp:626 src/tags.cpp:2065 -#, fuzzy -msgid "GPS Area Information" -msgstr "Orientación" - -#: src/properties.cpp:626 -msgid "" -"GPS tag 28, 0x1C. A character string recording the name of the GPS area." -msgstr "" - -#: src/properties.cpp:627 src/tags.cpp:2073 -msgid "GPS Differential" -msgstr "" - -#: src/properties.cpp:627 -#, fuzzy -msgid "" -"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " -"the GPS receiver." -msgstr "" -"Esta etiqueta indica la dirección del procesamiento de stauración aplicado " -"por la cámara cuando se tomó la imagen." - -#: src/properties.cpp:633 -msgid "" -"A description of the lens used to take the photograph. For example, \"70-200 " -"mm f/2.8-4.0\"." -msgstr "" - -#: src/properties.cpp:634 -#, fuzzy -msgid "SerialNumber" -msgstr "El número F." - -#: src/properties.cpp:634 -msgid "" -"The serial number of the camera or camera body used to take the photograph." -msgstr "" - -#: src/properties.cpp:640 -#, fuzzy -msgid "Contact Info-City" -msgstr "Ubicación del sujeto" - -#: src/properties.cpp:640 -#, fuzzy -msgid "The contact information city part." -msgstr "Posicionamiento YCbCr" - -#: src/properties.cpp:641 -msgid "Contact Info-Country" -msgstr "" - -#: src/properties.cpp:641 -#, fuzzy -msgid "The contact information country part." -msgstr "Posicionamiento YCbCr" - -#: src/properties.cpp:642 -msgid "Contact Info-Address" -msgstr "" - -#: src/properties.cpp:642 -msgid "" -"The contact information address part. Comprises an optional company name and " -"all required information to locate the building or postbox to which mail " -"should be sent." -msgstr "" - -#: src/properties.cpp:644 -msgid "Contact Info-Postal Code" -msgstr "" - -#: src/properties.cpp:644 -#, fuzzy -msgid "The contact information part denoting the local postal code." -msgstr "Posicionamiento YCbCr" - -#: src/properties.cpp:645 -msgid "Contact Info-State/Province" -msgstr "" - -#: src/properties.cpp:645 -msgid "" -"The contact information part denoting regional information like state or " -"province." -msgstr "" - -#: src/properties.cpp:646 -msgid "Contact Info-Email" -msgstr "" - -#: src/properties.cpp:646 -#, fuzzy -msgid "The contact information email address part." -msgstr "Posicionamiento YCbCr" - -#: src/properties.cpp:647 -msgid "Contact Info-Phone" -msgstr "" - -#: src/properties.cpp:647 -#, fuzzy -msgid "The contact information phone number part." -msgstr "Posicionamiento YCbCr" - -#: src/properties.cpp:648 -msgid "Contact Info-Web URL" -msgstr "" - -#: src/properties.cpp:648 -#, fuzzy -msgid "The contact information web address part." -msgstr "Posicionamiento YCbCr" - -#: src/properties.cpp:649 -msgid "" -"Code of the country the content is focussing on -- either the country shown " -"in visual media or referenced in text or audio media. This element is at the " -"top/first level of a top-down geographical hierarchy. The code should be " -"taken from ISO 3166 two or three letter code. The full name of a country " -"should go to the \"Country\" element." -msgstr "" - -#: src/properties.cpp:653 -msgid "Creator's Contact Info" -msgstr "" - -#: src/properties.cpp:653 -msgid "" -"The creator's contact information provides all necessary information to get " -"in contact with the creator of this news object and comprises a set of sub-" -"properties for proper addressing." -msgstr "" - -#: src/properties.cpp:655 -msgid "Intellectual Genre" -msgstr "" - -#: src/properties.cpp:655 -msgid "" -"Describes the nature, intellectual or journalistic characteristic of a news " -"object, not specifically its content." -msgstr "" - -#: src/properties.cpp:657 -msgid "" -"Name of a location the content is focussing on -- either the location shown " -"in visual media or referenced by text or audio media. This location name " -"could either be the name of a sublocation to a city or the name of a well " -"known location or (natural) monument outside a city. In the sense of a " -"sublocation to a city this element is at the fourth level of a top-down " -"geographical hierarchy." -msgstr "" - -#: src/properties.cpp:662 -#, fuzzy -msgid "IPTC Scene" -msgstr "centrado" - -#: src/properties.cpp:662 -msgid "" -"Describes the scene of a photo content. Specifies one or more terms from the " -"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " -"in an unordered list." -msgstr "" - -#: src/properties.cpp:664 -#, fuzzy -msgid "IPTC Subject Code" -msgstr "Ãrea del sujeto" - -#: src/properties.cpp:664 -msgid "" -"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " -"to categorize the content. Each Subject is represented as a string of 8 " -"digits in an unordered list." -msgstr "" - -#: src/properties.cpp:671 -#, fuzzy -msgid "Additional model info" -msgstr "Posicionamiento YCbCr" - -#: src/properties.cpp:671 -msgid "" -"Information about the ethnicity and other facts of the model(s) in a model-" -"released image." -msgstr "" - -#: src/properties.cpp:672 -msgid "Code of featured Organisation" -msgstr "" - -#: src/properties.cpp:672 -msgid "" -"Code from controlled vocabulary for identyfing the organisation or company " -"which is featured in the image." -msgstr "" - -#: src/properties.cpp:673 -msgid "Controlled Vocabulary Term" -msgstr "" - -#: src/properties.cpp:673 -msgid "" -"A term to describe the content of the image by a value from a Controlled " -"Vocabulary." -msgstr "" - -#: src/properties.cpp:674 -#, fuzzy -msgid "Model age" -msgstr "Modelo" - -#: src/properties.cpp:674 -msgid "" -"Age of the human model(s) at the time this image was taken in a model " -"released image." -msgstr "" - -#: src/properties.cpp:675 -msgid "Name of featured Organisation" -msgstr "" - -#: src/properties.cpp:675 -msgid "Name of the organisation or company which is featured in the image." -msgstr "" - -#: src/properties.cpp:676 -#, fuzzy -msgid "Person shown" -msgstr "Versión Exif" - -#: src/properties.cpp:676 -msgid "Name of a person shown in the image." -msgstr "" - -#: src/properties.cpp:677 -#, fuzzy -msgid "Digital Image Identifier" -msgstr "Orientación" - -#: src/properties.cpp:677 -msgid "" -"Globally unique identifier for this digital image. It is created and applied " -"by the creator of the digital image at the time of its creation. this value " -"shall not be changed after that time." -msgstr "" - -#: src/properties.cpp:678 -msgid "Physical type of original photo" -msgstr "" - -#: src/properties.cpp:678 -#, fuzzy -msgid "The type of the source digital file." -msgstr "El tipo de fuente de luz." - -#: src/properties.cpp:679 src/properties.cpp:935 src/properties.cpp:944 -msgid "Event" -msgstr "" - -#: src/properties.cpp:679 -msgid "Names or describes the specific event at which the photo was taken." -msgstr "" - -#: src/properties.cpp:680 -#, fuzzy -msgid "Maximum available height" -msgstr "Flash" - -#: src/properties.cpp:680 -msgid "" -"The maximum available height in pixels of the original photo from which this " -"photo has been derived by downsizing." -msgstr "" - -#: src/properties.cpp:681 -#, fuzzy -msgid "Maximum available width" -msgstr "Distancia focal" - -#: src/properties.cpp:681 -msgid "" -"The maximum available width in pixels of the original photo from which this " -"photo has been derived by downsizing." -msgstr "" - -#: src/properties.cpp:682 -msgid "Registry Entry" -msgstr "" - -#: src/properties.cpp:682 -msgid "" -"Both a Registry Item Id and a Registry Organisation Id to record any " -"registration of this digital image with a registry." -msgstr "" - -#: src/properties.cpp:683 -#, fuzzy -msgid "Registry Entry-Item Identifier" -msgstr "Orientación" - -#: src/properties.cpp:683 -msgid "" -"A unique identifier created by a registry and applied by the creator of the " -"digital image. This value shall not be changed after being applied. This " -"identifier is linked to a corresponding Registry Organisation Identifier." -msgstr "" - -#: src/properties.cpp:684 -msgid "Registry Entry-Organisation Identifier" -msgstr "" - -#: src/properties.cpp:684 -msgid "" -"An identifier for the registry which issued the corresponding Registry Image " -"Id." -msgstr "" - -#: src/properties.cpp:685 -msgid "IPTC Fields Last Edited" -msgstr "" - -#: src/properties.cpp:685 -#, fuzzy -msgid "" -"The date and optionally time when any of the IPTC photo metadata fields has " -"been last edited." -msgstr "" -"La fehca y hora cuando se almacenó la imagen en forma de datos digitales." - -#: src/properties.cpp:686 -#, fuzzy -msgid "Location shown" -msgstr "Ubicación del sujeto" - -#: src/properties.cpp:686 -msgid "A location shown in the image." -msgstr "" - -#: src/properties.cpp:687 -#, fuzzy -msgid "Location Created" -msgstr "Nombre del documento" - -#: src/properties.cpp:687 -#, fuzzy -msgid "The location the photo was taken." -msgstr "El tipo de fuente de luz." - -#: src/properties.cpp:688 -#, fuzzy -msgid "Location-City" -msgstr "Ubicación del sujeto" - -#: src/properties.cpp:688 -#, fuzzy -msgid "Name of the city of a location." -msgstr "El tipo de fuente de luz." - -#: src/properties.cpp:689 -#, fuzzy -msgid "Location-Country ISO-Code" -msgstr "Nombre del documento" - -#: src/properties.cpp:689 -#, fuzzy -msgid "The ISO code of a country of a location." -msgstr "El tipo de fuente de luz." - -#: src/properties.cpp:690 -#, fuzzy -msgid "Location-Country Name" -msgstr "Nombre del documento" - -#: src/properties.cpp:690 -#, fuzzy -msgid "The name of a country of a location." -msgstr "El tipo de fuente de luz." - -#: src/properties.cpp:691 -#, fuzzy -msgid "Location-Province/State" -msgstr "Nombre del documento" - -#: src/properties.cpp:691 -#, fuzzy -msgid "" -"The name of a subregion of a country - a province or state - of a location." -msgstr "El tipo de fuente de luz." - -#: src/properties.cpp:692 -#, fuzzy -msgid "Location-Sublocation" -msgstr "Ubicación del sujeto" - -#: src/properties.cpp:692 -msgid "" -"Name of a sublocation. This sublocation name could either be the name of a " -"sublocation to a city or the name of a well known location or (natural) " -"monument outside a city." -msgstr "" - -#: src/properties.cpp:693 -#, fuzzy -msgid "Location-World Region" -msgstr "Ubicación del sujeto" - -#: src/properties.cpp:693 -#, fuzzy -msgid "The name of a world region of a location." -msgstr "El tipo de fuente de luz." - -#: src/properties.cpp:694 -#, fuzzy -msgid "Artwork or object in the image" -msgstr "Copyright" - -#: src/properties.cpp:694 -msgid "A set of metadata about artwork or an object in the image." -msgstr "" - -#: src/properties.cpp:695 -#, fuzzy -msgid "Artwork or object-Copyright notice" -msgstr "Copyright" - -#: src/properties.cpp:695 -msgid "" -"Contains any necessary copyright notice for claiming the intellectual " -"property for artwork or an object in the image and should identify the " -"current owner of the copyright of this work with associated intellectual " -"property rights." -msgstr "" - -#: src/properties.cpp:696 -#, fuzzy -msgid "Artwork or object-Creator" -msgstr "Copyright" - -#: src/properties.cpp:696 -msgid "" -"Contains the name of the artist who has created artwork or an object in the " -"image. In cases where the artist could or should not be identified the name " -"of a company or organisation may be appropriate." -msgstr "" - -#: src/properties.cpp:697 -#, fuzzy -msgid "Artwork or object-Date Created" -msgstr "Copyright" - -#: src/properties.cpp:697 -msgid "" -"Designates the date and optionally the time the artwork or object in the " -"image was created. This relates to artwork or objects with associated " -"intellectual property rights." -msgstr "" - -#: src/properties.cpp:698 -#, fuzzy -msgid "Artwork or object-Source" -msgstr "Copyright" - -#: src/properties.cpp:698 -msgid "" -"The organisation or body holding and registering the artwork or object in " -"the image for inventory purposes." -msgstr "" - -#: src/properties.cpp:699 -#, fuzzy -msgid "Artwork or object-Source inventory number" -msgstr "Copyright" - -#: src/properties.cpp:699 -msgid "" -"The inventory number issued by the organisation or body holding and " -"registering the artwork or object in the image." -msgstr "" - -#: src/properties.cpp:700 -#, fuzzy -msgid "Artwork or object-Title" -msgstr "Copyright" - -#: src/properties.cpp:700 -msgid "A reference for the artwork or object in the image." -msgstr "" - -#: src/properties.cpp:707 -msgid "Scan from film" -msgstr "" - -#: src/properties.cpp:708 -msgid "Scan from transparency (including slide)" -msgstr "" - -#: src/properties.cpp:709 -msgid "Scan from print" -msgstr "" - -#: src/properties.cpp:710 -#, fuzzy -msgid "Camera RAW" -msgstr "Contraste" - -#: src/properties.cpp:711 -#, fuzzy -msgid "Camera TIFF" -msgstr "Contraste" - -#: src/properties.cpp:712 -#, fuzzy -msgid "Camera JPEG" -msgstr "Espacio de color" - -#: src/properties.cpp:717 -#, fuzzy -msgid "PLUS Version" -msgstr "Versión Exif" - -#: src/properties.cpp:717 -msgid "" -"The version number of the PLUS standards in place at the time of the " -"transaction." -msgstr "" - -#: src/properties.cpp:718 -#, fuzzy -msgid "Licensee" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:718 -msgid "" -"Party or parties to whom the license is granted by the Licensor/s under the " -"license transaction." -msgstr "" - -#: src/properties.cpp:719 -#, fuzzy -msgid "Licensee ID" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:719 -msgid "Optional PLUS-ID identifying each Licensee." -msgstr "" - -#: src/properties.cpp:720 -#, fuzzy -msgid "Licensee Name" -msgstr "Nombre del documento" - -#: src/properties.cpp:720 -#, fuzzy -msgid "Name of each Licensee." -msgstr "El tipo de fuente de luz." - -#: src/properties.cpp:721 -#, fuzzy -msgid "End User" -msgstr "Nombre del documento" - -#: src/properties.cpp:721 -msgid "Party or parties ultimately making use of the image under the license." -msgstr "" - -#: src/properties.cpp:722 -#, fuzzy -msgid "End User ID" -msgstr "Nombre del documento" - -#: src/properties.cpp:722 -msgid "Optional PLUS-ID identifying each End User." -msgstr "" - -#: src/properties.cpp:723 -#, fuzzy -msgid "End User Name" -msgstr "Nombre del documento" - -#: src/properties.cpp:723 -#, fuzzy -msgid "Name of each End User." -msgstr "El tipo de fuente de luz." - -#: src/properties.cpp:724 -#, fuzzy -msgid "Licensor" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:724 -msgid "Party or parties granting the license to the Licensee." -msgstr "" - -#: src/properties.cpp:725 -#, fuzzy -msgid "Licensor ID" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:725 -msgid "Optional PLUS-ID identifying each Licensor." -msgstr "" - -#: src/properties.cpp:726 -#, fuzzy -msgid "Licensor Name" -msgstr "Nombre del documento" - -#: src/properties.cpp:726 -#, fuzzy -msgid "Name of each Licensor." -msgstr "El tipo de fuente de luz." - -#: src/properties.cpp:727 -#, fuzzy -msgid "Licensor Address" -msgstr "Espacio de color" - -#: src/properties.cpp:727 -#, fuzzy -msgid "Licensor street address." -msgstr "Nombre del documento" - -#: src/properties.cpp:728 -msgid "Licensor Address Detail" -msgstr "" - -#: src/properties.cpp:728 -#, fuzzy -msgid "Additional Licensor mailing address details." -msgstr "Posicionamiento YCbCr" - -#: src/properties.cpp:729 -#, fuzzy -msgid "Licensor City" -msgstr "Copyright" - -#: src/properties.cpp:729 -#, fuzzy -msgid "Licensor City name." -msgstr "Nombre del documento" - -#: src/properties.cpp:730 -msgid "Licensor State or Province" -msgstr "" - -#: src/properties.cpp:730 -#, fuzzy -msgid "Licensor State or Province name." -msgstr "Nombre del documento" - -#: src/properties.cpp:731 -#, fuzzy -msgid "Licensor Postal Code" -msgstr "Espacio de color" - -#: src/properties.cpp:731 -msgid "Licensor Postal Code or Zip Code." -msgstr "" - -#: src/properties.cpp:732 -#, fuzzy -msgid "Licensor Country" -msgstr "Nombre del documento" - -#: src/properties.cpp:732 -#, fuzzy -msgid "Licensor Country name." -msgstr "Nombre del documento" - -#: src/properties.cpp:733 -#, fuzzy -msgid "Licensor Telephone Type 1" -msgstr "El número F." - -#: src/properties.cpp:733 -#, fuzzy -msgid "Licensor Telephone Type 1." -msgstr "El número F." - -#: src/properties.cpp:734 -#, fuzzy -msgid "Licensor Telephone 1" -msgstr "El número F." - -#: src/properties.cpp:734 -#, fuzzy -msgid "Licensor Telephone number 1." -msgstr "El número F." - -#: src/properties.cpp:735 -#, fuzzy -msgid "Licensor Telephone Type 2" -msgstr "El número F." - -#: src/properties.cpp:735 -#, fuzzy -msgid "Licensor Telephone Type 2." -msgstr "El número F." - -#: src/properties.cpp:736 -#, fuzzy -msgid "Licensor Telephone 2" -msgstr "El número F." - -#: src/properties.cpp:736 -#, fuzzy -msgid "Licensor Telephone number 2." -msgstr "El número F." - -#: src/properties.cpp:737 -#, fuzzy -msgid "Licensor Email" -msgstr "Nombre del documento" - -#: src/properties.cpp:737 -#, fuzzy -msgid "Licensor Email address." -msgstr "Nombre del documento" - -#: src/properties.cpp:738 -#, fuzzy -msgid "Licensor URL" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:738 -msgid "Licensor world wide web address." -msgstr "" - -#: src/properties.cpp:739 -#, fuzzy -msgid "Licensor Notes" -msgstr "Espacio de color" - -#: src/properties.cpp:739 -msgid "" -"Supplemental information for use in identifying and contacting the Licensor/" -"s." -msgstr "" - -#: src/properties.cpp:740 -#, fuzzy -msgid "PLUS Media Summary Code" -msgstr "Modo de exposición" - -#: src/properties.cpp:740 -msgid "" -"A PLUS-standardized alphanumeric code string summarizing the media usages " -"included in the license." -msgstr "" - -#: src/properties.cpp:741 -#, fuzzy -msgid "License Start Date" -msgstr "Rango de transferencia" - -#: src/properties.cpp:741 -#, fuzzy -msgid "The date on which the license takes effect." -msgstr "" -"La fecha y hora cuando se almacenó la imagen en forma de datos digitales." - -#: src/properties.cpp:742 -#, fuzzy -msgid "License End Date" -msgstr "Rango de transferencia" - -#: src/properties.cpp:742 -#, fuzzy -msgid "The date on which the license expires." -msgstr "El tipo de fuente de luz." - -#: src/properties.cpp:743 -#, fuzzy -msgid "Media Constraints" -msgstr "Contraste" - -#: src/properties.cpp:743 -msgid "" -"Constraints limiting the scope of PLUS Media Usage/s included in the license " -"to particular named media or to media not yet specifically defined in the " -"PLUS Media Matrix." -msgstr "" - -#: src/properties.cpp:744 -#, fuzzy -msgid "Region Constraints" -msgstr "Contraste" - -#: src/properties.cpp:744 -msgid "" -"Constraints limiting the scope of geographic distribution to specific " -"cities, states, provinces or other areas to be included in or excluded from " -"the PLUS Regions specified in the Media Usages specified in the license." -msgstr "" - -#: src/properties.cpp:745 -#, fuzzy -msgid "Product or Service Constraints" -msgstr "Contraste" - -#: src/properties.cpp:745 -msgid "" -"Constraints limiting usage of the image to promotion of/association with a " -"named product or service." -msgstr "" - -#: src/properties.cpp:746 -#, fuzzy -msgid "Image File Constraints" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:746 -msgid "" -"Constraints on the changing of the image file name, metadata or file type." -msgstr "" - -#: src/properties.cpp:747 -#, fuzzy -msgid "Image Alteration Constraints" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:747 -msgid "" -"Constraints on alteration of the image by cropping, flipping, retouching, " -"colorization, de-colorization or merging." -msgstr "" - -#: src/properties.cpp:748 -#, fuzzy -msgid "Image Duplication Constraints" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:748 -msgid "Constraints on the creation of duplicates of the image." -msgstr "" - -#: src/properties.cpp:749 -#, fuzzy -msgid "Model Release Status" -msgstr "Modelo" - -#: src/properties.cpp:749 -msgid "" -"Summarizes the availability and scope of model releases authorizing usage of " -"the likenesses of persons appearing in the photograph." -msgstr "" - -#: src/properties.cpp:750 -#, fuzzy -msgid "Model Release ID" -msgstr "Modelo" - -#: src/properties.cpp:750 -msgid "Optional identifier associated with each Model Release." -msgstr "" - -#: src/properties.cpp:751 -msgid "Minor Model Age Disclosure" -msgstr "" - -#: src/properties.cpp:751 -msgid "" -"Age of the youngest model pictured in the image, at the time that the image " -"was made." -msgstr "" - -#: src/properties.cpp:752 -msgid "Property Release Status" -msgstr "" - -#: src/properties.cpp:752 -msgid "" -"Summarizes the availability and scope of property releases authorizing usage " -"of the properties appearing in the photograph." -msgstr "" - -#: src/properties.cpp:753 -#, fuzzy -msgid "Property Release ID" -msgstr "Modelo" - -#: src/properties.cpp:753 -msgid "Optional identifier associated with each Property Release." -msgstr "" - -#: src/properties.cpp:754 -#, fuzzy -msgid "Other Constraints" -msgstr "Contraste" - -#: src/properties.cpp:754 -#, fuzzy -msgid "Additional constraints on the license." -msgstr "Posicionamiento YCbCr" - -#: src/properties.cpp:755 -#, fuzzy -msgid "Credit Line Required" -msgstr "No definido" - -#: src/properties.cpp:755 -msgid "Attribution requirements, if any." -msgstr "" - -#: src/properties.cpp:756 -msgid "Adult Content Warning" -msgstr "" - -#: src/properties.cpp:756 -msgid "Warning indicating the presence of content not suitable for minors." -msgstr "" - -#: src/properties.cpp:757 -#, fuzzy -msgid "Other License Requirements" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:757 -#, fuzzy -msgid "Additional license requirements." -msgstr "Posicionamiento YCbCr" - -#: src/properties.cpp:758 -msgid "Terms and Conditions Text" -msgstr "" - -#: src/properties.cpp:758 -msgid "Terms and Conditions applying to the license." -msgstr "" - -#: src/properties.cpp:759 -msgid "Terms and Conditions URL" -msgstr "" - -#: src/properties.cpp:759 -msgid "URL for Terms and Conditions applying to the license." -msgstr "" - -#: src/properties.cpp:760 -#, fuzzy -msgid "Other License Conditions" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:760 -#, fuzzy -msgid "Additional license conditions." -msgstr "Posicionamiento YCbCr" - -#: src/properties.cpp:761 -#, fuzzy -msgid "Identifies the type of image delivered." -msgstr "Esta etiqueta indica la distancia al sujeto." - -#: src/properties.cpp:762 -#, fuzzy -msgid "Licensor Image ID" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:762 -msgid "Optional identifier assigned by the Licensor to the image." -msgstr "" - -#: src/properties.cpp:763 -msgid "Image File Name As Delivered" -msgstr "" - -#: src/properties.cpp:763 -msgid "" -"Name of the image file delivered to the Licensee for use under the license." -msgstr "" - -#: src/properties.cpp:764 -#, fuzzy -msgid "Image File Format As Delivered" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:764 -msgid "" -"File format of the image file delivered to the Licensee for use under the " -"license." -msgstr "" - -#: src/properties.cpp:765 -msgid "Image File Size As Delivered" -msgstr "" - -#: src/properties.cpp:765 -msgid "Size of the image file delivered to the Licensee." -msgstr "" - -#: src/properties.cpp:766 -#, fuzzy -msgid "Copyright Status" -msgstr "Copyright" - -#: src/properties.cpp:766 -#, fuzzy -msgid "Copyright status of the image." -msgstr "Copyright" - -#: src/properties.cpp:767 -#, fuzzy -msgid "Copyright Registration Number" -msgstr "Nombre del documento" - -#: src/properties.cpp:767 -msgid "Copyright Registration Number, if any, applying to the licensed image." -msgstr "" - -#: src/properties.cpp:768 -msgid "First Publication Date" -msgstr "" - -#: src/properties.cpp:768 -#, fuzzy -msgid "The date on which the image was first published." -msgstr "" -"La fehca y hora cuando se almacenó la imagen en forma de datos digitales." - -#: src/properties.cpp:769 -#, fuzzy -msgid "Copyright Owner" -msgstr "Copyright" - -#: src/properties.cpp:769 -msgid "Owner or owners of the copyright in the licensed image." -msgstr "" - -#: src/properties.cpp:770 -#, fuzzy -msgid "Copyright Owner ID" -msgstr "Copyright" - -#: src/properties.cpp:770 -msgid "Optional PLUS-ID identifying each Copyright Owner." -msgstr "" - -#: src/properties.cpp:771 -#, fuzzy -msgid "Copyright Owner Name" -msgstr "Nombre del documento" - -#: src/properties.cpp:771 -#, fuzzy -msgid "Name of Copyright Owner." -msgstr "Copyright" - -#: src/properties.cpp:772 -#, fuzzy -msgid "Copyright Owner Image ID" -msgstr "Copyright" - -#: src/properties.cpp:772 -msgid "Optional identifier assigned by the Copyright Owner to the image." -msgstr "" - -#: src/properties.cpp:773 -#, fuzzy -msgid "Image Creator" -msgstr "Orientación" - -#: src/properties.cpp:773 -#, fuzzy -msgid "Creator/s of the image." -msgstr "Copyright" - -#: src/properties.cpp:774 -#, fuzzy -msgid "Image Creator ID" -msgstr "Orientación" - -#: src/properties.cpp:774 -msgid "Optional PLUS-ID identifying each Image Creator." -msgstr "" - -#: src/properties.cpp:775 -#, fuzzy -msgid "Image Creator Name" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:775 -#, fuzzy -msgid "Name of Image Creator." -msgstr "Longitud de la imagen" - -#: src/properties.cpp:776 -#, fuzzy -msgid "Image Creator Image ID" -msgstr "Orientación" - -#: src/properties.cpp:776 -msgid "Optional identifier assigned by the Image Creator to the image." -msgstr "" - -#: src/properties.cpp:777 -#, fuzzy -msgid "Image Supplier ID" -msgstr "ID único de imagen" - -#: src/properties.cpp:777 -msgid "Optional PLUS-ID identifying the Image Supplier." -msgstr "" - -#: src/properties.cpp:778 -#, fuzzy -msgid "Image Supplier Name" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:778 -#, fuzzy -msgid "Name of Image Supplier." -msgstr "Longitud de la imagen" - -#: src/properties.cpp:779 -#, fuzzy -msgid "Image Supplier Image ID" -msgstr "ID único de imagen" - -#: src/properties.cpp:779 -msgid "Optional identifier assigned by the Image Supplier to the image." -msgstr "" - -#: src/properties.cpp:780 -#, fuzzy -msgid "Licensee Image ID" -msgstr "Longitud de la imagen" - -#: src/properties.cpp:780 -msgid "Optional identifier assigned by the Licensee to the image." -msgstr "" - -#: src/properties.cpp:781 -#, fuzzy -msgid "Licensee Image Notes" -msgstr "Longitud de la imagen" - -#: src/properties.cpp:781 -#, fuzzy -msgid "Notes added by Licensee." -msgstr "El tipo de fuente de luz." - -#: src/properties.cpp:782 -#, fuzzy -msgid "Other Image Info" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:782 -#, fuzzy -msgid "Additional image information." -msgstr "Posicionamiento YCbCr" - -#: src/properties.cpp:783 -#, fuzzy -msgid "License ID" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:783 -msgid "Optional PLUS-ID assigned by the Licensor to the License." -msgstr "" - -#: src/properties.cpp:784 -#, fuzzy -msgid "Licensor Transaction ID" -msgstr "Fecha y hora" - -#: src/properties.cpp:784 -msgid "" -"Identifier assigned by Licensor for Licensor's reference and internal use." -msgstr "" - -#: src/properties.cpp:785 -#, fuzzy -msgid "Licensee Transaction ID" -msgstr "Fecha y hora" - -#: src/properties.cpp:785 -msgid "" -"Identifier assigned by Licensee for Licensee's reference and internal use." -msgstr "" - -#: src/properties.cpp:786 -#, fuzzy -msgid "Licensee Project Reference" -msgstr "Referencia Blanco/Negro" - -#: src/properties.cpp:786 -msgid "Project reference name or description assigned by Licensee." -msgstr "" - -#: src/properties.cpp:787 -#, fuzzy -msgid "License Transaction Date" -msgstr "Fecha y hora" - -#: src/properties.cpp:787 -#, fuzzy -msgid "The date of the License Transaction." -msgstr "El tipo de fuente de luz." - -#: src/properties.cpp:788 -#, fuzzy -msgid "Reuse" -msgstr "No definido" - -#: src/properties.cpp:788 -msgid "" -"Indicates whether a license is a repeat or an initial license. Reuse may " -"require that licenses stored in files previously delivered to the customer " -"be updated." -msgstr "" - -#: src/properties.cpp:789 -#, fuzzy -msgid "Other License Documents" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:789 -msgid "" -"Reference information for additional documents associated with the license." -msgstr "" - -#: src/properties.cpp:790 -#, fuzzy -msgid "Other License Info" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:790 -#, fuzzy -msgid "Additional license information." -msgstr "Posicionamiento YCbCr" - -#: src/properties.cpp:791 src/properties.cpp:792 src/properties.cpp:793 -#: src/properties.cpp:794 src/properties.cpp:795 -msgid "Optional field for use at Licensor's discretion." -msgstr "" - -#: src/properties.cpp:794 -#, fuzzy -msgid "Custom 4" -msgstr "Proceso personalizado" - -#: src/properties.cpp:795 -#, fuzzy -msgid "Custom 5" -msgstr "Proceso personalizado" - -#: src/properties.cpp:796 -#, fuzzy -msgid "Custom 6" -msgstr "Proceso personalizado" - -#: src/properties.cpp:796 src/properties.cpp:797 src/properties.cpp:798 -#: src/properties.cpp:799 src/properties.cpp:800 -msgid "Optional field for use at Licensee's discretion." -msgstr "" - -#: src/properties.cpp:797 -#, fuzzy -msgid "Custom 7" -msgstr "Proceso personalizado" - -#: src/properties.cpp:798 -#, fuzzy -msgid "Custom 8" -msgstr "Proceso personalizado" - -#: src/properties.cpp:799 -#, fuzzy -msgid "Custom 9" -msgstr "Proceso personalizado" - -#: src/properties.cpp:800 -#, fuzzy -msgid "Custom 10" -msgstr "Proceso personalizado" - -#: src/properties.cpp:807 -msgid "Adult Content Warning Required" -msgstr "" - -#: src/properties.cpp:808 -#, fuzzy -msgid "Not Required" -msgstr "No definido" - -#: src/properties.cpp:814 -msgid "Protected" -msgstr "" - -#: src/properties.cpp:815 -msgid "Public Domain" -msgstr "" - -#: src/properties.cpp:821 -#, fuzzy -msgid "Credit Adjacent To Image" -msgstr "Orientación" - -#: src/properties.cpp:822 -msgid "Credit in Credits Area" -msgstr "" - -#: src/properties.cpp:823 -#, fuzzy -msgid "Credit on Image" -msgstr "Orientación" - -#: src/properties.cpp:824 -#, fuzzy -msgid "Not Require" -msgstr "No definido" - -#: src/properties.cpp:829 -#, fuzzy -msgid "No Colorization" -msgstr "Saturación" - -#: src/properties.cpp:830 -msgid "No Cropping" -msgstr "" - -#: src/properties.cpp:831 -#, fuzzy -msgid "No De-Colorization" -msgstr "Saturación" - -#: src/properties.cpp:832 -msgid "No Flipping" -msgstr "" - -#: src/properties.cpp:833 -#, fuzzy -msgid "No Merging" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/properties.cpp:834 -#, fuzzy -msgid "No Retouching" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/properties.cpp:839 -msgid "Duplication Only as Necessary Under License" -msgstr "" - -#: src/properties.cpp:840 -#, fuzzy -msgid "No Duplication Constraints" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:841 -#, fuzzy -msgid "No Duplication" -msgstr "Baja saturación" - -#: src/properties.cpp:846 -#, fuzzy -msgid "Maintain File Name" -msgstr "Nombre del documento" - -#: src/properties.cpp:847 -#, fuzzy -msgid "Maintain File Type" -msgstr "Nombre del documento" - -#: src/properties.cpp:848 -#, fuzzy -msgid "Maintain ID in File Name" -msgstr "Nombre del documento" - -#: src/properties.cpp:849 -#, fuzzy -msgid "Maintain Metadata" -msgstr "Nombre del documento" - -#: src/properties.cpp:854 -msgid "Windows Bitmap (BMP)" -msgstr "" - -#: src/properties.cpp:855 -msgid "Digital Negative (DNG)" -msgstr "" - -#: src/properties.cpp:856 -msgid "Encapsulated PostScript (EPS)" -msgstr "" - -#: src/properties.cpp:857 -#, fuzzy -msgid "Graphics Interchange Format (GIF)" -msgstr "Formato de intercambio de JPEG" - -#: src/properties.cpp:858 -#, fuzzy -msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" -msgstr "Formato de intercambio de JPEG" - -#: src/properties.cpp:860 -msgid "Macintosh Picture (PICT)" -msgstr "" - -#: src/properties.cpp:861 -msgid "Portable Network Graphics (PNG)" -msgstr "" - -#: src/properties.cpp:862 -msgid "Photoshop Document (PSD)" -msgstr "" - -#: src/properties.cpp:863 -msgid "Proprietary RAW Image Format" -msgstr "" - -#: src/properties.cpp:864 -msgid "Tagged Image File Format (TIFF)" -msgstr "" - -#: src/properties.cpp:865 -msgid "Windows Media Photo (HD Photo)" -msgstr "" - -#: src/properties.cpp:870 -msgid "Greater than 50 MB" -msgstr "" - -#: src/properties.cpp:871 -#, fuzzy -msgid "Up to 1 MB" -msgstr "acción" - -#: src/properties.cpp:872 -#, fuzzy -msgid "Up to 10 MB" -msgstr "acción" - -#: src/properties.cpp:873 -#, fuzzy -msgid "Up to 30 MB" -msgstr "acción" - -#: src/properties.cpp:874 -#, fuzzy -msgid "Up to 50 MB" -msgstr "acción" - -#: src/properties.cpp:879 -#, fuzzy -msgid "Illustrated Image" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:880 -msgid "Multimedia or Composited Image" -msgstr "" - -#: src/properties.cpp:882 -msgid "Photographic Image" -msgstr "" - -#: src/properties.cpp:888 -msgid "Cell" -msgstr "" - -#: src/properties.cpp:889 -msgid "FAX" -msgstr "" - -#: src/properties.cpp:891 -#, fuzzy -msgid "Pager" -msgstr "Fabricante" - -#: src/properties.cpp:892 -msgid "Work" -msgstr "" - -#: src/properties.cpp:897 -#, fuzzy -msgid "Age Unknown" -msgstr "Edad Desconocida" - -#: src/properties.cpp:898 -msgid "Age 25 or Over" -msgstr "Edad 25 años o superior" - -#: src/properties.cpp:899 -msgid "Age 24" -msgstr "Edad 24" - -#: src/properties.cpp:900 -msgid "Age 23" -msgstr "Edad 23" - -#: src/properties.cpp:901 -msgid "Age 22" -msgstr "Edad 22" - -#: src/properties.cpp:902 -msgid "Age 21" -msgstr "Edad 21" - -#: src/properties.cpp:903 -msgid "Age 20" -msgstr "Edad 20" - -#: src/properties.cpp:904 -msgid "Age 19" -msgstr "Edad 19" - -#: src/properties.cpp:905 -msgid "Age 18" -msgstr "Edad 18" - -#: src/properties.cpp:906 -msgid "Age 17" -msgstr "Edad 17" - -#: src/properties.cpp:907 -msgid "Age 16" -msgstr "Edad 16" - -#: src/properties.cpp:908 -msgid "Age 15" -msgstr "" - -#: src/properties.cpp:909 -msgid "Age 14 or Under" -msgstr "Edad 14 o por debajo" - -#: src/properties.cpp:915 src/properties.cpp:923 src/properties.cpp:930 -msgid "Not Applicable" -msgstr "No aplicable" - -#: src/properties.cpp:916 -#, fuzzy -msgid "Unlimited Model Releases" -msgstr "Modelo" - -#: src/properties.cpp:917 -msgid "Limited or Incomplete Model Releases" -msgstr "" - -#: src/properties.cpp:924 -msgid "Unlimited Property Releases" -msgstr "" - -#: src/properties.cpp:925 -msgid "Limited or Incomplete Property Releases" -msgstr "" - -#: src/properties.cpp:931 -msgid "Repeat Use" -msgstr "" - -#: src/properties.cpp:935 src/properties.cpp:944 -#, fuzzy -msgid "Fixture Identification" -msgstr "Versión Exif" - -#: src/properties.cpp:936 src/properties.cpp:945 -#, fuzzy -msgid "Status" -msgstr "Fecha y hora" - -#: src/properties.cpp:936 src/properties.cpp:945 -msgid "A notation making the image unique" -msgstr "" - -#: src/properties.cpp:937 src/properties.cpp:946 -msgid "People" -msgstr "Gente" - -#: src/properties.cpp:938 src/properties.cpp:947 -msgid "CatalogSets" -msgstr "" - -#: src/properties.cpp:938 src/properties.cpp:947 src/properties.cpp:978 -#: src/properties.cpp:982 -msgid "Descriptive markers of catalog items by content" -msgstr "" - -#: src/properties.cpp:953 -#, fuzzy -msgid "RegionInfo" -msgstr "Ancho de la imagen" - -#: src/properties.cpp:953 -msgid "Microsoft Photo people-tagging metadata root" -msgstr "" - -#: src/properties.cpp:959 -msgid "DateRegionsValid" -msgstr "" - -#: src/properties.cpp:959 -#, fuzzy -msgid "Date the last region was created" -msgstr "" -"La fehca y hora cuando se almacenó la imagen en forma de datos digitales." - -#: src/properties.cpp:960 src/properties.cpp:975 -#, fuzzy -msgid "Regions" -msgstr "Versión Exif" - -#: src/properties.cpp:960 -msgid "Contains Regions/person tags" -msgstr "" - -#: src/properties.cpp:966 -#, fuzzy -msgid "PersonDisplayName" -msgstr "Nombre del documento" - -#: src/properties.cpp:966 -msgid "Name of the person (in the given rectangle)" -msgstr "" - -#: src/properties.cpp:967 -msgid "Rectangle" -msgstr "" - -#: src/properties.cpp:967 -msgid "Rectangle that identifies the person within the photo" -msgstr "" - -#: src/properties.cpp:968 -msgid "PersonEmailDigest" -msgstr "" - -#: src/properties.cpp:968 -msgid "" -"SHA-1 encrypted message hash of the person's Windows Live e-mail address" -msgstr "" - -#: src/properties.cpp:969 -msgid "PersonLiveCID" -msgstr "" - -#: src/properties.cpp:969 -msgid "Signed decimal representation of the person's Windows Live CID" -msgstr "" - -#: src/properties.cpp:975 -msgid "Main structure containing region based information" -msgstr "" - -#: src/properties.cpp:976 -msgid "AppliedToDimensions" -msgstr "" - -#: src/properties.cpp:976 -msgid "Width and height of image when storing region data" -msgstr "" - -#: src/properties.cpp:977 -msgid "RegionList" -msgstr "" - -#: src/properties.cpp:977 -#, fuzzy -msgid "List of Region structures" -msgstr "Espacio de color" - -#: src/properties.cpp:978 -#, fuzzy -msgid "Area" -msgstr "Modo de exposición" - -#: src/properties.cpp:979 -msgid "Type purpose of region (Face|Pet|Focus|BarCode)" -msgstr "" - -#: src/properties.cpp:980 -msgid "Name/ short description of content in image region" -msgstr "" - -#: src/properties.cpp:981 -msgid "" -"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" -"NotEvaluatedNotUsed)" -msgstr "" - -#: src/properties.cpp:982 -#, fuzzy -msgid "FocusUsage" -msgstr "Modo de exposición" - -#: src/properties.cpp:983 -#, fuzzy -msgid "BarCodeValue" -msgstr "acción" - -#: src/properties.cpp:983 -msgid "Decoded BarCode value string" -msgstr "" - -#: src/properties.cpp:984 -#, fuzzy -msgid "Extensions" -msgstr "Versión Exif" - -#: src/properties.cpp:984 -msgid "Any top level XMP property to describe the region content" -msgstr "" - -#: src/sigmamn.cpp:62 -#, fuzzy -msgid "Resolution Mode" -msgstr "Resolución X" - -#: src/sigmamn.cpp:63 -#, fuzzy -msgid "Resolution mode" -msgstr "Resolución X" - -#: src/sigmamn.cpp:65 -#, fuzzy -msgid "Autofocus Mode" -msgstr "Exposición automática" - -#: src/sigmamn.cpp:66 -#, fuzzy -msgid "Autofocus mode" -msgstr "Exposición automática" - -#: src/sigmamn.cpp:68 -#, fuzzy -msgid "Focus Setting" -msgstr "Modo de exposición" - -#: src/sigmamn.cpp:69 -#, fuzzy -msgid "Focus setting" -msgstr "Modo de exposición" - -#: src/sigmamn.cpp:80 -#, fuzzy -msgid "Lens Range" -msgstr "Rango de transferencia" - -#: src/sigmamn.cpp:81 -#, fuzzy -msgid "Lens focal length range" -msgstr "Distancia focal" - -#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 -#, fuzzy -msgid "Shadow" -msgstr "Sombra" - -#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 -#, fuzzy -msgid "Highlight" -msgstr "Luz de día" - -#: src/sigmamn.cpp:104 -#, fuzzy -msgid "Fill Light" -msgstr "Flash de relleno suave" - -#: src/sigmamn.cpp:105 -#, fuzzy -msgid "X3 Fill light" -msgstr "Luz de relleno X3" - -#: src/sigmamn.cpp:107 -#, fuzzy -msgid "Color Adjustment" -msgstr "Ajuste de color" - -#: src/sigmamn.cpp:108 -#, fuzzy -msgid "Color adjustment" -msgstr "Ajuste de color" - -#: src/sigmamn.cpp:110 -#, fuzzy -msgid "Adjustment Mode" -msgstr "Modo de ajuste" - -#: src/sigmamn.cpp:111 -#, fuzzy -msgid "Adjustment mode" -msgstr "Modo de ajuste" - -#: src/sigmamn.cpp:122 -#, fuzzy -msgid "Auto Bracket" -msgstr "Auto horquillado (Auto bracket)" - -#: src/sigmamn.cpp:123 src/tags.cpp:1490 -msgid "Auto bracket" -msgstr "Auto horquillado (Auto bracket)" - -#: src/sigmamn.cpp:127 -#, fuzzy -msgid "Unknown SigmaMakerNote tag" -msgstr "Etiqueta SigmaMakerNote desconocida" - -#: src/sigmamn.cpp:170 -#, fuzzy -msgid "8-Segment" -msgstr "multi-lugar" - -#: src/sonymn.cpp:88 -#, fuzzy -msgid "Standard " -msgstr "Estándar" - -#: src/sonymn.cpp:91 -msgid "Advanced Lv1" -msgstr "Lv1 avanzado" - -#: src/sonymn.cpp:92 -msgid "Advanced Lv2" -msgstr "Lv2 avanzado" - -#: src/sonymn.cpp:93 -msgid "Advanced Lv3" -msgstr "Lv3 avanzado" - -#: src/sonymn.cpp:94 -msgid "Advanced Lv4" -msgstr "Lv4 avanzado" - -#: src/sonymn.cpp:95 -msgid "Advanced Lv5" -msgstr "Lv5 avanzado" - -#: src/sonymn.cpp:109 -#, fuzzy -msgid "Landscape " -msgstr "Paisaje" - -#: src/sonymn.cpp:113 -#, fuzzy -msgid "Night Scene / Twilight" -msgstr "Escena nocturna / Crepúsculo" - -#: src/sonymn.cpp:114 -msgid "Hi-Speed Shutter" -msgstr "Obturador alta velocidad" - -#: src/sonymn.cpp:115 -#, fuzzy -msgid "Twilight Portrait" -msgstr "Retrato Crepúsculo" - -#: src/sonymn.cpp:116 -#, fuzzy -msgid "Soft Snap" -msgstr "Suave" - -#: src/sonymn.cpp:118 -#, fuzzy -msgid "Smile Shutter" -msgstr "obturador lento" - -#: src/sonymn.cpp:120 -#, fuzzy -msgid "High Sensitivity" -msgstr "Alta Sensibilidad" - -#: src/sonymn.cpp:121 -msgid "Advanced Sports Shooting" -msgstr "Deportes" - -#: src/sonymn.cpp:123 -#, fuzzy -msgid "Gourmet" -msgstr "Alimentos" - -#: src/sonymn.cpp:125 -#, fuzzy -msgid "Handheld Twilight" -msgstr "Luz de día" - -#: src/sonymn.cpp:126 -#, fuzzy -msgid "Anti Motion Blur" -msgstr "Modo de exposición" - -#: src/sonymn.cpp:128 -msgid "Backlight Correction HDR" -msgstr "Correccion HDR Backlight" - -#: src/sonymn.cpp:142 -#, fuzzy -msgid "On (Continuous)" -msgstr "Exposición automática" - -#: src/sonymn.cpp:143 -#, fuzzy -msgid "On (Shooting)" -msgstr "Modo de métrica" - -#: src/sonymn.cpp:151 -msgid "Plus" -msgstr "" - -#: src/sonymn.cpp:167 -#, fuzzy -msgid "White Flourescent" -msgstr "Fluorescente" - -#: src/sonymn.cpp:168 -#, fuzzy -msgid "Cool White Flourescent" -msgstr "Fluorescente" - -#: src/sonymn.cpp:169 -#, fuzzy -msgid "Day White Flourescent" -msgstr "Fluorescente" - -#: src/sonymn.cpp:172 -#, fuzzy -msgid "Underwater 1 (Blue Water)" -msgstr "Tiempo bueno" - -#: src/sonymn.cpp:173 -#, fuzzy -msgid "Underwater 2 (Green Water)" -msgstr "Tiempo bueno" - -#: src/sonymn.cpp:180 -msgid "Permanent-AF" -msgstr "Auto enfoque permanente" - -#: src/sonymn.cpp:188 -#, fuzzy -msgid "Center AF" -msgstr "Autofocus centrado" - -#: src/sonymn.cpp:189 -#, fuzzy -msgid "Spot AF" -msgstr "Autofocus punto" - -#: src/sonymn.cpp:190 -msgid "Flexible Spot AF" -msgstr "Autoenfoque de punto flexible" - -#: src/sonymn.cpp:191 -msgid "Touch AF" -msgstr "Autofocus Touch" - -#: src/sonymn.cpp:192 -#, fuzzy -msgid "Manual Focus" -msgstr "Enfoque manual" - -#: src/sonymn.cpp:193 -#, fuzzy -msgid "Face Detected" -msgstr "Cara detectada" - -#: src/sonymn.cpp:208 -#, fuzzy -msgid "Close Focus" -msgstr "Exposición automática" - -#: src/sonymn.cpp:224 -#, fuzzy -msgid "Exposure Bracketing" -msgstr "Ajuste de exposición" - -#: src/sonymn.cpp:298 src/sonymn.cpp:299 -#, fuzzy -msgid "Multi Burst Mode" -msgstr "Modo de exposición multi ráfaga" - -#: src/sonymn.cpp:301 src/sonymn.cpp:302 -#, fuzzy -msgid "Multi Burst Image Width" -msgstr "Ancho de la imagen en modo ráfaga" - -#: src/sonymn.cpp:304 src/sonymn.cpp:305 -#, fuzzy -msgid "Multi Burst Image Height" -msgstr "Longitud de la imagen en modo ráfaga" - -#: src/sonymn.cpp:315 -#, fuzzy -msgid "JPEG preview image" -msgstr "Orientación" - -#: src/sonymn.cpp:341 -#, fuzzy -msgid "Auto HDR" -msgstr "Alto Rango Dinámico automático" - -#: src/sonymn.cpp:342 -#, fuzzy -msgid "High Definition Range Mode" -msgstr "Rango de alta definición automático" - -#: src/sonymn.cpp:346 -#, fuzzy -msgid "Shot Information" -msgstr "Posicionamiento YCbCr" - -#: src/sonymn.cpp:351 src/sonymn.cpp:352 -#, fuzzy -msgid "Sony Model ID" -msgstr "Modelo Sony" - -#: src/sonymn.cpp:354 src/sonymn.cpp:355 -#, fuzzy -msgid "Color Reproduction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/sonymn.cpp:369 src/sonymn.cpp:370 src/sonymn.cpp:423 src/sonymn.cpp:424 -#, fuzzy -msgid "Dynamic Range Optimizer" -msgstr "Balance de blanco" - -#: src/sonymn.cpp:378 src/sonymn.cpp:379 -#, fuzzy -msgid "Minolta MakerNote" -msgstr "Versión Exif" - -#: src/sonymn.cpp:384 src/sonymn.cpp:385 -#, fuzzy -msgid "Full Image Size" -msgstr "Tamaño de la imagen" - -#: src/sonymn.cpp:387 -#, fuzzy -msgid "Preview Image Size" -msgstr "Tamaño de vista previa" - -#: src/sonymn.cpp:388 -#, fuzzy -msgid "Preview image size" -msgstr "Tamaño de vista previa" - -#: src/sonymn.cpp:402 src/sonymn.cpp:403 src/sonymn.cpp:613 src/sonymn.cpp:614 -msgid "AF Illuminator" -msgstr "Autoenfoque Iluminador" - -#: src/sonymn.cpp:405 src/sonymn.cpp:406 -#, fuzzy -msgid "JPEG Quality" -msgstr "Nivel de la batería" - -#: src/sonymn.cpp:411 src/sonymn.cpp:412 -#, fuzzy -msgid "Release Mode" -msgstr "Flash" - -#: src/sonymn.cpp:415 -msgid "Shot number in continous burst mode" -msgstr "Número de dispáros en modo ráfaga contínua" - -#: src/sonymn.cpp:417 src/sonymn.cpp:418 -msgid "Anti-Blur" -msgstr "anti-borroso" - -#: src/sonymn.cpp:420 src/sonymn.cpp:421 src/sonymn.cpp:621 src/sonymn.cpp:622 -#, fuzzy -msgid "Long Exposure Noise Reduction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/sonymn.cpp:426 src/sonymn.cpp:427 -msgid "Intelligent Auto" -msgstr "Modo auto inteligente" - -#: src/sonymn.cpp:434 -#, fuzzy -msgid "Unknown Sony1MakerNote tag" -msgstr "Versión Exif" - -#: src/sonymn.cpp:448 -#, fuzzy -msgid "Continuous High" -msgstr "Exposición automática, alta" - -#: src/sonymn.cpp:452 -#, fuzzy -msgid "Continuous Low" -msgstr "Exposición automática, baja" - -#: src/sonymn.cpp:454 src/sonymn.cpp:455 -#, fuzzy -msgid "D-Range Optimizer Bracketing Low" -msgstr "Orientación" - -#: src/sonymn.cpp:487 -#, fuzzy -msgid "Autumn" -msgstr "Otoño" - -#: src/sonymn.cpp:493 -msgid "ADI" -msgstr "Imágen Digital Avanzada" - -#: src/sonymn.cpp:509 src/sonymn.cpp:510 src/sonymn.cpp:511 -msgid "StyleBox1" -msgstr "" - -#: src/sonymn.cpp:529 -#, fuzzy -msgid "Auto No Flash" -msgstr "Auto sin flash" - -#: src/sonymn.cpp:584 src/sonymn.cpp:585 src/sonymn.cpp:690 src/sonymn.cpp:691 -#, fuzzy -msgid "Dynamic Range Optimizer Level" -msgstr "Balance de blanco" - -#: src/sonymn.cpp:587 src/sonymn.cpp:588 src/sonymn.cpp:693 src/sonymn.cpp:694 -#, fuzzy -msgid "Creative Style" -msgstr "Creativo" - -#: src/sonymn.cpp:599 src/sonymn.cpp:600 -#, fuzzy -msgid "Zone Matching Value" -msgstr "Espacio de color" - -#: src/sonymn.cpp:617 src/sonymn.cpp:618 -#, fuzzy -msgid "AF With Shutter" -msgstr "obturador" - -#: src/sonymn.cpp:625 src/sonymn.cpp:626 -#, fuzzy -msgid "High ISO NoiseReduction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/sonymn.cpp:629 src/sonymn.cpp:630 -#, fuzzy -msgid "Image Style" -msgstr "Estilo de imágen" - -#: src/sonymn.cpp:655 -#, fuzzy -msgid "Unknown Sony1 Camera Settings tag" -msgstr "Contraste" - -#: src/sonymn.cpp:719 -#, fuzzy -msgid "Unknown Sony1 Camera Settings 2 tag" -msgstr "Versión Exif" - -#: src/tags.cpp:184 -#, fuzzy -msgid "Unknown section" -msgstr "Versión Exif" - -#: src/tags.cpp:185 -#, fuzzy -msgid "Image data structure" -msgstr "Ancho de la imagen" - -#: src/tags.cpp:186 -#, fuzzy -msgid "Recording offset" -msgstr "Grabando offset" - -#: src/tags.cpp:187 -#, fuzzy -msgid "Image data characteristics" -msgstr "Ancho de la imagen" - -#: src/tags.cpp:188 -#, fuzzy -msgid "Other data" -msgstr "Otros" - -#: src/tags.cpp:189 -#, fuzzy -msgid "Exif data structure" -msgstr "Estructura de datos Exif" - -#: src/tags.cpp:191 -#, fuzzy -msgid "Image configuration" -msgstr "Configuración planar" - -#: src/tags.cpp:192 -#, fuzzy -msgid "User information" -msgstr "Posicionamiento YCbCr" - -#: src/tags.cpp:193 -#, fuzzy -msgid "Related file" -msgstr "Archivo relacionado" - -#: src/tags.cpp:194 -#, fuzzy -msgid "Date and time" -msgstr "Fecha y hora" - -#: src/tags.cpp:195 -#, fuzzy -msgid "Picture taking conditions" -msgstr "Condiciones de toma de la imágen" - -#: src/tags.cpp:196 -#, fuzzy -msgid "GPS information" -msgstr "Posicionamiento YCbCr" - -#: src/tags.cpp:197 -#, fuzzy -msgid "Interoperability information" -msgstr "Posicionamiento YCbCr" - -#: src/tags.cpp:198 -#, fuzzy -msgid "Vendor specific information" -msgstr "Información específica del vendedor" - -#: src/tags.cpp:199 -msgid "Adobe DNG tags" -msgstr "Etiquetas Adobe DNG" - -#: src/tags.cpp:200 -#, fuzzy -msgid "Panasonic RAW tags" -msgstr "etiquetas Panasonic RAW" - -#: src/tags.cpp:201 -msgid "TIFF/EP tags" -msgstr "" - -#: src/tags.cpp:202 -msgid "TIFF PageMaker 6.0 tags" -msgstr "" - -#: src/tags.cpp:203 -msgid "Adobe OPI tags" -msgstr "" - -#: src/tags.cpp:204 -#, fuzzy -msgid "Last section" -msgstr "Contraste" - -#: src/tags.cpp:220 -#, fuzzy -msgid "Primary image" -msgstr "Cromaticidades primarias" - -#: src/tags.cpp:221 -#, fuzzy -msgid "Thumbnail/Preview image" -msgstr "Miniatura / Vista previa" - -#: src/tags.cpp:222 -#, fuzzy -msgid "Primary image, Multi page file" -msgstr "Cromaticidades primarias" - -#: src/tags.cpp:223 -msgid "Thumbnail/Preview image, Multi page file" -msgstr "Miniatura / Vista previa, archivo multipagina" - -#: src/tags.cpp:224 -msgid "Primary image, Transparency mask" -msgstr "Máscara de transparencia, imágen principal" - -#: src/tags.cpp:225 -msgid "Thumbnail/Preview image, Transparency mask" -msgstr "Miniatura / Vista previa, máscara de transparencia" - -#: src/tags.cpp:226 -msgid "Primary image, Multi page file, Transparency mask" -msgstr "Imágen principal, Archivo multi-página, Máscara de transparencia" - -#: src/tags.cpp:227 src/tags.cpp:228 -msgid "Thumbnail/Preview image, Multi page file, Transparency mask" -msgstr "" -"Imágen miniatura/ Vista previa, Archivo multi-página, Máscara de " -"transparencia" - -#: src/tags.cpp:233 -msgid "Full-resolution image data" -msgstr "datos de imágen de alta resolución" - -#: src/tags.cpp:234 -msgid "Reduced-resolution image data" -msgstr "datos de imágen de baja resolución" - -#: src/tags.cpp:235 -msgid "A single page of a multi-page image" -msgstr "Una única página de una imágen multipágina" - -#: src/tags.cpp:241 -#, fuzzy -msgid "inch" -msgstr "Pulgada" - -#: src/tags.cpp:248 -msgid "CCITT RLE" -msgstr "" - -#: src/tags.cpp:249 -msgid "T4/Group 3 Fax" -msgstr "" - -#: src/tags.cpp:250 -msgid "T6/Group 4 Fax" -msgstr "" - -#: src/tags.cpp:251 -msgid "LZW" -msgstr "LZW (compresión sin pérdidas para tiff)" - -#: src/tags.cpp:252 -msgid "JPEG (old-style)" -msgstr "JPEG (estilo antiguo)" - -#: src/tags.cpp:253 -msgid "JPEG" -msgstr "" - -#: src/tags.cpp:254 -msgid "Adobe Deflate" -msgstr "" - -#: src/tags.cpp:255 -msgid "JBIG B&W" -msgstr "JBIG B/N" - -#: src/tags.cpp:256 -#, fuzzy -msgid "JBIG Color" -msgstr "JBIG en color" - -#: src/tags.cpp:257 -msgid "Next 2-bits RLE" -msgstr "" - -#: src/tags.cpp:258 -#, fuzzy -msgid "Epson ERF Compressed" -msgstr "Epson ERF Comprimido" - -#: src/tags.cpp:259 -#, fuzzy -msgid "Samsung SRW Compressed" -msgstr "Epson ERF Comprimido" - -#: src/tags.cpp:260 -msgid "CCITT RLE 1-word" -msgstr "" - -#: src/tags.cpp:261 -msgid "PackBits (Macintosh RLE)" -msgstr "" - -#: src/tags.cpp:262 -msgid "Thunderscan RLE" -msgstr "" - -#: src/tags.cpp:263 -msgid "IT8 CT Padding" -msgstr "" - -#: src/tags.cpp:264 -msgid "IT8 Linework RLE" -msgstr "" - -#: src/tags.cpp:265 -#, fuzzy -msgid "IT8 Monochrome Picture" -msgstr "IT8 Imágen monocromática" - -#: src/tags.cpp:266 -msgid "IT8 Binary Lineart" -msgstr "" - -#: src/tags.cpp:267 -msgid "Pixar Film (10-bits LZW)" -msgstr "" - -#: src/tags.cpp:268 -msgid "Pixar Log (11-bits ZIP)" -msgstr "" - -#: src/tags.cpp:269 -msgid "Pixar Deflate" -msgstr "" - -#: src/tags.cpp:270 -msgid "Kodak DCS Encoding" -msgstr "" - -#: src/tags.cpp:271 -#, fuzzy -msgid "ISO JBIG" -msgstr "Modo de exposición" - -#: src/tags.cpp:272 -msgid "SGI Log Luminance RLE" -msgstr "" - -#: src/tags.cpp:273 -msgid "SGI Log 24-bits packed" -msgstr "" - -#: src/tags.cpp:274 -msgid "Leadtools JPEG 2000" -msgstr "" - -#: src/tags.cpp:275 -#, fuzzy -msgid "Nikon NEF Compressed" -msgstr "Nikon NEF Comprimido" - -#: src/tags.cpp:276 -#, fuzzy -msgid "Kodak DCR Compressed" -msgstr "Kodak DCR Comprimido" - -#: src/tags.cpp:277 -#, fuzzy -msgid "Pentax PEF Compressed" -msgstr "Pentax PEF Comprimido" - -#: src/tags.cpp:282 -msgid "White Is Zero" -msgstr "el blanco es el cero" - -#: src/tags.cpp:283 -msgid "Black Is Zero" -msgstr "el negro es el cero" - -#: src/tags.cpp:284 -msgid "RGB" -msgstr "RVA" - -#: src/tags.cpp:285 -msgid "RGB Palette" -msgstr "Paleta RVA (RGB)" - -#: src/tags.cpp:286 -msgid "Transparency Mask" -msgstr "Máscara de transparencia" - -#: src/tags.cpp:287 src/tags.cpp:326 -msgid "CMYK" -msgstr "CMYK" - -#: src/tags.cpp:288 -msgid "YCbCr" -msgstr "TCvCr" - -#: src/tags.cpp:289 -msgid "CIELab" -msgstr "" - -#: src/tags.cpp:290 -msgid "ICCLab" -msgstr "" - -#: src/tags.cpp:291 -msgid "ITULab" -msgstr "" - -#: src/tags.cpp:292 -#, fuzzy -msgid "Color Filter Array" -msgstr "Espacio de color" - -#: src/tags.cpp:293 -msgid "Pixar LogL" -msgstr "" - -#: src/tags.cpp:294 -msgid "Pixar LogLuv" -msgstr "" - -#: src/tags.cpp:295 -msgid "Linear Raw" -msgstr "" - -#: src/tags.cpp:300 -msgid "No dithering or halftoning" -msgstr "" - -#: src/tags.cpp:301 -msgid "Ordered dither or halftone technique" -msgstr "" - -#: src/tags.cpp:302 -#, fuzzy -msgid "Randomized process" -msgstr "Proceso aleatorio" - -#: src/tags.cpp:307 -#, fuzzy -msgid "top, left" -msgstr "arriba - izquierda" - -#: src/tags.cpp:308 -#, fuzzy -msgid "top, right" -msgstr "arriba - derecha" - -#: src/tags.cpp:309 -#, fuzzy -msgid "bottom, right" -msgstr "abajo - derecha" - -#: src/tags.cpp:310 -#, fuzzy -msgid "bottom, left" -msgstr "abajo - izquierda" - -#: src/tags.cpp:311 -#, fuzzy -msgid "left, top" -msgstr "izquierda - arriba" - -#: src/tags.cpp:312 -#, fuzzy -msgid "right, top" -msgstr "derecha - arriba" - -#: src/tags.cpp:313 -#, fuzzy -msgid "right, bottom" -msgstr "derecha - abajo" - -#: src/tags.cpp:314 src/tags.cpp:315 -#, fuzzy -msgid "left, bottom" -msgstr "izquierda - abajo" - -#: src/tags.cpp:320 -msgid "No prediction scheme used" -msgstr "" - -#: src/tags.cpp:321 -msgid "Horizontal differencing" -msgstr "" - -#: src/tags.cpp:327 -msgid "not CMYK" -msgstr "sin CMYK" - -#: src/tags.cpp:332 -msgid "Unsigned integer data" -msgstr "datos enteros no firmados" - -#: src/tags.cpp:333 -msgid "Two's complement signed integer data" -msgstr "" - -#: src/tags.cpp:334 -msgid "IEEE floating point data" -msgstr "" - -#: src/tags.cpp:335 src/tags.cpp:336 -#, fuzzy -msgid "Undefined data format" -msgstr "Formato de datos indefinido" - -#: src/tags.cpp:341 -#, fuzzy -msgid "Not indexed" -msgstr "No definido" - -#: src/tags.cpp:342 src/tags.cpp:648 -#, fuzzy -msgid "Indexed" -msgstr "Indefinido" - -#: src/tags.cpp:347 -msgid "A" -msgstr "" - -#: src/tags.cpp:348 -#, fuzzy -msgid "B" -msgstr "A" - -#: src/tags.cpp:349 -#, fuzzy -msgid "C" -msgstr "Cb" - -#: src/tags.cpp:350 -msgid "A+B-C" -msgstr "" - -#: src/tags.cpp:351 -msgid "A+((B-C)/2)" -msgstr "" - -#: src/tags.cpp:352 -msgid "B+((A-C)/2)" -msgstr "" - -#: src/tags.cpp:353 -msgid "(A+B)/2" -msgstr "" - -#: src/tags.cpp:358 -#, fuzzy -msgid "Centered" -msgstr "centrado" - -#: src/tags.cpp:359 -#, fuzzy -msgid "Co-sited" -msgstr "co-situado" - -#: src/tags.cpp:364 -#, fuzzy -msgid "No flash" -msgstr "Sin Flash" - -#: src/tags.cpp:366 -#, fuzzy -msgid "Fired, return light not detected" -msgstr "Luz de retorno estrosboscópica no detectada." - -#: src/tags.cpp:367 -#, fuzzy -msgid "Fired, return light detected" -msgstr "Luz de retorno estrosboscópica detectada." - -#: src/tags.cpp:368 -#, fuzzy -msgid "Yes, did not fire" -msgstr "El flash no disparó." - -#: src/tags.cpp:369 -#, fuzzy -msgid "Yes, compulsory" -msgstr "El flash disparó en modo compulsivo, modo de reducción de ojos rojos." - -#: src/tags.cpp:370 -#, fuzzy -msgid "Yes, compulsory, return light not detected" -msgstr "Flash disparado en modo compulsivo, luz de retorno no detectada." - -#: src/tags.cpp:371 -#, fuzzy -msgid "Yes, compulsory, return light detected" -msgstr "Flash disparado en modo compulsivo, luz de retorno detectada." - -#: src/tags.cpp:372 -msgid "No, compulsory" -msgstr "No, modo compulsivo" - -#: src/tags.cpp:373 -#, fuzzy -msgid "No, did not fire, return light not detected" -msgstr "Flash no disparó y Luz de retorno estrosboscópica no detectada." - -#: src/tags.cpp:374 -#, fuzzy -msgid "No, auto" -msgstr "No, auto" - -#: src/tags.cpp:375 -#, fuzzy -msgid "Yes, auto" -msgstr "Si, auto" - -#: src/tags.cpp:376 -#, fuzzy -msgid "Yes, auto, return light not detected" -msgstr "Luz de retorno estrosboscópica no detectada." - -#: src/tags.cpp:377 -#, fuzzy -msgid "Yes, auto, return light detected" -msgstr "Luz de retorno estrosboscópica detectada." - -#: src/tags.cpp:378 -#, fuzzy -msgid "No flash function" -msgstr "Sin función de flash." - -#: src/tags.cpp:379 -#, fuzzy -msgid "No, no flash function" -msgstr "No, Sin función de flash." - -#: src/tags.cpp:380 -#, fuzzy -msgid "Yes, red-eye reduction" -msgstr "Flash disparado en modo ojos rojos." - -#: src/tags.cpp:381 -#, fuzzy -msgid "Yes, red-eye reduction, return light not detected" -msgstr "Flash disparado en modo ojos rojos, luz de retorno no detectada." - -#: src/tags.cpp:382 -#, fuzzy -msgid "Yes, red-eye reduction, return light detected" -msgstr "Flash disparado en modo ojos rojos, luz de retorno detectada." - -#: src/tags.cpp:383 -#, fuzzy -msgid "Yes, compulsory, red-eye reduction" -msgstr "El flash disparó en modo compulsivo y de reducción de ojos rojos." - -#: src/tags.cpp:384 -#, fuzzy -msgid "Yes, compulsory, red-eye reduction, return light not detected" -msgstr "" -"Flash disparado en modos compulsivo y de reducción de ojos rojos, luz de " -"retorno no detectada." - -#: src/tags.cpp:385 -#, fuzzy -msgid "Yes, compulsory, red-eye reduction, return light detected" -msgstr "" -"Flash disparado en modos compulsivo y de reducción de ojos rojos, luz de " -"retorno detectada." - -#: src/tags.cpp:386 -#, fuzzy -msgid "No, red-eye reduction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/tags.cpp:387 -#, fuzzy -msgid "No, auto, red-eye reduction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/tags.cpp:388 -#, fuzzy -msgid "Yes, auto, red-eye reduction" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/tags.cpp:389 -#, fuzzy -msgid "Yes, auto, red-eye reduction, return light not detected" -msgstr "" -"El flash disparó, modo de reducción de ojos rojos, luz de retorno no " -"detectada." - -#: src/tags.cpp:390 -#, fuzzy -msgid "Yes, auto, red-eye reduction, return light detected" -msgstr "" -"El flash disparó, modo de reducción de ojos rojos, luz de retorno detectada." - -#: src/tags.cpp:395 -msgid "Rectangular (or square) layout" -msgstr "Escena rectangular (o cuadrada)" - -#: src/tags.cpp:396 -msgid "Staggered layout A: even columns are offset down by 1/2 row" -msgstr "" - -#: src/tags.cpp:397 -msgid "Staggered layout B: even columns are offset up by 1/2 row" -msgstr "" - -#: src/tags.cpp:398 -msgid "Staggered layout C: even rows are offset right by 1/2 column" -msgstr "" - -#: src/tags.cpp:399 -msgid "Staggered layout D: even rows are offset left by 1/2 column" -msgstr "" - -#: src/tags.cpp:404 -#, fuzzy -msgid "Processing Software" -msgstr "Método de sensado" - -#: src/tags.cpp:405 -msgid "The name and version of the software used to post-process the picture." -msgstr "Nombre y versión del software usado para post-procesar la imágen" - -#: src/tags.cpp:408 -#, fuzzy -msgid "New Subfile Type" -msgstr "Ancho de la imagen" - -#: src/tags.cpp:409 -msgid "A general indication of the kind of data contained in this subfile." -msgstr "Indicación general del tipo de datos contenido" - -#: src/tags.cpp:411 -#, fuzzy -msgid "Subfile Type" -msgstr "Ancho de la imagen" - -#: src/tags.cpp:412 -msgid "" -"A general indication of the kind of data contained in this subfile. This " -"field is deprecated. The NewSubfileType field should be used instead." -msgstr "" -"Una indicación general del tipo de datos contenidos en éste subdocumento. En " -"desusousar el campo NewSubfileType en su lugar." - -#: src/tags.cpp:416 -#, fuzzy -msgid "" -"The number of columns of image data, equal to the number of pixels per row. " -"In JPEG compressed data a JPEG marker is used instead of this tag." -msgstr "" -"La cantidad de columnas de los datos de la imagen, igual al número de " -"píxeles por fila. En datos comprimidos JPEG se usa un marcador JPEG en vez " -"de esta etiqueta." - -#: src/tags.cpp:421 -msgid "" -"The number of rows of image data. In JPEG compressed data a JPEG marker is " -"used instead of this tag." -msgstr "" -"La cantidad de filas de datos de la imagen. En datos comprimidos JPEG se " -"utiliza un marcador JPEG en vez de esta etiqueta." - -#: src/tags.cpp:424 -msgid "Bits per Sample" -msgstr "Bits por muestra" - -#: src/tags.cpp:425 -#, fuzzy -msgid "" -"The number of bits per image component. In this standard each component of " -"the image is 8 bits, so the value for this tag is 8. See also " -". In JPEG compressed data a JPEG marker is used instead of " -"this tag." -msgstr "" -"El número de bits por componente de imagen. En este estándar cada componente " -"de imagen es 8 bits, por lo que el valor de esta etiqueta es 8. Vea también " -". En datos comprimidos JPEG se utiliza un marcador JPEG en " -"vez de esta etiqueta." - -#: src/tags.cpp:431 -msgid "" -"The compression scheme used for the image data. When a primary image is JPEG " -"compressed, this designation is not necessary and is omitted. When " -"thumbnails use JPEG compression, this tag value is set to 6." -msgstr "" -"El esquema de compresión usado para los datos de la imagen. Cuando una " -"imagen primaria está comprimida con JPEG, esto no es necesario y se omite. " -"Cuando las miniaturas utilizan compresión JPEG, el valor de esta etiqueta es " -"6." - -#: src/tags.cpp:437 -msgid "" -"The pixel composition. In JPEG compressed data a JPEG marker is used instead " -"of this tag." -msgstr "" -"La composición del pixel. En datos comprimidos JPEG se utiliza un marcador " -"JPEG en vez de esta etiqueta." - -#: src/tags.cpp:440 -#, fuzzy -msgid "Threshholding" -msgstr "Umbral (Reducción de imágen a B/N puros)" - -#: src/tags.cpp:441 -msgid "" -"For black and white TIFF files that represent shades of gray, the technique " -"used to convert from gray to black and white pixels." -msgstr "" -"Para TIFFs en blanco y negro, la técnica usada para convertirlos tonos de " -"grís en pixeles blancos o negros (puros)." - -#: src/tags.cpp:444 -#, fuzzy -msgid "Cell Width" -msgstr "Ancho de céldas" - -#: src/tags.cpp:445 -msgid "" -"The width of the dithering or halftoning matrix used to create a dithered or " -"halftoned bilevel file." -msgstr "" - -#: src/tags.cpp:448 -#, fuzzy -msgid "Cell Length" -msgstr "Longitud de la imagen" - -#: src/tags.cpp:449 -msgid "" -"The length of the dithering or halftoning matrix used to create a dithered " -"or halftoned bilevel file." -msgstr "" - -#: src/tags.cpp:452 -msgid "Fill Order" -msgstr "Orden de llenado" - -#: src/tags.cpp:453 -msgid "The logical order of bits within a byte" -msgstr "Órden lógico de bits dentro de un byte" - -#: src/tags.cpp:455 -msgid "Document Name" -msgstr "Nombre del documento" - -#: src/tags.cpp:456 -#, fuzzy -msgid "The name of the document from which this image was scanned" -msgstr "Nombre del documento desde el que se ha escaneado ésta imágen" - -#: src/tags.cpp:459 -msgid "" -"A character string giving the title of the image. It may be a comment such " -"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " -"used. When a 2-bytes code is necessary, the Exif Private tag " -"is to be used." -msgstr "" -"Una cadena de caracteres que da título a la imagen. Puede ser un comentario " -"como \"picnic de 1988\" o algo por el estilo. No se permiten caracteres " -"codificados con 2 bytes, si se necesita un código de 2 bytes debe usarsela " -"etiqueta privada Exif ." - -#: src/tags.cpp:466 -msgid "" -"The manufacturer of the recording equipment. This is the manufacturer of the " -"DSC, scanner, video digitizer or other equipment that generated the image. " -"When the field is left blank, it is treated as unknown." -msgstr "" -"El fabricante del equipo. Este es el fabricante del DSC, escáner, " -"digitalizador de vídeo u otro equipo que generó la imagen. Cuando el campo " -"se deja en blanco, se trata como desconocido." - -#: src/tags.cpp:472 -msgid "" -"The model name or model number of the equipment. This is the model name or " -"number of the DSC, scanner, video digitizer or other equipment that " -"generated the image. When the field is left blank, it is treated as unknown." -msgstr "" -"El nombre o número de modelo del equipo. Este es el nombre del modelo o " -"número del DSC, escáner, digitalizador de vídeo u otro equipo que generó la " -"imagen. Cuando el campo se deja en blanco, se trata como desconocido." - -#: src/tags.cpp:478 -msgid "" -"For each strip, the byte offset of that strip. It is recommended that this " -"be selected so the number of strip bytes does not exceed 64 Kbytes. With " -"JPEG compressed data this designation is not needed and is omitted. See also " -" and ." -msgstr "" -"El desplazamiento en bytes de cada tira. Se recomienda que se seleccione de " -"manera tal que la cantidad de bytes de la tira no exceda 64 Kbytes. Con " -"datos comprimidos JPEG esto no es necesario y se omite. Vea también " -" y ." - -#: src/tags.cpp:485 -#, fuzzy -msgid "The image orientation viewed in terms of rows and columns." -msgstr "La orientación de la imagen vista en términos de filas y columnas." - -#: src/tags.cpp:487 -msgid "Samples per Pixel" -msgstr "Muestras por pixel" - -#: src/tags.cpp:488 -msgid "" -"The number of components per pixel. Since this standard applies to RGB and " -"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " -"JPEG marker is used instead of this tag." -msgstr "" -"El número de componentes por pixel. Desde que este estándar se aplica a " -"imágenes RGB e YCbCr, el valor de esta etiqueta es 3. En JPEG comprimidos se " -"utiliza un marcador JPEG en vez de esta etiqueta." - -#: src/tags.cpp:492 -msgid "Rows per Strip" -msgstr "Filas por tira" - -#: src/tags.cpp:493 -#, fuzzy -msgid "" -"The number of rows per strip. This is the number of rows in the image of one " -"strip when an image is divided into strips. With JPEG compressed data this " -"designation is not needed and is omitted. See also and " -"." -msgstr "" -"La cantidad de filas por tira. Esta es la cantidad de filas en la imagen de " -"una tira cuando se divide a la imagen en tiras. En JPEG comprimidos esto no " -"es necesario y se omite. Vea también y ." - -#: src/tags.cpp:498 -msgid "Strip Byte Count" -msgstr "Cantidad de bytes por tira" - -#: src/tags.cpp:499 -msgid "" -"The total number of bytes in each strip. With JPEG compressed data this " -"designation is not needed and is omitted." -msgstr "" -"La cantidad total de bytes en cada tira. Innecesaria y se omite en datos " -"comprimidos JPEG." - -#: src/tags.cpp:502 -#, fuzzy -msgid "X-Resolution" -msgstr "Resolución X" - -#: src/tags.cpp:503 -msgid "" -"The number of pixels per in the direction. " -"When the image resolution is unknown, 72 [dpi] is designated." -msgstr "" -"La cantidad de píxeles por en la dirección . " -"Cuando se desconoce la resolución de una imagen, se utilizan 72 [dpi]." - -#: src/tags.cpp:506 -#, fuzzy -msgid "Y-Resolution" -msgstr "Resolución Y" - -#: src/tags.cpp:507 -msgid "" -"The number of pixels per in the direction. " -"The same value as is designated." -msgstr "" -"La cantidad de pixels por en la dirección . Se " -"utiliza el mismo valor que ." - -#: src/tags.cpp:511 -msgid "" -"Indicates whether pixel components are recorded in a chunky or planar " -"format. In JPEG compressed files a JPEG marker is used instead of this tag. " -"If this field does not exist, the TIFF default of 1 (chunky) is assumed." -msgstr "" -"Indica si los componentes de pixel se graban en formato planar o por trozos. " -"En datos comprimidos JPEG se utiliza un marcador JPEG en vez de esta " -"etiqueta. Si este campo no existe, se asume el predeterminado de TIFF, 1 " -"(por trozos)." - -#: src/tags.cpp:516 -#, fuzzy -msgid "Gray Response Unit" -msgstr "Punto blanco" - -#: src/tags.cpp:517 -msgid "The precision of the information contained in the GrayResponseCurve." -msgstr "Precisión de la información contenida en GrayResponseCurve. " - -#: src/tags.cpp:519 -#, fuzzy -msgid "Gray Response Curve" -msgstr "Compresión" - -#: src/tags.cpp:520 -msgid "For grayscale data, the optical density of each possible pixel value." -msgstr "" -"Densidad óptica de cada posible valor del pixel con datos en escala de grís." - -#: src/tags.cpp:522 -#, fuzzy -msgid "T4 Options" -msgstr "acción" - -#: src/tags.cpp:523 -msgid "T.4-encoding options." -msgstr "" - -#: src/tags.cpp:525 -#, fuzzy -msgid "T6 Options" -msgstr "acción" - -#: src/tags.cpp:526 -msgid "T.6-encoding options." -msgstr "" - -#: src/tags.cpp:529 -msgid "" -"The unit for measuring and . The same unit is " -"used for both and . If the image resolution is " -"unknown, 2 (inches) is designated." -msgstr "" -"La unidad para medir tanto como (Es la misma " -"para ambas). Si la resolución de la imagen se desconoce, se designa 2 " -"(pulgadas)." - -#: src/tags.cpp:534 -msgid "" -"A transfer function for the image, described in tabular style. Normally this " -"tag is not necessary, since color space is specified in the color space " -"information tag ()." -msgstr "" -"Una función de transferencia para la imagen, descripta en forma tabular. " -"Normalmente esta etiqueta no es necesaria, ya que el espacio de color se " -"especifica en la etiqueta de información de espacio de color ()." - -#: src/tags.cpp:539 -msgid "" -"This tag records the name and version of the software or firmware of the " -"camera or image input device used to generate the image. The detailed format " -"is not specified, but it is recommended that the example shown below be " -"followed. When the field is left blank, it is treated as unknown." -msgstr "" -"Esta etiqueta registra el nombre y la versión del software o firmware de la " -"cámara o dispositivo de entrada de imagen usado para generar la imágen. No " -"se especifica el formato detallado, pero se recomienda que se siga el " -"ejemplo mostrado debajo. Tratado como desconocido si el campo se deja en " -"blanco." - -#: src/tags.cpp:546 -#, fuzzy -msgid "" -"The date and time of image creation. In Exif standard, it is the date and " -"time the file was changed." -msgstr "" -"La fecha y hora de la creación de la imagen. En este estándar (EXIF-2.1) es " -"la fecha y hora en la que cambió el archivo." - -#: src/tags.cpp:550 -#, fuzzy -msgid "" -"This tag records the name of the camera owner, photographer or image " -"creator. The detailed format is not specified, but it is recommended that " -"the information be written as in the example below for ease of " -"Interoperability. When the field is left blank, it is treated as unknown. " -"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " -"Ken James\"" -msgstr "" -"Esta etiqueta registra el nombre del dueño de la cámara, fotógrafo o creador " -"de la imagen. No se especifica el formato detallado, pero se recomienda que " -"se escriba la información siguiendo el ejemplo de abajo para facilitar la " -"inter-operabilidad. Cuando el campo se deja en blanco, se trata como " -"desconocido." - -#: src/tags.cpp:557 -msgid "Host Computer" -msgstr "" - -#: src/tags.cpp:558 -msgid "" -"This tag records information about the host computer used to generate the " -"image." -msgstr "" -"Esta etiqueta guarda información sobre la computadora huesped usada para " -"generar la imágen." - -#: src/tags.cpp:561 -#, fuzzy -msgid "Predictor" -msgstr "Pronosticador" - -#: src/tags.cpp:562 -msgid "" -"A predictor is a mathematical operator that is applied to the image data " -"before an encoding scheme is applied." -msgstr "" -"Operador matemático aplicado a la imágen antes de que se aplique un sistema " -"de codificación." - -#: src/tags.cpp:566 -msgid "" -"The chromaticity of the white point of the image. Normally this tag is not " -"necessary, since color space is specified in the colorspace information tag " -"()." -msgstr "" -"La cromaticidad del punto blanco de la imagen. Normalmente esta etiqueta no " -"es necesaria ya que el espacio de color se especifica en la etiqueta de " -"información del espacio de color ()." - -#: src/tags.cpp:571 -msgid "" -"The chromaticity of the three primary colors of the image. Normally this tag " -"is not necessary, since colorspace is specified in the colorspace " -"information tag ()." -msgstr "" -"La cromaticidad de los tres colores primarios de la imagen. Innecesaria " -"normalmente, ya que el espacio de color se especifica en la etiqueta de " -"información del espacio de color ()." - -#: src/tags.cpp:575 -#, fuzzy -msgid "Color Map" -msgstr "Espacio de color" - -#: src/tags.cpp:576 -msgid "" -"A color map for palette color images. This field defines a Red-Green-Blue " -"color map (often called a lookup table) for palette-color images. In a " -"palette-color image, a pixel value is used to index into an RGB lookup table." -msgstr "" - -#: src/tags.cpp:581 -msgid "Halftone Hints" -msgstr "" - -#: src/tags.cpp:582 -msgid "" -"The purpose of the HalftoneHints field is to convey to the halftone function " -"the range of gray levels within a colorimetrically-specified image that " -"should retain tonal detail." -msgstr "" - -#: src/tags.cpp:586 -#, fuzzy -msgid "Tile Width" -msgstr "Ancho de la imágen mosaico" - -#: src/tags.cpp:587 -msgid "The tile width in pixels. This is the number of columns in each tile." -msgstr "" -"El ancho del mosaico en píxeles, es el número de columnas en cada mosaico" - -#: src/tags.cpp:589 -#, fuzzy -msgid "Tile Length" -msgstr "Longitud de la imagen mosaico" - -#: src/tags.cpp:590 -msgid "" -"The tile length (height) in pixels. This is the number of rows in each tile." -msgstr "" -"La altura del mosaico en píxeles, es el número de filas en cada mosaico" - -#: src/tags.cpp:592 -#, fuzzy -msgid "Tile Offsets" -msgstr "Desplazamiento de tira" - -#: src/tags.cpp:593 -msgid "" -"For each tile, the byte offset of that tile, as compressed and stored on " -"disk. The offset is specified with respect to the beginning of the TIFF " -"file. Note that this implies that each tile has a location independent of " -"the locations of other tiles." -msgstr "" - -#: src/tags.cpp:598 -#, fuzzy -msgid "Tile Byte Counts" -msgstr "Cantidad de bytes por tira" - -#: src/tags.cpp:599 -msgid "" -"For each tile, the number of (compressed) bytes in that tile. See " -"TileOffsets for a description of how the byte counts are ordered." -msgstr "" - -#: src/tags.cpp:602 -#, fuzzy -msgid "SubIFD Offsets" -msgstr "Desplazamiento de tira" - -#: src/tags.cpp:603 -msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." -msgstr "" - -#: src/tags.cpp:605 -#, fuzzy -msgid "Ink Set" -msgstr "Ãrea del sujeto (Tinta)" - -#: src/tags.cpp:606 -msgid "" -"The set of inks used in a separated (PhotometricInterpretation=5) image." -msgstr "" -"The set de tintas usadas en una imágen (PhotometricInterpretation=5) " -"separada." - -# can be improved -#: src/tags.cpp:608 -#, fuzzy -msgid "Ink Names" -msgstr "Nombre de las tintas" - -#: src/tags.cpp:609 -msgid "" -"The name of each ink used in a separated (PhotometricInterpretation=5) image." -msgstr "" - -#: src/tags.cpp:611 -#, fuzzy -msgid "Number Of Inks" -msgstr "El número F." - -#: src/tags.cpp:612 -msgid "" -"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " -"samples." -msgstr "" - -#: src/tags.cpp:614 -#, fuzzy -msgid "Dot Range" -msgstr "Rango de transferencia" - -#: src/tags.cpp:615 -#, c-format -msgid "The component values that correspond to a 0% dot and 100% dot." -msgstr "" - -#: src/tags.cpp:617 -#, fuzzy -msgid "Target Printer" -msgstr "Apertura" - -#: src/tags.cpp:618 -msgid "" -"A description of the printing environment for which this separation is " -"intended." -msgstr "" - -#: src/tags.cpp:620 -#, fuzzy -msgid "Extra Samples" -msgstr "Muestras Extra" - -#: src/tags.cpp:621 -msgid "" -"Specifies that each pixel has m extra components whose interpretation is " -"defined by one of the values listed below." -msgstr "" - -#: src/tags.cpp:624 -#, fuzzy -msgid "Sample Format" -msgstr "Formato de muestra" - -#: src/tags.cpp:625 -msgid "This field specifies how to interpret each data sample in a pixel." -msgstr "Especifica como interpretar cada dato de muestra en un pixel" - -#: src/tags.cpp:627 -#, fuzzy -msgid "SMin Sample Value" -msgstr "Nitidez" - -#: src/tags.cpp:628 -msgid "This field specifies the minimum sample value." -msgstr "Especifica el valor mínimo de muestra" - -#: src/tags.cpp:630 -#, fuzzy -msgid "SMax Sample Value" -msgstr "apertura" - -#: src/tags.cpp:631 -msgid "This field specifies the maximum sample value." -msgstr "Especifica el valor máximo de muestra" - -#: src/tags.cpp:633 -msgid "Transfer Range" -msgstr "Rango de transferencia" - -#: src/tags.cpp:634 -msgid "Expands the range of the TransferFunction" -msgstr "Expande el rango de la función TransferFunction" - -#: src/tags.cpp:636 -msgid "Clip Path" -msgstr "" - -#: src/tags.cpp:637 -msgid "" -"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " -"creation functionality." -msgstr "" - -#: src/tags.cpp:640 -msgid "X Clip Path Units" -msgstr "" - -#: src/tags.cpp:641 -msgid "" -"The number of units that span the width of the image, in terms of integer " -"ClipPath coordinates." -msgstr "" - -#: src/tags.cpp:644 -msgid "Y Clip Path Units" -msgstr "" - -#: src/tags.cpp:645 -msgid "" -"The number of units that span the height of the image, in terms of integer " -"ClipPath coordinates." -msgstr "" - -#: src/tags.cpp:649 -msgid "" -"Indexed images are images where the 'pixels' do not represent color values, " -"but rather an index (usually 8-bit) into a separate color table, the " -"ColorMap." -msgstr "" - -#: src/tags.cpp:653 -#, fuzzy -msgid "JPEG tables" -msgstr "compresión JPEG" - -#: src/tags.cpp:654 -msgid "" -"This optional tag may be used to encode the JPEG quantization andHuffman " -"tables for subsequent use by the JPEG decompression process." -msgstr "" - -#: src/tags.cpp:657 -msgid "OPI Proxy" -msgstr "" - -#: src/tags.cpp:658 -msgid "" -"OPIProxy gives information concerning whether this image is a low-resolution " -"proxy of a high-resolution image (Adobe OPI)." -msgstr "" - -#: src/tags.cpp:661 -#, fuzzy -msgid "JPEG Process" -msgstr "compresión JPEG" - -#: src/tags.cpp:662 -msgid "This field indicates the process used to produce the compressed data" -msgstr "Este campo indica el proceso usado para producir los datos comprimidos" - -#: src/tags.cpp:664 -msgid "JPEG Interchange Format" -msgstr "Formato de intercambio de JPEG" - -#: src/tags.cpp:665 -msgid "" -"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " -"is not used for primary image JPEG data." -msgstr "" -"El desplazamiento del byte de comienzo (SOI) de los datos comprimidos de la " -"diapositiva JPEG. Esto no se utiliza para los datos primarios de imagen JPEG." - -#: src/tags.cpp:668 -msgid "JPEG Interchange Format Length" -msgstr "Longitud del formato de intercambio de JPEG" - -#: src/tags.cpp:669 -msgid "" -"The number of bytes of JPEG compressed thumbnail data. This is not used for " -"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " -"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " -"be recorded. Compressed thumbnails must be recorded in no more than 64 " -"Kbytes, including all other data to be recorded in APP1." -msgstr "" -"La cantidad de bytes de datos comprimidos de diapositiva JPEG. Esto no se " -"utiliza para los datos primarios JPEG. Las diapositivas JPEG no se dividen " -"sino que se graban como un flujo de bits contínuo desde SOI hasta EOI. No se " -"deberían registrar marcadores Appn y COM. Las diapositivas comprimidas " -"deberían grabarse en no más de 64 Kbytes, incluyendo todos los otros datos a " -"grabar en APP1." - -#: src/tags.cpp:676 -msgid "JPEG Restart Interval" -msgstr "" - -#: src/tags.cpp:677 -#, fuzzy -msgid "" -"This Field indicates the length of the restart interval used in the " -"compressed image data." -msgstr "" -"Esta etiqueta indica la dirección del procesamiento de nitidez aplicado por " -"la cámara cuando se tomó la imagen." - -#: src/tags.cpp:680 -msgid "JPEG Lossless Predictors" -msgstr "" - -#: src/tags.cpp:681 -msgid "" -"This Field points to a list of lossless predictor-selection values, one per " -"component." -msgstr "" - -#: src/tags.cpp:684 -msgid "JPEG Point Transforms" -msgstr "" - -#: src/tags.cpp:685 -msgid "" -"This Field points to a list of point transform values, one per component." -msgstr "" - -#: src/tags.cpp:687 -#, fuzzy -msgid "JPEG Q-Tables" -msgstr "compresión JPEG" - -#: src/tags.cpp:688 -msgid "" -"This Field points to a list of offsets to the quantization tables, one per " -"component." -msgstr "" - -#: src/tags.cpp:691 -#, fuzzy -msgid "JPEG DC-Tables" -msgstr "compresión JPEG" - -#: src/tags.cpp:692 -msgid "" -"This Field points to a list of offsets to the DC Huffman tables or the " -"lossless Huffman tables, one per component." -msgstr "" - -#: src/tags.cpp:695 -#, fuzzy -msgid "JPEG AC-Tables" -msgstr "compresión JPEG" - -#: src/tags.cpp:696 -msgid "" -"This Field points to a list of offsets to the Huffman AC tables, one per " -"component." -msgstr "" - -#: src/tags.cpp:700 -msgid "" -"The matrix coefficients for transformation from RGB to YCbCr image data. No " -"default is given in TIFF; but here the value given in Appendix E, \"Color " -"Space Guidelines\", is used as the default. The color space is declared in a " -"color space information tag, with the default being the value that gives the " -"optimal image characteristics Interoperability this condition." -msgstr "" -"Los coeficientes de la matriz para transformar los datos de RGB a YCbCr. En " -"TIF no se proporcionan valores por defecto pero aquí se toma el valor dado " -"en el Apéndice E, \"Color Space Guidelines\" como predeterminado. El espacio " -"de color se declara en una etiqueta de información del espacio de color, " -"tomando como predeterminado el que dé las características óptimas de inter-" -"operabilidad para la imagen." - -#: src/tags.cpp:708 -msgid "YCbCr Sub-Sampling" -msgstr "Sub-muestreo YCbCr" - -#: src/tags.cpp:709 -msgid "" -"The sampling ratio of chrominance components in relation to the luminance " -"component. In JPEG compressed data a JPEG marker is used instead of this tag." -msgstr "" -"La relación de muestreo de los componentes de crominancia en relación con el " -"componente de luminancia. En datos comprimidos JPEG se utiliza un marcador " -"JPEG en vez de esta etiqueta." - -#: src/tags.cpp:714 -msgid "" -"The position of chrominance components in relation to the luminance " -"component. This field is designated only for JPEG compressed data or " -"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " -"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " -"record data, in order to improve the image quality when viewed on TV " -"systems. When this field does not exist, the reader shall assume the TIFF " -"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " -"recommended. If the reader does not have the capability of supporting both " -"kinds of , it shall follow the TIFF default regardless of " -"the value in this field. It is preferable that readers be able to support " -"both centered and co-sited positioning." -msgstr "" -"La posición de los componentes de crominancia en relación con el de " -"luminancia. Este campo se designa sólo para JPG comprimidos o datos no " -"comprimidos YCbCr. El valor predeterminado TIFF es 1 (centrado); pero cuando " -"Y:Cb:Cr = 4:2:2 se recomienda en este estándar que se utilice 2 (co-sitiado) " -"para registrar los datos, para mejorar la calidad de la imagen cuando se ve " -"en sistemas de TV. Cuando este campo no existe, el lector deberá asumir el " -"predeterminado TIFF. En caso que Y:Cb:Cr = 4:2:0, se recomienda el " -"predeterminado TIFF (centrado). Si el lector no tiene la capacidad de " -"soportar ambos tipos de , debería seguir el predeterminado " -"TIFF sin importar el valor de este campo. Es preferible que los lectores " -"puedan soportar el posicionamiento centrado y co-sitiado." - -#: src/tags.cpp:728 -msgid "Reference Black/White" -msgstr "Referencia Blanco/Negro" - -#: src/tags.cpp:729 -msgid "" -"The reference black point value and reference white point value. No defaults " -"are given in TIFF, but the values below are given as defaults here. The " -"color space is declared in a color space information tag, with the default " -"being the value that gives the optimal image characteristics " -"Interoperability these conditions." -msgstr "" -"El valor de referencia de los puntos blanco y negro. En TIFF no se dan " -"predeterminados, pero los valores de abajo se dan como predeterminados aquí. " -"El espacio de color se declara en una etiqueta de información de espacio de " -"color, siendo el valor predeterminado aquel que da las características de " -"inter-operabilidad óptimas para la imagen." - -#: src/tags.cpp:736 -msgid "XML Packet" -msgstr "" - -#: src/tags.cpp:737 -msgid "XMP Metadata (Adobe technote 9-14-02)" -msgstr "" - -#: src/tags.cpp:739 -#, fuzzy -msgid "Windows Rating" -msgstr "acción" - -#: src/tags.cpp:740 -msgid "Rating tag used by Windows" -msgstr "" - -#: src/tags.cpp:742 -#, fuzzy -msgid "Windows Rating Percent" -msgstr "acción" - -#: src/tags.cpp:743 -msgid "Rating tag used by Windows, value in percent" -msgstr "" - -#: src/tags.cpp:745 -#, fuzzy -msgid "Image ID" -msgstr "ID único de imagen" - -#: src/tags.cpp:746 -msgid "" -"ImageID is the full pathname of the original, high-resolution image, or any " -"other identifying string that uniquely identifies the original image (Adobe " -"OPI)." -msgstr "" - -#: src/tags.cpp:750 -msgid "CFA Repeat Pattern Dimension" -msgstr "" - -#: src/tags.cpp:751 -msgid "" -"Contains two values representing the minimum rows and columns to define the " -"repeating patterns of the color filter array" -msgstr "" - -#: src/tags.cpp:755 -#, fuzzy -msgid "" -"Indicates the color filter array (CFA) geometric pattern of the image sensor " -"when a one-chip color area sensor is used. It does not apply to all sensing " -"methods" -msgstr "" -"Indica el patrón geométrico de la matriz de filtro de color (CFA) del sensor " -"de imagen cuando se utiliza un sensor de área color de un chip. No se aplica " -"a todos los métodos de sensado." - -#: src/tags.cpp:763 -#, fuzzy -msgid "" -"Copyright information. In this standard the tag is used to indicate both the " -"photographer and editor copyrights. It is the copyright notice of the person " -"or organization claiming rights to the image. The Interoperability copyright " -"statement including date and rights should be written in this field; e.g., " -"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " -"field records both the photographer and editor copyrights, with each " -"recorded in a separate part of the statement. When there is a clear " -"distinction between the photographer and editor copyrights, these are to be " -"written in the order of photographer followed by editor copyright, separated " -"by NULL (in this case since the statement also ends with a NULL, there are " -"two NULL codes). When only the photographer copyright is given, it is " -"terminated by one NULL code . When only the editor copyright is given, the " -"photographer copyright part consists of one space followed by a terminating " -"NULL code, then the editor copyright is given. When the field is left blank, " -"it is treated as unknown." -msgstr "" -"Información del Copyright. En este estándar la etiqueta se utiliza para " -"indicar tanto el copyright del fotógrafo como el del editor. Es la nota de " -"copyright de la persona u Organización que reclama derechos sobre la imagen. " -"En este campo debería escribirse la declaración de copyrtight de inter-" -"operabilidad, incluyendo la fecha y los derechos; ej: \"Copyright, Juan " -"Perez, 20xx. Todos los derechos reservados.\" En este estándar el campo " -"registra tanto al copyright del fotógrafo como el del editor, con cada uno " -"registrado en una parte separada de la declaración. Cuando hay una " -"distinción clara entre ambos copyrights, primero debería escribirse el del " -"fotógrafo seguido por el del editor, separados por NULL (en este caso, " -"debido a que la declaración también termina con un NULL, hay dos códigos " -"NULL) (vea el ejemplo 1). Cuando se da sólo el del fotógrafo, está terminado " -"por un código NULL (vea el ejemplo 2). Cuando se da sólo el del editor, la " -"parte del copyright del fotógrafo consiste de un espacio seguido de un " -"código de terminación NULL, luego se da el copyright del editor (vea el " -"ejemplo 3). Cuando el campo se deja en blanco, se trata como desconocido." - -#: src/tags.cpp:782 -#, fuzzy -msgid "Exposure time, given in seconds." -msgstr "Tiempo de exposición, dado en segundos (seg)." - -#: src/tags.cpp:783 src/tags.cpp:1546 -msgid "The F number." -msgstr "El número F." - -#: src/tags.cpp:784 -msgid "IPTC/NAA" -msgstr "" - -#: src/tags.cpp:785 -msgid "Contains an IPTC/NAA record" -msgstr "" - -#: src/tags.cpp:787 -msgid "Image Resources Block" -msgstr "" - -#: src/tags.cpp:788 -msgid "Contains information embedded by the Adobe Photoshop application" -msgstr "" - -#: src/tags.cpp:791 -msgid "" -"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " -"as that of the IFD specified in TIFF. ordinarily, however, it does not " -"contain image data as in the case of TIFF." -msgstr "" -"Un puntero al IFD Exif. Inter-operabilidad, el IFD Exif tiene la misma " -"estructura que la del IFD especificado en TIFF. Sin embargo, por lo común, " -"no contiene datos de imagen como en el caso de TIFF." - -#: src/tags.cpp:796 -#, fuzzy -msgid "Inter Color Profile" -msgstr "Espacio de color" - -#: src/tags.cpp:797 -msgid "" -"Contains an InterColor Consortium (ICC) format color space characterization/" -"profile" -msgstr "" - -#: src/tags.cpp:799 src/tags.cpp:1549 -msgid "" -"The class of the program used by the camera to set exposure when the picture " -"is taken." -msgstr "" -"La clase de programa utilizado por la cámara para ajustar la exposición " -"cuando se toma la foto." - -#: src/tags.cpp:800 -#, fuzzy -msgid "Indicates the spectral sensitivity of each channel of the camera used." -msgstr "" -"Indica el tipo de sensor de imagen en la cámara o dispositivo de entrada." - -#: src/tags.cpp:802 -msgid "" -"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " -"Info IFD, like that of Exif IFD, has no image data." -msgstr "" -"Un puntero al GPS Info IFD. La estructura de inter-operabilidad del GPS Info " -"IFD, como la del IFD Exif, no tiene datos de imagen." - -#: src/tags.cpp:806 src/tags.cpp:1557 -msgid "ISO Speed Ratings" -msgstr "Velocidad ISO" - -#: src/tags.cpp:806 src/tags.cpp:1558 -msgid "" -"Indicates the ISO Speed and ISO Latitude of the camera or input device as " -"specified in ISO 12232." -msgstr "" -"Indica la velocidad ISO y la latitud ISO de la cámara o dispositivo de " -"entrada como se especifica en ISO 12232." - -#: src/tags.cpp:807 -#, fuzzy -msgid "" -"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " -"14524." -msgstr "" -"Indica la Función de Conversión Opto-Electrónica (OECF) especificada en ISO " -"14524. es la relación entre la entrada óptica de la cámara y los " -"valores de la imagen." - -#: src/tags.cpp:808 -#, fuzzy -msgid "Interlace" -msgstr "centrado" - -#: src/tags.cpp:808 -msgid "Indicates the field number of multifield images." -msgstr "" - -#: src/tags.cpp:809 -#, fuzzy -msgid "Time Zone Offset" -msgstr "Desplazamiento de tira" - -#: src/tags.cpp:810 -msgid "" -"This optional tag encodes the time zone of the camera clock (relativeto " -"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " -"picture was taken. It may also contain the time zone offsetof the clock used " -"to create the DateTime tag-value when the image wasmodified." -msgstr "" - -#: src/tags.cpp:816 -#, fuzzy -msgid "Self Timer Mode" -msgstr "Centímetro" - -#: src/tags.cpp:816 -msgid "Number of seconds image capture was delayed from button press." -msgstr "" - -#: src/tags.cpp:817 -#, fuzzy -msgid "Date Time Original" -msgstr "Fecha y Hora (original)" - -#: src/tags.cpp:817 -#, fuzzy -msgid "The date and time when the original image data was generated." -msgstr "" -"La fehca y hora cuando se almacenó la imagen en forma de datos digitales." - -#: src/tags.cpp:818 -#, fuzzy -msgid "Specific to compressed data; states the compressed bits per pixel." -msgstr "" -"Información específica sobre los datos comprimidos. El modo de compresión " -"utilizado para una imagen comprimida está indicado en unidades de bits por " -"pixel." - -#: src/tags.cpp:819 -#, fuzzy -msgid "Shutter speed." -msgstr "Velocidad del obturador" - -#: src/tags.cpp:820 -#, fuzzy -msgid "The lens aperture." -msgstr "apertura" - -#: src/tags.cpp:821 -#, fuzzy -msgid "The value of brightness." -msgstr "El número F." - -#: src/tags.cpp:822 -#, fuzzy -msgid "The exposure bias." -msgstr "Ajuste de exposición" - -#: src/tags.cpp:823 src/tags.cpp:1638 -#, fuzzy -msgid "Max Aperture Value" -msgstr "apertura" - -#: src/tags.cpp:823 -#, fuzzy -msgid "The smallest F number of the lens." -msgstr "El tipo de fuente de luz." - -#: src/tags.cpp:824 src/tags.cpp:1644 -msgid "The distance to the subject, given in meters." -msgstr "La distancia al sujeto, dada en metros." - -#: src/tags.cpp:825 src/tags.cpp:1647 -msgid "The metering mode." -msgstr "El modo de la métrica." - -#: src/tags.cpp:826 src/tags.cpp:1650 -msgid "The kind of light source." -msgstr "El tipo de fuente de luz." - -#: src/tags.cpp:827 -#, fuzzy -msgid "Indicates the status of flash when the image was shot." -msgstr "" -"Esta etiqueta indica el modo de balance de blanco ajustado cuando se tomó la " -"imagen." - -#: src/tags.cpp:828 -msgid "The actual focal length of the lens, in mm." -msgstr "" - -#: src/tags.cpp:829 -msgid "Amount of flash energy (BCPS)." -msgstr "" - -#: src/tags.cpp:830 -msgid "SFR of the camera." -msgstr "" - -#: src/tags.cpp:831 -#, fuzzy -msgid "Noise" -msgstr "No definido" - -#: src/tags.cpp:831 -msgid "Noise measurement values." -msgstr "" - -#: src/tags.cpp:832 -#, fuzzy -msgid "" -"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " -"direction for main image." -msgstr "" -"La cantidad de pixels por en la dirección . Se " -"utiliza el mismo valor que ." - -#: src/tags.cpp:833 -#, fuzzy -msgid "" -"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " -"direction for main image." -msgstr "" -"La cantidad de pixels por en la dirección . Se " -"utiliza el mismo valor que ." - -#: src/tags.cpp:834 -msgid "" -"Unit of measurement for FocalPlaneXResolution(37390) and " -"FocalPlaneYResolution(37391)." -msgstr "" - -#: src/tags.cpp:835 -msgid "Number assigned to an image, e.g., in a chained image burst." -msgstr "" - -#: src/tags.cpp:836 -msgid "Security Classification" -msgstr "" - -#: src/tags.cpp:836 -msgid "Security classification assigned to the image." -msgstr "" - -#: src/tags.cpp:837 -msgid "Record of what has been done to the image." -msgstr "" - -#: src/tags.cpp:838 -#, fuzzy -msgid "" -"Indicates the location and area of the main subject in the overall scene." -msgstr "" -"Esta etiqueta indica la ubicación y el área del sujeto principal en la " -"escena general." - -#: src/tags.cpp:839 -#, fuzzy -msgid "Encodes the camera exposure index setting when image was captured." -msgstr "" -"Indica el índice de exposición seleccionado en la cámara o dispositivo de " -"entrada en el momento que se captura la imagen." - -#: src/tags.cpp:840 -#, fuzzy -msgid "TIFF/EP Standard ID" -msgstr "Estándar" - -#: src/tags.cpp:841 -msgid "" -"Contains four ASCII characters representing the TIFF/EP standard version of " -"a TIFF/EP file, eg '1', '0', '0', '0'" -msgstr "" - -#: src/tags.cpp:844 -#, fuzzy -msgid "Type of image sensor." -msgstr "Longitud de la imagen" - -#: src/tags.cpp:845 -#, fuzzy -msgid "Windows Title" -msgstr "acción" - -#: src/tags.cpp:846 -msgid "Title tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:848 -#, fuzzy -msgid "Windows Comment" -msgstr "Comentario del usuario" - -#: src/tags.cpp:849 -msgid "Comment tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:851 -#, fuzzy -msgid "Windows Author" -msgstr "acción" - -#: src/tags.cpp:852 -msgid "Author tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:854 -#, fuzzy -msgid "Windows Keywords" -msgstr "acción" - -#: src/tags.cpp:855 -msgid "Keywords tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:857 -#, fuzzy -msgid "Windows Subject" -msgstr "Ãrea del sujeto" - -#: src/tags.cpp:858 -msgid "Subject tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:860 -msgid "Print Image Matching" -msgstr "" - -#: src/tags.cpp:861 -msgid "Print Image Matching, description needed." -msgstr "" - -#: src/tags.cpp:863 -#, fuzzy -msgid "DNG version" -msgstr "Versión Exif" - -#: src/tags.cpp:864 -msgid "" -"This tag encodes the DNG four-tier version number. For files compliant with " -"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " -"1, 1, 0, 0." -msgstr "" - -#: src/tags.cpp:868 -#, fuzzy -msgid "DNG backward version" -msgstr "Versión Exif" - -#: src/tags.cpp:869 -msgid "" -"This tag specifies the oldest version of the Digital Negative specification " -"for which a file is compatible. Readers shouldnot attempt to read a file if " -"this tag specifies a version number that is higher than the version number " -"of the specification the reader was based on. In addition to checking the " -"version tags, readers should, for all tags, check the types, counts, and " -"values, to verify it is able to correctly read the file." -msgstr "" - -#: src/tags.cpp:877 -#, fuzzy -msgid "Unique Camera Model" -msgstr "Retrato" - -#: src/tags.cpp:878 -msgid "" -"Defines a unique, non-localized name for the camera model that created the " -"image in the raw file. This name should include the manufacturer's name to " -"avoid conflicts, and should not be localized, even if the camera name itself " -"is localized for different markets (see LocalizedCameraModel). This string " -"may be used by reader software to index into per-model preferences and " -"replacement profiles." -msgstr "" - -#: src/tags.cpp:885 -#, fuzzy -msgid "Localized Camera Model" -msgstr "Retrato" - -#: src/tags.cpp:886 -msgid "" -"Similar to the UniqueCameraModel field, except the name can be localized for " -"different markets to match the localization of the camera name." -msgstr "" - -#: src/tags.cpp:890 -#, fuzzy -msgid "CFA Plane Color" -msgstr "Patrón CFA" - -#: src/tags.cpp:891 -msgid "" -"Provides a mapping between the values in the CFAPattern tag and the plane " -"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." -msgstr "" - -#: src/tags.cpp:895 -msgid "CFA Layout" -msgstr "" - -#: src/tags.cpp:896 -msgid "Describes the spatial layout of the CFA." -msgstr "" - -#: src/tags.cpp:899 -msgid "" -"Describes a lookup table that maps stored values into linear values. This " -"tag is typically used to increase compression ratios by storing the raw data " -"in a non-linear, more visually uniform space with fewer total encoding " -"levels. If SamplesPerPixel is not equal to one, this single table applies to " -"all the samples for each pixel." -msgstr "" - -#: src/tags.cpp:905 -#, fuzzy -msgid "Black Level Repeat Dim" -msgstr "Nivel de la batería" - -#: src/tags.cpp:906 -msgid "Specifies repeat pattern size for the BlackLevel tag." -msgstr "" - -#: src/tags.cpp:909 -msgid "" -"Specifies the zero light (a.k.a. thermal black or black current) encoding " -"level, as a repeating pattern. The origin of this pattern is the top-left " -"corner of the ActiveArea rectangle. The values are stored in row-column-" -"sample scan order." -msgstr "" - -#: src/tags.cpp:914 -#, fuzzy -msgid "Black Level Delta H" -msgstr "Nivel de la batería" - -#: src/tags.cpp:915 -msgid "" -"If the zero light encoding level is a function of the image column, " -"BlackLevelDeltaH specifies the difference between the zero light encoding " -"level for each column and the baseline zero light encoding level. If " -"SamplesPerPixel is not equal to one, this single table applies to all the " -"samples for each pixel." -msgstr "" - -#: src/tags.cpp:921 -#, fuzzy -msgid "Black Level Delta V" -msgstr "Nivel de la batería" - -#: src/tags.cpp:922 -msgid "" -"If the zero light encoding level is a function of the image row, this tag " -"specifies the difference between the zero light encoding level for each row " -"and the baseline zero light encoding level. If SamplesPerPixel is not equal " -"to one, this single table applies to all the samples for each pixel." -msgstr "" - -#: src/tags.cpp:928 -#, fuzzy -msgid "White Level" -msgstr "Nivel de la batería" - -#: src/tags.cpp:929 -msgid "" -"This tag specifies the fully saturated encoding level for the raw sample " -"values. Saturation is caused either by the sensor itself becoming highly non-" -"linear in response, or by the camera's analog to digital converter clipping." -msgstr "" - -#: src/tags.cpp:934 -#, fuzzy -msgid "Default Scale" -msgstr "Contraste" - -#: src/tags.cpp:935 -msgid "" -"DefaultScale is required for cameras with non-square pixels. It specifies " -"the default scale factors for each direction to convert the image to square " -"pixels. Typically these factors are selected to approximately preserve total " -"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " -"as the Fujifilm SuperCCD, these two values should usually differ by a factor " -"of 2.0." -msgstr "" - -#: src/tags.cpp:942 -msgid "Default Crop Origin" -msgstr "" - -#: src/tags.cpp:943 -msgid "" -"Raw images often store extra pixels around the edges of the final image. " -"These extra pixels help prevent interpolation artifacts near the edges of " -"the final image. DefaultCropOrigin specifies the origin of the final image " -"area, in raw image coordinates (i.e., before the DefaultScale has been " -"applied), relative to the top-left corner of the ActiveArea rectangle." -msgstr "" - -#: src/tags.cpp:950 -#, fuzzy -msgid "Default Crop Size" -msgstr "Contraste" - -#: src/tags.cpp:951 -msgid "" -"Raw images often store extra pixels around the edges of the final image. " -"These extra pixels help prevent interpolation artifacts near the edges of " -"the final image. DefaultCropSize specifies the size of the final image area, " -"in raw image coordinates (i.e., before the DefaultScale has been applied)." -msgstr "" - -#: src/tags.cpp:957 -#, fuzzy -msgid "Color Matrix 1" -msgstr "Espacio de color" - -#: src/tags.cpp:958 -msgid "" -"ColorMatrix1 defines a transformation matrix that converts XYZ values to " -"reference camera native color space values, under the first calibration " -"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " -"tag is required for all non-monochrome DNG files." -msgstr "" - -#: src/tags.cpp:964 -#, fuzzy -msgid "Color Matrix 2" -msgstr "Espacio de color" - -#: src/tags.cpp:965 -msgid "" -"ColorMatrix2 defines a transformation matrix that converts XYZ values to " -"reference camera native color space values, under the second calibration " -"illuminant. The matrix values are stored in row scan order." -msgstr "" - -#: src/tags.cpp:970 -#, fuzzy -msgid "Camera Calibration 1" -msgstr "Contraste" - -#: src/tags.cpp:971 -msgid "" -"CameraClalibration1 defines a calibration matrix that transforms reference " -"camera native space values to individual camera native space values under " -"the first calibration illuminant. The matrix is stored in row scan order. " -"This matrix is stored separately from the matrix specified by the " -"ColorMatrix1 tag to allow raw converters to swap in replacement color " -"matrices based on UniqueCameraModel tag, while still taking advantage of any " -"per-individual camera calibration performed by the camera manufacturer." -msgstr "" - -#: src/tags.cpp:980 -#, fuzzy -msgid "Camera Calibration 2" -msgstr "Contraste" - -#: src/tags.cpp:981 -msgid "" -"CameraCalibration2 defines a calibration matrix that transforms reference " -"camera native space values to individual camera native space values under " -"the second calibration illuminant. The matrix is stored in row scan order. " -"This matrix is stored separately from the matrix specified by the " -"ColorMatrix2 tag to allow raw converters to swap in replacement color " -"matrices based on UniqueCameraModel tag, while still taking advantage of any " -"per-individual camera calibration performed by the camera manufacturer." -msgstr "" - -#: src/tags.cpp:990 -#, fuzzy -msgid "Reduction Matrix 1" -msgstr "Espacio de color" - -#: src/tags.cpp:991 -msgid "" -"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " -"first stage in converting color camera native space values to XYZ values, " -"under the first calibration illuminant. This tag may only be used if " -"ColorPlanes is greater than 3. The matrix is stored in row scan order." -msgstr "" - -#: src/tags.cpp:997 -#, fuzzy -msgid "Reduction Matrix 2" -msgstr "Espacio de color" - -#: src/tags.cpp:998 -msgid "" -"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " -"first stage in converting color camera native space values to XYZ values, " -"under the second calibration illuminant. This tag may only be used if " -"ColorPlanes is greater than 3. The matrix is stored in row scan order." -msgstr "" - -#: src/tags.cpp:1004 -#, fuzzy -msgid "Analog Balance" -msgstr "Espacio de color" - -#: src/tags.cpp:1005 -msgid "" -"Normally the stored raw values are not white balanced, since any digital " -"white balancing will reduce the dynamic range of the final image if the user " -"decides to later adjust the white balance; however, if camera hardware is " -"capable of white balancing the color channels before the signal is " -"digitized, it can improve the dynamic range of the final image. " -"AnalogBalance defines the gain, either analog (recommended) or digital (not " -"recommended) that has been applied the stored raw values." -msgstr "" - -#: src/tags.cpp:1014 -#, fuzzy -msgid "As Shot Neutral" -msgstr "Manual" - -#: src/tags.cpp:1015 -msgid "" -"Specifies the selected white balance at time of capture, encoded as the " -"coordinates of a perfectly neutral color in linear reference space values. " -"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." -msgstr "" - -#: src/tags.cpp:1020 -msgid "As Shot White XY" -msgstr "" - -#: src/tags.cpp:1021 -msgid "" -"Specifies the selected white balance at time of capture, encoded as x-y " -"chromaticity coordinates. The inclusion of this tag precludes the inclusion " -"of the AsShotNeutral tag." -msgstr "" - -#: src/tags.cpp:1025 -#, fuzzy -msgid "Baseline Exposure" -msgstr "Modo de exposición" - -#: src/tags.cpp:1026 -msgid "" -"Camera models vary in the trade-off they make between highlight headroom and " -"shadow noise. Some leave a significant amount of highlight headroom during a " -"normal exposure. This allows significant negative exposure compensation to " -"be applied during raw conversion, but also means normal exposures will " -"contain more shadow noise. Other models leave less headroom during normal " -"exposures. This allows for less negative exposure compensation, but results " -"in lower shadow noise for normal exposures. Because of these differences, a " -"raw converter needs to vary the zero point of its exposure compensation " -"control from model to model. BaselineExposure specifies by how much (in EV " -"units) to move the zero point. Positive values result in brighter default " -"results, while negative values result in darker default results." -msgstr "" - -#: src/tags.cpp:1040 -#, fuzzy -msgid "Baseline Noise" -msgstr "Modo de exposición" - -#: src/tags.cpp:1041 -msgid "" -"Specifies the relative noise level of the camera model at a baseline ISO " -"value of 100, compared to a reference camera model. Since noise levels tend " -"to vary approximately with the square root of the ISO value, a raw converter " -"can use this value, combined with the current ISO, to estimate the relative " -"noise level of the current image." -msgstr "" - -#: src/tags.cpp:1047 -#, fuzzy -msgid "Baseline Sharpness" -msgstr "Nitidez" - -#: src/tags.cpp:1048 -msgid "" -"Specifies the relative amount of sharpening required for this camera model, " -"compared to a reference camera model. Camera models vary in the strengths of " -"their anti-aliasing filters. Cameras with weak or no filters require less " -"sharpening than cameras with strong anti-aliasing filters." -msgstr "" - -#: src/tags.cpp:1054 -msgid "Bayer Green Split" -msgstr "" - -#: src/tags.cpp:1055 -msgid "" -"Only applies to CFA images using a Bayer pattern filter array. This tag " -"specifies, in arbitrary units, how closely the values of the green pixels in " -"the blue/green rows track the values of the green pixels in the red/green " -"rows. A value of zero means the two kinds of green pixels track closely, " -"while a non-zero value means they sometimes diverge. The useful range for " -"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." -msgstr "" - -#: src/tags.cpp:1063 -msgid "Linear Response Limit" -msgstr "" - -#: src/tags.cpp:1064 -msgid "" -"Some sensors have an unpredictable non-linearity in their response as they " -"near the upper limit of their encoding range. This non-linearity results in " -"color shifts in the highlight areas of the resulting image unless the raw " -"converter compensates for this effect. LinearResponseLimit specifies the " -"fraction of the encoding range above which the response may become " -"significantly non-linear." -msgstr "" - -#: src/tags.cpp:1072 -msgid "" -"CameraSerialNumber contains the serial number of the camera or camera body " -"that captured the image." -msgstr "" - -#: src/tags.cpp:1075 -#, fuzzy -msgid "Lens Info" -msgstr "Ancho de la imagen" - -#: src/tags.cpp:1076 -msgid "" -"Contains information about the lens that captured the image. If the minimum " -"f-stops are unknown, they should be encoded as 0/0." -msgstr "" - -#: src/tags.cpp:1079 -msgid "Chroma Blur Radius" -msgstr "" - -#: src/tags.cpp:1080 -msgid "" -"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " -"blur should be applied to the image. If this tag is omitted, the reader will " -"use its default amount of chroma blurring. Normally this tag is only " -"included for non-CFA images, since the amount of chroma blur required for " -"mosaic images is highly dependent on the de-mosaic algorithm, in which case " -"the DNG reader's default value is likely optimized for its particular de-" -"mosaic algorithm." -msgstr "" - -#: src/tags.cpp:1088 -#, fuzzy -msgid "Anti Alias Strength" -msgstr "Contraste" - -#: src/tags.cpp:1089 -msgid "" -"Provides a hint to the DNG reader about how strong the camera's anti-alias " -"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " -"prone to aliasing artifacts with some subjects), while a value of 1.0 means " -"a strong anti-alias filter (i.e., the camera almost never has aliasing " -"artifacts)." -msgstr "" - -#: src/tags.cpp:1095 -#, fuzzy -msgid "Shadow Scale" -msgstr "Escala de Sombra" - -#: src/tags.cpp:1096 -msgid "" -"This tag is used by Adobe Camera Raw to control the sensitivity of its " -"'Shadows' slider." -msgstr "" - -#: src/tags.cpp:1099 -msgid "DNG Private Data" -msgstr "Datos privados DNG" - -#: src/tags.cpp:1100 -msgid "" -"Provides a way for camera manufacturers to store private data in the DNG " -"file for use by their own raw converters, and to have that data preserved by " -"programs that edit DNG files." -msgstr "" - -#: src/tags.cpp:1104 -#, fuzzy -msgid "MakerNote Safety" -msgstr "Nota del fabricante" - -#: src/tags.cpp:1105 -msgid "" -"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " -"safe to preserve along with the rest of the EXIF data. File browsers and " -"other image management software processing an image with a preserved " -"MakerNote should be aware that any thumbnail image embedded in the MakerNote " -"may be stale, and may not reflect the current state of the full size image." -msgstr "" - -#: src/tags.cpp:1112 -msgid "Calibration Illuminant 1" -msgstr "" - -#: src/tags.cpp:1113 -msgid "" -"The illuminant used for the first set of color calibration tags " -"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " -"this tag are the same as the legal values for the LightSource EXIF tag." -msgstr "" - -#: src/tags.cpp:1118 -#, fuzzy -msgid "Calibration Illuminant 2" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/tags.cpp:1119 -msgid "" -"The illuminant used for an optional second set of color calibration tags " -"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " -"this tag are the same as the legal values for the CalibrationIlluminant1 " -"tag; however, if both are included, neither is allowed to have a value of 0 " -"(unknown)." -msgstr "" - -#: src/tags.cpp:1125 -#, fuzzy -msgid "Best Quality Scale" -msgstr "Ancho de la imagen" - -#: src/tags.cpp:1126 -msgid "" -"For some cameras, the best possible image quality is not achieved by " -"preserving the total pixel count during conversion. For example, Fujifilm " -"SuperCCD images have maximum detail when their total pixel count is doubled. " -"This tag specifies the amount by which the values of the DefaultScale tag " -"need to be multiplied to achieve the best quality image size." -msgstr "" - -#: src/tags.cpp:1133 -#, fuzzy -msgid "Raw Data Unique ID" -msgstr "ID único de imagen" - -#: src/tags.cpp:1134 -msgid "" -"This tag contains a 16-byte unique identifier for the raw image data in the " -"DNG file. DNG readers can use this tag to recognize a particular raw image, " -"even if the file's name or the metadata contained in the file has been " -"changed. If a DNG writer creates such an identifier, it should do so using " -"an algorithm that will ensure that it is very unlikely two different images " -"will end up having the same identifier." -msgstr "" - -#: src/tags.cpp:1142 -#, fuzzy -msgid "Original Raw File Name" -msgstr "Nombre del documento" - -#: src/tags.cpp:1143 -msgid "" -"If the DNG file was converted from a non-DNG raw file, then this tag " -"contains the file name of that original raw file." -msgstr "" - -#: src/tags.cpp:1146 -#, fuzzy -msgid "Original Raw File Data" -msgstr "Nombre del documento" - -#: src/tags.cpp:1147 -msgid "" -"If the DNG file was converted from a non-DNG raw file, then this tag " -"contains the compressed contents of that original raw file. The contents of " -"this tag always use the big-endian byte order. The tag contains a sequence " -"of data blocks. Future versions of the DNG specification may define " -"additional data blocks, so DNG readers should ignore extra bytes when " -"parsing this tag. DNG readers should also detect the case where data blocks " -"are missing from the end of the sequence, and should assume a default value " -"for all the missing blocks. There are no padding or alignment bytes between " -"data blocks." -msgstr "" - -#: src/tags.cpp:1157 -#, fuzzy -msgid "Active Area" -msgstr "Ãrea del sujeto" - -#: src/tags.cpp:1158 -msgid "" -"This rectangle defines the active (non-masked) pixels of the sensor. The " -"order of the rectangle coordinates is: top, left, bottom, right." -msgstr "" - -#: src/tags.cpp:1161 -#, fuzzy -msgid "Masked Areas" -msgstr "Duro" - -#: src/tags.cpp:1162 -msgid "" -"This tag contains a list of non-overlapping rectangle coordinates of fully " -"masked pixels, which can be optionally used by DNG readers to measure the " -"black encoding level. The order of each rectangle's coordinates is: top, " -"left, bottom, right. If the raw image data has already had its black " -"encoding level subtracted, then this tag should not be used, since the " -"masked pixels are no longer useful." -msgstr "" - -#: src/tags.cpp:1169 -#, fuzzy -msgid "As-Shot ICC Profile" -msgstr "Espacio de color" - -#: src/tags.cpp:1170 -msgid "" -"This tag contains an ICC profile that, in conjunction with the " -"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " -"specify a default color rendering from camera color space coordinates " -"(linear reference values) into the ICC profile connection space. The ICC " -"profile connection space is an output referred colorimetric space, whereas " -"the other color calibration tags in DNG specify a conversion into a scene " -"referred colorimetric space. This means that the rendering in this profile " -"should include any desired tone and gamut mapping needed to convert between " -"scene referred values and output referred values." -msgstr "" - -#: src/tags.cpp:1181 -msgid "As-Shot Pre-Profile Matrix" -msgstr "" - -#: src/tags.cpp:1182 -msgid "" -"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " -"a matrix that should be applied to the camera color space coordinates before " -"processing the values through the ICC profile specified in the " -"AsShotICCProfile tag. The matrix is stored in the row scan order. If " -"ColorPlanes is greater than three, then this matrix can (but is not required " -"to) reduce the dimensionality of the color data down to three components, in " -"which case the AsShotICCProfile should have three rather than ColorPlanes " -"input components." -msgstr "" - -#: src/tags.cpp:1191 -#, fuzzy -msgid "Current ICC Profile" -msgstr "Espacio de color" - -#: src/tags.cpp:1192 -msgid "" -"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " -"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " -"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " -"they are for use by raw file editors rather than camera manufacturers." -msgstr "" - -#: src/tags.cpp:1198 -#, fuzzy -msgid "Current Pre-Profile Matrix" -msgstr "Espacio de color" - -#: src/tags.cpp:1199 -msgid "" -"This tag is used in conjunction with the CurrentICCProfile tag. The " -"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " -"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " -"they are for use by raw file editors rather than camera manufacturers." -msgstr "" - -#: src/tags.cpp:1205 -#, fuzzy -msgid "Colorimetric Reference" -msgstr "Referencia Blanco/Negro" - -#: src/tags.cpp:1206 -msgid "" -"The DNG color model documents a transform between camera colors and CIE XYZ " -"values. This tag describes the colorimetric reference for the CIE XYZ " -"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" -"referred, using the ICC profile perceptual dynamic range. This tag allows " -"output-referred data to be stored in DNG files and still processed correctly " -"by DNG readers." -msgstr "" - -#: src/tags.cpp:1213 -#, fuzzy -msgid "Camera Calibration Signature" -msgstr "Contraste" - -#: src/tags.cpp:1214 -msgid "" -"A UTF-8 encoded string associated with the CameraCalibration1 and " -"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " -"should only be used in the DNG color transform if the string stored in the " -"CameraCalibrationSignature tag exactly matches the string stored in the " -"ProfileCalibrationSignature tag for the selected camera profile." -msgstr "" - -#: src/tags.cpp:1220 -#, fuzzy -msgid "Profile Calibration Signature" -msgstr "El flash disparó, modo de reducción de ojos rojos." - -#: src/tags.cpp:1221 -msgid "" -"A UTF-8 encoded string associated with the camera profile tags. The " -"CameraCalibration1 and CameraCalibration2 tags should only be used in the " -"DNG color transfer if the string stored in the CameraCalibrationSignature " -"tag exactly matches the string stored in the ProfileCalibrationSignature tag " -"for the selected camera profile." -msgstr "" - -#: src/tags.cpp:1227 -#, fuzzy -msgid "As Shot Profile Name" -msgstr "Espacio de color" - -#: src/tags.cpp:1228 -msgid "" -"A UTF-8 encoded string containing the name of the \"as shot\" camera " -"profile, if any." -msgstr "" - -#: src/tags.cpp:1231 -#, fuzzy -msgid "Noise Reduction Applied" -msgstr "El flash disparó, modo de reducción de ruido" - -#: src/tags.cpp:1232 -msgid "" -"This tag indicates how much noise reduction has been applied to the raw data " -"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " -"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " -"reduction has been applied, i.e. that the DNG reader should not apply " -"additional noise reduction by default. A value of 0/0 indicates that this " -"parameter is unknown." -msgstr "" - -#: src/tags.cpp:1239 -#, fuzzy -msgid "Profile Name" -msgstr "Nombre del documento" - -#: src/tags.cpp:1240 -msgid "" -"A UTF-8 encoded string containing the name of the camera profile. This tag " -"is optional if there is only a single camera profile stored in the file but " -"is required for all camera profiles if there is more than one camera profile " -"stored in the file." -msgstr "" - -#: src/tags.cpp:1245 -msgid "Profile Hue Sat Map Dims" -msgstr "" - -#: src/tags.cpp:1246 -msgid "" -"This tag specifies the number of input samples in each dimension of the hue/" -"saturation/value mapping tables. The data for these tables are stored in " -"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " -"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " -"to the mapping table." -msgstr "" - -#: src/tags.cpp:1252 -msgid "Profile Hue Sat Map Data 1" -msgstr "" - -#: src/tags.cpp:1253 -msgid "" -"This tag contains the data for the first hue/saturation/value mapping table. " -"Each entry of the table contains three 32-bit IEEE floating-point values. " -"The first entry is hue shift in degrees; the second entry is saturation " -"scale factor; and the third entry is a value scale factor. The table entries " -"are stored in the tag in nested loop order, with the value divisions in the " -"outer loop, the hue divisions in the middle loop, and the saturation " -"divisions in the inner loop. All zero input saturation entries are required " -"to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1262 -msgid "Profile Hue Sat Map Data 2" -msgstr "" - -#: src/tags.cpp:1263 -msgid "" -"This tag contains the data for the second hue/saturation/value mapping " -"table. Each entry of the table contains three 32-bit IEEE floating-point " -"values. The first entry is hue shift in degrees; the second entry is a " -"saturation scale factor; and the third entry is a value scale factor. The " -"table entries are stored in the tag in nested loop order, with the value " -"divisions in the outer loop, the hue divisions in the middle loop, and the " -"saturation divisions in the inner loop. All zero input saturation entries " -"are required to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1272 -#, fuzzy -msgid "Profile Tone Curve" -msgstr "Nombre del documento" - -#: src/tags.cpp:1273 -msgid "" -"This tag contains a default tone curve that can be applied while processing " -"the image as a starting point for user adjustments. The curve is specified " -"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " -"sample has an input value in the range of 0.0 to 1.0, and an output value in " -"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " -"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " -"cubic spline." -msgstr "" - -#: src/tags.cpp:1281 -msgid "Profile Embed Policy" -msgstr "" - -#: src/tags.cpp:1282 -#, fuzzy -msgid "" -"This tag contains information about the usage rules for the associated " -"camera profile." -msgstr "" -"Esta etiqueta guarda información sobre la computadora huesped usada para " -"generar la imágen." - -#: src/tags.cpp:1285 -#, fuzzy -msgid "Profile Copyright" -msgstr "Copyright" - -#: src/tags.cpp:1286 -msgid "" -"A UTF-8 encoded string containing the copyright information for the camera " -"profile. This string always should be preserved along with the other camera " -"profile tags." -msgstr "" - -#: src/tags.cpp:1290 -#, fuzzy -msgid "Forward Matrix 1" -msgstr "Espacio de color" - -#: src/tags.cpp:1291 src/tags.cpp:1295 -msgid "" -"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " -"colors." -msgstr "" - -#: src/tags.cpp:1294 -#, fuzzy -msgid "Forward Matrix 2" -msgstr "Espacio de color" - -#: src/tags.cpp:1298 -#, fuzzy -msgid "Preview Application Name" -msgstr "Versión Exif" - -#: src/tags.cpp:1299 -msgid "" -"A UTF-8 encoded string containing the name of the application that created " -"the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1302 -#, fuzzy -msgid "Preview Application Version" -msgstr "Versión Exif" - -#: src/tags.cpp:1303 -msgid "" -"A UTF-8 encoded string containing the version number of the application that " -"created the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1306 -#, fuzzy -msgid "Preview Settings Name" -msgstr "Orientación" - -#: src/tags.cpp:1307 -msgid "" -"A UTF-8 encoded string containing the name of the conversion settings (for " -"example, snapshot name) used for the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1310 -#, fuzzy -msgid "Preview Settings Digest" -msgstr "Descripción de ajuste del dispositivo" - -#: src/tags.cpp:1311 -msgid "" -"A unique ID of the conversion settings (for example, MD5 digest) used to " -"render the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1314 -#, fuzzy -msgid "Preview Color Space" -msgstr "Espacio de color" - -#: src/tags.cpp:1315 -msgid "" -"This tag specifies the color space in which the rendered preview in this IFD " -"is stored. The default value for this tag is sRGB for color previews and " -"Gray Gamma 2.2 for monochrome previews." -msgstr "" - -#: src/tags.cpp:1319 -#, fuzzy -msgid "Preview Date Time" -msgstr "Versión Exif" - -#: src/tags.cpp:1320 -msgid "" -"This tag is an ASCII string containing the name of the date/time at which " -"the preview stored in the IFD was rendered. The date/time is encoded using " -"ISO 8601 format." -msgstr "" - -#: src/tags.cpp:1324 -#, fuzzy -msgid "Raw Image Digest" -msgstr "Longitud de la imagen" - -#: src/tags.cpp:1325 -msgid "" -"This tag is an MD5 digest of the raw image data. All pixels in the image are " -"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " -"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " -"data for each pixel is processed in little-endian byte order." -msgstr "" - -#: src/tags.cpp:1330 -#, fuzzy -msgid "Original Raw File Digest" -msgstr "Nombre del documento" - -#: src/tags.cpp:1331 -msgid "" -"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." -msgstr "" - -#: src/tags.cpp:1334 -msgid "Sub Tile Block Size" -msgstr "" - -#: src/tags.cpp:1335 -msgid "" -"Normally, the pixels within a tile are stored in simple row-scan order. This " -"tag specifies that the pixels within a tile should be grouped first into " -"rectangular blocks of the specified size. These blocks are stored in row-" -"scan order. Within each block, the pixels are stored in row-scan order. The " -"use of a non-default value for this tag requires setting the " -"DNGBackwardVersion tag to at least 1.2.0.0." -msgstr "" - -#: src/tags.cpp:1342 -msgid "Row Interleave Factor" -msgstr "" - -#: src/tags.cpp:1343 -msgid "" -"This tag specifies that rows of the image are stored in interleaved order. " -"The value of the tag specifies the number of interleaved fields. The use of " -"a non-default value for this tag requires setting the DNGBackwardVersion tag " -"to at least 1.2.0.0." -msgstr "" - -#: src/tags.cpp:1348 -msgid "Profile Look Table Dims" -msgstr "" - -#: src/tags.cpp:1349 -msgid "" -"This tag specifies the number of input samples in each dimension of a " -"default \"look\" table. The data for this table is stored in the " -"ProfileLookTableData tag." -msgstr "" - -#: src/tags.cpp:1353 -msgid "Profile Look Table Data" -msgstr "" - -#: src/tags.cpp:1354 -msgid "" -"This tag contains a default \"look\" table that can be applied while " -"processing the image as a starting point for user adjustment. This table " -"uses the same format as the tables stored in the ProfileHueSatMapData1 and " -"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " -"it should be applied later in the processing pipe, after any exposure " -"compensation and/or fill light stages, but before any tone curve stage. Each " -"entry of the table contains three 32-bit IEEE floating-point values. The " -"first entry is hue shift in degrees, the second entry is a saturation scale " -"factor, and the third entry is a value scale factor. The table entries are " -"stored in the tag in nested loop order, with the value divisions in the " -"outer loop, the hue divisions in the middle loop, and the saturation " -"divisions in the inner loop. All zero input saturation entries are required " -"to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1368 -msgid "Opcode List 1" -msgstr "" - -#: src/tags.cpp:1369 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, as " -"read directly from the file." -msgstr "" - -#: src/tags.cpp:1372 -msgid "Opcode List 2" -msgstr "" - -#: src/tags.cpp:1373 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, just " -"after it has been mapped to linear reference values." -msgstr "" - -#: src/tags.cpp:1376 -msgid "Opcode List 3" -msgstr "" - -#: src/tags.cpp:1377 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, just " -"after it has been demosaiced." -msgstr "" - -#: src/tags.cpp:1380 -#, fuzzy -msgid "Noise Profile" -msgstr "Espacio de color" - -#: src/tags.cpp:1381 -msgid "" -"NoiseProfile describes the amount of noise in a raw image. Specifically, " -"this tag models the amount of signal-dependent photon (shot) noise and " -"signal-independent sensor readout noise, two common sources of noise in raw " -"images. The model assumes that the noise is white and spatially independent, " -"ignoring fixed pattern effects and other sources of noise (e.g., pixel " -"response non-uniformity, spatially-dependent thermal effects, etc.)." -msgstr "" - -#: src/tags.cpp:1389 src/tags.cpp:1390 -#, fuzzy -msgid "Unknown IFD tag" -msgstr "Desconocido" - -#: src/tags.cpp:1401 src/tags.cpp:1459 -msgid "Not defined" -msgstr "No definido" - -#: src/tags.cpp:1406 -#, fuzzy -msgid "Creative program" -msgstr "creativo" - -#: src/tags.cpp:1407 -#, fuzzy -msgid "Action program" -msgstr "normal" - -#: src/tags.cpp:1408 -#, fuzzy -msgid "Portrait mode" -msgstr "Modo Retrato" - -#: src/tags.cpp:1409 -#, fuzzy -msgid "Landscape mode" -msgstr "Modo Paisaje" - -#: src/tags.cpp:1418 -#, fuzzy -msgid "Multi-spot" -msgstr "multi-lugar" - -#: src/tags.cpp:1430 -#, fuzzy -msgid "Tungsten (incandescent light)" -msgstr "Tungsteno (luz incandescente)" - -#: src/tags.cpp:1432 -msgid "Fine weather" -msgstr "Buen Tiempo" - -#: src/tags.cpp:1433 -msgid "Cloudy weather" -msgstr "Tiempo nublado" - -#: src/tags.cpp:1435 -#, fuzzy -msgid "Daylight fluorescent (D 5700 - 7100K)" -msgstr "Luz de día fluorescente (D 5700 - 7100K)" - -#: src/tags.cpp:1436 -#, fuzzy -msgid "Day white fluorescent (N 4600 - 5400K)" -msgstr "Día blanco fluorescente (N 4600 - 5400K)" - -#: src/tags.cpp:1437 -#, fuzzy -msgid "Cool white fluorescent (W 3900 - 4500K)" -msgstr "Blanco frío fluorescente (W 3900 - 4500K)" - -#: src/tags.cpp:1438 -#, fuzzy -msgid "White fluorescent (WW 3200 - 3700K)" -msgstr "Blanco fluorescente (WW 3200 - 3700K)" - -#: src/tags.cpp:1439 -msgid "Standard light A" -msgstr "Luz estándar A" - -#: src/tags.cpp:1440 -msgid "Standard light B" -msgstr "Luz estándar B" - -#: src/tags.cpp:1441 -msgid "Standard light C" -msgstr "Luz estándar C" - -#: src/tags.cpp:1442 -msgid "D55" -msgstr "D55" - -#: src/tags.cpp:1443 -msgid "D65" -msgstr "D65" - -#: src/tags.cpp:1444 -msgid "D75" -msgstr "D75" - -#: src/tags.cpp:1445 -#, fuzzy -msgid "D50" -msgstr "D75" - -#: src/tags.cpp:1446 -msgid "ISO studio tungsten" -msgstr "tungsteno de estudio ISO" - -#: src/tags.cpp:1447 -#, fuzzy -msgid "Other light source" -msgstr "El tipo de fuente de luz." - -#: src/tags.cpp:1454 -msgid "Uncalibrated" -msgstr "Descalibrado" - -#: src/tags.cpp:1460 -#, fuzzy -msgid "One-chip color area" -msgstr "Sensor de área de color de un chip" - -#: src/tags.cpp:1461 -#, fuzzy -msgid "Two-chip color area" -msgstr "Sensor de área de color de dos chips" - -#: src/tags.cpp:1462 -#, fuzzy -msgid "Three-chip color area" -msgstr "Sensor de área de color de tres chips" - -#: src/tags.cpp:1463 -#, fuzzy -msgid "Color sequential area" -msgstr "Sensor de área de color secuencial" - -#: src/tags.cpp:1464 -msgid "Trilinear sensor" -msgstr "Sensor tri-lineal" - -#: src/tags.cpp:1465 -#, fuzzy -msgid "Color sequential linear" -msgstr "Sensor lineal secuencial de color" - -#: src/tags.cpp:1470 -#, fuzzy -msgid "Film scanner" -msgstr "Escáner de película" - -#: src/tags.cpp:1471 -msgid "Reflexion print scanner" -msgstr "" - -#: src/tags.cpp:1472 -#, fuzzy -msgid "Digital still camera" -msgstr "Relación de zoom digital" - -#: src/tags.cpp:1477 -msgid "Directly photographed" -msgstr "" - -#: src/tags.cpp:1482 -msgid "Normal process" -msgstr "Proceso normal" - -#: src/tags.cpp:1483 -msgid "Custom process" -msgstr "Proceso personalizado" - -#: src/tags.cpp:1511 -msgid "Low gain up" -msgstr "Ganancia baja alta" - -#: src/tags.cpp:1512 -msgid "High gain up" -msgstr "Ganancia alta alta" - -#: src/tags.cpp:1513 -msgid "Low gain down" -msgstr "Ganancia baja baja" - -#: src/tags.cpp:1514 -msgid "High gain down" -msgstr "Ganancia alta baja" - -#: src/tags.cpp:1535 -msgid "Close view" -msgstr "Vista cercana" - -#: src/tags.cpp:1536 src/tags.cpp:1537 -msgid "Distant view" -msgstr "Vista distante" - -#: src/tags.cpp:1543 -msgid "Exposure time, given in seconds (sec)." -msgstr "Tiempo de exposición, dado en segundos (seg)." - -#: src/tags.cpp:1553 -#, fuzzy -msgid "" -"Indicates the spectral sensitivity of each channel of the camera used. The " -"tag value is an ASCII string compatible with the standard developed by the " -"ASTM Technical Committee." -msgstr "" -"Indica la sensibilidad espectral de cada canal de la cámara utilizada. El " -"valor de la etiqueta es una cadena de caracteres ASCII compatible con el " -"estándar desarrollado por el ASTM Tecnical committee." - -#: src/tags.cpp:1561 -msgid "Opto-Electoric Conversion Function" -msgstr "" - -#: src/tags.cpp:1562 -msgid "" -"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " -"14524. is the relationship between the camera optical input and the " -"image values." -msgstr "" -"Indica la Función de Conversión Opto-Electrónica (OECF) especificada en ISO " -"14524. es la relación entre la entrada óptica de la cámara y los " -"valores de la imagen." - -#: src/tags.cpp:1566 -#, fuzzy -msgid "Sensitivity Type" -msgstr "Sensibilidad espectral" - -#: src/tags.cpp:1567 -msgid "" -"The SensitivityType tag indicates PhotographicSensitivity tag. which one of " -"the parameters of ISO12232 is the Although it is an optional tag, it should " -"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " -"or 7 may be used in case that the values of plural parameters are the same." -msgstr "" - -#: src/tags.cpp:1573 -#, fuzzy -msgid "Standard Output Sensitivity" -msgstr "Sensibilidad espectral" - -#: src/tags.cpp:1574 -msgid "" -"This tag indicates the standard output sensitivity value of a camera or " -"input device defined in ISO 12232. When recording this tag, the " -"PhotographicSensitivity and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1578 -#, fuzzy -msgid "Recommended Exposure Index" -msgstr "Ãndice de exposición" - -#: src/tags.cpp:1579 -msgid "" -"This tag indicates the recommended exposure index value of a camera or input " -"device defined in ISO 12232. When recording this tag, the " -"PhotographicSensitivity and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1584 -msgid "" -"This tag indicates the ISO speed value of a camera or input device that is " -"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " -"and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1588 -#, fuzzy -msgid "ISO Speed Latitude yyy" -msgstr "Velocidad ISO" - -#: src/tags.cpp:1589 -msgid "" -"This tag indicates the ISO speed latitude yyy value of a camera or input " -"device that is defined in ISO 12232. However, this tag shall not be recorded " -"without ISOSpeed and ISOSpeedLatitudezzz." -msgstr "" - -#: src/tags.cpp:1593 -#, fuzzy -msgid "ISO Speed Latitude zzz" -msgstr "Velocidad ISO" - -#: src/tags.cpp:1594 -msgid "" -"This tag indicates the ISO speed latitude zzz value of a camera or input " -"device that is defined in ISO 12232. However, this tag shall not be recorded " -"without ISOSpeed and ISOSpeedLatitudeyyy." -msgstr "" - -#: src/tags.cpp:1599 -msgid "" -"The version of this standard supported. Nonexistence of this field is taken " -"to mean nonconformance to the standard." -msgstr "" -"La versión soportada de este estándar. Si este campo no existe se interpreta " -"que no se cumple con el estándar." - -#: src/tags.cpp:1602 -msgid "Date and Time (original)" -msgstr "Fecha y Hora (original)" - -#: src/tags.cpp:1603 -msgid "" -"The date and time when the original image data was generated. For a digital " -"still camera the date and time the picture was taken are recorded." -msgstr "" -"La fecha y hora cuando se generaron los datos originales de la imagen. Para " -"una cámara digital se registra la fecha y la hora en la que se tomó la foto." - -#: src/tags.cpp:1606 -msgid "Date and Time (digitized)" -msgstr "Fecha y Hora (digitalizado)" - -#: src/tags.cpp:1607 -#, fuzzy -msgid "The date and time when the image was stored as digital data." -msgstr "" -"La fehca y hora cuando se almacenó la imagen en forma de datos digitales." - -#: src/tags.cpp:1610 -msgid "" -"Information specific to compressed data. The channels of each component are " -"arranged in order from the 1st component to the 4th. For uncompressed data " -"the data arrangement is given in the tag. " -"However, since can only express the order of Y, " -"Cb and Cr, this tag is provided for cases when compressed data uses " -"components other than Y, Cb, and Cr and to enable support of other sequences." -msgstr "" -"Información específica de los datos comprimidos. Los canales de cada " -"componente se arreglan en orden desde el 1er componente al 4to. Para datos " -"no comprimidos el arreglo de los datos se da en la etiqueta " -". Sin embargo, debido a que dicha etiqueta sólo " -"puede expresar el orden de Y, Cb y Cr, se proporciona para los casos en los " -"que los datos comprimidos usan componentes que no son Y, Cb y Cr y para " -"permitir el soporte de otras secuencias." - -#: src/tags.cpp:1619 -msgid "Compressed Bits per Pixel" -msgstr "Bits comprimidos por pixel" - -#: src/tags.cpp:1620 -msgid "" -"Information specific to compressed data. The compression mode used for a " -"compressed image is indicated in unit bits per pixel." -msgstr "" -"Información específica sobre los datos comprimidos. El modo de compresión " -"utilizado para una imagen comprimida está indicado en unidades de bits por " -"pixel." - -#: src/tags.cpp:1624 -#, fuzzy -msgid "" -"Shutter speed. The unit is the APEX (Additive System of Photographic " -"Exposure) setting." -msgstr "" -"Velocidad del obturador. La unidad es el ajuste APEX (Sistema aditivo de " -"exposición fotográfica) (vea el Apéndice C)." - -#: src/tags.cpp:1628 -msgid "The lens aperture. The unit is the APEX value." -msgstr "La apertura de la lente. La unidad es el valor APEX." - -#: src/tags.cpp:1631 -msgid "" -"The value of brightness. The unit is the APEX value. Ordinarily it is given " -"in the range of -99.99 to 99.99." -msgstr "" -"El valor del brillo. La unidad es el valor APEX. Por lo general, se da en el " -"rango de -99,99 a 99,99." - -#: src/tags.cpp:1634 -msgid "Exposure Bias" -msgstr "Ajuste de exposición" - -#: src/tags.cpp:1635 -msgid "" -"The exposure bias. The units is the APEX value. Ordinarily it is given in " -"the range of -99.99 to 99.99." -msgstr "" -"El ajuste de exposición. La unidad es el valor APEX. Por lo general, se da " -"en el rango -99,99 a 99,99." - -#: src/tags.cpp:1639 -msgid "" -"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " -"is given in the range of 00.00 to 99.99, but it is not limited to this range." -msgstr "" -"El valor F más pequeño de la lente. La unidad es el valor APEX. Por lo " -"general, se da en el rango de 00,00 a 99,99 pero no está limitado a dicho " -"rango." - -#: src/tags.cpp:1653 -msgid "" -"This tag is recorded when an image is taken using a strobe light (flash)." -msgstr "" -"Esta etiqueta se registra cuando se toma una imagen usando una luz " -"estrosboscópica (flash)." - -#: src/tags.cpp:1656 -msgid "" -"The actual focal length of the lens, in mm. Conversion is not made to the " -"focal length of a 35 mm film camera." -msgstr "" -"La distancia focal real de la lente, en mm. No se realiza la conversión a la " -"distancia focal de una máquina de película de 35 mm." - -#: src/tags.cpp:1660 -msgid "" -"This tag indicates the location and area of the main subject in the overall " -"scene." -msgstr "" -"Esta etiqueta indica la ubicación y área del sujeto principal en la escena " -"general." - -#: src/tags.cpp:1663 -msgid "Maker Note" -msgstr "Nota del fabricante" - -#: src/tags.cpp:1664 -msgid "" -"A tag for manufacturers of Exif writers to record any desired information. " -"The contents are up to the manufacturer." -msgstr "" -"Una etiqueta para que los fabricantes o escritores Exif registren cualquier " -"información deseada. El contenido queda a cargo del fabricante." - -#: src/tags.cpp:1668 -msgid "" -"A tag for Exif users to write keywords or comments on the image besides " -"those in , and without the character code limitations of " -"the tag." -msgstr "" - -#: src/tags.cpp:1672 -#, fuzzy -msgid "Sub-seconds Time" -msgstr "Fecha y Hora (original)" - -#: src/tags.cpp:1673 -msgid "A tag used to record fractions of seconds for the tag." -msgstr "" -"Una etiqueta utilizada para registrar fracciones de segundo para la etiqueta " -"." - -#: src/tags.cpp:1675 -#, fuzzy -msgid "Sub-seconds Time Original" -msgstr "Fecha y Hora (original)" - -#: src/tags.cpp:1676 -msgid "" -"A tag used to record fractions of seconds for the tag." -msgstr "" -"Una etiqueta utilizada para registrar fracciones de segundo para la etiqueta " -"." - -#: src/tags.cpp:1678 -#, fuzzy -msgid "Sub-seconds Time Digitized" -msgstr "Fecha y Hora (digitalizado)" - -#: src/tags.cpp:1679 -msgid "" -"A tag used to record fractions of seconds for the tag." -msgstr "" -"Una etiqueta utilizada para registrar fracciones de segundo para la etiqueta " -"." - -#: src/tags.cpp:1681 -#, fuzzy -msgid "FlashPix Version" -msgstr "Flash" - -#: src/tags.cpp:1682 -msgid "The FlashPix format version supported by a FPXR file." -msgstr "La versión del formato FlashPix soportada por un archivo FPXR." - -#: src/tags.cpp:1685 -#, fuzzy -msgid "" -"The color space information tag is always recorded as the color space " -"specifier. Normally sRGB is used to define the color space based on the PC " -"monitor conditions and environment. If a color space other than sRGB is " -"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " -"treated as sRGB when it is converted to FlashPix." -msgstr "" -"La etiqueta de información de espacio de color () siempre se " -"registra como el especificador de espacio de color. Normalmente se utiliza " -"sRGB (=1) para definir el espacio de color basado en las condiciones " -"ambientales y del monitor de la PC. Si se utiliza un espacio de color " -"distinto a sRGB, se ajusta en Uncalibrated (=FFFF.H). Los datos de imagen " -"registrados como no calibrados pueden tratarse como sRGB cuando se convierte " -"a FlashPix. Vea el Apéndice E sobre sRGB." - -#: src/tags.cpp:1694 -#, fuzzy -msgid "" -"Information specific to compressed data. When a compressed file is recorded, " -"the valid width of the meaningful image must be recorded in this tag, " -"whether or not there is padding data or a restart marker. This tag should " -"not exist in an uncompressed file." -msgstr "" -"Información específica a los datos comprimidos. Cuando se registra un " -"archivo comprimido, el ancho válido de la imagen significativa se debe " -"registrar en esta etiqueta, haya o no datos de colchón o una marca de " -"reinicio. Esta etiqueta no debería existir en un archivo no comprimido. Vea " -"la sección 2.8.1 y el Apéndice F para más detalles." - -#: src/tags.cpp:1701 -#, fuzzy -msgid "" -"Information specific to compressed data. When a compressed file is recorded, " -"the valid height of the meaningful image must be recorded in this tag, " -"whether or not there is padding data or a restart marker. This tag should " -"not exist in an uncompressed file. Since data padding is unnecessary in the " -"vertical direction, the number of lines recorded in this valid image height " -"tag will in fact be the same as that recorded in the SOF." -msgstr "" -"Información específica a los datos comprimidos. Cuando se registra un " -"archivo comprimido, la altura válida de la imagen significativa debería " -"registrarse en esta etiqueta, haya o no datos de colchón o una marca de " -"reinicio. Esta etiqueta no debería existir en un archivo no comprimido. Vea " -"la sección 2.8.1 y el Apéndice F para más detalles. Dado que no es necesario " -"el colchón de datos en la dirección vertical, la cantidad de líneas " -"registradas en esta etiqueta válida de altura de imagen será, de hecho, la " -"misma que la registrada en el SOF." - -#: src/tags.cpp:1710 -msgid "" -"This tag is used to record the name of an audio file related to the image " -"data. The only relational information recorded here is the Exif audio file " -"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " -"characters). The path is not recorded." -msgstr "" -"Se usa para guardar el nombre del archivo de audio relativo a la imágen " - -#: src/tags.cpp:1716 -msgid "Interoperability IFD Pointer" -msgstr "" - -#: src/tags.cpp:1717 -msgid "" -"Interoperability IFD is composed of tags which stores the information to " -"ensure the Interoperability and pointed by the following tag located in Exif " -"IFD. The Interoperability structure of Interoperability IFD is the same as " -"TIFF defined IFD structure but does not contain the image data " -"characteristically compared with normal TIFF IFD." -msgstr "" -"El IFD de interoperabilidad está compuesto de etiquetas que almacenan la " -"información para asegurar la interoperabilidad y apuntado por la etiqueta " -"siguiente ubicada en el IFD Exif. La estructura de interoperabilidad de el " -"IFD de interoperabilidad es la misma que la estructura IFD definida por " -"TIFF, pero no contiene los datos de imagen característicos del IFD normal de " -"TIFF." - -#: src/tags.cpp:1725 -msgid "" -"Indicates the strobe energy at the time the image is captured, as measured " -"in Beam Candle Power Seconds (BCPS)." -msgstr "" -"Indica la energía del flash en el momento que se captura la imagen, medida " -"en Beam Candle Power Seconds (BCPS)." - -#: src/tags.cpp:1729 -msgid "" -"This tag records the camera or input device spatial frequency table and SFR " -"values in the direction of image width, image height, and diagonal " -"direction, as specified in ISO 12233." -msgstr "" -"Este etiqueta registra la tabla de frecuencia espacial de la cámara o " -"dispositivo de entrada y los valores SFR en las direcciones de ancho, alto y " -"diagonal de la imagen, como se especifica en ISO 12233." - -#: src/tags.cpp:1733 -#, fuzzy -msgid "Focal Plane X-Resolution" -msgstr "Resolución X del plano focal" - -#: src/tags.cpp:1734 -msgid "" -"Indicates the number of pixels in the image width (X) direction per " -" on the camera focal plane." -msgstr "" -"Indica la cantidad de pixels en la dirección del ancho (X) de la imagen por " -" del plano focal de la cámara." - -#: src/tags.cpp:1737 -#, fuzzy -msgid "Focal Plane Y-Resolution" -msgstr "Resolución X del plano focal" - -#: src/tags.cpp:1738 -msgid "" -"Indicates the number of pixels in the image height (V) direction per " -" on the camera focal plane." -msgstr "" -"Indica la cantidad de pixels en la dirección del alto (Y) de la imagen por " -" del plano focal de la cámara." - -#: src/tags.cpp:1742 -msgid "" -"Indicates the unit for measuring and " -". This value is the same as the ." -msgstr "" -"Indica la unidad para medir e " -". Este valor es el mismo que ." - -#: src/tags.cpp:1746 -msgid "" -"Indicates the location of the main subject in the scene. The value of this " -"tag represents the pixel at the center of the main subject relative to the " -"left edge, prior to rotation processing as per the tag. The first " -"value indicates the X column number and second indicates the Y row number." -msgstr "" -"Indica la ubicación del sujeto principal de la escena. El valor de esta " -"etiqueta representa el pixel en el centro del sujeto principal relativo al " -"borde izquierdo, antes del proceso de rotación como lo indica la etiqueta " -". El primer valor indica el número de columna X y el segundo el " -"número de fila Y." - -#: src/tags.cpp:1752 -msgid "Exposure index" -msgstr "Ãndice de exposición" - -#: src/tags.cpp:1753 -msgid "" -"Indicates the exposure index selected on the camera or input device at the " -"time the image is captured." -msgstr "" -"Indica el índice de exposición seleccionado en la cámara o dispositivo de " -"entrada en el momento que se captura la imagen." - -#: src/tags.cpp:1757 -msgid "Indicates the image sensor type on the camera or input device." -msgstr "" -"Indica el tipo de sensor de imagen en la cámara o dispositivo de entrada." - -#: src/tags.cpp:1760 -msgid "" -"Indicates the image source. If a DSC recorded the image, this tag value of " -"this tag always be set to 3, indicating that the image was recorded on a DSC." -msgstr "" -"Indica la fuente de la imagen. Si la imagen se registró en un DSC, el valor " -"de esta etiqueta siempre debe ser 3, indicando que la imagen se registró en " -"un DSC." - -#: src/tags.cpp:1765 -msgid "" -"Indicates the type of scene. If a DSC recorded the image, this tag value " -"must always be set to 1, indicating that the image was directly photographed." -msgstr "" -"Indica el tipo de la escena. Si la imagen se registró en un DSC, el valor de " -"esta etiqueta siempre debe ser 1, indicando que la imagen se registró en un " -"DSC." - -#: src/tags.cpp:1769 -#, fuzzy -msgid "Color Filter Array Pattern" -msgstr "Espacio de color" - -#: src/tags.cpp:1770 -msgid "" -"Indicates the color filter array (CFA) geometric pattern of the image sensor " -"when a one-chip color area sensor is used. It does not apply to all sensing " -"methods." -msgstr "" -"Indica el patrón geométrico de la matriz de filtro de color (CFA) del sensor " -"de imagen cuando se utiliza un sensor de área color de un chip. No se aplica " -"a todos los métodos de sensado." - -#: src/tags.cpp:1775 -msgid "" -"This tag indicates the use of special processing on image data, such as " -"rendering geared to output. When special processing is performed, the reader " -"is expected to disable or minimize any further processing." -msgstr "" -"Esta etiqueta indica el uso de procesamiento especial en los datos de " -"imagen, tal como el rendering de la salida. Cuando se realiza un " -"procesamiento especial, se espera que el lector deshabilite o minimice el " -"procesado siguiente." - -#: src/tags.cpp:1781 -msgid "" -"This tag indicates the exposure mode set when the image was shot. In auto-" -"bracketing mode, the camera shoots a series of frames of the same scene at " -"different exposure settings." -msgstr "" -"Esta etiqueta indica el modo de exposición ajustado cuando se tomó la " -"imagen. En el modo auto-bracketing, la cámara toma una serie de cuadros de " -"la misma escena con ajustes de exposición diferentes." - -#: src/tags.cpp:1786 -msgid "This tag indicates the white balance mode set when the image was shot." -msgstr "" -"Esta etiqueta indica el modo de balance de blanco establecido cuando se tomó " -"la imagen." - -#: src/tags.cpp:1789 -msgid "" -"This tag indicates the digital zoom ratio when the image was shot. If the " -"numerator of the recorded value is 0, this indicates that digital zoom was " -"not used." -msgstr "" -"Esta etiqueta indica la relación del zoom digital cuando se tomó la imagen. " -"Si el numerador del valor registrado es 0, esto indica que no se utilizó el " -"zoom digital." - -#: src/tags.cpp:1794 -#, fuzzy -msgid "" -"This tag indicates the equivalent focal length assuming a 35mm film camera, " -"in mm. A value of 0 means the focal length is unknown. Note that this tag " -"differs from the tag." -msgstr "" -"Esta etiqueta indica la distancia focal equivalente asumiendo una cámara de " -"película de 35mm, en mm. Un valor de 0 significa que se desconoce la " -"distancia focal. Note que esta etiqueta difiere de la etiqueta FocalLength." - -#: src/tags.cpp:1800 -#, fuzzy -msgid "" -"This tag indicates the type of scene that was shot. It can also be used to " -"record the mode in which the image was shot. Note that this differs from the " -" tag." -msgstr "" -"Esta etiqueta indica el tipo de escena que se tomó. También se puede " -"utilizar para registrar el modo en el cual se tomó la imagen. Note que esto " -"difiere de la etiqueta SceneType." - -#: src/tags.cpp:1805 -msgid "This tag indicates the degree of overall image gain adjustment." -msgstr "" -"Esta etiqueta indica el grado del ajuste de ganancia general de imagen." - -#: src/tags.cpp:1808 -msgid "" -"This tag indicates the direction of contrast processing applied by the " -"camera when the image was shot." -msgstr "" -"Esta etiqueta indica la dirección del procesamiento de contraste aplicado " -"por la cámara cuando se tomó la imagen." - -#: src/tags.cpp:1812 -msgid "" -"This tag indicates the direction of saturation processing applied by the " -"camera when the image was shot." -msgstr "" -"Esta etiqueta indica la dirección del procesamiento de stauración aplicado " -"por la cámara cuando se tomó la imagen." - -#: src/tags.cpp:1816 -msgid "" -"This tag indicates the direction of sharpness processing applied by the " -"camera when the image was shot." -msgstr "" -"Esta etiqueta indica la dirección del procesamiento de nitidez aplicado por " -"la cámara cuando se tomó la imagen." - -#: src/tags.cpp:1820 -msgid "" -"This tag indicates information on the picture-taking conditions of a " -"particular camera model. The tag is used only to indicate the picture-taking " -"conditions in the reader." -msgstr "" -"Esta etiqueta indica información sobre las condiciones de toma de la foto de " -"un modelo de cámara en particular. La etiqueta sólo se usa para indicar las " -"condiciones de toma de fotos en el lector." - -#: src/tags.cpp:1825 -msgid "This tag indicates the distance to the subject." -msgstr "Esta etiqueta indica la distancia al sujeto." - -#: src/tags.cpp:1828 -msgid "" -"This tag indicates an identifier assigned uniquely to each image. It is " -"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " -"fixed length." -msgstr "" -"Esta etiqueta indica un identificador asignado unívocamente a cada imagen. " -"Se registra como una cadena de caracteres ASCII equivalente a notación " -"hexadecimal y de una longitud fija de 128 bits." - -#: src/tags.cpp:1832 -#, fuzzy -msgid "Camera Owner Name" -msgstr "Propietario" - -#: src/tags.cpp:1833 -msgid "" -"This tag records the owner of a camera used in photography as an ASCII " -"string." -msgstr "" - -#: src/tags.cpp:1836 -#, fuzzy -msgid "Body Serial Number" -msgstr "Número Serie" - -#: src/tags.cpp:1837 -msgid "" -"This tag records the serial number of the body of the camera that was used " -"in photography as an ASCII string." -msgstr "" - -#: src/tags.cpp:1840 -#, fuzzy -msgid "Lens Specification" -msgstr "Información específica del vendedor" - -#: src/tags.cpp:1841 -msgid "" -"This tag notes minimum focal length, maximum focal length, minimum F number " -"in the minimum focal length, and minimum F number in the maximum focal " -"length, which are specification information for the lens that was used in " -"photography. When the minimum F number is unknown, the notation is 0/0" -msgstr "" - -#: src/tags.cpp:1847 -#, fuzzy -msgid "Lens Make" -msgstr "Tipo de escena" - -#: src/tags.cpp:1848 -msgid "This tag records the lens manufactor as an ASCII string." -msgstr "" - -#: src/tags.cpp:1851 -msgid "" -"This tag records the lens's model name and model number as an ASCII string." -msgstr "" - -#: src/tags.cpp:1855 -msgid "" -"This tag records the serial number of the interchangeable lens that was used " -"in photography as an ASCII string." -msgstr "" - -#: src/tags.cpp:1859 src/tags.cpp:1860 -#, fuzzy -msgid "Unknown Exif tag" -msgstr "Desconocido" - -#: src/tags.cpp:1871 -#, fuzzy -msgid "North" -msgstr "otro" - -#: src/tags.cpp:1872 -#, fuzzy -msgid "South" -msgstr "Lugar" - -#: src/tags.cpp:1877 -#, fuzzy -msgid "East" -msgstr "Flash" - -#: src/tags.cpp:1878 -#, fuzzy -msgid "West" -msgstr "Centímetro" - -#: src/tags.cpp:1883 -msgid "Above sea level" -msgstr "" - -#: src/tags.cpp:1884 -#, fuzzy -msgid "Below sea level" -msgstr "Nivel de la batería" - -#: src/tags.cpp:1889 -msgid "Measurement in progress" -msgstr "" - -#: src/tags.cpp:1890 -msgid "Measurement Interoperability" -msgstr "" - -#: src/tags.cpp:1895 -msgid "Two-dimensional measurement" -msgstr "" - -#: src/tags.cpp:1896 -msgid "Three-dimensional measurement" -msgstr "" - -#: src/tags.cpp:1901 -msgid "km/h" -msgstr "" - -#: src/tags.cpp:1902 -msgid "mph" -msgstr "" - -#: src/tags.cpp:1903 -#, fuzzy -msgid "knots" -msgstr "Punto blanco" - -#: src/tags.cpp:1908 -#, fuzzy -msgid "True direction" -msgstr "Descripción de la imagen" - -#: src/tags.cpp:1909 -#, fuzzy -msgid "Magnetic direction" -msgstr "Descripción de la imagen" - -#: src/tags.cpp:1914 -#, fuzzy -msgid "Kilometers" -msgstr "Orden de llenado" - -#: src/tags.cpp:1915 -#, fuzzy -msgid "Miles" -msgstr "Orden de llenado" - -#: src/tags.cpp:1916 -#, fuzzy -msgid "Knots" -msgstr "Punto blanco" - -#: src/tags.cpp:1921 -#, fuzzy -msgid "Without correction" -msgstr "Ubicación del sujeto" - -#: src/tags.cpp:1922 -#, fuzzy -msgid "Correction applied" -msgstr "Tiempo de exposición" - -#: src/tags.cpp:1928 -#, fuzzy -msgid "" -"Indicates the version of . The version is given as 2.0.0.0. This " -"tag is mandatory when tag is present. (Note: The " -"tag is given in bytes, unlike the tag. When the version is " -"2.0.0.0, the tag value is 02000000.H)." -msgstr "" -"Indica la versión de . La versión está dada como 2.0.0.0. Esta " -"etiqueta es obligatoria cuando está presente la etiqueta . (Nota: " -"La etiqueta está dada en bytes, a diferencia de la etiqueta " -". Cuando la versión es 2.0.0.0, el valor de la etiqueta es " -"02000000.H)." - -#: src/tags.cpp:1934 -#, fuzzy -msgid "GPS Latitude Reference" -msgstr "Referencia Blanco/Negro" - -#: src/tags.cpp:1935 -msgid "" -"Indicates whether the latitude is north or south latitude. The ASCII value " -"'N' indicates north latitude, and 'S' is south latitude." -msgstr "" -"Indica si la latitud es Norte o Sur. El valor ASCII 'N' indica latitud " -"Norte, y 'S' indica latitud Sur." - -#: src/tags.cpp:1939 -#, fuzzy -msgid "" -"Indicates the latitude. The latitude is expressed as three RATIONAL values " -"giving the degrees, minutes, and seconds, respectively. When degrees, " -"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " -"degrees and minutes are used and, for example, fractions of minutes are " -"given up to two decimal places, the format is dd/1,mmmm/100,0/1." -msgstr "" -"Indica la latitud, expresada como tres valores RACIONALES dando los grados, " -"minutos y segundos, respectivamente. Cuando se expresan grados, minutos y " -"segundos, el formato es gg/1,mm/1,ss/1. Cuando se utilizan grados y minutos " -"y, por ejemplo, se dan fracciones de minutos hasta con dos posiciones " -"decimales, el formato es gg/1,mmmm/100,0/1." - -#: src/tags.cpp:1946 -#, fuzzy -msgid "GPS Longitude Reference" -msgstr "Referencia Blanco/Negro" - -#: src/tags.cpp:1947 -msgid "" -"Indicates whether the longitude is east or west longitude. ASCII 'E' " -"indicates east longitude, and 'W' is west longitude." -msgstr "" -"Indica si la longitud es Este u Oeste. El valor ASCII 'E' indica longitud " -"Este, y 'W' indica longitud Oeste." - -#: src/tags.cpp:1951 -msgid "" -"Indicates the longitude. The longitude is expressed as three RATIONAL values " -"giving the degrees, minutes, and seconds, respectively. When degrees, " -"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " -"degrees and minutes are used and, for example, fractions of minutes are " -"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." -msgstr "" -"Indica la longitud. La longitud se expresa como tres valores RACIONALES " -"dando los grados, minutos y segundos, respectivamente. Cuando se expresan " -"grados, minutos y segundos, el formato es gg/1,mm/1,ss/1. Cuando se utilizan " -"grados y minutos y, por ejemplo, se dan fracciones de minutos hasta con dos " -"posiciones decimales, el formato es gg/1,mmmm/100,0/1." - -#: src/tags.cpp:1959 -msgid "" -"Indicates the altitude used as the reference altitude. If the reference is " -"sea level and the altitude is above sea level, 0 is given. If the altitude " -"is below sea level, a value of 1 is given and the altitude is indicated as " -"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " -"that this tag is BYTE type, unlike other reference tags." -msgstr "" - -#: src/tags.cpp:1967 -msgid "" -"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " -"expressed as one RATIONAL value. The reference unit is meters." -msgstr "" - -#: src/tags.cpp:1971 -msgid "" -"Indicates the time as UTC (Coordinated Universal Time). is " -"expressed as three RATIONAL values giving the hour, minute, and second " -"(atomic clock)." -msgstr "" - -#: src/tags.cpp:1976 -msgid "" -"Indicates the GPS satellites used for measurements. This tag can be used to " -"describe the number of satellites, their ID number, angle of elevation, " -"azimuth, SNR and other information in ASCII notation. The format is not " -"specified. If the GPS receiver is incapable of taking measurements, value of " -"the tag is set to NULL." -msgstr "" - -#: src/tags.cpp:1983 -msgid "" -"Indicates the status of the GPS receiver when the image is recorded. \"A\" " -"means measurement is in progress, and \"V\" means the measurement is " -"Interoperability." -msgstr "" - -#: src/tags.cpp:1988 -msgid "" -"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " -"and \"3\" means three-dimensional measurement is in progress." -msgstr "" - -#: src/tags.cpp:1991 -msgid "GPS Data Degree of Precision" -msgstr "" - -#: src/tags.cpp:1992 -msgid "" -"Indicates the GPS DOP (data degree of precision). An HDOP value is written " -"during two-dimensional measurement, and PDOP during three-dimensional " -"measurement." -msgstr "" - -#: src/tags.cpp:1996 -msgid "" -"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " -"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." -msgstr "" - -#: src/tags.cpp:2000 -#, fuzzy -msgid "Indicates the speed of GPS receiver movement." -msgstr "Esta etiqueta indica la distancia al sujeto." - -#: src/tags.cpp:2002 -#, fuzzy -msgid "GPS Track Ref" -msgstr "Referencia Blanco/Negro" - -#: src/tags.cpp:2003 -msgid "" -"Indicates the reference for giving the direction of GPS receiver movement. " -"\"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" - -#: src/tags.cpp:2007 -msgid "" -"Indicates the direction of GPS receiver movement. The range of values is " -"from 0.00 to 359.99." -msgstr "" - -#: src/tags.cpp:2011 -msgid "" -"Indicates the reference for giving the direction of the image when it is " -"captured. \"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" - -#: src/tags.cpp:2015 -msgid "" -"Indicates the direction of the image when it was captured. The range of " -"values is from 0.00 to 359.99." -msgstr "" -"Indica la dirección de la imágen cuando fue capturada. El rango de valores " -"va de 0.00 a 359.99." - -#: src/tags.cpp:2019 -msgid "" -"Indicates the geodetic survey data used by the GPS receiver. If the survey " -"data is restricted to Japan, the value of this tag is \"TOKYO\" or " -"\"WGS-84\"." -msgstr "" - -#: src/tags.cpp:2022 -#, fuzzy -msgid "GPS Destination Latitude Refeference" -msgstr "Distancia del sujeto" - -#: src/tags.cpp:2023 -#, fuzzy -msgid "" -"Indicates whether the latitude of the destination point is north or south " -"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " -"latitude." -msgstr "" -"Indica si la latitud del punto de destino es Norte o Sur. El valor ASCII 'N' " -"indica latitud Norte, y 'S' indica latitud Sur." - -#: src/tags.cpp:2027 -#, fuzzy -msgid "" -"Indicates the latitude of the destination point. The latitude is expressed " -"as three RATIONAL values giving the degrees, minutes, and seconds, " -"respectively. If latitude is expressed as degrees, minutes and seconds, a " -"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " -"and, for example, fractions of minutes are given up to two decimal places, " -"the format would be dd/1,mmmm/100,0/1." -msgstr "" -"Indica la latitud del destino, expresada como tres valores RACIONALES dando " -"los grados, minutos y segundos, respectivamente. Cuando se expresan grados, " -"minutos y segundos, el formato es gg/1,mm/1,ss/1. Cuando se utilizan grados " -"y minutos y, por ejemplo, se dan fracciones de minutos hasta con dos " -"posiciones decimales, el formato es gg/1,mmmm/100,0/1." - -#: src/tags.cpp:2034 -#, fuzzy -msgid "GPS Destination Longitude Reference" -msgstr "Distancia del sujeto" - -#: src/tags.cpp:2035 -#, fuzzy -msgid "" -"Indicates whether the longitude of the destination point is east or west " -"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." -msgstr "" -"Indica si la longitud es Este u Oeste. El valor ASCII 'E' indica longitud " -"Este, y 'W' indica longitud Oeste." - -#: src/tags.cpp:2039 -#, fuzzy -msgid "" -"Indicates the longitude of the destination point. The longitude is expressed " -"as three RATIONAL values giving the degrees, minutes, and seconds, " -"respectively. If longitude is expressed as degrees, minutes and seconds, a " -"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " -"and, for example, fractions of minutes are given up to two decimal places, " -"the format would be ddd/1,mmmm/100,0/1." -msgstr "" -"Indica la longitud. La longitud se expresa como tres valores RACIONALES " -"dando los grados, minutos y segundos, respectivamente. Cuando se expresan " -"grados, minutos y segundos, el formato es gg/1,mm/1,ss/1. Cuando se utilizan " -"grados y minutos y, por ejemplo, se dan fracciones de minutos hasta con dos " -"posiciones decimales, el formato es gg/1,mmmm/100,0/1." - -#: src/tags.cpp:2046 -msgid "" -"Indicates the reference used for giving the bearing to the destination " -"point. \"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" - -#: src/tags.cpp:2050 -#, fuzzy -msgid "" -"Indicates the bearing to the destination point. The range of values is from " -"0.00 to 359.99." -msgstr "Esta etiqueta indica la distancia al sujeto." - -#: src/tags.cpp:2053 -#, fuzzy -msgid "GPS Destination Distance Reference" -msgstr "Distancia del sujeto" - -#: src/tags.cpp:2054 -msgid "" -"Indicates the unit used to express the distance to the destination point. \"K" -"\", \"M\" and \"N\" represent kilometers, miles and knots." -msgstr "" - -#: src/tags.cpp:2058 -#, fuzzy -msgid "Indicates the distance to the destination point." -msgstr "Esta etiqueta indica la distancia al sujeto." - -#: src/tags.cpp:2061 -msgid "" -"A character string recording the name of the method used for location " -"finding. The first byte indicates the character code used, and this is " -"followed by the name of the method." -msgstr "" - -#: src/tags.cpp:2066 -msgid "" -"A character string recording the name of the GPS area. The first byte " -"indicates the character code used, and this is followed by the name of the " -"GPS area." -msgstr "" -"Una cadena de caracteres con el nombre del área GPS. El primer byte indica " -"el código de caracteres empleado, y le sigue el nombre del área GPS." - -#: src/tags.cpp:2069 -#, fuzzy -msgid "GPS Date Stamp" -msgstr "Fecha y hora" - -#: src/tags.cpp:2070 -msgid "" -"A character string recording date and time information relative to UTC " -"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." -msgstr "" - -#: src/tags.cpp:2074 -#, fuzzy -msgid "" -"Indicates whether differential correction is applied to the GPS receiver." -msgstr "" -"Esta etiqueta indica la dirección del procesamiento de stauración aplicado " -"por la cámara cuando se tomó la imagen." - -#: src/tags.cpp:2077 src/tags.cpp:2078 -#, fuzzy -msgid "Unknown GPSInfo tag" -msgstr "Desconocido" - -#: src/tags.cpp:2089 -#, fuzzy -msgid "Interoperability Index" -msgstr "Versión Exif" - -#: src/tags.cpp:2090 -msgid "" -"Indicates the identification of the Interoperability rule. Use \"R98\" for " -"stating ExifR98 Rules. Four bytes used including the termination code " -"(NULL). see the separate volume of Recommended Exif Interoperability Rules " -"(ExifR98) for other tags used for ExifR98." -msgstr "" -"Indica la identificación de la regla de inter-operatibilidad. Utilice " -"\"R98\" para indicar reglas ExifR98. Se utilizan cuatro bytes incluyendo el " -"código de terminación (NULL). Vea el volumen separado de Recommended Exif " -"Interoperatibility Rules (ExifR98) para otras etiquetas usadas en ExifR98." - -#: src/tags.cpp:2096 -#, fuzzy -msgid "Interoperability Version" -msgstr "Versión Exif" - -#: src/tags.cpp:2097 -msgid "Interoperability version" -msgstr "" - -#: src/tags.cpp:2099 -#, fuzzy -msgid "Related Image File Format" -msgstr "Ancho de la imagen" - -#: src/tags.cpp:2100 -msgid "File format of image file" -msgstr "" - -#: src/tags.cpp:2102 -#, fuzzy -msgid "Related Image Width" -msgstr "Ancho de la imagen" - -#: src/tags.cpp:2105 -#, fuzzy -msgid "Related Image Length" -msgstr "Longitud de la imagen" - -#: src/tags.cpp:2109 src/tags.cpp:2110 -#, fuzzy -msgid "Unknown Exif Interoperability tag" -msgstr "Versión Exif" - -#: src/tags.cpp:2121 -#, fuzzy -msgid "Offset" -msgstr "Suave" - -#: src/tags.cpp:2122 -msgid "Offset of the makernote from the start of the TIFF header." -msgstr "" - -#: src/tags.cpp:2124 -#, fuzzy -msgid "Byte Order" -msgstr "Orden de llenado" - -#: src/tags.cpp:2125 -msgid "" -"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" -"endian)." -msgstr "" - -#: src/tags.cpp:2128 src/tags.cpp:2129 -#, fuzzy -msgid "Unknown Exiv2 Makernote info tag" -msgstr "Versión Exif" - -#: src/tags.cpp:2139 src/tags.cpp:2140 -#, fuzzy -msgid "Unknown tag" -msgstr "Desconocido" - -#: src/tags.cpp:2662 -#, fuzzy -msgid "Digital zoom not used" -msgstr "Relación de zoom digital" - -#: src/tiffimage.cpp:2034 -msgid "TIFF header, offset" -msgstr "" - -#: src/tiffimage.cpp:2039 -msgid "little endian encoded" -msgstr "" - -#: src/tiffimage.cpp:2040 -msgid "big endian encoded" -msgstr "" - -#, fuzzy -#~ msgid "Software firmware version" -#~ msgstr "Versión Exif" - -#, fuzzy -#~ msgid "White Balance Bracketing " -#~ msgstr "Balance de blanco" - -#, fuzzy -#~ msgid "(Unknown Error)" -#~ msgstr "Desconocido" - -#, fuzzy -#~ msgid "Exposure Speed" -#~ msgstr "Modo de exposición" - -#, fuzzy -#~ msgid "Exposure speed" -#~ msgstr "Modo de exposición" - -#, fuzzy -#~ msgid "Color balance settings 1" -#~ msgstr "Espacio de color" - -#, fuzzy -#~ msgid "Compression curve" -#~ msgstr "Compresión" - -#, fuzzy -#~ msgid "Color balance settings 2" -#~ msgstr "Espacio de color" - -#, fuzzy -#~ msgid "Dynamic area (wide" -#~ msgstr "Balance de blanco" - -#, fuzzy -#~ msgid "ImageStabilizer" -#~ msgstr "Orientación" - -#, fuzzy -#~ msgid "Image stabilizer" -#~ msgstr "Orientación" - -#, fuzzy -#~ msgid "Data area" -#~ msgstr "formato planar" - -#, fuzzy -#~ msgid "bytes.\n" -#~ msgstr "Centímetro" - -#, fuzzy -#~ msgid "entry:\n" -#~ msgstr "Centímetro" - -#, fuzzy -#~ msgid "Makernote" -#~ msgstr "Nota del fabricante" - -#, fuzzy -#~ msgid "NEF Thumbnail Size" -#~ msgstr "Desplazamiento de tira" - -#, fuzzy -#~ msgid "NEF thumbnail size" -#~ msgstr "Desplazamiento de tira" - -#, fuzzy -#~ msgid "Data of entry" -#~ msgstr "formato planar" - -#, fuzzy -#~ msgid "uncalibrated" -#~ msgstr "Descalibrado" - -#, fuzzy -#~ msgid "not defined" -#~ msgstr "No definido" - -#~ msgid "Normal program" -#~ msgstr "Programa normal" - -#~ msgid "unknown" -#~ msgstr "desconocido" - -#, fuzzy -#~ msgid "other" -#~ msgstr "otro" - -#, fuzzy -#~ msgid "centimeters" -#~ msgstr "Centímetro" - -#, fuzzy -#~ msgid "One-chip color area sensor" -#~ msgstr "Sensor de área de color de un chip" - -#, fuzzy -#~ msgid "Two-chip color area sensor" -#~ msgstr "Sensor de área de color de dos chips" - -#, fuzzy -#~ msgid "Three-chip color area sensor" -#~ msgstr "Sensor de área de color de tres chips" - -#, fuzzy -#~ msgid "Color sequential area sensor" -#~ msgstr "Sensor de área de color secuencial" - -#, fuzzy -#~ msgid "Color sequential linear sensor" -#~ msgstr "Sensor lineal secuencial de color" - -#~ msgid "DSC" -#~ msgstr "DSC" - -#, fuzzy -#~ msgid "Date Time" -#~ msgstr "Fecha y hora" - -#, fuzzy -#~ msgid "Date Time Digitized" -#~ msgstr "Fecha y Hora (digitalizado)" - -#, fuzzy -#~ msgid "scene" -#~ msgstr "escenario" - -#, fuzzy -#~ msgid "artist" -#~ msgstr "Artista" - -#, fuzzy -#~ msgid "copyright" -#~ msgstr "Copyright" - -#, fuzzy -#~ msgid "CenterWeightedAverage" -#~ msgstr "Promedio Ponderado en el Centro" - -#, fuzzy -#~ msgid "MultiSpot" -#~ msgstr "Multi Lugar" - -#, fuzzy -#~ msgid "Flash exposure bracket value" -#~ msgstr "Tiempo de exposición" - -#, fuzzy -#~ msgid "Exposure bracket value" -#~ msgstr "Tiempo de exposición" - -#, fuzzy -#~ msgid "Lens adapter used" -#~ msgstr "Espacio de color" - -#~ msgid "Invalid format '%s', expected '%s'." -#~ msgstr "Formato no válido '%s', se esperaba '%s'." - -#~ msgid "Invalid number of components (%i, expected %i)." -#~ msgstr "Cantidad de componentes no válida (%i, se esperaba %i)." - -#, fuzzy -#~ msgid "Invalid number of components (%i, expected %i or %i)." -#~ msgstr "Cantidad de componentes no válida (%i, se esperaba %i)." - -#~ msgid "landscape" -#~ msgstr "paisaje" - -#~ msgid "partial" -#~ msgstr "parcial" - -#, fuzzy -#~ msgid "none (manual focus)" -#~ msgstr "Exposición manual" - -#, fuzzy -#~ msgid "Flourescent" -#~ msgstr "Fluorescente" - -#, fuzzy -#~ msgid "Zoomed resolution" -#~ msgstr "Resolución X" - -#, fuzzy -#~ msgid "Unknown encoding." -#~ msgstr "Desconocido" - -#, fuzzy -#~ msgid "Ignore unknown tags" -#~ msgstr "Desconocido" - -#, fuzzy -#~ msgid "" -#~ "The tag '%s' contains data of an invalid format ('%s', expected '%s')." -#~ msgstr "Formato no válido '%s', se esperaba '%s'." - -#, fuzzy -#~ msgid "" -#~ "The tag '%s' contains an invalid number of components (%i, expected %i)." -#~ msgstr "Cantidad de componentes no válida (%i, se esperaba %i)." - -#~ msgid "chunky format" -#~ msgstr "formato por trozos" - -#, fuzzy -#~ msgid "Center-Weight" -#~ msgstr "peso centrado" - -#~ msgid "cloudy" -#~ msgstr "nublado" - -#~ msgid "Creative program (biased toward depth of field)" -#~ msgstr "Programa creativo (orientado a la profundidad del campo)" - -#, fuzzy -#~ msgid "Creative program (biased toward fast shutter speed)" -#~ msgstr "Programa de acción (orientado a velocidad rápida del obturador)" - -#, fuzzy -#~ msgid "Portrait mode (for closeup photos with the background out of focus)" -#~ msgstr "Modo retrato (para fotos de cerca con el fondo fuera de foco" - -#, fuzzy -#~ msgid "Landscape mode (for landscape photos with the background in focus)" -#~ msgstr "Modo paisaje (para fotos de paisaje con el fondo en foco" - -#~ msgid "Flash did not fire." -#~ msgstr "El flash no disparó." - -#, fuzzy -#~ msgid "W/o strobe" -#~ msgstr "sin estrosboscópica" - -#, fuzzy -#~ msgid "W. strobe" -#~ msgstr "con estrosboscópica" - -#, fuzzy -#~ msgid "Flash fired, compulsatory flash mode" -#~ msgstr "Flash disparado, modo compulsivo del flash." - -#, fuzzy -#~ msgid "Flash did not fire, compulsatory flash mode." -#~ msgstr "El flash no disparó, modo compulsivo del flash." - -#~ msgid "Flash did not fire, auto mode." -#~ msgstr "El flash no disparó, modo automático." - -#~ msgid "Flash fired, auto mode, return light not detected." -#~ msgstr "El flash disparó, modo automático, luz de retorno no detectada." - -#~ msgid "Flash fired, auto mode, return light detected." -#~ msgstr "El flash disparó, modo automático, luz de retorno detectada." - -#~ msgid "Flash fired, red-eye reduction mode." -#~ msgstr "El flash disparó, modo de reducción de ojos rojos." - -#, fuzzy -#~ msgid "Flash did not fire, auto mode, red-eye reduction mode" -#~ msgstr "El flash disparó, modo automático, modo de reducción de ojos rojos." - -#, fuzzy -#~ msgid "Flash fired, auto mode, red-eye reduction mode" -#~ msgstr "El flash disparó, modo automático, modo de reducción de ojos rojos." - -#~ msgid "" -#~ "Flash fired, auto mode, return light not detected, red-eye reduction mode." -#~ msgstr "" -#~ "El flash disparó, modo automático, modo de reducción de ojos rojos, luz " -#~ "de retorno no detectada." - -#~ msgid "" -#~ "Flash fired, auto mode, return light detected, red-eye reduction mode." -#~ msgstr "" -#~ "El flash disparó, modo automático, modo de reducción de ojos rojos, luz " -#~ "de retorno detectada." - -#, fuzzy -#~ msgid "Invalid size of entry (%i, expected %li x %i)." -#~ msgstr "Cantidad de componentes no válida (%i, se esperaba %i)." - -#, fuzzy -#~ msgid "Exif Version %d.%d" -#~ msgstr "Versión Exif" - -#, fuzzy -#~ msgid "1/%d" -#~ msgstr "1/%d seg." - -#, fuzzy -#~ msgid " sec." -#~ msgstr "%d seg." - -#~ msgid "Y" -#~ msgstr "Y" - -#~ msgid "Cr" -#~ msgstr "Cr" - -#~ msgid "R" -#~ msgstr "R" - -#~ msgid "G" -#~ msgstr "V" - -#~ msgid "reserved" -#~ msgstr "reservado" - -#~ msgid "YCbCr4:2:2" -#~ msgstr "YCbCr4:2:2" - -#~ msgid "YCbCr4:2:0" -#~ msgstr "YCbCr4:2:0" - -#~ msgid "%i bytes unknown data" -#~ msgstr "%i bytes de datos desconocidos" - -#~ msgid "Within distance %i of (x,y) = (%i,%i)" -#~ msgstr "Dentro de la distancia %i de (x,y) = (%i,%i)" - -#~ msgid "Within rectangle (width %i, height %i) around (x,y) = (%i,%i)" -#~ msgstr "" -#~ "Dentro del rectángulo (ancho %i, alto %i) alrededor de (x,y) = (%i,%i)" - -#~ msgid "Unexpected number of components (%li, expected 2, 3, or 4)." -#~ msgstr "Cantidad de componentes inesperada (%li, esperados 2, 3, o 4)." - -#, fuzzy -#~ msgid "SShort" -#~ msgstr "Lugar" - -#~ msgid "" -#~ "A tag for Exif users to write keywords or comments on the image besides " -#~ "those in , and without the character code limitations " -#~ "of the tag. The character code used in the " -#~ " tag is identified based on an ID code in a fixed 8-byte " -#~ "area at the start of the tag data area. The unused portion of the area is " -#~ "padded with NULL (\"00.h\"). ID codes are assigned by means of " -#~ "registration. The designation method and references for each character " -#~ "code are given in Table 6. The value of CountN is determinated based on " -#~ "the 8 bytes in the character code area and the number of bytes in the " -#~ "user comment part. Since the TYPE is not ASCII, NULL termination is not " -#~ "necessary (see Fig. 9). The ID code for the area may be a " -#~ "Defined code such as JIS or ASCII, or may be Undefined. The Undefined " -#~ "name is UndefinedText, and the ID code is filled with 8 bytes of all " -#~ "\"NULL\" (\"00.H\"). An Exif reader that reads the tag must " -#~ "have a function for determining the ID code. This function is not " -#~ "required in Exif readers that do not use the tag (see Table " -#~ "7). When a area is set aside, it is recommended that the ID " -#~ "code be ASCII and that the following user comment part be filled with " -#~ "blank characters [20.H]." -#~ msgstr "" -#~ "Una etiqueta para que los usuarios de Exif escriban palabras clave o " -#~ "comentarios en la imagen además de los de , y sin " -#~ "limitaciones en la codificación de caracteres de dicha etiqueta. El " -#~ "código de caracteres utilizado en esta etiqueta se identifica basándose " -#~ "en un código ID en un área fija de 8 bytes al comienzo del área de datos " -#~ "de la etiqueta. La porción no utilizada del área se completa con NULL " -#~ "(\"00.h\"). Los códigos ID se asignan por medio de registro. En la tabla " -#~ "6 se dan el método de designación y referencias para cada código de " -#~ "caracter. El valor de CountN está determinado basado en los 8 bytes en el " -#~ "área de código de caracter y la cantidad de bytes en la parte del " -#~ "comentario del usuario. Dado que TYPE no es ASCII, no es necesaria la " -#~ "terminación NULL (ver fig. 9). El código ID para el área " -#~ "puede ser un código definido como JIS o ASCII, o puede ser no definido. " -#~ "El nombre no definido es UndefinedText, y el código ID se completa con 8 " -#~ "bytes de todos \"NULL\" (\"00.H\"). Un lector Exif que lee la etiqueta " -#~ " debe tener una función para determinar el código ID. Esta " -#~ "función no se necesita en lectores Exif que no usan la etiqueta " -#~ " (ver tabla 7). Cuando se deja a un lado el área " -#~ ", se recomienda que el código ID sea ASCII y que se complete " -#~ "la parte de comentario de usuario siguiente con caracteres espacio [20.H]." - -#~ msgid "" -#~ "This tag is used to record the name of an audio file related to the image " -#~ "data. The only relational information recorded here is the Exif audio " -#~ "file name and extension (an ASCII string consisting of 8 characters + '.' " -#~ "+ 3 characters). The path is not recorded. Stipulations on audio are " -#~ "given in section 3.6.3. File naming conventions are given in section " -#~ "3.7.1. When using this tag, audio files must be recorded in conformance " -#~ "to the Exif audio format. Writers are also allowed to store the data such " -#~ "as Audio within APP2 as FlashPix extension stream data. Audio files must " -#~ "be recorded in conformance to the Exif audio format. The mapping of Exif " -#~ "image files and audio files is done in any of the three ways shown in " -#~ "Table 8. If multiple files are mapped to one file as in [2] or [3] of " -#~ "this table, the above format is used to record just one audio file name. " -#~ "If there are multiple audio files, the first recorded file is given. In " -#~ "the case of [3] in Table 8, for example, for the Exif image file " -#~ "\"DSC00001.JPG\" only \"SND00001.WAV\" is given as the related Exif " -#~ "audio file. When there are three Exif audio files \"SND00001.WAV\", " -#~ "\"SND00002.WAV\" and \"SND00003.WAV\", the Exif image file name for each " -#~ "of them, \"DSC00001.JPG\", is indicated. By combining multiple relational " -#~ "information, a variety of playback possibilities can be supported. The " -#~ "method of using relational information is left to the implementation on " -#~ "the playback side. Since this information is an ASCII character string, " -#~ "it is terminated by NULL. When this tag is used to map audio files, the " -#~ "relation of the audio file to image data must also be indicated on the " -#~ "audio file end." -#~ msgstr "" -#~ "Esta etiqueta se utiliza para registrar el nombre de un archivo de audio " -#~ "relacionado con la imagen. La única información relacional registrada " -#~ "aquí es el nombre y la extensión del archivo de audio Exif (una cadena de " -#~ "caracteres ASCII que consiste en 8 caracteres, un '.' y 3 caracteres " -#~ "más). No se registra la ruta. Las estipulaciones acerca del audio se dan " -#~ "en la sección 3.6.3 y las convenciones para los nombres de archivo en la " -#~ "sección 3.7.1. Cuando se usa esta etiqueta, los archivosde audio se deben " -#~ "grabar en conformidad con el formato de audio Exif. También se permite a " -#~ "los escritores almacenar los datos tales como Audio dentro de APP2 como " -#~ "un flujo de datos de extensión de FlashPix. Los archivos de audio se " -#~ "deben grabar en conformidad con el formato de audio Exif. El mapeo de " -#~ "archivos de imagen y archivos de audio Exif se realiza en cualquiera de " -#~ "las tres maneras que se muestran en la Tabla 8. Si múltiples archivos " -#~ "mapean a uno solo como en [2] o [3] de la tabla, el formato anterior se " -#~ "usa para registrar sólo un nombre de archivo de audio. Si hay múltiples " -#~ "archivos de audio, se da el primero grabado. En el caso de [3] en la " -#~ "Tabla 8, por ejemplo, para el archivo de imagen Exif \"DSC00001.JPG\" " -#~ "sólo se da \"SND00001.WAV\" como el archivo de audio Exif relacionado. " -#~ "Cuando hay tres archivos de audio Exif, \"SND00001.WAV\", \"SND00002.WAV" -#~ "\" y \"SND00003.WAV\", se indica el nombre de archivo de imagen Exif para " -#~ "cada uno de ellos, \"DSC00001.JPG\". Al combinar información relacional " -#~ "múltiple, es posible soportar una variedad de posibilidades de " -#~ "reproducción. El método de utilizar información relacional se deja a la " -#~ "implementación del lado del reproductor. Dado que esta información es una " -#~ "cadena de caracteres ASCII, la misma está terminada por NULL. Cuando esta " -#~ "etiqueta se utiliza para mapear archivos de audio, también se debe " -#~ "indicar al final del archivo de audio la relación a los datos de la " -#~ "imagen." - -#, fuzzy -#~ msgid "Flash is on Camera" -#~ msgstr "Energía del flash" - -#, fuzzy -#~ msgid "Unknown value %hi" -#~ msgstr "Desconocido" - -#, fuzzy -#~ msgid "Manual: Unknown" -#~ msgstr "desconocido" - -#, fuzzy -#~ msgid "%li bytes unknown data: " -#~ msgstr "%i bytes de datos desconocidos" - -#, fuzzy -#~ msgid "Whitebalance" -#~ msgstr "Balance de blanco" - -#, fuzzy -#~ msgid "Whitebalance RB" -#~ msgstr "Balance de blanco" - -#, fuzzy -#~ msgid "Exposurediff ?" -#~ msgstr "Modo de exposición" - -#, fuzzy -#~ msgid "Converter" -#~ msgstr "Convertidor" - -#, fuzzy -#~ msgid "Night-scene" -#~ msgstr "Escena nocturna" - -#, fuzzy -#~ msgid "Flash not fired" -#~ msgstr "El flash no disparó." - -#, fuzzy -#~ msgid " / Contrast : " -#~ msgstr "Contraste" - -#, fuzzy -#~ msgid " / Saturation : " -#~ msgstr "Saturación" - -#, fuzzy -#~ msgid " / Sharpness : " -#~ msgstr "Nitidez" - -#, fuzzy -#~ msgid " / Metering mode : " -#~ msgstr "Modo de métrica" - -#, fuzzy -#~ msgid " / Exposure mode : " -#~ msgstr "Modo de exposición" - -#, fuzzy -#~ msgid " / Focus mode2 : " -#~ msgstr "Modo de exposición" - -#, fuzzy -#~ msgid "White balance : " -#~ msgstr "Balance de blanco" - -#, fuzzy -#~ msgid " / Flash bias : %.2f EV" -#~ msgstr "Flash" - -#, fuzzy -#~ msgid " / Subject Distance (mm) : %u" -#~ msgstr "Distancia al sujeto" - -#, fuzzy -#~ msgid "Unknown 2" -#~ msgstr "Desconocido" - -#, fuzzy -#~ msgid "Unknown 3" -#~ msgstr "Desconocido" - -#, fuzzy -#~ msgid "Unknown 4" -#~ msgstr "Desconocido" - -#, fuzzy -#~ msgid "Unknown 5" -#~ msgstr "Desconocido" - -#, fuzzy -#~ msgid "Unknown 6" -#~ msgstr "Desconocido" - -#, fuzzy -#~ msgid "Unknown 8" -#~ msgstr "Desconocido" - -#, fuzzy -#~ msgid "Unknown 14" -#~ msgstr "Desconocido" - -#, fuzzy -#~ msgid "Unknown 15" -#~ msgstr "Desconocido" - -#, fuzzy -#~ msgid "Unknown 16" -#~ msgstr "Desconocido" - -#, fuzzy -#~ msgid "Unknown 17" -#~ msgstr "Desconocido" - -#, fuzzy -#~ msgid "Unknown 18" -#~ msgstr "Desconocido" - -#, fuzzy -#~ msgid "Unknown 19" -#~ msgstr "Desconocido" - -#, fuzzy -#~ msgid "Unknown 21" -#~ msgstr "Desconocido" - -#, fuzzy -#~ msgid "Unknown 24" -#~ msgstr "Desconocido" - -#, fuzzy -#~ msgid "Unknown 25" -#~ msgstr "Desconocido" diff --git a/platform/win32/msvc/external/exiv2/po/exiv2.pot b/platform/win32/msvc/external/exiv2/po/exiv2.pot deleted file mode 100644 index b159d0c8d73..00000000000 --- a/platform/win32/msvc/external/exiv2/po/exiv2.pot +++ /dev/null @@ -1,20923 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Andreas Huggel -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" -"POT-Creation-Date: 2012-03-23 18:06+0800\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: src/actions.cpp:253 src/actions.cpp:486 src/actions.cpp:698 -#: src/actions.cpp:715 src/actions.cpp:760 src/actions.cpp:850 -#: src/actions.cpp:993 src/actions.cpp:1035 src/actions.cpp:1104 -#: src/actions.cpp:1146 src/actions.cpp:1151 src/actions.cpp:1171 -#: src/actions.cpp:1176 src/actions.cpp:1208 src/actions.cpp:1451 -#: src/actions.cpp:1587 src/actions.cpp:1652 src/actions.cpp:1820 -msgid "Failed to open the file\n" -msgstr "" - -#: src/actions.cpp:263 -msgid "File name" -msgstr "" - -#: src/actions.cpp:269 -msgid "File size" -msgstr "" - -#: src/actions.cpp:270 src/actions.cpp:422 src/actions.cpp:1019 -msgid "Bytes" -msgstr "" - -#: src/actions.cpp:274 -msgid "MIME type" -msgstr "" - -#: src/actions.cpp:278 src/canonmn.cpp:785 src/minoltamn.cpp:500 -#: src/minoltamn.cpp:745 src/minoltamn.cpp:988 src/pentaxmn.cpp:892 -msgid "Image size" -msgstr "" - -#: src/actions.cpp:283 src/actions.cpp:513 src/actions.cpp:773 -#: src/actions.cpp:1002 src/actions.cpp:1464 src/actions.cpp:1600 -#: src/actions.cpp:1665 -msgid "No Exif data found in the file\n" -msgstr "" - -#: src/actions.cpp:288 -msgid "Camera make" -msgstr "" - -#: src/actions.cpp:291 -msgid "Camera model" -msgstr "" - -#: src/actions.cpp:294 -msgid "Image timestamp" -msgstr "" - -#: src/actions.cpp:298 src/minoltamn.cpp:805 src/minoltamn.cpp:812 -#: src/minoltamn.cpp:1066 -msgid "Image number" -msgstr "" - -#: src/actions.cpp:303 src/minoltamn.cpp:515 src/minoltamn.cpp:798 -#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1368 src/pentaxmn.cpp:909 -#: src/pentaxmn.cpp:910 -msgid "Exposure time" -msgstr "" - -#: src/actions.cpp:315 src/canonmn.cpp:903 src/minoltamn.cpp:1262 -#: src/tags.cpp:1627 -msgid "Aperture" -msgstr "" - -#: src/actions.cpp:325 -msgid "Exposure bias" -msgstr "" - -#: src/actions.cpp:328 src/canonmn.cpp:835 src/minoltamn.cpp:874 -#: src/minoltamn.cpp:1198 src/minoltamn.cpp:2098 src/panasonicmn.cpp:69 -#: src/pentaxmn.cpp:320 src/properties.cpp:563 src/sonymn.cpp:171 -#: src/tags.cpp:827 src/tags.cpp:1431 src/tags.cpp:1652 -msgid "Flash" -msgstr "" - -#: src/actions.cpp:331 src/canonmn.cpp:897 src/panasonicmn.cpp:249 -msgid "Flash bias" -msgstr "" - -#: src/actions.cpp:336 src/canonmn.cpp:201 src/minoltamn.cpp:539 -#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1372 -msgid "Focal length" -msgstr "" - -#: src/actions.cpp:341 -msgid "35 mm equivalent" -msgstr "" - -#: src/actions.cpp:351 -msgid "Subject distance" -msgstr "" - -#: src/actions.cpp:362 -msgid "ISO speed" -msgstr "" - -#: src/actions.cpp:365 src/minoltamn.cpp:491 src/minoltamn.cpp:742 -#: src/minoltamn.cpp:985 src/minoltamn.cpp:1353 src/olympusmn.cpp:659 -#: src/sigmamn.cpp:75 -msgid "Exposure mode" -msgstr "" - -#: src/actions.cpp:368 src/minoltamn.cpp:509 src/minoltamn.cpp:1006 -#: src/minoltamn.cpp:1395 src/olympusmn.cpp:661 src/sigmamn.cpp:78 -msgid "Metering mode" -msgstr "" - -#: src/actions.cpp:371 src/canonmn.cpp:776 src/minoltamn.cpp:521 -#: src/olympusmn.cpp:202 src/olympusmn.cpp:663 src/panasonicmn.cpp:243 -msgid "Macro mode" -msgstr "" - -#: src/actions.cpp:374 src/minoltamn.cpp:133 src/minoltamn.cpp:503 -#: src/minoltamn.cpp:748 src/minoltamn.cpp:991 src/pentaxmn.cpp:889 -#: src/sonymn.cpp:275 -msgid "Image quality" -msgstr "" - -#: src/actions.cpp:377 -msgid "Exif Resolution" -msgstr "" - -#: src/actions.cpp:406 src/canonmn.cpp:1140 src/minoltamn.cpp:178 -#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:994 -#: src/minoltamn.cpp:1377 src/nikonmn.cpp:226 src/nikonmn.cpp:472 -#: src/nikonmn.cpp:528 src/olympusmn.cpp:880 src/sigmamn.cpp:72 -#: src/sonymn.cpp:290 -msgid "White balance" -msgstr "" - -#: src/actions.cpp:409 src/minoltamn.cpp:114 src/olympusmn.cpp:426 -msgid "Thumbnail" -msgstr "" - -#: src/actions.cpp:413 src/actions.cpp:418 src/canonmn.cpp:339 -#: src/canonmn.cpp:1048 src/canonmn.cpp:1057 src/canonmn.cpp:1109 -#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2076 -#: src/nikonmn.cpp:173 src/nikonmn.cpp:188 src/nikonmn.cpp:903 -#: src/nikonmn.cpp:926 src/nikonmn.cpp:988 src/olympusmn.cpp:142 -#: src/olympusmn.cpp:720 src/olympusmn.cpp:727 src/olympusmn.cpp:1181 -#: src/olympusmn.cpp:1240 src/olympusmn.cpp:1337 src/olympusmn.cpp:1493 -#: src/olympusmn.cpp:1502 src/pentaxmn.cpp:230 src/pentaxmn.cpp:349 -#: src/pentaxmn.cpp:350 src/properties.cpp:914 src/properties.cpp:922 -#: src/tags.cpp:1510 -msgid "None" -msgstr "" - -#: src/actions.cpp:428 src/datasets.cpp:376 src/properties.cpp:357 -#: src/properties.cpp:523 src/tags.cpp:762 -msgid "Copyright" -msgstr "" - -#: src/actions.cpp:431 -msgid "Exif comment" -msgstr "" - -#: src/actions.cpp:526 -msgid "No IPTC data found in the file\n" -msgstr "" - -#: src/actions.cpp:539 -msgid "No XMP data found in the file\n" -msgstr "" - -#: src/actions.cpp:638 src/actions.cpp:663 src/actions.cpp:684 -msgid "(Binary value suppressed)" -msgstr "" - -#: src/actions.cpp:705 -msgid "JPEG comment" -msgstr "" - -#: src/actions.cpp:730 -msgid "Preview" -msgstr "" - -#: src/actions.cpp:734 src/actions.cpp:1074 src/properties.cpp:426 -msgid "pixels" -msgstr "" - -#: src/actions.cpp:736 src/actions.cpp:1076 -msgid "bytes" -msgstr "" - -#: src/actions.cpp:783 -msgid "Neither tag" -msgstr "" - -#: src/actions.cpp:784 -msgid "nor" -msgstr "" - -#: src/actions.cpp:785 -msgid "found in the file" -msgstr "" - -#: src/actions.cpp:790 -msgid "Image file creation timestamp not set in the file" -msgstr "" - -#: src/actions.cpp:796 src/actions.cpp:1553 -msgid "Failed to parse timestamp" -msgstr "" - -#: src/actions.cpp:797 -msgid "in the file" -msgstr "" - -#: src/actions.cpp:808 -msgid "Updating timestamp to" -msgstr "" - -#: src/actions.cpp:902 -msgid "Erasing thumbnail data" -msgstr "" - -#: src/actions.cpp:910 -msgid "Erasing Exif data from the file" -msgstr "" - -#: src/actions.cpp:919 -msgid "Erasing IPTC data from the file" -msgstr "" - -#: src/actions.cpp:928 -msgid "Erasing JPEG comment from the file" -msgstr "" - -#: src/actions.cpp:937 -msgid "Erasing XMP data from the file" -msgstr "" - -#: src/actions.cpp:1009 -msgid "Image does not contain an Exif thumbnail\n" -msgstr "" - -#: src/actions.cpp:1018 -msgid "Writing thumbnail" -msgstr "" - -#: src/actions.cpp:1019 src/actions.cpp:1077 -msgid "to file" -msgstr "" - -#: src/actions.cpp:1025 -msgid "Exif data doesn't contain a thumbnail\n" -msgstr "" - -#: src/actions.cpp:1055 src/actions.cpp:1081 -msgid "Image does not have preview" -msgstr "" - -#: src/actions.cpp:1070 -msgid "Writing preview" -msgstr "" - -#: src/actions.cpp:1241 -msgid "Setting JPEG comment" -msgstr "" - -#: src/actions.cpp:1282 -msgid "Add" -msgstr "" - -#: src/actions.cpp:1304 src/actions.cpp:1378 -msgid "Warning" -msgstr "" - -#: src/actions.cpp:1305 src/actions.cpp:1379 -msgid "Failed to read" -msgstr "" - -#: src/actions.cpp:1307 src/actions.cpp:1381 -msgid "value" -msgstr "" - -#: src/actions.cpp:1318 -msgid "Set" -msgstr "" - -#: src/actions.cpp:1390 -msgid "Del" -msgstr "" - -#: src/actions.cpp:1422 -msgid "Reg " -msgstr "" - -#: src/actions.cpp:1506 -msgid "Timestamp of metadatum with key" -msgstr "" - -#: src/actions.cpp:1507 -msgid "not set\n" -msgstr "" - -#: src/actions.cpp:1512 -msgid "Adjusting" -msgstr "" - -#: src/actions.cpp:1512 -msgid "by" -msgstr "" - -#: src/actions.cpp:1516 src/actions.cpp:1565 -msgid "years" -msgstr "" - -#: src/actions.cpp:1519 -msgid "year" -msgstr "" - -#: src/actions.cpp:1527 -msgid "months" -msgstr "" - -#: src/actions.cpp:1530 -msgid "month" -msgstr "" - -#: src/actions.cpp:1538 -msgid "days" -msgstr "" - -#: src/actions.cpp:1541 -msgid "day" -msgstr "" - -#: src/actions.cpp:1547 -msgid "s" -msgstr "" - -#: src/actions.cpp:1563 -msgid "Can't adjust timestamp by" -msgstr "" - -#: src/actions.cpp:1572 src/actions.cpp:1844 src/actions.cpp:1852 -#: src/actions.cpp:1860 src/actions.cpp:1869 src/actions.cpp:1979 -msgid "to" -msgstr "" - -#: src/actions.cpp:1607 -msgid "Standard Exif ISO tag exists; not modified\n" -msgstr "" - -#: src/actions.cpp:1615 -msgid "Setting Exif ISO value to" -msgstr "" - -#: src/actions.cpp:1671 -msgid "No Exif user comment found" -msgstr "" - -#: src/actions.cpp:1679 -msgid "Found Exif user comment with unexpected value type" -msgstr "" - -#: src/actions.cpp:1686 -msgid "No Exif UNICODE user comment found" -msgstr "" - -#: src/actions.cpp:1692 -msgid "Setting Exif UNICODE user comment to" -msgstr "" - -#: src/actions.cpp:1843 -msgid "Writing Exif data from" -msgstr "" - -#: src/actions.cpp:1851 -msgid "Writing IPTC data from" -msgstr "" - -#: src/actions.cpp:1859 -msgid "Writing XMP data from" -msgstr "" - -#: src/actions.cpp:1868 -msgid "Writing JPEG comment from" -msgstr "" - -#: src/actions.cpp:1878 -msgid "Could not write metadata to file" -msgstr "" - -#: src/actions.cpp:1905 -msgid "Filename format yields empty filename for the file" -msgstr "" - -#: src/actions.cpp:1914 -msgid "This file already has the correct name" -msgstr "" - -#: src/actions.cpp:1938 src/exiv2.cpp:168 -msgid "File" -msgstr "" - -#: src/actions.cpp:1939 -msgid "exists. [O]verwrite, [r]ename or [s]kip?" -msgstr "" - -#: src/actions.cpp:1967 -msgid "Renaming file to" -msgstr "" - -#: src/actions.cpp:1969 -msgid "updating timestamp" -msgstr "" - -#: src/actions.cpp:1978 -msgid "Failed to rename" -msgstr "" - -#: src/actions.cpp:2000 -msgid "Overwrite" -msgstr "" - -#: src/canonmn.cpp:58 src/canonmn.cpp:186 src/canonmn.cpp:245 -#: src/canonmn.cpp:260 src/canonmn.cpp:734 src/canonmn.cpp:747 -#: src/canonmn.cpp:1009 src/canonmn.cpp:1032 src/canonmn.cpp:1041 -#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 -#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 -#: src/minoltamn.cpp:1134 src/minoltamn.cpp:1275 src/minoltamn.cpp:1337 -#: src/minoltamn.cpp:1910 src/minoltamn.cpp:1924 src/minoltamn.cpp:1972 -#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 -#: src/nikonmn.cpp:204 src/nikonmn.cpp:641 src/nikonmn.cpp:666 -#: src/nikonmn.cpp:715 src/nikonmn.cpp:750 src/nikonmn.cpp:836 -#: src/nikonmn.cpp:881 src/nikonmn.cpp:968 src/nikonmn.cpp:1210 -#: src/nikonmn.cpp:1219 src/olympusmn.cpp:59 src/olympusmn.cpp:79 -#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 -#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:586 -#: src/olympusmn.cpp:648 src/olympusmn.cpp:912 src/olympusmn.cpp:1133 -#: src/olympusmn.cpp:1431 src/olympusmn.cpp:1432 src/olympusmn.cpp:1471 -#: src/panasonicmn.cpp:87 src/panasonicmn.cpp:94 src/panasonicmn.cpp:100 -#: src/panasonicmn.cpp:145 src/panasonicmn.cpp:154 src/panasonicmn.cpp:183 -#: src/panasonicmn.cpp:210 src/pentaxmn.cpp:183 src/pentaxmn.cpp:292 -#: src/pentaxmn.cpp:713 src/pentaxmn.cpp:719 src/sonymn.cpp:56 -#: src/sonymn.cpp:87 src/sonymn.cpp:141 src/sonymn.cpp:149 src/sonymn.cpp:156 -#: src/sonymn.cpp:199 src/sonymn.cpp:206 src/sonymn.cpp:237 src/sonymn.cpp:500 -msgid "Off" -msgstr "" - -#: src/canonmn.cpp:59 src/canonmn.cpp:244 src/canonmn.cpp:262 -#: src/canonmn.cpp:735 src/canonmn.cpp:1035 src/fujimn.cpp:57 -#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 -#: src/minoltamn.cpp:1911 src/minoltamn.cpp:1923 src/nikonmn.cpp:63 -#: src/nikonmn.cpp:640 src/nikonmn.cpp:716 src/nikonmn.cpp:717 -#: src/nikonmn.cpp:1220 src/olympusmn.cpp:60 src/olympusmn.cpp:80 -#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 -#: src/olympusmn.cpp:1472 src/panasonicmn.cpp:93 src/pentaxmn.cpp:186 -#: src/pentaxmn.cpp:293 src/pentaxmn.cpp:714 src/sonymn.cpp:157 -#: src/sonymn.cpp:207 src/sonymn.cpp:238 -msgid "On" -msgstr "" - -#: src/canonmn.cpp:69 -msgid "PowerShot A30" -msgstr "" - -#: src/canonmn.cpp:70 -msgid "PowerShot S300 / Digital IXUS 300 / IXY Digital 300" -msgstr "" - -#: src/canonmn.cpp:71 -msgid "PowerShot A20" -msgstr "" - -#: src/canonmn.cpp:72 -msgid "PowerShot A10" -msgstr "" - -#: src/canonmn.cpp:73 -msgid "PowerShot S110 / Digital IXUS v / IXY Digital 200" -msgstr "" - -#: src/canonmn.cpp:74 -msgid "PowerShot G2" -msgstr "" - -#: src/canonmn.cpp:75 -msgid "PowerShot S40" -msgstr "" - -#: src/canonmn.cpp:76 -msgid "PowerShot S30" -msgstr "" - -#: src/canonmn.cpp:77 -msgid "PowerShot A40" -msgstr "" - -#: src/canonmn.cpp:78 -msgid "EOS D30" -msgstr "" - -#: src/canonmn.cpp:79 -msgid "PowerShot A100" -msgstr "" - -#: src/canonmn.cpp:80 -msgid "PowerShot S200 / Digital IXUS v2 / IXY Digital 200a" -msgstr "" - -#: src/canonmn.cpp:81 -msgid "PowerShot A200" -msgstr "" - -#: src/canonmn.cpp:82 -msgid "PowerShot S330 / Digital IXUS 330 / IXY Digital 300a" -msgstr "" - -#: src/canonmn.cpp:83 -msgid "PowerShot G3" -msgstr "" - -#: src/canonmn.cpp:84 -msgid "PowerShot S45" -msgstr "" - -#: src/canonmn.cpp:85 -msgid "PowerShot SD100 / Digital IXUS II / IXY Digital 30" -msgstr "" - -#: src/canonmn.cpp:86 -msgid "PowerShot S230 / Digital IXUS v3 / IXY Digital 320" -msgstr "" - -#: src/canonmn.cpp:87 -msgid "PowerShot A70" -msgstr "" - -#: src/canonmn.cpp:88 -msgid "PowerShot A60" -msgstr "" - -#: src/canonmn.cpp:89 -msgid "PowerShot S400 / Digital IXUS 400 / IXY Digital 400" -msgstr "" - -#: src/canonmn.cpp:90 -msgid "PowerShot G5" -msgstr "" - -#: src/canonmn.cpp:91 -msgid "PowerShot A300" -msgstr "" - -#: src/canonmn.cpp:92 -msgid "PowerShot S50" -msgstr "" - -#: src/canonmn.cpp:93 -msgid "PowerShot A80" -msgstr "" - -#: src/canonmn.cpp:94 -msgid "PowerShot SD10 / Digital IXUS i / IXY Digital L" -msgstr "" - -#: src/canonmn.cpp:95 -msgid "PowerShot S1 IS" -msgstr "" - -#: src/canonmn.cpp:96 -msgid "PowerShot Pro1" -msgstr "" - -#: src/canonmn.cpp:97 -msgid "PowerShot S70" -msgstr "" - -#: src/canonmn.cpp:98 -msgid "PowerShot S60" -msgstr "" - -#: src/canonmn.cpp:99 -msgid "PowerShot G6" -msgstr "" - -#: src/canonmn.cpp:100 -msgid "PowerShot S500 / Digital IXUS 500 / IXY Digital 500" -msgstr "" - -#: src/canonmn.cpp:101 -msgid "PowerShot A75" -msgstr "" - -#: src/canonmn.cpp:102 -msgid "PowerShot SD110 / Digital IXUS IIs / IXY Digital 30a" -msgstr "" - -#: src/canonmn.cpp:103 -msgid "PowerShot A400" -msgstr "" - -#: src/canonmn.cpp:104 -msgid "PowerShot A310" -msgstr "" - -#: src/canonmn.cpp:105 -msgid "PowerShot A85" -msgstr "" - -#: src/canonmn.cpp:106 -msgid "PowerShot S410 / Digital IXUS 430 / IXY Digital 450" -msgstr "" - -#: src/canonmn.cpp:107 -msgid "PowerShot A95" -msgstr "" - -#: src/canonmn.cpp:108 -msgid "PowerShot SD300 / Digital IXUS 40 / IXY Digital 50" -msgstr "" - -#: src/canonmn.cpp:109 -msgid "PowerShot SD200 / Digital IXUS 30 / IXY Digital 40" -msgstr "" - -#: src/canonmn.cpp:110 -msgid "PowerShot A520" -msgstr "" - -#: src/canonmn.cpp:111 -msgid "PowerShot A510" -msgstr "" - -#: src/canonmn.cpp:112 -msgid "PowerShot SD20 / Digital IXUS i5 / IXY Digital L2" -msgstr "" - -#: src/canonmn.cpp:113 -msgid "PowerShot S2 IS" -msgstr "" - -#: src/canonmn.cpp:114 -msgid "PowerShot SD430 / IXUS Wireless / IXY Wireless" -msgstr "" - -#: src/canonmn.cpp:115 -msgid "PowerShot SD500 / Digital IXUS 700 / IXY Digital 600" -msgstr "" - -#: src/canonmn.cpp:116 -msgid "EOS D60" -msgstr "" - -#: src/canonmn.cpp:117 -msgid "PowerShot SD30 / Digital IXUS i zoom / IXY Digital L3" -msgstr "" - -#: src/canonmn.cpp:118 -msgid "PowerShot A430" -msgstr "" - -#: src/canonmn.cpp:119 -msgid "PowerShot A410" -msgstr "" - -#: src/canonmn.cpp:120 -msgid "PowerShot S80" -msgstr "" - -#: src/canonmn.cpp:121 -msgid "PowerShot A620" -msgstr "" - -#: src/canonmn.cpp:122 -msgid "PowerShot A610" -msgstr "" - -#: src/canonmn.cpp:123 -msgid "PowerShot SD630 / Digital IXUS 65 / IXY Digital 80" -msgstr "" - -#: src/canonmn.cpp:124 -msgid "PowerShot SD450 / Digital IXUS 55 / IXY Digital 60" -msgstr "" - -#: src/canonmn.cpp:125 -msgid "PowerShot TX1" -msgstr "" - -#: src/canonmn.cpp:126 -msgid "PowerShot SD400 / Digital IXUS 50 / IXY Digital 55" -msgstr "" - -#: src/canonmn.cpp:127 -msgid "PowerShot A420" -msgstr "" - -#: src/canonmn.cpp:128 -msgid "PowerShot SD900 / Digital IXUS 900 Ti / IXY Digital 1000" -msgstr "" - -#: src/canonmn.cpp:129 -msgid "PowerShot SD550 / Digital IXUS 750 / IXY Digital 700" -msgstr "" - -#: src/canonmn.cpp:130 -msgid "PowerShot A700" -msgstr "" - -#: src/canonmn.cpp:131 -msgid "PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS" -msgstr "" - -#: src/canonmn.cpp:132 -msgid "PowerShot S3 IS" -msgstr "" - -#: src/canonmn.cpp:133 -msgid "PowerShot A540" -msgstr "" - -#: src/canonmn.cpp:134 -msgid "PowerShot SD600 / Digital IXUS 60 / IXY Digital 70" -msgstr "" - -#: src/canonmn.cpp:135 -msgid "PowerShot G7" -msgstr "" - -#: src/canonmn.cpp:136 -msgid "PowerShot A530" -msgstr "" - -#: src/canonmn.cpp:137 -msgid "PowerShot SD800 IS / Digital IXUS 850 IS / IXY Digital 900 IS" -msgstr "" - -#: src/canonmn.cpp:138 -msgid "PowerShot SD40 / Digital IXUS i7 / IXY Digital L4" -msgstr "" - -#: src/canonmn.cpp:139 -msgid "PowerShot A710 IS" -msgstr "" - -#: src/canonmn.cpp:140 -msgid "PowerShot A640" -msgstr "" - -#: src/canonmn.cpp:141 -msgid "PowerShot A630" -msgstr "" - -#: src/canonmn.cpp:142 -msgid "PowerShot S5 IS" -msgstr "" - -#: src/canonmn.cpp:143 -msgid "PowerShot A460" -msgstr "" - -#: src/canonmn.cpp:144 -msgid "PowerShot SD850 IS / Digital IXUS 950 IS" -msgstr "" - -#: src/canonmn.cpp:145 -msgid "PowerShot A570 IS" -msgstr "" - -#: src/canonmn.cpp:146 -msgid "PowerShot A560" -msgstr "" - -#: src/canonmn.cpp:147 -msgid "PowerShot SD750 / Digital IXUS 75 / IXY Digital 90" -msgstr "" - -#: src/canonmn.cpp:148 -msgid "PowerShot SD1000 / Digital IXUS 70 / IXY Digital 10" -msgstr "" - -#: src/canonmn.cpp:149 -msgid "PowerShot A550" -msgstr "" - -#: src/canonmn.cpp:150 -msgid "PowerShot A450" -msgstr "" - -#: src/canonmn.cpp:151 -msgid "PowerShot Pro90 IS" -msgstr "" - -#: src/canonmn.cpp:152 -msgid "PowerShot G1" -msgstr "" - -#: src/canonmn.cpp:153 -msgid "PowerShot S100 / Digital IXUS / IXY Digital" -msgstr "" - -#: src/canonmn.cpp:154 -msgid "HV10" -msgstr "" - -#: src/canonmn.cpp:155 -msgid "iVIS DC50" -msgstr "" - -#: src/canonmn.cpp:156 -msgid "iVIS HV20" -msgstr "" - -#: src/canonmn.cpp:157 -msgid "EOS-1D" -msgstr "" - -#: src/canonmn.cpp:158 -msgid "EOS-1DS" -msgstr "" - -#: src/canonmn.cpp:159 -msgid "EOS 10D" -msgstr "" - -#: src/canonmn.cpp:160 -msgid "EOS-1D Mark III" -msgstr "" - -#: src/canonmn.cpp:161 -msgid "EOS Digital Rebel / 300D / Kiss Digital" -msgstr "" - -#: src/canonmn.cpp:162 -msgid "EOS-1D Mark II" -msgstr "" - -#: src/canonmn.cpp:163 -msgid "EOS 20D" -msgstr "" - -#: src/canonmn.cpp:164 -msgid "EOS-1Ds Mark II" -msgstr "" - -#: src/canonmn.cpp:165 -msgid "EOS Digital Rebel XT / 350D / Kiss Digital N" -msgstr "" - -#: src/canonmn.cpp:166 -msgid "EOS 5D" -msgstr "" - -#: src/canonmn.cpp:167 -msgid "EOS-1D Mark II N" -msgstr "" - -#: src/canonmn.cpp:168 -msgid "EOS 30D" -msgstr "" - -#: src/canonmn.cpp:169 -msgid "EOS Digital Rebel XTi / 400D / Kiss Digital X" -msgstr "" - -#: src/canonmn.cpp:170 -msgid "EOS 7D" -msgstr "" - -#: src/canonmn.cpp:171 -msgid "EOS Rebel T1i / 500D / Kiss X3" -msgstr "" - -#: src/canonmn.cpp:172 -msgid "EOS Rebel XS / 1000D / Kiss F" -msgstr "" - -#: src/canonmn.cpp:173 -msgid "EOS 50D" -msgstr "" - -#: src/canonmn.cpp:174 -msgid "EOS Rebel T2i / 550D / Kiss X4" -msgstr "" - -#: src/canonmn.cpp:175 -msgid "EOS-1D Mark IV" -msgstr "" - -#: src/canonmn.cpp:180 -msgid "Format 1" -msgstr "" - -#: src/canonmn.cpp:181 -msgid "Format 2" -msgstr "" - -#: src/canonmn.cpp:187 src/nikonmn.cpp:1211 -msgid "On (1)" -msgstr "" - -#: src/canonmn.cpp:188 src/nikonmn.cpp:1212 -msgid "On (2)" -msgstr "" - -#: src/canonmn.cpp:193 src/minoltamn.cpp:1142 src/nikonmn.cpp:136 -#: src/olympusmn.cpp:595 src/olympusmn.cpp:774 src/olympusmn.cpp:839 -#: src/pentaxmn.cpp:548 src/tags.cpp:1452 -msgid "sRGB" -msgstr "" - -#: src/canonmn.cpp:194 src/canonmn.cpp:1113 src/minoltamn.cpp:359 -#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 -#: src/minoltamn.cpp:1143 src/nikonmn.cpp:137 src/olympusmn.cpp:596 -#: src/olympusmn.cpp:775 src/olympusmn.cpp:840 src/pentaxmn.cpp:549 -#: src/sonymn.cpp:482 src/sonymn.cpp:507 src/tags.cpp:1453 -msgid "Adobe RGB" -msgstr "" - -#: src/canonmn.cpp:199 src/canonmn.cpp:202 src/canonmn.cpp:227 -#: src/canonmn.cpp:228 src/canonmn.cpp:229 src/canonmn.cpp:781 -#: src/canonmn.cpp:783 src/canonmn.cpp:784 src/canonmn.cpp:796 -#: src/canonmn.cpp:805 src/canonmn.cpp:806 src/canonmn.cpp:813 -#: src/canonmn.cpp:883 src/canonmn.cpp:888 src/canonmn.cpp:890 -#: src/canonmn.cpp:892 src/canonmn.cpp:893 src/canonmn.cpp:894 -#: src/canonmn.cpp:895 src/canonmn.cpp:898 src/canonmn.cpp:899 -#: src/canonmn.cpp:900 src/canonmn.cpp:902 src/canonmn.cpp:906 -#: src/canonmn.cpp:907 src/canonmn.cpp:908 src/fujimn.cpp:214 -#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:238 -#: src/nikonmn.cpp:303 src/nikonmn.cpp:457 src/nikonmn.cpp:478 -#: src/nikonmn.cpp:487 src/nikonmn.cpp:533 src/nikonmn.cpp:585 -#: src/nikonmn.cpp:588 src/nikonmn.cpp:591 src/nikonmn.cpp:1003 -#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1495 src/nikonmn.cpp:2554 -#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 -#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 -#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 -#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 -#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 -#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 -#: src/olympusmn.cpp:1039 src/panasonicmn.cpp:239 src/panasonicmn.cpp:247 -#: src/panasonicmn.cpp:252 src/panasonicmn.cpp:260 src/panasonicmn.cpp:262 -#: src/panasonicmn.cpp:280 src/pentaxmn.cpp:323 src/properties.cpp:809 -#: src/properties.cpp:816 src/sonymn.cpp:293 src/sonymn.cpp:312 -#: src/sonymn.cpp:318 src/sonymn.cpp:321 src/sonymn.cpp:330 src/sonymn.cpp:333 -#: src/sonymn.cpp:336 src/sonymn.cpp:339 src/tags.cpp:1414 src/tags.cpp:1427 -#: src/tags.cpp:1533 src/tags.cpp:2565 src/tags.cpp:2678 -msgid "Unknown" -msgstr "" - -#: src/canonmn.cpp:200 src/olympusmn.cpp:450 src/sonymn.cpp:286 -#: src/sonymn.cpp:287 -msgid "Camera Settings" -msgstr "" - -#: src/canonmn.cpp:200 -msgid "Various camera settings" -msgstr "" - -#: src/canonmn.cpp:201 src/minoltamn.cpp:538 src/nikonmn.cpp:1347 -#: src/nikonmn.cpp:1372 src/properties.cpp:564 src/tags.cpp:828 -#: src/tags.cpp:1655 -msgid "Focal Length" -msgstr "" - -#: src/canonmn.cpp:203 src/sonymn.cpp:345 -msgid "Shot Info" -msgstr "" - -#: src/canonmn.cpp:203 -msgid "Shot information" -msgstr "" - -#: src/canonmn.cpp:204 src/olympusmn.cpp:101 src/olympusmn.cpp:1152 -#: src/sonymn.cpp:124 src/sonymn.cpp:308 src/sonymn.cpp:309 -msgid "Panorama" -msgstr "" - -#: src/canonmn.cpp:205 src/datasets.cpp:396 src/properties.cpp:761 -msgid "Image Type" -msgstr "" - -#: src/canonmn.cpp:205 -msgid "Image type" -msgstr "" - -#: src/canonmn.cpp:206 src/panasonicmn.cpp:237 -msgid "Firmware Version" -msgstr "" - -#: src/canonmn.cpp:206 src/panasonicmn.cpp:237 -msgid "Firmware version" -msgstr "" - -#: src/canonmn.cpp:207 src/canonmn.cpp:1066 src/nikonmn.cpp:869 -msgid "File Number" -msgstr "" - -#: src/canonmn.cpp:207 src/nikonmn.cpp:869 -msgid "File number" -msgstr "" - -#: src/canonmn.cpp:208 -msgid "Owner Name" -msgstr "" - -#: src/canonmn.cpp:209 src/fujimn.cpp:182 src/nikonmn.cpp:550 -#: src/olympusmn.cpp:741 src/pentaxmn.cpp:1120 src/pentaxmn.cpp:1121 -#: src/sigmamn.cpp:56 -msgid "Serial Number" -msgstr "" - -#: src/canonmn.cpp:209 src/sigmamn.cpp:57 -msgid "Camera serial number" -msgstr "" - -#: src/canonmn.cpp:210 -msgid "Camera Info" -msgstr "" - -#: src/canonmn.cpp:210 -msgid "Camera info" -msgstr "" - -#: src/canonmn.cpp:211 src/canonmn.cpp:223 -msgid "Custom Functions" -msgstr "" - -#: src/canonmn.cpp:212 -msgid "ModelID" -msgstr "" - -#: src/canonmn.cpp:212 -msgid "Model ID" -msgstr "" - -#: src/canonmn.cpp:213 src/olympusmn.cpp:219 -msgid "Picture Info" -msgstr "" - -#: src/canonmn.cpp:213 -msgid "Picture info" -msgstr "" - -#: src/canonmn.cpp:214 -msgid "Thumbnail Image Valid Area" -msgstr "" - -#: src/canonmn.cpp:214 -msgid "Thumbnail image valid area" -msgstr "" - -#: src/canonmn.cpp:215 -msgid "Serial Number Format" -msgstr "" - -#: src/canonmn.cpp:215 -msgid "Serial number format" -msgstr "" - -#: src/canonmn.cpp:216 src/minoltamn.cpp:2042 src/olympusmn.cpp:110 -#: src/olympusmn.cpp:503 src/pentaxmn.cpp:202 -msgid "Super Macro" -msgstr "" - -#: src/canonmn.cpp:216 src/canonmn.cpp:323 src/canonmn.cpp:393 -#: src/olympusmn.cpp:81 -msgid "Super macro" -msgstr "" - -#: src/canonmn.cpp:217 src/nikonmn.cpp:567 -msgid "AF Info" -msgstr "" - -#: src/canonmn.cpp:217 src/nikonmn.cpp:567 -msgid "AF info" -msgstr "" - -#: src/canonmn.cpp:218 -msgid "Original Decision Data Offset" -msgstr "" - -#: src/canonmn.cpp:218 -msgid "Original decision data offset" -msgstr "" - -#: src/canonmn.cpp:219 -msgid "White Balance Table" -msgstr "" - -#: src/canonmn.cpp:219 -msgid "White balance table" -msgstr "" - -#: src/canonmn.cpp:220 -msgid "LensModel" -msgstr "" - -#: src/canonmn.cpp:221 src/olympusmn.cpp:742 src/panasonicmn.cpp:250 -msgid "Internal Serial Number" -msgstr "" - -#: src/canonmn.cpp:221 src/olympusmn.cpp:742 -msgid "Internal serial number" -msgstr "" - -#: src/canonmn.cpp:222 -msgid "Dust Removal Data" -msgstr "" - -#: src/canonmn.cpp:222 -msgid "Dust removal data" -msgstr "" - -#: src/canonmn.cpp:223 -msgid "Custom functions" -msgstr "" - -#: src/canonmn.cpp:224 -msgid "Processing Info" -msgstr "" - -#: src/canonmn.cpp:224 -msgid "Processing info" -msgstr "" - -#: src/canonmn.cpp:225 -msgid "Measured Color" -msgstr "" - -#: src/canonmn.cpp:225 -msgid "Measured color" -msgstr "" - -#: src/canonmn.cpp:226 -msgid "ColorSpace" -msgstr "" - -#: src/canonmn.cpp:230 -msgid "VRD Offset" -msgstr "" - -#: src/canonmn.cpp:230 -msgid "VRD offset" -msgstr "" - -#: src/canonmn.cpp:231 -msgid "Sensor Info" -msgstr "" - -#: src/canonmn.cpp:231 -msgid "Sensor info" -msgstr "" - -#: src/canonmn.cpp:232 -msgid "Color Data" -msgstr "" - -#: src/canonmn.cpp:232 -msgid "Color data" -msgstr "" - -#: src/canonmn.cpp:234 -msgid "Unknown CanonMakerNote tag" -msgstr "" - -#: src/canonmn.cpp:250 src/minoltamn.cpp:78 src/minoltamn.cpp:246 -#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2060 -msgid "Economy" -msgstr "" - -#: src/canonmn.cpp:251 src/canonmn.cpp:349 src/fujimn.cpp:64 src/fujimn.cpp:84 -#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 -#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 -#: src/nikonmn.cpp:207 src/nikonmn.cpp:428 src/olympusmn.cpp:150 -#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1108 -#: src/olympusmn.cpp:1150 src/panasonicmn.cpp:56 src/panasonicmn.cpp:101 -#: src/panasonicmn.cpp:161 src/panasonicmn.cpp:197 src/pentaxmn.cpp:198 -#: src/pentaxmn.cpp:343 src/pentaxmn.cpp:356 src/pentaxmn.cpp:367 -#: src/sonymn.cpp:134 src/sonymn.cpp:216 src/sonymn.cpp:222 src/tags.cpp:1519 -#: src/tags.cpp:1526 -msgid "Normal" -msgstr "" - -#: src/canonmn.cpp:252 src/minoltamn.cpp:76 src/minoltamn.cpp:244 -#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2004 -#: src/minoltamn.cpp:2058 src/sonymn.cpp:135 -msgid "Fine" -msgstr "" - -#: src/canonmn.cpp:253 src/olympusmn.cpp:643 src/pentaxmn.cpp:156 -msgid "RAW" -msgstr "" - -#: src/canonmn.cpp:254 -msgid "Superfine" -msgstr "" - -#: src/canonmn.cpp:255 -msgid "Normal Movie" -msgstr "" - -#: src/canonmn.cpp:261 src/canonmn.cpp:357 src/canonmn.cpp:385 -#: src/canonmn.cpp:830 src/canonmn.cpp:1036 src/fujimn.cpp:71 -#: src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 -#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 -#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 -#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1119 -#: src/minoltamn.cpp:1182 src/minoltamn.cpp:1235 src/minoltamn.cpp:1976 -#: src/minoltamn.cpp:2043 src/minoltamn.cpp:2092 src/nikonmn.cpp:81 -#: src/nikonmn.cpp:445 src/olympusmn.cpp:94 src/olympusmn.cpp:156 -#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:605 -#: src/olympusmn.cpp:1196 src/olympusmn.cpp:1202 src/olympusmn.cpp:1203 -#: src/panasonicmn.cpp:64 src/panasonicmn.cpp:77 src/pentaxmn.cpp:56 -#: src/pentaxmn.cpp:211 src/pentaxmn.cpp:311 src/sonymn.cpp:57 -#: src/sonymn.cpp:90 src/sonymn.cpp:105 src/sonymn.cpp:163 src/sonymn.cpp:200 -#: src/sonymn.cpp:499 src/sonymn.cpp:516 src/tags.cpp:1403 src/tags.cpp:1488 -#: src/tags.cpp:1495 -msgid "Auto" -msgstr "" - -#: src/canonmn.cpp:263 src/olympusmn.cpp:532 -msgid "Red-eye" -msgstr "" - -#: src/canonmn.cpp:264 -msgid "Slow sync" -msgstr "" - -#: src/canonmn.cpp:265 -msgid "Auto + red-eye" -msgstr "" - -#: src/canonmn.cpp:266 -msgid "On + red-eye" -msgstr "" - -#: src/canonmn.cpp:267 src/canonmn.cpp:268 src/minoltamn.cpp:1339 -#: src/nikonmn.cpp:904 src/olympusmn.cpp:144 -msgid "External" -msgstr "" - -#: src/canonmn.cpp:273 -msgid "Single / timer" -msgstr "" - -#: src/canonmn.cpp:274 src/canonmn.cpp:288 src/canonmn.cpp:720 -#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1097 -#: src/minoltamn.cpp:1149 src/nikonmn.cpp:151 src/nikonmn.cpp:162 -#: src/pentaxmn.cpp:534 -msgid "Continuous" -msgstr "" - -#: src/canonmn.cpp:275 src/olympusmn.cpp:103 -msgid "Movie" -msgstr "" - -#: src/canonmn.cpp:276 -msgid "Continuous, speed priority" -msgstr "" - -#: src/canonmn.cpp:277 -msgid "Continuous, low" -msgstr "" - -#: src/canonmn.cpp:278 -msgid "Continuous, high" -msgstr "" - -#: src/canonmn.cpp:283 -msgid "One shot AF" -msgstr "" - -#: src/canonmn.cpp:284 -msgid "AI servo AF" -msgstr "" - -#: src/canonmn.cpp:285 -msgid "AI focus AF" -msgstr "" - -#: src/canonmn.cpp:286 src/canonmn.cpp:289 src/minoltamn.cpp:374 -msgid "Manual focus" -msgstr "" - -#: src/canonmn.cpp:287 src/canonmn.cpp:719 src/sonymn.cpp:231 -msgid "Single" -msgstr "" - -#: src/canonmn.cpp:290 src/canonmn.cpp:291 src/canonmn.cpp:318 -#: src/canonmn.cpp:392 -msgid "Pan focus" -msgstr "" - -#: src/canonmn.cpp:296 src/canonmn.cpp:1018 src/minoltamn.cpp:666 -#: src/minoltamn.cpp:852 src/sonymn.cpp:534 -msgid "Large" -msgstr "" - -#: src/canonmn.cpp:297 src/canonmn.cpp:762 src/canonmn.cpp:1019 -#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1222 -#: src/sonymn.cpp:535 -msgid "Medium" -msgstr "" - -#: src/canonmn.cpp:298 src/canonmn.cpp:1020 src/minoltamn.cpp:668 -#: src/minoltamn.cpp:854 src/minoltamn.cpp:1223 src/sonymn.cpp:536 -msgid "Small" -msgstr "" - -#: src/canonmn.cpp:299 src/canonmn.cpp:1021 -msgid "Medium 1" -msgstr "" - -#: src/canonmn.cpp:300 src/canonmn.cpp:1022 -msgid "Medium 2" -msgstr "" - -#: src/canonmn.cpp:301 src/canonmn.cpp:1023 -msgid "Medium 3" -msgstr "" - -#: src/canonmn.cpp:306 -msgid "Full auto" -msgstr "" - -#: src/canonmn.cpp:307 src/canonmn.cpp:384 src/canonmn.cpp:708 -#: src/canonmn.cpp:1093 src/fujimn.cpp:110 src/fujimn.cpp:135 -#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 -#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 -#: src/minoltamn.cpp:876 src/minoltamn.cpp:1281 src/nikonmn.cpp:974 -#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 -#: src/panasonicmn.cpp:68 src/panasonicmn.cpp:71 src/panasonicmn.cpp:72 -#: src/panasonicmn.cpp:78 src/panasonicmn.cpp:111 src/pentaxmn.cpp:58 -#: src/pentaxmn.cpp:201 src/pentaxmn.cpp:316 src/pentaxmn.cpp:500 -#: src/pentaxmn.cpp:512 src/sigmamn.cpp:157 src/sonymn.cpp:119 -#: src/sonymn.cpp:164 src/sonymn.cpp:460 src/sonymn.cpp:517 src/tags.cpp:1402 -#: src/tags.cpp:1489 src/tags.cpp:1496 -msgid "Manual" -msgstr "" - -#: src/canonmn.cpp:308 src/canonmn.cpp:1125 src/fujimn.cpp:117 -#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1887 -#: src/minoltamn.cpp:2039 src/olympusmn.cpp:98 src/pentaxmn.cpp:472 -#: src/pentaxmn.cpp:705 src/sonymn.cpp:478 src/sonymn.cpp:527 -#: src/tags.cpp:1502 -msgid "Landscape" -msgstr "" - -#: src/canonmn.cpp:309 -msgid "Fast shutter" -msgstr "" - -#: src/canonmn.cpp:310 -msgid "Slow shutter" -msgstr "" - -#: src/canonmn.cpp:311 src/minoltamn.cpp:68 src/minoltamn.cpp:951 -#: src/minoltamn.cpp:2036 src/olympusmn.cpp:99 src/pentaxmn.cpp:478 -msgid "Night Scene" -msgstr "" - -#: src/canonmn.cpp:312 -msgid "Gray scale" -msgstr "" - -#: src/canonmn.cpp:313 src/canonmn.cpp:751 src/canonmn.cpp:1058 -#: src/minoltamn.cpp:61 src/nikonmn.cpp:190 src/nikonmn.cpp:677 -#: src/olympusmn.cpp:615 src/olympusmn.cpp:632 src/olympusmn.cpp:856 -#: src/olympusmn.cpp:871 src/panasonicmn.cpp:149 src/sonymn.cpp:488 -msgid "Sepia" -msgstr "" - -#: src/canonmn.cpp:314 src/canonmn.cpp:1111 src/canonmn.cpp:1124 -#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 -#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1886 -#: src/minoltamn.cpp:2034 src/olympusmn.cpp:96 src/olympusmn.cpp:613 -#: src/panasonicmn.cpp:102 src/pentaxmn.cpp:471 src/pentaxmn.cpp:704 -#: src/sonymn.cpp:106 src/sonymn.cpp:477 src/sonymn.cpp:523 src/tags.cpp:1503 -msgid "Portrait" -msgstr "" - -#: src/canonmn.cpp:315 src/fujimn.cpp:118 src/minoltamn.cpp:843 -#: src/minoltamn.cpp:2038 src/panasonicmn.cpp:104 src/sonymn.cpp:524 -msgid "Sports" -msgstr "" - -#: src/canonmn.cpp:316 -msgid "Macro / close-up" -msgstr "" - -#: src/canonmn.cpp:317 src/fujimn.cpp:149 -msgid "Black & white" -msgstr "" - -#: src/canonmn.cpp:319 src/canonmn.cpp:748 src/olympusmn.cpp:134 -#: src/olympusmn.cpp:610 src/olympusmn.cpp:852 src/panasonicmn.cpp:199 -#: src/sonymn.cpp:476 src/sonymn.cpp:506 -msgid "Vivid" -msgstr "" - -#: src/canonmn.cpp:320 src/canonmn.cpp:749 src/canonmn.cpp:1126 -#: src/minoltamn.cpp:1892 src/minoltamn.cpp:1893 src/olympusmn.cpp:621 -#: src/olympusmn.cpp:631 src/olympusmn.cpp:861 src/olympusmn.cpp:870 -#: src/sonymn.cpp:483 src/sonymn.cpp:508 -msgid "Neutral" -msgstr "" - -#: src/canonmn.cpp:321 -msgid "Flash off" -msgstr "" - -#: src/canonmn.cpp:322 -msgid "Long shutter" -msgstr "" - -#: src/canonmn.cpp:324 -msgid "Foliage" -msgstr "" - -#: src/canonmn.cpp:325 src/olympusmn.cpp:106 -msgid "Indoor" -msgstr "" - -#: src/canonmn.cpp:326 src/fujimn.cpp:131 src/olympusmn.cpp:107 -#: src/panasonicmn.cpp:116 src/sonymn.cpp:117 -msgid "Fireworks" -msgstr "" - -#: src/canonmn.cpp:327 src/fujimn.cpp:129 src/olympusmn.cpp:129 -#: src/panasonicmn.cpp:128 src/sonymn.cpp:107 -msgid "Beach" -msgstr "" - -#: src/canonmn.cpp:328 src/canonmn.cpp:846 src/fujimn.cpp:132 -#: src/panasonicmn.cpp:127 src/sonymn.cpp:122 -msgid "Underwater" -msgstr "" - -#: src/canonmn.cpp:329 src/fujimn.cpp:130 src/olympusmn.cpp:130 -#: src/panasonicmn.cpp:118 src/sonymn.cpp:108 -msgid "Snow" -msgstr "" - -#: src/canonmn.cpp:330 -msgid "Kids & pets" -msgstr "" - -#: src/canonmn.cpp:331 -msgid "Night SnapShot" -msgstr "" - -#: src/canonmn.cpp:332 -msgid "Digital macro" -msgstr "" - -#: src/canonmn.cpp:333 -msgid "My Colors" -msgstr "" - -#: src/canonmn.cpp:334 src/minoltamn.cpp:343 -msgid "Still image" -msgstr "" - -#: src/canonmn.cpp:342 src/canonmn.cpp:343 src/properties.cpp:859 -#: src/properties.cpp:881 src/tags.cpp:1421 src/tags.cpp:1422 -msgid "Other" -msgstr "" - -#: src/canonmn.cpp:348 src/canonmn.cpp:763 src/canonmn.cpp:1101 -#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1164 -#: src/minoltamn.cpp:1170 src/minoltamn.cpp:1176 src/minoltamn.cpp:1345 -#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:206 -#: src/olympusmn.cpp:171 src/olympusmn.cpp:1134 src/panasonicmn.cpp:162 -#: src/panasonicmn.cpp:166 src/pentaxmn.cpp:342 src/pentaxmn.cpp:355 -#: src/sonymn.cpp:214 src/tags.cpp:1527 -msgid "Low" -msgstr "" - -#: src/canonmn.cpp:350 src/canonmn.cpp:1103 src/fujimn.cpp:85 -#: src/fujimn.cpp:94 src/minoltamn.cpp:1165 src/minoltamn.cpp:1171 -#: src/minoltamn.cpp:1177 src/nikonmn.cpp:71 src/nikonmn.cpp:79 -#: src/nikonmn.cpp:208 src/olympusmn.cpp:169 src/olympusmn.cpp:1136 -#: src/panasonicmn.cpp:55 src/panasonicmn.cpp:163 src/panasonicmn.cpp:168 -#: src/panasonicmn.cpp:169 src/pentaxmn.cpp:344 src/pentaxmn.cpp:357 -#: src/sonymn.cpp:217 src/tags.cpp:1528 -msgid "High" -msgstr "" - -#: src/canonmn.cpp:355 src/canonmn.cpp:760 src/canonmn.cpp:764 -#: src/canonmn.cpp:769 src/canonmn.cpp:1099 src/nikonmn.cpp:671 -#: src/nikonmn.cpp:686 src/nikonmn.cpp:910 src/nikonmn.cpp:963 -#: src/nikonmn.cpp:1218 src/olympusmn.cpp:620 src/olympusmn.cpp:630 -#: src/sonymn.cpp:129 src/sonymn.cpp:136 src/sonymn.cpp:144 src/sonymn.cpp:181 -#: src/sonymn.cpp:194 src/sonymn.cpp:201 src/sonymn.cpp:209 src/sonymn.cpp:215 -#: src/sonymn.cpp:226 src/sonymn.cpp:232 src/sonymn.cpp:239 -msgid "n/a" -msgstr "" - -#: src/canonmn.cpp:356 -msgid "Auto High" -msgstr "" - -#: src/canonmn.cpp:374 src/sonymn.cpp:186 -msgid "Default" -msgstr "" - -#: src/canonmn.cpp:375 src/minoltamn.cpp:265 src/minoltamn.cpp:883 -#: src/minoltamn.cpp:933 src/minoltamn.cpp:1129 src/minoltamn.cpp:1938 -#: src/olympusmn.cpp:492 src/panasonicmn.cpp:110 src/pentaxmn.cpp:306 -#: src/sonymn.cpp:470 src/tags.cpp:1417 -msgid "Spot" -msgstr "" - -#: src/canonmn.cpp:376 src/sigmamn.cpp:168 src/tags.cpp:1415 -msgid "Average" -msgstr "" - -#: src/canonmn.cpp:377 -msgid "Evaluative" -msgstr "" - -#: src/canonmn.cpp:378 src/tags.cpp:1420 -msgid "Partial" -msgstr "" - -#: src/canonmn.cpp:379 src/minoltamn.cpp:882 -msgid "Center weighted" -msgstr "" - -#: src/canonmn.cpp:386 -msgid "Not known" -msgstr "" - -#: src/canonmn.cpp:387 src/canonmn.cpp:776 src/fujimn.cpp:207 -#: src/minoltamn.cpp:847 src/minoltamn.cpp:2041 src/olympusmn.cpp:109 -#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:109 -#: src/panasonicmn.cpp:213 src/panasonicmn.cpp:214 src/panasonicmn.cpp:243 -#: src/pentaxmn.cpp:199 src/pentaxmn.cpp:473 src/sonymn.cpp:390 -#: src/sonymn.cpp:391 src/sonymn.cpp:528 src/tags.cpp:1534 -msgid "Macro" -msgstr "" - -#: src/canonmn.cpp:388 -msgid "Very close" -msgstr "" - -#: src/canonmn.cpp:389 -msgid "Close" -msgstr "" - -#: src/canonmn.cpp:390 -msgid "Middle range" -msgstr "" - -#: src/canonmn.cpp:391 -msgid "Far range" -msgstr "" - -#: src/canonmn.cpp:394 src/pentaxmn.cpp:200 src/tags.cpp:2568 -msgid "Infinity" -msgstr "" - -#: src/canonmn.cpp:399 -msgid "Manual AF point selection" -msgstr "" - -#: src/canonmn.cpp:400 -msgid "None (MF)" -msgstr "" - -#: src/canonmn.cpp:401 -msgid "Auto-selected" -msgstr "" - -#: src/canonmn.cpp:402 src/minoltamn.cpp:287 src/minoltamn.cpp:706 -#: src/minoltamn.cpp:921 src/minoltamn.cpp:1953 src/nikonmn.cpp:103 -#: src/olympusmn.cpp:1491 src/pentaxmn.cpp:222 src/pentaxmn.cpp:237 -msgid "Right" -msgstr "" - -#: src/canonmn.cpp:403 src/canonmn.cpp:741 src/minoltamn.cpp:284 -#: src/minoltamn.cpp:703 src/minoltamn.cpp:1950 src/nikonmn.cpp:99 -#: src/nikonmn.cpp:792 src/nikonmn.cpp:807 src/pentaxmn.cpp:220 -#: src/pentaxmn.cpp:236 src/sigmamn.cpp:169 -msgid "Center" -msgstr "" - -#: src/canonmn.cpp:404 src/minoltamn.cpp:291 src/minoltamn.cpp:710 -#: src/minoltamn.cpp:925 src/minoltamn.cpp:1957 src/nikonmn.cpp:102 -#: src/pentaxmn.cpp:218 src/pentaxmn.cpp:235 -msgid "Left" -msgstr "" - -#: src/canonmn.cpp:405 -msgid "Auto AF point selection" -msgstr "" - -#: src/canonmn.cpp:410 -msgid "Easy shooting (Auto)" -msgstr "" - -#: src/canonmn.cpp:411 -msgid "Program (P)" -msgstr "" - -#: src/canonmn.cpp:412 -msgid "Shutter priority (Tv)" -msgstr "" - -#: src/canonmn.cpp:413 -msgid "Aperture priority (Av)" -msgstr "" - -#: src/canonmn.cpp:414 -msgid "Manual (M)" -msgstr "" - -#: src/canonmn.cpp:415 -msgid "A-DEP" -msgstr "" - -#: src/canonmn.cpp:416 -msgid "M-DEP" -msgstr "" - -#: src/canonmn.cpp:700 src/minoltamn.cpp:297 src/nikonmn.cpp:142 -msgid "Did not fire" -msgstr "" - -#: src/canonmn.cpp:701 src/minoltamn.cpp:298 src/nikonmn.cpp:981 -#: src/tags.cpp:365 -msgid "Fired" -msgstr "" - -#: src/canonmn.cpp:706 src/olympusmn.cpp:1009 -msgid "External flash" -msgstr "" - -#: src/canonmn.cpp:707 src/olympusmn.cpp:1013 -msgid "Internal flash" -msgstr "" - -#: src/canonmn.cpp:709 src/olympusmn.cpp:558 src/sonymn.cpp:494 -msgid "TTL" -msgstr "" - -#: src/canonmn.cpp:710 -msgid "A-TTL" -msgstr "" - -#: src/canonmn.cpp:711 -msgid "E-TTL" -msgstr "" - -#: src/canonmn.cpp:712 -msgid "FP sync enabled" -msgstr "" - -#: src/canonmn.cpp:713 -msgid "2nd-curtain sync used" -msgstr "" - -#: src/canonmn.cpp:714 -msgid "FP sync used" -msgstr "" - -#: src/canonmn.cpp:725 -msgid "Normal AE" -msgstr "" - -#: src/canonmn.cpp:726 src/minoltamn.cpp:527 src/minoltamn.cpp:769 -#: src/minoltamn.cpp:1045 src/pentaxmn.cpp:919 src/pentaxmn.cpp:920 -msgid "Exposure compensation" -msgstr "" - -#: src/canonmn.cpp:727 src/minoltamn.cpp:1575 src/pentaxmn.cpp:1021 -#: src/pentaxmn.cpp:1022 -msgid "AE lock" -msgstr "" - -#: src/canonmn.cpp:728 -msgid "AE lock + exposure compensation" -msgstr "" - -#: src/canonmn.cpp:729 -msgid "No AE" -msgstr "" - -#: src/canonmn.cpp:736 -msgid "On, shot only" -msgstr "" - -#: src/canonmn.cpp:742 src/canonmn.cpp:794 src/nikonmn.cpp:823 -#: src/olympusmn.cpp:1008 -msgid "AF Point" -msgstr "" - -#: src/canonmn.cpp:750 -msgid "Smooth" -msgstr "" - -#: src/canonmn.cpp:752 src/nikonmn.cpp:676 -msgid "B&W" -msgstr "" - -#: src/canonmn.cpp:753 src/canonmn.cpp:836 src/canonmn.cpp:1094 -#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 -#: src/minoltamn.cpp:1184 src/minoltamn.cpp:1187 src/minoltamn.cpp:2100 -#: src/pentaxmn.cpp:723 -msgid "Custom" -msgstr "" - -#: src/canonmn.cpp:754 src/canonmn.cpp:755 -msgid "My color data" -msgstr "" - -#: src/canonmn.cpp:761 src/pentaxmn.cpp:163 -msgid "Full" -msgstr "" - -#: src/canonmn.cpp:770 -msgid "sRAW1 (mRAW)" -msgstr "" - -#: src/canonmn.cpp:771 -msgid "sRAW2 (sRAW)" -msgstr "" - -#: src/canonmn.cpp:777 -msgid "Selftimer" -msgstr "" - -#: src/canonmn.cpp:777 src/panasonicmn.cpp:259 -msgid "Self timer" -msgstr "" - -#: src/canonmn.cpp:778 src/fujimn.cpp:186 src/minoltamn.cpp:1484 -#: src/minoltamn.cpp:1485 src/nikonmn.cpp:222 src/nikonmn.cpp:459 -#: src/nikonmn.cpp:527 src/olympusmn.cpp:198 src/panasonicmn.cpp:236 -#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:647 -#: src/sonymn.cpp:648 -msgid "Quality" -msgstr "" - -#: src/canonmn.cpp:779 src/fujimn.cpp:201 src/minoltamn.cpp:493 -#: src/minoltamn.cpp:762 src/nikonmn.cpp:566 src/olympusmn.cpp:279 -#: src/olympusmn.cpp:670 -msgid "Flash Mode" -msgstr "" - -#: src/canonmn.cpp:779 -msgid "Flash mode setting" -msgstr "" - -#: src/canonmn.cpp:780 src/minoltamn.cpp:505 src/minoltamn.cpp:1427 -#: src/olympusmn.cpp:700 src/sigmamn.cpp:59 src/sonymn.cpp:559 -#: src/sonymn.cpp:560 -msgid "Drive Mode" -msgstr "" - -#: src/canonmn.cpp:780 -msgid "Drive mode setting" -msgstr "" - -#: src/canonmn.cpp:782 src/fujimn.cpp:210 src/minoltamn.cpp:622 -#: src/minoltamn.cpp:753 src/minoltamn.cpp:1035 src/minoltamn.cpp:1379 -#: src/nikonmn.cpp:474 src/olympusmn.cpp:300 src/olympusmn.cpp:664 -#: src/panasonicmn.cpp:240 src/sonymn.cpp:396 src/sonymn.cpp:397 -#: src/sonymn.cpp:566 src/sonymn.cpp:567 src/sonymn.cpp:672 src/sonymn.cpp:673 -msgid "Focus Mode" -msgstr "" - -#: src/canonmn.cpp:782 -msgid "Focus mode setting" -msgstr "" - -#: src/canonmn.cpp:785 src/minoltamn.cpp:499 src/minoltamn.cpp:744 -#: src/minoltamn.cpp:987 -msgid "Image Size" -msgstr "" - -#: src/canonmn.cpp:786 -msgid "Easy Mode" -msgstr "" - -#: src/canonmn.cpp:786 -msgid "Easy shooting mode" -msgstr "" - -#: src/canonmn.cpp:787 src/minoltamn.cpp:523 src/nikonmn.cpp:255 -#: src/nikonmn.cpp:480 src/nikonmn.cpp:565 src/olympusmn.cpp:207 -msgid "Digital Zoom" -msgstr "" - -#: src/canonmn.cpp:787 src/minoltamn.cpp:524 src/pentaxmn.cpp:944 -#: src/pentaxmn.cpp:945 -msgid "Digital zoom" -msgstr "" - -#: src/canonmn.cpp:788 src/minoltamn.cpp:386 src/minoltamn.cpp:574 -#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 -#: src/minoltamn.cpp:1017 src/minoltamn.cpp:1018 src/minoltamn.cpp:1415 -#: src/minoltamn.cpp:1416 src/nikonmn.cpp:697 src/olympusmn.cpp:390 -#: src/olympusmn.cpp:800 src/panasonicmn.cpp:257 src/panasonicmn.cpp:268 -#: src/pentaxmn.cpp:850 src/pentaxmn.cpp:950 src/pentaxmn.cpp:951 -#: src/properties.cpp:443 src/properties.cpp:589 src/sigmamn.cpp:89 -#: src/sigmamn.cpp:90 src/sonymn.cpp:324 src/sonymn.cpp:593 src/sonymn.cpp:594 -#: src/sonymn.cpp:699 src/sonymn.cpp:700 src/tags.cpp:1807 -msgid "Contrast" -msgstr "" - -#: src/canonmn.cpp:788 src/fujimn.cpp:199 src/olympusmn.cpp:391 -#: src/olympusmn.cpp:681 src/olympusmn.cpp:1080 src/panasonicmn.cpp:257 -msgid "Contrast setting" -msgstr "" - -#: src/canonmn.cpp:789 src/minoltamn.cpp:387 src/minoltamn.cpp:571 -#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 -#: src/minoltamn.cpp:1020 src/minoltamn.cpp:1021 src/minoltamn.cpp:1418 -#: src/minoltamn.cpp:1419 src/nikonmn.cpp:578 src/nikonmn.cpp:597 -#: src/nikonmn.cpp:699 src/olympusmn.cpp:799 src/olympusmn.cpp:898 -#: src/panasonicmn.cpp:271 src/pentaxmn.cpp:844 src/pentaxmn.cpp:947 -#: src/pentaxmn.cpp:948 src/properties.cpp:461 src/properties.cpp:590 -#: src/sigmamn.cpp:98 src/sigmamn.cpp:99 src/sonymn.cpp:327 src/sonymn.cpp:596 -#: src/sonymn.cpp:597 src/sonymn.cpp:702 src/sonymn.cpp:703 src/tags.cpp:1811 -msgid "Saturation" -msgstr "" - -#: src/canonmn.cpp:789 src/olympusmn.cpp:1078 -msgid "Saturation setting" -msgstr "" - -#: src/canonmn.cpp:790 src/canonmn.cpp:1134 src/fujimn.cpp:189 -#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 -#: src/minoltamn.cpp:775 src/minoltamn.cpp:1014 src/minoltamn.cpp:1015 -#: src/minoltamn.cpp:1412 src/minoltamn.cpp:1413 src/nikonmn.cpp:696 -#: src/olympusmn.cpp:801 src/panasonicmn.cpp:272 src/pentaxmn.cpp:847 -#: src/pentaxmn.cpp:953 src/pentaxmn.cpp:954 src/properties.cpp:464 -#: src/properties.cpp:591 src/sigmamn.cpp:101 src/sigmamn.cpp:102 -#: src/sonymn.cpp:590 src/sonymn.cpp:591 src/sonymn.cpp:696 src/sonymn.cpp:697 -#: src/tags.cpp:1815 -msgid "Sharpness" -msgstr "" - -#: src/canonmn.cpp:790 src/fujimn.cpp:190 src/olympusmn.cpp:682 -#: src/olympusmn.cpp:1081 -msgid "Sharpness setting" -msgstr "" - -#: src/canonmn.cpp:791 src/minoltamn.cpp:765 src/minoltamn.cpp:1008 -msgid "ISO Speed Mode" -msgstr "" - -#: src/canonmn.cpp:791 src/minoltamn.cpp:766 src/minoltamn.cpp:1009 -#: src/nikonmn.cpp:217 src/nikonmn.cpp:469 src/nikonmn.cpp:525 -#: src/panasonicmn.cpp:344 -msgid "ISO speed setting" -msgstr "" - -#: src/canonmn.cpp:792 src/minoltamn.cpp:508 src/minoltamn.cpp:1005 -#: src/minoltamn.cpp:1394 src/olympusmn.cpp:661 src/properties.cpp:561 -#: src/sigmamn.cpp:77 src/sonymn.cpp:575 src/sonymn.cpp:576 src/sonymn.cpp:681 -#: src/sonymn.cpp:682 src/tags.cpp:825 src/tags.cpp:1646 -msgid "Metering Mode" -msgstr "" - -#: src/canonmn.cpp:792 -msgid "Metering mode setting" -msgstr "" - -#: src/canonmn.cpp:793 -msgid "Focus Type" -msgstr "" - -#: src/canonmn.cpp:793 -msgid "Focus type setting" -msgstr "" - -#: src/canonmn.cpp:794 -msgid "AF point selected" -msgstr "" - -#: src/canonmn.cpp:795 src/properties.cpp:550 src/sonymn.cpp:632 -#: src/sonymn.cpp:633 src/sonymn.cpp:708 src/sonymn.cpp:709 src/tags.cpp:799 -#: src/tags.cpp:1548 -msgid "Exposure Program" -msgstr "" - -#: src/canonmn.cpp:795 -msgid "Exposure mode setting" -msgstr "" - -#: src/canonmn.cpp:797 src/nikonmn.cpp:562 src/olympusmn.cpp:745 -#: src/panasonicmn.cpp:276 -msgid "Lens Type" -msgstr "" - -#: src/canonmn.cpp:797 src/nikonmn.cpp:562 src/olympusmn.cpp:745 -#: src/panasonicmn.cpp:276 src/pentaxmn.cpp:1008 src/pentaxmn.cpp:1009 -msgid "Lens type" -msgstr "" - -#: src/canonmn.cpp:798 src/nikonmn.cpp:563 src/properties.cpp:633 -msgid "Lens" -msgstr "" - -#: src/canonmn.cpp:798 -msgid "" -"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " -"per mm" -msgstr "" - -#: src/canonmn.cpp:799 -msgid "Short Focal" -msgstr "" - -#: src/canonmn.cpp:799 -msgid "Short focal" -msgstr "" - -#: src/canonmn.cpp:800 -msgid "Focal Units" -msgstr "" - -#: src/canonmn.cpp:800 -msgid "Focal units" -msgstr "" - -#: src/canonmn.cpp:801 src/minoltamn.cpp:553 -msgid "Max Aperture" -msgstr "" - -#: src/canonmn.cpp:801 src/minoltamn.cpp:554 -msgid "Max aperture" -msgstr "" - -#: src/canonmn.cpp:802 -msgid "Min Aperture" -msgstr "" - -#: src/canonmn.cpp:802 -msgid "Min aperture" -msgstr "" - -#: src/canonmn.cpp:803 -msgid "Flash Activity" -msgstr "" - -#: src/canonmn.cpp:803 -msgid "Flash activity" -msgstr "" - -#: src/canonmn.cpp:804 -msgid "Flash Details" -msgstr "" - -#: src/canonmn.cpp:804 -msgid "Flash details" -msgstr "" - -#: src/canonmn.cpp:807 -msgid "Focus Continuous" -msgstr "" - -#: src/canonmn.cpp:807 -msgid "Focus continuous setting" -msgstr "" - -#: src/canonmn.cpp:808 -msgid "AESetting" -msgstr "" - -#: src/canonmn.cpp:808 -msgid "AE setting" -msgstr "" - -#: src/canonmn.cpp:809 src/minoltamn.cpp:147 src/minoltamn.cpp:814 -#: src/minoltamn.cpp:1071 src/minoltamn.cpp:1562 src/nikonmn.cpp:599 -#: src/olympusmn.cpp:703 src/olympusmn.cpp:1016 src/panasonicmn.cpp:242 -#: src/sonymn.cpp:372 src/sonymn.cpp:635 src/sonymn.cpp:636 -msgid "Image Stabilization" -msgstr "" - -#: src/canonmn.cpp:809 src/minoltamn.cpp:148 src/minoltamn.cpp:815 -#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1563 src/nikonmn.cpp:599 -#: src/olympusmn.cpp:703 src/olympusmn.cpp:1016 src/panasonicmn.cpp:242 -#: src/sonymn.cpp:373 -msgid "Image stabilization" -msgstr "" - -#: src/canonmn.cpp:810 -msgid "Display Aperture" -msgstr "" - -#: src/canonmn.cpp:810 -msgid "Display aperture" -msgstr "" - -#: src/canonmn.cpp:811 -msgid "Zoom Source Width" -msgstr "" - -#: src/canonmn.cpp:811 -msgid "Zoom source width" -msgstr "" - -#: src/canonmn.cpp:812 -msgid "Zoom Target Width" -msgstr "" - -#: src/canonmn.cpp:812 -msgid "Zoom target width" -msgstr "" - -#: src/canonmn.cpp:814 -msgid "Spot Metering Mode" -msgstr "" - -#: src/canonmn.cpp:814 -msgid "Spot metering mode" -msgstr "" - -#: src/canonmn.cpp:815 -msgid "Photo Effect" -msgstr "" - -#: src/canonmn.cpp:815 -msgid "Photo effect" -msgstr "" - -#: src/canonmn.cpp:816 -msgid "Manual Flash Output" -msgstr "" - -#: src/canonmn.cpp:816 -msgid "Manual flash output" -msgstr "" - -#: src/canonmn.cpp:817 -msgid "Color Tone" -msgstr "" - -#: src/canonmn.cpp:817 -msgid "Color tone" -msgstr "" - -#: src/canonmn.cpp:818 -msgid "SRAW Quality Tone" -msgstr "" - -#: src/canonmn.cpp:818 -msgid "SRAW quality" -msgstr "" - -#: src/canonmn.cpp:820 -msgid "Unknown Canon Camera Settings 1 tag" -msgstr "" - -#: src/canonmn.cpp:831 -msgid "Sunny" -msgstr "" - -#: src/canonmn.cpp:832 src/fujimn.cpp:73 src/minoltamn.cpp:220 -#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1194 -#: src/minoltamn.cpp:2095 src/nikonmn.cpp:450 src/olympusmn.cpp:1041 -#: src/panasonicmn.cpp:66 src/pentaxmn.cpp:321 src/sonymn.cpp:166 -msgid "Cloudy" -msgstr "" - -#: src/canonmn.cpp:833 src/minoltamn.cpp:221 src/minoltamn.cpp:686 -#: src/minoltamn.cpp:872 src/minoltamn.cpp:1196 src/minoltamn.cpp:2097 -#: src/pentaxmn.cpp:315 -msgid "Tungsten" -msgstr "" - -#: src/canonmn.cpp:834 src/minoltamn.cpp:223 src/minoltamn.cpp:687 -#: src/minoltamn.cpp:873 src/minoltamn.cpp:1197 src/minoltamn.cpp:2099 -#: src/nikonmn.cpp:449 src/pentaxmn.cpp:314 src/tags.cpp:1429 -msgid "Fluorescent" -msgstr "" - -#: src/canonmn.cpp:837 src/minoltamn.cpp:57 src/minoltamn.cpp:1890 -#: src/sonymn.cpp:481 -msgid "Black & White" -msgstr "" - -#: src/canonmn.cpp:838 src/minoltamn.cpp:684 src/minoltamn.cpp:871 -#: src/minoltamn.cpp:1195 src/minoltamn.cpp:2096 src/olympusmn.cpp:1040 -#: src/pentaxmn.cpp:313 src/tags.cpp:1434 -msgid "Shade" -msgstr "" - -#: src/canonmn.cpp:839 -msgid "Manual Temperature (Kelvin)" -msgstr "" - -#: src/canonmn.cpp:840 -msgid "PC Set 1" -msgstr "" - -#: src/canonmn.cpp:841 -msgid "PC Set 2" -msgstr "" - -#: src/canonmn.cpp:842 -msgid "PC Set 3" -msgstr "" - -#: src/canonmn.cpp:843 -msgid "Daylight Fluorescent" -msgstr "" - -#: src/canonmn.cpp:844 src/properties.cpp:791 -msgid "Custom 1" -msgstr "" - -#: src/canonmn.cpp:845 src/minoltamn.cpp:225 src/properties.cpp:792 -msgid "Custom 2" -msgstr "" - -#: src/canonmn.cpp:847 src/canonmn.cpp:848 src/minoltamn.cpp:226 -#: src/properties.cpp:793 -msgid "Custom 3" -msgstr "" - -#: src/canonmn.cpp:849 -msgid "PC Set 4" -msgstr "" - -#: src/canonmn.cpp:850 -msgid "PC Set 5" -msgstr "" - -#: src/canonmn.cpp:855 src/canonmn.cpp:974 src/canonmn.cpp:982 -msgid "left" -msgstr "" - -#: src/canonmn.cpp:856 src/canonmn.cpp:971 src/canonmn.cpp:983 -msgid "center" -msgstr "" - -#: src/canonmn.cpp:857 src/canonmn.cpp:968 src/canonmn.cpp:984 -msgid "right" -msgstr "" - -#: src/canonmn.cpp:884 -msgid "ISO Speed Used" -msgstr "" - -#: src/canonmn.cpp:884 -msgid "ISO speed used" -msgstr "" - -#: src/canonmn.cpp:885 -msgid "Measured EV" -msgstr "" - -#: src/canonmn.cpp:886 -msgid "Target Aperture" -msgstr "" - -#: src/canonmn.cpp:887 -msgid "Target Shutter Speed" -msgstr "" - -#: src/canonmn.cpp:887 -msgid "Target shutter speed" -msgstr "" - -#: src/canonmn.cpp:889 src/fujimn.cpp:192 src/minoltamn.cpp:177 -#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:993 -#: src/minoltamn.cpp:1376 src/nikonmn.cpp:225 src/nikonmn.cpp:471 -#: src/nikonmn.cpp:528 src/olympusmn.cpp:330 src/olympusmn.cpp:880 -#: src/panasonicmn.cpp:238 src/properties.cpp:473 src/properties.cpp:582 -#: src/sigmamn.cpp:71 src/sonymn.cpp:289 src/tags.cpp:1785 -msgid "White Balance" -msgstr "" - -#: src/canonmn.cpp:889 src/fujimn.cpp:193 src/minoltamn.cpp:1443 -#: src/panasonicmn.cpp:238 -msgid "White balance setting" -msgstr "" - -#: src/canonmn.cpp:891 -msgid "Sequence" -msgstr "" - -#: src/canonmn.cpp:891 -msgid "Sequence number (if in a continuous burst)" -msgstr "" - -#: src/canonmn.cpp:896 -msgid "AF Point Used" -msgstr "" - -#: src/canonmn.cpp:896 -msgid "AF point used" -msgstr "" - -#: src/canonmn.cpp:897 src/olympusmn.cpp:372 -msgid "Flash Bias" -msgstr "" - -#: src/canonmn.cpp:901 src/properties.cpp:560 src/tags.cpp:824 -#: src/tags.cpp:1643 -msgid "Subject Distance" -msgstr "" - -#: src/canonmn.cpp:901 -msgid "Subject distance (units are not clear)" -msgstr "" - -#: src/canonmn.cpp:903 src/olympusmn.cpp:273 src/properties.cpp:556 -#: src/tags.cpp:820 -msgid "Aperture Value" -msgstr "" - -#: src/canonmn.cpp:904 src/properties.cpp:555 src/tags.cpp:819 -msgid "Shutter Speed Value" -msgstr "" - -#: src/canonmn.cpp:904 src/tags.cpp:1623 -msgid "Shutter speed" -msgstr "" - -#: src/canonmn.cpp:905 -msgid "Measured EV 2" -msgstr "" - -#: src/canonmn.cpp:910 -msgid "Unknown Canon Camera Settings 2 tag" -msgstr "" - -#: src/canonmn.cpp:920 src/olympusmn.cpp:1164 -msgid "Left to right" -msgstr "" - -#: src/canonmn.cpp:921 src/olympusmn.cpp:1165 -msgid "Right to left" -msgstr "" - -#: src/canonmn.cpp:922 src/olympusmn.cpp:1166 -msgid "Bottom to top" -msgstr "" - -#: src/canonmn.cpp:923 src/olympusmn.cpp:1167 -msgid "Top to bottom" -msgstr "" - -#: src/canonmn.cpp:924 -msgid "2x2 matrix (Clockwise)" -msgstr "" - -#: src/canonmn.cpp:929 -msgid "Panorama Frame" -msgstr "" - -#: src/canonmn.cpp:929 -msgid "Panorama frame number" -msgstr "" - -#: src/canonmn.cpp:930 -msgid "Panorama Direction" -msgstr "" - -#: src/canonmn.cpp:930 -msgid "Panorama direction" -msgstr "" - -#: src/canonmn.cpp:932 -msgid "Unknown Canon Panorama tag" -msgstr "" - -#: src/canonmn.cpp:942 src/canonmn.cpp:1072 src/minoltamn.cpp:807 -#: src/minoltamn.cpp:1068 src/minoltamn.cpp:1493 src/nikonmn.cpp:579 -#: src/olympusmn.cpp:438 src/olympusmn.cpp:602 src/olympusmn.cpp:685 -#: src/olympusmn.cpp:804 src/olympusmn.cpp:819 src/olympusmn.cpp:889 -#: src/olympusmn.cpp:974 -msgid "Noise Reduction" -msgstr "" - -#: src/canonmn.cpp:942 -msgid "Long exposure noise reduction" -msgstr "" - -#: src/canonmn.cpp:943 -msgid "Shutter Ae Lock" -msgstr "" - -#: src/canonmn.cpp:943 -msgid "Shutter/AE lock buttons" -msgstr "" - -#: src/canonmn.cpp:944 -msgid "Mirror Lockup" -msgstr "" - -#: src/canonmn.cpp:944 -msgid "Mirror lockup" -msgstr "" - -#: src/canonmn.cpp:945 src/sonymn.cpp:650 src/sonymn.cpp:651 -msgid "Exposure Level Increments" -msgstr "" - -#: src/canonmn.cpp:945 -msgid "Tv/Av and exposure level" -msgstr "" - -#: src/canonmn.cpp:946 src/minoltamn.cpp:1520 -msgid "AF Assist" -msgstr "" - -#: src/canonmn.cpp:946 -msgid "AF assist light" -msgstr "" - -#: src/canonmn.cpp:947 -msgid "Flash Sync Speed Av" -msgstr "" - -#: src/canonmn.cpp:947 -msgid "Shutter speed in Av mode" -msgstr "" - -#: src/canonmn.cpp:948 -msgid "AEB Sequence" -msgstr "" - -#: src/canonmn.cpp:948 -msgid "AEB sequence/auto cancellation" -msgstr "" - -#: src/canonmn.cpp:949 -msgid "Shutter Curtain Sync" -msgstr "" - -#: src/canonmn.cpp:949 -msgid "Shutter curtain sync" -msgstr "" - -#: src/canonmn.cpp:950 -msgid "Lens AF Stop Button" -msgstr "" - -#: src/canonmn.cpp:950 -msgid "Lens AF stop button Fn. Switch" -msgstr "" - -#: src/canonmn.cpp:951 -msgid "Fill Flash Auto Reduction" -msgstr "" - -#: src/canonmn.cpp:951 -msgid "Auto reduction of fill flash" -msgstr "" - -#: src/canonmn.cpp:952 -msgid "Menu Button Return" -msgstr "" - -#: src/canonmn.cpp:952 -msgid "Menu button return position" -msgstr "" - -#: src/canonmn.cpp:953 -msgid "Set Button Function" -msgstr "" - -#: src/canonmn.cpp:953 -msgid "SET button func. when shooting" -msgstr "" - -#: src/canonmn.cpp:954 -msgid "Sensor Cleaning" -msgstr "" - -#: src/canonmn.cpp:954 -msgid "Sensor cleaning" -msgstr "" - -#: src/canonmn.cpp:955 -msgid "Superimposed Display" -msgstr "" - -#: src/canonmn.cpp:955 -msgid "Superimposed display" -msgstr "" - -#: src/canonmn.cpp:956 -msgid "Shutter Release No CF Card" -msgstr "" - -#: src/canonmn.cpp:956 -msgid "Shutter Release W/O CF Card" -msgstr "" - -#: src/canonmn.cpp:958 -msgid "Unknown Canon Custom Function tag" -msgstr "" - -#: src/canonmn.cpp:969 -msgid "mid-right" -msgstr "" - -#: src/canonmn.cpp:970 src/canonmn.cpp:987 -msgid "bottom" -msgstr "" - -#: src/canonmn.cpp:972 src/canonmn.cpp:979 -msgid "top" -msgstr "" - -#: src/canonmn.cpp:973 -msgid "mid-left" -msgstr "" - -#: src/canonmn.cpp:980 -msgid "upper-left" -msgstr "" - -#: src/canonmn.cpp:981 -msgid "upper-right" -msgstr "" - -#: src/canonmn.cpp:985 -msgid "lower-left" -msgstr "" - -#: src/canonmn.cpp:986 -msgid "lower-right" -msgstr "" - -#: src/canonmn.cpp:992 src/olympusmn.cpp:225 src/olympusmn.cpp:405 -#: src/panasonicmn.cpp:341 src/properties.cpp:480 src/tags.cpp:415 -msgid "Image Width" -msgstr "" - -#: src/canonmn.cpp:992 src/olympusmn.cpp:226 src/olympusmn.cpp:406 -#: src/panasonicmn.cpp:341 src/tags.cpp:2103 -msgid "Image width" -msgstr "" - -#: src/canonmn.cpp:993 src/olympusmn.cpp:228 src/olympusmn.cpp:408 -#: src/panasonicmn.cpp:340 -msgid "Image Height" -msgstr "" - -#: src/canonmn.cpp:993 src/olympusmn.cpp:229 src/olympusmn.cpp:409 -#: src/panasonicmn.cpp:340 src/tags.cpp:2106 -msgid "Image height" -msgstr "" - -#: src/canonmn.cpp:994 -msgid "Image Width As Shot" -msgstr "" - -#: src/canonmn.cpp:994 -msgid "Image width (as shot)" -msgstr "" - -#: src/canonmn.cpp:995 -msgid "Image Height As Shot" -msgstr "" - -#: src/canonmn.cpp:995 -msgid "Image height (as shot)" -msgstr "" - -#: src/canonmn.cpp:996 src/nikonmn.cpp:848 -msgid "AF Points Used" -msgstr "" - -#: src/canonmn.cpp:996 src/nikonmn.cpp:848 -msgid "AF points used" -msgstr "" - -#: src/canonmn.cpp:997 -msgid "AF Points Used 20D" -msgstr "" - -#: src/canonmn.cpp:997 -msgid "AF points used (20D)" -msgstr "" - -#: src/canonmn.cpp:999 -msgid "Unknown Canon Picture Info tag" -msgstr "" - -#: src/canonmn.cpp:1010 -msgid "AEB" -msgstr "" - -#: src/canonmn.cpp:1011 -msgid "FEB" -msgstr "" - -#: src/canonmn.cpp:1012 src/minoltamn.cpp:511 src/nikonmn.cpp:767 -#: src/nikonmn.cpp:1136 src/nikonmn.cpp:1196 src/nikonmn.cpp:1232 -msgid "ISO" -msgstr "" - -#: src/canonmn.cpp:1013 -msgid "WB" -msgstr "" - -#: src/canonmn.cpp:1024 -msgid "Postcard" -msgstr "" - -#: src/canonmn.cpp:1025 -msgid "Widescreen" -msgstr "" - -#: src/canonmn.cpp:1026 -msgid "Medium Movie" -msgstr "" - -#: src/canonmn.cpp:1027 -msgid "Small Movie" -msgstr "" - -#: src/canonmn.cpp:1033 -msgid "On 1" -msgstr "" - -#: src/canonmn.cpp:1034 -msgid "On 2" -msgstr "" - -#: src/canonmn.cpp:1042 -msgid "On (shift AB)" -msgstr "" - -#: src/canonmn.cpp:1043 -msgid "On (shift GM)" -msgstr "" - -#: src/canonmn.cpp:1049 src/nikonmn.cpp:667 src/nikonmn.cpp:680 -#: src/nikonmn.cpp:995 src/olympusmn.cpp:622 src/olympusmn.cpp:862 -msgid "Yellow" -msgstr "" - -#: src/canonmn.cpp:1050 src/nikonmn.cpp:668 src/olympusmn.cpp:623 -#: src/olympusmn.cpp:863 -msgid "Orange" -msgstr "" - -#: src/canonmn.cpp:1051 src/nikonmn.cpp:669 src/nikonmn.cpp:679 -#: src/nikonmn.cpp:993 src/olympusmn.cpp:624 src/olympusmn.cpp:864 -msgid "Red" -msgstr "" - -#: src/canonmn.cpp:1052 src/canonmn.cpp:1061 src/nikonmn.cpp:670 -#: src/nikonmn.cpp:681 src/olympusmn.cpp:625 src/olympusmn.cpp:635 -#: src/olympusmn.cpp:865 src/olympusmn.cpp:874 -msgid "Green" -msgstr "" - -#: src/canonmn.cpp:1059 src/nikonmn.cpp:683 src/nikonmn.cpp:994 -#: src/olympusmn.cpp:633 src/olympusmn.cpp:872 -msgid "Blue" -msgstr "" - -#: src/canonmn.cpp:1060 src/olympusmn.cpp:634 src/olympusmn.cpp:873 -msgid "Purple" -msgstr "" - -#: src/canonmn.cpp:1067 -msgid "Bracket Mode" -msgstr "" - -#: src/canonmn.cpp:1068 -msgid "Bracket Value" -msgstr "" - -#: src/canonmn.cpp:1069 -msgid "Bracket Shot Number" -msgstr "" - -#: src/canonmn.cpp:1070 -msgid "Raw Jpg Quality" -msgstr "" - -#: src/canonmn.cpp:1071 -msgid "Raw Jpg Size" -msgstr "" - -#: src/canonmn.cpp:1073 -msgid "WB Bracket Mode" -msgstr "" - -#: src/canonmn.cpp:1074 -msgid "WB Bracket Value AB" -msgstr "" - -#: src/canonmn.cpp:1075 -msgid "WB Bracket Value GM" -msgstr "" - -#: src/canonmn.cpp:1076 src/nikonmn.cpp:701 -msgid "Filter Effect" -msgstr "" - -#: src/canonmn.cpp:1077 src/nikonmn.cpp:702 -msgid "Toning Effect" -msgstr "" - -#: src/canonmn.cpp:1078 -msgid "Macro Magnification" -msgstr "" - -#: src/canonmn.cpp:1078 -msgid "Macro magnification" -msgstr "" - -#: src/canonmn.cpp:1079 -msgid "Live View Shooting" -msgstr "" - -#: src/canonmn.cpp:1079 -msgid "Live view shooting" -msgstr "" - -#: src/canonmn.cpp:1080 -msgid "Flash Exposure Lock" -msgstr "" - -#: src/canonmn.cpp:1080 -msgid "Flash exposure lock" -msgstr "" - -#: src/canonmn.cpp:1082 -msgid "Unknown Canon File Info tag" -msgstr "" - -#: src/canonmn.cpp:1092 src/canonmn.cpp:1102 src/canonmn.cpp:1110 -#: src/canonmn.cpp:1123 src/fujimn.cpp:147 src/fujimn.cpp:154 -#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1135 -#: src/minoltamn.cpp:1221 src/minoltamn.cpp:1884 src/minoltamn.cpp:1973 -#: src/minoltamn.cpp:2007 src/minoltamn.cpp:2033 src/minoltamn.cpp:2059 -#: src/olympusmn.cpp:93 src/olympusmn.cpp:1135 src/panasonicmn.cpp:167 -#: src/panasonicmn.cpp:174 src/panasonicmn.cpp:204 src/pentaxmn.cpp:470 -#: src/sonymn.cpp:150 src/sonymn.cpp:475 src/sonymn.cpp:505 src/tags.cpp:1501 -msgid "Standard" -msgstr "" - -#: src/canonmn.cpp:1100 -msgid "Lowest" -msgstr "" - -#: src/canonmn.cpp:1104 -msgid "Highest" -msgstr "" - -#: src/canonmn.cpp:1112 -msgid "High Saturation" -msgstr "" - -#: src/canonmn.cpp:1114 -msgid "Low Saturation" -msgstr "" - -#: src/canonmn.cpp:1115 -msgid "CM Set 1" -msgstr "" - -#: src/canonmn.cpp:1116 -msgid "CM Set 2" -msgstr "" - -#: src/canonmn.cpp:1117 -msgid "User Def. 1" -msgstr "" - -#: src/canonmn.cpp:1118 -msgid "User Def. 2" -msgstr "" - -#: src/canonmn.cpp:1119 -msgid "User Def. 3" -msgstr "" - -#: src/canonmn.cpp:1120 -msgid "PC 1" -msgstr "" - -#: src/canonmn.cpp:1121 -msgid "PC 2" -msgstr "" - -#: src/canonmn.cpp:1122 -msgid "PC 3" -msgstr "" - -#: src/canonmn.cpp:1127 -msgid "Faithful" -msgstr "" - -#: src/canonmn.cpp:1128 src/minoltamn.cpp:903 src/minoltamn.cpp:953 -#: src/nikonmn.cpp:423 src/pentaxmn.cpp:707 -msgid "Monochrome" -msgstr "" - -#: src/canonmn.cpp:1133 -msgid "ToneCurve" -msgstr "" - -#: src/canonmn.cpp:1133 -msgid "Tone curve" -msgstr "" - -#: src/canonmn.cpp:1135 -msgid "SharpnessFrequency" -msgstr "" - -#: src/canonmn.cpp:1135 -msgid "Sharpness frequency" -msgstr "" - -#: src/canonmn.cpp:1136 -msgid "SensorRedLevel" -msgstr "" - -#: src/canonmn.cpp:1136 -msgid "Sensor red level" -msgstr "" - -#: src/canonmn.cpp:1137 -msgid "SensorBlueLevel" -msgstr "" - -#: src/canonmn.cpp:1137 -msgid "Sensor blue level" -msgstr "" - -#: src/canonmn.cpp:1138 -msgid "WhiteBalanceRed" -msgstr "" - -#: src/canonmn.cpp:1138 -msgid "White balance red" -msgstr "" - -#: src/canonmn.cpp:1139 -msgid "WhiteBalanceBlue" -msgstr "" - -#: src/canonmn.cpp:1139 -msgid "White balance blue" -msgstr "" - -#: src/canonmn.cpp:1140 -msgid "WhiteBalance" -msgstr "" - -#: src/canonmn.cpp:1141 -msgid "ColorTemperature" -msgstr "" - -#: src/canonmn.cpp:1141 src/minoltamn.cpp:156 src/minoltamn.cpp:786 -#: src/minoltamn.cpp:1038 src/minoltamn.cpp:1053 src/minoltamn.cpp:1054 -#: src/minoltamn.cpp:1475 src/minoltamn.cpp:1577 src/olympusmn.cpp:833 -#: src/sonymn.cpp:357 src/sonymn.cpp:358 -msgid "Color Temperature" -msgstr "" - -#: src/canonmn.cpp:1142 -msgid "PictureStyle" -msgstr "" - -#: src/canonmn.cpp:1142 -msgid "Picture style" -msgstr "" - -#: src/canonmn.cpp:1143 -msgid "DigitalGain" -msgstr "" - -#: src/canonmn.cpp:1143 -msgid "Digital gain" -msgstr "" - -#: src/canonmn.cpp:1144 -msgid "WBShiftAB" -msgstr "" - -#: src/canonmn.cpp:1144 -msgid "WBShift AB" -msgstr "" - -#: src/canonmn.cpp:1145 -msgid "WBShiftGM" -msgstr "" - -#: src/canonmn.cpp:1145 -msgid "WB Shift GM" -msgstr "" - -#: src/canonmn.cpp:1146 -msgid "Unknown Canon Processing Info tag" -msgstr "" - -#: src/crwimage.cpp:664 -msgid "Header, offset" -msgstr "" - -#: src/crwimage.cpp:681 -msgid "tag" -msgstr "" - -#: src/crwimage.cpp:683 -msgid "dir" -msgstr "" - -#: src/crwimage.cpp:685 -msgid "type" -msgstr "" - -#: src/crwimage.cpp:686 -msgid "size" -msgstr "" - -#: src/crwimage.cpp:687 -msgid "offset" -msgstr "" - -#: src/datasets.cpp:79 -msgid "(invalid)" -msgstr "" - -#: src/datasets.cpp:80 -msgid "IIM envelope record" -msgstr "" - -#: src/datasets.cpp:81 -msgid "IIM application record 2" -msgstr "" - -#: src/datasets.cpp:85 -msgid "Model Version" -msgstr "" - -#: src/datasets.cpp:86 -msgid "" -"A binary number identifying the version of the Information Interchange " -"Model, Part I, utilised by the provider. Version numbers are assigned by " -"IPTC and NAA organizations." -msgstr "" - -#: src/datasets.cpp:90 src/panasonicmn.cpp:220 src/pentaxmn.cpp:378 -#: src/pentaxmn.cpp:962 src/pentaxmn.cpp:963 -msgid "Destination" -msgstr "" - -#: src/datasets.cpp:91 -msgid "" -"This DataSet is to accommodate some providers who require routing " -"information above the appropriate OSI layers." -msgstr "" - -#: src/datasets.cpp:94 src/sonymn.cpp:348 src/sonymn.cpp:349 -msgid "File Format" -msgstr "" - -#: src/datasets.cpp:95 -msgid "" -"A binary number representing the file format. The file format must be " -"registered with IPTC or NAA with a unique number assigned to it. The " -"information is used to route the data to the appropriate system and to allow " -"the receiving system to perform the appropriate actions there to." -msgstr "" - -#: src/datasets.cpp:101 -msgid "File Version" -msgstr "" - -#: src/datasets.cpp:102 -msgid "" -"A binary number representing the particular version of the File Format " -"specified by tag." -msgstr "" - -#: src/datasets.cpp:105 -msgid "Service Id" -msgstr "" - -#: src/datasets.cpp:106 -msgid "Identifies the provider and product" -msgstr "" - -#: src/datasets.cpp:108 -msgid "Envelope Number" -msgstr "" - -#: src/datasets.cpp:109 -msgid "" -"The characters form a number that will be unique for the date specified in " -" tag and for the Service Identifier specified by " -" tag. If identical envelope numbers appear with the same " -"date and with the same Service Identifier, records 2-9 must be unchanged " -"from the original. This is not intended to be a sequential serial number " -"reception check." -msgstr "" - -#: src/datasets.cpp:117 -msgid "Product Id" -msgstr "" - -#: src/datasets.cpp:118 -msgid "" -"Allows a provider to identify subsets of its overall service. Used to " -"provide receiving organisation data on which to select, route, or otherwise " -"handle data." -msgstr "" - -#: src/datasets.cpp:122 -msgid "Envelope Priority" -msgstr "" - -#: src/datasets.cpp:123 -msgid "" -"Specifies the envelope handling priority and not the editorial urgency (see " -" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " -"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " -"Priority. The numeral \"0\" is reserved for future use." -msgstr "" - -#: src/datasets.cpp:129 -msgid "Date Sent" -msgstr "" - -#: src/datasets.cpp:130 -msgid "" -"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " -"to indicate year, month and day the service sent the material." -msgstr "" - -#: src/datasets.cpp:133 -msgid "Time Sent" -msgstr "" - -#: src/datasets.cpp:134 -msgid "" -"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " -"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " -"Universal Coordinated Time as described in ISO 8601. This is the time the " -"service sent the material." -msgstr "" - -#: src/datasets.cpp:139 -msgid "Character Set" -msgstr "" - -#: src/datasets.cpp:140 -msgid "" -"This tag consisting of one or more control functions used for the " -"announcement, invocation or designation of coded character sets. The control " -"functions follow the ISO 2022 standard and may consist of the escape control " -"character and one or more graphic characters." -msgstr "" - -#: src/datasets.cpp:145 -msgid "Unique Name Object" -msgstr "" - -#: src/datasets.cpp:146 -msgid "" -"This tag provide a globally unique identification for objects as specified " -"in the IIM, independent of provider and for any media form. The provider " -"must ensure the UNO is unique. Objects with the same UNO are identical." -msgstr "" - -#: src/datasets.cpp:151 -msgid "ARM Identifier" -msgstr "" - -#: src/datasets.cpp:152 -msgid "" -"The DataSet identifies the Abstract Relationship Method identifier (ARM) " -"which is described in a document registered by the originator of the ARM " -"with the IPTC and NAA organizations." -msgstr "" - -#: src/datasets.cpp:156 -msgid "ARM Version" -msgstr "" - -#: src/datasets.cpp:157 -msgid "" -"This tag consisting of a binary number representing the particular version " -"of the ARM specified by tag ." -msgstr "" - -#: src/datasets.cpp:170 -msgid "Record Version" -msgstr "" - -#: src/datasets.cpp:171 -msgid "" -"A binary number identifying the version of the Information Interchange " -"Model, Part II, utilised by the provider. Version numbers are assigned by " -"IPTC and NAA organizations." -msgstr "" - -#: src/datasets.cpp:175 -msgid "Object Type" -msgstr "" - -#: src/datasets.cpp:176 -msgid "" -"The Object Type is used to distinguish between different types of objects " -"within the IIM. The first part is a number representing a language " -"independent international reference to an Object Type followed by a colon " -"separator. The second part, if used, is a text representation of the Object " -"Type Number consisting of graphic characters plus spaces either in English " -"or in the language of the service as indicated in tag " -msgstr "" - -#: src/datasets.cpp:184 -msgid "Object Attribute" -msgstr "" - -#: src/datasets.cpp:185 -msgid "" -"The Object Attribute defines the nature of the object independent of the " -"Subject. The first part is a number representing a language independent " -"international reference to an Object Attribute followed by a colon " -"separator. The second part, if used, is a text representation of the Object " -"Attribute Number consisting of graphic characters plus spaces either in " -"English, or in the language of the service as indicated in tag " -"" -msgstr "" - -#: src/datasets.cpp:193 -msgid "Object Name" -msgstr "" - -#: src/datasets.cpp:194 -msgid "" -"Used as a shorthand reference for the object. Changes to exist-ing data, " -"such as updated stories or new crops on photos, should be identified in tag " -"." -msgstr "" - -#: src/datasets.cpp:198 -msgid "Document Title" -msgstr "" - -#: src/datasets.cpp:199 src/olympusmn.cpp:820 -msgid "Edit Status" -msgstr "" - -#: src/datasets.cpp:200 -msgid "Status of the object data, according to the practice of the provider." -msgstr "" - -#: src/datasets.cpp:202 -msgid "Editorial Update" -msgstr "" - -#: src/datasets.cpp:203 -msgid "" -"Indicates the type of update that this object provides to a previous object. " -"The link to the previous object is made using the tags and " -", according to the practices of the provider." -msgstr "" - -#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:419 -msgid "Urgency" -msgstr "" - -#: src/datasets.cpp:208 -msgid "" -"Specifies the editorial urgency of content and not necessarily the envelope " -"handling priority (see tag ). The \"1\" is most urgent, " -"\"5\" normal and \"8\" denotes the least-urgent copy." -msgstr "" - -#: src/datasets.cpp:213 src/properties.cpp:167 -msgid "Subject" -msgstr "" - -#: src/datasets.cpp:214 -msgid "The Subject Reference is a structured definition of the subject matter." -msgstr "" - -#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:405 -msgid "Category" -msgstr "" - -#: src/datasets.cpp:217 -msgid "" -"Identifies the subject of the object data in the opinion of the provider. A " -"list of categories will be maintained by a regional registry, where " -"available, otherwise by the provider." -msgstr "" - -#: src/datasets.cpp:222 -msgid "Supplemental Category" -msgstr "" - -#: src/datasets.cpp:223 -msgid "" -"Supplemental categories further refine the subject of an object data. A " -"supplemental category may include any of the recognised categories as used " -"in tag . Otherwise, selection of supplemental categories are left " -"to the provider." -msgstr "" - -#: src/datasets.cpp:228 src/properties.cpp:417 -msgid "Supplemental Categories" -msgstr "" - -#: src/datasets.cpp:229 -msgid "Fixture Id" -msgstr "" - -#: src/datasets.cpp:230 -msgid "" -"Identifies object data that recurs often and predictably. Enables users to " -"immediately find or recall such an object." -msgstr "" - -#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:395 -msgid "Keywords" -msgstr "" - -#: src/datasets.cpp:234 -msgid "" -"Used to indicate specific information retrieval words. It is expected that a " -"provider of various types of data that are related in subject matter uses " -"the same keyword, enabling the receiving system or subsystems to search " -"across all types of data for related material." -msgstr "" - -#: src/datasets.cpp:240 -msgid "Location Code" -msgstr "" - -#: src/datasets.cpp:241 -msgid "" -"Indicates the code of a country/geographical location referenced by the " -"content of the object. Where ISO has established an appropriate country code " -"under ISO 3166, that code will be used. When ISO 3166 does not adequately " -"provide for identification of a location or a country, e.g. ships at sea, " -"space, IPTC will assign an appropriate three-character code under the " -"provisions of ISO 3166 to avoid conflicts." -msgstr "" - -#: src/datasets.cpp:248 -msgid "Location Name" -msgstr "" - -#: src/datasets.cpp:249 -msgid "" -"Provides a full, publishable name of a country/geographical location " -"referenced by the content of the object, according to guidelines of the " -"provider." -msgstr "" - -#: src/datasets.cpp:253 src/properties.cpp:358 -msgid "Release Date" -msgstr "" - -#: src/datasets.cpp:254 -msgid "" -"Designates in the form CCYYMMDD the earliest date the provider intends the " -"object to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:257 -msgid "Release Time" -msgstr "" - -#: src/datasets.cpp:258 -msgid "" -"Designates in the form HHMMSS:HHMM the earliest time the provider intends " -"the object to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:261 -msgid "Expiration Date" -msgstr "" - -#: src/datasets.cpp:262 -msgid "" -"Designates in the form CCYYMMDD the latest date the provider or owner " -"intends the object data to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:265 -msgid "ExpirationTime" -msgstr "" - -#: src/datasets.cpp:266 -msgid "" -"Designates in the form HHMMSS:HHMM the latest time the provider or owner " -"intends the object data to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:269 -msgid "Special Instructions" -msgstr "" - -#: src/datasets.cpp:270 -msgid "" -"Other editorial instructions concerning the use of the object data, such as " -"embargoes and warnings." -msgstr "" - -#: src/datasets.cpp:273 src/properties.cpp:414 -msgid "Instructions" -msgstr "" - -#: src/datasets.cpp:274 -msgid "Action Advised" -msgstr "" - -#: src/datasets.cpp:275 -msgid "" -"Indicates the type of action that this object provides to a previous object. " -"The link to the previous object is made using tags and " -", according to the practices of the provider." -msgstr "" - -#: src/datasets.cpp:279 -msgid "Reference Service" -msgstr "" - -#: src/datasets.cpp:280 -msgid "" -"Identifies the Service Identifier of a prior envelope to which the current " -"object refers." -msgstr "" - -#: src/datasets.cpp:283 -msgid "Reference Date" -msgstr "" - -#: src/datasets.cpp:284 -msgid "" -"Identifies the date of a prior envelope to which the current object refers." -msgstr "" - -#: src/datasets.cpp:286 -msgid "Reference Number" -msgstr "" - -#: src/datasets.cpp:287 -msgid "" -"Identifies the Envelope Number of a prior envelope to which the current " -"object refers." -msgstr "" - -#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:409 -msgid "Date Created" -msgstr "" - -#: src/datasets.cpp:290 -msgid "" -"Represented in the form CCYYMMDD to designate the date the intellectual " -"content of the object data was created rather than the date of the creation " -"of the physical representation. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:295 -msgid "Time Created" -msgstr "" - -#: src/datasets.cpp:296 -msgid "" -"Represented in the form HHMMSS:HHMM to designate the time the intellectual " -"content of the object data current source material was created rather than " -"the creation of the physical representation. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:301 -msgid "Digitization Date" -msgstr "" - -#: src/datasets.cpp:302 -msgid "" -"Represented in the form CCYYMMDD to designate the date the digital " -"representation of the object data was created. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:305 -msgid "Digitization Time" -msgstr "" - -#: src/datasets.cpp:306 -msgid "" -"Represented in the form HHMMSS:HHMM to designate the time the digital " -"representation of the object data was created. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 -#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:106 -#: src/pentaxmn.cpp:468 src/pentaxmn.cpp:526 src/sigmamn.cpp:154 -#: src/sonymn.cpp:110 -msgid "Program" -msgstr "" - -#: src/datasets.cpp:311 -msgid "Identifies the type of program used to originate the object data." -msgstr "" - -#: src/datasets.cpp:313 -msgid "Program Version" -msgstr "" - -#: src/datasets.cpp:314 -msgid "Used to identify the version of the program mentioned in tag ." -msgstr "" - -#: src/datasets.cpp:316 -msgid "Object Cycle" -msgstr "" - -#: src/datasets.cpp:317 -msgid "Used to identify the editorial cycle of object data." -msgstr "" - -#: src/datasets.cpp:319 -msgid "By-line" -msgstr "" - -#: src/datasets.cpp:320 -msgid "" -"Contains name of the creator of the object data, e.g. writer, photographer " -"or graphic artist." -msgstr "" - -#: src/datasets.cpp:323 -msgid "Author" -msgstr "" - -#: src/datasets.cpp:324 -msgid "By-line Title" -msgstr "" - -#: src/datasets.cpp:325 -msgid "" -"A by-line title is the title of the creator or creators of an object data. " -"Where used, a by-line title should follow the by-line it modifies." -msgstr "" - -#: src/datasets.cpp:328 src/datasets.cpp:332 src/properties.cpp:406 -msgid "City" -msgstr "" - -#: src/datasets.cpp:329 -msgid "" -"Identifies city of object data origin according to guidelines established by " -"the provider." -msgstr "" - -#: src/datasets.cpp:333 -msgid "Sub Location" -msgstr "" - -#: src/datasets.cpp:334 -msgid "" -"Identifies the location within a city from which the object data originates, " -"according to guidelines established by the provider." -msgstr "" - -#: src/datasets.cpp:337 -msgid "Province State" -msgstr "" - -#: src/datasets.cpp:338 -msgid "" -"Identifies Province/State of origin according to guidelines established by " -"the provider." -msgstr "" - -#: src/datasets.cpp:341 -msgid "State/Province" -msgstr "" - -#: src/datasets.cpp:342 src/properties.cpp:649 -msgid "Country Code" -msgstr "" - -#: src/datasets.cpp:343 -msgid "" -"Indicates the code of the country/primary location where the intellectual " -"property of the object data was created, e.g. a photo was taken, an event " -"occurred. Where ISO has established an appropriate country code under ISO " -"3166, that code will be used. When ISO 3166 does not adequately provide for " -"identification of a location or a new country, e.g. ships at sea, space, " -"IPTC will assign an appropriate three-character code under the provisions of " -"ISO 3166 to avoid conflicts." -msgstr "" - -#: src/datasets.cpp:352 -msgid "Country Name" -msgstr "" - -#: src/datasets.cpp:353 -msgid "" -"Provides full, publishable, name of the country/primary location where the " -"intellectual property of the object data was created, according to " -"guidelines of the provider." -msgstr "" - -#: src/datasets.cpp:357 src/properties.cpp:407 -msgid "Country" -msgstr "" - -#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:418 -msgid "Transmission Reference" -msgstr "" - -#: src/datasets.cpp:359 -msgid "" -"A code representing the location of original transmission according to " -"practices of the provider." -msgstr "" - -#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:413 -msgid "Headline" -msgstr "" - -#: src/datasets.cpp:364 -msgid "" -"A publishable entry providing a synopsis of the contents of the object data." -msgstr "" - -#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:408 -msgid "Credit" -msgstr "" - -#: src/datasets.cpp:368 -msgid "" -"Identifies the provider of the object data, not necessarily the owner/" -"creator." -msgstr "" - -#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:166 -#: src/properties.cpp:415 -msgid "Source" -msgstr "" - -#: src/datasets.cpp:372 -msgid "" -"Identifies the original owner of the intellectual content of the object " -"data. This could be an agency, a member of an agency or an individual." -msgstr "" - -#: src/datasets.cpp:377 -msgid "Contains any necessary copyright notice." -msgstr "" - -#: src/datasets.cpp:379 -msgid "Copyright Notice" -msgstr "" - -#: src/datasets.cpp:380 src/properties.cpp:937 src/properties.cpp:946 -msgid "Contact" -msgstr "" - -#: src/datasets.cpp:381 -msgid "" -"Identifies the person or organisation which can provide further background " -"information on the object data." -msgstr "" - -#: src/datasets.cpp:384 -msgid "Caption" -msgstr "" - -#: src/datasets.cpp:385 -msgid "A textual description of the object data." -msgstr "" - -#: src/datasets.cpp:387 src/properties.cpp:151 src/properties.cpp:981 -msgid "Description" -msgstr "" - -#: src/datasets.cpp:388 -msgid "Writer" -msgstr "" - -#: src/datasets.cpp:389 -msgid "" -"Identification of the name of the person involved in the writing, editing or " -"correcting the object data or caption/abstract." -msgstr "" - -#: src/datasets.cpp:392 -msgid "Rasterized Caption" -msgstr "" - -#: src/datasets.cpp:393 -msgid "" -"Contains the rasterized object data description and is used where characters " -"that have not been coded are required for the caption." -msgstr "" - -#: src/datasets.cpp:397 -msgid "Indicates the color components of an image." -msgstr "" - -#: src/datasets.cpp:399 -msgid "Image Orientation" -msgstr "" - -#: src/datasets.cpp:400 -msgid "Indicates the layout of an image." -msgstr "" - -#: src/datasets.cpp:402 src/properties.cpp:157 -msgid "Language" -msgstr "" - -#: src/datasets.cpp:403 -msgid "" -"Describes the major national language of the object, according to the 2-" -"letter codes of ISO 639:1988. Does not define or imply any coded character " -"set, but is used for internal routing, e.g. to various editorial desks." -msgstr "" - -#: src/datasets.cpp:408 -msgid "Audio Type" -msgstr "" - -#: src/datasets.cpp:409 -msgid "Indicates the type of an audio content." -msgstr "" - -#: src/datasets.cpp:411 -msgid "Audio Rate" -msgstr "" - -#: src/datasets.cpp:412 -msgid "Indicates the sampling rate in Hertz of an audio content." -msgstr "" - -#: src/datasets.cpp:414 -msgid "Audio Resolution" -msgstr "" - -#: src/datasets.cpp:415 -msgid "Indicates the sampling resolution of an audio content." -msgstr "" - -#: src/datasets.cpp:417 -msgid "Audio Duration" -msgstr "" - -#: src/datasets.cpp:418 -msgid "Indicates the duration of an audio content." -msgstr "" - -#: src/datasets.cpp:420 -msgid "Audio Outcue" -msgstr "" - -#: src/datasets.cpp:421 -msgid "" -"Identifies the content of the end of an audio object data, according to " -"guidelines established by the provider." -msgstr "" - -#: src/datasets.cpp:424 -msgid "Preview Format" -msgstr "" - -#: src/datasets.cpp:425 -msgid "" -"A binary number representing the file format of the object data preview. The " -"file format must be registered with IPTC or NAA organizations with a unique " -"number assigned to it." -msgstr "" - -#: src/datasets.cpp:429 -msgid "Preview Version" -msgstr "" - -#: src/datasets.cpp:430 -msgid "" -"A binary number representing the particular version of the object data " -"preview file format specified in tag ." -msgstr "" - -#: src/datasets.cpp:433 -msgid "Preview Data" -msgstr "" - -#: src/datasets.cpp:434 -msgid "Binary image preview data." -msgstr "" - -#: src/datasets.cpp:436 src/datasets.cpp:437 -msgid "(Invalid)" -msgstr "" - -#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 -msgid "Unknown dataset" -msgstr "" - -#: src/error.cpp:55 -msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." -msgstr "" - -#: src/error.cpp:56 -msgid "Success" -msgstr "" - -#: src/error.cpp:59 -msgid "This does not look like a %1 image" -msgstr "" - -#: src/error.cpp:60 -msgid "Invalid dataset name `%1'" -msgstr "" - -#: src/error.cpp:61 -msgid "Invalid record name `%1'" -msgstr "" - -#: src/error.cpp:62 -msgid "Invalid key `%1'" -msgstr "" - -#: src/error.cpp:63 -msgid "Invalid tag name or ifdId `%1', ifdId %2" -msgstr "" - -#: src/error.cpp:64 -msgid "Value not set" -msgstr "" - -#: src/error.cpp:65 -msgid "%1: Failed to open the data source: %2" -msgstr "" - -#: src/error.cpp:66 -msgid "%1: Failed to open file (%2): %3" -msgstr "" - -#: src/error.cpp:67 -msgid "%1: The file contains data of an unknown image type" -msgstr "" - -#: src/error.cpp:68 -msgid "The memory contains data of an unknown image type" -msgstr "" - -#: src/error.cpp:69 -msgid "Image type %1 is not supported" -msgstr "" - -#: src/error.cpp:70 -msgid "Failed to read image data" -msgstr "" - -#: src/error.cpp:71 -msgid "This does not look like a JPEG image" -msgstr "" - -#: src/error.cpp:72 -msgid "%1: Failed to map file for reading and writing: %2" -msgstr "" - -#: src/error.cpp:73 -msgid "%1: Failed to rename file to %2: %3" -msgstr "" - -#: src/error.cpp:74 -msgid "%1: Transfer failed: %2" -msgstr "" - -#: src/error.cpp:75 -msgid "Memory transfer failed: %1" -msgstr "" - -#: src/error.cpp:76 -msgid "Failed to read input data" -msgstr "" - -#: src/error.cpp:77 -msgid "Failed to write image" -msgstr "" - -#: src/error.cpp:78 -msgid "Input data does not contain a valid image" -msgstr "" - -#: src/error.cpp:79 -msgid "Invalid ifdId %1" -msgstr "" - -#: src/error.cpp:80 -msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" -msgstr "" - -#: src/error.cpp:81 -msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" -msgstr "" - -#: src/error.cpp:82 -msgid "Offset out of range" -msgstr "" - -#: src/error.cpp:83 -msgid "Unsupported data area offset type" -msgstr "" - -#: src/error.cpp:84 -msgid "Invalid charset: `%1'" -msgstr "" - -#: src/error.cpp:85 -msgid "Unsupported date format" -msgstr "" - -#: src/error.cpp:86 -msgid "Unsupported time format" -msgstr "" - -#: src/error.cpp:87 -msgid "Writing to %1 images is not supported" -msgstr "" - -#: src/error.cpp:88 -msgid "Setting %1 in %2 images is not supported" -msgstr "" - -#: src/error.cpp:89 -msgid "This does not look like a CRW image" -msgstr "" - -#: src/error.cpp:90 -msgid "%1: Not supported" -msgstr "" - -#: src/error.cpp:91 -msgid "No namespace info available for XMP prefix `%1'" -msgstr "" - -#: src/error.cpp:92 -msgid "No prefix registered for namespace `%2', needed for property path `%1'" -msgstr "" - -#: src/error.cpp:93 -msgid "Size of %1 JPEG segment is larger than 65535 bytes" -msgstr "" - -#: src/error.cpp:94 -msgid "Unhandled Xmpdatum %1 of type %2" -msgstr "" - -#: src/error.cpp:95 -msgid "Unhandled XMP node %1 with opt=%2" -msgstr "" - -#: src/error.cpp:96 -msgid "XMP Toolkit error %1: %2" -msgstr "" - -#: src/error.cpp:97 -msgid "Failed to decode Lang Alt property %1 with opt=%2" -msgstr "" - -#: src/error.cpp:98 -msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" -msgstr "" - -#: src/error.cpp:99 -msgid "Failed to encode Lang Alt property %1" -msgstr "" - -#: src/error.cpp:100 -msgid "Failed to determine property name from path %1, namespace %2" -msgstr "" - -#: src/error.cpp:101 -msgid "Schema namespace %1 is not registered with the XMP Toolkit" -msgstr "" - -#: src/error.cpp:102 -msgid "No namespace registered for prefix `%1'" -msgstr "" - -#: src/error.cpp:103 -msgid "" -"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" -"%1', `%2', `%3'" -msgstr "" - -#: src/error.cpp:104 -msgid "Invalid XmpText type `%1'" -msgstr "" - -#: src/error.cpp:105 -msgid "TIFF directory %1 has too many entries" -msgstr "" - -#: src/error.cpp:106 -msgid "Multiple TIFF array element tags %1 in one directory" -msgstr "" - -#: src/error.cpp:107 -msgid "TIFF array element tag %1 has wrong type" -msgstr "" - -#: src/error.cpp:108 -msgid "%1 has invalid XMP value type `%2'" -msgstr "" - -#: src/exiv2.cpp:212 -msgid "Copyright (C) 2004-2012 Andreas Huggel.\n" -msgstr "" - -#: src/exiv2.cpp:214 -msgid "" -"This program is free software; you can redistribute it and/or\n" -"modify it under the terms of the GNU General Public License\n" -"as published by the Free Software Foundation; either version 2\n" -"of the License, or (at your option) any later version.\n" -msgstr "" - -#: src/exiv2.cpp:219 -msgid "" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -msgstr "" - -#: src/exiv2.cpp:224 -msgid "" -"You should have received a copy of the GNU General Public\n" -"License along with this program; if not, write to the Free\n" -"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" -"Boston, MA 02110-1301 USA\n" -msgstr "" - -#: src/exiv2.cpp:232 -msgid "Usage:" -msgstr "" - -#: src/exiv2.cpp:233 -msgid "" -"[ options ] [ action ] file ...\n" -"\n" -msgstr "" - -#: src/exiv2.cpp:234 -msgid "Manipulate the Exif metadata of images.\n" -msgstr "" - -#: src/exiv2.cpp:240 -msgid "" -"\n" -"Actions:\n" -msgstr "" - -#: src/exiv2.cpp:241 -msgid "" -" ad | adjust Adjust Exif timestamps by the given time. This action\n" -" requires at least one of the -a, -Y, -O or -D options.\n" -msgstr "" - -#: src/exiv2.cpp:243 -msgid " pr | print Print image metadata.\n" -msgstr "" - -#: src/exiv2.cpp:244 -msgid " rm | delete Delete image metadata from the files.\n" -msgstr "" - -#: src/exiv2.cpp:245 -msgid "" -" in | insert Insert metadata from corresponding *.exv files.\n" -" Use option -S to change the suffix of the input files.\n" -msgstr "" - -#: src/exiv2.cpp:247 -msgid "" -" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" -msgstr "" - -#: src/exiv2.cpp:248 -msgid "" -" mv | rename Rename files and/or set file timestamps according to the\n" -" Exif create timestamp. The filename format can be set with\n" -" -r format, timestamp options are controlled with -t and -T.\n" -msgstr "" - -#: src/exiv2.cpp:251 -msgid "" -" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" -" IPTC metadata of image files or set the JPEG comment.\n" -" Requires option -c, -m or -M.\n" -msgstr "" - -#: src/exiv2.cpp:254 -msgid "" -" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" -" Exif tag.\n" -msgstr "" - -#: src/exiv2.cpp:256 -msgid "" -" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" -" character encoding can be specified with the -n option.\n" -msgstr "" - -#: src/exiv2.cpp:258 -msgid "" -"\n" -"Options:\n" -msgstr "" - -#: src/exiv2.cpp:259 -msgid " -h Display this help and exit.\n" -msgstr "" - -#: src/exiv2.cpp:260 -msgid " -V Show the program version and exit.\n" -msgstr "" - -#: src/exiv2.cpp:261 -msgid " -v Be verbose during the program run.\n" -msgstr "" - -#: src/exiv2.cpp:262 -msgid "" -" -q Silence warnings and error messages during the program run " -"(quiet).\n" -msgstr "" - -#: src/exiv2.cpp:263 -msgid "" -" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" -msgstr "" - -#: src/exiv2.cpp:264 -msgid " -b Show large binary values.\n" -msgstr "" - -#: src/exiv2.cpp:265 -msgid " -u Show unknown tags.\n" -msgstr "" - -#: src/exiv2.cpp:266 -msgid " -g key Only output info for this key (grep).\n" -msgstr "" - -#: src/exiv2.cpp:267 -msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" -msgstr "" - -#: src/exiv2.cpp:268 -msgid " -k Preserve file timestamps (keep).\n" -msgstr "" - -#: src/exiv2.cpp:269 -msgid "" -" -t Also set the file timestamp in 'rename' action (overrides -k).\n" -msgstr "" - -#: src/exiv2.cpp:270 -msgid "" -" -T Only set the file timestamp in 'rename' action, do not rename\n" -" the file (overrides -k).\n" -msgstr "" - -#: src/exiv2.cpp:272 -msgid " -f Do not prompt before overwriting existing files (force).\n" -msgstr "" - -#: src/exiv2.cpp:273 -msgid " -F Do not prompt before renaming files (Force).\n" -msgstr "" - -#: src/exiv2.cpp:274 -msgid "" -" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" -" is only used with the 'adjust' action.\n" -msgstr "" - -#: src/exiv2.cpp:276 -msgid " -Y yrs Year adjustment with the 'adjust' action.\n" -msgstr "" - -#: src/exiv2.cpp:277 -msgid " -O mon Month adjustment with the 'adjust' action.\n" -msgstr "" - -#: src/exiv2.cpp:278 -msgid " -D day Day adjustment with the 'adjust' action.\n" -msgstr "" - -#: src/exiv2.cpp:279 -msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" -msgstr "" - -#: src/exiv2.cpp:280 -msgid " s : print a summary of the Exif metadata (the default)\n" -msgstr "" - -#: src/exiv2.cpp:281 -msgid "" -" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" -msgstr "" - -#: src/exiv2.cpp:282 -msgid " t : interpreted (translated) Exif data (-PEkyct)\n" -msgstr "" - -#: src/exiv2.cpp:283 -msgid " v : plain Exif data values (-PExgnycv)\n" -msgstr "" - -#: src/exiv2.cpp:284 -msgid " h : hexdump of the Exif data (-PExgnycsh)\n" -msgstr "" - -#: src/exiv2.cpp:285 -msgid " i : IPTC data values (-PIkyct)\n" -msgstr "" - -#: src/exiv2.cpp:286 -msgid " x : XMP properties (-PXkyct)\n" -msgstr "" - -#: src/exiv2.cpp:287 src/exiv2.cpp:310 -msgid " c : JPEG comment\n" -msgstr "" - -#: src/exiv2.cpp:288 -msgid " p : list available previews\n" -msgstr "" - -#: src/exiv2.cpp:289 -msgid "" -" -P flgs Print flags for fine control of tag lists ('print' action):\n" -msgstr "" - -#: src/exiv2.cpp:290 -msgid " E : include Exif tags in the list\n" -msgstr "" - -#: src/exiv2.cpp:291 -msgid " I : IPTC datasets\n" -msgstr "" - -#: src/exiv2.cpp:292 -msgid " X : XMP properties\n" -msgstr "" - -#: src/exiv2.cpp:293 -msgid " x : print a column with the tag number\n" -msgstr "" - -#: src/exiv2.cpp:294 -msgid " g : group name\n" -msgstr "" - -#: src/exiv2.cpp:295 -msgid " k : key\n" -msgstr "" - -#: src/exiv2.cpp:296 -msgid " l : tag label\n" -msgstr "" - -#: src/exiv2.cpp:297 -msgid " n : tag name\n" -msgstr "" - -#: src/exiv2.cpp:298 -msgid " y : type\n" -msgstr "" - -#: src/exiv2.cpp:299 -msgid " c : number of components (count)\n" -msgstr "" - -#: src/exiv2.cpp:300 -msgid " s : size in bytes\n" -msgstr "" - -#: src/exiv2.cpp:301 -msgid " v : plain data value\n" -msgstr "" - -#: src/exiv2.cpp:302 -msgid " t : interpreted (translated) data\n" -msgstr "" - -#: src/exiv2.cpp:303 -msgid " h : hexdump of the data\n" -msgstr "" - -#: src/exiv2.cpp:304 -msgid "" -" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" -msgstr "" - -#: src/exiv2.cpp:305 -msgid " a : all supported metadata (the default)\n" -msgstr "" - -#: src/exiv2.cpp:306 -msgid " e : Exif section\n" -msgstr "" - -#: src/exiv2.cpp:307 -msgid " t : Exif thumbnail only\n" -msgstr "" - -#: src/exiv2.cpp:308 -msgid " i : IPTC data\n" -msgstr "" - -#: src/exiv2.cpp:309 -msgid " x : XMP packet\n" -msgstr "" - -#: src/exiv2.cpp:311 -msgid "" -" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" -" the same as those for the -d option, plus a modifier:\n" -" X : Insert metadata from an XMP sidecar file .xmp\n" -" Only JPEG thumbnails can be inserted, they need to be named\n" -" -thumb.jpg\n" -msgstr "" - -#: src/exiv2.cpp:316 -msgid "" -" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" -" are the same as those for the -d option, plus a target to " -"extract\n" -" preview images and a modifier to generate an XMP sidecar file:\n" -" p[[, ...]] : Extract preview images.\n" -" X : Extract metadata to an XMP sidecar file .xmp\n" -msgstr "" - -#: src/exiv2.cpp:321 -msgid "" -" -r fmt Filename format for the 'rename' action. The format string\n" -" follows strftime(3). The following keywords are supported:\n" -msgstr "" - -#: src/exiv2.cpp:323 -msgid " :basename: - original filename without extension\n" -msgstr "" - -#: src/exiv2.cpp:324 -msgid "" -" :dirname: - name of the directory holding the original file\n" -msgstr "" - -#: src/exiv2.cpp:325 -msgid " :parentname: - name of parent directory\n" -msgstr "" - -#: src/exiv2.cpp:326 -msgid " Default filename format is " -msgstr "" - -#: src/exiv2.cpp:328 -msgid " -c txt JPEG comment string to set in the image.\n" -msgstr "" - -#: src/exiv2.cpp:329 -msgid "" -" -m file Command file for the modify action. The format for commands is\n" -" set|add|del [[] ].\n" -msgstr "" - -#: src/exiv2.cpp:331 -msgid "" -" -M cmd Command line for the modify action. The format for the\n" -" commands is the same as that of the lines of a command file.\n" -msgstr "" - -#: src/exiv2.cpp:333 -msgid "" -" -l dir Location (directory) for files to be inserted from or extracted " -"to.\n" -msgstr "" - -#: src/exiv2.cpp:334 -msgid "" -" -S .suf Use suffix .suf for source files for insert command.\n" -"\n" -msgstr "" - -#: src/exiv2.cpp:371 src/exiv2.cpp:401 src/exiv2.cpp:436 src/exiv2.cpp:495 -#: src/exiv2.cpp:682 -msgid "Option" -msgstr "" - -#: src/exiv2.cpp:372 -msgid "requires an argument\n" -msgstr "" - -#: src/exiv2.cpp:376 -msgid "Unrecognized option" -msgstr "" - -#: src/exiv2.cpp:382 -msgid "getopt returned unexpected character code" -msgstr "" - -#: src/exiv2.cpp:402 -msgid "Invalid argument" -msgstr "" - -#: src/exiv2.cpp:427 src/exiv2.cpp:480 -msgid "Ignoring surplus option" -msgstr "" - -#: src/exiv2.cpp:437 src/exiv2.cpp:497 src/exiv2.cpp:683 -msgid "is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:452 -msgid "Ignoring surplus option -a" -msgstr "" - -#: src/exiv2.cpp:458 -msgid "Error parsing -a option argument" -msgstr "" - -#: src/exiv2.cpp:465 -msgid "Option -a is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:487 -msgid "Error parsing" -msgstr "" - -#: src/exiv2.cpp:489 -msgid "option argument" -msgstr "" - -#: src/exiv2.cpp:520 -msgid "Unrecognized print mode" -msgstr "" - -#: src/exiv2.cpp:528 -msgid "Ignoring surplus option -p" -msgstr "" - -#: src/exiv2.cpp:532 -msgid "Option -p is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:563 -msgid "Unrecognized print item" -msgstr "" - -#: src/exiv2.cpp:572 -msgid "Ignoring surplus option -P" -msgstr "" - -#: src/exiv2.cpp:576 -msgid "Option -P is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:603 -msgid "Option -d is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:631 -msgid "Option -e is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:659 -msgid "Option -i is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:700 -msgid "Action adjust is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:709 -msgid "Action print is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:718 -msgid "Action delete is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:729 -msgid "Action extract is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:740 -msgid "Action insert is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:749 -msgid "Action rename is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:758 -msgid "Action modify is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:767 -msgid "Action fixiso is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:776 -msgid "Action fixcom is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:800 -msgid "An action must be specified\n" -msgstr "" - -#: src/exiv2.cpp:809 -msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" -msgstr "" - -#: src/exiv2.cpp:815 -msgid "Modify action requires at least one -c, -m or -M option\n" -msgstr "" - -#: src/exiv2.cpp:819 -msgid "At least one file is required\n" -msgstr "" - -#: src/exiv2.cpp:825 -msgid "Error parsing -m option arguments\n" -msgstr "" - -#: src/exiv2.cpp:832 -msgid "Error parsing -M option arguments\n" -msgstr "" - -#: src/exiv2.cpp:843 -msgid "-l option can only be used with extract or insert actions\n" -msgstr "" - -#: src/exiv2.cpp:848 -msgid "-S option can only be used with insert action\n" -msgstr "" - -#: src/exiv2.cpp:853 -msgid "-t option can only be used with rename action\n" -msgstr "" - -#: src/exiv2.cpp:858 -msgid "-T option can only be used with rename action\n" -msgstr "" - -#: src/exiv2.cpp:938 -msgid "Unrecognized " -msgstr "" - -#: src/exiv2.cpp:939 -msgid "target" -msgstr "" - -#: src/exiv2.cpp:965 -msgid "Invalid preview number" -msgstr "" - -#: src/exiv2.cpp:997 -msgid "Failed to open command file for reading\n" -msgstr "" - -#: src/exiv2.cpp:1010 -msgid "line" -msgstr "" - -#: src/exiv2.cpp:1033 -msgid "-M option" -msgstr "" - -#: src/exiv2.cpp:1054 src/exiv2.cpp:1113 src/exiv2.cpp:1125 -msgid "Invalid command line" -msgstr "" - -#: src/exiv2.cpp:1061 -msgid "Invalid command" -msgstr "" - -#: src/exiv2.cpp:1093 -msgid "Invalid key" -msgstr "" - -#: src/fujimn.cpp:62 -msgid "Soft mode 1" -msgstr "" - -#: src/fujimn.cpp:63 -msgid "Soft mode 2" -msgstr "" - -#: src/fujimn.cpp:65 -msgid "Hard mode 1" -msgstr "" - -#: src/fujimn.cpp:66 -msgid "Hard mode 2" -msgstr "" - -#: src/fujimn.cpp:72 src/minoltamn.cpp:219 src/minoltamn.cpp:683 -#: src/minoltamn.cpp:869 src/minoltamn.cpp:1193 src/minoltamn.cpp:2094 -#: src/nikonmn.cpp:447 src/panasonicmn.cpp:65 src/pentaxmn.cpp:312 -#: src/sonymn.cpp:165 src/tags.cpp:1428 -msgid "Daylight" -msgstr "" - -#: src/fujimn.cpp:74 -msgid "Fluorescent (daylight)" -msgstr "" - -#: src/fujimn.cpp:75 -msgid "Fluorescent (warm white)" -msgstr "" - -#: src/fujimn.cpp:76 -msgid "Fluorescent (cool white)" -msgstr "" - -#: src/fujimn.cpp:77 src/nikonmn.cpp:448 src/sonymn.cpp:170 -msgid "Incandescent" -msgstr "" - -#: src/fujimn.cpp:87 src/fujimn.cpp:88 -msgid "None (black & white)" -msgstr "" - -#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 -msgid "Red-eye reduction" -msgstr "" - -#: src/fujimn.cpp:119 src/tags.cpp:1504 src/tags.cpp:1505 -msgid "Night scene" -msgstr "" - -#: src/fujimn.cpp:120 src/pentaxmn.cpp:496 src/pentaxmn.cpp:503 -#: src/sonymn.cpp:518 -msgid "Program AE" -msgstr "" - -#: src/fujimn.cpp:121 -msgid "Natural light" -msgstr "" - -#: src/fujimn.cpp:122 -msgid "Anti-blur" -msgstr "" - -#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 -#: src/minoltamn.cpp:1888 src/minoltamn.cpp:2037 src/olympusmn.cpp:108 -#: src/panasonicmn.cpp:130 src/pentaxmn.cpp:481 src/sonymn.cpp:479 -#: src/sonymn.cpp:525 -msgid "Sunset" -msgstr "" - -#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:485 -msgid "Museum" -msgstr "" - -#: src/fujimn.cpp:125 src/panasonicmn.cpp:117 -msgid "Party" -msgstr "" - -#: src/fujimn.cpp:126 -msgid "Flower" -msgstr "" - -#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 -#: src/minoltamn.cpp:2035 src/pentaxmn.cpp:480 -msgid "Text" -msgstr "" - -#: src/fujimn.cpp:128 -msgid "Natural light & flash" -msgstr "" - -#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:519 -msgid "Aperture-priority AE" -msgstr "" - -#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:520 -msgid "Shutter speed priority AE" -msgstr "" - -#: src/fujimn.cpp:142 -msgid "No flash & flash" -msgstr "" - -#: src/fujimn.cpp:148 -msgid "Chrome" -msgstr "" - -#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 -#: src/minoltamn.cpp:1936 src/panasonicmn.cpp:211 -msgid "Wide" -msgstr "" - -#: src/fujimn.cpp:160 -msgid "F0/Standard" -msgstr "" - -#: src/fujimn.cpp:161 -msgid "F1/Studio portrait" -msgstr "" - -#: src/fujimn.cpp:162 -msgid "F2/Fujichrome" -msgstr "" - -#: src/fujimn.cpp:163 -msgid "F3/Studio portrait Ex" -msgstr "" - -#: src/fujimn.cpp:164 -msgid "F4/Velvia" -msgstr "" - -#: src/fujimn.cpp:169 -msgid "Auto (100-400%)" -msgstr "" - -#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 -#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2056 -#: src/olympusmn.cpp:74 src/panasonicmn.cpp:58 -msgid "Raw" -msgstr "" - -#: src/fujimn.cpp:171 -msgid "Standard (100%)" -msgstr "" - -#: src/fujimn.cpp:172 -msgid "Wide mode 1 (230%)" -msgstr "" - -#: src/fujimn.cpp:173 -msgid "Wide mode 2 (400%)" -msgstr "" - -#: src/fujimn.cpp:174 -msgid "Film simulation mode" -msgstr "" - -#: src/fujimn.cpp:179 src/nikonmn.cpp:213 src/nikonmn.cpp:524 -#: src/nikonmn.cpp:646 src/nikonmn.cpp:691 src/nikonmn.cpp:843 -#: src/nikonmn.cpp:867 src/nikonmn.cpp:888 src/nikonmn.cpp:1001 -#: src/nikonmn.cpp:1023 src/nikonmn.cpp:1043 src/nikonmn.cpp:1063 -#: src/nikonmn.cpp:1076 src/nikonmn.cpp:1135 src/nikonmn.cpp:1195 -#: src/nikonmn.cpp:1225 src/nikonmn.cpp:1245 src/nikonmn.cpp:1258 -#: src/nikonmn.cpp:1271 src/nikonmn.cpp:1284 src/nikonmn.cpp:1297 -#: src/nikonmn.cpp:1310 src/nikonmn.cpp:1323 src/nikonmn.cpp:1342 -#: src/nikonmn.cpp:1367 src/panasonicmn.cpp:335 src/pentaxmn.cpp:865 -#: src/properties.cpp:470 -msgid "Version" -msgstr "" - -#: src/fujimn.cpp:180 -msgid "Fujifilm Makernote version" -msgstr "" - -#: src/fujimn.cpp:183 src/panasonicmn.cpp:250 -msgid "" -"This number is unique, and contains the date of manufacture, but is not the " -"same as the number printed on the camera body." -msgstr "" - -#: src/fujimn.cpp:187 src/nikonmn.cpp:223 src/nikonmn.cpp:460 -#: src/nikonmn.cpp:527 src/olympusmn.cpp:199 -msgid "Image quality setting" -msgstr "" - -#: src/fujimn.cpp:195 src/nikonmn.cpp:422 -msgid "Color" -msgstr "" - -#: src/fujimn.cpp:196 -msgid "Chroma saturation setting" -msgstr "" - -#: src/fujimn.cpp:198 -msgid "Tone" -msgstr "" - -#: src/fujimn.cpp:202 -msgid "Flash firing mode setting" -msgstr "" - -#: src/fujimn.cpp:204 -msgid "Flash Strength" -msgstr "" - -#: src/fujimn.cpp:205 -msgid "Flash firing strength compensation setting" -msgstr "" - -#: src/fujimn.cpp:208 -msgid "Macro mode setting" -msgstr "" - -#: src/fujimn.cpp:211 -msgid "Focusing mode setting" -msgstr "" - -#: src/fujimn.cpp:216 -msgid "Slow Sync" -msgstr "" - -#: src/fujimn.cpp:217 -msgid "Slow synchro mode setting" -msgstr "" - -#: src/fujimn.cpp:219 src/olympusmn.cpp:690 src/olympusmn.cpp:891 -msgid "Picture Mode" -msgstr "" - -#: src/fujimn.cpp:220 -msgid "Picture mode setting" -msgstr "" - -#: src/fujimn.cpp:226 -msgid "Continuous shooting or auto bracketing setting" -msgstr "" - -#: src/fujimn.cpp:228 src/panasonicmn.cpp:256 src/sonymn.cpp:414 -msgid "Sequence Number" -msgstr "" - -#: src/fujimn.cpp:229 src/olympusmn.cpp:1158 src/panasonicmn.cpp:256 -msgid "Sequence number" -msgstr "" - -#: src/fujimn.cpp:234 -msgid "FinePix Color" -msgstr "" - -#: src/fujimn.cpp:235 -msgid "Fuji FinePix color setting" -msgstr "" - -#: src/fujimn.cpp:237 -msgid "Blur Warning" -msgstr "" - -#: src/fujimn.cpp:238 -msgid "Blur warning status" -msgstr "" - -#: src/fujimn.cpp:240 -msgid "Focus Warning" -msgstr "" - -#: src/fujimn.cpp:241 -msgid "Auto Focus warning status" -msgstr "" - -#: src/fujimn.cpp:243 -msgid "Exposure Warning" -msgstr "" - -#: src/fujimn.cpp:244 -msgid "Auto exposure warning status" -msgstr "" - -#: src/fujimn.cpp:246 -msgid "Dynamic Range" -msgstr "" - -#: src/fujimn.cpp:247 -msgid "Dynamic range" -msgstr "" - -#: src/fujimn.cpp:249 src/panasonicmn.cpp:273 -msgid "Film Mode" -msgstr "" - -#: src/fujimn.cpp:250 src/panasonicmn.cpp:273 -msgid "Film mode" -msgstr "" - -#: src/fujimn.cpp:252 -msgid "Dynamic Range Setting" -msgstr "" - -#: src/fujimn.cpp:253 -msgid "Dynamic range settings" -msgstr "" - -#: src/fujimn.cpp:255 -msgid "Development Dynamic Range" -msgstr "" - -#: src/fujimn.cpp:256 -msgid "Development dynamic range" -msgstr "" - -#: src/fujimn.cpp:258 -msgid "Minimum Focal Length" -msgstr "" - -#: src/fujimn.cpp:259 -msgid "Minimum focal length" -msgstr "" - -#: src/fujimn.cpp:261 -msgid "Maximum Focal Length" -msgstr "" - -#: src/fujimn.cpp:262 -msgid "Maximum focal length" -msgstr "" - -#: src/fujimn.cpp:264 -msgid "Maximum Aperture at Mininimum Focal" -msgstr "" - -#: src/fujimn.cpp:265 -msgid "Maximum aperture at mininimum focal" -msgstr "" - -#: src/fujimn.cpp:267 -msgid "Maximum Aperture at Maxinimum Focal" -msgstr "" - -#: src/fujimn.cpp:268 -msgid "Maximum aperture at maxinimum focal" -msgstr "" - -#: src/fujimn.cpp:270 src/properties.cpp:577 src/tags.cpp:1759 -msgid "File Source" -msgstr "" - -#: src/fujimn.cpp:271 -msgid "File source" -msgstr "" - -#: src/fujimn.cpp:273 -msgid "Order Number" -msgstr "" - -#: src/fujimn.cpp:274 -msgid "Order number" -msgstr "" - -#: src/fujimn.cpp:276 -msgid "Frame Number" -msgstr "" - -#: src/fujimn.cpp:277 src/pentaxmn.cpp:977 src/pentaxmn.cpp:978 -msgid "Frame number" -msgstr "" - -#: src/fujimn.cpp:281 -msgid "Unknown FujiMakerNote tag" -msgstr "" - -#: src/minoltamn.cpp:56 -msgid "Natural Color" -msgstr "" - -#: src/minoltamn.cpp:58 src/minoltamn.cpp:1885 -msgid "Vivid Color" -msgstr "" - -#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 -msgid "Solarization" -msgstr "" - -#: src/minoltamn.cpp:60 src/minoltamn.cpp:1891 -msgid "AdobeRGB" -msgstr "" - -#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:611 -#: src/olympusmn.cpp:853 src/panasonicmn.cpp:198 src/pentaxmn.cpp:702 -msgid "Natural" -msgstr "" - -#: src/minoltamn.cpp:64 -msgid "Natural sRGB" -msgstr "" - -#: src/minoltamn.cpp:65 -msgid "Natural+ sRGB" -msgstr "" - -#: src/minoltamn.cpp:67 -msgid "Evening" -msgstr "" - -#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2040 -#: src/sonymn.cpp:526 -msgid "Night Portrait" -msgstr "" - -#: src/minoltamn.cpp:75 src/minoltamn.cpp:2057 -msgid "Super Fine" -msgstr "" - -#: src/minoltamn.cpp:79 src/minoltamn.cpp:2003 src/minoltamn.cpp:2061 -msgid "Extra Fine" -msgstr "" - -#: src/minoltamn.cpp:90 -msgid "Makernote Version" -msgstr "" - -#: src/minoltamn.cpp:91 -msgid "String 'MLT0' (not null terminated)" -msgstr "" - -#: src/minoltamn.cpp:93 -msgid "Camera Settings (Std Old)" -msgstr "" - -#: src/minoltamn.cpp:94 -msgid "" -"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" -msgstr "" - -#: src/minoltamn.cpp:96 -msgid "Camera Settings (Std New)" -msgstr "" - -#: src/minoltamn.cpp:97 -msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" -msgstr "" - -#: src/minoltamn.cpp:99 -msgid "Camera Settings (7D)" -msgstr "" - -#: src/minoltamn.cpp:100 -msgid "Camera Settings (for Dynax 7D model)" -msgstr "" - -#: src/minoltamn.cpp:102 -msgid "Image Stabilization Data" -msgstr "" - -#: src/minoltamn.cpp:103 -msgid "Image stabilization data" -msgstr "" - -#: src/minoltamn.cpp:107 -msgid "WB Info A100" -msgstr "" - -#: src/minoltamn.cpp:108 -msgid "White balance information for the Sony DSLR-A100" -msgstr "" - -#: src/minoltamn.cpp:111 -msgid "Compressed Image Size" -msgstr "" - -#: src/minoltamn.cpp:112 -msgid "Compressed image size" -msgstr "" - -#: src/minoltamn.cpp:115 -msgid "Jpeg thumbnail 640x480 pixels" -msgstr "" - -#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 -msgid "Thumbnail Offset" -msgstr "" - -#: src/minoltamn.cpp:118 -msgid "Offset of the thumbnail" -msgstr "" - -#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 -msgid "Thumbnail Length" -msgstr "" - -#: src/minoltamn.cpp:121 -msgid "Size of the thumbnail" -msgstr "" - -#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:573 -#: src/olympusmn.cpp:252 src/olympusmn.cpp:684 src/panasonicmn.cpp:282 -#: src/sonymn.cpp:363 src/sonymn.cpp:364 -msgid "Scene Mode" -msgstr "" - -#: src/minoltamn.cpp:128 src/minoltamn.cpp:1406 src/nikonmn.cpp:219 -#: src/nikonmn.cpp:462 src/nikonmn.cpp:526 src/panasonicmn.cpp:263 -#: src/sonymn.cpp:381 src/sonymn.cpp:382 -msgid "Color Mode" -msgstr "" - -#: src/minoltamn.cpp:129 src/minoltamn.cpp:1407 src/nikonmn.cpp:220 -#: src/nikonmn.cpp:463 src/nikonmn.cpp:526 src/panasonicmn.cpp:263 -msgid "Color mode" -msgstr "" - -#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 -#: src/minoltamn.cpp:990 src/panasonicmn.cpp:236 src/sonymn.cpp:274 -msgid "Image Quality" -msgstr "" - -#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 -msgid "0x0103" -msgstr "" - -#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:671 -#: src/sonymn.cpp:277 -msgid "Flash Exposure Compensation" -msgstr "" - -#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:278 -msgid "Flash exposure compensation in EV" -msgstr "" - -#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:280 -#: src/sonymn.cpp:281 -msgid "Teleconverter Model" -msgstr "" - -#: src/minoltamn.cpp:150 -msgid "RAW+JPG Recording" -msgstr "" - -#: src/minoltamn.cpp:151 -msgid "RAW and JPG files recording" -msgstr "" - -#: src/minoltamn.cpp:153 src/sonymn.cpp:366 src/sonymn.cpp:367 -msgid "Zone Matching" -msgstr "" - -#: src/minoltamn.cpp:154 -msgid "Zone matching" -msgstr "" - -#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1039 -#: src/minoltamn.cpp:1476 src/minoltamn.cpp:1578 -msgid "Color temperature" -msgstr "" - -#: src/minoltamn.cpp:159 src/sonymn.cpp:375 -msgid "Lens ID" -msgstr "" - -#: src/minoltamn.cpp:160 src/sonymn.cpp:376 -msgid "Lens identifier" -msgstr "" - -#: src/minoltamn.cpp:162 src/minoltamn.cpp:1478 src/minoltamn.cpp:1580 -#: src/sonymn.cpp:360 -msgid "Color Compensation Filter" -msgstr "" - -#: src/minoltamn.cpp:163 src/sonymn.cpp:361 -msgid "Color Compensation Filter: negative is green, positive is magenta" -msgstr "" - -#: src/minoltamn.cpp:165 src/minoltamn.cpp:1472 src/sonymn.cpp:283 -#: src/sonymn.cpp:563 src/sonymn.cpp:564 -msgid "White Balance Fine Tune" -msgstr "" - -#: src/minoltamn.cpp:166 src/sonymn.cpp:284 -msgid "White Balance Fine Tune Value" -msgstr "" - -#: src/minoltamn.cpp:168 -msgid "Image Stabilization A100" -msgstr "" - -#: src/minoltamn.cpp:169 -msgid "Image Stabilization for the Sony DSLR-A100" -msgstr "" - -#: src/minoltamn.cpp:173 -msgid "Camera Settings (5D)" -msgstr "" - -#: src/minoltamn.cpp:174 -msgid "Camera Settings (for Dynax 5D model)" -msgstr "" - -#: src/minoltamn.cpp:180 src/nikonmn.cpp:607 src/olympusmn.cpp:258 -#: src/panasonicmn.cpp:279 src/sonymn.cpp:295 -msgid "Print IM" -msgstr "" - -#: src/minoltamn.cpp:181 src/nikonmn.cpp:607 src/olympusmn.cpp:259 -#: src/panasonicmn.cpp:279 src/sonymn.cpp:296 -msgid "PrintIM information" -msgstr "" - -#: src/minoltamn.cpp:183 -msgid "Camera Settings (Z1)" -msgstr "" - -#: src/minoltamn.cpp:184 -msgid "Camera Settings (for Z1, DImage X, and F100 models)" -msgstr "" - -#: src/minoltamn.cpp:188 -msgid "Unknown Minolta MakerNote tag" -msgstr "" - -#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 -#: src/panasonicmn.cpp:107 src/sigmamn.cpp:155 src/sonymn.cpp:111 -#: src/tags.cpp:1404 -msgid "Aperture priority" -msgstr "" - -#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 -#: src/sigmamn.cpp:156 src/sonymn.cpp:112 src/tags.cpp:1405 -msgid "Shutter priority" -msgstr "" - -#: src/minoltamn.cpp:209 src/minoltamn.cpp:1122 -msgid "Fill flash" -msgstr "" - -#: src/minoltamn.cpp:211 src/minoltamn.cpp:1120 -msgid "Rear flash sync" -msgstr "" - -#: src/minoltamn.cpp:212 src/minoltamn.cpp:1121 -msgid "Wireless" -msgstr "" - -#: src/minoltamn.cpp:224 -msgid "Fluorescent 2" -msgstr "" - -#: src/minoltamn.cpp:231 -msgid "Full size" -msgstr "" - -#: src/minoltamn.cpp:243 -msgid "Super fine" -msgstr "" - -#: src/minoltamn.cpp:247 -msgid "Extra fine" -msgstr "" - -#: src/minoltamn.cpp:252 src/minoltamn.cpp:1099 src/minoltamn.cpp:1148 -#: src/sonymn.cpp:447 -msgid "Single Frame" -msgstr "" - -#: src/minoltamn.cpp:254 src/minoltamn.cpp:1150 -msgid "Self-timer" -msgstr "" - -#: src/minoltamn.cpp:255 -msgid "Bracketing" -msgstr "" - -#: src/minoltamn.cpp:256 -msgid "Interval" -msgstr "" - -#: src/minoltamn.cpp:257 -msgid "UHS continuous" -msgstr "" - -#: src/minoltamn.cpp:258 -msgid "HS continuous" -msgstr "" - -#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1127 -#: src/sonymn.cpp:468 src/tags.cpp:1419 -msgid "Multi-segment" -msgstr "" - -#: src/minoltamn.cpp:264 src/minoltamn.cpp:1128 src/sonymn.cpp:469 -#: src/tags.cpp:1416 -msgid "Center weighted average" -msgstr "" - -#: src/minoltamn.cpp:271 -msgid "Electronic magnification" -msgstr "" - -#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:1951 -#: src/nikonmn.cpp:100 src/nikonmn.cpp:793 src/nikonmn.cpp:808 -#: src/pentaxmn.cpp:216 -msgid "Top" -msgstr "" - -#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:234 -msgid "Top-right" -msgstr "" - -#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:240 -msgid "Bottom-right" -msgstr "" - -#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:1955 -#: src/nikonmn.cpp:101 src/nikonmn.cpp:794 src/nikonmn.cpp:809 -#: src/pentaxmn.cpp:224 -msgid "Bottom" -msgstr "" - -#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:238 -msgid "Bottom-left" -msgstr "" - -#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:232 -msgid "Top-left" -msgstr "" - -#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:368 -#: src/tags.cpp:1521 -msgid "Hard" -msgstr "" - -#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:366 -#: src/tags.cpp:1520 -msgid "Soft" -msgstr "" - -#: src/minoltamn.cpp:313 src/panasonicmn.cpp:105 -msgid "Night portrait" -msgstr "" - -#: src/minoltamn.cpp:315 -msgid "Sports action" -msgstr "" - -#: src/minoltamn.cpp:344 -msgid "Time-lapse movie" -msgstr "" - -#: src/minoltamn.cpp:349 -msgid "Standard form" -msgstr "" - -#: src/minoltamn.cpp:350 -msgid "Data form" -msgstr "" - -#: src/minoltamn.cpp:355 -msgid "Natural color" -msgstr "" - -#: src/minoltamn.cpp:356 src/panasonicmn.cpp:70 src/panasonicmn.cpp:148 -msgid "Black and white" -msgstr "" - -#: src/minoltamn.cpp:357 -msgid "Vivid color" -msgstr "" - -#: src/minoltamn.cpp:364 -msgid "No zone" -msgstr "" - -#: src/minoltamn.cpp:365 -msgid "Center zone (horizontal orientation)" -msgstr "" - -#: src/minoltamn.cpp:366 -msgid "Center zone (vertical orientation)" -msgstr "" - -#: src/minoltamn.cpp:367 -msgid "Left zone" -msgstr "" - -#: src/minoltamn.cpp:368 -msgid "Right zone" -msgstr "" - -#: src/minoltamn.cpp:373 src/olympusmn.cpp:999 -msgid "Auto focus" -msgstr "" - -#: src/minoltamn.cpp:379 -msgid "Wide focus (normal)" -msgstr "" - -#: src/minoltamn.cpp:380 -msgid "Spot focus" -msgstr "" - -#: src/minoltamn.cpp:385 src/properties.cpp:452 src/sigmamn.cpp:86 -#: src/sigmamn.cpp:87 -msgid "Exposure" -msgstr "" - -#: src/minoltamn.cpp:388 -msgid "Filter" -msgstr "" - -#: src/minoltamn.cpp:393 -msgid "Not embedded" -msgstr "" - -#: src/minoltamn.cpp:394 -msgid "Embedded" -msgstr "" - -#: src/minoltamn.cpp:403 -msgid "Text + ID#" -msgstr "" - -#: src/minoltamn.cpp:408 -msgid "ADI (Advanced Distance Integration)" -msgstr "" - -#: src/minoltamn.cpp:409 -msgid "Pre-flash TTl" -msgstr "" - -#: src/minoltamn.cpp:410 -msgid "Manual flash control" -msgstr "" - -#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:984 -#: src/minoltamn.cpp:1352 src/olympusmn.cpp:659 src/properties.cpp:581 -#: src/sigmamn.cpp:74 src/sonymn.cpp:393 src/sonymn.cpp:394 src/tags.cpp:1780 -msgid "Exposure Mode" -msgstr "" - -#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 -#: src/olympusmn.cpp:670 src/pentaxmn.cpp:896 -msgid "Flash mode" -msgstr "" - -#: src/minoltamn.cpp:506 src/minoltamn.cpp:1428 src/olympusmn.cpp:700 -#: src/pentaxmn.cpp:991 src/pentaxmn.cpp:992 src/sigmamn.cpp:60 -msgid "Drive mode" -msgstr "" - -#: src/minoltamn.cpp:512 -msgid "ISO Value" -msgstr "" - -#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1023 -#: src/minoltamn.cpp:1367 src/properties.cpp:548 src/tags.cpp:782 -#: src/tags.cpp:1542 -msgid "Exposure Time" -msgstr "" - -#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1026 -#: src/minoltamn.cpp:1370 src/minoltamn.cpp:1371 src/tags.cpp:783 -#: src/tags.cpp:1545 -msgid "FNumber" -msgstr "" - -#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1027 -msgid "The F-Number" -msgstr "" - -#: src/minoltamn.cpp:520 src/olympusmn.cpp:663 -msgid "Macro Mode" -msgstr "" - -#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1044 -msgid "Exposure Compensation" -msgstr "" - -#: src/minoltamn.cpp:529 -msgid "Bracket Step" -msgstr "" - -#: src/minoltamn.cpp:530 -msgid "Bracket step" -msgstr "" - -#: src/minoltamn.cpp:532 -msgid "Interval Length" -msgstr "" - -#: src/minoltamn.cpp:533 -msgid "Interval length" -msgstr "" - -#: src/minoltamn.cpp:535 -msgid "Interval Number" -msgstr "" - -#: src/minoltamn.cpp:536 -msgid "Interval number" -msgstr "" - -#: src/minoltamn.cpp:541 src/nikonmn.cpp:252 src/nikonmn.cpp:564 -#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1371 src/olympusmn.cpp:303 -#: src/olympusmn.cpp:1007 -msgid "Focus Distance" -msgstr "" - -#: src/minoltamn.cpp:542 src/nikonmn.cpp:1346 src/nikonmn.cpp:1371 -#: src/olympusmn.cpp:1007 -msgid "Focus distance" -msgstr "" - -#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1002 -msgid "Flash Fired" -msgstr "" - -#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1003 -msgid "Flash fired" -msgstr "" - -#: src/minoltamn.cpp:547 -msgid "Minolta Date" -msgstr "" - -#: src/minoltamn.cpp:548 -msgid "Minolta date" -msgstr "" - -#: src/minoltamn.cpp:550 -msgid "Minolta Time" -msgstr "" - -#: src/minoltamn.cpp:551 -msgid "Minolta time" -msgstr "" - -#: src/minoltamn.cpp:556 -msgid "File Number Memory" -msgstr "" - -#: src/minoltamn.cpp:557 -msgid "File number memory" -msgstr "" - -#: src/minoltamn.cpp:559 -msgid "Last Image Number" -msgstr "" - -#: src/minoltamn.cpp:560 -msgid "Last image number" -msgstr "" - -#: src/minoltamn.cpp:562 -msgid "Color Balance Red" -msgstr "" - -#: src/minoltamn.cpp:563 -msgid "Color balance red" -msgstr "" - -#: src/minoltamn.cpp:565 -msgid "Color Balance Green" -msgstr "" - -#: src/minoltamn.cpp:566 -msgid "Color balance green" -msgstr "" - -#: src/minoltamn.cpp:568 -msgid "Color Balance Blue" -msgstr "" - -#: src/minoltamn.cpp:569 -msgid "Color balance blue" -msgstr "" - -#: src/minoltamn.cpp:580 -msgid "Subject Program" -msgstr "" - -#: src/minoltamn.cpp:581 -msgid "Subject program" -msgstr "" - -#: src/minoltamn.cpp:586 src/nikonmn.cpp:542 -msgid "ISO Settings" -msgstr "" - -#: src/minoltamn.cpp:587 src/minoltamn.cpp:1398 src/nikonmn.cpp:542 -msgid "ISO setting" -msgstr "" - -#: src/minoltamn.cpp:589 -msgid "Minolta Model" -msgstr "" - -#: src/minoltamn.cpp:590 -msgid "Minolta model" -msgstr "" - -#: src/minoltamn.cpp:592 -msgid "Interval Mode" -msgstr "" - -#: src/minoltamn.cpp:593 -msgid "Interval mode" -msgstr "" - -#: src/minoltamn.cpp:595 -msgid "Folder Name" -msgstr "" - -#: src/minoltamn.cpp:596 -msgid "Folder name" -msgstr "" - -#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 -msgid "ColorMode" -msgstr "" - -#: src/minoltamn.cpp:601 src/minoltamn.cpp:1204 src/pentaxmn.cpp:462 -msgid "Color Filter" -msgstr "" - -#: src/minoltamn.cpp:602 -msgid "Color filter" -msgstr "" - -#: src/minoltamn.cpp:604 -msgid "Black and White Filter" -msgstr "" - -#: src/minoltamn.cpp:605 -msgid "Black and white filter" -msgstr "" - -#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1013 -msgid "Internal Flash" -msgstr "" - -#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:698 -#: src/olympusmn.cpp:276 src/properties.cpp:438 src/sonymn.cpp:602 -#: src/sonymn.cpp:603 src/tags.cpp:1630 -msgid "Brightness" -msgstr "" - -#: src/minoltamn.cpp:613 -msgid "Spot Focus Point X" -msgstr "" - -#: src/minoltamn.cpp:614 -msgid "Spot focus point X" -msgstr "" - -#: src/minoltamn.cpp:616 -msgid "Spot Focus Point Y" -msgstr "" - -#: src/minoltamn.cpp:617 -msgid "Spot focus point Y" -msgstr "" - -#: src/minoltamn.cpp:619 -msgid "Wide Focus Zone" -msgstr "" - -#: src/minoltamn.cpp:620 -msgid "Wide focus zone" -msgstr "" - -#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1036 -#: src/minoltamn.cpp:1380 src/nikonmn.cpp:232 src/nikonmn.cpp:475 -#: src/nikonmn.cpp:530 src/olympusmn.cpp:301 src/olympusmn.cpp:664 -#: src/panasonicmn.cpp:240 src/pentaxmn.cpp:899 -msgid "Focus mode" -msgstr "" - -#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1000 -msgid "Focus area" -msgstr "" - -#: src/minoltamn.cpp:628 -msgid "DEC Switch Position" -msgstr "" - -#: src/minoltamn.cpp:629 -msgid "DEC switch position" -msgstr "" - -#: src/minoltamn.cpp:631 -msgid "Color Profile" -msgstr "" - -#: src/minoltamn.cpp:632 -msgid "Color profile" -msgstr "" - -#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 -msgid "Data Imprint" -msgstr "" - -#: src/minoltamn.cpp:637 src/minoltamn.cpp:1421 -msgid "Flash Metering" -msgstr "" - -#: src/minoltamn.cpp:638 src/minoltamn.cpp:1422 -msgid "Flash metering" -msgstr "" - -#: src/minoltamn.cpp:642 -msgid "Unknown Minolta Camera Settings tag" -msgstr "" - -#: src/minoltamn.cpp:660 -msgid "Program-shift A" -msgstr "" - -#: src/minoltamn.cpp:661 -msgid "Program-shift S" -msgstr "" - -#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 -msgid "Raw+Jpeg" -msgstr "" - -#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/pentaxmn.cpp:322 -msgid "Kelvin" -msgstr "" - -#: src/minoltamn.cpp:695 -msgid "Single-shot AF" -msgstr "" - -#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1371 -msgid "Continuous AF" -msgstr "" - -#: src/minoltamn.cpp:698 -msgid "Automatic AF" -msgstr "" - -#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 -msgid "sRGB (Natural)" -msgstr "" - -#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 -msgid "sRGB (Natural+)" -msgstr "" - -#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2019 -#: src/panasonicmn.cpp:190 -msgid "Horizontal (normal)" -msgstr "" - -#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2020 -#: src/panasonicmn.cpp:191 -msgid "Rotate 90 CW" -msgstr "" - -#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2021 -#: src/panasonicmn.cpp:192 -msgid "Rotate 270 CW" -msgstr "" - -#: src/minoltamn.cpp:756 -msgid "AF Points" -msgstr "" - -#: src/minoltamn.cpp:757 -msgid "AF points" -msgstr "" - -#: src/minoltamn.cpp:771 src/minoltamn.cpp:1011 src/minoltamn.cpp:1409 -#: src/nikonmn.cpp:551 src/olympusmn.cpp:683 src/olympusmn.cpp:802 -#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 src/properties.cpp:532 -#: src/sigmamn.cpp:83 src/tags.cpp:1684 -msgid "Color Space" -msgstr "" - -#: src/minoltamn.cpp:772 src/minoltamn.cpp:1012 src/minoltamn.cpp:1410 -#: src/nikonmn.cpp:551 src/olympusmn.cpp:683 src/olympusmn.cpp:817 -#: src/olympusmn.cpp:888 src/pentaxmn.cpp:995 src/pentaxmn.cpp:996 -#: src/sigmamn.cpp:84 -msgid "Color space" -msgstr "" - -#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1029 -#: src/minoltamn.cpp:1047 src/minoltamn.cpp:1457 -msgid "Free Memory Card Images" -msgstr "" - -#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1030 -#: src/minoltamn.cpp:1048 src/minoltamn.cpp:1458 -msgid "Free memory card images" -msgstr "" - -#: src/minoltamn.cpp:789 -msgid "Hue" -msgstr "" - -#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1041 -#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1571 src/minoltamn.cpp:1572 -#: src/panasonicmn.cpp:261 src/sonymn.cpp:638 src/sonymn.cpp:639 -#: src/sonymn.cpp:711 src/sonymn.cpp:712 -msgid "Rotation" -msgstr "" - -#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1065 -#: src/tags.cpp:835 -msgid "Image Number" -msgstr "" - -#: src/minoltamn.cpp:808 src/minoltamn.cpp:1069 src/minoltamn.cpp:1494 -#: src/nikonmn.cpp:579 src/olympusmn.cpp:439 src/olympusmn.cpp:685 -#: src/olympusmn.cpp:819 src/olympusmn.cpp:889 src/olympusmn.cpp:974 -#: src/panasonicmn.cpp:258 src/pentaxmn.cpp:1024 src/pentaxmn.cpp:1025 -msgid "Noise reduction" -msgstr "" - -#: src/minoltamn.cpp:817 -msgid "Zone Matching On" -msgstr "" - -#: src/minoltamn.cpp:818 -msgid "Zone matching on" -msgstr "" - -#: src/minoltamn.cpp:822 -msgid "Unknown Minolta Camera Settings 7D tag" -msgstr "" - -#: src/minoltamn.cpp:840 src/sonymn.cpp:521 -msgid "Program Shift A" -msgstr "" - -#: src/minoltamn.cpp:841 src/sonymn.cpp:522 -msgid "Program Shift S" -msgstr "" - -#: src/minoltamn.cpp:845 src/minoltamn.cpp:1889 src/minoltamn.cpp:2044 -#: src/sonymn.cpp:480 -msgid "Night View/Portrait" -msgstr "" - -#: src/minoltamn.cpp:895 -msgid "200 (Zone Matching High)" -msgstr "" - -#: src/minoltamn.cpp:896 -msgid "80 (Zone Matching Low)" -msgstr "" - -#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 -msgid "Adobe RGB (ICC)" -msgstr "" - -#: src/minoltamn.cpp:918 -msgid "Central" -msgstr "" - -#: src/minoltamn.cpp:919 -msgid "Up" -msgstr "" - -#: src/minoltamn.cpp:920 -msgid "Up right" -msgstr "" - -#: src/minoltamn.cpp:922 -msgid "Down right" -msgstr "" - -#: src/minoltamn.cpp:923 -msgid "Down" -msgstr "" - -#: src/minoltamn.cpp:924 -msgid "Down left" -msgstr "" - -#: src/minoltamn.cpp:926 -msgid "Up left" -msgstr "" - -#: src/minoltamn.cpp:932 -msgid "Selection" -msgstr "" - -#: src/minoltamn.cpp:947 -msgid "Natural+" -msgstr "" - -#: src/minoltamn.cpp:949 -msgid "Wind Scene" -msgstr "" - -#: src/minoltamn.cpp:950 -msgid "Evening Scene" -msgstr "" - -#: src/minoltamn.cpp:996 src/nikonmn.cpp:1345 src/nikonmn.cpp:1370 -msgid "Focus Position" -msgstr "" - -#: src/minoltamn.cpp:997 src/nikonmn.cpp:1345 src/nikonmn.cpp:1370 -msgid "Focus position" -msgstr "" - -#: src/minoltamn.cpp:999 -msgid "Focus Area" -msgstr "" - -#: src/minoltamn.cpp:1032 -msgid "Exposure Revision" -msgstr "" - -#: src/minoltamn.cpp:1033 -msgid "Exposure revision" -msgstr "" - -#: src/minoltamn.cpp:1050 src/minoltamn.cpp:1051 -msgid "Rotation2" -msgstr "" - -#: src/minoltamn.cpp:1056 src/minoltamn.cpp:1057 -msgid "Picture Finish" -msgstr "" - -#: src/minoltamn.cpp:1059 -msgid "Exposure Manual Bias" -msgstr "" - -#: src/minoltamn.cpp:1060 -msgid "Exposure manual bias" -msgstr "" - -#: src/minoltamn.cpp:1062 src/panasonicmn.cpp:241 src/sonymn.cpp:399 -#: src/sonymn.cpp:400 -msgid "AF Mode" -msgstr "" - -#: src/minoltamn.cpp:1063 src/panasonicmn.cpp:241 -msgid "AF mode" -msgstr "" - -#: src/minoltamn.cpp:1083 -msgid "Unknown Minolta Camera Settings 5D tag" -msgstr "" - -#: src/minoltamn.cpp:1096 src/sonymn.cpp:449 -msgid "Self-timer 10 sec" -msgstr "" - -#: src/minoltamn.cpp:1098 src/sonymn.cpp:450 -msgid "Self-timer 2 sec" -msgstr "" - -#: src/minoltamn.cpp:1100 src/sonymn.cpp:453 -msgid "White Balance Bracketing Low" -msgstr "" - -#: src/minoltamn.cpp:1101 -msgid "White Balance Bracketing High" -msgstr "" - -#: src/minoltamn.cpp:1102 -msgid "Single-frame Bracketing Low" -msgstr "" - -#: src/minoltamn.cpp:1103 -msgid "Continuous Bracketing Low" -msgstr "" - -#: src/minoltamn.cpp:1104 -msgid "Single-frame Bracketing High" -msgstr "" - -#: src/minoltamn.cpp:1105 -msgid "Continuous Bracketing High" -msgstr "" - -#: src/minoltamn.cpp:1136 src/sonymn.cpp:158 -msgid "Advanced" -msgstr "" - -#: src/minoltamn.cpp:1151 src/minoltamn.cpp:1433 src/sonymn.cpp:451 -msgid "Continuous Bracketing" -msgstr "" - -#: src/minoltamn.cpp:1152 -msgid "Single-Frame Bracketing" -msgstr "" - -#: src/minoltamn.cpp:1153 src/minoltamn.cpp:1439 src/sonymn.cpp:225 -msgid "White Balance Bracketing" -msgstr "" - -#: src/minoltamn.cpp:1183 src/minoltamn.cpp:1186 src/nikonmn.cpp:446 -msgid "Preset" -msgstr "" - -#: src/minoltamn.cpp:1185 src/minoltamn.cpp:1188 src/minoltamn.cpp:2093 -msgid "Color Temperature/Color Filter" -msgstr "" - -#: src/minoltamn.cpp:1203 src/pentaxmn.cpp:1018 src/properties.cpp:465 -msgid "Temperature" -msgstr "" - -#: src/minoltamn.cpp:1209 -msgid "Setup" -msgstr "" - -#: src/minoltamn.cpp:1210 -msgid "Recall" -msgstr "" - -#: src/minoltamn.cpp:1215 -msgid "Ok" -msgstr "" - -#: src/minoltamn.cpp:1216 -msgid "Error" -msgstr "" - -#: src/minoltamn.cpp:1228 -msgid "Image and Information" -msgstr "" - -#: src/minoltamn.cpp:1229 -msgid "Image Only" -msgstr "" - -#: src/minoltamn.cpp:1230 -msgid "Image and Histogram" -msgstr "" - -#: src/minoltamn.cpp:1236 -msgid "Fill Flash" -msgstr "" - -#: src/minoltamn.cpp:1247 -msgid "Focus Hold" -msgstr "" - -#: src/minoltamn.cpp:1248 -msgid "DOF Preview" -msgstr "" - -#: src/minoltamn.cpp:1253 -msgid "Hold" -msgstr "" - -#: src/minoltamn.cpp:1254 -msgid "Toggle" -msgstr "" - -#: src/minoltamn.cpp:1255 -msgid "Spot Hold" -msgstr "" - -#: src/minoltamn.cpp:1256 -msgid "Spot Toggle" -msgstr "" - -#: src/minoltamn.cpp:1261 src/olympusmn.cpp:267 -msgid "Shutter Speed" -msgstr "" - -#: src/minoltamn.cpp:1267 -msgid "Ambient and Flash" -msgstr "" - -#: src/minoltamn.cpp:1268 -msgid "Ambient Only" -msgstr "" - -#: src/minoltamn.cpp:1273 -msgid "0.3 seconds" -msgstr "" - -#: src/minoltamn.cpp:1274 -msgid "0.6 seconds" -msgstr "" - -#: src/minoltamn.cpp:1280 src/nikonmn.cpp:292 src/nikonmn.cpp:972 -#: src/nikonmn.cpp:1418 -msgid "Automatic" -msgstr "" - -#: src/minoltamn.cpp:1286 src/minoltamn.cpp:1292 -msgid "Auto-rotate" -msgstr "" - -#: src/minoltamn.cpp:1287 -msgid "Horizontal" -msgstr "" - -#: src/minoltamn.cpp:1293 -msgid "Manual Rotate" -msgstr "" - -#: src/minoltamn.cpp:1298 -msgid "Within Range" -msgstr "" - -#: src/minoltamn.cpp:1299 -msgid "Under/Over Range" -msgstr "" - -#: src/minoltamn.cpp:1300 -msgid "Out of Range" -msgstr "" - -#: src/minoltamn.cpp:1305 -msgid "Not Indicated" -msgstr "" - -#: src/minoltamn.cpp:1306 -msgid "Under Scale" -msgstr "" - -#: src/minoltamn.cpp:1307 -msgid "Bottom of Scale" -msgstr "" - -#: src/minoltamn.cpp:1325 -msgid "Top of Scale" -msgstr "" - -#: src/minoltamn.cpp:1326 -msgid "Over Scale" -msgstr "" - -#: src/minoltamn.cpp:1331 -msgid "AM" -msgstr "" - -#: src/minoltamn.cpp:1332 src/olympusmn.cpp:512 src/olympusmn.cpp:1374 -#: src/olympusmn.cpp:1384 -msgid "MF" -msgstr "" - -#: src/minoltamn.cpp:1338 -msgid "Built-in" -msgstr "" - -#: src/minoltamn.cpp:1344 src/pentaxmn.cpp:347 src/pentaxmn.cpp:360 -msgid "Very Low" -msgstr "" - -#: src/minoltamn.cpp:1346 -msgid "Half Full" -msgstr "" - -#: src/minoltamn.cpp:1347 -msgid "Sufficient Power Remaining" -msgstr "" - -#: src/minoltamn.cpp:1355 -msgid "Exposure Compensation Setting" -msgstr "" - -#: src/minoltamn.cpp:1356 -msgid "Exposure compensation setting" -msgstr "" - -#: src/minoltamn.cpp:1358 -msgid "High Speed Sync" -msgstr "" - -#: src/minoltamn.cpp:1359 -msgid "High speed sync" -msgstr "" - -#: src/minoltamn.cpp:1361 -msgid "Manual Exposure Time" -msgstr "" - -#: src/minoltamn.cpp:1362 -msgid "Manual exposure time" -msgstr "" - -#: src/minoltamn.cpp:1364 src/minoltamn.cpp:1365 -msgid "Manual FNumber" -msgstr "" - -#: src/minoltamn.cpp:1373 -msgid "Drive Mode 2" -msgstr "" - -#: src/minoltamn.cpp:1374 -msgid "Drive mode 2" -msgstr "" - -#: src/minoltamn.cpp:1382 src/minoltamn.cpp:1383 src/sonymn.cpp:572 -#: src/sonymn.cpp:573 src/sonymn.cpp:678 src/sonymn.cpp:679 -msgid "Local AF Area Point" -msgstr "" - -#: src/minoltamn.cpp:1385 src/minoltamn.cpp:1386 src/nikonmn.cpp:822 -#: src/nikonmn.cpp:845 src/sonymn.cpp:569 src/sonymn.cpp:570 -#: src/sonymn.cpp:675 src/sonymn.cpp:676 -msgid "AF Area Mode" -msgstr "" - -#: src/minoltamn.cpp:1388 src/minoltamn.cpp:1389 src/sonymn.cpp:605 -#: src/sonymn.cpp:606 src/sonymn.cpp:705 src/sonymn.cpp:706 -msgid "FlashMode" -msgstr "" - -#: src/minoltamn.cpp:1391 -msgid "Flash Exposure Comp Setting" -msgstr "" - -#: src/minoltamn.cpp:1392 -msgid "Flash exposure compensation setting" -msgstr "" - -#: src/minoltamn.cpp:1397 src/sonymn.cpp:578 src/sonymn.cpp:579 -#: src/sonymn.cpp:684 src/sonymn.cpp:685 -msgid "ISO Setting" -msgstr "" - -#: src/minoltamn.cpp:1400 src/minoltamn.cpp:1401 -msgid "Zone Matching Mode" -msgstr "" - -#: src/minoltamn.cpp:1403 src/sonymn.cpp:581 src/sonymn.cpp:582 -#: src/sonymn.cpp:687 src/sonymn.cpp:688 -msgid "Dynamic Range Optimizer Mode" -msgstr "" - -#: src/minoltamn.cpp:1404 -msgid "Dynamic range optimizer mode" -msgstr "" - -#: src/minoltamn.cpp:1424 src/minoltamn.cpp:1425 src/sonymn.cpp:609 -#: src/sonymn.cpp:610 -msgid "Priority Setup Shutter Release" -msgstr "" - -#: src/minoltamn.cpp:1430 -msgid "Self Timer Time" -msgstr "" - -#: src/minoltamn.cpp:1431 -msgid "Self timer time" -msgstr "" - -#: src/minoltamn.cpp:1434 -msgid "Continuous bracketing" -msgstr "" - -#: src/minoltamn.cpp:1436 -msgid "Single Frame Bracketing" -msgstr "" - -#: src/minoltamn.cpp:1437 -msgid "Single frame bracketing" -msgstr "" - -#: src/minoltamn.cpp:1440 src/nikonmn.cpp:156 src/nikonmn.cpp:167 -msgid "White balance bracketing" -msgstr "" - -#: src/minoltamn.cpp:1442 -msgid "White Balance Setting" -msgstr "" - -#: src/minoltamn.cpp:1445 -msgid "Preset White Balance" -msgstr "" - -#: src/minoltamn.cpp:1446 -msgid "Preset white balance" -msgstr "" - -#: src/minoltamn.cpp:1448 -msgid "Color Temperature Setting" -msgstr "" - -#: src/minoltamn.cpp:1449 -msgid "Color temperature setting" -msgstr "" - -#: src/minoltamn.cpp:1451 -msgid "Custom WB Setting" -msgstr "" - -#: src/minoltamn.cpp:1452 -msgid "Custom WB setting" -msgstr "" - -#: src/minoltamn.cpp:1454 src/minoltamn.cpp:1455 -msgid "Dynamic Range Optimizer Settings" -msgstr "" - -#: src/minoltamn.cpp:1460 -msgid "Custom WB Red Level" -msgstr "" - -#: src/minoltamn.cpp:1461 -msgid "Custom WB red level" -msgstr "" - -#: src/minoltamn.cpp:1463 -msgid "Custom WB Green Level" -msgstr "" - -#: src/minoltamn.cpp:1464 -msgid "Custom WB green level" -msgstr "" - -#: src/minoltamn.cpp:1466 -msgid "Custom WB Blue Level" -msgstr "" - -#: src/minoltamn.cpp:1467 -msgid "CustomWB blue level" -msgstr "" - -#: src/minoltamn.cpp:1469 src/minoltamn.cpp:1470 -msgid "Custom WB Error" -msgstr "" - -#: src/minoltamn.cpp:1473 -msgid "White balance fine tune" -msgstr "" - -#: src/minoltamn.cpp:1479 -msgid "Color compensation filter" -msgstr "" - -#: src/minoltamn.cpp:1481 src/minoltamn.cpp:1482 src/sonymn.cpp:641 -#: src/sonymn.cpp:642 src/sonymn.cpp:714 src/sonymn.cpp:715 -msgid "Sony Image Size" -msgstr "" - -#: src/minoltamn.cpp:1487 -msgid "Instant Playback Time" -msgstr "" - -#: src/minoltamn.cpp:1488 -msgid "Instant playback time" -msgstr "" - -#: src/minoltamn.cpp:1490 -msgid "Instant Playback Setup" -msgstr "" - -#: src/minoltamn.cpp:1491 -msgid "Instant playback setup" -msgstr "" - -#: src/minoltamn.cpp:1496 -msgid "Eye Start AF" -msgstr "" - -#: src/minoltamn.cpp:1497 -msgid "Eye start AF" -msgstr "" - -#: src/minoltamn.cpp:1499 -msgid "Red Eye Reduction" -msgstr "" - -#: src/minoltamn.cpp:1500 -msgid "Red eye reduction" -msgstr "" - -#: src/minoltamn.cpp:1502 -msgid "Flash Default" -msgstr "" - -#: src/minoltamn.cpp:1503 -msgid "Flash default" -msgstr "" - -#: src/minoltamn.cpp:1505 -msgid "Auto Bracket Order" -msgstr "" - -#: src/minoltamn.cpp:1506 -msgid "Auto bracket order" -msgstr "" - -#: src/minoltamn.cpp:1508 -msgid "Focus Hold Button" -msgstr "" - -#: src/minoltamn.cpp:1509 -msgid "Focus hold button" -msgstr "" - -#: src/minoltamn.cpp:1511 -msgid "AEL Button" -msgstr "" - -#: src/minoltamn.cpp:1512 -msgid "AEL button" -msgstr "" - -#: src/minoltamn.cpp:1514 -msgid "Control Dial Set" -msgstr "" - -#: src/minoltamn.cpp:1515 -msgid "Control dial set" -msgstr "" - -#: src/minoltamn.cpp:1517 -msgid "Exposure Compensation Mode" -msgstr "" - -#: src/minoltamn.cpp:1518 -msgid "Exposure compensation mode" -msgstr "" - -#: src/minoltamn.cpp:1521 -msgid "AF assist" -msgstr "" - -#: src/minoltamn.cpp:1523 -msgid "Card Shutter Lock" -msgstr "" - -#: src/minoltamn.cpp:1524 -msgid "Card shutter lock" -msgstr "" - -#: src/minoltamn.cpp:1526 -msgid "Lens Shutter Lock" -msgstr "" - -#: src/minoltamn.cpp:1527 -msgid "Lens shutter lock" -msgstr "" - -#: src/minoltamn.cpp:1529 -msgid "AF Area Illumination" -msgstr "" - -#: src/minoltamn.cpp:1530 -msgid "AF area illumination" -msgstr "" - -#: src/minoltamn.cpp:1532 -msgid "Monitor Display Off" -msgstr "" - -#: src/minoltamn.cpp:1533 -msgid "Monitor display off" -msgstr "" - -#: src/minoltamn.cpp:1535 -msgid "Record Display" -msgstr "" - -#: src/minoltamn.cpp:1536 -msgid "Record display" -msgstr "" - -#: src/minoltamn.cpp:1538 -msgid "Play Display" -msgstr "" - -#: src/minoltamn.cpp:1539 -msgid "Play display" -msgstr "" - -#: src/minoltamn.cpp:1541 -msgid "Exposure Indicator" -msgstr "" - -#: src/minoltamn.cpp:1542 -msgid "Exposure indicator" -msgstr "" - -#: src/minoltamn.cpp:1544 -msgid "AEL Exposure Indicator" -msgstr "" - -#: src/minoltamn.cpp:1545 -msgid "" -"AEL exposure indicator (also indicates exposure for next shot when " -"bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1547 -msgid "Exposure Bracketing Indicator Last" -msgstr "" - -#: src/minoltamn.cpp:1548 -msgid "" -"Exposure bracketing indicator last (indicator for last shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1550 -msgid "Metering Off Scale Indicator" -msgstr "" - -#: src/minoltamn.cpp:1551 -msgid "" -"Metering off scale indicator (two flashing triangles when under or over " -"metering scale)" -msgstr "" - -#: src/minoltamn.cpp:1553 -msgid "Flash Exposure Indicator" -msgstr "" - -#: src/minoltamn.cpp:1554 -msgid "Flash exposure indicator" -msgstr "" - -#: src/minoltamn.cpp:1556 -msgid "Flash Exposure Indicator Next" -msgstr "" - -#: src/minoltamn.cpp:1557 -msgid "Flash exposure indicator next (indicator for next shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1559 -msgid "Flash Exposure Indicator Last" -msgstr "" - -#: src/minoltamn.cpp:1560 -msgid "Flash exposure indicator last (indicator for last shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1565 -msgid "Focus Mode Switch" -msgstr "" - -#: src/minoltamn.cpp:1566 -msgid "Focus mode switch" -msgstr "" - -#: src/minoltamn.cpp:1568 src/olympusmn.cpp:759 -msgid "Flash Type" -msgstr "" - -#: src/minoltamn.cpp:1569 src/olympusmn.cpp:759 -msgid "Flash type" -msgstr "" - -#: src/minoltamn.cpp:1574 src/olympusmn.cpp:660 -msgid "AE Lock" -msgstr "" - -#: src/minoltamn.cpp:1581 -msgid "Color compensation filter: negative is green, positive is magenta" -msgstr "" - -#: src/minoltamn.cpp:1583 src/tags.cpp:759 -msgid "Battery Level" -msgstr "" - -#: src/minoltamn.cpp:1584 -msgid "Battery level" -msgstr "" - -#: src/minoltamn.cpp:1588 -msgid "Unknown Sony Camera Settings A100 tag" -msgstr "" - -#: src/minoltamn.cpp:1894 src/sonymn.cpp:484 -msgid "Clear" -msgstr "" - -#: src/minoltamn.cpp:1895 src/sonymn.cpp:485 -msgid "Deep" -msgstr "" - -#: src/minoltamn.cpp:1896 src/sonymn.cpp:486 -msgid "Light" -msgstr "" - -#: src/minoltamn.cpp:1897 -msgid "Night View" -msgstr "" - -#: src/minoltamn.cpp:1898 -msgid "Autumn Leaves" -msgstr "" - -#: src/minoltamn.cpp:1937 -msgid "Local" -msgstr "" - -#: src/minoltamn.cpp:1952 -msgid "Top-Right" -msgstr "" - -#: src/minoltamn.cpp:1954 -msgid "Bottom-Right" -msgstr "" - -#: src/minoltamn.cpp:1956 -msgid "Bottom-Left" -msgstr "" - -#: src/minoltamn.cpp:1958 -msgid "Top-Left" -msgstr "" - -#: src/minoltamn.cpp:1959 -msgid "Far-Right" -msgstr "" - -#: src/minoltamn.cpp:1960 -msgid "Far-Left" -msgstr "" - -#: src/minoltamn.cpp:1974 src/sonymn.cpp:89 -msgid "Advanced Auto" -msgstr "" - -#: src/minoltamn.cpp:1975 -msgid "Advanced Level" -msgstr "" - -#: src/minoltamn.cpp:1988 -msgid "AF" -msgstr "" - -#: src/minoltamn.cpp:1989 -msgid "Release" -msgstr "" - -#: src/minoltamn.cpp:2001 -msgid "RAW " -msgstr "" - -#: src/minoltamn.cpp:2002 -msgid "CRAW " -msgstr "" - -#: src/minoltamn.cpp:2005 -msgid "RAW+JPEG" -msgstr "" - -#: src/minoltamn.cpp:2006 -msgid "CRAW+JPEG" -msgstr "" - -#: src/minoltamn.cpp:2062 -msgid "Raw + JPEG" -msgstr "" - -#: src/minoltamn.cpp:2063 -msgid "Compressed Raw" -msgstr "" - -#: src/minoltamn.cpp:2064 -msgid "Compressed Raw + JPEG" -msgstr "" - -#: src/minoltamn.cpp:2077 -msgid "Minolta AF 2x APO (D)" -msgstr "" - -#: src/minoltamn.cpp:2078 -msgid "Minolta AF 2x APO II" -msgstr "" - -#: src/minoltamn.cpp:2079 -msgid "Minolta AF 1.4x APO (D)" -msgstr "" - -#: src/minoltamn.cpp:2080 -msgid "Minolta AF 1.4x APO II" -msgstr "" - -#: src/minoltamn.cpp:2110 -msgid "ISO Setting Used" -msgstr "" - -#: src/minoltamn.cpp:2111 src/olympusmn.cpp:126 src/olympusmn.cpp:1109 -msgid "High Key" -msgstr "" - -#: src/minoltamn.cpp:2112 src/olympusmn.cpp:132 src/olympusmn.cpp:1107 -msgid "Low Key" -msgstr "" - -#: src/nikonmn.cpp:80 -msgid "Extra High" -msgstr "" - -#: src/nikonmn.cpp:86 src/nikonmn.cpp:1560 -msgid "Single area" -msgstr "" - -#: src/nikonmn.cpp:87 src/nikonmn.cpp:1561 -msgid "Dynamic area" -msgstr "" - -#: src/nikonmn.cpp:88 -msgid "Dynamic area, closest subject" -msgstr "" - -#: src/nikonmn.cpp:89 -msgid "Group dynamic" -msgstr "" - -#: src/nikonmn.cpp:90 src/nikonmn.cpp:1564 -msgid "Single area (wide)" -msgstr "" - -#: src/nikonmn.cpp:91 src/nikonmn.cpp:1565 -msgid "Dynamic area (wide)" -msgstr "" - -#: src/nikonmn.cpp:104 src/nikonmn.cpp:797 src/nikonmn.cpp:812 -#: src/pentaxmn.cpp:215 -msgid "Upper-left" -msgstr "" - -#: src/nikonmn.cpp:105 src/nikonmn.cpp:798 src/nikonmn.cpp:813 -#: src/pentaxmn.cpp:217 -msgid "Upper-right" -msgstr "" - -#: src/nikonmn.cpp:106 src/nikonmn.cpp:799 src/nikonmn.cpp:814 -#: src/pentaxmn.cpp:223 -msgid "Lower-left" -msgstr "" - -#: src/nikonmn.cpp:107 src/nikonmn.cpp:800 src/nikonmn.cpp:815 -#: src/pentaxmn.cpp:225 -msgid "Lower-right" -msgstr "" - -#: src/nikonmn.cpp:108 -msgid "Left-most" -msgstr "" - -#: src/nikonmn.cpp:109 -msgid "Right-most" -msgstr "" - -#: src/nikonmn.cpp:143 -msgid "Fire, manual" -msgstr "" - -#: src/nikonmn.cpp:144 -msgid "Fire, external" -msgstr "" - -#: src/nikonmn.cpp:145 -msgid "Fire, commander mode" -msgstr "" - -#: src/nikonmn.cpp:146 -msgid "Fire, TTL mode" -msgstr "" - -#: src/nikonmn.cpp:152 src/nikonmn.cpp:163 -msgid "Delay" -msgstr "" - -#: src/nikonmn.cpp:153 src/nikonmn.cpp:164 -msgid "PC control" -msgstr "" - -#: src/nikonmn.cpp:154 src/nikonmn.cpp:165 -msgid "Exposure bracketing" -msgstr "" - -#: src/nikonmn.cpp:155 -msgid "Auto ISO" -msgstr "" - -#: src/nikonmn.cpp:157 src/nikonmn.cpp:168 -msgid "IR control" -msgstr "" - -#: src/nikonmn.cpp:166 -msgid "Unused LE-NR slowdown" -msgstr "" - -#: src/nikonmn.cpp:174 -msgid "Auto release" -msgstr "" - -#: src/nikonmn.cpp:175 -msgid "Manual release" -msgstr "" - -#: src/nikonmn.cpp:180 -msgid "Lossy (type 1)" -msgstr "" - -#: src/nikonmn.cpp:181 src/tags.cpp:247 -msgid "Uncompressed" -msgstr "" - -#: src/nikonmn.cpp:182 -msgid "Lossless" -msgstr "" - -#: src/nikonmn.cpp:183 -msgid "Lossy (type 2)" -msgstr "" - -#: src/nikonmn.cpp:189 -msgid "B & W" -msgstr "" - -#: src/nikonmn.cpp:191 -msgid "Trim" -msgstr "" - -#: src/nikonmn.cpp:192 -msgid "Small picture" -msgstr "" - -#: src/nikonmn.cpp:193 -msgid "D-Lighting" -msgstr "" - -#: src/nikonmn.cpp:194 -msgid "Red eye" -msgstr "" - -#: src/nikonmn.cpp:195 src/nikonmn.cpp:678 -msgid "Cyanotype" -msgstr "" - -#: src/nikonmn.cpp:196 -msgid "Sky light" -msgstr "" - -#: src/nikonmn.cpp:197 -msgid "Warm tone" -msgstr "" - -#: src/nikonmn.cpp:198 -msgid "Color custom" -msgstr "" - -#: src/nikonmn.cpp:199 -msgid "Image overlay" -msgstr "" - -#: src/nikonmn.cpp:205 -msgid "Minimal" -msgstr "" - -#: src/nikonmn.cpp:214 src/nikonmn.cpp:524 -msgid "Nikon Makernote version" -msgstr "" - -#: src/nikonmn.cpp:216 src/nikonmn.cpp:468 src/nikonmn.cpp:525 -#: src/olympusmn.cpp:270 src/panasonicmn.cpp:344 src/tags.cpp:1583 -msgid "ISO Speed" -msgstr "" - -#: src/nikonmn.cpp:228 src/nikonmn.cpp:529 -msgid "Sharpening" -msgstr "" - -#: src/nikonmn.cpp:229 src/nikonmn.cpp:529 -msgid "Image sharpening setting" -msgstr "" - -#: src/nikonmn.cpp:231 src/nikonmn.cpp:530 -msgid "Focus" -msgstr "" - -#: src/nikonmn.cpp:234 src/nikonmn.cpp:531 -msgid "Flash Setting" -msgstr "" - -#: src/nikonmn.cpp:235 src/nikonmn.cpp:531 -msgid "Flash setting" -msgstr "" - -#: src/nikonmn.cpp:240 src/nikonmn.cpp:538 -msgid "ISO Selection" -msgstr "" - -#: src/nikonmn.cpp:241 src/nikonmn.cpp:538 -msgid "ISO selection" -msgstr "" - -#: src/nikonmn.cpp:243 src/nikonmn.cpp:539 src/panasonicmn.cpp:246 -msgid "Data Dump" -msgstr "" - -#: src/nikonmn.cpp:244 src/nikonmn.cpp:539 src/panasonicmn.cpp:246 -msgid "Data dump" -msgstr "" - -#: src/nikonmn.cpp:246 src/nikonmn.cpp:465 src/nikonmn.cpp:559 -msgid "Image Adjustment" -msgstr "" - -#: src/nikonmn.cpp:247 src/nikonmn.cpp:466 src/nikonmn.cpp:559 -msgid "Image adjustment setting" -msgstr "" - -#: src/nikonmn.cpp:249 src/nikonmn.cpp:483 src/nikonmn.cpp:561 -msgid "Auxiliary Lens" -msgstr "" - -#: src/nikonmn.cpp:250 src/nikonmn.cpp:484 src/nikonmn.cpp:561 -msgid "Auxiliary lens (adapter)" -msgstr "" - -#: src/nikonmn.cpp:253 src/nikonmn.cpp:564 src/olympusmn.cpp:304 -msgid "Manual focus distance" -msgstr "" - -#: src/nikonmn.cpp:256 src/nikonmn.cpp:481 src/nikonmn.cpp:565 -msgid "Digital zoom setting" -msgstr "" - -#: src/nikonmn.cpp:258 -msgid "AF Focus Position" -msgstr "" - -#: src/nikonmn.cpp:259 -msgid "AF focus position information" -msgstr "" - -#: src/nikonmn.cpp:263 -msgid "Unknown Nikon1MakerNote tag" -msgstr "" - -#: src/nikonmn.cpp:290 src/nikonmn.cpp:1416 -msgid "Continuous autofocus" -msgstr "" - -#: src/nikonmn.cpp:291 src/nikonmn.cpp:1417 -msgid "Single autofocus" -msgstr "" - -#: src/nikonmn.cpp:325 src/nikonmn.cpp:506 src/nikonmn.cpp:1517 -msgid "Not used" -msgstr "" - -#: src/nikonmn.cpp:365 -msgid "guess" -msgstr "" - -#: src/nikonmn.cpp:412 -msgid "VGA Basic" -msgstr "" - -#: src/nikonmn.cpp:413 -msgid "VGA Normal" -msgstr "" - -#: src/nikonmn.cpp:414 -msgid "VGA Fine" -msgstr "" - -#: src/nikonmn.cpp:415 -msgid "SXGA Basic" -msgstr "" - -#: src/nikonmn.cpp:416 -msgid "SXGA Normal" -msgstr "" - -#: src/nikonmn.cpp:417 -msgid "SXGA Fine" -msgstr "" - -#: src/nikonmn.cpp:429 -msgid "Bright+" -msgstr "" - -#: src/nikonmn.cpp:430 -msgid "Bright-" -msgstr "" - -#: src/nikonmn.cpp:431 -msgid "Contrast+" -msgstr "" - -#: src/nikonmn.cpp:432 -msgid "Contrast-" -msgstr "" - -#: src/nikonmn.cpp:451 -msgid "Speedlight" -msgstr "" - -#: src/nikonmn.cpp:491 -msgid "Unknown Nikon2MakerNote tag" -msgstr "" - -#: src/nikonmn.cpp:532 src/olympusmn.cpp:282 -msgid "Flash Device" -msgstr "" - -#: src/nikonmn.cpp:532 src/olympusmn.cpp:283 -msgid "Flash device" -msgstr "" - -#: src/nikonmn.cpp:534 src/olympusmn.cpp:249 src/panasonicmn.cpp:248 -msgid "White Balance Bias" -msgstr "" - -#: src/nikonmn.cpp:534 src/olympusmn.cpp:250 -msgid "White balance bias" -msgstr "" - -#: src/nikonmn.cpp:535 src/olympusmn.cpp:932 -msgid "WB RB Levels" -msgstr "" - -#: src/nikonmn.cpp:535 src/olympusmn.cpp:932 -msgid "WB RB levels" -msgstr "" - -#: src/nikonmn.cpp:536 -msgid "Program Shift" -msgstr "" - -#: src/nikonmn.cpp:536 -msgid "Program shift" -msgstr "" - -#: src/nikonmn.cpp:537 -msgid "Exposure Difference" -msgstr "" - -#: src/nikonmn.cpp:537 -msgid "Exposure difference" -msgstr "" - -#: src/nikonmn.cpp:540 src/pentaxmn.cpp:877 -msgid "Pointer to a preview image" -msgstr "" - -#: src/nikonmn.cpp:540 src/pentaxmn.cpp:878 -msgid "Offset to an IFD containing a preview image" -msgstr "" - -#: src/nikonmn.cpp:541 -msgid "Flash Comp" -msgstr "" - -#: src/nikonmn.cpp:541 -msgid "Flash compensation setting" -msgstr "" - -#: src/nikonmn.cpp:543 -msgid "Image Boundary" -msgstr "" - -#: src/nikonmn.cpp:543 -msgid "Image boundary" -msgstr "" - -#: src/nikonmn.cpp:544 -msgid "Flash exposure comp" -msgstr "" - -#: src/nikonmn.cpp:545 -msgid "Flash Bracket Comp" -msgstr "" - -#: src/nikonmn.cpp:545 -msgid "Flash bracket compensation applied" -msgstr "" - -#: src/nikonmn.cpp:546 -msgid "Exposure Bracket Comp" -msgstr "" - -#: src/nikonmn.cpp:546 -msgid "AE bracket compensation applied" -msgstr "" - -#: src/nikonmn.cpp:547 src/olympusmn.cpp:459 -msgid "Image Processing" -msgstr "" - -#: src/nikonmn.cpp:547 src/pentaxmn.cpp:985 src/pentaxmn.cpp:986 -msgid "Image processing" -msgstr "" - -#: src/nikonmn.cpp:548 -msgid "Crop High Speed" -msgstr "" - -#: src/nikonmn.cpp:548 -msgid "Crop high speed" -msgstr "" - -#: src/nikonmn.cpp:549 -msgid "Exposure Tuning" -msgstr "" - -#: src/nikonmn.cpp:549 -msgid "Exposure tuning" -msgstr "" - -#: src/nikonmn.cpp:552 -msgid "VR Info" -msgstr "" - -#: src/nikonmn.cpp:552 -msgid "VR info" -msgstr "" - -#: src/nikonmn.cpp:553 -msgid "Image Authentication" -msgstr "" - -#: src/nikonmn.cpp:553 -msgid "Image authentication" -msgstr "" - -#: src/nikonmn.cpp:554 -msgid "ActiveD-Lighting" -msgstr "" - -#: src/nikonmn.cpp:554 -msgid "ActiveD-lighting" -msgstr "" - -#: src/nikonmn.cpp:555 -msgid "Picture Control" -msgstr "" - -#: src/nikonmn.cpp:555 -msgid " Picture control" -msgstr "" - -#: src/nikonmn.cpp:556 -msgid "World Time" -msgstr "" - -#: src/nikonmn.cpp:556 -msgid "World time" -msgstr "" - -#: src/nikonmn.cpp:557 -msgid "ISO Info" -msgstr "" - -#: src/nikonmn.cpp:557 -msgid "ISO info" -msgstr "" - -#: src/nikonmn.cpp:558 -msgid "Vignette Control" -msgstr "" - -#: src/nikonmn.cpp:558 -msgid "Vignette control" -msgstr "" - -#: src/nikonmn.cpp:560 -msgid "Tone Compensation" -msgstr "" - -#: src/nikonmn.cpp:560 -msgid "Tone compensation" -msgstr "" - -#: src/nikonmn.cpp:566 -msgid "Mode of flash used" -msgstr "" - -#: src/nikonmn.cpp:568 src/panasonicmn.cpp:244 -msgid "Shooting Mode" -msgstr "" - -#: src/nikonmn.cpp:568 src/panasonicmn.cpp:244 src/pentaxmn.cpp:868 -msgid "Shooting mode" -msgstr "" - -#: src/nikonmn.cpp:569 -msgid "Auto Bracket Release" -msgstr "" - -#: src/nikonmn.cpp:569 -msgid "Auto bracket release" -msgstr "" - -#: src/nikonmn.cpp:570 -msgid "Lens FStops" -msgstr "" - -#: src/nikonmn.cpp:571 -msgid "Contrast Curve" -msgstr "" - -#: src/nikonmn.cpp:571 -msgid "Contrast curve" -msgstr "" - -#: src/nikonmn.cpp:572 -msgid "Color Hue" -msgstr "" - -#: src/nikonmn.cpp:572 -msgid "Color hue" -msgstr "" - -#: src/nikonmn.cpp:573 src/olympusmn.cpp:253 src/olympusmn.cpp:684 -#: src/panasonicmn.cpp:282 -msgid "Scene mode" -msgstr "" - -#: src/nikonmn.cpp:574 src/olympusmn.cpp:1076 src/properties.cpp:562 -#: src/tags.cpp:826 src/tags.cpp:1649 -msgid "Light Source" -msgstr "" - -#: src/nikonmn.cpp:574 src/olympusmn.cpp:1076 -msgid "Light source" -msgstr "" - -#: src/nikonmn.cpp:575 -msgid "Shot info" -msgstr "" - -#: src/nikonmn.cpp:576 src/nikonmn.cpp:700 -msgid "Hue Adjustment" -msgstr "" - -#: src/nikonmn.cpp:576 src/nikonmn.cpp:700 -msgid "Hue adjustment" -msgstr "" - -#: src/nikonmn.cpp:577 -msgid "NEF Compression" -msgstr "" - -#: src/nikonmn.cpp:577 -msgid "NEF compression" -msgstr "" - -#: src/nikonmn.cpp:580 src/tags.cpp:898 -msgid "Linearization Table" -msgstr "" - -#: src/nikonmn.cpp:580 -msgid "Linearization table" -msgstr "" - -#: src/nikonmn.cpp:581 -msgid "Color Balance" -msgstr "" - -#: src/nikonmn.cpp:581 -msgid "Color balance" -msgstr "" - -#: src/nikonmn.cpp:582 -msgid "Lens Data" -msgstr "" - -#: src/nikonmn.cpp:582 -msgid "Lens data settings" -msgstr "" - -#: src/nikonmn.cpp:583 -msgid "Raw Image Center" -msgstr "" - -#: src/nikonmn.cpp:583 -msgid "Raw image center" -msgstr "" - -#: src/nikonmn.cpp:584 -msgid "Sensor Pixel Size" -msgstr "" - -#: src/nikonmn.cpp:584 -msgid "Sensor pixel size" -msgstr "" - -#: src/nikonmn.cpp:586 -msgid "Scene Assist" -msgstr "" - -#: src/nikonmn.cpp:586 -msgid "Scene assist" -msgstr "" - -#: src/nikonmn.cpp:587 -msgid "Retouch History" -msgstr "" - -#: src/nikonmn.cpp:587 -msgid "Retouch history" -msgstr "" - -#: src/nikonmn.cpp:589 -msgid "Serial NO" -msgstr "" - -#: src/nikonmn.cpp:589 -msgid "Camera serial number, usually starts with \"NO= \"" -msgstr "" - -#: src/nikonmn.cpp:590 -msgid "Image Data Size" -msgstr "" - -#: src/nikonmn.cpp:590 -msgid "Image data size" -msgstr "" - -#: src/nikonmn.cpp:592 -msgid "Image Count" -msgstr "" - -#: src/nikonmn.cpp:592 -msgid "Image count" -msgstr "" - -#: src/nikonmn.cpp:593 src/nikonmn.cpp:1227 -msgid "Deleted Image Count" -msgstr "" - -#: src/nikonmn.cpp:593 src/nikonmn.cpp:1227 -msgid "Deleted image count" -msgstr "" - -#: src/nikonmn.cpp:594 src/nikonmn.cpp:1064 src/nikonmn.cpp:1077 -#: src/nikonmn.cpp:1137 src/nikonmn.cpp:1197 src/nikonmn.cpp:1233 -msgid "Shutter Count" -msgstr "" - -#: src/nikonmn.cpp:594 -msgid "Number of shots taken by camera" -msgstr "" - -#: src/nikonmn.cpp:595 -msgid "Flash info" -msgstr "" - -#: src/nikonmn.cpp:596 -msgid "Image Optimization" -msgstr "" - -#: src/nikonmn.cpp:596 -msgid "Image optimization" -msgstr "" - -#: src/nikonmn.cpp:598 -msgid "Program Variation" -msgstr "" - -#: src/nikonmn.cpp:598 -msgid "Program variation" -msgstr "" - -#: src/nikonmn.cpp:600 -msgid "AF Response" -msgstr "" - -#: src/nikonmn.cpp:600 -msgid "AF response" -msgstr "" - -#: src/nikonmn.cpp:601 -msgid "Multi exposure" -msgstr "" - -#: src/nikonmn.cpp:602 -msgid "High ISO Noise Reduction" -msgstr "" - -#: src/nikonmn.cpp:603 src/nikonmn.cpp:702 -msgid "Toning effect" -msgstr "" - -#: src/nikonmn.cpp:604 -msgid "AF info 2" -msgstr "" - -#: src/nikonmn.cpp:605 -msgid "File info" -msgstr "" - -#: src/nikonmn.cpp:606 -msgid "AF tune" -msgstr "" - -#: src/nikonmn.cpp:609 -msgid "Capture Data" -msgstr "" - -#: src/nikonmn.cpp:609 -msgid "Capture data" -msgstr "" - -#: src/nikonmn.cpp:610 -msgid "Capture Version" -msgstr "" - -#: src/nikonmn.cpp:610 -msgid "Capture version" -msgstr "" - -#: src/nikonmn.cpp:612 -msgid "Capture Offsets" -msgstr "" - -#: src/nikonmn.cpp:612 -msgid "Capture offsets" -msgstr "" - -#: src/nikonmn.cpp:613 -msgid "Scan IFD" -msgstr "" - -#: src/nikonmn.cpp:614 -msgid "ICC profile" -msgstr "" - -#: src/nikonmn.cpp:615 -msgid "Capture output" -msgstr "" - -#: src/nikonmn.cpp:617 -msgid "Unknown Nikon3MakerNote tag" -msgstr "" - -#: src/nikonmn.cpp:627 src/olympusmn.cpp:65 src/panasonicmn.cpp:140 -#: src/pentaxmn.cpp:298 -msgid "No" -msgstr "" - -#: src/nikonmn.cpp:628 src/olympusmn.cpp:66 src/panasonicmn.cpp:139 -#: src/pentaxmn.cpp:299 -msgid "Yes" -msgstr "" - -#: src/nikonmn.cpp:633 -msgid "Y/M/D" -msgstr "" - -#: src/nikonmn.cpp:634 -msgid "M/D/Y" -msgstr "" - -#: src/nikonmn.cpp:635 -msgid "D/M/Y" -msgstr "" - -#: src/nikonmn.cpp:647 src/nikonmn.cpp:1228 -msgid "Vibration Reduction" -msgstr "" - -#: src/nikonmn.cpp:647 src/nikonmn.cpp:1228 -msgid "Vibration reduction" -msgstr "" - -#: src/nikonmn.cpp:649 -msgid "Unknown Nikon Vibration Reduction Tag" -msgstr "" - -#: src/nikonmn.cpp:659 -msgid "Default Settings" -msgstr "" - -#: src/nikonmn.cpp:660 src/nikonmn.cpp:695 -msgid "Quick Adjust" -msgstr "" - -#: src/nikonmn.cpp:661 -msgid "Full Control" -msgstr "" - -#: src/nikonmn.cpp:682 -msgid "Blue-green" -msgstr "" - -#: src/nikonmn.cpp:684 -msgid "Purple-blue" -msgstr "" - -#: src/nikonmn.cpp:685 -msgid "Red-purple" -msgstr "" - -#: src/nikonmn.cpp:692 src/properties.cpp:980 -msgid "Name" -msgstr "" - -#: src/nikonmn.cpp:693 -msgid "Base" -msgstr "" - -#: src/nikonmn.cpp:694 -msgid "Adjust" -msgstr "" - -#: src/nikonmn.cpp:695 -msgid "Quick adjust" -msgstr "" - -#: src/nikonmn.cpp:701 -msgid "Filter effect" -msgstr "" - -#: src/nikonmn.cpp:703 -msgid "Toning Saturation" -msgstr "" - -#: src/nikonmn.cpp:703 -msgid "Toning saturation" -msgstr "" - -#: src/nikonmn.cpp:705 -msgid "Unknown Nikon Picture Control Tag" -msgstr "" - -#: src/nikonmn.cpp:722 -msgid "AF Fine Tune" -msgstr "" - -#: src/nikonmn.cpp:722 -msgid "AF fine tune" -msgstr "" - -#: src/nikonmn.cpp:723 -msgid "AF Fine Tune Index" -msgstr "" - -#: src/nikonmn.cpp:723 -msgid "AF fine tune index" -msgstr "" - -#: src/nikonmn.cpp:724 -msgid "AF Fine Tune Adjustment" -msgstr "" - -#: src/nikonmn.cpp:724 -msgid "AF fine tune adjustment" -msgstr "" - -#: src/nikonmn.cpp:726 -msgid "Unknown Nikon AF Fine Tune Tag" -msgstr "" - -#: src/nikonmn.cpp:736 -msgid "Timezone" -msgstr "" - -#: src/nikonmn.cpp:737 -msgid "Daylight Savings" -msgstr "" - -#: src/nikonmn.cpp:737 -msgid "Daylight savings" -msgstr "" - -#: src/nikonmn.cpp:738 -msgid "Date Display Format" -msgstr "" - -#: src/nikonmn.cpp:738 -msgid "Date display format" -msgstr "" - -#: src/nikonmn.cpp:740 -msgid "Unknown Nikon World Time Tag" -msgstr "" - -#: src/nikonmn.cpp:751 -msgid "Hi 0.3" -msgstr "" - -#: src/nikonmn.cpp:752 -msgid "Hi 0.5" -msgstr "" - -#: src/nikonmn.cpp:753 -msgid "Hi 0.7" -msgstr "" - -#: src/nikonmn.cpp:754 -msgid "Hi 1.0" -msgstr "" - -#: src/nikonmn.cpp:755 -msgid "Hi 1.3" -msgstr "" - -#: src/nikonmn.cpp:756 -msgid "Hi 1.5" -msgstr "" - -#: src/nikonmn.cpp:757 -msgid "Hi 1.7" -msgstr "" - -#: src/nikonmn.cpp:758 -msgid "Hi 2.0" -msgstr "" - -#: src/nikonmn.cpp:759 -msgid "Lo 0.3" -msgstr "" - -#: src/nikonmn.cpp:760 -msgid "Lo 0.5" -msgstr "" - -#: src/nikonmn.cpp:761 -msgid "Lo 0.7" -msgstr "" - -#: src/nikonmn.cpp:762 -msgid "Lo 1.0" -msgstr "" - -#: src/nikonmn.cpp:768 -msgid "ISO Expansion" -msgstr "" - -#: src/nikonmn.cpp:768 -msgid "ISO expansion" -msgstr "" - -#: src/nikonmn.cpp:769 -msgid "ISO 2" -msgstr "" - -#: src/nikonmn.cpp:770 -msgid "ISO Expansion 2" -msgstr "" - -#: src/nikonmn.cpp:770 -msgid "ISO expansion 2" -msgstr "" - -#: src/nikonmn.cpp:772 -msgid "Unknown Nikon Iso Info Tag" -msgstr "" - -#: src/nikonmn.cpp:782 -msgid "Single Area" -msgstr "" - -#: src/nikonmn.cpp:783 -msgid "Dynamic Area" -msgstr "" - -#: src/nikonmn.cpp:784 -msgid "Dynamic Area, Closest Subject" -msgstr "" - -#: src/nikonmn.cpp:785 -msgid "Group Dynamic" -msgstr "" - -#: src/nikonmn.cpp:786 -msgid "Single Area (wide)" -msgstr "" - -#: src/nikonmn.cpp:787 -msgid "Dynamic Area (wide)" -msgstr "" - -#: src/nikonmn.cpp:795 src/nikonmn.cpp:810 src/pentaxmn.cpp:219 -msgid "Mid-left" -msgstr "" - -#: src/nikonmn.cpp:796 src/nikonmn.cpp:811 src/pentaxmn.cpp:221 -msgid "Mid-right" -msgstr "" - -#: src/nikonmn.cpp:801 src/nikonmn.cpp:816 -msgid "Far Left" -msgstr "" - -#: src/nikonmn.cpp:802 src/nikonmn.cpp:817 -msgid "Far Right" -msgstr "" - -#: src/nikonmn.cpp:822 src/nikonmn.cpp:845 -msgid "AF area mode" -msgstr "" - -#: src/nikonmn.cpp:823 src/olympusmn.cpp:1008 src/pentaxmn.cpp:902 -msgid "AF point" -msgstr "" - -#: src/nikonmn.cpp:824 -msgid "AF Points In Focus" -msgstr "" - -#: src/nikonmn.cpp:824 -msgid "AF points in focus" -msgstr "" - -#: src/nikonmn.cpp:826 -msgid "Unknown Nikon Auto Focus Tag" -msgstr "" - -#: src/nikonmn.cpp:837 -msgid "On (51-point)" -msgstr "" - -#: src/nikonmn.cpp:838 -msgid "On (11-point)" -msgstr "" - -#: src/nikonmn.cpp:844 -msgid "Contrast Detect AF" -msgstr "" - -#: src/nikonmn.cpp:844 -msgid "Contrast detect AF" -msgstr "" - -#: src/nikonmn.cpp:846 -msgid "Phase Detect AF" -msgstr "" - -#: src/nikonmn.cpp:846 -msgid "Phase detect AF" -msgstr "" - -#: src/nikonmn.cpp:847 -msgid "Primary AF Point" -msgstr "" - -#: src/nikonmn.cpp:847 -msgid "Primary AF point" -msgstr "" - -#: src/nikonmn.cpp:849 -msgid "AF Image Width" -msgstr "" - -#: src/nikonmn.cpp:849 -msgid "AF image width" -msgstr "" - -#: src/nikonmn.cpp:850 -msgid "AF Image Height" -msgstr "" - -#: src/nikonmn.cpp:850 -msgid "AF image height" -msgstr "" - -#: src/nikonmn.cpp:851 -msgid "AF Area X Position" -msgstr "" - -#: src/nikonmn.cpp:851 -msgid "AF area x position" -msgstr "" - -#: src/nikonmn.cpp:852 -msgid "AF Area Y Position" -msgstr "" - -#: src/nikonmn.cpp:852 -msgid "AF area y position" -msgstr "" - -#: src/nikonmn.cpp:853 -msgid "AF Area Width" -msgstr "" - -#: src/nikonmn.cpp:853 -msgid "AF area width" -msgstr "" - -#: src/nikonmn.cpp:854 -msgid "AF Area Height" -msgstr "" - -#: src/nikonmn.cpp:854 -msgid "AF area height" -msgstr "" - -#: src/nikonmn.cpp:855 -msgid "Contrast Detect AF In Focus" -msgstr "" - -#: src/nikonmn.cpp:855 -msgid "Contrast detect AF in focus" -msgstr "" - -#: src/nikonmn.cpp:857 -msgid "Unknown Nikon Auto Focus 2 Tag" -msgstr "" - -#: src/nikonmn.cpp:868 -msgid "Directory Number" -msgstr "" - -#: src/nikonmn.cpp:868 -msgid "Directory number" -msgstr "" - -#: src/nikonmn.cpp:871 -msgid "Unknown Nikon File Info Tag" -msgstr "" - -#: src/nikonmn.cpp:882 src/pentaxmn.cpp:542 -msgid "Multiple Exposure" -msgstr "" - -#: src/nikonmn.cpp:883 -msgid "Image Overlay" -msgstr "" - -#: src/nikonmn.cpp:889 -msgid "Multi Exposure Mode" -msgstr "" - -#: src/nikonmn.cpp:889 -msgid "Multi exposure mode" -msgstr "" - -#: src/nikonmn.cpp:890 -msgid "Multi Exposure Shots" -msgstr "" - -#: src/nikonmn.cpp:890 -msgid "Multi exposure shots" -msgstr "" - -#: src/nikonmn.cpp:891 -msgid "Multi Exposure Auto Gain" -msgstr "" - -#: src/nikonmn.cpp:891 -msgid "Multi exposure auto gain" -msgstr "" - -#: src/nikonmn.cpp:893 src/nikonmn.cpp:1013 src/nikonmn.cpp:1033 -#: src/nikonmn.cpp:1053 -msgid "Unknown Nikon Multi Exposure Tag" -msgstr "" - -#: src/nikonmn.cpp:905 src/olympusmn.cpp:143 -msgid "Internal" -msgstr "" - -#: src/nikonmn.cpp:911 -msgid "1.01 (SB-800 or Metz 58 AF-1)" -msgstr "" - -#: src/nikonmn.cpp:912 -msgid "1.03 (SB-800)" -msgstr "" - -#: src/nikonmn.cpp:913 -msgid "2.01 (SB-800)" -msgstr "" - -#: src/nikonmn.cpp:914 -msgid "2.04 (SB-600)" -msgstr "" - -#: src/nikonmn.cpp:915 -msgid "2.05 (SB-600)" -msgstr "" - -#: src/nikonmn.cpp:916 -msgid "3.01 (SU-800 Remote Commander)" -msgstr "" - -#: src/nikonmn.cpp:917 -msgid "4.01 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:918 -msgid "4.02 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:919 -msgid "4.04 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:920 -msgid "5.01 (SB-900)" -msgstr "" - -#: src/nikonmn.cpp:921 -msgid "5.02 (SB-900)" -msgstr "" - -#: src/nikonmn.cpp:927 -msgid "0.1 m" -msgstr "" - -#: src/nikonmn.cpp:928 -msgid "0.2 m" -msgstr "" - -#: src/nikonmn.cpp:929 -msgid "0.3 m" -msgstr "" - -#: src/nikonmn.cpp:930 -msgid "0.4 m" -msgstr "" - -#: src/nikonmn.cpp:931 -msgid "0.5 m" -msgstr "" - -#: src/nikonmn.cpp:932 -msgid "0.6 m" -msgstr "" - -#: src/nikonmn.cpp:933 -msgid "0.7 m" -msgstr "" - -#: src/nikonmn.cpp:934 -msgid "0.8 m" -msgstr "" - -#: src/nikonmn.cpp:935 -msgid "0.9 m" -msgstr "" - -#: src/nikonmn.cpp:936 -msgid "1.0 m" -msgstr "" - -#: src/nikonmn.cpp:937 -msgid "1.1 m" -msgstr "" - -#: src/nikonmn.cpp:938 -msgid "1.3 m" -msgstr "" - -#: src/nikonmn.cpp:939 -msgid "1.4 m" -msgstr "" - -#: src/nikonmn.cpp:940 -msgid "1.6 m" -msgstr "" - -#: src/nikonmn.cpp:941 -msgid "1.8 m" -msgstr "" - -#: src/nikonmn.cpp:942 -msgid "2.0 m" -msgstr "" - -#: src/nikonmn.cpp:943 -msgid "2.2 m" -msgstr "" - -#: src/nikonmn.cpp:944 -msgid "2.5 m" -msgstr "" - -#: src/nikonmn.cpp:945 -msgid "2.8 m" -msgstr "" - -#: src/nikonmn.cpp:946 -msgid "3.2 m" -msgstr "" - -#: src/nikonmn.cpp:947 -msgid "3.6 m" -msgstr "" - -#: src/nikonmn.cpp:948 -msgid "4.0 m" -msgstr "" - -#: src/nikonmn.cpp:949 -msgid "4.5 m" -msgstr "" - -#: src/nikonmn.cpp:950 -msgid "5.0 m" -msgstr "" - -#: src/nikonmn.cpp:951 -msgid "5.6 m" -msgstr "" - -#: src/nikonmn.cpp:952 -msgid "6.3 m" -msgstr "" - -#: src/nikonmn.cpp:953 -msgid "7.1 m" -msgstr "" - -#: src/nikonmn.cpp:954 -msgid "8.0 m" -msgstr "" - -#: src/nikonmn.cpp:955 -msgid "9.0 m" -msgstr "" - -#: src/nikonmn.cpp:956 -msgid "10.0 m" -msgstr "" - -#: src/nikonmn.cpp:957 -msgid "11.0 m" -msgstr "" - -#: src/nikonmn.cpp:958 -msgid "13.0 m" -msgstr "" - -#: src/nikonmn.cpp:959 -msgid "14.0 m" -msgstr "" - -#: src/nikonmn.cpp:960 -msgid "16.0 m" -msgstr "" - -#: src/nikonmn.cpp:961 -msgid "18.0 m" -msgstr "" - -#: src/nikonmn.cpp:962 -msgid "20.0 m" -msgstr "" - -#: src/nikonmn.cpp:969 -msgid "iTTL-BL" -msgstr "" - -#: src/nikonmn.cpp:970 -msgid "iTTL" -msgstr "" - -#: src/nikonmn.cpp:971 -msgid "Auto Aperture" -msgstr "" - -#: src/nikonmn.cpp:973 -msgid "GN (distance priority)" -msgstr "" - -#: src/nikonmn.cpp:975 src/nikonmn.cpp:976 -msgid "Repeating Flash" -msgstr "" - -#: src/nikonmn.cpp:982 -msgid "Bounce Flash" -msgstr "" - -#: src/nikonmn.cpp:983 -msgid "Wide Flash Adapter" -msgstr "" - -#: src/nikonmn.cpp:989 -msgid "FL-GL1" -msgstr "" - -#: src/nikonmn.cpp:990 -msgid "FL-GL2" -msgstr "" - -#: src/nikonmn.cpp:991 -msgid "TN-A1" -msgstr "" - -#: src/nikonmn.cpp:992 -msgid "TN-A2" -msgstr "" - -#: src/nikonmn.cpp:996 -msgid "Amber" -msgstr "" - -#: src/nikonmn.cpp:1002 src/nikonmn.cpp:1024 src/nikonmn.cpp:1044 -msgid "Flash Source" -msgstr "" - -#: src/nikonmn.cpp:1002 src/nikonmn.cpp:1024 src/nikonmn.cpp:1044 -msgid "Flash source" -msgstr "" - -#: src/nikonmn.cpp:1003 src/nikonmn.cpp:1025 -msgid "0x0005" -msgstr "" - -#: src/nikonmn.cpp:1004 src/nikonmn.cpp:1026 src/nikonmn.cpp:1045 -msgid "External Flash Firmware" -msgstr "" - -#: src/nikonmn.cpp:1004 src/nikonmn.cpp:1026 src/nikonmn.cpp:1045 -msgid "External flash firmware" -msgstr "" - -#: src/nikonmn.cpp:1005 src/nikonmn.cpp:1027 src/nikonmn.cpp:1046 -msgid "External Flash Flags" -msgstr "" - -#: src/nikonmn.cpp:1005 src/nikonmn.cpp:1027 src/nikonmn.cpp:1046 -msgid "External flash flags" -msgstr "" - -#: src/nikonmn.cpp:1006 src/nikonmn.cpp:1028 src/nikonmn.cpp:1047 -msgid "Flash Focal Length" -msgstr "" - -#: src/nikonmn.cpp:1006 src/nikonmn.cpp:1028 src/nikonmn.cpp:1047 -msgid "Flash focal length" -msgstr "" - -#: src/nikonmn.cpp:1007 src/nikonmn.cpp:1029 src/nikonmn.cpp:1048 -msgid "Repeating Flash Rate" -msgstr "" - -#: src/nikonmn.cpp:1007 src/nikonmn.cpp:1029 src/nikonmn.cpp:1048 -msgid "Repeating flash rate" -msgstr "" - -#: src/nikonmn.cpp:1008 src/nikonmn.cpp:1030 src/nikonmn.cpp:1049 -msgid "Repeating Flash Count" -msgstr "" - -#: src/nikonmn.cpp:1008 src/nikonmn.cpp:1030 src/nikonmn.cpp:1049 -msgid "Repeating flash count" -msgstr "" - -#: src/nikonmn.cpp:1009 src/nikonmn.cpp:1031 src/nikonmn.cpp:1050 -msgid "Flash GN Distance" -msgstr "" - -#: src/nikonmn.cpp:1009 src/nikonmn.cpp:1031 src/nikonmn.cpp:1050 -msgid "Flash GN distance" -msgstr "" - -#: src/nikonmn.cpp:1010 -msgid "Flash Group A Control Mode" -msgstr "" - -#: src/nikonmn.cpp:1010 -msgid "Flash group a control mode" -msgstr "" - -#: src/nikonmn.cpp:1011 -msgid "Flash Group B Control Mode" -msgstr "" - -#: src/nikonmn.cpp:1011 -msgid "Flash group b control mode" -msgstr "" - -#: src/nikonmn.cpp:1051 -msgid "Flash Color Filter" -msgstr "" - -#: src/nikonmn.cpp:1051 -msgid "Flash color filter" -msgstr "" - -#: src/nikonmn.cpp:1064 src/nikonmn.cpp:1077 src/nikonmn.cpp:1137 -#: src/nikonmn.cpp:1197 src/nikonmn.cpp:1233 src/pentaxmn.cpp:1042 -#: src/pentaxmn.cpp:1043 -msgid "Shutter count" -msgstr "" - -#: src/nikonmn.cpp:1066 -msgid "Unknown Nikon Shot Info D80 Tag" -msgstr "" - -#: src/nikonmn.cpp:1078 src/sonymn.cpp:408 src/sonymn.cpp:409 -msgid "Flash Level" -msgstr "" - -#: src/nikonmn.cpp:1078 -msgid "Flash level" -msgstr "" - -#: src/nikonmn.cpp:1080 -msgid "Unknown Nikon Shot Info D40 Tag" -msgstr "" - -#: src/nikonmn.cpp:1090 src/nikonmn.cpp:1150 -msgid "0" -msgstr "" - -#: src/nikonmn.cpp:1091 src/nikonmn.cpp:1159 -msgid "+1" -msgstr "" - -#: src/nikonmn.cpp:1092 src/nikonmn.cpp:1160 -msgid "+2" -msgstr "" - -#: src/nikonmn.cpp:1093 src/nikonmn.cpp:1161 -msgid "+4" -msgstr "" - -#: src/nikonmn.cpp:1094 src/nikonmn.cpp:1162 -msgid "+8" -msgstr "" - -#: src/nikonmn.cpp:1095 src/nikonmn.cpp:1163 -msgid "+16" -msgstr "" - -#: src/nikonmn.cpp:1096 src/nikonmn.cpp:1164 -msgid "-16" -msgstr "" - -#: src/nikonmn.cpp:1097 src/nikonmn.cpp:1165 -msgid "-8" -msgstr "" - -#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1166 -msgid "-4" -msgstr "" - -#: src/nikonmn.cpp:1099 src/nikonmn.cpp:1167 -msgid "-2" -msgstr "" - -#: src/nikonmn.cpp:1100 src/nikonmn.cpp:1168 -msgid "-1" -msgstr "" - -#: src/nikonmn.cpp:1101 src/nikonmn.cpp:1169 -msgid "+17" -msgstr "" - -#: src/nikonmn.cpp:1102 src/nikonmn.cpp:1170 -msgid "-17" -msgstr "" - -#: src/nikonmn.cpp:1103 src/nikonmn.cpp:1171 -msgid "+9" -msgstr "" - -#: src/nikonmn.cpp:1104 src/nikonmn.cpp:1172 -msgid "+18" -msgstr "" - -#: src/nikonmn.cpp:1105 src/nikonmn.cpp:1173 -msgid "-18" -msgstr "" - -#: src/nikonmn.cpp:1106 src/nikonmn.cpp:1174 -msgid "-9" -msgstr "" - -#: src/nikonmn.cpp:1107 src/nikonmn.cpp:1175 -msgid "+19" -msgstr "" - -#: src/nikonmn.cpp:1108 src/nikonmn.cpp:1176 -msgid "-19" -msgstr "" - -#: src/nikonmn.cpp:1109 src/nikonmn.cpp:1177 -msgid "+5" -msgstr "" - -#: src/nikonmn.cpp:1110 src/nikonmn.cpp:1178 -msgid "+10" -msgstr "" - -#: src/nikonmn.cpp:1111 src/nikonmn.cpp:1179 -msgid "+20" -msgstr "" - -#: src/nikonmn.cpp:1112 src/nikonmn.cpp:1180 -msgid "-20" -msgstr "" - -#: src/nikonmn.cpp:1113 src/nikonmn.cpp:1181 -msgid "-10" -msgstr "" - -#: src/nikonmn.cpp:1114 src/nikonmn.cpp:1182 -msgid "-5" -msgstr "" - -#: src/nikonmn.cpp:1115 src/nikonmn.cpp:1183 -msgid "+11" -msgstr "" - -#: src/nikonmn.cpp:1116 src/nikonmn.cpp:1184 -msgid "-11" -msgstr "" - -#: src/nikonmn.cpp:1117 src/nikonmn.cpp:1185 -msgid "+3" -msgstr "" - -#: src/nikonmn.cpp:1118 src/nikonmn.cpp:1186 -msgid "+6" -msgstr "" - -#: src/nikonmn.cpp:1119 src/nikonmn.cpp:1187 -msgid "+12" -msgstr "" - -#: src/nikonmn.cpp:1120 src/nikonmn.cpp:1188 -msgid "-12" -msgstr "" - -#: src/nikonmn.cpp:1121 src/nikonmn.cpp:1189 -msgid "-6" -msgstr "" - -#: src/nikonmn.cpp:1122 src/nikonmn.cpp:1190 -msgid "-3" -msgstr "" - -#: src/nikonmn.cpp:1123 src/nikonmn.cpp:1151 -msgid "+13" -msgstr "" - -#: src/nikonmn.cpp:1124 src/nikonmn.cpp:1152 -msgid "-13" -msgstr "" - -#: src/nikonmn.cpp:1125 src/nikonmn.cpp:1153 -msgid "+7" -msgstr "" - -#: src/nikonmn.cpp:1126 src/nikonmn.cpp:1154 -msgid "+14" -msgstr "" - -#: src/nikonmn.cpp:1127 src/nikonmn.cpp:1155 -msgid "-14" -msgstr "" - -#: src/nikonmn.cpp:1128 src/nikonmn.cpp:1156 -msgid "-7" -msgstr "" - -#: src/nikonmn.cpp:1129 src/nikonmn.cpp:1157 -msgid "+15" -msgstr "" - -#: src/nikonmn.cpp:1130 src/nikonmn.cpp:1158 -msgid "-15" -msgstr "" - -#: src/nikonmn.cpp:1138 src/nikonmn.cpp:1198 -msgid "AF Fine Tune Adj" -msgstr "" - -#: src/nikonmn.cpp:1138 src/nikonmn.cpp:1198 -msgid "AF fine tune adj" -msgstr "" - -#: src/nikonmn.cpp:1140 -msgid "Unknown Nikon Shot Info D300 (a) Tag" -msgstr "" - -#: src/nikonmn.cpp:1200 -msgid "Unknown Nikon Shot Info D300 (b) Tag" -msgstr "" - -#: src/nikonmn.cpp:1213 -msgid "On (3)" -msgstr "" - -#: src/nikonmn.cpp:1226 -msgid "Shutter Count 1" -msgstr "" - -#: src/nikonmn.cpp:1226 -msgid "Shutter count 1" -msgstr "" - -#: src/nikonmn.cpp:1229 -msgid "Vibration Reduction 1" -msgstr "" - -#: src/nikonmn.cpp:1229 -msgid "Vibration reduction 1" -msgstr "" - -#: src/nikonmn.cpp:1230 -msgid "Shutter Count 2" -msgstr "" - -#: src/nikonmn.cpp:1230 -msgid "Shutter count 2" -msgstr "" - -#: src/nikonmn.cpp:1231 -msgid "Vibration Reduction 2" -msgstr "" - -#: src/nikonmn.cpp:1231 -msgid "Vibration reduction 2" -msgstr "" - -#: src/nikonmn.cpp:1235 -msgid "Unknown Nikon Shot Info Tag" -msgstr "" - -#: src/nikonmn.cpp:1246 -msgid "WB RBGG Levels" -msgstr "" - -#: src/nikonmn.cpp:1246 -msgid "WB RBGG levels" -msgstr "" - -#: src/nikonmn.cpp:1248 -msgid "Unknown Nikon Color Balance 1 Tag" -msgstr "" - -#: src/nikonmn.cpp:1259 src/nikonmn.cpp:1272 src/nikonmn.cpp:1285 -msgid "WB RGGB Levels" -msgstr "" - -#: src/nikonmn.cpp:1259 src/nikonmn.cpp:1272 src/nikonmn.cpp:1285 -msgid "WB RGGB levels" -msgstr "" - -#: src/nikonmn.cpp:1261 -msgid "Unknown Nikon Color Balance 2 Tag" -msgstr "" - -#: src/nikonmn.cpp:1274 -msgid "Unknown Nikon Color Balance 2a Tag" -msgstr "" - -#: src/nikonmn.cpp:1287 -msgid "Unknown Nikon Color Balance 2b Tag" -msgstr "" - -#: src/nikonmn.cpp:1298 -msgid "WB RGBG Levels" -msgstr "" - -#: src/nikonmn.cpp:1298 -msgid "WB RGBG levels" -msgstr "" - -#: src/nikonmn.cpp:1300 -msgid "Unknown Nikon Color Balance 3 Tag" -msgstr "" - -#: src/nikonmn.cpp:1311 -msgid "WB GRBG Levels" -msgstr "" - -#: src/nikonmn.cpp:1311 -msgid "WB GRBG levels" -msgstr "" - -#: src/nikonmn.cpp:1313 -msgid "Unknown Nikon Color Balance 4 Tag" -msgstr "" - -#: src/nikonmn.cpp:1324 src/nikonmn.cpp:1348 src/nikonmn.cpp:1373 -msgid "Lens ID Number" -msgstr "" - -#: src/nikonmn.cpp:1324 src/nikonmn.cpp:1348 src/nikonmn.cpp:1373 -msgid "Lens ID number" -msgstr "" - -#: src/nikonmn.cpp:1325 src/nikonmn.cpp:1349 src/nikonmn.cpp:1374 -msgid "Lens F-Stops" -msgstr "" - -#: src/nikonmn.cpp:1325 src/nikonmn.cpp:1349 src/nikonmn.cpp:1374 -msgid "Lens F-stops" -msgstr "" - -#: src/nikonmn.cpp:1326 src/nikonmn.cpp:1350 src/nikonmn.cpp:1375 -#: src/olympusmn.cpp:751 -msgid "Min Focal Length" -msgstr "" - -#: src/nikonmn.cpp:1326 src/nikonmn.cpp:1350 src/nikonmn.cpp:1375 -#: src/olympusmn.cpp:751 -msgid "Min focal length" -msgstr "" - -#: src/nikonmn.cpp:1327 src/nikonmn.cpp:1351 src/nikonmn.cpp:1376 -#: src/olympusmn.cpp:752 -msgid "Max Focal Length" -msgstr "" - -#: src/nikonmn.cpp:1327 src/nikonmn.cpp:1351 src/nikonmn.cpp:1376 -#: src/olympusmn.cpp:752 -msgid "Max focal length" -msgstr "" - -#: src/nikonmn.cpp:1328 src/nikonmn.cpp:1352 src/nikonmn.cpp:1377 -#: src/olympusmn.cpp:749 -msgid "Max Aperture At Min Focal" -msgstr "" - -#: src/nikonmn.cpp:1328 src/nikonmn.cpp:1352 src/olympusmn.cpp:749 -msgid "Max aperture at min focal" -msgstr "" - -#: src/nikonmn.cpp:1329 src/nikonmn.cpp:1353 src/nikonmn.cpp:1378 -#: src/olympusmn.cpp:750 -msgid "Max Aperture At Max Focal" -msgstr "" - -#: src/nikonmn.cpp:1329 src/nikonmn.cpp:1353 src/olympusmn.cpp:750 -msgid "Max aperture at max focal" -msgstr "" - -#: src/nikonmn.cpp:1330 src/nikonmn.cpp:1354 src/nikonmn.cpp:1379 -msgid "MCU Version" -msgstr "" - -#: src/nikonmn.cpp:1330 src/nikonmn.cpp:1354 src/nikonmn.cpp:1379 -msgid "MCU version" -msgstr "" - -#: src/nikonmn.cpp:1332 -msgid "Unknown Nikon Lens Data 1 Tag" -msgstr "" - -#: src/nikonmn.cpp:1343 src/nikonmn.cpp:1368 -msgid "Exit Pupil Position" -msgstr "" - -#: src/nikonmn.cpp:1343 src/nikonmn.cpp:1368 -msgid "Exit pupil position" -msgstr "" - -#: src/nikonmn.cpp:1344 src/nikonmn.cpp:1369 -msgid "AF Aperture" -msgstr "" - -#: src/nikonmn.cpp:1344 src/nikonmn.cpp:1369 -msgid "AF aperture" -msgstr "" - -#: src/nikonmn.cpp:1355 src/nikonmn.cpp:1380 -msgid "Effective Max Aperture" -msgstr "" - -#: src/nikonmn.cpp:1355 src/nikonmn.cpp:1380 -msgid "Effective max aperture" -msgstr "" - -#: src/nikonmn.cpp:1357 -msgid "Unknown Nikon Lens Data 2 Tag" -msgstr "" - -#: src/nikonmn.cpp:1377 -msgid "Max aperture at min focal length" -msgstr "" - -#: src/nikonmn.cpp:1378 -msgid "Max aperture at max focal length" -msgstr "" - -#: src/nikonmn.cpp:1382 -msgid "Unknown Nikon Lens Data 3 Tag" -msgstr "" - -#: src/nikonmn.cpp:1562 -msgid "Closest subject" -msgstr "" - -#: src/nikonmn.cpp:1563 -msgid "Group dynamic-AF" -msgstr "" - -#: src/nikonmn.cpp:1586 src/tags.cpp:240 -msgid "none" -msgstr "" - -#: src/nikonmn.cpp:1596 -msgid "used" -msgstr "" - -#: src/nikonmn.cpp:1622 -msgid "All 11 Points" -msgstr "" - -#: src/nikonmn.cpp:1637 src/nikonmn.cpp:1638 src/pentaxmn.cpp:533 -#: src/pentaxmn.cpp:537 -msgid "Single-frame" -msgstr "" - -#: src/olympusmn.cpp:71 -msgid "Standard Quality (SQ)" -msgstr "" - -#: src/olympusmn.cpp:72 -msgid "High Quality (HQ)" -msgstr "" - -#: src/olympusmn.cpp:73 -msgid "Super High Quality (SHQ)" -msgstr "" - -#: src/olympusmn.cpp:88 -msgid "On (preset)" -msgstr "" - -#: src/olympusmn.cpp:95 src/pentaxmn.cpp:474 -msgid "Sport" -msgstr "" - -#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 -msgid "Landscape+Portrait" -msgstr "" - -#: src/olympusmn.cpp:100 -msgid "Self Portrait" -msgstr "" - -#: src/olympusmn.cpp:102 -msgid "2 in 1" -msgstr "" - -#: src/olympusmn.cpp:105 -msgid "Night+Portrait" -msgstr "" - -#: src/olympusmn.cpp:111 src/panasonicmn.cpp:120 src/pentaxmn.cpp:486 -msgid "Food" -msgstr "" - -#: src/olympusmn.cpp:112 -msgid "Documents" -msgstr "" - -#: src/olympusmn.cpp:114 -msgid "Shoot & Select" -msgstr "" - -#: src/olympusmn.cpp:115 -msgid "Beach & Snow" -msgstr "" - -#: src/olympusmn.cpp:116 -msgid "Self Portrait+Timer" -msgstr "" - -#: src/olympusmn.cpp:117 -msgid "Candle" -msgstr "" - -#: src/olympusmn.cpp:118 -msgid "Available Light" -msgstr "" - -#: src/olympusmn.cpp:119 -msgid "Behind Glass" -msgstr "" - -#: src/olympusmn.cpp:120 -msgid "My Mode" -msgstr "" - -#: src/olympusmn.cpp:121 src/panasonicmn.cpp:131 src/pentaxmn.cpp:483 -#: src/sonymn.cpp:127 -msgid "Pet" -msgstr "" - -#: src/olympusmn.cpp:122 -msgid "Underwater Wide1" -msgstr "" - -#: src/olympusmn.cpp:123 -msgid "Underwater Macro" -msgstr "" - -#: src/olympusmn.cpp:124 -msgid "Shoot & Select1" -msgstr "" - -#: src/olympusmn.cpp:125 -msgid "Shoot & Select2" -msgstr "" - -#: src/olympusmn.cpp:127 -msgid "Digital Image Stabilization" -msgstr "" - -#: src/olympusmn.cpp:128 -msgid "Auction" -msgstr "" - -#: src/olympusmn.cpp:131 -msgid "Underwater Wide2" -msgstr "" - -#: src/olympusmn.cpp:133 -msgid "Children" -msgstr "" - -#: src/olympusmn.cpp:135 -msgid "Nature Macro" -msgstr "" - -#: src/olympusmn.cpp:136 -msgid "Underwater Snapshot" -msgstr "" - -#: src/olympusmn.cpp:137 -msgid "Shooting Guide" -msgstr "" - -#: src/olympusmn.cpp:145 -msgid "Internal + External" -msgstr "" - -#: src/olympusmn.cpp:176 -msgid "Interlaced" -msgstr "" - -#: src/olympusmn.cpp:177 -msgid "Progressive" -msgstr "" - -#: src/olympusmn.cpp:188 -msgid "Thumbnail Image" -msgstr "" - -#: src/olympusmn.cpp:189 -msgid "Thumbnail image" -msgstr "" - -#: src/olympusmn.cpp:192 src/olympusmn.cpp:744 src/olympusmn.cpp:1027 -msgid "Body Firmware Version" -msgstr "" - -#: src/olympusmn.cpp:193 src/olympusmn.cpp:744 src/olympusmn.cpp:1027 -msgid "Body firmware version" -msgstr "" - -#: src/olympusmn.cpp:195 -msgid "Special Mode" -msgstr "" - -#: src/olympusmn.cpp:196 -msgid "Picture taking mode" -msgstr "" - -#: src/olympusmn.cpp:204 -msgid "Black & White Mode" -msgstr "" - -#: src/olympusmn.cpp:205 -msgid "Black and white mode" -msgstr "" - -#: src/olympusmn.cpp:208 -msgid "Digital zoom ratio" -msgstr "" - -#: src/olympusmn.cpp:210 src/olympusmn.cpp:743 -msgid "Focal Plane Diagonal" -msgstr "" - -#: src/olympusmn.cpp:211 src/olympusmn.cpp:743 -msgid "Focal plane diagonal" -msgstr "" - -#: src/olympusmn.cpp:213 -msgid "Lens Distortion Parameters" -msgstr "" - -#: src/olympusmn.cpp:214 -msgid "Lens distortion parameters" -msgstr "" - -#: src/olympusmn.cpp:216 src/olympusmn.cpp:740 -msgid "Camera Type" -msgstr "" - -#: src/olympusmn.cpp:217 src/olympusmn.cpp:740 -msgid "Camera type" -msgstr "" - -#: src/olympusmn.cpp:220 -msgid "ASCII format data such as [PictureInfo]" -msgstr "" - -#: src/olympusmn.cpp:222 -msgid "Camera ID" -msgstr "" - -#: src/olympusmn.cpp:223 -msgid "Camera ID data" -msgstr "" - -#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:519 -#: src/sigmamn.cpp:119 src/sigmamn.cpp:120 src/tags.cpp:538 -msgid "Software" -msgstr "" - -#: src/olympusmn.cpp:234 src/panasonicmn.cpp:348 src/sonymn.cpp:314 -msgid "Preview Image" -msgstr "" - -#: src/olympusmn.cpp:235 src/panasonicmn.cpp:348 -msgid "Preview image" -msgstr "" - -#: src/olympusmn.cpp:237 -msgid "Pre Capture Frames" -msgstr "" - -#: src/olympusmn.cpp:238 -msgid "Pre-capture frames" -msgstr "" - -#: src/olympusmn.cpp:240 -msgid "White Board" -msgstr "" - -#: src/olympusmn.cpp:241 -msgid "White board" -msgstr "" - -#: src/olympusmn.cpp:243 -msgid "One Touch WB" -msgstr "" - -#: src/olympusmn.cpp:244 -msgid "One touch white balance" -msgstr "" - -#: src/olympusmn.cpp:246 src/olympusmn.cpp:678 -msgid "White Balance Bracket" -msgstr "" - -#: src/olympusmn.cpp:247 src/olympusmn.cpp:678 -msgid "White balance bracket" -msgstr "" - -#: src/olympusmn.cpp:255 src/sigmamn.cpp:116 src/sigmamn.cpp:117 -msgid "Firmware" -msgstr "" - -#: src/olympusmn.cpp:256 -msgid "Firmwarer" -msgstr "" - -#: src/olympusmn.cpp:261 -msgid "Data Dump 1" -msgstr "" - -#: src/olympusmn.cpp:262 -msgid "Various camera settings 1" -msgstr "" - -#: src/olympusmn.cpp:264 -msgid "Data Dump 2" -msgstr "" - -#: src/olympusmn.cpp:265 -msgid "Various camera settings 2" -msgstr "" - -#: src/olympusmn.cpp:268 -msgid "Shutter speed value" -msgstr "" - -#: src/olympusmn.cpp:271 -msgid "ISO speed value" -msgstr "" - -#: src/olympusmn.cpp:274 -msgid "Aperture value" -msgstr "" - -#: src/olympusmn.cpp:277 -msgid "Brightness value" -msgstr "" - -#: src/olympusmn.cpp:285 -msgid "Bracket" -msgstr "" - -#: src/olympusmn.cpp:286 -msgid "Exposure compensation value" -msgstr "" - -#: src/olympusmn.cpp:288 src/olympusmn.cpp:1015 -msgid "Sensor Temperature" -msgstr "" - -#: src/olympusmn.cpp:289 src/olympusmn.cpp:1015 -msgid "Sensor temperature" -msgstr "" - -#: src/olympusmn.cpp:291 -msgid "Lens Temperature" -msgstr "" - -#: src/olympusmn.cpp:292 -msgid "Lens temperature" -msgstr "" - -#: src/olympusmn.cpp:294 -msgid "Light Condition" -msgstr "" - -#: src/olympusmn.cpp:295 -msgid "Light condition" -msgstr "" - -#: src/olympusmn.cpp:297 -msgid "Focus Range" -msgstr "" - -#: src/olympusmn.cpp:298 -msgid "Focus range" -msgstr "" - -#: src/olympusmn.cpp:306 -msgid "Zoom" -msgstr "" - -#: src/olympusmn.cpp:307 src/olympusmn.cpp:1003 -msgid "Zoom step count" -msgstr "" - -#: src/olympusmn.cpp:309 -msgid "Macro Focus" -msgstr "" - -#: src/olympusmn.cpp:310 -msgid "Macro focus step count" -msgstr "" - -#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 -msgid "Sharpness Factor" -msgstr "" - -#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 -msgid "Sharpness factor" -msgstr "" - -#: src/olympusmn.cpp:315 -msgid "Flash Charge Level" -msgstr "" - -#: src/olympusmn.cpp:316 -msgid "Flash charge level" -msgstr "" - -#: src/olympusmn.cpp:318 src/olympusmn.cpp:962 -msgid "Color Matrix" -msgstr "" - -#: src/olympusmn.cpp:319 src/olympusmn.cpp:962 -msgid "Color matrix" -msgstr "" - -#: src/olympusmn.cpp:321 -msgid "BlackLevel" -msgstr "" - -#: src/olympusmn.cpp:322 src/olympusmn.cpp:967 -msgid "Black level" -msgstr "" - -#: src/olympusmn.cpp:331 -msgid "White balance mode" -msgstr "" - -#: src/olympusmn.cpp:336 src/panasonicmn.cpp:342 -msgid "Red Balance" -msgstr "" - -#: src/olympusmn.cpp:337 src/pentaxmn.cpp:938 -msgid "Red balance" -msgstr "" - -#: src/olympusmn.cpp:339 src/panasonicmn.cpp:343 -msgid "Blue Balance" -msgstr "" - -#: src/olympusmn.cpp:340 src/panasonicmn.cpp:343 src/pentaxmn.cpp:935 -msgid "Blue balance" -msgstr "" - -#: src/olympusmn.cpp:342 -msgid "Color Matrix Number" -msgstr "" - -#: src/olympusmn.cpp:343 -msgid "Color matrix mumber" -msgstr "" - -#: src/olympusmn.cpp:345 -msgid "Serial Number 2" -msgstr "" - -#: src/olympusmn.cpp:346 -msgid "Serial number 2" -msgstr "" - -#: src/olympusmn.cpp:373 src/olympusmn.cpp:671 src/pentaxmn.cpp:1028 -#: src/pentaxmn.cpp:1029 -msgid "Flash exposure compensation" -msgstr "" - -#: src/olympusmn.cpp:381 src/olympusmn.cpp:1011 -msgid "External Flash Bounce" -msgstr "" - -#: src/olympusmn.cpp:382 src/olympusmn.cpp:1011 -msgid "External flash bounce" -msgstr "" - -#: src/olympusmn.cpp:384 src/olympusmn.cpp:1012 -msgid "External Flash Zoom" -msgstr "" - -#: src/olympusmn.cpp:385 src/olympusmn.cpp:1012 -msgid "External flash zoom" -msgstr "" - -#: src/olympusmn.cpp:387 -msgid "External Flash Mode" -msgstr "" - -#: src/olympusmn.cpp:388 -msgid "External flash mode" -msgstr "" - -#: src/olympusmn.cpp:396 -msgid "Color Control" -msgstr "" - -#: src/olympusmn.cpp:397 -msgid "Color control" -msgstr "" - -#: src/olympusmn.cpp:399 -msgid "ValidBits" -msgstr "" - -#: src/olympusmn.cpp:400 src/olympusmn.cpp:969 -msgid "Valid bits" -msgstr "" - -#: src/olympusmn.cpp:402 -msgid "CoringFilter" -msgstr "" - -#: src/olympusmn.cpp:403 src/olympusmn.cpp:965 src/olympusmn.cpp:1067 -msgid "Coring filter" -msgstr "" - -#: src/olympusmn.cpp:423 -msgid "Compression Ratio" -msgstr "" - -#: src/olympusmn.cpp:424 -msgid "Compression ratio" -msgstr "" - -#: src/olympusmn.cpp:427 -msgid "Preview image embedded" -msgstr "" - -#: src/olympusmn.cpp:430 -msgid "Offset of the preview image" -msgstr "" - -#: src/olympusmn.cpp:433 -msgid "Size of the preview image" -msgstr "" - -#: src/olympusmn.cpp:435 -msgid "CCD Scan Mode" -msgstr "" - -#: src/olympusmn.cpp:436 -msgid "CCD scan mode" -msgstr "" - -#: src/olympusmn.cpp:441 -msgid "Infinity Lens Step" -msgstr "" - -#: src/olympusmn.cpp:442 -msgid "Infinity lens step" -msgstr "" - -#: src/olympusmn.cpp:444 -msgid "Near Lens Step" -msgstr "" - -#: src/olympusmn.cpp:445 -msgid "Near lens step" -msgstr "" - -#: src/olympusmn.cpp:447 -msgid "Equipment Info" -msgstr "" - -#: src/olympusmn.cpp:448 -msgid "Camera equipment sub-IFD" -msgstr "" - -#: src/olympusmn.cpp:451 -msgid "Camera Settings sub-IFD" -msgstr "" - -#: src/olympusmn.cpp:453 -msgid "Raw Development" -msgstr "" - -#: src/olympusmn.cpp:454 -msgid "Raw development sub-IFD" -msgstr "" - -#: src/olympusmn.cpp:456 -msgid "Raw Development 2" -msgstr "" - -#: src/olympusmn.cpp:457 -msgid "Raw development 2 sub-IFD" -msgstr "" - -#: src/olympusmn.cpp:460 -msgid "Image processing sub-IFD" -msgstr "" - -#: src/olympusmn.cpp:462 -msgid "Focus Info" -msgstr "" - -#: src/olympusmn.cpp:463 -msgid "Focus sub-IFD" -msgstr "" - -#: src/olympusmn.cpp:465 -msgid "Raw Info" -msgstr "" - -#: src/olympusmn.cpp:466 -msgid "Raw sub-IFD" -msgstr "" - -#: src/olympusmn.cpp:470 -msgid "Unknown OlympusMakerNote tag" -msgstr "" - -#: src/olympusmn.cpp:486 -msgid "Program-shift" -msgstr "" - -#: src/olympusmn.cpp:491 -msgid "Center-weighted average" -msgstr "" - -#: src/olympusmn.cpp:493 -msgid "ESP" -msgstr "" - -#: src/olympusmn.cpp:494 -msgid "Pattern+AF" -msgstr "" - -#: src/olympusmn.cpp:495 -msgid "Spot+Highlight control" -msgstr "" - -#: src/olympusmn.cpp:496 -msgid "Spot+Shadow control" -msgstr "" - -#: src/olympusmn.cpp:508 src/olympusmn.cpp:1369 -msgid "Single AF" -msgstr "" - -#: src/olympusmn.cpp:509 src/olympusmn.cpp:1370 -msgid "Sequential shooting AF" -msgstr "" - -#: src/olympusmn.cpp:511 src/olympusmn.cpp:1372 src/sonymn.cpp:187 -msgid "Multi AF" -msgstr "" - -#: src/olympusmn.cpp:517 -msgid "AF Not Used" -msgstr "" - -#: src/olympusmn.cpp:518 -msgid "AF Used" -msgstr "" - -#: src/olympusmn.cpp:523 -msgid "Not Ready" -msgstr "" - -#: src/olympusmn.cpp:524 -msgid "Ready" -msgstr "" - -#: src/olympusmn.cpp:531 -msgid "Fill-in" -msgstr "" - -#: src/olympusmn.cpp:533 -msgid "Slow-sync" -msgstr "" - -#: src/olympusmn.cpp:534 -msgid "Forced On" -msgstr "" - -#: src/olympusmn.cpp:535 -msgid "2nd Curtain" -msgstr "" - -#: src/olympusmn.cpp:541 -msgid "Channel 1, Low" -msgstr "" - -#: src/olympusmn.cpp:542 -msgid "Channel 2, Low" -msgstr "" - -#: src/olympusmn.cpp:543 -msgid "Channel 3, Low" -msgstr "" - -#: src/olympusmn.cpp:544 -msgid "Channel 4, Low" -msgstr "" - -#: src/olympusmn.cpp:545 -msgid "Channel 1, Mid" -msgstr "" - -#: src/olympusmn.cpp:546 -msgid "Channel 2, Mid" -msgstr "" - -#: src/olympusmn.cpp:547 -msgid "Channel 3, Mid" -msgstr "" - -#: src/olympusmn.cpp:548 -msgid "Channel 4, Mid" -msgstr "" - -#: src/olympusmn.cpp:549 -msgid "Channel 1, High" -msgstr "" - -#: src/olympusmn.cpp:550 -msgid "Channel 2, High" -msgstr "" - -#: src/olympusmn.cpp:551 -msgid "Channel 3, High" -msgstr "" - -#: src/olympusmn.cpp:552 -msgid "Channel 4, High" -msgstr "" - -#: src/olympusmn.cpp:566 -msgid "7500K (Fine Weather with Shade)" -msgstr "" - -#: src/olympusmn.cpp:567 -msgid "6000K (Cloudy)" -msgstr "" - -#: src/olympusmn.cpp:568 -msgid "5300K (Fine Weather)" -msgstr "" - -#: src/olympusmn.cpp:569 -msgid "3000K (Tungsten light)" -msgstr "" - -#: src/olympusmn.cpp:570 src/olympusmn.cpp:574 -msgid "3600K (Tungsten light-like)" -msgstr "" - -#: src/olympusmn.cpp:571 -msgid "6600K (Daylight fluorescent)" -msgstr "" - -#: src/olympusmn.cpp:572 -msgid "4500K (Neutral white fluorescent)" -msgstr "" - -#: src/olympusmn.cpp:573 -msgid "4000K (Cool white fluorescent)" -msgstr "" - -#: src/olympusmn.cpp:575 -msgid "Custom WB 1" -msgstr "" - -#: src/olympusmn.cpp:576 -msgid "Custom WB 2" -msgstr "" - -#: src/olympusmn.cpp:577 -msgid "Custom WB 3" -msgstr "" - -#: src/olympusmn.cpp:578 -msgid "Custom WB 4" -msgstr "" - -#: src/olympusmn.cpp:579 -msgid "Custom WB 5400K" -msgstr "" - -#: src/olympusmn.cpp:580 -msgid "Custom WB 2900K" -msgstr "" - -#: src/olympusmn.cpp:581 -msgid "Custom WB 8000K" -msgstr "" - -#: src/olympusmn.cpp:587 -msgid "CM1 (Red Enhance)" -msgstr "" - -#: src/olympusmn.cpp:588 -msgid "CM2 (Green Enhance)" -msgstr "" - -#: src/olympusmn.cpp:589 -msgid "CM3 (Blue Enhance)" -msgstr "" - -#: src/olympusmn.cpp:590 -msgid "CM4 (Skin Tones)" -msgstr "" - -#: src/olympusmn.cpp:597 src/olympusmn.cpp:776 src/olympusmn.cpp:841 -msgid "Pro Photo RGB" -msgstr "" - -#: src/olympusmn.cpp:603 src/olympusmn.cpp:697 -msgid "Noise Filter" -msgstr "" - -#: src/olympusmn.cpp:604 -msgid "Noise Filter (ISO Boost)" -msgstr "" - -#: src/olympusmn.cpp:612 src/olympusmn.cpp:854 -msgid "Muted" -msgstr "" - -#: src/olympusmn.cpp:614 src/olympusmn.cpp:855 -msgid "Monotone" -msgstr "" - -#: src/olympusmn.cpp:640 -msgid "SQ" -msgstr "" - -#: src/olympusmn.cpp:641 -msgid "HQ" -msgstr "" - -#: src/olympusmn.cpp:642 -msgid "SHQ" -msgstr "" - -#: src/olympusmn.cpp:649 src/panasonicmn.cpp:86 -msgid "On, Mode 1" -msgstr "" - -#: src/olympusmn.cpp:650 src/panasonicmn.cpp:88 -msgid "On, Mode 2" -msgstr "" - -#: src/olympusmn.cpp:651 -msgid "On, Mode 3" -msgstr "" - -#: src/olympusmn.cpp:655 -msgid "Camera Settings Version" -msgstr "" - -#: src/olympusmn.cpp:655 -msgid "Camera settings version" -msgstr "" - -#: src/olympusmn.cpp:656 -msgid "PreviewImage Valid" -msgstr "" - -#: src/olympusmn.cpp:656 -msgid "Preview image valid" -msgstr "" - -#: src/olympusmn.cpp:657 -msgid "PreviewImage Start" -msgstr "" - -#: src/olympusmn.cpp:657 -msgid "Preview image start" -msgstr "" - -#: src/olympusmn.cpp:658 -msgid "PreviewImage Length" -msgstr "" - -#: src/olympusmn.cpp:658 -msgid "Preview image length" -msgstr "" - -#: src/olympusmn.cpp:660 -msgid "Auto exposure lock" -msgstr "" - -#: src/olympusmn.cpp:662 -msgid "Exposure Shift" -msgstr "" - -#: src/olympusmn.cpp:662 -msgid "Exposure shift" -msgstr "" - -#: src/olympusmn.cpp:665 -msgid "Focus Process" -msgstr "" - -#: src/olympusmn.cpp:665 -msgid "Focus process" -msgstr "" - -#: src/olympusmn.cpp:666 -msgid "AF Search" -msgstr "" - -#: src/olympusmn.cpp:666 -msgid "AF search" -msgstr "" - -#: src/olympusmn.cpp:667 -msgid "AF Areas" -msgstr "" - -#: src/olympusmn.cpp:667 -msgid "AF areas" -msgstr "" - -#: src/olympusmn.cpp:668 -msgid "AFPointSelected" -msgstr "" - -#: src/olympusmn.cpp:669 -msgid "AF Fine Tune Adjust" -msgstr "" - -#: src/olympusmn.cpp:669 -msgid "AF fine tune adjust" -msgstr "" - -#: src/olympusmn.cpp:672 -msgid "Flash Remote Control" -msgstr "" - -#: src/olympusmn.cpp:672 -msgid "Flash remote control" -msgstr "" - -#: src/olympusmn.cpp:673 -msgid "Flash Control Mode" -msgstr "" - -#: src/olympusmn.cpp:673 -msgid "Flash control mode" -msgstr "" - -#: src/olympusmn.cpp:674 -msgid "Flash Intensity" -msgstr "" - -#: src/olympusmn.cpp:674 -msgid "Flash intensity" -msgstr "" - -#: src/olympusmn.cpp:675 -msgid "Manual Flash Strength" -msgstr "" - -#: src/olympusmn.cpp:675 -msgid "Manual flash strength" -msgstr "" - -#: src/olympusmn.cpp:676 src/sonymn.cpp:429 -msgid "White Balance 2" -msgstr "" - -#: src/olympusmn.cpp:676 src/sonymn.cpp:430 -msgid "White balance 2" -msgstr "" - -#: src/olympusmn.cpp:677 -msgid "White Balance Temperature" -msgstr "" - -#: src/olympusmn.cpp:677 -msgid "White balance temperature" -msgstr "" - -#: src/olympusmn.cpp:679 -msgid "Custom Saturation" -msgstr "" - -#: src/olympusmn.cpp:679 -msgid "Custom saturation" -msgstr "" - -#: src/olympusmn.cpp:680 -msgid "Modified Saturation" -msgstr "" - -#: src/olympusmn.cpp:680 -msgid "Modified saturation" -msgstr "" - -#: src/olympusmn.cpp:681 src/olympusmn.cpp:1080 -msgid "Contrast Setting" -msgstr "" - -#: src/olympusmn.cpp:682 src/olympusmn.cpp:1081 -msgid "Sharpness Setting" -msgstr "" - -#: src/olympusmn.cpp:686 src/olympusmn.cpp:975 -msgid "Distortion Correction" -msgstr "" - -#: src/olympusmn.cpp:686 src/olympusmn.cpp:975 -msgid "Distortion correction" -msgstr "" - -#: src/olympusmn.cpp:687 src/olympusmn.cpp:976 -msgid "Shading Compensation" -msgstr "" - -#: src/olympusmn.cpp:687 src/olympusmn.cpp:976 -msgid "Shading compensation" -msgstr "" - -#: src/olympusmn.cpp:688 -msgid "Compression Factor" -msgstr "" - -#: src/olympusmn.cpp:688 -msgid "Compression factor" -msgstr "" - -#: src/olympusmn.cpp:689 src/olympusmn.cpp:897 -msgid "Gradation" -msgstr "" - -#: src/olympusmn.cpp:690 src/olympusmn.cpp:891 src/pentaxmn.cpp:988 -#: src/pentaxmn.cpp:989 -msgid "Picture mode" -msgstr "" - -#: src/olympusmn.cpp:691 -msgid "Picture Mode Saturation" -msgstr "" - -#: src/olympusmn.cpp:691 src/olympusmn.cpp:892 -msgid "Picture mode saturation" -msgstr "" - -#: src/olympusmn.cpp:692 -msgid "Picture Mode Hue" -msgstr "" - -#: src/olympusmn.cpp:692 -msgid "Picture mode hue" -msgstr "" - -#: src/olympusmn.cpp:693 -msgid "Picture Mode Contrast" -msgstr "" - -#: src/olympusmn.cpp:693 src/olympusmn.cpp:893 -msgid "Picture mode contrast" -msgstr "" - -#: src/olympusmn.cpp:694 -msgid "Picture Mode Sharpness" -msgstr "" - -#: src/olympusmn.cpp:694 src/olympusmn.cpp:894 -msgid "Picture mode sharpness" -msgstr "" - -#: src/olympusmn.cpp:695 -msgid "Picture Mode BW Filter" -msgstr "" - -#: src/olympusmn.cpp:695 -msgid "Picture mode BW filter" -msgstr "" - -#: src/olympusmn.cpp:696 -msgid "Picture Mode Tone" -msgstr "" - -#: src/olympusmn.cpp:696 -msgid "Picture mode tone" -msgstr "" - -#: src/olympusmn.cpp:697 -msgid "Noise filter" -msgstr "" - -#: src/olympusmn.cpp:698 -msgid "Art Filter" -msgstr "" - -#: src/olympusmn.cpp:698 -msgid "Art filter" -msgstr "" - -#: src/olympusmn.cpp:699 -msgid "Magic Filter" -msgstr "" - -#: src/olympusmn.cpp:699 -msgid "Magic filter" -msgstr "" - -#: src/olympusmn.cpp:701 -msgid "Panorama Mode" -msgstr "" - -#: src/olympusmn.cpp:701 -msgid "Panorama mode" -msgstr "" - -#: src/olympusmn.cpp:702 -msgid "Image Quality 2" -msgstr "" - -#: src/olympusmn.cpp:702 -msgid "Image quality 2" -msgstr "" - -#: src/olympusmn.cpp:704 -msgid "Manometer Pressure" -msgstr "" - -#: src/olympusmn.cpp:704 -msgid "Manometer pressure" -msgstr "" - -#: src/olympusmn.cpp:705 -msgid "Manometer Reading" -msgstr "" - -#: src/olympusmn.cpp:705 -msgid "Manometer reading" -msgstr "" - -#: src/olympusmn.cpp:706 -msgid "Extended WB Detect" -msgstr "" - -#: src/olympusmn.cpp:706 -msgid "Extended WB detect" -msgstr "" - -#: src/olympusmn.cpp:707 -msgid "Level Gauge Roll" -msgstr "" - -#: src/olympusmn.cpp:707 -msgid "Level gauge roll" -msgstr "" - -#: src/olympusmn.cpp:708 -msgid "Level Gauge Pitch" -msgstr "" - -#: src/olympusmn.cpp:708 -msgid "Level gauge pitch" -msgstr "" - -#: src/olympusmn.cpp:710 -msgid "Unknown OlympusCs tag" -msgstr "" - -#: src/olympusmn.cpp:721 -msgid "Simple E-System" -msgstr "" - -#: src/olympusmn.cpp:722 -msgid "E-System" -msgstr "" - -#: src/olympusmn.cpp:739 -msgid "Equipment Version" -msgstr "" - -#: src/olympusmn.cpp:739 -msgid "Equipment version" -msgstr "" - -#: src/olympusmn.cpp:741 -msgid "Serial number" -msgstr "" - -#: src/olympusmn.cpp:746 src/panasonicmn.cpp:277 src/tags.cpp:1854 -msgid "Lens Serial Number" -msgstr "" - -#: src/olympusmn.cpp:746 src/panasonicmn.cpp:277 -msgid "Lens serial number" -msgstr "" - -#: src/olympusmn.cpp:747 src/properties.cpp:388 src/tags.cpp:1850 -msgid "Lens Model" -msgstr "" - -#: src/olympusmn.cpp:747 -msgid "Lens model" -msgstr "" - -#: src/olympusmn.cpp:748 -msgid "Lens Firmware Version" -msgstr "" - -#: src/olympusmn.cpp:748 -msgid "Lens firmware version" -msgstr "" - -#: src/olympusmn.cpp:753 -msgid "Max Aperture At Current Focal" -msgstr "" - -#: src/olympusmn.cpp:753 -msgid "Max aperture at current focal" -msgstr "" - -#: src/olympusmn.cpp:754 -msgid "Lens Properties" -msgstr "" - -#: src/olympusmn.cpp:754 -msgid "Lens properties" -msgstr "" - -#: src/olympusmn.cpp:755 -msgid "Extender" -msgstr "" - -#: src/olympusmn.cpp:756 -msgid "Extender Serial Number" -msgstr "" - -#: src/olympusmn.cpp:756 -msgid "Extender serial number" -msgstr "" - -#: src/olympusmn.cpp:757 -msgid "Extender Model" -msgstr "" - -#: src/olympusmn.cpp:757 -msgid "Extender model" -msgstr "" - -#: src/olympusmn.cpp:758 -msgid "Extender Firmware Version" -msgstr "" - -#: src/olympusmn.cpp:758 -msgid "Extender firmwareversion" -msgstr "" - -#: src/olympusmn.cpp:760 src/properties.cpp:384 -msgid "Flash Model" -msgstr "" - -#: src/olympusmn.cpp:760 -msgid "Flash model" -msgstr "" - -#: src/olympusmn.cpp:761 -msgid "Flash Firmware Version" -msgstr "" - -#: src/olympusmn.cpp:761 -msgid "Flash firmware version" -msgstr "" - -#: src/olympusmn.cpp:762 -msgid "FlashSerialNumber" -msgstr "" - -#: src/olympusmn.cpp:764 -msgid "Unknown OlympusEq tag" -msgstr "" - -#: src/olympusmn.cpp:781 src/olympusmn.cpp:846 -msgid "High Speed" -msgstr "" - -#: src/olympusmn.cpp:782 src/olympusmn.cpp:803 src/olympusmn.cpp:847 -msgid "High Function" -msgstr "" - -#: src/olympusmn.cpp:783 -msgid "Advanced High Speed" -msgstr "" - -#: src/olympusmn.cpp:784 -msgid "Advanced High Function" -msgstr "" - -#: src/olympusmn.cpp:789 -msgid "Original" -msgstr "" - -#: src/olympusmn.cpp:790 -msgid "Edited (Landscape)" -msgstr "" - -#: src/olympusmn.cpp:791 src/olympusmn.cpp:792 -msgid "Edited (Portrait)" -msgstr "" - -#: src/olympusmn.cpp:797 -msgid "WB Color Temp" -msgstr "" - -#: src/olympusmn.cpp:798 -msgid "WB Gray Point" -msgstr "" - -#: src/olympusmn.cpp:808 -msgid "Raw Development Version" -msgstr "" - -#: src/olympusmn.cpp:808 -msgid "Raw development version" -msgstr "" - -#: src/olympusmn.cpp:809 src/olympusmn.cpp:879 src/properties.cpp:558 -#: src/tags.cpp:822 -msgid "Exposure Bias Value" -msgstr "" - -#: src/olympusmn.cpp:809 src/olympusmn.cpp:879 -msgid "Exposure bias value" -msgstr "" - -#: src/olympusmn.cpp:810 src/olympusmn.cpp:881 -msgid "White Balance Value" -msgstr "" - -#: src/olympusmn.cpp:810 src/olympusmn.cpp:881 -msgid "White balance value" -msgstr "" - -#: src/olympusmn.cpp:811 src/olympusmn.cpp:882 -msgid "WB Fine Adjustment" -msgstr "" - -#: src/olympusmn.cpp:811 -msgid "WB fine adjustment" -msgstr "" - -#: src/olympusmn.cpp:812 src/olympusmn.cpp:834 src/olympusmn.cpp:883 -msgid "Gray Point" -msgstr "" - -#: src/olympusmn.cpp:812 src/olympusmn.cpp:883 -msgid "Gray point" -msgstr "" - -#: src/olympusmn.cpp:813 src/olympusmn.cpp:886 -msgid "Saturation Emphasis" -msgstr "" - -#: src/olympusmn.cpp:813 src/olympusmn.cpp:886 -msgid "Saturation emphasis" -msgstr "" - -#: src/olympusmn.cpp:814 src/olympusmn.cpp:887 -msgid "Memory Color Emphasis" -msgstr "" - -#: src/olympusmn.cpp:814 src/olympusmn.cpp:887 -msgid "Memory color emphasis" -msgstr "" - -#: src/olympusmn.cpp:815 src/olympusmn.cpp:884 -msgid "Contrast Value" -msgstr "" - -#: src/olympusmn.cpp:815 src/olympusmn.cpp:884 -msgid "Contrast value" -msgstr "" - -#: src/olympusmn.cpp:816 src/olympusmn.cpp:885 -msgid "Sharpness Value" -msgstr "" - -#: src/olympusmn.cpp:816 src/olympusmn.cpp:885 -msgid "Sharpness value" -msgstr "" - -#: src/olympusmn.cpp:818 src/olympusmn.cpp:890 -msgid "Engine" -msgstr "" - -#: src/olympusmn.cpp:820 -msgid "Edit status" -msgstr "" - -#: src/olympusmn.cpp:821 -msgid "Settings" -msgstr "" - -#: src/olympusmn.cpp:823 -msgid "Unknown OlympusRd tag" -msgstr "" - -#: src/olympusmn.cpp:878 -msgid "Raw Development 2 Version" -msgstr "" - -#: src/olympusmn.cpp:878 -msgid "Raw development 2 version" -msgstr "" - -#: src/olympusmn.cpp:882 -msgid "White balance fine adjustment" -msgstr "" - -#: src/olympusmn.cpp:892 -msgid "PM Saturation" -msgstr "" - -#: src/olympusmn.cpp:893 -msgid "PM Contrast" -msgstr "" - -#: src/olympusmn.cpp:894 -msgid "PM Sharpness" -msgstr "" - -#: src/olympusmn.cpp:895 -msgid "PM BW Filter" -msgstr "" - -#: src/olympusmn.cpp:895 -msgid "PM BW filter" -msgstr "" - -#: src/olympusmn.cpp:896 -msgid "PM Picture Tone" -msgstr "" - -#: src/olympusmn.cpp:896 -msgid "PM picture tone" -msgstr "" - -#: src/olympusmn.cpp:899 -msgid "Auto Gradation" -msgstr "" - -#: src/olympusmn.cpp:899 -msgid "Auto gradation" -msgstr "" - -#: src/olympusmn.cpp:900 -msgid "PM Noise Filter" -msgstr "" - -#: src/olympusmn.cpp:900 -msgid "Picture mode noise filter" -msgstr "" - -#: src/olympusmn.cpp:902 -msgid "Unknown OlympusRd2 tag" -msgstr "" - -#: src/olympusmn.cpp:913 -msgid "On (2 frames)" -msgstr "" - -#: src/olympusmn.cpp:914 -msgid "On (3 frames)" -msgstr "" - -#: src/olympusmn.cpp:919 -msgid "4:3" -msgstr "" - -#: src/olympusmn.cpp:920 -msgid "3:2" -msgstr "" - -#: src/olympusmn.cpp:921 -msgid "16:9" -msgstr "" - -#: src/olympusmn.cpp:922 -msgid "6:6" -msgstr "" - -#: src/olympusmn.cpp:923 -msgid "5:4" -msgstr "" - -#: src/olympusmn.cpp:924 -msgid "7:6" -msgstr "" - -#: src/olympusmn.cpp:925 -msgid "6:5" -msgstr "" - -#: src/olympusmn.cpp:926 -msgid "7:5" -msgstr "" - -#: src/olympusmn.cpp:927 -msgid "3:4" -msgstr "" - -#: src/olympusmn.cpp:931 -msgid "Image Processing Version" -msgstr "" - -#: src/olympusmn.cpp:931 -msgid "Image processing version" -msgstr "" - -#: src/olympusmn.cpp:933 -msgid "WB RB Levels 3000K" -msgstr "" - -#: src/olympusmn.cpp:933 -msgid "WB RB levels 3000K" -msgstr "" - -#: src/olympusmn.cpp:934 -msgid "WB RB Levels 3300K" -msgstr "" - -#: src/olympusmn.cpp:934 -msgid "WB RB levels 3300K" -msgstr "" - -#: src/olympusmn.cpp:935 -msgid "WB RB Levels 3600K" -msgstr "" - -#: src/olympusmn.cpp:935 -msgid "WB RB levels 3600K" -msgstr "" - -#: src/olympusmn.cpp:936 -msgid "WB RB Levels 3900K" -msgstr "" - -#: src/olympusmn.cpp:936 -msgid "WB RB levels 3900K" -msgstr "" - -#: src/olympusmn.cpp:937 -msgid "WB RB Levels 4000K" -msgstr "" - -#: src/olympusmn.cpp:937 -msgid "WB RB levels 4000K" -msgstr "" - -#: src/olympusmn.cpp:938 -msgid "WB RB Levels 4300K" -msgstr "" - -#: src/olympusmn.cpp:938 -msgid "WB RB levels 4300K" -msgstr "" - -#: src/olympusmn.cpp:939 -msgid "WB RB Levels 4500K" -msgstr "" - -#: src/olympusmn.cpp:939 -msgid "WB RB levels 4500K" -msgstr "" - -#: src/olympusmn.cpp:940 -msgid "WB RB Levels 4800K" -msgstr "" - -#: src/olympusmn.cpp:940 -msgid "WB RB levels 4800K" -msgstr "" - -#: src/olympusmn.cpp:941 -msgid "WB RB Levels 5300K" -msgstr "" - -#: src/olympusmn.cpp:941 -msgid "WB RB levels 5300K" -msgstr "" - -#: src/olympusmn.cpp:942 -msgid "WB RB Levels 6000K" -msgstr "" - -#: src/olympusmn.cpp:942 -msgid "WB RB levels 6000K" -msgstr "" - -#: src/olympusmn.cpp:943 -msgid "WB RB Levels 6600K" -msgstr "" - -#: src/olympusmn.cpp:943 -msgid "WB RB levels 6600K" -msgstr "" - -#: src/olympusmn.cpp:944 -msgid "WB RB Levels 7500K" -msgstr "" - -#: src/olympusmn.cpp:944 -msgid "WB RB levels 7500K" -msgstr "" - -#: src/olympusmn.cpp:945 -msgid "WB RB Levels CWB1" -msgstr "" - -#: src/olympusmn.cpp:945 -msgid "WB RB levels CWB1" -msgstr "" - -#: src/olympusmn.cpp:946 -msgid "WB RB Levels CWB2" -msgstr "" - -#: src/olympusmn.cpp:946 -msgid "WB RB levels CWB2" -msgstr "" - -#: src/olympusmn.cpp:947 -msgid "WB RB Levels CWB3" -msgstr "" - -#: src/olympusmn.cpp:947 -msgid "WB RB levels CWB3" -msgstr "" - -#: src/olympusmn.cpp:948 -msgid "WB RB Levels CWB4" -msgstr "" - -#: src/olympusmn.cpp:948 -msgid "WB RB levels CWB4" -msgstr "" - -#: src/olympusmn.cpp:949 -msgid "WB G Level 3000K" -msgstr "" - -#: src/olympusmn.cpp:949 -msgid "WB G level 3000K" -msgstr "" - -#: src/olympusmn.cpp:950 -msgid "WB G Level 3300K" -msgstr "" - -#: src/olympusmn.cpp:950 -msgid "WB G level 3300K" -msgstr "" - -#: src/olympusmn.cpp:951 -msgid "WB G Level 3600K" -msgstr "" - -#: src/olympusmn.cpp:951 -msgid "WB G level 3600K" -msgstr "" - -#: src/olympusmn.cpp:952 -msgid "WB G Level 3900K" -msgstr "" - -#: src/olympusmn.cpp:952 -msgid "WB G level 3900K" -msgstr "" - -#: src/olympusmn.cpp:953 -msgid "WB G Level 4000K" -msgstr "" - -#: src/olympusmn.cpp:953 -msgid "WB G level 4000K" -msgstr "" - -#: src/olympusmn.cpp:954 -msgid "WB G Level 4300K" -msgstr "" - -#: src/olympusmn.cpp:954 -msgid "WB G level 4300K" -msgstr "" - -#: src/olympusmn.cpp:955 -msgid "WB G Level 4500K" -msgstr "" - -#: src/olympusmn.cpp:955 -msgid "WB G level 4500K" -msgstr "" - -#: src/olympusmn.cpp:956 -msgid "WB G Level 4800K" -msgstr "" - -#: src/olympusmn.cpp:956 -msgid "WB G level 4800K" -msgstr "" - -#: src/olympusmn.cpp:957 -msgid "WB G Level 5300K" -msgstr "" - -#: src/olympusmn.cpp:957 -msgid "WB G level 5300K" -msgstr "" - -#: src/olympusmn.cpp:958 -msgid "WB G Level 6000K" -msgstr "" - -#: src/olympusmn.cpp:958 -msgid "WB G level 6000K" -msgstr "" - -#: src/olympusmn.cpp:959 -msgid "WB G Level 6600K" -msgstr "" - -#: src/olympusmn.cpp:959 -msgid "WB G level 6600K" -msgstr "" - -#: src/olympusmn.cpp:960 -msgid "WB G Level 7500K" -msgstr "" - -#: src/olympusmn.cpp:960 -msgid "WB G level 7500K" -msgstr "" - -#: src/olympusmn.cpp:961 -msgid "WB G Level" -msgstr "" - -#: src/olympusmn.cpp:961 -msgid "WB G level" -msgstr "" - -#: src/olympusmn.cpp:963 -msgid "Enhancer" -msgstr "" - -#: src/olympusmn.cpp:964 -msgid "Enhancer Values" -msgstr "" - -#: src/olympusmn.cpp:964 -msgid "Enhancer values" -msgstr "" - -#: src/olympusmn.cpp:965 src/olympusmn.cpp:1067 -msgid "Coring Filter" -msgstr "" - -#: src/olympusmn.cpp:966 src/olympusmn.cpp:1068 -msgid "Coring Values" -msgstr "" - -#: src/olympusmn.cpp:966 src/olympusmn.cpp:1068 -msgid "Coring values" -msgstr "" - -#: src/olympusmn.cpp:967 src/tags.cpp:908 -msgid "Black Level" -msgstr "" - -#: src/olympusmn.cpp:968 -msgid "Gain Base" -msgstr "" - -#: src/olympusmn.cpp:968 -msgid "Gain base" -msgstr "" - -#: src/olympusmn.cpp:969 -msgid "Valid Bits" -msgstr "" - -#: src/olympusmn.cpp:970 src/olympusmn.cpp:1072 src/properties.cpp:445 -msgid "Crop Left" -msgstr "" - -#: src/olympusmn.cpp:970 src/olympusmn.cpp:1072 -msgid "Crop left" -msgstr "" - -#: src/olympusmn.cpp:971 src/olympusmn.cpp:1073 src/properties.cpp:444 -msgid "Crop Top" -msgstr "" - -#: src/olympusmn.cpp:971 src/olympusmn.cpp:1073 -msgid "Crop top" -msgstr "" - -#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 src/properties.cpp:449 -msgid "Crop Width" -msgstr "" - -#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 -msgid "Crop width" -msgstr "" - -#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 src/properties.cpp:450 -msgid "Crop Height" -msgstr "" - -#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 -msgid "Crop height" -msgstr "" - -#: src/olympusmn.cpp:977 -msgid "Multiple Exposure Mode" -msgstr "" - -#: src/olympusmn.cpp:977 -msgid "Multiple exposure mode" -msgstr "" - -#: src/olympusmn.cpp:978 src/sonymn.cpp:644 src/sonymn.cpp:645 -msgid "Aspect Ratio" -msgstr "" - -#: src/olympusmn.cpp:978 -msgid "Aspect ratio" -msgstr "" - -#: src/olympusmn.cpp:979 -msgid "Aspect Frame" -msgstr "" - -#: src/olympusmn.cpp:979 -msgid "Aspect frame" -msgstr "" - -#: src/olympusmn.cpp:980 -msgid "Face Detect" -msgstr "" - -#: src/olympusmn.cpp:980 src/olympusmn.cpp:1373 src/olympusmn.cpp:1385 -msgid "Face detect" -msgstr "" - -#: src/olympusmn.cpp:981 -msgid "Face Detect Area" -msgstr "" - -#: src/olympusmn.cpp:981 -msgid "Face detect area" -msgstr "" - -#: src/olympusmn.cpp:983 -msgid "Unknown OlympusIp tag" -msgstr "" - -#: src/olympusmn.cpp:993 -msgid "Bounce or Off" -msgstr "" - -#: src/olympusmn.cpp:994 -msgid "Direct" -msgstr "" - -#: src/olympusmn.cpp:998 -msgid "Focus Info Version" -msgstr "" - -#: src/olympusmn.cpp:998 -msgid "Focus info version" -msgstr "" - -#: src/olympusmn.cpp:999 -msgid "Auto Focus" -msgstr "" - -#: src/olympusmn.cpp:1000 -msgid "Scene Detect" -msgstr "" - -#: src/olympusmn.cpp:1000 -msgid "Scene detect" -msgstr "" - -#: src/olympusmn.cpp:1001 -msgid "Scene Area" -msgstr "" - -#: src/olympusmn.cpp:1001 -msgid "Scene area" -msgstr "" - -#: src/olympusmn.cpp:1002 -msgid "Scene Detect Data" -msgstr "" - -#: src/olympusmn.cpp:1002 -msgid "Scene detect data" -msgstr "" - -#: src/olympusmn.cpp:1003 -msgid "Zoom Step Count" -msgstr "" - -#: src/olympusmn.cpp:1004 -msgid "Focus Step Count" -msgstr "" - -#: src/olympusmn.cpp:1004 -msgid "Focus step count" -msgstr "" - -#: src/olympusmn.cpp:1005 -msgid "Focus Step Infinity" -msgstr "" - -#: src/olympusmn.cpp:1005 -msgid "Focus step infinity" -msgstr "" - -#: src/olympusmn.cpp:1006 -msgid "Focus Step Near" -msgstr "" - -#: src/olympusmn.cpp:1006 -msgid "Focus step near" -msgstr "" - -#: src/olympusmn.cpp:1009 -msgid "External Flash" -msgstr "" - -#: src/olympusmn.cpp:1010 -msgid "External Flash Guide Number" -msgstr "" - -#: src/olympusmn.cpp:1010 -msgid "External flash guide number" -msgstr "" - -#: src/olympusmn.cpp:1014 -msgid "Manual Flash" -msgstr "" - -#: src/olympusmn.cpp:1014 -msgid "Manual flash" -msgstr "" - -#: src/olympusmn.cpp:1018 -msgid "Unknown OlympusFi tag" -msgstr "" - -#: src/olympusmn.cpp:1029 -msgid "Unknown OlympusFe tag" -msgstr "" - -#: src/olympusmn.cpp:1042 -msgid "Fine Weather" -msgstr "" - -#: src/olympusmn.cpp:1043 -msgid "Tungsten (incandescent)" -msgstr "" - -#: src/olympusmn.cpp:1044 -msgid "Evening Sunlight" -msgstr "" - -#: src/olympusmn.cpp:1045 -msgid "Daylight Fluorescent (D 5700 - 7100K)" -msgstr "" - -#: src/olympusmn.cpp:1046 -msgid "Day White Fluorescent (N 4600 - 5400K)" -msgstr "" - -#: src/olympusmn.cpp:1047 -msgid "Cool White Fluorescent (W 3900 - 4500K)" -msgstr "" - -#: src/olympusmn.cpp:1048 -msgid "White Fluorescent (WW 3200 - 3700K)" -msgstr "" - -#: src/olympusmn.cpp:1049 -msgid "One Touch White Balance" -msgstr "" - -#: src/olympusmn.cpp:1050 -msgid "Custom 1-4" -msgstr "" - -#: src/olympusmn.cpp:1054 -msgid "Raw Info Version" -msgstr "" - -#: src/olympusmn.cpp:1054 -msgid "Raw info version" -msgstr "" - -#: src/olympusmn.cpp:1055 -msgid "WB_RB Levels Used" -msgstr "" - -#: src/olympusmn.cpp:1055 -msgid "WB_RB levels used" -msgstr "" - -#: src/olympusmn.cpp:1056 -msgid "WB_RB Levels Auto" -msgstr "" - -#: src/olympusmn.cpp:1056 -msgid "WB_RB levels auto" -msgstr "" - -#: src/olympusmn.cpp:1057 -msgid "WB_RB Levels Shade" -msgstr "" - -#: src/olympusmn.cpp:1057 -msgid "WB_RB levels shade" -msgstr "" - -#: src/olympusmn.cpp:1058 -msgid "WB_RB Levels Cloudy" -msgstr "" - -#: src/olympusmn.cpp:1058 -msgid "WB_RB levels cloudy" -msgstr "" - -#: src/olympusmn.cpp:1059 -msgid "WB_RB Levels Fine Weather" -msgstr "" - -#: src/olympusmn.cpp:1059 -msgid "WB_RB levels fine weather" -msgstr "" - -#: src/olympusmn.cpp:1060 -msgid "WB_RB Levels Tungsten" -msgstr "" - -#: src/olympusmn.cpp:1060 -msgid "WB_RB levels tungsten" -msgstr "" - -#: src/olympusmn.cpp:1061 -msgid "WB_RB Levels Evening Sunlight" -msgstr "" - -#: src/olympusmn.cpp:1061 -msgid "WB_RB levels evening sunlight" -msgstr "" - -#: src/olympusmn.cpp:1062 -msgid "WB_RB Levels Daylight Fluor" -msgstr "" - -#: src/olympusmn.cpp:1062 -msgid "WB_RB levels daylight fluor" -msgstr "" - -#: src/olympusmn.cpp:1063 -msgid "WB_RB Levels Day White Fluor" -msgstr "" - -#: src/olympusmn.cpp:1063 -msgid "WB_RB levels day white fluor" -msgstr "" - -#: src/olympusmn.cpp:1064 -msgid "WB_RB Levels Cool White Fluor" -msgstr "" - -#: src/olympusmn.cpp:1064 -msgid "WB_RB levels cool white fluor" -msgstr "" - -#: src/olympusmn.cpp:1065 -msgid "WB_RB Levels White Fluorescent" -msgstr "" - -#: src/olympusmn.cpp:1065 -msgid "WB_RB levels white fluorescent" -msgstr "" - -#: src/olympusmn.cpp:1066 -msgid "Color Matrix2" -msgstr "" - -#: src/olympusmn.cpp:1066 -msgid "Color matrix 2" -msgstr "" - -#: src/olympusmn.cpp:1069 -msgid "Black Level 2" -msgstr "" - -#: src/olympusmn.cpp:1069 -msgid "Black level 2" -msgstr "" - -#: src/olympusmn.cpp:1070 src/properties.cpp:508 src/tags.cpp:699 -msgid "YCbCr Coefficients" -msgstr "" - -#: src/olympusmn.cpp:1070 -msgid "YCbCr coefficients" -msgstr "" - -#: src/olympusmn.cpp:1071 -msgid "Valid Pixel Depth" -msgstr "" - -#: src/olympusmn.cpp:1071 -msgid "Valid pixel depth" -msgstr "" - -#: src/olympusmn.cpp:1077 -msgid "White Balance Comp" -msgstr "" - -#: src/olympusmn.cpp:1077 -msgid "White balance comp" -msgstr "" - -#: src/olympusmn.cpp:1078 -msgid "Saturation Setting" -msgstr "" - -#: src/olympusmn.cpp:1079 -msgid "Hue Setting" -msgstr "" - -#: src/olympusmn.cpp:1079 -msgid "Hue setting" -msgstr "" - -#: src/olympusmn.cpp:1082 -msgid "CM Exposure Compensation" -msgstr "" - -#: src/olympusmn.cpp:1082 -msgid "CM exposure compensation" -msgstr "" - -#: src/olympusmn.cpp:1083 -msgid "CM White Balance" -msgstr "" - -#: src/olympusmn.cpp:1083 -msgid "CM white balance" -msgstr "" - -#: src/olympusmn.cpp:1084 -msgid "CM White Balance Comp" -msgstr "" - -#: src/olympusmn.cpp:1084 -msgid "CM white balance comp" -msgstr "" - -#: src/olympusmn.cpp:1085 -msgid "CM White Balance Gray Point" -msgstr "" - -#: src/olympusmn.cpp:1085 -msgid "CM white balance gray point" -msgstr "" - -#: src/olympusmn.cpp:1086 -msgid "CM Saturation" -msgstr "" - -#: src/olympusmn.cpp:1086 -msgid "CM saturation" -msgstr "" - -#: src/olympusmn.cpp:1087 -msgid "CM Hue" -msgstr "" - -#: src/olympusmn.cpp:1087 -msgid "CM hue" -msgstr "" - -#: src/olympusmn.cpp:1088 -msgid "CM Contrast" -msgstr "" - -#: src/olympusmn.cpp:1088 -msgid "CM contrast" -msgstr "" - -#: src/olympusmn.cpp:1089 -msgid "CM Sharpness" -msgstr "" - -#: src/olympusmn.cpp:1089 -msgid "CM sharpness" -msgstr "" - -#: src/olympusmn.cpp:1091 -msgid "Unknown OlympusRi tag" -msgstr "" - -#: src/olympusmn.cpp:1114 src/pentaxmn.cpp:336 -msgid "User-Selected" -msgstr "" - -#: src/olympusmn.cpp:1115 -msgid "Auto-Override" -msgstr "" - -#: src/olympusmn.cpp:1151 -msgid "Fast" -msgstr "" - -#: src/olympusmn.cpp:1208 -msgid "3000 Kelvin" -msgstr "" - -#: src/olympusmn.cpp:1209 -msgid "3700 Kelvin" -msgstr "" - -#: src/olympusmn.cpp:1210 -msgid "4000 Kelvin" -msgstr "" - -#: src/olympusmn.cpp:1211 -msgid "4500 Kelvin" -msgstr "" - -#: src/olympusmn.cpp:1212 -msgid "5500 Kelvin" -msgstr "" - -#: src/olympusmn.cpp:1213 -msgid "6500 Kelvin" -msgstr "" - -#: src/olympusmn.cpp:1214 -msgid "7500 Kelvin" -msgstr "" - -#: src/olympusmn.cpp:1220 -msgid "One-touch" -msgstr "" - -#: src/olympusmn.cpp:1241 -msgid "Olympus Zuiko Digital ED 50mm F2.0 Macro" -msgstr "" - -#: src/olympusmn.cpp:1242 -msgid "Olympus Zuiko Digital 40-150mm F3.5-4.5" -msgstr "" - -#: src/olympusmn.cpp:1243 src/olympusmn.cpp:1259 -msgid "Olympus Zuiko Digital ED 14-42mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1244 -msgid "Olympus Zuiko Digital ED 150mm F2.0" -msgstr "" - -#: src/olympusmn.cpp:1245 -msgid "Olympus Zuiko Digital 17mm F2.8 Pancake" -msgstr "" - -#: src/olympusmn.cpp:1246 -msgid "Olympus Zuiko Digital ED 300mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1247 -msgid "Olympus Zuiko Digital 14-54mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1248 -msgid "Olympus Zuiko Digital Pro ED 90-250mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1249 -msgid "Olympus Zuiko Digital ED 50-200mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1250 -msgid "Olympus Zuiko Digital ED 8mm F3.5 Fisheye" -msgstr "" - -#: src/olympusmn.cpp:1251 -msgid "Olympus Zuiko Digital 11-22mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1252 -msgid "Olympus Zuiko Digital 18-180mm F3.5-6.3" -msgstr "" - -#: src/olympusmn.cpp:1253 -msgid "Olympus Zuiko Digital 70-300mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1254 -msgid "Olympus Zuiko Digital ED 7-14mm F4.0" -msgstr "" - -#: src/olympusmn.cpp:1255 -msgid "Olympus Zuiko Digital Pro ED 35-100mm F2.0" -msgstr "" - -#: src/olympusmn.cpp:1256 -msgid "Olympus Zuiko Digital 14-45mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1257 -msgid "Olympus Zuiko Digital 35mm F3.5 Macro" -msgstr "" - -#: src/olympusmn.cpp:1258 -msgid "Olympus Zuiko Digital 17.5-45mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1260 -msgid "Olympus Zuiko Digital ED 40-150mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1261 -msgid "Olympus Zuiko Digital ED 50-200mm F2.8-3.5 SWD" -msgstr "" - -#: src/olympusmn.cpp:1262 -msgid "Olympus Zuiko Digital ED 12-60mm F2.8-4.0 SWD" -msgstr "" - -#: src/olympusmn.cpp:1263 -msgid "Olympus Zuiko Digital ED 14-35mm F2.0 SWD" -msgstr "" - -#: src/olympusmn.cpp:1264 -msgid "Olympus Zuiko Digital 25mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1265 -msgid "Olympus Zuiko Digital ED 9-18mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1266 -msgid "Olympus Zuiko Digital 14-54mm F2.8-3.5 II" -msgstr "" - -#: src/olympusmn.cpp:1267 -msgid "Sigma 18-50mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1268 -msgid "Sigma 55-200mm F4.0-5.6 DC" -msgstr "" - -#: src/olympusmn.cpp:1269 -msgid "Sigma 18-125mm F3.5-5.6 DC" -msgstr "" - -#: src/olympusmn.cpp:1270 -msgid "Sigma 18-125mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1271 -msgid "Sigma 30mm F1.4" -msgstr "" - -#: src/olympusmn.cpp:1272 src/olympusmn.cpp:1278 -msgid "Sigma 50-500mm F4.0-6.3 EX DG APO HSM RF" -msgstr "" - -#: src/olympusmn.cpp:1273 -msgid "Sigma 105mm F2.8 DG" -msgstr "" - -#: src/olympusmn.cpp:1274 -msgid "Sigma 150mm F2.8 DG HSM" -msgstr "" - -#: src/olympusmn.cpp:1275 -msgid "Sigma 24mm F1.8 EX DG Aspherical Macro" -msgstr "" - -#: src/olympusmn.cpp:1276 -msgid "Sigma 135-400mm F4.5-5.6 DG ASP APO RF" -msgstr "" - -#: src/olympusmn.cpp:1277 -msgid "Sigma 300-800mm F5.6 EX DG APO" -msgstr "" - -#: src/olympusmn.cpp:1279 -msgid "Sigma 10-20mm F4.0-5.6 EX DC HSM" -msgstr "" - -#: src/olympusmn.cpp:1280 src/olympusmn.cpp:1289 -msgid "Leica D Vario Elmarit 14-50mm F2.8-3.5 Asph." -msgstr "" - -#: src/olympusmn.cpp:1281 -msgid "Lumix G Vario 14-45mm F3.5-5.6 Asph. Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1282 src/olympusmn.cpp:1290 -msgid "Leica D Summilux 25mm F1.4 Asph." -msgstr "" - -#: src/olympusmn.cpp:1283 -msgid "Lumix G Vario 45-200mm F4-5.6 Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1284 -msgid "Leica D Vario Elmar 14-50mm F3.8-5.6 Asph." -msgstr "" - -#: src/olympusmn.cpp:1285 -msgid "Lumix G Vario HD 14-140mm F4-5.8 Asph. Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1286 -msgid "Leica D Vario Elmar 14-150mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1287 -msgid "Lumix G Vario 7-14mm F4 Asph." -msgstr "" - -#: src/olympusmn.cpp:1288 -msgid "Lumix G 20mm F1.7 Asph." -msgstr "" - -#: src/olympusmn.cpp:1338 -msgid "Olympus Zuiko Digital EC-14 1.4x Teleconverter" -msgstr "" - -#: src/olympusmn.cpp:1339 -msgid "Olympus EX-25 Extension Tube" -msgstr "" - -#: src/olympusmn.cpp:1340 -msgid "Olympus Zuiko Digital EC-20 2.0x Teleconverter" -msgstr "" - -#: src/olympusmn.cpp:1382 -msgid "S-AF" -msgstr "" - -#: src/olympusmn.cpp:1383 -msgid "C-AF" -msgstr "" - -#: src/olympusmn.cpp:1386 -msgid "Imager AF" -msgstr "" - -#: src/olympusmn.cpp:1387 -msgid "AF sensor" -msgstr "" - -#: src/olympusmn.cpp:1433 -msgid "Soft Focus" -msgstr "" - -#: src/olympusmn.cpp:1434 -msgid "Pop Art" -msgstr "" - -#: src/olympusmn.cpp:1435 -msgid "Pale & Light Color" -msgstr "" - -#: src/olympusmn.cpp:1436 -msgid "Light Tone" -msgstr "" - -#: src/olympusmn.cpp:1437 -msgid "Pin Hole" -msgstr "" - -#: src/olympusmn.cpp:1438 -msgid "Grainy Film" -msgstr "" - -#: src/olympusmn.cpp:1439 -msgid "Diorama" -msgstr "" - -#: src/olympusmn.cpp:1440 -msgid "Cross Process" -msgstr "" - -#: src/olympusmn.cpp:1441 -msgid "Fish Eye" -msgstr "" - -#: src/olympusmn.cpp:1442 -msgid "Drawing" -msgstr "" - -#: src/olympusmn.cpp:1489 -msgid "Left (or n/a)" -msgstr "" - -#: src/olympusmn.cpp:1490 src/olympusmn.cpp:1508 -msgid "Center (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1492 src/olympusmn.cpp:1519 -msgid "Center (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1503 -msgid "Top-left (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1504 -msgid "Top-center (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1505 -msgid "Top-right (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1506 -msgid "Left (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1507 -msgid "Mid-left (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1509 -msgid "Mid-right (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1510 -msgid "Right (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1511 -msgid "Bottom-left (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1512 -msgid "Bottom-center (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1513 -msgid "Bottom-right (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1514 -msgid "Top-left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1515 -msgid "Top-center (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1516 -msgid "Top-right (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1517 -msgid "Left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1518 -msgid "Mid-left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1520 -msgid "Mid-right (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1521 -msgid "Right (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1522 -msgid "Bottom-left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1523 -msgid "Bottom-center (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1524 -msgid "Bottom-right (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1561 -msgid "Single Target" -msgstr "" - -#: src/olympusmn.cpp:1562 -msgid "All Target" -msgstr "" - -#: src/olympusmn.cpp:1563 -msgid "Dynamic Single Target" -msgstr "" - -#: src/panasonicmn.cpp:57 src/pentaxmn.cpp:348 src/pentaxmn.cpp:361 -msgid "Very High" -msgstr "" - -#: src/panasonicmn.cpp:59 -msgid "Motion Picture" -msgstr "" - -#: src/panasonicmn.cpp:67 -msgid "Halogen" -msgstr "" - -#: src/panasonicmn.cpp:79 -msgid "Auto, focus button" -msgstr "" - -#: src/panasonicmn.cpp:80 src/panasonicmn.cpp:81 -msgid "Auto, continuous" -msgstr "" - -#: src/panasonicmn.cpp:95 -msgid "Tele-macro" -msgstr "" - -#: src/panasonicmn.cpp:103 -msgid "Scenery" -msgstr "" - -#: src/panasonicmn.cpp:108 -msgid "Shutter-speed priority" -msgstr "" - -#: src/panasonicmn.cpp:112 -msgid "Movie preview" -msgstr "" - -#: src/panasonicmn.cpp:113 -msgid "Panning" -msgstr "" - -#: src/panasonicmn.cpp:114 -msgid "Simple" -msgstr "" - -#: src/panasonicmn.cpp:115 -msgid "Color effects" -msgstr "" - -#: src/panasonicmn.cpp:119 -msgid "Night scenery" -msgstr "" - -#: src/panasonicmn.cpp:121 -msgid "Baby" -msgstr "" - -#: src/panasonicmn.cpp:122 -msgid "Soft skin" -msgstr "" - -#: src/panasonicmn.cpp:123 src/pentaxmn.cpp:484 -msgid "Candlelight" -msgstr "" - -#: src/panasonicmn.cpp:124 -msgid "Starry night" -msgstr "" - -#: src/panasonicmn.cpp:125 -msgid "High sensitivity" -msgstr "" - -#: src/panasonicmn.cpp:126 -msgid "Panorama assist" -msgstr "" - -#: src/panasonicmn.cpp:129 -msgid "Aerial photo" -msgstr "" - -#: src/panasonicmn.cpp:132 -msgid "Intelligent ISO" -msgstr "" - -#: src/panasonicmn.cpp:133 -msgid "High speed continuous shooting" -msgstr "" - -#: src/panasonicmn.cpp:134 -msgid "Intelligent auto" -msgstr "" - -#: src/panasonicmn.cpp:146 -msgid "Warm" -msgstr "" - -#: src/panasonicmn.cpp:147 -msgid "Cool" -msgstr "" - -#: src/panasonicmn.cpp:155 -msgid "Low/High quality" -msgstr "" - -#: src/panasonicmn.cpp:156 -msgid "Infinite" -msgstr "" - -#: src/panasonicmn.cpp:164 -msgid "Medium low" -msgstr "" - -#: src/panasonicmn.cpp:165 -msgid "Medium high" -msgstr "" - -#: src/panasonicmn.cpp:175 -msgid "Low (-1)" -msgstr "" - -#: src/panasonicmn.cpp:176 -msgid "High (+1)" -msgstr "" - -#: src/panasonicmn.cpp:177 -msgid "Lowest (-2)" -msgstr "" - -#: src/panasonicmn.cpp:178 -msgid "Highest (+2)" -msgstr "" - -#: src/panasonicmn.cpp:184 -msgid "10s" -msgstr "" - -#: src/panasonicmn.cpp:185 -msgid "2s" -msgstr "" - -#: src/panasonicmn.cpp:205 -msgid "EX optics" -msgstr "" - -#: src/panasonicmn.cpp:212 -msgid "Telephoto" -msgstr "" - -#: src/panasonicmn.cpp:219 src/properties.cpp:890 -msgid "Home" -msgstr "" - -#: src/panasonicmn.cpp:225 -msgid "Standard (color)" -msgstr "" - -#: src/panasonicmn.cpp:226 -msgid "Dynamic (color)" -msgstr "" - -#: src/panasonicmn.cpp:227 -msgid "Nature (color)" -msgstr "" - -#: src/panasonicmn.cpp:228 -msgid "Smooth (color)" -msgstr "" - -#: src/panasonicmn.cpp:229 -msgid "Standard (B&W)" -msgstr "" - -#: src/panasonicmn.cpp:230 -msgid "Dynamic (B&W)" -msgstr "" - -#: src/panasonicmn.cpp:231 -msgid "Smooth (B&W)" -msgstr "" - -#: src/panasonicmn.cpp:245 -msgid "Audio" -msgstr "" - -#: src/panasonicmn.cpp:248 -msgid "White balance adjustment" -msgstr "" - -#: src/panasonicmn.cpp:249 -msgid "FlashBias" -msgstr "" - -#: src/panasonicmn.cpp:251 src/tags.cpp:190 -msgid "Exif version" -msgstr "" - -#: src/panasonicmn.cpp:253 -msgid "Color Effect" -msgstr "" - -#: src/panasonicmn.cpp:253 -msgid "Color effect" -msgstr "" - -#: src/panasonicmn.cpp:254 -msgid "" -"Time in 1/100 s from when the camera was powered on to when the image is " -"written to memory card" -msgstr "" - -#: src/panasonicmn.cpp:255 -msgid "Burst Mode" -msgstr "" - -#: src/panasonicmn.cpp:255 -msgid "Burst mode" -msgstr "" - -#: src/panasonicmn.cpp:258 -msgid "NoiseReduction" -msgstr "" - -#: src/panasonicmn.cpp:259 -msgid "Self Timer" -msgstr "" - -#: src/panasonicmn.cpp:264 src/panasonicmn.cpp:286 -msgid "Baby Age" -msgstr "" - -#: src/panasonicmn.cpp:264 src/panasonicmn.cpp:286 -msgid "Baby (or pet) age" -msgstr "" - -#: src/panasonicmn.cpp:265 -msgid "Optical Zoom Mode" -msgstr "" - -#: src/panasonicmn.cpp:265 -msgid "Optical zoom mode" -msgstr "" - -#: src/panasonicmn.cpp:266 -msgid "Conversion Lens" -msgstr "" - -#: src/panasonicmn.cpp:266 -msgid "Conversion lens" -msgstr "" - -#: src/panasonicmn.cpp:267 -msgid "Travel Day" -msgstr "" - -#: src/panasonicmn.cpp:267 -msgid "Travel day" -msgstr "" - -#: src/panasonicmn.cpp:269 -msgid "World Time Location" -msgstr "" - -#: src/panasonicmn.cpp:269 -msgid "World time location" -msgstr "" - -#: src/panasonicmn.cpp:270 -msgid "Program ISO" -msgstr "" - -#: src/panasonicmn.cpp:274 -msgid "WB Adjust AB" -msgstr "" - -#: src/panasonicmn.cpp:274 -msgid "WB adjust AB. Positive is a shift toward blue." -msgstr "" - -#: src/panasonicmn.cpp:275 -msgid "WB Adjust GM" -msgstr "" - -#: src/panasonicmn.cpp:275 -msgid "WBAdjustGM. Positive is a shift toward green." -msgstr "" - -#: src/panasonicmn.cpp:278 -msgid "Accessory Type" -msgstr "" - -#: src/panasonicmn.cpp:278 -msgid "Accessory type" -msgstr "" - -#: src/panasonicmn.cpp:281 -msgid "MakerNote Version" -msgstr "" - -#: src/panasonicmn.cpp:281 -msgid "MakerNote version" -msgstr "" - -#: src/panasonicmn.cpp:283 src/panasonicmn.cpp:345 -msgid "WB Red Level" -msgstr "" - -#: src/panasonicmn.cpp:283 src/panasonicmn.cpp:345 -msgid "WB red level" -msgstr "" - -#: src/panasonicmn.cpp:284 src/panasonicmn.cpp:346 -msgid "WB Green Level" -msgstr "" - -#: src/panasonicmn.cpp:284 src/panasonicmn.cpp:346 -msgid "WB green level" -msgstr "" - -#: src/panasonicmn.cpp:285 src/panasonicmn.cpp:347 -msgid "WB Blue Level" -msgstr "" - -#: src/panasonicmn.cpp:285 src/panasonicmn.cpp:347 -msgid "WB blue level" -msgstr "" - -#: src/panasonicmn.cpp:288 -msgid "Unknown PanasonicMakerNote tag" -msgstr "" - -#: src/panasonicmn.cpp:305 -msgid "Spot mode on" -msgstr "" - -#: src/panasonicmn.cpp:306 -msgid "Spot mode off or 3-area (high speed)" -msgstr "" - -#: src/panasonicmn.cpp:307 -msgid "Spot focussing" -msgstr "" - -#: src/panasonicmn.cpp:308 -msgid "5-area" -msgstr "" - -#: src/panasonicmn.cpp:309 -msgid "1-area" -msgstr "" - -#: src/panasonicmn.cpp:310 -msgid "1-area (high speed)" -msgstr "" - -#: src/panasonicmn.cpp:311 -msgid "3-area (auto)" -msgstr "" - -#: src/panasonicmn.cpp:312 -msgid "3-area (left)" -msgstr "" - -#: src/panasonicmn.cpp:313 -msgid "3-area (center)" -msgstr "" - -#: src/panasonicmn.cpp:314 -msgid "3-area (right)" -msgstr "" - -#: src/panasonicmn.cpp:326 -msgid " EV" -msgstr "" - -#: src/panasonicmn.cpp:335 -msgid "Panasonic raw version" -msgstr "" - -#: src/panasonicmn.cpp:336 -msgid "Sensor Width" -msgstr "" - -#: src/panasonicmn.cpp:336 -msgid "Sensor width" -msgstr "" - -#: src/panasonicmn.cpp:337 -msgid "Sensor Height" -msgstr "" - -#: src/panasonicmn.cpp:337 -msgid "Sensor height" -msgstr "" - -#: src/panasonicmn.cpp:338 -msgid "Sensor Top Border" -msgstr "" - -#: src/panasonicmn.cpp:338 -msgid "Sensor top border" -msgstr "" - -#: src/panasonicmn.cpp:339 -msgid "Sensor Left Border" -msgstr "" - -#: src/panasonicmn.cpp:339 -msgid "Sensor left border" -msgstr "" - -#: src/panasonicmn.cpp:342 -msgid "Red balance (found in Digilux 2 RAW images)" -msgstr "" - -#: src/panasonicmn.cpp:349 src/tags.cpp:465 -msgid "Manufacturer" -msgstr "" - -#: src/panasonicmn.cpp:349 -msgid "The manufacturer of the recording equipment" -msgstr "" - -#: src/panasonicmn.cpp:350 src/properties.cpp:518 src/tags.cpp:471 -msgid "Model" -msgstr "" - -#: src/panasonicmn.cpp:350 -msgid "The model name or model number of the equipment" -msgstr "" - -#: src/panasonicmn.cpp:351 src/tags.cpp:477 -msgid "Strip Offsets" -msgstr "" - -#: src/panasonicmn.cpp:351 -msgid "Strip offsets" -msgstr "" - -#: src/panasonicmn.cpp:352 src/properties.cpp:485 src/tags.cpp:484 -msgid "Orientation" -msgstr "" - -#: src/panasonicmn.cpp:353 -msgid "Rows Per Strip" -msgstr "" - -#: src/panasonicmn.cpp:353 -msgid "The number of rows per strip" -msgstr "" - -#: src/panasonicmn.cpp:354 -msgid "Strip Byte Counts" -msgstr "" - -#: src/panasonicmn.cpp:354 -msgid "Strip byte counts" -msgstr "" - -#: src/panasonicmn.cpp:355 -msgid "Raw Data Offset" -msgstr "" - -#: src/panasonicmn.cpp:355 -msgid "Raw data offset" -msgstr "" - -#: src/panasonicmn.cpp:356 src/tags.cpp:790 -msgid "Exif IFD Pointer" -msgstr "" - -#: src/panasonicmn.cpp:356 -msgid "A pointer to the Exif IFD" -msgstr "" - -#: src/panasonicmn.cpp:357 src/tags.cpp:801 -msgid "GPS Info IFD Pointer" -msgstr "" - -#: src/panasonicmn.cpp:357 -msgid "A pointer to the GPS Info IFD" -msgstr "" - -#: src/panasonicmn.cpp:359 -msgid "Unknown PanasonicRaw tag" -msgstr "" - -#: src/pentaxmn.cpp:57 -msgid "Night-Scene" -msgstr "" - -#: src/pentaxmn.cpp:63 -msgid "Optio 330/430" -msgstr "" - -#: src/pentaxmn.cpp:64 -msgid "Optio 230" -msgstr "" - -#: src/pentaxmn.cpp:65 -msgid "Optio 330GS" -msgstr "" - -#: src/pentaxmn.cpp:66 -msgid "Optio 450/550" -msgstr "" - -#: src/pentaxmn.cpp:67 -msgid "Optio S" -msgstr "" - -#: src/pentaxmn.cpp:68 -msgid "*ist D" -msgstr "" - -#: src/pentaxmn.cpp:69 -msgid "Optio 33L" -msgstr "" - -#: src/pentaxmn.cpp:70 -msgid "Optio 33LF" -msgstr "" - -#: src/pentaxmn.cpp:71 -msgid "Optio 33WR/43WR/555" -msgstr "" - -#: src/pentaxmn.cpp:72 -msgid "Optio S4" -msgstr "" - -#: src/pentaxmn.cpp:73 -msgid "Optio MX" -msgstr "" - -#: src/pentaxmn.cpp:74 -msgid "Optio S40" -msgstr "" - -#: src/pentaxmn.cpp:75 -msgid "Optio S4i" -msgstr "" - -#: src/pentaxmn.cpp:76 -msgid "Optio 30" -msgstr "" - -#: src/pentaxmn.cpp:77 -msgid "Optio S30" -msgstr "" - -#: src/pentaxmn.cpp:78 -msgid "Optio 750Z" -msgstr "" - -#: src/pentaxmn.cpp:79 -msgid "Optio SV" -msgstr "" - -#: src/pentaxmn.cpp:80 -msgid "Optio SVi" -msgstr "" - -#: src/pentaxmn.cpp:81 -msgid "Optio X" -msgstr "" - -#: src/pentaxmn.cpp:82 -msgid "Optio S5i" -msgstr "" - -#: src/pentaxmn.cpp:83 -msgid "Optio S50" -msgstr "" - -#: src/pentaxmn.cpp:84 -msgid "*ist DS" -msgstr "" - -#: src/pentaxmn.cpp:85 -msgid "Optio MX4" -msgstr "" - -#: src/pentaxmn.cpp:86 -msgid "Optio S5n" -msgstr "" - -#: src/pentaxmn.cpp:87 -msgid "Optio WP" -msgstr "" - -#: src/pentaxmn.cpp:88 -msgid "Optio S55" -msgstr "" - -#: src/pentaxmn.cpp:89 -msgid "Optio S5z" -msgstr "" - -#: src/pentaxmn.cpp:90 -msgid "*ist DL" -msgstr "" - -#: src/pentaxmn.cpp:91 -msgid "Optio S60" -msgstr "" - -#: src/pentaxmn.cpp:92 -msgid "Optio S45" -msgstr "" - -#: src/pentaxmn.cpp:93 -msgid "Optio S6" -msgstr "" - -#: src/pentaxmn.cpp:94 -msgid "Optio WPi" -msgstr "" - -#: src/pentaxmn.cpp:95 -msgid "BenQ DC X600" -msgstr "" - -#: src/pentaxmn.cpp:96 -msgid "*ist DS2" -msgstr "" - -#: src/pentaxmn.cpp:97 -msgid "Samsung GX-1S" -msgstr "" - -#: src/pentaxmn.cpp:98 -msgid "Optio A10" -msgstr "" - -#: src/pentaxmn.cpp:99 -msgid "*ist DL2" -msgstr "" - -#: src/pentaxmn.cpp:100 -msgid "Samsung GX-1L" -msgstr "" - -#: src/pentaxmn.cpp:101 -msgid "K100D" -msgstr "" - -#: src/pentaxmn.cpp:102 -msgid "K110D" -msgstr "" - -#: src/pentaxmn.cpp:103 -msgid "K100D Super" -msgstr "" - -#: src/pentaxmn.cpp:104 -msgid "Optio T10/T20" -msgstr "" - -#: src/pentaxmn.cpp:105 -msgid "Optio W10" -msgstr "" - -#: src/pentaxmn.cpp:106 -msgid "Optio M10" -msgstr "" - -#: src/pentaxmn.cpp:107 -msgid "K10D" -msgstr "" - -#: src/pentaxmn.cpp:108 -msgid "Samsung GX10" -msgstr "" - -#: src/pentaxmn.cpp:109 -msgid "Optio S7" -msgstr "" - -#: src/pentaxmn.cpp:110 -msgid "Optio L20" -msgstr "" - -#: src/pentaxmn.cpp:111 -msgid "Optio M20" -msgstr "" - -#: src/pentaxmn.cpp:112 -msgid "Optio W20" -msgstr "" - -#: src/pentaxmn.cpp:113 -msgid "Optio A20" -msgstr "" - -#: src/pentaxmn.cpp:114 -msgid "Optio M30" -msgstr "" - -#: src/pentaxmn.cpp:115 -msgid "Optio E30" -msgstr "" - -#: src/pentaxmn.cpp:116 -msgid "Optio E35" -msgstr "" - -#: src/pentaxmn.cpp:117 -msgid "Optio T30" -msgstr "" - -#: src/pentaxmn.cpp:118 -msgid "Optio W30" -msgstr "" - -#: src/pentaxmn.cpp:119 -msgid "Optio A30" -msgstr "" - -#: src/pentaxmn.cpp:120 -msgid "Optio E40" -msgstr "" - -#: src/pentaxmn.cpp:121 -msgid "Optio M40" -msgstr "" - -#: src/pentaxmn.cpp:122 -msgid "Optio Z10" -msgstr "" - -#: src/pentaxmn.cpp:123 -msgid "K20D" -msgstr "" - -#: src/pentaxmn.cpp:124 -msgid "Samsung GX20" -msgstr "" - -#: src/pentaxmn.cpp:125 -msgid "Optio S10" -msgstr "" - -#: src/pentaxmn.cpp:126 -msgid "Optio A40" -msgstr "" - -#: src/pentaxmn.cpp:127 -msgid "Optio V10" -msgstr "" - -#: src/pentaxmn.cpp:128 -msgid "K200D" -msgstr "" - -#: src/pentaxmn.cpp:129 -msgid "Optio S12" -msgstr "" - -#: src/pentaxmn.cpp:130 -msgid "Optio E50" -msgstr "" - -#: src/pentaxmn.cpp:131 -msgid "Optio M50" -msgstr "" - -#: src/pentaxmn.cpp:132 -msgid "Optio V20" -msgstr "" - -#: src/pentaxmn.cpp:133 -msgid "Optio W60" -msgstr "" - -#: src/pentaxmn.cpp:134 -msgid "Optio M60" -msgstr "" - -#: src/pentaxmn.cpp:135 -msgid "Optio E60" -msgstr "" - -#: src/pentaxmn.cpp:136 -msgid "K2000" -msgstr "" - -#: src/pentaxmn.cpp:137 -msgid "K-m" -msgstr "" - -#: src/pentaxmn.cpp:138 -msgid "Optio P70" -msgstr "" - -#: src/pentaxmn.cpp:139 -msgid "Optio E70" -msgstr "" - -#: src/pentaxmn.cpp:140 -msgid "X70" -msgstr "" - -#: src/pentaxmn.cpp:141 -msgid "K-7" -msgstr "" - -#: src/pentaxmn.cpp:142 -msgid "Optio W80" -msgstr "" - -#: src/pentaxmn.cpp:143 -msgid "Optio P80" -msgstr "" - -#: src/pentaxmn.cpp:144 -msgid "Optio WS80" -msgstr "" - -#: src/pentaxmn.cpp:145 -msgid "K-x" -msgstr "" - -#: src/pentaxmn.cpp:146 -msgid "645D" -msgstr "" - -#: src/pentaxmn.cpp:147 -msgid "Optio I-10" -msgstr "" - -#: src/pentaxmn.cpp:152 -msgid "Good" -msgstr "" - -#: src/pentaxmn.cpp:153 -msgid "Better" -msgstr "" - -#: src/pentaxmn.cpp:154 -msgid "Best" -msgstr "" - -#: src/pentaxmn.cpp:155 -msgid "TIFF" -msgstr "" - -#: src/pentaxmn.cpp:157 -msgid "Premium" -msgstr "" - -#: src/pentaxmn.cpp:162 -msgid "640x480" -msgstr "" - -#: src/pentaxmn.cpp:164 -msgid "1024x768" -msgstr "" - -#: src/pentaxmn.cpp:165 -msgid "1280x960" -msgstr "" - -#: src/pentaxmn.cpp:166 -msgid "1600x1200" -msgstr "" - -#: src/pentaxmn.cpp:167 -msgid "2048x1536" -msgstr "" - -#: src/pentaxmn.cpp:168 -msgid "2560x1920 or 2304x1728" -msgstr "" - -#: src/pentaxmn.cpp:169 -msgid "3072x2304" -msgstr "" - -#: src/pentaxmn.cpp:170 -msgid "3264x2448" -msgstr "" - -#: src/pentaxmn.cpp:171 -msgid "320x240" -msgstr "" - -#: src/pentaxmn.cpp:172 -msgid "2288x1712" -msgstr "" - -#: src/pentaxmn.cpp:173 -msgid "2592x1944" -msgstr "" - -#: src/pentaxmn.cpp:174 -msgid "2304x1728 or 2592x1944" -msgstr "" - -#: src/pentaxmn.cpp:175 -msgid "3056x2296" -msgstr "" - -#: src/pentaxmn.cpp:176 -msgid "2816x2212 or 2816x2112" -msgstr "" - -#: src/pentaxmn.cpp:177 -msgid "3648x2736" -msgstr "" - -#: src/pentaxmn.cpp:182 -msgid "Auto, Did not fire" -msgstr "" - -#: src/pentaxmn.cpp:184 -msgid "Auto, Did not fire, Red-eye reduction" -msgstr "" - -#: src/pentaxmn.cpp:185 -msgid "Auto, Fired" -msgstr "" - -#: src/pentaxmn.cpp:187 -msgid "Auto, Fired, Red-eye reduction" -msgstr "" - -#: src/pentaxmn.cpp:188 -msgid "On, Red-eye reduction" -msgstr "" - -#: src/pentaxmn.cpp:189 -msgid "On, Wireless" -msgstr "" - -#: src/pentaxmn.cpp:190 -msgid "On, Soft" -msgstr "" - -#: src/pentaxmn.cpp:191 -msgid "On, Slow-sync" -msgstr "" - -#: src/pentaxmn.cpp:192 -msgid "On, Slow-sync, Red-eye reduction" -msgstr "" - -#: src/pentaxmn.cpp:193 -msgid "On, Trailing-curtain Sync" -msgstr "" - -#: src/pentaxmn.cpp:203 -msgid "Pan Focus" -msgstr "" - -#: src/pentaxmn.cpp:204 -msgid "AF-S" -msgstr "" - -#: src/pentaxmn.cpp:205 -msgid "AF-C" -msgstr "" - -#: src/pentaxmn.cpp:206 -msgid "AF-A" -msgstr "" - -#: src/pentaxmn.cpp:212 -msgid "Fixed Center" -msgstr "" - -#: src/pentaxmn.cpp:213 -msgid "Automatic Tracking AF" -msgstr "" - -#: src/pentaxmn.cpp:214 -msgid "Face Recognition AF" -msgstr "" - -#: src/pentaxmn.cpp:231 -msgid "Fixed Center or multiple" -msgstr "" - -#: src/pentaxmn.cpp:233 -msgid "Top-center" -msgstr "" - -#: src/pentaxmn.cpp:239 -msgid "Bottom-center" -msgstr "" - -#: src/pentaxmn.cpp:245 src/pentaxmn.cpp:267 src/pentaxmn.cpp:275 -msgid "50" -msgstr "" - -#: src/pentaxmn.cpp:246 -msgid "64" -msgstr "" - -#: src/pentaxmn.cpp:247 -msgid "80" -msgstr "" - -#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:268 src/pentaxmn.cpp:277 -msgid "100" -msgstr "" - -#: src/pentaxmn.cpp:249 -msgid "125" -msgstr "" - -#: src/pentaxmn.cpp:250 -msgid "160" -msgstr "" - -#: src/pentaxmn.cpp:251 src/pentaxmn.cpp:269 src/pentaxmn.cpp:270 -#: src/pentaxmn.cpp:279 -msgid "200" -msgstr "" - -#: src/pentaxmn.cpp:252 -msgid "250" -msgstr "" - -#: src/pentaxmn.cpp:253 -msgid "320" -msgstr "" - -#: src/pentaxmn.cpp:254 src/pentaxmn.cpp:271 src/pentaxmn.cpp:281 -msgid "400" -msgstr "" - -#: src/pentaxmn.cpp:255 -msgid "500" -msgstr "" - -#: src/pentaxmn.cpp:256 -msgid "640" -msgstr "" - -#: src/pentaxmn.cpp:257 src/pentaxmn.cpp:272 src/pentaxmn.cpp:283 -msgid "800" -msgstr "" - -#: src/pentaxmn.cpp:258 -msgid "1000" -msgstr "" - -#: src/pentaxmn.cpp:259 -msgid "1250" -msgstr "" - -#: src/pentaxmn.cpp:260 src/pentaxmn.cpp:273 src/pentaxmn.cpp:285 -msgid "1600" -msgstr "" - -#: src/pentaxmn.cpp:261 -msgid "2000" -msgstr "" - -#: src/pentaxmn.cpp:262 -msgid "2500" -msgstr "" - -#: src/pentaxmn.cpp:263 src/pentaxmn.cpp:274 src/pentaxmn.cpp:287 -msgid "3200" -msgstr "" - -#: src/pentaxmn.cpp:264 -msgid "4000" -msgstr "" - -#: src/pentaxmn.cpp:265 -msgid "5000" -msgstr "" - -#: src/pentaxmn.cpp:266 -msgid "6400" -msgstr "" - -#: src/pentaxmn.cpp:276 -msgid "70" -msgstr "" - -#: src/pentaxmn.cpp:278 -msgid "140" -msgstr "" - -#: src/pentaxmn.cpp:280 -msgid "280" -msgstr "" - -#: src/pentaxmn.cpp:282 -msgid "560" -msgstr "" - -#: src/pentaxmn.cpp:284 -msgid "1100" -msgstr "" - -#: src/pentaxmn.cpp:286 -msgid "2200" -msgstr "" - -#: src/pentaxmn.cpp:304 -msgid "Multi Segment" -msgstr "" - -#: src/pentaxmn.cpp:305 -msgid "Center Weighted" -msgstr "" - -#: src/pentaxmn.cpp:317 -msgid "DaylightFluorescent" -msgstr "" - -#: src/pentaxmn.cpp:318 -msgid "DaywhiteFluorescent" -msgstr "" - -#: src/pentaxmn.cpp:319 -msgid "WhiteFluorescent" -msgstr "" - -#: src/pentaxmn.cpp:324 -msgid "User Selected" -msgstr "" - -#: src/pentaxmn.cpp:329 -msgid "Auto (Daylight)" -msgstr "" - -#: src/pentaxmn.cpp:330 -msgid "Auto (Shade)" -msgstr "" - -#: src/pentaxmn.cpp:331 -msgid "Auto (Flash)" -msgstr "" - -#: src/pentaxmn.cpp:332 -msgid "Auto (Tungsten)" -msgstr "" - -#: src/pentaxmn.cpp:333 -msgid "Auto (DaywhiteFluorescent)" -msgstr "" - -#: src/pentaxmn.cpp:334 -msgid "Auto (WhiteFluorescent)" -msgstr "" - -#: src/pentaxmn.cpp:335 -msgid "Auto (Cloudy)" -msgstr "" - -#: src/pentaxmn.cpp:337 -msgid "Preset (Fireworks?)" -msgstr "" - -#: src/pentaxmn.cpp:345 src/pentaxmn.cpp:358 -msgid "Med Low" -msgstr "" - -#: src/pentaxmn.cpp:346 src/pentaxmn.cpp:359 -msgid "Med High" -msgstr "" - -#: src/pentaxmn.cpp:369 -msgid "Med Soft" -msgstr "" - -#: src/pentaxmn.cpp:370 -msgid "Med Hard" -msgstr "" - -#: src/pentaxmn.cpp:371 -msgid "Very Soft" -msgstr "" - -#: src/pentaxmn.cpp:372 -msgid "Very Hard" -msgstr "" - -#: src/pentaxmn.cpp:377 src/pentaxmn.cpp:960 -msgid "Home town" -msgstr "" - -#: src/pentaxmn.cpp:383 -msgid "Pago Pago" -msgstr "" - -#: src/pentaxmn.cpp:384 -msgid "Honolulu" -msgstr "" - -#: src/pentaxmn.cpp:385 -msgid "Anchorage" -msgstr "" - -#: src/pentaxmn.cpp:386 -msgid "Vancouver" -msgstr "" - -#: src/pentaxmn.cpp:387 -msgid "San Fransisco" -msgstr "" - -#: src/pentaxmn.cpp:388 -msgid "Los Angeles" -msgstr "" - -#: src/pentaxmn.cpp:389 -msgid "Calgary" -msgstr "" - -#: src/pentaxmn.cpp:390 -msgid "Denver" -msgstr "" - -#: src/pentaxmn.cpp:391 -msgid "Mexico City" -msgstr "" - -#: src/pentaxmn.cpp:392 -msgid "Chicago" -msgstr "" - -#: src/pentaxmn.cpp:393 -msgid "Miami" -msgstr "" - -#: src/pentaxmn.cpp:394 -msgid "Toronto" -msgstr "" - -#: src/pentaxmn.cpp:395 -msgid "New York" -msgstr "" - -#: src/pentaxmn.cpp:396 -msgid "Santiago" -msgstr "" - -#: src/pentaxmn.cpp:397 -msgid "Caracus" -msgstr "" - -#: src/pentaxmn.cpp:398 -msgid "Halifax" -msgstr "" - -#: src/pentaxmn.cpp:399 -msgid "Buenos Aires" -msgstr "" - -#: src/pentaxmn.cpp:400 -msgid "Sao Paulo" -msgstr "" - -#: src/pentaxmn.cpp:401 -msgid "Rio de Janeiro" -msgstr "" - -#: src/pentaxmn.cpp:402 -msgid "Madrid" -msgstr "" - -#: src/pentaxmn.cpp:403 -msgid "London" -msgstr "" - -#: src/pentaxmn.cpp:404 -msgid "Paris" -msgstr "" - -#: src/pentaxmn.cpp:405 -msgid "Milan" -msgstr "" - -#: src/pentaxmn.cpp:406 -msgid "Rome" -msgstr "" - -#: src/pentaxmn.cpp:407 -msgid "Berlin" -msgstr "" - -#: src/pentaxmn.cpp:408 -msgid "Johannesburg" -msgstr "" - -#: src/pentaxmn.cpp:409 -msgid "Istanbul" -msgstr "" - -#: src/pentaxmn.cpp:410 -msgid "Cairo" -msgstr "" - -#: src/pentaxmn.cpp:411 -msgid "Jerusalem" -msgstr "" - -#: src/pentaxmn.cpp:412 -msgid "Moscow" -msgstr "" - -#: src/pentaxmn.cpp:413 -msgid "Jeddah" -msgstr "" - -#: src/pentaxmn.cpp:414 -msgid "Tehran" -msgstr "" - -#: src/pentaxmn.cpp:415 -msgid "Dubai" -msgstr "" - -#: src/pentaxmn.cpp:416 -msgid "Karachi" -msgstr "" - -#: src/pentaxmn.cpp:417 -msgid "Kabul" -msgstr "" - -#: src/pentaxmn.cpp:418 -msgid "Male" -msgstr "" - -#: src/pentaxmn.cpp:419 -msgid "Delhi" -msgstr "" - -#: src/pentaxmn.cpp:420 -msgid "Colombo" -msgstr "" - -#: src/pentaxmn.cpp:421 -msgid "Kathmandu" -msgstr "" - -#: src/pentaxmn.cpp:422 -msgid "Dacca" -msgstr "" - -#: src/pentaxmn.cpp:423 -msgid "Yangon" -msgstr "" - -#: src/pentaxmn.cpp:424 -msgid "Bangkok" -msgstr "" - -#: src/pentaxmn.cpp:425 -msgid "Kuala Lumpur" -msgstr "" - -#: src/pentaxmn.cpp:426 -msgid "Vientiane" -msgstr "" - -#: src/pentaxmn.cpp:427 -msgid "Singapore" -msgstr "" - -#: src/pentaxmn.cpp:428 -msgid "Phnom Penh" -msgstr "" - -#: src/pentaxmn.cpp:429 -msgid "Ho Chi Minh" -msgstr "" - -#: src/pentaxmn.cpp:430 -msgid "Jakarta" -msgstr "" - -#: src/pentaxmn.cpp:431 -msgid "Hong Kong" -msgstr "" - -#: src/pentaxmn.cpp:432 -msgid "Perth" -msgstr "" - -#: src/pentaxmn.cpp:433 -msgid "Beijing" -msgstr "" - -#: src/pentaxmn.cpp:434 -msgid "Shanghai" -msgstr "" - -#: src/pentaxmn.cpp:435 -msgid "Manila" -msgstr "" - -#: src/pentaxmn.cpp:436 -msgid "Taipei" -msgstr "" - -#: src/pentaxmn.cpp:437 -msgid "Seoul" -msgstr "" - -#: src/pentaxmn.cpp:438 -msgid "Adelaide" -msgstr "" - -#: src/pentaxmn.cpp:439 -msgid "Tokyo" -msgstr "" - -#: src/pentaxmn.cpp:440 -msgid "Guam" -msgstr "" - -#: src/pentaxmn.cpp:441 -msgid "Sydney" -msgstr "" - -#: src/pentaxmn.cpp:442 -msgid "Noumea" -msgstr "" - -#: src/pentaxmn.cpp:443 -msgid "Wellington" -msgstr "" - -#: src/pentaxmn.cpp:444 -msgid "Auckland" -msgstr "" - -#: src/pentaxmn.cpp:445 -msgid "Lima" -msgstr "" - -#: src/pentaxmn.cpp:446 -msgid "Dakar" -msgstr "" - -#: src/pentaxmn.cpp:447 -msgid "Algiers" -msgstr "" - -#: src/pentaxmn.cpp:448 -msgid "Helsinki" -msgstr "" - -#: src/pentaxmn.cpp:449 -msgid "Athens" -msgstr "" - -#: src/pentaxmn.cpp:450 -msgid "Nairobi" -msgstr "" - -#: src/pentaxmn.cpp:451 -msgid "Amsterdam" -msgstr "" - -#: src/pentaxmn.cpp:452 -msgid "Stockholm" -msgstr "" - -#: src/pentaxmn.cpp:453 -msgid "Lisbon" -msgstr "" - -#: src/pentaxmn.cpp:454 -msgid "Copenhagen" -msgstr "" - -#: src/pentaxmn.cpp:459 -msgid "Unprocessed" -msgstr "" - -#: src/pentaxmn.cpp:460 -msgid "Digital Filter" -msgstr "" - -#: src/pentaxmn.cpp:461 -msgid "Cropped" -msgstr "" - -#: src/pentaxmn.cpp:463 -msgid "Frame Synthesis?" -msgstr "" - -#: src/pentaxmn.cpp:469 src/pentaxmn.cpp:506 -msgid "MTF Program" -msgstr "" - -#: src/pentaxmn.cpp:475 -msgid "Night Scene Portrait" -msgstr "" - -#: src/pentaxmn.cpp:476 -msgid "No Flash" -msgstr "" - -#: src/pentaxmn.cpp:479 -msgid "Surf & Snow" -msgstr "" - -#: src/pentaxmn.cpp:482 -msgid "Kids" -msgstr "" - -#: src/pentaxmn.cpp:487 -msgid "Stage Lighting" -msgstr "" - -#: src/pentaxmn.cpp:488 -msgid "Night Snap" -msgstr "" - -#: src/pentaxmn.cpp:490 -msgid "Auto PICT (Standard)" -msgstr "" - -#: src/pentaxmn.cpp:491 -msgid "Auto PICT (Portrait)" -msgstr "" - -#: src/pentaxmn.cpp:492 -msgid "Auto PICT (Landscape)" -msgstr "" - -#: src/pentaxmn.cpp:493 -msgid "Auto PICT (Macro)" -msgstr "" - -#: src/pentaxmn.cpp:494 -msgid "Auto PICT (Sport)" -msgstr "" - -#: src/pentaxmn.cpp:497 src/pentaxmn.cpp:507 -msgid "Green Mode" -msgstr "" - -#: src/pentaxmn.cpp:498 src/pentaxmn.cpp:508 -msgid "Shutter Speed Priority" -msgstr "" - -#: src/pentaxmn.cpp:499 src/pentaxmn.cpp:509 -msgid "Aperture Priority" -msgstr "" - -#: src/pentaxmn.cpp:501 src/pentaxmn.cpp:513 -msgid "Bulb" -msgstr "" - -#: src/pentaxmn.cpp:504 -msgid "Hi-speed Program" -msgstr "" - -#: src/pentaxmn.cpp:505 -msgid "DOF Program" -msgstr "" - -#: src/pentaxmn.cpp:510 -msgid "Program Tv Shift" -msgstr "" - -#: src/pentaxmn.cpp:511 -msgid "Program Av Shift" -msgstr "" - -#: src/pentaxmn.cpp:514 -msgid "Aperture Priority (Off-Auto-Aperture)" -msgstr "" - -#: src/pentaxmn.cpp:515 -msgid "Manual (Off-Auto-Aperture)" -msgstr "" - -#: src/pentaxmn.cpp:516 -msgid "Bulb (Off-Auto-Aperture)" -msgstr "" - -#: src/pentaxmn.cpp:518 -msgid "Shutter Priority" -msgstr "" - -#: src/pentaxmn.cpp:519 -msgid "Shutter & Aperture Priority AE" -msgstr "" - -#: src/pentaxmn.cpp:520 -msgid "Shutter & Aperture Priority AE (1)" -msgstr "" - -#: src/pentaxmn.cpp:521 -msgid "Sensitivity Priority AE" -msgstr "" - -#: src/pentaxmn.cpp:522 -msgid "Sensitivity Priority AE (1)" -msgstr "" - -#: src/pentaxmn.cpp:523 -msgid "Flash X-Sync Speed AE" -msgstr "" - -#: src/pentaxmn.cpp:524 -msgid "Flash X-Sync Speed AE (1)" -msgstr "" - -#: src/pentaxmn.cpp:527 -msgid "Video (30 fps)" -msgstr "" - -#: src/pentaxmn.cpp:528 -msgid "Video (24 fps)" -msgstr "" - -#: src/pentaxmn.cpp:535 -msgid "Continuous (Hi)" -msgstr "" - -#: src/pentaxmn.cpp:536 src/sonymn.cpp:223 -msgid "Burst" -msgstr "" - -#: src/pentaxmn.cpp:538 -msgid "Self-timer (12 sec)" -msgstr "" - -#: src/pentaxmn.cpp:539 -msgid "Self-timer (2 sec)" -msgstr "" - -#: src/pentaxmn.cpp:540 -msgid "Remote Control (3 sec)" -msgstr "" - -#: src/pentaxmn.cpp:541 -msgid "Remote Control" -msgstr "" - -#: src/pentaxmn.cpp:543 src/properties.cpp:883 -msgid "Video" -msgstr "" - -#: src/pentaxmn.cpp:554 -msgid "M-42 or No Lens" -msgstr "" - -#: src/pentaxmn.cpp:555 -msgid "K,M Lens" -msgstr "" - -#: src/pentaxmn.cpp:556 -msgid "A Series Lens" -msgstr "" - -#: src/pentaxmn.cpp:703 -msgid "Bright" -msgstr "" - -#: src/pentaxmn.cpp:706 -msgid "Vibrant" -msgstr "" - -#: src/pentaxmn.cpp:708 -msgid "Reversal film" -msgstr "" - -#: src/pentaxmn.cpp:720 -msgid "Weakest" -msgstr "" - -#: src/pentaxmn.cpp:721 -msgid "Weak" -msgstr "" - -#: src/pentaxmn.cpp:722 -msgid "Strong" -msgstr "" - -#: src/pentaxmn.cpp:832 -msgid "No extended bracketing" -msgstr "" - -#: src/pentaxmn.cpp:838 -msgid "WB-BA" -msgstr "" - -#: src/pentaxmn.cpp:841 -msgid "WB-GM" -msgstr "" - -#: src/pentaxmn.cpp:853 -msgid "Unknown " -msgstr "" - -#: src/pentaxmn.cpp:866 -msgid "Pentax Makernote version" -msgstr "" - -#: src/pentaxmn.cpp:869 -msgid "Camera shooting mode" -msgstr "" - -#: src/pentaxmn.cpp:871 src/pentaxmn.cpp:872 -msgid "Resolution of a preview image" -msgstr "" - -#: src/pentaxmn.cpp:874 -msgid "Length of a preview image" -msgstr "" - -#: src/pentaxmn.cpp:875 -msgid "Size of an IFD containing a preview image" -msgstr "" - -#: src/pentaxmn.cpp:880 -msgid "Model identification" -msgstr "" - -#: src/pentaxmn.cpp:881 -msgid "Pentax model idenfication" -msgstr "" - -#: src/pentaxmn.cpp:883 src/pentaxmn.cpp:884 src/properties.cpp:150 -msgid "Date" -msgstr "" - -#: src/pentaxmn.cpp:886 src/pentaxmn.cpp:887 -msgid "Time" -msgstr "" - -#: src/pentaxmn.cpp:890 -msgid "Image quality settings" -msgstr "" - -#: src/pentaxmn.cpp:893 -msgid "Image size settings" -msgstr "" - -#: src/pentaxmn.cpp:897 -msgid "Flash mode settings" -msgstr "" - -#: src/pentaxmn.cpp:900 -msgid "Focus mode settings" -msgstr "" - -#: src/pentaxmn.cpp:903 -msgid "Selected AF point" -msgstr "" - -#: src/pentaxmn.cpp:905 src/pentaxmn.cpp:906 -msgid "AF point in focus" -msgstr "" - -#: src/pentaxmn.cpp:912 src/pentaxmn.cpp:913 -msgid "F-Number" -msgstr "" - -#: src/pentaxmn.cpp:915 -msgid "ISO sensitivity" -msgstr "" - -#: src/pentaxmn.cpp:916 -msgid "ISO sensitivity settings" -msgstr "" - -#: src/pentaxmn.cpp:923 src/pentaxmn.cpp:924 -msgid "MeteringMode" -msgstr "" - -#: src/pentaxmn.cpp:926 src/pentaxmn.cpp:927 -msgid "AutoBracketing" -msgstr "" - -#: src/pentaxmn.cpp:929 src/pentaxmn.cpp:930 -msgid "White ballance" -msgstr "" - -#: src/pentaxmn.cpp:932 src/pentaxmn.cpp:933 -msgid "White ballance mode" -msgstr "" - -#: src/pentaxmn.cpp:936 -msgid "Blue color balance" -msgstr "" - -#: src/pentaxmn.cpp:939 -msgid "Red color balance" -msgstr "" - -#: src/pentaxmn.cpp:941 src/pentaxmn.cpp:942 -msgid "FocalLength" -msgstr "" - -#: src/pentaxmn.cpp:956 src/pentaxmn.cpp:957 src/properties.cpp:657 -msgid "Location" -msgstr "" - -#: src/pentaxmn.cpp:959 -msgid "Hometown" -msgstr "" - -#: src/pentaxmn.cpp:965 -msgid "Hometown DST" -msgstr "" - -#: src/pentaxmn.cpp:966 -msgid "Whether day saving time is active in home town" -msgstr "" - -#: src/pentaxmn.cpp:968 -msgid "Destination DST" -msgstr "" - -#: src/pentaxmn.cpp:969 -msgid "Whether day saving time is active in destination" -msgstr "" - -#: src/pentaxmn.cpp:971 src/pentaxmn.cpp:972 -msgid "DSPFirmwareVersion" -msgstr "" - -#: src/pentaxmn.cpp:974 src/pentaxmn.cpp:975 -msgid "CPUFirmwareVersion" -msgstr "" - -#: src/pentaxmn.cpp:981 -msgid "Light value" -msgstr "" - -#: src/pentaxmn.cpp:982 -msgid "Camera calculated light value, includes exposure compensation" -msgstr "" - -#: src/pentaxmn.cpp:998 src/pentaxmn.cpp:999 -msgid "Image area offset" -msgstr "" - -#: src/pentaxmn.cpp:1001 src/pentaxmn.cpp:1002 -msgid "Raw image size" -msgstr "" - -#: src/pentaxmn.cpp:1005 src/pentaxmn.cpp:1006 -msgid "Preview image borders" -msgstr "" - -#: src/pentaxmn.cpp:1011 src/pentaxmn.cpp:1012 -msgid "Sensitivity adjust" -msgstr "" - -#: src/pentaxmn.cpp:1014 src/pentaxmn.cpp:1015 -msgid "Digital filter" -msgstr "" - -#: src/pentaxmn.cpp:1019 -msgid "Camera temperature" -msgstr "" - -#: src/pentaxmn.cpp:1032 src/pentaxmn.cpp:1033 -msgid "Image tone" -msgstr "" - -#: src/pentaxmn.cpp:1035 src/pentaxmn.cpp:1036 -msgid "Colort temperature" -msgstr "" - -#: src/pentaxmn.cpp:1039 -msgid "Shake reduction" -msgstr "" - -#: src/pentaxmn.cpp:1040 -msgid "Shake reduction information" -msgstr "" - -#: src/pentaxmn.cpp:1045 src/pentaxmn.cpp:1046 -msgid "Dynamic range expansion" -msgstr "" - -#: src/pentaxmn.cpp:1048 src/pentaxmn.cpp:1049 -msgid "High ISO noise reduction" -msgstr "" - -#: src/pentaxmn.cpp:1051 src/pentaxmn.cpp:1052 -msgid "AF Adjustment" -msgstr "" - -#: src/pentaxmn.cpp:1055 src/pentaxmn.cpp:1056 -msgid "Black point" -msgstr "" - -#: src/pentaxmn.cpp:1058 src/pentaxmn.cpp:1059 -msgid "White point" -msgstr "" - -#: src/pentaxmn.cpp:1062 src/pentaxmn.cpp:1063 -msgid "ShotInfo" -msgstr "" - -#: src/pentaxmn.cpp:1065 src/pentaxmn.cpp:1066 -msgid "AEInfo" -msgstr "" - -#: src/pentaxmn.cpp:1068 src/pentaxmn.cpp:1069 -msgid "LensInfo" -msgstr "" - -#: src/pentaxmn.cpp:1071 src/pentaxmn.cpp:1072 -msgid "FlashInfo" -msgstr "" - -#: src/pentaxmn.cpp:1074 src/pentaxmn.cpp:1075 -msgid "AEMeteringSegments" -msgstr "" - -#: src/pentaxmn.cpp:1077 src/pentaxmn.cpp:1078 -msgid "FlashADump" -msgstr "" - -#: src/pentaxmn.cpp:1080 src/pentaxmn.cpp:1081 -msgid "FlashBDump" -msgstr "" - -#: src/pentaxmn.cpp:1084 src/pentaxmn.cpp:1085 -msgid "WB_RGGBLevelsDaylight" -msgstr "" - -#: src/pentaxmn.cpp:1087 src/pentaxmn.cpp:1088 -msgid "WB_RGGBLevelsShade" -msgstr "" - -#: src/pentaxmn.cpp:1090 src/pentaxmn.cpp:1091 -msgid "WB_RGGBLevelsCloudy" -msgstr "" - -#: src/pentaxmn.cpp:1093 src/pentaxmn.cpp:1094 -msgid "WB_RGGBLevelsTungsten" -msgstr "" - -#: src/pentaxmn.cpp:1096 src/pentaxmn.cpp:1097 -msgid "WB_RGGBLevelsFluorescentD" -msgstr "" - -#: src/pentaxmn.cpp:1099 src/pentaxmn.cpp:1100 -msgid "WB_RGGBLevelsFluorescentN" -msgstr "" - -#: src/pentaxmn.cpp:1102 src/pentaxmn.cpp:1103 -msgid "WB_RGGBLevelsFluorescentW" -msgstr "" - -#: src/pentaxmn.cpp:1105 src/pentaxmn.cpp:1106 -msgid "WB_RGGBLevelsFlash" -msgstr "" - -#: src/pentaxmn.cpp:1108 src/pentaxmn.cpp:1109 -msgid "CameraInfo" -msgstr "" - -#: src/pentaxmn.cpp:1111 src/pentaxmn.cpp:1112 -msgid "BatteryInfo" -msgstr "" - -#: src/pentaxmn.cpp:1114 src/pentaxmn.cpp:1115 -msgid "AFInfo" -msgstr "" - -#: src/pentaxmn.cpp:1117 src/pentaxmn.cpp:1118 -msgid "ColorInfo" -msgstr "" - -#: src/pentaxmn.cpp:1125 -msgid "Unknown PentaxMakerNote tag" -msgstr "" - -#: src/properties.cpp:102 -msgid "Dublin Core schema" -msgstr "" - -#: src/properties.cpp:103 -msgid "digiKam Photo Management schema" -msgstr "" - -#: src/properties.cpp:104 -msgid "KDE Image Program Interface schema" -msgstr "" - -#: src/properties.cpp:105 -msgid "XMP Basic schema" -msgstr "" - -#: src/properties.cpp:106 -msgid "XMP Rights Management schema" -msgstr "" - -#: src/properties.cpp:107 -msgid "XMP Media Management schema" -msgstr "" - -#: src/properties.cpp:108 -msgid "XMP Basic Job Ticket schema" -msgstr "" - -#: src/properties.cpp:109 -msgid "XMP Paged-Text schema" -msgstr "" - -#: src/properties.cpp:110 -msgid "XMP Dynamic Media schema" -msgstr "" - -#: src/properties.cpp:111 -msgid "Microsoft Photo schema" -msgstr "" - -#: src/properties.cpp:112 -msgid "Adobe PDF schema" -msgstr "" - -#: src/properties.cpp:113 -msgid "Adobe photoshop schema" -msgstr "" - -#: src/properties.cpp:114 -msgid "Camera Raw schema" -msgstr "" - -#: src/properties.cpp:115 -msgid "Exif Schema for TIFF Properties" -msgstr "" - -#: src/properties.cpp:116 -msgid "Exif schema for Exif-specific Properties" -msgstr "" - -#: src/properties.cpp:117 -msgid "Exif schema for Additional Exif Properties" -msgstr "" - -#: src/properties.cpp:118 src/properties.cpp:119 -msgid "IPTC Core schema" -msgstr "" - -#: src/properties.cpp:120 src/properties.cpp:121 -msgid "IPTC Extension schema" -msgstr "" - -#: src/properties.cpp:122 -msgid "PLUS License Data Format schema" -msgstr "" - -#: src/properties.cpp:123 -msgid "iView Media Pro schema" -msgstr "" - -#: src/properties.cpp:124 -msgid "Expression Media schema" -msgstr "" - -#: src/properties.cpp:125 -msgid "Microsoft Photo 1.2 schema" -msgstr "" - -#: src/properties.cpp:126 -msgid "Microsoft Photo RegionInfo schema" -msgstr "" - -#: src/properties.cpp:127 -msgid "Microsoft Photo Region schema" -msgstr "" - -#: src/properties.cpp:128 -msgid "Metadata Working Group Regions schema" -msgstr "" - -#: src/properties.cpp:131 -msgid "Colorant structure" -msgstr "" - -#: src/properties.cpp:132 -msgid "Dimensions structure" -msgstr "" - -#: src/properties.cpp:133 -msgid "Font structure" -msgstr "" - -#: src/properties.cpp:134 -msgid "Thumbnail structure" -msgstr "" - -#: src/properties.cpp:135 -msgid "Resource Event structure" -msgstr "" - -#: src/properties.cpp:136 -msgid "ResourceRef structure" -msgstr "" - -#: src/properties.cpp:137 -msgid "Version structure" -msgstr "" - -#: src/properties.cpp:138 -msgid "Basic Job/Workflow structure" -msgstr "" - -#: src/properties.cpp:139 -msgid "Area structure" -msgstr "" - -#: src/properties.cpp:142 -msgid "Qualifier for xmp:Identifier" -msgstr "" - -#: src/properties.cpp:146 -msgid "Contributor" -msgstr "" - -#: src/properties.cpp:146 -msgid "Contributors to the resource (other than the authors)." -msgstr "" - -#: src/properties.cpp:147 -msgid "Coverage" -msgstr "" - -#: src/properties.cpp:147 -msgid "" -"The spatial or temporal topic of the resource, the spatial applicability of " -"the resource, or the jurisdiction under which the resource is relevant." -msgstr "" - -#: src/properties.cpp:149 -msgid "Creator" -msgstr "" - -#: src/properties.cpp:149 -msgid "" -"The authors of the resource (listed in order of precedence, if significant)." -msgstr "" - -#: src/properties.cpp:150 -msgid "Date(s) that something interesting happened to the resource." -msgstr "" - -#: src/properties.cpp:151 -msgid "" -"A textual description of the content of the resource. Multiple values may be " -"present for different languages." -msgstr "" - -#: src/properties.cpp:153 -msgid "Format" -msgstr "" - -#: src/properties.cpp:153 -msgid "" -"The file format used when saving the resource. Tools and applications should " -"set this property to the save format of the data. It may include appropriate " -"qualifiers." -msgstr "" - -#: src/properties.cpp:155 src/properties.cpp:210 -msgid "Identifier" -msgstr "" - -#: src/properties.cpp:155 -msgid "" -"Unique identifier of the resource. Recommended best practice is to identify " -"the resource by means of a string conforming to a formal identification " -"system." -msgstr "" - -#: src/properties.cpp:157 -msgid "An unordered array specifying the languages used in the resource." -msgstr "" - -#: src/properties.cpp:158 -msgid "Publisher" -msgstr "" - -#: src/properties.cpp:158 -msgid "" -"An entity responsible for making the resource available. Examples of a " -"Publisher include a person, an organization, or a service. Typically, the " -"name of a Publisher should be used to indicate the entity." -msgstr "" - -#: src/properties.cpp:161 -msgid "Relation" -msgstr "" - -#: src/properties.cpp:161 -msgid "" -"Relationships to other documents. Recommended best practice is to identify " -"the related resource by means of a string conforming to a formal " -"identification system." -msgstr "" - -#: src/properties.cpp:163 -msgid "Rights" -msgstr "" - -#: src/properties.cpp:163 -msgid "" -"Informal rights statement, selected by language. Typically, rights " -"information includes a statement about various property rights associated " -"with the resource, including intellectual property rights." -msgstr "" - -#: src/properties.cpp:166 -msgid "Unique identifier of the work from which this resource was derived." -msgstr "" - -#: src/properties.cpp:167 -msgid "" -"An unordered array of descriptive phrases or keywords that specify the topic " -"of the content of the resource." -msgstr "" - -#: src/properties.cpp:169 -msgid "Title" -msgstr "" - -#: src/properties.cpp:169 -msgid "" -"The title of the document, or the name given to the resource. Typically, it " -"will be a name by which the resource is formally known." -msgstr "" - -#: src/properties.cpp:171 src/properties.cpp:979 -msgid "Type" -msgstr "" - -#: src/properties.cpp:171 -msgid "A document type; for example, novel, poem, or working paper." -msgstr "" - -#: src/properties.cpp:177 -msgid "Tags List" -msgstr "" - -#: src/properties.cpp:177 -msgid "" -"The list of complete tags path as string. The path hierarchy is separated by " -"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." -msgstr "" - -#: src/properties.cpp:178 -msgid "Captions Author Names" -msgstr "" - -#: src/properties.cpp:178 -msgid "" -"The list of all captions author names for each language alternative captions " -"set in standard XMP tags." -msgstr "" - -#: src/properties.cpp:179 -msgid "Captions Date Time Stamps" -msgstr "" - -#: src/properties.cpp:179 -msgid "" -"The list of all captions date time stamps for each language alternative " -"captions set in standard XMP tags." -msgstr "" - -#: src/properties.cpp:180 src/tags.cpp:837 -msgid "Image History" -msgstr "" - -#: src/properties.cpp:180 -msgid "" -"An XML based content to list all action processed on this image with image " -"editor (as crop, rotate, color corrections, adjustements, etc.)." -msgstr "" - -#: src/properties.cpp:181 -msgid "Lens Correction Settings" -msgstr "" - -#: src/properties.cpp:181 -msgid "" -"The list of Lens Correction tools settings used to fix lens distorsion. This " -"include Batch Queue Manager and Image editor tools based on LensFun library." -msgstr "" - -#: src/properties.cpp:182 -msgid "Color Label" -msgstr "" - -#: src/properties.cpp:182 -msgid "" -"The color label assigned to this item. Possible values are \"0\": no label; " -"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " -"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." -msgstr "" - -#: src/properties.cpp:183 -msgid "Pick Label" -msgstr "" - -#: src/properties.cpp:183 -msgid "" -"The pick label assigned to this item. Possible values are \"0\": no label; " -"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " -"accepted." -msgstr "" - -#: src/properties.cpp:189 -msgid "Enfuse Input Files" -msgstr "" - -#: src/properties.cpp:189 -msgid "" -"The list of files processed with Enfuse program through ExpoBlending tool." -msgstr "" - -#: src/properties.cpp:190 -msgid "Enfuse Settings" -msgstr "" - -#: src/properties.cpp:190 -msgid "" -"The list of Enfuse settings used to blend image stack with ExpoBlending tool." -msgstr "" - -#: src/properties.cpp:191 -msgid "PicasaWeb Item ID" -msgstr "" - -#: src/properties.cpp:191 -msgid "Item ID from PicasaWeb web service." -msgstr "" - -#: src/properties.cpp:192 -msgid "Yandex Fotki Item ID" -msgstr "" - -#: src/properties.cpp:192 -msgid "Item ID from Yandex Fotki web service." -msgstr "" - -#: src/properties.cpp:198 -msgid "Advisory" -msgstr "" - -#: src/properties.cpp:198 -msgid "" -"An unordered array specifying properties that were edited outside the " -"authoring application. Each item should contain a single namespace and XPath " -"separated by one ASCII space (U+0020)." -msgstr "" - -#: src/properties.cpp:201 -msgid "Base URL" -msgstr "" - -#: src/properties.cpp:201 -msgid "" -"The base URL for relative URLs in the document content. If this document " -"contains Internet links, and those links are relative, they are relative to " -"this base URL. This property provides a standard way for embedded relative " -"URLs to be interpreted by tools. Web authoring tools should set the value " -"based on their notion of where URLs will be interpreted." -msgstr "" - -#: src/properties.cpp:206 -msgid "Create Date" -msgstr "" - -#: src/properties.cpp:206 -msgid "The date and time the resource was originally created." -msgstr "" - -#: src/properties.cpp:207 -msgid "Creator Tool" -msgstr "" - -#: src/properties.cpp:207 -msgid "" -"The name of the first known tool used to create the resource. If history is " -"present in the metadata, this value should be equivalent to that of xmpMM:" -"History's softwareAgent property." -msgstr "" - -#: src/properties.cpp:210 -msgid "" -"An unordered array of text strings that unambiguously identify the resource " -"within a given context. An array item may be qualified with xmpidq:Scheme to " -"denote the formal identification system to which that identifier conforms. " -"Note: The dc:identifier property is not used because it lacks a defined " -"scheme qualifier and has been defined in the XMP Specification as a simple " -"(single-valued) property." -msgstr "" - -#: src/properties.cpp:215 -msgid "Label" -msgstr "" - -#: src/properties.cpp:215 -msgid "" -"A word or short phrase that identifies a document as a member of a user-" -"defined collection. Used to organize documents in a file browser." -msgstr "" - -#: src/properties.cpp:217 -msgid "Metadata Date" -msgstr "" - -#: src/properties.cpp:217 -msgid "" -"The date and time that any metadata for this resource was last changed. It " -"should be the same as or more recent than xmp:ModifyDate." -msgstr "" - -#: src/properties.cpp:219 -msgid "Modify Date" -msgstr "" - -#: src/properties.cpp:219 -msgid "" -"The date and time the resource was last modified. Note: The value of this " -"property is not necessarily the same as the file's system modification date " -"because it is set before the file is saved." -msgstr "" - -#: src/properties.cpp:222 -msgid "Nickname" -msgstr "" - -#: src/properties.cpp:222 -msgid "A short informal name for the resource." -msgstr "" - -#: src/properties.cpp:223 -msgid "Rating" -msgstr "" - -#: src/properties.cpp:223 -msgid "" -"A number that indicates a document's status relative to other documents, " -"used to organize documents in a file browser. Values are user-defined within " -"an application-defined range." -msgstr "" - -#: src/properties.cpp:226 -msgid "Thumbnails" -msgstr "" - -#: src/properties.cpp:226 -msgid "" -"An alternative array of thumbnail images for a file, which can differ in " -"characteristics such as size or image encoding." -msgstr "" - -#: src/properties.cpp:233 -msgid "Certificate" -msgstr "" - -#: src/properties.cpp:233 -msgid "Online rights management certificate." -msgstr "" - -#: src/properties.cpp:234 -msgid "Marked" -msgstr "" - -#: src/properties.cpp:234 -msgid "Indicates that this is a rights-managed resource." -msgstr "" - -#: src/properties.cpp:235 -msgid "Owner" -msgstr "" - -#: src/properties.cpp:235 -msgid "An unordered array specifying the legal owner(s) of a resource." -msgstr "" - -#: src/properties.cpp:236 -msgid "Usage Terms" -msgstr "" - -#: src/properties.cpp:236 -msgid "Text instructions on how a resource can be legally used." -msgstr "" - -#: src/properties.cpp:237 -msgid "Web Statement" -msgstr "" - -#: src/properties.cpp:237 -msgid "" -"The location of a web page describing the owner and/or rights statement for " -"this resource." -msgstr "" - -#: src/properties.cpp:243 -msgid "Derived From" -msgstr "" - -#: src/properties.cpp:243 -msgid "" -"A reference to the original document from which this one is derived. It is a " -"minimal reference; missing components can be assumed to be unchanged. For " -"example, a new version might only need to specify the instance ID and " -"version number of the previous version, or a rendition might only need to " -"specify the instance ID and rendition class of the original." -msgstr "" - -#: src/properties.cpp:248 -msgid "Document ID" -msgstr "" - -#: src/properties.cpp:248 -msgid "" -"The common identifier for all versions and renditions of a document. It " -"should be based on a UUID; see Document and Instance IDs below." -msgstr "" - -#: src/properties.cpp:250 -msgid "History" -msgstr "" - -#: src/properties.cpp:250 -msgid "" -"An ordered array of high-level user actions that resulted in this resource. " -"It is intended to give human readers a general indication of the steps taken " -"to make the changes from the previous version to this one. The list should " -"be at an abstract level; it is not intended to be an exhaustive keystroke or " -"other detailed history." -msgstr "" - -#: src/properties.cpp:254 -msgid "Instance ID" -msgstr "" - -#: src/properties.cpp:254 -msgid "" -"An identifier for a specific incarnation of a document, updated each time a " -"file is saved. It should be based on a UUID; see Document and Instance IDs " -"below." -msgstr "" - -#: src/properties.cpp:256 -msgid "Managed From" -msgstr "" - -#: src/properties.cpp:256 -msgid "" -"A reference to the document as it was prior to becoming managed. It is set " -"when a managed document is introduced to an asset management system that " -"does not currently own it. It may or may not include references to different " -"management systems." -msgstr "" - -#: src/properties.cpp:259 -msgid "Manager" -msgstr "" - -#: src/properties.cpp:259 -msgid "" -"The name of the asset management system that manages this resource. Along " -"with xmpMM: ManagerVariant, it tells applications which asset management " -"system to contact concerning this document." -msgstr "" - -#: src/properties.cpp:262 -msgid "Manage To" -msgstr "" - -#: src/properties.cpp:262 -msgid "" -"A URI identifying the managed resource to the asset management system; the " -"presence of this property is the formal indication that this resource is " -"managed. The form and content of this URI is private to the asset management " -"system." -msgstr "" - -#: src/properties.cpp:265 -msgid "Manage UI" -msgstr "" - -#: src/properties.cpp:265 -msgid "" -"A URI that can be used to access information about the managed resource " -"through a web browser. It might require a custom browser plug-in." -msgstr "" - -#: src/properties.cpp:267 -msgid "Manager Variant" -msgstr "" - -#: src/properties.cpp:267 -msgid "" -"Specifies a particular variant of the asset management system. The format of " -"this property is private to the specific asset management system." -msgstr "" - -#: src/properties.cpp:269 -msgid "Rendition Class" -msgstr "" - -#: src/properties.cpp:269 -msgid "" -"The rendition class name for this resource. This property should be absent " -"or set to default for a document version that is not a derived rendition." -msgstr "" - -#: src/properties.cpp:271 -msgid "Rendition Params" -msgstr "" - -#: src/properties.cpp:271 -msgid "" -"Can be used to provide additional rendition parameters that are too complex " -"or verbose to encode in xmpMM: RenditionClass." -msgstr "" - -#: src/properties.cpp:273 -msgid "Version ID" -msgstr "" - -#: src/properties.cpp:273 -msgid "" -"The document version identifier for this resource. Each version of a " -"document gets a new identifier, usually simply by incrementing integers 1, " -"2, 3 . . . and so on. Media management systems can have other conventions or " -"support branching which requires a more complex scheme." -msgstr "" - -#: src/properties.cpp:277 -msgid "Versions" -msgstr "" - -#: src/properties.cpp:277 -msgid "" -"The version history associated with this resource. Entry [1] is the oldest " -"known version for this document, entry [last()] is the most recent version. " -"Typically, a media management system would fill in the version information " -"in the metadata on check-in. It is not guaranteed that a complete history " -"versions from the first to this one will be present in the xmpMM:Versions " -"property. Interior version information can be compressed or eliminated and " -"the version history can be truncated at some point." -msgstr "" - -#: src/properties.cpp:283 -msgid "Last URL" -msgstr "" - -#: src/properties.cpp:283 -msgid "Deprecated for privacy protection." -msgstr "" - -#: src/properties.cpp:284 -msgid "Rendition Of" -msgstr "" - -#: src/properties.cpp:284 -msgid "" -"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " -"which this is a rendition." -msgstr "" - -#: src/properties.cpp:286 -msgid "Save ID" -msgstr "" - -#: src/properties.cpp:286 -msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." -msgstr "" - -#: src/properties.cpp:292 -msgid "Job Reference" -msgstr "" - -#: src/properties.cpp:292 -msgid "" -"References an external job management file for a job process in which the " -"document is being used. Use of job names is under user control. Typical use " -"would be to identify all documents that are part of a particular job or " -"contract. There are multiple values because there can be more than one job " -"using a particular document at any time, and it can also be useful to keep " -"historical information about what jobs a document was part of previously." -msgstr "" - -#: src/properties.cpp:301 -msgid "Maximum Page Size" -msgstr "" - -#: src/properties.cpp:301 -msgid "" -"The size of the largest page in the document (including any in contained " -"documents)." -msgstr "" - -#: src/properties.cpp:302 -msgid "Number of Pages" -msgstr "" - -#: src/properties.cpp:302 -msgid "" -"The number of pages in the document (including any in contained documents)." -msgstr "" - -#: src/properties.cpp:303 -msgid "Fonts" -msgstr "" - -#: src/properties.cpp:303 -msgid "" -"An unordered array of fonts that are used in the document (including any in " -"contained documents)." -msgstr "" - -#: src/properties.cpp:304 -msgid "Colorants" -msgstr "" - -#: src/properties.cpp:304 -msgid "" -"An ordered array of colorants (swatches) that are used in the document " -"(including any in contained documents)." -msgstr "" - -#: src/properties.cpp:305 -msgid "Plate Names" -msgstr "" - -#: src/properties.cpp:305 -msgid "" -"An ordered array of plate names that are needed to print the document " -"(including any in contained documents)." -msgstr "" - -#: src/properties.cpp:311 -msgid "Project Reference" -msgstr "" - -#: src/properties.cpp:311 -msgid "A reference to the project that created this file." -msgstr "" - -#: src/properties.cpp:312 -msgid "Video Frame Rate" -msgstr "" - -#: src/properties.cpp:312 -msgid "The video frame rate. One of: 24, NTSC, PAL." -msgstr "" - -#: src/properties.cpp:313 -msgid "Video Frame Size" -msgstr "" - -#: src/properties.cpp:313 -msgid "The frame size. For example: w:720, h: 480, unit:pixels" -msgstr "" - -#: src/properties.cpp:314 -msgid "Video Pixel Aspect Ratio" -msgstr "" - -#: src/properties.cpp:314 -msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" -msgstr "" - -#: src/properties.cpp:315 -msgid "Video Pixel Depth" -msgstr "" - -#: src/properties.cpp:315 -msgid "" -"The size in bits of each color component of a pixel. Standard Windows 32-bit " -"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." -msgstr "" - -#: src/properties.cpp:317 -msgid "Video Color Space" -msgstr "" - -#: src/properties.cpp:317 -msgid "" -"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " -"CCIR-709 (used for HD)." -msgstr "" - -#: src/properties.cpp:319 -msgid "Video Alpha Mode" -msgstr "" - -#: src/properties.cpp:319 -msgid "The alpha mode. One of: straight, pre-multiplied." -msgstr "" - -#: src/properties.cpp:320 -msgid "Video Alpha Premultiple Color" -msgstr "" - -#: src/properties.cpp:320 -msgid "" -"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " -"is pre-multiplied." -msgstr "" - -#: src/properties.cpp:322 -msgid "Video Alpha Unity Is Transparent" -msgstr "" - -#: src/properties.cpp:322 -msgid "When true, unity is clear, when false, it is opaque." -msgstr "" - -#: src/properties.cpp:323 -msgid "Video Compressor" -msgstr "" - -#: src/properties.cpp:323 -msgid "Video compression used. For example, jpeg." -msgstr "" - -#: src/properties.cpp:324 -msgid "Video Field Order" -msgstr "" - -#: src/properties.cpp:324 -msgid "The field order for video. One of: Upper, Lower, Progressive." -msgstr "" - -#: src/properties.cpp:325 -msgid "Pull Down" -msgstr "" - -#: src/properties.cpp:325 -msgid "" -"The sampling phase of film to be converted to video (pull-down). One of: " -"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " -"WWWSS_24p, WWSSW_24p." -msgstr "" - -#: src/properties.cpp:327 -msgid "Audio Sample Rate" -msgstr "" - -#: src/properties.cpp:327 -msgid "" -"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." -msgstr "" - -#: src/properties.cpp:328 -msgid "Audio Sample Type" -msgstr "" - -#: src/properties.cpp:328 -msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." -msgstr "" - -#: src/properties.cpp:329 -msgid "Audio Channel Type" -msgstr "" - -#: src/properties.cpp:329 -msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." -msgstr "" - -#: src/properties.cpp:330 -msgid "Audio Compressor" -msgstr "" - -#: src/properties.cpp:330 -msgid "The audio compression used. For example, MP3." -msgstr "" - -#: src/properties.cpp:331 -msgid "Speaker Placement" -msgstr "" - -#: src/properties.cpp:331 -msgid "" -"A description of the speaker angles from center front in degrees. For " -"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " -"-110, Right Surround = 110\"" -msgstr "" - -#: src/properties.cpp:333 -msgid "File Data Rate" -msgstr "" - -#: src/properties.cpp:333 -msgid "" -"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" -"sec" -msgstr "" - -#: src/properties.cpp:334 -msgid "Tape Name" -msgstr "" - -#: src/properties.cpp:334 -msgid "" -"The name of the tape from which the clip was captured, as set during the " -"capture process." -msgstr "" - -#: src/properties.cpp:335 -msgid "Alternative Tape Name" -msgstr "" - -#: src/properties.cpp:335 -msgid "" -"An alternative tape name, set via the project window or timecode dialog in " -"Premiere. If an alternative name has been set and has not been reverted, " -"that name is displayed." -msgstr "" - -#: src/properties.cpp:337 -msgid "Start Time Code" -msgstr "" - -#: src/properties.cpp:337 -msgid "" -"The timecode of the first frame of video in the file, as obtained from the " -"device control." -msgstr "" - -#: src/properties.cpp:338 -msgid "Alternative Time code" -msgstr "" - -#: src/properties.cpp:338 -msgid "" -"A timecode set by the user. When specified, it is used instead of the " -"startTimecode." -msgstr "" - -#: src/properties.cpp:339 -msgid "Duration" -msgstr "" - -#: src/properties.cpp:339 -msgid "The duration of the media file." -msgstr "" - -#: src/properties.cpp:340 -msgid "Scene" -msgstr "" - -#: src/properties.cpp:340 -msgid "The name of the scene." -msgstr "" - -#: src/properties.cpp:341 -msgid "Shot Name" -msgstr "" - -#: src/properties.cpp:341 -msgid "The name of the shot or take." -msgstr "" - -#: src/properties.cpp:342 -msgid "Shot Date" -msgstr "" - -#: src/properties.cpp:342 -msgid "The date and time when the video was shot." -msgstr "" - -#: src/properties.cpp:343 -msgid "Shot Location" -msgstr "" - -#: src/properties.cpp:343 -msgid "" -"The name of the location where the video was shot. For example: " -"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " -"GPS values." -msgstr "" - -#: src/properties.cpp:345 -msgid "Log Comment" -msgstr "" - -#: src/properties.cpp:345 -msgid "User's log comments." -msgstr "" - -#: src/properties.cpp:346 -msgid "Markers" -msgstr "" - -#: src/properties.cpp:346 -msgid "An ordered list of markers" -msgstr "" - -#: src/properties.cpp:347 -msgid "Contributed Media" -msgstr "" - -#: src/properties.cpp:347 -msgid "An unordered list of all media used to create this media." -msgstr "" - -#: src/properties.cpp:348 -msgid "Absolute Peak Audio File Path" -msgstr "" - -#: src/properties.cpp:348 -msgid "" -"The absolute path to the file's peak audio file. If empty, no peak file " -"exists." -msgstr "" - -#: src/properties.cpp:349 -msgid "Relative Peak Audio File Path" -msgstr "" - -#: src/properties.cpp:349 -msgid "" -"The relative path to the file's peak audio file. If empty, no peak file " -"exists." -msgstr "" - -#: src/properties.cpp:350 -msgid "Video Modified Date" -msgstr "" - -#: src/properties.cpp:350 -msgid "The date and time when the video was last modified." -msgstr "" - -#: src/properties.cpp:351 -msgid "Audio Modified Date" -msgstr "" - -#: src/properties.cpp:351 -msgid "The date and time when the audio was last modified." -msgstr "" - -#: src/properties.cpp:352 -msgid "Metadata Modified Date" -msgstr "" - -#: src/properties.cpp:352 -msgid "The date and time when the metadata was last modified." -msgstr "" - -#: src/properties.cpp:353 src/properties.cpp:521 src/tags.cpp:549 -msgid "Artist" -msgstr "" - -#: src/properties.cpp:353 -msgid "The name of the artist or artists." -msgstr "" - -#: src/properties.cpp:354 -msgid "Album" -msgstr "" - -#: src/properties.cpp:354 -msgid "The name of the album." -msgstr "" - -#: src/properties.cpp:355 -msgid "Track Number" -msgstr "" - -#: src/properties.cpp:355 -msgid "" -"A numeric value indicating the order of the audio file within its original " -"recording." -msgstr "" - -#: src/properties.cpp:356 -msgid "Genre" -msgstr "" - -#: src/properties.cpp:356 -msgid "The name of the genre." -msgstr "" - -#: src/properties.cpp:357 -msgid "The copyright information." -msgstr "" - -#: src/properties.cpp:358 -msgid "The date the title was released." -msgstr "" - -#: src/properties.cpp:359 -msgid "Composer" -msgstr "" - -#: src/properties.cpp:359 -msgid "The composer's name." -msgstr "" - -#: src/properties.cpp:360 -msgid "Engineer" -msgstr "" - -#: src/properties.cpp:360 -msgid "The engineer's name." -msgstr "" - -#: src/properties.cpp:361 -msgid "Tempo" -msgstr "" - -#: src/properties.cpp:361 -msgid "The audio's tempo." -msgstr "" - -#: src/properties.cpp:362 -msgid "Instrument" -msgstr "" - -#: src/properties.cpp:362 -msgid "The musical instrument." -msgstr "" - -#: src/properties.cpp:363 -msgid "Intro Time" -msgstr "" - -#: src/properties.cpp:363 -msgid "The duration of lead time for queuing music." -msgstr "" - -#: src/properties.cpp:364 -msgid "Out Cue" -msgstr "" - -#: src/properties.cpp:364 -msgid "The time at which to fade out." -msgstr "" - -#: src/properties.cpp:365 -msgid "Relative Timestamp" -msgstr "" - -#: src/properties.cpp:365 -msgid "The start time of the media inside the audio project." -msgstr "" - -#: src/properties.cpp:366 -msgid "Loop" -msgstr "" - -#: src/properties.cpp:366 -msgid "When true, the clip can be looped seemlessly." -msgstr "" - -#: src/properties.cpp:367 -msgid "Number Of Beats" -msgstr "" - -#: src/properties.cpp:367 -msgid "The number of beats." -msgstr "" - -#: src/properties.cpp:368 -msgid "Key" -msgstr "" - -#: src/properties.cpp:368 -msgid "" -"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." -msgstr "" - -#: src/properties.cpp:369 -msgid "Stretch Mode" -msgstr "" - -#: src/properties.cpp:369 -msgid "" -"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " -"Splice, Hybrid." -msgstr "" - -#: src/properties.cpp:370 -msgid "Time Scale Parameters" -msgstr "" - -#: src/properties.cpp:370 -msgid "Additional parameters for Time-Scale stretch mode." -msgstr "" - -#: src/properties.cpp:371 -msgid "Resample Parameters" -msgstr "" - -#: src/properties.cpp:371 -msgid "Additional parameters for Resample stretch mode." -msgstr "" - -#: src/properties.cpp:372 -msgid "Beat Splice Parameters" -msgstr "" - -#: src/properties.cpp:372 -msgid "Additional parameters for Beat Splice stretch mode." -msgstr "" - -#: src/properties.cpp:373 -msgid "Time Signature" -msgstr "" - -#: src/properties.cpp:373 -msgid "" -"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " -"12/8, other." -msgstr "" - -#: src/properties.cpp:374 -msgid "Scale Type" -msgstr "" - -#: src/properties.cpp:374 -msgid "" -"The musical scale used in the music. One of: Major, Minor, Both, Neither. " -"Neither is most often used for instruments with no associated scale, such as " -"drums." -msgstr "" - -#: src/properties.cpp:381 src/tags.cpp:1071 -msgid "Camera Serial Number" -msgstr "" - -#: src/properties.cpp:381 -msgid "Camera Serial Number." -msgstr "" - -#: src/properties.cpp:382 -msgid "Date Acquired" -msgstr "" - -#: src/properties.cpp:382 -msgid "Date Acquired." -msgstr "" - -#: src/properties.cpp:383 -msgid "Flash Manufacturer" -msgstr "" - -#: src/properties.cpp:383 -msgid "Flash Manufacturer." -msgstr "" - -#: src/properties.cpp:384 -msgid "Flash Model." -msgstr "" - -#: src/properties.cpp:385 -msgid "Last Keyword IPTC" -msgstr "" - -#: src/properties.cpp:385 -msgid "Last Keyword IPTC." -msgstr "" - -#: src/properties.cpp:386 -msgid "Last Keyword XMP" -msgstr "" - -#: src/properties.cpp:386 -msgid "Last Keyword XMP." -msgstr "" - -#: src/properties.cpp:387 -msgid "Lens Manufacturer" -msgstr "" - -#: src/properties.cpp:387 -msgid "Lens Manufacturer." -msgstr "" - -#: src/properties.cpp:388 -msgid "Lens Model." -msgstr "" - -#: src/properties.cpp:389 -msgid "Rating Percent" -msgstr "" - -#: src/properties.cpp:389 -msgid "Rating Percent." -msgstr "" - -#: src/properties.cpp:395 -msgid "Keywords." -msgstr "" - -#: src/properties.cpp:396 -msgid "PDF Version" -msgstr "" - -#: src/properties.cpp:396 -msgid "The PDF file version (for example: 1.0, 1.3, and so on)." -msgstr "" - -#: src/properties.cpp:397 -msgid "Producer" -msgstr "" - -#: src/properties.cpp:397 -msgid "The name of the tool that created the PDF document." -msgstr "" - -#: src/properties.cpp:403 -msgid "Authors Position" -msgstr "" - -#: src/properties.cpp:403 -msgid "By-line title." -msgstr "" - -#: src/properties.cpp:404 -msgid "Caption Writer" -msgstr "" - -#: src/properties.cpp:404 -msgid "Writer/editor." -msgstr "" - -#: src/properties.cpp:405 -msgid "Category. Limited to 3 7-bit ASCII characters." -msgstr "" - -#: src/properties.cpp:406 -msgid "City." -msgstr "" - -#: src/properties.cpp:407 -msgid "Country/primary location." -msgstr "" - -#: src/properties.cpp:408 -msgid "Credit." -msgstr "" - -#: src/properties.cpp:409 -msgid "" -"The date the intellectual content of the document was created (rather than " -"the creation date of the physical representation), following IIM " -"conventions. For example, a photo taken during the American Civil War would " -"have a creation date during that epoch (1861-1865) rather than the date the " -"photo was digitized for archiving." -msgstr "" - -#: src/properties.cpp:413 -msgid "Headline." -msgstr "" - -#: src/properties.cpp:414 -msgid "Special instructions." -msgstr "" - -#: src/properties.cpp:415 -msgid "Source." -msgstr "" - -#: src/properties.cpp:416 -msgid "State" -msgstr "" - -#: src/properties.cpp:416 -msgid "Province/state." -msgstr "" - -#: src/properties.cpp:417 -msgid "Supplemental category." -msgstr "" - -#: src/properties.cpp:418 -msgid "Original transmission reference." -msgstr "" - -#: src/properties.cpp:419 -msgid "Urgency. Valid range is 1-8." -msgstr "" - -#: src/properties.cpp:427 -msgid "inches" -msgstr "" - -#: src/properties.cpp:428 src/tags.cpp:242 -msgid "cm" -msgstr "" - -#: src/properties.cpp:432 -msgid "Auto Brightness" -msgstr "" - -#: src/properties.cpp:432 -msgid "When true, \"Brightness\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:433 -msgid "Auto Contrast" -msgstr "" - -#: src/properties.cpp:433 -msgid "When true, \"Contrast\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:434 -msgid "Auto Exposure" -msgstr "" - -#: src/properties.cpp:434 -msgid "When true, \"Exposure\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:435 -msgid "Auto Shadows" -msgstr "" - -#: src/properties.cpp:435 -msgid "When true,\"Shadows\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:436 -msgid "Blue Hue" -msgstr "" - -#: src/properties.cpp:436 -msgid "\"Blue Hue\" setting. Range -100 to 100." -msgstr "" - -#: src/properties.cpp:437 -msgid "Blue Saturation" -msgstr "" - -#: src/properties.cpp:437 -msgid "\"Blue Saturation\" setting. Range -100 to +100." -msgstr "" - -#: src/properties.cpp:438 -msgid "\"Brightness\" setting. Range 0 to +150." -msgstr "" - -#: src/properties.cpp:439 -msgid "Camera Profile" -msgstr "" - -#: src/properties.cpp:439 -msgid "\"Camera Profile\" setting." -msgstr "" - -#: src/properties.cpp:440 -msgid "Chromatic Aberration Blue" -msgstr "" - -#: src/properties.cpp:440 -msgid "" -"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." -msgstr "" - -#: src/properties.cpp:441 -msgid "Chromatic Aberration Red" -msgstr "" - -#: src/properties.cpp:441 -msgid "" -"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." -msgstr "" - -#: src/properties.cpp:442 -msgid "Color Noise Reduction" -msgstr "" - -#: src/properties.cpp:442 -msgid "\"Color Noise Reducton\" setting. Range 0 to +100." -msgstr "" - -#: src/properties.cpp:443 -msgid "\"Contrast\" setting. Range -50 to +100." -msgstr "" - -#: src/properties.cpp:444 -msgid "When \"Has Crop\" is true, top of crop rectangle" -msgstr "" - -#: src/properties.cpp:445 -msgid "When \"Has Crop\" is true, left of crop rectangle." -msgstr "" - -#: src/properties.cpp:446 -msgid "Crop Bottom" -msgstr "" - -#: src/properties.cpp:446 -msgid "When \"Has Crop\" is true, bottom of crop rectangle." -msgstr "" - -#: src/properties.cpp:447 -msgid "Crop Right" -msgstr "" - -#: src/properties.cpp:447 -msgid "When \"Has Crop\" is true, right of crop rectangle." -msgstr "" - -#: src/properties.cpp:448 -msgid "Crop Angle" -msgstr "" - -#: src/properties.cpp:448 -msgid "When \"Has Crop\" is true, angle of crop rectangle." -msgstr "" - -#: src/properties.cpp:449 -msgid "Width of resulting cropped image in CropUnits units." -msgstr "" - -#: src/properties.cpp:450 -msgid "Height of resulting cropped image in CropUnits units." -msgstr "" - -#: src/properties.cpp:451 -msgid "Crop Units" -msgstr "" - -#: src/properties.cpp:451 -msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" -msgstr "" - -#: src/properties.cpp:452 -msgid "\"Exposure\" setting. Range -4.0 to +4.0." -msgstr "" - -#: src/properties.cpp:453 -msgid "GreenHue" -msgstr "" - -#: src/properties.cpp:453 -msgid "\"Green Hue\" setting. Range -100 to +100." -msgstr "" - -#: src/properties.cpp:454 -msgid "Green Saturation" -msgstr "" - -#: src/properties.cpp:454 -msgid "\"Green Saturation\" setting. Range -100 to +100." -msgstr "" - -#: src/properties.cpp:455 -msgid "Has Crop" -msgstr "" - -#: src/properties.cpp:455 -msgid "When true, image has a cropping rectangle." -msgstr "" - -#: src/properties.cpp:456 -msgid "Has Settings" -msgstr "" - -#: src/properties.cpp:456 -msgid "When true, non-default camera raw settings." -msgstr "" - -#: src/properties.cpp:457 -msgid "Luminance Smoothing" -msgstr "" - -#: src/properties.cpp:457 -msgid "\"Luminance Smoothing\" setting. Range 0 to +100." -msgstr "" - -#: src/properties.cpp:458 -msgid "Raw File Name" -msgstr "" - -#: src/properties.cpp:458 -msgid "File name of raw file (not a complete path)." -msgstr "" - -#: src/properties.cpp:459 -msgid "Red Hue" -msgstr "" - -#: src/properties.cpp:459 -msgid "\"Red Hue\" setting. Range -100 to +100." -msgstr "" - -#: src/properties.cpp:460 -msgid "Red Saturation" -msgstr "" - -#: src/properties.cpp:460 -msgid "\"Red Saturation\" setting. Range -100 to +100." -msgstr "" - -#: src/properties.cpp:461 -msgid "\"Saturation\" setting. Range -100 to +100." -msgstr "" - -#: src/properties.cpp:462 -msgid "Shadows" -msgstr "" - -#: src/properties.cpp:462 -msgid "\"Shadows\" setting. Range 0 to +100." -msgstr "" - -#: src/properties.cpp:463 -msgid "Shadow Tint" -msgstr "" - -#: src/properties.cpp:463 -msgid "\"Shadow Tint\" setting. Range -100 to +100." -msgstr "" - -#: src/properties.cpp:464 -msgid "\"Sharpness\" setting. Range 0 to +100." -msgstr "" - -#: src/properties.cpp:465 -msgid "\"Temperature\" setting. Range 2000 to 50000." -msgstr "" - -#: src/properties.cpp:466 -msgid "Tint" -msgstr "" - -#: src/properties.cpp:466 -msgid "\"Tint\" setting. Range -150 to +150." -msgstr "" - -#: src/properties.cpp:467 -msgid "Tone Curve" -msgstr "" - -#: src/properties.cpp:467 -msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." -msgstr "" - -#: src/properties.cpp:468 -msgid "Tone Curve Name" -msgstr "" - -#: src/properties.cpp:468 -msgid "" -"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " -"Contrast, Strong Contrast, Custom or a user-defined preset name." -msgstr "" - -#: src/properties.cpp:470 -msgid "Version of Camera Raw plugin." -msgstr "" - -#: src/properties.cpp:471 -msgid "Vignette Amount" -msgstr "" - -#: src/properties.cpp:471 -msgid "\"Vignetting Amount\" setting. Range -100 to +100." -msgstr "" - -#: src/properties.cpp:472 -msgid "Vignette Midpoint" -msgstr "" - -#: src/properties.cpp:472 -msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." -msgstr "" - -#: src/properties.cpp:473 -msgid "" -"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " -"Tungsten, Fluorescent, Flash, Custom" -msgstr "" - -#: src/properties.cpp:480 -msgid "TIFF tag 256, 0x100. Image width in pixels." -msgstr "" - -#: src/properties.cpp:481 src/tags.cpp:420 -msgid "Image Length" -msgstr "" - -#: src/properties.cpp:481 -msgid "TIFF tag 257, 0x101. Image height in pixels." -msgstr "" - -#: src/properties.cpp:482 -msgid "Bits Per Sample" -msgstr "" - -#: src/properties.cpp:482 -msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." -msgstr "" - -#: src/properties.cpp:483 src/tags.cpp:430 -msgid "Compression" -msgstr "" - -#: src/properties.cpp:483 -msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." -msgstr "" - -#: src/properties.cpp:484 src/tags.cpp:436 -msgid "Photometric Interpretation" -msgstr "" - -#: src/properties.cpp:484 -msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." -msgstr "" - -#: src/properties.cpp:485 -msgid "" -"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " -"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " -"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " -"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " -"0th column at bottom 8 = 0th row at left, 0th column at bottom" -msgstr "" - -#: src/properties.cpp:494 -msgid "Samples Per Pixel" -msgstr "" - -#: src/properties.cpp:494 -msgid "TIFF tag 277, 0x115. Number of components per pixel." -msgstr "" - -#: src/properties.cpp:495 src/tags.cpp:510 -msgid "Planar Configuration" -msgstr "" - -#: src/properties.cpp:495 -msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." -msgstr "" - -#: src/properties.cpp:496 -msgid "YCbCr Sub Sampling" -msgstr "" - -#: src/properties.cpp:496 -msgid "" -"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " -"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" -msgstr "" - -#: src/properties.cpp:498 src/tags.cpp:713 -msgid "YCbCr Positioning" -msgstr "" - -#: src/properties.cpp:498 -msgid "" -"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " -"centered; 2 = co-sited." -msgstr "" - -#: src/properties.cpp:500 -msgid "X Resolution" -msgstr "" - -#: src/properties.cpp:500 -msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." -msgstr "" - -#: src/properties.cpp:501 -msgid "Y Resolution" -msgstr "" - -#: src/properties.cpp:501 -msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." -msgstr "" - -#: src/properties.cpp:502 src/tags.cpp:528 -msgid "Resolution Unit" -msgstr "" - -#: src/properties.cpp:502 -msgid "" -"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " -"of: 2 = inches; 3 = centimeters." -msgstr "" - -#: src/properties.cpp:504 src/tags.cpp:533 -msgid "Transfer Function" -msgstr "" - -#: src/properties.cpp:504 -msgid "" -"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " -"with 3 * 256 entries." -msgstr "" - -#: src/properties.cpp:506 src/tags.cpp:565 -msgid "White Point" -msgstr "" - -#: src/properties.cpp:506 -msgid "TIFF tag 318, 0x13E. Chromaticity of white point." -msgstr "" - -#: src/properties.cpp:507 src/tags.cpp:570 -msgid "Primary Chromaticities" -msgstr "" - -#: src/properties.cpp:507 -msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." -msgstr "" - -#: src/properties.cpp:508 -msgid "" -"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." -msgstr "" - -#: src/properties.cpp:509 -msgid "Reference Black White" -msgstr "" - -#: src/properties.cpp:509 -msgid "TIFF tag 532, 0x214. Reference black and white point values." -msgstr "" - -#: src/properties.cpp:510 src/tags.cpp:545 -msgid "Date and Time" -msgstr "" - -#: src/properties.cpp:510 -msgid "" -"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " -"and time of image creation (no time zone in EXIF), stored in ISO 8601 " -"format, not the original EXIF format. This property includes the value for " -"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" -"ModifyDate." -msgstr "" - -#: src/properties.cpp:516 src/tags.cpp:458 -msgid "Image Description" -msgstr "" - -#: src/properties.cpp:516 -msgid "" -"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " -"in XMP as dc:description." -msgstr "" - -#: src/properties.cpp:517 -msgid "Make" -msgstr "" - -#: src/properties.cpp:517 -msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." -msgstr "" - -#: src/properties.cpp:518 -msgid "TIFF tag 272, 0x110. Model name or number of equipment." -msgstr "" - -#: src/properties.cpp:519 -msgid "" -"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " -"property is stored in XMP as xmp:CreatorTool. " -msgstr "" - -#: src/properties.cpp:521 -msgid "" -"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " -"property is stored in XMP as the first item in the dc:creator array." -msgstr "" - -#: src/properties.cpp:523 -msgid "" -"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " -"in XMP as dc:rights." -msgstr "" - -#: src/properties.cpp:530 src/tags.cpp:1598 -msgid "Exif Version" -msgstr "" - -#: src/properties.cpp:530 -msgid "EXIF tag 36864, 0x9000. EXIF version number." -msgstr "" - -#: src/properties.cpp:531 -msgid "Flashpix Version" -msgstr "" - -#: src/properties.cpp:531 -msgid "EXIF tag 40960, 0xA000. Version of FlashPix." -msgstr "" - -#: src/properties.cpp:532 -msgid "EXIF tag 40961, 0xA001. Color space information" -msgstr "" - -#: src/properties.cpp:533 src/tags.cpp:1609 -msgid "Components Configuration" -msgstr "" - -#: src/properties.cpp:533 -msgid "" -"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " -"compressed data), 1 2 3 0 (other cases)." -msgstr "" - -#: src/properties.cpp:535 src/tags.cpp:818 -msgid "Compressed Bits Per Pixel" -msgstr "" - -#: src/properties.cpp:535 -msgid "" -"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " -"indicated in unit bits per pixel." -msgstr "" - -#: src/properties.cpp:537 src/tags.cpp:1693 -msgid "Pixel X Dimension" -msgstr "" - -#: src/properties.cpp:537 -msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." -msgstr "" - -#: src/properties.cpp:538 src/tags.cpp:1700 -msgid "Pixel Y Dimension" -msgstr "" - -#: src/properties.cpp:538 -msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." -msgstr "" - -#: src/properties.cpp:539 src/tags.cpp:1667 -msgid "User Comment" -msgstr "" - -#: src/properties.cpp:539 -msgid "EXIF tag 37510, 0x9286. Comments from user." -msgstr "" - -#: src/properties.cpp:540 src/tags.cpp:1709 -msgid "Related Sound File" -msgstr "" - -#: src/properties.cpp:540 -msgid "" -"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." -msgstr "" - -#: src/properties.cpp:541 -msgid "Date and Time Original" -msgstr "" - -#: src/properties.cpp:541 -msgid "" -"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " -"time when original image was generated, in ISO 8601 format. Includes the " -"EXIF SubSecTimeOriginal data." -msgstr "" - -#: src/properties.cpp:544 -msgid "Date and Time Digitized" -msgstr "" - -#: src/properties.cpp:544 -msgid "" -"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " -"time when image was stored as digital data, can be the same as " -"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " -"format. Includes the EXIF SubSecTimeDigitized data." -msgstr "" - -#: src/properties.cpp:548 -msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." -msgstr "" - -#: src/properties.cpp:549 -msgid "F Number" -msgstr "" - -#: src/properties.cpp:549 -msgid "EXIF tag 33437, 0x829D. F number." -msgstr "" - -#: src/properties.cpp:550 -msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." -msgstr "" - -#: src/properties.cpp:551 src/tags.cpp:800 src/tags.cpp:1552 -msgid "Spectral Sensitivity" -msgstr "" - -#: src/properties.cpp:551 -msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." -msgstr "" - -#: src/properties.cpp:552 -msgid "ISOSpeedRatings" -msgstr "" - -#: src/properties.cpp:552 -msgid "" -"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " -"specified in ISO 12232." -msgstr "" - -#: src/properties.cpp:554 src/tags.cpp:807 -msgid "OECF" -msgstr "" - -#: src/properties.cpp:554 -msgid "" -"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " -"ISO 14524." -msgstr "" - -#: src/properties.cpp:555 -msgid "" -"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " -"specification." -msgstr "" - -#: src/properties.cpp:556 -msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." -msgstr "" - -#: src/properties.cpp:557 src/tags.cpp:821 -msgid "Brightness Value" -msgstr "" - -#: src/properties.cpp:557 -msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." -msgstr "" - -#: src/properties.cpp:558 -msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." -msgstr "" - -#: src/properties.cpp:559 -msgid "Maximum Aperture Value" -msgstr "" - -#: src/properties.cpp:559 -msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." -msgstr "" - -#: src/properties.cpp:560 -msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." -msgstr "" - -#: src/properties.cpp:561 -msgid "EXIF tag 37383, 0x9207. Metering mode." -msgstr "" - -#: src/properties.cpp:562 -msgid "EXIF tag 37384, 0x9208. Light source." -msgstr "" - -#: src/properties.cpp:563 -msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." -msgstr "" - -#: src/properties.cpp:564 -msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." -msgstr "" - -#: src/properties.cpp:565 src/tags.cpp:1659 -msgid "Subject Area" -msgstr "" - -#: src/properties.cpp:565 -msgid "" -"EXIF tag 37396, 0x9214. The location and area of the main subject in the " -"overall scene." -msgstr "" - -#: src/properties.cpp:566 src/tags.cpp:829 src/tags.cpp:1724 -msgid "Flash Energy" -msgstr "" - -#: src/properties.cpp:566 -msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." -msgstr "" - -#: src/properties.cpp:567 src/tags.cpp:830 src/tags.cpp:1728 -msgid "Spatial Frequency Response" -msgstr "" - -#: src/properties.cpp:567 -msgid "" -"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " -"as specified in ISO 12233." -msgstr "" - -#: src/properties.cpp:569 src/tags.cpp:832 -msgid "Focal Plane X Resolution" -msgstr "" - -#: src/properties.cpp:569 -msgid "" -"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " -"unit." -msgstr "" - -#: src/properties.cpp:570 src/tags.cpp:833 -msgid "Focal Plane Y Resolution" -msgstr "" - -#: src/properties.cpp:570 -msgid "" -"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " -"unit." -msgstr "" - -#: src/properties.cpp:571 src/tags.cpp:834 src/tags.cpp:1741 -msgid "Focal Plane Resolution Unit" -msgstr "" - -#: src/properties.cpp:571 -msgid "" -"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " -"FocalPlaneYResolution." -msgstr "" - -#: src/properties.cpp:572 src/tags.cpp:838 src/tags.cpp:1745 -msgid "Subject Location" -msgstr "" - -#: src/properties.cpp:572 -msgid "" -"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " -"value is the horizontal pixel and the second value is the vertical pixel at " -"which the main subject appears." -msgstr "" - -#: src/properties.cpp:575 src/tags.cpp:839 -msgid "Exposure Index" -msgstr "" - -#: src/properties.cpp:575 -msgid "EXIF tag 41493, 0xA215. Exposure index of input device." -msgstr "" - -#: src/properties.cpp:576 src/tags.cpp:844 src/tags.cpp:1756 -msgid "Sensing Method" -msgstr "" - -#: src/properties.cpp:576 -msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." -msgstr "" - -#: src/properties.cpp:577 -msgid "EXIF tag 41728, 0xA300. Indicates image source." -msgstr "" - -#: src/properties.cpp:578 src/tags.cpp:1764 -msgid "Scene Type" -msgstr "" - -#: src/properties.cpp:578 -msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." -msgstr "" - -#: src/properties.cpp:579 src/tags.cpp:754 -msgid "CFA Pattern" -msgstr "" - -#: src/properties.cpp:579 -msgid "" -"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " -"sense." -msgstr "" - -#: src/properties.cpp:580 src/tags.cpp:1774 -msgid "Custom Rendered" -msgstr "" - -#: src/properties.cpp:580 -msgid "" -"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " -"data." -msgstr "" - -#: src/properties.cpp:581 -msgid "" -"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " -"shot." -msgstr "" - -#: src/properties.cpp:582 -msgid "" -"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " -"was shot." -msgstr "" - -#: src/properties.cpp:583 src/tags.cpp:1788 -msgid "Digital Zoom Ratio" -msgstr "" - -#: src/properties.cpp:583 -msgid "" -"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " -"shot." -msgstr "" - -#: src/properties.cpp:584 src/tags.cpp:1793 -msgid "Focal Length In 35mm Film" -msgstr "" - -#: src/properties.cpp:584 -msgid "" -"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " -"35mm film camera, in mm. A value of 0 means the focal length is unknown. " -"Note that this tag differs from the FocalLength tag." -msgstr "" - -#: src/properties.cpp:587 src/tags.cpp:1799 -msgid "Scene Capture Type" -msgstr "" - -#: src/properties.cpp:587 -msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." -msgstr "" - -#: src/properties.cpp:588 src/tags.cpp:1804 -msgid "Gain Control" -msgstr "" - -#: src/properties.cpp:588 -msgid "" -"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " -"adjustment." -msgstr "" - -#: src/properties.cpp:589 -msgid "" -"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " -"applied by the camera." -msgstr "" - -#: src/properties.cpp:590 -msgid "" -"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " -"applied by the camera." -msgstr "" - -#: src/properties.cpp:591 -msgid "" -"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " -"applied by the camera." -msgstr "" - -#: src/properties.cpp:592 src/tags.cpp:1819 -msgid "Device Setting Description" -msgstr "" - -#: src/properties.cpp:592 -msgid "" -"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " -"conditions of a particular camera model." -msgstr "" - -#: src/properties.cpp:593 src/tags.cpp:1824 -msgid "Subject Distance Range" -msgstr "" - -#: src/properties.cpp:593 -msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." -msgstr "" - -#: src/properties.cpp:594 src/tags.cpp:1827 -msgid "Image Unique ID" -msgstr "" - -#: src/properties.cpp:594 -msgid "" -"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " -"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " -"and 128-bit fixed length." -msgstr "" - -#: src/properties.cpp:596 src/tags.cpp:1927 -msgid "GPS Version ID" -msgstr "" - -#: src/properties.cpp:596 -msgid "" -"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " -"period separators. The current value is \"2.0.0.0\"." -msgstr "" - -#: src/properties.cpp:598 src/tags.cpp:1938 -msgid "GPS Latitude" -msgstr "" - -#: src/properties.cpp:598 -msgid "" -"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." -msgstr "" - -#: src/properties.cpp:599 src/tags.cpp:1950 -msgid "GPS Longitude" -msgstr "" - -#: src/properties.cpp:599 -msgid "" -"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." -msgstr "" - -#: src/properties.cpp:600 src/tags.cpp:1958 -msgid "GPS Altitude Reference" -msgstr "" - -#: src/properties.cpp:600 -msgid "" -"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." -msgstr "" - -#: src/properties.cpp:601 src/tags.cpp:1966 -msgid "GPS Altitude" -msgstr "" - -#: src/properties.cpp:601 -msgid "GPS tag 6, 0x06. Indicates altitude in meters." -msgstr "" - -#: src/properties.cpp:602 src/tags.cpp:1970 -msgid "GPS Time Stamp" -msgstr "" - -#: src/properties.cpp:602 -msgid "" -"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " -"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " -"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " -"present, the date component for the XMP should be taken from exif:" -"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " -"no date is available, do not write exif:GPSTimeStamp to XMP." -msgstr "" - -#: src/properties.cpp:608 src/tags.cpp:1975 -msgid "GPS Satellites" -msgstr "" - -#: src/properties.cpp:608 -msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." -msgstr "" - -#: src/properties.cpp:609 src/tags.cpp:1982 -msgid "GPS Status" -msgstr "" - -#: src/properties.cpp:609 -msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." -msgstr "" - -#: src/properties.cpp:610 src/tags.cpp:1987 -msgid "GPS Measure Mode" -msgstr "" - -#: src/properties.cpp:610 -msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." -msgstr "" - -#: src/properties.cpp:611 -msgid "GPS DOP" -msgstr "" - -#: src/properties.cpp:611 -msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." -msgstr "" - -#: src/properties.cpp:612 src/tags.cpp:1995 -msgid "GPS Speed Reference" -msgstr "" - -#: src/properties.cpp:612 -msgid "GPS tag 12, 0x0C. Units used to speed measurement." -msgstr "" - -#: src/properties.cpp:613 src/tags.cpp:1999 -msgid "GPS Speed" -msgstr "" - -#: src/properties.cpp:613 -msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." -msgstr "" - -#: src/properties.cpp:614 -msgid "GPS Track Reference" -msgstr "" - -#: src/properties.cpp:614 -msgid "GPS tag 14, 0x0E. Reference for movement direction." -msgstr "" - -#: src/properties.cpp:615 src/tags.cpp:2006 -msgid "GPS Track" -msgstr "" - -#: src/properties.cpp:615 -msgid "" -"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." -msgstr "" - -#: src/properties.cpp:616 src/tags.cpp:2010 -msgid "GPS Image Direction Reference" -msgstr "" - -#: src/properties.cpp:616 -msgid "GPS tag 16, 0x10. Reference for image direction." -msgstr "" - -#: src/properties.cpp:617 src/tags.cpp:2014 -msgid "GPS Image Direction" -msgstr "" - -#: src/properties.cpp:617 -msgid "" -"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " -"359.99." -msgstr "" - -#: src/properties.cpp:618 src/tags.cpp:2018 -msgid "GPS Map Datum" -msgstr "" - -#: src/properties.cpp:618 -msgid "GPS tag 18, 0x12. Geodetic survey data." -msgstr "" - -#: src/properties.cpp:619 src/tags.cpp:2026 -msgid "GPS Destination Latitude" -msgstr "" - -#: src/properties.cpp:619 -msgid "" -"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " -"destination latitude." -msgstr "" - -#: src/properties.cpp:620 src/tags.cpp:2038 -msgid "GPS Destination Longitude" -msgstr "" - -#: src/properties.cpp:620 -msgid "" -"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " -"longitude." -msgstr "" - -#: src/properties.cpp:621 src/tags.cpp:2045 -msgid "GPS Destination Bearing Reference" -msgstr "" - -#: src/properties.cpp:621 -msgid "GPS tag 23, 0x17. Reference for movement direction." -msgstr "" - -#: src/properties.cpp:622 src/tags.cpp:2049 -msgid "GPS Destination Bearing" -msgstr "" - -#: src/properties.cpp:622 -msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." -msgstr "" - -#: src/properties.cpp:623 -msgid "GPS Destination Distance Refefrence" -msgstr "" - -#: src/properties.cpp:623 -msgid "GPS tag 25, 0x19. Units used for speed measurement." -msgstr "" - -#: src/properties.cpp:624 src/tags.cpp:2057 -msgid "GPS Destination Distance" -msgstr "" - -#: src/properties.cpp:624 -msgid "GPS tag 26, 0x1A. Distance to destination." -msgstr "" - -#: src/properties.cpp:625 src/tags.cpp:2060 -msgid "GPS Processing Method" -msgstr "" - -#: src/properties.cpp:625 -msgid "" -"GPS tag 27, 0x1B. A character string recording the name of the method used " -"for location finding." -msgstr "" - -#: src/properties.cpp:626 src/tags.cpp:2065 -msgid "GPS Area Information" -msgstr "" - -#: src/properties.cpp:626 -msgid "" -"GPS tag 28, 0x1C. A character string recording the name of the GPS area." -msgstr "" - -#: src/properties.cpp:627 src/tags.cpp:2073 -msgid "GPS Differential" -msgstr "" - -#: src/properties.cpp:627 -msgid "" -"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " -"the GPS receiver." -msgstr "" - -#: src/properties.cpp:633 -msgid "" -"A description of the lens used to take the photograph. For example, \"70-200 " -"mm f/2.8-4.0\"." -msgstr "" - -#: src/properties.cpp:634 -msgid "SerialNumber" -msgstr "" - -#: src/properties.cpp:634 -msgid "" -"The serial number of the camera or camera body used to take the photograph." -msgstr "" - -#: src/properties.cpp:640 -msgid "Contact Info-City" -msgstr "" - -#: src/properties.cpp:640 -msgid "The contact information city part." -msgstr "" - -#: src/properties.cpp:641 -msgid "Contact Info-Country" -msgstr "" - -#: src/properties.cpp:641 -msgid "The contact information country part." -msgstr "" - -#: src/properties.cpp:642 -msgid "Contact Info-Address" -msgstr "" - -#: src/properties.cpp:642 -msgid "" -"The contact information address part. Comprises an optional company name and " -"all required information to locate the building or postbox to which mail " -"should be sent." -msgstr "" - -#: src/properties.cpp:644 -msgid "Contact Info-Postal Code" -msgstr "" - -#: src/properties.cpp:644 -msgid "The contact information part denoting the local postal code." -msgstr "" - -#: src/properties.cpp:645 -msgid "Contact Info-State/Province" -msgstr "" - -#: src/properties.cpp:645 -msgid "" -"The contact information part denoting regional information like state or " -"province." -msgstr "" - -#: src/properties.cpp:646 -msgid "Contact Info-Email" -msgstr "" - -#: src/properties.cpp:646 -msgid "The contact information email address part." -msgstr "" - -#: src/properties.cpp:647 -msgid "Contact Info-Phone" -msgstr "" - -#: src/properties.cpp:647 -msgid "The contact information phone number part." -msgstr "" - -#: src/properties.cpp:648 -msgid "Contact Info-Web URL" -msgstr "" - -#: src/properties.cpp:648 -msgid "The contact information web address part." -msgstr "" - -#: src/properties.cpp:649 -msgid "" -"Code of the country the content is focussing on -- either the country shown " -"in visual media or referenced in text or audio media. This element is at the " -"top/first level of a top-down geographical hierarchy. The code should be " -"taken from ISO 3166 two or three letter code. The full name of a country " -"should go to the \"Country\" element." -msgstr "" - -#: src/properties.cpp:653 -msgid "Creator's Contact Info" -msgstr "" - -#: src/properties.cpp:653 -msgid "" -"The creator's contact information provides all necessary information to get " -"in contact with the creator of this news object and comprises a set of sub-" -"properties for proper addressing." -msgstr "" - -#: src/properties.cpp:655 -msgid "Intellectual Genre" -msgstr "" - -#: src/properties.cpp:655 -msgid "" -"Describes the nature, intellectual or journalistic characteristic of a news " -"object, not specifically its content." -msgstr "" - -#: src/properties.cpp:657 -msgid "" -"Name of a location the content is focussing on -- either the location shown " -"in visual media or referenced by text or audio media. This location name " -"could either be the name of a sublocation to a city or the name of a well " -"known location or (natural) monument outside a city. In the sense of a " -"sublocation to a city this element is at the fourth level of a top-down " -"geographical hierarchy." -msgstr "" - -#: src/properties.cpp:662 -msgid "IPTC Scene" -msgstr "" - -#: src/properties.cpp:662 -msgid "" -"Describes the scene of a photo content. Specifies one or more terms from the " -"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " -"in an unordered list." -msgstr "" - -#: src/properties.cpp:664 -msgid "IPTC Subject Code" -msgstr "" - -#: src/properties.cpp:664 -msgid "" -"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " -"to categorize the content. Each Subject is represented as a string of 8 " -"digits in an unordered list." -msgstr "" - -#: src/properties.cpp:671 -msgid "Additional model info" -msgstr "" - -#: src/properties.cpp:671 -msgid "" -"Information about the ethnicity and other facts of the model(s) in a model-" -"released image." -msgstr "" - -#: src/properties.cpp:672 -msgid "Code of featured Organisation" -msgstr "" - -#: src/properties.cpp:672 -msgid "" -"Code from controlled vocabulary for identyfing the organisation or company " -"which is featured in the image." -msgstr "" - -#: src/properties.cpp:673 -msgid "Controlled Vocabulary Term" -msgstr "" - -#: src/properties.cpp:673 -msgid "" -"A term to describe the content of the image by a value from a Controlled " -"Vocabulary." -msgstr "" - -#: src/properties.cpp:674 -msgid "Model age" -msgstr "" - -#: src/properties.cpp:674 -msgid "" -"Age of the human model(s) at the time this image was taken in a model " -"released image." -msgstr "" - -#: src/properties.cpp:675 -msgid "Name of featured Organisation" -msgstr "" - -#: src/properties.cpp:675 -msgid "Name of the organisation or company which is featured in the image." -msgstr "" - -#: src/properties.cpp:676 -msgid "Person shown" -msgstr "" - -#: src/properties.cpp:676 -msgid "Name of a person shown in the image." -msgstr "" - -#: src/properties.cpp:677 -msgid "Digital Image Identifier" -msgstr "" - -#: src/properties.cpp:677 -msgid "" -"Globally unique identifier for this digital image. It is created and applied " -"by the creator of the digital image at the time of its creation. this value " -"shall not be changed after that time." -msgstr "" - -#: src/properties.cpp:678 -msgid "Physical type of original photo" -msgstr "" - -#: src/properties.cpp:678 -msgid "The type of the source digital file." -msgstr "" - -#: src/properties.cpp:679 src/properties.cpp:935 src/properties.cpp:944 -msgid "Event" -msgstr "" - -#: src/properties.cpp:679 -msgid "Names or describes the specific event at which the photo was taken." -msgstr "" - -#: src/properties.cpp:680 -msgid "Maximum available height" -msgstr "" - -#: src/properties.cpp:680 -msgid "" -"The maximum available height in pixels of the original photo from which this " -"photo has been derived by downsizing." -msgstr "" - -#: src/properties.cpp:681 -msgid "Maximum available width" -msgstr "" - -#: src/properties.cpp:681 -msgid "" -"The maximum available width in pixels of the original photo from which this " -"photo has been derived by downsizing." -msgstr "" - -#: src/properties.cpp:682 -msgid "Registry Entry" -msgstr "" - -#: src/properties.cpp:682 -msgid "" -"Both a Registry Item Id and a Registry Organisation Id to record any " -"registration of this digital image with a registry." -msgstr "" - -#: src/properties.cpp:683 -msgid "Registry Entry-Item Identifier" -msgstr "" - -#: src/properties.cpp:683 -msgid "" -"A unique identifier created by a registry and applied by the creator of the " -"digital image. This value shall not be changed after being applied. This " -"identifier is linked to a corresponding Registry Organisation Identifier." -msgstr "" - -#: src/properties.cpp:684 -msgid "Registry Entry-Organisation Identifier" -msgstr "" - -#: src/properties.cpp:684 -msgid "" -"An identifier for the registry which issued the corresponding Registry Image " -"Id." -msgstr "" - -#: src/properties.cpp:685 -msgid "IPTC Fields Last Edited" -msgstr "" - -#: src/properties.cpp:685 -msgid "" -"The date and optionally time when any of the IPTC photo metadata fields has " -"been last edited." -msgstr "" - -#: src/properties.cpp:686 -msgid "Location shown" -msgstr "" - -#: src/properties.cpp:686 -msgid "A location shown in the image." -msgstr "" - -#: src/properties.cpp:687 -msgid "Location Created" -msgstr "" - -#: src/properties.cpp:687 -msgid "The location the photo was taken." -msgstr "" - -#: src/properties.cpp:688 -msgid "Location-City" -msgstr "" - -#: src/properties.cpp:688 -msgid "Name of the city of a location." -msgstr "" - -#: src/properties.cpp:689 -msgid "Location-Country ISO-Code" -msgstr "" - -#: src/properties.cpp:689 -msgid "The ISO code of a country of a location." -msgstr "" - -#: src/properties.cpp:690 -msgid "Location-Country Name" -msgstr "" - -#: src/properties.cpp:690 -msgid "The name of a country of a location." -msgstr "" - -#: src/properties.cpp:691 -msgid "Location-Province/State" -msgstr "" - -#: src/properties.cpp:691 -msgid "" -"The name of a subregion of a country - a province or state - of a location." -msgstr "" - -#: src/properties.cpp:692 -msgid "Location-Sublocation" -msgstr "" - -#: src/properties.cpp:692 -msgid "" -"Name of a sublocation. This sublocation name could either be the name of a " -"sublocation to a city or the name of a well known location or (natural) " -"monument outside a city." -msgstr "" - -#: src/properties.cpp:693 -msgid "Location-World Region" -msgstr "" - -#: src/properties.cpp:693 -msgid "The name of a world region of a location." -msgstr "" - -#: src/properties.cpp:694 -msgid "Artwork or object in the image" -msgstr "" - -#: src/properties.cpp:694 -msgid "A set of metadata about artwork or an object in the image." -msgstr "" - -#: src/properties.cpp:695 -msgid "Artwork or object-Copyright notice" -msgstr "" - -#: src/properties.cpp:695 -msgid "" -"Contains any necessary copyright notice for claiming the intellectual " -"property for artwork or an object in the image and should identify the " -"current owner of the copyright of this work with associated intellectual " -"property rights." -msgstr "" - -#: src/properties.cpp:696 -msgid "Artwork or object-Creator" -msgstr "" - -#: src/properties.cpp:696 -msgid "" -"Contains the name of the artist who has created artwork or an object in the " -"image. In cases where the artist could or should not be identified the name " -"of a company or organisation may be appropriate." -msgstr "" - -#: src/properties.cpp:697 -msgid "Artwork or object-Date Created" -msgstr "" - -#: src/properties.cpp:697 -msgid "" -"Designates the date and optionally the time the artwork or object in the " -"image was created. This relates to artwork or objects with associated " -"intellectual property rights." -msgstr "" - -#: src/properties.cpp:698 -msgid "Artwork or object-Source" -msgstr "" - -#: src/properties.cpp:698 -msgid "" -"The organisation or body holding and registering the artwork or object in " -"the image for inventory purposes." -msgstr "" - -#: src/properties.cpp:699 -msgid "Artwork or object-Source inventory number" -msgstr "" - -#: src/properties.cpp:699 -msgid "" -"The inventory number issued by the organisation or body holding and " -"registering the artwork or object in the image." -msgstr "" - -#: src/properties.cpp:700 -msgid "Artwork or object-Title" -msgstr "" - -#: src/properties.cpp:700 -msgid "A reference for the artwork or object in the image." -msgstr "" - -#: src/properties.cpp:707 -msgid "Scan from film" -msgstr "" - -#: src/properties.cpp:708 -msgid "Scan from transparency (including slide)" -msgstr "" - -#: src/properties.cpp:709 -msgid "Scan from print" -msgstr "" - -#: src/properties.cpp:710 -msgid "Camera RAW" -msgstr "" - -#: src/properties.cpp:711 -msgid "Camera TIFF" -msgstr "" - -#: src/properties.cpp:712 -msgid "Camera JPEG" -msgstr "" - -#: src/properties.cpp:717 -msgid "PLUS Version" -msgstr "" - -#: src/properties.cpp:717 -msgid "" -"The version number of the PLUS standards in place at the time of the " -"transaction." -msgstr "" - -#: src/properties.cpp:718 -msgid "Licensee" -msgstr "" - -#: src/properties.cpp:718 -msgid "" -"Party or parties to whom the license is granted by the Licensor/s under the " -"license transaction." -msgstr "" - -#: src/properties.cpp:719 -msgid "Licensee ID" -msgstr "" - -#: src/properties.cpp:719 -msgid "Optional PLUS-ID identifying each Licensee." -msgstr "" - -#: src/properties.cpp:720 -msgid "Licensee Name" -msgstr "" - -#: src/properties.cpp:720 -msgid "Name of each Licensee." -msgstr "" - -#: src/properties.cpp:721 -msgid "End User" -msgstr "" - -#: src/properties.cpp:721 -msgid "Party or parties ultimately making use of the image under the license." -msgstr "" - -#: src/properties.cpp:722 -msgid "End User ID" -msgstr "" - -#: src/properties.cpp:722 -msgid "Optional PLUS-ID identifying each End User." -msgstr "" - -#: src/properties.cpp:723 -msgid "End User Name" -msgstr "" - -#: src/properties.cpp:723 -msgid "Name of each End User." -msgstr "" - -#: src/properties.cpp:724 -msgid "Licensor" -msgstr "" - -#: src/properties.cpp:724 -msgid "Party or parties granting the license to the Licensee." -msgstr "" - -#: src/properties.cpp:725 -msgid "Licensor ID" -msgstr "" - -#: src/properties.cpp:725 -msgid "Optional PLUS-ID identifying each Licensor." -msgstr "" - -#: src/properties.cpp:726 -msgid "Licensor Name" -msgstr "" - -#: src/properties.cpp:726 -msgid "Name of each Licensor." -msgstr "" - -#: src/properties.cpp:727 -msgid "Licensor Address" -msgstr "" - -#: src/properties.cpp:727 -msgid "Licensor street address." -msgstr "" - -#: src/properties.cpp:728 -msgid "Licensor Address Detail" -msgstr "" - -#: src/properties.cpp:728 -msgid "Additional Licensor mailing address details." -msgstr "" - -#: src/properties.cpp:729 -msgid "Licensor City" -msgstr "" - -#: src/properties.cpp:729 -msgid "Licensor City name." -msgstr "" - -#: src/properties.cpp:730 -msgid "Licensor State or Province" -msgstr "" - -#: src/properties.cpp:730 -msgid "Licensor State or Province name." -msgstr "" - -#: src/properties.cpp:731 -msgid "Licensor Postal Code" -msgstr "" - -#: src/properties.cpp:731 -msgid "Licensor Postal Code or Zip Code." -msgstr "" - -#: src/properties.cpp:732 -msgid "Licensor Country" -msgstr "" - -#: src/properties.cpp:732 -msgid "Licensor Country name." -msgstr "" - -#: src/properties.cpp:733 -msgid "Licensor Telephone Type 1" -msgstr "" - -#: src/properties.cpp:733 -msgid "Licensor Telephone Type 1." -msgstr "" - -#: src/properties.cpp:734 -msgid "Licensor Telephone 1" -msgstr "" - -#: src/properties.cpp:734 -msgid "Licensor Telephone number 1." -msgstr "" - -#: src/properties.cpp:735 -msgid "Licensor Telephone Type 2" -msgstr "" - -#: src/properties.cpp:735 -msgid "Licensor Telephone Type 2." -msgstr "" - -#: src/properties.cpp:736 -msgid "Licensor Telephone 2" -msgstr "" - -#: src/properties.cpp:736 -msgid "Licensor Telephone number 2." -msgstr "" - -#: src/properties.cpp:737 -msgid "Licensor Email" -msgstr "" - -#: src/properties.cpp:737 -msgid "Licensor Email address." -msgstr "" - -#: src/properties.cpp:738 -msgid "Licensor URL" -msgstr "" - -#: src/properties.cpp:738 -msgid "Licensor world wide web address." -msgstr "" - -#: src/properties.cpp:739 -msgid "Licensor Notes" -msgstr "" - -#: src/properties.cpp:739 -msgid "" -"Supplemental information for use in identifying and contacting the Licensor/" -"s." -msgstr "" - -#: src/properties.cpp:740 -msgid "PLUS Media Summary Code" -msgstr "" - -#: src/properties.cpp:740 -msgid "" -"A PLUS-standardized alphanumeric code string summarizing the media usages " -"included in the license." -msgstr "" - -#: src/properties.cpp:741 -msgid "License Start Date" -msgstr "" - -#: src/properties.cpp:741 -msgid "The date on which the license takes effect." -msgstr "" - -#: src/properties.cpp:742 -msgid "License End Date" -msgstr "" - -#: src/properties.cpp:742 -msgid "The date on which the license expires." -msgstr "" - -#: src/properties.cpp:743 -msgid "Media Constraints" -msgstr "" - -#: src/properties.cpp:743 -msgid "" -"Constraints limiting the scope of PLUS Media Usage/s included in the license " -"to particular named media or to media not yet specifically defined in the " -"PLUS Media Matrix." -msgstr "" - -#: src/properties.cpp:744 -msgid "Region Constraints" -msgstr "" - -#: src/properties.cpp:744 -msgid "" -"Constraints limiting the scope of geographic distribution to specific " -"cities, states, provinces or other areas to be included in or excluded from " -"the PLUS Regions specified in the Media Usages specified in the license." -msgstr "" - -#: src/properties.cpp:745 -msgid "Product or Service Constraints" -msgstr "" - -#: src/properties.cpp:745 -msgid "" -"Constraints limiting usage of the image to promotion of/association with a " -"named product or service." -msgstr "" - -#: src/properties.cpp:746 -msgid "Image File Constraints" -msgstr "" - -#: src/properties.cpp:746 -msgid "" -"Constraints on the changing of the image file name, metadata or file type." -msgstr "" - -#: src/properties.cpp:747 -msgid "Image Alteration Constraints" -msgstr "" - -#: src/properties.cpp:747 -msgid "" -"Constraints on alteration of the image by cropping, flipping, retouching, " -"colorization, de-colorization or merging." -msgstr "" - -#: src/properties.cpp:748 -msgid "Image Duplication Constraints" -msgstr "" - -#: src/properties.cpp:748 -msgid "Constraints on the creation of duplicates of the image." -msgstr "" - -#: src/properties.cpp:749 -msgid "Model Release Status" -msgstr "" - -#: src/properties.cpp:749 -msgid "" -"Summarizes the availability and scope of model releases authorizing usage of " -"the likenesses of persons appearing in the photograph." -msgstr "" - -#: src/properties.cpp:750 -msgid "Model Release ID" -msgstr "" - -#: src/properties.cpp:750 -msgid "Optional identifier associated with each Model Release." -msgstr "" - -#: src/properties.cpp:751 -msgid "Minor Model Age Disclosure" -msgstr "" - -#: src/properties.cpp:751 -msgid "" -"Age of the youngest model pictured in the image, at the time that the image " -"was made." -msgstr "" - -#: src/properties.cpp:752 -msgid "Property Release Status" -msgstr "" - -#: src/properties.cpp:752 -msgid "" -"Summarizes the availability and scope of property releases authorizing usage " -"of the properties appearing in the photograph." -msgstr "" - -#: src/properties.cpp:753 -msgid "Property Release ID" -msgstr "" - -#: src/properties.cpp:753 -msgid "Optional identifier associated with each Property Release." -msgstr "" - -#: src/properties.cpp:754 -msgid "Other Constraints" -msgstr "" - -#: src/properties.cpp:754 -msgid "Additional constraints on the license." -msgstr "" - -#: src/properties.cpp:755 -msgid "Credit Line Required" -msgstr "" - -#: src/properties.cpp:755 -msgid "Attribution requirements, if any." -msgstr "" - -#: src/properties.cpp:756 -msgid "Adult Content Warning" -msgstr "" - -#: src/properties.cpp:756 -msgid "Warning indicating the presence of content not suitable for minors." -msgstr "" - -#: src/properties.cpp:757 -msgid "Other License Requirements" -msgstr "" - -#: src/properties.cpp:757 -msgid "Additional license requirements." -msgstr "" - -#: src/properties.cpp:758 -msgid "Terms and Conditions Text" -msgstr "" - -#: src/properties.cpp:758 -msgid "Terms and Conditions applying to the license." -msgstr "" - -#: src/properties.cpp:759 -msgid "Terms and Conditions URL" -msgstr "" - -#: src/properties.cpp:759 -msgid "URL for Terms and Conditions applying to the license." -msgstr "" - -#: src/properties.cpp:760 -msgid "Other License Conditions" -msgstr "" - -#: src/properties.cpp:760 -msgid "Additional license conditions." -msgstr "" - -#: src/properties.cpp:761 -msgid "Identifies the type of image delivered." -msgstr "" - -#: src/properties.cpp:762 -msgid "Licensor Image ID" -msgstr "" - -#: src/properties.cpp:762 -msgid "Optional identifier assigned by the Licensor to the image." -msgstr "" - -#: src/properties.cpp:763 -msgid "Image File Name As Delivered" -msgstr "" - -#: src/properties.cpp:763 -msgid "" -"Name of the image file delivered to the Licensee for use under the license." -msgstr "" - -#: src/properties.cpp:764 -msgid "Image File Format As Delivered" -msgstr "" - -#: src/properties.cpp:764 -msgid "" -"File format of the image file delivered to the Licensee for use under the " -"license." -msgstr "" - -#: src/properties.cpp:765 -msgid "Image File Size As Delivered" -msgstr "" - -#: src/properties.cpp:765 -msgid "Size of the image file delivered to the Licensee." -msgstr "" - -#: src/properties.cpp:766 -msgid "Copyright Status" -msgstr "" - -#: src/properties.cpp:766 -msgid "Copyright status of the image." -msgstr "" - -#: src/properties.cpp:767 -msgid "Copyright Registration Number" -msgstr "" - -#: src/properties.cpp:767 -msgid "Copyright Registration Number, if any, applying to the licensed image." -msgstr "" - -#: src/properties.cpp:768 -msgid "First Publication Date" -msgstr "" - -#: src/properties.cpp:768 -msgid "The date on which the image was first published." -msgstr "" - -#: src/properties.cpp:769 -msgid "Copyright Owner" -msgstr "" - -#: src/properties.cpp:769 -msgid "Owner or owners of the copyright in the licensed image." -msgstr "" - -#: src/properties.cpp:770 -msgid "Copyright Owner ID" -msgstr "" - -#: src/properties.cpp:770 -msgid "Optional PLUS-ID identifying each Copyright Owner." -msgstr "" - -#: src/properties.cpp:771 -msgid "Copyright Owner Name" -msgstr "" - -#: src/properties.cpp:771 -msgid "Name of Copyright Owner." -msgstr "" - -#: src/properties.cpp:772 -msgid "Copyright Owner Image ID" -msgstr "" - -#: src/properties.cpp:772 -msgid "Optional identifier assigned by the Copyright Owner to the image." -msgstr "" - -#: src/properties.cpp:773 -msgid "Image Creator" -msgstr "" - -#: src/properties.cpp:773 -msgid "Creator/s of the image." -msgstr "" - -#: src/properties.cpp:774 -msgid "Image Creator ID" -msgstr "" - -#: src/properties.cpp:774 -msgid "Optional PLUS-ID identifying each Image Creator." -msgstr "" - -#: src/properties.cpp:775 -msgid "Image Creator Name" -msgstr "" - -#: src/properties.cpp:775 -msgid "Name of Image Creator." -msgstr "" - -#: src/properties.cpp:776 -msgid "Image Creator Image ID" -msgstr "" - -#: src/properties.cpp:776 -msgid "Optional identifier assigned by the Image Creator to the image." -msgstr "" - -#: src/properties.cpp:777 -msgid "Image Supplier ID" -msgstr "" - -#: src/properties.cpp:777 -msgid "Optional PLUS-ID identifying the Image Supplier." -msgstr "" - -#: src/properties.cpp:778 -msgid "Image Supplier Name" -msgstr "" - -#: src/properties.cpp:778 -msgid "Name of Image Supplier." -msgstr "" - -#: src/properties.cpp:779 -msgid "Image Supplier Image ID" -msgstr "" - -#: src/properties.cpp:779 -msgid "Optional identifier assigned by the Image Supplier to the image." -msgstr "" - -#: src/properties.cpp:780 -msgid "Licensee Image ID" -msgstr "" - -#: src/properties.cpp:780 -msgid "Optional identifier assigned by the Licensee to the image." -msgstr "" - -#: src/properties.cpp:781 -msgid "Licensee Image Notes" -msgstr "" - -#: src/properties.cpp:781 -msgid "Notes added by Licensee." -msgstr "" - -#: src/properties.cpp:782 -msgid "Other Image Info" -msgstr "" - -#: src/properties.cpp:782 -msgid "Additional image information." -msgstr "" - -#: src/properties.cpp:783 -msgid "License ID" -msgstr "" - -#: src/properties.cpp:783 -msgid "Optional PLUS-ID assigned by the Licensor to the License." -msgstr "" - -#: src/properties.cpp:784 -msgid "Licensor Transaction ID" -msgstr "" - -#: src/properties.cpp:784 -msgid "" -"Identifier assigned by Licensor for Licensor's reference and internal use." -msgstr "" - -#: src/properties.cpp:785 -msgid "Licensee Transaction ID" -msgstr "" - -#: src/properties.cpp:785 -msgid "" -"Identifier assigned by Licensee for Licensee's reference and internal use." -msgstr "" - -#: src/properties.cpp:786 -msgid "Licensee Project Reference" -msgstr "" - -#: src/properties.cpp:786 -msgid "Project reference name or description assigned by Licensee." -msgstr "" - -#: src/properties.cpp:787 -msgid "License Transaction Date" -msgstr "" - -#: src/properties.cpp:787 -msgid "The date of the License Transaction." -msgstr "" - -#: src/properties.cpp:788 -msgid "Reuse" -msgstr "" - -#: src/properties.cpp:788 -msgid "" -"Indicates whether a license is a repeat or an initial license. Reuse may " -"require that licenses stored in files previously delivered to the customer " -"be updated." -msgstr "" - -#: src/properties.cpp:789 -msgid "Other License Documents" -msgstr "" - -#: src/properties.cpp:789 -msgid "" -"Reference information for additional documents associated with the license." -msgstr "" - -#: src/properties.cpp:790 -msgid "Other License Info" -msgstr "" - -#: src/properties.cpp:790 -msgid "Additional license information." -msgstr "" - -#: src/properties.cpp:791 src/properties.cpp:792 src/properties.cpp:793 -#: src/properties.cpp:794 src/properties.cpp:795 -msgid "Optional field for use at Licensor's discretion." -msgstr "" - -#: src/properties.cpp:794 -msgid "Custom 4" -msgstr "" - -#: src/properties.cpp:795 -msgid "Custom 5" -msgstr "" - -#: src/properties.cpp:796 -msgid "Custom 6" -msgstr "" - -#: src/properties.cpp:796 src/properties.cpp:797 src/properties.cpp:798 -#: src/properties.cpp:799 src/properties.cpp:800 -msgid "Optional field for use at Licensee's discretion." -msgstr "" - -#: src/properties.cpp:797 -msgid "Custom 7" -msgstr "" - -#: src/properties.cpp:798 -msgid "Custom 8" -msgstr "" - -#: src/properties.cpp:799 -msgid "Custom 9" -msgstr "" - -#: src/properties.cpp:800 -msgid "Custom 10" -msgstr "" - -#: src/properties.cpp:807 -msgid "Adult Content Warning Required" -msgstr "" - -#: src/properties.cpp:808 -msgid "Not Required" -msgstr "" - -#: src/properties.cpp:814 -msgid "Protected" -msgstr "" - -#: src/properties.cpp:815 -msgid "Public Domain" -msgstr "" - -#: src/properties.cpp:821 -msgid "Credit Adjacent To Image" -msgstr "" - -#: src/properties.cpp:822 -msgid "Credit in Credits Area" -msgstr "" - -#: src/properties.cpp:823 -msgid "Credit on Image" -msgstr "" - -#: src/properties.cpp:824 -msgid "Not Require" -msgstr "" - -#: src/properties.cpp:829 -msgid "No Colorization" -msgstr "" - -#: src/properties.cpp:830 -msgid "No Cropping" -msgstr "" - -#: src/properties.cpp:831 -msgid "No De-Colorization" -msgstr "" - -#: src/properties.cpp:832 -msgid "No Flipping" -msgstr "" - -#: src/properties.cpp:833 -msgid "No Merging" -msgstr "" - -#: src/properties.cpp:834 -msgid "No Retouching" -msgstr "" - -#: src/properties.cpp:839 -msgid "Duplication Only as Necessary Under License" -msgstr "" - -#: src/properties.cpp:840 -msgid "No Duplication Constraints" -msgstr "" - -#: src/properties.cpp:841 -msgid "No Duplication" -msgstr "" - -#: src/properties.cpp:846 -msgid "Maintain File Name" -msgstr "" - -#: src/properties.cpp:847 -msgid "Maintain File Type" -msgstr "" - -#: src/properties.cpp:848 -msgid "Maintain ID in File Name" -msgstr "" - -#: src/properties.cpp:849 -msgid "Maintain Metadata" -msgstr "" - -#: src/properties.cpp:854 -msgid "Windows Bitmap (BMP)" -msgstr "" - -#: src/properties.cpp:855 -msgid "Digital Negative (DNG)" -msgstr "" - -#: src/properties.cpp:856 -msgid "Encapsulated PostScript (EPS)" -msgstr "" - -#: src/properties.cpp:857 -msgid "Graphics Interchange Format (GIF)" -msgstr "" - -#: src/properties.cpp:858 -msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" -msgstr "" - -#: src/properties.cpp:860 -msgid "Macintosh Picture (PICT)" -msgstr "" - -#: src/properties.cpp:861 -msgid "Portable Network Graphics (PNG)" -msgstr "" - -#: src/properties.cpp:862 -msgid "Photoshop Document (PSD)" -msgstr "" - -#: src/properties.cpp:863 -msgid "Proprietary RAW Image Format" -msgstr "" - -#: src/properties.cpp:864 -msgid "Tagged Image File Format (TIFF)" -msgstr "" - -#: src/properties.cpp:865 -msgid "Windows Media Photo (HD Photo)" -msgstr "" - -#: src/properties.cpp:870 -msgid "Greater than 50 MB" -msgstr "" - -#: src/properties.cpp:871 -msgid "Up to 1 MB" -msgstr "" - -#: src/properties.cpp:872 -msgid "Up to 10 MB" -msgstr "" - -#: src/properties.cpp:873 -msgid "Up to 30 MB" -msgstr "" - -#: src/properties.cpp:874 -msgid "Up to 50 MB" -msgstr "" - -#: src/properties.cpp:879 -msgid "Illustrated Image" -msgstr "" - -#: src/properties.cpp:880 -msgid "Multimedia or Composited Image" -msgstr "" - -#: src/properties.cpp:882 -msgid "Photographic Image" -msgstr "" - -#: src/properties.cpp:888 -msgid "Cell" -msgstr "" - -#: src/properties.cpp:889 -msgid "FAX" -msgstr "" - -#: src/properties.cpp:891 -msgid "Pager" -msgstr "" - -#: src/properties.cpp:892 -msgid "Work" -msgstr "" - -#: src/properties.cpp:897 -msgid "Age Unknown" -msgstr "" - -#: src/properties.cpp:898 -msgid "Age 25 or Over" -msgstr "" - -#: src/properties.cpp:899 -msgid "Age 24" -msgstr "" - -#: src/properties.cpp:900 -msgid "Age 23" -msgstr "" - -#: src/properties.cpp:901 -msgid "Age 22" -msgstr "" - -#: src/properties.cpp:902 -msgid "Age 21" -msgstr "" - -#: src/properties.cpp:903 -msgid "Age 20" -msgstr "" - -#: src/properties.cpp:904 -msgid "Age 19" -msgstr "" - -#: src/properties.cpp:905 -msgid "Age 18" -msgstr "" - -#: src/properties.cpp:906 -msgid "Age 17" -msgstr "" - -#: src/properties.cpp:907 -msgid "Age 16" -msgstr "" - -#: src/properties.cpp:908 -msgid "Age 15" -msgstr "" - -#: src/properties.cpp:909 -msgid "Age 14 or Under" -msgstr "" - -#: src/properties.cpp:915 src/properties.cpp:923 src/properties.cpp:930 -msgid "Not Applicable" -msgstr "" - -#: src/properties.cpp:916 -msgid "Unlimited Model Releases" -msgstr "" - -#: src/properties.cpp:917 -msgid "Limited or Incomplete Model Releases" -msgstr "" - -#: src/properties.cpp:924 -msgid "Unlimited Property Releases" -msgstr "" - -#: src/properties.cpp:925 -msgid "Limited or Incomplete Property Releases" -msgstr "" - -#: src/properties.cpp:931 -msgid "Repeat Use" -msgstr "" - -#: src/properties.cpp:935 src/properties.cpp:944 -msgid "Fixture Identification" -msgstr "" - -#: src/properties.cpp:936 src/properties.cpp:945 -msgid "Status" -msgstr "" - -#: src/properties.cpp:936 src/properties.cpp:945 -msgid "A notation making the image unique" -msgstr "" - -#: src/properties.cpp:937 src/properties.cpp:946 -msgid "People" -msgstr "" - -#: src/properties.cpp:938 src/properties.cpp:947 -msgid "CatalogSets" -msgstr "" - -#: src/properties.cpp:938 src/properties.cpp:947 src/properties.cpp:978 -#: src/properties.cpp:982 -msgid "Descriptive markers of catalog items by content" -msgstr "" - -#: src/properties.cpp:953 -msgid "RegionInfo" -msgstr "" - -#: src/properties.cpp:953 -msgid "Microsoft Photo people-tagging metadata root" -msgstr "" - -#: src/properties.cpp:959 -msgid "DateRegionsValid" -msgstr "" - -#: src/properties.cpp:959 -msgid "Date the last region was created" -msgstr "" - -#: src/properties.cpp:960 src/properties.cpp:975 -msgid "Regions" -msgstr "" - -#: src/properties.cpp:960 -msgid "Contains Regions/person tags" -msgstr "" - -#: src/properties.cpp:966 -msgid "PersonDisplayName" -msgstr "" - -#: src/properties.cpp:966 -msgid "Name of the person (in the given rectangle)" -msgstr "" - -#: src/properties.cpp:967 -msgid "Rectangle" -msgstr "" - -#: src/properties.cpp:967 -msgid "Rectangle that identifies the person within the photo" -msgstr "" - -#: src/properties.cpp:968 -msgid "PersonEmailDigest" -msgstr "" - -#: src/properties.cpp:968 -msgid "" -"SHA-1 encrypted message hash of the person's Windows Live e-mail address" -msgstr "" - -#: src/properties.cpp:969 -msgid "PersonLiveCID" -msgstr "" - -#: src/properties.cpp:969 -msgid "Signed decimal representation of the person's Windows Live CID" -msgstr "" - -#: src/properties.cpp:975 -msgid "Main structure containing region based information" -msgstr "" - -#: src/properties.cpp:976 -msgid "AppliedToDimensions" -msgstr "" - -#: src/properties.cpp:976 -msgid "Width and height of image when storing region data" -msgstr "" - -#: src/properties.cpp:977 -msgid "RegionList" -msgstr "" - -#: src/properties.cpp:977 -msgid "List of Region structures" -msgstr "" - -#: src/properties.cpp:978 -msgid "Area" -msgstr "" - -#: src/properties.cpp:979 -msgid "Type purpose of region (Face|Pet|Focus|BarCode)" -msgstr "" - -#: src/properties.cpp:980 -msgid "Name/ short description of content in image region" -msgstr "" - -#: src/properties.cpp:981 -msgid "" -"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" -"NotEvaluatedNotUsed)" -msgstr "" - -#: src/properties.cpp:982 -msgid "FocusUsage" -msgstr "" - -#: src/properties.cpp:983 -msgid "BarCodeValue" -msgstr "" - -#: src/properties.cpp:983 -msgid "Decoded BarCode value string" -msgstr "" - -#: src/properties.cpp:984 -msgid "Extensions" -msgstr "" - -#: src/properties.cpp:984 -msgid "Any top level XMP property to describe the region content" -msgstr "" - -#: src/sigmamn.cpp:62 -msgid "Resolution Mode" -msgstr "" - -#: src/sigmamn.cpp:63 -msgid "Resolution mode" -msgstr "" - -#: src/sigmamn.cpp:65 -msgid "Autofocus Mode" -msgstr "" - -#: src/sigmamn.cpp:66 -msgid "Autofocus mode" -msgstr "" - -#: src/sigmamn.cpp:68 -msgid "Focus Setting" -msgstr "" - -#: src/sigmamn.cpp:69 -msgid "Focus setting" -msgstr "" - -#: src/sigmamn.cpp:80 -msgid "Lens Range" -msgstr "" - -#: src/sigmamn.cpp:81 -msgid "Lens focal length range" -msgstr "" - -#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 -msgid "Shadow" -msgstr "" - -#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 -msgid "Highlight" -msgstr "" - -#: src/sigmamn.cpp:104 -msgid "Fill Light" -msgstr "" - -#: src/sigmamn.cpp:105 -msgid "X3 Fill light" -msgstr "" - -#: src/sigmamn.cpp:107 -msgid "Color Adjustment" -msgstr "" - -#: src/sigmamn.cpp:108 -msgid "Color adjustment" -msgstr "" - -#: src/sigmamn.cpp:110 -msgid "Adjustment Mode" -msgstr "" - -#: src/sigmamn.cpp:111 -msgid "Adjustment mode" -msgstr "" - -#: src/sigmamn.cpp:122 -msgid "Auto Bracket" -msgstr "" - -#: src/sigmamn.cpp:123 src/tags.cpp:1490 -msgid "Auto bracket" -msgstr "" - -#: src/sigmamn.cpp:127 -msgid "Unknown SigmaMakerNote tag" -msgstr "" - -#: src/sigmamn.cpp:170 -msgid "8-Segment" -msgstr "" - -#: src/sonymn.cpp:88 -msgid "Standard " -msgstr "" - -#: src/sonymn.cpp:91 -msgid "Advanced Lv1" -msgstr "" - -#: src/sonymn.cpp:92 -msgid "Advanced Lv2" -msgstr "" - -#: src/sonymn.cpp:93 -msgid "Advanced Lv3" -msgstr "" - -#: src/sonymn.cpp:94 -msgid "Advanced Lv4" -msgstr "" - -#: src/sonymn.cpp:95 -msgid "Advanced Lv5" -msgstr "" - -#: src/sonymn.cpp:109 -msgid "Landscape " -msgstr "" - -#: src/sonymn.cpp:113 -msgid "Night Scene / Twilight" -msgstr "" - -#: src/sonymn.cpp:114 -msgid "Hi-Speed Shutter" -msgstr "" - -#: src/sonymn.cpp:115 -msgid "Twilight Portrait" -msgstr "" - -#: src/sonymn.cpp:116 -msgid "Soft Snap" -msgstr "" - -#: src/sonymn.cpp:118 -msgid "Smile Shutter" -msgstr "" - -#: src/sonymn.cpp:120 -msgid "High Sensitivity" -msgstr "" - -#: src/sonymn.cpp:121 -msgid "Advanced Sports Shooting" -msgstr "" - -#: src/sonymn.cpp:123 -msgid "Gourmet" -msgstr "" - -#: src/sonymn.cpp:125 -msgid "Handheld Twilight" -msgstr "" - -#: src/sonymn.cpp:126 -msgid "Anti Motion Blur" -msgstr "" - -#: src/sonymn.cpp:128 -msgid "Backlight Correction HDR" -msgstr "" - -#: src/sonymn.cpp:142 -msgid "On (Continuous)" -msgstr "" - -#: src/sonymn.cpp:143 -msgid "On (Shooting)" -msgstr "" - -#: src/sonymn.cpp:151 -msgid "Plus" -msgstr "" - -#: src/sonymn.cpp:167 -msgid "White Flourescent" -msgstr "" - -#: src/sonymn.cpp:168 -msgid "Cool White Flourescent" -msgstr "" - -#: src/sonymn.cpp:169 -msgid "Day White Flourescent" -msgstr "" - -#: src/sonymn.cpp:172 -msgid "Underwater 1 (Blue Water)" -msgstr "" - -#: src/sonymn.cpp:173 -msgid "Underwater 2 (Green Water)" -msgstr "" - -#: src/sonymn.cpp:180 -msgid "Permanent-AF" -msgstr "" - -#: src/sonymn.cpp:188 -msgid "Center AF" -msgstr "" - -#: src/sonymn.cpp:189 -msgid "Spot AF" -msgstr "" - -#: src/sonymn.cpp:190 -msgid "Flexible Spot AF" -msgstr "" - -#: src/sonymn.cpp:191 -msgid "Touch AF" -msgstr "" - -#: src/sonymn.cpp:192 -msgid "Manual Focus" -msgstr "" - -#: src/sonymn.cpp:193 -msgid "Face Detected" -msgstr "" - -#: src/sonymn.cpp:208 -msgid "Close Focus" -msgstr "" - -#: src/sonymn.cpp:224 -msgid "Exposure Bracketing" -msgstr "" - -#: src/sonymn.cpp:298 src/sonymn.cpp:299 -msgid "Multi Burst Mode" -msgstr "" - -#: src/sonymn.cpp:301 src/sonymn.cpp:302 -msgid "Multi Burst Image Width" -msgstr "" - -#: src/sonymn.cpp:304 src/sonymn.cpp:305 -msgid "Multi Burst Image Height" -msgstr "" - -#: src/sonymn.cpp:315 -msgid "JPEG preview image" -msgstr "" - -#: src/sonymn.cpp:341 -msgid "Auto HDR" -msgstr "" - -#: src/sonymn.cpp:342 -msgid "High Definition Range Mode" -msgstr "" - -#: src/sonymn.cpp:346 -msgid "Shot Information" -msgstr "" - -#: src/sonymn.cpp:351 src/sonymn.cpp:352 -msgid "Sony Model ID" -msgstr "" - -#: src/sonymn.cpp:354 src/sonymn.cpp:355 -msgid "Color Reproduction" -msgstr "" - -#: src/sonymn.cpp:369 src/sonymn.cpp:370 src/sonymn.cpp:423 src/sonymn.cpp:424 -msgid "Dynamic Range Optimizer" -msgstr "" - -#: src/sonymn.cpp:378 src/sonymn.cpp:379 -msgid "Minolta MakerNote" -msgstr "" - -#: src/sonymn.cpp:384 src/sonymn.cpp:385 -msgid "Full Image Size" -msgstr "" - -#: src/sonymn.cpp:387 -msgid "Preview Image Size" -msgstr "" - -#: src/sonymn.cpp:388 -msgid "Preview image size" -msgstr "" - -#: src/sonymn.cpp:402 src/sonymn.cpp:403 src/sonymn.cpp:613 src/sonymn.cpp:614 -msgid "AF Illuminator" -msgstr "" - -#: src/sonymn.cpp:405 src/sonymn.cpp:406 -msgid "JPEG Quality" -msgstr "" - -#: src/sonymn.cpp:411 src/sonymn.cpp:412 -msgid "Release Mode" -msgstr "" - -#: src/sonymn.cpp:415 -msgid "Shot number in continous burst mode" -msgstr "" - -#: src/sonymn.cpp:417 src/sonymn.cpp:418 -msgid "Anti-Blur" -msgstr "" - -#: src/sonymn.cpp:420 src/sonymn.cpp:421 src/sonymn.cpp:621 src/sonymn.cpp:622 -msgid "Long Exposure Noise Reduction" -msgstr "" - -#: src/sonymn.cpp:426 src/sonymn.cpp:427 -msgid "Intelligent Auto" -msgstr "" - -#: src/sonymn.cpp:434 -msgid "Unknown Sony1MakerNote tag" -msgstr "" - -#: src/sonymn.cpp:448 -msgid "Continuous High" -msgstr "" - -#: src/sonymn.cpp:452 -msgid "Continuous Low" -msgstr "" - -#: src/sonymn.cpp:454 src/sonymn.cpp:455 -msgid "D-Range Optimizer Bracketing Low" -msgstr "" - -#: src/sonymn.cpp:487 -msgid "Autumn" -msgstr "" - -#: src/sonymn.cpp:493 -msgid "ADI" -msgstr "" - -#: src/sonymn.cpp:509 src/sonymn.cpp:510 src/sonymn.cpp:511 -msgid "StyleBox1" -msgstr "" - -#: src/sonymn.cpp:529 -msgid "Auto No Flash" -msgstr "" - -#: src/sonymn.cpp:584 src/sonymn.cpp:585 src/sonymn.cpp:690 src/sonymn.cpp:691 -msgid "Dynamic Range Optimizer Level" -msgstr "" - -#: src/sonymn.cpp:587 src/sonymn.cpp:588 src/sonymn.cpp:693 src/sonymn.cpp:694 -msgid "Creative Style" -msgstr "" - -#: src/sonymn.cpp:599 src/sonymn.cpp:600 -msgid "Zone Matching Value" -msgstr "" - -#: src/sonymn.cpp:617 src/sonymn.cpp:618 -msgid "AF With Shutter" -msgstr "" - -#: src/sonymn.cpp:625 src/sonymn.cpp:626 -msgid "High ISO NoiseReduction" -msgstr "" - -#: src/sonymn.cpp:629 src/sonymn.cpp:630 -msgid "Image Style" -msgstr "" - -#: src/sonymn.cpp:655 -msgid "Unknown Sony1 Camera Settings tag" -msgstr "" - -#: src/sonymn.cpp:719 -msgid "Unknown Sony1 Camera Settings 2 tag" -msgstr "" - -#: src/tags.cpp:184 -msgid "Unknown section" -msgstr "" - -#: src/tags.cpp:185 -msgid "Image data structure" -msgstr "" - -#: src/tags.cpp:186 -msgid "Recording offset" -msgstr "" - -#: src/tags.cpp:187 -msgid "Image data characteristics" -msgstr "" - -#: src/tags.cpp:188 -msgid "Other data" -msgstr "" - -#: src/tags.cpp:189 -msgid "Exif data structure" -msgstr "" - -#: src/tags.cpp:191 -msgid "Image configuration" -msgstr "" - -#: src/tags.cpp:192 -msgid "User information" -msgstr "" - -#: src/tags.cpp:193 -msgid "Related file" -msgstr "" - -#: src/tags.cpp:194 -msgid "Date and time" -msgstr "" - -#: src/tags.cpp:195 -msgid "Picture taking conditions" -msgstr "" - -#: src/tags.cpp:196 -msgid "GPS information" -msgstr "" - -#: src/tags.cpp:197 -msgid "Interoperability information" -msgstr "" - -#: src/tags.cpp:198 -msgid "Vendor specific information" -msgstr "" - -#: src/tags.cpp:199 -msgid "Adobe DNG tags" -msgstr "" - -#: src/tags.cpp:200 -msgid "Panasonic RAW tags" -msgstr "" - -#: src/tags.cpp:201 -msgid "TIFF/EP tags" -msgstr "" - -#: src/tags.cpp:202 -msgid "TIFF PageMaker 6.0 tags" -msgstr "" - -#: src/tags.cpp:203 -msgid "Adobe OPI tags" -msgstr "" - -#: src/tags.cpp:204 -msgid "Last section" -msgstr "" - -#: src/tags.cpp:220 -msgid "Primary image" -msgstr "" - -#: src/tags.cpp:221 -msgid "Thumbnail/Preview image" -msgstr "" - -#: src/tags.cpp:222 -msgid "Primary image, Multi page file" -msgstr "" - -#: src/tags.cpp:223 -msgid "Thumbnail/Preview image, Multi page file" -msgstr "" - -#: src/tags.cpp:224 -msgid "Primary image, Transparency mask" -msgstr "" - -#: src/tags.cpp:225 -msgid "Thumbnail/Preview image, Transparency mask" -msgstr "" - -#: src/tags.cpp:226 -msgid "Primary image, Multi page file, Transparency mask" -msgstr "" - -#: src/tags.cpp:227 src/tags.cpp:228 -msgid "Thumbnail/Preview image, Multi page file, Transparency mask" -msgstr "" - -#: src/tags.cpp:233 -msgid "Full-resolution image data" -msgstr "" - -#: src/tags.cpp:234 -msgid "Reduced-resolution image data" -msgstr "" - -#: src/tags.cpp:235 -msgid "A single page of a multi-page image" -msgstr "" - -#: src/tags.cpp:241 -msgid "inch" -msgstr "" - -#: src/tags.cpp:248 -msgid "CCITT RLE" -msgstr "" - -#: src/tags.cpp:249 -msgid "T4/Group 3 Fax" -msgstr "" - -#: src/tags.cpp:250 -msgid "T6/Group 4 Fax" -msgstr "" - -#: src/tags.cpp:251 -msgid "LZW" -msgstr "" - -#: src/tags.cpp:252 -msgid "JPEG (old-style)" -msgstr "" - -#: src/tags.cpp:253 -msgid "JPEG" -msgstr "" - -#: src/tags.cpp:254 -msgid "Adobe Deflate" -msgstr "" - -#: src/tags.cpp:255 -msgid "JBIG B&W" -msgstr "" - -#: src/tags.cpp:256 -msgid "JBIG Color" -msgstr "" - -#: src/tags.cpp:257 -msgid "Next 2-bits RLE" -msgstr "" - -#: src/tags.cpp:258 -msgid "Epson ERF Compressed" -msgstr "" - -#: src/tags.cpp:259 -msgid "Samsung SRW Compressed" -msgstr "" - -#: src/tags.cpp:260 -msgid "CCITT RLE 1-word" -msgstr "" - -#: src/tags.cpp:261 -msgid "PackBits (Macintosh RLE)" -msgstr "" - -#: src/tags.cpp:262 -msgid "Thunderscan RLE" -msgstr "" - -#: src/tags.cpp:263 -msgid "IT8 CT Padding" -msgstr "" - -#: src/tags.cpp:264 -msgid "IT8 Linework RLE" -msgstr "" - -#: src/tags.cpp:265 -msgid "IT8 Monochrome Picture" -msgstr "" - -#: src/tags.cpp:266 -msgid "IT8 Binary Lineart" -msgstr "" - -#: src/tags.cpp:267 -msgid "Pixar Film (10-bits LZW)" -msgstr "" - -#: src/tags.cpp:268 -msgid "Pixar Log (11-bits ZIP)" -msgstr "" - -#: src/tags.cpp:269 -msgid "Pixar Deflate" -msgstr "" - -#: src/tags.cpp:270 -msgid "Kodak DCS Encoding" -msgstr "" - -#: src/tags.cpp:271 -msgid "ISO JBIG" -msgstr "" - -#: src/tags.cpp:272 -msgid "SGI Log Luminance RLE" -msgstr "" - -#: src/tags.cpp:273 -msgid "SGI Log 24-bits packed" -msgstr "" - -#: src/tags.cpp:274 -msgid "Leadtools JPEG 2000" -msgstr "" - -#: src/tags.cpp:275 -msgid "Nikon NEF Compressed" -msgstr "" - -#: src/tags.cpp:276 -msgid "Kodak DCR Compressed" -msgstr "" - -#: src/tags.cpp:277 -msgid "Pentax PEF Compressed" -msgstr "" - -#: src/tags.cpp:282 -msgid "White Is Zero" -msgstr "" - -#: src/tags.cpp:283 -msgid "Black Is Zero" -msgstr "" - -#: src/tags.cpp:284 -msgid "RGB" -msgstr "" - -#: src/tags.cpp:285 -msgid "RGB Palette" -msgstr "" - -#: src/tags.cpp:286 -msgid "Transparency Mask" -msgstr "" - -#: src/tags.cpp:287 src/tags.cpp:326 -msgid "CMYK" -msgstr "" - -#: src/tags.cpp:288 -msgid "YCbCr" -msgstr "" - -#: src/tags.cpp:289 -msgid "CIELab" -msgstr "" - -#: src/tags.cpp:290 -msgid "ICCLab" -msgstr "" - -#: src/tags.cpp:291 -msgid "ITULab" -msgstr "" - -#: src/tags.cpp:292 -msgid "Color Filter Array" -msgstr "" - -#: src/tags.cpp:293 -msgid "Pixar LogL" -msgstr "" - -#: src/tags.cpp:294 -msgid "Pixar LogLuv" -msgstr "" - -#: src/tags.cpp:295 -msgid "Linear Raw" -msgstr "" - -#: src/tags.cpp:300 -msgid "No dithering or halftoning" -msgstr "" - -#: src/tags.cpp:301 -msgid "Ordered dither or halftone technique" -msgstr "" - -#: src/tags.cpp:302 -msgid "Randomized process" -msgstr "" - -#: src/tags.cpp:307 -msgid "top, left" -msgstr "" - -#: src/tags.cpp:308 -msgid "top, right" -msgstr "" - -#: src/tags.cpp:309 -msgid "bottom, right" -msgstr "" - -#: src/tags.cpp:310 -msgid "bottom, left" -msgstr "" - -#: src/tags.cpp:311 -msgid "left, top" -msgstr "" - -#: src/tags.cpp:312 -msgid "right, top" -msgstr "" - -#: src/tags.cpp:313 -msgid "right, bottom" -msgstr "" - -#: src/tags.cpp:314 src/tags.cpp:315 -msgid "left, bottom" -msgstr "" - -#: src/tags.cpp:320 -msgid "No prediction scheme used" -msgstr "" - -#: src/tags.cpp:321 -msgid "Horizontal differencing" -msgstr "" - -#: src/tags.cpp:327 -msgid "not CMYK" -msgstr "" - -#: src/tags.cpp:332 -msgid "Unsigned integer data" -msgstr "" - -#: src/tags.cpp:333 -msgid "Two's complement signed integer data" -msgstr "" - -#: src/tags.cpp:334 -msgid "IEEE floating point data" -msgstr "" - -#: src/tags.cpp:335 src/tags.cpp:336 -msgid "Undefined data format" -msgstr "" - -#: src/tags.cpp:341 -msgid "Not indexed" -msgstr "" - -#: src/tags.cpp:342 src/tags.cpp:648 -msgid "Indexed" -msgstr "" - -#: src/tags.cpp:347 -msgid "A" -msgstr "" - -#: src/tags.cpp:348 -msgid "B" -msgstr "" - -#: src/tags.cpp:349 -msgid "C" -msgstr "" - -#: src/tags.cpp:350 -msgid "A+B-C" -msgstr "" - -#: src/tags.cpp:351 -msgid "A+((B-C)/2)" -msgstr "" - -#: src/tags.cpp:352 -msgid "B+((A-C)/2)" -msgstr "" - -#: src/tags.cpp:353 -msgid "(A+B)/2" -msgstr "" - -#: src/tags.cpp:358 -msgid "Centered" -msgstr "" - -#: src/tags.cpp:359 -msgid "Co-sited" -msgstr "" - -#: src/tags.cpp:364 -msgid "No flash" -msgstr "" - -#: src/tags.cpp:366 -msgid "Fired, return light not detected" -msgstr "" - -#: src/tags.cpp:367 -msgid "Fired, return light detected" -msgstr "" - -#: src/tags.cpp:368 -msgid "Yes, did not fire" -msgstr "" - -#: src/tags.cpp:369 -msgid "Yes, compulsory" -msgstr "" - -#: src/tags.cpp:370 -msgid "Yes, compulsory, return light not detected" -msgstr "" - -#: src/tags.cpp:371 -msgid "Yes, compulsory, return light detected" -msgstr "" - -#: src/tags.cpp:372 -msgid "No, compulsory" -msgstr "" - -#: src/tags.cpp:373 -msgid "No, did not fire, return light not detected" -msgstr "" - -#: src/tags.cpp:374 -msgid "No, auto" -msgstr "" - -#: src/tags.cpp:375 -msgid "Yes, auto" -msgstr "" - -#: src/tags.cpp:376 -msgid "Yes, auto, return light not detected" -msgstr "" - -#: src/tags.cpp:377 -msgid "Yes, auto, return light detected" -msgstr "" - -#: src/tags.cpp:378 -msgid "No flash function" -msgstr "" - -#: src/tags.cpp:379 -msgid "No, no flash function" -msgstr "" - -#: src/tags.cpp:380 -msgid "Yes, red-eye reduction" -msgstr "" - -#: src/tags.cpp:381 -msgid "Yes, red-eye reduction, return light not detected" -msgstr "" - -#: src/tags.cpp:382 -msgid "Yes, red-eye reduction, return light detected" -msgstr "" - -#: src/tags.cpp:383 -msgid "Yes, compulsory, red-eye reduction" -msgstr "" - -#: src/tags.cpp:384 -msgid "Yes, compulsory, red-eye reduction, return light not detected" -msgstr "" - -#: src/tags.cpp:385 -msgid "Yes, compulsory, red-eye reduction, return light detected" -msgstr "" - -#: src/tags.cpp:386 -msgid "No, red-eye reduction" -msgstr "" - -#: src/tags.cpp:387 -msgid "No, auto, red-eye reduction" -msgstr "" - -#: src/tags.cpp:388 -msgid "Yes, auto, red-eye reduction" -msgstr "" - -#: src/tags.cpp:389 -msgid "Yes, auto, red-eye reduction, return light not detected" -msgstr "" - -#: src/tags.cpp:390 -msgid "Yes, auto, red-eye reduction, return light detected" -msgstr "" - -#: src/tags.cpp:395 -msgid "Rectangular (or square) layout" -msgstr "" - -#: src/tags.cpp:396 -msgid "Staggered layout A: even columns are offset down by 1/2 row" -msgstr "" - -#: src/tags.cpp:397 -msgid "Staggered layout B: even columns are offset up by 1/2 row" -msgstr "" - -#: src/tags.cpp:398 -msgid "Staggered layout C: even rows are offset right by 1/2 column" -msgstr "" - -#: src/tags.cpp:399 -msgid "Staggered layout D: even rows are offset left by 1/2 column" -msgstr "" - -#: src/tags.cpp:404 -msgid "Processing Software" -msgstr "" - -#: src/tags.cpp:405 -msgid "The name and version of the software used to post-process the picture." -msgstr "" - -#: src/tags.cpp:408 -msgid "New Subfile Type" -msgstr "" - -#: src/tags.cpp:409 -msgid "A general indication of the kind of data contained in this subfile." -msgstr "" - -#: src/tags.cpp:411 -msgid "Subfile Type" -msgstr "" - -#: src/tags.cpp:412 -msgid "" -"A general indication of the kind of data contained in this subfile. This " -"field is deprecated. The NewSubfileType field should be used instead." -msgstr "" - -#: src/tags.cpp:416 -msgid "" -"The number of columns of image data, equal to the number of pixels per row. " -"In JPEG compressed data a JPEG marker is used instead of this tag." -msgstr "" - -#: src/tags.cpp:421 -msgid "" -"The number of rows of image data. In JPEG compressed data a JPEG marker is " -"used instead of this tag." -msgstr "" - -#: src/tags.cpp:424 -msgid "Bits per Sample" -msgstr "" - -#: src/tags.cpp:425 -msgid "" -"The number of bits per image component. In this standard each component of " -"the image is 8 bits, so the value for this tag is 8. See also " -". In JPEG compressed data a JPEG marker is used instead of " -"this tag." -msgstr "" - -#: src/tags.cpp:431 -msgid "" -"The compression scheme used for the image data. When a primary image is JPEG " -"compressed, this designation is not necessary and is omitted. When " -"thumbnails use JPEG compression, this tag value is set to 6." -msgstr "" - -#: src/tags.cpp:437 -msgid "" -"The pixel composition. In JPEG compressed data a JPEG marker is used instead " -"of this tag." -msgstr "" - -#: src/tags.cpp:440 -msgid "Threshholding" -msgstr "" - -#: src/tags.cpp:441 -msgid "" -"For black and white TIFF files that represent shades of gray, the technique " -"used to convert from gray to black and white pixels." -msgstr "" - -#: src/tags.cpp:444 -msgid "Cell Width" -msgstr "" - -#: src/tags.cpp:445 -msgid "" -"The width of the dithering or halftoning matrix used to create a dithered or " -"halftoned bilevel file." -msgstr "" - -#: src/tags.cpp:448 -msgid "Cell Length" -msgstr "" - -#: src/tags.cpp:449 -msgid "" -"The length of the dithering or halftoning matrix used to create a dithered " -"or halftoned bilevel file." -msgstr "" - -#: src/tags.cpp:452 -msgid "Fill Order" -msgstr "" - -#: src/tags.cpp:453 -msgid "The logical order of bits within a byte" -msgstr "" - -#: src/tags.cpp:455 -msgid "Document Name" -msgstr "" - -#: src/tags.cpp:456 -msgid "The name of the document from which this image was scanned" -msgstr "" - -#: src/tags.cpp:459 -msgid "" -"A character string giving the title of the image. It may be a comment such " -"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " -"used. When a 2-bytes code is necessary, the Exif Private tag " -"is to be used." -msgstr "" - -#: src/tags.cpp:466 -msgid "" -"The manufacturer of the recording equipment. This is the manufacturer of the " -"DSC, scanner, video digitizer or other equipment that generated the image. " -"When the field is left blank, it is treated as unknown." -msgstr "" - -#: src/tags.cpp:472 -msgid "" -"The model name or model number of the equipment. This is the model name or " -"number of the DSC, scanner, video digitizer or other equipment that " -"generated the image. When the field is left blank, it is treated as unknown." -msgstr "" - -#: src/tags.cpp:478 -msgid "" -"For each strip, the byte offset of that strip. It is recommended that this " -"be selected so the number of strip bytes does not exceed 64 Kbytes. With " -"JPEG compressed data this designation is not needed and is omitted. See also " -" and ." -msgstr "" - -#: src/tags.cpp:485 -msgid "The image orientation viewed in terms of rows and columns." -msgstr "" - -#: src/tags.cpp:487 -msgid "Samples per Pixel" -msgstr "" - -#: src/tags.cpp:488 -msgid "" -"The number of components per pixel. Since this standard applies to RGB and " -"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " -"JPEG marker is used instead of this tag." -msgstr "" - -#: src/tags.cpp:492 -msgid "Rows per Strip" -msgstr "" - -#: src/tags.cpp:493 -msgid "" -"The number of rows per strip. This is the number of rows in the image of one " -"strip when an image is divided into strips. With JPEG compressed data this " -"designation is not needed and is omitted. See also and " -"." -msgstr "" - -#: src/tags.cpp:498 -msgid "Strip Byte Count" -msgstr "" - -#: src/tags.cpp:499 -msgid "" -"The total number of bytes in each strip. With JPEG compressed data this " -"designation is not needed and is omitted." -msgstr "" - -#: src/tags.cpp:502 -msgid "X-Resolution" -msgstr "" - -#: src/tags.cpp:503 -msgid "" -"The number of pixels per in the direction. " -"When the image resolution is unknown, 72 [dpi] is designated." -msgstr "" - -#: src/tags.cpp:506 -msgid "Y-Resolution" -msgstr "" - -#: src/tags.cpp:507 -msgid "" -"The number of pixels per in the direction. " -"The same value as is designated." -msgstr "" - -#: src/tags.cpp:511 -msgid "" -"Indicates whether pixel components are recorded in a chunky or planar " -"format. In JPEG compressed files a JPEG marker is used instead of this tag. " -"If this field does not exist, the TIFF default of 1 (chunky) is assumed." -msgstr "" - -#: src/tags.cpp:516 -msgid "Gray Response Unit" -msgstr "" - -#: src/tags.cpp:517 -msgid "The precision of the information contained in the GrayResponseCurve." -msgstr "" - -#: src/tags.cpp:519 -msgid "Gray Response Curve" -msgstr "" - -#: src/tags.cpp:520 -msgid "For grayscale data, the optical density of each possible pixel value." -msgstr "" - -#: src/tags.cpp:522 -msgid "T4 Options" -msgstr "" - -#: src/tags.cpp:523 -msgid "T.4-encoding options." -msgstr "" - -#: src/tags.cpp:525 -msgid "T6 Options" -msgstr "" - -#: src/tags.cpp:526 -msgid "T.6-encoding options." -msgstr "" - -#: src/tags.cpp:529 -msgid "" -"The unit for measuring and . The same unit is " -"used for both and . If the image resolution is " -"unknown, 2 (inches) is designated." -msgstr "" - -#: src/tags.cpp:534 -msgid "" -"A transfer function for the image, described in tabular style. Normally this " -"tag is not necessary, since color space is specified in the color space " -"information tag ()." -msgstr "" - -#: src/tags.cpp:539 -msgid "" -"This tag records the name and version of the software or firmware of the " -"camera or image input device used to generate the image. The detailed format " -"is not specified, but it is recommended that the example shown below be " -"followed. When the field is left blank, it is treated as unknown." -msgstr "" - -#: src/tags.cpp:546 -msgid "" -"The date and time of image creation. In Exif standard, it is the date and " -"time the file was changed." -msgstr "" - -#: src/tags.cpp:550 -msgid "" -"This tag records the name of the camera owner, photographer or image " -"creator. The detailed format is not specified, but it is recommended that " -"the information be written as in the example below for ease of " -"Interoperability. When the field is left blank, it is treated as unknown. " -"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " -"Ken James\"" -msgstr "" - -#: src/tags.cpp:557 -msgid "Host Computer" -msgstr "" - -#: src/tags.cpp:558 -msgid "" -"This tag records information about the host computer used to generate the " -"image." -msgstr "" - -#: src/tags.cpp:561 -msgid "Predictor" -msgstr "" - -#: src/tags.cpp:562 -msgid "" -"A predictor is a mathematical operator that is applied to the image data " -"before an encoding scheme is applied." -msgstr "" - -#: src/tags.cpp:566 -msgid "" -"The chromaticity of the white point of the image. Normally this tag is not " -"necessary, since color space is specified in the colorspace information tag " -"()." -msgstr "" - -#: src/tags.cpp:571 -msgid "" -"The chromaticity of the three primary colors of the image. Normally this tag " -"is not necessary, since colorspace is specified in the colorspace " -"information tag ()." -msgstr "" - -#: src/tags.cpp:575 -msgid "Color Map" -msgstr "" - -#: src/tags.cpp:576 -msgid "" -"A color map for palette color images. This field defines a Red-Green-Blue " -"color map (often called a lookup table) for palette-color images. In a " -"palette-color image, a pixel value is used to index into an RGB lookup table." -msgstr "" - -#: src/tags.cpp:581 -msgid "Halftone Hints" -msgstr "" - -#: src/tags.cpp:582 -msgid "" -"The purpose of the HalftoneHints field is to convey to the halftone function " -"the range of gray levels within a colorimetrically-specified image that " -"should retain tonal detail." -msgstr "" - -#: src/tags.cpp:586 -msgid "Tile Width" -msgstr "" - -#: src/tags.cpp:587 -msgid "The tile width in pixels. This is the number of columns in each tile." -msgstr "" - -#: src/tags.cpp:589 -msgid "Tile Length" -msgstr "" - -#: src/tags.cpp:590 -msgid "" -"The tile length (height) in pixels. This is the number of rows in each tile." -msgstr "" - -#: src/tags.cpp:592 -msgid "Tile Offsets" -msgstr "" - -#: src/tags.cpp:593 -msgid "" -"For each tile, the byte offset of that tile, as compressed and stored on " -"disk. The offset is specified with respect to the beginning of the TIFF " -"file. Note that this implies that each tile has a location independent of " -"the locations of other tiles." -msgstr "" - -#: src/tags.cpp:598 -msgid "Tile Byte Counts" -msgstr "" - -#: src/tags.cpp:599 -msgid "" -"For each tile, the number of (compressed) bytes in that tile. See " -"TileOffsets for a description of how the byte counts are ordered." -msgstr "" - -#: src/tags.cpp:602 -msgid "SubIFD Offsets" -msgstr "" - -#: src/tags.cpp:603 -msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." -msgstr "" - -#: src/tags.cpp:605 -msgid "Ink Set" -msgstr "" - -#: src/tags.cpp:606 -msgid "" -"The set of inks used in a separated (PhotometricInterpretation=5) image." -msgstr "" - -#: src/tags.cpp:608 -msgid "Ink Names" -msgstr "" - -#: src/tags.cpp:609 -msgid "" -"The name of each ink used in a separated (PhotometricInterpretation=5) image." -msgstr "" - -#: src/tags.cpp:611 -msgid "Number Of Inks" -msgstr "" - -#: src/tags.cpp:612 -msgid "" -"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " -"samples." -msgstr "" - -#: src/tags.cpp:614 -msgid "Dot Range" -msgstr "" - -#: src/tags.cpp:615 -#, c-format -msgid "The component values that correspond to a 0% dot and 100% dot." -msgstr "" - -#: src/tags.cpp:617 -msgid "Target Printer" -msgstr "" - -#: src/tags.cpp:618 -msgid "" -"A description of the printing environment for which this separation is " -"intended." -msgstr "" - -#: src/tags.cpp:620 -msgid "Extra Samples" -msgstr "" - -#: src/tags.cpp:621 -msgid "" -"Specifies that each pixel has m extra components whose interpretation is " -"defined by one of the values listed below." -msgstr "" - -#: src/tags.cpp:624 -msgid "Sample Format" -msgstr "" - -#: src/tags.cpp:625 -msgid "This field specifies how to interpret each data sample in a pixel." -msgstr "" - -#: src/tags.cpp:627 -msgid "SMin Sample Value" -msgstr "" - -#: src/tags.cpp:628 -msgid "This field specifies the minimum sample value." -msgstr "" - -#: src/tags.cpp:630 -msgid "SMax Sample Value" -msgstr "" - -#: src/tags.cpp:631 -msgid "This field specifies the maximum sample value." -msgstr "" - -#: src/tags.cpp:633 -msgid "Transfer Range" -msgstr "" - -#: src/tags.cpp:634 -msgid "Expands the range of the TransferFunction" -msgstr "" - -#: src/tags.cpp:636 -msgid "Clip Path" -msgstr "" - -#: src/tags.cpp:637 -msgid "" -"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " -"creation functionality." -msgstr "" - -#: src/tags.cpp:640 -msgid "X Clip Path Units" -msgstr "" - -#: src/tags.cpp:641 -msgid "" -"The number of units that span the width of the image, in terms of integer " -"ClipPath coordinates." -msgstr "" - -#: src/tags.cpp:644 -msgid "Y Clip Path Units" -msgstr "" - -#: src/tags.cpp:645 -msgid "" -"The number of units that span the height of the image, in terms of integer " -"ClipPath coordinates." -msgstr "" - -#: src/tags.cpp:649 -msgid "" -"Indexed images are images where the 'pixels' do not represent color values, " -"but rather an index (usually 8-bit) into a separate color table, the " -"ColorMap." -msgstr "" - -#: src/tags.cpp:653 -msgid "JPEG tables" -msgstr "" - -#: src/tags.cpp:654 -msgid "" -"This optional tag may be used to encode the JPEG quantization andHuffman " -"tables for subsequent use by the JPEG decompression process." -msgstr "" - -#: src/tags.cpp:657 -msgid "OPI Proxy" -msgstr "" - -#: src/tags.cpp:658 -msgid "" -"OPIProxy gives information concerning whether this image is a low-resolution " -"proxy of a high-resolution image (Adobe OPI)." -msgstr "" - -#: src/tags.cpp:661 -msgid "JPEG Process" -msgstr "" - -#: src/tags.cpp:662 -msgid "This field indicates the process used to produce the compressed data" -msgstr "" - -#: src/tags.cpp:664 -msgid "JPEG Interchange Format" -msgstr "" - -#: src/tags.cpp:665 -msgid "" -"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " -"is not used for primary image JPEG data." -msgstr "" - -#: src/tags.cpp:668 -msgid "JPEG Interchange Format Length" -msgstr "" - -#: src/tags.cpp:669 -msgid "" -"The number of bytes of JPEG compressed thumbnail data. This is not used for " -"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " -"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " -"be recorded. Compressed thumbnails must be recorded in no more than 64 " -"Kbytes, including all other data to be recorded in APP1." -msgstr "" - -#: src/tags.cpp:676 -msgid "JPEG Restart Interval" -msgstr "" - -#: src/tags.cpp:677 -msgid "" -"This Field indicates the length of the restart interval used in the " -"compressed image data." -msgstr "" - -#: src/tags.cpp:680 -msgid "JPEG Lossless Predictors" -msgstr "" - -#: src/tags.cpp:681 -msgid "" -"This Field points to a list of lossless predictor-selection values, one per " -"component." -msgstr "" - -#: src/tags.cpp:684 -msgid "JPEG Point Transforms" -msgstr "" - -#: src/tags.cpp:685 -msgid "" -"This Field points to a list of point transform values, one per component." -msgstr "" - -#: src/tags.cpp:687 -msgid "JPEG Q-Tables" -msgstr "" - -#: src/tags.cpp:688 -msgid "" -"This Field points to a list of offsets to the quantization tables, one per " -"component." -msgstr "" - -#: src/tags.cpp:691 -msgid "JPEG DC-Tables" -msgstr "" - -#: src/tags.cpp:692 -msgid "" -"This Field points to a list of offsets to the DC Huffman tables or the " -"lossless Huffman tables, one per component." -msgstr "" - -#: src/tags.cpp:695 -msgid "JPEG AC-Tables" -msgstr "" - -#: src/tags.cpp:696 -msgid "" -"This Field points to a list of offsets to the Huffman AC tables, one per " -"component." -msgstr "" - -#: src/tags.cpp:700 -msgid "" -"The matrix coefficients for transformation from RGB to YCbCr image data. No " -"default is given in TIFF; but here the value given in Appendix E, \"Color " -"Space Guidelines\", is used as the default. The color space is declared in a " -"color space information tag, with the default being the value that gives the " -"optimal image characteristics Interoperability this condition." -msgstr "" - -#: src/tags.cpp:708 -msgid "YCbCr Sub-Sampling" -msgstr "" - -#: src/tags.cpp:709 -msgid "" -"The sampling ratio of chrominance components in relation to the luminance " -"component. In JPEG compressed data a JPEG marker is used instead of this tag." -msgstr "" - -#: src/tags.cpp:714 -msgid "" -"The position of chrominance components in relation to the luminance " -"component. This field is designated only for JPEG compressed data or " -"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " -"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " -"record data, in order to improve the image quality when viewed on TV " -"systems. When this field does not exist, the reader shall assume the TIFF " -"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " -"recommended. If the reader does not have the capability of supporting both " -"kinds of , it shall follow the TIFF default regardless of " -"the value in this field. It is preferable that readers be able to support " -"both centered and co-sited positioning." -msgstr "" - -#: src/tags.cpp:728 -msgid "Reference Black/White" -msgstr "" - -#: src/tags.cpp:729 -msgid "" -"The reference black point value and reference white point value. No defaults " -"are given in TIFF, but the values below are given as defaults here. The " -"color space is declared in a color space information tag, with the default " -"being the value that gives the optimal image characteristics " -"Interoperability these conditions." -msgstr "" - -#: src/tags.cpp:736 -msgid "XML Packet" -msgstr "" - -#: src/tags.cpp:737 -msgid "XMP Metadata (Adobe technote 9-14-02)" -msgstr "" - -#: src/tags.cpp:739 -msgid "Windows Rating" -msgstr "" - -#: src/tags.cpp:740 -msgid "Rating tag used by Windows" -msgstr "" - -#: src/tags.cpp:742 -msgid "Windows Rating Percent" -msgstr "" - -#: src/tags.cpp:743 -msgid "Rating tag used by Windows, value in percent" -msgstr "" - -#: src/tags.cpp:745 -msgid "Image ID" -msgstr "" - -#: src/tags.cpp:746 -msgid "" -"ImageID is the full pathname of the original, high-resolution image, or any " -"other identifying string that uniquely identifies the original image (Adobe " -"OPI)." -msgstr "" - -#: src/tags.cpp:750 -msgid "CFA Repeat Pattern Dimension" -msgstr "" - -#: src/tags.cpp:751 -msgid "" -"Contains two values representing the minimum rows and columns to define the " -"repeating patterns of the color filter array" -msgstr "" - -#: src/tags.cpp:755 -msgid "" -"Indicates the color filter array (CFA) geometric pattern of the image sensor " -"when a one-chip color area sensor is used. It does not apply to all sensing " -"methods" -msgstr "" - -#: src/tags.cpp:763 -msgid "" -"Copyright information. In this standard the tag is used to indicate both the " -"photographer and editor copyrights. It is the copyright notice of the person " -"or organization claiming rights to the image. The Interoperability copyright " -"statement including date and rights should be written in this field; e.g., " -"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " -"field records both the photographer and editor copyrights, with each " -"recorded in a separate part of the statement. When there is a clear " -"distinction between the photographer and editor copyrights, these are to be " -"written in the order of photographer followed by editor copyright, separated " -"by NULL (in this case since the statement also ends with a NULL, there are " -"two NULL codes). When only the photographer copyright is given, it is " -"terminated by one NULL code . When only the editor copyright is given, the " -"photographer copyright part consists of one space followed by a terminating " -"NULL code, then the editor copyright is given. When the field is left blank, " -"it is treated as unknown." -msgstr "" - -#: src/tags.cpp:782 -msgid "Exposure time, given in seconds." -msgstr "" - -#: src/tags.cpp:783 src/tags.cpp:1546 -msgid "The F number." -msgstr "" - -#: src/tags.cpp:784 -msgid "IPTC/NAA" -msgstr "" - -#: src/tags.cpp:785 -msgid "Contains an IPTC/NAA record" -msgstr "" - -#: src/tags.cpp:787 -msgid "Image Resources Block" -msgstr "" - -#: src/tags.cpp:788 -msgid "Contains information embedded by the Adobe Photoshop application" -msgstr "" - -#: src/tags.cpp:791 -msgid "" -"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " -"as that of the IFD specified in TIFF. ordinarily, however, it does not " -"contain image data as in the case of TIFF." -msgstr "" - -#: src/tags.cpp:796 -msgid "Inter Color Profile" -msgstr "" - -#: src/tags.cpp:797 -msgid "" -"Contains an InterColor Consortium (ICC) format color space characterization/" -"profile" -msgstr "" - -#: src/tags.cpp:799 src/tags.cpp:1549 -msgid "" -"The class of the program used by the camera to set exposure when the picture " -"is taken." -msgstr "" - -#: src/tags.cpp:800 -msgid "Indicates the spectral sensitivity of each channel of the camera used." -msgstr "" - -#: src/tags.cpp:802 -msgid "" -"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " -"Info IFD, like that of Exif IFD, has no image data." -msgstr "" - -#: src/tags.cpp:806 src/tags.cpp:1557 -msgid "ISO Speed Ratings" -msgstr "" - -#: src/tags.cpp:806 src/tags.cpp:1558 -msgid "" -"Indicates the ISO Speed and ISO Latitude of the camera or input device as " -"specified in ISO 12232." -msgstr "" - -#: src/tags.cpp:807 -msgid "" -"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " -"14524." -msgstr "" - -#: src/tags.cpp:808 -msgid "Interlace" -msgstr "" - -#: src/tags.cpp:808 -msgid "Indicates the field number of multifield images." -msgstr "" - -#: src/tags.cpp:809 -msgid "Time Zone Offset" -msgstr "" - -#: src/tags.cpp:810 -msgid "" -"This optional tag encodes the time zone of the camera clock (relativeto " -"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " -"picture was taken. It may also contain the time zone offsetof the clock used " -"to create the DateTime tag-value when the image wasmodified." -msgstr "" - -#: src/tags.cpp:816 -msgid "Self Timer Mode" -msgstr "" - -#: src/tags.cpp:816 -msgid "Number of seconds image capture was delayed from button press." -msgstr "" - -#: src/tags.cpp:817 -msgid "Date Time Original" -msgstr "" - -#: src/tags.cpp:817 -msgid "The date and time when the original image data was generated." -msgstr "" - -#: src/tags.cpp:818 -msgid "Specific to compressed data; states the compressed bits per pixel." -msgstr "" - -#: src/tags.cpp:819 -msgid "Shutter speed." -msgstr "" - -#: src/tags.cpp:820 -msgid "The lens aperture." -msgstr "" - -#: src/tags.cpp:821 -msgid "The value of brightness." -msgstr "" - -#: src/tags.cpp:822 -msgid "The exposure bias." -msgstr "" - -#: src/tags.cpp:823 src/tags.cpp:1638 -msgid "Max Aperture Value" -msgstr "" - -#: src/tags.cpp:823 -msgid "The smallest F number of the lens." -msgstr "" - -#: src/tags.cpp:824 src/tags.cpp:1644 -msgid "The distance to the subject, given in meters." -msgstr "" - -#: src/tags.cpp:825 src/tags.cpp:1647 -msgid "The metering mode." -msgstr "" - -#: src/tags.cpp:826 src/tags.cpp:1650 -msgid "The kind of light source." -msgstr "" - -#: src/tags.cpp:827 -msgid "Indicates the status of flash when the image was shot." -msgstr "" - -#: src/tags.cpp:828 -msgid "The actual focal length of the lens, in mm." -msgstr "" - -#: src/tags.cpp:829 -msgid "Amount of flash energy (BCPS)." -msgstr "" - -#: src/tags.cpp:830 -msgid "SFR of the camera." -msgstr "" - -#: src/tags.cpp:831 -msgid "Noise" -msgstr "" - -#: src/tags.cpp:831 -msgid "Noise measurement values." -msgstr "" - -#: src/tags.cpp:832 -msgid "" -"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " -"direction for main image." -msgstr "" - -#: src/tags.cpp:833 -msgid "" -"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " -"direction for main image." -msgstr "" - -#: src/tags.cpp:834 -msgid "" -"Unit of measurement for FocalPlaneXResolution(37390) and " -"FocalPlaneYResolution(37391)." -msgstr "" - -#: src/tags.cpp:835 -msgid "Number assigned to an image, e.g., in a chained image burst." -msgstr "" - -#: src/tags.cpp:836 -msgid "Security Classification" -msgstr "" - -#: src/tags.cpp:836 -msgid "Security classification assigned to the image." -msgstr "" - -#: src/tags.cpp:837 -msgid "Record of what has been done to the image." -msgstr "" - -#: src/tags.cpp:838 -msgid "" -"Indicates the location and area of the main subject in the overall scene." -msgstr "" - -#: src/tags.cpp:839 -msgid "Encodes the camera exposure index setting when image was captured." -msgstr "" - -#: src/tags.cpp:840 -msgid "TIFF/EP Standard ID" -msgstr "" - -#: src/tags.cpp:841 -msgid "" -"Contains four ASCII characters representing the TIFF/EP standard version of " -"a TIFF/EP file, eg '1', '0', '0', '0'" -msgstr "" - -#: src/tags.cpp:844 -msgid "Type of image sensor." -msgstr "" - -#: src/tags.cpp:845 -msgid "Windows Title" -msgstr "" - -#: src/tags.cpp:846 -msgid "Title tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:848 -msgid "Windows Comment" -msgstr "" - -#: src/tags.cpp:849 -msgid "Comment tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:851 -msgid "Windows Author" -msgstr "" - -#: src/tags.cpp:852 -msgid "Author tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:854 -msgid "Windows Keywords" -msgstr "" - -#: src/tags.cpp:855 -msgid "Keywords tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:857 -msgid "Windows Subject" -msgstr "" - -#: src/tags.cpp:858 -msgid "Subject tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:860 -msgid "Print Image Matching" -msgstr "" - -#: src/tags.cpp:861 -msgid "Print Image Matching, description needed." -msgstr "" - -#: src/tags.cpp:863 -msgid "DNG version" -msgstr "" - -#: src/tags.cpp:864 -msgid "" -"This tag encodes the DNG four-tier version number. For files compliant with " -"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " -"1, 1, 0, 0." -msgstr "" - -#: src/tags.cpp:868 -msgid "DNG backward version" -msgstr "" - -#: src/tags.cpp:869 -msgid "" -"This tag specifies the oldest version of the Digital Negative specification " -"for which a file is compatible. Readers shouldnot attempt to read a file if " -"this tag specifies a version number that is higher than the version number " -"of the specification the reader was based on. In addition to checking the " -"version tags, readers should, for all tags, check the types, counts, and " -"values, to verify it is able to correctly read the file." -msgstr "" - -#: src/tags.cpp:877 -msgid "Unique Camera Model" -msgstr "" - -#: src/tags.cpp:878 -msgid "" -"Defines a unique, non-localized name for the camera model that created the " -"image in the raw file. This name should include the manufacturer's name to " -"avoid conflicts, and should not be localized, even if the camera name itself " -"is localized for different markets (see LocalizedCameraModel). This string " -"may be used by reader software to index into per-model preferences and " -"replacement profiles." -msgstr "" - -#: src/tags.cpp:885 -msgid "Localized Camera Model" -msgstr "" - -#: src/tags.cpp:886 -msgid "" -"Similar to the UniqueCameraModel field, except the name can be localized for " -"different markets to match the localization of the camera name." -msgstr "" - -#: src/tags.cpp:890 -msgid "CFA Plane Color" -msgstr "" - -#: src/tags.cpp:891 -msgid "" -"Provides a mapping between the values in the CFAPattern tag and the plane " -"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." -msgstr "" - -#: src/tags.cpp:895 -msgid "CFA Layout" -msgstr "" - -#: src/tags.cpp:896 -msgid "Describes the spatial layout of the CFA." -msgstr "" - -#: src/tags.cpp:899 -msgid "" -"Describes a lookup table that maps stored values into linear values. This " -"tag is typically used to increase compression ratios by storing the raw data " -"in a non-linear, more visually uniform space with fewer total encoding " -"levels. If SamplesPerPixel is not equal to one, this single table applies to " -"all the samples for each pixel." -msgstr "" - -#: src/tags.cpp:905 -msgid "Black Level Repeat Dim" -msgstr "" - -#: src/tags.cpp:906 -msgid "Specifies repeat pattern size for the BlackLevel tag." -msgstr "" - -#: src/tags.cpp:909 -msgid "" -"Specifies the zero light (a.k.a. thermal black or black current) encoding " -"level, as a repeating pattern. The origin of this pattern is the top-left " -"corner of the ActiveArea rectangle. The values are stored in row-column-" -"sample scan order." -msgstr "" - -#: src/tags.cpp:914 -msgid "Black Level Delta H" -msgstr "" - -#: src/tags.cpp:915 -msgid "" -"If the zero light encoding level is a function of the image column, " -"BlackLevelDeltaH specifies the difference between the zero light encoding " -"level for each column and the baseline zero light encoding level. If " -"SamplesPerPixel is not equal to one, this single table applies to all the " -"samples for each pixel." -msgstr "" - -#: src/tags.cpp:921 -msgid "Black Level Delta V" -msgstr "" - -#: src/tags.cpp:922 -msgid "" -"If the zero light encoding level is a function of the image row, this tag " -"specifies the difference between the zero light encoding level for each row " -"and the baseline zero light encoding level. If SamplesPerPixel is not equal " -"to one, this single table applies to all the samples for each pixel." -msgstr "" - -#: src/tags.cpp:928 -msgid "White Level" -msgstr "" - -#: src/tags.cpp:929 -msgid "" -"This tag specifies the fully saturated encoding level for the raw sample " -"values. Saturation is caused either by the sensor itself becoming highly non-" -"linear in response, or by the camera's analog to digital converter clipping." -msgstr "" - -#: src/tags.cpp:934 -msgid "Default Scale" -msgstr "" - -#: src/tags.cpp:935 -msgid "" -"DefaultScale is required for cameras with non-square pixels. It specifies " -"the default scale factors for each direction to convert the image to square " -"pixels. Typically these factors are selected to approximately preserve total " -"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " -"as the Fujifilm SuperCCD, these two values should usually differ by a factor " -"of 2.0." -msgstr "" - -#: src/tags.cpp:942 -msgid "Default Crop Origin" -msgstr "" - -#: src/tags.cpp:943 -msgid "" -"Raw images often store extra pixels around the edges of the final image. " -"These extra pixels help prevent interpolation artifacts near the edges of " -"the final image. DefaultCropOrigin specifies the origin of the final image " -"area, in raw image coordinates (i.e., before the DefaultScale has been " -"applied), relative to the top-left corner of the ActiveArea rectangle." -msgstr "" - -#: src/tags.cpp:950 -msgid "Default Crop Size" -msgstr "" - -#: src/tags.cpp:951 -msgid "" -"Raw images often store extra pixels around the edges of the final image. " -"These extra pixels help prevent interpolation artifacts near the edges of " -"the final image. DefaultCropSize specifies the size of the final image area, " -"in raw image coordinates (i.e., before the DefaultScale has been applied)." -msgstr "" - -#: src/tags.cpp:957 -msgid "Color Matrix 1" -msgstr "" - -#: src/tags.cpp:958 -msgid "" -"ColorMatrix1 defines a transformation matrix that converts XYZ values to " -"reference camera native color space values, under the first calibration " -"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " -"tag is required for all non-monochrome DNG files." -msgstr "" - -#: src/tags.cpp:964 -msgid "Color Matrix 2" -msgstr "" - -#: src/tags.cpp:965 -msgid "" -"ColorMatrix2 defines a transformation matrix that converts XYZ values to " -"reference camera native color space values, under the second calibration " -"illuminant. The matrix values are stored in row scan order." -msgstr "" - -#: src/tags.cpp:970 -msgid "Camera Calibration 1" -msgstr "" - -#: src/tags.cpp:971 -msgid "" -"CameraClalibration1 defines a calibration matrix that transforms reference " -"camera native space values to individual camera native space values under " -"the first calibration illuminant. The matrix is stored in row scan order. " -"This matrix is stored separately from the matrix specified by the " -"ColorMatrix1 tag to allow raw converters to swap in replacement color " -"matrices based on UniqueCameraModel tag, while still taking advantage of any " -"per-individual camera calibration performed by the camera manufacturer." -msgstr "" - -#: src/tags.cpp:980 -msgid "Camera Calibration 2" -msgstr "" - -#: src/tags.cpp:981 -msgid "" -"CameraCalibration2 defines a calibration matrix that transforms reference " -"camera native space values to individual camera native space values under " -"the second calibration illuminant. The matrix is stored in row scan order. " -"This matrix is stored separately from the matrix specified by the " -"ColorMatrix2 tag to allow raw converters to swap in replacement color " -"matrices based on UniqueCameraModel tag, while still taking advantage of any " -"per-individual camera calibration performed by the camera manufacturer." -msgstr "" - -#: src/tags.cpp:990 -msgid "Reduction Matrix 1" -msgstr "" - -#: src/tags.cpp:991 -msgid "" -"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " -"first stage in converting color camera native space values to XYZ values, " -"under the first calibration illuminant. This tag may only be used if " -"ColorPlanes is greater than 3. The matrix is stored in row scan order." -msgstr "" - -#: src/tags.cpp:997 -msgid "Reduction Matrix 2" -msgstr "" - -#: src/tags.cpp:998 -msgid "" -"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " -"first stage in converting color camera native space values to XYZ values, " -"under the second calibration illuminant. This tag may only be used if " -"ColorPlanes is greater than 3. The matrix is stored in row scan order." -msgstr "" - -#: src/tags.cpp:1004 -msgid "Analog Balance" -msgstr "" - -#: src/tags.cpp:1005 -msgid "" -"Normally the stored raw values are not white balanced, since any digital " -"white balancing will reduce the dynamic range of the final image if the user " -"decides to later adjust the white balance; however, if camera hardware is " -"capable of white balancing the color channels before the signal is " -"digitized, it can improve the dynamic range of the final image. " -"AnalogBalance defines the gain, either analog (recommended) or digital (not " -"recommended) that has been applied the stored raw values." -msgstr "" - -#: src/tags.cpp:1014 -msgid "As Shot Neutral" -msgstr "" - -#: src/tags.cpp:1015 -msgid "" -"Specifies the selected white balance at time of capture, encoded as the " -"coordinates of a perfectly neutral color in linear reference space values. " -"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." -msgstr "" - -#: src/tags.cpp:1020 -msgid "As Shot White XY" -msgstr "" - -#: src/tags.cpp:1021 -msgid "" -"Specifies the selected white balance at time of capture, encoded as x-y " -"chromaticity coordinates. The inclusion of this tag precludes the inclusion " -"of the AsShotNeutral tag." -msgstr "" - -#: src/tags.cpp:1025 -msgid "Baseline Exposure" -msgstr "" - -#: src/tags.cpp:1026 -msgid "" -"Camera models vary in the trade-off they make between highlight headroom and " -"shadow noise. Some leave a significant amount of highlight headroom during a " -"normal exposure. This allows significant negative exposure compensation to " -"be applied during raw conversion, but also means normal exposures will " -"contain more shadow noise. Other models leave less headroom during normal " -"exposures. This allows for less negative exposure compensation, but results " -"in lower shadow noise for normal exposures. Because of these differences, a " -"raw converter needs to vary the zero point of its exposure compensation " -"control from model to model. BaselineExposure specifies by how much (in EV " -"units) to move the zero point. Positive values result in brighter default " -"results, while negative values result in darker default results." -msgstr "" - -#: src/tags.cpp:1040 -msgid "Baseline Noise" -msgstr "" - -#: src/tags.cpp:1041 -msgid "" -"Specifies the relative noise level of the camera model at a baseline ISO " -"value of 100, compared to a reference camera model. Since noise levels tend " -"to vary approximately with the square root of the ISO value, a raw converter " -"can use this value, combined with the current ISO, to estimate the relative " -"noise level of the current image." -msgstr "" - -#: src/tags.cpp:1047 -msgid "Baseline Sharpness" -msgstr "" - -#: src/tags.cpp:1048 -msgid "" -"Specifies the relative amount of sharpening required for this camera model, " -"compared to a reference camera model. Camera models vary in the strengths of " -"their anti-aliasing filters. Cameras with weak or no filters require less " -"sharpening than cameras with strong anti-aliasing filters." -msgstr "" - -#: src/tags.cpp:1054 -msgid "Bayer Green Split" -msgstr "" - -#: src/tags.cpp:1055 -msgid "" -"Only applies to CFA images using a Bayer pattern filter array. This tag " -"specifies, in arbitrary units, how closely the values of the green pixels in " -"the blue/green rows track the values of the green pixels in the red/green " -"rows. A value of zero means the two kinds of green pixels track closely, " -"while a non-zero value means they sometimes diverge. The useful range for " -"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." -msgstr "" - -#: src/tags.cpp:1063 -msgid "Linear Response Limit" -msgstr "" - -#: src/tags.cpp:1064 -msgid "" -"Some sensors have an unpredictable non-linearity in their response as they " -"near the upper limit of their encoding range. This non-linearity results in " -"color shifts in the highlight areas of the resulting image unless the raw " -"converter compensates for this effect. LinearResponseLimit specifies the " -"fraction of the encoding range above which the response may become " -"significantly non-linear." -msgstr "" - -#: src/tags.cpp:1072 -msgid "" -"CameraSerialNumber contains the serial number of the camera or camera body " -"that captured the image." -msgstr "" - -#: src/tags.cpp:1075 -msgid "Lens Info" -msgstr "" - -#: src/tags.cpp:1076 -msgid "" -"Contains information about the lens that captured the image. If the minimum " -"f-stops are unknown, they should be encoded as 0/0." -msgstr "" - -#: src/tags.cpp:1079 -msgid "Chroma Blur Radius" -msgstr "" - -#: src/tags.cpp:1080 -msgid "" -"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " -"blur should be applied to the image. If this tag is omitted, the reader will " -"use its default amount of chroma blurring. Normally this tag is only " -"included for non-CFA images, since the amount of chroma blur required for " -"mosaic images is highly dependent on the de-mosaic algorithm, in which case " -"the DNG reader's default value is likely optimized for its particular de-" -"mosaic algorithm." -msgstr "" - -#: src/tags.cpp:1088 -msgid "Anti Alias Strength" -msgstr "" - -#: src/tags.cpp:1089 -msgid "" -"Provides a hint to the DNG reader about how strong the camera's anti-alias " -"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " -"prone to aliasing artifacts with some subjects), while a value of 1.0 means " -"a strong anti-alias filter (i.e., the camera almost never has aliasing " -"artifacts)." -msgstr "" - -#: src/tags.cpp:1095 -msgid "Shadow Scale" -msgstr "" - -#: src/tags.cpp:1096 -msgid "" -"This tag is used by Adobe Camera Raw to control the sensitivity of its " -"'Shadows' slider." -msgstr "" - -#: src/tags.cpp:1099 -msgid "DNG Private Data" -msgstr "" - -#: src/tags.cpp:1100 -msgid "" -"Provides a way for camera manufacturers to store private data in the DNG " -"file for use by their own raw converters, and to have that data preserved by " -"programs that edit DNG files." -msgstr "" - -#: src/tags.cpp:1104 -msgid "MakerNote Safety" -msgstr "" - -#: src/tags.cpp:1105 -msgid "" -"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " -"safe to preserve along with the rest of the EXIF data. File browsers and " -"other image management software processing an image with a preserved " -"MakerNote should be aware that any thumbnail image embedded in the MakerNote " -"may be stale, and may not reflect the current state of the full size image." -msgstr "" - -#: src/tags.cpp:1112 -msgid "Calibration Illuminant 1" -msgstr "" - -#: src/tags.cpp:1113 -msgid "" -"The illuminant used for the first set of color calibration tags " -"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " -"this tag are the same as the legal values for the LightSource EXIF tag." -msgstr "" - -#: src/tags.cpp:1118 -msgid "Calibration Illuminant 2" -msgstr "" - -#: src/tags.cpp:1119 -msgid "" -"The illuminant used for an optional second set of color calibration tags " -"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " -"this tag are the same as the legal values for the CalibrationIlluminant1 " -"tag; however, if both are included, neither is allowed to have a value of 0 " -"(unknown)." -msgstr "" - -#: src/tags.cpp:1125 -msgid "Best Quality Scale" -msgstr "" - -#: src/tags.cpp:1126 -msgid "" -"For some cameras, the best possible image quality is not achieved by " -"preserving the total pixel count during conversion. For example, Fujifilm " -"SuperCCD images have maximum detail when their total pixel count is doubled. " -"This tag specifies the amount by which the values of the DefaultScale tag " -"need to be multiplied to achieve the best quality image size." -msgstr "" - -#: src/tags.cpp:1133 -msgid "Raw Data Unique ID" -msgstr "" - -#: src/tags.cpp:1134 -msgid "" -"This tag contains a 16-byte unique identifier for the raw image data in the " -"DNG file. DNG readers can use this tag to recognize a particular raw image, " -"even if the file's name or the metadata contained in the file has been " -"changed. If a DNG writer creates such an identifier, it should do so using " -"an algorithm that will ensure that it is very unlikely two different images " -"will end up having the same identifier." -msgstr "" - -#: src/tags.cpp:1142 -msgid "Original Raw File Name" -msgstr "" - -#: src/tags.cpp:1143 -msgid "" -"If the DNG file was converted from a non-DNG raw file, then this tag " -"contains the file name of that original raw file." -msgstr "" - -#: src/tags.cpp:1146 -msgid "Original Raw File Data" -msgstr "" - -#: src/tags.cpp:1147 -msgid "" -"If the DNG file was converted from a non-DNG raw file, then this tag " -"contains the compressed contents of that original raw file. The contents of " -"this tag always use the big-endian byte order. The tag contains a sequence " -"of data blocks. Future versions of the DNG specification may define " -"additional data blocks, so DNG readers should ignore extra bytes when " -"parsing this tag. DNG readers should also detect the case where data blocks " -"are missing from the end of the sequence, and should assume a default value " -"for all the missing blocks. There are no padding or alignment bytes between " -"data blocks." -msgstr "" - -#: src/tags.cpp:1157 -msgid "Active Area" -msgstr "" - -#: src/tags.cpp:1158 -msgid "" -"This rectangle defines the active (non-masked) pixels of the sensor. The " -"order of the rectangle coordinates is: top, left, bottom, right." -msgstr "" - -#: src/tags.cpp:1161 -msgid "Masked Areas" -msgstr "" - -#: src/tags.cpp:1162 -msgid "" -"This tag contains a list of non-overlapping rectangle coordinates of fully " -"masked pixels, which can be optionally used by DNG readers to measure the " -"black encoding level. The order of each rectangle's coordinates is: top, " -"left, bottom, right. If the raw image data has already had its black " -"encoding level subtracted, then this tag should not be used, since the " -"masked pixels are no longer useful." -msgstr "" - -#: src/tags.cpp:1169 -msgid "As-Shot ICC Profile" -msgstr "" - -#: src/tags.cpp:1170 -msgid "" -"This tag contains an ICC profile that, in conjunction with the " -"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " -"specify a default color rendering from camera color space coordinates " -"(linear reference values) into the ICC profile connection space. The ICC " -"profile connection space is an output referred colorimetric space, whereas " -"the other color calibration tags in DNG specify a conversion into a scene " -"referred colorimetric space. This means that the rendering in this profile " -"should include any desired tone and gamut mapping needed to convert between " -"scene referred values and output referred values." -msgstr "" - -#: src/tags.cpp:1181 -msgid "As-Shot Pre-Profile Matrix" -msgstr "" - -#: src/tags.cpp:1182 -msgid "" -"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " -"a matrix that should be applied to the camera color space coordinates before " -"processing the values through the ICC profile specified in the " -"AsShotICCProfile tag. The matrix is stored in the row scan order. If " -"ColorPlanes is greater than three, then this matrix can (but is not required " -"to) reduce the dimensionality of the color data down to three components, in " -"which case the AsShotICCProfile should have three rather than ColorPlanes " -"input components." -msgstr "" - -#: src/tags.cpp:1191 -msgid "Current ICC Profile" -msgstr "" - -#: src/tags.cpp:1192 -msgid "" -"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " -"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " -"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " -"they are for use by raw file editors rather than camera manufacturers." -msgstr "" - -#: src/tags.cpp:1198 -msgid "Current Pre-Profile Matrix" -msgstr "" - -#: src/tags.cpp:1199 -msgid "" -"This tag is used in conjunction with the CurrentICCProfile tag. The " -"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " -"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " -"they are for use by raw file editors rather than camera manufacturers." -msgstr "" - -#: src/tags.cpp:1205 -msgid "Colorimetric Reference" -msgstr "" - -#: src/tags.cpp:1206 -msgid "" -"The DNG color model documents a transform between camera colors and CIE XYZ " -"values. This tag describes the colorimetric reference for the CIE XYZ " -"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" -"referred, using the ICC profile perceptual dynamic range. This tag allows " -"output-referred data to be stored in DNG files and still processed correctly " -"by DNG readers." -msgstr "" - -#: src/tags.cpp:1213 -msgid "Camera Calibration Signature" -msgstr "" - -#: src/tags.cpp:1214 -msgid "" -"A UTF-8 encoded string associated with the CameraCalibration1 and " -"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " -"should only be used in the DNG color transform if the string stored in the " -"CameraCalibrationSignature tag exactly matches the string stored in the " -"ProfileCalibrationSignature tag for the selected camera profile." -msgstr "" - -#: src/tags.cpp:1220 -msgid "Profile Calibration Signature" -msgstr "" - -#: src/tags.cpp:1221 -msgid "" -"A UTF-8 encoded string associated with the camera profile tags. The " -"CameraCalibration1 and CameraCalibration2 tags should only be used in the " -"DNG color transfer if the string stored in the CameraCalibrationSignature " -"tag exactly matches the string stored in the ProfileCalibrationSignature tag " -"for the selected camera profile." -msgstr "" - -#: src/tags.cpp:1227 -msgid "As Shot Profile Name" -msgstr "" - -#: src/tags.cpp:1228 -msgid "" -"A UTF-8 encoded string containing the name of the \"as shot\" camera " -"profile, if any." -msgstr "" - -#: src/tags.cpp:1231 -msgid "Noise Reduction Applied" -msgstr "" - -#: src/tags.cpp:1232 -msgid "" -"This tag indicates how much noise reduction has been applied to the raw data " -"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " -"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " -"reduction has been applied, i.e. that the DNG reader should not apply " -"additional noise reduction by default. A value of 0/0 indicates that this " -"parameter is unknown." -msgstr "" - -#: src/tags.cpp:1239 -msgid "Profile Name" -msgstr "" - -#: src/tags.cpp:1240 -msgid "" -"A UTF-8 encoded string containing the name of the camera profile. This tag " -"is optional if there is only a single camera profile stored in the file but " -"is required for all camera profiles if there is more than one camera profile " -"stored in the file." -msgstr "" - -#: src/tags.cpp:1245 -msgid "Profile Hue Sat Map Dims" -msgstr "" - -#: src/tags.cpp:1246 -msgid "" -"This tag specifies the number of input samples in each dimension of the hue/" -"saturation/value mapping tables. The data for these tables are stored in " -"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " -"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " -"to the mapping table." -msgstr "" - -#: src/tags.cpp:1252 -msgid "Profile Hue Sat Map Data 1" -msgstr "" - -#: src/tags.cpp:1253 -msgid "" -"This tag contains the data for the first hue/saturation/value mapping table. " -"Each entry of the table contains three 32-bit IEEE floating-point values. " -"The first entry is hue shift in degrees; the second entry is saturation " -"scale factor; and the third entry is a value scale factor. The table entries " -"are stored in the tag in nested loop order, with the value divisions in the " -"outer loop, the hue divisions in the middle loop, and the saturation " -"divisions in the inner loop. All zero input saturation entries are required " -"to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1262 -msgid "Profile Hue Sat Map Data 2" -msgstr "" - -#: src/tags.cpp:1263 -msgid "" -"This tag contains the data for the second hue/saturation/value mapping " -"table. Each entry of the table contains three 32-bit IEEE floating-point " -"values. The first entry is hue shift in degrees; the second entry is a " -"saturation scale factor; and the third entry is a value scale factor. The " -"table entries are stored in the tag in nested loop order, with the value " -"divisions in the outer loop, the hue divisions in the middle loop, and the " -"saturation divisions in the inner loop. All zero input saturation entries " -"are required to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1272 -msgid "Profile Tone Curve" -msgstr "" - -#: src/tags.cpp:1273 -msgid "" -"This tag contains a default tone curve that can be applied while processing " -"the image as a starting point for user adjustments. The curve is specified " -"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " -"sample has an input value in the range of 0.0 to 1.0, and an output value in " -"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " -"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " -"cubic spline." -msgstr "" - -#: src/tags.cpp:1281 -msgid "Profile Embed Policy" -msgstr "" - -#: src/tags.cpp:1282 -msgid "" -"This tag contains information about the usage rules for the associated " -"camera profile." -msgstr "" - -#: src/tags.cpp:1285 -msgid "Profile Copyright" -msgstr "" - -#: src/tags.cpp:1286 -msgid "" -"A UTF-8 encoded string containing the copyright information for the camera " -"profile. This string always should be preserved along with the other camera " -"profile tags." -msgstr "" - -#: src/tags.cpp:1290 -msgid "Forward Matrix 1" -msgstr "" - -#: src/tags.cpp:1291 src/tags.cpp:1295 -msgid "" -"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " -"colors." -msgstr "" - -#: src/tags.cpp:1294 -msgid "Forward Matrix 2" -msgstr "" - -#: src/tags.cpp:1298 -msgid "Preview Application Name" -msgstr "" - -#: src/tags.cpp:1299 -msgid "" -"A UTF-8 encoded string containing the name of the application that created " -"the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1302 -msgid "Preview Application Version" -msgstr "" - -#: src/tags.cpp:1303 -msgid "" -"A UTF-8 encoded string containing the version number of the application that " -"created the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1306 -msgid "Preview Settings Name" -msgstr "" - -#: src/tags.cpp:1307 -msgid "" -"A UTF-8 encoded string containing the name of the conversion settings (for " -"example, snapshot name) used for the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1310 -msgid "Preview Settings Digest" -msgstr "" - -#: src/tags.cpp:1311 -msgid "" -"A unique ID of the conversion settings (for example, MD5 digest) used to " -"render the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1314 -msgid "Preview Color Space" -msgstr "" - -#: src/tags.cpp:1315 -msgid "" -"This tag specifies the color space in which the rendered preview in this IFD " -"is stored. The default value for this tag is sRGB for color previews and " -"Gray Gamma 2.2 for monochrome previews." -msgstr "" - -#: src/tags.cpp:1319 -msgid "Preview Date Time" -msgstr "" - -#: src/tags.cpp:1320 -msgid "" -"This tag is an ASCII string containing the name of the date/time at which " -"the preview stored in the IFD was rendered. The date/time is encoded using " -"ISO 8601 format." -msgstr "" - -#: src/tags.cpp:1324 -msgid "Raw Image Digest" -msgstr "" - -#: src/tags.cpp:1325 -msgid "" -"This tag is an MD5 digest of the raw image data. All pixels in the image are " -"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " -"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " -"data for each pixel is processed in little-endian byte order." -msgstr "" - -#: src/tags.cpp:1330 -msgid "Original Raw File Digest" -msgstr "" - -#: src/tags.cpp:1331 -msgid "" -"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." -msgstr "" - -#: src/tags.cpp:1334 -msgid "Sub Tile Block Size" -msgstr "" - -#: src/tags.cpp:1335 -msgid "" -"Normally, the pixels within a tile are stored in simple row-scan order. This " -"tag specifies that the pixels within a tile should be grouped first into " -"rectangular blocks of the specified size. These blocks are stored in row-" -"scan order. Within each block, the pixels are stored in row-scan order. The " -"use of a non-default value for this tag requires setting the " -"DNGBackwardVersion tag to at least 1.2.0.0." -msgstr "" - -#: src/tags.cpp:1342 -msgid "Row Interleave Factor" -msgstr "" - -#: src/tags.cpp:1343 -msgid "" -"This tag specifies that rows of the image are stored in interleaved order. " -"The value of the tag specifies the number of interleaved fields. The use of " -"a non-default value for this tag requires setting the DNGBackwardVersion tag " -"to at least 1.2.0.0." -msgstr "" - -#: src/tags.cpp:1348 -msgid "Profile Look Table Dims" -msgstr "" - -#: src/tags.cpp:1349 -msgid "" -"This tag specifies the number of input samples in each dimension of a " -"default \"look\" table. The data for this table is stored in the " -"ProfileLookTableData tag." -msgstr "" - -#: src/tags.cpp:1353 -msgid "Profile Look Table Data" -msgstr "" - -#: src/tags.cpp:1354 -msgid "" -"This tag contains a default \"look\" table that can be applied while " -"processing the image as a starting point for user adjustment. This table " -"uses the same format as the tables stored in the ProfileHueSatMapData1 and " -"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " -"it should be applied later in the processing pipe, after any exposure " -"compensation and/or fill light stages, but before any tone curve stage. Each " -"entry of the table contains three 32-bit IEEE floating-point values. The " -"first entry is hue shift in degrees, the second entry is a saturation scale " -"factor, and the third entry is a value scale factor. The table entries are " -"stored in the tag in nested loop order, with the value divisions in the " -"outer loop, the hue divisions in the middle loop, and the saturation " -"divisions in the inner loop. All zero input saturation entries are required " -"to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1368 -msgid "Opcode List 1" -msgstr "" - -#: src/tags.cpp:1369 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, as " -"read directly from the file." -msgstr "" - -#: src/tags.cpp:1372 -msgid "Opcode List 2" -msgstr "" - -#: src/tags.cpp:1373 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, just " -"after it has been mapped to linear reference values." -msgstr "" - -#: src/tags.cpp:1376 -msgid "Opcode List 3" -msgstr "" - -#: src/tags.cpp:1377 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, just " -"after it has been demosaiced." -msgstr "" - -#: src/tags.cpp:1380 -msgid "Noise Profile" -msgstr "" - -#: src/tags.cpp:1381 -msgid "" -"NoiseProfile describes the amount of noise in a raw image. Specifically, " -"this tag models the amount of signal-dependent photon (shot) noise and " -"signal-independent sensor readout noise, two common sources of noise in raw " -"images. The model assumes that the noise is white and spatially independent, " -"ignoring fixed pattern effects and other sources of noise (e.g., pixel " -"response non-uniformity, spatially-dependent thermal effects, etc.)." -msgstr "" - -#: src/tags.cpp:1389 src/tags.cpp:1390 -msgid "Unknown IFD tag" -msgstr "" - -#: src/tags.cpp:1401 src/tags.cpp:1459 -msgid "Not defined" -msgstr "" - -#: src/tags.cpp:1406 -msgid "Creative program" -msgstr "" - -#: src/tags.cpp:1407 -msgid "Action program" -msgstr "" - -#: src/tags.cpp:1408 -msgid "Portrait mode" -msgstr "" - -#: src/tags.cpp:1409 -msgid "Landscape mode" -msgstr "" - -#: src/tags.cpp:1418 -msgid "Multi-spot" -msgstr "" - -#: src/tags.cpp:1430 -msgid "Tungsten (incandescent light)" -msgstr "" - -#: src/tags.cpp:1432 -msgid "Fine weather" -msgstr "" - -#: src/tags.cpp:1433 -msgid "Cloudy weather" -msgstr "" - -#: src/tags.cpp:1435 -msgid "Daylight fluorescent (D 5700 - 7100K)" -msgstr "" - -#: src/tags.cpp:1436 -msgid "Day white fluorescent (N 4600 - 5400K)" -msgstr "" - -#: src/tags.cpp:1437 -msgid "Cool white fluorescent (W 3900 - 4500K)" -msgstr "" - -#: src/tags.cpp:1438 -msgid "White fluorescent (WW 3200 - 3700K)" -msgstr "" - -#: src/tags.cpp:1439 -msgid "Standard light A" -msgstr "" - -#: src/tags.cpp:1440 -msgid "Standard light B" -msgstr "" - -#: src/tags.cpp:1441 -msgid "Standard light C" -msgstr "" - -#: src/tags.cpp:1442 -msgid "D55" -msgstr "" - -#: src/tags.cpp:1443 -msgid "D65" -msgstr "" - -#: src/tags.cpp:1444 -msgid "D75" -msgstr "" - -#: src/tags.cpp:1445 -msgid "D50" -msgstr "" - -#: src/tags.cpp:1446 -msgid "ISO studio tungsten" -msgstr "" - -#: src/tags.cpp:1447 -msgid "Other light source" -msgstr "" - -#: src/tags.cpp:1454 -msgid "Uncalibrated" -msgstr "" - -#: src/tags.cpp:1460 -msgid "One-chip color area" -msgstr "" - -#: src/tags.cpp:1461 -msgid "Two-chip color area" -msgstr "" - -#: src/tags.cpp:1462 -msgid "Three-chip color area" -msgstr "" - -#: src/tags.cpp:1463 -msgid "Color sequential area" -msgstr "" - -#: src/tags.cpp:1464 -msgid "Trilinear sensor" -msgstr "" - -#: src/tags.cpp:1465 -msgid "Color sequential linear" -msgstr "" - -#: src/tags.cpp:1470 -msgid "Film scanner" -msgstr "" - -#: src/tags.cpp:1471 -msgid "Reflexion print scanner" -msgstr "" - -#: src/tags.cpp:1472 -msgid "Digital still camera" -msgstr "" - -#: src/tags.cpp:1477 -msgid "Directly photographed" -msgstr "" - -#: src/tags.cpp:1482 -msgid "Normal process" -msgstr "" - -#: src/tags.cpp:1483 -msgid "Custom process" -msgstr "" - -#: src/tags.cpp:1511 -msgid "Low gain up" -msgstr "" - -#: src/tags.cpp:1512 -msgid "High gain up" -msgstr "" - -#: src/tags.cpp:1513 -msgid "Low gain down" -msgstr "" - -#: src/tags.cpp:1514 -msgid "High gain down" -msgstr "" - -#: src/tags.cpp:1535 -msgid "Close view" -msgstr "" - -#: src/tags.cpp:1536 src/tags.cpp:1537 -msgid "Distant view" -msgstr "" - -#: src/tags.cpp:1543 -msgid "Exposure time, given in seconds (sec)." -msgstr "" - -#: src/tags.cpp:1553 -msgid "" -"Indicates the spectral sensitivity of each channel of the camera used. The " -"tag value is an ASCII string compatible with the standard developed by the " -"ASTM Technical Committee." -msgstr "" - -#: src/tags.cpp:1561 -msgid "Opto-Electoric Conversion Function" -msgstr "" - -#: src/tags.cpp:1562 -msgid "" -"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " -"14524. is the relationship between the camera optical input and the " -"image values." -msgstr "" - -#: src/tags.cpp:1566 -msgid "Sensitivity Type" -msgstr "" - -#: src/tags.cpp:1567 -msgid "" -"The SensitivityType tag indicates PhotographicSensitivity tag. which one of " -"the parameters of ISO12232 is the Although it is an optional tag, it should " -"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " -"or 7 may be used in case that the values of plural parameters are the same." -msgstr "" - -#: src/tags.cpp:1573 -msgid "Standard Output Sensitivity" -msgstr "" - -#: src/tags.cpp:1574 -msgid "" -"This tag indicates the standard output sensitivity value of a camera or " -"input device defined in ISO 12232. When recording this tag, the " -"PhotographicSensitivity and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1578 -msgid "Recommended Exposure Index" -msgstr "" - -#: src/tags.cpp:1579 -msgid "" -"This tag indicates the recommended exposure index value of a camera or input " -"device defined in ISO 12232. When recording this tag, the " -"PhotographicSensitivity and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1584 -msgid "" -"This tag indicates the ISO speed value of a camera or input device that is " -"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " -"and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1588 -msgid "ISO Speed Latitude yyy" -msgstr "" - -#: src/tags.cpp:1589 -msgid "" -"This tag indicates the ISO speed latitude yyy value of a camera or input " -"device that is defined in ISO 12232. However, this tag shall not be recorded " -"without ISOSpeed and ISOSpeedLatitudezzz." -msgstr "" - -#: src/tags.cpp:1593 -msgid "ISO Speed Latitude zzz" -msgstr "" - -#: src/tags.cpp:1594 -msgid "" -"This tag indicates the ISO speed latitude zzz value of a camera or input " -"device that is defined in ISO 12232. However, this tag shall not be recorded " -"without ISOSpeed and ISOSpeedLatitudeyyy." -msgstr "" - -#: src/tags.cpp:1599 -msgid "" -"The version of this standard supported. Nonexistence of this field is taken " -"to mean nonconformance to the standard." -msgstr "" - -#: src/tags.cpp:1602 -msgid "Date and Time (original)" -msgstr "" - -#: src/tags.cpp:1603 -msgid "" -"The date and time when the original image data was generated. For a digital " -"still camera the date and time the picture was taken are recorded." -msgstr "" - -#: src/tags.cpp:1606 -msgid "Date and Time (digitized)" -msgstr "" - -#: src/tags.cpp:1607 -msgid "The date and time when the image was stored as digital data." -msgstr "" - -#: src/tags.cpp:1610 -msgid "" -"Information specific to compressed data. The channels of each component are " -"arranged in order from the 1st component to the 4th. For uncompressed data " -"the data arrangement is given in the tag. " -"However, since can only express the order of Y, " -"Cb and Cr, this tag is provided for cases when compressed data uses " -"components other than Y, Cb, and Cr and to enable support of other sequences." -msgstr "" - -#: src/tags.cpp:1619 -msgid "Compressed Bits per Pixel" -msgstr "" - -#: src/tags.cpp:1620 -msgid "" -"Information specific to compressed data. The compression mode used for a " -"compressed image is indicated in unit bits per pixel." -msgstr "" - -#: src/tags.cpp:1624 -msgid "" -"Shutter speed. The unit is the APEX (Additive System of Photographic " -"Exposure) setting." -msgstr "" - -#: src/tags.cpp:1628 -msgid "The lens aperture. The unit is the APEX value." -msgstr "" - -#: src/tags.cpp:1631 -msgid "" -"The value of brightness. The unit is the APEX value. Ordinarily it is given " -"in the range of -99.99 to 99.99." -msgstr "" - -#: src/tags.cpp:1634 -msgid "Exposure Bias" -msgstr "" - -#: src/tags.cpp:1635 -msgid "" -"The exposure bias. The units is the APEX value. Ordinarily it is given in " -"the range of -99.99 to 99.99." -msgstr "" - -#: src/tags.cpp:1639 -msgid "" -"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " -"is given in the range of 00.00 to 99.99, but it is not limited to this range." -msgstr "" - -#: src/tags.cpp:1653 -msgid "" -"This tag is recorded when an image is taken using a strobe light (flash)." -msgstr "" - -#: src/tags.cpp:1656 -msgid "" -"The actual focal length of the lens, in mm. Conversion is not made to the " -"focal length of a 35 mm film camera." -msgstr "" - -#: src/tags.cpp:1660 -msgid "" -"This tag indicates the location and area of the main subject in the overall " -"scene." -msgstr "" - -#: src/tags.cpp:1663 -msgid "Maker Note" -msgstr "" - -#: src/tags.cpp:1664 -msgid "" -"A tag for manufacturers of Exif writers to record any desired information. " -"The contents are up to the manufacturer." -msgstr "" - -#: src/tags.cpp:1668 -msgid "" -"A tag for Exif users to write keywords or comments on the image besides " -"those in , and without the character code limitations of " -"the tag." -msgstr "" - -#: src/tags.cpp:1672 -msgid "Sub-seconds Time" -msgstr "" - -#: src/tags.cpp:1673 -msgid "A tag used to record fractions of seconds for the tag." -msgstr "" - -#: src/tags.cpp:1675 -msgid "Sub-seconds Time Original" -msgstr "" - -#: src/tags.cpp:1676 -msgid "" -"A tag used to record fractions of seconds for the tag." -msgstr "" - -#: src/tags.cpp:1678 -msgid "Sub-seconds Time Digitized" -msgstr "" - -#: src/tags.cpp:1679 -msgid "" -"A tag used to record fractions of seconds for the tag." -msgstr "" - -#: src/tags.cpp:1681 -msgid "FlashPix Version" -msgstr "" - -#: src/tags.cpp:1682 -msgid "The FlashPix format version supported by a FPXR file." -msgstr "" - -#: src/tags.cpp:1685 -msgid "" -"The color space information tag is always recorded as the color space " -"specifier. Normally sRGB is used to define the color space based on the PC " -"monitor conditions and environment. If a color space other than sRGB is " -"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " -"treated as sRGB when it is converted to FlashPix." -msgstr "" - -#: src/tags.cpp:1694 -msgid "" -"Information specific to compressed data. When a compressed file is recorded, " -"the valid width of the meaningful image must be recorded in this tag, " -"whether or not there is padding data or a restart marker. This tag should " -"not exist in an uncompressed file." -msgstr "" - -#: src/tags.cpp:1701 -msgid "" -"Information specific to compressed data. When a compressed file is recorded, " -"the valid height of the meaningful image must be recorded in this tag, " -"whether or not there is padding data or a restart marker. This tag should " -"not exist in an uncompressed file. Since data padding is unnecessary in the " -"vertical direction, the number of lines recorded in this valid image height " -"tag will in fact be the same as that recorded in the SOF." -msgstr "" - -#: src/tags.cpp:1710 -msgid "" -"This tag is used to record the name of an audio file related to the image " -"data. The only relational information recorded here is the Exif audio file " -"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " -"characters). The path is not recorded." -msgstr "" - -#: src/tags.cpp:1716 -msgid "Interoperability IFD Pointer" -msgstr "" - -#: src/tags.cpp:1717 -msgid "" -"Interoperability IFD is composed of tags which stores the information to " -"ensure the Interoperability and pointed by the following tag located in Exif " -"IFD. The Interoperability structure of Interoperability IFD is the same as " -"TIFF defined IFD structure but does not contain the image data " -"characteristically compared with normal TIFF IFD." -msgstr "" - -#: src/tags.cpp:1725 -msgid "" -"Indicates the strobe energy at the time the image is captured, as measured " -"in Beam Candle Power Seconds (BCPS)." -msgstr "" - -#: src/tags.cpp:1729 -msgid "" -"This tag records the camera or input device spatial frequency table and SFR " -"values in the direction of image width, image height, and diagonal " -"direction, as specified in ISO 12233." -msgstr "" - -#: src/tags.cpp:1733 -msgid "Focal Plane X-Resolution" -msgstr "" - -#: src/tags.cpp:1734 -msgid "" -"Indicates the number of pixels in the image width (X) direction per " -" on the camera focal plane." -msgstr "" - -#: src/tags.cpp:1737 -msgid "Focal Plane Y-Resolution" -msgstr "" - -#: src/tags.cpp:1738 -msgid "" -"Indicates the number of pixels in the image height (V) direction per " -" on the camera focal plane." -msgstr "" - -#: src/tags.cpp:1742 -msgid "" -"Indicates the unit for measuring and " -". This value is the same as the ." -msgstr "" - -#: src/tags.cpp:1746 -msgid "" -"Indicates the location of the main subject in the scene. The value of this " -"tag represents the pixel at the center of the main subject relative to the " -"left edge, prior to rotation processing as per the tag. The first " -"value indicates the X column number and second indicates the Y row number." -msgstr "" - -#: src/tags.cpp:1752 -msgid "Exposure index" -msgstr "" - -#: src/tags.cpp:1753 -msgid "" -"Indicates the exposure index selected on the camera or input device at the " -"time the image is captured." -msgstr "" - -#: src/tags.cpp:1757 -msgid "Indicates the image sensor type on the camera or input device." -msgstr "" - -#: src/tags.cpp:1760 -msgid "" -"Indicates the image source. If a DSC recorded the image, this tag value of " -"this tag always be set to 3, indicating that the image was recorded on a DSC." -msgstr "" - -#: src/tags.cpp:1765 -msgid "" -"Indicates the type of scene. If a DSC recorded the image, this tag value " -"must always be set to 1, indicating that the image was directly photographed." -msgstr "" - -#: src/tags.cpp:1769 -msgid "Color Filter Array Pattern" -msgstr "" - -#: src/tags.cpp:1770 -msgid "" -"Indicates the color filter array (CFA) geometric pattern of the image sensor " -"when a one-chip color area sensor is used. It does not apply to all sensing " -"methods." -msgstr "" - -#: src/tags.cpp:1775 -msgid "" -"This tag indicates the use of special processing on image data, such as " -"rendering geared to output. When special processing is performed, the reader " -"is expected to disable or minimize any further processing." -msgstr "" - -#: src/tags.cpp:1781 -msgid "" -"This tag indicates the exposure mode set when the image was shot. In auto-" -"bracketing mode, the camera shoots a series of frames of the same scene at " -"different exposure settings." -msgstr "" - -#: src/tags.cpp:1786 -msgid "This tag indicates the white balance mode set when the image was shot." -msgstr "" - -#: src/tags.cpp:1789 -msgid "" -"This tag indicates the digital zoom ratio when the image was shot. If the " -"numerator of the recorded value is 0, this indicates that digital zoom was " -"not used." -msgstr "" - -#: src/tags.cpp:1794 -msgid "" -"This tag indicates the equivalent focal length assuming a 35mm film camera, " -"in mm. A value of 0 means the focal length is unknown. Note that this tag " -"differs from the tag." -msgstr "" - -#: src/tags.cpp:1800 -msgid "" -"This tag indicates the type of scene that was shot. It can also be used to " -"record the mode in which the image was shot. Note that this differs from the " -" tag." -msgstr "" - -#: src/tags.cpp:1805 -msgid "This tag indicates the degree of overall image gain adjustment." -msgstr "" - -#: src/tags.cpp:1808 -msgid "" -"This tag indicates the direction of contrast processing applied by the " -"camera when the image was shot." -msgstr "" - -#: src/tags.cpp:1812 -msgid "" -"This tag indicates the direction of saturation processing applied by the " -"camera when the image was shot." -msgstr "" - -#: src/tags.cpp:1816 -msgid "" -"This tag indicates the direction of sharpness processing applied by the " -"camera when the image was shot." -msgstr "" - -#: src/tags.cpp:1820 -msgid "" -"This tag indicates information on the picture-taking conditions of a " -"particular camera model. The tag is used only to indicate the picture-taking " -"conditions in the reader." -msgstr "" - -#: src/tags.cpp:1825 -msgid "This tag indicates the distance to the subject." -msgstr "" - -#: src/tags.cpp:1828 -msgid "" -"This tag indicates an identifier assigned uniquely to each image. It is " -"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " -"fixed length." -msgstr "" - -#: src/tags.cpp:1832 -msgid "Camera Owner Name" -msgstr "" - -#: src/tags.cpp:1833 -msgid "" -"This tag records the owner of a camera used in photography as an ASCII " -"string." -msgstr "" - -#: src/tags.cpp:1836 -msgid "Body Serial Number" -msgstr "" - -#: src/tags.cpp:1837 -msgid "" -"This tag records the serial number of the body of the camera that was used " -"in photography as an ASCII string." -msgstr "" - -#: src/tags.cpp:1840 -msgid "Lens Specification" -msgstr "" - -#: src/tags.cpp:1841 -msgid "" -"This tag notes minimum focal length, maximum focal length, minimum F number " -"in the minimum focal length, and minimum F number in the maximum focal " -"length, which are specification information for the lens that was used in " -"photography. When the minimum F number is unknown, the notation is 0/0" -msgstr "" - -#: src/tags.cpp:1847 -msgid "Lens Make" -msgstr "" - -#: src/tags.cpp:1848 -msgid "This tag records the lens manufactor as an ASCII string." -msgstr "" - -#: src/tags.cpp:1851 -msgid "" -"This tag records the lens's model name and model number as an ASCII string." -msgstr "" - -#: src/tags.cpp:1855 -msgid "" -"This tag records the serial number of the interchangeable lens that was used " -"in photography as an ASCII string." -msgstr "" - -#: src/tags.cpp:1859 src/tags.cpp:1860 -msgid "Unknown Exif tag" -msgstr "" - -#: src/tags.cpp:1871 -msgid "North" -msgstr "" - -#: src/tags.cpp:1872 -msgid "South" -msgstr "" - -#: src/tags.cpp:1877 -msgid "East" -msgstr "" - -#: src/tags.cpp:1878 -msgid "West" -msgstr "" - -#: src/tags.cpp:1883 -msgid "Above sea level" -msgstr "" - -#: src/tags.cpp:1884 -msgid "Below sea level" -msgstr "" - -#: src/tags.cpp:1889 -msgid "Measurement in progress" -msgstr "" - -#: src/tags.cpp:1890 -msgid "Measurement Interoperability" -msgstr "" - -#: src/tags.cpp:1895 -msgid "Two-dimensional measurement" -msgstr "" - -#: src/tags.cpp:1896 -msgid "Three-dimensional measurement" -msgstr "" - -#: src/tags.cpp:1901 -msgid "km/h" -msgstr "" - -#: src/tags.cpp:1902 -msgid "mph" -msgstr "" - -#: src/tags.cpp:1903 -msgid "knots" -msgstr "" - -#: src/tags.cpp:1908 -msgid "True direction" -msgstr "" - -#: src/tags.cpp:1909 -msgid "Magnetic direction" -msgstr "" - -#: src/tags.cpp:1914 -msgid "Kilometers" -msgstr "" - -#: src/tags.cpp:1915 -msgid "Miles" -msgstr "" - -#: src/tags.cpp:1916 -msgid "Knots" -msgstr "" - -#: src/tags.cpp:1921 -msgid "Without correction" -msgstr "" - -#: src/tags.cpp:1922 -msgid "Correction applied" -msgstr "" - -#: src/tags.cpp:1928 -msgid "" -"Indicates the version of . The version is given as 2.0.0.0. This " -"tag is mandatory when tag is present. (Note: The " -"tag is given in bytes, unlike the tag. When the version is " -"2.0.0.0, the tag value is 02000000.H)." -msgstr "" - -#: src/tags.cpp:1934 -msgid "GPS Latitude Reference" -msgstr "" - -#: src/tags.cpp:1935 -msgid "" -"Indicates whether the latitude is north or south latitude. The ASCII value " -"'N' indicates north latitude, and 'S' is south latitude." -msgstr "" - -#: src/tags.cpp:1939 -msgid "" -"Indicates the latitude. The latitude is expressed as three RATIONAL values " -"giving the degrees, minutes, and seconds, respectively. When degrees, " -"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " -"degrees and minutes are used and, for example, fractions of minutes are " -"given up to two decimal places, the format is dd/1,mmmm/100,0/1." -msgstr "" - -#: src/tags.cpp:1946 -msgid "GPS Longitude Reference" -msgstr "" - -#: src/tags.cpp:1947 -msgid "" -"Indicates whether the longitude is east or west longitude. ASCII 'E' " -"indicates east longitude, and 'W' is west longitude." -msgstr "" - -#: src/tags.cpp:1951 -msgid "" -"Indicates the longitude. The longitude is expressed as three RATIONAL values " -"giving the degrees, minutes, and seconds, respectively. When degrees, " -"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " -"degrees and minutes are used and, for example, fractions of minutes are " -"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." -msgstr "" - -#: src/tags.cpp:1959 -msgid "" -"Indicates the altitude used as the reference altitude. If the reference is " -"sea level and the altitude is above sea level, 0 is given. If the altitude " -"is below sea level, a value of 1 is given and the altitude is indicated as " -"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " -"that this tag is BYTE type, unlike other reference tags." -msgstr "" - -#: src/tags.cpp:1967 -msgid "" -"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " -"expressed as one RATIONAL value. The reference unit is meters." -msgstr "" - -#: src/tags.cpp:1971 -msgid "" -"Indicates the time as UTC (Coordinated Universal Time). is " -"expressed as three RATIONAL values giving the hour, minute, and second " -"(atomic clock)." -msgstr "" - -#: src/tags.cpp:1976 -msgid "" -"Indicates the GPS satellites used for measurements. This tag can be used to " -"describe the number of satellites, their ID number, angle of elevation, " -"azimuth, SNR and other information in ASCII notation. The format is not " -"specified. If the GPS receiver is incapable of taking measurements, value of " -"the tag is set to NULL." -msgstr "" - -#: src/tags.cpp:1983 -msgid "" -"Indicates the status of the GPS receiver when the image is recorded. \"A\" " -"means measurement is in progress, and \"V\" means the measurement is " -"Interoperability." -msgstr "" - -#: src/tags.cpp:1988 -msgid "" -"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " -"and \"3\" means three-dimensional measurement is in progress." -msgstr "" - -#: src/tags.cpp:1991 -msgid "GPS Data Degree of Precision" -msgstr "" - -#: src/tags.cpp:1992 -msgid "" -"Indicates the GPS DOP (data degree of precision). An HDOP value is written " -"during two-dimensional measurement, and PDOP during three-dimensional " -"measurement." -msgstr "" - -#: src/tags.cpp:1996 -msgid "" -"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " -"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." -msgstr "" - -#: src/tags.cpp:2000 -msgid "Indicates the speed of GPS receiver movement." -msgstr "" - -#: src/tags.cpp:2002 -msgid "GPS Track Ref" -msgstr "" - -#: src/tags.cpp:2003 -msgid "" -"Indicates the reference for giving the direction of GPS receiver movement. " -"\"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" - -#: src/tags.cpp:2007 -msgid "" -"Indicates the direction of GPS receiver movement. The range of values is " -"from 0.00 to 359.99." -msgstr "" - -#: src/tags.cpp:2011 -msgid "" -"Indicates the reference for giving the direction of the image when it is " -"captured. \"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" - -#: src/tags.cpp:2015 -msgid "" -"Indicates the direction of the image when it was captured. The range of " -"values is from 0.00 to 359.99." -msgstr "" - -#: src/tags.cpp:2019 -msgid "" -"Indicates the geodetic survey data used by the GPS receiver. If the survey " -"data is restricted to Japan, the value of this tag is \"TOKYO\" or " -"\"WGS-84\"." -msgstr "" - -#: src/tags.cpp:2022 -msgid "GPS Destination Latitude Refeference" -msgstr "" - -#: src/tags.cpp:2023 -msgid "" -"Indicates whether the latitude of the destination point is north or south " -"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " -"latitude." -msgstr "" - -#: src/tags.cpp:2027 -msgid "" -"Indicates the latitude of the destination point. The latitude is expressed " -"as three RATIONAL values giving the degrees, minutes, and seconds, " -"respectively. If latitude is expressed as degrees, minutes and seconds, a " -"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " -"and, for example, fractions of minutes are given up to two decimal places, " -"the format would be dd/1,mmmm/100,0/1." -msgstr "" - -#: src/tags.cpp:2034 -msgid "GPS Destination Longitude Reference" -msgstr "" - -#: src/tags.cpp:2035 -msgid "" -"Indicates whether the longitude of the destination point is east or west " -"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." -msgstr "" - -#: src/tags.cpp:2039 -msgid "" -"Indicates the longitude of the destination point. The longitude is expressed " -"as three RATIONAL values giving the degrees, minutes, and seconds, " -"respectively. If longitude is expressed as degrees, minutes and seconds, a " -"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " -"and, for example, fractions of minutes are given up to two decimal places, " -"the format would be ddd/1,mmmm/100,0/1." -msgstr "" - -#: src/tags.cpp:2046 -msgid "" -"Indicates the reference used for giving the bearing to the destination " -"point. \"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" - -#: src/tags.cpp:2050 -msgid "" -"Indicates the bearing to the destination point. The range of values is from " -"0.00 to 359.99." -msgstr "" - -#: src/tags.cpp:2053 -msgid "GPS Destination Distance Reference" -msgstr "" - -#: src/tags.cpp:2054 -msgid "" -"Indicates the unit used to express the distance to the destination point. \"K" -"\", \"M\" and \"N\" represent kilometers, miles and knots." -msgstr "" - -#: src/tags.cpp:2058 -msgid "Indicates the distance to the destination point." -msgstr "" - -#: src/tags.cpp:2061 -msgid "" -"A character string recording the name of the method used for location " -"finding. The first byte indicates the character code used, and this is " -"followed by the name of the method." -msgstr "" - -#: src/tags.cpp:2066 -msgid "" -"A character string recording the name of the GPS area. The first byte " -"indicates the character code used, and this is followed by the name of the " -"GPS area." -msgstr "" - -#: src/tags.cpp:2069 -msgid "GPS Date Stamp" -msgstr "" - -#: src/tags.cpp:2070 -msgid "" -"A character string recording date and time information relative to UTC " -"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." -msgstr "" - -#: src/tags.cpp:2074 -msgid "" -"Indicates whether differential correction is applied to the GPS receiver." -msgstr "" - -#: src/tags.cpp:2077 src/tags.cpp:2078 -msgid "Unknown GPSInfo tag" -msgstr "" - -#: src/tags.cpp:2089 -msgid "Interoperability Index" -msgstr "" - -#: src/tags.cpp:2090 -msgid "" -"Indicates the identification of the Interoperability rule. Use \"R98\" for " -"stating ExifR98 Rules. Four bytes used including the termination code " -"(NULL). see the separate volume of Recommended Exif Interoperability Rules " -"(ExifR98) for other tags used for ExifR98." -msgstr "" - -#: src/tags.cpp:2096 -msgid "Interoperability Version" -msgstr "" - -#: src/tags.cpp:2097 -msgid "Interoperability version" -msgstr "" - -#: src/tags.cpp:2099 -msgid "Related Image File Format" -msgstr "" - -#: src/tags.cpp:2100 -msgid "File format of image file" -msgstr "" - -#: src/tags.cpp:2102 -msgid "Related Image Width" -msgstr "" - -#: src/tags.cpp:2105 -msgid "Related Image Length" -msgstr "" - -#: src/tags.cpp:2109 src/tags.cpp:2110 -msgid "Unknown Exif Interoperability tag" -msgstr "" - -#: src/tags.cpp:2121 -msgid "Offset" -msgstr "" - -#: src/tags.cpp:2122 -msgid "Offset of the makernote from the start of the TIFF header." -msgstr "" - -#: src/tags.cpp:2124 -msgid "Byte Order" -msgstr "" - -#: src/tags.cpp:2125 -msgid "" -"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" -"endian)." -msgstr "" - -#: src/tags.cpp:2128 src/tags.cpp:2129 -msgid "Unknown Exiv2 Makernote info tag" -msgstr "" - -#: src/tags.cpp:2139 src/tags.cpp:2140 -msgid "Unknown tag" -msgstr "" - -#: src/tags.cpp:2662 -msgid "Digital zoom not used" -msgstr "" - -#: src/tiffimage.cpp:2034 -msgid "TIFF header, offset" -msgstr "" - -#: src/tiffimage.cpp:2039 -msgid "little endian encoded" -msgstr "" - -#: src/tiffimage.cpp:2040 -msgid "big endian encoded" -msgstr "" diff --git a/platform/win32/msvc/external/exiv2/po/fi.gmo b/platform/win32/msvc/external/exiv2/po/fi.gmo deleted file mode 100644 index c712177dd55..00000000000 Binary files a/platform/win32/msvc/external/exiv2/po/fi.gmo and /dev/null differ diff --git a/platform/win32/msvc/external/exiv2/po/fi.po b/platform/win32/msvc/external/exiv2/po/fi.po deleted file mode 100644 index ed67b00fb0f..00000000000 --- a/platform/win32/msvc/external/exiv2/po/fi.po +++ /dev/null @@ -1,22142 +0,0 @@ -# translation of Exiv2.po to Finnish -# -# Copyright (C) 2006-2007 Andreas Huggel -# This file is distributed under the same license as the Exiv2 package. -# -# , 2009. -msgid "" -msgstr "" -"Project-Id-Version: Exiv2\n" -"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" -"POT-Creation-Date: 2012-03-23 18:06+0800\n" -"PO-Revision-Date: 2009-04-12 16:06+0000\n" -"Last-Translator: Mikael Lammentausta\n" -"Language-Team: \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Lokalize 0.3\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: src/actions.cpp:253 src/actions.cpp:486 src/actions.cpp:698 -#: src/actions.cpp:715 src/actions.cpp:760 src/actions.cpp:850 -#: src/actions.cpp:993 src/actions.cpp:1035 src/actions.cpp:1104 -#: src/actions.cpp:1146 src/actions.cpp:1151 src/actions.cpp:1171 -#: src/actions.cpp:1176 src/actions.cpp:1208 src/actions.cpp:1451 -#: src/actions.cpp:1587 src/actions.cpp:1652 src/actions.cpp:1820 -msgid "Failed to open the file\n" -msgstr "Tiedoston avaus epäonnistui\n" - -#: src/actions.cpp:263 -msgid "File name" -msgstr "Tiedostonimi" - -#: src/actions.cpp:269 -msgid "File size" -msgstr "Tiedoston koko" - -#: src/actions.cpp:270 src/actions.cpp:422 src/actions.cpp:1019 -msgid "Bytes" -msgstr "tavua" - -#: src/actions.cpp:274 -msgid "MIME type" -msgstr "Mime-tyyppi" - -#: src/actions.cpp:278 src/canonmn.cpp:785 src/minoltamn.cpp:500 -#: src/minoltamn.cpp:745 src/minoltamn.cpp:988 src/pentaxmn.cpp:892 -msgid "Image size" -msgstr "Kuvan koko" - -#: src/actions.cpp:283 src/actions.cpp:513 src/actions.cpp:773 -#: src/actions.cpp:1002 src/actions.cpp:1464 src/actions.cpp:1600 -#: src/actions.cpp:1665 -msgid "No Exif data found in the file\n" -msgstr "Kuvasta ei löytynyt exif-tietoja\n" - -#: src/actions.cpp:288 -msgid "Camera make" -msgstr "Kameran merkki" - -#: src/actions.cpp:291 -msgid "Camera model" -msgstr "Kameran malli" - -#: src/actions.cpp:294 -msgid "Image timestamp" -msgstr "Kuvan aikaleima" - -#: src/actions.cpp:298 src/minoltamn.cpp:805 src/minoltamn.cpp:812 -#: src/minoltamn.cpp:1066 -msgid "Image number" -msgstr "Kuvan numero" - -#: src/actions.cpp:303 src/minoltamn.cpp:515 src/minoltamn.cpp:798 -#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1368 src/pentaxmn.cpp:909 -#: src/pentaxmn.cpp:910 -msgid "Exposure time" -msgstr "Valotusaika" - -#: src/actions.cpp:315 src/canonmn.cpp:903 src/minoltamn.cpp:1262 -#: src/tags.cpp:1627 -msgid "Aperture" -msgstr "Aukko" - -#: src/actions.cpp:325 -msgid "Exposure bias" -msgstr "Valotuksen korjaus" - -#: src/actions.cpp:328 src/canonmn.cpp:835 src/minoltamn.cpp:874 -#: src/minoltamn.cpp:1198 src/minoltamn.cpp:2098 src/panasonicmn.cpp:69 -#: src/pentaxmn.cpp:320 src/properties.cpp:563 src/sonymn.cpp:171 -#: src/tags.cpp:827 src/tags.cpp:1431 src/tags.cpp:1652 -msgid "Flash" -msgstr "Salama" - -#: src/actions.cpp:331 src/canonmn.cpp:897 src/panasonicmn.cpp:249 -msgid "Flash bias" -msgstr "Salamavalotuksen korjaus" - -#: src/actions.cpp:336 src/canonmn.cpp:201 src/minoltamn.cpp:539 -#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1372 -msgid "Focal length" -msgstr "Polttoväli" - -#: src/actions.cpp:341 -msgid "35 mm equivalent" -msgstr "" - -#: src/actions.cpp:351 -msgid "Subject distance" -msgstr "Kohteen etäisyys" - -#: src/actions.cpp:362 -msgid "ISO speed" -msgstr "ISO-herkkyys" - -#: src/actions.cpp:365 src/minoltamn.cpp:491 src/minoltamn.cpp:742 -#: src/minoltamn.cpp:985 src/minoltamn.cpp:1353 src/olympusmn.cpp:659 -#: src/sigmamn.cpp:75 -msgid "Exposure mode" -msgstr "Valotustila" - -#: src/actions.cpp:368 src/minoltamn.cpp:509 src/minoltamn.cpp:1006 -#: src/minoltamn.cpp:1395 src/olympusmn.cpp:661 src/sigmamn.cpp:78 -msgid "Metering mode" -msgstr "Mittaustapa" - -#: src/actions.cpp:371 src/canonmn.cpp:776 src/minoltamn.cpp:521 -#: src/olympusmn.cpp:202 src/olympusmn.cpp:663 src/panasonicmn.cpp:243 -msgid "Macro mode" -msgstr "Makrotila" - -#: src/actions.cpp:374 src/minoltamn.cpp:133 src/minoltamn.cpp:503 -#: src/minoltamn.cpp:748 src/minoltamn.cpp:991 src/pentaxmn.cpp:889 -#: src/sonymn.cpp:275 -msgid "Image quality" -msgstr "Kuvan laatu" - -#: src/actions.cpp:377 -msgid "Exif Resolution" -msgstr "" - -#: src/actions.cpp:406 src/canonmn.cpp:1140 src/minoltamn.cpp:178 -#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:994 -#: src/minoltamn.cpp:1377 src/nikonmn.cpp:226 src/nikonmn.cpp:472 -#: src/nikonmn.cpp:528 src/olympusmn.cpp:880 src/sigmamn.cpp:72 -#: src/sonymn.cpp:290 -msgid "White balance" -msgstr "Valkotasapaino" - -#: src/actions.cpp:409 src/minoltamn.cpp:114 src/olympusmn.cpp:426 -msgid "Thumbnail" -msgstr "Näytekuva" - -#: src/actions.cpp:413 src/actions.cpp:418 src/canonmn.cpp:339 -#: src/canonmn.cpp:1048 src/canonmn.cpp:1057 src/canonmn.cpp:1109 -#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2076 -#: src/nikonmn.cpp:173 src/nikonmn.cpp:188 src/nikonmn.cpp:903 -#: src/nikonmn.cpp:926 src/nikonmn.cpp:988 src/olympusmn.cpp:142 -#: src/olympusmn.cpp:720 src/olympusmn.cpp:727 src/olympusmn.cpp:1181 -#: src/olympusmn.cpp:1240 src/olympusmn.cpp:1337 src/olympusmn.cpp:1493 -#: src/olympusmn.cpp:1502 src/pentaxmn.cpp:230 src/pentaxmn.cpp:349 -#: src/pentaxmn.cpp:350 src/properties.cpp:914 src/properties.cpp:922 -#: src/tags.cpp:1510 -msgid "None" -msgstr "Ei käytössä" - -#: src/actions.cpp:428 src/datasets.cpp:376 src/properties.cpp:357 -#: src/properties.cpp:523 src/tags.cpp:762 -msgid "Copyright" -msgstr "Omistusoikeus" - -#: src/actions.cpp:431 -msgid "Exif comment" -msgstr "Exif-kommentti" - -#: src/actions.cpp:526 -msgid "No IPTC data found in the file\n" -msgstr "Kuvasta ei löytynyt iptc-tietoja\n" - -#: src/actions.cpp:539 -msgid "No XMP data found in the file\n" -msgstr "Kuvasta ei löytynyt xmp-tietoja\n" - -#: src/actions.cpp:638 src/actions.cpp:663 src/actions.cpp:684 -msgid "(Binary value suppressed)" -msgstr "" - -#: src/actions.cpp:705 -msgid "JPEG comment" -msgstr "Jpeg-kommentti" - -#: src/actions.cpp:730 -msgid "Preview" -msgstr "Esikatselu" - -#: src/actions.cpp:734 src/actions.cpp:1074 src/properties.cpp:426 -msgid "pixels" -msgstr "pikseliä" - -#: src/actions.cpp:736 src/actions.cpp:1076 -msgid "bytes" -msgstr "tavua" - -#: src/actions.cpp:783 -msgid "Neither tag" -msgstr "" - -#: src/actions.cpp:784 -msgid "nor" -msgstr "" - -#: src/actions.cpp:785 -msgid "found in the file" -msgstr "" - -#: src/actions.cpp:790 -msgid "Image file creation timestamp not set in the file" -msgstr "Kuvan luontipäiväystä ei ole asetettu" - -#: src/actions.cpp:796 src/actions.cpp:1553 -msgid "Failed to parse timestamp" -msgstr "Aikaleiman lukeminen epäonnistui" - -#: src/actions.cpp:797 -msgid "in the file" -msgstr "tiedostossa" - -#: src/actions.cpp:808 -msgid "Updating timestamp to" -msgstr "Päivitetään aikaleima:" - -#: src/actions.cpp:902 -msgid "Erasing thumbnail data" -msgstr "Poistetaan näytekuva" - -#: src/actions.cpp:910 -msgid "Erasing Exif data from the file" -msgstr "Poistetaan exif-tiedot" - -#: src/actions.cpp:919 -msgid "Erasing IPTC data from the file" -msgstr "Poistetaan iptc-tiedot" - -#: src/actions.cpp:928 -msgid "Erasing JPEG comment from the file" -msgstr "Poistetaan jpef-kommentti" - -#: src/actions.cpp:937 -msgid "Erasing XMP data from the file" -msgstr "Poistetaan xmp-tiedot" - -#: src/actions.cpp:1009 -msgid "Image does not contain an Exif thumbnail\n" -msgstr "" - -#: src/actions.cpp:1018 -msgid "Writing thumbnail" -msgstr "Tallennetaan näytekuvaa" - -#: src/actions.cpp:1019 src/actions.cpp:1077 -msgid "to file" -msgstr "tiedostoon" - -#: src/actions.cpp:1025 -msgid "Exif data doesn't contain a thumbnail\n" -msgstr "" - -#: src/actions.cpp:1055 src/actions.cpp:1081 -msgid "Image does not have preview" -msgstr "" - -#: src/actions.cpp:1070 -msgid "Writing preview" -msgstr "" - -#: src/actions.cpp:1241 -msgid "Setting JPEG comment" -msgstr "Talletetaan jpeg-kommenttia" - -#: src/actions.cpp:1282 -msgid "Add" -msgstr "Lisää" - -#: src/actions.cpp:1304 src/actions.cpp:1378 -msgid "Warning" -msgstr "Varoitus" - -#: src/actions.cpp:1305 src/actions.cpp:1379 -msgid "Failed to read" -msgstr "Lukuvirhe" - -#: src/actions.cpp:1307 src/actions.cpp:1381 -msgid "value" -msgstr "arvo" - -#: src/actions.cpp:1318 -msgid "Set" -msgstr "Aseta" - -#: src/actions.cpp:1390 -msgid "Del" -msgstr "Poista" - -#: src/actions.cpp:1422 -msgid "Reg " -msgstr "" - -#: src/actions.cpp:1506 -msgid "Timestamp of metadatum with key" -msgstr "" - -#: src/actions.cpp:1507 -msgid "not set\n" -msgstr "" - -#: src/actions.cpp:1512 -msgid "Adjusting" -msgstr "" - -#: src/actions.cpp:1512 -msgid "by" -msgstr "" - -#: src/actions.cpp:1516 src/actions.cpp:1565 -msgid "years" -msgstr "vuotta" - -#: src/actions.cpp:1519 -msgid "year" -msgstr "vuosi" - -#: src/actions.cpp:1527 -msgid "months" -msgstr "kuukautta" - -#: src/actions.cpp:1530 -msgid "month" -msgstr "kuukausi" - -#: src/actions.cpp:1538 -msgid "days" -msgstr "päivää" - -#: src/actions.cpp:1541 -msgid "day" -msgstr "päivä" - -#: src/actions.cpp:1547 -msgid "s" -msgstr "" - -#: src/actions.cpp:1563 -msgid "Can't adjust timestamp by" -msgstr "" - -#: src/actions.cpp:1572 src/actions.cpp:1844 src/actions.cpp:1852 -#: src/actions.cpp:1860 src/actions.cpp:1869 src/actions.cpp:1979 -msgid "to" -msgstr "" - -#: src/actions.cpp:1607 -msgid "Standard Exif ISO tag exists; not modified\n" -msgstr "" - -#: src/actions.cpp:1615 -msgid "Setting Exif ISO value to" -msgstr "" - -#: src/actions.cpp:1671 -#, fuzzy -msgid "No Exif user comment found" -msgstr "Exif-kommentti" - -#: src/actions.cpp:1679 -msgid "Found Exif user comment with unexpected value type" -msgstr "" - -#: src/actions.cpp:1686 -msgid "No Exif UNICODE user comment found" -msgstr "" - -#: src/actions.cpp:1692 -#, fuzzy -msgid "Setting Exif UNICODE user comment to" -msgstr "Talletetaan jpeg-kommenttia" - -#: src/actions.cpp:1843 -msgid "Writing Exif data from" -msgstr "" - -#: src/actions.cpp:1851 -msgid "Writing IPTC data from" -msgstr "" - -#: src/actions.cpp:1859 -msgid "Writing XMP data from" -msgstr "" - -#: src/actions.cpp:1868 -msgid "Writing JPEG comment from" -msgstr "" - -#: src/actions.cpp:1878 -msgid "Could not write metadata to file" -msgstr "" - -#: src/actions.cpp:1905 -msgid "Filename format yields empty filename for the file" -msgstr "" - -#: src/actions.cpp:1914 -msgid "This file already has the correct name" -msgstr "" - -#: src/actions.cpp:1938 src/exiv2.cpp:168 -msgid "File" -msgstr "" - -#: src/actions.cpp:1939 -msgid "exists. [O]verwrite, [r]ename or [s]kip?" -msgstr "" - -#: src/actions.cpp:1967 -msgid "Renaming file to" -msgstr "" - -#: src/actions.cpp:1969 -msgid "updating timestamp" -msgstr "" - -#: src/actions.cpp:1978 -msgid "Failed to rename" -msgstr "" - -#: src/actions.cpp:2000 -msgid "Overwrite" -msgstr "" - -#: src/canonmn.cpp:58 src/canonmn.cpp:186 src/canonmn.cpp:245 -#: src/canonmn.cpp:260 src/canonmn.cpp:734 src/canonmn.cpp:747 -#: src/canonmn.cpp:1009 src/canonmn.cpp:1032 src/canonmn.cpp:1041 -#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 -#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 -#: src/minoltamn.cpp:1134 src/minoltamn.cpp:1275 src/minoltamn.cpp:1337 -#: src/minoltamn.cpp:1910 src/minoltamn.cpp:1924 src/minoltamn.cpp:1972 -#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 -#: src/nikonmn.cpp:204 src/nikonmn.cpp:641 src/nikonmn.cpp:666 -#: src/nikonmn.cpp:715 src/nikonmn.cpp:750 src/nikonmn.cpp:836 -#: src/nikonmn.cpp:881 src/nikonmn.cpp:968 src/nikonmn.cpp:1210 -#: src/nikonmn.cpp:1219 src/olympusmn.cpp:59 src/olympusmn.cpp:79 -#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 -#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:586 -#: src/olympusmn.cpp:648 src/olympusmn.cpp:912 src/olympusmn.cpp:1133 -#: src/olympusmn.cpp:1431 src/olympusmn.cpp:1432 src/olympusmn.cpp:1471 -#: src/panasonicmn.cpp:87 src/panasonicmn.cpp:94 src/panasonicmn.cpp:100 -#: src/panasonicmn.cpp:145 src/panasonicmn.cpp:154 src/panasonicmn.cpp:183 -#: src/panasonicmn.cpp:210 src/pentaxmn.cpp:183 src/pentaxmn.cpp:292 -#: src/pentaxmn.cpp:713 src/pentaxmn.cpp:719 src/sonymn.cpp:56 -#: src/sonymn.cpp:87 src/sonymn.cpp:141 src/sonymn.cpp:149 src/sonymn.cpp:156 -#: src/sonymn.cpp:199 src/sonymn.cpp:206 src/sonymn.cpp:237 src/sonymn.cpp:500 -msgid "Off" -msgstr "Pois" - -#: src/canonmn.cpp:59 src/canonmn.cpp:244 src/canonmn.cpp:262 -#: src/canonmn.cpp:735 src/canonmn.cpp:1035 src/fujimn.cpp:57 -#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 -#: src/minoltamn.cpp:1911 src/minoltamn.cpp:1923 src/nikonmn.cpp:63 -#: src/nikonmn.cpp:640 src/nikonmn.cpp:716 src/nikonmn.cpp:717 -#: src/nikonmn.cpp:1220 src/olympusmn.cpp:60 src/olympusmn.cpp:80 -#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 -#: src/olympusmn.cpp:1472 src/panasonicmn.cpp:93 src/pentaxmn.cpp:186 -#: src/pentaxmn.cpp:293 src/pentaxmn.cpp:714 src/sonymn.cpp:157 -#: src/sonymn.cpp:207 src/sonymn.cpp:238 -msgid "On" -msgstr "Päällä" - -#: src/canonmn.cpp:69 -msgid "PowerShot A30" -msgstr "PowerShot A30" - -#: src/canonmn.cpp:70 -msgid "PowerShot S300 / Digital IXUS 300 / IXY Digital 300" -msgstr "PowerShot S300 / Digital IXUS 300 / IXY Digital 300" - -#: src/canonmn.cpp:71 -msgid "PowerShot A20" -msgstr "PowerShot A20" - -#: src/canonmn.cpp:72 -msgid "PowerShot A10" -msgstr "PowerShot A10" - -#: src/canonmn.cpp:73 -msgid "PowerShot S110 / Digital IXUS v / IXY Digital 200" -msgstr "PowerShot S110 / Digital IXUS v / IXY Digital 200" - -#: src/canonmn.cpp:74 -msgid "PowerShot G2" -msgstr "PowerShot G2" - -#: src/canonmn.cpp:75 -msgid "PowerShot S40" -msgstr "PowerShot S40" - -#: src/canonmn.cpp:76 -msgid "PowerShot S30" -msgstr "PowerShot S30" - -#: src/canonmn.cpp:77 -msgid "PowerShot A40" -msgstr "PowerShot A40" - -#: src/canonmn.cpp:78 -msgid "EOS D30" -msgstr "EOS D30" - -#: src/canonmn.cpp:79 -msgid "PowerShot A100" -msgstr "PowerShot A100" - -#: src/canonmn.cpp:80 -msgid "PowerShot S200 / Digital IXUS v2 / IXY Digital 200a" -msgstr "PowerShot S200 / Digital IXUS v2 / IXY Digital 200a" - -#: src/canonmn.cpp:81 -msgid "PowerShot A200" -msgstr "PowerShot A200" - -#: src/canonmn.cpp:82 -msgid "PowerShot S330 / Digital IXUS 330 / IXY Digital 300a" -msgstr "PowerShot S330 / Digital IXUS 330 / IXY Digital 300a" - -#: src/canonmn.cpp:83 -msgid "PowerShot G3" -msgstr "PowerShot G3" - -#: src/canonmn.cpp:84 -msgid "PowerShot S45" -msgstr "PowerShot S45" - -#: src/canonmn.cpp:85 -msgid "PowerShot SD100 / Digital IXUS II / IXY Digital 30" -msgstr "PowerShot SD100 / Digital IXUS II / IXY Digital 30" - -#: src/canonmn.cpp:86 -msgid "PowerShot S230 / Digital IXUS v3 / IXY Digital 320" -msgstr "PowerShot S230 / Digital IXUS v3 / IXY Digital 320" - -#: src/canonmn.cpp:87 -msgid "PowerShot A70" -msgstr "PowerShot A70" - -#: src/canonmn.cpp:88 -msgid "PowerShot A60" -msgstr "PowerShot A60" - -#: src/canonmn.cpp:89 -msgid "PowerShot S400 / Digital IXUS 400 / IXY Digital 400" -msgstr "PowerShot S400 / Digital IXUS 400 / IXY Digital 400" - -#: src/canonmn.cpp:90 -msgid "PowerShot G5" -msgstr "PowerShot G5" - -#: src/canonmn.cpp:91 -msgid "PowerShot A300" -msgstr "PowerShot A300" - -#: src/canonmn.cpp:92 -msgid "PowerShot S50" -msgstr "PowerShot S50" - -#: src/canonmn.cpp:93 -msgid "PowerShot A80" -msgstr "PowerShot A80" - -#: src/canonmn.cpp:94 -msgid "PowerShot SD10 / Digital IXUS i / IXY Digital L" -msgstr "PowerShot SD10 / Digital IXUS i / IXY Digital L" - -#: src/canonmn.cpp:95 -msgid "PowerShot S1 IS" -msgstr "PowerShot S1 IS" - -#: src/canonmn.cpp:96 -msgid "PowerShot Pro1" -msgstr "PowerShot Pro1" - -#: src/canonmn.cpp:97 -msgid "PowerShot S70" -msgstr "PowerShot S70" - -#: src/canonmn.cpp:98 -msgid "PowerShot S60" -msgstr "PowerShot S60" - -#: src/canonmn.cpp:99 -msgid "PowerShot G6" -msgstr "PowerShot G6" - -#: src/canonmn.cpp:100 -msgid "PowerShot S500 / Digital IXUS 500 / IXY Digital 500" -msgstr "PowerShot S500 / Digital IXUS 500 / IXY Digital 500" - -#: src/canonmn.cpp:101 -msgid "PowerShot A75" -msgstr "PowerShot A75" - -#: src/canonmn.cpp:102 -msgid "PowerShot SD110 / Digital IXUS IIs / IXY Digital 30a" -msgstr "PowerShot SD110 / Digital IXUS IIs / IXY Digital 30a" - -#: src/canonmn.cpp:103 -msgid "PowerShot A400" -msgstr "PowerShot A400" - -#: src/canonmn.cpp:104 -msgid "PowerShot A310" -msgstr "PowerShot A310" - -#: src/canonmn.cpp:105 -msgid "PowerShot A85" -msgstr "PowerShot A85" - -#: src/canonmn.cpp:106 -msgid "PowerShot S410 / Digital IXUS 430 / IXY Digital 450" -msgstr "PowerShot S410 / Digital IXUS 430 / IXY Digital 450" - -#: src/canonmn.cpp:107 -msgid "PowerShot A95" -msgstr "PowerShot A95" - -#: src/canonmn.cpp:108 -msgid "PowerShot SD300 / Digital IXUS 40 / IXY Digital 50" -msgstr "PowerShot SD300 / Digital IXUS 40 / IXY Digital 50" - -#: src/canonmn.cpp:109 -msgid "PowerShot SD200 / Digital IXUS 30 / IXY Digital 40" -msgstr "PowerShot SD200 / Digital IXUS 30 / IXY Digital 40" - -#: src/canonmn.cpp:110 -msgid "PowerShot A520" -msgstr "PowerShot A520" - -#: src/canonmn.cpp:111 -msgid "PowerShot A510" -msgstr "PowerShot A510" - -#: src/canonmn.cpp:112 -msgid "PowerShot SD20 / Digital IXUS i5 / IXY Digital L2" -msgstr "PowerShot SD20 / Digital IXUS i5 / IXY Digital L2" - -#: src/canonmn.cpp:113 -msgid "PowerShot S2 IS" -msgstr "PowerShot S2 IS" - -#: src/canonmn.cpp:114 -msgid "PowerShot SD430 / IXUS Wireless / IXY Wireless" -msgstr "PowerShot SD430 / IXUS Wireless / IXY Wireless" - -#: src/canonmn.cpp:115 -msgid "PowerShot SD500 / Digital IXUS 700 / IXY Digital 600" -msgstr "PowerShot SD500 / Digital IXUS 700 / IXY Digital 600" - -#: src/canonmn.cpp:116 -msgid "EOS D60" -msgstr "EOS D60" - -#: src/canonmn.cpp:117 -msgid "PowerShot SD30 / Digital IXUS i zoom / IXY Digital L3" -msgstr "PowerShot SD30 / Digital IXUS i zoom / IXY Digital L3" - -#: src/canonmn.cpp:118 -msgid "PowerShot A430" -msgstr "PowerShot A430" - -#: src/canonmn.cpp:119 -msgid "PowerShot A410" -msgstr "PowerShot A410" - -#: src/canonmn.cpp:120 -msgid "PowerShot S80" -msgstr "PowerShot S80" - -#: src/canonmn.cpp:121 -msgid "PowerShot A620" -msgstr "PowerShot A620" - -#: src/canonmn.cpp:122 -msgid "PowerShot A610" -msgstr "PowerShot A610" - -#: src/canonmn.cpp:123 -msgid "PowerShot SD630 / Digital IXUS 65 / IXY Digital 80" -msgstr "PowerShot SD630 / Digital IXUS 65 / IXY Digital 80" - -#: src/canonmn.cpp:124 -msgid "PowerShot SD450 / Digital IXUS 55 / IXY Digital 60" -msgstr "PowerShot SD450 / Digital IXUS 55 / IXY Digital 60" - -#: src/canonmn.cpp:125 -msgid "PowerShot TX1" -msgstr "PowerShot TX1" - -#: src/canonmn.cpp:126 -msgid "PowerShot SD400 / Digital IXUS 50 / IXY Digital 55" -msgstr "PowerShot SD400 / Digital IXUS 50 / IXY Digital 55" - -#: src/canonmn.cpp:127 -msgid "PowerShot A420" -msgstr "PowerShot A420" - -#: src/canonmn.cpp:128 -msgid "PowerShot SD900 / Digital IXUS 900 Ti / IXY Digital 1000" -msgstr "PowerShot SD900 / Digital IXUS 900 Ti / IXY Digital 1000" - -#: src/canonmn.cpp:129 -msgid "PowerShot SD550 / Digital IXUS 750 / IXY Digital 700" -msgstr "PowerShot SD550 / Digital IXUS 750 / IXY Digital 700" - -#: src/canonmn.cpp:130 -msgid "PowerShot A700" -msgstr "PowerShot A700" - -#: src/canonmn.cpp:131 -msgid "PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS" -msgstr "PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS" - -#: src/canonmn.cpp:132 -msgid "PowerShot S3 IS" -msgstr "PowerShot S3 IS" - -#: src/canonmn.cpp:133 -msgid "PowerShot A540" -msgstr "PowerShot A540" - -#: src/canonmn.cpp:134 -msgid "PowerShot SD600 / Digital IXUS 60 / IXY Digital 70" -msgstr "PowerShot SD600 / Digital IXUS 60 / IXY Digital 70" - -#: src/canonmn.cpp:135 -msgid "PowerShot G7" -msgstr "PowerShot G7" - -#: src/canonmn.cpp:136 -msgid "PowerShot A530" -msgstr "PowerShot A530" - -#: src/canonmn.cpp:137 -msgid "PowerShot SD800 IS / Digital IXUS 850 IS / IXY Digital 900 IS" -msgstr "PowerShot SD800 IS / Digital IXUS 850 IS / IXY Digital 900 IS" - -#: src/canonmn.cpp:138 -msgid "PowerShot SD40 / Digital IXUS i7 / IXY Digital L4" -msgstr "PowerShot SD40 / Digital IXUS i7 / IXY Digital L4" - -#: src/canonmn.cpp:139 -msgid "PowerShot A710 IS" -msgstr "PowerShot A710 IS" - -#: src/canonmn.cpp:140 -msgid "PowerShot A640" -msgstr "PowerShot A640" - -#: src/canonmn.cpp:141 -msgid "PowerShot A630" -msgstr "PowerShot A630" - -#: src/canonmn.cpp:142 -msgid "PowerShot S5 IS" -msgstr "PowerShot S5 IS" - -#: src/canonmn.cpp:143 -msgid "PowerShot A460" -msgstr "PowerShot A460" - -#: src/canonmn.cpp:144 -msgid "PowerShot SD850 IS / Digital IXUS 950 IS" -msgstr "PowerShot SD850 IS / Digital IXUS 950 IS" - -#: src/canonmn.cpp:145 -msgid "PowerShot A570 IS" -msgstr "PowerShot A570 IS" - -#: src/canonmn.cpp:146 -msgid "PowerShot A560" -msgstr "PowerShot A560" - -#: src/canonmn.cpp:147 -msgid "PowerShot SD750 / Digital IXUS 75 / IXY Digital 90" -msgstr "PowerShot SD750 / Digital IXUS 75 / IXY Digital 90" - -#: src/canonmn.cpp:148 -msgid "PowerShot SD1000 / Digital IXUS 70 / IXY Digital 10" -msgstr "PowerShot SD1000 / Digital IXUS 70 / IXY Digital 10" - -#: src/canonmn.cpp:149 -msgid "PowerShot A550" -msgstr "PowerShot A550" - -#: src/canonmn.cpp:150 -msgid "PowerShot A450" -msgstr "PowerShot A450" - -#: src/canonmn.cpp:151 -msgid "PowerShot Pro90 IS" -msgstr "PowerShot Pro90 IS" - -#: src/canonmn.cpp:152 -msgid "PowerShot G1" -msgstr "PowerShot G1" - -#: src/canonmn.cpp:153 -msgid "PowerShot S100 / Digital IXUS / IXY Digital" -msgstr "PowerShot S100 / Digital IXUS / IXY Digital" - -#: src/canonmn.cpp:154 -msgid "HV10" -msgstr "HV10" - -#: src/canonmn.cpp:155 -msgid "iVIS DC50" -msgstr "iVIS DC50" - -#: src/canonmn.cpp:156 -msgid "iVIS HV20" -msgstr "iVIS HV20" - -#: src/canonmn.cpp:157 -msgid "EOS-1D" -msgstr "EOS-1D" - -#: src/canonmn.cpp:158 -msgid "EOS-1DS" -msgstr "EOS-1DS" - -#: src/canonmn.cpp:159 -msgid "EOS 10D" -msgstr "EOS 10D" - -#: src/canonmn.cpp:160 -msgid "EOS-1D Mark III" -msgstr "EOS-1D Mark III" - -#: src/canonmn.cpp:161 -msgid "EOS Digital Rebel / 300D / Kiss Digital" -msgstr "EOS Digital Rebel / 300D / Kiss Digital" - -#: src/canonmn.cpp:162 -msgid "EOS-1D Mark II" -msgstr "EOS-1D Mark II" - -#: src/canonmn.cpp:163 -msgid "EOS 20D" -msgstr "EOS 20D" - -#: src/canonmn.cpp:164 -msgid "EOS-1Ds Mark II" -msgstr "EOS-1Ds Mark II" - -#: src/canonmn.cpp:165 -msgid "EOS Digital Rebel XT / 350D / Kiss Digital N" -msgstr "EOS Digital Rebel XT / 350D / Kiss Digital N" - -#: src/canonmn.cpp:166 -msgid "EOS 5D" -msgstr "EOS 5D" - -#: src/canonmn.cpp:167 -msgid "EOS-1D Mark II N" -msgstr "EOS-1D Mark II N" - -#: src/canonmn.cpp:168 -msgid "EOS 30D" -msgstr "EOS 30D" - -#: src/canonmn.cpp:169 -msgid "EOS Digital Rebel XTi / 400D / Kiss Digital X" -msgstr "EOS Digital Rebel XTi / 400D / Kiss Digital X" - -#: src/canonmn.cpp:170 -#, fuzzy -msgid "EOS 7D" -msgstr "EOS 5D" - -#: src/canonmn.cpp:171 -#, fuzzy -msgid "EOS Rebel T1i / 500D / Kiss X3" -msgstr "EOS Digital Rebel XTi / 400D / Kiss Digital X" - -#: src/canonmn.cpp:172 -#, fuzzy -msgid "EOS Rebel XS / 1000D / Kiss F" -msgstr "EOS Digital Rebel / 300D / Kiss Digital" - -#: src/canonmn.cpp:173 -#, fuzzy -msgid "EOS 50D" -msgstr "EOS 5D" - -#: src/canonmn.cpp:174 -#, fuzzy -msgid "EOS Rebel T2i / 550D / Kiss X4" -msgstr "EOS Digital Rebel XTi / 400D / Kiss Digital X" - -#: src/canonmn.cpp:175 -#, fuzzy -msgid "EOS-1D Mark IV" -msgstr "EOS-1D Mark II" - -#: src/canonmn.cpp:180 -#, fuzzy -msgid "Format 1" -msgstr "Normaali" - -#: src/canonmn.cpp:181 -#, fuzzy -msgid "Format 2" -msgstr "Normaali" - -#: src/canonmn.cpp:187 src/nikonmn.cpp:1211 -#, fuzzy -msgid "On (1)" -msgstr "Päällä" - -#: src/canonmn.cpp:188 src/nikonmn.cpp:1212 -#, fuzzy -msgid "On (2)" -msgstr "Päällä" - -#: src/canonmn.cpp:193 src/minoltamn.cpp:1142 src/nikonmn.cpp:136 -#: src/olympusmn.cpp:595 src/olympusmn.cpp:774 src/olympusmn.cpp:839 -#: src/pentaxmn.cpp:548 src/tags.cpp:1452 -msgid "sRGB" -msgstr "" - -#: src/canonmn.cpp:194 src/canonmn.cpp:1113 src/minoltamn.cpp:359 -#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 -#: src/minoltamn.cpp:1143 src/nikonmn.cpp:137 src/olympusmn.cpp:596 -#: src/olympusmn.cpp:775 src/olympusmn.cpp:840 src/pentaxmn.cpp:549 -#: src/sonymn.cpp:482 src/sonymn.cpp:507 src/tags.cpp:1453 -msgid "Adobe RGB" -msgstr "" - -#: src/canonmn.cpp:199 src/canonmn.cpp:202 src/canonmn.cpp:227 -#: src/canonmn.cpp:228 src/canonmn.cpp:229 src/canonmn.cpp:781 -#: src/canonmn.cpp:783 src/canonmn.cpp:784 src/canonmn.cpp:796 -#: src/canonmn.cpp:805 src/canonmn.cpp:806 src/canonmn.cpp:813 -#: src/canonmn.cpp:883 src/canonmn.cpp:888 src/canonmn.cpp:890 -#: src/canonmn.cpp:892 src/canonmn.cpp:893 src/canonmn.cpp:894 -#: src/canonmn.cpp:895 src/canonmn.cpp:898 src/canonmn.cpp:899 -#: src/canonmn.cpp:900 src/canonmn.cpp:902 src/canonmn.cpp:906 -#: src/canonmn.cpp:907 src/canonmn.cpp:908 src/fujimn.cpp:214 -#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:238 -#: src/nikonmn.cpp:303 src/nikonmn.cpp:457 src/nikonmn.cpp:478 -#: src/nikonmn.cpp:487 src/nikonmn.cpp:533 src/nikonmn.cpp:585 -#: src/nikonmn.cpp:588 src/nikonmn.cpp:591 src/nikonmn.cpp:1003 -#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1495 src/nikonmn.cpp:2554 -#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 -#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 -#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 -#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 -#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 -#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 -#: src/olympusmn.cpp:1039 src/panasonicmn.cpp:239 src/panasonicmn.cpp:247 -#: src/panasonicmn.cpp:252 src/panasonicmn.cpp:260 src/panasonicmn.cpp:262 -#: src/panasonicmn.cpp:280 src/pentaxmn.cpp:323 src/properties.cpp:809 -#: src/properties.cpp:816 src/sonymn.cpp:293 src/sonymn.cpp:312 -#: src/sonymn.cpp:318 src/sonymn.cpp:321 src/sonymn.cpp:330 src/sonymn.cpp:333 -#: src/sonymn.cpp:336 src/sonymn.cpp:339 src/tags.cpp:1414 src/tags.cpp:1427 -#: src/tags.cpp:1533 src/tags.cpp:2565 src/tags.cpp:2678 -msgid "Unknown" -msgstr "Tuntematon" - -#: src/canonmn.cpp:200 src/olympusmn.cpp:450 src/sonymn.cpp:286 -#: src/sonymn.cpp:287 -msgid "Camera Settings" -msgstr "Kameran asetukset" - -#: src/canonmn.cpp:200 -#, fuzzy -msgid "Various camera settings" -msgstr "Kameran asetukset" - -#: src/canonmn.cpp:201 src/minoltamn.cpp:538 src/nikonmn.cpp:1347 -#: src/nikonmn.cpp:1372 src/properties.cpp:564 src/tags.cpp:828 -#: src/tags.cpp:1655 -msgid "Focal Length" -msgstr "Polttoväli" - -#: src/canonmn.cpp:203 src/sonymn.cpp:345 -msgid "Shot Info" -msgstr "" - -#: src/canonmn.cpp:203 -#, fuzzy -msgid "Shot information" -msgstr "Värikylläisyys" - -#: src/canonmn.cpp:204 src/olympusmn.cpp:101 src/olympusmn.cpp:1152 -#: src/sonymn.cpp:124 src/sonymn.cpp:308 src/sonymn.cpp:309 -msgid "Panorama" -msgstr "Panoraama" - -#: src/canonmn.cpp:205 src/datasets.cpp:396 src/properties.cpp:761 -msgid "Image Type" -msgstr "Kuvan tyyppi" - -#: src/canonmn.cpp:205 -msgid "Image type" -msgstr "Kuvan tyyppi" - -#: src/canonmn.cpp:206 src/panasonicmn.cpp:237 -msgid "Firmware Version" -msgstr "Firmwaren versio" - -#: src/canonmn.cpp:206 src/panasonicmn.cpp:237 -msgid "Firmware version" -msgstr "Firmwaren versio" - -#: src/canonmn.cpp:207 src/canonmn.cpp:1066 src/nikonmn.cpp:869 -#, fuzzy -msgid "File Number" -msgstr "F-luku" - -#: src/canonmn.cpp:207 src/nikonmn.cpp:869 -#, fuzzy -msgid "File number" -msgstr "Tiedostonimi" - -#: src/canonmn.cpp:208 -msgid "Owner Name" -msgstr "Omistajan nimi" - -#: src/canonmn.cpp:209 src/fujimn.cpp:182 src/nikonmn.cpp:550 -#: src/olympusmn.cpp:741 src/pentaxmn.cpp:1120 src/pentaxmn.cpp:1121 -#: src/sigmamn.cpp:56 -msgid "Serial Number" -msgstr "Sarjanumero" - -#: src/canonmn.cpp:209 src/sigmamn.cpp:57 -msgid "Camera serial number" -msgstr "Kameran sarjanumero" - -#: src/canonmn.cpp:210 -#, fuzzy -msgid "Camera Info" -msgstr "Kameran tyyppi" - -#: src/canonmn.cpp:210 -#, fuzzy -msgid "Camera info" -msgstr "Kameran tyyppi" - -#: src/canonmn.cpp:211 src/canonmn.cpp:223 -msgid "Custom Functions" -msgstr "" - -#: src/canonmn.cpp:212 -#, fuzzy -msgid "ModelID" -msgstr "Mallin ID" - -#: src/canonmn.cpp:212 -msgid "Model ID" -msgstr "Mallin ID" - -#: src/canonmn.cpp:213 src/olympusmn.cpp:219 -msgid "Picture Info" -msgstr "Kuvan tiedot" - -#: src/canonmn.cpp:213 -msgid "Picture info" -msgstr "Kuvan tiedot" - -#: src/canonmn.cpp:214 -#, fuzzy -msgid "Thumbnail Image Valid Area" -msgstr "Näytekuva" - -#: src/canonmn.cpp:214 -#, fuzzy -msgid "Thumbnail image valid area" -msgstr "Näytekuva" - -#: src/canonmn.cpp:215 -#, fuzzy -msgid "Serial Number Format" -msgstr "Sarjanumero" - -#: src/canonmn.cpp:215 -#, fuzzy -msgid "Serial number format" -msgstr "Sarjanumero" - -#: src/canonmn.cpp:216 src/minoltamn.cpp:2042 src/olympusmn.cpp:110 -#: src/olympusmn.cpp:503 src/pentaxmn.cpp:202 -#, fuzzy -msgid "Super Macro" -msgstr "Makro" - -#: src/canonmn.cpp:216 src/canonmn.cpp:323 src/canonmn.cpp:393 -#: src/olympusmn.cpp:81 -msgid "Super macro" -msgstr "" - -#: src/canonmn.cpp:217 src/nikonmn.cpp:567 -msgid "AF Info" -msgstr "" - -#: src/canonmn.cpp:217 src/nikonmn.cpp:567 -#, fuzzy -msgid "AF info" -msgstr "AF-piste" - -#: src/canonmn.cpp:218 -msgid "Original Decision Data Offset" -msgstr "" - -#: src/canonmn.cpp:218 -msgid "Original decision data offset" -msgstr "" - -#: src/canonmn.cpp:219 -#, fuzzy -msgid "White Balance Table" -msgstr " " - -#: src/canonmn.cpp:219 -msgid "White balance table" -msgstr " " - -#: src/canonmn.cpp:220 -#, fuzzy -msgid "LensModel" -msgstr "Linssin malli" - -#: src/canonmn.cpp:221 src/olympusmn.cpp:742 src/panasonicmn.cpp:250 -#, fuzzy -msgid "Internal Serial Number" -msgstr "Linssin sarjanumero" - -#: src/canonmn.cpp:221 src/olympusmn.cpp:742 -#, fuzzy -msgid "Internal serial number" -msgstr "Kameran sarjanumero" - -#: src/canonmn.cpp:222 -msgid "Dust Removal Data" -msgstr "" - -#: src/canonmn.cpp:222 -msgid "Dust removal data" -msgstr "" - -#: src/canonmn.cpp:223 -#, fuzzy -msgid "Custom functions" -msgstr "Värikylläisyys" - -#: src/canonmn.cpp:224 -#, fuzzy -msgid "Processing Info" -msgstr "Kuvan koko" - -#: src/canonmn.cpp:224 -#, fuzzy -msgid "Processing info" -msgstr "Ohjelman versio" - -#: src/canonmn.cpp:225 -#, fuzzy -msgid "Measured Color" -msgstr "Väriavaruus" - -#: src/canonmn.cpp:225 -#, fuzzy -msgid "Measured color" -msgstr "Valotustila" - -#: src/canonmn.cpp:226 -#, fuzzy -msgid "ColorSpace" -msgstr "Väriavaruus" - -#: src/canonmn.cpp:230 -#, fuzzy -msgid "VRD Offset" -msgstr "Pois" - -#: src/canonmn.cpp:230 -#, fuzzy -msgid "VRD offset" -msgstr "Pois" - -#: src/canonmn.cpp:231 -#, fuzzy -msgid "Sensor Info" -msgstr "Linssin malli" - -#: src/canonmn.cpp:231 -#, fuzzy -msgid "Sensor info" -msgstr "Linssin tyyppi" - -#: src/canonmn.cpp:232 -#, fuzzy -msgid "Color Data" -msgstr "Väriavaruus" - -#: src/canonmn.cpp:232 -#, fuzzy -msgid "Color data" -msgstr "Väriavaruus" - -#: src/canonmn.cpp:234 -msgid "Unknown CanonMakerNote tag" -msgstr "" - -#: src/canonmn.cpp:250 src/minoltamn.cpp:78 src/minoltamn.cpp:246 -#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2060 -msgid "Economy" -msgstr "" - -#: src/canonmn.cpp:251 src/canonmn.cpp:349 src/fujimn.cpp:64 src/fujimn.cpp:84 -#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 -#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 -#: src/nikonmn.cpp:207 src/nikonmn.cpp:428 src/olympusmn.cpp:150 -#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1108 -#: src/olympusmn.cpp:1150 src/panasonicmn.cpp:56 src/panasonicmn.cpp:101 -#: src/panasonicmn.cpp:161 src/panasonicmn.cpp:197 src/pentaxmn.cpp:198 -#: src/pentaxmn.cpp:343 src/pentaxmn.cpp:356 src/pentaxmn.cpp:367 -#: src/sonymn.cpp:134 src/sonymn.cpp:216 src/sonymn.cpp:222 src/tags.cpp:1519 -#: src/tags.cpp:1526 -msgid "Normal" -msgstr "Normaali" - -#: src/canonmn.cpp:252 src/minoltamn.cpp:76 src/minoltamn.cpp:244 -#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2004 -#: src/minoltamn.cpp:2058 src/sonymn.cpp:135 -#, fuzzy -msgid "Fine" -msgstr "Välähti" - -#: src/canonmn.cpp:253 src/olympusmn.cpp:643 src/pentaxmn.cpp:156 -msgid "RAW" -msgstr "" - -#: src/canonmn.cpp:254 -msgid "Superfine" -msgstr "" - -#: src/canonmn.cpp:255 -#, fuzzy -msgid "Normal Movie" -msgstr "Normaali" - -#: src/canonmn.cpp:261 src/canonmn.cpp:357 src/canonmn.cpp:385 -#: src/canonmn.cpp:830 src/canonmn.cpp:1036 src/fujimn.cpp:71 -#: src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 -#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 -#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 -#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1119 -#: src/minoltamn.cpp:1182 src/minoltamn.cpp:1235 src/minoltamn.cpp:1976 -#: src/minoltamn.cpp:2043 src/minoltamn.cpp:2092 src/nikonmn.cpp:81 -#: src/nikonmn.cpp:445 src/olympusmn.cpp:94 src/olympusmn.cpp:156 -#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:605 -#: src/olympusmn.cpp:1196 src/olympusmn.cpp:1202 src/olympusmn.cpp:1203 -#: src/panasonicmn.cpp:64 src/panasonicmn.cpp:77 src/pentaxmn.cpp:56 -#: src/pentaxmn.cpp:211 src/pentaxmn.cpp:311 src/sonymn.cpp:57 -#: src/sonymn.cpp:90 src/sonymn.cpp:105 src/sonymn.cpp:163 src/sonymn.cpp:200 -#: src/sonymn.cpp:499 src/sonymn.cpp:516 src/tags.cpp:1403 src/tags.cpp:1488 -#: src/tags.cpp:1495 -msgid "Auto" -msgstr "" - -#: src/canonmn.cpp:263 src/olympusmn.cpp:532 -msgid "Red-eye" -msgstr "" - -#: src/canonmn.cpp:264 -msgid "Slow sync" -msgstr "" - -#: src/canonmn.cpp:265 -#, fuzzy -msgid "Auto + red-eye" -msgstr "Auto, välähti" - -#: src/canonmn.cpp:266 -msgid "On + red-eye" -msgstr "" - -#: src/canonmn.cpp:267 src/canonmn.cpp:268 src/minoltamn.cpp:1339 -#: src/nikonmn.cpp:904 src/olympusmn.cpp:144 -msgid "External" -msgstr "Ulkoinen" - -#: src/canonmn.cpp:273 -msgid "Single / timer" -msgstr "" - -#: src/canonmn.cpp:274 src/canonmn.cpp:288 src/canonmn.cpp:720 -#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1097 -#: src/minoltamn.cpp:1149 src/nikonmn.cpp:151 src/nikonmn.cpp:162 -#: src/pentaxmn.cpp:534 -msgid "Continuous" -msgstr "" - -#: src/canonmn.cpp:275 src/olympusmn.cpp:103 -#, fuzzy -msgid "Movie" -msgstr "Pieni" - -#: src/canonmn.cpp:276 -msgid "Continuous, speed priority" -msgstr "" - -#: src/canonmn.cpp:277 -msgid "Continuous, low" -msgstr "" - -#: src/canonmn.cpp:278 -msgid "Continuous, high" -msgstr "" - -#: src/canonmn.cpp:283 -msgid "One shot AF" -msgstr "Kertatarkennus, AF" - -#: src/canonmn.cpp:284 -msgid "AI servo AF" -msgstr "Jatkuva tarkennus, AF" - -#: src/canonmn.cpp:285 -msgid "AI focus AF" -msgstr "Vaihtuva tarkennus, AF" - -#: src/canonmn.cpp:286 src/canonmn.cpp:289 src/minoltamn.cpp:374 -msgid "Manual focus" -msgstr "Käsintarkennus, MF" - -#: src/canonmn.cpp:287 src/canonmn.cpp:719 src/sonymn.cpp:231 -msgid "Single" -msgstr "" - -#: src/canonmn.cpp:290 src/canonmn.cpp:291 src/canonmn.cpp:318 -#: src/canonmn.cpp:392 -#, fuzzy -msgid "Pan focus" -msgstr "Käsintarkennus, MF" - -#: src/canonmn.cpp:296 src/canonmn.cpp:1018 src/minoltamn.cpp:666 -#: src/minoltamn.cpp:852 src/sonymn.cpp:534 -msgid "Large" -msgstr "Suuri" - -#: src/canonmn.cpp:297 src/canonmn.cpp:762 src/canonmn.cpp:1019 -#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1222 -#: src/sonymn.cpp:535 -msgid "Medium" -msgstr "Keskikokoinen" - -#: src/canonmn.cpp:298 src/canonmn.cpp:1020 src/minoltamn.cpp:668 -#: src/minoltamn.cpp:854 src/minoltamn.cpp:1223 src/sonymn.cpp:536 -msgid "Small" -msgstr "Pieni" - -#: src/canonmn.cpp:299 src/canonmn.cpp:1021 -#, fuzzy -msgid "Medium 1" -msgstr "Keskikokoinen" - -#: src/canonmn.cpp:300 src/canonmn.cpp:1022 -#, fuzzy -msgid "Medium 2" -msgstr "Keskikokoinen" - -#: src/canonmn.cpp:301 src/canonmn.cpp:1023 -#, fuzzy -msgid "Medium 3" -msgstr "Keskikokoinen" - -#: src/canonmn.cpp:306 -msgid "Full auto" -msgstr "Täysautomatiikka" - -#: src/canonmn.cpp:307 src/canonmn.cpp:384 src/canonmn.cpp:708 -#: src/canonmn.cpp:1093 src/fujimn.cpp:110 src/fujimn.cpp:135 -#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 -#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 -#: src/minoltamn.cpp:876 src/minoltamn.cpp:1281 src/nikonmn.cpp:974 -#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 -#: src/panasonicmn.cpp:68 src/panasonicmn.cpp:71 src/panasonicmn.cpp:72 -#: src/panasonicmn.cpp:78 src/panasonicmn.cpp:111 src/pentaxmn.cpp:58 -#: src/pentaxmn.cpp:201 src/pentaxmn.cpp:316 src/pentaxmn.cpp:500 -#: src/pentaxmn.cpp:512 src/sigmamn.cpp:157 src/sonymn.cpp:119 -#: src/sonymn.cpp:164 src/sonymn.cpp:460 src/sonymn.cpp:517 src/tags.cpp:1402 -#: src/tags.cpp:1489 src/tags.cpp:1496 -msgid "Manual" -msgstr "Manuaalinen" - -#: src/canonmn.cpp:308 src/canonmn.cpp:1125 src/fujimn.cpp:117 -#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1887 -#: src/minoltamn.cpp:2039 src/olympusmn.cpp:98 src/pentaxmn.cpp:472 -#: src/pentaxmn.cpp:705 src/sonymn.cpp:478 src/sonymn.cpp:527 -#: src/tags.cpp:1502 -msgid "Landscape" -msgstr "Maisemakuva" - -#: src/canonmn.cpp:309 -msgid "Fast shutter" -msgstr "" - -#: src/canonmn.cpp:310 -msgid "Slow shutter" -msgstr "" - -#: src/canonmn.cpp:311 src/minoltamn.cpp:68 src/minoltamn.cpp:951 -#: src/minoltamn.cpp:2036 src/olympusmn.cpp:99 src/pentaxmn.cpp:478 -msgid "Night Scene" -msgstr "" - -#: src/canonmn.cpp:312 -msgid "Gray scale" -msgstr "" - -#: src/canonmn.cpp:313 src/canonmn.cpp:751 src/canonmn.cpp:1058 -#: src/minoltamn.cpp:61 src/nikonmn.cpp:190 src/nikonmn.cpp:677 -#: src/olympusmn.cpp:615 src/olympusmn.cpp:632 src/olympusmn.cpp:856 -#: src/olympusmn.cpp:871 src/panasonicmn.cpp:149 src/sonymn.cpp:488 -msgid "Sepia" -msgstr "Seepia" - -#: src/canonmn.cpp:314 src/canonmn.cpp:1111 src/canonmn.cpp:1124 -#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 -#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1886 -#: src/minoltamn.cpp:2034 src/olympusmn.cpp:96 src/olympusmn.cpp:613 -#: src/panasonicmn.cpp:102 src/pentaxmn.cpp:471 src/pentaxmn.cpp:704 -#: src/sonymn.cpp:106 src/sonymn.cpp:477 src/sonymn.cpp:523 src/tags.cpp:1503 -msgid "Portrait" -msgstr "Muotokuva" - -#: src/canonmn.cpp:315 src/fujimn.cpp:118 src/minoltamn.cpp:843 -#: src/minoltamn.cpp:2038 src/panasonicmn.cpp:104 src/sonymn.cpp:524 -msgid "Sports" -msgstr "Urheilukuva" - -#: src/canonmn.cpp:316 -msgid "Macro / close-up" -msgstr "Lähikuva" - -#: src/canonmn.cpp:317 src/fujimn.cpp:149 -msgid "Black & white" -msgstr "Mustavalko" - -#: src/canonmn.cpp:319 src/canonmn.cpp:748 src/olympusmn.cpp:134 -#: src/olympusmn.cpp:610 src/olympusmn.cpp:852 src/panasonicmn.cpp:199 -#: src/sonymn.cpp:476 src/sonymn.cpp:506 -msgid "Vivid" -msgstr "" - -#: src/canonmn.cpp:320 src/canonmn.cpp:749 src/canonmn.cpp:1126 -#: src/minoltamn.cpp:1892 src/minoltamn.cpp:1893 src/olympusmn.cpp:621 -#: src/olympusmn.cpp:631 src/olympusmn.cpp:861 src/olympusmn.cpp:870 -#: src/sonymn.cpp:483 src/sonymn.cpp:508 -msgid "Neutral" -msgstr "Neutraali" - -#: src/canonmn.cpp:321 -#, fuzzy -msgid "Flash off" -msgstr "Salaman tila" - -#: src/canonmn.cpp:322 -msgid "Long shutter" -msgstr "" - -#: src/canonmn.cpp:324 -#, fuzzy -msgid "Foliage" -msgstr "Malli" - -#: src/canonmn.cpp:325 src/olympusmn.cpp:106 -msgid "Indoor" -msgstr "" - -#: src/canonmn.cpp:326 src/fujimn.cpp:131 src/olympusmn.cpp:107 -#: src/panasonicmn.cpp:116 src/sonymn.cpp:117 -msgid "Fireworks" -msgstr "" - -#: src/canonmn.cpp:327 src/fujimn.cpp:129 src/olympusmn.cpp:129 -#: src/panasonicmn.cpp:128 src/sonymn.cpp:107 -msgid "Beach" -msgstr "" - -#: src/canonmn.cpp:328 src/canonmn.cpp:846 src/fujimn.cpp:132 -#: src/panasonicmn.cpp:127 src/sonymn.cpp:122 -msgid "Underwater" -msgstr "" - -#: src/canonmn.cpp:329 src/fujimn.cpp:130 src/olympusmn.cpp:130 -#: src/panasonicmn.cpp:118 src/sonymn.cpp:108 -msgid "Snow" -msgstr "" - -#: src/canonmn.cpp:330 -msgid "Kids & pets" -msgstr "" - -#: src/canonmn.cpp:331 -msgid "Night SnapShot" -msgstr "" - -#: src/canonmn.cpp:332 -msgid "Digital macro" -msgstr "Digitaalinen makro" - -#: src/canonmn.cpp:333 -#, fuzzy -msgid "My Colors" -msgstr "Väriavaruus" - -#: src/canonmn.cpp:334 src/minoltamn.cpp:343 -#, fuzzy -msgid "Still image" -msgstr "Näytekuva" - -#: src/canonmn.cpp:342 src/canonmn.cpp:343 src/properties.cpp:859 -#: src/properties.cpp:881 src/tags.cpp:1421 src/tags.cpp:1422 -msgid "Other" -msgstr "" - -#: src/canonmn.cpp:348 src/canonmn.cpp:763 src/canonmn.cpp:1101 -#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1164 -#: src/minoltamn.cpp:1170 src/minoltamn.cpp:1176 src/minoltamn.cpp:1345 -#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:206 -#: src/olympusmn.cpp:171 src/olympusmn.cpp:1134 src/panasonicmn.cpp:162 -#: src/panasonicmn.cpp:166 src/pentaxmn.cpp:342 src/pentaxmn.cpp:355 -#: src/sonymn.cpp:214 src/tags.cpp:1527 -msgid "Low" -msgstr "" - -#: src/canonmn.cpp:350 src/canonmn.cpp:1103 src/fujimn.cpp:85 -#: src/fujimn.cpp:94 src/minoltamn.cpp:1165 src/minoltamn.cpp:1171 -#: src/minoltamn.cpp:1177 src/nikonmn.cpp:71 src/nikonmn.cpp:79 -#: src/nikonmn.cpp:208 src/olympusmn.cpp:169 src/olympusmn.cpp:1136 -#: src/panasonicmn.cpp:55 src/panasonicmn.cpp:163 src/panasonicmn.cpp:168 -#: src/panasonicmn.cpp:169 src/pentaxmn.cpp:344 src/pentaxmn.cpp:357 -#: src/sonymn.cpp:217 src/tags.cpp:1528 -msgid "High" -msgstr "" - -#: src/canonmn.cpp:355 src/canonmn.cpp:760 src/canonmn.cpp:764 -#: src/canonmn.cpp:769 src/canonmn.cpp:1099 src/nikonmn.cpp:671 -#: src/nikonmn.cpp:686 src/nikonmn.cpp:910 src/nikonmn.cpp:963 -#: src/nikonmn.cpp:1218 src/olympusmn.cpp:620 src/olympusmn.cpp:630 -#: src/sonymn.cpp:129 src/sonymn.cpp:136 src/sonymn.cpp:144 src/sonymn.cpp:181 -#: src/sonymn.cpp:194 src/sonymn.cpp:201 src/sonymn.cpp:209 src/sonymn.cpp:215 -#: src/sonymn.cpp:226 src/sonymn.cpp:232 src/sonymn.cpp:239 -msgid "n/a" -msgstr "–" - -#: src/canonmn.cpp:356 -#, fuzzy -msgid "Auto High" -msgstr "Auto, välähti" - -#: src/canonmn.cpp:374 src/sonymn.cpp:186 -msgid "Default" -msgstr "Oletus" - -#: src/canonmn.cpp:375 src/minoltamn.cpp:265 src/minoltamn.cpp:883 -#: src/minoltamn.cpp:933 src/minoltamn.cpp:1129 src/minoltamn.cpp:1938 -#: src/olympusmn.cpp:492 src/panasonicmn.cpp:110 src/pentaxmn.cpp:306 -#: src/sonymn.cpp:470 src/tags.cpp:1417 -msgid "Spot" -msgstr "Piste" - -#: src/canonmn.cpp:376 src/sigmamn.cpp:168 src/tags.cpp:1415 -msgid "Average" -msgstr "" - -#: src/canonmn.cpp:377 -msgid "Evaluative" -msgstr "Arvioiva" - -#: src/canonmn.cpp:378 src/tags.cpp:1420 -msgid "Partial" -msgstr "Osa-alue" - -#: src/canonmn.cpp:379 src/minoltamn.cpp:882 -msgid "Center weighted" -msgstr "Keskustaa painottava" - -#: src/canonmn.cpp:386 -msgid "Not known" -msgstr "Ei tiedossa" - -#: src/canonmn.cpp:387 src/canonmn.cpp:776 src/fujimn.cpp:207 -#: src/minoltamn.cpp:847 src/minoltamn.cpp:2041 src/olympusmn.cpp:109 -#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:109 -#: src/panasonicmn.cpp:213 src/panasonicmn.cpp:214 src/panasonicmn.cpp:243 -#: src/pentaxmn.cpp:199 src/pentaxmn.cpp:473 src/sonymn.cpp:390 -#: src/sonymn.cpp:391 src/sonymn.cpp:528 src/tags.cpp:1534 -msgid "Macro" -msgstr "Makro" - -#: src/canonmn.cpp:388 -msgid "Very close" -msgstr "" - -#: src/canonmn.cpp:389 -#, fuzzy -msgid "Close" -msgstr "Väriavaruus" - -#: src/canonmn.cpp:390 -#, fuzzy -msgid "Middle range" -msgstr "Malli" - -#: src/canonmn.cpp:391 -msgid "Far range" -msgstr "" - -#: src/canonmn.cpp:394 src/pentaxmn.cpp:200 src/tags.cpp:2568 -msgid "Infinity" -msgstr "" - -#: src/canonmn.cpp:399 -#, fuzzy -msgid "Manual AF point selection" -msgstr "Automaattinen AF-pisteen valinta" - -#: src/canonmn.cpp:400 -msgid "None (MF)" -msgstr "Ei mitään (MF)" - -#: src/canonmn.cpp:401 -msgid "Auto-selected" -msgstr "Automaattinen" - -#: src/canonmn.cpp:402 src/minoltamn.cpp:287 src/minoltamn.cpp:706 -#: src/minoltamn.cpp:921 src/minoltamn.cpp:1953 src/nikonmn.cpp:103 -#: src/olympusmn.cpp:1491 src/pentaxmn.cpp:222 src/pentaxmn.cpp:237 -msgid "Right" -msgstr "" - -#: src/canonmn.cpp:403 src/canonmn.cpp:741 src/minoltamn.cpp:284 -#: src/minoltamn.cpp:703 src/minoltamn.cpp:1950 src/nikonmn.cpp:99 -#: src/nikonmn.cpp:792 src/nikonmn.cpp:807 src/pentaxmn.cpp:220 -#: src/pentaxmn.cpp:236 src/sigmamn.cpp:169 -msgid "Center" -msgstr "" - -#: src/canonmn.cpp:404 src/minoltamn.cpp:291 src/minoltamn.cpp:710 -#: src/minoltamn.cpp:925 src/minoltamn.cpp:1957 src/nikonmn.cpp:102 -#: src/pentaxmn.cpp:218 src/pentaxmn.cpp:235 -#, fuzzy -msgid "Left" -msgstr "Polttoväli" - -#: src/canonmn.cpp:405 -msgid "Auto AF point selection" -msgstr "Automaattinen AF-pisteen valinta" - -#: src/canonmn.cpp:410 -msgid "Easy shooting (Auto)" -msgstr "Täysautomaatti" - -#: src/canonmn.cpp:411 -msgid "Program (P)" -msgstr "Ohjelmoitu AE (P)" - -#: src/canonmn.cpp:412 -msgid "Shutter priority (Tv)" -msgstr "Valotusajan esivalinta (Tv)" - -#: src/canonmn.cpp:413 -msgid "Aperture priority (Av)" -msgstr "Aukon esivalinta (Av)" - -#: src/canonmn.cpp:414 -msgid "Manual (M)" -msgstr "Käsisäätöinen valotus (M)" - -#: src/canonmn.cpp:415 -msgid "A-DEP" -msgstr "Syväterävyysohjelma AE" - -#: src/canonmn.cpp:416 -#, fuzzy -msgid "M-DEP" -msgstr "Syväterävyysohjelma AE" - -#: src/canonmn.cpp:700 src/minoltamn.cpp:297 src/nikonmn.cpp:142 -msgid "Did not fire" -msgstr "Ei välähtänyt" - -#: src/canonmn.cpp:701 src/minoltamn.cpp:298 src/nikonmn.cpp:981 -#: src/tags.cpp:365 -msgid "Fired" -msgstr "Välähti" - -#: src/canonmn.cpp:706 src/olympusmn.cpp:1009 -msgid "External flash" -msgstr "Ulkoinen salama" - -#: src/canonmn.cpp:707 src/olympusmn.cpp:1013 -msgid "Internal flash" -msgstr "Sisäinen salama" - -#: src/canonmn.cpp:709 src/olympusmn.cpp:558 src/sonymn.cpp:494 -msgid "TTL" -msgstr "" - -#: src/canonmn.cpp:710 -msgid "A-TTL" -msgstr "" - -#: src/canonmn.cpp:711 -msgid "E-TTL" -msgstr "" - -#: src/canonmn.cpp:712 -msgid "FP sync enabled" -msgstr "" - -#: src/canonmn.cpp:713 -msgid "2nd-curtain sync used" -msgstr "" - -#: src/canonmn.cpp:714 -#, fuzzy -msgid "FP sync used" -msgstr "Käytetty AF-piste" - -#: src/canonmn.cpp:725 -#, fuzzy -msgid "Normal AE" -msgstr "Normaali" - -#: src/canonmn.cpp:726 src/minoltamn.cpp:527 src/minoltamn.cpp:769 -#: src/minoltamn.cpp:1045 src/pentaxmn.cpp:919 src/pentaxmn.cpp:920 -#, fuzzy -msgid "Exposure compensation" -msgstr "Valotustila" - -#: src/canonmn.cpp:727 src/minoltamn.cpp:1575 src/pentaxmn.cpp:1021 -#: src/pentaxmn.cpp:1022 -msgid "AE lock" -msgstr "Valotuksen lukitus" - -#: src/canonmn.cpp:728 -msgid "AE lock + exposure compensation" -msgstr "" - -#: src/canonmn.cpp:729 -msgid "No AE" -msgstr "" - -#: src/canonmn.cpp:736 -#, fuzzy -msgid "On, shot only" -msgstr "Kertatarkennus, AF" - -#: src/canonmn.cpp:742 src/canonmn.cpp:794 src/nikonmn.cpp:823 -#: src/olympusmn.cpp:1008 -msgid "AF Point" -msgstr "AF-piste" - -#: src/canonmn.cpp:750 -#, fuzzy -msgid "Smooth" -msgstr "kuukausi" - -#: src/canonmn.cpp:752 src/nikonmn.cpp:676 -msgid "B&W" -msgstr "" - -#: src/canonmn.cpp:753 src/canonmn.cpp:836 src/canonmn.cpp:1094 -#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 -#: src/minoltamn.cpp:1184 src/minoltamn.cpp:1187 src/minoltamn.cpp:2100 -#: src/pentaxmn.cpp:723 -msgid "Custom" -msgstr "" - -#: src/canonmn.cpp:754 src/canonmn.cpp:755 -msgid "My color data" -msgstr "" - -#: src/canonmn.cpp:761 src/pentaxmn.cpp:163 -#, fuzzy -msgid "Full" -msgstr "Täysautomatiikka" - -#: src/canonmn.cpp:770 -msgid "sRAW1 (mRAW)" -msgstr "" - -#: src/canonmn.cpp:771 -msgid "sRAW2 (sRAW)" -msgstr "" - -#: src/canonmn.cpp:777 -msgid "Selftimer" -msgstr "" - -#: src/canonmn.cpp:777 src/panasonicmn.cpp:259 -#, fuzzy -msgid "Self timer" -msgstr "Sarjanumero" - -#: src/canonmn.cpp:778 src/fujimn.cpp:186 src/minoltamn.cpp:1484 -#: src/minoltamn.cpp:1485 src/nikonmn.cpp:222 src/nikonmn.cpp:459 -#: src/nikonmn.cpp:527 src/olympusmn.cpp:198 src/panasonicmn.cpp:236 -#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:647 -#: src/sonymn.cpp:648 -msgid "Quality" -msgstr "Kuvanlaatu" - -#: src/canonmn.cpp:779 src/fujimn.cpp:201 src/minoltamn.cpp:493 -#: src/minoltamn.cpp:762 src/nikonmn.cpp:566 src/olympusmn.cpp:279 -#: src/olympusmn.cpp:670 -msgid "Flash Mode" -msgstr "Salaman tila" - -#: src/canonmn.cpp:779 -#, fuzzy -msgid "Flash mode setting" -msgstr "Salaman malli" - -#: src/canonmn.cpp:780 src/minoltamn.cpp:505 src/minoltamn.cpp:1427 -#: src/olympusmn.cpp:700 src/sigmamn.cpp:59 src/sonymn.cpp:559 -#: src/sonymn.cpp:560 -#, fuzzy -msgid "Drive Mode" -msgstr "Makrotila" - -#: src/canonmn.cpp:780 -msgid "Drive mode setting" -msgstr "" - -#: src/canonmn.cpp:782 src/fujimn.cpp:210 src/minoltamn.cpp:622 -#: src/minoltamn.cpp:753 src/minoltamn.cpp:1035 src/minoltamn.cpp:1379 -#: src/nikonmn.cpp:474 src/olympusmn.cpp:300 src/olympusmn.cpp:664 -#: src/panasonicmn.cpp:240 src/sonymn.cpp:396 src/sonymn.cpp:397 -#: src/sonymn.cpp:566 src/sonymn.cpp:567 src/sonymn.cpp:672 src/sonymn.cpp:673 -msgid "Focus Mode" -msgstr "Tarkennustapa" - -#: src/canonmn.cpp:782 -#, fuzzy -msgid "Focus mode setting" -msgstr "Tarkennustapa" - -#: src/canonmn.cpp:785 src/minoltamn.cpp:499 src/minoltamn.cpp:744 -#: src/minoltamn.cpp:987 -msgid "Image Size" -msgstr "Kuvan koko" - -#: src/canonmn.cpp:786 -#, fuzzy -msgid "Easy Mode" -msgstr "Salaman tila" - -#: src/canonmn.cpp:786 -#, fuzzy -msgid "Easy shooting mode" -msgstr "Täysautomaatti" - -#: src/canonmn.cpp:787 src/minoltamn.cpp:523 src/nikonmn.cpp:255 -#: src/nikonmn.cpp:480 src/nikonmn.cpp:565 src/olympusmn.cpp:207 -msgid "Digital Zoom" -msgstr "Digitaalinen zoom" - -#: src/canonmn.cpp:787 src/minoltamn.cpp:524 src/pentaxmn.cpp:944 -#: src/pentaxmn.cpp:945 -msgid "Digital zoom" -msgstr "Digitaalinen zoom" - -#: src/canonmn.cpp:788 src/minoltamn.cpp:386 src/minoltamn.cpp:574 -#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 -#: src/minoltamn.cpp:1017 src/minoltamn.cpp:1018 src/minoltamn.cpp:1415 -#: src/minoltamn.cpp:1416 src/nikonmn.cpp:697 src/olympusmn.cpp:390 -#: src/olympusmn.cpp:800 src/panasonicmn.cpp:257 src/panasonicmn.cpp:268 -#: src/pentaxmn.cpp:850 src/pentaxmn.cpp:950 src/pentaxmn.cpp:951 -#: src/properties.cpp:443 src/properties.cpp:589 src/sigmamn.cpp:89 -#: src/sigmamn.cpp:90 src/sonymn.cpp:324 src/sonymn.cpp:593 src/sonymn.cpp:594 -#: src/sonymn.cpp:699 src/sonymn.cpp:700 src/tags.cpp:1807 -msgid "Contrast" -msgstr "Kontrasti" - -#: src/canonmn.cpp:788 src/fujimn.cpp:199 src/olympusmn.cpp:391 -#: src/olympusmn.cpp:681 src/olympusmn.cpp:1080 src/panasonicmn.cpp:257 -#, fuzzy -msgid "Contrast setting" -msgstr "Kontrasti" - -#: src/canonmn.cpp:789 src/minoltamn.cpp:387 src/minoltamn.cpp:571 -#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 -#: src/minoltamn.cpp:1020 src/minoltamn.cpp:1021 src/minoltamn.cpp:1418 -#: src/minoltamn.cpp:1419 src/nikonmn.cpp:578 src/nikonmn.cpp:597 -#: src/nikonmn.cpp:699 src/olympusmn.cpp:799 src/olympusmn.cpp:898 -#: src/panasonicmn.cpp:271 src/pentaxmn.cpp:844 src/pentaxmn.cpp:947 -#: src/pentaxmn.cpp:948 src/properties.cpp:461 src/properties.cpp:590 -#: src/sigmamn.cpp:98 src/sigmamn.cpp:99 src/sonymn.cpp:327 src/sonymn.cpp:596 -#: src/sonymn.cpp:597 src/sonymn.cpp:702 src/sonymn.cpp:703 src/tags.cpp:1811 -msgid "Saturation" -msgstr "Värikylläisyys" - -#: src/canonmn.cpp:789 src/olympusmn.cpp:1078 -#, fuzzy -msgid "Saturation setting" -msgstr "Värikylläisyys" - -#: src/canonmn.cpp:790 src/canonmn.cpp:1134 src/fujimn.cpp:189 -#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 -#: src/minoltamn.cpp:775 src/minoltamn.cpp:1014 src/minoltamn.cpp:1015 -#: src/minoltamn.cpp:1412 src/minoltamn.cpp:1413 src/nikonmn.cpp:696 -#: src/olympusmn.cpp:801 src/panasonicmn.cpp:272 src/pentaxmn.cpp:847 -#: src/pentaxmn.cpp:953 src/pentaxmn.cpp:954 src/properties.cpp:464 -#: src/properties.cpp:591 src/sigmamn.cpp:101 src/sigmamn.cpp:102 -#: src/sonymn.cpp:590 src/sonymn.cpp:591 src/sonymn.cpp:696 src/sonymn.cpp:697 -#: src/tags.cpp:1815 -msgid "Sharpness" -msgstr "Terävyys" - -#: src/canonmn.cpp:790 src/fujimn.cpp:190 src/olympusmn.cpp:682 -#: src/olympusmn.cpp:1081 -#, fuzzy -msgid "Sharpness setting" -msgstr "Terävyys" - -#: src/canonmn.cpp:791 src/minoltamn.cpp:765 src/minoltamn.cpp:1008 -msgid "ISO Speed Mode" -msgstr "ISO-herkkyys" - -#: src/canonmn.cpp:791 src/minoltamn.cpp:766 src/minoltamn.cpp:1009 -#: src/nikonmn.cpp:217 src/nikonmn.cpp:469 src/nikonmn.cpp:525 -#: src/panasonicmn.cpp:344 -#, fuzzy -msgid "ISO speed setting" -msgstr "ISO-herkkyys" - -#: src/canonmn.cpp:792 src/minoltamn.cpp:508 src/minoltamn.cpp:1005 -#: src/minoltamn.cpp:1394 src/olympusmn.cpp:661 src/properties.cpp:561 -#: src/sigmamn.cpp:77 src/sonymn.cpp:575 src/sonymn.cpp:576 src/sonymn.cpp:681 -#: src/sonymn.cpp:682 src/tags.cpp:825 src/tags.cpp:1646 -msgid "Metering Mode" -msgstr "Mittaustapa" - -#: src/canonmn.cpp:792 -#, fuzzy -msgid "Metering mode setting" -msgstr "Mittaustapa" - -#: src/canonmn.cpp:793 -#, fuzzy -msgid "Focus Type" -msgstr "Tarkennustapa" - -#: src/canonmn.cpp:793 -msgid "Focus type setting" -msgstr "" - -#: src/canonmn.cpp:794 -msgid "AF point selected" -msgstr "Valittu AF-piste" - -#: src/canonmn.cpp:795 src/properties.cpp:550 src/sonymn.cpp:632 -#: src/sonymn.cpp:633 src/sonymn.cpp:708 src/sonymn.cpp:709 src/tags.cpp:799 -#: src/tags.cpp:1548 -msgid "Exposure Program" -msgstr "Kuvaustapa" - -#: src/canonmn.cpp:795 -#, fuzzy -msgid "Exposure mode setting" -msgstr "Valotustila" - -#: src/canonmn.cpp:797 src/nikonmn.cpp:562 src/olympusmn.cpp:745 -#: src/panasonicmn.cpp:276 -msgid "Lens Type" -msgstr "Linssin tyyppi" - -#: src/canonmn.cpp:797 src/nikonmn.cpp:562 src/olympusmn.cpp:745 -#: src/panasonicmn.cpp:276 src/pentaxmn.cpp:1008 src/pentaxmn.cpp:1009 -msgid "Lens type" -msgstr "Linssin tyyppi" - -#: src/canonmn.cpp:798 src/nikonmn.cpp:563 src/properties.cpp:633 -msgid "Lens" -msgstr "Linssi" - -#: src/canonmn.cpp:798 -msgid "" -"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " -"per mm" -msgstr "" - -#: src/canonmn.cpp:799 -msgid "Short Focal" -msgstr "" - -#: src/canonmn.cpp:799 -#, fuzzy -msgid "Short focal" -msgstr "Käytetty AF-piste" - -#: src/canonmn.cpp:800 -#, fuzzy -msgid "Focal Units" -msgstr "Polttoväli" - -#: src/canonmn.cpp:800 -#, fuzzy -msgid "Focal units" -msgstr "Polttoväli" - -#: src/canonmn.cpp:801 src/minoltamn.cpp:553 -#, fuzzy -msgid "Max Aperture" -msgstr "Aukko" - -#: src/canonmn.cpp:801 src/minoltamn.cpp:554 -#, fuzzy -msgid "Max aperture" -msgstr "Aukko" - -#: src/canonmn.cpp:802 -#, fuzzy -msgid "Min Aperture" -msgstr "Aukko" - -#: src/canonmn.cpp:802 -#, fuzzy -msgid "Min aperture" -msgstr "Aukko" - -#: src/canonmn.cpp:803 -#, fuzzy -msgid "Flash Activity" -msgstr "Salaman tyyppi" - -#: src/canonmn.cpp:803 -#, fuzzy -msgid "Flash activity" -msgstr "Salaman tyyppi" - -#: src/canonmn.cpp:804 -#, fuzzy -msgid "Flash Details" -msgstr "Salamavalotuksen korjaus" - -#: src/canonmn.cpp:804 -#, fuzzy -msgid "Flash details" -msgstr "Salaman malli" - -#: src/canonmn.cpp:807 -msgid "Focus Continuous" -msgstr "" - -#: src/canonmn.cpp:807 -msgid "Focus continuous setting" -msgstr "" - -#: src/canonmn.cpp:808 -#, fuzzy -msgid "AESetting" -msgstr "Asetukset" - -#: src/canonmn.cpp:808 -#, fuzzy -msgid "AE setting" -msgstr "Asetukset" - -#: src/canonmn.cpp:809 src/minoltamn.cpp:147 src/minoltamn.cpp:814 -#: src/minoltamn.cpp:1071 src/minoltamn.cpp:1562 src/nikonmn.cpp:599 -#: src/olympusmn.cpp:703 src/olympusmn.cpp:1016 src/panasonicmn.cpp:242 -#: src/sonymn.cpp:372 src/sonymn.cpp:635 src/sonymn.cpp:636 -msgid "Image Stabilization" -msgstr "Kuvan vakautus" - -#: src/canonmn.cpp:809 src/minoltamn.cpp:148 src/minoltamn.cpp:815 -#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1563 src/nikonmn.cpp:599 -#: src/olympusmn.cpp:703 src/olympusmn.cpp:1016 src/panasonicmn.cpp:242 -#: src/sonymn.cpp:373 -msgid "Image stabilization" -msgstr "Kuvan vakautus" - -#: src/canonmn.cpp:810 -#, fuzzy -msgid "Display Aperture" -msgstr "Aukko" - -#: src/canonmn.cpp:810 -#, fuzzy -msgid "Display aperture" -msgstr "Aukko" - -#: src/canonmn.cpp:811 -msgid "Zoom Source Width" -msgstr "" - -#: src/canonmn.cpp:811 -msgid "Zoom source width" -msgstr "" - -#: src/canonmn.cpp:812 -msgid "Zoom Target Width" -msgstr "" - -#: src/canonmn.cpp:812 -msgid "Zoom target width" -msgstr "" - -#: src/canonmn.cpp:814 -#, fuzzy -msgid "Spot Metering Mode" -msgstr "Mittaustapa" - -#: src/canonmn.cpp:814 -#, fuzzy -msgid "Spot metering mode" -msgstr "Mittaustapa" - -#: src/canonmn.cpp:815 -msgid "Photo Effect" -msgstr "" - -#: src/canonmn.cpp:815 -msgid "Photo effect" -msgstr "" - -#: src/canonmn.cpp:816 -#, fuzzy -msgid "Manual Flash Output" -msgstr "Manuaalinen" - -#: src/canonmn.cpp:816 -#, fuzzy -msgid "Manual flash output" -msgstr "Käsintarkennus, MF" - -#: src/canonmn.cpp:817 -#, fuzzy -msgid "Color Tone" -msgstr "Väriavaruus" - -#: src/canonmn.cpp:817 -#, fuzzy -msgid "Color tone" -msgstr "Väriavaruus" - -#: src/canonmn.cpp:818 -msgid "SRAW Quality Tone" -msgstr "" - -#: src/canonmn.cpp:818 -#, fuzzy -msgid "SRAW quality" -msgstr "Kuvan laatu" - -#: src/canonmn.cpp:820 -#, fuzzy -msgid "Unknown Canon Camera Settings 1 tag" -msgstr "Kameran asetukset" - -#: src/canonmn.cpp:831 -msgid "Sunny" -msgstr "Päivänvalo" - -#: src/canonmn.cpp:832 src/fujimn.cpp:73 src/minoltamn.cpp:220 -#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1194 -#: src/minoltamn.cpp:2095 src/nikonmn.cpp:450 src/olympusmn.cpp:1041 -#: src/panasonicmn.cpp:66 src/pentaxmn.cpp:321 src/sonymn.cpp:166 -msgid "Cloudy" -msgstr "Pilvinen" - -#: src/canonmn.cpp:833 src/minoltamn.cpp:221 src/minoltamn.cpp:686 -#: src/minoltamn.cpp:872 src/minoltamn.cpp:1196 src/minoltamn.cpp:2097 -#: src/pentaxmn.cpp:315 -msgid "Tungsten" -msgstr "Keinovalo" - -#: src/canonmn.cpp:834 src/minoltamn.cpp:223 src/minoltamn.cpp:687 -#: src/minoltamn.cpp:873 src/minoltamn.cpp:1197 src/minoltamn.cpp:2099 -#: src/nikonmn.cpp:449 src/pentaxmn.cpp:314 src/tags.cpp:1429 -msgid "Fluorescent" -msgstr "Valkoinen loisteputki" - -#: src/canonmn.cpp:837 src/minoltamn.cpp:57 src/minoltamn.cpp:1890 -#: src/sonymn.cpp:481 -msgid "Black & White" -msgstr "Mustavalkoinen" - -#: src/canonmn.cpp:838 src/minoltamn.cpp:684 src/minoltamn.cpp:871 -#: src/minoltamn.cpp:1195 src/minoltamn.cpp:2096 src/olympusmn.cpp:1040 -#: src/pentaxmn.cpp:313 src/tags.cpp:1434 -msgid "Shade" -msgstr "Varjo" - -#: src/canonmn.cpp:839 -msgid "Manual Temperature (Kelvin)" -msgstr "Oma asetus (Kelvin)" - -#: src/canonmn.cpp:840 -msgid "PC Set 1" -msgstr "" - -#: src/canonmn.cpp:841 -msgid "PC Set 2" -msgstr "" - -#: src/canonmn.cpp:842 -msgid "PC Set 3" -msgstr "" - -#: src/canonmn.cpp:843 -#, fuzzy -msgid "Daylight Fluorescent" -msgstr "Valkoinen loisteputki" - -#: src/canonmn.cpp:844 src/properties.cpp:791 -msgid "Custom 1" -msgstr "" - -#: src/canonmn.cpp:845 src/minoltamn.cpp:225 src/properties.cpp:792 -msgid "Custom 2" -msgstr "" - -#: src/canonmn.cpp:847 src/canonmn.cpp:848 src/minoltamn.cpp:226 -#: src/properties.cpp:793 -msgid "Custom 3" -msgstr "" - -#: src/canonmn.cpp:849 -msgid "PC Set 4" -msgstr "" - -#: src/canonmn.cpp:850 -msgid "PC Set 5" -msgstr "" - -#: src/canonmn.cpp:855 src/canonmn.cpp:974 src/canonmn.cpp:982 -msgid "left" -msgstr "" - -#: src/canonmn.cpp:856 src/canonmn.cpp:971 src/canonmn.cpp:983 -msgid "center" -msgstr "" - -#: src/canonmn.cpp:857 src/canonmn.cpp:968 src/canonmn.cpp:984 -#, fuzzy -msgid "right" -msgstr "Omistusoikeus" - -#: src/canonmn.cpp:884 -msgid "ISO Speed Used" -msgstr "ISO-herkkyys" - -#: src/canonmn.cpp:884 -msgid "ISO speed used" -msgstr "ISO-herkkyys" - -#: src/canonmn.cpp:885 -msgid "Measured EV" -msgstr "" - -#: src/canonmn.cpp:886 -#, fuzzy -msgid "Target Aperture" -msgstr "Aukko" - -#: src/canonmn.cpp:887 -#, fuzzy -msgid "Target Shutter Speed" -msgstr "Valotusaika" - -#: src/canonmn.cpp:887 -#, fuzzy -msgid "Target shutter speed" -msgstr "Valotusaika" - -#: src/canonmn.cpp:889 src/fujimn.cpp:192 src/minoltamn.cpp:177 -#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:993 -#: src/minoltamn.cpp:1376 src/nikonmn.cpp:225 src/nikonmn.cpp:471 -#: src/nikonmn.cpp:528 src/olympusmn.cpp:330 src/olympusmn.cpp:880 -#: src/panasonicmn.cpp:238 src/properties.cpp:473 src/properties.cpp:582 -#: src/sigmamn.cpp:71 src/sonymn.cpp:289 src/tags.cpp:1785 -msgid "White Balance" -msgstr "Valkotasapaino" - -#: src/canonmn.cpp:889 src/fujimn.cpp:193 src/minoltamn.cpp:1443 -#: src/panasonicmn.cpp:238 -#, fuzzy -msgid "White balance setting" -msgstr "Valkotasapaino" - -#: src/canonmn.cpp:891 -msgid "Sequence" -msgstr "" - -#: src/canonmn.cpp:891 -msgid "Sequence number (if in a continuous burst)" -msgstr "" - -#: src/canonmn.cpp:896 -msgid "AF Point Used" -msgstr "Käytetty AF-piste" - -#: src/canonmn.cpp:896 -msgid "AF point used" -msgstr "Käytetty AF-piste" - -#: src/canonmn.cpp:897 src/olympusmn.cpp:372 -msgid "Flash Bias" -msgstr "Salamavalotuksen korjaus" - -#: src/canonmn.cpp:901 src/properties.cpp:560 src/tags.cpp:824 -#: src/tags.cpp:1643 -msgid "Subject Distance" -msgstr "Kohteen etäisyys" - -#: src/canonmn.cpp:901 -msgid "Subject distance (units are not clear)" -msgstr "" - -#: src/canonmn.cpp:903 src/olympusmn.cpp:273 src/properties.cpp:556 -#: src/tags.cpp:820 -msgid "Aperture Value" -msgstr "Aukko" - -#: src/canonmn.cpp:904 src/properties.cpp:555 src/tags.cpp:819 -msgid "Shutter Speed Value" -msgstr "Valotusaika" - -#: src/canonmn.cpp:904 src/tags.cpp:1623 -msgid "Shutter speed" -msgstr "Valotusaika" - -#: src/canonmn.cpp:905 -msgid "Measured EV 2" -msgstr "" - -#: src/canonmn.cpp:910 -#, fuzzy -msgid "Unknown Canon Camera Settings 2 tag" -msgstr "Kameran asetukset" - -#: src/canonmn.cpp:920 src/olympusmn.cpp:1164 -msgid "Left to right" -msgstr "" - -#: src/canonmn.cpp:921 src/olympusmn.cpp:1165 -msgid "Right to left" -msgstr "" - -#: src/canonmn.cpp:922 src/olympusmn.cpp:1166 -msgid "Bottom to top" -msgstr "" - -#: src/canonmn.cpp:923 src/olympusmn.cpp:1167 -msgid "Top to bottom" -msgstr "" - -#: src/canonmn.cpp:924 -msgid "2x2 matrix (Clockwise)" -msgstr "" - -#: src/canonmn.cpp:929 -#, fuzzy -msgid "Panorama Frame" -msgstr "Panoraama" - -#: src/canonmn.cpp:929 -#, fuzzy -msgid "Panorama frame number" -msgstr "Kameran sarjanumero" - -#: src/canonmn.cpp:930 -#, fuzzy -msgid "Panorama Direction" -msgstr "Panoraama" - -#: src/canonmn.cpp:930 -#, fuzzy -msgid "Panorama direction" -msgstr "Panoraama" - -#: src/canonmn.cpp:932 -msgid "Unknown Canon Panorama tag" -msgstr "" - -#: src/canonmn.cpp:942 src/canonmn.cpp:1072 src/minoltamn.cpp:807 -#: src/minoltamn.cpp:1068 src/minoltamn.cpp:1493 src/nikonmn.cpp:579 -#: src/olympusmn.cpp:438 src/olympusmn.cpp:602 src/olympusmn.cpp:685 -#: src/olympusmn.cpp:804 src/olympusmn.cpp:819 src/olympusmn.cpp:889 -#: src/olympusmn.cpp:974 -msgid "Noise Reduction" -msgstr "" - -#: src/canonmn.cpp:942 -#, fuzzy -msgid "Long exposure noise reduction" -msgstr "Päällä, punasilmäisyyden esto" - -#: src/canonmn.cpp:943 -#, fuzzy -msgid "Shutter Ae Lock" -msgstr "Valotusaika" - -#: src/canonmn.cpp:943 -msgid "Shutter/AE lock buttons" -msgstr "" - -#: src/canonmn.cpp:944 -msgid "Mirror Lockup" -msgstr "" - -#: src/canonmn.cpp:944 -msgid "Mirror lockup" -msgstr "" - -#: src/canonmn.cpp:945 src/sonymn.cpp:650 src/sonymn.cpp:651 -msgid "Exposure Level Increments" -msgstr "" - -#: src/canonmn.cpp:945 -msgid "Tv/Av and exposure level" -msgstr "" - -#: src/canonmn.cpp:946 src/minoltamn.cpp:1520 -msgid "AF Assist" -msgstr "" - -#: src/canonmn.cpp:946 -msgid "AF assist light" -msgstr "" - -#: src/canonmn.cpp:947 -#, fuzzy -msgid "Flash Sync Speed Av" -msgstr "Salaman tyyppi" - -#: src/canonmn.cpp:947 -#, fuzzy -msgid "Shutter speed in Av mode" -msgstr "Valotusaika" - -#: src/canonmn.cpp:948 -msgid "AEB Sequence" -msgstr "" - -#: src/canonmn.cpp:948 -msgid "AEB sequence/auto cancellation" -msgstr "" - -#: src/canonmn.cpp:949 -#, fuzzy -msgid "Shutter Curtain Sync" -msgstr "Valotusajan esivalinta (Tv)" - -#: src/canonmn.cpp:949 -#, fuzzy -msgid "Shutter curtain sync" -msgstr "Valotusajan esivalinta (Tv)" - -#: src/canonmn.cpp:950 -#, fuzzy -msgid "Lens AF Stop Button" -msgstr "Linssin tyyppi" - -#: src/canonmn.cpp:950 -msgid "Lens AF stop button Fn. Switch" -msgstr "" - -#: src/canonmn.cpp:951 -msgid "Fill Flash Auto Reduction" -msgstr "" - -#: src/canonmn.cpp:951 -msgid "Auto reduction of fill flash" -msgstr "" - -#: src/canonmn.cpp:952 -msgid "Menu Button Return" -msgstr "" - -#: src/canonmn.cpp:952 -msgid "Menu button return position" -msgstr "" - -#: src/canonmn.cpp:953 -msgid "Set Button Function" -msgstr "" - -#: src/canonmn.cpp:953 -msgid "SET button func. when shooting" -msgstr "" - -#: src/canonmn.cpp:954 -msgid "Sensor Cleaning" -msgstr "" - -#: src/canonmn.cpp:954 -msgid "Sensor cleaning" -msgstr "" - -#: src/canonmn.cpp:955 -msgid "Superimposed Display" -msgstr "" - -#: src/canonmn.cpp:955 -msgid "Superimposed display" -msgstr "" - -#: src/canonmn.cpp:956 -msgid "Shutter Release No CF Card" -msgstr "" - -#: src/canonmn.cpp:956 -msgid "Shutter Release W/O CF Card" -msgstr "" - -#: src/canonmn.cpp:958 -msgid "Unknown Canon Custom Function tag" -msgstr "" - -#: src/canonmn.cpp:969 -msgid "mid-right" -msgstr "" - -#: src/canonmn.cpp:970 src/canonmn.cpp:987 -msgid "bottom" -msgstr "" - -#: src/canonmn.cpp:972 src/canonmn.cpp:979 -msgid "top" -msgstr "" - -#: src/canonmn.cpp:973 -msgid "mid-left" -msgstr "" - -#: src/canonmn.cpp:980 -msgid "upper-left" -msgstr "" - -#: src/canonmn.cpp:981 -#, fuzzy -msgid "upper-right" -msgstr "Omistusoikeus" - -#: src/canonmn.cpp:985 -msgid "lower-left" -msgstr "" - -#: src/canonmn.cpp:986 -#, fuzzy -msgid "lower-right" -msgstr "Omistusoikeus" - -#: src/canonmn.cpp:992 src/olympusmn.cpp:225 src/olympusmn.cpp:405 -#: src/panasonicmn.cpp:341 src/properties.cpp:480 src/tags.cpp:415 -#, fuzzy -msgid "Image Width" -msgstr "Kuvan laatu" - -#: src/canonmn.cpp:992 src/olympusmn.cpp:226 src/olympusmn.cpp:406 -#: src/panasonicmn.cpp:341 src/tags.cpp:2103 -#, fuzzy -msgid "Image width" -msgstr "Kuvan laatu" - -#: src/canonmn.cpp:993 src/olympusmn.cpp:228 src/olympusmn.cpp:408 -#: src/panasonicmn.cpp:340 -#, fuzzy -msgid "Image Height" -msgstr "Kuvan tyyppi" - -#: src/canonmn.cpp:993 src/olympusmn.cpp:229 src/olympusmn.cpp:409 -#: src/panasonicmn.cpp:340 src/tags.cpp:2106 -#, fuzzy -msgid "Image height" -msgstr "Kuvan laatu" - -#: src/canonmn.cpp:994 -msgid "Image Width As Shot" -msgstr "" - -#: src/canonmn.cpp:994 -msgid "Image width (as shot)" -msgstr "" - -#: src/canonmn.cpp:995 -#, fuzzy -msgid "Image Height As Shot" -msgstr "Kuvan tyyppi" - -#: src/canonmn.cpp:995 -msgid "Image height (as shot)" -msgstr "" - -#: src/canonmn.cpp:996 src/nikonmn.cpp:848 -#, fuzzy -msgid "AF Points Used" -msgstr "Käytetty AF-piste" - -#: src/canonmn.cpp:996 src/nikonmn.cpp:848 -#, fuzzy -msgid "AF points used" -msgstr "Käytetty AF-piste" - -#: src/canonmn.cpp:997 -#, fuzzy -msgid "AF Points Used 20D" -msgstr "Käytetty AF-piste" - -#: src/canonmn.cpp:997 -#, fuzzy -msgid "AF points used (20D)" -msgstr "Käytetty AF-piste" - -#: src/canonmn.cpp:999 -msgid "Unknown Canon Picture Info tag" -msgstr "" - -#: src/canonmn.cpp:1010 -msgid "AEB" -msgstr "" - -#: src/canonmn.cpp:1011 -msgid "FEB" -msgstr "" - -#: src/canonmn.cpp:1012 src/minoltamn.cpp:511 src/nikonmn.cpp:767 -#: src/nikonmn.cpp:1136 src/nikonmn.cpp:1196 src/nikonmn.cpp:1232 -msgid "ISO" -msgstr "" - -#: src/canonmn.cpp:1013 -msgid "WB" -msgstr "" - -#: src/canonmn.cpp:1024 -msgid "Postcard" -msgstr "" - -#: src/canonmn.cpp:1025 -msgid "Widescreen" -msgstr "" - -#: src/canonmn.cpp:1026 -#, fuzzy -msgid "Medium Movie" -msgstr "Keskikokoinen" - -#: src/canonmn.cpp:1027 -#, fuzzy -msgid "Small Movie" -msgstr "Pieni" - -#: src/canonmn.cpp:1033 -#, fuzzy -msgid "On 1" -msgstr "Päällä" - -#: src/canonmn.cpp:1034 -#, fuzzy -msgid "On 2" -msgstr "Päällä" - -#: src/canonmn.cpp:1042 -#, fuzzy -msgid "On (shift AB)" -msgstr "Kertatarkennus, AF" - -#: src/canonmn.cpp:1043 -#, fuzzy -msgid "On (shift GM)" -msgstr "Kertatarkennus, AF" - -#: src/canonmn.cpp:1049 src/nikonmn.cpp:667 src/nikonmn.cpp:680 -#: src/nikonmn.cpp:995 src/olympusmn.cpp:622 src/olympusmn.cpp:862 -msgid "Yellow" -msgstr "" - -#: src/canonmn.cpp:1050 src/nikonmn.cpp:668 src/olympusmn.cpp:623 -#: src/olympusmn.cpp:863 -msgid "Orange" -msgstr "" - -#: src/canonmn.cpp:1051 src/nikonmn.cpp:669 src/nikonmn.cpp:679 -#: src/nikonmn.cpp:993 src/olympusmn.cpp:624 src/olympusmn.cpp:864 -msgid "Red" -msgstr "" - -#: src/canonmn.cpp:1052 src/canonmn.cpp:1061 src/nikonmn.cpp:670 -#: src/nikonmn.cpp:681 src/olympusmn.cpp:625 src/olympusmn.cpp:635 -#: src/olympusmn.cpp:865 src/olympusmn.cpp:874 -msgid "Green" -msgstr "" - -#: src/canonmn.cpp:1059 src/nikonmn.cpp:683 src/nikonmn.cpp:994 -#: src/olympusmn.cpp:633 src/olympusmn.cpp:872 -#, fuzzy -msgid "Blue" -msgstr "arvo" - -#: src/canonmn.cpp:1060 src/olympusmn.cpp:634 src/olympusmn.cpp:873 -msgid "Purple" -msgstr "" - -#: src/canonmn.cpp:1067 -#, fuzzy -msgid "Bracket Mode" -msgstr "Makrotila" - -#: src/canonmn.cpp:1068 -#, fuzzy -msgid "Bracket Value" -msgstr "Makrotila" - -#: src/canonmn.cpp:1069 -#, fuzzy -msgid "Bracket Shot Number" -msgstr "Makrotila" - -#: src/canonmn.cpp:1070 -#, fuzzy -msgid "Raw Jpg Quality" -msgstr "Kuvan laatu" - -#: src/canonmn.cpp:1071 -#, fuzzy -msgid "Raw Jpg Size" -msgstr "Kuvan koko" - -#: src/canonmn.cpp:1073 -#, fuzzy -msgid "WB Bracket Mode" -msgstr "Makrotila" - -#: src/canonmn.cpp:1074 -msgid "WB Bracket Value AB" -msgstr "" - -#: src/canonmn.cpp:1075 -msgid "WB Bracket Value GM" -msgstr "" - -#: src/canonmn.cpp:1076 src/nikonmn.cpp:701 -msgid "Filter Effect" -msgstr "" - -#: src/canonmn.cpp:1077 src/nikonmn.cpp:702 -msgid "Toning Effect" -msgstr "" - -#: src/canonmn.cpp:1078 -msgid "Macro Magnification" -msgstr "" - -#: src/canonmn.cpp:1078 -msgid "Macro magnification" -msgstr "" - -#: src/canonmn.cpp:1079 -msgid "Live View Shooting" -msgstr "" - -#: src/canonmn.cpp:1079 -msgid "Live view shooting" -msgstr "" - -#: src/canonmn.cpp:1080 -#, fuzzy -msgid "Flash Exposure Lock" -msgstr "Valotuksen korjaus" - -#: src/canonmn.cpp:1080 -#, fuzzy -msgid "Flash exposure lock" -msgstr "Automaattivalotus" - -#: src/canonmn.cpp:1082 -msgid "Unknown Canon File Info tag" -msgstr "" - -#: src/canonmn.cpp:1092 src/canonmn.cpp:1102 src/canonmn.cpp:1110 -#: src/canonmn.cpp:1123 src/fujimn.cpp:147 src/fujimn.cpp:154 -#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1135 -#: src/minoltamn.cpp:1221 src/minoltamn.cpp:1884 src/minoltamn.cpp:1973 -#: src/minoltamn.cpp:2007 src/minoltamn.cpp:2033 src/minoltamn.cpp:2059 -#: src/olympusmn.cpp:93 src/olympusmn.cpp:1135 src/panasonicmn.cpp:167 -#: src/panasonicmn.cpp:174 src/panasonicmn.cpp:204 src/pentaxmn.cpp:470 -#: src/sonymn.cpp:150 src/sonymn.cpp:475 src/sonymn.cpp:505 src/tags.cpp:1501 -msgid "Standard" -msgstr "" - -#: src/canonmn.cpp:1100 -msgid "Lowest" -msgstr "" - -#: src/canonmn.cpp:1104 -msgid "Highest" -msgstr "" - -#: src/canonmn.cpp:1112 -#, fuzzy -msgid "High Saturation" -msgstr "Värikylläisyys" - -#: src/canonmn.cpp:1114 -#, fuzzy -msgid "Low Saturation" -msgstr "Värikylläisyys" - -#: src/canonmn.cpp:1115 -msgid "CM Set 1" -msgstr "" - -#: src/canonmn.cpp:1116 -msgid "CM Set 2" -msgstr "" - -#: src/canonmn.cpp:1117 -msgid "User Def. 1" -msgstr "" - -#: src/canonmn.cpp:1118 -msgid "User Def. 2" -msgstr "" - -#: src/canonmn.cpp:1119 -msgid "User Def. 3" -msgstr "" - -#: src/canonmn.cpp:1120 -msgid "PC 1" -msgstr "" - -#: src/canonmn.cpp:1121 -msgid "PC 2" -msgstr "" - -#: src/canonmn.cpp:1122 -msgid "PC 3" -msgstr "" - -#: src/canonmn.cpp:1127 -msgid "Faithful" -msgstr "" - -#: src/canonmn.cpp:1128 src/minoltamn.cpp:903 src/minoltamn.cpp:953 -#: src/nikonmn.cpp:423 src/pentaxmn.cpp:707 -#, fuzzy -msgid "Monochrome" -msgstr "Makrotila" - -#: src/canonmn.cpp:1133 -#, fuzzy -msgid "ToneCurve" -msgstr "Kontrasti" - -#: src/canonmn.cpp:1133 -#, fuzzy -msgid "Tone curve" -msgstr "Kontrasti" - -#: src/canonmn.cpp:1135 -#, fuzzy -msgid "SharpnessFrequency" -msgstr "Terävyys" - -#: src/canonmn.cpp:1135 -#, fuzzy -msgid "Sharpness frequency" -msgstr "Terävyys" - -#: src/canonmn.cpp:1136 -msgid "SensorRedLevel" -msgstr "" - -#: src/canonmn.cpp:1136 -#, fuzzy -msgid "Sensor red level" -msgstr "Salaman malli" - -#: src/canonmn.cpp:1137 -msgid "SensorBlueLevel" -msgstr "" - -#: src/canonmn.cpp:1137 -#, fuzzy -msgid "Sensor blue level" -msgstr "Salaman malli" - -#: src/canonmn.cpp:1138 -#, fuzzy -msgid "WhiteBalanceRed" -msgstr "Valkotasapaino" - -#: src/canonmn.cpp:1138 -#, fuzzy -msgid "White balance red" -msgstr "Valkotasapaino" - -#: src/canonmn.cpp:1139 -#, fuzzy -msgid "WhiteBalanceBlue" -msgstr " " - -#: src/canonmn.cpp:1139 -#, fuzzy -msgid "White balance blue" -msgstr " " - -#: src/canonmn.cpp:1140 -#, fuzzy -msgid "WhiteBalance" -msgstr "Valkotasapaino" - -#: src/canonmn.cpp:1141 -#, fuzzy -msgid "ColorTemperature" -msgstr "Väriavaruus" - -#: src/canonmn.cpp:1141 src/minoltamn.cpp:156 src/minoltamn.cpp:786 -#: src/minoltamn.cpp:1038 src/minoltamn.cpp:1053 src/minoltamn.cpp:1054 -#: src/minoltamn.cpp:1475 src/minoltamn.cpp:1577 src/olympusmn.cpp:833 -#: src/sonymn.cpp:357 src/sonymn.cpp:358 -#, fuzzy -msgid "Color Temperature" -msgstr "Väriavaruus" - -#: src/canonmn.cpp:1142 -#, fuzzy -msgid "PictureStyle" -msgstr "Kuvan tiedot" - -#: src/canonmn.cpp:1142 -#, fuzzy -msgid "Picture style" -msgstr "Kuvan tiedot" - -#: src/canonmn.cpp:1143 -#, fuzzy -msgid "DigitalGain" -msgstr "Digitaalinen makro" - -#: src/canonmn.cpp:1143 -#, fuzzy -msgid "Digital gain" -msgstr "Digitaalinen makro" - -#: src/canonmn.cpp:1144 -msgid "WBShiftAB" -msgstr "" - -#: src/canonmn.cpp:1144 -#, fuzzy -msgid "WBShift AB" -msgstr "Kertatarkennus, AF" - -#: src/canonmn.cpp:1145 -msgid "WBShiftGM" -msgstr "" - -#: src/canonmn.cpp:1145 -#, fuzzy -msgid "WB Shift GM" -msgstr "Kertatarkennus, AF" - -#: src/canonmn.cpp:1146 -#, fuzzy -msgid "Unknown Canon Processing Info tag" -msgstr "Kameran asetukset" - -#: src/crwimage.cpp:664 -msgid "Header, offset" -msgstr "" - -#: src/crwimage.cpp:681 -msgid "tag" -msgstr "" - -#: src/crwimage.cpp:683 -msgid "dir" -msgstr "" - -#: src/crwimage.cpp:685 -msgid "type" -msgstr "" - -#: src/crwimage.cpp:686 -msgid "size" -msgstr "" - -#: src/crwimage.cpp:687 -msgid "offset" -msgstr "" - -#: src/datasets.cpp:79 -msgid "(invalid)" -msgstr "" - -#: src/datasets.cpp:80 -msgid "IIM envelope record" -msgstr "" - -#: src/datasets.cpp:81 -msgid "IIM application record 2" -msgstr "" - -#: src/datasets.cpp:85 -#, fuzzy -msgid "Model Version" -msgstr "Ohjelman versio" - -#: src/datasets.cpp:86 -msgid "" -"A binary number identifying the version of the Information Interchange " -"Model, Part I, utilised by the provider. Version numbers are assigned by " -"IPTC and NAA organizations." -msgstr "" - -#: src/datasets.cpp:90 src/panasonicmn.cpp:220 src/pentaxmn.cpp:378 -#: src/pentaxmn.cpp:962 src/pentaxmn.cpp:963 -#, fuzzy -msgid "Destination" -msgstr "Kuvan vakautus" - -#: src/datasets.cpp:91 -msgid "" -"This DataSet is to accommodate some providers who require routing " -"information above the appropriate OSI layers." -msgstr "" - -#: src/datasets.cpp:94 src/sonymn.cpp:348 src/sonymn.cpp:349 -#, fuzzy -msgid "File Format" -msgstr "Lukuvirhe" - -#: src/datasets.cpp:95 -msgid "" -"A binary number representing the file format. The file format must be " -"registered with IPTC or NAA with a unique number assigned to it. The " -"information is used to route the data to the appropriate system and to allow " -"the receiving system to perform the appropriate actions there to." -msgstr "" - -#: src/datasets.cpp:101 -#, fuzzy -msgid "File Version" -msgstr "Firmwaren versio" - -#: src/datasets.cpp:102 -msgid "" -"A binary number representing the particular version of the File Format " -"specified by tag." -msgstr "" - -#: src/datasets.cpp:105 -msgid "Service Id" -msgstr "" - -#: src/datasets.cpp:106 -msgid "Identifies the provider and product" -msgstr "" - -#: src/datasets.cpp:108 -#, fuzzy -msgid "Envelope Number" -msgstr "F-luku" - -#: src/datasets.cpp:109 -msgid "" -"The characters form a number that will be unique for the date specified in " -" tag and for the Service Identifier specified by " -" tag. If identical envelope numbers appear with the same " -"date and with the same Service Identifier, records 2-9 must be unchanged " -"from the original. This is not intended to be a sequential serial number " -"reception check." -msgstr "" - -#: src/datasets.cpp:117 -msgid "Product Id" -msgstr "" - -#: src/datasets.cpp:118 -msgid "" -"Allows a provider to identify subsets of its overall service. Used to " -"provide receiving organisation data on which to select, route, or otherwise " -"handle data." -msgstr "" - -#: src/datasets.cpp:122 -msgid "Envelope Priority" -msgstr "" - -#: src/datasets.cpp:123 -msgid "" -"Specifies the envelope handling priority and not the editorial urgency (see " -" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " -"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " -"Priority. The numeral \"0\" is reserved for future use." -msgstr "" - -#: src/datasets.cpp:129 -#, fuzzy -msgid "Date Sent" -msgstr "Päiväys ja aika" - -#: src/datasets.cpp:130 -msgid "" -"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " -"to indicate year, month and day the service sent the material." -msgstr "" - -#: src/datasets.cpp:133 -msgid "Time Sent" -msgstr "" - -#: src/datasets.cpp:134 -msgid "" -"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " -"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " -"Universal Coordinated Time as described in ISO 8601. This is the time the " -"service sent the material." -msgstr "" - -#: src/datasets.cpp:139 -msgid "Character Set" -msgstr "" - -#: src/datasets.cpp:140 -msgid "" -"This tag consisting of one or more control functions used for the " -"announcement, invocation or designation of coded character sets. The control " -"functions follow the ISO 2022 standard and may consist of the escape control " -"character and one or more graphic characters." -msgstr "" - -#: src/datasets.cpp:145 -msgid "Unique Name Object" -msgstr "" - -#: src/datasets.cpp:146 -msgid "" -"This tag provide a globally unique identification for objects as specified " -"in the IIM, independent of provider and for any media form. The provider " -"must ensure the UNO is unique. Objects with the same UNO are identical." -msgstr "" - -#: src/datasets.cpp:151 -msgid "ARM Identifier" -msgstr "" - -#: src/datasets.cpp:152 -msgid "" -"The DataSet identifies the Abstract Relationship Method identifier (ARM) " -"which is described in a document registered by the originator of the ARM " -"with the IPTC and NAA organizations." -msgstr "" - -#: src/datasets.cpp:156 -#, fuzzy -msgid "ARM Version" -msgstr "Ohjelman versio" - -#: src/datasets.cpp:157 -msgid "" -"This tag consisting of a binary number representing the particular version " -"of the ARM specified by tag ." -msgstr "" - -#: src/datasets.cpp:170 -#, fuzzy -msgid "Record Version" -msgstr "Ohjelman versio" - -#: src/datasets.cpp:171 -msgid "" -"A binary number identifying the version of the Information Interchange " -"Model, Part II, utilised by the provider. Version numbers are assigned by " -"IPTC and NAA organizations." -msgstr "" - -#: src/datasets.cpp:175 -#, fuzzy -msgid "Object Type" -msgstr "Linssin tyyppi" - -#: src/datasets.cpp:176 -msgid "" -"The Object Type is used to distinguish between different types of objects " -"within the IIM. The first part is a number representing a language " -"independent international reference to an Object Type followed by a colon " -"separator. The second part, if used, is a text representation of the Object " -"Type Number consisting of graphic characters plus spaces either in English " -"or in the language of the service as indicated in tag " -msgstr "" - -#: src/datasets.cpp:184 -msgid "Object Attribute" -msgstr "" - -#: src/datasets.cpp:185 -msgid "" -"The Object Attribute defines the nature of the object independent of the " -"Subject. The first part is a number representing a language independent " -"international reference to an Object Attribute followed by a colon " -"separator. The second part, if used, is a text representation of the Object " -"Attribute Number consisting of graphic characters plus spaces either in " -"English, or in the language of the service as indicated in tag " -"" -msgstr "" - -#: src/datasets.cpp:193 -#, fuzzy -msgid "Object Name" -msgstr "Omistajan nimi" - -#: src/datasets.cpp:194 -msgid "" -"Used as a shorthand reference for the object. Changes to exist-ing data, " -"such as updated stories or new crops on photos, should be identified in tag " -"." -msgstr "" - -#: src/datasets.cpp:198 -msgid "Document Title" -msgstr "" - -#: src/datasets.cpp:199 src/olympusmn.cpp:820 -#, fuzzy -msgid "Edit Status" -msgstr "Omistusoikeus" - -#: src/datasets.cpp:200 -msgid "Status of the object data, according to the practice of the provider." -msgstr "" - -#: src/datasets.cpp:202 -msgid "Editorial Update" -msgstr "" - -#: src/datasets.cpp:203 -msgid "" -"Indicates the type of update that this object provides to a previous object. " -"The link to the previous object is made using the tags and " -", according to the practices of the provider." -msgstr "" - -#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:419 -msgid "Urgency" -msgstr "" - -#: src/datasets.cpp:208 -msgid "" -"Specifies the editorial urgency of content and not necessarily the envelope " -"handling priority (see tag ). The \"1\" is most urgent, " -"\"5\" normal and \"8\" denotes the least-urgent copy." -msgstr "" - -#: src/datasets.cpp:213 src/properties.cpp:167 -#, fuzzy -msgid "Subject" -msgstr "Kohteen etäisyys" - -#: src/datasets.cpp:214 -msgid "The Subject Reference is a structured definition of the subject matter." -msgstr "" - -#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:405 -msgid "Category" -msgstr "" - -#: src/datasets.cpp:217 -msgid "" -"Identifies the subject of the object data in the opinion of the provider. A " -"list of categories will be maintained by a regional registry, where " -"available, otherwise by the provider." -msgstr "" - -#: src/datasets.cpp:222 -msgid "Supplemental Category" -msgstr "" - -#: src/datasets.cpp:223 -msgid "" -"Supplemental categories further refine the subject of an object data. A " -"supplemental category may include any of the recognised categories as used " -"in tag . Otherwise, selection of supplemental categories are left " -"to the provider." -msgstr "" - -#: src/datasets.cpp:228 src/properties.cpp:417 -msgid "Supplemental Categories" -msgstr "" - -#: src/datasets.cpp:229 -#, fuzzy -msgid "Fixture Id" -msgstr "Välähti" - -#: src/datasets.cpp:230 -msgid "" -"Identifies object data that recurs often and predictably. Enables users to " -"immediately find or recall such an object." -msgstr "" - -#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:395 -msgid "Keywords" -msgstr "Avainsanat" - -#: src/datasets.cpp:234 -msgid "" -"Used to indicate specific information retrieval words. It is expected that a " -"provider of various types of data that are related in subject matter uses " -"the same keyword, enabling the receiving system or subsystems to search " -"across all types of data for related material." -msgstr "" - -#: src/datasets.cpp:240 -msgid "Location Code" -msgstr "" - -#: src/datasets.cpp:241 -msgid "" -"Indicates the code of a country/geographical location referenced by the " -"content of the object. Where ISO has established an appropriate country code " -"under ISO 3166, that code will be used. When ISO 3166 does not adequately " -"provide for identification of a location or a country, e.g. ships at sea, " -"space, IPTC will assign an appropriate three-character code under the " -"provisions of ISO 3166 to avoid conflicts." -msgstr "" - -#: src/datasets.cpp:248 -#, fuzzy -msgid "Location Name" -msgstr "Omistajan nimi" - -#: src/datasets.cpp:249 -msgid "" -"Provides a full, publishable name of a country/geographical location " -"referenced by the content of the object, according to guidelines of the " -"provider." -msgstr "" - -#: src/datasets.cpp:253 src/properties.cpp:358 -#, fuzzy -msgid "Release Date" -msgstr "Mallin ID" - -#: src/datasets.cpp:254 -msgid "" -"Designates in the form CCYYMMDD the earliest date the provider intends the " -"object to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:257 -msgid "Release Time" -msgstr "" - -#: src/datasets.cpp:258 -msgid "" -"Designates in the form HHMMSS:HHMM the earliest time the provider intends " -"the object to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:261 -msgid "Expiration Date" -msgstr "" - -#: src/datasets.cpp:262 -msgid "" -"Designates in the form CCYYMMDD the latest date the provider or owner " -"intends the object data to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:265 -msgid "ExpirationTime" -msgstr "" - -#: src/datasets.cpp:266 -msgid "" -"Designates in the form HHMMSS:HHMM the latest time the provider or owner " -"intends the object data to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:269 -msgid "Special Instructions" -msgstr "" - -#: src/datasets.cpp:270 -msgid "" -"Other editorial instructions concerning the use of the object data, such as " -"embargoes and warnings." -msgstr "" - -#: src/datasets.cpp:273 src/properties.cpp:414 -msgid "Instructions" -msgstr "" - -#: src/datasets.cpp:274 -msgid "Action Advised" -msgstr "" - -#: src/datasets.cpp:275 -msgid "" -"Indicates the type of action that this object provides to a previous object. " -"The link to the previous object is made using tags and " -", according to the practices of the provider." -msgstr "" - -#: src/datasets.cpp:279 -msgid "Reference Service" -msgstr "" - -#: src/datasets.cpp:280 -msgid "" -"Identifies the Service Identifier of a prior envelope to which the current " -"object refers." -msgstr "" - -#: src/datasets.cpp:283 -msgid "Reference Date" -msgstr "" - -#: src/datasets.cpp:284 -msgid "" -"Identifies the date of a prior envelope to which the current object refers." -msgstr "" - -#: src/datasets.cpp:286 -#, fuzzy -msgid "Reference Number" -msgstr "Sarjanumero" - -#: src/datasets.cpp:287 -msgid "" -"Identifies the Envelope Number of a prior envelope to which the current " -"object refers." -msgstr "" - -#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:409 -#, fuzzy -msgid "Date Created" -msgstr "Kuvan numero" - -#: src/datasets.cpp:290 -msgid "" -"Represented in the form CCYYMMDD to designate the date the intellectual " -"content of the object data was created rather than the date of the creation " -"of the physical representation. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:295 -#, fuzzy -msgid "Time Created" -msgstr "Kuvan numero" - -#: src/datasets.cpp:296 -msgid "" -"Represented in the form HHMMSS:HHMM to designate the time the intellectual " -"content of the object data current source material was created rather than " -"the creation of the physical representation. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:301 -msgid "Digitization Date" -msgstr "" - -#: src/datasets.cpp:302 -msgid "" -"Represented in the form CCYYMMDD to designate the date the digital " -"representation of the object data was created. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:305 -#, fuzzy -msgid "Digitization Time" -msgstr "Päiväys ja aika" - -#: src/datasets.cpp:306 -msgid "" -"Represented in the form HHMMSS:HHMM to designate the time the digital " -"representation of the object data was created. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 -#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:106 -#: src/pentaxmn.cpp:468 src/pentaxmn.cpp:526 src/sigmamn.cpp:154 -#: src/sonymn.cpp:110 -msgid "Program" -msgstr "Ohjelma" - -#: src/datasets.cpp:311 -msgid "Identifies the type of program used to originate the object data." -msgstr "" - -#: src/datasets.cpp:313 -msgid "Program Version" -msgstr "Ohjelman versio" - -#: src/datasets.cpp:314 -msgid "Used to identify the version of the program mentioned in tag ." -msgstr "" - -#: src/datasets.cpp:316 -msgid "Object Cycle" -msgstr "" - -#: src/datasets.cpp:317 -msgid "Used to identify the editorial cycle of object data." -msgstr "" - -#: src/datasets.cpp:319 -msgid "By-line" -msgstr "" - -#: src/datasets.cpp:320 -msgid "" -"Contains name of the creator of the object data, e.g. writer, photographer " -"or graphic artist." -msgstr "" - -#: src/datasets.cpp:323 -msgid "Author" -msgstr "" - -#: src/datasets.cpp:324 -msgid "By-line Title" -msgstr "" - -#: src/datasets.cpp:325 -msgid "" -"A by-line title is the title of the creator or creators of an object data. " -"Where used, a by-line title should follow the by-line it modifies." -msgstr "" - -#: src/datasets.cpp:328 src/datasets.cpp:332 src/properties.cpp:406 -msgid "City" -msgstr "" - -#: src/datasets.cpp:329 -msgid "" -"Identifies city of object data origin according to guidelines established by " -"the provider." -msgstr "" - -#: src/datasets.cpp:333 -#, fuzzy -msgid "Sub Location" -msgstr "Värikylläisyys" - -#: src/datasets.cpp:334 -msgid "" -"Identifies the location within a city from which the object data originates, " -"according to guidelines established by the provider." -msgstr "" - -#: src/datasets.cpp:337 -msgid "Province State" -msgstr "" - -#: src/datasets.cpp:338 -msgid "" -"Identifies Province/State of origin according to guidelines established by " -"the provider." -msgstr "" - -#: src/datasets.cpp:341 -msgid "State/Province" -msgstr "" - -#: src/datasets.cpp:342 src/properties.cpp:649 -#, fuzzy -msgid "Country Code" -msgstr "Kontrasti" - -#: src/datasets.cpp:343 -msgid "" -"Indicates the code of the country/primary location where the intellectual " -"property of the object data was created, e.g. a photo was taken, an event " -"occurred. Where ISO has established an appropriate country code under ISO " -"3166, that code will be used. When ISO 3166 does not adequately provide for " -"identification of a location or a new country, e.g. ships at sea, space, " -"IPTC will assign an appropriate three-character code under the provisions of " -"ISO 3166 to avoid conflicts." -msgstr "" - -#: src/datasets.cpp:352 -#, fuzzy -msgid "Country Name" -msgstr "Omistajan nimi" - -#: src/datasets.cpp:353 -msgid "" -"Provides full, publishable, name of the country/primary location where the " -"intellectual property of the object data was created, according to " -"guidelines of the provider." -msgstr "" - -#: src/datasets.cpp:357 src/properties.cpp:407 -#, fuzzy -msgid "Country" -msgstr "Kontrasti" - -#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:418 -msgid "Transmission Reference" -msgstr "" - -#: src/datasets.cpp:359 -msgid "" -"A code representing the location of original transmission according to " -"practices of the provider." -msgstr "" - -#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:413 -msgid "Headline" -msgstr "" - -#: src/datasets.cpp:364 -msgid "" -"A publishable entry providing a synopsis of the contents of the object data." -msgstr "" - -#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:408 -msgid "Credit" -msgstr "" - -#: src/datasets.cpp:368 -msgid "" -"Identifies the provider of the object data, not necessarily the owner/" -"creator." -msgstr "" - -#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:166 -#: src/properties.cpp:415 -#, fuzzy -msgid "Source" -msgstr "Kuvalähde" - -#: src/datasets.cpp:372 -msgid "" -"Identifies the original owner of the intellectual content of the object " -"data. This could be an agency, a member of an agency or an individual." -msgstr "" - -#: src/datasets.cpp:377 -msgid "Contains any necessary copyright notice." -msgstr "" - -#: src/datasets.cpp:379 -#, fuzzy -msgid "Copyright Notice" -msgstr "Omistusoikeus" - -#: src/datasets.cpp:380 src/properties.cpp:937 src/properties.cpp:946 -#, fuzzy -msgid "Contact" -msgstr "Kontrasti" - -#: src/datasets.cpp:381 -msgid "" -"Identifies the person or organisation which can provide further background " -"information on the object data." -msgstr "" - -#: src/datasets.cpp:384 -msgid "Caption" -msgstr "" - -#: src/datasets.cpp:385 -msgid "A textual description of the object data." -msgstr "" - -#: src/datasets.cpp:387 src/properties.cpp:151 src/properties.cpp:981 -msgid "Description" -msgstr "" - -#: src/datasets.cpp:388 -msgid "Writer" -msgstr "" - -#: src/datasets.cpp:389 -msgid "" -"Identification of the name of the person involved in the writing, editing or " -"correcting the object data or caption/abstract." -msgstr "" - -#: src/datasets.cpp:392 -msgid "Rasterized Caption" -msgstr "" - -#: src/datasets.cpp:393 -msgid "" -"Contains the rasterized object data description and is used where characters " -"that have not been coded are required for the caption." -msgstr "" - -#: src/datasets.cpp:397 -msgid "Indicates the color components of an image." -msgstr "" - -#: src/datasets.cpp:399 -#, fuzzy -msgid "Image Orientation" -msgstr "Kuvan numero" - -#: src/datasets.cpp:400 -msgid "Indicates the layout of an image." -msgstr "" - -#: src/datasets.cpp:402 src/properties.cpp:157 -#, fuzzy -msgid "Language" -msgstr "Suuri" - -#: src/datasets.cpp:403 -msgid "" -"Describes the major national language of the object, according to the 2-" -"letter codes of ISO 639:1988. Does not define or imply any coded character " -"set, but is used for internal routing, e.g. to various editorial desks." -msgstr "" - -#: src/datasets.cpp:408 -msgid "Audio Type" -msgstr "" - -#: src/datasets.cpp:409 -msgid "Indicates the type of an audio content." -msgstr "" - -#: src/datasets.cpp:411 -msgid "Audio Rate" -msgstr "" - -#: src/datasets.cpp:412 -msgid "Indicates the sampling rate in Hertz of an audio content." -msgstr "" - -#: src/datasets.cpp:414 -#, fuzzy -msgid "Audio Resolution" -msgstr "Resoluutioyksikkö" - -#: src/datasets.cpp:415 -msgid "Indicates the sampling resolution of an audio content." -msgstr "" - -#: src/datasets.cpp:417 -msgid "Audio Duration" -msgstr "" - -#: src/datasets.cpp:418 -msgid "Indicates the duration of an audio content." -msgstr "" - -#: src/datasets.cpp:420 -msgid "Audio Outcue" -msgstr "" - -#: src/datasets.cpp:421 -msgid "" -"Identifies the content of the end of an audio object data, according to " -"guidelines established by the provider." -msgstr "" - -#: src/datasets.cpp:424 -#, fuzzy -msgid "Preview Format" -msgstr "Esikatselu" - -#: src/datasets.cpp:425 -msgid "" -"A binary number representing the file format of the object data preview. The " -"file format must be registered with IPTC or NAA organizations with a unique " -"number assigned to it." -msgstr "" - -#: src/datasets.cpp:429 -#, fuzzy -msgid "Preview Version" -msgstr "Ohjelman versio" - -#: src/datasets.cpp:430 -msgid "" -"A binary number representing the particular version of the object data " -"preview file format specified in tag ." -msgstr "" - -#: src/datasets.cpp:433 -#, fuzzy -msgid "Preview Data" -msgstr "Esikatselu" - -#: src/datasets.cpp:434 -msgid "Binary image preview data." -msgstr "" - -#: src/datasets.cpp:436 src/datasets.cpp:437 -msgid "(Invalid)" -msgstr "" - -#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 -#, fuzzy -msgid "Unknown dataset" -msgstr "Tuntematon" - -#: src/error.cpp:55 -msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." -msgstr "" - -#: src/error.cpp:56 -msgid "Success" -msgstr "" - -#: src/error.cpp:59 -msgid "This does not look like a %1 image" -msgstr "" - -#: src/error.cpp:60 -msgid "Invalid dataset name `%1'" -msgstr "" - -#: src/error.cpp:61 -msgid "Invalid record name `%1'" -msgstr "" - -#: src/error.cpp:62 -msgid "Invalid key `%1'" -msgstr "" - -#: src/error.cpp:63 -msgid "Invalid tag name or ifdId `%1', ifdId %2" -msgstr "" - -#: src/error.cpp:64 -msgid "Value not set" -msgstr "" - -#: src/error.cpp:65 -#, fuzzy -msgid "%1: Failed to open the data source: %2" -msgstr "Tiedoston avaus epäonnistui\n" - -#: src/error.cpp:66 -#, fuzzy -msgid "%1: Failed to open file (%2): %3" -msgstr "Tiedoston avaus epäonnistui\n" - -#: src/error.cpp:67 -msgid "%1: The file contains data of an unknown image type" -msgstr "" - -#: src/error.cpp:68 -msgid "The memory contains data of an unknown image type" -msgstr "" - -#: src/error.cpp:69 -msgid "Image type %1 is not supported" -msgstr "" - -#: src/error.cpp:70 -#, fuzzy -msgid "Failed to read image data" -msgstr "Aikaleiman lukeminen epäonnistui" - -#: src/error.cpp:71 -msgid "This does not look like a JPEG image" -msgstr "" - -#: src/error.cpp:72 -msgid "%1: Failed to map file for reading and writing: %2" -msgstr "" - -#: src/error.cpp:73 -#, fuzzy -msgid "%1: Failed to rename file to %2: %3" -msgstr "Tiedoston avaus epäonnistui\n" - -#: src/error.cpp:74 -msgid "%1: Transfer failed: %2" -msgstr "" - -#: src/error.cpp:75 -msgid "Memory transfer failed: %1" -msgstr "" - -#: src/error.cpp:76 -#, fuzzy -msgid "Failed to read input data" -msgstr "Lukuvirhe" - -#: src/error.cpp:77 -#, fuzzy -msgid "Failed to write image" -msgstr "Lukuvirhe" - -#: src/error.cpp:78 -msgid "Input data does not contain a valid image" -msgstr "" - -#: src/error.cpp:79 -msgid "Invalid ifdId %1" -msgstr "" - -#: src/error.cpp:80 -msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" -msgstr "" - -#: src/error.cpp:81 -msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" -msgstr "" - -#: src/error.cpp:82 -msgid "Offset out of range" -msgstr "" - -#: src/error.cpp:83 -msgid "Unsupported data area offset type" -msgstr "" - -#: src/error.cpp:84 -msgid "Invalid charset: `%1'" -msgstr "" - -#: src/error.cpp:85 -msgid "Unsupported date format" -msgstr "" - -#: src/error.cpp:86 -msgid "Unsupported time format" -msgstr "" - -#: src/error.cpp:87 -msgid "Writing to %1 images is not supported" -msgstr "" - -#: src/error.cpp:88 -msgid "Setting %1 in %2 images is not supported" -msgstr "" - -#: src/error.cpp:89 -msgid "This does not look like a CRW image" -msgstr "" - -#: src/error.cpp:90 -msgid "%1: Not supported" -msgstr "" - -#: src/error.cpp:91 -msgid "No namespace info available for XMP prefix `%1'" -msgstr "" - -#: src/error.cpp:92 -msgid "No prefix registered for namespace `%2', needed for property path `%1'" -msgstr "" - -#: src/error.cpp:93 -msgid "Size of %1 JPEG segment is larger than 65535 bytes" -msgstr "" - -#: src/error.cpp:94 -msgid "Unhandled Xmpdatum %1 of type %2" -msgstr "" - -#: src/error.cpp:95 -msgid "Unhandled XMP node %1 with opt=%2" -msgstr "" - -#: src/error.cpp:96 -msgid "XMP Toolkit error %1: %2" -msgstr "" - -#: src/error.cpp:97 -msgid "Failed to decode Lang Alt property %1 with opt=%2" -msgstr "" - -#: src/error.cpp:98 -msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" -msgstr "" - -#: src/error.cpp:99 -msgid "Failed to encode Lang Alt property %1" -msgstr "" - -#: src/error.cpp:100 -msgid "Failed to determine property name from path %1, namespace %2" -msgstr "" - -#: src/error.cpp:101 -msgid "Schema namespace %1 is not registered with the XMP Toolkit" -msgstr "" - -#: src/error.cpp:102 -msgid "No namespace registered for prefix `%1'" -msgstr "" - -#: src/error.cpp:103 -msgid "" -"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" -"%1', `%2', `%3'" -msgstr "" - -#: src/error.cpp:104 -msgid "Invalid XmpText type `%1'" -msgstr "" - -#: src/error.cpp:105 -msgid "TIFF directory %1 has too many entries" -msgstr "" - -#: src/error.cpp:106 -msgid "Multiple TIFF array element tags %1 in one directory" -msgstr "" - -#: src/error.cpp:107 -msgid "TIFF array element tag %1 has wrong type" -msgstr "" - -#: src/error.cpp:108 -msgid "%1 has invalid XMP value type `%2'" -msgstr "" - -#: src/exiv2.cpp:212 -msgid "Copyright (C) 2004-2012 Andreas Huggel.\n" -msgstr "" - -#: src/exiv2.cpp:214 -msgid "" -"This program is free software; you can redistribute it and/or\n" -"modify it under the terms of the GNU General Public License\n" -"as published by the Free Software Foundation; either version 2\n" -"of the License, or (at your option) any later version.\n" -msgstr "" - -#: src/exiv2.cpp:219 -msgid "" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -msgstr "" - -#: src/exiv2.cpp:224 -msgid "" -"You should have received a copy of the GNU General Public\n" -"License along with this program; if not, write to the Free\n" -"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" -"Boston, MA 02110-1301 USA\n" -msgstr "" - -#: src/exiv2.cpp:232 -msgid "Usage:" -msgstr "" - -#: src/exiv2.cpp:233 -msgid "" -"[ options ] [ action ] file ...\n" -"\n" -msgstr "" - -#: src/exiv2.cpp:234 -msgid "Manipulate the Exif metadata of images.\n" -msgstr "" - -#: src/exiv2.cpp:240 -msgid "" -"\n" -"Actions:\n" -msgstr "" - -#: src/exiv2.cpp:241 -msgid "" -" ad | adjust Adjust Exif timestamps by the given time. This action\n" -" requires at least one of the -a, -Y, -O or -D options.\n" -msgstr "" - -#: src/exiv2.cpp:243 -msgid " pr | print Print image metadata.\n" -msgstr "" - -#: src/exiv2.cpp:244 -msgid " rm | delete Delete image metadata from the files.\n" -msgstr "" - -#: src/exiv2.cpp:245 -msgid "" -" in | insert Insert metadata from corresponding *.exv files.\n" -" Use option -S to change the suffix of the input files.\n" -msgstr "" - -#: src/exiv2.cpp:247 -msgid "" -" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" -msgstr "" - -#: src/exiv2.cpp:248 -msgid "" -" mv | rename Rename files and/or set file timestamps according to the\n" -" Exif create timestamp. The filename format can be set with\n" -" -r format, timestamp options are controlled with -t and -T.\n" -msgstr "" - -#: src/exiv2.cpp:251 -msgid "" -" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" -" IPTC metadata of image files or set the JPEG comment.\n" -" Requires option -c, -m or -M.\n" -msgstr "" - -#: src/exiv2.cpp:254 -msgid "" -" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" -" Exif tag.\n" -msgstr "" - -#: src/exiv2.cpp:256 -msgid "" -" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" -" character encoding can be specified with the -n option.\n" -msgstr "" - -#: src/exiv2.cpp:258 -msgid "" -"\n" -"Options:\n" -msgstr "" - -#: src/exiv2.cpp:259 -msgid " -h Display this help and exit.\n" -msgstr "" - -#: src/exiv2.cpp:260 -msgid " -V Show the program version and exit.\n" -msgstr "" - -#: src/exiv2.cpp:261 -msgid " -v Be verbose during the program run.\n" -msgstr "" - -#: src/exiv2.cpp:262 -msgid "" -" -q Silence warnings and error messages during the program run " -"(quiet).\n" -msgstr "" - -#: src/exiv2.cpp:263 -msgid "" -" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" -msgstr "" - -#: src/exiv2.cpp:264 -msgid " -b Show large binary values.\n" -msgstr "" - -#: src/exiv2.cpp:265 -msgid " -u Show unknown tags.\n" -msgstr "" - -#: src/exiv2.cpp:266 -msgid " -g key Only output info for this key (grep).\n" -msgstr "" - -#: src/exiv2.cpp:267 -msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" -msgstr "" - -#: src/exiv2.cpp:268 -msgid " -k Preserve file timestamps (keep).\n" -msgstr "" - -#: src/exiv2.cpp:269 -msgid "" -" -t Also set the file timestamp in 'rename' action (overrides -k).\n" -msgstr "" - -#: src/exiv2.cpp:270 -msgid "" -" -T Only set the file timestamp in 'rename' action, do not rename\n" -" the file (overrides -k).\n" -msgstr "" - -#: src/exiv2.cpp:272 -msgid " -f Do not prompt before overwriting existing files (force).\n" -msgstr "" - -#: src/exiv2.cpp:273 -msgid " -F Do not prompt before renaming files (Force).\n" -msgstr "" - -#: src/exiv2.cpp:274 -msgid "" -" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" -" is only used with the 'adjust' action.\n" -msgstr "" - -#: src/exiv2.cpp:276 -msgid " -Y yrs Year adjustment with the 'adjust' action.\n" -msgstr "" - -#: src/exiv2.cpp:277 -msgid " -O mon Month adjustment with the 'adjust' action.\n" -msgstr "" - -#: src/exiv2.cpp:278 -msgid " -D day Day adjustment with the 'adjust' action.\n" -msgstr "" - -#: src/exiv2.cpp:279 -msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" -msgstr "" - -#: src/exiv2.cpp:280 -msgid " s : print a summary of the Exif metadata (the default)\n" -msgstr "" - -#: src/exiv2.cpp:281 -msgid "" -" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" -msgstr "" - -#: src/exiv2.cpp:282 -msgid " t : interpreted (translated) Exif data (-PEkyct)\n" -msgstr "" - -#: src/exiv2.cpp:283 -msgid " v : plain Exif data values (-PExgnycv)\n" -msgstr "" - -#: src/exiv2.cpp:284 -msgid " h : hexdump of the Exif data (-PExgnycsh)\n" -msgstr "" - -#: src/exiv2.cpp:285 -msgid " i : IPTC data values (-PIkyct)\n" -msgstr "" - -#: src/exiv2.cpp:286 -msgid " x : XMP properties (-PXkyct)\n" -msgstr "" - -#: src/exiv2.cpp:287 src/exiv2.cpp:310 -msgid " c : JPEG comment\n" -msgstr "" - -#: src/exiv2.cpp:288 -msgid " p : list available previews\n" -msgstr "" - -#: src/exiv2.cpp:289 -msgid "" -" -P flgs Print flags for fine control of tag lists ('print' action):\n" -msgstr "" - -#: src/exiv2.cpp:290 -msgid " E : include Exif tags in the list\n" -msgstr "" - -#: src/exiv2.cpp:291 -msgid " I : IPTC datasets\n" -msgstr "" - -#: src/exiv2.cpp:292 -msgid " X : XMP properties\n" -msgstr "" - -#: src/exiv2.cpp:293 -msgid " x : print a column with the tag number\n" -msgstr "" - -#: src/exiv2.cpp:294 -msgid " g : group name\n" -msgstr "" - -#: src/exiv2.cpp:295 -msgid " k : key\n" -msgstr "" - -#: src/exiv2.cpp:296 -msgid " l : tag label\n" -msgstr "" - -#: src/exiv2.cpp:297 -msgid " n : tag name\n" -msgstr "" - -#: src/exiv2.cpp:298 -msgid " y : type\n" -msgstr "" - -#: src/exiv2.cpp:299 -msgid " c : number of components (count)\n" -msgstr "" - -#: src/exiv2.cpp:300 -msgid " s : size in bytes\n" -msgstr "" - -#: src/exiv2.cpp:301 -msgid " v : plain data value\n" -msgstr "" - -#: src/exiv2.cpp:302 -msgid " t : interpreted (translated) data\n" -msgstr "" - -#: src/exiv2.cpp:303 -msgid " h : hexdump of the data\n" -msgstr "" - -#: src/exiv2.cpp:304 -msgid "" -" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" -msgstr "" - -#: src/exiv2.cpp:305 -msgid " a : all supported metadata (the default)\n" -msgstr "" - -#: src/exiv2.cpp:306 -msgid " e : Exif section\n" -msgstr "" - -#: src/exiv2.cpp:307 -msgid " t : Exif thumbnail only\n" -msgstr "" - -#: src/exiv2.cpp:308 -msgid " i : IPTC data\n" -msgstr "" - -#: src/exiv2.cpp:309 -msgid " x : XMP packet\n" -msgstr "" - -#: src/exiv2.cpp:311 -msgid "" -" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" -" the same as those for the -d option, plus a modifier:\n" -" X : Insert metadata from an XMP sidecar file .xmp\n" -" Only JPEG thumbnails can be inserted, they need to be named\n" -" -thumb.jpg\n" -msgstr "" - -#: src/exiv2.cpp:316 -msgid "" -" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" -" are the same as those for the -d option, plus a target to " -"extract\n" -" preview images and a modifier to generate an XMP sidecar file:\n" -" p[[, ...]] : Extract preview images.\n" -" X : Extract metadata to an XMP sidecar file .xmp\n" -msgstr "" - -#: src/exiv2.cpp:321 -msgid "" -" -r fmt Filename format for the 'rename' action. The format string\n" -" follows strftime(3). The following keywords are supported:\n" -msgstr "" - -#: src/exiv2.cpp:323 -msgid " :basename: - original filename without extension\n" -msgstr "" - -#: src/exiv2.cpp:324 -msgid "" -" :dirname: - name of the directory holding the original file\n" -msgstr "" - -#: src/exiv2.cpp:325 -msgid " :parentname: - name of parent directory\n" -msgstr "" - -#: src/exiv2.cpp:326 -msgid " Default filename format is " -msgstr "" - -#: src/exiv2.cpp:328 -msgid " -c txt JPEG comment string to set in the image.\n" -msgstr "" - -#: src/exiv2.cpp:329 -msgid "" -" -m file Command file for the modify action. The format for commands is\n" -" set|add|del [[] ].\n" -msgstr "" - -#: src/exiv2.cpp:331 -msgid "" -" -M cmd Command line for the modify action. The format for the\n" -" commands is the same as that of the lines of a command file.\n" -msgstr "" - -#: src/exiv2.cpp:333 -msgid "" -" -l dir Location (directory) for files to be inserted from or extracted " -"to.\n" -msgstr "" - -#: src/exiv2.cpp:334 -msgid "" -" -S .suf Use suffix .suf for source files for insert command.\n" -"\n" -msgstr "" - -#: src/exiv2.cpp:371 src/exiv2.cpp:401 src/exiv2.cpp:436 src/exiv2.cpp:495 -#: src/exiv2.cpp:682 -msgid "Option" -msgstr "" - -#: src/exiv2.cpp:372 -msgid "requires an argument\n" -msgstr "" - -#: src/exiv2.cpp:376 -msgid "Unrecognized option" -msgstr "" - -#: src/exiv2.cpp:382 -msgid "getopt returned unexpected character code" -msgstr "" - -#: src/exiv2.cpp:402 -msgid "Invalid argument" -msgstr "" - -#: src/exiv2.cpp:427 src/exiv2.cpp:480 -msgid "Ignoring surplus option" -msgstr "" - -#: src/exiv2.cpp:437 src/exiv2.cpp:497 src/exiv2.cpp:683 -msgid "is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:452 -msgid "Ignoring surplus option -a" -msgstr "" - -#: src/exiv2.cpp:458 -msgid "Error parsing -a option argument" -msgstr "" - -#: src/exiv2.cpp:465 -msgid "Option -a is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:487 -msgid "Error parsing" -msgstr "" - -#: src/exiv2.cpp:489 -msgid "option argument" -msgstr "" - -#: src/exiv2.cpp:520 -msgid "Unrecognized print mode" -msgstr "" - -#: src/exiv2.cpp:528 -msgid "Ignoring surplus option -p" -msgstr "" - -#: src/exiv2.cpp:532 -msgid "Option -p is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:563 -msgid "Unrecognized print item" -msgstr "" - -#: src/exiv2.cpp:572 -msgid "Ignoring surplus option -P" -msgstr "" - -#: src/exiv2.cpp:576 -msgid "Option -P is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:603 -msgid "Option -d is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:631 -msgid "Option -e is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:659 -msgid "Option -i is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:700 -msgid "Action adjust is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:709 -msgid "Action print is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:718 -msgid "Action delete is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:729 -msgid "Action extract is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:740 -msgid "Action insert is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:749 -msgid "Action rename is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:758 -msgid "Action modify is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:767 -msgid "Action fixiso is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:776 -msgid "Action fixcom is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:800 -msgid "An action must be specified\n" -msgstr "" - -#: src/exiv2.cpp:809 -msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" -msgstr "" - -#: src/exiv2.cpp:815 -msgid "Modify action requires at least one -c, -m or -M option\n" -msgstr "" - -#: src/exiv2.cpp:819 -msgid "At least one file is required\n" -msgstr "" - -#: src/exiv2.cpp:825 -msgid "Error parsing -m option arguments\n" -msgstr "" - -#: src/exiv2.cpp:832 -msgid "Error parsing -M option arguments\n" -msgstr "" - -#: src/exiv2.cpp:843 -msgid "-l option can only be used with extract or insert actions\n" -msgstr "" - -#: src/exiv2.cpp:848 -msgid "-S option can only be used with insert action\n" -msgstr "" - -#: src/exiv2.cpp:853 -msgid "-t option can only be used with rename action\n" -msgstr "" - -#: src/exiv2.cpp:858 -msgid "-T option can only be used with rename action\n" -msgstr "" - -#: src/exiv2.cpp:938 -msgid "Unrecognized " -msgstr "" - -#: src/exiv2.cpp:939 -msgid "target" -msgstr "" - -#: src/exiv2.cpp:965 -msgid "Invalid preview number" -msgstr "" - -#: src/exiv2.cpp:997 -msgid "Failed to open command file for reading\n" -msgstr "" - -#: src/exiv2.cpp:1010 -msgid "line" -msgstr "" - -#: src/exiv2.cpp:1033 -msgid "-M option" -msgstr "" - -#: src/exiv2.cpp:1054 src/exiv2.cpp:1113 src/exiv2.cpp:1125 -msgid "Invalid command line" -msgstr "" - -#: src/exiv2.cpp:1061 -msgid "Invalid command" -msgstr "" - -#: src/exiv2.cpp:1093 -msgid "Invalid key" -msgstr "" - -#: src/fujimn.cpp:62 -msgid "Soft mode 1" -msgstr "" - -#: src/fujimn.cpp:63 -msgid "Soft mode 2" -msgstr "" - -#: src/fujimn.cpp:65 -#, fuzzy -msgid "Hard mode 1" -msgstr "Makrotila" - -#: src/fujimn.cpp:66 -#, fuzzy -msgid "Hard mode 2" -msgstr "Makrotila" - -#: src/fujimn.cpp:72 src/minoltamn.cpp:219 src/minoltamn.cpp:683 -#: src/minoltamn.cpp:869 src/minoltamn.cpp:1193 src/minoltamn.cpp:2094 -#: src/nikonmn.cpp:447 src/panasonicmn.cpp:65 src/pentaxmn.cpp:312 -#: src/sonymn.cpp:165 src/tags.cpp:1428 -msgid "Daylight" -msgstr "" - -#: src/fujimn.cpp:74 -#, fuzzy -msgid "Fluorescent (daylight)" -msgstr "Valkoinen loisteputki" - -#: src/fujimn.cpp:75 -#, fuzzy -msgid "Fluorescent (warm white)" -msgstr "Valkoinen loisteputki" - -#: src/fujimn.cpp:76 -#, fuzzy -msgid "Fluorescent (cool white)" -msgstr "Valkoinen loisteputki" - -#: src/fujimn.cpp:77 src/nikonmn.cpp:448 src/sonymn.cpp:170 -msgid "Incandescent" -msgstr "" - -#: src/fujimn.cpp:87 src/fujimn.cpp:88 -#, fuzzy -msgid "None (black & white)" -msgstr "Mustavalko" - -#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 -#, fuzzy -msgid "Red-eye reduction" -msgstr "Päällä, punasilmäisyyden esto" - -#: src/fujimn.cpp:119 src/tags.cpp:1504 src/tags.cpp:1505 -msgid "Night scene" -msgstr "" - -#: src/fujimn.cpp:120 src/pentaxmn.cpp:496 src/pentaxmn.cpp:503 -#: src/sonymn.cpp:518 -#, fuzzy -msgid "Program AE" -msgstr "Ohjelma" - -#: src/fujimn.cpp:121 -msgid "Natural light" -msgstr "" - -#: src/fujimn.cpp:122 -msgid "Anti-blur" -msgstr "" - -#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 -#: src/minoltamn.cpp:1888 src/minoltamn.cpp:2037 src/olympusmn.cpp:108 -#: src/panasonicmn.cpp:130 src/pentaxmn.cpp:481 src/sonymn.cpp:479 -#: src/sonymn.cpp:525 -#, fuzzy -msgid "Sunset" -msgstr "Aseta" - -#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:485 -#, fuzzy -msgid "Museum" -msgstr "Keskikokoinen" - -#: src/fujimn.cpp:125 src/panasonicmn.cpp:117 -#, fuzzy -msgid "Party" -msgstr "Osa-alue" - -#: src/fujimn.cpp:126 -msgid "Flower" -msgstr "" - -#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 -#: src/minoltamn.cpp:2035 src/pentaxmn.cpp:480 -msgid "Text" -msgstr "" - -#: src/fujimn.cpp:128 -msgid "Natural light & flash" -msgstr "" - -#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:519 -#, fuzzy -msgid "Aperture-priority AE" -msgstr "Aukon esivalinta (Av)" - -#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:520 -#, fuzzy -msgid "Shutter speed priority AE" -msgstr "Valotusajan esivalinta (Tv)" - -#: src/fujimn.cpp:142 -msgid "No flash & flash" -msgstr "" - -#: src/fujimn.cpp:148 -msgid "Chrome" -msgstr "" - -#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 -#: src/minoltamn.cpp:1936 src/panasonicmn.cpp:211 -msgid "Wide" -msgstr "" - -#: src/fujimn.cpp:160 -msgid "F0/Standard" -msgstr "" - -#: src/fujimn.cpp:161 -msgid "F1/Studio portrait" -msgstr "" - -#: src/fujimn.cpp:162 -msgid "F2/Fujichrome" -msgstr "" - -#: src/fujimn.cpp:163 -msgid "F3/Studio portrait Ex" -msgstr "" - -#: src/fujimn.cpp:164 -msgid "F4/Velvia" -msgstr "" - -#: src/fujimn.cpp:169 -msgid "Auto (100-400%)" -msgstr "" - -#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 -#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2056 -#: src/olympusmn.cpp:74 src/panasonicmn.cpp:58 -msgid "Raw" -msgstr "" - -#: src/fujimn.cpp:171 -msgid "Standard (100%)" -msgstr "" - -#: src/fujimn.cpp:172 -msgid "Wide mode 1 (230%)" -msgstr "" - -#: src/fujimn.cpp:173 -msgid "Wide mode 2 (400%)" -msgstr "" - -#: src/fujimn.cpp:174 -msgid "Film simulation mode" -msgstr "" - -#: src/fujimn.cpp:179 src/nikonmn.cpp:213 src/nikonmn.cpp:524 -#: src/nikonmn.cpp:646 src/nikonmn.cpp:691 src/nikonmn.cpp:843 -#: src/nikonmn.cpp:867 src/nikonmn.cpp:888 src/nikonmn.cpp:1001 -#: src/nikonmn.cpp:1023 src/nikonmn.cpp:1043 src/nikonmn.cpp:1063 -#: src/nikonmn.cpp:1076 src/nikonmn.cpp:1135 src/nikonmn.cpp:1195 -#: src/nikonmn.cpp:1225 src/nikonmn.cpp:1245 src/nikonmn.cpp:1258 -#: src/nikonmn.cpp:1271 src/nikonmn.cpp:1284 src/nikonmn.cpp:1297 -#: src/nikonmn.cpp:1310 src/nikonmn.cpp:1323 src/nikonmn.cpp:1342 -#: src/nikonmn.cpp:1367 src/panasonicmn.cpp:335 src/pentaxmn.cpp:865 -#: src/properties.cpp:470 -#, fuzzy -msgid "Version" -msgstr "Ohjelman versio" - -#: src/fujimn.cpp:180 -#, fuzzy -msgid "Fujifilm Makernote version" -msgstr "Firmwaren versio" - -#: src/fujimn.cpp:183 src/panasonicmn.cpp:250 -msgid "" -"This number is unique, and contains the date of manufacture, but is not the " -"same as the number printed on the camera body." -msgstr "" - -#: src/fujimn.cpp:187 src/nikonmn.cpp:223 src/nikonmn.cpp:460 -#: src/nikonmn.cpp:527 src/olympusmn.cpp:199 -#, fuzzy -msgid "Image quality setting" -msgstr "Kuvan laatu" - -#: src/fujimn.cpp:195 src/nikonmn.cpp:422 -#, fuzzy -msgid "Color" -msgstr "Väriavaruus" - -#: src/fujimn.cpp:196 -msgid "Chroma saturation setting" -msgstr "" - -#: src/fujimn.cpp:198 -#, fuzzy -msgid "Tone" -msgstr "Ei käytössä" - -#: src/fujimn.cpp:202 -msgid "Flash firing mode setting" -msgstr "" - -#: src/fujimn.cpp:204 -#, fuzzy -msgid "Flash Strength" -msgstr "Salaman tyyppi" - -#: src/fujimn.cpp:205 -msgid "Flash firing strength compensation setting" -msgstr "" - -#: src/fujimn.cpp:208 -#, fuzzy -msgid "Macro mode setting" -msgstr "Makrotila" - -#: src/fujimn.cpp:211 -msgid "Focusing mode setting" -msgstr "" - -#: src/fujimn.cpp:216 -msgid "Slow Sync" -msgstr "" - -#: src/fujimn.cpp:217 -msgid "Slow synchro mode setting" -msgstr "" - -#: src/fujimn.cpp:219 src/olympusmn.cpp:690 src/olympusmn.cpp:891 -#, fuzzy -msgid "Picture Mode" -msgstr "Kuvan tiedot" - -#: src/fujimn.cpp:220 -#, fuzzy -msgid "Picture mode setting" -msgstr "Kuvan tiedot" - -#: src/fujimn.cpp:226 -msgid "Continuous shooting or auto bracketing setting" -msgstr "" - -#: src/fujimn.cpp:228 src/panasonicmn.cpp:256 src/sonymn.cpp:414 -#, fuzzy -msgid "Sequence Number" -msgstr "Sarjanumero" - -#: src/fujimn.cpp:229 src/olympusmn.cpp:1158 src/panasonicmn.cpp:256 -msgid "Sequence number" -msgstr "" - -#: src/fujimn.cpp:234 -msgid "FinePix Color" -msgstr "" - -#: src/fujimn.cpp:235 -msgid "Fuji FinePix color setting" -msgstr "" - -#: src/fujimn.cpp:237 -#, fuzzy -msgid "Blur Warning" -msgstr "Varoitus" - -#: src/fujimn.cpp:238 -msgid "Blur warning status" -msgstr "" - -#: src/fujimn.cpp:240 -#, fuzzy -msgid "Focus Warning" -msgstr "Varoitus" - -#: src/fujimn.cpp:241 -msgid "Auto Focus warning status" -msgstr "" - -#: src/fujimn.cpp:243 -#, fuzzy -msgid "Exposure Warning" -msgstr "Valotuksen korjaus" - -#: src/fujimn.cpp:244 -msgid "Auto exposure warning status" -msgstr "" - -#: src/fujimn.cpp:246 -msgid "Dynamic Range" -msgstr "" - -#: src/fujimn.cpp:247 -msgid "Dynamic range" -msgstr "" - -#: src/fujimn.cpp:249 src/panasonicmn.cpp:273 -#, fuzzy -msgid "Film Mode" -msgstr "Salaman tila" - -#: src/fujimn.cpp:250 src/panasonicmn.cpp:273 -#, fuzzy -msgid "Film mode" -msgstr "Salaman malli" - -#: src/fujimn.cpp:252 -#, fuzzy -msgid "Dynamic Range Setting" -msgstr "Kameran asetukset" - -#: src/fujimn.cpp:253 -#, fuzzy -msgid "Dynamic range settings" -msgstr "Kameran asetukset" - -#: src/fujimn.cpp:255 -msgid "Development Dynamic Range" -msgstr "" - -#: src/fujimn.cpp:256 -msgid "Development dynamic range" -msgstr "" - -#: src/fujimn.cpp:258 -#, fuzzy -msgid "Minimum Focal Length" -msgstr "Polttoväli" - -#: src/fujimn.cpp:259 -#, fuzzy -msgid "Minimum focal length" -msgstr "Polttoväli" - -#: src/fujimn.cpp:261 -#, fuzzy -msgid "Maximum Focal Length" -msgstr "Polttoväli" - -#: src/fujimn.cpp:262 -#, fuzzy -msgid "Maximum focal length" -msgstr "Polttoväli" - -#: src/fujimn.cpp:264 -msgid "Maximum Aperture at Mininimum Focal" -msgstr "" - -#: src/fujimn.cpp:265 -msgid "Maximum aperture at mininimum focal" -msgstr "" - -#: src/fujimn.cpp:267 -msgid "Maximum Aperture at Maxinimum Focal" -msgstr "" - -#: src/fujimn.cpp:268 -msgid "Maximum aperture at maxinimum focal" -msgstr "" - -#: src/fujimn.cpp:270 src/properties.cpp:577 src/tags.cpp:1759 -msgid "File Source" -msgstr "Kuvalähde" - -#: src/fujimn.cpp:271 -msgid "File source" -msgstr "Kuvalähde" - -#: src/fujimn.cpp:273 -#, fuzzy -msgid "Order Number" -msgstr "Sarjanumero" - -#: src/fujimn.cpp:274 -#, fuzzy -msgid "Order number" -msgstr "Tiedostonimi" - -#: src/fujimn.cpp:276 -#, fuzzy -msgid "Frame Number" -msgstr "F-luku" - -#: src/fujimn.cpp:277 src/pentaxmn.cpp:977 src/pentaxmn.cpp:978 -#, fuzzy -msgid "Frame number" -msgstr "Tiedostonimi" - -#: src/fujimn.cpp:281 -msgid "Unknown FujiMakerNote tag" -msgstr "" - -#: src/minoltamn.cpp:56 -msgid "Natural Color" -msgstr "" - -#: src/minoltamn.cpp:58 src/minoltamn.cpp:1885 -msgid "Vivid Color" -msgstr "" - -#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 -#, fuzzy -msgid "Solarization" -msgstr "Värikylläisyys" - -#: src/minoltamn.cpp:60 src/minoltamn.cpp:1891 -msgid "AdobeRGB" -msgstr "" - -#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:611 -#: src/olympusmn.cpp:853 src/panasonicmn.cpp:198 src/pentaxmn.cpp:702 -#, fuzzy -msgid "Natural" -msgstr "Neutraali" - -#: src/minoltamn.cpp:64 -msgid "Natural sRGB" -msgstr "" - -#: src/minoltamn.cpp:65 -msgid "Natural+ sRGB" -msgstr "" - -#: src/minoltamn.cpp:67 -msgid "Evening" -msgstr "" - -#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2040 -#: src/sonymn.cpp:526 -#, fuzzy -msgid "Night Portrait" -msgstr "Muotokuva" - -#: src/minoltamn.cpp:75 src/minoltamn.cpp:2057 -msgid "Super Fine" -msgstr "" - -#: src/minoltamn.cpp:79 src/minoltamn.cpp:2003 src/minoltamn.cpp:2061 -msgid "Extra Fine" -msgstr "" - -#: src/minoltamn.cpp:90 -#, fuzzy -msgid "Makernote Version" -msgstr "Firmwaren versio" - -#: src/minoltamn.cpp:91 -msgid "String 'MLT0' (not null terminated)" -msgstr "" - -#: src/minoltamn.cpp:93 -#, fuzzy -msgid "Camera Settings (Std Old)" -msgstr "Kameran asetukset" - -#: src/minoltamn.cpp:94 -msgid "" -"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" -msgstr "" - -#: src/minoltamn.cpp:96 -#, fuzzy -msgid "Camera Settings (Std New)" -msgstr "Kameran asetukset" - -#: src/minoltamn.cpp:97 -msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" -msgstr "" - -#: src/minoltamn.cpp:99 -#, fuzzy -msgid "Camera Settings (7D)" -msgstr "Kameran asetukset" - -#: src/minoltamn.cpp:100 -msgid "Camera Settings (for Dynax 7D model)" -msgstr "" - -#: src/minoltamn.cpp:102 -#, fuzzy -msgid "Image Stabilization Data" -msgstr "Kuvan vakautus" - -#: src/minoltamn.cpp:103 -#, fuzzy -msgid "Image stabilization data" -msgstr "Kuvan vakautus" - -#: src/minoltamn.cpp:107 -msgid "WB Info A100" -msgstr "" - -#: src/minoltamn.cpp:108 -msgid "White balance information for the Sony DSLR-A100" -msgstr "" - -#: src/minoltamn.cpp:111 -#, fuzzy -msgid "Compressed Image Size" -msgstr "Kuvan koko" - -#: src/minoltamn.cpp:112 -msgid "Compressed image size" -msgstr "" - -#: src/minoltamn.cpp:115 -msgid "Jpeg thumbnail 640x480 pixels" -msgstr "" - -#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 -#, fuzzy -msgid "Thumbnail Offset" -msgstr "Näytekuvat" - -#: src/minoltamn.cpp:118 -msgid "Offset of the thumbnail" -msgstr "" - -#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 -#, fuzzy -msgid "Thumbnail Length" -msgstr "Näytekuva" - -#: src/minoltamn.cpp:121 -#, fuzzy -msgid "Size of the thumbnail" -msgstr "Tallennetaan näytekuvaa" - -#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:573 -#: src/olympusmn.cpp:252 src/olympusmn.cpp:684 src/panasonicmn.cpp:282 -#: src/sonymn.cpp:363 src/sonymn.cpp:364 -#, fuzzy -msgid "Scene Mode" -msgstr "Linssin malli" - -#: src/minoltamn.cpp:128 src/minoltamn.cpp:1406 src/nikonmn.cpp:219 -#: src/nikonmn.cpp:462 src/nikonmn.cpp:526 src/panasonicmn.cpp:263 -#: src/sonymn.cpp:381 src/sonymn.cpp:382 -#, fuzzy -msgid "Color Mode" -msgstr "Väriavaruus" - -#: src/minoltamn.cpp:129 src/minoltamn.cpp:1407 src/nikonmn.cpp:220 -#: src/nikonmn.cpp:463 src/nikonmn.cpp:526 src/panasonicmn.cpp:263 -#, fuzzy -msgid "Color mode" -msgstr "Väriavaruus" - -#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 -#: src/minoltamn.cpp:990 src/panasonicmn.cpp:236 src/sonymn.cpp:274 -#, fuzzy -msgid "Image Quality" -msgstr "Kuvan laatu" - -#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 -msgid "0x0103" -msgstr "" - -#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:671 -#: src/sonymn.cpp:277 -msgid "Flash Exposure Compensation" -msgstr "" - -#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:278 -msgid "Flash exposure compensation in EV" -msgstr "" - -#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:280 -#: src/sonymn.cpp:281 -msgid "Teleconverter Model" -msgstr "" - -#: src/minoltamn.cpp:150 -msgid "RAW+JPG Recording" -msgstr "" - -#: src/minoltamn.cpp:151 -msgid "RAW and JPG files recording" -msgstr "" - -#: src/minoltamn.cpp:153 src/sonymn.cpp:366 src/sonymn.cpp:367 -msgid "Zone Matching" -msgstr "" - -#: src/minoltamn.cpp:154 -msgid "Zone matching" -msgstr "" - -#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1039 -#: src/minoltamn.cpp:1476 src/minoltamn.cpp:1578 -#, fuzzy -msgid "Color temperature" -msgstr "Väriavaruus" - -#: src/minoltamn.cpp:159 src/sonymn.cpp:375 -#, fuzzy -msgid "Lens ID" -msgstr "Linssi" - -#: src/minoltamn.cpp:160 src/sonymn.cpp:376 -#, fuzzy -msgid "Lens identifier" -msgstr "Linssin ominaisuudet" - -#: src/minoltamn.cpp:162 src/minoltamn.cpp:1478 src/minoltamn.cpp:1580 -#: src/sonymn.cpp:360 -msgid "Color Compensation Filter" -msgstr "" - -#: src/minoltamn.cpp:163 src/sonymn.cpp:361 -msgid "Color Compensation Filter: negative is green, positive is magenta" -msgstr "" - -#: src/minoltamn.cpp:165 src/minoltamn.cpp:1472 src/sonymn.cpp:283 -#: src/sonymn.cpp:563 src/sonymn.cpp:564 -#, fuzzy -msgid "White Balance Fine Tune" -msgstr "Valkotasapaino" - -#: src/minoltamn.cpp:166 src/sonymn.cpp:284 -#, fuzzy -msgid "White Balance Fine Tune Value" -msgstr " " - -#: src/minoltamn.cpp:168 -#, fuzzy -msgid "Image Stabilization A100" -msgstr "Kuvan vakautus" - -#: src/minoltamn.cpp:169 -#, fuzzy -msgid "Image Stabilization for the Sony DSLR-A100" -msgstr "Kuvan vakautus" - -#: src/minoltamn.cpp:173 -#, fuzzy -msgid "Camera Settings (5D)" -msgstr "Kameran asetukset" - -#: src/minoltamn.cpp:174 -msgid "Camera Settings (for Dynax 5D model)" -msgstr "" - -#: src/minoltamn.cpp:180 src/nikonmn.cpp:607 src/olympusmn.cpp:258 -#: src/panasonicmn.cpp:279 src/sonymn.cpp:295 -msgid "Print IM" -msgstr "" - -#: src/minoltamn.cpp:181 src/nikonmn.cpp:607 src/olympusmn.cpp:259 -#: src/panasonicmn.cpp:279 src/sonymn.cpp:296 -msgid "PrintIM information" -msgstr "" - -#: src/minoltamn.cpp:183 -#, fuzzy -msgid "Camera Settings (Z1)" -msgstr "Kameran asetukset" - -#: src/minoltamn.cpp:184 -msgid "Camera Settings (for Z1, DImage X, and F100 models)" -msgstr "" - -#: src/minoltamn.cpp:188 -msgid "Unknown Minolta MakerNote tag" -msgstr "" - -#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 -#: src/panasonicmn.cpp:107 src/sigmamn.cpp:155 src/sonymn.cpp:111 -#: src/tags.cpp:1404 -msgid "Aperture priority" -msgstr "" - -#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 -#: src/sigmamn.cpp:156 src/sonymn.cpp:112 src/tags.cpp:1405 -msgid "Shutter priority" -msgstr "" - -#: src/minoltamn.cpp:209 src/minoltamn.cpp:1122 -#, fuzzy -msgid "Fill flash" -msgstr "Salama" - -#: src/minoltamn.cpp:211 src/minoltamn.cpp:1120 -msgid "Rear flash sync" -msgstr "" - -#: src/minoltamn.cpp:212 src/minoltamn.cpp:1121 -#, fuzzy -msgid "Wireless" -msgstr "Päällä, langaton" - -#: src/minoltamn.cpp:224 -#, fuzzy -msgid "Fluorescent 2" -msgstr "Valkoinen loisteputki" - -#: src/minoltamn.cpp:231 -#, fuzzy -msgid "Full size" -msgstr "Tiedoston koko" - -#: src/minoltamn.cpp:243 -msgid "Super fine" -msgstr "" - -#: src/minoltamn.cpp:247 -msgid "Extra fine" -msgstr "" - -#: src/minoltamn.cpp:252 src/minoltamn.cpp:1099 src/minoltamn.cpp:1148 -#: src/sonymn.cpp:447 -#, fuzzy -msgid "Single Frame" -msgstr "Tiedostonimi" - -#: src/minoltamn.cpp:254 src/minoltamn.cpp:1150 -msgid "Self-timer" -msgstr "" - -#: src/minoltamn.cpp:255 -#, fuzzy -msgid "Bracketing" -msgstr "Makrotila" - -#: src/minoltamn.cpp:256 -#, fuzzy -msgid "Interval" -msgstr "Sisäinen salama" - -#: src/minoltamn.cpp:257 -msgid "UHS continuous" -msgstr "" - -#: src/minoltamn.cpp:258 -msgid "HS continuous" -msgstr "" - -#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1127 -#: src/sonymn.cpp:468 src/tags.cpp:1419 -msgid "Multi-segment" -msgstr "" - -#: src/minoltamn.cpp:264 src/minoltamn.cpp:1128 src/sonymn.cpp:469 -#: src/tags.cpp:1416 -#, fuzzy -msgid "Center weighted average" -msgstr "Keskustaa painottava" - -#: src/minoltamn.cpp:271 -msgid "Electronic magnification" -msgstr "" - -#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:1951 -#: src/nikonmn.cpp:100 src/nikonmn.cpp:793 src/nikonmn.cpp:808 -#: src/pentaxmn.cpp:216 -msgid "Top" -msgstr "" - -#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:234 -#, fuzzy -msgid "Top-right" -msgstr "Omistusoikeus" - -#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:240 -msgid "Bottom-right" -msgstr "" - -#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:1955 -#: src/nikonmn.cpp:101 src/nikonmn.cpp:794 src/nikonmn.cpp:809 -#: src/pentaxmn.cpp:224 -msgid "Bottom" -msgstr "" - -#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:238 -msgid "Bottom-left" -msgstr "" - -#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:232 -msgid "Top-left" -msgstr "" - -#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:368 -#: src/tags.cpp:1521 -msgid "Hard" -msgstr "" - -#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:366 -#: src/tags.cpp:1520 -#, fuzzy -msgid "Soft" -msgstr "Piste" - -#: src/minoltamn.cpp:313 src/panasonicmn.cpp:105 -#, fuzzy -msgid "Night portrait" -msgstr "Muotokuva" - -#: src/minoltamn.cpp:315 -#, fuzzy -msgid "Sports action" -msgstr "Urheilukuva" - -#: src/minoltamn.cpp:344 -msgid "Time-lapse movie" -msgstr "" - -#: src/minoltamn.cpp:349 -msgid "Standard form" -msgstr "" - -#: src/minoltamn.cpp:350 -msgid "Data form" -msgstr "" - -#: src/minoltamn.cpp:355 -msgid "Natural color" -msgstr "" - -#: src/minoltamn.cpp:356 src/panasonicmn.cpp:70 src/panasonicmn.cpp:148 -#, fuzzy -msgid "Black and white" -msgstr "Mustavalko" - -#: src/minoltamn.cpp:357 -msgid "Vivid color" -msgstr "" - -#: src/minoltamn.cpp:364 -#, fuzzy -msgid "No zone" -msgstr "Ei käytössä" - -#: src/minoltamn.cpp:365 -msgid "Center zone (horizontal orientation)" -msgstr "" - -#: src/minoltamn.cpp:366 -msgid "Center zone (vertical orientation)" -msgstr "" - -#: src/minoltamn.cpp:367 -msgid "Left zone" -msgstr "" - -#: src/minoltamn.cpp:368 -msgid "Right zone" -msgstr "" - -#: src/minoltamn.cpp:373 src/olympusmn.cpp:999 -#, fuzzy -msgid "Auto focus" -msgstr "Vaihtuva tarkennus, AF" - -#: src/minoltamn.cpp:379 -msgid "Wide focus (normal)" -msgstr "" - -#: src/minoltamn.cpp:380 -#, fuzzy -msgid "Spot focus" -msgstr "Käytetty AF-piste" - -#: src/minoltamn.cpp:385 src/properties.cpp:452 src/sigmamn.cpp:86 -#: src/sigmamn.cpp:87 -#, fuzzy -msgid "Exposure" -msgstr "Valotuksen korjaus" - -#: src/minoltamn.cpp:388 -msgid "Filter" -msgstr "" - -#: src/minoltamn.cpp:393 -msgid "Not embedded" -msgstr "" - -#: src/minoltamn.cpp:394 -msgid "Embedded" -msgstr "" - -#: src/minoltamn.cpp:403 -msgid "Text + ID#" -msgstr "" - -#: src/minoltamn.cpp:408 -msgid "ADI (Advanced Distance Integration)" -msgstr "" - -#: src/minoltamn.cpp:409 -msgid "Pre-flash TTl" -msgstr "" - -#: src/minoltamn.cpp:410 -#, fuzzy -msgid "Manual flash control" -msgstr "Täysautomatiikka" - -#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:984 -#: src/minoltamn.cpp:1352 src/olympusmn.cpp:659 src/properties.cpp:581 -#: src/sigmamn.cpp:74 src/sonymn.cpp:393 src/sonymn.cpp:394 src/tags.cpp:1780 -msgid "Exposure Mode" -msgstr "Valotustila" - -#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 -#: src/olympusmn.cpp:670 src/pentaxmn.cpp:896 -#, fuzzy -msgid "Flash mode" -msgstr "Salaman malli" - -#: src/minoltamn.cpp:506 src/minoltamn.cpp:1428 src/olympusmn.cpp:700 -#: src/pentaxmn.cpp:991 src/pentaxmn.cpp:992 src/sigmamn.cpp:60 -#, fuzzy -msgid "Drive mode" -msgstr "Kameran malli" - -#: src/minoltamn.cpp:512 -#, fuzzy -msgid "ISO Value" -msgstr "ISO-herkkyys" - -#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1023 -#: src/minoltamn.cpp:1367 src/properties.cpp:548 src/tags.cpp:782 -#: src/tags.cpp:1542 -msgid "Exposure Time" -msgstr "Valotusaika" - -#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1026 -#: src/minoltamn.cpp:1370 src/minoltamn.cpp:1371 src/tags.cpp:783 -#: src/tags.cpp:1545 -msgid "FNumber" -msgstr "F-luku" - -#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1027 -msgid "The F-Number" -msgstr "F-luku" - -#: src/minoltamn.cpp:520 src/olympusmn.cpp:663 -msgid "Macro Mode" -msgstr "Makrotila" - -#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1044 -#, fuzzy -msgid "Exposure Compensation" -msgstr "Valotustila" - -#: src/minoltamn.cpp:529 -#, fuzzy -msgid "Bracket Step" -msgstr "Makrotila" - -#: src/minoltamn.cpp:530 -#, fuzzy -msgid "Bracket step" -msgstr "Makrotila" - -#: src/minoltamn.cpp:532 -#, fuzzy -msgid "Interval Length" -msgstr "Polttoväli" - -#: src/minoltamn.cpp:533 -#, fuzzy -msgid "Interval length" -msgstr "Sisäinen salama" - -#: src/minoltamn.cpp:535 -#, fuzzy -msgid "Interval Number" -msgstr "Sarjanumero" - -#: src/minoltamn.cpp:536 -#, fuzzy -msgid "Interval number" -msgstr "Linssin sarjanumero" - -#: src/minoltamn.cpp:541 src/nikonmn.cpp:252 src/nikonmn.cpp:564 -#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1371 src/olympusmn.cpp:303 -#: src/olympusmn.cpp:1007 -#, fuzzy -msgid "Focus Distance" -msgstr "Kohteen etäisyys" - -#: src/minoltamn.cpp:542 src/nikonmn.cpp:1346 src/nikonmn.cpp:1371 -#: src/olympusmn.cpp:1007 -#, fuzzy -msgid "Focus distance" -msgstr "Kohteen etäisyys" - -#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1002 -#, fuzzy -msgid "Flash Fired" -msgstr "Salamavalotuksen korjaus" - -#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1003 -#, fuzzy -msgid "Flash fired" -msgstr "Salamavalotuksen korjaus" - -#: src/minoltamn.cpp:547 -msgid "Minolta Date" -msgstr "" - -#: src/minoltamn.cpp:548 -msgid "Minolta date" -msgstr "" - -#: src/minoltamn.cpp:550 -msgid "Minolta Time" -msgstr "" - -#: src/minoltamn.cpp:551 -msgid "Minolta time" -msgstr "" - -#: src/minoltamn.cpp:556 -#, fuzzy -msgid "File Number Memory" -msgstr "F-luku" - -#: src/minoltamn.cpp:557 -#, fuzzy -msgid "File number memory" -msgstr "Tiedostonimi" - -#: src/minoltamn.cpp:559 -#, fuzzy -msgid "Last Image Number" -msgstr "Kuvan numero" - -#: src/minoltamn.cpp:560 -#, fuzzy -msgid "Last image number" -msgstr "Kuvan numero" - -#: src/minoltamn.cpp:562 -#, fuzzy -msgid "Color Balance Red" -msgstr "Väriavaruus" - -#: src/minoltamn.cpp:563 -#, fuzzy -msgid "Color balance red" -msgstr "Väriavaruus" - -#: src/minoltamn.cpp:565 -#, fuzzy -msgid "Color Balance Green" -msgstr "Väriavaruus" - -#: src/minoltamn.cpp:566 -#, fuzzy -msgid "Color balance green" -msgstr "Väriavaruus" - -#: src/minoltamn.cpp:568 -#, fuzzy -msgid "Color Balance Blue" -msgstr "Väriavaruus" - -#: src/minoltamn.cpp:569 -#, fuzzy -msgid "Color balance blue" -msgstr "Väriavaruus" - -#: src/minoltamn.cpp:580 -#, fuzzy -msgid "Subject Program" -msgstr "Kuvaustapa" - -#: src/minoltamn.cpp:581 -msgid "Subject program" -msgstr "" - -#: src/minoltamn.cpp:586 src/nikonmn.cpp:542 -#, fuzzy -msgid "ISO Settings" -msgstr "Asetukset" - -#: src/minoltamn.cpp:587 src/minoltamn.cpp:1398 src/nikonmn.cpp:542 -#, fuzzy -msgid "ISO setting" -msgstr "Asetukset" - -#: src/minoltamn.cpp:589 -#, fuzzy -msgid "Minolta Model" -msgstr "Salaman malli" - -#: src/minoltamn.cpp:590 -#, fuzzy -msgid "Minolta model" -msgstr "Salaman malli" - -#: src/minoltamn.cpp:592 -#, fuzzy -msgid "Interval Mode" -msgstr "Sisäinen salama" - -#: src/minoltamn.cpp:593 -#, fuzzy -msgid "Interval mode" -msgstr "Kameran malli" - -#: src/minoltamn.cpp:595 -#, fuzzy -msgid "Folder Name" -msgstr "Tiedostonimi" - -#: src/minoltamn.cpp:596 -#, fuzzy -msgid "Folder name" -msgstr "Tiedostonimi" - -#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 -#, fuzzy -msgid "ColorMode" -msgstr "Väriavaruus" - -#: src/minoltamn.cpp:601 src/minoltamn.cpp:1204 src/pentaxmn.cpp:462 -#, fuzzy -msgid "Color Filter" -msgstr "Väriavaruus" - -#: src/minoltamn.cpp:602 -#, fuzzy -msgid "Color filter" -msgstr "Väriavaruus" - -#: src/minoltamn.cpp:604 -#, fuzzy -msgid "Black and White Filter" -msgstr "Mustavalkoinen" - -#: src/minoltamn.cpp:605 -#, fuzzy -msgid "Black and white filter" -msgstr "Mustavalko" - -#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1013 -#, fuzzy -msgid "Internal Flash" -msgstr "Sisäinen salama" - -#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:698 -#: src/olympusmn.cpp:276 src/properties.cpp:438 src/sonymn.cpp:602 -#: src/sonymn.cpp:603 src/tags.cpp:1630 -msgid "Brightness" -msgstr "" - -#: src/minoltamn.cpp:613 -msgid "Spot Focus Point X" -msgstr "" - -#: src/minoltamn.cpp:614 -msgid "Spot focus point X" -msgstr "" - -#: src/minoltamn.cpp:616 -msgid "Spot Focus Point Y" -msgstr "" - -#: src/minoltamn.cpp:617 -msgid "Spot focus point Y" -msgstr "" - -#: src/minoltamn.cpp:619 -#, fuzzy -msgid "Wide Focus Zone" -msgstr "Tarkennustapa" - -#: src/minoltamn.cpp:620 -msgid "Wide focus zone" -msgstr "" - -#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1036 -#: src/minoltamn.cpp:1380 src/nikonmn.cpp:232 src/nikonmn.cpp:475 -#: src/nikonmn.cpp:530 src/olympusmn.cpp:301 src/olympusmn.cpp:664 -#: src/panasonicmn.cpp:240 src/pentaxmn.cpp:899 -#, fuzzy -msgid "Focus mode" -msgstr "Tarkennustapa" - -#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1000 -#, fuzzy -msgid "Focus area" -msgstr "Tarkennustapa" - -#: src/minoltamn.cpp:628 -msgid "DEC Switch Position" -msgstr "" - -#: src/minoltamn.cpp:629 -msgid "DEC switch position" -msgstr "" - -#: src/minoltamn.cpp:631 -#, fuzzy -msgid "Color Profile" -msgstr "Väriavaruus" - -#: src/minoltamn.cpp:632 -#, fuzzy -msgid "Color profile" -msgstr "Väriavaruus" - -#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 -msgid "Data Imprint" -msgstr "" - -#: src/minoltamn.cpp:637 src/minoltamn.cpp:1421 -#, fuzzy -msgid "Flash Metering" -msgstr "Salaman tila" - -#: src/minoltamn.cpp:638 src/minoltamn.cpp:1422 -#, fuzzy -msgid "Flash metering" -msgstr "Salaman tyyppi" - -#: src/minoltamn.cpp:642 -#, fuzzy -msgid "Unknown Minolta Camera Settings tag" -msgstr "Kameran asetukset" - -#: src/minoltamn.cpp:660 -#, fuzzy -msgid "Program-shift A" -msgstr "Ohjelma" - -#: src/minoltamn.cpp:661 -#, fuzzy -msgid "Program-shift S" -msgstr "Ohjelma" - -#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 -#, fuzzy -msgid "Raw+Jpeg" -msgstr "Kuvan koko" - -#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/pentaxmn.cpp:322 -msgid "Kelvin" -msgstr "" - -#: src/minoltamn.cpp:695 -#, fuzzy -msgid "Single-shot AF" -msgstr "Kertatarkennus, AF" - -#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1371 -msgid "Continuous AF" -msgstr "" - -#: src/minoltamn.cpp:698 -msgid "Automatic AF" -msgstr "" - -#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 -msgid "sRGB (Natural)" -msgstr "" - -#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 -msgid "sRGB (Natural+)" -msgstr "" - -#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2019 -#: src/panasonicmn.cpp:190 -msgid "Horizontal (normal)" -msgstr "" - -#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2020 -#: src/panasonicmn.cpp:191 -msgid "Rotate 90 CW" -msgstr "" - -#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2021 -#: src/panasonicmn.cpp:192 -msgid "Rotate 270 CW" -msgstr "" - -#: src/minoltamn.cpp:756 -#, fuzzy -msgid "AF Points" -msgstr "AF-piste" - -#: src/minoltamn.cpp:757 -#, fuzzy -msgid "AF points" -msgstr "AF-piste" - -#: src/minoltamn.cpp:771 src/minoltamn.cpp:1011 src/minoltamn.cpp:1409 -#: src/nikonmn.cpp:551 src/olympusmn.cpp:683 src/olympusmn.cpp:802 -#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 src/properties.cpp:532 -#: src/sigmamn.cpp:83 src/tags.cpp:1684 -msgid "Color Space" -msgstr "Väriavaruus" - -#: src/minoltamn.cpp:772 src/minoltamn.cpp:1012 src/minoltamn.cpp:1410 -#: src/nikonmn.cpp:551 src/olympusmn.cpp:683 src/olympusmn.cpp:817 -#: src/olympusmn.cpp:888 src/pentaxmn.cpp:995 src/pentaxmn.cpp:996 -#: src/sigmamn.cpp:84 -msgid "Color space" -msgstr "Väriavaruus" - -#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1029 -#: src/minoltamn.cpp:1047 src/minoltamn.cpp:1457 -msgid "Free Memory Card Images" -msgstr "" - -#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1030 -#: src/minoltamn.cpp:1048 src/minoltamn.cpp:1458 -msgid "Free memory card images" -msgstr "" - -#: src/minoltamn.cpp:789 -msgid "Hue" -msgstr "" - -#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1041 -#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1571 src/minoltamn.cpp:1572 -#: src/panasonicmn.cpp:261 src/sonymn.cpp:638 src/sonymn.cpp:639 -#: src/sonymn.cpp:711 src/sonymn.cpp:712 -#, fuzzy -msgid "Rotation" -msgstr "Värikylläisyys" - -#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1065 -#: src/tags.cpp:835 -msgid "Image Number" -msgstr "Kuvan numero" - -#: src/minoltamn.cpp:808 src/minoltamn.cpp:1069 src/minoltamn.cpp:1494 -#: src/nikonmn.cpp:579 src/olympusmn.cpp:439 src/olympusmn.cpp:685 -#: src/olympusmn.cpp:819 src/olympusmn.cpp:889 src/olympusmn.cpp:974 -#: src/panasonicmn.cpp:258 src/pentaxmn.cpp:1024 src/pentaxmn.cpp:1025 -#, fuzzy -msgid "Noise reduction" -msgstr "Päällä, punasilmäisyyden esto" - -#: src/minoltamn.cpp:817 -msgid "Zone Matching On" -msgstr "" - -#: src/minoltamn.cpp:818 -msgid "Zone matching on" -msgstr "" - -#: src/minoltamn.cpp:822 -msgid "Unknown Minolta Camera Settings 7D tag" -msgstr "" - -#: src/minoltamn.cpp:840 src/sonymn.cpp:521 -#, fuzzy -msgid "Program Shift A" -msgstr "Ohjelma" - -#: src/minoltamn.cpp:841 src/sonymn.cpp:522 -#, fuzzy -msgid "Program Shift S" -msgstr "Ohjelma" - -#: src/minoltamn.cpp:845 src/minoltamn.cpp:1889 src/minoltamn.cpp:2044 -#: src/sonymn.cpp:480 -msgid "Night View/Portrait" -msgstr "" - -#: src/minoltamn.cpp:895 -msgid "200 (Zone Matching High)" -msgstr "" - -#: src/minoltamn.cpp:896 -msgid "80 (Zone Matching Low)" -msgstr "" - -#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 -msgid "Adobe RGB (ICC)" -msgstr "" - -#: src/minoltamn.cpp:918 -#, fuzzy -msgid "Central" -msgstr "Neutraali" - -#: src/minoltamn.cpp:919 -msgid "Up" -msgstr "" - -#: src/minoltamn.cpp:920 -#, fuzzy -msgid "Up right" -msgstr "Omistusoikeus" - -#: src/minoltamn.cpp:922 -#, fuzzy -msgid "Down right" -msgstr "Omistusoikeus" - -#: src/minoltamn.cpp:923 -msgid "Down" -msgstr "" - -#: src/minoltamn.cpp:924 -msgid "Down left" -msgstr "" - -#: src/minoltamn.cpp:926 -msgid "Up left" -msgstr "" - -#: src/minoltamn.cpp:932 -msgid "Selection" -msgstr "" - -#: src/minoltamn.cpp:947 -#, fuzzy -msgid "Natural+" -msgstr "Neutraali" - -#: src/minoltamn.cpp:949 -#, fuzzy -msgid "Wind Scene" -msgstr "Linssi" - -#: src/minoltamn.cpp:950 -msgid "Evening Scene" -msgstr "" - -#: src/minoltamn.cpp:996 src/nikonmn.cpp:1345 src/nikonmn.cpp:1370 -msgid "Focus Position" -msgstr "" - -#: src/minoltamn.cpp:997 src/nikonmn.cpp:1345 src/nikonmn.cpp:1370 -msgid "Focus position" -msgstr "" - -#: src/minoltamn.cpp:999 -#, fuzzy -msgid "Focus Area" -msgstr "Tarkennustapa" - -#: src/minoltamn.cpp:1032 -#, fuzzy -msgid "Exposure Revision" -msgstr "Valotuksen korjaus" - -#: src/minoltamn.cpp:1033 -#, fuzzy -msgid "Exposure revision" -msgstr "Valotuksen korjaus" - -#: src/minoltamn.cpp:1050 src/minoltamn.cpp:1051 -#, fuzzy -msgid "Rotation2" -msgstr "Värikylläisyys" - -#: src/minoltamn.cpp:1056 src/minoltamn.cpp:1057 -#, fuzzy -msgid "Picture Finish" -msgstr "Kuvan tiedot" - -#: src/minoltamn.cpp:1059 -#, fuzzy -msgid "Exposure Manual Bias" -msgstr "Valotuksen korjaus" - -#: src/minoltamn.cpp:1060 -#, fuzzy -msgid "Exposure manual bias" -msgstr "Valotuksen korjaus" - -#: src/minoltamn.cpp:1062 src/panasonicmn.cpp:241 src/sonymn.cpp:399 -#: src/sonymn.cpp:400 -#, fuzzy -msgid "AF Mode" -msgstr "Salaman tila" - -#: src/minoltamn.cpp:1063 src/panasonicmn.cpp:241 -#, fuzzy -msgid "AF mode" -msgstr "Kameran malli" - -#: src/minoltamn.cpp:1083 -msgid "Unknown Minolta Camera Settings 5D tag" -msgstr "" - -#: src/minoltamn.cpp:1096 src/sonymn.cpp:449 -msgid "Self-timer 10 sec" -msgstr "" - -#: src/minoltamn.cpp:1098 src/sonymn.cpp:450 -msgid "Self-timer 2 sec" -msgstr "" - -#: src/minoltamn.cpp:1100 src/sonymn.cpp:453 -#, fuzzy -msgid "White Balance Bracketing Low" -msgstr " " - -#: src/minoltamn.cpp:1101 -#, fuzzy -msgid "White Balance Bracketing High" -msgstr " " - -#: src/minoltamn.cpp:1102 -msgid "Single-frame Bracketing Low" -msgstr "" - -#: src/minoltamn.cpp:1103 -msgid "Continuous Bracketing Low" -msgstr "" - -#: src/minoltamn.cpp:1104 -msgid "Single-frame Bracketing High" -msgstr "" - -#: src/minoltamn.cpp:1105 -msgid "Continuous Bracketing High" -msgstr "" - -#: src/minoltamn.cpp:1136 src/sonymn.cpp:158 -msgid "Advanced" -msgstr "" - -#: src/minoltamn.cpp:1151 src/minoltamn.cpp:1433 src/sonymn.cpp:451 -msgid "Continuous Bracketing" -msgstr "" - -#: src/minoltamn.cpp:1152 -msgid "Single-Frame Bracketing" -msgstr "" - -#: src/minoltamn.cpp:1153 src/minoltamn.cpp:1439 src/sonymn.cpp:225 -#, fuzzy -msgid "White Balance Bracketing" -msgstr "Valkotasapaino" - -#: src/minoltamn.cpp:1183 src/minoltamn.cpp:1186 src/nikonmn.cpp:446 -#, fuzzy -msgid "Preset" -msgstr "Esikatselu" - -#: src/minoltamn.cpp:1185 src/minoltamn.cpp:1188 src/minoltamn.cpp:2093 -msgid "Color Temperature/Color Filter" -msgstr "" - -#: src/minoltamn.cpp:1203 src/pentaxmn.cpp:1018 src/properties.cpp:465 -#, fuzzy -msgid "Temperature" -msgstr "Aukko" - -#: src/minoltamn.cpp:1209 -#, fuzzy -msgid "Setup" -msgstr "Aseta" - -#: src/minoltamn.cpp:1210 -msgid "Recall" -msgstr "" - -#: src/minoltamn.cpp:1215 -msgid "Ok" -msgstr "" - -#: src/minoltamn.cpp:1216 -msgid "Error" -msgstr "" - -#: src/minoltamn.cpp:1228 -#, fuzzy -msgid "Image and Information" -msgstr "Kuvan vakautus" - -#: src/minoltamn.cpp:1229 -#, fuzzy -msgid "Image Only" -msgstr "Kuvan tyyppi" - -#: src/minoltamn.cpp:1230 -#, fuzzy -msgid "Image and Histogram" -msgstr "Kuvan tyyppi" - -#: src/minoltamn.cpp:1236 -#, fuzzy -msgid "Fill Flash" -msgstr "Salama" - -#: src/minoltamn.cpp:1247 -#, fuzzy -msgid "Focus Hold" -msgstr "Tarkennustapa" - -#: src/minoltamn.cpp:1248 -#, fuzzy -msgid "DOF Preview" -msgstr "Esikatselu" - -#: src/minoltamn.cpp:1253 -msgid "Hold" -msgstr "" - -#: src/minoltamn.cpp:1254 -msgid "Toggle" -msgstr "" - -#: src/minoltamn.cpp:1255 -#, fuzzy -msgid "Spot Hold" -msgstr "Piste" - -#: src/minoltamn.cpp:1256 -msgid "Spot Toggle" -msgstr "" - -#: src/minoltamn.cpp:1261 src/olympusmn.cpp:267 -msgid "Shutter Speed" -msgstr "Valotusaika" - -#: src/minoltamn.cpp:1267 -msgid "Ambient and Flash" -msgstr "" - -#: src/minoltamn.cpp:1268 -msgid "Ambient Only" -msgstr "" - -#: src/minoltamn.cpp:1273 -msgid "0.3 seconds" -msgstr "" - -#: src/minoltamn.cpp:1274 -msgid "0.6 seconds" -msgstr "" - -#: src/minoltamn.cpp:1280 src/nikonmn.cpp:292 src/nikonmn.cpp:972 -#: src/nikonmn.cpp:1418 -msgid "Automatic" -msgstr "" - -#: src/minoltamn.cpp:1286 src/minoltamn.cpp:1292 -msgid "Auto-rotate" -msgstr "" - -#: src/minoltamn.cpp:1287 -msgid "Horizontal" -msgstr "" - -#: src/minoltamn.cpp:1293 -#, fuzzy -msgid "Manual Rotate" -msgstr "Käsintarkennus, MF" - -#: src/minoltamn.cpp:1298 -msgid "Within Range" -msgstr "" - -#: src/minoltamn.cpp:1299 -msgid "Under/Over Range" -msgstr "" - -#: src/minoltamn.cpp:1300 -msgid "Out of Range" -msgstr "" - -#: src/minoltamn.cpp:1305 -msgid "Not Indicated" -msgstr "" - -#: src/minoltamn.cpp:1306 -msgid "Under Scale" -msgstr "" - -#: src/minoltamn.cpp:1307 -msgid "Bottom of Scale" -msgstr "" - -#: src/minoltamn.cpp:1325 -msgid "Top of Scale" -msgstr "" - -#: src/minoltamn.cpp:1326 -#, fuzzy -msgid "Over Scale" -msgstr "Omistajan nimi" - -#: src/minoltamn.cpp:1331 -msgid "AM" -msgstr "" - -#: src/minoltamn.cpp:1332 src/olympusmn.cpp:512 src/olympusmn.cpp:1374 -#: src/olympusmn.cpp:1384 -msgid "MF" -msgstr "" - -#: src/minoltamn.cpp:1338 -msgid "Built-in" -msgstr "" - -#: src/minoltamn.cpp:1344 src/pentaxmn.cpp:347 src/pentaxmn.cpp:360 -msgid "Very Low" -msgstr "" - -#: src/minoltamn.cpp:1346 -msgid "Half Full" -msgstr "" - -#: src/minoltamn.cpp:1347 -msgid "Sufficient Power Remaining" -msgstr "" - -#: src/minoltamn.cpp:1355 -msgid "Exposure Compensation Setting" -msgstr "" - -#: src/minoltamn.cpp:1356 -msgid "Exposure compensation setting" -msgstr "" - -#: src/minoltamn.cpp:1358 -msgid "High Speed Sync" -msgstr "" - -#: src/minoltamn.cpp:1359 -msgid "High speed sync" -msgstr "" - -#: src/minoltamn.cpp:1361 -#, fuzzy -msgid "Manual Exposure Time" -msgstr "Valotusaika" - -#: src/minoltamn.cpp:1362 -#, fuzzy -msgid "Manual exposure time" -msgstr "Valotusaika" - -#: src/minoltamn.cpp:1364 src/minoltamn.cpp:1365 -#, fuzzy -msgid "Manual FNumber" -msgstr "Sarjanumero" - -#: src/minoltamn.cpp:1373 -msgid "Drive Mode 2" -msgstr "" - -#: src/minoltamn.cpp:1374 -msgid "Drive mode 2" -msgstr "" - -#: src/minoltamn.cpp:1382 src/minoltamn.cpp:1383 src/sonymn.cpp:572 -#: src/sonymn.cpp:573 src/sonymn.cpp:678 src/sonymn.cpp:679 -msgid "Local AF Area Point" -msgstr "" - -#: src/minoltamn.cpp:1385 src/minoltamn.cpp:1386 src/nikonmn.cpp:822 -#: src/nikonmn.cpp:845 src/sonymn.cpp:569 src/sonymn.cpp:570 -#: src/sonymn.cpp:675 src/sonymn.cpp:676 -#, fuzzy -msgid "AF Area Mode" -msgstr "Salaman tila" - -#: src/minoltamn.cpp:1388 src/minoltamn.cpp:1389 src/sonymn.cpp:605 -#: src/sonymn.cpp:606 src/sonymn.cpp:705 src/sonymn.cpp:706 -#, fuzzy -msgid "FlashMode" -msgstr "Salaman tila" - -#: src/minoltamn.cpp:1391 -msgid "Flash Exposure Comp Setting" -msgstr "" - -#: src/minoltamn.cpp:1392 -msgid "Flash exposure compensation setting" -msgstr "" - -#: src/minoltamn.cpp:1397 src/sonymn.cpp:578 src/sonymn.cpp:579 -#: src/sonymn.cpp:684 src/sonymn.cpp:685 -#, fuzzy -msgid "ISO Setting" -msgstr "Asetukset" - -#: src/minoltamn.cpp:1400 src/minoltamn.cpp:1401 -#, fuzzy -msgid "Zone Matching Mode" -msgstr "Mittaustapa" - -#: src/minoltamn.cpp:1403 src/sonymn.cpp:581 src/sonymn.cpp:582 -#: src/sonymn.cpp:687 src/sonymn.cpp:688 -msgid "Dynamic Range Optimizer Mode" -msgstr "" - -#: src/minoltamn.cpp:1404 -msgid "Dynamic range optimizer mode" -msgstr "" - -#: src/minoltamn.cpp:1424 src/minoltamn.cpp:1425 src/sonymn.cpp:609 -#: src/sonymn.cpp:610 -msgid "Priority Setup Shutter Release" -msgstr "" - -#: src/minoltamn.cpp:1430 -msgid "Self Timer Time" -msgstr "" - -#: src/minoltamn.cpp:1431 -msgid "Self timer time" -msgstr "" - -#: src/minoltamn.cpp:1434 -msgid "Continuous bracketing" -msgstr "" - -#: src/minoltamn.cpp:1436 -msgid "Single Frame Bracketing" -msgstr "" - -#: src/minoltamn.cpp:1437 -msgid "Single frame bracketing" -msgstr "" - -#: src/minoltamn.cpp:1440 src/nikonmn.cpp:156 src/nikonmn.cpp:167 -#, fuzzy -msgid "White balance bracketing" -msgstr " " - -#: src/minoltamn.cpp:1442 -#, fuzzy -msgid "White Balance Setting" -msgstr "Valkotasapaino" - -#: src/minoltamn.cpp:1445 -#, fuzzy -msgid "Preset White Balance" -msgstr "Valkotasapaino" - -#: src/minoltamn.cpp:1446 -#, fuzzy -msgid "Preset white balance" -msgstr "Valkotasapaino" - -#: src/minoltamn.cpp:1448 -#, fuzzy -msgid "Color Temperature Setting" -msgstr "Oma asetus (Kelvin)" - -#: src/minoltamn.cpp:1449 -#, fuzzy -msgid "Color temperature setting" -msgstr "Oma asetus (Kelvin)" - -#: src/minoltamn.cpp:1451 -#, fuzzy -msgid "Custom WB Setting" -msgstr "Kameran asetukset" - -#: src/minoltamn.cpp:1452 -msgid "Custom WB setting" -msgstr "" - -#: src/minoltamn.cpp:1454 src/minoltamn.cpp:1455 -#, fuzzy -msgid "Dynamic Range Optimizer Settings" -msgstr "Kameran asetukset" - -#: src/minoltamn.cpp:1460 -msgid "Custom WB Red Level" -msgstr "" - -#: src/minoltamn.cpp:1461 -msgid "Custom WB red level" -msgstr "" - -#: src/minoltamn.cpp:1463 -msgid "Custom WB Green Level" -msgstr "" - -#: src/minoltamn.cpp:1464 -msgid "Custom WB green level" -msgstr "" - -#: src/minoltamn.cpp:1466 -msgid "Custom WB Blue Level" -msgstr "" - -#: src/minoltamn.cpp:1467 -msgid "CustomWB blue level" -msgstr "" - -#: src/minoltamn.cpp:1469 src/minoltamn.cpp:1470 -msgid "Custom WB Error" -msgstr "" - -#: src/minoltamn.cpp:1473 -#, fuzzy -msgid "White balance fine tune" -msgstr " " - -#: src/minoltamn.cpp:1479 -msgid "Color compensation filter" -msgstr "" - -#: src/minoltamn.cpp:1481 src/minoltamn.cpp:1482 src/sonymn.cpp:641 -#: src/sonymn.cpp:642 src/sonymn.cpp:714 src/sonymn.cpp:715 -#, fuzzy -msgid "Sony Image Size" -msgstr "Kuvan koko" - -#: src/minoltamn.cpp:1487 -msgid "Instant Playback Time" -msgstr "" - -#: src/minoltamn.cpp:1488 -msgid "Instant playback time" -msgstr "" - -#: src/minoltamn.cpp:1490 -msgid "Instant Playback Setup" -msgstr "" - -#: src/minoltamn.cpp:1491 -msgid "Instant playback setup" -msgstr "" - -#: src/minoltamn.cpp:1496 -msgid "Eye Start AF" -msgstr "" - -#: src/minoltamn.cpp:1497 -#, fuzzy -msgid "Eye start AF" -msgstr "Kertatarkennus, AF" - -#: src/minoltamn.cpp:1499 -#, fuzzy -msgid "Red Eye Reduction" -msgstr "Päällä, punasilmäisyyden esto" - -#: src/minoltamn.cpp:1500 -#, fuzzy -msgid "Red eye reduction" -msgstr "Päällä, punasilmäisyyden esto" - -#: src/minoltamn.cpp:1502 -#, fuzzy -msgid "Flash Default" -msgstr "Oletus" - -#: src/minoltamn.cpp:1503 -#, fuzzy -msgid "Flash default" -msgstr "Salaman malli" - -#: src/minoltamn.cpp:1505 -#, fuzzy -msgid "Auto Bracket Order" -msgstr "Makrotila" - -#: src/minoltamn.cpp:1506 -#, fuzzy -msgid "Auto bracket order" -msgstr "Makrotila" - -#: src/minoltamn.cpp:1508 -msgid "Focus Hold Button" -msgstr "" - -#: src/minoltamn.cpp:1509 -msgid "Focus hold button" -msgstr "" - -#: src/minoltamn.cpp:1511 -msgid "AEL Button" -msgstr "" - -#: src/minoltamn.cpp:1512 -msgid "AEL button" -msgstr "" - -#: src/minoltamn.cpp:1514 -msgid "Control Dial Set" -msgstr "" - -#: src/minoltamn.cpp:1515 -#, fuzzy -msgid "Control dial set" -msgstr "Kontrasti" - -#: src/minoltamn.cpp:1517 -#, fuzzy -msgid "Exposure Compensation Mode" -msgstr "Valotustila" - -#: src/minoltamn.cpp:1518 -#, fuzzy -msgid "Exposure compensation mode" -msgstr "Valotustila" - -#: src/minoltamn.cpp:1521 -msgid "AF assist" -msgstr "" - -#: src/minoltamn.cpp:1523 -msgid "Card Shutter Lock" -msgstr "" - -#: src/minoltamn.cpp:1524 -msgid "Card shutter lock" -msgstr "" - -#: src/minoltamn.cpp:1526 -msgid "Lens Shutter Lock" -msgstr "" - -#: src/minoltamn.cpp:1527 -msgid "Lens shutter lock" -msgstr "" - -#: src/minoltamn.cpp:1529 -msgid "AF Area Illumination" -msgstr "" - -#: src/minoltamn.cpp:1530 -#, fuzzy -msgid "AF area illumination" -msgstr "Kameran malli" - -#: src/minoltamn.cpp:1532 -msgid "Monitor Display Off" -msgstr "" - -#: src/minoltamn.cpp:1533 -msgid "Monitor display off" -msgstr "" - -#: src/minoltamn.cpp:1535 -msgid "Record Display" -msgstr "" - -#: src/minoltamn.cpp:1536 -msgid "Record display" -msgstr "" - -#: src/minoltamn.cpp:1538 -msgid "Play Display" -msgstr "" - -#: src/minoltamn.cpp:1539 -msgid "Play display" -msgstr "" - -#: src/minoltamn.cpp:1541 -#, fuzzy -msgid "Exposure Indicator" -msgstr "Valotuksen korjaus" - -#: src/minoltamn.cpp:1542 -#, fuzzy -msgid "Exposure indicator" -msgstr "Valotuksen korjaus" - -#: src/minoltamn.cpp:1544 -#, fuzzy -msgid "AEL Exposure Indicator" -msgstr "Valotuksen korjaus" - -#: src/minoltamn.cpp:1545 -msgid "" -"AEL exposure indicator (also indicates exposure for next shot when " -"bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1547 -msgid "Exposure Bracketing Indicator Last" -msgstr "" - -#: src/minoltamn.cpp:1548 -msgid "" -"Exposure bracketing indicator last (indicator for last shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1550 -msgid "Metering Off Scale Indicator" -msgstr "" - -#: src/minoltamn.cpp:1551 -msgid "" -"Metering off scale indicator (two flashing triangles when under or over " -"metering scale)" -msgstr "" - -#: src/minoltamn.cpp:1553 -msgid "Flash Exposure Indicator" -msgstr "" - -#: src/minoltamn.cpp:1554 -#, fuzzy -msgid "Flash exposure indicator" -msgstr "Valotuksen korjaus" - -#: src/minoltamn.cpp:1556 -msgid "Flash Exposure Indicator Next" -msgstr "" - -#: src/minoltamn.cpp:1557 -msgid "Flash exposure indicator next (indicator for next shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1559 -msgid "Flash Exposure Indicator Last" -msgstr "" - -#: src/minoltamn.cpp:1560 -msgid "Flash exposure indicator last (indicator for last shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1565 -#, fuzzy -msgid "Focus Mode Switch" -msgstr "Tarkennustapa" - -#: src/minoltamn.cpp:1566 -#, fuzzy -msgid "Focus mode switch" -msgstr "Tarkennustapa" - -#: src/minoltamn.cpp:1568 src/olympusmn.cpp:759 -msgid "Flash Type" -msgstr "Salaman tyyppi" - -#: src/minoltamn.cpp:1569 src/olympusmn.cpp:759 -msgid "Flash type" -msgstr "Salaman tyyppi" - -#: src/minoltamn.cpp:1574 src/olympusmn.cpp:660 -#, fuzzy -msgid "AE Lock" -msgstr "Valotuksen lukitus" - -#: src/minoltamn.cpp:1581 -msgid "Color compensation filter: negative is green, positive is magenta" -msgstr "" - -#: src/minoltamn.cpp:1583 src/tags.cpp:759 -msgid "Battery Level" -msgstr "" - -#: src/minoltamn.cpp:1584 -msgid "Battery level" -msgstr "" - -#: src/minoltamn.cpp:1588 -msgid "Unknown Sony Camera Settings A100 tag" -msgstr "" - -#: src/minoltamn.cpp:1894 src/sonymn.cpp:484 -#, fuzzy -msgid "Clear" -msgstr "vuosi" - -#: src/minoltamn.cpp:1895 src/sonymn.cpp:485 -msgid "Deep" -msgstr "" - -#: src/minoltamn.cpp:1896 src/sonymn.cpp:486 -msgid "Light" -msgstr "" - -#: src/minoltamn.cpp:1897 -msgid "Night View" -msgstr "" - -#: src/minoltamn.cpp:1898 -msgid "Autumn Leaves" -msgstr "" - -#: src/minoltamn.cpp:1937 -msgid "Local" -msgstr "" - -#: src/minoltamn.cpp:1952 -#, fuzzy -msgid "Top-Right" -msgstr "Omistusoikeus" - -#: src/minoltamn.cpp:1954 -msgid "Bottom-Right" -msgstr "" - -#: src/minoltamn.cpp:1956 -msgid "Bottom-Left" -msgstr "" - -#: src/minoltamn.cpp:1958 -msgid "Top-Left" -msgstr "" - -#: src/minoltamn.cpp:1959 -msgid "Far-Right" -msgstr "" - -#: src/minoltamn.cpp:1960 -#, fuzzy -msgid "Far-Left" -msgstr "Polttoväli" - -#: src/minoltamn.cpp:1974 src/sonymn.cpp:89 -msgid "Advanced Auto" -msgstr "" - -#: src/minoltamn.cpp:1975 -msgid "Advanced Level" -msgstr "" - -#: src/minoltamn.cpp:1988 -msgid "AF" -msgstr "" - -#: src/minoltamn.cpp:1989 -#, fuzzy -msgid "Release" -msgstr "Mallin ID" - -#: src/minoltamn.cpp:2001 -msgid "RAW " -msgstr "" - -#: src/minoltamn.cpp:2002 -msgid "CRAW " -msgstr "" - -#: src/minoltamn.cpp:2005 -#, fuzzy -msgid "RAW+JPEG" -msgstr "Jpeg" - -#: src/minoltamn.cpp:2006 -#, fuzzy -msgid "CRAW+JPEG" -msgstr "Jpeg" - -#: src/minoltamn.cpp:2062 -msgid "Raw + JPEG" -msgstr "" - -#: src/minoltamn.cpp:2063 -#, fuzzy -msgid "Compressed Raw" -msgstr "Pakkaus" - -#: src/minoltamn.cpp:2064 -msgid "Compressed Raw + JPEG" -msgstr "" - -#: src/minoltamn.cpp:2077 -msgid "Minolta AF 2x APO (D)" -msgstr "" - -#: src/minoltamn.cpp:2078 -msgid "Minolta AF 2x APO II" -msgstr "" - -#: src/minoltamn.cpp:2079 -msgid "Minolta AF 1.4x APO (D)" -msgstr "" - -#: src/minoltamn.cpp:2080 -msgid "Minolta AF 1.4x APO II" -msgstr "" - -#: src/minoltamn.cpp:2110 -#, fuzzy -msgid "ISO Setting Used" -msgstr "ISO-herkkyys" - -#: src/minoltamn.cpp:2111 src/olympusmn.cpp:126 src/olympusmn.cpp:1109 -msgid "High Key" -msgstr "" - -#: src/minoltamn.cpp:2112 src/olympusmn.cpp:132 src/olympusmn.cpp:1107 -msgid "Low Key" -msgstr "" - -#: src/nikonmn.cpp:80 -msgid "Extra High" -msgstr "" - -#: src/nikonmn.cpp:86 src/nikonmn.cpp:1560 -msgid "Single area" -msgstr "" - -#: src/nikonmn.cpp:87 src/nikonmn.cpp:1561 -msgid "Dynamic area" -msgstr "" - -#: src/nikonmn.cpp:88 -msgid "Dynamic area, closest subject" -msgstr "" - -#: src/nikonmn.cpp:89 -msgid "Group dynamic" -msgstr "" - -#: src/nikonmn.cpp:90 src/nikonmn.cpp:1564 -msgid "Single area (wide)" -msgstr "" - -#: src/nikonmn.cpp:91 src/nikonmn.cpp:1565 -msgid "Dynamic area (wide)" -msgstr "" - -#: src/nikonmn.cpp:104 src/nikonmn.cpp:797 src/nikonmn.cpp:812 -#: src/pentaxmn.cpp:215 -msgid "Upper-left" -msgstr "" - -#: src/nikonmn.cpp:105 src/nikonmn.cpp:798 src/nikonmn.cpp:813 -#: src/pentaxmn.cpp:217 -#, fuzzy -msgid "Upper-right" -msgstr "Omistusoikeus" - -#: src/nikonmn.cpp:106 src/nikonmn.cpp:799 src/nikonmn.cpp:814 -#: src/pentaxmn.cpp:223 -msgid "Lower-left" -msgstr "" - -#: src/nikonmn.cpp:107 src/nikonmn.cpp:800 src/nikonmn.cpp:815 -#: src/pentaxmn.cpp:225 -#, fuzzy -msgid "Lower-right" -msgstr "Omistusoikeus" - -#: src/nikonmn.cpp:108 -msgid "Left-most" -msgstr "" - -#: src/nikonmn.cpp:109 -msgid "Right-most" -msgstr "" - -#: src/nikonmn.cpp:143 -msgid "Fire, manual" -msgstr "" - -#: src/nikonmn.cpp:144 -#, fuzzy -msgid "Fire, external" -msgstr "Ulkoinen" - -#: src/nikonmn.cpp:145 -msgid "Fire, commander mode" -msgstr "" - -#: src/nikonmn.cpp:146 -#, fuzzy -msgid "Fire, TTL mode" -msgstr "Kameran malli" - -#: src/nikonmn.cpp:152 src/nikonmn.cpp:163 -#, fuzzy -msgid "Delay" -msgstr "Poista" - -#: src/nikonmn.cpp:153 src/nikonmn.cpp:164 -#, fuzzy -msgid "PC control" -msgstr "Täysautomatiikka" - -#: src/nikonmn.cpp:154 src/nikonmn.cpp:165 -#, fuzzy -msgid "Exposure bracketing" -msgstr "Valotuksen korjaus" - -#: src/nikonmn.cpp:155 -msgid "Auto ISO" -msgstr "" - -#: src/nikonmn.cpp:157 src/nikonmn.cpp:168 -#, fuzzy -msgid "IR control" -msgstr "Täysautomatiikka" - -#: src/nikonmn.cpp:166 -msgid "Unused LE-NR slowdown" -msgstr "" - -#: src/nikonmn.cpp:174 -#, fuzzy -msgid "Auto release" -msgstr "Automaattinen" - -#: src/nikonmn.cpp:175 -#, fuzzy -msgid "Manual release" -msgstr "Käsintarkennus, MF" - -#: src/nikonmn.cpp:180 -#, fuzzy -msgid "Lossy (type 1)" -msgstr "Linssin tyyppi" - -#: src/nikonmn.cpp:181 src/tags.cpp:247 -#, fuzzy -msgid "Uncompressed" -msgstr "Pakkaus" - -#: src/nikonmn.cpp:182 -msgid "Lossless" -msgstr "" - -#: src/nikonmn.cpp:183 -#, fuzzy -msgid "Lossy (type 2)" -msgstr "Linssin tyyppi" - -#: src/nikonmn.cpp:189 -msgid "B & W" -msgstr "" - -#: src/nikonmn.cpp:191 -msgid "Trim" -msgstr "" - -#: src/nikonmn.cpp:192 -#, fuzzy -msgid "Small picture" -msgstr "Pieni" - -#: src/nikonmn.cpp:193 -msgid "D-Lighting" -msgstr "" - -#: src/nikonmn.cpp:194 -msgid "Red eye" -msgstr "" - -#: src/nikonmn.cpp:195 src/nikonmn.cpp:678 -#, fuzzy -msgid "Cyanotype" -msgstr "Kameran tyyppi" - -#: src/nikonmn.cpp:196 -msgid "Sky light" -msgstr "" - -#: src/nikonmn.cpp:197 -msgid "Warm tone" -msgstr "" - -#: src/nikonmn.cpp:198 -#, fuzzy -msgid "Color custom" -msgstr "Väriavaruus" - -#: src/nikonmn.cpp:199 -#, fuzzy -msgid "Image overlay" -msgstr "Kuvan tyyppi" - -#: src/nikonmn.cpp:205 -#, fuzzy -msgid "Minimal" -msgstr "Manuaalinen" - -#: src/nikonmn.cpp:214 src/nikonmn.cpp:524 -#, fuzzy -msgid "Nikon Makernote version" -msgstr "Firmwaren versio" - -#: src/nikonmn.cpp:216 src/nikonmn.cpp:468 src/nikonmn.cpp:525 -#: src/olympusmn.cpp:270 src/panasonicmn.cpp:344 src/tags.cpp:1583 -msgid "ISO Speed" -msgstr "ISO-herkkyys" - -#: src/nikonmn.cpp:228 src/nikonmn.cpp:529 -#, fuzzy -msgid "Sharpening" -msgstr "Varoitus" - -#: src/nikonmn.cpp:229 src/nikonmn.cpp:529 -msgid "Image sharpening setting" -msgstr "" - -#: src/nikonmn.cpp:231 src/nikonmn.cpp:530 -#, fuzzy -msgid "Focus" -msgstr "Tarkennustapa" - -#: src/nikonmn.cpp:234 src/nikonmn.cpp:531 -#, fuzzy -msgid "Flash Setting" -msgstr "Asetukset" - -#: src/nikonmn.cpp:235 src/nikonmn.cpp:531 -#, fuzzy -msgid "Flash setting" -msgstr "Salamavalotuksen korjaus" - -#: src/nikonmn.cpp:240 src/nikonmn.cpp:538 -#, fuzzy -msgid "ISO Selection" -msgstr "ISO-herkkyys" - -#: src/nikonmn.cpp:241 src/nikonmn.cpp:538 -#, fuzzy -msgid "ISO selection" -msgstr "ISO-herkkyys" - -#: src/nikonmn.cpp:243 src/nikonmn.cpp:539 src/panasonicmn.cpp:246 -msgid "Data Dump" -msgstr "" - -#: src/nikonmn.cpp:244 src/nikonmn.cpp:539 src/panasonicmn.cpp:246 -msgid "Data dump" -msgstr "" - -#: src/nikonmn.cpp:246 src/nikonmn.cpp:465 src/nikonmn.cpp:559 -#, fuzzy -msgid "Image Adjustment" -msgstr "Kuvan aikaleima" - -#: src/nikonmn.cpp:247 src/nikonmn.cpp:466 src/nikonmn.cpp:559 -msgid "Image adjustment setting" -msgstr "" - -#: src/nikonmn.cpp:249 src/nikonmn.cpp:483 src/nikonmn.cpp:561 -msgid "Auxiliary Lens" -msgstr "" - -#: src/nikonmn.cpp:250 src/nikonmn.cpp:484 src/nikonmn.cpp:561 -msgid "Auxiliary lens (adapter)" -msgstr "" - -#: src/nikonmn.cpp:253 src/nikonmn.cpp:564 src/olympusmn.cpp:304 -#, fuzzy -msgid "Manual focus distance" -msgstr "Käsintarkennus, MF" - -#: src/nikonmn.cpp:256 src/nikonmn.cpp:481 src/nikonmn.cpp:565 -#, fuzzy -msgid "Digital zoom setting" -msgstr "Digitaalinen zoom" - -#: src/nikonmn.cpp:258 -msgid "AF Focus Position" -msgstr "" - -#: src/nikonmn.cpp:259 -msgid "AF focus position information" -msgstr "" - -#: src/nikonmn.cpp:263 -msgid "Unknown Nikon1MakerNote tag" -msgstr "" - -#: src/nikonmn.cpp:290 src/nikonmn.cpp:1416 -msgid "Continuous autofocus" -msgstr "" - -#: src/nikonmn.cpp:291 src/nikonmn.cpp:1417 -msgid "Single autofocus" -msgstr "" - -#: src/nikonmn.cpp:325 src/nikonmn.cpp:506 src/nikonmn.cpp:1517 -msgid "Not used" -msgstr "" - -#: src/nikonmn.cpp:365 -msgid "guess" -msgstr "" - -#: src/nikonmn.cpp:412 -msgid "VGA Basic" -msgstr "" - -#: src/nikonmn.cpp:413 -#, fuzzy -msgid "VGA Normal" -msgstr "Normaali" - -#: src/nikonmn.cpp:414 -msgid "VGA Fine" -msgstr "" - -#: src/nikonmn.cpp:415 -msgid "SXGA Basic" -msgstr "" - -#: src/nikonmn.cpp:416 -#, fuzzy -msgid "SXGA Normal" -msgstr "Normaali" - -#: src/nikonmn.cpp:417 -msgid "SXGA Fine" -msgstr "" - -#: src/nikonmn.cpp:429 -#, fuzzy -msgid "Bright+" -msgstr "Omistusoikeus" - -#: src/nikonmn.cpp:430 -#, fuzzy -msgid "Bright-" -msgstr "Omistusoikeus" - -#: src/nikonmn.cpp:431 -#, fuzzy -msgid "Contrast+" -msgstr "Kontrasti" - -#: src/nikonmn.cpp:432 -#, fuzzy -msgid "Contrast-" -msgstr "Kontrasti" - -#: src/nikonmn.cpp:451 -msgid "Speedlight" -msgstr "" - -#: src/nikonmn.cpp:491 -msgid "Unknown Nikon2MakerNote tag" -msgstr "" - -#: src/nikonmn.cpp:532 src/olympusmn.cpp:282 -#, fuzzy -msgid "Flash Device" -msgstr "Salaman malli" - -#: src/nikonmn.cpp:532 src/olympusmn.cpp:283 -#, fuzzy -msgid "Flash device" -msgstr "Salaman malli" - -#: src/nikonmn.cpp:534 src/olympusmn.cpp:249 src/panasonicmn.cpp:248 -#, fuzzy -msgid "White Balance Bias" -msgstr "Valkotasapaino" - -#: src/nikonmn.cpp:534 src/olympusmn.cpp:250 -#, fuzzy -msgid "White balance bias" -msgstr "Valkotasapaino" - -#: src/nikonmn.cpp:535 src/olympusmn.cpp:932 -msgid "WB RB Levels" -msgstr "" - -#: src/nikonmn.cpp:535 src/olympusmn.cpp:932 -msgid "WB RB levels" -msgstr "" - -#: src/nikonmn.cpp:536 -#, fuzzy -msgid "Program Shift" -msgstr "Ohjelma" - -#: src/nikonmn.cpp:536 -#, fuzzy -msgid "Program shift" -msgstr "Ohjelman versio" - -#: src/nikonmn.cpp:537 -#, fuzzy -msgid "Exposure Difference" -msgstr "Valotusaika" - -#: src/nikonmn.cpp:537 -#, fuzzy -msgid "Exposure difference" -msgstr "Valotustila" - -#: src/nikonmn.cpp:540 src/pentaxmn.cpp:877 -msgid "Pointer to a preview image" -msgstr "" - -#: src/nikonmn.cpp:540 src/pentaxmn.cpp:878 -msgid "Offset to an IFD containing a preview image" -msgstr "" - -#: src/nikonmn.cpp:541 -#, fuzzy -msgid "Flash Comp" -msgstr "Salaman tila" - -#: src/nikonmn.cpp:541 -msgid "Flash compensation setting" -msgstr "" - -#: src/nikonmn.cpp:543 -#, fuzzy -msgid "Image Boundary" -msgstr "Kuvan laatu" - -#: src/nikonmn.cpp:543 -#, fuzzy -msgid "Image boundary" -msgstr "Kuvan laatu" - -#: src/nikonmn.cpp:544 -msgid "Flash exposure comp" -msgstr "" - -#: src/nikonmn.cpp:545 -#, fuzzy -msgid "Flash Bracket Comp" -msgstr "Makrotila" - -#: src/nikonmn.cpp:545 -msgid "Flash bracket compensation applied" -msgstr "" - -#: src/nikonmn.cpp:546 -#, fuzzy -msgid "Exposure Bracket Comp" -msgstr "Kuvaustapa" - -#: src/nikonmn.cpp:546 -msgid "AE bracket compensation applied" -msgstr "" - -#: src/nikonmn.cpp:547 src/olympusmn.cpp:459 -#, fuzzy -msgid "Image Processing" -msgstr "Kuvan koko" - -#: src/nikonmn.cpp:547 src/pentaxmn.cpp:985 src/pentaxmn.cpp:986 -#, fuzzy -msgid "Image processing" -msgstr "Kuvan koko" - -#: src/nikonmn.cpp:548 -msgid "Crop High Speed" -msgstr "" - -#: src/nikonmn.cpp:548 -msgid "Crop high speed" -msgstr "" - -#: src/nikonmn.cpp:549 -#, fuzzy -msgid "Exposure Tuning" -msgstr "Valotusaika" - -#: src/nikonmn.cpp:549 -#, fuzzy -msgid "Exposure tuning" -msgstr "Valotusaika" - -#: src/nikonmn.cpp:552 -msgid "VR Info" -msgstr "" - -#: src/nikonmn.cpp:552 -msgid "VR info" -msgstr "" - -#: src/nikonmn.cpp:553 -#, fuzzy -msgid "Image Authentication" -msgstr "Kuvan vakautus" - -#: src/nikonmn.cpp:553 -#, fuzzy -msgid "Image authentication" -msgstr "Kuvan vakautus" - -#: src/nikonmn.cpp:554 -msgid "ActiveD-Lighting" -msgstr "" - -#: src/nikonmn.cpp:554 -msgid "ActiveD-lighting" -msgstr "" - -#: src/nikonmn.cpp:555 -#, fuzzy -msgid "Picture Control" -msgstr "Kuvan tiedot" - -#: src/nikonmn.cpp:555 -#, fuzzy -msgid " Picture control" -msgstr "Kuvan tiedot" - -#: src/nikonmn.cpp:556 -#, fuzzy -msgid "World Time" -msgstr "Valotusaika" - -#: src/nikonmn.cpp:556 -#, fuzzy -msgid "World time" -msgstr "Valotusaika" - -#: src/nikonmn.cpp:557 -msgid "ISO Info" -msgstr "" - -#: src/nikonmn.cpp:557 -msgid "ISO info" -msgstr "" - -#: src/nikonmn.cpp:558 -msgid "Vignette Control" -msgstr "" - -#: src/nikonmn.cpp:558 -msgid "Vignette control" -msgstr "" - -#: src/nikonmn.cpp:560 -#, fuzzy -msgid "Tone Compensation" -msgstr "Pakkaus" - -#: src/nikonmn.cpp:560 -msgid "Tone compensation" -msgstr "" - -#: src/nikonmn.cpp:566 -msgid "Mode of flash used" -msgstr "" - -#: src/nikonmn.cpp:568 src/panasonicmn.cpp:244 -#, fuzzy -msgid "Shooting Mode" -msgstr "Mittaustapa" - -#: src/nikonmn.cpp:568 src/panasonicmn.cpp:244 src/pentaxmn.cpp:868 -#, fuzzy -msgid "Shooting mode" -msgstr "Mittaustapa" - -#: src/nikonmn.cpp:569 -msgid "Auto Bracket Release" -msgstr "" - -#: src/nikonmn.cpp:569 -msgid "Auto bracket release" -msgstr "" - -#: src/nikonmn.cpp:570 -#, fuzzy -msgid "Lens FStops" -msgstr "Linssin tyyppi" - -#: src/nikonmn.cpp:571 -#, fuzzy -msgid "Contrast Curve" -msgstr "Kontrasti" - -#: src/nikonmn.cpp:571 -#, fuzzy -msgid "Contrast curve" -msgstr "Kontrasti" - -#: src/nikonmn.cpp:572 -#, fuzzy -msgid "Color Hue" -msgstr "Väriavaruus" - -#: src/nikonmn.cpp:572 -#, fuzzy -msgid "Color hue" -msgstr "Väriavaruus" - -#: src/nikonmn.cpp:573 src/olympusmn.cpp:253 src/olympusmn.cpp:684 -#: src/panasonicmn.cpp:282 -#, fuzzy -msgid "Scene mode" -msgstr "Mittaustapa" - -#: src/nikonmn.cpp:574 src/olympusmn.cpp:1076 src/properties.cpp:562 -#: src/tags.cpp:826 src/tags.cpp:1649 -#, fuzzy -msgid "Light Source" -msgstr "Kuvalähde" - -#: src/nikonmn.cpp:574 src/olympusmn.cpp:1076 -#, fuzzy -msgid "Light source" -msgstr "Kuvalähde" - -#: src/nikonmn.cpp:575 -msgid "Shot info" -msgstr "" - -#: src/nikonmn.cpp:576 src/nikonmn.cpp:700 -msgid "Hue Adjustment" -msgstr "" - -#: src/nikonmn.cpp:576 src/nikonmn.cpp:700 -msgid "Hue adjustment" -msgstr "" - -#: src/nikonmn.cpp:577 -#, fuzzy -msgid "NEF Compression" -msgstr "Pakkaus" - -#: src/nikonmn.cpp:577 -#, fuzzy -msgid "NEF compression" -msgstr "Pakkaus" - -#: src/nikonmn.cpp:580 src/tags.cpp:898 -msgid "Linearization Table" -msgstr "" - -#: src/nikonmn.cpp:580 -msgid "Linearization table" -msgstr "" - -#: src/nikonmn.cpp:581 -#, fuzzy -msgid "Color Balance" -msgstr "Väriavaruus" - -#: src/nikonmn.cpp:581 -#, fuzzy -msgid "Color balance" -msgstr "Väriavaruus" - -#: src/nikonmn.cpp:582 -#, fuzzy -msgid "Lens Data" -msgstr "Linssin tyyppi" - -#: src/nikonmn.cpp:582 -#, fuzzy -msgid "Lens data settings" -msgstr "Kameran asetukset" - -#: src/nikonmn.cpp:583 -#, fuzzy -msgid "Raw Image Center" -msgstr "Kuvan numero" - -#: src/nikonmn.cpp:583 -msgid "Raw image center" -msgstr "" - -#: src/nikonmn.cpp:584 -msgid "Sensor Pixel Size" -msgstr "" - -#: src/nikonmn.cpp:584 -msgid "Sensor pixel size" -msgstr "" - -#: src/nikonmn.cpp:586 -msgid "Scene Assist" -msgstr "" - -#: src/nikonmn.cpp:586 -msgid "Scene assist" -msgstr "" - -#: src/nikonmn.cpp:587 -#, fuzzy -msgid "Retouch History" -msgstr "Kuvan tyyppi" - -#: src/nikonmn.cpp:587 -msgid "Retouch history" -msgstr "" - -#: src/nikonmn.cpp:589 -#, fuzzy -msgid "Serial NO" -msgstr "Sarjanumero" - -#: src/nikonmn.cpp:589 -msgid "Camera serial number, usually starts with \"NO= \"" -msgstr "" - -#: src/nikonmn.cpp:590 -#, fuzzy -msgid "Image Data Size" -msgstr "Kuvan koko" - -#: src/nikonmn.cpp:590 -#, fuzzy -msgid "Image data size" -msgstr "Kuvan koko" - -#: src/nikonmn.cpp:592 -#, fuzzy -msgid "Image Count" -msgstr "Kuvan laatu" - -#: src/nikonmn.cpp:592 -#, fuzzy -msgid "Image count" -msgstr "Kuvan laatu" - -#: src/nikonmn.cpp:593 src/nikonmn.cpp:1227 -msgid "Deleted Image Count" -msgstr "" - -#: src/nikonmn.cpp:593 src/nikonmn.cpp:1227 -msgid "Deleted image count" -msgstr "" - -#: src/nikonmn.cpp:594 src/nikonmn.cpp:1064 src/nikonmn.cpp:1077 -#: src/nikonmn.cpp:1137 src/nikonmn.cpp:1197 src/nikonmn.cpp:1233 -#, fuzzy -msgid "Shutter Count" -msgstr "Valotusajan esivalinta (Tv)" - -#: src/nikonmn.cpp:594 -msgid "Number of shots taken by camera" -msgstr "" - -#: src/nikonmn.cpp:595 -#, fuzzy -msgid "Flash info" -msgstr "Salamavalotuksen korjaus" - -#: src/nikonmn.cpp:596 -#, fuzzy -msgid "Image Optimization" -msgstr "Kuvan vakautus" - -#: src/nikonmn.cpp:596 -#, fuzzy -msgid "Image optimization" -msgstr "Kuvan vakautus" - -#: src/nikonmn.cpp:598 -#, fuzzy -msgid "Program Variation" -msgstr "Ohjelman versio" - -#: src/nikonmn.cpp:598 -#, fuzzy -msgid "Program variation" -msgstr "Ohjelman versio" - -#: src/nikonmn.cpp:600 -#, fuzzy -msgid "AF Response" -msgstr "Käytetty AF-piste" - -#: src/nikonmn.cpp:600 -#, fuzzy -msgid "AF response" -msgstr "Käytetty AF-piste" - -#: src/nikonmn.cpp:601 -#, fuzzy -msgid "Multi exposure" -msgstr "Automaattivalotus" - -#: src/nikonmn.cpp:602 -msgid "High ISO Noise Reduction" -msgstr "" - -#: src/nikonmn.cpp:603 src/nikonmn.cpp:702 -msgid "Toning effect" -msgstr "" - -#: src/nikonmn.cpp:604 -msgid "AF info 2" -msgstr "" - -#: src/nikonmn.cpp:605 -#, fuzzy -msgid "File info" -msgstr "Tiedostonimi" - -#: src/nikonmn.cpp:606 -#, fuzzy -msgid "AF tune" -msgstr "Käytetty AF-piste" - -#: src/nikonmn.cpp:609 -msgid "Capture Data" -msgstr "" - -#: src/nikonmn.cpp:609 -msgid "Capture data" -msgstr "" - -#: src/nikonmn.cpp:610 -#, fuzzy -msgid "Capture Version" -msgstr "Firmwaren versio" - -#: src/nikonmn.cpp:610 -#, fuzzy -msgid "Capture version" -msgstr "Firmwaren versio" - -#: src/nikonmn.cpp:612 -msgid "Capture Offsets" -msgstr "" - -#: src/nikonmn.cpp:612 -msgid "Capture offsets" -msgstr "" - -#: src/nikonmn.cpp:613 -msgid "Scan IFD" -msgstr "" - -#: src/nikonmn.cpp:614 -msgid "ICC profile" -msgstr "" - -#: src/nikonmn.cpp:615 -msgid "Capture output" -msgstr "" - -#: src/nikonmn.cpp:617 -msgid "Unknown Nikon3MakerNote tag" -msgstr "" - -#: src/nikonmn.cpp:627 src/olympusmn.cpp:65 src/panasonicmn.cpp:140 -#: src/pentaxmn.cpp:298 -#, fuzzy -msgid "No" -msgstr "Ei käytössä" - -#: src/nikonmn.cpp:628 src/olympusmn.cpp:66 src/panasonicmn.cpp:139 -#: src/pentaxmn.cpp:299 -msgid "Yes" -msgstr "" - -#: src/nikonmn.cpp:633 -msgid "Y/M/D" -msgstr "" - -#: src/nikonmn.cpp:634 -msgid "M/D/Y" -msgstr "" - -#: src/nikonmn.cpp:635 -msgid "D/M/Y" -msgstr "" - -#: src/nikonmn.cpp:647 src/nikonmn.cpp:1228 -msgid "Vibration Reduction" -msgstr "" - -#: src/nikonmn.cpp:647 src/nikonmn.cpp:1228 -msgid "Vibration reduction" -msgstr "" - -#: src/nikonmn.cpp:649 -msgid "Unknown Nikon Vibration Reduction Tag" -msgstr "" - -#: src/nikonmn.cpp:659 -#, fuzzy -msgid "Default Settings" -msgstr "Kameran asetukset" - -#: src/nikonmn.cpp:660 src/nikonmn.cpp:695 -msgid "Quick Adjust" -msgstr "" - -#: src/nikonmn.cpp:661 -#, fuzzy -msgid "Full Control" -msgstr "Täysautomatiikka" - -#: src/nikonmn.cpp:682 -msgid "Blue-green" -msgstr "" - -#: src/nikonmn.cpp:684 -msgid "Purple-blue" -msgstr "" - -#: src/nikonmn.cpp:685 -msgid "Red-purple" -msgstr "" - -#: src/nikonmn.cpp:692 src/properties.cpp:980 -msgid "Name" -msgstr "" - -#: src/nikonmn.cpp:693 -msgid "Base" -msgstr "" - -#: src/nikonmn.cpp:694 -msgid "Adjust" -msgstr "" - -#: src/nikonmn.cpp:695 -msgid "Quick adjust" -msgstr "" - -#: src/nikonmn.cpp:701 -msgid "Filter effect" -msgstr "" - -#: src/nikonmn.cpp:703 -#, fuzzy -msgid "Toning Saturation" -msgstr "Värikylläisyys" - -#: src/nikonmn.cpp:703 -#, fuzzy -msgid "Toning saturation" -msgstr "Värikylläisyys" - -#: src/nikonmn.cpp:705 -msgid "Unknown Nikon Picture Control Tag" -msgstr "" - -#: src/nikonmn.cpp:722 -#, fuzzy -msgid "AF Fine Tune" -msgstr "Käytetty AF-piste" - -#: src/nikonmn.cpp:722 -#, fuzzy -msgid "AF fine tune" -msgstr "Käytetty AF-piste" - -#: src/nikonmn.cpp:723 -#, fuzzy -msgid "AF Fine Tune Index" -msgstr "Käytetty AF-piste" - -#: src/nikonmn.cpp:723 -#, fuzzy -msgid "AF fine tune index" -msgstr "Käytetty AF-piste" - -#: src/nikonmn.cpp:724 -#, fuzzy -msgid "AF Fine Tune Adjustment" -msgstr "Käytetty AF-piste" - -#: src/nikonmn.cpp:724 -#, fuzzy -msgid "AF fine tune adjustment" -msgstr "Käytetty AF-piste" - -#: src/nikonmn.cpp:726 -msgid "Unknown Nikon AF Fine Tune Tag" -msgstr "" - -#: src/nikonmn.cpp:736 -msgid "Timezone" -msgstr "" - -#: src/nikonmn.cpp:737 -#, fuzzy -msgid "Daylight Savings" -msgstr "Kameran asetukset" - -#: src/nikonmn.cpp:737 -msgid "Daylight savings" -msgstr "" - -#: src/nikonmn.cpp:738 -msgid "Date Display Format" -msgstr "" - -#: src/nikonmn.cpp:738 -msgid "Date display format" -msgstr "" - -#: src/nikonmn.cpp:740 -msgid "Unknown Nikon World Time Tag" -msgstr "" - -#: src/nikonmn.cpp:751 -#, fuzzy -msgid "Hi 0.3" -msgstr "HV10" - -#: src/nikonmn.cpp:752 -#, fuzzy -msgid "Hi 0.5" -msgstr "HV10" - -#: src/nikonmn.cpp:753 -#, fuzzy -msgid "Hi 0.7" -msgstr "HV10" - -#: src/nikonmn.cpp:754 -#, fuzzy -msgid "Hi 1.0" -msgstr "HV10" - -#: src/nikonmn.cpp:755 -#, fuzzy -msgid "Hi 1.3" -msgstr "HV10" - -#: src/nikonmn.cpp:756 -#, fuzzy -msgid "Hi 1.5" -msgstr "HV10" - -#: src/nikonmn.cpp:757 -#, fuzzy -msgid "Hi 1.7" -msgstr "HV10" - -#: src/nikonmn.cpp:758 -#, fuzzy -msgid "Hi 2.0" -msgstr "HV10" - -#: src/nikonmn.cpp:759 -msgid "Lo 0.3" -msgstr "" - -#: src/nikonmn.cpp:760 -msgid "Lo 0.5" -msgstr "" - -#: src/nikonmn.cpp:761 -msgid "Lo 0.7" -msgstr "" - -#: src/nikonmn.cpp:762 -#, fuzzy -msgid "Lo 1.0" -msgstr "HV10" - -#: src/nikonmn.cpp:768 -msgid "ISO Expansion" -msgstr "" - -#: src/nikonmn.cpp:768 -msgid "ISO expansion" -msgstr "" - -#: src/nikonmn.cpp:769 -#, fuzzy -msgid "ISO 2" -msgstr "Päällä" - -#: src/nikonmn.cpp:770 -msgid "ISO Expansion 2" -msgstr "" - -#: src/nikonmn.cpp:770 -msgid "ISO expansion 2" -msgstr "" - -#: src/nikonmn.cpp:772 -msgid "Unknown Nikon Iso Info Tag" -msgstr "" - -#: src/nikonmn.cpp:782 -msgid "Single Area" -msgstr "" - -#: src/nikonmn.cpp:783 -msgid "Dynamic Area" -msgstr "" - -#: src/nikonmn.cpp:784 -msgid "Dynamic Area, Closest Subject" -msgstr "" - -#: src/nikonmn.cpp:785 -msgid "Group Dynamic" -msgstr "" - -#: src/nikonmn.cpp:786 -msgid "Single Area (wide)" -msgstr "" - -#: src/nikonmn.cpp:787 -msgid "Dynamic Area (wide)" -msgstr "" - -#: src/nikonmn.cpp:795 src/nikonmn.cpp:810 src/pentaxmn.cpp:219 -msgid "Mid-left" -msgstr "" - -#: src/nikonmn.cpp:796 src/nikonmn.cpp:811 src/pentaxmn.cpp:221 -msgid "Mid-right" -msgstr "" - -#: src/nikonmn.cpp:801 src/nikonmn.cpp:816 -#, fuzzy -msgid "Far Left" -msgstr "Polttoväli" - -#: src/nikonmn.cpp:802 src/nikonmn.cpp:817 -msgid "Far Right" -msgstr "" - -#: src/nikonmn.cpp:822 src/nikonmn.cpp:845 -#, fuzzy -msgid "AF area mode" -msgstr "Kameran malli" - -#: src/nikonmn.cpp:823 src/olympusmn.cpp:1008 src/pentaxmn.cpp:902 -#, fuzzy -msgid "AF point" -msgstr "AF-piste" - -#: src/nikonmn.cpp:824 -#, fuzzy -msgid "AF Points In Focus" -msgstr "Käytetty AF-piste" - -#: src/nikonmn.cpp:824 -#, fuzzy -msgid "AF points in focus" -msgstr "Käytetty AF-piste" - -#: src/nikonmn.cpp:826 -msgid "Unknown Nikon Auto Focus Tag" -msgstr "" - -#: src/nikonmn.cpp:837 -msgid "On (51-point)" -msgstr "" - -#: src/nikonmn.cpp:838 -msgid "On (11-point)" -msgstr "" - -#: src/nikonmn.cpp:844 -#, fuzzy -msgid "Contrast Detect AF" -msgstr "Kontrasti" - -#: src/nikonmn.cpp:844 -#, fuzzy -msgid "Contrast detect AF" -msgstr "Kontrasti" - -#: src/nikonmn.cpp:846 -msgid "Phase Detect AF" -msgstr "" - -#: src/nikonmn.cpp:846 -msgid "Phase detect AF" -msgstr "" - -#: src/nikonmn.cpp:847 -#, fuzzy -msgid "Primary AF Point" -msgstr "AF-piste" - -#: src/nikonmn.cpp:847 -msgid "Primary AF point" -msgstr "" - -#: src/nikonmn.cpp:849 -msgid "AF Image Width" -msgstr "" - -#: src/nikonmn.cpp:849 -msgid "AF image width" -msgstr "" - -#: src/nikonmn.cpp:850 -#, fuzzy -msgid "AF Image Height" -msgstr "Kuvan tyyppi" - -#: src/nikonmn.cpp:850 -msgid "AF image height" -msgstr "" - -#: src/nikonmn.cpp:851 -#, fuzzy -msgid "AF Area X Position" -msgstr "Salaman tila" - -#: src/nikonmn.cpp:851 -#, fuzzy -msgid "AF area x position" -msgstr "Kameran malli" - -#: src/nikonmn.cpp:852 -#, fuzzy -msgid "AF Area Y Position" -msgstr "Salaman tila" - -#: src/nikonmn.cpp:852 -#, fuzzy -msgid "AF area y position" -msgstr "Kameran malli" - -#: src/nikonmn.cpp:853 -#, fuzzy -msgid "AF Area Width" -msgstr "Salaman tila" - -#: src/nikonmn.cpp:853 -#, fuzzy -msgid "AF area width" -msgstr "Kameran malli" - -#: src/nikonmn.cpp:854 -#, fuzzy -msgid "AF Area Height" -msgstr "Salaman tila" - -#: src/nikonmn.cpp:854 -#, fuzzy -msgid "AF area height" -msgstr "Kameran malli" - -#: src/nikonmn.cpp:855 -msgid "Contrast Detect AF In Focus" -msgstr "" - -#: src/nikonmn.cpp:855 -msgid "Contrast detect AF in focus" -msgstr "" - -#: src/nikonmn.cpp:857 -msgid "Unknown Nikon Auto Focus 2 Tag" -msgstr "" - -#: src/nikonmn.cpp:868 -#, fuzzy -msgid "Directory Number" -msgstr "F-luku" - -#: src/nikonmn.cpp:868 -#, fuzzy -msgid "Directory number" -msgstr "Tiedostonimi" - -#: src/nikonmn.cpp:871 -msgid "Unknown Nikon File Info Tag" -msgstr "" - -#: src/nikonmn.cpp:882 src/pentaxmn.cpp:542 -#, fuzzy -msgid "Multiple Exposure" -msgstr "Automaattivalotus" - -#: src/nikonmn.cpp:883 -#, fuzzy -msgid "Image Overlay" -msgstr "Kuvan numero" - -#: src/nikonmn.cpp:889 -#, fuzzy -msgid "Multi Exposure Mode" -msgstr "Valotustila" - -#: src/nikonmn.cpp:889 -#, fuzzy -msgid "Multi exposure mode" -msgstr "Valotustila" - -#: src/nikonmn.cpp:890 -#, fuzzy -msgid "Multi Exposure Shots" -msgstr "Automaattivalotus" - -#: src/nikonmn.cpp:890 -#, fuzzy -msgid "Multi exposure shots" -msgstr "Automaattivalotus" - -#: src/nikonmn.cpp:891 -msgid "Multi Exposure Auto Gain" -msgstr "" - -#: src/nikonmn.cpp:891 -msgid "Multi exposure auto gain" -msgstr "" - -#: src/nikonmn.cpp:893 src/nikonmn.cpp:1013 src/nikonmn.cpp:1033 -#: src/nikonmn.cpp:1053 -msgid "Unknown Nikon Multi Exposure Tag" -msgstr "" - -#: src/nikonmn.cpp:905 src/olympusmn.cpp:143 -#, fuzzy -msgid "Internal" -msgstr "Ulkoinen" - -#: src/nikonmn.cpp:911 -msgid "1.01 (SB-800 or Metz 58 AF-1)" -msgstr "" - -#: src/nikonmn.cpp:912 -msgid "1.03 (SB-800)" -msgstr "" - -#: src/nikonmn.cpp:913 -msgid "2.01 (SB-800)" -msgstr "" - -#: src/nikonmn.cpp:914 -msgid "2.04 (SB-600)" -msgstr "" - -#: src/nikonmn.cpp:915 -msgid "2.05 (SB-600)" -msgstr "" - -#: src/nikonmn.cpp:916 -msgid "3.01 (SU-800 Remote Commander)" -msgstr "" - -#: src/nikonmn.cpp:917 -msgid "4.01 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:918 -msgid "4.02 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:919 -msgid "4.04 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:920 -msgid "5.01 (SB-900)" -msgstr "" - -#: src/nikonmn.cpp:921 -msgid "5.02 (SB-900)" -msgstr "" - -#: src/nikonmn.cpp:927 -msgid "0.1 m" -msgstr "" - -#: src/nikonmn.cpp:928 -msgid "0.2 m" -msgstr "" - -#: src/nikonmn.cpp:929 -msgid "0.3 m" -msgstr "" - -#: src/nikonmn.cpp:930 -msgid "0.4 m" -msgstr "" - -#: src/nikonmn.cpp:931 -msgid "0.5 m" -msgstr "" - -#: src/nikonmn.cpp:932 -msgid "0.6 m" -msgstr "" - -#: src/nikonmn.cpp:933 -msgid "0.7 m" -msgstr "" - -#: src/nikonmn.cpp:934 -msgid "0.8 m" -msgstr "" - -#: src/nikonmn.cpp:935 -msgid "0.9 m" -msgstr "" - -#: src/nikonmn.cpp:936 -msgid "1.0 m" -msgstr "" - -#: src/nikonmn.cpp:937 -msgid "1.1 m" -msgstr "" - -#: src/nikonmn.cpp:938 -msgid "1.3 m" -msgstr "" - -#: src/nikonmn.cpp:939 -msgid "1.4 m" -msgstr "" - -#: src/nikonmn.cpp:940 -msgid "1.6 m" -msgstr "" - -#: src/nikonmn.cpp:941 -msgid "1.8 m" -msgstr "" - -#: src/nikonmn.cpp:942 -msgid "2.0 m" -msgstr "" - -#: src/nikonmn.cpp:943 -msgid "2.2 m" -msgstr "" - -#: src/nikonmn.cpp:944 -msgid "2.5 m" -msgstr "" - -#: src/nikonmn.cpp:945 -msgid "2.8 m" -msgstr "" - -#: src/nikonmn.cpp:946 -msgid "3.2 m" -msgstr "" - -#: src/nikonmn.cpp:947 -msgid "3.6 m" -msgstr "" - -#: src/nikonmn.cpp:948 -msgid "4.0 m" -msgstr "" - -#: src/nikonmn.cpp:949 -msgid "4.5 m" -msgstr "" - -#: src/nikonmn.cpp:950 -msgid "5.0 m" -msgstr "" - -#: src/nikonmn.cpp:951 -msgid "5.6 m" -msgstr "" - -#: src/nikonmn.cpp:952 -msgid "6.3 m" -msgstr "" - -#: src/nikonmn.cpp:953 -msgid "7.1 m" -msgstr "" - -#: src/nikonmn.cpp:954 -msgid "8.0 m" -msgstr "" - -#: src/nikonmn.cpp:955 -msgid "9.0 m" -msgstr "" - -#: src/nikonmn.cpp:956 -msgid "10.0 m" -msgstr "" - -#: src/nikonmn.cpp:957 -msgid "11.0 m" -msgstr "" - -#: src/nikonmn.cpp:958 -msgid "13.0 m" -msgstr "" - -#: src/nikonmn.cpp:959 -msgid "14.0 m" -msgstr "" - -#: src/nikonmn.cpp:960 -msgid "16.0 m" -msgstr "" - -#: src/nikonmn.cpp:961 -msgid "18.0 m" -msgstr "" - -#: src/nikonmn.cpp:962 -msgid "20.0 m" -msgstr "" - -#: src/nikonmn.cpp:969 -msgid "iTTL-BL" -msgstr "" - -#: src/nikonmn.cpp:970 -msgid "iTTL" -msgstr "" - -#: src/nikonmn.cpp:971 -#, fuzzy -msgid "Auto Aperture" -msgstr "Aukko" - -#: src/nikonmn.cpp:973 -msgid "GN (distance priority)" -msgstr "" - -#: src/nikonmn.cpp:975 src/nikonmn.cpp:976 -msgid "Repeating Flash" -msgstr "" - -#: src/nikonmn.cpp:982 -#, fuzzy -msgid "Bounce Flash" -msgstr "Ei salamaa" - -#: src/nikonmn.cpp:983 -msgid "Wide Flash Adapter" -msgstr "" - -#: src/nikonmn.cpp:989 -msgid "FL-GL1" -msgstr "" - -#: src/nikonmn.cpp:990 -msgid "FL-GL2" -msgstr "" - -#: src/nikonmn.cpp:991 -msgid "TN-A1" -msgstr "" - -#: src/nikonmn.cpp:992 -msgid "TN-A2" -msgstr "" - -#: src/nikonmn.cpp:996 -#, fuzzy -msgid "Amber" -msgstr "F-luku" - -#: src/nikonmn.cpp:1002 src/nikonmn.cpp:1024 src/nikonmn.cpp:1044 -#, fuzzy -msgid "Flash Source" -msgstr "Kuvalähde" - -#: src/nikonmn.cpp:1002 src/nikonmn.cpp:1024 src/nikonmn.cpp:1044 -#, fuzzy -msgid "Flash source" -msgstr "Kuvalähde" - -#: src/nikonmn.cpp:1003 src/nikonmn.cpp:1025 -msgid "0x0005" -msgstr "" - -#: src/nikonmn.cpp:1004 src/nikonmn.cpp:1026 src/nikonmn.cpp:1045 -#, fuzzy -msgid "External Flash Firmware" -msgstr "Ulkoinen salama" - -#: src/nikonmn.cpp:1004 src/nikonmn.cpp:1026 src/nikonmn.cpp:1045 -#, fuzzy -msgid "External flash firmware" -msgstr "Ulkoinen salama" - -#: src/nikonmn.cpp:1005 src/nikonmn.cpp:1027 src/nikonmn.cpp:1046 -#, fuzzy -msgid "External Flash Flags" -msgstr "Ulkoinen salama" - -#: src/nikonmn.cpp:1005 src/nikonmn.cpp:1027 src/nikonmn.cpp:1046 -#, fuzzy -msgid "External flash flags" -msgstr "Ulkoinen salama" - -#: src/nikonmn.cpp:1006 src/nikonmn.cpp:1028 src/nikonmn.cpp:1047 -#, fuzzy -msgid "Flash Focal Length" -msgstr "Polttoväli" - -#: src/nikonmn.cpp:1006 src/nikonmn.cpp:1028 src/nikonmn.cpp:1047 -#, fuzzy -msgid "Flash focal length" -msgstr "Polttoväli" - -#: src/nikonmn.cpp:1007 src/nikonmn.cpp:1029 src/nikonmn.cpp:1048 -msgid "Repeating Flash Rate" -msgstr "" - -#: src/nikonmn.cpp:1007 src/nikonmn.cpp:1029 src/nikonmn.cpp:1048 -msgid "Repeating flash rate" -msgstr "" - -#: src/nikonmn.cpp:1008 src/nikonmn.cpp:1030 src/nikonmn.cpp:1049 -msgid "Repeating Flash Count" -msgstr "" - -#: src/nikonmn.cpp:1008 src/nikonmn.cpp:1030 src/nikonmn.cpp:1049 -msgid "Repeating flash count" -msgstr "" - -#: src/nikonmn.cpp:1009 src/nikonmn.cpp:1031 src/nikonmn.cpp:1050 -msgid "Flash GN Distance" -msgstr "" - -#: src/nikonmn.cpp:1009 src/nikonmn.cpp:1031 src/nikonmn.cpp:1050 -msgid "Flash GN distance" -msgstr "" - -#: src/nikonmn.cpp:1010 -msgid "Flash Group A Control Mode" -msgstr "" - -#: src/nikonmn.cpp:1010 -msgid "Flash group a control mode" -msgstr "" - -#: src/nikonmn.cpp:1011 -msgid "Flash Group B Control Mode" -msgstr "" - -#: src/nikonmn.cpp:1011 -msgid "Flash group b control mode" -msgstr "" - -#: src/nikonmn.cpp:1051 -msgid "Flash Color Filter" -msgstr "" - -#: src/nikonmn.cpp:1051 -msgid "Flash color filter" -msgstr "" - -#: src/nikonmn.cpp:1064 src/nikonmn.cpp:1077 src/nikonmn.cpp:1137 -#: src/nikonmn.cpp:1197 src/nikonmn.cpp:1233 src/pentaxmn.cpp:1042 -#: src/pentaxmn.cpp:1043 -#, fuzzy -msgid "Shutter count" -msgstr "Valotusajan esivalinta (Tv)" - -#: src/nikonmn.cpp:1066 -msgid "Unknown Nikon Shot Info D80 Tag" -msgstr "" - -#: src/nikonmn.cpp:1078 src/sonymn.cpp:408 src/sonymn.cpp:409 -#, fuzzy -msgid "Flash Level" -msgstr "Salaman malli" - -#: src/nikonmn.cpp:1078 -#, fuzzy -msgid "Flash level" -msgstr "Salaman malli" - -#: src/nikonmn.cpp:1080 -msgid "Unknown Nikon Shot Info D40 Tag" -msgstr "" - -#: src/nikonmn.cpp:1090 src/nikonmn.cpp:1150 -msgid "0" -msgstr "" - -#: src/nikonmn.cpp:1091 src/nikonmn.cpp:1159 -msgid "+1" -msgstr "" - -#: src/nikonmn.cpp:1092 src/nikonmn.cpp:1160 -msgid "+2" -msgstr "" - -#: src/nikonmn.cpp:1093 src/nikonmn.cpp:1161 -msgid "+4" -msgstr "" - -#: src/nikonmn.cpp:1094 src/nikonmn.cpp:1162 -msgid "+8" -msgstr "" - -#: src/nikonmn.cpp:1095 src/nikonmn.cpp:1163 -msgid "+16" -msgstr "" - -#: src/nikonmn.cpp:1096 src/nikonmn.cpp:1164 -msgid "-16" -msgstr "" - -#: src/nikonmn.cpp:1097 src/nikonmn.cpp:1165 -msgid "-8" -msgstr "" - -#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1166 -msgid "-4" -msgstr "" - -#: src/nikonmn.cpp:1099 src/nikonmn.cpp:1167 -msgid "-2" -msgstr "" - -#: src/nikonmn.cpp:1100 src/nikonmn.cpp:1168 -msgid "-1" -msgstr "" - -#: src/nikonmn.cpp:1101 src/nikonmn.cpp:1169 -msgid "+17" -msgstr "" - -#: src/nikonmn.cpp:1102 src/nikonmn.cpp:1170 -msgid "-17" -msgstr "" - -#: src/nikonmn.cpp:1103 src/nikonmn.cpp:1171 -msgid "+9" -msgstr "" - -#: src/nikonmn.cpp:1104 src/nikonmn.cpp:1172 -msgid "+18" -msgstr "" - -#: src/nikonmn.cpp:1105 src/nikonmn.cpp:1173 -msgid "-18" -msgstr "" - -#: src/nikonmn.cpp:1106 src/nikonmn.cpp:1174 -msgid "-9" -msgstr "" - -#: src/nikonmn.cpp:1107 src/nikonmn.cpp:1175 -msgid "+19" -msgstr "" - -#: src/nikonmn.cpp:1108 src/nikonmn.cpp:1176 -msgid "-19" -msgstr "" - -#: src/nikonmn.cpp:1109 src/nikonmn.cpp:1177 -msgid "+5" -msgstr "" - -#: src/nikonmn.cpp:1110 src/nikonmn.cpp:1178 -msgid "+10" -msgstr "" - -#: src/nikonmn.cpp:1111 src/nikonmn.cpp:1179 -msgid "+20" -msgstr "" - -#: src/nikonmn.cpp:1112 src/nikonmn.cpp:1180 -msgid "-20" -msgstr "" - -#: src/nikonmn.cpp:1113 src/nikonmn.cpp:1181 -msgid "-10" -msgstr "" - -#: src/nikonmn.cpp:1114 src/nikonmn.cpp:1182 -msgid "-5" -msgstr "" - -#: src/nikonmn.cpp:1115 src/nikonmn.cpp:1183 -msgid "+11" -msgstr "" - -#: src/nikonmn.cpp:1116 src/nikonmn.cpp:1184 -msgid "-11" -msgstr "" - -#: src/nikonmn.cpp:1117 src/nikonmn.cpp:1185 -msgid "+3" -msgstr "" - -#: src/nikonmn.cpp:1118 src/nikonmn.cpp:1186 -msgid "+6" -msgstr "" - -#: src/nikonmn.cpp:1119 src/nikonmn.cpp:1187 -msgid "+12" -msgstr "" - -#: src/nikonmn.cpp:1120 src/nikonmn.cpp:1188 -msgid "-12" -msgstr "" - -#: src/nikonmn.cpp:1121 src/nikonmn.cpp:1189 -msgid "-6" -msgstr "" - -#: src/nikonmn.cpp:1122 src/nikonmn.cpp:1190 -msgid "-3" -msgstr "" - -#: src/nikonmn.cpp:1123 src/nikonmn.cpp:1151 -msgid "+13" -msgstr "" - -#: src/nikonmn.cpp:1124 src/nikonmn.cpp:1152 -msgid "-13" -msgstr "" - -#: src/nikonmn.cpp:1125 src/nikonmn.cpp:1153 -msgid "+7" -msgstr "" - -#: src/nikonmn.cpp:1126 src/nikonmn.cpp:1154 -msgid "+14" -msgstr "" - -#: src/nikonmn.cpp:1127 src/nikonmn.cpp:1155 -msgid "-14" -msgstr "" - -#: src/nikonmn.cpp:1128 src/nikonmn.cpp:1156 -msgid "-7" -msgstr "" - -#: src/nikonmn.cpp:1129 src/nikonmn.cpp:1157 -msgid "+15" -msgstr "" - -#: src/nikonmn.cpp:1130 src/nikonmn.cpp:1158 -msgid "-15" -msgstr "" - -#: src/nikonmn.cpp:1138 src/nikonmn.cpp:1198 -#, fuzzy -msgid "AF Fine Tune Adj" -msgstr "Käytetty AF-piste" - -#: src/nikonmn.cpp:1138 src/nikonmn.cpp:1198 -#, fuzzy -msgid "AF fine tune adj" -msgstr "Käytetty AF-piste" - -#: src/nikonmn.cpp:1140 -msgid "Unknown Nikon Shot Info D300 (a) Tag" -msgstr "" - -#: src/nikonmn.cpp:1200 -msgid "Unknown Nikon Shot Info D300 (b) Tag" -msgstr "" - -#: src/nikonmn.cpp:1213 -#, fuzzy -msgid "On (3)" -msgstr "Päällä" - -#: src/nikonmn.cpp:1226 -#, fuzzy -msgid "Shutter Count 1" -msgstr "Valotusajan esivalinta (Tv)" - -#: src/nikonmn.cpp:1226 -#, fuzzy -msgid "Shutter count 1" -msgstr "Valotusajan esivalinta (Tv)" - -#: src/nikonmn.cpp:1229 -msgid "Vibration Reduction 1" -msgstr "" - -#: src/nikonmn.cpp:1229 -#, fuzzy -msgid "Vibration reduction 1" -msgstr "Päällä, punasilmäisyyden esto" - -#: src/nikonmn.cpp:1230 -#, fuzzy -msgid "Shutter Count 2" -msgstr "Valotusajan esivalinta (Tv)" - -#: src/nikonmn.cpp:1230 -#, fuzzy -msgid "Shutter count 2" -msgstr "Valotusajan esivalinta (Tv)" - -#: src/nikonmn.cpp:1231 -msgid "Vibration Reduction 2" -msgstr "" - -#: src/nikonmn.cpp:1231 -msgid "Vibration reduction 2" -msgstr "" - -#: src/nikonmn.cpp:1235 -msgid "Unknown Nikon Shot Info Tag" -msgstr "" - -#: src/nikonmn.cpp:1246 -msgid "WB RBGG Levels" -msgstr "" - -#: src/nikonmn.cpp:1246 -msgid "WB RBGG levels" -msgstr "" - -#: src/nikonmn.cpp:1248 -msgid "Unknown Nikon Color Balance 1 Tag" -msgstr "" - -#: src/nikonmn.cpp:1259 src/nikonmn.cpp:1272 src/nikonmn.cpp:1285 -msgid "WB RGGB Levels" -msgstr "" - -#: src/nikonmn.cpp:1259 src/nikonmn.cpp:1272 src/nikonmn.cpp:1285 -msgid "WB RGGB levels" -msgstr "" - -#: src/nikonmn.cpp:1261 -msgid "Unknown Nikon Color Balance 2 Tag" -msgstr "" - -#: src/nikonmn.cpp:1274 -msgid "Unknown Nikon Color Balance 2a Tag" -msgstr "" - -#: src/nikonmn.cpp:1287 -msgid "Unknown Nikon Color Balance 2b Tag" -msgstr "" - -#: src/nikonmn.cpp:1298 -msgid "WB RGBG Levels" -msgstr "" - -#: src/nikonmn.cpp:1298 -msgid "WB RGBG levels" -msgstr "" - -#: src/nikonmn.cpp:1300 -msgid "Unknown Nikon Color Balance 3 Tag" -msgstr "" - -#: src/nikonmn.cpp:1311 -msgid "WB GRBG Levels" -msgstr "" - -#: src/nikonmn.cpp:1311 -msgid "WB GRBG levels" -msgstr "" - -#: src/nikonmn.cpp:1313 -msgid "Unknown Nikon Color Balance 4 Tag" -msgstr "" - -#: src/nikonmn.cpp:1324 src/nikonmn.cpp:1348 src/nikonmn.cpp:1373 -#, fuzzy -msgid "Lens ID Number" -msgstr "Linssin sarjanumero" - -#: src/nikonmn.cpp:1324 src/nikonmn.cpp:1348 src/nikonmn.cpp:1373 -#, fuzzy -msgid "Lens ID number" -msgstr "Linssin sarjanumero" - -#: src/nikonmn.cpp:1325 src/nikonmn.cpp:1349 src/nikonmn.cpp:1374 -#, fuzzy -msgid "Lens F-Stops" -msgstr "Linssin tyyppi" - -#: src/nikonmn.cpp:1325 src/nikonmn.cpp:1349 src/nikonmn.cpp:1374 -#, fuzzy -msgid "Lens F-stops" -msgstr "Linssin tyyppi" - -#: src/nikonmn.cpp:1326 src/nikonmn.cpp:1350 src/nikonmn.cpp:1375 -#: src/olympusmn.cpp:751 -#, fuzzy -msgid "Min Focal Length" -msgstr "Polttoväli" - -#: src/nikonmn.cpp:1326 src/nikonmn.cpp:1350 src/nikonmn.cpp:1375 -#: src/olympusmn.cpp:751 -#, fuzzy -msgid "Min focal length" -msgstr "Polttoväli" - -#: src/nikonmn.cpp:1327 src/nikonmn.cpp:1351 src/nikonmn.cpp:1376 -#: src/olympusmn.cpp:752 -#, fuzzy -msgid "Max Focal Length" -msgstr "Polttoväli" - -#: src/nikonmn.cpp:1327 src/nikonmn.cpp:1351 src/nikonmn.cpp:1376 -#: src/olympusmn.cpp:752 -#, fuzzy -msgid "Max focal length" -msgstr "Polttoväli" - -#: src/nikonmn.cpp:1328 src/nikonmn.cpp:1352 src/nikonmn.cpp:1377 -#: src/olympusmn.cpp:749 -msgid "Max Aperture At Min Focal" -msgstr "" - -#: src/nikonmn.cpp:1328 src/nikonmn.cpp:1352 src/olympusmn.cpp:749 -msgid "Max aperture at min focal" -msgstr "" - -#: src/nikonmn.cpp:1329 src/nikonmn.cpp:1353 src/nikonmn.cpp:1378 -#: src/olympusmn.cpp:750 -msgid "Max Aperture At Max Focal" -msgstr "" - -#: src/nikonmn.cpp:1329 src/nikonmn.cpp:1353 src/olympusmn.cpp:750 -msgid "Max aperture at max focal" -msgstr "" - -#: src/nikonmn.cpp:1330 src/nikonmn.cpp:1354 src/nikonmn.cpp:1379 -#, fuzzy -msgid "MCU Version" -msgstr "Ohjelman versio" - -#: src/nikonmn.cpp:1330 src/nikonmn.cpp:1354 src/nikonmn.cpp:1379 -#, fuzzy -msgid "MCU version" -msgstr "Ohjelman versio" - -#: src/nikonmn.cpp:1332 -msgid "Unknown Nikon Lens Data 1 Tag" -msgstr "" - -#: src/nikonmn.cpp:1343 src/nikonmn.cpp:1368 -msgid "Exit Pupil Position" -msgstr "" - -#: src/nikonmn.cpp:1343 src/nikonmn.cpp:1368 -msgid "Exit pupil position" -msgstr "" - -#: src/nikonmn.cpp:1344 src/nikonmn.cpp:1369 -#, fuzzy -msgid "AF Aperture" -msgstr "Aukko" - -#: src/nikonmn.cpp:1344 src/nikonmn.cpp:1369 -#, fuzzy -msgid "AF aperture" -msgstr "Aukko" - -#: src/nikonmn.cpp:1355 src/nikonmn.cpp:1380 -msgid "Effective Max Aperture" -msgstr "" - -#: src/nikonmn.cpp:1355 src/nikonmn.cpp:1380 -msgid "Effective max aperture" -msgstr "" - -#: src/nikonmn.cpp:1357 -msgid "Unknown Nikon Lens Data 2 Tag" -msgstr "" - -#: src/nikonmn.cpp:1377 -msgid "Max aperture at min focal length" -msgstr "" - -#: src/nikonmn.cpp:1378 -msgid "Max aperture at max focal length" -msgstr "" - -#: src/nikonmn.cpp:1382 -msgid "Unknown Nikon Lens Data 3 Tag" -msgstr "" - -#: src/nikonmn.cpp:1562 -msgid "Closest subject" -msgstr "" - -#: src/nikonmn.cpp:1563 -msgid "Group dynamic-AF" -msgstr "" - -#: src/nikonmn.cpp:1586 src/tags.cpp:240 -msgid "none" -msgstr "" - -#: src/nikonmn.cpp:1596 -msgid "used" -msgstr "" - -#: src/nikonmn.cpp:1622 -#, fuzzy -msgid "All 11 Points" -msgstr "AF-piste" - -#: src/nikonmn.cpp:1637 src/nikonmn.cpp:1638 src/pentaxmn.cpp:533 -#: src/pentaxmn.cpp:537 -msgid "Single-frame" -msgstr "" - -#: src/olympusmn.cpp:71 -msgid "Standard Quality (SQ)" -msgstr "" - -#: src/olympusmn.cpp:72 -msgid "High Quality (HQ)" -msgstr "" - -#: src/olympusmn.cpp:73 -msgid "Super High Quality (SHQ)" -msgstr "" - -#: src/olympusmn.cpp:88 -msgid "On (preset)" -msgstr "" - -#: src/olympusmn.cpp:95 src/pentaxmn.cpp:474 -#, fuzzy -msgid "Sport" -msgstr "Urheilukuva" - -#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 -#, fuzzy -msgid "Landscape+Portrait" -msgstr "Maisemakuva" - -#: src/olympusmn.cpp:100 -#, fuzzy -msgid "Self Portrait" -msgstr "Muotokuva" - -#: src/olympusmn.cpp:102 -#, fuzzy -msgid "2 in 1" -msgstr "Päällä" - -#: src/olympusmn.cpp:105 -#, fuzzy -msgid "Night+Portrait" -msgstr "Muotokuva" - -#: src/olympusmn.cpp:111 src/panasonicmn.cpp:120 src/pentaxmn.cpp:486 -msgid "Food" -msgstr "" - -#: src/olympusmn.cpp:112 -msgid "Documents" -msgstr "" - -#: src/olympusmn.cpp:114 -msgid "Shoot & Select" -msgstr "" - -#: src/olympusmn.cpp:115 -msgid "Beach & Snow" -msgstr "" - -#: src/olympusmn.cpp:116 -msgid "Self Portrait+Timer" -msgstr "" - -#: src/olympusmn.cpp:117 -msgid "Candle" -msgstr "" - -#: src/olympusmn.cpp:118 -msgid "Available Light" -msgstr "" - -#: src/olympusmn.cpp:119 -msgid "Behind Glass" -msgstr "" - -#: src/olympusmn.cpp:120 -#, fuzzy -msgid "My Mode" -msgstr "Makrotila" - -#: src/olympusmn.cpp:121 src/panasonicmn.cpp:131 src/pentaxmn.cpp:483 -#: src/sonymn.cpp:127 -#, fuzzy -msgid "Pet" -msgstr "Aseta" - -#: src/olympusmn.cpp:122 -msgid "Underwater Wide1" -msgstr "" - -#: src/olympusmn.cpp:123 -msgid "Underwater Macro" -msgstr "" - -#: src/olympusmn.cpp:124 -msgid "Shoot & Select1" -msgstr "" - -#: src/olympusmn.cpp:125 -msgid "Shoot & Select2" -msgstr "" - -#: src/olympusmn.cpp:127 -#, fuzzy -msgid "Digital Image Stabilization" -msgstr "Kuvan vakautus" - -#: src/olympusmn.cpp:128 -msgid "Auction" -msgstr "" - -#: src/olympusmn.cpp:131 -msgid "Underwater Wide2" -msgstr "" - -#: src/olympusmn.cpp:133 -msgid "Children" -msgstr "" - -#: src/olympusmn.cpp:135 -msgid "Nature Macro" -msgstr "" - -#: src/olympusmn.cpp:136 -msgid "Underwater Snapshot" -msgstr "" - -#: src/olympusmn.cpp:137 -msgid "Shooting Guide" -msgstr "" - -#: src/olympusmn.cpp:145 -#, fuzzy -msgid "Internal + External" -msgstr "Sisäinen salama" - -#: src/olympusmn.cpp:176 -#, fuzzy -msgid "Interlaced" -msgstr "Sisäinen salama" - -#: src/olympusmn.cpp:177 -#, fuzzy -msgid "Progressive" -msgstr "Ohjelman versio" - -#: src/olympusmn.cpp:188 -msgid "Thumbnail Image" -msgstr "Näytekuva" - -#: src/olympusmn.cpp:189 -msgid "Thumbnail image" -msgstr "Näytekuva" - -#: src/olympusmn.cpp:192 src/olympusmn.cpp:744 src/olympusmn.cpp:1027 -#, fuzzy -msgid "Body Firmware Version" -msgstr "Firmwaren versio" - -#: src/olympusmn.cpp:193 src/olympusmn.cpp:744 src/olympusmn.cpp:1027 -#, fuzzy -msgid "Body firmware version" -msgstr "Firmwaren versio" - -#: src/olympusmn.cpp:195 -#, fuzzy -msgid "Special Mode" -msgstr "ISO-herkkyys" - -#: src/olympusmn.cpp:196 -#, fuzzy -msgid "Picture taking mode" -msgstr "Kuvan tiedot" - -#: src/olympusmn.cpp:204 -#, fuzzy -msgid "Black & White Mode" -msgstr "Mustavalkoinen" - -#: src/olympusmn.cpp:205 -#, fuzzy -msgid "Black and white mode" -msgstr "Mustavalko" - -#: src/olympusmn.cpp:208 -#, fuzzy -msgid "Digital zoom ratio" -msgstr "Digitaalinen zoom" - -#: src/olympusmn.cpp:210 src/olympusmn.cpp:743 -msgid "Focal Plane Diagonal" -msgstr "" - -#: src/olympusmn.cpp:211 src/olympusmn.cpp:743 -msgid "Focal plane diagonal" -msgstr "" - -#: src/olympusmn.cpp:213 -msgid "Lens Distortion Parameters" -msgstr "" - -#: src/olympusmn.cpp:214 -msgid "Lens distortion parameters" -msgstr "" - -#: src/olympusmn.cpp:216 src/olympusmn.cpp:740 -msgid "Camera Type" -msgstr "Kameran tyyppi" - -#: src/olympusmn.cpp:217 src/olympusmn.cpp:740 -msgid "Camera type" -msgstr "Kameran tyyppi" - -#: src/olympusmn.cpp:220 -msgid "ASCII format data such as [PictureInfo]" -msgstr "" - -#: src/olympusmn.cpp:222 -#, fuzzy -msgid "Camera ID" -msgstr "Kameran tyyppi" - -#: src/olympusmn.cpp:223 -#, fuzzy -msgid "Camera ID data" -msgstr "Kameran merkki" - -#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:519 -#: src/sigmamn.cpp:119 src/sigmamn.cpp:120 src/tags.cpp:538 -msgid "Software" -msgstr "Ohjelmisto" - -#: src/olympusmn.cpp:234 src/panasonicmn.cpp:348 src/sonymn.cpp:314 -#, fuzzy -msgid "Preview Image" -msgstr "Esikatselu" - -#: src/olympusmn.cpp:235 src/panasonicmn.cpp:348 -#, fuzzy -msgid "Preview image" -msgstr "Esikatselu" - -#: src/olympusmn.cpp:237 -msgid "Pre Capture Frames" -msgstr "" - -#: src/olympusmn.cpp:238 -msgid "Pre-capture frames" -msgstr "" - -#: src/olympusmn.cpp:240 -#, fuzzy -msgid "White Board" -msgstr "Valkotasapaino" - -#: src/olympusmn.cpp:241 -#, fuzzy -msgid "White board" -msgstr "Valkotasapaino" - -#: src/olympusmn.cpp:243 -msgid "One Touch WB" -msgstr "" - -#: src/olympusmn.cpp:244 -#, fuzzy -msgid "One touch white balance" -msgstr "Valkotasapaino" - -#: src/olympusmn.cpp:246 src/olympusmn.cpp:678 -#, fuzzy -msgid "White Balance Bracket" -msgstr "Valkotasapaino" - -#: src/olympusmn.cpp:247 src/olympusmn.cpp:678 -#, fuzzy -msgid "White balance bracket" -msgstr " " - -#: src/olympusmn.cpp:255 src/sigmamn.cpp:116 src/sigmamn.cpp:117 -#, fuzzy -msgid "Firmware" -msgstr "Firmwaren versio" - -#: src/olympusmn.cpp:256 -#, fuzzy -msgid "Firmwarer" -msgstr "Firmwaren versio" - -#: src/olympusmn.cpp:261 -msgid "Data Dump 1" -msgstr "" - -#: src/olympusmn.cpp:262 -#, fuzzy -msgid "Various camera settings 1" -msgstr "Kameran asetukset" - -#: src/olympusmn.cpp:264 -msgid "Data Dump 2" -msgstr "" - -#: src/olympusmn.cpp:265 -#, fuzzy -msgid "Various camera settings 2" -msgstr "Kameran asetukset" - -#: src/olympusmn.cpp:268 -#, fuzzy -msgid "Shutter speed value" -msgstr "Valotusaika" - -#: src/olympusmn.cpp:271 -msgid "ISO speed value" -msgstr "ISO-herkkyys" - -#: src/olympusmn.cpp:274 -msgid "Aperture value" -msgstr "Aukko" - -#: src/olympusmn.cpp:277 -#, fuzzy -msgid "Brightness value" -msgstr "Aukko" - -#: src/olympusmn.cpp:285 -#, fuzzy -msgid "Bracket" -msgstr "Makrotila" - -#: src/olympusmn.cpp:286 -#, fuzzy -msgid "Exposure compensation value" -msgstr "Valotustila" - -#: src/olympusmn.cpp:288 src/olympusmn.cpp:1015 -msgid "Sensor Temperature" -msgstr "" - -#: src/olympusmn.cpp:289 src/olympusmn.cpp:1015 -msgid "Sensor temperature" -msgstr "" - -#: src/olympusmn.cpp:291 -#, fuzzy -msgid "Lens Temperature" -msgstr "Linssin ominaisuudet" - -#: src/olympusmn.cpp:292 -#, fuzzy -msgid "Lens temperature" -msgstr "Linssin ominaisuudet" - -#: src/olympusmn.cpp:294 -msgid "Light Condition" -msgstr "" - -#: src/olympusmn.cpp:295 -msgid "Light condition" -msgstr "" - -#: src/olympusmn.cpp:297 -#, fuzzy -msgid "Focus Range" -msgstr "Tarkennustapa" - -#: src/olympusmn.cpp:298 -#, fuzzy -msgid "Focus range" -msgstr "Tarkennustapa" - -#: src/olympusmn.cpp:306 -msgid "Zoom" -msgstr "" - -#: src/olympusmn.cpp:307 src/olympusmn.cpp:1003 -msgid "Zoom step count" -msgstr "" - -#: src/olympusmn.cpp:309 -#, fuzzy -msgid "Macro Focus" -msgstr "Makrotila" - -#: src/olympusmn.cpp:310 -msgid "Macro focus step count" -msgstr "" - -#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 -#, fuzzy -msgid "Sharpness Factor" -msgstr "Terävyys" - -#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 -#, fuzzy -msgid "Sharpness factor" -msgstr "Terävyys" - -#: src/olympusmn.cpp:315 -#, fuzzy -msgid "Flash Charge Level" -msgstr "Salaman malli" - -#: src/olympusmn.cpp:316 -#, fuzzy -msgid "Flash charge level" -msgstr "Salaman malli" - -#: src/olympusmn.cpp:318 src/olympusmn.cpp:962 -#, fuzzy -msgid "Color Matrix" -msgstr "Väriavaruus" - -#: src/olympusmn.cpp:319 src/olympusmn.cpp:962 -#, fuzzy -msgid "Color matrix" -msgstr "Väriavaruus" - -#: src/olympusmn.cpp:321 -#, fuzzy -msgid "BlackLevel" -msgstr "Salaman malli" - -#: src/olympusmn.cpp:322 src/olympusmn.cpp:967 -#, fuzzy -msgid "Black level" -msgstr "Salaman malli" - -#: src/olympusmn.cpp:331 -#, fuzzy -msgid "White balance mode" -msgstr "Valkotasapaino" - -#: src/olympusmn.cpp:336 src/panasonicmn.cpp:342 -#, fuzzy -msgid "Red Balance" -msgstr "Valkotasapaino" - -#: src/olympusmn.cpp:337 src/pentaxmn.cpp:938 -#, fuzzy -msgid "Red balance" -msgstr "Valkotasapaino" - -#: src/olympusmn.cpp:339 src/panasonicmn.cpp:343 -#, fuzzy -msgid "Blue Balance" -msgstr "Valkotasapaino" - -#: src/olympusmn.cpp:340 src/panasonicmn.cpp:343 src/pentaxmn.cpp:935 -#, fuzzy -msgid "Blue balance" -msgstr "Valkotasapaino" - -#: src/olympusmn.cpp:342 -#, fuzzy -msgid "Color Matrix Number" -msgstr "Väriavaruus" - -#: src/olympusmn.cpp:343 -#, fuzzy -msgid "Color matrix mumber" -msgstr "Väriavaruus" - -#: src/olympusmn.cpp:345 -#, fuzzy -msgid "Serial Number 2" -msgstr "Sarjanumero" - -#: src/olympusmn.cpp:346 -#, fuzzy -msgid "Serial number 2" -msgstr "Sarjanumero" - -#: src/olympusmn.cpp:373 src/olympusmn.cpp:671 src/pentaxmn.cpp:1028 -#: src/pentaxmn.cpp:1029 -msgid "Flash exposure compensation" -msgstr "" - -#: src/olympusmn.cpp:381 src/olympusmn.cpp:1011 -#, fuzzy -msgid "External Flash Bounce" -msgstr "Ulkoinen salama" - -#: src/olympusmn.cpp:382 src/olympusmn.cpp:1011 -#, fuzzy -msgid "External flash bounce" -msgstr "Ulkoinen salama" - -#: src/olympusmn.cpp:384 src/olympusmn.cpp:1012 -#, fuzzy -msgid "External Flash Zoom" -msgstr "Ulkoinen salama" - -#: src/olympusmn.cpp:385 src/olympusmn.cpp:1012 -#, fuzzy -msgid "External flash zoom" -msgstr "Ulkoinen salama" - -#: src/olympusmn.cpp:387 -#, fuzzy -msgid "External Flash Mode" -msgstr "Ulkoinen salama" - -#: src/olympusmn.cpp:388 -#, fuzzy -msgid "External flash mode" -msgstr "Ulkoinen salama" - -#: src/olympusmn.cpp:396 -#, fuzzy -msgid "Color Control" -msgstr "Täysautomatiikka" - -#: src/olympusmn.cpp:397 -#, fuzzy -msgid "Color control" -msgstr "Täysautomatiikka" - -#: src/olympusmn.cpp:399 -msgid "ValidBits" -msgstr "" - -#: src/olympusmn.cpp:400 src/olympusmn.cpp:969 -msgid "Valid bits" -msgstr "" - -#: src/olympusmn.cpp:402 -msgid "CoringFilter" -msgstr "" - -#: src/olympusmn.cpp:403 src/olympusmn.cpp:965 src/olympusmn.cpp:1067 -#, fuzzy -msgid "Coring filter" -msgstr "tiedostoon" - -#: src/olympusmn.cpp:423 -#, fuzzy -msgid "Compression Ratio" -msgstr "Pakkaus" - -#: src/olympusmn.cpp:424 -#, fuzzy -msgid "Compression ratio" -msgstr "Pakkaus" - -#: src/olympusmn.cpp:427 -msgid "Preview image embedded" -msgstr "" - -#: src/olympusmn.cpp:430 -msgid "Offset of the preview image" -msgstr "" - -#: src/olympusmn.cpp:433 -msgid "Size of the preview image" -msgstr "" - -#: src/olympusmn.cpp:435 -msgid "CCD Scan Mode" -msgstr "" - -#: src/olympusmn.cpp:436 -msgid "CCD scan mode" -msgstr "" - -#: src/olympusmn.cpp:441 -msgid "Infinity Lens Step" -msgstr "" - -#: src/olympusmn.cpp:442 -msgid "Infinity lens step" -msgstr "" - -#: src/olympusmn.cpp:444 -#, fuzzy -msgid "Near Lens Step" -msgstr "Linssin tyyppi" - -#: src/olympusmn.cpp:445 -msgid "Near lens step" -msgstr "" - -#: src/olympusmn.cpp:447 -msgid "Equipment Info" -msgstr "" - -#: src/olympusmn.cpp:448 -msgid "Camera equipment sub-IFD" -msgstr "" - -#: src/olympusmn.cpp:451 -#, fuzzy -msgid "Camera Settings sub-IFD" -msgstr "Kameran asetukset" - -#: src/olympusmn.cpp:453 -msgid "Raw Development" -msgstr "" - -#: src/olympusmn.cpp:454 -msgid "Raw development sub-IFD" -msgstr "" - -#: src/olympusmn.cpp:456 -msgid "Raw Development 2" -msgstr "" - -#: src/olympusmn.cpp:457 -msgid "Raw development 2 sub-IFD" -msgstr "" - -#: src/olympusmn.cpp:460 -msgid "Image processing sub-IFD" -msgstr "" - -#: src/olympusmn.cpp:462 -#, fuzzy -msgid "Focus Info" -msgstr "Tarkennustapa" - -#: src/olympusmn.cpp:463 -msgid "Focus sub-IFD" -msgstr "" - -#: src/olympusmn.cpp:465 -msgid "Raw Info" -msgstr "" - -#: src/olympusmn.cpp:466 -msgid "Raw sub-IFD" -msgstr "" - -#: src/olympusmn.cpp:470 -msgid "Unknown OlympusMakerNote tag" -msgstr "" - -#: src/olympusmn.cpp:486 -#, fuzzy -msgid "Program-shift" -msgstr "Ohjelma" - -#: src/olympusmn.cpp:491 -#, fuzzy -msgid "Center-weighted average" -msgstr "Keskustaa painottava" - -#: src/olympusmn.cpp:493 -msgid "ESP" -msgstr "" - -#: src/olympusmn.cpp:494 -msgid "Pattern+AF" -msgstr "" - -#: src/olympusmn.cpp:495 -msgid "Spot+Highlight control" -msgstr "" - -#: src/olympusmn.cpp:496 -msgid "Spot+Shadow control" -msgstr "" - -#: src/olympusmn.cpp:508 src/olympusmn.cpp:1369 -msgid "Single AF" -msgstr "" - -#: src/olympusmn.cpp:509 src/olympusmn.cpp:1370 -msgid "Sequential shooting AF" -msgstr "" - -#: src/olympusmn.cpp:511 src/olympusmn.cpp:1372 src/sonymn.cpp:187 -msgid "Multi AF" -msgstr "" - -#: src/olympusmn.cpp:517 -#, fuzzy -msgid "AF Not Used" -msgstr "Käytetty AF-piste" - -#: src/olympusmn.cpp:518 -#, fuzzy -msgid "AF Used" -msgstr "Käytetty AF-piste" - -#: src/olympusmn.cpp:523 -msgid "Not Ready" -msgstr "" - -#: src/olympusmn.cpp:524 -msgid "Ready" -msgstr "" - -#: src/olympusmn.cpp:531 -msgid "Fill-in" -msgstr "" - -#: src/olympusmn.cpp:533 -msgid "Slow-sync" -msgstr "" - -#: src/olympusmn.cpp:534 -#, fuzzy -msgid "Forced On" -msgstr "Valkoinen loisteputki" - -#: src/olympusmn.cpp:535 -msgid "2nd Curtain" -msgstr "" - -#: src/olympusmn.cpp:541 -msgid "Channel 1, Low" -msgstr "" - -#: src/olympusmn.cpp:542 -msgid "Channel 2, Low" -msgstr "" - -#: src/olympusmn.cpp:543 -msgid "Channel 3, Low" -msgstr "" - -#: src/olympusmn.cpp:544 -msgid "Channel 4, Low" -msgstr "" - -#: src/olympusmn.cpp:545 -msgid "Channel 1, Mid" -msgstr "" - -#: src/olympusmn.cpp:546 -msgid "Channel 2, Mid" -msgstr "" - -#: src/olympusmn.cpp:547 -msgid "Channel 3, Mid" -msgstr "" - -#: src/olympusmn.cpp:548 -msgid "Channel 4, Mid" -msgstr "" - -#: src/olympusmn.cpp:549 -msgid "Channel 1, High" -msgstr "" - -#: src/olympusmn.cpp:550 -msgid "Channel 2, High" -msgstr "" - -#: src/olympusmn.cpp:551 -msgid "Channel 3, High" -msgstr "" - -#: src/olympusmn.cpp:552 -msgid "Channel 4, High" -msgstr "" - -#: src/olympusmn.cpp:566 -msgid "7500K (Fine Weather with Shade)" -msgstr "" - -#: src/olympusmn.cpp:567 -#, fuzzy -msgid "6000K (Cloudy)" -msgstr "Pilvinen" - -#: src/olympusmn.cpp:568 -msgid "5300K (Fine Weather)" -msgstr "" - -#: src/olympusmn.cpp:569 -msgid "3000K (Tungsten light)" -msgstr "" - -#: src/olympusmn.cpp:570 src/olympusmn.cpp:574 -msgid "3600K (Tungsten light-like)" -msgstr "" - -#: src/olympusmn.cpp:571 -msgid "6600K (Daylight fluorescent)" -msgstr "" - -#: src/olympusmn.cpp:572 -msgid "4500K (Neutral white fluorescent)" -msgstr "" - -#: src/olympusmn.cpp:573 -msgid "4000K (Cool white fluorescent)" -msgstr "" - -#: src/olympusmn.cpp:575 -msgid "Custom WB 1" -msgstr "" - -#: src/olympusmn.cpp:576 -msgid "Custom WB 2" -msgstr "" - -#: src/olympusmn.cpp:577 -msgid "Custom WB 3" -msgstr "" - -#: src/olympusmn.cpp:578 -msgid "Custom WB 4" -msgstr "" - -#: src/olympusmn.cpp:579 -msgid "Custom WB 5400K" -msgstr "" - -#: src/olympusmn.cpp:580 -msgid "Custom WB 2900K" -msgstr "" - -#: src/olympusmn.cpp:581 -msgid "Custom WB 8000K" -msgstr "" - -#: src/olympusmn.cpp:587 -msgid "CM1 (Red Enhance)" -msgstr "" - -#: src/olympusmn.cpp:588 -msgid "CM2 (Green Enhance)" -msgstr "" - -#: src/olympusmn.cpp:589 -msgid "CM3 (Blue Enhance)" -msgstr "" - -#: src/olympusmn.cpp:590 -msgid "CM4 (Skin Tones)" -msgstr "" - -#: src/olympusmn.cpp:597 src/olympusmn.cpp:776 src/olympusmn.cpp:841 -msgid "Pro Photo RGB" -msgstr "" - -#: src/olympusmn.cpp:603 src/olympusmn.cpp:697 -msgid "Noise Filter" -msgstr "" - -#: src/olympusmn.cpp:604 -msgid "Noise Filter (ISO Boost)" -msgstr "" - -#: src/olympusmn.cpp:612 src/olympusmn.cpp:854 -msgid "Muted" -msgstr "" - -#: src/olympusmn.cpp:614 src/olympusmn.cpp:855 -msgid "Monotone" -msgstr "" - -#: src/olympusmn.cpp:640 -msgid "SQ" -msgstr "" - -#: src/olympusmn.cpp:641 -msgid "HQ" -msgstr "" - -#: src/olympusmn.cpp:642 -msgid "SHQ" -msgstr "" - -#: src/olympusmn.cpp:649 src/panasonicmn.cpp:86 -#, fuzzy -msgid "On, Mode 1" -msgstr "Linssin malli" - -#: src/olympusmn.cpp:650 src/panasonicmn.cpp:88 -#, fuzzy -msgid "On, Mode 2" -msgstr "Linssin malli" - -#: src/olympusmn.cpp:651 -#, fuzzy -msgid "On, Mode 3" -msgstr "Linssin malli" - -#: src/olympusmn.cpp:655 -#, fuzzy -msgid "Camera Settings Version" -msgstr "Kameran asetukset" - -#: src/olympusmn.cpp:655 -#, fuzzy -msgid "Camera settings version" -msgstr "Kameran asetukset" - -#: src/olympusmn.cpp:656 -msgid "PreviewImage Valid" -msgstr "" - -#: src/olympusmn.cpp:656 -msgid "Preview image valid" -msgstr "" - -#: src/olympusmn.cpp:657 -msgid "PreviewImage Start" -msgstr "" - -#: src/olympusmn.cpp:657 -msgid "Preview image start" -msgstr "" - -#: src/olympusmn.cpp:658 -msgid "PreviewImage Length" -msgstr "" - -#: src/olympusmn.cpp:658 -msgid "Preview image length" -msgstr "" - -#: src/olympusmn.cpp:660 -#, fuzzy -msgid "Auto exposure lock" -msgstr "Automaattivalotus" - -#: src/olympusmn.cpp:662 -#, fuzzy -msgid "Exposure Shift" -msgstr "Valotusaika" - -#: src/olympusmn.cpp:662 -#, fuzzy -msgid "Exposure shift" -msgstr "Valotusaika" - -#: src/olympusmn.cpp:665 -#, fuzzy -msgid "Focus Process" -msgstr "Tarkennustapa" - -#: src/olympusmn.cpp:665 -#, fuzzy -msgid "Focus process" -msgstr "Tarkennustapa" - -#: src/olympusmn.cpp:666 -msgid "AF Search" -msgstr "" - -#: src/olympusmn.cpp:666 -msgid "AF search" -msgstr "" - -#: src/olympusmn.cpp:667 -#, fuzzy -msgid "AF Areas" -msgstr "Salaman tila" - -#: src/olympusmn.cpp:667 -#, fuzzy -msgid "AF areas" -msgstr "Kameran malli" - -#: src/olympusmn.cpp:668 -#, fuzzy -msgid "AFPointSelected" -msgstr "Valittu AF-piste" - -#: src/olympusmn.cpp:669 -#, fuzzy -msgid "AF Fine Tune Adjust" -msgstr "Käytetty AF-piste" - -#: src/olympusmn.cpp:669 -#, fuzzy -msgid "AF fine tune adjust" -msgstr "Käytetty AF-piste" - -#: src/olympusmn.cpp:672 -#, fuzzy -msgid "Flash Remote Control" -msgstr "Täysautomatiikka" - -#: src/olympusmn.cpp:672 -#, fuzzy -msgid "Flash remote control" -msgstr "Täysautomatiikka" - -#: src/olympusmn.cpp:673 -#, fuzzy -msgid "Flash Control Mode" -msgstr "Salaman tila" - -#: src/olympusmn.cpp:673 -#, fuzzy -msgid "Flash control mode" -msgstr "Salaman malli" - -#: src/olympusmn.cpp:674 -#, fuzzy -msgid "Flash Intensity" -msgstr "Salaman tyyppi" - -#: src/olympusmn.cpp:674 -#, fuzzy -msgid "Flash intensity" -msgstr "Salaman tyyppi" - -#: src/olympusmn.cpp:675 -#, fuzzy -msgid "Manual Flash Strength" -msgstr "Salaman tyyppi" - -#: src/olympusmn.cpp:675 -#, fuzzy -msgid "Manual flash strength" -msgstr "Täysautomatiikka" - -#: src/olympusmn.cpp:676 src/sonymn.cpp:429 -#, fuzzy -msgid "White Balance 2" -msgstr "Valkotasapaino" - -#: src/olympusmn.cpp:676 src/sonymn.cpp:430 -#, fuzzy -msgid "White balance 2" -msgstr "Valkotasapaino" - -#: src/olympusmn.cpp:677 -#, fuzzy -msgid "White Balance Temperature" -msgstr "Valkotasapaino" - -#: src/olympusmn.cpp:677 -#, fuzzy -msgid "White balance temperature" -msgstr " " - -#: src/olympusmn.cpp:679 -#, fuzzy -msgid "Custom Saturation" -msgstr "Värikylläisyys" - -#: src/olympusmn.cpp:679 -#, fuzzy -msgid "Custom saturation" -msgstr "Värikylläisyys" - -#: src/olympusmn.cpp:680 -#, fuzzy -msgid "Modified Saturation" -msgstr "Värikylläisyys" - -#: src/olympusmn.cpp:680 -#, fuzzy -msgid "Modified saturation" -msgstr "Värikylläisyys" - -#: src/olympusmn.cpp:681 src/olympusmn.cpp:1080 -#, fuzzy -msgid "Contrast Setting" -msgstr "Kameran asetukset" - -#: src/olympusmn.cpp:682 src/olympusmn.cpp:1081 -#, fuzzy -msgid "Sharpness Setting" -msgstr "Terävyys" - -#: src/olympusmn.cpp:686 src/olympusmn.cpp:975 -msgid "Distortion Correction" -msgstr "" - -#: src/olympusmn.cpp:686 src/olympusmn.cpp:975 -msgid "Distortion correction" -msgstr "" - -#: src/olympusmn.cpp:687 src/olympusmn.cpp:976 -msgid "Shading Compensation" -msgstr "" - -#: src/olympusmn.cpp:687 src/olympusmn.cpp:976 -msgid "Shading compensation" -msgstr "" - -#: src/olympusmn.cpp:688 -#, fuzzy -msgid "Compression Factor" -msgstr "Pakkaus" - -#: src/olympusmn.cpp:688 -#, fuzzy -msgid "Compression factor" -msgstr "Pakkaus" - -#: src/olympusmn.cpp:689 src/olympusmn.cpp:897 -#, fuzzy -msgid "Gradation" -msgstr "Värikylläisyys" - -#: src/olympusmn.cpp:690 src/olympusmn.cpp:891 src/pentaxmn.cpp:988 -#: src/pentaxmn.cpp:989 -#, fuzzy -msgid "Picture mode" -msgstr "Kuvan tiedot" - -#: src/olympusmn.cpp:691 -#, fuzzy -msgid "Picture Mode Saturation" -msgstr "Värikylläisyys" - -#: src/olympusmn.cpp:691 src/olympusmn.cpp:892 -#, fuzzy -msgid "Picture mode saturation" -msgstr "Värikylläisyys" - -#: src/olympusmn.cpp:692 -#, fuzzy -msgid "Picture Mode Hue" -msgstr "Kuvan tiedot" - -#: src/olympusmn.cpp:692 -#, fuzzy -msgid "Picture mode hue" -msgstr "Kuvan tiedot" - -#: src/olympusmn.cpp:693 -msgid "Picture Mode Contrast" -msgstr "" - -#: src/olympusmn.cpp:693 src/olympusmn.cpp:893 -msgid "Picture mode contrast" -msgstr "" - -#: src/olympusmn.cpp:694 -msgid "Picture Mode Sharpness" -msgstr "" - -#: src/olympusmn.cpp:694 src/olympusmn.cpp:894 -msgid "Picture mode sharpness" -msgstr "" - -#: src/olympusmn.cpp:695 -msgid "Picture Mode BW Filter" -msgstr "" - -#: src/olympusmn.cpp:695 -msgid "Picture mode BW filter" -msgstr "" - -#: src/olympusmn.cpp:696 -#, fuzzy -msgid "Picture Mode Tone" -msgstr "Kuvan tiedot" - -#: src/olympusmn.cpp:696 -#, fuzzy -msgid "Picture mode tone" -msgstr "Kuvan tiedot" - -#: src/olympusmn.cpp:697 -#, fuzzy -msgid "Noise filter" -msgstr "tiedostoon" - -#: src/olympusmn.cpp:698 -#, fuzzy -msgid "Art Filter" -msgstr "Väriavaruus" - -#: src/olympusmn.cpp:698 -#, fuzzy -msgid "Art filter" -msgstr "Väriavaruus" - -#: src/olympusmn.cpp:699 -#, fuzzy -msgid "Magic Filter" -msgstr "Digitaalinen makro" - -#: src/olympusmn.cpp:699 -#, fuzzy -msgid "Magic filter" -msgstr "Digitaalinen makro" - -#: src/olympusmn.cpp:701 -#, fuzzy -msgid "Panorama Mode" -msgstr "Panoraama" - -#: src/olympusmn.cpp:701 -#, fuzzy -msgid "Panorama mode" -msgstr "Panoraama" - -#: src/olympusmn.cpp:702 -#, fuzzy -msgid "Image Quality 2" -msgstr "Kuvan laatu" - -#: src/olympusmn.cpp:702 -#, fuzzy -msgid "Image quality 2" -msgstr "Kuvan laatu" - -#: src/olympusmn.cpp:704 -msgid "Manometer Pressure" -msgstr "" - -#: src/olympusmn.cpp:704 -msgid "Manometer pressure" -msgstr "" - -#: src/olympusmn.cpp:705 -msgid "Manometer Reading" -msgstr "" - -#: src/olympusmn.cpp:705 -msgid "Manometer reading" -msgstr "" - -#: src/olympusmn.cpp:706 -msgid "Extended WB Detect" -msgstr "" - -#: src/olympusmn.cpp:706 -msgid "Extended WB detect" -msgstr "" - -#: src/olympusmn.cpp:707 -msgid "Level Gauge Roll" -msgstr "" - -#: src/olympusmn.cpp:707 -msgid "Level gauge roll" -msgstr "" - -#: src/olympusmn.cpp:708 -msgid "Level Gauge Pitch" -msgstr "" - -#: src/olympusmn.cpp:708 -msgid "Level gauge pitch" -msgstr "" - -#: src/olympusmn.cpp:710 -msgid "Unknown OlympusCs tag" -msgstr "" - -#: src/olympusmn.cpp:721 -msgid "Simple E-System" -msgstr "" - -#: src/olympusmn.cpp:722 -msgid "E-System" -msgstr "" - -#: src/olympusmn.cpp:739 -#, fuzzy -msgid "Equipment Version" -msgstr "Firmwaren versio" - -#: src/olympusmn.cpp:739 -#, fuzzy -msgid "Equipment version" -msgstr "Firmwaren versio" - -#: src/olympusmn.cpp:741 -#, fuzzy -msgid "Serial number" -msgstr "Sarjanumero" - -#: src/olympusmn.cpp:746 src/panasonicmn.cpp:277 src/tags.cpp:1854 -msgid "Lens Serial Number" -msgstr "Linssin sarjanumero" - -#: src/olympusmn.cpp:746 src/panasonicmn.cpp:277 -msgid "Lens serial number" -msgstr "Linssin sarjanumero" - -#: src/olympusmn.cpp:747 src/properties.cpp:388 src/tags.cpp:1850 -msgid "Lens Model" -msgstr "Linssin malli" - -#: src/olympusmn.cpp:747 -#, fuzzy -msgid "Lens model" -msgstr "Linssin malli" - -#: src/olympusmn.cpp:748 -#, fuzzy -msgid "Lens Firmware Version" -msgstr "Firmwaren versio" - -#: src/olympusmn.cpp:748 -#, fuzzy -msgid "Lens firmware version" -msgstr "Firmwaren versio" - -#: src/olympusmn.cpp:753 -msgid "Max Aperture At Current Focal" -msgstr "" - -#: src/olympusmn.cpp:753 -msgid "Max aperture at current focal" -msgstr "" - -#: src/olympusmn.cpp:754 -msgid "Lens Properties" -msgstr "Linssin ominaisuudet" - -#: src/olympusmn.cpp:754 -msgid "Lens properties" -msgstr "Linssin ominaisuudet" - -#: src/olympusmn.cpp:755 -#, fuzzy -msgid "Extender" -msgstr "Ulkoinen" - -#: src/olympusmn.cpp:756 -#, fuzzy -msgid "Extender Serial Number" -msgstr "Linssin sarjanumero" - -#: src/olympusmn.cpp:756 -#, fuzzy -msgid "Extender serial number" -msgstr "Linssin sarjanumero" - -#: src/olympusmn.cpp:757 -#, fuzzy -msgid "Extender Model" -msgstr "Linssin malli" - -#: src/olympusmn.cpp:757 -#, fuzzy -msgid "Extender model" -msgstr "Kameran malli" - -#: src/olympusmn.cpp:758 -#, fuzzy -msgid "Extender Firmware Version" -msgstr "Firmwaren versio" - -#: src/olympusmn.cpp:758 -#, fuzzy -msgid "Extender firmwareversion" -msgstr "Firmwaren versio" - -#: src/olympusmn.cpp:760 src/properties.cpp:384 -msgid "Flash Model" -msgstr "Salaman malli" - -#: src/olympusmn.cpp:760 -msgid "Flash model" -msgstr "Salaman malli" - -#: src/olympusmn.cpp:761 -#, fuzzy -msgid "Flash Firmware Version" -msgstr "Firmwaren versio" - -#: src/olympusmn.cpp:761 -#, fuzzy -msgid "Flash firmware version" -msgstr "Firmwaren versio" - -#: src/olympusmn.cpp:762 -msgid "FlashSerialNumber" -msgstr "Salaman sarjanumero" - -#: src/olympusmn.cpp:764 -msgid "Unknown OlympusEq tag" -msgstr "" - -#: src/olympusmn.cpp:781 src/olympusmn.cpp:846 -#, fuzzy -msgid "High Speed" -msgstr "ISO-herkkyys" - -#: src/olympusmn.cpp:782 src/olympusmn.cpp:803 src/olympusmn.cpp:847 -msgid "High Function" -msgstr "" - -#: src/olympusmn.cpp:783 -msgid "Advanced High Speed" -msgstr "" - -#: src/olympusmn.cpp:784 -msgid "Advanced High Function" -msgstr "" - -#: src/olympusmn.cpp:789 -msgid "Original" -msgstr "" - -#: src/olympusmn.cpp:790 -#, fuzzy -msgid "Edited (Landscape)" -msgstr "Maisemakuva" - -#: src/olympusmn.cpp:791 src/olympusmn.cpp:792 -#, fuzzy -msgid "Edited (Portrait)" -msgstr "Muotokuva" - -#: src/olympusmn.cpp:797 -#, fuzzy -msgid "WB Color Temp" -msgstr "Väriavaruus" - -#: src/olympusmn.cpp:798 -msgid "WB Gray Point" -msgstr "" - -#: src/olympusmn.cpp:808 -msgid "Raw Development Version" -msgstr "" - -#: src/olympusmn.cpp:808 -msgid "Raw development version" -msgstr "" - -#: src/olympusmn.cpp:809 src/olympusmn.cpp:879 src/properties.cpp:558 -#: src/tags.cpp:822 -#, fuzzy -msgid "Exposure Bias Value" -msgstr "Valotuksen korjaus" - -#: src/olympusmn.cpp:809 src/olympusmn.cpp:879 -#, fuzzy -msgid "Exposure bias value" -msgstr "Valotuksen korjaus" - -#: src/olympusmn.cpp:810 src/olympusmn.cpp:881 -#, fuzzy -msgid "White Balance Value" -msgstr " " - -#: src/olympusmn.cpp:810 src/olympusmn.cpp:881 -#, fuzzy -msgid "White balance value" -msgstr " " - -#: src/olympusmn.cpp:811 src/olympusmn.cpp:882 -msgid "WB Fine Adjustment" -msgstr "" - -#: src/olympusmn.cpp:811 -msgid "WB fine adjustment" -msgstr "" - -#: src/olympusmn.cpp:812 src/olympusmn.cpp:834 src/olympusmn.cpp:883 -#, fuzzy -msgid "Gray Point" -msgstr "AF-piste" - -#: src/olympusmn.cpp:812 src/olympusmn.cpp:883 -msgid "Gray point" -msgstr "" - -#: src/olympusmn.cpp:813 src/olympusmn.cpp:886 -#, fuzzy -msgid "Saturation Emphasis" -msgstr "Värikylläisyys" - -#: src/olympusmn.cpp:813 src/olympusmn.cpp:886 -#, fuzzy -msgid "Saturation emphasis" -msgstr "Värikylläisyys" - -#: src/olympusmn.cpp:814 src/olympusmn.cpp:887 -msgid "Memory Color Emphasis" -msgstr "" - -#: src/olympusmn.cpp:814 src/olympusmn.cpp:887 -msgid "Memory color emphasis" -msgstr "" - -#: src/olympusmn.cpp:815 src/olympusmn.cpp:884 -#, fuzzy -msgid "Contrast Value" -msgstr "Kontrasti" - -#: src/olympusmn.cpp:815 src/olympusmn.cpp:884 -#, fuzzy -msgid "Contrast value" -msgstr "Kontrasti" - -#: src/olympusmn.cpp:816 src/olympusmn.cpp:885 -#, fuzzy -msgid "Sharpness Value" -msgstr "Terävyys" - -#: src/olympusmn.cpp:816 src/olympusmn.cpp:885 -#, fuzzy -msgid "Sharpness value" -msgstr "Terävyys" - -#: src/olympusmn.cpp:818 src/olympusmn.cpp:890 -msgid "Engine" -msgstr "" - -#: src/olympusmn.cpp:820 -msgid "Edit status" -msgstr "" - -#: src/olympusmn.cpp:821 -msgid "Settings" -msgstr "Asetukset" - -#: src/olympusmn.cpp:823 -msgid "Unknown OlympusRd tag" -msgstr "" - -#: src/olympusmn.cpp:878 -msgid "Raw Development 2 Version" -msgstr "" - -#: src/olympusmn.cpp:878 -msgid "Raw development 2 version" -msgstr "" - -#: src/olympusmn.cpp:882 -#, fuzzy -msgid "White balance fine adjustment" -msgstr " " - -#: src/olympusmn.cpp:892 -#, fuzzy -msgid "PM Saturation" -msgstr "Värikylläisyys" - -#: src/olympusmn.cpp:893 -#, fuzzy -msgid "PM Contrast" -msgstr "Kontrasti" - -#: src/olympusmn.cpp:894 -#, fuzzy -msgid "PM Sharpness" -msgstr "Terävyys" - -#: src/olympusmn.cpp:895 -msgid "PM BW Filter" -msgstr "" - -#: src/olympusmn.cpp:895 -msgid "PM BW filter" -msgstr "" - -#: src/olympusmn.cpp:896 -#, fuzzy -msgid "PM Picture Tone" -msgstr "Kuvan tiedot" - -#: src/olympusmn.cpp:896 -#, fuzzy -msgid "PM picture tone" -msgstr "Kuvan tiedot" - -#: src/olympusmn.cpp:899 -msgid "Auto Gradation" -msgstr "" - -#: src/olympusmn.cpp:899 -msgid "Auto gradation" -msgstr "" - -#: src/olympusmn.cpp:900 -msgid "PM Noise Filter" -msgstr "" - -#: src/olympusmn.cpp:900 -msgid "Picture mode noise filter" -msgstr "" - -#: src/olympusmn.cpp:902 -msgid "Unknown OlympusRd2 tag" -msgstr "" - -#: src/olympusmn.cpp:913 -#, fuzzy -msgid "On (2 frames)" -msgstr "Päällä" - -#: src/olympusmn.cpp:914 -#, fuzzy -msgid "On (3 frames)" -msgstr "Päällä" - -#: src/olympusmn.cpp:919 -msgid "4:3" -msgstr "" - -#: src/olympusmn.cpp:920 -msgid "3:2" -msgstr "" - -#: src/olympusmn.cpp:921 -msgid "16:9" -msgstr "" - -#: src/olympusmn.cpp:922 -msgid "6:6" -msgstr "" - -#: src/olympusmn.cpp:923 -msgid "5:4" -msgstr "" - -#: src/olympusmn.cpp:924 -msgid "7:6" -msgstr "" - -#: src/olympusmn.cpp:925 -msgid "6:5" -msgstr "" - -#: src/olympusmn.cpp:926 -msgid "7:5" -msgstr "" - -#: src/olympusmn.cpp:927 -msgid "3:4" -msgstr "" - -#: src/olympusmn.cpp:931 -#, fuzzy -msgid "Image Processing Version" -msgstr "Ohjelman versio" - -#: src/olympusmn.cpp:931 -#, fuzzy -msgid "Image processing version" -msgstr "Firmwaren versio" - -#: src/olympusmn.cpp:933 -msgid "WB RB Levels 3000K" -msgstr "" - -#: src/olympusmn.cpp:933 -msgid "WB RB levels 3000K" -msgstr "" - -#: src/olympusmn.cpp:934 -msgid "WB RB Levels 3300K" -msgstr "" - -#: src/olympusmn.cpp:934 -msgid "WB RB levels 3300K" -msgstr "" - -#: src/olympusmn.cpp:935 -msgid "WB RB Levels 3600K" -msgstr "" - -#: src/olympusmn.cpp:935 -msgid "WB RB levels 3600K" -msgstr "" - -#: src/olympusmn.cpp:936 -msgid "WB RB Levels 3900K" -msgstr "" - -#: src/olympusmn.cpp:936 -msgid "WB RB levels 3900K" -msgstr "" - -#: src/olympusmn.cpp:937 -msgid "WB RB Levels 4000K" -msgstr "" - -#: src/olympusmn.cpp:937 -msgid "WB RB levels 4000K" -msgstr "" - -#: src/olympusmn.cpp:938 -msgid "WB RB Levels 4300K" -msgstr "" - -#: src/olympusmn.cpp:938 -msgid "WB RB levels 4300K" -msgstr "" - -#: src/olympusmn.cpp:939 -msgid "WB RB Levels 4500K" -msgstr "" - -#: src/olympusmn.cpp:939 -msgid "WB RB levels 4500K" -msgstr "" - -#: src/olympusmn.cpp:940 -msgid "WB RB Levels 4800K" -msgstr "" - -#: src/olympusmn.cpp:940 -msgid "WB RB levels 4800K" -msgstr "" - -#: src/olympusmn.cpp:941 -msgid "WB RB Levels 5300K" -msgstr "" - -#: src/olympusmn.cpp:941 -msgid "WB RB levels 5300K" -msgstr "" - -#: src/olympusmn.cpp:942 -msgid "WB RB Levels 6000K" -msgstr "" - -#: src/olympusmn.cpp:942 -msgid "WB RB levels 6000K" -msgstr "" - -#: src/olympusmn.cpp:943 -msgid "WB RB Levels 6600K" -msgstr "" - -#: src/olympusmn.cpp:943 -msgid "WB RB levels 6600K" -msgstr "" - -#: src/olympusmn.cpp:944 -msgid "WB RB Levels 7500K" -msgstr "" - -#: src/olympusmn.cpp:944 -msgid "WB RB levels 7500K" -msgstr "" - -#: src/olympusmn.cpp:945 -msgid "WB RB Levels CWB1" -msgstr "" - -#: src/olympusmn.cpp:945 -msgid "WB RB levels CWB1" -msgstr "" - -#: src/olympusmn.cpp:946 -msgid "WB RB Levels CWB2" -msgstr "" - -#: src/olympusmn.cpp:946 -msgid "WB RB levels CWB2" -msgstr "" - -#: src/olympusmn.cpp:947 -msgid "WB RB Levels CWB3" -msgstr "" - -#: src/olympusmn.cpp:947 -msgid "WB RB levels CWB3" -msgstr "" - -#: src/olympusmn.cpp:948 -msgid "WB RB Levels CWB4" -msgstr "" - -#: src/olympusmn.cpp:948 -msgid "WB RB levels CWB4" -msgstr "" - -#: src/olympusmn.cpp:949 -msgid "WB G Level 3000K" -msgstr "" - -#: src/olympusmn.cpp:949 -msgid "WB G level 3000K" -msgstr "" - -#: src/olympusmn.cpp:950 -msgid "WB G Level 3300K" -msgstr "" - -#: src/olympusmn.cpp:950 -msgid "WB G level 3300K" -msgstr "" - -#: src/olympusmn.cpp:951 -msgid "WB G Level 3600K" -msgstr "" - -#: src/olympusmn.cpp:951 -msgid "WB G level 3600K" -msgstr "" - -#: src/olympusmn.cpp:952 -msgid "WB G Level 3900K" -msgstr "" - -#: src/olympusmn.cpp:952 -msgid "WB G level 3900K" -msgstr "" - -#: src/olympusmn.cpp:953 -msgid "WB G Level 4000K" -msgstr "" - -#: src/olympusmn.cpp:953 -msgid "WB G level 4000K" -msgstr "" - -#: src/olympusmn.cpp:954 -msgid "WB G Level 4300K" -msgstr "" - -#: src/olympusmn.cpp:954 -msgid "WB G level 4300K" -msgstr "" - -#: src/olympusmn.cpp:955 -msgid "WB G Level 4500K" -msgstr "" - -#: src/olympusmn.cpp:955 -msgid "WB G level 4500K" -msgstr "" - -#: src/olympusmn.cpp:956 -msgid "WB G Level 4800K" -msgstr "" - -#: src/olympusmn.cpp:956 -msgid "WB G level 4800K" -msgstr "" - -#: src/olympusmn.cpp:957 -msgid "WB G Level 5300K" -msgstr "" - -#: src/olympusmn.cpp:957 -msgid "WB G level 5300K" -msgstr "" - -#: src/olympusmn.cpp:958 -msgid "WB G Level 6000K" -msgstr "" - -#: src/olympusmn.cpp:958 -msgid "WB G level 6000K" -msgstr "" - -#: src/olympusmn.cpp:959 -msgid "WB G Level 6600K" -msgstr "" - -#: src/olympusmn.cpp:959 -msgid "WB G level 6600K" -msgstr "" - -#: src/olympusmn.cpp:960 -msgid "WB G Level 7500K" -msgstr "" - -#: src/olympusmn.cpp:960 -msgid "WB G level 7500K" -msgstr "" - -#: src/olympusmn.cpp:961 -msgid "WB G Level" -msgstr "" - -#: src/olympusmn.cpp:961 -msgid "WB G level" -msgstr "" - -#: src/olympusmn.cpp:963 -msgid "Enhancer" -msgstr "" - -#: src/olympusmn.cpp:964 -msgid "Enhancer Values" -msgstr "" - -#: src/olympusmn.cpp:964 -msgid "Enhancer values" -msgstr "" - -#: src/olympusmn.cpp:965 src/olympusmn.cpp:1067 -msgid "Coring Filter" -msgstr "" - -#: src/olympusmn.cpp:966 src/olympusmn.cpp:1068 -#, fuzzy -msgid "Coring Values" -msgstr "Omistusoikeus" - -#: src/olympusmn.cpp:966 src/olympusmn.cpp:1068 -#, fuzzy -msgid "Coring values" -msgstr "Omistusoikeus" - -#: src/olympusmn.cpp:967 src/tags.cpp:908 -#, fuzzy -msgid "Black Level" -msgstr "Salaman malli" - -#: src/olympusmn.cpp:968 -msgid "Gain Base" -msgstr "" - -#: src/olympusmn.cpp:968 -msgid "Gain base" -msgstr "" - -#: src/olympusmn.cpp:969 -msgid "Valid Bits" -msgstr "" - -#: src/olympusmn.cpp:970 src/olympusmn.cpp:1072 src/properties.cpp:445 -#, fuzzy -msgid "Crop Left" -msgstr "Polttoväli" - -#: src/olympusmn.cpp:970 src/olympusmn.cpp:1072 -msgid "Crop left" -msgstr "" - -#: src/olympusmn.cpp:971 src/olympusmn.cpp:1073 src/properties.cpp:444 -msgid "Crop Top" -msgstr "" - -#: src/olympusmn.cpp:971 src/olympusmn.cpp:1073 -msgid "Crop top" -msgstr "" - -#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 src/properties.cpp:449 -msgid "Crop Width" -msgstr "" - -#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 -msgid "Crop width" -msgstr "" - -#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 src/properties.cpp:450 -#, fuzzy -msgid "Crop Height" -msgstr "Omistusoikeus" - -#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 -#, fuzzy -msgid "Crop height" -msgstr "Omistusoikeus" - -#: src/olympusmn.cpp:977 -#, fuzzy -msgid "Multiple Exposure Mode" -msgstr "Valotustila" - -#: src/olympusmn.cpp:977 -#, fuzzy -msgid "Multiple exposure mode" -msgstr "Valotustila" - -#: src/olympusmn.cpp:978 src/sonymn.cpp:644 src/sonymn.cpp:645 -msgid "Aspect Ratio" -msgstr "" - -#: src/olympusmn.cpp:978 -msgid "Aspect ratio" -msgstr "" - -#: src/olympusmn.cpp:979 -#, fuzzy -msgid "Aspect Frame" -msgstr "Omistajan nimi" - -#: src/olympusmn.cpp:979 -#, fuzzy -msgid "Aspect frame" -msgstr "Omistajan nimi" - -#: src/olympusmn.cpp:980 -msgid "Face Detect" -msgstr "" - -#: src/olympusmn.cpp:980 src/olympusmn.cpp:1373 src/olympusmn.cpp:1385 -msgid "Face detect" -msgstr "" - -#: src/olympusmn.cpp:981 -#, fuzzy -msgid "Face Detect Area" -msgstr "Lukuvirhe" - -#: src/olympusmn.cpp:981 -#, fuzzy -msgid "Face detect area" -msgstr "Lukuvirhe" - -#: src/olympusmn.cpp:983 -msgid "Unknown OlympusIp tag" -msgstr "" - -#: src/olympusmn.cpp:993 -msgid "Bounce or Off" -msgstr "" - -#: src/olympusmn.cpp:994 -msgid "Direct" -msgstr "" - -#: src/olympusmn.cpp:998 -msgid "Focus Info Version" -msgstr "" - -#: src/olympusmn.cpp:998 -msgid "Focus info version" -msgstr "" - -#: src/olympusmn.cpp:999 -#, fuzzy -msgid "Auto Focus" -msgstr "Automaattivalotus" - -#: src/olympusmn.cpp:1000 -msgid "Scene Detect" -msgstr "" - -#: src/olympusmn.cpp:1000 -msgid "Scene detect" -msgstr "" - -#: src/olympusmn.cpp:1001 -msgid "Scene Area" -msgstr "" - -#: src/olympusmn.cpp:1001 -#, fuzzy -msgid "Scene area" -msgstr "Omistajan nimi" - -#: src/olympusmn.cpp:1002 -msgid "Scene Detect Data" -msgstr "" - -#: src/olympusmn.cpp:1002 -msgid "Scene detect data" -msgstr "" - -#: src/olympusmn.cpp:1003 -#, fuzzy -msgid "Zoom Step Count" -msgstr "Valotusajan esivalinta (Tv)" - -#: src/olympusmn.cpp:1004 -msgid "Focus Step Count" -msgstr "" - -#: src/olympusmn.cpp:1004 -msgid "Focus step count" -msgstr "" - -#: src/olympusmn.cpp:1005 -msgid "Focus Step Infinity" -msgstr "" - -#: src/olympusmn.cpp:1005 -msgid "Focus step infinity" -msgstr "" - -#: src/olympusmn.cpp:1006 -msgid "Focus Step Near" -msgstr "" - -#: src/olympusmn.cpp:1006 -msgid "Focus step near" -msgstr "" - -#: src/olympusmn.cpp:1009 -#, fuzzy -msgid "External Flash" -msgstr "Ulkoinen salama" - -#: src/olympusmn.cpp:1010 -#, fuzzy -msgid "External Flash Guide Number" -msgstr "Ulkoinen salama" - -#: src/olympusmn.cpp:1010 -#, fuzzy -msgid "External flash guide number" -msgstr "Ulkoinen salama" - -#: src/olympusmn.cpp:1014 -#, fuzzy -msgid "Manual Flash" -msgstr "Manuaalinen" - -#: src/olympusmn.cpp:1014 -#, fuzzy -msgid "Manual flash" -msgstr "Käsintarkennus, MF" - -#: src/olympusmn.cpp:1018 -msgid "Unknown OlympusFi tag" -msgstr "" - -#: src/olympusmn.cpp:1029 -msgid "Unknown OlympusFe tag" -msgstr "" - -#: src/olympusmn.cpp:1042 -msgid "Fine Weather" -msgstr "" - -#: src/olympusmn.cpp:1043 -msgid "Tungsten (incandescent)" -msgstr "" - -#: src/olympusmn.cpp:1044 -msgid "Evening Sunlight" -msgstr "" - -#: src/olympusmn.cpp:1045 -msgid "Daylight Fluorescent (D 5700 - 7100K)" -msgstr "" - -#: src/olympusmn.cpp:1046 -msgid "Day White Fluorescent (N 4600 - 5400K)" -msgstr "" - -#: src/olympusmn.cpp:1047 -msgid "Cool White Fluorescent (W 3900 - 4500K)" -msgstr "" - -#: src/olympusmn.cpp:1048 -msgid "White Fluorescent (WW 3200 - 3700K)" -msgstr "" - -#: src/olympusmn.cpp:1049 -#, fuzzy -msgid "One Touch White Balance" -msgstr "Valkotasapaino" - -#: src/olympusmn.cpp:1050 -msgid "Custom 1-4" -msgstr "" - -#: src/olympusmn.cpp:1054 -msgid "Raw Info Version" -msgstr "" - -#: src/olympusmn.cpp:1054 -msgid "Raw info version" -msgstr "" - -#: src/olympusmn.cpp:1055 -msgid "WB_RB Levels Used" -msgstr "" - -#: src/olympusmn.cpp:1055 -msgid "WB_RB levels used" -msgstr "" - -#: src/olympusmn.cpp:1056 -msgid "WB_RB Levels Auto" -msgstr "" - -#: src/olympusmn.cpp:1056 -msgid "WB_RB levels auto" -msgstr "" - -#: src/olympusmn.cpp:1057 -msgid "WB_RB Levels Shade" -msgstr "" - -#: src/olympusmn.cpp:1057 -msgid "WB_RB levels shade" -msgstr "" - -#: src/olympusmn.cpp:1058 -msgid "WB_RB Levels Cloudy" -msgstr "" - -#: src/olympusmn.cpp:1058 -msgid "WB_RB levels cloudy" -msgstr "" - -#: src/olympusmn.cpp:1059 -msgid "WB_RB Levels Fine Weather" -msgstr "" - -#: src/olympusmn.cpp:1059 -msgid "WB_RB levels fine weather" -msgstr "" - -#: src/olympusmn.cpp:1060 -msgid "WB_RB Levels Tungsten" -msgstr "" - -#: src/olympusmn.cpp:1060 -msgid "WB_RB levels tungsten" -msgstr "" - -#: src/olympusmn.cpp:1061 -msgid "WB_RB Levels Evening Sunlight" -msgstr "" - -#: src/olympusmn.cpp:1061 -msgid "WB_RB levels evening sunlight" -msgstr "" - -#: src/olympusmn.cpp:1062 -msgid "WB_RB Levels Daylight Fluor" -msgstr "" - -#: src/olympusmn.cpp:1062 -msgid "WB_RB levels daylight fluor" -msgstr "" - -#: src/olympusmn.cpp:1063 -msgid "WB_RB Levels Day White Fluor" -msgstr "" - -#: src/olympusmn.cpp:1063 -msgid "WB_RB levels day white fluor" -msgstr "" - -#: src/olympusmn.cpp:1064 -msgid "WB_RB Levels Cool White Fluor" -msgstr "" - -#: src/olympusmn.cpp:1064 -msgid "WB_RB levels cool white fluor" -msgstr "" - -#: src/olympusmn.cpp:1065 -msgid "WB_RB Levels White Fluorescent" -msgstr "" - -#: src/olympusmn.cpp:1065 -msgid "WB_RB levels white fluorescent" -msgstr "" - -#: src/olympusmn.cpp:1066 -msgid "Color Matrix2" -msgstr "" - -#: src/olympusmn.cpp:1066 -msgid "Color matrix 2" -msgstr "" - -#: src/olympusmn.cpp:1069 -#, fuzzy -msgid "Black Level 2" -msgstr "Salaman malli" - -#: src/olympusmn.cpp:1069 -#, fuzzy -msgid "Black level 2" -msgstr "Salaman malli" - -#: src/olympusmn.cpp:1070 src/properties.cpp:508 src/tags.cpp:699 -msgid "YCbCr Coefficients" -msgstr "" - -#: src/olympusmn.cpp:1070 -msgid "YCbCr coefficients" -msgstr "" - -#: src/olympusmn.cpp:1071 -msgid "Valid Pixel Depth" -msgstr "" - -#: src/olympusmn.cpp:1071 -msgid "Valid pixel depth" -msgstr "" - -#: src/olympusmn.cpp:1077 -#, fuzzy -msgid "White Balance Comp" -msgstr "Valkotasapaino" - -#: src/olympusmn.cpp:1077 -#, fuzzy -msgid "White balance comp" -msgstr "Valkotasapaino" - -#: src/olympusmn.cpp:1078 -#, fuzzy -msgid "Saturation Setting" -msgstr "Värikylläisyys" - -#: src/olympusmn.cpp:1079 -#, fuzzy -msgid "Hue Setting" -msgstr "Asetukset" - -#: src/olympusmn.cpp:1079 -#, fuzzy -msgid "Hue setting" -msgstr "Asetukset" - -#: src/olympusmn.cpp:1082 -msgid "CM Exposure Compensation" -msgstr "" - -#: src/olympusmn.cpp:1082 -msgid "CM exposure compensation" -msgstr "" - -#: src/olympusmn.cpp:1083 -#, fuzzy -msgid "CM White Balance" -msgstr "Valkotasapaino" - -#: src/olympusmn.cpp:1083 -#, fuzzy -msgid "CM white balance" -msgstr "Valkotasapaino" - -#: src/olympusmn.cpp:1084 -#, fuzzy -msgid "CM White Balance Comp" -msgstr "Valkotasapaino" - -#: src/olympusmn.cpp:1084 -#, fuzzy -msgid "CM white balance comp" -msgstr "Valkotasapaino" - -#: src/olympusmn.cpp:1085 -#, fuzzy -msgid "CM White Balance Gray Point" -msgstr "Valkotasapaino" - -#: src/olympusmn.cpp:1085 -#, fuzzy -msgid "CM white balance gray point" -msgstr "Valkotasapaino" - -#: src/olympusmn.cpp:1086 -#, fuzzy -msgid "CM Saturation" -msgstr "Värikylläisyys" - -#: src/olympusmn.cpp:1086 -#, fuzzy -msgid "CM saturation" -msgstr "Värikylläisyys" - -#: src/olympusmn.cpp:1087 -#, fuzzy -msgid "CM Hue" -msgstr "Väriavaruus" - -#: src/olympusmn.cpp:1087 -#, fuzzy -msgid "CM hue" -msgstr "Väriavaruus" - -#: src/olympusmn.cpp:1088 -#, fuzzy -msgid "CM Contrast" -msgstr "Kontrasti" - -#: src/olympusmn.cpp:1088 -#, fuzzy -msgid "CM contrast" -msgstr "Kontrasti" - -#: src/olympusmn.cpp:1089 -#, fuzzy -msgid "CM Sharpness" -msgstr "Terävyys" - -#: src/olympusmn.cpp:1089 -#, fuzzy -msgid "CM sharpness" -msgstr "Terävyys" - -#: src/olympusmn.cpp:1091 -msgid "Unknown OlympusRi tag" -msgstr "" - -#: src/olympusmn.cpp:1114 src/pentaxmn.cpp:336 -msgid "User-Selected" -msgstr "" - -#: src/olympusmn.cpp:1115 -msgid "Auto-Override" -msgstr "" - -#: src/olympusmn.cpp:1151 -msgid "Fast" -msgstr "" - -#: src/olympusmn.cpp:1208 -msgid "3000 Kelvin" -msgstr "" - -#: src/olympusmn.cpp:1209 -msgid "3700 Kelvin" -msgstr "" - -#: src/olympusmn.cpp:1210 -msgid "4000 Kelvin" -msgstr "" - -#: src/olympusmn.cpp:1211 -msgid "4500 Kelvin" -msgstr "" - -#: src/olympusmn.cpp:1212 -msgid "5500 Kelvin" -msgstr "" - -#: src/olympusmn.cpp:1213 -msgid "6500 Kelvin" -msgstr "" - -#: src/olympusmn.cpp:1214 -msgid "7500 Kelvin" -msgstr "" - -#: src/olympusmn.cpp:1220 -msgid "One-touch" -msgstr "" - -#: src/olympusmn.cpp:1241 -msgid "Olympus Zuiko Digital ED 50mm F2.0 Macro" -msgstr "" - -#: src/olympusmn.cpp:1242 -msgid "Olympus Zuiko Digital 40-150mm F3.5-4.5" -msgstr "" - -#: src/olympusmn.cpp:1243 src/olympusmn.cpp:1259 -msgid "Olympus Zuiko Digital ED 14-42mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1244 -msgid "Olympus Zuiko Digital ED 150mm F2.0" -msgstr "" - -#: src/olympusmn.cpp:1245 -msgid "Olympus Zuiko Digital 17mm F2.8 Pancake" -msgstr "" - -#: src/olympusmn.cpp:1246 -msgid "Olympus Zuiko Digital ED 300mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1247 -msgid "Olympus Zuiko Digital 14-54mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1248 -msgid "Olympus Zuiko Digital Pro ED 90-250mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1249 -msgid "Olympus Zuiko Digital ED 50-200mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1250 -msgid "Olympus Zuiko Digital ED 8mm F3.5 Fisheye" -msgstr "" - -#: src/olympusmn.cpp:1251 -msgid "Olympus Zuiko Digital 11-22mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1252 -msgid "Olympus Zuiko Digital 18-180mm F3.5-6.3" -msgstr "" - -#: src/olympusmn.cpp:1253 -msgid "Olympus Zuiko Digital 70-300mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1254 -msgid "Olympus Zuiko Digital ED 7-14mm F4.0" -msgstr "" - -#: src/olympusmn.cpp:1255 -msgid "Olympus Zuiko Digital Pro ED 35-100mm F2.0" -msgstr "" - -#: src/olympusmn.cpp:1256 -msgid "Olympus Zuiko Digital 14-45mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1257 -msgid "Olympus Zuiko Digital 35mm F3.5 Macro" -msgstr "" - -#: src/olympusmn.cpp:1258 -msgid "Olympus Zuiko Digital 17.5-45mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1260 -msgid "Olympus Zuiko Digital ED 40-150mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1261 -msgid "Olympus Zuiko Digital ED 50-200mm F2.8-3.5 SWD" -msgstr "" - -#: src/olympusmn.cpp:1262 -msgid "Olympus Zuiko Digital ED 12-60mm F2.8-4.0 SWD" -msgstr "" - -#: src/olympusmn.cpp:1263 -msgid "Olympus Zuiko Digital ED 14-35mm F2.0 SWD" -msgstr "" - -#: src/olympusmn.cpp:1264 -msgid "Olympus Zuiko Digital 25mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1265 -msgid "Olympus Zuiko Digital ED 9-18mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1266 -msgid "Olympus Zuiko Digital 14-54mm F2.8-3.5 II" -msgstr "" - -#: src/olympusmn.cpp:1267 -msgid "Sigma 18-50mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1268 -msgid "Sigma 55-200mm F4.0-5.6 DC" -msgstr "" - -#: src/olympusmn.cpp:1269 -msgid "Sigma 18-125mm F3.5-5.6 DC" -msgstr "" - -#: src/olympusmn.cpp:1270 -msgid "Sigma 18-125mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1271 -msgid "Sigma 30mm F1.4" -msgstr "" - -#: src/olympusmn.cpp:1272 src/olympusmn.cpp:1278 -msgid "Sigma 50-500mm F4.0-6.3 EX DG APO HSM RF" -msgstr "" - -#: src/olympusmn.cpp:1273 -msgid "Sigma 105mm F2.8 DG" -msgstr "" - -#: src/olympusmn.cpp:1274 -msgid "Sigma 150mm F2.8 DG HSM" -msgstr "" - -#: src/olympusmn.cpp:1275 -msgid "Sigma 24mm F1.8 EX DG Aspherical Macro" -msgstr "" - -#: src/olympusmn.cpp:1276 -msgid "Sigma 135-400mm F4.5-5.6 DG ASP APO RF" -msgstr "" - -#: src/olympusmn.cpp:1277 -msgid "Sigma 300-800mm F5.6 EX DG APO" -msgstr "" - -#: src/olympusmn.cpp:1279 -msgid "Sigma 10-20mm F4.0-5.6 EX DC HSM" -msgstr "" - -#: src/olympusmn.cpp:1280 src/olympusmn.cpp:1289 -msgid "Leica D Vario Elmarit 14-50mm F2.8-3.5 Asph." -msgstr "" - -#: src/olympusmn.cpp:1281 -msgid "Lumix G Vario 14-45mm F3.5-5.6 Asph. Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1282 src/olympusmn.cpp:1290 -msgid "Leica D Summilux 25mm F1.4 Asph." -msgstr "" - -#: src/olympusmn.cpp:1283 -msgid "Lumix G Vario 45-200mm F4-5.6 Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1284 -msgid "Leica D Vario Elmar 14-50mm F3.8-5.6 Asph." -msgstr "" - -#: src/olympusmn.cpp:1285 -msgid "Lumix G Vario HD 14-140mm F4-5.8 Asph. Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1286 -msgid "Leica D Vario Elmar 14-150mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1287 -msgid "Lumix G Vario 7-14mm F4 Asph." -msgstr "" - -#: src/olympusmn.cpp:1288 -msgid "Lumix G 20mm F1.7 Asph." -msgstr "" - -#: src/olympusmn.cpp:1338 -msgid "Olympus Zuiko Digital EC-14 1.4x Teleconverter" -msgstr "" - -#: src/olympusmn.cpp:1339 -msgid "Olympus EX-25 Extension Tube" -msgstr "" - -#: src/olympusmn.cpp:1340 -msgid "Olympus Zuiko Digital EC-20 2.0x Teleconverter" -msgstr "" - -#: src/olympusmn.cpp:1382 -msgid "S-AF" -msgstr "" - -#: src/olympusmn.cpp:1383 -msgid "C-AF" -msgstr "" - -#: src/olympusmn.cpp:1386 -#, fuzzy -msgid "Imager AF" -msgstr "Kuvan koko" - -#: src/olympusmn.cpp:1387 -msgid "AF sensor" -msgstr "" - -#: src/olympusmn.cpp:1433 -#, fuzzy -msgid "Soft Focus" -msgstr "Käytetty AF-piste" - -#: src/olympusmn.cpp:1434 -msgid "Pop Art" -msgstr "" - -#: src/olympusmn.cpp:1435 -msgid "Pale & Light Color" -msgstr "" - -#: src/olympusmn.cpp:1436 -#, fuzzy -msgid "Light Tone" -msgstr "Kuvalähde" - -#: src/olympusmn.cpp:1437 -msgid "Pin Hole" -msgstr "" - -#: src/olympusmn.cpp:1438 -msgid "Grainy Film" -msgstr "" - -#: src/olympusmn.cpp:1439 -#, fuzzy -msgid "Diorama" -msgstr "Panoraama" - -#: src/olympusmn.cpp:1440 -#, fuzzy -msgid "Cross Process" -msgstr "Tarkennustapa" - -#: src/olympusmn.cpp:1441 -#, fuzzy -msgid "Fish Eye" -msgstr "Salaman tila" - -#: src/olympusmn.cpp:1442 -msgid "Drawing" -msgstr "" - -#: src/olympusmn.cpp:1489 -msgid "Left (or n/a)" -msgstr "" - -#: src/olympusmn.cpp:1490 src/olympusmn.cpp:1508 -msgid "Center (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1492 src/olympusmn.cpp:1519 -msgid "Center (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1503 -msgid "Top-left (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1504 -msgid "Top-center (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1505 -msgid "Top-right (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1506 -msgid "Left (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1507 -msgid "Mid-left (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1509 -msgid "Mid-right (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1510 -msgid "Right (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1511 -msgid "Bottom-left (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1512 -msgid "Bottom-center (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1513 -msgid "Bottom-right (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1514 -msgid "Top-left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1515 -msgid "Top-center (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1516 -#, fuzzy -msgid "Top-right (vertical)" -msgstr "Omistusoikeus" - -#: src/olympusmn.cpp:1517 -msgid "Left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1518 -msgid "Mid-left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1520 -msgid "Mid-right (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1521 -msgid "Right (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1522 -msgid "Bottom-left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1523 -msgid "Bottom-center (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1524 -msgid "Bottom-right (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1561 -#, fuzzy -msgid "Single Target" -msgstr "Tiedostonimi" - -#: src/olympusmn.cpp:1562 -msgid "All Target" -msgstr "" - -#: src/olympusmn.cpp:1563 -#, fuzzy -msgid "Dynamic Single Target" -msgstr "Kameran asetukset" - -#: src/panasonicmn.cpp:57 src/pentaxmn.cpp:348 src/pentaxmn.cpp:361 -msgid "Very High" -msgstr "" - -#: src/panasonicmn.cpp:59 -msgid "Motion Picture" -msgstr "" - -#: src/panasonicmn.cpp:67 -msgid "Halogen" -msgstr "" - -#: src/panasonicmn.cpp:79 -msgid "Auto, focus button" -msgstr "" - -#: src/panasonicmn.cpp:80 src/panasonicmn.cpp:81 -msgid "Auto, continuous" -msgstr "" - -#: src/panasonicmn.cpp:95 -msgid "Tele-macro" -msgstr "" - -#: src/panasonicmn.cpp:103 -msgid "Scenery" -msgstr "" - -#: src/panasonicmn.cpp:108 -#, fuzzy -msgid "Shutter-speed priority" -msgstr "Valotusajan esivalinta (Tv)" - -#: src/panasonicmn.cpp:112 -#, fuzzy -msgid "Movie preview" -msgstr "Esikatselu" - -#: src/panasonicmn.cpp:113 -#, fuzzy -msgid "Panning" -msgstr "Varoitus" - -#: src/panasonicmn.cpp:114 -msgid "Simple" -msgstr "" - -#: src/panasonicmn.cpp:115 -#, fuzzy -msgid "Color effects" -msgstr "Väriavaruus" - -#: src/panasonicmn.cpp:119 -msgid "Night scenery" -msgstr "" - -#: src/panasonicmn.cpp:121 -msgid "Baby" -msgstr "" - -#: src/panasonicmn.cpp:122 -msgid "Soft skin" -msgstr "" - -#: src/panasonicmn.cpp:123 src/pentaxmn.cpp:484 -msgid "Candlelight" -msgstr "" - -#: src/panasonicmn.cpp:124 -msgid "Starry night" -msgstr "" - -#: src/panasonicmn.cpp:125 -msgid "High sensitivity" -msgstr "" - -#: src/panasonicmn.cpp:126 -#, fuzzy -msgid "Panorama assist" -msgstr "Panoraama" - -#: src/panasonicmn.cpp:129 -msgid "Aerial photo" -msgstr "" - -#: src/panasonicmn.cpp:132 -msgid "Intelligent ISO" -msgstr "" - -#: src/panasonicmn.cpp:133 -msgid "High speed continuous shooting" -msgstr "" - -#: src/panasonicmn.cpp:134 -msgid "Intelligent auto" -msgstr "" - -#: src/panasonicmn.cpp:146 -msgid "Warm" -msgstr "" - -#: src/panasonicmn.cpp:147 -msgid "Cool" -msgstr "" - -#: src/panasonicmn.cpp:155 -#, fuzzy -msgid "Low/High quality" -msgstr "Kuvan laatu" - -#: src/panasonicmn.cpp:156 -msgid "Infinite" -msgstr "" - -#: src/panasonicmn.cpp:164 -#, fuzzy -msgid "Medium low" -msgstr "Keskikokoinen" - -#: src/panasonicmn.cpp:165 -#, fuzzy -msgid "Medium high" -msgstr "Keskikokoinen" - -#: src/panasonicmn.cpp:175 -msgid "Low (-1)" -msgstr "" - -#: src/panasonicmn.cpp:176 -msgid "High (+1)" -msgstr "" - -#: src/panasonicmn.cpp:177 -msgid "Lowest (-2)" -msgstr "" - -#: src/panasonicmn.cpp:178 -msgid "Highest (+2)" -msgstr "" - -#: src/panasonicmn.cpp:184 -msgid "10s" -msgstr "" - -#: src/panasonicmn.cpp:185 -msgid "2s" -msgstr "" - -#: src/panasonicmn.cpp:205 -msgid "EX optics" -msgstr "" - -#: src/panasonicmn.cpp:212 -msgid "Telephoto" -msgstr "" - -#: src/panasonicmn.cpp:219 src/properties.cpp:890 -msgid "Home" -msgstr "" - -#: src/panasonicmn.cpp:225 -msgid "Standard (color)" -msgstr "" - -#: src/panasonicmn.cpp:226 -msgid "Dynamic (color)" -msgstr "" - -#: src/panasonicmn.cpp:227 -msgid "Nature (color)" -msgstr "" - -#: src/panasonicmn.cpp:228 -msgid "Smooth (color)" -msgstr "" - -#: src/panasonicmn.cpp:229 -msgid "Standard (B&W)" -msgstr "" - -#: src/panasonicmn.cpp:230 -msgid "Dynamic (B&W)" -msgstr "" - -#: src/panasonicmn.cpp:231 -msgid "Smooth (B&W)" -msgstr "" - -#: src/panasonicmn.cpp:245 -msgid "Audio" -msgstr "" - -#: src/panasonicmn.cpp:248 -#, fuzzy -msgid "White balance adjustment" -msgstr " " - -#: src/panasonicmn.cpp:249 -#, fuzzy -msgid "FlashBias" -msgstr "Salamavalotuksen korjaus" - -#: src/panasonicmn.cpp:251 src/tags.cpp:190 -#, fuzzy -msgid "Exif version" -msgstr "Firmwaren versio" - -#: src/panasonicmn.cpp:253 -#, fuzzy -msgid "Color Effect" -msgstr "Väriavaruus" - -#: src/panasonicmn.cpp:253 -#, fuzzy -msgid "Color effect" -msgstr "Väriavaruus" - -#: src/panasonicmn.cpp:254 -msgid "" -"Time in 1/100 s from when the camera was powered on to when the image is " -"written to memory card" -msgstr "" - -#: src/panasonicmn.cpp:255 -#, fuzzy -msgid "Burst Mode" -msgstr "Makrotila" - -#: src/panasonicmn.cpp:255 -#, fuzzy -msgid "Burst mode" -msgstr "Makrotila" - -#: src/panasonicmn.cpp:258 -msgid "NoiseReduction" -msgstr "" - -#: src/panasonicmn.cpp:259 -#, fuzzy -msgid "Self Timer" -msgstr "Sarjanumero" - -#: src/panasonicmn.cpp:264 src/panasonicmn.cpp:286 -msgid "Baby Age" -msgstr "" - -#: src/panasonicmn.cpp:264 src/panasonicmn.cpp:286 -msgid "Baby (or pet) age" -msgstr "" - -#: src/panasonicmn.cpp:265 -msgid "Optical Zoom Mode" -msgstr "" - -#: src/panasonicmn.cpp:265 -msgid "Optical zoom mode" -msgstr "" - -#: src/panasonicmn.cpp:266 -msgid "Conversion Lens" -msgstr "" - -#: src/panasonicmn.cpp:266 -msgid "Conversion lens" -msgstr "" - -#: src/panasonicmn.cpp:267 -msgid "Travel Day" -msgstr "" - -#: src/panasonicmn.cpp:267 -msgid "Travel day" -msgstr "" - -#: src/panasonicmn.cpp:269 -msgid "World Time Location" -msgstr "" - -#: src/panasonicmn.cpp:269 -msgid "World time location" -msgstr "" - -#: src/panasonicmn.cpp:270 -#, fuzzy -msgid "Program ISO" -msgstr "Ohjelma" - -#: src/panasonicmn.cpp:274 -msgid "WB Adjust AB" -msgstr "" - -#: src/panasonicmn.cpp:274 -msgid "WB adjust AB. Positive is a shift toward blue." -msgstr "" - -#: src/panasonicmn.cpp:275 -msgid "WB Adjust GM" -msgstr "" - -#: src/panasonicmn.cpp:275 -msgid "WBAdjustGM. Positive is a shift toward green." -msgstr "" - -#: src/panasonicmn.cpp:278 -#, fuzzy -msgid "Accessory Type" -msgstr "Linssin tyyppi" - -#: src/panasonicmn.cpp:278 -#, fuzzy -msgid "Accessory type" -msgstr "Linssin tyyppi" - -#: src/panasonicmn.cpp:281 -#, fuzzy -msgid "MakerNote Version" -msgstr "Firmwaren versio" - -#: src/panasonicmn.cpp:281 -#, fuzzy -msgid "MakerNote version" -msgstr "Firmwaren versio" - -#: src/panasonicmn.cpp:283 src/panasonicmn.cpp:345 -msgid "WB Red Level" -msgstr "" - -#: src/panasonicmn.cpp:283 src/panasonicmn.cpp:345 -msgid "WB red level" -msgstr "" - -#: src/panasonicmn.cpp:284 src/panasonicmn.cpp:346 -msgid "WB Green Level" -msgstr "" - -#: src/panasonicmn.cpp:284 src/panasonicmn.cpp:346 -msgid "WB green level" -msgstr "" - -#: src/panasonicmn.cpp:285 src/panasonicmn.cpp:347 -msgid "WB Blue Level" -msgstr "" - -#: src/panasonicmn.cpp:285 src/panasonicmn.cpp:347 -msgid "WB blue level" -msgstr "" - -#: src/panasonicmn.cpp:288 -msgid "Unknown PanasonicMakerNote tag" -msgstr "" - -#: src/panasonicmn.cpp:305 -msgid "Spot mode on" -msgstr "" - -#: src/panasonicmn.cpp:306 -msgid "Spot mode off or 3-area (high speed)" -msgstr "" - -#: src/panasonicmn.cpp:307 -msgid "Spot focussing" -msgstr "" - -#: src/panasonicmn.cpp:308 -msgid "5-area" -msgstr "" - -#: src/panasonicmn.cpp:309 -msgid "1-area" -msgstr "" - -#: src/panasonicmn.cpp:310 -msgid "1-area (high speed)" -msgstr "" - -#: src/panasonicmn.cpp:311 -msgid "3-area (auto)" -msgstr "" - -#: src/panasonicmn.cpp:312 -msgid "3-area (left)" -msgstr "" - -#: src/panasonicmn.cpp:313 -msgid "3-area (center)" -msgstr "" - -#: src/panasonicmn.cpp:314 -msgid "3-area (right)" -msgstr "" - -#: src/panasonicmn.cpp:326 -msgid " EV" -msgstr "" - -#: src/panasonicmn.cpp:335 -#, fuzzy -msgid "Panasonic raw version" -msgstr "Ohjelman versio" - -#: src/panasonicmn.cpp:336 -#, fuzzy -msgid "Sensor Width" -msgstr "Linssin tyyppi" - -#: src/panasonicmn.cpp:336 -#, fuzzy -msgid "Sensor width" -msgstr "Linssin tyyppi" - -#: src/panasonicmn.cpp:337 -#, fuzzy -msgid "Sensor Height" -msgstr "Keskustaa painottava" - -#: src/panasonicmn.cpp:337 -#, fuzzy -msgid "Sensor height" -msgstr "Keskustaa painottava" - -#: src/panasonicmn.cpp:338 -msgid "Sensor Top Border" -msgstr "" - -#: src/panasonicmn.cpp:338 -msgid "Sensor top border" -msgstr "" - -#: src/panasonicmn.cpp:339 -msgid "Sensor Left Border" -msgstr "" - -#: src/panasonicmn.cpp:339 -msgid "Sensor left border" -msgstr "" - -#: src/panasonicmn.cpp:342 -msgid "Red balance (found in Digilux 2 RAW images)" -msgstr "" - -#: src/panasonicmn.cpp:349 src/tags.cpp:465 -msgid "Manufacturer" -msgstr "Valmistaja" - -#: src/panasonicmn.cpp:349 -msgid "The manufacturer of the recording equipment" -msgstr "" - -#: src/panasonicmn.cpp:350 src/properties.cpp:518 src/tags.cpp:471 -msgid "Model" -msgstr "Malli" - -#: src/panasonicmn.cpp:350 -msgid "The model name or model number of the equipment" -msgstr "" - -#: src/panasonicmn.cpp:351 src/tags.cpp:477 -msgid "Strip Offsets" -msgstr "" - -#: src/panasonicmn.cpp:351 -msgid "Strip offsets" -msgstr "" - -#: src/panasonicmn.cpp:352 src/properties.cpp:485 src/tags.cpp:484 -msgid "Orientation" -msgstr "" - -#: src/panasonicmn.cpp:353 -msgid "Rows Per Strip" -msgstr "" - -#: src/panasonicmn.cpp:353 -msgid "The number of rows per strip" -msgstr "" - -#: src/panasonicmn.cpp:354 -#, fuzzy -msgid "Strip Byte Counts" -msgstr "Valotusajan esivalinta (Tv)" - -#: src/panasonicmn.cpp:354 -#, fuzzy -msgid "Strip byte counts" -msgstr "Valotusajan esivalinta (Tv)" - -#: src/panasonicmn.cpp:355 -msgid "Raw Data Offset" -msgstr "" - -#: src/panasonicmn.cpp:355 -msgid "Raw data offset" -msgstr "" - -#: src/panasonicmn.cpp:356 src/tags.cpp:790 -msgid "Exif IFD Pointer" -msgstr "" - -#: src/panasonicmn.cpp:356 -msgid "A pointer to the Exif IFD" -msgstr "" - -#: src/panasonicmn.cpp:357 src/tags.cpp:801 -msgid "GPS Info IFD Pointer" -msgstr "" - -#: src/panasonicmn.cpp:357 -msgid "A pointer to the GPS Info IFD" -msgstr "" - -#: src/panasonicmn.cpp:359 -msgid "Unknown PanasonicRaw tag" -msgstr "" - -#: src/pentaxmn.cpp:57 -msgid "Night-Scene" -msgstr "" - -#: src/pentaxmn.cpp:63 -msgid "Optio 330/430" -msgstr "" - -#: src/pentaxmn.cpp:64 -msgid "Optio 230" -msgstr "" - -#: src/pentaxmn.cpp:65 -msgid "Optio 330GS" -msgstr "" - -#: src/pentaxmn.cpp:66 -msgid "Optio 450/550" -msgstr "" - -#: src/pentaxmn.cpp:67 -msgid "Optio S" -msgstr "" - -#: src/pentaxmn.cpp:68 -msgid "*ist D" -msgstr "" - -#: src/pentaxmn.cpp:69 -msgid "Optio 33L" -msgstr "" - -#: src/pentaxmn.cpp:70 -msgid "Optio 33LF" -msgstr "" - -#: src/pentaxmn.cpp:71 -msgid "Optio 33WR/43WR/555" -msgstr "" - -#: src/pentaxmn.cpp:72 -msgid "Optio S4" -msgstr "" - -#: src/pentaxmn.cpp:73 -msgid "Optio MX" -msgstr "" - -#: src/pentaxmn.cpp:74 -msgid "Optio S40" -msgstr "" - -#: src/pentaxmn.cpp:75 -msgid "Optio S4i" -msgstr "" - -#: src/pentaxmn.cpp:76 -msgid "Optio 30" -msgstr "" - -#: src/pentaxmn.cpp:77 -msgid "Optio S30" -msgstr "" - -#: src/pentaxmn.cpp:78 -msgid "Optio 750Z" -msgstr "" - -#: src/pentaxmn.cpp:79 -msgid "Optio SV" -msgstr "" - -#: src/pentaxmn.cpp:80 -msgid "Optio SVi" -msgstr "" - -#: src/pentaxmn.cpp:81 -msgid "Optio X" -msgstr "" - -#: src/pentaxmn.cpp:82 -msgid "Optio S5i" -msgstr "" - -#: src/pentaxmn.cpp:83 -msgid "Optio S50" -msgstr "" - -#: src/pentaxmn.cpp:84 -msgid "*ist DS" -msgstr "" - -#: src/pentaxmn.cpp:85 -msgid "Optio MX4" -msgstr "" - -#: src/pentaxmn.cpp:86 -msgid "Optio S5n" -msgstr "" - -#: src/pentaxmn.cpp:87 -msgid "Optio WP" -msgstr "" - -#: src/pentaxmn.cpp:88 -msgid "Optio S55" -msgstr "" - -#: src/pentaxmn.cpp:89 -msgid "Optio S5z" -msgstr "" - -#: src/pentaxmn.cpp:90 -msgid "*ist DL" -msgstr "" - -#: src/pentaxmn.cpp:91 -msgid "Optio S60" -msgstr "" - -#: src/pentaxmn.cpp:92 -msgid "Optio S45" -msgstr "" - -#: src/pentaxmn.cpp:93 -msgid "Optio S6" -msgstr "" - -#: src/pentaxmn.cpp:94 -msgid "Optio WPi" -msgstr "" - -#: src/pentaxmn.cpp:95 -msgid "BenQ DC X600" -msgstr "" - -#: src/pentaxmn.cpp:96 -msgid "*ist DS2" -msgstr "" - -#: src/pentaxmn.cpp:97 -msgid "Samsung GX-1S" -msgstr "" - -#: src/pentaxmn.cpp:98 -msgid "Optio A10" -msgstr "" - -#: src/pentaxmn.cpp:99 -msgid "*ist DL2" -msgstr "" - -#: src/pentaxmn.cpp:100 -msgid "Samsung GX-1L" -msgstr "" - -#: src/pentaxmn.cpp:101 -msgid "K100D" -msgstr "" - -#: src/pentaxmn.cpp:102 -msgid "K110D" -msgstr "" - -#: src/pentaxmn.cpp:103 -msgid "K100D Super" -msgstr "" - -#: src/pentaxmn.cpp:104 -msgid "Optio T10/T20" -msgstr "" - -#: src/pentaxmn.cpp:105 -msgid "Optio W10" -msgstr "" - -#: src/pentaxmn.cpp:106 -msgid "Optio M10" -msgstr "" - -#: src/pentaxmn.cpp:107 -msgid "K10D" -msgstr "" - -#: src/pentaxmn.cpp:108 -msgid "Samsung GX10" -msgstr "" - -#: src/pentaxmn.cpp:109 -msgid "Optio S7" -msgstr "" - -#: src/pentaxmn.cpp:110 -msgid "Optio L20" -msgstr "" - -#: src/pentaxmn.cpp:111 -msgid "Optio M20" -msgstr "" - -#: src/pentaxmn.cpp:112 -msgid "Optio W20" -msgstr "" - -#: src/pentaxmn.cpp:113 -msgid "Optio A20" -msgstr "" - -#: src/pentaxmn.cpp:114 -msgid "Optio M30" -msgstr "" - -#: src/pentaxmn.cpp:115 -msgid "Optio E30" -msgstr "" - -#: src/pentaxmn.cpp:116 -msgid "Optio E35" -msgstr "" - -#: src/pentaxmn.cpp:117 -msgid "Optio T30" -msgstr "" - -#: src/pentaxmn.cpp:118 -msgid "Optio W30" -msgstr "" - -#: src/pentaxmn.cpp:119 -msgid "Optio A30" -msgstr "" - -#: src/pentaxmn.cpp:120 -msgid "Optio E40" -msgstr "" - -#: src/pentaxmn.cpp:121 -msgid "Optio M40" -msgstr "" - -#: src/pentaxmn.cpp:122 -msgid "Optio Z10" -msgstr "" - -#: src/pentaxmn.cpp:123 -msgid "K20D" -msgstr "" - -#: src/pentaxmn.cpp:124 -msgid "Samsung GX20" -msgstr "" - -#: src/pentaxmn.cpp:125 -msgid "Optio S10" -msgstr "" - -#: src/pentaxmn.cpp:126 -msgid "Optio A40" -msgstr "" - -#: src/pentaxmn.cpp:127 -msgid "Optio V10" -msgstr "" - -#: src/pentaxmn.cpp:128 -msgid "K200D" -msgstr "" - -#: src/pentaxmn.cpp:129 -msgid "Optio S12" -msgstr "" - -#: src/pentaxmn.cpp:130 -msgid "Optio E50" -msgstr "" - -#: src/pentaxmn.cpp:131 -msgid "Optio M50" -msgstr "" - -#: src/pentaxmn.cpp:132 -msgid "Optio V20" -msgstr "" - -#: src/pentaxmn.cpp:133 -msgid "Optio W60" -msgstr "" - -#: src/pentaxmn.cpp:134 -msgid "Optio M60" -msgstr "" - -#: src/pentaxmn.cpp:135 -msgid "Optio E60" -msgstr "" - -#: src/pentaxmn.cpp:136 -msgid "K2000" -msgstr "" - -#: src/pentaxmn.cpp:137 -msgid "K-m" -msgstr "" - -#: src/pentaxmn.cpp:138 -msgid "Optio P70" -msgstr "" - -#: src/pentaxmn.cpp:139 -msgid "Optio E70" -msgstr "" - -#: src/pentaxmn.cpp:140 -msgid "X70" -msgstr "" - -#: src/pentaxmn.cpp:141 -msgid "K-7" -msgstr "" - -#: src/pentaxmn.cpp:142 -msgid "Optio W80" -msgstr "" - -#: src/pentaxmn.cpp:143 -msgid "Optio P80" -msgstr "" - -#: src/pentaxmn.cpp:144 -msgid "Optio WS80" -msgstr "" - -#: src/pentaxmn.cpp:145 -msgid "K-x" -msgstr "" - -#: src/pentaxmn.cpp:146 -msgid "645D" -msgstr "" - -#: src/pentaxmn.cpp:147 -msgid "Optio I-10" -msgstr "" - -#: src/pentaxmn.cpp:152 -msgid "Good" -msgstr "" - -#: src/pentaxmn.cpp:153 -msgid "Better" -msgstr "" - -#: src/pentaxmn.cpp:154 -#, fuzzy -msgid "Best" -msgstr "tavua" - -#: src/pentaxmn.cpp:155 -msgid "TIFF" -msgstr "" - -#: src/pentaxmn.cpp:157 -#, fuzzy -msgid "Premium" -msgstr "Keskikokoinen" - -#: src/pentaxmn.cpp:162 -msgid "640x480" -msgstr "" - -#: src/pentaxmn.cpp:164 -msgid "1024x768" -msgstr "" - -#: src/pentaxmn.cpp:165 -msgid "1280x960" -msgstr "" - -#: src/pentaxmn.cpp:166 -msgid "1600x1200" -msgstr "" - -#: src/pentaxmn.cpp:167 -msgid "2048x1536" -msgstr "" - -#: src/pentaxmn.cpp:168 -msgid "2560x1920 or 2304x1728" -msgstr "" - -#: src/pentaxmn.cpp:169 -msgid "3072x2304" -msgstr "" - -#: src/pentaxmn.cpp:170 -msgid "3264x2448" -msgstr "" - -#: src/pentaxmn.cpp:171 -msgid "320x240" -msgstr "" - -#: src/pentaxmn.cpp:172 -msgid "2288x1712" -msgstr "" - -#: src/pentaxmn.cpp:173 -msgid "2592x1944" -msgstr "" - -#: src/pentaxmn.cpp:174 -msgid "2304x1728 or 2592x1944" -msgstr "" - -#: src/pentaxmn.cpp:175 -msgid "3056x2296" -msgstr "" - -#: src/pentaxmn.cpp:176 -msgid "2816x2212 or 2816x2112" -msgstr "" - -#: src/pentaxmn.cpp:177 -msgid "3648x2736" -msgstr "" - -#: src/pentaxmn.cpp:182 -msgid "Auto, Did not fire" -msgstr "Auto, ei välähtänyt" - -#: src/pentaxmn.cpp:184 -msgid "Auto, Did not fire, Red-eye reduction" -msgstr "Auto, ei välähtänyt, punasilmäisyyden esto" - -#: src/pentaxmn.cpp:185 -msgid "Auto, Fired" -msgstr "Auto, välähti" - -#: src/pentaxmn.cpp:187 -msgid "Auto, Fired, Red-eye reduction" -msgstr "Auto, välähti, punasilmäisyyden esto" - -#: src/pentaxmn.cpp:188 -msgid "On, Red-eye reduction" -msgstr "Päällä, punasilmäisyyden esto" - -#: src/pentaxmn.cpp:189 -msgid "On, Wireless" -msgstr "Päällä, langaton" - -#: src/pentaxmn.cpp:190 -msgid "On, Soft" -msgstr "" - -#: src/pentaxmn.cpp:191 -msgid "On, Slow-sync" -msgstr "" - -#: src/pentaxmn.cpp:192 -#, fuzzy -msgid "On, Slow-sync, Red-eye reduction" -msgstr "Päällä, punasilmäisyyden esto" - -#: src/pentaxmn.cpp:193 -msgid "On, Trailing-curtain Sync" -msgstr "" - -#: src/pentaxmn.cpp:203 -#, fuzzy -msgid "Pan Focus" -msgstr "Käsintarkennus, MF" - -#: src/pentaxmn.cpp:204 -msgid "AF-S" -msgstr "" - -#: src/pentaxmn.cpp:205 -msgid "AF-C" -msgstr "" - -#: src/pentaxmn.cpp:206 -msgid "AF-A" -msgstr "" - -#: src/pentaxmn.cpp:212 -#, fuzzy -msgid "Fixed Center" -msgstr "Tiedostonimi" - -#: src/pentaxmn.cpp:213 -msgid "Automatic Tracking AF" -msgstr "" - -#: src/pentaxmn.cpp:214 -msgid "Face Recognition AF" -msgstr "" - -#: src/pentaxmn.cpp:231 -msgid "Fixed Center or multiple" -msgstr "" - -#: src/pentaxmn.cpp:233 -msgid "Top-center" -msgstr "" - -#: src/pentaxmn.cpp:239 -msgid "Bottom-center" -msgstr "" - -#: src/pentaxmn.cpp:245 src/pentaxmn.cpp:267 src/pentaxmn.cpp:275 -msgid "50" -msgstr "" - -#: src/pentaxmn.cpp:246 -msgid "64" -msgstr "" - -#: src/pentaxmn.cpp:247 -msgid "80" -msgstr "" - -#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:268 src/pentaxmn.cpp:277 -msgid "100" -msgstr "" - -#: src/pentaxmn.cpp:249 -msgid "125" -msgstr "" - -#: src/pentaxmn.cpp:250 -msgid "160" -msgstr "" - -#: src/pentaxmn.cpp:251 src/pentaxmn.cpp:269 src/pentaxmn.cpp:270 -#: src/pentaxmn.cpp:279 -msgid "200" -msgstr "" - -#: src/pentaxmn.cpp:252 -msgid "250" -msgstr "" - -#: src/pentaxmn.cpp:253 -msgid "320" -msgstr "" - -#: src/pentaxmn.cpp:254 src/pentaxmn.cpp:271 src/pentaxmn.cpp:281 -msgid "400" -msgstr "" - -#: src/pentaxmn.cpp:255 -msgid "500" -msgstr "" - -#: src/pentaxmn.cpp:256 -msgid "640" -msgstr "" - -#: src/pentaxmn.cpp:257 src/pentaxmn.cpp:272 src/pentaxmn.cpp:283 -msgid "800" -msgstr "" - -#: src/pentaxmn.cpp:258 -msgid "1000" -msgstr "" - -#: src/pentaxmn.cpp:259 -msgid "1250" -msgstr "" - -#: src/pentaxmn.cpp:260 src/pentaxmn.cpp:273 src/pentaxmn.cpp:285 -msgid "1600" -msgstr "" - -#: src/pentaxmn.cpp:261 -msgid "2000" -msgstr "" - -#: src/pentaxmn.cpp:262 -msgid "2500" -msgstr "" - -#: src/pentaxmn.cpp:263 src/pentaxmn.cpp:274 src/pentaxmn.cpp:287 -msgid "3200" -msgstr "" - -#: src/pentaxmn.cpp:264 -msgid "4000" -msgstr "" - -#: src/pentaxmn.cpp:265 -msgid "5000" -msgstr "" - -#: src/pentaxmn.cpp:266 -msgid "6400" -msgstr "" - -#: src/pentaxmn.cpp:276 -msgid "70" -msgstr "" - -#: src/pentaxmn.cpp:278 -msgid "140" -msgstr "" - -#: src/pentaxmn.cpp:280 -msgid "280" -msgstr "" - -#: src/pentaxmn.cpp:282 -msgid "560" -msgstr "" - -#: src/pentaxmn.cpp:284 -msgid "1100" -msgstr "" - -#: src/pentaxmn.cpp:286 -msgid "2200" -msgstr "" - -#: src/pentaxmn.cpp:304 -msgid "Multi Segment" -msgstr "" - -#: src/pentaxmn.cpp:305 -#, fuzzy -msgid "Center Weighted" -msgstr "Keskustaa painottava" - -#: src/pentaxmn.cpp:317 -#, fuzzy -msgid "DaylightFluorescent" -msgstr "Valkoinen loisteputki" - -#: src/pentaxmn.cpp:318 -#, fuzzy -msgid "DaywhiteFluorescent" -msgstr "Valkoinen loisteputki" - -#: src/pentaxmn.cpp:319 -#, fuzzy -msgid "WhiteFluorescent" -msgstr "Valkoinen loisteputki" - -#: src/pentaxmn.cpp:324 -#, fuzzy -msgid "User Selected" -msgstr "Automaattinen" - -#: src/pentaxmn.cpp:329 -msgid "Auto (Daylight)" -msgstr "" - -#: src/pentaxmn.cpp:330 -msgid "Auto (Shade)" -msgstr "" - -#: src/pentaxmn.cpp:331 -#, fuzzy -msgid "Auto (Flash)" -msgstr "Ei salamaa" - -#: src/pentaxmn.cpp:332 -#, fuzzy -msgid "Auto (Tungsten)" -msgstr "Keinovalo" - -#: src/pentaxmn.cpp:333 -msgid "Auto (DaywhiteFluorescent)" -msgstr "" - -#: src/pentaxmn.cpp:334 -#, fuzzy -msgid "Auto (WhiteFluorescent)" -msgstr "Valkoinen loisteputki" - -#: src/pentaxmn.cpp:335 -#, fuzzy -msgid "Auto (Cloudy)" -msgstr "Pilvinen" - -#: src/pentaxmn.cpp:337 -msgid "Preset (Fireworks?)" -msgstr "" - -#: src/pentaxmn.cpp:345 src/pentaxmn.cpp:358 -msgid "Med Low" -msgstr "" - -#: src/pentaxmn.cpp:346 src/pentaxmn.cpp:359 -msgid "Med High" -msgstr "" - -#: src/pentaxmn.cpp:369 -msgid "Med Soft" -msgstr "" - -#: src/pentaxmn.cpp:370 -msgid "Med Hard" -msgstr "" - -#: src/pentaxmn.cpp:371 -msgid "Very Soft" -msgstr "" - -#: src/pentaxmn.cpp:372 -msgid "Very Hard" -msgstr "" - -#: src/pentaxmn.cpp:377 src/pentaxmn.cpp:960 -msgid "Home town" -msgstr "" - -#: src/pentaxmn.cpp:383 -msgid "Pago Pago" -msgstr "" - -#: src/pentaxmn.cpp:384 -msgid "Honolulu" -msgstr "" - -#: src/pentaxmn.cpp:385 -msgid "Anchorage" -msgstr "" - -#: src/pentaxmn.cpp:386 -msgid "Vancouver" -msgstr "" - -#: src/pentaxmn.cpp:387 -msgid "San Fransisco" -msgstr "" - -#: src/pentaxmn.cpp:388 -msgid "Los Angeles" -msgstr "" - -#: src/pentaxmn.cpp:389 -msgid "Calgary" -msgstr "" - -#: src/pentaxmn.cpp:390 -msgid "Denver" -msgstr "" - -#: src/pentaxmn.cpp:391 -#, fuzzy -msgid "Mexico City" -msgstr "Linssin tyyppi" - -#: src/pentaxmn.cpp:392 -msgid "Chicago" -msgstr "" - -#: src/pentaxmn.cpp:393 -msgid "Miami" -msgstr "" - -#: src/pentaxmn.cpp:394 -msgid "Toronto" -msgstr "" - -#: src/pentaxmn.cpp:395 -msgid "New York" -msgstr "" - -#: src/pentaxmn.cpp:396 -msgid "Santiago" -msgstr "" - -#: src/pentaxmn.cpp:397 -msgid "Caracus" -msgstr "" - -#: src/pentaxmn.cpp:398 -msgid "Halifax" -msgstr "" - -#: src/pentaxmn.cpp:399 -msgid "Buenos Aires" -msgstr "" - -#: src/pentaxmn.cpp:400 -msgid "Sao Paulo" -msgstr "" - -#: src/pentaxmn.cpp:401 -msgid "Rio de Janeiro" -msgstr "" - -#: src/pentaxmn.cpp:402 -msgid "Madrid" -msgstr "" - -#: src/pentaxmn.cpp:403 -msgid "London" -msgstr "" - -#: src/pentaxmn.cpp:404 -#, fuzzy -msgid "Paris" -msgstr "Osa-alue" - -#: src/pentaxmn.cpp:405 -msgid "Milan" -msgstr "" - -#: src/pentaxmn.cpp:406 -msgid "Rome" -msgstr "" - -#: src/pentaxmn.cpp:407 -msgid "Berlin" -msgstr "" - -#: src/pentaxmn.cpp:408 -msgid "Johannesburg" -msgstr "" - -#: src/pentaxmn.cpp:409 -msgid "Istanbul" -msgstr "" - -#: src/pentaxmn.cpp:410 -#, fuzzy -msgid "Cairo" -msgstr "Makro" - -#: src/pentaxmn.cpp:411 -msgid "Jerusalem" -msgstr "" - -#: src/pentaxmn.cpp:412 -msgid "Moscow" -msgstr "" - -#: src/pentaxmn.cpp:413 -msgid "Jeddah" -msgstr "" - -#: src/pentaxmn.cpp:414 -msgid "Tehran" -msgstr "" - -#: src/pentaxmn.cpp:415 -msgid "Dubai" -msgstr "" - -#: src/pentaxmn.cpp:416 -msgid "Karachi" -msgstr "" - -#: src/pentaxmn.cpp:417 -msgid "Kabul" -msgstr "" - -#: src/pentaxmn.cpp:418 -#, fuzzy -msgid "Male" -msgstr "arvo" - -#: src/pentaxmn.cpp:419 -#, fuzzy -msgid "Delhi" -msgstr "Poista" - -#: src/pentaxmn.cpp:420 -msgid "Colombo" -msgstr "" - -#: src/pentaxmn.cpp:421 -msgid "Kathmandu" -msgstr "" - -#: src/pentaxmn.cpp:422 -msgid "Dacca" -msgstr "" - -#: src/pentaxmn.cpp:423 -msgid "Yangon" -msgstr "" - -#: src/pentaxmn.cpp:424 -msgid "Bangkok" -msgstr "" - -#: src/pentaxmn.cpp:425 -msgid "Kuala Lumpur" -msgstr "" - -#: src/pentaxmn.cpp:426 -msgid "Vientiane" -msgstr "" - -#: src/pentaxmn.cpp:427 -msgid "Singapore" -msgstr "" - -#: src/pentaxmn.cpp:428 -msgid "Phnom Penh" -msgstr "" - -#: src/pentaxmn.cpp:429 -msgid "Ho Chi Minh" -msgstr "" - -#: src/pentaxmn.cpp:430 -msgid "Jakarta" -msgstr "" - -#: src/pentaxmn.cpp:431 -msgid "Hong Kong" -msgstr "" - -#: src/pentaxmn.cpp:432 -#, fuzzy -msgid "Perth" -msgstr "Suuri" - -#: src/pentaxmn.cpp:433 -msgid "Beijing" -msgstr "" - -#: src/pentaxmn.cpp:434 -msgid "Shanghai" -msgstr "" - -#: src/pentaxmn.cpp:435 -#, fuzzy -msgid "Manila" -msgstr "Manuaalinen" - -#: src/pentaxmn.cpp:436 -msgid "Taipei" -msgstr "" - -#: src/pentaxmn.cpp:437 -msgid "Seoul" -msgstr "" - -#: src/pentaxmn.cpp:438 -msgid "Adelaide" -msgstr "" - -#: src/pentaxmn.cpp:439 -msgid "Tokyo" -msgstr "" - -#: src/pentaxmn.cpp:440 -msgid "Guam" -msgstr "" - -#: src/pentaxmn.cpp:441 -msgid "Sydney" -msgstr "" - -#: src/pentaxmn.cpp:442 -#, fuzzy -msgid "Noumea" -msgstr "Normaali" - -#: src/pentaxmn.cpp:443 -msgid "Wellington" -msgstr "" - -#: src/pentaxmn.cpp:444 -msgid "Auckland" -msgstr "" - -#: src/pentaxmn.cpp:445 -msgid "Lima" -msgstr "" - -#: src/pentaxmn.cpp:446 -msgid "Dakar" -msgstr "" - -#: src/pentaxmn.cpp:447 -msgid "Algiers" -msgstr "" - -#: src/pentaxmn.cpp:448 -msgid "Helsinki" -msgstr "" - -#: src/pentaxmn.cpp:449 -#, fuzzy -msgid "Athens" -msgstr "Linssi" - -#: src/pentaxmn.cpp:450 -msgid "Nairobi" -msgstr "" - -#: src/pentaxmn.cpp:451 -msgid "Amsterdam" -msgstr "" - -#: src/pentaxmn.cpp:452 -msgid "Stockholm" -msgstr "" - -#: src/pentaxmn.cpp:453 -msgid "Lisbon" -msgstr "" - -#: src/pentaxmn.cpp:454 -msgid "Copenhagen" -msgstr "" - -#: src/pentaxmn.cpp:459 -msgid "Unprocessed" -msgstr "" - -#: src/pentaxmn.cpp:460 -#, fuzzy -msgid "Digital Filter" -msgstr "Digitaalinen makro" - -#: src/pentaxmn.cpp:461 -msgid "Cropped" -msgstr "" - -#: src/pentaxmn.cpp:463 -msgid "Frame Synthesis?" -msgstr "" - -#: src/pentaxmn.cpp:469 src/pentaxmn.cpp:506 -#, fuzzy -msgid "MTF Program" -msgstr "Ohjelma" - -#: src/pentaxmn.cpp:475 -msgid "Night Scene Portrait" -msgstr "" - -#: src/pentaxmn.cpp:476 -msgid "No Flash" -msgstr "Ei salamaa" - -#: src/pentaxmn.cpp:479 -msgid "Surf & Snow" -msgstr "" - -#: src/pentaxmn.cpp:482 -msgid "Kids" -msgstr "" - -#: src/pentaxmn.cpp:487 -msgid "Stage Lighting" -msgstr "" - -#: src/pentaxmn.cpp:488 -msgid "Night Snap" -msgstr "" - -#: src/pentaxmn.cpp:490 -msgid "Auto PICT (Standard)" -msgstr "" - -#: src/pentaxmn.cpp:491 -msgid "Auto PICT (Portrait)" -msgstr "" - -#: src/pentaxmn.cpp:492 -#, fuzzy -msgid "Auto PICT (Landscape)" -msgstr "Maisemakuva" - -#: src/pentaxmn.cpp:493 -msgid "Auto PICT (Macro)" -msgstr "" - -#: src/pentaxmn.cpp:494 -msgid "Auto PICT (Sport)" -msgstr "" - -#: src/pentaxmn.cpp:497 src/pentaxmn.cpp:507 -#, fuzzy -msgid "Green Mode" -msgstr "Linssin malli" - -#: src/pentaxmn.cpp:498 src/pentaxmn.cpp:508 -#, fuzzy -msgid "Shutter Speed Priority" -msgstr "Valotusajan esivalinta (Tv)" - -#: src/pentaxmn.cpp:499 src/pentaxmn.cpp:509 -#, fuzzy -msgid "Aperture Priority" -msgstr "Aukon esivalinta (Av)" - -#: src/pentaxmn.cpp:501 src/pentaxmn.cpp:513 -msgid "Bulb" -msgstr "" - -#: src/pentaxmn.cpp:504 -#, fuzzy -msgid "Hi-speed Program" -msgstr "Kuvaustapa" - -#: src/pentaxmn.cpp:505 -#, fuzzy -msgid "DOF Program" -msgstr "Ohjelma" - -#: src/pentaxmn.cpp:510 -#, fuzzy -msgid "Program Tv Shift" -msgstr "Ohjelma" - -#: src/pentaxmn.cpp:511 -#, fuzzy -msgid "Program Av Shift" -msgstr "Ohjelma" - -#: src/pentaxmn.cpp:514 -#, fuzzy -msgid "Aperture Priority (Off-Auto-Aperture)" -msgstr "Aukon esivalinta (Av)" - -#: src/pentaxmn.cpp:515 -msgid "Manual (Off-Auto-Aperture)" -msgstr "" - -#: src/pentaxmn.cpp:516 -msgid "Bulb (Off-Auto-Aperture)" -msgstr "" - -#: src/pentaxmn.cpp:518 -#, fuzzy -msgid "Shutter Priority" -msgstr "Valotusajan esivalinta (Tv)" - -#: src/pentaxmn.cpp:519 -#, fuzzy -msgid "Shutter & Aperture Priority AE" -msgstr "Aukon esivalinta (Av)" - -#: src/pentaxmn.cpp:520 -#, fuzzy -msgid "Shutter & Aperture Priority AE (1)" -msgstr "Valotusajan esivalinta (Tv)" - -#: src/pentaxmn.cpp:521 -msgid "Sensitivity Priority AE" -msgstr "" - -#: src/pentaxmn.cpp:522 -msgid "Sensitivity Priority AE (1)" -msgstr "" - -#: src/pentaxmn.cpp:523 -msgid "Flash X-Sync Speed AE" -msgstr "" - -#: src/pentaxmn.cpp:524 -msgid "Flash X-Sync Speed AE (1)" -msgstr "" - -#: src/pentaxmn.cpp:527 -msgid "Video (30 fps)" -msgstr "" - -#: src/pentaxmn.cpp:528 -msgid "Video (24 fps)" -msgstr "" - -#: src/pentaxmn.cpp:535 -msgid "Continuous (Hi)" -msgstr "" - -#: src/pentaxmn.cpp:536 src/sonymn.cpp:223 -msgid "Burst" -msgstr "" - -#: src/pentaxmn.cpp:538 -msgid "Self-timer (12 sec)" -msgstr "" - -#: src/pentaxmn.cpp:539 -msgid "Self-timer (2 sec)" -msgstr "" - -#: src/pentaxmn.cpp:540 -msgid "Remote Control (3 sec)" -msgstr "" - -#: src/pentaxmn.cpp:541 -#, fuzzy -msgid "Remote Control" -msgstr "Täysautomatiikka" - -#: src/pentaxmn.cpp:543 src/properties.cpp:883 -msgid "Video" -msgstr "" - -#: src/pentaxmn.cpp:554 -msgid "M-42 or No Lens" -msgstr "" - -#: src/pentaxmn.cpp:555 -#, fuzzy -msgid "K,M Lens" -msgstr "Linssi" - -#: src/pentaxmn.cpp:556 -msgid "A Series Lens" -msgstr "" - -#: src/pentaxmn.cpp:703 -#, fuzzy -msgid "Bright" -msgstr "Omistusoikeus" - -#: src/pentaxmn.cpp:706 -msgid "Vibrant" -msgstr "" - -#: src/pentaxmn.cpp:708 -msgid "Reversal film" -msgstr "" - -#: src/pentaxmn.cpp:720 -msgid "Weakest" -msgstr "" - -#: src/pentaxmn.cpp:721 -msgid "Weak" -msgstr "" - -#: src/pentaxmn.cpp:722 -#, fuzzy -msgid "Strong" -msgstr "Värikylläisyys" - -#: src/pentaxmn.cpp:832 -msgid "No extended bracketing" -msgstr "" - -#: src/pentaxmn.cpp:838 -msgid "WB-BA" -msgstr "" - -#: src/pentaxmn.cpp:841 -msgid "WB-GM" -msgstr "" - -#: src/pentaxmn.cpp:853 -msgid "Unknown " -msgstr "" - -#: src/pentaxmn.cpp:866 -msgid "Pentax Makernote version" -msgstr "" - -#: src/pentaxmn.cpp:869 -#, fuzzy -msgid "Camera shooting mode" -msgstr "Kameran malli" - -#: src/pentaxmn.cpp:871 src/pentaxmn.cpp:872 -msgid "Resolution of a preview image" -msgstr "" - -#: src/pentaxmn.cpp:874 -msgid "Length of a preview image" -msgstr "" - -#: src/pentaxmn.cpp:875 -msgid "Size of an IFD containing a preview image" -msgstr "" - -#: src/pentaxmn.cpp:880 -msgid "Model identification" -msgstr "" - -#: src/pentaxmn.cpp:881 -msgid "Pentax model idenfication" -msgstr "" - -#: src/pentaxmn.cpp:883 src/pentaxmn.cpp:884 src/properties.cpp:150 -msgid "Date" -msgstr "" - -#: src/pentaxmn.cpp:886 src/pentaxmn.cpp:887 -msgid "Time" -msgstr "" - -#: src/pentaxmn.cpp:890 -#, fuzzy -msgid "Image quality settings" -msgstr "Kuvan laatu" - -#: src/pentaxmn.cpp:893 -#, fuzzy -msgid "Image size settings" -msgstr "Kuvan koko" - -#: src/pentaxmn.cpp:897 -#, fuzzy -msgid "Flash mode settings" -msgstr "Salaman malli" - -#: src/pentaxmn.cpp:900 -#, fuzzy -msgid "Focus mode settings" -msgstr "Tarkennustapa" - -#: src/pentaxmn.cpp:903 -msgid "Selected AF point" -msgstr "" - -#: src/pentaxmn.cpp:905 src/pentaxmn.cpp:906 -#, fuzzy -msgid "AF point in focus" -msgstr "Käytetty AF-piste" - -#: src/pentaxmn.cpp:912 src/pentaxmn.cpp:913 -#, fuzzy -msgid "F-Number" -msgstr "F-luku" - -#: src/pentaxmn.cpp:915 -msgid "ISO sensitivity" -msgstr "" - -#: src/pentaxmn.cpp:916 -msgid "ISO sensitivity settings" -msgstr "" - -#: src/pentaxmn.cpp:923 src/pentaxmn.cpp:924 -#, fuzzy -msgid "MeteringMode" -msgstr "Mittaustapa" - -#: src/pentaxmn.cpp:926 src/pentaxmn.cpp:927 -msgid "AutoBracketing" -msgstr "" - -#: src/pentaxmn.cpp:929 src/pentaxmn.cpp:930 -#, fuzzy -msgid "White ballance" -msgstr "Valkotasapaino" - -#: src/pentaxmn.cpp:932 src/pentaxmn.cpp:933 -#, fuzzy -msgid "White ballance mode" -msgstr "Valkotasapaino" - -#: src/pentaxmn.cpp:936 -#, fuzzy -msgid "Blue color balance" -msgstr "Väriavaruus" - -#: src/pentaxmn.cpp:939 -#, fuzzy -msgid "Red color balance" -msgstr "Väriavaruus" - -#: src/pentaxmn.cpp:941 src/pentaxmn.cpp:942 -msgid "FocalLength" -msgstr "Polttoväli" - -#: src/pentaxmn.cpp:956 src/pentaxmn.cpp:957 src/properties.cpp:657 -msgid "Location" -msgstr "" - -#: src/pentaxmn.cpp:959 -msgid "Hometown" -msgstr "" - -#: src/pentaxmn.cpp:965 -msgid "Hometown DST" -msgstr "" - -#: src/pentaxmn.cpp:966 -msgid "Whether day saving time is active in home town" -msgstr "" - -#: src/pentaxmn.cpp:968 -msgid "Destination DST" -msgstr "" - -#: src/pentaxmn.cpp:969 -msgid "Whether day saving time is active in destination" -msgstr "" - -#: src/pentaxmn.cpp:971 src/pentaxmn.cpp:972 -#, fuzzy -msgid "DSPFirmwareVersion" -msgstr "Firmwaren versio" - -#: src/pentaxmn.cpp:974 src/pentaxmn.cpp:975 -#, fuzzy -msgid "CPUFirmwareVersion" -msgstr "Firmwaren versio" - -#: src/pentaxmn.cpp:981 -#, fuzzy -msgid "Light value" -msgstr "arvo" - -#: src/pentaxmn.cpp:982 -msgid "Camera calculated light value, includes exposure compensation" -msgstr "" - -#: src/pentaxmn.cpp:998 src/pentaxmn.cpp:999 -#, fuzzy -msgid "Image area offset" -msgstr "Kuvan numero" - -#: src/pentaxmn.cpp:1001 src/pentaxmn.cpp:1002 -#, fuzzy -msgid "Raw image size" -msgstr "Kuvan koko" - -#: src/pentaxmn.cpp:1005 src/pentaxmn.cpp:1006 -msgid "Preview image borders" -msgstr "" - -#: src/pentaxmn.cpp:1011 src/pentaxmn.cpp:1012 -msgid "Sensitivity adjust" -msgstr "" - -#: src/pentaxmn.cpp:1014 src/pentaxmn.cpp:1015 -#, fuzzy -msgid "Digital filter" -msgstr "Digitaalinen makro" - -#: src/pentaxmn.cpp:1019 -#, fuzzy -msgid "Camera temperature" -msgstr "Kameran merkki" - -#: src/pentaxmn.cpp:1032 src/pentaxmn.cpp:1033 -#, fuzzy -msgid "Image tone" -msgstr "Kuvan tyyppi" - -#: src/pentaxmn.cpp:1035 src/pentaxmn.cpp:1036 -#, fuzzy -msgid "Colort temperature" -msgstr "Väriavaruus" - -#: src/pentaxmn.cpp:1039 -#, fuzzy -msgid "Shake reduction" -msgstr "Päällä, punasilmäisyyden esto" - -#: src/pentaxmn.cpp:1040 -msgid "Shake reduction information" -msgstr "" - -#: src/pentaxmn.cpp:1045 src/pentaxmn.cpp:1046 -msgid "Dynamic range expansion" -msgstr "" - -#: src/pentaxmn.cpp:1048 src/pentaxmn.cpp:1049 -msgid "High ISO noise reduction" -msgstr "" - -#: src/pentaxmn.cpp:1051 src/pentaxmn.cpp:1052 -msgid "AF Adjustment" -msgstr "" - -#: src/pentaxmn.cpp:1055 src/pentaxmn.cpp:1056 -#, fuzzy -msgid "Black point" -msgstr "Mustavalko" - -#: src/pentaxmn.cpp:1058 src/pentaxmn.cpp:1059 -msgid "White point" -msgstr "" - -#: src/pentaxmn.cpp:1062 src/pentaxmn.cpp:1063 -msgid "ShotInfo" -msgstr "" - -#: src/pentaxmn.cpp:1065 src/pentaxmn.cpp:1066 -msgid "AEInfo" -msgstr "" - -#: src/pentaxmn.cpp:1068 src/pentaxmn.cpp:1069 -#, fuzzy -msgid "LensInfo" -msgstr "Linssi" - -#: src/pentaxmn.cpp:1071 src/pentaxmn.cpp:1072 -#, fuzzy -msgid "FlashInfo" -msgstr "Salama" - -#: src/pentaxmn.cpp:1074 src/pentaxmn.cpp:1075 -#, fuzzy -msgid "AEMeteringSegments" -msgstr "Mittaustapa" - -#: src/pentaxmn.cpp:1077 src/pentaxmn.cpp:1078 -#, fuzzy -msgid "FlashADump" -msgstr "Salama" - -#: src/pentaxmn.cpp:1080 src/pentaxmn.cpp:1081 -#, fuzzy -msgid "FlashBDump" -msgstr "Salama" - -#: src/pentaxmn.cpp:1084 src/pentaxmn.cpp:1085 -msgid "WB_RGGBLevelsDaylight" -msgstr "" - -#: src/pentaxmn.cpp:1087 src/pentaxmn.cpp:1088 -msgid "WB_RGGBLevelsShade" -msgstr "" - -#: src/pentaxmn.cpp:1090 src/pentaxmn.cpp:1091 -msgid "WB_RGGBLevelsCloudy" -msgstr "" - -#: src/pentaxmn.cpp:1093 src/pentaxmn.cpp:1094 -msgid "WB_RGGBLevelsTungsten" -msgstr "" - -#: src/pentaxmn.cpp:1096 src/pentaxmn.cpp:1097 -#, fuzzy -msgid "WB_RGGBLevelsFluorescentD" -msgstr "Valkoinen loisteputki" - -#: src/pentaxmn.cpp:1099 src/pentaxmn.cpp:1100 -#, fuzzy -msgid "WB_RGGBLevelsFluorescentN" -msgstr "Valkoinen loisteputki" - -#: src/pentaxmn.cpp:1102 src/pentaxmn.cpp:1103 -#, fuzzy -msgid "WB_RGGBLevelsFluorescentW" -msgstr "Valkoinen loisteputki" - -#: src/pentaxmn.cpp:1105 src/pentaxmn.cpp:1106 -msgid "WB_RGGBLevelsFlash" -msgstr "" - -#: src/pentaxmn.cpp:1108 src/pentaxmn.cpp:1109 -#, fuzzy -msgid "CameraInfo" -msgstr "Kameran tyyppi" - -#: src/pentaxmn.cpp:1111 src/pentaxmn.cpp:1112 -msgid "BatteryInfo" -msgstr "" - -#: src/pentaxmn.cpp:1114 src/pentaxmn.cpp:1115 -msgid "AFInfo" -msgstr "" - -#: src/pentaxmn.cpp:1117 src/pentaxmn.cpp:1118 -msgid "ColorInfo" -msgstr "" - -#: src/pentaxmn.cpp:1125 -msgid "Unknown PentaxMakerNote tag" -msgstr "" - -#: src/properties.cpp:102 -msgid "Dublin Core schema" -msgstr "" - -#: src/properties.cpp:103 -msgid "digiKam Photo Management schema" -msgstr "" - -#: src/properties.cpp:104 -msgid "KDE Image Program Interface schema" -msgstr "" - -#: src/properties.cpp:105 -msgid "XMP Basic schema" -msgstr "" - -#: src/properties.cpp:106 -msgid "XMP Rights Management schema" -msgstr "" - -#: src/properties.cpp:107 -msgid "XMP Media Management schema" -msgstr "" - -#: src/properties.cpp:108 -msgid "XMP Basic Job Ticket schema" -msgstr "" - -#: src/properties.cpp:109 -msgid "XMP Paged-Text schema" -msgstr "" - -#: src/properties.cpp:110 -msgid "XMP Dynamic Media schema" -msgstr "" - -#: src/properties.cpp:111 -msgid "Microsoft Photo schema" -msgstr "" - -#: src/properties.cpp:112 -msgid "Adobe PDF schema" -msgstr "" - -#: src/properties.cpp:113 -msgid "Adobe photoshop schema" -msgstr "" - -#: src/properties.cpp:114 -#, fuzzy -msgid "Camera Raw schema" -msgstr "Kameran merkki" - -#: src/properties.cpp:115 -msgid "Exif Schema for TIFF Properties" -msgstr "" - -#: src/properties.cpp:116 -msgid "Exif schema for Exif-specific Properties" -msgstr "" - -#: src/properties.cpp:117 -msgid "Exif schema for Additional Exif Properties" -msgstr "" - -#: src/properties.cpp:118 src/properties.cpp:119 -msgid "IPTC Core schema" -msgstr "" - -#: src/properties.cpp:120 src/properties.cpp:121 -msgid "IPTC Extension schema" -msgstr "" - -#: src/properties.cpp:122 -msgid "PLUS License Data Format schema" -msgstr "" - -#: src/properties.cpp:123 -msgid "iView Media Pro schema" -msgstr "" - -#: src/properties.cpp:124 -msgid "Expression Media schema" -msgstr "" - -#: src/properties.cpp:125 -msgid "Microsoft Photo 1.2 schema" -msgstr "" - -#: src/properties.cpp:126 -msgid "Microsoft Photo RegionInfo schema" -msgstr "" - -#: src/properties.cpp:127 -msgid "Microsoft Photo Region schema" -msgstr "" - -#: src/properties.cpp:128 -msgid "Metadata Working Group Regions schema" -msgstr "" - -#: src/properties.cpp:131 -#, fuzzy -msgid "Colorant structure" -msgstr "Kontrasti" - -#: src/properties.cpp:132 -msgid "Dimensions structure" -msgstr "" - -#: src/properties.cpp:133 -#, fuzzy -msgid "Font structure" -msgstr "Kontrasti" - -#: src/properties.cpp:134 -#, fuzzy -msgid "Thumbnail structure" -msgstr "Näytekuvat" - -#: src/properties.cpp:135 -msgid "Resource Event structure" -msgstr "" - -#: src/properties.cpp:136 -msgid "ResourceRef structure" -msgstr "" - -#: src/properties.cpp:137 -msgid "Version structure" -msgstr "" - -#: src/properties.cpp:138 -msgid "Basic Job/Workflow structure" -msgstr "" - -#: src/properties.cpp:139 -#, fuzzy -msgid "Area structure" -msgstr "Kontrasti" - -#: src/properties.cpp:142 -msgid "Qualifier for xmp:Identifier" -msgstr "" - -#: src/properties.cpp:146 -#, fuzzy -msgid "Contributor" -msgstr "Kontrasti" - -#: src/properties.cpp:146 -msgid "Contributors to the resource (other than the authors)." -msgstr "" - -#: src/properties.cpp:147 -msgid "Coverage" -msgstr "" - -#: src/properties.cpp:147 -msgid "" -"The spatial or temporal topic of the resource, the spatial applicability of " -"the resource, or the jurisdiction under which the resource is relevant." -msgstr "" - -#: src/properties.cpp:149 -#, fuzzy -msgid "Creator" -msgstr "Kuvan numero" - -#: src/properties.cpp:149 -msgid "" -"The authors of the resource (listed in order of precedence, if significant)." -msgstr "" - -#: src/properties.cpp:150 -msgid "Date(s) that something interesting happened to the resource." -msgstr "" - -#: src/properties.cpp:151 -msgid "" -"A textual description of the content of the resource. Multiple values may be " -"present for different languages." -msgstr "" - -#: src/properties.cpp:153 -#, fuzzy -msgid "Format" -msgstr "Normaali" - -#: src/properties.cpp:153 -msgid "" -"The file format used when saving the resource. Tools and applications should " -"set this property to the save format of the data. It may include appropriate " -"qualifiers." -msgstr "" - -#: src/properties.cpp:155 src/properties.cpp:210 -msgid "Identifier" -msgstr "" - -#: src/properties.cpp:155 -msgid "" -"Unique identifier of the resource. Recommended best practice is to identify " -"the resource by means of a string conforming to a formal identification " -"system." -msgstr "" - -#: src/properties.cpp:157 -msgid "An unordered array specifying the languages used in the resource." -msgstr "" - -#: src/properties.cpp:158 -msgid "Publisher" -msgstr "" - -#: src/properties.cpp:158 -msgid "" -"An entity responsible for making the resource available. Examples of a " -"Publisher include a person, an organization, or a service. Typically, the " -"name of a Publisher should be used to indicate the entity." -msgstr "" - -#: src/properties.cpp:161 -#, fuzzy -msgid "Relation" -msgstr "Resoluutioyksikkö" - -#: src/properties.cpp:161 -msgid "" -"Relationships to other documents. Recommended best practice is to identify " -"the related resource by means of a string conforming to a formal " -"identification system." -msgstr "" - -#: src/properties.cpp:163 -msgid "Rights" -msgstr "" - -#: src/properties.cpp:163 -msgid "" -"Informal rights statement, selected by language. Typically, rights " -"information includes a statement about various property rights associated " -"with the resource, including intellectual property rights." -msgstr "" - -#: src/properties.cpp:166 -msgid "Unique identifier of the work from which this resource was derived." -msgstr "" - -#: src/properties.cpp:167 -msgid "" -"An unordered array of descriptive phrases or keywords that specify the topic " -"of the content of the resource." -msgstr "" - -#: src/properties.cpp:169 -msgid "Title" -msgstr "" - -#: src/properties.cpp:169 -msgid "" -"The title of the document, or the name given to the resource. Typically, it " -"will be a name by which the resource is formally known." -msgstr "" - -#: src/properties.cpp:171 src/properties.cpp:979 -#, fuzzy -msgid "Type" -msgstr "Linssin tyyppi" - -#: src/properties.cpp:171 -msgid "A document type; for example, novel, poem, or working paper." -msgstr "" - -#: src/properties.cpp:177 -msgid "Tags List" -msgstr "" - -#: src/properties.cpp:177 -msgid "" -"The list of complete tags path as string. The path hierarchy is separated by " -"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." -msgstr "" - -#: src/properties.cpp:178 -msgid "Captions Author Names" -msgstr "" - -#: src/properties.cpp:178 -msgid "" -"The list of all captions author names for each language alternative captions " -"set in standard XMP tags." -msgstr "" - -#: src/properties.cpp:179 -msgid "Captions Date Time Stamps" -msgstr "" - -#: src/properties.cpp:179 -msgid "" -"The list of all captions date time stamps for each language alternative " -"captions set in standard XMP tags." -msgstr "" - -#: src/properties.cpp:180 src/tags.cpp:837 -#, fuzzy -msgid "Image History" -msgstr "Kuvan tyyppi" - -#: src/properties.cpp:180 -msgid "" -"An XML based content to list all action processed on this image with image " -"editor (as crop, rotate, color corrections, adjustements, etc.)." -msgstr "" - -#: src/properties.cpp:181 -#, fuzzy -msgid "Lens Correction Settings" -msgstr "Kameran asetukset" - -#: src/properties.cpp:181 -msgid "" -"The list of Lens Correction tools settings used to fix lens distorsion. This " -"include Batch Queue Manager and Image editor tools based on LensFun library." -msgstr "" - -#: src/properties.cpp:182 -#, fuzzy -msgid "Color Label" -msgstr "Väriavaruus" - -#: src/properties.cpp:182 -msgid "" -"The color label assigned to this item. Possible values are \"0\": no label; " -"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " -"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." -msgstr "" - -#: src/properties.cpp:183 -#, fuzzy -msgid "Pick Label" -msgstr "Suuri" - -#: src/properties.cpp:183 -msgid "" -"The pick label assigned to this item. Possible values are \"0\": no label; " -"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " -"accepted." -msgstr "" - -#: src/properties.cpp:189 -msgid "Enfuse Input Files" -msgstr "" - -#: src/properties.cpp:189 -msgid "" -"The list of files processed with Enfuse program through ExpoBlending tool." -msgstr "" - -#: src/properties.cpp:190 -#, fuzzy -msgid "Enfuse Settings" -msgstr "Kameran asetukset" - -#: src/properties.cpp:190 -msgid "" -"The list of Enfuse settings used to blend image stack with ExpoBlending tool." -msgstr "" - -#: src/properties.cpp:191 -msgid "PicasaWeb Item ID" -msgstr "" - -#: src/properties.cpp:191 -msgid "Item ID from PicasaWeb web service." -msgstr "" - -#: src/properties.cpp:192 -msgid "Yandex Fotki Item ID" -msgstr "" - -#: src/properties.cpp:192 -msgid "Item ID from Yandex Fotki web service." -msgstr "" - -#: src/properties.cpp:198 -msgid "Advisory" -msgstr "" - -#: src/properties.cpp:198 -msgid "" -"An unordered array specifying properties that were edited outside the " -"authoring application. Each item should contain a single namespace and XPath " -"separated by one ASCII space (U+0020)." -msgstr "" - -#: src/properties.cpp:201 -msgid "Base URL" -msgstr "" - -#: src/properties.cpp:201 -msgid "" -"The base URL for relative URLs in the document content. If this document " -"contains Internet links, and those links are relative, they are relative to " -"this base URL. This property provides a standard way for embedded relative " -"URLs to be interpreted by tools. Web authoring tools should set the value " -"based on their notion of where URLs will be interpreted." -msgstr "" - -#: src/properties.cpp:206 -msgid "Create Date" -msgstr "" - -#: src/properties.cpp:206 -msgid "The date and time the resource was originally created." -msgstr "" - -#: src/properties.cpp:207 -msgid "Creator Tool" -msgstr "" - -#: src/properties.cpp:207 -msgid "" -"The name of the first known tool used to create the resource. If history is " -"present in the metadata, this value should be equivalent to that of xmpMM:" -"History's softwareAgent property." -msgstr "" - -#: src/properties.cpp:210 -msgid "" -"An unordered array of text strings that unambiguously identify the resource " -"within a given context. An array item may be qualified with xmpidq:Scheme to " -"denote the formal identification system to which that identifier conforms. " -"Note: The dc:identifier property is not used because it lacks a defined " -"scheme qualifier and has been defined in the XMP Specification as a simple " -"(single-valued) property." -msgstr "" - -#: src/properties.cpp:215 -#, fuzzy -msgid "Label" -msgstr "Suuri" - -#: src/properties.cpp:215 -msgid "" -"A word or short phrase that identifies a document as a member of a user-" -"defined collection. Used to organize documents in a file browser." -msgstr "" - -#: src/properties.cpp:217 -msgid "Metadata Date" -msgstr "" - -#: src/properties.cpp:217 -msgid "" -"The date and time that any metadata for this resource was last changed. It " -"should be the same as or more recent than xmp:ModifyDate." -msgstr "" - -#: src/properties.cpp:219 -#, fuzzy -msgid "Modify Date" -msgstr "Malli" - -#: src/properties.cpp:219 -msgid "" -"The date and time the resource was last modified. Note: The value of this " -"property is not necessarily the same as the file's system modification date " -"because it is set before the file is saved." -msgstr "" - -#: src/properties.cpp:222 -msgid "Nickname" -msgstr "" - -#: src/properties.cpp:222 -msgid "A short informal name for the resource." -msgstr "" - -#: src/properties.cpp:223 -#, fuzzy -msgid "Rating" -msgstr "Varoitus" - -#: src/properties.cpp:223 -msgid "" -"A number that indicates a document's status relative to other documents, " -"used to organize documents in a file browser. Values are user-defined within " -"an application-defined range." -msgstr "" - -#: src/properties.cpp:226 -msgid "Thumbnails" -msgstr "Näytekuvat" - -#: src/properties.cpp:226 -msgid "" -"An alternative array of thumbnail images for a file, which can differ in " -"characteristics such as size or image encoding." -msgstr "" - -#: src/properties.cpp:233 -msgid "Certificate" -msgstr "" - -#: src/properties.cpp:233 -msgid "Online rights management certificate." -msgstr "" - -#: src/properties.cpp:234 -msgid "Marked" -msgstr "" - -#: src/properties.cpp:234 -msgid "Indicates that this is a rights-managed resource." -msgstr "" - -#: src/properties.cpp:235 -#, fuzzy -msgid "Owner" -msgstr "Omistajan nimi" - -#: src/properties.cpp:235 -msgid "An unordered array specifying the legal owner(s) of a resource." -msgstr "" - -#: src/properties.cpp:236 -msgid "Usage Terms" -msgstr "" - -#: src/properties.cpp:236 -msgid "Text instructions on how a resource can be legally used." -msgstr "" - -#: src/properties.cpp:237 -msgid "Web Statement" -msgstr "" - -#: src/properties.cpp:237 -msgid "" -"The location of a web page describing the owner and/or rights statement for " -"this resource." -msgstr "" - -#: src/properties.cpp:243 -msgid "Derived From" -msgstr "" - -#: src/properties.cpp:243 -msgid "" -"A reference to the original document from which this one is derived. It is a " -"minimal reference; missing components can be assumed to be unchanged. For " -"example, a new version might only need to specify the instance ID and " -"version number of the previous version, or a rendition might only need to " -"specify the instance ID and rendition class of the original." -msgstr "" - -#: src/properties.cpp:248 -msgid "Document ID" -msgstr "" - -#: src/properties.cpp:248 -msgid "" -"The common identifier for all versions and renditions of a document. It " -"should be based on a UUID; see Document and Instance IDs below." -msgstr "" - -#: src/properties.cpp:250 -#, fuzzy -msgid "History" -msgstr "Kuvan tyyppi" - -#: src/properties.cpp:250 -msgid "" -"An ordered array of high-level user actions that resulted in this resource. " -"It is intended to give human readers a general indication of the steps taken " -"to make the changes from the previous version to this one. The list should " -"be at an abstract level; it is not intended to be an exhaustive keystroke or " -"other detailed history." -msgstr "" - -#: src/properties.cpp:254 -#, fuzzy -msgid "Instance ID" -msgstr "Sisäinen salama" - -#: src/properties.cpp:254 -msgid "" -"An identifier for a specific incarnation of a document, updated each time a " -"file is saved. It should be based on a UUID; see Document and Instance IDs " -"below." -msgstr "" - -#: src/properties.cpp:256 -msgid "Managed From" -msgstr "" - -#: src/properties.cpp:256 -msgid "" -"A reference to the document as it was prior to becoming managed. It is set " -"when a managed document is introduced to an asset management system that " -"does not currently own it. It may or may not include references to different " -"management systems." -msgstr "" - -#: src/properties.cpp:259 -#, fuzzy -msgid "Manager" -msgstr "Suuri" - -#: src/properties.cpp:259 -msgid "" -"The name of the asset management system that manages this resource. Along " -"with xmpMM: ManagerVariant, it tells applications which asset management " -"system to contact concerning this document." -msgstr "" - -#: src/properties.cpp:262 -msgid "Manage To" -msgstr "" - -#: src/properties.cpp:262 -msgid "" -"A URI identifying the managed resource to the asset management system; the " -"presence of this property is the formal indication that this resource is " -"managed. The form and content of this URI is private to the asset management " -"system." -msgstr "" - -#: src/properties.cpp:265 -msgid "Manage UI" -msgstr "" - -#: src/properties.cpp:265 -msgid "" -"A URI that can be used to access information about the managed resource " -"through a web browser. It might require a custom browser plug-in." -msgstr "" - -#: src/properties.cpp:267 -msgid "Manager Variant" -msgstr "" - -#: src/properties.cpp:267 -msgid "" -"Specifies a particular variant of the asset management system. The format of " -"this property is private to the specific asset management system." -msgstr "" - -#: src/properties.cpp:269 -msgid "Rendition Class" -msgstr "" - -#: src/properties.cpp:269 -msgid "" -"The rendition class name for this resource. This property should be absent " -"or set to default for a document version that is not a derived rendition." -msgstr "" - -#: src/properties.cpp:271 -msgid "Rendition Params" -msgstr "" - -#: src/properties.cpp:271 -msgid "" -"Can be used to provide additional rendition parameters that are too complex " -"or verbose to encode in xmpMM: RenditionClass." -msgstr "" - -#: src/properties.cpp:273 -#, fuzzy -msgid "Version ID" -msgstr "Ohjelman versio" - -#: src/properties.cpp:273 -msgid "" -"The document version identifier for this resource. Each version of a " -"document gets a new identifier, usually simply by incrementing integers 1, " -"2, 3 . . . and so on. Media management systems can have other conventions or " -"support branching which requires a more complex scheme." -msgstr "" - -#: src/properties.cpp:277 -#, fuzzy -msgid "Versions" -msgstr "Ohjelman versio" - -#: src/properties.cpp:277 -msgid "" -"The version history associated with this resource. Entry [1] is the oldest " -"known version for this document, entry [last()] is the most recent version. " -"Typically, a media management system would fill in the version information " -"in the metadata on check-in. It is not guaranteed that a complete history " -"versions from the first to this one will be present in the xmpMM:Versions " -"property. Interior version information can be compressed or eliminated and " -"the version history can be truncated at some point." -msgstr "" - -#: src/properties.cpp:283 -msgid "Last URL" -msgstr "" - -#: src/properties.cpp:283 -msgid "Deprecated for privacy protection." -msgstr "" - -#: src/properties.cpp:284 -msgid "Rendition Of" -msgstr "" - -#: src/properties.cpp:284 -msgid "" -"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " -"which this is a rendition." -msgstr "" - -#: src/properties.cpp:286 -msgid "Save ID" -msgstr "" - -#: src/properties.cpp:286 -msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." -msgstr "" - -#: src/properties.cpp:292 -msgid "Job Reference" -msgstr "" - -#: src/properties.cpp:292 -msgid "" -"References an external job management file for a job process in which the " -"document is being used. Use of job names is under user control. Typical use " -"would be to identify all documents that are part of a particular job or " -"contract. There are multiple values because there can be more than one job " -"using a particular document at any time, and it can also be useful to keep " -"historical information about what jobs a document was part of previously." -msgstr "" - -#: src/properties.cpp:301 -#, fuzzy -msgid "Maximum Page Size" -msgstr "Kuvan koko" - -#: src/properties.cpp:301 -msgid "" -"The size of the largest page in the document (including any in contained " -"documents)." -msgstr "" - -#: src/properties.cpp:302 -msgid "Number of Pages" -msgstr "" - -#: src/properties.cpp:302 -msgid "" -"The number of pages in the document (including any in contained documents)." -msgstr "" - -#: src/properties.cpp:303 -#, fuzzy -msgid "Fonts" -msgstr "kuukautta" - -#: src/properties.cpp:303 -msgid "" -"An unordered array of fonts that are used in the document (including any in " -"contained documents)." -msgstr "" - -#: src/properties.cpp:304 -#, fuzzy -msgid "Colorants" -msgstr "Väriavaruus" - -#: src/properties.cpp:304 -msgid "" -"An ordered array of colorants (swatches) that are used in the document " -"(including any in contained documents)." -msgstr "" - -#: src/properties.cpp:305 -#, fuzzy -msgid "Plate Names" -msgstr "Tiedostonimi" - -#: src/properties.cpp:305 -msgid "" -"An ordered array of plate names that are needed to print the document " -"(including any in contained documents)." -msgstr "" - -#: src/properties.cpp:311 -msgid "Project Reference" -msgstr "" - -#: src/properties.cpp:311 -msgid "A reference to the project that created this file." -msgstr "" - -#: src/properties.cpp:312 -msgid "Video Frame Rate" -msgstr "" - -#: src/properties.cpp:312 -msgid "The video frame rate. One of: 24, NTSC, PAL." -msgstr "" - -#: src/properties.cpp:313 -msgid "Video Frame Size" -msgstr "" - -#: src/properties.cpp:313 -msgid "The frame size. For example: w:720, h: 480, unit:pixels" -msgstr "" - -#: src/properties.cpp:314 -msgid "Video Pixel Aspect Ratio" -msgstr "" - -#: src/properties.cpp:314 -msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" -msgstr "" - -#: src/properties.cpp:315 -msgid "Video Pixel Depth" -msgstr "" - -#: src/properties.cpp:315 -msgid "" -"The size in bits of each color component of a pixel. Standard Windows 32-bit " -"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." -msgstr "" - -#: src/properties.cpp:317 -#, fuzzy -msgid "Video Color Space" -msgstr "Väriavaruus" - -#: src/properties.cpp:317 -msgid "" -"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " -"CCIR-709 (used for HD)." -msgstr "" - -#: src/properties.cpp:319 -msgid "Video Alpha Mode" -msgstr "" - -#: src/properties.cpp:319 -msgid "The alpha mode. One of: straight, pre-multiplied." -msgstr "" - -#: src/properties.cpp:320 -msgid "Video Alpha Premultiple Color" -msgstr "" - -#: src/properties.cpp:320 -msgid "" -"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " -"is pre-multiplied." -msgstr "" - -#: src/properties.cpp:322 -msgid "Video Alpha Unity Is Transparent" -msgstr "" - -#: src/properties.cpp:322 -msgid "When true, unity is clear, when false, it is opaque." -msgstr "" - -#: src/properties.cpp:323 -#, fuzzy -msgid "Video Compressor" -msgstr "Pakkaus" - -#: src/properties.cpp:323 -msgid "Video compression used. For example, jpeg." -msgstr "" - -#: src/properties.cpp:324 -msgid "Video Field Order" -msgstr "" - -#: src/properties.cpp:324 -msgid "The field order for video. One of: Upper, Lower, Progressive." -msgstr "" - -#: src/properties.cpp:325 -msgid "Pull Down" -msgstr "" - -#: src/properties.cpp:325 -msgid "" -"The sampling phase of film to be converted to video (pull-down). One of: " -"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " -"WWWSS_24p, WWSSW_24p." -msgstr "" - -#: src/properties.cpp:327 -msgid "Audio Sample Rate" -msgstr "" - -#: src/properties.cpp:327 -msgid "" -"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." -msgstr "" - -#: src/properties.cpp:328 -msgid "Audio Sample Type" -msgstr "" - -#: src/properties.cpp:328 -msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." -msgstr "" - -#: src/properties.cpp:329 -msgid "Audio Channel Type" -msgstr "" - -#: src/properties.cpp:329 -msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." -msgstr "" - -#: src/properties.cpp:330 -#, fuzzy -msgid "Audio Compressor" -msgstr "Pakkaus" - -#: src/properties.cpp:330 -msgid "The audio compression used. For example, MP3." -msgstr "" - -#: src/properties.cpp:331 -msgid "Speaker Placement" -msgstr "" - -#: src/properties.cpp:331 -msgid "" -"A description of the speaker angles from center front in degrees. For " -"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " -"-110, Right Surround = 110\"" -msgstr "" - -#: src/properties.cpp:333 -#, fuzzy -msgid "File Data Rate" -msgstr "Tiedostonimi" - -#: src/properties.cpp:333 -msgid "" -"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" -"sec" -msgstr "" - -#: src/properties.cpp:334 -#, fuzzy -msgid "Tape Name" -msgstr "Omistajan nimi" - -#: src/properties.cpp:334 -msgid "" -"The name of the tape from which the clip was captured, as set during the " -"capture process." -msgstr "" - -#: src/properties.cpp:335 -msgid "Alternative Tape Name" -msgstr "" - -#: src/properties.cpp:335 -msgid "" -"An alternative tape name, set via the project window or timecode dialog in " -"Premiere. If an alternative name has been set and has not been reverted, " -"that name is displayed." -msgstr "" - -#: src/properties.cpp:337 -msgid "Start Time Code" -msgstr "" - -#: src/properties.cpp:337 -msgid "" -"The timecode of the first frame of video in the file, as obtained from the " -"device control." -msgstr "" - -#: src/properties.cpp:338 -msgid "Alternative Time code" -msgstr "" - -#: src/properties.cpp:338 -msgid "" -"A timecode set by the user. When specified, it is used instead of the " -"startTimecode." -msgstr "" - -#: src/properties.cpp:339 -#, fuzzy -msgid "Duration" -msgstr "Värikylläisyys" - -#: src/properties.cpp:339 -msgid "The duration of the media file." -msgstr "" - -#: src/properties.cpp:340 -#, fuzzy -msgid "Scene" -msgstr "Linssi" - -#: src/properties.cpp:340 -msgid "The name of the scene." -msgstr "" - -#: src/properties.cpp:341 -msgid "Shot Name" -msgstr "" - -#: src/properties.cpp:341 -msgid "The name of the shot or take." -msgstr "" - -#: src/properties.cpp:342 -msgid "Shot Date" -msgstr "" - -#: src/properties.cpp:342 -msgid "The date and time when the video was shot." -msgstr "" - -#: src/properties.cpp:343 -#, fuzzy -msgid "Shot Location" -msgstr "Värikylläisyys" - -#: src/properties.cpp:343 -msgid "" -"The name of the location where the video was shot. For example: " -"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " -"GPS values." -msgstr "" - -#: src/properties.cpp:345 -#, fuzzy -msgid "Log Comment" -msgstr "Oma kommentti" - -#: src/properties.cpp:345 -#, fuzzy -msgid "User's log comments." -msgstr "Oma kommentti" - -#: src/properties.cpp:346 -msgid "Markers" -msgstr "" - -#: src/properties.cpp:346 -msgid "An ordered list of markers" -msgstr "" - -#: src/properties.cpp:347 -msgid "Contributed Media" -msgstr "" - -#: src/properties.cpp:347 -msgid "An unordered list of all media used to create this media." -msgstr "" - -#: src/properties.cpp:348 -msgid "Absolute Peak Audio File Path" -msgstr "" - -#: src/properties.cpp:348 -msgid "" -"The absolute path to the file's peak audio file. If empty, no peak file " -"exists." -msgstr "" - -#: src/properties.cpp:349 -msgid "Relative Peak Audio File Path" -msgstr "" - -#: src/properties.cpp:349 -msgid "" -"The relative path to the file's peak audio file. If empty, no peak file " -"exists." -msgstr "" - -#: src/properties.cpp:350 -msgid "Video Modified Date" -msgstr "" - -#: src/properties.cpp:350 -msgid "The date and time when the video was last modified." -msgstr "" - -#: src/properties.cpp:351 -msgid "Audio Modified Date" -msgstr "" - -#: src/properties.cpp:351 -msgid "The date and time when the audio was last modified." -msgstr "" - -#: src/properties.cpp:352 -msgid "Metadata Modified Date" -msgstr "" - -#: src/properties.cpp:352 -msgid "The date and time when the metadata was last modified." -msgstr "" - -#: src/properties.cpp:353 src/properties.cpp:521 src/tags.cpp:549 -msgid "Artist" -msgstr "" - -#: src/properties.cpp:353 -msgid "The name of the artist or artists." -msgstr "" - -#: src/properties.cpp:354 -msgid "Album" -msgstr "" - -#: src/properties.cpp:354 -msgid "The name of the album." -msgstr "" - -#: src/properties.cpp:355 -#, fuzzy -msgid "Track Number" -msgstr "Sarjanumero" - -#: src/properties.cpp:355 -msgid "" -"A numeric value indicating the order of the audio file within its original " -"recording." -msgstr "" - -#: src/properties.cpp:356 -msgid "Genre" -msgstr "" - -#: src/properties.cpp:356 -msgid "The name of the genre." -msgstr "" - -#: src/properties.cpp:357 -msgid "The copyright information." -msgstr "" - -#: src/properties.cpp:358 -msgid "The date the title was released." -msgstr "" - -#: src/properties.cpp:359 -msgid "Composer" -msgstr "" - -#: src/properties.cpp:359 -msgid "The composer's name." -msgstr "" - -#: src/properties.cpp:360 -msgid "Engineer" -msgstr "" - -#: src/properties.cpp:360 -msgid "The engineer's name." -msgstr "" - -#: src/properties.cpp:361 -msgid "Tempo" -msgstr "" - -#: src/properties.cpp:361 -msgid "The audio's tempo." -msgstr "" - -#: src/properties.cpp:362 -msgid "Instrument" -msgstr "" - -#: src/properties.cpp:362 -msgid "The musical instrument." -msgstr "" - -#: src/properties.cpp:363 -msgid "Intro Time" -msgstr "" - -#: src/properties.cpp:363 -msgid "The duration of lead time for queuing music." -msgstr "" - -#: src/properties.cpp:364 -msgid "Out Cue" -msgstr "" - -#: src/properties.cpp:364 -msgid "The time at which to fade out." -msgstr "" - -#: src/properties.cpp:365 -#, fuzzy -msgid "Relative Timestamp" -msgstr "Kuvan aikaleima" - -#: src/properties.cpp:365 -msgid "The start time of the media inside the audio project." -msgstr "" - -#: src/properties.cpp:366 -msgid "Loop" -msgstr "" - -#: src/properties.cpp:366 -msgid "When true, the clip can be looped seemlessly." -msgstr "" - -#: src/properties.cpp:367 -msgid "Number Of Beats" -msgstr "" - -#: src/properties.cpp:367 -msgid "The number of beats." -msgstr "" - -#: src/properties.cpp:368 -msgid "Key" -msgstr "" - -#: src/properties.cpp:368 -msgid "" -"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." -msgstr "" - -#: src/properties.cpp:369 -#, fuzzy -msgid "Stretch Mode" -msgstr "Makrotila" - -#: src/properties.cpp:369 -msgid "" -"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " -"Splice, Hybrid." -msgstr "" - -#: src/properties.cpp:370 -msgid "Time Scale Parameters" -msgstr "" - -#: src/properties.cpp:370 -msgid "Additional parameters for Time-Scale stretch mode." -msgstr "" - -#: src/properties.cpp:371 -msgid "Resample Parameters" -msgstr "" - -#: src/properties.cpp:371 -msgid "Additional parameters for Resample stretch mode." -msgstr "" - -#: src/properties.cpp:372 -msgid "Beat Splice Parameters" -msgstr "" - -#: src/properties.cpp:372 -msgid "Additional parameters for Beat Splice stretch mode." -msgstr "" - -#: src/properties.cpp:373 -msgid "Time Signature" -msgstr "" - -#: src/properties.cpp:373 -msgid "" -"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " -"12/8, other." -msgstr "" - -#: src/properties.cpp:374 -#, fuzzy -msgid "Scale Type" -msgstr "Kuvan tyyppi" - -#: src/properties.cpp:374 -msgid "" -"The musical scale used in the music. One of: Major, Minor, Both, Neither. " -"Neither is most often used for instruments with no associated scale, such as " -"drums." -msgstr "" - -#: src/properties.cpp:381 src/tags.cpp:1071 -#, fuzzy -msgid "Camera Serial Number" -msgstr "Kameran sarjanumero" - -#: src/properties.cpp:381 -#, fuzzy -msgid "Camera Serial Number." -msgstr "Kameran sarjanumero" - -#: src/properties.cpp:382 -msgid "Date Acquired" -msgstr "" - -#: src/properties.cpp:382 -msgid "Date Acquired." -msgstr "" - -#: src/properties.cpp:383 -#, fuzzy -msgid "Flash Manufacturer" -msgstr "Valmistaja" - -#: src/properties.cpp:383 -#, fuzzy -msgid "Flash Manufacturer." -msgstr "Linssin valmistaja" - -#: src/properties.cpp:384 -#, fuzzy -msgid "Flash Model." -msgstr "Salaman malli" - -#: src/properties.cpp:385 -msgid "Last Keyword IPTC" -msgstr "" - -#: src/properties.cpp:385 -msgid "Last Keyword IPTC." -msgstr "" - -#: src/properties.cpp:386 -msgid "Last Keyword XMP" -msgstr "" - -#: src/properties.cpp:386 -#, fuzzy -msgid "Last Keyword XMP." -msgstr "Asiasanat" - -#: src/properties.cpp:387 -msgid "Lens Manufacturer" -msgstr "Linssin valmistaja" - -#: src/properties.cpp:387 -msgid "Lens Manufacturer." -msgstr "Linssin valmistaja" - -#: src/properties.cpp:388 -msgid "Lens Model." -msgstr "Linssin malli" - -#: src/properties.cpp:389 -msgid "Rating Percent" -msgstr "" - -#: src/properties.cpp:389 -msgid "Rating Percent." -msgstr "" - -#: src/properties.cpp:395 -msgid "Keywords." -msgstr "Asiasanat" - -#: src/properties.cpp:396 -#, fuzzy -msgid "PDF Version" -msgstr "Ohjelman versio" - -#: src/properties.cpp:396 -msgid "The PDF file version (for example: 1.0, 1.3, and so on)." -msgstr "" - -#: src/properties.cpp:397 -msgid "Producer" -msgstr "" - -#: src/properties.cpp:397 -msgid "The name of the tool that created the PDF document." -msgstr "" - -#: src/properties.cpp:403 -msgid "Authors Position" -msgstr "" - -#: src/properties.cpp:403 -msgid "By-line title." -msgstr "" - -#: src/properties.cpp:404 -msgid "Caption Writer" -msgstr "" - -#: src/properties.cpp:404 -msgid "Writer/editor." -msgstr "" - -#: src/properties.cpp:405 -msgid "Category. Limited to 3 7-bit ASCII characters." -msgstr "" - -#: src/properties.cpp:406 -msgid "City." -msgstr "" - -#: src/properties.cpp:407 -msgid "Country/primary location." -msgstr "" - -#: src/properties.cpp:408 -msgid "Credit." -msgstr "" - -#: src/properties.cpp:409 -msgid "" -"The date the intellectual content of the document was created (rather than " -"the creation date of the physical representation), following IIM " -"conventions. For example, a photo taken during the American Civil War would " -"have a creation date during that epoch (1861-1865) rather than the date the " -"photo was digitized for archiving." -msgstr "" - -#: src/properties.cpp:413 -msgid "Headline." -msgstr "" - -#: src/properties.cpp:414 -msgid "Special instructions." -msgstr "" - -#: src/properties.cpp:415 -#, fuzzy -msgid "Source." -msgstr "Kuvalähde" - -#: src/properties.cpp:416 -#, fuzzy -msgid "State" -msgstr "Ohjelmisto" - -#: src/properties.cpp:416 -msgid "Province/state." -msgstr "" - -#: src/properties.cpp:417 -msgid "Supplemental category." -msgstr "" - -#: src/properties.cpp:418 -msgid "Original transmission reference." -msgstr "" - -#: src/properties.cpp:419 -msgid "Urgency. Valid range is 1-8." -msgstr "" - -#: src/properties.cpp:427 -msgid "inches" -msgstr "tuumaa" - -#: src/properties.cpp:428 src/tags.cpp:242 -msgid "cm" -msgstr "cm" - -#: src/properties.cpp:432 -msgid "Auto Brightness" -msgstr "" - -#: src/properties.cpp:432 -msgid "When true, \"Brightness\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:433 -#, fuzzy -msgid "Auto Contrast" -msgstr "Kontrasti" - -#: src/properties.cpp:433 -msgid "When true, \"Contrast\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:434 -msgid "Auto Exposure" -msgstr "Automaattivalotus" - -#: src/properties.cpp:434 -msgid "When true, \"Exposure\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:435 -msgid "Auto Shadows" -msgstr "" - -#: src/properties.cpp:435 -msgid "When true,\"Shadows\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:436 -msgid "Blue Hue" -msgstr "" - -#: src/properties.cpp:436 -msgid "\"Blue Hue\" setting. Range -100 to 100." -msgstr "" - -#: src/properties.cpp:437 -#, fuzzy -msgid "Blue Saturation" -msgstr "Värikylläisyys" - -#: src/properties.cpp:437 -msgid "\"Blue Saturation\" setting. Range -100 to +100." -msgstr "" - -#: src/properties.cpp:438 -msgid "\"Brightness\" setting. Range 0 to +150." -msgstr "" - -#: src/properties.cpp:439 -#, fuzzy -msgid "Camera Profile" -msgstr "Kameran malli" - -#: src/properties.cpp:439 -#, fuzzy -msgid "\"Camera Profile\" setting." -msgstr "Kameran asetukset" - -#: src/properties.cpp:440 -msgid "Chromatic Aberration Blue" -msgstr "" - -#: src/properties.cpp:440 -msgid "" -"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." -msgstr "" - -#: src/properties.cpp:441 -msgid "Chromatic Aberration Red" -msgstr "" - -#: src/properties.cpp:441 -msgid "" -"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." -msgstr "" - -#: src/properties.cpp:442 -msgid "Color Noise Reduction" -msgstr "" - -#: src/properties.cpp:442 -msgid "\"Color Noise Reducton\" setting. Range 0 to +100." -msgstr "" - -#: src/properties.cpp:443 -msgid "\"Contrast\" setting. Range -50 to +100." -msgstr "" - -#: src/properties.cpp:444 -msgid "When \"Has Crop\" is true, top of crop rectangle" -msgstr "" - -#: src/properties.cpp:445 -msgid "When \"Has Crop\" is true, left of crop rectangle." -msgstr "" - -#: src/properties.cpp:446 -msgid "Crop Bottom" -msgstr "" - -#: src/properties.cpp:446 -msgid "When \"Has Crop\" is true, bottom of crop rectangle." -msgstr "" - -#: src/properties.cpp:447 -#, fuzzy -msgid "Crop Right" -msgstr "Omistusoikeus" - -#: src/properties.cpp:447 -msgid "When \"Has Crop\" is true, right of crop rectangle." -msgstr "" - -#: src/properties.cpp:448 -msgid "Crop Angle" -msgstr "" - -#: src/properties.cpp:448 -msgid "When \"Has Crop\" is true, angle of crop rectangle." -msgstr "" - -#: src/properties.cpp:449 -msgid "Width of resulting cropped image in CropUnits units." -msgstr "" - -#: src/properties.cpp:450 -msgid "Height of resulting cropped image in CropUnits units." -msgstr "" - -#: src/properties.cpp:451 -msgid "Crop Units" -msgstr "" - -#: src/properties.cpp:451 -msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" -msgstr "" - -#: src/properties.cpp:452 -msgid "\"Exposure\" setting. Range -4.0 to +4.0." -msgstr "" - -#: src/properties.cpp:453 -msgid "GreenHue" -msgstr "" - -#: src/properties.cpp:453 -msgid "\"Green Hue\" setting. Range -100 to +100." -msgstr "" - -#: src/properties.cpp:454 -#, fuzzy -msgid "Green Saturation" -msgstr "Värikylläisyys" - -#: src/properties.cpp:454 -msgid "\"Green Saturation\" setting. Range -100 to +100." -msgstr "" - -#: src/properties.cpp:455 -msgid "Has Crop" -msgstr "" - -#: src/properties.cpp:455 -msgid "When true, image has a cropping rectangle." -msgstr "" - -#: src/properties.cpp:456 -#, fuzzy -msgid "Has Settings" -msgstr "Asetukset" - -#: src/properties.cpp:456 -msgid "When true, non-default camera raw settings." -msgstr "" - -#: src/properties.cpp:457 -msgid "Luminance Smoothing" -msgstr "" - -#: src/properties.cpp:457 -msgid "\"Luminance Smoothing\" setting. Range 0 to +100." -msgstr "" - -#: src/properties.cpp:458 -#, fuzzy -msgid "Raw File Name" -msgstr "Tiedostonimi" - -#: src/properties.cpp:458 -msgid "File name of raw file (not a complete path)." -msgstr "" - -#: src/properties.cpp:459 -msgid "Red Hue" -msgstr "" - -#: src/properties.cpp:459 -msgid "\"Red Hue\" setting. Range -100 to +100." -msgstr "" - -#: src/properties.cpp:460 -#, fuzzy -msgid "Red Saturation" -msgstr "Värikylläisyys" - -#: src/properties.cpp:460 -msgid "\"Red Saturation\" setting. Range -100 to +100." -msgstr "" - -#: src/properties.cpp:461 -msgid "\"Saturation\" setting. Range -100 to +100." -msgstr "" - -#: src/properties.cpp:462 -#, fuzzy -msgid "Shadows" -msgstr "Varjo" - -#: src/properties.cpp:462 -msgid "\"Shadows\" setting. Range 0 to +100." -msgstr "" - -#: src/properties.cpp:463 -msgid "Shadow Tint" -msgstr "" - -#: src/properties.cpp:463 -msgid "\"Shadow Tint\" setting. Range -100 to +100." -msgstr "" - -#: src/properties.cpp:464 -msgid "\"Sharpness\" setting. Range 0 to +100." -msgstr "" - -#: src/properties.cpp:465 -msgid "\"Temperature\" setting. Range 2000 to 50000." -msgstr "" - -#: src/properties.cpp:466 -msgid "Tint" -msgstr "" - -#: src/properties.cpp:466 -msgid "\"Tint\" setting. Range -150 to +150." -msgstr "" - -#: src/properties.cpp:467 -#, fuzzy -msgid "Tone Curve" -msgstr "Kontrasti" - -#: src/properties.cpp:467 -msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." -msgstr "" - -#: src/properties.cpp:468 -#, fuzzy -msgid "Tone Curve Name" -msgstr "Omistajan nimi" - -#: src/properties.cpp:468 -msgid "" -"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " -"Contrast, Strong Contrast, Custom or a user-defined preset name." -msgstr "" - -#: src/properties.cpp:470 -msgid "Version of Camera Raw plugin." -msgstr "" - -#: src/properties.cpp:471 -msgid "Vignette Amount" -msgstr "" - -#: src/properties.cpp:471 -msgid "\"Vignetting Amount\" setting. Range -100 to +100." -msgstr "" - -#: src/properties.cpp:472 -msgid "Vignette Midpoint" -msgstr "" - -#: src/properties.cpp:472 -msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." -msgstr "" - -#: src/properties.cpp:473 -msgid "" -"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " -"Tungsten, Fluorescent, Flash, Custom" -msgstr "" - -#: src/properties.cpp:480 -msgid "TIFF tag 256, 0x100. Image width in pixels." -msgstr "" - -#: src/properties.cpp:481 src/tags.cpp:420 -#, fuzzy -msgid "Image Length" -msgstr "Polttoväli" - -#: src/properties.cpp:481 -msgid "TIFF tag 257, 0x101. Image height in pixels." -msgstr "" - -#: src/properties.cpp:482 -msgid "Bits Per Sample" -msgstr "" - -#: src/properties.cpp:482 -msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." -msgstr "" - -#: src/properties.cpp:483 src/tags.cpp:430 -msgid "Compression" -msgstr "Pakkaus" - -#: src/properties.cpp:483 -msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." -msgstr "" - -#: src/properties.cpp:484 src/tags.cpp:436 -msgid "Photometric Interpretation" -msgstr "" - -#: src/properties.cpp:484 -msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." -msgstr "" - -#: src/properties.cpp:485 -msgid "" -"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " -"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " -"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " -"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " -"0th column at bottom 8 = 0th row at left, 0th column at bottom" -msgstr "" - -#: src/properties.cpp:494 -msgid "Samples Per Pixel" -msgstr "" - -#: src/properties.cpp:494 -msgid "TIFF tag 277, 0x115. Number of components per pixel." -msgstr "" - -#: src/properties.cpp:495 src/tags.cpp:510 -msgid "Planar Configuration" -msgstr "" - -#: src/properties.cpp:495 -msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." -msgstr "" - -#: src/properties.cpp:496 -msgid "YCbCr Sub Sampling" -msgstr "" - -#: src/properties.cpp:496 -msgid "" -"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " -"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" -msgstr "" - -#: src/properties.cpp:498 src/tags.cpp:713 -msgid "YCbCr Positioning" -msgstr "" - -#: src/properties.cpp:498 -msgid "" -"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " -"centered; 2 = co-sited." -msgstr "" - -#: src/properties.cpp:500 -#, fuzzy -msgid "X Resolution" -msgstr "Resoluutioyksikkö" - -#: src/properties.cpp:500 -msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." -msgstr "" - -#: src/properties.cpp:501 -#, fuzzy -msgid "Y Resolution" -msgstr "Resoluutioyksikkö" - -#: src/properties.cpp:501 -msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." -msgstr "" - -#: src/properties.cpp:502 src/tags.cpp:528 -msgid "Resolution Unit" -msgstr "Resoluutioyksikkö" - -#: src/properties.cpp:502 -msgid "" -"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " -"of: 2 = inches; 3 = centimeters." -msgstr "" - -#: src/properties.cpp:504 src/tags.cpp:533 -msgid "Transfer Function" -msgstr "" - -#: src/properties.cpp:504 -msgid "" -"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " -"with 3 * 256 entries." -msgstr "" - -#: src/properties.cpp:506 src/tags.cpp:565 -#, fuzzy -msgid "White Point" -msgstr "AF-piste" - -#: src/properties.cpp:506 -msgid "TIFF tag 318, 0x13E. Chromaticity of white point." -msgstr "" - -#: src/properties.cpp:507 src/tags.cpp:570 -msgid "Primary Chromaticities" -msgstr "" - -#: src/properties.cpp:507 -msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." -msgstr "" - -#: src/properties.cpp:508 -msgid "" -"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." -msgstr "" - -#: src/properties.cpp:509 -#, fuzzy -msgid "Reference Black White" -msgstr "Mustavalkoinen" - -#: src/properties.cpp:509 -msgid "TIFF tag 532, 0x214. Reference black and white point values." -msgstr "" - -#: src/properties.cpp:510 src/tags.cpp:545 -msgid "Date and Time" -msgstr "Päiväys ja aika" - -#: src/properties.cpp:510 -msgid "" -"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " -"and time of image creation (no time zone in EXIF), stored in ISO 8601 " -"format, not the original EXIF format. This property includes the value for " -"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" -"ModifyDate." -msgstr "" - -#: src/properties.cpp:516 src/tags.cpp:458 -#, fuzzy -msgid "Image Description" -msgstr "Kuvan vakautus" - -#: src/properties.cpp:516 -msgid "" -"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " -"in XMP as dc:description." -msgstr "" - -#: src/properties.cpp:517 -msgid "Make" -msgstr "" - -#: src/properties.cpp:517 -msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." -msgstr "" - -#: src/properties.cpp:518 -msgid "TIFF tag 272, 0x110. Model name or number of equipment." -msgstr "" - -#: src/properties.cpp:519 -msgid "" -"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " -"property is stored in XMP as xmp:CreatorTool. " -msgstr "" - -#: src/properties.cpp:521 -msgid "" -"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " -"property is stored in XMP as the first item in the dc:creator array." -msgstr "" - -#: src/properties.cpp:523 -msgid "" -"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " -"in XMP as dc:rights." -msgstr "" - -#: src/properties.cpp:530 src/tags.cpp:1598 -#, fuzzy -msgid "Exif Version" -msgstr "Ohjelman versio" - -#: src/properties.cpp:530 -msgid "EXIF tag 36864, 0x9000. EXIF version number." -msgstr "" - -#: src/properties.cpp:531 -#, fuzzy -msgid "Flashpix Version" -msgstr "Firmwaren versio" - -#: src/properties.cpp:531 -msgid "EXIF tag 40960, 0xA000. Version of FlashPix." -msgstr "" - -#: src/properties.cpp:532 -msgid "EXIF tag 40961, 0xA001. Color space information" -msgstr "" - -#: src/properties.cpp:533 src/tags.cpp:1609 -msgid "Components Configuration" -msgstr "" - -#: src/properties.cpp:533 -msgid "" -"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " -"compressed data), 1 2 3 0 (other cases)." -msgstr "" - -#: src/properties.cpp:535 src/tags.cpp:818 -msgid "Compressed Bits Per Pixel" -msgstr "" - -#: src/properties.cpp:535 -msgid "" -"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " -"indicated in unit bits per pixel." -msgstr "" - -#: src/properties.cpp:537 src/tags.cpp:1693 -msgid "Pixel X Dimension" -msgstr "" - -#: src/properties.cpp:537 -msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." -msgstr "" - -#: src/properties.cpp:538 src/tags.cpp:1700 -msgid "Pixel Y Dimension" -msgstr "" - -#: src/properties.cpp:538 -msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." -msgstr "" - -#: src/properties.cpp:539 src/tags.cpp:1667 -msgid "User Comment" -msgstr "Oma kommentti" - -#: src/properties.cpp:539 -msgid "EXIF tag 37510, 0x9286. Comments from user." -msgstr "" - -#: src/properties.cpp:540 src/tags.cpp:1709 -msgid "Related Sound File" -msgstr "" - -#: src/properties.cpp:540 -msgid "" -"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." -msgstr "" - -#: src/properties.cpp:541 -#, fuzzy -msgid "Date and Time Original" -msgstr "Päiväys ja aika" - -#: src/properties.cpp:541 -msgid "" -"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " -"time when original image was generated, in ISO 8601 format. Includes the " -"EXIF SubSecTimeOriginal data." -msgstr "" - -#: src/properties.cpp:544 -#, fuzzy -msgid "Date and Time Digitized" -msgstr "Päiväys ja aika" - -#: src/properties.cpp:544 -msgid "" -"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " -"time when image was stored as digital data, can be the same as " -"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " -"format. Includes the EXIF SubSecTimeDigitized data." -msgstr "" - -#: src/properties.cpp:548 -msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." -msgstr "" - -#: src/properties.cpp:549 -#, fuzzy -msgid "F Number" -msgstr "F-luku" - -#: src/properties.cpp:549 -msgid "EXIF tag 33437, 0x829D. F number." -msgstr "" - -#: src/properties.cpp:550 -msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." -msgstr "" - -#: src/properties.cpp:551 src/tags.cpp:800 src/tags.cpp:1552 -msgid "Spectral Sensitivity" -msgstr "" - -#: src/properties.cpp:551 -msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." -msgstr "" - -#: src/properties.cpp:552 -#, fuzzy -msgid "ISOSpeedRatings" -msgstr "ISO-herkkyys" - -#: src/properties.cpp:552 -msgid "" -"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " -"specified in ISO 12232." -msgstr "" - -#: src/properties.cpp:554 src/tags.cpp:807 -msgid "OECF" -msgstr "" - -#: src/properties.cpp:554 -msgid "" -"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " -"ISO 14524." -msgstr "" - -#: src/properties.cpp:555 -msgid "" -"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " -"specification." -msgstr "" - -#: src/properties.cpp:556 -msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." -msgstr "" - -#: src/properties.cpp:557 src/tags.cpp:821 -#, fuzzy -msgid "Brightness Value" -msgstr "Aukko" - -#: src/properties.cpp:557 -msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." -msgstr "" - -#: src/properties.cpp:558 -msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." -msgstr "" - -#: src/properties.cpp:559 -#, fuzzy -msgid "Maximum Aperture Value" -msgstr "Aukko" - -#: src/properties.cpp:559 -msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." -msgstr "" - -#: src/properties.cpp:560 -msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." -msgstr "" - -#: src/properties.cpp:561 -msgid "EXIF tag 37383, 0x9207. Metering mode." -msgstr "" - -#: src/properties.cpp:562 -msgid "EXIF tag 37384, 0x9208. Light source." -msgstr "" - -#: src/properties.cpp:563 -msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." -msgstr "" - -#: src/properties.cpp:564 -msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." -msgstr "" - -#: src/properties.cpp:565 src/tags.cpp:1659 -#, fuzzy -msgid "Subject Area" -msgstr "Kohteen etäisyys" - -#: src/properties.cpp:565 -msgid "" -"EXIF tag 37396, 0x9214. The location and area of the main subject in the " -"overall scene." -msgstr "" - -#: src/properties.cpp:566 src/tags.cpp:829 src/tags.cpp:1724 -#, fuzzy -msgid "Flash Energy" -msgstr "Salaman tila" - -#: src/properties.cpp:566 -msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." -msgstr "" - -#: src/properties.cpp:567 src/tags.cpp:830 src/tags.cpp:1728 -msgid "Spatial Frequency Response" -msgstr "" - -#: src/properties.cpp:567 -msgid "" -"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " -"as specified in ISO 12233." -msgstr "" - -#: src/properties.cpp:569 src/tags.cpp:832 -msgid "Focal Plane X Resolution" -msgstr "" - -#: src/properties.cpp:569 -msgid "" -"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " -"unit." -msgstr "" - -#: src/properties.cpp:570 src/tags.cpp:833 -msgid "Focal Plane Y Resolution" -msgstr "" - -#: src/properties.cpp:570 -msgid "" -"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " -"unit." -msgstr "" - -#: src/properties.cpp:571 src/tags.cpp:834 src/tags.cpp:1741 -#, fuzzy -msgid "Focal Plane Resolution Unit" -msgstr "Resoluutioyksikkö" - -#: src/properties.cpp:571 -msgid "" -"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " -"FocalPlaneYResolution." -msgstr "" - -#: src/properties.cpp:572 src/tags.cpp:838 src/tags.cpp:1745 -#, fuzzy -msgid "Subject Location" -msgstr "Kohteen etäisyys" - -#: src/properties.cpp:572 -msgid "" -"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " -"value is the horizontal pixel and the second value is the vertical pixel at " -"which the main subject appears." -msgstr "" - -#: src/properties.cpp:575 src/tags.cpp:839 -#, fuzzy -msgid "Exposure Index" -msgstr "Valotustila" - -#: src/properties.cpp:575 -msgid "EXIF tag 41493, 0xA215. Exposure index of input device." -msgstr "" - -#: src/properties.cpp:576 src/tags.cpp:844 src/tags.cpp:1756 -msgid "Sensing Method" -msgstr "" - -#: src/properties.cpp:576 -msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." -msgstr "" - -#: src/properties.cpp:577 -msgid "EXIF tag 41728, 0xA300. Indicates image source." -msgstr "" - -#: src/properties.cpp:578 src/tags.cpp:1764 -#, fuzzy -msgid "Scene Type" -msgstr "Linssin tyyppi" - -#: src/properties.cpp:578 -msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." -msgstr "" - -#: src/properties.cpp:579 src/tags.cpp:754 -msgid "CFA Pattern" -msgstr "" - -#: src/properties.cpp:579 -msgid "" -"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " -"sense." -msgstr "" - -#: src/properties.cpp:580 src/tags.cpp:1774 -msgid "Custom Rendered" -msgstr "" - -#: src/properties.cpp:580 -msgid "" -"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " -"data." -msgstr "" - -#: src/properties.cpp:581 -msgid "" -"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " -"shot." -msgstr "" - -#: src/properties.cpp:582 -msgid "" -"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " -"was shot." -msgstr "" - -#: src/properties.cpp:583 src/tags.cpp:1788 -#, fuzzy -msgid "Digital Zoom Ratio" -msgstr "Digitaalinen zoom" - -#: src/properties.cpp:583 -msgid "" -"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " -"shot." -msgstr "" - -#: src/properties.cpp:584 src/tags.cpp:1793 -#, fuzzy -msgid "Focal Length In 35mm Film" -msgstr "Polttoväli" - -#: src/properties.cpp:584 -msgid "" -"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " -"35mm film camera, in mm. A value of 0 means the focal length is unknown. " -"Note that this tag differs from the FocalLength tag." -msgstr "" - -#: src/properties.cpp:587 src/tags.cpp:1799 -msgid "Scene Capture Type" -msgstr "" - -#: src/properties.cpp:587 -msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." -msgstr "" - -#: src/properties.cpp:588 src/tags.cpp:1804 -#, fuzzy -msgid "Gain Control" -msgstr "Täysautomatiikka" - -#: src/properties.cpp:588 -msgid "" -"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " -"adjustment." -msgstr "" - -#: src/properties.cpp:589 -msgid "" -"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " -"applied by the camera." -msgstr "" - -#: src/properties.cpp:590 -msgid "" -"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " -"applied by the camera." -msgstr "" - -#: src/properties.cpp:591 -msgid "" -"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " -"applied by the camera." -msgstr "" - -#: src/properties.cpp:592 src/tags.cpp:1819 -msgid "Device Setting Description" -msgstr "" - -#: src/properties.cpp:592 -msgid "" -"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " -"conditions of a particular camera model." -msgstr "" - -#: src/properties.cpp:593 src/tags.cpp:1824 -#, fuzzy -msgid "Subject Distance Range" -msgstr "Kohteen etäisyys" - -#: src/properties.cpp:593 -msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." -msgstr "" - -#: src/properties.cpp:594 src/tags.cpp:1827 -#, fuzzy -msgid "Image Unique ID" -msgstr "Kuvan koko" - -#: src/properties.cpp:594 -msgid "" -"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " -"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " -"and 128-bit fixed length." -msgstr "" - -#: src/properties.cpp:596 src/tags.cpp:1927 -#, fuzzy -msgid "GPS Version ID" -msgstr "Ohjelman versio" - -#: src/properties.cpp:596 -msgid "" -"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " -"period separators. The current value is \"2.0.0.0\"." -msgstr "" - -#: src/properties.cpp:598 src/tags.cpp:1938 -msgid "GPS Latitude" -msgstr "" - -#: src/properties.cpp:598 -msgid "" -"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." -msgstr "" - -#: src/properties.cpp:599 src/tags.cpp:1950 -msgid "GPS Longitude" -msgstr "" - -#: src/properties.cpp:599 -msgid "" -"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." -msgstr "" - -#: src/properties.cpp:600 src/tags.cpp:1958 -msgid "GPS Altitude Reference" -msgstr "" - -#: src/properties.cpp:600 -msgid "" -"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." -msgstr "" - -#: src/properties.cpp:601 src/tags.cpp:1966 -msgid "GPS Altitude" -msgstr "" - -#: src/properties.cpp:601 -msgid "GPS tag 6, 0x06. Indicates altitude in meters." -msgstr "" - -#: src/properties.cpp:602 src/tags.cpp:1970 -msgid "GPS Time Stamp" -msgstr "" - -#: src/properties.cpp:602 -msgid "" -"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " -"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " -"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " -"present, the date component for the XMP should be taken from exif:" -"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " -"no date is available, do not write exif:GPSTimeStamp to XMP." -msgstr "" - -#: src/properties.cpp:608 src/tags.cpp:1975 -msgid "GPS Satellites" -msgstr "" - -#: src/properties.cpp:608 -msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." -msgstr "" - -#: src/properties.cpp:609 src/tags.cpp:1982 -msgid "GPS Status" -msgstr "" - -#: src/properties.cpp:609 -msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." -msgstr "" - -#: src/properties.cpp:610 src/tags.cpp:1987 -#, fuzzy -msgid "GPS Measure Mode" -msgstr "Valotustila" - -#: src/properties.cpp:610 -msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." -msgstr "" - -#: src/properties.cpp:611 -msgid "GPS DOP" -msgstr "" - -#: src/properties.cpp:611 -msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." -msgstr "" - -#: src/properties.cpp:612 src/tags.cpp:1995 -msgid "GPS Speed Reference" -msgstr "" - -#: src/properties.cpp:612 -msgid "GPS tag 12, 0x0C. Units used to speed measurement." -msgstr "" - -#: src/properties.cpp:613 src/tags.cpp:1999 -#, fuzzy -msgid "GPS Speed" -msgstr "ISO-herkkyys" - -#: src/properties.cpp:613 -msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." -msgstr "" - -#: src/properties.cpp:614 -msgid "GPS Track Reference" -msgstr "" - -#: src/properties.cpp:614 -msgid "GPS tag 14, 0x0E. Reference for movement direction." -msgstr "" - -#: src/properties.cpp:615 src/tags.cpp:2006 -msgid "GPS Track" -msgstr "" - -#: src/properties.cpp:615 -msgid "" -"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." -msgstr "" - -#: src/properties.cpp:616 src/tags.cpp:2010 -msgid "GPS Image Direction Reference" -msgstr "" - -#: src/properties.cpp:616 -msgid "GPS tag 16, 0x10. Reference for image direction." -msgstr "" - -#: src/properties.cpp:617 src/tags.cpp:2014 -#, fuzzy -msgid "GPS Image Direction" -msgstr "Kuvan numero" - -#: src/properties.cpp:617 -msgid "" -"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " -"359.99." -msgstr "" - -#: src/properties.cpp:618 src/tags.cpp:2018 -msgid "GPS Map Datum" -msgstr "" - -#: src/properties.cpp:618 -msgid "GPS tag 18, 0x12. Geodetic survey data." -msgstr "" - -#: src/properties.cpp:619 src/tags.cpp:2026 -msgid "GPS Destination Latitude" -msgstr "" - -#: src/properties.cpp:619 -msgid "" -"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " -"destination latitude." -msgstr "" - -#: src/properties.cpp:620 src/tags.cpp:2038 -msgid "GPS Destination Longitude" -msgstr "" - -#: src/properties.cpp:620 -msgid "" -"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " -"longitude." -msgstr "" - -#: src/properties.cpp:621 src/tags.cpp:2045 -msgid "GPS Destination Bearing Reference" -msgstr "" - -#: src/properties.cpp:621 -msgid "GPS tag 23, 0x17. Reference for movement direction." -msgstr "" - -#: src/properties.cpp:622 src/tags.cpp:2049 -msgid "GPS Destination Bearing" -msgstr "" - -#: src/properties.cpp:622 -msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." -msgstr "" - -#: src/properties.cpp:623 -msgid "GPS Destination Distance Refefrence" -msgstr "" - -#: src/properties.cpp:623 -msgid "GPS tag 25, 0x19. Units used for speed measurement." -msgstr "" - -#: src/properties.cpp:624 src/tags.cpp:2057 -#, fuzzy -msgid "GPS Destination Distance" -msgstr "Kohteen etäisyys" - -#: src/properties.cpp:624 -msgid "GPS tag 26, 0x1A. Distance to destination." -msgstr "" - -#: src/properties.cpp:625 src/tags.cpp:2060 -msgid "GPS Processing Method" -msgstr "" - -#: src/properties.cpp:625 -msgid "" -"GPS tag 27, 0x1B. A character string recording the name of the method used " -"for location finding." -msgstr "" - -#: src/properties.cpp:626 src/tags.cpp:2065 -msgid "GPS Area Information" -msgstr "" - -#: src/properties.cpp:626 -msgid "" -"GPS tag 28, 0x1C. A character string recording the name of the GPS area." -msgstr "" - -#: src/properties.cpp:627 src/tags.cpp:2073 -msgid "GPS Differential" -msgstr "" - -#: src/properties.cpp:627 -msgid "" -"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " -"the GPS receiver." -msgstr "" - -#: src/properties.cpp:633 -msgid "" -"A description of the lens used to take the photograph. For example, \"70-200 " -"mm f/2.8-4.0\"." -msgstr "" - -#: src/properties.cpp:634 -#, fuzzy -msgid "SerialNumber" -msgstr "Sarjanumero" - -#: src/properties.cpp:634 -msgid "" -"The serial number of the camera or camera body used to take the photograph." -msgstr "" - -#: src/properties.cpp:640 -msgid "Contact Info-City" -msgstr "" - -#: src/properties.cpp:640 -msgid "The contact information city part." -msgstr "" - -#: src/properties.cpp:641 -msgid "Contact Info-Country" -msgstr "" - -#: src/properties.cpp:641 -msgid "The contact information country part." -msgstr "" - -#: src/properties.cpp:642 -msgid "Contact Info-Address" -msgstr "" - -#: src/properties.cpp:642 -msgid "" -"The contact information address part. Comprises an optional company name and " -"all required information to locate the building or postbox to which mail " -"should be sent." -msgstr "" - -#: src/properties.cpp:644 -msgid "Contact Info-Postal Code" -msgstr "" - -#: src/properties.cpp:644 -msgid "The contact information part denoting the local postal code." -msgstr "" - -#: src/properties.cpp:645 -msgid "Contact Info-State/Province" -msgstr "" - -#: src/properties.cpp:645 -msgid "" -"The contact information part denoting regional information like state or " -"province." -msgstr "" - -#: src/properties.cpp:646 -msgid "Contact Info-Email" -msgstr "" - -#: src/properties.cpp:646 -msgid "The contact information email address part." -msgstr "" - -#: src/properties.cpp:647 -msgid "Contact Info-Phone" -msgstr "" - -#: src/properties.cpp:647 -msgid "The contact information phone number part." -msgstr "" - -#: src/properties.cpp:648 -msgid "Contact Info-Web URL" -msgstr "" - -#: src/properties.cpp:648 -msgid "The contact information web address part." -msgstr "" - -#: src/properties.cpp:649 -msgid "" -"Code of the country the content is focussing on -- either the country shown " -"in visual media or referenced in text or audio media. This element is at the " -"top/first level of a top-down geographical hierarchy. The code should be " -"taken from ISO 3166 two or three letter code. The full name of a country " -"should go to the \"Country\" element." -msgstr "" - -#: src/properties.cpp:653 -msgid "Creator's Contact Info" -msgstr "" - -#: src/properties.cpp:653 -msgid "" -"The creator's contact information provides all necessary information to get " -"in contact with the creator of this news object and comprises a set of sub-" -"properties for proper addressing." -msgstr "" - -#: src/properties.cpp:655 -msgid "Intellectual Genre" -msgstr "" - -#: src/properties.cpp:655 -msgid "" -"Describes the nature, intellectual or journalistic characteristic of a news " -"object, not specifically its content." -msgstr "" - -#: src/properties.cpp:657 -msgid "" -"Name of a location the content is focussing on -- either the location shown " -"in visual media or referenced by text or audio media. This location name " -"could either be the name of a sublocation to a city or the name of a well " -"known location or (natural) monument outside a city. In the sense of a " -"sublocation to a city this element is at the fourth level of a top-down " -"geographical hierarchy." -msgstr "" - -#: src/properties.cpp:662 -msgid "IPTC Scene" -msgstr "" - -#: src/properties.cpp:662 -msgid "" -"Describes the scene of a photo content. Specifies one or more terms from the " -"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " -"in an unordered list." -msgstr "" - -#: src/properties.cpp:664 -#, fuzzy -msgid "IPTC Subject Code" -msgstr "Kohteen etäisyys" - -#: src/properties.cpp:664 -msgid "" -"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " -"to categorize the content. Each Subject is represented as a string of 8 " -"digits in an unordered list." -msgstr "" - -#: src/properties.cpp:671 -msgid "Additional model info" -msgstr "" - -#: src/properties.cpp:671 -msgid "" -"Information about the ethnicity and other facts of the model(s) in a model-" -"released image." -msgstr "" - -#: src/properties.cpp:672 -msgid "Code of featured Organisation" -msgstr "" - -#: src/properties.cpp:672 -msgid "" -"Code from controlled vocabulary for identyfing the organisation or company " -"which is featured in the image." -msgstr "" - -#: src/properties.cpp:673 -msgid "Controlled Vocabulary Term" -msgstr "" - -#: src/properties.cpp:673 -msgid "" -"A term to describe the content of the image by a value from a Controlled " -"Vocabulary." -msgstr "" - -#: src/properties.cpp:674 -#, fuzzy -msgid "Model age" -msgstr "Malli" - -#: src/properties.cpp:674 -msgid "" -"Age of the human model(s) at the time this image was taken in a model " -"released image." -msgstr "" - -#: src/properties.cpp:675 -msgid "Name of featured Organisation" -msgstr "" - -#: src/properties.cpp:675 -msgid "Name of the organisation or company which is featured in the image." -msgstr "" - -#: src/properties.cpp:676 -msgid "Person shown" -msgstr "" - -#: src/properties.cpp:676 -msgid "Name of a person shown in the image." -msgstr "" - -#: src/properties.cpp:677 -msgid "Digital Image Identifier" -msgstr "" - -#: src/properties.cpp:677 -msgid "" -"Globally unique identifier for this digital image. It is created and applied " -"by the creator of the digital image at the time of its creation. this value " -"shall not be changed after that time." -msgstr "" - -#: src/properties.cpp:678 -msgid "Physical type of original photo" -msgstr "" - -#: src/properties.cpp:678 -msgid "The type of the source digital file." -msgstr "" - -#: src/properties.cpp:679 src/properties.cpp:935 src/properties.cpp:944 -msgid "Event" -msgstr "" - -#: src/properties.cpp:679 -msgid "Names or describes the specific event at which the photo was taken." -msgstr "" - -#: src/properties.cpp:680 -msgid "Maximum available height" -msgstr "" - -#: src/properties.cpp:680 -msgid "" -"The maximum available height in pixels of the original photo from which this " -"photo has been derived by downsizing." -msgstr "" - -#: src/properties.cpp:681 -msgid "Maximum available width" -msgstr "" - -#: src/properties.cpp:681 -msgid "" -"The maximum available width in pixels of the original photo from which this " -"photo has been derived by downsizing." -msgstr "" - -#: src/properties.cpp:682 -msgid "Registry Entry" -msgstr "" - -#: src/properties.cpp:682 -msgid "" -"Both a Registry Item Id and a Registry Organisation Id to record any " -"registration of this digital image with a registry." -msgstr "" - -#: src/properties.cpp:683 -msgid "Registry Entry-Item Identifier" -msgstr "" - -#: src/properties.cpp:683 -msgid "" -"A unique identifier created by a registry and applied by the creator of the " -"digital image. This value shall not be changed after being applied. This " -"identifier is linked to a corresponding Registry Organisation Identifier." -msgstr "" - -#: src/properties.cpp:684 -msgid "Registry Entry-Organisation Identifier" -msgstr "" - -#: src/properties.cpp:684 -msgid "" -"An identifier for the registry which issued the corresponding Registry Image " -"Id." -msgstr "" - -#: src/properties.cpp:685 -msgid "IPTC Fields Last Edited" -msgstr "" - -#: src/properties.cpp:685 -msgid "" -"The date and optionally time when any of the IPTC photo metadata fields has " -"been last edited." -msgstr "" - -#: src/properties.cpp:686 -msgid "Location shown" -msgstr "" - -#: src/properties.cpp:686 -msgid "A location shown in the image." -msgstr "" - -#: src/properties.cpp:687 -msgid "Location Created" -msgstr "" - -#: src/properties.cpp:687 -msgid "The location the photo was taken." -msgstr "" - -#: src/properties.cpp:688 -msgid "Location-City" -msgstr "" - -#: src/properties.cpp:688 -msgid "Name of the city of a location." -msgstr "" - -#: src/properties.cpp:689 -msgid "Location-Country ISO-Code" -msgstr "" - -#: src/properties.cpp:689 -msgid "The ISO code of a country of a location." -msgstr "" - -#: src/properties.cpp:690 -msgid "Location-Country Name" -msgstr "" - -#: src/properties.cpp:690 -msgid "The name of a country of a location." -msgstr "" - -#: src/properties.cpp:691 -msgid "Location-Province/State" -msgstr "" - -#: src/properties.cpp:691 -msgid "" -"The name of a subregion of a country - a province or state - of a location." -msgstr "" - -#: src/properties.cpp:692 -msgid "Location-Sublocation" -msgstr "" - -#: src/properties.cpp:692 -msgid "" -"Name of a sublocation. This sublocation name could either be the name of a " -"sublocation to a city or the name of a well known location or (natural) " -"monument outside a city." -msgstr "" - -#: src/properties.cpp:693 -msgid "Location-World Region" -msgstr "" - -#: src/properties.cpp:693 -msgid "The name of a world region of a location." -msgstr "" - -#: src/properties.cpp:694 -msgid "Artwork or object in the image" -msgstr "" - -#: src/properties.cpp:694 -msgid "A set of metadata about artwork or an object in the image." -msgstr "" - -#: src/properties.cpp:695 -msgid "Artwork or object-Copyright notice" -msgstr "" - -#: src/properties.cpp:695 -msgid "" -"Contains any necessary copyright notice for claiming the intellectual " -"property for artwork or an object in the image and should identify the " -"current owner of the copyright of this work with associated intellectual " -"property rights." -msgstr "" - -#: src/properties.cpp:696 -msgid "Artwork or object-Creator" -msgstr "" - -#: src/properties.cpp:696 -msgid "" -"Contains the name of the artist who has created artwork or an object in the " -"image. In cases where the artist could or should not be identified the name " -"of a company or organisation may be appropriate." -msgstr "" - -#: src/properties.cpp:697 -msgid "Artwork or object-Date Created" -msgstr "" - -#: src/properties.cpp:697 -msgid "" -"Designates the date and optionally the time the artwork or object in the " -"image was created. This relates to artwork or objects with associated " -"intellectual property rights." -msgstr "" - -#: src/properties.cpp:698 -msgid "Artwork or object-Source" -msgstr "" - -#: src/properties.cpp:698 -msgid "" -"The organisation or body holding and registering the artwork or object in " -"the image for inventory purposes." -msgstr "" - -#: src/properties.cpp:699 -msgid "Artwork or object-Source inventory number" -msgstr "" - -#: src/properties.cpp:699 -msgid "" -"The inventory number issued by the organisation or body holding and " -"registering the artwork or object in the image." -msgstr "" - -#: src/properties.cpp:700 -msgid "Artwork or object-Title" -msgstr "" - -#: src/properties.cpp:700 -msgid "A reference for the artwork or object in the image." -msgstr "" - -#: src/properties.cpp:707 -msgid "Scan from film" -msgstr "" - -#: src/properties.cpp:708 -msgid "Scan from transparency (including slide)" -msgstr "" - -#: src/properties.cpp:709 -msgid "Scan from print" -msgstr "" - -#: src/properties.cpp:710 -#, fuzzy -msgid "Camera RAW" -msgstr "Kameran merkki" - -#: src/properties.cpp:711 -#, fuzzy -msgid "Camera TIFF" -msgstr "Kameran tyyppi" - -#: src/properties.cpp:712 -#, fuzzy -msgid "Camera JPEG" -msgstr "Kameran merkki" - -#: src/properties.cpp:717 -#, fuzzy -msgid "PLUS Version" -msgstr "Ohjelman versio" - -#: src/properties.cpp:717 -msgid "" -"The version number of the PLUS standards in place at the time of the " -"transaction." -msgstr "" - -#: src/properties.cpp:718 -#, fuzzy -msgid "Licensee" -msgstr "Linssi" - -#: src/properties.cpp:718 -msgid "" -"Party or parties to whom the license is granted by the Licensor/s under the " -"license transaction." -msgstr "" - -#: src/properties.cpp:719 -#, fuzzy -msgid "Licensee ID" -msgstr "Linssi" - -#: src/properties.cpp:719 -msgid "Optional PLUS-ID identifying each Licensee." -msgstr "" - -#: src/properties.cpp:720 -#, fuzzy -msgid "Licensee Name" -msgstr "Omistajan nimi" - -#: src/properties.cpp:720 -msgid "Name of each Licensee." -msgstr "" - -#: src/properties.cpp:721 -#, fuzzy -msgid "End User" -msgstr "Omistajan nimi" - -#: src/properties.cpp:721 -msgid "Party or parties ultimately making use of the image under the license." -msgstr "" - -#: src/properties.cpp:722 -#, fuzzy -msgid "End User ID" -msgstr "Omistajan nimi" - -#: src/properties.cpp:722 -msgid "Optional PLUS-ID identifying each End User." -msgstr "" - -#: src/properties.cpp:723 -#, fuzzy -msgid "End User Name" -msgstr "Omistajan nimi" - -#: src/properties.cpp:723 -msgid "Name of each End User." -msgstr "" - -#: src/properties.cpp:724 -#, fuzzy -msgid "Licensor" -msgstr "Linssi" - -#: src/properties.cpp:724 -msgid "Party or parties granting the license to the Licensee." -msgstr "" - -#: src/properties.cpp:725 -#, fuzzy -msgid "Licensor ID" -msgstr "Linssi" - -#: src/properties.cpp:725 -msgid "Optional PLUS-ID identifying each Licensor." -msgstr "" - -#: src/properties.cpp:726 -#, fuzzy -msgid "Licensor Name" -msgstr "Omistajan nimi" - -#: src/properties.cpp:726 -msgid "Name of each Licensor." -msgstr "" - -#: src/properties.cpp:727 -#, fuzzy -msgid "Licensor Address" -msgstr "Linssin ominaisuudet" - -#: src/properties.cpp:727 -#, fuzzy -msgid "Licensor street address." -msgstr "Linssin ominaisuudet" - -#: src/properties.cpp:728 -msgid "Licensor Address Detail" -msgstr "" - -#: src/properties.cpp:728 -msgid "Additional Licensor mailing address details." -msgstr "" - -#: src/properties.cpp:729 -#, fuzzy -msgid "Licensor City" -msgstr "Linssin tyyppi" - -#: src/properties.cpp:729 -#, fuzzy -msgid "Licensor City name." -msgstr "Linssin tyyppi" - -#: src/properties.cpp:730 -msgid "Licensor State or Province" -msgstr "" - -#: src/properties.cpp:730 -#, fuzzy -msgid "Licensor State or Province name." -msgstr "Linssin sarjanumero" - -#: src/properties.cpp:731 -#, fuzzy -msgid "Licensor Postal Code" -msgstr "Linssin ominaisuudet" - -#: src/properties.cpp:731 -msgid "Licensor Postal Code or Zip Code." -msgstr "" - -#: src/properties.cpp:732 -#, fuzzy -msgid "Licensor Country" -msgstr "Linssin tyyppi" - -#: src/properties.cpp:732 -#, fuzzy -msgid "Licensor Country name." -msgstr "Omistajan nimi" - -#: src/properties.cpp:733 -#, fuzzy -msgid "Licensor Telephone Type 1" -msgstr "Linssin sarjanumero" - -#: src/properties.cpp:733 -#, fuzzy -msgid "Licensor Telephone Type 1." -msgstr "Linssin sarjanumero" - -#: src/properties.cpp:734 -#, fuzzy -msgid "Licensor Telephone 1" -msgstr "Linssin sarjanumero" - -#: src/properties.cpp:734 -#, fuzzy -msgid "Licensor Telephone number 1." -msgstr "Linssin sarjanumero" - -#: src/properties.cpp:735 -#, fuzzy -msgid "Licensor Telephone Type 2" -msgstr "Linssin sarjanumero" - -#: src/properties.cpp:735 -#, fuzzy -msgid "Licensor Telephone Type 2." -msgstr "Linssin sarjanumero" - -#: src/properties.cpp:736 -#, fuzzy -msgid "Licensor Telephone 2" -msgstr "Linssin sarjanumero" - -#: src/properties.cpp:736 -#, fuzzy -msgid "Licensor Telephone number 2." -msgstr "Linssin sarjanumero" - -#: src/properties.cpp:737 -#, fuzzy -msgid "Licensor Email" -msgstr "Omistajan nimi" - -#: src/properties.cpp:737 -#, fuzzy -msgid "Licensor Email address." -msgstr "Omistajan nimi" - -#: src/properties.cpp:738 -#, fuzzy -msgid "Licensor URL" -msgstr "Linssi" - -#: src/properties.cpp:738 -msgid "Licensor world wide web address." -msgstr "" - -#: src/properties.cpp:739 -#, fuzzy -msgid "Licensor Notes" -msgstr "Linssin ominaisuudet" - -#: src/properties.cpp:739 -msgid "" -"Supplemental information for use in identifying and contacting the Licensor/" -"s." -msgstr "" - -#: src/properties.cpp:740 -msgid "PLUS Media Summary Code" -msgstr "" - -#: src/properties.cpp:740 -msgid "" -"A PLUS-standardized alphanumeric code string summarizing the media usages " -"included in the license." -msgstr "" - -#: src/properties.cpp:741 -#, fuzzy -msgid "License Start Date" -msgstr "Omistajan nimi" - -#: src/properties.cpp:741 -msgid "The date on which the license takes effect." -msgstr "" - -#: src/properties.cpp:742 -#, fuzzy -msgid "License End Date" -msgstr "Omistajan nimi" - -#: src/properties.cpp:742 -msgid "The date on which the license expires." -msgstr "" - -#: src/properties.cpp:743 -msgid "Media Constraints" -msgstr "" - -#: src/properties.cpp:743 -msgid "" -"Constraints limiting the scope of PLUS Media Usage/s included in the license " -"to particular named media or to media not yet specifically defined in the " -"PLUS Media Matrix." -msgstr "" - -#: src/properties.cpp:744 -msgid "Region Constraints" -msgstr "" - -#: src/properties.cpp:744 -msgid "" -"Constraints limiting the scope of geographic distribution to specific " -"cities, states, provinces or other areas to be included in or excluded from " -"the PLUS Regions specified in the Media Usages specified in the license." -msgstr "" - -#: src/properties.cpp:745 -msgid "Product or Service Constraints" -msgstr "" - -#: src/properties.cpp:745 -msgid "" -"Constraints limiting usage of the image to promotion of/association with a " -"named product or service." -msgstr "" - -#: src/properties.cpp:746 -msgid "Image File Constraints" -msgstr "" - -#: src/properties.cpp:746 -msgid "" -"Constraints on the changing of the image file name, metadata or file type." -msgstr "" - -#: src/properties.cpp:747 -msgid "Image Alteration Constraints" -msgstr "" - -#: src/properties.cpp:747 -msgid "" -"Constraints on alteration of the image by cropping, flipping, retouching, " -"colorization, de-colorization or merging." -msgstr "" - -#: src/properties.cpp:748 -msgid "Image Duplication Constraints" -msgstr "" - -#: src/properties.cpp:748 -msgid "Constraints on the creation of duplicates of the image." -msgstr "" - -#: src/properties.cpp:749 -#, fuzzy -msgid "Model Release Status" -msgstr "Mallin ID" - -#: src/properties.cpp:749 -msgid "" -"Summarizes the availability and scope of model releases authorizing usage of " -"the likenesses of persons appearing in the photograph." -msgstr "" - -#: src/properties.cpp:750 -#, fuzzy -msgid "Model Release ID" -msgstr "Mallin ID" - -#: src/properties.cpp:750 -msgid "Optional identifier associated with each Model Release." -msgstr "" - -#: src/properties.cpp:751 -msgid "Minor Model Age Disclosure" -msgstr "" - -#: src/properties.cpp:751 -msgid "" -"Age of the youngest model pictured in the image, at the time that the image " -"was made." -msgstr "" - -#: src/properties.cpp:752 -msgid "Property Release Status" -msgstr "" - -#: src/properties.cpp:752 -msgid "" -"Summarizes the availability and scope of property releases authorizing usage " -"of the properties appearing in the photograph." -msgstr "" - -#: src/properties.cpp:753 -#, fuzzy -msgid "Property Release ID" -msgstr "Mallin ID" - -#: src/properties.cpp:753 -msgid "Optional identifier associated with each Property Release." -msgstr "" - -#: src/properties.cpp:754 -msgid "Other Constraints" -msgstr "" - -#: src/properties.cpp:754 -msgid "Additional constraints on the license." -msgstr "" - -#: src/properties.cpp:755 -msgid "Credit Line Required" -msgstr "" - -#: src/properties.cpp:755 -msgid "Attribution requirements, if any." -msgstr "" - -#: src/properties.cpp:756 -msgid "Adult Content Warning" -msgstr "" - -#: src/properties.cpp:756 -msgid "Warning indicating the presence of content not suitable for minors." -msgstr "" - -#: src/properties.cpp:757 -msgid "Other License Requirements" -msgstr "" - -#: src/properties.cpp:757 -msgid "Additional license requirements." -msgstr "" - -#: src/properties.cpp:758 -msgid "Terms and Conditions Text" -msgstr "" - -#: src/properties.cpp:758 -msgid "Terms and Conditions applying to the license." -msgstr "" - -#: src/properties.cpp:759 -msgid "Terms and Conditions URL" -msgstr "" - -#: src/properties.cpp:759 -msgid "URL for Terms and Conditions applying to the license." -msgstr "" - -#: src/properties.cpp:760 -msgid "Other License Conditions" -msgstr "" - -#: src/properties.cpp:760 -msgid "Additional license conditions." -msgstr "" - -#: src/properties.cpp:761 -msgid "Identifies the type of image delivered." -msgstr "" - -#: src/properties.cpp:762 -#, fuzzy -msgid "Licensor Image ID" -msgstr "Omistajan nimi" - -#: src/properties.cpp:762 -msgid "Optional identifier assigned by the Licensor to the image." -msgstr "" - -#: src/properties.cpp:763 -msgid "Image File Name As Delivered" -msgstr "" - -#: src/properties.cpp:763 -msgid "" -"Name of the image file delivered to the Licensee for use under the license." -msgstr "" - -#: src/properties.cpp:764 -msgid "Image File Format As Delivered" -msgstr "" - -#: src/properties.cpp:764 -msgid "" -"File format of the image file delivered to the Licensee for use under the " -"license." -msgstr "" - -#: src/properties.cpp:765 -msgid "Image File Size As Delivered" -msgstr "" - -#: src/properties.cpp:765 -msgid "Size of the image file delivered to the Licensee." -msgstr "" - -#: src/properties.cpp:766 -#, fuzzy -msgid "Copyright Status" -msgstr "Omistusoikeus" - -#: src/properties.cpp:766 -#, fuzzy -msgid "Copyright status of the image." -msgstr "Omistusoikeus" - -#: src/properties.cpp:767 -#, fuzzy -msgid "Copyright Registration Number" -msgstr "Omistajan nimi" - -#: src/properties.cpp:767 -msgid "Copyright Registration Number, if any, applying to the licensed image." -msgstr "" - -#: src/properties.cpp:768 -msgid "First Publication Date" -msgstr "" - -#: src/properties.cpp:768 -msgid "The date on which the image was first published." -msgstr "" - -#: src/properties.cpp:769 -#, fuzzy -msgid "Copyright Owner" -msgstr "Omistusoikeus" - -#: src/properties.cpp:769 -msgid "Owner or owners of the copyright in the licensed image." -msgstr "" - -#: src/properties.cpp:770 -#, fuzzy -msgid "Copyright Owner ID" -msgstr "Omistusoikeus" - -#: src/properties.cpp:770 -msgid "Optional PLUS-ID identifying each Copyright Owner." -msgstr "" - -#: src/properties.cpp:771 -#, fuzzy -msgid "Copyright Owner Name" -msgstr "Omistajan nimi" - -#: src/properties.cpp:771 -#, fuzzy -msgid "Name of Copyright Owner." -msgstr "Omistusoikeus" - -#: src/properties.cpp:772 -#, fuzzy -msgid "Copyright Owner Image ID" -msgstr "Omistusoikeus" - -#: src/properties.cpp:772 -msgid "Optional identifier assigned by the Copyright Owner to the image." -msgstr "" - -#: src/properties.cpp:773 -#, fuzzy -msgid "Image Creator" -msgstr "Kuvan numero" - -#: src/properties.cpp:773 -msgid "Creator/s of the image." -msgstr "" - -#: src/properties.cpp:774 -#, fuzzy -msgid "Image Creator ID" -msgstr "Kuvan numero" - -#: src/properties.cpp:774 -msgid "Optional PLUS-ID identifying each Image Creator." -msgstr "" - -#: src/properties.cpp:775 -#, fuzzy -msgid "Image Creator Name" -msgstr "Kuvan aikaleima" - -#: src/properties.cpp:775 -#, fuzzy -msgid "Name of Image Creator." -msgstr "Kuvan numero" - -#: src/properties.cpp:776 -#, fuzzy -msgid "Image Creator Image ID" -msgstr "Kuvan aikaleima" - -#: src/properties.cpp:776 -msgid "Optional identifier assigned by the Image Creator to the image." -msgstr "" - -#: src/properties.cpp:777 -#, fuzzy -msgid "Image Supplier ID" -msgstr "Kuvan koko" - -#: src/properties.cpp:777 -msgid "Optional PLUS-ID identifying the Image Supplier." -msgstr "" - -#: src/properties.cpp:778 -#, fuzzy -msgid "Image Supplier Name" -msgstr "Kuvan koko" - -#: src/properties.cpp:778 -#, fuzzy -msgid "Name of Image Supplier." -msgstr "Kuvan koko" - -#: src/properties.cpp:779 -#, fuzzy -msgid "Image Supplier Image ID" -msgstr "Kuvan koko" - -#: src/properties.cpp:779 -msgid "Optional identifier assigned by the Image Supplier to the image." -msgstr "" - -#: src/properties.cpp:780 -#, fuzzy -msgid "Licensee Image ID" -msgstr "Omistajan nimi" - -#: src/properties.cpp:780 -msgid "Optional identifier assigned by the Licensee to the image." -msgstr "" - -#: src/properties.cpp:781 -#, fuzzy -msgid "Licensee Image Notes" -msgstr "Linssin ominaisuudet" - -#: src/properties.cpp:781 -msgid "Notes added by Licensee." -msgstr "" - -#: src/properties.cpp:782 -msgid "Other Image Info" -msgstr "" - -#: src/properties.cpp:782 -msgid "Additional image information." -msgstr "" - -#: src/properties.cpp:783 -#, fuzzy -msgid "License ID" -msgstr "Linssi" - -#: src/properties.cpp:783 -msgid "Optional PLUS-ID assigned by the Licensor to the License." -msgstr "" - -#: src/properties.cpp:784 -msgid "Licensor Transaction ID" -msgstr "" - -#: src/properties.cpp:784 -msgid "" -"Identifier assigned by Licensor for Licensor's reference and internal use." -msgstr "" - -#: src/properties.cpp:785 -msgid "Licensee Transaction ID" -msgstr "" - -#: src/properties.cpp:785 -msgid "" -"Identifier assigned by Licensee for Licensee's reference and internal use." -msgstr "" - -#: src/properties.cpp:786 -msgid "Licensee Project Reference" -msgstr "" - -#: src/properties.cpp:786 -msgid "Project reference name or description assigned by Licensee." -msgstr "" - -#: src/properties.cpp:787 -msgid "License Transaction Date" -msgstr "" - -#: src/properties.cpp:787 -msgid "The date of the License Transaction." -msgstr "" - -#: src/properties.cpp:788 -msgid "Reuse" -msgstr "" - -#: src/properties.cpp:788 -msgid "" -"Indicates whether a license is a repeat or an initial license. Reuse may " -"require that licenses stored in files previously delivered to the customer " -"be updated." -msgstr "" - -#: src/properties.cpp:789 -msgid "Other License Documents" -msgstr "" - -#: src/properties.cpp:789 -msgid "" -"Reference information for additional documents associated with the license." -msgstr "" - -#: src/properties.cpp:790 -msgid "Other License Info" -msgstr "" - -#: src/properties.cpp:790 -msgid "Additional license information." -msgstr "" - -#: src/properties.cpp:791 src/properties.cpp:792 src/properties.cpp:793 -#: src/properties.cpp:794 src/properties.cpp:795 -msgid "Optional field for use at Licensor's discretion." -msgstr "" - -#: src/properties.cpp:794 -msgid "Custom 4" -msgstr "" - -#: src/properties.cpp:795 -msgid "Custom 5" -msgstr "" - -#: src/properties.cpp:796 -msgid "Custom 6" -msgstr "" - -#: src/properties.cpp:796 src/properties.cpp:797 src/properties.cpp:798 -#: src/properties.cpp:799 src/properties.cpp:800 -msgid "Optional field for use at Licensee's discretion." -msgstr "" - -#: src/properties.cpp:797 -msgid "Custom 7" -msgstr "" - -#: src/properties.cpp:798 -msgid "Custom 8" -msgstr "" - -#: src/properties.cpp:799 -msgid "Custom 9" -msgstr "" - -#: src/properties.cpp:800 -msgid "Custom 10" -msgstr "" - -#: src/properties.cpp:807 -msgid "Adult Content Warning Required" -msgstr "" - -#: src/properties.cpp:808 -msgid "Not Required" -msgstr "" - -#: src/properties.cpp:814 -msgid "Protected" -msgstr "" - -#: src/properties.cpp:815 -msgid "Public Domain" -msgstr "" - -#: src/properties.cpp:821 -msgid "Credit Adjacent To Image" -msgstr "" - -#: src/properties.cpp:822 -msgid "Credit in Credits Area" -msgstr "" - -#: src/properties.cpp:823 -msgid "Credit on Image" -msgstr "" - -#: src/properties.cpp:824 -msgid "Not Require" -msgstr "" - -#: src/properties.cpp:829 -msgid "No Colorization" -msgstr "" - -#: src/properties.cpp:830 -msgid "No Cropping" -msgstr "" - -#: src/properties.cpp:831 -msgid "No De-Colorization" -msgstr "" - -#: src/properties.cpp:832 -msgid "No Flipping" -msgstr "" - -#: src/properties.cpp:833 -msgid "No Merging" -msgstr "" - -#: src/properties.cpp:834 -msgid "No Retouching" -msgstr "" - -#: src/properties.cpp:839 -msgid "Duplication Only as Necessary Under License" -msgstr "" - -#: src/properties.cpp:840 -msgid "No Duplication Constraints" -msgstr "" - -#: src/properties.cpp:841 -msgid "No Duplication" -msgstr "" - -#: src/properties.cpp:846 -msgid "Maintain File Name" -msgstr "" - -#: src/properties.cpp:847 -msgid "Maintain File Type" -msgstr "" - -#: src/properties.cpp:848 -msgid "Maintain ID in File Name" -msgstr "" - -#: src/properties.cpp:849 -msgid "Maintain Metadata" -msgstr "" - -#: src/properties.cpp:854 -msgid "Windows Bitmap (BMP)" -msgstr "" - -#: src/properties.cpp:855 -msgid "Digital Negative (DNG)" -msgstr "" - -#: src/properties.cpp:856 -msgid "Encapsulated PostScript (EPS)" -msgstr "" - -#: src/properties.cpp:857 -msgid "Graphics Interchange Format (GIF)" -msgstr "" - -#: src/properties.cpp:858 -msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" -msgstr "" - -#: src/properties.cpp:860 -msgid "Macintosh Picture (PICT)" -msgstr "" - -#: src/properties.cpp:861 -msgid "Portable Network Graphics (PNG)" -msgstr "" - -#: src/properties.cpp:862 -msgid "Photoshop Document (PSD)" -msgstr "" - -#: src/properties.cpp:863 -msgid "Proprietary RAW Image Format" -msgstr "" - -#: src/properties.cpp:864 -msgid "Tagged Image File Format (TIFF)" -msgstr "" - -#: src/properties.cpp:865 -msgid "Windows Media Photo (HD Photo)" -msgstr "" - -#: src/properties.cpp:870 -msgid "Greater than 50 MB" -msgstr "" - -#: src/properties.cpp:871 -msgid "Up to 1 MB" -msgstr "" - -#: src/properties.cpp:872 -msgid "Up to 10 MB" -msgstr "" - -#: src/properties.cpp:873 -msgid "Up to 30 MB" -msgstr "" - -#: src/properties.cpp:874 -msgid "Up to 50 MB" -msgstr "" - -#: src/properties.cpp:879 -msgid "Illustrated Image" -msgstr "" - -#: src/properties.cpp:880 -msgid "Multimedia or Composited Image" -msgstr "" - -#: src/properties.cpp:882 -msgid "Photographic Image" -msgstr "" - -#: src/properties.cpp:888 -msgid "Cell" -msgstr "" - -#: src/properties.cpp:889 -msgid "FAX" -msgstr "" - -#: src/properties.cpp:891 -#, fuzzy -msgid "Pager" -msgstr "Suuri" - -#: src/properties.cpp:892 -msgid "Work" -msgstr "" - -#: src/properties.cpp:897 -#, fuzzy -msgid "Age Unknown" -msgstr "Tuntematon" - -#: src/properties.cpp:898 -msgid "Age 25 or Over" -msgstr "" - -#: src/properties.cpp:899 -msgid "Age 24" -msgstr "" - -#: src/properties.cpp:900 -msgid "Age 23" -msgstr "" - -#: src/properties.cpp:901 -msgid "Age 22" -msgstr "" - -#: src/properties.cpp:902 -msgid "Age 21" -msgstr "" - -#: src/properties.cpp:903 -msgid "Age 20" -msgstr "" - -#: src/properties.cpp:904 -msgid "Age 19" -msgstr "" - -#: src/properties.cpp:905 -msgid "Age 18" -msgstr "" - -#: src/properties.cpp:906 -msgid "Age 17" -msgstr "" - -#: src/properties.cpp:907 -msgid "Age 16" -msgstr "" - -#: src/properties.cpp:908 -msgid "Age 15" -msgstr "" - -#: src/properties.cpp:909 -msgid "Age 14 or Under" -msgstr "" - -#: src/properties.cpp:915 src/properties.cpp:923 src/properties.cpp:930 -msgid "Not Applicable" -msgstr "" - -#: src/properties.cpp:916 -#, fuzzy -msgid "Unlimited Model Releases" -msgstr "Mallin ID" - -#: src/properties.cpp:917 -msgid "Limited or Incomplete Model Releases" -msgstr "" - -#: src/properties.cpp:924 -msgid "Unlimited Property Releases" -msgstr "" - -#: src/properties.cpp:925 -msgid "Limited or Incomplete Property Releases" -msgstr "" - -#: src/properties.cpp:931 -msgid "Repeat Use" -msgstr "" - -#: src/properties.cpp:935 src/properties.cpp:944 -msgid "Fixture Identification" -msgstr "" - -#: src/properties.cpp:936 src/properties.cpp:945 -msgid "Status" -msgstr "" - -#: src/properties.cpp:936 src/properties.cpp:945 -msgid "A notation making the image unique" -msgstr "" - -#: src/properties.cpp:937 src/properties.cpp:946 -msgid "People" -msgstr "" - -#: src/properties.cpp:938 src/properties.cpp:947 -msgid "CatalogSets" -msgstr "" - -#: src/properties.cpp:938 src/properties.cpp:947 src/properties.cpp:978 -#: src/properties.cpp:982 -msgid "Descriptive markers of catalog items by content" -msgstr "" - -#: src/properties.cpp:953 -#, fuzzy -msgid "RegionInfo" -msgstr "Linssi" - -#: src/properties.cpp:953 -msgid "Microsoft Photo people-tagging metadata root" -msgstr "" - -#: src/properties.cpp:959 -msgid "DateRegionsValid" -msgstr "" - -#: src/properties.cpp:959 -msgid "Date the last region was created" -msgstr "" - -#: src/properties.cpp:960 src/properties.cpp:975 -#, fuzzy -msgid "Regions" -msgstr "Ohjelman versio" - -#: src/properties.cpp:960 -msgid "Contains Regions/person tags" -msgstr "" - -#: src/properties.cpp:966 -#, fuzzy -msgid "PersonDisplayName" -msgstr "Tiedostonimi" - -#: src/properties.cpp:966 -msgid "Name of the person (in the given rectangle)" -msgstr "" - -#: src/properties.cpp:967 -msgid "Rectangle" -msgstr "" - -#: src/properties.cpp:967 -msgid "Rectangle that identifies the person within the photo" -msgstr "" - -#: src/properties.cpp:968 -msgid "PersonEmailDigest" -msgstr "" - -#: src/properties.cpp:968 -msgid "" -"SHA-1 encrypted message hash of the person's Windows Live e-mail address" -msgstr "" - -#: src/properties.cpp:969 -msgid "PersonLiveCID" -msgstr "" - -#: src/properties.cpp:969 -msgid "Signed decimal representation of the person's Windows Live CID" -msgstr "" - -#: src/properties.cpp:975 -msgid "Main structure containing region based information" -msgstr "" - -#: src/properties.cpp:976 -msgid "AppliedToDimensions" -msgstr "" - -#: src/properties.cpp:976 -msgid "Width and height of image when storing region data" -msgstr "" - -#: src/properties.cpp:977 -msgid "RegionList" -msgstr "" - -#: src/properties.cpp:977 -#, fuzzy -msgid "List of Region structures" -msgstr "Kontrasti" - -#: src/properties.cpp:978 -#, fuzzy -msgid "Area" -msgstr "Salaman tila" - -#: src/properties.cpp:979 -msgid "Type purpose of region (Face|Pet|Focus|BarCode)" -msgstr "" - -#: src/properties.cpp:980 -msgid "Name/ short description of content in image region" -msgstr "" - -#: src/properties.cpp:981 -msgid "" -"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" -"NotEvaluatedNotUsed)" -msgstr "" - -#: src/properties.cpp:982 -#, fuzzy -msgid "FocusUsage" -msgstr "Tarkennustapa" - -#: src/properties.cpp:983 -#, fuzzy -msgid "BarCodeValue" -msgstr "Makrotila" - -#: src/properties.cpp:983 -msgid "Decoded BarCode value string" -msgstr "" - -#: src/properties.cpp:984 -#, fuzzy -msgid "Extensions" -msgstr "Ohjelman versio" - -#: src/properties.cpp:984 -msgid "Any top level XMP property to describe the region content" -msgstr "" - -#: src/sigmamn.cpp:62 -#, fuzzy -msgid "Resolution Mode" -msgstr "Resoluutioyksikkö" - -#: src/sigmamn.cpp:63 -#, fuzzy -msgid "Resolution mode" -msgstr "Resoluutioyksikkö" - -#: src/sigmamn.cpp:65 -#, fuzzy -msgid "Autofocus Mode" -msgstr "Tarkennustapa" - -#: src/sigmamn.cpp:66 -#, fuzzy -msgid "Autofocus mode" -msgstr "Tarkennustapa" - -#: src/sigmamn.cpp:68 -#, fuzzy -msgid "Focus Setting" -msgstr "Asetukset" - -#: src/sigmamn.cpp:69 -#, fuzzy -msgid "Focus setting" -msgstr "Tarkennustapa" - -#: src/sigmamn.cpp:80 -#, fuzzy -msgid "Lens Range" -msgstr "Linssin tyyppi" - -#: src/sigmamn.cpp:81 -#, fuzzy -msgid "Lens focal length range" -msgstr "Polttoväli" - -#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 -#, fuzzy -msgid "Shadow" -msgstr "Varjo" - -#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 -msgid "Highlight" -msgstr "" - -#: src/sigmamn.cpp:104 -msgid "Fill Light" -msgstr "" - -#: src/sigmamn.cpp:105 -msgid "X3 Fill light" -msgstr "" - -#: src/sigmamn.cpp:107 -#, fuzzy -msgid "Color Adjustment" -msgstr "Väriavaruus" - -#: src/sigmamn.cpp:108 -#, fuzzy -msgid "Color adjustment" -msgstr "Väriavaruus" - -#: src/sigmamn.cpp:110 -msgid "Adjustment Mode" -msgstr "" - -#: src/sigmamn.cpp:111 -msgid "Adjustment mode" -msgstr "" - -#: src/sigmamn.cpp:122 -#, fuzzy -msgid "Auto Bracket" -msgstr "Auto, välähti" - -#: src/sigmamn.cpp:123 src/tags.cpp:1490 -#, fuzzy -msgid "Auto bracket" -msgstr "Auto, välähti" - -#: src/sigmamn.cpp:127 -msgid "Unknown SigmaMakerNote tag" -msgstr "" - -#: src/sigmamn.cpp:170 -msgid "8-Segment" -msgstr "" - -#: src/sonymn.cpp:88 -msgid "Standard " -msgstr "" - -#: src/sonymn.cpp:91 -msgid "Advanced Lv1" -msgstr "" - -#: src/sonymn.cpp:92 -msgid "Advanced Lv2" -msgstr "" - -#: src/sonymn.cpp:93 -msgid "Advanced Lv3" -msgstr "" - -#: src/sonymn.cpp:94 -msgid "Advanced Lv4" -msgstr "" - -#: src/sonymn.cpp:95 -msgid "Advanced Lv5" -msgstr "" - -#: src/sonymn.cpp:109 -#, fuzzy -msgid "Landscape " -msgstr "Maisemakuva" - -#: src/sonymn.cpp:113 -msgid "Night Scene / Twilight" -msgstr "" - -#: src/sonymn.cpp:114 -msgid "Hi-Speed Shutter" -msgstr "" - -#: src/sonymn.cpp:115 -#, fuzzy -msgid "Twilight Portrait" -msgstr "Muotokuva" - -#: src/sonymn.cpp:116 -msgid "Soft Snap" -msgstr "" - -#: src/sonymn.cpp:118 -msgid "Smile Shutter" -msgstr "" - -#: src/sonymn.cpp:120 -msgid "High Sensitivity" -msgstr "" - -#: src/sonymn.cpp:121 -msgid "Advanced Sports Shooting" -msgstr "" - -#: src/sonymn.cpp:123 -msgid "Gourmet" -msgstr "" - -#: src/sonymn.cpp:125 -msgid "Handheld Twilight" -msgstr "" - -#: src/sonymn.cpp:126 -msgid "Anti Motion Blur" -msgstr "" - -#: src/sonymn.cpp:128 -msgid "Backlight Correction HDR" -msgstr "" - -#: src/sonymn.cpp:142 -msgid "On (Continuous)" -msgstr "" - -#: src/sonymn.cpp:143 -msgid "On (Shooting)" -msgstr "" - -#: src/sonymn.cpp:151 -msgid "Plus" -msgstr "" - -#: src/sonymn.cpp:167 -#, fuzzy -msgid "White Flourescent" -msgstr "Valkoinen loisteputki" - -#: src/sonymn.cpp:168 -#, fuzzy -msgid "Cool White Flourescent" -msgstr "Valkoinen loisteputki" - -#: src/sonymn.cpp:169 -#, fuzzy -msgid "Day White Flourescent" -msgstr "Valkoinen loisteputki" - -#: src/sonymn.cpp:172 -msgid "Underwater 1 (Blue Water)" -msgstr "" - -#: src/sonymn.cpp:173 -msgid "Underwater 2 (Green Water)" -msgstr "" - -#: src/sonymn.cpp:180 -msgid "Permanent-AF" -msgstr "" - -#: src/sonymn.cpp:188 -msgid "Center AF" -msgstr "" - -#: src/sonymn.cpp:189 -#, fuzzy -msgid "Spot AF" -msgstr "Piste" - -#: src/sonymn.cpp:190 -msgid "Flexible Spot AF" -msgstr "" - -#: src/sonymn.cpp:191 -msgid "Touch AF" -msgstr "" - -#: src/sonymn.cpp:192 -#, fuzzy -msgid "Manual Focus" -msgstr "Käsintarkennus, MF" - -#: src/sonymn.cpp:193 -msgid "Face Detected" -msgstr "" - -#: src/sonymn.cpp:208 -#, fuzzy -msgid "Close Focus" -msgstr "Automaattivalotus" - -#: src/sonymn.cpp:224 -#, fuzzy -msgid "Exposure Bracketing" -msgstr "Valotusaika" - -#: src/sonymn.cpp:298 src/sonymn.cpp:299 -msgid "Multi Burst Mode" -msgstr "" - -#: src/sonymn.cpp:301 src/sonymn.cpp:302 -msgid "Multi Burst Image Width" -msgstr "" - -#: src/sonymn.cpp:304 src/sonymn.cpp:305 -msgid "Multi Burst Image Height" -msgstr "" - -#: src/sonymn.cpp:315 -#, fuzzy -msgid "JPEG preview image" -msgstr "Esikatselu" - -#: src/sonymn.cpp:341 -msgid "Auto HDR" -msgstr "" - -#: src/sonymn.cpp:342 -msgid "High Definition Range Mode" -msgstr "" - -#: src/sonymn.cpp:346 -#, fuzzy -msgid "Shot Information" -msgstr "Värikylläisyys" - -#: src/sonymn.cpp:351 src/sonymn.cpp:352 -#, fuzzy -msgid "Sony Model ID" -msgstr "Mallin ID" - -#: src/sonymn.cpp:354 src/sonymn.cpp:355 -msgid "Color Reproduction" -msgstr "" - -#: src/sonymn.cpp:369 src/sonymn.cpp:370 src/sonymn.cpp:423 src/sonymn.cpp:424 -msgid "Dynamic Range Optimizer" -msgstr "" - -#: src/sonymn.cpp:378 src/sonymn.cpp:379 -msgid "Minolta MakerNote" -msgstr "" - -#: src/sonymn.cpp:384 src/sonymn.cpp:385 -#, fuzzy -msgid "Full Image Size" -msgstr "Kuvan koko" - -#: src/sonymn.cpp:387 -#, fuzzy -msgid "Preview Image Size" -msgstr "Kuvan koko" - -#: src/sonymn.cpp:388 -#, fuzzy -msgid "Preview image size" -msgstr "Kuvan koko" - -#: src/sonymn.cpp:402 src/sonymn.cpp:403 src/sonymn.cpp:613 src/sonymn.cpp:614 -msgid "AF Illuminator" -msgstr "" - -#: src/sonymn.cpp:405 src/sonymn.cpp:406 -#, fuzzy -msgid "JPEG Quality" -msgstr "Kuvanlaatu" - -#: src/sonymn.cpp:411 src/sonymn.cpp:412 -#, fuzzy -msgid "Release Mode" -msgstr "Salaman tila" - -#: src/sonymn.cpp:415 -msgid "Shot number in continous burst mode" -msgstr "" - -#: src/sonymn.cpp:417 src/sonymn.cpp:418 -msgid "Anti-Blur" -msgstr "" - -#: src/sonymn.cpp:420 src/sonymn.cpp:421 src/sonymn.cpp:621 src/sonymn.cpp:622 -msgid "Long Exposure Noise Reduction" -msgstr "" - -#: src/sonymn.cpp:426 src/sonymn.cpp:427 -msgid "Intelligent Auto" -msgstr "" - -#: src/sonymn.cpp:434 -msgid "Unknown Sony1MakerNote tag" -msgstr "" - -#: src/sonymn.cpp:448 -msgid "Continuous High" -msgstr "" - -#: src/sonymn.cpp:452 -msgid "Continuous Low" -msgstr "" - -#: src/sonymn.cpp:454 src/sonymn.cpp:455 -msgid "D-Range Optimizer Bracketing Low" -msgstr "" - -#: src/sonymn.cpp:487 -msgid "Autumn" -msgstr "" - -#: src/sonymn.cpp:493 -msgid "ADI" -msgstr "" - -#: src/sonymn.cpp:509 src/sonymn.cpp:510 src/sonymn.cpp:511 -msgid "StyleBox1" -msgstr "" - -#: src/sonymn.cpp:529 -#, fuzzy -msgid "Auto No Flash" -msgstr "Ei salamaa" - -#: src/sonymn.cpp:584 src/sonymn.cpp:585 src/sonymn.cpp:690 src/sonymn.cpp:691 -msgid "Dynamic Range Optimizer Level" -msgstr "" - -#: src/sonymn.cpp:587 src/sonymn.cpp:588 src/sonymn.cpp:693 src/sonymn.cpp:694 -msgid "Creative Style" -msgstr "" - -#: src/sonymn.cpp:599 src/sonymn.cpp:600 -msgid "Zone Matching Value" -msgstr "" - -#: src/sonymn.cpp:617 src/sonymn.cpp:618 -msgid "AF With Shutter" -msgstr "" - -#: src/sonymn.cpp:625 src/sonymn.cpp:626 -msgid "High ISO NoiseReduction" -msgstr "" - -#: src/sonymn.cpp:629 src/sonymn.cpp:630 -#, fuzzy -msgid "Image Style" -msgstr "Kuvan tyyppi" - -#: src/sonymn.cpp:655 -#, fuzzy -msgid "Unknown Sony1 Camera Settings tag" -msgstr "Kameran asetukset" - -#: src/sonymn.cpp:719 -#, fuzzy -msgid "Unknown Sony1 Camera Settings 2 tag" -msgstr "Kameran asetukset" - -#: src/tags.cpp:184 -#, fuzzy -msgid "Unknown section" -msgstr "Tuntematon" - -#: src/tags.cpp:185 -msgid "Image data structure" -msgstr "" - -#: src/tags.cpp:186 -msgid "Recording offset" -msgstr "" - -#: src/tags.cpp:187 -msgid "Image data characteristics" -msgstr "" - -#: src/tags.cpp:188 -msgid "Other data" -msgstr "" - -#: src/tags.cpp:189 -msgid "Exif data structure" -msgstr "" - -#: src/tags.cpp:191 -#, fuzzy -msgid "Image configuration" -msgstr "Kuvan vakautus" - -#: src/tags.cpp:192 -msgid "User information" -msgstr "" - -#: src/tags.cpp:193 -#, fuzzy -msgid "Related file" -msgstr "tiedostoon" - -#: src/tags.cpp:194 -msgid "Date and time" -msgstr "Päiväys ja aika" - -#: src/tags.cpp:195 -msgid "Picture taking conditions" -msgstr "" - -#: src/tags.cpp:196 -msgid "GPS information" -msgstr "" - -#: src/tags.cpp:197 -msgid "Interoperability information" -msgstr "" - -#: src/tags.cpp:198 -msgid "Vendor specific information" -msgstr "" - -#: src/tags.cpp:199 -msgid "Adobe DNG tags" -msgstr "" - -#: src/tags.cpp:200 -msgid "Panasonic RAW tags" -msgstr "" - -#: src/tags.cpp:201 -msgid "TIFF/EP tags" -msgstr "" - -#: src/tags.cpp:202 -msgid "TIFF PageMaker 6.0 tags" -msgstr "" - -#: src/tags.cpp:203 -msgid "Adobe OPI tags" -msgstr "" - -#: src/tags.cpp:204 -msgid "Last section" -msgstr "" - -#: src/tags.cpp:220 -msgid "Primary image" -msgstr "" - -#: src/tags.cpp:221 -#, fuzzy -msgid "Thumbnail/Preview image" -msgstr "Näytekuva" - -#: src/tags.cpp:222 -msgid "Primary image, Multi page file" -msgstr "" - -#: src/tags.cpp:223 -msgid "Thumbnail/Preview image, Multi page file" -msgstr "" - -#: src/tags.cpp:224 -msgid "Primary image, Transparency mask" -msgstr "" - -#: src/tags.cpp:225 -msgid "Thumbnail/Preview image, Transparency mask" -msgstr "" - -#: src/tags.cpp:226 -msgid "Primary image, Multi page file, Transparency mask" -msgstr "" - -#: src/tags.cpp:227 src/tags.cpp:228 -msgid "Thumbnail/Preview image, Multi page file, Transparency mask" -msgstr "" - -#: src/tags.cpp:233 -msgid "Full-resolution image data" -msgstr "" - -#: src/tags.cpp:234 -msgid "Reduced-resolution image data" -msgstr "" - -#: src/tags.cpp:235 -msgid "A single page of a multi-page image" -msgstr "" - -#: src/tags.cpp:241 -msgid "inch" -msgstr "tuuma" - -#: src/tags.cpp:248 -msgid "CCITT RLE" -msgstr "" - -#: src/tags.cpp:249 -msgid "T4/Group 3 Fax" -msgstr "" - -#: src/tags.cpp:250 -msgid "T6/Group 4 Fax" -msgstr "" - -#: src/tags.cpp:251 -msgid "LZW" -msgstr "" - -#: src/tags.cpp:252 -msgid "JPEG (old-style)" -msgstr "Jpeg (vanhahtava)" - -#: src/tags.cpp:253 -msgid "JPEG" -msgstr "Jpeg" - -#: src/tags.cpp:254 -msgid "Adobe Deflate" -msgstr "" - -#: src/tags.cpp:255 -msgid "JBIG B&W" -msgstr "" - -#: src/tags.cpp:256 -msgid "JBIG Color" -msgstr "" - -#: src/tags.cpp:257 -msgid "Next 2-bits RLE" -msgstr "" - -#: src/tags.cpp:258 -msgid "Epson ERF Compressed" -msgstr "" - -#: src/tags.cpp:259 -msgid "Samsung SRW Compressed" -msgstr "" - -#: src/tags.cpp:260 -msgid "CCITT RLE 1-word" -msgstr "" - -#: src/tags.cpp:261 -msgid "PackBits (Macintosh RLE)" -msgstr "" - -#: src/tags.cpp:262 -msgid "Thunderscan RLE" -msgstr "" - -#: src/tags.cpp:263 -msgid "IT8 CT Padding" -msgstr "" - -#: src/tags.cpp:264 -msgid "IT8 Linework RLE" -msgstr "" - -#: src/tags.cpp:265 -msgid "IT8 Monochrome Picture" -msgstr "" - -#: src/tags.cpp:266 -msgid "IT8 Binary Lineart" -msgstr "" - -#: src/tags.cpp:267 -msgid "Pixar Film (10-bits LZW)" -msgstr "" - -#: src/tags.cpp:268 -msgid "Pixar Log (11-bits ZIP)" -msgstr "" - -#: src/tags.cpp:269 -msgid "Pixar Deflate" -msgstr "" - -#: src/tags.cpp:270 -msgid "Kodak DCS Encoding" -msgstr "" - -#: src/tags.cpp:271 -msgid "ISO JBIG" -msgstr "" - -#: src/tags.cpp:272 -msgid "SGI Log Luminance RLE" -msgstr "" - -#: src/tags.cpp:273 -msgid "SGI Log 24-bits packed" -msgstr "" - -#: src/tags.cpp:274 -msgid "Leadtools JPEG 2000" -msgstr "" - -#: src/tags.cpp:275 -msgid "Nikon NEF Compressed" -msgstr "" - -#: src/tags.cpp:276 -msgid "Kodak DCR Compressed" -msgstr "" - -#: src/tags.cpp:277 -msgid "Pentax PEF Compressed" -msgstr "" - -#: src/tags.cpp:282 -msgid "White Is Zero" -msgstr "" - -#: src/tags.cpp:283 -#, fuzzy -msgid "Black Is Zero" -msgstr "Mustavalko" - -#: src/tags.cpp:284 -msgid "RGB" -msgstr "" - -#: src/tags.cpp:285 -msgid "RGB Palette" -msgstr "" - -#: src/tags.cpp:286 -msgid "Transparency Mask" -msgstr "" - -#: src/tags.cpp:287 src/tags.cpp:326 -msgid "CMYK" -msgstr "" - -#: src/tags.cpp:288 -msgid "YCbCr" -msgstr "" - -#: src/tags.cpp:289 -msgid "CIELab" -msgstr "" - -#: src/tags.cpp:290 -msgid "ICCLab" -msgstr "" - -#: src/tags.cpp:291 -msgid "ITULab" -msgstr "" - -#: src/tags.cpp:292 -msgid "Color Filter Array" -msgstr "" - -#: src/tags.cpp:293 -msgid "Pixar LogL" -msgstr "" - -#: src/tags.cpp:294 -msgid "Pixar LogLuv" -msgstr "" - -#: src/tags.cpp:295 -msgid "Linear Raw" -msgstr "" - -#: src/tags.cpp:300 -msgid "No dithering or halftoning" -msgstr "" - -#: src/tags.cpp:301 -msgid "Ordered dither or halftone technique" -msgstr "" - -#: src/tags.cpp:302 -msgid "Randomized process" -msgstr "" - -#: src/tags.cpp:307 -#, fuzzy -msgid "top, left" -msgstr "tiedostoon" - -#: src/tags.cpp:308 -#, fuzzy -msgid "top, right" -msgstr "Omistusoikeus" - -#: src/tags.cpp:309 -msgid "bottom, right" -msgstr "" - -#: src/tags.cpp:310 -msgid "bottom, left" -msgstr "" - -#: src/tags.cpp:311 -msgid "left, top" -msgstr "" - -#: src/tags.cpp:312 -msgid "right, top" -msgstr "" - -#: src/tags.cpp:313 -msgid "right, bottom" -msgstr "" - -#: src/tags.cpp:314 src/tags.cpp:315 -msgid "left, bottom" -msgstr "" - -#: src/tags.cpp:320 -msgid "No prediction scheme used" -msgstr "" - -#: src/tags.cpp:321 -msgid "Horizontal differencing" -msgstr "" - -#: src/tags.cpp:327 -msgid "not CMYK" -msgstr "" - -#: src/tags.cpp:332 -msgid "Unsigned integer data" -msgstr "" - -#: src/tags.cpp:333 -msgid "Two's complement signed integer data" -msgstr "" - -#: src/tags.cpp:334 -msgid "IEEE floating point data" -msgstr "" - -#: src/tags.cpp:335 src/tags.cpp:336 -msgid "Undefined data format" -msgstr "" - -#: src/tags.cpp:341 -msgid "Not indexed" -msgstr "" - -#: src/tags.cpp:342 src/tags.cpp:648 -msgid "Indexed" -msgstr "" - -#: src/tags.cpp:347 -msgid "A" -msgstr "" - -#: src/tags.cpp:348 -msgid "B" -msgstr "" - -#: src/tags.cpp:349 -msgid "C" -msgstr "" - -#: src/tags.cpp:350 -msgid "A+B-C" -msgstr "" - -#: src/tags.cpp:351 -msgid "A+((B-C)/2)" -msgstr "" - -#: src/tags.cpp:352 -msgid "B+((A-C)/2)" -msgstr "" - -#: src/tags.cpp:353 -msgid "(A+B)/2" -msgstr "" - -#: src/tags.cpp:358 -#, fuzzy -msgid "Centered" -msgstr "Keskustaa painottava" - -#: src/tags.cpp:359 -msgid "Co-sited" -msgstr "" - -#: src/tags.cpp:364 -#, fuzzy -msgid "No flash" -msgstr "Ei salamaa" - -#: src/tags.cpp:366 -msgid "Fired, return light not detected" -msgstr "" - -#: src/tags.cpp:367 -msgid "Fired, return light detected" -msgstr "" - -#: src/tags.cpp:368 -#, fuzzy -msgid "Yes, did not fire" -msgstr "Ei välähtänyt" - -#: src/tags.cpp:369 -msgid "Yes, compulsory" -msgstr "" - -#: src/tags.cpp:370 -msgid "Yes, compulsory, return light not detected" -msgstr "" - -#: src/tags.cpp:371 -msgid "Yes, compulsory, return light detected" -msgstr "" - -#: src/tags.cpp:372 -msgid "No, compulsory" -msgstr "" - -#: src/tags.cpp:373 -msgid "No, did not fire, return light not detected" -msgstr "" - -#: src/tags.cpp:374 -msgid "No, auto" -msgstr "" - -#: src/tags.cpp:375 -msgid "Yes, auto" -msgstr "" - -#: src/tags.cpp:376 -msgid "Yes, auto, return light not detected" -msgstr "" - -#: src/tags.cpp:377 -msgid "Yes, auto, return light detected" -msgstr "" - -#: src/tags.cpp:378 -msgid "No flash function" -msgstr "" - -#: src/tags.cpp:379 -msgid "No, no flash function" -msgstr "" - -#: src/tags.cpp:380 -#, fuzzy -msgid "Yes, red-eye reduction" -msgstr "Päällä, punasilmäisyyden esto" - -#: src/tags.cpp:381 -msgid "Yes, red-eye reduction, return light not detected" -msgstr "" - -#: src/tags.cpp:382 -msgid "Yes, red-eye reduction, return light detected" -msgstr "" - -#: src/tags.cpp:383 -#, fuzzy -msgid "Yes, compulsory, red-eye reduction" -msgstr "Auto, välähti, punasilmäisyyden esto" - -#: src/tags.cpp:384 -msgid "Yes, compulsory, red-eye reduction, return light not detected" -msgstr "" - -#: src/tags.cpp:385 -msgid "Yes, compulsory, red-eye reduction, return light detected" -msgstr "" - -#: src/tags.cpp:386 -#, fuzzy -msgid "No, red-eye reduction" -msgstr "Päällä, punasilmäisyyden esto" - -#: src/tags.cpp:387 -#, fuzzy -msgid "No, auto, red-eye reduction" -msgstr "Auto, välähti, punasilmäisyyden esto" - -#: src/tags.cpp:388 -#, fuzzy -msgid "Yes, auto, red-eye reduction" -msgstr "Auto, välähti, punasilmäisyyden esto" - -#: src/tags.cpp:389 -msgid "Yes, auto, red-eye reduction, return light not detected" -msgstr "" - -#: src/tags.cpp:390 -msgid "Yes, auto, red-eye reduction, return light detected" -msgstr "" - -#: src/tags.cpp:395 -msgid "Rectangular (or square) layout" -msgstr "" - -#: src/tags.cpp:396 -msgid "Staggered layout A: even columns are offset down by 1/2 row" -msgstr "" - -#: src/tags.cpp:397 -msgid "Staggered layout B: even columns are offset up by 1/2 row" -msgstr "" - -#: src/tags.cpp:398 -msgid "Staggered layout C: even rows are offset right by 1/2 column" -msgstr "" - -#: src/tags.cpp:399 -msgid "Staggered layout D: even rows are offset left by 1/2 column" -msgstr "" - -#: src/tags.cpp:404 -msgid "Processing Software" -msgstr "" - -#: src/tags.cpp:405 -msgid "The name and version of the software used to post-process the picture." -msgstr "" - -#: src/tags.cpp:408 -msgid "New Subfile Type" -msgstr "" - -#: src/tags.cpp:409 -msgid "A general indication of the kind of data contained in this subfile." -msgstr "" - -#: src/tags.cpp:411 -msgid "Subfile Type" -msgstr "" - -#: src/tags.cpp:412 -msgid "" -"A general indication of the kind of data contained in this subfile. This " -"field is deprecated. The NewSubfileType field should be used instead." -msgstr "" - -#: src/tags.cpp:416 -msgid "" -"The number of columns of image data, equal to the number of pixels per row. " -"In JPEG compressed data a JPEG marker is used instead of this tag." -msgstr "" - -#: src/tags.cpp:421 -msgid "" -"The number of rows of image data. In JPEG compressed data a JPEG marker is " -"used instead of this tag." -msgstr "" - -#: src/tags.cpp:424 -msgid "Bits per Sample" -msgstr "" - -#: src/tags.cpp:425 -msgid "" -"The number of bits per image component. In this standard each component of " -"the image is 8 bits, so the value for this tag is 8. See also " -". In JPEG compressed data a JPEG marker is used instead of " -"this tag." -msgstr "" - -#: src/tags.cpp:431 -msgid "" -"The compression scheme used for the image data. When a primary image is JPEG " -"compressed, this designation is not necessary and is omitted. When " -"thumbnails use JPEG compression, this tag value is set to 6." -msgstr "" - -#: src/tags.cpp:437 -msgid "" -"The pixel composition. In JPEG compressed data a JPEG marker is used instead " -"of this tag." -msgstr "" - -#: src/tags.cpp:440 -msgid "Threshholding" -msgstr "" - -#: src/tags.cpp:441 -msgid "" -"For black and white TIFF files that represent shades of gray, the technique " -"used to convert from gray to black and white pixels." -msgstr "" - -#: src/tags.cpp:444 -msgid "Cell Width" -msgstr "" - -#: src/tags.cpp:445 -msgid "" -"The width of the dithering or halftoning matrix used to create a dithered or " -"halftoned bilevel file." -msgstr "" - -#: src/tags.cpp:448 -#, fuzzy -msgid "Cell Length" -msgstr "Polttoväli" - -#: src/tags.cpp:449 -msgid "" -"The length of the dithering or halftoning matrix used to create a dithered " -"or halftoned bilevel file." -msgstr "" - -#: src/tags.cpp:452 -msgid "Fill Order" -msgstr "" - -#: src/tags.cpp:453 -msgid "The logical order of bits within a byte" -msgstr "" - -#: src/tags.cpp:455 -#, fuzzy -msgid "Document Name" -msgstr "Omistajan nimi" - -#: src/tags.cpp:456 -msgid "The name of the document from which this image was scanned" -msgstr "" - -#: src/tags.cpp:459 -msgid "" -"A character string giving the title of the image. It may be a comment such " -"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " -"used. When a 2-bytes code is necessary, the Exif Private tag " -"is to be used." -msgstr "" - -#: src/tags.cpp:466 -msgid "" -"The manufacturer of the recording equipment. This is the manufacturer of the " -"DSC, scanner, video digitizer or other equipment that generated the image. " -"When the field is left blank, it is treated as unknown." -msgstr "" - -#: src/tags.cpp:472 -msgid "" -"The model name or model number of the equipment. This is the model name or " -"number of the DSC, scanner, video digitizer or other equipment that " -"generated the image. When the field is left blank, it is treated as unknown." -msgstr "" - -#: src/tags.cpp:478 -msgid "" -"For each strip, the byte offset of that strip. It is recommended that this " -"be selected so the number of strip bytes does not exceed 64 Kbytes. With " -"JPEG compressed data this designation is not needed and is omitted. See also " -" and ." -msgstr "" - -#: src/tags.cpp:485 -msgid "The image orientation viewed in terms of rows and columns." -msgstr "" - -#: src/tags.cpp:487 -msgid "Samples per Pixel" -msgstr "" - -#: src/tags.cpp:488 -msgid "" -"The number of components per pixel. Since this standard applies to RGB and " -"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " -"JPEG marker is used instead of this tag." -msgstr "" - -#: src/tags.cpp:492 -msgid "Rows per Strip" -msgstr "" - -#: src/tags.cpp:493 -msgid "" -"The number of rows per strip. This is the number of rows in the image of one " -"strip when an image is divided into strips. With JPEG compressed data this " -"designation is not needed and is omitted. See also and " -"." -msgstr "" - -#: src/tags.cpp:498 -#, fuzzy -msgid "Strip Byte Count" -msgstr "Valotusajan esivalinta (Tv)" - -#: src/tags.cpp:499 -msgid "" -"The total number of bytes in each strip. With JPEG compressed data this " -"designation is not needed and is omitted." -msgstr "" - -#: src/tags.cpp:502 -#, fuzzy -msgid "X-Resolution" -msgstr "Resoluutioyksikkö" - -#: src/tags.cpp:503 -msgid "" -"The number of pixels per in the direction. " -"When the image resolution is unknown, 72 [dpi] is designated." -msgstr "" - -#: src/tags.cpp:506 -#, fuzzy -msgid "Y-Resolution" -msgstr "Resoluutioyksikkö" - -#: src/tags.cpp:507 -msgid "" -"The number of pixels per in the direction. " -"The same value as is designated." -msgstr "" - -#: src/tags.cpp:511 -msgid "" -"Indicates whether pixel components are recorded in a chunky or planar " -"format. In JPEG compressed files a JPEG marker is used instead of this tag. " -"If this field does not exist, the TIFF default of 1 (chunky) is assumed." -msgstr "" - -#: src/tags.cpp:516 -#, fuzzy -msgid "Gray Response Unit" -msgstr "Resoluutioyksikkö" - -#: src/tags.cpp:517 -msgid "The precision of the information contained in the GrayResponseCurve." -msgstr "" - -#: src/tags.cpp:519 -msgid "Gray Response Curve" -msgstr "" - -#: src/tags.cpp:520 -msgid "For grayscale data, the optical density of each possible pixel value." -msgstr "" - -#: src/tags.cpp:522 -msgid "T4 Options" -msgstr "" - -#: src/tags.cpp:523 -msgid "T.4-encoding options." -msgstr "" - -#: src/tags.cpp:525 -msgid "T6 Options" -msgstr "" - -#: src/tags.cpp:526 -msgid "T.6-encoding options." -msgstr "" - -#: src/tags.cpp:529 -msgid "" -"The unit for measuring and . The same unit is " -"used for both and . If the image resolution is " -"unknown, 2 (inches) is designated." -msgstr "" - -#: src/tags.cpp:534 -msgid "" -"A transfer function for the image, described in tabular style. Normally this " -"tag is not necessary, since color space is specified in the color space " -"information tag ()." -msgstr "" - -#: src/tags.cpp:539 -msgid "" -"This tag records the name and version of the software or firmware of the " -"camera or image input device used to generate the image. The detailed format " -"is not specified, but it is recommended that the example shown below be " -"followed. When the field is left blank, it is treated as unknown." -msgstr "" - -#: src/tags.cpp:546 -msgid "" -"The date and time of image creation. In Exif standard, it is the date and " -"time the file was changed." -msgstr "" - -#: src/tags.cpp:550 -msgid "" -"This tag records the name of the camera owner, photographer or image " -"creator. The detailed format is not specified, but it is recommended that " -"the information be written as in the example below for ease of " -"Interoperability. When the field is left blank, it is treated as unknown. " -"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " -"Ken James\"" -msgstr "" - -#: src/tags.cpp:557 -msgid "Host Computer" -msgstr "" - -#: src/tags.cpp:558 -msgid "" -"This tag records information about the host computer used to generate the " -"image." -msgstr "" - -#: src/tags.cpp:561 -msgid "Predictor" -msgstr "" - -#: src/tags.cpp:562 -msgid "" -"A predictor is a mathematical operator that is applied to the image data " -"before an encoding scheme is applied." -msgstr "" - -#: src/tags.cpp:566 -msgid "" -"The chromaticity of the white point of the image. Normally this tag is not " -"necessary, since color space is specified in the colorspace information tag " -"()." -msgstr "" - -#: src/tags.cpp:571 -msgid "" -"The chromaticity of the three primary colors of the image. Normally this tag " -"is not necessary, since colorspace is specified in the colorspace " -"information tag ()." -msgstr "" - -#: src/tags.cpp:575 -#, fuzzy -msgid "Color Map" -msgstr "Väriavaruus" - -#: src/tags.cpp:576 -msgid "" -"A color map for palette color images. This field defines a Red-Green-Blue " -"color map (often called a lookup table) for palette-color images. In a " -"palette-color image, a pixel value is used to index into an RGB lookup table." -msgstr "" - -#: src/tags.cpp:581 -msgid "Halftone Hints" -msgstr "" - -#: src/tags.cpp:582 -msgid "" -"The purpose of the HalftoneHints field is to convey to the halftone function " -"the range of gray levels within a colorimetrically-specified image that " -"should retain tonal detail." -msgstr "" - -#: src/tags.cpp:586 -msgid "Tile Width" -msgstr "" - -#: src/tags.cpp:587 -msgid "The tile width in pixels. This is the number of columns in each tile." -msgstr "" - -#: src/tags.cpp:589 -#, fuzzy -msgid "Tile Length" -msgstr "Polttoväli" - -#: src/tags.cpp:590 -msgid "" -"The tile length (height) in pixels. This is the number of rows in each tile." -msgstr "" - -#: src/tags.cpp:592 -msgid "Tile Offsets" -msgstr "" - -#: src/tags.cpp:593 -msgid "" -"For each tile, the byte offset of that tile, as compressed and stored on " -"disk. The offset is specified with respect to the beginning of the TIFF " -"file. Note that this implies that each tile has a location independent of " -"the locations of other tiles." -msgstr "" - -#: src/tags.cpp:598 -msgid "Tile Byte Counts" -msgstr "" - -#: src/tags.cpp:599 -msgid "" -"For each tile, the number of (compressed) bytes in that tile. See " -"TileOffsets for a description of how the byte counts are ordered." -msgstr "" - -#: src/tags.cpp:602 -msgid "SubIFD Offsets" -msgstr "" - -#: src/tags.cpp:603 -msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." -msgstr "" - -#: src/tags.cpp:605 -#, fuzzy -msgid "Ink Set" -msgstr "Aseta" - -#: src/tags.cpp:606 -msgid "" -"The set of inks used in a separated (PhotometricInterpretation=5) image." -msgstr "" - -#: src/tags.cpp:608 -#, fuzzy -msgid "Ink Names" -msgstr "Omistajan nimi" - -#: src/tags.cpp:609 -msgid "" -"The name of each ink used in a separated (PhotometricInterpretation=5) image." -msgstr "" - -#: src/tags.cpp:611 -msgid "Number Of Inks" -msgstr "" - -#: src/tags.cpp:612 -msgid "" -"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " -"samples." -msgstr "" - -#: src/tags.cpp:614 -msgid "Dot Range" -msgstr "" - -#: src/tags.cpp:615 -#, c-format -msgid "The component values that correspond to a 0% dot and 100% dot." -msgstr "" - -#: src/tags.cpp:617 -msgid "Target Printer" -msgstr "" - -#: src/tags.cpp:618 -msgid "" -"A description of the printing environment for which this separation is " -"intended." -msgstr "" - -#: src/tags.cpp:620 -msgid "Extra Samples" -msgstr "" - -#: src/tags.cpp:621 -msgid "" -"Specifies that each pixel has m extra components whose interpretation is " -"defined by one of the values listed below." -msgstr "" - -#: src/tags.cpp:624 -msgid "Sample Format" -msgstr "" - -#: src/tags.cpp:625 -msgid "This field specifies how to interpret each data sample in a pixel." -msgstr "" - -#: src/tags.cpp:627 -#, fuzzy -msgid "SMin Sample Value" -msgstr "Valotusaika" - -#: src/tags.cpp:628 -msgid "This field specifies the minimum sample value." -msgstr "" - -#: src/tags.cpp:630 -#, fuzzy -msgid "SMax Sample Value" -msgstr "Valotusaika" - -#: src/tags.cpp:631 -msgid "This field specifies the maximum sample value." -msgstr "" - -#: src/tags.cpp:633 -msgid "Transfer Range" -msgstr "" - -#: src/tags.cpp:634 -msgid "Expands the range of the TransferFunction" -msgstr "" - -#: src/tags.cpp:636 -msgid "Clip Path" -msgstr "" - -#: src/tags.cpp:637 -msgid "" -"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " -"creation functionality." -msgstr "" - -#: src/tags.cpp:640 -msgid "X Clip Path Units" -msgstr "" - -#: src/tags.cpp:641 -msgid "" -"The number of units that span the width of the image, in terms of integer " -"ClipPath coordinates." -msgstr "" - -#: src/tags.cpp:644 -msgid "Y Clip Path Units" -msgstr "" - -#: src/tags.cpp:645 -msgid "" -"The number of units that span the height of the image, in terms of integer " -"ClipPath coordinates." -msgstr "" - -#: src/tags.cpp:649 -msgid "" -"Indexed images are images where the 'pixels' do not represent color values, " -"but rather an index (usually 8-bit) into a separate color table, the " -"ColorMap." -msgstr "" - -#: src/tags.cpp:653 -msgid "JPEG tables" -msgstr "" - -#: src/tags.cpp:654 -msgid "" -"This optional tag may be used to encode the JPEG quantization andHuffman " -"tables for subsequent use by the JPEG decompression process." -msgstr "" - -#: src/tags.cpp:657 -msgid "OPI Proxy" -msgstr "" - -#: src/tags.cpp:658 -msgid "" -"OPIProxy gives information concerning whether this image is a low-resolution " -"proxy of a high-resolution image (Adobe OPI)." -msgstr "" - -#: src/tags.cpp:661 -msgid "JPEG Process" -msgstr "" - -#: src/tags.cpp:662 -msgid "This field indicates the process used to produce the compressed data" -msgstr "" - -#: src/tags.cpp:664 -msgid "JPEG Interchange Format" -msgstr "" - -#: src/tags.cpp:665 -msgid "" -"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " -"is not used for primary image JPEG data." -msgstr "" - -#: src/tags.cpp:668 -msgid "JPEG Interchange Format Length" -msgstr "" - -#: src/tags.cpp:669 -msgid "" -"The number of bytes of JPEG compressed thumbnail data. This is not used for " -"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " -"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " -"be recorded. Compressed thumbnails must be recorded in no more than 64 " -"Kbytes, including all other data to be recorded in APP1." -msgstr "" - -#: src/tags.cpp:676 -msgid "JPEG Restart Interval" -msgstr "" - -#: src/tags.cpp:677 -msgid "" -"This Field indicates the length of the restart interval used in the " -"compressed image data." -msgstr "" - -#: src/tags.cpp:680 -msgid "JPEG Lossless Predictors" -msgstr "" - -#: src/tags.cpp:681 -msgid "" -"This Field points to a list of lossless predictor-selection values, one per " -"component." -msgstr "" - -#: src/tags.cpp:684 -msgid "JPEG Point Transforms" -msgstr "" - -#: src/tags.cpp:685 -msgid "" -"This Field points to a list of point transform values, one per component." -msgstr "" - -#: src/tags.cpp:687 -msgid "JPEG Q-Tables" -msgstr "" - -#: src/tags.cpp:688 -msgid "" -"This Field points to a list of offsets to the quantization tables, one per " -"component." -msgstr "" - -#: src/tags.cpp:691 -msgid "JPEG DC-Tables" -msgstr "" - -#: src/tags.cpp:692 -msgid "" -"This Field points to a list of offsets to the DC Huffman tables or the " -"lossless Huffman tables, one per component." -msgstr "" - -#: src/tags.cpp:695 -msgid "JPEG AC-Tables" -msgstr "" - -#: src/tags.cpp:696 -msgid "" -"This Field points to a list of offsets to the Huffman AC tables, one per " -"component." -msgstr "" - -#: src/tags.cpp:700 -msgid "" -"The matrix coefficients for transformation from RGB to YCbCr image data. No " -"default is given in TIFF; but here the value given in Appendix E, \"Color " -"Space Guidelines\", is used as the default. The color space is declared in a " -"color space information tag, with the default being the value that gives the " -"optimal image characteristics Interoperability this condition." -msgstr "" - -#: src/tags.cpp:708 -msgid "YCbCr Sub-Sampling" -msgstr "" - -#: src/tags.cpp:709 -msgid "" -"The sampling ratio of chrominance components in relation to the luminance " -"component. In JPEG compressed data a JPEG marker is used instead of this tag." -msgstr "" - -#: src/tags.cpp:714 -msgid "" -"The position of chrominance components in relation to the luminance " -"component. This field is designated only for JPEG compressed data or " -"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " -"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " -"record data, in order to improve the image quality when viewed on TV " -"systems. When this field does not exist, the reader shall assume the TIFF " -"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " -"recommended. If the reader does not have the capability of supporting both " -"kinds of , it shall follow the TIFF default regardless of " -"the value in this field. It is preferable that readers be able to support " -"both centered and co-sited positioning." -msgstr "" - -#: src/tags.cpp:728 -msgid "Reference Black/White" -msgstr "" - -#: src/tags.cpp:729 -msgid "" -"The reference black point value and reference white point value. No defaults " -"are given in TIFF, but the values below are given as defaults here. The " -"color space is declared in a color space information tag, with the default " -"being the value that gives the optimal image characteristics " -"Interoperability these conditions." -msgstr "" - -#: src/tags.cpp:736 -msgid "XML Packet" -msgstr "" - -#: src/tags.cpp:737 -msgid "XMP Metadata (Adobe technote 9-14-02)" -msgstr "" - -#: src/tags.cpp:739 -msgid "Windows Rating" -msgstr "" - -#: src/tags.cpp:740 -msgid "Rating tag used by Windows" -msgstr "" - -#: src/tags.cpp:742 -msgid "Windows Rating Percent" -msgstr "" - -#: src/tags.cpp:743 -msgid "Rating tag used by Windows, value in percent" -msgstr "" - -#: src/tags.cpp:745 -#, fuzzy -msgid "Image ID" -msgstr "Kuvan koko" - -#: src/tags.cpp:746 -msgid "" -"ImageID is the full pathname of the original, high-resolution image, or any " -"other identifying string that uniquely identifies the original image (Adobe " -"OPI)." -msgstr "" - -#: src/tags.cpp:750 -msgid "CFA Repeat Pattern Dimension" -msgstr "" - -#: src/tags.cpp:751 -msgid "" -"Contains two values representing the minimum rows and columns to define the " -"repeating patterns of the color filter array" -msgstr "" - -#: src/tags.cpp:755 -msgid "" -"Indicates the color filter array (CFA) geometric pattern of the image sensor " -"when a one-chip color area sensor is used. It does not apply to all sensing " -"methods" -msgstr "" - -#: src/tags.cpp:763 -msgid "" -"Copyright information. In this standard the tag is used to indicate both the " -"photographer and editor copyrights. It is the copyright notice of the person " -"or organization claiming rights to the image. The Interoperability copyright " -"statement including date and rights should be written in this field; e.g., " -"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " -"field records both the photographer and editor copyrights, with each " -"recorded in a separate part of the statement. When there is a clear " -"distinction between the photographer and editor copyrights, these are to be " -"written in the order of photographer followed by editor copyright, separated " -"by NULL (in this case since the statement also ends with a NULL, there are " -"two NULL codes). When only the photographer copyright is given, it is " -"terminated by one NULL code . When only the editor copyright is given, the " -"photographer copyright part consists of one space followed by a terminating " -"NULL code, then the editor copyright is given. When the field is left blank, " -"it is treated as unknown." -msgstr "" - -#: src/tags.cpp:782 -msgid "Exposure time, given in seconds." -msgstr "" - -#: src/tags.cpp:783 src/tags.cpp:1546 -#, fuzzy -msgid "The F number." -msgstr "F-luku" - -#: src/tags.cpp:784 -msgid "IPTC/NAA" -msgstr "" - -#: src/tags.cpp:785 -msgid "Contains an IPTC/NAA record" -msgstr "" - -#: src/tags.cpp:787 -msgid "Image Resources Block" -msgstr "" - -#: src/tags.cpp:788 -msgid "Contains information embedded by the Adobe Photoshop application" -msgstr "" - -#: src/tags.cpp:791 -msgid "" -"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " -"as that of the IFD specified in TIFF. ordinarily, however, it does not " -"contain image data as in the case of TIFF." -msgstr "" - -#: src/tags.cpp:796 -msgid "Inter Color Profile" -msgstr "" - -#: src/tags.cpp:797 -msgid "" -"Contains an InterColor Consortium (ICC) format color space characterization/" -"profile" -msgstr "" - -#: src/tags.cpp:799 src/tags.cpp:1549 -msgid "" -"The class of the program used by the camera to set exposure when the picture " -"is taken." -msgstr "" - -#: src/tags.cpp:800 -msgid "Indicates the spectral sensitivity of each channel of the camera used." -msgstr "" - -#: src/tags.cpp:802 -msgid "" -"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " -"Info IFD, like that of Exif IFD, has no image data." -msgstr "" - -#: src/tags.cpp:806 src/tags.cpp:1557 -msgid "ISO Speed Ratings" -msgstr "ISO-herkkyys" - -#: src/tags.cpp:806 src/tags.cpp:1558 -msgid "" -"Indicates the ISO Speed and ISO Latitude of the camera or input device as " -"specified in ISO 12232." -msgstr "" - -#: src/tags.cpp:807 -msgid "" -"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " -"14524." -msgstr "" - -#: src/tags.cpp:808 -#, fuzzy -msgid "Interlace" -msgstr "Sisäinen salama" - -#: src/tags.cpp:808 -msgid "Indicates the field number of multifield images." -msgstr "" - -#: src/tags.cpp:809 -msgid "Time Zone Offset" -msgstr "" - -#: src/tags.cpp:810 -msgid "" -"This optional tag encodes the time zone of the camera clock (relativeto " -"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " -"picture was taken. It may also contain the time zone offsetof the clock used " -"to create the DateTime tag-value when the image wasmodified." -msgstr "" - -#: src/tags.cpp:816 -msgid "Self Timer Mode" -msgstr "" - -#: src/tags.cpp:816 -msgid "Number of seconds image capture was delayed from button press." -msgstr "" - -#: src/tags.cpp:817 -msgid "Date Time Original" -msgstr "" - -#: src/tags.cpp:817 -msgid "The date and time when the original image data was generated." -msgstr "" - -#: src/tags.cpp:818 -msgid "Specific to compressed data; states the compressed bits per pixel." -msgstr "" - -#: src/tags.cpp:819 -#, fuzzy -msgid "Shutter speed." -msgstr "Valotusaika" - -#: src/tags.cpp:820 -#, fuzzy -msgid "The lens aperture." -msgstr "Aukko" - -#: src/tags.cpp:821 -msgid "The value of brightness." -msgstr "" - -#: src/tags.cpp:822 -#, fuzzy -msgid "The exposure bias." -msgstr "Valotuksen korjaus" - -#: src/tags.cpp:823 src/tags.cpp:1638 -#, fuzzy -msgid "Max Aperture Value" -msgstr "Aukko" - -#: src/tags.cpp:823 -msgid "The smallest F number of the lens." -msgstr "" - -#: src/tags.cpp:824 src/tags.cpp:1644 -msgid "The distance to the subject, given in meters." -msgstr "" - -#: src/tags.cpp:825 src/tags.cpp:1647 -#, fuzzy -msgid "The metering mode." -msgstr "Mittaustapa" - -#: src/tags.cpp:826 src/tags.cpp:1650 -msgid "The kind of light source." -msgstr "" - -#: src/tags.cpp:827 -msgid "Indicates the status of flash when the image was shot." -msgstr "" - -#: src/tags.cpp:828 -msgid "The actual focal length of the lens, in mm." -msgstr "" - -#: src/tags.cpp:829 -msgid "Amount of flash energy (BCPS)." -msgstr "" - -#: src/tags.cpp:830 -msgid "SFR of the camera." -msgstr "" - -#: src/tags.cpp:831 -#, fuzzy -msgid "Noise" -msgstr "Ei käytössä" - -#: src/tags.cpp:831 -msgid "Noise measurement values." -msgstr "" - -#: src/tags.cpp:832 -msgid "" -"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " -"direction for main image." -msgstr "" - -#: src/tags.cpp:833 -msgid "" -"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " -"direction for main image." -msgstr "" - -#: src/tags.cpp:834 -msgid "" -"Unit of measurement for FocalPlaneXResolution(37390) and " -"FocalPlaneYResolution(37391)." -msgstr "" - -#: src/tags.cpp:835 -msgid "Number assigned to an image, e.g., in a chained image burst." -msgstr "" - -#: src/tags.cpp:836 -msgid "Security Classification" -msgstr "" - -#: src/tags.cpp:836 -msgid "Security classification assigned to the image." -msgstr "" - -#: src/tags.cpp:837 -msgid "Record of what has been done to the image." -msgstr "" - -#: src/tags.cpp:838 -msgid "" -"Indicates the location and area of the main subject in the overall scene." -msgstr "" - -#: src/tags.cpp:839 -msgid "Encodes the camera exposure index setting when image was captured." -msgstr "" - -#: src/tags.cpp:840 -msgid "TIFF/EP Standard ID" -msgstr "" - -#: src/tags.cpp:841 -msgid "" -"Contains four ASCII characters representing the TIFF/EP standard version of " -"a TIFF/EP file, eg '1', '0', '0', '0'" -msgstr "" - -#: src/tags.cpp:844 -msgid "Type of image sensor." -msgstr "" - -#: src/tags.cpp:845 -msgid "Windows Title" -msgstr "" - -#: src/tags.cpp:846 -msgid "Title tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:848 -#, fuzzy -msgid "Windows Comment" -msgstr "Oma kommentti" - -#: src/tags.cpp:849 -msgid "Comment tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:851 -msgid "Windows Author" -msgstr "" - -#: src/tags.cpp:852 -msgid "Author tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:854 -#, fuzzy -msgid "Windows Keywords" -msgstr "Avainsanat" - -#: src/tags.cpp:855 -msgid "Keywords tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:857 -msgid "Windows Subject" -msgstr "" - -#: src/tags.cpp:858 -msgid "Subject tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:860 -msgid "Print Image Matching" -msgstr "" - -#: src/tags.cpp:861 -msgid "Print Image Matching, description needed." -msgstr "" - -#: src/tags.cpp:863 -#, fuzzy -msgid "DNG version" -msgstr "Ohjelman versio" - -#: src/tags.cpp:864 -msgid "" -"This tag encodes the DNG four-tier version number. For files compliant with " -"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " -"1, 1, 0, 0." -msgstr "" - -#: src/tags.cpp:868 -#, fuzzy -msgid "DNG backward version" -msgstr "Firmwaren versio" - -#: src/tags.cpp:869 -msgid "" -"This tag specifies the oldest version of the Digital Negative specification " -"for which a file is compatible. Readers shouldnot attempt to read a file if " -"this tag specifies a version number that is higher than the version number " -"of the specification the reader was based on. In addition to checking the " -"version tags, readers should, for all tags, check the types, counts, and " -"values, to verify it is able to correctly read the file." -msgstr "" - -#: src/tags.cpp:877 -#, fuzzy -msgid "Unique Camera Model" -msgstr "Kameran malli" - -#: src/tags.cpp:878 -msgid "" -"Defines a unique, non-localized name for the camera model that created the " -"image in the raw file. This name should include the manufacturer's name to " -"avoid conflicts, and should not be localized, even if the camera name itself " -"is localized for different markets (see LocalizedCameraModel). This string " -"may be used by reader software to index into per-model preferences and " -"replacement profiles." -msgstr "" - -#: src/tags.cpp:885 -#, fuzzy -msgid "Localized Camera Model" -msgstr "Kameran malli" - -#: src/tags.cpp:886 -msgid "" -"Similar to the UniqueCameraModel field, except the name can be localized for " -"different markets to match the localization of the camera name." -msgstr "" - -#: src/tags.cpp:890 -msgid "CFA Plane Color" -msgstr "" - -#: src/tags.cpp:891 -msgid "" -"Provides a mapping between the values in the CFAPattern tag and the plane " -"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." -msgstr "" - -#: src/tags.cpp:895 -msgid "CFA Layout" -msgstr "" - -#: src/tags.cpp:896 -msgid "Describes the spatial layout of the CFA." -msgstr "" - -#: src/tags.cpp:899 -msgid "" -"Describes a lookup table that maps stored values into linear values. This " -"tag is typically used to increase compression ratios by storing the raw data " -"in a non-linear, more visually uniform space with fewer total encoding " -"levels. If SamplesPerPixel is not equal to one, this single table applies to " -"all the samples for each pixel." -msgstr "" - -#: src/tags.cpp:905 -msgid "Black Level Repeat Dim" -msgstr "" - -#: src/tags.cpp:906 -msgid "Specifies repeat pattern size for the BlackLevel tag." -msgstr "" - -#: src/tags.cpp:909 -msgid "" -"Specifies the zero light (a.k.a. thermal black or black current) encoding " -"level, as a repeating pattern. The origin of this pattern is the top-left " -"corner of the ActiveArea rectangle. The values are stored in row-column-" -"sample scan order." -msgstr "" - -#: src/tags.cpp:914 -msgid "Black Level Delta H" -msgstr "" - -#: src/tags.cpp:915 -msgid "" -"If the zero light encoding level is a function of the image column, " -"BlackLevelDeltaH specifies the difference between the zero light encoding " -"level for each column and the baseline zero light encoding level. If " -"SamplesPerPixel is not equal to one, this single table applies to all the " -"samples for each pixel." -msgstr "" - -#: src/tags.cpp:921 -msgid "Black Level Delta V" -msgstr "" - -#: src/tags.cpp:922 -msgid "" -"If the zero light encoding level is a function of the image row, this tag " -"specifies the difference between the zero light encoding level for each row " -"and the baseline zero light encoding level. If SamplesPerPixel is not equal " -"to one, this single table applies to all the samples for each pixel." -msgstr "" - -#: src/tags.cpp:928 -#, fuzzy -msgid "White Level" -msgstr "Salaman malli" - -#: src/tags.cpp:929 -msgid "" -"This tag specifies the fully saturated encoding level for the raw sample " -"values. Saturation is caused either by the sensor itself becoming highly non-" -"linear in response, or by the camera's analog to digital converter clipping." -msgstr "" - -#: src/tags.cpp:934 -#, fuzzy -msgid "Default Scale" -msgstr "Oletus" - -#: src/tags.cpp:935 -msgid "" -"DefaultScale is required for cameras with non-square pixels. It specifies " -"the default scale factors for each direction to convert the image to square " -"pixels. Typically these factors are selected to approximately preserve total " -"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " -"as the Fujifilm SuperCCD, these two values should usually differ by a factor " -"of 2.0." -msgstr "" - -#: src/tags.cpp:942 -msgid "Default Crop Origin" -msgstr "" - -#: src/tags.cpp:943 -msgid "" -"Raw images often store extra pixels around the edges of the final image. " -"These extra pixels help prevent interpolation artifacts near the edges of " -"the final image. DefaultCropOrigin specifies the origin of the final image " -"area, in raw image coordinates (i.e., before the DefaultScale has been " -"applied), relative to the top-left corner of the ActiveArea rectangle." -msgstr "" - -#: src/tags.cpp:950 -#, fuzzy -msgid "Default Crop Size" -msgstr "Kameran asetukset" - -#: src/tags.cpp:951 -msgid "" -"Raw images often store extra pixels around the edges of the final image. " -"These extra pixels help prevent interpolation artifacts near the edges of " -"the final image. DefaultCropSize specifies the size of the final image area, " -"in raw image coordinates (i.e., before the DefaultScale has been applied)." -msgstr "" - -#: src/tags.cpp:957 -msgid "Color Matrix 1" -msgstr "" - -#: src/tags.cpp:958 -msgid "" -"ColorMatrix1 defines a transformation matrix that converts XYZ values to " -"reference camera native color space values, under the first calibration " -"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " -"tag is required for all non-monochrome DNG files." -msgstr "" - -#: src/tags.cpp:964 -msgid "Color Matrix 2" -msgstr "" - -#: src/tags.cpp:965 -msgid "" -"ColorMatrix2 defines a transformation matrix that converts XYZ values to " -"reference camera native color space values, under the second calibration " -"illuminant. The matrix values are stored in row scan order." -msgstr "" - -#: src/tags.cpp:970 -msgid "Camera Calibration 1" -msgstr "" - -#: src/tags.cpp:971 -msgid "" -"CameraClalibration1 defines a calibration matrix that transforms reference " -"camera native space values to individual camera native space values under " -"the first calibration illuminant. The matrix is stored in row scan order. " -"This matrix is stored separately from the matrix specified by the " -"ColorMatrix1 tag to allow raw converters to swap in replacement color " -"matrices based on UniqueCameraModel tag, while still taking advantage of any " -"per-individual camera calibration performed by the camera manufacturer." -msgstr "" - -#: src/tags.cpp:980 -msgid "Camera Calibration 2" -msgstr "" - -#: src/tags.cpp:981 -msgid "" -"CameraCalibration2 defines a calibration matrix that transforms reference " -"camera native space values to individual camera native space values under " -"the second calibration illuminant. The matrix is stored in row scan order. " -"This matrix is stored separately from the matrix specified by the " -"ColorMatrix2 tag to allow raw converters to swap in replacement color " -"matrices based on UniqueCameraModel tag, while still taking advantage of any " -"per-individual camera calibration performed by the camera manufacturer." -msgstr "" - -#: src/tags.cpp:990 -msgid "Reduction Matrix 1" -msgstr "" - -#: src/tags.cpp:991 -msgid "" -"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " -"first stage in converting color camera native space values to XYZ values, " -"under the first calibration illuminant. This tag may only be used if " -"ColorPlanes is greater than 3. The matrix is stored in row scan order." -msgstr "" - -#: src/tags.cpp:997 -msgid "Reduction Matrix 2" -msgstr "" - -#: src/tags.cpp:998 -msgid "" -"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " -"first stage in converting color camera native space values to XYZ values, " -"under the second calibration illuminant. This tag may only be used if " -"ColorPlanes is greater than 3. The matrix is stored in row scan order." -msgstr "" - -#: src/tags.cpp:1004 -#, fuzzy -msgid "Analog Balance" -msgstr "Väriavaruus" - -#: src/tags.cpp:1005 -msgid "" -"Normally the stored raw values are not white balanced, since any digital " -"white balancing will reduce the dynamic range of the final image if the user " -"decides to later adjust the white balance; however, if camera hardware is " -"capable of white balancing the color channels before the signal is " -"digitized, it can improve the dynamic range of the final image. " -"AnalogBalance defines the gain, either analog (recommended) or digital (not " -"recommended) that has been applied the stored raw values." -msgstr "" - -#: src/tags.cpp:1014 -#, fuzzy -msgid "As Shot Neutral" -msgstr "Neutraali" - -#: src/tags.cpp:1015 -msgid "" -"Specifies the selected white balance at time of capture, encoded as the " -"coordinates of a perfectly neutral color in linear reference space values. " -"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." -msgstr "" - -#: src/tags.cpp:1020 -msgid "As Shot White XY" -msgstr "" - -#: src/tags.cpp:1021 -msgid "" -"Specifies the selected white balance at time of capture, encoded as x-y " -"chromaticity coordinates. The inclusion of this tag precludes the inclusion " -"of the AsShotNeutral tag." -msgstr "" - -#: src/tags.cpp:1025 -#, fuzzy -msgid "Baseline Exposure" -msgstr "Automaattivalotus" - -#: src/tags.cpp:1026 -msgid "" -"Camera models vary in the trade-off they make between highlight headroom and " -"shadow noise. Some leave a significant amount of highlight headroom during a " -"normal exposure. This allows significant negative exposure compensation to " -"be applied during raw conversion, but also means normal exposures will " -"contain more shadow noise. Other models leave less headroom during normal " -"exposures. This allows for less negative exposure compensation, but results " -"in lower shadow noise for normal exposures. Because of these differences, a " -"raw converter needs to vary the zero point of its exposure compensation " -"control from model to model. BaselineExposure specifies by how much (in EV " -"units) to move the zero point. Positive values result in brighter default " -"results, while negative values result in darker default results." -msgstr "" - -#: src/tags.cpp:1040 -msgid "Baseline Noise" -msgstr "" - -#: src/tags.cpp:1041 -msgid "" -"Specifies the relative noise level of the camera model at a baseline ISO " -"value of 100, compared to a reference camera model. Since noise levels tend " -"to vary approximately with the square root of the ISO value, a raw converter " -"can use this value, combined with the current ISO, to estimate the relative " -"noise level of the current image." -msgstr "" - -#: src/tags.cpp:1047 -#, fuzzy -msgid "Baseline Sharpness" -msgstr "Terävyys" - -#: src/tags.cpp:1048 -msgid "" -"Specifies the relative amount of sharpening required for this camera model, " -"compared to a reference camera model. Camera models vary in the strengths of " -"their anti-aliasing filters. Cameras with weak or no filters require less " -"sharpening than cameras with strong anti-aliasing filters." -msgstr "" - -#: src/tags.cpp:1054 -msgid "Bayer Green Split" -msgstr "" - -#: src/tags.cpp:1055 -msgid "" -"Only applies to CFA images using a Bayer pattern filter array. This tag " -"specifies, in arbitrary units, how closely the values of the green pixels in " -"the blue/green rows track the values of the green pixels in the red/green " -"rows. A value of zero means the two kinds of green pixels track closely, " -"while a non-zero value means they sometimes diverge. The useful range for " -"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." -msgstr "" - -#: src/tags.cpp:1063 -msgid "Linear Response Limit" -msgstr "" - -#: src/tags.cpp:1064 -msgid "" -"Some sensors have an unpredictable non-linearity in their response as they " -"near the upper limit of their encoding range. This non-linearity results in " -"color shifts in the highlight areas of the resulting image unless the raw " -"converter compensates for this effect. LinearResponseLimit specifies the " -"fraction of the encoding range above which the response may become " -"significantly non-linear." -msgstr "" - -#: src/tags.cpp:1072 -msgid "" -"CameraSerialNumber contains the serial number of the camera or camera body " -"that captured the image." -msgstr "" - -#: src/tags.cpp:1075 -#, fuzzy -msgid "Lens Info" -msgstr "Linssin malli" - -#: src/tags.cpp:1076 -msgid "" -"Contains information about the lens that captured the image. If the minimum " -"f-stops are unknown, they should be encoded as 0/0." -msgstr "" - -#: src/tags.cpp:1079 -msgid "Chroma Blur Radius" -msgstr "" - -#: src/tags.cpp:1080 -msgid "" -"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " -"blur should be applied to the image. If this tag is omitted, the reader will " -"use its default amount of chroma blurring. Normally this tag is only " -"included for non-CFA images, since the amount of chroma blur required for " -"mosaic images is highly dependent on the de-mosaic algorithm, in which case " -"the DNG reader's default value is likely optimized for its particular de-" -"mosaic algorithm." -msgstr "" - -#: src/tags.cpp:1088 -msgid "Anti Alias Strength" -msgstr "" - -#: src/tags.cpp:1089 -msgid "" -"Provides a hint to the DNG reader about how strong the camera's anti-alias " -"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " -"prone to aliasing artifacts with some subjects), while a value of 1.0 means " -"a strong anti-alias filter (i.e., the camera almost never has aliasing " -"artifacts)." -msgstr "" - -#: src/tags.cpp:1095 -msgid "Shadow Scale" -msgstr "" - -#: src/tags.cpp:1096 -msgid "" -"This tag is used by Adobe Camera Raw to control the sensitivity of its " -"'Shadows' slider." -msgstr "" - -#: src/tags.cpp:1099 -msgid "DNG Private Data" -msgstr "" - -#: src/tags.cpp:1100 -msgid "" -"Provides a way for camera manufacturers to store private data in the DNG " -"file for use by their own raw converters, and to have that data preserved by " -"programs that edit DNG files." -msgstr "" - -#: src/tags.cpp:1104 -msgid "MakerNote Safety" -msgstr "" - -#: src/tags.cpp:1105 -msgid "" -"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " -"safe to preserve along with the rest of the EXIF data. File browsers and " -"other image management software processing an image with a preserved " -"MakerNote should be aware that any thumbnail image embedded in the MakerNote " -"may be stale, and may not reflect the current state of the full size image." -msgstr "" - -#: src/tags.cpp:1112 -msgid "Calibration Illuminant 1" -msgstr "" - -#: src/tags.cpp:1113 -msgid "" -"The illuminant used for the first set of color calibration tags " -"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " -"this tag are the same as the legal values for the LightSource EXIF tag." -msgstr "" - -#: src/tags.cpp:1118 -msgid "Calibration Illuminant 2" -msgstr "" - -#: src/tags.cpp:1119 -msgid "" -"The illuminant used for an optional second set of color calibration tags " -"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " -"this tag are the same as the legal values for the CalibrationIlluminant1 " -"tag; however, if both are included, neither is allowed to have a value of 0 " -"(unknown)." -msgstr "" - -#: src/tags.cpp:1125 -msgid "Best Quality Scale" -msgstr "" - -#: src/tags.cpp:1126 -msgid "" -"For some cameras, the best possible image quality is not achieved by " -"preserving the total pixel count during conversion. For example, Fujifilm " -"SuperCCD images have maximum detail when their total pixel count is doubled. " -"This tag specifies the amount by which the values of the DefaultScale tag " -"need to be multiplied to achieve the best quality image size." -msgstr "" - -#: src/tags.cpp:1133 -msgid "Raw Data Unique ID" -msgstr "" - -#: src/tags.cpp:1134 -msgid "" -"This tag contains a 16-byte unique identifier for the raw image data in the " -"DNG file. DNG readers can use this tag to recognize a particular raw image, " -"even if the file's name or the metadata contained in the file has been " -"changed. If a DNG writer creates such an identifier, it should do so using " -"an algorithm that will ensure that it is very unlikely two different images " -"will end up having the same identifier." -msgstr "" - -#: src/tags.cpp:1142 -msgid "Original Raw File Name" -msgstr "" - -#: src/tags.cpp:1143 -msgid "" -"If the DNG file was converted from a non-DNG raw file, then this tag " -"contains the file name of that original raw file." -msgstr "" - -#: src/tags.cpp:1146 -msgid "Original Raw File Data" -msgstr "" - -#: src/tags.cpp:1147 -msgid "" -"If the DNG file was converted from a non-DNG raw file, then this tag " -"contains the compressed contents of that original raw file. The contents of " -"this tag always use the big-endian byte order. The tag contains a sequence " -"of data blocks. Future versions of the DNG specification may define " -"additional data blocks, so DNG readers should ignore extra bytes when " -"parsing this tag. DNG readers should also detect the case where data blocks " -"are missing from the end of the sequence, and should assume a default value " -"for all the missing blocks. There are no padding or alignment bytes between " -"data blocks." -msgstr "" - -#: src/tags.cpp:1157 -msgid "Active Area" -msgstr "" - -#: src/tags.cpp:1158 -msgid "" -"This rectangle defines the active (non-masked) pixels of the sensor. The " -"order of the rectangle coordinates is: top, left, bottom, right." -msgstr "" - -#: src/tags.cpp:1161 -msgid "Masked Areas" -msgstr "" - -#: src/tags.cpp:1162 -msgid "" -"This tag contains a list of non-overlapping rectangle coordinates of fully " -"masked pixels, which can be optionally used by DNG readers to measure the " -"black encoding level. The order of each rectangle's coordinates is: top, " -"left, bottom, right. If the raw image data has already had its black " -"encoding level subtracted, then this tag should not be used, since the " -"masked pixels are no longer useful." -msgstr "" - -#: src/tags.cpp:1169 -msgid "As-Shot ICC Profile" -msgstr "" - -#: src/tags.cpp:1170 -msgid "" -"This tag contains an ICC profile that, in conjunction with the " -"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " -"specify a default color rendering from camera color space coordinates " -"(linear reference values) into the ICC profile connection space. The ICC " -"profile connection space is an output referred colorimetric space, whereas " -"the other color calibration tags in DNG specify a conversion into a scene " -"referred colorimetric space. This means that the rendering in this profile " -"should include any desired tone and gamut mapping needed to convert between " -"scene referred values and output referred values." -msgstr "" - -#: src/tags.cpp:1181 -msgid "As-Shot Pre-Profile Matrix" -msgstr "" - -#: src/tags.cpp:1182 -msgid "" -"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " -"a matrix that should be applied to the camera color space coordinates before " -"processing the values through the ICC profile specified in the " -"AsShotICCProfile tag. The matrix is stored in the row scan order. If " -"ColorPlanes is greater than three, then this matrix can (but is not required " -"to) reduce the dimensionality of the color data down to three components, in " -"which case the AsShotICCProfile should have three rather than ColorPlanes " -"input components." -msgstr "" - -#: src/tags.cpp:1191 -msgid "Current ICC Profile" -msgstr "" - -#: src/tags.cpp:1192 -msgid "" -"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " -"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " -"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " -"they are for use by raw file editors rather than camera manufacturers." -msgstr "" - -#: src/tags.cpp:1198 -msgid "Current Pre-Profile Matrix" -msgstr "" - -#: src/tags.cpp:1199 -msgid "" -"This tag is used in conjunction with the CurrentICCProfile tag. The " -"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " -"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " -"they are for use by raw file editors rather than camera manufacturers." -msgstr "" - -#: src/tags.cpp:1205 -msgid "Colorimetric Reference" -msgstr "" - -#: src/tags.cpp:1206 -msgid "" -"The DNG color model documents a transform between camera colors and CIE XYZ " -"values. This tag describes the colorimetric reference for the CIE XYZ " -"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" -"referred, using the ICC profile perceptual dynamic range. This tag allows " -"output-referred data to be stored in DNG files and still processed correctly " -"by DNG readers." -msgstr "" - -#: src/tags.cpp:1213 -msgid "Camera Calibration Signature" -msgstr "" - -#: src/tags.cpp:1214 -msgid "" -"A UTF-8 encoded string associated with the CameraCalibration1 and " -"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " -"should only be used in the DNG color transform if the string stored in the " -"CameraCalibrationSignature tag exactly matches the string stored in the " -"ProfileCalibrationSignature tag for the selected camera profile." -msgstr "" - -#: src/tags.cpp:1220 -msgid "Profile Calibration Signature" -msgstr "" - -#: src/tags.cpp:1221 -msgid "" -"A UTF-8 encoded string associated with the camera profile tags. The " -"CameraCalibration1 and CameraCalibration2 tags should only be used in the " -"DNG color transfer if the string stored in the CameraCalibrationSignature " -"tag exactly matches the string stored in the ProfileCalibrationSignature tag " -"for the selected camera profile." -msgstr "" - -#: src/tags.cpp:1227 -msgid "As Shot Profile Name" -msgstr "" - -#: src/tags.cpp:1228 -msgid "" -"A UTF-8 encoded string containing the name of the \"as shot\" camera " -"profile, if any." -msgstr "" - -#: src/tags.cpp:1231 -#, fuzzy -msgid "Noise Reduction Applied" -msgstr "Päällä, punasilmäisyyden esto" - -#: src/tags.cpp:1232 -msgid "" -"This tag indicates how much noise reduction has been applied to the raw data " -"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " -"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " -"reduction has been applied, i.e. that the DNG reader should not apply " -"additional noise reduction by default. A value of 0/0 indicates that this " -"parameter is unknown." -msgstr "" - -#: src/tags.cpp:1239 -#, fuzzy -msgid "Profile Name" -msgstr "Tiedostonimi" - -#: src/tags.cpp:1240 -msgid "" -"A UTF-8 encoded string containing the name of the camera profile. This tag " -"is optional if there is only a single camera profile stored in the file but " -"is required for all camera profiles if there is more than one camera profile " -"stored in the file." -msgstr "" - -#: src/tags.cpp:1245 -msgid "Profile Hue Sat Map Dims" -msgstr "" - -#: src/tags.cpp:1246 -msgid "" -"This tag specifies the number of input samples in each dimension of the hue/" -"saturation/value mapping tables. The data for these tables are stored in " -"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " -"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " -"to the mapping table." -msgstr "" - -#: src/tags.cpp:1252 -msgid "Profile Hue Sat Map Data 1" -msgstr "" - -#: src/tags.cpp:1253 -msgid "" -"This tag contains the data for the first hue/saturation/value mapping table. " -"Each entry of the table contains three 32-bit IEEE floating-point values. " -"The first entry is hue shift in degrees; the second entry is saturation " -"scale factor; and the third entry is a value scale factor. The table entries " -"are stored in the tag in nested loop order, with the value divisions in the " -"outer loop, the hue divisions in the middle loop, and the saturation " -"divisions in the inner loop. All zero input saturation entries are required " -"to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1262 -msgid "Profile Hue Sat Map Data 2" -msgstr "" - -#: src/tags.cpp:1263 -msgid "" -"This tag contains the data for the second hue/saturation/value mapping " -"table. Each entry of the table contains three 32-bit IEEE floating-point " -"values. The first entry is hue shift in degrees; the second entry is a " -"saturation scale factor; and the third entry is a value scale factor. The " -"table entries are stored in the tag in nested loop order, with the value " -"divisions in the outer loop, the hue divisions in the middle loop, and the " -"saturation divisions in the inner loop. All zero input saturation entries " -"are required to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1272 -#, fuzzy -msgid "Profile Tone Curve" -msgstr "Kontrasti" - -#: src/tags.cpp:1273 -msgid "" -"This tag contains a default tone curve that can be applied while processing " -"the image as a starting point for user adjustments. The curve is specified " -"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " -"sample has an input value in the range of 0.0 to 1.0, and an output value in " -"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " -"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " -"cubic spline." -msgstr "" - -#: src/tags.cpp:1281 -msgid "Profile Embed Policy" -msgstr "" - -#: src/tags.cpp:1282 -msgid "" -"This tag contains information about the usage rules for the associated " -"camera profile." -msgstr "" - -#: src/tags.cpp:1285 -#, fuzzy -msgid "Profile Copyright" -msgstr "Omistusoikeus" - -#: src/tags.cpp:1286 -msgid "" -"A UTF-8 encoded string containing the copyright information for the camera " -"profile. This string always should be preserved along with the other camera " -"profile tags." -msgstr "" - -#: src/tags.cpp:1290 -#, fuzzy -msgid "Forward Matrix 1" -msgstr "Väriavaruus" - -#: src/tags.cpp:1291 src/tags.cpp:1295 -msgid "" -"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " -"colors." -msgstr "" - -#: src/tags.cpp:1294 -#, fuzzy -msgid "Forward Matrix 2" -msgstr "Väriavaruus" - -#: src/tags.cpp:1298 -#, fuzzy -msgid "Preview Application Name" -msgstr "Esikatselu" - -#: src/tags.cpp:1299 -msgid "" -"A UTF-8 encoded string containing the name of the application that created " -"the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1302 -#, fuzzy -msgid "Preview Application Version" -msgstr "Ohjelman versio" - -#: src/tags.cpp:1303 -msgid "" -"A UTF-8 encoded string containing the version number of the application that " -"created the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1306 -#, fuzzy -msgid "Preview Settings Name" -msgstr "Esikatselu" - -#: src/tags.cpp:1307 -msgid "" -"A UTF-8 encoded string containing the name of the conversion settings (for " -"example, snapshot name) used for the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1310 -#, fuzzy -msgid "Preview Settings Digest" -msgstr "Kuvan koko" - -#: src/tags.cpp:1311 -msgid "" -"A unique ID of the conversion settings (for example, MD5 digest) used to " -"render the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1314 -#, fuzzy -msgid "Preview Color Space" -msgstr "Väriavaruus" - -#: src/tags.cpp:1315 -msgid "" -"This tag specifies the color space in which the rendered preview in this IFD " -"is stored. The default value for this tag is sRGB for color previews and " -"Gray Gamma 2.2 for monochrome previews." -msgstr "" - -#: src/tags.cpp:1319 -#, fuzzy -msgid "Preview Date Time" -msgstr "Esikatselu" - -#: src/tags.cpp:1320 -msgid "" -"This tag is an ASCII string containing the name of the date/time at which " -"the preview stored in the IFD was rendered. The date/time is encoded using " -"ISO 8601 format." -msgstr "" - -#: src/tags.cpp:1324 -#, fuzzy -msgid "Raw Image Digest" -msgstr "Kuvan numero" - -#: src/tags.cpp:1325 -msgid "" -"This tag is an MD5 digest of the raw image data. All pixels in the image are " -"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " -"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " -"data for each pixel is processed in little-endian byte order." -msgstr "" - -#: src/tags.cpp:1330 -msgid "Original Raw File Digest" -msgstr "" - -#: src/tags.cpp:1331 -msgid "" -"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." -msgstr "" - -#: src/tags.cpp:1334 -msgid "Sub Tile Block Size" -msgstr "" - -#: src/tags.cpp:1335 -msgid "" -"Normally, the pixels within a tile are stored in simple row-scan order. This " -"tag specifies that the pixels within a tile should be grouped first into " -"rectangular blocks of the specified size. These blocks are stored in row-" -"scan order. Within each block, the pixels are stored in row-scan order. The " -"use of a non-default value for this tag requires setting the " -"DNGBackwardVersion tag to at least 1.2.0.0." -msgstr "" - -#: src/tags.cpp:1342 -msgid "Row Interleave Factor" -msgstr "" - -#: src/tags.cpp:1343 -msgid "" -"This tag specifies that rows of the image are stored in interleaved order. " -"The value of the tag specifies the number of interleaved fields. The use of " -"a non-default value for this tag requires setting the DNGBackwardVersion tag " -"to at least 1.2.0.0." -msgstr "" - -#: src/tags.cpp:1348 -msgid "Profile Look Table Dims" -msgstr "" - -#: src/tags.cpp:1349 -msgid "" -"This tag specifies the number of input samples in each dimension of a " -"default \"look\" table. The data for this table is stored in the " -"ProfileLookTableData tag." -msgstr "" - -#: src/tags.cpp:1353 -msgid "Profile Look Table Data" -msgstr "" - -#: src/tags.cpp:1354 -msgid "" -"This tag contains a default \"look\" table that can be applied while " -"processing the image as a starting point for user adjustment. This table " -"uses the same format as the tables stored in the ProfileHueSatMapData1 and " -"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " -"it should be applied later in the processing pipe, after any exposure " -"compensation and/or fill light stages, but before any tone curve stage. Each " -"entry of the table contains three 32-bit IEEE floating-point values. The " -"first entry is hue shift in degrees, the second entry is a saturation scale " -"factor, and the third entry is a value scale factor. The table entries are " -"stored in the tag in nested loop order, with the value divisions in the " -"outer loop, the hue divisions in the middle loop, and the saturation " -"divisions in the inner loop. All zero input saturation entries are required " -"to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1368 -msgid "Opcode List 1" -msgstr "" - -#: src/tags.cpp:1369 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, as " -"read directly from the file." -msgstr "" - -#: src/tags.cpp:1372 -msgid "Opcode List 2" -msgstr "" - -#: src/tags.cpp:1373 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, just " -"after it has been mapped to linear reference values." -msgstr "" - -#: src/tags.cpp:1376 -msgid "Opcode List 3" -msgstr "" - -#: src/tags.cpp:1377 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, just " -"after it has been demosaiced." -msgstr "" - -#: src/tags.cpp:1380 -#, fuzzy -msgid "Noise Profile" -msgstr "tiedostoon" - -#: src/tags.cpp:1381 -msgid "" -"NoiseProfile describes the amount of noise in a raw image. Specifically, " -"this tag models the amount of signal-dependent photon (shot) noise and " -"signal-independent sensor readout noise, two common sources of noise in raw " -"images. The model assumes that the noise is white and spatially independent, " -"ignoring fixed pattern effects and other sources of noise (e.g., pixel " -"response non-uniformity, spatially-dependent thermal effects, etc.)." -msgstr "" - -#: src/tags.cpp:1389 src/tags.cpp:1390 -#, fuzzy -msgid "Unknown IFD tag" -msgstr "Tuntematon" - -#: src/tags.cpp:1401 src/tags.cpp:1459 -msgid "Not defined" -msgstr "" - -#: src/tags.cpp:1406 -msgid "Creative program" -msgstr "" - -#: src/tags.cpp:1407 -msgid "Action program" -msgstr "" - -#: src/tags.cpp:1408 -#, fuzzy -msgid "Portrait mode" -msgstr "Muotokuva" - -#: src/tags.cpp:1409 -#, fuzzy -msgid "Landscape mode" -msgstr "Maisemakuva" - -#: src/tags.cpp:1418 -msgid "Multi-spot" -msgstr "" - -#: src/tags.cpp:1430 -msgid "Tungsten (incandescent light)" -msgstr "" - -#: src/tags.cpp:1432 -msgid "Fine weather" -msgstr "" - -#: src/tags.cpp:1433 -#, fuzzy -msgid "Cloudy weather" -msgstr "Pilvinen" - -#: src/tags.cpp:1435 -msgid "Daylight fluorescent (D 5700 - 7100K)" -msgstr "" - -#: src/tags.cpp:1436 -msgid "Day white fluorescent (N 4600 - 5400K)" -msgstr "" - -#: src/tags.cpp:1437 -msgid "Cool white fluorescent (W 3900 - 4500K)" -msgstr "" - -#: src/tags.cpp:1438 -msgid "White fluorescent (WW 3200 - 3700K)" -msgstr "" - -#: src/tags.cpp:1439 -msgid "Standard light A" -msgstr "" - -#: src/tags.cpp:1440 -msgid "Standard light B" -msgstr "" - -#: src/tags.cpp:1441 -msgid "Standard light C" -msgstr "" - -#: src/tags.cpp:1442 -msgid "D55" -msgstr "" - -#: src/tags.cpp:1443 -msgid "D65" -msgstr "" - -#: src/tags.cpp:1444 -msgid "D75" -msgstr "" - -#: src/tags.cpp:1445 -msgid "D50" -msgstr "" - -#: src/tags.cpp:1446 -#, fuzzy -msgid "ISO studio tungsten" -msgstr "ISO-herkkyys" - -#: src/tags.cpp:1447 -msgid "Other light source" -msgstr "" - -#: src/tags.cpp:1454 -msgid "Uncalibrated" -msgstr "" - -#: src/tags.cpp:1460 -msgid "One-chip color area" -msgstr "" - -#: src/tags.cpp:1461 -msgid "Two-chip color area" -msgstr "" - -#: src/tags.cpp:1462 -msgid "Three-chip color area" -msgstr "" - -#: src/tags.cpp:1463 -msgid "Color sequential area" -msgstr "" - -#: src/tags.cpp:1464 -msgid "Trilinear sensor" -msgstr "" - -#: src/tags.cpp:1465 -msgid "Color sequential linear" -msgstr "" - -#: src/tags.cpp:1470 -#, fuzzy -msgid "Film scanner" -msgstr "Tiedostonimi" - -#: src/tags.cpp:1471 -msgid "Reflexion print scanner" -msgstr "" - -#: src/tags.cpp:1472 -#, fuzzy -msgid "Digital still camera" -msgstr "Digitaalinen makro" - -#: src/tags.cpp:1477 -msgid "Directly photographed" -msgstr "" - -#: src/tags.cpp:1482 -#, fuzzy -msgid "Normal process" -msgstr "Normaali" - -#: src/tags.cpp:1483 -#, fuzzy -msgid "Custom process" -msgstr "Pakkaus" - -#: src/tags.cpp:1511 -msgid "Low gain up" -msgstr "" - -#: src/tags.cpp:1512 -msgid "High gain up" -msgstr "" - -#: src/tags.cpp:1513 -msgid "Low gain down" -msgstr "" - -#: src/tags.cpp:1514 -msgid "High gain down" -msgstr "" - -#: src/tags.cpp:1535 -msgid "Close view" -msgstr "" - -#: src/tags.cpp:1536 src/tags.cpp:1537 -msgid "Distant view" -msgstr "" - -#: src/tags.cpp:1543 -msgid "Exposure time, given in seconds (sec)." -msgstr "" - -#: src/tags.cpp:1553 -msgid "" -"Indicates the spectral sensitivity of each channel of the camera used. The " -"tag value is an ASCII string compatible with the standard developed by the " -"ASTM Technical Committee." -msgstr "" - -#: src/tags.cpp:1561 -msgid "Opto-Electoric Conversion Function" -msgstr "" - -#: src/tags.cpp:1562 -msgid "" -"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " -"14524. is the relationship between the camera optical input and the " -"image values." -msgstr "" - -#: src/tags.cpp:1566 -#, fuzzy -msgid "Sensitivity Type" -msgstr "Linssin tyyppi" - -#: src/tags.cpp:1567 -msgid "" -"The SensitivityType tag indicates PhotographicSensitivity tag. which one of " -"the parameters of ISO12232 is the Although it is an optional tag, it should " -"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " -"or 7 may be used in case that the values of plural parameters are the same." -msgstr "" - -#: src/tags.cpp:1573 -msgid "Standard Output Sensitivity" -msgstr "" - -#: src/tags.cpp:1574 -msgid "" -"This tag indicates the standard output sensitivity value of a camera or " -"input device defined in ISO 12232. When recording this tag, the " -"PhotographicSensitivity and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1578 -#, fuzzy -msgid "Recommended Exposure Index" -msgstr "Valotustila" - -#: src/tags.cpp:1579 -msgid "" -"This tag indicates the recommended exposure index value of a camera or input " -"device defined in ISO 12232. When recording this tag, the " -"PhotographicSensitivity and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1584 -msgid "" -"This tag indicates the ISO speed value of a camera or input device that is " -"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " -"and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1588 -#, fuzzy -msgid "ISO Speed Latitude yyy" -msgstr "ISO-herkkyys" - -#: src/tags.cpp:1589 -msgid "" -"This tag indicates the ISO speed latitude yyy value of a camera or input " -"device that is defined in ISO 12232. However, this tag shall not be recorded " -"without ISOSpeed and ISOSpeedLatitudezzz." -msgstr "" - -#: src/tags.cpp:1593 -#, fuzzy -msgid "ISO Speed Latitude zzz" -msgstr "ISO-herkkyys" - -#: src/tags.cpp:1594 -msgid "" -"This tag indicates the ISO speed latitude zzz value of a camera or input " -"device that is defined in ISO 12232. However, this tag shall not be recorded " -"without ISOSpeed and ISOSpeedLatitudeyyy." -msgstr "" - -#: src/tags.cpp:1599 -msgid "" -"The version of this standard supported. Nonexistence of this field is taken " -"to mean nonconformance to the standard." -msgstr "" - -#: src/tags.cpp:1602 -#, fuzzy -msgid "Date and Time (original)" -msgstr "Päiväys ja aika" - -#: src/tags.cpp:1603 -msgid "" -"The date and time when the original image data was generated. For a digital " -"still camera the date and time the picture was taken are recorded." -msgstr "" - -#: src/tags.cpp:1606 -#, fuzzy -msgid "Date and Time (digitized)" -msgstr "Päiväys ja aika" - -#: src/tags.cpp:1607 -msgid "The date and time when the image was stored as digital data." -msgstr "" - -#: src/tags.cpp:1610 -msgid "" -"Information specific to compressed data. The channels of each component are " -"arranged in order from the 1st component to the 4th. For uncompressed data " -"the data arrangement is given in the tag. " -"However, since can only express the order of Y, " -"Cb and Cr, this tag is provided for cases when compressed data uses " -"components other than Y, Cb, and Cr and to enable support of other sequences." -msgstr "" - -#: src/tags.cpp:1619 -msgid "Compressed Bits per Pixel" -msgstr "" - -#: src/tags.cpp:1620 -msgid "" -"Information specific to compressed data. The compression mode used for a " -"compressed image is indicated in unit bits per pixel." -msgstr "" - -#: src/tags.cpp:1624 -msgid "" -"Shutter speed. The unit is the APEX (Additive System of Photographic " -"Exposure) setting." -msgstr "" - -#: src/tags.cpp:1628 -msgid "The lens aperture. The unit is the APEX value." -msgstr "" - -#: src/tags.cpp:1631 -msgid "" -"The value of brightness. The unit is the APEX value. Ordinarily it is given " -"in the range of -99.99 to 99.99." -msgstr "" - -#: src/tags.cpp:1634 -msgid "Exposure Bias" -msgstr "Valotuksen korjaus" - -#: src/tags.cpp:1635 -msgid "" -"The exposure bias. The units is the APEX value. Ordinarily it is given in " -"the range of -99.99 to 99.99." -msgstr "" - -#: src/tags.cpp:1639 -msgid "" -"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " -"is given in the range of 00.00 to 99.99, but it is not limited to this range." -msgstr "" - -#: src/tags.cpp:1653 -msgid "" -"This tag is recorded when an image is taken using a strobe light (flash)." -msgstr "" - -#: src/tags.cpp:1656 -msgid "" -"The actual focal length of the lens, in mm. Conversion is not made to the " -"focal length of a 35 mm film camera." -msgstr "" - -#: src/tags.cpp:1660 -msgid "" -"This tag indicates the location and area of the main subject in the overall " -"scene." -msgstr "" - -#: src/tags.cpp:1663 -#, fuzzy -msgid "Maker Note" -msgstr "Makrotila" - -#: src/tags.cpp:1664 -msgid "" -"A tag for manufacturers of Exif writers to record any desired information. " -"The contents are up to the manufacturer." -msgstr "" - -#: src/tags.cpp:1668 -msgid "" -"A tag for Exif users to write keywords or comments on the image besides " -"those in , and without the character code limitations of " -"the tag." -msgstr "" - -#: src/tags.cpp:1672 -msgid "Sub-seconds Time" -msgstr "" - -#: src/tags.cpp:1673 -msgid "A tag used to record fractions of seconds for the tag." -msgstr "" - -#: src/tags.cpp:1675 -msgid "Sub-seconds Time Original" -msgstr "" - -#: src/tags.cpp:1676 -msgid "" -"A tag used to record fractions of seconds for the tag." -msgstr "" - -#: src/tags.cpp:1678 -msgid "Sub-seconds Time Digitized" -msgstr "" - -#: src/tags.cpp:1679 -msgid "" -"A tag used to record fractions of seconds for the tag." -msgstr "" - -#: src/tags.cpp:1681 -#, fuzzy -msgid "FlashPix Version" -msgstr "Ohjelman versio" - -#: src/tags.cpp:1682 -msgid "The FlashPix format version supported by a FPXR file." -msgstr "" - -#: src/tags.cpp:1685 -msgid "" -"The color space information tag is always recorded as the color space " -"specifier. Normally sRGB is used to define the color space based on the PC " -"monitor conditions and environment. If a color space other than sRGB is " -"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " -"treated as sRGB when it is converted to FlashPix." -msgstr "" - -#: src/tags.cpp:1694 -msgid "" -"Information specific to compressed data. When a compressed file is recorded, " -"the valid width of the meaningful image must be recorded in this tag, " -"whether or not there is padding data or a restart marker. This tag should " -"not exist in an uncompressed file." -msgstr "" - -#: src/tags.cpp:1701 -msgid "" -"Information specific to compressed data. When a compressed file is recorded, " -"the valid height of the meaningful image must be recorded in this tag, " -"whether or not there is padding data or a restart marker. This tag should " -"not exist in an uncompressed file. Since data padding is unnecessary in the " -"vertical direction, the number of lines recorded in this valid image height " -"tag will in fact be the same as that recorded in the SOF." -msgstr "" - -#: src/tags.cpp:1710 -msgid "" -"This tag is used to record the name of an audio file related to the image " -"data. The only relational information recorded here is the Exif audio file " -"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " -"characters). The path is not recorded." -msgstr "" - -#: src/tags.cpp:1716 -msgid "Interoperability IFD Pointer" -msgstr "" - -#: src/tags.cpp:1717 -msgid "" -"Interoperability IFD is composed of tags which stores the information to " -"ensure the Interoperability and pointed by the following tag located in Exif " -"IFD. The Interoperability structure of Interoperability IFD is the same as " -"TIFF defined IFD structure but does not contain the image data " -"characteristically compared with normal TIFF IFD." -msgstr "" - -#: src/tags.cpp:1725 -msgid "" -"Indicates the strobe energy at the time the image is captured, as measured " -"in Beam Candle Power Seconds (BCPS)." -msgstr "" - -#: src/tags.cpp:1729 -msgid "" -"This tag records the camera or input device spatial frequency table and SFR " -"values in the direction of image width, image height, and diagonal " -"direction, as specified in ISO 12233." -msgstr "" - -#: src/tags.cpp:1733 -msgid "Focal Plane X-Resolution" -msgstr "" - -#: src/tags.cpp:1734 -msgid "" -"Indicates the number of pixels in the image width (X) direction per " -" on the camera focal plane." -msgstr "" - -#: src/tags.cpp:1737 -msgid "Focal Plane Y-Resolution" -msgstr "" - -#: src/tags.cpp:1738 -msgid "" -"Indicates the number of pixels in the image height (V) direction per " -" on the camera focal plane." -msgstr "" - -#: src/tags.cpp:1742 -msgid "" -"Indicates the unit for measuring and " -". This value is the same as the ." -msgstr "" - -#: src/tags.cpp:1746 -msgid "" -"Indicates the location of the main subject in the scene. The value of this " -"tag represents the pixel at the center of the main subject relative to the " -"left edge, prior to rotation processing as per the tag. The first " -"value indicates the X column number and second indicates the Y row number." -msgstr "" - -#: src/tags.cpp:1752 -#, fuzzy -msgid "Exposure index" -msgstr "Valotustila" - -#: src/tags.cpp:1753 -msgid "" -"Indicates the exposure index selected on the camera or input device at the " -"time the image is captured." -msgstr "" - -#: src/tags.cpp:1757 -msgid "Indicates the image sensor type on the camera or input device." -msgstr "" - -#: src/tags.cpp:1760 -msgid "" -"Indicates the image source. If a DSC recorded the image, this tag value of " -"this tag always be set to 3, indicating that the image was recorded on a DSC." -msgstr "" - -#: src/tags.cpp:1765 -msgid "" -"Indicates the type of scene. If a DSC recorded the image, this tag value " -"must always be set to 1, indicating that the image was directly photographed." -msgstr "" - -#: src/tags.cpp:1769 -msgid "Color Filter Array Pattern" -msgstr "" - -#: src/tags.cpp:1770 -msgid "" -"Indicates the color filter array (CFA) geometric pattern of the image sensor " -"when a one-chip color area sensor is used. It does not apply to all sensing " -"methods." -msgstr "" - -#: src/tags.cpp:1775 -msgid "" -"This tag indicates the use of special processing on image data, such as " -"rendering geared to output. When special processing is performed, the reader " -"is expected to disable or minimize any further processing." -msgstr "" - -#: src/tags.cpp:1781 -msgid "" -"This tag indicates the exposure mode set when the image was shot. In auto-" -"bracketing mode, the camera shoots a series of frames of the same scene at " -"different exposure settings." -msgstr "" - -#: src/tags.cpp:1786 -msgid "This tag indicates the white balance mode set when the image was shot." -msgstr "" - -#: src/tags.cpp:1789 -msgid "" -"This tag indicates the digital zoom ratio when the image was shot. If the " -"numerator of the recorded value is 0, this indicates that digital zoom was " -"not used." -msgstr "" - -#: src/tags.cpp:1794 -msgid "" -"This tag indicates the equivalent focal length assuming a 35mm film camera, " -"in mm. A value of 0 means the focal length is unknown. Note that this tag " -"differs from the tag." -msgstr "" - -#: src/tags.cpp:1800 -msgid "" -"This tag indicates the type of scene that was shot. It can also be used to " -"record the mode in which the image was shot. Note that this differs from the " -" tag." -msgstr "" - -#: src/tags.cpp:1805 -msgid "This tag indicates the degree of overall image gain adjustment." -msgstr "" - -#: src/tags.cpp:1808 -msgid "" -"This tag indicates the direction of contrast processing applied by the " -"camera when the image was shot." -msgstr "" - -#: src/tags.cpp:1812 -msgid "" -"This tag indicates the direction of saturation processing applied by the " -"camera when the image was shot." -msgstr "" - -#: src/tags.cpp:1816 -msgid "" -"This tag indicates the direction of sharpness processing applied by the " -"camera when the image was shot." -msgstr "" - -#: src/tags.cpp:1820 -msgid "" -"This tag indicates information on the picture-taking conditions of a " -"particular camera model. The tag is used only to indicate the picture-taking " -"conditions in the reader." -msgstr "" - -#: src/tags.cpp:1825 -msgid "This tag indicates the distance to the subject." -msgstr "" - -#: src/tags.cpp:1828 -msgid "" -"This tag indicates an identifier assigned uniquely to each image. It is " -"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " -"fixed length." -msgstr "" - -#: src/tags.cpp:1832 -#, fuzzy -msgid "Camera Owner Name" -msgstr "Omistajan nimi" - -#: src/tags.cpp:1833 -msgid "" -"This tag records the owner of a camera used in photography as an ASCII " -"string." -msgstr "" - -#: src/tags.cpp:1836 -#, fuzzy -msgid "Body Serial Number" -msgstr "Sarjanumero" - -#: src/tags.cpp:1837 -msgid "" -"This tag records the serial number of the body of the camera that was used " -"in photography as an ASCII string." -msgstr "" - -#: src/tags.cpp:1840 -msgid "Lens Specification" -msgstr "" - -#: src/tags.cpp:1841 -msgid "" -"This tag notes minimum focal length, maximum focal length, minimum F number " -"in the minimum focal length, and minimum F number in the maximum focal " -"length, which are specification information for the lens that was used in " -"photography. When the minimum F number is unknown, the notation is 0/0" -msgstr "" - -#: src/tags.cpp:1847 -#, fuzzy -msgid "Lens Make" -msgstr "Linssin malli" - -#: src/tags.cpp:1848 -msgid "This tag records the lens manufactor as an ASCII string." -msgstr "" - -#: src/tags.cpp:1851 -msgid "" -"This tag records the lens's model name and model number as an ASCII string." -msgstr "" - -#: src/tags.cpp:1855 -msgid "" -"This tag records the serial number of the interchangeable lens that was used " -"in photography as an ASCII string." -msgstr "" - -#: src/tags.cpp:1859 src/tags.cpp:1860 -#, fuzzy -msgid "Unknown Exif tag" -msgstr "Tuntematon" - -#: src/tags.cpp:1871 -#, fuzzy -msgid "North" -msgstr "kuukausi" - -#: src/tags.cpp:1872 -#, fuzzy -msgid "South" -msgstr "Piste" - -#: src/tags.cpp:1877 -msgid "East" -msgstr "" - -#: src/tags.cpp:1878 -msgid "West" -msgstr "" - -#: src/tags.cpp:1883 -msgid "Above sea level" -msgstr "" - -#: src/tags.cpp:1884 -#, fuzzy -msgid "Below sea level" -msgstr "Salaman malli" - -#: src/tags.cpp:1889 -msgid "Measurement in progress" -msgstr "" - -#: src/tags.cpp:1890 -msgid "Measurement Interoperability" -msgstr "" - -#: src/tags.cpp:1895 -msgid "Two-dimensional measurement" -msgstr "" - -#: src/tags.cpp:1896 -msgid "Three-dimensional measurement" -msgstr "" - -#: src/tags.cpp:1901 -msgid "km/h" -msgstr "" - -#: src/tags.cpp:1902 -msgid "mph" -msgstr "" - -#: src/tags.cpp:1903 -msgid "knots" -msgstr "" - -#: src/tags.cpp:1908 -msgid "True direction" -msgstr "" - -#: src/tags.cpp:1909 -msgid "Magnetic direction" -msgstr "" - -#: src/tags.cpp:1914 -msgid "Kilometers" -msgstr "" - -#: src/tags.cpp:1915 -msgid "Miles" -msgstr "" - -#: src/tags.cpp:1916 -msgid "Knots" -msgstr "" - -#: src/tags.cpp:1921 -msgid "Without correction" -msgstr "" - -#: src/tags.cpp:1922 -msgid "Correction applied" -msgstr "" - -#: src/tags.cpp:1928 -msgid "" -"Indicates the version of . The version is given as 2.0.0.0. This " -"tag is mandatory when tag is present. (Note: The " -"tag is given in bytes, unlike the tag. When the version is " -"2.0.0.0, the tag value is 02000000.H)." -msgstr "" - -#: src/tags.cpp:1934 -msgid "GPS Latitude Reference" -msgstr "" - -#: src/tags.cpp:1935 -msgid "" -"Indicates whether the latitude is north or south latitude. The ASCII value " -"'N' indicates north latitude, and 'S' is south latitude." -msgstr "" - -#: src/tags.cpp:1939 -msgid "" -"Indicates the latitude. The latitude is expressed as three RATIONAL values " -"giving the degrees, minutes, and seconds, respectively. When degrees, " -"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " -"degrees and minutes are used and, for example, fractions of minutes are " -"given up to two decimal places, the format is dd/1,mmmm/100,0/1." -msgstr "" - -#: src/tags.cpp:1946 -msgid "GPS Longitude Reference" -msgstr "" - -#: src/tags.cpp:1947 -msgid "" -"Indicates whether the longitude is east or west longitude. ASCII 'E' " -"indicates east longitude, and 'W' is west longitude." -msgstr "" - -#: src/tags.cpp:1951 -msgid "" -"Indicates the longitude. The longitude is expressed as three RATIONAL values " -"giving the degrees, minutes, and seconds, respectively. When degrees, " -"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " -"degrees and minutes are used and, for example, fractions of minutes are " -"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." -msgstr "" - -#: src/tags.cpp:1959 -msgid "" -"Indicates the altitude used as the reference altitude. If the reference is " -"sea level and the altitude is above sea level, 0 is given. If the altitude " -"is below sea level, a value of 1 is given and the altitude is indicated as " -"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " -"that this tag is BYTE type, unlike other reference tags." -msgstr "" - -#: src/tags.cpp:1967 -msgid "" -"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " -"expressed as one RATIONAL value. The reference unit is meters." -msgstr "" - -#: src/tags.cpp:1971 -msgid "" -"Indicates the time as UTC (Coordinated Universal Time). is " -"expressed as three RATIONAL values giving the hour, minute, and second " -"(atomic clock)." -msgstr "" - -#: src/tags.cpp:1976 -msgid "" -"Indicates the GPS satellites used for measurements. This tag can be used to " -"describe the number of satellites, their ID number, angle of elevation, " -"azimuth, SNR and other information in ASCII notation. The format is not " -"specified. If the GPS receiver is incapable of taking measurements, value of " -"the tag is set to NULL." -msgstr "" - -#: src/tags.cpp:1983 -msgid "" -"Indicates the status of the GPS receiver when the image is recorded. \"A\" " -"means measurement is in progress, and \"V\" means the measurement is " -"Interoperability." -msgstr "" - -#: src/tags.cpp:1988 -msgid "" -"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " -"and \"3\" means three-dimensional measurement is in progress." -msgstr "" - -#: src/tags.cpp:1991 -msgid "GPS Data Degree of Precision" -msgstr "" - -#: src/tags.cpp:1992 -msgid "" -"Indicates the GPS DOP (data degree of precision). An HDOP value is written " -"during two-dimensional measurement, and PDOP during three-dimensional " -"measurement." -msgstr "" - -#: src/tags.cpp:1996 -msgid "" -"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " -"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." -msgstr "" - -#: src/tags.cpp:2000 -msgid "Indicates the speed of GPS receiver movement." -msgstr "" - -#: src/tags.cpp:2002 -msgid "GPS Track Ref" -msgstr "" - -#: src/tags.cpp:2003 -msgid "" -"Indicates the reference for giving the direction of GPS receiver movement. " -"\"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" - -#: src/tags.cpp:2007 -msgid "" -"Indicates the direction of GPS receiver movement. The range of values is " -"from 0.00 to 359.99." -msgstr "" - -#: src/tags.cpp:2011 -msgid "" -"Indicates the reference for giving the direction of the image when it is " -"captured. \"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" - -#: src/tags.cpp:2015 -msgid "" -"Indicates the direction of the image when it was captured. The range of " -"values is from 0.00 to 359.99." -msgstr "" - -#: src/tags.cpp:2019 -msgid "" -"Indicates the geodetic survey data used by the GPS receiver. If the survey " -"data is restricted to Japan, the value of this tag is \"TOKYO\" or " -"\"WGS-84\"." -msgstr "" - -#: src/tags.cpp:2022 -msgid "GPS Destination Latitude Refeference" -msgstr "" - -#: src/tags.cpp:2023 -msgid "" -"Indicates whether the latitude of the destination point is north or south " -"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " -"latitude." -msgstr "" - -#: src/tags.cpp:2027 -msgid "" -"Indicates the latitude of the destination point. The latitude is expressed " -"as three RATIONAL values giving the degrees, minutes, and seconds, " -"respectively. If latitude is expressed as degrees, minutes and seconds, a " -"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " -"and, for example, fractions of minutes are given up to two decimal places, " -"the format would be dd/1,mmmm/100,0/1." -msgstr "" - -#: src/tags.cpp:2034 -msgid "GPS Destination Longitude Reference" -msgstr "" - -#: src/tags.cpp:2035 -msgid "" -"Indicates whether the longitude of the destination point is east or west " -"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." -msgstr "" - -#: src/tags.cpp:2039 -msgid "" -"Indicates the longitude of the destination point. The longitude is expressed " -"as three RATIONAL values giving the degrees, minutes, and seconds, " -"respectively. If longitude is expressed as degrees, minutes and seconds, a " -"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " -"and, for example, fractions of minutes are given up to two decimal places, " -"the format would be ddd/1,mmmm/100,0/1." -msgstr "" - -#: src/tags.cpp:2046 -msgid "" -"Indicates the reference used for giving the bearing to the destination " -"point. \"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" - -#: src/tags.cpp:2050 -msgid "" -"Indicates the bearing to the destination point. The range of values is from " -"0.00 to 359.99." -msgstr "" - -#: src/tags.cpp:2053 -msgid "GPS Destination Distance Reference" -msgstr "" - -#: src/tags.cpp:2054 -msgid "" -"Indicates the unit used to express the distance to the destination point. \"K" -"\", \"M\" and \"N\" represent kilometers, miles and knots." -msgstr "" - -#: src/tags.cpp:2058 -msgid "Indicates the distance to the destination point." -msgstr "" - -#: src/tags.cpp:2061 -msgid "" -"A character string recording the name of the method used for location " -"finding. The first byte indicates the character code used, and this is " -"followed by the name of the method." -msgstr "" - -#: src/tags.cpp:2066 -msgid "" -"A character string recording the name of the GPS area. The first byte " -"indicates the character code used, and this is followed by the name of the " -"GPS area." -msgstr "" - -#: src/tags.cpp:2069 -msgid "GPS Date Stamp" -msgstr "" - -#: src/tags.cpp:2070 -msgid "" -"A character string recording date and time information relative to UTC " -"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." -msgstr "" - -#: src/tags.cpp:2074 -msgid "" -"Indicates whether differential correction is applied to the GPS receiver." -msgstr "" - -#: src/tags.cpp:2077 src/tags.cpp:2078 -msgid "Unknown GPSInfo tag" -msgstr "" - -#: src/tags.cpp:2089 -msgid "Interoperability Index" -msgstr "" - -#: src/tags.cpp:2090 -msgid "" -"Indicates the identification of the Interoperability rule. Use \"R98\" for " -"stating ExifR98 Rules. Four bytes used including the termination code " -"(NULL). see the separate volume of Recommended Exif Interoperability Rules " -"(ExifR98) for other tags used for ExifR98." -msgstr "" - -#: src/tags.cpp:2096 -#, fuzzy -msgid "Interoperability Version" -msgstr "Ohjelman versio" - -#: src/tags.cpp:2097 -msgid "Interoperability version" -msgstr "" - -#: src/tags.cpp:2099 -msgid "Related Image File Format" -msgstr "" - -#: src/tags.cpp:2100 -#, fuzzy -msgid "File format of image file" -msgstr "Tiedoston avaus epäonnistui\n" - -#: src/tags.cpp:2102 -msgid "Related Image Width" -msgstr "" - -#: src/tags.cpp:2105 -msgid "Related Image Length" -msgstr "" - -#: src/tags.cpp:2109 src/tags.cpp:2110 -msgid "Unknown Exif Interoperability tag" -msgstr "" - -#: src/tags.cpp:2121 -#, fuzzy -msgid "Offset" -msgstr "Pois" - -#: src/tags.cpp:2122 -msgid "Offset of the makernote from the start of the TIFF header." -msgstr "" - -#: src/tags.cpp:2124 -msgid "Byte Order" -msgstr "" - -#: src/tags.cpp:2125 -msgid "" -"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" -"endian)." -msgstr "" - -#: src/tags.cpp:2128 src/tags.cpp:2129 -msgid "Unknown Exiv2 Makernote info tag" -msgstr "" - -#: src/tags.cpp:2139 src/tags.cpp:2140 -#, fuzzy -msgid "Unknown tag" -msgstr "Tuntematon" - -#: src/tags.cpp:2662 -msgid "Digital zoom not used" -msgstr "" - -#: src/tiffimage.cpp:2034 -msgid "TIFF header, offset" -msgstr "" - -#: src/tiffimage.cpp:2039 -msgid "little endian encoded" -msgstr "" - -#: src/tiffimage.cpp:2040 -msgid "big endian encoded" -msgstr "" - -#, fuzzy -#~ msgid "Software firmware version" -#~ msgstr "Firmwaren versio" - -#, fuzzy -#~ msgid "White Balance Bracketing " -#~ msgstr "Valkotasapaino" diff --git a/platform/win32/msvc/external/exiv2/po/fr.gmo b/platform/win32/msvc/external/exiv2/po/fr.gmo deleted file mode 100644 index 614753f76e1..00000000000 Binary files a/platform/win32/msvc/external/exiv2/po/fr.gmo and /dev/null differ diff --git a/platform/win32/msvc/external/exiv2/po/fr.po b/platform/win32/msvc/external/exiv2/po/fr.po deleted file mode 100644 index 7579e725936..00000000000 --- a/platform/win32/msvc/external/exiv2/po/fr.po +++ /dev/null @@ -1,23316 +0,0 @@ -# translation of fr.po to français -# translation of fr.po to -# French translations of Exiv2. -# Copyright: -# This file is distributed under the same license as the Exiv2 package. -# -# Free Software Foundation, Inc., 2002. -# Caulier Gilles , 2006. -# Arnaud Launay , 2002. -# Olivier Tilloy , 2007. -# Stéphane Pontier , 2007. -# Fabien , 2008. -msgid "" -msgstr "" -"Project-Id-Version: fr\n" -"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" -"POT-Creation-Date: 2012-03-23 18:06+0800\n" -"PO-Revision-Date: 2008-05-28 15:49+0200\n" -"Last-Translator: Fabien \n" -"Language-Team: français \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.2\n" - -#: src/actions.cpp:253 src/actions.cpp:486 src/actions.cpp:698 -#: src/actions.cpp:715 src/actions.cpp:760 src/actions.cpp:850 -#: src/actions.cpp:993 src/actions.cpp:1035 src/actions.cpp:1104 -#: src/actions.cpp:1146 src/actions.cpp:1151 src/actions.cpp:1171 -#: src/actions.cpp:1176 src/actions.cpp:1208 src/actions.cpp:1451 -#: src/actions.cpp:1587 src/actions.cpp:1652 src/actions.cpp:1820 -msgid "Failed to open the file\n" -msgstr "Échec de l'ouverture du fichier\n" - -#: src/actions.cpp:263 -msgid "File name" -msgstr "Nom du fichier" - -#: src/actions.cpp:269 -msgid "File size" -msgstr "Taille du fichier" - -#: src/actions.cpp:270 src/actions.cpp:422 src/actions.cpp:1019 -msgid "Bytes" -msgstr "Octets" - -#: src/actions.cpp:274 -msgid "MIME type" -msgstr "Type MIME" - -#: src/actions.cpp:278 src/canonmn.cpp:785 src/minoltamn.cpp:500 -#: src/minoltamn.cpp:745 src/minoltamn.cpp:988 src/pentaxmn.cpp:892 -msgid "Image size" -msgstr "Taille de l'image" - -#: src/actions.cpp:283 src/actions.cpp:513 src/actions.cpp:773 -#: src/actions.cpp:1002 src/actions.cpp:1464 src/actions.cpp:1600 -#: src/actions.cpp:1665 -msgid "No Exif data found in the file\n" -msgstr "Pas de données Exif trouvées dans le fichier\n" - -#: src/actions.cpp:288 -msgid "Camera make" -msgstr "Marque de l'appareil" - -#: src/actions.cpp:291 -msgid "Camera model" -msgstr "Modèle de l'appareil" - -#: src/actions.cpp:294 -msgid "Image timestamp" -msgstr "Horodatage de l'image" - -#: src/actions.cpp:298 src/minoltamn.cpp:805 src/minoltamn.cpp:812 -#: src/minoltamn.cpp:1066 -msgid "Image number" -msgstr "Numéro de l'image" - -#: src/actions.cpp:303 src/minoltamn.cpp:515 src/minoltamn.cpp:798 -#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1368 src/pentaxmn.cpp:909 -#: src/pentaxmn.cpp:910 -msgid "Exposure time" -msgstr "Temps d'exposition" - -#: src/actions.cpp:315 src/canonmn.cpp:903 src/minoltamn.cpp:1262 -#: src/tags.cpp:1627 -msgid "Aperture" -msgstr "Ouverture" - -#: src/actions.cpp:325 -msgid "Exposure bias" -msgstr "Correction d'exposition" - -#: src/actions.cpp:328 src/canonmn.cpp:835 src/minoltamn.cpp:874 -#: src/minoltamn.cpp:1198 src/minoltamn.cpp:2098 src/panasonicmn.cpp:69 -#: src/pentaxmn.cpp:320 src/properties.cpp:563 src/sonymn.cpp:171 -#: src/tags.cpp:827 src/tags.cpp:1431 src/tags.cpp:1652 -msgid "Flash" -msgstr "Flash" - -#: src/actions.cpp:331 src/canonmn.cpp:897 src/panasonicmn.cpp:249 -msgid "Flash bias" -msgstr "Biais flash" - -#: src/actions.cpp:336 src/canonmn.cpp:201 src/minoltamn.cpp:539 -#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1372 -msgid "Focal length" -msgstr "Distance focale" - -#: src/actions.cpp:341 -msgid "35 mm equivalent" -msgstr "Équivalent à 35 mm" - -#: src/actions.cpp:351 -msgid "Subject distance" -msgstr "Distance du sujet" - -#: src/actions.cpp:362 -msgid "ISO speed" -msgstr "Sensibilité ISO" - -#: src/actions.cpp:365 src/minoltamn.cpp:491 src/minoltamn.cpp:742 -#: src/minoltamn.cpp:985 src/minoltamn.cpp:1353 src/olympusmn.cpp:659 -#: src/sigmamn.cpp:75 -msgid "Exposure mode" -msgstr "Mode d'exposition" - -#: src/actions.cpp:368 src/minoltamn.cpp:509 src/minoltamn.cpp:1006 -#: src/minoltamn.cpp:1395 src/olympusmn.cpp:661 src/sigmamn.cpp:78 -msgid "Metering mode" -msgstr "Mode de mesure" - -#: src/actions.cpp:371 src/canonmn.cpp:776 src/minoltamn.cpp:521 -#: src/olympusmn.cpp:202 src/olympusmn.cpp:663 src/panasonicmn.cpp:243 -msgid "Macro mode" -msgstr "Mode macro" - -#: src/actions.cpp:374 src/minoltamn.cpp:133 src/minoltamn.cpp:503 -#: src/minoltamn.cpp:748 src/minoltamn.cpp:991 src/pentaxmn.cpp:889 -#: src/sonymn.cpp:275 -msgid "Image quality" -msgstr "Qualité de l'image" - -#: src/actions.cpp:377 -msgid "Exif Resolution" -msgstr "Résolution Exif" - -#: src/actions.cpp:406 src/canonmn.cpp:1140 src/minoltamn.cpp:178 -#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:994 -#: src/minoltamn.cpp:1377 src/nikonmn.cpp:226 src/nikonmn.cpp:472 -#: src/nikonmn.cpp:528 src/olympusmn.cpp:880 src/sigmamn.cpp:72 -#: src/sonymn.cpp:290 -msgid "White balance" -msgstr "Balance des blancs" - -#: src/actions.cpp:409 src/minoltamn.cpp:114 src/olympusmn.cpp:426 -msgid "Thumbnail" -msgstr "Miniature" - -#: src/actions.cpp:413 src/actions.cpp:418 src/canonmn.cpp:339 -#: src/canonmn.cpp:1048 src/canonmn.cpp:1057 src/canonmn.cpp:1109 -#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2076 -#: src/nikonmn.cpp:173 src/nikonmn.cpp:188 src/nikonmn.cpp:903 -#: src/nikonmn.cpp:926 src/nikonmn.cpp:988 src/olympusmn.cpp:142 -#: src/olympusmn.cpp:720 src/olympusmn.cpp:727 src/olympusmn.cpp:1181 -#: src/olympusmn.cpp:1240 src/olympusmn.cpp:1337 src/olympusmn.cpp:1493 -#: src/olympusmn.cpp:1502 src/pentaxmn.cpp:230 src/pentaxmn.cpp:349 -#: src/pentaxmn.cpp:350 src/properties.cpp:914 src/properties.cpp:922 -#: src/tags.cpp:1510 -msgid "None" -msgstr "Aucun" - -#: src/actions.cpp:428 src/datasets.cpp:376 src/properties.cpp:357 -#: src/properties.cpp:523 src/tags.cpp:762 -msgid "Copyright" -msgstr "Droit d'auteur" - -#: src/actions.cpp:431 -msgid "Exif comment" -msgstr "Commentaire Exif" - -#: src/actions.cpp:526 -msgid "No IPTC data found in the file\n" -msgstr "Pas de données IPTC trouvées dans le fichier\n" - -#: src/actions.cpp:539 -msgid "No XMP data found in the file\n" -msgstr "Pas de données XMP trouvées dans le fichier\n" - -#: src/actions.cpp:638 src/actions.cpp:663 src/actions.cpp:684 -msgid "(Binary value suppressed)" -msgstr "(Valeur binaire supprimée)" - -#: src/actions.cpp:705 -msgid "JPEG comment" -msgstr "Commentaire JPEG" - -#: src/actions.cpp:730 -#, fuzzy -msgid "Preview" -msgstr "Données de prévisualisation" - -#: src/actions.cpp:734 src/actions.cpp:1074 src/properties.cpp:426 -msgid "pixels" -msgstr "" - -#: src/actions.cpp:736 src/actions.cpp:1076 -msgid "bytes" -msgstr "octets" - -#: src/actions.cpp:783 -msgid "Neither tag" -msgstr "Aucun des marqueurs" - -#: src/actions.cpp:784 -msgid "nor" -msgstr "ou" - -#: src/actions.cpp:785 -msgid "found in the file" -msgstr "n'a été trouvé dans le fichier" - -#: src/actions.cpp:790 -msgid "Image file creation timestamp not set in the file" -msgstr "Horodatage de création du fichier image non défini dans le fichier" - -#: src/actions.cpp:796 src/actions.cpp:1553 -msgid "Failed to parse timestamp" -msgstr "Échec de l'analyse de l'horodatage" - -#: src/actions.cpp:797 -msgid "in the file" -msgstr "dans le fichier" - -#: src/actions.cpp:808 -msgid "Updating timestamp to" -msgstr "Mise à jour de l'horodatage à" - -#: src/actions.cpp:902 -#, fuzzy -msgid "Erasing thumbnail data" -msgstr "octets de données de la miniature" - -#: src/actions.cpp:910 -msgid "Erasing Exif data from the file" -msgstr "Effacement des données Exif du fichier" - -#: src/actions.cpp:919 -msgid "Erasing IPTC data from the file" -msgstr "Effacement des données IPTC du fichier" - -#: src/actions.cpp:928 -msgid "Erasing JPEG comment from the file" -msgstr "Effacement du commentaire JPEG du fichier" - -#: src/actions.cpp:937 -msgid "Erasing XMP data from the file" -msgstr "Effacement des données XMP du fichier" - -#: src/actions.cpp:1009 -msgid "Image does not contain an Exif thumbnail\n" -msgstr "L'image ne contient pas de miniature Exif\n" - -#: src/actions.cpp:1018 -#, fuzzy -msgid "Writing thumbnail" -msgstr "de la miniature" - -#: src/actions.cpp:1019 src/actions.cpp:1077 -msgid "to file" -msgstr "dans le fichier" - -#: src/actions.cpp:1025 -msgid "Exif data doesn't contain a thumbnail\n" -msgstr "Les données Exif ne contiennent pas de miniature\n" - -#: src/actions.cpp:1055 src/actions.cpp:1081 -msgid "Image does not have preview" -msgstr "" - -#: src/actions.cpp:1070 -#, fuzzy -msgid "Writing preview" -msgstr "Écriture au format" - -#: src/actions.cpp:1241 -msgid "Setting JPEG comment" -msgstr "Définition du commentaire JPEG" - -#: src/actions.cpp:1282 -msgid "Add" -msgstr "Ajout de" - -#: src/actions.cpp:1304 src/actions.cpp:1378 -msgid "Warning" -msgstr "Avertissement" - -#: src/actions.cpp:1305 src/actions.cpp:1379 -msgid "Failed to read" -msgstr "Échec lors de la lecture" - -#: src/actions.cpp:1307 src/actions.cpp:1381 -msgid "value" -msgstr "valeur" - -#: src/actions.cpp:1318 -msgid "Set" -msgstr "Définition de" - -#: src/actions.cpp:1390 -msgid "Del" -msgstr "Effacement de" - -#: src/actions.cpp:1422 -msgid "Reg " -msgstr "Reg " - -#: src/actions.cpp:1506 -msgid "Timestamp of metadatum with key" -msgstr "Horodatage de la donnée de clé" - -#: src/actions.cpp:1507 -msgid "not set\n" -msgstr "non défini\n" - -#: src/actions.cpp:1512 -msgid "Adjusting" -msgstr "Ajustement de" - -#: src/actions.cpp:1512 -msgid "by" -msgstr "de" - -#: src/actions.cpp:1516 src/actions.cpp:1565 -msgid "years" -msgstr "années" - -#: src/actions.cpp:1519 -msgid "year" -msgstr "année" - -#: src/actions.cpp:1527 -msgid "months" -msgstr "mois" - -#: src/actions.cpp:1530 -msgid "month" -msgstr "mois" - -#: src/actions.cpp:1538 -msgid "days" -msgstr "jours" - -#: src/actions.cpp:1541 -msgid "day" -msgstr "jour" - -#: src/actions.cpp:1547 -msgid "s" -msgstr "s" - -#: src/actions.cpp:1563 -msgid "Can't adjust timestamp by" -msgstr "Échec de l'ajustement de l'horodatage" - -#: src/actions.cpp:1572 src/actions.cpp:1844 src/actions.cpp:1852 -#: src/actions.cpp:1860 src/actions.cpp:1869 src/actions.cpp:1979 -msgid "to" -msgstr "vers" - -#: src/actions.cpp:1607 -msgid "Standard Exif ISO tag exists; not modified\n" -msgstr "Tag EXIF standard (ISO), non modifié\n" - -#: src/actions.cpp:1615 -msgid "Setting Exif ISO value to" -msgstr "Définition de la valeur Exif de l'ISO à" - -#: src/actions.cpp:1671 -#, fuzzy -msgid "No Exif user comment found" -msgstr "Commentaire Exif" - -#: src/actions.cpp:1679 -msgid "Found Exif user comment with unexpected value type" -msgstr "" - -#: src/actions.cpp:1686 -msgid "No Exif UNICODE user comment found" -msgstr "" - -#: src/actions.cpp:1692 -#, fuzzy -msgid "Setting Exif UNICODE user comment to" -msgstr "Définition de la valeur Exif de l'ISO à" - -#: src/actions.cpp:1843 -msgid "Writing Exif data from" -msgstr "Écriture des données Exif de" - -#: src/actions.cpp:1851 -msgid "Writing IPTC data from" -msgstr "Écriture des données IPTC de" - -#: src/actions.cpp:1859 -msgid "Writing XMP data from" -msgstr "Écriture des données Exif de" - -#: src/actions.cpp:1868 -msgid "Writing JPEG comment from" -msgstr "Écriture du commentaire JPEG de" - -#: src/actions.cpp:1878 -msgid "Could not write metadata to file" -msgstr "Impossible d'écrire les métadonnées dans le fichier" - -#: src/actions.cpp:1905 -msgid "Filename format yields empty filename for the file" -msgstr "" -"Le format spécifié pour le nom du fichier produit un nom de fichier vide" - -#: src/actions.cpp:1914 -msgid "This file already has the correct name" -msgstr "Le nom de ce fichier est déjà correct" - -#: src/actions.cpp:1938 src/exiv2.cpp:168 -msgid "File" -msgstr "Le fichier" - -#: src/actions.cpp:1939 -msgid "exists. [O]verwrite, [r]ename or [s]kip?" -msgstr " existe. Écraser [O], [r]enommer ou passer au [s]uivant?" - -#: src/actions.cpp:1967 -msgid "Renaming file to" -msgstr "Renommage du fichier en" - -#: src/actions.cpp:1969 -msgid "updating timestamp" -msgstr "mise à jour de l'horodatage" - -#: src/actions.cpp:1978 -msgid "Failed to rename" -msgstr "Échec du renommage de" - -#: src/actions.cpp:2000 -msgid "Overwrite" -msgstr "Écraser" - -#: src/canonmn.cpp:58 src/canonmn.cpp:186 src/canonmn.cpp:245 -#: src/canonmn.cpp:260 src/canonmn.cpp:734 src/canonmn.cpp:747 -#: src/canonmn.cpp:1009 src/canonmn.cpp:1032 src/canonmn.cpp:1041 -#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 -#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 -#: src/minoltamn.cpp:1134 src/minoltamn.cpp:1275 src/minoltamn.cpp:1337 -#: src/minoltamn.cpp:1910 src/minoltamn.cpp:1924 src/minoltamn.cpp:1972 -#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 -#: src/nikonmn.cpp:204 src/nikonmn.cpp:641 src/nikonmn.cpp:666 -#: src/nikonmn.cpp:715 src/nikonmn.cpp:750 src/nikonmn.cpp:836 -#: src/nikonmn.cpp:881 src/nikonmn.cpp:968 src/nikonmn.cpp:1210 -#: src/nikonmn.cpp:1219 src/olympusmn.cpp:59 src/olympusmn.cpp:79 -#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 -#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:586 -#: src/olympusmn.cpp:648 src/olympusmn.cpp:912 src/olympusmn.cpp:1133 -#: src/olympusmn.cpp:1431 src/olympusmn.cpp:1432 src/olympusmn.cpp:1471 -#: src/panasonicmn.cpp:87 src/panasonicmn.cpp:94 src/panasonicmn.cpp:100 -#: src/panasonicmn.cpp:145 src/panasonicmn.cpp:154 src/panasonicmn.cpp:183 -#: src/panasonicmn.cpp:210 src/pentaxmn.cpp:183 src/pentaxmn.cpp:292 -#: src/pentaxmn.cpp:713 src/pentaxmn.cpp:719 src/sonymn.cpp:56 -#: src/sonymn.cpp:87 src/sonymn.cpp:141 src/sonymn.cpp:149 src/sonymn.cpp:156 -#: src/sonymn.cpp:199 src/sonymn.cpp:206 src/sonymn.cpp:237 src/sonymn.cpp:500 -msgid "Off" -msgstr "Désactivé" - -#: src/canonmn.cpp:59 src/canonmn.cpp:244 src/canonmn.cpp:262 -#: src/canonmn.cpp:735 src/canonmn.cpp:1035 src/fujimn.cpp:57 -#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 -#: src/minoltamn.cpp:1911 src/minoltamn.cpp:1923 src/nikonmn.cpp:63 -#: src/nikonmn.cpp:640 src/nikonmn.cpp:716 src/nikonmn.cpp:717 -#: src/nikonmn.cpp:1220 src/olympusmn.cpp:60 src/olympusmn.cpp:80 -#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 -#: src/olympusmn.cpp:1472 src/panasonicmn.cpp:93 src/pentaxmn.cpp:186 -#: src/pentaxmn.cpp:293 src/pentaxmn.cpp:714 src/sonymn.cpp:157 -#: src/sonymn.cpp:207 src/sonymn.cpp:238 -msgid "On" -msgstr "Activé" - -#: src/canonmn.cpp:69 -msgid "PowerShot A30" -msgstr "" - -#: src/canonmn.cpp:70 -msgid "PowerShot S300 / Digital IXUS 300 / IXY Digital 300" -msgstr "" - -#: src/canonmn.cpp:71 -msgid "PowerShot A20" -msgstr "" - -#: src/canonmn.cpp:72 -msgid "PowerShot A10" -msgstr "" - -#: src/canonmn.cpp:73 -msgid "PowerShot S110 / Digital IXUS v / IXY Digital 200" -msgstr "" - -#: src/canonmn.cpp:74 -msgid "PowerShot G2" -msgstr "" - -#: src/canonmn.cpp:75 -msgid "PowerShot S40" -msgstr "" - -#: src/canonmn.cpp:76 -msgid "PowerShot S30" -msgstr "" - -#: src/canonmn.cpp:77 -msgid "PowerShot A40" -msgstr "" - -#: src/canonmn.cpp:78 -msgid "EOS D30" -msgstr "" - -#: src/canonmn.cpp:79 -msgid "PowerShot A100" -msgstr "" - -#: src/canonmn.cpp:80 -msgid "PowerShot S200 / Digital IXUS v2 / IXY Digital 200a" -msgstr "" - -#: src/canonmn.cpp:81 -msgid "PowerShot A200" -msgstr "" - -#: src/canonmn.cpp:82 -msgid "PowerShot S330 / Digital IXUS 330 / IXY Digital 300a" -msgstr "" - -#: src/canonmn.cpp:83 -msgid "PowerShot G3" -msgstr "" - -#: src/canonmn.cpp:84 -msgid "PowerShot S45" -msgstr "" - -#: src/canonmn.cpp:85 -msgid "PowerShot SD100 / Digital IXUS II / IXY Digital 30" -msgstr "" - -#: src/canonmn.cpp:86 -msgid "PowerShot S230 / Digital IXUS v3 / IXY Digital 320" -msgstr "" - -#: src/canonmn.cpp:87 -msgid "PowerShot A70" -msgstr "" - -#: src/canonmn.cpp:88 -msgid "PowerShot A60" -msgstr "" - -#: src/canonmn.cpp:89 -msgid "PowerShot S400 / Digital IXUS 400 / IXY Digital 400" -msgstr "" - -#: src/canonmn.cpp:90 -msgid "PowerShot G5" -msgstr "" - -#: src/canonmn.cpp:91 -msgid "PowerShot A300" -msgstr "" - -#: src/canonmn.cpp:92 -msgid "PowerShot S50" -msgstr "" - -#: src/canonmn.cpp:93 -msgid "PowerShot A80" -msgstr "" - -#: src/canonmn.cpp:94 -msgid "PowerShot SD10 / Digital IXUS i / IXY Digital L" -msgstr "" - -#: src/canonmn.cpp:95 -msgid "PowerShot S1 IS" -msgstr "" - -#: src/canonmn.cpp:96 -msgid "PowerShot Pro1" -msgstr "" - -#: src/canonmn.cpp:97 -msgid "PowerShot S70" -msgstr "" - -#: src/canonmn.cpp:98 -msgid "PowerShot S60" -msgstr "" - -#: src/canonmn.cpp:99 -msgid "PowerShot G6" -msgstr "" - -#: src/canonmn.cpp:100 -msgid "PowerShot S500 / Digital IXUS 500 / IXY Digital 500" -msgstr "" - -#: src/canonmn.cpp:101 -msgid "PowerShot A75" -msgstr "" - -#: src/canonmn.cpp:102 -msgid "PowerShot SD110 / Digital IXUS IIs / IXY Digital 30a" -msgstr "" - -#: src/canonmn.cpp:103 -msgid "PowerShot A400" -msgstr "" - -#: src/canonmn.cpp:104 -msgid "PowerShot A310" -msgstr "" - -#: src/canonmn.cpp:105 -msgid "PowerShot A85" -msgstr "" - -#: src/canonmn.cpp:106 -msgid "PowerShot S410 / Digital IXUS 430 / IXY Digital 450" -msgstr "" - -#: src/canonmn.cpp:107 -msgid "PowerShot A95" -msgstr "" - -#: src/canonmn.cpp:108 -msgid "PowerShot SD300 / Digital IXUS 40 / IXY Digital 50" -msgstr "" - -#: src/canonmn.cpp:109 -msgid "PowerShot SD200 / Digital IXUS 30 / IXY Digital 40" -msgstr "" - -#: src/canonmn.cpp:110 -msgid "PowerShot A520" -msgstr "" - -#: src/canonmn.cpp:111 -msgid "PowerShot A510" -msgstr "" - -#: src/canonmn.cpp:112 -msgid "PowerShot SD20 / Digital IXUS i5 / IXY Digital L2" -msgstr "" - -#: src/canonmn.cpp:113 -msgid "PowerShot S2 IS" -msgstr "" - -#: src/canonmn.cpp:114 -msgid "PowerShot SD430 / IXUS Wireless / IXY Wireless" -msgstr "" - -#: src/canonmn.cpp:115 -msgid "PowerShot SD500 / Digital IXUS 700 / IXY Digital 600" -msgstr "" - -#: src/canonmn.cpp:116 -msgid "EOS D60" -msgstr "" - -#: src/canonmn.cpp:117 -msgid "PowerShot SD30 / Digital IXUS i zoom / IXY Digital L3" -msgstr "" - -#: src/canonmn.cpp:118 -msgid "PowerShot A430" -msgstr "" - -#: src/canonmn.cpp:119 -msgid "PowerShot A410" -msgstr "" - -#: src/canonmn.cpp:120 -msgid "PowerShot S80" -msgstr "" - -#: src/canonmn.cpp:121 -msgid "PowerShot A620" -msgstr "" - -#: src/canonmn.cpp:122 -msgid "PowerShot A610" -msgstr "" - -#: src/canonmn.cpp:123 -msgid "PowerShot SD630 / Digital IXUS 65 / IXY Digital 80" -msgstr "" - -#: src/canonmn.cpp:124 -msgid "PowerShot SD450 / Digital IXUS 55 / IXY Digital 60" -msgstr "" - -#: src/canonmn.cpp:125 -msgid "PowerShot TX1" -msgstr "" - -#: src/canonmn.cpp:126 -msgid "PowerShot SD400 / Digital IXUS 50 / IXY Digital 55" -msgstr "" - -#: src/canonmn.cpp:127 -msgid "PowerShot A420" -msgstr "" - -#: src/canonmn.cpp:128 -msgid "PowerShot SD900 / Digital IXUS 900 Ti / IXY Digital 1000" -msgstr "" - -#: src/canonmn.cpp:129 -msgid "PowerShot SD550 / Digital IXUS 750 / IXY Digital 700" -msgstr "" - -#: src/canonmn.cpp:130 -msgid "PowerShot A700" -msgstr "" - -#: src/canonmn.cpp:131 -msgid "PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS" -msgstr "" - -#: src/canonmn.cpp:132 -msgid "PowerShot S3 IS" -msgstr "" - -#: src/canonmn.cpp:133 -msgid "PowerShot A540" -msgstr "" - -#: src/canonmn.cpp:134 -msgid "PowerShot SD600 / Digital IXUS 60 / IXY Digital 70" -msgstr "" - -#: src/canonmn.cpp:135 -msgid "PowerShot G7" -msgstr "" - -#: src/canonmn.cpp:136 -msgid "PowerShot A530" -msgstr "" - -#: src/canonmn.cpp:137 -msgid "PowerShot SD800 IS / Digital IXUS 850 IS / IXY Digital 900 IS" -msgstr "" - -#: src/canonmn.cpp:138 -msgid "PowerShot SD40 / Digital IXUS i7 / IXY Digital L4" -msgstr "" - -#: src/canonmn.cpp:139 -msgid "PowerShot A710 IS" -msgstr "" - -#: src/canonmn.cpp:140 -msgid "PowerShot A640" -msgstr "" - -#: src/canonmn.cpp:141 -msgid "PowerShot A630" -msgstr "" - -#: src/canonmn.cpp:142 -msgid "PowerShot S5 IS" -msgstr "" - -#: src/canonmn.cpp:143 -msgid "PowerShot A460" -msgstr "" - -#: src/canonmn.cpp:144 -msgid "PowerShot SD850 IS / Digital IXUS 950 IS" -msgstr "" - -#: src/canonmn.cpp:145 -msgid "PowerShot A570 IS" -msgstr "" - -#: src/canonmn.cpp:146 -msgid "PowerShot A560" -msgstr "" - -#: src/canonmn.cpp:147 -msgid "PowerShot SD750 / Digital IXUS 75 / IXY Digital 90" -msgstr "" - -#: src/canonmn.cpp:148 -msgid "PowerShot SD1000 / Digital IXUS 70 / IXY Digital 10" -msgstr "" - -#: src/canonmn.cpp:149 -msgid "PowerShot A550" -msgstr "" - -#: src/canonmn.cpp:150 -msgid "PowerShot A450" -msgstr "" - -#: src/canonmn.cpp:151 -msgid "PowerShot Pro90 IS" -msgstr "" - -#: src/canonmn.cpp:152 -msgid "PowerShot G1" -msgstr "" - -#: src/canonmn.cpp:153 -msgid "PowerShot S100 / Digital IXUS / IXY Digital" -msgstr "" - -#: src/canonmn.cpp:154 -msgid "HV10" -msgstr "" - -#: src/canonmn.cpp:155 -msgid "iVIS DC50" -msgstr "" - -#: src/canonmn.cpp:156 -msgid "iVIS HV20" -msgstr "" - -#: src/canonmn.cpp:157 -msgid "EOS-1D" -msgstr "" - -#: src/canonmn.cpp:158 -msgid "EOS-1DS" -msgstr "" - -#: src/canonmn.cpp:159 -msgid "EOS 10D" -msgstr "" - -#: src/canonmn.cpp:160 -msgid "EOS-1D Mark III" -msgstr "" - -#: src/canonmn.cpp:161 -msgid "EOS Digital Rebel / 300D / Kiss Digital" -msgstr "" - -#: src/canonmn.cpp:162 -msgid "EOS-1D Mark II" -msgstr "" - -#: src/canonmn.cpp:163 -msgid "EOS 20D" -msgstr "" - -#: src/canonmn.cpp:164 -msgid "EOS-1Ds Mark II" -msgstr "" - -#: src/canonmn.cpp:165 -msgid "EOS Digital Rebel XT / 350D / Kiss Digital N" -msgstr "" - -#: src/canonmn.cpp:166 -msgid "EOS 5D" -msgstr "" - -#: src/canonmn.cpp:167 -msgid "EOS-1D Mark II N" -msgstr "" - -#: src/canonmn.cpp:168 -msgid "EOS 30D" -msgstr "" - -#: src/canonmn.cpp:169 -msgid "EOS Digital Rebel XTi / 400D / Kiss Digital X" -msgstr "" - -#: src/canonmn.cpp:170 -msgid "EOS 7D" -msgstr "" - -#: src/canonmn.cpp:171 -msgid "EOS Rebel T1i / 500D / Kiss X3" -msgstr "" - -#: src/canonmn.cpp:172 -msgid "EOS Rebel XS / 1000D / Kiss F" -msgstr "" - -#: src/canonmn.cpp:173 -msgid "EOS 50D" -msgstr "" - -#: src/canonmn.cpp:174 -msgid "EOS Rebel T2i / 550D / Kiss X4" -msgstr "" - -#: src/canonmn.cpp:175 -msgid "EOS-1D Mark IV" -msgstr "" - -#: src/canonmn.cpp:180 -#, fuzzy -msgid "Format 1" -msgstr "Format du fichier" - -#: src/canonmn.cpp:181 -#, fuzzy -msgid "Format 2" -msgstr "Format du fichier" - -#: src/canonmn.cpp:187 src/nikonmn.cpp:1211 -#, fuzzy -msgid "On (1)" -msgstr "Activé" - -#: src/canonmn.cpp:188 src/nikonmn.cpp:1212 -#, fuzzy -msgid "On (2)" -msgstr "Activé" - -#: src/canonmn.cpp:193 src/minoltamn.cpp:1142 src/nikonmn.cpp:136 -#: src/olympusmn.cpp:595 src/olympusmn.cpp:774 src/olympusmn.cpp:839 -#: src/pentaxmn.cpp:548 src/tags.cpp:1452 -msgid "sRGB" -msgstr "sRGB" - -#: src/canonmn.cpp:194 src/canonmn.cpp:1113 src/minoltamn.cpp:359 -#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 -#: src/minoltamn.cpp:1143 src/nikonmn.cpp:137 src/olympusmn.cpp:596 -#: src/olympusmn.cpp:775 src/olympusmn.cpp:840 src/pentaxmn.cpp:549 -#: src/sonymn.cpp:482 src/sonymn.cpp:507 src/tags.cpp:1453 -msgid "Adobe RGB" -msgstr "Adobe RGB" - -#: src/canonmn.cpp:199 src/canonmn.cpp:202 src/canonmn.cpp:227 -#: src/canonmn.cpp:228 src/canonmn.cpp:229 src/canonmn.cpp:781 -#: src/canonmn.cpp:783 src/canonmn.cpp:784 src/canonmn.cpp:796 -#: src/canonmn.cpp:805 src/canonmn.cpp:806 src/canonmn.cpp:813 -#: src/canonmn.cpp:883 src/canonmn.cpp:888 src/canonmn.cpp:890 -#: src/canonmn.cpp:892 src/canonmn.cpp:893 src/canonmn.cpp:894 -#: src/canonmn.cpp:895 src/canonmn.cpp:898 src/canonmn.cpp:899 -#: src/canonmn.cpp:900 src/canonmn.cpp:902 src/canonmn.cpp:906 -#: src/canonmn.cpp:907 src/canonmn.cpp:908 src/fujimn.cpp:214 -#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:238 -#: src/nikonmn.cpp:303 src/nikonmn.cpp:457 src/nikonmn.cpp:478 -#: src/nikonmn.cpp:487 src/nikonmn.cpp:533 src/nikonmn.cpp:585 -#: src/nikonmn.cpp:588 src/nikonmn.cpp:591 src/nikonmn.cpp:1003 -#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1495 src/nikonmn.cpp:2554 -#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 -#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 -#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 -#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 -#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 -#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 -#: src/olympusmn.cpp:1039 src/panasonicmn.cpp:239 src/panasonicmn.cpp:247 -#: src/panasonicmn.cpp:252 src/panasonicmn.cpp:260 src/panasonicmn.cpp:262 -#: src/panasonicmn.cpp:280 src/pentaxmn.cpp:323 src/properties.cpp:809 -#: src/properties.cpp:816 src/sonymn.cpp:293 src/sonymn.cpp:312 -#: src/sonymn.cpp:318 src/sonymn.cpp:321 src/sonymn.cpp:330 src/sonymn.cpp:333 -#: src/sonymn.cpp:336 src/sonymn.cpp:339 src/tags.cpp:1414 src/tags.cpp:1427 -#: src/tags.cpp:1533 src/tags.cpp:2565 src/tags.cpp:2678 -msgid "Unknown" -msgstr "Inconnu" - -#: src/canonmn.cpp:200 src/olympusmn.cpp:450 src/sonymn.cpp:286 -#: src/sonymn.cpp:287 -msgid "Camera Settings" -msgstr "Réglage appareil photo" - -#: src/canonmn.cpp:200 -msgid "Various camera settings" -msgstr "Divers réglages de l'appareil photo" - -#: src/canonmn.cpp:201 src/minoltamn.cpp:538 src/nikonmn.cpp:1347 -#: src/nikonmn.cpp:1372 src/properties.cpp:564 src/tags.cpp:828 -#: src/tags.cpp:1655 -msgid "Focal Length" -msgstr "Longueur focale" - -#: src/canonmn.cpp:203 src/sonymn.cpp:345 -msgid "Shot Info" -msgstr "Infos prise de vue" - -#: src/canonmn.cpp:203 -msgid "Shot information" -msgstr "Informations prise de vue" - -#: src/canonmn.cpp:204 src/olympusmn.cpp:101 src/olympusmn.cpp:1152 -#: src/sonymn.cpp:124 src/sonymn.cpp:308 src/sonymn.cpp:309 -msgid "Panorama" -msgstr "Panorama" - -#: src/canonmn.cpp:205 src/datasets.cpp:396 src/properties.cpp:761 -msgid "Image Type" -msgstr "Type d'image" - -#: src/canonmn.cpp:205 -msgid "Image type" -msgstr "Type d'image" - -#: src/canonmn.cpp:206 src/panasonicmn.cpp:237 -msgid "Firmware Version" -msgstr "Version du microcode" - -#: src/canonmn.cpp:206 src/panasonicmn.cpp:237 -msgid "Firmware version" -msgstr "Version de microcode" - -#: src/canonmn.cpp:207 src/canonmn.cpp:1066 src/nikonmn.cpp:869 -#, fuzzy -msgid "File Number" -msgstr "Nombre F" - -#: src/canonmn.cpp:207 src/nikonmn.cpp:869 -#, fuzzy -msgid "File number" -msgstr "Nom du fichier" - -#: src/canonmn.cpp:208 -msgid "Owner Name" -msgstr "Nom du propriétaire" - -#: src/canonmn.cpp:209 src/fujimn.cpp:182 src/nikonmn.cpp:550 -#: src/olympusmn.cpp:741 src/pentaxmn.cpp:1120 src/pentaxmn.cpp:1121 -#: src/sigmamn.cpp:56 -msgid "Serial Number" -msgstr "Numéro de série" - -#: src/canonmn.cpp:209 src/sigmamn.cpp:57 -msgid "Camera serial number" -msgstr "Numéro de série de l'appareil photo" - -#: src/canonmn.cpp:210 -#, fuzzy -msgid "Camera Info" -msgstr "Identifiant appareil photo" - -#: src/canonmn.cpp:210 -#, fuzzy -msgid "Camera info" -msgstr "Identifiant appareil photo" - -#: src/canonmn.cpp:211 src/canonmn.cpp:223 -msgid "Custom Functions" -msgstr "Fonctions personnalisées" - -#: src/canonmn.cpp:212 -msgid "ModelID" -msgstr "Modèle" - -#: src/canonmn.cpp:212 -msgid "Model ID" -msgstr "Numéro modèle" - -#: src/canonmn.cpp:213 src/olympusmn.cpp:219 -msgid "Picture Info" -msgstr "Infos image" - -#: src/canonmn.cpp:213 -msgid "Picture info" -msgstr "Infos image" - -#: src/canonmn.cpp:214 -#, fuzzy -msgid "Thumbnail Image Valid Area" -msgstr "Miniature" - -#: src/canonmn.cpp:214 -#, fuzzy -msgid "Thumbnail image valid area" -msgstr "Miniature" - -#: src/canonmn.cpp:215 -#, fuzzy -msgid "Serial Number Format" -msgstr "Numéro de série 2" - -#: src/canonmn.cpp:215 -#, fuzzy -msgid "Serial number format" -msgstr "Numéro de série 2" - -#: src/canonmn.cpp:216 src/minoltamn.cpp:2042 src/olympusmn.cpp:110 -#: src/olympusmn.cpp:503 src/pentaxmn.cpp:202 -#, fuzzy -msgid "Super Macro" -msgstr "Super macro" - -#: src/canonmn.cpp:216 src/canonmn.cpp:323 src/canonmn.cpp:393 -#: src/olympusmn.cpp:81 -msgid "Super macro" -msgstr "Super macro" - -#: src/canonmn.cpp:217 src/nikonmn.cpp:567 -#, fuzzy -msgid "AF Info" -msgstr "Informations mise au point" - -#: src/canonmn.cpp:217 src/nikonmn.cpp:567 -#, fuzzy -msgid "AF info" -msgstr "Informations mise au point" - -#: src/canonmn.cpp:218 -msgid "Original Decision Data Offset" -msgstr "" - -#: src/canonmn.cpp:218 -msgid "Original decision data offset" -msgstr "" - -#: src/canonmn.cpp:219 -msgid "White Balance Table" -msgstr "Table de balance des blancs" - -#: src/canonmn.cpp:219 -msgid "White balance table" -msgstr "Table de balance des blancs" - -#: src/canonmn.cpp:220 -#, fuzzy -msgid "LensModel" -msgstr "Mode scène" - -#: src/canonmn.cpp:221 src/olympusmn.cpp:742 src/panasonicmn.cpp:250 -#, fuzzy -msgid "Internal Serial Number" -msgstr "Numéro de série de l'appareil photo" - -#: src/canonmn.cpp:221 src/olympusmn.cpp:742 -#, fuzzy -msgid "Internal serial number" -msgstr "Numéro de série de l'appareil photo" - -#: src/canonmn.cpp:222 -msgid "Dust Removal Data" -msgstr "" - -#: src/canonmn.cpp:222 -msgid "Dust removal data" -msgstr "" - -#: src/canonmn.cpp:223 -#, fuzzy -msgid "Custom functions" -msgstr "Fonctions personnalisées" - -#: src/canonmn.cpp:224 -#, fuzzy -msgid "Processing Info" -msgstr "Logiciel de traitement" - -#: src/canonmn.cpp:224 -#, fuzzy -msgid "Processing info" -msgstr "Logiciel de traitement" - -#: src/canonmn.cpp:225 -#, fuzzy -msgid "Measured Color" -msgstr "Couleur naturelle" - -#: src/canonmn.cpp:225 -#, fuzzy -msgid "Measured color" -msgstr "Couleur naturelle" - -#: src/canonmn.cpp:226 -#, fuzzy -msgid "ColorSpace" -msgstr "Espace des couleurs" - -#: src/canonmn.cpp:230 -#, fuzzy -msgid "VRD Offset" -msgstr "décalage" - -#: src/canonmn.cpp:230 -#, fuzzy -msgid "VRD offset" -msgstr "décalage" - -#: src/canonmn.cpp:231 -#, fuzzy -msgid "Sensor Info" -msgstr "Objectif" - -#: src/canonmn.cpp:231 -#, fuzzy -msgid "Sensor info" -msgstr "Infos prise de vue" - -#: src/canonmn.cpp:232 -#, fuzzy -msgid "Color Data" -msgstr "Matrice des couleurs" - -#: src/canonmn.cpp:232 -#, fuzzy -msgid "Color data" -msgstr "Données de mes couleurs" - -#: src/canonmn.cpp:234 -msgid "Unknown CanonMakerNote tag" -msgstr "Marqueur de note du fabriquant Canon inconnu" - -#: src/canonmn.cpp:250 src/minoltamn.cpp:78 src/minoltamn.cpp:246 -#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2060 -msgid "Economy" -msgstr "Économie" - -#: src/canonmn.cpp:251 src/canonmn.cpp:349 src/fujimn.cpp:64 src/fujimn.cpp:84 -#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 -#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 -#: src/nikonmn.cpp:207 src/nikonmn.cpp:428 src/olympusmn.cpp:150 -#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1108 -#: src/olympusmn.cpp:1150 src/panasonicmn.cpp:56 src/panasonicmn.cpp:101 -#: src/panasonicmn.cpp:161 src/panasonicmn.cpp:197 src/pentaxmn.cpp:198 -#: src/pentaxmn.cpp:343 src/pentaxmn.cpp:356 src/pentaxmn.cpp:367 -#: src/sonymn.cpp:134 src/sonymn.cpp:216 src/sonymn.cpp:222 src/tags.cpp:1519 -#: src/tags.cpp:1526 -msgid "Normal" -msgstr "Normal" - -#: src/canonmn.cpp:252 src/minoltamn.cpp:76 src/minoltamn.cpp:244 -#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2004 -#: src/minoltamn.cpp:2058 src/sonymn.cpp:135 -msgid "Fine" -msgstr "Fin" - -#: src/canonmn.cpp:253 src/olympusmn.cpp:643 src/pentaxmn.cpp:156 -msgid "RAW" -msgstr "BRUT" - -#: src/canonmn.cpp:254 -msgid "Superfine" -msgstr "Super fin" - -#: src/canonmn.cpp:255 -#, fuzzy -msgid "Normal Movie" -msgstr "Processus normal" - -#: src/canonmn.cpp:261 src/canonmn.cpp:357 src/canonmn.cpp:385 -#: src/canonmn.cpp:830 src/canonmn.cpp:1036 src/fujimn.cpp:71 -#: src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 -#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 -#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 -#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1119 -#: src/minoltamn.cpp:1182 src/minoltamn.cpp:1235 src/minoltamn.cpp:1976 -#: src/minoltamn.cpp:2043 src/minoltamn.cpp:2092 src/nikonmn.cpp:81 -#: src/nikonmn.cpp:445 src/olympusmn.cpp:94 src/olympusmn.cpp:156 -#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:605 -#: src/olympusmn.cpp:1196 src/olympusmn.cpp:1202 src/olympusmn.cpp:1203 -#: src/panasonicmn.cpp:64 src/panasonicmn.cpp:77 src/pentaxmn.cpp:56 -#: src/pentaxmn.cpp:211 src/pentaxmn.cpp:311 src/sonymn.cpp:57 -#: src/sonymn.cpp:90 src/sonymn.cpp:105 src/sonymn.cpp:163 src/sonymn.cpp:200 -#: src/sonymn.cpp:499 src/sonymn.cpp:516 src/tags.cpp:1403 src/tags.cpp:1488 -#: src/tags.cpp:1495 -msgid "Auto" -msgstr "Automatique" - -#: src/canonmn.cpp:263 src/olympusmn.cpp:532 -msgid "Red-eye" -msgstr "Réduction yeux rouges" - -#: src/canonmn.cpp:264 -msgid "Slow sync" -msgstr "Synchro lente" - -#: src/canonmn.cpp:265 -msgid "Auto + red-eye" -msgstr "Flash automatique + réduction yeux rouges" - -#: src/canonmn.cpp:266 -msgid "On + red-eye" -msgstr "Flash + réduction yeux rouges" - -#: src/canonmn.cpp:267 src/canonmn.cpp:268 src/minoltamn.cpp:1339 -#: src/nikonmn.cpp:904 src/olympusmn.cpp:144 -msgid "External" -msgstr "Externe" - -#: src/canonmn.cpp:273 -msgid "Single / timer" -msgstr "Temporisateur" - -#: src/canonmn.cpp:274 src/canonmn.cpp:288 src/canonmn.cpp:720 -#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1097 -#: src/minoltamn.cpp:1149 src/nikonmn.cpp:151 src/nikonmn.cpp:162 -#: src/pentaxmn.cpp:534 -msgid "Continuous" -msgstr "Continue" - -#: src/canonmn.cpp:275 src/olympusmn.cpp:103 -msgid "Movie" -msgstr "Film" - -#: src/canonmn.cpp:276 -msgid "Continuous, speed priority" -msgstr "Continue, Priorité vitesse obturation" - -#: src/canonmn.cpp:277 -msgid "Continuous, low" -msgstr "Continue, basse" - -#: src/canonmn.cpp:278 -msgid "Continuous, high" -msgstr "Continue, Haute" - -#: src/canonmn.cpp:283 -msgid "One shot AF" -msgstr "AF One Shot" - -#: src/canonmn.cpp:284 -msgid "AI servo AF" -msgstr "AF AI Servo" - -#: src/canonmn.cpp:285 -msgid "AI focus AF" -msgstr "AF AI Focus" - -#: src/canonmn.cpp:286 src/canonmn.cpp:289 src/minoltamn.cpp:374 -msgid "Manual focus" -msgstr "Mise au point manuel" - -#: src/canonmn.cpp:287 src/canonmn.cpp:719 src/sonymn.cpp:231 -msgid "Single" -msgstr "Simple" - -#: src/canonmn.cpp:290 src/canonmn.cpp:291 src/canonmn.cpp:318 -#: src/canonmn.cpp:392 -msgid "Pan focus" -msgstr "Continue" - -#: src/canonmn.cpp:296 src/canonmn.cpp:1018 src/minoltamn.cpp:666 -#: src/minoltamn.cpp:852 src/sonymn.cpp:534 -msgid "Large" -msgstr "Grande" - -#: src/canonmn.cpp:297 src/canonmn.cpp:762 src/canonmn.cpp:1019 -#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1222 -#: src/sonymn.cpp:535 -msgid "Medium" -msgstr "Moyenne" - -#: src/canonmn.cpp:298 src/canonmn.cpp:1020 src/minoltamn.cpp:668 -#: src/minoltamn.cpp:854 src/minoltamn.cpp:1223 src/sonymn.cpp:536 -msgid "Small" -msgstr "Petite" - -#: src/canonmn.cpp:299 src/canonmn.cpp:1021 -msgid "Medium 1" -msgstr "Moyenne 1" - -#: src/canonmn.cpp:300 src/canonmn.cpp:1022 -msgid "Medium 2" -msgstr "Moyenne 2" - -#: src/canonmn.cpp:301 src/canonmn.cpp:1023 -msgid "Medium 3" -msgstr "Moyenne 3" - -#: src/canonmn.cpp:306 -msgid "Full auto" -msgstr "Complètement automatique" - -#: src/canonmn.cpp:307 src/canonmn.cpp:384 src/canonmn.cpp:708 -#: src/canonmn.cpp:1093 src/fujimn.cpp:110 src/fujimn.cpp:135 -#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 -#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 -#: src/minoltamn.cpp:876 src/minoltamn.cpp:1281 src/nikonmn.cpp:974 -#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 -#: src/panasonicmn.cpp:68 src/panasonicmn.cpp:71 src/panasonicmn.cpp:72 -#: src/panasonicmn.cpp:78 src/panasonicmn.cpp:111 src/pentaxmn.cpp:58 -#: src/pentaxmn.cpp:201 src/pentaxmn.cpp:316 src/pentaxmn.cpp:500 -#: src/pentaxmn.cpp:512 src/sigmamn.cpp:157 src/sonymn.cpp:119 -#: src/sonymn.cpp:164 src/sonymn.cpp:460 src/sonymn.cpp:517 src/tags.cpp:1402 -#: src/tags.cpp:1489 src/tags.cpp:1496 -msgid "Manual" -msgstr "Manuel" - -#: src/canonmn.cpp:308 src/canonmn.cpp:1125 src/fujimn.cpp:117 -#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1887 -#: src/minoltamn.cpp:2039 src/olympusmn.cpp:98 src/pentaxmn.cpp:472 -#: src/pentaxmn.cpp:705 src/sonymn.cpp:478 src/sonymn.cpp:527 -#: src/tags.cpp:1502 -msgid "Landscape" -msgstr "Paysage" - -#: src/canonmn.cpp:309 -msgid "Fast shutter" -msgstr "Obturation rapide" - -#: src/canonmn.cpp:310 -msgid "Slow shutter" -msgstr "Obturation lente" - -#: src/canonmn.cpp:311 src/minoltamn.cpp:68 src/minoltamn.cpp:951 -#: src/minoltamn.cpp:2036 src/olympusmn.cpp:99 src/pentaxmn.cpp:478 -msgid "Night Scene" -msgstr "Scène de nuit" - -#: src/canonmn.cpp:312 -msgid "Gray scale" -msgstr "Niveaux de gris" - -#: src/canonmn.cpp:313 src/canonmn.cpp:751 src/canonmn.cpp:1058 -#: src/minoltamn.cpp:61 src/nikonmn.cpp:190 src/nikonmn.cpp:677 -#: src/olympusmn.cpp:615 src/olympusmn.cpp:632 src/olympusmn.cpp:856 -#: src/olympusmn.cpp:871 src/panasonicmn.cpp:149 src/sonymn.cpp:488 -msgid "Sepia" -msgstr "Sépia" - -#: src/canonmn.cpp:314 src/canonmn.cpp:1111 src/canonmn.cpp:1124 -#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 -#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1886 -#: src/minoltamn.cpp:2034 src/olympusmn.cpp:96 src/olympusmn.cpp:613 -#: src/panasonicmn.cpp:102 src/pentaxmn.cpp:471 src/pentaxmn.cpp:704 -#: src/sonymn.cpp:106 src/sonymn.cpp:477 src/sonymn.cpp:523 src/tags.cpp:1503 -msgid "Portrait" -msgstr "Portrait" - -#: src/canonmn.cpp:315 src/fujimn.cpp:118 src/minoltamn.cpp:843 -#: src/minoltamn.cpp:2038 src/panasonicmn.cpp:104 src/sonymn.cpp:524 -msgid "Sports" -msgstr "Sports" - -#: src/canonmn.cpp:316 -msgid "Macro / close-up" -msgstr "Macro / gros plan" - -#: src/canonmn.cpp:317 src/fujimn.cpp:149 -msgid "Black & white" -msgstr "Noir & Blanc" - -#: src/canonmn.cpp:319 src/canonmn.cpp:748 src/olympusmn.cpp:134 -#: src/olympusmn.cpp:610 src/olympusmn.cpp:852 src/panasonicmn.cpp:199 -#: src/sonymn.cpp:476 src/sonymn.cpp:506 -msgid "Vivid" -msgstr "Vif" - -#: src/canonmn.cpp:320 src/canonmn.cpp:749 src/canonmn.cpp:1126 -#: src/minoltamn.cpp:1892 src/minoltamn.cpp:1893 src/olympusmn.cpp:621 -#: src/olympusmn.cpp:631 src/olympusmn.cpp:861 src/olympusmn.cpp:870 -#: src/sonymn.cpp:483 src/sonymn.cpp:508 -msgid "Neutral" -msgstr "Neutre" - -#: src/canonmn.cpp:321 -msgid "Flash off" -msgstr "Flash désactivé" - -#: src/canonmn.cpp:322 -msgid "Long shutter" -msgstr "Temps de pose lent" - -#: src/canonmn.cpp:324 -msgid "Foliage" -msgstr "Feuillage" - -#: src/canonmn.cpp:325 src/olympusmn.cpp:106 -msgid "Indoor" -msgstr "Intérieur" - -#: src/canonmn.cpp:326 src/fujimn.cpp:131 src/olympusmn.cpp:107 -#: src/panasonicmn.cpp:116 src/sonymn.cpp:117 -msgid "Fireworks" -msgstr "Feux d'artifices" - -#: src/canonmn.cpp:327 src/fujimn.cpp:129 src/olympusmn.cpp:129 -#: src/panasonicmn.cpp:128 src/sonymn.cpp:107 -msgid "Beach" -msgstr "Plage" - -#: src/canonmn.cpp:328 src/canonmn.cpp:846 src/fujimn.cpp:132 -#: src/panasonicmn.cpp:127 src/sonymn.cpp:122 -msgid "Underwater" -msgstr "Sous marin" - -#: src/canonmn.cpp:329 src/fujimn.cpp:130 src/olympusmn.cpp:130 -#: src/panasonicmn.cpp:118 src/sonymn.cpp:108 -msgid "Snow" -msgstr "Neige" - -#: src/canonmn.cpp:330 -msgid "Kids & pets" -msgstr "Enfants & animaux" - -#: src/canonmn.cpp:331 -msgid "Night SnapShot" -msgstr "Instantané de nuit" - -#: src/canonmn.cpp:332 -msgid "Digital macro" -msgstr "Zoom numérique" - -#: src/canonmn.cpp:333 -msgid "My Colors" -msgstr "Mes couleurs" - -#: src/canonmn.cpp:334 src/minoltamn.cpp:343 -msgid "Still image" -msgstr "Image fixe" - -#: src/canonmn.cpp:342 src/canonmn.cpp:343 src/properties.cpp:859 -#: src/properties.cpp:881 src/tags.cpp:1421 src/tags.cpp:1422 -msgid "Other" -msgstr "Autre" - -#: src/canonmn.cpp:348 src/canonmn.cpp:763 src/canonmn.cpp:1101 -#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1164 -#: src/minoltamn.cpp:1170 src/minoltamn.cpp:1176 src/minoltamn.cpp:1345 -#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:206 -#: src/olympusmn.cpp:171 src/olympusmn.cpp:1134 src/panasonicmn.cpp:162 -#: src/panasonicmn.cpp:166 src/pentaxmn.cpp:342 src/pentaxmn.cpp:355 -#: src/sonymn.cpp:214 src/tags.cpp:1527 -msgid "Low" -msgstr "Faible" - -#: src/canonmn.cpp:350 src/canonmn.cpp:1103 src/fujimn.cpp:85 -#: src/fujimn.cpp:94 src/minoltamn.cpp:1165 src/minoltamn.cpp:1171 -#: src/minoltamn.cpp:1177 src/nikonmn.cpp:71 src/nikonmn.cpp:79 -#: src/nikonmn.cpp:208 src/olympusmn.cpp:169 src/olympusmn.cpp:1136 -#: src/panasonicmn.cpp:55 src/panasonicmn.cpp:163 src/panasonicmn.cpp:168 -#: src/panasonicmn.cpp:169 src/pentaxmn.cpp:344 src/pentaxmn.cpp:357 -#: src/sonymn.cpp:217 src/tags.cpp:1528 -msgid "High" -msgstr "Élevée" - -#: src/canonmn.cpp:355 src/canonmn.cpp:760 src/canonmn.cpp:764 -#: src/canonmn.cpp:769 src/canonmn.cpp:1099 src/nikonmn.cpp:671 -#: src/nikonmn.cpp:686 src/nikonmn.cpp:910 src/nikonmn.cpp:963 -#: src/nikonmn.cpp:1218 src/olympusmn.cpp:620 src/olympusmn.cpp:630 -#: src/sonymn.cpp:129 src/sonymn.cpp:136 src/sonymn.cpp:144 src/sonymn.cpp:181 -#: src/sonymn.cpp:194 src/sonymn.cpp:201 src/sonymn.cpp:209 src/sonymn.cpp:215 -#: src/sonymn.cpp:226 src/sonymn.cpp:232 src/sonymn.cpp:239 -msgid "n/a" -msgstr "n/a" - -#: src/canonmn.cpp:356 -#, fuzzy -msgid "Auto High" -msgstr "Auto (lumière du jour)" - -#: src/canonmn.cpp:374 src/sonymn.cpp:186 -msgid "Default" -msgstr "Défaut" - -#: src/canonmn.cpp:375 src/minoltamn.cpp:265 src/minoltamn.cpp:883 -#: src/minoltamn.cpp:933 src/minoltamn.cpp:1129 src/minoltamn.cpp:1938 -#: src/olympusmn.cpp:492 src/panasonicmn.cpp:110 src/pentaxmn.cpp:306 -#: src/sonymn.cpp:470 src/tags.cpp:1417 -msgid "Spot" -msgstr "Spot" - -#: src/canonmn.cpp:376 src/sigmamn.cpp:168 src/tags.cpp:1415 -msgid "Average" -msgstr "Moyenne" - -#: src/canonmn.cpp:377 -msgid "Evaluative" -msgstr "Évaluatif" - -#: src/canonmn.cpp:378 src/tags.cpp:1420 -msgid "Partial" -msgstr "Partielle" - -#: src/canonmn.cpp:379 src/minoltamn.cpp:882 -msgid "Center weighted" -msgstr "Centre pondéré" - -#: src/canonmn.cpp:386 -msgid "Not known" -msgstr "Non connu" - -#: src/canonmn.cpp:387 src/canonmn.cpp:776 src/fujimn.cpp:207 -#: src/minoltamn.cpp:847 src/minoltamn.cpp:2041 src/olympusmn.cpp:109 -#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:109 -#: src/panasonicmn.cpp:213 src/panasonicmn.cpp:214 src/panasonicmn.cpp:243 -#: src/pentaxmn.cpp:199 src/pentaxmn.cpp:473 src/sonymn.cpp:390 -#: src/sonymn.cpp:391 src/sonymn.cpp:528 src/tags.cpp:1534 -msgid "Macro" -msgstr "Macro" - -#: src/canonmn.cpp:388 -msgid "Very close" -msgstr "Très près" - -#: src/canonmn.cpp:389 -msgid "Close" -msgstr "Près" - -#: src/canonmn.cpp:390 -#, fuzzy -msgid "Middle range" -msgstr "Modèle" - -#: src/canonmn.cpp:391 -msgid "Far range" -msgstr "Loin" - -#: src/canonmn.cpp:394 src/pentaxmn.cpp:200 src/tags.cpp:2568 -msgid "Infinity" -msgstr "Infinie" - -#: src/canonmn.cpp:399 -msgid "Manual AF point selection" -msgstr "Sélection point AF manuelle" - -#: src/canonmn.cpp:400 -msgid "None (MF)" -msgstr "Aucun (MF)" - -#: src/canonmn.cpp:401 -msgid "Auto-selected" -msgstr "Sélection automatique" - -#: src/canonmn.cpp:402 src/minoltamn.cpp:287 src/minoltamn.cpp:706 -#: src/minoltamn.cpp:921 src/minoltamn.cpp:1953 src/nikonmn.cpp:103 -#: src/olympusmn.cpp:1491 src/pentaxmn.cpp:222 src/pentaxmn.cpp:237 -msgid "Right" -msgstr "Droit" - -#: src/canonmn.cpp:403 src/canonmn.cpp:741 src/minoltamn.cpp:284 -#: src/minoltamn.cpp:703 src/minoltamn.cpp:1950 src/nikonmn.cpp:99 -#: src/nikonmn.cpp:792 src/nikonmn.cpp:807 src/pentaxmn.cpp:220 -#: src/pentaxmn.cpp:236 src/sigmamn.cpp:169 -msgid "Center" -msgstr "Centre" - -#: src/canonmn.cpp:404 src/minoltamn.cpp:291 src/minoltamn.cpp:710 -#: src/minoltamn.cpp:925 src/minoltamn.cpp:1957 src/nikonmn.cpp:102 -#: src/pentaxmn.cpp:218 src/pentaxmn.cpp:235 -msgid "Left" -msgstr "Gauche" - -#: src/canonmn.cpp:405 -msgid "Auto AF point selection" -msgstr "Sélection point AF automatique" - -#: src/canonmn.cpp:410 -msgid "Easy shooting (Auto)" -msgstr "Prise de vue facile (Auto)" - -#: src/canonmn.cpp:411 -msgid "Program (P)" -msgstr "Programme (P)" - -#: src/canonmn.cpp:412 -msgid "Shutter priority (Tv)" -msgstr "Priorité obturation (Tv)" - -#: src/canonmn.cpp:413 -msgid "Aperture priority (Av)" -msgstr "Priorité ouverture (Av)" - -#: src/canonmn.cpp:414 -msgid "Manual (M)" -msgstr "Manuel (M)" - -#: src/canonmn.cpp:415 -msgid "A-DEP" -msgstr "A-DEP" - -#: src/canonmn.cpp:416 -msgid "M-DEP" -msgstr "M-DEP" - -#: src/canonmn.cpp:700 src/minoltamn.cpp:297 src/nikonmn.cpp:142 -msgid "Did not fire" -msgstr "Le flash ne s'est pas déclenché." - -#: src/canonmn.cpp:701 src/minoltamn.cpp:298 src/nikonmn.cpp:981 -#: src/tags.cpp:365 -msgid "Fired" -msgstr "Déclenché" - -#: src/canonmn.cpp:706 src/olympusmn.cpp:1009 -msgid "External flash" -msgstr "Flash externe" - -#: src/canonmn.cpp:707 src/olympusmn.cpp:1013 -msgid "Internal flash" -msgstr "Flash interne" - -#: src/canonmn.cpp:709 src/olympusmn.cpp:558 src/sonymn.cpp:494 -msgid "TTL" -msgstr "TTL" - -#: src/canonmn.cpp:710 -msgid "A-TTL" -msgstr "A-TTL" - -#: src/canonmn.cpp:711 -msgid "E-TTL" -msgstr "E-TTL" - -#: src/canonmn.cpp:712 -msgid "FP sync enabled" -msgstr "Synchronisation grande vitesse activée" - -#: src/canonmn.cpp:713 -msgid "2nd-curtain sync used" -msgstr "Synchronisation 2ème rideau activé" - -#: src/canonmn.cpp:714 -msgid "FP sync used" -msgstr "Synchronisation grande vitesse utilisé" - -#: src/canonmn.cpp:725 -msgid "Normal AE" -msgstr "AE Normal" - -#: src/canonmn.cpp:726 src/minoltamn.cpp:527 src/minoltamn.cpp:769 -#: src/minoltamn.cpp:1045 src/pentaxmn.cpp:919 src/pentaxmn.cpp:920 -msgid "Exposure compensation" -msgstr "Compensation d'exposition" - -#: src/canonmn.cpp:727 src/minoltamn.cpp:1575 src/pentaxmn.cpp:1021 -#: src/pentaxmn.cpp:1022 -msgid "AE lock" -msgstr "AE verrouillé" - -#: src/canonmn.cpp:728 -msgid "AE lock + exposure compensation" -msgstr "AE verrouillé + compensation d'exposition" - -#: src/canonmn.cpp:729 -msgid "No AE" -msgstr "Pas d'AE" - -#: src/canonmn.cpp:736 -#, fuzzy -msgid "On, shot only" -msgstr "AF One Shot" - -#: src/canonmn.cpp:742 src/canonmn.cpp:794 src/nikonmn.cpp:823 -#: src/olympusmn.cpp:1008 -msgid "AF Point" -msgstr "Point AF" - -#: src/canonmn.cpp:750 -#, fuzzy -msgid "Smooth" -msgstr "mois" - -#: src/canonmn.cpp:752 src/nikonmn.cpp:676 -msgid "B&W" -msgstr "N&B" - -#: src/canonmn.cpp:753 src/canonmn.cpp:836 src/canonmn.cpp:1094 -#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 -#: src/minoltamn.cpp:1184 src/minoltamn.cpp:1187 src/minoltamn.cpp:2100 -#: src/pentaxmn.cpp:723 -msgid "Custom" -msgstr "Personnel" - -#: src/canonmn.cpp:754 src/canonmn.cpp:755 -msgid "My color data" -msgstr "Données de mes couleurs" - -#: src/canonmn.cpp:761 src/pentaxmn.cpp:163 -msgid "Full" -msgstr "Plein" - -#: src/canonmn.cpp:770 -msgid "sRAW1 (mRAW)" -msgstr "" - -#: src/canonmn.cpp:771 -msgid "sRAW2 (sRAW)" -msgstr "" - -#: src/canonmn.cpp:777 -msgid "Selftimer" -msgstr "Retardateur" - -#: src/canonmn.cpp:777 src/panasonicmn.cpp:259 -msgid "Self timer" -msgstr "Retardateur" - -#: src/canonmn.cpp:778 src/fujimn.cpp:186 src/minoltamn.cpp:1484 -#: src/minoltamn.cpp:1485 src/nikonmn.cpp:222 src/nikonmn.cpp:459 -#: src/nikonmn.cpp:527 src/olympusmn.cpp:198 src/panasonicmn.cpp:236 -#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:647 -#: src/sonymn.cpp:648 -msgid "Quality" -msgstr "Qualité" - -#: src/canonmn.cpp:779 src/fujimn.cpp:201 src/minoltamn.cpp:493 -#: src/minoltamn.cpp:762 src/nikonmn.cpp:566 src/olympusmn.cpp:279 -#: src/olympusmn.cpp:670 -msgid "Flash Mode" -msgstr "Mode flash" - -#: src/canonmn.cpp:779 -msgid "Flash mode setting" -msgstr "Réglage mode flash" - -#: src/canonmn.cpp:780 src/minoltamn.cpp:505 src/minoltamn.cpp:1427 -#: src/olympusmn.cpp:700 src/sigmamn.cpp:59 src/sonymn.cpp:559 -#: src/sonymn.cpp:560 -msgid "Drive Mode" -msgstr "Mode contrôle" - -#: src/canonmn.cpp:780 -msgid "Drive mode setting" -msgstr "Réglage mode contrôle" - -#: src/canonmn.cpp:782 src/fujimn.cpp:210 src/minoltamn.cpp:622 -#: src/minoltamn.cpp:753 src/minoltamn.cpp:1035 src/minoltamn.cpp:1379 -#: src/nikonmn.cpp:474 src/olympusmn.cpp:300 src/olympusmn.cpp:664 -#: src/panasonicmn.cpp:240 src/sonymn.cpp:396 src/sonymn.cpp:397 -#: src/sonymn.cpp:566 src/sonymn.cpp:567 src/sonymn.cpp:672 src/sonymn.cpp:673 -msgid "Focus Mode" -msgstr "Mode mise au point" - -#: src/canonmn.cpp:782 -msgid "Focus mode setting" -msgstr "Réglage mode de mise au point" - -#: src/canonmn.cpp:785 src/minoltamn.cpp:499 src/minoltamn.cpp:744 -#: src/minoltamn.cpp:987 -msgid "Image Size" -msgstr "Taille de l'image" - -#: src/canonmn.cpp:786 -msgid "Easy Mode" -msgstr "Mode prise de vue" - -#: src/canonmn.cpp:786 -msgid "Easy shooting mode" -msgstr "Mode de prise de vue" - -#: src/canonmn.cpp:787 src/minoltamn.cpp:523 src/nikonmn.cpp:255 -#: src/nikonmn.cpp:480 src/nikonmn.cpp:565 src/olympusmn.cpp:207 -msgid "Digital Zoom" -msgstr "Zoom numérique" - -#: src/canonmn.cpp:787 src/minoltamn.cpp:524 src/pentaxmn.cpp:944 -#: src/pentaxmn.cpp:945 -msgid "Digital zoom" -msgstr "Zoom numérique" - -#: src/canonmn.cpp:788 src/minoltamn.cpp:386 src/minoltamn.cpp:574 -#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 -#: src/minoltamn.cpp:1017 src/minoltamn.cpp:1018 src/minoltamn.cpp:1415 -#: src/minoltamn.cpp:1416 src/nikonmn.cpp:697 src/olympusmn.cpp:390 -#: src/olympusmn.cpp:800 src/panasonicmn.cpp:257 src/panasonicmn.cpp:268 -#: src/pentaxmn.cpp:850 src/pentaxmn.cpp:950 src/pentaxmn.cpp:951 -#: src/properties.cpp:443 src/properties.cpp:589 src/sigmamn.cpp:89 -#: src/sigmamn.cpp:90 src/sonymn.cpp:324 src/sonymn.cpp:593 src/sonymn.cpp:594 -#: src/sonymn.cpp:699 src/sonymn.cpp:700 src/tags.cpp:1807 -msgid "Contrast" -msgstr "Contraste" - -#: src/canonmn.cpp:788 src/fujimn.cpp:199 src/olympusmn.cpp:391 -#: src/olympusmn.cpp:681 src/olympusmn.cpp:1080 src/panasonicmn.cpp:257 -msgid "Contrast setting" -msgstr "Réglage de contraste" - -#: src/canonmn.cpp:789 src/minoltamn.cpp:387 src/minoltamn.cpp:571 -#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 -#: src/minoltamn.cpp:1020 src/minoltamn.cpp:1021 src/minoltamn.cpp:1418 -#: src/minoltamn.cpp:1419 src/nikonmn.cpp:578 src/nikonmn.cpp:597 -#: src/nikonmn.cpp:699 src/olympusmn.cpp:799 src/olympusmn.cpp:898 -#: src/panasonicmn.cpp:271 src/pentaxmn.cpp:844 src/pentaxmn.cpp:947 -#: src/pentaxmn.cpp:948 src/properties.cpp:461 src/properties.cpp:590 -#: src/sigmamn.cpp:98 src/sigmamn.cpp:99 src/sonymn.cpp:327 src/sonymn.cpp:596 -#: src/sonymn.cpp:597 src/sonymn.cpp:702 src/sonymn.cpp:703 src/tags.cpp:1811 -msgid "Saturation" -msgstr "Saturation" - -#: src/canonmn.cpp:789 src/olympusmn.cpp:1078 -msgid "Saturation setting" -msgstr "Réglage de saturation" - -#: src/canonmn.cpp:790 src/canonmn.cpp:1134 src/fujimn.cpp:189 -#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 -#: src/minoltamn.cpp:775 src/minoltamn.cpp:1014 src/minoltamn.cpp:1015 -#: src/minoltamn.cpp:1412 src/minoltamn.cpp:1413 src/nikonmn.cpp:696 -#: src/olympusmn.cpp:801 src/panasonicmn.cpp:272 src/pentaxmn.cpp:847 -#: src/pentaxmn.cpp:953 src/pentaxmn.cpp:954 src/properties.cpp:464 -#: src/properties.cpp:591 src/sigmamn.cpp:101 src/sigmamn.cpp:102 -#: src/sonymn.cpp:590 src/sonymn.cpp:591 src/sonymn.cpp:696 src/sonymn.cpp:697 -#: src/tags.cpp:1815 -msgid "Sharpness" -msgstr "Netteté" - -#: src/canonmn.cpp:790 src/fujimn.cpp:190 src/olympusmn.cpp:682 -#: src/olympusmn.cpp:1081 -msgid "Sharpness setting" -msgstr "Réglage de Netteté" - -#: src/canonmn.cpp:791 src/minoltamn.cpp:765 src/minoltamn.cpp:1008 -msgid "ISO Speed Mode" -msgstr "Mode vitesse ISO" - -#: src/canonmn.cpp:791 src/minoltamn.cpp:766 src/minoltamn.cpp:1009 -#: src/nikonmn.cpp:217 src/nikonmn.cpp:469 src/nikonmn.cpp:525 -#: src/panasonicmn.cpp:344 -msgid "ISO speed setting" -msgstr "Réglage vitesse ISO" - -#: src/canonmn.cpp:792 src/minoltamn.cpp:508 src/minoltamn.cpp:1005 -#: src/minoltamn.cpp:1394 src/olympusmn.cpp:661 src/properties.cpp:561 -#: src/sigmamn.cpp:77 src/sonymn.cpp:575 src/sonymn.cpp:576 src/sonymn.cpp:681 -#: src/sonymn.cpp:682 src/tags.cpp:825 src/tags.cpp:1646 -msgid "Metering Mode" -msgstr "Mode de mesure" - -#: src/canonmn.cpp:792 -msgid "Metering mode setting" -msgstr "Réglages mode mesure" - -#: src/canonmn.cpp:793 -msgid "Focus Type" -msgstr "Type de mise au point" - -#: src/canonmn.cpp:793 -msgid "Focus type setting" -msgstr "Réglage mise au point" - -#: src/canonmn.cpp:794 -msgid "AF point selected" -msgstr "Point AF sélectionné" - -#: src/canonmn.cpp:795 src/properties.cpp:550 src/sonymn.cpp:632 -#: src/sonymn.cpp:633 src/sonymn.cpp:708 src/sonymn.cpp:709 src/tags.cpp:799 -#: src/tags.cpp:1548 -msgid "Exposure Program" -msgstr "Programme d'exposition" - -#: src/canonmn.cpp:795 -msgid "Exposure mode setting" -msgstr "Réglage mode exposition" - -#: src/canonmn.cpp:797 src/nikonmn.cpp:562 src/olympusmn.cpp:745 -#: src/panasonicmn.cpp:276 -msgid "Lens Type" -msgstr "Type d'objectif" - -#: src/canonmn.cpp:797 src/nikonmn.cpp:562 src/olympusmn.cpp:745 -#: src/panasonicmn.cpp:276 src/pentaxmn.cpp:1008 src/pentaxmn.cpp:1009 -msgid "Lens type" -msgstr "Type d'objectif" - -#: src/canonmn.cpp:798 src/nikonmn.cpp:563 src/properties.cpp:633 -msgid "Lens" -msgstr "Objectif" - -#: src/canonmn.cpp:798 -msgid "" -"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " -"per mm" -msgstr "" -"longueur de focale 'courte' ou 'longue' de l'objectif (en 'unité de focale') " -"et 'unité de focale' par mm" - -#: src/canonmn.cpp:799 -msgid "Short Focal" -msgstr "" - -#: src/canonmn.cpp:799 -#, fuzzy -msgid "Short focal" -msgstr "Mise au point Spot" - -#: src/canonmn.cpp:800 -#, fuzzy -msgid "Focal Units" -msgstr "Distance focale" - -#: src/canonmn.cpp:800 -#, fuzzy -msgid "Focal units" -msgstr "Distance focale" - -#: src/canonmn.cpp:801 src/minoltamn.cpp:553 -msgid "Max Aperture" -msgstr "Ouverture maximale" - -#: src/canonmn.cpp:801 src/minoltamn.cpp:554 -msgid "Max aperture" -msgstr "Ouverture maximale" - -#: src/canonmn.cpp:802 -#, fuzzy -msgid "Min Aperture" -msgstr "Ouverture maximale" - -#: src/canonmn.cpp:802 -#, fuzzy -msgid "Min aperture" -msgstr "Ouverture maximale" - -#: src/canonmn.cpp:803 -msgid "Flash Activity" -msgstr "Activité flash" - -#: src/canonmn.cpp:803 -msgid "Flash activity" -msgstr "Activité flash" - -#: src/canonmn.cpp:804 -msgid "Flash Details" -msgstr "Détails flash" - -#: src/canonmn.cpp:804 -msgid "Flash details" -msgstr "Détails flash" - -#: src/canonmn.cpp:807 -msgid "Focus Continuous" -msgstr "Mise au point continue" - -#: src/canonmn.cpp:807 -msgid "Focus continuous setting" -msgstr "Paramètre de la mise au point continue" - -#: src/canonmn.cpp:808 -msgid "AESetting" -msgstr "Réglage AE" - -#: src/canonmn.cpp:808 -msgid "AE setting" -msgstr "Réglage AE" - -#: src/canonmn.cpp:809 src/minoltamn.cpp:147 src/minoltamn.cpp:814 -#: src/minoltamn.cpp:1071 src/minoltamn.cpp:1562 src/nikonmn.cpp:599 -#: src/olympusmn.cpp:703 src/olympusmn.cpp:1016 src/panasonicmn.cpp:242 -#: src/sonymn.cpp:372 src/sonymn.cpp:635 src/sonymn.cpp:636 -msgid "Image Stabilization" -msgstr "Stabilisation de l'image" - -#: src/canonmn.cpp:809 src/minoltamn.cpp:148 src/minoltamn.cpp:815 -#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1563 src/nikonmn.cpp:599 -#: src/olympusmn.cpp:703 src/olympusmn.cpp:1016 src/panasonicmn.cpp:242 -#: src/sonymn.cpp:373 -msgid "Image stabilization" -msgstr "Stabilisation de l'image" - -#: src/canonmn.cpp:810 -msgid "Display Aperture" -msgstr "Affichage de l'ouverture" - -#: src/canonmn.cpp:810 -msgid "Display aperture" -msgstr "Affichage de l'ouverture" - -#: src/canonmn.cpp:811 -#, fuzzy -msgid "Zoom Source Width" -msgstr "Droit d'auteur" - -#: src/canonmn.cpp:811 -#, fuzzy -msgid "Zoom source width" -msgstr "Droit d'auteur" - -#: src/canonmn.cpp:812 -#, fuzzy -msgid "Zoom Target Width" -msgstr "Largeur de l'image" - -#: src/canonmn.cpp:812 -#, fuzzy -msgid "Zoom target width" -msgstr "Largeur de l'image" - -#: src/canonmn.cpp:814 -#, fuzzy -msgid "Spot Metering Mode" -msgstr "Mode de mesure" - -#: src/canonmn.cpp:814 -#, fuzzy -msgid "Spot metering mode" -msgstr "Le mode de mesure." - -#: src/canonmn.cpp:815 -msgid "Photo Effect" -msgstr "Effet photo" - -#: src/canonmn.cpp:815 -msgid "Photo effect" -msgstr "Effet photo" - -#: src/canonmn.cpp:816 -#, fuzzy -msgid "Manual Flash Output" -msgstr "Déclenchement manuel" - -#: src/canonmn.cpp:816 -#, fuzzy -msgid "Manual flash output" -msgstr "Déclenchement manuel" - -#: src/canonmn.cpp:817 -msgid "Color Tone" -msgstr "Tonalité couleur" - -#: src/canonmn.cpp:817 -msgid "Color tone" -msgstr "Tonalité couleur" - -#: src/canonmn.cpp:818 -msgid "SRAW Quality Tone" -msgstr "" - -#: src/canonmn.cpp:818 -#, fuzzy -msgid "SRAW quality" -msgstr "Qualité de l'image" - -#: src/canonmn.cpp:820 -msgid "Unknown Canon Camera Settings 1 tag" -msgstr "Marqueur 1 réglage appareil photo Canon inconnu" - -#: src/canonmn.cpp:831 -msgid "Sunny" -msgstr "Ensoleillé" - -#: src/canonmn.cpp:832 src/fujimn.cpp:73 src/minoltamn.cpp:220 -#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1194 -#: src/minoltamn.cpp:2095 src/nikonmn.cpp:450 src/olympusmn.cpp:1041 -#: src/panasonicmn.cpp:66 src/pentaxmn.cpp:321 src/sonymn.cpp:166 -msgid "Cloudy" -msgstr "Nuageux" - -#: src/canonmn.cpp:833 src/minoltamn.cpp:221 src/minoltamn.cpp:686 -#: src/minoltamn.cpp:872 src/minoltamn.cpp:1196 src/minoltamn.cpp:2097 -#: src/pentaxmn.cpp:315 -msgid "Tungsten" -msgstr "Tungstène" - -#: src/canonmn.cpp:834 src/minoltamn.cpp:223 src/minoltamn.cpp:687 -#: src/minoltamn.cpp:873 src/minoltamn.cpp:1197 src/minoltamn.cpp:2099 -#: src/nikonmn.cpp:449 src/pentaxmn.cpp:314 src/tags.cpp:1429 -msgid "Fluorescent" -msgstr "Fluorescent" - -#: src/canonmn.cpp:837 src/minoltamn.cpp:57 src/minoltamn.cpp:1890 -#: src/sonymn.cpp:481 -msgid "Black & White" -msgstr "Noir & Blanc" - -#: src/canonmn.cpp:838 src/minoltamn.cpp:684 src/minoltamn.cpp:871 -#: src/minoltamn.cpp:1195 src/minoltamn.cpp:2096 src/olympusmn.cpp:1040 -#: src/pentaxmn.cpp:313 src/tags.cpp:1434 -msgid "Shade" -msgstr "Ombragé" - -#: src/canonmn.cpp:839 -msgid "Manual Temperature (Kelvin)" -msgstr "Température manuelle (Kelvin)" - -#: src/canonmn.cpp:840 -msgid "PC Set 1" -msgstr "Réglage PC 1" - -#: src/canonmn.cpp:841 -msgid "PC Set 2" -msgstr "Réglage PC 3" - -#: src/canonmn.cpp:842 -msgid "PC Set 3" -msgstr "Réglage PC 3" - -#: src/canonmn.cpp:843 -msgid "Daylight Fluorescent" -msgstr "Lumière du jour fluorescent" - -#: src/canonmn.cpp:844 src/properties.cpp:791 -msgid "Custom 1" -msgstr "Personnel 1" - -#: src/canonmn.cpp:845 src/minoltamn.cpp:225 src/properties.cpp:792 -msgid "Custom 2" -msgstr "Personnel 2" - -#: src/canonmn.cpp:847 src/canonmn.cpp:848 src/minoltamn.cpp:226 -#: src/properties.cpp:793 -msgid "Custom 3" -msgstr "Processus personnel 2" - -#: src/canonmn.cpp:849 -#, fuzzy -msgid "PC Set 4" -msgstr "Réglage PC 1" - -#: src/canonmn.cpp:850 -#, fuzzy -msgid "PC Set 5" -msgstr "Réglage PC 1" - -#: src/canonmn.cpp:855 src/canonmn.cpp:974 src/canonmn.cpp:982 -msgid "left" -msgstr "gauche" - -#: src/canonmn.cpp:856 src/canonmn.cpp:971 src/canonmn.cpp:983 -msgid "center" -msgstr "centre" - -#: src/canonmn.cpp:857 src/canonmn.cpp:968 src/canonmn.cpp:984 -msgid "right" -msgstr "droite" - -#: src/canonmn.cpp:884 -msgid "ISO Speed Used" -msgstr "Vitesse ISO utilisée" - -#: src/canonmn.cpp:884 -msgid "ISO speed used" -msgstr "Vitesse ISO utilisée" - -#: src/canonmn.cpp:885 -msgid "Measured EV" -msgstr "" - -#: src/canonmn.cpp:886 -msgid "Target Aperture" -msgstr "Ouverture cible" - -#: src/canonmn.cpp:887 -msgid "Target Shutter Speed" -msgstr "Vitesse d'obturation cible" - -#: src/canonmn.cpp:887 -msgid "Target shutter speed" -msgstr "Vitesse d'obturation cible" - -#: src/canonmn.cpp:889 src/fujimn.cpp:192 src/minoltamn.cpp:177 -#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:993 -#: src/minoltamn.cpp:1376 src/nikonmn.cpp:225 src/nikonmn.cpp:471 -#: src/nikonmn.cpp:528 src/olympusmn.cpp:330 src/olympusmn.cpp:880 -#: src/panasonicmn.cpp:238 src/properties.cpp:473 src/properties.cpp:582 -#: src/sigmamn.cpp:71 src/sonymn.cpp:289 src/tags.cpp:1785 -msgid "White Balance" -msgstr "Balance des blancs" - -#: src/canonmn.cpp:889 src/fujimn.cpp:193 src/minoltamn.cpp:1443 -#: src/panasonicmn.cpp:238 -msgid "White balance setting" -msgstr "Réglage balance des blancs" - -#: src/canonmn.cpp:891 -msgid "Sequence" -msgstr "Séquence" - -#: src/canonmn.cpp:891 -msgid "Sequence number (if in a continuous burst)" -msgstr "Numéro séquence (si en mode rafale)" - -#: src/canonmn.cpp:896 -msgid "AF Point Used" -msgstr "Point AF utilisé" - -#: src/canonmn.cpp:896 -msgid "AF point used" -msgstr "Point AF utilisé" - -#: src/canonmn.cpp:897 src/olympusmn.cpp:372 -msgid "Flash Bias" -msgstr "Biais du flash" - -#: src/canonmn.cpp:901 src/properties.cpp:560 src/tags.cpp:824 -#: src/tags.cpp:1643 -msgid "Subject Distance" -msgstr "Distance au sujet" - -#: src/canonmn.cpp:901 -msgid "Subject distance (units are not clear)" -msgstr "Distance au sujet (les unités ne sont pas clair)" - -#: src/canonmn.cpp:903 src/olympusmn.cpp:273 src/properties.cpp:556 -#: src/tags.cpp:820 -msgid "Aperture Value" -msgstr "Valeur d'ouverture" - -#: src/canonmn.cpp:904 src/properties.cpp:555 src/tags.cpp:819 -msgid "Shutter Speed Value" -msgstr "Valeur de vitesse d'obturation" - -#: src/canonmn.cpp:904 src/tags.cpp:1623 -msgid "Shutter speed" -msgstr "Vitesse d'obturation" - -#: src/canonmn.cpp:905 -msgid "Measured EV 2" -msgstr "" - -#: src/canonmn.cpp:910 -msgid "Unknown Canon Camera Settings 2 tag" -msgstr "Marqueur 2 réglage appareil photo Canon inconnu" - -#: src/canonmn.cpp:920 src/olympusmn.cpp:1164 -msgid "Left to right" -msgstr "De gauche à droite" - -#: src/canonmn.cpp:921 src/olympusmn.cpp:1165 -msgid "Right to left" -msgstr "De droite à gauche" - -#: src/canonmn.cpp:922 src/olympusmn.cpp:1166 -msgid "Bottom to top" -msgstr "Du bas vers le haut" - -#: src/canonmn.cpp:923 src/olympusmn.cpp:1167 -msgid "Top to bottom" -msgstr "Du haut vers le bas" - -#: src/canonmn.cpp:924 -msgid "2x2 matrix (Clockwise)" -msgstr "Matrice 2x2 (Sens horaire)" - -#: src/canonmn.cpp:929 -msgid "Panorama Frame" -msgstr "Frame panorama" - -#: src/canonmn.cpp:929 -msgid "Panorama frame number" -msgstr "Numéro frame panorama" - -#: src/canonmn.cpp:930 -msgid "Panorama Direction" -msgstr "Direction panorama" - -#: src/canonmn.cpp:930 -msgid "Panorama direction" -msgstr "Direction panorama" - -#: src/canonmn.cpp:932 -msgid "Unknown Canon Panorama tag" -msgstr "Marqueur panorama Canon inconnu" - -#: src/canonmn.cpp:942 src/canonmn.cpp:1072 src/minoltamn.cpp:807 -#: src/minoltamn.cpp:1068 src/minoltamn.cpp:1493 src/nikonmn.cpp:579 -#: src/olympusmn.cpp:438 src/olympusmn.cpp:602 src/olympusmn.cpp:685 -#: src/olympusmn.cpp:804 src/olympusmn.cpp:819 src/olympusmn.cpp:889 -#: src/olympusmn.cpp:974 -msgid "Noise Reduction" -msgstr "Réduction du bruit" - -#: src/canonmn.cpp:942 -msgid "Long exposure noise reduction" -msgstr "Réduction du bruit lors d'expositions longues" - -#: src/canonmn.cpp:943 -#, fuzzy -msgid "Shutter Ae Lock" -msgstr "Vitesse d'obturation" - -#: src/canonmn.cpp:943 -#, fuzzy -msgid "Shutter/AE lock buttons" -msgstr "Priorité obturation" - -#: src/canonmn.cpp:944 -msgid "Mirror Lockup" -msgstr "Verrouillage du miroir" - -#: src/canonmn.cpp:944 -msgid "Mirror lockup" -msgstr "Verrouillage du miroir" - -#: src/canonmn.cpp:945 src/sonymn.cpp:650 src/sonymn.cpp:651 -msgid "Exposure Level Increments" -msgstr "Incrément de niveau d'exposition" - -#: src/canonmn.cpp:945 -msgid "Tv/Av and exposure level" -msgstr "Niveaux d'exposition et Tv/Av" - -#: src/canonmn.cpp:946 src/minoltamn.cpp:1520 -msgid "AF Assist" -msgstr "Faisceau AF" - -#: src/canonmn.cpp:946 -msgid "AF assist light" -msgstr "Faisceau AF" - -#: src/canonmn.cpp:947 -msgid "Flash Sync Speed Av" -msgstr "Vitesse de synchro flash en mode Av" - -#: src/canonmn.cpp:947 -msgid "Shutter speed in Av mode" -msgstr "Vitesse d'obturation en mode Av" - -#: src/canonmn.cpp:948 -#, fuzzy -msgid "AEB Sequence" -msgstr "Séquence" - -#: src/canonmn.cpp:948 -msgid "AEB sequence/auto cancellation" -msgstr "" - -#: src/canonmn.cpp:949 -#, fuzzy -msgid "Shutter Curtain Sync" -msgstr "Priorité obturation" - -#: src/canonmn.cpp:949 -#, fuzzy -msgid "Shutter curtain sync" -msgstr "Priorité obturation" - -#: src/canonmn.cpp:950 -#, fuzzy -msgid "Lens AF Stop Button" -msgstr "Type d'objectif" - -#: src/canonmn.cpp:950 -msgid "Lens AF stop button Fn. Switch" -msgstr "" - -#: src/canonmn.cpp:951 -#, fuzzy -msgid "Fill Flash Auto Reduction" -msgstr "Réduction du bruit" - -#: src/canonmn.cpp:951 -msgid "Auto reduction of fill flash" -msgstr "" - -#: src/canonmn.cpp:952 -msgid "Menu Button Return" -msgstr "" - -#: src/canonmn.cpp:952 -msgid "Menu button return position" -msgstr "" - -#: src/canonmn.cpp:953 -#, fuzzy -msgid "Set Button Function" -msgstr "Fonctions personnalisées" - -#: src/canonmn.cpp:953 -msgid "SET button func. when shooting" -msgstr "" - -#: src/canonmn.cpp:954 -msgid "Sensor Cleaning" -msgstr "Nettoyage capteur" - -#: src/canonmn.cpp:954 -msgid "Sensor cleaning" -msgstr "Nettoyage capteur" - -#: src/canonmn.cpp:955 -msgid "Superimposed Display" -msgstr "" - -#: src/canonmn.cpp:955 -msgid "Superimposed display" -msgstr "" - -#: src/canonmn.cpp:956 -msgid "Shutter Release No CF Card" -msgstr "" - -#: src/canonmn.cpp:956 -msgid "Shutter Release W/O CF Card" -msgstr "" - -#: src/canonmn.cpp:958 -#, fuzzy -msgid "Unknown Canon Custom Function tag" -msgstr "Marqueur réglage appareil photo Canon inconnu" - -#: src/canonmn.cpp:969 -msgid "mid-right" -msgstr "milieu-droit" - -#: src/canonmn.cpp:970 src/canonmn.cpp:987 -msgid "bottom" -msgstr "bas" - -#: src/canonmn.cpp:972 src/canonmn.cpp:979 -msgid "top" -msgstr "haut" - -#: src/canonmn.cpp:973 -msgid "mid-left" -msgstr "milieu-gauche" - -#: src/canonmn.cpp:980 -msgid "upper-left" -msgstr "haut-gauche" - -#: src/canonmn.cpp:981 -msgid "upper-right" -msgstr "haut-droit" - -#: src/canonmn.cpp:985 -msgid "lower-left" -msgstr "bas-gauche" - -#: src/canonmn.cpp:986 -msgid "lower-right" -msgstr "bas-droit" - -#: src/canonmn.cpp:992 src/olympusmn.cpp:225 src/olympusmn.cpp:405 -#: src/panasonicmn.cpp:341 src/properties.cpp:480 src/tags.cpp:415 -msgid "Image Width" -msgstr "Largeur de l'image" - -#: src/canonmn.cpp:992 src/olympusmn.cpp:226 src/olympusmn.cpp:406 -#: src/panasonicmn.cpp:341 src/tags.cpp:2103 -msgid "Image width" -msgstr "Largeur de l'image" - -#: src/canonmn.cpp:993 src/olympusmn.cpp:228 src/olympusmn.cpp:408 -#: src/panasonicmn.cpp:340 -msgid "Image Height" -msgstr "Hauteur de l'image" - -#: src/canonmn.cpp:993 src/olympusmn.cpp:229 src/olympusmn.cpp:409 -#: src/panasonicmn.cpp:340 src/tags.cpp:2106 -msgid "Image height" -msgstr "Hauteur de l'image" - -#: src/canonmn.cpp:994 -msgid "Image Width As Shot" -msgstr "Largeur de l'image" - -#: src/canonmn.cpp:994 -msgid "Image width (as shot)" -msgstr "Largeur de l'image" - -#: src/canonmn.cpp:995 -msgid "Image Height As Shot" -msgstr "Hauteur de l'image" - -#: src/canonmn.cpp:995 -msgid "Image height (as shot)" -msgstr "Hauteur de l'image" - -#: src/canonmn.cpp:996 src/nikonmn.cpp:848 -msgid "AF Points Used" -msgstr "Points AF utilisés" - -#: src/canonmn.cpp:996 src/nikonmn.cpp:848 -msgid "AF points used" -msgstr "Points AF utilisés" - -#: src/canonmn.cpp:997 -msgid "AF Points Used 20D" -msgstr "Points AF utilisés 20D" - -#: src/canonmn.cpp:997 -msgid "AF points used (20D)" -msgstr "Points AF utilisés (20D)" - -#: src/canonmn.cpp:999 -msgid "Unknown Canon Picture Info tag" -msgstr "Marqueur info image Canon inconnu" - -#: src/canonmn.cpp:1010 -msgid "AEB" -msgstr "" - -#: src/canonmn.cpp:1011 -msgid "FEB" -msgstr "" - -#: src/canonmn.cpp:1012 src/minoltamn.cpp:511 src/nikonmn.cpp:767 -#: src/nikonmn.cpp:1136 src/nikonmn.cpp:1196 src/nikonmn.cpp:1232 -#, fuzzy -msgid "ISO" -msgstr "Infos prise de vue" - -#: src/canonmn.cpp:1013 -msgid "WB" -msgstr "" - -#: src/canonmn.cpp:1024 -msgid "Postcard" -msgstr "" - -#: src/canonmn.cpp:1025 -msgid "Widescreen" -msgstr "" - -#: src/canonmn.cpp:1026 -#, fuzzy -msgid "Medium Movie" -msgstr "Moyenne 1" - -#: src/canonmn.cpp:1027 -#, fuzzy -msgid "Small Movie" -msgstr "Film" - -#: src/canonmn.cpp:1033 -#, fuzzy -msgid "On 1" -msgstr "Activé" - -#: src/canonmn.cpp:1034 -#, fuzzy -msgid "On 2" -msgstr "Activé" - -#: src/canonmn.cpp:1042 -#, fuzzy -msgid "On (shift AB)" -msgstr "AF One Shot" - -#: src/canonmn.cpp:1043 -#, fuzzy -msgid "On (shift GM)" -msgstr "AF One Shot" - -#: src/canonmn.cpp:1049 src/nikonmn.cpp:667 src/nikonmn.cpp:680 -#: src/nikonmn.cpp:995 src/olympusmn.cpp:622 src/olympusmn.cpp:862 -msgid "Yellow" -msgstr "" - -#: src/canonmn.cpp:1050 src/nikonmn.cpp:668 src/olympusmn.cpp:623 -#: src/olympusmn.cpp:863 -#, fuzzy -msgid "Orange" -msgstr "Loin" - -#: src/canonmn.cpp:1051 src/nikonmn.cpp:669 src/nikonmn.cpp:679 -#: src/nikonmn.cpp:993 src/olympusmn.cpp:624 src/olympusmn.cpp:864 -#, fuzzy -msgid "Red" -msgstr "Réduction yeux rouges" - -#: src/canonmn.cpp:1052 src/canonmn.cpp:1061 src/nikonmn.cpp:670 -#: src/nikonmn.cpp:681 src/olympusmn.cpp:625 src/olympusmn.cpp:635 -#: src/olympusmn.cpp:865 src/olympusmn.cpp:874 -#, fuzzy -msgid "Green" -msgstr "Mode contrôle" - -#: src/canonmn.cpp:1059 src/nikonmn.cpp:683 src/nikonmn.cpp:994 -#: src/olympusmn.cpp:633 src/olympusmn.cpp:872 -#, fuzzy -msgid "Blue" -msgstr "valeur" - -#: src/canonmn.cpp:1060 src/olympusmn.cpp:634 src/olympusmn.cpp:873 -msgid "Purple" -msgstr "" - -#: src/canonmn.cpp:1067 -#, fuzzy -msgid "Bracket Mode" -msgstr "Pas du bracket" - -#: src/canonmn.cpp:1068 -#, fuzzy -msgid "Bracket Value" -msgstr "Pas du bracket" - -#: src/canonmn.cpp:1069 -#, fuzzy -msgid "Bracket Shot Number" -msgstr "Pas du bracket" - -#: src/canonmn.cpp:1070 -#, fuzzy -msgid "Raw Jpg Quality" -msgstr "Qualité de l'image" - -#: src/canonmn.cpp:1071 -#, fuzzy -msgid "Raw Jpg Size" -msgstr "Taille de l'image" - -#: src/canonmn.cpp:1073 -#, fuzzy -msgid "WB Bracket Mode" -msgstr "Pas du bracket" - -#: src/canonmn.cpp:1074 -#, fuzzy -msgid "WB Bracket Value AB" -msgstr "Table de balance des blancs" - -#: src/canonmn.cpp:1075 -#, fuzzy -msgid "WB Bracket Value GM" -msgstr "Table de balance des blancs" - -#: src/canonmn.cpp:1076 src/nikonmn.cpp:701 -#, fuzzy -msgid "Filter Effect" -msgstr "Effet de couleurs" - -#: src/canonmn.cpp:1077 src/nikonmn.cpp:702 -#, fuzzy -msgid "Toning Effect" -msgstr "Effet photo" - -#: src/canonmn.cpp:1078 -#, fuzzy -msgid "Macro Magnification" -msgstr "Augmentation électronique" - -#: src/canonmn.cpp:1078 -#, fuzzy -msgid "Macro magnification" -msgstr "Augmentation électronique" - -#: src/canonmn.cpp:1079 -msgid "Live View Shooting" -msgstr "" - -#: src/canonmn.cpp:1079 -#, fuzzy -msgid "Live view shooting" -msgstr "Réglage mode contrôle" - -#: src/canonmn.cpp:1080 -#, fuzzy -msgid "Flash Exposure Lock" -msgstr "Compensation d'exposition du flash" - -#: src/canonmn.cpp:1080 -#, fuzzy -msgid "Flash exposure lock" -msgstr "Compensation d'exposition du flash" - -#: src/canonmn.cpp:1082 -#, fuzzy -msgid "Unknown Canon File Info tag" -msgstr "Marqueur info image Canon inconnu" - -#: src/canonmn.cpp:1092 src/canonmn.cpp:1102 src/canonmn.cpp:1110 -#: src/canonmn.cpp:1123 src/fujimn.cpp:147 src/fujimn.cpp:154 -#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1135 -#: src/minoltamn.cpp:1221 src/minoltamn.cpp:1884 src/minoltamn.cpp:1973 -#: src/minoltamn.cpp:2007 src/minoltamn.cpp:2033 src/minoltamn.cpp:2059 -#: src/olympusmn.cpp:93 src/olympusmn.cpp:1135 src/panasonicmn.cpp:167 -#: src/panasonicmn.cpp:174 src/panasonicmn.cpp:204 src/pentaxmn.cpp:470 -#: src/sonymn.cpp:150 src/sonymn.cpp:475 src/sonymn.cpp:505 src/tags.cpp:1501 -msgid "Standard" -msgstr "Standard" - -#: src/canonmn.cpp:1100 -#, fuzzy -msgid "Lowest" -msgstr "Bas-gauche" - -#: src/canonmn.cpp:1104 -#, fuzzy -msgid "Highest" -msgstr "Élevée" - -#: src/canonmn.cpp:1112 -#, fuzzy -msgid "High Saturation" -msgstr "Saturation" - -#: src/canonmn.cpp:1114 -#, fuzzy -msgid "Low Saturation" -msgstr "Saturation" - -#: src/canonmn.cpp:1115 -#, fuzzy -msgid "CM Set 1" -msgstr "Réglage PC 1" - -#: src/canonmn.cpp:1116 -#, fuzzy -msgid "CM Set 2" -msgstr "Réglage PC 3" - -#: src/canonmn.cpp:1117 -msgid "User Def. 1" -msgstr "" - -#: src/canonmn.cpp:1118 -msgid "User Def. 2" -msgstr "" - -#: src/canonmn.cpp:1119 -msgid "User Def. 3" -msgstr "" - -#: src/canonmn.cpp:1120 -msgid "PC 1" -msgstr "" - -#: src/canonmn.cpp:1121 -msgid "PC 2" -msgstr "" - -#: src/canonmn.cpp:1122 -msgid "PC 3" -msgstr "" - -#: src/canonmn.cpp:1127 -msgid "Faithful" -msgstr "" - -#: src/canonmn.cpp:1128 src/minoltamn.cpp:903 src/minoltamn.cpp:953 -#: src/nikonmn.cpp:423 src/pentaxmn.cpp:707 -msgid "Monochrome" -msgstr "Monochrome" - -#: src/canonmn.cpp:1133 -#, fuzzy -msgid "ToneCurve" -msgstr "Courbe de tonalité" - -#: src/canonmn.cpp:1133 -msgid "Tone curve" -msgstr "Courbe de tonalité" - -#: src/canonmn.cpp:1135 -#, fuzzy -msgid "SharpnessFrequency" -msgstr "Netteté" - -#: src/canonmn.cpp:1135 -#, fuzzy -msgid "Sharpness frequency" -msgstr "Netteté" - -#: src/canonmn.cpp:1136 -#, fuzzy -msgid "SensorRedLevel" -msgstr "Niveau de noir" - -#: src/canonmn.cpp:1136 -#, fuzzy -msgid "Sensor red level" -msgstr "Niveau de noir" - -#: src/canonmn.cpp:1137 -#, fuzzy -msgid "SensorBlueLevel" -msgstr "Niveau de noir" - -#: src/canonmn.cpp:1137 -#, fuzzy -msgid "Sensor blue level" -msgstr "Niveau de noir" - -#: src/canonmn.cpp:1138 -#, fuzzy -msgid "WhiteBalanceRed" -msgstr "Balance des blancs" - -#: src/canonmn.cpp:1138 -#, fuzzy -msgid "White balance red" -msgstr "Balance des blancs" - -#: src/canonmn.cpp:1139 -#, fuzzy -msgid "WhiteBalanceBlue" -msgstr "Table de balance des blancs" - -#: src/canonmn.cpp:1139 -#, fuzzy -msgid "White balance blue" -msgstr "Table de balance des blancs" - -#: src/canonmn.cpp:1140 -#, fuzzy -msgid "WhiteBalance" -msgstr "Balance des blancs" - -#: src/canonmn.cpp:1141 -#, fuzzy -msgid "ColorTemperature" -msgstr "Température des couleurs" - -#: src/canonmn.cpp:1141 src/minoltamn.cpp:156 src/minoltamn.cpp:786 -#: src/minoltamn.cpp:1038 src/minoltamn.cpp:1053 src/minoltamn.cpp:1054 -#: src/minoltamn.cpp:1475 src/minoltamn.cpp:1577 src/olympusmn.cpp:833 -#: src/sonymn.cpp:357 src/sonymn.cpp:358 -msgid "Color Temperature" -msgstr "Température des couleurs" - -#: src/canonmn.cpp:1142 -#, fuzzy -msgid "PictureStyle" -msgstr "Mode d'image" - -#: src/canonmn.cpp:1142 -#, fuzzy -msgid "Picture style" -msgstr "Mode d'image" - -#: src/canonmn.cpp:1143 -#, fuzzy -msgid "DigitalGain" -msgstr "Zoom numérique" - -#: src/canonmn.cpp:1143 -#, fuzzy -msgid "Digital gain" -msgstr "Zoom numérique" - -#: src/canonmn.cpp:1144 -msgid "WBShiftAB" -msgstr "" - -#: src/canonmn.cpp:1144 -#, fuzzy -msgid "WBShift AB" -msgstr "AF One Shot" - -#: src/canonmn.cpp:1145 -msgid "WBShiftGM" -msgstr "" - -#: src/canonmn.cpp:1145 -#, fuzzy -msgid "WB Shift GM" -msgstr "AF One Shot" - -#: src/canonmn.cpp:1146 -#, fuzzy -msgid "Unknown Canon Processing Info tag" -msgstr "Marqueur info image Canon inconnu" - -#: src/crwimage.cpp:664 -msgid "Header, offset" -msgstr "En-tête, décalage" - -#: src/crwimage.cpp:681 -msgid "tag" -msgstr "marqueur" - -#: src/crwimage.cpp:683 -msgid "dir" -msgstr "section" - -#: src/crwimage.cpp:685 -msgid "type" -msgstr "type" - -#: src/crwimage.cpp:686 -msgid "size" -msgstr "taille" - -#: src/crwimage.cpp:687 -msgid "offset" -msgstr "décalage" - -#: src/datasets.cpp:79 -msgid "(invalid)" -msgstr "(invalide)" - -#: src/datasets.cpp:80 -msgid "IIM envelope record" -msgstr "Enregistrement IIM enveloppe" - -#: src/datasets.cpp:81 -msgid "IIM application record 2" -msgstr "Enregistrement IIM application 2" - -#: src/datasets.cpp:85 -msgid "Model Version" -msgstr "Version du Modèle" - -#: src/datasets.cpp:86 -msgid "" -"A binary number identifying the version of the Information Interchange " -"Model, Part I, utilised by the provider. Version numbers are assigned by " -"IPTC and NAA organizations." -msgstr "" -"Un champ binaire identifiant la version de l'Information Interchange Model, " -"Part I, utilisé par le fournisseur. Les numéros de version sont assignés par " -"l'IPTC et la NAA." - -#: src/datasets.cpp:90 src/panasonicmn.cpp:220 src/pentaxmn.cpp:378 -#: src/pentaxmn.cpp:962 src/pentaxmn.cpp:963 -msgid "Destination" -msgstr "Destination" - -#: src/datasets.cpp:91 -msgid "" -"This DataSet is to accommodate some providers who require routing " -"information above the appropriate OSI layers." -msgstr "" -"Ce jeu de données est présent pour satisfaire certains fournisseurs qui " -"attendent des informations de routage en sus des couches OSI appropriées." - -#: src/datasets.cpp:94 src/sonymn.cpp:348 src/sonymn.cpp:349 -msgid "File Format" -msgstr "Format du fichier" - -#: src/datasets.cpp:95 -msgid "" -"A binary number representing the file format. The file format must be " -"registered with IPTC or NAA with a unique number assigned to it. The " -"information is used to route the data to the appropriate system and to allow " -"the receiving system to perform the appropriate actions there to." -msgstr "" -"Un champ binaire représentant le format du fichier. Le format du fichier " -"doit être enregistré auprès de l'IPTC ou de la NAA au moyen d'un identifiant " -"unique. L'information est utilisée pour router les données vers le système " -"approprié et permettre au système cible de leur appliquer les actions " -"appropriées." - -#: src/datasets.cpp:101 -msgid "File Version" -msgstr "Version du fichier" - -#: src/datasets.cpp:102 -msgid "" -"A binary number representing the particular version of the File Format " -"specified by tag." -msgstr "" -"Un champ binaire représentant la version courante du format du fichier " -"spécifié par le marqueur ." - -#: src/datasets.cpp:105 -msgid "Service Id" -msgstr "Identifiant de service" - -#: src/datasets.cpp:106 -msgid "Identifies the provider and product" -msgstr "Identifie le fournisseur et le produit" - -#: src/datasets.cpp:108 -msgid "Envelope Number" -msgstr "Numéro d'enveloppe" - -#: src/datasets.cpp:109 -msgid "" -"The characters form a number that will be unique for the date specified in " -" tag and for the Service Identifier specified by " -" tag. If identical envelope numbers appear with the same " -"date and with the same Service Identifier, records 2-9 must be unchanged " -"from the original. This is not intended to be a sequential serial number " -"reception check." -msgstr "" -"Les caractères forment un numéro qui est unique pour la date spécifiée dans " -"le marqueur et pour l'identifiant de service spécifié dans le " -"marqueur . Si des numéros d'enveloppe identiques " -"apparaissent avec les mêmes dates et identifiants de service, les " -"enregistrements 2 à 9 doivent rester identiques à l'original. Ce numéro ne " -"permet pas de tester l'ordre de réception en séquence." - -#: src/datasets.cpp:117 -msgid "Product Id" -msgstr "Identifiant du produit" - -#: src/datasets.cpp:118 -msgid "" -"Allows a provider to identify subsets of its overall service. Used to " -"provide receiving organisation data on which to select, route, or otherwise " -"handle data." -msgstr "" -"Permet à un fournisseur d'identifier des sous-sections de son service " -"global. Utilisé pour fournir à l'organisation cible des informations sur la " -"manière dont les données doivent être sélectionnées, routées et manipulées." - -#: src/datasets.cpp:122 -msgid "Envelope Priority" -msgstr "Priorité de l'enveloppe" - -#: src/datasets.cpp:123 -msgid "" -"Specifies the envelope handling priority and not the editorial urgency (see " -" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " -"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " -"Priority. The numeral \"0\" is reserved for future use." -msgstr "" -"Spécifie la priorité de traitement de l'enveloppe et non pas la priorité " -"d'édition (voir le marqueur ). \"1\" désigne la plus grande " -"priorité, \"5\" une priorité normale, et \"8\" la copie la moins " -"prioritaire. Le chiffre \"9\" indique une priorité définie par " -"l'utilisateur. Le chiffre \"0\" est réservé pour un usage ultérieur." - -#: src/datasets.cpp:129 -msgid "Date Sent" -msgstr "Date d'envoi" - -#: src/datasets.cpp:130 -msgid "" -"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " -"to indicate year, month and day the service sent the material." -msgstr "" -"Utilise le format CCYYMMDD (siècle, année, mois, jour) tel que défini par la " -"norme ISO 8601 pour indiquer l'année, le mois et le jour où le service a " -"envoyé les données." - -#: src/datasets.cpp:133 -msgid "Time Sent" -msgstr "Heure d'envoi" - -#: src/datasets.cpp:134 -msgid "" -"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " -"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " -"Universal Coordinated Time as described in ISO 8601. This is the time the " -"service sent the material." -msgstr "" -"Utilise le format HHMMSS:HHMM où HHMMSS désigne dans le référentiel local " -"les heures, les minutes et les secondes, et où HHMM indique les heures et " -"les minutes à soustraire (+) ou à ajouter (-) pour obtenir l'heure UTC comme " -"décrit dans la norme ISO 8601. Ceci est l'heure à laquelle le service a " -"envoyé les données." - -#: src/datasets.cpp:139 -msgid "Character Set" -msgstr "Jeu de caractères" - -#: src/datasets.cpp:140 -msgid "" -"This tag consisting of one or more control functions used for the " -"announcement, invocation or designation of coded character sets. The control " -"functions follow the ISO 2022 standard and may consist of the escape control " -"character and one or more graphic characters." -msgstr "" - -#: src/datasets.cpp:145 -msgid "Unique Name Object" -msgstr "Nom d'objet unique" - -#: src/datasets.cpp:146 -msgid "" -"This tag provide a globally unique identification for objects as specified " -"in the IIM, independent of provider and for any media form. The provider " -"must ensure the UNO is unique. Objects with the same UNO are identical." -msgstr "" - -#: src/datasets.cpp:151 -msgid "ARM Identifier" -msgstr "Identifiant ARM" - -#: src/datasets.cpp:152 -msgid "" -"The DataSet identifies the Abstract Relationship Method identifier (ARM) " -"which is described in a document registered by the originator of the ARM " -"with the IPTC and NAA organizations." -msgstr "" - -#: src/datasets.cpp:156 -msgid "ARM Version" -msgstr "Version d'ARM" - -#: src/datasets.cpp:157 -#, fuzzy -msgid "" -"This tag consisting of a binary number representing the particular version " -"of the ARM specified by tag ." -msgstr "" -"Un champ binaire représentant la version courante du format du fichier " -"spécifié par le marqueur ." - -#: src/datasets.cpp:170 -msgid "Record Version" -msgstr "Version d'enregistrement" - -#: src/datasets.cpp:171 -#, fuzzy -msgid "" -"A binary number identifying the version of the Information Interchange " -"Model, Part II, utilised by the provider. Version numbers are assigned by " -"IPTC and NAA organizations." -msgstr "" -"Un champ binaire identifiant la version de l'Information Interchange Model, " -"Part I, utilisé par le fournisseur. Les numéros de version sont assignés par " -"l'IPTC et la NAA." - -#: src/datasets.cpp:175 -msgid "Object Type" -msgstr "type d'objet" - -#: src/datasets.cpp:176 -msgid "" -"The Object Type is used to distinguish between different types of objects " -"within the IIM. The first part is a number representing a language " -"independent international reference to an Object Type followed by a colon " -"separator. The second part, if used, is a text representation of the Object " -"Type Number consisting of graphic characters plus spaces either in English " -"or in the language of the service as indicated in tag " -msgstr "" - -#: src/datasets.cpp:184 -msgid "Object Attribute" -msgstr "Attributs de l'objet" - -#: src/datasets.cpp:185 -msgid "" -"The Object Attribute defines the nature of the object independent of the " -"Subject. The first part is a number representing a language independent " -"international reference to an Object Attribute followed by a colon " -"separator. The second part, if used, is a text representation of the Object " -"Attribute Number consisting of graphic characters plus spaces either in " -"English, or in the language of the service as indicated in tag " -"" -msgstr "" - -#: src/datasets.cpp:193 -msgid "Object Name" -msgstr "Nom de l'objet" - -#: src/datasets.cpp:194 -msgid "" -"Used as a shorthand reference for the object. Changes to exist-ing data, " -"such as updated stories or new crops on photos, should be identified in tag " -"." -msgstr "" - -#: src/datasets.cpp:198 -msgid "Document Title" -msgstr "Nom du document" - -#: src/datasets.cpp:199 src/olympusmn.cpp:820 -msgid "Edit Status" -msgstr "Statut des modifications" - -#: src/datasets.cpp:200 -msgid "Status of the object data, according to the practice of the provider." -msgstr "" - -#: src/datasets.cpp:202 -msgid "Editorial Update" -msgstr "Mise à jour éditorial" - -#: src/datasets.cpp:203 -msgid "" -"Indicates the type of update that this object provides to a previous object. " -"The link to the previous object is made using the tags and " -", according to the practices of the provider." -msgstr "" - -#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:419 -msgid "Urgency" -msgstr "Priorité" - -#: src/datasets.cpp:208 -msgid "" -"Specifies the editorial urgency of content and not necessarily the envelope " -"handling priority (see tag ). The \"1\" is most urgent, " -"\"5\" normal and \"8\" denotes the least-urgent copy." -msgstr "" - -#: src/datasets.cpp:213 src/properties.cpp:167 -msgid "Subject" -msgstr "Sujet" - -#: src/datasets.cpp:214 -msgid "The Subject Reference is a structured definition of the subject matter." -msgstr "" - -#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:405 -msgid "Category" -msgstr "Catégorie" - -#: src/datasets.cpp:217 -msgid "" -"Identifies the subject of the object data in the opinion of the provider. A " -"list of categories will be maintained by a regional registry, where " -"available, otherwise by the provider." -msgstr "" - -#: src/datasets.cpp:222 -msgid "Supplemental Category" -msgstr "Catégorie Supplémentaire" - -#: src/datasets.cpp:223 -msgid "" -"Supplemental categories further refine the subject of an object data. A " -"supplemental category may include any of the recognised categories as used " -"in tag . Otherwise, selection of supplemental categories are left " -"to the provider." -msgstr "" - -#: src/datasets.cpp:228 src/properties.cpp:417 -msgid "Supplemental Categories" -msgstr "Catégories Supplémentaires" - -#: src/datasets.cpp:229 -msgid "Fixture Id" -msgstr "Identificateur" - -#: src/datasets.cpp:230 -msgid "" -"Identifies object data that recurs often and predictably. Enables users to " -"immediately find or recall such an object." -msgstr "" - -#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:395 -msgid "Keywords" -msgstr "Mots-clés" - -#: src/datasets.cpp:234 -msgid "" -"Used to indicate specific information retrieval words. It is expected that a " -"provider of various types of data that are related in subject matter uses " -"the same keyword, enabling the receiving system or subsystems to search " -"across all types of data for related material." -msgstr "" - -#: src/datasets.cpp:240 -msgid "Location Code" -msgstr "Code du pays" - -#: src/datasets.cpp:241 -msgid "" -"Indicates the code of a country/geographical location referenced by the " -"content of the object. Where ISO has established an appropriate country code " -"under ISO 3166, that code will be used. When ISO 3166 does not adequately " -"provide for identification of a location or a country, e.g. ships at sea, " -"space, IPTC will assign an appropriate three-character code under the " -"provisions of ISO 3166 to avoid conflicts." -msgstr "" - -#: src/datasets.cpp:248 -msgid "Location Name" -msgstr "Nom du pays" - -#: src/datasets.cpp:249 -msgid "" -"Provides a full, publishable name of a country/geographical location " -"referenced by the content of the object, according to guidelines of the " -"provider." -msgstr "" - -#: src/datasets.cpp:253 src/properties.cpp:358 -msgid "Release Date" -msgstr "Date de publication" - -#: src/datasets.cpp:254 -msgid "" -"Designates in the form CCYYMMDD the earliest date the provider intends the " -"object to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:257 -msgid "Release Time" -msgstr "Heure de publication" - -#: src/datasets.cpp:258 -msgid "" -"Designates in the form HHMMSS:HHMM the earliest time the provider intends " -"the object to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:261 -msgid "Expiration Date" -msgstr "Date d'expiration" - -#: src/datasets.cpp:262 -msgid "" -"Designates in the form CCYYMMDD the latest date the provider or owner " -"intends the object data to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:265 -msgid "ExpirationTime" -msgstr "Heure d'expiration" - -#: src/datasets.cpp:266 -msgid "" -"Designates in the form HHMMSS:HHMM the latest time the provider or owner " -"intends the object data to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:269 -msgid "Special Instructions" -msgstr "Instructions particulières" - -#: src/datasets.cpp:270 -msgid "" -"Other editorial instructions concerning the use of the object data, such as " -"embargoes and warnings." -msgstr "" - -#: src/datasets.cpp:273 src/properties.cpp:414 -msgid "Instructions" -msgstr "Instructions" - -#: src/datasets.cpp:274 -msgid "Action Advised" -msgstr "Action conseillée" - -#: src/datasets.cpp:275 -msgid "" -"Indicates the type of action that this object provides to a previous object. " -"The link to the previous object is made using tags and " -", according to the practices of the provider." -msgstr "" - -#: src/datasets.cpp:279 -msgid "Reference Service" -msgstr " Service de référence" - -#: src/datasets.cpp:280 -msgid "" -"Identifies the Service Identifier of a prior envelope to which the current " -"object refers." -msgstr "" - -#: src/datasets.cpp:283 -msgid "Reference Date" -msgstr "Date de référence" - -#: src/datasets.cpp:284 -msgid "" -"Identifies the date of a prior envelope to which the current object refers." -msgstr "" - -#: src/datasets.cpp:286 -msgid "Reference Number" -msgstr "Numéro de référence" - -#: src/datasets.cpp:287 -msgid "" -"Identifies the Envelope Number of a prior envelope to which the current " -"object refers." -msgstr "" - -#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:409 -msgid "Date Created" -msgstr "Date de création" - -#: src/datasets.cpp:290 -msgid "" -"Represented in the form CCYYMMDD to designate the date the intellectual " -"content of the object data was created rather than the date of the creation " -"of the physical representation. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:295 -msgid "Time Created" -msgstr "Heure de création" - -#: src/datasets.cpp:296 -msgid "" -"Represented in the form HHMMSS:HHMM to designate the time the intellectual " -"content of the object data current source material was created rather than " -"the creation of the physical representation. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:301 -msgid "Digitization Date" -msgstr "Date de numérisation" - -#: src/datasets.cpp:302 -msgid "" -"Represented in the form CCYYMMDD to designate the date the digital " -"representation of the object data was created. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:305 -msgid "Digitization Time" -msgstr "Heure de numérisation" - -#: src/datasets.cpp:306 -msgid "" -"Represented in the form HHMMSS:HHMM to designate the time the digital " -"representation of the object data was created. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 -#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:106 -#: src/pentaxmn.cpp:468 src/pentaxmn.cpp:526 src/sigmamn.cpp:154 -#: src/sonymn.cpp:110 -msgid "Program" -msgstr "Logiciel" - -#: src/datasets.cpp:311 -msgid "Identifies the type of program used to originate the object data." -msgstr "" - -#: src/datasets.cpp:313 -msgid "Program Version" -msgstr "Version du logiciel" - -#: src/datasets.cpp:314 -msgid "Used to identify the version of the program mentioned in tag ." -msgstr "" - -#: src/datasets.cpp:316 -msgid "Object Cycle" -msgstr "Cycle de l'objet" - -#: src/datasets.cpp:317 -msgid "Used to identify the editorial cycle of object data." -msgstr "" - -#: src/datasets.cpp:319 -msgid "By-line" -msgstr "Créateur" - -#: src/datasets.cpp:320 -msgid "" -"Contains name of the creator of the object data, e.g. writer, photographer " -"or graphic artist." -msgstr "" - -#: src/datasets.cpp:323 -msgid "Author" -msgstr "Auteur" - -#: src/datasets.cpp:324 -msgid "By-line Title" -msgstr "Titre du créateur" - -#: src/datasets.cpp:325 -msgid "" -"A by-line title is the title of the creator or creators of an object data. " -"Where used, a by-line title should follow the by-line it modifies." -msgstr "" - -#: src/datasets.cpp:328 src/datasets.cpp:332 src/properties.cpp:406 -msgid "City" -msgstr "Ville" - -#: src/datasets.cpp:329 -msgid "" -"Identifies city of object data origin according to guidelines established by " -"the provider." -msgstr "" - -#: src/datasets.cpp:333 -msgid "Sub Location" -msgstr "Lieu précis" - -#: src/datasets.cpp:334 -msgid "" -"Identifies the location within a city from which the object data originates, " -"according to guidelines established by the provider." -msgstr "" - -#: src/datasets.cpp:337 -msgid "Province State" -msgstr "État Région" - -#: src/datasets.cpp:338 -msgid "" -"Identifies Province/State of origin according to guidelines established by " -"the provider." -msgstr "" - -#: src/datasets.cpp:341 -msgid "State/Province" -msgstr "État/Région" - -#: src/datasets.cpp:342 src/properties.cpp:649 -msgid "Country Code" -msgstr "Code du pays" - -#: src/datasets.cpp:343 -msgid "" -"Indicates the code of the country/primary location where the intellectual " -"property of the object data was created, e.g. a photo was taken, an event " -"occurred. Where ISO has established an appropriate country code under ISO " -"3166, that code will be used. When ISO 3166 does not adequately provide for " -"identification of a location or a new country, e.g. ships at sea, space, " -"IPTC will assign an appropriate three-character code under the provisions of " -"ISO 3166 to avoid conflicts." -msgstr "" - -#: src/datasets.cpp:352 -msgid "Country Name" -msgstr "Libellé du pays" - -#: src/datasets.cpp:353 -msgid "" -"Provides full, publishable, name of the country/primary location where the " -"intellectual property of the object data was created, according to " -"guidelines of the provider." -msgstr "" - -#: src/datasets.cpp:357 src/properties.cpp:407 -msgid "Country" -msgstr "Pays" - -#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:418 -msgid "Transmission Reference" -msgstr "Référence de la transmission" - -#: src/datasets.cpp:359 -msgid "" -"A code representing the location of original transmission according to " -"practices of the provider." -msgstr "" - -#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:413 -msgid "Headline" -msgstr "Chapô" - -#: src/datasets.cpp:364 -msgid "" -"A publishable entry providing a synopsis of the contents of the object data." -msgstr "" - -#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:408 -msgid "Credit" -msgstr "Crédit" - -#: src/datasets.cpp:368 -msgid "" -"Identifies the provider of the object data, not necessarily the owner/" -"creator." -msgstr "" - -#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:166 -#: src/properties.cpp:415 -msgid "Source" -msgstr "Source" - -#: src/datasets.cpp:372 -msgid "" -"Identifies the original owner of the intellectual content of the object " -"data. This could be an agency, a member of an agency or an individual." -msgstr "" - -#: src/datasets.cpp:377 -msgid "Contains any necessary copyright notice." -msgstr "" - -#: src/datasets.cpp:379 -msgid "Copyright Notice" -msgstr "Notice Droit d'auteur" - -#: src/datasets.cpp:380 src/properties.cpp:937 src/properties.cpp:946 -msgid "Contact" -msgstr "Contact" - -#: src/datasets.cpp:381 -msgid "" -"Identifies the person or organisation which can provide further background " -"information on the object data." -msgstr "" - -#: src/datasets.cpp:384 -msgid "Caption" -msgstr "Légende" - -#: src/datasets.cpp:385 -msgid "A textual description of the object data." -msgstr "" - -#: src/datasets.cpp:387 src/properties.cpp:151 src/properties.cpp:981 -msgid "Description" -msgstr "Description" - -#: src/datasets.cpp:388 -msgid "Writer" -msgstr "Auteur de la Description" - -#: src/datasets.cpp:389 -msgid "" -"Identification of the name of the person involved in the writing, editing or " -"correcting the object data or caption/abstract." -msgstr "" - -#: src/datasets.cpp:392 -#, fuzzy -msgid "Rasterized Caption" -msgstr "Solarisation" - -#: src/datasets.cpp:393 -msgid "" -"Contains the rasterized object data description and is used where characters " -"that have not been coded are required for the caption." -msgstr "" - -#: src/datasets.cpp:397 -msgid "Indicates the color components of an image." -msgstr "" - -#: src/datasets.cpp:399 -msgid "Image Orientation" -msgstr "Orientation" - -#: src/datasets.cpp:400 -#, fuzzy -msgid "Indicates the layout of an image." -msgstr "" -"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " -"a été enregistrée." - -#: src/datasets.cpp:402 src/properties.cpp:157 -msgid "Language" -msgstr "Langue" - -#: src/datasets.cpp:403 -msgid "" -"Describes the major national language of the object, according to the 2-" -"letter codes of ISO 639:1988. Does not define or imply any coded character " -"set, but is used for internal routing, e.g. to various editorial desks." -msgstr "" - -#: src/datasets.cpp:408 -msgid "Audio Type" -msgstr "Type audio" - -#: src/datasets.cpp:409 -#, fuzzy -msgid "Indicates the type of an audio content." -msgstr "Identifie le fournisseur et le produit" - -#: src/datasets.cpp:411 -msgid "Audio Rate" -msgstr "Débit audio" - -#: src/datasets.cpp:412 -msgid "Indicates the sampling rate in Hertz of an audio content." -msgstr "" - -#: src/datasets.cpp:414 -msgid "Audio Resolution" -msgstr "Résolution audio" - -#: src/datasets.cpp:415 -msgid "Indicates the sampling resolution of an audio content." -msgstr "" - -#: src/datasets.cpp:417 -msgid "Audio Duration" -msgstr "Durée audio" - -#: src/datasets.cpp:418 -msgid "Indicates the duration of an audio content." -msgstr "" - -#: src/datasets.cpp:420 -#, fuzzy -msgid "Audio Outcue" -msgstr "Débit audio" - -#: src/datasets.cpp:421 -msgid "" -"Identifies the content of the end of an audio object data, according to " -"guidelines established by the provider." -msgstr "" - -#: src/datasets.cpp:424 -msgid "Preview Format" -msgstr "Format de prévisualisation" - -#: src/datasets.cpp:425 -msgid "" -"A binary number representing the file format of the object data preview. The " -"file format must be registered with IPTC or NAA organizations with a unique " -"number assigned to it." -msgstr "" - -#: src/datasets.cpp:429 -msgid "Preview Version" -msgstr "Version de prévisualisation" - -#: src/datasets.cpp:430 -#, fuzzy -msgid "" -"A binary number representing the particular version of the object data " -"preview file format specified in tag ." -msgstr "" -"Un champ binaire représentant la version courante du format du fichier " -"spécifié par le marqueur ." - -#: src/datasets.cpp:433 -msgid "Preview Data" -msgstr "Données de prévisualisation" - -#: src/datasets.cpp:434 -msgid "Binary image preview data." -msgstr "" - -#: src/datasets.cpp:436 src/datasets.cpp:437 -msgid "(Invalid)" -msgstr "(Invalide)" - -#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 -msgid "Unknown dataset" -msgstr "Données inconnues" - -#: src/error.cpp:55 -#, fuzzy -msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." -msgstr "Erreur %0 : arg1=%1, arg2=%2, arg3=%3." - -#: src/error.cpp:56 -msgid "Success" -msgstr "Réussite" - -#: src/error.cpp:59 -msgid "This does not look like a %1 image" -msgstr "Cela ne ressemble pas a une image %1" - -#: src/error.cpp:60 -msgid "Invalid dataset name `%1'" -msgstr "Nom de donnés `%1' invalide" - -#: src/error.cpp:61 -msgid "Invalid record name `%1'" -msgstr "Nom d'enregistrement `%1' invalide" - -#: src/error.cpp:62 -msgid "Invalid key `%1'" -msgstr "Clef `%1' invalide" - -#: src/error.cpp:63 -#, fuzzy -msgid "Invalid tag name or ifdId `%1', ifdId %2" -msgstr "Nom de donnés `%1' invalide" - -#: src/error.cpp:64 -msgid "Value not set" -msgstr "Valeur non réglée" - -#: src/error.cpp:65 -msgid "%1: Failed to open the data source: %2" -msgstr "%1 : Impossible d'ouvrir la source de données : %2" - -#: src/error.cpp:66 -msgid "%1: Failed to open file (%2): %3" -msgstr "%1 : Impossible d'ouvrir le fichier (%2) : %3" - -#: src/error.cpp:67 -msgid "%1: The file contains data of an unknown image type" -msgstr "%1 : Le fichier contient des données de type inconnu" - -#: src/error.cpp:68 -msgid "The memory contains data of an unknown image type" -msgstr "La mémoire contient des données de type inconnu" - -#: src/error.cpp:69 -msgid "Image type %1 is not supported" -msgstr "Le type d'image %1 n'est pas supporté" - -#: src/error.cpp:70 -msgid "Failed to read image data" -msgstr "Impossible de lire les données de l'image" - -#: src/error.cpp:71 -msgid "This does not look like a JPEG image" -msgstr "Cela ne semble pas être une image JPEG" - -#: src/error.cpp:72 -#, fuzzy -msgid "%1: Failed to map file for reading and writing: %2" -msgstr "Impossible d'ouvrir le fichier à lire\n" - -#: src/error.cpp:73 -msgid "%1: Failed to rename file to %2: %3" -msgstr "%1 : Impossible de renommer le fichier en %2 : %3" - -#: src/error.cpp:74 -msgid "%1: Transfer failed: %2" -msgstr "%1 : Transfert échoué : %2" - -#: src/error.cpp:75 -msgid "Memory transfer failed: %1" -msgstr "Transfert de mémoire échoué : %1" - -#: src/error.cpp:76 -msgid "Failed to read input data" -msgstr "Impossible de lire les données d'entrée" - -#: src/error.cpp:77 -msgid "Failed to write image" -msgstr "Impossible d'écrire l'image" - -#: src/error.cpp:78 -msgid "Input data does not contain a valid image" -msgstr "Les données d'entrée ne contiennent pas d'image valide" - -#: src/error.cpp:79 -#, fuzzy -msgid "Invalid ifdId %1" -msgstr "Clef `%1' invalide" - -#: src/error.cpp:80 -msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" -msgstr "" -"Entry::setValue : valeur trop grande (marqueur=%1, taille=%2, demandé=%3)" - -#: src/error.cpp:81 -msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" -msgstr "" -"Entry::setDataArea : valeur trop grande (marqueur=%1, taille=%2, demandé=%3)" - -#: src/error.cpp:82 -msgid "Offset out of range" -msgstr "Décalage hors de porté" - -#: src/error.cpp:83 -#, fuzzy -msgid "Unsupported data area offset type" -msgstr "Format de date non supporté" - -#: src/error.cpp:84 -#, fuzzy -msgid "Invalid charset: `%1'" -msgstr "Clef `%1' invalide" - -#: src/error.cpp:85 -msgid "Unsupported date format" -msgstr "Format de date non supporté" - -#: src/error.cpp:86 -msgid "Unsupported time format" -msgstr "Format d'heure non supporté" - -#: src/error.cpp:87 -#, fuzzy -msgid "Writing to %1 images is not supported" -msgstr "Écrire dans des images %2 n'est pas supporté" - -#: src/error.cpp:88 -msgid "Setting %1 in %2 images is not supported" -msgstr "Régler %1 dans des image %2 n'est pas supporté" - -#: src/error.cpp:89 -msgid "This does not look like a CRW image" -msgstr "Cela ne semble pas être une image CRW" - -#: src/error.cpp:90 -msgid "%1: Not supported" -msgstr "%1 : non supporté" - -#: src/error.cpp:91 -msgid "No namespace info available for XMP prefix `%1'" -msgstr "" - -#: src/error.cpp:92 -msgid "No prefix registered for namespace `%2', needed for property path `%1'" -msgstr "" - -#: src/error.cpp:93 -msgid "Size of %1 JPEG segment is larger than 65535 bytes" -msgstr "Taille du segment JPEG %1 est plus grand que 65535 octets" - -#: src/error.cpp:94 -msgid "Unhandled Xmpdatum %1 of type %2" -msgstr "" - -#: src/error.cpp:95 -msgid "Unhandled XMP node %1 with opt=%2" -msgstr "" - -#: src/error.cpp:96 -msgid "XMP Toolkit error %1: %2" -msgstr "" - -#: src/error.cpp:97 -msgid "Failed to decode Lang Alt property %1 with opt=%2" -msgstr "" - -#: src/error.cpp:98 -msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" -msgstr "" - -#: src/error.cpp:99 -msgid "Failed to encode Lang Alt property %1" -msgstr "" - -#: src/error.cpp:100 -msgid "Failed to determine property name from path %1, namespace %2" -msgstr "" - -#: src/error.cpp:101 -msgid "Schema namespace %1 is not registered with the XMP Toolkit" -msgstr "" - -#: src/error.cpp:102 -msgid "No namespace registered for prefix `%1'" -msgstr "" - -#: src/error.cpp:103 -msgid "" -"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" -"%1', `%2', `%3'" -msgstr "" - -#: src/error.cpp:104 -#, fuzzy -msgid "Invalid XmpText type `%1'" -msgstr "Clef `%1' invalide" - -#: src/error.cpp:105 -msgid "TIFF directory %1 has too many entries" -msgstr "" - -#: src/error.cpp:106 -msgid "Multiple TIFF array element tags %1 in one directory" -msgstr "" - -#: src/error.cpp:107 -msgid "TIFF array element tag %1 has wrong type" -msgstr "" - -#: src/error.cpp:108 -#, fuzzy -msgid "%1 has invalid XMP value type `%2'" -msgstr "Clef `%1' invalide" - -#: src/exiv2.cpp:212 -msgid "Copyright (C) 2004-2012 Andreas Huggel.\n" -msgstr "Copyright (C) 2004-2012 Andreas Huggel.\n" - -#: src/exiv2.cpp:214 -msgid "" -"This program is free software; you can redistribute it and/or\n" -"modify it under the terms of the GNU General Public License\n" -"as published by the Free Software Foundation; either version 2\n" -"of the License, or (at your option) any later version.\n" -msgstr "" - -#: src/exiv2.cpp:219 -msgid "" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -msgstr "" - -#: src/exiv2.cpp:224 -msgid "" -"You should have received a copy of the GNU General Public\n" -"License along with this program; if not, write to the Free\n" -"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" -"Boston, MA 02110-1301 USA\n" -msgstr "" - -#: src/exiv2.cpp:232 -msgid "Usage:" -msgstr "Utilisation :" - -#: src/exiv2.cpp:233 -msgid "" -"[ options ] [ action ] file ...\n" -"\n" -msgstr "" -" [ options ] [ action ] fichier ...\n" -"\n" - -#: src/exiv2.cpp:234 -msgid "Manipulate the Exif metadata of images.\n" -msgstr "Manipulation des métadonnées EXIF issues des images.\n" - -#: src/exiv2.cpp:240 -msgid "" -"\n" -"Actions:\n" -msgstr "" -"\n" -"Actions :\n" - -#: src/exiv2.cpp:241 -msgid "" -" ad | adjust Adjust Exif timestamps by the given time. This action\n" -" requires at least one of the -a, -Y, -O or -D options.\n" -msgstr "" -" ad | adjust Ajuste l'horodatage Exif par la date donnée. Cette\n" -" action nécessite l'option -a date.\n" - -#: src/exiv2.cpp:243 -msgid " pr | print Print image metadata.\n" -msgstr " pr | print Affiche les métadonnées de l'image.\n" - -#: src/exiv2.cpp:244 -msgid " rm | delete Delete image metadata from the files.\n" -msgstr " rm | delete Supprime les métadonnées de l'image.\n" - -#: src/exiv2.cpp:245 -msgid "" -" in | insert Insert metadata from corresponding *.exv files.\n" -" Use option -S to change the suffix of the input files.\n" -msgstr "" -" in | insert Insert les métadonnées des fichiers *.exv correspondants.\n" -" Utilisez l'option -S pour changer le suffixe des fichiers " -"d'entrées.\n" - -#: src/exiv2.cpp:247 -msgid "" -" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" -msgstr "" -" ex | extract Extrait les métadonnées dans un ficher *.exv et l'aperçu de " -"l'image.\n" - -#: src/exiv2.cpp:248 -msgid "" -" mv | rename Rename files and/or set file timestamps according to the\n" -" Exif create timestamp. The filename format can be set with\n" -" -r format, timestamp options are controlled with -t and -T.\n" -msgstr "" -" mv | rename Renomme les fichier et/ou change l'horodatage en " -"concordance\n" -" avec l'horodatage Exif. Le format de nom du fichier peut " -"être définit avec\n" -" -r format, les options d'horodatage sont contrôlées par -t " -"et -T.\n" - -#: src/exiv2.cpp:251 -msgid "" -" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" -" IPTC metadata of image files or set the JPEG comment.\n" -" Requires option -c, -m or -M.\n" -msgstr "" -" mo | modify Commande pour modifier (add, set, delete) les métadonnées\n" -" Exif et Iptc ou le commentaire JPEG de l'image.\n" -" Nécessite l'option -c, -m ou -M.\n" - -#: src/exiv2.cpp:254 -msgid "" -" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" -" Exif tag.\n" -msgstr "" -" fi | fixiso Copie le paramètre ISO du marqueur Nikon dans le marqueur\n" -" Exif standard.\n" - -#: src/exiv2.cpp:256 -msgid "" -" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" -" character encoding can be specified with the -n option.\n" -msgstr "" - -#: src/exiv2.cpp:258 -msgid "" -"\n" -"Options:\n" -msgstr "" -"\n" -"Options :\n" - -#: src/exiv2.cpp:259 -msgid " -h Display this help and exit.\n" -msgstr " -h Affiche cette aide et sort.\n" - -#: src/exiv2.cpp:260 -msgid " -V Show the program version and exit.\n" -msgstr " -V Affiche la version du logiciel et sort.\n" - -#: src/exiv2.cpp:261 -msgid " -v Be verbose during the program run.\n" -msgstr " -v Bavard lors de l'exécution du programme.\n" - -#: src/exiv2.cpp:262 -#, fuzzy -msgid "" -" -q Silence warnings and error messages during the program run " -"(quiet).\n" -msgstr " -v Bavard lors de l'exécution du programme.\n" - -#: src/exiv2.cpp:263 -msgid "" -" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" -msgstr "" - -#: src/exiv2.cpp:264 -msgid " -b Show large binary values.\n" -msgstr " -b Affiche les grandes données binaires.\n" - -#: src/exiv2.cpp:265 -#, fuzzy -msgid " -u Show unknown tags.\n" -msgstr " -u N'affiche pas les marqueurs inconnus.\n" - -#: src/exiv2.cpp:266 -msgid " -g key Only output info for this key (grep).\n" -msgstr "" - -#: src/exiv2.cpp:267 -msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" -msgstr "" - -#: src/exiv2.cpp:268 -msgid " -k Preserve file timestamps (keep).\n" -msgstr " -k Préserve l'horodatage des fichiers.\n" - -#: src/exiv2.cpp:269 -msgid "" -" -t Also set the file timestamp in 'rename' action (overrides -k).\n" -msgstr "" -" -t Change aussi l'horodatage du fichier lors de l'action " -"'rename' (redéfini -k).\n" - -#: src/exiv2.cpp:270 -msgid "" -" -T Only set the file timestamp in 'rename' action, do not rename\n" -" the file (overrides -k).\n" -msgstr "" -" -T Change seulement l'horodatage du fichier lors de l'action " -"'rename'\n" -" ne ne renomme pas le fichier (redéfini -k).\n" - -#: src/exiv2.cpp:272 -msgid " -f Do not prompt before overwriting existing files (force).\n" -msgstr "" -" -f Ne demande pas avant de réécrire un fichier existant (force).\n" - -#: src/exiv2.cpp:273 -msgid " -F Do not prompt before renaming files (Force).\n" -msgstr " -F Ne demande pas avant de renommer un fichier (Force).\n" - -#: src/exiv2.cpp:274 -msgid "" -" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" -" is only used with the 'adjust' action.\n" -msgstr "" -" -a time Ajustement temporel au format [-]HH[:MM[:SS]]. Cette option\n" -" est seulement utilisée avec l'action 'adjust'.\n" - -#: src/exiv2.cpp:276 -msgid " -Y yrs Year adjustment with the 'adjust' action.\n" -msgstr "" - -#: src/exiv2.cpp:277 -msgid " -O mon Month adjustment with the 'adjust' action.\n" -msgstr "" - -#: src/exiv2.cpp:278 -msgid " -D day Day adjustment with the 'adjust' action.\n" -msgstr "" - -#: src/exiv2.cpp:279 -msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" -msgstr "" -" -p mode Mode d'affichage pour l'action 'print'. Les modes possible " -"sont :\n" - -#: src/exiv2.cpp:280 -msgid " s : print a summary of the Exif metadata (the default)\n" -msgstr " s : Affiche un résumé des métadonnées Exif (par défaut)\n" - -#: src/exiv2.cpp:281 -#, fuzzy -msgid "" -" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" -msgstr "" -" v : Valeurs brutes des métadonnées Exif (raccourci -Pxgnycv)\n" - -#: src/exiv2.cpp:282 -#, fuzzy -msgid " t : interpreted (translated) Exif data (-PEkyct)\n" -msgstr "" -" t : Interprète les métadonnées Exif data (raccourci pour -" -"Pkyct)\n" - -#: src/exiv2.cpp:283 -#, fuzzy -msgid " v : plain Exif data values (-PExgnycv)\n" -msgstr "" -" v : Valeurs brutes des métadonnées Exif (raccourci -Pxgnycv)\n" - -#: src/exiv2.cpp:284 -#, fuzzy -msgid " h : hexdump of the Exif data (-PExgnycsh)\n" -msgstr "" -" h : hexdump des métadonnées Exif data (raccourci pour -" -"Pxgnycsh)\n" - -#: src/exiv2.cpp:285 -#, fuzzy -msgid " i : IPTC data values (-PIkyct)\n" -msgstr " i : Données Iptc\n" - -#: src/exiv2.cpp:286 -#, fuzzy -msgid " x : XMP properties (-PXkyct)\n" -msgstr " x : propriétés XMP \n" - -#: src/exiv2.cpp:287 src/exiv2.cpp:310 -msgid " c : JPEG comment\n" -msgstr " c : Commentaire JPEG\n" - -#: src/exiv2.cpp:288 -#, fuzzy -msgid " p : list available previews\n" -msgstr " l : intitulé du marqueur\n" - -#: src/exiv2.cpp:289 -#, fuzzy -msgid "" -" -P flgs Print flags for fine control of tag lists ('print' action):\n" -msgstr "" -" -P cols Affiche les colonnes pour la liste de marqueurs Exif (action " -"'print'). Colonnes Valides :\n" - -#: src/exiv2.cpp:290 -#, fuzzy -msgid " E : include Exif tags in the list\n" -msgstr " s : taille en octets\n" - -#: src/exiv2.cpp:291 -#, fuzzy -msgid " I : IPTC datasets\n" -msgstr " i : données IPTC\n" - -#: src/exiv2.cpp:292 -#, fuzzy -msgid " X : XMP properties\n" -msgstr " x : propriétés XMP \n" - -#: src/exiv2.cpp:293 -#, fuzzy -msgid " x : print a column with the tag number\n" -msgstr " x : affiche une colonne avec la valeur du marqueur\n" - -#: src/exiv2.cpp:294 -msgid " g : group name\n" -msgstr " g : nom du group\n" - -#: src/exiv2.cpp:295 -msgid " k : key\n" -msgstr " k : clef\n" - -#: src/exiv2.cpp:296 -msgid " l : tag label\n" -msgstr " l : intitulé du marqueur\n" - -#: src/exiv2.cpp:297 -msgid " n : tag name\n" -msgstr " n : nom du marqueur\n" - -#: src/exiv2.cpp:298 -msgid " y : type\n" -msgstr " y : type\n" - -#: src/exiv2.cpp:299 -msgid " c : number of components (count)\n" -msgstr " c : nombre de composant\n" - -#: src/exiv2.cpp:300 -msgid " s : size in bytes\n" -msgstr " s : taille en octets\n" - -#: src/exiv2.cpp:301 -msgid " v : plain data value\n" -msgstr " v : valeur brute\n" - -#: src/exiv2.cpp:302 -msgid " t : interpreted (translated) data\n" -msgstr " t : valeur interprété\n" - -#: src/exiv2.cpp:303 -msgid " h : hexdump of the data\n" -msgstr " h : hexdump de la donnée\n" - -#: src/exiv2.cpp:304 -msgid "" -" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" -msgstr "" -" -d tgt Efface la(les) cible(s) de l'action 'delete'. Les cibles " -"possibles sont :\n" - -#: src/exiv2.cpp:305 -msgid " a : all supported metadata (the default)\n" -msgstr " a : toutes les métadonnées (par défaut)\n" - -#: src/exiv2.cpp:306 -msgid " e : Exif section\n" -msgstr " e : section Exif\n" - -#: src/exiv2.cpp:307 -msgid " t : Exif thumbnail only\n" -msgstr " t : aperçu Exif seulement\n" - -#: src/exiv2.cpp:308 -msgid " i : IPTC data\n" -msgstr " i : données IPTC\n" - -#: src/exiv2.cpp:309 -msgid " x : XMP packet\n" -msgstr " x : paquet XMP\n" - -#: src/exiv2.cpp:311 -#, fuzzy -msgid "" -" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" -" the same as those for the -d option, plus a modifier:\n" -" X : Insert metadata from an XMP sidecar file .xmp\n" -" Only JPEG thumbnails can be inserted, they need to be named\n" -" -thumb.jpg\n" -msgstr "" -" -i tgt Insert la(les) cible(s) pour l'action 'insert'. Les cibles " -"possible sont\n" -" les même que pour l'option -d. Seul les aperçus JPEG peuvent\n" -" inséré, ils doivent être nommés -thumb.jpg\n" - -#: src/exiv2.cpp:316 -#, fuzzy -msgid "" -" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" -" are the same as those for the -d option, plus a target to " -"extract\n" -" preview images and a modifier to generate an XMP sidecar file:\n" -" p[[, ...]] : Extract preview images.\n" -" X : Extract metadata to an XMP sidecar file .xmp\n" -msgstr "" -" -e tgt Extrait la(les) cible(s) pour l'action 'extract'. Les cibles " -"possible sont\n" -" les même que pour l'option -d.\n" - -#: src/exiv2.cpp:321 -msgid "" -" -r fmt Filename format for the 'rename' action. The format string\n" -" follows strftime(3). The following keywords are supported:\n" -msgstr "" -" -r fmt Format de nom de fichier pour l'action 'rename'. la chaîne de " -"format\n" -" suit strftime(3). Les mots-clés suivant sont supportés :\n" - -#: src/exiv2.cpp:323 -msgid " :basename: - original filename without extension\n" -msgstr " :basename: - nom de fichier original sans extensions\n" - -#: src/exiv2.cpp:324 -msgid "" -" :dirname: - name of the directory holding the original file\n" -msgstr "" -" :dirname: - nom du répertoire contenant le fichier original\n" - -#: src/exiv2.cpp:325 -msgid " :parentname: - name of parent directory\n" -msgstr " :parentname: - nom du répertoire parent\n" - -#: src/exiv2.cpp:326 -msgid " Default filename format is " -msgstr " Le format du nom par défaut est " - -#: src/exiv2.cpp:328 -msgid " -c txt JPEG comment string to set in the image.\n" -msgstr " -c txt Commentaire JPEG a appliquer à l'image.\n" - -#: src/exiv2.cpp:329 -msgid "" -" -m file Command file for the modify action. The format for commands is\n" -" set|add|del [[] ].\n" -msgstr "" -" -m file Fichier de commandes pour l'action modifier . Le format des " -"commande est\n" -" set|add|del [[] ].\n" - -#: src/exiv2.cpp:331 -msgid "" -" -M cmd Command line for the modify action. The format for the\n" -" commands is the same as that of the lines of a command file.\n" -msgstr "" -" -M file Ligne de commandes pour l'action modifier . Le format des " -"commande est\n" -" le meme que celui utilisé dans le fichier de commande.\n" - -#: src/exiv2.cpp:333 -msgid "" -" -l dir Location (directory) for files to be inserted from or extracted " -"to.\n" -msgstr "" -" -l dir Emplacement (répertoire) pour les fichiers qui seront insérés de " -"ou extraits dans.\n" - -#: src/exiv2.cpp:334 -msgid "" -" -S .suf Use suffix .suf for source files for insert command.\n" -"\n" -msgstr "" -" -S .suf Utilise le suffixe suf comme source du ficher pour la commande " -"insertion.\n" -"\n" - -#: src/exiv2.cpp:371 src/exiv2.cpp:401 src/exiv2.cpp:436 src/exiv2.cpp:495 -#: src/exiv2.cpp:682 -msgid "Option" -msgstr "Оption" - -#: src/exiv2.cpp:372 -msgid "requires an argument\n" -msgstr "nécessite un argument\n" - -#: src/exiv2.cpp:376 -msgid "Unrecognized option" -msgstr "Option non reconnue" - -#: src/exiv2.cpp:382 -msgid "getopt returned unexpected character code" -msgstr "getopt a retourné un caractère non attendu" - -#: src/exiv2.cpp:402 -#, fuzzy -msgid "Invalid argument" -msgstr "clef invalide" - -#: src/exiv2.cpp:427 src/exiv2.cpp:480 -msgid "Ignoring surplus option" -msgstr "Ignore l'option supplémentaire" - -#: src/exiv2.cpp:437 src/exiv2.cpp:497 src/exiv2.cpp:683 -msgid "is not compatible with a previous option\n" -msgstr "n'est pas compatible avec une option précédente\n" - -#: src/exiv2.cpp:452 -msgid "Ignoring surplus option -a" -msgstr "Ignore l'option supplémentaire -a" - -#: src/exiv2.cpp:458 -msgid "Error parsing -a option argument" -msgstr "Erreur en traitant l'argument de l'option -a" - -#: src/exiv2.cpp:465 -msgid "Option -a is not compatible with a previous option\n" -msgstr "L'option -a n'est pas compatible avec une option précédente\n" - -#: src/exiv2.cpp:487 -msgid "Error parsing" -msgstr "Erreur lors de l'analyse" - -#: src/exiv2.cpp:489 -#, fuzzy -msgid "option argument" -msgstr "Nom du pays" - -#: src/exiv2.cpp:520 -msgid "Unrecognized print mode" -msgstr "Mode d'affichage non reconnu" - -#: src/exiv2.cpp:528 -msgid "Ignoring surplus option -p" -msgstr "Ignore l'option supplémentaire -p" - -#: src/exiv2.cpp:532 -msgid "Option -p is not compatible with a previous option\n" -msgstr "L'option -p n'est pas compatible avec une option précédente\n" - -#: src/exiv2.cpp:563 -msgid "Unrecognized print item" -msgstr "Élément d'affichage non reconnu" - -#: src/exiv2.cpp:572 -msgid "Ignoring surplus option -P" -msgstr "Ignore l'option supplémentaire -P" - -#: src/exiv2.cpp:576 -msgid "Option -P is not compatible with a previous option\n" -msgstr "L'option -P n'est pas compatible avec une option précédente\n" - -#: src/exiv2.cpp:603 -msgid "Option -d is not compatible with a previous option\n" -msgstr "L'option -d n'est pas compatible avec une option précédente\n" - -#: src/exiv2.cpp:631 -msgid "Option -e is not compatible with a previous option\n" -msgstr "L'option -e n'est pas compatible avec une option précédente\n" - -#: src/exiv2.cpp:659 -msgid "Option -i is not compatible with a previous option\n" -msgstr "L'option -i n'est pas compatible avec une option précédente\n" - -#: src/exiv2.cpp:700 -msgid "Action adjust is not compatible with the given options\n" -msgstr "L'action ajuster n'est pas compatible avec les options données\n" - -#: src/exiv2.cpp:709 -msgid "Action print is not compatible with the given options\n" -msgstr "L'action afficher n'est pas compatible avec les options données\n" - -#: src/exiv2.cpp:718 -msgid "Action delete is not compatible with the given options\n" -msgstr "L'action effacer n'est pas compatible avec les options données\n" - -#: src/exiv2.cpp:729 -msgid "Action extract is not compatible with the given options\n" -msgstr "L'action extraire n'est pas compatible avec les options données\n" - -#: src/exiv2.cpp:740 -msgid "Action insert is not compatible with the given options\n" -msgstr "L'action insérer n'est pas compatible avec les options données\n" - -#: src/exiv2.cpp:749 -msgid "Action rename is not compatible with the given options\n" -msgstr "L'action renommer n'est pas compatible avec les options données\n" - -#: src/exiv2.cpp:758 -msgid "Action modify is not compatible with the given options\n" -msgstr "L'action modifier n'est pas compatible avec les options données\n" - -#: src/exiv2.cpp:767 -msgid "Action fixiso is not compatible with the given options\n" -msgstr "L'action fixiso n'est pas compatible avec les options données\n" - -#: src/exiv2.cpp:776 -#, fuzzy -msgid "Action fixcom is not compatible with the given options\n" -msgstr "L'action fixiso n'est pas compatible avec les options données\n" - -#: src/exiv2.cpp:800 -msgid "An action must be specified\n" -msgstr "Une action doit être spécifié\n" - -#: src/exiv2.cpp:809 -#, fuzzy -msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" -msgstr "L'action modifier nécessite au moins une option -c, -m ou -M\n" - -#: src/exiv2.cpp:815 -msgid "Modify action requires at least one -c, -m or -M option\n" -msgstr "L'action modifier nécessite au moins une option -c, -m ou -M\n" - -#: src/exiv2.cpp:819 -msgid "At least one file is required\n" -msgstr "Au moins un fichier est nécessaire\n" - -#: src/exiv2.cpp:825 -msgid "Error parsing -m option arguments\n" -msgstr "Erreur en traitant les arguments de l'option -m\n" - -#: src/exiv2.cpp:832 -msgid "Error parsing -M option arguments\n" -msgstr "Erreur en traitant les arguments de l'option -M\n" - -#: src/exiv2.cpp:843 -msgid "-l option can only be used with extract or insert actions\n" -msgstr "" -"L'option -I ne peut être utilisé qu'avec des actions d'insertion ou " -"d'extraction\n" - -#: src/exiv2.cpp:848 -msgid "-S option can only be used with insert action\n" -msgstr "L'option -S ne peut être utilisé qu'avec l'action d'insertion\n" - -#: src/exiv2.cpp:853 -msgid "-t option can only be used with rename action\n" -msgstr "L'option -t ne peut être utilisé qu'avec l'actions de renommage\n" - -#: src/exiv2.cpp:858 -msgid "-T option can only be used with rename action\n" -msgstr "L'option -T ne peut être utilisé qu'avec l'actions de renommage\n" - -#: src/exiv2.cpp:938 -msgid "Unrecognized " -msgstr "Non reconnu" - -#: src/exiv2.cpp:939 -msgid "target" -msgstr "cible" - -#: src/exiv2.cpp:965 -#, fuzzy -msgid "Invalid preview number" -msgstr "Nombre d'intervalle" - -#: src/exiv2.cpp:997 -msgid "Failed to open command file for reading\n" -msgstr "Impossible d'ouvrir le fichier à lire\n" - -#: src/exiv2.cpp:1010 -msgid "line" -msgstr "ligne" - -#: src/exiv2.cpp:1033 -msgid "-M option" -msgstr "option -M" - -#: src/exiv2.cpp:1054 src/exiv2.cpp:1113 src/exiv2.cpp:1125 -msgid "Invalid command line" -msgstr "ligne de commande invalide" - -#: src/exiv2.cpp:1061 -msgid "Invalid command" -msgstr "commande invalide" - -#: src/exiv2.cpp:1093 -msgid "Invalid key" -msgstr "clef invalide" - -#: src/fujimn.cpp:62 -msgid "Soft mode 1" -msgstr "Mode doux 1" - -#: src/fujimn.cpp:63 -msgid "Soft mode 2" -msgstr "Mode doux 2" - -#: src/fujimn.cpp:65 -msgid "Hard mode 1" -msgstr "Mode dur 1" - -#: src/fujimn.cpp:66 -msgid "Hard mode 2" -msgstr "Mode dur 2" - -#: src/fujimn.cpp:72 src/minoltamn.cpp:219 src/minoltamn.cpp:683 -#: src/minoltamn.cpp:869 src/minoltamn.cpp:1193 src/minoltamn.cpp:2094 -#: src/nikonmn.cpp:447 src/panasonicmn.cpp:65 src/pentaxmn.cpp:312 -#: src/sonymn.cpp:165 src/tags.cpp:1428 -msgid "Daylight" -msgstr "Lumière du jour" - -#: src/fujimn.cpp:74 -msgid "Fluorescent (daylight)" -msgstr "Fluorescent (lumière du jour)" - -#: src/fujimn.cpp:75 -msgid "Fluorescent (warm white)" -msgstr "Fluorescent (blanc chaud)" - -#: src/fujimn.cpp:76 -msgid "Fluorescent (cool white)" -msgstr "Fluorescent (blanc froid)" - -#: src/fujimn.cpp:77 src/nikonmn.cpp:448 src/sonymn.cpp:170 -msgid "Incandescent" -msgstr "Incandescent" - -#: src/fujimn.cpp:87 src/fujimn.cpp:88 -msgid "None (black & white)" -msgstr "Aucun (Noir & Blanc)" - -#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 -msgid "Red-eye reduction" -msgstr "Mode anti-yeux rouges." - -#: src/fujimn.cpp:119 src/tags.cpp:1504 src/tags.cpp:1505 -msgid "Night scene" -msgstr "Scène de nuit" - -#: src/fujimn.cpp:120 src/pentaxmn.cpp:496 src/pentaxmn.cpp:503 -#: src/sonymn.cpp:518 -msgid "Program AE" -msgstr "Programme exposition automatique" - -#: src/fujimn.cpp:121 -msgid "Natural light" -msgstr "Lumière naturelle" - -#: src/fujimn.cpp:122 -msgid "Anti-blur" -msgstr "Anti flou" - -#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 -#: src/minoltamn.cpp:1888 src/minoltamn.cpp:2037 src/olympusmn.cpp:108 -#: src/panasonicmn.cpp:130 src/pentaxmn.cpp:481 src/sonymn.cpp:479 -#: src/sonymn.cpp:525 -msgid "Sunset" -msgstr "Ensoleillé" - -#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:485 -msgid "Museum" -msgstr "Musée" - -#: src/fujimn.cpp:125 src/panasonicmn.cpp:117 -msgid "Party" -msgstr "Fête" - -#: src/fujimn.cpp:126 -msgid "Flower" -msgstr "Fleur" - -#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 -#: src/minoltamn.cpp:2035 src/pentaxmn.cpp:480 -msgid "Text" -msgstr "Texte" - -#: src/fujimn.cpp:128 -msgid "Natural light & flash" -msgstr "Lumière naturelle et flash" - -#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:519 -msgid "Aperture-priority AE" -msgstr "Priorité ouverture AE" - -#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:520 -msgid "Shutter speed priority AE" -msgstr "Priorité vitesse obturation AE" - -#: src/fujimn.cpp:142 -msgid "No flash & flash" -msgstr "Pas de flash & flash" - -#: src/fujimn.cpp:148 -msgid "Chrome" -msgstr "Chrome" - -#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 -#: src/minoltamn.cpp:1936 src/panasonicmn.cpp:211 -msgid "Wide" -msgstr "Large" - -#: src/fujimn.cpp:160 -msgid "F0/Standard" -msgstr "F0/Standard" - -#: src/fujimn.cpp:161 -msgid "F1/Studio portrait" -msgstr "F1/Portrait studio" - -#: src/fujimn.cpp:162 -msgid "F2/Fujichrome" -msgstr "F2/Fujichrome" - -#: src/fujimn.cpp:163 -msgid "F3/Studio portrait Ex" -msgstr "F3/Portrait Studio Ex" - -#: src/fujimn.cpp:164 -msgid "F4/Velvia" -msgstr "F4/Velvia" - -#: src/fujimn.cpp:169 -msgid "Auto (100-400%)" -msgstr "Auto (100-400%)" - -#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 -#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2056 -#: src/olympusmn.cpp:74 src/panasonicmn.cpp:58 -msgid "Raw" -msgstr "Brut" - -#: src/fujimn.cpp:171 -msgid "Standard (100%)" -msgstr "Standard (100%)" - -#: src/fujimn.cpp:172 -msgid "Wide mode 1 (230%)" -msgstr "Mode large 1 (230%)" - -#: src/fujimn.cpp:173 -msgid "Wide mode 2 (400%)" -msgstr "Mode large 2 (400%)" - -#: src/fujimn.cpp:174 -msgid "Film simulation mode" -msgstr "Mode simulation de film" - -#: src/fujimn.cpp:179 src/nikonmn.cpp:213 src/nikonmn.cpp:524 -#: src/nikonmn.cpp:646 src/nikonmn.cpp:691 src/nikonmn.cpp:843 -#: src/nikonmn.cpp:867 src/nikonmn.cpp:888 src/nikonmn.cpp:1001 -#: src/nikonmn.cpp:1023 src/nikonmn.cpp:1043 src/nikonmn.cpp:1063 -#: src/nikonmn.cpp:1076 src/nikonmn.cpp:1135 src/nikonmn.cpp:1195 -#: src/nikonmn.cpp:1225 src/nikonmn.cpp:1245 src/nikonmn.cpp:1258 -#: src/nikonmn.cpp:1271 src/nikonmn.cpp:1284 src/nikonmn.cpp:1297 -#: src/nikonmn.cpp:1310 src/nikonmn.cpp:1323 src/nikonmn.cpp:1342 -#: src/nikonmn.cpp:1367 src/panasonicmn.cpp:335 src/pentaxmn.cpp:865 -#: src/properties.cpp:470 -msgid "Version" -msgstr "Version" - -#: src/fujimn.cpp:180 -msgid "Fujifilm Makernote version" -msgstr "Version des notes de fabriquant Fujifilm" - -#: src/fujimn.cpp:183 src/panasonicmn.cpp:250 -msgid "" -"This number is unique, and contains the date of manufacture, but is not the " -"same as the number printed on the camera body." -msgstr "" - -#: src/fujimn.cpp:187 src/nikonmn.cpp:223 src/nikonmn.cpp:460 -#: src/nikonmn.cpp:527 src/olympusmn.cpp:199 -msgid "Image quality setting" -msgstr "Réglage de qualité de l'image" - -#: src/fujimn.cpp:195 src/nikonmn.cpp:422 -msgid "Color" -msgstr "Couleur" - -#: src/fujimn.cpp:196 -msgid "Chroma saturation setting" -msgstr "Réglage de saturation chromatique" - -#: src/fujimn.cpp:198 -msgid "Tone" -msgstr "Ton" - -#: src/fujimn.cpp:202 -msgid "Flash firing mode setting" -msgstr "Mode de déclenchement du flash" - -#: src/fujimn.cpp:204 -msgid "Flash Strength" -msgstr "Puissance Flash" - -#: src/fujimn.cpp:205 -#, fuzzy -msgid "Flash firing strength compensation setting" -msgstr "Réglage compensation Flash" - -#: src/fujimn.cpp:208 -msgid "Macro mode setting" -msgstr "Réglages du mode macro" - -#: src/fujimn.cpp:211 -msgid "Focusing mode setting" -msgstr "Réglage de mode de mise au point" - -#: src/fujimn.cpp:216 -msgid "Slow Sync" -msgstr "Synchro lente" - -#: src/fujimn.cpp:217 -msgid "Slow synchro mode setting" -msgstr "Réglage de mode de synchro lente" - -#: src/fujimn.cpp:219 src/olympusmn.cpp:690 src/olympusmn.cpp:891 -msgid "Picture Mode" -msgstr "Mode d'image" - -#: src/fujimn.cpp:220 -msgid "Picture mode setting" -msgstr "Réglage de mode d'image" - -#: src/fujimn.cpp:226 -msgid "Continuous shooting or auto bracketing setting" -msgstr "Réglage prise de vue continue ou auto-bracketing" - -#: src/fujimn.cpp:228 src/panasonicmn.cpp:256 src/sonymn.cpp:414 -msgid "Sequence Number" -msgstr "Numéro Séquence" - -#: src/fujimn.cpp:229 src/olympusmn.cpp:1158 src/panasonicmn.cpp:256 -msgid "Sequence number" -msgstr "Numéro Séquence" - -#: src/fujimn.cpp:234 -msgid "FinePix Color" -msgstr "Couleur FinePix" - -#: src/fujimn.cpp:235 -msgid "Fuji FinePix color setting" -msgstr "Réglage couleur FinePix" - -#: src/fujimn.cpp:237 -msgid "Blur Warning" -msgstr "Avertissement Flou" - -#: src/fujimn.cpp:238 -msgid "Blur warning status" -msgstr "Statut avertissement Flou" - -#: src/fujimn.cpp:240 -msgid "Focus Warning" -msgstr "Avertissement mise au point" - -#: src/fujimn.cpp:241 -msgid "Auto Focus warning status" -msgstr "Statut avertissement mise au point auto" - -#: src/fujimn.cpp:243 -msgid "Exposure Warning" -msgstr "Avertissement exposition" - -#: src/fujimn.cpp:244 -msgid "Auto exposure warning status" -msgstr "Statut avertissement auto exposition" - -#: src/fujimn.cpp:246 -msgid "Dynamic Range" -msgstr "Gamme dynamique" - -#: src/fujimn.cpp:247 -msgid "Dynamic range" -msgstr "Gamme dynamique" - -#: src/fujimn.cpp:249 src/panasonicmn.cpp:273 -msgid "Film Mode" -msgstr "Mode Pellicule" - -#: src/fujimn.cpp:250 src/panasonicmn.cpp:273 -msgid "Film mode" -msgstr "Mode Pellicule" - -#: src/fujimn.cpp:252 -msgid "Dynamic Range Setting" -msgstr "Réglage gamme dynamique" - -#: src/fujimn.cpp:253 -msgid "Dynamic range settings" -msgstr "Réglage gamme dynamique" - -#: src/fujimn.cpp:255 -#, fuzzy -msgid "Development Dynamic Range" -msgstr "Gamme dynamique" - -#: src/fujimn.cpp:256 -#, fuzzy -msgid "Development dynamic range" -msgstr "Gamme dynamique" - -#: src/fujimn.cpp:258 -msgid "Minimum Focal Length" -msgstr "Longueur focale minimale" - -#: src/fujimn.cpp:259 -msgid "Minimum focal length" -msgstr "Longueur focale minimale" - -#: src/fujimn.cpp:261 -msgid "Maximum Focal Length" -msgstr "Longueur focale maximum" - -#: src/fujimn.cpp:262 -msgid "Maximum focal length" -msgstr "Longueur focale maximum" - -#: src/fujimn.cpp:264 -msgid "Maximum Aperture at Mininimum Focal" -msgstr "Ouverture maximum à focal minimum" - -#: src/fujimn.cpp:265 -msgid "Maximum aperture at mininimum focal" -msgstr "Ouverture maximum à focal minimum" - -#: src/fujimn.cpp:267 -msgid "Maximum Aperture at Maxinimum Focal" -msgstr "Ouverture maximum à focal maximum" - -#: src/fujimn.cpp:268 -msgid "Maximum aperture at maxinimum focal" -msgstr "Ouverture maximum à focal maximum" - -#: src/fujimn.cpp:270 src/properties.cpp:577 src/tags.cpp:1759 -msgid "File Source" -msgstr "Source du fichier" - -#: src/fujimn.cpp:271 -msgid "File source" -msgstr "Source du fichier" - -#: src/fujimn.cpp:273 -msgid "Order Number" -msgstr "Numéro ordre" - -#: src/fujimn.cpp:274 -msgid "Order number" -msgstr "Numéro ordre" - -#: src/fujimn.cpp:276 -msgid "Frame Number" -msgstr "Numéro frame" - -#: src/fujimn.cpp:277 src/pentaxmn.cpp:977 src/pentaxmn.cpp:978 -msgid "Frame number" -msgstr "Numéro frame" - -#: src/fujimn.cpp:281 -msgid "Unknown FujiMakerNote tag" -msgstr "Marqueur FujiMakerNote inconnu" - -#: src/minoltamn.cpp:56 -msgid "Natural Color" -msgstr "Couleur naturelle" - -#: src/minoltamn.cpp:58 src/minoltamn.cpp:1885 -msgid "Vivid Color" -msgstr "Couleurs vives" - -#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 -msgid "Solarization" -msgstr "Solarisation" - -#: src/minoltamn.cpp:60 src/minoltamn.cpp:1891 -msgid "AdobeRGB" -msgstr "AdobeRGB" - -#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:611 -#: src/olympusmn.cpp:853 src/panasonicmn.cpp:198 src/pentaxmn.cpp:702 -msgid "Natural" -msgstr "Naturel" - -#: src/minoltamn.cpp:64 -msgid "Natural sRGB" -msgstr "sRGB naturel" - -#: src/minoltamn.cpp:65 -msgid "Natural+ sRGB" -msgstr "sRGB naturel+" - -#: src/minoltamn.cpp:67 -msgid "Evening" -msgstr "Soirée" - -#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2040 -#: src/sonymn.cpp:526 -msgid "Night Portrait" -msgstr "Portrait de nuit" - -#: src/minoltamn.cpp:75 src/minoltamn.cpp:2057 -msgid "Super Fine" -msgstr "Super fin" - -#: src/minoltamn.cpp:79 src/minoltamn.cpp:2003 src/minoltamn.cpp:2061 -msgid "Extra Fine" -msgstr "Extra fin" - -#: src/minoltamn.cpp:90 -msgid "Makernote Version" -msgstr "Version des Notes du fabriquant" - -#: src/minoltamn.cpp:91 -msgid "String 'MLT0' (not null terminated)" -msgstr "Chaîne 'MLT0' (non terminée par null)" - -#: src/minoltamn.cpp:93 -msgid "Camera Settings (Std Old)" -msgstr "Réglage appareil photo (ancien standard)" - -#: src/minoltamn.cpp:94 -msgid "" -"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" -msgstr "" -"Réglage appareil photo standard (Anciens modèles comme les D5, D7, S304, et " -"S404)" - -#: src/minoltamn.cpp:96 -msgid "Camera Settings (Std New)" -msgstr "Réglage appareil photo (Nouveau standard)" - -#: src/minoltamn.cpp:97 -msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" -msgstr "" -"Réglage appareil photo standard (Nouveaux modèles comme les D7u, D7i, et " -"D7hi)" - -#: src/minoltamn.cpp:99 -msgid "Camera Settings (7D)" -msgstr "Réglage appareil photo (7D)" - -#: src/minoltamn.cpp:100 -msgid "Camera Settings (for Dynax 7D model)" -msgstr "Réglage appareil photo (pour modèle Dymax 7D)" - -#: src/minoltamn.cpp:102 -msgid "Image Stabilization Data" -msgstr "Données stabilisation image" - -#: src/minoltamn.cpp:103 -msgid "Image stabilization data" -msgstr "Données stabilisation image" - -#: src/minoltamn.cpp:107 -msgid "WB Info A100" -msgstr "" - -#: src/minoltamn.cpp:108 -msgid "White balance information for the Sony DSLR-A100" -msgstr "" - -#: src/minoltamn.cpp:111 -msgid "Compressed Image Size" -msgstr "Taille image compressée" - -#: src/minoltamn.cpp:112 -msgid "Compressed image size" -msgstr "Taille image compressée" - -#: src/minoltamn.cpp:115 -msgid "Jpeg thumbnail 640x480 pixels" -msgstr "Aperçu Jpeg 640x480 pixels" - -#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 -msgid "Thumbnail Offset" -msgstr "Décalage aperçu" - -#: src/minoltamn.cpp:118 -msgid "Offset of the thumbnail" -msgstr "Décalage de l'aperçu" - -#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 -msgid "Thumbnail Length" -msgstr "Longueur de l'aperçu" - -#: src/minoltamn.cpp:121 -msgid "Size of the thumbnail" -msgstr "Taille de l'aperçu" - -#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:573 -#: src/olympusmn.cpp:252 src/olympusmn.cpp:684 src/panasonicmn.cpp:282 -#: src/sonymn.cpp:363 src/sonymn.cpp:364 -msgid "Scene Mode" -msgstr "Mode scène" - -#: src/minoltamn.cpp:128 src/minoltamn.cpp:1406 src/nikonmn.cpp:219 -#: src/nikonmn.cpp:462 src/nikonmn.cpp:526 src/panasonicmn.cpp:263 -#: src/sonymn.cpp:381 src/sonymn.cpp:382 -msgid "Color Mode" -msgstr "Mode couleur" - -#: src/minoltamn.cpp:129 src/minoltamn.cpp:1407 src/nikonmn.cpp:220 -#: src/nikonmn.cpp:463 src/nikonmn.cpp:526 src/panasonicmn.cpp:263 -msgid "Color mode" -msgstr "Mode couleur" - -#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 -#: src/minoltamn.cpp:990 src/panasonicmn.cpp:236 src/sonymn.cpp:274 -msgid "Image Quality" -msgstr "Qualité de l'image" - -#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 -msgid "0x0103" -msgstr "" - -#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:671 -#: src/sonymn.cpp:277 -msgid "Flash Exposure Compensation" -msgstr "Compensation exposition flash" - -#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:278 -msgid "Flash exposure compensation in EV" -msgstr "Compensation exposition flash en EV" - -#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:280 -#: src/sonymn.cpp:281 -#, fuzzy -msgid "Teleconverter Model" -msgstr "Mode scène" - -#: src/minoltamn.cpp:150 -msgid "RAW+JPG Recording" -msgstr "" - -#: src/minoltamn.cpp:151 -msgid "RAW and JPG files recording" -msgstr "" - -#: src/minoltamn.cpp:153 src/sonymn.cpp:366 src/sonymn.cpp:367 -#, fuzzy -msgid "Zone Matching" -msgstr "Réduction du bruit" - -#: src/minoltamn.cpp:154 -#, fuzzy -msgid "Zone matching" -msgstr "Réduction du bruit" - -#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1039 -#: src/minoltamn.cpp:1476 src/minoltamn.cpp:1578 -msgid "Color temperature" -msgstr "Température des couleurs" - -#: src/minoltamn.cpp:159 src/sonymn.cpp:375 -msgid "Lens ID" -msgstr "ID Objectif" - -#: src/minoltamn.cpp:160 src/sonymn.cpp:376 -msgid "Lens identifier" -msgstr "Identifiant objectif" - -#: src/minoltamn.cpp:162 src/minoltamn.cpp:1478 src/minoltamn.cpp:1580 -#: src/sonymn.cpp:360 -#, fuzzy -msgid "Color Compensation Filter" -msgstr "Compensation de tonalité" - -#: src/minoltamn.cpp:163 src/sonymn.cpp:361 -msgid "Color Compensation Filter: negative is green, positive is magenta" -msgstr "" - -#: src/minoltamn.cpp:165 src/minoltamn.cpp:1472 src/sonymn.cpp:283 -#: src/sonymn.cpp:563 src/sonymn.cpp:564 -#, fuzzy -msgid "White Balance Fine Tune" -msgstr "Table de balance des blancs" - -#: src/minoltamn.cpp:166 src/sonymn.cpp:284 -#, fuzzy -msgid "White Balance Fine Tune Value" -msgstr "Table de balance des blancs" - -#: src/minoltamn.cpp:168 -#, fuzzy -msgid "Image Stabilization A100" -msgstr "Stabilisation de l'image" - -#: src/minoltamn.cpp:169 -#, fuzzy -msgid "Image Stabilization for the Sony DSLR-A100" -msgstr "Données stabilisation image" - -#: src/minoltamn.cpp:173 -msgid "Camera Settings (5D)" -msgstr "Réglage appareil photo (5D)" - -#: src/minoltamn.cpp:174 -msgid "Camera Settings (for Dynax 5D model)" -msgstr "Réglage appareil photo (pour modèles Dymax 5D)" - -#: src/minoltamn.cpp:180 src/nikonmn.cpp:607 src/olympusmn.cpp:258 -#: src/panasonicmn.cpp:279 src/sonymn.cpp:295 -msgid "Print IM" -msgstr "Print IM" - -#: src/minoltamn.cpp:181 src/nikonmn.cpp:607 src/olympusmn.cpp:259 -#: src/panasonicmn.cpp:279 src/sonymn.cpp:296 -msgid "PrintIM information" -msgstr "Information PrintIM" - -#: src/minoltamn.cpp:183 -msgid "Camera Settings (Z1)" -msgstr "Réglage appareil photo (Z1)" - -#: src/minoltamn.cpp:184 -msgid "Camera Settings (for Z1, DImage X, and F100 models)" -msgstr "Réglage appareil photo (pour modèles Z1, DImage X, et F100)" - -#: src/minoltamn.cpp:188 -msgid "Unknown Minolta MakerNote tag" -msgstr "Marqueur de note du fabriquant Minolta inconnu" - -#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 -#: src/panasonicmn.cpp:107 src/sigmamn.cpp:155 src/sonymn.cpp:111 -#: src/tags.cpp:1404 -msgid "Aperture priority" -msgstr "Priorité ouverture" - -#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 -#: src/sigmamn.cpp:156 src/sonymn.cpp:112 src/tags.cpp:1405 -msgid "Shutter priority" -msgstr "Priorité obturation" - -#: src/minoltamn.cpp:209 src/minoltamn.cpp:1122 -#, fuzzy -msgid "Fill flash" -msgstr "Flash" - -#: src/minoltamn.cpp:211 src/minoltamn.cpp:1120 -msgid "Rear flash sync" -msgstr "Synchro flash arrière" - -#: src/minoltamn.cpp:212 src/minoltamn.cpp:1121 -msgid "Wireless" -msgstr "Sans fil" - -#: src/minoltamn.cpp:224 -msgid "Fluorescent 2" -msgstr "Fluorescent 2" - -#: src/minoltamn.cpp:231 -msgid "Full size" -msgstr "Pleine taille" - -#: src/minoltamn.cpp:243 -msgid "Super fine" -msgstr "Super fin" - -#: src/minoltamn.cpp:247 -msgid "Extra fine" -msgstr "Extra fin" - -#: src/minoltamn.cpp:252 src/minoltamn.cpp:1099 src/minoltamn.cpp:1148 -#: src/sonymn.cpp:447 -#, fuzzy -msgid "Single Frame" -msgstr "Zone unique" - -#: src/minoltamn.cpp:254 src/minoltamn.cpp:1150 -msgid "Self-timer" -msgstr "retardateur" - -#: src/minoltamn.cpp:255 -msgid "Bracketing" -msgstr "bracketing" - -#: src/minoltamn.cpp:256 -msgid "Interval" -msgstr "Interval" - -#: src/minoltamn.cpp:257 -#, fuzzy -msgid "UHS continuous" -msgstr "Continue" - -#: src/minoltamn.cpp:258 -#, fuzzy -msgid "HS continuous" -msgstr "Continue" - -#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1127 -#: src/sonymn.cpp:468 src/tags.cpp:1419 -msgid "Multi-segment" -msgstr "Multi-segments" - -#: src/minoltamn.cpp:264 src/minoltamn.cpp:1128 src/sonymn.cpp:469 -#: src/tags.cpp:1416 -msgid "Center weighted average" -msgstr "Moyenne pondérée au centre" - -#: src/minoltamn.cpp:271 -msgid "Electronic magnification" -msgstr "Augmentation électronique" - -#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:1951 -#: src/nikonmn.cpp:100 src/nikonmn.cpp:793 src/nikonmn.cpp:808 -#: src/pentaxmn.cpp:216 -msgid "Top" -msgstr "Haut" - -#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:234 -msgid "Top-right" -msgstr "Haut-droit" - -#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:240 -msgid "Bottom-right" -msgstr "Bas-droit" - -#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:1955 -#: src/nikonmn.cpp:101 src/nikonmn.cpp:794 src/nikonmn.cpp:809 -#: src/pentaxmn.cpp:224 -msgid "Bottom" -msgstr "Bas" - -#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:238 -msgid "Bottom-left" -msgstr "Bas-gauche" - -#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:232 -msgid "Top-left" -msgstr "Haut-gauche" - -#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:368 -#: src/tags.cpp:1521 -msgid "Hard" -msgstr "Dur" - -#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:366 -#: src/tags.cpp:1520 -msgid "Soft" -msgstr "Doux" - -#: src/minoltamn.cpp:313 src/panasonicmn.cpp:105 -msgid "Night portrait" -msgstr "Portrait de nuit" - -#: src/minoltamn.cpp:315 -msgid "Sports action" -msgstr "Action sports" - -#: src/minoltamn.cpp:344 -msgid "Time-lapse movie" -msgstr "" - -#: src/minoltamn.cpp:349 -msgid "Standard form" -msgstr "Formulaire standard" - -#: src/minoltamn.cpp:350 -msgid "Data form" -msgstr "Formulaire de donné" - -#: src/minoltamn.cpp:355 -msgid "Natural color" -msgstr "Couleur naturelle" - -#: src/minoltamn.cpp:356 src/panasonicmn.cpp:70 src/panasonicmn.cpp:148 -msgid "Black and white" -msgstr "Noir et Blanc" - -#: src/minoltamn.cpp:357 -msgid "Vivid color" -msgstr "Couleur vive" - -#: src/minoltamn.cpp:364 -msgid "No zone" -msgstr "Pas de zone" - -#: src/minoltamn.cpp:365 -msgid "Center zone (horizontal orientation)" -msgstr "Zone centrale (orientation horizontale)" - -#: src/minoltamn.cpp:366 -msgid "Center zone (vertical orientation)" -msgstr "Zone centrale (orientation verticale)" - -#: src/minoltamn.cpp:367 -msgid "Left zone" -msgstr "Zone gauche" - -#: src/minoltamn.cpp:368 -msgid "Right zone" -msgstr "Zone droite" - -#: src/minoltamn.cpp:373 src/olympusmn.cpp:999 -msgid "Auto focus" -msgstr "Mise au point auto" - -#: src/minoltamn.cpp:379 -msgid "Wide focus (normal)" -msgstr "Mise au point large (normale)" - -#: src/minoltamn.cpp:380 -msgid "Spot focus" -msgstr "Mise au point Spot" - -#: src/minoltamn.cpp:385 src/properties.cpp:452 src/sigmamn.cpp:86 -#: src/sigmamn.cpp:87 -msgid "Exposure" -msgstr "Exposition" - -#: src/minoltamn.cpp:388 -msgid "Filter" -msgstr "Filtre" - -#: src/minoltamn.cpp:393 -msgid "Not embedded" -msgstr "Non embarqué" - -#: src/minoltamn.cpp:394 -msgid "Embedded" -msgstr "Embarqué" - -#: src/minoltamn.cpp:403 -msgid "Text + ID#" -msgstr "Texte + N° ID" - -#: src/minoltamn.cpp:408 -msgid "ADI (Advanced Distance Integration)" -msgstr "" - -#: src/minoltamn.cpp:409 -msgid "Pre-flash TTl" -msgstr "Pré-flash TTl" - -#: src/minoltamn.cpp:410 -msgid "Manual flash control" -msgstr "Contrôle de flash manuel" - -#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:984 -#: src/minoltamn.cpp:1352 src/olympusmn.cpp:659 src/properties.cpp:581 -#: src/sigmamn.cpp:74 src/sonymn.cpp:393 src/sonymn.cpp:394 src/tags.cpp:1780 -msgid "Exposure Mode" -msgstr "Mode d'exposition" - -#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 -#: src/olympusmn.cpp:670 src/pentaxmn.cpp:896 -msgid "Flash mode" -msgstr "Mode flash" - -#: src/minoltamn.cpp:506 src/minoltamn.cpp:1428 src/olympusmn.cpp:700 -#: src/pentaxmn.cpp:991 src/pentaxmn.cpp:992 src/sigmamn.cpp:60 -msgid "Drive mode" -msgstr "Mode contrôle" - -#: src/minoltamn.cpp:512 -#, fuzzy -msgid "ISO Value" -msgstr "Valeur de vitesse ISO" - -#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1023 -#: src/minoltamn.cpp:1367 src/properties.cpp:548 src/tags.cpp:782 -#: src/tags.cpp:1542 -msgid "Exposure Time" -msgstr "Temps d'exposition" - -#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1026 -#: src/minoltamn.cpp:1370 src/minoltamn.cpp:1371 src/tags.cpp:783 -#: src/tags.cpp:1545 -msgid "FNumber" -msgstr "Nombre F" - -#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1027 -msgid "The F-Number" -msgstr "Le F-nombre" - -#: src/minoltamn.cpp:520 src/olympusmn.cpp:663 -msgid "Macro Mode" -msgstr "Mode macro" - -#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1044 -msgid "Exposure Compensation" -msgstr "Compensation d'exposition" - -#: src/minoltamn.cpp:529 -msgid "Bracket Step" -msgstr "Pas du bracket" - -#: src/minoltamn.cpp:530 -msgid "Bracket step" -msgstr "Pas du bracket" - -#: src/minoltamn.cpp:532 -msgid "Interval Length" -msgstr "Longueur intervalle" - -#: src/minoltamn.cpp:533 -msgid "Interval length" -msgstr "Longueur intervalle" - -#: src/minoltamn.cpp:535 -msgid "Interval Number" -msgstr "Nombre d'intervalle" - -#: src/minoltamn.cpp:536 -msgid "Interval number" -msgstr "Nombre d'intervalle" - -#: src/minoltamn.cpp:541 src/nikonmn.cpp:252 src/nikonmn.cpp:564 -#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1371 src/olympusmn.cpp:303 -#: src/olympusmn.cpp:1007 -msgid "Focus Distance" -msgstr "Distance de mise au point" - -#: src/minoltamn.cpp:542 src/nikonmn.cpp:1346 src/nikonmn.cpp:1371 -#: src/olympusmn.cpp:1007 -msgid "Focus distance" -msgstr "Distance de mise au point" - -#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1002 -#, fuzzy -msgid "Flash Fired" -msgstr "Matériel du flash" - -#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1003 -#, fuzzy -msgid "Flash fired" -msgstr "Flash désactivé" - -#: src/minoltamn.cpp:547 -msgid "Minolta Date" -msgstr "Date Minolta" - -#: src/minoltamn.cpp:548 -msgid "Minolta date" -msgstr "Date Minolta" - -#: src/minoltamn.cpp:550 -msgid "Minolta Time" -msgstr "Heure Minolta" - -#: src/minoltamn.cpp:551 -msgid "Minolta time" -msgstr "Heure Minolta" - -#: src/minoltamn.cpp:556 -#, fuzzy -msgid "File Number Memory" -msgstr "Nombre F" - -#: src/minoltamn.cpp:557 -#, fuzzy -msgid "File number memory" -msgstr "Nom du fichier" - -#: src/minoltamn.cpp:559 -#, fuzzy -msgid "Last Image Number" -msgstr "Numéro d'image" - -#: src/minoltamn.cpp:560 -#, fuzzy -msgid "Last image number" -msgstr "Numéro de l'image" - -#: src/minoltamn.cpp:562 -msgid "Color Balance Red" -msgstr "Balance des rouges" - -#: src/minoltamn.cpp:563 -msgid "Color balance red" -msgstr "Balance des rouges" - -#: src/minoltamn.cpp:565 -msgid "Color Balance Green" -msgstr "Balance des verts" - -#: src/minoltamn.cpp:566 -msgid "Color balance green" -msgstr "Balance des verts" - -#: src/minoltamn.cpp:568 -msgid "Color Balance Blue" -msgstr "Balance des bleus" - -#: src/minoltamn.cpp:569 -msgid "Color balance blue" -msgstr "Balance des bleus" - -#: src/minoltamn.cpp:580 -#, fuzzy -msgid "Subject Program" -msgstr "Aire du sujet" - -#: src/minoltamn.cpp:581 -#, fuzzy -msgid "Subject program" -msgstr "Aire du sujet" - -#: src/minoltamn.cpp:586 src/nikonmn.cpp:542 -msgid "ISO Settings" -msgstr "Réglage ISO" - -#: src/minoltamn.cpp:587 src/minoltamn.cpp:1398 src/nikonmn.cpp:542 -msgid "ISO setting" -msgstr "Réglage ISO" - -#: src/minoltamn.cpp:589 -msgid "Minolta Model" -msgstr "Modèle Minolta" - -#: src/minoltamn.cpp:590 -msgid "Minolta model" -msgstr "Modèle Minolta" - -#: src/minoltamn.cpp:592 -msgid "Interval Mode" -msgstr "Mode interval" - -#: src/minoltamn.cpp:593 -msgid "Interval mode" -msgstr "Mode interval" - -#: src/minoltamn.cpp:595 -msgid "Folder Name" -msgstr "Nom répertoire" - -#: src/minoltamn.cpp:596 -msgid "Folder name" -msgstr "Nom répertoire" - -#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 -msgid "ColorMode" -msgstr "Mode couleur" - -#: src/minoltamn.cpp:601 src/minoltamn.cpp:1204 src/pentaxmn.cpp:462 -msgid "Color Filter" -msgstr "Filtre couleur" - -#: src/minoltamn.cpp:602 -msgid "Color filter" -msgstr "Filtre couleur" - -#: src/minoltamn.cpp:604 -msgid "Black and White Filter" -msgstr "Filtre Noir et Blanc" - -#: src/minoltamn.cpp:605 -msgid "Black and white filter" -msgstr "Filtre Noir et Blanc" - -#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1013 -msgid "Internal Flash" -msgstr "Flash interne" - -#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:698 -#: src/olympusmn.cpp:276 src/properties.cpp:438 src/sonymn.cpp:602 -#: src/sonymn.cpp:603 src/tags.cpp:1630 -msgid "Brightness" -msgstr "Luminosité" - -#: src/minoltamn.cpp:613 -#, fuzzy -msgid "Spot Focus Point X" -msgstr "Mise au point Spot" - -#: src/minoltamn.cpp:614 -#, fuzzy -msgid "Spot focus point X" -msgstr "Mise au point Spot" - -#: src/minoltamn.cpp:616 -#, fuzzy -msgid "Spot Focus Point Y" -msgstr "Mise au point Spot" - -#: src/minoltamn.cpp:617 -#, fuzzy -msgid "Spot focus point Y" -msgstr "Mise au point Spot" - -#: src/minoltamn.cpp:619 -msgid "Wide Focus Zone" -msgstr "Zone mise au point large" - -#: src/minoltamn.cpp:620 -msgid "Wide focus zone" -msgstr "Zone mise au point large" - -#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1036 -#: src/minoltamn.cpp:1380 src/nikonmn.cpp:232 src/nikonmn.cpp:475 -#: src/nikonmn.cpp:530 src/olympusmn.cpp:301 src/olympusmn.cpp:664 -#: src/panasonicmn.cpp:240 src/pentaxmn.cpp:899 -msgid "Focus mode" -msgstr "Mode mise au point" - -#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1000 -msgid "Focus area" -msgstr "Zone mise au point" - -#: src/minoltamn.cpp:628 -#, fuzzy -msgid "DEC Switch Position" -msgstr "Position mise au point" - -#: src/minoltamn.cpp:629 -#, fuzzy -msgid "DEC switch position" -msgstr "Position mise au point" - -#: src/minoltamn.cpp:631 -msgid "Color Profile" -msgstr "Profil couleur" - -#: src/minoltamn.cpp:632 -msgid "Color profile" -msgstr "Profil couleur" - -#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 -msgid "Data Imprint" -msgstr "" - -#: src/minoltamn.cpp:637 src/minoltamn.cpp:1421 -#, fuzzy -msgid "Flash Metering" -msgstr "Réglage flash" - -#: src/minoltamn.cpp:638 src/minoltamn.cpp:1422 -#, fuzzy -msgid "Flash metering" -msgstr "Réglage flash" - -#: src/minoltamn.cpp:642 -msgid "Unknown Minolta Camera Settings tag" -msgstr "Marqueur réglage appareil photo Minolta inconnu" - -#: src/minoltamn.cpp:660 -#, fuzzy -msgid "Program-shift A" -msgstr "Logiciel" - -#: src/minoltamn.cpp:661 -#, fuzzy -msgid "Program-shift S" -msgstr "Logiciel" - -#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 -msgid "Raw+Jpeg" -msgstr "Brut+Jpeg" - -#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/pentaxmn.cpp:322 -msgid "Kelvin" -msgstr "Kelvin" - -#: src/minoltamn.cpp:695 -#, fuzzy -msgid "Single-shot AF" -msgstr "Simple" - -#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1371 -#, fuzzy -msgid "Continuous AF" -msgstr "Continue" - -#: src/minoltamn.cpp:698 -msgid "Automatic AF" -msgstr "AF automatique" - -#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 -msgid "sRGB (Natural)" -msgstr "sRGB (naturel)" - -#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 -msgid "sRGB (Natural+)" -msgstr "sRGB (naturel+)" - -#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2019 -#: src/panasonicmn.cpp:190 -msgid "Horizontal (normal)" -msgstr "Horizontale (normale)" - -#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2020 -#: src/panasonicmn.cpp:191 -msgid "Rotate 90 CW" -msgstr "Rotation 90° Horaire" - -#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2021 -#: src/panasonicmn.cpp:192 -msgid "Rotate 270 CW" -msgstr "Rotation 270° Horaire" - -#: src/minoltamn.cpp:756 -msgid "AF Points" -msgstr "Points AF" - -#: src/minoltamn.cpp:757 -msgid "AF points" -msgstr "AF Points" - -#: src/minoltamn.cpp:771 src/minoltamn.cpp:1011 src/minoltamn.cpp:1409 -#: src/nikonmn.cpp:551 src/olympusmn.cpp:683 src/olympusmn.cpp:802 -#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 src/properties.cpp:532 -#: src/sigmamn.cpp:83 src/tags.cpp:1684 -msgid "Color Space" -msgstr "Espace des couleurs" - -#: src/minoltamn.cpp:772 src/minoltamn.cpp:1012 src/minoltamn.cpp:1410 -#: src/nikonmn.cpp:551 src/olympusmn.cpp:683 src/olympusmn.cpp:817 -#: src/olympusmn.cpp:888 src/pentaxmn.cpp:995 src/pentaxmn.cpp:996 -#: src/sigmamn.cpp:84 -msgid "Color space" -msgstr "Espace des couleurs" - -#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1029 -#: src/minoltamn.cpp:1047 src/minoltamn.cpp:1457 -msgid "Free Memory Card Images" -msgstr "" - -#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1030 -#: src/minoltamn.cpp:1048 src/minoltamn.cpp:1458 -msgid "Free memory card images" -msgstr "" - -#: src/minoltamn.cpp:789 -msgid "Hue" -msgstr "tonalité" - -#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1041 -#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1571 src/minoltamn.cpp:1572 -#: src/panasonicmn.cpp:261 src/sonymn.cpp:638 src/sonymn.cpp:639 -#: src/sonymn.cpp:711 src/sonymn.cpp:712 -msgid "Rotation" -msgstr "Rotation" - -#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1065 -#: src/tags.cpp:835 -msgid "Image Number" -msgstr "Numéro d'image" - -#: src/minoltamn.cpp:808 src/minoltamn.cpp:1069 src/minoltamn.cpp:1494 -#: src/nikonmn.cpp:579 src/olympusmn.cpp:439 src/olympusmn.cpp:685 -#: src/olympusmn.cpp:819 src/olympusmn.cpp:889 src/olympusmn.cpp:974 -#: src/panasonicmn.cpp:258 src/pentaxmn.cpp:1024 src/pentaxmn.cpp:1025 -msgid "Noise reduction" -msgstr "Réduction du bruit" - -#: src/minoltamn.cpp:817 -msgid "Zone Matching On" -msgstr "" - -#: src/minoltamn.cpp:818 -#, fuzzy -msgid "Zone matching on" -msgstr "Compensation de tonalité" - -#: src/minoltamn.cpp:822 -msgid "Unknown Minolta Camera Settings 7D tag" -msgstr "Marqueur 7D réglage appareil photo Minolta inconnu" - -#: src/minoltamn.cpp:840 src/sonymn.cpp:521 -#, fuzzy -msgid "Program Shift A" -msgstr "Logiciel" - -#: src/minoltamn.cpp:841 src/sonymn.cpp:522 -#, fuzzy -msgid "Program Shift S" -msgstr "Logiciel" - -#: src/minoltamn.cpp:845 src/minoltamn.cpp:1889 src/minoltamn.cpp:2044 -#: src/sonymn.cpp:480 -#, fuzzy -msgid "Night View/Portrait" -msgstr "Portrait de nuit" - -#: src/minoltamn.cpp:895 -msgid "200 (Zone Matching High)" -msgstr "" - -#: src/minoltamn.cpp:896 -msgid "80 (Zone Matching Low)" -msgstr "" - -#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 -#, fuzzy -msgid "Adobe RGB (ICC)" -msgstr "Adobe RGB" - -#: src/minoltamn.cpp:918 -msgid "Central" -msgstr "Central" - -#: src/minoltamn.cpp:919 -msgid "Up" -msgstr "Haut" - -#: src/minoltamn.cpp:920 -msgid "Up right" -msgstr "Haut droit" - -#: src/minoltamn.cpp:922 -msgid "Down right" -msgstr "Bas droit" - -#: src/minoltamn.cpp:923 -msgid "Down" -msgstr "Bas" - -#: src/minoltamn.cpp:924 -msgid "Down left" -msgstr "Bas gauche" - -#: src/minoltamn.cpp:926 -msgid "Up left" -msgstr "Haut gauche" - -#: src/minoltamn.cpp:932 -msgid "Selection" -msgstr "Sélection" - -#: src/minoltamn.cpp:947 -#, fuzzy -msgid "Natural+" -msgstr "Naturel" - -#: src/minoltamn.cpp:949 -#, fuzzy -msgid "Wind Scene" -msgstr "Scène de nuit" - -#: src/minoltamn.cpp:950 -#, fuzzy -msgid "Evening Scene" -msgstr "Soirée" - -#: src/minoltamn.cpp:996 src/nikonmn.cpp:1345 src/nikonmn.cpp:1370 -msgid "Focus Position" -msgstr "Position mise au point" - -#: src/minoltamn.cpp:997 src/nikonmn.cpp:1345 src/nikonmn.cpp:1370 -msgid "Focus position" -msgstr "Position mise au point" - -#: src/minoltamn.cpp:999 -msgid "Focus Area" -msgstr "Zone mise au point" - -#: src/minoltamn.cpp:1032 -#, fuzzy -msgid "Exposure Revision" -msgstr "Compensation d'exposition" - -#: src/minoltamn.cpp:1033 -#, fuzzy -msgid "Exposure revision" -msgstr "Compensation d'exposition" - -#: src/minoltamn.cpp:1050 src/minoltamn.cpp:1051 -#, fuzzy -msgid "Rotation2" -msgstr "Rotation" - -#: src/minoltamn.cpp:1056 src/minoltamn.cpp:1057 -#, fuzzy -msgid "Picture Finish" -msgstr "Infos image" - -#: src/minoltamn.cpp:1059 -msgid "Exposure Manual Bias" -msgstr "Biais manuel d'exposition" - -#: src/minoltamn.cpp:1060 -msgid "Exposure manual bias" -msgstr "Biais manuel d'exposition" - -#: src/minoltamn.cpp:1062 src/panasonicmn.cpp:241 src/sonymn.cpp:399 -#: src/sonymn.cpp:400 -msgid "AF Mode" -msgstr "Mode mise au point automatique" - -#: src/minoltamn.cpp:1063 src/panasonicmn.cpp:241 -msgid "AF mode" -msgstr "Mode mise au point automatique" - -#: src/minoltamn.cpp:1083 -msgid "Unknown Minolta Camera Settings 5D tag" -msgstr "Marqueur 5D réglage appareil photo Minolta inconnu" - -#: src/minoltamn.cpp:1096 src/sonymn.cpp:449 -#, fuzzy -msgid "Self-timer 10 sec" -msgstr "retardateur" - -#: src/minoltamn.cpp:1098 src/sonymn.cpp:450 -#, fuzzy -msgid "Self-timer 2 sec" -msgstr "retardateur" - -#: src/minoltamn.cpp:1100 src/sonymn.cpp:453 -#, fuzzy -msgid "White Balance Bracketing Low" -msgstr "Biais de balance des blancs" - -#: src/minoltamn.cpp:1101 -#, fuzzy -msgid "White Balance Bracketing High" -msgstr "Biais de balance des blancs" - -#: src/minoltamn.cpp:1102 -#, fuzzy -msgid "Single-frame Bracketing Low" -msgstr "Zone unique" - -#: src/minoltamn.cpp:1103 -#, fuzzy -msgid "Continuous Bracketing Low" -msgstr "Bracketing automatique" - -#: src/minoltamn.cpp:1104 -#, fuzzy -msgid "Single-frame Bracketing High" -msgstr "Zone unique" - -#: src/minoltamn.cpp:1105 -#, fuzzy -msgid "Continuous Bracketing High" -msgstr "Continue, Haute" - -#: src/minoltamn.cpp:1136 src/sonymn.cpp:158 -msgid "Advanced" -msgstr "" - -#: src/minoltamn.cpp:1151 src/minoltamn.cpp:1433 src/sonymn.cpp:451 -#, fuzzy -msgid "Continuous Bracketing" -msgstr "Continue, Haute" - -#: src/minoltamn.cpp:1152 -#, fuzzy -msgid "Single-Frame Bracketing" -msgstr "Zone unique" - -#: src/minoltamn.cpp:1153 src/minoltamn.cpp:1439 src/sonymn.cpp:225 -#, fuzzy -msgid "White Balance Bracketing" -msgstr "Biais de balance des blancs" - -#: src/minoltamn.cpp:1183 src/minoltamn.cpp:1186 src/nikonmn.cpp:446 -msgid "Preset" -msgstr "Présélection" - -#: src/minoltamn.cpp:1185 src/minoltamn.cpp:1188 src/minoltamn.cpp:2093 -#, fuzzy -msgid "Color Temperature/Color Filter" -msgstr "Température des couleurs" - -#: src/minoltamn.cpp:1203 src/pentaxmn.cpp:1018 src/properties.cpp:465 -#, fuzzy -msgid "Temperature" -msgstr "Température de l'objectif" - -#: src/minoltamn.cpp:1209 -#, fuzzy -msgid "Setup" -msgstr "Définition de" - -#: src/minoltamn.cpp:1210 -msgid "Recall" -msgstr "" - -#: src/minoltamn.cpp:1215 -msgid "Ok" -msgstr "" - -#: src/minoltamn.cpp:1216 -msgid "Error" -msgstr "" - -#: src/minoltamn.cpp:1228 -#, fuzzy -msgid "Image and Information" -msgstr "Configuration image" - -#: src/minoltamn.cpp:1229 -#, fuzzy -msgid "Image Only" -msgstr "Type d'image" - -#: src/minoltamn.cpp:1230 -#, fuzzy -msgid "Image and Histogram" -msgstr "Hauteur de l'image" - -#: src/minoltamn.cpp:1236 -#, fuzzy -msgid "Fill Flash" -msgstr "Flash" - -#: src/minoltamn.cpp:1247 -#, fuzzy -msgid "Focus Hold" -msgstr "Mode mise au point" - -#: src/minoltamn.cpp:1248 -#, fuzzy -msgid "DOF Preview" -msgstr "Données de prévisualisation" - -#: src/minoltamn.cpp:1253 -msgid "Hold" -msgstr "" - -#: src/minoltamn.cpp:1254 -#, fuzzy -msgid "Toggle" -msgstr "Ton" - -#: src/minoltamn.cpp:1255 -#, fuzzy -msgid "Spot Hold" -msgstr "Mode doux 1" - -#: src/minoltamn.cpp:1256 -#, fuzzy -msgid "Spot Toggle" -msgstr "Mode doux 1" - -#: src/minoltamn.cpp:1261 src/olympusmn.cpp:267 -msgid "Shutter Speed" -msgstr "Vitesse d'obturation" - -#: src/minoltamn.cpp:1267 -msgid "Ambient and Flash" -msgstr "" - -#: src/minoltamn.cpp:1268 -msgid "Ambient Only" -msgstr "" - -#: src/minoltamn.cpp:1273 -msgid "0.3 seconds" -msgstr "" - -#: src/minoltamn.cpp:1274 -msgid "0.6 seconds" -msgstr "" - -#: src/minoltamn.cpp:1280 src/nikonmn.cpp:292 src/nikonmn.cpp:972 -#: src/nikonmn.cpp:1418 -#, fuzzy -msgid "Automatic" -msgstr "AF automatique" - -#: src/minoltamn.cpp:1286 src/minoltamn.cpp:1292 -#, fuzzy -msgid "Auto-rotate" -msgstr "Contraste" - -#: src/minoltamn.cpp:1287 -#, fuzzy -msgid "Horizontal" -msgstr "Horizontale (normale)" - -#: src/minoltamn.cpp:1293 -#, fuzzy -msgid "Manual Rotate" -msgstr "Déclenchement manuel" - -#: src/minoltamn.cpp:1298 -#, fuzzy -msgid "Within Range" -msgstr "Classement Windows" - -#: src/minoltamn.cpp:1299 -#, fuzzy -msgid "Under/Over Range" -msgstr "Échelle de transfert" - -#: src/minoltamn.cpp:1300 -#, fuzzy -msgid "Out of Range" -msgstr "Décalage hors de porté" - -#: src/minoltamn.cpp:1305 -#, fuzzy -msgid "Not Indicated" -msgstr "Non défini" - -#: src/minoltamn.cpp:1306 -#, fuzzy -msgid "Under Scale" -msgstr "Sous marin" - -#: src/minoltamn.cpp:1307 -#, fuzzy -msgid "Bottom of Scale" -msgstr "Du bas vers le haut" - -#: src/minoltamn.cpp:1325 -msgid "Top of Scale" -msgstr "" - -#: src/minoltamn.cpp:1326 -#, fuzzy -msgid "Over Scale" -msgstr "Défaut" - -#: src/minoltamn.cpp:1331 -msgid "AM" -msgstr "" - -#: src/minoltamn.cpp:1332 src/olympusmn.cpp:512 src/olympusmn.cpp:1374 -#: src/olympusmn.cpp:1384 -msgid "MF" -msgstr "" - -#: src/minoltamn.cpp:1338 -msgid "Built-in" -msgstr "" - -#: src/minoltamn.cpp:1344 src/pentaxmn.cpp:347 src/pentaxmn.cpp:360 -msgid "Very Low" -msgstr "Très faible" - -#: src/minoltamn.cpp:1346 -#, fuzzy -msgid "Half Full" -msgstr "Plein" - -#: src/minoltamn.cpp:1347 -msgid "Sufficient Power Remaining" -msgstr "" - -#: src/minoltamn.cpp:1355 -#, fuzzy -msgid "Exposure Compensation Setting" -msgstr "Compensation d'exposition" - -#: src/minoltamn.cpp:1356 -#, fuzzy -msgid "Exposure compensation setting" -msgstr "Compensation d'exposition" - -#: src/minoltamn.cpp:1358 -#, fuzzy -msgid "High Speed Sync" -msgstr "Scène de nuit" - -#: src/minoltamn.cpp:1359 -#, fuzzy -msgid "High speed sync" -msgstr "Scène de nuit" - -#: src/minoltamn.cpp:1361 -#, fuzzy -msgid "Manual Exposure Time" -msgstr "Temps d'exposition" - -#: src/minoltamn.cpp:1362 -#, fuzzy -msgid "Manual exposure time" -msgstr "Temps d'exposition" - -#: src/minoltamn.cpp:1364 src/minoltamn.cpp:1365 -#, fuzzy -msgid "Manual FNumber" -msgstr "Nombre d'intervalle" - -#: src/minoltamn.cpp:1373 -#, fuzzy -msgid "Drive Mode 2" -msgstr "Mode contrôle" - -#: src/minoltamn.cpp:1374 -#, fuzzy -msgid "Drive mode 2" -msgstr "Mode contrôle" - -#: src/minoltamn.cpp:1382 src/minoltamn.cpp:1383 src/sonymn.cpp:572 -#: src/sonymn.cpp:573 src/sonymn.cpp:678 src/sonymn.cpp:679 -msgid "Local AF Area Point" -msgstr "" - -#: src/minoltamn.cpp:1385 src/minoltamn.cpp:1386 src/nikonmn.cpp:822 -#: src/nikonmn.cpp:845 src/sonymn.cpp:569 src/sonymn.cpp:570 -#: src/sonymn.cpp:675 src/sonymn.cpp:676 -#, fuzzy -msgid "AF Area Mode" -msgstr "Mode mise au point automatique" - -#: src/minoltamn.cpp:1388 src/minoltamn.cpp:1389 src/sonymn.cpp:605 -#: src/sonymn.cpp:606 src/sonymn.cpp:705 src/sonymn.cpp:706 -#, fuzzy -msgid "FlashMode" -msgstr "Mode flash" - -#: src/minoltamn.cpp:1391 -#, fuzzy -msgid "Flash Exposure Comp Setting" -msgstr "Compensation exposition flash" - -#: src/minoltamn.cpp:1392 -#, fuzzy -msgid "Flash exposure compensation setting" -msgstr "Compensation exposition flash en EV" - -#: src/minoltamn.cpp:1397 src/sonymn.cpp:578 src/sonymn.cpp:579 -#: src/sonymn.cpp:684 src/sonymn.cpp:685 -#, fuzzy -msgid "ISO Setting" -msgstr "Réglage ISO" - -#: src/minoltamn.cpp:1400 src/minoltamn.cpp:1401 -#, fuzzy -msgid "Zone Matching Mode" -msgstr "Réduction du bruit" - -#: src/minoltamn.cpp:1403 src/sonymn.cpp:581 src/sonymn.cpp:582 -#: src/sonymn.cpp:687 src/sonymn.cpp:688 -#, fuzzy -msgid "Dynamic Range Optimizer Mode" -msgstr "Réglage gamme dynamique" - -#: src/minoltamn.cpp:1404 -#, fuzzy -msgid "Dynamic range optimizer mode" -msgstr "Réglage gamme dynamique" - -#: src/minoltamn.cpp:1424 src/minoltamn.cpp:1425 src/sonymn.cpp:609 -#: src/sonymn.cpp:610 -msgid "Priority Setup Shutter Release" -msgstr "" - -#: src/minoltamn.cpp:1430 -#, fuzzy -msgid "Self Timer Time" -msgstr "Retardateur" - -#: src/minoltamn.cpp:1431 -#, fuzzy -msgid "Self timer time" -msgstr "Retardateur" - -#: src/minoltamn.cpp:1434 -#, fuzzy -msgid "Continuous bracketing" -msgstr "Continue, Haute" - -#: src/minoltamn.cpp:1436 -#, fuzzy -msgid "Single Frame Bracketing" -msgstr "bracketing" - -#: src/minoltamn.cpp:1437 -#, fuzzy -msgid "Single frame bracketing" -msgstr "Zone unique" - -#: src/minoltamn.cpp:1440 src/nikonmn.cpp:156 src/nikonmn.cpp:167 -#, fuzzy -msgid "White balance bracketing" -msgstr "Biais de balance des blancs" - -#: src/minoltamn.cpp:1442 -#, fuzzy -msgid "White Balance Setting" -msgstr "Réglage balance des blancs" - -#: src/minoltamn.cpp:1445 -#, fuzzy -msgid "Preset White Balance" -msgstr "Balance des blancs" - -#: src/minoltamn.cpp:1446 -#, fuzzy -msgid "Preset white balance" -msgstr "Balance des blancs" - -#: src/minoltamn.cpp:1448 -#, fuzzy -msgid "Color Temperature Setting" -msgstr "Température des couleurs" - -#: src/minoltamn.cpp:1449 -#, fuzzy -msgid "Color temperature setting" -msgstr "Température des couleurs" - -#: src/minoltamn.cpp:1451 -#, fuzzy -msgid "Custom WB Setting" -msgstr "Personnel 1" - -#: src/minoltamn.cpp:1452 -#, fuzzy -msgid "Custom WB setting" -msgstr "Personnel 1" - -#: src/minoltamn.cpp:1454 src/minoltamn.cpp:1455 -#, fuzzy -msgid "Dynamic Range Optimizer Settings" -msgstr "Réglage gamme dynamique" - -#: src/minoltamn.cpp:1460 -#, fuzzy -msgid "Custom WB Red Level" -msgstr "Niveau de noir" - -#: src/minoltamn.cpp:1461 -#, fuzzy -msgid "Custom WB red level" -msgstr "Niveau de noir" - -#: src/minoltamn.cpp:1463 -#, fuzzy -msgid "Custom WB Green Level" -msgstr "Niveau de noir" - -#: src/minoltamn.cpp:1464 -#, fuzzy -msgid "Custom WB green level" -msgstr "Niveau de noir" - -#: src/minoltamn.cpp:1466 -#, fuzzy -msgid "Custom WB Blue Level" -msgstr "Niveau de noir" - -#: src/minoltamn.cpp:1467 -#, fuzzy -msgid "CustomWB blue level" -msgstr "Niveau de noir" - -#: src/minoltamn.cpp:1469 src/minoltamn.cpp:1470 -#, fuzzy -msgid "Custom WB Error" -msgstr "Personnel 1" - -#: src/minoltamn.cpp:1473 -#, fuzzy -msgid "White balance fine tune" -msgstr "Ajustement de la balance des blancs" - -#: src/minoltamn.cpp:1479 -#, fuzzy -msgid "Color compensation filter" -msgstr "Valeur de compensation d'exposition" - -#: src/minoltamn.cpp:1481 src/minoltamn.cpp:1482 src/sonymn.cpp:641 -#: src/sonymn.cpp:642 src/sonymn.cpp:714 src/sonymn.cpp:715 -#, fuzzy -msgid "Sony Image Size" -msgstr "Taille de l'image" - -#: src/minoltamn.cpp:1487 -msgid "Instant Playback Time" -msgstr "" - -#: src/minoltamn.cpp:1488 -msgid "Instant playback time" -msgstr "" - -#: src/minoltamn.cpp:1490 -msgid "Instant Playback Setup" -msgstr "" - -#: src/minoltamn.cpp:1491 -msgid "Instant playback setup" -msgstr "" - -#: src/minoltamn.cpp:1496 -msgid "Eye Start AF" -msgstr "" - -#: src/minoltamn.cpp:1497 -#, fuzzy -msgid "Eye start AF" -msgstr "AF One Shot" - -#: src/minoltamn.cpp:1499 -#, fuzzy -msgid "Red Eye Reduction" -msgstr "Mode anti-yeux rouges." - -#: src/minoltamn.cpp:1500 -#, fuzzy -msgid "Red eye reduction" -msgstr "Mode anti-yeux rouges." - -#: src/minoltamn.cpp:1502 -#, fuzzy -msgid "Flash Default" -msgstr "Détails flash" - -#: src/minoltamn.cpp:1503 -#, fuzzy -msgid "Flash default" -msgstr "Détails flash" - -#: src/minoltamn.cpp:1505 -#, fuzzy -msgid "Auto Bracket Order" -msgstr "Bracketing automatique" - -#: src/minoltamn.cpp:1506 -#, fuzzy -msgid "Auto bracket order" -msgstr "Bracketing automatique" - -#: src/minoltamn.cpp:1508 -#, fuzzy -msgid "Focus Hold Button" -msgstr "Réglage mode de mise au point" - -#: src/minoltamn.cpp:1509 -#, fuzzy -msgid "Focus hold button" -msgstr "Réglage mode de mise au point" - -#: src/minoltamn.cpp:1511 -#, fuzzy -msgid "AEL Button" -msgstr "Réglage AE" - -#: src/minoltamn.cpp:1512 -#, fuzzy -msgid "AEL button" -msgstr "Réglage AE" - -#: src/minoltamn.cpp:1514 -#, fuzzy -msgid "Control Dial Set" -msgstr "Réglage de contraste" - -#: src/minoltamn.cpp:1515 -#, fuzzy -msgid "Control dial set" -msgstr "Contraste" - -#: src/minoltamn.cpp:1517 -#, fuzzy -msgid "Exposure Compensation Mode" -msgstr "Compensation d'exposition" - -#: src/minoltamn.cpp:1518 -#, fuzzy -msgid "Exposure compensation mode" -msgstr "Compensation d'exposition" - -#: src/minoltamn.cpp:1521 -#, fuzzy -msgid "AF assist" -msgstr "Faisceau AF" - -#: src/minoltamn.cpp:1523 -#, fuzzy -msgid "Card Shutter Lock" -msgstr "Priorité obturation" - -#: src/minoltamn.cpp:1524 -#, fuzzy -msgid "Card shutter lock" -msgstr "Obturation rapide" - -#: src/minoltamn.cpp:1526 -#, fuzzy -msgid "Lens Shutter Lock" -msgstr "Temps de pose lent" - -#: src/minoltamn.cpp:1527 -#, fuzzy -msgid "Lens shutter lock" -msgstr "Temps de pose lent" - -#: src/minoltamn.cpp:1529 -msgid "AF Area Illumination" -msgstr "" - -#: src/minoltamn.cpp:1530 -#, fuzzy -msgid "AF area illumination" -msgstr "Mode mise au point automatique" - -#: src/minoltamn.cpp:1532 -msgid "Monitor Display Off" -msgstr "" - -#: src/minoltamn.cpp:1533 -msgid "Monitor display off" -msgstr "" - -#: src/minoltamn.cpp:1535 -msgid "Record Display" -msgstr "" - -#: src/minoltamn.cpp:1536 -msgid "Record display" -msgstr "" - -#: src/minoltamn.cpp:1538 -msgid "Play Display" -msgstr "" - -#: src/minoltamn.cpp:1539 -msgid "Play display" -msgstr "" - -#: src/minoltamn.cpp:1541 -#, fuzzy -msgid "Exposure Indicator" -msgstr "Index d'exposition" - -#: src/minoltamn.cpp:1542 -#, fuzzy -msgid "Exposure indicator" -msgstr "Index d'exposition" - -#: src/minoltamn.cpp:1544 -#, fuzzy -msgid "AEL Exposure Indicator" -msgstr "Index d'exposition" - -#: src/minoltamn.cpp:1545 -msgid "" -"AEL exposure indicator (also indicates exposure for next shot when " -"bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1547 -msgid "Exposure Bracketing Indicator Last" -msgstr "" - -#: src/minoltamn.cpp:1548 -msgid "" -"Exposure bracketing indicator last (indicator for last shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1550 -msgid "Metering Off Scale Indicator" -msgstr "" - -#: src/minoltamn.cpp:1551 -msgid "" -"Metering off scale indicator (two flashing triangles when under or over " -"metering scale)" -msgstr "" - -#: src/minoltamn.cpp:1553 -#, fuzzy -msgid "Flash Exposure Indicator" -msgstr "Compensation exposition flash" - -#: src/minoltamn.cpp:1554 -#, fuzzy -msgid "Flash exposure indicator" -msgstr "Compensation d'exposition du flash" - -#: src/minoltamn.cpp:1556 -#, fuzzy -msgid "Flash Exposure Indicator Next" -msgstr "Compensation exposition flash" - -#: src/minoltamn.cpp:1557 -msgid "Flash exposure indicator next (indicator for next shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1559 -#, fuzzy -msgid "Flash Exposure Indicator Last" -msgstr "Compensation exposition flash" - -#: src/minoltamn.cpp:1560 -msgid "Flash exposure indicator last (indicator for last shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1565 -#, fuzzy -msgid "Focus Mode Switch" -msgstr "Mode mise au point" - -#: src/minoltamn.cpp:1566 -#, fuzzy -msgid "Focus mode switch" -msgstr "Réglage mode de mise au point" - -#: src/minoltamn.cpp:1568 src/olympusmn.cpp:759 -#, fuzzy -msgid "Flash Type" -msgstr "Mode flash" - -#: src/minoltamn.cpp:1569 src/olympusmn.cpp:759 -#, fuzzy -msgid "Flash type" -msgstr "Mode flash" - -#: src/minoltamn.cpp:1574 src/olympusmn.cpp:660 -#, fuzzy -msgid "AE Lock" -msgstr "AE verrouillé" - -#: src/minoltamn.cpp:1581 -msgid "Color compensation filter: negative is green, positive is magenta" -msgstr "" - -#: src/minoltamn.cpp:1583 src/tags.cpp:759 -msgid "Battery Level" -msgstr "Niveau de charge" - -#: src/minoltamn.cpp:1584 -#, fuzzy -msgid "Battery level" -msgstr "Niveau de charge" - -#: src/minoltamn.cpp:1588 -#, fuzzy -msgid "Unknown Sony Camera Settings A100 tag" -msgstr "Marqueur 1 réglage appareil photo Canon inconnu" - -#: src/minoltamn.cpp:1894 src/sonymn.cpp:484 -#, fuzzy -msgid "Clear" -msgstr "année" - -#: src/minoltamn.cpp:1895 src/sonymn.cpp:485 -#, fuzzy -msgid "Deep" -msgstr "Denver" - -#: src/minoltamn.cpp:1896 src/sonymn.cpp:486 -#, fuzzy -msgid "Light" -msgstr "Droit" - -#: src/minoltamn.cpp:1897 -#, fuzzy -msgid "Night View" -msgstr "Scène de nuit" - -#: src/minoltamn.cpp:1898 -msgid "Autumn Leaves" -msgstr "" - -#: src/minoltamn.cpp:1937 -#, fuzzy -msgid "Local" -msgstr "Lieu précis" - -#: src/minoltamn.cpp:1952 -#, fuzzy -msgid "Top-Right" -msgstr "Haut-droit" - -#: src/minoltamn.cpp:1954 -#, fuzzy -msgid "Bottom-Right" -msgstr "Bas-droit" - -#: src/minoltamn.cpp:1956 -#, fuzzy -msgid "Bottom-Left" -msgstr "Bas-gauche" - -#: src/minoltamn.cpp:1958 -#, fuzzy -msgid "Top-Left" -msgstr "Haut-gauche" - -#: src/minoltamn.cpp:1959 -#, fuzzy -msgid "Far-Right" -msgstr "Droit d'auteur" - -#: src/minoltamn.cpp:1960 -#, fuzzy -msgid "Far-Left" -msgstr "haut, gauche" - -#: src/minoltamn.cpp:1974 src/sonymn.cpp:89 -#, fuzzy -msgid "Advanced Auto" -msgstr "Fonction de transfert" - -#: src/minoltamn.cpp:1975 -#, fuzzy -msgid "Advanced Level" -msgstr "Niveau de noir" - -#: src/minoltamn.cpp:1988 -msgid "AF" -msgstr "" - -#: src/minoltamn.cpp:1989 -#, fuzzy -msgid "Release" -msgstr "Date de publication" - -#: src/minoltamn.cpp:2001 -#, fuzzy -msgid "RAW " -msgstr "BRUT" - -#: src/minoltamn.cpp:2002 -#, fuzzy -msgid "CRAW " -msgstr "BRUT" - -#: src/minoltamn.cpp:2005 -#, fuzzy -msgid "RAW+JPEG" -msgstr "JPEG" - -#: src/minoltamn.cpp:2006 -#, fuzzy -msgid "CRAW+JPEG" -msgstr "JPEG" - -#: src/minoltamn.cpp:2062 -msgid "Raw + JPEG" -msgstr "" - -#: src/minoltamn.cpp:2063 -#, fuzzy -msgid "Compressed Raw" -msgstr "Rapport de compression" - -#: src/minoltamn.cpp:2064 -#, fuzzy -msgid "Compressed Raw + JPEG" -msgstr "Taille image compressée" - -#: src/minoltamn.cpp:2077 -msgid "Minolta AF 2x APO (D)" -msgstr "" - -#: src/minoltamn.cpp:2078 -msgid "Minolta AF 2x APO II" -msgstr "" - -#: src/minoltamn.cpp:2079 -msgid "Minolta AF 1.4x APO (D)" -msgstr "" - -#: src/minoltamn.cpp:2080 -msgid "Minolta AF 1.4x APO II" -msgstr "" - -#: src/minoltamn.cpp:2110 -msgid "ISO Setting Used" -msgstr "Réglage ISO utilisé" - -#: src/minoltamn.cpp:2111 src/olympusmn.cpp:126 src/olympusmn.cpp:1109 -msgid "High Key" -msgstr "Clef haute" - -#: src/minoltamn.cpp:2112 src/olympusmn.cpp:132 src/olympusmn.cpp:1107 -msgid "Low Key" -msgstr "Clef basse" - -#: src/nikonmn.cpp:80 -#, fuzzy -msgid "Extra High" -msgstr "Extra fin" - -#: src/nikonmn.cpp:86 src/nikonmn.cpp:1560 -msgid "Single area" -msgstr "Zone unique" - -#: src/nikonmn.cpp:87 src/nikonmn.cpp:1561 -msgid "Dynamic area" -msgstr "Zone dynamique" - -#: src/nikonmn.cpp:88 -msgid "Dynamic area, closest subject" -msgstr "Zone dynamique, sujet proche" - -#: src/nikonmn.cpp:89 -msgid "Group dynamic" -msgstr "" - -#: src/nikonmn.cpp:90 src/nikonmn.cpp:1564 -msgid "Single area (wide)" -msgstr "Zone unique (large)" - -#: src/nikonmn.cpp:91 src/nikonmn.cpp:1565 -msgid "Dynamic area (wide)" -msgstr "Zone dynamique (large)" - -#: src/nikonmn.cpp:104 src/nikonmn.cpp:797 src/nikonmn.cpp:812 -#: src/pentaxmn.cpp:215 -msgid "Upper-left" -msgstr "Haut-gauche" - -#: src/nikonmn.cpp:105 src/nikonmn.cpp:798 src/nikonmn.cpp:813 -#: src/pentaxmn.cpp:217 -msgid "Upper-right" -msgstr "Haut-droit" - -#: src/nikonmn.cpp:106 src/nikonmn.cpp:799 src/nikonmn.cpp:814 -#: src/pentaxmn.cpp:223 -msgid "Lower-left" -msgstr "Bas-gauche" - -#: src/nikonmn.cpp:107 src/nikonmn.cpp:800 src/nikonmn.cpp:815 -#: src/pentaxmn.cpp:225 -msgid "Lower-right" -msgstr "Bas-droit" - -#: src/nikonmn.cpp:108 -msgid "Left-most" -msgstr "Plus à gauche" - -#: src/nikonmn.cpp:109 -msgid "Right-most" -msgstr "Plus à droite" - -#: src/nikonmn.cpp:143 -msgid "Fire, manual" -msgstr "Flash déclenché, manuel" - -#: src/nikonmn.cpp:144 -msgid "Fire, external" -msgstr "Flash déclenché, externe" - -#: src/nikonmn.cpp:145 -msgid "Fire, commander mode" -msgstr "Flash déclenché, mode maître" - -#: src/nikonmn.cpp:146 -msgid "Fire, TTL mode" -msgstr "Flash déclenché, mode TTL" - -#: src/nikonmn.cpp:152 src/nikonmn.cpp:163 -msgid "Delay" -msgstr "Délai" - -#: src/nikonmn.cpp:153 src/nikonmn.cpp:164 -msgid "PC control" -msgstr "Contrôle PC" - -#: src/nikonmn.cpp:154 src/nikonmn.cpp:165 -#, fuzzy -msgid "Exposure bracketing" -msgstr "Avertissement exposition" - -#: src/nikonmn.cpp:155 -#, fuzzy -msgid "Auto ISO" -msgstr "Automatique" - -#: src/nikonmn.cpp:157 src/nikonmn.cpp:168 -msgid "IR control" -msgstr "Contrôle infrarouge" - -#: src/nikonmn.cpp:166 -msgid "Unused LE-NR slowdown" -msgstr "" - -#: src/nikonmn.cpp:174 -msgid "Auto release" -msgstr "Déclenchement automatique" - -#: src/nikonmn.cpp:175 -msgid "Manual release" -msgstr "Déclenchement manuel" - -#: src/nikonmn.cpp:180 -#, fuzzy -msgid "Lossy (type 1)" -msgstr "Type d'objectif" - -#: src/nikonmn.cpp:181 src/tags.cpp:247 -msgid "Uncompressed" -msgstr "Non compressé" - -#: src/nikonmn.cpp:182 -#, fuzzy -msgid "Lossless" -msgstr "Los Angeles" - -#: src/nikonmn.cpp:183 -#, fuzzy -msgid "Lossy (type 2)" -msgstr "Type d'objectif" - -#: src/nikonmn.cpp:189 -#, fuzzy -msgid "B & W" -msgstr "N&B" - -#: src/nikonmn.cpp:191 -#, fuzzy -msgid "Trim" -msgstr "Heure d'envoi" - -#: src/nikonmn.cpp:192 -#, fuzzy -msgid "Small picture" -msgstr "Film" - -#: src/nikonmn.cpp:193 -#, fuzzy -msgid "D-Lighting" -msgstr "Lumière du jour" - -#: src/nikonmn.cpp:194 -#, fuzzy -msgid "Red eye" -msgstr "Réduction yeux rouges" - -#: src/nikonmn.cpp:195 src/nikonmn.cpp:678 -#, fuzzy -msgid "Cyanotype" -msgstr "type" - -#: src/nikonmn.cpp:196 -#, fuzzy -msgid "Sky light" -msgstr "Lumière du jour" - -#: src/nikonmn.cpp:197 -#, fuzzy -msgid "Warm tone" -msgstr "Tonalité couleur" - -#: src/nikonmn.cpp:198 -#, fuzzy -msgid "Color custom" -msgstr "Tonalité couleur" - -#: src/nikonmn.cpp:199 -#, fuzzy -msgid "Image overlay" -msgstr "Type d'image" - -#: src/nikonmn.cpp:205 -#, fuzzy -msgid "Minimal" -msgstr "Manuel" - -#: src/nikonmn.cpp:214 src/nikonmn.cpp:524 -msgid "Nikon Makernote version" -msgstr "Version des note du fabriquant Nikon" - -#: src/nikonmn.cpp:216 src/nikonmn.cpp:468 src/nikonmn.cpp:525 -#: src/olympusmn.cpp:270 src/panasonicmn.cpp:344 src/tags.cpp:1583 -msgid "ISO Speed" -msgstr "Vitesse ISO" - -#: src/nikonmn.cpp:228 src/nikonmn.cpp:529 -msgid "Sharpening" -msgstr "Netteté" - -#: src/nikonmn.cpp:229 src/nikonmn.cpp:529 -msgid "Image sharpening setting" -msgstr "Réglage netteté image" - -#: src/nikonmn.cpp:231 src/nikonmn.cpp:530 -msgid "Focus" -msgstr "Mise au point" - -#: src/nikonmn.cpp:234 src/nikonmn.cpp:531 -msgid "Flash Setting" -msgstr "Réglage flash" - -#: src/nikonmn.cpp:235 src/nikonmn.cpp:531 -msgid "Flash setting" -msgstr "Réglage flash" - -#: src/nikonmn.cpp:240 src/nikonmn.cpp:538 -msgid "ISO Selection" -msgstr "Sélection ISO" - -#: src/nikonmn.cpp:241 src/nikonmn.cpp:538 -msgid "ISO selection" -msgstr "Sélection ISO" - -#: src/nikonmn.cpp:243 src/nikonmn.cpp:539 src/panasonicmn.cpp:246 -#, fuzzy -msgid "Data Dump" -msgstr "Formulaire de donné" - -#: src/nikonmn.cpp:244 src/nikonmn.cpp:539 src/panasonicmn.cpp:246 -#, fuzzy -msgid "Data dump" -msgstr "Formulaire de donné" - -#: src/nikonmn.cpp:246 src/nikonmn.cpp:465 src/nikonmn.cpp:559 -msgid "Image Adjustment" -msgstr "Ajustement image" - -#: src/nikonmn.cpp:247 src/nikonmn.cpp:466 src/nikonmn.cpp:559 -msgid "Image adjustment setting" -msgstr "Réglage ajustement image" - -#: src/nikonmn.cpp:249 src/nikonmn.cpp:483 src/nikonmn.cpp:561 -msgid "Auxiliary Lens" -msgstr "Objectif auxiliaire" - -#: src/nikonmn.cpp:250 src/nikonmn.cpp:484 src/nikonmn.cpp:561 -msgid "Auxiliary lens (adapter)" -msgstr "Objectif auxiliaire (adaptateur)" - -#: src/nikonmn.cpp:253 src/nikonmn.cpp:564 src/olympusmn.cpp:304 -msgid "Manual focus distance" -msgstr "Distance mise au point manuelle" - -#: src/nikonmn.cpp:256 src/nikonmn.cpp:481 src/nikonmn.cpp:565 -msgid "Digital zoom setting" -msgstr "Réglage du zoom numérique" - -#: src/nikonmn.cpp:258 -#, fuzzy -msgid "AF Focus Position" -msgstr "Position mise au point" - -#: src/nikonmn.cpp:259 -#, fuzzy -msgid "AF focus position information" -msgstr "Position mise au point" - -#: src/nikonmn.cpp:263 -msgid "Unknown Nikon1MakerNote tag" -msgstr "Marqueur 1 de note du fabriquant Nikon inconnu" - -#: src/nikonmn.cpp:290 src/nikonmn.cpp:1416 -msgid "Continuous autofocus" -msgstr "" - -#: src/nikonmn.cpp:291 src/nikonmn.cpp:1417 -msgid "Single autofocus" -msgstr "" - -#: src/nikonmn.cpp:325 src/nikonmn.cpp:506 src/nikonmn.cpp:1517 -msgid "Not used" -msgstr "Non utilisé" - -#: src/nikonmn.cpp:365 -msgid "guess" -msgstr "deviné" - -#: src/nikonmn.cpp:412 -msgid "VGA Basic" -msgstr "VGA grossier" - -#: src/nikonmn.cpp:413 -msgid "VGA Normal" -msgstr "VGA normal" - -#: src/nikonmn.cpp:414 -msgid "VGA Fine" -msgstr "VGA fin" - -#: src/nikonmn.cpp:415 -msgid "SXGA Basic" -msgstr "SXGA grossier" - -#: src/nikonmn.cpp:416 -msgid "SXGA Normal" -msgstr "SXGA normal" - -#: src/nikonmn.cpp:417 -msgid "SXGA Fine" -msgstr "SXGA fin" - -#: src/nikonmn.cpp:429 -msgid "Bright+" -msgstr "Luminosité+" - -#: src/nikonmn.cpp:430 -msgid "Bright-" -msgstr "Luminosité-" - -#: src/nikonmn.cpp:431 -msgid "Contrast+" -msgstr "Contraste+" - -#: src/nikonmn.cpp:432 -msgid "Contrast-" -msgstr "Contraste-" - -#: src/nikonmn.cpp:451 -msgid "Speedlight" -msgstr "Vitesse lumière" - -#: src/nikonmn.cpp:491 -msgid "Unknown Nikon2MakerNote tag" -msgstr "Marqueur 2 de note du fabriquant Nikon inconnu" - -#: src/nikonmn.cpp:532 src/olympusmn.cpp:282 -msgid "Flash Device" -msgstr "Matériel du flash" - -#: src/nikonmn.cpp:532 src/olympusmn.cpp:283 -msgid "Flash device" -msgstr "Matériel du flash" - -#: src/nikonmn.cpp:534 src/olympusmn.cpp:249 src/panasonicmn.cpp:248 -msgid "White Balance Bias" -msgstr "Biais de balance des blancs" - -#: src/nikonmn.cpp:534 src/olympusmn.cpp:250 -msgid "White balance bias" -msgstr "Biais de balance des blancs" - -#: src/nikonmn.cpp:535 src/olympusmn.cpp:932 -#, fuzzy -msgid "WB RB Levels" -msgstr "Niveau de noir" - -#: src/nikonmn.cpp:535 src/olympusmn.cpp:932 -#, fuzzy -msgid "WB RB levels" -msgstr "Niveau de noir" - -#: src/nikonmn.cpp:536 -#, fuzzy -msgid "Program Shift" -msgstr "Logiciel" - -#: src/nikonmn.cpp:536 -#, fuzzy -msgid "Program shift" -msgstr "Logiciel" - -#: src/nikonmn.cpp:537 -msgid "Exposure Difference" -msgstr "Différence d'exposition" - -#: src/nikonmn.cpp:537 -msgid "Exposure difference" -msgstr "Différence d'exposition" - -#: src/nikonmn.cpp:540 src/pentaxmn.cpp:877 -msgid "Pointer to a preview image" -msgstr "Pointeur vers l'image d'aperçu" - -#: src/nikonmn.cpp:540 src/pentaxmn.cpp:878 -msgid "Offset to an IFD containing a preview image" -msgstr "Décalage vers l'IFD contenant l'aperçu" - -#: src/nikonmn.cpp:541 -msgid "Flash Comp" -msgstr "Compensation Flash" - -#: src/nikonmn.cpp:541 -msgid "Flash compensation setting" -msgstr "Réglage compensation Flash" - -#: src/nikonmn.cpp:543 -msgid "Image Boundary" -msgstr "Limite de l'image" - -#: src/nikonmn.cpp:543 -msgid "Image boundary" -msgstr "Limite de l'image" - -#: src/nikonmn.cpp:544 -#, fuzzy -msgid "Flash exposure comp" -msgstr "Compensation d'exposition du flash" - -#: src/nikonmn.cpp:545 -#, fuzzy -msgid "Flash Bracket Comp" -msgstr "Compensation Flash" - -#: src/nikonmn.cpp:545 -#, fuzzy -msgid "Flash bracket compensation applied" -msgstr "Compensation d'exposition du flash" - -#: src/nikonmn.cpp:546 -#, fuzzy -msgid "Exposure Bracket Comp" -msgstr "Programme d'exposition" - -#: src/nikonmn.cpp:546 -#, fuzzy -msgid "AE bracket compensation applied" -msgstr "Valeur de compensation d'exposition" - -#: src/nikonmn.cpp:547 src/olympusmn.cpp:459 -msgid "Image Processing" -msgstr " Traitement d'image" - -#: src/nikonmn.cpp:547 src/pentaxmn.cpp:985 src/pentaxmn.cpp:986 -msgid "Image processing" -msgstr " Traitement d'image" - -#: src/nikonmn.cpp:548 -#, fuzzy -msgid "Crop High Speed" -msgstr "Scène de nuit" - -#: src/nikonmn.cpp:548 -#, fuzzy -msgid "Crop high speed" -msgstr "Droit d'auteur" - -#: src/nikonmn.cpp:549 -#, fuzzy -msgid "Exposure Tuning" -msgstr "Avertissement exposition" - -#: src/nikonmn.cpp:549 -#, fuzzy -msgid "Exposure tuning" -msgstr "Avertissement exposition" - -#: src/nikonmn.cpp:552 -#, fuzzy -msgid "VR Info" -msgstr "Informations brutes" - -#: src/nikonmn.cpp:552 -#, fuzzy -msgid "VR info" -msgstr "Informations brutes" - -#: src/nikonmn.cpp:553 -#, fuzzy -msgid "Image Authentication" -msgstr "Orientation" - -#: src/nikonmn.cpp:553 -#, fuzzy -msgid "Image authentication" -msgstr "Orientation" - -#: src/nikonmn.cpp:554 -msgid "ActiveD-Lighting" -msgstr "" - -#: src/nikonmn.cpp:554 -msgid "ActiveD-lighting" -msgstr "" - -#: src/nikonmn.cpp:555 -#, fuzzy -msgid "Picture Control" -msgstr "Infos image" - -#: src/nikonmn.cpp:555 -#, fuzzy -msgid " Picture control" -msgstr "Infos image" - -#: src/nikonmn.cpp:556 -#, fuzzy -msgid "World Time" -msgstr "Heure Minolta" - -#: src/nikonmn.cpp:556 -#, fuzzy -msgid "World time" -msgstr "Heure Minolta" - -#: src/nikonmn.cpp:557 -#, fuzzy -msgid "ISO Info" -msgstr "Infos prise de vue" - -#: src/nikonmn.cpp:557 -#, fuzzy -msgid "ISO info" -msgstr "Réglage ISO" - -#: src/nikonmn.cpp:558 -#, fuzzy -msgid "Vignette Control" -msgstr "Point blanc" - -#: src/nikonmn.cpp:558 -#, fuzzy -msgid "Vignette control" -msgstr "Point blanc" - -#: src/nikonmn.cpp:560 -msgid "Tone Compensation" -msgstr "Compensation de tonalité" - -#: src/nikonmn.cpp:560 -msgid "Tone compensation" -msgstr "Compensation de tonalité" - -#: src/nikonmn.cpp:566 -msgid "Mode of flash used" -msgstr "Mode de flash utilisé" - -#: src/nikonmn.cpp:568 src/panasonicmn.cpp:244 -msgid "Shooting Mode" -msgstr "Mode de prise de vue" - -#: src/nikonmn.cpp:568 src/panasonicmn.cpp:244 src/pentaxmn.cpp:868 -msgid "Shooting mode" -msgstr "Mode de prise de vue" - -#: src/nikonmn.cpp:569 -#, fuzzy -msgid "Auto Bracket Release" -msgstr "Bracketing automatique" - -#: src/nikonmn.cpp:569 -#, fuzzy -msgid "Auto bracket release" -msgstr "Bracketing automatique" - -#: src/nikonmn.cpp:570 -#, fuzzy -msgid "Lens FStops" -msgstr "Type d'objectif" - -#: src/nikonmn.cpp:571 -#, fuzzy -msgid "Contrast Curve" -msgstr "Contraste" - -#: src/nikonmn.cpp:571 -#, fuzzy -msgid "Contrast curve" -msgstr "Contraste" - -#: src/nikonmn.cpp:572 -#, fuzzy -msgid "Color Hue" -msgstr "Tonalité couleur" - -#: src/nikonmn.cpp:572 -#, fuzzy -msgid "Color hue" -msgstr "Tonalité couleur" - -#: src/nikonmn.cpp:573 src/olympusmn.cpp:253 src/olympusmn.cpp:684 -#: src/panasonicmn.cpp:282 -msgid "Scene mode" -msgstr "Mode scène" - -#: src/nikonmn.cpp:574 src/olympusmn.cpp:1076 src/properties.cpp:562 -#: src/tags.cpp:826 src/tags.cpp:1649 -msgid "Light Source" -msgstr "Source lumineuse" - -#: src/nikonmn.cpp:574 src/olympusmn.cpp:1076 -msgid "Light source" -msgstr "Source lumineuse" - -#: src/nikonmn.cpp:575 -#, fuzzy -msgid "Shot info" -msgstr "Infos prise de vue" - -#: src/nikonmn.cpp:576 src/nikonmn.cpp:700 -msgid "Hue Adjustment" -msgstr "Ajustement de teinte" - -#: src/nikonmn.cpp:576 src/nikonmn.cpp:700 -msgid "Hue adjustment" -msgstr "Ajustement de teinte" - -#: src/nikonmn.cpp:577 -#, fuzzy -msgid "NEF Compression" -msgstr "Compression" - -#: src/nikonmn.cpp:577 -#, fuzzy -msgid "NEF compression" -msgstr "Compression" - -#: src/nikonmn.cpp:580 src/tags.cpp:898 -#, fuzzy -msgid "Linearization Table" -msgstr "Date de numérisation" - -#: src/nikonmn.cpp:580 -#, fuzzy -msgid "Linearization table" -msgstr "Date de numérisation" - -#: src/nikonmn.cpp:581 -#, fuzzy -msgid "Color Balance" -msgstr "Balance des couleurs 1" - -#: src/nikonmn.cpp:581 -#, fuzzy -msgid "Color balance" -msgstr "Balance des rouges" - -#: src/nikonmn.cpp:582 -msgid "Lens Data" -msgstr "Données de l'objectif" - -#: src/nikonmn.cpp:582 -msgid "Lens data settings" -msgstr "Réglage des données de l'objectif" - -#: src/nikonmn.cpp:583 -#, fuzzy -msgid "Raw Image Center" -msgstr "Comptage d'image" - -#: src/nikonmn.cpp:583 -#, fuzzy -msgid "Raw image center" -msgstr "Aperçu embarqué" - -#: src/nikonmn.cpp:584 -msgid "Sensor Pixel Size" -msgstr "Taille pixel du capteur" - -#: src/nikonmn.cpp:584 -msgid "Sensor pixel size" -msgstr "Taille pixel du capteur" - -#: src/nikonmn.cpp:586 -#, fuzzy -msgid "Scene Assist" -msgstr "Faisceau AF" - -#: src/nikonmn.cpp:586 -#, fuzzy -msgid "Scene assist" -msgstr "Mode scène" - -#: src/nikonmn.cpp:587 -#, fuzzy -msgid "Retouch History" -msgstr "Hauteur de l'image" - -#: src/nikonmn.cpp:587 -msgid "Retouch history" -msgstr "" - -#: src/nikonmn.cpp:589 -#, fuzzy -msgid "Serial NO" -msgstr "Numéro de série" - -#: src/nikonmn.cpp:589 -msgid "Camera serial number, usually starts with \"NO= \"" -msgstr "" - -#: src/nikonmn.cpp:590 -msgid "Image Data Size" -msgstr "Taille des données de l'image" - -#: src/nikonmn.cpp:590 -msgid "Image data size" -msgstr "Taille des données de l'image" - -#: src/nikonmn.cpp:592 -msgid "Image Count" -msgstr "Comptage d'image" - -#: src/nikonmn.cpp:592 -msgid "Image count" -msgstr "Comptage d'image" - -#: src/nikonmn.cpp:593 src/nikonmn.cpp:1227 -#, fuzzy -msgid "Deleted Image Count" -msgstr "Effacer le comptage d'image" - -#: src/nikonmn.cpp:593 src/nikonmn.cpp:1227 -#, fuzzy -msgid "Deleted image count" -msgstr "Effacer le comptage d'image" - -#: src/nikonmn.cpp:594 src/nikonmn.cpp:1064 src/nikonmn.cpp:1077 -#: src/nikonmn.cpp:1137 src/nikonmn.cpp:1197 src/nikonmn.cpp:1233 -#, fuzzy -msgid "Shutter Count" -msgstr "Priorité obturation" - -#: src/nikonmn.cpp:594 -msgid "Number of shots taken by camera" -msgstr "Nombre de photo pris par l'appareil" - -#: src/nikonmn.cpp:595 -#, fuzzy -msgid "Flash info" -msgstr "Flash" - -#: src/nikonmn.cpp:596 -msgid "Image Optimization" -msgstr "Optimisation d'image" - -#: src/nikonmn.cpp:596 -msgid "Image optimization" -msgstr "Optimisation d'image" - -#: src/nikonmn.cpp:598 -#, fuzzy -msgid "Program Variation" -msgstr "Version du logiciel" - -#: src/nikonmn.cpp:598 -#, fuzzy -msgid "Program variation" -msgstr "Version du logiciel" - -#: src/nikonmn.cpp:600 -msgid "AF Response" -msgstr "Réponse mise au point automatique" - -#: src/nikonmn.cpp:600 -msgid "AF response" -msgstr "Réponse mise au point automatique" - -#: src/nikonmn.cpp:601 -#, fuzzy -msgid "Multi exposure" -msgstr "Exposition" - -#: src/nikonmn.cpp:602 -msgid "High ISO Noise Reduction" -msgstr "Réduction de bruit Iso élevé" - -#: src/nikonmn.cpp:603 src/nikonmn.cpp:702 -#, fuzzy -msgid "Toning effect" -msgstr "Effet photo" - -#: src/nikonmn.cpp:604 -#, fuzzy -msgid "AF info 2" -msgstr "Informations mise au point" - -#: src/nikonmn.cpp:605 -#, fuzzy -msgid "File info" -msgstr "Nom du fichier" - -#: src/nikonmn.cpp:606 -#, fuzzy -msgid "AF tune" -msgstr "Point AF utilisé" - -#: src/nikonmn.cpp:609 -#, fuzzy -msgid "Capture Data" -msgstr "Date de publication" - -#: src/nikonmn.cpp:609 -#, fuzzy -msgid "Capture data" -msgstr "Autre données" - -#: src/nikonmn.cpp:610 -#, fuzzy -msgid "Capture Version" -msgstr "Version du microcode" - -#: src/nikonmn.cpp:610 -#, fuzzy -msgid "Capture version" -msgstr "Version de microcode" - -#: src/nikonmn.cpp:612 -#, fuzzy -msgid "Capture Offsets" -msgstr "Décalage aperçu" - -#: src/nikonmn.cpp:612 -#, fuzzy -msgid "Capture offsets" -msgstr "Décalage aperçu" - -#: src/nikonmn.cpp:613 -#, fuzzy -msgid "Scan IFD" -msgstr "Identifiant appareil photo" - -#: src/nikonmn.cpp:614 -#, fuzzy -msgid "ICC profile" -msgstr "Profil couleur" - -#: src/nikonmn.cpp:615 -msgid "Capture output" -msgstr "" - -#: src/nikonmn.cpp:617 -msgid "Unknown Nikon3MakerNote tag" -msgstr "Marqueur 3 de note du fabriquant Nikon inconnu" - -#: src/nikonmn.cpp:627 src/olympusmn.cpp:65 src/panasonicmn.cpp:140 -#: src/pentaxmn.cpp:298 -msgid "No" -msgstr "Non" - -#: src/nikonmn.cpp:628 src/olympusmn.cpp:66 src/panasonicmn.cpp:139 -#: src/pentaxmn.cpp:299 -msgid "Yes" -msgstr "Oui" - -#: src/nikonmn.cpp:633 -msgid "Y/M/D" -msgstr "" - -#: src/nikonmn.cpp:634 -msgid "M/D/Y" -msgstr "" - -#: src/nikonmn.cpp:635 -msgid "D/M/Y" -msgstr "" - -#: src/nikonmn.cpp:647 src/nikonmn.cpp:1228 -#, fuzzy -msgid "Vibration Reduction" -msgstr "Réduction du bruit" - -#: src/nikonmn.cpp:647 src/nikonmn.cpp:1228 -#, fuzzy -msgid "Vibration reduction" -msgstr "Réduction du bruit" - -#: src/nikonmn.cpp:649 -#, fuzzy -msgid "Unknown Nikon Vibration Reduction Tag" -msgstr "Marqueur réglage appareil photo Canon inconnu" - -#: src/nikonmn.cpp:659 -#, fuzzy -msgid "Default Settings" -msgstr "Réglage flash" - -#: src/nikonmn.cpp:660 src/nikonmn.cpp:695 -#, fuzzy -msgid "Quick Adjust" -msgstr "Ajustement de teinte" - -#: src/nikonmn.cpp:661 -#, fuzzy -msgid "Full Control" -msgstr "Contrôle des couleurs" - -#: src/nikonmn.cpp:682 -msgid "Blue-green" -msgstr "" - -#: src/nikonmn.cpp:684 -msgid "Purple-blue" -msgstr "" - -#: src/nikonmn.cpp:685 -msgid "Red-purple" -msgstr "" - -#: src/nikonmn.cpp:692 src/properties.cpp:980 -#, fuzzy -msgid "Name" -msgstr "Nom du propriétaire" - -#: src/nikonmn.cpp:693 -msgid "Base" -msgstr "" - -#: src/nikonmn.cpp:694 -#, fuzzy -msgid "Adjust" -msgstr "Ajustement de" - -#: src/nikonmn.cpp:695 -#, fuzzy -msgid "Quick adjust" -msgstr "Ajustement de teinte" - -#: src/nikonmn.cpp:701 -#, fuzzy -msgid "Filter effect" -msgstr "Effet de couleurs" - -#: src/nikonmn.cpp:703 -#, fuzzy -msgid "Toning Saturation" -msgstr "Saturation" - -#: src/nikonmn.cpp:703 -#, fuzzy -msgid "Toning saturation" -msgstr "Saturation" - -#: src/nikonmn.cpp:705 -#, fuzzy -msgid "Unknown Nikon Picture Control Tag" -msgstr "Marqueur info image Canon inconnu" - -#: src/nikonmn.cpp:722 -#, fuzzy -msgid "AF Fine Tune" -msgstr "Point AF utilisé" - -#: src/nikonmn.cpp:722 -#, fuzzy -msgid "AF fine tune" -msgstr "Point AF utilisé" - -#: src/nikonmn.cpp:723 -#, fuzzy -msgid "AF Fine Tune Index" -msgstr "Point AF utilisé" - -#: src/nikonmn.cpp:723 -#, fuzzy -msgid "AF fine tune index" -msgstr "Point AF utilisé" - -#: src/nikonmn.cpp:724 -#, fuzzy -msgid "AF Fine Tune Adjustment" -msgstr "Point AF utilisé" - -#: src/nikonmn.cpp:724 -#, fuzzy -msgid "AF fine tune adjustment" -msgstr "Point AF utilisé" - -#: src/nikonmn.cpp:726 -#, fuzzy -msgid "Unknown Nikon AF Fine Tune Tag" -msgstr "Marqueur info image Canon inconnu" - -#: src/nikonmn.cpp:736 -#, fuzzy -msgid "Timezone" -msgstr "Ton" - -#: src/nikonmn.cpp:737 -#, fuzzy -msgid "Daylight Savings" -msgstr "Lumière du jour" - -#: src/nikonmn.cpp:737 -#, fuzzy -msgid "Daylight savings" -msgstr "Lumière du jour" - -#: src/nikonmn.cpp:738 -#, fuzzy -msgid "Date Display Format" -msgstr "Format du fichier" - -#: src/nikonmn.cpp:738 -#, fuzzy -msgid "Date display format" -msgstr "Formulaire de donné" - -#: src/nikonmn.cpp:740 -#, fuzzy -msgid "Unknown Nikon World Time Tag" -msgstr "Marqueur 1 de note du fabriquant Nikon inconnu" - -#: src/nikonmn.cpp:751 -msgid "Hi 0.3" -msgstr "" - -#: src/nikonmn.cpp:752 -msgid "Hi 0.5" -msgstr "" - -#: src/nikonmn.cpp:753 -msgid "Hi 0.7" -msgstr "" - -#: src/nikonmn.cpp:754 -msgid "Hi 1.0" -msgstr "" - -#: src/nikonmn.cpp:755 -msgid "Hi 1.3" -msgstr "" - -#: src/nikonmn.cpp:756 -msgid "Hi 1.5" -msgstr "" - -#: src/nikonmn.cpp:757 -msgid "Hi 1.7" -msgstr "" - -#: src/nikonmn.cpp:758 -msgid "Hi 2.0" -msgstr "" - -#: src/nikonmn.cpp:759 -msgid "Lo 0.3" -msgstr "" - -#: src/nikonmn.cpp:760 -msgid "Lo 0.5" -msgstr "" - -#: src/nikonmn.cpp:761 -msgid "Lo 0.7" -msgstr "" - -#: src/nikonmn.cpp:762 -msgid "Lo 1.0" -msgstr "" - -#: src/nikonmn.cpp:768 -#, fuzzy -msgid "ISO Expansion" -msgstr "Sélection ISO" - -#: src/nikonmn.cpp:768 -#, fuzzy -msgid "ISO expansion" -msgstr "Sélection ISO" - -#: src/nikonmn.cpp:769 -#, fuzzy -msgid "ISO 2" -msgstr "Infos prise de vue" - -#: src/nikonmn.cpp:770 -#, fuzzy -msgid "ISO Expansion 2" -msgstr "Sélection ISO" - -#: src/nikonmn.cpp:770 -#, fuzzy -msgid "ISO expansion 2" -msgstr "Sélection ISO" - -#: src/nikonmn.cpp:772 -#, fuzzy -msgid "Unknown Nikon Iso Info Tag" -msgstr "Marqueur info image Canon inconnu" - -#: src/nikonmn.cpp:782 -#, fuzzy -msgid "Single Area" -msgstr "Zone unique" - -#: src/nikonmn.cpp:783 -#, fuzzy -msgid "Dynamic Area" -msgstr "Zone dynamique" - -#: src/nikonmn.cpp:784 -#, fuzzy -msgid "Dynamic Area, Closest Subject" -msgstr "Zone dynamique, sujet proche" - -#: src/nikonmn.cpp:785 -msgid "Group Dynamic" -msgstr "" - -#: src/nikonmn.cpp:786 -#, fuzzy -msgid "Single Area (wide)" -msgstr "Zone unique (large)" - -#: src/nikonmn.cpp:787 -#, fuzzy -msgid "Dynamic Area (wide)" -msgstr "Zone dynamique (large)" - -#: src/nikonmn.cpp:795 src/nikonmn.cpp:810 src/pentaxmn.cpp:219 -msgid "Mid-left" -msgstr "milieu-gauche" - -#: src/nikonmn.cpp:796 src/nikonmn.cpp:811 src/pentaxmn.cpp:221 -msgid "Mid-right" -msgstr "milieu-droit" - -#: src/nikonmn.cpp:801 src/nikonmn.cpp:816 -#, fuzzy -msgid "Far Left" -msgstr "haut, gauche" - -#: src/nikonmn.cpp:802 src/nikonmn.cpp:817 -#, fuzzy -msgid "Far Right" -msgstr "Droit d'auteur" - -#: src/nikonmn.cpp:822 src/nikonmn.cpp:845 -#, fuzzy -msgid "AF area mode" -msgstr "Mode mise au point automatique" - -#: src/nikonmn.cpp:823 src/olympusmn.cpp:1008 src/pentaxmn.cpp:902 -#, fuzzy -msgid "AF point" -msgstr "AF Points" - -#: src/nikonmn.cpp:824 -#, fuzzy -msgid "AF Points In Focus" -msgstr "Points AF utilisés" - -#: src/nikonmn.cpp:824 -#, fuzzy -msgid "AF points in focus" -msgstr "Points AF utilisés" - -#: src/nikonmn.cpp:826 -#, fuzzy -msgid "Unknown Nikon Auto Focus Tag" -msgstr "Marqueur réglage appareil photo Canon inconnu" - -#: src/nikonmn.cpp:837 -msgid "On (51-point)" -msgstr "" - -#: src/nikonmn.cpp:838 -msgid "On (11-point)" -msgstr "" - -#: src/nikonmn.cpp:844 -#, fuzzy -msgid "Contrast Detect AF" -msgstr "Réglage de contraste" - -#: src/nikonmn.cpp:844 -#, fuzzy -msgid "Contrast detect AF" -msgstr "Réglage de contraste" - -#: src/nikonmn.cpp:846 -#, fuzzy -msgid "Phase Detect AF" -msgstr "Échec lors de la lecture" - -#: src/nikonmn.cpp:846 -#, fuzzy -msgid "Phase detect AF" -msgstr "Échec lors de la lecture" - -#: src/nikonmn.cpp:847 -#, fuzzy -msgid "Primary AF Point" -msgstr "Point AF" - -#: src/nikonmn.cpp:847 -#, fuzzy -msgid "Primary AF point" -msgstr "AF Points" - -#: src/nikonmn.cpp:849 -#, fuzzy -msgid "AF Image Width" -msgstr "Largeur de l'image" - -#: src/nikonmn.cpp:849 -#, fuzzy -msgid "AF image width" -msgstr "Largeur de l'image" - -#: src/nikonmn.cpp:850 -#, fuzzy -msgid "AF Image Height" -msgstr "Hauteur de l'image" - -#: src/nikonmn.cpp:850 -#, fuzzy -msgid "AF image height" -msgstr "Hauteur de l'image" - -#: src/nikonmn.cpp:851 -#, fuzzy -msgid "AF Area X Position" -msgstr "Position mise au point" - -#: src/nikonmn.cpp:851 -#, fuzzy -msgid "AF area x position" -msgstr "Position mise au point" - -#: src/nikonmn.cpp:852 -#, fuzzy -msgid "AF Area Y Position" -msgstr "Position mise au point" - -#: src/nikonmn.cpp:852 -#, fuzzy -msgid "AF area y position" -msgstr "Position mise au point" - -#: src/nikonmn.cpp:853 -#, fuzzy -msgid "AF Area Width" -msgstr "Mode mise au point automatique" - -#: src/nikonmn.cpp:853 -#, fuzzy -msgid "AF area width" -msgstr "Mode mise au point automatique" - -#: src/nikonmn.cpp:854 -#, fuzzy -msgid "AF Area Height" -msgstr "Mode mise au point automatique" - -#: src/nikonmn.cpp:854 -#, fuzzy -msgid "AF area height" -msgstr "Droit d'auteur" - -#: src/nikonmn.cpp:855 -#, fuzzy -msgid "Contrast Detect AF In Focus" -msgstr "Réglage de contraste" - -#: src/nikonmn.cpp:855 -#, fuzzy -msgid "Contrast detect AF in focus" -msgstr "Réglage de contraste" - -#: src/nikonmn.cpp:857 -#, fuzzy -msgid "Unknown Nikon Auto Focus 2 Tag" -msgstr "Marqueur réglage appareil photo Canon inconnu" - -#: src/nikonmn.cpp:868 -#, fuzzy -msgid "Directory Number" -msgstr "Numéro ordre" - -#: src/nikonmn.cpp:868 -#, fuzzy -msgid "Directory number" -msgstr "Numéro ordre" - -#: src/nikonmn.cpp:871 -#, fuzzy -msgid "Unknown Nikon File Info Tag" -msgstr "Marqueur info image Canon inconnu" - -#: src/nikonmn.cpp:882 src/pentaxmn.cpp:542 -#, fuzzy -msgid "Multiple Exposure" -msgstr "Exposition" - -#: src/nikonmn.cpp:883 -#, fuzzy -msgid "Image Overlay" -msgstr "Type d'image" - -#: src/nikonmn.cpp:889 -#, fuzzy -msgid "Multi Exposure Mode" -msgstr "Mode d'exposition" - -#: src/nikonmn.cpp:889 -#, fuzzy -msgid "Multi exposure mode" -msgstr "Exposition" - -#: src/nikonmn.cpp:890 -#, fuzzy -msgid "Multi Exposure Shots" -msgstr "Exposition" - -#: src/nikonmn.cpp:890 -#, fuzzy -msgid "Multi exposure shots" -msgstr "Exposition" - -#: src/nikonmn.cpp:891 -#, fuzzy -msgid "Multi Exposure Auto Gain" -msgstr "Exposition" - -#: src/nikonmn.cpp:891 -#, fuzzy -msgid "Multi exposure auto gain" -msgstr "Exposition" - -#: src/nikonmn.cpp:893 src/nikonmn.cpp:1013 src/nikonmn.cpp:1033 -#: src/nikonmn.cpp:1053 -#, fuzzy -msgid "Unknown Nikon Multi Exposure Tag" -msgstr "Marqueur réglage appareil photo Canon inconnu" - -#: src/nikonmn.cpp:905 src/olympusmn.cpp:143 -msgid "Internal" -msgstr "Interne" - -#: src/nikonmn.cpp:911 -msgid "1.01 (SB-800 or Metz 58 AF-1)" -msgstr "" - -#: src/nikonmn.cpp:912 -msgid "1.03 (SB-800)" -msgstr "" - -#: src/nikonmn.cpp:913 -msgid "2.01 (SB-800)" -msgstr "" - -#: src/nikonmn.cpp:914 -msgid "2.04 (SB-600)" -msgstr "" - -#: src/nikonmn.cpp:915 -msgid "2.05 (SB-600)" -msgstr "" - -#: src/nikonmn.cpp:916 -msgid "3.01 (SU-800 Remote Commander)" -msgstr "" - -#: src/nikonmn.cpp:917 -msgid "4.01 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:918 -msgid "4.02 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:919 -msgid "4.04 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:920 -msgid "5.01 (SB-900)" -msgstr "" - -#: src/nikonmn.cpp:921 -msgid "5.02 (SB-900)" -msgstr "" - -#: src/nikonmn.cpp:927 -msgid "0.1 m" -msgstr "" - -#: src/nikonmn.cpp:928 -msgid "0.2 m" -msgstr "" - -#: src/nikonmn.cpp:929 -msgid "0.3 m" -msgstr "" - -#: src/nikonmn.cpp:930 -msgid "0.4 m" -msgstr "" - -#: src/nikonmn.cpp:931 -msgid "0.5 m" -msgstr "" - -#: src/nikonmn.cpp:932 -msgid "0.6 m" -msgstr "" - -#: src/nikonmn.cpp:933 -msgid "0.7 m" -msgstr "" - -#: src/nikonmn.cpp:934 -msgid "0.8 m" -msgstr "" - -#: src/nikonmn.cpp:935 -msgid "0.9 m" -msgstr "" - -#: src/nikonmn.cpp:936 -msgid "1.0 m" -msgstr "" - -#: src/nikonmn.cpp:937 -msgid "1.1 m" -msgstr "" - -#: src/nikonmn.cpp:938 -msgid "1.3 m" -msgstr "" - -#: src/nikonmn.cpp:939 -msgid "1.4 m" -msgstr "" - -#: src/nikonmn.cpp:940 -msgid "1.6 m" -msgstr "" - -#: src/nikonmn.cpp:941 -msgid "1.8 m" -msgstr "" - -#: src/nikonmn.cpp:942 -msgid "2.0 m" -msgstr "" - -#: src/nikonmn.cpp:943 -msgid "2.2 m" -msgstr "" - -#: src/nikonmn.cpp:944 -msgid "2.5 m" -msgstr "" - -#: src/nikonmn.cpp:945 -msgid "2.8 m" -msgstr "" - -#: src/nikonmn.cpp:946 -msgid "3.2 m" -msgstr "" - -#: src/nikonmn.cpp:947 -msgid "3.6 m" -msgstr "" - -#: src/nikonmn.cpp:948 -msgid "4.0 m" -msgstr "" - -#: src/nikonmn.cpp:949 -msgid "4.5 m" -msgstr "" - -#: src/nikonmn.cpp:950 -msgid "5.0 m" -msgstr "" - -#: src/nikonmn.cpp:951 -msgid "5.6 m" -msgstr "" - -#: src/nikonmn.cpp:952 -msgid "6.3 m" -msgstr "" - -#: src/nikonmn.cpp:953 -msgid "7.1 m" -msgstr "" - -#: src/nikonmn.cpp:954 -msgid "8.0 m" -msgstr "" - -#: src/nikonmn.cpp:955 -msgid "9.0 m" -msgstr "" - -#: src/nikonmn.cpp:956 -msgid "10.0 m" -msgstr "" - -#: src/nikonmn.cpp:957 -msgid "11.0 m" -msgstr "" - -#: src/nikonmn.cpp:958 -msgid "13.0 m" -msgstr "" - -#: src/nikonmn.cpp:959 -msgid "14.0 m" -msgstr "" - -#: src/nikonmn.cpp:960 -msgid "16.0 m" -msgstr "" - -#: src/nikonmn.cpp:961 -msgid "18.0 m" -msgstr "" - -#: src/nikonmn.cpp:962 -msgid "20.0 m" -msgstr "" - -#: src/nikonmn.cpp:969 -#, fuzzy -msgid "iTTL-BL" -msgstr "TTL" - -#: src/nikonmn.cpp:970 -#, fuzzy -msgid "iTTL" -msgstr "TTL" - -#: src/nikonmn.cpp:971 -#, fuzzy -msgid "Auto Aperture" -msgstr "Ouverture" - -#: src/nikonmn.cpp:973 -msgid "GN (distance priority)" -msgstr "" - -#: src/nikonmn.cpp:975 src/nikonmn.cpp:976 -msgid "Repeating Flash" -msgstr "" - -#: src/nikonmn.cpp:982 -#, fuzzy -msgid "Bounce Flash" -msgstr "Pas de flash" - -#: src/nikonmn.cpp:983 -msgid "Wide Flash Adapter" -msgstr "" - -#: src/nikonmn.cpp:989 -msgid "FL-GL1" -msgstr "" - -#: src/nikonmn.cpp:990 -msgid "FL-GL2" -msgstr "" - -#: src/nikonmn.cpp:991 -msgid "TN-A1" -msgstr "" - -#: src/nikonmn.cpp:992 -msgid "TN-A2" -msgstr "" - -#: src/nikonmn.cpp:996 -#, fuzzy -msgid "Amber" -msgstr "Nombre F" - -#: src/nikonmn.cpp:1002 src/nikonmn.cpp:1024 src/nikonmn.cpp:1044 -#, fuzzy -msgid "Flash Source" -msgstr "Source du fichier" - -#: src/nikonmn.cpp:1002 src/nikonmn.cpp:1024 src/nikonmn.cpp:1044 -#, fuzzy -msgid "Flash source" -msgstr "Source du fichier" - -#: src/nikonmn.cpp:1003 src/nikonmn.cpp:1025 -msgid "0x0005" -msgstr "" - -#: src/nikonmn.cpp:1004 src/nikonmn.cpp:1026 src/nikonmn.cpp:1045 -#, fuzzy -msgid "External Flash Firmware" -msgstr "Zoom flash externe" - -#: src/nikonmn.cpp:1004 src/nikonmn.cpp:1026 src/nikonmn.cpp:1045 -#, fuzzy -msgid "External flash firmware" -msgstr "Mode flash externe" - -#: src/nikonmn.cpp:1005 src/nikonmn.cpp:1027 src/nikonmn.cpp:1046 -#, fuzzy -msgid "External Flash Flags" -msgstr "Flash externe" - -#: src/nikonmn.cpp:1005 src/nikonmn.cpp:1027 src/nikonmn.cpp:1046 -#, fuzzy -msgid "External flash flags" -msgstr "Flash externe" - -#: src/nikonmn.cpp:1006 src/nikonmn.cpp:1028 src/nikonmn.cpp:1047 -#, fuzzy -msgid "Flash Focal Length" -msgstr "Longueur focale maximum" - -#: src/nikonmn.cpp:1006 src/nikonmn.cpp:1028 src/nikonmn.cpp:1047 -#, fuzzy -msgid "Flash focal length" -msgstr "Longueur focale maximum" - -#: src/nikonmn.cpp:1007 src/nikonmn.cpp:1029 src/nikonmn.cpp:1048 -msgid "Repeating Flash Rate" -msgstr "" - -#: src/nikonmn.cpp:1007 src/nikonmn.cpp:1029 src/nikonmn.cpp:1048 -#, fuzzy -msgid "Repeating flash rate" -msgstr "Renommage du fichier en" - -#: src/nikonmn.cpp:1008 src/nikonmn.cpp:1030 src/nikonmn.cpp:1049 -msgid "Repeating Flash Count" -msgstr "" - -#: src/nikonmn.cpp:1008 src/nikonmn.cpp:1030 src/nikonmn.cpp:1049 -#, fuzzy -msgid "Repeating flash count" -msgstr "Contrôle de flash manuel" - -#: src/nikonmn.cpp:1009 src/nikonmn.cpp:1031 src/nikonmn.cpp:1050 -#, fuzzy -msgid "Flash GN Distance" -msgstr "Distance de mise au point" - -#: src/nikonmn.cpp:1009 src/nikonmn.cpp:1031 src/nikonmn.cpp:1050 -#, fuzzy -msgid "Flash GN distance" -msgstr "Distance de mise au point" - -#: src/nikonmn.cpp:1010 -msgid "Flash Group A Control Mode" -msgstr "" - -#: src/nikonmn.cpp:1010 -msgid "Flash group a control mode" -msgstr "" - -#: src/nikonmn.cpp:1011 -msgid "Flash Group B Control Mode" -msgstr "" - -#: src/nikonmn.cpp:1011 -msgid "Flash group b control mode" -msgstr "" - -#: src/nikonmn.cpp:1051 -#, fuzzy -msgid "Flash Color Filter" -msgstr "Filtre couleur" - -#: src/nikonmn.cpp:1051 -#, fuzzy -msgid "Flash color filter" -msgstr "Filtre couleur" - -#: src/nikonmn.cpp:1064 src/nikonmn.cpp:1077 src/nikonmn.cpp:1137 -#: src/nikonmn.cpp:1197 src/nikonmn.cpp:1233 src/pentaxmn.cpp:1042 -#: src/pentaxmn.cpp:1043 -#, fuzzy -msgid "Shutter count" -msgstr "Priorité obturation" - -#: src/nikonmn.cpp:1066 -#, fuzzy -msgid "Unknown Nikon Shot Info D80 Tag" -msgstr "Marqueur info image Canon inconnu" - -#: src/nikonmn.cpp:1078 src/sonymn.cpp:408 src/sonymn.cpp:409 -#, fuzzy -msgid "Flash Level" -msgstr "Matériel du flash" - -#: src/nikonmn.cpp:1078 -#, fuzzy -msgid "Flash level" -msgstr "Matériel du flash" - -#: src/nikonmn.cpp:1080 -#, fuzzy -msgid "Unknown Nikon Shot Info D40 Tag" -msgstr "Marqueur info image Canon inconnu" - -#: src/nikonmn.cpp:1090 src/nikonmn.cpp:1150 -msgid "0" -msgstr "" - -#: src/nikonmn.cpp:1091 src/nikonmn.cpp:1159 -#, fuzzy -msgid "+1" -msgstr "10s" - -#: src/nikonmn.cpp:1092 src/nikonmn.cpp:1160 -msgid "+2" -msgstr "" - -#: src/nikonmn.cpp:1093 src/nikonmn.cpp:1161 -msgid "+4" -msgstr "" - -#: src/nikonmn.cpp:1094 src/nikonmn.cpp:1162 -msgid "+8" -msgstr "" - -#: src/nikonmn.cpp:1095 src/nikonmn.cpp:1163 -#, fuzzy -msgid "+16" -msgstr "10s" - -#: src/nikonmn.cpp:1096 src/nikonmn.cpp:1164 -#, fuzzy -msgid "-16" -msgstr "10s" - -#: src/nikonmn.cpp:1097 src/nikonmn.cpp:1165 -msgid "-8" -msgstr "" - -#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1166 -msgid "-4" -msgstr "" - -#: src/nikonmn.cpp:1099 src/nikonmn.cpp:1167 -msgid "-2" -msgstr "" - -#: src/nikonmn.cpp:1100 src/nikonmn.cpp:1168 -#, fuzzy -msgid "-1" -msgstr "10s" - -#: src/nikonmn.cpp:1101 src/nikonmn.cpp:1169 -#, fuzzy -msgid "+17" -msgstr "10s" - -#: src/nikonmn.cpp:1102 src/nikonmn.cpp:1170 -#, fuzzy -msgid "-17" -msgstr "10s" - -#: src/nikonmn.cpp:1103 src/nikonmn.cpp:1171 -msgid "+9" -msgstr "" - -#: src/nikonmn.cpp:1104 src/nikonmn.cpp:1172 -#, fuzzy -msgid "+18" -msgstr "10s" - -#: src/nikonmn.cpp:1105 src/nikonmn.cpp:1173 -#, fuzzy -msgid "-18" -msgstr "10s" - -#: src/nikonmn.cpp:1106 src/nikonmn.cpp:1174 -msgid "-9" -msgstr "" - -#: src/nikonmn.cpp:1107 src/nikonmn.cpp:1175 -#, fuzzy -msgid "+19" -msgstr "10s" - -#: src/nikonmn.cpp:1108 src/nikonmn.cpp:1176 -#, fuzzy -msgid "-19" -msgstr "10s" - -#: src/nikonmn.cpp:1109 src/nikonmn.cpp:1177 -msgid "+5" -msgstr "" - -#: src/nikonmn.cpp:1110 src/nikonmn.cpp:1178 -#, fuzzy -msgid "+10" -msgstr "10s" - -#: src/nikonmn.cpp:1111 src/nikonmn.cpp:1179 -#, fuzzy -msgid "+20" -msgstr "10s" - -#: src/nikonmn.cpp:1112 src/nikonmn.cpp:1180 -#, fuzzy -msgid "-20" -msgstr "10s" - -#: src/nikonmn.cpp:1113 src/nikonmn.cpp:1181 -#, fuzzy -msgid "-10" -msgstr "10s" - -#: src/nikonmn.cpp:1114 src/nikonmn.cpp:1182 -msgid "-5" -msgstr "" - -#: src/nikonmn.cpp:1115 src/nikonmn.cpp:1183 -#, fuzzy -msgid "+11" -msgstr "10s" - -#: src/nikonmn.cpp:1116 src/nikonmn.cpp:1184 -#, fuzzy -msgid "-11" -msgstr "10s" - -#: src/nikonmn.cpp:1117 src/nikonmn.cpp:1185 -msgid "+3" -msgstr "" - -#: src/nikonmn.cpp:1118 src/nikonmn.cpp:1186 -msgid "+6" -msgstr "" - -#: src/nikonmn.cpp:1119 src/nikonmn.cpp:1187 -#, fuzzy -msgid "+12" -msgstr "10s" - -#: src/nikonmn.cpp:1120 src/nikonmn.cpp:1188 -#, fuzzy -msgid "-12" -msgstr "10s" - -#: src/nikonmn.cpp:1121 src/nikonmn.cpp:1189 -msgid "-6" -msgstr "" - -#: src/nikonmn.cpp:1122 src/nikonmn.cpp:1190 -msgid "-3" -msgstr "" - -#: src/nikonmn.cpp:1123 src/nikonmn.cpp:1151 -#, fuzzy -msgid "+13" -msgstr "10s" - -#: src/nikonmn.cpp:1124 src/nikonmn.cpp:1152 -#, fuzzy -msgid "-13" -msgstr "10s" - -#: src/nikonmn.cpp:1125 src/nikonmn.cpp:1153 -msgid "+7" -msgstr "" - -#: src/nikonmn.cpp:1126 src/nikonmn.cpp:1154 -#, fuzzy -msgid "+14" -msgstr "10s" - -#: src/nikonmn.cpp:1127 src/nikonmn.cpp:1155 -#, fuzzy -msgid "-14" -msgstr "10s" - -#: src/nikonmn.cpp:1128 src/nikonmn.cpp:1156 -msgid "-7" -msgstr "" - -#: src/nikonmn.cpp:1129 src/nikonmn.cpp:1157 -#, fuzzy -msgid "+15" -msgstr "10s" - -#: src/nikonmn.cpp:1130 src/nikonmn.cpp:1158 -#, fuzzy -msgid "-15" -msgstr "10s" - -#: src/nikonmn.cpp:1138 src/nikonmn.cpp:1198 -#, fuzzy -msgid "AF Fine Tune Adj" -msgstr "Point AF utilisé" - -#: src/nikonmn.cpp:1138 src/nikonmn.cpp:1198 -#, fuzzy -msgid "AF fine tune adj" -msgstr "Point AF utilisé" - -#: src/nikonmn.cpp:1140 -#, fuzzy -msgid "Unknown Nikon Shot Info D300 (a) Tag" -msgstr "Marqueur info image Canon inconnu" - -#: src/nikonmn.cpp:1200 -#, fuzzy -msgid "Unknown Nikon Shot Info D300 (b) Tag" -msgstr "Marqueur info image Canon inconnu" - -#: src/nikonmn.cpp:1213 -#, fuzzy -msgid "On (3)" -msgstr "Activé" - -#: src/nikonmn.cpp:1226 -#, fuzzy -msgid "Shutter Count 1" -msgstr "Priorité obturation" - -#: src/nikonmn.cpp:1226 -#, fuzzy -msgid "Shutter count 1" -msgstr "Priorité obturation" - -#: src/nikonmn.cpp:1229 -#, fuzzy -msgid "Vibration Reduction 1" -msgstr "Réduction du bruit" - -#: src/nikonmn.cpp:1229 -#, fuzzy -msgid "Vibration reduction 1" -msgstr "Réduction du bruit" - -#: src/nikonmn.cpp:1230 -#, fuzzy -msgid "Shutter Count 2" -msgstr "Priorité obturation" - -#: src/nikonmn.cpp:1230 -#, fuzzy -msgid "Shutter count 2" -msgstr "Priorité obturation" - -#: src/nikonmn.cpp:1231 -#, fuzzy -msgid "Vibration Reduction 2" -msgstr "Réduction du bruit" - -#: src/nikonmn.cpp:1231 -#, fuzzy -msgid "Vibration reduction 2" -msgstr "Réduction du bruit" - -#: src/nikonmn.cpp:1235 -#, fuzzy -msgid "Unknown Nikon Shot Info Tag" -msgstr "Marqueur info image Canon inconnu" - -#: src/nikonmn.cpp:1246 -#, fuzzy -msgid "WB RBGG Levels" -msgstr "Niveau de noir" - -#: src/nikonmn.cpp:1246 -#, fuzzy -msgid "WB RBGG levels" -msgstr "Niveau de noir" - -#: src/nikonmn.cpp:1248 -#, fuzzy -msgid "Unknown Nikon Color Balance 1 Tag" -msgstr "Balance des couleurs 1" - -#: src/nikonmn.cpp:1259 src/nikonmn.cpp:1272 src/nikonmn.cpp:1285 -#, fuzzy -msgid "WB RGGB Levels" -msgstr "Niveau de noir" - -#: src/nikonmn.cpp:1259 src/nikonmn.cpp:1272 src/nikonmn.cpp:1285 -#, fuzzy -msgid "WB RGGB levels" -msgstr "Niveau de noir" - -#: src/nikonmn.cpp:1261 -#, fuzzy -msgid "Unknown Nikon Color Balance 2 Tag" -msgstr "Balance des couleurs 1" - -#: src/nikonmn.cpp:1274 -#, fuzzy -msgid "Unknown Nikon Color Balance 2a Tag" -msgstr "Balance des couleurs 1" - -#: src/nikonmn.cpp:1287 -#, fuzzy -msgid "Unknown Nikon Color Balance 2b Tag" -msgstr "Balance des couleurs 1" - -#: src/nikonmn.cpp:1298 -#, fuzzy -msgid "WB RGBG Levels" -msgstr "Niveau de noir" - -#: src/nikonmn.cpp:1298 -#, fuzzy -msgid "WB RGBG levels" -msgstr "Niveau de noir" - -#: src/nikonmn.cpp:1300 -#, fuzzy -msgid "Unknown Nikon Color Balance 3 Tag" -msgstr "Marqueur panorama Canon inconnu" - -#: src/nikonmn.cpp:1311 -#, fuzzy -msgid "WB GRBG Levels" -msgstr "Niveau de noir" - -#: src/nikonmn.cpp:1311 -#, fuzzy -msgid "WB GRBG levels" -msgstr "Niveau de noir" - -#: src/nikonmn.cpp:1313 -#, fuzzy -msgid "Unknown Nikon Color Balance 4 Tag" -msgstr "Marqueur panorama Canon inconnu" - -#: src/nikonmn.cpp:1324 src/nikonmn.cpp:1348 src/nikonmn.cpp:1373 -#, fuzzy -msgid "Lens ID Number" -msgstr "Numéro de série" - -#: src/nikonmn.cpp:1324 src/nikonmn.cpp:1348 src/nikonmn.cpp:1373 -#, fuzzy -msgid "Lens ID number" -msgstr "Numéro de série de l'appareil photo" - -#: src/nikonmn.cpp:1325 src/nikonmn.cpp:1349 src/nikonmn.cpp:1374 -#, fuzzy -msgid "Lens F-Stops" -msgstr "Type d'objectif" - -#: src/nikonmn.cpp:1325 src/nikonmn.cpp:1349 src/nikonmn.cpp:1374 -#, fuzzy -msgid "Lens F-stops" -msgstr "Type d'objectif" - -#: src/nikonmn.cpp:1326 src/nikonmn.cpp:1350 src/nikonmn.cpp:1375 -#: src/olympusmn.cpp:751 -#, fuzzy -msgid "Min Focal Length" -msgstr "Longueur focale minimale" - -#: src/nikonmn.cpp:1326 src/nikonmn.cpp:1350 src/nikonmn.cpp:1375 -#: src/olympusmn.cpp:751 -#, fuzzy -msgid "Min focal length" -msgstr "Longueur focale minimale" - -#: src/nikonmn.cpp:1327 src/nikonmn.cpp:1351 src/nikonmn.cpp:1376 -#: src/olympusmn.cpp:752 -#, fuzzy -msgid "Max Focal Length" -msgstr "Longueur focale maximum" - -#: src/nikonmn.cpp:1327 src/nikonmn.cpp:1351 src/nikonmn.cpp:1376 -#: src/olympusmn.cpp:752 -#, fuzzy -msgid "Max focal length" -msgstr "Longueur focale maximum" - -#: src/nikonmn.cpp:1328 src/nikonmn.cpp:1352 src/nikonmn.cpp:1377 -#: src/olympusmn.cpp:749 -#, fuzzy -msgid "Max Aperture At Min Focal" -msgstr "Ouverture maximum à focal minimum" - -#: src/nikonmn.cpp:1328 src/nikonmn.cpp:1352 src/olympusmn.cpp:749 -#, fuzzy -msgid "Max aperture at min focal" -msgstr "Ouverture maximum à focal minimum" - -#: src/nikonmn.cpp:1329 src/nikonmn.cpp:1353 src/nikonmn.cpp:1378 -#: src/olympusmn.cpp:750 -#, fuzzy -msgid "Max Aperture At Max Focal" -msgstr "Ouverture maximum à focal maximum" - -#: src/nikonmn.cpp:1329 src/nikonmn.cpp:1353 src/olympusmn.cpp:750 -#, fuzzy -msgid "Max aperture at max focal" -msgstr "Ouverture maximum à focal maximum" - -#: src/nikonmn.cpp:1330 src/nikonmn.cpp:1354 src/nikonmn.cpp:1379 -#, fuzzy -msgid "MCU Version" -msgstr "Version d'ARM" - -#: src/nikonmn.cpp:1330 src/nikonmn.cpp:1354 src/nikonmn.cpp:1379 -#, fuzzy -msgid "MCU version" -msgstr "Version d'ARM" - -#: src/nikonmn.cpp:1332 -#, fuzzy -msgid "Unknown Nikon Lens Data 1 Tag" -msgstr "Marqueur 1 de note du fabriquant Nikon inconnu" - -#: src/nikonmn.cpp:1343 src/nikonmn.cpp:1368 -#, fuzzy -msgid "Exit Pupil Position" -msgstr "Position mise au point" - -#: src/nikonmn.cpp:1343 src/nikonmn.cpp:1368 -#, fuzzy -msgid "Exit pupil position" -msgstr "Position mise au point" - -#: src/nikonmn.cpp:1344 src/nikonmn.cpp:1369 -#, fuzzy -msgid "AF Aperture" -msgstr "Ouverture" - -#: src/nikonmn.cpp:1344 src/nikonmn.cpp:1369 -#, fuzzy -msgid "AF aperture" -msgstr "Ouverture" - -#: src/nikonmn.cpp:1355 src/nikonmn.cpp:1380 -#, fuzzy -msgid "Effective Max Aperture" -msgstr "Ouverture maximale" - -#: src/nikonmn.cpp:1355 src/nikonmn.cpp:1380 -#, fuzzy -msgid "Effective max aperture" -msgstr "Ouverture maximale" - -#: src/nikonmn.cpp:1357 -#, fuzzy -msgid "Unknown Nikon Lens Data 2 Tag" -msgstr "Marqueur 1 de note du fabriquant Nikon inconnu" - -#: src/nikonmn.cpp:1377 -#, fuzzy -msgid "Max aperture at min focal length" -msgstr "Ouverture maximum à focal minimum" - -#: src/nikonmn.cpp:1378 -#, fuzzy -msgid "Max aperture at max focal length" -msgstr "Ouverture maximum à focal maximum" - -#: src/nikonmn.cpp:1382 -#, fuzzy -msgid "Unknown Nikon Lens Data 3 Tag" -msgstr "Marqueur 1 de note du fabriquant Nikon inconnu" - -#: src/nikonmn.cpp:1562 -msgid "Closest subject" -msgstr "Sujet proche" - -#: src/nikonmn.cpp:1563 -msgid "Group dynamic-AF" -msgstr "" - -#: src/nikonmn.cpp:1586 src/tags.cpp:240 -msgid "none" -msgstr "Aucun" - -#: src/nikonmn.cpp:1596 -msgid "used" -msgstr "utilisé" - -#: src/nikonmn.cpp:1622 -#, fuzzy -msgid "All 11 Points" -msgstr "Points AF" - -#: src/nikonmn.cpp:1637 src/nikonmn.cpp:1638 src/pentaxmn.cpp:533 -#: src/pentaxmn.cpp:537 -#, fuzzy -msgid "Single-frame" -msgstr "Zone unique" - -#: src/olympusmn.cpp:71 -msgid "Standard Quality (SQ)" -msgstr "Qualité standard (SQ)" - -#: src/olympusmn.cpp:72 -msgid "High Quality (HQ)" -msgstr "Qualité haute (HQ)" - -#: src/olympusmn.cpp:73 -msgid "Super High Quality (SHQ)" -msgstr "Qualité très haute (HQ)" - -#: src/olympusmn.cpp:88 -msgid "On (preset)" -msgstr "" - -#: src/olympusmn.cpp:95 src/pentaxmn.cpp:474 -msgid "Sport" -msgstr "Sport" - -#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 -#, fuzzy -msgid "Landscape+Portrait" -msgstr "Paysage" - -#: src/olympusmn.cpp:100 -#, fuzzy -msgid "Self Portrait" -msgstr "Portrait" - -#: src/olympusmn.cpp:102 -#, fuzzy -msgid "2 in 1" -msgstr "Activé" - -#: src/olympusmn.cpp:105 -#, fuzzy -msgid "Night+Portrait" -msgstr "Portrait de nuit" - -#: src/olympusmn.cpp:111 src/panasonicmn.cpp:120 src/pentaxmn.cpp:486 -msgid "Food" -msgstr "Nourriture" - -#: src/olympusmn.cpp:112 -#, fuzzy -msgid "Documents" -msgstr "Nom du document" - -#: src/olympusmn.cpp:114 -#, fuzzy -msgid "Shoot & Select" -msgstr "Effet photo" - -#: src/olympusmn.cpp:115 -#, fuzzy -msgid "Beach & Snow" -msgstr "Surf et Neige" - -#: src/olympusmn.cpp:116 -#, fuzzy -msgid "Self Portrait+Timer" -msgstr "Retardateur" - -#: src/olympusmn.cpp:117 -#, fuzzy -msgid "Candle" -msgstr "Lumière de bougie" - -#: src/olympusmn.cpp:118 -#, fuzzy -msgid "Available Light" -msgstr "Longueur focale maximum" - -#: src/olympusmn.cpp:119 -msgid "Behind Glass" -msgstr "" - -#: src/olympusmn.cpp:120 -#, fuzzy -msgid "My Mode" -msgstr "Mode prise de vue" - -#: src/olympusmn.cpp:121 src/panasonicmn.cpp:131 src/pentaxmn.cpp:483 -#: src/sonymn.cpp:127 -msgid "Pet" -msgstr "Animaux" - -#: src/olympusmn.cpp:122 -#, fuzzy -msgid "Underwater Wide1" -msgstr "Sous marin" - -#: src/olympusmn.cpp:123 -#, fuzzy -msgid "Underwater Macro" -msgstr "Sous marin" - -#: src/olympusmn.cpp:124 -#, fuzzy -msgid "Shoot & Select1" -msgstr "Effet photo" - -#: src/olympusmn.cpp:125 -#, fuzzy -msgid "Shoot & Select2" -msgstr "Effet photo" - -#: src/olympusmn.cpp:127 -#, fuzzy -msgid "Digital Image Stabilization" -msgstr "Stabilisation de l'image" - -#: src/olympusmn.cpp:128 -#, fuzzy -msgid "Auction" -msgstr "Automatique" - -#: src/olympusmn.cpp:131 -#, fuzzy -msgid "Underwater Wide2" -msgstr "Sous marin" - -#: src/olympusmn.cpp:133 -msgid "Children" -msgstr "" - -#: src/olympusmn.cpp:135 -#, fuzzy -msgid "Nature Macro" -msgstr "Couleur naturelle" - -#: src/olympusmn.cpp:136 -#, fuzzy -msgid "Underwater Snapshot" -msgstr "Sous marin" - -#: src/olympusmn.cpp:137 -#, fuzzy -msgid "Shooting Guide" -msgstr "Mode de prise de vue" - -#: src/olympusmn.cpp:145 -msgid "Internal + External" -msgstr "Interne + Externe" - -#: src/olympusmn.cpp:176 -msgid "Interlaced" -msgstr "Entrelacé" - -#: src/olympusmn.cpp:177 -msgid "Progressive" -msgstr "Progressif" - -#: src/olympusmn.cpp:188 -#, fuzzy -msgid "Thumbnail Image" -msgstr "Miniature" - -#: src/olympusmn.cpp:189 -#, fuzzy -msgid "Thumbnail image" -msgstr "Miniature" - -#: src/olympusmn.cpp:192 src/olympusmn.cpp:744 src/olympusmn.cpp:1027 -#, fuzzy -msgid "Body Firmware Version" -msgstr "Version du microcode" - -#: src/olympusmn.cpp:193 src/olympusmn.cpp:744 src/olympusmn.cpp:1027 -#, fuzzy -msgid "Body firmware version" -msgstr "Version de microcode" - -#: src/olympusmn.cpp:195 -msgid "Special Mode" -msgstr "Mode spécial" - -#: src/olympusmn.cpp:196 -msgid "Picture taking mode" -msgstr "Mode de prise de vue" - -#: src/olympusmn.cpp:204 -msgid "Black & White Mode" -msgstr "Mode noir & blanc" - -#: src/olympusmn.cpp:205 -msgid "Black and white mode" -msgstr "Mode noir et blanc" - -#: src/olympusmn.cpp:208 -msgid "Digital zoom ratio" -msgstr "Rapport de zoom numérique" - -#: src/olympusmn.cpp:210 src/olympusmn.cpp:743 -msgid "Focal Plane Diagonal" -msgstr "Diagonal du plan focal" - -#: src/olympusmn.cpp:211 src/olympusmn.cpp:743 -msgid "Focal plane diagonal" -msgstr "Diagonal du plan focal" - -#: src/olympusmn.cpp:213 -msgid "Lens Distortion Parameters" -msgstr "Paramètre de distorsion de l'objectif" - -#: src/olympusmn.cpp:214 -msgid "Lens distortion parameters" -msgstr "Paramètre de distorsion de l'objectif" - -#: src/olympusmn.cpp:216 src/olympusmn.cpp:740 -#, fuzzy -msgid "Camera Type" -msgstr "Marque de l'appareil" - -#: src/olympusmn.cpp:217 src/olympusmn.cpp:740 -#, fuzzy -msgid "Camera type" -msgstr "Marque de l'appareil" - -#: src/olympusmn.cpp:220 -msgid "ASCII format data such as [PictureInfo]" -msgstr "Format de données ASCII comme [PictureInfo]" - -#: src/olympusmn.cpp:222 -msgid "Camera ID" -msgstr "Identifiant appareil photo" - -#: src/olympusmn.cpp:223 -msgid "Camera ID data" -msgstr "Données de l'identifiant appareil photo" - -#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:519 -#: src/sigmamn.cpp:119 src/sigmamn.cpp:120 src/tags.cpp:538 -msgid "Software" -msgstr "Logiciel" - -#: src/olympusmn.cpp:234 src/panasonicmn.cpp:348 src/sonymn.cpp:314 -#, fuzzy -msgid "Preview Image" -msgstr "Aperçu embarqué" - -#: src/olympusmn.cpp:235 src/panasonicmn.cpp:348 -#, fuzzy -msgid "Preview image" -msgstr "Aperçu embarqué" - -#: src/olympusmn.cpp:237 -#, fuzzy -msgid "Pre Capture Frames" -msgstr "Nom du propriétaire" - -#: src/olympusmn.cpp:238 -#, fuzzy -msgid "Pre-capture frames" -msgstr "Nom du propriétaire" - -#: src/olympusmn.cpp:240 -#, fuzzy -msgid "White Board" -msgstr "Balance des blancs" - -#: src/olympusmn.cpp:241 -#, fuzzy -msgid "White board" -msgstr "Balance des blancs" - -#: src/olympusmn.cpp:243 -msgid "One Touch WB" -msgstr "Balance des blancs en une touche" - -#: src/olympusmn.cpp:244 -msgid "One touch white balance" -msgstr "Balance des blancs en une touche" - -#: src/olympusmn.cpp:246 src/olympusmn.cpp:678 -#, fuzzy -msgid "White Balance Bracket" -msgstr "Biais de balance des blancs" - -#: src/olympusmn.cpp:247 src/olympusmn.cpp:678 -#, fuzzy -msgid "White balance bracket" -msgstr "Biais de balance des blancs" - -#: src/olympusmn.cpp:255 src/sigmamn.cpp:116 src/sigmamn.cpp:117 -msgid "Firmware" -msgstr "Microcode" - -#: src/olympusmn.cpp:256 -#, fuzzy -msgid "Firmwarer" -msgstr "Microcode" - -#: src/olympusmn.cpp:261 -#, fuzzy -msgid "Data Dump 1" -msgstr "Formulaire de donné" - -#: src/olympusmn.cpp:262 -msgid "Various camera settings 1" -msgstr "Divers réglages de l'appareil photo 1" - -#: src/olympusmn.cpp:264 -#, fuzzy -msgid "Data Dump 2" -msgstr "Formulaire de donné" - -#: src/olympusmn.cpp:265 -msgid "Various camera settings 2" -msgstr "Divers réglages de l'appareil photo 1" - -#: src/olympusmn.cpp:268 -msgid "Shutter speed value" -msgstr "Valeur de vitesse d'obturation" - -#: src/olympusmn.cpp:271 -msgid "ISO speed value" -msgstr "Valeur de vitesse ISO" - -#: src/olympusmn.cpp:274 -msgid "Aperture value" -msgstr "Valeur d'ouverture" - -#: src/olympusmn.cpp:277 -msgid "Brightness value" -msgstr "Valeur de luminosité" - -#: src/olympusmn.cpp:285 -msgid "Bracket" -msgstr "Bracket" - -#: src/olympusmn.cpp:286 -msgid "Exposure compensation value" -msgstr "Valeur de compensation d'exposition" - -#: src/olympusmn.cpp:288 src/olympusmn.cpp:1015 -msgid "Sensor Temperature" -msgstr "Température de la sonde" - -#: src/olympusmn.cpp:289 src/olympusmn.cpp:1015 -msgid "Sensor temperature" -msgstr "Température de la sonde" - -#: src/olympusmn.cpp:291 -msgid "Lens Temperature" -msgstr "Température de l'objectif" - -#: src/olympusmn.cpp:292 -msgid "Lens temperature" -msgstr "Température de l'objectif" - -#: src/olympusmn.cpp:294 -#, fuzzy -msgid "Light Condition" -msgstr "Fonctions personnalisées" - -#: src/olympusmn.cpp:295 -#, fuzzy -msgid "Light condition" -msgstr "Fonctions personnalisées" - -#: src/olympusmn.cpp:297 -#, fuzzy -msgid "Focus Range" -msgstr "Zone mise au point" - -#: src/olympusmn.cpp:298 -#, fuzzy -msgid "Focus range" -msgstr "Zone mise au point" - -#: src/olympusmn.cpp:306 -msgid "Zoom" -msgstr "Zoom" - -#: src/olympusmn.cpp:307 src/olympusmn.cpp:1003 -#, fuzzy -msgid "Zoom step count" -msgstr "Comptage d'image" - -#: src/olympusmn.cpp:309 -msgid "Macro Focus" -msgstr "Mise au point macro" - -#: src/olympusmn.cpp:310 -#, fuzzy -msgid "Macro focus step count" -msgstr "Position mise au point" - -#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 -msgid "Sharpness Factor" -msgstr "Facteur de netteté" - -#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 -msgid "Sharpness factor" -msgstr "Facteur de netteté" - -#: src/olympusmn.cpp:315 -#, fuzzy -msgid "Flash Charge Level" -msgstr "Matériel du flash" - -#: src/olympusmn.cpp:316 -#, fuzzy -msgid "Flash charge level" -msgstr "Matériel du flash" - -#: src/olympusmn.cpp:318 src/olympusmn.cpp:962 -msgid "Color Matrix" -msgstr "Matrice des couleurs" - -#: src/olympusmn.cpp:319 src/olympusmn.cpp:962 -msgid "Color matrix" -msgstr "Matrice des couleurs" - -#: src/olympusmn.cpp:321 -msgid "BlackLevel" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:322 src/olympusmn.cpp:967 -msgid "Black level" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:331 -msgid "White balance mode" -msgstr "Mode balance des blancs" - -#: src/olympusmn.cpp:336 src/panasonicmn.cpp:342 -msgid "Red Balance" -msgstr "Balance des rouges" - -#: src/olympusmn.cpp:337 src/pentaxmn.cpp:938 -msgid "Red balance" -msgstr "Balance des rouges" - -#: src/olympusmn.cpp:339 src/panasonicmn.cpp:343 -msgid "Blue Balance" -msgstr "Balance des bleus" - -#: src/olympusmn.cpp:340 src/panasonicmn.cpp:343 src/pentaxmn.cpp:935 -msgid "Blue balance" -msgstr "Balance des bleus" - -#: src/olympusmn.cpp:342 -#, fuzzy -msgid "Color Matrix Number" -msgstr "Matrice des couleurs" - -#: src/olympusmn.cpp:343 -#, fuzzy -msgid "Color matrix mumber" -msgstr "Matrice des couleurs" - -#: src/olympusmn.cpp:345 -msgid "Serial Number 2" -msgstr "Numéro de série 2" - -#: src/olympusmn.cpp:346 -msgid "Serial number 2" -msgstr "Numéro de série 2" - -#: src/olympusmn.cpp:373 src/olympusmn.cpp:671 src/pentaxmn.cpp:1028 -#: src/pentaxmn.cpp:1029 -msgid "Flash exposure compensation" -msgstr "Compensation d'exposition du flash" - -#: src/olympusmn.cpp:381 src/olympusmn.cpp:1011 -#, fuzzy -msgid "External Flash Bounce" -msgstr "Mode flash externe" - -#: src/olympusmn.cpp:382 src/olympusmn.cpp:1011 -#, fuzzy -msgid "External flash bounce" -msgstr "Mode flash externe" - -#: src/olympusmn.cpp:384 src/olympusmn.cpp:1012 -msgid "External Flash Zoom" -msgstr "Zoom flash externe" - -#: src/olympusmn.cpp:385 src/olympusmn.cpp:1012 -msgid "External flash zoom" -msgstr "Zoom flash externe" - -#: src/olympusmn.cpp:387 -msgid "External Flash Mode" -msgstr "Mode flash externe" - -#: src/olympusmn.cpp:388 -msgid "External flash mode" -msgstr "Mode flash externe" - -#: src/olympusmn.cpp:396 -msgid "Color Control" -msgstr "Contrôle des couleurs" - -#: src/olympusmn.cpp:397 -msgid "Color control" -msgstr "Contrôle des couleurs" - -#: src/olympusmn.cpp:399 -msgid "ValidBits" -msgstr "" - -#: src/olympusmn.cpp:400 src/olympusmn.cpp:969 -msgid "Valid bits" -msgstr "" - -#: src/olympusmn.cpp:402 -#, fuzzy -msgid "CoringFilter" -msgstr "Filtre couleur" - -#: src/olympusmn.cpp:403 src/olympusmn.cpp:965 src/olympusmn.cpp:1067 -#, fuzzy -msgid "Coring filter" -msgstr "Filtre couleur" - -#: src/olympusmn.cpp:423 -msgid "Compression Ratio" -msgstr "Rapport de compression" - -#: src/olympusmn.cpp:424 -msgid "Compression ratio" -msgstr "Rapport de compression" - -#: src/olympusmn.cpp:427 -msgid "Preview image embedded" -msgstr "Aperçu embarqué" - -#: src/olympusmn.cpp:430 -msgid "Offset of the preview image" -msgstr "Décalage de l'aperçu" - -#: src/olympusmn.cpp:433 -msgid "Size of the preview image" -msgstr "Taille de l'aperçu" - -#: src/olympusmn.cpp:435 -#, fuzzy -msgid "CCD Scan Mode" -msgstr "Mode scène" - -#: src/olympusmn.cpp:436 -#, fuzzy -msgid "CCD scan mode" -msgstr "Mode scène" - -#: src/olympusmn.cpp:441 -#, fuzzy -msgid "Infinity Lens Step" -msgstr "Infinie" - -#: src/olympusmn.cpp:442 -#, fuzzy -msgid "Infinity lens step" -msgstr "Infinie" - -#: src/olympusmn.cpp:444 -#, fuzzy -msgid "Near Lens Step" -msgstr "Type d'objectif" - -#: src/olympusmn.cpp:445 -msgid "Near lens step" -msgstr "" - -#: src/olympusmn.cpp:447 -msgid "Equipment Info" -msgstr "Informations équipement" - -#: src/olympusmn.cpp:448 -#, fuzzy -msgid "Camera equipment sub-IFD" -msgstr "Informations équipement de l'appareil" - -#: src/olympusmn.cpp:451 -#, fuzzy -msgid "Camera Settings sub-IFD" -msgstr "Réglage appareil photo (7D)" - -#: src/olympusmn.cpp:453 -#, fuzzy -msgid "Raw Development" -msgstr "Version des Notes du fabriquant" - -#: src/olympusmn.cpp:454 -#, fuzzy -msgid "Raw development sub-IFD" -msgstr "Version des Notes du fabriquant" - -#: src/olympusmn.cpp:456 -#, fuzzy -msgid "Raw Development 2" -msgstr "Version des Notes du fabriquant" - -#: src/olympusmn.cpp:457 -#, fuzzy -msgid "Raw development 2 sub-IFD" -msgstr "Version des Notes du fabriquant" - -#: src/olympusmn.cpp:460 -#, fuzzy -msgid "Image processing sub-IFD" -msgstr " Traitement d'image" - -#: src/olympusmn.cpp:462 -msgid "Focus Info" -msgstr "Informations mise au point" - -#: src/olympusmn.cpp:463 -#, fuzzy -msgid "Focus sub-IFD" -msgstr "Informations mise au point" - -#: src/olympusmn.cpp:465 -msgid "Raw Info" -msgstr "Informations brutes" - -#: src/olympusmn.cpp:466 -#, fuzzy -msgid "Raw sub-IFD" -msgstr "Sous-IFD" - -#: src/olympusmn.cpp:470 -msgid "Unknown OlympusMakerNote tag" -msgstr "Marqueur de note du fabriquant Olympus inconnu" - -#: src/olympusmn.cpp:486 -#, fuzzy -msgid "Program-shift" -msgstr "Logiciel" - -#: src/olympusmn.cpp:491 -#, fuzzy -msgid "Center-weighted average" -msgstr "Moyenne pondérée au centre" - -#: src/olympusmn.cpp:493 -msgid "ESP" -msgstr "" - -#: src/olympusmn.cpp:494 -#, fuzzy -msgid "Pattern+AF" -msgstr "Motif CFA" - -#: src/olympusmn.cpp:495 -#, fuzzy -msgid "Spot+Highlight control" -msgstr "Contrôle des couleurs" - -#: src/olympusmn.cpp:496 -#, fuzzy -msgid "Spot+Shadow control" -msgstr "Contrôle des couleurs" - -#: src/olympusmn.cpp:508 src/olympusmn.cpp:1369 -#, fuzzy -msgid "Single AF" -msgstr "Simple" - -#: src/olympusmn.cpp:509 src/olympusmn.cpp:1370 -msgid "Sequential shooting AF" -msgstr "" - -#: src/olympusmn.cpp:511 src/olympusmn.cpp:1372 src/sonymn.cpp:187 -#, fuzzy -msgid "Multi AF" -msgstr "AF automatique" - -#: src/olympusmn.cpp:517 -#, fuzzy -msgid "AF Not Used" -msgstr "Point AF utilisé" - -#: src/olympusmn.cpp:518 -#, fuzzy -msgid "AF Used" -msgstr "Point AF utilisé" - -#: src/olympusmn.cpp:523 -#, fuzzy -msgid "Not Ready" -msgstr "Non utilisé" - -#: src/olympusmn.cpp:524 -#, fuzzy -msgid "Ready" -msgstr "Réduction yeux rouges" - -#: src/olympusmn.cpp:531 -#, fuzzy -msgid "Fill-in" -msgstr "Nom du fichier" - -#: src/olympusmn.cpp:533 -#, fuzzy -msgid "Slow-sync" -msgstr "Synchro lente" - -#: src/olympusmn.cpp:534 -#, fuzzy -msgid "Forced On" -msgstr "Fluorescent" - -#: src/olympusmn.cpp:535 -msgid "2nd Curtain" -msgstr "" - -#: src/olympusmn.cpp:541 -msgid "Channel 1, Low" -msgstr "" - -#: src/olympusmn.cpp:542 -msgid "Channel 2, Low" -msgstr "" - -#: src/olympusmn.cpp:543 -msgid "Channel 3, Low" -msgstr "" - -#: src/olympusmn.cpp:544 -msgid "Channel 4, Low" -msgstr "" - -#: src/olympusmn.cpp:545 -msgid "Channel 1, Mid" -msgstr "" - -#: src/olympusmn.cpp:546 -msgid "Channel 2, Mid" -msgstr "" - -#: src/olympusmn.cpp:547 -msgid "Channel 3, Mid" -msgstr "" - -#: src/olympusmn.cpp:548 -msgid "Channel 4, Mid" -msgstr "" - -#: src/olympusmn.cpp:549 -msgid "Channel 1, High" -msgstr "" - -#: src/olympusmn.cpp:550 -msgid "Channel 2, High" -msgstr "" - -#: src/olympusmn.cpp:551 -msgid "Channel 3, High" -msgstr "" - -#: src/olympusmn.cpp:552 -msgid "Channel 4, High" -msgstr "" - -#: src/olympusmn.cpp:566 -#, fuzzy -msgid "7500K (Fine Weather with Shade)" -msgstr "Ensoleillé" - -#: src/olympusmn.cpp:567 -#, fuzzy -msgid "6000K (Cloudy)" -msgstr "Auto (Nuageux)" - -#: src/olympusmn.cpp:568 -#, fuzzy -msgid "5300K (Fine Weather)" -msgstr "Ensoleillé" - -#: src/olympusmn.cpp:569 -msgid "3000K (Tungsten light)" -msgstr "" - -#: src/olympusmn.cpp:570 src/olympusmn.cpp:574 -msgid "3600K (Tungsten light-like)" -msgstr "" - -#: src/olympusmn.cpp:571 -#, fuzzy -msgid "6600K (Daylight fluorescent)" -msgstr "Lumière du jour fluorescent" - -#: src/olympusmn.cpp:572 -#, fuzzy -msgid "4500K (Neutral white fluorescent)" -msgstr "Auto (lumière du jour fluorescent)" - -#: src/olympusmn.cpp:573 -#, fuzzy -msgid "4000K (Cool white fluorescent)" -msgstr "Blanc froid fluorescent (W 3900 - 4500K)" - -#: src/olympusmn.cpp:575 -#, fuzzy -msgid "Custom WB 1" -msgstr "Personnel 1" - -#: src/olympusmn.cpp:576 -#, fuzzy -msgid "Custom WB 2" -msgstr "Personnel 2" - -#: src/olympusmn.cpp:577 -#, fuzzy -msgid "Custom WB 3" -msgstr "Processus personnel 2" - -#: src/olympusmn.cpp:578 -#, fuzzy -msgid "Custom WB 4" -msgstr "Personnel 1" - -#: src/olympusmn.cpp:579 -#, fuzzy -msgid "Custom WB 5400K" -msgstr "Personnel 1" - -#: src/olympusmn.cpp:580 -#, fuzzy -msgid "Custom WB 2900K" -msgstr "Personnel 2" - -#: src/olympusmn.cpp:581 -#, fuzzy -msgid "Custom WB 8000K" -msgstr "Personnel 1" - -#: src/olympusmn.cpp:587 -#, fuzzy -msgid "CM1 (Red Enhance)" -msgstr "Balance des bleus" - -#: src/olympusmn.cpp:588 -#, fuzzy -msgid "CM2 (Green Enhance)" -msgstr "Balance des bleus" - -#: src/olympusmn.cpp:589 -#, fuzzy -msgid "CM3 (Blue Enhance)" -msgstr "Balance des bleus" - -#: src/olympusmn.cpp:590 -msgid "CM4 (Skin Tones)" -msgstr "" - -#: src/olympusmn.cpp:597 src/olympusmn.cpp:776 src/olympusmn.cpp:841 -msgid "Pro Photo RGB" -msgstr "" - -#: src/olympusmn.cpp:603 src/olympusmn.cpp:697 -#, fuzzy -msgid "Noise Filter" -msgstr "Filtre" - -#: src/olympusmn.cpp:604 -#, fuzzy -msgid "Noise Filter (ISO Boost)" -msgstr "Filtre" - -#: src/olympusmn.cpp:612 src/olympusmn.cpp:854 -#, fuzzy -msgid "Muted" -msgstr "utilisé" - -#: src/olympusmn.cpp:614 src/olympusmn.cpp:855 -#, fuzzy -msgid "Monotone" -msgstr "Tonalité couleur" - -#: src/olympusmn.cpp:640 -msgid "SQ" -msgstr "" - -#: src/olympusmn.cpp:641 -msgid "HQ" -msgstr "" - -#: src/olympusmn.cpp:642 -msgid "SHQ" -msgstr "" - -#: src/olympusmn.cpp:649 src/panasonicmn.cpp:86 -#, fuzzy -msgid "On, Mode 1" -msgstr "Mode scène" - -#: src/olympusmn.cpp:650 src/panasonicmn.cpp:88 -#, fuzzy -msgid "On, Mode 2" -msgstr "Mode scène" - -#: src/olympusmn.cpp:651 -#, fuzzy -msgid "On, Mode 3" -msgstr "Mode scène" - -#: src/olympusmn.cpp:655 -#, fuzzy -msgid "Camera Settings Version" -msgstr "informations de réglage appareil photo" - -#: src/olympusmn.cpp:655 -#, fuzzy -msgid "Camera settings version" -msgstr "informations de réglage appareil photo" - -#: src/olympusmn.cpp:656 -#, fuzzy -msgid "PreviewImage Valid" -msgstr "Aperçu embarqué" - -#: src/olympusmn.cpp:656 -#, fuzzy -msgid "Preview image valid" -msgstr "Aperçu embarqué" - -#: src/olympusmn.cpp:657 -#, fuzzy -msgid "PreviewImage Start" -msgstr "Données de prévisualisation" - -#: src/olympusmn.cpp:657 -#, fuzzy -msgid "Preview image start" -msgstr "Aperçu embarqué" - -#: src/olympusmn.cpp:658 -#, fuzzy -msgid "PreviewImage Length" -msgstr "Hauteur de l'image" - -#: src/olympusmn.cpp:658 -#, fuzzy -msgid "Preview image length" -msgstr "Aperçu embarqué" - -#: src/olympusmn.cpp:660 -#, fuzzy -msgid "Auto exposure lock" -msgstr "Exposition" - -#: src/olympusmn.cpp:662 -#, fuzzy -msgid "Exposure Shift" -msgstr "Temps d'exposition" - -#: src/olympusmn.cpp:662 -#, fuzzy -msgid "Exposure shift" -msgstr "Temps d'exposition" - -#: src/olympusmn.cpp:665 -#, fuzzy -msgid "Focus Process" -msgstr "Mode mise au point" - -#: src/olympusmn.cpp:665 -#, fuzzy -msgid "Focus process" -msgstr "Processus personnel" - -#: src/olympusmn.cpp:666 -msgid "AF Search" -msgstr "" - -#: src/olympusmn.cpp:666 -#, fuzzy -msgid "AF search" -msgstr "Point AF utilisé" - -#: src/olympusmn.cpp:667 -#, fuzzy -msgid "AF Areas" -msgstr "Zone mise au point" - -#: src/olympusmn.cpp:667 -#, fuzzy -msgid "AF areas" -msgstr "Zone mise au point" - -#: src/olympusmn.cpp:668 -#, fuzzy -msgid "AFPointSelected" -msgstr "Point AF sélectionné" - -#: src/olympusmn.cpp:669 -#, fuzzy -msgid "AF Fine Tune Adjust" -msgstr "Point AF utilisé" - -#: src/olympusmn.cpp:669 -#, fuzzy -msgid "AF fine tune adjust" -msgstr "Point AF utilisé" - -#: src/olympusmn.cpp:672 -#, fuzzy -msgid "Flash Remote Control" -msgstr "Contrôle des couleurs" - -#: src/olympusmn.cpp:672 -#, fuzzy -msgid "Flash remote control" -msgstr "Contrôle des couleurs" - -#: src/olympusmn.cpp:673 -#, fuzzy -msgid "Flash Control Mode" -msgstr "Mode flash" - -#: src/olympusmn.cpp:673 -#, fuzzy -msgid "Flash control mode" -msgstr "Mode flash" - -#: src/olympusmn.cpp:674 -#, fuzzy -msgid "Flash Intensity" -msgstr "Activité flash" - -#: src/olympusmn.cpp:674 -#, fuzzy -msgid "Flash intensity" -msgstr "Activité flash" - -#: src/olympusmn.cpp:675 -#, fuzzy -msgid "Manual Flash Strength" -msgstr "Puissance Flash" - -#: src/olympusmn.cpp:675 -#, fuzzy -msgid "Manual flash strength" -msgstr "Contrôle de flash manuel" - -#: src/olympusmn.cpp:676 src/sonymn.cpp:429 -#, fuzzy -msgid "White Balance 2" -msgstr "Balance des blancs" - -#: src/olympusmn.cpp:676 src/sonymn.cpp:430 -#, fuzzy -msgid "White balance 2" -msgstr "Balance des blancs" - -#: src/olympusmn.cpp:677 -#, fuzzy -msgid "White Balance Temperature" -msgstr "Table de balance des blancs" - -#: src/olympusmn.cpp:677 -#, fuzzy -msgid "White balance temperature" -msgstr "Table de balance des blancs" - -#: src/olympusmn.cpp:679 -#, fuzzy -msgid "Custom Saturation" -msgstr "Saturation" - -#: src/olympusmn.cpp:679 -#, fuzzy -msgid "Custom saturation" -msgstr "Fonctions personnalisées" - -#: src/olympusmn.cpp:680 -#, fuzzy -msgid "Modified Saturation" -msgstr "Saturation" - -#: src/olympusmn.cpp:680 -#, fuzzy -msgid "Modified saturation" -msgstr "Saturation" - -#: src/olympusmn.cpp:681 src/olympusmn.cpp:1080 -#, fuzzy -msgid "Contrast Setting" -msgstr "Réglage de contraste" - -#: src/olympusmn.cpp:682 src/olympusmn.cpp:1081 -#, fuzzy -msgid "Sharpness Setting" -msgstr "Réglage de Netteté" - -#: src/olympusmn.cpp:686 src/olympusmn.cpp:975 -#, fuzzy -msgid "Distortion Correction" -msgstr "Réduction du bruit" - -#: src/olympusmn.cpp:686 src/olympusmn.cpp:975 -#, fuzzy -msgid "Distortion correction" -msgstr "Réduction du bruit" - -#: src/olympusmn.cpp:687 src/olympusmn.cpp:976 -#, fuzzy -msgid "Shading Compensation" -msgstr "Compensation de tonalité" - -#: src/olympusmn.cpp:687 src/olympusmn.cpp:976 -#, fuzzy -msgid "Shading compensation" -msgstr "Compensation de tonalité" - -#: src/olympusmn.cpp:688 -#, fuzzy -msgid "Compression Factor" -msgstr "Rapport de compression" - -#: src/olympusmn.cpp:688 -#, fuzzy -msgid "Compression factor" -msgstr "Rapport de compression" - -#: src/olympusmn.cpp:689 src/olympusmn.cpp:897 -#, fuzzy -msgid "Gradation" -msgstr "Saturation" - -#: src/olympusmn.cpp:690 src/olympusmn.cpp:891 src/pentaxmn.cpp:988 -#: src/pentaxmn.cpp:989 -#, fuzzy -msgid "Picture mode" -msgstr "Mode d'image" - -#: src/olympusmn.cpp:691 -#, fuzzy -msgid "Picture Mode Saturation" -msgstr "Réglage de mode d'image" - -#: src/olympusmn.cpp:691 src/olympusmn.cpp:892 -#, fuzzy -msgid "Picture mode saturation" -msgstr "Réglage de mode d'image" - -#: src/olympusmn.cpp:692 -#, fuzzy -msgid "Picture Mode Hue" -msgstr "Mode d'image" - -#: src/olympusmn.cpp:692 -#, fuzzy -msgid "Picture mode hue" -msgstr "Mode d'image" - -#: src/olympusmn.cpp:693 -#, fuzzy -msgid "Picture Mode Contrast" -msgstr "Mode d'image" - -#: src/olympusmn.cpp:693 src/olympusmn.cpp:893 -#, fuzzy -msgid "Picture mode contrast" -msgstr "Réglage de mode d'image" - -#: src/olympusmn.cpp:694 -#, fuzzy -msgid "Picture Mode Sharpness" -msgstr "Mode d'image" - -#: src/olympusmn.cpp:694 src/olympusmn.cpp:894 -#, fuzzy -msgid "Picture mode sharpness" -msgstr "Réglage de mode d'image" - -#: src/olympusmn.cpp:695 -#, fuzzy -msgid "Picture Mode BW Filter" -msgstr "Mode d'image" - -#: src/olympusmn.cpp:695 -#, fuzzy -msgid "Picture mode BW filter" -msgstr "Mode d'image" - -#: src/olympusmn.cpp:696 -#, fuzzy -msgid "Picture Mode Tone" -msgstr "Mode d'image" - -#: src/olympusmn.cpp:696 -#, fuzzy -msgid "Picture mode tone" -msgstr "Mode d'image" - -#: src/olympusmn.cpp:697 -#, fuzzy -msgid "Noise filter" -msgstr "Filtre couleur" - -#: src/olympusmn.cpp:698 -#, fuzzy -msgid "Art Filter" -msgstr "Filtre" - -#: src/olympusmn.cpp:698 -#, fuzzy -msgid "Art filter" -msgstr "Filtre couleur" - -#: src/olympusmn.cpp:699 -#, fuzzy -msgid "Magic Filter" -msgstr "Filtre digital" - -#: src/olympusmn.cpp:699 -#, fuzzy -msgid "Magic filter" -msgstr "Appareil photo numérique" - -#: src/olympusmn.cpp:701 -#, fuzzy -msgid "Panorama Mode" -msgstr "Panorama" - -#: src/olympusmn.cpp:701 -#, fuzzy -msgid "Panorama mode" -msgstr "Frame panorama" - -#: src/olympusmn.cpp:702 -#, fuzzy -msgid "Image Quality 2" -msgstr "Qualité de l'image" - -#: src/olympusmn.cpp:702 -#, fuzzy -msgid "Image quality 2" -msgstr "Qualité de l'image" - -#: src/olympusmn.cpp:704 -#, fuzzy -msgid "Manometer Pressure" -msgstr "Non compressé" - -#: src/olympusmn.cpp:704 -#, fuzzy -msgid "Manometer pressure" -msgstr "Non compressé" - -#: src/olympusmn.cpp:705 -#, fuzzy -msgid "Manometer Reading" -msgstr "Non compressé" - -#: src/olympusmn.cpp:705 -#, fuzzy -msgid "Manometer reading" -msgstr "Non compressé" - -#: src/olympusmn.cpp:706 -#, fuzzy -msgid "Extended WB Detect" -msgstr "Mode scène" - -#: src/olympusmn.cpp:706 -#, fuzzy -msgid "Extended WB detect" -msgstr "Mode scène" - -#: src/olympusmn.cpp:707 -msgid "Level Gauge Roll" -msgstr "" - -#: src/olympusmn.cpp:707 -msgid "Level gauge roll" -msgstr "" - -#: src/olympusmn.cpp:708 -msgid "Level Gauge Pitch" -msgstr "" - -#: src/olympusmn.cpp:708 -msgid "Level gauge pitch" -msgstr "" - -#: src/olympusmn.cpp:710 -#, fuzzy -msgid "Unknown OlympusCs tag" -msgstr "Marqueur de note du fabriquant Olympus inconnu" - -#: src/olympusmn.cpp:721 -msgid "Simple E-System" -msgstr "" - -#: src/olympusmn.cpp:722 -msgid "E-System" -msgstr "" - -#: src/olympusmn.cpp:739 -#, fuzzy -msgid "Equipment Version" -msgstr "Informations équipement" - -#: src/olympusmn.cpp:739 -#, fuzzy -msgid "Equipment version" -msgstr "Informations équipement" - -#: src/olympusmn.cpp:741 -msgid "Serial number" -msgstr "Numéro de série" - -#: src/olympusmn.cpp:746 src/panasonicmn.cpp:277 src/tags.cpp:1854 -#, fuzzy -msgid "Lens Serial Number" -msgstr "Numéro de série" - -#: src/olympusmn.cpp:746 src/panasonicmn.cpp:277 -#, fuzzy -msgid "Lens serial number" -msgstr "Numéro de série de l'appareil photo" - -#: src/olympusmn.cpp:747 src/properties.cpp:388 src/tags.cpp:1850 -#, fuzzy -msgid "Lens Model" -msgstr "Mode scène" - -#: src/olympusmn.cpp:747 -#, fuzzy -msgid "Lens model" -msgstr "Mode scène" - -#: src/olympusmn.cpp:748 -#, fuzzy -msgid "Lens Firmware Version" -msgstr "Version du microcode" - -#: src/olympusmn.cpp:748 -#, fuzzy -msgid "Lens firmware version" -msgstr "Version de microcode" - -#: src/olympusmn.cpp:753 -#, fuzzy -msgid "Max Aperture At Current Focal" -msgstr "Ouverture maximum à focal minimum" - -#: src/olympusmn.cpp:753 -#, fuzzy -msgid "Max aperture at current focal" -msgstr "Ouverture maximum à focal minimum" - -#: src/olympusmn.cpp:754 -#, fuzzy -msgid "Lens Properties" -msgstr "Température de l'objectif" - -#: src/olympusmn.cpp:754 -#, fuzzy -msgid "Lens properties" -msgstr "Température de l'objectif" - -#: src/olympusmn.cpp:755 -#, fuzzy -msgid "Extender" -msgstr "Externe" - -#: src/olympusmn.cpp:756 -#, fuzzy -msgid "Extender Serial Number" -msgstr "Numéro de série de l'appareil photo" - -#: src/olympusmn.cpp:756 -#, fuzzy -msgid "Extender serial number" -msgstr "Numéro de série de l'appareil photo" - -#: src/olympusmn.cpp:757 -#, fuzzy -msgid "Extender Model" -msgstr "Mode scène" - -#: src/olympusmn.cpp:757 -#, fuzzy -msgid "Extender model" -msgstr "Mode scène" - -#: src/olympusmn.cpp:758 -#, fuzzy -msgid "Extender Firmware Version" -msgstr "Version du microcode" - -#: src/olympusmn.cpp:758 -#, fuzzy -msgid "Extender firmwareversion" -msgstr "Version du microcode" - -#: src/olympusmn.cpp:760 src/properties.cpp:384 -#, fuzzy -msgid "Flash Model" -msgstr "Mode flash" - -#: src/olympusmn.cpp:760 -#, fuzzy -msgid "Flash model" -msgstr "Mode flash" - -#: src/olympusmn.cpp:761 -#, fuzzy -msgid "Flash Firmware Version" -msgstr "Version du microcode" - -#: src/olympusmn.cpp:761 -#, fuzzy -msgid "Flash firmware version" -msgstr "Version de microcode" - -#: src/olympusmn.cpp:762 -#, fuzzy -msgid "FlashSerialNumber" -msgstr "Numéro de série" - -#: src/olympusmn.cpp:764 -#, fuzzy -msgid "Unknown OlympusEq tag" -msgstr "Marqueur de note du fabriquant Olympus inconnu" - -#: src/olympusmn.cpp:781 src/olympusmn.cpp:846 -#, fuzzy -msgid "High Speed" -msgstr "Scène de nuit" - -#: src/olympusmn.cpp:782 src/olympusmn.cpp:803 src/olympusmn.cpp:847 -#, fuzzy -msgid "High Function" -msgstr "Fonctions personnalisées" - -#: src/olympusmn.cpp:783 -#, fuzzy -msgid "Advanced High Speed" -msgstr "Scène de nuit" - -#: src/olympusmn.cpp:784 -#, fuzzy -msgid "Advanced High Function" -msgstr "Fonction de transfert" - -#: src/olympusmn.cpp:789 -#, fuzzy -msgid "Original" -msgstr "Date et heure (originel)" - -#: src/olympusmn.cpp:790 -#, fuzzy -msgid "Edited (Landscape)" -msgstr "Paysage" - -#: src/olympusmn.cpp:791 src/olympusmn.cpp:792 -#, fuzzy -msgid "Edited (Portrait)" -msgstr "Portrait de nuit" - -#: src/olympusmn.cpp:797 -#, fuzzy -msgid "WB Color Temp" -msgstr "Tonalité couleur" - -#: src/olympusmn.cpp:798 -#, fuzzy -msgid "WB Gray Point" -msgstr "Point AF" - -#: src/olympusmn.cpp:808 -#, fuzzy -msgid "Raw Development Version" -msgstr "Version des Notes du fabriquant" - -#: src/olympusmn.cpp:808 -#, fuzzy -msgid "Raw development version" -msgstr "Version des Notes du fabriquant" - -#: src/olympusmn.cpp:809 src/olympusmn.cpp:879 src/properties.cpp:558 -#: src/tags.cpp:822 -#, fuzzy -msgid "Exposure Bias Value" -msgstr "Correction d'exposition" - -#: src/olympusmn.cpp:809 src/olympusmn.cpp:879 -#, fuzzy -msgid "Exposure bias value" -msgstr "Correction d'exposition" - -#: src/olympusmn.cpp:810 src/olympusmn.cpp:881 -#, fuzzy -msgid "White Balance Value" -msgstr "Table de balance des blancs" - -#: src/olympusmn.cpp:810 src/olympusmn.cpp:881 -#, fuzzy -msgid "White balance value" -msgstr "Table de balance des blancs" - -#: src/olympusmn.cpp:811 src/olympusmn.cpp:882 -#, fuzzy -msgid "WB Fine Adjustment" -msgstr "Ajustement de teinte" - -#: src/olympusmn.cpp:811 -#, fuzzy -msgid "WB fine adjustment" -msgstr "Ajustement de teinte" - -#: src/olympusmn.cpp:812 src/olympusmn.cpp:834 src/olympusmn.cpp:883 -#, fuzzy -msgid "Gray Point" -msgstr "Point AF" - -#: src/olympusmn.cpp:812 src/olympusmn.cpp:883 -#, fuzzy -msgid "Gray point" -msgstr "AF Points" - -#: src/olympusmn.cpp:813 src/olympusmn.cpp:886 -#, fuzzy -msgid "Saturation Emphasis" -msgstr "Réglage de saturation" - -#: src/olympusmn.cpp:813 src/olympusmn.cpp:886 -#, fuzzy -msgid "Saturation emphasis" -msgstr "Réglage de saturation" - -#: src/olympusmn.cpp:814 src/olympusmn.cpp:887 -#, fuzzy -msgid "Memory Color Emphasis" -msgstr "Mes couleurs" - -#: src/olympusmn.cpp:814 src/olympusmn.cpp:887 -#, fuzzy -msgid "Memory color emphasis" -msgstr "Mes couleurs" - -#: src/olympusmn.cpp:815 src/olympusmn.cpp:884 -#, fuzzy -msgid "Contrast Value" -msgstr "Contraste" - -#: src/olympusmn.cpp:815 src/olympusmn.cpp:884 -#, fuzzy -msgid "Contrast value" -msgstr "Contraste" - -#: src/olympusmn.cpp:816 src/olympusmn.cpp:885 -#, fuzzy -msgid "Sharpness Value" -msgstr "Netteté" - -#: src/olympusmn.cpp:816 src/olympusmn.cpp:885 -#, fuzzy -msgid "Sharpness value" -msgstr "Netteté" - -#: src/olympusmn.cpp:818 src/olympusmn.cpp:890 -#, fuzzy -msgid "Engine" -msgstr "centre" - -#: src/olympusmn.cpp:820 -#, fuzzy -msgid "Edit status" -msgstr "Statut des modifications" - -#: src/olympusmn.cpp:821 -#, fuzzy -msgid "Settings" -msgstr "Réglage AE" - -#: src/olympusmn.cpp:823 -#, fuzzy -msgid "Unknown OlympusRd tag" -msgstr "Marqueur de note du fabriquant Olympus inconnu" - -#: src/olympusmn.cpp:878 -#, fuzzy -msgid "Raw Development 2 Version" -msgstr "Version des Notes du fabriquant" - -#: src/olympusmn.cpp:878 -#, fuzzy -msgid "Raw development 2 version" -msgstr "Version des Notes du fabriquant" - -#: src/olympusmn.cpp:882 -#, fuzzy -msgid "White balance fine adjustment" -msgstr "Ajustement de la balance des blancs" - -#: src/olympusmn.cpp:892 -#, fuzzy -msgid "PM Saturation" -msgstr "Saturation" - -#: src/olympusmn.cpp:893 -#, fuzzy -msgid "PM Contrast" -msgstr "Contraste" - -#: src/olympusmn.cpp:894 -#, fuzzy -msgid "PM Sharpness" -msgstr "Netteté" - -#: src/olympusmn.cpp:895 -#, fuzzy -msgid "PM BW Filter" -msgstr "Filtre" - -#: src/olympusmn.cpp:895 -#, fuzzy -msgid "PM BW filter" -msgstr "Filtre" - -#: src/olympusmn.cpp:896 -#, fuzzy -msgid "PM Picture Tone" -msgstr "Mode d'image" - -#: src/olympusmn.cpp:896 -#, fuzzy -msgid "PM picture tone" -msgstr "Mode d'image" - -#: src/olympusmn.cpp:899 -#, fuzzy -msgid "Auto Gradation" -msgstr "Durée audio" - -#: src/olympusmn.cpp:899 -#, fuzzy -msgid "Auto gradation" -msgstr "Durée audio" - -#: src/olympusmn.cpp:900 -#, fuzzy -msgid "PM Noise Filter" -msgstr "Filtre" - -#: src/olympusmn.cpp:900 -#, fuzzy -msgid "Picture mode noise filter" -msgstr "Réglage de mode d'image" - -#: src/olympusmn.cpp:902 -#, fuzzy -msgid "Unknown OlympusRd2 tag" -msgstr "Marqueur de note du fabriquant Olympus inconnu" - -#: src/olympusmn.cpp:913 -#, fuzzy -msgid "On (2 frames)" -msgstr "Activé" - -#: src/olympusmn.cpp:914 -#, fuzzy -msgid "On (3 frames)" -msgstr "Activé" - -#: src/olympusmn.cpp:919 -msgid "4:3" -msgstr "" - -#: src/olympusmn.cpp:920 -#, fuzzy -msgid "3:2" -msgstr "320x240" - -#: src/olympusmn.cpp:921 -msgid "16:9" -msgstr "" - -#: src/olympusmn.cpp:922 -msgid "6:6" -msgstr "" - -#: src/olympusmn.cpp:923 -msgid "5:4" -msgstr "" - -#: src/olympusmn.cpp:924 -msgid "7:6" -msgstr "" - -#: src/olympusmn.cpp:925 -#, fuzzy -msgid "6:5" -msgstr "D65" - -#: src/olympusmn.cpp:926 -#, fuzzy -msgid "7:5" -msgstr "D75" - -#: src/olympusmn.cpp:927 -msgid "3:4" -msgstr "" - -#: src/olympusmn.cpp:931 -#, fuzzy -msgid "Image Processing Version" -msgstr " Traitement d'image" - -#: src/olympusmn.cpp:931 -#, fuzzy -msgid "Image processing version" -msgstr "Informations du traitement d'image" - -#: src/olympusmn.cpp:933 -#, fuzzy -msgid "WB RB Levels 3000K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:933 -#, fuzzy -msgid "WB RB levels 3000K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:934 -#, fuzzy -msgid "WB RB Levels 3300K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:934 -#, fuzzy -msgid "WB RB levels 3300K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:935 -#, fuzzy -msgid "WB RB Levels 3600K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:935 -#, fuzzy -msgid "WB RB levels 3600K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:936 -#, fuzzy -msgid "WB RB Levels 3900K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:936 -#, fuzzy -msgid "WB RB levels 3900K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:937 -#, fuzzy -msgid "WB RB Levels 4000K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:937 -#, fuzzy -msgid "WB RB levels 4000K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:938 -#, fuzzy -msgid "WB RB Levels 4300K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:938 -#, fuzzy -msgid "WB RB levels 4300K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:939 -#, fuzzy -msgid "WB RB Levels 4500K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:939 -#, fuzzy -msgid "WB RB levels 4500K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:940 -#, fuzzy -msgid "WB RB Levels 4800K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:940 -#, fuzzy -msgid "WB RB levels 4800K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:941 -#, fuzzy -msgid "WB RB Levels 5300K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:941 -#, fuzzy -msgid "WB RB levels 5300K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:942 -#, fuzzy -msgid "WB RB Levels 6000K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:942 -#, fuzzy -msgid "WB RB levels 6000K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:943 -#, fuzzy -msgid "WB RB Levels 6600K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:943 -#, fuzzy -msgid "WB RB levels 6600K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:944 -#, fuzzy -msgid "WB RB Levels 7500K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:944 -#, fuzzy -msgid "WB RB levels 7500K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:945 -#, fuzzy -msgid "WB RB Levels CWB1" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:945 -#, fuzzy -msgid "WB RB levels CWB1" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:946 -#, fuzzy -msgid "WB RB Levels CWB2" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:946 -#, fuzzy -msgid "WB RB levels CWB2" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:947 -#, fuzzy -msgid "WB RB Levels CWB3" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:947 -#, fuzzy -msgid "WB RB levels CWB3" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:948 -#, fuzzy -msgid "WB RB Levels CWB4" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:948 -#, fuzzy -msgid "WB RB levels CWB4" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:949 -#, fuzzy -msgid "WB G Level 3000K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:949 -#, fuzzy -msgid "WB G level 3000K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:950 -#, fuzzy -msgid "WB G Level 3300K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:950 -#, fuzzy -msgid "WB G level 3300K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:951 -#, fuzzy -msgid "WB G Level 3600K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:951 -#, fuzzy -msgid "WB G level 3600K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:952 -#, fuzzy -msgid "WB G Level 3900K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:952 -#, fuzzy -msgid "WB G level 3900K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:953 -#, fuzzy -msgid "WB G Level 4000K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:953 -#, fuzzy -msgid "WB G level 4000K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:954 -#, fuzzy -msgid "WB G Level 4300K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:954 -#, fuzzy -msgid "WB G level 4300K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:955 -#, fuzzy -msgid "WB G Level 4500K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:955 -#, fuzzy -msgid "WB G level 4500K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:956 -#, fuzzy -msgid "WB G Level 4800K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:956 -#, fuzzy -msgid "WB G level 4800K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:957 -#, fuzzy -msgid "WB G Level 5300K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:957 -#, fuzzy -msgid "WB G level 5300K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:958 -#, fuzzy -msgid "WB G Level 6000K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:958 -#, fuzzy -msgid "WB G level 6000K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:959 -#, fuzzy -msgid "WB G Level 6600K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:959 -#, fuzzy -msgid "WB G level 6600K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:960 -#, fuzzy -msgid "WB G Level 7500K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:960 -#, fuzzy -msgid "WB G level 7500K" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:961 -#, fuzzy -msgid "WB G Level" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:961 -#, fuzzy -msgid "WB G level" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:963 -#, fuzzy -msgid "Enhancer" -msgstr "centre" - -#: src/olympusmn.cpp:964 -#, fuzzy -msgid "Enhancer Values" -msgstr "centre" - -#: src/olympusmn.cpp:964 -#, fuzzy -msgid "Enhancer values" -msgstr "centre" - -#: src/olympusmn.cpp:965 src/olympusmn.cpp:1067 -#, fuzzy -msgid "Coring Filter" -msgstr "Filtre couleur" - -#: src/olympusmn.cpp:966 src/olympusmn.cpp:1068 -#, fuzzy -msgid "Coring Values" -msgstr "Valeur de luminosité" - -#: src/olympusmn.cpp:966 src/olympusmn.cpp:1068 -#, fuzzy -msgid "Coring values" -msgstr "Valeur de luminosité" - -#: src/olympusmn.cpp:967 src/tags.cpp:908 -#, fuzzy -msgid "Black Level" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:968 -msgid "Gain Base" -msgstr "" - -#: src/olympusmn.cpp:968 -msgid "Gain base" -msgstr "" - -#: src/olympusmn.cpp:969 -msgid "Valid Bits" -msgstr "" - -#: src/olympusmn.cpp:970 src/olympusmn.cpp:1072 src/properties.cpp:445 -#, fuzzy -msgid "Crop Left" -msgstr "haut, gauche" - -#: src/olympusmn.cpp:970 src/olympusmn.cpp:1072 -#, fuzzy -msgid "Crop left" -msgstr "haut, gauche" - -#: src/olympusmn.cpp:971 src/olympusmn.cpp:1073 src/properties.cpp:444 -#, fuzzy -msgid "Crop Top" -msgstr "Crédit" - -#: src/olympusmn.cpp:971 src/olympusmn.cpp:1073 -#, fuzzy -msgid "Crop top" -msgstr "Crédit" - -#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 src/properties.cpp:449 -#, fuzzy -msgid "Crop Width" -msgstr "Droit d'auteur" - -#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 -#, fuzzy -msgid "Crop width" -msgstr "Droit d'auteur" - -#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 src/properties.cpp:450 -#, fuzzy -msgid "Crop Height" -msgstr "Droit d'auteur" - -#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 -#, fuzzy -msgid "Crop height" -msgstr "Droit d'auteur" - -#: src/olympusmn.cpp:977 -#, fuzzy -msgid "Multiple Exposure Mode" -msgstr "Mode d'exposition" - -#: src/olympusmn.cpp:977 -#, fuzzy -msgid "Multiple exposure mode" -msgstr "Exposition" - -#: src/olympusmn.cpp:978 src/sonymn.cpp:644 src/sonymn.cpp:645 -msgid "Aspect Ratio" -msgstr "" - -#: src/olympusmn.cpp:978 -#, fuzzy -msgid "Aspect ratio" -msgstr "Durée audio" - -#: src/olympusmn.cpp:979 -#, fuzzy -msgid "Aspect Frame" -msgstr "Nom de l'objet" - -#: src/olympusmn.cpp:979 -#, fuzzy -msgid "Aspect frame" -msgstr "Nom de l'objet" - -#: src/olympusmn.cpp:980 -#, fuzzy -msgid "Face Detect" -msgstr "Échec lors de la lecture" - -#: src/olympusmn.cpp:980 src/olympusmn.cpp:1373 src/olympusmn.cpp:1385 -#, fuzzy -msgid "Face detect" -msgstr "Échec lors de la lecture" - -#: src/olympusmn.cpp:981 -#, fuzzy -msgid "Face Detect Area" -msgstr "Échec lors de la lecture" - -#: src/olympusmn.cpp:981 -#, fuzzy -msgid "Face detect area" -msgstr "Échec lors de la lecture" - -#: src/olympusmn.cpp:983 -#, fuzzy -msgid "Unknown OlympusIp tag" -msgstr "Marqueur de note du fabriquant Olympus inconnu" - -#: src/olympusmn.cpp:993 -msgid "Bounce or Off" -msgstr "" - -#: src/olympusmn.cpp:994 -msgid "Direct" -msgstr "" - -#: src/olympusmn.cpp:998 -#, fuzzy -msgid "Focus Info Version" -msgstr "Informations mise au point" - -#: src/olympusmn.cpp:998 -#, fuzzy -msgid "Focus info version" -msgstr "Informations mise au point" - -#: src/olympusmn.cpp:999 -#, fuzzy -msgid "Auto Focus" -msgstr "Mise au point auto" - -#: src/olympusmn.cpp:1000 -#, fuzzy -msgid "Scene Detect" -msgstr "Mode scène" - -#: src/olympusmn.cpp:1000 -#, fuzzy -msgid "Scene detect" -msgstr "Mode scène" - -#: src/olympusmn.cpp:1001 -#, fuzzy -msgid "Scene Area" -msgstr "Mode scène" - -#: src/olympusmn.cpp:1001 -#, fuzzy -msgid "Scene area" -msgstr "Zone unique" - -#: src/olympusmn.cpp:1002 -#, fuzzy -msgid "Scene Detect Data" -msgstr "Mode scène" - -#: src/olympusmn.cpp:1002 -#, fuzzy -msgid "Scene detect data" -msgstr "Mode scène" - -#: src/olympusmn.cpp:1003 -#, fuzzy -msgid "Zoom Step Count" -msgstr "Comptage d'image" - -#: src/olympusmn.cpp:1004 -#, fuzzy -msgid "Focus Step Count" -msgstr "Mise au point continue" - -#: src/olympusmn.cpp:1004 -#, fuzzy -msgid "Focus step count" -msgstr "Position mise au point" - -#: src/olympusmn.cpp:1005 -#, fuzzy -msgid "Focus Step Infinity" -msgstr "Réglage mise au point" - -#: src/olympusmn.cpp:1005 -#, fuzzy -msgid "Focus step infinity" -msgstr "Réglage mise au point" - -#: src/olympusmn.cpp:1006 -#, fuzzy -msgid "Focus Step Near" -msgstr "Type de mise au point" - -#: src/olympusmn.cpp:1006 -#, fuzzy -msgid "Focus step near" -msgstr "Distance de mise au point" - -#: src/olympusmn.cpp:1009 -#, fuzzy -msgid "External Flash" -msgstr "Flash externe" - -#: src/olympusmn.cpp:1010 -#, fuzzy -msgid "External Flash Guide Number" -msgstr "Mode flash externe" - -#: src/olympusmn.cpp:1010 -#, fuzzy -msgid "External flash guide number" -msgstr "Mode flash externe" - -#: src/olympusmn.cpp:1014 -#, fuzzy -msgid "Manual Flash" -msgstr "Déclenchement manuel" - -#: src/olympusmn.cpp:1014 -#, fuzzy -msgid "Manual flash" -msgstr "Déclenchement manuel" - -#: src/olympusmn.cpp:1018 -#, fuzzy -msgid "Unknown OlympusFi tag" -msgstr "Marqueur de note du fabriquant Olympus inconnu" - -#: src/olympusmn.cpp:1029 -#, fuzzy -msgid "Unknown OlympusFe tag" -msgstr "Marqueur de note du fabriquant Olympus inconnu" - -#: src/olympusmn.cpp:1042 -#, fuzzy -msgid "Fine Weather" -msgstr "Ensoleillé" - -#: src/olympusmn.cpp:1043 -#, fuzzy -msgid "Tungsten (incandescent)" -msgstr "Tungstène (lampe à incandescence)" - -#: src/olympusmn.cpp:1044 -#, fuzzy -msgid "Evening Sunlight" -msgstr "Soirée" - -#: src/olympusmn.cpp:1045 -#, fuzzy -msgid "Daylight Fluorescent (D 5700 - 7100K)" -msgstr "Lumière du jour fluorescent (D 5700 - 7100K)" - -#: src/olympusmn.cpp:1046 -#, fuzzy -msgid "Day White Fluorescent (N 4600 - 5400K)" -msgstr "Blanc chaud fluorescent (N 4600 - 5400K)" - -#: src/olympusmn.cpp:1047 -#, fuzzy -msgid "Cool White Fluorescent (W 3900 - 4500K)" -msgstr "Blanc froid fluorescent (W 3900 - 4500K)" - -#: src/olympusmn.cpp:1048 -#, fuzzy -msgid "White Fluorescent (WW 3200 - 3700K)" -msgstr "Blanc fluorescent (WW 3200 - 3700K)" - -#: src/olympusmn.cpp:1049 -#, fuzzy -msgid "One Touch White Balance" -msgstr "Balance des blancs en une touche" - -#: src/olympusmn.cpp:1050 -#, fuzzy -msgid "Custom 1-4" -msgstr "Personnel 1" - -#: src/olympusmn.cpp:1054 -#, fuzzy -msgid "Raw Info Version" -msgstr "Informations mise au point" - -#: src/olympusmn.cpp:1054 -#, fuzzy -msgid "Raw info version" -msgstr "Informations brutes" - -#: src/olympusmn.cpp:1055 -#, fuzzy -msgid "WB_RB Levels Used" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:1055 -#, fuzzy -msgid "WB_RB levels used" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:1056 -#, fuzzy -msgid "WB_RB Levels Auto" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:1056 -#, fuzzy -msgid "WB_RB levels auto" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:1057 -#, fuzzy -msgid "WB_RB Levels Shade" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:1057 -#, fuzzy -msgid "WB_RB levels shade" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:1058 -#, fuzzy -msgid "WB_RB Levels Cloudy" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:1058 -#, fuzzy -msgid "WB_RB levels cloudy" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:1059 -#, fuzzy -msgid "WB_RB Levels Fine Weather" -msgstr "Fluorescent" - -#: src/olympusmn.cpp:1059 -#, fuzzy -msgid "WB_RB levels fine weather" -msgstr "Fluorescent" - -#: src/olympusmn.cpp:1060 -#, fuzzy -msgid "WB_RB Levels Tungsten" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:1060 -#, fuzzy -msgid "WB_RB levels tungsten" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:1061 -#, fuzzy -msgid "WB_RB Levels Evening Sunlight" -msgstr "Soirée" - -#: src/olympusmn.cpp:1061 -#, fuzzy -msgid "WB_RB levels evening sunlight" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:1062 -#, fuzzy -msgid "WB_RB Levels Daylight Fluor" -msgstr "Fluorescent" - -#: src/olympusmn.cpp:1062 -#, fuzzy -msgid "WB_RB levels daylight fluor" -msgstr "Fluorescent" - -#: src/olympusmn.cpp:1063 -#, fuzzy -msgid "WB_RB Levels Day White Fluor" -msgstr "Fluorescent" - -#: src/olympusmn.cpp:1063 -#, fuzzy -msgid "WB_RB levels day white fluor" -msgstr "Fluorescent" - -#: src/olympusmn.cpp:1064 -#, fuzzy -msgid "WB_RB Levels Cool White Fluor" -msgstr "Fluorescent" - -#: src/olympusmn.cpp:1064 -#, fuzzy -msgid "WB_RB levels cool white fluor" -msgstr "Fluorescent" - -#: src/olympusmn.cpp:1065 -#, fuzzy -msgid "WB_RB Levels White Fluorescent" -msgstr "Fluorescent" - -#: src/olympusmn.cpp:1065 -#, fuzzy -msgid "WB_RB levels white fluorescent" -msgstr "Fluorescent" - -#: src/olympusmn.cpp:1066 -#, fuzzy -msgid "Color Matrix2" -msgstr "Matrice des couleurs" - -#: src/olympusmn.cpp:1066 -#, fuzzy -msgid "Color matrix 2" -msgstr "Matrice des couleurs" - -#: src/olympusmn.cpp:1069 -#, fuzzy -msgid "Black Level 2" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:1069 -#, fuzzy -msgid "Black level 2" -msgstr "Niveau de noir" - -#: src/olympusmn.cpp:1070 src/properties.cpp:508 src/tags.cpp:699 -msgid "YCbCr Coefficients" -msgstr "Coefficients YCbCr" - -#: src/olympusmn.cpp:1070 -#, fuzzy -msgid "YCbCr coefficients" -msgstr "Coefficients YCbCr" - -#: src/olympusmn.cpp:1071 -msgid "Valid Pixel Depth" -msgstr "" - -#: src/olympusmn.cpp:1071 -msgid "Valid pixel depth" -msgstr "" - -#: src/olympusmn.cpp:1077 -#, fuzzy -msgid "White Balance Comp" -msgstr "Balance des blancs" - -#: src/olympusmn.cpp:1077 -#, fuzzy -msgid "White balance comp" -msgstr "Balance des blancs" - -#: src/olympusmn.cpp:1078 -#, fuzzy -msgid "Saturation Setting" -msgstr "Réglage de saturation" - -#: src/olympusmn.cpp:1079 -#, fuzzy -msgid "Hue Setting" -msgstr "Réglage flash" - -#: src/olympusmn.cpp:1079 -#, fuzzy -msgid "Hue setting" -msgstr "Réglage AE" - -#: src/olympusmn.cpp:1082 -#, fuzzy -msgid "CM Exposure Compensation" -msgstr "Compensation d'exposition" - -#: src/olympusmn.cpp:1082 -#, fuzzy -msgid "CM exposure compensation" -msgstr "Compensation d'exposition" - -#: src/olympusmn.cpp:1083 -#, fuzzy -msgid "CM White Balance" -msgstr "Balance des blancs" - -#: src/olympusmn.cpp:1083 -#, fuzzy -msgid "CM white balance" -msgstr "Balance des blancs" - -#: src/olympusmn.cpp:1084 -#, fuzzy -msgid "CM White Balance Comp" -msgstr "Balance des blancs" - -#: src/olympusmn.cpp:1084 -#, fuzzy -msgid "CM white balance comp" -msgstr "Balance des blancs" - -#: src/olympusmn.cpp:1085 -#, fuzzy -msgid "CM White Balance Gray Point" -msgstr "Biais de balance des blancs" - -#: src/olympusmn.cpp:1085 -#, fuzzy -msgid "CM white balance gray point" -msgstr "Biais de balance des blancs" - -#: src/olympusmn.cpp:1086 -#, fuzzy -msgid "CM Saturation" -msgstr "Saturation" - -#: src/olympusmn.cpp:1086 -#, fuzzy -msgid "CM saturation" -msgstr "Saturation" - -#: src/olympusmn.cpp:1087 -#, fuzzy -msgid "CM Hue" -msgstr "tonalité" - -#: src/olympusmn.cpp:1087 -#, fuzzy -msgid "CM hue" -msgstr "tonalité" - -#: src/olympusmn.cpp:1088 -#, fuzzy -msgid "CM Contrast" -msgstr "Contraste" - -#: src/olympusmn.cpp:1088 -#, fuzzy -msgid "CM contrast" -msgstr "Contraste" - -#: src/olympusmn.cpp:1089 -#, fuzzy -msgid "CM Sharpness" -msgstr "Netteté" - -#: src/olympusmn.cpp:1089 -#, fuzzy -msgid "CM sharpness" -msgstr "Netteté" - -#: src/olympusmn.cpp:1091 -#, fuzzy -msgid "Unknown OlympusRi tag" -msgstr "Marqueur de note du fabriquant Olympus inconnu" - -#: src/olympusmn.cpp:1114 src/pentaxmn.cpp:336 -msgid "User-Selected" -msgstr "Sélection utilisateur" - -#: src/olympusmn.cpp:1115 -#, fuzzy -msgid "Auto-Override" -msgstr "Écraser" - -#: src/olympusmn.cpp:1151 -msgid "Fast" -msgstr "Rapide" - -#: src/olympusmn.cpp:1208 -msgid "3000 Kelvin" -msgstr "3000 Kelvin" - -#: src/olympusmn.cpp:1209 -msgid "3700 Kelvin" -msgstr "3700 Kelvin" - -#: src/olympusmn.cpp:1210 -msgid "4000 Kelvin" -msgstr "4000 Kelvin" - -#: src/olympusmn.cpp:1211 -msgid "4500 Kelvin" -msgstr "4500 Kelvin" - -#: src/olympusmn.cpp:1212 -msgid "5500 Kelvin" -msgstr "5500 Kelvin" - -#: src/olympusmn.cpp:1213 -msgid "6500 Kelvin" -msgstr "6500 Kelvin" - -#: src/olympusmn.cpp:1214 -msgid "7500 Kelvin" -msgstr "7500 Kelvin" - -#: src/olympusmn.cpp:1220 -msgid "One-touch" -msgstr "" - -#: src/olympusmn.cpp:1241 -msgid "Olympus Zuiko Digital ED 50mm F2.0 Macro" -msgstr "" - -#: src/olympusmn.cpp:1242 -msgid "Olympus Zuiko Digital 40-150mm F3.5-4.5" -msgstr "" - -#: src/olympusmn.cpp:1243 src/olympusmn.cpp:1259 -msgid "Olympus Zuiko Digital ED 14-42mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1244 -msgid "Olympus Zuiko Digital ED 150mm F2.0" -msgstr "" - -#: src/olympusmn.cpp:1245 -msgid "Olympus Zuiko Digital 17mm F2.8 Pancake" -msgstr "" - -#: src/olympusmn.cpp:1246 -msgid "Olympus Zuiko Digital ED 300mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1247 -msgid "Olympus Zuiko Digital 14-54mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1248 -msgid "Olympus Zuiko Digital Pro ED 90-250mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1249 -msgid "Olympus Zuiko Digital ED 50-200mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1250 -msgid "Olympus Zuiko Digital ED 8mm F3.5 Fisheye" -msgstr "" - -#: src/olympusmn.cpp:1251 -msgid "Olympus Zuiko Digital 11-22mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1252 -msgid "Olympus Zuiko Digital 18-180mm F3.5-6.3" -msgstr "" - -#: src/olympusmn.cpp:1253 -msgid "Olympus Zuiko Digital 70-300mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1254 -msgid "Olympus Zuiko Digital ED 7-14mm F4.0" -msgstr "" - -#: src/olympusmn.cpp:1255 -msgid "Olympus Zuiko Digital Pro ED 35-100mm F2.0" -msgstr "" - -#: src/olympusmn.cpp:1256 -msgid "Olympus Zuiko Digital 14-45mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1257 -msgid "Olympus Zuiko Digital 35mm F3.5 Macro" -msgstr "" - -#: src/olympusmn.cpp:1258 -msgid "Olympus Zuiko Digital 17.5-45mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1260 -msgid "Olympus Zuiko Digital ED 40-150mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1261 -msgid "Olympus Zuiko Digital ED 50-200mm F2.8-3.5 SWD" -msgstr "" - -#: src/olympusmn.cpp:1262 -msgid "Olympus Zuiko Digital ED 12-60mm F2.8-4.0 SWD" -msgstr "" - -#: src/olympusmn.cpp:1263 -msgid "Olympus Zuiko Digital ED 14-35mm F2.0 SWD" -msgstr "" - -#: src/olympusmn.cpp:1264 -msgid "Olympus Zuiko Digital 25mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1265 -msgid "Olympus Zuiko Digital ED 9-18mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1266 -msgid "Olympus Zuiko Digital 14-54mm F2.8-3.5 II" -msgstr "" - -#: src/olympusmn.cpp:1267 -msgid "Sigma 18-50mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1268 -msgid "Sigma 55-200mm F4.0-5.6 DC" -msgstr "" - -#: src/olympusmn.cpp:1269 -msgid "Sigma 18-125mm F3.5-5.6 DC" -msgstr "" - -#: src/olympusmn.cpp:1270 -msgid "Sigma 18-125mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1271 -msgid "Sigma 30mm F1.4" -msgstr "" - -#: src/olympusmn.cpp:1272 src/olympusmn.cpp:1278 -msgid "Sigma 50-500mm F4.0-6.3 EX DG APO HSM RF" -msgstr "" - -#: src/olympusmn.cpp:1273 -msgid "Sigma 105mm F2.8 DG" -msgstr "" - -#: src/olympusmn.cpp:1274 -msgid "Sigma 150mm F2.8 DG HSM" -msgstr "" - -#: src/olympusmn.cpp:1275 -msgid "Sigma 24mm F1.8 EX DG Aspherical Macro" -msgstr "" - -#: src/olympusmn.cpp:1276 -msgid "Sigma 135-400mm F4.5-5.6 DG ASP APO RF" -msgstr "" - -#: src/olympusmn.cpp:1277 -msgid "Sigma 300-800mm F5.6 EX DG APO" -msgstr "" - -#: src/olympusmn.cpp:1279 -msgid "Sigma 10-20mm F4.0-5.6 EX DC HSM" -msgstr "" - -#: src/olympusmn.cpp:1280 src/olympusmn.cpp:1289 -msgid "Leica D Vario Elmarit 14-50mm F2.8-3.5 Asph." -msgstr "" - -#: src/olympusmn.cpp:1281 -msgid "Lumix G Vario 14-45mm F3.5-5.6 Asph. Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1282 src/olympusmn.cpp:1290 -msgid "Leica D Summilux 25mm F1.4 Asph." -msgstr "" - -#: src/olympusmn.cpp:1283 -msgid "Lumix G Vario 45-200mm F4-5.6 Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1284 -msgid "Leica D Vario Elmar 14-50mm F3.8-5.6 Asph." -msgstr "" - -#: src/olympusmn.cpp:1285 -msgid "Lumix G Vario HD 14-140mm F4-5.8 Asph. Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1286 -msgid "Leica D Vario Elmar 14-150mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1287 -msgid "Lumix G Vario 7-14mm F4 Asph." -msgstr "" - -#: src/olympusmn.cpp:1288 -msgid "Lumix G 20mm F1.7 Asph." -msgstr "" - -#: src/olympusmn.cpp:1338 -msgid "Olympus Zuiko Digital EC-14 1.4x Teleconverter" -msgstr "" - -#: src/olympusmn.cpp:1339 -msgid "Olympus EX-25 Extension Tube" -msgstr "" - -#: src/olympusmn.cpp:1340 -msgid "Olympus Zuiko Digital EC-20 2.0x Teleconverter" -msgstr "" - -#: src/olympusmn.cpp:1382 -msgid "S-AF" -msgstr "" - -#: src/olympusmn.cpp:1383 -msgid "C-AF" -msgstr "" - -#: src/olympusmn.cpp:1386 -#, fuzzy -msgid "Imager AF" -msgstr "ID unique de l'image" - -#: src/olympusmn.cpp:1387 -#, fuzzy -msgid "AF sensor" -msgstr "Point AF utilisé" - -#: src/olympusmn.cpp:1433 -#, fuzzy -msgid "Soft Focus" -msgstr "Mise au point Spot" - -#: src/olympusmn.cpp:1434 -msgid "Pop Art" -msgstr "" - -#: src/olympusmn.cpp:1435 -msgid "Pale & Light Color" -msgstr "" - -#: src/olympusmn.cpp:1436 -#, fuzzy -msgid "Light Tone" -msgstr "Zone droite" - -#: src/olympusmn.cpp:1437 -msgid "Pin Hole" -msgstr "" - -#: src/olympusmn.cpp:1438 -msgid "Grainy Film" -msgstr "" - -#: src/olympusmn.cpp:1439 -#, fuzzy -msgid "Diorama" -msgstr "Panorama" - -#: src/olympusmn.cpp:1440 -#, fuzzy -msgid "Cross Process" -msgstr "Mode mise au point" - -#: src/olympusmn.cpp:1441 -#, fuzzy -msgid "Fish Eye" -msgstr "Puissance flash" - -#: src/olympusmn.cpp:1442 -msgid "Drawing" -msgstr "" - -#: src/olympusmn.cpp:1489 -#, fuzzy -msgid "Left (or n/a)" -msgstr "Zone gauche" - -#: src/olympusmn.cpp:1490 src/olympusmn.cpp:1508 -#, fuzzy -msgid "Center (horizontal)" -msgstr "Zone centrale (orientation horizontale)" - -#: src/olympusmn.cpp:1492 src/olympusmn.cpp:1519 -#, fuzzy -msgid "Center (vertical)" -msgstr "Zone centrale (orientation verticale)" - -#: src/olympusmn.cpp:1503 -msgid "Top-left (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1504 -#, fuzzy -msgid "Top-center (horizontal)" -msgstr "Zone centrale (orientation horizontale)" - -#: src/olympusmn.cpp:1505 -msgid "Top-right (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1506 -#, fuzzy -msgid "Left (horizontal)" -msgstr "Horizontale (normale)" - -#: src/olympusmn.cpp:1507 -msgid "Mid-left (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1509 -msgid "Mid-right (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1510 -#, fuzzy -msgid "Right (horizontal)" -msgstr "Horizontale (normale)" - -#: src/olympusmn.cpp:1511 -#, fuzzy -msgid "Bottom-left (horizontal)" -msgstr "Bas-gauche" - -#: src/olympusmn.cpp:1512 -#, fuzzy -msgid "Bottom-center (horizontal)" -msgstr "Bas-gauche" - -#: src/olympusmn.cpp:1513 -#, fuzzy -msgid "Bottom-right (horizontal)" -msgstr "Bas-droit" - -#: src/olympusmn.cpp:1514 -msgid "Top-left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1515 -#, fuzzy -msgid "Top-center (vertical)" -msgstr "centre" - -#: src/olympusmn.cpp:1516 -#, fuzzy -msgid "Top-right (vertical)" -msgstr "Haut-droit" - -#: src/olympusmn.cpp:1517 -msgid "Left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1518 -msgid "Mid-left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1520 -#, fuzzy -msgid "Mid-right (vertical)" -msgstr "milieu-droit" - -#: src/olympusmn.cpp:1521 -msgid "Right (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1522 -#, fuzzy -msgid "Bottom-left (vertical)" -msgstr "Bas-gauche" - -#: src/olympusmn.cpp:1523 -#, fuzzy -msgid "Bottom-center (vertical)" -msgstr "Bas-gauche" - -#: src/olympusmn.cpp:1524 -#, fuzzy -msgid "Bottom-right (vertical)" -msgstr "Bas-droit" - -#: src/olympusmn.cpp:1561 -#, fuzzy -msgid "Single Target" -msgstr "Zone unique" - -#: src/olympusmn.cpp:1562 -#, fuzzy -msgid "All Target" -msgstr "cible" - -#: src/olympusmn.cpp:1563 -#, fuzzy -msgid "Dynamic Single Target" -msgstr "Réglage gamme dynamique" - -#: src/panasonicmn.cpp:57 src/pentaxmn.cpp:348 src/pentaxmn.cpp:361 -msgid "Very High" -msgstr "Très haute" - -#: src/panasonicmn.cpp:59 -#, fuzzy -msgid "Motion Picture" -msgstr "Mode d'image" - -#: src/panasonicmn.cpp:67 -msgid "Halogen" -msgstr "Halogène" - -#: src/panasonicmn.cpp:79 -#, fuzzy -msgid "Auto, focus button" -msgstr "Mise au point auto" - -#: src/panasonicmn.cpp:80 src/panasonicmn.cpp:81 -#, fuzzy -msgid "Auto, continuous" -msgstr "Continue" - -#: src/panasonicmn.cpp:95 -msgid "Tele-macro" -msgstr "" - -#: src/panasonicmn.cpp:103 -#, fuzzy -msgid "Scenery" -msgstr "centre" - -#: src/panasonicmn.cpp:108 -msgid "Shutter-speed priority" -msgstr "Priorité vitesse obturation" - -#: src/panasonicmn.cpp:112 -#, fuzzy -msgid "Movie preview" -msgstr "Écriture au format" - -#: src/panasonicmn.cpp:113 -#, fuzzy -msgid "Panning" -msgstr "Avertissement" - -#: src/panasonicmn.cpp:114 -#, fuzzy -msgid "Simple" -msgstr "Simple" - -#: src/panasonicmn.cpp:115 -#, fuzzy -msgid "Color effects" -msgstr "Effet de couleurs" - -#: src/panasonicmn.cpp:119 -msgid "Night scenery" -msgstr "Scène de nuit" - -#: src/panasonicmn.cpp:121 -#, fuzzy -msgid "Baby" -msgstr "de" - -#: src/panasonicmn.cpp:122 -#, fuzzy -msgid "Soft skin" -msgstr "Doux" - -#: src/panasonicmn.cpp:123 src/pentaxmn.cpp:484 -msgid "Candlelight" -msgstr "Lumière de bougie" - -#: src/panasonicmn.cpp:124 -#, fuzzy -msgid "Starry night" -msgstr "Lumière standard A" - -#: src/panasonicmn.cpp:125 -#, fuzzy -msgid "High sensitivity" -msgstr "Sensibilité spectrale" - -#: src/panasonicmn.cpp:126 -#, fuzzy -msgid "Panorama assist" -msgstr "Panorama" - -#: src/panasonicmn.cpp:129 -msgid "Aerial photo" -msgstr "" - -#: src/panasonicmn.cpp:132 -#, fuzzy -msgid "Intelligent ISO" -msgstr "Longueur intervalle" - -#: src/panasonicmn.cpp:133 -#, fuzzy -msgid "High speed continuous shooting" -msgstr "Paramètre de la mise au point continue" - -#: src/panasonicmn.cpp:134 -#, fuzzy -msgid "Intelligent auto" -msgstr "Longueur intervalle" - -#: src/panasonicmn.cpp:146 -msgid "Warm" -msgstr "Chaud" - -#: src/panasonicmn.cpp:147 -msgid "Cool" -msgstr "Froid" - -#: src/panasonicmn.cpp:155 -msgid "Low/High quality" -msgstr "Qualité basse/haute" - -#: src/panasonicmn.cpp:156 -msgid "Infinite" -msgstr "Infini" - -#: src/panasonicmn.cpp:164 -#, fuzzy -msgid "Medium low" -msgstr "Moyenne 1" - -#: src/panasonicmn.cpp:165 -#, fuzzy -msgid "Medium high" -msgstr "Moyenne 1" - -#: src/panasonicmn.cpp:175 -msgid "Low (-1)" -msgstr "" - -#: src/panasonicmn.cpp:176 -#, fuzzy -msgid "High (+1)" -msgstr "Élevée" - -#: src/panasonicmn.cpp:177 -msgid "Lowest (-2)" -msgstr "" - -#: src/panasonicmn.cpp:178 -#, fuzzy -msgid "Highest (+2)" -msgstr "Élevée" - -#: src/panasonicmn.cpp:184 -msgid "10s" -msgstr "10s" - -#: src/panasonicmn.cpp:185 -msgid "2s" -msgstr "2s" - -#: src/panasonicmn.cpp:205 -msgid "EX optics" -msgstr "" - -#: src/panasonicmn.cpp:212 -msgid "Telephoto" -msgstr "" - -#: src/panasonicmn.cpp:219 src/properties.cpp:890 -#, fuzzy -msgid "Home" -msgstr "Rome" - -#: src/panasonicmn.cpp:225 -#, fuzzy -msgid "Standard (color)" -msgstr "Formulaire standard" - -#: src/panasonicmn.cpp:226 -#, fuzzy -msgid "Dynamic (color)" -msgstr "Zone dynamique" - -#: src/panasonicmn.cpp:227 -#, fuzzy -msgid "Nature (color)" -msgstr "Couleur naturelle" - -#: src/panasonicmn.cpp:228 -#, fuzzy -msgid "Smooth (color)" -msgstr "Formulaire standard" - -#: src/panasonicmn.cpp:229 -#, fuzzy -msgid "Standard (B&W)" -msgstr "Standard (100%)" - -#: src/panasonicmn.cpp:230 -#, fuzzy -msgid "Dynamic (B&W)" -msgstr "Zone dynamique" - -#: src/panasonicmn.cpp:231 -#, fuzzy -msgid "Smooth (B&W)" -msgstr "Standard (100%)" - -#: src/panasonicmn.cpp:245 -msgid "Audio" -msgstr "Audio" - -#: src/panasonicmn.cpp:248 -msgid "White balance adjustment" -msgstr "Ajustement de la balance des blancs" - -#: src/panasonicmn.cpp:249 -msgid "FlashBias" -msgstr "Biais du flash" - -#: src/panasonicmn.cpp:251 src/tags.cpp:190 -msgid "Exif version" -msgstr "Version d'exif" - -#: src/panasonicmn.cpp:253 -msgid "Color Effect" -msgstr "Effet de couleurs" - -#: src/panasonicmn.cpp:253 -msgid "Color effect" -msgstr "Effet de couleurs" - -#: src/panasonicmn.cpp:254 -msgid "" -"Time in 1/100 s from when the camera was powered on to when the image is " -"written to memory card" -msgstr "" - -#: src/panasonicmn.cpp:255 -msgid "Burst Mode" -msgstr "Mode rafale" - -#: src/panasonicmn.cpp:255 -msgid "Burst mode" -msgstr "Mode rafale" - -#: src/panasonicmn.cpp:258 -msgid "NoiseReduction" -msgstr "Réduction de bruit" - -#: src/panasonicmn.cpp:259 -msgid "Self Timer" -msgstr "Retardateur" - -#: src/panasonicmn.cpp:264 src/panasonicmn.cpp:286 -#, fuzzy -msgid "Baby Age" -msgstr "de" - -#: src/panasonicmn.cpp:264 src/panasonicmn.cpp:286 -msgid "Baby (or pet) age" -msgstr "" - -#: src/panasonicmn.cpp:265 -#, fuzzy -msgid "Optical Zoom Mode" -msgstr "Mode spécial" - -#: src/panasonicmn.cpp:265 -#, fuzzy -msgid "Optical zoom mode" -msgstr "Mode Pellicule" - -#: src/panasonicmn.cpp:266 -#, fuzzy -msgid "Conversion Lens" -msgstr "Version" - -#: src/panasonicmn.cpp:266 -#, fuzzy -msgid "Conversion lens" -msgstr "Valeur de luminosité" - -#: src/panasonicmn.cpp:267 -msgid "Travel Day" -msgstr "" - -#: src/panasonicmn.cpp:267 -msgid "Travel day" -msgstr "" - -#: src/panasonicmn.cpp:269 -#, fuzzy -msgid "World Time Location" -msgstr "Lieu précis" - -#: src/panasonicmn.cpp:269 -#, fuzzy -msgid "World time location" -msgstr "Lieu précis" - -#: src/panasonicmn.cpp:270 -#, fuzzy -msgid "Program ISO" -msgstr "Logiciel" - -#: src/panasonicmn.cpp:274 -#, fuzzy -msgid "WB Adjust AB" -msgstr "Ajustement de teinte" - -#: src/panasonicmn.cpp:274 -msgid "WB adjust AB. Positive is a shift toward blue." -msgstr "" - -#: src/panasonicmn.cpp:275 -#, fuzzy -msgid "WB Adjust GM" -msgstr "Ajustement de teinte" - -#: src/panasonicmn.cpp:275 -msgid "WBAdjustGM. Positive is a shift toward green." -msgstr "" - -#: src/panasonicmn.cpp:278 -#, fuzzy -msgid "Accessory Type" -msgstr "Type d'objectif" - -#: src/panasonicmn.cpp:278 -#, fuzzy -msgid "Accessory type" -msgstr "Type d'objectif" - -#: src/panasonicmn.cpp:281 -#, fuzzy -msgid "MakerNote Version" -msgstr "Version des Notes du fabriquant" - -#: src/panasonicmn.cpp:281 -#, fuzzy -msgid "MakerNote version" -msgstr "Version des Notes du fabriquant" - -#: src/panasonicmn.cpp:283 src/panasonicmn.cpp:345 -#, fuzzy -msgid "WB Red Level" -msgstr "Niveau de noir" - -#: src/panasonicmn.cpp:283 src/panasonicmn.cpp:345 -#, fuzzy -msgid "WB red level" -msgstr "Niveau de noir" - -#: src/panasonicmn.cpp:284 src/panasonicmn.cpp:346 -#, fuzzy -msgid "WB Green Level" -msgstr "Niveau de noir" - -#: src/panasonicmn.cpp:284 src/panasonicmn.cpp:346 -#, fuzzy -msgid "WB green level" -msgstr "Niveau de noir" - -#: src/panasonicmn.cpp:285 src/panasonicmn.cpp:347 -#, fuzzy -msgid "WB Blue Level" -msgstr "Niveau de noir" - -#: src/panasonicmn.cpp:285 src/panasonicmn.cpp:347 -#, fuzzy -msgid "WB blue level" -msgstr "Niveau de noir" - -#: src/panasonicmn.cpp:288 -msgid "Unknown PanasonicMakerNote tag" -msgstr "Marqueur de note du fabriquant Panasonic inconnu" - -#: src/panasonicmn.cpp:305 -#, fuzzy -msgid "Spot mode on" -msgstr "Mode doux 1" - -#: src/panasonicmn.cpp:306 -msgid "Spot mode off or 3-area (high speed)" -msgstr "" - -#: src/panasonicmn.cpp:307 -#, fuzzy -msgid "Spot focussing" -msgstr "Mise au point Spot" - -#: src/panasonicmn.cpp:308 -msgid "5-area" -msgstr "" - -#: src/panasonicmn.cpp:309 -msgid "1-area" -msgstr "" - -#: src/panasonicmn.cpp:310 -msgid "1-area (high speed)" -msgstr "" - -#: src/panasonicmn.cpp:311 -msgid "3-area (auto)" -msgstr "" - -#: src/panasonicmn.cpp:312 -msgid "3-area (left)" -msgstr "" - -#: src/panasonicmn.cpp:313 -msgid "3-area (center)" -msgstr "" - -#: src/panasonicmn.cpp:314 -msgid "3-area (right)" -msgstr "" - -#: src/panasonicmn.cpp:326 -msgid " EV" -msgstr " EV" - -#: src/panasonicmn.cpp:335 -#, fuzzy -msgid "Panasonic raw version" -msgstr "Version de microcode" - -#: src/panasonicmn.cpp:336 -#, fuzzy -msgid "Sensor Width" -msgstr "Droit d'auteur" - -#: src/panasonicmn.cpp:336 -#, fuzzy -msgid "Sensor width" -msgstr "Droit d'auteur" - -#: src/panasonicmn.cpp:337 -#, fuzzy -msgid "Sensor Height" -msgstr "Nettoyage capteur" - -#: src/panasonicmn.cpp:337 -#, fuzzy -msgid "Sensor height" -msgstr "Nettoyage capteur" - -#: src/panasonicmn.cpp:338 -#, fuzzy -msgid "Sensor Top Border" -msgstr "Température de la sonde" - -#: src/panasonicmn.cpp:338 -#, fuzzy -msgid "Sensor top border" -msgstr "Température de la sonde" - -#: src/panasonicmn.cpp:339 -#, fuzzy -msgid "Sensor Left Border" -msgstr "Température de la sonde" - -#: src/panasonicmn.cpp:339 -#, fuzzy -msgid "Sensor left border" -msgstr "Température de la sonde" - -#: src/panasonicmn.cpp:342 -msgid "Red balance (found in Digilux 2 RAW images)" -msgstr "" - -#: src/panasonicmn.cpp:349 src/tags.cpp:465 -msgid "Manufacturer" -msgstr "Constructeur" - -#: src/panasonicmn.cpp:349 -msgid "The manufacturer of the recording equipment" -msgstr "" - -#: src/panasonicmn.cpp:350 src/properties.cpp:518 src/tags.cpp:471 -msgid "Model" -msgstr "Modèle" - -#: src/panasonicmn.cpp:350 -#, fuzzy -msgid "The model name or model number of the equipment" -msgstr "Le type de source lumineuse." - -#: src/panasonicmn.cpp:351 src/tags.cpp:477 -#, fuzzy -msgid "Strip Offsets" -msgstr "Décalage aperçu" - -#: src/panasonicmn.cpp:351 -#, fuzzy -msgid "Strip offsets" -msgstr "Décalage aperçu" - -#: src/panasonicmn.cpp:352 src/properties.cpp:485 src/tags.cpp:484 -msgid "Orientation" -msgstr "Orientation" - -#: src/panasonicmn.cpp:353 -msgid "Rows Per Strip" -msgstr "" - -#: src/panasonicmn.cpp:353 -#, fuzzy -msgid "The number of rows per strip" -msgstr "Le nombre F." - -#: src/panasonicmn.cpp:354 -#, fuzzy -msgid "Strip Byte Counts" -msgstr "Priorité obturation" - -#: src/panasonicmn.cpp:354 -#, fuzzy -msgid "Strip byte counts" -msgstr "Priorité obturation" - -#: src/panasonicmn.cpp:355 -#, fuzzy -msgid "Raw Data Offset" -msgstr "Décalage IFD" - -#: src/panasonicmn.cpp:355 -#, fuzzy -msgid "Raw data offset" -msgstr "En-tête, décalage" - -#: src/panasonicmn.cpp:356 src/tags.cpp:790 -msgid "Exif IFD Pointer" -msgstr "Pointeur IFD Exif" - -#: src/panasonicmn.cpp:356 -msgid "A pointer to the Exif IFD" -msgstr "" - -#: src/panasonicmn.cpp:357 src/tags.cpp:801 -msgid "GPS Info IFD Pointer" -msgstr "Pointeur IFD information GPS" - -#: src/panasonicmn.cpp:357 -msgid "A pointer to the GPS Info IFD" -msgstr "" - -#: src/panasonicmn.cpp:359 -#, fuzzy -msgid "Unknown PanasonicRaw tag" -msgstr "Marqueur de note du fabriquant Panasonic inconnu" - -#: src/pentaxmn.cpp:57 -msgid "Night-Scene" -msgstr "Scène de nuit" - -#: src/pentaxmn.cpp:63 -#, fuzzy -msgid "Optio 330/430" -msgstr "Оption" - -#: src/pentaxmn.cpp:64 -#, fuzzy -msgid "Optio 230" -msgstr "Оption" - -#: src/pentaxmn.cpp:65 -#, fuzzy -msgid "Optio 330GS" -msgstr "Оption" - -#: src/pentaxmn.cpp:66 -#, fuzzy -msgid "Optio 450/550" -msgstr "Оption" - -#: src/pentaxmn.cpp:67 -#, fuzzy -msgid "Optio S" -msgstr "Оption" - -#: src/pentaxmn.cpp:68 -msgid "*ist D" -msgstr "" - -#: src/pentaxmn.cpp:69 -#, fuzzy -msgid "Optio 33L" -msgstr "Оption" - -#: src/pentaxmn.cpp:70 -#, fuzzy -msgid "Optio 33LF" -msgstr "Оption" - -#: src/pentaxmn.cpp:71 -msgid "Optio 33WR/43WR/555" -msgstr "" - -#: src/pentaxmn.cpp:72 -#, fuzzy -msgid "Optio S4" -msgstr "Оption" - -#: src/pentaxmn.cpp:73 -#, fuzzy -msgid "Optio MX" -msgstr "Оption" - -#: src/pentaxmn.cpp:74 -#, fuzzy -msgid "Optio S40" -msgstr "Оption" - -#: src/pentaxmn.cpp:75 -#, fuzzy -msgid "Optio S4i" -msgstr "Оption" - -#: src/pentaxmn.cpp:76 -#, fuzzy -msgid "Optio 30" -msgstr "Оption" - -#: src/pentaxmn.cpp:77 -#, fuzzy -msgid "Optio S30" -msgstr "Оption" - -#: src/pentaxmn.cpp:78 -#, fuzzy -msgid "Optio 750Z" -msgstr "Оption" - -#: src/pentaxmn.cpp:79 -#, fuzzy -msgid "Optio SV" -msgstr "Оption" - -#: src/pentaxmn.cpp:80 -#, fuzzy -msgid "Optio SVi" -msgstr "Оption" - -#: src/pentaxmn.cpp:81 -#, fuzzy -msgid "Optio X" -msgstr "Оption" - -#: src/pentaxmn.cpp:82 -#, fuzzy -msgid "Optio S5i" -msgstr "Оption" - -#: src/pentaxmn.cpp:83 -#, fuzzy -msgid "Optio S50" -msgstr "Оption" - -#: src/pentaxmn.cpp:84 -msgid "*ist DS" -msgstr "" - -#: src/pentaxmn.cpp:85 -#, fuzzy -msgid "Optio MX4" -msgstr "Оption" - -#: src/pentaxmn.cpp:86 -#, fuzzy -msgid "Optio S5n" -msgstr "Оption" - -#: src/pentaxmn.cpp:87 -#, fuzzy -msgid "Optio WP" -msgstr "Оption" - -#: src/pentaxmn.cpp:88 -#, fuzzy -msgid "Optio S55" -msgstr "Оption" - -#: src/pentaxmn.cpp:89 -#, fuzzy -msgid "Optio S5z" -msgstr "Оption" - -#: src/pentaxmn.cpp:90 -msgid "*ist DL" -msgstr "" - -#: src/pentaxmn.cpp:91 -#, fuzzy -msgid "Optio S60" -msgstr "Оption" - -#: src/pentaxmn.cpp:92 -#, fuzzy -msgid "Optio S45" -msgstr "Оption" - -#: src/pentaxmn.cpp:93 -#, fuzzy -msgid "Optio S6" -msgstr "Оption" - -#: src/pentaxmn.cpp:94 -#, fuzzy -msgid "Optio WPi" -msgstr "Оption" - -#: src/pentaxmn.cpp:95 -msgid "BenQ DC X600" -msgstr "" - -#: src/pentaxmn.cpp:96 -msgid "*ist DS2" -msgstr "" - -#: src/pentaxmn.cpp:97 -msgid "Samsung GX-1S" -msgstr "" - -#: src/pentaxmn.cpp:98 -#, fuzzy -msgid "Optio A10" -msgstr "Оption" - -#: src/pentaxmn.cpp:99 -msgid "*ist DL2" -msgstr "" - -#: src/pentaxmn.cpp:100 -msgid "Samsung GX-1L" -msgstr "" - -#: src/pentaxmn.cpp:101 -msgid "K100D" -msgstr "" - -#: src/pentaxmn.cpp:102 -msgid "K110D" -msgstr "" - -#: src/pentaxmn.cpp:103 -msgid "K100D Super" -msgstr "" - -#: src/pentaxmn.cpp:104 -#, fuzzy -msgid "Optio T10/T20" -msgstr "Оption" - -#: src/pentaxmn.cpp:105 -#, fuzzy -msgid "Optio W10" -msgstr "Оption" - -#: src/pentaxmn.cpp:106 -#, fuzzy -msgid "Optio M10" -msgstr "Оption" - -#: src/pentaxmn.cpp:107 -msgid "K10D" -msgstr "" - -#: src/pentaxmn.cpp:108 -msgid "Samsung GX10" -msgstr "" - -#: src/pentaxmn.cpp:109 -#, fuzzy -msgid "Optio S7" -msgstr "Оption" - -#: src/pentaxmn.cpp:110 -#, fuzzy -msgid "Optio L20" -msgstr "Оption" - -#: src/pentaxmn.cpp:111 -#, fuzzy -msgid "Optio M20" -msgstr "Оption" - -#: src/pentaxmn.cpp:112 -#, fuzzy -msgid "Optio W20" -msgstr "Оption" - -#: src/pentaxmn.cpp:113 -#, fuzzy -msgid "Optio A20" -msgstr "Оption" - -#: src/pentaxmn.cpp:114 -#, fuzzy -msgid "Optio M30" -msgstr "Оption" - -#: src/pentaxmn.cpp:115 -#, fuzzy -msgid "Optio E30" -msgstr "Оption" - -#: src/pentaxmn.cpp:116 -#, fuzzy -msgid "Optio E35" -msgstr "Оption" - -#: src/pentaxmn.cpp:117 -#, fuzzy -msgid "Optio T30" -msgstr "Оption" - -#: src/pentaxmn.cpp:118 -#, fuzzy -msgid "Optio W30" -msgstr "Оption" - -#: src/pentaxmn.cpp:119 -#, fuzzy -msgid "Optio A30" -msgstr "Оption" - -#: src/pentaxmn.cpp:120 -#, fuzzy -msgid "Optio E40" -msgstr "Оption" - -#: src/pentaxmn.cpp:121 -#, fuzzy -msgid "Optio M40" -msgstr "Оption" - -#: src/pentaxmn.cpp:122 -#, fuzzy -msgid "Optio Z10" -msgstr "Оption" - -#: src/pentaxmn.cpp:123 -msgid "K20D" -msgstr "" - -#: src/pentaxmn.cpp:124 -msgid "Samsung GX20" -msgstr "" - -#: src/pentaxmn.cpp:125 -#, fuzzy -msgid "Optio S10" -msgstr "Оption" - -#: src/pentaxmn.cpp:126 -#, fuzzy -msgid "Optio A40" -msgstr "Оption" - -#: src/pentaxmn.cpp:127 -#, fuzzy -msgid "Optio V10" -msgstr "Оption" - -#: src/pentaxmn.cpp:128 -msgid "K200D" -msgstr "" - -#: src/pentaxmn.cpp:129 -#, fuzzy -msgid "Optio S12" -msgstr "Оption" - -#: src/pentaxmn.cpp:130 -#, fuzzy -msgid "Optio E50" -msgstr "Оption" - -#: src/pentaxmn.cpp:131 -#, fuzzy -msgid "Optio M50" -msgstr "Оption" - -#: src/pentaxmn.cpp:132 -#, fuzzy -msgid "Optio V20" -msgstr "Оption" - -#: src/pentaxmn.cpp:133 -#, fuzzy -msgid "Optio W60" -msgstr "Оption" - -#: src/pentaxmn.cpp:134 -#, fuzzy -msgid "Optio M60" -msgstr "Оption" - -#: src/pentaxmn.cpp:135 -#, fuzzy -msgid "Optio E60" -msgstr "Оption" - -#: src/pentaxmn.cpp:136 -msgid "K2000" -msgstr "" - -#: src/pentaxmn.cpp:137 -msgid "K-m" -msgstr "" - -#: src/pentaxmn.cpp:138 -#, fuzzy -msgid "Optio P70" -msgstr "Оption" - -#: src/pentaxmn.cpp:139 -#, fuzzy -msgid "Optio E70" -msgstr "Оption" - -#: src/pentaxmn.cpp:140 -msgid "X70" -msgstr "" - -#: src/pentaxmn.cpp:141 -msgid "K-7" -msgstr "" - -#: src/pentaxmn.cpp:142 -#, fuzzy -msgid "Optio W80" -msgstr "Оption" - -#: src/pentaxmn.cpp:143 -#, fuzzy -msgid "Optio P80" -msgstr "Оption" - -#: src/pentaxmn.cpp:144 -#, fuzzy -msgid "Optio WS80" -msgstr "Оption" - -#: src/pentaxmn.cpp:145 -msgid "K-x" -msgstr "" - -#: src/pentaxmn.cpp:146 -msgid "645D" -msgstr "" - -#: src/pentaxmn.cpp:147 -#, fuzzy -msgid "Optio I-10" -msgstr "Оption" - -#: src/pentaxmn.cpp:152 -msgid "Good" -msgstr "Bien" - -#: src/pentaxmn.cpp:153 -msgid "Better" -msgstr "Mieux" - -#: src/pentaxmn.cpp:154 -msgid "Best" -msgstr "Meilleur" - -#: src/pentaxmn.cpp:155 -msgid "TIFF" -msgstr "TIFF" - -#: src/pentaxmn.cpp:157 -msgid "Premium" -msgstr "Premium" - -#: src/pentaxmn.cpp:162 -msgid "640x480" -msgstr "640x480" - -#: src/pentaxmn.cpp:164 -msgid "1024x768" -msgstr "1024x768" - -#: src/pentaxmn.cpp:165 -msgid "1280x960" -msgstr "1280x960" - -#: src/pentaxmn.cpp:166 -msgid "1600x1200" -msgstr "1600x1200" - -#: src/pentaxmn.cpp:167 -msgid "2048x1536" -msgstr "2048x1536" - -#: src/pentaxmn.cpp:168 -msgid "2560x1920 or 2304x1728" -msgstr "2560x1920 ou 2304x1728" - -#: src/pentaxmn.cpp:169 -msgid "3072x2304" -msgstr "3072x2304" - -#: src/pentaxmn.cpp:170 -msgid "3264x2448" -msgstr "3264x2448" - -#: src/pentaxmn.cpp:171 -msgid "320x240" -msgstr "320x240" - -#: src/pentaxmn.cpp:172 -msgid "2288x1712" -msgstr "2288x1712" - -#: src/pentaxmn.cpp:173 -msgid "2592x1944" -msgstr "2592x1944" - -#: src/pentaxmn.cpp:174 -msgid "2304x1728 or 2592x1944" -msgstr "2304x1728 ou 2592x1944" - -#: src/pentaxmn.cpp:175 -msgid "3056x2296" -msgstr "3056x2296" - -#: src/pentaxmn.cpp:176 -msgid "2816x2212 or 2816x2112" -msgstr "2816x2212 ou 2816x2112" - -#: src/pentaxmn.cpp:177 -msgid "3648x2736" -msgstr "3648x2736" - -#: src/pentaxmn.cpp:182 -msgid "Auto, Did not fire" -msgstr "Flash auto, non déclenché" - -#: src/pentaxmn.cpp:184 -msgid "Auto, Did not fire, Red-eye reduction" -msgstr "Flash auto non déclenché, mode anti-yeux rouges" - -#: src/pentaxmn.cpp:185 -msgid "Auto, Fired" -msgstr "Flash automatique, déclenché" - -#: src/pentaxmn.cpp:187 -msgid "Auto, Fired, Red-eye reduction" -msgstr "Flash auto déclenché, mode anti-yeux rouges" - -#: src/pentaxmn.cpp:188 -msgid "On, Red-eye reduction" -msgstr "Activé, Mode anti-yeux rouges" - -#: src/pentaxmn.cpp:189 -msgid "On, Wireless" -msgstr "Activé, Sans fil" - -#: src/pentaxmn.cpp:190 -msgid "On, Soft" -msgstr "Activé, Doux" - -#: src/pentaxmn.cpp:191 -msgid "On, Slow-sync" -msgstr "Activé, Synchro lente" - -#: src/pentaxmn.cpp:192 -msgid "On, Slow-sync, Red-eye reduction" -msgstr "Flash déclenché, synchro lente, mode anti-yeux rouges" - -#: src/pentaxmn.cpp:193 -msgid "On, Trailing-curtain Sync" -msgstr "" - -#: src/pentaxmn.cpp:203 -#, fuzzy -msgid "Pan Focus" -msgstr "Continue" - -#: src/pentaxmn.cpp:204 -msgid "AF-S" -msgstr "" - -#: src/pentaxmn.cpp:205 -msgid "AF-C" -msgstr "" - -#: src/pentaxmn.cpp:206 -msgid "AF-A" -msgstr "" - -#: src/pentaxmn.cpp:212 -#, fuzzy -msgid "Fixed Center" -msgstr "Centre" - -#: src/pentaxmn.cpp:213 -#, fuzzy -msgid "Automatic Tracking AF" -msgstr "AF automatique" - -#: src/pentaxmn.cpp:214 -msgid "Face Recognition AF" -msgstr "" - -#: src/pentaxmn.cpp:231 -msgid "Fixed Center or multiple" -msgstr "" - -#: src/pentaxmn.cpp:233 -#, fuzzy -msgid "Top-center" -msgstr "centre" - -#: src/pentaxmn.cpp:239 -#, fuzzy -msgid "Bottom-center" -msgstr "Bas-gauche" - -#: src/pentaxmn.cpp:245 src/pentaxmn.cpp:267 src/pentaxmn.cpp:275 -#, fuzzy -msgid "50" -msgstr "D55" - -#: src/pentaxmn.cpp:246 -msgid "64" -msgstr "" - -#: src/pentaxmn.cpp:247 -msgid "80" -msgstr "" - -#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:268 src/pentaxmn.cpp:277 -#, fuzzy -msgid "100" -msgstr "10s" - -#: src/pentaxmn.cpp:249 -msgid "125" -msgstr "" - -#: src/pentaxmn.cpp:250 -#, fuzzy -msgid "160" -msgstr "10s" - -#: src/pentaxmn.cpp:251 src/pentaxmn.cpp:269 src/pentaxmn.cpp:270 -#: src/pentaxmn.cpp:279 -#, fuzzy -msgid "200" -msgstr "320x240" - -#: src/pentaxmn.cpp:252 -#, fuzzy -msgid "250" -msgstr "D55" - -#: src/pentaxmn.cpp:253 -#, fuzzy -msgid "320" -msgstr "320x240" - -#: src/pentaxmn.cpp:254 src/pentaxmn.cpp:271 src/pentaxmn.cpp:281 -#, fuzzy -msgid "400" -msgstr "640x480" - -#: src/pentaxmn.cpp:255 -#, fuzzy -msgid "500" -msgstr "D55" - -#: src/pentaxmn.cpp:256 -#, fuzzy -msgid "640" -msgstr "640x480" - -#: src/pentaxmn.cpp:257 src/pentaxmn.cpp:272 src/pentaxmn.cpp:283 -msgid "800" -msgstr "" - -#: src/pentaxmn.cpp:258 -#, fuzzy -msgid "1000" -msgstr "1600x1200" - -#: src/pentaxmn.cpp:259 -msgid "1250" -msgstr "" - -#: src/pentaxmn.cpp:260 src/pentaxmn.cpp:273 src/pentaxmn.cpp:285 -#, fuzzy -msgid "1600" -msgstr "1600x1200" - -#: src/pentaxmn.cpp:261 -msgid "2000" -msgstr "" - -#: src/pentaxmn.cpp:262 -msgid "2500" -msgstr "" - -#: src/pentaxmn.cpp:263 src/pentaxmn.cpp:274 src/pentaxmn.cpp:287 -#, fuzzy -msgid "3200" -msgstr "320x240" - -#: src/pentaxmn.cpp:264 -msgid "4000" -msgstr "" - -#: src/pentaxmn.cpp:265 -msgid "5000" -msgstr "" - -#: src/pentaxmn.cpp:266 -#, fuzzy -msgid "6400" -msgstr "640x480" - -#: src/pentaxmn.cpp:276 -msgid "70" -msgstr "" - -#: src/pentaxmn.cpp:278 -#, fuzzy -msgid "140" -msgstr "10s" - -#: src/pentaxmn.cpp:280 -msgid "280" -msgstr "" - -#: src/pentaxmn.cpp:282 -#, fuzzy -msgid "560" -msgstr "D55" - -#: src/pentaxmn.cpp:284 -#, fuzzy -msgid "1100" -msgstr "1600x1200" - -#: src/pentaxmn.cpp:286 -msgid "2200" -msgstr "" - -#: src/pentaxmn.cpp:304 -msgid "Multi Segment" -msgstr "Multi-segments" - -#: src/pentaxmn.cpp:305 -msgid "Center Weighted" -msgstr "Centre pondéré" - -#: src/pentaxmn.cpp:317 -msgid "DaylightFluorescent" -msgstr "Lumière du jour fluorescent" - -#: src/pentaxmn.cpp:318 -msgid "DaywhiteFluorescent" -msgstr "Lumière du jour fluorescent" - -#: src/pentaxmn.cpp:319 -#, fuzzy -msgid "WhiteFluorescent" -msgstr "Fluorescent" - -#: src/pentaxmn.cpp:324 -msgid "User Selected" -msgstr "Sélection utilisateur" - -#: src/pentaxmn.cpp:329 -msgid "Auto (Daylight)" -msgstr "Auto (lumière du jour)" - -#: src/pentaxmn.cpp:330 -#, fuzzy -msgid "Auto (Shade)" -msgstr "Ombragé" - -#: src/pentaxmn.cpp:331 -msgid "Auto (Flash)" -msgstr "Auto (Flash)" - -#: src/pentaxmn.cpp:332 -msgid "Auto (Tungsten)" -msgstr "Auto (Tungstène)" - -#: src/pentaxmn.cpp:333 -msgid "Auto (DaywhiteFluorescent)" -msgstr "Auto (lumière du jour fluorescent)" - -#: src/pentaxmn.cpp:334 -msgid "Auto (WhiteFluorescent)" -msgstr "Auto (lumière fluorescente)" - -#: src/pentaxmn.cpp:335 -msgid "Auto (Cloudy)" -msgstr "Auto (Nuageux)" - -#: src/pentaxmn.cpp:337 -msgid "Preset (Fireworks?)" -msgstr "Programme (Feux d'artifices)" - -#: src/pentaxmn.cpp:345 src/pentaxmn.cpp:358 -msgid "Med Low" -msgstr "Plutôt faible" - -#: src/pentaxmn.cpp:346 src/pentaxmn.cpp:359 -msgid "Med High" -msgstr "Plutôt élevé" - -#: src/pentaxmn.cpp:369 -msgid "Med Soft" -msgstr "Plutôt doux" - -#: src/pentaxmn.cpp:370 -msgid "Med Hard" -msgstr "Plutôt dur" - -#: src/pentaxmn.cpp:371 -msgid "Very Soft" -msgstr "Très doux" - -#: src/pentaxmn.cpp:372 -msgid "Very Hard" -msgstr "Très dur" - -#: src/pentaxmn.cpp:377 src/pentaxmn.cpp:960 -msgid "Home town" -msgstr "Maison" - -#: src/pentaxmn.cpp:383 -msgid "Pago Pago" -msgstr "Pago Pago" - -#: src/pentaxmn.cpp:384 -msgid "Honolulu" -msgstr "Honolulu" - -#: src/pentaxmn.cpp:385 -msgid "Anchorage" -msgstr "Anchorage" - -#: src/pentaxmn.cpp:386 -msgid "Vancouver" -msgstr "Vancouver" - -#: src/pentaxmn.cpp:387 -msgid "San Fransisco" -msgstr "San Fransisco" - -#: src/pentaxmn.cpp:388 -msgid "Los Angeles" -msgstr "Los Angeles" - -#: src/pentaxmn.cpp:389 -msgid "Calgary" -msgstr "Calgary" - -#: src/pentaxmn.cpp:390 -msgid "Denver" -msgstr "Denver" - -#: src/pentaxmn.cpp:391 -msgid "Mexico City" -msgstr "Mexico Ville" - -#: src/pentaxmn.cpp:392 -msgid "Chicago" -msgstr "Chicago" - -#: src/pentaxmn.cpp:393 -msgid "Miami" -msgstr "Miami" - -#: src/pentaxmn.cpp:394 -msgid "Toronto" -msgstr "Toronto" - -#: src/pentaxmn.cpp:395 -msgid "New York" -msgstr "New York" - -#: src/pentaxmn.cpp:396 -msgid "Santiago" -msgstr "Santiago" - -#: src/pentaxmn.cpp:397 -msgid "Caracus" -msgstr "Caracas" - -#: src/pentaxmn.cpp:398 -msgid "Halifax" -msgstr "Halifax" - -#: src/pentaxmn.cpp:399 -msgid "Buenos Aires" -msgstr "Buenos Aires" - -#: src/pentaxmn.cpp:400 -msgid "Sao Paulo" -msgstr "Sao Paulo" - -#: src/pentaxmn.cpp:401 -msgid "Rio de Janeiro" -msgstr "Rio de Janeiro" - -#: src/pentaxmn.cpp:402 -msgid "Madrid" -msgstr "Madrid" - -#: src/pentaxmn.cpp:403 -msgid "London" -msgstr "Londres" - -#: src/pentaxmn.cpp:404 -msgid "Paris" -msgstr "Paris" - -#: src/pentaxmn.cpp:405 -msgid "Milan" -msgstr "Milan" - -#: src/pentaxmn.cpp:406 -msgid "Rome" -msgstr "Rome" - -#: src/pentaxmn.cpp:407 -msgid "Berlin" -msgstr "Berlin" - -#: src/pentaxmn.cpp:408 -msgid "Johannesburg" -msgstr "Johannesburg" - -#: src/pentaxmn.cpp:409 -msgid "Istanbul" -msgstr "Istanbul" - -#: src/pentaxmn.cpp:410 -msgid "Cairo" -msgstr "Le Caire" - -#: src/pentaxmn.cpp:411 -msgid "Jerusalem" -msgstr "Jérusalem" - -#: src/pentaxmn.cpp:412 -msgid "Moscow" -msgstr "Moscou" - -#: src/pentaxmn.cpp:413 -msgid "Jeddah" -msgstr "Jeddah" - -#: src/pentaxmn.cpp:414 -msgid "Tehran" -msgstr "Téhéran" - -#: src/pentaxmn.cpp:415 -msgid "Dubai" -msgstr "Dubaï" - -#: src/pentaxmn.cpp:416 -msgid "Karachi" -msgstr "Karachi" - -#: src/pentaxmn.cpp:417 -msgid "Kabul" -msgstr "Kaboul" - -#: src/pentaxmn.cpp:418 -msgid "Male" -msgstr "Male" - -#: src/pentaxmn.cpp:419 -msgid "Delhi" -msgstr "Delhi" - -#: src/pentaxmn.cpp:420 -msgid "Colombo" -msgstr "Colombo" - -#: src/pentaxmn.cpp:421 -msgid "Kathmandu" -msgstr "Kathmandu" - -#: src/pentaxmn.cpp:422 -#, fuzzy -msgid "Dacca" -msgstr "Dackar" - -#: src/pentaxmn.cpp:423 -#, fuzzy -msgid "Yangon" -msgstr "Bangkok" - -#: src/pentaxmn.cpp:424 -msgid "Bangkok" -msgstr "Bangkok" - -#: src/pentaxmn.cpp:425 -msgid "Kuala Lumpur" -msgstr "Kuala Lumpur" - -#: src/pentaxmn.cpp:426 -#, fuzzy -msgid "Vientiane" -msgstr "Orientation" - -#: src/pentaxmn.cpp:427 -msgid "Singapore" -msgstr "Singapour" - -#: src/pentaxmn.cpp:428 -msgid "Phnom Penh" -msgstr "Phnom Penh" - -#: src/pentaxmn.cpp:429 -msgid "Ho Chi Minh" -msgstr "Ho Chi Minh" - -#: src/pentaxmn.cpp:430 -msgid "Jakarta" -msgstr "Jakarta" - -#: src/pentaxmn.cpp:431 -msgid "Hong Kong" -msgstr "Hong Kong" - -#: src/pentaxmn.cpp:432 -#, fuzzy -msgid "Perth" -msgstr "Animaux" - -#: src/pentaxmn.cpp:433 -msgid "Beijing" -msgstr "Pékin" - -#: src/pentaxmn.cpp:434 -msgid "Shanghai" -msgstr "Shanghai" - -#: src/pentaxmn.cpp:435 -msgid "Manila" -msgstr "Manille" - -#: src/pentaxmn.cpp:436 -msgid "Taipei" -msgstr "Taipei" - -#: src/pentaxmn.cpp:437 -msgid "Seoul" -msgstr "Séoul" - -#: src/pentaxmn.cpp:438 -msgid "Adelaide" -msgstr "Adélaïde" - -#: src/pentaxmn.cpp:439 -msgid "Tokyo" -msgstr "Tokyo" - -#: src/pentaxmn.cpp:440 -msgid "Guam" -msgstr "" - -#: src/pentaxmn.cpp:441 -msgid "Sydney" -msgstr "Sydney" - -#: src/pentaxmn.cpp:442 -msgid "Noumea" -msgstr "Nouméa" - -#: src/pentaxmn.cpp:443 -msgid "Wellington" -msgstr "Wellington" - -#: src/pentaxmn.cpp:444 -msgid "Auckland" -msgstr "Auckland" - -#: src/pentaxmn.cpp:445 -msgid "Lima" -msgstr "Lima" - -#: src/pentaxmn.cpp:446 -msgid "Dakar" -msgstr "Dackar" - -#: src/pentaxmn.cpp:447 -msgid "Algiers" -msgstr "Alger" - -#: src/pentaxmn.cpp:448 -msgid "Helsinki" -msgstr "Helsinki" - -#: src/pentaxmn.cpp:449 -msgid "Athens" -msgstr "Athène" - -#: src/pentaxmn.cpp:450 -msgid "Nairobi" -msgstr "Nairobi" - -#: src/pentaxmn.cpp:451 -msgid "Amsterdam" -msgstr "Amsterdam" - -#: src/pentaxmn.cpp:452 -msgid "Stockholm" -msgstr "Stockholm" - -#: src/pentaxmn.cpp:453 -msgid "Lisbon" -msgstr "Lisbonne" - -#: src/pentaxmn.cpp:454 -#, fuzzy -msgid "Copenhagen" -msgstr "Moyenne" - -#: src/pentaxmn.cpp:459 -msgid "Unprocessed" -msgstr "Non traité" - -#: src/pentaxmn.cpp:460 -msgid "Digital Filter" -msgstr "Filtre digital" - -#: src/pentaxmn.cpp:461 -msgid "Cropped" -msgstr "Rogné" - -#: src/pentaxmn.cpp:463 -msgid "Frame Synthesis?" -msgstr "" - -#: src/pentaxmn.cpp:469 src/pentaxmn.cpp:506 -#, fuzzy -msgid "MTF Program" -msgstr "Logiciel" - -#: src/pentaxmn.cpp:475 -msgid "Night Scene Portrait" -msgstr "Portrait de nuit" - -#: src/pentaxmn.cpp:476 -msgid "No Flash" -msgstr "Pas de flash" - -#: src/pentaxmn.cpp:479 -msgid "Surf & Snow" -msgstr "Surf et Neige" - -#: src/pentaxmn.cpp:482 -msgid "Kids" -msgstr "Enfants" - -#: src/pentaxmn.cpp:487 -#, fuzzy -msgid "Stage Lighting" -msgstr "Hauteur de l'image" - -#: src/pentaxmn.cpp:488 -#, fuzzy -msgid "Night Snap" -msgstr "Instantané de nuit" - -#: src/pentaxmn.cpp:490 -#, fuzzy -msgid "Auto PICT (Standard)" -msgstr "Auto (Paysage)" - -#: src/pentaxmn.cpp:491 -#, fuzzy -msgid "Auto PICT (Portrait)" -msgstr "Contraste" - -#: src/pentaxmn.cpp:492 -msgid "Auto PICT (Landscape)" -msgstr "Auto (Paysage)" - -#: src/pentaxmn.cpp:493 -#, fuzzy -msgid "Auto PICT (Macro)" -msgstr "Auto (Paysage)" - -#: src/pentaxmn.cpp:494 -#, fuzzy -msgid "Auto PICT (Sport)" -msgstr "Auto (Paysage)" - -#: src/pentaxmn.cpp:497 src/pentaxmn.cpp:507 -#, fuzzy -msgid "Green Mode" -msgstr "Mode contrôle" - -#: src/pentaxmn.cpp:498 src/pentaxmn.cpp:508 -msgid "Shutter Speed Priority" -msgstr "Priorité vitesse obturation" - -#: src/pentaxmn.cpp:499 src/pentaxmn.cpp:509 -msgid "Aperture Priority" -msgstr "Priorité ouverture" - -#: src/pentaxmn.cpp:501 src/pentaxmn.cpp:513 -msgid "Bulb" -msgstr "Bulb" - -#: src/pentaxmn.cpp:504 -#, fuzzy -msgid "Hi-speed Program" -msgstr "Programme d'exposition" - -#: src/pentaxmn.cpp:505 -#, fuzzy -msgid "DOF Program" -msgstr "Logiciel" - -#: src/pentaxmn.cpp:510 -#, fuzzy -msgid "Program Tv Shift" -msgstr "Logiciel" - -#: src/pentaxmn.cpp:511 -#, fuzzy -msgid "Program Av Shift" -msgstr "Logiciel" - -#: src/pentaxmn.cpp:514 -msgid "Aperture Priority (Off-Auto-Aperture)" -msgstr "Priorité ouverture (Av)" - -#: src/pentaxmn.cpp:515 -msgid "Manual (Off-Auto-Aperture)" -msgstr "Manuel" - -#: src/pentaxmn.cpp:516 -msgid "Bulb (Off-Auto-Aperture)" -msgstr "Bulb" - -#: src/pentaxmn.cpp:518 -msgid "Shutter Priority" -msgstr "Priorité obturation" - -#: src/pentaxmn.cpp:519 -msgid "Shutter & Aperture Priority AE" -msgstr "Priorité vitesse obturation et ouverture AE" - -#: src/pentaxmn.cpp:520 -msgid "Shutter & Aperture Priority AE (1)" -msgstr "Priorité vitesse obturation et ouverture AE (1)" - -#: src/pentaxmn.cpp:521 -#, fuzzy -msgid "Sensitivity Priority AE" -msgstr "Sensibilité spectrale" - -#: src/pentaxmn.cpp:522 -#, fuzzy -msgid "Sensitivity Priority AE (1)" -msgstr "Priorité vitesse obturation et ouverture AE (1)" - -#: src/pentaxmn.cpp:523 -#, fuzzy -msgid "Flash X-Sync Speed AE" -msgstr "Vitesse de synchro flash en mode Av" - -#: src/pentaxmn.cpp:524 -#, fuzzy -msgid "Flash X-Sync Speed AE (1)" -msgstr "Vitesse de synchro flash en mode Av" - -#: src/pentaxmn.cpp:527 -msgid "Video (30 fps)" -msgstr "" - -#: src/pentaxmn.cpp:528 -msgid "Video (24 fps)" -msgstr "" - -#: src/pentaxmn.cpp:535 -#, fuzzy -msgid "Continuous (Hi)" -msgstr "Continue" - -#: src/pentaxmn.cpp:536 src/sonymn.cpp:223 -#, fuzzy -msgid "Burst" -msgstr "Mode rafale" - -#: src/pentaxmn.cpp:538 -#, fuzzy -msgid "Self-timer (12 sec)" -msgstr "retardateur" - -#: src/pentaxmn.cpp:539 -#, fuzzy -msgid "Self-timer (2 sec)" -msgstr "retardateur" - -#: src/pentaxmn.cpp:540 -#, fuzzy -msgid "Remote Control (3 sec)" -msgstr "Contrôle des couleurs" - -#: src/pentaxmn.cpp:541 -#, fuzzy -msgid "Remote Control" -msgstr "Contrôle des couleurs" - -#: src/pentaxmn.cpp:543 src/properties.cpp:883 -#, fuzzy -msgid "Video" -msgstr "Large" - -#: src/pentaxmn.cpp:554 -msgid "M-42 or No Lens" -msgstr "" - -#: src/pentaxmn.cpp:555 -#, fuzzy -msgid "K,M Lens" -msgstr "Objectif" - -#: src/pentaxmn.cpp:556 -msgid "A Series Lens" -msgstr "" - -#: src/pentaxmn.cpp:703 -#, fuzzy -msgid "Bright" -msgstr "Luminosité+" - -#: src/pentaxmn.cpp:706 -msgid "Vibrant" -msgstr "" - -#: src/pentaxmn.cpp:708 -msgid "Reversal film" -msgstr "" - -#: src/pentaxmn.cpp:720 -#, fuzzy -msgid "Weakest" -msgstr "Ouest" - -#: src/pentaxmn.cpp:721 -msgid "Weak" -msgstr "Faible" - -#: src/pentaxmn.cpp:722 -msgid "Strong" -msgstr "Fort" - -#: src/pentaxmn.cpp:832 -msgid "No extended bracketing" -msgstr "" - -#: src/pentaxmn.cpp:838 -msgid "WB-BA" -msgstr "" - -#: src/pentaxmn.cpp:841 -msgid "WB-GM" -msgstr "" - -#: src/pentaxmn.cpp:853 -#, fuzzy -msgid "Unknown " -msgstr "Inconnu" - -#: src/pentaxmn.cpp:866 -#, fuzzy -msgid "Pentax Makernote version" -msgstr "Version des note du fabriquant Nikon" - -#: src/pentaxmn.cpp:869 -#, fuzzy -msgid "Camera shooting mode" -msgstr "Mode de prise de vue" - -#: src/pentaxmn.cpp:871 src/pentaxmn.cpp:872 -#, fuzzy -msgid "Resolution of a preview image" -msgstr "Pointeur vers l'image d'aperçu" - -#: src/pentaxmn.cpp:874 -#, fuzzy -msgid "Length of a preview image" -msgstr "Pointeur vers l'image d'aperçu" - -#: src/pentaxmn.cpp:875 -#, fuzzy -msgid "Size of an IFD containing a preview image" -msgstr "Décalage vers l'IFD contenant l'aperçu" - -#: src/pentaxmn.cpp:880 -#, fuzzy -msgid "Model identification" -msgstr "Version du Modèle" - -#: src/pentaxmn.cpp:881 -#, fuzzy -msgid "Pentax model idenfication" -msgstr "Version du Modèle" - -#: src/pentaxmn.cpp:883 src/pentaxmn.cpp:884 src/properties.cpp:150 -#, fuzzy -msgid "Date" -msgstr "Date d'envoi" - -#: src/pentaxmn.cpp:886 src/pentaxmn.cpp:887 -#, fuzzy -msgid "Time" -msgstr "Heure d'envoi" - -#: src/pentaxmn.cpp:890 -#, fuzzy -msgid "Image quality settings" -msgstr "Réglage de qualité de l'image" - -#: src/pentaxmn.cpp:893 -#, fuzzy -msgid "Image size settings" -msgstr "Réglage de qualité de l'image" - -#: src/pentaxmn.cpp:897 -#, fuzzy -msgid "Flash mode settings" -msgstr "Réglage mode flash" - -#: src/pentaxmn.cpp:900 -#, fuzzy -msgid "Focus mode settings" -msgstr "Réglage mode de mise au point" - -#: src/pentaxmn.cpp:903 -#, fuzzy -msgid "Selected AF point" -msgstr "AF Points" - -#: src/pentaxmn.cpp:905 src/pentaxmn.cpp:906 -#, fuzzy -msgid "AF point in focus" -msgstr "Points AF utilisés" - -#: src/pentaxmn.cpp:912 src/pentaxmn.cpp:913 -#, fuzzy -msgid "F-Number" -msgstr "Nombre F" - -#: src/pentaxmn.cpp:915 -#, fuzzy -msgid "ISO sensitivity" -msgstr "Sensibilité spectrale" - -#: src/pentaxmn.cpp:916 -#, fuzzy -msgid "ISO sensitivity settings" -msgstr "Réglage vitesse ISO" - -#: src/pentaxmn.cpp:923 src/pentaxmn.cpp:924 -#, fuzzy -msgid "MeteringMode" -msgstr "Mode de mesure" - -#: src/pentaxmn.cpp:926 src/pentaxmn.cpp:927 -#, fuzzy -msgid "AutoBracketing" -msgstr "Bracketing automatique" - -#: src/pentaxmn.cpp:929 src/pentaxmn.cpp:930 -#, fuzzy -msgid "White ballance" -msgstr "Balance des blancs" - -#: src/pentaxmn.cpp:932 src/pentaxmn.cpp:933 -#, fuzzy -msgid "White ballance mode" -msgstr "Mode balance des blancs" - -#: src/pentaxmn.cpp:936 -#, fuzzy -msgid "Blue color balance" -msgstr "Balance des bleus" - -#: src/pentaxmn.cpp:939 -#, fuzzy -msgid "Red color balance" -msgstr "Balance des rouges" - -#: src/pentaxmn.cpp:941 src/pentaxmn.cpp:942 -#, fuzzy -msgid "FocalLength" -msgstr "Longueur focale" - -#: src/pentaxmn.cpp:956 src/pentaxmn.cpp:957 src/properties.cpp:657 -#, fuzzy -msgid "Location" -msgstr "Lieu précis" - -#: src/pentaxmn.cpp:959 -#, fuzzy -msgid "Hometown" -msgstr "Maison" - -#: src/pentaxmn.cpp:965 -#, fuzzy -msgid "Hometown DST" -msgstr "Maison" - -#: src/pentaxmn.cpp:966 -msgid "Whether day saving time is active in home town" -msgstr "" - -#: src/pentaxmn.cpp:968 -#, fuzzy -msgid "Destination DST" -msgstr "Destination" - -#: src/pentaxmn.cpp:969 -msgid "Whether day saving time is active in destination" -msgstr "" - -#: src/pentaxmn.cpp:971 src/pentaxmn.cpp:972 -#, fuzzy -msgid "DSPFirmwareVersion" -msgstr "Version du microcode" - -#: src/pentaxmn.cpp:974 src/pentaxmn.cpp:975 -#, fuzzy -msgid "CPUFirmwareVersion" -msgstr "Version du microcode" - -#: src/pentaxmn.cpp:981 -#, fuzzy -msgid "Light value" -msgstr "Valeur de luminosité" - -#: src/pentaxmn.cpp:982 -msgid "Camera calculated light value, includes exposure compensation" -msgstr "" - -#: src/pentaxmn.cpp:998 src/pentaxmn.cpp:999 -#, fuzzy -msgid "Image area offset" -msgstr "Taille des données de l'image" - -#: src/pentaxmn.cpp:1001 src/pentaxmn.cpp:1002 -#, fuzzy -msgid "Raw image size" -msgstr "Taille de l'image" - -#: src/pentaxmn.cpp:1005 src/pentaxmn.cpp:1006 -#, fuzzy -msgid "Preview image borders" -msgstr "Aperçu embarqué" - -#: src/pentaxmn.cpp:1011 src/pentaxmn.cpp:1012 -#, fuzzy -msgid "Sensitivity adjust" -msgstr "Sensibilité spectrale" - -#: src/pentaxmn.cpp:1014 src/pentaxmn.cpp:1015 -#, fuzzy -msgid "Digital filter" -msgstr "Appareil photo numérique" - -#: src/pentaxmn.cpp:1019 -#, fuzzy -msgid "Camera temperature" -msgstr "Température des couleurs" - -#: src/pentaxmn.cpp:1032 src/pentaxmn.cpp:1033 -#, fuzzy -msgid "Image tone" -msgstr "Type d'image" - -#: src/pentaxmn.cpp:1035 src/pentaxmn.cpp:1036 -#, fuzzy -msgid "Colort temperature" -msgstr "Température des couleurs" - -#: src/pentaxmn.cpp:1039 -#, fuzzy -msgid "Shake reduction" -msgstr "Réduction du bruit" - -#: src/pentaxmn.cpp:1040 -#, fuzzy -msgid "Shake reduction information" -msgstr "informations de réglage appareil photo" - -#: src/pentaxmn.cpp:1045 src/pentaxmn.cpp:1046 -#, fuzzy -msgid "Dynamic range expansion" -msgstr "Réglage gamme dynamique" - -#: src/pentaxmn.cpp:1048 src/pentaxmn.cpp:1049 -#, fuzzy -msgid "High ISO noise reduction" -msgstr "Réduction de bruit Iso élevé" - -#: src/pentaxmn.cpp:1051 src/pentaxmn.cpp:1052 -#, fuzzy -msgid "AF Adjustment" -msgstr "Ajustement de teinte" - -#: src/pentaxmn.cpp:1055 src/pentaxmn.cpp:1056 -#, fuzzy -msgid "Black point" -msgstr "Noir & Blanc" - -#: src/pentaxmn.cpp:1058 src/pentaxmn.cpp:1059 -#, fuzzy -msgid "White point" -msgstr "Point blanc" - -#: src/pentaxmn.cpp:1062 src/pentaxmn.cpp:1063 -#, fuzzy -msgid "ShotInfo" -msgstr "Infos prise de vue" - -#: src/pentaxmn.cpp:1065 src/pentaxmn.cpp:1066 -#, fuzzy -msgid "AEInfo" -msgstr "Informations mise au point" - -#: src/pentaxmn.cpp:1068 src/pentaxmn.cpp:1069 -#, fuzzy -msgid "LensInfo" -msgstr "Objectif" - -#: src/pentaxmn.cpp:1071 src/pentaxmn.cpp:1072 -#, fuzzy -msgid "FlashInfo" -msgstr "Flash" - -#: src/pentaxmn.cpp:1074 src/pentaxmn.cpp:1075 -#, fuzzy -msgid "AEMeteringSegments" -msgstr "Mode de mesure" - -#: src/pentaxmn.cpp:1077 src/pentaxmn.cpp:1078 -#, fuzzy -msgid "FlashADump" -msgstr "Compensation Flash" - -#: src/pentaxmn.cpp:1080 src/pentaxmn.cpp:1081 -#, fuzzy -msgid "FlashBDump" -msgstr "Compensation Flash" - -#: src/pentaxmn.cpp:1084 src/pentaxmn.cpp:1085 -#, fuzzy -msgid "WB_RGGBLevelsDaylight" -msgstr "Fluorescent" - -#: src/pentaxmn.cpp:1087 src/pentaxmn.cpp:1088 -#, fuzzy -msgid "WB_RGGBLevelsShade" -msgstr "Niveau de noir" - -#: src/pentaxmn.cpp:1090 src/pentaxmn.cpp:1091 -#, fuzzy -msgid "WB_RGGBLevelsCloudy" -msgstr "Niveau de noir" - -#: src/pentaxmn.cpp:1093 src/pentaxmn.cpp:1094 -#, fuzzy -msgid "WB_RGGBLevelsTungsten" -msgstr "Niveau de noir" - -#: src/pentaxmn.cpp:1096 src/pentaxmn.cpp:1097 -#, fuzzy -msgid "WB_RGGBLevelsFluorescentD" -msgstr "Fluorescent" - -#: src/pentaxmn.cpp:1099 src/pentaxmn.cpp:1100 -#, fuzzy -msgid "WB_RGGBLevelsFluorescentN" -msgstr "Fluorescent" - -#: src/pentaxmn.cpp:1102 src/pentaxmn.cpp:1103 -#, fuzzy -msgid "WB_RGGBLevelsFluorescentW" -msgstr "Fluorescent" - -#: src/pentaxmn.cpp:1105 src/pentaxmn.cpp:1106 -#, fuzzy -msgid "WB_RGGBLevelsFlash" -msgstr "Niveau de noir" - -#: src/pentaxmn.cpp:1108 src/pentaxmn.cpp:1109 -#, fuzzy -msgid "CameraInfo" -msgstr "Identifiant appareil photo" - -#: src/pentaxmn.cpp:1111 src/pentaxmn.cpp:1112 -#, fuzzy -msgid "BatteryInfo" -msgstr "Identifiant appareil photo" - -#: src/pentaxmn.cpp:1114 src/pentaxmn.cpp:1115 -#, fuzzy -msgid "AFInfo" -msgstr "Informations mise au point" - -#: src/pentaxmn.cpp:1117 src/pentaxmn.cpp:1118 -#, fuzzy -msgid "ColorInfo" -msgstr "Couleur" - -#: src/pentaxmn.cpp:1125 -#, fuzzy -msgid "Unknown PentaxMakerNote tag" -msgstr "Marqueur de note du fabriquant Minolta inconnu" - -#: src/properties.cpp:102 -msgid "Dublin Core schema" -msgstr "" - -#: src/properties.cpp:103 -msgid "digiKam Photo Management schema" -msgstr "" - -#: src/properties.cpp:104 -msgid "KDE Image Program Interface schema" -msgstr "" - -#: src/properties.cpp:105 -#, fuzzy -msgid "XMP Basic schema" -msgstr "Zone dynamique" - -#: src/properties.cpp:106 -msgid "XMP Rights Management schema" -msgstr "" - -#: src/properties.cpp:107 -#, fuzzy -msgid "XMP Media Management schema" -msgstr "Zone dynamique" - -#: src/properties.cpp:108 -#, fuzzy -msgid "XMP Basic Job Ticket schema" -msgstr "Zone dynamique" - -#: src/properties.cpp:109 -#, fuzzy -msgid "XMP Paged-Text schema" -msgstr "Zone dynamique" - -#: src/properties.cpp:110 -#, fuzzy -msgid "XMP Dynamic Media schema" -msgstr "Zone dynamique" - -#: src/properties.cpp:111 -msgid "Microsoft Photo schema" -msgstr "" - -#: src/properties.cpp:112 -#, fuzzy -msgid "Adobe PDF schema" -msgstr "Décompression Adobe" - -#: src/properties.cpp:113 -#, fuzzy -msgid "Adobe photoshop schema" -msgstr "Décompression Adobe" - -#: src/properties.cpp:114 -#, fuzzy -msgid "Camera Raw schema" -msgstr "Marque de l'appareil" - -#: src/properties.cpp:115 -msgid "Exif Schema for TIFF Properties" -msgstr "" - -#: src/properties.cpp:116 -msgid "Exif schema for Exif-specific Properties" -msgstr "" - -#: src/properties.cpp:117 -msgid "Exif schema for Additional Exif Properties" -msgstr "" - -#: src/properties.cpp:118 src/properties.cpp:119 -msgid "IPTC Core schema" -msgstr "" - -#: src/properties.cpp:120 src/properties.cpp:121 -msgid "IPTC Extension schema" -msgstr "" - -#: src/properties.cpp:122 -msgid "PLUS License Data Format schema" -msgstr "" - -#: src/properties.cpp:123 -#, fuzzy -msgid "iView Media Pro schema" -msgstr "Zone dynamique" - -#: src/properties.cpp:124 -msgid "Expression Media schema" -msgstr "" - -#: src/properties.cpp:125 -msgid "Microsoft Photo 1.2 schema" -msgstr "" - -#: src/properties.cpp:126 -msgid "Microsoft Photo RegionInfo schema" -msgstr "" - -#: src/properties.cpp:127 -msgid "Microsoft Photo Region schema" -msgstr "" - -#: src/properties.cpp:128 -msgid "Metadata Working Group Regions schema" -msgstr "" - -#: src/properties.cpp:131 -#, fuzzy -msgid "Colorant structure" -msgstr "Température des couleurs" - -#: src/properties.cpp:132 -#, fuzzy -msgid "Dimensions structure" -msgstr "Structure des données de l'image" - -#: src/properties.cpp:133 -#, fuzzy -msgid "Font structure" -msgstr "Structure des donnée Exif" - -#: src/properties.cpp:134 -#, fuzzy -msgid "Thumbnail structure" -msgstr "Décalage aperçu" - -#: src/properties.cpp:135 -#, fuzzy -msgid "Resource Event structure" -msgstr "Structure des donnée Exif" - -#: src/properties.cpp:136 -#, fuzzy -msgid "ResourceRef structure" -msgstr "Structure des donnée Exif" - -#: src/properties.cpp:137 -#, fuzzy -msgid "Version structure" -msgstr "Structure des donnée Exif" - -#: src/properties.cpp:138 -msgid "Basic Job/Workflow structure" -msgstr "" - -#: src/properties.cpp:139 -#, fuzzy -msgid "Area structure" -msgstr "Température des couleurs" - -#: src/properties.cpp:142 -msgid "Qualifier for xmp:Identifier" -msgstr "" - -#: src/properties.cpp:146 -#, fuzzy -msgid "Contributor" -msgstr "Continue" - -#: src/properties.cpp:146 -msgid "Contributors to the resource (other than the authors)." -msgstr "" - -#: src/properties.cpp:147 -#, fuzzy -msgid "Coverage" -msgstr "Moyenne" - -#: src/properties.cpp:147 -msgid "" -"The spatial or temporal topic of the resource, the spatial applicability of " -"the resource, or the jurisdiction under which the resource is relevant." -msgstr "" - -#: src/properties.cpp:149 -#, fuzzy -msgid "Creator" -msgstr "Catégorie" - -#: src/properties.cpp:149 -msgid "" -"The authors of the resource (listed in order of precedence, if significant)." -msgstr "" - -#: src/properties.cpp:150 -msgid "Date(s) that something interesting happened to the resource." -msgstr "" - -#: src/properties.cpp:151 -msgid "" -"A textual description of the content of the resource. Multiple values may be " -"present for different languages." -msgstr "" - -#: src/properties.cpp:153 -#, fuzzy -msgid "Format" -msgstr "Format du fichier" - -#: src/properties.cpp:153 -msgid "" -"The file format used when saving the resource. Tools and applications should " -"set this property to the save format of the data. It may include appropriate " -"qualifiers." -msgstr "" - -#: src/properties.cpp:155 src/properties.cpp:210 -#, fuzzy -msgid "Identifier" -msgstr "Identifiant ARM" - -#: src/properties.cpp:155 -msgid "" -"Unique identifier of the resource. Recommended best practice is to identify " -"the resource by means of a string conforming to a formal identification " -"system." -msgstr "" - -#: src/properties.cpp:157 -msgid "An unordered array specifying the languages used in the resource." -msgstr "" - -#: src/properties.cpp:158 -msgid "Publisher" -msgstr "" - -#: src/properties.cpp:158 -msgid "" -"An entity responsible for making the resource available. Examples of a " -"Publisher include a person, an organization, or a service. Typically, the " -"name of a Publisher should be used to indicate the entity." -msgstr "" - -#: src/properties.cpp:161 -#, fuzzy -msgid "Relation" -msgstr "Rotation" - -#: src/properties.cpp:161 -msgid "" -"Relationships to other documents. Recommended best practice is to identify " -"the related resource by means of a string conforming to a formal " -"identification system." -msgstr "" - -#: src/properties.cpp:163 -#, fuzzy -msgid "Rights" -msgstr "Droit" - -#: src/properties.cpp:163 -msgid "" -"Informal rights statement, selected by language. Typically, rights " -"information includes a statement about various property rights associated " -"with the resource, including intellectual property rights." -msgstr "" - -#: src/properties.cpp:166 -msgid "Unique identifier of the work from which this resource was derived." -msgstr "" - -#: src/properties.cpp:167 -msgid "" -"An unordered array of descriptive phrases or keywords that specify the topic " -"of the content of the resource." -msgstr "" - -#: src/properties.cpp:169 -#, fuzzy -msgid "Title" -msgstr "Le fichier" - -#: src/properties.cpp:169 -msgid "" -"The title of the document, or the name given to the resource. Typically, it " -"will be a name by which the resource is formally known." -msgstr "" - -#: src/properties.cpp:171 src/properties.cpp:979 -#, fuzzy -msgid "Type" -msgstr "type" - -#: src/properties.cpp:171 -msgid "A document type; for example, novel, poem, or working paper." -msgstr "" - -#: src/properties.cpp:177 -msgid "Tags List" -msgstr "" - -#: src/properties.cpp:177 -msgid "" -"The list of complete tags path as string. The path hierarchy is separated by " -"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." -msgstr "" - -#: src/properties.cpp:178 -#, fuzzy -msgid "Captions Author Names" -msgstr "Libellé du pays" - -#: src/properties.cpp:178 -msgid "" -"The list of all captions author names for each language alternative captions " -"set in standard XMP tags." -msgstr "" - -#: src/properties.cpp:179 -#, fuzzy -msgid "Captions Date Time Stamps" -msgstr "mise à jour de l'horodatage" - -#: src/properties.cpp:179 -msgid "" -"The list of all captions date time stamps for each language alternative " -"captions set in standard XMP tags." -msgstr "" - -#: src/properties.cpp:180 src/tags.cpp:837 -#, fuzzy -msgid "Image History" -msgstr "Hauteur de l'image" - -#: src/properties.cpp:180 -msgid "" -"An XML based content to list all action processed on this image with image " -"editor (as crop, rotate, color corrections, adjustements, etc.)." -msgstr "" - -#: src/properties.cpp:181 -#, fuzzy -msgid "Lens Correction Settings" -msgstr "Réglage des données de l'objectif" - -#: src/properties.cpp:181 -msgid "" -"The list of Lens Correction tools settings used to fix lens distorsion. This " -"include Batch Queue Manager and Image editor tools based on LensFun library." -msgstr "" - -#: src/properties.cpp:182 -#, fuzzy -msgid "Color Label" -msgstr "Espace des couleurs" - -#: src/properties.cpp:182 -msgid "" -"The color label assigned to this item. Possible values are \"0\": no label; " -"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " -"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." -msgstr "" - -#: src/properties.cpp:183 -#, fuzzy -msgid "Pick Label" -msgstr "Grande" - -#: src/properties.cpp:183 -msgid "" -"The pick label assigned to this item. Possible values are \"0\": no label; " -"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " -"accepted." -msgstr "" - -#: src/properties.cpp:189 -msgid "Enfuse Input Files" -msgstr "" - -#: src/properties.cpp:189 -msgid "" -"The list of files processed with Enfuse program through ExpoBlending tool." -msgstr "" - -#: src/properties.cpp:190 -#, fuzzy -msgid "Enfuse Settings" -msgstr "Réglage flash" - -#: src/properties.cpp:190 -msgid "" -"The list of Enfuse settings used to blend image stack with ExpoBlending tool." -msgstr "" - -#: src/properties.cpp:191 -msgid "PicasaWeb Item ID" -msgstr "" - -#: src/properties.cpp:191 -msgid "Item ID from PicasaWeb web service." -msgstr "" - -#: src/properties.cpp:192 -msgid "Yandex Fotki Item ID" -msgstr "" - -#: src/properties.cpp:192 -msgid "Item ID from Yandex Fotki web service." -msgstr "" - -#: src/properties.cpp:198 -#, fuzzy -msgid "Advisory" -msgstr "Audio" - -#: src/properties.cpp:198 -msgid "" -"An unordered array specifying properties that were edited outside the " -"authoring application. Each item should contain a single namespace and XPath " -"separated by one ASCII space (U+0020)." -msgstr "" - -#: src/properties.cpp:201 -msgid "Base URL" -msgstr "" - -#: src/properties.cpp:201 -msgid "" -"The base URL for relative URLs in the document content. If this document " -"contains Internet links, and those links are relative, they are relative to " -"this base URL. This property provides a standard way for embedded relative " -"URLs to be interpreted by tools. Web authoring tools should set the value " -"based on their notion of where URLs will be interpreted." -msgstr "" - -#: src/properties.cpp:206 -#, fuzzy -msgid "Create Date" -msgstr "Date de publication" - -#: src/properties.cpp:206 -#, fuzzy -msgid "The date and time the resource was originally created." -msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." - -#: src/properties.cpp:207 -#, fuzzy -msgid "Creator Tool" -msgstr "Catégorie" - -#: src/properties.cpp:207 -msgid "" -"The name of the first known tool used to create the resource. If history is " -"present in the metadata, this value should be equivalent to that of xmpMM:" -"History's softwareAgent property." -msgstr "" - -#: src/properties.cpp:210 -msgid "" -"An unordered array of text strings that unambiguously identify the resource " -"within a given context. An array item may be qualified with xmpidq:Scheme to " -"denote the formal identification system to which that identifier conforms. " -"Note: The dc:identifier property is not used because it lacks a defined " -"scheme qualifier and has been defined in the XMP Specification as a simple " -"(single-valued) property." -msgstr "" - -#: src/properties.cpp:215 -#, fuzzy -msgid "Label" -msgstr "Grande" - -#: src/properties.cpp:215 -msgid "" -"A word or short phrase that identifies a document as a member of a user-" -"defined collection. Used to organize documents in a file browser." -msgstr "" - -#: src/properties.cpp:217 -#, fuzzy -msgid "Metadata Date" -msgstr "Date Minolta" - -#: src/properties.cpp:217 -msgid "" -"The date and time that any metadata for this resource was last changed. It " -"should be the same as or more recent than xmp:ModifyDate." -msgstr "" - -#: src/properties.cpp:219 -#, fuzzy -msgid "Modify Date" -msgstr "Date Minolta" - -#: src/properties.cpp:219 -msgid "" -"The date and time the resource was last modified. Note: The value of this " -"property is not necessarily the same as the file's system modification date " -"because it is set before the file is saved." -msgstr "" - -#: src/properties.cpp:222 -#, fuzzy -msgid "Nickname" -msgstr "Nom du propriétaire" - -#: src/properties.cpp:222 -msgid "A short informal name for the resource." -msgstr "" - -#: src/properties.cpp:223 -#, fuzzy -msgid "Rating" -msgstr "Rotation" - -#: src/properties.cpp:223 -msgid "" -"A number that indicates a document's status relative to other documents, " -"used to organize documents in a file browser. Values are user-defined within " -"an application-defined range." -msgstr "" - -#: src/properties.cpp:226 -#, fuzzy -msgid "Thumbnails" -msgstr "Miniature" - -#: src/properties.cpp:226 -msgid "" -"An alternative array of thumbnail images for a file, which can differ in " -"characteristics such as size or image encoding." -msgstr "" - -#: src/properties.cpp:233 -msgid "Certificate" -msgstr "" - -#: src/properties.cpp:233 -msgid "Online rights management certificate." -msgstr "" - -#: src/properties.cpp:234 -#, fuzzy -msgid "Marked" -msgstr "Dur" - -#: src/properties.cpp:234 -msgid "Indicates that this is a rights-managed resource." -msgstr "" - -#: src/properties.cpp:235 -#, fuzzy -msgid "Owner" -msgstr "Nom du propriétaire" - -#: src/properties.cpp:235 -msgid "An unordered array specifying the legal owner(s) of a resource." -msgstr "" - -#: src/properties.cpp:236 -msgid "Usage Terms" -msgstr "" - -#: src/properties.cpp:236 -msgid "Text instructions on how a resource can be legally used." -msgstr "" - -#: src/properties.cpp:237 -#, fuzzy -msgid "Web Statement" -msgstr "8-segments" - -#: src/properties.cpp:237 -msgid "" -"The location of a web page describing the owner and/or rights statement for " -"this resource." -msgstr "" - -#: src/properties.cpp:243 -msgid "Derived From" -msgstr "Mode contrôle" - -#: src/properties.cpp:243 -msgid "" -"A reference to the original document from which this one is derived. It is a " -"minimal reference; missing components can be assumed to be unchanged. For " -"example, a new version might only need to specify the instance ID and " -"version number of the previous version, or a rendition might only need to " -"specify the instance ID and rendition class of the original." -msgstr "" - -#: src/properties.cpp:248 -#, fuzzy -msgid "Document ID" -msgstr "Nom du document" - -#: src/properties.cpp:248 -msgid "" -"The common identifier for all versions and renditions of a document. It " -"should be based on a UUID; see Document and Instance IDs below." -msgstr "" - -#: src/properties.cpp:250 -#, fuzzy -msgid "History" -msgstr "Hauteur de l'image" - -#: src/properties.cpp:250 -msgid "" -"An ordered array of high-level user actions that resulted in this resource. " -"It is intended to give human readers a general indication of the steps taken " -"to make the changes from the previous version to this one. The list should " -"be at an abstract level; it is not intended to be an exhaustive keystroke or " -"other detailed history." -msgstr "" - -#: src/properties.cpp:254 -#, fuzzy -msgid "Instance ID" -msgstr "Entrelacé" - -#: src/properties.cpp:254 -msgid "" -"An identifier for a specific incarnation of a document, updated each time a " -"file is saved. It should be based on a UUID; see Document and Instance IDs " -"below." -msgstr "" - -#: src/properties.cpp:256 -#, fuzzy -msgid "Managed From" -msgstr "Langue" - -#: src/properties.cpp:256 -msgid "" -"A reference to the document as it was prior to becoming managed. It is set " -"when a managed document is introduced to an asset management system that " -"does not currently own it. It may or may not include references to different " -"management systems." -msgstr "" - -#: src/properties.cpp:259 -#, fuzzy -msgid "Manager" -msgstr "Langue" - -#: src/properties.cpp:259 -msgid "" -"The name of the asset management system that manages this resource. Along " -"with xmpMM: ManagerVariant, it tells applications which asset management " -"system to contact concerning this document." -msgstr "" - -#: src/properties.cpp:262 -#, fuzzy -msgid "Manage To" -msgstr "Langue" - -#: src/properties.cpp:262 -msgid "" -"A URI identifying the managed resource to the asset management system; the " -"presence of this property is the formal indication that this resource is " -"managed. The form and content of this URI is private to the asset management " -"system." -msgstr "" - -#: src/properties.cpp:265 -#, fuzzy -msgid "Manage UI" -msgstr "Langue" - -#: src/properties.cpp:265 -msgid "" -"A URI that can be used to access information about the managed resource " -"through a web browser. It might require a custom browser plug-in." -msgstr "" - -#: src/properties.cpp:267 -#, fuzzy -msgid "Manager Variant" -msgstr "Langue" - -#: src/properties.cpp:267 -msgid "" -"Specifies a particular variant of the asset management system. The format of " -"this property is private to the specific asset management system." -msgstr "" - -#: src/properties.cpp:269 -#, fuzzy -msgid "Rendition Class" -msgstr "Paramètre de distorsion de l'objectif" - -#: src/properties.cpp:269 -msgid "" -"The rendition class name for this resource. This property should be absent " -"or set to default for a document version that is not a derived rendition." -msgstr "" - -#: src/properties.cpp:271 -#, fuzzy -msgid "Rendition Params" -msgstr "Paramètre de distorsion de l'objectif" - -#: src/properties.cpp:271 -msgid "" -"Can be used to provide additional rendition parameters that are too complex " -"or verbose to encode in xmpMM: RenditionClass." -msgstr "" - -#: src/properties.cpp:273 -#, fuzzy -msgid "Version ID" -msgstr "ID version GPS" - -#: src/properties.cpp:273 -msgid "" -"The document version identifier for this resource. Each version of a " -"document gets a new identifier, usually simply by incrementing integers 1, " -"2, 3 . . . and so on. Media management systems can have other conventions or " -"support branching which requires a more complex scheme." -msgstr "" - -#: src/properties.cpp:277 -#, fuzzy -msgid "Versions" -msgstr "Version" - -#: src/properties.cpp:277 -msgid "" -"The version history associated with this resource. Entry [1] is the oldest " -"known version for this document, entry [last()] is the most recent version. " -"Typically, a media management system would fill in the version information " -"in the metadata on check-in. It is not guaranteed that a complete history " -"versions from the first to this one will be present in the xmpMM:Versions " -"property. Interior version information can be compressed or eliminated and " -"the version history can be truncated at some point." -msgstr "" - -#: src/properties.cpp:283 -msgid "Last URL" -msgstr "" - -#: src/properties.cpp:283 -msgid "Deprecated for privacy protection." -msgstr "" - -#: src/properties.cpp:284 -#, fuzzy -msgid "Rendition Of" -msgstr "Paramètre de distorsion de l'objectif" - -#: src/properties.cpp:284 -msgid "" -"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " -"which this is a rendition." -msgstr "" - -#: src/properties.cpp:286 -#, fuzzy -msgid "Save ID" -msgstr "Identifiant appareil photo" - -#: src/properties.cpp:286 -msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." -msgstr "" - -#: src/properties.cpp:292 -#, fuzzy -msgid "Job Reference" -msgstr "Date de référence" - -#: src/properties.cpp:292 -msgid "" -"References an external job management file for a job process in which the " -"document is being used. Use of job names is under user control. Typical use " -"would be to identify all documents that are part of a particular job or " -"contract. There are multiple values because there can be more than one job " -"using a particular document at any time, and it can also be useful to keep " -"historical information about what jobs a document was part of previously." -msgstr "" - -#: src/properties.cpp:301 -#, fuzzy -msgid "Maximum Page Size" -msgstr "Taille de l'image" - -#: src/properties.cpp:301 -msgid "" -"The size of the largest page in the document (including any in contained " -"documents)." -msgstr "" - -#: src/properties.cpp:302 -#, fuzzy -msgid "Number of Pages" -msgstr "Le nombre F." - -#: src/properties.cpp:302 -msgid "" -"The number of pages in the document (including any in contained documents)." -msgstr "" - -#: src/properties.cpp:303 -#, fuzzy -msgid "Fonts" -msgstr "Points AF" - -#: src/properties.cpp:303 -msgid "" -"An unordered array of fonts that are used in the document (including any in " -"contained documents)." -msgstr "" - -#: src/properties.cpp:304 -#, fuzzy -msgid "Colorants" -msgstr "Couleur" - -#: src/properties.cpp:304 -msgid "" -"An ordered array of colorants (swatches) that are used in the document " -"(including any in contained documents)." -msgstr "" - -#: src/properties.cpp:305 -#, fuzzy -msgid "Plate Names" -msgstr "Nom du propriétaire" - -#: src/properties.cpp:305 -msgid "" -"An ordered array of plate names that are needed to print the document " -"(including any in contained documents)." -msgstr "" - -#: src/properties.cpp:311 -#, fuzzy -msgid "Project Reference" -msgstr "Date de référence" - -#: src/properties.cpp:311 -msgid "A reference to the project that created this file." -msgstr "" - -#: src/properties.cpp:312 -#, fuzzy -msgid "Video Frame Rate" -msgstr "Débit audio" - -#: src/properties.cpp:312 -msgid "The video frame rate. One of: 24, NTSC, PAL." -msgstr "" - -#: src/properties.cpp:313 -#, fuzzy -msgid "Video Frame Size" -msgstr "Espace des couleurs" - -#: src/properties.cpp:313 -msgid "The frame size. For example: w:720, h: 480, unit:pixels" -msgstr "" - -#: src/properties.cpp:314 -msgid "Video Pixel Aspect Ratio" -msgstr "" - -#: src/properties.cpp:314 -msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" -msgstr "" - -#: src/properties.cpp:315 -#, fuzzy -msgid "Video Pixel Depth" -msgstr "Ordre de remplissage" - -#: src/properties.cpp:315 -msgid "" -"The size in bits of each color component of a pixel. Standard Windows 32-bit " -"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." -msgstr "" - -#: src/properties.cpp:317 -#, fuzzy -msgid "Video Color Space" -msgstr "Espace des couleurs" - -#: src/properties.cpp:317 -msgid "" -"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " -"CCIR-709 (used for HD)." -msgstr "" - -#: src/properties.cpp:319 -#, fuzzy -msgid "Video Alpha Mode" -msgstr "Modèle Minolta" - -#: src/properties.cpp:319 -msgid "The alpha mode. One of: straight, pre-multiplied." -msgstr "" - -#: src/properties.cpp:320 -msgid "Video Alpha Premultiple Color" -msgstr "" - -#: src/properties.cpp:320 -msgid "" -"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " -"is pre-multiplied." -msgstr "" - -#: src/properties.cpp:322 -msgid "Video Alpha Unity Is Transparent" -msgstr "" - -#: src/properties.cpp:322 -msgid "When true, unity is clear, when false, it is opaque." -msgstr "" - -#: src/properties.cpp:323 -#, fuzzy -msgid "Video Compressor" -msgstr "Compression" - -#: src/properties.cpp:323 -msgid "Video compression used. For example, jpeg." -msgstr "" - -#: src/properties.cpp:324 -#, fuzzy -msgid "Video Field Order" -msgstr "Ordre de remplissage" - -#: src/properties.cpp:324 -msgid "The field order for video. One of: Upper, Lower, Progressive." -msgstr "" - -#: src/properties.cpp:325 -#, fuzzy -msgid "Pull Down" -msgstr "Bas" - -#: src/properties.cpp:325 -msgid "" -"The sampling phase of film to be converted to video (pull-down). One of: " -"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " -"WWWSS_24p, WWSSW_24p." -msgstr "" - -#: src/properties.cpp:327 -#, fuzzy -msgid "Audio Sample Rate" -msgstr "Débit audio" - -#: src/properties.cpp:327 -msgid "" -"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." -msgstr "" - -#: src/properties.cpp:328 -#, fuzzy -msgid "Audio Sample Type" -msgstr "Type audio" - -#: src/properties.cpp:328 -msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." -msgstr "" - -#: src/properties.cpp:329 -#, fuzzy -msgid "Audio Channel Type" -msgstr "Type audio" - -#: src/properties.cpp:329 -msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." -msgstr "" - -#: src/properties.cpp:330 -#, fuzzy -msgid "Audio Compressor" -msgstr "Compression" - -#: src/properties.cpp:330 -msgid "The audio compression used. For example, MP3." -msgstr "" - -#: src/properties.cpp:331 -msgid "Speaker Placement" -msgstr "" - -#: src/properties.cpp:331 -msgid "" -"A description of the speaker angles from center front in degrees. For " -"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " -"-110, Right Surround = 110\"" -msgstr "" - -#: src/properties.cpp:333 -#, fuzzy -msgid "File Data Rate" -msgstr "Date Minolta" - -#: src/properties.cpp:333 -msgid "" -"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" -"sec" -msgstr "" - -#: src/properties.cpp:334 -#, fuzzy -msgid "Tape Name" -msgstr "Nom du propriétaire" - -#: src/properties.cpp:334 -msgid "" -"The name of the tape from which the clip was captured, as set during the " -"capture process." -msgstr "" - -#: src/properties.cpp:335 -#, fuzzy -msgid "Alternative Tape Name" -msgstr "Nom du propriétaire" - -#: src/properties.cpp:335 -msgid "" -"An alternative tape name, set via the project window or timecode dialog in " -"Premiere. If an alternative name has been set and has not been reverted, " -"that name is displayed." -msgstr "" - -#: src/properties.cpp:337 -#, fuzzy -msgid "Start Time Code" -msgstr "Mode mise au point automatique" - -#: src/properties.cpp:337 -msgid "" -"The timecode of the first frame of video in the file, as obtained from the " -"device control." -msgstr "" - -#: src/properties.cpp:338 -#, fuzzy -msgid "Alternative Time code" -msgstr "Mode mise au point automatique" - -#: src/properties.cpp:338 -msgid "" -"A timecode set by the user. When specified, it is used instead of the " -"startTimecode." -msgstr "" - -#: src/properties.cpp:339 -#, fuzzy -msgid "Duration" -msgstr "Saturation" - -#: src/properties.cpp:339 -#, fuzzy -msgid "The duration of the media file." -msgstr "Le type de source lumineuse." - -#: src/properties.cpp:340 -#, fuzzy -msgid "Scene" -msgstr "centre" - -#: src/properties.cpp:340 -#, fuzzy -msgid "The name of the scene." -msgstr "Le type de source lumineuse." - -#: src/properties.cpp:341 -#, fuzzy -msgid "Shot Name" -msgstr "Libellé du pays" - -#: src/properties.cpp:341 -#, fuzzy -msgid "The name of the shot or take." -msgstr "Le type de source lumineuse." - -#: src/properties.cpp:342 -#, fuzzy -msgid "Shot Date" -msgstr "Date d'envoi" - -#: src/properties.cpp:342 -#, fuzzy -msgid "The date and time when the video was shot." -msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." - -#: src/properties.cpp:343 -#, fuzzy -msgid "Shot Location" -msgstr "Lieu précis" - -#: src/properties.cpp:343 -msgid "" -"The name of the location where the video was shot. For example: " -"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " -"GPS values." -msgstr "" - -#: src/properties.cpp:345 -#, fuzzy -msgid "Log Comment" -msgstr "Commentaire Windows" - -#: src/properties.cpp:345 -#, fuzzy -msgid "User's log comments." -msgstr "Commentaire de l'utilisateur" - -#: src/properties.cpp:346 -#, fuzzy -msgid "Markers" -msgstr "Dur" - -#: src/properties.cpp:346 -msgid "An ordered list of markers" -msgstr "" - -#: src/properties.cpp:347 -#, fuzzy -msgid "Contributed Media" -msgstr "Continue" - -#: src/properties.cpp:347 -msgid "An unordered list of all media used to create this media." -msgstr "" - -#: src/properties.cpp:348 -msgid "Absolute Peak Audio File Path" -msgstr "" - -#: src/properties.cpp:348 -msgid "" -"The absolute path to the file's peak audio file. If empty, no peak file " -"exists." -msgstr "" - -#: src/properties.cpp:349 -msgid "Relative Peak Audio File Path" -msgstr "" - -#: src/properties.cpp:349 -msgid "" -"The relative path to the file's peak audio file. If empty, no peak file " -"exists." -msgstr "" - -#: src/properties.cpp:350 -#, fuzzy -msgid "Video Modified Date" -msgstr "Date Minolta" - -#: src/properties.cpp:350 -#, fuzzy -msgid "The date and time when the video was last modified." -msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." - -#: src/properties.cpp:351 -#, fuzzy -msgid "Audio Modified Date" -msgstr "Débit audio" - -#: src/properties.cpp:351 -#, fuzzy -msgid "The date and time when the audio was last modified." -msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." - -#: src/properties.cpp:352 -#, fuzzy -msgid "Metadata Modified Date" -msgstr "Date Minolta" - -#: src/properties.cpp:352 -#, fuzzy -msgid "The date and time when the metadata was last modified." -msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." - -#: src/properties.cpp:353 src/properties.cpp:521 src/tags.cpp:549 -msgid "Artist" -msgstr "Artiste" - -#: src/properties.cpp:353 -#, fuzzy -msgid "The name of the artist or artists." -msgstr "Le type de source lumineuse." - -#: src/properties.cpp:354 -#, fuzzy -msgid "Album" -msgstr "Évaluatif" - -#: src/properties.cpp:354 -#, fuzzy -msgid "The name of the album." -msgstr "Le type de source lumineuse." - -#: src/properties.cpp:355 -#, fuzzy -msgid "Track Number" -msgstr "Numéro frame" - -#: src/properties.cpp:355 -msgid "" -"A numeric value indicating the order of the audio file within its original " -"recording." -msgstr "" - -#: src/properties.cpp:356 -#, fuzzy -msgid "Genre" -msgstr "Centré" - -#: src/properties.cpp:356 -#, fuzzy -msgid "The name of the genre." -msgstr "Le type de source lumineuse." - -#: src/properties.cpp:357 -#, fuzzy -msgid "The copyright information." -msgstr "Informations prise de vue" - -#: src/properties.cpp:358 -#, fuzzy -msgid "The date the title was released." -msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." - -#: src/properties.cpp:359 -#, fuzzy -msgid "Composer" -msgstr "composant" - -#: src/properties.cpp:359 -msgid "The composer's name." -msgstr "" - -#: src/properties.cpp:360 -#, fuzzy -msgid "Engineer" -msgstr "centre" - -#: src/properties.cpp:360 -msgid "The engineer's name." -msgstr "" - -#: src/properties.cpp:361 -msgid "Tempo" -msgstr "" - -#: src/properties.cpp:361 -msgid "The audio's tempo." -msgstr "" - -#: src/properties.cpp:362 -#, fuzzy -msgid "Instrument" -msgstr "Heure Minolta" - -#: src/properties.cpp:362 -msgid "The musical instrument." -msgstr "" - -#: src/properties.cpp:363 -#, fuzzy -msgid "Intro Time" -msgstr "Heure Minolta" - -#: src/properties.cpp:363 -#, fuzzy -msgid "The duration of lead time for queuing music." -msgstr "Le type de source lumineuse." - -#: src/properties.cpp:364 -msgid "Out Cue" -msgstr "" - -#: src/properties.cpp:364 -msgid "The time at which to fade out." -msgstr "" - -#: src/properties.cpp:365 -#, fuzzy -msgid "Relative Timestamp" -msgstr "mise à jour de l'horodatage" - -#: src/properties.cpp:365 -msgid "The start time of the media inside the audio project." -msgstr "" - -#: src/properties.cpp:366 -#, fuzzy -msgid "Loop" -msgstr "Faible réduction du gain" - -#: src/properties.cpp:366 -msgid "When true, the clip can be looped seemlessly." -msgstr "" - -#: src/properties.cpp:367 -#, fuzzy -msgid "Number Of Beats" -msgstr "Le nombre F." - -#: src/properties.cpp:367 -#, fuzzy -msgid "The number of beats." -msgstr "Le nombre F." - -#: src/properties.cpp:368 -#, fuzzy -msgid "Key" -msgstr "Clef basse" - -#: src/properties.cpp:368 -msgid "" -"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." -msgstr "" - -#: src/properties.cpp:369 -#, fuzzy -msgid "Stretch Mode" -msgstr "Mode ajustement" - -#: src/properties.cpp:369 -msgid "" -"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " -"Splice, Hybrid." -msgstr "" - -#: src/properties.cpp:370 -msgid "Time Scale Parameters" -msgstr "" - -#: src/properties.cpp:370 -msgid "Additional parameters for Time-Scale stretch mode." -msgstr "" - -#: src/properties.cpp:371 -msgid "Resample Parameters" -msgstr "" - -#: src/properties.cpp:371 -msgid "Additional parameters for Resample stretch mode." -msgstr "" - -#: src/properties.cpp:372 -msgid "Beat Splice Parameters" -msgstr "" - -#: src/properties.cpp:372 -msgid "Additional parameters for Beat Splice stretch mode." -msgstr "" - -#: src/properties.cpp:373 -#, fuzzy -msgid "Time Signature" -msgstr "Heure d'envoi" - -#: src/properties.cpp:373 -msgid "" -"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " -"12/8, other." -msgstr "" - -#: src/properties.cpp:374 -#, fuzzy -msgid "Scale Type" -msgstr "Type d'image" - -#: src/properties.cpp:374 -msgid "" -"The musical scale used in the music. One of: Major, Minor, Both, Neither. " -"Neither is most often used for instruments with no associated scale, such as " -"drums." -msgstr "" - -#: src/properties.cpp:381 src/tags.cpp:1071 -#, fuzzy -msgid "Camera Serial Number" -msgstr "Numéro de série de l'appareil photo" - -#: src/properties.cpp:381 -#, fuzzy -msgid "Camera Serial Number." -msgstr "Numéro de série de l'appareil photo" - -#: src/properties.cpp:382 -#, fuzzy -msgid "Date Acquired" -msgstr "Date de création" - -#: src/properties.cpp:382 -#, fuzzy -msgid "Date Acquired." -msgstr "Date de création" - -#: src/properties.cpp:383 -#, fuzzy -msgid "Flash Manufacturer" -msgstr "Constructeur" - -#: src/properties.cpp:383 -#, fuzzy -msgid "Flash Manufacturer." -msgstr "Constructeur" - -#: src/properties.cpp:384 -#, fuzzy -msgid "Flash Model." -msgstr "Mode flash" - -#: src/properties.cpp:385 -#, fuzzy -msgid "Last Keyword IPTC" -msgstr "Mots-clés" - -#: src/properties.cpp:385 -#, fuzzy -msgid "Last Keyword IPTC." -msgstr "Mots-clés" - -#: src/properties.cpp:386 -#, fuzzy -msgid "Last Keyword XMP" -msgstr "Mots-clés" - -#: src/properties.cpp:386 -#, fuzzy -msgid "Last Keyword XMP." -msgstr "Mots-clés" - -#: src/properties.cpp:387 -#, fuzzy -msgid "Lens Manufacturer" -msgstr "Constructeur" - -#: src/properties.cpp:387 -#, fuzzy -msgid "Lens Manufacturer." -msgstr "Constructeur" - -#: src/properties.cpp:388 -#, fuzzy -msgid "Lens Model." -msgstr "Mode scène" - -#: src/properties.cpp:389 -#, fuzzy -msgid "Rating Percent" -msgstr "Classement Windows (pourcentage)" - -#: src/properties.cpp:389 -#, fuzzy -msgid "Rating Percent." -msgstr "Classement Windows (pourcentage)" - -#: src/properties.cpp:395 -msgid "Keywords." -msgstr "Mots-clés" - -#: src/properties.cpp:396 -#, fuzzy -msgid "PDF Version" -msgstr "Version du fichier" - -#: src/properties.cpp:396 -msgid "The PDF file version (for example: 1.0, 1.3, and so on)." -msgstr "" - -#: src/properties.cpp:397 -#, fuzzy -msgid "Producer" -msgstr "Identifiant du produit" - -#: src/properties.cpp:397 -#, fuzzy -msgid "The name of the tool that created the PDF document." -msgstr "Le type de source lumineuse." - -#: src/properties.cpp:403 -#, fuzzy -msgid "Authors Position" -msgstr "Position mise au point" - -#: src/properties.cpp:403 -#, fuzzy -msgid "By-line title." -msgstr "Titre du créateur" - -#: src/properties.cpp:404 -#, fuzzy -msgid "Caption Writer" -msgstr "Légende" - -#: src/properties.cpp:404 -#, fuzzy -msgid "Writer/editor." -msgstr "Auteur de la Description" - -#: src/properties.cpp:405 -msgid "Category. Limited to 3 7-bit ASCII characters." -msgstr "" - -#: src/properties.cpp:406 -#, fuzzy -msgid "City." -msgstr "Ville" - -#: src/properties.cpp:407 -msgid "Country/primary location." -msgstr "" - -#: src/properties.cpp:408 -#, fuzzy -msgid "Credit." -msgstr "Crédit" - -#: src/properties.cpp:409 -msgid "" -"The date the intellectual content of the document was created (rather than " -"the creation date of the physical representation), following IIM " -"conventions. For example, a photo taken during the American Civil War would " -"have a creation date during that epoch (1861-1865) rather than the date the " -"photo was digitized for archiving." -msgstr "" - -#: src/properties.cpp:413 -#, fuzzy -msgid "Headline." -msgstr "Chapô" - -#: src/properties.cpp:414 -#, fuzzy -msgid "Special instructions." -msgstr "Instructions particulières" - -#: src/properties.cpp:415 -#, fuzzy -msgid "Source." -msgstr "Source" - -#: src/properties.cpp:416 -#, fuzzy -msgid "State" -msgstr "Date d'envoi" - -#: src/properties.cpp:416 -#, fuzzy -msgid "Province/state." -msgstr "État Région" - -#: src/properties.cpp:417 -#, fuzzy -msgid "Supplemental category." -msgstr "Catégorie Supplémentaire" - -#: src/properties.cpp:418 -#, fuzzy -msgid "Original transmission reference." -msgstr "Référence de la transmission" - -#: src/properties.cpp:419 -msgid "Urgency. Valid range is 1-8." -msgstr "" - -#: src/properties.cpp:427 -#, fuzzy -msgid "inches" -msgstr "Pouce" - -#: src/properties.cpp:428 src/tags.cpp:242 -msgid "cm" -msgstr "cm" - -#: src/properties.cpp:432 -#, fuzzy -msgid "Auto Brightness" -msgstr "Luminosité" - -#: src/properties.cpp:432 -msgid "When true, \"Brightness\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:433 -#, fuzzy -msgid "Auto Contrast" -msgstr "Contraste" - -#: src/properties.cpp:433 -msgid "When true, \"Contrast\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:434 -#, fuzzy -msgid "Auto Exposure" -msgstr "Exposition" - -#: src/properties.cpp:434 -msgid "When true, \"Exposure\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:435 -#, fuzzy -msgid "Auto Shadows" -msgstr "Ombragé" - -#: src/properties.cpp:435 -msgid "When true,\"Shadows\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:436 -#, fuzzy -msgid "Blue Hue" -msgstr "Balance des bleus" - -#: src/properties.cpp:436 -#, fuzzy -msgid "\"Blue Hue\" setting. Range -100 to 100." -msgstr "Réglage de saturation" - -#: src/properties.cpp:437 -#, fuzzy -msgid "Blue Saturation" -msgstr "Saturation" - -#: src/properties.cpp:437 -#, fuzzy -msgid "\"Blue Saturation\" setting. Range -100 to +100." -msgstr "Réglage de saturation" - -#: src/properties.cpp:438 -#, fuzzy -msgid "\"Brightness\" setting. Range 0 to +150." -msgstr "Réglage de Netteté" - -#: src/properties.cpp:439 -#, fuzzy -msgid "Camera Profile" -msgstr "Profil couleur" - -#: src/properties.cpp:439 -#, fuzzy -msgid "\"Camera Profile\" setting." -msgstr "Réglage appareil photo" - -#: src/properties.cpp:440 -#, fuzzy -msgid "Chromatic Aberration Blue" -msgstr "Réglage de saturation chromatique" - -#: src/properties.cpp:440 -#, fuzzy -msgid "" -"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." -msgstr "Réglage de saturation" - -#: src/properties.cpp:441 -#, fuzzy -msgid "Chromatic Aberration Red" -msgstr "Réglage de saturation chromatique" - -#: src/properties.cpp:441 -#, fuzzy -msgid "" -"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." -msgstr "Réglage de saturation" - -#: src/properties.cpp:442 -#, fuzzy -msgid "Color Noise Reduction" -msgstr "Réduction du bruit" - -#: src/properties.cpp:442 -#, fuzzy -msgid "\"Color Noise Reducton\" setting. Range 0 to +100." -msgstr "Réglage de saturation" - -#: src/properties.cpp:443 -#, fuzzy -msgid "\"Contrast\" setting. Range -50 to +100." -msgstr "Réglage de saturation" - -#: src/properties.cpp:444 -msgid "When \"Has Crop\" is true, top of crop rectangle" -msgstr "" - -#: src/properties.cpp:445 -msgid "When \"Has Crop\" is true, left of crop rectangle." -msgstr "" - -#: src/properties.cpp:446 -#, fuzzy -msgid "Crop Bottom" -msgstr "Bas" - -#: src/properties.cpp:446 -msgid "When \"Has Crop\" is true, bottom of crop rectangle." -msgstr "" - -#: src/properties.cpp:447 -#, fuzzy -msgid "Crop Right" -msgstr "Droit d'auteur" - -#: src/properties.cpp:447 -msgid "When \"Has Crop\" is true, right of crop rectangle." -msgstr "" - -#: src/properties.cpp:448 -#, fuzzy -msgid "Crop Angle" -msgstr "haut, gauche" - -#: src/properties.cpp:448 -msgid "When \"Has Crop\" is true, angle of crop rectangle." -msgstr "" - -#: src/properties.cpp:449 -msgid "Width of resulting cropped image in CropUnits units." -msgstr "" - -#: src/properties.cpp:450 -msgid "Height of resulting cropped image in CropUnits units." -msgstr "" - -#: src/properties.cpp:451 -#, fuzzy -msgid "Crop Units" -msgstr "Droit d'auteur" - -#: src/properties.cpp:451 -msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" -msgstr "" - -#: src/properties.cpp:452 -#, fuzzy -msgid "\"Exposure\" setting. Range -4.0 to +4.0." -msgstr "Réglage de Netteté" - -#: src/properties.cpp:453 -msgid "GreenHue" -msgstr "Mode contrôle" - -#: src/properties.cpp:453 -#, fuzzy -msgid "\"Green Hue\" setting. Range -100 to +100." -msgstr "Réglage de saturation" - -#: src/properties.cpp:454 -#, fuzzy -msgid "Green Saturation" -msgstr "Saturation" - -#: src/properties.cpp:454 -#, fuzzy -msgid "\"Green Saturation\" setting. Range -100 to +100." -msgstr "Réglage de saturation" - -#: src/properties.cpp:455 -#, fuzzy -msgid "Has Crop" -msgstr "Compensation Flash" - -#: src/properties.cpp:455 -msgid "When true, image has a cropping rectangle." -msgstr "" - -#: src/properties.cpp:456 -#, fuzzy -msgid "Has Settings" -msgstr "Réglage flash" - -#: src/properties.cpp:456 -msgid "When true, non-default camera raw settings." -msgstr "" - -#: src/properties.cpp:457 -msgid "Luminance Smoothing" -msgstr "" - -#: src/properties.cpp:457 -#, fuzzy -msgid "\"Luminance Smoothing\" setting. Range 0 to +100." -msgstr "Réglage de saturation" - -#: src/properties.cpp:458 -#, fuzzy -msgid "Raw File Name" -msgstr "Nom du fichier" - -#: src/properties.cpp:458 -msgid "File name of raw file (not a complete path)." -msgstr "" - -#: src/properties.cpp:459 -#, fuzzy -msgid "Red Hue" -msgstr "tonalité" - -#: src/properties.cpp:459 -#, fuzzy -msgid "\"Red Hue\" setting. Range -100 to +100." -msgstr "Réglage de saturation" - -#: src/properties.cpp:460 -#, fuzzy -msgid "Red Saturation" -msgstr "Saturation" - -#: src/properties.cpp:460 -#, fuzzy -msgid "\"Red Saturation\" setting. Range -100 to +100." -msgstr "Réglage de saturation" - -#: src/properties.cpp:461 -#, fuzzy -msgid "\"Saturation\" setting. Range -100 to +100." -msgstr "Réglage de saturation" - -#: src/properties.cpp:462 -#, fuzzy -msgid "Shadows" -msgstr "Ombragé" - -#: src/properties.cpp:462 -#, fuzzy -msgid "\"Shadows\" setting. Range 0 to +100." -msgstr "Réglage de Netteté" - -#: src/properties.cpp:463 -#, fuzzy -msgid "Shadow Tint" -msgstr "Ombragé" - -#: src/properties.cpp:463 -#, fuzzy -msgid "\"Shadow Tint\" setting. Range -100 to +100." -msgstr "Réglage de saturation" - -#: src/properties.cpp:464 -#, fuzzy -msgid "\"Sharpness\" setting. Range 0 to +100." -msgstr "Réglage de Netteté" - -#: src/properties.cpp:465 -#, fuzzy -msgid "\"Temperature\" setting. Range 2000 to 50000." -msgstr "Réglage de saturation" - -#: src/properties.cpp:466 -#, fuzzy -msgid "Tint" -msgstr "Le fichier" - -#: src/properties.cpp:466 -#, fuzzy -msgid "\"Tint\" setting. Range -150 to +150." -msgstr "Réglage de saturation" - -#: src/properties.cpp:467 -msgid "Tone Curve" -msgstr "Courbe de tonalité" - -#: src/properties.cpp:467 -msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." -msgstr "" - -#: src/properties.cpp:468 -#, fuzzy -msgid "Tone Curve Name" -msgstr "Courbe de tonalité" - -#: src/properties.cpp:468 -msgid "" -"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " -"Contrast, Strong Contrast, Custom or a user-defined preset name." -msgstr "" - -#: src/properties.cpp:470 -msgid "Version of Camera Raw plugin." -msgstr "" - -#: src/properties.cpp:471 -#, fuzzy -msgid "Vignette Amount" -msgstr "Point blanc" - -#: src/properties.cpp:471 -#, fuzzy -msgid "\"Vignetting Amount\" setting. Range -100 to +100." -msgstr "Réglage de saturation" - -#: src/properties.cpp:472 -#, fuzzy -msgid "Vignette Midpoint" -msgstr "Point blanc" - -#: src/properties.cpp:472 -#, fuzzy -msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." -msgstr "Réglage de saturation" - -#: src/properties.cpp:473 -msgid "" -"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " -"Tungsten, Fluorescent, Flash, Custom" -msgstr "" - -#: src/properties.cpp:480 -msgid "TIFF tag 256, 0x100. Image width in pixels." -msgstr "" - -#: src/properties.cpp:481 src/tags.cpp:420 -msgid "Image Length" -msgstr "Hauteur de l'image" - -#: src/properties.cpp:481 -msgid "TIFF tag 257, 0x101. Image height in pixels." -msgstr "" - -#: src/properties.cpp:482 -#, fuzzy -msgid "Bits Per Sample" -msgstr "Bits des échantillons" - -#: src/properties.cpp:482 -msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." -msgstr "" - -#: src/properties.cpp:483 src/tags.cpp:430 -msgid "Compression" -msgstr "Compression" - -#: src/properties.cpp:483 -msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." -msgstr "" - -#: src/properties.cpp:484 src/tags.cpp:436 -msgid "Photometric Interpretation" -msgstr "Interprétation photométrique" - -#: src/properties.cpp:484 -msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." -msgstr "" - -#: src/properties.cpp:485 -msgid "" -"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " -"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " -"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " -"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " -"0th column at bottom 8 = 0th row at left, 0th column at bottom" -msgstr "" - -#: src/properties.cpp:494 -#, fuzzy -msgid "Samples Per Pixel" -msgstr "Échantillons par pixel" - -#: src/properties.cpp:494 -msgid "TIFF tag 277, 0x115. Number of components per pixel." -msgstr "" - -#: src/properties.cpp:495 src/tags.cpp:510 -msgid "Planar Configuration" -msgstr "Configuration planaire" - -#: src/properties.cpp:495 -msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." -msgstr "" - -#: src/properties.cpp:496 -#, fuzzy -msgid "YCbCr Sub Sampling" -msgstr "Sous échantillonage YCbCr" - -#: src/properties.cpp:496 -msgid "" -"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " -"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" -msgstr "" - -#: src/properties.cpp:498 src/tags.cpp:713 -msgid "YCbCr Positioning" -msgstr "Positionnement YCbCr" - -#: src/properties.cpp:498 -msgid "" -"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " -"centered; 2 = co-sited." -msgstr "" - -#: src/properties.cpp:500 -#, fuzzy -msgid "X Resolution" -msgstr "Résolution X" - -#: src/properties.cpp:500 -msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." -msgstr "" - -#: src/properties.cpp:501 -#, fuzzy -msgid "Y Resolution" -msgstr "Résolution Y" - -#: src/properties.cpp:501 -msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." -msgstr "" - -#: src/properties.cpp:502 src/tags.cpp:528 -msgid "Resolution Unit" -msgstr "Unité de résolution" - -#: src/properties.cpp:502 -msgid "" -"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " -"of: 2 = inches; 3 = centimeters." -msgstr "" - -#: src/properties.cpp:504 src/tags.cpp:533 -msgid "Transfer Function" -msgstr "Fonction de transfert" - -#: src/properties.cpp:504 -msgid "" -"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " -"with 3 * 256 entries." -msgstr "" - -#: src/properties.cpp:506 src/tags.cpp:565 -msgid "White Point" -msgstr "Point blanc" - -#: src/properties.cpp:506 -msgid "TIFF tag 318, 0x13E. Chromaticity of white point." -msgstr "" - -#: src/properties.cpp:507 src/tags.cpp:570 -msgid "Primary Chromaticities" -msgstr "Chromaticitées Primaire" - -#: src/properties.cpp:507 -msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." -msgstr "" - -#: src/properties.cpp:508 -msgid "" -"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." -msgstr "" - -#: src/properties.cpp:509 -#, fuzzy -msgid "Reference Black White" -msgstr "Noir/Blanc de Référence" - -#: src/properties.cpp:509 -msgid "TIFF tag 532, 0x214. Reference black and white point values." -msgstr "" - -#: src/properties.cpp:510 src/tags.cpp:545 -msgid "Date and Time" -msgstr "Date et heure" - -#: src/properties.cpp:510 -msgid "" -"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " -"and time of image creation (no time zone in EXIF), stored in ISO 8601 " -"format, not the original EXIF format. This property includes the value for " -"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" -"ModifyDate." -msgstr "" - -#: src/properties.cpp:516 src/tags.cpp:458 -msgid "Image Description" -msgstr "Description de l'image" - -#: src/properties.cpp:516 -msgid "" -"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " -"in XMP as dc:description." -msgstr "" - -#: src/properties.cpp:517 -#, fuzzy -msgid "Make" -msgstr "Dur" - -#: src/properties.cpp:517 -msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." -msgstr "" - -#: src/properties.cpp:518 -msgid "TIFF tag 272, 0x110. Model name or number of equipment." -msgstr "" - -#: src/properties.cpp:519 -msgid "" -"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " -"property is stored in XMP as xmp:CreatorTool. " -msgstr "" - -#: src/properties.cpp:521 -msgid "" -"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " -"property is stored in XMP as the first item in the dc:creator array." -msgstr "" - -#: src/properties.cpp:523 -msgid "" -"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " -"in XMP as dc:rights." -msgstr "" - -#: src/properties.cpp:530 src/tags.cpp:1598 -msgid "Exif Version" -msgstr "Version d'exif" - -#: src/properties.cpp:530 -msgid "EXIF tag 36864, 0x9000. EXIF version number." -msgstr "" - -#: src/properties.cpp:531 -#, fuzzy -msgid "Flashpix Version" -msgstr "Version FlashPix" - -#: src/properties.cpp:531 -msgid "EXIF tag 40960, 0xA000. Version of FlashPix." -msgstr "" - -#: src/properties.cpp:532 -msgid "EXIF tag 40961, 0xA001. Color space information" -msgstr "" - -#: src/properties.cpp:533 src/tags.cpp:1609 -#, fuzzy -msgid "Components Configuration" -msgstr "Configuration image" - -#: src/properties.cpp:533 -msgid "" -"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " -"compressed data), 1 2 3 0 (other cases)." -msgstr "" - -#: src/properties.cpp:535 src/tags.cpp:818 -#, fuzzy -msgid "Compressed Bits Per Pixel" -msgstr "Bits compressés par pixel" - -#: src/properties.cpp:535 -msgid "" -"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " -"indicated in unit bits per pixel." -msgstr "" - -#: src/properties.cpp:537 src/tags.cpp:1693 -msgid "Pixel X Dimension" -msgstr "" - -#: src/properties.cpp:537 -msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." -msgstr "" - -#: src/properties.cpp:538 src/tags.cpp:1700 -msgid "Pixel Y Dimension" -msgstr "" - -#: src/properties.cpp:538 -msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." -msgstr "" - -#: src/properties.cpp:539 src/tags.cpp:1667 -msgid "User Comment" -msgstr "Commentaire de l'utilisateur" - -#: src/properties.cpp:539 -msgid "EXIF tag 37510, 0x9286. Comments from user." -msgstr "" - -#: src/properties.cpp:540 src/tags.cpp:1709 -msgid "Related Sound File" -msgstr "" - -#: src/properties.cpp:540 -msgid "" -"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." -msgstr "" - -#: src/properties.cpp:541 -#, fuzzy -msgid "Date and Time Original" -msgstr "Date et heure (originel)" - -#: src/properties.cpp:541 -msgid "" -"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " -"time when original image was generated, in ISO 8601 format. Includes the " -"EXIF SubSecTimeOriginal data." -msgstr "" - -#: src/properties.cpp:544 -#, fuzzy -msgid "Date and Time Digitized" -msgstr "Date et heure (numérisé)" - -#: src/properties.cpp:544 -msgid "" -"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " -"time when image was stored as digital data, can be the same as " -"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " -"format. Includes the EXIF SubSecTimeDigitized data." -msgstr "" - -#: src/properties.cpp:548 -#, fuzzy -msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." -msgstr "Temps d'exposition, en secondes (sec)." - -#: src/properties.cpp:549 -#, fuzzy -msgid "F Number" -msgstr "Nombre F" - -#: src/properties.cpp:549 -msgid "EXIF tag 33437, 0x829D. F number." -msgstr "" - -#: src/properties.cpp:550 -msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." -msgstr "" - -#: src/properties.cpp:551 src/tags.cpp:800 src/tags.cpp:1552 -msgid "Spectral Sensitivity" -msgstr "Sensibilité spectrale" - -#: src/properties.cpp:551 -msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." -msgstr "" - -#: src/properties.cpp:552 -#, fuzzy -msgid "ISOSpeedRatings" -msgstr "Vitesse en ISO" - -#: src/properties.cpp:552 -msgid "" -"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " -"specified in ISO 12232." -msgstr "" - -#: src/properties.cpp:554 src/tags.cpp:807 -msgid "OECF" -msgstr "" - -#: src/properties.cpp:554 -msgid "" -"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " -"ISO 14524." -msgstr "" - -#: src/properties.cpp:555 -msgid "" -"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " -"specification." -msgstr "" - -#: src/properties.cpp:556 -#, fuzzy -msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." -msgstr "La distance au sujet, donnée en mètres." - -#: src/properties.cpp:557 src/tags.cpp:821 -#, fuzzy -msgid "Brightness Value" -msgstr "Valeur de luminosité" - -#: src/properties.cpp:557 -#, fuzzy -msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." -msgstr "La distance au sujet, donnée en mètres." - -#: src/properties.cpp:558 -msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." -msgstr "" - -#: src/properties.cpp:559 -#, fuzzy -msgid "Maximum Aperture Value" -msgstr "Valeur maximal d'ouverture" - -#: src/properties.cpp:559 -#, fuzzy -msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." -msgstr "La distance au sujet, donnée en mètres." - -#: src/properties.cpp:560 -#, fuzzy -msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." -msgstr "La distance au sujet, donnée en mètres." - -#: src/properties.cpp:561 -#, fuzzy -msgid "EXIF tag 37383, 0x9207. Metering mode." -msgstr "La distance au sujet, donnée en mètres." - -#: src/properties.cpp:562 -#, fuzzy -msgid "EXIF tag 37384, 0x9208. Light source." -msgstr "La distance au sujet, donnée en mètres." - -#: src/properties.cpp:563 -msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." -msgstr "" - -#: src/properties.cpp:564 -#, fuzzy -msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." -msgstr "La distance au sujet, donnée en mètres." - -#: src/properties.cpp:565 src/tags.cpp:1659 -msgid "Subject Area" -msgstr "Aire du sujet" - -#: src/properties.cpp:565 -#, fuzzy -msgid "" -"EXIF tag 37396, 0x9214. The location and area of the main subject in the " -"overall scene." -msgstr "" -"Ce marqueur indique l'emplacement et l'aire du sujet principal dans la scène " -"générale." - -#: src/properties.cpp:566 src/tags.cpp:829 src/tags.cpp:1724 -msgid "Flash Energy" -msgstr "Puissance flash" - -#: src/properties.cpp:566 -msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." -msgstr "" - -#: src/properties.cpp:567 src/tags.cpp:830 src/tags.cpp:1728 -msgid "Spatial Frequency Response" -msgstr "" - -#: src/properties.cpp:567 -msgid "" -"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " -"as specified in ISO 12233." -msgstr "" - -#: src/properties.cpp:569 src/tags.cpp:832 -#, fuzzy -msgid "Focal Plane X Resolution" -msgstr "x-Résolution du plan focal" - -#: src/properties.cpp:569 -msgid "" -"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " -"unit." -msgstr "" - -#: src/properties.cpp:570 src/tags.cpp:833 -#, fuzzy -msgid "Focal Plane Y Resolution" -msgstr "x-Résolution du plan focal" - -#: src/properties.cpp:570 -msgid "" -"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " -"unit." -msgstr "" - -#: src/properties.cpp:571 src/tags.cpp:834 src/tags.cpp:1741 -msgid "Focal Plane Resolution Unit" -msgstr "Unité de résolution du plan focal" - -#: src/properties.cpp:571 -msgid "" -"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " -"FocalPlaneYResolution." -msgstr "" - -#: src/properties.cpp:572 src/tags.cpp:838 src/tags.cpp:1745 -msgid "Subject Location" -msgstr "Emplacement du sujet" - -#: src/properties.cpp:572 -msgid "" -"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " -"value is the horizontal pixel and the second value is the vertical pixel at " -"which the main subject appears." -msgstr "" - -#: src/properties.cpp:575 src/tags.cpp:839 -#, fuzzy -msgid "Exposure Index" -msgstr "Index d'exposition" - -#: src/properties.cpp:575 -msgid "EXIF tag 41493, 0xA215. Exposure index of input device." -msgstr "" - -#: src/properties.cpp:576 src/tags.cpp:844 src/tags.cpp:1756 -msgid "Sensing Method" -msgstr "Méthode de capture numérique" - -#: src/properties.cpp:576 -msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." -msgstr "" - -#: src/properties.cpp:577 -#, fuzzy -msgid "EXIF tag 41728, 0xA300. Indicates image source." -msgstr "Ce marqueur indique la distance au sujet." - -#: src/properties.cpp:578 src/tags.cpp:1764 -msgid "Scene Type" -msgstr "Type de scène" - -#: src/properties.cpp:578 -#, fuzzy -msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." -msgstr "Ce marqueur indique la distance au sujet." - -#: src/properties.cpp:579 src/tags.cpp:754 -msgid "CFA Pattern" -msgstr "Motif CFA" - -#: src/properties.cpp:579 -msgid "" -"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " -"sense." -msgstr "" - -#: src/properties.cpp:580 src/tags.cpp:1774 -msgid "Custom Rendered" -msgstr "Rendu personnalisé" - -#: src/properties.cpp:580 -#, fuzzy -msgid "" -"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " -"data." -msgstr "" -"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " -"a été enregistrée." - -#: src/properties.cpp:581 -#, fuzzy -msgid "" -"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " -"shot." -msgstr "" -"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " -"a été enregistrée." - -#: src/properties.cpp:582 -#, fuzzy -msgid "" -"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " -"was shot." -msgstr "" -"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " -"a été enregistrée." - -#: src/properties.cpp:583 src/tags.cpp:1788 -msgid "Digital Zoom Ratio" -msgstr "Rapport de zoom numérique" - -#: src/properties.cpp:583 -#, fuzzy -msgid "" -"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " -"shot." -msgstr "" -"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " -"a été enregistrée." - -#: src/properties.cpp:584 src/tags.cpp:1793 -msgid "Focal Length In 35mm Film" -msgstr "Longueur focale dans un film de 35mm" - -#: src/properties.cpp:584 -#, fuzzy -msgid "" -"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " -"35mm film camera, in mm. A value of 0 means the focal length is unknown. " -"Note that this tag differs from the FocalLength tag." -msgstr "" -"Ce marqueur indique la longueur focale équivalente en assumant un appareil " -"avec un film de 35mm, en mm. Une valeur de 0 indique que la longueur focale " -"est inconnue. Notez que ce marqueur est différent du marqueur ." - -#: src/properties.cpp:587 src/tags.cpp:1799 -msgid "Scene Capture Type" -msgstr "Type de scène photographiée" - -#: src/properties.cpp:587 -#, fuzzy -msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." -msgstr "" -"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " -"a été enregistrée." - -#: src/properties.cpp:588 src/tags.cpp:1804 -msgid "Gain Control" -msgstr "Contrôle du gain" - -#: src/properties.cpp:588 -#, fuzzy -msgid "" -"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " -"adjustment." -msgstr "Ce marqueur indique le degré général d'ajustement du gain de l'image." - -#: src/properties.cpp:589 -#, fuzzy -msgid "" -"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " -"applied by the camera." -msgstr "" -"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " -"a été enregistrée." - -#: src/properties.cpp:590 -#, fuzzy -msgid "" -"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " -"applied by the camera." -msgstr "" -"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " -"a été enregistrée." - -#: src/properties.cpp:591 -#, fuzzy -msgid "" -"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " -"applied by the camera." -msgstr "" -"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " -"a été enregistrée." - -#: src/properties.cpp:592 src/tags.cpp:1819 -msgid "Device Setting Description" -msgstr "Description des paramètres du matériel" - -#: src/properties.cpp:592 -#, fuzzy -msgid "" -"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " -"conditions of a particular camera model." -msgstr "" -"Ce marqueur indique les informations sur les conditions lors de la prise de " -"vue pour un modèle particulier d'appareil. Ce marqueur n'est utilisé que " -"pour indiquer les paramètres de prise de vue au lecteur." - -#: src/properties.cpp:593 src/tags.cpp:1824 -msgid "Subject Distance Range" -msgstr "Échelle de distance au sujet" - -#: src/properties.cpp:593 -#, fuzzy -msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." -msgstr "Ce marqueur indique la distance au sujet." - -#: src/properties.cpp:594 src/tags.cpp:1827 -msgid "Image Unique ID" -msgstr "ID unique de l'image" - -#: src/properties.cpp:594 -#, fuzzy -msgid "" -"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " -"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " -"and 128-bit fixed length." -msgstr "" -"Ce marqueur indique un identificateur unique assigné à chaque image. Il est " -"enregistré sous la forme d'une chaîne ASCII équivalente à la notation " -"hexadécimale et d'une longueur fixe de 128 bits." - -#: src/properties.cpp:596 src/tags.cpp:1927 -msgid "GPS Version ID" -msgstr "ID version GPS" - -#: src/properties.cpp:596 -msgid "" -"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " -"period separators. The current value is \"2.0.0.0\"." -msgstr "" - -#: src/properties.cpp:598 src/tags.cpp:1938 -msgid "GPS Latitude" -msgstr "Latitude GPS" - -#: src/properties.cpp:598 -msgid "" -"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." -msgstr "" - -#: src/properties.cpp:599 src/tags.cpp:1950 -msgid "GPS Longitude" -msgstr "Longitude GPS" - -#: src/properties.cpp:599 -msgid "" -"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." -msgstr "" - -#: src/properties.cpp:600 src/tags.cpp:1958 -msgid "GPS Altitude Reference" -msgstr "Référence d'altitude GPS" - -#: src/properties.cpp:600 -#, fuzzy -msgid "" -"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." -msgstr "La distance au sujet, donnée en mètres." - -#: src/properties.cpp:601 src/tags.cpp:1966 -msgid "GPS Altitude" -msgstr "Altitude GPS" - -#: src/properties.cpp:601 -#, fuzzy -msgid "GPS tag 6, 0x06. Indicates altitude in meters." -msgstr "La distance au sujet, donnée en mètres." - -#: src/properties.cpp:602 src/tags.cpp:1970 -msgid "GPS Time Stamp" -msgstr "Horodateur GPS" - -#: src/properties.cpp:602 -msgid "" -"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " -"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " -"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " -"present, the date component for the XMP should be taken from exif:" -"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " -"no date is available, do not write exif:GPSTimeStamp to XMP." -msgstr "" - -#: src/properties.cpp:608 src/tags.cpp:1975 -msgid "GPS Satellites" -msgstr "Satellites GPS" - -#: src/properties.cpp:608 -msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." -msgstr "" - -#: src/properties.cpp:609 src/tags.cpp:1982 -msgid "GPS Status" -msgstr "Statut GPS" - -#: src/properties.cpp:609 -#, fuzzy -msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." -msgstr "La distance au sujet, donnée en mètres." - -#: src/properties.cpp:610 src/tags.cpp:1987 -msgid "GPS Measure Mode" -msgstr "Mode de mesure GPS" - -#: src/properties.cpp:610 -msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." -msgstr "" - -#: src/properties.cpp:611 -msgid "GPS DOP" -msgstr "" - -#: src/properties.cpp:611 -#, fuzzy -msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." -msgstr "Degrés de précision des données GPS" - -#: src/properties.cpp:612 src/tags.cpp:1995 -msgid "GPS Speed Reference" -msgstr "Référence de vitesse de GPS" - -#: src/properties.cpp:612 -#, fuzzy -msgid "GPS tag 12, 0x0C. Units used to speed measurement." -msgstr "La distance au sujet, donnée en mètres." - -#: src/properties.cpp:613 src/tags.cpp:1999 -msgid "GPS Speed" -msgstr "Vitesse GPS" - -#: src/properties.cpp:613 -#, fuzzy -msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." -msgstr "Degrés de précision des données GPS" - -#: src/properties.cpp:614 -#, fuzzy -msgid "GPS Track Reference" -msgstr "Référence de vitesse de GPS" - -#: src/properties.cpp:614 -#, fuzzy -msgid "GPS tag 14, 0x0E. Reference for movement direction." -msgstr "La distance au sujet, donnée en mètres." - -#: src/properties.cpp:615 src/tags.cpp:2006 -#, fuzzy -msgid "GPS Track" -msgstr "Référence de vitesse de GPS" - -#: src/properties.cpp:615 -msgid "" -"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." -msgstr "" - -#: src/properties.cpp:616 src/tags.cpp:2010 -msgid "GPS Image Direction Reference" -msgstr "Référence de direction de l'image GPS" - -#: src/properties.cpp:616 -#, fuzzy -msgid "GPS tag 16, 0x10. Reference for image direction." -msgstr "La distance au sujet, donnée en mètres." - -#: src/properties.cpp:617 src/tags.cpp:2014 -msgid "GPS Image Direction" -msgstr "Direction de l'image GPS" - -#: src/properties.cpp:617 -msgid "" -"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " -"359.99." -msgstr "" - -#: src/properties.cpp:618 src/tags.cpp:2018 -#, fuzzy -msgid "GPS Map Datum" -msgstr "Statut GPS" - -#: src/properties.cpp:618 -#, fuzzy -msgid "GPS tag 18, 0x12. Geodetic survey data." -msgstr "Degrés de précision des données GPS" - -#: src/properties.cpp:619 src/tags.cpp:2026 -msgid "GPS Destination Latitude" -msgstr "Latitude de destination GPS" - -#: src/properties.cpp:619 -msgid "" -"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " -"destination latitude." -msgstr "" - -#: src/properties.cpp:620 src/tags.cpp:2038 -msgid "GPS Destination Longitude" -msgstr "Longitude de destination GPS" - -#: src/properties.cpp:620 -msgid "" -"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " -"longitude." -msgstr "" - -#: src/properties.cpp:621 src/tags.cpp:2045 -#, fuzzy -msgid "GPS Destination Bearing Reference" -msgstr "Référence de latitude de destination GPS" - -#: src/properties.cpp:621 -#, fuzzy -msgid "GPS tag 23, 0x17. Reference for movement direction." -msgstr "La distance au sujet, donnée en mètres." - -#: src/properties.cpp:622 src/tags.cpp:2049 -#, fuzzy -msgid "GPS Destination Bearing" -msgstr "Latitude de destination GPS" - -#: src/properties.cpp:622 -msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." -msgstr "" - -#: src/properties.cpp:623 -#, fuzzy -msgid "GPS Destination Distance Refefrence" -msgstr "Référence de latitude de destination GPS" - -#: src/properties.cpp:623 -#, fuzzy -msgid "GPS tag 25, 0x19. Units used for speed measurement." -msgstr "La distance au sujet, donnée en mètres." - -#: src/properties.cpp:624 src/tags.cpp:2057 -msgid "GPS Destination Distance" -msgstr "Distance à la destination GPS" - -#: src/properties.cpp:624 -#, fuzzy -msgid "GPS tag 26, 0x1A. Distance to destination." -msgstr "La distance au sujet, donnée en mètres." - -#: src/properties.cpp:625 src/tags.cpp:2060 -#, fuzzy -msgid "GPS Processing Method" -msgstr "Méthode de capture numérique" - -#: src/properties.cpp:625 -msgid "" -"GPS tag 27, 0x1B. A character string recording the name of the method used " -"for location finding." -msgstr "" - -#: src/properties.cpp:626 src/tags.cpp:2065 -#, fuzzy -msgid "GPS Area Information" -msgstr "Information GPS" - -#: src/properties.cpp:626 -msgid "" -"GPS tag 28, 0x1C. A character string recording the name of the GPS area." -msgstr "" - -#: src/properties.cpp:627 src/tags.cpp:2073 -msgid "GPS Differential" -msgstr "" - -#: src/properties.cpp:627 -#, fuzzy -msgid "" -"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " -"the GPS receiver." -msgstr "" -"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " -"a été enregistrée." - -#: src/properties.cpp:633 -msgid "" -"A description of the lens used to take the photograph. For example, \"70-200 " -"mm f/2.8-4.0\"." -msgstr "" - -#: src/properties.cpp:634 -#, fuzzy -msgid "SerialNumber" -msgstr "Numéro de série" - -#: src/properties.cpp:634 -msgid "" -"The serial number of the camera or camera body used to take the photograph." -msgstr "" - -#: src/properties.cpp:640 -#, fuzzy -msgid "Contact Info-City" -msgstr "État/Région" - -#: src/properties.cpp:640 -#, fuzzy -msgid "The contact information city part." -msgstr "Informations prise de vue" - -#: src/properties.cpp:641 -#, fuzzy -msgid "Contact Info-Country" -msgstr "État/Région" - -#: src/properties.cpp:641 -#, fuzzy -msgid "The contact information country part." -msgstr "Informations prise de vue" - -#: src/properties.cpp:642 -#, fuzzy -msgid "Contact Info-Address" -msgstr "État/Région" - -#: src/properties.cpp:642 -msgid "" -"The contact information address part. Comprises an optional company name and " -"all required information to locate the building or postbox to which mail " -"should be sent." -msgstr "" - -#: src/properties.cpp:644 -#, fuzzy -msgid "Contact Info-Postal Code" -msgstr "État/Région" - -#: src/properties.cpp:644 -#, fuzzy -msgid "The contact information part denoting the local postal code." -msgstr "Informations prise de vue" - -#: src/properties.cpp:645 -#, fuzzy -msgid "Contact Info-State/Province" -msgstr "État/Région" - -#: src/properties.cpp:645 -msgid "" -"The contact information part denoting regional information like state or " -"province." -msgstr "" - -#: src/properties.cpp:646 -#, fuzzy -msgid "Contact Info-Email" -msgstr "État/Région" - -#: src/properties.cpp:646 -#, fuzzy -msgid "The contact information email address part." -msgstr "Informations prise de vue" - -#: src/properties.cpp:647 -#, fuzzy -msgid "Contact Info-Phone" -msgstr "État/Région" - -#: src/properties.cpp:647 -#, fuzzy -msgid "The contact information phone number part." -msgstr "Informations prise de vue" - -#: src/properties.cpp:648 -msgid "Contact Info-Web URL" -msgstr "" - -#: src/properties.cpp:648 -#, fuzzy -msgid "The contact information web address part." -msgstr "Informations prise de vue" - -#: src/properties.cpp:649 -msgid "" -"Code of the country the content is focussing on -- either the country shown " -"in visual media or referenced in text or audio media. This element is at the " -"top/first level of a top-down geographical hierarchy. The code should be " -"taken from ISO 3166 two or three letter code. The full name of a country " -"should go to the \"Country\" element." -msgstr "" - -#: src/properties.cpp:653 -msgid "Creator's Contact Info" -msgstr "" - -#: src/properties.cpp:653 -msgid "" -"The creator's contact information provides all necessary information to get " -"in contact with the creator of this news object and comprises a set of sub-" -"properties for proper addressing." -msgstr "" - -#: src/properties.cpp:655 -msgid "Intellectual Genre" -msgstr "" - -#: src/properties.cpp:655 -msgid "" -"Describes the nature, intellectual or journalistic characteristic of a news " -"object, not specifically its content." -msgstr "" - -#: src/properties.cpp:657 -msgid "" -"Name of a location the content is focussing on -- either the location shown " -"in visual media or referenced by text or audio media. This location name " -"could either be the name of a sublocation to a city or the name of a well " -"known location or (natural) monument outside a city. In the sense of a " -"sublocation to a city this element is at the fourth level of a top-down " -"geographical hierarchy." -msgstr "" - -#: src/properties.cpp:662 -#, fuzzy -msgid "IPTC Scene" -msgstr "centre" - -#: src/properties.cpp:662 -msgid "" -"Describes the scene of a photo content. Specifies one or more terms from the " -"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " -"in an unordered list." -msgstr "" - -#: src/properties.cpp:664 -#, fuzzy -msgid "IPTC Subject Code" -msgstr "Aire du sujet" - -#: src/properties.cpp:664 -msgid "" -"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " -"to categorize the content. Each Subject is represented as a string of 8 " -"digits in an unordered list." -msgstr "" - -#: src/properties.cpp:671 -#, fuzzy -msgid "Additional model info" -msgstr "informations de réglage appareil photo" - -#: src/properties.cpp:671 -msgid "" -"Information about the ethnicity and other facts of the model(s) in a model-" -"released image." -msgstr "" - -#: src/properties.cpp:672 -msgid "Code of featured Organisation" -msgstr "" - -#: src/properties.cpp:672 -msgid "" -"Code from controlled vocabulary for identyfing the organisation or company " -"which is featured in the image." -msgstr "" - -#: src/properties.cpp:673 -msgid "Controlled Vocabulary Term" -msgstr "" - -#: src/properties.cpp:673 -msgid "" -"A term to describe the content of the image by a value from a Controlled " -"Vocabulary." -msgstr "" - -#: src/properties.cpp:674 -#, fuzzy -msgid "Model age" -msgstr "Modèle" - -#: src/properties.cpp:674 -msgid "" -"Age of the human model(s) at the time this image was taken in a model " -"released image." -msgstr "" - -#: src/properties.cpp:675 -msgid "Name of featured Organisation" -msgstr "" - -#: src/properties.cpp:675 -msgid "Name of the organisation or company which is featured in the image." -msgstr "" - -#: src/properties.cpp:676 -#, fuzzy -msgid "Person shown" -msgstr "Version" - -#: src/properties.cpp:676 -msgid "Name of a person shown in the image." -msgstr "" - -#: src/properties.cpp:677 -#, fuzzy -msgid "Digital Image Identifier" -msgstr "Stabilisation de l'image" - -#: src/properties.cpp:677 -msgid "" -"Globally unique identifier for this digital image. It is created and applied " -"by the creator of the digital image at the time of its creation. this value " -"shall not be changed after that time." -msgstr "" - -#: src/properties.cpp:678 -msgid "Physical type of original photo" -msgstr "" - -#: src/properties.cpp:678 -#, fuzzy -msgid "The type of the source digital file." -msgstr "Le type de source lumineuse." - -#: src/properties.cpp:679 src/properties.cpp:935 src/properties.cpp:944 -#, fuzzy -msgid "Event" -msgstr "Soirée" - -#: src/properties.cpp:679 -msgid "Names or describes the specific event at which the photo was taken." -msgstr "" - -#: src/properties.cpp:680 -#, fuzzy -msgid "Maximum available height" -msgstr "Longueur focale maximum" - -#: src/properties.cpp:680 -msgid "" -"The maximum available height in pixels of the original photo from which this " -"photo has been derived by downsizing." -msgstr "" - -#: src/properties.cpp:681 -#, fuzzy -msgid "Maximum available width" -msgstr "Longueur focale maximum" - -#: src/properties.cpp:681 -msgid "" -"The maximum available width in pixels of the original photo from which this " -"photo has been derived by downsizing." -msgstr "" - -#: src/properties.cpp:682 -msgid "Registry Entry" -msgstr "" - -#: src/properties.cpp:682 -msgid "" -"Both a Registry Item Id and a Registry Organisation Id to record any " -"registration of this digital image with a registry." -msgstr "" - -#: src/properties.cpp:683 -#, fuzzy -msgid "Registry Entry-Item Identifier" -msgstr "Stabilisation de l'image" - -#: src/properties.cpp:683 -msgid "" -"A unique identifier created by a registry and applied by the creator of the " -"digital image. This value shall not be changed after being applied. This " -"identifier is linked to a corresponding Registry Organisation Identifier." -msgstr "" - -#: src/properties.cpp:684 -msgid "Registry Entry-Organisation Identifier" -msgstr "" - -#: src/properties.cpp:684 -msgid "" -"An identifier for the registry which issued the corresponding Registry Image " -"Id." -msgstr "" - -#: src/properties.cpp:685 -msgid "IPTC Fields Last Edited" -msgstr "" - -#: src/properties.cpp:685 -#, fuzzy -msgid "" -"The date and optionally time when any of the IPTC photo metadata fields has " -"been last edited." -msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." - -#: src/properties.cpp:686 -#, fuzzy -msgid "Location shown" -msgstr "Code du pays" - -#: src/properties.cpp:686 -#, fuzzy -msgid "A location shown in the image." -msgstr "Décalage de l'aperçu" - -#: src/properties.cpp:687 -#, fuzzy -msgid "Location Created" -msgstr "Code du pays" - -#: src/properties.cpp:687 -#, fuzzy -msgid "The location the photo was taken." -msgstr "Le type de source lumineuse." - -#: src/properties.cpp:688 -#, fuzzy -msgid "Location-City" -msgstr "Lieu précis" - -#: src/properties.cpp:688 -#, fuzzy -msgid "Name of the city of a location." -msgstr "Le type de source lumineuse." - -#: src/properties.cpp:689 -#, fuzzy -msgid "Location-Country ISO-Code" -msgstr "Code du pays" - -#: src/properties.cpp:689 -#, fuzzy -msgid "The ISO code of a country of a location." -msgstr "Le type de source lumineuse." - -#: src/properties.cpp:690 -#, fuzzy -msgid "Location-Country Name" -msgstr "Nom du pays" - -#: src/properties.cpp:690 -#, fuzzy -msgid "The name of a country of a location." -msgstr "Le type de source lumineuse." - -#: src/properties.cpp:691 -#, fuzzy -msgid "Location-Province/State" -msgstr "État Région" - -#: src/properties.cpp:691 -#, fuzzy -msgid "" -"The name of a subregion of a country - a province or state - of a location." -msgstr "Le type de source lumineuse." - -#: src/properties.cpp:692 -#, fuzzy -msgid "Location-Sublocation" -msgstr "Lieu précis" - -#: src/properties.cpp:692 -msgid "" -"Name of a sublocation. This sublocation name could either be the name of a " -"sublocation to a city or the name of a well known location or (natural) " -"monument outside a city." -msgstr "" - -#: src/properties.cpp:693 -#, fuzzy -msgid "Location-World Region" -msgstr "Code du pays" - -#: src/properties.cpp:693 -#, fuzzy -msgid "The name of a world region of a location." -msgstr "Le type de source lumineuse." - -#: src/properties.cpp:694 -#, fuzzy -msgid "Artwork or object in the image" -msgstr "Notice Droit d'auteur" - -#: src/properties.cpp:694 -msgid "A set of metadata about artwork or an object in the image." -msgstr "" - -#: src/properties.cpp:695 -#, fuzzy -msgid "Artwork or object-Copyright notice" -msgstr "Notice Droit d'auteur" - -#: src/properties.cpp:695 -msgid "" -"Contains any necessary copyright notice for claiming the intellectual " -"property for artwork or an object in the image and should identify the " -"current owner of the copyright of this work with associated intellectual " -"property rights." -msgstr "" - -#: src/properties.cpp:696 -#, fuzzy -msgid "Artwork or object-Creator" -msgstr "Notice Droit d'auteur" - -#: src/properties.cpp:696 -msgid "" -"Contains the name of the artist who has created artwork or an object in the " -"image. In cases where the artist could or should not be identified the name " -"of a company or organisation may be appropriate." -msgstr "" - -#: src/properties.cpp:697 -#, fuzzy -msgid "Artwork or object-Date Created" -msgstr "Notice Droit d'auteur" - -#: src/properties.cpp:697 -msgid "" -"Designates the date and optionally the time the artwork or object in the " -"image was created. This relates to artwork or objects with associated " -"intellectual property rights." -msgstr "" - -#: src/properties.cpp:698 -#, fuzzy -msgid "Artwork or object-Source" -msgstr "Notice Droit d'auteur" - -#: src/properties.cpp:698 -msgid "" -"The organisation or body holding and registering the artwork or object in " -"the image for inventory purposes." -msgstr "" - -#: src/properties.cpp:699 -#, fuzzy -msgid "Artwork or object-Source inventory number" -msgstr "Notice Droit d'auteur" - -#: src/properties.cpp:699 -msgid "" -"The inventory number issued by the organisation or body holding and " -"registering the artwork or object in the image." -msgstr "" - -#: src/properties.cpp:700 -#, fuzzy -msgid "Artwork or object-Title" -msgstr "Notice Droit d'auteur" - -#: src/properties.cpp:700 -msgid "A reference for the artwork or object in the image." -msgstr "" - -#: src/properties.cpp:707 -msgid "Scan from film" -msgstr "" - -#: src/properties.cpp:708 -msgid "Scan from transparency (including slide)" -msgstr "" - -#: src/properties.cpp:709 -msgid "Scan from print" -msgstr "" - -#: src/properties.cpp:710 -#, fuzzy -msgid "Camera RAW" -msgstr "Identifiant appareil photo" - -#: src/properties.cpp:711 -#, fuzzy -msgid "Camera TIFF" -msgstr "Identifiant appareil photo" - -#: src/properties.cpp:712 -#, fuzzy -msgid "Camera JPEG" -msgstr "Identifiant appareil photo" - -#: src/properties.cpp:717 -#, fuzzy -msgid "PLUS Version" -msgstr "Version du fichier" - -#: src/properties.cpp:717 -msgid "" -"The version number of the PLUS standards in place at the time of the " -"transaction." -msgstr "" - -#: src/properties.cpp:718 -#, fuzzy -msgid "Licensee" -msgstr "Objectif" - -#: src/properties.cpp:718 -msgid "" -"Party or parties to whom the license is granted by the Licensor/s under the " -"license transaction." -msgstr "" - -#: src/properties.cpp:719 -#, fuzzy -msgid "Licensee ID" -msgstr "ID Objectif" - -#: src/properties.cpp:719 -msgid "Optional PLUS-ID identifying each Licensee." -msgstr "" - -#: src/properties.cpp:720 -#, fuzzy -msgid "Licensee Name" -msgstr "Nom du pays" - -#: src/properties.cpp:720 -#, fuzzy -msgid "Name of each Licensee." -msgstr "Le type de source lumineuse." - -#: src/properties.cpp:721 -#, fuzzy -msgid "End User" -msgstr "Externe" - -#: src/properties.cpp:721 -msgid "Party or parties ultimately making use of the image under the license." -msgstr "" - -#: src/properties.cpp:722 -#, fuzzy -msgid "End User ID" -msgstr "Externe" - -#: src/properties.cpp:722 -msgid "Optional PLUS-ID identifying each End User." -msgstr "" - -#: src/properties.cpp:723 -#, fuzzy -msgid "End User Name" -msgstr "Nom du propriétaire" - -#: src/properties.cpp:723 -#, fuzzy -msgid "Name of each End User." -msgstr "Le type de source lumineuse." - -#: src/properties.cpp:724 -#, fuzzy -msgid "Licensor" -msgstr "Objectif" - -#: src/properties.cpp:724 -msgid "Party or parties granting the license to the Licensee." -msgstr "" - -#: src/properties.cpp:725 -#, fuzzy -msgid "Licensor ID" -msgstr "ID Objectif" - -#: src/properties.cpp:725 -msgid "Optional PLUS-ID identifying each Licensor." -msgstr "" - -#: src/properties.cpp:726 -#, fuzzy -msgid "Licensor Name" -msgstr "Nom du pays" - -#: src/properties.cpp:726 -#, fuzzy -msgid "Name of each Licensor." -msgstr "Le type de source lumineuse." - -#: src/properties.cpp:727 -#, fuzzy -msgid "Licensor Address" -msgstr "Température de l'objectif" - -#: src/properties.cpp:727 -#, fuzzy -msgid "Licensor street address." -msgstr "Libellé du pays" - -#: src/properties.cpp:728 -msgid "Licensor Address Detail" -msgstr "" - -#: src/properties.cpp:728 -msgid "Additional Licensor mailing address details." -msgstr "" - -#: src/properties.cpp:729 -#, fuzzy -msgid "Licensor City" -msgstr "Mexico Ville" - -#: src/properties.cpp:729 -#, fuzzy -msgid "Licensor City name." -msgstr "Libellé du pays" - -#: src/properties.cpp:730 -#, fuzzy -msgid "Licensor State or Province" -msgstr "État/Région" - -#: src/properties.cpp:730 -#, fuzzy -msgid "Licensor State or Province name." -msgstr "État/Région" - -#: src/properties.cpp:731 -#, fuzzy -msgid "Licensor Postal Code" -msgstr "Température de l'objectif" - -#: src/properties.cpp:731 -#, fuzzy -msgid "Licensor Postal Code or Zip Code." -msgstr "État/Région" - -#: src/properties.cpp:732 -#, fuzzy -msgid "Licensor Country" -msgstr "Pays" - -#: src/properties.cpp:732 -#, fuzzy -msgid "Licensor Country name." -msgstr "Libellé du pays" - -#: src/properties.cpp:733 -#, fuzzy -msgid "Licensor Telephone Type 1" -msgstr "Numéro de série de l'appareil photo" - -#: src/properties.cpp:733 -#, fuzzy -msgid "Licensor Telephone Type 1." -msgstr "Numéro de série de l'appareil photo" - -#: src/properties.cpp:734 -#, fuzzy -msgid "Licensor Telephone 1" -msgstr "Numéro de série de l'appareil photo" - -#: src/properties.cpp:734 -#, fuzzy -msgid "Licensor Telephone number 1." -msgstr "Numéro de série de l'appareil photo" - -#: src/properties.cpp:735 -#, fuzzy -msgid "Licensor Telephone Type 2" -msgstr "Numéro de série de l'appareil photo" - -#: src/properties.cpp:735 -#, fuzzy -msgid "Licensor Telephone Type 2." -msgstr "Numéro de série de l'appareil photo" - -#: src/properties.cpp:736 -#, fuzzy -msgid "Licensor Telephone 2" -msgstr "Numéro de série de l'appareil photo" - -#: src/properties.cpp:736 -#, fuzzy -msgid "Licensor Telephone number 2." -msgstr "Numéro de série de l'appareil photo" - -#: src/properties.cpp:737 -#, fuzzy -msgid "Licensor Email" -msgstr "Nom du pays" - -#: src/properties.cpp:737 -#, fuzzy -msgid "Licensor Email address." -msgstr "Nom du pays" - -#: src/properties.cpp:738 -#, fuzzy -msgid "Licensor URL" -msgstr "Objectif" - -#: src/properties.cpp:738 -msgid "Licensor world wide web address." -msgstr "" - -#: src/properties.cpp:739 -#, fuzzy -msgid "Licensor Notes" -msgstr "Température de l'objectif" - -#: src/properties.cpp:739 -msgid "" -"Supplemental information for use in identifying and contacting the Licensor/" -"s." -msgstr "" - -#: src/properties.cpp:740 -#, fuzzy -msgid "PLUS Media Summary Code" -msgstr "Mode de mesure GPS" - -#: src/properties.cpp:740 -msgid "" -"A PLUS-standardized alphanumeric code string summarizing the media usages " -"included in the license." -msgstr "" - -#: src/properties.cpp:741 -#, fuzzy -msgid "License Start Date" -msgstr "Date Minolta" - -#: src/properties.cpp:741 -#, fuzzy -msgid "The date on which the license takes effect." -msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." - -#: src/properties.cpp:742 -#, fuzzy -msgid "License End Date" -msgstr "Données de l'objectif" - -#: src/properties.cpp:742 -#, fuzzy -msgid "The date on which the license expires." -msgstr "Le type de source lumineuse." - -#: src/properties.cpp:743 -#, fuzzy -msgid "Media Constraints" -msgstr "Contraste" - -#: src/properties.cpp:743 -msgid "" -"Constraints limiting the scope of PLUS Media Usage/s included in the license " -"to particular named media or to media not yet specifically defined in the " -"PLUS Media Matrix." -msgstr "" - -#: src/properties.cpp:744 -#, fuzzy -msgid "Region Constraints" -msgstr "Contraste" - -#: src/properties.cpp:744 -msgid "" -"Constraints limiting the scope of geographic distribution to specific " -"cities, states, provinces or other areas to be included in or excluded from " -"the PLUS Regions specified in the Media Usages specified in the license." -msgstr "" - -#: src/properties.cpp:745 -#, fuzzy -msgid "Product or Service Constraints" -msgstr "Contraste" - -#: src/properties.cpp:745 -msgid "" -"Constraints limiting usage of the image to promotion of/association with a " -"named product or service." -msgstr "" - -#: src/properties.cpp:746 -#, fuzzy -msgid "Image File Constraints" -msgstr "Réglage de qualité de l'image" - -#: src/properties.cpp:746 -msgid "" -"Constraints on the changing of the image file name, metadata or file type." -msgstr "" - -#: src/properties.cpp:747 -#, fuzzy -msgid "Image Alteration Constraints" -msgstr "Réglage de qualité de l'image" - -#: src/properties.cpp:747 -msgid "" -"Constraints on alteration of the image by cropping, flipping, retouching, " -"colorization, de-colorization or merging." -msgstr "" - -#: src/properties.cpp:748 -#, fuzzy -msgid "Image Duplication Constraints" -msgstr "Réglage de qualité de l'image" - -#: src/properties.cpp:748 -msgid "Constraints on the creation of duplicates of the image." -msgstr "" - -#: src/properties.cpp:749 -#, fuzzy -msgid "Model Release Status" -msgstr "Date de publication" - -#: src/properties.cpp:749 -msgid "" -"Summarizes the availability and scope of model releases authorizing usage of " -"the likenesses of persons appearing in the photograph." -msgstr "" - -#: src/properties.cpp:750 -#, fuzzy -msgid "Model Release ID" -msgstr "Numéro modèle" - -#: src/properties.cpp:750 -msgid "Optional identifier associated with each Model Release." -msgstr "" - -#: src/properties.cpp:751 -msgid "Minor Model Age Disclosure" -msgstr "" - -#: src/properties.cpp:751 -msgid "" -"Age of the youngest model pictured in the image, at the time that the image " -"was made." -msgstr "" - -#: src/properties.cpp:752 -#, fuzzy -msgid "Property Release Status" -msgstr "Date de publication" - -#: src/properties.cpp:752 -msgid "" -"Summarizes the availability and scope of property releases authorizing usage " -"of the properties appearing in the photograph." -msgstr "" - -#: src/properties.cpp:753 -#, fuzzy -msgid "Property Release ID" -msgstr "Numéro modèle" - -#: src/properties.cpp:753 -msgid "Optional identifier associated with each Property Release." -msgstr "" - -#: src/properties.cpp:754 -#, fuzzy -msgid "Other Constraints" -msgstr "Contraste" - -#: src/properties.cpp:754 -msgid "Additional constraints on the license." -msgstr "" - -#: src/properties.cpp:755 -#, fuzzy -msgid "Credit Line Required" -msgstr "Non utilisé" - -#: src/properties.cpp:755 -msgid "Attribution requirements, if any." -msgstr "" - -#: src/properties.cpp:756 -msgid "Adult Content Warning" -msgstr "" - -#: src/properties.cpp:756 -msgid "Warning indicating the presence of content not suitable for minors." -msgstr "" - -#: src/properties.cpp:757 -#, fuzzy -msgid "Other License Requirements" -msgstr "Objectif" - -#: src/properties.cpp:757 -#, fuzzy -msgid "Additional license requirements." -msgstr "informations de réglage appareil photo" - -#: src/properties.cpp:758 -#, fuzzy -msgid "Terms and Conditions Text" -msgstr "Condition de prise de vue" - -#: src/properties.cpp:758 -msgid "Terms and Conditions applying to the license." -msgstr "" - -#: src/properties.cpp:759 -#, fuzzy -msgid "Terms and Conditions URL" -msgstr "Condition de prise de vue" - -#: src/properties.cpp:759 -msgid "URL for Terms and Conditions applying to the license." -msgstr "" - -#: src/properties.cpp:760 -#, fuzzy -msgid "Other License Conditions" -msgstr "Condition de prise de vue" - -#: src/properties.cpp:760 -#, fuzzy -msgid "Additional license conditions." -msgstr "informations de réglage appareil photo" - -#: src/properties.cpp:761 -#, fuzzy -msgid "Identifies the type of image delivered." -msgstr "Identifie le fournisseur et le produit" - -#: src/properties.cpp:762 -#, fuzzy -msgid "Licensor Image ID" -msgstr "ID Objectif" - -#: src/properties.cpp:762 -msgid "Optional identifier assigned by the Licensor to the image." -msgstr "" - -#: src/properties.cpp:763 -msgid "Image File Name As Delivered" -msgstr "" - -#: src/properties.cpp:763 -msgid "" -"Name of the image file delivered to the Licensee for use under the license." -msgstr "" - -#: src/properties.cpp:764 -#, fuzzy -msgid "Image File Format As Delivered" -msgstr "Réglage de qualité de l'image" - -#: src/properties.cpp:764 -msgid "" -"File format of the image file delivered to the Licensee for use under the " -"license." -msgstr "" - -#: src/properties.cpp:765 -msgid "Image File Size As Delivered" -msgstr "" - -#: src/properties.cpp:765 -msgid "Size of the image file delivered to the Licensee." -msgstr "" - -#: src/properties.cpp:766 -#, fuzzy -msgid "Copyright Status" -msgstr "Droit d'auteur" - -#: src/properties.cpp:766 -#, fuzzy -msgid "Copyright status of the image." -msgstr "Notice Droit d'auteur" - -#: src/properties.cpp:767 -#, fuzzy -msgid "Copyright Registration Number" -msgstr "Nom du propriétaire" - -#: src/properties.cpp:767 -msgid "Copyright Registration Number, if any, applying to the licensed image." -msgstr "" - -#: src/properties.cpp:768 -#, fuzzy -msgid "First Publication Date" -msgstr "Date de numérisation" - -#: src/properties.cpp:768 -#, fuzzy -msgid "The date on which the image was first published." -msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." - -#: src/properties.cpp:769 -#, fuzzy -msgid "Copyright Owner" -msgstr "Droit d'auteur" - -#: src/properties.cpp:769 -msgid "Owner or owners of the copyright in the licensed image." -msgstr "" - -#: src/properties.cpp:770 -#, fuzzy -msgid "Copyright Owner ID" -msgstr "Droit d'auteur" - -#: src/properties.cpp:770 -msgid "Optional PLUS-ID identifying each Copyright Owner." -msgstr "" - -#: src/properties.cpp:771 -#, fuzzy -msgid "Copyright Owner Name" -msgstr "Nom du propriétaire" - -#: src/properties.cpp:771 -#, fuzzy -msgid "Name of Copyright Owner." -msgstr "Droit d'auteur" - -#: src/properties.cpp:772 -#, fuzzy -msgid "Copyright Owner Image ID" -msgstr "Droit d'auteur" - -#: src/properties.cpp:772 -msgid "Optional identifier assigned by the Copyright Owner to the image." -msgstr "" - -#: src/properties.cpp:773 -#, fuzzy -msgid "Image Creator" -msgstr "Orientation" - -#: src/properties.cpp:773 -#, fuzzy -msgid "Creator/s of the image." -msgstr "Décalage de l'aperçu" - -#: src/properties.cpp:774 -#, fuzzy -msgid "Image Creator ID" -msgstr "Orientation" - -#: src/properties.cpp:774 -msgid "Optional PLUS-ID identifying each Image Creator." -msgstr "" - -#: src/properties.cpp:775 -#, fuzzy -msgid "Image Creator Name" -msgstr "Type d'image" - -#: src/properties.cpp:775 -#, fuzzy -msgid "Name of Image Creator." -msgstr "Comptage d'image" - -#: src/properties.cpp:776 -#, fuzzy -msgid "Image Creator Image ID" -msgstr "Orientation" - -#: src/properties.cpp:776 -msgid "Optional identifier assigned by the Image Creator to the image." -msgstr "" - -#: src/properties.cpp:777 -#, fuzzy -msgid "Image Supplier ID" -msgstr "ID unique de l'image" - -#: src/properties.cpp:777 -msgid "Optional PLUS-ID identifying the Image Supplier." -msgstr "" - -#: src/properties.cpp:778 -#, fuzzy -msgid "Image Supplier Name" -msgstr "Taille de l'image" - -#: src/properties.cpp:778 -#, fuzzy -msgid "Name of Image Supplier." -msgstr "Comptage d'image" - -#: src/properties.cpp:779 -#, fuzzy -msgid "Image Supplier Image ID" -msgstr "ID unique de l'image" - -#: src/properties.cpp:779 -msgid "Optional identifier assigned by the Image Supplier to the image." -msgstr "" - -#: src/properties.cpp:780 -#, fuzzy -msgid "Licensee Image ID" -msgstr "Effacer le comptage d'image" - -#: src/properties.cpp:780 -msgid "Optional identifier assigned by the Licensee to the image." -msgstr "" - -#: src/properties.cpp:781 -#, fuzzy -msgid "Licensee Image Notes" -msgstr "Effacer le comptage d'image" - -#: src/properties.cpp:781 -#, fuzzy -msgid "Notes added by Licensee." -msgstr "Le type de source lumineuse." - -#: src/properties.cpp:782 -#, fuzzy -msgid "Other Image Info" -msgstr "Objectif" - -#: src/properties.cpp:782 -#, fuzzy -msgid "Additional image information." -msgstr "informations de réglage appareil photo" - -#: src/properties.cpp:783 -#, fuzzy -msgid "License ID" -msgstr "ID Objectif" - -#: src/properties.cpp:783 -msgid "Optional PLUS-ID assigned by the Licensor to the License." -msgstr "" - -#: src/properties.cpp:784 -#, fuzzy -msgid "Licensor Transaction ID" -msgstr "Date d'expiration" - -#: src/properties.cpp:784 -msgid "" -"Identifier assigned by Licensor for Licensor's reference and internal use." -msgstr "" - -#: src/properties.cpp:785 -#, fuzzy -msgid "Licensee Transaction ID" -msgstr "Date d'expiration" - -#: src/properties.cpp:785 -msgid "" -"Identifier assigned by Licensee for Licensee's reference and internal use." -msgstr "" - -#: src/properties.cpp:786 -#, fuzzy -msgid "Licensee Project Reference" -msgstr "Date de référence" - -#: src/properties.cpp:786 -msgid "Project reference name or description assigned by Licensee." -msgstr "" - -#: src/properties.cpp:787 -#, fuzzy -msgid "License Transaction Date" -msgstr "Date d'expiration" - -#: src/properties.cpp:787 -#, fuzzy -msgid "The date of the License Transaction." -msgstr "Le type de source lumineuse." - -#: src/properties.cpp:788 -#, fuzzy -msgid "Reuse" -msgstr "utilisé" - -#: src/properties.cpp:788 -msgid "" -"Indicates whether a license is a repeat or an initial license. Reuse may " -"require that licenses stored in files previously delivered to the customer " -"be updated." -msgstr "" - -#: src/properties.cpp:789 -#, fuzzy -msgid "Other License Documents" -msgstr "Condition de prise de vue" - -#: src/properties.cpp:789 -msgid "" -"Reference information for additional documents associated with the license." -msgstr "" - -#: src/properties.cpp:790 -#, fuzzy -msgid "Other License Info" -msgstr "Objectif" - -#: src/properties.cpp:790 -#, fuzzy -msgid "Additional license information." -msgstr "informations de réglage appareil photo" - -#: src/properties.cpp:791 src/properties.cpp:792 src/properties.cpp:793 -#: src/properties.cpp:794 src/properties.cpp:795 -msgid "Optional field for use at Licensor's discretion." -msgstr "" - -#: src/properties.cpp:794 -#, fuzzy -msgid "Custom 4" -msgstr "Personnel 1" - -#: src/properties.cpp:795 -#, fuzzy -msgid "Custom 5" -msgstr "Personnel 1" - -#: src/properties.cpp:796 -#, fuzzy -msgid "Custom 6" -msgstr "Personnel 1" - -#: src/properties.cpp:796 src/properties.cpp:797 src/properties.cpp:798 -#: src/properties.cpp:799 src/properties.cpp:800 -msgid "Optional field for use at Licensee's discretion." -msgstr "" - -#: src/properties.cpp:797 -#, fuzzy -msgid "Custom 7" -msgstr "Personnel 1" - -#: src/properties.cpp:798 -#, fuzzy -msgid "Custom 8" -msgstr "Personnel 1" - -#: src/properties.cpp:799 -#, fuzzy -msgid "Custom 9" -msgstr "Personnel 1" - -#: src/properties.cpp:800 -#, fuzzy -msgid "Custom 10" -msgstr "Personnel 1" - -#: src/properties.cpp:807 -msgid "Adult Content Warning Required" -msgstr "" - -#: src/properties.cpp:808 -#, fuzzy -msgid "Not Required" -msgstr "Non utilisé" - -#: src/properties.cpp:814 -#, fuzzy -msgid "Protected" -msgstr "Identifiant du produit" - -#: src/properties.cpp:815 -#, fuzzy -msgid "Public Domain" -msgstr "Bas" - -#: src/properties.cpp:821 -#, fuzzy -msgid "Credit Adjacent To Image" -msgstr "Aperçu embarqué" - -#: src/properties.cpp:822 -msgid "Credit in Credits Area" -msgstr "" - -#: src/properties.cpp:823 -#, fuzzy -msgid "Credit on Image" -msgstr "Aperçu embarqué" - -#: src/properties.cpp:824 -#, fuzzy -msgid "Not Require" -msgstr "Non défini" - -#: src/properties.cpp:829 -#, fuzzy -msgid "No Colorization" -msgstr "Solarisation" - -#: src/properties.cpp:830 -msgid "No Cropping" -msgstr "" - -#: src/properties.cpp:831 -#, fuzzy -msgid "No De-Colorization" -msgstr "Solarisation" - -#: src/properties.cpp:832 -msgid "No Flipping" -msgstr "" - -#: src/properties.cpp:833 -#, fuzzy -msgid "No Merging" -msgstr "Réduction du bruit" - -#: src/properties.cpp:834 -#, fuzzy -msgid "No Retouching" -msgstr "Réduction du bruit" - -#: src/properties.cpp:839 -msgid "Duplication Only as Necessary Under License" -msgstr "" - -#: src/properties.cpp:840 -#, fuzzy -msgid "No Duplication Constraints" -msgstr "Réglage de qualité de l'image" - -#: src/properties.cpp:841 -#, fuzzy -msgid "No Duplication" -msgstr "Durée audio" - -#: src/properties.cpp:846 -#, fuzzy -msgid "Maintain File Name" -msgstr "Nom du fichier" - -#: src/properties.cpp:847 -#, fuzzy -msgid "Maintain File Type" -msgstr "Nom du fichier" - -#: src/properties.cpp:848 -#, fuzzy -msgid "Maintain ID in File Name" -msgstr "Nom du fichier" - -#: src/properties.cpp:849 -#, fuzzy -msgid "Maintain Metadata" -msgstr "Date Minolta" - -#: src/properties.cpp:854 -#, fuzzy -msgid "Windows Bitmap (BMP)" -msgstr "Titre Windows" - -#: src/properties.cpp:855 -msgid "Digital Negative (DNG)" -msgstr "" - -#: src/properties.cpp:856 -msgid "Encapsulated PostScript (EPS)" -msgstr "" - -#: src/properties.cpp:857 -#, fuzzy -msgid "Graphics Interchange Format (GIF)" -msgstr "Format d'échange JPEG" - -#: src/properties.cpp:858 -#, fuzzy -msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" -msgstr "Format d'échange JPEG" - -#: src/properties.cpp:860 -msgid "Macintosh Picture (PICT)" -msgstr "" - -#: src/properties.cpp:861 -msgid "Portable Network Graphics (PNG)" -msgstr "" - -#: src/properties.cpp:862 -msgid "Photoshop Document (PSD)" -msgstr "" - -#: src/properties.cpp:863 -msgid "Proprietary RAW Image Format" -msgstr "" - -#: src/properties.cpp:864 -msgid "Tagged Image File Format (TIFF)" -msgstr "" - -#: src/properties.cpp:865 -msgid "Windows Media Photo (HD Photo)" -msgstr "" - -#: src/properties.cpp:870 -msgid "Greater than 50 MB" -msgstr "" - -#: src/properties.cpp:871 -msgid "Up to 1 MB" -msgstr "" - -#: src/properties.cpp:872 -msgid "Up to 10 MB" -msgstr "" - -#: src/properties.cpp:873 -msgid "Up to 30 MB" -msgstr "" - -#: src/properties.cpp:874 -msgid "Up to 50 MB" -msgstr "" - -#: src/properties.cpp:879 -#, fuzzy -msgid "Illustrated Image" -msgstr "Hauteur de l'image" - -#: src/properties.cpp:880 -msgid "Multimedia or Composited Image" -msgstr "" - -#: src/properties.cpp:882 -msgid "Photographic Image" -msgstr "" - -#: src/properties.cpp:888 -msgid "Cell" -msgstr "" - -#: src/properties.cpp:889 -msgid "FAX" -msgstr "" - -#: src/properties.cpp:891 -#, fuzzy -msgid "Pager" -msgstr "Langue" - -#: src/properties.cpp:892 -msgid "Work" -msgstr "" - -#: src/properties.cpp:897 -#, fuzzy -msgid "Age Unknown" -msgstr "Inconnu" - -#: src/properties.cpp:898 -msgid "Age 25 or Over" -msgstr "" - -#: src/properties.cpp:899 -msgid "Age 24" -msgstr "" - -#: src/properties.cpp:900 -msgid "Age 23" -msgstr "" - -#: src/properties.cpp:901 -msgid "Age 22" -msgstr "" - -#: src/properties.cpp:902 -msgid "Age 21" -msgstr "" - -#: src/properties.cpp:903 -msgid "Age 20" -msgstr "" - -#: src/properties.cpp:904 -msgid "Age 19" -msgstr "" - -#: src/properties.cpp:905 -msgid "Age 18" -msgstr "" - -#: src/properties.cpp:906 -msgid "Age 17" -msgstr "" - -#: src/properties.cpp:907 -msgid "Age 16" -msgstr "" - -#: src/properties.cpp:908 -msgid "Age 15" -msgstr "" - -#: src/properties.cpp:909 -msgid "Age 14 or Under" -msgstr "" - -#: src/properties.cpp:915 src/properties.cpp:923 src/properties.cpp:930 -msgid "Not Applicable" -msgstr "" - -#: src/properties.cpp:916 -#, fuzzy -msgid "Unlimited Model Releases" -msgstr "Numéro modèle" - -#: src/properties.cpp:917 -msgid "Limited or Incomplete Model Releases" -msgstr "" - -#: src/properties.cpp:924 -msgid "Unlimited Property Releases" -msgstr "" - -#: src/properties.cpp:925 -msgid "Limited or Incomplete Property Releases" -msgstr "" - -#: src/properties.cpp:931 -msgid "Repeat Use" -msgstr "" - -#: src/properties.cpp:935 src/properties.cpp:944 -#, fuzzy -msgid "Fixture Identification" -msgstr "Version du Modèle" - -#: src/properties.cpp:936 src/properties.cpp:945 -#, fuzzy -msgid "Status" -msgstr "Statut GPS" - -#: src/properties.cpp:936 src/properties.cpp:945 -msgid "A notation making the image unique" -msgstr "" - -#: src/properties.cpp:937 src/properties.cpp:946 -msgid "People" -msgstr "" - -#: src/properties.cpp:938 src/properties.cpp:947 -msgid "CatalogSets" -msgstr "" - -#: src/properties.cpp:938 src/properties.cpp:947 src/properties.cpp:978 -#: src/properties.cpp:982 -msgid "Descriptive markers of catalog items by content" -msgstr "" - -#: src/properties.cpp:953 -#, fuzzy -msgid "RegionInfo" -msgstr "Objectif" - -#: src/properties.cpp:953 -msgid "Microsoft Photo people-tagging metadata root" -msgstr "" - -#: src/properties.cpp:959 -msgid "DateRegionsValid" -msgstr "" - -#: src/properties.cpp:959 -#, fuzzy -msgid "Date the last region was created" -msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." - -#: src/properties.cpp:960 src/properties.cpp:975 -#, fuzzy -msgid "Regions" -msgstr "Version" - -#: src/properties.cpp:960 -msgid "Contains Regions/person tags" -msgstr "" - -#: src/properties.cpp:966 -#, fuzzy -msgid "PersonDisplayName" -msgstr "Nom du propriétaire" - -#: src/properties.cpp:966 -msgid "Name of the person (in the given rectangle)" -msgstr "" - -#: src/properties.cpp:967 -msgid "Rectangle" -msgstr "" - -#: src/properties.cpp:967 -msgid "Rectangle that identifies the person within the photo" -msgstr "" - -#: src/properties.cpp:968 -msgid "PersonEmailDigest" -msgstr "" - -#: src/properties.cpp:968 -msgid "" -"SHA-1 encrypted message hash of the person's Windows Live e-mail address" -msgstr "" - -#: src/properties.cpp:969 -msgid "PersonLiveCID" -msgstr "" - -#: src/properties.cpp:969 -msgid "Signed decimal representation of the person's Windows Live CID" -msgstr "" - -#: src/properties.cpp:975 -msgid "Main structure containing region based information" -msgstr "" - -#: src/properties.cpp:976 -msgid "AppliedToDimensions" -msgstr "" - -#: src/properties.cpp:976 -msgid "Width and height of image when storing region data" -msgstr "" - -#: src/properties.cpp:977 -msgid "RegionList" -msgstr "" - -#: src/properties.cpp:977 -#, fuzzy -msgid "List of Region structures" -msgstr "Structure des donnée Exif" - -#: src/properties.cpp:978 -#, fuzzy -msgid "Area" -msgstr "Zone mise au point" - -#: src/properties.cpp:979 -msgid "Type purpose of region (Face|Pet|Focus|BarCode)" -msgstr "" - -#: src/properties.cpp:980 -msgid "Name/ short description of content in image region" -msgstr "" - -#: src/properties.cpp:981 -msgid "" -"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" -"NotEvaluatedNotUsed)" -msgstr "" - -#: src/properties.cpp:982 -#, fuzzy -msgid "FocusUsage" -msgstr "Zone mise au point" - -#: src/properties.cpp:983 -#, fuzzy -msgid "BarCodeValue" -msgstr "Pas du bracket" - -#: src/properties.cpp:983 -msgid "Decoded BarCode value string" -msgstr "" - -#: src/properties.cpp:984 -#, fuzzy -msgid "Extensions" -msgstr "Version" - -#: src/properties.cpp:984 -msgid "Any top level XMP property to describe the region content" -msgstr "" - -#: src/sigmamn.cpp:62 -msgid "Resolution Mode" -msgstr "Mode résolution" - -#: src/sigmamn.cpp:63 -msgid "Resolution mode" -msgstr "Mode résolution" - -#: src/sigmamn.cpp:65 -msgid "Autofocus Mode" -msgstr "Mode autofocus" - -#: src/sigmamn.cpp:66 -msgid "Autofocus mode" -msgstr "Mode autofocus" - -#: src/sigmamn.cpp:68 -msgid "Focus Setting" -msgstr "Réglage mise au point" - -#: src/sigmamn.cpp:69 -msgid "Focus setting" -msgstr "Réglage mise au point" - -#: src/sigmamn.cpp:80 -#, fuzzy -msgid "Lens Range" -msgstr "Échelle de transfert" - -#: src/sigmamn.cpp:81 -#, fuzzy -msgid "Lens focal length range" -msgstr "Longueur focale minimale" - -#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 -msgid "Shadow" -msgstr "Ombragé" - -#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 -msgid "Highlight" -msgstr "Ensoleillé" - -#: src/sigmamn.cpp:104 -#, fuzzy -msgid "Fill Light" -msgstr "Droit d'auteur" - -#: src/sigmamn.cpp:105 -msgid "X3 Fill light" -msgstr "" - -#: src/sigmamn.cpp:107 -msgid "Color Adjustment" -msgstr "justement couleurs" - -#: src/sigmamn.cpp:108 -msgid "Color adjustment" -msgstr "Ajustement couleurs" - -#: src/sigmamn.cpp:110 -msgid "Adjustment Mode" -msgstr "Mode ajustement" - -#: src/sigmamn.cpp:111 -msgid "Adjustment mode" -msgstr "Mode ajustement" - -#: src/sigmamn.cpp:122 -#, fuzzy -msgid "Auto Bracket" -msgstr "Bracketing automatique" - -#: src/sigmamn.cpp:123 src/tags.cpp:1490 -msgid "Auto bracket" -msgstr "Bracketing automatique" - -#: src/sigmamn.cpp:127 -msgid "Unknown SigmaMakerNote tag" -msgstr "Marqueur de note du fabriquant Sigma inconnu" - -#: src/sigmamn.cpp:170 -msgid "8-Segment" -msgstr "8-segments" - -#: src/sonymn.cpp:88 -#, fuzzy -msgid "Standard " -msgstr "Standard" - -#: src/sonymn.cpp:91 -msgid "Advanced Lv1" -msgstr "" - -#: src/sonymn.cpp:92 -msgid "Advanced Lv2" -msgstr "" - -#: src/sonymn.cpp:93 -msgid "Advanced Lv3" -msgstr "" - -#: src/sonymn.cpp:94 -msgid "Advanced Lv4" -msgstr "" - -#: src/sonymn.cpp:95 -msgid "Advanced Lv5" -msgstr "" - -#: src/sonymn.cpp:109 -#, fuzzy -msgid "Landscape " -msgstr "Paysage" - -#: src/sonymn.cpp:113 -#, fuzzy -msgid "Night Scene / Twilight" -msgstr "Scène de nuit" - -#: src/sonymn.cpp:114 -msgid "Hi-Speed Shutter" -msgstr "" - -#: src/sonymn.cpp:115 -#, fuzzy -msgid "Twilight Portrait" -msgstr "Portrait de nuit" - -#: src/sonymn.cpp:116 -#, fuzzy -msgid "Soft Snap" -msgstr "Doux" - -#: src/sonymn.cpp:118 -#, fuzzy -msgid "Smile Shutter" -msgstr "Obturation lente" - -#: src/sonymn.cpp:120 -#, fuzzy -msgid "High Sensitivity" -msgstr "Sensibilité spectrale" - -#: src/sonymn.cpp:121 -msgid "Advanced Sports Shooting" -msgstr "" - -#: src/sonymn.cpp:123 -#, fuzzy -msgid "Gourmet" -msgstr "Nom du document" - -#: src/sonymn.cpp:125 -#, fuzzy -msgid "Handheld Twilight" -msgstr "Lumière de bougie" - -#: src/sonymn.cpp:126 -#, fuzzy -msgid "Anti Motion Blur" -msgstr "Mode d'image" - -#: src/sonymn.cpp:128 -msgid "Backlight Correction HDR" -msgstr "" - -#: src/sonymn.cpp:142 -#, fuzzy -msgid "On (Continuous)" -msgstr "Continue" - -#: src/sonymn.cpp:143 -#, fuzzy -msgid "On (Shooting)" -msgstr "Mode de prise de vue" - -#: src/sonymn.cpp:151 -msgid "Plus" -msgstr "" - -#: src/sonymn.cpp:167 -#, fuzzy -msgid "White Flourescent" -msgstr "Fluorescent" - -#: src/sonymn.cpp:168 -#, fuzzy -msgid "Cool White Flourescent" -msgstr "Fluorescent" - -#: src/sonymn.cpp:169 -#, fuzzy -msgid "Day White Flourescent" -msgstr "Lumière du jour fluorescent" - -#: src/sonymn.cpp:172 -#, fuzzy -msgid "Underwater 1 (Blue Water)" -msgstr "Sous marin" - -#: src/sonymn.cpp:173 -#, fuzzy -msgid "Underwater 2 (Green Water)" -msgstr "Sous marin" - -#: src/sonymn.cpp:180 -msgid "Permanent-AF" -msgstr "" - -#: src/sonymn.cpp:188 -#, fuzzy -msgid "Center AF" -msgstr "Centre" - -#: src/sonymn.cpp:189 -#, fuzzy -msgid "Spot AF" -msgstr "Spot" - -#: src/sonymn.cpp:190 -msgid "Flexible Spot AF" -msgstr "" - -#: src/sonymn.cpp:191 -#, fuzzy -msgid "Touch AF" -msgstr "Balance des blancs en une touche" - -#: src/sonymn.cpp:192 -#, fuzzy -msgid "Manual Focus" -msgstr "Mise au point manuel" - -#: src/sonymn.cpp:193 -#, fuzzy -msgid "Face Detected" -msgstr "Échec lors de la lecture" - -#: src/sonymn.cpp:208 -#, fuzzy -msgid "Close Focus" -msgstr "Mise au point auto" - -#: src/sonymn.cpp:224 -#, fuzzy -msgid "Exposure Bracketing" -msgstr "Avertissement exposition" - -#: src/sonymn.cpp:298 src/sonymn.cpp:299 -#, fuzzy -msgid "Multi Burst Mode" -msgstr "Mode rafale" - -#: src/sonymn.cpp:301 src/sonymn.cpp:302 -#, fuzzy -msgid "Multi Burst Image Width" -msgstr "Hauteur de l'image" - -#: src/sonymn.cpp:304 src/sonymn.cpp:305 -#, fuzzy -msgid "Multi Burst Image Height" -msgstr "Hauteur de l'image" - -#: src/sonymn.cpp:315 -#, fuzzy -msgid "JPEG preview image" -msgstr "Aperçu embarqué" - -#: src/sonymn.cpp:341 -#, fuzzy -msgid "Auto HDR" -msgstr "Automatique" - -#: src/sonymn.cpp:342 -msgid "High Definition Range Mode" -msgstr "" - -#: src/sonymn.cpp:346 -#, fuzzy -msgid "Shot Information" -msgstr "Informations prise de vue" - -#: src/sonymn.cpp:351 src/sonymn.cpp:352 -#, fuzzy -msgid "Sony Model ID" -msgstr "Numéro modèle" - -#: src/sonymn.cpp:354 src/sonymn.cpp:355 -#, fuzzy -msgid "Color Reproduction" -msgstr "Réduction du bruit" - -#: src/sonymn.cpp:369 src/sonymn.cpp:370 src/sonymn.cpp:423 src/sonymn.cpp:424 -#, fuzzy -msgid "Dynamic Range Optimizer" -msgstr "Réglage gamme dynamique" - -#: src/sonymn.cpp:378 src/sonymn.cpp:379 -#, fuzzy -msgid "Minolta MakerNote" -msgstr "Date Minolta" - -#: src/sonymn.cpp:384 src/sonymn.cpp:385 -#, fuzzy -msgid "Full Image Size" -msgstr "Taille de l'image" - -#: src/sonymn.cpp:387 -#, fuzzy -msgid "Preview Image Size" -msgstr "Aperçu embarqué" - -#: src/sonymn.cpp:388 -#, fuzzy -msgid "Preview image size" -msgstr "Aperçu embarqué" - -#: src/sonymn.cpp:402 src/sonymn.cpp:403 src/sonymn.cpp:613 src/sonymn.cpp:614 -msgid "AF Illuminator" -msgstr "" - -#: src/sonymn.cpp:405 src/sonymn.cpp:406 -#, fuzzy -msgid "JPEG Quality" -msgstr "Qualité" - -#: src/sonymn.cpp:411 src/sonymn.cpp:412 -#, fuzzy -msgid "Release Mode" -msgstr "Date de publication" - -#: src/sonymn.cpp:415 -#, fuzzy -msgid "Shot number in continous burst mode" -msgstr "Numéro séquence (si en mode rafale)" - -#: src/sonymn.cpp:417 src/sonymn.cpp:418 -#, fuzzy -msgid "Anti-Blur" -msgstr "Anti flou" - -#: src/sonymn.cpp:420 src/sonymn.cpp:421 src/sonymn.cpp:621 src/sonymn.cpp:622 -#, fuzzy -msgid "Long Exposure Noise Reduction" -msgstr "Réduction du bruit lors d'expositions longues" - -#: src/sonymn.cpp:426 src/sonymn.cpp:427 -#, fuzzy -msgid "Intelligent Auto" -msgstr "Longueur intervalle" - -#: src/sonymn.cpp:434 -#, fuzzy -msgid "Unknown Sony1MakerNote tag" -msgstr "Marqueur de note du fabriquant Sony inconnu" - -#: src/sonymn.cpp:448 -#, fuzzy -msgid "Continuous High" -msgstr "Continue, Haute" - -#: src/sonymn.cpp:452 -#, fuzzy -msgid "Continuous Low" -msgstr "Continue, basse" - -#: src/sonymn.cpp:454 src/sonymn.cpp:455 -#, fuzzy -msgid "D-Range Optimizer Bracketing Low" -msgstr "Optimisation d'image" - -#: src/sonymn.cpp:487 -#, fuzzy -msgid "Autumn" -msgstr "Automatique" - -#: src/sonymn.cpp:493 -msgid "ADI" -msgstr "" - -#: src/sonymn.cpp:509 src/sonymn.cpp:510 src/sonymn.cpp:511 -msgid "StyleBox1" -msgstr "" - -#: src/sonymn.cpp:529 -#, fuzzy -msgid "Auto No Flash" -msgstr "Auto (Flash)" - -#: src/sonymn.cpp:584 src/sonymn.cpp:585 src/sonymn.cpp:690 src/sonymn.cpp:691 -#, fuzzy -msgid "Dynamic Range Optimizer Level" -msgstr "Réglage gamme dynamique" - -#: src/sonymn.cpp:587 src/sonymn.cpp:588 src/sonymn.cpp:693 src/sonymn.cpp:694 -#, fuzzy -msgid "Creative Style" -msgstr "Date de publication" - -#: src/sonymn.cpp:599 src/sonymn.cpp:600 -#, fuzzy -msgid "Zone Matching Value" -msgstr "Valeur de luminosité" - -#: src/sonymn.cpp:617 src/sonymn.cpp:618 -#, fuzzy -msgid "AF With Shutter" -msgstr "Obturation rapide" - -#: src/sonymn.cpp:625 src/sonymn.cpp:626 -#, fuzzy -msgid "High ISO NoiseReduction" -msgstr "Réduction de bruit Iso élevé" - -#: src/sonymn.cpp:629 src/sonymn.cpp:630 -#, fuzzy -msgid "Image Style" -msgstr "Type d'image" - -#: src/sonymn.cpp:655 -#, fuzzy -msgid "Unknown Sony1 Camera Settings tag" -msgstr "Marqueur 1 réglage appareil photo Canon inconnu" - -#: src/sonymn.cpp:719 -#, fuzzy -msgid "Unknown Sony1 Camera Settings 2 tag" -msgstr "Marqueur 2 réglage appareil photo Canon inconnu" - -#: src/tags.cpp:184 -msgid "Unknown section" -msgstr "Section inconnue" - -#: src/tags.cpp:185 -msgid "Image data structure" -msgstr "Structure des données de l'image" - -#: src/tags.cpp:186 -msgid "Recording offset" -msgstr "Décalage d'enregistrement" - -#: src/tags.cpp:187 -msgid "Image data characteristics" -msgstr "Caractéristique des données de l'image" - -#: src/tags.cpp:188 -msgid "Other data" -msgstr "Autre données" - -#: src/tags.cpp:189 -msgid "Exif data structure" -msgstr "Structure des donnée Exif" - -#: src/tags.cpp:191 -msgid "Image configuration" -msgstr "Configuration image" - -#: src/tags.cpp:192 -msgid "User information" -msgstr "Information utilisateur" - -#: src/tags.cpp:193 -#, fuzzy -msgid "Related file" -msgstr "Heure de publication" - -#: src/tags.cpp:194 -msgid "Date and time" -msgstr "Date et heure" - -#: src/tags.cpp:195 -msgid "Picture taking conditions" -msgstr "Condition de prise de vue" - -#: src/tags.cpp:196 -msgid "GPS information" -msgstr "Information GPS" - -#: src/tags.cpp:197 -msgid "Interoperability information" -msgstr "Information d'interopérabilité" - -#: src/tags.cpp:198 -msgid "Vendor specific information" -msgstr "Information Spécifique au vendeur" - -#: src/tags.cpp:199 -#, fuzzy -msgid "Adobe DNG tags" -msgstr "Adobe RGB" - -#: src/tags.cpp:200 -#, fuzzy -msgid "Panasonic RAW tags" -msgstr "Marqueur de note du fabriquant Panasonic inconnu" - -#: src/tags.cpp:201 -msgid "TIFF/EP tags" -msgstr "" - -#: src/tags.cpp:202 -msgid "TIFF PageMaker 6.0 tags" -msgstr "" - -#: src/tags.cpp:203 -#, fuzzy -msgid "Adobe OPI tags" -msgstr "Adobe RGB" - -#: src/tags.cpp:204 -msgid "Last section" -msgstr "Dernière section" - -#: src/tags.cpp:220 -#, fuzzy -msgid "Primary image" -msgstr "Aperçu embarqué" - -#: src/tags.cpp:221 -#, fuzzy -msgid "Thumbnail/Preview image" -msgstr "Miniature" - -#: src/tags.cpp:222 -msgid "Primary image, Multi page file" -msgstr "" - -#: src/tags.cpp:223 -msgid "Thumbnail/Preview image, Multi page file" -msgstr "" - -#: src/tags.cpp:224 -#, fuzzy -msgid "Primary image, Transparency mask" -msgstr "Masque de transparence" - -#: src/tags.cpp:225 -msgid "Thumbnail/Preview image, Transparency mask" -msgstr "" - -#: src/tags.cpp:226 -msgid "Primary image, Multi page file, Transparency mask" -msgstr "" - -#: src/tags.cpp:227 src/tags.cpp:228 -msgid "Thumbnail/Preview image, Multi page file, Transparency mask" -msgstr "" - -#: src/tags.cpp:233 -#, fuzzy -msgid "Full-resolution image data" -msgstr "Impossible de lire les données de l'image" - -#: src/tags.cpp:234 -msgid "Reduced-resolution image data" -msgstr "" - -#: src/tags.cpp:235 -msgid "A single page of a multi-page image" -msgstr "" - -#: src/tags.cpp:241 -msgid "inch" -msgstr "Pouce" - -#: src/tags.cpp:248 -msgid "CCITT RLE" -msgstr "" - -#: src/tags.cpp:249 -msgid "T4/Group 3 Fax" -msgstr "" - -#: src/tags.cpp:250 -msgid "T6/Group 4 Fax" -msgstr "" - -#: src/tags.cpp:251 -msgid "LZW" -msgstr "LZW" - -#: src/tags.cpp:252 -msgid "JPEG (old-style)" -msgstr "JPEG (ancienne version)" - -#: src/tags.cpp:253 -msgid "JPEG" -msgstr "JPEG" - -#: src/tags.cpp:254 -msgid "Adobe Deflate" -msgstr "Décompression Adobe" - -#: src/tags.cpp:255 -msgid "JBIG B&W" -msgstr "JBIG Noir & Blanc" - -#: src/tags.cpp:256 -msgid "JBIG Color" -msgstr "JBIG Couleur" - -#: src/tags.cpp:257 -msgid "Next 2-bits RLE" -msgstr "" - -#: src/tags.cpp:258 -#, fuzzy -msgid "Epson ERF Compressed" -msgstr "compression NEF Nikon" - -#: src/tags.cpp:259 -#, fuzzy -msgid "Samsung SRW Compressed" -msgstr "compression NEF Nikon" - -#: src/tags.cpp:260 -msgid "CCITT RLE 1-word" -msgstr "" - -#: src/tags.cpp:261 -msgid "PackBits (Macintosh RLE)" -msgstr "" - -#: src/tags.cpp:262 -msgid "Thunderscan RLE" -msgstr "" - -#: src/tags.cpp:263 -msgid "IT8 CT Padding" -msgstr "" - -#: src/tags.cpp:264 -msgid "IT8 Linework RLE" -msgstr "" - -#: src/tags.cpp:265 -#, fuzzy -msgid "IT8 Monochrome Picture" -msgstr "Monochrome" - -#: src/tags.cpp:266 -msgid "IT8 Binary Lineart" -msgstr "" - -#: src/tags.cpp:267 -msgid "Pixar Film (10-bits LZW)" -msgstr "" - -#: src/tags.cpp:268 -msgid "Pixar Log (11-bits ZIP)" -msgstr "" - -#: src/tags.cpp:269 -#, fuzzy -msgid "Pixar Deflate" -msgstr "Décompression Adobe" - -#: src/tags.cpp:270 -msgid "Kodak DCS Encoding" -msgstr "" - -#: src/tags.cpp:271 -msgid "ISO JBIG" -msgstr "ISO JBIG" - -#: src/tags.cpp:272 -msgid "SGI Log Luminance RLE" -msgstr "" - -#: src/tags.cpp:273 -msgid "SGI Log 24-bits packed" -msgstr "" - -#: src/tags.cpp:274 -msgid "Leadtools JPEG 2000" -msgstr "" - -#: src/tags.cpp:275 -msgid "Nikon NEF Compressed" -msgstr "compression NEF Nikon" - -#: src/tags.cpp:276 -#, fuzzy -msgid "Kodak DCR Compressed" -msgstr "compression NEF Nikon" - -#: src/tags.cpp:277 -#, fuzzy -msgid "Pentax PEF Compressed" -msgstr "compression NEF Nikon" - -#: src/tags.cpp:282 -msgid "White Is Zero" -msgstr "Blanc est zéro" - -#: src/tags.cpp:283 -msgid "Black Is Zero" -msgstr "Noir est zéro" - -#: src/tags.cpp:284 -msgid "RGB" -msgstr "RGB" - -#: src/tags.cpp:285 -msgid "RGB Palette" -msgstr "Palette RGB" - -#: src/tags.cpp:286 -msgid "Transparency Mask" -msgstr "Masque de transparence" - -#: src/tags.cpp:287 src/tags.cpp:326 -msgid "CMYK" -msgstr "CMJN" - -#: src/tags.cpp:288 -msgid "YCbCr" -msgstr "YCbCr" - -#: src/tags.cpp:289 -msgid "CIELab" -msgstr "CIELab" - -#: src/tags.cpp:290 -msgid "ICCLab" -msgstr "ICCLab" - -#: src/tags.cpp:291 -msgid "ITULab" -msgstr "ITULab" - -#: src/tags.cpp:292 -msgid "Color Filter Array" -msgstr "Matrice de filtre de couleur" - -#: src/tags.cpp:293 -msgid "Pixar LogL" -msgstr "" - -#: src/tags.cpp:294 -msgid "Pixar LogLuv" -msgstr "" - -#: src/tags.cpp:295 -msgid "Linear Raw" -msgstr "" - -#: src/tags.cpp:300 -msgid "No dithering or halftoning" -msgstr "" - -#: src/tags.cpp:301 -msgid "Ordered dither or halftone technique" -msgstr "" - -#: src/tags.cpp:302 -#, fuzzy -msgid "Randomized process" -msgstr "Processus normal" - -#: src/tags.cpp:307 -msgid "top, left" -msgstr "haut, gauche" - -#: src/tags.cpp:308 -msgid "top, right" -msgstr "haut, droit" - -#: src/tags.cpp:309 -msgid "bottom, right" -msgstr "bas, droit" - -#: src/tags.cpp:310 -msgid "bottom, left" -msgstr "bas, gauche" - -#: src/tags.cpp:311 -msgid "left, top" -msgstr "gauche, haut" - -#: src/tags.cpp:312 -msgid "right, top" -msgstr "droit, haut" - -#: src/tags.cpp:313 -msgid "right, bottom" -msgstr "droit, bas" - -#: src/tags.cpp:314 src/tags.cpp:315 -msgid "left, bottom" -msgstr "gauche, bas" - -#: src/tags.cpp:320 -msgid "No prediction scheme used" -msgstr "" - -#: src/tags.cpp:321 -msgid "Horizontal differencing" -msgstr "" - -#: src/tags.cpp:327 -#, fuzzy -msgid "not CMYK" -msgstr "CMJN" - -#: src/tags.cpp:332 -msgid "Unsigned integer data" -msgstr "" - -#: src/tags.cpp:333 -msgid "Two's complement signed integer data" -msgstr "" - -#: src/tags.cpp:334 -msgid "IEEE floating point data" -msgstr "" - -#: src/tags.cpp:335 src/tags.cpp:336 -#, fuzzy -msgid "Undefined data format" -msgstr "Format de date non supporté" - -#: src/tags.cpp:341 -#, fuzzy -msgid "Not indexed" -msgstr "Non défini" - -#: src/tags.cpp:342 src/tags.cpp:648 -msgid "Indexed" -msgstr "" - -#: src/tags.cpp:347 -msgid "A" -msgstr "" - -#: src/tags.cpp:348 -msgid "B" -msgstr "" - -#: src/tags.cpp:349 -msgid "C" -msgstr "" - -#: src/tags.cpp:350 -msgid "A+B-C" -msgstr "" - -#: src/tags.cpp:351 -msgid "A+((B-C)/2)" -msgstr "" - -#: src/tags.cpp:352 -msgid "B+((A-C)/2)" -msgstr "" - -#: src/tags.cpp:353 -msgid "(A+B)/2" -msgstr "" - -#: src/tags.cpp:358 -msgid "Centered" -msgstr "Centré" - -#: src/tags.cpp:359 -#, fuzzy -msgid "Co-sited" -msgstr "Près" - -#: src/tags.cpp:364 -msgid "No flash" -msgstr "Pas de flash" - -#: src/tags.cpp:366 -#, fuzzy -msgid "Fired, return light not detected" -msgstr "Flash déclenché, mode auto, lumière de retour non détectée" - -#: src/tags.cpp:367 -#, fuzzy -msgid "Fired, return light detected" -msgstr "Flash déclenché, mode auto, lumière de retour détectée" - -#: src/tags.cpp:368 -#, fuzzy -msgid "Yes, did not fire" -msgstr "Le flash ne s'est pas déclenché." - -#: src/tags.cpp:369 -msgid "Yes, compulsory" -msgstr "Flash déclenché, mode de flash obligatoire" - -#: src/tags.cpp:370 -msgid "Yes, compulsory, return light not detected" -msgstr "" -"Flash déclenché, mode de flash obligatoire, lumière de retour non détectée" - -#: src/tags.cpp:371 -msgid "Yes, compulsory, return light detected" -msgstr "Flash déclenché, mode de flash obligatoire, lumière de retour détectée" - -#: src/tags.cpp:372 -msgid "No, compulsory" -msgstr "Non, inhibé" - -#: src/tags.cpp:373 -#, fuzzy -msgid "No, did not fire, return light not detected" -msgstr "Flash déclenché, mode auto, lumière de retour non détectée" - -#: src/tags.cpp:374 -msgid "No, auto" -msgstr "Non, mode auto" - -#: src/tags.cpp:375 -msgid "Yes, auto" -msgstr "Flash déclenché, mode auto" - -#: src/tags.cpp:376 -msgid "Yes, auto, return light not detected" -msgstr "Flash déclenché, mode auto, lumière de retour non détectée" - -#: src/tags.cpp:377 -msgid "Yes, auto, return light detected" -msgstr "Flash déclenché, mode auto, lumière de retour détectée" - -#: src/tags.cpp:378 -msgid "No flash function" -msgstr "Pas de fonction flash" - -#: src/tags.cpp:379 -#, fuzzy -msgid "No, no flash function" -msgstr "Pas de fonction flash" - -#: src/tags.cpp:380 -msgid "Yes, red-eye reduction" -msgstr "Flash déclenché, mode anti-yeux rouges" - -#: src/tags.cpp:381 -msgid "Yes, red-eye reduction, return light not detected" -msgstr "Flash déclenché, mode anti-yeux rouges, lumière de retour non détectée" - -#: src/tags.cpp:382 -msgid "Yes, red-eye reduction, return light detected" -msgstr "Flash déclenché, mode anti-yeux rouges, lumière de retour détectée" - -#: src/tags.cpp:383 -msgid "Yes, compulsory, red-eye reduction" -msgstr "Flash déclenché, mode de flash obligatoire, mode anti-yeux rouges" - -#: src/tags.cpp:384 -msgid "Yes, compulsory, red-eye reduction, return light not detected" -msgstr "" -"Flash déclenché, mode de flash obligatoire, mode anti-yeux rouges, lumière " -"de retour non détectée" - -#: src/tags.cpp:385 -msgid "Yes, compulsory, red-eye reduction, return light detected" -msgstr "" -"Flash déclenché, mode de flash obligatoire, mode anti-yeux rouges, lumière " -"de retour détectée" - -#: src/tags.cpp:386 -#, fuzzy -msgid "No, red-eye reduction" -msgstr "Flash déclenché, mode anti-yeux rouges" - -#: src/tags.cpp:387 -#, fuzzy -msgid "No, auto, red-eye reduction" -msgstr "Flash déclenché, mode anti-yeux rouges" - -#: src/tags.cpp:388 -msgid "Yes, auto, red-eye reduction" -msgstr "Flash déclenché, mode anti-yeux rouges" - -#: src/tags.cpp:389 -msgid "Yes, auto, red-eye reduction, return light not detected" -msgstr "Flash déclenché, mode anti-yeux rouges, lumière de retour non détectée" - -#: src/tags.cpp:390 -msgid "Yes, auto, red-eye reduction, return light detected" -msgstr "Flash déclenché, mode anti-yeux rouges, lumière de retour détectée" - -#: src/tags.cpp:395 -msgid "Rectangular (or square) layout" -msgstr "" - -#: src/tags.cpp:396 -msgid "Staggered layout A: even columns are offset down by 1/2 row" -msgstr "" - -#: src/tags.cpp:397 -msgid "Staggered layout B: even columns are offset up by 1/2 row" -msgstr "" - -#: src/tags.cpp:398 -msgid "Staggered layout C: even rows are offset right by 1/2 column" -msgstr "" - -#: src/tags.cpp:399 -msgid "Staggered layout D: even rows are offset left by 1/2 column" -msgstr "" - -#: src/tags.cpp:404 -msgid "Processing Software" -msgstr "Logiciel de traitement" - -#: src/tags.cpp:405 -msgid "The name and version of the software used to post-process the picture." -msgstr "" - -#: src/tags.cpp:408 -msgid "New Subfile Type" -msgstr "Nouveau type de sous fichier" - -#: src/tags.cpp:409 -msgid "A general indication of the kind of data contained in this subfile." -msgstr "" - -#: src/tags.cpp:411 -#, fuzzy -msgid "Subfile Type" -msgstr "Nouveau type de sous fichier" - -#: src/tags.cpp:412 -msgid "" -"A general indication of the kind of data contained in this subfile. This " -"field is deprecated. The NewSubfileType field should be used instead." -msgstr "" - -#: src/tags.cpp:416 -msgid "" -"The number of columns of image data, equal to the number of pixels per row. " -"In JPEG compressed data a JPEG marker is used instead of this tag." -msgstr "" -"Le nombre de colonnes des données de l'image, égal au nombre de pixels par " -"ligne. Dans des données compressées en JPEG un marqueur JPEG est utilisé à " -"la place de ce marqueur." - -#: src/tags.cpp:421 -msgid "" -"The number of rows of image data. In JPEG compressed data a JPEG marker is " -"used instead of this tag." -msgstr "" -"Le nombre de lignes des données de l'image. Dans des données compressées en " -"JPEG un marqueur JPEG est utilisé à la place de ce marqueur." - -#: src/tags.cpp:424 -msgid "Bits per Sample" -msgstr "Bits des échantillons" - -#: src/tags.cpp:425 -msgid "" -"The number of bits per image component. In this standard each component of " -"the image is 8 bits, so the value for this tag is 8. See also " -". In JPEG compressed data a JPEG marker is used instead of " -"this tag." -msgstr "" -"Le nombre de bits par composant d'image. Dans ce standard chaque composant " -"de l'image fait 8 bits, donc la valeur de ce tag est 9. Voyez aussi " -". Dans des données compressées en JPEG un marqueur JPEG est " -"utilisé à la place de ce marqueur." - -#: src/tags.cpp:431 -msgid "" -"The compression scheme used for the image data. When a primary image is JPEG " -"compressed, this designation is not necessary and is omitted. When " -"thumbnails use JPEG compression, this tag value is set to 6." -msgstr "" -"Le schéma de compression utilisé par les données de l'image. Quand une image " -"primaire est compressée en JPEG, cette désignation n'est pas nécessaire et " -"est omise. Lorsque les vignettes utilisent la compression JPEG, la valeur de " -"ce marqueur est de 6." - -#: src/tags.cpp:437 -msgid "" -"The pixel composition. In JPEG compressed data a JPEG marker is used instead " -"of this tag." -msgstr "" -"La composition des pixels. Dans des données compressées en JPEG un marqueur " -"JPEG est utilisé à la place de ce marqueur." - -#: src/tags.cpp:440 -msgid "Threshholding" -msgstr "" - -#: src/tags.cpp:441 -msgid "" -"For black and white TIFF files that represent shades of gray, the technique " -"used to convert from gray to black and white pixels." -msgstr "" - -#: src/tags.cpp:444 -#, fuzzy -msgid "Cell Width" -msgstr "Droit d'auteur" - -#: src/tags.cpp:445 -msgid "" -"The width of the dithering or halftoning matrix used to create a dithered or " -"halftoned bilevel file." -msgstr "" - -#: src/tags.cpp:448 -#, fuzzy -msgid "Cell Length" -msgstr "Longueur de l'aperçu" - -#: src/tags.cpp:449 -msgid "" -"The length of the dithering or halftoning matrix used to create a dithered " -"or halftoned bilevel file." -msgstr "" - -#: src/tags.cpp:452 -msgid "Fill Order" -msgstr "Ordre de remplissage" - -#: src/tags.cpp:453 -msgid "The logical order of bits within a byte" -msgstr "" - -#: src/tags.cpp:455 -msgid "Document Name" -msgstr "Nom du document" - -#: src/tags.cpp:456 -#, fuzzy -msgid "The name of the document from which this image was scanned" -msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." - -#: src/tags.cpp:459 -msgid "" -"A character string giving the title of the image. It may be a comment such " -"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " -"used. When a 2-bytes code is necessary, the Exif Private tag " -"is to be used." -msgstr "" -"Une chaîne de caractères donnant le titre de l'image. Ce peut être un " -"commentaire comme \"pique-nique société 1988\" ou approchant. Les codes de " -"caractères sur deux octets ne peuvent être utilisés. Lorsqu'un code deux " -"octets est nécessaire, le marqueur privé exif doit être " -"utilisé." - -#: src/tags.cpp:466 -msgid "" -"The manufacturer of the recording equipment. This is the manufacturer of the " -"DSC, scanner, video digitizer or other equipment that generated the image. " -"When the field is left blank, it is treated as unknown." -msgstr "" -"Le constructeur de l'équipement d'enregistrement. C'est le constructeur du " -"DSC, scanner, enregistreur vidéo ou tout autre équipement ayant généré " -"l'image. Quand ce champ est vide, il est traité en tant qu'inconnu." - -#: src/tags.cpp:472 -msgid "" -"The model name or model number of the equipment. This is the model name or " -"number of the DSC, scanner, video digitizer or other equipment that " -"generated the image. When the field is left blank, it is treated as unknown." -msgstr "" -"Le nom du modèle ou le numéro du modèle de l'équipement. C'est le nom du " -"modèle ou le numéro du DSC, scanner, enregistreur vidéo ou tout autre " -"équipement ayant généré l'image. Quand ce champ est vide, il est traité en " -"tant qu'inconnu." - -#: src/tags.cpp:478 -msgid "" -"For each strip, the byte offset of that strip. It is recommended that this " -"be selected so the number of strip bytes does not exceed 64 Kbytes. With " -"JPEG compressed data this designation is not needed and is omitted. See also " -" and ." -msgstr "" - -#: src/tags.cpp:485 -msgid "The image orientation viewed in terms of rows and columns." -msgstr "L'orientation de l'image vue en terme de lignes et colonnes." - -#: src/tags.cpp:487 -msgid "Samples per Pixel" -msgstr "Échantillons par pixel" - -#: src/tags.cpp:488 -msgid "" -"The number of components per pixel. Since this standard applies to RGB and " -"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " -"JPEG marker is used instead of this tag." -msgstr "" -"Le nombre de composants par pixel. Puisque le standard s'applique aux images " -"RGB et YCbCr, la valeur de ce marqueur est 3. Dans des données compressées " -"en JPEG un marqueur JPEG est utilisé à la place de ce marqueur." - -#: src/tags.cpp:492 -msgid "Rows per Strip" -msgstr "" - -#: src/tags.cpp:493 -msgid "" -"The number of rows per strip. This is the number of rows in the image of one " -"strip when an image is divided into strips. With JPEG compressed data this " -"designation is not needed and is omitted. See also and " -"." -msgstr "" - -#: src/tags.cpp:498 -#, fuzzy -msgid "Strip Byte Count" -msgstr "Priorité obturation" - -#: src/tags.cpp:499 -msgid "" -"The total number of bytes in each strip. With JPEG compressed data this " -"designation is not needed and is omitted." -msgstr "" - -#: src/tags.cpp:502 -msgid "X-Resolution" -msgstr "Résolution X" - -#: src/tags.cpp:503 -msgid "" -"The number of pixels per in the direction. " -"When the image resolution is unknown, 72 [dpi] is designated." -msgstr "" -"Le nombre de pixels par dans la direction ." -"Lorsque la résolution de l'image est inconnu, 72 [dpi] sont utilisés." - -#: src/tags.cpp:506 -msgid "Y-Resolution" -msgstr "Résolution Y" - -#: src/tags.cpp:507 -msgid "" -"The number of pixels per in the direction. " -"The same value as is designated." -msgstr "" -"Le nombre de pixels par dans la direction .La " -"même valeur que pour est utilisée." - -#: src/tags.cpp:511 -msgid "" -"Indicates whether pixel components are recorded in a chunky or planar " -"format. In JPEG compressed files a JPEG marker is used instead of this tag. " -"If this field does not exist, the TIFF default of 1 (chunky) is assumed." -msgstr "" - -#: src/tags.cpp:516 -#, fuzzy -msgid "Gray Response Unit" -msgstr "AF Points" - -#: src/tags.cpp:517 -msgid "The precision of the information contained in the GrayResponseCurve." -msgstr "" - -#: src/tags.cpp:519 -#, fuzzy -msgid "Gray Response Curve" -msgstr "Courbe de tonalité" - -#: src/tags.cpp:520 -msgid "For grayscale data, the optical density of each possible pixel value." -msgstr "" - -#: src/tags.cpp:522 -#, fuzzy -msgid "T4 Options" -msgstr "Оption" - -#: src/tags.cpp:523 -msgid "T.4-encoding options." -msgstr "" - -#: src/tags.cpp:525 -#, fuzzy -msgid "T6 Options" -msgstr "Оption" - -#: src/tags.cpp:526 -msgid "T.6-encoding options." -msgstr "" - -#: src/tags.cpp:529 -msgid "" -"The unit for measuring and . The same unit is " -"used for both and . If the image resolution is " -"unknown, 2 (inches) is designated." -msgstr "" -"L'unité de mesure pour et . La même unité est " -"utilisée pour et . Si la résolution de l'image " -"est inconnue, 2 (pouces) sont utilisées." - -#: src/tags.cpp:534 -msgid "" -"A transfer function for the image, described in tabular style. Normally this " -"tag is not necessary, since color space is specified in the color space " -"information tag ()." -msgstr "" -"Une fonction de transfert pour l'image, décrite en style tableau. " -"Normalement, ce marqueur n'est pas nécessaire, puisque l'espace des couleurs " -"est spécifié dans le marqueur d'information sur l'espace des couleurs " -"()." - -#: src/tags.cpp:539 -msgid "" -"This tag records the name and version of the software or firmware of the " -"camera or image input device used to generate the image. The detailed format " -"is not specified, but it is recommended that the example shown below be " -"followed. When the field is left blank, it is treated as unknown." -msgstr "" -"Ce marqueur enregistre le nom et la version du logiciel ou du matériel de " -"l'appareil ou du périphérique d'entrée utilisé pour générer l'image. Le " -"format détaillé n'est pas spécifié, mais il est recommandé que l'exemple ci-" -"dessous soit suivi. Lorsque le champ est vide, il est traité comme inconnu." - -#: src/tags.cpp:546 -msgid "" -"The date and time of image creation. In Exif standard, it is the date and " -"time the file was changed." -msgstr "" -"La date et l'heure de création de l'image. Dans ce standard, il s'agit de la " -"date et de l'heure de modification du fichier." - -#: src/tags.cpp:550 -#, fuzzy -msgid "" -"This tag records the name of the camera owner, photographer or image " -"creator. The detailed format is not specified, but it is recommended that " -"the information be written as in the example below for ease of " -"Interoperability. When the field is left blank, it is treated as unknown. " -"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " -"Ken James\"" -msgstr "" -"Ce marqueur enregistre le nom du propriétaire de l'appareil, du photographe " -"ou du créateur de l'image. Le format détaillé n'est pas spécifié, mais il " -"est recommandé que cette information soit écrite comme dans l'exemple ci-" -"dessous pour faciliter l'interopérabilité. Lorsque le champ est laissé " -"blanc, il est considéré comme inconnu." - -#: src/tags.cpp:557 -msgid "Host Computer" -msgstr "" - -#: src/tags.cpp:558 -msgid "" -"This tag records information about the host computer used to generate the " -"image." -msgstr "" - -#: src/tags.cpp:561 -#, fuzzy -msgid "Predictor" -msgstr "Crédit" - -#: src/tags.cpp:562 -msgid "" -"A predictor is a mathematical operator that is applied to the image data " -"before an encoding scheme is applied." -msgstr "" - -#: src/tags.cpp:566 -msgid "" -"The chromaticity of the white point of the image. Normally this tag is not " -"necessary, since color space is specified in the colorspace information tag " -"()." -msgstr "" -"La chromaticité du point blanc de l'image. Normalement, ce marqueur n'est " -"pas nécessaire, puisque l'espace des couleurs est spécifié dans le marqueur " -"d'information sur l'espace des couleurs ()." - -#: src/tags.cpp:571 -#, fuzzy -msgid "" -"The chromaticity of the three primary colors of the image. Normally this tag " -"is not necessary, since colorspace is specified in the colorspace " -"information tag ()." -msgstr "" -"La chromaticité du point blanc de l'image. Normalement, ce marqueur n'est " -"pas nécessaire, puisque l'espace des couleurs est spécifié dans le marqueur " -"d'information sur l'espace des couleurs ()." - -#: src/tags.cpp:575 -#, fuzzy -msgid "Color Map" -msgstr "Matrice des couleurs" - -#: src/tags.cpp:576 -msgid "" -"A color map for palette color images. This field defines a Red-Green-Blue " -"color map (often called a lookup table) for palette-color images. In a " -"palette-color image, a pixel value is used to index into an RGB lookup table." -msgstr "" - -#: src/tags.cpp:581 -msgid "Halftone Hints" -msgstr "" - -#: src/tags.cpp:582 -msgid "" -"The purpose of the HalftoneHints field is to convey to the halftone function " -"the range of gray levels within a colorimetrically-specified image that " -"should retain tonal detail." -msgstr "" - -#: src/tags.cpp:586 -#, fuzzy -msgid "Tile Width" -msgstr "Largeur de l'image" - -#: src/tags.cpp:587 -msgid "The tile width in pixels. This is the number of columns in each tile." -msgstr "" - -#: src/tags.cpp:589 -#, fuzzy -msgid "Tile Length" -msgstr "Longueur de l'aperçu" - -#: src/tags.cpp:590 -msgid "" -"The tile length (height) in pixels. This is the number of rows in each tile." -msgstr "" - -#: src/tags.cpp:592 -#, fuzzy -msgid "Tile Offsets" -msgstr "Décalage aperçu" - -#: src/tags.cpp:593 -msgid "" -"For each tile, the byte offset of that tile, as compressed and stored on " -"disk. The offset is specified with respect to the beginning of the TIFF " -"file. Note that this implies that each tile has a location independent of " -"the locations of other tiles." -msgstr "" - -#: src/tags.cpp:598 -#, fuzzy -msgid "Tile Byte Counts" -msgstr "Priorité obturation" - -#: src/tags.cpp:599 -msgid "" -"For each tile, the number of (compressed) bytes in that tile. See " -"TileOffsets for a description of how the byte counts are ordered." -msgstr "" - -#: src/tags.cpp:602 -#, fuzzy -msgid "SubIFD Offsets" -msgstr "Décalage aperçu" - -#: src/tags.cpp:603 -msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." -msgstr "" - -#: src/tags.cpp:605 -#, fuzzy -msgid "Ink Set" -msgstr "Définition de" - -#: src/tags.cpp:606 -msgid "" -"The set of inks used in a separated (PhotometricInterpretation=5) image." -msgstr "" - -#: src/tags.cpp:608 -#, fuzzy -msgid "Ink Names" -msgstr "Nom du propriétaire" - -#: src/tags.cpp:609 -msgid "" -"The name of each ink used in a separated (PhotometricInterpretation=5) image." -msgstr "" - -#: src/tags.cpp:611 -#, fuzzy -msgid "Number Of Inks" -msgstr "Le nombre F." - -#: src/tags.cpp:612 -msgid "" -"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " -"samples." -msgstr "" - -#: src/tags.cpp:614 -#, fuzzy -msgid "Dot Range" -msgstr "Gamme dynamique" - -#: src/tags.cpp:615 -#, c-format -msgid "The component values that correspond to a 0% dot and 100% dot." -msgstr "" - -#: src/tags.cpp:617 -#, fuzzy -msgid "Target Printer" -msgstr "Ouverture cible" - -#: src/tags.cpp:618 -msgid "" -"A description of the printing environment for which this separation is " -"intended." -msgstr "" - -#: src/tags.cpp:620 -#, fuzzy -msgid "Extra Samples" -msgstr "Bits des échantillons" - -#: src/tags.cpp:621 -msgid "" -"Specifies that each pixel has m extra components whose interpretation is " -"defined by one of the values listed below." -msgstr "" - -#: src/tags.cpp:624 -#, fuzzy -msgid "Sample Format" -msgstr "Format du fichier" - -#: src/tags.cpp:625 -msgid "This field specifies how to interpret each data sample in a pixel." -msgstr "" - -#: src/tags.cpp:627 -#, fuzzy -msgid "SMin Sample Value" -msgstr "Débit audio" - -#: src/tags.cpp:628 -msgid "This field specifies the minimum sample value." -msgstr "" - -#: src/tags.cpp:630 -#, fuzzy -msgid "SMax Sample Value" -msgstr "Valeur maximal d'ouverture" - -#: src/tags.cpp:631 -msgid "This field specifies the maximum sample value." -msgstr "" - -#: src/tags.cpp:633 -msgid "Transfer Range" -msgstr "Échelle de transfert" - -#: src/tags.cpp:634 -msgid "Expands the range of the TransferFunction" -msgstr "" - -#: src/tags.cpp:636 -msgid "Clip Path" -msgstr "" - -#: src/tags.cpp:637 -msgid "" -"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " -"creation functionality." -msgstr "" - -#: src/tags.cpp:640 -msgid "X Clip Path Units" -msgstr "" - -#: src/tags.cpp:641 -msgid "" -"The number of units that span the width of the image, in terms of integer " -"ClipPath coordinates." -msgstr "" - -#: src/tags.cpp:644 -msgid "Y Clip Path Units" -msgstr "" - -#: src/tags.cpp:645 -msgid "" -"The number of units that span the height of the image, in terms of integer " -"ClipPath coordinates." -msgstr "" - -#: src/tags.cpp:649 -msgid "" -"Indexed images are images where the 'pixels' do not represent color values, " -"but rather an index (usually 8-bit) into a separate color table, the " -"ColorMap." -msgstr "" - -#: src/tags.cpp:653 -#, fuzzy -msgid "JPEG tables" -msgstr "Processus JPEG" - -#: src/tags.cpp:654 -msgid "" -"This optional tag may be used to encode the JPEG quantization andHuffman " -"tables for subsequent use by the JPEG decompression process." -msgstr "" - -#: src/tags.cpp:657 -msgid "OPI Proxy" -msgstr "" - -#: src/tags.cpp:658 -msgid "" -"OPIProxy gives information concerning whether this image is a low-resolution " -"proxy of a high-resolution image (Adobe OPI)." -msgstr "" - -#: src/tags.cpp:661 -msgid "JPEG Process" -msgstr "Processus JPEG" - -#: src/tags.cpp:662 -msgid "This field indicates the process used to produce the compressed data" -msgstr "" - -#: src/tags.cpp:664 -msgid "JPEG Interchange Format" -msgstr "Format d'échange JPEG" - -#: src/tags.cpp:665 -msgid "" -"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " -"is not used for primary image JPEG data." -msgstr "" - -#: src/tags.cpp:668 -msgid "JPEG Interchange Format Length" -msgstr "Longueur du format d'échange JPEG" - -#: src/tags.cpp:669 -msgid "" -"The number of bytes of JPEG compressed thumbnail data. This is not used for " -"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " -"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " -"be recorded. Compressed thumbnails must be recorded in no more than 64 " -"Kbytes, including all other data to be recorded in APP1." -msgstr "" -"Le nombre d'octets de données des vignettes compressées JPEG. Ce n'est pas " -"utilisé pour les données des images JPEG primaires. Les vignettes JPEG ne " -"sont pas divisées mais sont enregistrées sous la forme d'un flux continu " -"JPEG de SOI à EOI. Les marqueurs Appn et COM ne doivent pas être " -"enregistrés. Les vignettes compressées doivent être enregistrées dans moins " -"de 64 kilo-octets, incluant toutes les autres données devant être " -"enregistrées dans APP1." - -#: src/tags.cpp:676 -msgid "JPEG Restart Interval" -msgstr "" - -#: src/tags.cpp:677 -#, fuzzy -msgid "" -"This Field indicates the length of the restart interval used in the " -"compressed image data." -msgstr "" -"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " -"a été enregistrée." - -#: src/tags.cpp:680 -msgid "JPEG Lossless Predictors" -msgstr "" - -#: src/tags.cpp:681 -msgid "" -"This Field points to a list of lossless predictor-selection values, one per " -"component." -msgstr "" - -#: src/tags.cpp:684 -msgid "JPEG Point Transforms" -msgstr "" - -#: src/tags.cpp:685 -msgid "" -"This Field points to a list of point transform values, one per component." -msgstr "" - -#: src/tags.cpp:687 -#, fuzzy -msgid "JPEG Q-Tables" -msgstr "Processus JPEG" - -#: src/tags.cpp:688 -msgid "" -"This Field points to a list of offsets to the quantization tables, one per " -"component." -msgstr "" - -#: src/tags.cpp:691 -#, fuzzy -msgid "JPEG DC-Tables" -msgstr "Processus JPEG" - -#: src/tags.cpp:692 -msgid "" -"This Field points to a list of offsets to the DC Huffman tables or the " -"lossless Huffman tables, one per component." -msgstr "" - -#: src/tags.cpp:695 -#, fuzzy -msgid "JPEG AC-Tables" -msgstr "Processus JPEG" - -#: src/tags.cpp:696 -msgid "" -"This Field points to a list of offsets to the Huffman AC tables, one per " -"component." -msgstr "" - -#: src/tags.cpp:700 -#, fuzzy -msgid "" -"The matrix coefficients for transformation from RGB to YCbCr image data. No " -"default is given in TIFF; but here the value given in Appendix E, \"Color " -"Space Guidelines\", is used as the default. The color space is declared in a " -"color space information tag, with the default being the value that gives the " -"optimal image characteristics Interoperability this condition." -msgstr "" -"La valeur de référence des points noir et blanc. Nul défaut n'est donné en " -"TIFF, mais les valeurs ci-dessous sont données comme défauts ici. L'espace " -"des couleurs est déclaré dans le marqueur d'informations de l'espace des " -"couleurs, avec la valeur par défaut étant celle donnant les caractéristiques " -"optimales de l'image dans ces conditions." - -#: src/tags.cpp:708 -msgid "YCbCr Sub-Sampling" -msgstr "Sous échantillonage YCbCr" - -#: src/tags.cpp:709 -#, fuzzy -msgid "" -"The sampling ratio of chrominance components in relation to the luminance " -"component. In JPEG compressed data a JPEG marker is used instead of this tag." -msgstr "" -"La composition des pixels. Dans des données compressées en JPEG un marqueur " -"JPEG est utilisé à la place de ce marqueur." - -#: src/tags.cpp:714 -msgid "" -"The position of chrominance components in relation to the luminance " -"component. This field is designated only for JPEG compressed data or " -"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " -"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " -"record data, in order to improve the image quality when viewed on TV " -"systems. When this field does not exist, the reader shall assume the TIFF " -"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " -"recommended. If the reader does not have the capability of supporting both " -"kinds of , it shall follow the TIFF default regardless of " -"the value in this field. It is preferable that readers be able to support " -"both centered and co-sited positioning." -msgstr "" - -#: src/tags.cpp:728 -msgid "Reference Black/White" -msgstr "Noir/Blanc de Référence" - -#: src/tags.cpp:729 -msgid "" -"The reference black point value and reference white point value. No defaults " -"are given in TIFF, but the values below are given as defaults here. The " -"color space is declared in a color space information tag, with the default " -"being the value that gives the optimal image characteristics " -"Interoperability these conditions." -msgstr "" -"La valeur de référence des points noir et blanc. Nul défaut n'est donné en " -"TIFF, mais les valeurs ci-dessous sont données comme défauts ici. L'espace " -"des couleurs est déclaré dans le marqueur d'informations de l'espace des " -"couleurs, avec la valeur par défaut étant celle donnant les caractéristiques " -"optimales de l'image dans ces conditions." - -#: src/tags.cpp:736 -msgid "XML Packet" -msgstr "Paquets XML" - -#: src/tags.cpp:737 -msgid "XMP Metadata (Adobe technote 9-14-02)" -msgstr "Métadonnées XMP (Adobe technote 9-14-02)" - -#: src/tags.cpp:739 -msgid "Windows Rating" -msgstr "Classement Windows" - -#: src/tags.cpp:740 -msgid "Rating tag used by Windows" -msgstr "" - -#: src/tags.cpp:742 -msgid "Windows Rating Percent" -msgstr "Classement Windows (pourcentage)" - -#: src/tags.cpp:743 -msgid "Rating tag used by Windows, value in percent" -msgstr "" - -#: src/tags.cpp:745 -#, fuzzy -msgid "Image ID" -msgstr "ID unique de l'image" - -#: src/tags.cpp:746 -msgid "" -"ImageID is the full pathname of the original, high-resolution image, or any " -"other identifying string that uniquely identifies the original image (Adobe " -"OPI)." -msgstr "" - -#: src/tags.cpp:750 -msgid "CFA Repeat Pattern Dimension" -msgstr "Dimension motif CFA" - -#: src/tags.cpp:751 -msgid "" -"Contains two values representing the minimum rows and columns to define the " -"repeating patterns of the color filter array" -msgstr "" - -#: src/tags.cpp:755 -msgid "" -"Indicates the color filter array (CFA) geometric pattern of the image sensor " -"when a one-chip color area sensor is used. It does not apply to all sensing " -"methods" -msgstr "" - -#: src/tags.cpp:763 -msgid "" -"Copyright information. In this standard the tag is used to indicate both the " -"photographer and editor copyrights. It is the copyright notice of the person " -"or organization claiming rights to the image. The Interoperability copyright " -"statement including date and rights should be written in this field; e.g., " -"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " -"field records both the photographer and editor copyrights, with each " -"recorded in a separate part of the statement. When there is a clear " -"distinction between the photographer and editor copyrights, these are to be " -"written in the order of photographer followed by editor copyright, separated " -"by NULL (in this case since the statement also ends with a NULL, there are " -"two NULL codes). When only the photographer copyright is given, it is " -"terminated by one NULL code . When only the editor copyright is given, the " -"photographer copyright part consists of one space followed by a terminating " -"NULL code, then the editor copyright is given. When the field is left blank, " -"it is treated as unknown." -msgstr "" - -#: src/tags.cpp:782 -#, fuzzy -msgid "Exposure time, given in seconds." -msgstr "Temps d'exposition, en secondes (sec)." - -#: src/tags.cpp:783 src/tags.cpp:1546 -msgid "The F number." -msgstr "Le nombre F." - -#: src/tags.cpp:784 -msgid "IPTC/NAA" -msgstr "IPTC/NAA" - -#: src/tags.cpp:785 -msgid "Contains an IPTC/NAA record" -msgstr "" - -#: src/tags.cpp:787 -msgid "Image Resources Block" -msgstr "" - -#: src/tags.cpp:788 -msgid "Contains information embedded by the Adobe Photoshop application" -msgstr "" - -#: src/tags.cpp:791 -msgid "" -"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " -"as that of the IFD specified in TIFF. ordinarily, however, it does not " -"contain image data as in the case of TIFF." -msgstr "" - -#: src/tags.cpp:796 -#, fuzzy -msgid "Inter Color Profile" -msgstr "Profil couleur" - -#: src/tags.cpp:797 -msgid "" -"Contains an InterColor Consortium (ICC) format color space characterization/" -"profile" -msgstr "" - -#: src/tags.cpp:799 src/tags.cpp:1549 -msgid "" -"The class of the program used by the camera to set exposure when the picture " -"is taken." -msgstr "" -"La classe du programme utilisé par l'appareil pour configurer l'exposition " -"lorsque la photo a été prise." - -#: src/tags.cpp:800 -#, fuzzy -msgid "Indicates the spectral sensitivity of each channel of the camera used." -msgstr "" -"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " -"a été enregistrée." - -#: src/tags.cpp:802 -msgid "" -"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " -"Info IFD, like that of Exif IFD, has no image data." -msgstr "" - -#: src/tags.cpp:806 src/tags.cpp:1557 -msgid "ISO Speed Ratings" -msgstr "Vitesse en ISO" - -#: src/tags.cpp:806 src/tags.cpp:1558 -msgid "" -"Indicates the ISO Speed and ISO Latitude of the camera or input device as " -"specified in ISO 12232." -msgstr "" - -#: src/tags.cpp:807 -msgid "" -"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " -"14524." -msgstr "" - -#: src/tags.cpp:808 -#, fuzzy -msgid "Interlace" -msgstr "Entrelacé" - -#: src/tags.cpp:808 -msgid "Indicates the field number of multifield images." -msgstr "" - -#: src/tags.cpp:809 -#, fuzzy -msgid "Time Zone Offset" -msgstr "Décalage aperçu" - -#: src/tags.cpp:810 -msgid "" -"This optional tag encodes the time zone of the camera clock (relativeto " -"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " -"picture was taken. It may also contain the time zone offsetof the clock used " -"to create the DateTime tag-value when the image wasmodified." -msgstr "" - -#: src/tags.cpp:816 -#, fuzzy -msgid "Self Timer Mode" -msgstr "Retardateur" - -#: src/tags.cpp:816 -msgid "Number of seconds image capture was delayed from button press." -msgstr "" - -#: src/tags.cpp:817 -#, fuzzy -msgid "Date Time Original" -msgstr "Date et heure (originel)" - -#: src/tags.cpp:817 -#, fuzzy -msgid "The date and time when the original image data was generated." -msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." - -#: src/tags.cpp:818 -msgid "Specific to compressed data; states the compressed bits per pixel." -msgstr "" - -#: src/tags.cpp:819 -#, fuzzy -msgid "Shutter speed." -msgstr "Vitesse d'obturation" - -#: src/tags.cpp:820 -#, fuzzy -msgid "The lens aperture." -msgstr "Ouverture maximale" - -#: src/tags.cpp:821 -#, fuzzy -msgid "The value of brightness." -msgstr "Le nombre F." - -#: src/tags.cpp:822 -#, fuzzy -msgid "The exposure bias." -msgstr "Correction d'exposition" - -#: src/tags.cpp:823 src/tags.cpp:1638 -msgid "Max Aperture Value" -msgstr "Valeur maximal d'ouverture" - -#: src/tags.cpp:823 -#, fuzzy -msgid "The smallest F number of the lens." -msgstr "Le type de source lumineuse." - -#: src/tags.cpp:824 src/tags.cpp:1644 -msgid "The distance to the subject, given in meters." -msgstr "La distance au sujet, donnée en mètres." - -#: src/tags.cpp:825 src/tags.cpp:1647 -msgid "The metering mode." -msgstr "Le mode de mesure." - -#: src/tags.cpp:826 src/tags.cpp:1650 -msgid "The kind of light source." -msgstr "Le type de source lumineuse." - -#: src/tags.cpp:827 -#, fuzzy -msgid "Indicates the status of flash when the image was shot." -msgstr "" -"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " -"a été enregistrée." - -#: src/tags.cpp:828 -msgid "The actual focal length of the lens, in mm." -msgstr "" - -#: src/tags.cpp:829 -msgid "Amount of flash energy (BCPS)." -msgstr "" - -#: src/tags.cpp:830 -msgid "SFR of the camera." -msgstr "" - -#: src/tags.cpp:831 -#, fuzzy -msgid "Noise" -msgstr "Aucun" - -#: src/tags.cpp:831 -msgid "Noise measurement values." -msgstr "" - -#: src/tags.cpp:832 -#, fuzzy -msgid "" -"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " -"direction for main image." -msgstr "" -"Le nombre de pixels par dans la direction .La " -"même valeur que pour est utilisée." - -#: src/tags.cpp:833 -#, fuzzy -msgid "" -"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " -"direction for main image." -msgstr "" -"Le nombre de pixels par dans la direction .La " -"même valeur que pour est utilisée." - -#: src/tags.cpp:834 -msgid "" -"Unit of measurement for FocalPlaneXResolution(37390) and " -"FocalPlaneYResolution(37391)." -msgstr "" - -#: src/tags.cpp:835 -msgid "Number assigned to an image, e.g., in a chained image burst." -msgstr "" - -#: src/tags.cpp:836 -#, fuzzy -msgid "Security Classification" -msgstr "Augmentation électronique" - -#: src/tags.cpp:836 -#, fuzzy -msgid "Security classification assigned to the image." -msgstr "Augmentation électronique" - -#: src/tags.cpp:837 -msgid "Record of what has been done to the image." -msgstr "" - -#: src/tags.cpp:838 -#, fuzzy -msgid "" -"Indicates the location and area of the main subject in the overall scene." -msgstr "" -"Ce marqueur indique l'emplacement et l'aire du sujet principal dans la scène " -"générale." - -#: src/tags.cpp:839 -msgid "Encodes the camera exposure index setting when image was captured." -msgstr "" - -#: src/tags.cpp:840 -#, fuzzy -msgid "TIFF/EP Standard ID" -msgstr "F0/Standard" - -#: src/tags.cpp:841 -msgid "" -"Contains four ASCII characters representing the TIFF/EP standard version of " -"a TIFF/EP file, eg '1', '0', '0', '0'" -msgstr "" - -#: src/tags.cpp:844 -#, fuzzy -msgid "Type of image sensor." -msgstr "Comptage d'image" - -#: src/tags.cpp:845 -msgid "Windows Title" -msgstr "Titre Windows" - -#: src/tags.cpp:846 -msgid "Title tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:848 -msgid "Windows Comment" -msgstr "Commentaire Windows" - -#: src/tags.cpp:849 -msgid "Comment tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:851 -msgid "Windows Author" -msgstr "Auteur Windows" - -#: src/tags.cpp:852 -msgid "Author tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:854 -msgid "Windows Keywords" -msgstr "mots-clés Windows" - -#: src/tags.cpp:855 -msgid "Keywords tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:857 -msgid "Windows Subject" -msgstr "Sujet Windows" - -#: src/tags.cpp:858 -msgid "Subject tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:860 -msgid "Print Image Matching" -msgstr "" - -#: src/tags.cpp:861 -msgid "Print Image Matching, description needed." -msgstr "" - -#: src/tags.cpp:863 -#, fuzzy -msgid "DNG version" -msgstr "Version du fichier" - -#: src/tags.cpp:864 -msgid "" -"This tag encodes the DNG four-tier version number. For files compliant with " -"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " -"1, 1, 0, 0." -msgstr "" - -#: src/tags.cpp:868 -#, fuzzy -msgid "DNG backward version" -msgstr "Version de microcode" - -#: src/tags.cpp:869 -msgid "" -"This tag specifies the oldest version of the Digital Negative specification " -"for which a file is compatible. Readers shouldnot attempt to read a file if " -"this tag specifies a version number that is higher than the version number " -"of the specification the reader was based on. In addition to checking the " -"version tags, readers should, for all tags, check the types, counts, and " -"values, to verify it is able to correctly read the file." -msgstr "" - -#: src/tags.cpp:877 -#, fuzzy -msgid "Unique Camera Model" -msgstr "Modèle de l'appareil" - -#: src/tags.cpp:878 -msgid "" -"Defines a unique, non-localized name for the camera model that created the " -"image in the raw file. This name should include the manufacturer's name to " -"avoid conflicts, and should not be localized, even if the camera name itself " -"is localized for different markets (see LocalizedCameraModel). This string " -"may be used by reader software to index into per-model preferences and " -"replacement profiles." -msgstr "" - -#: src/tags.cpp:885 -#, fuzzy -msgid "Localized Camera Model" -msgstr "Modèle de l'appareil" - -#: src/tags.cpp:886 -msgid "" -"Similar to the UniqueCameraModel field, except the name can be localized for " -"different markets to match the localization of the camera name." -msgstr "" - -#: src/tags.cpp:890 -#, fuzzy -msgid "CFA Plane Color" -msgstr "Couleur FinePix" - -#: src/tags.cpp:891 -msgid "" -"Provides a mapping between the values in the CFAPattern tag and the plane " -"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." -msgstr "" - -#: src/tags.cpp:895 -msgid "CFA Layout" -msgstr "" - -#: src/tags.cpp:896 -msgid "Describes the spatial layout of the CFA." -msgstr "" - -#: src/tags.cpp:899 -msgid "" -"Describes a lookup table that maps stored values into linear values. This " -"tag is typically used to increase compression ratios by storing the raw data " -"in a non-linear, more visually uniform space with fewer total encoding " -"levels. If SamplesPerPixel is not equal to one, this single table applies to " -"all the samples for each pixel." -msgstr "" - -#: src/tags.cpp:905 -#, fuzzy -msgid "Black Level Repeat Dim" -msgstr "Niveau de noir" - -#: src/tags.cpp:906 -msgid "Specifies repeat pattern size for the BlackLevel tag." -msgstr "" - -#: src/tags.cpp:909 -msgid "" -"Specifies the zero light (a.k.a. thermal black or black current) encoding " -"level, as a repeating pattern. The origin of this pattern is the top-left " -"corner of the ActiveArea rectangle. The values are stored in row-column-" -"sample scan order." -msgstr "" - -#: src/tags.cpp:914 -#, fuzzy -msgid "Black Level Delta H" -msgstr "Niveau de noir" - -#: src/tags.cpp:915 -msgid "" -"If the zero light encoding level is a function of the image column, " -"BlackLevelDeltaH specifies the difference between the zero light encoding " -"level for each column and the baseline zero light encoding level. If " -"SamplesPerPixel is not equal to one, this single table applies to all the " -"samples for each pixel." -msgstr "" - -#: src/tags.cpp:921 -#, fuzzy -msgid "Black Level Delta V" -msgstr "Niveau de noir" - -#: src/tags.cpp:922 -msgid "" -"If the zero light encoding level is a function of the image row, this tag " -"specifies the difference between the zero light encoding level for each row " -"and the baseline zero light encoding level. If SamplesPerPixel is not equal " -"to one, this single table applies to all the samples for each pixel." -msgstr "" - -#: src/tags.cpp:928 -#, fuzzy -msgid "White Level" -msgstr "Niveau de charge" - -#: src/tags.cpp:929 -msgid "" -"This tag specifies the fully saturated encoding level for the raw sample " -"values. Saturation is caused either by the sensor itself becoming highly non-" -"linear in response, or by the camera's analog to digital converter clipping." -msgstr "" - -#: src/tags.cpp:934 -#, fuzzy -msgid "Default Scale" -msgstr "Défaut" - -#: src/tags.cpp:935 -msgid "" -"DefaultScale is required for cameras with non-square pixels. It specifies " -"the default scale factors for each direction to convert the image to square " -"pixels. Typically these factors are selected to approximately preserve total " -"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " -"as the Fujifilm SuperCCD, these two values should usually differ by a factor " -"of 2.0." -msgstr "" - -#: src/tags.cpp:942 -msgid "Default Crop Origin" -msgstr "" - -#: src/tags.cpp:943 -msgid "" -"Raw images often store extra pixels around the edges of the final image. " -"These extra pixels help prevent interpolation artifacts near the edges of " -"the final image. DefaultCropOrigin specifies the origin of the final image " -"area, in raw image coordinates (i.e., before the DefaultScale has been " -"applied), relative to the top-left corner of the ActiveArea rectangle." -msgstr "" - -#: src/tags.cpp:950 -#, fuzzy -msgid "Default Crop Size" -msgstr "Défaut" - -#: src/tags.cpp:951 -msgid "" -"Raw images often store extra pixels around the edges of the final image. " -"These extra pixels help prevent interpolation artifacts near the edges of " -"the final image. DefaultCropSize specifies the size of the final image area, " -"in raw image coordinates (i.e., before the DefaultScale has been applied)." -msgstr "" - -#: src/tags.cpp:957 -#, fuzzy -msgid "Color Matrix 1" -msgstr "Matrice des couleurs" - -#: src/tags.cpp:958 -msgid "" -"ColorMatrix1 defines a transformation matrix that converts XYZ values to " -"reference camera native color space values, under the first calibration " -"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " -"tag is required for all non-monochrome DNG files." -msgstr "" - -#: src/tags.cpp:964 -#, fuzzy -msgid "Color Matrix 2" -msgstr "Matrice des couleurs" - -#: src/tags.cpp:965 -msgid "" -"ColorMatrix2 defines a transformation matrix that converts XYZ values to " -"reference camera native color space values, under the second calibration " -"illuminant. The matrix values are stored in row scan order." -msgstr "" - -#: src/tags.cpp:970 -#, fuzzy -msgid "Camera Calibration 1" -msgstr "Réglage appareil photo (Z1)" - -#: src/tags.cpp:971 -msgid "" -"CameraClalibration1 defines a calibration matrix that transforms reference " -"camera native space values to individual camera native space values under " -"the first calibration illuminant. The matrix is stored in row scan order. " -"This matrix is stored separately from the matrix specified by the " -"ColorMatrix1 tag to allow raw converters to swap in replacement color " -"matrices based on UniqueCameraModel tag, while still taking advantage of any " -"per-individual camera calibration performed by the camera manufacturer." -msgstr "" - -#: src/tags.cpp:980 -#, fuzzy -msgid "Camera Calibration 2" -msgstr "Réglage appareil photo (Z1)" - -#: src/tags.cpp:981 -msgid "" -"CameraCalibration2 defines a calibration matrix that transforms reference " -"camera native space values to individual camera native space values under " -"the second calibration illuminant. The matrix is stored in row scan order. " -"This matrix is stored separately from the matrix specified by the " -"ColorMatrix2 tag to allow raw converters to swap in replacement color " -"matrices based on UniqueCameraModel tag, while still taking advantage of any " -"per-individual camera calibration performed by the camera manufacturer." -msgstr "" - -#: src/tags.cpp:990 -#, fuzzy -msgid "Reduction Matrix 1" -msgstr "Matrice des couleurs" - -#: src/tags.cpp:991 -msgid "" -"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " -"first stage in converting color camera native space values to XYZ values, " -"under the first calibration illuminant. This tag may only be used if " -"ColorPlanes is greater than 3. The matrix is stored in row scan order." -msgstr "" - -#: src/tags.cpp:997 -#, fuzzy -msgid "Reduction Matrix 2" -msgstr "Matrice des couleurs" - -#: src/tags.cpp:998 -msgid "" -"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " -"first stage in converting color camera native space values to XYZ values, " -"under the second calibration illuminant. This tag may only be used if " -"ColorPlanes is greater than 3. The matrix is stored in row scan order." -msgstr "" - -#: src/tags.cpp:1004 -#, fuzzy -msgid "Analog Balance" -msgstr "Balance des bleus" - -#: src/tags.cpp:1005 -msgid "" -"Normally the stored raw values are not white balanced, since any digital " -"white balancing will reduce the dynamic range of the final image if the user " -"decides to later adjust the white balance; however, if camera hardware is " -"capable of white balancing the color channels before the signal is " -"digitized, it can improve the dynamic range of the final image. " -"AnalogBalance defines the gain, either analog (recommended) or digital (not " -"recommended) that has been applied the stored raw values." -msgstr "" - -#: src/tags.cpp:1014 -#, fuzzy -msgid "As Shot Neutral" -msgstr "Neutre" - -#: src/tags.cpp:1015 -msgid "" -"Specifies the selected white balance at time of capture, encoded as the " -"coordinates of a perfectly neutral color in linear reference space values. " -"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." -msgstr "" - -#: src/tags.cpp:1020 -msgid "As Shot White XY" -msgstr "" - -#: src/tags.cpp:1021 -msgid "" -"Specifies the selected white balance at time of capture, encoded as x-y " -"chromaticity coordinates. The inclusion of this tag precludes the inclusion " -"of the AsShotNeutral tag." -msgstr "" - -#: src/tags.cpp:1025 -#, fuzzy -msgid "Baseline Exposure" -msgstr "Exposition" - -#: src/tags.cpp:1026 -msgid "" -"Camera models vary in the trade-off they make between highlight headroom and " -"shadow noise. Some leave a significant amount of highlight headroom during a " -"normal exposure. This allows significant negative exposure compensation to " -"be applied during raw conversion, but also means normal exposures will " -"contain more shadow noise. Other models leave less headroom during normal " -"exposures. This allows for less negative exposure compensation, but results " -"in lower shadow noise for normal exposures. Because of these differences, a " -"raw converter needs to vary the zero point of its exposure compensation " -"control from model to model. BaselineExposure specifies by how much (in EV " -"units) to move the zero point. Positive values result in brighter default " -"results, while negative values result in darker default results." -msgstr "" - -#: src/tags.cpp:1040 -#, fuzzy -msgid "Baseline Noise" -msgstr "Exposition" - -#: src/tags.cpp:1041 -msgid "" -"Specifies the relative noise level of the camera model at a baseline ISO " -"value of 100, compared to a reference camera model. Since noise levels tend " -"to vary approximately with the square root of the ISO value, a raw converter " -"can use this value, combined with the current ISO, to estimate the relative " -"noise level of the current image." -msgstr "" - -#: src/tags.cpp:1047 -#, fuzzy -msgid "Baseline Sharpness" -msgstr "Netteté" - -#: src/tags.cpp:1048 -msgid "" -"Specifies the relative amount of sharpening required for this camera model, " -"compared to a reference camera model. Camera models vary in the strengths of " -"their anti-aliasing filters. Cameras with weak or no filters require less " -"sharpening than cameras with strong anti-aliasing filters." -msgstr "" - -#: src/tags.cpp:1054 -msgid "Bayer Green Split" -msgstr "" - -#: src/tags.cpp:1055 -msgid "" -"Only applies to CFA images using a Bayer pattern filter array. This tag " -"specifies, in arbitrary units, how closely the values of the green pixels in " -"the blue/green rows track the values of the green pixels in the red/green " -"rows. A value of zero means the two kinds of green pixels track closely, " -"while a non-zero value means they sometimes diverge. The useful range for " -"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." -msgstr "" - -#: src/tags.cpp:1063 -msgid "Linear Response Limit" -msgstr "" - -#: src/tags.cpp:1064 -msgid "" -"Some sensors have an unpredictable non-linearity in their response as they " -"near the upper limit of their encoding range. This non-linearity results in " -"color shifts in the highlight areas of the resulting image unless the raw " -"converter compensates for this effect. LinearResponseLimit specifies the " -"fraction of the encoding range above which the response may become " -"significantly non-linear." -msgstr "" - -#: src/tags.cpp:1072 -msgid "" -"CameraSerialNumber contains the serial number of the camera or camera body " -"that captured the image." -msgstr "" - -#: src/tags.cpp:1075 -#, fuzzy -msgid "Lens Info" -msgstr "Objectif" - -#: src/tags.cpp:1076 -msgid "" -"Contains information about the lens that captured the image. If the minimum " -"f-stops are unknown, they should be encoded as 0/0." -msgstr "" - -#: src/tags.cpp:1079 -msgid "Chroma Blur Radius" -msgstr "" - -#: src/tags.cpp:1080 -msgid "" -"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " -"blur should be applied to the image. If this tag is omitted, the reader will " -"use its default amount of chroma blurring. Normally this tag is only " -"included for non-CFA images, since the amount of chroma blur required for " -"mosaic images is highly dependent on the de-mosaic algorithm, in which case " -"the DNG reader's default value is likely optimized for its particular de-" -"mosaic algorithm." -msgstr "" - -#: src/tags.cpp:1088 -#, fuzzy -msgid "Anti Alias Strength" -msgstr "Puissance Flash" - -#: src/tags.cpp:1089 -msgid "" -"Provides a hint to the DNG reader about how strong the camera's anti-alias " -"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " -"prone to aliasing artifacts with some subjects), while a value of 1.0 means " -"a strong anti-alias filter (i.e., the camera almost never has aliasing " -"artifacts)." -msgstr "" - -#: src/tags.cpp:1095 -#, fuzzy -msgid "Shadow Scale" -msgstr "Ombragé" - -#: src/tags.cpp:1096 -msgid "" -"This tag is used by Adobe Camera Raw to control the sensitivity of its " -"'Shadows' slider." -msgstr "" - -#: src/tags.cpp:1099 -#, fuzzy -msgid "DNG Private Data" -msgstr "Données de prévisualisation" - -#: src/tags.cpp:1100 -msgid "" -"Provides a way for camera manufacturers to store private data in the DNG " -"file for use by their own raw converters, and to have that data preserved by " -"programs that edit DNG files." -msgstr "" - -#: src/tags.cpp:1104 -#, fuzzy -msgid "MakerNote Safety" -msgstr "Note du fabriquant" - -#: src/tags.cpp:1105 -msgid "" -"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " -"safe to preserve along with the rest of the EXIF data. File browsers and " -"other image management software processing an image with a preserved " -"MakerNote should be aware that any thumbnail image embedded in the MakerNote " -"may be stale, and may not reflect the current state of the full size image." -msgstr "" - -#: src/tags.cpp:1112 -msgid "Calibration Illuminant 1" -msgstr "" - -#: src/tags.cpp:1113 -msgid "" -"The illuminant used for the first set of color calibration tags " -"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " -"this tag are the same as the legal values for the LightSource EXIF tag." -msgstr "" - -#: src/tags.cpp:1118 -#, fuzzy -msgid "Calibration Illuminant 2" -msgstr "Réduction du bruit" - -#: src/tags.cpp:1119 -msgid "" -"The illuminant used for an optional second set of color calibration tags " -"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " -"this tag are the same as the legal values for the CalibrationIlluminant1 " -"tag; however, if both are included, neither is allowed to have a value of 0 " -"(unknown)." -msgstr "" - -#: src/tags.cpp:1125 -#, fuzzy -msgid "Best Quality Scale" -msgstr "Défaut" - -#: src/tags.cpp:1126 -msgid "" -"For some cameras, the best possible image quality is not achieved by " -"preserving the total pixel count during conversion. For example, Fujifilm " -"SuperCCD images have maximum detail when their total pixel count is doubled. " -"This tag specifies the amount by which the values of the DefaultScale tag " -"need to be multiplied to achieve the best quality image size." -msgstr "" - -#: src/tags.cpp:1133 -#, fuzzy -msgid "Raw Data Unique ID" -msgstr "ID unique de l'image" - -#: src/tags.cpp:1134 -msgid "" -"This tag contains a 16-byte unique identifier for the raw image data in the " -"DNG file. DNG readers can use this tag to recognize a particular raw image, " -"even if the file's name or the metadata contained in the file has been " -"changed. If a DNG writer creates such an identifier, it should do so using " -"an algorithm that will ensure that it is very unlikely two different images " -"will end up having the same identifier." -msgstr "" - -#: src/tags.cpp:1142 -#, fuzzy -msgid "Original Raw File Name" -msgstr "Nom du fichier" - -#: src/tags.cpp:1143 -msgid "" -"If the DNG file was converted from a non-DNG raw file, then this tag " -"contains the file name of that original raw file." -msgstr "" - -#: src/tags.cpp:1146 -#, fuzzy -msgid "Original Raw File Data" -msgstr "Nom du fichier" - -#: src/tags.cpp:1147 -msgid "" -"If the DNG file was converted from a non-DNG raw file, then this tag " -"contains the compressed contents of that original raw file. The contents of " -"this tag always use the big-endian byte order. The tag contains a sequence " -"of data blocks. Future versions of the DNG specification may define " -"additional data blocks, so DNG readers should ignore extra bytes when " -"parsing this tag. DNG readers should also detect the case where data blocks " -"are missing from the end of the sequence, and should assume a default value " -"for all the missing blocks. There are no padding or alignment bytes between " -"data blocks." -msgstr "" - -#: src/tags.cpp:1157 -#, fuzzy -msgid "Active Area" -msgstr "Aire du sujet" - -#: src/tags.cpp:1158 -msgid "" -"This rectangle defines the active (non-masked) pixels of the sensor. The " -"order of the rectangle coordinates is: top, left, bottom, right." -msgstr "" - -#: src/tags.cpp:1161 -#, fuzzy -msgid "Masked Areas" -msgstr "Dur" - -#: src/tags.cpp:1162 -msgid "" -"This tag contains a list of non-overlapping rectangle coordinates of fully " -"masked pixels, which can be optionally used by DNG readers to measure the " -"black encoding level. The order of each rectangle's coordinates is: top, " -"left, bottom, right. If the raw image data has already had its black " -"encoding level subtracted, then this tag should not be used, since the " -"masked pixels are no longer useful." -msgstr "" - -#: src/tags.cpp:1169 -#, fuzzy -msgid "As-Shot ICC Profile" -msgstr "Profil couleur" - -#: src/tags.cpp:1170 -msgid "" -"This tag contains an ICC profile that, in conjunction with the " -"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " -"specify a default color rendering from camera color space coordinates " -"(linear reference values) into the ICC profile connection space. The ICC " -"profile connection space is an output referred colorimetric space, whereas " -"the other color calibration tags in DNG specify a conversion into a scene " -"referred colorimetric space. This means that the rendering in this profile " -"should include any desired tone and gamut mapping needed to convert between " -"scene referred values and output referred values." -msgstr "" - -#: src/tags.cpp:1181 -msgid "As-Shot Pre-Profile Matrix" -msgstr "" - -#: src/tags.cpp:1182 -msgid "" -"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " -"a matrix that should be applied to the camera color space coordinates before " -"processing the values through the ICC profile specified in the " -"AsShotICCProfile tag. The matrix is stored in the row scan order. If " -"ColorPlanes is greater than three, then this matrix can (but is not required " -"to) reduce the dimensionality of the color data down to three components, in " -"which case the AsShotICCProfile should have three rather than ColorPlanes " -"input components." -msgstr "" - -#: src/tags.cpp:1191 -#, fuzzy -msgid "Current ICC Profile" -msgstr "Profil couleur" - -#: src/tags.cpp:1192 -msgid "" -"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " -"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " -"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " -"they are for use by raw file editors rather than camera manufacturers." -msgstr "" - -#: src/tags.cpp:1198 -#, fuzzy -msgid "Current Pre-Profile Matrix" -msgstr "Profil couleur" - -#: src/tags.cpp:1199 -msgid "" -"This tag is used in conjunction with the CurrentICCProfile tag. The " -"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " -"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " -"they are for use by raw file editors rather than camera manufacturers." -msgstr "" - -#: src/tags.cpp:1205 -#, fuzzy -msgid "Colorimetric Reference" -msgstr "Date de référence" - -#: src/tags.cpp:1206 -msgid "" -"The DNG color model documents a transform between camera colors and CIE XYZ " -"values. This tag describes the colorimetric reference for the CIE XYZ " -"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" -"referred, using the ICC profile perceptual dynamic range. This tag allows " -"output-referred data to be stored in DNG files and still processed correctly " -"by DNG readers." -msgstr "" - -#: src/tags.cpp:1213 -#, fuzzy -msgid "Camera Calibration Signature" -msgstr "Réglage appareil photo (Z1)" - -#: src/tags.cpp:1214 -msgid "" -"A UTF-8 encoded string associated with the CameraCalibration1 and " -"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " -"should only be used in the DNG color transform if the string stored in the " -"CameraCalibrationSignature tag exactly matches the string stored in the " -"ProfileCalibrationSignature tag for the selected camera profile." -msgstr "" - -#: src/tags.cpp:1220 -#, fuzzy -msgid "Profile Calibration Signature" -msgstr "Réduction du bruit" - -#: src/tags.cpp:1221 -msgid "" -"A UTF-8 encoded string associated with the camera profile tags. The " -"CameraCalibration1 and CameraCalibration2 tags should only be used in the " -"DNG color transfer if the string stored in the CameraCalibrationSignature " -"tag exactly matches the string stored in the ProfileCalibrationSignature tag " -"for the selected camera profile." -msgstr "" - -#: src/tags.cpp:1227 -#, fuzzy -msgid "As Shot Profile Name" -msgstr "Profil couleur" - -#: src/tags.cpp:1228 -msgid "" -"A UTF-8 encoded string containing the name of the \"as shot\" camera " -"profile, if any." -msgstr "" - -#: src/tags.cpp:1231 -#, fuzzy -msgid "Noise Reduction Applied" -msgstr "Réduction du bruit" - -#: src/tags.cpp:1232 -msgid "" -"This tag indicates how much noise reduction has been applied to the raw data " -"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " -"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " -"reduction has been applied, i.e. that the DNG reader should not apply " -"additional noise reduction by default. A value of 0/0 indicates that this " -"parameter is unknown." -msgstr "" - -#: src/tags.cpp:1239 -#, fuzzy -msgid "Profile Name" -msgstr "Nom du propriétaire" - -#: src/tags.cpp:1240 -msgid "" -"A UTF-8 encoded string containing the name of the camera profile. This tag " -"is optional if there is only a single camera profile stored in the file but " -"is required for all camera profiles if there is more than one camera profile " -"stored in the file." -msgstr "" - -#: src/tags.cpp:1245 -msgid "Profile Hue Sat Map Dims" -msgstr "" - -#: src/tags.cpp:1246 -msgid "" -"This tag specifies the number of input samples in each dimension of the hue/" -"saturation/value mapping tables. The data for these tables are stored in " -"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " -"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " -"to the mapping table." -msgstr "" - -#: src/tags.cpp:1252 -msgid "Profile Hue Sat Map Data 1" -msgstr "" - -#: src/tags.cpp:1253 -msgid "" -"This tag contains the data for the first hue/saturation/value mapping table. " -"Each entry of the table contains three 32-bit IEEE floating-point values. " -"The first entry is hue shift in degrees; the second entry is saturation " -"scale factor; and the third entry is a value scale factor. The table entries " -"are stored in the tag in nested loop order, with the value divisions in the " -"outer loop, the hue divisions in the middle loop, and the saturation " -"divisions in the inner loop. All zero input saturation entries are required " -"to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1262 -msgid "Profile Hue Sat Map Data 2" -msgstr "" - -#: src/tags.cpp:1263 -msgid "" -"This tag contains the data for the second hue/saturation/value mapping " -"table. Each entry of the table contains three 32-bit IEEE floating-point " -"values. The first entry is hue shift in degrees; the second entry is a " -"saturation scale factor; and the third entry is a value scale factor. The " -"table entries are stored in the tag in nested loop order, with the value " -"divisions in the outer loop, the hue divisions in the middle loop, and the " -"saturation divisions in the inner loop. All zero input saturation entries " -"are required to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1272 -#, fuzzy -msgid "Profile Tone Curve" -msgstr "Courbe de tonalité" - -#: src/tags.cpp:1273 -msgid "" -"This tag contains a default tone curve that can be applied while processing " -"the image as a starting point for user adjustments. The curve is specified " -"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " -"sample has an input value in the range of 0.0 to 1.0, and an output value in " -"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " -"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " -"cubic spline." -msgstr "" - -#: src/tags.cpp:1281 -msgid "Profile Embed Policy" -msgstr "" - -#: src/tags.cpp:1282 -msgid "" -"This tag contains information about the usage rules for the associated " -"camera profile." -msgstr "" - -#: src/tags.cpp:1285 -#, fuzzy -msgid "Profile Copyright" -msgstr "Droit d'auteur" - -#: src/tags.cpp:1286 -msgid "" -"A UTF-8 encoded string containing the copyright information for the camera " -"profile. This string always should be preserved along with the other camera " -"profile tags." -msgstr "" - -#: src/tags.cpp:1290 -#, fuzzy -msgid "Forward Matrix 1" -msgstr "Matrice des couleurs" - -#: src/tags.cpp:1291 src/tags.cpp:1295 -msgid "" -"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " -"colors." -msgstr "" - -#: src/tags.cpp:1294 -#, fuzzy -msgid "Forward Matrix 2" -msgstr "Matrice des couleurs" - -#: src/tags.cpp:1298 -#, fuzzy -msgid "Preview Application Name" -msgstr "Données de prévisualisation" - -#: src/tags.cpp:1299 -msgid "" -"A UTF-8 encoded string containing the name of the application that created " -"the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1302 -#, fuzzy -msgid "Preview Application Version" -msgstr "Version de prévisualisation" - -#: src/tags.cpp:1303 -msgid "" -"A UTF-8 encoded string containing the version number of the application that " -"created the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1306 -#, fuzzy -msgid "Preview Settings Name" -msgstr "Aperçu embarqué" - -#: src/tags.cpp:1307 -msgid "" -"A UTF-8 encoded string containing the name of the conversion settings (for " -"example, snapshot name) used for the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1310 -#, fuzzy -msgid "Preview Settings Digest" -msgstr "Description des paramètres du matériel" - -#: src/tags.cpp:1311 -msgid "" -"A unique ID of the conversion settings (for example, MD5 digest) used to " -"render the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1314 -#, fuzzy -msgid "Preview Color Space" -msgstr "Espace des couleurs" - -#: src/tags.cpp:1315 -msgid "" -"This tag specifies the color space in which the rendered preview in this IFD " -"is stored. The default value for this tag is sRGB for color previews and " -"Gray Gamma 2.2 for monochrome previews." -msgstr "" - -#: src/tags.cpp:1319 -#, fuzzy -msgid "Preview Date Time" -msgstr "Données de prévisualisation" - -#: src/tags.cpp:1320 -msgid "" -"This tag is an ASCII string containing the name of the date/time at which " -"the preview stored in the IFD was rendered. The date/time is encoded using " -"ISO 8601 format." -msgstr "" - -#: src/tags.cpp:1324 -#, fuzzy -msgid "Raw Image Digest" -msgstr "Comptage d'image" - -#: src/tags.cpp:1325 -msgid "" -"This tag is an MD5 digest of the raw image data. All pixels in the image are " -"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " -"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " -"data for each pixel is processed in little-endian byte order." -msgstr "" - -#: src/tags.cpp:1330 -#, fuzzy -msgid "Original Raw File Digest" -msgstr "Nom du fichier" - -#: src/tags.cpp:1331 -msgid "" -"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." -msgstr "" - -#: src/tags.cpp:1334 -msgid "Sub Tile Block Size" -msgstr "" - -#: src/tags.cpp:1335 -msgid "" -"Normally, the pixels within a tile are stored in simple row-scan order. This " -"tag specifies that the pixels within a tile should be grouped first into " -"rectangular blocks of the specified size. These blocks are stored in row-" -"scan order. Within each block, the pixels are stored in row-scan order. The " -"use of a non-default value for this tag requires setting the " -"DNGBackwardVersion tag to at least 1.2.0.0." -msgstr "" - -#: src/tags.cpp:1342 -msgid "Row Interleave Factor" -msgstr "" - -#: src/tags.cpp:1343 -msgid "" -"This tag specifies that rows of the image are stored in interleaved order. " -"The value of the tag specifies the number of interleaved fields. The use of " -"a non-default value for this tag requires setting the DNGBackwardVersion tag " -"to at least 1.2.0.0." -msgstr "" - -#: src/tags.cpp:1348 -msgid "Profile Look Table Dims" -msgstr "" - -#: src/tags.cpp:1349 -msgid "" -"This tag specifies the number of input samples in each dimension of a " -"default \"look\" table. The data for this table is stored in the " -"ProfileLookTableData tag." -msgstr "" - -#: src/tags.cpp:1353 -msgid "Profile Look Table Data" -msgstr "" - -#: src/tags.cpp:1354 -msgid "" -"This tag contains a default \"look\" table that can be applied while " -"processing the image as a starting point for user adjustment. This table " -"uses the same format as the tables stored in the ProfileHueSatMapData1 and " -"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " -"it should be applied later in the processing pipe, after any exposure " -"compensation and/or fill light stages, but before any tone curve stage. Each " -"entry of the table contains three 32-bit IEEE floating-point values. The " -"first entry is hue shift in degrees, the second entry is a saturation scale " -"factor, and the third entry is a value scale factor. The table entries are " -"stored in the tag in nested loop order, with the value divisions in the " -"outer loop, the hue divisions in the middle loop, and the saturation " -"divisions in the inner loop. All zero input saturation entries are required " -"to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1368 -msgid "Opcode List 1" -msgstr "" - -#: src/tags.cpp:1369 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, as " -"read directly from the file." -msgstr "" - -#: src/tags.cpp:1372 -msgid "Opcode List 2" -msgstr "" - -#: src/tags.cpp:1373 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, just " -"after it has been mapped to linear reference values." -msgstr "" - -#: src/tags.cpp:1376 -msgid "Opcode List 3" -msgstr "" - -#: src/tags.cpp:1377 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, just " -"after it has been demosaiced." -msgstr "" - -#: src/tags.cpp:1380 -#, fuzzy -msgid "Noise Profile" -msgstr "Filtre couleur" - -#: src/tags.cpp:1381 -msgid "" -"NoiseProfile describes the amount of noise in a raw image. Specifically, " -"this tag models the amount of signal-dependent photon (shot) noise and " -"signal-independent sensor readout noise, two common sources of noise in raw " -"images. The model assumes that the noise is white and spatially independent, " -"ignoring fixed pattern effects and other sources of noise (e.g., pixel " -"response non-uniformity, spatially-dependent thermal effects, etc.)." -msgstr "" - -#: src/tags.cpp:1389 src/tags.cpp:1390 -msgid "Unknown IFD tag" -msgstr "Marqueur IFD inconnu" - -#: src/tags.cpp:1401 src/tags.cpp:1459 -msgid "Not defined" -msgstr "Non défini" - -#: src/tags.cpp:1406 -msgid "Creative program" -msgstr "Programme Créatif" - -#: src/tags.cpp:1407 -msgid "Action program" -msgstr "Programme Action" - -#: src/tags.cpp:1408 -msgid "Portrait mode" -msgstr "Mode portrait" - -#: src/tags.cpp:1409 -msgid "Landscape mode" -msgstr "Mode paysage" - -#: src/tags.cpp:1418 -msgid "Multi-spot" -msgstr "Multi-spots" - -#: src/tags.cpp:1430 -msgid "Tungsten (incandescent light)" -msgstr "Tungstène (lampe à incandescence)" - -#: src/tags.cpp:1432 -msgid "Fine weather" -msgstr "Ensoleillé" - -#: src/tags.cpp:1433 -msgid "Cloudy weather" -msgstr "Nuageux" - -#: src/tags.cpp:1435 -msgid "Daylight fluorescent (D 5700 - 7100K)" -msgstr "Lumière du jour fluorescent (D 5700 - 7100K)" - -#: src/tags.cpp:1436 -msgid "Day white fluorescent (N 4600 - 5400K)" -msgstr "Blanc chaud fluorescent (N 4600 - 5400K)" - -#: src/tags.cpp:1437 -msgid "Cool white fluorescent (W 3900 - 4500K)" -msgstr "Blanc froid fluorescent (W 3900 - 4500K)" - -#: src/tags.cpp:1438 -msgid "White fluorescent (WW 3200 - 3700K)" -msgstr "Blanc fluorescent (WW 3200 - 3700K)" - -#: src/tags.cpp:1439 -msgid "Standard light A" -msgstr "Lumière standard A" - -#: src/tags.cpp:1440 -msgid "Standard light B" -msgstr "Lumière standard B" - -#: src/tags.cpp:1441 -msgid "Standard light C" -msgstr "Lumière standard C" - -#: src/tags.cpp:1442 -msgid "D55" -msgstr "D55" - -#: src/tags.cpp:1443 -msgid "D65" -msgstr "D65" - -#: src/tags.cpp:1444 -msgid "D75" -msgstr "D75" - -#: src/tags.cpp:1445 -msgid "D50" -msgstr "D55" - -#: src/tags.cpp:1446 -msgid "ISO studio tungsten" -msgstr "Lampe de studio tungstène ISO" - -#: src/tags.cpp:1447 -msgid "Other light source" -msgstr "Autre source lumineuse" - -#: src/tags.cpp:1454 -msgid "Uncalibrated" -msgstr "Non calibré" - -#: src/tags.cpp:1460 -msgid "One-chip color area" -msgstr "Mono-CCD" - -#: src/tags.cpp:1461 -msgid "Two-chip color area" -msgstr "Bi-CCD" - -#: src/tags.cpp:1462 -msgid "Three-chip color area" -msgstr "Tri-CCD" - -#: src/tags.cpp:1463 -msgid "Color sequential area" -msgstr "CCD séquentiel" - -#: src/tags.cpp:1464 -msgid "Trilinear sensor" -msgstr "Capteur trilinéaire" - -#: src/tags.cpp:1465 -msgid "Color sequential linear" -msgstr "Capteur séquentiel linéaire" - -#: src/tags.cpp:1470 -msgid "Film scanner" -msgstr "Numériseur de film" - -#: src/tags.cpp:1471 -msgid "Reflexion print scanner" -msgstr "Numériseur de documents imprimés" - -#: src/tags.cpp:1472 -msgid "Digital still camera" -msgstr "Appareil photo numérique" - -#: src/tags.cpp:1477 -msgid "Directly photographed" -msgstr "Photographié directement" - -#: src/tags.cpp:1482 -msgid "Normal process" -msgstr "Processus normal" - -#: src/tags.cpp:1483 -msgid "Custom process" -msgstr "Processus personnel" - -#: src/tags.cpp:1511 -msgid "Low gain up" -msgstr "Faible augmentation du gain" - -#: src/tags.cpp:1512 -msgid "High gain up" -msgstr "Forte augmentation du gain" - -#: src/tags.cpp:1513 -msgid "Low gain down" -msgstr "Faible réduction du gain" - -#: src/tags.cpp:1514 -msgid "High gain down" -msgstr "Forte réduction du gain" - -#: src/tags.cpp:1535 -msgid "Close view" -msgstr "Gros plan" - -#: src/tags.cpp:1536 src/tags.cpp:1537 -msgid "Distant view" -msgstr "Plan large" - -#: src/tags.cpp:1543 -msgid "Exposure time, given in seconds (sec)." -msgstr "Temps d'exposition, en secondes (sec)." - -#: src/tags.cpp:1553 -msgid "" -"Indicates the spectral sensitivity of each channel of the camera used. The " -"tag value is an ASCII string compatible with the standard developed by the " -"ASTM Technical Committee." -msgstr "" - -#: src/tags.cpp:1561 -msgid "Opto-Electoric Conversion Function" -msgstr "Fonction de conversion opto-electrique" - -#: src/tags.cpp:1562 -msgid "" -"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " -"14524. is the relationship between the camera optical input and the " -"image values." -msgstr "" - -#: src/tags.cpp:1566 -#, fuzzy -msgid "Sensitivity Type" -msgstr "Sensibilité spectrale" - -#: src/tags.cpp:1567 -msgid "" -"The SensitivityType tag indicates PhotographicSensitivity tag. which one of " -"the parameters of ISO12232 is the Although it is an optional tag, it should " -"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " -"or 7 may be used in case that the values of plural parameters are the same." -msgstr "" - -#: src/tags.cpp:1573 -#, fuzzy -msgid "Standard Output Sensitivity" -msgstr "Sensibilité spectrale" - -#: src/tags.cpp:1574 -msgid "" -"This tag indicates the standard output sensitivity value of a camera or " -"input device defined in ISO 12232. When recording this tag, the " -"PhotographicSensitivity and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1578 -#, fuzzy -msgid "Recommended Exposure Index" -msgstr "Index d'exposition" - -#: src/tags.cpp:1579 -msgid "" -"This tag indicates the recommended exposure index value of a camera or input " -"device defined in ISO 12232. When recording this tag, the " -"PhotographicSensitivity and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1584 -msgid "" -"This tag indicates the ISO speed value of a camera or input device that is " -"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " -"and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1588 -#, fuzzy -msgid "ISO Speed Latitude yyy" -msgstr "Mode vitesse ISO" - -#: src/tags.cpp:1589 -msgid "" -"This tag indicates the ISO speed latitude yyy value of a camera or input " -"device that is defined in ISO 12232. However, this tag shall not be recorded " -"without ISOSpeed and ISOSpeedLatitudezzz." -msgstr "" - -#: src/tags.cpp:1593 -#, fuzzy -msgid "ISO Speed Latitude zzz" -msgstr "Mode vitesse ISO" - -#: src/tags.cpp:1594 -msgid "" -"This tag indicates the ISO speed latitude zzz value of a camera or input " -"device that is defined in ISO 12232. However, this tag shall not be recorded " -"without ISOSpeed and ISOSpeedLatitudeyyy." -msgstr "" - -#: src/tags.cpp:1599 -msgid "" -"The version of this standard supported. Nonexistence of this field is taken " -"to mean nonconformance to the standard." -msgstr "" - -#: src/tags.cpp:1602 -msgid "Date and Time (original)" -msgstr "Date et heure (originel)" - -#: src/tags.cpp:1603 -msgid "" -"The date and time when the original image data was generated. For a digital " -"still camera the date and time the picture was taken are recorded." -msgstr "" -"La date et l'heure de création de l'image originale. Pour un appareil photo " -"numérique il s'agit de la date et heure à laquelle la photo a été prise." - -#: src/tags.cpp:1606 -msgid "Date and Time (digitized)" -msgstr "Date et heure (numérisé)" - -#: src/tags.cpp:1607 -msgid "The date and time when the image was stored as digital data." -msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." - -#: src/tags.cpp:1610 -msgid "" -"Information specific to compressed data. The channels of each component are " -"arranged in order from the 1st component to the 4th. For uncompressed data " -"the data arrangement is given in the tag. " -"However, since can only express the order of Y, " -"Cb and Cr, this tag is provided for cases when compressed data uses " -"components other than Y, Cb, and Cr and to enable support of other sequences." -msgstr "" - -#: src/tags.cpp:1619 -msgid "Compressed Bits per Pixel" -msgstr "Bits compressés par pixel" - -#: src/tags.cpp:1620 -msgid "" -"Information specific to compressed data. The compression mode used for a " -"compressed image is indicated in unit bits per pixel." -msgstr "" - -#: src/tags.cpp:1624 -msgid "" -"Shutter speed. The unit is the APEX (Additive System of Photographic " -"Exposure) setting." -msgstr "" - -#: src/tags.cpp:1628 -msgid "The lens aperture. The unit is the APEX value." -msgstr "Ouverture de l'objectif. L'unité est la valeur APEX." - -#: src/tags.cpp:1631 -msgid "" -"The value of brightness. The unit is the APEX value. Ordinarily it is given " -"in the range of -99.99 to 99.99." -msgstr "" - -#: src/tags.cpp:1634 -msgid "Exposure Bias" -msgstr "Correction d'exposition" - -#: src/tags.cpp:1635 -msgid "" -"The exposure bias. The units is the APEX value. Ordinarily it is given in " -"the range of -99.99 to 99.99." -msgstr "" - -#: src/tags.cpp:1639 -msgid "" -"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " -"is given in the range of 00.00 to 99.99, but it is not limited to this range." -msgstr "" - -#: src/tags.cpp:1653 -msgid "" -"This tag is recorded when an image is taken using a strobe light (flash)." -msgstr "" - -#: src/tags.cpp:1656 -msgid "" -"The actual focal length of the lens, in mm. Conversion is not made to the " -"focal length of a 35 mm film camera." -msgstr "" - -#: src/tags.cpp:1660 -msgid "" -"This tag indicates the location and area of the main subject in the overall " -"scene." -msgstr "" -"Ce marqueur indique l'emplacement et l'aire du sujet principal dans la scène " -"générale." - -#: src/tags.cpp:1663 -msgid "Maker Note" -msgstr "Note du fabriquant" - -#: src/tags.cpp:1664 -msgid "" -"A tag for manufacturers of Exif writers to record any desired information. " -"The contents are up to the manufacturer." -msgstr "" -"Un marqueur pour les constructeurs des logiciels d'écriture Exif pour noter " -"une information désirée. Le contenu dépend du constructeur." - -#: src/tags.cpp:1668 -msgid "" -"A tag for Exif users to write keywords or comments on the image besides " -"those in , and without the character code limitations of " -"the tag." -msgstr "" - -#: src/tags.cpp:1672 -#, fuzzy -msgid "Sub-seconds Time" -msgstr "Date et heure (originel)" - -#: src/tags.cpp:1673 -msgid "A tag used to record fractions of seconds for the tag." -msgstr "" -"Marqueur utilisé pour enregistrer des fractions de secondes pour le marqueur " -"." - -#: src/tags.cpp:1675 -#, fuzzy -msgid "Sub-seconds Time Original" -msgstr "Date et heure (originel)" - -#: src/tags.cpp:1676 -msgid "" -"A tag used to record fractions of seconds for the tag." -msgstr "" -"Marqueur utilisé pour enregistrer des fractions de secondes pour le marqueur " -"." - -#: src/tags.cpp:1678 -#, fuzzy -msgid "Sub-seconds Time Digitized" -msgstr "Date et heure (numérique)" - -#: src/tags.cpp:1679 -msgid "" -"A tag used to record fractions of seconds for the tag." -msgstr "" -"Marqueur utilisé pour enregistrer des fractions de secondes pour le marqueur " -"." - -#: src/tags.cpp:1681 -msgid "FlashPix Version" -msgstr "Version FlashPix" - -#: src/tags.cpp:1682 -msgid "The FlashPix format version supported by a FPXR file." -msgstr "" - -#: src/tags.cpp:1685 -msgid "" -"The color space information tag is always recorded as the color space " -"specifier. Normally sRGB is used to define the color space based on the PC " -"monitor conditions and environment. If a color space other than sRGB is " -"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " -"treated as sRGB when it is converted to FlashPix." -msgstr "" - -#: src/tags.cpp:1694 -msgid "" -"Information specific to compressed data. When a compressed file is recorded, " -"the valid width of the meaningful image must be recorded in this tag, " -"whether or not there is padding data or a restart marker. This tag should " -"not exist in an uncompressed file." -msgstr "" - -#: src/tags.cpp:1701 -msgid "" -"Information specific to compressed data. When a compressed file is recorded, " -"the valid height of the meaningful image must be recorded in this tag, " -"whether or not there is padding data or a restart marker. This tag should " -"not exist in an uncompressed file. Since data padding is unnecessary in the " -"vertical direction, the number of lines recorded in this valid image height " -"tag will in fact be the same as that recorded in the SOF." -msgstr "" - -#: src/tags.cpp:1710 -msgid "" -"This tag is used to record the name of an audio file related to the image " -"data. The only relational information recorded here is the Exif audio file " -"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " -"characters). The path is not recorded." -msgstr "" - -#: src/tags.cpp:1716 -msgid "Interoperability IFD Pointer" -msgstr "Pointeur IDF interopérabilité" - -#: src/tags.cpp:1717 -msgid "" -"Interoperability IFD is composed of tags which stores the information to " -"ensure the Interoperability and pointed by the following tag located in Exif " -"IFD. The Interoperability structure of Interoperability IFD is the same as " -"TIFF defined IFD structure but does not contain the image data " -"characteristically compared with normal TIFF IFD." -msgstr "" - -#: src/tags.cpp:1725 -msgid "" -"Indicates the strobe energy at the time the image is captured, as measured " -"in Beam Candle Power Seconds (BCPS)." -msgstr "" - -#: src/tags.cpp:1729 -msgid "" -"This tag records the camera or input device spatial frequency table and SFR " -"values in the direction of image width, image height, and diagonal " -"direction, as specified in ISO 12233." -msgstr "" - -#: src/tags.cpp:1733 -msgid "Focal Plane X-Resolution" -msgstr "x-Résolution du plan focal" - -#: src/tags.cpp:1734 -msgid "" -"Indicates the number of pixels in the image width (X) direction per " -" on the camera focal plane." -msgstr "" -"Indique le nombre de pixels de largeur (X) de l'image par " -" sur le plan focal de l'appareil." - -#: src/tags.cpp:1737 -msgid "Focal Plane Y-Resolution" -msgstr "x-Résolution du plan focal" - -#: src/tags.cpp:1738 -msgid "" -"Indicates the number of pixels in the image height (V) direction per " -" on the camera focal plane." -msgstr "" -"Indique le nombre de pixels de hauteur (Y) de l'image par " -" sur le plan focal de l'appareil." - -#: src/tags.cpp:1742 -msgid "" -"Indicates the unit for measuring and " -". This value is the same as the ." -msgstr "" -"Indique l'unité de mesure de et de " -". Cette valeur est la même que ." - -#: src/tags.cpp:1746 -msgid "" -"Indicates the location of the main subject in the scene. The value of this " -"tag represents the pixel at the center of the main subject relative to the " -"left edge, prior to rotation processing as per the tag. The first " -"value indicates the X column number and second indicates the Y row number." -msgstr "" - -#: src/tags.cpp:1752 -msgid "Exposure index" -msgstr "Index d'exposition" - -#: src/tags.cpp:1753 -msgid "" -"Indicates the exposure index selected on the camera or input device at the " -"time the image is captured." -msgstr "" - -#: src/tags.cpp:1757 -msgid "Indicates the image sensor type on the camera or input device." -msgstr "" - -#: src/tags.cpp:1760 -msgid "" -"Indicates the image source. If a DSC recorded the image, this tag value of " -"this tag always be set to 3, indicating that the image was recorded on a DSC." -msgstr "" -"Indique la source de l'image. Si un DSC a enregistré l'image, la valeur de " -"ce marqueur doit toujours être de 3, indiquant que l'image a été directement " -"photographiée." - -#: src/tags.cpp:1765 -msgid "" -"Indicates the type of scene. If a DSC recorded the image, this tag value " -"must always be set to 1, indicating that the image was directly photographed." -msgstr "" -"Indique le type de scène. Si un DSC a enregistré l'image, la valeur de ce " -"marqueur doit toujours être de 1, indiquant que l'image a été directement " -"photographiée." - -#: src/tags.cpp:1769 -#, fuzzy -msgid "Color Filter Array Pattern" -msgstr "Matrice de filtre de couleur" - -#: src/tags.cpp:1770 -msgid "" -"Indicates the color filter array (CFA) geometric pattern of the image sensor " -"when a one-chip color area sensor is used. It does not apply to all sensing " -"methods." -msgstr "" - -#: src/tags.cpp:1775 -msgid "" -"This tag indicates the use of special processing on image data, such as " -"rendering geared to output. When special processing is performed, the reader " -"is expected to disable or minimize any further processing." -msgstr "" - -#: src/tags.cpp:1781 -msgid "" -"This tag indicates the exposure mode set when the image was shot. In auto-" -"bracketing mode, the camera shoots a series of frames of the same scene at " -"different exposure settings." -msgstr "" - -#: src/tags.cpp:1786 -msgid "This tag indicates the white balance mode set when the image was shot." -msgstr "" -"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " -"a été enregistrée." - -#: src/tags.cpp:1789 -msgid "" -"This tag indicates the digital zoom ratio when the image was shot. If the " -"numerator of the recorded value is 0, this indicates that digital zoom was " -"not used." -msgstr "" -"Ce marqueur indique la valeur du zoom numérique lorsque l'image a été prise." -"Si le numérateur de la valeur enregistrée est 0, cela signifie que le zoom " -"numérique n'a pas été utilisé." - -#: src/tags.cpp:1794 -msgid "" -"This tag indicates the equivalent focal length assuming a 35mm film camera, " -"in mm. A value of 0 means the focal length is unknown. Note that this tag " -"differs from the tag." -msgstr "" -"Ce marqueur indique la longueur focale équivalente en assumant un appareil " -"avec un film de 35mm, en mm. Une valeur de 0 indique que la longueur focale " -"est inconnue. Notez que ce marqueur est différent du marqueur ." - -#: src/tags.cpp:1800 -#, fuzzy -msgid "" -"This tag indicates the type of scene that was shot. It can also be used to " -"record the mode in which the image was shot. Note that this differs from the " -" tag." -msgstr "" -"Ce marqueur indique la longueur focale équivalente en assumant un appareil " -"avec un film de 35mm, en mm. Une valeur de 0 indique que la longueur focale " -"est inconnue. Notez que ce marqueur est différent du marqueur ." - -#: src/tags.cpp:1805 -msgid "This tag indicates the degree of overall image gain adjustment." -msgstr "Ce marqueur indique le degré général d'ajustement du gain de l'image." - -#: src/tags.cpp:1808 -#, fuzzy -msgid "" -"This tag indicates the direction of contrast processing applied by the " -"camera when the image was shot." -msgstr "" -"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " -"a été enregistrée." - -#: src/tags.cpp:1812 -#, fuzzy -msgid "" -"This tag indicates the direction of saturation processing applied by the " -"camera when the image was shot." -msgstr "" -"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " -"a été enregistrée." - -#: src/tags.cpp:1816 -#, fuzzy -msgid "" -"This tag indicates the direction of sharpness processing applied by the " -"camera when the image was shot." -msgstr "" -"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " -"a été enregistrée." - -#: src/tags.cpp:1820 -msgid "" -"This tag indicates information on the picture-taking conditions of a " -"particular camera model. The tag is used only to indicate the picture-taking " -"conditions in the reader." -msgstr "" -"Ce marqueur indique les informations sur les conditions lors de la prise de " -"vue pour un modèle particulier d'appareil. Ce marqueur n'est utilisé que " -"pour indiquer les paramètres de prise de vue au lecteur." - -#: src/tags.cpp:1825 -msgid "This tag indicates the distance to the subject." -msgstr "Ce marqueur indique la distance au sujet." - -#: src/tags.cpp:1828 -msgid "" -"This tag indicates an identifier assigned uniquely to each image. It is " -"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " -"fixed length." -msgstr "" -"Ce marqueur indique un identificateur unique assigné à chaque image. Il est " -"enregistré sous la forme d'une chaîne ASCII équivalente à la notation " -"hexadécimale et d'une longueur fixe de 128 bits." - -#: src/tags.cpp:1832 -#, fuzzy -msgid "Camera Owner Name" -msgstr "Nom du propriétaire" - -#: src/tags.cpp:1833 -msgid "" -"This tag records the owner of a camera used in photography as an ASCII " -"string." -msgstr "" - -#: src/tags.cpp:1836 -#, fuzzy -msgid "Body Serial Number" -msgstr "Numéro de série" - -#: src/tags.cpp:1837 -msgid "" -"This tag records the serial number of the body of the camera that was used " -"in photography as an ASCII string." -msgstr "" - -#: src/tags.cpp:1840 -#, fuzzy -msgid "Lens Specification" -msgstr "Information Spécifique au vendeur" - -#: src/tags.cpp:1841 -msgid "" -"This tag notes minimum focal length, maximum focal length, minimum F number " -"in the minimum focal length, and minimum F number in the maximum focal " -"length, which are specification information for the lens that was used in " -"photography. When the minimum F number is unknown, the notation is 0/0" -msgstr "" - -#: src/tags.cpp:1847 -#, fuzzy -msgid "Lens Make" -msgstr "Mode scène" - -#: src/tags.cpp:1848 -msgid "This tag records the lens manufactor as an ASCII string." -msgstr "" - -#: src/tags.cpp:1851 -msgid "" -"This tag records the lens's model name and model number as an ASCII string." -msgstr "" - -#: src/tags.cpp:1855 -msgid "" -"This tag records the serial number of the interchangeable lens that was used " -"in photography as an ASCII string." -msgstr "" - -#: src/tags.cpp:1859 src/tags.cpp:1860 -msgid "Unknown Exif tag" -msgstr "Marqueur Exif inconnue" - -#: src/tags.cpp:1871 -msgid "North" -msgstr "Nord" - -#: src/tags.cpp:1872 -msgid "South" -msgstr "Sud" - -#: src/tags.cpp:1877 -msgid "East" -msgstr "Est" - -#: src/tags.cpp:1878 -msgid "West" -msgstr "Ouest" - -#: src/tags.cpp:1883 -msgid "Above sea level" -msgstr "Au dessus du niveau de la mer" - -#: src/tags.cpp:1884 -msgid "Below sea level" -msgstr "En dessous du niveau de la mer" - -#: src/tags.cpp:1889 -#, fuzzy -msgid "Measurement in progress" -msgstr "Index interopérabilité" - -#: src/tags.cpp:1890 -#, fuzzy -msgid "Measurement Interoperability" -msgstr "Index interopérabilité" - -#: src/tags.cpp:1895 -msgid "Two-dimensional measurement" -msgstr "" - -#: src/tags.cpp:1896 -msgid "Three-dimensional measurement" -msgstr "" - -#: src/tags.cpp:1901 -msgid "km/h" -msgstr "Km/h" - -#: src/tags.cpp:1902 -msgid "mph" -msgstr "mph" - -#: src/tags.cpp:1903 -msgid "knots" -msgstr "Noeuds" - -#: src/tags.cpp:1908 -#, fuzzy -msgid "True direction" -msgstr "Direction panorama" - -#: src/tags.cpp:1909 -#, fuzzy -msgid "Magnetic direction" -msgstr "Direction de l'image GPS" - -#: src/tags.cpp:1914 -#, fuzzy -msgid "Kilometers" -msgstr "Filtre" - -#: src/tags.cpp:1915 -#, fuzzy -msgid "Miles" -msgstr "Le fichier" - -#: src/tags.cpp:1916 -#, fuzzy -msgid "Knots" -msgstr "Noeuds" - -#: src/tags.cpp:1921 -#, fuzzy -msgid "Without correction" -msgstr "Lieu précis" - -#: src/tags.cpp:1922 -msgid "Correction applied" -msgstr "" - -#: src/tags.cpp:1928 -msgid "" -"Indicates the version of . The version is given as 2.0.0.0. This " -"tag is mandatory when tag is present. (Note: The " -"tag is given in bytes, unlike the tag. When the version is " -"2.0.0.0, the tag value is 02000000.H)." -msgstr "" - -#: src/tags.cpp:1934 -msgid "GPS Latitude Reference" -msgstr "Référence de latitude GPS" - -#: src/tags.cpp:1935 -msgid "" -"Indicates whether the latitude is north or south latitude. The ASCII value " -"'N' indicates north latitude, and 'S' is south latitude." -msgstr "" - -#: src/tags.cpp:1939 -msgid "" -"Indicates the latitude. The latitude is expressed as three RATIONAL values " -"giving the degrees, minutes, and seconds, respectively. When degrees, " -"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " -"degrees and minutes are used and, for example, fractions of minutes are " -"given up to two decimal places, the format is dd/1,mmmm/100,0/1." -msgstr "" - -#: src/tags.cpp:1946 -msgid "GPS Longitude Reference" -msgstr "Référence de longitude GPS" - -#: src/tags.cpp:1947 -msgid "" -"Indicates whether the longitude is east or west longitude. ASCII 'E' " -"indicates east longitude, and 'W' is west longitude." -msgstr "" - -#: src/tags.cpp:1951 -msgid "" -"Indicates the longitude. The longitude is expressed as three RATIONAL values " -"giving the degrees, minutes, and seconds, respectively. When degrees, " -"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " -"degrees and minutes are used and, for example, fractions of minutes are " -"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." -msgstr "" - -#: src/tags.cpp:1959 -msgid "" -"Indicates the altitude used as the reference altitude. If the reference is " -"sea level and the altitude is above sea level, 0 is given. If the altitude " -"is below sea level, a value of 1 is given and the altitude is indicated as " -"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " -"that this tag is BYTE type, unlike other reference tags." -msgstr "" - -#: src/tags.cpp:1967 -msgid "" -"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " -"expressed as one RATIONAL value. The reference unit is meters." -msgstr "" - -#: src/tags.cpp:1971 -msgid "" -"Indicates the time as UTC (Coordinated Universal Time). is " -"expressed as three RATIONAL values giving the hour, minute, and second " -"(atomic clock)." -msgstr "" - -#: src/tags.cpp:1976 -msgid "" -"Indicates the GPS satellites used for measurements. This tag can be used to " -"describe the number of satellites, their ID number, angle of elevation, " -"azimuth, SNR and other information in ASCII notation. The format is not " -"specified. If the GPS receiver is incapable of taking measurements, value of " -"the tag is set to NULL." -msgstr "" - -#: src/tags.cpp:1983 -msgid "" -"Indicates the status of the GPS receiver when the image is recorded. \"A\" " -"means measurement is in progress, and \"V\" means the measurement is " -"Interoperability." -msgstr "" - -#: src/tags.cpp:1988 -msgid "" -"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " -"and \"3\" means three-dimensional measurement is in progress." -msgstr "" - -#: src/tags.cpp:1991 -msgid "GPS Data Degree of Precision" -msgstr "Degrés de précision des données GPS" - -#: src/tags.cpp:1992 -msgid "" -"Indicates the GPS DOP (data degree of precision). An HDOP value is written " -"during two-dimensional measurement, and PDOP during three-dimensional " -"measurement." -msgstr "" - -#: src/tags.cpp:1996 -msgid "" -"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " -"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." -msgstr "" - -#: src/tags.cpp:2000 -msgid "Indicates the speed of GPS receiver movement." -msgstr "" - -#: src/tags.cpp:2002 -#, fuzzy -msgid "GPS Track Ref" -msgstr "Référence de vitesse de GPS" - -#: src/tags.cpp:2003 -msgid "" -"Indicates the reference for giving the direction of GPS receiver movement. " -"\"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" - -#: src/tags.cpp:2007 -msgid "" -"Indicates the direction of GPS receiver movement. The range of values is " -"from 0.00 to 359.99." -msgstr "" - -#: src/tags.cpp:2011 -msgid "" -"Indicates the reference for giving the direction of the image when it is " -"captured. \"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" - -#: src/tags.cpp:2015 -msgid "" -"Indicates the direction of the image when it was captured. The range of " -"values is from 0.00 to 359.99." -msgstr "" - -#: src/tags.cpp:2019 -msgid "" -"Indicates the geodetic survey data used by the GPS receiver. If the survey " -"data is restricted to Japan, the value of this tag is \"TOKYO\" or " -"\"WGS-84\"." -msgstr "" - -#: src/tags.cpp:2022 -msgid "GPS Destination Latitude Refeference" -msgstr "Référence de latitude de destination GPS" - -#: src/tags.cpp:2023 -msgid "" -"Indicates whether the latitude of the destination point is north or south " -"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " -"latitude." -msgstr "" - -#: src/tags.cpp:2027 -msgid "" -"Indicates the latitude of the destination point. The latitude is expressed " -"as three RATIONAL values giving the degrees, minutes, and seconds, " -"respectively. If latitude is expressed as degrees, minutes and seconds, a " -"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " -"and, for example, fractions of minutes are given up to two decimal places, " -"the format would be dd/1,mmmm/100,0/1." -msgstr "" - -#: src/tags.cpp:2034 -msgid "GPS Destination Longitude Reference" -msgstr "Référence de longitude de destination GPS" - -#: src/tags.cpp:2035 -msgid "" -"Indicates whether the longitude of the destination point is east or west " -"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." -msgstr "" - -#: src/tags.cpp:2039 -msgid "" -"Indicates the longitude of the destination point. The longitude is expressed " -"as three RATIONAL values giving the degrees, minutes, and seconds, " -"respectively. If longitude is expressed as degrees, minutes and seconds, a " -"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " -"and, for example, fractions of minutes are given up to two decimal places, " -"the format would be ddd/1,mmmm/100,0/1." -msgstr "" - -#: src/tags.cpp:2046 -msgid "" -"Indicates the reference used for giving the bearing to the destination " -"point. \"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" - -#: src/tags.cpp:2050 -msgid "" -"Indicates the bearing to the destination point. The range of values is from " -"0.00 to 359.99." -msgstr "" - -#: src/tags.cpp:2053 -#, fuzzy -msgid "GPS Destination Distance Reference" -msgstr "Référence de latitude de destination GPS" - -#: src/tags.cpp:2054 -msgid "" -"Indicates the unit used to express the distance to the destination point. \"K" -"\", \"M\" and \"N\" represent kilometers, miles and knots." -msgstr "" - -#: src/tags.cpp:2058 -#, fuzzy -msgid "Indicates the distance to the destination point." -msgstr "Ce marqueur indique la distance au sujet." - -#: src/tags.cpp:2061 -msgid "" -"A character string recording the name of the method used for location " -"finding. The first byte indicates the character code used, and this is " -"followed by the name of the method." -msgstr "" - -#: src/tags.cpp:2066 -msgid "" -"A character string recording the name of the GPS area. The first byte " -"indicates the character code used, and this is followed by the name of the " -"GPS area." -msgstr "" - -#: src/tags.cpp:2069 -msgid "GPS Date Stamp" -msgstr "Horodatage GPS" - -#: src/tags.cpp:2070 -msgid "" -"A character string recording date and time information relative to UTC " -"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." -msgstr "" - -#: src/tags.cpp:2074 -#, fuzzy -msgid "" -"Indicates whether differential correction is applied to the GPS receiver." -msgstr "" -"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " -"a été enregistrée." - -#: src/tags.cpp:2077 src/tags.cpp:2078 -msgid "Unknown GPSInfo tag" -msgstr "Marqueur GPSInfo inconnu" - -#: src/tags.cpp:2089 -msgid "Interoperability Index" -msgstr "Index interopérabilité" - -#: src/tags.cpp:2090 -msgid "" -"Indicates the identification of the Interoperability rule. Use \"R98\" for " -"stating ExifR98 Rules. Four bytes used including the termination code " -"(NULL). see the separate volume of Recommended Exif Interoperability Rules " -"(ExifR98) for other tags used for ExifR98." -msgstr "" -"Indique l'identification de la règle d'interopérabilité. Utilisez \"R98\" " -"pour préciser des règles ExifR98. Quatre octets sont utilisés, incluant le " -"code de terminaison (NULL). Voyez le volume séparé des règles " -"d'interopérabilité recommandées pour exif (ExifR98) pour les autres " -"marqueurs utilisés pour ExifR98." - -#: src/tags.cpp:2096 -msgid "Interoperability Version" -msgstr "Version interopérabilité" - -#: src/tags.cpp:2097 -msgid "Interoperability version" -msgstr "Version interopérabilité" - -#: src/tags.cpp:2099 -#, fuzzy -msgid "Related Image File Format" -msgstr "Hauteur de l'image" - -#: src/tags.cpp:2100 -msgid "File format of image file" -msgstr "Format du fichier image" - -#: src/tags.cpp:2102 -#, fuzzy -msgid "Related Image Width" -msgstr "Hauteur de l'image" - -#: src/tags.cpp:2105 -msgid "Related Image Length" -msgstr "Longueur de l'image" - -#: src/tags.cpp:2109 src/tags.cpp:2110 -msgid "Unknown Exif Interoperability tag" -msgstr "Marqueur Interopérabilité Exif inconnu" - -#: src/tags.cpp:2121 -#, fuzzy -msgid "Offset" -msgstr "décalage" - -#: src/tags.cpp:2122 -msgid "Offset of the makernote from the start of the TIFF header." -msgstr "" - -#: src/tags.cpp:2124 -#, fuzzy -msgid "Byte Order" -msgstr "Ordre de remplissage" - -#: src/tags.cpp:2125 -msgid "" -"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" -"endian)." -msgstr "" - -#: src/tags.cpp:2128 src/tags.cpp:2129 -#, fuzzy -msgid "Unknown Exiv2 Makernote info tag" -msgstr "Marqueur 2 de note du fabriquant Nikon inconnu" - -#: src/tags.cpp:2139 src/tags.cpp:2140 -msgid "Unknown tag" -msgstr "Marqueur inconnu" - -#: src/tags.cpp:2662 -msgid "Digital zoom not used" -msgstr "Zoom numérique non utilisé" - -#: src/tiffimage.cpp:2034 -#, fuzzy -msgid "TIFF header, offset" -msgstr "En-tête, décalage" - -#: src/tiffimage.cpp:2039 -msgid "little endian encoded" -msgstr "encodage petit-boutiste" - -#: src/tiffimage.cpp:2040 -msgid "big endian encoded" -msgstr "encodage gros-boutiste" - -#~ msgid "Software firmware version" -#~ msgstr "Version du microcode" - -#, fuzzy -#~ msgid "White Balance Bracketing " -#~ msgstr "Biais de balance des blancs" - -#~ msgid "(Unknown Error)" -#~ msgstr "(Erreur inconnue)" - -#~ msgid "Exposure Speed" -#~ msgstr "Vitesse d'exposition" - -#~ msgid "Exposure speed" -#~ msgstr "Vitesse d'exposition" - -#~ msgid "Color balance settings 1" -#~ msgstr "Réglage balance des couleurs 1" - -#~ msgid "Compression Curve" -#~ msgstr "Courbe de compression" - -#~ msgid "Compression curve" -#~ msgstr "Courbe de compression" - -#~ msgid "Color balance settings 2" -#~ msgstr "Réglage balance des couleurs 2" - -#~ msgid "Dynamic area (wide" -#~ msgstr "Zone dynamique (large)" - -#~ msgid "On for ISO 1600/3200" -#~ msgstr "Activé pour ISO 1600/3200" - -#~ msgid "ImageStabilizer" -#~ msgstr "Stabilisateur d'image" - -#~ msgid "Image stabilizer" -#~ msgstr "Stabilisateur d'image" - -#~ msgid "Data area" -#~ msgstr "Zone de données" - -#~ msgid "bytes.\n" -#~ msgstr "octets.\n" - -#~ msgid "directory with" -#~ msgstr "répertoire avec" - -#~ msgid "entry:\n" -#~ msgstr "entrée :\n" - -#~ msgid "entries:\n" -#~ msgstr "entrées :\n" - -#~ msgid "Next directory:\n" -#~ msgstr "Répertoire suivant :\n" - -#~ msgid "No next directory\n" -#~ msgstr "Pas de répertoire suivant\n" - -#~ msgid "Sub-IFD" -#~ msgstr "Sous-IFD" - -#~ msgid "Makernote" -#~ msgstr "Note du fabriquant" - -#~ msgid "component" -#~ msgstr "composant" - -#~ msgid "NEF Thumbnail Size" -#~ msgstr "Taille aperçu NEF" - -#~ msgid "NEF thumbnail size" -#~ msgstr "Taille aperçu NEF" - -#~ msgid "Erasing" -#~ msgstr "Effacement de" - -#~ msgid "MakerTagInfo registry full" -#~ msgstr "Registre MakerTagInfo plein" - -#~ msgid "Failed to create Makernote for ifdId %1" -#~ msgstr "Impossible de créer des note du fabriquant pour ifdId %1" - -#~ msgid "IFD Entries" -#~ msgstr "Entrées IFD" - -#~ msgid "Next IFD" -#~ msgstr "IFD suivant" - -#~ msgid "Writing XMP packet from" -#~ msgstr "Écriture des données XMP de" - -#~ msgid "Failed to open file " -#~ msgstr "Échec de l'ouverture du fichier" diff --git a/platform/win32/msvc/external/exiv2/po/insert-header.sin b/platform/win32/msvc/external/exiv2/po/insert-header.sin deleted file mode 100644 index b26de01f6c8..00000000000 --- a/platform/win32/msvc/external/exiv2/po/insert-header.sin +++ /dev/null @@ -1,23 +0,0 @@ -# Sed script that inserts the file called HEADER before the header entry. -# -# At each occurrence of a line starting with "msgid ", we execute the following -# commands. At the first occurrence, insert the file. At the following -# occurrences, do nothing. The distinction between the first and the following -# occurrences is achieved by looking at the hold space. -/^msgid /{ -x -# Test if the hold space is empty. -s/m/m/ -ta -# Yes it was empty. First occurrence. Read the file. -r HEADER -# Output the file's contents by reading the next line. But don't lose the -# current line while doing this. -g -N -bb -:a -# The hold space was nonempty. Following occurrences. Do nothing. -x -:b -} diff --git a/platform/win32/msvc/external/exiv2/po/pl.gmo b/platform/win32/msvc/external/exiv2/po/pl.gmo deleted file mode 100644 index 617f6ccdd9a..00000000000 Binary files a/platform/win32/msvc/external/exiv2/po/pl.gmo and /dev/null differ diff --git a/platform/win32/msvc/external/exiv2/po/pl.po b/platform/win32/msvc/external/exiv2/po/pl.po deleted file mode 100644 index 3a442d7907e..00000000000 --- a/platform/win32/msvc/external/exiv2/po/pl.po +++ /dev/null @@ -1,22794 +0,0 @@ -# translation of pl.po to Polish -# Polish translations of Exiv2. -# Copyright: -# This file is distributed under the same license as the Exiv2 package. -# -# Free Software Foundation, Inc., 2002. -# Jakub Bogusz , 2005. -# Piotr Eljasiak , 2007-2008. -# MichaÅ‚ Smoczyk , 2009. -msgid "" -msgstr "" -"Project-Id-Version: pl\n" -"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" -"POT-Creation-Date: 2012-03-23 18:06+0800\n" -"PO-Revision-Date: 2009-12-30 14:02+0100\n" -"Last-Translator: MichaÅ‚ Smoczyk \n" -"Language-Team: Polish \n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Polish\n" -"X-Poedit-Country: POLAND\n" -"X-Poedit-Bookmarks: 991,1974,-1,-1,-1,-1,-1,-1,-1,-1\n" -"X-Generator: KBabel 1.11.4\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n" -"%100<10 || n%100>=20) ? 1 : 2);\n" - -#: src/actions.cpp:253 src/actions.cpp:486 src/actions.cpp:698 -#: src/actions.cpp:715 src/actions.cpp:760 src/actions.cpp:850 -#: src/actions.cpp:993 src/actions.cpp:1035 src/actions.cpp:1104 -#: src/actions.cpp:1146 src/actions.cpp:1151 src/actions.cpp:1171 -#: src/actions.cpp:1176 src/actions.cpp:1208 src/actions.cpp:1451 -#: src/actions.cpp:1587 src/actions.cpp:1652 src/actions.cpp:1820 -msgid "Failed to open the file\n" -msgstr "Nie można otworzyć pliku\n" - -#: src/actions.cpp:263 -msgid "File name" -msgstr "Nazwa pliku" - -#: src/actions.cpp:269 -msgid "File size" -msgstr "Rozmiar pliku" - -#: src/actions.cpp:270 src/actions.cpp:422 src/actions.cpp:1019 -msgid "Bytes" -msgstr "Bajtów" - -#: src/actions.cpp:274 -msgid "MIME type" -msgstr "Typ MIME" - -#: src/actions.cpp:278 src/canonmn.cpp:785 src/minoltamn.cpp:500 -#: src/minoltamn.cpp:745 src/minoltamn.cpp:988 src/pentaxmn.cpp:892 -msgid "Image size" -msgstr "Rozmiar obrazu" - -#: src/actions.cpp:283 src/actions.cpp:513 src/actions.cpp:773 -#: src/actions.cpp:1002 src/actions.cpp:1464 src/actions.cpp:1600 -#: src/actions.cpp:1665 -msgid "No Exif data found in the file\n" -msgstr "Nie znaleziono żadnych danych Exif w pliku\n" - -#: src/actions.cpp:288 -msgid "Camera make" -msgstr "Producent aparatu" - -#: src/actions.cpp:291 -msgid "Camera model" -msgstr "Model aparatu" - -#: src/actions.cpp:294 -msgid "Image timestamp" -msgstr "Znacznik czasu zdjÄ™cia" - -#: src/actions.cpp:298 src/minoltamn.cpp:805 src/minoltamn.cpp:812 -#: src/minoltamn.cpp:1066 -msgid "Image number" -msgstr "Numer zdjÄ™cia" - -#: src/actions.cpp:303 src/minoltamn.cpp:515 src/minoltamn.cpp:798 -#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1368 src/pentaxmn.cpp:909 -#: src/pentaxmn.cpp:910 -msgid "Exposure time" -msgstr "Czas ekspozycji" - -#: src/actions.cpp:315 src/canonmn.cpp:903 src/minoltamn.cpp:1262 -#: src/tags.cpp:1627 -msgid "Aperture" -msgstr "PrzysÅ‚ona" - -#: src/actions.cpp:325 -msgid "Exposure bias" -msgstr "Odchylenie ekspozycji" - -#: src/actions.cpp:328 src/canonmn.cpp:835 src/minoltamn.cpp:874 -#: src/minoltamn.cpp:1198 src/minoltamn.cpp:2098 src/panasonicmn.cpp:69 -#: src/pentaxmn.cpp:320 src/properties.cpp:563 src/sonymn.cpp:171 -#: src/tags.cpp:827 src/tags.cpp:1431 src/tags.cpp:1652 -msgid "Flash" -msgstr "Lampa bÅ‚yskowa" - -#: src/actions.cpp:331 src/canonmn.cpp:897 src/panasonicmn.cpp:249 -msgid "Flash bias" -msgstr "Odchylenie ekspozycji bÅ‚ysku" - -#: src/actions.cpp:336 src/canonmn.cpp:201 src/minoltamn.cpp:539 -#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1372 -msgid "Focal length" -msgstr "DÅ‚ugość ogniskowej " - -#: src/actions.cpp:341 -msgid "35 mm equivalent" -msgstr "odpowiednik 35mm" - -#: src/actions.cpp:351 -msgid "Subject distance" -msgstr "OdlegÅ‚ość obiektu" - -#: src/actions.cpp:362 -msgid "ISO speed" -msgstr "CzuÅ‚ość ISO" - -#: src/actions.cpp:365 src/minoltamn.cpp:491 src/minoltamn.cpp:742 -#: src/minoltamn.cpp:985 src/minoltamn.cpp:1353 src/olympusmn.cpp:659 -#: src/sigmamn.cpp:75 -msgid "Exposure mode" -msgstr "Tryb naÅ›wietlania" - -#: src/actions.cpp:368 src/minoltamn.cpp:509 src/minoltamn.cpp:1006 -#: src/minoltamn.cpp:1395 src/olympusmn.cpp:661 src/sigmamn.cpp:78 -msgid "Metering mode" -msgstr "Tryb pomiaru" - -#: src/actions.cpp:371 src/canonmn.cpp:776 src/minoltamn.cpp:521 -#: src/olympusmn.cpp:202 src/olympusmn.cpp:663 src/panasonicmn.cpp:243 -msgid "Macro mode" -msgstr "Tryb makro" - -#: src/actions.cpp:374 src/minoltamn.cpp:133 src/minoltamn.cpp:503 -#: src/minoltamn.cpp:748 src/minoltamn.cpp:991 src/pentaxmn.cpp:889 -#: src/sonymn.cpp:275 -msgid "Image quality" -msgstr "Jakość obrazu" - -#: src/actions.cpp:377 -msgid "Exif Resolution" -msgstr "Rozdzielczość Exif" - -#: src/actions.cpp:406 src/canonmn.cpp:1140 src/minoltamn.cpp:178 -#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:994 -#: src/minoltamn.cpp:1377 src/nikonmn.cpp:226 src/nikonmn.cpp:472 -#: src/nikonmn.cpp:528 src/olympusmn.cpp:880 src/sigmamn.cpp:72 -#: src/sonymn.cpp:290 -msgid "White balance" -msgstr "Balans bieli" - -#: src/actions.cpp:409 src/minoltamn.cpp:114 src/olympusmn.cpp:426 -msgid "Thumbnail" -msgstr "Miniatura" - -#: src/actions.cpp:413 src/actions.cpp:418 src/canonmn.cpp:339 -#: src/canonmn.cpp:1048 src/canonmn.cpp:1057 src/canonmn.cpp:1109 -#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2076 -#: src/nikonmn.cpp:173 src/nikonmn.cpp:188 src/nikonmn.cpp:903 -#: src/nikonmn.cpp:926 src/nikonmn.cpp:988 src/olympusmn.cpp:142 -#: src/olympusmn.cpp:720 src/olympusmn.cpp:727 src/olympusmn.cpp:1181 -#: src/olympusmn.cpp:1240 src/olympusmn.cpp:1337 src/olympusmn.cpp:1493 -#: src/olympusmn.cpp:1502 src/pentaxmn.cpp:230 src/pentaxmn.cpp:349 -#: src/pentaxmn.cpp:350 src/properties.cpp:914 src/properties.cpp:922 -#: src/tags.cpp:1510 -msgid "None" -msgstr "Brak" - -#: src/actions.cpp:428 src/datasets.cpp:376 src/properties.cpp:357 -#: src/properties.cpp:523 src/tags.cpp:762 -msgid "Copyright" -msgstr "Prawa autorskie" - -#: src/actions.cpp:431 -msgid "Exif comment" -msgstr "Komentarz Exif" - -#: src/actions.cpp:526 -msgid "No IPTC data found in the file\n" -msgstr "Nie znaleziono żadnych danych IPTC w pliku\n" - -#: src/actions.cpp:539 -msgid "No XMP data found in the file\n" -msgstr "Nie znaleziono żadnych danych XMP w pliku\n" - -#: src/actions.cpp:638 src/actions.cpp:663 src/actions.cpp:684 -msgid "(Binary value suppressed)" -msgstr "(PominiÄ™to dane binarne)" - -#: src/actions.cpp:705 -msgid "JPEG comment" -msgstr "Komentarz JPEG" - -#: src/actions.cpp:730 -msgid "Preview" -msgstr "PodglÄ…d" - -#: src/actions.cpp:734 src/actions.cpp:1074 src/properties.cpp:426 -msgid "pixels" -msgstr "piksele" - -#: src/actions.cpp:736 src/actions.cpp:1076 -msgid "bytes" -msgstr "bajtów" - -#: src/actions.cpp:783 -msgid "Neither tag" -msgstr "Å»aden znacznik" - -#: src/actions.cpp:784 -msgid "nor" -msgstr "ani" - -#: src/actions.cpp:785 -msgid "found in the file" -msgstr "znalezione w pliku" - -#: src/actions.cpp:790 -msgid "Image file creation timestamp not set in the file" -msgstr "Znacznik czasu tworzenia obrazu nie jest ustawiony w pliku" - -#: src/actions.cpp:796 src/actions.cpp:1553 -msgid "Failed to parse timestamp" -msgstr "BÅ‚Ä…d podczas analizowania znacznika czasu" - -#: src/actions.cpp:797 -msgid "in the file" -msgstr "w pliku" - -#: src/actions.cpp:808 -msgid "Updating timestamp to" -msgstr "Uaktualnianie znacznika czasu do" - -#: src/actions.cpp:902 -msgid "Erasing thumbnail data" -msgstr "Usuwanie danych miniatury" - -#: src/actions.cpp:910 -msgid "Erasing Exif data from the file" -msgstr "Usuwanie danych Exif z pliku" - -#: src/actions.cpp:919 -msgid "Erasing IPTC data from the file" -msgstr "Usuwanie danych IPTC z pliku" - -#: src/actions.cpp:928 -msgid "Erasing JPEG comment from the file" -msgstr "Usuwanie komentarza JPEG z pliku" - -#: src/actions.cpp:937 -msgid "Erasing XMP data from the file" -msgstr "Usuwanie danych XMP z pliku" - -#: src/actions.cpp:1009 -msgid "Image does not contain an Exif thumbnail\n" -msgstr "Obrazek nie zawiera miniatury Exif\n" - -#: src/actions.cpp:1018 -msgid "Writing thumbnail" -msgstr "Zapisywanie miniatury" - -#: src/actions.cpp:1019 src/actions.cpp:1077 -msgid "to file" -msgstr "do pliku" - -#: src/actions.cpp:1025 -msgid "Exif data doesn't contain a thumbnail\n" -msgstr "Dane EXIF nie zawierajÄ… miniatury\n" - -#: src/actions.cpp:1055 src/actions.cpp:1081 -msgid "Image does not have preview" -msgstr "Obraz nie posiada podglÄ…du" - -#: src/actions.cpp:1070 -msgid "Writing preview" -msgstr "Zapisywanie podglÄ…du" - -#: src/actions.cpp:1241 -msgid "Setting JPEG comment" -msgstr "Ustawianie komentarza JPEG" - -#: src/actions.cpp:1282 -msgid "Add" -msgstr "Dodaj" - -#: src/actions.cpp:1304 src/actions.cpp:1378 -msgid "Warning" -msgstr "Ostrzeżenie" - -#: src/actions.cpp:1305 src/actions.cpp:1379 -msgid "Failed to read" -msgstr "Nie można odczytać" - -#: src/actions.cpp:1307 src/actions.cpp:1381 -msgid "value" -msgstr "wartość" - -#: src/actions.cpp:1318 -msgid "Set" -msgstr "Ustaw" - -#: src/actions.cpp:1390 -msgid "Del" -msgstr "UsuÅ„" - -#: src/actions.cpp:1422 -msgid "Reg " -msgstr "" - -#: src/actions.cpp:1506 -msgid "Timestamp of metadatum with key" -msgstr "Znacznik czasu metadaty z kluczem" - -#: src/actions.cpp:1507 -msgid "not set\n" -msgstr "nie ustawiono\n" - -#: src/actions.cpp:1512 -msgid "Adjusting" -msgstr "Dostosowywanie" - -#: src/actions.cpp:1512 -msgid "by" -msgstr "przez" - -#: src/actions.cpp:1516 src/actions.cpp:1565 -msgid "years" -msgstr "lat" - -#: src/actions.cpp:1519 -msgid "year" -msgstr "rok" - -#: src/actions.cpp:1527 -msgid "months" -msgstr "miesiÄ™cy" - -#: src/actions.cpp:1530 -msgid "month" -msgstr "miesiÄ…c" - -#: src/actions.cpp:1538 -msgid "days" -msgstr "dni" - -#: src/actions.cpp:1541 -msgid "day" -msgstr "dzieÅ„" - -#: src/actions.cpp:1547 -msgid "s" -msgstr "s" - -#: src/actions.cpp:1563 -#, fuzzy -msgid "Can't adjust timestamp by" -msgstr "Nie można dopasować znacznika czasu do" - -#: src/actions.cpp:1572 src/actions.cpp:1844 src/actions.cpp:1852 -#: src/actions.cpp:1860 src/actions.cpp:1869 src/actions.cpp:1979 -msgid "to" -msgstr "do" - -#: src/actions.cpp:1607 -msgid "Standard Exif ISO tag exists; not modified\n" -msgstr "Standardowy znacznik Exif ISO istnieje, wiÄ™c nie zmieniono go\n" - -#: src/actions.cpp:1615 -msgid "Setting Exif ISO value to" -msgstr "Ustawianie wartoÅ›ci Exif ISO na" - -#: src/actions.cpp:1671 -#, fuzzy -msgid "No Exif user comment found" -msgstr "Komentarz Exif" - -#: src/actions.cpp:1679 -msgid "Found Exif user comment with unexpected value type" -msgstr "" - -#: src/actions.cpp:1686 -msgid "No Exif UNICODE user comment found" -msgstr "" - -#: src/actions.cpp:1692 -#, fuzzy -msgid "Setting Exif UNICODE user comment to" -msgstr "Ustawianie wartoÅ›ci Exif ISO na" - -#: src/actions.cpp:1843 -msgid "Writing Exif data from" -msgstr "Zapisywanie danych Exif z" - -#: src/actions.cpp:1851 -msgid "Writing IPTC data from" -msgstr "Zapisywanie danych IPTC z" - -#: src/actions.cpp:1859 -msgid "Writing XMP data from" -msgstr "Zapisywanie danych XMP z" - -#: src/actions.cpp:1868 -msgid "Writing JPEG comment from" -msgstr "Zapisywanie komentarza JPEG z" - -#: src/actions.cpp:1878 -msgid "Could not write metadata to file" -msgstr "Nie można zapisać metadanych do pliku" - -#: src/actions.cpp:1905 -msgid "Filename format yields empty filename for the file" -msgstr "Format pliku zwróciÅ‚ pustÄ… nazwÄ™ dla pliku" - -#: src/actions.cpp:1914 -msgid "This file already has the correct name" -msgstr "Ten plik posiada już poprawnÄ… nazwÄ™" - -#: src/actions.cpp:1938 src/exiv2.cpp:168 -msgid "File" -msgstr "Plik" - -#: src/actions.cpp:1939 -msgid "exists. [O]verwrite, [r]ename or [s]kip?" -msgstr "istnieje: (O) Nadpisać, (R) Zmienić nazwÄ™ czy (S) Anulować?" - -#: src/actions.cpp:1967 -msgid "Renaming file to" -msgstr "Zmianie nazwy pliku na" - -#: src/actions.cpp:1969 -msgid "updating timestamp" -msgstr "aktualizacja znacznika czasu" - -#: src/actions.cpp:1978 -msgid "Failed to rename" -msgstr "Nie można zmienić nazwy" - -#: src/actions.cpp:2000 -msgid "Overwrite" -msgstr "Nadpisz" - -#: src/canonmn.cpp:58 src/canonmn.cpp:186 src/canonmn.cpp:245 -#: src/canonmn.cpp:260 src/canonmn.cpp:734 src/canonmn.cpp:747 -#: src/canonmn.cpp:1009 src/canonmn.cpp:1032 src/canonmn.cpp:1041 -#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 -#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 -#: src/minoltamn.cpp:1134 src/minoltamn.cpp:1275 src/minoltamn.cpp:1337 -#: src/minoltamn.cpp:1910 src/minoltamn.cpp:1924 src/minoltamn.cpp:1972 -#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 -#: src/nikonmn.cpp:204 src/nikonmn.cpp:641 src/nikonmn.cpp:666 -#: src/nikonmn.cpp:715 src/nikonmn.cpp:750 src/nikonmn.cpp:836 -#: src/nikonmn.cpp:881 src/nikonmn.cpp:968 src/nikonmn.cpp:1210 -#: src/nikonmn.cpp:1219 src/olympusmn.cpp:59 src/olympusmn.cpp:79 -#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 -#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:586 -#: src/olympusmn.cpp:648 src/olympusmn.cpp:912 src/olympusmn.cpp:1133 -#: src/olympusmn.cpp:1431 src/olympusmn.cpp:1432 src/olympusmn.cpp:1471 -#: src/panasonicmn.cpp:87 src/panasonicmn.cpp:94 src/panasonicmn.cpp:100 -#: src/panasonicmn.cpp:145 src/panasonicmn.cpp:154 src/panasonicmn.cpp:183 -#: src/panasonicmn.cpp:210 src/pentaxmn.cpp:183 src/pentaxmn.cpp:292 -#: src/pentaxmn.cpp:713 src/pentaxmn.cpp:719 src/sonymn.cpp:56 -#: src/sonymn.cpp:87 src/sonymn.cpp:141 src/sonymn.cpp:149 src/sonymn.cpp:156 -#: src/sonymn.cpp:199 src/sonymn.cpp:206 src/sonymn.cpp:237 src/sonymn.cpp:500 -msgid "Off" -msgstr "WyÅ‚Ä…czony" - -#: src/canonmn.cpp:59 src/canonmn.cpp:244 src/canonmn.cpp:262 -#: src/canonmn.cpp:735 src/canonmn.cpp:1035 src/fujimn.cpp:57 -#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 -#: src/minoltamn.cpp:1911 src/minoltamn.cpp:1923 src/nikonmn.cpp:63 -#: src/nikonmn.cpp:640 src/nikonmn.cpp:716 src/nikonmn.cpp:717 -#: src/nikonmn.cpp:1220 src/olympusmn.cpp:60 src/olympusmn.cpp:80 -#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 -#: src/olympusmn.cpp:1472 src/panasonicmn.cpp:93 src/pentaxmn.cpp:186 -#: src/pentaxmn.cpp:293 src/pentaxmn.cpp:714 src/sonymn.cpp:157 -#: src/sonymn.cpp:207 src/sonymn.cpp:238 -msgid "On" -msgstr "WÅ‚Ä…czony" - -#: src/canonmn.cpp:69 -msgid "PowerShot A30" -msgstr "PowerShot A30" - -#: src/canonmn.cpp:70 -msgid "PowerShot S300 / Digital IXUS 300 / IXY Digital 300" -msgstr "PowerShot S300 / Digital IXUS 300 / IXY Digital 300" - -#: src/canonmn.cpp:71 -msgid "PowerShot A20" -msgstr "PowerShot A20" - -#: src/canonmn.cpp:72 -msgid "PowerShot A10" -msgstr "PowerShot A10" - -#: src/canonmn.cpp:73 -msgid "PowerShot S110 / Digital IXUS v / IXY Digital 200" -msgstr "PowerShot S110 / Digital IXUS v / IXY Digital 200" - -#: src/canonmn.cpp:74 -msgid "PowerShot G2" -msgstr "PowerShot G2" - -#: src/canonmn.cpp:75 -msgid "PowerShot S40" -msgstr "PowerShot S40" - -#: src/canonmn.cpp:76 -msgid "PowerShot S30" -msgstr "PowerShot S30" - -#: src/canonmn.cpp:77 -msgid "PowerShot A40" -msgstr "PowerShot A40" - -#: src/canonmn.cpp:78 -msgid "EOS D30" -msgstr "EOS D30" - -#: src/canonmn.cpp:79 -msgid "PowerShot A100" -msgstr "PowerShot A100" - -#: src/canonmn.cpp:80 -msgid "PowerShot S200 / Digital IXUS v2 / IXY Digital 200a" -msgstr "PowerShot S200 / Digital IXUS v2 / IXY Digital 200a" - -#: src/canonmn.cpp:81 -msgid "PowerShot A200" -msgstr "PowerShot A200" - -#: src/canonmn.cpp:82 -msgid "PowerShot S330 / Digital IXUS 330 / IXY Digital 300a" -msgstr "PowerShot S330 / Digital IXUS 330 / IXY Digital 300a" - -#: src/canonmn.cpp:83 -msgid "PowerShot G3" -msgstr "PowerShot G3" - -#: src/canonmn.cpp:84 -msgid "PowerShot S45" -msgstr "PowerShot S45" - -#: src/canonmn.cpp:85 -msgid "PowerShot SD100 / Digital IXUS II / IXY Digital 30" -msgstr "PowerShot SD100 / Digital IXUS II / IXY Digital 30" - -#: src/canonmn.cpp:86 -msgid "PowerShot S230 / Digital IXUS v3 / IXY Digital 320" -msgstr "PowerShot S230 / Digital IXUS v3 / IXY Digital 320" - -#: src/canonmn.cpp:87 -msgid "PowerShot A70" -msgstr "PowerShot A70" - -#: src/canonmn.cpp:88 -msgid "PowerShot A60" -msgstr "PowerShot A60" - -#: src/canonmn.cpp:89 -msgid "PowerShot S400 / Digital IXUS 400 / IXY Digital 400" -msgstr "PowerShot S400 / Digital IXUS 400 / IXY Digital 400" - -#: src/canonmn.cpp:90 -msgid "PowerShot G5" -msgstr "PowerShot G5" - -#: src/canonmn.cpp:91 -msgid "PowerShot A300" -msgstr "PowerShot A300" - -#: src/canonmn.cpp:92 -msgid "PowerShot S50" -msgstr "PowerShot S50" - -#: src/canonmn.cpp:93 -msgid "PowerShot A80" -msgstr "PowerShot A80" - -#: src/canonmn.cpp:94 -msgid "PowerShot SD10 / Digital IXUS i / IXY Digital L" -msgstr "PowerShot SD10 / Digital IXUS i / IXY Digital L" - -#: src/canonmn.cpp:95 -msgid "PowerShot S1 IS" -msgstr "PowerShot S1 IS" - -#: src/canonmn.cpp:96 -msgid "PowerShot Pro1" -msgstr "PowerShot Pro1" - -#: src/canonmn.cpp:97 -msgid "PowerShot S70" -msgstr "PowerShot S70" - -#: src/canonmn.cpp:98 -msgid "PowerShot S60" -msgstr "PowerShot S60" - -#: src/canonmn.cpp:99 -msgid "PowerShot G6" -msgstr "PowerShot G6" - -#: src/canonmn.cpp:100 -msgid "PowerShot S500 / Digital IXUS 500 / IXY Digital 500" -msgstr "PowerShot S500 / Digital IXUS 500 / IXY Digital 500" - -#: src/canonmn.cpp:101 -msgid "PowerShot A75" -msgstr "PowerShot A75" - -#: src/canonmn.cpp:102 -msgid "PowerShot SD110 / Digital IXUS IIs / IXY Digital 30a" -msgstr "PowerShot SD110 / Digital IXUS IIs / IXY Digital 30a" - -#: src/canonmn.cpp:103 -msgid "PowerShot A400" -msgstr "PowerShot A400" - -#: src/canonmn.cpp:104 -msgid "PowerShot A310" -msgstr "PowerShot A310" - -#: src/canonmn.cpp:105 -msgid "PowerShot A85" -msgstr "PowerShot A85" - -#: src/canonmn.cpp:106 -msgid "PowerShot S410 / Digital IXUS 430 / IXY Digital 450" -msgstr "PowerShot S410 / Digital IXUS 430 / IXY Digital 450" - -#: src/canonmn.cpp:107 -msgid "PowerShot A95" -msgstr "PowerShot A95" - -#: src/canonmn.cpp:108 -msgid "PowerShot SD300 / Digital IXUS 40 / IXY Digital 50" -msgstr "PowerShot SD300 / Digital IXUS 40 / IXY Digital 50" - -#: src/canonmn.cpp:109 -msgid "PowerShot SD200 / Digital IXUS 30 / IXY Digital 40" -msgstr "PowerShot SD200 / Digital IXUS 30 / IXY Digital 40" - -#: src/canonmn.cpp:110 -msgid "PowerShot A520" -msgstr "PowerShot A520" - -#: src/canonmn.cpp:111 -msgid "PowerShot A510" -msgstr "PowerShot A510" - -#: src/canonmn.cpp:112 -msgid "PowerShot SD20 / Digital IXUS i5 / IXY Digital L2" -msgstr "PowerShot SD20 / Digital IXUS i5 / IXY Digital L2" - -#: src/canonmn.cpp:113 -msgid "PowerShot S2 IS" -msgstr "PowerShot S2 IS" - -#: src/canonmn.cpp:114 -msgid "PowerShot SD430 / IXUS Wireless / IXY Wireless" -msgstr "PowerShot SD430 / IXUS Wireless / IXY Wireless" - -#: src/canonmn.cpp:115 -msgid "PowerShot SD500 / Digital IXUS 700 / IXY Digital 600" -msgstr "PowerShot SD500 / Digital IXUS 700 / IXY Digital 600" - -#: src/canonmn.cpp:116 -msgid "EOS D60" -msgstr "EOS D60" - -#: src/canonmn.cpp:117 -msgid "PowerShot SD30 / Digital IXUS i zoom / IXY Digital L3" -msgstr "PowerShot SD30 / Digital IXUS i zoom / IXY Digital L3" - -#: src/canonmn.cpp:118 -msgid "PowerShot A430" -msgstr "PowerShot A430" - -#: src/canonmn.cpp:119 -msgid "PowerShot A410" -msgstr "PowerShot A410" - -#: src/canonmn.cpp:120 -msgid "PowerShot S80" -msgstr "PowerShot S80" - -#: src/canonmn.cpp:121 -msgid "PowerShot A620" -msgstr "PowerShot A620" - -#: src/canonmn.cpp:122 -msgid "PowerShot A610" -msgstr "PowerShot A610" - -#: src/canonmn.cpp:123 -msgid "PowerShot SD630 / Digital IXUS 65 / IXY Digital 80" -msgstr "PowerShot SD630 / Digital IXUS 65 / IXY Digital 80" - -#: src/canonmn.cpp:124 -msgid "PowerShot SD450 / Digital IXUS 55 / IXY Digital 60" -msgstr "PowerShot SD450 / Digital IXUS 55 / IXY Digital 60" - -#: src/canonmn.cpp:125 -msgid "PowerShot TX1" -msgstr "PowerShot TX1" - -#: src/canonmn.cpp:126 -msgid "PowerShot SD400 / Digital IXUS 50 / IXY Digital 55" -msgstr "PowerShot SD400 / Digital IXUS 50 / IXY Digital 55" - -#: src/canonmn.cpp:127 -msgid "PowerShot A420" -msgstr "PowerShot A420" - -#: src/canonmn.cpp:128 -msgid "PowerShot SD900 / Digital IXUS 900 Ti / IXY Digital 1000" -msgstr "PowerShot SD900 / Digital IXUS 900 Ti / IXY Digital 1000" - -#: src/canonmn.cpp:129 -msgid "PowerShot SD550 / Digital IXUS 750 / IXY Digital 700" -msgstr "PowerShot SD550 / Digital IXUS 750 / IXY Digital 700" - -#: src/canonmn.cpp:130 -msgid "PowerShot A700" -msgstr "PowerShot A700" - -#: src/canonmn.cpp:131 -msgid "PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS" -msgstr "PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS" - -#: src/canonmn.cpp:132 -msgid "PowerShot S3 IS" -msgstr "PowerShot S3 IS" - -#: src/canonmn.cpp:133 -msgid "PowerShot A540" -msgstr "PowerShot A540" - -#: src/canonmn.cpp:134 -msgid "PowerShot SD600 / Digital IXUS 60 / IXY Digital 70" -msgstr "PowerShot SD600 / Digital IXUS 60 / IXY Digital 70" - -#: src/canonmn.cpp:135 -msgid "PowerShot G7" -msgstr "PowerShot G7" - -#: src/canonmn.cpp:136 -msgid "PowerShot A530" -msgstr "PowerShot A530" - -#: src/canonmn.cpp:137 -msgid "PowerShot SD800 IS / Digital IXUS 850 IS / IXY Digital 900 IS" -msgstr "PowerShot SD800 IS / Digital IXUS 850 IS / IXY Digital 900 IS" - -#: src/canonmn.cpp:138 -msgid "PowerShot SD40 / Digital IXUS i7 / IXY Digital L4" -msgstr "PowerShot SD40 / Digital IXUS i7 / IXY Digital L4" - -#: src/canonmn.cpp:139 -msgid "PowerShot A710 IS" -msgstr "PowerShot A710 IS" - -#: src/canonmn.cpp:140 -msgid "PowerShot A640" -msgstr "PowerShot A640" - -#: src/canonmn.cpp:141 -msgid "PowerShot A630" -msgstr "PowerShot A630" - -#: src/canonmn.cpp:142 -msgid "PowerShot S5 IS" -msgstr "PowerShot S5 IS" - -#: src/canonmn.cpp:143 -msgid "PowerShot A460" -msgstr "PowerShot A460" - -#: src/canonmn.cpp:144 -msgid "PowerShot SD850 IS / Digital IXUS 950 IS" -msgstr "PowerShot SD850 IS / Digital IXUS 950 IS" - -#: src/canonmn.cpp:145 -msgid "PowerShot A570 IS" -msgstr "PowerShot A570 IS" - -#: src/canonmn.cpp:146 -msgid "PowerShot A560" -msgstr "PowerShot A560" - -#: src/canonmn.cpp:147 -msgid "PowerShot SD750 / Digital IXUS 75 / IXY Digital 90" -msgstr "PowerShot SD750 / Digital IXUS 75 / IXY Digital 90" - -#: src/canonmn.cpp:148 -msgid "PowerShot SD1000 / Digital IXUS 70 / IXY Digital 10" -msgstr "PowerShot SD1000 / Digital IXUS 70 / IXY Digital 10" - -#: src/canonmn.cpp:149 -msgid "PowerShot A550" -msgstr "PowerShot A550" - -#: src/canonmn.cpp:150 -msgid "PowerShot A450" -msgstr "PowerShot A450" - -#: src/canonmn.cpp:151 -msgid "PowerShot Pro90 IS" -msgstr "PowerShot Pro90 IS" - -#: src/canonmn.cpp:152 -msgid "PowerShot G1" -msgstr "PowerShot G1" - -#: src/canonmn.cpp:153 -msgid "PowerShot S100 / Digital IXUS / IXY Digital" -msgstr "PowerShot S100 / Digital IXUS / IXY Digital" - -#: src/canonmn.cpp:154 -msgid "HV10" -msgstr "HV10" - -#: src/canonmn.cpp:155 -msgid "iVIS DC50" -msgstr "iVIS DC50" - -#: src/canonmn.cpp:156 -msgid "iVIS HV20" -msgstr "iVIS HV20" - -#: src/canonmn.cpp:157 -msgid "EOS-1D" -msgstr "EOS-1D" - -#: src/canonmn.cpp:158 -msgid "EOS-1DS" -msgstr "EOS-1DS" - -#: src/canonmn.cpp:159 -msgid "EOS 10D" -msgstr "EOS 10D" - -#: src/canonmn.cpp:160 -msgid "EOS-1D Mark III" -msgstr "EOS-1D Mark III" - -#: src/canonmn.cpp:161 -msgid "EOS Digital Rebel / 300D / Kiss Digital" -msgstr "EOS Digital Rebel / 300D / Kiss Digital" - -#: src/canonmn.cpp:162 -msgid "EOS-1D Mark II" -msgstr "EOS-1D Mark II" - -#: src/canonmn.cpp:163 -msgid "EOS 20D" -msgstr "EOS 20D" - -#: src/canonmn.cpp:164 -msgid "EOS-1Ds Mark II" -msgstr "EOS-1Ds Mark II" - -#: src/canonmn.cpp:165 -msgid "EOS Digital Rebel XT / 350D / Kiss Digital N" -msgstr "EOS Digital Rebel XT / 350D / Kiss Digital N" - -#: src/canonmn.cpp:166 -msgid "EOS 5D" -msgstr "EOS 5D" - -#: src/canonmn.cpp:167 -msgid "EOS-1D Mark II N" -msgstr "EOS-1D Mark II N" - -#: src/canonmn.cpp:168 -msgid "EOS 30D" -msgstr "EOS 30D" - -#: src/canonmn.cpp:169 -msgid "EOS Digital Rebel XTi / 400D / Kiss Digital X" -msgstr "EOS Digital Rebel XTi / 400D / Kiss Digital X" - -#: src/canonmn.cpp:170 -#, fuzzy -msgid "EOS 7D" -msgstr "EOS 5D" - -#: src/canonmn.cpp:171 -#, fuzzy -msgid "EOS Rebel T1i / 500D / Kiss X3" -msgstr "EOS Digital Rebel XTi / 400D / Kiss Digital X" - -#: src/canonmn.cpp:172 -#, fuzzy -msgid "EOS Rebel XS / 1000D / Kiss F" -msgstr "EOS Digital Rebel / 300D / Kiss Digital" - -#: src/canonmn.cpp:173 -#, fuzzy -msgid "EOS 50D" -msgstr "EOS 5D" - -#: src/canonmn.cpp:174 -#, fuzzy -msgid "EOS Rebel T2i / 550D / Kiss X4" -msgstr "EOS Digital Rebel XTi / 400D / Kiss Digital X" - -#: src/canonmn.cpp:175 -#, fuzzy -msgid "EOS-1D Mark IV" -msgstr "EOS-1D Mark II" - -#: src/canonmn.cpp:180 -#, fuzzy -msgid "Format 1" -msgstr "Format" - -#: src/canonmn.cpp:181 -#, fuzzy -msgid "Format 2" -msgstr "Format" - -#: src/canonmn.cpp:187 src/nikonmn.cpp:1211 -msgid "On (1)" -msgstr "WÅ‚Ä…czone (1)" - -#: src/canonmn.cpp:188 src/nikonmn.cpp:1212 -msgid "On (2)" -msgstr "WÅ‚Ä…czone (2)" - -#: src/canonmn.cpp:193 src/minoltamn.cpp:1142 src/nikonmn.cpp:136 -#: src/olympusmn.cpp:595 src/olympusmn.cpp:774 src/olympusmn.cpp:839 -#: src/pentaxmn.cpp:548 src/tags.cpp:1452 -msgid "sRGB" -msgstr "sRGB" - -#: src/canonmn.cpp:194 src/canonmn.cpp:1113 src/minoltamn.cpp:359 -#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 -#: src/minoltamn.cpp:1143 src/nikonmn.cpp:137 src/olympusmn.cpp:596 -#: src/olympusmn.cpp:775 src/olympusmn.cpp:840 src/pentaxmn.cpp:549 -#: src/sonymn.cpp:482 src/sonymn.cpp:507 src/tags.cpp:1453 -msgid "Adobe RGB" -msgstr "Adobe RGB" - -#: src/canonmn.cpp:199 src/canonmn.cpp:202 src/canonmn.cpp:227 -#: src/canonmn.cpp:228 src/canonmn.cpp:229 src/canonmn.cpp:781 -#: src/canonmn.cpp:783 src/canonmn.cpp:784 src/canonmn.cpp:796 -#: src/canonmn.cpp:805 src/canonmn.cpp:806 src/canonmn.cpp:813 -#: src/canonmn.cpp:883 src/canonmn.cpp:888 src/canonmn.cpp:890 -#: src/canonmn.cpp:892 src/canonmn.cpp:893 src/canonmn.cpp:894 -#: src/canonmn.cpp:895 src/canonmn.cpp:898 src/canonmn.cpp:899 -#: src/canonmn.cpp:900 src/canonmn.cpp:902 src/canonmn.cpp:906 -#: src/canonmn.cpp:907 src/canonmn.cpp:908 src/fujimn.cpp:214 -#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:238 -#: src/nikonmn.cpp:303 src/nikonmn.cpp:457 src/nikonmn.cpp:478 -#: src/nikonmn.cpp:487 src/nikonmn.cpp:533 src/nikonmn.cpp:585 -#: src/nikonmn.cpp:588 src/nikonmn.cpp:591 src/nikonmn.cpp:1003 -#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1495 src/nikonmn.cpp:2554 -#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 -#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 -#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 -#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 -#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 -#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 -#: src/olympusmn.cpp:1039 src/panasonicmn.cpp:239 src/panasonicmn.cpp:247 -#: src/panasonicmn.cpp:252 src/panasonicmn.cpp:260 src/panasonicmn.cpp:262 -#: src/panasonicmn.cpp:280 src/pentaxmn.cpp:323 src/properties.cpp:809 -#: src/properties.cpp:816 src/sonymn.cpp:293 src/sonymn.cpp:312 -#: src/sonymn.cpp:318 src/sonymn.cpp:321 src/sonymn.cpp:330 src/sonymn.cpp:333 -#: src/sonymn.cpp:336 src/sonymn.cpp:339 src/tags.cpp:1414 src/tags.cpp:1427 -#: src/tags.cpp:1533 src/tags.cpp:2565 src/tags.cpp:2678 -msgid "Unknown" -msgstr "Brak informacji" - -#: src/canonmn.cpp:200 src/olympusmn.cpp:450 src/sonymn.cpp:286 -#: src/sonymn.cpp:287 -msgid "Camera Settings" -msgstr "Ustawienia aparatu" - -#: src/canonmn.cpp:200 -msgid "Various camera settings" -msgstr "Różne ustawienia aparatu" - -#: src/canonmn.cpp:201 src/minoltamn.cpp:538 src/nikonmn.cpp:1347 -#: src/nikonmn.cpp:1372 src/properties.cpp:564 src/tags.cpp:828 -#: src/tags.cpp:1655 -msgid "Focal Length" -msgstr "Ogniskowa" - -#: src/canonmn.cpp:203 src/sonymn.cpp:345 -msgid "Shot Info" -msgstr "Informacje o zdjÄ™ciu" - -#: src/canonmn.cpp:203 -msgid "Shot information" -msgstr "Informacje o zdjÄ™ciu" - -#: src/canonmn.cpp:204 src/olympusmn.cpp:101 src/olympusmn.cpp:1152 -#: src/sonymn.cpp:124 src/sonymn.cpp:308 src/sonymn.cpp:309 -msgid "Panorama" -msgstr "panorama" - -#: src/canonmn.cpp:205 src/datasets.cpp:396 src/properties.cpp:761 -msgid "Image Type" -msgstr "Rodzaj obrazu" - -#: src/canonmn.cpp:205 -msgid "Image type" -msgstr "Rodzaj obrazu" - -#: src/canonmn.cpp:206 src/panasonicmn.cpp:237 -msgid "Firmware Version" -msgstr "Wersja firmware" - -#: src/canonmn.cpp:206 src/panasonicmn.cpp:237 -msgid "Firmware version" -msgstr "Wersja firmware" - -#: src/canonmn.cpp:207 src/canonmn.cpp:1066 src/nikonmn.cpp:869 -msgid "File Number" -msgstr "Numer pliku" - -#: src/canonmn.cpp:207 src/nikonmn.cpp:869 -msgid "File number" -msgstr "Numer pliku" - -#: src/canonmn.cpp:208 -msgid "Owner Name" -msgstr "Nazwa wÅ‚aÅ›ciciela" - -#: src/canonmn.cpp:209 src/fujimn.cpp:182 src/nikonmn.cpp:550 -#: src/olympusmn.cpp:741 src/pentaxmn.cpp:1120 src/pentaxmn.cpp:1121 -#: src/sigmamn.cpp:56 -msgid "Serial Number" -msgstr "Numer seryjny" - -#: src/canonmn.cpp:209 src/sigmamn.cpp:57 -msgid "Camera serial number" -msgstr "Numer seryjny aparatu" - -#: src/canonmn.cpp:210 -#, fuzzy -msgid "Camera Info" -msgstr "Informacja o aparacie" - -#: src/canonmn.cpp:210 -#, fuzzy -msgid "Camera info" -msgstr "Informacja o aparacie" - -#: src/canonmn.cpp:211 src/canonmn.cpp:223 -msgid "Custom Functions" -msgstr "Funkcje użytkownika" - -#: src/canonmn.cpp:212 -msgid "ModelID" -msgstr "ID modelu" - -#: src/canonmn.cpp:212 -msgid "Model ID" -msgstr "Identyfikator modelu" - -#: src/canonmn.cpp:213 src/olympusmn.cpp:219 -msgid "Picture Info" -msgstr "Informacje o zdjÄ™ciu" - -#: src/canonmn.cpp:213 -msgid "Picture info" -msgstr "Informacje o zdjÄ™ciu" - -#: src/canonmn.cpp:214 -#, fuzzy -msgid "Thumbnail Image Valid Area" -msgstr "Obraz miniatury" - -#: src/canonmn.cpp:214 -#, fuzzy -msgid "Thumbnail image valid area" -msgstr "Obraz miniatury" - -#: src/canonmn.cpp:215 -#, fuzzy -msgid "Serial Number Format" -msgstr "Numer seryjny 2" - -#: src/canonmn.cpp:215 -#, fuzzy -msgid "Serial number format" -msgstr "Numer seryjny 2" - -#: src/canonmn.cpp:216 src/minoltamn.cpp:2042 src/olympusmn.cpp:110 -#: src/olympusmn.cpp:503 src/pentaxmn.cpp:202 -msgid "Super Macro" -msgstr "Super Makro" - -#: src/canonmn.cpp:216 src/canonmn.cpp:323 src/canonmn.cpp:393 -#: src/olympusmn.cpp:81 -msgid "Super macro" -msgstr "Super makro" - -#: src/canonmn.cpp:217 src/nikonmn.cpp:567 -#, fuzzy -msgid "AF Info" -msgstr "Informacja AF" - -#: src/canonmn.cpp:217 src/nikonmn.cpp:567 -msgid "AF info" -msgstr "Informacja AF" - -#: src/canonmn.cpp:218 -msgid "Original Decision Data Offset" -msgstr "" - -#: src/canonmn.cpp:218 -msgid "Original decision data offset" -msgstr "" - -#: src/canonmn.cpp:219 -msgid "White Balance Table" -msgstr "Tablica balansu bieli" - -#: src/canonmn.cpp:219 -msgid "White balance table" -msgstr "Tablica balansu bieli" - -#: src/canonmn.cpp:220 -#, fuzzy -msgid "LensModel" -msgstr "Model obiektywu" - -#: src/canonmn.cpp:221 src/olympusmn.cpp:742 src/panasonicmn.cpp:250 -msgid "Internal Serial Number" -msgstr "WewnÄ™trzny numer seryjny" - -#: src/canonmn.cpp:221 src/olympusmn.cpp:742 -msgid "Internal serial number" -msgstr "WewnÄ™trzny numer seryjny" - -#: src/canonmn.cpp:222 -msgid "Dust Removal Data" -msgstr "" - -#: src/canonmn.cpp:222 -msgid "Dust removal data" -msgstr "" - -#: src/canonmn.cpp:223 -#, fuzzy -msgid "Custom functions" -msgstr "Funkcje użytkownika" - -#: src/canonmn.cpp:224 -#, fuzzy -msgid "Processing Info" -msgstr "Program" - -#: src/canonmn.cpp:224 -#, fuzzy -msgid "Processing info" -msgstr "Program" - -#: src/canonmn.cpp:225 -#, fuzzy -msgid "Measured Color" -msgstr "Barwa naturalna" - -#: src/canonmn.cpp:225 -#, fuzzy -msgid "Measured color" -msgstr "Naturalny (kolorowy)" - -#: src/canonmn.cpp:226 -#, fuzzy -msgid "ColorSpace" -msgstr "PrzestrzeÅ„ kolorów" - -#: src/canonmn.cpp:230 -#, fuzzy -msgid "VRD Offset" -msgstr "PrzesuniÄ™cie" - -#: src/canonmn.cpp:230 -#, fuzzy -msgid "VRD offset" -msgstr "przesuniÄ™cie" - -#: src/canonmn.cpp:231 -#, fuzzy -msgid "Sensor Info" -msgstr "Obiektyw" - -#: src/canonmn.cpp:231 -#, fuzzy -msgid "Sensor info" -msgstr "Informacje o zdjÄ™ciu" - -#: src/canonmn.cpp:232 -#, fuzzy -msgid "Color Data" -msgstr "Matryca kolorów" - -#: src/canonmn.cpp:232 -#, fuzzy -msgid "Color data" -msgstr "Moje dane kolorów" - -#: src/canonmn.cpp:234 -msgid "Unknown CanonMakerNote tag" -msgstr "Nieznany znacznik CanonMakerNote" - -#: src/canonmn.cpp:250 src/minoltamn.cpp:78 src/minoltamn.cpp:246 -#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2060 -msgid "Economy" -msgstr "Ekonomiczny" - -#: src/canonmn.cpp:251 src/canonmn.cpp:349 src/fujimn.cpp:64 src/fujimn.cpp:84 -#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 -#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 -#: src/nikonmn.cpp:207 src/nikonmn.cpp:428 src/olympusmn.cpp:150 -#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1108 -#: src/olympusmn.cpp:1150 src/panasonicmn.cpp:56 src/panasonicmn.cpp:101 -#: src/panasonicmn.cpp:161 src/panasonicmn.cpp:197 src/pentaxmn.cpp:198 -#: src/pentaxmn.cpp:343 src/pentaxmn.cpp:356 src/pentaxmn.cpp:367 -#: src/sonymn.cpp:134 src/sonymn.cpp:216 src/sonymn.cpp:222 src/tags.cpp:1519 -#: src/tags.cpp:1526 -msgid "Normal" -msgstr "Normalna" - -#: src/canonmn.cpp:252 src/minoltamn.cpp:76 src/minoltamn.cpp:244 -#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2004 -#: src/minoltamn.cpp:2058 src/sonymn.cpp:135 -msgid "Fine" -msgstr "Dobra" - -#: src/canonmn.cpp:253 src/olympusmn.cpp:643 src/pentaxmn.cpp:156 -msgid "RAW" -msgstr "RAW" - -#: src/canonmn.cpp:254 -msgid "Superfine" -msgstr "Bardzo dobra" - -#: src/canonmn.cpp:255 -msgid "Normal Movie" -msgstr "Normalny film" - -#: src/canonmn.cpp:261 src/canonmn.cpp:357 src/canonmn.cpp:385 -#: src/canonmn.cpp:830 src/canonmn.cpp:1036 src/fujimn.cpp:71 -#: src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 -#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 -#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 -#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1119 -#: src/minoltamn.cpp:1182 src/minoltamn.cpp:1235 src/minoltamn.cpp:1976 -#: src/minoltamn.cpp:2043 src/minoltamn.cpp:2092 src/nikonmn.cpp:81 -#: src/nikonmn.cpp:445 src/olympusmn.cpp:94 src/olympusmn.cpp:156 -#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:605 -#: src/olympusmn.cpp:1196 src/olympusmn.cpp:1202 src/olympusmn.cpp:1203 -#: src/panasonicmn.cpp:64 src/panasonicmn.cpp:77 src/pentaxmn.cpp:56 -#: src/pentaxmn.cpp:211 src/pentaxmn.cpp:311 src/sonymn.cpp:57 -#: src/sonymn.cpp:90 src/sonymn.cpp:105 src/sonymn.cpp:163 src/sonymn.cpp:200 -#: src/sonymn.cpp:499 src/sonymn.cpp:516 src/tags.cpp:1403 src/tags.cpp:1488 -#: src/tags.cpp:1495 -msgid "Auto" -msgstr "Auto" - -#: src/canonmn.cpp:263 src/olympusmn.cpp:532 -msgid "Red-eye" -msgstr "Redukcja czerwonych oczu" - -#: src/canonmn.cpp:264 -msgid "Slow sync" -msgstr "Synchronizacja z dÅ‚ugimi czasami" - -#: src/canonmn.cpp:265 -msgid "Auto + red-eye" -msgstr "Automatycznie + redukcja czerwonych oczu" - -#: src/canonmn.cpp:266 -msgid "On + red-eye" -msgstr "Tak, redukcja czerwonych oczu" - -#: src/canonmn.cpp:267 src/canonmn.cpp:268 src/minoltamn.cpp:1339 -#: src/nikonmn.cpp:904 src/olympusmn.cpp:144 -msgid "External" -msgstr "ZewnÄ™trzny" - -#: src/canonmn.cpp:273 -#, fuzzy -msgid "Single / timer" -msgstr "Pojedynczy / czasowo" - -#: src/canonmn.cpp:274 src/canonmn.cpp:288 src/canonmn.cpp:720 -#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1097 -#: src/minoltamn.cpp:1149 src/nikonmn.cpp:151 src/nikonmn.cpp:162 -#: src/pentaxmn.cpp:534 -msgid "Continuous" -msgstr "CiÄ…gÅ‚y" - -#: src/canonmn.cpp:275 src/olympusmn.cpp:103 -msgid "Movie" -msgstr "Film" - -#: src/canonmn.cpp:276 -msgid "Continuous, speed priority" -msgstr "CiÄ…gÅ‚y, priorytet szybkoÅ›ci" - -#: src/canonmn.cpp:277 -#, fuzzy -msgid "Continuous, low" -msgstr "CiÄ…gÅ‚y, niski" - -#: src/canonmn.cpp:278 -#, fuzzy -msgid "Continuous, high" -msgstr "CiÄ…gÅ‚y, wysoki" - -#: src/canonmn.cpp:283 -msgid "One shot AF" -msgstr "One shot AF" - -#: src/canonmn.cpp:284 -msgid "AI servo AF" -msgstr "AI servo AF" - -#: src/canonmn.cpp:285 -msgid "AI focus AF" -msgstr "AI focus AF" - -#: src/canonmn.cpp:286 src/canonmn.cpp:289 src/minoltamn.cpp:374 -msgid "Manual focus" -msgstr "RÄ™czne ostrzenie" - -#: src/canonmn.cpp:287 src/canonmn.cpp:719 src/sonymn.cpp:231 -msgid "Single" -msgstr "Pojedynczy" - -#: src/canonmn.cpp:290 src/canonmn.cpp:291 src/canonmn.cpp:318 -#: src/canonmn.cpp:392 -#, fuzzy -msgid "Pan focus" -msgstr "ÅšledzÄ…ce ostrzenie" - -#: src/canonmn.cpp:296 src/canonmn.cpp:1018 src/minoltamn.cpp:666 -#: src/minoltamn.cpp:852 src/sonymn.cpp:534 -msgid "Large" -msgstr "Duży" - -#: src/canonmn.cpp:297 src/canonmn.cpp:762 src/canonmn.cpp:1019 -#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1222 -#: src/sonymn.cpp:535 -msgid "Medium" -msgstr "Åšredni" - -#: src/canonmn.cpp:298 src/canonmn.cpp:1020 src/minoltamn.cpp:668 -#: src/minoltamn.cpp:854 src/minoltamn.cpp:1223 src/sonymn.cpp:536 -msgid "Small" -msgstr "MaÅ‚y" - -#: src/canonmn.cpp:299 src/canonmn.cpp:1021 -msgid "Medium 1" -msgstr "Åšredni 1" - -#: src/canonmn.cpp:300 src/canonmn.cpp:1022 -msgid "Medium 2" -msgstr "Åšredni 2" - -#: src/canonmn.cpp:301 src/canonmn.cpp:1023 -msgid "Medium 3" -msgstr "Åšredni 3" - -#: src/canonmn.cpp:306 -msgid "Full auto" -msgstr "PeÅ‚na automatyka" - -#: src/canonmn.cpp:307 src/canonmn.cpp:384 src/canonmn.cpp:708 -#: src/canonmn.cpp:1093 src/fujimn.cpp:110 src/fujimn.cpp:135 -#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 -#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 -#: src/minoltamn.cpp:876 src/minoltamn.cpp:1281 src/nikonmn.cpp:974 -#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 -#: src/panasonicmn.cpp:68 src/panasonicmn.cpp:71 src/panasonicmn.cpp:72 -#: src/panasonicmn.cpp:78 src/panasonicmn.cpp:111 src/pentaxmn.cpp:58 -#: src/pentaxmn.cpp:201 src/pentaxmn.cpp:316 src/pentaxmn.cpp:500 -#: src/pentaxmn.cpp:512 src/sigmamn.cpp:157 src/sonymn.cpp:119 -#: src/sonymn.cpp:164 src/sonymn.cpp:460 src/sonymn.cpp:517 src/tags.cpp:1402 -#: src/tags.cpp:1489 src/tags.cpp:1496 -msgid "Manual" -msgstr "RÄ™czny" - -#: src/canonmn.cpp:308 src/canonmn.cpp:1125 src/fujimn.cpp:117 -#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1887 -#: src/minoltamn.cpp:2039 src/olympusmn.cpp:98 src/pentaxmn.cpp:472 -#: src/pentaxmn.cpp:705 src/sonymn.cpp:478 src/sonymn.cpp:527 -#: src/tags.cpp:1502 -msgid "Landscape" -msgstr "Pejzaż" - -#: src/canonmn.cpp:309 -msgid "Fast shutter" -msgstr "Szybka migawka" - -#: src/canonmn.cpp:310 -msgid "Slow shutter" -msgstr "Wolna migawka" - -#: src/canonmn.cpp:311 src/minoltamn.cpp:68 src/minoltamn.cpp:951 -#: src/minoltamn.cpp:2036 src/olympusmn.cpp:99 src/pentaxmn.cpp:478 -msgid "Night Scene" -msgstr "Scena nocna" - -#: src/canonmn.cpp:312 -msgid "Gray scale" -msgstr "Skala odcieni szaroÅ›ci" - -#: src/canonmn.cpp:313 src/canonmn.cpp:751 src/canonmn.cpp:1058 -#: src/minoltamn.cpp:61 src/nikonmn.cpp:190 src/nikonmn.cpp:677 -#: src/olympusmn.cpp:615 src/olympusmn.cpp:632 src/olympusmn.cpp:856 -#: src/olympusmn.cpp:871 src/panasonicmn.cpp:149 src/sonymn.cpp:488 -msgid "Sepia" -msgstr "Sepia" - -#: src/canonmn.cpp:314 src/canonmn.cpp:1111 src/canonmn.cpp:1124 -#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 -#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1886 -#: src/minoltamn.cpp:2034 src/olympusmn.cpp:96 src/olympusmn.cpp:613 -#: src/panasonicmn.cpp:102 src/pentaxmn.cpp:471 src/pentaxmn.cpp:704 -#: src/sonymn.cpp:106 src/sonymn.cpp:477 src/sonymn.cpp:523 src/tags.cpp:1503 -msgid "Portrait" -msgstr "Portret" - -#: src/canonmn.cpp:315 src/fujimn.cpp:118 src/minoltamn.cpp:843 -#: src/minoltamn.cpp:2038 src/panasonicmn.cpp:104 src/sonymn.cpp:524 -msgid "Sports" -msgstr "Sport" - -#: src/canonmn.cpp:316 -msgid "Macro / close-up" -msgstr "Makro / zbliżenie" - -#: src/canonmn.cpp:317 src/fujimn.cpp:149 -msgid "Black & white" -msgstr "Czarno-biaÅ‚y" - -#: src/canonmn.cpp:319 src/canonmn.cpp:748 src/olympusmn.cpp:134 -#: src/olympusmn.cpp:610 src/olympusmn.cpp:852 src/panasonicmn.cpp:199 -#: src/sonymn.cpp:476 src/sonymn.cpp:506 -msgid "Vivid" -msgstr "Jaskrawy" - -#: src/canonmn.cpp:320 src/canonmn.cpp:749 src/canonmn.cpp:1126 -#: src/minoltamn.cpp:1892 src/minoltamn.cpp:1893 src/olympusmn.cpp:621 -#: src/olympusmn.cpp:631 src/olympusmn.cpp:861 src/olympusmn.cpp:870 -#: src/sonymn.cpp:483 src/sonymn.cpp:508 -msgid "Neutral" -msgstr "Neutralny" - -#: src/canonmn.cpp:321 -msgid "Flash off" -msgstr "Flesz wyÅ‚Ä…czony" - -#: src/canonmn.cpp:322 -msgid "Long shutter" -msgstr "DÅ‚ugo otwarta migawka" - -#: src/canonmn.cpp:324 -msgid "Foliage" -msgstr "Listowie" - -#: src/canonmn.cpp:325 src/olympusmn.cpp:106 -msgid "Indoor" -msgstr "W pomieszczeniu" - -#: src/canonmn.cpp:326 src/fujimn.cpp:131 src/olympusmn.cpp:107 -#: src/panasonicmn.cpp:116 src/sonymn.cpp:117 -msgid "Fireworks" -msgstr "Fajerwerki" - -#: src/canonmn.cpp:327 src/fujimn.cpp:129 src/olympusmn.cpp:129 -#: src/panasonicmn.cpp:128 src/sonymn.cpp:107 -msgid "Beach" -msgstr "Plaża" - -#: src/canonmn.cpp:328 src/canonmn.cpp:846 src/fujimn.cpp:132 -#: src/panasonicmn.cpp:127 src/sonymn.cpp:122 -msgid "Underwater" -msgstr "Podwodny" - -#: src/canonmn.cpp:329 src/fujimn.cpp:130 src/olympusmn.cpp:130 -#: src/panasonicmn.cpp:118 src/sonymn.cpp:108 -msgid "Snow" -msgstr "Åšnieg" - -#: src/canonmn.cpp:330 -msgid "Kids & pets" -msgstr "Dzieci i zwierzÄ™ta domowe" - -#: src/canonmn.cpp:331 -msgid "Night SnapShot" -msgstr "Nocne zdjÄ™cie" - -#: src/canonmn.cpp:332 -msgid "Digital macro" -msgstr "Cyfrowe makro" - -#: src/canonmn.cpp:333 -msgid "My Colors" -msgstr "Moje kolory" - -#: src/canonmn.cpp:334 src/minoltamn.cpp:343 -msgid "Still image" -msgstr "Nieruchomy obraz" - -#: src/canonmn.cpp:342 src/canonmn.cpp:343 src/properties.cpp:859 -#: src/properties.cpp:881 src/tags.cpp:1421 src/tags.cpp:1422 -msgid "Other" -msgstr "Inny" - -#: src/canonmn.cpp:348 src/canonmn.cpp:763 src/canonmn.cpp:1101 -#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1164 -#: src/minoltamn.cpp:1170 src/minoltamn.cpp:1176 src/minoltamn.cpp:1345 -#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:206 -#: src/olympusmn.cpp:171 src/olympusmn.cpp:1134 src/panasonicmn.cpp:162 -#: src/panasonicmn.cpp:166 src/pentaxmn.cpp:342 src/pentaxmn.cpp:355 -#: src/sonymn.cpp:214 src/tags.cpp:1527 -msgid "Low" -msgstr "MaÅ‚o" - -#: src/canonmn.cpp:350 src/canonmn.cpp:1103 src/fujimn.cpp:85 -#: src/fujimn.cpp:94 src/minoltamn.cpp:1165 src/minoltamn.cpp:1171 -#: src/minoltamn.cpp:1177 src/nikonmn.cpp:71 src/nikonmn.cpp:79 -#: src/nikonmn.cpp:208 src/olympusmn.cpp:169 src/olympusmn.cpp:1136 -#: src/panasonicmn.cpp:55 src/panasonicmn.cpp:163 src/panasonicmn.cpp:168 -#: src/panasonicmn.cpp:169 src/pentaxmn.cpp:344 src/pentaxmn.cpp:357 -#: src/sonymn.cpp:217 src/tags.cpp:1528 -msgid "High" -msgstr "Dużo" - -#: src/canonmn.cpp:355 src/canonmn.cpp:760 src/canonmn.cpp:764 -#: src/canonmn.cpp:769 src/canonmn.cpp:1099 src/nikonmn.cpp:671 -#: src/nikonmn.cpp:686 src/nikonmn.cpp:910 src/nikonmn.cpp:963 -#: src/nikonmn.cpp:1218 src/olympusmn.cpp:620 src/olympusmn.cpp:630 -#: src/sonymn.cpp:129 src/sonymn.cpp:136 src/sonymn.cpp:144 src/sonymn.cpp:181 -#: src/sonymn.cpp:194 src/sonymn.cpp:201 src/sonymn.cpp:209 src/sonymn.cpp:215 -#: src/sonymn.cpp:226 src/sonymn.cpp:232 src/sonymn.cpp:239 -msgid "n/a" -msgstr "nd" - -#: src/canonmn.cpp:356 -#, fuzzy -msgid "Auto High" -msgstr "Wysoki zakres" - -#: src/canonmn.cpp:374 src/sonymn.cpp:186 -msgid "Default" -msgstr "DomyÅ›lnie" - -#: src/canonmn.cpp:375 src/minoltamn.cpp:265 src/minoltamn.cpp:883 -#: src/minoltamn.cpp:933 src/minoltamn.cpp:1129 src/minoltamn.cpp:1938 -#: src/olympusmn.cpp:492 src/panasonicmn.cpp:110 src/pentaxmn.cpp:306 -#: src/sonymn.cpp:470 src/tags.cpp:1417 -msgid "Spot" -msgstr "Punktowy" - -#: src/canonmn.cpp:376 src/sigmamn.cpp:168 src/tags.cpp:1415 -msgid "Average" -msgstr "UÅ›redniony" - -#: src/canonmn.cpp:377 -msgid "Evaluative" -msgstr "Matrycowy" - -#: src/canonmn.cpp:378 src/tags.cpp:1420 -msgid "Partial" -msgstr "Częściowy" - -#: src/canonmn.cpp:379 src/minoltamn.cpp:882 -msgid "Center weighted" -msgstr "Centralnie ważony" - -#: src/canonmn.cpp:386 -msgid "Not known" -msgstr "Nieznany" - -#: src/canonmn.cpp:387 src/canonmn.cpp:776 src/fujimn.cpp:207 -#: src/minoltamn.cpp:847 src/minoltamn.cpp:2041 src/olympusmn.cpp:109 -#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:109 -#: src/panasonicmn.cpp:213 src/panasonicmn.cpp:214 src/panasonicmn.cpp:243 -#: src/pentaxmn.cpp:199 src/pentaxmn.cpp:473 src/sonymn.cpp:390 -#: src/sonymn.cpp:391 src/sonymn.cpp:528 src/tags.cpp:1534 -msgid "Macro" -msgstr "Makro" - -#: src/canonmn.cpp:388 -msgid "Very close" -msgstr "Bardzo blisko" - -#: src/canonmn.cpp:389 -msgid "Close" -msgstr "Blisko" - -#: src/canonmn.cpp:390 -msgid "Middle range" -msgstr "Åšrednia odlegÅ‚ość" - -#: src/canonmn.cpp:391 -msgid "Far range" -msgstr "Daleko" - -#: src/canonmn.cpp:394 src/pentaxmn.cpp:200 src/tags.cpp:2568 -msgid "Infinity" -msgstr "NieskoÅ„czoność" - -#: src/canonmn.cpp:399 -msgid "Manual AF point selection" -msgstr "RÄ™czny wybór punktu AF" - -#: src/canonmn.cpp:400 -msgid "None (MF)" -msgstr "Å»aden (MF)" - -#: src/canonmn.cpp:401 -msgid "Auto-selected" -msgstr "Automatycznie" - -#: src/canonmn.cpp:402 src/minoltamn.cpp:287 src/minoltamn.cpp:706 -#: src/minoltamn.cpp:921 src/minoltamn.cpp:1953 src/nikonmn.cpp:103 -#: src/olympusmn.cpp:1491 src/pentaxmn.cpp:222 src/pentaxmn.cpp:237 -msgid "Right" -msgstr "Prawy" - -#: src/canonmn.cpp:403 src/canonmn.cpp:741 src/minoltamn.cpp:284 -#: src/minoltamn.cpp:703 src/minoltamn.cpp:1950 src/nikonmn.cpp:99 -#: src/nikonmn.cpp:792 src/nikonmn.cpp:807 src/pentaxmn.cpp:220 -#: src/pentaxmn.cpp:236 src/sigmamn.cpp:169 -msgid "Center" -msgstr "Åšrodkowy" - -#: src/canonmn.cpp:404 src/minoltamn.cpp:291 src/minoltamn.cpp:710 -#: src/minoltamn.cpp:925 src/minoltamn.cpp:1957 src/nikonmn.cpp:102 -#: src/pentaxmn.cpp:218 src/pentaxmn.cpp:235 -msgid "Left" -msgstr "Lewy" - -#: src/canonmn.cpp:405 -msgid "Auto AF point selection" -msgstr "Automatyczny wybór punktu AF" - -#: src/canonmn.cpp:410 -msgid "Easy shooting (Auto)" -msgstr "Åatwe fotografowanie (Automatyczne)" - -#: src/canonmn.cpp:411 -msgid "Program (P)" -msgstr "Program (P)" - -#: src/canonmn.cpp:412 -msgid "Shutter priority (Tv)" -msgstr "Priorytet migawki (Tv)" - -#: src/canonmn.cpp:413 -msgid "Aperture priority (Av)" -msgstr "Priorytet przysÅ‚ony (Av)" - -#: src/canonmn.cpp:414 -msgid "Manual (M)" -msgstr "RÄ™czny (M)" - -#: src/canonmn.cpp:415 -msgid "A-DEP" -msgstr "A-DEP" - -#: src/canonmn.cpp:416 -msgid "M-DEP" -msgstr "M-DEP" - -#: src/canonmn.cpp:700 src/minoltamn.cpp:297 src/nikonmn.cpp:142 -msgid "Did not fire" -msgstr "Flesz siÄ™ nie uruchomiÅ‚" - -#: src/canonmn.cpp:701 src/minoltamn.cpp:298 src/nikonmn.cpp:981 -#: src/tags.cpp:365 -msgid "Fired" -msgstr "Flesz uruchomiÅ‚ siÄ™" - -#: src/canonmn.cpp:706 src/olympusmn.cpp:1009 -msgid "External flash" -msgstr "ZewnÄ™trzny flesz" - -#: src/canonmn.cpp:707 src/olympusmn.cpp:1013 -msgid "Internal flash" -msgstr "WewnÄ™trzny flesz" - -#: src/canonmn.cpp:709 src/olympusmn.cpp:558 src/sonymn.cpp:494 -msgid "TTL" -msgstr "TTL" - -#: src/canonmn.cpp:710 -msgid "A-TTL" -msgstr "A-TTL" - -#: src/canonmn.cpp:711 -msgid "E-TTL" -msgstr "E-TTL" - -#: src/canonmn.cpp:712 -msgid "FP sync enabled" -msgstr "WÅ‚Ä…czono FP sync" - -#: src/canonmn.cpp:713 -msgid "2nd-curtain sync used" -msgstr "Synchronizacja na drugÄ… kurtynÄ™" - -#: src/canonmn.cpp:714 -msgid "FP sync used" -msgstr "Użyto FP sync" - -#: src/canonmn.cpp:725 -#, fuzzy -msgid "Normal AE" -msgstr "Normal AE" - -#: src/canonmn.cpp:726 src/minoltamn.cpp:527 src/minoltamn.cpp:769 -#: src/minoltamn.cpp:1045 src/pentaxmn.cpp:919 src/pentaxmn.cpp:920 -msgid "Exposure compensation" -msgstr "Kompensacja ekspozycji" - -#: src/canonmn.cpp:727 src/minoltamn.cpp:1575 src/pentaxmn.cpp:1021 -#: src/pentaxmn.cpp:1022 -msgid "AE lock" -msgstr "Blokada ekspozycji" - -#: src/canonmn.cpp:728 -msgid "AE lock + exposure compensation" -msgstr "Blokada ekspozycji + kompensacja ekspozycji" - -#: src/canonmn.cpp:729 -msgid "No AE" -msgstr "Brak AE" - -#: src/canonmn.cpp:736 -#, fuzzy -msgid "On, shot only" -msgstr "One shot AF" - -#: src/canonmn.cpp:742 src/canonmn.cpp:794 src/nikonmn.cpp:823 -#: src/olympusmn.cpp:1008 -msgid "AF Point" -msgstr "Punkt AF" - -#: src/canonmn.cpp:750 -#, fuzzy -msgid "Smooth" -msgstr "GÅ‚adki" - -#: src/canonmn.cpp:752 src/nikonmn.cpp:676 -msgid "B&W" -msgstr "Czarno-biaÅ‚y" - -#: src/canonmn.cpp:753 src/canonmn.cpp:836 src/canonmn.cpp:1094 -#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 -#: src/minoltamn.cpp:1184 src/minoltamn.cpp:1187 src/minoltamn.cpp:2100 -#: src/pentaxmn.cpp:723 -msgid "Custom" -msgstr "WÅ‚asny" - -#: src/canonmn.cpp:754 src/canonmn.cpp:755 -msgid "My color data" -msgstr "Moje dane kolorów" - -#: src/canonmn.cpp:761 src/pentaxmn.cpp:163 -msgid "Full" -msgstr "PeÅ‚ny" - -#: src/canonmn.cpp:770 -msgid "sRAW1 (mRAW)" -msgstr "" - -#: src/canonmn.cpp:771 -msgid "sRAW2 (sRAW)" -msgstr "" - -#: src/canonmn.cpp:777 -msgid "Selftimer" -msgstr "Samowyzwalacz" - -#: src/canonmn.cpp:777 src/panasonicmn.cpp:259 -msgid "Self timer" -msgstr "Samowyzwalacz" - -#: src/canonmn.cpp:778 src/fujimn.cpp:186 src/minoltamn.cpp:1484 -#: src/minoltamn.cpp:1485 src/nikonmn.cpp:222 src/nikonmn.cpp:459 -#: src/nikonmn.cpp:527 src/olympusmn.cpp:198 src/panasonicmn.cpp:236 -#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:647 -#: src/sonymn.cpp:648 -msgid "Quality" -msgstr "Jakość" - -#: src/canonmn.cpp:779 src/fujimn.cpp:201 src/minoltamn.cpp:493 -#: src/minoltamn.cpp:762 src/nikonmn.cpp:566 src/olympusmn.cpp:279 -#: src/olympusmn.cpp:670 -msgid "Flash Mode" -msgstr "Tryb flesza" - -#: src/canonmn.cpp:779 -msgid "Flash mode setting" -msgstr "Ustawienie trybu flesza" - -#: src/canonmn.cpp:780 src/minoltamn.cpp:505 src/minoltamn.cpp:1427 -#: src/olympusmn.cpp:700 src/sigmamn.cpp:59 src/sonymn.cpp:559 -#: src/sonymn.cpp:560 -msgid "Drive Mode" -msgstr "Tryb dziaÅ‚ania" - -#: src/canonmn.cpp:780 -msgid "Drive mode setting" -msgstr "Ustawienie trybu dziaÅ‚ania" - -#: src/canonmn.cpp:782 src/fujimn.cpp:210 src/minoltamn.cpp:622 -#: src/minoltamn.cpp:753 src/minoltamn.cpp:1035 src/minoltamn.cpp:1379 -#: src/nikonmn.cpp:474 src/olympusmn.cpp:300 src/olympusmn.cpp:664 -#: src/panasonicmn.cpp:240 src/sonymn.cpp:396 src/sonymn.cpp:397 -#: src/sonymn.cpp:566 src/sonymn.cpp:567 src/sonymn.cpp:672 src/sonymn.cpp:673 -msgid "Focus Mode" -msgstr "Tryb ogniskowania" - -#: src/canonmn.cpp:782 -msgid "Focus mode setting" -msgstr "Ustawienie trybu ogniskowania" - -#: src/canonmn.cpp:785 src/minoltamn.cpp:499 src/minoltamn.cpp:744 -#: src/minoltamn.cpp:987 -msgid "Image Size" -msgstr "Rozmiar obrazu" - -#: src/canonmn.cpp:786 -msgid "Easy Mode" -msgstr "Tryb Easy" - -#: src/canonmn.cpp:786 -msgid "Easy shooting mode" -msgstr "Åatwy tryb fotografowania" - -#: src/canonmn.cpp:787 src/minoltamn.cpp:523 src/nikonmn.cpp:255 -#: src/nikonmn.cpp:480 src/nikonmn.cpp:565 src/olympusmn.cpp:207 -msgid "Digital Zoom" -msgstr "PowiÄ™kszenie cyfrowe" - -#: src/canonmn.cpp:787 src/minoltamn.cpp:524 src/pentaxmn.cpp:944 -#: src/pentaxmn.cpp:945 -msgid "Digital zoom" -msgstr "PowiÄ™kszenie cyfrowe" - -#: src/canonmn.cpp:788 src/minoltamn.cpp:386 src/minoltamn.cpp:574 -#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 -#: src/minoltamn.cpp:1017 src/minoltamn.cpp:1018 src/minoltamn.cpp:1415 -#: src/minoltamn.cpp:1416 src/nikonmn.cpp:697 src/olympusmn.cpp:390 -#: src/olympusmn.cpp:800 src/panasonicmn.cpp:257 src/panasonicmn.cpp:268 -#: src/pentaxmn.cpp:850 src/pentaxmn.cpp:950 src/pentaxmn.cpp:951 -#: src/properties.cpp:443 src/properties.cpp:589 src/sigmamn.cpp:89 -#: src/sigmamn.cpp:90 src/sonymn.cpp:324 src/sonymn.cpp:593 src/sonymn.cpp:594 -#: src/sonymn.cpp:699 src/sonymn.cpp:700 src/tags.cpp:1807 -msgid "Contrast" -msgstr "Kontrastowość" - -#: src/canonmn.cpp:788 src/fujimn.cpp:199 src/olympusmn.cpp:391 -#: src/olympusmn.cpp:681 src/olympusmn.cpp:1080 src/panasonicmn.cpp:257 -msgid "Contrast setting" -msgstr "Ustawienie kontrastu" - -#: src/canonmn.cpp:789 src/minoltamn.cpp:387 src/minoltamn.cpp:571 -#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 -#: src/minoltamn.cpp:1020 src/minoltamn.cpp:1021 src/minoltamn.cpp:1418 -#: src/minoltamn.cpp:1419 src/nikonmn.cpp:578 src/nikonmn.cpp:597 -#: src/nikonmn.cpp:699 src/olympusmn.cpp:799 src/olympusmn.cpp:898 -#: src/panasonicmn.cpp:271 src/pentaxmn.cpp:844 src/pentaxmn.cpp:947 -#: src/pentaxmn.cpp:948 src/properties.cpp:461 src/properties.cpp:590 -#: src/sigmamn.cpp:98 src/sigmamn.cpp:99 src/sonymn.cpp:327 src/sonymn.cpp:596 -#: src/sonymn.cpp:597 src/sonymn.cpp:702 src/sonymn.cpp:703 src/tags.cpp:1811 -msgid "Saturation" -msgstr "Nasycenie" - -#: src/canonmn.cpp:789 src/olympusmn.cpp:1078 -msgid "Saturation setting" -msgstr "Ustawienie nasycenia" - -#: src/canonmn.cpp:790 src/canonmn.cpp:1134 src/fujimn.cpp:189 -#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 -#: src/minoltamn.cpp:775 src/minoltamn.cpp:1014 src/minoltamn.cpp:1015 -#: src/minoltamn.cpp:1412 src/minoltamn.cpp:1413 src/nikonmn.cpp:696 -#: src/olympusmn.cpp:801 src/panasonicmn.cpp:272 src/pentaxmn.cpp:847 -#: src/pentaxmn.cpp:953 src/pentaxmn.cpp:954 src/properties.cpp:464 -#: src/properties.cpp:591 src/sigmamn.cpp:101 src/sigmamn.cpp:102 -#: src/sonymn.cpp:590 src/sonymn.cpp:591 src/sonymn.cpp:696 src/sonymn.cpp:697 -#: src/tags.cpp:1815 -msgid "Sharpness" -msgstr "Wyostrzenie" - -#: src/canonmn.cpp:790 src/fujimn.cpp:190 src/olympusmn.cpp:682 -#: src/olympusmn.cpp:1081 -msgid "Sharpness setting" -msgstr "Ustawienie wyostrzenia" - -#: src/canonmn.cpp:791 src/minoltamn.cpp:765 src/minoltamn.cpp:1008 -msgid "ISO Speed Mode" -msgstr "Tryb ISO" - -#: src/canonmn.cpp:791 src/minoltamn.cpp:766 src/minoltamn.cpp:1009 -#: src/nikonmn.cpp:217 src/nikonmn.cpp:469 src/nikonmn.cpp:525 -#: src/panasonicmn.cpp:344 -msgid "ISO speed setting" -msgstr "Ustawienie trybu ISO" - -#: src/canonmn.cpp:792 src/minoltamn.cpp:508 src/minoltamn.cpp:1005 -#: src/minoltamn.cpp:1394 src/olympusmn.cpp:661 src/properties.cpp:561 -#: src/sigmamn.cpp:77 src/sonymn.cpp:575 src/sonymn.cpp:576 src/sonymn.cpp:681 -#: src/sonymn.cpp:682 src/tags.cpp:825 src/tags.cpp:1646 -msgid "Metering Mode" -msgstr "Tryb pomiaru" - -#: src/canonmn.cpp:792 -msgid "Metering mode setting" -msgstr "Ustawienie trybu pomiaru" - -#: src/canonmn.cpp:793 -msgid "Focus Type" -msgstr "Typ ogniskowania" - -#: src/canonmn.cpp:793 -msgid "Focus type setting" -msgstr "Ustawienie typu ogniskowania" - -#: src/canonmn.cpp:794 -msgid "AF point selected" -msgstr "Wybrany punkt AF" - -#: src/canonmn.cpp:795 src/properties.cpp:550 src/sonymn.cpp:632 -#: src/sonymn.cpp:633 src/sonymn.cpp:708 src/sonymn.cpp:709 src/tags.cpp:799 -#: src/tags.cpp:1548 -msgid "Exposure Program" -msgstr "Tryb ekspozycji" - -#: src/canonmn.cpp:795 -msgid "Exposure mode setting" -msgstr "Ustawienie trybu ekspozycji" - -#: src/canonmn.cpp:797 src/nikonmn.cpp:562 src/olympusmn.cpp:745 -#: src/panasonicmn.cpp:276 -msgid "Lens Type" -msgstr "Rodzaj obiektywu" - -#: src/canonmn.cpp:797 src/nikonmn.cpp:562 src/olympusmn.cpp:745 -#: src/panasonicmn.cpp:276 src/pentaxmn.cpp:1008 src/pentaxmn.cpp:1009 -msgid "Lens type" -msgstr "Rodzaj obiektywu" - -#: src/canonmn.cpp:798 src/nikonmn.cpp:563 src/properties.cpp:633 -msgid "Lens" -msgstr "Obiektyw" - -#: src/canonmn.cpp:798 -msgid "" -"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " -"per mm" -msgstr "" -"\"DÅ‚uga\" i \"krótka\" dÅ‚ugość ogniskowej obiektywu (w \"jednostkach " -"ogniskowej\") i liczba \"jednostek ogniskowej\" na milimetr" - -#: src/canonmn.cpp:799 -msgid "Short Focal" -msgstr "" - -#: src/canonmn.cpp:799 -#, fuzzy -msgid "Short focal" -msgstr "Ostrzenie punktowe" - -#: src/canonmn.cpp:800 -#, fuzzy -msgid "Focal Units" -msgstr "DÅ‚ugość ogniskowej " - -#: src/canonmn.cpp:800 -#, fuzzy -msgid "Focal units" -msgstr "DÅ‚ugość ogniskowej " - -#: src/canonmn.cpp:801 src/minoltamn.cpp:553 -msgid "Max Aperture" -msgstr "NajwiÄ™ksza wartość przysÅ‚ony" - -#: src/canonmn.cpp:801 src/minoltamn.cpp:554 -msgid "Max aperture" -msgstr "NajwiÄ™ksza wartość przysÅ‚ony" - -#: src/canonmn.cpp:802 -msgid "Min Aperture" -msgstr "Najmniejsza wartość przysÅ‚ony" - -#: src/canonmn.cpp:802 -msgid "Min aperture" -msgstr "Najmniejsza wartość przysÅ‚ony" - -#: src/canonmn.cpp:803 -msgid "Flash Activity" -msgstr "Aktywność flesza" - -#: src/canonmn.cpp:803 -msgid "Flash activity" -msgstr "Aktywność flesza" - -#: src/canonmn.cpp:804 -msgid "Flash Details" -msgstr "Szczegóły flesza" - -#: src/canonmn.cpp:804 -msgid "Flash details" -msgstr "Szczegóły flesza" - -#: src/canonmn.cpp:807 -msgid "Focus Continuous" -msgstr "CiÄ…gÅ‚y focus" - -#: src/canonmn.cpp:807 -msgid "Focus continuous setting" -msgstr "Ustawienie ciÄ…gÅ‚ego focusu" - -#: src/canonmn.cpp:808 -msgid "AESetting" -msgstr "Ustawienie AE" - -#: src/canonmn.cpp:808 -msgid "AE setting" -msgstr "Ustawienie automatycznej ekspozycji" - -#: src/canonmn.cpp:809 src/minoltamn.cpp:147 src/minoltamn.cpp:814 -#: src/minoltamn.cpp:1071 src/minoltamn.cpp:1562 src/nikonmn.cpp:599 -#: src/olympusmn.cpp:703 src/olympusmn.cpp:1016 src/panasonicmn.cpp:242 -#: src/sonymn.cpp:372 src/sonymn.cpp:635 src/sonymn.cpp:636 -msgid "Image Stabilization" -msgstr "Stabilizacja obrazu" - -#: src/canonmn.cpp:809 src/minoltamn.cpp:148 src/minoltamn.cpp:815 -#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1563 src/nikonmn.cpp:599 -#: src/olympusmn.cpp:703 src/olympusmn.cpp:1016 src/panasonicmn.cpp:242 -#: src/sonymn.cpp:373 -msgid "Image stabilization" -msgstr "Stabilizacja obrazu" - -#: src/canonmn.cpp:810 -#, fuzzy -msgid "Display Aperture" -msgstr "PrzesÅ‚ona" - -#: src/canonmn.cpp:810 -#, fuzzy -msgid "Display aperture" -msgstr "PrzesÅ‚ona" - -#: src/canonmn.cpp:811 -#, fuzzy -msgid "Zoom Source Width" -msgstr "Szerokość sensora" - -#: src/canonmn.cpp:811 -#, fuzzy -msgid "Zoom source width" -msgstr "Szerokość sensora" - -#: src/canonmn.cpp:812 -#, fuzzy -msgid "Zoom Target Width" -msgstr "Szerokość obrazu" - -#: src/canonmn.cpp:812 -#, fuzzy -msgid "Zoom target width" -msgstr "Szerokość obrazu" - -#: src/canonmn.cpp:814 -#, fuzzy -msgid "Spot Metering Mode" -msgstr "Tryb pomiaru" - -#: src/canonmn.cpp:814 -#, fuzzy -msgid "Spot metering mode" -msgstr "Tryb pomiaru." - -#: src/canonmn.cpp:815 -msgid "Photo Effect" -msgstr "Efekt fotograficzny" - -#: src/canonmn.cpp:815 -msgid "Photo effect" -msgstr "Efekt fotograficzny" - -#: src/canonmn.cpp:816 -#, fuzzy -msgid "Manual Flash Output" -msgstr "Flesz rÄ™czny" - -#: src/canonmn.cpp:816 -#, fuzzy -msgid "Manual flash output" -msgstr "Flesz rÄ™czny" - -#: src/canonmn.cpp:817 -msgid "Color Tone" -msgstr "OdcieÅ„ koloru" - -#: src/canonmn.cpp:817 -msgid "Color tone" -msgstr "OdcieÅ„ koloru" - -#: src/canonmn.cpp:818 -msgid "SRAW Quality Tone" -msgstr "" - -#: src/canonmn.cpp:818 -#, fuzzy -msgid "SRAW quality" -msgstr "Jakość obrazu" - -#: src/canonmn.cpp:820 -msgid "Unknown Canon Camera Settings 1 tag" -msgstr "Nieznany znacznik Canon Camera Settings 1" - -#: src/canonmn.cpp:831 -msgid "Sunny" -msgstr "SÅ‚onecznie" - -#: src/canonmn.cpp:832 src/fujimn.cpp:73 src/minoltamn.cpp:220 -#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1194 -#: src/minoltamn.cpp:2095 src/nikonmn.cpp:450 src/olympusmn.cpp:1041 -#: src/panasonicmn.cpp:66 src/pentaxmn.cpp:321 src/sonymn.cpp:166 -msgid "Cloudy" -msgstr "Pochmurno" - -#: src/canonmn.cpp:833 src/minoltamn.cpp:221 src/minoltamn.cpp:686 -#: src/minoltamn.cpp:872 src/minoltamn.cpp:1196 src/minoltamn.cpp:2097 -#: src/pentaxmn.cpp:315 -msgid "Tungsten" -msgstr "ÅšwiatÅ‚o wolframowe" - -#: src/canonmn.cpp:834 src/minoltamn.cpp:223 src/minoltamn.cpp:687 -#: src/minoltamn.cpp:873 src/minoltamn.cpp:1197 src/minoltamn.cpp:2099 -#: src/nikonmn.cpp:449 src/pentaxmn.cpp:314 src/tags.cpp:1429 -msgid "Fluorescent" -msgstr "Fluorescencja" - -#: src/canonmn.cpp:837 src/minoltamn.cpp:57 src/minoltamn.cpp:1890 -#: src/sonymn.cpp:481 -msgid "Black & White" -msgstr "Czarno-biaÅ‚y" - -#: src/canonmn.cpp:838 src/minoltamn.cpp:684 src/minoltamn.cpp:871 -#: src/minoltamn.cpp:1195 src/minoltamn.cpp:2096 src/olympusmn.cpp:1040 -#: src/pentaxmn.cpp:313 src/tags.cpp:1434 -msgid "Shade" -msgstr "CieÅ„" - -#: src/canonmn.cpp:839 -msgid "Manual Temperature (Kelvin)" -msgstr "RÄ™czna temperatura (K)" - -#: src/canonmn.cpp:840 -msgid "PC Set 1" -msgstr "PC Set 1" - -#: src/canonmn.cpp:841 -msgid "PC Set 2" -msgstr "PC Set 2" - -#: src/canonmn.cpp:842 -msgid "PC Set 3" -msgstr "PC Set 3" - -#: src/canonmn.cpp:843 -msgid "Daylight Fluorescent" -msgstr "Lampa fluorescencyjna (Å›wiatÅ‚o dzienne)" - -#: src/canonmn.cpp:844 src/properties.cpp:791 -msgid "Custom 1" -msgstr "Użytkownika 1" - -#: src/canonmn.cpp:845 src/minoltamn.cpp:225 src/properties.cpp:792 -msgid "Custom 2" -msgstr "Użytkownika 2" - -#: src/canonmn.cpp:847 src/canonmn.cpp:848 src/minoltamn.cpp:226 -#: src/properties.cpp:793 -msgid "Custom 3" -msgstr "Użytkownika 3" - -#: src/canonmn.cpp:849 -#, fuzzy -msgid "PC Set 4" -msgstr "PC Set 1" - -#: src/canonmn.cpp:850 -#, fuzzy -msgid "PC Set 5" -msgstr "PC Set 1" - -#: src/canonmn.cpp:855 src/canonmn.cpp:974 src/canonmn.cpp:982 -msgid "left" -msgstr "lewy" - -#: src/canonmn.cpp:856 src/canonmn.cpp:971 src/canonmn.cpp:983 -msgid "center" -msgstr "Åšrodek" - -#: src/canonmn.cpp:857 src/canonmn.cpp:968 src/canonmn.cpp:984 -msgid "right" -msgstr "prawy" - -#: src/canonmn.cpp:884 -msgid "ISO Speed Used" -msgstr "Użyta czuÅ‚ość ISO" - -#: src/canonmn.cpp:884 -msgid "ISO speed used" -msgstr "Użyta czuÅ‚ość ISO" - -#: src/canonmn.cpp:885 -msgid "Measured EV" -msgstr "" - -#: src/canonmn.cpp:886 -msgid "Target Aperture" -msgstr "Docelowa przysÅ‚ona" - -#: src/canonmn.cpp:887 -msgid "Target Shutter Speed" -msgstr "Docelowa szybkość migawki" - -#: src/canonmn.cpp:887 -msgid "Target shutter speed" -msgstr "Docelowy czas otwarcia migawki" - -#: src/canonmn.cpp:889 src/fujimn.cpp:192 src/minoltamn.cpp:177 -#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:993 -#: src/minoltamn.cpp:1376 src/nikonmn.cpp:225 src/nikonmn.cpp:471 -#: src/nikonmn.cpp:528 src/olympusmn.cpp:330 src/olympusmn.cpp:880 -#: src/panasonicmn.cpp:238 src/properties.cpp:473 src/properties.cpp:582 -#: src/sigmamn.cpp:71 src/sonymn.cpp:289 src/tags.cpp:1785 -msgid "White Balance" -msgstr "Balans bieli" - -#: src/canonmn.cpp:889 src/fujimn.cpp:193 src/minoltamn.cpp:1443 -#: src/panasonicmn.cpp:238 -msgid "White balance setting" -msgstr "Ustawienie balansu bieli" - -#: src/canonmn.cpp:891 -msgid "Sequence" -msgstr "Sekwencja" - -#: src/canonmn.cpp:891 -msgid "Sequence number (if in a continuous burst)" -msgstr "Numer sekwencji (jeÅ›li w serii)" - -#: src/canonmn.cpp:896 -msgid "AF Point Used" -msgstr "Użyty punkt AF" - -#: src/canonmn.cpp:896 -msgid "AF point used" -msgstr "Użyty punkt AF" - -#: src/canonmn.cpp:897 src/olympusmn.cpp:372 -msgid "Flash Bias" -msgstr "Odchylenie ekspozycji flesza" - -#: src/canonmn.cpp:901 src/properties.cpp:560 src/tags.cpp:824 -#: src/tags.cpp:1643 -msgid "Subject Distance" -msgstr "OdlegÅ‚ość obiektu" - -#: src/canonmn.cpp:901 -msgid "Subject distance (units are not clear)" -msgstr "OdlegÅ‚ość do obiektu (jednostki nie sÄ… jednoznaczne)" - -#: src/canonmn.cpp:903 src/olympusmn.cpp:273 src/properties.cpp:556 -#: src/tags.cpp:820 -msgid "Aperture Value" -msgstr "Wartość przysÅ‚ony" - -#: src/canonmn.cpp:904 src/properties.cpp:555 src/tags.cpp:819 -msgid "Shutter Speed Value" -msgstr "Szybkość migawki" - -#: src/canonmn.cpp:904 src/tags.cpp:1623 -msgid "Shutter speed" -msgstr "Szybkość migawki" - -#: src/canonmn.cpp:905 -msgid "Measured EV 2" -msgstr "" - -#: src/canonmn.cpp:910 -msgid "Unknown Canon Camera Settings 2 tag" -msgstr "Nieznany znacznik Canon Camera Settings 2" - -#: src/canonmn.cpp:920 src/olympusmn.cpp:1164 -msgid "Left to right" -msgstr "Od lewej do prawej" - -#: src/canonmn.cpp:921 src/olympusmn.cpp:1165 -msgid "Right to left" -msgstr "Od prawej do lewej" - -#: src/canonmn.cpp:922 src/olympusmn.cpp:1166 -msgid "Bottom to top" -msgstr "Od doÅ‚u do góry" - -#: src/canonmn.cpp:923 src/olympusmn.cpp:1167 -msgid "Top to bottom" -msgstr "Od góry do doÅ‚u" - -#: src/canonmn.cpp:924 -msgid "2x2 matrix (Clockwise)" -msgstr "Matryca 2x2 (przeciwnie do wskazówek zegara)" - -#: src/canonmn.cpp:929 -msgid "Panorama Frame" -msgstr "Klatka panoramy" - -#: src/canonmn.cpp:929 -msgid "Panorama frame number" -msgstr "Numer klatki panoramy" - -#: src/canonmn.cpp:930 -msgid "Panorama Direction" -msgstr "Kierunek panoramy" - -#: src/canonmn.cpp:930 -msgid "Panorama direction" -msgstr "Kierunek panoramy" - -#: src/canonmn.cpp:932 -msgid "Unknown Canon Panorama tag" -msgstr "Nieznany znacznik Canon Panorama" - -#: src/canonmn.cpp:942 src/canonmn.cpp:1072 src/minoltamn.cpp:807 -#: src/minoltamn.cpp:1068 src/minoltamn.cpp:1493 src/nikonmn.cpp:579 -#: src/olympusmn.cpp:438 src/olympusmn.cpp:602 src/olympusmn.cpp:685 -#: src/olympusmn.cpp:804 src/olympusmn.cpp:819 src/olympusmn.cpp:889 -#: src/olympusmn.cpp:974 -msgid "Noise Reduction" -msgstr "Redukcja szumów" - -#: src/canonmn.cpp:942 -msgid "Long exposure noise reduction" -msgstr "Redukcja szumów przy dÅ‚ugiej ekspozycji" - -#: src/canonmn.cpp:943 -msgid "Shutter Ae Lock" -msgstr "Blokada ekspozycji" - -#: src/canonmn.cpp:943 -msgid "Shutter/AE lock buttons" -msgstr "Przyciski blokady ekspozycji" - -#: src/canonmn.cpp:944 -msgid "Mirror Lockup" -msgstr "Blokada lustra" - -#: src/canonmn.cpp:944 -msgid "Mirror lockup" -msgstr "WstÄ™pne podnoszenie lustra" - -#: src/canonmn.cpp:945 src/sonymn.cpp:650 src/sonymn.cpp:651 -msgid "Exposure Level Increments" -msgstr "Krok poziomu ekspozycji" - -#: src/canonmn.cpp:945 -msgid "Tv/Av and exposure level" -msgstr "" - -#: src/canonmn.cpp:946 src/minoltamn.cpp:1520 -msgid "AF Assist" -msgstr "Wspomaganie AF" - -#: src/canonmn.cpp:946 -msgid "AF assist light" -msgstr "ÅšwiatÅ‚o pomocnicze automatycznego ostrzenia" - -#: src/canonmn.cpp:947 -msgid "Flash Sync Speed Av" -msgstr "Synchronizacja flesza Av" - -#: src/canonmn.cpp:947 -msgid "Shutter speed in Av mode" -msgstr "PrÄ™dkość migawki w trybie Av (priorytetu przysÅ‚ony)" - -#: src/canonmn.cpp:948 -msgid "AEB Sequence" -msgstr "Sekwencja AEB" - -#: src/canonmn.cpp:948 -#, fuzzy -msgid "AEB sequence/auto cancellation" -msgstr "Sekwencja automatycznego bracketingu" - -#: src/canonmn.cpp:949 -msgid "Shutter Curtain Sync" -msgstr "Synchronizacja migawki" - -#: src/canonmn.cpp:949 -msgid "Shutter curtain sync" -msgstr "Kurtyna synchronizacji migawki" - -#: src/canonmn.cpp:950 -msgid "Lens AF Stop Button" -msgstr "Przycisk obiektywu AF stop" - -#: src/canonmn.cpp:950 -msgid "Lens AF stop button Fn. Switch" -msgstr "Przycisk funkcji wyÅ‚Ä…czenia automatycznego ostrzenia w obiektywie" - -#: src/canonmn.cpp:951 -msgid "Fill Flash Auto Reduction" -msgstr "Auto redukcja bÅ‚ysku wypeÅ‚niajÄ…cego" - -#: src/canonmn.cpp:951 -msgid "Auto reduction of fill flash" -msgstr "Automatyczna redukcja siÅ‚y bÅ‚ysku wypeÅ‚niajÄ…cego" - -#: src/canonmn.cpp:952 -msgid "Menu Button Return" -msgstr "Pozycja przycisku Menu" - -#: src/canonmn.cpp:952 -msgid "Menu button return position" -msgstr "Pozycja przycisku Menu" - -#: src/canonmn.cpp:953 -msgid "Set Button Function" -msgstr "Funkcja przycisku Set" - -#: src/canonmn.cpp:953 -msgid "SET button func. when shooting" -msgstr "Funkcja przycisku SET podczas wykonywania zdjÄ™cia" - -#: src/canonmn.cpp:954 -msgid "Sensor Cleaning" -msgstr "Czyszczenie matrycy" - -#: src/canonmn.cpp:954 -msgid "Sensor cleaning" -msgstr "Czyszczenie matrycy" - -#: src/canonmn.cpp:955 -msgid "Superimposed Display" -msgstr "WyÅ›wietlanie naÅ‚ożone" - -#: src/canonmn.cpp:955 -msgid "Superimposed display" -msgstr "WyÅ›wietlanie naÅ‚ożone" - -#: src/canonmn.cpp:956 -msgid "Shutter Release No CF Card" -msgstr "Migawka wyzwolona bez karty CF" - -#: src/canonmn.cpp:956 -msgid "Shutter Release W/O CF Card" -msgstr "Migawka wyzwolona bez karty CF" - -#: src/canonmn.cpp:958 -msgid "Unknown Canon Custom Function tag" -msgstr "Nieznany znacznik Canon Custom Function" - -#: src/canonmn.cpp:969 -msgid "mid-right" -msgstr "Å›rodek-prawo" - -#: src/canonmn.cpp:970 src/canonmn.cpp:987 -msgid "bottom" -msgstr "dół" - -#: src/canonmn.cpp:972 src/canonmn.cpp:979 -msgid "top" -msgstr "góra" - -#: src/canonmn.cpp:973 -msgid "mid-left" -msgstr "Å›rodek-lewo" - -#: src/canonmn.cpp:980 -msgid "upper-left" -msgstr "góra-lewo" - -#: src/canonmn.cpp:981 -msgid "upper-right" -msgstr "góra-prawo" - -#: src/canonmn.cpp:985 -msgid "lower-left" -msgstr "dół-lewo" - -#: src/canonmn.cpp:986 -msgid "lower-right" -msgstr "dół-prawo" - -#: src/canonmn.cpp:992 src/olympusmn.cpp:225 src/olympusmn.cpp:405 -#: src/panasonicmn.cpp:341 src/properties.cpp:480 src/tags.cpp:415 -msgid "Image Width" -msgstr "Szerokość obrazu" - -#: src/canonmn.cpp:992 src/olympusmn.cpp:226 src/olympusmn.cpp:406 -#: src/panasonicmn.cpp:341 src/tags.cpp:2103 -msgid "Image width" -msgstr "Szerokość obrazu" - -#: src/canonmn.cpp:993 src/olympusmn.cpp:228 src/olympusmn.cpp:408 -#: src/panasonicmn.cpp:340 -msgid "Image Height" -msgstr "Wysokość obrazu" - -#: src/canonmn.cpp:993 src/olympusmn.cpp:229 src/olympusmn.cpp:409 -#: src/panasonicmn.cpp:340 src/tags.cpp:2106 -msgid "Image height" -msgstr "Wysokość obrazu" - -#: src/canonmn.cpp:994 -#, fuzzy -msgid "Image Width As Shot" -msgstr "Szerokość obrazu podczas fotografowania" - -#: src/canonmn.cpp:994 -#, fuzzy -msgid "Image width (as shot)" -msgstr "Szerokość obrazu podczas fotografowania" - -#: src/canonmn.cpp:995 -#, fuzzy -msgid "Image Height As Shot" -msgstr "Wysokość obrazu podczas fotografowania" - -#: src/canonmn.cpp:995 -#, fuzzy -msgid "Image height (as shot)" -msgstr "Wysokość obrazu podczas fotografowania" - -#: src/canonmn.cpp:996 src/nikonmn.cpp:848 -msgid "AF Points Used" -msgstr "Użyte punkty AF" - -#: src/canonmn.cpp:996 src/nikonmn.cpp:848 -msgid "AF points used" -msgstr "Użyte punkty AF" - -#: src/canonmn.cpp:997 -msgid "AF Points Used 20D" -msgstr "Użyte punkty AF 20D" - -#: src/canonmn.cpp:997 -msgid "AF points used (20D)" -msgstr "Użyte punkty AF (20D)" - -#: src/canonmn.cpp:999 -msgid "Unknown Canon Picture Info tag" -msgstr "Nieznany znacznik Canon Picture Info" - -#: src/canonmn.cpp:1010 -msgid "AEB" -msgstr "" - -#: src/canonmn.cpp:1011 -msgid "FEB" -msgstr "" - -#: src/canonmn.cpp:1012 src/minoltamn.cpp:511 src/nikonmn.cpp:767 -#: src/nikonmn.cpp:1136 src/nikonmn.cpp:1196 src/nikonmn.cpp:1232 -msgid "ISO" -msgstr "ISO" - -#: src/canonmn.cpp:1013 -#, fuzzy -msgid "WB" -msgstr "Balans bieli" - -#: src/canonmn.cpp:1024 -msgid "Postcard" -msgstr "Pocztówka" - -#: src/canonmn.cpp:1025 -msgid "Widescreen" -msgstr "Szeroki ekran" - -#: src/canonmn.cpp:1026 -msgid "Medium Movie" -msgstr "Åšredni film" - -#: src/canonmn.cpp:1027 -msgid "Small Movie" -msgstr "MaÅ‚y film" - -#: src/canonmn.cpp:1033 -msgid "On 1" -msgstr "WÅ‚Ä…czony 1" - -#: src/canonmn.cpp:1034 -msgid "On 2" -msgstr "WÅ‚Ä…czony 2" - -#: src/canonmn.cpp:1042 -msgid "On (shift AB)" -msgstr "WÅ‚Ä…czony (shitf AB)" - -#: src/canonmn.cpp:1043 -msgid "On (shift GM)" -msgstr "WÅ‚Ä…czony (shift GM)" - -#: src/canonmn.cpp:1049 src/nikonmn.cpp:667 src/nikonmn.cpp:680 -#: src/nikonmn.cpp:995 src/olympusmn.cpp:622 src/olympusmn.cpp:862 -msgid "Yellow" -msgstr "Żółty" - -#: src/canonmn.cpp:1050 src/nikonmn.cpp:668 src/olympusmn.cpp:623 -#: src/olympusmn.cpp:863 -msgid "Orange" -msgstr "PomaraÅ„czowy" - -#: src/canonmn.cpp:1051 src/nikonmn.cpp:669 src/nikonmn.cpp:679 -#: src/nikonmn.cpp:993 src/olympusmn.cpp:624 src/olympusmn.cpp:864 -msgid "Red" -msgstr "Czerwony" - -#: src/canonmn.cpp:1052 src/canonmn.cpp:1061 src/nikonmn.cpp:670 -#: src/nikonmn.cpp:681 src/olympusmn.cpp:625 src/olympusmn.cpp:635 -#: src/olympusmn.cpp:865 src/olympusmn.cpp:874 -msgid "Green" -msgstr "Zielony" - -#: src/canonmn.cpp:1059 src/nikonmn.cpp:683 src/nikonmn.cpp:994 -#: src/olympusmn.cpp:633 src/olympusmn.cpp:872 -msgid "Blue" -msgstr "Niebieski" - -#: src/canonmn.cpp:1060 src/olympusmn.cpp:634 src/olympusmn.cpp:873 -msgid "Purple" -msgstr "Purpurowy" - -#: src/canonmn.cpp:1067 -msgid "Bracket Mode" -msgstr "Tryb bracketingu" - -#: src/canonmn.cpp:1068 -msgid "Bracket Value" -msgstr "Krok bracketingu" - -#: src/canonmn.cpp:1069 -msgid "Bracket Shot Number" -msgstr "Numer zdjÄ™cia bracketingu" - -#: src/canonmn.cpp:1070 -msgid "Raw Jpg Quality" -msgstr "Jakość RAW JPG" - -#: src/canonmn.cpp:1071 -msgid "Raw Jpg Size" -msgstr "Rozmiar RAW JPG" - -#: src/canonmn.cpp:1073 -msgid "WB Bracket Mode" -msgstr "Tryb bracketingu balansu bieli" - -#: src/canonmn.cpp:1074 -msgid "WB Bracket Value AB" -msgstr "Krok bracketingu balansu bieli AB" - -#: src/canonmn.cpp:1075 -msgid "WB Bracket Value GM" -msgstr "Krok bracketingu balansu bieli GM" - -#: src/canonmn.cpp:1076 src/nikonmn.cpp:701 -msgid "Filter Effect" -msgstr "Efekt filtra" - -#: src/canonmn.cpp:1077 src/nikonmn.cpp:702 -msgid "Toning Effect" -msgstr "Efekt tonowania" - -#: src/canonmn.cpp:1078 -#, fuzzy -msgid "Macro Magnification" -msgstr "PowiÄ™kszenie elektroniczne" - -#: src/canonmn.cpp:1078 -#, fuzzy -msgid "Macro magnification" -msgstr "PowiÄ™kszenie elektroniczne" - -#: src/canonmn.cpp:1079 -msgid "Live View Shooting" -msgstr "" - -#: src/canonmn.cpp:1079 -#, fuzzy -msgid "Live view shooting" -msgstr "Ustawienie trybu dziaÅ‚ania" - -#: src/canonmn.cpp:1080 -#, fuzzy -msgid "Flash Exposure Lock" -msgstr "Kompensacja ekspozycji bÅ‚ysku" - -#: src/canonmn.cpp:1080 -#, fuzzy -msgid "Flash exposure lock" -msgstr "Kompensacja ekspozycji bÅ‚ysku" - -#: src/canonmn.cpp:1082 -msgid "Unknown Canon File Info tag" -msgstr "Nieznany znacznik Canon File Info" - -#: src/canonmn.cpp:1092 src/canonmn.cpp:1102 src/canonmn.cpp:1110 -#: src/canonmn.cpp:1123 src/fujimn.cpp:147 src/fujimn.cpp:154 -#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1135 -#: src/minoltamn.cpp:1221 src/minoltamn.cpp:1884 src/minoltamn.cpp:1973 -#: src/minoltamn.cpp:2007 src/minoltamn.cpp:2033 src/minoltamn.cpp:2059 -#: src/olympusmn.cpp:93 src/olympusmn.cpp:1135 src/panasonicmn.cpp:167 -#: src/panasonicmn.cpp:174 src/panasonicmn.cpp:204 src/pentaxmn.cpp:470 -#: src/sonymn.cpp:150 src/sonymn.cpp:475 src/sonymn.cpp:505 src/tags.cpp:1501 -msgid "Standard" -msgstr "Standardowy" - -#: src/canonmn.cpp:1100 -#, fuzzy -msgid "Lowest" -msgstr "Dolny lewy" - -#: src/canonmn.cpp:1104 -#, fuzzy -msgid "Highest" -msgstr "Dużo" - -#: src/canonmn.cpp:1112 -#, fuzzy -msgid "High Saturation" -msgstr "Nasycenie kolorów" - -#: src/canonmn.cpp:1114 -#, fuzzy -msgid "Low Saturation" -msgstr "Nasycenie" - -#: src/canonmn.cpp:1115 -#, fuzzy -msgid "CM Set 1" -msgstr "PC Set 1" - -#: src/canonmn.cpp:1116 -#, fuzzy -msgid "CM Set 2" -msgstr "PC Set 2" - -#: src/canonmn.cpp:1117 -msgid "User Def. 1" -msgstr "" - -#: src/canonmn.cpp:1118 -msgid "User Def. 2" -msgstr "" - -#: src/canonmn.cpp:1119 -msgid "User Def. 3" -msgstr "" - -#: src/canonmn.cpp:1120 -msgid "PC 1" -msgstr "" - -#: src/canonmn.cpp:1121 -msgid "PC 2" -msgstr "" - -#: src/canonmn.cpp:1122 -msgid "PC 3" -msgstr "" - -#: src/canonmn.cpp:1127 -msgid "Faithful" -msgstr "" - -#: src/canonmn.cpp:1128 src/minoltamn.cpp:903 src/minoltamn.cpp:953 -#: src/nikonmn.cpp:423 src/pentaxmn.cpp:707 -msgid "Monochrome" -msgstr "Monochromatyczny" - -#: src/canonmn.cpp:1133 -#, fuzzy -msgid "ToneCurve" -msgstr "Krzywa tonalna" - -#: src/canonmn.cpp:1133 -#, fuzzy -msgid "Tone curve" -msgstr "Krzywa tonalna" - -#: src/canonmn.cpp:1135 -#, fuzzy -msgid "SharpnessFrequency" -msgstr "Wyostrzenie" - -#: src/canonmn.cpp:1135 -#, fuzzy -msgid "Sharpness frequency" -msgstr "Ostrość" - -#: src/canonmn.cpp:1136 -#, fuzzy -msgid "SensorRedLevel" -msgstr "WB poziom czerwieni" - -#: src/canonmn.cpp:1136 -#, fuzzy -msgid "Sensor red level" -msgstr "WB poziom czerwieni" - -#: src/canonmn.cpp:1137 -#, fuzzy -msgid "SensorBlueLevel" -msgstr "WB poziom bÅ‚Ä™kitu" - -#: src/canonmn.cpp:1137 -#, fuzzy -msgid "Sensor blue level" -msgstr "WB poziom bÅ‚Ä™kitu" - -#: src/canonmn.cpp:1138 -#, fuzzy -msgid "WhiteBalanceRed" -msgstr "Balans bieli" - -#: src/canonmn.cpp:1138 -#, fuzzy -msgid "White balance red" -msgstr "Balans bieli 2" - -#: src/canonmn.cpp:1139 -#, fuzzy -msgid "WhiteBalanceBlue" -msgstr "Wartość balansu bieli" - -#: src/canonmn.cpp:1139 -#, fuzzy -msgid "White balance blue" -msgstr "Tablica balansu bieli" - -#: src/canonmn.cpp:1140 -#, fuzzy -msgid "WhiteBalance" -msgstr "Balans bieli" - -#: src/canonmn.cpp:1141 -#, fuzzy -msgid "ColorTemperature" -msgstr "Temperatura koloru" - -#: src/canonmn.cpp:1141 src/minoltamn.cpp:156 src/minoltamn.cpp:786 -#: src/minoltamn.cpp:1038 src/minoltamn.cpp:1053 src/minoltamn.cpp:1054 -#: src/minoltamn.cpp:1475 src/minoltamn.cpp:1577 src/olympusmn.cpp:833 -#: src/sonymn.cpp:357 src/sonymn.cpp:358 -msgid "Color Temperature" -msgstr "Temperatura koloru" - -#: src/canonmn.cpp:1142 -#, fuzzy -msgid "PictureStyle" -msgstr "Tryb zdjÄ™cia" - -#: src/canonmn.cpp:1142 -#, fuzzy -msgid "Picture style" -msgstr "Tryb zdjÄ™cia" - -#: src/canonmn.cpp:1143 -#, fuzzy -msgid "DigitalGain" -msgstr "Cyfrowe makro" - -#: src/canonmn.cpp:1143 -#, fuzzy -msgid "Digital gain" -msgstr "Cyfrowe makro" - -#: src/canonmn.cpp:1144 -msgid "WBShiftAB" -msgstr "" - -#: src/canonmn.cpp:1144 -#, fuzzy -msgid "WBShift AB" -msgstr "WÅ‚Ä…czony (shitf AB)" - -#: src/canonmn.cpp:1145 -msgid "WBShiftGM" -msgstr "" - -#: src/canonmn.cpp:1145 -#, fuzzy -msgid "WB Shift GM" -msgstr "WÅ‚Ä…czony (shift GM)" - -#: src/canonmn.cpp:1146 -#, fuzzy -msgid "Unknown Canon Processing Info tag" -msgstr "Nieznany znacznik Canon Picture Info" - -#: src/crwimage.cpp:664 -msgid "Header, offset" -msgstr "PrzesuniÄ™cie nagłówka" - -#: src/crwimage.cpp:681 -msgid "tag" -msgstr "znacznik" - -#: src/crwimage.cpp:683 -#, fuzzy -msgid "dir" -msgstr "katalog" - -#: src/crwimage.cpp:685 -msgid "type" -msgstr "typ" - -#: src/crwimage.cpp:686 -msgid "size" -msgstr "rozmiar" - -#: src/crwimage.cpp:687 -msgid "offset" -msgstr "przesuniÄ™cie" - -#: src/datasets.cpp:79 -msgid "(invalid)" -msgstr "(niepoprawny)" - -#: src/datasets.cpp:80 -msgid "IIM envelope record" -msgstr "Rekord koperty IIM" - -#: src/datasets.cpp:81 -msgid "IIM application record 2" -msgstr "Rekord aplikacji IIM 2" - -#: src/datasets.cpp:85 -msgid "Model Version" -msgstr "Wersja modelu" - -#: src/datasets.cpp:86 -msgid "" -"A binary number identifying the version of the Information Interchange " -"Model, Part I, utilised by the provider. Version numbers are assigned by " -"IPTC and NAA organizations." -msgstr "" - -#: src/datasets.cpp:90 src/panasonicmn.cpp:220 src/pentaxmn.cpp:378 -#: src/pentaxmn.cpp:962 src/pentaxmn.cpp:963 -msgid "Destination" -msgstr "Cel" - -#: src/datasets.cpp:91 -msgid "" -"This DataSet is to accommodate some providers who require routing " -"information above the appropriate OSI layers." -msgstr "" - -#: src/datasets.cpp:94 src/sonymn.cpp:348 src/sonymn.cpp:349 -msgid "File Format" -msgstr "Format pliku" - -#: src/datasets.cpp:95 -#, fuzzy -msgid "" -"A binary number representing the file format. The file format must be " -"registered with IPTC or NAA with a unique number assigned to it. The " -"information is used to route the data to the appropriate system and to allow " -"the receiving system to perform the appropriate actions there to." -msgstr "" -"Liczba dwójkowa okreÅ›lajÄ…ca format pliku. Format pliku musi być " -"zarejestrowany w IPTC lub NAA przypisanym do niego unikatowym numerem." - -#: src/datasets.cpp:101 -msgid "File Version" -msgstr "Wersja pliku" - -#: src/datasets.cpp:102 -msgid "" -"A binary number representing the particular version of the File Format " -"specified by tag." -msgstr "" -"Liczba dwójkowa okreÅ›lajÄ…ca wersjÄ™ formatu pliku podanÄ… w znaczniku " -"." - -#: src/datasets.cpp:105 -msgid "Service Id" -msgstr "Identyfikator usÅ‚ugi" - -#: src/datasets.cpp:106 -msgid "Identifies the provider and product" -msgstr "OkreÅ›la dostawcÄ™ i produkt" - -#: src/datasets.cpp:108 -msgid "Envelope Number" -msgstr "Numer koperty" - -#: src/datasets.cpp:109 -msgid "" -"The characters form a number that will be unique for the date specified in " -" tag and for the Service Identifier specified by " -" tag. If identical envelope numbers appear with the same " -"date and with the same Service Identifier, records 2-9 must be unchanged " -"from the original. This is not intended to be a sequential serial number " -"reception check." -msgstr "" - -#: src/datasets.cpp:117 -msgid "Product Id" -msgstr "ID produktu" - -#: src/datasets.cpp:118 -msgid "" -"Allows a provider to identify subsets of its overall service. Used to " -"provide receiving organisation data on which to select, route, or otherwise " -"handle data." -msgstr "" - -#: src/datasets.cpp:122 -msgid "Envelope Priority" -msgstr "Priorytet koperty" - -#: src/datasets.cpp:123 -msgid "" -"Specifies the envelope handling priority and not the editorial urgency (see " -" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " -"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " -"Priority. The numeral \"0\" is reserved for future use." -msgstr "" - -#: src/datasets.cpp:129 -msgid "Date Sent" -msgstr "Data wysÅ‚ania" - -#: src/datasets.cpp:130 -msgid "" -"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " -"to indicate year, month and day the service sent the material." -msgstr "" -"Używa formatu WWRRMMDD (wiek, rok, miesiÄ…c, dzieÅ„) zdefiniowanego w ISO " -"8601, aby okreÅ›li rok, miesiÄ…c i dzieÅ„ kiedy usÅ‚uga wysÅ‚aÅ‚a materiaÅ‚." - -#: src/datasets.cpp:133 -msgid "Time Sent" -msgstr "Czas wysÅ‚ania" - -#: src/datasets.cpp:134 -msgid "" -"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " -"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " -"Universal Coordinated Time as described in ISO 8601. This is the time the " -"service sent the material." -msgstr "" - -#: src/datasets.cpp:139 -msgid "Character Set" -msgstr "Zestaw znaków" - -#: src/datasets.cpp:140 -msgid "" -"This tag consisting of one or more control functions used for the " -"announcement, invocation or designation of coded character sets. The control " -"functions follow the ISO 2022 standard and may consist of the escape control " -"character and one or more graphic characters." -msgstr "" - -#: src/datasets.cpp:145 -msgid "Unique Name Object" -msgstr "Unikalna nazwa obiektu" - -#: src/datasets.cpp:146 -msgid "" -"This tag provide a globally unique identification for objects as specified " -"in the IIM, independent of provider and for any media form. The provider " -"must ensure the UNO is unique. Objects with the same UNO are identical." -msgstr "" - -#: src/datasets.cpp:151 -msgid "ARM Identifier" -msgstr "Identyfikator ARM" - -#: src/datasets.cpp:152 -msgid "" -"The DataSet identifies the Abstract Relationship Method identifier (ARM) " -"which is described in a document registered by the originator of the ARM " -"with the IPTC and NAA organizations." -msgstr "" - -#: src/datasets.cpp:156 -msgid "ARM Version" -msgstr "Wersja ARM" - -#: src/datasets.cpp:157 -#, fuzzy -msgid "" -"This tag consisting of a binary number representing the particular version " -"of the ARM specified by tag ." -msgstr "" -"Liczba dwójkowa okreÅ›lajÄ…ca wersjÄ™ formatu pliku podanÄ… w znaczniku " -"." - -#: src/datasets.cpp:170 -msgid "Record Version" -msgstr "Wersja rekordu" - -#: src/datasets.cpp:171 -msgid "" -"A binary number identifying the version of the Information Interchange " -"Model, Part II, utilised by the provider. Version numbers are assigned by " -"IPTC and NAA organizations." -msgstr "" - -#: src/datasets.cpp:175 -msgid "Object Type" -msgstr "Typ obiektu" - -#: src/datasets.cpp:176 -msgid "" -"The Object Type is used to distinguish between different types of objects " -"within the IIM. The first part is a number representing a language " -"independent international reference to an Object Type followed by a colon " -"separator. The second part, if used, is a text representation of the Object " -"Type Number consisting of graphic characters plus spaces either in English " -"or in the language of the service as indicated in tag " -msgstr "" - -#: src/datasets.cpp:184 -msgid "Object Attribute" -msgstr "Atrybut obiektu" - -#: src/datasets.cpp:185 -msgid "" -"The Object Attribute defines the nature of the object independent of the " -"Subject. The first part is a number representing a language independent " -"international reference to an Object Attribute followed by a colon " -"separator. The second part, if used, is a text representation of the Object " -"Attribute Number consisting of graphic characters plus spaces either in " -"English, or in the language of the service as indicated in tag " -"" -msgstr "" - -#: src/datasets.cpp:193 -msgid "Object Name" -msgstr "Nazwa obiektu" - -#: src/datasets.cpp:194 -msgid "" -"Used as a shorthand reference for the object. Changes to exist-ing data, " -"such as updated stories or new crops on photos, should be identified in tag " -"." -msgstr "" - -#: src/datasets.cpp:198 -msgid "Document Title" -msgstr "TytuÅ‚ dokumentu" - -#: src/datasets.cpp:199 src/olympusmn.cpp:820 -msgid "Edit Status" -msgstr "Stan edycji" - -#: src/datasets.cpp:200 -msgid "Status of the object data, according to the practice of the provider." -msgstr "" - -#: src/datasets.cpp:202 -msgid "Editorial Update" -msgstr "Aktualizacja edytorska" - -#: src/datasets.cpp:203 -msgid "" -"Indicates the type of update that this object provides to a previous object. " -"The link to the previous object is made using the tags and " -", according to the practices of the provider." -msgstr "" - -#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:419 -msgid "Urgency" -msgstr "Ważność" - -#: src/datasets.cpp:208 -msgid "" -"Specifies the editorial urgency of content and not necessarily the envelope " -"handling priority (see tag ). The \"1\" is most urgent, " -"\"5\" normal and \"8\" denotes the least-urgent copy." -msgstr "" - -#: src/datasets.cpp:213 src/properties.cpp:167 -msgid "Subject" -msgstr "Temat" - -#: src/datasets.cpp:214 -msgid "The Subject Reference is a structured definition of the subject matter." -msgstr "" - -#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:405 -msgid "Category" -msgstr "Kategoria" - -#: src/datasets.cpp:217 -msgid "" -"Identifies the subject of the object data in the opinion of the provider. A " -"list of categories will be maintained by a regional registry, where " -"available, otherwise by the provider." -msgstr "" - -#: src/datasets.cpp:222 -msgid "Supplemental Category" -msgstr "Kategoria dodatkowa" - -#: src/datasets.cpp:223 -msgid "" -"Supplemental categories further refine the subject of an object data. A " -"supplemental category may include any of the recognised categories as used " -"in tag . Otherwise, selection of supplemental categories are left " -"to the provider." -msgstr "" - -#: src/datasets.cpp:228 src/properties.cpp:417 -msgid "Supplemental Categories" -msgstr "Kategorie dodatkowe" - -#: src/datasets.cpp:229 -#, fuzzy -msgid "Fixture Id" -msgstr "Flesz uruchomiÅ‚ siÄ™" - -#: src/datasets.cpp:230 -msgid "" -"Identifies object data that recurs often and predictably. Enables users to " -"immediately find or recall such an object." -msgstr "" - -#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:395 -msgid "Keywords" -msgstr "SÅ‚owa kluczowe" - -#: src/datasets.cpp:234 -msgid "" -"Used to indicate specific information retrieval words. It is expected that a " -"provider of various types of data that are related in subject matter uses " -"the same keyword, enabling the receiving system or subsystems to search " -"across all types of data for related material." -msgstr "" - -#: src/datasets.cpp:240 -msgid "Location Code" -msgstr "Kod lokalizacji" - -#: src/datasets.cpp:241 -msgid "" -"Indicates the code of a country/geographical location referenced by the " -"content of the object. Where ISO has established an appropriate country code " -"under ISO 3166, that code will be used. When ISO 3166 does not adequately " -"provide for identification of a location or a country, e.g. ships at sea, " -"space, IPTC will assign an appropriate three-character code under the " -"provisions of ISO 3166 to avoid conflicts." -msgstr "" - -#: src/datasets.cpp:248 -msgid "Location Name" -msgstr "Nazwa lokalizacji" - -#: src/datasets.cpp:249 -msgid "" -"Provides a full, publishable name of a country/geographical location " -"referenced by the content of the object, according to guidelines of the " -"provider." -msgstr "" - -#: src/datasets.cpp:253 src/properties.cpp:358 -msgid "Release Date" -msgstr "Data udostÄ™pnienia" - -#: src/datasets.cpp:254 -msgid "" -"Designates in the form CCYYMMDD the earliest date the provider intends the " -"object to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:257 -msgid "Release Time" -msgstr "Czas udostÄ™pnienia" - -#: src/datasets.cpp:258 -msgid "" -"Designates in the form HHMMSS:HHMM the earliest time the provider intends " -"the object to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:261 -msgid "Expiration Date" -msgstr "Data ważnoÅ›ci" - -#: src/datasets.cpp:262 -msgid "" -"Designates in the form CCYYMMDD the latest date the provider or owner " -"intends the object data to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:265 -msgid "ExpirationTime" -msgstr "Czas ważnoÅ›ci" - -#: src/datasets.cpp:266 -msgid "" -"Designates in the form HHMMSS:HHMM the latest time the provider or owner " -"intends the object data to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:269 -msgid "Special Instructions" -msgstr "Specjalne instrukcje" - -#: src/datasets.cpp:270 -msgid "" -"Other editorial instructions concerning the use of the object data, such as " -"embargoes and warnings." -msgstr "" -"Inne instrukcje edytorskie dotyczÄ…ce użycia danych obiektu, takie jak " -"ostrzeżenia i ograniczenia." - -#: src/datasets.cpp:273 src/properties.cpp:414 -msgid "Instructions" -msgstr "Instrukcje" - -#: src/datasets.cpp:274 -msgid "Action Advised" -msgstr "Zalecana akcja" - -#: src/datasets.cpp:275 -msgid "" -"Indicates the type of action that this object provides to a previous object. " -"The link to the previous object is made using tags and " -", according to the practices of the provider." -msgstr "" - -#: src/datasets.cpp:279 -msgid "Reference Service" -msgstr "OdwoÅ‚anie do usÅ‚ugi" - -#: src/datasets.cpp:280 -msgid "" -"Identifies the Service Identifier of a prior envelope to which the current " -"object refers." -msgstr "" - -#: src/datasets.cpp:283 -msgid "Reference Date" -msgstr "Data odniesienia" - -#: src/datasets.cpp:284 -#, fuzzy -msgid "" -"Identifies the date of a prior envelope to which the current object refers." -msgstr "OkreÅ›la rodzaj programu użyty do uzyskania danych obiektu." - -#: src/datasets.cpp:286 -msgid "Reference Number" -msgstr "Numer odniesienia" - -#: src/datasets.cpp:287 -msgid "" -"Identifies the Envelope Number of a prior envelope to which the current " -"object refers." -msgstr "" - -#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:409 -msgid "Date Created" -msgstr "Data utworzenia" - -#: src/datasets.cpp:290 -msgid "" -"Represented in the form CCYYMMDD to designate the date the intellectual " -"content of the object data was created rather than the date of the creation " -"of the physical representation. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:295 -msgid "Time Created" -msgstr "Czas utworzenia" - -#: src/datasets.cpp:296 -msgid "" -"Represented in the form HHMMSS:HHMM to designate the time the intellectual " -"content of the object data current source material was created rather than " -"the creation of the physical representation. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:301 -msgid "Digitization Date" -msgstr "Data utworzenia postaci cyfrowej" - -#: src/datasets.cpp:302 -msgid "" -"Represented in the form CCYYMMDD to designate the date the digital " -"representation of the object data was created. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:305 -msgid "Digitization Time" -msgstr "Czas utworzenia postaci cyfrowej" - -#: src/datasets.cpp:306 -msgid "" -"Represented in the form HHMMSS:HHMM to designate the time the digital " -"representation of the object data was created. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 -#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:106 -#: src/pentaxmn.cpp:468 src/pentaxmn.cpp:526 src/sigmamn.cpp:154 -#: src/sonymn.cpp:110 -msgid "Program" -msgstr "Program" - -#: src/datasets.cpp:311 -msgid "Identifies the type of program used to originate the object data." -msgstr "OkreÅ›la rodzaj programu użyty do uzyskania danych obiektu." - -#: src/datasets.cpp:313 -msgid "Program Version" -msgstr "Wersja programu" - -#: src/datasets.cpp:314 -msgid "Used to identify the version of the program mentioned in tag ." -msgstr "Używane do okreÅ›lenia wersji programu użytego w znaczniku ." - -#: src/datasets.cpp:316 -msgid "Object Cycle" -msgstr "Cykl obiektu" - -#: src/datasets.cpp:317 -msgid "Used to identify the editorial cycle of object data." -msgstr "" - -#: src/datasets.cpp:319 -msgid "By-line" -msgstr "Twórca" - -#: src/datasets.cpp:320 -msgid "" -"Contains name of the creator of the object data, e.g. writer, photographer " -"or graphic artist." -msgstr "" -"Zawiera nazwÄ™ twórcy danych obiektu, np. fotografa, pisarza lub artysty " -"grafika." - -#: src/datasets.cpp:323 -msgid "Author" -msgstr "Autor" - -#: src/datasets.cpp:324 -msgid "By-line Title" -msgstr "TytuÅ‚ twórcy" - -#: src/datasets.cpp:325 -msgid "" -"A by-line title is the title of the creator or creators of an object data. " -"Where used, a by-line title should follow the by-line it modifies." -msgstr "" - -#: src/datasets.cpp:328 src/datasets.cpp:332 src/properties.cpp:406 -msgid "City" -msgstr "Miasto" - -#: src/datasets.cpp:329 -msgid "" -"Identifies city of object data origin according to guidelines established by " -"the provider." -msgstr "" - -#: src/datasets.cpp:333 -msgid "Sub Location" -msgstr "Szczegółowa lokalizacja" - -#: src/datasets.cpp:334 -msgid "" -"Identifies the location within a city from which the object data originates, " -"according to guidelines established by the provider." -msgstr "" - -#: src/datasets.cpp:337 -msgid "Province State" -msgstr "Prowincja/stan" - -#: src/datasets.cpp:338 -msgid "" -"Identifies Province/State of origin according to guidelines established by " -"the provider." -msgstr "" - -#: src/datasets.cpp:341 -msgid "State/Province" -msgstr "Stan/Prowincja" - -#: src/datasets.cpp:342 src/properties.cpp:649 -msgid "Country Code" -msgstr "Kod paÅ„stwa" - -#: src/datasets.cpp:343 -msgid "" -"Indicates the code of the country/primary location where the intellectual " -"property of the object data was created, e.g. a photo was taken, an event " -"occurred. Where ISO has established an appropriate country code under ISO " -"3166, that code will be used. When ISO 3166 does not adequately provide for " -"identification of a location or a new country, e.g. ships at sea, space, " -"IPTC will assign an appropriate three-character code under the provisions of " -"ISO 3166 to avoid conflicts." -msgstr "" - -#: src/datasets.cpp:352 -msgid "Country Name" -msgstr "Nazwa paÅ„stwa" - -#: src/datasets.cpp:353 -msgid "" -"Provides full, publishable, name of the country/primary location where the " -"intellectual property of the object data was created, according to " -"guidelines of the provider." -msgstr "" - -#: src/datasets.cpp:357 src/properties.cpp:407 -msgid "Country" -msgstr "PaÅ„stwo" - -#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:418 -#, fuzzy -msgid "Transmission Reference" -msgstr "Oryginalne miejsce transmisji" - -#: src/datasets.cpp:359 -msgid "" -"A code representing the location of original transmission according to " -"practices of the provider." -msgstr "" - -#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:413 -msgid "Headline" -msgstr "Nagłówek" - -#: src/datasets.cpp:364 -msgid "" -"A publishable entry providing a synopsis of the contents of the object data." -msgstr "" - -#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:408 -#, fuzzy -msgid "Credit" -msgstr "Wyrazy uznania" - -#: src/datasets.cpp:368 -msgid "" -"Identifies the provider of the object data, not necessarily the owner/" -"creator." -msgstr "" - -#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:166 -#: src/properties.cpp:415 -msgid "Source" -msgstr "ŹródÅ‚o" - -#: src/datasets.cpp:372 -msgid "" -"Identifies the original owner of the intellectual content of the object " -"data. This could be an agency, a member of an agency or an individual." -msgstr "" - -#: src/datasets.cpp:377 -msgid "Contains any necessary copyright notice." -msgstr "Zawiera wszelkie niezbÄ™dne uwagi o prawach autorskich." - -#: src/datasets.cpp:379 -msgid "Copyright Notice" -msgstr "Uwaga o prawach autorskich" - -#: src/datasets.cpp:380 src/properties.cpp:937 src/properties.cpp:946 -msgid "Contact" -msgstr "Kontakt" - -#: src/datasets.cpp:381 -msgid "" -"Identifies the person or organisation which can provide further background " -"information on the object data." -msgstr "" -"OkreÅ›la osobÄ™ lub organizacjÄ™ która może dostarczyć dalszych informacji o " -"danych obiektu." - -#: src/datasets.cpp:384 -msgid "Caption" -msgstr "Opis" - -#: src/datasets.cpp:385 -msgid "A textual description of the object data." -msgstr "Tekstowy opis obiektu." - -#: src/datasets.cpp:387 src/properties.cpp:151 src/properties.cpp:981 -msgid "Description" -msgstr "Opis" - -#: src/datasets.cpp:388 -msgid "Writer" -msgstr "Autor opisu" - -#: src/datasets.cpp:389 -msgid "" -"Identification of the name of the person involved in the writing, editing or " -"correcting the object data or caption/abstract." -msgstr "" - -#: src/datasets.cpp:392 -msgid "Rasterized Caption" -msgstr "Opis rastrowy" - -#: src/datasets.cpp:393 -msgid "" -"Contains the rasterized object data description and is used where characters " -"that have not been coded are required for the caption." -msgstr "" - -#: src/datasets.cpp:397 -msgid "Indicates the color components of an image." -msgstr "OkreÅ›la skÅ‚adowe koloru na obrazie." - -#: src/datasets.cpp:399 -msgid "Image Orientation" -msgstr "Orientacja obrazu" - -#: src/datasets.cpp:400 -msgid "Indicates the layout of an image." -msgstr "OkreÅ›la ukÅ‚ad obrazu." - -#: src/datasets.cpp:402 src/properties.cpp:157 -msgid "Language" -msgstr "JÄ™zyk" - -#: src/datasets.cpp:403 -msgid "" -"Describes the major national language of the object, according to the 2-" -"letter codes of ISO 639:1988. Does not define or imply any coded character " -"set, but is used for internal routing, e.g. to various editorial desks." -msgstr "" - -#: src/datasets.cpp:408 -msgid "Audio Type" -msgstr "Typ dźwiÄ™ku" - -#: src/datasets.cpp:409 -msgid "Indicates the type of an audio content." -msgstr "OkreÅ›la typ zawartoÅ›ci dzwiÄ™kowej." - -#: src/datasets.cpp:411 -msgid "Audio Rate" -msgstr "Próbkowanie dźwiÄ™ku" - -#: src/datasets.cpp:412 -msgid "Indicates the sampling rate in Hertz of an audio content." -msgstr "Oznacza czÄ™stotliwość próbkowania zawartoÅ›ci dźwiÄ™kowej (w hercach)." - -#: src/datasets.cpp:414 -#, fuzzy -msgid "Audio Resolution" -msgstr "Rozdzielczość próbkowania dźwiÄ™ku" - -#: src/datasets.cpp:415 -#, fuzzy -msgid "Indicates the sampling resolution of an audio content." -msgstr "Oznacza czÄ™stotliwość próbkowania zawartoÅ›ci dźwiÄ™kowej (w hercach)." - -#: src/datasets.cpp:417 -msgid "Audio Duration" -msgstr "Czas trwania" - -#: src/datasets.cpp:418 -msgid "Indicates the duration of an audio content." -msgstr "OkreÅ›la dÅ‚ugość trwania zawartoÅ›ci dźwiÄ™kowej." - -#: src/datasets.cpp:420 -msgid "Audio Outcue" -msgstr "Komunikat sÅ‚owny" - -#: src/datasets.cpp:421 -msgid "" -"Identifies the content of the end of an audio object data, according to " -"guidelines established by the provider." -msgstr "" - -#: src/datasets.cpp:424 -msgid "Preview Format" -msgstr "Format podglÄ…du" - -#: src/datasets.cpp:425 -msgid "" -"A binary number representing the file format of the object data preview. The " -"file format must be registered with IPTC or NAA organizations with a unique " -"number assigned to it." -msgstr "" -"Liczba dwójkowa okreÅ›lajÄ…ca format pliku podglÄ…du danych. Format pliku musi " -"być zarejestrowany w organizacjach IPTC lub NAA z przypisanym do niego " -"unikalnym numerem." - -#: src/datasets.cpp:429 -msgid "Preview Version" -msgstr "Wersja podglÄ…du" - -#: src/datasets.cpp:430 -msgid "" -"A binary number representing the particular version of the object data " -"preview file format specified in tag ." -msgstr "" -"Liczba dwójkowa okreÅ›lajÄ…ca wersjÄ™ formatu pliku podglÄ…du danych " -"wyszczególnionego w znaczniku ." - -#: src/datasets.cpp:433 -msgid "Preview Data" -msgstr "Dane podglÄ…du" - -#: src/datasets.cpp:434 -msgid "Binary image preview data." -msgstr "Dane binarne podglÄ…du obrazu." - -#: src/datasets.cpp:436 src/datasets.cpp:437 -msgid "(Invalid)" -msgstr "(NieprawidÅ‚owy)" - -#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 -msgid "Unknown dataset" -msgstr "Nieznany zestaw danych" - -#: src/error.cpp:55 -#, fuzzy -msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." -msgstr "BÅ‚Ä…d %0: arg1=%1, arg2=%2, arg3=%3." - -#: src/error.cpp:56 -msgid "Success" -msgstr "Powodzenie" - -#: src/error.cpp:59 -msgid "This does not look like a %1 image" -msgstr "To nie wyglÄ…da na obrazek %1" - -#: src/error.cpp:60 -msgid "Invalid dataset name `%1'" -msgstr "NieprawidÅ‚owa nazwa zestawu danych \"%1\"" - -#: src/error.cpp:61 -msgid "Invalid record name `%1'" -msgstr "NieprawidÅ‚owa nazwa rekordu \"%1\"" - -#: src/error.cpp:62 -msgid "Invalid key `%1'" -msgstr "NieprawidÅ‚owy klucz \"%1\"" - -#: src/error.cpp:63 -msgid "Invalid tag name or ifdId `%1', ifdId %2" -msgstr "NieprawidÅ‚owa nazwa znacznika lub ifdId \"%1\", ifdId %2" - -#: src/error.cpp:64 -msgid "Value not set" -msgstr "Wartość nie ustawiona" - -#: src/error.cpp:65 -msgid "%1: Failed to open the data source: %2" -msgstr "%1: Nie można byÅ‚o otworzyć źródÅ‚a danych: %2" - -#: src/error.cpp:66 -msgid "%1: Failed to open file (%2): %3" -msgstr "%1: Nie można byÅ‚o otworzyć pliku (%2): %3" - -#: src/error.cpp:67 -msgid "%1: The file contains data of an unknown image type" -msgstr "%1: Plik zawiera dane nieznanego typu obrazu" - -#: src/error.cpp:68 -msgid "The memory contains data of an unknown image type" -msgstr "Pamięć zawiera dane nieznanego typu obrazu" - -#: src/error.cpp:69 -msgid "Image type %1 is not supported" -msgstr "Obrazy typu \"%1\" nie sÄ… obsÅ‚ugiwane" - -#: src/error.cpp:70 -msgid "Failed to read image data" -msgstr "Nie można byÅ‚o odczytać danych obrazu" - -#: src/error.cpp:71 -msgid "This does not look like a JPEG image" -msgstr "To nie wyglÄ…da jak obrazek JPEG" - -#: src/error.cpp:72 -#, fuzzy -msgid "%1: Failed to map file for reading and writing: %2" -msgstr "Nie można otworzyć pliku poleceÅ„ do odczytu\n" - -#: src/error.cpp:73 -msgid "%1: Failed to rename file to %2: %3" -msgstr "%1: Nie można byÅ‚o zmienić nazwy pliku na %2: %3" - -#: src/error.cpp:74 -msgid "%1: Transfer failed: %2" -msgstr "%1: Transfer nie powiódÅ‚ siÄ™: %2" - -#: src/error.cpp:75 -msgid "Memory transfer failed: %1" -msgstr "Transfer pamiÄ™ci nie powiódÅ‚ siÄ™: %1" - -#: src/error.cpp:76 -msgid "Failed to read input data" -msgstr "Nie można byÅ‚o odczytać danych wejÅ›ciowych" - -#: src/error.cpp:77 -msgid "Failed to write image" -msgstr "Nie można byÅ‚o zapisać obrazka" - -#: src/error.cpp:78 -msgid "Input data does not contain a valid image" -msgstr "Dane wejÅ›ciowe nie zawierajÄ… prawidÅ‚owego obrazu" - -#: src/error.cpp:79 -msgid "Invalid ifdId %1" -msgstr "NieprawidÅ‚owy ifdld %1" - -#: src/error.cpp:80 -msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" -msgstr "" -"Entry::setValue: Zbyt duża wartość (znacznik=%1, rozmiar=%2, wymagane=%3)" - -#: src/error.cpp:81 -msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" -msgstr "" -"Entry::setDataArea: Zbyt duża wartość (znacznik=%1, rozmiar=%2, wymagane=%3)" - -#: src/error.cpp:82 -msgid "Offset out of range" -msgstr "Pozycja poza zakresem" - -#: src/error.cpp:83 -msgid "Unsupported data area offset type" -msgstr "NieobsÅ‚ugiwany typ przesuniÄ™cia obszaru danych" - -#: src/error.cpp:84 -msgid "Invalid charset: `%1'" -msgstr "NieprawidÅ‚owy zestaw znaków: \"%1\"" - -#: src/error.cpp:85 -msgid "Unsupported date format" -msgstr "NieobsÅ‚ugiwany format daty" - -#: src/error.cpp:86 -msgid "Unsupported time format" -msgstr "NieobsÅ‚ugiwany format czasu" - -#: src/error.cpp:87 -#, fuzzy -msgid "Writing to %1 images is not supported" -msgstr "Zapis do formatu %2 nie jest obsÅ‚ugiwany" - -#: src/error.cpp:88 -msgid "Setting %1 in %2 images is not supported" -msgstr "Ustawienie %1 w obrazach %2 nie jest obsÅ‚ugiwane" - -#: src/error.cpp:89 -msgid "This does not look like a CRW image" -msgstr "To nie wyglÄ…da jak obrazek CRW" - -#: src/error.cpp:90 -msgid "%1: Not supported" -msgstr "%1: NieobsÅ‚ugiwany" - -#: src/error.cpp:91 -msgid "No namespace info available for XMP prefix `%1'" -msgstr "" -"Brak dostÄ™pnej informacji o przestrzeni nazw dla przedrostka \"%1\" XMP" - -#: src/error.cpp:92 -msgid "No prefix registered for namespace `%2', needed for property path `%1'" -msgstr "" -"Brak zarejestrowanego przedrostka dla przestrzeni nazw \"%2\", potrzebnego " -"dla wÅ‚aÅ›ciwego umieszczenia \"%1\"" - -#: src/error.cpp:93 -msgid "Size of %1 JPEG segment is larger than 65535 bytes" -msgstr "Rozmiar %1 segmentu JPEG jest wiÄ™kszy niż 65535 bajtów" - -#: src/error.cpp:94 -msgid "Unhandled Xmpdatum %1 of type %2" -msgstr "NieobsÅ‚ugiwany Xmpdatum %1 typu %2" - -#: src/error.cpp:95 -msgid "Unhandled XMP node %1 with opt=%2" -msgstr "NieobsÅ‚ugiwany wÄ™zeÅ‚ XMP %1 z opt=%2" - -#: src/error.cpp:96 -msgid "XMP Toolkit error %1: %2" -msgstr "BÅ‚Ä…d pakietu narzÄ™dziowego XMP %1: %2" - -#: src/error.cpp:97 -msgid "Failed to decode Lang Alt property %1 with opt=%2" -msgstr "Nie można byÅ‚o zdekodować wÅ‚aÅ›ciwoÅ›ci Lang Alt %1 z opt=%2" - -#: src/error.cpp:98 -msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" -msgstr "Nie można byÅ‚o zdekodować kwalifikatora Lang Alt %1 z opt=%2" - -#: src/error.cpp:99 -msgid "Failed to encode Lang Alt property %1" -msgstr "Nie można byÅ‚o zdekodować wÅ‚aÅ›ciwoÅ›ci Lang Alt %1" - -#: src/error.cpp:100 -msgid "Failed to determine property name from path %1, namespace %2" -msgstr "" -"Nie można byÅ‚o okreÅ›lić nazwy wÅ‚aÅ›ciwoÅ›ci w Å›cieżce %1, przestrzeÅ„ nazw %2" - -#: src/error.cpp:101 -msgid "Schema namespace %1 is not registered with the XMP Toolkit" -msgstr "" -"Schemat przestrzeni nazw %1 nie jest zarejestrowany w pakiecie narzÄ™dzionym " -"XMP" - -#: src/error.cpp:102 -msgid "No namespace registered for prefix `%1'" -msgstr "Brak zarejestrowanej przestrzeni nazw dla przedrostka \"%1\"" - -#: src/error.cpp:103 -msgid "" -"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" -"%1', `%2', `%3'" -msgstr "" -"Aliasy nie sÄ… obsÅ‚ugiwane. PrzeÅ›lij proszÄ™ ten pakiet XMP do ahuggel@gmx.net " -"\"%1\", \"%2\", \"%3\"" - -#: src/error.cpp:104 -msgid "Invalid XmpText type `%1'" -msgstr "NieprawidÅ‚owy typ XmpText \"%1\"" - -#: src/error.cpp:105 -msgid "TIFF directory %1 has too many entries" -msgstr "Katalog TIFF %1 posiada zbyt wiele elementów" - -#: src/error.cpp:106 -#, fuzzy -msgid "Multiple TIFF array element tags %1 in one directory" -msgstr "Znacznik elementu tablicy TIFF %1 posiada zÅ‚y typ" - -#: src/error.cpp:107 -msgid "TIFF array element tag %1 has wrong type" -msgstr "Znacznik elementu tablicy TIFF %1 posiada zÅ‚y typ" - -#: src/error.cpp:108 -#, fuzzy -msgid "%1 has invalid XMP value type `%2'" -msgstr "NieprawidÅ‚owy typ XmpText \"%1\"" - -#: src/exiv2.cpp:212 -msgid "Copyright (C) 2004-2012 Andreas Huggel.\n" -msgstr "Copyright (C) 2004-2012 Andreas Huggel.\n" - -#: src/exiv2.cpp:214 -msgid "" -"This program is free software; you can redistribute it and/or\n" -"modify it under the terms of the GNU General Public License\n" -"as published by the Free Software Foundation; either version 2\n" -"of the License, or (at your option) any later version.\n" -msgstr "" -"Ten program jest wolnym oprogramowaniem, możesz go rozpowszechniać\n" -"i/lub zmieniać na warunkach Publicznej Licencji GNU opublikowanej\n" -"przez Free Software Foundation, zarówno w wersji 2 tej Licencji, jak\n" -"też jakiejkolwiek późniejszej wersji.\n" - -#: src/exiv2.cpp:219 -msgid "" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -msgstr "" -"Ten program rozpowszechniany jest z nadziejÄ…, iż bÄ™dzie on\n" -"użyteczny - jednak BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyÅ›lnej\n" -"gwarancji PRZYDATNOÅšCI HANDLOWEJ albo PRZYDATNOÅšCI DO OKREÅšLONYCH\n" -"ZASTOSOWAŃ. W celu uzyskania bliższych informacji przeczytaj\n" -"PowszechnÄ… LicencjÄ™ PublicznÄ… GNU.\n" - -#: src/exiv2.cpp:224 -msgid "" -"You should have received a copy of the GNU General Public\n" -"License along with this program; if not, write to the Free\n" -"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" -"Boston, MA 02110-1301 USA\n" -msgstr "" -"PowinienieÅ› otrzymać kopiÄ™ Publicznej Licencji GNU z tym\n" -"programem, jeÅ›li nie napisz do Free Software Foundation, Inc.\n" -"51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n" - -#: src/exiv2.cpp:232 -msgid "Usage:" -msgstr "Użycie:" - -#: src/exiv2.cpp:233 -msgid "" -"[ options ] [ action ] file ...\n" -"\n" -msgstr "" -"[ opcje ] [ akcja ] plik ...\n" -"\n" - -#: src/exiv2.cpp:234 -msgid "Manipulate the Exif metadata of images.\n" -msgstr "Manipulowanie metadanymi Exif obrazów.\n" - -#: src/exiv2.cpp:240 -msgid "" -"\n" -"Actions:\n" -msgstr "" -"\n" -"Akcje:\n" - -#: src/exiv2.cpp:241 -msgid "" -" ad | adjust Adjust Exif timestamps by the given time. This action\n" -" requires at least one of the -a, -Y, -O or -D options.\n" -msgstr "" -" ad | adjust Poprawia znaczniki czasu Exif do podanego czasu. Ta akcja\n" -" wymaga użycia co najmniej jednej z opcji -a, -Y, -O lub -" -"D.\n" - -#: src/exiv2.cpp:243 -msgid " pr | print Print image metadata.\n" -msgstr " pr | print WyÅ›wietla metadane obrazu.\n" - -#: src/exiv2.cpp:244 -msgid " rm | delete Delete image metadata from the files.\n" -msgstr " rm | delete Usuwa metadane obrazu z plików.\n" - -#: src/exiv2.cpp:245 -msgid "" -" in | insert Insert metadata from corresponding *.exv files.\n" -" Use option -S to change the suffix of the input files.\n" -msgstr "" -" in | insert Wstawia metadane z odpowiadajÄ…cych plików *.exv.\n" -" Użyj opcji -S aby zmienić rozszerzenie plików wejÅ›ciowych.\n" - -#: src/exiv2.cpp:247 -msgid "" -" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" -msgstr "" -" ex | extract Eksportuje metadane do plików *.exv, *.xmp oraz plików " -"miniaturek.\n" - -#: src/exiv2.cpp:248 -msgid "" -" mv | rename Rename files and/or set file timestamps according to the\n" -" Exif create timestamp. The filename format can be set with\n" -" -r format, timestamp options are controlled with -t and -T.\n" -msgstr "" -" mv | rename Zmienia nazwy plików i/lub ustawia znaczniki czasu " -"odpowiadajÄ…ce\n" -" znacznikowi utworzenia Exif. Format nazwy pliku może być " -"ustawiony za\n" -" pomocÄ… -r format, opcje znacznika czasu sÄ… kontrolowane za " -"pomocÄ… -t i -T.\n" - -#: src/exiv2.cpp:251 -msgid "" -" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" -" IPTC metadata of image files or set the JPEG comment.\n" -" Requires option -c, -m or -M.\n" -msgstr "" -" mo | modify Modyfikacja (dodanie, ustawienie, usuniÄ™cie) metadanych " -"Exif\n" -" i IPTC w plikach lub ustawienie komentarza JPEG.\n" -" Wymaga podania opcji -c, -m lub -M.\n" - -#: src/exiv2.cpp:254 -msgid "" -" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" -" Exif tag.\n" -msgstr "" -" fi | fixiso Kopiuje ustawienie ISO z Nikon Makernote do normalnego\n" -" znacznika Exif.\n" - -#: src/exiv2.cpp:256 -msgid "" -" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" -" character encoding can be specified with the -n option.\n" -msgstr "" - -#: src/exiv2.cpp:258 -msgid "" -"\n" -"Options:\n" -msgstr "" -"\n" -"Opcje:\n" - -#: src/exiv2.cpp:259 -msgid " -h Display this help and exit.\n" -msgstr " -h WyÅ›wietla tÄ™ pomoc i koÅ„czy pracÄ™.\n" - -#: src/exiv2.cpp:260 -msgid " -V Show the program version and exit.\n" -msgstr " -V WyÅ›wietla wersjÄ™ programu i koÅ„czy pracÄ™.\n" - -#: src/exiv2.cpp:261 -msgid " -v Be verbose during the program run.\n" -msgstr "" -" -v Tryb \"gadatliwy\", wyÅ›wietla wiele komunikatów podczas pracy " -"programu.\n" - -#: src/exiv2.cpp:262 -#, fuzzy -msgid "" -" -q Silence warnings and error messages during the program run " -"(quiet).\n" -msgstr "" -" -v Tryb \"gadatliwy\", wyÅ›wietla wiele komunikatów podczas pracy " -"programu.\n" - -#: src/exiv2.cpp:263 -msgid "" -" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" -msgstr "" - -#: src/exiv2.cpp:264 -msgid " -b Show large binary values.\n" -msgstr " -b Pokaż duże wartoÅ›ci binarne.\n" - -#: src/exiv2.cpp:265 -msgid " -u Show unknown tags.\n" -msgstr " -u Pokaż nieznane znaczniki.\n" - -#: src/exiv2.cpp:266 -msgid " -g key Only output info for this key (grep).\n" -msgstr "" - -#: src/exiv2.cpp:267 -msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" -msgstr "" - -#: src/exiv2.cpp:268 -msgid " -k Preserve file timestamps (keep).\n" -msgstr " -k Zachowuje znaczniki czasowe.\n" - -#: src/exiv2.cpp:269 -msgid "" -" -t Also set the file timestamp in 'rename' action (overrides -k).\n" -msgstr "" -" -t Ustawia także znacznik czasowy pliku podczas akcji \"rename" -"\" (nadpisuje opcjÄ™ -k).\n" - -#: src/exiv2.cpp:270 -msgid "" -" -T Only set the file timestamp in 'rename' action, do not rename\n" -" the file (overrides -k).\n" -msgstr "" -" -T Ustawia tylko znacznik czasowy podczas akcji \"rename\", nie " -"zmienia nazwy pliku\n" -" (nadpisuje opcjÄ™ -k).\n" - -#: src/exiv2.cpp:272 -msgid " -f Do not prompt before overwriting existing files (force).\n" -msgstr " -f Nie pyta przed nadpisaniem istniejÄ…cych plików.\n" - -#: src/exiv2.cpp:273 -msgid " -F Do not prompt before renaming files (Force).\n" -msgstr " -F Nie pyta przed zmianÄ… nazwy plików.\n" - -#: src/exiv2.cpp:274 -msgid "" -" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" -" is only used with the 'adjust' action.\n" -msgstr "" -" -a czas Poprawka czasu w formacie [-]GG[:MM[:SS]]. Ta opcja\n" -" jest używana tylko z akcjÄ… \"adjust\".\n" - -#: src/exiv2.cpp:276 -msgid " -Y yrs Year adjustment with the 'adjust' action.\n" -msgstr " -Y rok Poprawka roku dla akcji \"adjust\".\n" - -#: src/exiv2.cpp:277 -msgid " -O mon Month adjustment with the 'adjust' action.\n" -msgstr " -O mie Poprawka miesiÄ…ca dla akcji \"adjust\".\n" - -#: src/exiv2.cpp:278 -msgid " -D day Day adjustment with the 'adjust' action.\n" -msgstr " -D dzi Poprawka dnia dla akcji \"adjust\".\n" - -#: src/exiv2.cpp:279 -msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" -msgstr " -p tryb Tryb wyÅ›wietlania dla akcji \"print\". Możliwe tryby to:\n" - -#: src/exiv2.cpp:280 -msgid " s : print a summary of the Exif metadata (the default)\n" -msgstr " s : wyÅ›wietla podsumowanie metadanych Exif (domyÅ›lnie)\n" - -#: src/exiv2.cpp:281 -msgid "" -" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" -msgstr "" -" a : wyÅ›wietla metadane Exif, IPTC i XMP (skrót dla -Pkyct)\n" - -#: src/exiv2.cpp:282 -msgid " t : interpreted (translated) Exif data (-PEkyct)\n" -msgstr "" -" t : zinterpretowane (przetÅ‚umaczone) dane Exif (-PEkyct)\n" - -#: src/exiv2.cpp:283 -msgid " v : plain Exif data values (-PExgnycv)\n" -msgstr " v : proste wartoÅ›ci danych Exif (-PExgnycv)\n" - -#: src/exiv2.cpp:284 -msgid " h : hexdump of the Exif data (-PExgnycsh)\n" -msgstr "" -" h : zrzut danych Exif w postaci szesnastkowej (-PExgnycsh)\n" - -#: src/exiv2.cpp:285 -msgid " i : IPTC data values (-PIkyct)\n" -msgstr " i : wartoÅ›ci danych IPTC (-PIkyct)\n" - -#: src/exiv2.cpp:286 -msgid " x : XMP properties (-PXkyct)\n" -msgstr " x : wÅ‚aÅ›ciwoÅ›ci XMP (-PXkyct)\n" - -#: src/exiv2.cpp:287 src/exiv2.cpp:310 -msgid " c : JPEG comment\n" -msgstr " c : komentarz JPEG\n" - -#: src/exiv2.cpp:288 -msgid " p : list available previews\n" -msgstr " p : wyÅ›wietla dostÄ™pne podglÄ…dy\n" - -#: src/exiv2.cpp:289 -msgid "" -" -P flgs Print flags for fine control of tag lists ('print' action):\n" -msgstr "" -" -P przl PrzeÅ‚Ä…czniki wyÅ›wietlania kontrolujÄ…ce sposób wyÅ›wietlania " -"znaczników (akcja \"print\"):\n" - -#: src/exiv2.cpp:290 -msgid " E : include Exif tags in the list\n" -msgstr " E : doÅ‚Ä…cz znaczniki Exif do listy\n" - -#: src/exiv2.cpp:291 -msgid " I : IPTC datasets\n" -msgstr " I : dane IPTC\n" - -#: src/exiv2.cpp:292 -msgid " X : XMP properties\n" -msgstr " X : wÅ‚aÅ›ciwoÅ›ci XMP\n" - -#: src/exiv2.cpp:293 -msgid " x : print a column with the tag number\n" -msgstr " x : wyÅ›wietla kolumnÄ™ z numerem znacznika\n" - -#: src/exiv2.cpp:294 -msgid " g : group name\n" -msgstr " g : nazwa grupy\n" - -#: src/exiv2.cpp:295 -msgid " k : key\n" -msgstr " k : klucz\n" - -#: src/exiv2.cpp:296 -msgid " l : tag label\n" -msgstr " l : etykieta znacznika\n" - -#: src/exiv2.cpp:297 -msgid " n : tag name\n" -msgstr " n : nazwa znacznika\n" - -#: src/exiv2.cpp:298 -msgid " y : type\n" -msgstr " y : typ\n" - -#: src/exiv2.cpp:299 -msgid " c : number of components (count)\n" -msgstr " c : liczba elementów\n" - -#: src/exiv2.cpp:300 -msgid " s : size in bytes\n" -msgstr " s : wielkość w bajtach\n" - -#: src/exiv2.cpp:301 -msgid " v : plain data value\n" -msgstr " v : proste wartoÅ›ci danych\n" - -#: src/exiv2.cpp:302 -msgid " t : interpreted (translated) data\n" -msgstr " t : zinterpretowane (przetÅ‚umaczone) dane\n" - -#: src/exiv2.cpp:303 -msgid " h : hexdump of the data\n" -msgstr " h : zrzut danych w postaci szesnastkowej\n" - -#: src/exiv2.cpp:304 -msgid "" -" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" -msgstr " -d cel Cel(e) usuniÄ™cia dla akcji \"delete\". Możliwe cele to:\n" - -#: src/exiv2.cpp:305 -msgid " a : all supported metadata (the default)\n" -msgstr " a : wszystkie obsÅ‚ugiwane metadane (domyÅ›lne)\n" - -#: src/exiv2.cpp:306 -msgid " e : Exif section\n" -msgstr " e : sekcja Exif\n" - -#: src/exiv2.cpp:307 -msgid " t : Exif thumbnail only\n" -msgstr " t : tylko miniatury Exif\n" - -#: src/exiv2.cpp:308 -msgid " i : IPTC data\n" -msgstr " i : dane IPTC\n" - -#: src/exiv2.cpp:309 -msgid " x : XMP packet\n" -msgstr " x : pakiet XMP\n" - -#: src/exiv2.cpp:311 -msgid "" -" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" -" the same as those for the -d option, plus a modifier:\n" -" X : Insert metadata from an XMP sidecar file .xmp\n" -" Only JPEG thumbnails can be inserted, they need to be named\n" -" -thumb.jpg\n" -msgstr "" -" -i tgt Cel(e) wstawiania dla akcji \"insert\". Możliwe cele sÄ… takie\n" -" same jak te dla opcji -d, plus modyfikator:\n" -" X : Wstawia metadane z pliku XMP .xmp\n" -" Tylko miniatury JPEG mogÄ… być wstawione i muszÄ… mieć nazwÄ™\n" -" -thumb.jpg\n" - -#: src/exiv2.cpp:316 -msgid "" -" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" -" are the same as those for the -d option, plus a target to " -"extract\n" -" preview images and a modifier to generate an XMP sidecar file:\n" -" p[[, ...]] : Extract preview images.\n" -" X : Extract metadata to an XMP sidecar file .xmp\n" -msgstr "" - -#: src/exiv2.cpp:321 -msgid "" -" -r fmt Filename format for the 'rename' action. The format string\n" -" follows strftime(3). The following keywords are supported:\n" -msgstr "" -" -r fmt Format nazwy pliku dla akcji \"rename\". ÅaÅ„cuch formatowania\n" -" jest zgodny z strftime(3). ObsÅ‚ugiwane sÄ… nastÄ™pujÄ…ce sÅ‚owa " -"kluczowe:\n" - -#: src/exiv2.cpp:323 -msgid " :basename: - original filename without extension\n" -msgstr " :basename: - oryginalna nazwa pliku bez rozszerzenia\n" - -#: src/exiv2.cpp:324 -msgid "" -" :dirname: - name of the directory holding the original file\n" -msgstr "" -" :dirname: - nazwa katalogu zawierajÄ…cego oryginalny plik\n" - -#: src/exiv2.cpp:325 -msgid " :parentname: - name of parent directory\n" -msgstr " :parentname: - nazwa katalogu macierzystego\n" - -#: src/exiv2.cpp:326 -msgid " Default filename format is " -msgstr " DomyÅ›lny format nazwy pliku to " - -#: src/exiv2.cpp:328 -msgid " -c txt JPEG comment string to set in the image.\n" -msgstr " -c txt komentarz JPEG do wstawienia do obrazu.\n" - -#: src/exiv2.cpp:329 -msgid "" -" -m file Command file for the modify action. The format for commands is\n" -" set|add|del [[] ].\n" -msgstr "" -" -m plik Plik poleceÅ„ dla akcji \"modify\". Format poleceÅ„ to\n" -" set|add|del [[] ].\n" - -#: src/exiv2.cpp:331 -msgid "" -" -M cmd Command line for the modify action. The format for the\n" -" commands is the same as that of the lines of a command file.\n" -msgstr "" -" -M kmd Linia poleceÅ„ dla akcji \"modify\". Format poleceÅ„ jest\n" -" taki sam jak format linii w pliku komend.\n" - -#: src/exiv2.cpp:333 -msgid "" -" -l dir Location (directory) for files to be inserted from or extracted " -"to.\n" -msgstr "" -" -l kat Lokalizacja (katalog) dla plików ze wstawianymi lub " -"eksportowanymi metadanymi.\n" - -#: src/exiv2.cpp:334 -msgid "" -" -S .suf Use suffix .suf for source files for insert command.\n" -"\n" -msgstr "" -" -S .roz Użyj rozszerzenia .roz dla plików źródÅ‚owych w akcji \"insert\".\n" -"\n" - -#: src/exiv2.cpp:371 src/exiv2.cpp:401 src/exiv2.cpp:436 src/exiv2.cpp:495 -#: src/exiv2.cpp:682 -msgid "Option" -msgstr "Opcja" - -#: src/exiv2.cpp:372 -msgid "requires an argument\n" -msgstr "wymaga argumentu\n" - -#: src/exiv2.cpp:376 -msgid "Unrecognized option" -msgstr "Nierozpoznana opcja" - -#: src/exiv2.cpp:382 -msgid "getopt returned unexpected character code" -msgstr "getopt zwróciÅ‚ nieoczekiwany kod znaku" - -#: src/exiv2.cpp:402 -#, fuzzy -msgid "Invalid argument" -msgstr "Niepoprawny klucz" - -#: src/exiv2.cpp:427 src/exiv2.cpp:480 -msgid "Ignoring surplus option" -msgstr "Zignorowano nadmiarowÄ… opcjÄ™" - -#: src/exiv2.cpp:437 src/exiv2.cpp:497 src/exiv2.cpp:683 -msgid "is not compatible with a previous option\n" -msgstr "nie jest zgodny z poprzedniÄ… opcjÄ…\n" - -#: src/exiv2.cpp:452 -msgid "Ignoring surplus option -a" -msgstr "Zignorowano nadmiarowÄ… opcjÄ™ -a" - -#: src/exiv2.cpp:458 -msgid "Error parsing -a option argument" -msgstr "BÅ‚Ä…d podczas przetwarzania argumentu opcji -a" - -#: src/exiv2.cpp:465 -msgid "Option -a is not compatible with a previous option\n" -msgstr "Opcja -a jest niezgodna z poprzedniÄ… opcjÄ…\n" - -#: src/exiv2.cpp:487 -msgid "Error parsing" -msgstr "BÅ‚Ä…d przetwarzania" - -#: src/exiv2.cpp:489 -msgid "option argument" -msgstr "argument opcji" - -#: src/exiv2.cpp:520 -msgid "Unrecognized print mode" -msgstr "Nierozpoznany tryb wyÅ›wietlania" - -#: src/exiv2.cpp:528 -msgid "Ignoring surplus option -p" -msgstr "Zignorowano nadmiarowÄ… opcjÄ™ -p" - -#: src/exiv2.cpp:532 -msgid "Option -p is not compatible with a previous option\n" -msgstr "Opcja -p jest niezgodna z poprzedniÄ… opcjÄ…\n" - -#: src/exiv2.cpp:563 -msgid "Unrecognized print item" -msgstr "Nierozpoznany element wydruku" - -#: src/exiv2.cpp:572 -msgid "Ignoring surplus option -P" -msgstr "Zignorowano nadmiarowÄ… opcjÄ™ -P" - -#: src/exiv2.cpp:576 -msgid "Option -P is not compatible with a previous option\n" -msgstr "Opcja -P jest niezgodna z poprzedniÄ… opcjÄ…\n" - -#: src/exiv2.cpp:603 -msgid "Option -d is not compatible with a previous option\n" -msgstr "Opcja -d jest niezgodna z poprzedniÄ… opcjÄ…\n" - -#: src/exiv2.cpp:631 -msgid "Option -e is not compatible with a previous option\n" -msgstr "Opcja -e jest niezgodna z poprzedniÄ… opcjÄ…\n" - -#: src/exiv2.cpp:659 -msgid "Option -i is not compatible with a previous option\n" -msgstr "Opcja -i jest niezgodna z poprzedniÄ… opcjÄ…\n" - -#: src/exiv2.cpp:700 -msgid "Action adjust is not compatible with the given options\n" -msgstr "Akcja adjust jest niezgodna z podanymi opcjami\n" - -#: src/exiv2.cpp:709 -msgid "Action print is not compatible with the given options\n" -msgstr "Akcja print jest niezgodna z podanymi opcjami\n" - -#: src/exiv2.cpp:718 -msgid "Action delete is not compatible with the given options\n" -msgstr "Akcja delete jest niezgodna z podanymi opcjami\n" - -#: src/exiv2.cpp:729 -msgid "Action extract is not compatible with the given options\n" -msgstr "Akcja extract jest niezgodna z podanymi opcjami\n" - -#: src/exiv2.cpp:740 -msgid "Action insert is not compatible with the given options\n" -msgstr "Akcja insert jest niezgodna z podanymi opcjami\n" - -#: src/exiv2.cpp:749 -msgid "Action rename is not compatible with the given options\n" -msgstr "Akcja rename jest niezgodna z podanymi opcjami\n" - -#: src/exiv2.cpp:758 -msgid "Action modify is not compatible with the given options\n" -msgstr "Akcja modify jest niezgodna z podanymi opcjami\n" - -#: src/exiv2.cpp:767 -msgid "Action fixiso is not compatible with the given options\n" -msgstr "Akcja fixiso jest niezgodna z podanymi opcjami\n" - -#: src/exiv2.cpp:776 -#, fuzzy -msgid "Action fixcom is not compatible with the given options\n" -msgstr "Akcja fixiso jest niezgodna z podanymi opcjami\n" - -#: src/exiv2.cpp:800 -msgid "An action must be specified\n" -msgstr "Należy podać akcjÄ™\n" - -#: src/exiv2.cpp:809 -msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" -msgstr "" -"Akcja adjust wymaga podania przynajmniej jednej z opcji -a, -Y, -O lub -D\n" - -#: src/exiv2.cpp:815 -msgid "Modify action requires at least one -c, -m or -M option\n" -msgstr "" -"Akcja modify wymaga podania przynajmniej jednej z opcji -c, -m lub -M\n" - -#: src/exiv2.cpp:819 -msgid "At least one file is required\n" -msgstr "Wymagany jest co najmniej jeden plik\n" - -#: src/exiv2.cpp:825 -msgid "Error parsing -m option arguments\n" -msgstr "BÅ‚Ä…d podczas przetwarzania argumentów opcji -m\n" - -#: src/exiv2.cpp:832 -msgid "Error parsing -M option arguments\n" -msgstr "BÅ‚Ä…d podczas przetwarzania argumentów opcji -M\n" - -#: src/exiv2.cpp:843 -msgid "-l option can only be used with extract or insert actions\n" -msgstr "Opcja -I może być użyta jedynie z akcjami extract lub insert\n" - -#: src/exiv2.cpp:848 -msgid "-S option can only be used with insert action\n" -msgstr "Opcja -S może być użyta jedynie z akcjÄ… insert\n" - -#: src/exiv2.cpp:853 -msgid "-t option can only be used with rename action\n" -msgstr "Opcja -t może być użyta jedynie z akcjÄ… rename\n" - -#: src/exiv2.cpp:858 -msgid "-T option can only be used with rename action\n" -msgstr "Opcja -T może być użyta jedynie z akcjÄ… rename\n" - -#: src/exiv2.cpp:938 -msgid "Unrecognized " -msgstr "Nierozpoznany" - -#: src/exiv2.cpp:939 -msgid "target" -msgstr "cel" - -#: src/exiv2.cpp:965 -msgid "Invalid preview number" -msgstr "Niepoprawna liczba podglÄ…dów" - -#: src/exiv2.cpp:997 -msgid "Failed to open command file for reading\n" -msgstr "Nie można otworzyć pliku poleceÅ„ do odczytu\n" - -#: src/exiv2.cpp:1010 -msgid "line" -msgstr "wiersz" - -#: src/exiv2.cpp:1033 -msgid "-M option" -msgstr "Opcja -M" - -#: src/exiv2.cpp:1054 src/exiv2.cpp:1113 src/exiv2.cpp:1125 -msgid "Invalid command line" -msgstr "Niepoprawny wiersz poleceÅ„" - -#: src/exiv2.cpp:1061 -msgid "Invalid command" -msgstr "Niepoprawne polecenie" - -#: src/exiv2.cpp:1093 -msgid "Invalid key" -msgstr "Niepoprawny klucz" - -#: src/fujimn.cpp:62 -#, fuzzy -msgid "Soft mode 1" -msgstr "Tryb punktowy wÅ‚Ä…czony" - -#: src/fujimn.cpp:63 -#, fuzzy -msgid "Soft mode 2" -msgstr "Tryb punktowy wÅ‚Ä…czony" - -#: src/fujimn.cpp:65 -#, fuzzy -msgid "Hard mode 1" -msgstr "Tryb makro" - -#: src/fujimn.cpp:66 -#, fuzzy -msgid "Hard mode 2" -msgstr "Tryb makro" - -#: src/fujimn.cpp:72 src/minoltamn.cpp:219 src/minoltamn.cpp:683 -#: src/minoltamn.cpp:869 src/minoltamn.cpp:1193 src/minoltamn.cpp:2094 -#: src/nikonmn.cpp:447 src/panasonicmn.cpp:65 src/pentaxmn.cpp:312 -#: src/sonymn.cpp:165 src/tags.cpp:1428 -msgid "Daylight" -msgstr "ÅšwiatÅ‚o dzienne" - -#: src/fujimn.cpp:74 -msgid "Fluorescent (daylight)" -msgstr "Lampa fluorescencyjna (Å›wiatÅ‚o dzienne)" - -#: src/fujimn.cpp:75 -msgid "Fluorescent (warm white)" -msgstr "Lampa fluorescencyjna (ciepÅ‚o-biaÅ‚a)" - -#: src/fujimn.cpp:76 -msgid "Fluorescent (cool white)" -msgstr "Lampa fluorescencyjna (zimno-biaÅ‚a)" - -#: src/fujimn.cpp:77 src/nikonmn.cpp:448 src/sonymn.cpp:170 -#, fuzzy -msgid "Incandescent" -msgstr "Rozpalony" - -#: src/fujimn.cpp:87 src/fujimn.cpp:88 -msgid "None (black & white)" -msgstr "Brak (czarno-biaÅ‚y)" - -#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 -msgid "Red-eye reduction" -msgstr "Redukcja czerwonych oczu" - -#: src/fujimn.cpp:119 src/tags.cpp:1504 src/tags.cpp:1505 -msgid "Night scene" -msgstr "Scena nocna" - -#: src/fujimn.cpp:120 src/pentaxmn.cpp:496 src/pentaxmn.cpp:503 -#: src/sonymn.cpp:518 -msgid "Program AE" -msgstr "Program AE" - -#: src/fujimn.cpp:121 -msgid "Natural light" -msgstr "ÅšwiatÅ‚o naturalne" - -#: src/fujimn.cpp:122 -msgid "Anti-blur" -msgstr "Anti-blur" - -#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 -#: src/minoltamn.cpp:1888 src/minoltamn.cpp:2037 src/olympusmn.cpp:108 -#: src/panasonicmn.cpp:130 src/pentaxmn.cpp:481 src/sonymn.cpp:479 -#: src/sonymn.cpp:525 -msgid "Sunset" -msgstr "Zachód sÅ‚oÅ„ca" - -#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:485 -msgid "Museum" -msgstr "Muzeum" - -#: src/fujimn.cpp:125 src/panasonicmn.cpp:117 -msgid "Party" -msgstr "PrzyjÄ™cie" - -#: src/fujimn.cpp:126 -msgid "Flower" -msgstr "Kwiat" - -#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 -#: src/minoltamn.cpp:2035 src/pentaxmn.cpp:480 -msgid "Text" -msgstr "Tekst" - -#: src/fujimn.cpp:128 -msgid "Natural light & flash" -msgstr "ÅšwiatÅ‚o naturalny i bÅ‚ysk" - -#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:519 -msgid "Aperture-priority AE" -msgstr "Priorytet przysÅ‚ony" - -#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:520 -msgid "Shutter speed priority AE" -msgstr "Priorytet migawki" - -#: src/fujimn.cpp:142 -#, fuzzy -msgid "No flash & flash" -msgstr "Bez flesza i flesz" - -#: src/fujimn.cpp:148 -msgid "Chrome" -msgstr "Chrom" - -#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 -#: src/minoltamn.cpp:1936 src/panasonicmn.cpp:211 -#, fuzzy -msgid "Wide" -msgstr "Szeroki" - -#: src/fujimn.cpp:160 -msgid "F0/Standard" -msgstr "F0/Standard" - -#: src/fujimn.cpp:161 -msgid "F1/Studio portrait" -msgstr "F1/Studio portrait" - -#: src/fujimn.cpp:162 -msgid "F2/Fujichrome" -msgstr "F2/Fujichrome" - -#: src/fujimn.cpp:163 -msgid "F3/Studio portrait Ex" -msgstr "F3/Studio portrait Ex" - -#: src/fujimn.cpp:164 -msgid "F4/Velvia" -msgstr "F4/Velvia" - -#: src/fujimn.cpp:169 -msgid "Auto (100-400%)" -msgstr "" - -#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 -#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2056 -#: src/olympusmn.cpp:74 src/panasonicmn.cpp:58 -msgid "Raw" -msgstr "Binarny" - -#: src/fujimn.cpp:171 -msgid "Standard (100%)" -msgstr "Standard (100%)" - -#: src/fujimn.cpp:172 -msgid "Wide mode 1 (230%)" -msgstr "" - -#: src/fujimn.cpp:173 -msgid "Wide mode 2 (400%)" -msgstr "" - -#: src/fujimn.cpp:174 -msgid "Film simulation mode" -msgstr "Tryb symulacji filmu" - -#: src/fujimn.cpp:179 src/nikonmn.cpp:213 src/nikonmn.cpp:524 -#: src/nikonmn.cpp:646 src/nikonmn.cpp:691 src/nikonmn.cpp:843 -#: src/nikonmn.cpp:867 src/nikonmn.cpp:888 src/nikonmn.cpp:1001 -#: src/nikonmn.cpp:1023 src/nikonmn.cpp:1043 src/nikonmn.cpp:1063 -#: src/nikonmn.cpp:1076 src/nikonmn.cpp:1135 src/nikonmn.cpp:1195 -#: src/nikonmn.cpp:1225 src/nikonmn.cpp:1245 src/nikonmn.cpp:1258 -#: src/nikonmn.cpp:1271 src/nikonmn.cpp:1284 src/nikonmn.cpp:1297 -#: src/nikonmn.cpp:1310 src/nikonmn.cpp:1323 src/nikonmn.cpp:1342 -#: src/nikonmn.cpp:1367 src/panasonicmn.cpp:335 src/pentaxmn.cpp:865 -#: src/properties.cpp:470 -msgid "Version" -msgstr "Wersja" - -#: src/fujimn.cpp:180 -msgid "Fujifilm Makernote version" -msgstr "Wersja Fujifilm Makernote" - -#: src/fujimn.cpp:183 src/panasonicmn.cpp:250 -msgid "" -"This number is unique, and contains the date of manufacture, but is not the " -"same as the number printed on the camera body." -msgstr "" -"Ten numer jest unikalny i zawiera datÄ™ produkcji, ale nie jest tożsamy z " -"numerem umieszczonym na korpusie aparatu." - -#: src/fujimn.cpp:187 src/nikonmn.cpp:223 src/nikonmn.cpp:460 -#: src/nikonmn.cpp:527 src/olympusmn.cpp:199 -msgid "Image quality setting" -msgstr "Ustawienie jakoÅ›ci obrazu" - -#: src/fujimn.cpp:195 src/nikonmn.cpp:422 -msgid "Color" -msgstr "Kolor" - -#: src/fujimn.cpp:196 -msgid "Chroma saturation setting" -msgstr "Ustawienie nasycenia barw" - -#: src/fujimn.cpp:198 -msgid "Tone" -msgstr "Ton" - -#: src/fujimn.cpp:202 -msgid "Flash firing mode setting" -msgstr "Ustawienie trybu bÅ‚ysku" - -#: src/fujimn.cpp:204 -msgid "Flash Strength" -msgstr "SiÅ‚a bÅ‚ysku" - -#: src/fujimn.cpp:205 -msgid "Flash firing strength compensation setting" -msgstr "Ustawienie siÅ‚y kompensacji bÅ‚ysku" - -#: src/fujimn.cpp:208 -msgid "Macro mode setting" -msgstr "Ustawienie trybu makro" - -#: src/fujimn.cpp:211 -msgid "Focusing mode setting" -msgstr "Ustawienie trybu ostrzenia" - -#: src/fujimn.cpp:216 -msgid "Slow Sync" -msgstr "Synchronizacja z dÅ‚ugimi czasami" - -#: src/fujimn.cpp:217 -msgid "Slow synchro mode setting" -msgstr "" -"Ustawienie trybu synchronizacji bÅ‚ysku z dÅ‚ugimi czasami otwarcia migawki" - -#: src/fujimn.cpp:219 src/olympusmn.cpp:690 src/olympusmn.cpp:891 -msgid "Picture Mode" -msgstr "Tryb zdjÄ™cia" - -#: src/fujimn.cpp:220 -msgid "Picture mode setting" -msgstr "Ustawienie trybu zdjÄ™cia" - -#: src/fujimn.cpp:226 -msgid "Continuous shooting or auto bracketing setting" -msgstr "" - -#: src/fujimn.cpp:228 src/panasonicmn.cpp:256 src/sonymn.cpp:414 -msgid "Sequence Number" -msgstr "Numer sekwencyjny" - -#: src/fujimn.cpp:229 src/olympusmn.cpp:1158 src/panasonicmn.cpp:256 -msgid "Sequence number" -msgstr "Numer sekwencyjny" - -#: src/fujimn.cpp:234 -msgid "FinePix Color" -msgstr "Kolor FinePix" - -#: src/fujimn.cpp:235 -msgid "Fuji FinePix color setting" -msgstr "Ustawienie koloru Fuji FinePix" - -#: src/fujimn.cpp:237 -msgid "Blur Warning" -msgstr "Ostrzeżenie o rozmyciu" - -#: src/fujimn.cpp:238 -msgid "Blur warning status" -msgstr "Stan ostrzeżenia o rozmyciu" - -#: src/fujimn.cpp:240 -msgid "Focus Warning" -msgstr "Ostrzeżenie o ostrzeniu" - -#: src/fujimn.cpp:241 -msgid "Auto Focus warning status" -msgstr "Stan ostrzeżenia o automatycznym ostrzeniu" - -#: src/fujimn.cpp:243 -msgid "Exposure Warning" -msgstr "Ostrzeżenie ekspozycji" - -#: src/fujimn.cpp:244 -msgid "Auto exposure warning status" -msgstr "Stan ostrzeżenia o automatycznej ekspozycji" - -#: src/fujimn.cpp:246 -msgid "Dynamic Range" -msgstr "Dynamiczny zakres" - -#: src/fujimn.cpp:247 -msgid "Dynamic range" -msgstr "Dynamiczny zakres" - -#: src/fujimn.cpp:249 src/panasonicmn.cpp:273 -msgid "Film Mode" -msgstr "Tryb filmu" - -#: src/fujimn.cpp:250 src/panasonicmn.cpp:273 -msgid "Film mode" -msgstr "Tryb filmu" - -#: src/fujimn.cpp:252 -msgid "Dynamic Range Setting" -msgstr "Ustawienia trybu dynamicznego" - -#: src/fujimn.cpp:253 -msgid "Dynamic range settings" -msgstr "Ustawienia trybu dynamicznego" - -#: src/fujimn.cpp:255 -#, fuzzy -msgid "Development Dynamic Range" -msgstr "Dynamiczny zakres" - -#: src/fujimn.cpp:256 -#, fuzzy -msgid "Development dynamic range" -msgstr "Dynamiczny zakres" - -#: src/fujimn.cpp:258 -msgid "Minimum Focal Length" -msgstr "Minimalna dÅ‚ugość ogniskowej" - -#: src/fujimn.cpp:259 -msgid "Minimum focal length" -msgstr "Minimalna dÅ‚ugość ogniskowej" - -#: src/fujimn.cpp:261 -msgid "Maximum Focal Length" -msgstr "Maksymalna dÅ‚ugość ogniskowej" - -#: src/fujimn.cpp:262 -msgid "Maximum focal length" -msgstr "Maksymalna dÅ‚ugość ogniskowej" - -#: src/fujimn.cpp:264 -msgid "Maximum Aperture at Mininimum Focal" -msgstr "Maksymalna jasność przy minimalnej ogniskowej" - -#: src/fujimn.cpp:265 -msgid "Maximum aperture at mininimum focal" -msgstr "Maksymalna jasność przy minimalnej ogniskowej" - -#: src/fujimn.cpp:267 -msgid "Maximum Aperture at Maxinimum Focal" -msgstr "Maksymalna jasność przy maksymalnej ogniskowej" - -#: src/fujimn.cpp:268 -msgid "Maximum aperture at maxinimum focal" -msgstr "Maksymalna jasność przy maksymalnej ogniskowej" - -#: src/fujimn.cpp:270 src/properties.cpp:577 src/tags.cpp:1759 -msgid "File Source" -msgstr "ŹródÅ‚o pliku" - -#: src/fujimn.cpp:271 -msgid "File source" -msgstr "ŹródÅ‚o pliku" - -#: src/fujimn.cpp:273 -msgid "Order Number" -msgstr "Liczba porzÄ…dkowa" - -#: src/fujimn.cpp:274 -msgid "Order number" -msgstr "Liczba porzÄ…dkowa" - -#: src/fujimn.cpp:276 -msgid "Frame Number" -msgstr "Numer klatki" - -#: src/fujimn.cpp:277 src/pentaxmn.cpp:977 src/pentaxmn.cpp:978 -msgid "Frame number" -msgstr "Numer klatki" - -#: src/fujimn.cpp:281 -msgid "Unknown FujiMakerNote tag" -msgstr "Nieznany znacznik FujiMakerNote" - -#: src/minoltamn.cpp:56 -msgid "Natural Color" -msgstr "Barwa naturalna" - -#: src/minoltamn.cpp:58 src/minoltamn.cpp:1885 -msgid "Vivid Color" -msgstr "Barwa jaskrawa" - -#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 -msgid "Solarization" -msgstr "Solaryzacja" - -#: src/minoltamn.cpp:60 src/minoltamn.cpp:1891 -msgid "AdobeRGB" -msgstr "AdobeRGB" - -#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:611 -#: src/olympusmn.cpp:853 src/panasonicmn.cpp:198 src/pentaxmn.cpp:702 -msgid "Natural" -msgstr "Naturalny" - -#: src/minoltamn.cpp:64 -msgid "Natural sRGB" -msgstr "Natural sRGB" - -#: src/minoltamn.cpp:65 -msgid "Natural+ sRGB" -msgstr "Natural+ sRGB" - -#: src/minoltamn.cpp:67 -msgid "Evening" -msgstr "Wieczór" - -#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2040 -#: src/sonymn.cpp:526 -msgid "Night Portrait" -msgstr "Portret nocny" - -#: src/minoltamn.cpp:75 src/minoltamn.cpp:2057 -msgid "Super Fine" -msgstr "Bardzo dobra" - -#: src/minoltamn.cpp:79 src/minoltamn.cpp:2003 src/minoltamn.cpp:2061 -msgid "Extra Fine" -msgstr "Ekstra dobra" - -#: src/minoltamn.cpp:90 -msgid "Makernote Version" -msgstr "Wersja Makernote" - -#: src/minoltamn.cpp:91 -msgid "String 'MLT0' (not null terminated)" -msgstr "ÅaÅ„cuch \"MTL0\" (nie jest zakoÅ„czony przez NULL)" - -#: src/minoltamn.cpp:93 -msgid "Camera Settings (Std Old)" -msgstr "Ustawienia aparatu (Std stary)" - -#: src/minoltamn.cpp:94 -msgid "" -"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" -msgstr "" -"Standardowe ustawienia aparatu (starsze modele aparatów jak D5, D7, S304 i " -"S404)" - -#: src/minoltamn.cpp:96 -msgid "Camera Settings (Std New)" -msgstr "Ustawienia aparatu (Std nowy)" - -#: src/minoltamn.cpp:97 -msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" -msgstr "" -"Standardowe ustawienia aparatu (nowsze modele aparatów jak D7u, D7i i D7hi)" - -#: src/minoltamn.cpp:99 -msgid "Camera Settings (7D)" -msgstr "Ustawienia aparatu (7D)" - -#: src/minoltamn.cpp:100 -msgid "Camera Settings (for Dynax 7D model)" -msgstr "Ustawienia aparatu (dla modelu Dynax 7D)" - -#: src/minoltamn.cpp:102 -msgid "Image Stabilization Data" -msgstr "Dane stabilizacji obrazu" - -#: src/minoltamn.cpp:103 -msgid "Image stabilization data" -msgstr "Dane stabilizacji obrazu" - -#: src/minoltamn.cpp:107 -msgid "WB Info A100" -msgstr "" - -#: src/minoltamn.cpp:108 -msgid "White balance information for the Sony DSLR-A100" -msgstr "" - -#: src/minoltamn.cpp:111 -msgid "Compressed Image Size" -msgstr "Rozmiar skompresowanego obrazka" - -#: src/minoltamn.cpp:112 -msgid "Compressed image size" -msgstr "Rozmiar skompresowanego obrazka" - -#: src/minoltamn.cpp:115 -msgid "Jpeg thumbnail 640x480 pixels" -msgstr "Miniatura JPEG 640x480 pikseli" - -#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 -msgid "Thumbnail Offset" -msgstr "PrzesuniÄ™cie miniatury" - -#: src/minoltamn.cpp:118 -msgid "Offset of the thumbnail" -msgstr "PrzesuniÄ™cie miniatury" - -#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 -msgid "Thumbnail Length" -msgstr "DÅ‚ugość miniatury" - -#: src/minoltamn.cpp:121 -msgid "Size of the thumbnail" -msgstr "Rozmiar miniatury" - -#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:573 -#: src/olympusmn.cpp:252 src/olympusmn.cpp:684 src/panasonicmn.cpp:282 -#: src/sonymn.cpp:363 src/sonymn.cpp:364 -msgid "Scene Mode" -msgstr "Rodzaj sceny" - -#: src/minoltamn.cpp:128 src/minoltamn.cpp:1406 src/nikonmn.cpp:219 -#: src/nikonmn.cpp:462 src/nikonmn.cpp:526 src/panasonicmn.cpp:263 -#: src/sonymn.cpp:381 src/sonymn.cpp:382 -msgid "Color Mode" -msgstr "Tryb koloru" - -#: src/minoltamn.cpp:129 src/minoltamn.cpp:1407 src/nikonmn.cpp:220 -#: src/nikonmn.cpp:463 src/nikonmn.cpp:526 src/panasonicmn.cpp:263 -msgid "Color mode" -msgstr "Tryb koloru" - -#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 -#: src/minoltamn.cpp:990 src/panasonicmn.cpp:236 src/sonymn.cpp:274 -msgid "Image Quality" -msgstr "Jakość obrazu" - -#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 -msgid "0x0103" -msgstr "" - -#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:671 -#: src/sonymn.cpp:277 -msgid "Flash Exposure Compensation" -msgstr "Kompensacja ekspozycji bÅ‚ysku" - -#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:278 -msgid "Flash exposure compensation in EV" -msgstr "Kompensacja ekspozycji bÅ‚ysku w jednostkach EV" - -#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:280 -#: src/sonymn.cpp:281 -#, fuzzy -msgid "Teleconverter Model" -msgstr "Model ekstendera" - -#: src/minoltamn.cpp:150 -msgid "RAW+JPG Recording" -msgstr "" - -#: src/minoltamn.cpp:151 -msgid "RAW and JPG files recording" -msgstr "" - -#: src/minoltamn.cpp:153 src/sonymn.cpp:366 src/sonymn.cpp:367 -msgid "Zone Matching" -msgstr "PasujÄ…ca strefa" - -#: src/minoltamn.cpp:154 -msgid "Zone matching" -msgstr "PasujÄ…ca strefa" - -#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1039 -#: src/minoltamn.cpp:1476 src/minoltamn.cpp:1578 -msgid "Color temperature" -msgstr "Temperatura koloru" - -#: src/minoltamn.cpp:159 src/sonymn.cpp:375 -msgid "Lens ID" -msgstr "ID obiektywu" - -#: src/minoltamn.cpp:160 src/sonymn.cpp:376 -msgid "Lens identifier" -msgstr "Identyfikator obiektywu" - -#: src/minoltamn.cpp:162 src/minoltamn.cpp:1478 src/minoltamn.cpp:1580 -#: src/sonymn.cpp:360 -#, fuzzy -msgid "Color Compensation Filter" -msgstr "Kompensacja tonów" - -#: src/minoltamn.cpp:163 src/sonymn.cpp:361 -msgid "Color Compensation Filter: negative is green, positive is magenta" -msgstr "" - -#: src/minoltamn.cpp:165 src/minoltamn.cpp:1472 src/sonymn.cpp:283 -#: src/sonymn.cpp:563 src/sonymn.cpp:564 -#, fuzzy -msgid "White Balance Fine Tune" -msgstr "Tablica balansu bieli" - -#: src/minoltamn.cpp:166 src/sonymn.cpp:284 -#, fuzzy -msgid "White Balance Fine Tune Value" -msgstr "Wartość balansu bieli" - -#: src/minoltamn.cpp:168 -#, fuzzy -msgid "Image Stabilization A100" -msgstr "Stabilizacja obrazu" - -#: src/minoltamn.cpp:169 -#, fuzzy -msgid "Image Stabilization for the Sony DSLR-A100" -msgstr "Dane stabilizacji obrazu" - -#: src/minoltamn.cpp:173 -msgid "Camera Settings (5D)" -msgstr "Ustawienia aparatu (5D)" - -#: src/minoltamn.cpp:174 -msgid "Camera Settings (for Dynax 5D model)" -msgstr "Ustawienia aparatu (dla modelu Dynax 5D)" - -#: src/minoltamn.cpp:180 src/nikonmn.cpp:607 src/olympusmn.cpp:258 -#: src/panasonicmn.cpp:279 src/sonymn.cpp:295 -msgid "Print IM" -msgstr "Print IM" - -#: src/minoltamn.cpp:181 src/nikonmn.cpp:607 src/olympusmn.cpp:259 -#: src/panasonicmn.cpp:279 src/sonymn.cpp:296 -msgid "PrintIM information" -msgstr "Informacja PrintIM" - -#: src/minoltamn.cpp:183 -msgid "Camera Settings (Z1)" -msgstr "Ustawienia aparatu (Z1)" - -#: src/minoltamn.cpp:184 -msgid "Camera Settings (for Z1, DImage X, and F100 models)" -msgstr "Ustawienia aparatu (dla modeli Z1, DImage X i F100)" - -#: src/minoltamn.cpp:188 -msgid "Unknown Minolta MakerNote tag" -msgstr "Nieznany znacznik Minolta MakerNote" - -#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 -#: src/panasonicmn.cpp:107 src/sigmamn.cpp:155 src/sonymn.cpp:111 -#: src/tags.cpp:1404 -msgid "Aperture priority" -msgstr "Priorytet przysÅ‚ony" - -#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 -#: src/sigmamn.cpp:156 src/sonymn.cpp:112 src/tags.cpp:1405 -msgid "Shutter priority" -msgstr "Priorytet migawki" - -#: src/minoltamn.cpp:209 src/minoltamn.cpp:1122 -msgid "Fill flash" -msgstr "BÅ‚ysk wypeÅ‚niajÄ…cy" - -#: src/minoltamn.cpp:211 src/minoltamn.cpp:1120 -msgid "Rear flash sync" -msgstr "Synchronizacja na zamkniÄ™cie migawki" - -#: src/minoltamn.cpp:212 src/minoltamn.cpp:1121 -msgid "Wireless" -msgstr "Bezprzewodowy" - -#: src/minoltamn.cpp:224 -#, fuzzy -msgid "Fluorescent 2" -msgstr "Fluorescencja 2" - -#: src/minoltamn.cpp:231 -msgid "Full size" -msgstr "PeÅ‚ny rozmiar" - -#: src/minoltamn.cpp:243 -msgid "Super fine" -msgstr "Bardzo dobra" - -#: src/minoltamn.cpp:247 -msgid "Extra fine" -msgstr "Ekstra dobra" - -#: src/minoltamn.cpp:252 src/minoltamn.cpp:1099 src/minoltamn.cpp:1148 -#: src/sonymn.cpp:447 -#, fuzzy -msgid "Single Frame" -msgstr "Pojedynczy obszar" - -#: src/minoltamn.cpp:254 src/minoltamn.cpp:1150 -msgid "Self-timer" -msgstr "Samowyzwalacz" - -#: src/minoltamn.cpp:255 -msgid "Bracketing" -msgstr "Bracketing" - -#: src/minoltamn.cpp:256 -msgid "Interval" -msgstr "OdstÄ™p" - -#: src/minoltamn.cpp:257 -#, fuzzy -msgid "UHS continuous" -msgstr "Gradient ciÄ…gÅ‚y" - -#: src/minoltamn.cpp:258 -#, fuzzy -msgid "HS continuous" -msgstr "Gradient ciÄ…gÅ‚y" - -#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1127 -#: src/sonymn.cpp:468 src/tags.cpp:1419 -msgid "Multi-segment" -msgstr "Wielopolowy" - -#: src/minoltamn.cpp:264 src/minoltamn.cpp:1128 src/sonymn.cpp:469 -#: src/tags.cpp:1416 -msgid "Center weighted average" -msgstr "Centralnie ważony uÅ›redniony" - -#: src/minoltamn.cpp:271 -msgid "Electronic magnification" -msgstr "PowiÄ™kszenie elektroniczne" - -#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:1951 -#: src/nikonmn.cpp:100 src/nikonmn.cpp:793 src/nikonmn.cpp:808 -#: src/pentaxmn.cpp:216 -msgid "Top" -msgstr "Góra" - -#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:234 -msgid "Top-right" -msgstr "Górny prawy" - -#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:240 -msgid "Bottom-right" -msgstr "Dolny prawy" - -#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:1955 -#: src/nikonmn.cpp:101 src/nikonmn.cpp:794 src/nikonmn.cpp:809 -#: src/pentaxmn.cpp:224 -msgid "Bottom" -msgstr "Dół" - -#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:238 -msgid "Bottom-left" -msgstr "Dolny lewy" - -#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:232 -msgid "Top-left" -msgstr "Górny lewy" - -#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:368 -#: src/tags.cpp:1521 -msgid "Hard" -msgstr "Duża" - -#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:366 -#: src/tags.cpp:1520 -msgid "Soft" -msgstr "MaÅ‚a" - -#: src/minoltamn.cpp:313 src/panasonicmn.cpp:105 -msgid "Night portrait" -msgstr "Nocny portret" - -#: src/minoltamn.cpp:315 -msgid "Sports action" -msgstr "Sport" - -#: src/minoltamn.cpp:344 -msgid "Time-lapse movie" -msgstr "" - -#: src/minoltamn.cpp:349 -#, fuzzy -msgid "Standard form" -msgstr "Forma standardowa" - -#: src/minoltamn.cpp:350 -#, fuzzy -msgid "Data form" -msgstr "Formularz danych" - -#: src/minoltamn.cpp:355 -msgid "Natural color" -msgstr "Naturalny kolor" - -#: src/minoltamn.cpp:356 src/panasonicmn.cpp:70 src/panasonicmn.cpp:148 -msgid "Black and white" -msgstr "Czarno-biaÅ‚y" - -#: src/minoltamn.cpp:357 -msgid "Vivid color" -msgstr "Barwa jaskrawa" - -#: src/minoltamn.cpp:364 -msgid "No zone" -msgstr "Brak strefy" - -#: src/minoltamn.cpp:365 -msgid "Center zone (horizontal orientation)" -msgstr "Strefa Å›rodkowa (ukÅ‚ad poziomy)" - -#: src/minoltamn.cpp:366 -msgid "Center zone (vertical orientation)" -msgstr "Strefa Å›rodkowa (ukÅ‚ad pionowa)" - -#: src/minoltamn.cpp:367 -msgid "Left zone" -msgstr "Strefa lewa" - -#: src/minoltamn.cpp:368 -msgid "Right zone" -msgstr "Strefa prawa" - -#: src/minoltamn.cpp:373 src/olympusmn.cpp:999 -msgid "Auto focus" -msgstr "Ostrzenie automatyczne" - -#: src/minoltamn.cpp:379 -msgid "Wide focus (normal)" -msgstr "" - -#: src/minoltamn.cpp:380 -msgid "Spot focus" -msgstr "Ostrzenie punktowe" - -#: src/minoltamn.cpp:385 src/properties.cpp:452 src/sigmamn.cpp:86 -#: src/sigmamn.cpp:87 -msgid "Exposure" -msgstr "Ekspozycja" - -#: src/minoltamn.cpp:388 -msgid "Filter" -msgstr "Filtr" - -#: src/minoltamn.cpp:393 -msgid "Not embedded" -msgstr "NiedoÅ‚Ä…czona" - -#: src/minoltamn.cpp:394 -msgid "Embedded" -msgstr "Osadzone" - -#: src/minoltamn.cpp:403 -msgid "Text + ID#" -msgstr "Tekst + ID" - -#: src/minoltamn.cpp:408 -msgid "ADI (Advanced Distance Integration)" -msgstr "ADI (Advanced Distance Integration)" - -#: src/minoltamn.cpp:409 -msgid "Pre-flash TTl" -msgstr "PrzedbÅ‚ysk TTL" - -#: src/minoltamn.cpp:410 -msgid "Manual flash control" -msgstr "RÄ™czne sterowanie lampÄ…" - -#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:984 -#: src/minoltamn.cpp:1352 src/olympusmn.cpp:659 src/properties.cpp:581 -#: src/sigmamn.cpp:74 src/sonymn.cpp:393 src/sonymn.cpp:394 src/tags.cpp:1780 -msgid "Exposure Mode" -msgstr "Tryb ekspozycji" - -#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 -#: src/olympusmn.cpp:670 src/pentaxmn.cpp:896 -msgid "Flash mode" -msgstr "Tryb flesza" - -#: src/minoltamn.cpp:506 src/minoltamn.cpp:1428 src/olympusmn.cpp:700 -#: src/pentaxmn.cpp:991 src/pentaxmn.cpp:992 src/sigmamn.cpp:60 -#, fuzzy -msgid "Drive mode" -msgstr "Tryb dziaÅ‚ania" - -#: src/minoltamn.cpp:512 -#, fuzzy -msgid "ISO Value" -msgstr "CzuÅ‚ość ISO" - -#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1023 -#: src/minoltamn.cpp:1367 src/properties.cpp:548 src/tags.cpp:782 -#: src/tags.cpp:1542 -msgid "Exposure Time" -msgstr "Czas ekspozycji" - -#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1026 -#: src/minoltamn.cpp:1370 src/minoltamn.cpp:1371 src/tags.cpp:783 -#: src/tags.cpp:1545 -msgid "FNumber" -msgstr "Liczba F" - -#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1027 -msgid "The F-Number" -msgstr "Liczba F" - -#: src/minoltamn.cpp:520 src/olympusmn.cpp:663 -msgid "Macro Mode" -msgstr "Tryb makro" - -#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1044 -msgid "Exposure Compensation" -msgstr "Kompensacja ekspozycji" - -#: src/minoltamn.cpp:529 -msgid "Bracket Step" -msgstr "Krok bracketingu" - -#: src/minoltamn.cpp:530 -msgid "Bracket step" -msgstr "Krok bracketingu" - -#: src/minoltamn.cpp:532 -msgid "Interval Length" -msgstr "Rozmiar odstÄ™pu" - -#: src/minoltamn.cpp:533 -msgid "Interval length" -msgstr "Rozmiar odstÄ™pu" - -#: src/minoltamn.cpp:535 -msgid "Interval Number" -msgstr "Numer odstÄ™pu" - -#: src/minoltamn.cpp:536 -msgid "Interval number" -msgstr "Numer odstÄ™pu" - -#: src/minoltamn.cpp:541 src/nikonmn.cpp:252 src/nikonmn.cpp:564 -#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1371 src/olympusmn.cpp:303 -#: src/olympusmn.cpp:1007 -msgid "Focus Distance" -msgstr "OdlegÅ‚ość ostrzenia" - -#: src/minoltamn.cpp:542 src/nikonmn.cpp:1346 src/nikonmn.cpp:1371 -#: src/olympusmn.cpp:1007 -msgid "Focus distance" -msgstr "OdlegÅ‚ość ostrzenia" - -#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1002 -#, fuzzy -msgid "Flash Fired" -msgstr "UrzÄ…dzenie flesza" - -#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1003 -#, fuzzy -msgid "Flash fired" -msgstr "Flesz wyÅ‚Ä…czony" - -#: src/minoltamn.cpp:547 -msgid "Minolta Date" -msgstr "Minolta data" - -#: src/minoltamn.cpp:548 -msgid "Minolta date" -msgstr "Minolta data" - -#: src/minoltamn.cpp:550 -msgid "Minolta Time" -msgstr "Minolta czas" - -#: src/minoltamn.cpp:551 -msgid "Minolta time" -msgstr "Minolta czas" - -#: src/minoltamn.cpp:556 -#, fuzzy -msgid "File Number Memory" -msgstr "Pamięć numeracji plików" - -#: src/minoltamn.cpp:557 -#, fuzzy -msgid "File number memory" -msgstr "Pamięć numeracji plików" - -#: src/minoltamn.cpp:559 -#, fuzzy -msgid "Last Image Number" -msgstr "Numer obrazu" - -#: src/minoltamn.cpp:560 -#, fuzzy -msgid "Last image number" -msgstr "Numer zdjÄ™cia" - -#: src/minoltamn.cpp:562 -msgid "Color Balance Red" -msgstr "Balans kolorów czerwieni" - -#: src/minoltamn.cpp:563 -msgid "Color balance red" -msgstr "Balans kolorów czerwieni" - -#: src/minoltamn.cpp:565 -msgid "Color Balance Green" -msgstr "Balans kolorów zieleni" - -#: src/minoltamn.cpp:566 -msgid "Color balance green" -msgstr "Balans kolorów zieleni" - -#: src/minoltamn.cpp:568 -msgid "Color Balance Blue" -msgstr "Balans kolorów bÅ‚Ä™kitu" - -#: src/minoltamn.cpp:569 -msgid "Color balance blue" -msgstr "Balans kolorów bÅ‚Ä™kitu" - -#: src/minoltamn.cpp:580 -msgid "Subject Program" -msgstr "Program tematyczny" - -#: src/minoltamn.cpp:581 -msgid "Subject program" -msgstr "Program tematyczny" - -#: src/minoltamn.cpp:586 src/nikonmn.cpp:542 -msgid "ISO Settings" -msgstr "Ustawienia ISO" - -#: src/minoltamn.cpp:587 src/minoltamn.cpp:1398 src/nikonmn.cpp:542 -msgid "ISO setting" -msgstr "Ustawienie ISO" - -#: src/minoltamn.cpp:589 -msgid "Minolta Model" -msgstr "Minolta model" - -#: src/minoltamn.cpp:590 -msgid "Minolta model" -msgstr "Minolta model" - -#: src/minoltamn.cpp:592 -#, fuzzy -msgid "Interval Mode" -msgstr "Tryb odstÄ™pu" - -#: src/minoltamn.cpp:593 -#, fuzzy -msgid "Interval mode" -msgstr "Tryb odstÄ™pu" - -#: src/minoltamn.cpp:595 -msgid "Folder Name" -msgstr "Nazwa katalogu" - -#: src/minoltamn.cpp:596 -msgid "Folder name" -msgstr "Nazwa katalogu" - -#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 -msgid "ColorMode" -msgstr "Tryb koloru" - -#: src/minoltamn.cpp:601 src/minoltamn.cpp:1204 src/pentaxmn.cpp:462 -msgid "Color Filter" -msgstr "Filtr kolorów" - -#: src/minoltamn.cpp:602 -msgid "Color filter" -msgstr "Filtr kolorów" - -#: src/minoltamn.cpp:604 -msgid "Black and White Filter" -msgstr "Filtr czarno-biaÅ‚y" - -#: src/minoltamn.cpp:605 -msgid "Black and white filter" -msgstr "Filtr czarno-biaÅ‚y" - -#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1013 -msgid "Internal Flash" -msgstr "WewnÄ™trzny flesz" - -#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:698 -#: src/olympusmn.cpp:276 src/properties.cpp:438 src/sonymn.cpp:602 -#: src/sonymn.cpp:603 src/tags.cpp:1630 -msgid "Brightness" -msgstr "Jasność" - -#: src/minoltamn.cpp:613 -#, fuzzy -msgid "Spot Focus Point X" -msgstr "Ostrzenie punktowe" - -#: src/minoltamn.cpp:614 -#, fuzzy -msgid "Spot focus point X" -msgstr "Ostrzenie punktowe" - -#: src/minoltamn.cpp:616 -#, fuzzy -msgid "Spot Focus Point Y" -msgstr "Ostrzenie punktowe" - -#: src/minoltamn.cpp:617 -#, fuzzy -msgid "Spot focus point Y" -msgstr "Ostrzenie punktowe" - -#: src/minoltamn.cpp:619 -#, fuzzy -msgid "Wide Focus Zone" -msgstr "Tryb ogniskowania" - -#: src/minoltamn.cpp:620 -msgid "Wide focus zone" -msgstr "" - -#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1036 -#: src/minoltamn.cpp:1380 src/nikonmn.cpp:232 src/nikonmn.cpp:475 -#: src/nikonmn.cpp:530 src/olympusmn.cpp:301 src/olympusmn.cpp:664 -#: src/panasonicmn.cpp:240 src/pentaxmn.cpp:899 -msgid "Focus mode" -msgstr "Tryb ogniskowania" - -#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1000 -msgid "Focus area" -msgstr "Obszar ogniskowania" - -#: src/minoltamn.cpp:628 -msgid "DEC Switch Position" -msgstr "Pozycja przeÅ‚Ä…cznika DEC" - -#: src/minoltamn.cpp:629 -msgid "DEC switch position" -msgstr "Pozycja przeÅ‚Ä…cznika DEC" - -#: src/minoltamn.cpp:631 -msgid "Color Profile" -msgstr "Profil koloru" - -#: src/minoltamn.cpp:632 -msgid "Color profile" -msgstr "Profil koloru" - -#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 -#, fuzzy -msgid "Data Imprint" -msgstr "Kompresja danych" - -#: src/minoltamn.cpp:637 src/minoltamn.cpp:1421 -msgid "Flash Metering" -msgstr "Tryb pomiaru bÅ‚ysku" - -#: src/minoltamn.cpp:638 src/minoltamn.cpp:1422 -msgid "Flash metering" -msgstr "Tryb pomiaru Å›wiatÅ‚a bÅ‚yskowego" - -#: src/minoltamn.cpp:642 -msgid "Unknown Minolta Camera Settings tag" -msgstr "Nieznany znacznik Minolta Camera Settings" - -#: src/minoltamn.cpp:660 -msgid "Program-shift A" -msgstr "Program-shift A" - -#: src/minoltamn.cpp:661 -msgid "Program-shift S" -msgstr "Program-shift S" - -#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 -msgid "Raw+Jpeg" -msgstr "RAW+JPEG" - -#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/pentaxmn.cpp:322 -msgid "Kelvin" -msgstr "Kelvin" - -#: src/minoltamn.cpp:695 -msgid "Single-shot AF" -msgstr "Pojedyncze zdjÄ™cie" - -#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1371 -msgid "Continuous AF" -msgstr "CiÄ…gÅ‚y" - -#: src/minoltamn.cpp:698 -msgid "Automatic AF" -msgstr "Automatycznie" - -#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 -msgid "sRGB (Natural)" -msgstr "sRGB (Natural)" - -#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 -msgid "sRGB (Natural+)" -msgstr "sRGB (Natural+)" - -#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2019 -#: src/panasonicmn.cpp:190 -msgid "Horizontal (normal)" -msgstr "Poziome (normalne)" - -#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2020 -#: src/panasonicmn.cpp:191 -msgid "Rotate 90 CW" -msgstr "Obrót o 90 w prawo" - -#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2021 -#: src/panasonicmn.cpp:192 -msgid "Rotate 270 CW" -msgstr "Obrót o 270 w prawo" - -#: src/minoltamn.cpp:756 -msgid "AF Points" -msgstr "Punkty AF" - -#: src/minoltamn.cpp:757 -msgid "AF points" -msgstr "Punkty AF" - -#: src/minoltamn.cpp:771 src/minoltamn.cpp:1011 src/minoltamn.cpp:1409 -#: src/nikonmn.cpp:551 src/olympusmn.cpp:683 src/olympusmn.cpp:802 -#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 src/properties.cpp:532 -#: src/sigmamn.cpp:83 src/tags.cpp:1684 -msgid "Color Space" -msgstr "PrzestrzeÅ„ kolorów" - -#: src/minoltamn.cpp:772 src/minoltamn.cpp:1012 src/minoltamn.cpp:1410 -#: src/nikonmn.cpp:551 src/olympusmn.cpp:683 src/olympusmn.cpp:817 -#: src/olympusmn.cpp:888 src/pentaxmn.cpp:995 src/pentaxmn.cpp:996 -#: src/sigmamn.cpp:84 -msgid "Color space" -msgstr "PrzestrzeÅ„ kolorów" - -#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1029 -#: src/minoltamn.cpp:1047 src/minoltamn.cpp:1457 -#, fuzzy -msgid "Free Memory Card Images" -msgstr "Liczba wolnych zdjęć na karcie pamiÄ™ci" - -#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1030 -#: src/minoltamn.cpp:1048 src/minoltamn.cpp:1458 -#, fuzzy -msgid "Free memory card images" -msgstr "Liczba wolnych zdjęć na karcie pamiÄ™ci" - -#: src/minoltamn.cpp:789 -msgid "Hue" -msgstr "OdcieÅ„" - -#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1041 -#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1571 src/minoltamn.cpp:1572 -#: src/panasonicmn.cpp:261 src/sonymn.cpp:638 src/sonymn.cpp:639 -#: src/sonymn.cpp:711 src/sonymn.cpp:712 -msgid "Rotation" -msgstr "Obrót" - -#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1065 -#: src/tags.cpp:835 -msgid "Image Number" -msgstr "Numer obrazu" - -#: src/minoltamn.cpp:808 src/minoltamn.cpp:1069 src/minoltamn.cpp:1494 -#: src/nikonmn.cpp:579 src/olympusmn.cpp:439 src/olympusmn.cpp:685 -#: src/olympusmn.cpp:819 src/olympusmn.cpp:889 src/olympusmn.cpp:974 -#: src/panasonicmn.cpp:258 src/pentaxmn.cpp:1024 src/pentaxmn.cpp:1025 -msgid "Noise reduction" -msgstr "Redukcja szumów" - -#: src/minoltamn.cpp:817 -#, fuzzy -msgid "Zone Matching On" -msgstr "PasujÄ…ca strefa" - -#: src/minoltamn.cpp:818 -#, fuzzy -msgid "Zone matching on" -msgstr "PasujÄ…ca strefa" - -#: src/minoltamn.cpp:822 -msgid "Unknown Minolta Camera Settings 7D tag" -msgstr "Nieznany znacznik Minolta Camera Settings 7D" - -#: src/minoltamn.cpp:840 src/sonymn.cpp:521 -#, fuzzy -msgid "Program Shift A" -msgstr "Program-shift A" - -#: src/minoltamn.cpp:841 src/sonymn.cpp:522 -#, fuzzy -msgid "Program Shift S" -msgstr "Program-shift S" - -#: src/minoltamn.cpp:845 src/minoltamn.cpp:1889 src/minoltamn.cpp:2044 -#: src/sonymn.cpp:480 -#, fuzzy -msgid "Night View/Portrait" -msgstr "Portret nocny" - -#: src/minoltamn.cpp:895 -#, fuzzy -msgid "200 (Zone Matching High)" -msgstr "PasujÄ…ca strefa" - -#: src/minoltamn.cpp:896 -#, fuzzy -msgid "80 (Zone Matching Low)" -msgstr "PasujÄ…ca strefa" - -#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 -#, fuzzy -msgid "Adobe RGB (ICC)" -msgstr "Adobe RGB" - -#: src/minoltamn.cpp:918 -#, fuzzy -msgid "Central" -msgstr "Åšrodek" - -#: src/minoltamn.cpp:919 -#, fuzzy -msgid "Up" -msgstr "W górÄ™" - -#: src/minoltamn.cpp:920 -#, fuzzy -msgid "Up right" -msgstr "W prawo do góry" - -#: src/minoltamn.cpp:922 -#, fuzzy -msgid "Down right" -msgstr "W prawo do doÅ‚u" - -#: src/minoltamn.cpp:923 -#, fuzzy -msgid "Down" -msgstr "W dół" - -#: src/minoltamn.cpp:924 -#, fuzzy -msgid "Down left" -msgstr "W lewo do doÅ‚u" - -#: src/minoltamn.cpp:926 -#, fuzzy -msgid "Up left" -msgstr "W lewo do góry" - -#: src/minoltamn.cpp:932 -msgid "Selection" -msgstr "Zaznaczenie" - -#: src/minoltamn.cpp:947 -#, fuzzy -msgid "Natural+" -msgstr "Naturalny" - -#: src/minoltamn.cpp:949 -#, fuzzy -msgid "Wind Scene" -msgstr "Scena nocna" - -#: src/minoltamn.cpp:950 -#, fuzzy -msgid "Evening Scene" -msgstr "Wieczór" - -#: src/minoltamn.cpp:996 src/nikonmn.cpp:1345 src/nikonmn.cpp:1370 -msgid "Focus Position" -msgstr "Pozycja ostrzenia" - -#: src/minoltamn.cpp:997 src/nikonmn.cpp:1345 src/nikonmn.cpp:1370 -msgid "Focus position" -msgstr "Pozycja ostrzenia" - -#: src/minoltamn.cpp:999 -msgid "Focus Area" -msgstr "Obszar ostrzenia" - -#: src/minoltamn.cpp:1032 -#, fuzzy -msgid "Exposure Revision" -msgstr "Kompensacja ekspozycji" - -#: src/minoltamn.cpp:1033 -#, fuzzy -msgid "Exposure revision" -msgstr "Kompensacja ekspozycji" - -#: src/minoltamn.cpp:1050 src/minoltamn.cpp:1051 -#, fuzzy -msgid "Rotation2" -msgstr "Obrót" - -#: src/minoltamn.cpp:1056 src/minoltamn.cpp:1057 -#, fuzzy -msgid "Picture Finish" -msgstr "Informacje o zdjÄ™ciu" - -#: src/minoltamn.cpp:1059 -msgid "Exposure Manual Bias" -msgstr "RÄ™czna korekta ekspozycji" - -#: src/minoltamn.cpp:1060 -#, fuzzy -msgid "Exposure manual bias" -msgstr "RÄ™czna korekta ekspozycji (APEX)" - -#: src/minoltamn.cpp:1062 src/panasonicmn.cpp:241 src/sonymn.cpp:399 -#: src/sonymn.cpp:400 -msgid "AF Mode" -msgstr "Tryb AF" - -#: src/minoltamn.cpp:1063 src/panasonicmn.cpp:241 -msgid "AF mode" -msgstr "Tryb dziaÅ‚ania AF" - -#: src/minoltamn.cpp:1083 -msgid "Unknown Minolta Camera Settings 5D tag" -msgstr "Nieznany znacznik Minolta Camera settings 5D" - -#: src/minoltamn.cpp:1096 src/sonymn.cpp:449 -#, fuzzy -msgid "Self-timer 10 sec" -msgstr "Samowyzwalacz (12 s)" - -#: src/minoltamn.cpp:1098 src/sonymn.cpp:450 -#, fuzzy -msgid "Self-timer 2 sec" -msgstr "Samowyzwalacz (2 s)" - -#: src/minoltamn.cpp:1100 src/sonymn.cpp:453 -#, fuzzy -msgid "White Balance Bracketing Low" -msgstr "Bracketing balansu bieli" - -#: src/minoltamn.cpp:1101 -#, fuzzy -msgid "White Balance Bracketing High" -msgstr "Bracketing balansu bieli" - -#: src/minoltamn.cpp:1102 -msgid "Single-frame Bracketing Low" -msgstr "" - -#: src/minoltamn.cpp:1103 -#, fuzzy -msgid "Continuous Bracketing Low" -msgstr "Auto bracketing" - -#: src/minoltamn.cpp:1104 -msgid "Single-frame Bracketing High" -msgstr "" - -#: src/minoltamn.cpp:1105 -#, fuzzy -msgid "Continuous Bracketing High" -msgstr "CiÄ…gÅ‚y, wysoki" - -#: src/minoltamn.cpp:1136 src/sonymn.cpp:158 -msgid "Advanced" -msgstr "" - -#: src/minoltamn.cpp:1151 src/minoltamn.cpp:1433 src/sonymn.cpp:451 -#, fuzzy -msgid "Continuous Bracketing" -msgstr "CiÄ…gÅ‚y, wysoki" - -#: src/minoltamn.cpp:1152 -#, fuzzy -msgid "Single-Frame Bracketing" -msgstr "Bracketing" - -#: src/minoltamn.cpp:1153 src/minoltamn.cpp:1439 src/sonymn.cpp:225 -#, fuzzy -msgid "White Balance Bracketing" -msgstr "Bracketing balansu bieli" - -#: src/minoltamn.cpp:1183 src/minoltamn.cpp:1186 src/nikonmn.cpp:446 -msgid "Preset" -msgstr "Predefiniowany" - -#: src/minoltamn.cpp:1185 src/minoltamn.cpp:1188 src/minoltamn.cpp:2093 -#, fuzzy -msgid "Color Temperature/Color Filter" -msgstr "Temperatura koloru" - -#: src/minoltamn.cpp:1203 src/pentaxmn.cpp:1018 src/properties.cpp:465 -msgid "Temperature" -msgstr "Temperatura" - -#: src/minoltamn.cpp:1209 -#, fuzzy -msgid "Setup" -msgstr "Ustaw" - -#: src/minoltamn.cpp:1210 -#, fuzzy -msgid "Recall" -msgstr "Żółty" - -#: src/minoltamn.cpp:1215 -msgid "Ok" -msgstr "" - -#: src/minoltamn.cpp:1216 -msgid "Error" -msgstr "" - -#: src/minoltamn.cpp:1228 -#, fuzzy -msgid "Image and Information" -msgstr "Konfiguracja obrazu" - -#: src/minoltamn.cpp:1229 -#, fuzzy -msgid "Image Only" -msgstr "Rodzaj obrazu" - -#: src/minoltamn.cpp:1230 -#, fuzzy -msgid "Image and Histogram" -msgstr "Wysokość obrazu" - -#: src/minoltamn.cpp:1236 -#, fuzzy -msgid "Fill Flash" -msgstr "BÅ‚ysk wypeÅ‚niajÄ…cy" - -#: src/minoltamn.cpp:1247 -#, fuzzy -msgid "Focus Hold" -msgstr "Tryb ogniskowania" - -#: src/minoltamn.cpp:1248 -#, fuzzy -msgid "DOF Preview" -msgstr "PodglÄ…d" - -#: src/minoltamn.cpp:1253 -msgid "Hold" -msgstr "" - -#: src/minoltamn.cpp:1254 -#, fuzzy -msgid "Toggle" -msgstr "Ton" - -#: src/minoltamn.cpp:1255 -#, fuzzy -msgid "Spot Hold" -msgstr "Tryb punktowy wÅ‚Ä…czony" - -#: src/minoltamn.cpp:1256 -#, fuzzy -msgid "Spot Toggle" -msgstr "Tryb punktowy wÅ‚Ä…czony" - -#: src/minoltamn.cpp:1261 src/olympusmn.cpp:267 -msgid "Shutter Speed" -msgstr "Czas otwarcia migawki" - -#: src/minoltamn.cpp:1267 -msgid "Ambient and Flash" -msgstr "" - -#: src/minoltamn.cpp:1268 -msgid "Ambient Only" -msgstr "" - -#: src/minoltamn.cpp:1273 -msgid "0.3 seconds" -msgstr "" - -#: src/minoltamn.cpp:1274 -msgid "0.6 seconds" -msgstr "" - -#: src/minoltamn.cpp:1280 src/nikonmn.cpp:292 src/nikonmn.cpp:972 -#: src/nikonmn.cpp:1418 -#, fuzzy -msgid "Automatic" -msgstr "Automatycznie" - -#: src/minoltamn.cpp:1286 src/minoltamn.cpp:1292 -#, fuzzy -msgid "Auto-rotate" -msgstr "Automatyczna regulacja kontrastu" - -#: src/minoltamn.cpp:1287 -#, fuzzy -msgid "Horizontal" -msgstr "Poziome (normalne)" - -#: src/minoltamn.cpp:1293 -#, fuzzy -msgid "Manual Rotate" -msgstr "RÄ™czne wyzwolenie" - -#: src/minoltamn.cpp:1298 -#, fuzzy -msgid "Within Range" -msgstr "Zakres obiektywu" - -#: src/minoltamn.cpp:1299 -#, fuzzy -msgid "Under/Over Range" -msgstr "Zakres przejÅ›cia" - -#: src/minoltamn.cpp:1300 -#, fuzzy -msgid "Out of Range" -msgstr "Pozycja poza zakresem" - -#: src/minoltamn.cpp:1305 -#, fuzzy -msgid "Not Indicated" -msgstr "NieokreÅ›lony" - -#: src/minoltamn.cpp:1306 -#, fuzzy -msgid "Under Scale" -msgstr "Podwodny" - -#: src/minoltamn.cpp:1307 -#, fuzzy -msgid "Bottom of Scale" -msgstr "Od doÅ‚u do góry" - -#: src/minoltamn.cpp:1325 -msgid "Top of Scale" -msgstr "" - -#: src/minoltamn.cpp:1326 -#, fuzzy -msgid "Over Scale" -msgstr "DomyÅ›lna skala" - -#: src/minoltamn.cpp:1331 -msgid "AM" -msgstr "" - -#: src/minoltamn.cpp:1332 src/olympusmn.cpp:512 src/olympusmn.cpp:1374 -#: src/olympusmn.cpp:1384 -msgid "MF" -msgstr "RÄ™czne ostrzenie" - -#: src/minoltamn.cpp:1338 -#, fuzzy -msgid "Built-in" -msgstr "BÅ‚ysk wypeÅ‚niajÄ…cy" - -#: src/minoltamn.cpp:1344 src/pentaxmn.cpp:347 src/pentaxmn.cpp:360 -#, fuzzy -msgid "Very Low" -msgstr "Bardzo niski" - -#: src/minoltamn.cpp:1346 -#, fuzzy -msgid "Half Full" -msgstr "PeÅ‚ny" - -#: src/minoltamn.cpp:1347 -msgid "Sufficient Power Remaining" -msgstr "" - -#: src/minoltamn.cpp:1355 -#, fuzzy -msgid "Exposure Compensation Setting" -msgstr "Kompensacja ekspozycji" - -#: src/minoltamn.cpp:1356 -#, fuzzy -msgid "Exposure compensation setting" -msgstr "Kompensacja ekspozycji" - -#: src/minoltamn.cpp:1358 -#, fuzzy -msgid "High Speed Sync" -msgstr "Duża szybkość" - -#: src/minoltamn.cpp:1359 -#, fuzzy -msgid "High speed sync" -msgstr "Duża szybkość" - -#: src/minoltamn.cpp:1361 -#, fuzzy -msgid "Manual Exposure Time" -msgstr "Czas ekspozycji" - -#: src/minoltamn.cpp:1362 -#, fuzzy -msgid "Manual exposure time" -msgstr "Czas ekspozycji" - -#: src/minoltamn.cpp:1364 src/minoltamn.cpp:1365 -#, fuzzy -msgid "Manual FNumber" -msgstr "Numer odstÄ™pu" - -#: src/minoltamn.cpp:1373 -#, fuzzy -msgid "Drive Mode 2" -msgstr "Tryb dziaÅ‚ania" - -#: src/minoltamn.cpp:1374 -#, fuzzy -msgid "Drive mode 2" -msgstr "Tryb dziaÅ‚ania" - -#: src/minoltamn.cpp:1382 src/minoltamn.cpp:1383 src/sonymn.cpp:572 -#: src/sonymn.cpp:573 src/sonymn.cpp:678 src/sonymn.cpp:679 -msgid "Local AF Area Point" -msgstr "" - -#: src/minoltamn.cpp:1385 src/minoltamn.cpp:1386 src/nikonmn.cpp:822 -#: src/nikonmn.cpp:845 src/sonymn.cpp:569 src/sonymn.cpp:570 -#: src/sonymn.cpp:675 src/sonymn.cpp:676 -msgid "AF Area Mode" -msgstr "Tryb strefy AF" - -#: src/minoltamn.cpp:1388 src/minoltamn.cpp:1389 src/sonymn.cpp:605 -#: src/sonymn.cpp:606 src/sonymn.cpp:705 src/sonymn.cpp:706 -#, fuzzy -msgid "FlashMode" -msgstr "Tryb flesza" - -#: src/minoltamn.cpp:1391 -#, fuzzy -msgid "Flash Exposure Comp Setting" -msgstr "Kompensacja ekspozycji bÅ‚ysku" - -#: src/minoltamn.cpp:1392 -#, fuzzy -msgid "Flash exposure compensation setting" -msgstr "Kompensacja ekspozycji bÅ‚ysku w jednostkach EV" - -#: src/minoltamn.cpp:1397 src/sonymn.cpp:578 src/sonymn.cpp:579 -#: src/sonymn.cpp:684 src/sonymn.cpp:685 -#, fuzzy -msgid "ISO Setting" -msgstr "Ustawienia ISO" - -#: src/minoltamn.cpp:1400 src/minoltamn.cpp:1401 -#, fuzzy -msgid "Zone Matching Mode" -msgstr "PasujÄ…ca strefa" - -#: src/minoltamn.cpp:1403 src/sonymn.cpp:581 src/sonymn.cpp:582 -#: src/sonymn.cpp:687 src/sonymn.cpp:688 -#, fuzzy -msgid "Dynamic Range Optimizer Mode" -msgstr "Ustawienia trybu dynamicznego" - -#: src/minoltamn.cpp:1404 -#, fuzzy -msgid "Dynamic range optimizer mode" -msgstr "Rozszerzenie dynamiczny zakresu" - -#: src/minoltamn.cpp:1424 src/minoltamn.cpp:1425 src/sonymn.cpp:609 -#: src/sonymn.cpp:610 -msgid "Priority Setup Shutter Release" -msgstr "" - -#: src/minoltamn.cpp:1430 -#, fuzzy -msgid "Self Timer Time" -msgstr "Samowyzwalacz" - -#: src/minoltamn.cpp:1431 -#, fuzzy -msgid "Self timer time" -msgstr "Samowyzwalacz" - -#: src/minoltamn.cpp:1434 -#, fuzzy -msgid "Continuous bracketing" -msgstr "CiÄ…gÅ‚y, wysoki" - -#: src/minoltamn.cpp:1436 -#, fuzzy -msgid "Single Frame Bracketing" -msgstr "Bracketing balansu bieli" - -#: src/minoltamn.cpp:1437 -#, fuzzy -msgid "Single frame bracketing" -msgstr "Bracketing balansu bieli" - -#: src/minoltamn.cpp:1440 src/nikonmn.cpp:156 src/nikonmn.cpp:167 -msgid "White balance bracketing" -msgstr "Bracketing balansu bieli" - -#: src/minoltamn.cpp:1442 -#, fuzzy -msgid "White Balance Setting" -msgstr "Ustawienie balansu bieli" - -#: src/minoltamn.cpp:1445 -#, fuzzy -msgid "Preset White Balance" -msgstr "Balans bieli" - -#: src/minoltamn.cpp:1446 -#, fuzzy -msgid "Preset white balance" -msgstr "CM Balans bieli" - -#: src/minoltamn.cpp:1448 -#, fuzzy -msgid "Color Temperature Setting" -msgstr "Temperatura koloru" - -#: src/minoltamn.cpp:1449 -#, fuzzy -msgid "Color temperature setting" -msgstr "Temperatura koloru" - -#: src/minoltamn.cpp:1451 -#, fuzzy -msgid "Custom WB Setting" -msgstr "WÅ‚asny balans bieli 1" - -#: src/minoltamn.cpp:1452 -#, fuzzy -msgid "Custom WB setting" -msgstr "WÅ‚asny balans bieli 1" - -#: src/minoltamn.cpp:1454 src/minoltamn.cpp:1455 -#, fuzzy -msgid "Dynamic Range Optimizer Settings" -msgstr "Ustawienia trybu dynamicznego" - -#: src/minoltamn.cpp:1460 -#, fuzzy -msgid "Custom WB Red Level" -msgstr "WB poziom czerwieni" - -#: src/minoltamn.cpp:1461 -#, fuzzy -msgid "Custom WB red level" -msgstr "WB poziom czerwieni" - -#: src/minoltamn.cpp:1463 -#, fuzzy -msgid "Custom WB Green Level" -msgstr "WB poziom zieleni" - -#: src/minoltamn.cpp:1464 -#, fuzzy -msgid "Custom WB green level" -msgstr "WB poziom zieleni" - -#: src/minoltamn.cpp:1466 -#, fuzzy -msgid "Custom WB Blue Level" -msgstr "WB poziom bÅ‚Ä™kitu" - -#: src/minoltamn.cpp:1467 -#, fuzzy -msgid "CustomWB blue level" -msgstr "WB poziom bÅ‚Ä™kitu" - -#: src/minoltamn.cpp:1469 src/minoltamn.cpp:1470 -#, fuzzy -msgid "Custom WB Error" -msgstr "WÅ‚asny balans bieli 1" - -#: src/minoltamn.cpp:1473 -#, fuzzy -msgid "White balance fine tune" -msgstr "Poprawka balansu bieli" - -#: src/minoltamn.cpp:1479 -#, fuzzy -msgid "Color compensation filter" -msgstr "Wartość kompensacji ekspozycji" - -#: src/minoltamn.cpp:1481 src/minoltamn.cpp:1482 src/sonymn.cpp:641 -#: src/sonymn.cpp:642 src/sonymn.cpp:714 src/sonymn.cpp:715 -#, fuzzy -msgid "Sony Image Size" -msgstr "Rozmiar obrazu" - -#: src/minoltamn.cpp:1487 -msgid "Instant Playback Time" -msgstr "" - -#: src/minoltamn.cpp:1488 -msgid "Instant playback time" -msgstr "" - -#: src/minoltamn.cpp:1490 -msgid "Instant Playback Setup" -msgstr "" - -#: src/minoltamn.cpp:1491 -msgid "Instant playback setup" -msgstr "" - -#: src/minoltamn.cpp:1496 -msgid "Eye Start AF" -msgstr "" - -#: src/minoltamn.cpp:1497 -#, fuzzy -msgid "Eye start AF" -msgstr "One shot AF" - -#: src/minoltamn.cpp:1499 -#, fuzzy -msgid "Red Eye Reduction" -msgstr "Redukcja czerwonych oczu" - -#: src/minoltamn.cpp:1500 -#, fuzzy -msgid "Red eye reduction" -msgstr "Redukcja czerwonych oczu" - -#: src/minoltamn.cpp:1502 -#, fuzzy -msgid "Flash Default" -msgstr "Szczegóły flesza" - -#: src/minoltamn.cpp:1503 -#, fuzzy -msgid "Flash default" -msgstr "Szczegóły flesza" - -#: src/minoltamn.cpp:1505 -#, fuzzy -msgid "Auto Bracket Order" -msgstr "Auto bracketing" - -#: src/minoltamn.cpp:1506 -#, fuzzy -msgid "Auto bracket order" -msgstr "Auto bracketing" - -#: src/minoltamn.cpp:1508 -#, fuzzy -msgid "Focus Hold Button" -msgstr "Ustawienie trybu ogniskowania" - -#: src/minoltamn.cpp:1509 -#, fuzzy -msgid "Focus hold button" -msgstr "Ustawienie trybu ogniskowania" - -#: src/minoltamn.cpp:1511 -#, fuzzy -msgid "AEL Button" -msgstr "Ustawienie automatycznej ekspozycji" - -#: src/minoltamn.cpp:1512 -#, fuzzy -msgid "AEL button" -msgstr "Ustawienie automatycznej ekspozycji" - -#: src/minoltamn.cpp:1514 -#, fuzzy -msgid "Control Dial Set" -msgstr "Ustawienie kontrastu" - -#: src/minoltamn.cpp:1515 -#, fuzzy -msgid "Control dial set" -msgstr "Kontrastowość" - -#: src/minoltamn.cpp:1517 -#, fuzzy -msgid "Exposure Compensation Mode" -msgstr "Kompensacja ekspozycji" - -#: src/minoltamn.cpp:1518 -#, fuzzy -msgid "Exposure compensation mode" -msgstr "Kompensacja ekspozycji" - -#: src/minoltamn.cpp:1521 -#, fuzzy -msgid "AF assist" -msgstr "Wspomaganie AF" - -#: src/minoltamn.cpp:1523 -#, fuzzy -msgid "Card Shutter Lock" -msgstr "Blokada ekspozycji" - -#: src/minoltamn.cpp:1524 -#, fuzzy -msgid "Card shutter lock" -msgstr "Blokada ekspozycji" - -#: src/minoltamn.cpp:1526 -#, fuzzy -msgid "Lens Shutter Lock" -msgstr "Blokada ekspozycji" - -#: src/minoltamn.cpp:1527 -#, fuzzy -msgid "Lens shutter lock" -msgstr "DÅ‚ugo otwarta migawka" - -#: src/minoltamn.cpp:1529 -#, fuzzy -msgid "AF Area Illumination" -msgstr "GPS Informacja o obszarze" - -#: src/minoltamn.cpp:1530 -#, fuzzy -msgid "AF area illumination" -msgstr "Tryb strefy AF" - -#: src/minoltamn.cpp:1532 -msgid "Monitor Display Off" -msgstr "" - -#: src/minoltamn.cpp:1533 -msgid "Monitor display off" -msgstr "" - -#: src/minoltamn.cpp:1535 -#, fuzzy -msgid "Record Display" -msgstr "WyÅ›wietlanie naÅ‚ożone" - -#: src/minoltamn.cpp:1536 -#, fuzzy -msgid "Record display" -msgstr "WyÅ›wietlanie naÅ‚ożone" - -#: src/minoltamn.cpp:1538 -msgid "Play Display" -msgstr "" - -#: src/minoltamn.cpp:1539 -msgid "Play display" -msgstr "" - -#: src/minoltamn.cpp:1541 -#, fuzzy -msgid "Exposure Indicator" -msgstr "Indeks ekspozycji" - -#: src/minoltamn.cpp:1542 -#, fuzzy -msgid "Exposure indicator" -msgstr "Indeks ekspozycji" - -#: src/minoltamn.cpp:1544 -#, fuzzy -msgid "AEL Exposure Indicator" -msgstr "Indeks ekspozycji" - -#: src/minoltamn.cpp:1545 -msgid "" -"AEL exposure indicator (also indicates exposure for next shot when " -"bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1547 -#, fuzzy -msgid "Exposure Bracketing Indicator Last" -msgstr "Bracketing ekspozycji" - -#: src/minoltamn.cpp:1548 -msgid "" -"Exposure bracketing indicator last (indicator for last shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1550 -msgid "Metering Off Scale Indicator" -msgstr "" - -#: src/minoltamn.cpp:1551 -msgid "" -"Metering off scale indicator (two flashing triangles when under or over " -"metering scale)" -msgstr "" - -#: src/minoltamn.cpp:1553 -#, fuzzy -msgid "Flash Exposure Indicator" -msgstr "Kompensacja ekspozycji bÅ‚ysku" - -#: src/minoltamn.cpp:1554 -#, fuzzy -msgid "Flash exposure indicator" -msgstr "Kompensacja ekspozycji bÅ‚ysku" - -#: src/minoltamn.cpp:1556 -#, fuzzy -msgid "Flash Exposure Indicator Next" -msgstr "Kompensacja ekspozycji bÅ‚ysku" - -#: src/minoltamn.cpp:1557 -msgid "Flash exposure indicator next (indicator for next shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1559 -#, fuzzy -msgid "Flash Exposure Indicator Last" -msgstr "Kompensacja ekspozycji bÅ‚ysku" - -#: src/minoltamn.cpp:1560 -msgid "Flash exposure indicator last (indicator for last shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1565 -#, fuzzy -msgid "Focus Mode Switch" -msgstr "Tryb ogniskowania" - -#: src/minoltamn.cpp:1566 -#, fuzzy -msgid "Focus mode switch" -msgstr "Ustawienie trybu ogniskowania" - -#: src/minoltamn.cpp:1568 src/olympusmn.cpp:759 -msgid "Flash Type" -msgstr "Rodzaj flesza" - -#: src/minoltamn.cpp:1569 src/olympusmn.cpp:759 -msgid "Flash type" -msgstr "Rodzaj flesza" - -#: src/minoltamn.cpp:1574 src/olympusmn.cpp:660 -msgid "AE Lock" -msgstr "Blokada ekspozycji" - -#: src/minoltamn.cpp:1581 -msgid "Color compensation filter: negative is green, positive is magenta" -msgstr "" - -#: src/minoltamn.cpp:1583 src/tags.cpp:759 -msgid "Battery Level" -msgstr "Poziom baterii" - -#: src/minoltamn.cpp:1584 -#, fuzzy -msgid "Battery level" -msgstr "Poziom baterii" - -#: src/minoltamn.cpp:1588 -#, fuzzy -msgid "Unknown Sony Camera Settings A100 tag" -msgstr "Nieznany znacznik Canon Camera Settings 1" - -#: src/minoltamn.cpp:1894 src/sonymn.cpp:484 -#, fuzzy -msgid "Clear" -msgstr "rok" - -#: src/minoltamn.cpp:1895 src/sonymn.cpp:485 -#, fuzzy -msgid "Deep" -msgstr "Denver" - -#: src/minoltamn.cpp:1896 src/sonymn.cpp:486 -#, fuzzy -msgid "Light" -msgstr "Prawy" - -#: src/minoltamn.cpp:1897 -#, fuzzy -msgid "Night View" -msgstr "Scena nocna" - -#: src/minoltamn.cpp:1898 -msgid "Autumn Leaves" -msgstr "" - -#: src/minoltamn.cpp:1937 -#, fuzzy -msgid "Local" -msgstr "PoÅ‚ożenie" - -#: src/minoltamn.cpp:1952 -#, fuzzy -msgid "Top-Right" -msgstr "Górny prawy" - -#: src/minoltamn.cpp:1954 -#, fuzzy -msgid "Bottom-Right" -msgstr "Dolny prawy" - -#: src/minoltamn.cpp:1956 -#, fuzzy -msgid "Bottom-Left" -msgstr "Dolny lewy" - -#: src/minoltamn.cpp:1958 -#, fuzzy -msgid "Top-Left" -msgstr "Górny lewy" - -#: src/minoltamn.cpp:1959 -#, fuzzy -msgid "Far-Right" -msgstr "PrzyciÄ™cie prawo" - -#: src/minoltamn.cpp:1960 -#, fuzzy -msgid "Far-Left" -msgstr "PrzyciÄ™cie lewo" - -#: src/minoltamn.cpp:1974 src/sonymn.cpp:89 -msgid "Advanced Auto" -msgstr "" - -#: src/minoltamn.cpp:1975 -#, fuzzy -msgid "Advanced Level" -msgstr "Poziom czerni" - -#: src/minoltamn.cpp:1988 -#, fuzzy -msgid "AF" -msgstr "AF-S" - -#: src/minoltamn.cpp:1989 -#, fuzzy -msgid "Release" -msgstr "Data udostÄ™pnienia" - -#: src/minoltamn.cpp:2001 -#, fuzzy -msgid "RAW " -msgstr "RAW" - -#: src/minoltamn.cpp:2002 -#, fuzzy -msgid "CRAW " -msgstr "RAW" - -#: src/minoltamn.cpp:2005 -#, fuzzy -msgid "RAW+JPEG" -msgstr "JPEG" - -#: src/minoltamn.cpp:2006 -#, fuzzy -msgid "CRAW+JPEG" -msgstr "JPEG" - -#: src/minoltamn.cpp:2062 -msgid "Raw + JPEG" -msgstr "" - -#: src/minoltamn.cpp:2063 -#, fuzzy -msgid "Compressed Raw" -msgstr "Współczynnik kompresji" - -#: src/minoltamn.cpp:2064 -#, fuzzy -msgid "Compressed Raw + JPEG" -msgstr "Rozmiar skompresowanego obrazka" - -#: src/minoltamn.cpp:2077 -msgid "Minolta AF 2x APO (D)" -msgstr "" - -#: src/minoltamn.cpp:2078 -msgid "Minolta AF 2x APO II" -msgstr "" - -#: src/minoltamn.cpp:2079 -msgid "Minolta AF 1.4x APO (D)" -msgstr "" - -#: src/minoltamn.cpp:2080 -msgid "Minolta AF 1.4x APO II" -msgstr "" - -#: src/minoltamn.cpp:2110 -msgid "ISO Setting Used" -msgstr "Użyte ustawienie ISO" - -#: src/minoltamn.cpp:2111 src/olympusmn.cpp:126 src/olympusmn.cpp:1109 -msgid "High Key" -msgstr "High Key" - -#: src/minoltamn.cpp:2112 src/olympusmn.cpp:132 src/olympusmn.cpp:1107 -msgid "Low Key" -msgstr "Low Key" - -#: src/nikonmn.cpp:80 -#, fuzzy -msgid "Extra High" -msgstr "Ekstra dobra" - -#: src/nikonmn.cpp:86 src/nikonmn.cpp:1560 -msgid "Single area" -msgstr "Pojedynczy obszar" - -#: src/nikonmn.cpp:87 src/nikonmn.cpp:1561 -msgid "Dynamic area" -msgstr "Dynamiczny obszar" - -#: src/nikonmn.cpp:88 -msgid "Dynamic area, closest subject" -msgstr "Dynamiczny obszar, najbliższy obiekt" - -#: src/nikonmn.cpp:89 -#, fuzzy -msgid "Group dynamic" -msgstr "Dynamiczna siatka" - -#: src/nikonmn.cpp:90 src/nikonmn.cpp:1564 -msgid "Single area (wide)" -msgstr "Pojedynczy obszar (szeroki)" - -#: src/nikonmn.cpp:91 src/nikonmn.cpp:1565 -msgid "Dynamic area (wide)" -msgstr "Dynamiczny obszar (szeroki)" - -#: src/nikonmn.cpp:104 src/nikonmn.cpp:797 src/nikonmn.cpp:812 -#: src/pentaxmn.cpp:215 -msgid "Upper-left" -msgstr "Górny lewy" - -#: src/nikonmn.cpp:105 src/nikonmn.cpp:798 src/nikonmn.cpp:813 -#: src/pentaxmn.cpp:217 -msgid "Upper-right" -msgstr "Górny prawy" - -#: src/nikonmn.cpp:106 src/nikonmn.cpp:799 src/nikonmn.cpp:814 -#: src/pentaxmn.cpp:223 -msgid "Lower-left" -msgstr "Dolny lewy" - -#: src/nikonmn.cpp:107 src/nikonmn.cpp:800 src/nikonmn.cpp:815 -#: src/pentaxmn.cpp:225 -msgid "Lower-right" -msgstr "Dolny prawy" - -#: src/nikonmn.cpp:108 -#, fuzzy -msgid "Left-most" -msgstr "Lewy najwiÄ™kszy" - -#: src/nikonmn.cpp:109 -#, fuzzy -msgid "Right-most" -msgstr "Prawy najwiÄ™kszy" - -#: src/nikonmn.cpp:143 -msgid "Fire, manual" -msgstr "Tak, rÄ™czna" - -#: src/nikonmn.cpp:144 -msgid "Fire, external" -msgstr "Tak, zewnÄ™trzna" - -#: src/nikonmn.cpp:145 -#, fuzzy -msgid "Fire, commander mode" -msgstr "Tak, tryb zarzÄ…dcy" - -#: src/nikonmn.cpp:146 -msgid "Fire, TTL mode" -msgstr "Tak, tryb TTL" - -#: src/nikonmn.cpp:152 src/nikonmn.cpp:163 -msgid "Delay" -msgstr "Opóźnienie" - -#: src/nikonmn.cpp:153 src/nikonmn.cpp:164 -#, fuzzy -msgid "PC control" -msgstr "Sterowanie podczerwieniÄ…" - -#: src/nikonmn.cpp:154 src/nikonmn.cpp:165 -msgid "Exposure bracketing" -msgstr "Bracketing ekspozycji" - -#: src/nikonmn.cpp:155 -msgid "Auto ISO" -msgstr "Automatyczne ISO" - -#: src/nikonmn.cpp:157 src/nikonmn.cpp:168 -msgid "IR control" -msgstr "Sterowanie podczerwieniÄ…" - -#: src/nikonmn.cpp:166 -msgid "Unused LE-NR slowdown" -msgstr "" - -#: src/nikonmn.cpp:174 -msgid "Auto release" -msgstr "Automatyczne wyzwolenie" - -#: src/nikonmn.cpp:175 -msgid "Manual release" -msgstr "RÄ™czne wyzwolenie" - -#: src/nikonmn.cpp:180 -msgid "Lossy (type 1)" -msgstr "Stratna (typ 1)" - -#: src/nikonmn.cpp:181 src/tags.cpp:247 -msgid "Uncompressed" -msgstr "Bez kompresji" - -#: src/nikonmn.cpp:182 -msgid "Lossless" -msgstr "Bezstratna" - -#: src/nikonmn.cpp:183 -msgid "Lossy (type 2)" -msgstr "Stratna (typ 2)" - -#: src/nikonmn.cpp:189 -msgid "B & W" -msgstr "Czarno-biaÅ‚y" - -#: src/nikonmn.cpp:191 -#, fuzzy -msgid "Trim" -msgstr "PrzyciÄ™cie" - -#: src/nikonmn.cpp:192 -msgid "Small picture" -msgstr "MaÅ‚y obrazek" - -#: src/nikonmn.cpp:193 -msgid "D-Lighting" -msgstr "D-Lighting" - -#: src/nikonmn.cpp:194 -msgid "Red eye" -msgstr "Efekt czerwonych oczu" - -#: src/nikonmn.cpp:195 src/nikonmn.cpp:678 -msgid "Cyanotype" -msgstr "Cyjanotypia" - -#: src/nikonmn.cpp:196 -msgid "Sky light" -msgstr "ÅšwiatÅ‚o dzienne" - -#: src/nikonmn.cpp:197 -msgid "Warm tone" -msgstr "CiepÅ‚y odcieÅ„" - -#: src/nikonmn.cpp:198 -msgid "Color custom" -msgstr "WÅ‚asny kolor" - -#: src/nikonmn.cpp:199 -#, fuzzy -msgid "Image overlay" -msgstr "Tonacja obrazu" - -#: src/nikonmn.cpp:205 -msgid "Minimal" -msgstr "Minimalny" - -#: src/nikonmn.cpp:214 src/nikonmn.cpp:524 -msgid "Nikon Makernote version" -msgstr "Wersja Nikon Makernote" - -#: src/nikonmn.cpp:216 src/nikonmn.cpp:468 src/nikonmn.cpp:525 -#: src/olympusmn.cpp:270 src/panasonicmn.cpp:344 src/tags.cpp:1583 -msgid "ISO Speed" -msgstr "CzuÅ‚ość ISO" - -#: src/nikonmn.cpp:228 src/nikonmn.cpp:529 -msgid "Sharpening" -msgstr "Wyostrzenie" - -#: src/nikonmn.cpp:229 src/nikonmn.cpp:529 -msgid "Image sharpening setting" -msgstr "Ustawienie wyostrzenia obrazu" - -#: src/nikonmn.cpp:231 src/nikonmn.cpp:530 -msgid "Focus" -msgstr "Ogniskowanie" - -#: src/nikonmn.cpp:234 src/nikonmn.cpp:531 -msgid "Flash Setting" -msgstr "Ustawienie flesza" - -#: src/nikonmn.cpp:235 src/nikonmn.cpp:531 -msgid "Flash setting" -msgstr "Ustawienie flesza" - -#: src/nikonmn.cpp:240 src/nikonmn.cpp:538 -msgid "ISO Selection" -msgstr "Wybór ISO" - -#: src/nikonmn.cpp:241 src/nikonmn.cpp:538 -msgid "ISO selection" -msgstr "Wybór ISO" - -#: src/nikonmn.cpp:243 src/nikonmn.cpp:539 src/panasonicmn.cpp:246 -#, fuzzy -msgid "Data Dump" -msgstr "Zrzut danych 1" - -#: src/nikonmn.cpp:244 src/nikonmn.cpp:539 src/panasonicmn.cpp:246 -#, fuzzy -msgid "Data dump" -msgstr "Zrzut danych 1" - -#: src/nikonmn.cpp:246 src/nikonmn.cpp:465 src/nikonmn.cpp:559 -msgid "Image Adjustment" -msgstr "Dopasowanie obrazu" - -#: src/nikonmn.cpp:247 src/nikonmn.cpp:466 src/nikonmn.cpp:559 -msgid "Image adjustment setting" -msgstr "Ustawienie dopasowania obrazu" - -#: src/nikonmn.cpp:249 src/nikonmn.cpp:483 src/nikonmn.cpp:561 -msgid "Auxiliary Lens" -msgstr "Obiektyw zewnÄ™trzny" - -#: src/nikonmn.cpp:250 src/nikonmn.cpp:484 src/nikonmn.cpp:561 -msgid "Auxiliary lens (adapter)" -msgstr "Obiektyw zewnÄ™trzny (adapter)" - -#: src/nikonmn.cpp:253 src/nikonmn.cpp:564 src/olympusmn.cpp:304 -msgid "Manual focus distance" -msgstr "RÄ™czna odlegÅ‚ość ostrzenia" - -#: src/nikonmn.cpp:256 src/nikonmn.cpp:481 src/nikonmn.cpp:565 -msgid "Digital zoom setting" -msgstr "Ustawienie powiÄ™kszenia cyfrowego" - -#: src/nikonmn.cpp:258 -msgid "AF Focus Position" -msgstr "Pozycja AF" - -#: src/nikonmn.cpp:259 -msgid "AF focus position information" -msgstr "Informacja o pozycji AF" - -#: src/nikonmn.cpp:263 -msgid "Unknown Nikon1MakerNote tag" -msgstr "Nieznany znacznik Nikon1MakerNote" - -#: src/nikonmn.cpp:290 src/nikonmn.cpp:1416 -msgid "Continuous autofocus" -msgstr "CiÄ…gÅ‚y AF" - -#: src/nikonmn.cpp:291 src/nikonmn.cpp:1417 -msgid "Single autofocus" -msgstr "Pojedynczy AF" - -#: src/nikonmn.cpp:325 src/nikonmn.cpp:506 src/nikonmn.cpp:1517 -msgid "Not used" -msgstr "Nie używany" - -#: src/nikonmn.cpp:365 -msgid "guess" -msgstr "wartość szacowana" - -#: src/nikonmn.cpp:412 -msgid "VGA Basic" -msgstr "Podstawowa VGA" - -#: src/nikonmn.cpp:413 -msgid "VGA Normal" -msgstr "Normalna VGA" - -#: src/nikonmn.cpp:414 -msgid "VGA Fine" -msgstr "Dobra VGA" - -#: src/nikonmn.cpp:415 -msgid "SXGA Basic" -msgstr "Podstawowa SXGA" - -#: src/nikonmn.cpp:416 -msgid "SXGA Normal" -msgstr "Normalna SXGA" - -#: src/nikonmn.cpp:417 -msgid "SXGA Fine" -msgstr "Dobra SXGA" - -#: src/nikonmn.cpp:429 -msgid "Bright+" -msgstr "Jasność+" - -#: src/nikonmn.cpp:430 -msgid "Bright-" -msgstr "Jasność-" - -#: src/nikonmn.cpp:431 -msgid "Contrast+" -msgstr "Kontrast+" - -#: src/nikonmn.cpp:432 -msgid "Contrast-" -msgstr "Kontrast-" - -#: src/nikonmn.cpp:451 -msgid "Speedlight" -msgstr "SpeedLight" - -#: src/nikonmn.cpp:491 -msgid "Unknown Nikon2MakerNote tag" -msgstr "Nieznany znacznik Nikon2MakerNote" - -#: src/nikonmn.cpp:532 src/olympusmn.cpp:282 -msgid "Flash Device" -msgstr "UrzÄ…dzenie flesza" - -#: src/nikonmn.cpp:532 src/olympusmn.cpp:283 -msgid "Flash device" -msgstr "UrzÄ…dzenie flesza" - -#: src/nikonmn.cpp:534 src/olympusmn.cpp:249 src/panasonicmn.cpp:248 -msgid "White Balance Bias" -msgstr "Odchylenie balansu bieli" - -#: src/nikonmn.cpp:534 src/olympusmn.cpp:250 -msgid "White balance bias" -msgstr "Odchylenie balansu bieli" - -#: src/nikonmn.cpp:535 src/olympusmn.cpp:932 -msgid "WB RB Levels" -msgstr "Poziomy balansu bieli RB" - -#: src/nikonmn.cpp:535 src/olympusmn.cpp:932 -msgid "WB RB levels" -msgstr "Poziomy balansu bieli RB" - -#: src/nikonmn.cpp:536 -#, fuzzy -msgid "Program Shift" -msgstr "Program Tv Shift" - -#: src/nikonmn.cpp:536 -#, fuzzy -msgid "Program shift" -msgstr "Program-shift" - -#: src/nikonmn.cpp:537 -msgid "Exposure Difference" -msgstr "Różnica ekspozycji" - -#: src/nikonmn.cpp:537 -msgid "Exposure difference" -msgstr "Różnica ekspozycji" - -#: src/nikonmn.cpp:540 src/pentaxmn.cpp:877 -msgid "Pointer to a preview image" -msgstr "Wskaźnik podglÄ…du obrazka" - -#: src/nikonmn.cpp:540 src/pentaxmn.cpp:878 -msgid "Offset to an IFD containing a preview image" -msgstr "PrzesuniÄ™cie do IFD zawierajÄ…cego obrazek podglÄ…du" - -#: src/nikonmn.cpp:541 -msgid "Flash Comp" -msgstr "Kompensacja bÅ‚ysku" - -#: src/nikonmn.cpp:541 -msgid "Flash compensation setting" -msgstr "Ustawienie kompensacji bÅ‚ysku" - -#: src/nikonmn.cpp:543 -msgid "Image Boundary" -msgstr "Granice obrazu" - -#: src/nikonmn.cpp:543 -msgid "Image boundary" -msgstr "Granice obrazu" - -#: src/nikonmn.cpp:544 -#, fuzzy -msgid "Flash exposure comp" -msgstr "Kompensacja ekspozycji bÅ‚ysku" - -#: src/nikonmn.cpp:545 -msgid "Flash Bracket Comp" -msgstr "Kompensacja bracketingu bÅ‚ysku" - -#: src/nikonmn.cpp:545 -msgid "Flash bracket compensation applied" -msgstr "Zastosowana kompensacja bracketingu bÅ‚ysku" - -#: src/nikonmn.cpp:546 -msgid "Exposure Bracket Comp" -msgstr "Kompensacja bracketingu ekspozycji" - -#: src/nikonmn.cpp:546 -msgid "AE bracket compensation applied" -msgstr "Zastosowana kompensacja bracketingu automatycznej ekspozycji" - -#: src/nikonmn.cpp:547 src/olympusmn.cpp:459 -msgid "Image Processing" -msgstr "Przetwarzanie obrazu" - -#: src/nikonmn.cpp:547 src/pentaxmn.cpp:985 src/pentaxmn.cpp:986 -msgid "Image processing" -msgstr "Przetwarzanie obrazu" - -#: src/nikonmn.cpp:548 -#, fuzzy -msgid "Crop High Speed" -msgstr "Duża szybkość" - -#: src/nikonmn.cpp:548 -#, fuzzy -msgid "Crop high speed" -msgstr "1-strefowy (wysoka czuÅ‚ość)" - -#: src/nikonmn.cpp:549 -#, fuzzy -msgid "Exposure Tuning" -msgstr "Ostrzeżenie ekspozycji" - -#: src/nikonmn.cpp:549 -#, fuzzy -msgid "Exposure tuning" -msgstr "Ostrzeżenie ekspozycji" - -#: src/nikonmn.cpp:552 -msgid "VR Info" -msgstr "Informacja o redukcji wstrzÄ…sów" - -#: src/nikonmn.cpp:552 -msgid "VR info" -msgstr "Informacja o redukcji wstrzÄ…sów" - -#: src/nikonmn.cpp:553 -msgid "Image Authentication" -msgstr "Autoryzacja obrazu" - -#: src/nikonmn.cpp:553 -msgid "Image authentication" -msgstr "Autoryzacja obrazu" - -#: src/nikonmn.cpp:554 -#, fuzzy -msgid "ActiveD-Lighting" -msgstr "D-Lighting" - -#: src/nikonmn.cpp:554 -#, fuzzy -msgid "ActiveD-lighting" -msgstr "D-Lighting" - -#: src/nikonmn.cpp:555 -#, fuzzy -msgid "Picture Control" -msgstr "Informacje o zdjÄ™ciu" - -#: src/nikonmn.cpp:555 -#, fuzzy -msgid " Picture control" -msgstr "Informacje o zdjÄ™ciu" - -#: src/nikonmn.cpp:556 -msgid "World Time" -msgstr "Czas Å›wiatowy" - -#: src/nikonmn.cpp:556 -msgid "World time" -msgstr "Czas Å›wiatowy" - -#: src/nikonmn.cpp:557 -msgid "ISO Info" -msgstr "Informacja ISO" - -#: src/nikonmn.cpp:557 -msgid "ISO info" -msgstr "Informacja ISO" - -#: src/nikonmn.cpp:558 -msgid "Vignette Control" -msgstr "Kontrola winietowania" - -#: src/nikonmn.cpp:558 -msgid "Vignette control" -msgstr "Kontrola winietowania" - -#: src/nikonmn.cpp:560 -msgid "Tone Compensation" -msgstr "Kompensacja tonów" - -#: src/nikonmn.cpp:560 -msgid "Tone compensation" -msgstr "Kompensacja tonów" - -#: src/nikonmn.cpp:566 -msgid "Mode of flash used" -msgstr "Użyty tryb flesza" - -#: src/nikonmn.cpp:568 src/panasonicmn.cpp:244 -msgid "Shooting Mode" -msgstr "Tryb robienia zdjÄ™cia" - -#: src/nikonmn.cpp:568 src/panasonicmn.cpp:244 src/pentaxmn.cpp:868 -msgid "Shooting mode" -msgstr "Tryb robienia zdjÄ™cia" - -#: src/nikonmn.cpp:569 -#, fuzzy -msgid "Auto Bracket Release" -msgstr "Automatyczne wyzwolenie" - -#: src/nikonmn.cpp:569 -#, fuzzy -msgid "Auto bracket release" -msgstr "Automatyczne wyzwolenie" - -#: src/nikonmn.cpp:570 -#, fuzzy -msgid "Lens FStops" -msgstr "Apertura obiektywu" - -#: src/nikonmn.cpp:571 -msgid "Contrast Curve" -msgstr "Krzywa kontrastu" - -#: src/nikonmn.cpp:571 -msgid "Contrast curve" -msgstr "Krzywa kontrastu" - -#: src/nikonmn.cpp:572 -msgid "Color Hue" -msgstr "OdcieÅ„ koloru" - -#: src/nikonmn.cpp:572 -msgid "Color hue" -msgstr "OdcieÅ„ koloru" - -#: src/nikonmn.cpp:573 src/olympusmn.cpp:253 src/olympusmn.cpp:684 -#: src/panasonicmn.cpp:282 -msgid "Scene mode" -msgstr "Rodzaj sceny" - -#: src/nikonmn.cpp:574 src/olympusmn.cpp:1076 src/properties.cpp:562 -#: src/tags.cpp:826 src/tags.cpp:1649 -msgid "Light Source" -msgstr "ŹródÅ‚o Å›wiatÅ‚a" - -#: src/nikonmn.cpp:574 src/olympusmn.cpp:1076 -msgid "Light source" -msgstr "ŹródÅ‚o Å›wiatÅ‚a" - -#: src/nikonmn.cpp:575 -msgid "Shot info" -msgstr "Informacje o zdjÄ™ciu" - -#: src/nikonmn.cpp:576 src/nikonmn.cpp:700 -msgid "Hue Adjustment" -msgstr "Dopasowanie odcieni" - -#: src/nikonmn.cpp:576 src/nikonmn.cpp:700 -msgid "Hue adjustment" -msgstr "Dopasowanie odcieni" - -#: src/nikonmn.cpp:577 -msgid "NEF Compression" -msgstr "Kompresja NEF" - -#: src/nikonmn.cpp:577 -msgid "NEF compression" -msgstr "Kompresja NEF" - -#: src/nikonmn.cpp:580 src/tags.cpp:898 -msgid "Linearization Table" -msgstr "Tabela linearyzacji" - -#: src/nikonmn.cpp:580 -msgid "Linearization table" -msgstr "Tabela linearyzacji" - -#: src/nikonmn.cpp:581 -msgid "Color Balance" -msgstr "Balans kolorów" - -#: src/nikonmn.cpp:581 -msgid "Color balance" -msgstr "Balans kolorów" - -#: src/nikonmn.cpp:582 -msgid "Lens Data" -msgstr "Dane obiektywu" - -#: src/nikonmn.cpp:582 -msgid "Lens data settings" -msgstr "Ustawienia danych obiektywu" - -#: src/nikonmn.cpp:583 -msgid "Raw Image Center" -msgstr "Åšrodek obrazu Raw" - -#: src/nikonmn.cpp:583 -msgid "Raw image center" -msgstr "Åšrodek obrazu Raw" - -#: src/nikonmn.cpp:584 -msgid "Sensor Pixel Size" -msgstr "Rozmiar sensora" - -#: src/nikonmn.cpp:584 -msgid "Sensor pixel size" -msgstr "Rozmiar sensora" - -#: src/nikonmn.cpp:586 -msgid "Scene Assist" -msgstr "Wspomaganie AF" - -#: src/nikonmn.cpp:586 -msgid "Scene assist" -msgstr "Pomoc automatycznego ostrzenia" - -#: src/nikonmn.cpp:587 -msgid "Retouch History" -msgstr "Historia retuszu" - -#: src/nikonmn.cpp:587 -msgid "Retouch history" -msgstr "Historia retuszu" - -#: src/nikonmn.cpp:589 -msgid "Serial NO" -msgstr "Numer seryjny" - -#: src/nikonmn.cpp:589 -msgid "Camera serial number, usually starts with \"NO= \"" -msgstr "Numer seryjny aparatu, zwykle zaczyna siÄ™ od \"NO= \"" - -#: src/nikonmn.cpp:590 -msgid "Image Data Size" -msgstr "Rozmiar danych obrazu" - -#: src/nikonmn.cpp:590 -msgid "Image data size" -msgstr "Rozmiar danych obrazu" - -#: src/nikonmn.cpp:592 -msgid "Image Count" -msgstr "Licznik zdjęć" - -#: src/nikonmn.cpp:592 -msgid "Image count" -msgstr "Licznik zdjęć" - -#: src/nikonmn.cpp:593 src/nikonmn.cpp:1227 -msgid "Deleted Image Count" -msgstr "Licznik usuniÄ™tych zdjęć" - -#: src/nikonmn.cpp:593 src/nikonmn.cpp:1227 -msgid "Deleted image count" -msgstr "Licznik usuniÄ™tych zdjęć" - -#: src/nikonmn.cpp:594 src/nikonmn.cpp:1064 src/nikonmn.cpp:1077 -#: src/nikonmn.cpp:1137 src/nikonmn.cpp:1197 src/nikonmn.cpp:1233 -msgid "Shutter Count" -msgstr "Licznik migawki" - -#: src/nikonmn.cpp:594 -msgid "Number of shots taken by camera" -msgstr "Liczba zdjęć wykonanych aparatem" - -#: src/nikonmn.cpp:595 -msgid "Flash info" -msgstr "Informacja o fleszu" - -#: src/nikonmn.cpp:596 -msgid "Image Optimization" -msgstr "Optymalizacja obrazu" - -#: src/nikonmn.cpp:596 -msgid "Image optimization" -msgstr "Optymalizacja obrazu" - -#: src/nikonmn.cpp:598 -#, fuzzy -msgid "Program Variation" -msgstr "Wariacje programu" - -#: src/nikonmn.cpp:598 -#, fuzzy -msgid "Program variation" -msgstr "Wariacje programu" - -#: src/nikonmn.cpp:600 -msgid "AF Response" -msgstr "Odpowiedź AF" - -#: src/nikonmn.cpp:600 -msgid "AF response" -msgstr "Odpowiedź AF" - -#: src/nikonmn.cpp:601 -msgid "Multi exposure" -msgstr "Wielokrotna ekspozycja" - -#: src/nikonmn.cpp:602 -msgid "High ISO Noise Reduction" -msgstr "Redukcja szumów przy wysokim ISO" - -#: src/nikonmn.cpp:603 src/nikonmn.cpp:702 -msgid "Toning effect" -msgstr "Efekt tonowania" - -#: src/nikonmn.cpp:604 -msgid "AF info 2" -msgstr "Informacja AF 2" - -#: src/nikonmn.cpp:605 -msgid "File info" -msgstr "Informacja o pliku" - -#: src/nikonmn.cpp:606 -#, fuzzy -msgid "AF tune" -msgstr "Dostrojenie AF" - -#: src/nikonmn.cpp:609 -#, fuzzy -msgid "Capture Data" -msgstr "Przechwycone dane" - -#: src/nikonmn.cpp:609 -#, fuzzy -msgid "Capture data" -msgstr "Przechwycone dane" - -#: src/nikonmn.cpp:610 -#, fuzzy -msgid "Capture Version" -msgstr "Wersja programu" - -#: src/nikonmn.cpp:610 -#, fuzzy -msgid "Capture version" -msgstr "Wersja programu" - -#: src/nikonmn.cpp:612 -#, fuzzy -msgid "Capture Offsets" -msgstr "PrzesuniÄ™cia (piksele * 2)" - -#: src/nikonmn.cpp:612 -#, fuzzy -msgid "Capture offsets" -msgstr "PrzesuniÄ™cia (piksele * 2)" - -#: src/nikonmn.cpp:613 -#, fuzzy -msgid "Scan IFD" -msgstr "Identyfikator zapisu" - -#: src/nikonmn.cpp:614 -#, fuzzy -msgid "ICC profile" -msgstr "Profil CC" - -#: src/nikonmn.cpp:615 -#, fuzzy -msgid "Capture output" -msgstr "Przechwycone dane" - -#: src/nikonmn.cpp:617 -msgid "Unknown Nikon3MakerNote tag" -msgstr "Nieznany znacznik Nikon3MakerNote" - -#: src/nikonmn.cpp:627 src/olympusmn.cpp:65 src/panasonicmn.cpp:140 -#: src/pentaxmn.cpp:298 -msgid "No" -msgstr "Nie" - -#: src/nikonmn.cpp:628 src/olympusmn.cpp:66 src/panasonicmn.cpp:139 -#: src/pentaxmn.cpp:299 -msgid "Yes" -msgstr "Tak" - -#: src/nikonmn.cpp:633 -msgid "Y/M/D" -msgstr "R/M/D" - -#: src/nikonmn.cpp:634 -msgid "M/D/Y" -msgstr "M/D/R" - -#: src/nikonmn.cpp:635 -msgid "D/M/Y" -msgstr "D/M/R" - -#: src/nikonmn.cpp:647 src/nikonmn.cpp:1228 -msgid "Vibration Reduction" -msgstr "Redukcja wstrzÄ…sów" - -#: src/nikonmn.cpp:647 src/nikonmn.cpp:1228 -msgid "Vibration reduction" -msgstr "Redukcja wstrzÄ…sów" - -#: src/nikonmn.cpp:649 -msgid "Unknown Nikon Vibration Reduction Tag" -msgstr "Nieznany znacznik Nikon Vibration Reduction" - -#: src/nikonmn.cpp:659 -msgid "Default Settings" -msgstr "Ustawienia standardowe" - -#: src/nikonmn.cpp:660 src/nikonmn.cpp:695 -msgid "Quick Adjust" -msgstr "Szybkie dopasowanie" - -#: src/nikonmn.cpp:661 -msgid "Full Control" -msgstr "PeÅ‚na kontrola" - -#: src/nikonmn.cpp:682 -#, fuzzy -msgid "Blue-green" -msgstr "Niebieski-zielony" - -#: src/nikonmn.cpp:684 -#, fuzzy -msgid "Purple-blue" -msgstr "Purpurowy-niebieski" - -#: src/nikonmn.cpp:685 -#, fuzzy -msgid "Red-purple" -msgstr "Czerwony-purpurowy" - -#: src/nikonmn.cpp:692 src/properties.cpp:980 -msgid "Name" -msgstr "Nazwa" - -#: src/nikonmn.cpp:693 -#, fuzzy -msgid "Base" -msgstr "Podstawa" - -#: src/nikonmn.cpp:694 -msgid "Adjust" -msgstr "Dopasowanie" - -#: src/nikonmn.cpp:695 -msgid "Quick adjust" -msgstr "Szybkie dopasowanie" - -#: src/nikonmn.cpp:701 -msgid "Filter effect" -msgstr "Efekt filtra" - -#: src/nikonmn.cpp:703 -msgid "Toning Saturation" -msgstr "Nasycenie kolorów" - -#: src/nikonmn.cpp:703 -msgid "Toning saturation" -msgstr "Nasycenie kolorów" - -#: src/nikonmn.cpp:705 -msgid "Unknown Nikon Picture Control Tag" -msgstr "Nieznany znacznik Nikon Picture Control" - -#: src/nikonmn.cpp:722 -#, fuzzy -msgid "AF Fine Tune" -msgstr "Dostrojenie AF" - -#: src/nikonmn.cpp:722 -#, fuzzy -msgid "AF fine tune" -msgstr "Dostrojenie AF" - -#: src/nikonmn.cpp:723 -#, fuzzy -msgid "AF Fine Tune Index" -msgstr "Dostrojenie AF" - -#: src/nikonmn.cpp:723 -#, fuzzy -msgid "AF fine tune index" -msgstr "Dostrojenie AF" - -#: src/nikonmn.cpp:724 -#, fuzzy -msgid "AF Fine Tune Adjustment" -msgstr "Dostrojenie AF" - -#: src/nikonmn.cpp:724 -#, fuzzy -msgid "AF fine tune adjustment" -msgstr "Dostrojenie AF" - -#: src/nikonmn.cpp:726 -#, fuzzy -msgid "Unknown Nikon AF Fine Tune Tag" -msgstr "Nieznany znacznik Nikon ISO Info" - -#: src/nikonmn.cpp:736 -msgid "Timezone" -msgstr "Strefa czasowa" - -#: src/nikonmn.cpp:737 -#, fuzzy -msgid "Daylight Savings" -msgstr "ÅšwiatÅ‚o dzienne" - -#: src/nikonmn.cpp:737 -#, fuzzy -msgid "Daylight savings" -msgstr "ÅšwiatÅ‚o dzienne" - -#: src/nikonmn.cpp:738 -msgid "Date Display Format" -msgstr "Format wyÅ›wietlania daty" - -#: src/nikonmn.cpp:738 -msgid "Date display format" -msgstr "Formularz wyÅ›wietlania daty" - -#: src/nikonmn.cpp:740 -msgid "Unknown Nikon World Time Tag" -msgstr "Nieznany znacznik Nikon World Time" - -#: src/nikonmn.cpp:751 -msgid "Hi 0.3" -msgstr "" - -#: src/nikonmn.cpp:752 -msgid "Hi 0.5" -msgstr "" - -#: src/nikonmn.cpp:753 -msgid "Hi 0.7" -msgstr "" - -#: src/nikonmn.cpp:754 -#, fuzzy -msgid "Hi 1.0" -msgstr "HV10" - -#: src/nikonmn.cpp:755 -msgid "Hi 1.3" -msgstr "" - -#: src/nikonmn.cpp:756 -msgid "Hi 1.5" -msgstr "" - -#: src/nikonmn.cpp:757 -msgid "Hi 1.7" -msgstr "" - -#: src/nikonmn.cpp:758 -msgid "Hi 2.0" -msgstr "" - -#: src/nikonmn.cpp:759 -msgid "Lo 0.3" -msgstr "" - -#: src/nikonmn.cpp:760 -msgid "Lo 0.5" -msgstr "" - -#: src/nikonmn.cpp:761 -msgid "Lo 0.7" -msgstr "" - -#: src/nikonmn.cpp:762 -msgid "Lo 1.0" -msgstr "" - -#: src/nikonmn.cpp:768 -msgid "ISO Expansion" -msgstr "Rozszerzenie ISO" - -#: src/nikonmn.cpp:768 -msgid "ISO expansion" -msgstr "Rozszerzenie ISO" - -#: src/nikonmn.cpp:769 -msgid "ISO 2" -msgstr "ISO 2" - -#: src/nikonmn.cpp:770 -msgid "ISO Expansion 2" -msgstr "Rozszerzenie ISO 2" - -#: src/nikonmn.cpp:770 -msgid "ISO expansion 2" -msgstr "Rozszerzenie ISO 2" - -#: src/nikonmn.cpp:772 -msgid "Unknown Nikon Iso Info Tag" -msgstr "Nieznany znacznik Nikon ISO Info" - -#: src/nikonmn.cpp:782 -#, fuzzy -msgid "Single Area" -msgstr "Pojedynczy obszar" - -#: src/nikonmn.cpp:783 -#, fuzzy -msgid "Dynamic Area" -msgstr "Dynamiczny obszar" - -#: src/nikonmn.cpp:784 -#, fuzzy -msgid "Dynamic Area, Closest Subject" -msgstr "Dynamiczny obszar, najbliższy obiekt" - -#: src/nikonmn.cpp:785 -#, fuzzy -msgid "Group Dynamic" -msgstr "Dynamiczna siatka" - -#: src/nikonmn.cpp:786 -#, fuzzy -msgid "Single Area (wide)" -msgstr "Pojedynczy obszar (szeroki)" - -#: src/nikonmn.cpp:787 -#, fuzzy -msgid "Dynamic Area (wide)" -msgstr "Dynamiczny obszar (szeroki)" - -#: src/nikonmn.cpp:795 src/nikonmn.cpp:810 src/pentaxmn.cpp:219 -msgid "Mid-left" -msgstr "Åšrodek-lewo" - -#: src/nikonmn.cpp:796 src/nikonmn.cpp:811 src/pentaxmn.cpp:221 -msgid "Mid-right" -msgstr "Åšrodek-prawo" - -#: src/nikonmn.cpp:801 src/nikonmn.cpp:816 -#, fuzzy -msgid "Far Left" -msgstr "PrzyciÄ™cie lewo" - -#: src/nikonmn.cpp:802 src/nikonmn.cpp:817 -#, fuzzy -msgid "Far Right" -msgstr "PrzyciÄ™cie prawo" - -#: src/nikonmn.cpp:822 src/nikonmn.cpp:845 -msgid "AF area mode" -msgstr "Tryb strefy AF" - -#: src/nikonmn.cpp:823 src/olympusmn.cpp:1008 src/pentaxmn.cpp:902 -msgid "AF point" -msgstr "Punkt AF" - -#: src/nikonmn.cpp:824 -#, fuzzy -msgid "AF Points In Focus" -msgstr "Użyte punkty AF" - -#: src/nikonmn.cpp:824 -#, fuzzy -msgid "AF points in focus" -msgstr "Użyte punkty AF" - -#: src/nikonmn.cpp:826 -msgid "Unknown Nikon Auto Focus Tag" -msgstr "Nieznany znacznik Nikon Auto Focus" - -#: src/nikonmn.cpp:837 -#, fuzzy -msgid "On (51-point)" -msgstr "WÅ‚Ä…czone (1)" - -#: src/nikonmn.cpp:838 -#, fuzzy -msgid "On (11-point)" -msgstr "WÅ‚Ä…czone (1)" - -#: src/nikonmn.cpp:844 -#, fuzzy -msgid "Contrast Detect AF" -msgstr "Ustawienie kontrastu" - -#: src/nikonmn.cpp:844 -#, fuzzy -msgid "Contrast detect AF" -msgstr "Ustawienie kontrastu" - -#: src/nikonmn.cpp:846 -#, fuzzy -msgid "Phase Detect AF" -msgstr "Obszar wykrywania twarzy" - -#: src/nikonmn.cpp:846 -#, fuzzy -msgid "Phase detect AF" -msgstr "Wykrywanie twarzy" - -#: src/nikonmn.cpp:847 -#, fuzzy -msgid "Primary AF Point" -msgstr "Punkt szaroÅ›ci" - -#: src/nikonmn.cpp:847 -#, fuzzy -msgid "Primary AF point" -msgstr "Punkt szaroÅ›ci" - -#: src/nikonmn.cpp:849 -#, fuzzy -msgid "AF Image Width" -msgstr "Szerokość obrazu" - -#: src/nikonmn.cpp:849 -#, fuzzy -msgid "AF image width" -msgstr "Szerokość obrazu" - -#: src/nikonmn.cpp:850 -#, fuzzy -msgid "AF Image Height" -msgstr "Wysokość obrazu" - -#: src/nikonmn.cpp:850 -#, fuzzy -msgid "AF image height" -msgstr "Wysokość obrazu" - -#: src/nikonmn.cpp:851 -#, fuzzy -msgid "AF Area X Position" -msgstr "Pozycja AF" - -#: src/nikonmn.cpp:851 -#, fuzzy -msgid "AF area x position" -msgstr "Pozycja AF" - -#: src/nikonmn.cpp:852 -#, fuzzy -msgid "AF Area Y Position" -msgstr "Pozycja AF" - -#: src/nikonmn.cpp:852 -#, fuzzy -msgid "AF area y position" -msgstr "Pozycja AF" - -#: src/nikonmn.cpp:853 -#, fuzzy -msgid "AF Area Width" -msgstr "Tryb strefy AF" - -#: src/nikonmn.cpp:853 -#, fuzzy -msgid "AF area width" -msgstr "Tryb strefy AF" - -#: src/nikonmn.cpp:854 -#, fuzzy -msgid "AF Area Height" -msgstr "Tryb strefy AF" - -#: src/nikonmn.cpp:854 -#, fuzzy -msgid "AF area height" -msgstr "PrzyciÄ™cie prawo" - -#: src/nikonmn.cpp:855 -#, fuzzy -msgid "Contrast Detect AF In Focus" -msgstr "Ustawienie kontrastu" - -#: src/nikonmn.cpp:855 -#, fuzzy -msgid "Contrast detect AF in focus" -msgstr "Ustawienie kontrastu" - -#: src/nikonmn.cpp:857 -#, fuzzy -msgid "Unknown Nikon Auto Focus 2 Tag" -msgstr "Nieznany znacznik Nikon Auto Focus" - -#: src/nikonmn.cpp:868 -#, fuzzy -msgid "Directory Number" -msgstr "Liczba porzÄ…dkowa" - -#: src/nikonmn.cpp:868 -#, fuzzy -msgid "Directory number" -msgstr "Liczba porzÄ…dkowa" - -#: src/nikonmn.cpp:871 -#, fuzzy -msgid "Unknown Nikon File Info Tag" -msgstr "Nieznany znacznik Nikon ISO Info" - -#: src/nikonmn.cpp:882 src/pentaxmn.cpp:542 -msgid "Multiple Exposure" -msgstr "Wielokrotna ekspozycja" - -#: src/nikonmn.cpp:883 -#, fuzzy -msgid "Image Overlay" -msgstr "Numer zdjÄ™cia" - -#: src/nikonmn.cpp:889 -#, fuzzy -msgid "Multi Exposure Mode" -msgstr "Tryb ekspozycji" - -#: src/nikonmn.cpp:889 -#, fuzzy -msgid "Multi exposure mode" -msgstr "Wielokrotna ekspozycja" - -#: src/nikonmn.cpp:890 -#, fuzzy -msgid "Multi Exposure Shots" -msgstr "Wielokrotna ekspozycja" - -#: src/nikonmn.cpp:890 -#, fuzzy -msgid "Multi exposure shots" -msgstr "Wielokrotna ekspozycja" - -#: src/nikonmn.cpp:891 -#, fuzzy -msgid "Multi Exposure Auto Gain" -msgstr "Wielokrotna ekspozycja" - -#: src/nikonmn.cpp:891 -#, fuzzy -msgid "Multi exposure auto gain" -msgstr "Wielokrotna ekspozycja" - -#: src/nikonmn.cpp:893 src/nikonmn.cpp:1013 src/nikonmn.cpp:1033 -#: src/nikonmn.cpp:1053 -#, fuzzy -msgid "Unknown Nikon Multi Exposure Tag" -msgstr "Nieznany znacznik Nikon Auto Focus" - -#: src/nikonmn.cpp:905 src/olympusmn.cpp:143 -msgid "Internal" -msgstr "WewnÄ™trzny" - -#: src/nikonmn.cpp:911 -msgid "1.01 (SB-800 or Metz 58 AF-1)" -msgstr "" - -#: src/nikonmn.cpp:912 -msgid "1.03 (SB-800)" -msgstr "" - -#: src/nikonmn.cpp:913 -msgid "2.01 (SB-800)" -msgstr "" - -#: src/nikonmn.cpp:914 -msgid "2.04 (SB-600)" -msgstr "" - -#: src/nikonmn.cpp:915 -msgid "2.05 (SB-600)" -msgstr "" - -#: src/nikonmn.cpp:916 -msgid "3.01 (SU-800 Remote Commander)" -msgstr "" - -#: src/nikonmn.cpp:917 -msgid "4.01 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:918 -msgid "4.02 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:919 -msgid "4.04 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:920 -msgid "5.01 (SB-900)" -msgstr "" - -#: src/nikonmn.cpp:921 -msgid "5.02 (SB-900)" -msgstr "" - -#: src/nikonmn.cpp:927 -msgid "0.1 m" -msgstr "" - -#: src/nikonmn.cpp:928 -msgid "0.2 m" -msgstr "" - -#: src/nikonmn.cpp:929 -msgid "0.3 m" -msgstr "" - -#: src/nikonmn.cpp:930 -msgid "0.4 m" -msgstr "" - -#: src/nikonmn.cpp:931 -msgid "0.5 m" -msgstr "" - -#: src/nikonmn.cpp:932 -msgid "0.6 m" -msgstr "" - -#: src/nikonmn.cpp:933 -msgid "0.7 m" -msgstr "" - -#: src/nikonmn.cpp:934 -msgid "0.8 m" -msgstr "" - -#: src/nikonmn.cpp:935 -msgid "0.9 m" -msgstr "" - -#: src/nikonmn.cpp:936 -msgid "1.0 m" -msgstr "" - -#: src/nikonmn.cpp:937 -msgid "1.1 m" -msgstr "" - -#: src/nikonmn.cpp:938 -msgid "1.3 m" -msgstr "" - -#: src/nikonmn.cpp:939 -msgid "1.4 m" -msgstr "" - -#: src/nikonmn.cpp:940 -msgid "1.6 m" -msgstr "" - -#: src/nikonmn.cpp:941 -msgid "1.8 m" -msgstr "" - -#: src/nikonmn.cpp:942 -msgid "2.0 m" -msgstr "" - -#: src/nikonmn.cpp:943 -msgid "2.2 m" -msgstr "" - -#: src/nikonmn.cpp:944 -msgid "2.5 m" -msgstr "" - -#: src/nikonmn.cpp:945 -msgid "2.8 m" -msgstr "" - -#: src/nikonmn.cpp:946 -msgid "3.2 m" -msgstr "" - -#: src/nikonmn.cpp:947 -msgid "3.6 m" -msgstr "" - -#: src/nikonmn.cpp:948 -msgid "4.0 m" -msgstr "" - -#: src/nikonmn.cpp:949 -msgid "4.5 m" -msgstr "" - -#: src/nikonmn.cpp:950 -msgid "5.0 m" -msgstr "" - -#: src/nikonmn.cpp:951 -msgid "5.6 m" -msgstr "" - -#: src/nikonmn.cpp:952 -msgid "6.3 m" -msgstr "" - -#: src/nikonmn.cpp:953 -msgid "7.1 m" -msgstr "" - -#: src/nikonmn.cpp:954 -msgid "8.0 m" -msgstr "" - -#: src/nikonmn.cpp:955 -msgid "9.0 m" -msgstr "" - -#: src/nikonmn.cpp:956 -#, fuzzy -msgid "10.0 m" -msgstr "100" - -#: src/nikonmn.cpp:957 -msgid "11.0 m" -msgstr "" - -#: src/nikonmn.cpp:958 -msgid "13.0 m" -msgstr "" - -#: src/nikonmn.cpp:959 -msgid "14.0 m" -msgstr "" - -#: src/nikonmn.cpp:960 -#, fuzzy -msgid "16.0 m" -msgstr "100" - -#: src/nikonmn.cpp:961 -msgid "18.0 m" -msgstr "" - -#: src/nikonmn.cpp:962 -#, fuzzy -msgid "20.0 m" -msgstr "200" - -#: src/nikonmn.cpp:969 -#, fuzzy -msgid "iTTL-BL" -msgstr "TTL" - -#: src/nikonmn.cpp:970 -#, fuzzy -msgid "iTTL" -msgstr "TTL" - -#: src/nikonmn.cpp:971 -#, fuzzy -msgid "Auto Aperture" -msgstr "PrzysÅ‚ona" - -#: src/nikonmn.cpp:973 -msgid "GN (distance priority)" -msgstr "" - -#: src/nikonmn.cpp:975 src/nikonmn.cpp:976 -#, fuzzy -msgid "Repeating Flash" -msgstr "Klasa wykonania" - -#: src/nikonmn.cpp:982 -#, fuzzy -msgid "Bounce Flash" -msgstr "Bez bÅ‚ysku" - -#: src/nikonmn.cpp:983 -msgid "Wide Flash Adapter" -msgstr "" - -#: src/nikonmn.cpp:989 -msgid "FL-GL1" -msgstr "" - -#: src/nikonmn.cpp:990 -msgid "FL-GL2" -msgstr "" - -#: src/nikonmn.cpp:991 -msgid "TN-A1" -msgstr "" - -#: src/nikonmn.cpp:992 -msgid "TN-A2" -msgstr "" - -#: src/nikonmn.cpp:996 -#, fuzzy -msgid "Amber" -msgstr "Liczba F" - -#: src/nikonmn.cpp:1002 src/nikonmn.cpp:1024 src/nikonmn.cpp:1044 -#, fuzzy -msgid "Flash Source" -msgstr "ŹródÅ‚o pliku" - -#: src/nikonmn.cpp:1002 src/nikonmn.cpp:1024 src/nikonmn.cpp:1044 -#, fuzzy -msgid "Flash source" -msgstr "ŹródÅ‚o pliku" - -#: src/nikonmn.cpp:1003 src/nikonmn.cpp:1025 -#, fuzzy -msgid "0x0005" -msgstr "1000" - -#: src/nikonmn.cpp:1004 src/nikonmn.cpp:1026 src/nikonmn.cpp:1045 -#, fuzzy -msgid "External Flash Firmware" -msgstr "Pokrycie zewnÄ™trznego flesza" - -#: src/nikonmn.cpp:1004 src/nikonmn.cpp:1026 src/nikonmn.cpp:1045 -#, fuzzy -msgid "External flash firmware" -msgstr "Tryb zewnÄ™trznego flesza" - -#: src/nikonmn.cpp:1005 src/nikonmn.cpp:1027 src/nikonmn.cpp:1046 -#, fuzzy -msgid "External Flash Flags" -msgstr "ZewnÄ™trzny flesz" - -#: src/nikonmn.cpp:1005 src/nikonmn.cpp:1027 src/nikonmn.cpp:1046 -#, fuzzy -msgid "External flash flags" -msgstr "ZewnÄ™trzny flesz" - -#: src/nikonmn.cpp:1006 src/nikonmn.cpp:1028 src/nikonmn.cpp:1047 -#, fuzzy -msgid "Flash Focal Length" -msgstr "Maksymalna ogniskowa" - -#: src/nikonmn.cpp:1006 src/nikonmn.cpp:1028 src/nikonmn.cpp:1047 -#, fuzzy -msgid "Flash focal length" -msgstr "Maksymalna ogniskowa" - -#: src/nikonmn.cpp:1007 src/nikonmn.cpp:1029 src/nikonmn.cpp:1048 -msgid "Repeating Flash Rate" -msgstr "" - -#: src/nikonmn.cpp:1007 src/nikonmn.cpp:1029 src/nikonmn.cpp:1048 -#, fuzzy -msgid "Repeating flash rate" -msgstr "Zmianie nazwy pliku na" - -#: src/nikonmn.cpp:1008 src/nikonmn.cpp:1030 src/nikonmn.cpp:1049 -msgid "Repeating Flash Count" -msgstr "" - -#: src/nikonmn.cpp:1008 src/nikonmn.cpp:1030 src/nikonmn.cpp:1049 -#, fuzzy -msgid "Repeating flash count" -msgstr "RÄ™czne sterowanie lampÄ…" - -#: src/nikonmn.cpp:1009 src/nikonmn.cpp:1031 src/nikonmn.cpp:1050 -#, fuzzy -msgid "Flash GN Distance" -msgstr "OdlegÅ‚ość ostrzenia" - -#: src/nikonmn.cpp:1009 src/nikonmn.cpp:1031 src/nikonmn.cpp:1050 -#, fuzzy -msgid "Flash GN distance" -msgstr "OdlegÅ‚ość ostrzenia" - -#: src/nikonmn.cpp:1010 -msgid "Flash Group A Control Mode" -msgstr "" - -#: src/nikonmn.cpp:1010 -msgid "Flash group a control mode" -msgstr "" - -#: src/nikonmn.cpp:1011 -msgid "Flash Group B Control Mode" -msgstr "" - -#: src/nikonmn.cpp:1011 -msgid "Flash group b control mode" -msgstr "" - -#: src/nikonmn.cpp:1051 -#, fuzzy -msgid "Flash Color Filter" -msgstr "Filtr kolorów" - -#: src/nikonmn.cpp:1051 -#, fuzzy -msgid "Flash color filter" -msgstr "Filtr kolorów" - -#: src/nikonmn.cpp:1064 src/nikonmn.cpp:1077 src/nikonmn.cpp:1137 -#: src/nikonmn.cpp:1197 src/nikonmn.cpp:1233 src/pentaxmn.cpp:1042 -#: src/pentaxmn.cpp:1043 -msgid "Shutter count" -msgstr "Licznik migawki" - -#: src/nikonmn.cpp:1066 -msgid "Unknown Nikon Shot Info D80 Tag" -msgstr "Nieznany znacznik Nikon Shot Info D80" - -#: src/nikonmn.cpp:1078 src/sonymn.cpp:408 src/sonymn.cpp:409 -msgid "Flash Level" -msgstr "Poziom flesza" - -#: src/nikonmn.cpp:1078 -msgid "Flash level" -msgstr "Poziom flesza" - -#: src/nikonmn.cpp:1080 -msgid "Unknown Nikon Shot Info D40 Tag" -msgstr "Nieznany znacznik Nikon Shot Info D40" - -#: src/nikonmn.cpp:1090 src/nikonmn.cpp:1150 -msgid "0" -msgstr "0" - -#: src/nikonmn.cpp:1091 src/nikonmn.cpp:1159 -msgid "+1" -msgstr "+1" - -#: src/nikonmn.cpp:1092 src/nikonmn.cpp:1160 -msgid "+2" -msgstr "+2" - -#: src/nikonmn.cpp:1093 src/nikonmn.cpp:1161 -msgid "+4" -msgstr "+4" - -#: src/nikonmn.cpp:1094 src/nikonmn.cpp:1162 -msgid "+8" -msgstr "+8" - -#: src/nikonmn.cpp:1095 src/nikonmn.cpp:1163 -msgid "+16" -msgstr "+16" - -#: src/nikonmn.cpp:1096 src/nikonmn.cpp:1164 -msgid "-16" -msgstr "-16" - -#: src/nikonmn.cpp:1097 src/nikonmn.cpp:1165 -msgid "-8" -msgstr "-8" - -#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1166 -msgid "-4" -msgstr "-4" - -#: src/nikonmn.cpp:1099 src/nikonmn.cpp:1167 -msgid "-2" -msgstr "-2" - -#: src/nikonmn.cpp:1100 src/nikonmn.cpp:1168 -msgid "-1" -msgstr "-1" - -#: src/nikonmn.cpp:1101 src/nikonmn.cpp:1169 -msgid "+17" -msgstr "+17" - -#: src/nikonmn.cpp:1102 src/nikonmn.cpp:1170 -msgid "-17" -msgstr "-17" - -#: src/nikonmn.cpp:1103 src/nikonmn.cpp:1171 -msgid "+9" -msgstr "+9" - -#: src/nikonmn.cpp:1104 src/nikonmn.cpp:1172 -msgid "+18" -msgstr "+18" - -#: src/nikonmn.cpp:1105 src/nikonmn.cpp:1173 -msgid "-18" -msgstr "-18" - -#: src/nikonmn.cpp:1106 src/nikonmn.cpp:1174 -msgid "-9" -msgstr "-9" - -#: src/nikonmn.cpp:1107 src/nikonmn.cpp:1175 -msgid "+19" -msgstr "+19" - -#: src/nikonmn.cpp:1108 src/nikonmn.cpp:1176 -msgid "-19" -msgstr "-19" - -#: src/nikonmn.cpp:1109 src/nikonmn.cpp:1177 -msgid "+5" -msgstr "+5" - -#: src/nikonmn.cpp:1110 src/nikonmn.cpp:1178 -msgid "+10" -msgstr "+10" - -#: src/nikonmn.cpp:1111 src/nikonmn.cpp:1179 -msgid "+20" -msgstr "+20" - -#: src/nikonmn.cpp:1112 src/nikonmn.cpp:1180 -msgid "-20" -msgstr "-20" - -#: src/nikonmn.cpp:1113 src/nikonmn.cpp:1181 -msgid "-10" -msgstr "-10" - -#: src/nikonmn.cpp:1114 src/nikonmn.cpp:1182 -msgid "-5" -msgstr "-5" - -#: src/nikonmn.cpp:1115 src/nikonmn.cpp:1183 -msgid "+11" -msgstr "+11" - -#: src/nikonmn.cpp:1116 src/nikonmn.cpp:1184 -msgid "-11" -msgstr "-11" - -#: src/nikonmn.cpp:1117 src/nikonmn.cpp:1185 -msgid "+3" -msgstr "+3" - -#: src/nikonmn.cpp:1118 src/nikonmn.cpp:1186 -msgid "+6" -msgstr "+6" - -#: src/nikonmn.cpp:1119 src/nikonmn.cpp:1187 -msgid "+12" -msgstr "+12" - -#: src/nikonmn.cpp:1120 src/nikonmn.cpp:1188 -msgid "-12" -msgstr "-12" - -#: src/nikonmn.cpp:1121 src/nikonmn.cpp:1189 -msgid "-6" -msgstr "-6" - -#: src/nikonmn.cpp:1122 src/nikonmn.cpp:1190 -msgid "-3" -msgstr "-3" - -#: src/nikonmn.cpp:1123 src/nikonmn.cpp:1151 -msgid "+13" -msgstr "+13" - -#: src/nikonmn.cpp:1124 src/nikonmn.cpp:1152 -msgid "-13" -msgstr "-13" - -#: src/nikonmn.cpp:1125 src/nikonmn.cpp:1153 -msgid "+7" -msgstr "+7" - -#: src/nikonmn.cpp:1126 src/nikonmn.cpp:1154 -msgid "+14" -msgstr "+14" - -#: src/nikonmn.cpp:1127 src/nikonmn.cpp:1155 -msgid "-14" -msgstr "-14" - -#: src/nikonmn.cpp:1128 src/nikonmn.cpp:1156 -msgid "-7" -msgstr "-7" - -#: src/nikonmn.cpp:1129 src/nikonmn.cpp:1157 -msgid "+15" -msgstr "+15" - -#: src/nikonmn.cpp:1130 src/nikonmn.cpp:1158 -msgid "-15" -msgstr "-15" - -#: src/nikonmn.cpp:1138 src/nikonmn.cpp:1198 -#, fuzzy -msgid "AF Fine Tune Adj" -msgstr "Dostrojenie AF" - -#: src/nikonmn.cpp:1138 src/nikonmn.cpp:1198 -#, fuzzy -msgid "AF fine tune adj" -msgstr "Dostrojenie AF" - -#: src/nikonmn.cpp:1140 -msgid "Unknown Nikon Shot Info D300 (a) Tag" -msgstr "Nieznany znacznik Nikon Shot Info D300 (a)" - -#: src/nikonmn.cpp:1200 -msgid "Unknown Nikon Shot Info D300 (b) Tag" -msgstr "Nieznany znacznik Nikon Shot Info D300 (b)" - -#: src/nikonmn.cpp:1213 -msgid "On (3)" -msgstr "WÅ‚Ä…czone (3)" - -#: src/nikonmn.cpp:1226 -msgid "Shutter Count 1" -msgstr "Licznik migawki 1" - -#: src/nikonmn.cpp:1226 -msgid "Shutter count 1" -msgstr "Licznik migawki 1" - -#: src/nikonmn.cpp:1229 -#, fuzzy -msgid "Vibration Reduction 1" -msgstr "Redukcja wstrzÄ…sów 2" - -#: src/nikonmn.cpp:1229 -#, fuzzy -msgid "Vibration reduction 1" -msgstr "Redukcja wstrzÄ…sów 2" - -#: src/nikonmn.cpp:1230 -msgid "Shutter Count 2" -msgstr "Licznik migawki 2" - -#: src/nikonmn.cpp:1230 -msgid "Shutter count 2" -msgstr "Licznik migawki 2" - -#: src/nikonmn.cpp:1231 -msgid "Vibration Reduction 2" -msgstr "Redukcja wstrzÄ…sów 2" - -#: src/nikonmn.cpp:1231 -msgid "Vibration reduction 2" -msgstr "Redukcja wstrzÄ…sów 2" - -#: src/nikonmn.cpp:1235 -msgid "Unknown Nikon Shot Info Tag" -msgstr "Nieznany znacznik Nikon Shot Info" - -#: src/nikonmn.cpp:1246 -msgid "WB RBGG Levels" -msgstr "Poziomy balansu bieli RBGG" - -#: src/nikonmn.cpp:1246 -msgid "WB RBGG levels" -msgstr "Poziomy balansu bieli RBGG" - -#: src/nikonmn.cpp:1248 -msgid "Unknown Nikon Color Balance 1 Tag" -msgstr "Nieznany znacznik Nikon Color Balance 1" - -#: src/nikonmn.cpp:1259 src/nikonmn.cpp:1272 src/nikonmn.cpp:1285 -msgid "WB RGGB Levels" -msgstr "Poziomy balansu bieli RGGB" - -#: src/nikonmn.cpp:1259 src/nikonmn.cpp:1272 src/nikonmn.cpp:1285 -msgid "WB RGGB levels" -msgstr "Poziomy balansu bieli RGGB" - -#: src/nikonmn.cpp:1261 -msgid "Unknown Nikon Color Balance 2 Tag" -msgstr "Nieznany znacznik Nikon Color Balance 2" - -#: src/nikonmn.cpp:1274 -msgid "Unknown Nikon Color Balance 2a Tag" -msgstr "Nieznany znacznik Nikon Color Balance 2a" - -#: src/nikonmn.cpp:1287 -msgid "Unknown Nikon Color Balance 2b Tag" -msgstr "Nieznany znacznik Nikon Color Balance 2b" - -#: src/nikonmn.cpp:1298 -msgid "WB RGBG Levels" -msgstr "Poziomy balansu bieli RGBG" - -#: src/nikonmn.cpp:1298 -msgid "WB RGBG levels" -msgstr "Poziomy balansu bieli RGBG" - -#: src/nikonmn.cpp:1300 -msgid "Unknown Nikon Color Balance 3 Tag" -msgstr "Nieznany znacznik Nikon Color Balance 3" - -#: src/nikonmn.cpp:1311 -msgid "WB GRBG Levels" -msgstr "Poziomy balansu bieli GRBG" - -#: src/nikonmn.cpp:1311 -msgid "WB GRBG levels" -msgstr "Poziomy balansu bieli GRBG" - -#: src/nikonmn.cpp:1313 -msgid "Unknown Nikon Color Balance 4 Tag" -msgstr "Nieznany znacznik Nikon Color Balance 4" - -#: src/nikonmn.cpp:1324 src/nikonmn.cpp:1348 src/nikonmn.cpp:1373 -msgid "Lens ID Number" -msgstr "Numer identyfikacyjny obiektywu" - -#: src/nikonmn.cpp:1324 src/nikonmn.cpp:1348 src/nikonmn.cpp:1373 -msgid "Lens ID number" -msgstr "Numer identyfikacyjny obiektywu" - -#: src/nikonmn.cpp:1325 src/nikonmn.cpp:1349 src/nikonmn.cpp:1374 -msgid "Lens F-Stops" -msgstr "Apertura obiektywu" - -#: src/nikonmn.cpp:1325 src/nikonmn.cpp:1349 src/nikonmn.cpp:1374 -msgid "Lens F-stops" -msgstr "Apertura obiektywu" - -#: src/nikonmn.cpp:1326 src/nikonmn.cpp:1350 src/nikonmn.cpp:1375 -#: src/olympusmn.cpp:751 -msgid "Min Focal Length" -msgstr "Minimalna ogniskowa" - -#: src/nikonmn.cpp:1326 src/nikonmn.cpp:1350 src/nikonmn.cpp:1375 -#: src/olympusmn.cpp:751 -msgid "Min focal length" -msgstr "Minimalna ogniskowa" - -#: src/nikonmn.cpp:1327 src/nikonmn.cpp:1351 src/nikonmn.cpp:1376 -#: src/olympusmn.cpp:752 -msgid "Max Focal Length" -msgstr "Maksymalna ogniskowa" - -#: src/nikonmn.cpp:1327 src/nikonmn.cpp:1351 src/nikonmn.cpp:1376 -#: src/olympusmn.cpp:752 -msgid "Max focal length" -msgstr "Maksymalna ogniskowa" - -#: src/nikonmn.cpp:1328 src/nikonmn.cpp:1352 src/nikonmn.cpp:1377 -#: src/olympusmn.cpp:749 -msgid "Max Aperture At Min Focal" -msgstr "Maksymalna apertura przy minimalnej ogniskowej" - -#: src/nikonmn.cpp:1328 src/nikonmn.cpp:1352 src/olympusmn.cpp:749 -msgid "Max aperture at min focal" -msgstr "Maksymalna apertura przy minimalnej ogniskowej" - -#: src/nikonmn.cpp:1329 src/nikonmn.cpp:1353 src/nikonmn.cpp:1378 -#: src/olympusmn.cpp:750 -msgid "Max Aperture At Max Focal" -msgstr "Maksymalna apertura przy maksymalnej ogniskowej" - -#: src/nikonmn.cpp:1329 src/nikonmn.cpp:1353 src/olympusmn.cpp:750 -msgid "Max aperture at max focal" -msgstr "Maksymalna apertura przy maksymalnej ogniskowej" - -#: src/nikonmn.cpp:1330 src/nikonmn.cpp:1354 src/nikonmn.cpp:1379 -msgid "MCU Version" -msgstr "Wersja MCU" - -#: src/nikonmn.cpp:1330 src/nikonmn.cpp:1354 src/nikonmn.cpp:1379 -msgid "MCU version" -msgstr "Wersja MCU" - -#: src/nikonmn.cpp:1332 -msgid "Unknown Nikon Lens Data 1 Tag" -msgstr "Nieznany znacznik Nikon Lens Data 1" - -#: src/nikonmn.cpp:1343 src/nikonmn.cpp:1368 -#, fuzzy -msgid "Exit Pupil Position" -msgstr "Pozycja przeÅ‚Ä…cznika DEC" - -#: src/nikonmn.cpp:1343 src/nikonmn.cpp:1368 -#, fuzzy -msgid "Exit pupil position" -msgstr "Pozycja przeÅ‚Ä…cznika DEC" - -#: src/nikonmn.cpp:1344 src/nikonmn.cpp:1369 -#, fuzzy -msgid "AF Aperture" -msgstr "PrzysÅ‚ona" - -#: src/nikonmn.cpp:1344 src/nikonmn.cpp:1369 -#, fuzzy -msgid "AF aperture" -msgstr "PrzysÅ‚ona" - -#: src/nikonmn.cpp:1355 src/nikonmn.cpp:1380 -msgid "Effective Max Aperture" -msgstr "NajwiÄ™ksza efektywna apertura" - -#: src/nikonmn.cpp:1355 src/nikonmn.cpp:1380 -msgid "Effective max aperture" -msgstr "NajwiÄ™ksza efektywna apertura" - -#: src/nikonmn.cpp:1357 -msgid "Unknown Nikon Lens Data 2 Tag" -msgstr "Nieznany znacznik Nikon Lens Data 2" - -#: src/nikonmn.cpp:1377 -msgid "Max aperture at min focal length" -msgstr "Maksymalna apertura przy minimalnej ogniskowej" - -#: src/nikonmn.cpp:1378 -msgid "Max aperture at max focal length" -msgstr "Maksymalna apertura przy maksymalnej ogniskowej" - -#: src/nikonmn.cpp:1382 -msgid "Unknown Nikon Lens Data 3 Tag" -msgstr "Nieznany znacznik Nikon Lens Data 3" - -#: src/nikonmn.cpp:1562 -msgid "Closest subject" -msgstr "Najbliższy obiekt" - -#: src/nikonmn.cpp:1563 -#, fuzzy -msgid "Group dynamic-AF" -msgstr "Dynamiczna zmiana rozmiaru siatki" - -#: src/nikonmn.cpp:1586 src/tags.cpp:240 -msgid "none" -msgstr "brak" - -#: src/nikonmn.cpp:1596 -msgid "used" -msgstr "użyto" - -#: src/nikonmn.cpp:1622 -msgid "All 11 Points" -msgstr "Wszystkie 11 punktów" - -#: src/nikonmn.cpp:1637 src/nikonmn.cpp:1638 src/pentaxmn.cpp:533 -#: src/pentaxmn.cpp:537 -msgid "Single-frame" -msgstr "" - -#: src/olympusmn.cpp:71 -msgid "Standard Quality (SQ)" -msgstr "Standardowa jakość (SQ)" - -#: src/olympusmn.cpp:72 -msgid "High Quality (HQ)" -msgstr "Wysoka jakość (HQ)" - -#: src/olympusmn.cpp:73 -msgid "Super High Quality (SHQ)" -msgstr "Bardzo wysoka jakość (SHQ)" - -#: src/olympusmn.cpp:88 -msgid "On (preset)" -msgstr "WÅ‚Ä…czony (predefiniowany)" - -#: src/olympusmn.cpp:95 src/pentaxmn.cpp:474 -msgid "Sport" -msgstr "Sport" - -#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 -msgid "Landscape+Portrait" -msgstr "Portret na tle krajobrazu" - -#: src/olympusmn.cpp:100 -msgid "Self Portrait" -msgstr "Autoportret" - -#: src/olympusmn.cpp:102 -msgid "2 in 1" -msgstr "2-w-1" - -#: src/olympusmn.cpp:105 -msgid "Night+Portrait" -msgstr "Portret nocny" - -#: src/olympusmn.cpp:111 src/panasonicmn.cpp:120 src/pentaxmn.cpp:486 -msgid "Food" -msgstr "Å»ywność" - -#: src/olympusmn.cpp:112 -msgid "Documents" -msgstr "Dokumenty" - -#: src/olympusmn.cpp:114 -#, fuzzy -msgid "Shoot & Select" -msgstr "Strzelanie 1" - -#: src/olympusmn.cpp:115 -msgid "Beach & Snow" -msgstr "Plaża i Å›nieg" - -#: src/olympusmn.cpp:116 -msgid "Self Portrait+Timer" -msgstr "Autoportret z samowyzwalaczem" - -#: src/olympusmn.cpp:117 -msgid "Candle" -msgstr "Åšwieca" - -#: src/olympusmn.cpp:118 -msgid "Available Light" -msgstr "ÅšwiatÅ‚o zastane" - -#: src/olympusmn.cpp:119 -msgid "Behind Glass" -msgstr "Za szybÄ…" - -#: src/olympusmn.cpp:120 -msgid "My Mode" -msgstr "Mój tryb" - -#: src/olympusmn.cpp:121 src/panasonicmn.cpp:131 src/pentaxmn.cpp:483 -#: src/sonymn.cpp:127 -msgid "Pet" -msgstr "ZwierzÄ™ domowe" - -#: src/olympusmn.cpp:122 -msgid "Underwater Wide1" -msgstr "Podwodny szeroki 1" - -#: src/olympusmn.cpp:123 -msgid "Underwater Macro" -msgstr "Podwodne makro" - -#: src/olympusmn.cpp:124 -#, fuzzy -msgid "Shoot & Select1" -msgstr "Strzelanie 1" - -#: src/olympusmn.cpp:125 -#, fuzzy -msgid "Shoot & Select2" -msgstr "Strzelanie 2" - -#: src/olympusmn.cpp:127 -msgid "Digital Image Stabilization" -msgstr "Cyfrowa stabilizacja obrazu" - -#: src/olympusmn.cpp:128 -msgid "Auction" -msgstr "Aukcja" - -#: src/olympusmn.cpp:131 -msgid "Underwater Wide2" -msgstr "Podwodny szeroki 2" - -#: src/olympusmn.cpp:133 -msgid "Children" -msgstr "Dzieci" - -#: src/olympusmn.cpp:135 -msgid "Nature Macro" -msgstr "Przyrodnicze makro" - -#: src/olympusmn.cpp:136 -msgid "Underwater Snapshot" -msgstr "ZdjÄ™cie podwodne" - -#: src/olympusmn.cpp:137 -#, fuzzy -msgid "Shooting Guide" -msgstr "Tryb robienia zdjÄ™cia" - -#: src/olympusmn.cpp:145 -msgid "Internal + External" -msgstr "WewnÄ™trzny + ZewnÄ™trzny" - -#: src/olympusmn.cpp:176 -msgid "Interlaced" -msgstr "Z przeplotem" - -#: src/olympusmn.cpp:177 -msgid "Progressive" -msgstr "Przyrostowy" - -#: src/olympusmn.cpp:188 -msgid "Thumbnail Image" -msgstr "Obraz miniatury" - -#: src/olympusmn.cpp:189 -msgid "Thumbnail image" -msgstr "Obraz miniatury" - -#: src/olympusmn.cpp:192 src/olympusmn.cpp:744 src/olympusmn.cpp:1027 -msgid "Body Firmware Version" -msgstr "Wersja firmware korpusu" - -#: src/olympusmn.cpp:193 src/olympusmn.cpp:744 src/olympusmn.cpp:1027 -msgid "Body firmware version" -msgstr "Wersja firmware korpusu" - -#: src/olympusmn.cpp:195 -msgid "Special Mode" -msgstr "Tryb specjalny" - -#: src/olympusmn.cpp:196 -msgid "Picture taking mode" -msgstr "Tryb robienia zdjÄ™cia" - -#: src/olympusmn.cpp:204 -msgid "Black & White Mode" -msgstr "Tryb czarno-biaÅ‚y" - -#: src/olympusmn.cpp:205 -msgid "Black and white mode" -msgstr "Tryb czarno-biaÅ‚y" - -#: src/olympusmn.cpp:208 -msgid "Digital zoom ratio" -msgstr "Współczynnik powiÄ™kszenia cyfrowego" - -#: src/olympusmn.cpp:210 src/olympusmn.cpp:743 -#, fuzzy -msgid "Focal Plane Diagonal" -msgstr "Rozdzielczość ogniskowej w pÅ‚aszczyźnie X" - -#: src/olympusmn.cpp:211 src/olympusmn.cpp:743 -#, fuzzy -msgid "Focal plane diagonal" -msgstr "Rozdzielczość ogniskowej w pÅ‚aszczyźnie X" - -#: src/olympusmn.cpp:213 -msgid "Lens Distortion Parameters" -msgstr "Parametry dystorsji soczewki" - -#: src/olympusmn.cpp:214 -msgid "Lens distortion parameters" -msgstr "Parametry dystorsji soczewki obiektywu" - -#: src/olympusmn.cpp:216 src/olympusmn.cpp:740 -msgid "Camera Type" -msgstr "Rodzaj aparatu" - -#: src/olympusmn.cpp:217 src/olympusmn.cpp:740 -msgid "Camera type" -msgstr "Rodzaj aparatu" - -#: src/olympusmn.cpp:220 -msgid "ASCII format data such as [PictureInfo]" -msgstr "Dane w formacie ASCII jak w [PictureInfo]" - -#: src/olympusmn.cpp:222 -msgid "Camera ID" -msgstr "ID aparatu" - -#: src/olympusmn.cpp:223 -msgid "Camera ID data" -msgstr "Dane identyfikacyjne aparatu" - -#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:519 -#: src/sigmamn.cpp:119 src/sigmamn.cpp:120 src/tags.cpp:538 -msgid "Software" -msgstr "Oprogramowanie" - -#: src/olympusmn.cpp:234 src/panasonicmn.cpp:348 src/sonymn.cpp:314 -msgid "Preview Image" -msgstr "Obraz podglÄ…du" - -#: src/olympusmn.cpp:235 src/panasonicmn.cpp:348 -msgid "Preview image" -msgstr "Obraz podglÄ…du" - -#: src/olympusmn.cpp:237 -#, fuzzy -msgid "Pre Capture Frames" -msgstr "Nazwy pÅ‚yt" - -#: src/olympusmn.cpp:238 -#, fuzzy -msgid "Pre-capture frames" -msgstr "Nazwy pÅ‚yt" - -#: src/olympusmn.cpp:240 -#, fuzzy -msgid "White Board" -msgstr "Balans bieli" - -#: src/olympusmn.cpp:241 -#, fuzzy -msgid "White board" -msgstr "Balans bieli" - -#: src/olympusmn.cpp:243 -#, fuzzy -msgid "One Touch WB" -msgstr "Automatyczna korekcja balansu bieli" - -#: src/olympusmn.cpp:244 -#, fuzzy -msgid "One touch white balance" -msgstr "Automatyczna korekcja balansu bieli" - -#: src/olympusmn.cpp:246 src/olympusmn.cpp:678 -msgid "White Balance Bracket" -msgstr "Bracketing balansu bieli" - -#: src/olympusmn.cpp:247 src/olympusmn.cpp:678 -msgid "White balance bracket" -msgstr "Bracketing balansu bieli" - -#: src/olympusmn.cpp:255 src/sigmamn.cpp:116 src/sigmamn.cpp:117 -msgid "Firmware" -msgstr "Firmware" - -#: src/olympusmn.cpp:256 -#, fuzzy -msgid "Firmwarer" -msgstr "Firmware" - -#: src/olympusmn.cpp:261 -msgid "Data Dump 1" -msgstr "Zrzut danych 1" - -#: src/olympusmn.cpp:262 -msgid "Various camera settings 1" -msgstr "Różne ustawienia aparatu 1" - -#: src/olympusmn.cpp:264 -msgid "Data Dump 2" -msgstr "Zrzut danych 2" - -#: src/olympusmn.cpp:265 -msgid "Various camera settings 2" -msgstr "Różne ustawienia aparatu 2" - -#: src/olympusmn.cpp:268 -msgid "Shutter speed value" -msgstr "Czas otwarcia migawki" - -#: src/olympusmn.cpp:271 -msgid "ISO speed value" -msgstr "CzuÅ‚ość ISO" - -#: src/olympusmn.cpp:274 -msgid "Aperture value" -msgstr "PrzysÅ‚ona" - -#: src/olympusmn.cpp:277 -msgid "Brightness value" -msgstr "Jasność" - -#: src/olympusmn.cpp:285 -#, fuzzy -msgid "Bracket" -msgstr "Bracketing" - -#: src/olympusmn.cpp:286 -msgid "Exposure compensation value" -msgstr "Wartość kompensacji ekspozycji" - -#: src/olympusmn.cpp:288 src/olympusmn.cpp:1015 -msgid "Sensor Temperature" -msgstr "Temperatura czujnika" - -#: src/olympusmn.cpp:289 src/olympusmn.cpp:1015 -msgid "Sensor temperature" -msgstr "Temperatura czujnika" - -#: src/olympusmn.cpp:291 -msgid "Lens Temperature" -msgstr "Temperatura obiektywu" - -#: src/olympusmn.cpp:292 -msgid "Lens temperature" -msgstr "Temperatura obiektywu" - -#: src/olympusmn.cpp:294 -#, fuzzy -msgid "Light Condition" -msgstr "Funkcja koloru" - -#: src/olympusmn.cpp:295 -#, fuzzy -msgid "Light condition" -msgstr "Funkcja koloru" - -#: src/olympusmn.cpp:297 -#, fuzzy -msgid "Focus Range" -msgstr "Obszar ogniskowania" - -#: src/olympusmn.cpp:298 -#, fuzzy -msgid "Focus range" -msgstr "Obszar ogniskowania" - -#: src/olympusmn.cpp:306 -msgid "Zoom" -msgstr "PowiÄ™kszenie" - -#: src/olympusmn.cpp:307 src/olympusmn.cpp:1003 -msgid "Zoom step count" -msgstr "Liczba kroków powiÄ™kszania" - -#: src/olympusmn.cpp:309 -#, fuzzy -msgid "Macro Focus" -msgstr "ÅšledzÄ…ce ostrzenie" - -#: src/olympusmn.cpp:310 -#, fuzzy -msgid "Macro focus step count" -msgstr "Liczba kroków ostrzenia" - -#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 -msgid "Sharpness Factor" -msgstr "Współczynnik wyostrzenia" - -#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 -msgid "Sharpness factor" -msgstr "Współczynnik wyostrzenia" - -#: src/olympusmn.cpp:315 -msgid "Flash Charge Level" -msgstr "Poziom naÅ‚adowania flesza" - -#: src/olympusmn.cpp:316 -msgid "Flash charge level" -msgstr "Poziom naÅ‚adowania flesza" - -#: src/olympusmn.cpp:318 src/olympusmn.cpp:962 -msgid "Color Matrix" -msgstr "Matryca kolorów" - -#: src/olympusmn.cpp:319 src/olympusmn.cpp:962 -msgid "Color matrix" -msgstr "Matryca kolorów" - -#: src/olympusmn.cpp:321 -msgid "BlackLevel" -msgstr "Poziom czerni" - -#: src/olympusmn.cpp:322 src/olympusmn.cpp:967 -msgid "Black level" -msgstr "Poziom czerni" - -#: src/olympusmn.cpp:331 -msgid "White balance mode" -msgstr "Tryb balansu bieli" - -#: src/olympusmn.cpp:336 src/panasonicmn.cpp:342 -msgid "Red Balance" -msgstr "Balans czerwieni" - -#: src/olympusmn.cpp:337 src/pentaxmn.cpp:938 -msgid "Red balance" -msgstr "Balans czerwieni" - -#: src/olympusmn.cpp:339 src/panasonicmn.cpp:343 -msgid "Blue Balance" -msgstr "Balans niebieskiego" - -#: src/olympusmn.cpp:340 src/panasonicmn.cpp:343 src/pentaxmn.cpp:935 -msgid "Blue balance" -msgstr "Balans niebieskiego" - -#: src/olympusmn.cpp:342 -#, fuzzy -msgid "Color Matrix Number" -msgstr "Matryca kolorów 1" - -#: src/olympusmn.cpp:343 -#, fuzzy -msgid "Color matrix mumber" -msgstr "Matryca kolorów 2" - -#: src/olympusmn.cpp:345 -msgid "Serial Number 2" -msgstr "Numer seryjny 2" - -#: src/olympusmn.cpp:346 -msgid "Serial number 2" -msgstr "Numer seryjny 2" - -#: src/olympusmn.cpp:373 src/olympusmn.cpp:671 src/pentaxmn.cpp:1028 -#: src/pentaxmn.cpp:1029 -msgid "Flash exposure compensation" -msgstr "Kompensacja ekspozycji bÅ‚ysku" - -#: src/olympusmn.cpp:381 src/olympusmn.cpp:1011 -msgid "External Flash Bounce" -msgstr "Odbicie zewnÄ™trznego flesza" - -#: src/olympusmn.cpp:382 src/olympusmn.cpp:1011 -msgid "External flash bounce" -msgstr "Odbicie zewnÄ™trznego flesza" - -#: src/olympusmn.cpp:384 src/olympusmn.cpp:1012 -msgid "External Flash Zoom" -msgstr "Pokrycie zewnÄ™trznego flesza" - -#: src/olympusmn.cpp:385 src/olympusmn.cpp:1012 -msgid "External flash zoom" -msgstr "Pokrycie zewnÄ™trznego flesza" - -#: src/olympusmn.cpp:387 -msgid "External Flash Mode" -msgstr "Tryb zewnÄ™trznego flesza" - -#: src/olympusmn.cpp:388 -msgid "External flash mode" -msgstr "Tryb zewnÄ™trznego flesza" - -#: src/olympusmn.cpp:396 -msgid "Color Control" -msgstr "Regulacja barwy" - -#: src/olympusmn.cpp:397 -msgid "Color control" -msgstr "Regulacja barwy" - -#: src/olympusmn.cpp:399 -msgid "ValidBits" -msgstr "" - -#: src/olympusmn.cpp:400 src/olympusmn.cpp:969 -msgid "Valid bits" -msgstr "" - -#: src/olympusmn.cpp:402 -#, fuzzy -msgid "CoringFilter" -msgstr "Filtr kolorów" - -#: src/olympusmn.cpp:403 src/olympusmn.cpp:965 src/olympusmn.cpp:1067 -#, fuzzy -msgid "Coring filter" -msgstr "Filtr kolorów" - -#: src/olympusmn.cpp:423 -msgid "Compression Ratio" -msgstr "Współczynnik kompresji" - -#: src/olympusmn.cpp:424 -msgid "Compression ratio" -msgstr "Współczynnik kompresji" - -#: src/olympusmn.cpp:427 -msgid "Preview image embedded" -msgstr "Osadzony obrazek podglÄ…du" - -#: src/olympusmn.cpp:430 -msgid "Offset of the preview image" -msgstr "PrzesuniÄ™cie obrazu podglÄ…du" - -#: src/olympusmn.cpp:433 -msgid "Size of the preview image" -msgstr "Rozmiar obrazu podglÄ…du" - -#: src/olympusmn.cpp:435 -msgid "CCD Scan Mode" -msgstr "Tryb skanowania CCD" - -#: src/olympusmn.cpp:436 -msgid "CCD scan mode" -msgstr "Tryb skanowania CCD" - -#: src/olympusmn.cpp:441 -#, fuzzy -msgid "Infinity Lens Step" -msgstr "NieskoÅ„czoność" - -#: src/olympusmn.cpp:442 -#, fuzzy -msgid "Infinity lens step" -msgstr "NieskoÅ„czoność" - -#: src/olympusmn.cpp:444 -#, fuzzy -msgid "Near Lens Step" -msgstr "Apertura obiektywu" - -#: src/olympusmn.cpp:445 -msgid "Near lens step" -msgstr "" - -#: src/olympusmn.cpp:447 -msgid "Equipment Info" -msgstr "Wyposażenie" - -#: src/olympusmn.cpp:448 -msgid "Camera equipment sub-IFD" -msgstr "sub-IFD wyposażenia aparatu" - -#: src/olympusmn.cpp:451 -msgid "Camera Settings sub-IFD" -msgstr "sub-IFD ustawieÅ„ aparatu" - -#: src/olympusmn.cpp:453 -msgid "Raw Development" -msgstr "" - -#: src/olympusmn.cpp:454 -#, fuzzy -msgid "Raw development sub-IFD" -msgstr "sub-IFD wyposażenia aparatu" - -#: src/olympusmn.cpp:456 -msgid "Raw Development 2" -msgstr "" - -#: src/olympusmn.cpp:457 -#, fuzzy -msgid "Raw development 2 sub-IFD" -msgstr "sub-IFD wyposażenia aparatu" - -#: src/olympusmn.cpp:460 -#, fuzzy -msgid "Image processing sub-IFD" -msgstr "Przetwarzanie obrazu" - -#: src/olympusmn.cpp:462 -msgid "Focus Info" -msgstr "Ostrzenie" - -#: src/olympusmn.cpp:463 -msgid "Focus sub-IFD" -msgstr "sub-IFD ostrzenia" - -#: src/olympusmn.cpp:465 -msgid "Raw Info" -msgstr "Raw" - -#: src/olympusmn.cpp:466 -msgid "Raw sub-IFD" -msgstr "Raw sub-IFD" - -#: src/olympusmn.cpp:470 -msgid "Unknown OlympusMakerNote tag" -msgstr "Nieznany znacznik OlympusMakerNote" - -#: src/olympusmn.cpp:486 -msgid "Program-shift" -msgstr "Program-shift" - -#: src/olympusmn.cpp:491 -msgid "Center-weighted average" -msgstr "Centralnie ważony uÅ›redniony" - -#: src/olympusmn.cpp:493 -msgid "ESP" -msgstr "ESP" - -#: src/olympusmn.cpp:494 -#, fuzzy -msgid "Pattern+AF" -msgstr "Wzór CFA" - -#: src/olympusmn.cpp:495 -msgid "Spot+Highlight control" -msgstr "" - -#: src/olympusmn.cpp:496 -#, fuzzy -msgid "Spot+Shadow control" -msgstr "Regulacja barwy" - -#: src/olympusmn.cpp:508 src/olympusmn.cpp:1369 -msgid "Single AF" -msgstr "Pojedyncze zdjÄ™cie" - -#: src/olympusmn.cpp:509 src/olympusmn.cpp:1370 -msgid "Sequential shooting AF" -msgstr "ZdjÄ™cia seryjne" - -#: src/olympusmn.cpp:511 src/olympusmn.cpp:1372 src/sonymn.cpp:187 -msgid "Multi AF" -msgstr "Multi AF" - -#: src/olympusmn.cpp:517 -msgid "AF Not Used" -msgstr "Nie użyto AF" - -#: src/olympusmn.cpp:518 -msgid "AF Used" -msgstr "Użyto AF" - -#: src/olympusmn.cpp:523 -msgid "Not Ready" -msgstr "Nie gotowy" - -#: src/olympusmn.cpp:524 -msgid "Ready" -msgstr "Gotowy" - -#: src/olympusmn.cpp:531 -msgid "Fill-in" -msgstr "BÅ‚ysk wypeÅ‚niajÄ…cy" - -#: src/olympusmn.cpp:533 -msgid "Slow-sync" -msgstr "Synchronizacja z dÅ‚ugimi czasami" - -#: src/olympusmn.cpp:534 -msgid "Forced On" -msgstr "Wymuszony" - -#: src/olympusmn.cpp:535 -msgid "2nd Curtain" -msgstr "Druga kurtyna" - -#: src/olympusmn.cpp:541 -msgid "Channel 1, Low" -msgstr "" - -#: src/olympusmn.cpp:542 -msgid "Channel 2, Low" -msgstr "" - -#: src/olympusmn.cpp:543 -msgid "Channel 3, Low" -msgstr "" - -#: src/olympusmn.cpp:544 -msgid "Channel 4, Low" -msgstr "" - -#: src/olympusmn.cpp:545 -msgid "Channel 1, Mid" -msgstr "" - -#: src/olympusmn.cpp:546 -msgid "Channel 2, Mid" -msgstr "" - -#: src/olympusmn.cpp:547 -msgid "Channel 3, Mid" -msgstr "" - -#: src/olympusmn.cpp:548 -msgid "Channel 4, Mid" -msgstr "" - -#: src/olympusmn.cpp:549 -msgid "Channel 1, High" -msgstr "" - -#: src/olympusmn.cpp:550 -msgid "Channel 2, High" -msgstr "" - -#: src/olympusmn.cpp:551 -msgid "Channel 3, High" -msgstr "" - -#: src/olympusmn.cpp:552 -msgid "Channel 4, High" -msgstr "" - -#: src/olympusmn.cpp:566 -msgid "7500K (Fine Weather with Shade)" -msgstr "7500K (dobra pogoda w cieniu)" - -#: src/olympusmn.cpp:567 -msgid "6000K (Cloudy)" -msgstr "6000K (pochmurno)" - -#: src/olympusmn.cpp:568 -msgid "5300K (Fine Weather)" -msgstr "5300K (dobra pogoda)" - -#: src/olympusmn.cpp:569 -msgid "3000K (Tungsten light)" -msgstr "3000K (żarówka wolframowa)" - -#: src/olympusmn.cpp:570 src/olympusmn.cpp:574 -msgid "3600K (Tungsten light-like)" -msgstr "3600K (żarowka wolframopodobna)" - -#: src/olympusmn.cpp:571 -msgid "6600K (Daylight fluorescent)" -msgstr "6600K (Å›wiatÅ‚o dzienne lampy fluorescencyjnej)" - -#: src/olympusmn.cpp:572 -msgid "4500K (Neutral white fluorescent)" -msgstr "4500K (neutralnie biaÅ‚a lampa fluorescencyjna)" - -#: src/olympusmn.cpp:573 -msgid "4000K (Cool white fluorescent)" -msgstr "4000K (chÅ‚odnobiaÅ‚a lampa fluorescencyjna)" - -#: src/olympusmn.cpp:575 -msgid "Custom WB 1" -msgstr "WÅ‚asny balans bieli 1" - -#: src/olympusmn.cpp:576 -msgid "Custom WB 2" -msgstr "WÅ‚asny balans bieli 2" - -#: src/olympusmn.cpp:577 -msgid "Custom WB 3" -msgstr "WÅ‚asny balans bieli 3" - -#: src/olympusmn.cpp:578 -msgid "Custom WB 4" -msgstr "WÅ‚asny balans bieli 4" - -#: src/olympusmn.cpp:579 -msgid "Custom WB 5400K" -msgstr "WÅ‚asny balans bieli 5400K" - -#: src/olympusmn.cpp:580 -msgid "Custom WB 2900K" -msgstr "WÅ‚asny balans bieli 2900K" - -#: src/olympusmn.cpp:581 -msgid "Custom WB 8000K" -msgstr "WÅ‚asny balans bieli 8000K" - -#: src/olympusmn.cpp:587 -msgid "CM1 (Red Enhance)" -msgstr "CM1 (rozszerzenie czerwieni)" - -#: src/olympusmn.cpp:588 -msgid "CM2 (Green Enhance)" -msgstr "CM2 (rozszerzenie zieleni)" - -#: src/olympusmn.cpp:589 -msgid "CM3 (Blue Enhance)" -msgstr "CM3 (rozszerzenie bÅ‚Ä™kitu)" - -#: src/olympusmn.cpp:590 -msgid "CM4 (Skin Tones)" -msgstr "CM4 (kolory skóry)" - -#: src/olympusmn.cpp:597 src/olympusmn.cpp:776 src/olympusmn.cpp:841 -msgid "Pro Photo RGB" -msgstr "Pro Photo RGB" - -#: src/olympusmn.cpp:603 src/olympusmn.cpp:697 -msgid "Noise Filter" -msgstr "Filtr szumu" - -#: src/olympusmn.cpp:604 -#, fuzzy -msgid "Noise Filter (ISO Boost)" -msgstr "Filtr szumów przy dÅ‚ugiej ekspozycji" - -#: src/olympusmn.cpp:612 src/olympusmn.cpp:854 -msgid "Muted" -msgstr "Wyciszony" - -#: src/olympusmn.cpp:614 src/olympusmn.cpp:855 -msgid "Monotone" -msgstr "Jednotonowy" - -#: src/olympusmn.cpp:640 -msgid "SQ" -msgstr "SQ" - -#: src/olympusmn.cpp:641 -msgid "HQ" -msgstr "HQ" - -#: src/olympusmn.cpp:642 -msgid "SHQ" -msgstr "SHQ" - -#: src/olympusmn.cpp:649 src/panasonicmn.cpp:86 -msgid "On, Mode 1" -msgstr "WÅ‚Ä…czony, tryb 1" - -#: src/olympusmn.cpp:650 src/panasonicmn.cpp:88 -msgid "On, Mode 2" -msgstr "WÅ‚Ä…czony, tryb 2" - -#: src/olympusmn.cpp:651 -#, fuzzy -msgid "On, Mode 3" -msgstr "WÅ‚Ä…czony, tryb 1" - -#: src/olympusmn.cpp:655 -msgid "Camera Settings Version" -msgstr "Wersja ustawieÅ„ aparatu" - -#: src/olympusmn.cpp:655 -msgid "Camera settings version" -msgstr "Wersja ustawieÅ„ aparatu" - -#: src/olympusmn.cpp:656 -msgid "PreviewImage Valid" -msgstr "Obrazek podglÄ…du prawidÅ‚owy" - -#: src/olympusmn.cpp:656 -msgid "Preview image valid" -msgstr "Obrazek podglÄ…du prawidÅ‚owy" - -#: src/olympusmn.cpp:657 -msgid "PreviewImage Start" -msgstr "PoczÄ…tek obrazu podglÄ…du" - -#: src/olympusmn.cpp:657 -msgid "Preview image start" -msgstr "PoczÄ…tek obrazu podglÄ…du" - -#: src/olympusmn.cpp:658 -msgid "PreviewImage Length" -msgstr "DÅ‚ugość obrazu podglÄ…du" - -#: src/olympusmn.cpp:658 -msgid "Preview image length" -msgstr "DÅ‚ugość obrazu podglÄ…du" - -#: src/olympusmn.cpp:660 -msgid "Auto exposure lock" -msgstr "Blokada automatycznej ekspozycji" - -#: src/olympusmn.cpp:662 -#, fuzzy -msgid "Exposure Shift" -msgstr "Czas ekspozycji" - -#: src/olympusmn.cpp:662 -#, fuzzy -msgid "Exposure shift" -msgstr "Czas ekspozycji" - -#: src/olympusmn.cpp:665 -#, fuzzy -msgid "Focus Process" -msgstr "Tryb ogniskowania" - -#: src/olympusmn.cpp:665 -#, fuzzy -msgid "Focus process" -msgstr "Proces wÅ‚asny" - -#: src/olympusmn.cpp:666 -msgid "AF Search" -msgstr "" - -#: src/olympusmn.cpp:666 -#, fuzzy -msgid "AF search" -msgstr "Użyto AF" - -#: src/olympusmn.cpp:667 -msgid "AF Areas" -msgstr "Strefy AF" - -#: src/olympusmn.cpp:667 -msgid "AF areas" -msgstr "Strefy autofokusa" - -#: src/olympusmn.cpp:668 -#, fuzzy -msgid "AFPointSelected" -msgstr "Wybrany punkt AF" - -#: src/olympusmn.cpp:669 -#, fuzzy -msgid "AF Fine Tune Adjust" -msgstr "Dostrojenie AF" - -#: src/olympusmn.cpp:669 -#, fuzzy -msgid "AF fine tune adjust" -msgstr "Dostrojenie AF" - -#: src/olympusmn.cpp:672 -#, fuzzy -msgid "Flash Remote Control" -msgstr "Sterowanie podczerwieniÄ…" - -#: src/olympusmn.cpp:672 -#, fuzzy -msgid "Flash remote control" -msgstr "Sterowanie podczerwieniÄ…" - -#: src/olympusmn.cpp:673 -#, fuzzy -msgid "Flash Control Mode" -msgstr "Tryb flesza" - -#: src/olympusmn.cpp:673 -#, fuzzy -msgid "Flash control mode" -msgstr "Tryb flesza" - -#: src/olympusmn.cpp:674 -#, fuzzy -msgid "Flash Intensity" -msgstr "Aktywność flesza" - -#: src/olympusmn.cpp:674 -#, fuzzy -msgid "Flash intensity" -msgstr "Aktywność flesza" - -#: src/olympusmn.cpp:675 -#, fuzzy -msgid "Manual Flash Strength" -msgstr "SiÅ‚a bÅ‚ysku" - -#: src/olympusmn.cpp:675 -#, fuzzy -msgid "Manual flash strength" -msgstr "RÄ™czne sterowanie lampÄ…" - -#: src/olympusmn.cpp:676 src/sonymn.cpp:429 -msgid "White Balance 2" -msgstr "Balans bieli 2" - -#: src/olympusmn.cpp:676 src/sonymn.cpp:430 -msgid "White balance 2" -msgstr "Balans bieli 2" - -#: src/olympusmn.cpp:677 -msgid "White Balance Temperature" -msgstr "Temperatura balansu bieli" - -#: src/olympusmn.cpp:677 -msgid "White balance temperature" -msgstr "Temperatura balansu bieli" - -#: src/olympusmn.cpp:679 -msgid "Custom Saturation" -msgstr "Nasycenie wÅ‚asne" - -#: src/olympusmn.cpp:679 -msgid "Custom saturation" -msgstr "Nasycenie wÅ‚asne" - -#: src/olympusmn.cpp:680 -msgid "Modified Saturation" -msgstr "Nasycenie zmodyfikowane" - -#: src/olympusmn.cpp:680 -msgid "Modified saturation" -msgstr "Nasycenie zmodyfikowane" - -#: src/olympusmn.cpp:681 src/olympusmn.cpp:1080 -msgid "Contrast Setting" -msgstr "Ustawienie kontrastu" - -#: src/olympusmn.cpp:682 src/olympusmn.cpp:1081 -msgid "Sharpness Setting" -msgstr "Ustawienie wyostrzenia" - -#: src/olympusmn.cpp:686 src/olympusmn.cpp:975 -msgid "Distortion Correction" -msgstr "Korekcja dystorsji" - -#: src/olympusmn.cpp:686 src/olympusmn.cpp:975 -msgid "Distortion correction" -msgstr "Korekcja dystorsji" - -#: src/olympusmn.cpp:687 src/olympusmn.cpp:976 -msgid "Shading Compensation" -msgstr "Kompensacja cieni" - -#: src/olympusmn.cpp:687 src/olympusmn.cpp:976 -msgid "Shading compensation" -msgstr "Kompensacja cieni" - -#: src/olympusmn.cpp:688 -msgid "Compression Factor" -msgstr "Współczynnik kompresji" - -#: src/olympusmn.cpp:688 -msgid "Compression factor" -msgstr "Współczynnik kompresji" - -#: src/olympusmn.cpp:689 src/olympusmn.cpp:897 -msgid "Gradation" -msgstr "Gradacja" - -#: src/olympusmn.cpp:690 src/olympusmn.cpp:891 src/pentaxmn.cpp:988 -#: src/pentaxmn.cpp:989 -msgid "Picture mode" -msgstr "Styl obrazu" - -#: src/olympusmn.cpp:691 -msgid "Picture Mode Saturation" -msgstr "Nasycenie stylu zdjÄ™cia" - -#: src/olympusmn.cpp:691 src/olympusmn.cpp:892 -msgid "Picture mode saturation" -msgstr "Nasycenie stylu zdjÄ™cia" - -#: src/olympusmn.cpp:692 -msgid "Picture Mode Hue" -msgstr "OdcieÅ„ stylu zdjÄ™cia" - -#: src/olympusmn.cpp:692 -msgid "Picture mode hue" -msgstr "OdcieÅ„ stylu zdjÄ™cia" - -#: src/olympusmn.cpp:693 -msgid "Picture Mode Contrast" -msgstr "Kontrast stylu zdjÄ™cia" - -#: src/olympusmn.cpp:693 src/olympusmn.cpp:893 -msgid "Picture mode contrast" -msgstr "Kontrast stylu zdjÄ™cia" - -#: src/olympusmn.cpp:694 -msgid "Picture Mode Sharpness" -msgstr "Ostrość stylu zdjÄ™cia" - -#: src/olympusmn.cpp:694 src/olympusmn.cpp:894 -msgid "Picture mode sharpness" -msgstr "Ostrość stylu zdjÄ™cia" - -#: src/olympusmn.cpp:695 -msgid "Picture Mode BW Filter" -msgstr "Filtr cz-b stylu zdjÄ™cia" - -#: src/olympusmn.cpp:695 -msgid "Picture mode BW filter" -msgstr "Filtr cz-b stylu zdjÄ™cia" - -#: src/olympusmn.cpp:696 -msgid "Picture Mode Tone" -msgstr "Tonowanie stylu zdjÄ™cia" - -#: src/olympusmn.cpp:696 -msgid "Picture mode tone" -msgstr "Tonowanie stylu zdjÄ™cia" - -#: src/olympusmn.cpp:697 -msgid "Noise filter" -msgstr "Filtr szumu" - -#: src/olympusmn.cpp:698 -#, fuzzy -msgid "Art Filter" -msgstr "Filtr" - -#: src/olympusmn.cpp:698 -#, fuzzy -msgid "Art filter" -msgstr "Filtr kolorów" - -#: src/olympusmn.cpp:699 -#, fuzzy -msgid "Magic Filter" -msgstr "Filtr cyfrowy" - -#: src/olympusmn.cpp:699 -#, fuzzy -msgid "Magic filter" -msgstr "Filtr cyfrowy" - -#: src/olympusmn.cpp:701 -msgid "Panorama Mode" -msgstr "Tryb panoramy" - -#: src/olympusmn.cpp:701 -msgid "Panorama mode" -msgstr "Tryb panoramy" - -#: src/olympusmn.cpp:702 -msgid "Image Quality 2" -msgstr "Jakość obrazu 2" - -#: src/olympusmn.cpp:702 -msgid "Image quality 2" -msgstr "Jakość obrazu 2" - -#: src/olympusmn.cpp:704 -msgid "Manometer Pressure" -msgstr "CiÅ›nienie manometru" - -#: src/olympusmn.cpp:704 -msgid "Manometer pressure" -msgstr "CiÅ›nienie manometru" - -#: src/olympusmn.cpp:705 -msgid "Manometer Reading" -msgstr "Odczyt manometru" - -#: src/olympusmn.cpp:705 -msgid "Manometer reading" -msgstr "Odczyt manometru" - -#: src/olympusmn.cpp:706 -msgid "Extended WB Detect" -msgstr "Rozszerzona detekcja balansu bieli" - -#: src/olympusmn.cpp:706 -msgid "Extended WB detect" -msgstr "Rozszerzona detekcja balansu bieli" - -#: src/olympusmn.cpp:707 -msgid "Level Gauge Roll" -msgstr "" - -#: src/olympusmn.cpp:707 -msgid "Level gauge roll" -msgstr "" - -#: src/olympusmn.cpp:708 -msgid "Level Gauge Pitch" -msgstr "" - -#: src/olympusmn.cpp:708 -msgid "Level gauge pitch" -msgstr "" - -#: src/olympusmn.cpp:710 -msgid "Unknown OlympusCs tag" -msgstr "Nieznany znacznik OlympusCs" - -#: src/olympusmn.cpp:721 -msgid "Simple E-System" -msgstr "Prosty system E" - -#: src/olympusmn.cpp:722 -msgid "E-System" -msgstr "System E" - -#: src/olympusmn.cpp:739 -msgid "Equipment Version" -msgstr "Wersja wyposażenia" - -#: src/olympusmn.cpp:739 -msgid "Equipment version" -msgstr "Wersja wyposażenia" - -#: src/olympusmn.cpp:741 -msgid "Serial number" -msgstr "Numer seryjny" - -#: src/olympusmn.cpp:746 src/panasonicmn.cpp:277 src/tags.cpp:1854 -msgid "Lens Serial Number" -msgstr "Numer seryjny obiektywu" - -#: src/olympusmn.cpp:746 src/panasonicmn.cpp:277 -msgid "Lens serial number" -msgstr "Numer seryjny obiektywu" - -#: src/olympusmn.cpp:747 src/properties.cpp:388 src/tags.cpp:1850 -msgid "Lens Model" -msgstr "Model obiektywu" - -#: src/olympusmn.cpp:747 -#, fuzzy -msgid "Lens model" -msgstr "Model obiektywu" - -#: src/olympusmn.cpp:748 -msgid "Lens Firmware Version" -msgstr "Wersja firmware obiektywu" - -#: src/olympusmn.cpp:748 -msgid "Lens firmware version" -msgstr "Wersja firmware obiektywu" - -#: src/olympusmn.cpp:753 -msgid "Max Aperture At Current Focal" -msgstr "Maksymalna apertura przy bieżącej ogniskowej" - -#: src/olympusmn.cpp:753 -msgid "Max aperture at current focal" -msgstr "Maksymalna apertura przy bieżącej ogniskowej" - -#: src/olympusmn.cpp:754 -msgid "Lens Properties" -msgstr "WÅ‚aÅ›ciwoÅ›ci obiektywu" - -#: src/olympusmn.cpp:754 -msgid "Lens properties" -msgstr "WÅ‚aÅ›ciwoÅ›ci obiektywu" - -#: src/olympusmn.cpp:755 -msgid "Extender" -msgstr "Ekstender" - -#: src/olympusmn.cpp:756 -msgid "Extender Serial Number" -msgstr "Numer seryjny ekstendera" - -#: src/olympusmn.cpp:756 -msgid "Extender serial number" -msgstr "Numer seryjny ekstendera" - -#: src/olympusmn.cpp:757 -msgid "Extender Model" -msgstr "Model ekstendera" - -#: src/olympusmn.cpp:757 -msgid "Extender model" -msgstr "Model ekstendera" - -#: src/olympusmn.cpp:758 -msgid "Extender Firmware Version" -msgstr "Wersja firmware ekstendera" - -#: src/olympusmn.cpp:758 -msgid "Extender firmwareversion" -msgstr "Wersja firmware ekstendera" - -#: src/olympusmn.cpp:760 src/properties.cpp:384 -msgid "Flash Model" -msgstr "Model flesza" - -#: src/olympusmn.cpp:760 -msgid "Flash model" -msgstr "Model flesza" - -#: src/olympusmn.cpp:761 -msgid "Flash Firmware Version" -msgstr "Wersja firmware flesza" - -#: src/olympusmn.cpp:761 -msgid "Flash firmware version" -msgstr "Wersja firmware flesza" - -#: src/olympusmn.cpp:762 -msgid "FlashSerialNumber" -msgstr "Numer seryjny flesza" - -#: src/olympusmn.cpp:764 -msgid "Unknown OlympusEq tag" -msgstr "Nieznany znacznik OlympusEq" - -#: src/olympusmn.cpp:781 src/olympusmn.cpp:846 -#, fuzzy -msgid "High Speed" -msgstr "Duża szybkość" - -#: src/olympusmn.cpp:782 src/olympusmn.cpp:803 src/olympusmn.cpp:847 -#, fuzzy -msgid "High Function" -msgstr "Funkcja koloru" - -#: src/olympusmn.cpp:783 -#, fuzzy -msgid "Advanced High Speed" -msgstr "Duża szybkość" - -#: src/olympusmn.cpp:784 -#, fuzzy -msgid "Advanced High Function" -msgstr "Funkcja koloru" - -#: src/olympusmn.cpp:789 -msgid "Original" -msgstr "OryginaÅ‚" - -#: src/olympusmn.cpp:790 -msgid "Edited (Landscape)" -msgstr "Edytowany (krajobraz)" - -#: src/olympusmn.cpp:791 src/olympusmn.cpp:792 -msgid "Edited (Portrait)" -msgstr "Edytowany (portret)" - -#: src/olympusmn.cpp:797 -msgid "WB Color Temp" -msgstr "Temperatura koloru balansu bieli" - -#: src/olympusmn.cpp:798 -msgid "WB Gray Point" -msgstr "Szary punktu balansu bieli" - -#: src/olympusmn.cpp:808 -#, fuzzy -msgid "Raw Development Version" -msgstr "Wersja informacji Raw" - -#: src/olympusmn.cpp:808 -#, fuzzy -msgid "Raw development version" -msgstr "Wersja informacji Raw" - -#: src/olympusmn.cpp:809 src/olympusmn.cpp:879 src/properties.cpp:558 -#: src/tags.cpp:822 -msgid "Exposure Bias Value" -msgstr "Korekta ekspozycji" - -#: src/olympusmn.cpp:809 src/olympusmn.cpp:879 -#, fuzzy -msgid "Exposure bias value" -msgstr "Korekta ekspozycji (APEX)" - -#: src/olympusmn.cpp:810 src/olympusmn.cpp:881 -msgid "White Balance Value" -msgstr "Wartość balansu bieli" - -#: src/olympusmn.cpp:810 src/olympusmn.cpp:881 -msgid "White balance value" -msgstr "Wartość balansu bieli" - -#: src/olympusmn.cpp:811 src/olympusmn.cpp:882 -msgid "WB Fine Adjustment" -msgstr "Poprawka balansu bieli" - -#: src/olympusmn.cpp:811 -msgid "WB fine adjustment" -msgstr "Poprawka balansu bieli" - -#: src/olympusmn.cpp:812 src/olympusmn.cpp:834 src/olympusmn.cpp:883 -msgid "Gray Point" -msgstr "Punkt szaroÅ›ci" - -#: src/olympusmn.cpp:812 src/olympusmn.cpp:883 -msgid "Gray point" -msgstr "Punkt szaroÅ›ci" - -#: src/olympusmn.cpp:813 src/olympusmn.cpp:886 -msgid "Saturation Emphasis" -msgstr "Wzmocnienie nasycenia" - -#: src/olympusmn.cpp:813 src/olympusmn.cpp:886 -msgid "Saturation emphasis" -msgstr "Wzmocnienie nasycenia" - -#: src/olympusmn.cpp:814 src/olympusmn.cpp:887 -#, fuzzy -msgid "Memory Color Emphasis" -msgstr "Moje kolory" - -#: src/olympusmn.cpp:814 src/olympusmn.cpp:887 -msgid "Memory color emphasis" -msgstr "" - -#: src/olympusmn.cpp:815 src/olympusmn.cpp:884 -msgid "Contrast Value" -msgstr "Kontrast" - -#: src/olympusmn.cpp:815 src/olympusmn.cpp:884 -msgid "Contrast value" -msgstr "Kontrast" - -#: src/olympusmn.cpp:816 src/olympusmn.cpp:885 -msgid "Sharpness Value" -msgstr "Ostrość" - -#: src/olympusmn.cpp:816 src/olympusmn.cpp:885 -msgid "Sharpness value" -msgstr "Kontrast" - -#: src/olympusmn.cpp:818 src/olympusmn.cpp:890 -msgid "Engine" -msgstr "Silnik" - -#: src/olympusmn.cpp:820 -msgid "Edit status" -msgstr "Stan edycji" - -#: src/olympusmn.cpp:821 -msgid "Settings" -msgstr "Ustawienia" - -#: src/olympusmn.cpp:823 -msgid "Unknown OlympusRd tag" -msgstr "Nieznany znacznik OlympusRd" - -#: src/olympusmn.cpp:878 -#, fuzzy -msgid "Raw Development 2 Version" -msgstr "Wersja informacji Raw" - -#: src/olympusmn.cpp:878 -#, fuzzy -msgid "Raw development 2 version" -msgstr "Wersja informacji Raw" - -#: src/olympusmn.cpp:882 -msgid "White balance fine adjustment" -msgstr "Poprawka balansu bieli" - -#: src/olympusmn.cpp:892 -msgid "PM Saturation" -msgstr "PM Nasycenie" - -#: src/olympusmn.cpp:893 -msgid "PM Contrast" -msgstr "PM Kontrast" - -#: src/olympusmn.cpp:894 -msgid "PM Sharpness" -msgstr "PM Ostrość" - -#: src/olympusmn.cpp:895 -msgid "PM BW Filter" -msgstr "PM Filtr czarno-biaÅ‚y" - -#: src/olympusmn.cpp:895 -msgid "PM BW filter" -msgstr "PM Filtr czarno-biaÅ‚y" - -#: src/olympusmn.cpp:896 -msgid "PM Picture Tone" -msgstr "PM Tonowanie" - -#: src/olympusmn.cpp:896 -msgid "PM picture tone" -msgstr "PM Tonowanie" - -#: src/olympusmn.cpp:899 -msgid "Auto Gradation" -msgstr "Automatyczna gradacja" - -#: src/olympusmn.cpp:899 -msgid "Auto gradation" -msgstr "Automatyczna gradacja" - -#: src/olympusmn.cpp:900 -msgid "PM Noise Filter" -msgstr "PM Filtr szumu" - -#: src/olympusmn.cpp:900 -msgid "Picture mode noise filter" -msgstr "Filtr szumów stylu zdjÄ™cia" - -#: src/olympusmn.cpp:902 -msgid "Unknown OlympusRd2 tag" -msgstr "Nieznany znacznik Olympus Rd2" - -#: src/olympusmn.cpp:913 -#, fuzzy -msgid "On (2 frames)" -msgstr "WÅ‚Ä…czony (predefiniowany)" - -#: src/olympusmn.cpp:914 -#, fuzzy -msgid "On (3 frames)" -msgstr "WÅ‚Ä…czony (predefiniowany)" - -#: src/olympusmn.cpp:919 -msgid "4:3" -msgstr "" - -#: src/olympusmn.cpp:920 -#, fuzzy -msgid "3:2" -msgstr "320" - -#: src/olympusmn.cpp:921 -msgid "16:9" -msgstr "" - -#: src/olympusmn.cpp:922 -msgid "6:6" -msgstr "" - -#: src/olympusmn.cpp:923 -msgid "5:4" -msgstr "" - -#: src/olympusmn.cpp:924 -msgid "7:6" -msgstr "" - -#: src/olympusmn.cpp:925 -#, fuzzy -msgid "6:5" -msgstr "D65" - -#: src/olympusmn.cpp:926 -#, fuzzy -msgid "7:5" -msgstr "D75" - -#: src/olympusmn.cpp:927 -msgid "3:4" -msgstr "" - -#: src/olympusmn.cpp:931 -#, fuzzy -msgid "Image Processing Version" -msgstr "Przetwarzanie obrazu" - -#: src/olympusmn.cpp:931 -#, fuzzy -msgid "Image processing version" -msgstr "Przetwarzanie obrazu" - -#: src/olympusmn.cpp:933 -#, fuzzy -msgid "WB RB Levels 3000K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:933 -#, fuzzy -msgid "WB RB levels 3000K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:934 -#, fuzzy -msgid "WB RB Levels 3300K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:934 -#, fuzzy -msgid "WB RB levels 3300K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:935 -#, fuzzy -msgid "WB RB Levels 3600K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:935 -#, fuzzy -msgid "WB RB levels 3600K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:936 -#, fuzzy -msgid "WB RB Levels 3900K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:936 -#, fuzzy -msgid "WB RB levels 3900K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:937 -#, fuzzy -msgid "WB RB Levels 4000K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:937 -#, fuzzy -msgid "WB RB levels 4000K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:938 -#, fuzzy -msgid "WB RB Levels 4300K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:938 -#, fuzzy -msgid "WB RB levels 4300K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:939 -#, fuzzy -msgid "WB RB Levels 4500K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:939 -#, fuzzy -msgid "WB RB levels 4500K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:940 -#, fuzzy -msgid "WB RB Levels 4800K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:940 -#, fuzzy -msgid "WB RB levels 4800K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:941 -#, fuzzy -msgid "WB RB Levels 5300K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:941 -#, fuzzy -msgid "WB RB levels 5300K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:942 -#, fuzzy -msgid "WB RB Levels 6000K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:942 -#, fuzzy -msgid "WB RB levels 6000K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:943 -#, fuzzy -msgid "WB RB Levels 6600K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:943 -#, fuzzy -msgid "WB RB levels 6600K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:944 -#, fuzzy -msgid "WB RB Levels 7500K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:944 -#, fuzzy -msgid "WB RB levels 7500K" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:945 -#, fuzzy -msgid "WB RB Levels CWB1" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:945 -#, fuzzy -msgid "WB RB levels CWB1" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:946 -#, fuzzy -msgid "WB RB Levels CWB2" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:946 -#, fuzzy -msgid "WB RB levels CWB2" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:947 -#, fuzzy -msgid "WB RB Levels CWB3" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:947 -#, fuzzy -msgid "WB RB levels CWB3" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:948 -#, fuzzy -msgid "WB RB Levels CWB4" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:948 -#, fuzzy -msgid "WB RB levels CWB4" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:949 -#, fuzzy -msgid "WB G Level 3000K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:949 -#, fuzzy -msgid "WB G level 3000K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:950 -#, fuzzy -msgid "WB G Level 3300K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:950 -#, fuzzy -msgid "WB G level 3300K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:951 -#, fuzzy -msgid "WB G Level 3600K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:951 -#, fuzzy -msgid "WB G level 3600K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:952 -#, fuzzy -msgid "WB G Level 3900K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:952 -#, fuzzy -msgid "WB G level 3900K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:953 -#, fuzzy -msgid "WB G Level 4000K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:953 -#, fuzzy -msgid "WB G level 4000K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:954 -#, fuzzy -msgid "WB G Level 4300K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:954 -#, fuzzy -msgid "WB G level 4300K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:955 -#, fuzzy -msgid "WB G Level 4500K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:955 -#, fuzzy -msgid "WB G level 4500K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:956 -#, fuzzy -msgid "WB G Level 4800K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:956 -#, fuzzy -msgid "WB G level 4800K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:957 -#, fuzzy -msgid "WB G Level 5300K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:957 -#, fuzzy -msgid "WB G level 5300K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:958 -#, fuzzy -msgid "WB G Level 6000K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:958 -#, fuzzy -msgid "WB G level 6000K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:959 -#, fuzzy -msgid "WB G Level 6600K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:959 -#, fuzzy -msgid "WB G level 6600K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:960 -#, fuzzy -msgid "WB G Level 7500K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:960 -#, fuzzy -msgid "WB G level 7500K" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:961 -#, fuzzy -msgid "WB G Level" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:961 -#, fuzzy -msgid "WB G level" -msgstr "Poziomy balansu bieli RBGG" - -#: src/olympusmn.cpp:963 -#, fuzzy -msgid "Enhancer" -msgstr "Programista" - -#: src/olympusmn.cpp:964 -#, fuzzy -msgid "Enhancer Values" -msgstr "Ostrość" - -#: src/olympusmn.cpp:964 -#, fuzzy -msgid "Enhancer values" -msgstr "Kontrast" - -#: src/olympusmn.cpp:965 src/olympusmn.cpp:1067 -#, fuzzy -msgid "Coring Filter" -msgstr "Filtr kolorów" - -#: src/olympusmn.cpp:966 src/olympusmn.cpp:1068 -#, fuzzy -msgid "Coring Values" -msgstr "Kontrast" - -#: src/olympusmn.cpp:966 src/olympusmn.cpp:1068 -#, fuzzy -msgid "Coring values" -msgstr "Kontrast" - -#: src/olympusmn.cpp:967 src/tags.cpp:908 -msgid "Black Level" -msgstr "Poziom czerni" - -#: src/olympusmn.cpp:968 -msgid "Gain Base" -msgstr "Podstawa wzmocnienia" - -#: src/olympusmn.cpp:968 -msgid "Gain base" -msgstr "Automatyczna gradacja" - -#: src/olympusmn.cpp:969 -msgid "Valid Bits" -msgstr "" - -#: src/olympusmn.cpp:970 src/olympusmn.cpp:1072 src/properties.cpp:445 -msgid "Crop Left" -msgstr "PrzyciÄ™cie lewo" - -#: src/olympusmn.cpp:970 src/olympusmn.cpp:1072 -msgid "Crop left" -msgstr "PrzyciÄ™cie lewo" - -#: src/olympusmn.cpp:971 src/olympusmn.cpp:1073 src/properties.cpp:444 -msgid "Crop Top" -msgstr "PrzyciÄ™cie góra" - -#: src/olympusmn.cpp:971 src/olympusmn.cpp:1073 -msgid "Crop top" -msgstr "PrzyciÄ™cie góra" - -#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 src/properties.cpp:449 -msgid "Crop Width" -msgstr "PrzyciÄ™cie szerokość" - -#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 -msgid "Crop width" -msgstr "PrzyciÄ™cie szerokość" - -#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 src/properties.cpp:450 -msgid "Crop Height" -msgstr "PrzyciÄ™cie wysokość" - -#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 -msgid "Crop height" -msgstr "PrzyciÄ™cie wysokość" - -#: src/olympusmn.cpp:977 -#, fuzzy -msgid "Multiple Exposure Mode" -msgstr "Tryb ekspozycji" - -#: src/olympusmn.cpp:977 -#, fuzzy -msgid "Multiple exposure mode" -msgstr "Wielokrotna ekspozycja" - -#: src/olympusmn.cpp:978 src/sonymn.cpp:644 src/sonymn.cpp:645 -#, fuzzy -msgid "Aspect Ratio" -msgstr "Proporcje pikseli wideo" - -#: src/olympusmn.cpp:978 -#, fuzzy -msgid "Aspect ratio" -msgstr "Proporcje pikseli wideo" - -#: src/olympusmn.cpp:979 -#, fuzzy -msgid "Aspect Frame" -msgstr "Proporcje pikseli wideo" - -#: src/olympusmn.cpp:979 -#, fuzzy -msgid "Aspect frame" -msgstr "Proporcje pikseli wideo" - -#: src/olympusmn.cpp:980 -msgid "Face Detect" -msgstr "Wykrywanie twarzy" - -#: src/olympusmn.cpp:980 src/olympusmn.cpp:1373 src/olympusmn.cpp:1385 -msgid "Face detect" -msgstr "Wykrywanie twarzy" - -#: src/olympusmn.cpp:981 -msgid "Face Detect Area" -msgstr "Obszar wykrywania twarzy" - -#: src/olympusmn.cpp:981 -msgid "Face detect area" -msgstr "Obszar wykrywania twarzy" - -#: src/olympusmn.cpp:983 -msgid "Unknown OlympusIp tag" -msgstr "Nieznany znacznik OlympusIp" - -#: src/olympusmn.cpp:993 -#, fuzzy -msgid "Bounce or Off" -msgstr "Odbicie lub nie" - -#: src/olympusmn.cpp:994 -msgid "Direct" -msgstr "BezpoÅ›redni" - -#: src/olympusmn.cpp:998 -msgid "Focus Info Version" -msgstr "Wersja informacji focusa" - -#: src/olympusmn.cpp:998 -msgid "Focus info version" -msgstr "Wersja informacji o ostrzeniu (fokusie)" - -#: src/olympusmn.cpp:999 -msgid "Auto Focus" -msgstr "Automatyczne ostrzenie" - -#: src/olympusmn.cpp:1000 -msgid "Scene Detect" -msgstr "Wykrywanie sceny" - -#: src/olympusmn.cpp:1000 -msgid "Scene detect" -msgstr "Wykrywanie sceny" - -#: src/olympusmn.cpp:1001 -msgid "Scene Area" -msgstr "Obszar sceny" - -#: src/olympusmn.cpp:1001 -msgid "Scene area" -msgstr "Obszar sceny" - -#: src/olympusmn.cpp:1002 -msgid "Scene Detect Data" -msgstr "Dane wykrywania sceny" - -#: src/olympusmn.cpp:1002 -msgid "Scene detect data" -msgstr "Dane wykrywania sceny" - -#: src/olympusmn.cpp:1003 -msgid "Zoom Step Count" -msgstr "Liczba kroków powiÄ™kszania" - -#: src/olympusmn.cpp:1004 -msgid "Focus Step Count" -msgstr "Liczba kroków ostrzenia" - -#: src/olympusmn.cpp:1004 -msgid "Focus step count" -msgstr "Liczba kroków ostrzenia" - -#: src/olympusmn.cpp:1005 -#, fuzzy -msgid "Focus Step Infinity" -msgstr "Krok ostrzenia - nieskoÅ„czoność" - -#: src/olympusmn.cpp:1005 -#, fuzzy -msgid "Focus step infinity" -msgstr "Krok ostrzenia - nieskoÅ„czoność" - -#: src/olympusmn.cpp:1006 -#, fuzzy -msgid "Focus Step Near" -msgstr "Krok ostrzenia - blisko" - -#: src/olympusmn.cpp:1006 -#, fuzzy -msgid "Focus step near" -msgstr "Krok ostrzenia - blisko" - -#: src/olympusmn.cpp:1009 -msgid "External Flash" -msgstr "ZewnÄ™trzny flesz" - -#: src/olympusmn.cpp:1010 -msgid "External Flash Guide Number" -msgstr "Liczba przewodnia zewnÄ™trznego flesza" - -#: src/olympusmn.cpp:1010 -msgid "External flash guide number" -msgstr "Liczba przewodnia zewnÄ™trznego flesza" - -#: src/olympusmn.cpp:1014 -msgid "Manual Flash" -msgstr "Flesz rÄ™czny" - -#: src/olympusmn.cpp:1014 -msgid "Manual flash" -msgstr "Flesz rÄ™czny" - -#: src/olympusmn.cpp:1018 -msgid "Unknown OlympusFi tag" -msgstr "Nieznany znacznik OlympusFi" - -#: src/olympusmn.cpp:1029 -msgid "Unknown OlympusFe tag" -msgstr "Nieznany znacznik OlympusFe" - -#: src/olympusmn.cpp:1042 -msgid "Fine Weather" -msgstr "Dobra pogoda" - -#: src/olympusmn.cpp:1043 -#, fuzzy -msgid "Tungsten (incandescent)" -msgstr "Å»arówka wolframowa" - -#: src/olympusmn.cpp:1044 -msgid "Evening Sunlight" -msgstr "Wieczorne Å›wiatÅ‚o sÅ‚oÅ„ca" - -#: src/olympusmn.cpp:1045 -#, fuzzy -msgid "Daylight Fluorescent (D 5700 - 7100K)" -msgstr "Lampy fluorescencyjna, Å›wiatÅ‚o dzienne (D 5700 - 7100K)" - -#: src/olympusmn.cpp:1046 -#, fuzzy -msgid "Day White Fluorescent (N 4600 - 5400K)" -msgstr "Lampa fluorescencyjna, biel dnia (N 4600 - 5400K)" - -#: src/olympusmn.cpp:1047 -#, fuzzy -msgid "Cool White Fluorescent (W 3900 - 4500K)" -msgstr "Lampa fluorescencyjna chÅ‚odnobiaÅ‚a (W 3900 - 4500K)" - -#: src/olympusmn.cpp:1048 -#, fuzzy -msgid "White Fluorescent (WW 3200 - 3700K)" -msgstr "Lampa fluorescencyjna biaÅ‚a (WW 3200 - 3700K)" - -#: src/olympusmn.cpp:1049 -#, fuzzy -msgid "One Touch White Balance" -msgstr "Automatyczna korekcja balansu bieli" - -#: src/olympusmn.cpp:1050 -msgid "Custom 1-4" -msgstr "Użytkownika 1-4" - -#: src/olympusmn.cpp:1054 -msgid "Raw Info Version" -msgstr "Wersja informacji Raw" - -#: src/olympusmn.cpp:1054 -msgid "Raw info version" -msgstr "Wersja informacji Raw" - -#: src/olympusmn.cpp:1055 -#, fuzzy -msgid "WB_RB Levels Used" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:1055 -#, fuzzy -msgid "WB_RB levels used" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:1056 -#, fuzzy -msgid "WB_RB Levels Auto" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:1056 -#, fuzzy -msgid "WB_RB levels auto" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:1057 -#, fuzzy -msgid "WB_RB Levels Shade" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:1057 -#, fuzzy -msgid "WB_RB levels shade" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:1058 -#, fuzzy -msgid "WB_RB Levels Cloudy" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:1058 -#, fuzzy -msgid "WB_RB levels cloudy" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:1059 -#, fuzzy -msgid "WB_RB Levels Fine Weather" -msgstr "Dobra pogoda" - -#: src/olympusmn.cpp:1059 -msgid "WB_RB levels fine weather" -msgstr "" - -#: src/olympusmn.cpp:1060 -#, fuzzy -msgid "WB_RB Levels Tungsten" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:1060 -#, fuzzy -msgid "WB_RB levels tungsten" -msgstr "Poziomy balansu bieli RB" - -#: src/olympusmn.cpp:1061 -#, fuzzy -msgid "WB_RB Levels Evening Sunlight" -msgstr "Wieczorne Å›wiatÅ‚o sÅ‚oÅ„ca" - -#: src/olympusmn.cpp:1061 -#, fuzzy -msgid "WB_RB levels evening sunlight" -msgstr "Wieczorne Å›wiatÅ‚o sÅ‚oÅ„ca" - -#: src/olympusmn.cpp:1062 -msgid "WB_RB Levels Daylight Fluor" -msgstr "" - -#: src/olympusmn.cpp:1062 -msgid "WB_RB levels daylight fluor" -msgstr "" - -#: src/olympusmn.cpp:1063 -msgid "WB_RB Levels Day White Fluor" -msgstr "" - -#: src/olympusmn.cpp:1063 -msgid "WB_RB levels day white fluor" -msgstr "" - -#: src/olympusmn.cpp:1064 -msgid "WB_RB Levels Cool White Fluor" -msgstr "" - -#: src/olympusmn.cpp:1064 -msgid "WB_RB levels cool white fluor" -msgstr "" - -#: src/olympusmn.cpp:1065 -#, fuzzy -msgid "WB_RB Levels White Fluorescent" -msgstr "Fluorescencja biaÅ‚a" - -#: src/olympusmn.cpp:1065 -#, fuzzy -msgid "WB_RB levels white fluorescent" -msgstr "4500K (neutralnie biaÅ‚a lampa fluorescencyjna)" - -#: src/olympusmn.cpp:1066 -msgid "Color Matrix2" -msgstr "Matryca kolorów 2" - -#: src/olympusmn.cpp:1066 -msgid "Color matrix 2" -msgstr "Matryca kolorów 2" - -#: src/olympusmn.cpp:1069 -msgid "Black Level 2" -msgstr "Poziom czerni 2" - -#: src/olympusmn.cpp:1069 -msgid "Black level 2" -msgstr "Poziom czerni 2" - -#: src/olympusmn.cpp:1070 src/properties.cpp:508 src/tags.cpp:699 -msgid "YCbCr Coefficients" -msgstr "Współczynniki YCbCr" - -#: src/olympusmn.cpp:1070 -msgid "YCbCr coefficients" -msgstr "Współczynniki YCbCr" - -#: src/olympusmn.cpp:1071 -msgid "Valid Pixel Depth" -msgstr "PrawidÅ‚owa gÅ‚Ä™bia pikseli" - -#: src/olympusmn.cpp:1071 -msgid "Valid pixel depth" -msgstr "PrawidÅ‚owa gÅ‚Ä™bia pikseli" - -#: src/olympusmn.cpp:1077 -msgid "White Balance Comp" -msgstr "Kompensacja balansu bieli" - -#: src/olympusmn.cpp:1077 -msgid "White balance comp" -msgstr "Kompensacja balansu bieli" - -#: src/olympusmn.cpp:1078 -msgid "Saturation Setting" -msgstr "Ustawienie nasycenia" - -#: src/olympusmn.cpp:1079 -msgid "Hue Setting" -msgstr "Ustawienie odcieni" - -#: src/olympusmn.cpp:1079 -msgid "Hue setting" -msgstr "Ustawienie odcieni" - -#: src/olympusmn.cpp:1082 -msgid "CM Exposure Compensation" -msgstr "CM Kompensacja ekspozycji" - -#: src/olympusmn.cpp:1082 -msgid "CM exposure compensation" -msgstr "CM Kompensacja ekspozycji" - -#: src/olympusmn.cpp:1083 -msgid "CM White Balance" -msgstr "CM Balans bieli" - -#: src/olympusmn.cpp:1083 -msgid "CM white balance" -msgstr "CM Balans bieli" - -#: src/olympusmn.cpp:1084 -msgid "CM White Balance Comp" -msgstr "CM Kompensacja balansu bieli" - -#: src/olympusmn.cpp:1084 -msgid "CM white balance comp" -msgstr "CM Kompensacja balansu bieli" - -#: src/olympusmn.cpp:1085 -msgid "CM White Balance Gray Point" -msgstr "CM Punkt szaroÅ›ci balansu bieli" - -#: src/olympusmn.cpp:1085 -msgid "CM white balance gray point" -msgstr "CM Punkt szaroÅ›ci balansu bieli" - -#: src/olympusmn.cpp:1086 -msgid "CM Saturation" -msgstr "CM Nasycenie" - -#: src/olympusmn.cpp:1086 -msgid "CM saturation" -msgstr "CM Nasycenie" - -#: src/olympusmn.cpp:1087 -msgid "CM Hue" -msgstr "CM OdcieÅ„" - -#: src/olympusmn.cpp:1087 -msgid "CM hue" -msgstr "CM OdcieÅ„" - -#: src/olympusmn.cpp:1088 -msgid "CM Contrast" -msgstr "CM Kontrast" - -#: src/olympusmn.cpp:1088 -msgid "CM contrast" -msgstr "CM Kontrastowość" - -#: src/olympusmn.cpp:1089 -msgid "CM Sharpness" -msgstr "CM Ostrość" - -#: src/olympusmn.cpp:1089 -msgid "CM sharpness" -msgstr "CM Ostrość" - -#: src/olympusmn.cpp:1091 -msgid "Unknown OlympusRi tag" -msgstr "Nieznany znacznik OlympusRi" - -#: src/olympusmn.cpp:1114 src/pentaxmn.cpp:336 -msgid "User-Selected" -msgstr "Wybrane przez użytkownika" - -#: src/olympusmn.cpp:1115 -msgid "Auto-Override" -msgstr "Automatyczne wymuszenie" - -#: src/olympusmn.cpp:1151 -msgid "Fast" -msgstr "Szybki" - -#: src/olympusmn.cpp:1208 -msgid "3000 Kelvin" -msgstr "3000 K" - -#: src/olympusmn.cpp:1209 -msgid "3700 Kelvin" -msgstr "3700 K" - -#: src/olympusmn.cpp:1210 -msgid "4000 Kelvin" -msgstr "4000 K" - -#: src/olympusmn.cpp:1211 -msgid "4500 Kelvin" -msgstr "4500 K" - -#: src/olympusmn.cpp:1212 -msgid "5500 Kelvin" -msgstr "5500 K" - -#: src/olympusmn.cpp:1213 -msgid "6500 Kelvin" -msgstr "6500 K" - -#: src/olympusmn.cpp:1214 -msgid "7500 Kelvin" -msgstr "7500 K" - -#: src/olympusmn.cpp:1220 -msgid "One-touch" -msgstr "One-touch" - -#: src/olympusmn.cpp:1241 -msgid "Olympus Zuiko Digital ED 50mm F2.0 Macro" -msgstr "" - -#: src/olympusmn.cpp:1242 -msgid "Olympus Zuiko Digital 40-150mm F3.5-4.5" -msgstr "" - -#: src/olympusmn.cpp:1243 src/olympusmn.cpp:1259 -msgid "Olympus Zuiko Digital ED 14-42mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1244 -msgid "Olympus Zuiko Digital ED 150mm F2.0" -msgstr "" - -#: src/olympusmn.cpp:1245 -msgid "Olympus Zuiko Digital 17mm F2.8 Pancake" -msgstr "" - -#: src/olympusmn.cpp:1246 -msgid "Olympus Zuiko Digital ED 300mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1247 -msgid "Olympus Zuiko Digital 14-54mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1248 -msgid "Olympus Zuiko Digital Pro ED 90-250mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1249 -msgid "Olympus Zuiko Digital ED 50-200mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1250 -msgid "Olympus Zuiko Digital ED 8mm F3.5 Fisheye" -msgstr "" - -#: src/olympusmn.cpp:1251 -msgid "Olympus Zuiko Digital 11-22mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1252 -msgid "Olympus Zuiko Digital 18-180mm F3.5-6.3" -msgstr "" - -#: src/olympusmn.cpp:1253 -msgid "Olympus Zuiko Digital 70-300mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1254 -msgid "Olympus Zuiko Digital ED 7-14mm F4.0" -msgstr "" - -#: src/olympusmn.cpp:1255 -msgid "Olympus Zuiko Digital Pro ED 35-100mm F2.0" -msgstr "" - -#: src/olympusmn.cpp:1256 -msgid "Olympus Zuiko Digital 14-45mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1257 -msgid "Olympus Zuiko Digital 35mm F3.5 Macro" -msgstr "" - -#: src/olympusmn.cpp:1258 -msgid "Olympus Zuiko Digital 17.5-45mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1260 -msgid "Olympus Zuiko Digital ED 40-150mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1261 -msgid "Olympus Zuiko Digital ED 50-200mm F2.8-3.5 SWD" -msgstr "" - -#: src/olympusmn.cpp:1262 -msgid "Olympus Zuiko Digital ED 12-60mm F2.8-4.0 SWD" -msgstr "" - -#: src/olympusmn.cpp:1263 -msgid "Olympus Zuiko Digital ED 14-35mm F2.0 SWD" -msgstr "" - -#: src/olympusmn.cpp:1264 -msgid "Olympus Zuiko Digital 25mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1265 -msgid "Olympus Zuiko Digital ED 9-18mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1266 -msgid "Olympus Zuiko Digital 14-54mm F2.8-3.5 II" -msgstr "" - -#: src/olympusmn.cpp:1267 -msgid "Sigma 18-50mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1268 -msgid "Sigma 55-200mm F4.0-5.6 DC" -msgstr "" - -#: src/olympusmn.cpp:1269 -msgid "Sigma 18-125mm F3.5-5.6 DC" -msgstr "" - -#: src/olympusmn.cpp:1270 -msgid "Sigma 18-125mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1271 -msgid "Sigma 30mm F1.4" -msgstr "" - -#: src/olympusmn.cpp:1272 src/olympusmn.cpp:1278 -msgid "Sigma 50-500mm F4.0-6.3 EX DG APO HSM RF" -msgstr "" - -#: src/olympusmn.cpp:1273 -msgid "Sigma 105mm F2.8 DG" -msgstr "" - -#: src/olympusmn.cpp:1274 -msgid "Sigma 150mm F2.8 DG HSM" -msgstr "" - -#: src/olympusmn.cpp:1275 -msgid "Sigma 24mm F1.8 EX DG Aspherical Macro" -msgstr "" - -#: src/olympusmn.cpp:1276 -msgid "Sigma 135-400mm F4.5-5.6 DG ASP APO RF" -msgstr "" - -#: src/olympusmn.cpp:1277 -msgid "Sigma 300-800mm F5.6 EX DG APO" -msgstr "" - -#: src/olympusmn.cpp:1279 -msgid "Sigma 10-20mm F4.0-5.6 EX DC HSM" -msgstr "" - -#: src/olympusmn.cpp:1280 src/olympusmn.cpp:1289 -msgid "Leica D Vario Elmarit 14-50mm F2.8-3.5 Asph." -msgstr "" - -#: src/olympusmn.cpp:1281 -msgid "Lumix G Vario 14-45mm F3.5-5.6 Asph. Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1282 src/olympusmn.cpp:1290 -msgid "Leica D Summilux 25mm F1.4 Asph." -msgstr "" - -#: src/olympusmn.cpp:1283 -msgid "Lumix G Vario 45-200mm F4-5.6 Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1284 -msgid "Leica D Vario Elmar 14-50mm F3.8-5.6 Asph." -msgstr "" - -#: src/olympusmn.cpp:1285 -msgid "Lumix G Vario HD 14-140mm F4-5.8 Asph. Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1286 -msgid "Leica D Vario Elmar 14-150mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1287 -msgid "Lumix G Vario 7-14mm F4 Asph." -msgstr "" - -#: src/olympusmn.cpp:1288 -msgid "Lumix G 20mm F1.7 Asph." -msgstr "" - -#: src/olympusmn.cpp:1338 -msgid "Olympus Zuiko Digital EC-14 1.4x Teleconverter" -msgstr "" - -#: src/olympusmn.cpp:1339 -msgid "Olympus EX-25 Extension Tube" -msgstr "" - -#: src/olympusmn.cpp:1340 -msgid "Olympus Zuiko Digital EC-20 2.0x Teleconverter" -msgstr "" - -#: src/olympusmn.cpp:1382 -msgid "S-AF" -msgstr "" - -#: src/olympusmn.cpp:1383 -msgid "C-AF" -msgstr "" - -#: src/olympusmn.cpp:1386 -#, fuzzy -msgid "Imager AF" -msgstr "Unikalny identyfikator obrazu" - -#: src/olympusmn.cpp:1387 -#, fuzzy -msgid "AF sensor" -msgstr "Użyto AF" - -#: src/olympusmn.cpp:1433 -#, fuzzy -msgid "Soft Focus" -msgstr "Ostrzenie punktowe" - -#: src/olympusmn.cpp:1434 -msgid "Pop Art" -msgstr "" - -#: src/olympusmn.cpp:1435 -msgid "Pale & Light Color" -msgstr "" - -#: src/olympusmn.cpp:1436 -#, fuzzy -msgid "Light Tone" -msgstr "Strefa prawa" - -#: src/olympusmn.cpp:1437 -msgid "Pin Hole" -msgstr "" - -#: src/olympusmn.cpp:1438 -msgid "Grainy Film" -msgstr "" - -#: src/olympusmn.cpp:1439 -#, fuzzy -msgid "Diorama" -msgstr "panorama" - -#: src/olympusmn.cpp:1440 -#, fuzzy -msgid "Cross Process" -msgstr "Tryb ogniskowania" - -#: src/olympusmn.cpp:1441 -#, fuzzy -msgid "Fish Eye" -msgstr "Energia bÅ‚ysku" - -#: src/olympusmn.cpp:1442 -msgid "Drawing" -msgstr "" - -#: src/olympusmn.cpp:1489 -#, fuzzy -msgid "Left (or n/a)" -msgstr "Strefa lewa" - -#: src/olympusmn.cpp:1490 src/olympusmn.cpp:1508 -#, fuzzy -msgid "Center (horizontal)" -msgstr "Strefa Å›rodkowa (ukÅ‚ad poziomy)" - -#: src/olympusmn.cpp:1492 src/olympusmn.cpp:1519 -#, fuzzy -msgid "Center (vertical)" -msgstr "Strefa Å›rodkowa (ukÅ‚ad pionowa)" - -#: src/olympusmn.cpp:1503 -msgid "Top-left (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1504 -#, fuzzy -msgid "Top-center (horizontal)" -msgstr "Strefa Å›rodkowa (ukÅ‚ad poziomy)" - -#: src/olympusmn.cpp:1505 -msgid "Top-right (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1506 -#, fuzzy -msgid "Left (horizontal)" -msgstr "Poziome (normalne)" - -#: src/olympusmn.cpp:1507 -msgid "Mid-left (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1509 -msgid "Mid-right (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1510 -#, fuzzy -msgid "Right (horizontal)" -msgstr "Poziome (normalne)" - -#: src/olympusmn.cpp:1511 -#, fuzzy -msgid "Bottom-left (horizontal)" -msgstr "Dolny lewy" - -#: src/olympusmn.cpp:1512 -#, fuzzy -msgid "Bottom-center (horizontal)" -msgstr "Dolny lewy" - -#: src/olympusmn.cpp:1513 -#, fuzzy -msgid "Bottom-right (horizontal)" -msgstr "Dolny prawy" - -#: src/olympusmn.cpp:1514 -msgid "Top-left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1515 -#, fuzzy -msgid "Top-center (vertical)" -msgstr "Åšrodek" - -#: src/olympusmn.cpp:1516 -#, fuzzy -msgid "Top-right (vertical)" -msgstr "Górny prawy" - -#: src/olympusmn.cpp:1517 -msgid "Left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1518 -msgid "Mid-left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1520 -#, fuzzy -msgid "Mid-right (vertical)" -msgstr "Åšrodek-prawo" - -#: src/olympusmn.cpp:1521 -msgid "Right (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1522 -#, fuzzy -msgid "Bottom-left (vertical)" -msgstr "Dolny lewy" - -#: src/olympusmn.cpp:1523 -#, fuzzy -msgid "Bottom-center (vertical)" -msgstr "Dolny lewy" - -#: src/olympusmn.cpp:1524 -#, fuzzy -msgid "Bottom-right (vertical)" -msgstr "Dolny prawy" - -#: src/olympusmn.cpp:1561 -#, fuzzy -msgid "Single Target" -msgstr "Pojedynczy obszar" - -#: src/olympusmn.cpp:1562 -#, fuzzy -msgid "All Target" -msgstr "cel" - -#: src/olympusmn.cpp:1563 -#, fuzzy -msgid "Dynamic Single Target" -msgstr "Ustawienia trybu dynamicznego" - -#: src/panasonicmn.cpp:57 src/pentaxmn.cpp:348 src/pentaxmn.cpp:361 -msgid "Very High" -msgstr "Bardzo wysoki" - -#: src/panasonicmn.cpp:59 -msgid "Motion Picture" -msgstr "Ruchomy obraz" - -#: src/panasonicmn.cpp:67 -msgid "Halogen" -msgstr "Halogen" - -#: src/panasonicmn.cpp:79 -#, fuzzy -msgid "Auto, focus button" -msgstr "Ostrzenie automatyczne" - -#: src/panasonicmn.cpp:80 src/panasonicmn.cpp:81 -#, fuzzy -msgid "Auto, continuous" -msgstr "Gradient ciÄ…gÅ‚y" - -#: src/panasonicmn.cpp:95 -msgid "Tele-macro" -msgstr "Tele-makro" - -#: src/panasonicmn.cpp:103 -msgid "Scenery" -msgstr "Sceneria" - -#: src/panasonicmn.cpp:108 -msgid "Shutter-speed priority" -msgstr "Priorytet szybkoÅ›ci migawki" - -#: src/panasonicmn.cpp:112 -msgid "Movie preview" -msgstr "PodglÄ…d filmu" - -#: src/panasonicmn.cpp:113 -#, fuzzy -msgid "Panning" -msgstr "Åšledzenie" - -#: src/panasonicmn.cpp:114 -#, fuzzy -msgid "Simple" -msgstr "Pojedynczy" - -#: src/panasonicmn.cpp:115 -msgid "Color effects" -msgstr "Efekty kolorystyczne" - -#: src/panasonicmn.cpp:119 -msgid "Night scenery" -msgstr "Scena nocna" - -#: src/panasonicmn.cpp:121 -msgid "Baby" -msgstr "Dziecko" - -#: src/panasonicmn.cpp:122 -msgid "Soft skin" -msgstr "GÅ‚adka skóra" - -#: src/panasonicmn.cpp:123 src/pentaxmn.cpp:484 -msgid "Candlelight" -msgstr "ÅšwiatÅ‚o Å›wiecy" - -#: src/panasonicmn.cpp:124 -msgid "Starry night" -msgstr "Gwiaździste niebo" - -#: src/panasonicmn.cpp:125 -msgid "High sensitivity" -msgstr "Wysoka czuÅ‚ość" - -#: src/panasonicmn.cpp:126 -msgid "Panorama assist" -msgstr "Asystent panoramy" - -#: src/panasonicmn.cpp:129 -msgid "Aerial photo" -msgstr "Fotografia powietrzna" - -#: src/panasonicmn.cpp:132 -msgid "Intelligent ISO" -msgstr "Inteligentne ISO" - -#: src/panasonicmn.cpp:133 -msgid "High speed continuous shooting" -msgstr "CiÄ…gÅ‚e zdjÄ™cia w wysokiej czuÅ‚oÅ›ci" - -#: src/panasonicmn.cpp:134 -msgid "Intelligent auto" -msgstr "Inteligentna automatyka" - -#: src/panasonicmn.cpp:146 -msgid "Warm" -msgstr "CiepÅ‚y" - -#: src/panasonicmn.cpp:147 -msgid "Cool" -msgstr "Zimny" - -#: src/panasonicmn.cpp:155 -msgid "Low/High quality" -msgstr "Niska/Wysoka jakość" - -#: src/panasonicmn.cpp:156 -msgid "Infinite" -msgstr "NieskoÅ„czony" - -#: src/panasonicmn.cpp:164 -#, fuzzy -msgid "Medium low" -msgstr "Åšrednie niskie" - -#: src/panasonicmn.cpp:165 -#, fuzzy -msgid "Medium high" -msgstr "Åšrednie wysokie" - -#: src/panasonicmn.cpp:175 -msgid "Low (-1)" -msgstr "" - -#: src/panasonicmn.cpp:176 -#, fuzzy -msgid "High (+1)" -msgstr "Dużo" - -#: src/panasonicmn.cpp:177 -msgid "Lowest (-2)" -msgstr "" - -#: src/panasonicmn.cpp:178 -msgid "Highest (+2)" -msgstr "" - -#: src/panasonicmn.cpp:184 -msgid "10s" -msgstr "10s" - -#: src/panasonicmn.cpp:185 -msgid "2s" -msgstr "2s" - -#: src/panasonicmn.cpp:205 -msgid "EX optics" -msgstr "Optyka EX" - -#: src/panasonicmn.cpp:212 -msgid "Telephoto" -msgstr "Teleobiektyw" - -#: src/panasonicmn.cpp:219 src/properties.cpp:890 -#, fuzzy -msgid "Home" -msgstr "Rzym" - -#: src/panasonicmn.cpp:225 -msgid "Standard (color)" -msgstr "Standardowy (kolorowy)" - -#: src/panasonicmn.cpp:226 -msgid "Dynamic (color)" -msgstr "Dynamiczny (kolorowy)" - -#: src/panasonicmn.cpp:227 -msgid "Nature (color)" -msgstr "Naturalny (kolorowy)" - -#: src/panasonicmn.cpp:228 -msgid "Smooth (color)" -msgstr "GÅ‚adki (kolorowy)" - -#: src/panasonicmn.cpp:229 -msgid "Standard (B&W)" -msgstr "Standardowy (czarno-biaÅ‚y)" - -#: src/panasonicmn.cpp:230 -msgid "Dynamic (B&W)" -msgstr "Dynamiczny (czarno-biaÅ‚y)" - -#: src/panasonicmn.cpp:231 -msgid "Smooth (B&W)" -msgstr "GÅ‚adki (czarno-biaÅ‚y)" - -#: src/panasonicmn.cpp:245 -msgid "Audio" -msgstr "Audio" - -#: src/panasonicmn.cpp:248 -msgid "White balance adjustment" -msgstr "Poprawka balansu bieli" - -#: src/panasonicmn.cpp:249 -msgid "FlashBias" -msgstr "Odchylenie bÅ‚ysku" - -#: src/panasonicmn.cpp:251 src/tags.cpp:190 -msgid "Exif version" -msgstr "Wersja Exif" - -#: src/panasonicmn.cpp:253 -msgid "Color Effect" -msgstr "Efekt kolorystyczny" - -#: src/panasonicmn.cpp:253 -msgid "Color effect" -msgstr "Efekt kolorystyczny" - -#: src/panasonicmn.cpp:254 -msgid "" -"Time in 1/100 s from when the camera was powered on to when the image is " -"written to memory card" -msgstr "" -"Czas w setnych sekundy od momentu wÅ‚Ä…czenia aparatu do momentu zapisania " -"zdjÄ™cia na karcie pamiÄ™ci" - -#: src/panasonicmn.cpp:255 -msgid "Burst Mode" -msgstr "Tryb zdjęć seryjnych" - -#: src/panasonicmn.cpp:255 -msgid "Burst mode" -msgstr "Tryb zdjęć seryjnych" - -#: src/panasonicmn.cpp:258 -msgid "NoiseReduction" -msgstr "Redukcja szumów" - -#: src/panasonicmn.cpp:259 -msgid "Self Timer" -msgstr "Samowyzwalacz" - -#: src/panasonicmn.cpp:264 src/panasonicmn.cpp:286 -#, fuzzy -msgid "Baby Age" -msgstr "Dziecko" - -#: src/panasonicmn.cpp:264 src/panasonicmn.cpp:286 -msgid "Baby (or pet) age" -msgstr "" - -#: src/panasonicmn.cpp:265 -msgid "Optical Zoom Mode" -msgstr "Tryb powiÄ™kszenia optycznego" - -#: src/panasonicmn.cpp:265 -msgid "Optical zoom mode" -msgstr "Tryb powiÄ™kszenia optycznego" - -#: src/panasonicmn.cpp:266 -msgid "Conversion Lens" -msgstr "Konwerter" - -#: src/panasonicmn.cpp:266 -msgid "Conversion lens" -msgstr "Konwerter" - -#: src/panasonicmn.cpp:267 -msgid "Travel Day" -msgstr "DzieÅ„ podróży" - -#: src/panasonicmn.cpp:267 -msgid "Travel day" -msgstr "DzieÅ„ podróży" - -#: src/panasonicmn.cpp:269 -#, fuzzy -msgid "World Time Location" -msgstr "Lokalizacja zdjÄ™cia" - -#: src/panasonicmn.cpp:269 -#, fuzzy -msgid "World time location" -msgstr "Lokalizacja zdjÄ™cia" - -#: src/panasonicmn.cpp:270 -msgid "Program ISO" -msgstr "Program ISO" - -#: src/panasonicmn.cpp:274 -#, fuzzy -msgid "WB Adjust AB" -msgstr "Dopasowanie" - -#: src/panasonicmn.cpp:274 -msgid "WB adjust AB. Positive is a shift toward blue." -msgstr "" - -#: src/panasonicmn.cpp:275 -#, fuzzy -msgid "WB Adjust GM" -msgstr "Dopasowanie" - -#: src/panasonicmn.cpp:275 -msgid "WBAdjustGM. Positive is a shift toward green." -msgstr "" - -#: src/panasonicmn.cpp:278 -msgid "Accessory Type" -msgstr "Rodzaj akcesorium" - -#: src/panasonicmn.cpp:278 -msgid "Accessory type" -msgstr "Rodzaj akcesorium" - -#: src/panasonicmn.cpp:281 -msgid "MakerNote Version" -msgstr "Wersja MakerNote" - -#: src/panasonicmn.cpp:281 -msgid "MakerNote version" -msgstr "Wersja MakerNote" - -#: src/panasonicmn.cpp:283 src/panasonicmn.cpp:345 -msgid "WB Red Level" -msgstr "WB poziom czerwieni" - -#: src/panasonicmn.cpp:283 src/panasonicmn.cpp:345 -msgid "WB red level" -msgstr "WB poziom czerwieni" - -#: src/panasonicmn.cpp:284 src/panasonicmn.cpp:346 -msgid "WB Green Level" -msgstr "WB poziom zieleni" - -#: src/panasonicmn.cpp:284 src/panasonicmn.cpp:346 -msgid "WB green level" -msgstr "WB poziom zieleni" - -#: src/panasonicmn.cpp:285 src/panasonicmn.cpp:347 -msgid "WB Blue Level" -msgstr "WB poziom bÅ‚Ä™kitu" - -#: src/panasonicmn.cpp:285 src/panasonicmn.cpp:347 -msgid "WB blue level" -msgstr "WB poziom bÅ‚Ä™kitu" - -#: src/panasonicmn.cpp:288 -msgid "Unknown PanasonicMakerNote tag" -msgstr "Nieznany znacznik PanasonicMakerNote" - -#: src/panasonicmn.cpp:305 -msgid "Spot mode on" -msgstr "Tryb punktowy wÅ‚Ä…czony" - -#: src/panasonicmn.cpp:306 -msgid "Spot mode off or 3-area (high speed)" -msgstr "Tryb punktowy wyÅ‚Ä…czony lub 3-strefowy (wysoka czuÅ‚ość)" - -#: src/panasonicmn.cpp:307 -msgid "Spot focussing" -msgstr "Ostrzenie punktowe" - -#: src/panasonicmn.cpp:308 -msgid "5-area" -msgstr "5-strefowy" - -#: src/panasonicmn.cpp:309 -msgid "1-area" -msgstr "1-strefowy" - -#: src/panasonicmn.cpp:310 -msgid "1-area (high speed)" -msgstr "1-strefowy (wysoka czuÅ‚ość)" - -#: src/panasonicmn.cpp:311 -msgid "3-area (auto)" -msgstr "3-strefowy (auto)" - -#: src/panasonicmn.cpp:312 -msgid "3-area (left)" -msgstr "3-strefowy (lewa)" - -#: src/panasonicmn.cpp:313 -msgid "3-area (center)" -msgstr "3-strefowy (Å›rodek)" - -#: src/panasonicmn.cpp:314 -msgid "3-area (right)" -msgstr "3-strefowy (prawa)" - -#: src/panasonicmn.cpp:326 -msgid " EV" -msgstr " EV" - -#: src/panasonicmn.cpp:335 -msgid "Panasonic raw version" -msgstr "Wersja Panasonic raw" - -#: src/panasonicmn.cpp:336 -msgid "Sensor Width" -msgstr "Szerokość sensora" - -#: src/panasonicmn.cpp:336 -msgid "Sensor width" -msgstr "Szerokość sensora" - -#: src/panasonicmn.cpp:337 -msgid "Sensor Height" -msgstr "Wysokość sensora" - -#: src/panasonicmn.cpp:337 -msgid "Sensor height" -msgstr "Wysokość sensora" - -#: src/panasonicmn.cpp:338 -msgid "Sensor Top Border" -msgstr "Górna granica sensora" - -#: src/panasonicmn.cpp:338 -msgid "Sensor top border" -msgstr "Górna granica sensora" - -#: src/panasonicmn.cpp:339 -msgid "Sensor Left Border" -msgstr "Lewa granica sensora" - -#: src/panasonicmn.cpp:339 -msgid "Sensor left border" -msgstr "Lewa granica sensora" - -#: src/panasonicmn.cpp:342 -msgid "Red balance (found in Digilux 2 RAW images)" -msgstr "Balans czerwieni (w obrazach RAW Digilux 2)" - -#: src/panasonicmn.cpp:349 src/tags.cpp:465 -msgid "Manufacturer" -msgstr "Producent" - -#: src/panasonicmn.cpp:349 -msgid "The manufacturer of the recording equipment" -msgstr "Producent wyposażenia nagrywajÄ…cego" - -#: src/panasonicmn.cpp:350 src/properties.cpp:518 src/tags.cpp:471 -msgid "Model" -msgstr "Model" - -#: src/panasonicmn.cpp:350 -msgid "The model name or model number of the equipment" -msgstr "Nazwa lub numer modelu wyposażenia" - -#: src/panasonicmn.cpp:351 src/tags.cpp:477 -msgid "Strip Offsets" -msgstr "PrzesuniÄ™cia pasów" - -#: src/panasonicmn.cpp:351 -msgid "Strip offsets" -msgstr "PrzesuniÄ™cia pasów" - -#: src/panasonicmn.cpp:352 src/properties.cpp:485 src/tags.cpp:484 -msgid "Orientation" -msgstr "Orientacja" - -#: src/panasonicmn.cpp:353 -msgid "Rows Per Strip" -msgstr "Wierszy na pas" - -#: src/panasonicmn.cpp:353 -msgid "The number of rows per strip" -msgstr "Liczba wierszy na pas" - -#: src/panasonicmn.cpp:354 -#, fuzzy -msgid "Strip Byte Counts" -msgstr "Liczba bajtów na pas" - -#: src/panasonicmn.cpp:354 -#, fuzzy -msgid "Strip byte counts" -msgstr "Liczba bajtów na pas" - -#: src/panasonicmn.cpp:355 -msgid "Raw Data Offset" -msgstr "PrzesuniÄ™cie danych Raw" - -#: src/panasonicmn.cpp:355 -msgid "Raw data offset" -msgstr "PrzesuniÄ™cie danych Raw" - -#: src/panasonicmn.cpp:356 src/tags.cpp:790 -msgid "Exif IFD Pointer" -msgstr "Wskaźnik Exif IFD" - -#: src/panasonicmn.cpp:356 -msgid "A pointer to the Exif IFD" -msgstr "Wskaźnik do EXIF IFD" - -#: src/panasonicmn.cpp:357 src/tags.cpp:801 -msgid "GPS Info IFD Pointer" -msgstr "Wskaźnik GPS Info IFD" - -#: src/panasonicmn.cpp:357 -msgid "A pointer to the GPS Info IFD" -msgstr "Wskaźnik do GPS Info IFD" - -#: src/panasonicmn.cpp:359 -msgid "Unknown PanasonicRaw tag" -msgstr "Nieznany znacznik PanasonicRaw" - -#: src/pentaxmn.cpp:57 -msgid "Night-Scene" -msgstr "Scena nocna" - -#: src/pentaxmn.cpp:63 -msgid "Optio 330/430" -msgstr "Optio 330/430" - -#: src/pentaxmn.cpp:64 -msgid "Optio 230" -msgstr "Optio 230" - -#: src/pentaxmn.cpp:65 -msgid "Optio 330GS" -msgstr "Optio 330GS" - -#: src/pentaxmn.cpp:66 -msgid "Optio 450/550" -msgstr "Optio 450/550" - -#: src/pentaxmn.cpp:67 -msgid "Optio S" -msgstr "Optio S" - -#: src/pentaxmn.cpp:68 -msgid "*ist D" -msgstr "*ist D" - -#: src/pentaxmn.cpp:69 -msgid "Optio 33L" -msgstr "Optio 33L" - -#: src/pentaxmn.cpp:70 -msgid "Optio 33LF" -msgstr "Optio 33LF" - -#: src/pentaxmn.cpp:71 -msgid "Optio 33WR/43WR/555" -msgstr "Optio 33WR/43WR/555" - -#: src/pentaxmn.cpp:72 -msgid "Optio S4" -msgstr "Optio S4" - -#: src/pentaxmn.cpp:73 -msgid "Optio MX" -msgstr "Optio MX" - -#: src/pentaxmn.cpp:74 -msgid "Optio S40" -msgstr "Optio S40" - -#: src/pentaxmn.cpp:75 -msgid "Optio S4i" -msgstr "Optio S4i" - -#: src/pentaxmn.cpp:76 -msgid "Optio 30" -msgstr "Optio 30" - -#: src/pentaxmn.cpp:77 -msgid "Optio S30" -msgstr "Optio S30" - -#: src/pentaxmn.cpp:78 -msgid "Optio 750Z" -msgstr "Optio 750Z" - -#: src/pentaxmn.cpp:79 -msgid "Optio SV" -msgstr "Optio SV" - -#: src/pentaxmn.cpp:80 -msgid "Optio SVi" -msgstr "Optio SVi" - -#: src/pentaxmn.cpp:81 -msgid "Optio X" -msgstr "Optio X" - -#: src/pentaxmn.cpp:82 -msgid "Optio S5i" -msgstr "Optio S5i" - -#: src/pentaxmn.cpp:83 -msgid "Optio S50" -msgstr "Optio S50" - -#: src/pentaxmn.cpp:84 -msgid "*ist DS" -msgstr "*ist DS" - -#: src/pentaxmn.cpp:85 -msgid "Optio MX4" -msgstr "Optio MX4" - -#: src/pentaxmn.cpp:86 -msgid "Optio S5n" -msgstr "Optio S5n" - -#: src/pentaxmn.cpp:87 -msgid "Optio WP" -msgstr "Optio WP" - -#: src/pentaxmn.cpp:88 -msgid "Optio S55" -msgstr "Optio S55" - -#: src/pentaxmn.cpp:89 -msgid "Optio S5z" -msgstr "Optio S5z" - -#: src/pentaxmn.cpp:90 -msgid "*ist DL" -msgstr "*ist DL" - -#: src/pentaxmn.cpp:91 -msgid "Optio S60" -msgstr "Optio S60" - -#: src/pentaxmn.cpp:92 -msgid "Optio S45" -msgstr "Optio S45" - -#: src/pentaxmn.cpp:93 -msgid "Optio S6" -msgstr "Optio S6" - -#: src/pentaxmn.cpp:94 -msgid "Optio WPi" -msgstr "Optio WPi" - -#: src/pentaxmn.cpp:95 -msgid "BenQ DC X600" -msgstr "BenQ DC X600" - -#: src/pentaxmn.cpp:96 -msgid "*ist DS2" -msgstr "*ist DS2" - -#: src/pentaxmn.cpp:97 -msgid "Samsung GX-1S" -msgstr "Samsung GX-1S" - -#: src/pentaxmn.cpp:98 -msgid "Optio A10" -msgstr "Optio A10" - -#: src/pentaxmn.cpp:99 -msgid "*ist DL2" -msgstr "*ist DL2" - -#: src/pentaxmn.cpp:100 -msgid "Samsung GX-1L" -msgstr "Samsung GX-1L" - -#: src/pentaxmn.cpp:101 -msgid "K100D" -msgstr "K100D" - -#: src/pentaxmn.cpp:102 -msgid "K110D" -msgstr "K110D" - -#: src/pentaxmn.cpp:103 -msgid "K100D Super" -msgstr "K100D Super" - -#: src/pentaxmn.cpp:104 -#, fuzzy -msgid "Optio T10/T20" -msgstr "Optio T10" - -#: src/pentaxmn.cpp:105 -msgid "Optio W10" -msgstr "Optio W10" - -#: src/pentaxmn.cpp:106 -msgid "Optio M10" -msgstr "Optio M10" - -#: src/pentaxmn.cpp:107 -msgid "K10D" -msgstr "K10D" - -#: src/pentaxmn.cpp:108 -msgid "Samsung GX10" -msgstr "Samsung GX10" - -#: src/pentaxmn.cpp:109 -msgid "Optio S7" -msgstr "Optio S7" - -#: src/pentaxmn.cpp:110 -#, fuzzy -msgid "Optio L20" -msgstr "Optio 230" - -#: src/pentaxmn.cpp:111 -msgid "Optio M20" -msgstr "Optio M20" - -#: src/pentaxmn.cpp:112 -msgid "Optio W20" -msgstr "Optio W20" - -#: src/pentaxmn.cpp:113 -msgid "Optio A20" -msgstr "Optio A20" - -#: src/pentaxmn.cpp:114 -msgid "Optio M30" -msgstr "Optio M30" - -#: src/pentaxmn.cpp:115 -msgid "Optio E30" -msgstr "Optio E30" - -#: src/pentaxmn.cpp:116 -#, fuzzy -msgid "Optio E35" -msgstr "Optio E30" - -#: src/pentaxmn.cpp:117 -msgid "Optio T30" -msgstr "Optio T30" - -#: src/pentaxmn.cpp:118 -msgid "Optio W30" -msgstr "Optio W30" - -#: src/pentaxmn.cpp:119 -msgid "Optio A30" -msgstr "Optio A30" - -#: src/pentaxmn.cpp:120 -msgid "Optio E40" -msgstr "Optio E40" - -#: src/pentaxmn.cpp:121 -msgid "Optio M40" -msgstr "Optio M40" - -#: src/pentaxmn.cpp:122 -msgid "Optio Z10" -msgstr "Optio Z10" - -#: src/pentaxmn.cpp:123 -msgid "K20D" -msgstr "K20D" - -#: src/pentaxmn.cpp:124 -#, fuzzy -msgid "Samsung GX20" -msgstr "Samsung GX10" - -#: src/pentaxmn.cpp:125 -msgid "Optio S10" -msgstr "Optio S10" - -#: src/pentaxmn.cpp:126 -msgid "Optio A40" -msgstr "Optio A40" - -#: src/pentaxmn.cpp:127 -msgid "Optio V10" -msgstr "Optio V10" - -#: src/pentaxmn.cpp:128 -msgid "K200D" -msgstr "K200D" - -#: src/pentaxmn.cpp:129 -#, fuzzy -msgid "Optio S12" -msgstr "Optio S10" - -#: src/pentaxmn.cpp:130 -msgid "Optio E50" -msgstr "Optio E50" - -#: src/pentaxmn.cpp:131 -msgid "Optio M50" -msgstr "Optio M50" - -#: src/pentaxmn.cpp:132 -#, fuzzy -msgid "Optio V20" -msgstr "Optio 230" - -#: src/pentaxmn.cpp:133 -#, fuzzy -msgid "Optio W60" -msgstr "Optio S60" - -#: src/pentaxmn.cpp:134 -#, fuzzy -msgid "Optio M60" -msgstr "Optio S60" - -#: src/pentaxmn.cpp:135 -#, fuzzy -msgid "Optio E60" -msgstr "Optio S60" - -#: src/pentaxmn.cpp:136 -#, fuzzy -msgid "K2000" -msgstr "K200D" - -#: src/pentaxmn.cpp:137 -msgid "K-m" -msgstr "" - -#: src/pentaxmn.cpp:138 -#, fuzzy -msgid "Optio P70" -msgstr "Optio 750Z" - -#: src/pentaxmn.cpp:139 -#, fuzzy -msgid "Optio E70" -msgstr "Optio E30" - -#: src/pentaxmn.cpp:140 -msgid "X70" -msgstr "" - -#: src/pentaxmn.cpp:141 -#, fuzzy -msgid "K-7" -msgstr "-7" - -#: src/pentaxmn.cpp:142 -#, fuzzy -msgid "Optio W80" -msgstr "Optio W10" - -#: src/pentaxmn.cpp:143 -#, fuzzy -msgid "Optio P80" -msgstr "Optio 30" - -#: src/pentaxmn.cpp:144 -#, fuzzy -msgid "Optio WS80" -msgstr "Optio S40" - -#: src/pentaxmn.cpp:145 -msgid "K-x" -msgstr "" - -#: src/pentaxmn.cpp:146 -#, fuzzy -msgid "645D" -msgstr "64" - -#: src/pentaxmn.cpp:147 -#, fuzzy -msgid "Optio I-10" -msgstr "Optio A10" - -#: src/pentaxmn.cpp:152 -msgid "Good" -msgstr "Dobra" - -#: src/pentaxmn.cpp:153 -msgid "Better" -msgstr "Lepsza" - -#: src/pentaxmn.cpp:154 -msgid "Best" -msgstr "Najlepsza" - -#: src/pentaxmn.cpp:155 -msgid "TIFF" -msgstr "TIFF" - -#: src/pentaxmn.cpp:157 -msgid "Premium" -msgstr "Premium" - -#: src/pentaxmn.cpp:162 -msgid "640x480" -msgstr "640x480" - -#: src/pentaxmn.cpp:164 -msgid "1024x768" -msgstr "1024x768" - -#: src/pentaxmn.cpp:165 -msgid "1280x960" -msgstr "1280x960" - -#: src/pentaxmn.cpp:166 -msgid "1600x1200" -msgstr "1600x1200" - -#: src/pentaxmn.cpp:167 -msgid "2048x1536" -msgstr "2048x1536" - -#: src/pentaxmn.cpp:168 -msgid "2560x1920 or 2304x1728" -msgstr "2560x1920 lub 2304x1728" - -#: src/pentaxmn.cpp:169 -msgid "3072x2304" -msgstr "3072x2304" - -#: src/pentaxmn.cpp:170 -msgid "3264x2448" -msgstr "3264x2448" - -#: src/pentaxmn.cpp:171 -msgid "320x240" -msgstr "320x240" - -#: src/pentaxmn.cpp:172 -msgid "2288x1712" -msgstr "2288x1712" - -#: src/pentaxmn.cpp:173 -msgid "2592x1944" -msgstr "2592x1944" - -#: src/pentaxmn.cpp:174 -msgid "2304x1728 or 2592x1944" -msgstr "2304x1728 lub 2592x1944" - -#: src/pentaxmn.cpp:175 -msgid "3056x2296" -msgstr "3056x2296" - -#: src/pentaxmn.cpp:176 -msgid "2816x2212 or 2816x2112" -msgstr "2816x2212 lub 2816x2112" - -#: src/pentaxmn.cpp:177 -msgid "3648x2736" -msgstr "3648x2736" - -#: src/pentaxmn.cpp:182 -msgid "Auto, Did not fire" -msgstr "Nie, automatycznie" - -#: src/pentaxmn.cpp:184 -msgid "Auto, Did not fire, Red-eye reduction" -msgstr "Nie, automatycznie, redukcja czerwonych oczu" - -#: src/pentaxmn.cpp:185 -msgid "Auto, Fired" -msgstr "Tak, automatycznie" - -#: src/pentaxmn.cpp:187 -msgid "Auto, Fired, Red-eye reduction" -msgstr "Tak, automatycznie, redukcja czerwonych oczu" - -#: src/pentaxmn.cpp:188 -msgid "On, Red-eye reduction" -msgstr "Tak, automatycznie, redukcja czerwonych oczu" - -#: src/pentaxmn.cpp:189 -msgid "On, Wireless" -msgstr "Tak, bezprzewodowo" - -#: src/pentaxmn.cpp:190 -msgid "On, Soft" -msgstr "Tak, miÄ™kkie Å›wiatÅ‚o" - -#: src/pentaxmn.cpp:191 -msgid "On, Slow-sync" -msgstr "Tak, synchronizacja z dÅ‚ugimi czasami" - -#: src/pentaxmn.cpp:192 -msgid "On, Slow-sync, Red-eye reduction" -msgstr "Tak, synchronizacja dÅ‚ugimi czasami, redukcja czerwonych oczu" - -#: src/pentaxmn.cpp:193 -msgid "On, Trailing-curtain Sync" -msgstr "Tak, synchronizacja na otwarcie migawki" - -#: src/pentaxmn.cpp:203 -msgid "Pan Focus" -msgstr "ÅšledzÄ…ce ostrzenie" - -#: src/pentaxmn.cpp:204 -msgid "AF-S" -msgstr "AF-S" - -#: src/pentaxmn.cpp:205 -msgid "AF-C" -msgstr "AF-C" - -#: src/pentaxmn.cpp:206 -#, fuzzy -msgid "AF-A" -msgstr "AF-S" - -#: src/pentaxmn.cpp:212 -#, fuzzy -msgid "Fixed Center" -msgstr "Przytwierdzony poÅ›rodku" - -#: src/pentaxmn.cpp:213 -#, fuzzy -msgid "Automatic Tracking AF" -msgstr "Automatycznie" - -#: src/pentaxmn.cpp:214 -msgid "Face Recognition AF" -msgstr "" - -#: src/pentaxmn.cpp:231 -#, fuzzy -msgid "Fixed Center or multiple" -msgstr "Przytwierdzony poÅ›rodku" - -#: src/pentaxmn.cpp:233 -#, fuzzy -msgid "Top-center" -msgstr "Åšrodek" - -#: src/pentaxmn.cpp:239 -#, fuzzy -msgid "Bottom-center" -msgstr "Dolny lewy" - -#: src/pentaxmn.cpp:245 src/pentaxmn.cpp:267 src/pentaxmn.cpp:275 -msgid "50" -msgstr "50" - -#: src/pentaxmn.cpp:246 -msgid "64" -msgstr "64" - -#: src/pentaxmn.cpp:247 -msgid "80" -msgstr "80" - -#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:268 src/pentaxmn.cpp:277 -msgid "100" -msgstr "100" - -#: src/pentaxmn.cpp:249 -msgid "125" -msgstr "125" - -#: src/pentaxmn.cpp:250 -msgid "160" -msgstr "100" - -#: src/pentaxmn.cpp:251 src/pentaxmn.cpp:269 src/pentaxmn.cpp:270 -#: src/pentaxmn.cpp:279 -msgid "200" -msgstr "200" - -#: src/pentaxmn.cpp:252 -msgid "250" -msgstr "50" - -#: src/pentaxmn.cpp:253 -msgid "320" -msgstr "320" - -#: src/pentaxmn.cpp:254 src/pentaxmn.cpp:271 src/pentaxmn.cpp:281 -msgid "400" -msgstr "400" - -#: src/pentaxmn.cpp:255 -msgid "500" -msgstr "50" - -#: src/pentaxmn.cpp:256 -msgid "640" -msgstr "640" - -#: src/pentaxmn.cpp:257 src/pentaxmn.cpp:272 src/pentaxmn.cpp:283 -msgid "800" -msgstr "800" - -#: src/pentaxmn.cpp:258 -msgid "1000" -msgstr "1000" - -#: src/pentaxmn.cpp:259 -msgid "1250" -msgstr "1250" - -#: src/pentaxmn.cpp:260 src/pentaxmn.cpp:273 src/pentaxmn.cpp:285 -msgid "1600" -msgstr "1600" - -#: src/pentaxmn.cpp:261 -#, fuzzy -msgid "2000" -msgstr "200" - -#: src/pentaxmn.cpp:262 -#, fuzzy -msgid "2500" -msgstr "200" - -#: src/pentaxmn.cpp:263 src/pentaxmn.cpp:274 src/pentaxmn.cpp:287 -msgid "3200" -msgstr "3200" - -#: src/pentaxmn.cpp:264 -#, fuzzy -msgid "4000" -msgstr "400" - -#: src/pentaxmn.cpp:265 -#, fuzzy -msgid "5000" -msgstr "50" - -#: src/pentaxmn.cpp:266 -#, fuzzy -msgid "6400" -msgstr "400" - -#: src/pentaxmn.cpp:276 -#, fuzzy -msgid "70" -msgstr "0" - -#: src/pentaxmn.cpp:278 -#, fuzzy -msgid "140" -msgstr "+10" - -#: src/pentaxmn.cpp:280 -#, fuzzy -msgid "280" -msgstr "80" - -#: src/pentaxmn.cpp:282 -#, fuzzy -msgid "560" -msgstr "50" - -#: src/pentaxmn.cpp:284 -#, fuzzy -msgid "1100" -msgstr "100" - -#: src/pentaxmn.cpp:286 -#, fuzzy -msgid "2200" -msgstr "200" - -#: src/pentaxmn.cpp:304 -msgid "Multi Segment" -msgstr "Wielopolowy" - -#: src/pentaxmn.cpp:305 -msgid "Center Weighted" -msgstr "Centralnie ważony" - -#: src/pentaxmn.cpp:317 -#, fuzzy -msgid "DaylightFluorescent" -msgstr "Fluorescencja Å›wiatÅ‚o dzienne" - -#: src/pentaxmn.cpp:318 -#, fuzzy -msgid "DaywhiteFluorescent" -msgstr "Fluorescencja biaÅ‚a dzienna" - -#: src/pentaxmn.cpp:319 -#, fuzzy -msgid "WhiteFluorescent" -msgstr "Fluorescencja biaÅ‚a" - -#: src/pentaxmn.cpp:324 -msgid "User Selected" -msgstr "Wybrany przez użytkownika" - -#: src/pentaxmn.cpp:329 -#, fuzzy -msgid "Auto (Daylight)" -msgstr "Auto (ÅšwiatÅ‚o dzienne)" - -#: src/pentaxmn.cpp:330 -#, fuzzy -msgid "Auto (Shade)" -msgstr "Auto (CieÅ„)" - -#: src/pentaxmn.cpp:331 -msgid "Auto (Flash)" -msgstr "Auto (BÅ‚ysk)" - -#: src/pentaxmn.cpp:332 -#, fuzzy -msgid "Auto (Tungsten)" -msgstr "Auto (Lampa tungstenowa)" - -#: src/pentaxmn.cpp:333 -#, fuzzy -msgid "Auto (DaywhiteFluorescent)" -msgstr "Auto (Fluorescencja biaÅ‚a dzienna)" - -#: src/pentaxmn.cpp:334 -#, fuzzy -msgid "Auto (WhiteFluorescent)" -msgstr "Auto (Fluorescencja biaÅ‚a)" - -#: src/pentaxmn.cpp:335 -#, fuzzy -msgid "Auto (Cloudy)" -msgstr "Auto (Pochmurno)" - -#: src/pentaxmn.cpp:337 -msgid "Preset (Fireworks?)" -msgstr "Ustawienie (Fajerwerki?)" - -#: src/pentaxmn.cpp:345 src/pentaxmn.cpp:358 -#, fuzzy -msgid "Med Low" -msgstr "Niski zakres" - -#: src/pentaxmn.cpp:346 src/pentaxmn.cpp:359 -#, fuzzy -msgid "Med High" -msgstr "Wysoki zakres" - -#: src/pentaxmn.cpp:369 -#, fuzzy -msgid "Med Soft" -msgstr "MiÄ™kkie Å›wiatÅ‚o" - -#: src/pentaxmn.cpp:370 -#, fuzzy -msgid "Med Hard" -msgstr "Twarda krawÄ™dź" - -#: src/pentaxmn.cpp:371 -#, fuzzy -msgid "Very Soft" -msgstr "MiÄ™kkie Å›wiatÅ‚o" - -#: src/pentaxmn.cpp:372 -#, fuzzy -msgid "Very Hard" -msgstr "Bardzo trudne" - -#: src/pentaxmn.cpp:377 src/pentaxmn.cpp:960 -msgid "Home town" -msgstr "Miasto zamieszkania" - -#: src/pentaxmn.cpp:383 -msgid "Pago Pago" -msgstr "Pago Pago" - -#: src/pentaxmn.cpp:384 -msgid "Honolulu" -msgstr "Honolulu" - -#: src/pentaxmn.cpp:385 -msgid "Anchorage" -msgstr "Anchorage" - -#: src/pentaxmn.cpp:386 -msgid "Vancouver" -msgstr "Vancouver" - -#: src/pentaxmn.cpp:387 -msgid "San Fransisco" -msgstr "San Fransisco" - -#: src/pentaxmn.cpp:388 -msgid "Los Angeles" -msgstr "Los Angeles" - -#: src/pentaxmn.cpp:389 -msgid "Calgary" -msgstr "Calgary" - -#: src/pentaxmn.cpp:390 -msgid "Denver" -msgstr "Denver" - -#: src/pentaxmn.cpp:391 -msgid "Mexico City" -msgstr "Meksyk" - -#: src/pentaxmn.cpp:392 -msgid "Chicago" -msgstr "Chicago" - -#: src/pentaxmn.cpp:393 -msgid "Miami" -msgstr "Miami" - -#: src/pentaxmn.cpp:394 -msgid "Toronto" -msgstr "Toronto" - -#: src/pentaxmn.cpp:395 -msgid "New York" -msgstr "Nowy Jork" - -#: src/pentaxmn.cpp:396 -msgid "Santiago" -msgstr "Santiago" - -#: src/pentaxmn.cpp:397 -msgid "Caracus" -msgstr "Caracas" - -#: src/pentaxmn.cpp:398 -msgid "Halifax" -msgstr "Halifax" - -#: src/pentaxmn.cpp:399 -msgid "Buenos Aires" -msgstr "Buenos Aires" - -#: src/pentaxmn.cpp:400 -msgid "Sao Paulo" -msgstr "Sao Paulo" - -#: src/pentaxmn.cpp:401 -msgid "Rio de Janeiro" -msgstr "Rio de Janeiro" - -#: src/pentaxmn.cpp:402 -msgid "Madrid" -msgstr "Madryt" - -#: src/pentaxmn.cpp:403 -msgid "London" -msgstr "Londyn" - -#: src/pentaxmn.cpp:404 -msgid "Paris" -msgstr "Paryż" - -#: src/pentaxmn.cpp:405 -msgid "Milan" -msgstr "Mediolan" - -#: src/pentaxmn.cpp:406 -msgid "Rome" -msgstr "Rzym" - -#: src/pentaxmn.cpp:407 -msgid "Berlin" -msgstr "Berlin" - -#: src/pentaxmn.cpp:408 -msgid "Johannesburg" -msgstr "Johannesburg" - -#: src/pentaxmn.cpp:409 -msgid "Istanbul" -msgstr "StambuÅ‚" - -#: src/pentaxmn.cpp:410 -msgid "Cairo" -msgstr "Kair" - -#: src/pentaxmn.cpp:411 -msgid "Jerusalem" -msgstr "Jerozolima" - -#: src/pentaxmn.cpp:412 -msgid "Moscow" -msgstr "Moskwa" - -#: src/pentaxmn.cpp:413 -msgid "Jeddah" -msgstr "Dżudda" - -#: src/pentaxmn.cpp:414 -msgid "Tehran" -msgstr "Teheran" - -#: src/pentaxmn.cpp:415 -msgid "Dubai" -msgstr "Dubaj" - -#: src/pentaxmn.cpp:416 -msgid "Karachi" -msgstr "Karaczi" - -#: src/pentaxmn.cpp:417 -msgid "Kabul" -msgstr "Kabul" - -#: src/pentaxmn.cpp:418 -msgid "Male" -msgstr "Male" - -#: src/pentaxmn.cpp:419 -msgid "Delhi" -msgstr "Delhi" - -#: src/pentaxmn.cpp:420 -msgid "Colombo" -msgstr "Kolombo" - -#: src/pentaxmn.cpp:421 -msgid "Kathmandu" -msgstr "Katmandu" - -#: src/pentaxmn.cpp:422 -msgid "Dacca" -msgstr "Dacca" - -#: src/pentaxmn.cpp:423 -msgid "Yangon" -msgstr "Rangun" - -#: src/pentaxmn.cpp:424 -msgid "Bangkok" -msgstr "Bangkok" - -#: src/pentaxmn.cpp:425 -msgid "Kuala Lumpur" -msgstr "Kuala Lumpur" - -#: src/pentaxmn.cpp:426 -msgid "Vientiane" -msgstr "Wientian" - -#: src/pentaxmn.cpp:427 -msgid "Singapore" -msgstr "Singapur" - -#: src/pentaxmn.cpp:428 -msgid "Phnom Penh" -msgstr "Phnom Penh" - -#: src/pentaxmn.cpp:429 -msgid "Ho Chi Minh" -msgstr "Ho Chi Minh" - -#: src/pentaxmn.cpp:430 -msgid "Jakarta" -msgstr "Jakarta" - -#: src/pentaxmn.cpp:431 -msgid "Hong Kong" -msgstr "Hong Kong" - -#: src/pentaxmn.cpp:432 -msgid "Perth" -msgstr "Perth" - -#: src/pentaxmn.cpp:433 -msgid "Beijing" -msgstr "Pekin" - -#: src/pentaxmn.cpp:434 -msgid "Shanghai" -msgstr "Szanghaj" - -#: src/pentaxmn.cpp:435 -msgid "Manila" -msgstr "Manila" - -#: src/pentaxmn.cpp:436 -msgid "Taipei" -msgstr "Tajpej" - -#: src/pentaxmn.cpp:437 -msgid "Seoul" -msgstr "Seul" - -#: src/pentaxmn.cpp:438 -msgid "Adelaide" -msgstr "Adelajda" - -#: src/pentaxmn.cpp:439 -msgid "Tokyo" -msgstr "Tokio" - -#: src/pentaxmn.cpp:440 -msgid "Guam" -msgstr "Guam" - -#: src/pentaxmn.cpp:441 -msgid "Sydney" -msgstr "Sydney" - -#: src/pentaxmn.cpp:442 -msgid "Noumea" -msgstr "Numea" - -#: src/pentaxmn.cpp:443 -msgid "Wellington" -msgstr "Wellington" - -#: src/pentaxmn.cpp:444 -msgid "Auckland" -msgstr "Auckland" - -#: src/pentaxmn.cpp:445 -msgid "Lima" -msgstr "Lima" - -#: src/pentaxmn.cpp:446 -msgid "Dakar" -msgstr "Dakar" - -#: src/pentaxmn.cpp:447 -msgid "Algiers" -msgstr "Algier" - -#: src/pentaxmn.cpp:448 -msgid "Helsinki" -msgstr "Helsinki" - -#: src/pentaxmn.cpp:449 -msgid "Athens" -msgstr "Ateny" - -#: src/pentaxmn.cpp:450 -msgid "Nairobi" -msgstr "Nairobi" - -#: src/pentaxmn.cpp:451 -msgid "Amsterdam" -msgstr "Amsterdam" - -#: src/pentaxmn.cpp:452 -msgid "Stockholm" -msgstr "Sztokholm" - -#: src/pentaxmn.cpp:453 -msgid "Lisbon" -msgstr "Lizbona" - -#: src/pentaxmn.cpp:454 -#, fuzzy -msgid "Copenhagen" -msgstr "Tematyka" - -#: src/pentaxmn.cpp:459 -msgid "Unprocessed" -msgstr "Nieprzetworzony" - -#: src/pentaxmn.cpp:460 -msgid "Digital Filter" -msgstr "Filtr cyfrowy" - -#: src/pentaxmn.cpp:461 -msgid "Cropped" -msgstr "Wykadrowany" - -#: src/pentaxmn.cpp:463 -msgid "Frame Synthesis?" -msgstr "" - -#: src/pentaxmn.cpp:469 src/pentaxmn.cpp:506 -msgid "MTF Program" -msgstr "Program MTF" - -#: src/pentaxmn.cpp:475 -msgid "Night Scene Portrait" -msgstr "Portret nocny" - -#: src/pentaxmn.cpp:476 -msgid "No Flash" -msgstr "Bez bÅ‚ysku" - -#: src/pentaxmn.cpp:479 -msgid "Surf & Snow" -msgstr "Surfing i Å›nieg" - -#: src/pentaxmn.cpp:482 -msgid "Kids" -msgstr "Dzieci" - -#: src/pentaxmn.cpp:487 -#, fuzzy -msgid "Stage Lighting" -msgstr "D-Lighting" - -#: src/pentaxmn.cpp:488 -#, fuzzy -msgid "Night Snap" -msgstr "Nocne zdjÄ™cie" - -#: src/pentaxmn.cpp:490 -#, fuzzy -msgid "Auto PICT (Standard)" -msgstr "Auto (CieÅ„)" - -#: src/pentaxmn.cpp:491 -#, fuzzy -msgid "Auto PICT (Portrait)" -msgstr "Automatyczna regulacja kontrastu" - -#: src/pentaxmn.cpp:492 -#, fuzzy -msgid "Auto PICT (Landscape)" -msgstr "Edytowany (krajobraz)" - -#: src/pentaxmn.cpp:493 -msgid "Auto PICT (Macro)" -msgstr "" - -#: src/pentaxmn.cpp:494 -#, fuzzy -msgid "Auto PICT (Sport)" -msgstr "Automatyczna regulacja kontrastu" - -#: src/pentaxmn.cpp:497 src/pentaxmn.cpp:507 -#, fuzzy -msgid "Green Mode" -msgstr "Tryb zieleni" - -#: src/pentaxmn.cpp:498 src/pentaxmn.cpp:508 -msgid "Shutter Speed Priority" -msgstr "Priorytet migawki" - -#: src/pentaxmn.cpp:499 src/pentaxmn.cpp:509 -msgid "Aperture Priority" -msgstr "Priorytet przysÅ‚ony" - -#: src/pentaxmn.cpp:501 src/pentaxmn.cpp:513 -msgid "Bulb" -msgstr "Bulb" - -#: src/pentaxmn.cpp:504 -msgid "Hi-speed Program" -msgstr "Program Hi-speed" - -#: src/pentaxmn.cpp:505 -msgid "DOF Program" -msgstr "Program DOF" - -#: src/pentaxmn.cpp:510 -msgid "Program Tv Shift" -msgstr "Program Tv Shift" - -#: src/pentaxmn.cpp:511 -msgid "Program Av Shift" -msgstr "Program Av Shift" - -#: src/pentaxmn.cpp:514 -msgid "Aperture Priority (Off-Auto-Aperture)" -msgstr "Priorytet przysÅ‚ony (wyÅ‚Ä…czona automatyczna przysÅ‚ona)" - -#: src/pentaxmn.cpp:515 -msgid "Manual (Off-Auto-Aperture)" -msgstr "Manualny (wyÅ‚Ä…czona automatyczna przysÅ‚ona)" - -#: src/pentaxmn.cpp:516 -msgid "Bulb (Off-Auto-Aperture)" -msgstr "Bulb (wyÅ‚Ä…czona automatyczna przysÅ‚ona)" - -#: src/pentaxmn.cpp:518 -msgid "Shutter Priority" -msgstr "Priorytet migawki" - -#: src/pentaxmn.cpp:519 -msgid "Shutter & Aperture Priority AE" -msgstr "Priorytet migawki i przysÅ‚ony AE" - -#: src/pentaxmn.cpp:520 -msgid "Shutter & Aperture Priority AE (1)" -msgstr "Priorytet migawki i przysÅ‚ony AE (1)" - -#: src/pentaxmn.cpp:521 -msgid "Sensitivity Priority AE" -msgstr "Priorytet czuÅ‚oÅ›ci AE" - -#: src/pentaxmn.cpp:522 -msgid "Sensitivity Priority AE (1)" -msgstr "Priorytet czuÅ‚oÅ›ci AE (1)" - -#: src/pentaxmn.cpp:523 -#, fuzzy -msgid "Flash X-Sync Speed AE" -msgstr "Synchronizacja flesza Av" - -#: src/pentaxmn.cpp:524 -#, fuzzy -msgid "Flash X-Sync Speed AE (1)" -msgstr "Synchronizacja flesza Av" - -#: src/pentaxmn.cpp:527 -msgid "Video (30 fps)" -msgstr "" - -#: src/pentaxmn.cpp:528 -msgid "Video (24 fps)" -msgstr "" - -#: src/pentaxmn.cpp:535 -#, fuzzy -msgid "Continuous (Hi)" -msgstr "CiÄ…gÅ‚y (Hi)" - -#: src/pentaxmn.cpp:536 src/sonymn.cpp:223 -msgid "Burst" -msgstr "Seria" - -#: src/pentaxmn.cpp:538 -msgid "Self-timer (12 sec)" -msgstr "Samowyzwalacz (12 s)" - -#: src/pentaxmn.cpp:539 -msgid "Self-timer (2 sec)" -msgstr "Samowyzwalacz (2 s)" - -#: src/pentaxmn.cpp:540 -msgid "Remote Control (3 sec)" -msgstr "Sterowanie podczerwieniÄ… (3 s)" - -#: src/pentaxmn.cpp:541 -msgid "Remote Control" -msgstr "Sterowanie podczerwieniÄ…" - -#: src/pentaxmn.cpp:543 src/properties.cpp:883 -#, fuzzy -msgid "Video" -msgstr "Szeroki" - -#: src/pentaxmn.cpp:554 -msgid "M-42 or No Lens" -msgstr "M-42 lub brak obiektywu" - -#: src/pentaxmn.cpp:555 -msgid "K,M Lens" -msgstr "Obiektyw K,M" - -#: src/pentaxmn.cpp:556 -msgid "A Series Lens" -msgstr "Obiektyw serii A" - -#: src/pentaxmn.cpp:703 -msgid "Bright" -msgstr "Jasny" - -#: src/pentaxmn.cpp:706 -msgid "Vibrant" -msgstr "Jaskrawy" - -#: src/pentaxmn.cpp:708 -msgid "Reversal film" -msgstr "" - -#: src/pentaxmn.cpp:720 -#, fuzzy -msgid "Weakest" -msgstr "NajsÅ‚absze" - -#: src/pentaxmn.cpp:721 -msgid "Weak" -msgstr "SÅ‚abe" - -#: src/pentaxmn.cpp:722 -msgid "Strong" -msgstr "Silne" - -#: src/pentaxmn.cpp:832 -msgid "No extended bracketing" -msgstr "" - -#: src/pentaxmn.cpp:838 -msgid "WB-BA" -msgstr "WB-BA" - -#: src/pentaxmn.cpp:841 -msgid "WB-GM" -msgstr "WB-GM" - -#: src/pentaxmn.cpp:853 -msgid "Unknown " -msgstr "Nieznane" - -#: src/pentaxmn.cpp:866 -msgid "Pentax Makernote version" -msgstr "Wersja Pentax Makernote" - -#: src/pentaxmn.cpp:869 -msgid "Camera shooting mode" -msgstr "Tryb pracy aparatu" - -#: src/pentaxmn.cpp:871 src/pentaxmn.cpp:872 -msgid "Resolution of a preview image" -msgstr "Rozdzielczość obrazu podglÄ…du" - -#: src/pentaxmn.cpp:874 -msgid "Length of a preview image" -msgstr "DÅ‚ugość obrazu podglÄ…du" - -#: src/pentaxmn.cpp:875 -msgid "Size of an IFD containing a preview image" -msgstr "Rozmiar IFD zawierajÄ…cego obrazu podglÄ…du" - -#: src/pentaxmn.cpp:880 -msgid "Model identification" -msgstr "Identyfikacja modelu" - -#: src/pentaxmn.cpp:881 -msgid "Pentax model idenfication" -msgstr "Identyfikacja modelu Pentax" - -#: src/pentaxmn.cpp:883 src/pentaxmn.cpp:884 src/properties.cpp:150 -msgid "Date" -msgstr "Data" - -#: src/pentaxmn.cpp:886 src/pentaxmn.cpp:887 -msgid "Time" -msgstr "Czas" - -#: src/pentaxmn.cpp:890 -msgid "Image quality settings" -msgstr "Ustawienia jakoÅ›ci obrazu" - -#: src/pentaxmn.cpp:893 -msgid "Image size settings" -msgstr "Ustawienia rozmiaru obrazu" - -#: src/pentaxmn.cpp:897 -msgid "Flash mode settings" -msgstr "Ustawienia trybu flesza" - -#: src/pentaxmn.cpp:900 -msgid "Focus mode settings" -msgstr "Ustawienia trybu ostrzenia" - -#: src/pentaxmn.cpp:903 -msgid "Selected AF point" -msgstr "Wybrany punkt AF" - -#: src/pentaxmn.cpp:905 src/pentaxmn.cpp:906 -#, fuzzy -msgid "AF point in focus" -msgstr "Użyte punkty AF" - -#: src/pentaxmn.cpp:912 src/pentaxmn.cpp:913 -msgid "F-Number" -msgstr "Liczba F" - -#: src/pentaxmn.cpp:915 -msgid "ISO sensitivity" -msgstr "CzuÅ‚ość ISO" - -#: src/pentaxmn.cpp:916 -msgid "ISO sensitivity settings" -msgstr "Ustawienia czuÅ‚oÅ›ci ISO" - -#: src/pentaxmn.cpp:923 src/pentaxmn.cpp:924 -msgid "MeteringMode" -msgstr "Tryb pomiaru" - -#: src/pentaxmn.cpp:926 src/pentaxmn.cpp:927 -msgid "AutoBracketing" -msgstr "Auto bracketing" - -#: src/pentaxmn.cpp:929 src/pentaxmn.cpp:930 -msgid "White ballance" -msgstr "Balans bieli" - -#: src/pentaxmn.cpp:932 src/pentaxmn.cpp:933 -msgid "White ballance mode" -msgstr "Tryb balansu bieli" - -#: src/pentaxmn.cpp:936 -#, fuzzy -msgid "Blue color balance" -msgstr "Balans niebieskiego" - -#: src/pentaxmn.cpp:939 -#, fuzzy -msgid "Red color balance" -msgstr "Balans kolorów" - -#: src/pentaxmn.cpp:941 src/pentaxmn.cpp:942 -msgid "FocalLength" -msgstr "DÅ‚ugość ogniskowej" - -#: src/pentaxmn.cpp:956 src/pentaxmn.cpp:957 src/properties.cpp:657 -msgid "Location" -msgstr "PoÅ‚ożenie" - -#: src/pentaxmn.cpp:959 -#, fuzzy -msgid "Hometown" -msgstr "Miasto" - -#: src/pentaxmn.cpp:965 -msgid "Hometown DST" -msgstr "Miasto - czas letni" - -#: src/pentaxmn.cpp:966 -msgid "Whether day saving time is active in home town" -msgstr "OkreÅ›la czy czas letni jest aktywny w mieÅ›cie" - -#: src/pentaxmn.cpp:968 -msgid "Destination DST" -msgstr "Cel - czas letni" - -#: src/pentaxmn.cpp:969 -msgid "Whether day saving time is active in destination" -msgstr "OkreÅ›la czy czas letni jest aktywny w celu" - -#: src/pentaxmn.cpp:971 src/pentaxmn.cpp:972 -msgid "DSPFirmwareVersion" -msgstr "Wersja firmware DSP" - -#: src/pentaxmn.cpp:974 src/pentaxmn.cpp:975 -msgid "CPUFirmwareVersion" -msgstr "Wersja firmware CPU" - -#: src/pentaxmn.cpp:981 -msgid "Light value" -msgstr "Wartość Å›wiatÅ‚a" - -#: src/pentaxmn.cpp:982 -msgid "Camera calculated light value, includes exposure compensation" -msgstr "" -"Wartość Å›wiatÅ‚a obliczona przez aparat, uwzglÄ™dnia kompensacjÄ™ ekspozycji" - -#: src/pentaxmn.cpp:998 src/pentaxmn.cpp:999 -#, fuzzy -msgid "Image area offset" -msgstr "Rozmiar danych obrazu" - -#: src/pentaxmn.cpp:1001 src/pentaxmn.cpp:1002 -#, fuzzy -msgid "Raw image size" -msgstr "Rozmiar obrazu" - -#: src/pentaxmn.cpp:1005 src/pentaxmn.cpp:1006 -msgid "Preview image borders" -msgstr "Granice obrazu podglÄ…du" - -#: src/pentaxmn.cpp:1011 src/pentaxmn.cpp:1012 -msgid "Sensitivity adjust" -msgstr "Poprawka czuÅ‚oÅ›ci" - -#: src/pentaxmn.cpp:1014 src/pentaxmn.cpp:1015 -msgid "Digital filter" -msgstr "Filtr cyfrowy" - -#: src/pentaxmn.cpp:1019 -msgid "Camera temperature" -msgstr "Temperatura aparatu" - -#: src/pentaxmn.cpp:1032 src/pentaxmn.cpp:1033 -msgid "Image tone" -msgstr "Tonacja obrazu" - -#: src/pentaxmn.cpp:1035 src/pentaxmn.cpp:1036 -msgid "Colort temperature" -msgstr "Temperatura koloru" - -#: src/pentaxmn.cpp:1039 -msgid "Shake reduction" -msgstr "Redukcja wstrzÄ…sów" - -#: src/pentaxmn.cpp:1040 -msgid "Shake reduction information" -msgstr "Informacja o redukcji wstrzÄ…sów" - -#: src/pentaxmn.cpp:1045 src/pentaxmn.cpp:1046 -msgid "Dynamic range expansion" -msgstr "Rozszerzenie dynamiczny zakresu" - -#: src/pentaxmn.cpp:1048 src/pentaxmn.cpp:1049 -msgid "High ISO noise reduction" -msgstr "Redukcja szumów przy dÅ‚ugiej ekspozycji" - -#: src/pentaxmn.cpp:1051 src/pentaxmn.cpp:1052 -#, fuzzy -msgid "AF Adjustment" -msgstr "Dopasowanie odcieni" - -#: src/pentaxmn.cpp:1055 src/pentaxmn.cpp:1056 -msgid "Black point" -msgstr "Punkt czerni" - -#: src/pentaxmn.cpp:1058 src/pentaxmn.cpp:1059 -msgid "White point" -msgstr "Punkt bieli" - -#: src/pentaxmn.cpp:1062 src/pentaxmn.cpp:1063 -#, fuzzy -msgid "ShotInfo" -msgstr "Informacje o zdjÄ™ciu" - -#: src/pentaxmn.cpp:1065 src/pentaxmn.cpp:1066 -msgid "AEInfo" -msgstr "Informacja o automatycznej ekspozycji" - -#: src/pentaxmn.cpp:1068 src/pentaxmn.cpp:1069 -msgid "LensInfo" -msgstr "Informacja o obiektywie" - -#: src/pentaxmn.cpp:1071 src/pentaxmn.cpp:1072 -msgid "FlashInfo" -msgstr "Informacja o fleszu" - -#: src/pentaxmn.cpp:1074 src/pentaxmn.cpp:1075 -msgid "AEMeteringSegments" -msgstr "Pola Pomiaru AE" - -#: src/pentaxmn.cpp:1077 src/pentaxmn.cpp:1078 -#, fuzzy -msgid "FlashADump" -msgstr "Kompensacja bÅ‚ysku" - -#: src/pentaxmn.cpp:1080 src/pentaxmn.cpp:1081 -#, fuzzy -msgid "FlashBDump" -msgstr "Kompensacja bÅ‚ysku" - -#: src/pentaxmn.cpp:1084 src/pentaxmn.cpp:1085 -#, fuzzy -msgid "WB_RGGBLevelsDaylight" -msgstr "Poziomy balansu bieli RGGB" - -#: src/pentaxmn.cpp:1087 src/pentaxmn.cpp:1088 -#, fuzzy -msgid "WB_RGGBLevelsShade" -msgstr "Poziomy balansu bieli RGGB" - -#: src/pentaxmn.cpp:1090 src/pentaxmn.cpp:1091 -#, fuzzy -msgid "WB_RGGBLevelsCloudy" -msgstr "Poziomy balansu bieli RGGB" - -#: src/pentaxmn.cpp:1093 src/pentaxmn.cpp:1094 -#, fuzzy -msgid "WB_RGGBLevelsTungsten" -msgstr "Poziomy balansu bieli RGGB" - -#: src/pentaxmn.cpp:1096 src/pentaxmn.cpp:1097 -#, fuzzy -msgid "WB_RGGBLevelsFluorescentD" -msgstr "Fluorescencja biaÅ‚a" - -#: src/pentaxmn.cpp:1099 src/pentaxmn.cpp:1100 -#, fuzzy -msgid "WB_RGGBLevelsFluorescentN" -msgstr "Fluorescencja biaÅ‚a" - -#: src/pentaxmn.cpp:1102 src/pentaxmn.cpp:1103 -#, fuzzy -msgid "WB_RGGBLevelsFluorescentW" -msgstr "Fluorescencja biaÅ‚a" - -#: src/pentaxmn.cpp:1105 src/pentaxmn.cpp:1106 -#, fuzzy -msgid "WB_RGGBLevelsFlash" -msgstr "Poziomy balansu bieli RGGB" - -#: src/pentaxmn.cpp:1108 src/pentaxmn.cpp:1109 -msgid "CameraInfo" -msgstr "Informacja o aparacie" - -#: src/pentaxmn.cpp:1111 src/pentaxmn.cpp:1112 -msgid "BatteryInfo" -msgstr "Informacja o baterii" - -#: src/pentaxmn.cpp:1114 src/pentaxmn.cpp:1115 -msgid "AFInfo" -msgstr "Tryb ogniskowania" - -#: src/pentaxmn.cpp:1117 src/pentaxmn.cpp:1118 -msgid "ColorInfo" -msgstr "Informacja o kolorze" - -#: src/pentaxmn.cpp:1125 -msgid "Unknown PentaxMakerNote tag" -msgstr "Nieznany znacznik PentaxMakerNote" - -#: src/properties.cpp:102 -msgid "Dublin Core schema" -msgstr "Schemat Dublin Core" - -#: src/properties.cpp:103 -msgid "digiKam Photo Management schema" -msgstr "Schemat digiKam Photo Management" - -#: src/properties.cpp:104 -msgid "KDE Image Program Interface schema" -msgstr "" - -#: src/properties.cpp:105 -msgid "XMP Basic schema" -msgstr "Schemat Basic XMP" - -#: src/properties.cpp:106 -msgid "XMP Rights Management schema" -msgstr "Schemat XMP Rights Management" - -#: src/properties.cpp:107 -msgid "XMP Media Management schema" -msgstr "Schemat XMP Media Management" - -#: src/properties.cpp:108 -msgid "XMP Basic Job Ticket schema" -msgstr "Schemat XMP Basic Job Ticket" - -#: src/properties.cpp:109 -msgid "XMP Paged-Text schema" -msgstr "Schemat XMP Paged-Text" - -#: src/properties.cpp:110 -msgid "XMP Dynamic Media schema" -msgstr "Schemat XMP Dynamic Media" - -#: src/properties.cpp:111 -msgid "Microsoft Photo schema" -msgstr "Schemat Microsoft Photo" - -#: src/properties.cpp:112 -msgid "Adobe PDF schema" -msgstr "Schemat Adobe PDF" - -#: src/properties.cpp:113 -msgid "Adobe photoshop schema" -msgstr "Schemat Adobe Photoshop" - -#: src/properties.cpp:114 -msgid "Camera Raw schema" -msgstr "Schemat Camera RAW" - -#: src/properties.cpp:115 -msgid "Exif Schema for TIFF Properties" -msgstr "Schemat Exif dla wÅ‚aÅ›ciwoÅ›ci TIFF" - -#: src/properties.cpp:116 -msgid "Exif schema for Exif-specific Properties" -msgstr "Schemat Exif dla wÅ‚aÅ›ciwoÅ›ci specyficznych dla Exif" - -#: src/properties.cpp:117 -msgid "Exif schema for Additional Exif Properties" -msgstr "Schemat Exif dla dodatkowych wÅ‚aÅ›ciwoÅ›ci TIFF" - -#: src/properties.cpp:118 src/properties.cpp:119 -msgid "IPTC Core schema" -msgstr "Schemat IPTC Core" - -#: src/properties.cpp:120 src/properties.cpp:121 -msgid "IPTC Extension schema" -msgstr "Schemat IPTC Extension" - -#: src/properties.cpp:122 -msgid "PLUS License Data Format schema" -msgstr "Schemat PLUS License Data Format" - -#: src/properties.cpp:123 -#, fuzzy -msgid "iView Media Pro schema" -msgstr "Schemat XMP Dynamic Media" - -#: src/properties.cpp:124 -#, fuzzy -msgid "Expression Media schema" -msgstr "Schemat IPTC Extension" - -#: src/properties.cpp:125 -#, fuzzy -msgid "Microsoft Photo 1.2 schema" -msgstr "Schemat Microsoft Photo" - -#: src/properties.cpp:126 -#, fuzzy -msgid "Microsoft Photo RegionInfo schema" -msgstr "Schemat Microsoft Photo" - -#: src/properties.cpp:127 -#, fuzzy -msgid "Microsoft Photo Region schema" -msgstr "Schemat Microsoft Photo" - -#: src/properties.cpp:128 -msgid "Metadata Working Group Regions schema" -msgstr "" - -#: src/properties.cpp:131 -msgid "Colorant structure" -msgstr "Struktura barwnika" - -#: src/properties.cpp:132 -msgid "Dimensions structure" -msgstr "Struktura wymiarów" - -#: src/properties.cpp:133 -msgid "Font structure" -msgstr "Struktura czcionki" - -#: src/properties.cpp:134 -msgid "Thumbnail structure" -msgstr "Struktura miniatury" - -#: src/properties.cpp:135 -#, fuzzy -msgid "Resource Event structure" -msgstr "Struktura kolekcji" - -#: src/properties.cpp:136 -#, fuzzy -msgid "ResourceRef structure" -msgstr "Struktura kolekcji" - -#: src/properties.cpp:137 -msgid "Version structure" -msgstr "Struktura wersji" - -#: src/properties.cpp:138 -#, fuzzy -msgid "Basic Job/Workflow structure" -msgstr "Struktura sposobu pracy" - -#: src/properties.cpp:139 -#, fuzzy -msgid "Area structure" -msgstr "Struktura barwnika" - -#: src/properties.cpp:142 -#, fuzzy -msgid "Qualifier for xmp:Identifier" -msgstr "Kwalifikator dla xmp:Identifier" - -#: src/properties.cpp:146 -msgid "Contributor" -msgstr "Współpraca" - -#: src/properties.cpp:146 -msgid "Contributors to the resource (other than the authors)." -msgstr "" -"Współpracownicy i inne osoby które przyczyniÅ‚y siÄ™ do powstania zasobu (inne " -"niż autorzy)." - -#: src/properties.cpp:147 -msgid "Coverage" -msgstr "Tematyka" - -#: src/properties.cpp:147 -msgid "" -"The spatial or temporal topic of the resource, the spatial applicability of " -"the resource, or the jurisdiction under which the resource is relevant." -msgstr "" - -#: src/properties.cpp:149 -msgid "Creator" -msgstr "Autor" - -#: src/properties.cpp:149 -msgid "" -"The authors of the resource (listed in order of precedence, if significant)." -msgstr "" -"Autor(zy) zasobu (wymienieni w kolejnoÅ›ci ich ważnoÅ›ci, jeÅ›li to ma " -"znaczenie)." - -#: src/properties.cpp:150 -msgid "Date(s) that something interesting happened to the resource." -msgstr "Data (daty) kiedy zdarzyÅ‚o siÄ™ coÅ› interesujÄ…cego w zwiÄ…zku z zasobem." - -#: src/properties.cpp:151 -msgid "" -"A textual description of the content of the resource. Multiple values may be " -"present for different languages." -msgstr "" -"Tekstowy opis zawartoÅ›ci zasobu. Może zawierać wiele wartoÅ›ci dla różnych " -"jÄ™zyków." - -#: src/properties.cpp:153 -msgid "Format" -msgstr "Format" - -#: src/properties.cpp:153 -msgid "" -"The file format used when saving the resource. Tools and applications should " -"set this property to the save format of the data. It may include appropriate " -"qualifiers." -msgstr "" -"Format pliku użyty do zapisu zasobu. NarzÄ™dzia i aplikacje powinny ustawiać " -"tÄ… wÅ‚aÅ›ciwość na format zapisu danych. Może zawierać odpowiednie " -"kwalifikatory." - -#: src/properties.cpp:155 src/properties.cpp:210 -msgid "Identifier" -msgstr "Identyfikator" - -#: src/properties.cpp:155 -msgid "" -"Unique identifier of the resource. Recommended best practice is to identify " -"the resource by means of a string conforming to a formal identification " -"system." -msgstr "" -"Unikalny identyfikator zasobu. Zalecane jest identyfikowanie zasobu za " -"pomocÄ… wyrażeÅ„ zgodnych z konwencjonalnym systemem identyfikacji." - -#: src/properties.cpp:157 -msgid "An unordered array specifying the languages used in the resource." -msgstr "NieuporzÄ…dkowana tablica okreÅ›lajÄ…ca jÄ™zyki użyte w zasobie." - -#: src/properties.cpp:158 -msgid "Publisher" -msgstr "Wydawca" - -#: src/properties.cpp:158 -#, fuzzy -msgid "" -"An entity responsible for making the resource available. Examples of a " -"Publisher include a person, an organization, or a service. Typically, the " -"name of a Publisher should be used to indicate the entity." -msgstr "" -"Organ odpowiedzialny za udostÄ™pnienie zasobu. PrzykÅ‚adowo może zawierać " -"osobÄ™, organizacjÄ™ lub usÅ‚ugÄ™. Zazwyczaj podaje siÄ™ nazwÄ™ wydawcy." - -#: src/properties.cpp:161 -msgid "Relation" -msgstr "PowiÄ…zanie" - -#: src/properties.cpp:161 -#, fuzzy -msgid "" -"Relationships to other documents. Recommended best practice is to identify " -"the related resource by means of a string conforming to a formal " -"identification system." -msgstr "" -"Unikalny identyfikator zasobu. Zalecane jest identyfikowanie zasobu za " -"pomocÄ… wyrażeÅ„ zgodnych z konwencjonalnym systemem identyfikacji." - -#: src/properties.cpp:163 -#, fuzzy -msgid "Rights" -msgstr "WÅ‚asność" - -#: src/properties.cpp:163 -msgid "" -"Informal rights statement, selected by language. Typically, rights " -"information includes a statement about various property rights associated " -"with the resource, including intellectual property rights." -msgstr "" - -#: src/properties.cpp:166 -msgid "Unique identifier of the work from which this resource was derived." -msgstr "Unikalny identyfikator pracy, z której pochodzi ten zasób." - -#: src/properties.cpp:167 -msgid "" -"An unordered array of descriptive phrases or keywords that specify the topic " -"of the content of the resource." -msgstr "" - -#: src/properties.cpp:169 -msgid "Title" -msgstr "TytuÅ‚" - -#: src/properties.cpp:169 -msgid "" -"The title of the document, or the name given to the resource. Typically, it " -"will be a name by which the resource is formally known." -msgstr "" -"TytuÅ‚ dokumentu lub nazwa nadana zasobowi. Zazwyczaj bÄ™dzie to nazwa pod " -"którÄ… zasób jest oficjalnie znany." - -#: src/properties.cpp:171 src/properties.cpp:979 -msgid "Type" -msgstr "Typ" - -#: src/properties.cpp:171 -msgid "A document type; for example, novel, poem, or working paper." -msgstr "Typ dokumentu, na przykÅ‚ad: powieść, wiersz, dokument techniczny." - -#: src/properties.cpp:177 -msgid "Tags List" -msgstr "Lista znaczników" - -#: src/properties.cpp:177 -msgid "" -"The list of complete tags path as string. The path hierarchy is separated by " -"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." -msgstr "" - -#: src/properties.cpp:178 -#, fuzzy -msgid "Captions Author Names" -msgstr "Nazwa paÅ„stwa" - -#: src/properties.cpp:178 -msgid "" -"The list of all captions author names for each language alternative captions " -"set in standard XMP tags." -msgstr "" - -#: src/properties.cpp:179 -#, fuzzy -msgid "Captions Date Time Stamps" -msgstr "Aktualizacja znacznika czasu" - -#: src/properties.cpp:179 -msgid "" -"The list of all captions date time stamps for each language alternative " -"captions set in standard XMP tags." -msgstr "" - -#: src/properties.cpp:180 src/tags.cpp:837 -#, fuzzy -msgid "Image History" -msgstr "Wysokość obrazu" - -#: src/properties.cpp:180 -msgid "" -"An XML based content to list all action processed on this image with image " -"editor (as crop, rotate, color corrections, adjustements, etc.)." -msgstr "" - -#: src/properties.cpp:181 -#, fuzzy -msgid "Lens Correction Settings" -msgstr "Ustawienia danych obiektywu" - -#: src/properties.cpp:181 -msgid "" -"The list of Lens Correction tools settings used to fix lens distorsion. This " -"include Batch Queue Manager and Image editor tools based on LensFun library." -msgstr "" - -#: src/properties.cpp:182 -#, fuzzy -msgid "Color Label" -msgstr "PrzestrzeÅ„ kolorów" - -#: src/properties.cpp:182 -msgid "" -"The color label assigned to this item. Possible values are \"0\": no label; " -"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " -"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." -msgstr "" - -#: src/properties.cpp:183 -#, fuzzy -msgid "Pick Label" -msgstr "Etykieta" - -#: src/properties.cpp:183 -msgid "" -"The pick label assigned to this item. Possible values are \"0\": no label; " -"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " -"accepted." -msgstr "" - -#: src/properties.cpp:189 -msgid "Enfuse Input Files" -msgstr "" - -#: src/properties.cpp:189 -msgid "" -"The list of files processed with Enfuse program through ExpoBlending tool." -msgstr "" - -#: src/properties.cpp:190 -#, fuzzy -msgid "Enfuse Settings" -msgstr "Ustawienie odcieni" - -#: src/properties.cpp:190 -msgid "" -"The list of Enfuse settings used to blend image stack with ExpoBlending tool." -msgstr "" - -#: src/properties.cpp:191 -msgid "PicasaWeb Item ID" -msgstr "" - -#: src/properties.cpp:191 -msgid "Item ID from PicasaWeb web service." -msgstr "" - -#: src/properties.cpp:192 -msgid "Yandex Fotki Item ID" -msgstr "" - -#: src/properties.cpp:192 -msgid "Item ID from Yandex Fotki web service." -msgstr "" - -#: src/properties.cpp:198 -#, fuzzy -msgid "Advisory" -msgstr "Pomocniczy" - -#: src/properties.cpp:198 -msgid "" -"An unordered array specifying properties that were edited outside the " -"authoring application. Each item should contain a single namespace and XPath " -"separated by one ASCII space (U+0020)." -msgstr "" - -#: src/properties.cpp:201 -msgid "Base URL" -msgstr "Bazowy URL" - -#: src/properties.cpp:201 -msgid "" -"The base URL for relative URLs in the document content. If this document " -"contains Internet links, and those links are relative, they are relative to " -"this base URL. This property provides a standard way for embedded relative " -"URLs to be interpreted by tools. Web authoring tools should set the value " -"based on their notion of where URLs will be interpreted." -msgstr "" - -#: src/properties.cpp:206 -msgid "Create Date" -msgstr "Data utworzenia" - -#: src/properties.cpp:206 -#, fuzzy -msgid "The date and time the resource was originally created." -msgstr "Data i czas zapisania obrazu jako danych cyfrowych." - -#: src/properties.cpp:207 -msgid "Creator Tool" -msgstr "NarzÄ™dzie tworzÄ…ce" - -#: src/properties.cpp:207 -msgid "" -"The name of the first known tool used to create the resource. If history is " -"present in the metadata, this value should be equivalent to that of xmpMM:" -"History's softwareAgent property." -msgstr "" -"Nazwa pierwszego znanego narzÄ™dzia użytego do utworzenia zasobu. JeÅ›li w " -"metadanych jest zawarta historia, wartość ta powinna być równa wÅ‚aÅ›ciwoÅ›ci " -"xmpMM:History's softwareAgent." - -#: src/properties.cpp:210 -msgid "" -"An unordered array of text strings that unambiguously identify the resource " -"within a given context. An array item may be qualified with xmpidq:Scheme to " -"denote the formal identification system to which that identifier conforms. " -"Note: The dc:identifier property is not used because it lacks a defined " -"scheme qualifier and has been defined in the XMP Specification as a simple " -"(single-valued) property." -msgstr "" - -#: src/properties.cpp:215 -msgid "Label" -msgstr "Etykieta" - -#: src/properties.cpp:215 -msgid "" -"A word or short phrase that identifies a document as a member of a user-" -"defined collection. Used to organize documents in a file browser." -msgstr "" -"SÅ‚owo lub krótkie wyrażenie, które okreÅ›la dokument jako skÅ‚adnik kolekcji " -"(grupy) zdefiniowanej przez użytkownika. Jest to pomocne do porzÄ…dkowania " -"dokumentów w przeglÄ…darce plików." - -#: src/properties.cpp:217 -msgid "Metadata Date" -msgstr "Data metadanych" - -#: src/properties.cpp:217 -msgid "" -"The date and time that any metadata for this resource was last changed. It " -"should be the same as or more recent than xmp:ModifyDate." -msgstr "" -"Data i czas kiedy metadane tego zasobu zostaÅ‚y ostatnio zmienione. Powinny " -"być takie same lub mÅ‚odsze niż te w xmp:ModifyDate." - -#: src/properties.cpp:219 -msgid "Modify Date" -msgstr "Data modyfikacji" - -#: src/properties.cpp:219 -msgid "" -"The date and time the resource was last modified. Note: The value of this " -"property is not necessarily the same as the file's system modification date " -"because it is set before the file is saved." -msgstr "" -"Data i czas kiedy zasób byÅ‚ ostatnio zmodyfikowany. Uwaga: wartość ta nie " -"musi być taka sama jak systemowa data modyfikacji pliku, ponieważ jest ona " -"ustawiana przed zapisem pliku." - -#: src/properties.cpp:222 -msgid "Nickname" -msgstr "Pseudonim" - -#: src/properties.cpp:222 -msgid "A short informal name for the resource." -msgstr "Krótka nazwa zasobu." - -#: src/properties.cpp:223 -msgid "Rating" -msgstr "Ocena" - -#: src/properties.cpp:223 -msgid "" -"A number that indicates a document's status relative to other documents, " -"used to organize documents in a file browser. Values are user-defined within " -"an application-defined range." -msgstr "" - -#: src/properties.cpp:226 -msgid "Thumbnails" -msgstr "Miniatury" - -#: src/properties.cpp:226 -#, fuzzy -msgid "" -"An alternative array of thumbnail images for a file, which can differ in " -"characteristics such as size or image encoding." -msgstr "" -"Alternatywna tablica obrazów miniatur dla pliku, które mogÄ… różnić siÄ™ " -"swoimi charakterystykami, np. rozmiarem lub kodowaniem obrazu." - -#: src/properties.cpp:233 -msgid "Certificate" -msgstr "Certyfikat" - -#: src/properties.cpp:233 -#, fuzzy -msgid "Online rights management certificate." -msgstr "Certyfikat praw zarzÄ…dzania online." - -#: src/properties.cpp:234 -msgid "Marked" -msgstr "Zaznaczone" - -#: src/properties.cpp:234 -#, fuzzy -msgid "Indicates that this is a rights-managed resource." -msgstr "Data (daty) kiedy zdarzyÅ‚o siÄ™ coÅ› interesujÄ…cego w zwiÄ…zku z zasobem." - -#: src/properties.cpp:235 -msgid "Owner" -msgstr "WÅ‚aÅ›ciciel" - -#: src/properties.cpp:235 -msgid "An unordered array specifying the legal owner(s) of a resource." -msgstr "" -"NieuporzÄ…dkowana tablica okreÅ›lajÄ…ca prawnego wÅ‚aÅ›ciciela (wÅ‚aÅ›cicieli) " -"zasobu." - -#: src/properties.cpp:236 -msgid "Usage Terms" -msgstr "Warunki użytkowania" - -#: src/properties.cpp:236 -msgid "Text instructions on how a resource can be legally used." -msgstr "Instrukcje tekstowe o sposobie legalnego użycia zasobu." - -#: src/properties.cpp:237 -msgid "Web Statement" -msgstr "Strona oÅ›wiadczenia" - -#: src/properties.cpp:237 -msgid "" -"The location of a web page describing the owner and/or rights statement for " -"this resource." -msgstr "" -"Lokalizacja strony internetowej okreÅ›lajÄ…cej prawa użytkowania i wÅ‚aÅ›ciciela " -"tego zasobu." - -#: src/properties.cpp:243 -msgid "Derived From" -msgstr "Pochodzenie" - -#: src/properties.cpp:243 -msgid "" -"A reference to the original document from which this one is derived. It is a " -"minimal reference; missing components can be assumed to be unchanged. For " -"example, a new version might only need to specify the instance ID and " -"version number of the previous version, or a rendition might only need to " -"specify the instance ID and rendition class of the original." -msgstr "" - -#: src/properties.cpp:248 -msgid "Document ID" -msgstr "Identyfikator dokumentu" - -#: src/properties.cpp:248 -msgid "" -"The common identifier for all versions and renditions of a document. It " -"should be based on a UUID; see Document and Instance IDs below." -msgstr "" - -#: src/properties.cpp:250 -msgid "History" -msgstr "Historia" - -#: src/properties.cpp:250 -msgid "" -"An ordered array of high-level user actions that resulted in this resource. " -"It is intended to give human readers a general indication of the steps taken " -"to make the changes from the previous version to this one. The list should " -"be at an abstract level; it is not intended to be an exhaustive keystroke or " -"other detailed history." -msgstr "" - -#: src/properties.cpp:254 -#, fuzzy -msgid "Instance ID" -msgstr "Identyfikator ikony" - -#: src/properties.cpp:254 -msgid "" -"An identifier for a specific incarnation of a document, updated each time a " -"file is saved. It should be based on a UUID; see Document and Instance IDs " -"below." -msgstr "" - -#: src/properties.cpp:256 -#, fuzzy -msgid "Managed From" -msgstr "Odczytywanie z" - -#: src/properties.cpp:256 -msgid "" -"A reference to the document as it was prior to becoming managed. It is set " -"when a managed document is introduced to an asset management system that " -"does not currently own it. It may or may not include references to different " -"management systems." -msgstr "" - -#: src/properties.cpp:259 -#, fuzzy -msgid "Manager" -msgstr "Menedżer" - -#: src/properties.cpp:259 -msgid "" -"The name of the asset management system that manages this resource. Along " -"with xmpMM: ManagerVariant, it tells applications which asset management " -"system to contact concerning this document." -msgstr "" - -#: src/properties.cpp:262 -#, fuzzy -msgid "Manage To" -msgstr "ZarzÄ…dzanie" - -#: src/properties.cpp:262 -msgid "" -"A URI identifying the managed resource to the asset management system; the " -"presence of this property is the formal indication that this resource is " -"managed. The form and content of this URI is private to the asset management " -"system." -msgstr "" - -#: src/properties.cpp:265 -#, fuzzy -msgid "Manage UI" -msgstr "Obiekt kontrolujÄ…cy" - -#: src/properties.cpp:265 -msgid "" -"A URI that can be used to access information about the managed resource " -"through a web browser. It might require a custom browser plug-in." -msgstr "" - -#: src/properties.cpp:267 -#, fuzzy -msgid "Manager Variant" -msgstr "Wariant zarzÄ…dzania" - -#: src/properties.cpp:267 -msgid "" -"Specifies a particular variant of the asset management system. The format of " -"this property is private to the specific asset management system." -msgstr "" - -#: src/properties.cpp:269 -msgid "Rendition Class" -msgstr "Klasa wykonania" - -#: src/properties.cpp:269 -msgid "" -"The rendition class name for this resource. This property should be absent " -"or set to default for a document version that is not a derived rendition." -msgstr "" - -#: src/properties.cpp:271 -msgid "Rendition Params" -msgstr "Parametry wykonania" - -#: src/properties.cpp:271 -msgid "" -"Can be used to provide additional rendition parameters that are too complex " -"or verbose to encode in xmpMM: RenditionClass." -msgstr "" - -#: src/properties.cpp:273 -msgid "Version ID" -msgstr "Identyfikator wersji" - -#: src/properties.cpp:273 -msgid "" -"The document version identifier for this resource. Each version of a " -"document gets a new identifier, usually simply by incrementing integers 1, " -"2, 3 . . . and so on. Media management systems can have other conventions or " -"support branching which requires a more complex scheme." -msgstr "" - -#: src/properties.cpp:277 -msgid "Versions" -msgstr "Wersje" - -#: src/properties.cpp:277 -msgid "" -"The version history associated with this resource. Entry [1] is the oldest " -"known version for this document, entry [last()] is the most recent version. " -"Typically, a media management system would fill in the version information " -"in the metadata on check-in. It is not guaranteed that a complete history " -"versions from the first to this one will be present in the xmpMM:Versions " -"property. Interior version information can be compressed or eliminated and " -"the version history can be truncated at some point." -msgstr "" - -#: src/properties.cpp:283 -msgid "Last URL" -msgstr "Bazowy URL" - -#: src/properties.cpp:283 -#, fuzzy -msgid "Deprecated for privacy protection." -msgstr "Zdeprecjonowane dla ochrony prywatnoÅ›ci." - -#: src/properties.cpp:284 -msgid "Rendition Of" -msgstr "Wykonanie" - -#: src/properties.cpp:284 -msgid "" -"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " -"which this is a rendition." -msgstr "" - -#: src/properties.cpp:286 -msgid "Save ID" -msgstr "Identyfikator zapisu" - -#: src/properties.cpp:286 -msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." -msgstr "" - -#: src/properties.cpp:292 -#, fuzzy -msgid "Job Reference" -msgstr "OdnoÅ›nik pracy" - -#: src/properties.cpp:292 -msgid "" -"References an external job management file for a job process in which the " -"document is being used. Use of job names is under user control. Typical use " -"would be to identify all documents that are part of a particular job or " -"contract. There are multiple values because there can be more than one job " -"using a particular document at any time, and it can also be useful to keep " -"historical information about what jobs a document was part of previously." -msgstr "" - -#: src/properties.cpp:301 -msgid "Maximum Page Size" -msgstr "Maksymalny rozmiar strony" - -#: src/properties.cpp:301 -#, fuzzy -msgid "" -"The size of the largest page in the document (including any in contained " -"documents)." -msgstr "Liczba stron w dokumencie (uwzglÄ™dniajÄ…ca również dokumenty zawarte)." - -#: src/properties.cpp:302 -msgid "Number of Pages" -msgstr "Liczba stron" - -#: src/properties.cpp:302 -msgid "" -"The number of pages in the document (including any in contained documents)." -msgstr "Liczba stron w dokumencie (uwzglÄ™dniajÄ…ca również dokumenty zawarte)." - -#: src/properties.cpp:303 -msgid "Fonts" -msgstr "Czcionki" - -#: src/properties.cpp:303 -msgid "" -"An unordered array of fonts that are used in the document (including any in " -"contained documents)." -msgstr "" -"NieuporzÄ…dkowana tablica czcionek użytych w dokumencie (zawierajÄ…ca również " -"czcionki z dokumentów zawartych)." - -#: src/properties.cpp:304 -msgid "Colorants" -msgstr "Barwniki" - -#: src/properties.cpp:304 -#, fuzzy -msgid "" -"An ordered array of colorants (swatches) that are used in the document " -"(including any in contained documents)." -msgstr "" -"NieuporzÄ…dkowana tablica czcionek użytych w dokumencie (zawierajÄ…ca również " -"czcionki z dokumentów zawartych)." - -#: src/properties.cpp:305 -msgid "Plate Names" -msgstr "Nazwy pÅ‚yt" - -#: src/properties.cpp:305 -#, fuzzy -msgid "" -"An ordered array of plate names that are needed to print the document " -"(including any in contained documents)." -msgstr "" -"NieuporzÄ…dkowana tablica czcionek użytych w dokumencie (zawierajÄ…ca również " -"czcionki z dokumentów zawartych)." - -#: src/properties.cpp:311 -msgid "Project Reference" -msgstr "Odniesienie do projektu" - -#: src/properties.cpp:311 -msgid "A reference to the project that created this file." -msgstr "OdnoÅ›nik do projektu w ramach którego utworzono ten plik." - -#: src/properties.cpp:312 -msgid "Video Frame Rate" -msgstr "Klatek na sekundÄ™" - -#: src/properties.cpp:312 -msgid "The video frame rate. One of: 24, NTSC, PAL." -msgstr "Liczba klatek na sekundÄ™. Jedno z: 24, NTSC, PAL." - -#: src/properties.cpp:313 -msgid "Video Frame Size" -msgstr "Rozmiar ramki wideo" - -#: src/properties.cpp:313 -msgid "The frame size. For example: w:720, h: 480, unit:pixels" -msgstr "Rozmiar ramki, na przykÅ‚ad: w:720, h:480, units:pixels" - -#: src/properties.cpp:314 -msgid "Video Pixel Aspect Ratio" -msgstr "Proporcje pikseli wideo" - -#: src/properties.cpp:314 -msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" -msgstr "" - -#: src/properties.cpp:315 -msgid "Video Pixel Depth" -msgstr "GÅ‚Ä™bia pikseli wideo" - -#: src/properties.cpp:315 -msgid "" -"The size in bits of each color component of a pixel. Standard Windows 32-bit " -"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." -msgstr "" - -#: src/properties.cpp:317 -msgid "Video Color Space" -msgstr "PrzestrzeÅ„ kolorów wideo" - -#: src/properties.cpp:317 -msgid "" -"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " -"CCIR-709 (used for HD)." -msgstr "" -"PrzestrzeÅ„ kolorów. Jedna z: sRGB (używana przez Photoshop), CCIR-601 " -"(używana dla NTSC), CCIR-709 (używana dla HD)." - -#: src/properties.cpp:319 -#, fuzzy -msgid "Video Alpha Mode" -msgstr "Minolta model" - -#: src/properties.cpp:319 -msgid "The alpha mode. One of: straight, pre-multiplied." -msgstr "" - -#: src/properties.cpp:320 -msgid "Video Alpha Premultiple Color" -msgstr "" - -#: src/properties.cpp:320 -msgid "" -"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " -"is pre-multiplied." -msgstr "" - -#: src/properties.cpp:322 -msgid "Video Alpha Unity Is Transparent" -msgstr "" - -#: src/properties.cpp:322 -msgid "When true, unity is clear, when false, it is opaque." -msgstr "" - -#: src/properties.cpp:323 -msgid "Video Compressor" -msgstr "Kompresja wideo" - -#: src/properties.cpp:323 -msgid "Video compression used. For example, jpeg." -msgstr "Użyta kompresja wideo, na przykÅ‚ad JPEG." - -#: src/properties.cpp:324 -#, fuzzy -msgid "Video Field Order" -msgstr "Kolejność warstw wideo" - -#: src/properties.cpp:324 -msgid "The field order for video. One of: Upper, Lower, Progressive." -msgstr "" - -#: src/properties.cpp:325 -#, fuzzy -msgid "Pull Down" -msgstr "Poklatkowość" - -#: src/properties.cpp:325 -msgid "" -"The sampling phase of film to be converted to video (pull-down). One of: " -"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " -"WWWSS_24p, WWSSW_24p." -msgstr "" - -#: src/properties.cpp:327 -msgid "Audio Sample Rate" -msgstr "CzÄ™stotliwość próbkowania dźwiÄ™ku" - -#: src/properties.cpp:327 -msgid "" -"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." -msgstr "" -"CzÄ™stotliwość próbkowania dźwiÄ™ku. Może być dowolnÄ… wartoÅ›ciÄ…, ale zwykle " -"wynosi 32000, 41100 lub 48000." - -#: src/properties.cpp:328 -msgid "Audio Sample Type" -msgstr "Typ próbkowania dźwiÄ™ku" - -#: src/properties.cpp:328 -msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." -msgstr "Typ próbkowania dźwiÄ™ku. Jeden z: 8Int, 16Int, 32Int, 32Float." - -#: src/properties.cpp:329 -msgid "Audio Channel Type" -msgstr "Rodzaj kanaÅ‚u dźwiÄ™ku" - -#: src/properties.cpp:329 -msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." -msgstr "Typ kanaÅ‚u dźwiÄ™ku, jeden z: mono, stereo, 5.1, 7.1." - -#: src/properties.cpp:330 -msgid "Audio Compressor" -msgstr "Kompresja dźwiÄ™ku" - -#: src/properties.cpp:330 -msgid "The audio compression used. For example, MP3." -msgstr "Użyta kompresja dźwiÄ™ku, na przykÅ‚ad MP3." - -#: src/properties.cpp:331 -msgid "Speaker Placement" -msgstr "PoÅ‚ożenie gÅ‚oÅ›ników" - -#: src/properties.cpp:331 -msgid "" -"A description of the speaker angles from center front in degrees. For " -"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " -"-110, Right Surround = 110\"" -msgstr "" - -#: src/properties.cpp:333 -#, fuzzy -msgid "File Data Rate" -msgstr "Szybkość transmisji" - -#: src/properties.cpp:333 -msgid "" -"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" -"sec" -msgstr "" - -#: src/properties.cpp:334 -msgid "Tape Name" -msgstr "Nazwa taÅ›my" - -#: src/properties.cpp:334 -msgid "" -"The name of the tape from which the clip was captured, as set during the " -"capture process." -msgstr "" - -#: src/properties.cpp:335 -msgid "Alternative Tape Name" -msgstr "Inna nazwa taÅ›my" - -#: src/properties.cpp:335 -msgid "" -"An alternative tape name, set via the project window or timecode dialog in " -"Premiere. If an alternative name has been set and has not been reverted, " -"that name is displayed." -msgstr "" - -#: src/properties.cpp:337 -msgid "Start Time Code" -msgstr "PoczÄ…tkowy kod czasu" - -#: src/properties.cpp:337 -msgid "" -"The timecode of the first frame of video in the file, as obtained from the " -"device control." -msgstr "" - -#: src/properties.cpp:338 -msgid "Alternative Time code" -msgstr "Dodatkowy kod czasu" - -#: src/properties.cpp:338 -msgid "" -"A timecode set by the user. When specified, it is used instead of the " -"startTimecode." -msgstr "" - -#: src/properties.cpp:339 -msgid "Duration" -msgstr "Czas trwania" - -#: src/properties.cpp:339 -msgid "The duration of the media file." -msgstr "Czas trwania pliku mediów." - -#: src/properties.cpp:340 -msgid "Scene" -msgstr "Scena" - -#: src/properties.cpp:340 -msgid "The name of the scene." -msgstr "Nazwa sceny." - -#: src/properties.cpp:341 -msgid "Shot Name" -msgstr "Nazwa ujÄ™cia" - -#: src/properties.cpp:341 -#, fuzzy -msgid "The name of the shot or take." -msgstr "Nazwa ujÄ™cia." - -#: src/properties.cpp:342 -msgid "Shot Date" -msgstr "Data zrobienia" - -#: src/properties.cpp:342 -msgid "The date and time when the video was shot." -msgstr "Data i czas zrobienia wideo." - -#: src/properties.cpp:343 -msgid "Shot Location" -msgstr "Lokalizacja" - -#: src/properties.cpp:343 -msgid "" -"The name of the location where the video was shot. For example: " -"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " -"GPS values." -msgstr "" - -#: src/properties.cpp:345 -#, fuzzy -msgid "Log Comment" -msgstr "Dziennik komentarzy" - -#: src/properties.cpp:345 -#, fuzzy -msgid "User's log comments." -msgstr "Komentarze użytkownika." - -#: src/properties.cpp:346 -msgid "Markers" -msgstr "Znaczniki" - -#: src/properties.cpp:346 -#, fuzzy -msgid "An ordered list of markers" -msgstr "UporzÄ…dkowana lista znaczników" - -#: src/properties.cpp:347 -#, fuzzy -msgid "Contributed Media" -msgstr "Media skÅ‚adowe" - -#: src/properties.cpp:347 -msgid "An unordered list of all media used to create this media." -msgstr "" - -#: src/properties.cpp:348 -msgid "Absolute Peak Audio File Path" -msgstr "" - -#: src/properties.cpp:348 -msgid "" -"The absolute path to the file's peak audio file. If empty, no peak file " -"exists." -msgstr "" - -#: src/properties.cpp:349 -msgid "Relative Peak Audio File Path" -msgstr "" - -#: src/properties.cpp:349 -msgid "" -"The relative path to the file's peak audio file. If empty, no peak file " -"exists." -msgstr "" - -#: src/properties.cpp:350 -msgid "Video Modified Date" -msgstr "Data modyfikacji wideo" - -#: src/properties.cpp:350 -msgid "The date and time when the video was last modified." -msgstr "Data i czas ostatniej modyfikacji wideo." - -#: src/properties.cpp:351 -msgid "Audio Modified Date" -msgstr "Data modyfikacji dźwiÄ™ku" - -#: src/properties.cpp:351 -msgid "The date and time when the audio was last modified." -msgstr "Data i czas ostatniej modyfikacji dźwiÄ™ku." - -#: src/properties.cpp:352 -msgid "Metadata Modified Date" -msgstr "Data modyfikacji metadanych" - -#: src/properties.cpp:352 -msgid "The date and time when the metadata was last modified." -msgstr "Data i czas ostatniej modyfikacji metadanych." - -#: src/properties.cpp:353 src/properties.cpp:521 src/tags.cpp:549 -msgid "Artist" -msgstr "Artysta" - -#: src/properties.cpp:353 -msgid "The name of the artist or artists." -msgstr "Nazwa artysty lub artystów." - -#: src/properties.cpp:354 -msgid "Album" -msgstr "Album" - -#: src/properties.cpp:354 -msgid "The name of the album." -msgstr "Nazwa albumu." - -#: src/properties.cpp:355 -msgid "Track Number" -msgstr "Numer Å›cieżki" - -#: src/properties.cpp:355 -msgid "" -"A numeric value indicating the order of the audio file within its original " -"recording." -msgstr "" - -#: src/properties.cpp:356 -msgid "Genre" -msgstr "Gatunek" - -#: src/properties.cpp:356 -msgid "The name of the genre." -msgstr "Nazwa gatunku." - -#: src/properties.cpp:357 -msgid "The copyright information." -msgstr "Informacja o prawach wÅ‚asnoÅ›ci." - -#: src/properties.cpp:358 -msgid "The date the title was released." -msgstr "Data wydania utworu." - -#: src/properties.cpp:359 -msgid "Composer" -msgstr "Kompozytor" - -#: src/properties.cpp:359 -msgid "The composer's name." -msgstr "Nazwa (imiÄ™ i nazwisko) kompozytora." - -#: src/properties.cpp:360 -msgid "Engineer" -msgstr "Programista" - -#: src/properties.cpp:360 -msgid "The engineer's name." -msgstr "Nazwa (imiÄ™ i nazwisko) programisty." - -#: src/properties.cpp:361 -msgid "Tempo" -msgstr "Tempo" - -#: src/properties.cpp:361 -msgid "The audio's tempo." -msgstr "Tempo dźwiÄ™ku." - -#: src/properties.cpp:362 -msgid "Instrument" -msgstr "Instrument" - -#: src/properties.cpp:362 -msgid "The musical instrument." -msgstr "Instrument muzyczny." - -#: src/properties.cpp:363 -msgid "Intro Time" -msgstr "Czas wstÄ™pu" - -#: src/properties.cpp:363 -#, fuzzy -msgid "The duration of lead time for queuing music." -msgstr "Czas trwania pliku mediów." - -#: src/properties.cpp:364 -msgid "Out Cue" -msgstr "Wyciszenie" - -#: src/properties.cpp:364 -#, fuzzy -msgid "The time at which to fade out." -msgstr "Czas w którym nastÄ™puje wyciszenie." - -#: src/properties.cpp:365 -msgid "Relative Timestamp" -msgstr "WzglÄ™dny znacznik czasowy" - -#: src/properties.cpp:365 -msgid "The start time of the media inside the audio project." -msgstr "" - -#: src/properties.cpp:366 -msgid "Loop" -msgstr "Powtarzanie" - -#: src/properties.cpp:366 -msgid "When true, the clip can be looped seemlessly." -msgstr "" - -#: src/properties.cpp:367 -msgid "Number Of Beats" -msgstr "Liczba uderzeÅ„" - -#: src/properties.cpp:367 -msgid "The number of beats." -msgstr "Liczba uderzeÅ„." - -#: src/properties.cpp:368 -msgid "Key" -msgstr "Tonacja" - -#: src/properties.cpp:368 -msgid "" -"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." -msgstr "" -"Tonacja muzyczna dźwiÄ™ku. Jeden z: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." - -#: src/properties.cpp:369 -#, fuzzy -msgid "Stretch Mode" -msgstr "Tryb rozciÄ…gniÄ™cia" - -#: src/properties.cpp:369 -msgid "" -"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " -"Splice, Hybrid." -msgstr "" - -#: src/properties.cpp:370 -#, fuzzy -msgid "Time Scale Parameters" -msgstr "Parametry skali czasowej" - -#: src/properties.cpp:370 -msgid "Additional parameters for Time-Scale stretch mode." -msgstr "" - -#: src/properties.cpp:371 -#, fuzzy -msgid "Resample Parameters" -msgstr "Parametry resamplingu" - -#: src/properties.cpp:371 -msgid "Additional parameters for Resample stretch mode." -msgstr "" - -#: src/properties.cpp:372 -#, fuzzy -msgid "Beat Splice Parameters" -msgstr "Parametry Beat Splice" - -#: src/properties.cpp:372 -msgid "Additional parameters for Beat Splice stretch mode." -msgstr "" - -#: src/properties.cpp:373 -msgid "Time Signature" -msgstr "Tempo muzyczne" - -#: src/properties.cpp:373 -msgid "" -"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " -"12/8, other." -msgstr "" - -#: src/properties.cpp:374 -msgid "Scale Type" -msgstr "Skala muzyczna" - -#: src/properties.cpp:374 -#, fuzzy -msgid "" -"The musical scale used in the music. One of: Major, Minor, Both, Neither. " -"Neither is most often used for instruments with no associated scale, such as " -"drums." -msgstr "Skala muzyczna użyta w utworze." - -#: src/properties.cpp:381 src/tags.cpp:1071 -msgid "Camera Serial Number" -msgstr "Numer seryjny aparatu" - -#: src/properties.cpp:381 -msgid "Camera Serial Number." -msgstr "Numer seryjny aparatu." - -#: src/properties.cpp:382 -#, fuzzy -msgid "Date Acquired" -msgstr "Data zgrania" - -#: src/properties.cpp:382 -#, fuzzy -msgid "Date Acquired." -msgstr "Data zgrania." - -#: src/properties.cpp:383 -msgid "Flash Manufacturer" -msgstr "Producent flesza" - -#: src/properties.cpp:383 -msgid "Flash Manufacturer." -msgstr "Producent lampy bÅ‚yskowej." - -#: src/properties.cpp:384 -msgid "Flash Model." -msgstr "Model flesza." - -#: src/properties.cpp:385 -msgid "Last Keyword IPTC" -msgstr "Ostatnie sÅ‚owo kluczowe IPTC" - -#: src/properties.cpp:385 -msgid "Last Keyword IPTC." -msgstr "Ostatnie sÅ‚owo kluczowe IPTC." - -#: src/properties.cpp:386 -msgid "Last Keyword XMP" -msgstr "Ostatnie sÅ‚owo kluczowe XMP" - -#: src/properties.cpp:386 -msgid "Last Keyword XMP." -msgstr "Ostatnie sÅ‚owo kluczowe XMP." - -#: src/properties.cpp:387 -#, fuzzy -msgid "Lens Manufacturer" -msgstr "Producent obiektywu" - -#: src/properties.cpp:387 -msgid "Lens Manufacturer." -msgstr "Producent obiektywu." - -#: src/properties.cpp:388 -msgid "Lens Model." -msgstr "Model obiektywu." - -#: src/properties.cpp:389 -msgid "Rating Percent" -msgstr "Ocena procentowa" - -#: src/properties.cpp:389 -msgid "Rating Percent." -msgstr "Ocena procentowa." - -#: src/properties.cpp:395 -msgid "Keywords." -msgstr "SÅ‚owa kluczowe." - -#: src/properties.cpp:396 -msgid "PDF Version" -msgstr "Wersja PDF" - -#: src/properties.cpp:396 -msgid "The PDF file version (for example: 1.0, 1.3, and so on)." -msgstr "Wersja pliku PDF (np. 1.0, 1.3, itd.)." - -#: src/properties.cpp:397 -msgid "Producer" -msgstr "Producent" - -#: src/properties.cpp:397 -msgid "The name of the tool that created the PDF document." -msgstr "Nazwa narzÄ™dzia, które utworzyÅ‚o dokument PDF." - -#: src/properties.cpp:403 -msgid "Authors Position" -msgstr "Pozycja autora" - -#: src/properties.cpp:403 -msgid "By-line title." -msgstr "TytuÅ‚." - -#: src/properties.cpp:404 -msgid "Caption Writer" -msgstr "Autor tytuÅ‚u" - -#: src/properties.cpp:404 -#, fuzzy -msgid "Writer/editor." -msgstr "Twórca/edytor." - -#: src/properties.cpp:405 -msgid "Category. Limited to 3 7-bit ASCII characters." -msgstr "Kategoria. Ograniczone do 3 siedmiobitowych znaków ASCII." - -#: src/properties.cpp:406 -msgid "City." -msgstr "Miasto." - -#: src/properties.cpp:407 -msgid "Country/primary location." -msgstr "PaÅ„stwo/lokalizacja." - -#: src/properties.cpp:408 -#, fuzzy -msgid "Credit." -msgstr "Wyrazy uznania." - -#: src/properties.cpp:409 -msgid "" -"The date the intellectual content of the document was created (rather than " -"the creation date of the physical representation), following IIM " -"conventions. For example, a photo taken during the American Civil War would " -"have a creation date during that epoch (1861-1865) rather than the date the " -"photo was digitized for archiving." -msgstr "" - -#: src/properties.cpp:413 -msgid "Headline." -msgstr "Nagłówek." - -#: src/properties.cpp:414 -msgid "Special instructions." -msgstr "Specjalne instrukcje." - -#: src/properties.cpp:415 -msgid "Source." -msgstr "ŹródÅ‚o." - -#: src/properties.cpp:416 -msgid "State" -msgstr "Stan" - -#: src/properties.cpp:416 -msgid "Province/state." -msgstr "Prowincja/stan." - -#: src/properties.cpp:417 -msgid "Supplemental category." -msgstr "Kategoria dodatkowa." - -#: src/properties.cpp:418 -#, fuzzy -msgid "Original transmission reference." -msgstr "Oryginalne miejsce transmisji." - -#: src/properties.cpp:419 -msgid "Urgency. Valid range is 1-8." -msgstr "Pilność, zakres wartoÅ›ci od 1 do 8." - -#: src/properties.cpp:427 -msgid "inches" -msgstr "cale" - -#: src/properties.cpp:428 src/tags.cpp:242 -msgid "cm" -msgstr "cm" - -#: src/properties.cpp:432 -msgid "Auto Brightness" -msgstr "Automatyczna regulacja jasnoÅ›ci" - -#: src/properties.cpp:432 -msgid "When true, \"Brightness\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:433 -msgid "Auto Contrast" -msgstr "Automatyczna regulacja kontrastu" - -#: src/properties.cpp:433 -msgid "When true, \"Contrast\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:434 -msgid "Auto Exposure" -msgstr "Automatyczna ekspozycja" - -#: src/properties.cpp:434 -msgid "When true, \"Exposure\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:435 -msgid "Auto Shadows" -msgstr "Automatyczne regulacja cieni" - -#: src/properties.cpp:435 -msgid "When true,\"Shadows\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:436 -msgid "Blue Hue" -msgstr "OdcieÅ„ bÅ‚Ä™kitu" - -#: src/properties.cpp:436 -msgid "\"Blue Hue\" setting. Range -100 to 100." -msgstr "OdcieÅ„ bÅ‚Ä™kitu, zakres wartoÅ›ci od -100 do +100." - -#: src/properties.cpp:437 -msgid "Blue Saturation" -msgstr "Nasycenie bÅ‚Ä™kitu" - -#: src/properties.cpp:437 -msgid "\"Blue Saturation\" setting. Range -100 to +100." -msgstr "Nasycenie bÅ‚Ä™kitu, zakres wartoÅ›ci od -100 do +100." - -#: src/properties.cpp:438 -msgid "\"Brightness\" setting. Range 0 to +150." -msgstr "Jasność, zakres wartość od 0 do +150." - -#: src/properties.cpp:439 -msgid "Camera Profile" -msgstr "Profil aparatu" - -#: src/properties.cpp:439 -msgid "\"Camera Profile\" setting." -msgstr "Ustawienie \"Profil aparatu\"." - -#: src/properties.cpp:440 -msgid "Chromatic Aberration Blue" -msgstr "Aberracja chromatyczna bÅ‚Ä™kitu" - -#: src/properties.cpp:440 -msgid "" -"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." -msgstr "" -"Aberracja chromatyczna, korekcja niebieskiej/żółtej obwódki, zakres wartoÅ›ci " -"od -100 do +100." - -#: src/properties.cpp:441 -msgid "Chromatic Aberration Red" -msgstr "Aberracja chromatyczna czerwieni" - -#: src/properties.cpp:441 -msgid "" -"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." -msgstr "" -"Aberracja chromatyczna, korekcja czerwonej/niebieskozielonej obwódki, zakres " -"wartoÅ›ci od -100 do +100." - -#: src/properties.cpp:442 -msgid "Color Noise Reduction" -msgstr "Redukcja szumów kolorów" - -#: src/properties.cpp:442 -msgid "\"Color Noise Reducton\" setting. Range 0 to +100." -msgstr "Redukcja szumów kolorów, zakres wartoÅ›ci od 0 do +100." - -#: src/properties.cpp:443 -msgid "\"Contrast\" setting. Range -50 to +100." -msgstr "Kontrast, zakres wartoÅ›ci od -50 do +100." - -#: src/properties.cpp:444 -msgid "When \"Has Crop\" is true, top of crop rectangle" -msgstr "" - -#: src/properties.cpp:445 -msgid "When \"Has Crop\" is true, left of crop rectangle." -msgstr "" - -#: src/properties.cpp:446 -msgid "Crop Bottom" -msgstr "PrzyciÄ™cie dół" - -#: src/properties.cpp:446 -msgid "When \"Has Crop\" is true, bottom of crop rectangle." -msgstr "" - -#: src/properties.cpp:447 -msgid "Crop Right" -msgstr "PrzyciÄ™cie prawo" - -#: src/properties.cpp:447 -msgid "When \"Has Crop\" is true, right of crop rectangle." -msgstr "" - -#: src/properties.cpp:448 -msgid "Crop Angle" -msgstr "KÄ…t przyciÄ™cia" - -#: src/properties.cpp:448 -msgid "When \"Has Crop\" is true, angle of crop rectangle." -msgstr "" - -#: src/properties.cpp:449 -msgid "Width of resulting cropped image in CropUnits units." -msgstr "" - -#: src/properties.cpp:450 -msgid "Height of resulting cropped image in CropUnits units." -msgstr "" - -#: src/properties.cpp:451 -msgid "Crop Units" -msgstr "Jednostki przyciÄ™cia" - -#: src/properties.cpp:451 -msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" -msgstr "" - -#: src/properties.cpp:452 -msgid "\"Exposure\" setting. Range -4.0 to +4.0." -msgstr "Ekspozycja, zakres wartoÅ›ci od -4.0 do +4.0." - -#: src/properties.cpp:453 -msgid "GreenHue" -msgstr "OdcieÅ„ zieleni" - -#: src/properties.cpp:453 -msgid "\"Green Hue\" setting. Range -100 to +100." -msgstr "OdcieÅ„ zieleni, zakres wartoÅ›ci od -100 do +100." - -#: src/properties.cpp:454 -msgid "Green Saturation" -msgstr "Nasycenie zieleni" - -#: src/properties.cpp:454 -msgid "\"Green Saturation\" setting. Range -100 to +100." -msgstr "Nasycenie zieleni, zakres wartoÅ›ci od -100 do +100." - -#: src/properties.cpp:455 -msgid "Has Crop" -msgstr "PrzyciÄ™ty" - -#: src/properties.cpp:455 -msgid "When true, image has a cropping rectangle." -msgstr "" - -#: src/properties.cpp:456 -msgid "Has Settings" -msgstr "Ustawienia niestandardowe" - -#: src/properties.cpp:456 -msgid "When true, non-default camera raw settings." -msgstr "" - -#: src/properties.cpp:457 -#, fuzzy -msgid "Luminance Smoothing" -msgstr "WygÅ‚adzenie luminancji" - -#: src/properties.cpp:457 -#, fuzzy -msgid "\"Luminance Smoothing\" setting. Range 0 to +100." -msgstr "Nasycenie bÅ‚Ä™kitu, zakres wartoÅ›ci od -100 do +100." - -#: src/properties.cpp:458 -msgid "Raw File Name" -msgstr "Nazwa pliku Raw" - -#: src/properties.cpp:458 -msgid "File name of raw file (not a complete path)." -msgstr "Nazwa pliku Raw (nie zawiera Å›cieżki dostÄ™pu)." - -#: src/properties.cpp:459 -msgid "Red Hue" -msgstr "OdcieÅ„ czerwieni" - -#: src/properties.cpp:459 -msgid "\"Red Hue\" setting. Range -100 to +100." -msgstr "OdcieÅ„ czerwieni, zakres wartoÅ›ci od -100 do +100." - -#: src/properties.cpp:460 -msgid "Red Saturation" -msgstr "Nasycenie czerwieni" - -#: src/properties.cpp:460 -msgid "\"Red Saturation\" setting. Range -100 to +100." -msgstr "Nasycenie czerwieni, zakres wartoÅ›ci od -100 do +100." - -#: src/properties.cpp:461 -msgid "\"Saturation\" setting. Range -100 to +100." -msgstr "Nasycenie, zakres wartoÅ›ci od -100 do 100." - -#: src/properties.cpp:462 -msgid "Shadows" -msgstr "Cienie" - -#: src/properties.cpp:462 -msgid "\"Shadows\" setting. Range 0 to +100." -msgstr "Cienie, wartoÅ›ci od 0 do +100." - -#: src/properties.cpp:463 -msgid "Shadow Tint" -msgstr "Zabarwienie cieni" - -#: src/properties.cpp:463 -msgid "\"Shadow Tint\" setting. Range -100 to +100." -msgstr "Zabarwienie cieni, zakres wartoÅ›ci od -100 do +100." - -#: src/properties.cpp:464 -msgid "\"Sharpness\" setting. Range 0 to +100." -msgstr "Ostrość, zakres wartoÅ›ci od 0 do +100." - -#: src/properties.cpp:465 -msgid "\"Temperature\" setting. Range 2000 to 50000." -msgstr "Temperatura, zakres wartoÅ›ci od 2000 do 50000." - -#: src/properties.cpp:466 -msgid "Tint" -msgstr "Zabarwienie" - -#: src/properties.cpp:466 -msgid "\"Tint\" setting. Range -150 to +150." -msgstr "Zabarwienie, zakres wartoÅ›ci od -150 do +150." - -#: src/properties.cpp:467 -msgid "Tone Curve" -msgstr "Krzywa tonalna" - -#: src/properties.cpp:467 -msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." -msgstr "" - -#: src/properties.cpp:468 -msgid "Tone Curve Name" -msgstr "Nazwa krzywej tonalnej" - -#: src/properties.cpp:468 -msgid "" -"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " -"Contrast, Strong Contrast, Custom or a user-defined preset name." -msgstr "" - -#: src/properties.cpp:470 -msgid "Version of Camera Raw plugin." -msgstr "Wersja wtyczki RAW aparatu." - -#: src/properties.cpp:471 -msgid "Vignette Amount" -msgstr "Wielkość winietowania" - -#: src/properties.cpp:471 -msgid "\"Vignetting Amount\" setting. Range -100 to +100." -msgstr "Wielkość winietowania, zakres wartoÅ›ci od -100 do +100." - -#: src/properties.cpp:472 -msgid "Vignette Midpoint" -msgstr "Åšrodek winietowania" - -#: src/properties.cpp:472 -msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." -msgstr "Åšrodek winietowania, zakres wartoÅ›ci od 0 do +100." - -#: src/properties.cpp:473 -msgid "" -"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " -"Tungsten, Fluorescent, Flash, Custom" -msgstr "" - -#: src/properties.cpp:480 -msgid "TIFF tag 256, 0x100. Image width in pixels." -msgstr "Znacznik TIFF 256, 0x100. Szerokość obrazu w pikselach." - -#: src/properties.cpp:481 src/tags.cpp:420 -msgid "Image Length" -msgstr "DÅ‚ugość obrazu" - -#: src/properties.cpp:481 -msgid "TIFF tag 257, 0x101. Image height in pixels." -msgstr "Znacznik TIFF 257, 0x101. Wysokość obrazu w pikselach." - -#: src/properties.cpp:482 -msgid "Bits Per Sample" -msgstr "Bitów na próbkÄ™" - -#: src/properties.cpp:482 -msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." -msgstr "" - -#: src/properties.cpp:483 src/tags.cpp:430 -msgid "Compression" -msgstr "Kompresja" - -#: src/properties.cpp:483 -msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." -msgstr "" -"Znacznik TIFF 259, 0x103. Schemat kompresji: 1 = nieskompresowany; 6 = JPEG." - -#: src/properties.cpp:484 src/tags.cpp:436 -msgid "Photometric Interpretation" -msgstr "Interpretacja fotometryczna" - -#: src/properties.cpp:484 -msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." -msgstr "Znacznik TIFF 262, 0x106. UkÅ‚ad pikseli: 2 = RGB; 6 = YCbCr." - -#: src/properties.cpp:485 -msgid "" -"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " -"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " -"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " -"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " -"0th column at bottom 8 = 0th row at left, 0th column at bottom" -msgstr "" - -#: src/properties.cpp:494 -msgid "Samples Per Pixel" -msgstr "Próbek na piksel" - -#: src/properties.cpp:494 -#, fuzzy -msgid "TIFF tag 277, 0x115. Number of components per pixel." -msgstr "Znacznik TIFF 257, 0x101. Wysokość obrazu w pikselach." - -#: src/properties.cpp:495 src/tags.cpp:510 -msgid "Planar Configuration" -msgstr "Konfiguracja powierzchni" - -#: src/properties.cpp:495 -msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." -msgstr "" - -#: src/properties.cpp:496 -msgid "YCbCr Sub Sampling" -msgstr "Podpróbkowanie YCbCr" - -#: src/properties.cpp:496 -msgid "" -"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " -"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" -msgstr "" - -#: src/properties.cpp:498 src/tags.cpp:713 -msgid "YCbCr Positioning" -msgstr "Rozmieszczenie YCbCr" - -#: src/properties.cpp:498 -msgid "" -"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " -"centered; 2 = co-sited." -msgstr "" - -#: src/properties.cpp:500 -msgid "X Resolution" -msgstr "Rozdzielczość Y" - -#: src/properties.cpp:500 -msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." -msgstr "" -"Znacznik TIFF 282, 0x11A. Rozdzielczość pozioma w pikselach na jednostkÄ™." - -#: src/properties.cpp:501 -msgid "Y Resolution" -msgstr "Rozdzielczość Y" - -#: src/properties.cpp:501 -msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." -msgstr "" -"Znacznik TIFF 283, 0x11B. Rozdzielczość pionowa w pikselach na jednostkÄ™." - -#: src/properties.cpp:502 src/tags.cpp:528 -msgid "Resolution Unit" -msgstr "Jednostka rozdzielczoÅ›ci" - -#: src/properties.cpp:502 -msgid "" -"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " -"of: 2 = inches; 3 = centimeters." -msgstr "" -"Znacznik TIFF 296, 0x128. Jednostka użyta w znacznikach Rozdzielczość X " -"(XResolution) oraz Rozdzielczość Y (YResolution). WartoÅ›ci: 2 = cale; 3 = " -"centymetry." - -#: src/properties.cpp:504 src/tags.cpp:533 -msgid "Transfer Function" -msgstr "Funkcja przejÅ›cia" - -#: src/properties.cpp:504 -msgid "" -"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " -"with 3 * 256 entries." -msgstr "" - -#: src/properties.cpp:506 src/tags.cpp:565 -msgid "White Point" -msgstr "BiaÅ‚y punkt" - -#: src/properties.cpp:506 -msgid "TIFF tag 318, 0x13E. Chromaticity of white point." -msgstr "" - -#: src/properties.cpp:507 src/tags.cpp:570 -msgid "Primary Chromaticities" -msgstr "Barwy główne" - -#: src/properties.cpp:507 -msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." -msgstr "" - -#: src/properties.cpp:508 -msgid "" -"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." -msgstr "" - -#: src/properties.cpp:509 -msgid "Reference Black White" -msgstr "CzerÅ„/biel odniesienia" - -#: src/properties.cpp:509 -msgid "TIFF tag 532, 0x214. Reference black and white point values." -msgstr "" - -#: src/properties.cpp:510 src/tags.cpp:545 -msgid "Date and Time" -msgstr "Data i czas" - -#: src/properties.cpp:510 -msgid "" -"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " -"and time of image creation (no time zone in EXIF), stored in ISO 8601 " -"format, not the original EXIF format. This property includes the value for " -"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" -"ModifyDate." -msgstr "" - -#: src/properties.cpp:516 src/tags.cpp:458 -msgid "Image Description" -msgstr "Opis obrazu" - -#: src/properties.cpp:516 -msgid "" -"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " -"in XMP as dc:description." -msgstr "" -"Znacznik TIFF 270, 0x10E. Opis obrazu. Uwaga: ta wÅ‚aÅ›ciwość jest " -"przechowywana w XMP jako dc:description." - -#: src/properties.cpp:517 -#, fuzzy -msgid "Make" -msgstr "Wytwórca" - -#: src/properties.cpp:517 -msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." -msgstr "Znacznik TIFF 271, 0x10F. Producent wyposażenia nagrywajÄ…cego." - -#: src/properties.cpp:518 -msgid "TIFF tag 272, 0x110. Model name or number of equipment." -msgstr "Znacznik TIFF 272, 0x110. Nazwa lub numer modelu wyposażenia." - -#: src/properties.cpp:519 -msgid "" -"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " -"property is stored in XMP as xmp:CreatorTool. " -msgstr "" -"Znacznik TIFF 305, 0x131. Oprogramowanie lub firmware użyte do utworzenia " -"obrazu. Uwaga: ta wÅ‚aÅ›ciwość jest przechowywana w XMP jako xmp:CreatorTool. " - -#: src/properties.cpp:521 -#, fuzzy -msgid "" -"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " -"property is stored in XMP as the first item in the dc:creator array." -msgstr "" -"Znacznik TIFF 305, 0x131. Oprogramowanie lub firmware użyte do utworzenia " -"obrazu. Uwaga: ta wÅ‚aÅ›ciwość jest przechowywana w XMP jako xmp:CreatorTool. " - -#: src/properties.cpp:523 -#, fuzzy -msgid "" -"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " -"in XMP as dc:rights." -msgstr "" -"Znacznik TIFF 270, 0x10E. Opis obrazu. Uwaga: ta wÅ‚aÅ›ciwość jest " -"przechowywana w XMP jako dc:description." - -#: src/properties.cpp:530 src/tags.cpp:1598 -msgid "Exif Version" -msgstr "Wersja Exif" - -#: src/properties.cpp:530 -msgid "EXIF tag 36864, 0x9000. EXIF version number." -msgstr "Znacznik EXIF 36864, 0x9000. Numer wersji EXIF." - -#: src/properties.cpp:531 -msgid "Flashpix Version" -msgstr "Wersja FlashPix" - -#: src/properties.cpp:531 -msgid "EXIF tag 40960, 0xA000. Version of FlashPix." -msgstr "Znacznik EXIF 40960, 0xA000. Wersja FlashPix." - -#: src/properties.cpp:532 -msgid "EXIF tag 40961, 0xA001. Color space information" -msgstr "Znacznik EXIF 40961, 0xA001. Informacja o przestrzeni kolorów" - -#: src/properties.cpp:533 src/tags.cpp:1609 -msgid "Components Configuration" -msgstr "Konfiguracja komponentów" - -#: src/properties.cpp:533 -msgid "" -"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " -"compressed data), 1 2 3 0 (other cases)." -msgstr "" - -#: src/properties.cpp:535 src/tags.cpp:818 -msgid "Compressed Bits Per Pixel" -msgstr "Skompresowane bity na piksel" - -#: src/properties.cpp:535 -msgid "" -"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " -"indicated in unit bits per pixel." -msgstr "" -"Informacja specyficzna dla skompresowanych danych. Rodzaj kompresji użyty " -"dla skompresowanego obrazu jest okreÅ›lony w jednostkach bitów na piksel." - -#: src/properties.cpp:537 src/tags.cpp:1693 -msgid "Pixel X Dimension" -msgstr "Rozmiar X " - -#: src/properties.cpp:537 -msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." -msgstr "Znacznik EXIF 40962, 0xA002. PrawidÅ‚owa szerokość obrazu w pikselach." - -#: src/properties.cpp:538 src/tags.cpp:1700 -msgid "Pixel Y Dimension" -msgstr "Rozmiar Y" - -#: src/properties.cpp:538 -msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." -msgstr "Znacznik EXIF 40963, 0xA003. PrawidÅ‚owa wysokość obrazu w pikselach." - -#: src/properties.cpp:539 src/tags.cpp:1667 -msgid "User Comment" -msgstr "Komentarz użytkownika" - -#: src/properties.cpp:539 -msgid "EXIF tag 37510, 0x9286. Comments from user." -msgstr "Znacznik EXIF 37510, 0x9286. Komentarze użytkownika." - -#: src/properties.cpp:540 src/tags.cpp:1709 -msgid "Related Sound File" -msgstr "PowiÄ…zany plik dźwiÄ™kowy" - -#: src/properties.cpp:540 -msgid "" -"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." -msgstr "" -"Znacznik EXIF 40964, 0xA004. Nazwa powiÄ…zanego pliku dźwiÄ™kowego w formacie " -"\"8.3\"." - -#: src/properties.cpp:541 -msgid "Date and Time Original" -msgstr "Data i czas (oryginaÅ‚u)" - -#: src/properties.cpp:541 -msgid "" -"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " -"time when original image was generated, in ISO 8601 format. Includes the " -"EXIF SubSecTimeOriginal data." -msgstr "" - -#: src/properties.cpp:544 -msgid "Date and Time Digitized" -msgstr "Data i czas (obrazu cyfrowego)" - -#: src/properties.cpp:544 -msgid "" -"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " -"time when image was stored as digital data, can be the same as " -"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " -"format. Includes the EXIF SubSecTimeDigitized data." -msgstr "" - -#: src/properties.cpp:548 -msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." -msgstr "Znacznik EXIF 33434, 0x829A. Czas ekspozycji w sekundach." - -#: src/properties.cpp:549 -msgid "F Number" -msgstr "Liczba F" - -#: src/properties.cpp:549 -msgid "EXIF tag 33437, 0x829D. F number." -msgstr "Znacznik EXIF 33437, 0x829D. Liczba F." - -#: src/properties.cpp:550 -msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." -msgstr "" -"Znacznik EXIF 34850, 0x8822. Rodzaj programu użyty do okreÅ›lenia ekspozycji." - -#: src/properties.cpp:551 src/tags.cpp:800 src/tags.cpp:1552 -msgid "Spectral Sensitivity" -msgstr "CzuÅ‚ość widmowa" - -#: src/properties.cpp:551 -msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." -msgstr "Znacznik EXIF 34852, 0x8824. CzuÅ‚ość widmowa każdego kanaÅ‚u." - -#: src/properties.cpp:552 -#, fuzzy -msgid "ISOSpeedRatings" -msgstr "Oszacowania szybkoÅ›ci ISO" - -#: src/properties.cpp:552 -msgid "" -"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " -"specified in ISO 12232." -msgstr "" -"Znacznik EXIF 34855, 0x8827. CzuÅ‚ość ISO i zakres ISO aparatu lub urzÄ…dzenia " -"wejÅ›ciowego zgodne ze specyfikacjÄ… ISO 12232." - -#: src/properties.cpp:554 src/tags.cpp:807 -msgid "OECF" -msgstr "OECF" - -#: src/properties.cpp:554 -msgid "" -"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " -"ISO 14524." -msgstr "" -"Znacznik EXIF 34856, 0x8828. Funkcja konwersji optoelektrycznej, " -"zdefiniowana w dokumencie SO 14524." - -#: src/properties.cpp:555 -msgid "" -"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " -"specification." -msgstr "" -"Znacznik EXIF 37377, 0x9201. Czas otwarcia migawki, w jednostkach APEX. " -"Zobacz Dodatek C w specyfikacji EXIF." - -#: src/properties.cpp:556 -msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." -msgstr "Znacznik EXIF 37378, 0x9202. PrzysÅ‚ona obiektywu, w jednostkach APEX." - -#: src/properties.cpp:557 src/tags.cpp:821 -msgid "Brightness Value" -msgstr "Jasność" - -#: src/properties.cpp:557 -msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." -msgstr "Znacznik EXIF 37379, 0x9203. Jasność w jednostkach APEX." - -#: src/properties.cpp:558 -msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." -msgstr "Znacznik EXIF 37380, 0x9204. Odchylenie ekspozycji w jednostkach APEX." - -#: src/properties.cpp:559 -msgid "Maximum Aperture Value" -msgstr "NajwiÄ™ksza wartość przysÅ‚ony" - -#: src/properties.cpp:559 -msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." -msgstr "" -"Znacznik EXIF 37381, 0x9205. Najmniejsza liczba F obiektywu, w jednostkach " -"APEX." - -#: src/properties.cpp:560 -msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." -msgstr "Znacznik EXIF 37382, 0x9206. OdlegÅ‚ość do obiektu podana w metrach." - -#: src/properties.cpp:561 -msgid "EXIF tag 37383, 0x9207. Metering mode." -msgstr "Znacznik EXIF 37383, 0x9207. Tryb pomiaru." - -#: src/properties.cpp:562 -msgid "EXIF tag 37384, 0x9208. Light source." -msgstr "Znacznik EXIF 37384, 0x9208. ŹródÅ‚o Å›wiatÅ‚a." - -#: src/properties.cpp:563 -msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." -msgstr "Znacznik EXIF 37385, 0x9209. Dane źródÅ‚a Å›wiatÅ‚a bÅ‚yskowego (flesza)." - -#: src/properties.cpp:564 -msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." -msgstr "" -"Znacznik EXIF 37386, 0x920A. DÅ‚ugość ogniskowej obiektywu, w milimetrach." - -#: src/properties.cpp:565 src/tags.cpp:1659 -msgid "Subject Area" -msgstr "Obszar obiektu" - -#: src/properties.cpp:565 -msgid "" -"EXIF tag 37396, 0x9214. The location and area of the main subject in the " -"overall scene." -msgstr "" -"Znacznik EXIF 37396, 0x9214. PoÅ‚ożenie i obszar głównego obiektu na caÅ‚ej " -"scenie." - -#: src/properties.cpp:566 src/tags.cpp:829 src/tags.cpp:1724 -msgid "Flash Energy" -msgstr "Energia bÅ‚ysku" - -#: src/properties.cpp:566 -msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." -msgstr "" -"Znacznik EXIF 41483, 0xA20B. OkreÅ›la energiÄ™ Å›wiatÅ‚a bÅ‚yskowego podczas " -"wykonywania zdjÄ™cia." - -#: src/properties.cpp:567 src/tags.cpp:830 src/tags.cpp:1728 -msgid "Spatial Frequency Response" -msgstr "Odpowiedź czÄ™stotliwoÅ›ci przestrzennej" - -#: src/properties.cpp:567 -msgid "" -"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " -"as specified in ISO 12233." -msgstr "" -"Znacznik EXIF 41484, 0xA20C. OkreÅ›la tablicÄ™ czÄ™stotliwoÅ›ci przestrzennej i " -"wartoÅ›ci SFR w sposób okreÅ›lony w dokumencie ISO 12233." - -#: src/properties.cpp:569 src/tags.cpp:832 -msgid "Focal Plane X Resolution" -msgstr "Rozdzielczość ogniskowej w pÅ‚aszczyźnie X" - -#: src/properties.cpp:569 -#, fuzzy -msgid "" -"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " -"unit." -msgstr "" -"Znacznik TIFF 282, 0x11A. Rozdzielczość pozioma w pikselach na jednostkÄ™." - -#: src/properties.cpp:570 src/tags.cpp:833 -msgid "Focal Plane Y Resolution" -msgstr "Rozdzielczość ogniskowej w pÅ‚aszczyźnie Y" - -#: src/properties.cpp:570 -#, fuzzy -msgid "" -"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " -"unit." -msgstr "" -"Znacznik TIFF 283, 0x11B. Rozdzielczość pionowa w pikselach na jednostkÄ™." - -#: src/properties.cpp:571 src/tags.cpp:834 src/tags.cpp:1741 -msgid "Focal Plane Resolution Unit" -msgstr "Jednostka rozdzielczoÅ›ci pÅ‚aszczyzny ogniskowej" - -#: src/properties.cpp:571 -msgid "" -"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " -"FocalPlaneYResolution." -msgstr "" - -#: src/properties.cpp:572 src/tags.cpp:838 src/tags.cpp:1745 -msgid "Subject Location" -msgstr "PoÅ‚ożenie obiektu" - -#: src/properties.cpp:572 -msgid "" -"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " -"value is the horizontal pixel and the second value is the vertical pixel at " -"which the main subject appears." -msgstr "" - -#: src/properties.cpp:575 src/tags.cpp:839 -msgid "Exposure Index" -msgstr "Indeks ekspozycji" - -#: src/properties.cpp:575 -msgid "EXIF tag 41493, 0xA215. Exposure index of input device." -msgstr "" -"Znacznik EXIF 41493, 0xA215. Indeks ekspozycji w aparacie lub urzÄ…dzeniu " -"wejÅ›ciowym." - -#: src/properties.cpp:576 src/tags.cpp:844 src/tags.cpp:1756 -msgid "Sensing Method" -msgstr "Rodzaj czujnika" - -#: src/properties.cpp:576 -msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." -msgstr "" -"Znacznik EXIF 41495, 0xA217. Rodzaj czujnika obrazu w aparacie lub " -"urzÄ…dzeniu wejÅ›ciowym." - -#: src/properties.cpp:577 -msgid "EXIF tag 41728, 0xA300. Indicates image source." -msgstr "Znacznik EXIF 41728, 0xA300. OkreÅ›la źródÅ‚o obrazu." - -#: src/properties.cpp:578 src/tags.cpp:1764 -msgid "Scene Type" -msgstr "Rodzaj sceny" - -#: src/properties.cpp:578 -msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." -msgstr "Znacznik EXIF 41729, 0xA301. OkreÅ›lenie rodzaju sceny." - -#: src/properties.cpp:579 src/tags.cpp:754 -msgid "CFA Pattern" -msgstr "Wzór CFA" - -#: src/properties.cpp:579 -msgid "" -"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " -"sense." -msgstr "" - -#: src/properties.cpp:580 src/tags.cpp:1774 -msgid "Custom Rendered" -msgstr "WÅ‚asny rendering" - -#: src/properties.cpp:580 -msgid "" -"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " -"data." -msgstr "" -"Znacznik EXIF 41985, 0xA401. Ten znacznik okreÅ›la użycie specjalnego " -"przetwarzania danych obrazu." - -#: src/properties.cpp:581 -msgid "" -"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " -"shot." -msgstr "" -"Znacznik EXIF 41986, 0xA402. Ten znacznik okreÅ›la tryb ekspozycji ustawiony " -"przy robieniu zdjÄ™cia." - -#: src/properties.cpp:582 -msgid "" -"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " -"was shot." -msgstr "" -"Znacznik EXIF 41987, 0xA403. OkreÅ›la tryb balansu bieli ustawiony przy " -"robieniu zdjÄ™cia." - -#: src/properties.cpp:583 src/tags.cpp:1788 -msgid "Digital Zoom Ratio" -msgstr "Współczynnik powiÄ™kszenia cyfrowego" - -#: src/properties.cpp:583 -msgid "" -"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " -"shot." -msgstr "" -"Znacznik EXIF 41988, 0xA404. OkreÅ›la współczynnik cyfrowego powiÄ™kszenia " -"ustawiony przy robieniu zdjÄ™cia." - -#: src/properties.cpp:584 src/tags.cpp:1793 -msgid "Focal Length In 35mm Film" -msgstr "Ogniskowa dla filmu 35mm" - -#: src/properties.cpp:584 -msgid "" -"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " -"35mm film camera, in mm. A value of 0 means the focal length is unknown. " -"Note that this tag differs from the FocalLength tag." -msgstr "" -"Znacznik EXIF 41989, 0xA405. OkreÅ›la odpowiednik ogniskowej w milimetrach " -"przy zaÅ‚ożeniu aparatu na film 35 mm. Wartość 0 oznacza, że ogniskowa jest " -"nieznana. Należy zauważyć, że ten znacznik różni siÄ™ od znacznika " -"FocalLength." - -#: src/properties.cpp:587 src/tags.cpp:1799 -msgid "Scene Capture Type" -msgstr "Rodzaj uchwycenia sceny" - -#: src/properties.cpp:587 -#, fuzzy -msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." -msgstr "Znacznik EXIF 41729, 0xA301. OkreÅ›lenie rodzaju sceny." - -#: src/properties.cpp:588 src/tags.cpp:1804 -msgid "Gain Control" -msgstr "Regulacja wzmocnienia" - -#: src/properties.cpp:588 -msgid "" -"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " -"adjustment." -msgstr "" -"Znacznik EXIF 41991, 0xA407. OkreÅ›la stopieÅ„ wzmocnienia caÅ‚ego obrazu." - -#: src/properties.cpp:589 -msgid "" -"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " -"applied by the camera." -msgstr "" -"Znacznik EXIF 41992, 0xA408. OkreÅ›la kierunek przetwarzania kontrastu " -"wykonanego przez aparat przy robieniu zdjÄ™cia." - -#: src/properties.cpp:590 -msgid "" -"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " -"applied by the camera." -msgstr "" -"Znacznik EXIF 41993, 0xA409. OkreÅ›la kierunek przetwarzania nasycenia " -"wykonanego przez aparat przy robieniu zdjÄ™cia." - -#: src/properties.cpp:591 -msgid "" -"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " -"applied by the camera." -msgstr "" -"Znacznik EXIF 41994, 0xA40A. OkreÅ›la kierunek przetwarzania ostroÅ›ci " -"wykonanego przez aparat przy robieniu zdjÄ™cia." - -#: src/properties.cpp:592 src/tags.cpp:1819 -msgid "Device Setting Description" -msgstr "Opis ustawieÅ„ urzÄ…dzenia" - -#: src/properties.cpp:592 -msgid "" -"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " -"conditions of a particular camera model." -msgstr "" -"Znacznik EXIF 41995, 0xA40B. OkreÅ›la informacje o warunkach robienia zdjÄ™cia " -"dla konkretnego modelu aparatu." - -#: src/properties.cpp:593 src/tags.cpp:1824 -msgid "Subject Distance Range" -msgstr "Zakres odlegÅ‚oÅ›ci obiektu" - -#: src/properties.cpp:593 -msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." -msgstr "Znacznik EXIF 41996, 0xA40C. OkreÅ›la odlegÅ‚ość od obiektu." - -#: src/properties.cpp:594 src/tags.cpp:1827 -msgid "Image Unique ID" -msgstr "Unikalny identyfikator obrazu" - -#: src/properties.cpp:594 -msgid "" -"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " -"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " -"and 128-bit fixed length." -msgstr "" -"Znaczni EXIF 42016, 0xA420.Ten znacznik okreÅ›la unikalny identyfikator " -"przypisany każdemu zdjÄ™ciu. Jest on zapisany jako 32 znakowy Å‚aÅ„cuch ASCII " -"odpowiadajÄ…cy notacji szesnastkowej o staÅ‚ej dÅ‚ugoÅ›ci 128 bitów." - -#: src/properties.cpp:596 src/tags.cpp:1927 -msgid "GPS Version ID" -msgstr "GPS Wersja znacznika" - -#: src/properties.cpp:596 -msgid "" -"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " -"period separators. The current value is \"2.0.0.0\"." -msgstr "" -"Znacznik GPS 0, 0x00. Zakodowany dziesiÄ™tnie każdy z czterech bajtów EXIF. " -"Bieżąca wartość to \"2.0.0.0\"." - -#: src/properties.cpp:598 src/tags.cpp:1938 -msgid "GPS Latitude" -msgstr "GPS Szerokość" - -#: src/properties.cpp:598 -msgid "" -"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." -msgstr "" -"Znacznik GPS 2, 0x02 (pozycja) i 1, 0x01 (oznaczenie). OkreÅ›la szerokość " -"geograficznÄ… i jej oznaczenie (północna/poÅ‚udniowa)." - -#: src/properties.cpp:599 src/tags.cpp:1950 -msgid "GPS Longitude" -msgstr "GPS DÅ‚ugość" - -#: src/properties.cpp:599 -msgid "" -"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." -msgstr "" -"Znacznik GPS 4, 0x04 (pozycja) i 3, 0x03 (oznaczenie). OkreÅ›la dÅ‚ugość " -"geograficznÄ… i jej oznaczenie (wschodnia/zachodnia)." - -#: src/properties.cpp:600 src/tags.cpp:1958 -msgid "GPS Altitude Reference" -msgstr "GPS Oznaczenie wysokoÅ›ci" - -#: src/properties.cpp:600 -#, fuzzy -msgid "" -"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." -msgstr "" -"Znacznik GPS 5, 0x05. OkreÅ›la czy wyniesienie jest powyżej czy poniżej " -"poziomu morza (n.p.m. czy p.p.m.)." - -#: src/properties.cpp:601 src/tags.cpp:1966 -msgid "GPS Altitude" -msgstr "GPS Wysokość" - -#: src/properties.cpp:601 -msgid "GPS tag 6, 0x06. Indicates altitude in meters." -msgstr "Znacznik GPS 6, 0x06. Wysokość (wyniesienie) w metrach." - -#: src/properties.cpp:602 src/tags.cpp:1970 -msgid "GPS Time Stamp" -msgstr "GPS Znacznik czasu" - -#: src/properties.cpp:602 -msgid "" -"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " -"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " -"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " -"present, the date component for the XMP should be taken from exif:" -"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " -"no date is available, do not write exif:GPSTimeStamp to XMP." -msgstr "" -"Znacznik GPS 29 (data), 0x1D oraz znacznik GPS 7 (czas), 0x07. Znacznik " -"czasowy danych GPS w postaci czasu uniwersalnego koordynowanego (UTC - " -"Coordinated Universal Time). Uwaga: Znacznik GPSDateStamp jest nowy w " -"specyfikacji EXIF 2.2. Znacznik czasowy GPS w specyfikacji EXIF 2.1 nie " -"zawiera daty. JeÅ›li nie jest on obecny, data dla XMP powinna być pobrana z " -"Exif: DateTimeOriginal lub, jeÅ›li tej również jest brak z exif:" -"DateTimeDigitized. JeÅ›li data jest niedostÄ™pna, exif:GPSTimeStamp nie jest " -"zapisywany do XMP." - -#: src/properties.cpp:608 src/tags.cpp:1975 -msgid "GPS Satellites" -msgstr "GPS Satelity" - -#: src/properties.cpp:608 -msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." -msgstr "" -"Znacznik GPS 8, 0x08. Informacja o satelitach użytych do pomiaru, format " -"jest nieokreÅ›lony." - -#: src/properties.cpp:609 src/tags.cpp:1982 -msgid "GPS Status" -msgstr "GPS Stan" - -#: src/properties.cpp:609 -msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." -msgstr "" -"Znacznik GPS 9, 0x09. Stan odbiornika GPS w momencie utworzenia obrazu." - -#: src/properties.cpp:610 src/tags.cpp:1987 -msgid "GPS Measure Mode" -msgstr "GPS Tryb pomiaru" - -#: src/properties.cpp:610 -msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." -msgstr "" -"Znacznik GPS 10, 0x0A. Tryb pomiaru GPS. WartoÅ›ci tekstowe: \"2\" oznacza " -"pomiar dwuwymiarowy, a \"3\" pomiar trójwymiarowy." - -#: src/properties.cpp:611 -msgid "GPS DOP" -msgstr "GPS DOP" - -#: src/properties.cpp:611 -msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." -msgstr "Znacznik GPS 11, 0x0B. StopieÅ„ precyzji danych GPS." - -#: src/properties.cpp:612 src/tags.cpp:1995 -msgid "GPS Speed Reference" -msgstr "GPS Oznaczenie prÄ™dkoÅ›ci" - -#: src/properties.cpp:612 -msgid "GPS tag 12, 0x0C. Units used to speed measurement." -msgstr "" -"Znacznik GPS 12, 0x0C. Jednostki użyte do pomiaru prÄ™dkoÅ›ci ruchu odbiornika " -"GPS. \"K\", \"M\" i \"N\" oznaczajÄ… kilometry, mile i wÄ™zÅ‚y." - -#: src/properties.cpp:613 src/tags.cpp:1999 -msgid "GPS Speed" -msgstr "GPS PrÄ™dkość" - -#: src/properties.cpp:613 -msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." -msgstr "Znacznik GPS 13, 0x0D. PrÄ™dkość ruchu odbiornika GPS." - -#: src/properties.cpp:614 -msgid "GPS Track Reference" -msgstr "GPS Oznaczenie kierunku" - -#: src/properties.cpp:614 -msgid "GPS tag 14, 0x0E. Reference for movement direction." -msgstr "" -"Znacznik GPS 14, 0x0E. Oznaczenie kierunku ruchu odbiornika GPS. \"T\" " -"oznacza kierunek rzeczywisty, a \"M\" kierunek magnetyczny." - -#: src/properties.cpp:615 src/tags.cpp:2006 -msgid "GPS Track" -msgstr "GPS Kierunek" - -#: src/properties.cpp:615 -msgid "" -"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." -msgstr "" -"Znacznik GPS 15, 0x0F. Kierunek ruchu odbiornika GPS, przyjmuje wartoÅ›ci z " -"zakresu od 0 do 359.99." - -#: src/properties.cpp:616 src/tags.cpp:2010 -msgid "GPS Image Direction Reference" -msgstr "GPS Oznaczenie kierunku obrazu" - -#: src/properties.cpp:616 -#, fuzzy -msgid "GPS tag 16, 0x10. Reference for image direction." -msgstr "" -"Znacznik GPS 16, 0x10. Oznaczenie rodzaju kierunku obrazu. \"T\" oznacza " -"kierunek rzeczywisty, a \"M\" kierunek magnetyczny." - -#: src/properties.cpp:617 src/tags.cpp:2014 -msgid "GPS Image Direction" -msgstr "GPS Kierunek obrazu" - -#: src/properties.cpp:617 -msgid "" -"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " -"359.99." -msgstr "" -"Znacznik GPS 17, 0x11. OkreÅ›la kierunek obrazu podczas wykonywania zdjÄ™cia, " -"przyjmuje wartoÅ›ci z zakresu od 0 do 359.99." - -#: src/properties.cpp:618 src/tags.cpp:2018 -msgid "GPS Map Datum" -msgstr "GPS UkÅ‚ad odniesienia" - -#: src/properties.cpp:618 -msgid "GPS tag 18, 0x12. Geodetic survey data." -msgstr "" -"Znacznik GPS 18, 0x12. OkreÅ›la ukÅ‚ad odniesienia współrzÄ™dnych użyty przez " -"odbiornik GPS." - -#: src/properties.cpp:619 src/tags.cpp:2026 -msgid "GPS Destination Latitude" -msgstr "GPS Docelowa szerokość" - -#: src/properties.cpp:619 -msgid "" -"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " -"destination latitude." -msgstr "" -"Znacznik GPS 20, 0x14 (pozycja) i 19, 0x13 (oznaczenie). OkreÅ›lajÄ… szerokość " -"geograficznÄ… i oznaczenie szerokoÅ›ci punktu docelowego (\"N\" oznacza " -"szerokość geograficznÄ… północnÄ…, a \"S\" poÅ‚udniowÄ…)." - -#: src/properties.cpp:620 src/tags.cpp:2038 -msgid "GPS Destination Longitude" -msgstr "GPS Docelowa dÅ‚ugość" - -#: src/properties.cpp:620 -msgid "" -"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " -"longitude." -msgstr "" -"Znacznik GPS 22, 0x16 (pozycja) i 21, 0x15 (oznaczenie). OkreÅ›lajÄ… dÅ‚ugość " -"geograficznÄ… i oznaczenie dÅ‚ugoÅ›ci punktu docelowego (\"E\" oznacza dÅ‚ugość " -"geograficznÄ… wschodniÄ…, a \"W\" zachodniÄ…)." - -#: src/properties.cpp:621 src/tags.cpp:2045 -msgid "GPS Destination Bearing Reference" -msgstr "GPS Oznaczenie kierunku docelowego" - -#: src/properties.cpp:621 -msgid "GPS tag 23, 0x17. Reference for movement direction." -msgstr "" -"Znacznik GPS 23, 0x17. Oznaczenie kierunku ruchu do punktu docelowego. \"T\" " -"oznacza kierunek rzeczywisty, a \"M\" kierunek magnetyczny." - -#: src/properties.cpp:622 src/tags.cpp:2049 -msgid "GPS Destination Bearing" -msgstr "GPS Kierunek docelowy" - -#: src/properties.cpp:622 -msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." -msgstr "" -"Znacznik GPS 24, 0x18. OkreÅ›la kierunek (namiar) do celu, wartoÅ›ci od 0 do " -"359.99." - -#: src/properties.cpp:623 -msgid "GPS Destination Distance Refefrence" -msgstr "GPS Oznaczenie odlegÅ‚oÅ›ci obiektu" - -#: src/properties.cpp:623 -msgid "GPS tag 25, 0x19. Units used for speed measurement." -msgstr "" -"Znacznik GPS 25, 0x19. Jednostki użyte do pomiaru prÄ™dkoÅ›ci. \"K\", \"M\" i " -"\"N\" oznaczajÄ… kilometry, mile i wÄ™zÅ‚y." - -#: src/properties.cpp:624 src/tags.cpp:2057 -msgid "GPS Destination Distance" -msgstr "GPS OdlegÅ‚ość obiektu" - -#: src/properties.cpp:624 -msgid "GPS tag 26, 0x1A. Distance to destination." -msgstr "Znacznik GPS 26, 0x1A. OdlegÅ‚ość do obiektu podana w metrach." - -#: src/properties.cpp:625 src/tags.cpp:2060 -msgid "GPS Processing Method" -msgstr "GPS Metoda lokalizacji" - -#: src/properties.cpp:625 -msgid "" -"GPS tag 27, 0x1B. A character string recording the name of the method used " -"for location finding." -msgstr "" -"Znacznik GPS 27, 0x1B. ÅaÅ„cuch tekstowy okreÅ›lajÄ…cy metodÄ™ użytÄ… do " -"znalezienia lokalizacji." - -#: src/properties.cpp:626 src/tags.cpp:2065 -msgid "GPS Area Information" -msgstr "GPS Informacja o obszarze" - -#: src/properties.cpp:626 -msgid "" -"GPS tag 28, 0x1C. A character string recording the name of the GPS area." -msgstr "Znacznik GPS 28, 0x1C. OkreÅ›la nazwÄ™ obszaru GPS." - -#: src/properties.cpp:627 src/tags.cpp:2073 -msgid "GPS Differential" -msgstr "GPS Korekcja" - -#: src/properties.cpp:627 -msgid "" -"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " -"the GPS receiver." -msgstr "" -"Znacznik GPS 30, 0x1E. OkreÅ›la czy dla odbiornika GPS zastosowana zostaÅ‚a " -"korekcja różnicowa." - -#: src/properties.cpp:633 -msgid "" -"A description of the lens used to take the photograph. For example, \"70-200 " -"mm f/2.8-4.0\"." -msgstr "" -"Opis obiektywu użytego do zrobienia zdjÄ™cia. Na przykÅ‚ad \"70-200 mm " -"f/2.8-4.0\"." - -#: src/properties.cpp:634 -msgid "SerialNumber" -msgstr "Numer seryjny" - -#: src/properties.cpp:634 -msgid "" -"The serial number of the camera or camera body used to take the photograph." -msgstr "Numer seryjny aparatu lub korpusu aparatu użyty do zrobienia zdjÄ™cia." - -#: src/properties.cpp:640 -msgid "Contact Info-City" -msgstr "Kontakt-Miasto" - -#: src/properties.cpp:640 -msgid "The contact information city part." -msgstr "Część informacji kontaktowej okreÅ›lajÄ…ca miasto." - -#: src/properties.cpp:641 -msgid "Contact Info-Country" -msgstr "Kontakt-PaÅ„stwo" - -#: src/properties.cpp:641 -msgid "The contact information country part." -msgstr "Część informacji kontaktowej okreÅ›lajÄ…ca paÅ„stwo." - -#: src/properties.cpp:642 -msgid "Contact Info-Address" -msgstr "Kontakt-Adres" - -#: src/properties.cpp:642 -msgid "" -"The contact information address part. Comprises an optional company name and " -"all required information to locate the building or postbox to which mail " -"should be sent." -msgstr "" -"Część informacji kontaktowej okreÅ›lajÄ…ca adres. Zawiera opcjonalnie nazwÄ™ " -"firmy i wszelkie wymagane informacje umożliwiajÄ…ce lokalizacjÄ™ budynku lub " -"skrzynki pocztowej na którÄ… ma być wysyÅ‚ana korespondencja." - -#: src/properties.cpp:644 -msgid "Contact Info-Postal Code" -msgstr "Kontakt-Kod pocztowy" - -#: src/properties.cpp:644 -msgid "The contact information part denoting the local postal code." -msgstr "Część informacji kontaktowej okreÅ›lajÄ…ca lokalny kod pocztowy." - -#: src/properties.cpp:645 -msgid "Contact Info-State/Province" -msgstr "Kontakt-Stan/prowincja" - -#: src/properties.cpp:645 -msgid "" -"The contact information part denoting regional information like state or " -"province." -msgstr "" -"Cześć informacji kontaktowej oznaczajÄ…ca informacjÄ™ regionalnÄ…, jak na " -"przykÅ‚ad stan, prowincja lub województwo." - -#: src/properties.cpp:646 -msgid "Contact Info-Email" -msgstr "Kontakt-Email" - -#: src/properties.cpp:646 -msgid "The contact information email address part." -msgstr "Część informacji kontaktowej okreÅ›lajÄ…ca adres e-mail." - -#: src/properties.cpp:647 -msgid "Contact Info-Phone" -msgstr "Kontakt-Telefon" - -#: src/properties.cpp:647 -msgid "The contact information phone number part." -msgstr "Część informacji kontaktowej okreÅ›lajÄ…ca numer telefonu." - -#: src/properties.cpp:648 -msgid "Contact Info-Web URL" -msgstr "Kontakt-URL" - -#: src/properties.cpp:648 -msgid "The contact information web address part." -msgstr "" -"Część informacji kontaktowej okreÅ›lajÄ…ca adres internetowy, np. witryny " -"internetowej." - -#: src/properties.cpp:649 -msgid "" -"Code of the country the content is focussing on -- either the country shown " -"in visual media or referenced in text or audio media. This element is at the " -"top/first level of a top-down geographical hierarchy. The code should be " -"taken from ISO 3166 two or three letter code. The full name of a country " -"should go to the \"Country\" element." -msgstr "" - -#: src/properties.cpp:653 -msgid "Creator's Contact Info" -msgstr "Informacje kontaktowe twórcy" - -#: src/properties.cpp:653 -msgid "" -"The creator's contact information provides all necessary information to get " -"in contact with the creator of this news object and comprises a set of sub-" -"properties for proper addressing." -msgstr "" -"Informacje kontaktowe twórcy zawierajÄ…ce wszystkie niezbÄ™dne dane " -"umożliwiajÄ…ce skontaktowanie siÄ™ z twórcÄ… tego obiektu wiadomoÅ›ci. " -"Informacje te skÅ‚adajÄ… siÄ™ z zestawu wÅ‚aÅ›ciwoÅ›ci umożliwiajÄ…cych prawidÅ‚owe " -"zaadresowanie." - -#: src/properties.cpp:655 -msgid "Intellectual Genre" -msgstr "Intelektualny rodzaj obiektu" - -#: src/properties.cpp:655 -msgid "" -"Describes the nature, intellectual or journalistic characteristic of a news " -"object, not specifically its content." -msgstr "" - -#: src/properties.cpp:657 -msgid "" -"Name of a location the content is focussing on -- either the location shown " -"in visual media or referenced by text or audio media. This location name " -"could either be the name of a sublocation to a city or the name of a well " -"known location or (natural) monument outside a city. In the sense of a " -"sublocation to a city this element is at the fourth level of a top-down " -"geographical hierarchy." -msgstr "" - -#: src/properties.cpp:662 -msgid "IPTC Scene" -msgstr "Scena IPTC" - -#: src/properties.cpp:662 -msgid "" -"Describes the scene of a photo content. Specifies one or more terms from the " -"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " -"in an unordered list." -msgstr "" -"OkreÅ›la rodzaj sceny zawartoÅ›ci fotografii. Jest to jedno lub wiÄ™cej wyrażeÅ„ " -"z \"Scene-NewsCodes\" IPTC. Każda scena jest reprezentowana przez Å‚aÅ„cuch 6 " -"cyfr w nieuporzÄ…dkowanej liÅ›cie." - -#: src/properties.cpp:664 -msgid "IPTC Subject Code" -msgstr "Kod tematu IPTC" - -#: src/properties.cpp:664 -msgid "" -"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " -"to categorize the content. Each Subject is represented as a string of 8 " -"digits in an unordered list." -msgstr "" -"OkreÅ›la jeden lub wiÄ™cej tematów okreÅ›lajÄ…cych zawartość ze strukturalnej " -"hierarchii \"Subject-News Codes\" IPTC. Każdy temat jest reprezentowany " -"przez Å‚aÅ„cuch 8 cyfr w nieuporzÄ…dkowanej liÅ›cie." - -#: src/properties.cpp:671 -#, fuzzy -msgid "Additional model info" -msgstr "Informacja o pozycji AF" - -#: src/properties.cpp:671 -msgid "" -"Information about the ethnicity and other facts of the model(s) in a model-" -"released image." -msgstr "" - -#: src/properties.cpp:672 -msgid "Code of featured Organisation" -msgstr "" - -#: src/properties.cpp:672 -msgid "" -"Code from controlled vocabulary for identyfing the organisation or company " -"which is featured in the image." -msgstr "" - -#: src/properties.cpp:673 -msgid "Controlled Vocabulary Term" -msgstr "" - -#: src/properties.cpp:673 -msgid "" -"A term to describe the content of the image by a value from a Controlled " -"Vocabulary." -msgstr "" - -#: src/properties.cpp:674 -#, fuzzy -msgid "Model age" -msgstr "Model" - -#: src/properties.cpp:674 -msgid "" -"Age of the human model(s) at the time this image was taken in a model " -"released image." -msgstr "" - -#: src/properties.cpp:675 -msgid "Name of featured Organisation" -msgstr "" - -#: src/properties.cpp:675 -msgid "Name of the organisation or company which is featured in the image." -msgstr "" - -#: src/properties.cpp:676 -#, fuzzy -msgid "Person shown" -msgstr "Wersje" - -#: src/properties.cpp:676 -msgid "Name of a person shown in the image." -msgstr "" - -#: src/properties.cpp:677 -#, fuzzy -msgid "Digital Image Identifier" -msgstr "Cyfrowa stabilizacja obrazu" - -#: src/properties.cpp:677 -msgid "" -"Globally unique identifier for this digital image. It is created and applied " -"by the creator of the digital image at the time of its creation. this value " -"shall not be changed after that time." -msgstr "" - -#: src/properties.cpp:678 -msgid "Physical type of original photo" -msgstr "" - -#: src/properties.cpp:678 -#, fuzzy -msgid "The type of the source digital file." -msgstr "Czas trwania pliku mediów." - -#: src/properties.cpp:679 src/properties.cpp:935 src/properties.cpp:944 -#, fuzzy -msgid "Event" -msgstr "Wieczór" - -#: src/properties.cpp:679 -msgid "Names or describes the specific event at which the photo was taken." -msgstr "" - -#: src/properties.cpp:680 -#, fuzzy -msgid "Maximum available height" -msgstr "ÅšwiatÅ‚o zastane" - -#: src/properties.cpp:680 -msgid "" -"The maximum available height in pixels of the original photo from which this " -"photo has been derived by downsizing." -msgstr "" - -#: src/properties.cpp:681 -#, fuzzy -msgid "Maximum available width" -msgstr "Maksymalna dÅ‚ugość ogniskowej" - -#: src/properties.cpp:681 -msgid "" -"The maximum available width in pixels of the original photo from which this " -"photo has been derived by downsizing." -msgstr "" - -#: src/properties.cpp:682 -msgid "Registry Entry" -msgstr "" - -#: src/properties.cpp:682 -msgid "" -"Both a Registry Item Id and a Registry Organisation Id to record any " -"registration of this digital image with a registry." -msgstr "" - -#: src/properties.cpp:683 -#, fuzzy -msgid "Registry Entry-Item Identifier" -msgstr "Cyfrowa stabilizacja obrazu" - -#: src/properties.cpp:683 -msgid "" -"A unique identifier created by a registry and applied by the creator of the " -"digital image. This value shall not be changed after being applied. This " -"identifier is linked to a corresponding Registry Organisation Identifier." -msgstr "" - -#: src/properties.cpp:684 -msgid "Registry Entry-Organisation Identifier" -msgstr "" - -#: src/properties.cpp:684 -msgid "" -"An identifier for the registry which issued the corresponding Registry Image " -"Id." -msgstr "" - -#: src/properties.cpp:685 -msgid "IPTC Fields Last Edited" -msgstr "" - -#: src/properties.cpp:685 -#, fuzzy -msgid "" -"The date and optionally time when any of the IPTC photo metadata fields has " -"been last edited." -msgstr "Data i czas ostatniej modyfikacji metadanych." - -#: src/properties.cpp:686 -#, fuzzy -msgid "Location shown" -msgstr "Kod lokalizacji" - -#: src/properties.cpp:686 -#, fuzzy -msgid "A location shown in the image." -msgstr "PrzesuniÄ™cie obrazu podglÄ…du" - -#: src/properties.cpp:687 -#, fuzzy -msgid "Location Created" -msgstr "Kod lokalizacji" - -#: src/properties.cpp:687 -#, fuzzy -msgid "The location the photo was taken." -msgstr "Nazwa ujÄ™cia." - -#: src/properties.cpp:688 -#, fuzzy -msgid "Location-City" -msgstr "PoÅ‚ożenie" - -#: src/properties.cpp:688 -#, fuzzy -msgid "Name of the city of a location." -msgstr "Nazwa artysty lub artystów." - -#: src/properties.cpp:689 -#, fuzzy -msgid "Location-Country ISO-Code" -msgstr "Kod lokalizacji" - -#: src/properties.cpp:689 -#, fuzzy -msgid "The ISO code of a country of a location." -msgstr "Nazwa ujÄ™cia." - -#: src/properties.cpp:690 -#, fuzzy -msgid "Location-Country Name" -msgstr "Nazwa lokalizacji" - -#: src/properties.cpp:690 -#, fuzzy -msgid "The name of a country of a location." -msgstr "Nazwa ujÄ™cia." - -#: src/properties.cpp:691 -#, fuzzy -msgid "Location-Province/State" -msgstr "Prowincja/stan" - -#: src/properties.cpp:691 -#, fuzzy -msgid "" -"The name of a subregion of a country - a province or state - of a location." -msgstr "Nazwa ujÄ™cia." - -#: src/properties.cpp:692 -#, fuzzy -msgid "Location-Sublocation" -msgstr "Szczegółowa lokalizacja" - -#: src/properties.cpp:692 -msgid "" -"Name of a sublocation. This sublocation name could either be the name of a " -"sublocation to a city or the name of a well known location or (natural) " -"monument outside a city." -msgstr "" - -#: src/properties.cpp:693 -#, fuzzy -msgid "Location-World Region" -msgstr "Kod lokalizacji" - -#: src/properties.cpp:693 -#, fuzzy -msgid "The name of a world region of a location." -msgstr "Nazwa ujÄ™cia." - -#: src/properties.cpp:694 -#, fuzzy -msgid "Artwork or object in the image" -msgstr "OdnoÅ›nik do projektu w ramach którego utworzono ten plik." - -#: src/properties.cpp:694 -#, fuzzy -msgid "A set of metadata about artwork or an object in the image." -msgstr "OdnoÅ›nik do projektu w ramach którego utworzono ten plik." - -#: src/properties.cpp:695 -#, fuzzy -msgid "Artwork or object-Copyright notice" -msgstr "Uwaga o prawach autorskich" - -#: src/properties.cpp:695 -msgid "" -"Contains any necessary copyright notice for claiming the intellectual " -"property for artwork or an object in the image and should identify the " -"current owner of the copyright of this work with associated intellectual " -"property rights." -msgstr "" - -#: src/properties.cpp:696 -#, fuzzy -msgid "Artwork or object-Creator" -msgstr "Uwaga o prawach autorskich" - -#: src/properties.cpp:696 -msgid "" -"Contains the name of the artist who has created artwork or an object in the " -"image. In cases where the artist could or should not be identified the name " -"of a company or organisation may be appropriate." -msgstr "" - -#: src/properties.cpp:697 -#, fuzzy -msgid "Artwork or object-Date Created" -msgstr "Uwaga o prawach autorskich" - -#: src/properties.cpp:697 -msgid "" -"Designates the date and optionally the time the artwork or object in the " -"image was created. This relates to artwork or objects with associated " -"intellectual property rights." -msgstr "" - -#: src/properties.cpp:698 -#, fuzzy -msgid "Artwork or object-Source" -msgstr "Uwaga o prawach autorskich" - -#: src/properties.cpp:698 -msgid "" -"The organisation or body holding and registering the artwork or object in " -"the image for inventory purposes." -msgstr "" - -#: src/properties.cpp:699 -#, fuzzy -msgid "Artwork or object-Source inventory number" -msgstr "Uwaga o prawach autorskich" - -#: src/properties.cpp:699 -msgid "" -"The inventory number issued by the organisation or body holding and " -"registering the artwork or object in the image." -msgstr "" - -#: src/properties.cpp:700 -#, fuzzy -msgid "Artwork or object-Title" -msgstr "Uwaga o prawach autorskich" - -#: src/properties.cpp:700 -#, fuzzy -msgid "A reference for the artwork or object in the image." -msgstr "OdnoÅ›nik do projektu w ramach którego utworzono ten plik." - -#: src/properties.cpp:707 -msgid "Scan from film" -msgstr "" - -#: src/properties.cpp:708 -msgid "Scan from transparency (including slide)" -msgstr "" - -#: src/properties.cpp:709 -msgid "Scan from print" -msgstr "" - -#: src/properties.cpp:710 -#, fuzzy -msgid "Camera RAW" -msgstr "ID aparatu" - -#: src/properties.cpp:711 -#, fuzzy -msgid "Camera TIFF" -msgstr "ID aparatu" - -#: src/properties.cpp:712 -#, fuzzy -msgid "Camera JPEG" -msgstr "ID aparatu" - -#: src/properties.cpp:717 -#, fuzzy -msgid "PLUS Version" -msgstr "Wersja PDF" - -#: src/properties.cpp:717 -msgid "" -"The version number of the PLUS standards in place at the time of the " -"transaction." -msgstr "" - -#: src/properties.cpp:718 -#, fuzzy -msgid "Licensee" -msgstr "Obiektyw" - -#: src/properties.cpp:718 -msgid "" -"Party or parties to whom the license is granted by the Licensor/s under the " -"license transaction." -msgstr "" - -#: src/properties.cpp:719 -#, fuzzy -msgid "Licensee ID" -msgstr "ID obiektywu" - -#: src/properties.cpp:719 -msgid "Optional PLUS-ID identifying each Licensee." -msgstr "" - -#: src/properties.cpp:720 -#, fuzzy -msgid "Licensee Name" -msgstr "Nazwa lokalizacji" - -#: src/properties.cpp:720 -#, fuzzy -msgid "Name of each Licensee." -msgstr "Nazwa sceny." - -#: src/properties.cpp:721 -#, fuzzy -msgid "End User" -msgstr "Ekstender" - -#: src/properties.cpp:721 -msgid "Party or parties ultimately making use of the image under the license." -msgstr "" - -#: src/properties.cpp:722 -#, fuzzy -msgid "End User ID" -msgstr "Ekstender" - -#: src/properties.cpp:722 -msgid "Optional PLUS-ID identifying each End User." -msgstr "" - -#: src/properties.cpp:723 -#, fuzzy -msgid "End User Name" -msgstr "Nazwa wÅ‚aÅ›ciciela" - -#: src/properties.cpp:723 -#, fuzzy -msgid "Name of each End User." -msgstr "Nazwa sceny." - -#: src/properties.cpp:724 -#, fuzzy -msgid "Licensor" -msgstr "Obiektyw" - -#: src/properties.cpp:724 -msgid "Party or parties granting the license to the Licensee." -msgstr "" - -#: src/properties.cpp:725 -#, fuzzy -msgid "Licensor ID" -msgstr "ID obiektywu" - -#: src/properties.cpp:725 -msgid "Optional PLUS-ID identifying each Licensor." -msgstr "" - -#: src/properties.cpp:726 -#, fuzzy -msgid "Licensor Name" -msgstr "Nazwa lokalizacji" - -#: src/properties.cpp:726 -#, fuzzy -msgid "Name of each Licensor." -msgstr "Nazwa sceny." - -#: src/properties.cpp:727 -#, fuzzy -msgid "Licensor Address" -msgstr "WÅ‚aÅ›ciwoÅ›ci obiektywu" - -#: src/properties.cpp:727 -#, fuzzy -msgid "Licensor street address." -msgstr "Nazwa paÅ„stwa" - -#: src/properties.cpp:728 -#, fuzzy -msgid "Licensor Address Detail" -msgstr "Kontakt-Kod pocztowy" - -#: src/properties.cpp:728 -#, fuzzy -msgid "Additional Licensor mailing address details." -msgstr "Informacja o pozycji AF" - -#: src/properties.cpp:729 -#, fuzzy -msgid "Licensor City" -msgstr "Meksyk" - -#: src/properties.cpp:729 -#, fuzzy -msgid "Licensor City name." -msgstr "Nazwa paÅ„stwa" - -#: src/properties.cpp:730 -#, fuzzy -msgid "Licensor State or Province" -msgstr "Stan/Prowincja" - -#: src/properties.cpp:730 -#, fuzzy -msgid "Licensor State or Province name." -msgstr "Stan/Prowincja" - -#: src/properties.cpp:731 -#, fuzzy -msgid "Licensor Postal Code" -msgstr "Kontakt-Kod pocztowy" - -#: src/properties.cpp:731 -#, fuzzy -msgid "Licensor Postal Code or Zip Code." -msgstr "Kontakt-Kod pocztowy" - -#: src/properties.cpp:732 -#, fuzzy -msgid "Licensor Country" -msgstr "PaÅ„stwo" - -#: src/properties.cpp:732 -#, fuzzy -msgid "Licensor Country name." -msgstr "Nazwa paÅ„stwa" - -#: src/properties.cpp:733 -#, fuzzy -msgid "Licensor Telephone Type 1" -msgstr "Numer seryjny obiektywu" - -#: src/properties.cpp:733 -#, fuzzy -msgid "Licensor Telephone Type 1." -msgstr "Numer seryjny obiektywu" - -#: src/properties.cpp:734 -#, fuzzy -msgid "Licensor Telephone 1" -msgstr "Numer seryjny obiektywu" - -#: src/properties.cpp:734 -#, fuzzy -msgid "Licensor Telephone number 1." -msgstr "Numer seryjny obiektywu" - -#: src/properties.cpp:735 -#, fuzzy -msgid "Licensor Telephone Type 2" -msgstr "Numer seryjny obiektywu" - -#: src/properties.cpp:735 -#, fuzzy -msgid "Licensor Telephone Type 2." -msgstr "Numer seryjny obiektywu" - -#: src/properties.cpp:736 -#, fuzzy -msgid "Licensor Telephone 2" -msgstr "Numer seryjny obiektywu" - -#: src/properties.cpp:736 -#, fuzzy -msgid "Licensor Telephone number 2." -msgstr "Numer seryjny obiektywu" - -#: src/properties.cpp:737 -#, fuzzy -msgid "Licensor Email" -msgstr "Nazwa lokalizacji" - -#: src/properties.cpp:737 -#, fuzzy -msgid "Licensor Email address." -msgstr "Kontakt-Kod pocztowy" - -#: src/properties.cpp:738 -#, fuzzy -msgid "Licensor URL" -msgstr "Bazowy URL" - -#: src/properties.cpp:738 -msgid "Licensor world wide web address." -msgstr "" - -#: src/properties.cpp:739 -#, fuzzy -msgid "Licensor Notes" -msgstr "WÅ‚aÅ›ciwoÅ›ci obiektywu" - -#: src/properties.cpp:739 -msgid "" -"Supplemental information for use in identifying and contacting the Licensor/" -"s." -msgstr "" - -#: src/properties.cpp:740 -#, fuzzy -msgid "PLUS Media Summary Code" -msgstr "GPS Tryb pomiaru" - -#: src/properties.cpp:740 -msgid "" -"A PLUS-standardized alphanumeric code string summarizing the media usages " -"included in the license." -msgstr "" - -#: src/properties.cpp:741 -#, fuzzy -msgid "License Start Date" -msgstr "Dane wykrywania sceny" - -#: src/properties.cpp:741 -#, fuzzy -msgid "The date on which the license takes effect." -msgstr "Data i czas zrobienia wideo." - -#: src/properties.cpp:742 -#, fuzzy -msgid "License End Date" -msgstr "Dane obiektywu" - -#: src/properties.cpp:742 -#, fuzzy -msgid "The date on which the license expires." -msgstr "Nazwa sceny." - -#: src/properties.cpp:743 -#, fuzzy -msgid "Media Constraints" -msgstr "PM Kontrast" - -#: src/properties.cpp:743 -msgid "" -"Constraints limiting the scope of PLUS Media Usage/s included in the license " -"to particular named media or to media not yet specifically defined in the " -"PLUS Media Matrix." -msgstr "" - -#: src/properties.cpp:744 -#, fuzzy -msgid "Region Constraints" -msgstr "PM Kontrast" - -#: src/properties.cpp:744 -msgid "" -"Constraints limiting the scope of geographic distribution to specific " -"cities, states, provinces or other areas to be included in or excluded from " -"the PLUS Regions specified in the Media Usages specified in the license." -msgstr "" - -#: src/properties.cpp:745 -#, fuzzy -msgid "Product or Service Constraints" -msgstr "Automatyczna regulacja kontrastu" - -#: src/properties.cpp:745 -msgid "" -"Constraints limiting usage of the image to promotion of/association with a " -"named product or service." -msgstr "" - -#: src/properties.cpp:746 -#, fuzzy -msgid "Image File Constraints" -msgstr "Ustawienia rozmiaru obrazu" - -#: src/properties.cpp:746 -msgid "" -"Constraints on the changing of the image file name, metadata or file type." -msgstr "" - -#: src/properties.cpp:747 -#, fuzzy -msgid "Image Alteration Constraints" -msgstr "Ustawienia jakoÅ›ci obrazu" - -#: src/properties.cpp:747 -msgid "" -"Constraints on alteration of the image by cropping, flipping, retouching, " -"colorization, de-colorization or merging." -msgstr "" - -#: src/properties.cpp:748 -#, fuzzy -msgid "Image Duplication Constraints" -msgstr "Ustawienia jakoÅ›ci obrazu" - -#: src/properties.cpp:748 -msgid "Constraints on the creation of duplicates of the image." -msgstr "" - -#: src/properties.cpp:749 -#, fuzzy -msgid "Model Release Status" -msgstr "Data udostÄ™pnienia" - -#: src/properties.cpp:749 -msgid "" -"Summarizes the availability and scope of model releases authorizing usage of " -"the likenesses of persons appearing in the photograph." -msgstr "" - -#: src/properties.cpp:750 -#, fuzzy -msgid "Model Release ID" -msgstr "Identyfikator modelu" - -#: src/properties.cpp:750 -msgid "Optional identifier associated with each Model Release." -msgstr "" - -#: src/properties.cpp:751 -msgid "Minor Model Age Disclosure" -msgstr "" - -#: src/properties.cpp:751 -msgid "" -"Age of the youngest model pictured in the image, at the time that the image " -"was made." -msgstr "" - -#: src/properties.cpp:752 -#, fuzzy -msgid "Property Release Status" -msgstr "Data udostÄ™pnienia" - -#: src/properties.cpp:752 -msgid "" -"Summarizes the availability and scope of property releases authorizing usage " -"of the properties appearing in the photograph." -msgstr "" - -#: src/properties.cpp:753 -#, fuzzy -msgid "Property Release ID" -msgstr "Identyfikator modelu" - -#: src/properties.cpp:753 -msgid "Optional identifier associated with each Property Release." -msgstr "" - -#: src/properties.cpp:754 -#, fuzzy -msgid "Other Constraints" -msgstr "Automatyczna regulacja kontrastu" - -#: src/properties.cpp:754 -#, fuzzy -msgid "Additional constraints on the license." -msgstr "Informacja o pozycji AF" - -#: src/properties.cpp:755 -#, fuzzy -msgid "Credit Line Required" -msgstr "Nie używany" - -#: src/properties.cpp:755 -msgid "Attribution requirements, if any." -msgstr "" - -#: src/properties.cpp:756 -msgid "Adult Content Warning" -msgstr "" - -#: src/properties.cpp:756 -msgid "Warning indicating the presence of content not suitable for minors." -msgstr "" - -#: src/properties.cpp:757 -#, fuzzy -msgid "Other License Requirements" -msgstr "Obiektyw" - -#: src/properties.cpp:757 -#, fuzzy -msgid "Additional license requirements." -msgstr "Informacja o pozycji AF" - -#: src/properties.cpp:758 -#, fuzzy -msgid "Terms and Conditions Text" -msgstr "Warunki robienia zdjÄ™cia" - -#: src/properties.cpp:758 -msgid "Terms and Conditions applying to the license." -msgstr "" - -#: src/properties.cpp:759 -#, fuzzy -msgid "Terms and Conditions URL" -msgstr "Warunki robienia zdjÄ™cia" - -#: src/properties.cpp:759 -msgid "URL for Terms and Conditions applying to the license." -msgstr "" - -#: src/properties.cpp:760 -#, fuzzy -msgid "Other License Conditions" -msgstr "Warunki robienia zdjÄ™cia" - -#: src/properties.cpp:760 -#, fuzzy -msgid "Additional license conditions." -msgstr "Informacja o pozycji AF" - -#: src/properties.cpp:761 -#, fuzzy -msgid "Identifies the type of image delivered." -msgstr "OkreÅ›la dostawcÄ™ i produkt" - -#: src/properties.cpp:762 -#, fuzzy -msgid "Licensor Image ID" -msgstr "ID obiektywu" - -#: src/properties.cpp:762 -msgid "Optional identifier assigned by the Licensor to the image." -msgstr "" - -#: src/properties.cpp:763 -#, fuzzy -msgid "Image File Name As Delivered" -msgstr "PowiÄ…zany format pliku obrazu" - -#: src/properties.cpp:763 -msgid "" -"Name of the image file delivered to the Licensee for use under the license." -msgstr "" - -#: src/properties.cpp:764 -#, fuzzy -msgid "Image File Format As Delivered" -msgstr "PowiÄ…zany format pliku obrazu" - -#: src/properties.cpp:764 -msgid "" -"File format of the image file delivered to the Licensee for use under the " -"license." -msgstr "" - -#: src/properties.cpp:765 -#, fuzzy -msgid "Image File Size As Delivered" -msgstr "PowiÄ…zany format pliku obrazu" - -#: src/properties.cpp:765 -msgid "Size of the image file delivered to the Licensee." -msgstr "" - -#: src/properties.cpp:766 -#, fuzzy -msgid "Copyright Status" -msgstr "Prawa autorskie" - -#: src/properties.cpp:766 -#, fuzzy -msgid "Copyright status of the image." -msgstr "Uwaga o prawach autorskich" - -#: src/properties.cpp:767 -#, fuzzy -msgid "Copyright Registration Number" -msgstr "Nazwa wÅ‚aÅ›ciciela" - -#: src/properties.cpp:767 -msgid "Copyright Registration Number, if any, applying to the licensed image." -msgstr "" - -#: src/properties.cpp:768 -#, fuzzy -msgid "First Publication Date" -msgstr "Data utworzenia postaci cyfrowej" - -#: src/properties.cpp:768 -#, fuzzy -msgid "The date on which the image was first published." -msgstr "Data wydania utworu." - -#: src/properties.cpp:769 -#, fuzzy -msgid "Copyright Owner" -msgstr "Prawa autorskie" - -#: src/properties.cpp:769 -msgid "Owner or owners of the copyright in the licensed image." -msgstr "" - -#: src/properties.cpp:770 -#, fuzzy -msgid "Copyright Owner ID" -msgstr "Prawa autorskie" - -#: src/properties.cpp:770 -msgid "Optional PLUS-ID identifying each Copyright Owner." -msgstr "" - -#: src/properties.cpp:771 -#, fuzzy -msgid "Copyright Owner Name" -msgstr "Nazwa wÅ‚aÅ›ciciela" - -#: src/properties.cpp:771 -#, fuzzy -msgid "Name of Copyright Owner." -msgstr "Prawa autorskie" - -#: src/properties.cpp:772 -#, fuzzy -msgid "Copyright Owner Image ID" -msgstr "Prawa autorskie" - -#: src/properties.cpp:772 -msgid "Optional identifier assigned by the Copyright Owner to the image." -msgstr "" - -#: src/properties.cpp:773 -#, fuzzy -msgid "Image Creator" -msgstr "Orientacja obrazu" - -#: src/properties.cpp:773 -#, fuzzy -msgid "Creator/s of the image." -msgstr "PrzesuniÄ™cie obrazu podglÄ…du" - -#: src/properties.cpp:774 -#, fuzzy -msgid "Image Creator ID" -msgstr "Orientacja obrazu" - -#: src/properties.cpp:774 -msgid "Optional PLUS-ID identifying each Image Creator." -msgstr "" - -#: src/properties.cpp:775 -#, fuzzy -msgid "Image Creator Name" -msgstr "Tonacja obrazu" - -#: src/properties.cpp:775 -#, fuzzy -msgid "Name of Image Creator." -msgstr "Åšrodek obrazu Raw" - -#: src/properties.cpp:776 -#, fuzzy -msgid "Image Creator Image ID" -msgstr "Orientacja obrazu" - -#: src/properties.cpp:776 -msgid "Optional identifier assigned by the Image Creator to the image." -msgstr "" - -#: src/properties.cpp:777 -#, fuzzy -msgid "Image Supplier ID" -msgstr "Unikalny identyfikator obrazu" - -#: src/properties.cpp:777 -msgid "Optional PLUS-ID identifying the Image Supplier." -msgstr "" - -#: src/properties.cpp:778 -#, fuzzy -msgid "Image Supplier Name" -msgstr "Rozmiar obrazu" - -#: src/properties.cpp:778 -#, fuzzy -msgid "Name of Image Supplier." -msgstr "Åšrodek obrazu Raw" - -#: src/properties.cpp:779 -#, fuzzy -msgid "Image Supplier Image ID" -msgstr "Unikalny identyfikator obrazu" - -#: src/properties.cpp:779 -msgid "Optional identifier assigned by the Image Supplier to the image." -msgstr "" - -#: src/properties.cpp:780 -#, fuzzy -msgid "Licensee Image ID" -msgstr "Licznik usuniÄ™tych zdjęć" - -#: src/properties.cpp:780 -msgid "Optional identifier assigned by the Licensee to the image." -msgstr "" - -#: src/properties.cpp:781 -#, fuzzy -msgid "Licensee Image Notes" -msgstr "Licznik usuniÄ™tych zdjęć" - -#: src/properties.cpp:781 -#, fuzzy -msgid "Notes added by Licensee." -msgstr "Nazwa sceny." - -#: src/properties.cpp:782 -#, fuzzy -msgid "Other Image Info" -msgstr "Obiektyw" - -#: src/properties.cpp:782 -#, fuzzy -msgid "Additional image information." -msgstr "Informacja o pozycji AF" - -#: src/properties.cpp:783 -#, fuzzy -msgid "License ID" -msgstr "ID obiektywu" - -#: src/properties.cpp:783 -msgid "Optional PLUS-ID assigned by the Licensor to the License." -msgstr "" - -#: src/properties.cpp:784 -#, fuzzy -msgid "Licensor Transaction ID" -msgstr "Data ważnoÅ›ci" - -#: src/properties.cpp:784 -msgid "" -"Identifier assigned by Licensor for Licensor's reference and internal use." -msgstr "" - -#: src/properties.cpp:785 -#, fuzzy -msgid "Licensee Transaction ID" -msgstr "Data ważnoÅ›ci" - -#: src/properties.cpp:785 -msgid "" -"Identifier assigned by Licensee for Licensee's reference and internal use." -msgstr "" - -#: src/properties.cpp:786 -#, fuzzy -msgid "Licensee Project Reference" -msgstr "Odniesienie do projektu" - -#: src/properties.cpp:786 -msgid "Project reference name or description assigned by Licensee." -msgstr "" - -#: src/properties.cpp:787 -#, fuzzy -msgid "License Transaction Date" -msgstr "Data ważnoÅ›ci" - -#: src/properties.cpp:787 -#, fuzzy -msgid "The date of the License Transaction." -msgstr "Nazwa sceny." - -#: src/properties.cpp:788 -#, fuzzy -msgid "Reuse" -msgstr "użyto" - -#: src/properties.cpp:788 -msgid "" -"Indicates whether a license is a repeat or an initial license. Reuse may " -"require that licenses stored in files previously delivered to the customer " -"be updated." -msgstr "" - -#: src/properties.cpp:789 -#, fuzzy -msgid "Other License Documents" -msgstr "Warunki robienia zdjÄ™cia" - -#: src/properties.cpp:789 -msgid "" -"Reference information for additional documents associated with the license." -msgstr "" - -#: src/properties.cpp:790 -#, fuzzy -msgid "Other License Info" -msgstr "Obiektyw" - -#: src/properties.cpp:790 -#, fuzzy -msgid "Additional license information." -msgstr "Informacja o pozycji AF" - -#: src/properties.cpp:791 src/properties.cpp:792 src/properties.cpp:793 -#: src/properties.cpp:794 src/properties.cpp:795 -msgid "Optional field for use at Licensor's discretion." -msgstr "" - -#: src/properties.cpp:794 -#, fuzzy -msgid "Custom 4" -msgstr "Użytkownika 1-4" - -#: src/properties.cpp:795 -#, fuzzy -msgid "Custom 5" -msgstr "Użytkownika 1" - -#: src/properties.cpp:796 -#, fuzzy -msgid "Custom 6" -msgstr "Użytkownika 1" - -#: src/properties.cpp:796 src/properties.cpp:797 src/properties.cpp:798 -#: src/properties.cpp:799 src/properties.cpp:800 -msgid "Optional field for use at Licensee's discretion." -msgstr "" - -#: src/properties.cpp:797 -#, fuzzy -msgid "Custom 7" -msgstr "Użytkownika 1" - -#: src/properties.cpp:798 -#, fuzzy -msgid "Custom 8" -msgstr "Użytkownika 1" - -#: src/properties.cpp:799 -#, fuzzy -msgid "Custom 9" -msgstr "Użytkownika 1" - -#: src/properties.cpp:800 -#, fuzzy -msgid "Custom 10" -msgstr "Użytkownika 1" - -#: src/properties.cpp:807 -msgid "Adult Content Warning Required" -msgstr "" - -#: src/properties.cpp:808 -#, fuzzy -msgid "Not Required" -msgstr "Nie używany" - -#: src/properties.cpp:814 -#, fuzzy -msgid "Protected" -msgstr "ID produktu" - -#: src/properties.cpp:815 -#, fuzzy -msgid "Public Domain" -msgstr "Poklatkowość" - -#: src/properties.cpp:821 -#, fuzzy -msgid "Credit Adjacent To Image" -msgstr "Obraz podglÄ…du" - -#: src/properties.cpp:822 -msgid "Credit in Credits Area" -msgstr "" - -#: src/properties.cpp:823 -#, fuzzy -msgid "Credit on Image" -msgstr "Obraz podglÄ…du" - -#: src/properties.cpp:824 -#, fuzzy -msgid "Not Require" -msgstr "NieokreÅ›lony" - -#: src/properties.cpp:829 -#, fuzzy -msgid "No Colorization" -msgstr "Solaryzacja" - -#: src/properties.cpp:830 -msgid "No Cropping" -msgstr "" - -#: src/properties.cpp:831 -#, fuzzy -msgid "No De-Colorization" -msgstr "Solaryzacja" - -#: src/properties.cpp:832 -msgid "No Flipping" -msgstr "" - -#: src/properties.cpp:833 -#, fuzzy -msgid "No Merging" -msgstr "Redukcja szumów" - -#: src/properties.cpp:834 -#, fuzzy -msgid "No Retouching" -msgstr "Redukcja szumów" - -#: src/properties.cpp:839 -msgid "Duplication Only as Necessary Under License" -msgstr "" - -#: src/properties.cpp:840 -#, fuzzy -msgid "No Duplication Constraints" -msgstr "Ustawienia jakoÅ›ci obrazu" - -#: src/properties.cpp:841 -#, fuzzy -msgid "No Duplication" -msgstr "Czas trwania" - -#: src/properties.cpp:846 -#, fuzzy -msgid "Maintain File Name" -msgstr "Nazwa pliku Raw" - -#: src/properties.cpp:847 -#, fuzzy -msgid "Maintain File Type" -msgstr "Nazwa pliku Raw" - -#: src/properties.cpp:848 -#, fuzzy -msgid "Maintain ID in File Name" -msgstr "Oryginalna nazwa pliku Raw" - -#: src/properties.cpp:849 -#, fuzzy -msgid "Maintain Metadata" -msgstr "Minolta data" - -#: src/properties.cpp:854 -#, fuzzy -msgid "Windows Bitmap (BMP)" -msgstr "Windows TytuÅ‚" - -#: src/properties.cpp:855 -msgid "Digital Negative (DNG)" -msgstr "" - -#: src/properties.cpp:856 -msgid "Encapsulated PostScript (EPS)" -msgstr "" - -#: src/properties.cpp:857 -#, fuzzy -msgid "Graphics Interchange Format (GIF)" -msgstr "Format JPEG" - -#: src/properties.cpp:858 -#, fuzzy -msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" -msgstr "Format JPEG" - -#: src/properties.cpp:860 -msgid "Macintosh Picture (PICT)" -msgstr "" - -#: src/properties.cpp:861 -msgid "Portable Network Graphics (PNG)" -msgstr "" - -#: src/properties.cpp:862 -msgid "Photoshop Document (PSD)" -msgstr "" - -#: src/properties.cpp:863 -msgid "Proprietary RAW Image Format" -msgstr "" - -#: src/properties.cpp:864 -#, fuzzy -msgid "Tagged Image File Format (TIFF)" -msgstr "PowiÄ…zany format pliku obrazu" - -#: src/properties.cpp:865 -msgid "Windows Media Photo (HD Photo)" -msgstr "" - -#: src/properties.cpp:870 -msgid "Greater than 50 MB" -msgstr "" - -#: src/properties.cpp:871 -#, fuzzy -msgid "Up to 1 MB" -msgstr "Optio A10" - -#: src/properties.cpp:872 -#, fuzzy -msgid "Up to 10 MB" -msgstr "Optio A10" - -#: src/properties.cpp:873 -#, fuzzy -msgid "Up to 30 MB" -msgstr "Optio 30" - -#: src/properties.cpp:874 -#, fuzzy -msgid "Up to 50 MB" -msgstr "Optio S50" - -#: src/properties.cpp:879 -#, fuzzy -msgid "Illustrated Image" -msgstr "PowiÄ…zana szerokość obrazu" - -#: src/properties.cpp:880 -msgid "Multimedia or Composited Image" -msgstr "" - -#: src/properties.cpp:882 -msgid "Photographic Image" -msgstr "" - -#: src/properties.cpp:888 -#, fuzzy -msgid "Cell" -msgstr "Żółty" - -#: src/properties.cpp:889 -msgid "FAX" -msgstr "" - -#: src/properties.cpp:891 -#, fuzzy -msgid "Pager" -msgstr "Menedżer" - -#: src/properties.cpp:892 -msgid "Work" -msgstr "" - -#: src/properties.cpp:897 -#, fuzzy -msgid "Age Unknown" -msgstr "Brak informacji" - -#: src/properties.cpp:898 -msgid "Age 25 or Over" -msgstr "" - -#: src/properties.cpp:899 -msgid "Age 24" -msgstr "" - -#: src/properties.cpp:900 -msgid "Age 23" -msgstr "" - -#: src/properties.cpp:901 -msgid "Age 22" -msgstr "" - -#: src/properties.cpp:902 -msgid "Age 21" -msgstr "" - -#: src/properties.cpp:903 -msgid "Age 20" -msgstr "" - -#: src/properties.cpp:904 -msgid "Age 19" -msgstr "" - -#: src/properties.cpp:905 -msgid "Age 18" -msgstr "" - -#: src/properties.cpp:906 -msgid "Age 17" -msgstr "" - -#: src/properties.cpp:907 -msgid "Age 16" -msgstr "" - -#: src/properties.cpp:908 -msgid "Age 15" -msgstr "" - -#: src/properties.cpp:909 -msgid "Age 14 or Under" -msgstr "" - -#: src/properties.cpp:915 src/properties.cpp:923 src/properties.cpp:930 -msgid "Not Applicable" -msgstr "" - -#: src/properties.cpp:916 -#, fuzzy -msgid "Unlimited Model Releases" -msgstr "Identyfikator modelu" - -#: src/properties.cpp:917 -msgid "Limited or Incomplete Model Releases" -msgstr "" - -#: src/properties.cpp:924 -msgid "Unlimited Property Releases" -msgstr "" - -#: src/properties.cpp:925 -msgid "Limited or Incomplete Property Releases" -msgstr "" - -#: src/properties.cpp:931 -msgid "Repeat Use" -msgstr "" - -#: src/properties.cpp:935 src/properties.cpp:944 -#, fuzzy -msgid "Fixture Identification" -msgstr "Identyfikacja modelu" - -#: src/properties.cpp:936 src/properties.cpp:945 -#, fuzzy -msgid "Status" -msgstr "GPS Stan" - -#: src/properties.cpp:936 src/properties.cpp:945 -msgid "A notation making the image unique" -msgstr "" - -#: src/properties.cpp:937 src/properties.cpp:946 -#, fuzzy -msgid "People" -msgstr "Purpurowy" - -#: src/properties.cpp:938 src/properties.cpp:947 -msgid "CatalogSets" -msgstr "" - -#: src/properties.cpp:938 src/properties.cpp:947 src/properties.cpp:978 -#: src/properties.cpp:982 -msgid "Descriptive markers of catalog items by content" -msgstr "" - -#: src/properties.cpp:953 -#, fuzzy -msgid "RegionInfo" -msgstr "Informacja o obiektywie" - -#: src/properties.cpp:953 -msgid "Microsoft Photo people-tagging metadata root" -msgstr "" - -#: src/properties.cpp:959 -msgid "DateRegionsValid" -msgstr "" - -#: src/properties.cpp:959 -#, fuzzy -msgid "Date the last region was created" -msgstr "Data wydania utworu." - -#: src/properties.cpp:960 src/properties.cpp:975 -#, fuzzy -msgid "Regions" -msgstr "Wersje" - -#: src/properties.cpp:960 -msgid "Contains Regions/person tags" -msgstr "" - -#: src/properties.cpp:966 -#, fuzzy -msgid "PersonDisplayName" -msgstr "Nazwy pÅ‚yt" - -#: src/properties.cpp:966 -msgid "Name of the person (in the given rectangle)" -msgstr "" - -#: src/properties.cpp:967 -msgid "Rectangle" -msgstr "" - -#: src/properties.cpp:967 -msgid "Rectangle that identifies the person within the photo" -msgstr "" - -#: src/properties.cpp:968 -msgid "PersonEmailDigest" -msgstr "" - -#: src/properties.cpp:968 -msgid "" -"SHA-1 encrypted message hash of the person's Windows Live e-mail address" -msgstr "" - -#: src/properties.cpp:969 -msgid "PersonLiveCID" -msgstr "" - -#: src/properties.cpp:969 -msgid "Signed decimal representation of the person's Windows Live CID" -msgstr "" - -#: src/properties.cpp:975 -msgid "Main structure containing region based information" -msgstr "" - -#: src/properties.cpp:976 -#, fuzzy -msgid "AppliedToDimensions" -msgstr "Rozmiar X " - -#: src/properties.cpp:976 -msgid "Width and height of image when storing region data" -msgstr "" - -#: src/properties.cpp:977 -msgid "RegionList" -msgstr "" - -#: src/properties.cpp:977 -#, fuzzy -msgid "List of Region structures" -msgstr "Struktura wersji" - -#: src/properties.cpp:978 -#, fuzzy -msgid "Area" -msgstr "Strefy AF" - -#: src/properties.cpp:979 -msgid "Type purpose of region (Face|Pet|Focus|BarCode)" -msgstr "" - -#: src/properties.cpp:980 -msgid "Name/ short description of content in image region" -msgstr "" - -#: src/properties.cpp:981 -msgid "" -"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" -"NotEvaluatedNotUsed)" -msgstr "" - -#: src/properties.cpp:982 -#, fuzzy -msgid "FocusUsage" -msgstr "Obszar ogniskowania" - -#: src/properties.cpp:983 -#, fuzzy -msgid "BarCodeValue" -msgstr "Krok bracketingu" - -#: src/properties.cpp:983 -msgid "Decoded BarCode value string" -msgstr "" - -#: src/properties.cpp:984 -#, fuzzy -msgid "Extensions" -msgstr "Wersje" - -#: src/properties.cpp:984 -msgid "Any top level XMP property to describe the region content" -msgstr "" - -#: src/sigmamn.cpp:62 -msgid "Resolution Mode" -msgstr "Tryb rozdzielczoÅ›ci" - -#: src/sigmamn.cpp:63 -msgid "Resolution mode" -msgstr "Tryb rozdzielczoÅ›ci" - -#: src/sigmamn.cpp:65 -msgid "Autofocus Mode" -msgstr "Tryb ogniskowania" - -#: src/sigmamn.cpp:66 -msgid "Autofocus mode" -msgstr "Tryb ogniskowania" - -#: src/sigmamn.cpp:68 -msgid "Focus Setting" -msgstr "Ustawienie ogniskowania" - -#: src/sigmamn.cpp:69 -msgid "Focus setting" -msgstr "Ustawienie ogniskowania" - -#: src/sigmamn.cpp:80 -msgid "Lens Range" -msgstr "Zakres obiektywu" - -#: src/sigmamn.cpp:81 -msgid "Lens focal length range" -msgstr "Zakres ogniskowych obiektywu" - -#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 -msgid "Shadow" -msgstr "CieÅ„" - -#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 -#, fuzzy -msgid "Highlight" -msgstr "ÅšwiatÅ‚o" - -#: src/sigmamn.cpp:104 -#, fuzzy -msgid "Fill Light" -msgstr "ÅšwiatÅ‚o wypeÅ‚niajÄ…ce" - -#: src/sigmamn.cpp:105 -msgid "X3 Fill light" -msgstr "ÅšwiatÅ‚o wypeÅ‚niajÄ…ce X3" - -#: src/sigmamn.cpp:107 -msgid "Color Adjustment" -msgstr "Regulacja koloru" - -#: src/sigmamn.cpp:108 -msgid "Color adjustment" -msgstr "Regulacja koloru" - -#: src/sigmamn.cpp:110 -msgid "Adjustment Mode" -msgstr "Tryb regulacji" - -#: src/sigmamn.cpp:111 -msgid "Adjustment mode" -msgstr "Tryb regulacji" - -#: src/sigmamn.cpp:122 -#, fuzzy -msgid "Auto Bracket" -msgstr "Auto bracketing" - -#: src/sigmamn.cpp:123 src/tags.cpp:1490 -#, fuzzy -msgid "Auto bracket" -msgstr "Auto bracketing" - -#: src/sigmamn.cpp:127 -msgid "Unknown SigmaMakerNote tag" -msgstr "Nieznany znacznik SigmaMakerNote" - -#: src/sigmamn.cpp:170 -msgid "8-Segment" -msgstr "8-polowy" - -#: src/sonymn.cpp:88 -#, fuzzy -msgid "Standard " -msgstr "Standardowy" - -#: src/sonymn.cpp:91 -msgid "Advanced Lv1" -msgstr "" - -#: src/sonymn.cpp:92 -msgid "Advanced Lv2" -msgstr "" - -#: src/sonymn.cpp:93 -msgid "Advanced Lv3" -msgstr "" - -#: src/sonymn.cpp:94 -msgid "Advanced Lv4" -msgstr "" - -#: src/sonymn.cpp:95 -msgid "Advanced Lv5" -msgstr "" - -#: src/sonymn.cpp:109 -#, fuzzy -msgid "Landscape " -msgstr "Pejzaż" - -#: src/sonymn.cpp:113 -#, fuzzy -msgid "Night Scene / Twilight" -msgstr "Scena nocna" - -#: src/sonymn.cpp:114 -msgid "Hi-Speed Shutter" -msgstr "" - -#: src/sonymn.cpp:115 -#, fuzzy -msgid "Twilight Portrait" -msgstr "Portret nocny" - -#: src/sonymn.cpp:116 -#, fuzzy -msgid "Soft Snap" -msgstr "GÅ‚adka skóra" - -#: src/sonymn.cpp:118 -#, fuzzy -msgid "Smile Shutter" -msgstr "Wolna migawka" - -#: src/sonymn.cpp:120 -#, fuzzy -msgid "High Sensitivity" -msgstr "Wysoka czuÅ‚ość" - -#: src/sonymn.cpp:121 -msgid "Advanced Sports Shooting" -msgstr "" - -#: src/sonymn.cpp:123 -#, fuzzy -msgid "Gourmet" -msgstr "Dokumenty" - -#: src/sonymn.cpp:125 -#, fuzzy -msgid "Handheld Twilight" -msgstr "ÅšwiatÅ‚o Å›wiecy" - -#: src/sonymn.cpp:126 -#, fuzzy -msgid "Anti Motion Blur" -msgstr "Ruchomy obraz" - -#: src/sonymn.cpp:128 -#, fuzzy -msgid "Backlight Correction HDR" -msgstr "Bez korekcji" - -#: src/sonymn.cpp:142 -#, fuzzy -msgid "On (Continuous)" -msgstr "CiÄ…gÅ‚y" - -#: src/sonymn.cpp:143 -#, fuzzy -msgid "On (Shooting)" -msgstr "Tryb robienia zdjÄ™cia" - -#: src/sonymn.cpp:151 -msgid "Plus" -msgstr "" - -#: src/sonymn.cpp:167 -#, fuzzy -msgid "White Flourescent" -msgstr "Fluorescencja biaÅ‚a" - -#: src/sonymn.cpp:168 -#, fuzzy -msgid "Cool White Flourescent" -msgstr "Fluorescencja biaÅ‚a" - -#: src/sonymn.cpp:169 -#, fuzzy -msgid "Day White Flourescent" -msgstr "Fluorescencja biaÅ‚a dzienna" - -#: src/sonymn.cpp:172 -#, fuzzy -msgid "Underwater 1 (Blue Water)" -msgstr "Podwodny szeroki 1" - -#: src/sonymn.cpp:173 -#, fuzzy -msgid "Underwater 2 (Green Water)" -msgstr "ZdjÄ™cie podwodne" - -#: src/sonymn.cpp:180 -msgid "Permanent-AF" -msgstr "" - -#: src/sonymn.cpp:188 -#, fuzzy -msgid "Center AF" -msgstr "Åšrodkowy" - -#: src/sonymn.cpp:189 -#, fuzzy -msgid "Spot AF" -msgstr "Punktowy" - -#: src/sonymn.cpp:190 -msgid "Flexible Spot AF" -msgstr "" - -#: src/sonymn.cpp:191 -#, fuzzy -msgid "Touch AF" -msgstr "Automatyczna korekcja balansu bieli" - -#: src/sonymn.cpp:192 -#, fuzzy -msgid "Manual Focus" -msgstr "RÄ™czne ostrzenie" - -#: src/sonymn.cpp:193 -#, fuzzy -msgid "Face Detected" -msgstr "Wykrywanie twarzy" - -#: src/sonymn.cpp:208 -#, fuzzy -msgid "Close Focus" -msgstr "Automatyczne ostrzenie" - -#: src/sonymn.cpp:224 -#, fuzzy -msgid "Exposure Bracketing" -msgstr "Bracketing ekspozycji" - -#: src/sonymn.cpp:298 src/sonymn.cpp:299 -#, fuzzy -msgid "Multi Burst Mode" -msgstr "Tryb zdjęć seryjnych" - -#: src/sonymn.cpp:301 src/sonymn.cpp:302 -#, fuzzy -msgid "Multi Burst Image Width" -msgstr "PowiÄ…zana szerokość obrazu" - -#: src/sonymn.cpp:304 src/sonymn.cpp:305 -#, fuzzy -msgid "Multi Burst Image Height" -msgstr "Wysokość obrazu" - -#: src/sonymn.cpp:315 -#, fuzzy -msgid "JPEG preview image" -msgstr "Obraz podglÄ…du" - -#: src/sonymn.cpp:341 -#, fuzzy -msgid "Auto HDR" -msgstr "Wysoki zakres" - -#: src/sonymn.cpp:342 -msgid "High Definition Range Mode" -msgstr "" - -#: src/sonymn.cpp:346 -#, fuzzy -msgid "Shot Information" -msgstr "Informacje o zdjÄ™ciu" - -#: src/sonymn.cpp:351 src/sonymn.cpp:352 -#, fuzzy -msgid "Sony Model ID" -msgstr "Identyfikator modelu" - -#: src/sonymn.cpp:354 src/sonymn.cpp:355 -#, fuzzy -msgid "Color Reproduction" -msgstr "Redukcja szumów kolorów" - -#: src/sonymn.cpp:369 src/sonymn.cpp:370 src/sonymn.cpp:423 src/sonymn.cpp:424 -#, fuzzy -msgid "Dynamic Range Optimizer" -msgstr "Ustawienia trybu dynamicznego" - -#: src/sonymn.cpp:378 src/sonymn.cpp:379 -#, fuzzy -msgid "Minolta MakerNote" -msgstr "Minolta data" - -#: src/sonymn.cpp:384 src/sonymn.cpp:385 -#, fuzzy -msgid "Full Image Size" -msgstr "Rozmiar obrazu" - -#: src/sonymn.cpp:387 -#, fuzzy -msgid "Preview Image Size" -msgstr "Obraz podglÄ…du" - -#: src/sonymn.cpp:388 -#, fuzzy -msgid "Preview image size" -msgstr "Obraz podglÄ…du" - -#: src/sonymn.cpp:402 src/sonymn.cpp:403 src/sonymn.cpp:613 src/sonymn.cpp:614 -msgid "AF Illuminator" -msgstr "" - -#: src/sonymn.cpp:405 src/sonymn.cpp:406 -#, fuzzy -msgid "JPEG Quality" -msgstr "Jakość" - -#: src/sonymn.cpp:411 src/sonymn.cpp:412 -#, fuzzy -msgid "Release Mode" -msgstr "Data udostÄ™pnienia" - -#: src/sonymn.cpp:415 -#, fuzzy -msgid "Shot number in continous burst mode" -msgstr "Numer sekwencji (jeÅ›li w serii)" - -#: src/sonymn.cpp:417 src/sonymn.cpp:418 -#, fuzzy -msgid "Anti-Blur" -msgstr "Anti-blur" - -#: src/sonymn.cpp:420 src/sonymn.cpp:421 src/sonymn.cpp:621 src/sonymn.cpp:622 -#, fuzzy -msgid "Long Exposure Noise Reduction" -msgstr "Redukcja szumów przy dÅ‚ugiej ekspozycji" - -#: src/sonymn.cpp:426 src/sonymn.cpp:427 -#, fuzzy -msgid "Intelligent Auto" -msgstr "Inteligentna automatyka" - -#: src/sonymn.cpp:434 -#, fuzzy -msgid "Unknown Sony1MakerNote tag" -msgstr "Nieznany znacznik SonyMakerNote" - -#: src/sonymn.cpp:448 -#, fuzzy -msgid "Continuous High" -msgstr "CiÄ…gÅ‚y, wysoki" - -#: src/sonymn.cpp:452 -#, fuzzy -msgid "Continuous Low" -msgstr "CiÄ…gÅ‚y, niski" - -#: src/sonymn.cpp:454 src/sonymn.cpp:455 -#, fuzzy -msgid "D-Range Optimizer Bracketing Low" -msgstr "Optymalizacja obrazu" - -#: src/sonymn.cpp:487 -#, fuzzy -msgid "Autumn" -msgstr "Aukcja" - -#: src/sonymn.cpp:493 -msgid "ADI" -msgstr "" - -#: src/sonymn.cpp:509 src/sonymn.cpp:510 src/sonymn.cpp:511 -msgid "StyleBox1" -msgstr "" - -#: src/sonymn.cpp:529 -#, fuzzy -msgid "Auto No Flash" -msgstr "Auto (BÅ‚ysk)" - -#: src/sonymn.cpp:584 src/sonymn.cpp:585 src/sonymn.cpp:690 src/sonymn.cpp:691 -#, fuzzy -msgid "Dynamic Range Optimizer Level" -msgstr "Ustawienia trybu dynamicznego" - -#: src/sonymn.cpp:587 src/sonymn.cpp:588 src/sonymn.cpp:693 src/sonymn.cpp:694 -#, fuzzy -msgid "Creative Style" -msgstr "Data utworzenia" - -#: src/sonymn.cpp:599 src/sonymn.cpp:600 -#, fuzzy -msgid "Zone Matching Value" -msgstr "PasujÄ…ca strefa" - -#: src/sonymn.cpp:617 src/sonymn.cpp:618 -#, fuzzy -msgid "AF With Shutter" -msgstr "Szybka migawka" - -#: src/sonymn.cpp:625 src/sonymn.cpp:626 -#, fuzzy -msgid "High ISO NoiseReduction" -msgstr "Redukcja szumów przy wysokim ISO" - -#: src/sonymn.cpp:629 src/sonymn.cpp:630 -#, fuzzy -msgid "Image Style" -msgstr "Rodzaj obrazu" - -#: src/sonymn.cpp:655 -#, fuzzy -msgid "Unknown Sony1 Camera Settings tag" -msgstr "Nieznany znacznik Canon Camera Settings 1" - -#: src/sonymn.cpp:719 -#, fuzzy -msgid "Unknown Sony1 Camera Settings 2 tag" -msgstr "Nieznany znacznik Canon Camera Settings 2" - -#: src/tags.cpp:184 -msgid "Unknown section" -msgstr "Nieznana sekcja" - -#: src/tags.cpp:185 -msgid "Image data structure" -msgstr "Struktura danych obrazu" - -#: src/tags.cpp:186 -msgid "Recording offset" -msgstr "PrzesuniÄ™cie zapisu" - -#: src/tags.cpp:187 -msgid "Image data characteristics" -msgstr "Charakterystyka danych obrazu" - -#: src/tags.cpp:188 -msgid "Other data" -msgstr "Inne dane" - -#: src/tags.cpp:189 -msgid "Exif data structure" -msgstr "Struktura danych Exif" - -#: src/tags.cpp:191 -msgid "Image configuration" -msgstr "Konfiguracja obrazu" - -#: src/tags.cpp:192 -msgid "User information" -msgstr "Dane użytkownika" - -#: src/tags.cpp:193 -msgid "Related file" -msgstr "PowiÄ…zany plik" - -#: src/tags.cpp:194 -msgid "Date and time" -msgstr "Data i czas" - -#: src/tags.cpp:195 -msgid "Picture taking conditions" -msgstr "Warunki robienia zdjÄ™cia" - -#: src/tags.cpp:196 -msgid "GPS information" -msgstr "Informacja GPS" - -#: src/tags.cpp:197 -msgid "Interoperability information" -msgstr "Informacje o wymienialnoÅ›ci" - -#: src/tags.cpp:198 -msgid "Vendor specific information" -msgstr "Informacje zależna od dostawcy" - -#: src/tags.cpp:199 -msgid "Adobe DNG tags" -msgstr "Znaczniki Adobe DNG" - -#: src/tags.cpp:200 -msgid "Panasonic RAW tags" -msgstr "Znaczniki Panasonic RAW" - -#: src/tags.cpp:201 -#, fuzzy -msgid "TIFF/EP tags" -msgstr "Standardowy ID TIFF/EP" - -#: src/tags.cpp:202 -msgid "TIFF PageMaker 6.0 tags" -msgstr "" - -#: src/tags.cpp:203 -#, fuzzy -msgid "Adobe OPI tags" -msgstr "Znaczniki Adobe DNG" - -#: src/tags.cpp:204 -msgid "Last section" -msgstr "Ostatnia sekcja" - -#: src/tags.cpp:220 -msgid "Primary image" -msgstr "Główny obraz" - -#: src/tags.cpp:221 -msgid "Thumbnail/Preview image" -msgstr "PodglÄ…d/miniatura" - -#: src/tags.cpp:222 -msgid "Primary image, Multi page file" -msgstr "Główny obraz, plik wielostronnicowy" - -#: src/tags.cpp:223 -msgid "Thumbnail/Preview image, Multi page file" -msgstr "PodglÄ…d/miniatura, plik wielostronnicowy" - -#: src/tags.cpp:224 -msgid "Primary image, Transparency mask" -msgstr "Główny obraz, maska przezroczystoÅ›ci" - -#: src/tags.cpp:225 -msgid "Thumbnail/Preview image, Transparency mask" -msgstr "PodglÄ…d/miniatura, maska przezroczystoÅ›ci" - -#: src/tags.cpp:226 -msgid "Primary image, Multi page file, Transparency mask" -msgstr "Główny obraz, obraz wielostronnicowy, maska przezroczystoÅ›ci" - -#: src/tags.cpp:227 src/tags.cpp:228 -msgid "Thumbnail/Preview image, Multi page file, Transparency mask" -msgstr "PodglÄ…d/miniatura, obraz wielostronnicowy, maska przezroczystoÅ›ci" - -#: src/tags.cpp:233 -#, fuzzy -msgid "Full-resolution image data" -msgstr "Nie można byÅ‚o odczytać danych obrazu" - -#: src/tags.cpp:234 -msgid "Reduced-resolution image data" -msgstr "" - -#: src/tags.cpp:235 -msgid "A single page of a multi-page image" -msgstr "" - -#: src/tags.cpp:241 -msgid "inch" -msgstr "cal" - -#: src/tags.cpp:248 -msgid "CCITT RLE" -msgstr "CCITT RLE" - -#: src/tags.cpp:249 -msgid "T4/Group 3 Fax" -msgstr "T4/Group 3 Fax" - -#: src/tags.cpp:250 -msgid "T6/Group 4 Fax" -msgstr "T6/Group 4 Fax" - -#: src/tags.cpp:251 -msgid "LZW" -msgstr "LZW" - -#: src/tags.cpp:252 -msgid "JPEG (old-style)" -msgstr "JPEG (stary format)" - -#: src/tags.cpp:253 -msgid "JPEG" -msgstr "JPEG" - -#: src/tags.cpp:254 -msgid "Adobe Deflate" -msgstr "Adobe Deflate" - -#: src/tags.cpp:255 -msgid "JBIG B&W" -msgstr "JBIG B&W" - -#: src/tags.cpp:256 -msgid "JBIG Color" -msgstr "JBIG Color" - -#: src/tags.cpp:257 -msgid "Next 2-bits RLE" -msgstr "2-bitowe RLE NeXT" - -#: src/tags.cpp:258 -msgid "Epson ERF Compressed" -msgstr "Epson ERF Compressed" - -#: src/tags.cpp:259 -#, fuzzy -msgid "Samsung SRW Compressed" -msgstr "Epson ERF Compressed" - -#: src/tags.cpp:260 -msgid "CCITT RLE 1-word" -msgstr "CCITT RLE 1-word" - -#: src/tags.cpp:261 -msgid "PackBits (Macintosh RLE)" -msgstr "PackBits (Macintosh RLE)" - -#: src/tags.cpp:262 -msgid "Thunderscan RLE" -msgstr "Thunderscan RLE" - -#: src/tags.cpp:263 -msgid "IT8 CT Padding" -msgstr "IT8 CT Padding" - -#: src/tags.cpp:264 -msgid "IT8 Linework RLE" -msgstr "IT8 Linework RLE" - -#: src/tags.cpp:265 -msgid "IT8 Monochrome Picture" -msgstr "IT8 Monochrome Picture" - -#: src/tags.cpp:266 -msgid "IT8 Binary Lineart" -msgstr "IT8 Binary Lineart" - -#: src/tags.cpp:267 -msgid "Pixar Film (10-bits LZW)" -msgstr "Pixar Film (LZW, 10-bitowe)" - -#: src/tags.cpp:268 -msgid "Pixar Log (11-bits ZIP)" -msgstr "Pixar Log (ZIP, 11-bitowe)" - -#: src/tags.cpp:269 -msgid "Pixar Deflate" -msgstr "Pixar Deflate" - -#: src/tags.cpp:270 -msgid "Kodak DCS Encoding" -msgstr "Kodak DCS Encoding" - -#: src/tags.cpp:271 -msgid "ISO JBIG" -msgstr "ISO JBIG" - -#: src/tags.cpp:272 -msgid "SGI Log Luminance RLE" -msgstr "SGI Log Luminance RLE" - -#: src/tags.cpp:273 -msgid "SGI Log 24-bits packed" -msgstr "SGI Log 24-bitowy upakowany" - -#: src/tags.cpp:274 -msgid "Leadtools JPEG 2000" -msgstr "Leadtools JPEG 2000" - -#: src/tags.cpp:275 -msgid "Nikon NEF Compressed" -msgstr "Nikon NEF Compressed" - -#: src/tags.cpp:276 -msgid "Kodak DCR Compressed" -msgstr "Kodak DCR Compressed" - -#: src/tags.cpp:277 -msgid "Pentax PEF Compressed" -msgstr "Pentax PEF Compressed" - -#: src/tags.cpp:282 -#, fuzzy -msgid "White Is Zero" -msgstr "Biel wynosi zero" - -#: src/tags.cpp:283 -#, fuzzy -msgid "Black Is Zero" -msgstr "CzerÅ„ wynosi zero" - -#: src/tags.cpp:284 -msgid "RGB" -msgstr "RGB" - -#: src/tags.cpp:285 -msgid "RGB Palette" -msgstr "Paleta RGB" - -#: src/tags.cpp:286 -msgid "Transparency Mask" -msgstr "Maska przezroczystoÅ›ci" - -#: src/tags.cpp:287 src/tags.cpp:326 -msgid "CMYK" -msgstr "CMYK" - -#: src/tags.cpp:288 -msgid "YCbCr" -msgstr "YCbCr" - -#: src/tags.cpp:289 -msgid "CIELab" -msgstr "CIELab" - -#: src/tags.cpp:290 -msgid "ICCLab" -msgstr "ICCLab" - -#: src/tags.cpp:291 -msgid "ITULab" -msgstr "ITULab" - -#: src/tags.cpp:292 -msgid "Color Filter Array" -msgstr "Tablica filtra koloru" - -#: src/tags.cpp:293 -msgid "Pixar LogL" -msgstr "Pixar LogL" - -#: src/tags.cpp:294 -msgid "Pixar LogLuv" -msgstr "Pixar LogLuv" - -#: src/tags.cpp:295 -msgid "Linear Raw" -msgstr "Liniowy Raw" - -#: src/tags.cpp:300 -msgid "No dithering or halftoning" -msgstr "" - -#: src/tags.cpp:301 -msgid "Ordered dither or halftone technique" -msgstr "" - -#: src/tags.cpp:302 -#, fuzzy -msgid "Randomized process" -msgstr "Proces zwykÅ‚y" - -#: src/tags.cpp:307 -#, fuzzy -msgid "top, left" -msgstr "Górny, lewy" - -#: src/tags.cpp:308 -#, fuzzy -msgid "top, right" -msgstr "Górny, prawy" - -#: src/tags.cpp:309 -#, fuzzy -msgid "bottom, right" -msgstr "Dolny, prawy" - -#: src/tags.cpp:310 -#, fuzzy -msgid "bottom, left" -msgstr "Dolny, lewy" - -#: src/tags.cpp:311 -#, fuzzy -msgid "left, top" -msgstr "Lewy, górny" - -#: src/tags.cpp:312 -#, fuzzy -msgid "right, top" -msgstr "Prawy, górny" - -#: src/tags.cpp:313 -#, fuzzy -msgid "right, bottom" -msgstr "Prawy, dolny" - -#: src/tags.cpp:314 src/tags.cpp:315 -#, fuzzy -msgid "left, bottom" -msgstr "Lewy, dolny" - -#: src/tags.cpp:320 -msgid "No prediction scheme used" -msgstr "" - -#: src/tags.cpp:321 -msgid "Horizontal differencing" -msgstr "" - -#: src/tags.cpp:327 -#, fuzzy -msgid "not CMYK" -msgstr "CMYK" - -#: src/tags.cpp:332 -msgid "Unsigned integer data" -msgstr "" - -#: src/tags.cpp:333 -msgid "Two's complement signed integer data" -msgstr "" - -#: src/tags.cpp:334 -msgid "IEEE floating point data" -msgstr "" - -#: src/tags.cpp:335 src/tags.cpp:336 -#, fuzzy -msgid "Undefined data format" -msgstr "NieobsÅ‚ugiwany format daty" - -#: src/tags.cpp:341 -#, fuzzy -msgid "Not indexed" -msgstr "NieokreÅ›lony" - -#: src/tags.cpp:342 src/tags.cpp:648 -msgid "Indexed" -msgstr "" - -#: src/tags.cpp:347 -msgid "A" -msgstr "" - -#: src/tags.cpp:348 -#, fuzzy -msgid "B" -msgstr "Balans bieli" - -#: src/tags.cpp:349 -msgid "C" -msgstr "" - -#: src/tags.cpp:350 -#, fuzzy -msgid "A+B-C" -msgstr "AF-C" - -#: src/tags.cpp:351 -msgid "A+((B-C)/2)" -msgstr "" - -#: src/tags.cpp:352 -msgid "B+((A-C)/2)" -msgstr "" - -#: src/tags.cpp:353 -msgid "(A+B)/2" -msgstr "" - -#: src/tags.cpp:358 -msgid "Centered" -msgstr "WyÅ›rodkowany" - -#: src/tags.cpp:359 -msgid "Co-sited" -msgstr "PoÅ‚ożone razem" - -#: src/tags.cpp:364 -msgid "No flash" -msgstr "Brak flesza" - -#: src/tags.cpp:366 -#, fuzzy -msgid "Fired, return light not detected" -msgstr "Z lampÄ…, bÅ‚ysk zwrotny nie wykryty" - -#: src/tags.cpp:367 -#, fuzzy -msgid "Fired, return light detected" -msgstr "Z lampÄ…, bÅ‚ysk zwrotny wykryty" - -#: src/tags.cpp:368 -msgid "Yes, did not fire" -msgstr "Tak, nie uruchomiÅ‚ siÄ™" - -#: src/tags.cpp:369 -msgid "Yes, compulsory" -msgstr "Tak, wymuszony" - -#: src/tags.cpp:370 -msgid "Yes, compulsory, return light not detected" -msgstr "Tak, wymuszony, Å›wiatÅ‚o zwrotne nie wykryte" - -#: src/tags.cpp:371 -msgid "Yes, compulsory, return light detected" -msgstr "Tak, wymuszony, Å›wiatÅ‚o zwrotne wykryte" - -#: src/tags.cpp:372 -msgid "No, compulsory" -msgstr "Nie, wymuszony" - -#: src/tags.cpp:373 -#, fuzzy -msgid "No, did not fire, return light not detected" -msgstr "Nie, nie uruchomiÅ‚ siÄ™, Å›wiatÅ‚o zwrotne nie wykryte" - -#: src/tags.cpp:374 -msgid "No, auto" -msgstr "Nie, automatycznie" - -#: src/tags.cpp:375 -msgid "Yes, auto" -msgstr "Tak, automatycznie" - -#: src/tags.cpp:376 -msgid "Yes, auto, return light not detected" -msgstr "Tak, automatycznie, Å›wiatÅ‚o zwrotne nie wykryte" - -#: src/tags.cpp:377 -msgid "Yes, auto, return light detected" -msgstr "Tak, automatycznie, Å›wiatÅ‚o zwrotne wykryte" - -#: src/tags.cpp:378 -msgid "No flash function" -msgstr "Brak funkcji flesza" - -#: src/tags.cpp:379 -msgid "No, no flash function" -msgstr "Nie, brak funkcji flesza" - -#: src/tags.cpp:380 -msgid "Yes, red-eye reduction" -msgstr "Tak, redukcja czerwonych oczu" - -#: src/tags.cpp:381 -msgid "Yes, red-eye reduction, return light not detected" -msgstr "Tak, redukcja czerwonych oczu, Å›wiatÅ‚o zwrotne nie wykryte" - -#: src/tags.cpp:382 -msgid "Yes, red-eye reduction, return light detected" -msgstr "Tak, redukcja czerwonych oczu, Å›wiatÅ‚o zwrotne wykryte" - -#: src/tags.cpp:383 -msgid "Yes, compulsory, red-eye reduction" -msgstr "Tak, wymuszony, redukcja czerwonych oczu" - -#: src/tags.cpp:384 -msgid "Yes, compulsory, red-eye reduction, return light not detected" -msgstr "Tak, wymuszony, redukcja czerwonych oczu, Å›wiatÅ‚o zwrotne nie wykryte" - -#: src/tags.cpp:385 -msgid "Yes, compulsory, red-eye reduction, return light detected" -msgstr "Tak, wymuszony, redukcja czerwonych oczu, Å›wiatÅ‚o zwrotne wykryte" - -#: src/tags.cpp:386 -msgid "No, red-eye reduction" -msgstr "Nie, redukcja czerwonych oczu" - -#: src/tags.cpp:387 -msgid "No, auto, red-eye reduction" -msgstr "Nie, automatycznie, redukcja czerwonych oczu" - -#: src/tags.cpp:388 -msgid "Yes, auto, red-eye reduction" -msgstr "Tak, automatycznie, redukcja czerwonych oczu" - -#: src/tags.cpp:389 -msgid "Yes, auto, red-eye reduction, return light not detected" -msgstr "" -"Tak, automatycznie, redukcja czerwonych oczu, Å›wiatÅ‚o zwrotne nie wykryte" - -#: src/tags.cpp:390 -msgid "Yes, auto, red-eye reduction, return light detected" -msgstr "Tak, automatycznie, redukcja czerwonych oczu, Å›wiatÅ‚o zwrotne wykryte" - -#: src/tags.cpp:395 -msgid "Rectangular (or square) layout" -msgstr "UkÅ‚ad prostokÄ…tny (lub kwadratowy)" - -#: src/tags.cpp:396 -msgid "Staggered layout A: even columns are offset down by 1/2 row" -msgstr "" - -#: src/tags.cpp:397 -msgid "Staggered layout B: even columns are offset up by 1/2 row" -msgstr "" - -#: src/tags.cpp:398 -msgid "Staggered layout C: even rows are offset right by 1/2 column" -msgstr "" - -#: src/tags.cpp:399 -msgid "Staggered layout D: even rows are offset left by 1/2 column" -msgstr "" - -#: src/tags.cpp:404 -msgid "Processing Software" -msgstr "Program" - -#: src/tags.cpp:405 -msgid "The name and version of the software used to post-process the picture." -msgstr "Nazwa i wersja oprogramowania użytego do obróbki obrazu." - -#: src/tags.cpp:408 -msgid "New Subfile Type" -msgstr "Nowy typ podpliku" - -#: src/tags.cpp:409 -msgid "A general indication of the kind of data contained in this subfile." -msgstr "Ogólne oznaczenie rodzaju danych zawartych w tym podpliku." - -#: src/tags.cpp:411 -#, fuzzy -msgid "Subfile Type" -msgstr "Nowy typ podpliku" - -#: src/tags.cpp:412 -#, fuzzy -msgid "" -"A general indication of the kind of data contained in this subfile. This " -"field is deprecated. The NewSubfileType field should be used instead." -msgstr "Ogólne oznaczenie rodzaju danych zawartych w tym podpliku." - -#: src/tags.cpp:416 -msgid "" -"The number of columns of image data, equal to the number of pixels per row. " -"In JPEG compressed data a JPEG marker is used instead of this tag." -msgstr "" -"Liczba kolumn danych obrazu, różna liczbie pikseli w wierszu. W danych " -"skompresowanych algorytmem JPEG zamiast tego znacznika używany jest znacznik " -"JPEG." - -#: src/tags.cpp:421 -msgid "" -"The number of rows of image data. In JPEG compressed data a JPEG marker is " -"used instead of this tag." -msgstr "" -"Liczba wierszy danych obrazu. W danych skompresowanych algorytmem JPEG " -"zamiast tego znacznika używany jest znacznik JPEG." - -#: src/tags.cpp:424 -msgid "Bits per Sample" -msgstr "Bitów na próbkÄ™" - -#: src/tags.cpp:425 -msgid "" -"The number of bits per image component. In this standard each component of " -"the image is 8 bits, so the value for this tag is 8. See also " -". In JPEG compressed data a JPEG marker is used instead of " -"this tag." -msgstr "" -"Liczba bitów na skÅ‚adowÄ… obrazu. W tym standardzie każda skÅ‚adowa obrazu ma " -"8 bitów, wiÄ™c wartość tego znacznika to 8. Patrz także . W " -"danych skompresowanych algorytmem JPEG zamiast tego znacznika używany jest " -"znacznik JPEG." - -#: src/tags.cpp:431 -msgid "" -"The compression scheme used for the image data. When a primary image is JPEG " -"compressed, this designation is not necessary and is omitted. When " -"thumbnails use JPEG compression, this tag value is set to 6." -msgstr "" -"Algorytm kompresji użyty dla danych obrazu. JeÅ›li główny obraz jest " -"skompresowany algorytmem JPEG, to oznaczenie nie jest potrzebne i jest " -"pomijane. JeÅ›li miniaturki używajÄ… kompresji JPEG, ten znacznik ma wartość 6." - -#: src/tags.cpp:437 -msgid "" -"The pixel composition. In JPEG compressed data a JPEG marker is used instead " -"of this tag." -msgstr "" -"SkÅ‚adowe pikseli. W danych skompresowanych algorytmem JPEG zamiast tego " -"znacznika używany jest znacznik JPEG." - -#: src/tags.cpp:440 -msgid "Threshholding" -msgstr "" - -#: src/tags.cpp:441 -msgid "" -"For black and white TIFF files that represent shades of gray, the technique " -"used to convert from gray to black and white pixels." -msgstr "" - -#: src/tags.cpp:444 -#, fuzzy -msgid "Cell Width" -msgstr "PrzyciÄ™cie szerokość" - -#: src/tags.cpp:445 -msgid "" -"The width of the dithering or halftoning matrix used to create a dithered or " -"halftoned bilevel file." -msgstr "" - -#: src/tags.cpp:448 -#, fuzzy -msgid "Cell Length" -msgstr "DÅ‚ugość kafelka" - -#: src/tags.cpp:449 -msgid "" -"The length of the dithering or halftoning matrix used to create a dithered " -"or halftoned bilevel file." -msgstr "" - -#: src/tags.cpp:452 -msgid "Fill Order" -msgstr "Kolejność wypeÅ‚niania" - -#: src/tags.cpp:453 -msgid "The logical order of bits within a byte" -msgstr "Logiczny porzÄ…dek bitów wewnÄ…trz bajta" - -#: src/tags.cpp:455 -msgid "Document Name" -msgstr "Nazwa dokumentu" - -#: src/tags.cpp:456 -msgid "The name of the document from which this image was scanned" -msgstr "Nazwa dokumentu, z którego obraz zostaÅ‚ zeskanowany" - -#: src/tags.cpp:459 -msgid "" -"A character string giving the title of the image. It may be a comment such " -"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " -"used. When a 2-bytes code is necessary, the Exif Private tag " -"is to be used." -msgstr "" -"ÅaÅ„cuch znaków nadajÄ…cy obrazowi tytuÅ‚. Może być komentarzem takim jak " -"\"piknik firmowy 1988\" lub podobnym. Nie można używać dwubajtowych kodów " -"znaków. JeÅ›li dwubajtowe kody znaków sÄ… potrzebne, należy użyć znacznika " -"Exif Private ." - -#: src/tags.cpp:466 -msgid "" -"The manufacturer of the recording equipment. This is the manufacturer of the " -"DSC, scanner, video digitizer or other equipment that generated the image. " -"When the field is left blank, it is treated as unknown." -msgstr "" -"Producent urzÄ…dzenia nagrywajÄ…cego. Jest to producent DSC, skanera, " -"digitalizera albo innego urzÄ…dzenia, które wygenerowaÅ‚o obraz. JeÅ›li to pole " -"jest puste, jest traktowane jako nieznane." - -#: src/tags.cpp:472 -msgid "" -"The model name or model number of the equipment. This is the model name or " -"number of the DSC, scanner, video digitizer or other equipment that " -"generated the image. When the field is left blank, it is treated as unknown." -msgstr "" -"Nazwa lub numer modelu urzÄ…dzenia. Jest to nazwa modelu lub numer DSC, " -"skanera, digitalizera albo innego urzÄ…dzenia, które wygenerowaÅ‚o obraz. " -"JeÅ›li to pole jest puste, jest traktowane jako nieznane." - -#: src/tags.cpp:478 -msgid "" -"For each strip, the byte offset of that strip. It is recommended that this " -"be selected so the number of strip bytes does not exceed 64 Kbytes. With " -"JPEG compressed data this designation is not needed and is omitted. See also " -" and ." -msgstr "" -"Bajtowe przesuniÄ™cie pasa dla każdego pasa. Zaleca siÄ™ takie dobranie tej " -"wartoÅ›ci, by liczba bajtów pasa nie przekraczaÅ‚a 64kB. W danych " -"skompresowanych algorytmem JPEG to oznaczenie nie jest potrzebne i jest " -"pomijane. Patrz także i ." - -#: src/tags.cpp:485 -msgid "The image orientation viewed in terms of rows and columns." -msgstr "Orientacja obrazu widziana w kategoriach wierszy i kolumn." - -#: src/tags.cpp:487 -msgid "Samples per Pixel" -msgstr "Próbek na piksel" - -#: src/tags.cpp:488 -msgid "" -"The number of components per pixel. Since this standard applies to RGB and " -"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " -"JPEG marker is used instead of this tag." -msgstr "" -"Liczba skÅ‚adowych na piksel. Ponieważ ten standard odnosi siÄ™ do obrazów RGB " -"i YCbCr, wartość tego znacznika wynosi 3. W danych skompresowanych " -"algorytmem JPEG zamiast tego znacznika używany jest znacznik JPEG." - -#: src/tags.cpp:492 -msgid "Rows per Strip" -msgstr "Wierszy na pas" - -#: src/tags.cpp:493 -msgid "" -"The number of rows per strip. This is the number of rows in the image of one " -"strip when an image is divided into strips. With JPEG compressed data this " -"designation is not needed and is omitted. See also and " -"." -msgstr "" -"Liczba wierszy na pas. Jest to liczba wierszy w obrazie jednego pasa kiedy " -"obraz jest podzielony na pasy. W danych skompresowanych algorytmem JPEG to " -"oznaczenie nie jest potrzebne i jest pomijane. Patrz także i " -"." - -#: src/tags.cpp:498 -msgid "Strip Byte Count" -msgstr "Liczba bajtów na pas" - -#: src/tags.cpp:499 -msgid "" -"The total number of bytes in each strip. With JPEG compressed data this " -"designation is not needed and is omitted." -msgstr "" -"CaÅ‚kowita liczba bajtów w każdym pasie. W danych skompresowanych algorytmem " -"JPEG to oznaczenie nie jest potrzebne i jest pomijane." - -#: src/tags.cpp:502 -msgid "X-Resolution" -msgstr "Rozdzielczość Y" - -#: src/tags.cpp:503 -msgid "" -"The number of pixels per in the direction. " -"When the image resolution is unknown, 72 [dpi] is designated." -msgstr "" -"Liczba pikseli na jednostkÄ™ rozdzielczoÅ›ci () w kierunku " -"szerokoÅ›ci (). Kiedy rozdzielczość obrazu jest nieznana, " -"przyjmuje siÄ™ 72 [dpi]." - -#: src/tags.cpp:506 -msgid "Y-Resolution" -msgstr "Rozdzielczość Y" - -#: src/tags.cpp:507 -msgid "" -"The number of pixels per in the direction. " -"The same value as is designated." -msgstr "" -"Liczba pikseli na jednostkÄ™ rozdzielczoÅ›ci () w kierunku " -"dÅ‚ugoÅ›ci (). ZakÅ‚adana jest taka sama wartość jak ." - -#: src/tags.cpp:511 -msgid "" -"Indicates whether pixel components are recorded in a chunky or planar " -"format. In JPEG compressed files a JPEG marker is used instead of this tag. " -"If this field does not exist, the TIFF default of 1 (chunky) is assumed." -msgstr "" -"Oznaczenie, czy skÅ‚adowe pikseli sÄ… zapisane w formacie blokowym czy " -"pÅ‚askim. W plikach skompresowanych algorytmem JPEG zamiast tego znacznika " -"używany jest znacznik JPEG. JeÅ›li to pole nie istnieje, domyÅ›lne dla TIFF " -"jest 1 (blokowy)." - -#: src/tags.cpp:516 -#, fuzzy -msgid "Gray Response Unit" -msgstr "Limit odpowiedzi linearnej" - -#: src/tags.cpp:517 -msgid "The precision of the information contained in the GrayResponseCurve." -msgstr "" - -#: src/tags.cpp:519 -#, fuzzy -msgid "Gray Response Curve" -msgstr "Krzywa tonalna" - -#: src/tags.cpp:520 -msgid "For grayscale data, the optical density of each possible pixel value." -msgstr "" - -#: src/tags.cpp:522 -#, fuzzy -msgid "T4 Options" -msgstr "Opcja" - -#: src/tags.cpp:523 -msgid "T.4-encoding options." -msgstr "" - -#: src/tags.cpp:525 -#, fuzzy -msgid "T6 Options" -msgstr "Opcja" - -#: src/tags.cpp:526 -msgid "T.6-encoding options." -msgstr "" - -#: src/tags.cpp:529 -msgid "" -"The unit for measuring and . The same unit is " -"used for both and . If the image resolution is " -"unknown, 2 (inches) is designated." -msgstr "" -"Jednostka do wyrażania i . Dla obu wielkoÅ›ci " -"używana jest ta sama jednostka. JeÅ›li rozdzielczość jest nieznana, " -"przyjmowane jest 2 (cale)." - -#: src/tags.cpp:534 -msgid "" -"A transfer function for the image, described in tabular style. Normally this " -"tag is not necessary, since color space is specified in the color space " -"information tag ()." -msgstr "" -"Funkcja przejÅ›cia dla obrazu, opisana w postaci tabelarycznej. Zwykle ten " -"znacznik nie jest potrzebny, ponieważ przestrzeÅ„ kolorów podana jest w " -"znaczniku informacji o przestrzeni kolorów ()." - -#: src/tags.cpp:539 -msgid "" -"This tag records the name and version of the software or firmware of the " -"camera or image input device used to generate the image. The detailed format " -"is not specified, but it is recommended that the example shown below be " -"followed. When the field is left blank, it is treated as unknown." -msgstr "" -"Ten znacznik przechowuje nazwÄ™ i wersjÄ™ oprogramowania lub firmware aparatu " -"albo innego urzÄ…dzenia wejÅ›ciowego obrazu użytego do utworzenia obrazu. " -"Szczegółowy format nie jest okreÅ›lony, ale zaleca siÄ™ naÅ›ladowanie " -"poniższego przykÅ‚adu. JeÅ›li pole jest puste, jest traktowane jako nieznane." - -#: src/tags.cpp:546 -msgid "" -"The date and time of image creation. In Exif standard, it is the date and " -"time the file was changed." -msgstr "" -"Data i czas utworzenia obrazu. W standardzie Exif jest to data i czas zmiany " -"pliku." - -#: src/tags.cpp:550 -msgid "" -"This tag records the name of the camera owner, photographer or image " -"creator. The detailed format is not specified, but it is recommended that " -"the information be written as in the example below for ease of " -"Interoperability. When the field is left blank, it is treated as unknown. " -"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " -"Ken James\"" -msgstr "" -"Ten znacznik przechowuje nazwÄ™ wÅ‚aÅ›ciciela aparatu, fotografa lub twórcy " -"obrazu. Szczegółowy format nie jest okreÅ›lony, ale zaleca siÄ™ naÅ›ladowanie " -"poniższego przykÅ‚adu dla uÅ‚atwienia wymienialnoÅ›ci. JeÅ›li pole jest puste, " -"jest traktowane jako nieznane. PrzykÅ‚ad: \"Camera owner, John Smith; " -"Photographer, Michael Brown; Image creator, Ken James\"" - -#: src/tags.cpp:557 -#, fuzzy -msgid "Host Computer" -msgstr "Komputer " - -#: src/tags.cpp:558 -msgid "" -"This tag records information about the host computer used to generate the " -"image." -msgstr "" -"Ten znacznik zawiera informacjÄ™ o komputerze użytym do utworzenia obrazu." - -#: src/tags.cpp:561 -#, fuzzy -msgid "Predictor" -msgstr "Wyrazy uznania" - -#: src/tags.cpp:562 -msgid "" -"A predictor is a mathematical operator that is applied to the image data " -"before an encoding scheme is applied." -msgstr "" - -#: src/tags.cpp:566 -msgid "" -"The chromaticity of the white point of the image. Normally this tag is not " -"necessary, since color space is specified in the colorspace information tag " -"()." -msgstr "" -"Barwa biaÅ‚ego punktu obrazu. Zwykle ten znacznik nie jest potrzebny, " -"ponieważ przestrzeÅ„ kolorów podana jest w znaczniku informacji o przestrzeni " -"kolorów ()." - -#: src/tags.cpp:571 -msgid "" -"The chromaticity of the three primary colors of the image. Normally this tag " -"is not necessary, since colorspace is specified in the colorspace " -"information tag ()." -msgstr "" -"Barwa trzech głównych kolorów obrazu. Zwykle ten znacznik nie jest " -"potrzebny, ponieważ przestrzeÅ„ kolorów podana jest w znaczniku informacji o " -"przestrzeni kolorów ()." - -#: src/tags.cpp:575 -#, fuzzy -msgid "Color Map" -msgstr "Matryca kolorów" - -#: src/tags.cpp:576 -msgid "" -"A color map for palette color images. This field defines a Red-Green-Blue " -"color map (often called a lookup table) for palette-color images. In a " -"palette-color image, a pixel value is used to index into an RGB lookup table." -msgstr "" - -#: src/tags.cpp:581 -msgid "Halftone Hints" -msgstr "" - -#: src/tags.cpp:582 -msgid "" -"The purpose of the HalftoneHints field is to convey to the halftone function " -"the range of gray levels within a colorimetrically-specified image that " -"should retain tonal detail." -msgstr "" - -#: src/tags.cpp:586 -msgid "Tile Width" -msgstr "Szerokość kafelka" - -#: src/tags.cpp:587 -msgid "The tile width in pixels. This is the number of columns in each tile." -msgstr "" -"Szerokość kafelka w pikselach. Jest to liczba kolumna w każdym kafelku." - -#: src/tags.cpp:589 -msgid "Tile Length" -msgstr "DÅ‚ugość kafelka" - -#: src/tags.cpp:590 -msgid "" -"The tile length (height) in pixels. This is the number of rows in each tile." -msgstr "" -"DÅ‚ugość (wysokość) kafelka w pikselach. Jest to liczba wierszy w każdym " -"kafelku." - -#: src/tags.cpp:592 -msgid "Tile Offsets" -msgstr "PrzesuniÄ™cia kafelków" - -#: src/tags.cpp:593 -msgid "" -"For each tile, the byte offset of that tile, as compressed and stored on " -"disk. The offset is specified with respect to the beginning of the TIFF " -"file. Note that this implies that each tile has a location independent of " -"the locations of other tiles." -msgstr "" -"Dla każdego kafelka, przesuniÄ™cie w bajtach tego kafelka, skompresowanego i " -"zapisanego na dysku. PrzesuniÄ™cie jest podane z uwzglÄ™dnieniem poczÄ…tku " -"pliku TIFF. Uwaga: powoduje to że każdy plik posiada poÅ‚ożenie niezależne od " -"poÅ‚ożeÅ„ innych plików." - -#: src/tags.cpp:598 -msgid "Tile Byte Counts" -msgstr "Liczby bajtów kafelków" - -#: src/tags.cpp:599 -msgid "" -"For each tile, the number of (compressed) bytes in that tile. See " -"TileOffsets for a description of how the byte counts are ordered." -msgstr "" -"Dla każdego kafelka, liczba (skompresowanych) bajtów w tym kafelku. Zobacz " -"opis, w jaki sposób liczby bajtów sÄ… uporzÄ…dkowane w opisie znacznika " -"\"PrzesuniÄ™cia kafelków\"." - -#: src/tags.cpp:602 -msgid "SubIFD Offsets" -msgstr "PrzesuniÄ™cia SubIFD" - -#: src/tags.cpp:603 -msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." -msgstr "" -"Zdefiniowane przez Adobe Corporation, aby pozwolić na drzewa TIFF w pliku " -"TIFF." - -#: src/tags.cpp:605 -#, fuzzy -msgid "Ink Set" -msgstr "Ustaw" - -#: src/tags.cpp:606 -msgid "" -"The set of inks used in a separated (PhotometricInterpretation=5) image." -msgstr "" - -#: src/tags.cpp:608 -#, fuzzy -msgid "Ink Names" -msgstr "Nazwa wÅ‚aÅ›ciciela" - -#: src/tags.cpp:609 -msgid "" -"The name of each ink used in a separated (PhotometricInterpretation=5) image." -msgstr "" - -#: src/tags.cpp:611 -#, fuzzy -msgid "Number Of Inks" -msgstr "Liczba uderzeÅ„" - -#: src/tags.cpp:612 -msgid "" -"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " -"samples." -msgstr "" - -#: src/tags.cpp:614 -#, fuzzy -msgid "Dot Range" -msgstr "Dynamiczny zakres" - -#: src/tags.cpp:615 -#, c-format -msgid "The component values that correspond to a 0% dot and 100% dot." -msgstr "" - -#: src/tags.cpp:617 -#, fuzzy -msgid "Target Printer" -msgstr "Docelowa przysÅ‚ona" - -#: src/tags.cpp:618 -msgid "" -"A description of the printing environment for which this separation is " -"intended." -msgstr "" - -#: src/tags.cpp:620 -#, fuzzy -msgid "Extra Samples" -msgstr "Bitów na próbkÄ™" - -#: src/tags.cpp:621 -msgid "" -"Specifies that each pixel has m extra components whose interpretation is " -"defined by one of the values listed below." -msgstr "" - -#: src/tags.cpp:624 -#, fuzzy -msgid "Sample Format" -msgstr "Format pliku" - -#: src/tags.cpp:625 -msgid "This field specifies how to interpret each data sample in a pixel." -msgstr "" - -#: src/tags.cpp:627 -#, fuzzy -msgid "SMin Sample Value" -msgstr "CzÄ™stotliwość próbkowania dźwiÄ™ku" - -#: src/tags.cpp:628 -msgid "This field specifies the minimum sample value." -msgstr "" - -#: src/tags.cpp:630 -#, fuzzy -msgid "SMax Sample Value" -msgstr "NajwiÄ™ksza wartość przysÅ‚ony" - -#: src/tags.cpp:631 -msgid "This field specifies the maximum sample value." -msgstr "" - -#: src/tags.cpp:633 -msgid "Transfer Range" -msgstr "Zakres przejÅ›cia" - -#: src/tags.cpp:634 -#, fuzzy -msgid "Expands the range of the TransferFunction" -msgstr "Rozszerza zasiÄ™g funkcji zakresu przejÅ›cia" - -#: src/tags.cpp:636 -msgid "Clip Path" -msgstr "" - -#: src/tags.cpp:637 -msgid "" -"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " -"creation functionality." -msgstr "" - -#: src/tags.cpp:640 -msgid "X Clip Path Units" -msgstr "" - -#: src/tags.cpp:641 -msgid "" -"The number of units that span the width of the image, in terms of integer " -"ClipPath coordinates." -msgstr "" - -#: src/tags.cpp:644 -msgid "Y Clip Path Units" -msgstr "" - -#: src/tags.cpp:645 -msgid "" -"The number of units that span the height of the image, in terms of integer " -"ClipPath coordinates." -msgstr "" - -#: src/tags.cpp:649 -msgid "" -"Indexed images are images where the 'pixels' do not represent color values, " -"but rather an index (usually 8-bit) into a separate color table, the " -"ColorMap." -msgstr "" - -#: src/tags.cpp:653 -#, fuzzy -msgid "JPEG tables" -msgstr "Proces JPEG" - -#: src/tags.cpp:654 -msgid "" -"This optional tag may be used to encode the JPEG quantization andHuffman " -"tables for subsequent use by the JPEG decompression process." -msgstr "" - -#: src/tags.cpp:657 -msgid "OPI Proxy" -msgstr "" - -#: src/tags.cpp:658 -msgid "" -"OPIProxy gives information concerning whether this image is a low-resolution " -"proxy of a high-resolution image (Adobe OPI)." -msgstr "" - -#: src/tags.cpp:661 -msgid "JPEG Process" -msgstr "Proces JPEG" - -#: src/tags.cpp:662 -msgid "This field indicates the process used to produce the compressed data" -msgstr "Pole to okreÅ›la proces użyty do wyprodukowania skompresowanych danych" - -#: src/tags.cpp:664 -msgid "JPEG Interchange Format" -msgstr "Format JPEG" - -#: src/tags.cpp:665 -msgid "" -"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " -"is not used for primary image JPEG data." -msgstr "" -"PoÅ‚ożenie poczÄ…tkowego bajta (SOI) danych skompresowanej miniaturki JPEG. " -"Nie jest używane dla danych JPEG głównego obrazu." - -#: src/tags.cpp:668 -msgid "JPEG Interchange Format Length" -msgstr "DÅ‚ugość formatu JPEG" - -#: src/tags.cpp:669 -msgid "" -"The number of bytes of JPEG compressed thumbnail data. This is not used for " -"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " -"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " -"be recorded. Compressed thumbnails must be recorded in no more than 64 " -"Kbytes, including all other data to be recorded in APP1." -msgstr "" -"Liczba bajtów danych skompresowanej miniaturki JPEG. Nie jest używana dla " -"danych JPEG głównego obrazu. Miniaturki JPEG nie sÄ… dzielone, ale zapisywane " -"jako ciÄ…gÅ‚y strumieÅ„ JPEG od SOI do EOI. Znaczniki Appn i COM nie powinny " -"być używane. Skompresowane miniaturki muszÄ… być zapisane w co najwyżej 64 " -"kB, wÅ‚Ä…cznie ze wszystkimi innymi danymi zapisanymi w APP1." - -#: src/tags.cpp:676 -msgid "JPEG Restart Interval" -msgstr "" - -#: src/tags.cpp:677 -#, fuzzy -msgid "" -"This Field indicates the length of the restart interval used in the " -"compressed image data." -msgstr "Pole to okreÅ›la proces użyty do wyprodukowania skompresowanych danych" - -#: src/tags.cpp:680 -msgid "JPEG Lossless Predictors" -msgstr "" - -#: src/tags.cpp:681 -msgid "" -"This Field points to a list of lossless predictor-selection values, one per " -"component." -msgstr "" - -#: src/tags.cpp:684 -msgid "JPEG Point Transforms" -msgstr "" - -#: src/tags.cpp:685 -msgid "" -"This Field points to a list of point transform values, one per component." -msgstr "" - -#: src/tags.cpp:687 -#, fuzzy -msgid "JPEG Q-Tables" -msgstr "Proces JPEG" - -#: src/tags.cpp:688 -msgid "" -"This Field points to a list of offsets to the quantization tables, one per " -"component." -msgstr "" - -#: src/tags.cpp:691 -#, fuzzy -msgid "JPEG DC-Tables" -msgstr "Proces JPEG" - -#: src/tags.cpp:692 -msgid "" -"This Field points to a list of offsets to the DC Huffman tables or the " -"lossless Huffman tables, one per component." -msgstr "" - -#: src/tags.cpp:695 -#, fuzzy -msgid "JPEG AC-Tables" -msgstr "Proces JPEG" - -#: src/tags.cpp:696 -msgid "" -"This Field points to a list of offsets to the Huffman AC tables, one per " -"component." -msgstr "" - -#: src/tags.cpp:700 -msgid "" -"The matrix coefficients for transformation from RGB to YCbCr image data. No " -"default is given in TIFF; but here the value given in Appendix E, \"Color " -"Space Guidelines\", is used as the default. The color space is declared in a " -"color space information tag, with the default being the value that gives the " -"optimal image characteristics Interoperability this condition." -msgstr "" -"Macierz współczynników przeksztaÅ‚cenia danych obrazu z RGB do YCbCr. Dla " -"TIFF nie ma wartoÅ›ci domyÅ›lnych, ale wartoÅ›ci podane w zaÅ‚Ä…czniku E \"Color " -"Space Guidelines\" sÄ… używane jako domyÅ›lne. PrzestrzeÅ„ kolorów jest " -"okreÅ›lona w znaczniku informacji o przestrzeni kolorów z wartoÅ›ciÄ… domyÅ›lnÄ… " -"bÄ™dÄ…cÄ… tÄ…, która daje optymalnÄ… charakterystykÄ™ obrazu w danym przypadku." - -#: src/tags.cpp:708 -msgid "YCbCr Sub-Sampling" -msgstr "Podpróbkowanie YCbCr" - -#: src/tags.cpp:709 -msgid "" -"The sampling ratio of chrominance components in relation to the luminance " -"component. In JPEG compressed data a JPEG marker is used instead of this tag." -msgstr "" -"Współczynnik próbkowania skÅ‚adowych chrominancji w stosunku do skÅ‚adowej " -"luminancji. W danych skompresowanych algorytmem JPEG zamiast tego znacznika " -"używany jest znacznik JPEG." - -#: src/tags.cpp:714 -msgid "" -"The position of chrominance components in relation to the luminance " -"component. This field is designated only for JPEG compressed data or " -"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " -"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " -"record data, in order to improve the image quality when viewed on TV " -"systems. When this field does not exist, the reader shall assume the TIFF " -"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " -"recommended. If the reader does not have the capability of supporting both " -"kinds of , it shall follow the TIFF default regardless of " -"the value in this field. It is preferable that readers be able to support " -"both centered and co-sited positioning." -msgstr "" -"Rozmieszczenie skÅ‚adowych chrominancji w stosunku do skÅ‚adowej luminancji. " -"To pole ma znaczenie tylko dla danych skompresowanych algorytmem JPEG lub " -"nieskompresowanych danych YCbCr. DomyÅ›lne dla TIFF jest 1 (wyÅ›rodkowane); " -"ale kiedy Y:Cb:Cr = 4:2:2, zaleca siÄ™ w tym standardzie 2 (poÅ‚ożone razem) w " -"celu poprawienia jakoÅ›ci obrazu w przypadku oglÄ…dania na telewizorze. Kiedy " -"to pole nie istnieje, czytajÄ…cy powinien zaÅ‚ożyć wartość domyÅ›lnÄ… dla TIFF. " -"W przypadku Y:Cb:Cr = 4:2:0, zalecana jest wartość domyÅ›lna dla TIFF " -"(wyÅ›rodkowane). JeÅ›li czytajÄ…cy nie ma możliwoÅ›ci obsÅ‚ugi obu rodzajów " -"rozmieszczenia, powinien używać domyÅ›lnej wartoÅ›ci TIFF niezależnie od " -"wartoÅ›ci tego pola. Zaleca siÄ™, żeby czytajÄ…cy byli w stanie obsÅ‚użyć oba " -"rodzaje rozmieszczenia." - -#: src/tags.cpp:728 -msgid "Reference Black/White" -msgstr "CzerÅ„/biel odniesienia" - -#: src/tags.cpp:729 -msgid "" -"The reference black point value and reference white point value. No defaults " -"are given in TIFF, but the values below are given as defaults here. The " -"color space is declared in a color space information tag, with the default " -"being the value that gives the optimal image characteristics " -"Interoperability these conditions." -msgstr "" -"WartoÅ›ci czarnego i biaÅ‚ego punktu odniesienia. W formacie TIFF nie ma " -"wartoÅ›ci domyÅ›lnych, ale poniższe sÄ… podane tutaj jako domyÅ›lne. PrzestrzeÅ„ " -"kolorów jest okreÅ›lona w znaczniku informacji o przestrzeni kolorów, z " -"wartoÅ›ciÄ… domyÅ›lnÄ… dajÄ…cÄ… optymalnÄ… charakterystykÄ™ obrazu w danych " -"warunkach." - -#: src/tags.cpp:736 -msgid "XML Packet" -msgstr "Pakiet XML" - -#: src/tags.cpp:737 -msgid "XMP Metadata (Adobe technote 9-14-02)" -msgstr "Metadane XMP (Adobe technote 9-14-02)" - -#: src/tags.cpp:739 -msgid "Windows Rating" -msgstr "Windows Ocena" - -#: src/tags.cpp:740 -msgid "Rating tag used by Windows" -msgstr "Znacznik oceny używany przez Windows" - -#: src/tags.cpp:742 -msgid "Windows Rating Percent" -msgstr "Windows Ocena procentowa" - -#: src/tags.cpp:743 -msgid "Rating tag used by Windows, value in percent" -msgstr "Znacznik oceny używany przez Windows, wartość podana w procentach" - -#: src/tags.cpp:745 -#, fuzzy -msgid "Image ID" -msgstr "Unikalny identyfikator obrazu" - -#: src/tags.cpp:746 -msgid "" -"ImageID is the full pathname of the original, high-resolution image, or any " -"other identifying string that uniquely identifies the original image (Adobe " -"OPI)." -msgstr "" - -#: src/tags.cpp:750 -msgid "CFA Repeat Pattern Dimension" -msgstr "" -"Rozmiary wzoru geometrycznego CFA (color filter array - tablicy filtrów " -"kolorów)" - -#: src/tags.cpp:751 -msgid "" -"Contains two values representing the minimum rows and columns to define the " -"repeating patterns of the color filter array" -msgstr "" - -#: src/tags.cpp:755 -msgid "" -"Indicates the color filter array (CFA) geometric pattern of the image sensor " -"when a one-chip color area sensor is used. It does not apply to all sensing " -"methods" -msgstr "" -"Oznaczenie wzoru geometrycznego CFA (color filter array - tablicy filtrów " -"kolorów) czujnika obrazu w przypadku użycia jednoukÅ‚adowego czujnika obszaru " -"koloru. Nie odnosi siÄ™ to do wszystkich metod próbkowania" - -#: src/tags.cpp:763 -msgid "" -"Copyright information. In this standard the tag is used to indicate both the " -"photographer and editor copyrights. It is the copyright notice of the person " -"or organization claiming rights to the image. The Interoperability copyright " -"statement including date and rights should be written in this field; e.g., " -"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " -"field records both the photographer and editor copyrights, with each " -"recorded in a separate part of the statement. When there is a clear " -"distinction between the photographer and editor copyrights, these are to be " -"written in the order of photographer followed by editor copyright, separated " -"by NULL (in this case since the statement also ends with a NULL, there are " -"two NULL codes). When only the photographer copyright is given, it is " -"terminated by one NULL code . When only the editor copyright is given, the " -"photographer copyright part consists of one space followed by a terminating " -"NULL code, then the editor copyright is given. When the field is left blank, " -"it is treated as unknown." -msgstr "" -"Informacje o prawach autorskich. Jest to standardowy znacznik używany do " -"okreÅ›lenia praw autorskich zarówno fotografa, jak i redaktora. Jest to " -"informacja o osobie lub organizacji majÄ…cej prawa do obrazu. Standardowe " -"oÅ›wiadczenie o prawach autorskich wraz z datÄ… i prawami powinno być zapisane " -"w tym polu, np. \"Copyright, John Smith, 19xx. All rights reserved.\". W tym " -"standardzie pola opisujÄ… prawa zarówno fotografa, jak i redaktora, z których " -"każdy jest opisywany w oddzielnej części oÅ›wiadczenia. JeÅ›li jest jasne " -"rozróżnienie miÄ™dzy prawami fotografa i redaktora, powinny być zapisane w " -"kolejnoÅ›ci najpierw fotograf, a nastÄ™pnie redaktor, oddzielone znakiem NULL " -"(w tym przypadku, jeÅ›li oÅ›wiadczenie także koÅ„czy siÄ™ znakiem NULL, powinny " -"być dwa kody NULL, patrz przykÅ‚ad 1). JeÅ›li podano tylko prawa fotografa, " -"jest on koÅ„czony jednym kodem NULL (patrz przykÅ‚ad 2). JeÅ›li podano tylko " -"prawa redaktora, część przeznaczona dla fotografa skÅ‚ada siÄ™ z jednej spacji " -"i nastÄ™pujÄ…cego po niej kodu koÅ„czÄ…cego NULL, a nastÄ™pnie podane sÄ… prawa " -"redaktora (patrz przykÅ‚ad 3). JeÅ›li pole jest puste, jest traktowane jako " -"nieznane." - -#: src/tags.cpp:782 -#, fuzzy -msgid "Exposure time, given in seconds." -msgstr "Czas ekspozycji podany w sekundach (s)." - -#: src/tags.cpp:783 src/tags.cpp:1546 -msgid "The F number." -msgstr "Liczba F." - -#: src/tags.cpp:784 -msgid "IPTC/NAA" -msgstr "IPTC/NAA" - -#: src/tags.cpp:785 -msgid "Contains an IPTC/NAA record" -msgstr "Zawiera rekord IPTC/NAA" - -#: src/tags.cpp:787 -msgid "Image Resources Block" -msgstr "Blok zasobów obrazu" - -#: src/tags.cpp:788 -msgid "Contains information embedded by the Adobe Photoshop application" -msgstr "Zawiera informacjÄ™ osadzonÄ… przez program Adobe Photoshop" - -#: src/tags.cpp:791 -msgid "" -"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " -"as that of the IFD specified in TIFF. ordinarily, however, it does not " -"contain image data as in the case of TIFF." -msgstr "" -"Wskaźnik do Exif IFD. Exif IFD ma tÄ™ samÄ… strukturÄ™ co IFD okreÅ›lone w TIFF, " -"oczywiÅ›cie nie zawiera jednak danych obrazu jak w przypadku pliku TIFF." - -#: src/tags.cpp:796 -msgid "Inter Color Profile" -msgstr "Profil kolorów ICC" - -#: src/tags.cpp:797 -msgid "" -"Contains an InterColor Consortium (ICC) format color space characterization/" -"profile" -msgstr "" -"Zawiera profil/charakterystykÄ™ przestrzeni kolorów ICC (InterColor " -"Consortium)" - -#: src/tags.cpp:799 src/tags.cpp:1549 -msgid "" -"The class of the program used by the camera to set exposure when the picture " -"is taken." -msgstr "" -"Rodzaj programu użytego przez aparat do ustawienia ekspozycji przy robieniu " -"zdjÄ™cia." - -#: src/tags.cpp:800 -msgid "Indicates the spectral sensitivity of each channel of the camera used." -msgstr "OkreÅ›la czuÅ‚ość widmowÄ… każdego kanaÅ‚u." - -#: src/tags.cpp:802 -msgid "" -"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " -"Info IFD, like that of Exif IFD, has no image data." -msgstr "" -"Wskaźnik do GPS Info IFD. Struktura wymienialnoÅ›ci GPS Info IFD, podobnie " -"jak Exif IFD, nie zawiera danych obrazu." - -#: src/tags.cpp:806 src/tags.cpp:1557 -msgid "ISO Speed Ratings" -msgstr "Oszacowania szybkoÅ›ci ISO" - -#: src/tags.cpp:806 src/tags.cpp:1558 -msgid "" -"Indicates the ISO Speed and ISO Latitude of the camera or input device as " -"specified in ISO 12232." -msgstr "" -"OkreÅ›lenie szybkoÅ›ci ISO i szerokoÅ›ci ISO aparatu lub urzÄ…dzenia wejÅ›ciowego " -"zgodne ze specyfikacjÄ… ISO 12232." - -#: src/tags.cpp:807 -msgid "" -"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " -"14524." -msgstr "" -"Funkcja konwersji optoelektrycznej, zdefiniowana w dokumencie SO 14524." - -#: src/tags.cpp:808 -#, fuzzy -msgid "Interlace" -msgstr "Z przeplotem" - -#: src/tags.cpp:808 -#, fuzzy -msgid "Indicates the field number of multifield images." -msgstr "OkreÅ›la ukÅ‚ad obrazu." - -#: src/tags.cpp:809 -#, fuzzy -msgid "Time Zone Offset" -msgstr "PrzesuniÄ™cia kafelków" - -#: src/tags.cpp:810 -msgid "" -"This optional tag encodes the time zone of the camera clock (relativeto " -"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " -"picture was taken. It may also contain the time zone offsetof the clock used " -"to create the DateTime tag-value when the image wasmodified." -msgstr "" - -#: src/tags.cpp:816 -msgid "Self Timer Mode" -msgstr "Samowyzwalacz" - -#: src/tags.cpp:816 -msgid "Number of seconds image capture was delayed from button press." -msgstr "Liczba sekund od naciÅ›niÄ™cia przycisku migawki do zrobienia zdjÄ™cia." - -#: src/tags.cpp:817 -#, fuzzy -msgid "Date Time Original" -msgstr "Data i czas (oryginaÅ‚u)" - -#: src/tags.cpp:817 -#, fuzzy -msgid "The date and time when the original image data was generated." -msgstr "Data i czas ostatniej modyfikacji metadanych." - -#: src/tags.cpp:818 -#, fuzzy -msgid "Specific to compressed data; states the compressed bits per pixel." -msgstr "" -"Informacja specyficzna dla skompresowanych danych. Rodzaj kompresji użyty " -"dla skompresowanego obrazu jest okreÅ›lony w jednostkach bitów na piksel." - -#: src/tags.cpp:819 -#, fuzzy -msgid "Shutter speed." -msgstr "Szybkość migawki" - -#: src/tags.cpp:820 -#, fuzzy -msgid "The lens aperture." -msgstr "Najmniejsza wartość przysÅ‚ony" - -#: src/tags.cpp:821 -#, fuzzy -msgid "The value of brightness." -msgstr "Liczba uderzeÅ„." - -#: src/tags.cpp:822 -#, fuzzy -msgid "The exposure bias." -msgstr "Odchylenie ekspozycji" - -#: src/tags.cpp:823 src/tags.cpp:1638 -msgid "Max Aperture Value" -msgstr "NajwiÄ™ksza wartość przysÅ‚ony" - -#: src/tags.cpp:823 -#, fuzzy -msgid "The smallest F number of the lens." -msgstr "Nazwa sceny." - -#: src/tags.cpp:824 src/tags.cpp:1644 -msgid "The distance to the subject, given in meters." -msgstr "OdlegÅ‚ość obiektu podana w metrach." - -#: src/tags.cpp:825 src/tags.cpp:1647 -msgid "The metering mode." -msgstr "Tryb pomiaru." - -#: src/tags.cpp:826 src/tags.cpp:1650 -msgid "The kind of light source." -msgstr "Rodzaj źródÅ‚a Å›wiatÅ‚a." - -#: src/tags.cpp:827 -msgid "Indicates the status of flash when the image was shot." -msgstr "Ten znacznik okreÅ›la stan flesza w trakcie robieniu zdjÄ™cia." - -#: src/tags.cpp:828 -msgid "The actual focal length of the lens, in mm." -msgstr "DÅ‚ugość ogniskowej obiektywu, w milimetrach." - -#: src/tags.cpp:829 -#, fuzzy -msgid "Amount of flash energy (BCPS)." -msgstr "Wielkość energii flesza (BCPS)" - -#: src/tags.cpp:830 -msgid "SFR of the camera." -msgstr "" - -#: src/tags.cpp:831 -msgid "Noise" -msgstr "Szum" - -#: src/tags.cpp:831 -msgid "Noise measurement values." -msgstr "WartoÅ›ci pomiaru szumu." - -#: src/tags.cpp:832 -#, fuzzy -msgid "" -"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " -"direction for main image." -msgstr "" -"Liczba pikseli na jednostkÄ™ rozdzielczoÅ›ci () w kierunku " -"dÅ‚ugoÅ›ci (). ZakÅ‚adana jest taka sama wartość jak ." - -#: src/tags.cpp:833 -#, fuzzy -msgid "" -"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " -"direction for main image." -msgstr "" -"Liczba pikseli na jednostkÄ™ rozdzielczoÅ›ci () w kierunku " -"dÅ‚ugoÅ›ci (). ZakÅ‚adana jest taka sama wartość jak ." - -#: src/tags.cpp:834 -msgid "" -"Unit of measurement for FocalPlaneXResolution(37390) and " -"FocalPlaneYResolution(37391)." -msgstr "" - -#: src/tags.cpp:835 -msgid "Number assigned to an image, e.g., in a chained image burst." -msgstr "" - -#: src/tags.cpp:836 -#, fuzzy -msgid "Security Classification" -msgstr "PowiÄ™kszenie elektroniczne" - -#: src/tags.cpp:836 -#, fuzzy -msgid "Security classification assigned to the image." -msgstr "PowiÄ™kszenie elektroniczne" - -#: src/tags.cpp:837 -msgid "Record of what has been done to the image." -msgstr "" - -#: src/tags.cpp:838 -#, fuzzy -msgid "" -"Indicates the location and area of the main subject in the overall scene." -msgstr "" -"Ten znacznik okreÅ›la poÅ‚ożenie i obszar głównego obiektu na caÅ‚ej scenie." - -#: src/tags.cpp:839 -#, fuzzy -msgid "Encodes the camera exposure index setting when image was captured." -msgstr "" -"OkreÅ›lenie indeksu ekspozycji wybranego przez aparat lub urzÄ…dzenie " -"wejÅ›ciowe w czasie robienia zdjÄ™cia." - -#: src/tags.cpp:840 -msgid "TIFF/EP Standard ID" -msgstr "Standardowy ID TIFF/EP" - -#: src/tags.cpp:841 -msgid "" -"Contains four ASCII characters representing the TIFF/EP standard version of " -"a TIFF/EP file, eg '1', '0', '0', '0'" -msgstr "" -"Zawiera cztery znaki ASCII okreÅ›lajÄ…ce wersjÄ™ standardu TIFF/EP pliku TIFF/" -"EP, np. 1, 1, 0, 0." - -#: src/tags.cpp:844 -#, fuzzy -msgid "Type of image sensor." -msgstr "Åšrodek obrazu Raw" - -#: src/tags.cpp:845 -msgid "Windows Title" -msgstr "Windows TytuÅ‚" - -#: src/tags.cpp:846 -msgid "Title tag used by Windows, encoded in UCS2" -msgstr "Znacznik tytuÅ‚u, używany przez Windows, zakodowany w UCS2" - -#: src/tags.cpp:848 -msgid "Windows Comment" -msgstr "Windows Komentarz" - -#: src/tags.cpp:849 -msgid "Comment tag used by Windows, encoded in UCS2" -msgstr "Znacznik komentarza, używany przez Windows, zakodowany w UCS2" - -#: src/tags.cpp:851 -msgid "Windows Author" -msgstr "Windows Autor" - -#: src/tags.cpp:852 -msgid "Author tag used by Windows, encoded in UCS2" -msgstr "Znacznik autora, używany przez Windows, zakodowany w UCS2" - -#: src/tags.cpp:854 -msgid "Windows Keywords" -msgstr "Windows SÅ‚owa kluczowe" - -#: src/tags.cpp:855 -msgid "Keywords tag used by Windows, encoded in UCS2" -msgstr "Znacznik słów kluczowych, używany przez Windows, zakodowany w UCS2" - -#: src/tags.cpp:857 -msgid "Windows Subject" -msgstr "Windows Temat" - -#: src/tags.cpp:858 -msgid "Subject tag used by Windows, encoded in UCS2" -msgstr "Znacznik tematu, używany przez Windows, zakodowany w UCS2" - -#: src/tags.cpp:860 -#, fuzzy -msgid "Print Image Matching" -msgstr "PasujÄ…ca strefa" - -#: src/tags.cpp:861 -#, fuzzy -msgid "Print Image Matching, description needed." -msgstr "PasujÄ…ca strefa" - -#: src/tags.cpp:863 -msgid "DNG version" -msgstr "Wersja DNG" - -#: src/tags.cpp:864 -msgid "" -"This tag encodes the DNG four-tier version number. For files compliant with " -"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " -"1, 1, 0, 0." -msgstr "" -"W tym znaczniku zakodowany jest czterostopniowy numer wersji. Dla plików " -"zgodnych z wersjÄ… 1.1.0.0 specyfikacji DNG, znacznik ten powinien zawierać " -"bajty: 1, 1, 0, 0." - -#: src/tags.cpp:868 -msgid "DNG backward version" -msgstr "Wersja wsteczna DNG" - -#: src/tags.cpp:869 -msgid "" -"This tag specifies the oldest version of the Digital Negative specification " -"for which a file is compatible. Readers shouldnot attempt to read a file if " -"this tag specifies a version number that is higher than the version number " -"of the specification the reader was based on. In addition to checking the " -"version tags, readers should, for all tags, check the types, counts, and " -"values, to verify it is able to correctly read the file." -msgstr "" -"Znacznik ten okreÅ›la najstarszÄ… wersjÄ™ specyfikacji Digital Negative (DNG) z " -"którÄ… zgodny jest plik. Czytniki nie powinny próbować odczytać pliku jeÅ›li w " -"tym znaczniku podany jest numer wersji wiÄ™kszy niż ten na którym oparty jest " -"czytnik. Dodatkowo oprócz sprawdzania znaczników wersji, czytniki powinny " -"dla wszystkich znaczników sprawdzić typy, liczby i wartoÅ›ci aby sprawdzić, " -"czy sÄ… zdolne do poprawnego odczytania danego pliku." - -#: src/tags.cpp:877 -msgid "Unique Camera Model" -msgstr "Unikalny model aparatu" - -#: src/tags.cpp:878 -msgid "" -"Defines a unique, non-localized name for the camera model that created the " -"image in the raw file. This name should include the manufacturer's name to " -"avoid conflicts, and should not be localized, even if the camera name itself " -"is localized for different markets (see LocalizedCameraModel). This string " -"may be used by reader software to index into per-model preferences and " -"replacement profiles." -msgstr "" -"OkreÅ›la unikalnÄ…, nie zlokalizowanÄ… nazwÄ™ aparatu, którym utworzono obraz w " -"pliku Raw. Nazwa ta powinna zawierać nazwÄ™ producenta aby zapobiec " -"konfliktom i nie powinna być zlokalizowana, nawet jeÅ›li nazwa aparatu ma " -"różne nazwy dla różnych rynków (zobacz \"Lokalny model aparatu\"). Ten " -"Å‚aÅ„cuch może być użyty przez oprogramowanie czytnika do zindeksowania " -"ustawieÅ„ zależnych od modelu aparatu." - -#: src/tags.cpp:885 -msgid "Localized Camera Model" -msgstr "Lokalny model aparatu" - -#: src/tags.cpp:886 -msgid "" -"Similar to the UniqueCameraModel field, except the name can be localized for " -"different markets to match the localization of the camera name." -msgstr "" -"Zawiera lokalnÄ… nazwÄ™ aparatu. Podobne do \"Unikalny model aparatu\", ale " -"nazwa może być dostosowana do różnych rynków." - -#: src/tags.cpp:890 -#, fuzzy -msgid "CFA Plane Color" -msgstr "Kolor FinePix" - -#: src/tags.cpp:891 -msgid "" -"Provides a mapping between the values in the CFAPattern tag and the plane " -"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." -msgstr "" - -#: src/tags.cpp:895 -msgid "CFA Layout" -msgstr "UkÅ‚ad CFA" - -#: src/tags.cpp:896 -msgid "Describes the spatial layout of the CFA." -msgstr "OkreÅ›la ukÅ‚ad przestrzenny CFA." - -#: src/tags.cpp:899 -msgid "" -"Describes a lookup table that maps stored values into linear values. This " -"tag is typically used to increase compression ratios by storing the raw data " -"in a non-linear, more visually uniform space with fewer total encoding " -"levels. If SamplesPerPixel is not equal to one, this single table applies to " -"all the samples for each pixel." -msgstr "" - -#: src/tags.cpp:905 -#, fuzzy -msgid "Black Level Repeat Dim" -msgstr "" -"Rozmiary wzoru geometrycznego CFA (color filter array - tablicy filtrów " -"kolorów)" - -#: src/tags.cpp:906 -msgid "Specifies repeat pattern size for the BlackLevel tag." -msgstr "" - -#: src/tags.cpp:909 -msgid "" -"Specifies the zero light (a.k.a. thermal black or black current) encoding " -"level, as a repeating pattern. The origin of this pattern is the top-left " -"corner of the ActiveArea rectangle. The values are stored in row-column-" -"sample scan order." -msgstr "" - -#: src/tags.cpp:914 -msgid "Black Level Delta H" -msgstr "Poziom czerni Delta H" - -#: src/tags.cpp:915 -msgid "" -"If the zero light encoding level is a function of the image column, " -"BlackLevelDeltaH specifies the difference between the zero light encoding " -"level for each column and the baseline zero light encoding level. If " -"SamplesPerPixel is not equal to one, this single table applies to all the " -"samples for each pixel." -msgstr "" - -#: src/tags.cpp:921 -msgid "Black Level Delta V" -msgstr "Poziom czerni Delta V" - -#: src/tags.cpp:922 -msgid "" -"If the zero light encoding level is a function of the image row, this tag " -"specifies the difference between the zero light encoding level for each row " -"and the baseline zero light encoding level. If SamplesPerPixel is not equal " -"to one, this single table applies to all the samples for each pixel." -msgstr "" - -#: src/tags.cpp:928 -msgid "White Level" -msgstr "Poziom bieli" - -#: src/tags.cpp:929 -msgid "" -"This tag specifies the fully saturated encoding level for the raw sample " -"values. Saturation is caused either by the sensor itself becoming highly non-" -"linear in response, or by the camera's analog to digital converter clipping." -msgstr "" - -#: src/tags.cpp:934 -msgid "Default Scale" -msgstr "DomyÅ›lna skala" - -#: src/tags.cpp:935 -msgid "" -"DefaultScale is required for cameras with non-square pixels. It specifies " -"the default scale factors for each direction to convert the image to square " -"pixels. Typically these factors are selected to approximately preserve total " -"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " -"as the Fujifilm SuperCCD, these two values should usually differ by a factor " -"of 2.0." -msgstr "" - -#: src/tags.cpp:942 -msgid "Default Crop Origin" -msgstr "DomyÅ›lny poczÄ…tek kadru" - -#: src/tags.cpp:943 -msgid "" -"Raw images often store extra pixels around the edges of the final image. " -"These extra pixels help prevent interpolation artifacts near the edges of " -"the final image. DefaultCropOrigin specifies the origin of the final image " -"area, in raw image coordinates (i.e., before the DefaultScale has been " -"applied), relative to the top-left corner of the ActiveArea rectangle." -msgstr "" - -#: src/tags.cpp:950 -msgid "Default Crop Size" -msgstr "DomyÅ›lny rozmiar kadru" - -#: src/tags.cpp:951 -msgid "" -"Raw images often store extra pixels around the edges of the final image. " -"These extra pixels help prevent interpolation artifacts near the edges of " -"the final image. DefaultCropSize specifies the size of the final image area, " -"in raw image coordinates (i.e., before the DefaultScale has been applied)." -msgstr "" - -#: src/tags.cpp:957 -msgid "Color Matrix 1" -msgstr "Matryca kolorów 1" - -#: src/tags.cpp:958 -msgid "" -"ColorMatrix1 defines a transformation matrix that converts XYZ values to " -"reference camera native color space values, under the first calibration " -"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " -"tag is required for all non-monochrome DNG files." -msgstr "" - -#: src/tags.cpp:964 -msgid "Color Matrix 2" -msgstr "Matryca kolorów 2" - -#: src/tags.cpp:965 -msgid "" -"ColorMatrix2 defines a transformation matrix that converts XYZ values to " -"reference camera native color space values, under the second calibration " -"illuminant. The matrix values are stored in row scan order." -msgstr "" - -#: src/tags.cpp:970 -msgid "Camera Calibration 1" -msgstr "Kalibracja aparatu 1" - -#: src/tags.cpp:971 -msgid "" -"CameraClalibration1 defines a calibration matrix that transforms reference " -"camera native space values to individual camera native space values under " -"the first calibration illuminant. The matrix is stored in row scan order. " -"This matrix is stored separately from the matrix specified by the " -"ColorMatrix1 tag to allow raw converters to swap in replacement color " -"matrices based on UniqueCameraModel tag, while still taking advantage of any " -"per-individual camera calibration performed by the camera manufacturer." -msgstr "" - -#: src/tags.cpp:980 -msgid "Camera Calibration 2" -msgstr "Kalibracja aparatu 2" - -#: src/tags.cpp:981 -msgid "" -"CameraCalibration2 defines a calibration matrix that transforms reference " -"camera native space values to individual camera native space values under " -"the second calibration illuminant. The matrix is stored in row scan order. " -"This matrix is stored separately from the matrix specified by the " -"ColorMatrix2 tag to allow raw converters to swap in replacement color " -"matrices based on UniqueCameraModel tag, while still taking advantage of any " -"per-individual camera calibration performed by the camera manufacturer." -msgstr "" - -#: src/tags.cpp:990 -msgid "Reduction Matrix 1" -msgstr "Macierz redukcji 1" - -#: src/tags.cpp:991 -msgid "" -"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " -"first stage in converting color camera native space values to XYZ values, " -"under the first calibration illuminant. This tag may only be used if " -"ColorPlanes is greater than 3. The matrix is stored in row scan order." -msgstr "" - -#: src/tags.cpp:997 -msgid "Reduction Matrix 2" -msgstr "Macierz redukcji 2" - -#: src/tags.cpp:998 -msgid "" -"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " -"first stage in converting color camera native space values to XYZ values, " -"under the second calibration illuminant. This tag may only be used if " -"ColorPlanes is greater than 3. The matrix is stored in row scan order." -msgstr "" - -#: src/tags.cpp:1004 -msgid "Analog Balance" -msgstr "Analogowy balans bieli" - -#: src/tags.cpp:1005 -msgid "" -"Normally the stored raw values are not white balanced, since any digital " -"white balancing will reduce the dynamic range of the final image if the user " -"decides to later adjust the white balance; however, if camera hardware is " -"capable of white balancing the color channels before the signal is " -"digitized, it can improve the dynamic range of the final image. " -"AnalogBalance defines the gain, either analog (recommended) or digital (not " -"recommended) that has been applied the stored raw values." -msgstr "" - -#: src/tags.cpp:1014 -#, fuzzy -msgid "As Shot Neutral" -msgstr "Balans bieli neutralny (as shot)" - -#: src/tags.cpp:1015 -msgid "" -"Specifies the selected white balance at time of capture, encoded as the " -"coordinates of a perfectly neutral color in linear reference space values. " -"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." -msgstr "" - -#: src/tags.cpp:1020 -#, fuzzy -msgid "As Shot White XY" -msgstr "Balans bieli XY (as shot)" - -#: src/tags.cpp:1021 -msgid "" -"Specifies the selected white balance at time of capture, encoded as x-y " -"chromaticity coordinates. The inclusion of this tag precludes the inclusion " -"of the AsShotNeutral tag." -msgstr "" - -#: src/tags.cpp:1025 -msgid "Baseline Exposure" -msgstr "Ekspozycja podstawowa" - -#: src/tags.cpp:1026 -msgid "" -"Camera models vary in the trade-off they make between highlight headroom and " -"shadow noise. Some leave a significant amount of highlight headroom during a " -"normal exposure. This allows significant negative exposure compensation to " -"be applied during raw conversion, but also means normal exposures will " -"contain more shadow noise. Other models leave less headroom during normal " -"exposures. This allows for less negative exposure compensation, but results " -"in lower shadow noise for normal exposures. Because of these differences, a " -"raw converter needs to vary the zero point of its exposure compensation " -"control from model to model. BaselineExposure specifies by how much (in EV " -"units) to move the zero point. Positive values result in brighter default " -"results, while negative values result in darker default results." -msgstr "" - -#: src/tags.cpp:1040 -msgid "Baseline Noise" -msgstr "Szum podstawowy" - -#: src/tags.cpp:1041 -msgid "" -"Specifies the relative noise level of the camera model at a baseline ISO " -"value of 100, compared to a reference camera model. Since noise levels tend " -"to vary approximately with the square root of the ISO value, a raw converter " -"can use this value, combined with the current ISO, to estimate the relative " -"noise level of the current image." -msgstr "" - -#: src/tags.cpp:1047 -msgid "Baseline Sharpness" -msgstr "Ostrość podstawowa" - -#: src/tags.cpp:1048 -msgid "" -"Specifies the relative amount of sharpening required for this camera model, " -"compared to a reference camera model. Camera models vary in the strengths of " -"their anti-aliasing filters. Cameras with weak or no filters require less " -"sharpening than cameras with strong anti-aliasing filters." -msgstr "" - -#: src/tags.cpp:1054 -#, fuzzy -msgid "Bayer Green Split" -msgstr "PodziaÅ‚ zieleni filtru Bayer" - -#: src/tags.cpp:1055 -msgid "" -"Only applies to CFA images using a Bayer pattern filter array. This tag " -"specifies, in arbitrary units, how closely the values of the green pixels in " -"the blue/green rows track the values of the green pixels in the red/green " -"rows. A value of zero means the two kinds of green pixels track closely, " -"while a non-zero value means they sometimes diverge. The useful range for " -"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." -msgstr "" - -#: src/tags.cpp:1063 -msgid "Linear Response Limit" -msgstr "Limit odpowiedzi linearnej" - -#: src/tags.cpp:1064 -msgid "" -"Some sensors have an unpredictable non-linearity in their response as they " -"near the upper limit of their encoding range. This non-linearity results in " -"color shifts in the highlight areas of the resulting image unless the raw " -"converter compensates for this effect. LinearResponseLimit specifies the " -"fraction of the encoding range above which the response may become " -"significantly non-linear." -msgstr "" - -#: src/tags.cpp:1072 -msgid "" -"CameraSerialNumber contains the serial number of the camera or camera body " -"that captured the image." -msgstr "" -"CameraSerialNumber zawiera numer seryjny aparatu lub korpusu aparatu którym " -"wykonano zdjÄ™cie." - -#: src/tags.cpp:1075 -msgid "Lens Info" -msgstr "Obiektyw" - -#: src/tags.cpp:1076 -#, fuzzy -msgid "" -"Contains information about the lens that captured the image. If the minimum " -"f-stops are unknown, they should be encoded as 0/0." -msgstr "" -"Zawiera informacjÄ™ o obiektywie którym zrobiono zdjÄ™cie. JeÅ›li minimalna " -"przysÅ‚ona jest nieznana, powinna być zakodowana jako 0/0." - -#: src/tags.cpp:1079 -msgid "Chroma Blur Radius" -msgstr "PromieÅ„ rozmycia kolorów" - -#: src/tags.cpp:1080 -msgid "" -"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " -"blur should be applied to the image. If this tag is omitted, the reader will " -"use its default amount of chroma blurring. Normally this tag is only " -"included for non-CFA images, since the amount of chroma blur required for " -"mosaic images is highly dependent on the de-mosaic algorithm, in which case " -"the DNG reader's default value is likely optimized for its particular de-" -"mosaic algorithm." -msgstr "" - -#: src/tags.cpp:1088 -msgid "Anti Alias Strength" -msgstr "SiÅ‚a antyaliasingu" - -#: src/tags.cpp:1089 -msgid "" -"Provides a hint to the DNG reader about how strong the camera's anti-alias " -"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " -"prone to aliasing artifacts with some subjects), while a value of 1.0 means " -"a strong anti-alias filter (i.e., the camera almost never has aliasing " -"artifacts)." -msgstr "" - -#: src/tags.cpp:1095 -msgid "Shadow Scale" -msgstr "Skala cieni" - -#: src/tags.cpp:1096 -msgid "" -"This tag is used by Adobe Camera Raw to control the sensitivity of its " -"'Shadows' slider." -msgstr "" -"Ten znacznik jest używany przez program Adobe Camera Raw do kontrolowania " -"czuÅ‚oÅ›ci jego suwaka \"Shadows\"." - -#: src/tags.cpp:1099 -msgid "DNG Private Data" -msgstr "Prywatne dane DNG" - -#: src/tags.cpp:1100 -msgid "" -"Provides a way for camera manufacturers to store private data in the DNG " -"file for use by their own raw converters, and to have that data preserved by " -"programs that edit DNG files." -msgstr "" -"Umożliwia producentom aparatów przechowywanie prywatnych danych w pliku DNG. " -"Dane te mogÄ… być użyte w ich wÅ‚asnych konwerterach RAW oraz do " -"przechowywania danych zapisanych przez programy do edycji plików DNG." - -#: src/tags.cpp:1104 -msgid "MakerNote Safety" -msgstr "BezpieczeÅ„stwo MakerNote" - -#: src/tags.cpp:1105 -msgid "" -"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " -"safe to preserve along with the rest of the EXIF data. File browsers and " -"other image management software processing an image with a preserved " -"MakerNote should be aware that any thumbnail image embedded in the MakerNote " -"may be stale, and may not reflect the current state of the full size image." -msgstr "" - -#: src/tags.cpp:1112 -msgid "Calibration Illuminant 1" -msgstr "OÅ›wietlenie kalibracji 1" - -#: src/tags.cpp:1113 -msgid "" -"The illuminant used for the first set of color calibration tags " -"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " -"this tag are the same as the legal values for the LightSource EXIF tag." -msgstr "" - -#: src/tags.cpp:1118 -msgid "Calibration Illuminant 2" -msgstr "OÅ›wietlenie kalibracji 2" - -#: src/tags.cpp:1119 -msgid "" -"The illuminant used for an optional second set of color calibration tags " -"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " -"this tag are the same as the legal values for the CalibrationIlluminant1 " -"tag; however, if both are included, neither is allowed to have a value of 0 " -"(unknown)." -msgstr "" - -#: src/tags.cpp:1125 -msgid "Best Quality Scale" -msgstr "Mnożnik najwyżej jakoÅ›ci" - -#: src/tags.cpp:1126 -msgid "" -"For some cameras, the best possible image quality is not achieved by " -"preserving the total pixel count during conversion. For example, Fujifilm " -"SuperCCD images have maximum detail when their total pixel count is doubled. " -"This tag specifies the amount by which the values of the DefaultScale tag " -"need to be multiplied to achieve the best quality image size." -msgstr "" -"Dla niektórych aparatów, najwyższa możliwa jakość obrazu nie jest osiÄ…gana " -"przez zachowanie caÅ‚kowitej liczby pikseli podczas konwersji. Na przykÅ‚ad " -"obrazy Fujifilm SuperCCD posiadajÄ… najwiÄ™cej szczegółów po podwojeniu ich " -"caÅ‚kowitej liczby pikseli. Ten znacznik okreÅ›la liczbÄ™, o którÄ… należy " -"pomnożyć wartoÅ›ci znacznika DefaultScale aby osiÄ…gnąć najwyższÄ… jakość " -"obrazu." - -#: src/tags.cpp:1133 -msgid "Raw Data Unique ID" -msgstr "Unikalny ID danych Raw" - -#: src/tags.cpp:1134 -msgid "" -"This tag contains a 16-byte unique identifier for the raw image data in the " -"DNG file. DNG readers can use this tag to recognize a particular raw image, " -"even if the file's name or the metadata contained in the file has been " -"changed. If a DNG writer creates such an identifier, it should do so using " -"an algorithm that will ensure that it is very unlikely two different images " -"will end up having the same identifier." -msgstr "" - -#: src/tags.cpp:1142 -msgid "Original Raw File Name" -msgstr "Oryginalna nazwa pliku Raw" - -#: src/tags.cpp:1143 -msgid "" -"If the DNG file was converted from a non-DNG raw file, then this tag " -"contains the file name of that original raw file." -msgstr "" - -#: src/tags.cpp:1146 -msgid "Original Raw File Data" -msgstr "Oryginalne dane pliku Raw" - -#: src/tags.cpp:1147 -msgid "" -"If the DNG file was converted from a non-DNG raw file, then this tag " -"contains the compressed contents of that original raw file. The contents of " -"this tag always use the big-endian byte order. The tag contains a sequence " -"of data blocks. Future versions of the DNG specification may define " -"additional data blocks, so DNG readers should ignore extra bytes when " -"parsing this tag. DNG readers should also detect the case where data blocks " -"are missing from the end of the sequence, and should assume a default value " -"for all the missing blocks. There are no padding or alignment bytes between " -"data blocks." -msgstr "" - -#: src/tags.cpp:1157 -msgid "Active Area" -msgstr "Obszar aktywny" - -#: src/tags.cpp:1158 -msgid "" -"This rectangle defines the active (non-masked) pixels of the sensor. The " -"order of the rectangle coordinates is: top, left, bottom, right." -msgstr "" -"ProstokÄ…t ten definiuje aktywne (nie zamaskowane) piksele matrycy. Kolejność " -"współrzÄ™dnych wierzchoÅ‚ków prostokÄ…ta to: góra, lewo, dół, prawo." - -#: src/tags.cpp:1161 -msgid "Masked Areas" -msgstr "Obszary nieaktywne" - -#: src/tags.cpp:1162 -msgid "" -"This tag contains a list of non-overlapping rectangle coordinates of fully " -"masked pixels, which can be optionally used by DNG readers to measure the " -"black encoding level. The order of each rectangle's coordinates is: top, " -"left, bottom, right. If the raw image data has already had its black " -"encoding level subtracted, then this tag should not be used, since the " -"masked pixels are no longer useful." -msgstr "" -"Znacznik ten zawiera listÄ™ nienakÅ‚adajÄ…cych siÄ™ współrzÄ™dnych prostokÄ…tów w " -"peÅ‚ni zamaskowanych (nieaktywnych) pikseli matrycy. MogÄ… one być opcjonalnie " -"użyte przez czytniki DNG do pomiaru poziomu odkodowania czerni. Kolejność " -"współrzÄ™dnych wierzchoÅ‚ków każdego prostokÄ…ta to: góra, lewo, dół, prawo. " -"JeÅ›li surowe dane obrazu (raw) zawierajÄ… już swój poziom odkodowania czerni, " -"ten znacznik nie powinien zostać użyty, ponieważ zamaskowane piksele nie sÄ… " -"użyteczne." - -#: src/tags.cpp:1169 -#, fuzzy -msgid "As-Shot ICC Profile" -msgstr "Profil ICC w trakcie wykonywania zdjÄ™cia" - -#: src/tags.cpp:1170 -msgid "" -"This tag contains an ICC profile that, in conjunction with the " -"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " -"specify a default color rendering from camera color space coordinates " -"(linear reference values) into the ICC profile connection space. The ICC " -"profile connection space is an output referred colorimetric space, whereas " -"the other color calibration tags in DNG specify a conversion into a scene " -"referred colorimetric space. This means that the rendering in this profile " -"should include any desired tone and gamut mapping needed to convert between " -"scene referred values and output referred values." -msgstr "" - -#: src/tags.cpp:1181 -#, fuzzy -msgid "As-Shot Pre-Profile Matrix" -msgstr "Macierz pre-profilu w trakcie wykonywania zdjÄ™cia" - -#: src/tags.cpp:1182 -msgid "" -"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " -"a matrix that should be applied to the camera color space coordinates before " -"processing the values through the ICC profile specified in the " -"AsShotICCProfile tag. The matrix is stored in the row scan order. If " -"ColorPlanes is greater than three, then this matrix can (but is not required " -"to) reduce the dimensionality of the color data down to three components, in " -"which case the AsShotICCProfile should have three rather than ColorPlanes " -"input components." -msgstr "" - -#: src/tags.cpp:1191 -msgid "Current ICC Profile" -msgstr "Bieżący profil ICC" - -#: src/tags.cpp:1192 -msgid "" -"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " -"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " -"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " -"they are for use by raw file editors rather than camera manufacturers." -msgstr "" - -#: src/tags.cpp:1198 -msgid "Current Pre-Profile Matrix" -msgstr "Bieżąca macierz pre-profilu" - -#: src/tags.cpp:1199 -msgid "" -"This tag is used in conjunction with the CurrentICCProfile tag. The " -"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " -"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " -"they are for use by raw file editors rather than camera manufacturers." -msgstr "" - -#: src/tags.cpp:1205 -#, fuzzy -msgid "Colorimetric Reference" -msgstr "Odniesienie do projektu" - -#: src/tags.cpp:1206 -msgid "" -"The DNG color model documents a transform between camera colors and CIE XYZ " -"values. This tag describes the colorimetric reference for the CIE XYZ " -"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" -"referred, using the ICC profile perceptual dynamic range. This tag allows " -"output-referred data to be stored in DNG files and still processed correctly " -"by DNG readers." -msgstr "" - -#: src/tags.cpp:1213 -#, fuzzy -msgid "Camera Calibration Signature" -msgstr "Kalibracja aparatu 1" - -#: src/tags.cpp:1214 -msgid "" -"A UTF-8 encoded string associated with the CameraCalibration1 and " -"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " -"should only be used in the DNG color transform if the string stored in the " -"CameraCalibrationSignature tag exactly matches the string stored in the " -"ProfileCalibrationSignature tag for the selected camera profile." -msgstr "" - -#: src/tags.cpp:1220 -#, fuzzy -msgid "Profile Calibration Signature" -msgstr "OÅ›wietlenie kalibracji 1" - -#: src/tags.cpp:1221 -msgid "" -"A UTF-8 encoded string associated with the camera profile tags. The " -"CameraCalibration1 and CameraCalibration2 tags should only be used in the " -"DNG color transfer if the string stored in the CameraCalibrationSignature " -"tag exactly matches the string stored in the ProfileCalibrationSignature tag " -"for the selected camera profile." -msgstr "" - -#: src/tags.cpp:1227 -#, fuzzy -msgid "As Shot Profile Name" -msgstr "Profil ICC w trakcie wykonywania zdjÄ™cia" - -#: src/tags.cpp:1228 -msgid "" -"A UTF-8 encoded string containing the name of the \"as shot\" camera " -"profile, if any." -msgstr "" - -#: src/tags.cpp:1231 -#, fuzzy -msgid "Noise Reduction Applied" -msgstr "Redukcja szumów" - -#: src/tags.cpp:1232 -msgid "" -"This tag indicates how much noise reduction has been applied to the raw data " -"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " -"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " -"reduction has been applied, i.e. that the DNG reader should not apply " -"additional noise reduction by default. A value of 0/0 indicates that this " -"parameter is unknown." -msgstr "" - -#: src/tags.cpp:1239 -#, fuzzy -msgid "Profile Name" -msgstr "Nazwy pÅ‚yt" - -#: src/tags.cpp:1240 -msgid "" -"A UTF-8 encoded string containing the name of the camera profile. This tag " -"is optional if there is only a single camera profile stored in the file but " -"is required for all camera profiles if there is more than one camera profile " -"stored in the file." -msgstr "" - -#: src/tags.cpp:1245 -msgid "Profile Hue Sat Map Dims" -msgstr "" - -#: src/tags.cpp:1246 -msgid "" -"This tag specifies the number of input samples in each dimension of the hue/" -"saturation/value mapping tables. The data for these tables are stored in " -"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " -"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " -"to the mapping table." -msgstr "" - -#: src/tags.cpp:1252 -msgid "Profile Hue Sat Map Data 1" -msgstr "" - -#: src/tags.cpp:1253 -msgid "" -"This tag contains the data for the first hue/saturation/value mapping table. " -"Each entry of the table contains three 32-bit IEEE floating-point values. " -"The first entry is hue shift in degrees; the second entry is saturation " -"scale factor; and the third entry is a value scale factor. The table entries " -"are stored in the tag in nested loop order, with the value divisions in the " -"outer loop, the hue divisions in the middle loop, and the saturation " -"divisions in the inner loop. All zero input saturation entries are required " -"to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1262 -msgid "Profile Hue Sat Map Data 2" -msgstr "" - -#: src/tags.cpp:1263 -msgid "" -"This tag contains the data for the second hue/saturation/value mapping " -"table. Each entry of the table contains three 32-bit IEEE floating-point " -"values. The first entry is hue shift in degrees; the second entry is a " -"saturation scale factor; and the third entry is a value scale factor. The " -"table entries are stored in the tag in nested loop order, with the value " -"divisions in the outer loop, the hue divisions in the middle loop, and the " -"saturation divisions in the inner loop. All zero input saturation entries " -"are required to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1272 -#, fuzzy -msgid "Profile Tone Curve" -msgstr "Krzywa tonalna" - -#: src/tags.cpp:1273 -msgid "" -"This tag contains a default tone curve that can be applied while processing " -"the image as a starting point for user adjustments. The curve is specified " -"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " -"sample has an input value in the range of 0.0 to 1.0, and an output value in " -"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " -"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " -"cubic spline." -msgstr "" - -#: src/tags.cpp:1281 -msgid "Profile Embed Policy" -msgstr "" - -#: src/tags.cpp:1282 -#, fuzzy -msgid "" -"This tag contains information about the usage rules for the associated " -"camera profile." -msgstr "" -"Ten znacznik zawiera informacjÄ™ o komputerze użytym do utworzenia obrazu." - -#: src/tags.cpp:1285 -#, fuzzy -msgid "Profile Copyright" -msgstr "Prawa autorskie" - -#: src/tags.cpp:1286 -msgid "" -"A UTF-8 encoded string containing the copyright information for the camera " -"profile. This string always should be preserved along with the other camera " -"profile tags." -msgstr "" - -#: src/tags.cpp:1290 -#, fuzzy -msgid "Forward Matrix 1" -msgstr "Matryca kolorów 1" - -#: src/tags.cpp:1291 src/tags.cpp:1295 -msgid "" -"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " -"colors." -msgstr "" - -#: src/tags.cpp:1294 -#, fuzzy -msgid "Forward Matrix 2" -msgstr "Matryca kolorów 2" - -#: src/tags.cpp:1298 -#, fuzzy -msgid "Preview Application Name" -msgstr "Dane podglÄ…du" - -#: src/tags.cpp:1299 -msgid "" -"A UTF-8 encoded string containing the name of the application that created " -"the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1302 -#, fuzzy -msgid "Preview Application Version" -msgstr "Wersja podglÄ…du" - -#: src/tags.cpp:1303 -msgid "" -"A UTF-8 encoded string containing the version number of the application that " -"created the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1306 -#, fuzzy -msgid "Preview Settings Name" -msgstr "Obraz podglÄ…du" - -#: src/tags.cpp:1307 -msgid "" -"A UTF-8 encoded string containing the name of the conversion settings (for " -"example, snapshot name) used for the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1310 -#, fuzzy -msgid "Preview Settings Digest" -msgstr "Opis ustawieÅ„ urzÄ…dzenia" - -#: src/tags.cpp:1311 -msgid "" -"A unique ID of the conversion settings (for example, MD5 digest) used to " -"render the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1314 -#, fuzzy -msgid "Preview Color Space" -msgstr "PrzestrzeÅ„ kolorów wideo" - -#: src/tags.cpp:1315 -msgid "" -"This tag specifies the color space in which the rendered preview in this IFD " -"is stored. The default value for this tag is sRGB for color previews and " -"Gray Gamma 2.2 for monochrome previews." -msgstr "" - -#: src/tags.cpp:1319 -#, fuzzy -msgid "Preview Date Time" -msgstr "Dane podglÄ…du" - -#: src/tags.cpp:1320 -msgid "" -"This tag is an ASCII string containing the name of the date/time at which " -"the preview stored in the IFD was rendered. The date/time is encoded using " -"ISO 8601 format." -msgstr "" - -#: src/tags.cpp:1324 -#, fuzzy -msgid "Raw Image Digest" -msgstr "Åšrodek obrazu Raw" - -#: src/tags.cpp:1325 -msgid "" -"This tag is an MD5 digest of the raw image data. All pixels in the image are " -"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " -"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " -"data for each pixel is processed in little-endian byte order." -msgstr "" - -#: src/tags.cpp:1330 -#, fuzzy -msgid "Original Raw File Digest" -msgstr "Oryginalne dane pliku Raw" - -#: src/tags.cpp:1331 -msgid "" -"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." -msgstr "" - -#: src/tags.cpp:1334 -msgid "Sub Tile Block Size" -msgstr "" - -#: src/tags.cpp:1335 -msgid "" -"Normally, the pixels within a tile are stored in simple row-scan order. This " -"tag specifies that the pixels within a tile should be grouped first into " -"rectangular blocks of the specified size. These blocks are stored in row-" -"scan order. Within each block, the pixels are stored in row-scan order. The " -"use of a non-default value for this tag requires setting the " -"DNGBackwardVersion tag to at least 1.2.0.0." -msgstr "" - -#: src/tags.cpp:1342 -msgid "Row Interleave Factor" -msgstr "" - -#: src/tags.cpp:1343 -msgid "" -"This tag specifies that rows of the image are stored in interleaved order. " -"The value of the tag specifies the number of interleaved fields. The use of " -"a non-default value for this tag requires setting the DNGBackwardVersion tag " -"to at least 1.2.0.0." -msgstr "" - -#: src/tags.cpp:1348 -msgid "Profile Look Table Dims" -msgstr "" - -#: src/tags.cpp:1349 -msgid "" -"This tag specifies the number of input samples in each dimension of a " -"default \"look\" table. The data for this table is stored in the " -"ProfileLookTableData tag." -msgstr "" - -#: src/tags.cpp:1353 -msgid "Profile Look Table Data" -msgstr "" - -#: src/tags.cpp:1354 -msgid "" -"This tag contains a default \"look\" table that can be applied while " -"processing the image as a starting point for user adjustment. This table " -"uses the same format as the tables stored in the ProfileHueSatMapData1 and " -"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " -"it should be applied later in the processing pipe, after any exposure " -"compensation and/or fill light stages, but before any tone curve stage. Each " -"entry of the table contains three 32-bit IEEE floating-point values. The " -"first entry is hue shift in degrees, the second entry is a saturation scale " -"factor, and the third entry is a value scale factor. The table entries are " -"stored in the tag in nested loop order, with the value divisions in the " -"outer loop, the hue divisions in the middle loop, and the saturation " -"divisions in the inner loop. All zero input saturation entries are required " -"to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1368 -msgid "Opcode List 1" -msgstr "" - -#: src/tags.cpp:1369 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, as " -"read directly from the file." -msgstr "" - -#: src/tags.cpp:1372 -msgid "Opcode List 2" -msgstr "" - -#: src/tags.cpp:1373 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, just " -"after it has been mapped to linear reference values." -msgstr "" - -#: src/tags.cpp:1376 -msgid "Opcode List 3" -msgstr "" - -#: src/tags.cpp:1377 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, just " -"after it has been demosaiced." -msgstr "" - -#: src/tags.cpp:1380 -#, fuzzy -msgid "Noise Profile" -msgstr "Filtr szumu" - -#: src/tags.cpp:1381 -msgid "" -"NoiseProfile describes the amount of noise in a raw image. Specifically, " -"this tag models the amount of signal-dependent photon (shot) noise and " -"signal-independent sensor readout noise, two common sources of noise in raw " -"images. The model assumes that the noise is white and spatially independent, " -"ignoring fixed pattern effects and other sources of noise (e.g., pixel " -"response non-uniformity, spatially-dependent thermal effects, etc.)." -msgstr "" - -#: src/tags.cpp:1389 src/tags.cpp:1390 -msgid "Unknown IFD tag" -msgstr "Nieznany znacznik IFD" - -#: src/tags.cpp:1401 src/tags.cpp:1459 -msgid "Not defined" -msgstr "NieokreÅ›lony" - -#: src/tags.cpp:1406 -msgid "Creative program" -msgstr "Program twórczy" - -#: src/tags.cpp:1407 -msgid "Action program" -msgstr "Program akcji" - -#: src/tags.cpp:1408 -msgid "Portrait mode" -msgstr "Portret" - -#: src/tags.cpp:1409 -msgid "Landscape mode" -msgstr "Pejzaż" - -#: src/tags.cpp:1418 -msgid "Multi-spot" -msgstr "Wielopunktowy" - -#: src/tags.cpp:1430 -msgid "Tungsten (incandescent light)" -msgstr "Å»arówka wolframowa" - -#: src/tags.cpp:1432 -msgid "Fine weather" -msgstr "Dobra pogoda" - -#: src/tags.cpp:1433 -msgid "Cloudy weather" -msgstr "Pochmurna pogoda" - -#: src/tags.cpp:1435 -msgid "Daylight fluorescent (D 5700 - 7100K)" -msgstr "ÅšwiatÅ‚o dzienne lampy fluorescencyjnej (D 5700 - 7100K)" - -#: src/tags.cpp:1436 -msgid "Day white fluorescent (N 4600 - 5400K)" -msgstr "Biel dnia lampy fluorescencyjnej (N 4600 - 5400K)" - -#: src/tags.cpp:1437 -msgid "Cool white fluorescent (W 3900 - 4500K)" -msgstr "ChÅ‚odnobiaÅ‚a lampa fluorescencyjna (W 3900 - 4500K)" - -#: src/tags.cpp:1438 -msgid "White fluorescent (WW 3200 - 3700K)" -msgstr "BiaÅ‚a lampa fluorescencyjna (WW 3200 - 3700K)" - -#: src/tags.cpp:1439 -msgid "Standard light A" -msgstr "ÅšwiatÅ‚o standardowe A" - -#: src/tags.cpp:1440 -msgid "Standard light B" -msgstr "ÅšwiatÅ‚o standardowe B" - -#: src/tags.cpp:1441 -msgid "Standard light C" -msgstr "ÅšwiatÅ‚o standardowe C" - -#: src/tags.cpp:1442 -msgid "D55" -msgstr "D55" - -#: src/tags.cpp:1443 -msgid "D65" -msgstr "D65" - -#: src/tags.cpp:1444 -msgid "D75" -msgstr "D75" - -#: src/tags.cpp:1445 -msgid "D50" -msgstr "D50" - -#: src/tags.cpp:1446 -msgid "ISO studio tungsten" -msgstr "Wolframowe oÅ›wietlenie studyjne ISO" - -#: src/tags.cpp:1447 -msgid "Other light source" -msgstr "Inne źródÅ‚o Å›wiatÅ‚a" - -#: src/tags.cpp:1454 -msgid "Uncalibrated" -msgstr "Nieskalibrowana" - -#: src/tags.cpp:1460 -msgid "One-chip color area" -msgstr "JednoukÅ‚adowy czujnik obszaru koloru" - -#: src/tags.cpp:1461 -msgid "Two-chip color area" -msgstr "DwuukÅ‚adowy czujnik obszaru koloru" - -#: src/tags.cpp:1462 -msgid "Three-chip color area" -msgstr "TrzyukÅ‚adowy czujnik obszaru koloru" - -#: src/tags.cpp:1463 -msgid "Color sequential area" -msgstr "Sekwencyjny obszar koloru" - -#: src/tags.cpp:1464 -msgid "Trilinear sensor" -msgstr "Czujnik trzyliniowy" - -#: src/tags.cpp:1465 -msgid "Color sequential linear" -msgstr "Liniowa sekwencja koloru" - -#: src/tags.cpp:1470 -msgid "Film scanner" -msgstr "Skaner negatywów" - -#: src/tags.cpp:1471 -msgid "Reflexion print scanner" -msgstr "Skaner druku odblaskowego" - -#: src/tags.cpp:1472 -msgid "Digital still camera" -msgstr "Aparat cyfrowy" - -#: src/tags.cpp:1477 -msgid "Directly photographed" -msgstr "BezpoÅ›rednio sfotografowane" - -#: src/tags.cpp:1482 -msgid "Normal process" -msgstr "Proces zwykÅ‚y" - -#: src/tags.cpp:1483 -msgid "Custom process" -msgstr "Proces wÅ‚asny" - -#: src/tags.cpp:1511 -msgid "Low gain up" -msgstr "Niskie wzmocnienie na górze" - -#: src/tags.cpp:1512 -msgid "High gain up" -msgstr "Wysokie wzmocnienie na górze" - -#: src/tags.cpp:1513 -msgid "Low gain down" -msgstr "Niskie wzmocnienie na dole" - -#: src/tags.cpp:1514 -msgid "High gain down" -msgstr "Wysokie wzmocnienie na górze" - -#: src/tags.cpp:1535 -msgid "Close view" -msgstr "Widok bliski" - -#: src/tags.cpp:1536 src/tags.cpp:1537 -msgid "Distant view" -msgstr "Widok daleki" - -#: src/tags.cpp:1543 -msgid "Exposure time, given in seconds (sec)." -msgstr "Czas ekspozycji podany w sekundach (s)." - -#: src/tags.cpp:1553 -msgid "" -"Indicates the spectral sensitivity of each channel of the camera used. The " -"tag value is an ASCII string compatible with the standard developed by the " -"ASTM Technical Committee." -msgstr "" -"Oznaczenie czuÅ‚oÅ›ci widmowej każdego kanaÅ‚u używanego przez aparat. Wartość " -"znacznika to Å‚aÅ„cuch znaków ASCII kompatybilny ze standardem utworzonym " -"przez ASTM Technical Committee." - -#: src/tags.cpp:1561 -msgid "Opto-Electoric Conversion Function" -msgstr "Funkcja konwersji optoelektrycznej" - -#: src/tags.cpp:1562 -msgid "" -"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " -"14524. is the relationship between the camera optical input and the " -"image values." -msgstr "" -"OkreÅ›lenie funkcji konwersji optoelektrycznej (OECF - Opto-Electric " -"Conversion Function) opisanej w ISO 14524. okreÅ›la zależność miÄ™dzy " -"wejÅ›ciem optycznym aparatu a wartoÅ›ciami obrazu." - -#: src/tags.cpp:1566 -#, fuzzy -msgid "Sensitivity Type" -msgstr "CzuÅ‚ość ISO" - -#: src/tags.cpp:1567 -msgid "" -"The SensitivityType tag indicates PhotographicSensitivity tag. which one of " -"the parameters of ISO12232 is the Although it is an optional tag, it should " -"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " -"or 7 may be used in case that the values of plural parameters are the same." -msgstr "" - -#: src/tags.cpp:1573 -#, fuzzy -msgid "Standard Output Sensitivity" -msgstr "CzuÅ‚ość widmowa" - -#: src/tags.cpp:1574 -msgid "" -"This tag indicates the standard output sensitivity value of a camera or " -"input device defined in ISO 12232. When recording this tag, the " -"PhotographicSensitivity and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1578 -#, fuzzy -msgid "Recommended Exposure Index" -msgstr "Indeks ekspozycji" - -#: src/tags.cpp:1579 -msgid "" -"This tag indicates the recommended exposure index value of a camera or input " -"device defined in ISO 12232. When recording this tag, the " -"PhotographicSensitivity and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1584 -msgid "" -"This tag indicates the ISO speed value of a camera or input device that is " -"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " -"and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1588 -#, fuzzy -msgid "ISO Speed Latitude yyy" -msgstr "Tryb ISO" - -#: src/tags.cpp:1589 -msgid "" -"This tag indicates the ISO speed latitude yyy value of a camera or input " -"device that is defined in ISO 12232. However, this tag shall not be recorded " -"without ISOSpeed and ISOSpeedLatitudezzz." -msgstr "" - -#: src/tags.cpp:1593 -#, fuzzy -msgid "ISO Speed Latitude zzz" -msgstr "Tryb ISO" - -#: src/tags.cpp:1594 -msgid "" -"This tag indicates the ISO speed latitude zzz value of a camera or input " -"device that is defined in ISO 12232. However, this tag shall not be recorded " -"without ISOSpeed and ISOSpeedLatitudeyyy." -msgstr "" - -#: src/tags.cpp:1599 -msgid "" -"The version of this standard supported. Nonexistence of this field is taken " -"to mean nonconformance to the standard." -msgstr "" -"ObsÅ‚ugiwana wersja tego standardu. Brak tego pola jest uznawany za " -"niezgodność ze standardem." - -#: src/tags.cpp:1602 -msgid "Date and Time (original)" -msgstr "Data i czas (oryginaÅ‚u)" - -#: src/tags.cpp:1603 -msgid "" -"The date and time when the original image data was generated. For a digital " -"still camera the date and time the picture was taken are recorded." -msgstr "" -"Data i czas wygenerowania oryginalnych danych obrazu. Dla aparatu cyfrowego " -"zapisywana jest data i czas zrobienia zdjÄ™cia." - -#: src/tags.cpp:1606 -msgid "Date and Time (digitized)" -msgstr "Data i czas (obrazu cyfrowego)" - -#: src/tags.cpp:1607 -msgid "The date and time when the image was stored as digital data." -msgstr "Data i czas zapisania obrazu jako danych cyfrowych." - -#: src/tags.cpp:1610 -msgid "" -"Information specific to compressed data. The channels of each component are " -"arranged in order from the 1st component to the 4th. For uncompressed data " -"the data arrangement is given in the tag. " -"However, since can only express the order of Y, " -"Cb and Cr, this tag is provided for cases when compressed data uses " -"components other than Y, Cb, and Cr and to enable support of other sequences." -msgstr "" -"Informacje specyficzne dla skompresowanych danych. KanaÅ‚y każdej skÅ‚adowej " -"sÄ… ukÅ‚adane w kolejnoÅ›ci od 1. do 4. Dla danych nieskompresowanych uÅ‚ożenie " -"danych jest podane w znaczniku . Jednak ponieważ " -" może wyrazić jedynie kolejność Y, Cb i Cr, ten " -"znacznik zostaÅ‚ dodany dla przypadków, kiedy skompresowane dane używajÄ… " -"skÅ‚adowych innych niż Y, Cb i Cr oraz aby umożliwić obsÅ‚ugÄ™ innych sekwencji." - -#: src/tags.cpp:1619 -msgid "Compressed Bits per Pixel" -msgstr "Skompresowane bity na piksel" - -#: src/tags.cpp:1620 -msgid "" -"Information specific to compressed data. The compression mode used for a " -"compressed image is indicated in unit bits per pixel." -msgstr "" -"Informacja specyficzna dla skompresowanych danych. Rodzaj kompresji użyty " -"dla skompresowanego obrazu jest okreÅ›lony w jednostkach bitów na piksel." - -#: src/tags.cpp:1624 -msgid "" -"Shutter speed. The unit is the APEX (Additive System of Photographic " -"Exposure) setting." -msgstr "" -"Czas otwarcia migawki. JednostkÄ… jest ustawienie APEX (Additive System of " -"Photographic EXposure)." - -#: src/tags.cpp:1628 -msgid "The lens aperture. The unit is the APEX value." -msgstr "PrzysÅ‚ona obiektywu. JednostkÄ… jest wartość APEX." - -#: src/tags.cpp:1631 -msgid "" -"The value of brightness. The unit is the APEX value. Ordinarily it is given " -"in the range of -99.99 to 99.99." -msgstr "" -"Wartość jasnoÅ›ci. JednostkÄ… jest wartość APEX. Zwykle jest podana w " -"przedziale od -99.99 do 99.99." - -#: src/tags.cpp:1634 -msgid "Exposure Bias" -msgstr "Odchylenie ekspozycji" - -#: src/tags.cpp:1635 -msgid "" -"The exposure bias. The units is the APEX value. Ordinarily it is given in " -"the range of -99.99 to 99.99." -msgstr "" -"Odchylenie ekspozycji. JednostkÄ… jest wartość APEX. Zwykle jest podana w " -"przedziale od -99.99 do 99.99." - -#: src/tags.cpp:1639 -msgid "" -"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " -"is given in the range of 00.00 to 99.99, but it is not limited to this range." -msgstr "" -"Najmniejsza liczba F obiektywu. JednostkÄ… jest wartość APEX. Zwykle jest " -"podana w przedziale od -99.99 do 99.99, ale nie ma ograniczenia do tego " -"zakresu." - -#: src/tags.cpp:1653 -msgid "" -"This tag is recorded when an image is taken using a strobe light (flash)." -msgstr "" -"Ten znacznik jest zapisywany kiedy zdjÄ™cie byÅ‚o robione z użyciem Å›wiatÅ‚a " -"bÅ‚yskowego (flesza)." - -#: src/tags.cpp:1656 -msgid "" -"The actual focal length of the lens, in mm. Conversion is not made to the " -"focal length of a 35 mm film camera." -msgstr "" -"Rzeczywista ogniskowa obiektywu w milimetrach, bez przeksztaÅ‚cenia do " -"ogniskowej dla aparatu na film 35 mm." - -#: src/tags.cpp:1660 -msgid "" -"This tag indicates the location and area of the main subject in the overall " -"scene." -msgstr "" -"Ten znacznik okreÅ›la poÅ‚ożenie i obszar głównego obiektu na caÅ‚ej scenie." - -#: src/tags.cpp:1663 -msgid "Maker Note" -msgstr "Uwaga producenta" - -#: src/tags.cpp:1664 -msgid "" -"A tag for manufacturers of Exif writers to record any desired information. " -"The contents are up to the manufacturer." -msgstr "" -"Znacznik dla producentów urzÄ…dzeÅ„ zapisujÄ…cych Exif do zapisywania dowolnie " -"wybranych informacji. Zawartość zależy od producenta." - -#: src/tags.cpp:1668 -msgid "" -"A tag for Exif users to write keywords or comments on the image besides " -"those in , and without the character code limitations of " -"the tag." -msgstr "" - -#: src/tags.cpp:1672 -msgid "Sub-seconds Time" -msgstr "Czas ekspozycji (uÅ‚amki sekund)" - -#: src/tags.cpp:1673 -msgid "A tag used to record fractions of seconds for the tag." -msgstr "" -"Znacznik używany do zapisywania uÅ‚amków sekund dla znacznika ." - -#: src/tags.cpp:1675 -msgid "Sub-seconds Time Original" -msgstr "Data i czas oryginaÅ‚u (uÅ‚amki sekund)" - -#: src/tags.cpp:1676 -msgid "" -"A tag used to record fractions of seconds for the tag." -msgstr "" -"Znacznik używany do zapisywania uÅ‚amków sekund dla znacznika " -"." - -#: src/tags.cpp:1678 -msgid "Sub-seconds Time Digitized" -msgstr "Data i czas digitalizacji (uÅ‚amki sekund)" - -#: src/tags.cpp:1679 -msgid "" -"A tag used to record fractions of seconds for the tag." -msgstr "" -"Znacznik używany do zapisywania uÅ‚amków sekund dla znacznika " -"." - -#: src/tags.cpp:1681 -msgid "FlashPix Version" -msgstr "Wersja FlashPix" - -#: src/tags.cpp:1682 -msgid "The FlashPix format version supported by a FPXR file." -msgstr "Wersja formatu FlashPix obsÅ‚ugiwana przez plik FPXR." - -#: src/tags.cpp:1685 -msgid "" -"The color space information tag is always recorded as the color space " -"specifier. Normally sRGB is used to define the color space based on the PC " -"monitor conditions and environment. If a color space other than sRGB is " -"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " -"treated as sRGB when it is converted to FlashPix." -msgstr "" -"Znacznik informacji o przestrzeni kolorów jest zawsze zapisywany w celu " -"okreÅ›lenia przestrzeni kolorów. Zwykle używane jest sRGB do okreÅ›lenia " -"przestrzeni kolorów w oparciu o warunki i Å›rodowisko monitora PC. JeÅ›li " -"użyta jest inna przestrzeÅ„ kolorów niż sRGB, ustawiona jest wartość " -"Nieskalibrowana. Dane obrazu zapisane jako nieskalibrowane mogÄ… być " -"traktowane jako sRGB przy konwersji do FlashPix." - -#: src/tags.cpp:1694 -msgid "" -"Information specific to compressed data. When a compressed file is recorded, " -"the valid width of the meaningful image must be recorded in this tag, " -"whether or not there is padding data or a restart marker. This tag should " -"not exist in an uncompressed file." -msgstr "" -"Informacje specyficzne dla skompresowanych danych. Kiedy zapisywany jest " -"skompresowany plik, w tym znaczniku musi być zapisana poprawna szerokość " -"znaczÄ…cego obrazu, niezależnie od istnienia danych dopeÅ‚niajÄ…cych czy " -"znacznika restartu. Ten znacznik nie powinien istnieć w pliku " -"nieskompresowanym." - -#: src/tags.cpp:1701 -msgid "" -"Information specific to compressed data. When a compressed file is recorded, " -"the valid height of the meaningful image must be recorded in this tag, " -"whether or not there is padding data or a restart marker. This tag should " -"not exist in an uncompressed file. Since data padding is unnecessary in the " -"vertical direction, the number of lines recorded in this valid image height " -"tag will in fact be the same as that recorded in the SOF." -msgstr "" -"Informacje specyficzne dla skompresowanych danych. Kiedy zapisywany jest " -"skompresowany plik, w tym znaczniku musi być zapisana poprawna wysokość " -"znaczÄ…cego obrazu, niezależnie od istnienia danych dopeÅ‚niajÄ…cych czy " -"znacznika restartu. Ten znacznik nie powinien istnieć w pliku " -"nieskompresowanym. Ponieważ dopeÅ‚nianie danych w kierunku pionowym nie jest " -"potrzebne, liczba linii zapisana w tym polu bÄ™dzie w praktyce równa tej " -"zapisanej w SOF." - -#: src/tags.cpp:1710 -msgid "" -"This tag is used to record the name of an audio file related to the image " -"data. The only relational information recorded here is the Exif audio file " -"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " -"characters). The path is not recorded." -msgstr "" -"Ten znacznik jest używany do zapisania nazwy pliku dźwiÄ™kowego powiÄ…zanego z " -"danymi obrazu. Jedyna zwiÄ…zana informacja zapisywana tutaj do nazwa pliku " -"dźwiÄ™kowego Exif i jego rozszerzenie (Å‚aÅ„cuch ASCII skÅ‚adajÄ…cy siÄ™ z 8 " -"znaków + \".\" + 3 znaków rozszerzenia). Åšcieżka do pliku nie jest " -"zapisywana." - -#: src/tags.cpp:1716 -msgid "Interoperability IFD Pointer" -msgstr "Wskaźnik IFD wymienialnoÅ›ci" - -#: src/tags.cpp:1717 -msgid "" -"Interoperability IFD is composed of tags which stores the information to " -"ensure the Interoperability and pointed by the following tag located in Exif " -"IFD. The Interoperability structure of Interoperability IFD is the same as " -"TIFF defined IFD structure but does not contain the image data " -"characteristically compared with normal TIFF IFD." -msgstr "" -"Interoperability IFD jest zÅ‚ożony ze znaczników przechowujÄ…cych informacje " -"zapewniajÄ…ce wymienialność i wskazywane przez ten znacznik umieszczony w " -"Exif IFD. Struktura wymienialnoÅ›ci w Interoperability IFD jest taka sama jak " -"struktura IFD zdefiniowana w TIFF, ale w porównaniu do normalnego TIFF IFD " -"nie zawiera danych obrazu." - -#: src/tags.cpp:1725 -msgid "" -"Indicates the strobe energy at the time the image is captured, as measured " -"in Beam Candle Power Seconds (BCPS)." -msgstr "" -"OkreÅ›lenie energii bÅ‚ysku w czasie robienia zdjÄ™cia mierzonej w jednostkach " -"BCPS (Beam Candle Power Seconds)." - -#: src/tags.cpp:1729 -msgid "" -"This tag records the camera or input device spatial frequency table and SFR " -"values in the direction of image width, image height, and diagonal " -"direction, as specified in ISO 12233." -msgstr "" -"Ten znacznik zapisuje tabelÄ™ czÄ™stotliwoÅ›ci przestrzennych aparatu lub " -"urzÄ…dzenia wejÅ›ciowego oraz wartoÅ›ci SFR w kierunku szerokoÅ›ci obrazu, " -"wysokoÅ›ci obrazu i przekÄ…tnej zgodnie ze specyfikacjÄ… ISO 12233." - -#: src/tags.cpp:1733 -msgid "Focal Plane X-Resolution" -msgstr "Rozdzielczość ogniskowej w pÅ‚aszczyźnie X" - -#: src/tags.cpp:1734 -msgid "" -"Indicates the number of pixels in the image width (X) direction per " -" on the camera focal plane." -msgstr "" -"OkreÅ›lenie liczby pikseli w kierunku szerokoÅ›ci obrazu (X) na " -" w pÅ‚aszczyźnie ogniskowej aparatu." - -#: src/tags.cpp:1737 -msgid "Focal Plane Y-Resolution" -msgstr "Rozdzielczość ogniskowej w pÅ‚aszczyźnie Y" - -#: src/tags.cpp:1738 -msgid "" -"Indicates the number of pixels in the image height (V) direction per " -" on the camera focal plane." -msgstr "" -"OkreÅ›lenie liczby pikseli w kierunku wysokoÅ›ci obrazu (Y) na " -" w pÅ‚aszczyźnie ogniskowej aparatu." - -#: src/tags.cpp:1742 -msgid "" -"Indicates the unit for measuring and " -". This value is the same as the ." -msgstr "" -"OkreÅ›lenie jednostki miary i " -". Ta wartość jest taka sama jak ." - -#: src/tags.cpp:1746 -msgid "" -"Indicates the location of the main subject in the scene. The value of this " -"tag represents the pixel at the center of the main subject relative to the " -"left edge, prior to rotation processing as per the tag. The first " -"value indicates the X column number and second indicates the Y row number." -msgstr "" -"OkreÅ›lenie poÅ‚ożenia głównego obiektu na scenie. Wartość tego znacznika " -"reprezentuje piksel w Å›rodku głównego obiektu wzglÄ™dem lewej krawÄ™dzi, przed " -"wykonaniem obrotu opisanego znacznikiem . Pierwsza wartość okreÅ›la " -"numer kolumny X, a druga numer wiersza Y." - -#: src/tags.cpp:1752 -msgid "Exposure index" -msgstr "Indeks ekspozycji" - -#: src/tags.cpp:1753 -msgid "" -"Indicates the exposure index selected on the camera or input device at the " -"time the image is captured." -msgstr "" -"OkreÅ›lenie indeksu ekspozycji wybranego przez aparat lub urzÄ…dzenie " -"wejÅ›ciowe w czasie robienia zdjÄ™cia." - -#: src/tags.cpp:1757 -msgid "Indicates the image sensor type on the camera or input device." -msgstr "" -"OkreÅ›lenie rodzaju czujnika obrazu w aparacie lub urzÄ…dzeniu wejÅ›ciowym." - -#: src/tags.cpp:1760 -msgid "" -"Indicates the image source. If a DSC recorded the image, this tag value of " -"this tag always be set to 3, indicating that the image was recorded on a DSC." -msgstr "" -"OkreÅ›lenie źródÅ‚a obrazu. JeÅ›li obraz byÅ‚ zapisany przez DSC, wartość tego " -"znacznika zawsze wynosi 3, oznaczajÄ…c, że obraz byÅ‚ zapisany przez DSC." - -#: src/tags.cpp:1765 -msgid "" -"Indicates the type of scene. If a DSC recorded the image, this tag value " -"must always be set to 1, indicating that the image was directly photographed." -msgstr "" -"OkreÅ›lenie rodzaju sceny. JeÅ›li obraz byÅ‚ zapisany przez DSC, wartość tego " -"znacznika zawsze musi być ustawiona na 1, oznaczajÄ…c, że obraz byÅ‚ " -"bezpoÅ›rednio sfotografowany." - -#: src/tags.cpp:1769 -msgid "Color Filter Array Pattern" -msgstr "Wzór filtra kolorów" - -#: src/tags.cpp:1770 -msgid "" -"Indicates the color filter array (CFA) geometric pattern of the image sensor " -"when a one-chip color area sensor is used. It does not apply to all sensing " -"methods." -msgstr "" -"Oznaczenie wzoru geometrycznego CFA (color filter array - tablicy filtrów " -"kolorów) czujnika obrazu w przypadku użycia jednoukÅ‚adowego czujnika obszaru " -"koloru. Nie odnosi siÄ™ to do wszystkich metod próbkowania." - -#: src/tags.cpp:1775 -msgid "" -"This tag indicates the use of special processing on image data, such as " -"rendering geared to output. When special processing is performed, the reader " -"is expected to disable or minimize any further processing." -msgstr "" -"Ten znacznik okreÅ›la użycie specjalnego przetwarzania danych obrazu, takiego " -"jak rendering zastosowany na wyjÅ›ciu. JeÅ›li jest wykonane specjalne " -"przetwarzanie, czytajÄ…cy powinien wyÅ‚Ä…czyć albo zminimalizować dalsze " -"przetwarzanie." - -#: src/tags.cpp:1781 -msgid "" -"This tag indicates the exposure mode set when the image was shot. In auto-" -"bracketing mode, the camera shoots a series of frames of the same scene at " -"different exposure settings." -msgstr "" -"Ten znacznik okreÅ›la tryb ekspozycji ustawiony przy robieniu zdjÄ™cia. W " -"trybie automatycznego bracketingu aparat wykonuje seriÄ™ klatek tej samej " -"sceny z różnymi ustawieniami ekspozycji." - -#: src/tags.cpp:1786 -msgid "This tag indicates the white balance mode set when the image was shot." -msgstr "" -"Ten znacznik okreÅ›la tryb balansu bieli ustawiony przy robieniu zdjÄ™cia." - -#: src/tags.cpp:1789 -msgid "" -"This tag indicates the digital zoom ratio when the image was shot. If the " -"numerator of the recorded value is 0, this indicates that digital zoom was " -"not used." -msgstr "" -"Ten znacznik okreÅ›la współczynnik powiÄ™kszenia cyfrowego w czasie robienia " -"zdjÄ™cia. JeÅ›li licznik wartoÅ›ci znacznika jest równy 0, oznacza to, że nie " -"użyto cyfrowego powiÄ™kszenia." - -#: src/tags.cpp:1794 -msgid "" -"This tag indicates the equivalent focal length assuming a 35mm film camera, " -"in mm. A value of 0 means the focal length is unknown. Note that this tag " -"differs from the tag." -msgstr "" -"Znacznik okreÅ›la odpowiednik ogniskowej w milimetrach w odniesieniu do " -"aparatu dla filmów 35 mm. Wartość 0 oznacza nieznanÄ… ogniskowÄ…. Uwaga: " -"znacznik ten różni siÄ™ od znacznika ." - -#: src/tags.cpp:1800 -msgid "" -"This tag indicates the type of scene that was shot. It can also be used to " -"record the mode in which the image was shot. Note that this differs from the " -" tag." -msgstr "" -"Znacznik okreÅ›la rodzaj sceny na zdjÄ™ciu. Może być także wykorzystany do " -"zapisania trybu, w którym byÅ‚o robione zdjÄ™cie. Należy zaznaczyć, że ten " -"znacznik różni siÄ™ od znacznika ." - -#: src/tags.cpp:1805 -msgid "This tag indicates the degree of overall image gain adjustment." -msgstr "Ten znacznik okreÅ›la stopieÅ„ wzmocnienia caÅ‚ego obrazu." - -#: src/tags.cpp:1808 -msgid "" -"This tag indicates the direction of contrast processing applied by the " -"camera when the image was shot." -msgstr "" -"Ten znacznik okreÅ›la kierunek przetwarzania kontrastu zastosowanego przez " -"aparat przy robieniu zdjÄ™cia." - -#: src/tags.cpp:1812 -msgid "" -"This tag indicates the direction of saturation processing applied by the " -"camera when the image was shot." -msgstr "" -"Ten znacznik okreÅ›la kierunek przetwarzania nasycenia zastosowanego przez " -"aparat przy robieniu zdjÄ™cia." - -#: src/tags.cpp:1816 -msgid "" -"This tag indicates the direction of sharpness processing applied by the " -"camera when the image was shot." -msgstr "" -"Ten znacznik okreÅ›la kierunek przetwarzania ostroÅ›ci zastosowanego przez " -"aparat przy robieniu zdjÄ™cia." - -#: src/tags.cpp:1820 -msgid "" -"This tag indicates information on the picture-taking conditions of a " -"particular camera model. The tag is used only to indicate the picture-taking " -"conditions in the reader." -msgstr "" -"Ten znacznik okreÅ›la informacje o warunkach robienia zdjÄ™cia dla konkretnego " -"modelu aparatu. Jest on używany tylko do okreÅ›lenia warunków robienia " -"zdjÄ™cia przy odczycie." - -#: src/tags.cpp:1825 -msgid "This tag indicates the distance to the subject." -msgstr "Ten znacznik okreÅ›la odlegÅ‚ość od obiektu." - -#: src/tags.cpp:1828 -msgid "" -"This tag indicates an identifier assigned uniquely to each image. It is " -"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " -"fixed length." -msgstr "" -"Ten znacznik okreÅ›la unikalny identyfikator przypisany każdemu zdjÄ™ciu. Jest " -"on zapisany jako Å‚aÅ„cuch ASCII odpowiadajÄ…cy notacji szesnastkowej o staÅ‚ej " -"dÅ‚ugoÅ›ci 128 bitów." - -#: src/tags.cpp:1832 -#, fuzzy -msgid "Camera Owner Name" -msgstr "Nazwa wÅ‚aÅ›ciciela" - -#: src/tags.cpp:1833 -msgid "" -"This tag records the owner of a camera used in photography as an ASCII " -"string." -msgstr "" - -#: src/tags.cpp:1836 -#, fuzzy -msgid "Body Serial Number" -msgstr "Numer seryjny" - -#: src/tags.cpp:1837 -msgid "" -"This tag records the serial number of the body of the camera that was used " -"in photography as an ASCII string." -msgstr "" - -#: src/tags.cpp:1840 -#, fuzzy -msgid "Lens Specification" -msgstr "Informacje zależna od dostawcy" - -#: src/tags.cpp:1841 -msgid "" -"This tag notes minimum focal length, maximum focal length, minimum F number " -"in the minimum focal length, and minimum F number in the maximum focal " -"length, which are specification information for the lens that was used in " -"photography. When the minimum F number is unknown, the notation is 0/0" -msgstr "" - -#: src/tags.cpp:1847 -#, fuzzy -msgid "Lens Make" -msgstr "Model obiektywu" - -#: src/tags.cpp:1848 -msgid "This tag records the lens manufactor as an ASCII string." -msgstr "" - -#: src/tags.cpp:1851 -msgid "" -"This tag records the lens's model name and model number as an ASCII string." -msgstr "" - -#: src/tags.cpp:1855 -msgid "" -"This tag records the serial number of the interchangeable lens that was used " -"in photography as an ASCII string." -msgstr "" - -#: src/tags.cpp:1859 src/tags.cpp:1860 -msgid "Unknown Exif tag" -msgstr "Nieznany znacznik Exif" - -#: src/tags.cpp:1871 -msgid "North" -msgstr "Północ" - -#: src/tags.cpp:1872 -msgid "South" -msgstr "PoÅ‚udnie" - -#: src/tags.cpp:1877 -msgid "East" -msgstr "Wschód" - -#: src/tags.cpp:1878 -msgid "West" -msgstr "Zachód" - -#: src/tags.cpp:1883 -msgid "Above sea level" -msgstr "Powyżej poziomu morza" - -#: src/tags.cpp:1884 -msgid "Below sea level" -msgstr "Poniżej poziomu morza" - -#: src/tags.cpp:1889 -msgid "Measurement in progress" -msgstr "Pomiar w toku" - -#: src/tags.cpp:1890 -msgid "Measurement Interoperability" -msgstr "Pomiar gotowy" - -#: src/tags.cpp:1895 -msgid "Two-dimensional measurement" -msgstr "Pomiar dwuwymiarowy" - -#: src/tags.cpp:1896 -msgid "Three-dimensional measurement" -msgstr "Pomiar trójwymiarowy" - -#: src/tags.cpp:1901 -msgid "km/h" -msgstr "km/h" - -#: src/tags.cpp:1902 -msgid "mph" -msgstr "mph" - -#: src/tags.cpp:1903 -msgid "knots" -msgstr "wÄ™zÅ‚y" - -#: src/tags.cpp:1908 -msgid "True direction" -msgstr "Kierunek rzeczywisty" - -#: src/tags.cpp:1909 -msgid "Magnetic direction" -msgstr "Kierunek magnetyczny" - -#: src/tags.cpp:1914 -msgid "Kilometers" -msgstr "Kilometry" - -#: src/tags.cpp:1915 -msgid "Miles" -msgstr "Mile" - -#: src/tags.cpp:1916 -msgid "Knots" -msgstr "WÄ™zÅ‚y" - -#: src/tags.cpp:1921 -msgid "Without correction" -msgstr "Bez korekcji" - -#: src/tags.cpp:1922 -msgid "Correction applied" -msgstr "Z korekcjÄ…" - -#: src/tags.cpp:1928 -msgid "" -"Indicates the version of . The version is given as 2.0.0.0. This " -"tag is mandatory when tag is present. (Note: The " -"tag is given in bytes, unlike the tag. When the version is " -"2.0.0.0, the tag value is 02000000.H)." -msgstr "" -"Oznaczenie wersji . Wersja jest podawana jako 2.0.0.0. Ten " -"znacznik jest obowiÄ…zkowy, jeÅ›li obecny jest znacznik . (Uwaga: " -"znacznik jest podawany w bajtach, w przeciwieÅ„stwie do " -"znacznika . Kiedy wersja to 2.0.0.0, znacznik ma wartość " -"02000000.H)." - -#: src/tags.cpp:1934 -msgid "GPS Latitude Reference" -msgstr "GPS Oznaczenie szerokoÅ›ci" - -#: src/tags.cpp:1935 -msgid "" -"Indicates whether the latitude is north or south latitude. The ASCII value " -"'N' indicates north latitude, and 'S' is south latitude." -msgstr "" -"Oznaczenie, czy szerokość geograficzna jest północna, czy poÅ‚udniowa. " -"Wartość ASCII \"N\" oznacza szerokość północnÄ…, a \"S\" poÅ‚udniowÄ…." - -#: src/tags.cpp:1939 -msgid "" -"Indicates the latitude. The latitude is expressed as three RATIONAL values " -"giving the degrees, minutes, and seconds, respectively. When degrees, " -"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " -"degrees and minutes are used and, for example, fractions of minutes are " -"given up to two decimal places, the format is dd/1,mmmm/100,0/1." -msgstr "" -"OkreÅ›lenie szerokoÅ›ci geograficznej. Szerokość jest wyrażona jako trzy " -"wartoÅ›ci RATIONAL (wymierne) podajÄ…ce odpowiednio stopnie, minuty i sekundy. " -"Kiedy sÄ… wyrażone stopnie, minuty i sekundy, format to dd/1,mm/1,ss/1. Kiedy " -"sÄ… wyrażone stopnie i minuty oraz np. uÅ‚amki minut sÄ… podane z dokÅ‚adnoÅ›ciÄ… " -"do dwóch miejsc po przecinku, format to dd/1,mmmm/100,0/1." - -#: src/tags.cpp:1946 -msgid "GPS Longitude Reference" -msgstr "GPS Oznaczenie dÅ‚ugoÅ›ci" - -#: src/tags.cpp:1947 -msgid "" -"Indicates whether the longitude is east or west longitude. ASCII 'E' " -"indicates east longitude, and 'W' is west longitude." -msgstr "" -"OkreÅ›lenie, czy dÅ‚ugość geograficzna jest wschodnia, czy zachodnia. Wartość " -"ASCII \"E\" oznacza dÅ‚ugość wschodniÄ…, a \"W\" zachodniÄ…." - -#: src/tags.cpp:1951 -msgid "" -"Indicates the longitude. The longitude is expressed as three RATIONAL values " -"giving the degrees, minutes, and seconds, respectively. When degrees, " -"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " -"degrees and minutes are used and, for example, fractions of minutes are " -"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." -msgstr "" -"OkreÅ›lenie dÅ‚ugoÅ›ci geograficznej. Szerokość jest wyrażona jako trzy " -"wartoÅ›ci RATIONAL (wymierne) podajÄ…ce odpowiednio stopnie, minuty i sekundy. " -"Kiedy sÄ… wyrażone stopnie, minuty i sekundy, format to dd/1,mm/1,ss/1. Kiedy " -"sÄ… wyrażone stopnie i minuty oraz np. uÅ‚amki minut sÄ… podane z dokÅ‚adnoÅ›ciÄ… " -"do dwóch miejsc po przecinku, format to dd/1,mmmm/100,0/1." - -#: src/tags.cpp:1959 -msgid "" -"Indicates the altitude used as the reference altitude. If the reference is " -"sea level and the altitude is above sea level, 0 is given. If the altitude " -"is below sea level, a value of 1 is given and the altitude is indicated as " -"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " -"that this tag is BYTE type, unlike other reference tags." -msgstr "" -"OkreÅ›lenie odniesienia wysokoÅ›ci. JeÅ›li odniesienie jest poziomem morza i " -"wysokość jest nad poziomem morza, podaje siÄ™ 0. JeÅ›li wysokość jest poniżej " -"poziomu morza, podaje siÄ™ wartość 1 i wysokość oznacza siÄ™ jako wartość " -"bezwzglÄ™dnÄ… w znaczniku GPSAltitude. JednostkÄ… odniesienia sÄ… metry. Ten " -"znacznik jest typu BYTE w przeciwieÅ„stwie do innych znaczników odniesienia." - -#: src/tags.cpp:1967 -msgid "" -"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " -"expressed as one RATIONAL value. The reference unit is meters." -msgstr "" -"OkreÅ›lenie wysokoÅ›ci (wyniesienia n.p.m.) w oparciu o odniesienie w " -"GPSAltitudeRef. Wysokość jest wyrażona jako jedna wartość RATIONAL " -"(wymierna). JednostkÄ… odniesienia sÄ… metry." - -#: src/tags.cpp:1971 -msgid "" -"Indicates the time as UTC (Coordinated Universal Time). is " -"expressed as three RATIONAL values giving the hour, minute, and second " -"(atomic clock)." -msgstr "" -"OkreÅ›la czas jako uniwersalny czas koordynowany (UTC). jest " -"wyrażony jako trzy wartoÅ›ci wymierne (RATIONAL) podajÄ…ce godzinÄ™, minutÄ™ i " -"sekundÄ™ (zegar atomowy)." - -#: src/tags.cpp:1976 -msgid "" -"Indicates the GPS satellites used for measurements. This tag can be used to " -"describe the number of satellites, their ID number, angle of elevation, " -"azimuth, SNR and other information in ASCII notation. The format is not " -"specified. If the GPS receiver is incapable of taking measurements, value of " -"the tag is set to NULL." -msgstr "" -"OkreÅ›la satelity systemu GPS użyte do pomiaru. Znacznik ten może być użyty " -"do opisania numerów satelitów, ich numerów identyfikacyjnych, kÄ…ta " -"wychylenia, azymutu, SNR i innych informacji w postaci ASCII. Format nie " -"jest okreÅ›lony. JeÅ›li odbiornik GPS nie jest zdolny do wykonania pomiaru, " -"znacznik jest ustawiany na NULL." - -#: src/tags.cpp:1983 -msgid "" -"Indicates the status of the GPS receiver when the image is recorded. \"A\" " -"means measurement is in progress, and \"V\" means the measurement is " -"Interoperability." -msgstr "" -"OkreÅ›la stan odbiornika GPS w momencie zapisania obrazu. \"A\" oznacza że " -"pomiar jest w toku, a \"V\" oznacza gotowość pomiaru." - -#: src/tags.cpp:1988 -msgid "" -"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " -"and \"3\" means three-dimensional measurement is in progress." -msgstr "" -"OkreÅ›la tryb pomiaru w odbiorniku GPS. WartoÅ›ci tekstowe: \"2\" oznacza " -"pomiar dwuwymiarowy, a \"3\" pomiar trójwymiarowy." - -#: src/tags.cpp:1991 -msgid "GPS Data Degree of Precision" -msgstr "GPS StopieÅ„ precyzji danych" - -#: src/tags.cpp:1992 -msgid "" -"Indicates the GPS DOP (data degree of precision). An HDOP value is written " -"during two-dimensional measurement, and PDOP during three-dimensional " -"measurement." -msgstr "" -"OkreÅ›la stopieÅ„ precyzji danych GPS (DOP). Wartość HDOP jest zapisywana " -"podczas pomiaru dwuwymiarowego, natomiast PDOP podczas pomiaru " -"dwuwymiarowego." - -#: src/tags.cpp:1996 -msgid "" -"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " -"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." -msgstr "" -"Jednostka użyta do pomiaru prÄ™dkoÅ›ci ruchu odbiornika GPS. \"K\", \"M\" i \"N" -"\" oznaczajÄ… kilometry, mile i wÄ™zÅ‚y." - -#: src/tags.cpp:2000 -msgid "Indicates the speed of GPS receiver movement." -msgstr "OkreÅ›la prÄ™dkość ruchu odbiornika GPS." - -#: src/tags.cpp:2002 -msgid "GPS Track Ref" -msgstr "GPS Kierunek" - -#: src/tags.cpp:2003 -msgid "" -"Indicates the reference for giving the direction of GPS receiver movement. " -"\"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" -"Oznacza rodzaj kierunku ruchu odbiornika GPS. \"T\" oznacza kierunek " -"rzeczywisty, a \"M\" kierunek magnetyczny." - -#: src/tags.cpp:2007 -msgid "" -"Indicates the direction of GPS receiver movement. The range of values is " -"from 0.00 to 359.99." -msgstr "" -"OkreÅ›la kierunek ruchu odbiornika GPS. Zakres wartoÅ›ci to od 0.00 do 359.99." - -#: src/tags.cpp:2011 -msgid "" -"Indicates the reference for giving the direction of the image when it is " -"captured. \"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" -"Oznaczenie rodzaju kierunku (namiaru) do obrazu podczas jego wykonywania. \"T" -"\" oznacza kierunek rzeczywisty, a \"M\" kierunek magnetyczny." - -#: src/tags.cpp:2015 -msgid "" -"Indicates the direction of the image when it was captured. The range of " -"values is from 0.00 to 359.99." -msgstr "" -"OkreÅ›la kierunek obrazu podczas wykonywania zdjÄ™cia, zakres wartoÅ›ci to od " -"0.00 do 359.99." - -#: src/tags.cpp:2019 -msgid "" -"Indicates the geodetic survey data used by the GPS receiver. If the survey " -"data is restricted to Japan, the value of this tag is \"TOKYO\" or " -"\"WGS-84\"." -msgstr "" -"OkreÅ›la ukÅ‚ad odniesienia współrzÄ™dnych geograficznych użytych przez " -"odbiornik GPS. JeÅ›li ukÅ‚ad odniesienia jest ograniczony do Japonii, wartość " -"tego znacznika to \"TOKYO\" lub \"WGS-84\"." - -#: src/tags.cpp:2022 -msgid "GPS Destination Latitude Refeference" -msgstr "GPS OkreÅ›lenie szerokoÅ›ci celu" - -#: src/tags.cpp:2023 -msgid "" -"Indicates whether the latitude of the destination point is north or south " -"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " -"latitude." -msgstr "" -"Oznaczenie, czy szerokość geograficzna punktu docelowego jest północna, czy " -"poÅ‚udniowa. Wartość ASCII \"N\" oznacza szerokość geograficznÄ… północnÄ…, a " -"\"S\" poÅ‚udniowÄ…." - -#: src/tags.cpp:2027 -msgid "" -"Indicates the latitude of the destination point. The latitude is expressed " -"as three RATIONAL values giving the degrees, minutes, and seconds, " -"respectively. If latitude is expressed as degrees, minutes and seconds, a " -"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " -"and, for example, fractions of minutes are given up to two decimal places, " -"the format would be dd/1,mmmm/100,0/1." -msgstr "" -"OkreÅ›lenie szerokoÅ›ci geograficznej punktu docelowego. Szerokość jest " -"wyrażona jako trzy wartoÅ›ci RATIONAL (wymierne) podajÄ…ce odpowiednio " -"stopnie, minuty i sekundy. Kiedy sÄ… wyrażone stopnie, minuty i sekundy, " -"typowy format to dd/1,mm/1,ss/1. Kiedy sÄ… wyrażone stopnie i minuty oraz np. " -"uÅ‚amki minut sÄ… podane z dokÅ‚adnoÅ›ciÄ… do dwóch miejsc po przecinku, format " -"to dd/1,mmmm/100,0/1." - -#: src/tags.cpp:2034 -msgid "GPS Destination Longitude Reference" -msgstr "GPS OkreÅ›lenie dÅ‚ugoÅ›ci celu" - -#: src/tags.cpp:2035 -msgid "" -"Indicates whether the longitude of the destination point is east or west " -"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." -msgstr "" -"OkreÅ›lenie, czy dÅ‚ugość geograficzna punktu docelowego jest wschodnia, czy " -"zachodnia. Wartość ASCII \"E\" oznacza dÅ‚ugość geograficznÄ… wschodniÄ…, a \"W" -"\" zachodniÄ…." - -#: src/tags.cpp:2039 -msgid "" -"Indicates the longitude of the destination point. The longitude is expressed " -"as three RATIONAL values giving the degrees, minutes, and seconds, " -"respectively. If longitude is expressed as degrees, minutes and seconds, a " -"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " -"and, for example, fractions of minutes are given up to two decimal places, " -"the format would be ddd/1,mmmm/100,0/1." -msgstr "" -"OkreÅ›lenie dÅ‚ugoÅ›ci geograficznej punktu docelowego. DÅ‚ugość jest wyrażona " -"jako trzy wartoÅ›ci RATIONAL (wymierne) podajÄ…ce odpowiednio stopnie, minuty " -"i sekundy. Kiedy sÄ… wyrażone stopnie, minuty i sekundy, typowy format to " -"dd/1,mm/1,ss/1. Kiedy sÄ… wyrażone stopnie i minuty oraz np. uÅ‚amki minut sÄ… " -"podane z dokÅ‚adnoÅ›ciÄ… do dwóch miejsc po przecinku, format to dd/1," -"mmmm/100,0/1." - -#: src/tags.cpp:2046 -msgid "" -"Indicates the reference used for giving the bearing to the destination " -"point. \"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" -"Oznaczenie rodzaju kierunku (namiaru) do punktu docelowego. \"T\" oznacza " -"kierunek rzeczywisty, a \"M\" kierunek magnetyczny." - -#: src/tags.cpp:2050 -msgid "" -"Indicates the bearing to the destination point. The range of values is from " -"0.00 to 359.99." -msgstr "" -"OkreÅ›la kierunek (namiar) do punktu docelowego. Przyjmuje zakres wartoÅ›ci od " -"0.00 do 359.99." - -#: src/tags.cpp:2053 -msgid "GPS Destination Distance Reference" -msgstr "GPS Jednostki odlegÅ‚oÅ›ci do celu" - -#: src/tags.cpp:2054 -msgid "" -"Indicates the unit used to express the distance to the destination point. \"K" -"\", \"M\" and \"N\" represent kilometers, miles and knots." -msgstr "" -"Jednostki użyte do wyrażenia odlegÅ‚oÅ›ci do punktu docelowego. \"K\", \"M\" i " -"\"N\" oznaczajÄ… kilometry, mile i wÄ™zÅ‚y." - -#: src/tags.cpp:2058 -msgid "Indicates the distance to the destination point." -msgstr "OkreÅ›la odlegÅ‚ość do punktu docelowego." - -#: src/tags.cpp:2061 -msgid "" -"A character string recording the name of the method used for location " -"finding. The first byte indicates the character code used, and this is " -"followed by the name of the method." -msgstr "" -"ÅaÅ„cuch tekstowy okreÅ›lajÄ…cy metodÄ™ użytÄ… do znalezienia lokalizacji. " -"Pierwszy bajt okreÅ›la użyte kodowanie, po nim nastÄ™puje nazwa metody." - -#: src/tags.cpp:2066 -msgid "" -"A character string recording the name of the GPS area. The first byte " -"indicates the character code used, and this is followed by the name of the " -"GPS area." -msgstr "" -"ÅaÅ„cuch tekstowy, w którym jest zapisana nazwa obszaru GPS. Pierwszy bajt " -"okreÅ›la użyte kodowanie, po nim nastÄ™puje nazwa obszaru GPS." - -#: src/tags.cpp:2069 -msgid "GPS Date Stamp" -msgstr "GPS Znacznik czasu" - -#: src/tags.cpp:2070 -msgid "" -"A character string recording date and time information relative to UTC " -"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." -msgstr "" -"ÅaÅ„cuch tekstowy, który zawiera informacjÄ™ o dacie i czasie w odniesieniu do " -"UTC (uniwersalnego czasu koordynowanego). Format to \"RRRR:MM:DD.\"." - -#: src/tags.cpp:2074 -msgid "" -"Indicates whether differential correction is applied to the GPS receiver." -msgstr "OkreÅ›la czy dla odbiornika GPS zastosowano korekcjÄ™ różnicowÄ…." - -#: src/tags.cpp:2077 src/tags.cpp:2078 -msgid "Unknown GPSInfo tag" -msgstr "Nieznany znacznik GPSInfo" - -#: src/tags.cpp:2089 -msgid "Interoperability Index" -msgstr "Indeks wymienialnoÅ›ci" - -#: src/tags.cpp:2090 -msgid "" -"Indicates the identification of the Interoperability rule. Use \"R98\" for " -"stating ExifR98 Rules. Four bytes used including the termination code " -"(NULL). see the separate volume of Recommended Exif Interoperability Rules " -"(ExifR98) for other tags used for ExifR98." -msgstr "" -"Oznaczenie identyfikacji reguÅ‚y wymienialnoÅ›ci. Należy użyć \"R98\" dla " -"oznaczenia reguÅ‚ ExifR98. Używane sÄ… cztery bajty wraz ze znacznikiem koÅ„ca " -"(NULL). Inne znaczniki ExifR98 sÄ… opisane w pozycji Recommended Exif " -"Interoperability Rules (ExifR98)." - -#: src/tags.cpp:2096 -msgid "Interoperability Version" -msgstr "Wersja wymienialnoÅ›ci" - -#: src/tags.cpp:2097 -msgid "Interoperability version" -msgstr "Wersja wymienialnoÅ›ci" - -#: src/tags.cpp:2099 -msgid "Related Image File Format" -msgstr "PowiÄ…zany format pliku obrazu" - -#: src/tags.cpp:2100 -msgid "File format of image file" -msgstr "Format pliku obrazu" - -#: src/tags.cpp:2102 -msgid "Related Image Width" -msgstr "PowiÄ…zana szerokość obrazu" - -#: src/tags.cpp:2105 -msgid "Related Image Length" -msgstr "PowiÄ…zana dÅ‚ugość obrazu" - -#: src/tags.cpp:2109 src/tags.cpp:2110 -msgid "Unknown Exif Interoperability tag" -msgstr "Nieznany znacznik Exif Interoperability" - -#: src/tags.cpp:2121 -msgid "Offset" -msgstr "PrzesuniÄ™cie" - -#: src/tags.cpp:2122 -msgid "Offset of the makernote from the start of the TIFF header." -msgstr "PrzesuniÄ™cie Makernote od poczÄ…tku nagłówka TIFF." - -#: src/tags.cpp:2124 -msgid "Byte Order" -msgstr "Kolejność bajtów" - -#: src/tags.cpp:2125 -msgid "" -"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" -"endian)." -msgstr "" -"Kolejność bajtów użyta do zakodowania znaczników MakerNote, \"MM\" (big-" -"endian) lub \"II\" (little-endian)." - -#: src/tags.cpp:2128 src/tags.cpp:2129 -msgid "Unknown Exiv2 Makernote info tag" -msgstr "Nieznany znacznik informacyjny Exiv2 Makernote" - -#: src/tags.cpp:2139 src/tags.cpp:2140 -msgid "Unknown tag" -msgstr "Nieznany znacznik" - -#: src/tags.cpp:2662 -msgid "Digital zoom not used" -msgstr "Nie użyto cyfrowego zoomu" - -#: src/tiffimage.cpp:2034 -msgid "TIFF header, offset" -msgstr "PrzesuniÄ™cie nagłówka TIFF" - -#: src/tiffimage.cpp:2039 -msgid "little endian encoded" -msgstr "zakodowane jako little endian" - -#: src/tiffimage.cpp:2040 -msgid "big endian encoded" -msgstr "zakodowane jako big endian" - -#~ msgid "Software firmware version" -#~ msgstr "Wersja firmware" - -#, fuzzy -#~ msgid "White Balance Bracketing " -#~ msgstr "Bracketing balansu bieli" - -#~ msgid "(Unknown Error)" -#~ msgstr "(Nieznany bÅ‚Ä…d)" diff --git a/platform/win32/msvc/external/exiv2/po/quot.sed b/platform/win32/msvc/external/exiv2/po/quot.sed deleted file mode 100644 index 0122c46318d..00000000000 --- a/platform/win32/msvc/external/exiv2/po/quot.sed +++ /dev/null @@ -1,6 +0,0 @@ -s/"\([^"]*\)"/“\1â€/g -s/`\([^`']*\)'/‘\1’/g -s/ '\([^`']*\)' / ‘\1’ /g -s/ '\([^`']*\)'$/ ‘\1’/g -s/^'\([^`']*\)' /‘\1’ /g -s/“â€/""/g diff --git a/platform/win32/msvc/external/exiv2/po/remove-potcdate.sin b/platform/win32/msvc/external/exiv2/po/remove-potcdate.sin deleted file mode 100644 index 2436c49e786..00000000000 --- a/platform/win32/msvc/external/exiv2/po/remove-potcdate.sin +++ /dev/null @@ -1,19 +0,0 @@ -# Sed script that remove the POT-Creation-Date line in the header entry -# from a POT file. -# -# The distinction between the first and the following occurrences of the -# pattern is achieved by looking at the hold space. -/^"POT-Creation-Date: .*"$/{ -x -# Test if the hold space is empty. -s/P/P/ -ta -# Yes it was empty. First occurrence. Remove the line. -g -d -bb -:a -# The hold space was nonempty. Following occurrences. Do nothing. -x -:b -} diff --git a/platform/win32/msvc/external/exiv2/po/ru.gmo b/platform/win32/msvc/external/exiv2/po/ru.gmo deleted file mode 100644 index 88ea0bd2cd3..00000000000 Binary files a/platform/win32/msvc/external/exiv2/po/ru.gmo and /dev/null differ diff --git a/platform/win32/msvc/external/exiv2/po/ru.po b/platform/win32/msvc/external/exiv2/po/ru.po deleted file mode 100644 index 57799d8f58c..00000000000 --- a/platform/win32/msvc/external/exiv2/po/ru.po +++ /dev/null @@ -1,23780 +0,0 @@ -# translation of Exiv2 to Russian -# This file is distributed under the same license as the PACKAGE package. -# Copyright (C) 2007 Lutz Müller and others. -# Alexandre Prokoudine , 2006. -# -msgid "" -msgstr "" -"Project-Id-Version: ru\n" -"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" -"POT-Creation-Date: 2012-03-23 18:06+0800\n" -"PO-Revision-Date: 2008-05-26 04:03+0300\n" -"Last-Translator: Alexandre Prokoudine \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.10.2\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" - -#: src/actions.cpp:253 src/actions.cpp:486 src/actions.cpp:698 -#: src/actions.cpp:715 src/actions.cpp:760 src/actions.cpp:850 -#: src/actions.cpp:993 src/actions.cpp:1035 src/actions.cpp:1104 -#: src/actions.cpp:1146 src/actions.cpp:1151 src/actions.cpp:1171 -#: src/actions.cpp:1176 src/actions.cpp:1208 src/actions.cpp:1451 -#: src/actions.cpp:1587 src/actions.cpp:1652 src/actions.cpp:1820 -msgid "Failed to open the file\n" -msgstr "Ðе удалоÑÑŒ открыть файл\n" - -#: src/actions.cpp:263 -msgid "File name" -msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" - -#: src/actions.cpp:269 -msgid "File size" -msgstr "Размер файла" - -#: src/actions.cpp:270 src/actions.cpp:422 src/actions.cpp:1019 -msgid "Bytes" -msgstr "Байт" - -#: src/actions.cpp:274 -msgid "MIME type" -msgstr "Тип MIME" - -#: src/actions.cpp:278 src/canonmn.cpp:785 src/minoltamn.cpp:500 -#: src/minoltamn.cpp:745 src/minoltamn.cpp:988 src/pentaxmn.cpp:892 -msgid "Image size" -msgstr "Размер изображениÑ" - -#: src/actions.cpp:283 src/actions.cpp:513 src/actions.cpp:773 -#: src/actions.cpp:1002 src/actions.cpp:1464 src/actions.cpp:1600 -#: src/actions.cpp:1665 -msgid "No Exif data found in the file\n" -msgstr "Ð’ Ñтом файле не найдено данных Exif\n" - -#: src/actions.cpp:288 -msgid "Camera make" -msgstr "" - -#: src/actions.cpp:291 -msgid "Camera model" -msgstr "Модель камеры" - -#: src/actions.cpp:294 -msgid "Image timestamp" -msgstr "Отметка времени Ñнимка" - -#: src/actions.cpp:298 src/minoltamn.cpp:805 src/minoltamn.cpp:812 -#: src/minoltamn.cpp:1066 -msgid "Image number" -msgstr "Ðомер Ñнимка" - -#: src/actions.cpp:303 src/minoltamn.cpp:515 src/minoltamn.cpp:798 -#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1368 src/pentaxmn.cpp:909 -#: src/pentaxmn.cpp:910 -msgid "Exposure time" -msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" - -#: src/actions.cpp:315 src/canonmn.cpp:903 src/minoltamn.cpp:1262 -#: src/tags.cpp:1627 -msgid "Aperture" -msgstr "Диафрагма" - -#: src/actions.cpp:325 -msgid "Exposure bias" -msgstr "Смещение ÑкÑпозиции" - -#: src/actions.cpp:328 src/canonmn.cpp:835 src/minoltamn.cpp:874 -#: src/minoltamn.cpp:1198 src/minoltamn.cpp:2098 src/panasonicmn.cpp:69 -#: src/pentaxmn.cpp:320 src/properties.cpp:563 src/sonymn.cpp:171 -#: src/tags.cpp:827 src/tags.cpp:1431 src/tags.cpp:1652 -msgid "Flash" -msgstr "Ð’Ñпышка" - -#: src/actions.cpp:331 src/canonmn.cpp:897 src/panasonicmn.cpp:249 -#, fuzzy -msgid "Flash bias" -msgstr "Ð’Ñпышка Ñработала" - -#: src/actions.cpp:336 src/canonmn.cpp:201 src/minoltamn.cpp:539 -#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1372 -msgid "Focal length" -msgstr "ФокуÑное раÑÑтоÑние" - -#: src/actions.cpp:341 -msgid "35 mm equivalent" -msgstr " (35мм Ñквивалент)" - -#: src/actions.cpp:351 -msgid "Subject distance" -msgstr "РаÑÑтоÑние до объекта" - -#: src/actions.cpp:362 -msgid "ISO speed" -msgstr "СветочувÑтвительноÑÑ‚ÑŒ" - -#: src/actions.cpp:365 src/minoltamn.cpp:491 src/minoltamn.cpp:742 -#: src/minoltamn.cpp:985 src/minoltamn.cpp:1353 src/olympusmn.cpp:659 -#: src/sigmamn.cpp:75 -msgid "Exposure mode" -msgstr "Режим ÑкÑпозиции" - -#: src/actions.cpp:368 src/minoltamn.cpp:509 src/minoltamn.cpp:1006 -#: src/minoltamn.cpp:1395 src/olympusmn.cpp:661 src/sigmamn.cpp:78 -msgid "Metering mode" -msgstr "Режим замера" - -#: src/actions.cpp:371 src/canonmn.cpp:776 src/minoltamn.cpp:521 -#: src/olympusmn.cpp:202 src/olympusmn.cpp:663 src/panasonicmn.cpp:243 -msgid "Macro mode" -msgstr "Режим макроÑъёмки" - -#: src/actions.cpp:374 src/minoltamn.cpp:133 src/minoltamn.cpp:503 -#: src/minoltamn.cpp:748 src/minoltamn.cpp:991 src/pentaxmn.cpp:889 -#: src/sonymn.cpp:275 -msgid "Image quality" -msgstr "КачеÑтво изображениÑ" - -#: src/actions.cpp:377 -msgid "Exif Resolution" -msgstr "Разрешение Exif" - -#: src/actions.cpp:406 src/canonmn.cpp:1140 src/minoltamn.cpp:178 -#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:994 -#: src/minoltamn.cpp:1377 src/nikonmn.cpp:226 src/nikonmn.cpp:472 -#: src/nikonmn.cpp:528 src/olympusmn.cpp:880 src/sigmamn.cpp:72 -#: src/sonymn.cpp:290 -msgid "White balance" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/actions.cpp:409 src/minoltamn.cpp:114 src/olympusmn.cpp:426 -msgid "Thumbnail" -msgstr "ЭÑкиз" - -#: src/actions.cpp:413 src/actions.cpp:418 src/canonmn.cpp:339 -#: src/canonmn.cpp:1048 src/canonmn.cpp:1057 src/canonmn.cpp:1109 -#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2076 -#: src/nikonmn.cpp:173 src/nikonmn.cpp:188 src/nikonmn.cpp:903 -#: src/nikonmn.cpp:926 src/nikonmn.cpp:988 src/olympusmn.cpp:142 -#: src/olympusmn.cpp:720 src/olympusmn.cpp:727 src/olympusmn.cpp:1181 -#: src/olympusmn.cpp:1240 src/olympusmn.cpp:1337 src/olympusmn.cpp:1493 -#: src/olympusmn.cpp:1502 src/pentaxmn.cpp:230 src/pentaxmn.cpp:349 -#: src/pentaxmn.cpp:350 src/properties.cpp:914 src/properties.cpp:922 -#: src/tags.cpp:1510 -msgid "None" -msgstr "Ðичего" - -#: src/actions.cpp:428 src/datasets.cpp:376 src/properties.cpp:357 -#: src/properties.cpp:523 src/tags.cpp:762 -msgid "Copyright" -msgstr "ÐвторÑкие права" - -#: src/actions.cpp:431 -msgid "Exif comment" -msgstr "Комментарий Exif" - -#: src/actions.cpp:526 -msgid "No IPTC data found in the file\n" -msgstr "Ð’ файле не найдено данных IPTC\n" - -#: src/actions.cpp:539 -msgid "No XMP data found in the file\n" -msgstr "Ð’ Ñтом файле не найдено данных XMP\n" - -#: src/actions.cpp:638 src/actions.cpp:663 src/actions.cpp:684 -msgid "(Binary value suppressed)" -msgstr "" - -#: src/actions.cpp:705 -msgid "JPEG comment" -msgstr "Комментарий JPEG" - -#: src/actions.cpp:730 -#, fuzzy -msgid "Preview" -msgstr "Данные ÑÑкиза" - -#: src/actions.cpp:734 src/actions.cpp:1074 src/properties.cpp:426 -msgid "pixels" -msgstr "" - -#: src/actions.cpp:736 src/actions.cpp:1076 -msgid "bytes" -msgstr "байт" - -#: src/actions.cpp:783 -msgid "Neither tag" -msgstr "Ðи поле" - -#: src/actions.cpp:784 -msgid "nor" -msgstr "ни" - -#: src/actions.cpp:785 -msgid "found in the file" -msgstr "найдены в Ñтом файле" - -#: src/actions.cpp:790 -msgid "Image file creation timestamp not set in the file" -msgstr "Отметка времени ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñнимка в файле отÑутÑтвует" - -#: src/actions.cpp:796 src/actions.cpp:1553 -msgid "Failed to parse timestamp" -msgstr "Ðе удалоÑÑŒ произвеÑти ÑинтакÑичеÑкий разбор отметки времени" - -#: src/actions.cpp:797 -msgid "in the file" -msgstr "в файле" - -#: src/actions.cpp:808 -msgid "Updating timestamp to" -msgstr "Отметка времени обновлÑетÑÑ Ð´Ð¾" - -#: src/actions.cpp:902 -#, fuzzy -msgid "Erasing thumbnail data" -msgstr "Байт данных ÑÑкиза" - -#: src/actions.cpp:910 -msgid "Erasing Exif data from the file" -msgstr "Данные Exif удалÑÑŽÑ‚ÑÑ Ð¸Ð· файла" - -#: src/actions.cpp:919 -msgid "Erasing IPTC data from the file" -msgstr "Данные IPTC удалÑÑŽÑ‚ÑÑ Ð¸Ð· файла" - -#: src/actions.cpp:928 -msgid "Erasing JPEG comment from the file" -msgstr "Комментарий JPEG удалÑетÑÑ Ð¸Ð· файла" - -#: src/actions.cpp:937 -msgid "Erasing XMP data from the file" -msgstr "Данные XMP удалÑÑŽÑ‚ÑÑ Ð¸Ð· файла" - -#: src/actions.cpp:1009 -msgid "Image does not contain an Exif thumbnail\n" -msgstr "Ð’ Ñнимке нет Exif-ÑÑкиза\n" - -#: src/actions.cpp:1018 -#, fuzzy -msgid "Writing thumbnail" -msgstr "ÑÑкиз" - -#: src/actions.cpp:1019 src/actions.cpp:1077 -msgid "to file" -msgstr "в файл" - -#: src/actions.cpp:1025 -msgid "Exif data doesn't contain a thumbnail\n" -msgstr "Ð’ данных Exif нет ÑÑкиза\n" - -#: src/actions.cpp:1055 src/actions.cpp:1081 -msgid "Image does not have preview" -msgstr "" - -#: src/actions.cpp:1070 -#, fuzzy -msgid "Writing preview" -msgstr "ВыполнÑетÑÑ Ð·Ð°Ð¿Ð¸ÑÑŒ" - -#: src/actions.cpp:1241 -msgid "Setting JPEG comment" -msgstr "Ð’ÑтавлÑетÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸Ð¹ JPEG" - -#: src/actions.cpp:1282 -msgid "Add" -msgstr "Добавить" - -#: src/actions.cpp:1304 src/actions.cpp:1378 -msgid "Warning" -msgstr "Предупреждение" - -#: src/actions.cpp:1305 src/actions.cpp:1379 -msgid "Failed to read" -msgstr "Ðе удалоÑÑŒ прочитать" - -#: src/actions.cpp:1307 src/actions.cpp:1381 -msgid "value" -msgstr "значение" - -#: src/actions.cpp:1318 -msgid "Set" -msgstr "УÑтановить" - -#: src/actions.cpp:1390 -msgid "Del" -msgstr "Удалить" - -#: src/actions.cpp:1422 -msgid "Reg " -msgstr "" - -#: src/actions.cpp:1506 -msgid "Timestamp of metadatum with key" -msgstr "" - -#: src/actions.cpp:1507 -msgid "not set\n" -msgstr "не уÑтановлено\n" - -#: src/actions.cpp:1512 -msgid "Adjusting" -msgstr "КоррекциÑ" - -#: src/actions.cpp:1512 -msgid "by" -msgstr "" - -#: src/actions.cpp:1516 src/actions.cpp:1565 -msgid "years" -msgstr "лет" - -#: src/actions.cpp:1519 -msgid "year" -msgstr "" - -#: src/actions.cpp:1527 -msgid "months" -msgstr "меÑÑцев" - -#: src/actions.cpp:1530 -msgid "month" -msgstr "меÑÑц" - -#: src/actions.cpp:1538 -msgid "days" -msgstr "" - -#: src/actions.cpp:1541 -msgid "day" -msgstr "" - -#: src/actions.cpp:1547 -msgid "s" -msgstr "Ñ" - -#: src/actions.cpp:1563 -#, fuzzy -msgid "Can't adjust timestamp by" -msgstr "Ðе удалоÑÑŒ произвеÑти ÑинтакÑичеÑкий разбор отметки времени" - -#: src/actions.cpp:1572 src/actions.cpp:1844 src/actions.cpp:1852 -#: src/actions.cpp:1860 src/actions.cpp:1869 src/actions.cpp:1979 -msgid "to" -msgstr "в" - -#: src/actions.cpp:1607 -msgid "Standard Exif ISO tag exists; not modified\n" -msgstr "" - -#: src/actions.cpp:1615 -msgid "Setting Exif ISO value to" -msgstr "" - -#: src/actions.cpp:1671 -#, fuzzy -msgid "No Exif user comment found" -msgstr "Комментарий Exif" - -#: src/actions.cpp:1679 -msgid "Found Exif user comment with unexpected value type" -msgstr "" - -#: src/actions.cpp:1686 -msgid "No Exif UNICODE user comment found" -msgstr "" - -#: src/actions.cpp:1692 -#, fuzzy -msgid "Setting Exif UNICODE user comment to" -msgstr "Ð’ÑтавлÑетÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸Ð¹ JPEG" - -#: src/actions.cpp:1843 -msgid "Writing Exif data from" -msgstr "ЗапиÑÑŒ данных Exif из" - -#: src/actions.cpp:1851 -msgid "Writing IPTC data from" -msgstr "ЗапиÑÑŒ данных IPTC из" - -#: src/actions.cpp:1859 -msgid "Writing XMP data from" -msgstr "ЗапиÑÑŒ данных XMP из" - -#: src/actions.cpp:1868 -msgid "Writing JPEG comment from" -msgstr "ЗапиÑÑŒ ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸Ñ JPEG из" - -#: src/actions.cpp:1878 -msgid "Could not write metadata to file" -msgstr "Ðе удалоÑÑŒ запиÑать метаданные в файл" - -#: src/actions.cpp:1905 -msgid "Filename format yields empty filename for the file" -msgstr "" - -#: src/actions.cpp:1914 -msgid "This file already has the correct name" -msgstr "У Ñтого файла уже правильное имÑ" - -#: src/actions.cpp:1938 src/exiv2.cpp:168 -msgid "File" -msgstr "Файл" - -#: src/actions.cpp:1939 -msgid "exists. [O]verwrite, [r]ename or [s]kip?" -msgstr "ÑущеÑтвует. ПерезапиÑать [O], переименовать [r] или пропуÑтить [s]?" - -#: src/actions.cpp:1967 -msgid "Renaming file to" -msgstr "Файл переименовываетÑÑ Ð²" - -#: src/actions.cpp:1969 -msgid "updating timestamp" -msgstr "обновлÑетÑÑ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ° времени" - -#: src/actions.cpp:1978 -msgid "Failed to rename" -msgstr "Ðе удалоÑÑŒ переименовать" - -#: src/actions.cpp:2000 -msgid "Overwrite" -msgstr "ПерезапиÑать" - -#: src/canonmn.cpp:58 src/canonmn.cpp:186 src/canonmn.cpp:245 -#: src/canonmn.cpp:260 src/canonmn.cpp:734 src/canonmn.cpp:747 -#: src/canonmn.cpp:1009 src/canonmn.cpp:1032 src/canonmn.cpp:1041 -#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 -#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 -#: src/minoltamn.cpp:1134 src/minoltamn.cpp:1275 src/minoltamn.cpp:1337 -#: src/minoltamn.cpp:1910 src/minoltamn.cpp:1924 src/minoltamn.cpp:1972 -#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 -#: src/nikonmn.cpp:204 src/nikonmn.cpp:641 src/nikonmn.cpp:666 -#: src/nikonmn.cpp:715 src/nikonmn.cpp:750 src/nikonmn.cpp:836 -#: src/nikonmn.cpp:881 src/nikonmn.cpp:968 src/nikonmn.cpp:1210 -#: src/nikonmn.cpp:1219 src/olympusmn.cpp:59 src/olympusmn.cpp:79 -#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 -#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:586 -#: src/olympusmn.cpp:648 src/olympusmn.cpp:912 src/olympusmn.cpp:1133 -#: src/olympusmn.cpp:1431 src/olympusmn.cpp:1432 src/olympusmn.cpp:1471 -#: src/panasonicmn.cpp:87 src/panasonicmn.cpp:94 src/panasonicmn.cpp:100 -#: src/panasonicmn.cpp:145 src/panasonicmn.cpp:154 src/panasonicmn.cpp:183 -#: src/panasonicmn.cpp:210 src/pentaxmn.cpp:183 src/pentaxmn.cpp:292 -#: src/pentaxmn.cpp:713 src/pentaxmn.cpp:719 src/sonymn.cpp:56 -#: src/sonymn.cpp:87 src/sonymn.cpp:141 src/sonymn.cpp:149 src/sonymn.cpp:156 -#: src/sonymn.cpp:199 src/sonymn.cpp:206 src/sonymn.cpp:237 src/sonymn.cpp:500 -msgid "Off" -msgstr "Выкл" - -#: src/canonmn.cpp:59 src/canonmn.cpp:244 src/canonmn.cpp:262 -#: src/canonmn.cpp:735 src/canonmn.cpp:1035 src/fujimn.cpp:57 -#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 -#: src/minoltamn.cpp:1911 src/minoltamn.cpp:1923 src/nikonmn.cpp:63 -#: src/nikonmn.cpp:640 src/nikonmn.cpp:716 src/nikonmn.cpp:717 -#: src/nikonmn.cpp:1220 src/olympusmn.cpp:60 src/olympusmn.cpp:80 -#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 -#: src/olympusmn.cpp:1472 src/panasonicmn.cpp:93 src/pentaxmn.cpp:186 -#: src/pentaxmn.cpp:293 src/pentaxmn.cpp:714 src/sonymn.cpp:157 -#: src/sonymn.cpp:207 src/sonymn.cpp:238 -msgid "On" -msgstr "Вкл" - -#: src/canonmn.cpp:69 -msgid "PowerShot A30" -msgstr "PowerShot A30" - -#: src/canonmn.cpp:70 -msgid "PowerShot S300 / Digital IXUS 300 / IXY Digital 300" -msgstr "PowerShot S300 / Digital IXUS 300 / IXY Digital 300" - -#: src/canonmn.cpp:71 -msgid "PowerShot A20" -msgstr "PowerShot A20" - -#: src/canonmn.cpp:72 -msgid "PowerShot A10" -msgstr "PowerShot A10" - -#: src/canonmn.cpp:73 -msgid "PowerShot S110 / Digital IXUS v / IXY Digital 200" -msgstr "PowerShot S110 / Digital IXUS v / IXY Digital 200" - -#: src/canonmn.cpp:74 -msgid "PowerShot G2" -msgstr "PowerShot G2" - -#: src/canonmn.cpp:75 -msgid "PowerShot S40" -msgstr "PowerShot S40" - -#: src/canonmn.cpp:76 -msgid "PowerShot S30" -msgstr "PowerShot S30" - -#: src/canonmn.cpp:77 -msgid "PowerShot A40" -msgstr "PowerShot A40" - -#: src/canonmn.cpp:78 -msgid "EOS D30" -msgstr "EOS D30" - -#: src/canonmn.cpp:79 -msgid "PowerShot A100" -msgstr "PowerShot A100" - -#: src/canonmn.cpp:80 -msgid "PowerShot S200 / Digital IXUS v2 / IXY Digital 200a" -msgstr "PowerShot S200 / Digital IXUS v2 / IXY Digital 200a" - -#: src/canonmn.cpp:81 -msgid "PowerShot A200" -msgstr "PowerShot A200" - -#: src/canonmn.cpp:82 -msgid "PowerShot S330 / Digital IXUS 330 / IXY Digital 300a" -msgstr "PowerShot S330 / Digital IXUS 330 / IXY Digital 300a" - -#: src/canonmn.cpp:83 -msgid "PowerShot G3" -msgstr "PowerShot G3" - -#: src/canonmn.cpp:84 -msgid "PowerShot S45" -msgstr "PowerShot S45" - -#: src/canonmn.cpp:85 -msgid "PowerShot SD100 / Digital IXUS II / IXY Digital 30" -msgstr "PowerShot SD100 / Digital IXUS II / IXY Digital 30" - -#: src/canonmn.cpp:86 -msgid "PowerShot S230 / Digital IXUS v3 / IXY Digital 320" -msgstr "PowerShot S230 / Digital IXUS v3 / IXY Digital 320" - -#: src/canonmn.cpp:87 -msgid "PowerShot A70" -msgstr "PowerShot A70" - -#: src/canonmn.cpp:88 -msgid "PowerShot A60" -msgstr "PowerShot A60" - -#: src/canonmn.cpp:89 -msgid "PowerShot S400 / Digital IXUS 400 / IXY Digital 400" -msgstr "PowerShot S400 / Digital IXUS 400 / IXY Digital 400" - -#: src/canonmn.cpp:90 -msgid "PowerShot G5" -msgstr "PowerShot G5" - -#: src/canonmn.cpp:91 -msgid "PowerShot A300" -msgstr "PowerShot A300" - -#: src/canonmn.cpp:92 -msgid "PowerShot S50" -msgstr "PowerShot S50" - -#: src/canonmn.cpp:93 -msgid "PowerShot A80" -msgstr "PowerShot A80" - -#: src/canonmn.cpp:94 -msgid "PowerShot SD10 / Digital IXUS i / IXY Digital L" -msgstr "PowerShot SD10 / Digital IXUS i / IXY Digital L" - -#: src/canonmn.cpp:95 -msgid "PowerShot S1 IS" -msgstr "PowerShot S1 IS" - -#: src/canonmn.cpp:96 -msgid "PowerShot Pro1" -msgstr "PowerShot Pro1" - -#: src/canonmn.cpp:97 -msgid "PowerShot S70" -msgstr "PowerShot S70" - -#: src/canonmn.cpp:98 -msgid "PowerShot S60" -msgstr "PowerShot S60" - -#: src/canonmn.cpp:99 -msgid "PowerShot G6" -msgstr "PowerShot G6" - -#: src/canonmn.cpp:100 -msgid "PowerShot S500 / Digital IXUS 500 / IXY Digital 500" -msgstr "PowerShot S500 / Digital IXUS 500 / IXY Digital 500" - -#: src/canonmn.cpp:101 -msgid "PowerShot A75" -msgstr "PowerShot A75" - -#: src/canonmn.cpp:102 -msgid "PowerShot SD110 / Digital IXUS IIs / IXY Digital 30a" -msgstr "PowerShot SD110 / Digital IXUS IIs / IXY Digital 30a" - -#: src/canonmn.cpp:103 -msgid "PowerShot A400" -msgstr "PowerShot A400" - -#: src/canonmn.cpp:104 -msgid "PowerShot A310" -msgstr "PowerShot A310" - -#: src/canonmn.cpp:105 -msgid "PowerShot A85" -msgstr "PowerShot A85" - -#: src/canonmn.cpp:106 -msgid "PowerShot S410 / Digital IXUS 430 / IXY Digital 450" -msgstr "PowerShot S410 / Digital IXUS 430 / IXY Digital 450" - -#: src/canonmn.cpp:107 -msgid "PowerShot A95" -msgstr "PowerShot A95" - -#: src/canonmn.cpp:108 -msgid "PowerShot SD300 / Digital IXUS 40 / IXY Digital 50" -msgstr "PowerShot SD300 / Digital IXUS 40 / IXY Digital 50" - -#: src/canonmn.cpp:109 -msgid "PowerShot SD200 / Digital IXUS 30 / IXY Digital 40" -msgstr "PowerShot SD200 / Digital IXUS 30 / IXY Digital 40" - -#: src/canonmn.cpp:110 -msgid "PowerShot A520" -msgstr "PowerShot A520" - -#: src/canonmn.cpp:111 -msgid "PowerShot A510" -msgstr "PowerShot A510" - -#: src/canonmn.cpp:112 -msgid "PowerShot SD20 / Digital IXUS i5 / IXY Digital L2" -msgstr "PowerShot SD20 / Digital IXUS i5 / IXY Digital L2" - -#: src/canonmn.cpp:113 -msgid "PowerShot S2 IS" -msgstr "PowerShot S2 IS" - -#: src/canonmn.cpp:114 -msgid "PowerShot SD430 / IXUS Wireless / IXY Wireless" -msgstr "PowerShot SD430 / IXUS Wireless / IXY Wireless" - -#: src/canonmn.cpp:115 -msgid "PowerShot SD500 / Digital IXUS 700 / IXY Digital 600" -msgstr "PowerShot SD500 / Digital IXUS 700 / IXY Digital 600" - -#: src/canonmn.cpp:116 -msgid "EOS D60" -msgstr "EOS D60" - -#: src/canonmn.cpp:117 -msgid "PowerShot SD30 / Digital IXUS i zoom / IXY Digital L3" -msgstr "PowerShot SD30 / Digital IXUS i zoom / IXY Digital L3" - -#: src/canonmn.cpp:118 -msgid "PowerShot A430" -msgstr "PowerShot A430" - -#: src/canonmn.cpp:119 -msgid "PowerShot A410" -msgstr "PowerShot A410" - -#: src/canonmn.cpp:120 -msgid "PowerShot S80" -msgstr "PowerShot S80" - -#: src/canonmn.cpp:121 -msgid "PowerShot A620" -msgstr "PowerShot A620" - -#: src/canonmn.cpp:122 -msgid "PowerShot A610" -msgstr "PowerShot A610" - -#: src/canonmn.cpp:123 -msgid "PowerShot SD630 / Digital IXUS 65 / IXY Digital 80" -msgstr "PowerShot SD630 / Digital IXUS 65 / IXY Digital 80" - -#: src/canonmn.cpp:124 -msgid "PowerShot SD450 / Digital IXUS 55 / IXY Digital 60" -msgstr "PowerShot SD450 / Digital IXUS 55 / IXY Digital 60" - -#: src/canonmn.cpp:125 -msgid "PowerShot TX1" -msgstr "PowerShot TX1" - -#: src/canonmn.cpp:126 -msgid "PowerShot SD400 / Digital IXUS 50 / IXY Digital 55" -msgstr "PowerShot SD400 / Digital IXUS 50 / IXY Digital 55" - -#: src/canonmn.cpp:127 -msgid "PowerShot A420" -msgstr "PowerShot A420" - -#: src/canonmn.cpp:128 -msgid "PowerShot SD900 / Digital IXUS 900 Ti / IXY Digital 1000" -msgstr "PowerShot SD900 / Digital IXUS 900 Ti / IXY Digital 1000" - -#: src/canonmn.cpp:129 -msgid "PowerShot SD550 / Digital IXUS 750 / IXY Digital 700" -msgstr "PowerShot SD550 / Digital IXUS 750 / IXY Digital 700" - -#: src/canonmn.cpp:130 -msgid "PowerShot A700" -msgstr "PowerShot A700" - -#: src/canonmn.cpp:131 -msgid "PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS" -msgstr "PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS" - -#: src/canonmn.cpp:132 -msgid "PowerShot S3 IS" -msgstr "PowerShot S3 IS" - -#: src/canonmn.cpp:133 -msgid "PowerShot A540" -msgstr "PowerShot A540" - -#: src/canonmn.cpp:134 -msgid "PowerShot SD600 / Digital IXUS 60 / IXY Digital 70" -msgstr "PowerShot SD600 / Digital IXUS 60 / IXY Digital 70" - -#: src/canonmn.cpp:135 -msgid "PowerShot G7" -msgstr "PowerShot G7" - -#: src/canonmn.cpp:136 -msgid "PowerShot A530" -msgstr "PowerShot A530" - -#: src/canonmn.cpp:137 -msgid "PowerShot SD800 IS / Digital IXUS 850 IS / IXY Digital 900 IS" -msgstr "PowerShot SD800 IS / Digital IXUS 850 IS / IXY Digital 900 IS" - -#: src/canonmn.cpp:138 -msgid "PowerShot SD40 / Digital IXUS i7 / IXY Digital L4" -msgstr "PowerShot SD40 / Digital IXUS i7 / IXY Digital L4" - -#: src/canonmn.cpp:139 -msgid "PowerShot A710 IS" -msgstr "PowerShot A710 IS" - -#: src/canonmn.cpp:140 -msgid "PowerShot A640" -msgstr "PowerShot A640" - -#: src/canonmn.cpp:141 -msgid "PowerShot A630" -msgstr "PowerShot A630" - -#: src/canonmn.cpp:142 -msgid "PowerShot S5 IS" -msgstr "PowerShot S5 IS" - -#: src/canonmn.cpp:143 -msgid "PowerShot A460" -msgstr "PowerShot A460" - -#: src/canonmn.cpp:144 -msgid "PowerShot SD850 IS / Digital IXUS 950 IS" -msgstr "PowerShot SD850 IS / Digital IXUS 950 IS" - -#: src/canonmn.cpp:145 -msgid "PowerShot A570 IS" -msgstr "PowerShot A570 IS" - -#: src/canonmn.cpp:146 -msgid "PowerShot A560" -msgstr "PowerShot A560" - -#: src/canonmn.cpp:147 -msgid "PowerShot SD750 / Digital IXUS 75 / IXY Digital 90" -msgstr "PowerShot SD750 / Digital IXUS 75 / IXY Digital 90" - -#: src/canonmn.cpp:148 -msgid "PowerShot SD1000 / Digital IXUS 70 / IXY Digital 10" -msgstr "PowerShot SD1000 / Digital IXUS 70 / IXY Digital 10" - -#: src/canonmn.cpp:149 -msgid "PowerShot A550" -msgstr "PowerShot A550" - -#: src/canonmn.cpp:150 -msgid "PowerShot A450" -msgstr "PowerShot A450" - -#: src/canonmn.cpp:151 -msgid "PowerShot Pro90 IS" -msgstr "PowerShot Pro90 IS" - -#: src/canonmn.cpp:152 -msgid "PowerShot G1" -msgstr "PowerShot G1" - -#: src/canonmn.cpp:153 -msgid "PowerShot S100 / Digital IXUS / IXY Digital" -msgstr "PowerShot S100 / Digital IXUS / IXY Digital" - -#: src/canonmn.cpp:154 -msgid "HV10" -msgstr "HV10" - -#: src/canonmn.cpp:155 -msgid "iVIS DC50" -msgstr "iVIS DC50" - -#: src/canonmn.cpp:156 -msgid "iVIS HV20" -msgstr "iVIS HV20" - -#: src/canonmn.cpp:157 -msgid "EOS-1D" -msgstr "EOS-1D" - -#: src/canonmn.cpp:158 -msgid "EOS-1DS" -msgstr "EOS-1DS" - -#: src/canonmn.cpp:159 -msgid "EOS 10D" -msgstr "EOS 10D" - -#: src/canonmn.cpp:160 -msgid "EOS-1D Mark III" -msgstr "EOS-1D Mark III" - -#: src/canonmn.cpp:161 -msgid "EOS Digital Rebel / 300D / Kiss Digital" -msgstr "EOS Digital Rebel / 300D / Kiss Digital" - -#: src/canonmn.cpp:162 -msgid "EOS-1D Mark II" -msgstr "EOS-1D Mark II" - -#: src/canonmn.cpp:163 -msgid "EOS 20D" -msgstr "EOS 20D" - -#: src/canonmn.cpp:164 -msgid "EOS-1Ds Mark II" -msgstr "EOS-1Ds Mark II" - -#: src/canonmn.cpp:165 -msgid "EOS Digital Rebel XT / 350D / Kiss Digital N" -msgstr "EOS Digital Rebel XT / 350D / Kiss Digital N" - -#: src/canonmn.cpp:166 -msgid "EOS 5D" -msgstr "EOS 5D" - -#: src/canonmn.cpp:167 -msgid "EOS-1D Mark II N" -msgstr "EOS-1D Mark II N" - -#: src/canonmn.cpp:168 -msgid "EOS 30D" -msgstr "EOS 30D" - -#: src/canonmn.cpp:169 -msgid "EOS Digital Rebel XTi / 400D / Kiss Digital X" -msgstr "EOS Digital Rebel XTi / 400D / Kiss Digital X" - -#: src/canonmn.cpp:170 -#, fuzzy -msgid "EOS 7D" -msgstr "EOS 5D" - -#: src/canonmn.cpp:171 -#, fuzzy -msgid "EOS Rebel T1i / 500D / Kiss X3" -msgstr "EOS Digital Rebel XTi / 400D / Kiss Digital X" - -#: src/canonmn.cpp:172 -#, fuzzy -msgid "EOS Rebel XS / 1000D / Kiss F" -msgstr "EOS Digital Rebel / 300D / Kiss Digital" - -#: src/canonmn.cpp:173 -#, fuzzy -msgid "EOS 50D" -msgstr "EOS 5D" - -#: src/canonmn.cpp:174 -#, fuzzy -msgid "EOS Rebel T2i / 550D / Kiss X4" -msgstr "EOS Digital Rebel XTi / 400D / Kiss Digital X" - -#: src/canonmn.cpp:175 -#, fuzzy -msgid "EOS-1D Mark IV" -msgstr "EOS-1D Mark II" - -#: src/canonmn.cpp:180 -#, fuzzy -msgid "Format 1" -msgstr "Формат" - -#: src/canonmn.cpp:181 -#, fuzzy -msgid "Format 2" -msgstr "Формат" - -#: src/canonmn.cpp:187 src/nikonmn.cpp:1211 -#, fuzzy -msgid "On (1)" -msgstr "Вкл" - -#: src/canonmn.cpp:188 src/nikonmn.cpp:1212 -#, fuzzy -msgid "On (2)" -msgstr "Вкл" - -#: src/canonmn.cpp:193 src/minoltamn.cpp:1142 src/nikonmn.cpp:136 -#: src/olympusmn.cpp:595 src/olympusmn.cpp:774 src/olympusmn.cpp:839 -#: src/pentaxmn.cpp:548 src/tags.cpp:1452 -msgid "sRGB" -msgstr "sRGB" - -#: src/canonmn.cpp:194 src/canonmn.cpp:1113 src/minoltamn.cpp:359 -#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 -#: src/minoltamn.cpp:1143 src/nikonmn.cpp:137 src/olympusmn.cpp:596 -#: src/olympusmn.cpp:775 src/olympusmn.cpp:840 src/pentaxmn.cpp:549 -#: src/sonymn.cpp:482 src/sonymn.cpp:507 src/tags.cpp:1453 -msgid "Adobe RGB" -msgstr "Adobe RGB" - -#: src/canonmn.cpp:199 src/canonmn.cpp:202 src/canonmn.cpp:227 -#: src/canonmn.cpp:228 src/canonmn.cpp:229 src/canonmn.cpp:781 -#: src/canonmn.cpp:783 src/canonmn.cpp:784 src/canonmn.cpp:796 -#: src/canonmn.cpp:805 src/canonmn.cpp:806 src/canonmn.cpp:813 -#: src/canonmn.cpp:883 src/canonmn.cpp:888 src/canonmn.cpp:890 -#: src/canonmn.cpp:892 src/canonmn.cpp:893 src/canonmn.cpp:894 -#: src/canonmn.cpp:895 src/canonmn.cpp:898 src/canonmn.cpp:899 -#: src/canonmn.cpp:900 src/canonmn.cpp:902 src/canonmn.cpp:906 -#: src/canonmn.cpp:907 src/canonmn.cpp:908 src/fujimn.cpp:214 -#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:238 -#: src/nikonmn.cpp:303 src/nikonmn.cpp:457 src/nikonmn.cpp:478 -#: src/nikonmn.cpp:487 src/nikonmn.cpp:533 src/nikonmn.cpp:585 -#: src/nikonmn.cpp:588 src/nikonmn.cpp:591 src/nikonmn.cpp:1003 -#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1495 src/nikonmn.cpp:2554 -#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 -#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 -#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 -#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 -#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 -#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 -#: src/olympusmn.cpp:1039 src/panasonicmn.cpp:239 src/panasonicmn.cpp:247 -#: src/panasonicmn.cpp:252 src/panasonicmn.cpp:260 src/panasonicmn.cpp:262 -#: src/panasonicmn.cpp:280 src/pentaxmn.cpp:323 src/properties.cpp:809 -#: src/properties.cpp:816 src/sonymn.cpp:293 src/sonymn.cpp:312 -#: src/sonymn.cpp:318 src/sonymn.cpp:321 src/sonymn.cpp:330 src/sonymn.cpp:333 -#: src/sonymn.cpp:336 src/sonymn.cpp:339 src/tags.cpp:1414 src/tags.cpp:1427 -#: src/tags.cpp:1533 src/tags.cpp:2565 src/tags.cpp:2678 -msgid "Unknown" -msgstr "ÐеизвеÑтно" - -#: src/canonmn.cpp:200 src/olympusmn.cpp:450 src/sonymn.cpp:286 -#: src/sonymn.cpp:287 -msgid "Camera Settings" -msgstr "ÐаÑтройки камеры" - -#: src/canonmn.cpp:200 -msgid "Various camera settings" -msgstr "Различные наÑтройки камеры" - -#: src/canonmn.cpp:201 src/minoltamn.cpp:538 src/nikonmn.cpp:1347 -#: src/nikonmn.cpp:1372 src/properties.cpp:564 src/tags.cpp:828 -#: src/tags.cpp:1655 -msgid "Focal Length" -msgstr "ФокуÑное раÑÑтоÑние" - -#: src/canonmn.cpp:203 src/sonymn.cpp:345 -msgid "Shot Info" -msgstr "О Ñнимке" - -#: src/canonmn.cpp:203 -#, fuzzy -msgid "Shot information" -msgstr "СпоÑоб фокуÑировки" - -#: src/canonmn.cpp:204 src/olympusmn.cpp:101 src/olympusmn.cpp:1152 -#: src/sonymn.cpp:124 src/sonymn.cpp:308 src/sonymn.cpp:309 -msgid "Panorama" -msgstr "Панорама" - -#: src/canonmn.cpp:205 src/datasets.cpp:396 src/properties.cpp:761 -msgid "Image Type" -msgstr "Тип изображениÑ" - -#: src/canonmn.cpp:205 -msgid "Image type" -msgstr "Тип изображениÑ" - -#: src/canonmn.cpp:206 src/panasonicmn.cpp:237 -msgid "Firmware Version" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/canonmn.cpp:206 src/panasonicmn.cpp:237 -msgid "Firmware version" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/canonmn.cpp:207 src/canonmn.cpp:1066 src/nikonmn.cpp:869 -#, fuzzy -msgid "File Number" -msgstr "ЧиÑло F" - -#: src/canonmn.cpp:207 src/nikonmn.cpp:869 -#, fuzzy -msgid "File number" -msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" - -#: src/canonmn.cpp:208 -msgid "Owner Name" -msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" - -#: src/canonmn.cpp:209 src/fujimn.cpp:182 src/nikonmn.cpp:550 -#: src/olympusmn.cpp:741 src/pentaxmn.cpp:1120 src/pentaxmn.cpp:1121 -#: src/sigmamn.cpp:56 -msgid "Serial Number" -msgstr "Серийный номер" - -#: src/canonmn.cpp:209 src/sigmamn.cpp:57 -msgid "Camera serial number" -msgstr "Серийный номер камеры" - -#: src/canonmn.cpp:210 -#, fuzzy -msgid "Camera Info" -msgstr "ID камеры" - -#: src/canonmn.cpp:210 -#, fuzzy -msgid "Camera info" -msgstr "ID камеры" - -#: src/canonmn.cpp:211 src/canonmn.cpp:223 -#, fuzzy -msgid "Custom Functions" -msgstr "ИнÑтрукции" - -#: src/canonmn.cpp:212 -#, fuzzy -msgid "ModelID" -msgstr "Модель" - -#: src/canonmn.cpp:212 -msgid "Model ID" -msgstr "ID модели" - -#: src/canonmn.cpp:213 src/olympusmn.cpp:219 -#, fuzzy -msgid "Picture Info" -msgstr "Режим захвата" - -#: src/canonmn.cpp:213 -#, fuzzy -msgid "Picture info" -msgstr "Режим захвата" - -#: src/canonmn.cpp:214 -#, fuzzy -msgid "Thumbnail Image Valid Area" -msgstr "ЭÑкиз" - -#: src/canonmn.cpp:214 -#, fuzzy -msgid "Thumbnail image valid area" -msgstr "ЭÑкиз" - -#: src/canonmn.cpp:215 -#, fuzzy -msgid "Serial Number Format" -msgstr "Серийный номер" - -#: src/canonmn.cpp:215 -#, fuzzy -msgid "Serial number format" -msgstr "Серийный номер" - -#: src/canonmn.cpp:216 src/minoltamn.cpp:2042 src/olympusmn.cpp:110 -#: src/olympusmn.cpp:503 src/pentaxmn.cpp:202 -#, fuzzy -msgid "Super Macro" -msgstr "Супермакро" - -#: src/canonmn.cpp:216 src/canonmn.cpp:323 src/canonmn.cpp:393 -#: src/olympusmn.cpp:81 -msgid "Super macro" -msgstr "Супермакро" - -#: src/canonmn.cpp:217 src/nikonmn.cpp:567 -#, fuzzy -msgid "AF Info" -msgstr "СпоÑоб фокуÑировки" - -#: src/canonmn.cpp:217 src/nikonmn.cpp:567 -#, fuzzy -msgid "AF info" -msgstr "СпоÑоб фокуÑировки" - -#: src/canonmn.cpp:218 -msgid "Original Decision Data Offset" -msgstr "" - -#: src/canonmn.cpp:218 -msgid "Original decision data offset" -msgstr "" - -#: src/canonmn.cpp:219 -msgid "White Balance Table" -msgstr "Таблица баланÑа белого" - -#: src/canonmn.cpp:219 -msgid "White balance table" -msgstr "Таблица баланÑа белого" - -#: src/canonmn.cpp:220 -#, fuzzy -msgid "LensModel" -msgstr "Тип Ñцены" - -#: src/canonmn.cpp:221 src/olympusmn.cpp:742 src/panasonicmn.cpp:250 -#, fuzzy -msgid "Internal Serial Number" -msgstr "Серийный номер камеры" - -#: src/canonmn.cpp:221 src/olympusmn.cpp:742 -#, fuzzy -msgid "Internal serial number" -msgstr "Серийный номер камеры" - -#: src/canonmn.cpp:222 -msgid "Dust Removal Data" -msgstr "" - -#: src/canonmn.cpp:222 -msgid "Dust removal data" -msgstr "" - -#: src/canonmn.cpp:223 -#, fuzzy -msgid "Custom functions" -msgstr "ИнÑтрукции" - -#: src/canonmn.cpp:224 -#, fuzzy -msgid "Processing Info" -msgstr "По обработки" - -#: src/canonmn.cpp:224 -#, fuzzy -msgid "Processing info" -msgstr "По обработки" - -#: src/canonmn.cpp:225 -#, fuzzy -msgid "Measured Color" -msgstr "ЕÑтеÑтвенный цвет" - -#: src/canonmn.cpp:225 -#, fuzzy -msgid "Measured color" -msgstr "ЕÑтеÑтвенный цвет" - -#: src/canonmn.cpp:226 -#, fuzzy -msgid "ColorSpace" -msgstr "Цветовое проÑтранÑтво" - -#: src/canonmn.cpp:230 -#, fuzzy -msgid "VRD Offset" -msgstr "быÑтрый" - -#: src/canonmn.cpp:230 -#, fuzzy -msgid "VRD offset" -msgstr "быÑтрый" - -#: src/canonmn.cpp:231 -#, fuzzy -msgid "Sensor Info" -msgstr "Объектив" - -#: src/canonmn.cpp:231 -#, fuzzy -msgid "Sensor info" -msgstr "О Ñнимке" - -#: src/canonmn.cpp:232 -#, fuzzy -msgid "Color Data" -msgstr "Цветовое проÑтранÑтво" - -#: src/canonmn.cpp:232 -#, fuzzy -msgid "Color data" -msgstr "Цвет" - -#: src/canonmn.cpp:234 -msgid "Unknown CanonMakerNote tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг CanonMakerNote" - -#: src/canonmn.cpp:250 src/minoltamn.cpp:78 src/minoltamn.cpp:246 -#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2060 -msgid "Economy" -msgstr "Экономичный" - -#: src/canonmn.cpp:251 src/canonmn.cpp:349 src/fujimn.cpp:64 src/fujimn.cpp:84 -#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 -#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 -#: src/nikonmn.cpp:207 src/nikonmn.cpp:428 src/olympusmn.cpp:150 -#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1108 -#: src/olympusmn.cpp:1150 src/panasonicmn.cpp:56 src/panasonicmn.cpp:101 -#: src/panasonicmn.cpp:161 src/panasonicmn.cpp:197 src/pentaxmn.cpp:198 -#: src/pentaxmn.cpp:343 src/pentaxmn.cpp:356 src/pentaxmn.cpp:367 -#: src/sonymn.cpp:134 src/sonymn.cpp:216 src/sonymn.cpp:222 src/tags.cpp:1519 -#: src/tags.cpp:1526 -msgid "Normal" -msgstr "" - -#: src/canonmn.cpp:252 src/minoltamn.cpp:76 src/minoltamn.cpp:244 -#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2004 -#: src/minoltamn.cpp:2058 src/sonymn.cpp:135 -#, fuzzy -msgid "Fine" -msgstr "in" - -#: src/canonmn.cpp:253 src/olympusmn.cpp:643 src/pentaxmn.cpp:156 -msgid "RAW" -msgstr "RAW" - -#: src/canonmn.cpp:254 -#, fuzzy -msgid "Superfine" -msgstr "SXGA Fine" - -#: src/canonmn.cpp:255 -#, fuzzy -msgid "Normal Movie" -msgstr "Обычный процеÑÑ Ð¿Ñ€Ð¾Ñвки" - -#: src/canonmn.cpp:261 src/canonmn.cpp:357 src/canonmn.cpp:385 -#: src/canonmn.cpp:830 src/canonmn.cpp:1036 src/fujimn.cpp:71 -#: src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 -#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 -#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 -#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1119 -#: src/minoltamn.cpp:1182 src/minoltamn.cpp:1235 src/minoltamn.cpp:1976 -#: src/minoltamn.cpp:2043 src/minoltamn.cpp:2092 src/nikonmn.cpp:81 -#: src/nikonmn.cpp:445 src/olympusmn.cpp:94 src/olympusmn.cpp:156 -#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:605 -#: src/olympusmn.cpp:1196 src/olympusmn.cpp:1202 src/olympusmn.cpp:1203 -#: src/panasonicmn.cpp:64 src/panasonicmn.cpp:77 src/pentaxmn.cpp:56 -#: src/pentaxmn.cpp:211 src/pentaxmn.cpp:311 src/sonymn.cpp:57 -#: src/sonymn.cpp:90 src/sonymn.cpp:105 src/sonymn.cpp:163 src/sonymn.cpp:200 -#: src/sonymn.cpp:499 src/sonymn.cpp:516 src/tags.cpp:1403 src/tags.cpp:1488 -#: src/tags.cpp:1495 -msgid "Auto" -msgstr "Ðвто" - -#: src/canonmn.cpp:263 src/olympusmn.cpp:532 -msgid "Red-eye" -msgstr "" - -#: src/canonmn.cpp:264 -#, fuzzy -msgid "Slow sync" -msgstr "Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ ÑинхронизациÑ" - -#: src/canonmn.cpp:265 -#, fuzzy -msgid "Auto + red-eye" -msgstr "Ðвтобрекетирование" - -#: src/canonmn.cpp:266 -#, fuzzy -msgid "On + red-eye" -msgstr "Ðвтобрекетирование" - -#: src/canonmn.cpp:267 src/canonmn.cpp:268 src/minoltamn.cpp:1339 -#: src/nikonmn.cpp:904 src/olympusmn.cpp:144 -#, fuzzy -msgid "External" -msgstr "внешнÑÑ" - -#: src/canonmn.cpp:273 -#, fuzzy -msgid "Single / timer" -msgstr "Серийный номер" - -#: src/canonmn.cpp:274 src/canonmn.cpp:288 src/canonmn.cpp:720 -#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1097 -#: src/minoltamn.cpp:1149 src/nikonmn.cpp:151 src/nikonmn.cpp:162 -#: src/pentaxmn.cpp:534 -#, fuzzy -msgid "Continuous" -msgstr "Продолжительный ведущий режим" - -#: src/canonmn.cpp:275 src/olympusmn.cpp:103 -#, fuzzy -msgid "Movie" -msgstr "Кино" - -#: src/canonmn.cpp:276 -#, fuzzy -msgid "Continuous, speed priority" -msgstr "Приоритет выдержки" - -#: src/canonmn.cpp:277 -#, fuzzy -msgid "Continuous, low" -msgstr "Продолжительный ведущий режим" - -#: src/canonmn.cpp:278 -#, fuzzy -msgid "Continuous, high" -msgstr "Продолжительный ведущий режим" - -#: src/canonmn.cpp:283 -#, fuzzy -msgid "One shot AF" -msgstr "One-Shot" - -#: src/canonmn.cpp:284 -#, fuzzy -msgid "AI servo AF" -msgstr "AI Focus" - -#: src/canonmn.cpp:285 -#, fuzzy -msgid "AI focus AF" -msgstr "AI Focus" - -#: src/canonmn.cpp:286 src/canonmn.cpp:289 src/minoltamn.cpp:374 -#, fuzzy -msgid "Manual focus" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" - -#: src/canonmn.cpp:287 src/canonmn.cpp:719 src/sonymn.cpp:231 -#, fuzzy -msgid "Single" -msgstr "One-Shot" - -#: src/canonmn.cpp:290 src/canonmn.cpp:291 src/canonmn.cpp:318 -#: src/canonmn.cpp:392 -#, fuzzy -msgid "Pan focus" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" - -#: src/canonmn.cpp:296 src/canonmn.cpp:1018 src/minoltamn.cpp:666 -#: src/minoltamn.cpp:852 src/sonymn.cpp:534 -#, fuzzy -msgid "Large" -msgstr "Язык" - -#: src/canonmn.cpp:297 src/canonmn.cpp:762 src/canonmn.cpp:1019 -#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1222 -#: src/sonymn.cpp:535 -#, fuzzy -msgid "Medium" -msgstr "Ðизкий" - -#: src/canonmn.cpp:298 src/canonmn.cpp:1020 src/minoltamn.cpp:668 -#: src/minoltamn.cpp:854 src/minoltamn.cpp:1223 src/sonymn.cpp:536 -#, fuzzy -msgid "Small" -msgstr "Кино" - -#: src/canonmn.cpp:299 src/canonmn.cpp:1021 -#, fuzzy -msgid "Medium 1" -msgstr "Ðизкий" - -#: src/canonmn.cpp:300 src/canonmn.cpp:1022 -#, fuzzy -msgid "Medium 2" -msgstr "Ðизкий" - -#: src/canonmn.cpp:301 src/canonmn.cpp:1023 -#, fuzzy -msgid "Medium 3" -msgstr "Ðизкий" - -#: src/canonmn.cpp:306 -#, fuzzy -msgid "Full auto" -msgstr "Режим захвата" - -#: src/canonmn.cpp:307 src/canonmn.cpp:384 src/canonmn.cpp:708 -#: src/canonmn.cpp:1093 src/fujimn.cpp:110 src/fujimn.cpp:135 -#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 -#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 -#: src/minoltamn.cpp:876 src/minoltamn.cpp:1281 src/nikonmn.cpp:974 -#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 -#: src/panasonicmn.cpp:68 src/panasonicmn.cpp:71 src/panasonicmn.cpp:72 -#: src/panasonicmn.cpp:78 src/panasonicmn.cpp:111 src/pentaxmn.cpp:58 -#: src/pentaxmn.cpp:201 src/pentaxmn.cpp:316 src/pentaxmn.cpp:500 -#: src/pentaxmn.cpp:512 src/sigmamn.cpp:157 src/sonymn.cpp:119 -#: src/sonymn.cpp:164 src/sonymn.cpp:460 src/sonymn.cpp:517 src/tags.cpp:1402 -#: src/tags.cpp:1489 src/tags.cpp:1496 -msgid "Manual" -msgstr "РучнаÑ" - -#: src/canonmn.cpp:308 src/canonmn.cpp:1125 src/fujimn.cpp:117 -#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1887 -#: src/minoltamn.cpp:2039 src/olympusmn.cpp:98 src/pentaxmn.cpp:472 -#: src/pentaxmn.cpp:705 src/sonymn.cpp:478 src/sonymn.cpp:527 -#: src/tags.cpp:1502 -msgid "Landscape" -msgstr "Ðльбом" - -#: src/canonmn.cpp:309 -#, fuzzy -msgid "Fast shutter" -msgstr "СкороÑÑ‚ÑŒ ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" - -#: src/canonmn.cpp:310 -msgid "Slow shutter" -msgstr "" - -#: src/canonmn.cpp:311 src/minoltamn.cpp:68 src/minoltamn.cpp:951 -#: src/minoltamn.cpp:2036 src/olympusmn.cpp:99 src/pentaxmn.cpp:478 -#, fuzzy -msgid "Night Scene" -msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" - -#: src/canonmn.cpp:312 -msgid "Gray scale" -msgstr "" - -#: src/canonmn.cpp:313 src/canonmn.cpp:751 src/canonmn.cpp:1058 -#: src/minoltamn.cpp:61 src/nikonmn.cpp:190 src/nikonmn.cpp:677 -#: src/olympusmn.cpp:615 src/olympusmn.cpp:632 src/olympusmn.cpp:856 -#: src/olympusmn.cpp:871 src/panasonicmn.cpp:149 src/sonymn.cpp:488 -msgid "Sepia" -msgstr "СепиÑ" - -#: src/canonmn.cpp:314 src/canonmn.cpp:1111 src/canonmn.cpp:1124 -#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 -#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1886 -#: src/minoltamn.cpp:2034 src/olympusmn.cpp:96 src/olympusmn.cpp:613 -#: src/panasonicmn.cpp:102 src/pentaxmn.cpp:471 src/pentaxmn.cpp:704 -#: src/sonymn.cpp:106 src/sonymn.cpp:477 src/sonymn.cpp:523 src/tags.cpp:1503 -msgid "Portrait" -msgstr "Портрет" - -#: src/canonmn.cpp:315 src/fujimn.cpp:118 src/minoltamn.cpp:843 -#: src/minoltamn.cpp:2038 src/panasonicmn.cpp:104 src/sonymn.cpp:524 -msgid "Sports" -msgstr "Спорт" - -#: src/canonmn.cpp:316 -msgid "Macro / close-up" -msgstr "МакроÑъёмка" - -#: src/canonmn.cpp:317 src/fujimn.cpp:149 -#, fuzzy -msgid "Black & white" -msgstr "Чёрно-белый" - -#: src/canonmn.cpp:319 src/canonmn.cpp:748 src/olympusmn.cpp:134 -#: src/olympusmn.cpp:610 src/olympusmn.cpp:852 src/panasonicmn.cpp:199 -#: src/sonymn.cpp:476 src/sonymn.cpp:506 -#, fuzzy -msgid "Vivid" -msgstr "Цвет" - -#: src/canonmn.cpp:320 src/canonmn.cpp:749 src/canonmn.cpp:1126 -#: src/minoltamn.cpp:1892 src/minoltamn.cpp:1893 src/olympusmn.cpp:621 -#: src/olympusmn.cpp:631 src/olympusmn.cpp:861 src/olympusmn.cpp:870 -#: src/sonymn.cpp:483 src/sonymn.cpp:508 -#, fuzzy -msgid "Neutral" -msgstr "внешнÑÑ" - -#: src/canonmn.cpp:321 -msgid "Flash off" -msgstr "Без вÑпышки" - -#: src/canonmn.cpp:322 -msgid "Long shutter" -msgstr "" - -#: src/canonmn.cpp:324 -#, fuzzy -msgid "Foliage" -msgstr "Модель" - -#: src/canonmn.cpp:325 src/olympusmn.cpp:106 -#, fuzzy -msgid "Indoor" -msgstr "ни" - -#: src/canonmn.cpp:326 src/fujimn.cpp:131 src/olympusmn.cpp:107 -#: src/panasonicmn.cpp:116 src/sonymn.cpp:117 -msgid "Fireworks" -msgstr "Фейерверк" - -#: src/canonmn.cpp:327 src/fujimn.cpp:129 src/olympusmn.cpp:129 -#: src/panasonicmn.cpp:128 src/sonymn.cpp:107 -msgid "Beach" -msgstr "ПлÑж" - -#: src/canonmn.cpp:328 src/canonmn.cpp:846 src/fujimn.cpp:132 -#: src/panasonicmn.cpp:127 src/sonymn.cpp:122 -msgid "Underwater" -msgstr "ÐŸÐ¾Ð´Ð²Ð¾Ð´Ð½Ð°Ñ Ñъемка" - -#: src/canonmn.cpp:329 src/fujimn.cpp:130 src/olympusmn.cpp:130 -#: src/panasonicmn.cpp:118 src/sonymn.cpp:108 -msgid "Snow" -msgstr "Снег" - -#: src/canonmn.cpp:330 -msgid "Kids & pets" -msgstr "Дети и домашние животные" - -#: src/canonmn.cpp:331 -#, fuzzy -msgid "Night SnapShot" -msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" - -#: src/canonmn.cpp:332 -msgid "Digital macro" -msgstr "Цифровой макрорежим" - -#: src/canonmn.cpp:333 -#, fuzzy -msgid "My Colors" -msgstr "Цвет" - -#: src/canonmn.cpp:334 src/minoltamn.cpp:343 -#, fuzzy -msgid "Still image" -msgstr "ЭÑкиз" - -#: src/canonmn.cpp:342 src/canonmn.cpp:343 src/properties.cpp:859 -#: src/properties.cpp:881 src/tags.cpp:1421 src/tags.cpp:1422 -#, fuzzy -msgid "Other" -msgstr "Север" - -#: src/canonmn.cpp:348 src/canonmn.cpp:763 src/canonmn.cpp:1101 -#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1164 -#: src/minoltamn.cpp:1170 src/minoltamn.cpp:1176 src/minoltamn.cpp:1345 -#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:206 -#: src/olympusmn.cpp:171 src/olympusmn.cpp:1134 src/panasonicmn.cpp:162 -#: src/panasonicmn.cpp:166 src/pentaxmn.cpp:342 src/pentaxmn.cpp:355 -#: src/sonymn.cpp:214 src/tags.cpp:1527 -msgid "Low" -msgstr "Ðизкий" - -#: src/canonmn.cpp:350 src/canonmn.cpp:1103 src/fujimn.cpp:85 -#: src/fujimn.cpp:94 src/minoltamn.cpp:1165 src/minoltamn.cpp:1171 -#: src/minoltamn.cpp:1177 src/nikonmn.cpp:71 src/nikonmn.cpp:79 -#: src/nikonmn.cpp:208 src/olympusmn.cpp:169 src/olympusmn.cpp:1136 -#: src/panasonicmn.cpp:55 src/panasonicmn.cpp:163 src/panasonicmn.cpp:168 -#: src/panasonicmn.cpp:169 src/pentaxmn.cpp:344 src/pentaxmn.cpp:357 -#: src/sonymn.cpp:217 src/tags.cpp:1528 -msgid "High" -msgstr "Ð’Ñ‹Ñокий" - -#: src/canonmn.cpp:355 src/canonmn.cpp:760 src/canonmn.cpp:764 -#: src/canonmn.cpp:769 src/canonmn.cpp:1099 src/nikonmn.cpp:671 -#: src/nikonmn.cpp:686 src/nikonmn.cpp:910 src/nikonmn.cpp:963 -#: src/nikonmn.cpp:1218 src/olympusmn.cpp:620 src/olympusmn.cpp:630 -#: src/sonymn.cpp:129 src/sonymn.cpp:136 src/sonymn.cpp:144 src/sonymn.cpp:181 -#: src/sonymn.cpp:194 src/sonymn.cpp:201 src/sonymn.cpp:209 src/sonymn.cpp:215 -#: src/sonymn.cpp:226 src/sonymn.cpp:232 src/sonymn.cpp:239 -msgid "n/a" -msgstr "н/д" - -#: src/canonmn.cpp:356 -#, fuzzy -msgid "Auto High" -msgstr "ÐвторÑкие и Ñмежные права" - -#: src/canonmn.cpp:374 src/sonymn.cpp:186 -#, fuzzy -msgid "Default" -msgstr "По умолчанию" - -#: src/canonmn.cpp:375 src/minoltamn.cpp:265 src/minoltamn.cpp:883 -#: src/minoltamn.cpp:933 src/minoltamn.cpp:1129 src/minoltamn.cpp:1938 -#: src/olympusmn.cpp:492 src/panasonicmn.cpp:110 src/pentaxmn.cpp:306 -#: src/sonymn.cpp:470 src/tags.cpp:1417 -#, fuzzy -msgid "Spot" -msgstr "Спорт" - -#: src/canonmn.cpp:376 src/sigmamn.cpp:168 src/tags.cpp:1415 -msgid "Average" -msgstr "Средний" - -#: src/canonmn.cpp:377 -#, fuzzy -msgid "Evaluative" -msgstr "значение" - -#: src/canonmn.cpp:378 src/tags.cpp:1420 -#, fuzzy -msgid "Partial" -msgstr "Вечеринка" - -#: src/canonmn.cpp:379 src/minoltamn.cpp:882 -#, fuzzy -msgid "Center weighted" -msgstr "Центровзвешенный" - -#: src/canonmn.cpp:386 -#, fuzzy -msgid "Not known" -msgstr "ÐеизвеÑтно" - -#: src/canonmn.cpp:387 src/canonmn.cpp:776 src/fujimn.cpp:207 -#: src/minoltamn.cpp:847 src/minoltamn.cpp:2041 src/olympusmn.cpp:109 -#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:109 -#: src/panasonicmn.cpp:213 src/panasonicmn.cpp:214 src/panasonicmn.cpp:243 -#: src/pentaxmn.cpp:199 src/pentaxmn.cpp:473 src/sonymn.cpp:390 -#: src/sonymn.cpp:391 src/sonymn.cpp:528 src/tags.cpp:1534 -msgid "Macro" -msgstr "Макро" - -#: src/canonmn.cpp:388 -msgid "Very close" -msgstr "" - -#: src/canonmn.cpp:389 -#, fuzzy -msgid "Close" -msgstr "Крупный план" - -#: src/canonmn.cpp:390 -#, fuzzy -msgid "Middle range" -msgstr "Модель" - -#: src/canonmn.cpp:391 -#, fuzzy -msgid "Far range" -msgstr "ДинамичеÑкий диапазон" - -#: src/canonmn.cpp:394 src/pentaxmn.cpp:200 src/tags.cpp:2568 -#, fuzzy -msgid "Infinity" -msgstr "БеÑконечный" - -#: src/canonmn.cpp:399 -msgid "Manual AF point selection" -msgstr "Ручной выбор точки фокуÑировки" - -#: src/canonmn.cpp:400 -#, fuzzy -msgid "None (MF)" -msgstr "Ðичего" - -#: src/canonmn.cpp:401 -#, fuzzy -msgid "Auto-selected" -msgstr "Ðвтобрекетирование" - -#: src/canonmn.cpp:402 src/minoltamn.cpp:287 src/minoltamn.cpp:706 -#: src/minoltamn.cpp:921 src/minoltamn.cpp:1953 src/nikonmn.cpp:103 -#: src/olympusmn.cpp:1491 src/pentaxmn.cpp:222 src/pentaxmn.cpp:237 -#, fuzzy -msgid "Right" -msgstr "Ðочной портрет" - -#: src/canonmn.cpp:403 src/canonmn.cpp:741 src/minoltamn.cpp:284 -#: src/minoltamn.cpp:703 src/minoltamn.cpp:1950 src/nikonmn.cpp:99 -#: src/nikonmn.cpp:792 src/nikonmn.cpp:807 src/pentaxmn.cpp:220 -#: src/pentaxmn.cpp:236 src/sigmamn.cpp:169 -msgid "Center" -msgstr "Центральный" - -#: src/canonmn.cpp:404 src/minoltamn.cpp:291 src/minoltamn.cpp:710 -#: src/minoltamn.cpp:925 src/minoltamn.cpp:1957 src/nikonmn.cpp:102 -#: src/pentaxmn.cpp:218 src/pentaxmn.cpp:235 -#, fuzzy -msgid "Left" -msgstr "ЛеваÑ" - -#: src/canonmn.cpp:405 -#, fuzzy -msgid "Auto AF point selection" -msgstr "Ручной выбор точки фокуÑировки" - -#: src/canonmn.cpp:410 -#, fuzzy -msgid "Easy shooting (Auto)" -msgstr "Режим замера" - -#: src/canonmn.cpp:411 -msgid "Program (P)" -msgstr "Программа (P)" - -#: src/canonmn.cpp:412 -msgid "Shutter priority (Tv)" -msgstr "Приоритет выдержки (Tv)" - -#: src/canonmn.cpp:413 -msgid "Aperture priority (Av)" -msgstr "Приоритет диафрагмы (Av)" - -#: src/canonmn.cpp:414 -msgid "Manual (M)" -msgstr "Ручной (M)" - -#: src/canonmn.cpp:415 -msgid "A-DEP" -msgstr "A-DEP" - -#: src/canonmn.cpp:416 -msgid "M-DEP" -msgstr "M-DEP" - -#: src/canonmn.cpp:700 src/minoltamn.cpp:297 src/nikonmn.cpp:142 -msgid "Did not fire" -msgstr "Ð’Ñпышка не Ñработала" - -#: src/canonmn.cpp:701 src/minoltamn.cpp:298 src/nikonmn.cpp:981 -#: src/tags.cpp:365 -msgid "Fired" -msgstr "Сработала" - -#: src/canonmn.cpp:706 src/olympusmn.cpp:1009 -msgid "External flash" -msgstr "ВнешнÑÑ Ð²Ñпышка" - -#: src/canonmn.cpp:707 src/olympusmn.cpp:1013 -msgid "Internal flash" -msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" - -#: src/canonmn.cpp:709 src/olympusmn.cpp:558 src/sonymn.cpp:494 -msgid "TTL" -msgstr "TTL" - -#: src/canonmn.cpp:710 -msgid "A-TTL" -msgstr "A-TTL" - -#: src/canonmn.cpp:711 -msgid "E-TTL" -msgstr "E-TTL" - -#: src/canonmn.cpp:712 -msgid "FP sync enabled" -msgstr "" - -#: src/canonmn.cpp:713 -msgid "2nd-curtain sync used" -msgstr "" - -#: src/canonmn.cpp:714 -#, fuzzy -msgid "FP sync used" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/canonmn.cpp:725 -#, fuzzy -msgid "Normal AE" -msgstr "VGA Normal" - -#: src/canonmn.cpp:726 src/minoltamn.cpp:527 src/minoltamn.cpp:769 -#: src/minoltamn.cpp:1045 src/pentaxmn.cpp:919 src/pentaxmn.cpp:920 -msgid "Exposure compensation" -msgstr "КомпенÑÐ°Ñ†Ð¸Ñ ÑкÑпозиции" - -#: src/canonmn.cpp:727 src/minoltamn.cpp:1575 src/pentaxmn.cpp:1021 -#: src/pentaxmn.cpp:1022 -msgid "AE lock" -msgstr "ФикÑÐ°Ñ†Ð¸Ñ ÑкÑпозиции" - -#: src/canonmn.cpp:728 -#, fuzzy -msgid "AE lock + exposure compensation" -msgstr "ФикÑÐ°Ñ†Ð¸Ñ + компенÑÐ°Ñ†Ð¸Ñ ÑкÑпозиции" - -#: src/canonmn.cpp:729 -#, fuzzy -msgid "No AE" -msgstr "VGA Normal" - -#: src/canonmn.cpp:736 -#, fuzzy -msgid "On, shot only" -msgstr "One-Shot" - -#: src/canonmn.cpp:742 src/canonmn.cpp:794 src/nikonmn.cpp:823 -#: src/olympusmn.cpp:1008 -#, fuzzy -msgid "AF Point" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/canonmn.cpp:750 -#, fuzzy -msgid "Smooth" -msgstr "меÑÑц" - -#: src/canonmn.cpp:752 src/nikonmn.cpp:676 -msgid "B&W" -msgstr "Ч/Б" - -#: src/canonmn.cpp:753 src/canonmn.cpp:836 src/canonmn.cpp:1094 -#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 -#: src/minoltamn.cpp:1184 src/minoltamn.cpp:1187 src/minoltamn.cpp:2100 -#: src/pentaxmn.cpp:723 -msgid "Custom" -msgstr "Свой" - -#: src/canonmn.cpp:754 src/canonmn.cpp:755 -#, fuzzy -msgid "My color data" -msgstr "Цвет" - -#: src/canonmn.cpp:761 src/pentaxmn.cpp:163 -#, fuzzy -msgid "Full" -msgstr "Полный" - -#: src/canonmn.cpp:770 -msgid "sRAW1 (mRAW)" -msgstr "" - -#: src/canonmn.cpp:771 -msgid "sRAW2 (sRAW)" -msgstr "" - -#: src/canonmn.cpp:777 -#, fuzzy -msgid "Selftimer" -msgstr "Серийный номер" - -#: src/canonmn.cpp:777 src/panasonicmn.cpp:259 -#, fuzzy -msgid "Self timer" -msgstr "Серийный номер" - -#: src/canonmn.cpp:778 src/fujimn.cpp:186 src/minoltamn.cpp:1484 -#: src/minoltamn.cpp:1485 src/nikonmn.cpp:222 src/nikonmn.cpp:459 -#: src/nikonmn.cpp:527 src/olympusmn.cpp:198 src/panasonicmn.cpp:236 -#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:647 -#: src/sonymn.cpp:648 -msgid "Quality" -msgstr "КачеÑтво" - -#: src/canonmn.cpp:779 src/fujimn.cpp:201 src/minoltamn.cpp:493 -#: src/minoltamn.cpp:762 src/nikonmn.cpp:566 src/olympusmn.cpp:279 -#: src/olympusmn.cpp:670 -msgid "Flash Mode" -msgstr "Режим вÑпышки" - -#: src/canonmn.cpp:779 -#, fuzzy -msgid "Flash mode setting" -msgstr "Ð’Ñпышка Ñработала" - -#: src/canonmn.cpp:780 src/minoltamn.cpp:505 src/minoltamn.cpp:1427 -#: src/olympusmn.cpp:700 src/sigmamn.cpp:59 src/sonymn.cpp:559 -#: src/sonymn.cpp:560 -#, fuzzy -msgid "Drive Mode" -msgstr "Режим замера" - -#: src/canonmn.cpp:780 -#, fuzzy -msgid "Drive mode setting" -msgstr "Режим макроÑъёмки" - -#: src/canonmn.cpp:782 src/fujimn.cpp:210 src/minoltamn.cpp:622 -#: src/minoltamn.cpp:753 src/minoltamn.cpp:1035 src/minoltamn.cpp:1379 -#: src/nikonmn.cpp:474 src/olympusmn.cpp:300 src/olympusmn.cpp:664 -#: src/panasonicmn.cpp:240 src/sonymn.cpp:396 src/sonymn.cpp:397 -#: src/sonymn.cpp:566 src/sonymn.cpp:567 src/sonymn.cpp:672 src/sonymn.cpp:673 -msgid "Focus Mode" -msgstr "СпоÑоб фокуÑировки" - -#: src/canonmn.cpp:782 -#, fuzzy -msgid "Focus mode setting" -msgstr "СпоÑоб фокуÑировки" - -#: src/canonmn.cpp:785 src/minoltamn.cpp:499 src/minoltamn.cpp:744 -#: src/minoltamn.cpp:987 -msgid "Image Size" -msgstr "Размер изображениÑ" - -#: src/canonmn.cpp:786 -#, fuzzy -msgid "Easy Mode" -msgstr "Режим вÑпышки" - -#: src/canonmn.cpp:786 -#, fuzzy -msgid "Easy shooting mode" -msgstr "Режим замера" - -#: src/canonmn.cpp:787 src/minoltamn.cpp:523 src/nikonmn.cpp:255 -#: src/nikonmn.cpp:480 src/nikonmn.cpp:565 src/olympusmn.cpp:207 -msgid "Digital Zoom" -msgstr "Цифровой транÑфокатор" - -#: src/canonmn.cpp:787 src/minoltamn.cpp:524 src/pentaxmn.cpp:944 -#: src/pentaxmn.cpp:945 -msgid "Digital zoom" -msgstr "Цифровой транÑфокатор" - -#: src/canonmn.cpp:788 src/minoltamn.cpp:386 src/minoltamn.cpp:574 -#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 -#: src/minoltamn.cpp:1017 src/minoltamn.cpp:1018 src/minoltamn.cpp:1415 -#: src/minoltamn.cpp:1416 src/nikonmn.cpp:697 src/olympusmn.cpp:390 -#: src/olympusmn.cpp:800 src/panasonicmn.cpp:257 src/panasonicmn.cpp:268 -#: src/pentaxmn.cpp:850 src/pentaxmn.cpp:950 src/pentaxmn.cpp:951 -#: src/properties.cpp:443 src/properties.cpp:589 src/sigmamn.cpp:89 -#: src/sigmamn.cpp:90 src/sonymn.cpp:324 src/sonymn.cpp:593 src/sonymn.cpp:594 -#: src/sonymn.cpp:699 src/sonymn.cpp:700 src/tags.cpp:1807 -msgid "Contrast" -msgstr "КонтраÑÑ‚" - -#: src/canonmn.cpp:788 src/fujimn.cpp:199 src/olympusmn.cpp:391 -#: src/olympusmn.cpp:681 src/olympusmn.cpp:1080 src/panasonicmn.cpp:257 -#, fuzzy -msgid "Contrast setting" -msgstr "ÐаÑтройка контраÑта" - -#: src/canonmn.cpp:789 src/minoltamn.cpp:387 src/minoltamn.cpp:571 -#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 -#: src/minoltamn.cpp:1020 src/minoltamn.cpp:1021 src/minoltamn.cpp:1418 -#: src/minoltamn.cpp:1419 src/nikonmn.cpp:578 src/nikonmn.cpp:597 -#: src/nikonmn.cpp:699 src/olympusmn.cpp:799 src/olympusmn.cpp:898 -#: src/panasonicmn.cpp:271 src/pentaxmn.cpp:844 src/pentaxmn.cpp:947 -#: src/pentaxmn.cpp:948 src/properties.cpp:461 src/properties.cpp:590 -#: src/sigmamn.cpp:98 src/sigmamn.cpp:99 src/sonymn.cpp:327 src/sonymn.cpp:596 -#: src/sonymn.cpp:597 src/sonymn.cpp:702 src/sonymn.cpp:703 src/tags.cpp:1811 -msgid "Saturation" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/canonmn.cpp:789 src/olympusmn.cpp:1078 -#, fuzzy -msgid "Saturation setting" -msgstr "ÐаÑтройка контраÑта" - -#: src/canonmn.cpp:790 src/canonmn.cpp:1134 src/fujimn.cpp:189 -#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 -#: src/minoltamn.cpp:775 src/minoltamn.cpp:1014 src/minoltamn.cpp:1015 -#: src/minoltamn.cpp:1412 src/minoltamn.cpp:1413 src/nikonmn.cpp:696 -#: src/olympusmn.cpp:801 src/panasonicmn.cpp:272 src/pentaxmn.cpp:847 -#: src/pentaxmn.cpp:953 src/pentaxmn.cpp:954 src/properties.cpp:464 -#: src/properties.cpp:591 src/sigmamn.cpp:101 src/sigmamn.cpp:102 -#: src/sonymn.cpp:590 src/sonymn.cpp:591 src/sonymn.cpp:696 src/sonymn.cpp:697 -#: src/tags.cpp:1815 -msgid "Sharpness" -msgstr "РезкоÑÑ‚ÑŒ" - -#: src/canonmn.cpp:790 src/fujimn.cpp:190 src/olympusmn.cpp:682 -#: src/olympusmn.cpp:1081 -#, fuzzy -msgid "Sharpness setting" -msgstr "ÐаÑтройка резкоÑти" - -#: src/canonmn.cpp:791 src/minoltamn.cpp:765 src/minoltamn.cpp:1008 -#, fuzzy -msgid "ISO Speed Mode" -msgstr "СкороÑÑ‚ÑŒ ISO" - -#: src/canonmn.cpp:791 src/minoltamn.cpp:766 src/minoltamn.cpp:1009 -#: src/nikonmn.cpp:217 src/nikonmn.cpp:469 src/nikonmn.cpp:525 -#: src/panasonicmn.cpp:344 -#, fuzzy -msgid "ISO speed setting" -msgstr "СкороÑÑ‚ÑŒ ISO" - -#: src/canonmn.cpp:792 src/minoltamn.cpp:508 src/minoltamn.cpp:1005 -#: src/minoltamn.cpp:1394 src/olympusmn.cpp:661 src/properties.cpp:561 -#: src/sigmamn.cpp:77 src/sonymn.cpp:575 src/sonymn.cpp:576 src/sonymn.cpp:681 -#: src/sonymn.cpp:682 src/tags.cpp:825 src/tags.cpp:1646 -msgid "Metering Mode" -msgstr "Режим замера" - -#: src/canonmn.cpp:792 -#, fuzzy -msgid "Metering mode setting" -msgstr "Режим макроÑъёмки" - -#: src/canonmn.cpp:793 -#, fuzzy -msgid "Focus Type" -msgstr "СпоÑоб фокуÑировки" - -#: src/canonmn.cpp:793 -#, fuzzy -msgid "Focus type setting" -msgstr "СпоÑоб фокуÑировки" - -#: src/canonmn.cpp:794 -#, fuzzy -msgid "AF point selected" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/canonmn.cpp:795 src/properties.cpp:550 src/sonymn.cpp:632 -#: src/sonymn.cpp:633 src/sonymn.cpp:708 src/sonymn.cpp:709 src/tags.cpp:799 -#: src/tags.cpp:1548 -msgid "Exposure Program" -msgstr "Программа ÑкÑпозиции" - -#: src/canonmn.cpp:795 -#, fuzzy -msgid "Exposure mode setting" -msgstr "Режим ÑкÑпозиции" - -#: src/canonmn.cpp:797 src/nikonmn.cpp:562 src/olympusmn.cpp:745 -#: src/panasonicmn.cpp:276 -msgid "Lens Type" -msgstr "Тип объектива" - -#: src/canonmn.cpp:797 src/nikonmn.cpp:562 src/olympusmn.cpp:745 -#: src/panasonicmn.cpp:276 src/pentaxmn.cpp:1008 src/pentaxmn.cpp:1009 -msgid "Lens type" -msgstr "Тип объектива" - -#: src/canonmn.cpp:798 src/nikonmn.cpp:563 src/properties.cpp:633 -msgid "Lens" -msgstr "Объектив" - -#: src/canonmn.cpp:798 -msgid "" -"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " -"per mm" -msgstr "" - -#: src/canonmn.cpp:799 -msgid "Short Focal" -msgstr "" - -#: src/canonmn.cpp:799 -#, fuzzy -msgid "Short focal" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" - -#: src/canonmn.cpp:800 -#, fuzzy -msgid "Focal Units" -msgstr "ФокуÑное раÑÑтоÑние" - -#: src/canonmn.cpp:800 -#, fuzzy -msgid "Focal units" -msgstr "ФокуÑное раÑÑтоÑние" - -#: src/canonmn.cpp:801 src/minoltamn.cpp:553 -#, fuzzy -msgid "Max Aperture" -msgstr "Диафрагма" - -#: src/canonmn.cpp:801 src/minoltamn.cpp:554 -#, fuzzy -msgid "Max aperture" -msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" - -#: src/canonmn.cpp:802 -#, fuzzy -msgid "Min Aperture" -msgstr "Диафрагма" - -#: src/canonmn.cpp:802 -#, fuzzy -msgid "Min aperture" -msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" - -#: src/canonmn.cpp:803 -#, fuzzy -msgid "Flash Activity" -msgstr "Ð’Ñпышка Ñработала" - -#: src/canonmn.cpp:803 -#, fuzzy -msgid "Flash activity" -msgstr "Ð’Ñпышка Ñработала" - -#: src/canonmn.cpp:804 -#, fuzzy -msgid "Flash Details" -msgstr "Ð’Ñпышка Ñработала" - -#: src/canonmn.cpp:804 -#, fuzzy -msgid "Flash details" -msgstr "Режим вÑпышки" - -#: src/canonmn.cpp:807 -#, fuzzy -msgid "Focus Continuous" -msgstr "Продолжительный ведущий режим" - -#: src/canonmn.cpp:807 -#, fuzzy -msgid "Focus continuous setting" -msgstr "СпоÑоб фокуÑировки" - -#: src/canonmn.cpp:808 -#, fuzzy -msgid "AESetting" -msgstr "ÐаÑтройка резкоÑти" - -#: src/canonmn.cpp:808 -#, fuzzy -msgid "AE setting" -msgstr "СпоÑоб фокуÑировки" - -#: src/canonmn.cpp:809 src/minoltamn.cpp:147 src/minoltamn.cpp:814 -#: src/minoltamn.cpp:1071 src/minoltamn.cpp:1562 src/nikonmn.cpp:599 -#: src/olympusmn.cpp:703 src/olympusmn.cpp:1016 src/panasonicmn.cpp:242 -#: src/sonymn.cpp:372 src/sonymn.cpp:635 src/sonymn.cpp:636 -msgid "Image Stabilization" -msgstr "Ð¡Ñ‚Ð°Ð±Ð¸Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñнимка" - -#: src/canonmn.cpp:809 src/minoltamn.cpp:148 src/minoltamn.cpp:815 -#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1563 src/nikonmn.cpp:599 -#: src/olympusmn.cpp:703 src/olympusmn.cpp:1016 src/panasonicmn.cpp:242 -#: src/sonymn.cpp:373 -msgid "Image stabilization" -msgstr "Ð¡Ñ‚Ð°Ð±Ð¸Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñнимка" - -#: src/canonmn.cpp:810 -#, fuzzy -msgid "Display Aperture" -msgstr "Диафрагма" - -#: src/canonmn.cpp:810 -#, fuzzy -msgid "Display aperture" -msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" - -#: src/canonmn.cpp:811 -#, fuzzy -msgid "Zoom Source Width" -msgstr "Ширина изображениÑ" - -#: src/canonmn.cpp:811 -#, fuzzy -msgid "Zoom source width" -msgstr "Ширина изображениÑ" - -#: src/canonmn.cpp:812 -#, fuzzy -msgid "Zoom Target Width" -msgstr "Ширина изображениÑ" - -#: src/canonmn.cpp:812 -#, fuzzy -msgid "Zoom target width" -msgstr "Ширина изображениÑ" - -#: src/canonmn.cpp:814 -#, fuzzy -msgid "Spot Metering Mode" -msgstr "Режим замера" - -#: src/canonmn.cpp:814 -#, fuzzy -msgid "Spot metering mode" -msgstr "Режим замера" - -#: src/canonmn.cpp:815 -#, fuzzy -msgid "Photo Effect" -msgstr "Цветовое проÑтранÑтво" - -#: src/canonmn.cpp:815 -#, fuzzy -msgid "Photo effect" -msgstr "Цветовое проÑтранÑтво" - -#: src/canonmn.cpp:816 -#, fuzzy -msgid "Manual Flash Output" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ ÑкÑпозициÑ" - -#: src/canonmn.cpp:816 -#, fuzzy -msgid "Manual flash output" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ ÑкÑпозициÑ" - -#: src/canonmn.cpp:817 -#, fuzzy -msgid "Color Tone" -msgstr "Цветовое проÑтранÑтво" - -#: src/canonmn.cpp:817 -#, fuzzy -msgid "Color tone" -msgstr "Цветовое проÑтранÑтво" - -#: src/canonmn.cpp:818 -msgid "SRAW Quality Tone" -msgstr "" - -#: src/canonmn.cpp:818 -#, fuzzy -msgid "SRAW quality" -msgstr "КачеÑтво изображениÑ" - -#: src/canonmn.cpp:820 -#, fuzzy -msgid "Unknown Canon Camera Settings 1 tag" -msgstr "ÐаÑтройка контраÑта" - -#: src/canonmn.cpp:831 -msgid "Sunny" -msgstr "Солнечно" - -#: src/canonmn.cpp:832 src/fujimn.cpp:73 src/minoltamn.cpp:220 -#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1194 -#: src/minoltamn.cpp:2095 src/nikonmn.cpp:450 src/olympusmn.cpp:1041 -#: src/panasonicmn.cpp:66 src/pentaxmn.cpp:321 src/sonymn.cpp:166 -msgid "Cloudy" -msgstr "Облачно" - -#: src/canonmn.cpp:833 src/minoltamn.cpp:221 src/minoltamn.cpp:686 -#: src/minoltamn.cpp:872 src/minoltamn.cpp:1196 src/minoltamn.cpp:2097 -#: src/pentaxmn.cpp:315 -msgid "Tungsten" -msgstr "Лампа накаливаниÑ" - -#: src/canonmn.cpp:834 src/minoltamn.cpp:223 src/minoltamn.cpp:687 -#: src/minoltamn.cpp:873 src/minoltamn.cpp:1197 src/minoltamn.cpp:2099 -#: src/nikonmn.cpp:449 src/pentaxmn.cpp:314 src/tags.cpp:1429 -msgid "Fluorescent" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/canonmn.cpp:837 src/minoltamn.cpp:57 src/minoltamn.cpp:1890 -#: src/sonymn.cpp:481 -msgid "Black & White" -msgstr "Чёрно-белый" - -#: src/canonmn.cpp:838 src/minoltamn.cpp:684 src/minoltamn.cpp:871 -#: src/minoltamn.cpp:1195 src/minoltamn.cpp:2096 src/olympusmn.cpp:1040 -#: src/pentaxmn.cpp:313 src/tags.cpp:1434 -msgid "Shade" -msgstr "Тень" - -#: src/canonmn.cpp:839 -msgid "Manual Temperature (Kelvin)" -msgstr "" - -#: src/canonmn.cpp:840 -msgid "PC Set 1" -msgstr "" - -#: src/canonmn.cpp:841 -msgid "PC Set 2" -msgstr "" - -#: src/canonmn.cpp:842 -msgid "PC Set 3" -msgstr "" - -#: src/canonmn.cpp:843 -#, fuzzy -msgid "Daylight Fluorescent" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/canonmn.cpp:844 src/properties.cpp:791 -msgid "Custom 1" -msgstr "Свой 1" - -#: src/canonmn.cpp:845 src/minoltamn.cpp:225 src/properties.cpp:792 -msgid "Custom 2" -msgstr "Свой 2" - -#: src/canonmn.cpp:847 src/canonmn.cpp:848 src/minoltamn.cpp:226 -#: src/properties.cpp:793 -#, fuzzy -msgid "Custom 3" -msgstr "Свой" - -#: src/canonmn.cpp:849 -msgid "PC Set 4" -msgstr "" - -#: src/canonmn.cpp:850 -msgid "PC Set 5" -msgstr "" - -#: src/canonmn.cpp:855 src/canonmn.cpp:974 src/canonmn.cpp:982 -#, fuzzy -msgid "left" -msgstr "ЛеваÑ" - -#: src/canonmn.cpp:856 src/canonmn.cpp:971 src/canonmn.cpp:983 -#, fuzzy -msgid "center" -msgstr "Центральный" - -#: src/canonmn.cpp:857 src/canonmn.cpp:968 src/canonmn.cpp:984 -#, fuzzy -msgid "right" -msgstr "ЯркоÑÑ‚ÑŒ+" - -#: src/canonmn.cpp:884 -#, fuzzy -msgid "ISO Speed Used" -msgstr "СкороÑÑ‚ÑŒ ISO" - -#: src/canonmn.cpp:884 -#, fuzzy -msgid "ISO speed used" -msgstr "СкороÑÑ‚ÑŒ ISO" - -#: src/canonmn.cpp:885 -msgid "Measured EV" -msgstr "" - -#: src/canonmn.cpp:886 -#, fuzzy -msgid "Target Aperture" -msgstr "Диафрагма" - -#: src/canonmn.cpp:887 -#, fuzzy -msgid "Target Shutter Speed" -msgstr "СкороÑÑ‚ÑŒ ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" - -#: src/canonmn.cpp:887 -#, fuzzy -msgid "Target shutter speed" -msgstr "СкороÑÑ‚ÑŒ ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" - -#: src/canonmn.cpp:889 src/fujimn.cpp:192 src/minoltamn.cpp:177 -#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:993 -#: src/minoltamn.cpp:1376 src/nikonmn.cpp:225 src/nikonmn.cpp:471 -#: src/nikonmn.cpp:528 src/olympusmn.cpp:330 src/olympusmn.cpp:880 -#: src/panasonicmn.cpp:238 src/properties.cpp:473 src/properties.cpp:582 -#: src/sigmamn.cpp:71 src/sonymn.cpp:289 src/tags.cpp:1785 -msgid "White Balance" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/canonmn.cpp:889 src/fujimn.cpp:193 src/minoltamn.cpp:1443 -#: src/panasonicmn.cpp:238 -#, fuzzy -msgid "White balance setting" -msgstr "ÐаÑтройка баланÑа белого" - -#: src/canonmn.cpp:891 -#, fuzzy -msgid "Sequence" -msgstr "Ðомер поÑледовательноÑти" - -#: src/canonmn.cpp:891 -msgid "Sequence number (if in a continuous burst)" -msgstr "" - -#: src/canonmn.cpp:896 -#, fuzzy -msgid "AF Point Used" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/canonmn.cpp:896 -#, fuzzy -msgid "AF point used" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/canonmn.cpp:897 src/olympusmn.cpp:372 -#, fuzzy -msgid "Flash Bias" -msgstr "Ð’Ñпышка Ñработала" - -#: src/canonmn.cpp:901 src/properties.cpp:560 src/tags.cpp:824 -#: src/tags.cpp:1643 -msgid "Subject Distance" -msgstr "РаÑÑтоÑние до объекта" - -#: src/canonmn.cpp:901 -msgid "Subject distance (units are not clear)" -msgstr "" - -#: src/canonmn.cpp:903 src/olympusmn.cpp:273 src/properties.cpp:556 -#: src/tags.cpp:820 -#, fuzzy -msgid "Aperture Value" -msgstr "Диафрагма" - -#: src/canonmn.cpp:904 src/properties.cpp:555 src/tags.cpp:819 -#, fuzzy -msgid "Shutter Speed Value" -msgstr "СкороÑÑ‚ÑŒ ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" - -#: src/canonmn.cpp:904 src/tags.cpp:1623 -msgid "Shutter speed" -msgstr "СкороÑÑ‚ÑŒ ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" - -#: src/canonmn.cpp:905 -msgid "Measured EV 2" -msgstr "" - -#: src/canonmn.cpp:910 -#, fuzzy -msgid "Unknown Canon Camera Settings 2 tag" -msgstr "ÐаÑтройка контраÑта" - -#: src/canonmn.cpp:920 src/olympusmn.cpp:1164 -#, fuzzy -msgid "Left to right" -msgstr "Ñлева направо" - -#: src/canonmn.cpp:921 src/olympusmn.cpp:1165 -#, fuzzy -msgid "Right to left" -msgstr "Ñправа налево" - -#: src/canonmn.cpp:922 src/olympusmn.cpp:1166 -#, fuzzy -msgid "Bottom to top" -msgstr "Ñнизу вверх" - -#: src/canonmn.cpp:923 src/olympusmn.cpp:1167 -#, fuzzy -msgid "Top to bottom" -msgstr "Ñверху вниз" - -#: src/canonmn.cpp:924 -msgid "2x2 matrix (Clockwise)" -msgstr "" - -#: src/canonmn.cpp:929 -msgid "Panorama Frame" -msgstr "Кадр панорамы" - -#: src/canonmn.cpp:929 -msgid "Panorama frame number" -msgstr "Ðомер кадра панорамы" - -#: src/canonmn.cpp:930 -msgid "Panorama Direction" -msgstr "направление панорамы" - -#: src/canonmn.cpp:930 -msgid "Panorama direction" -msgstr "Ðаправление Ñъёмки панорамы" - -#: src/canonmn.cpp:932 -msgid "Unknown Canon Panorama tag" -msgstr "ÐеизвеÑтный панорамный Ñ‚Ñг Canon" - -#: src/canonmn.cpp:942 src/canonmn.cpp:1072 src/minoltamn.cpp:807 -#: src/minoltamn.cpp:1068 src/minoltamn.cpp:1493 src/nikonmn.cpp:579 -#: src/olympusmn.cpp:438 src/olympusmn.cpp:602 src/olympusmn.cpp:685 -#: src/olympusmn.cpp:804 src/olympusmn.cpp:819 src/olympusmn.cpp:889 -#: src/olympusmn.cpp:974 -msgid "Noise Reduction" -msgstr "Подавление шума" - -#: src/canonmn.cpp:942 -msgid "Long exposure noise reduction" -msgstr "Подавление шума при длительной выдержке" - -#: src/canonmn.cpp:943 -#, fuzzy -msgid "Shutter Ae Lock" -msgstr "СкороÑÑ‚ÑŒ ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" - -#: src/canonmn.cpp:943 -#, fuzzy -msgid "Shutter/AE lock buttons" -msgstr "Выдержка" - -#: src/canonmn.cpp:944 -msgid "Mirror Lockup" -msgstr "" - -#: src/canonmn.cpp:944 -msgid "Mirror lockup" -msgstr "" - -#: src/canonmn.cpp:945 src/sonymn.cpp:650 src/sonymn.cpp:651 -#, fuzzy -msgid "Exposure Level Increments" -msgstr "Режим ÑкÑпозиции" - -#: src/canonmn.cpp:945 -msgid "Tv/Av and exposure level" -msgstr "" - -#: src/canonmn.cpp:946 src/minoltamn.cpp:1520 -#, fuzzy -msgid "AF Assist" -msgstr "Тип Ñцены" - -#: src/canonmn.cpp:946 -msgid "AF assist light" -msgstr "" - -#: src/canonmn.cpp:947 -#, fuzzy -msgid "Flash Sync Speed Av" -msgstr "Режим вÑпышки" - -#: src/canonmn.cpp:947 -#, fuzzy -msgid "Shutter speed in Av mode" -msgstr "СкороÑÑ‚ÑŒ ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" - -#: src/canonmn.cpp:948 -#, fuzzy -msgid "AEB Sequence" -msgstr "Ðомер поÑледовательноÑти" - -#: src/canonmn.cpp:948 -msgid "AEB sequence/auto cancellation" -msgstr "" - -#: src/canonmn.cpp:949 -#, fuzzy -msgid "Shutter Curtain Sync" -msgstr "Выдержка" - -#: src/canonmn.cpp:949 -#, fuzzy -msgid "Shutter curtain sync" -msgstr "Приоритет выдержки" - -#: src/canonmn.cpp:950 -#, fuzzy -msgid "Lens AF Stop Button" -msgstr "Тип объектива" - -#: src/canonmn.cpp:950 -#, fuzzy -msgid "Lens AF stop button Fn. Switch" -msgstr "Тип объектива" - -#: src/canonmn.cpp:951 -#, fuzzy -msgid "Fill Flash Auto Reduction" -msgstr "Подавление шума" - -#: src/canonmn.cpp:951 -msgid "Auto reduction of fill flash" -msgstr "" - -#: src/canonmn.cpp:952 -msgid "Menu Button Return" -msgstr "" - -#: src/canonmn.cpp:952 -msgid "Menu button return position" -msgstr "" - -#: src/canonmn.cpp:953 -#, fuzzy -msgid "Set Button Function" -msgstr "ИнÑтрукции" - -#: src/canonmn.cpp:953 -msgid "SET button func. when shooting" -msgstr "" - -#: src/canonmn.cpp:954 -msgid "Sensor Cleaning" -msgstr "ОчиÑтка ÑенÑора" - -#: src/canonmn.cpp:954 -msgid "Sensor cleaning" -msgstr "ОчиÑтка ÑенÑора" - -#: src/canonmn.cpp:955 -msgid "Superimposed Display" -msgstr "" - -#: src/canonmn.cpp:955 -msgid "Superimposed display" -msgstr "" - -#: src/canonmn.cpp:956 -msgid "Shutter Release No CF Card" -msgstr "" - -#: src/canonmn.cpp:956 -msgid "Shutter Release W/O CF Card" -msgstr "" - -#: src/canonmn.cpp:958 -#, fuzzy -msgid "Unknown Canon Custom Function tag" -msgstr "ÐаÑтройка контраÑта" - -#: src/canonmn.cpp:969 -#, fuzzy -msgid "mid-right" -msgstr "Ñлева направо" - -#: src/canonmn.cpp:970 src/canonmn.cpp:987 -#, fuzzy -msgid "bottom" -msgstr "Ñнизу вверх" - -#: src/canonmn.cpp:972 src/canonmn.cpp:979 -#, fuzzy -msgid "top" -msgstr "в" - -#: src/canonmn.cpp:973 -#, fuzzy -msgid "mid-left" -msgstr "ЛеваÑ" - -#: src/canonmn.cpp:980 -#, fuzzy -msgid "upper-left" -msgstr "ПраваÑ" - -#: src/canonmn.cpp:981 -#, fuzzy -msgid "upper-right" -msgstr "ПраваÑ" - -#: src/canonmn.cpp:985 -#, fuzzy -msgid "lower-left" -msgstr "ПраваÑ" - -#: src/canonmn.cpp:986 -#, fuzzy -msgid "lower-right" -msgstr "ПраваÑ" - -#: src/canonmn.cpp:992 src/olympusmn.cpp:225 src/olympusmn.cpp:405 -#: src/panasonicmn.cpp:341 src/properties.cpp:480 src/tags.cpp:415 -msgid "Image Width" -msgstr "Ширина изображениÑ" - -#: src/canonmn.cpp:992 src/olympusmn.cpp:226 src/olympusmn.cpp:406 -#: src/panasonicmn.cpp:341 src/tags.cpp:2103 -msgid "Image width" -msgstr "Ширина изображениÑ" - -#: src/canonmn.cpp:993 src/olympusmn.cpp:228 src/olympusmn.cpp:408 -#: src/panasonicmn.cpp:340 -#, fuzzy -msgid "Image Height" -msgstr "Длина изображениÑ" - -#: src/canonmn.cpp:993 src/olympusmn.cpp:229 src/olympusmn.cpp:409 -#: src/panasonicmn.cpp:340 src/tags.cpp:2106 -msgid "Image height" -msgstr "Ð’Ñ‹Ñота изображениÑ" - -#: src/canonmn.cpp:994 -#, fuzzy -msgid "Image Width As Shot" -msgstr "Ширина изображениÑ" - -#: src/canonmn.cpp:994 -#, fuzzy -msgid "Image width (as shot)" -msgstr "Ширина изображениÑ" - -#: src/canonmn.cpp:995 -#, fuzzy -msgid "Image Height As Shot" -msgstr "Длина изображениÑ" - -#: src/canonmn.cpp:995 -#, fuzzy -msgid "Image height (as shot)" -msgstr "Ð’Ñ‹Ñота изображениÑ" - -#: src/canonmn.cpp:996 src/nikonmn.cpp:848 -#, fuzzy -msgid "AF Points Used" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/canonmn.cpp:996 src/nikonmn.cpp:848 -#, fuzzy -msgid "AF points used" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/canonmn.cpp:997 -#, fuzzy -msgid "AF Points Used 20D" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/canonmn.cpp:997 -#, fuzzy -msgid "AF points used (20D)" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/canonmn.cpp:999 -#, fuzzy -msgid "Unknown Canon Picture Info tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг" - -#: src/canonmn.cpp:1010 -msgid "AEB" -msgstr "" - -#: src/canonmn.cpp:1011 -msgid "FEB" -msgstr "" - -#: src/canonmn.cpp:1012 src/minoltamn.cpp:511 src/nikonmn.cpp:767 -#: src/nikonmn.cpp:1136 src/nikonmn.cpp:1196 src/nikonmn.cpp:1232 -#, fuzzy -msgid "ISO" -msgstr "О Ñнимке" - -#: src/canonmn.cpp:1013 -msgid "WB" -msgstr "" - -#: src/canonmn.cpp:1024 -msgid "Postcard" -msgstr "" - -#: src/canonmn.cpp:1025 -msgid "Widescreen" -msgstr "" - -#: src/canonmn.cpp:1026 -#, fuzzy -msgid "Medium Movie" -msgstr "Ðизкий" - -#: src/canonmn.cpp:1027 -#, fuzzy -msgid "Small Movie" -msgstr "Кино" - -#: src/canonmn.cpp:1033 -#, fuzzy -msgid "On 1" -msgstr "Вкл" - -#: src/canonmn.cpp:1034 -#, fuzzy -msgid "On 2" -msgstr "Вкл" - -#: src/canonmn.cpp:1042 -#, fuzzy -msgid "On (shift AB)" -msgstr "One-Shot" - -#: src/canonmn.cpp:1043 -#, fuzzy -msgid "On (shift GM)" -msgstr "One-Shot" - -#: src/canonmn.cpp:1049 src/nikonmn.cpp:667 src/nikonmn.cpp:680 -#: src/nikonmn.cpp:995 src/olympusmn.cpp:622 src/olympusmn.cpp:862 -msgid "Yellow" -msgstr "" - -#: src/canonmn.cpp:1050 src/nikonmn.cpp:668 src/olympusmn.cpp:623 -#: src/olympusmn.cpp:863 -#, fuzzy -msgid "Orange" -msgstr "ДинамичеÑкий диапазон" - -#: src/canonmn.cpp:1051 src/nikonmn.cpp:669 src/nikonmn.cpp:679 -#: src/nikonmn.cpp:993 src/olympusmn.cpp:624 src/olympusmn.cpp:864 -msgid "Red" -msgstr "" - -#: src/canonmn.cpp:1052 src/canonmn.cpp:1061 src/nikonmn.cpp:670 -#: src/nikonmn.cpp:681 src/olympusmn.cpp:625 src/olympusmn.cpp:635 -#: src/olympusmn.cpp:865 src/olympusmn.cpp:874 -#, fuzzy -msgid "Green" -msgstr "Режим замера" - -#: src/canonmn.cpp:1059 src/nikonmn.cpp:683 src/nikonmn.cpp:994 -#: src/olympusmn.cpp:633 src/olympusmn.cpp:872 -#, fuzzy -msgid "Blue" -msgstr "значение" - -#: src/canonmn.cpp:1060 src/olympusmn.cpp:634 src/olympusmn.cpp:873 -msgid "Purple" -msgstr "" - -#: src/canonmn.cpp:1067 -#, fuzzy -msgid "Bracket Mode" -msgstr "Брекетинг" - -#: src/canonmn.cpp:1068 -#, fuzzy -msgid "Bracket Value" -msgstr "Брекетинг" - -#: src/canonmn.cpp:1069 -#, fuzzy -msgid "Bracket Shot Number" -msgstr "Брекетинг" - -#: src/canonmn.cpp:1070 -#, fuzzy -msgid "Raw Jpg Quality" -msgstr "КачеÑтво" - -#: src/canonmn.cpp:1071 -#, fuzzy -msgid "Raw Jpg Size" -msgstr "Размер изображениÑ" - -#: src/canonmn.cpp:1073 -#, fuzzy -msgid "WB Bracket Mode" -msgstr "Брекетинг" - -#: src/canonmn.cpp:1074 -#, fuzzy -msgid "WB Bracket Value AB" -msgstr "Таблица баланÑа белого" - -#: src/canonmn.cpp:1075 -#, fuzzy -msgid "WB Bracket Value GM" -msgstr "Таблица баланÑа белого" - -#: src/canonmn.cpp:1076 src/nikonmn.cpp:701 -#, fuzzy -msgid "Filter Effect" -msgstr "Цветовой Ñффект" - -#: src/canonmn.cpp:1077 src/nikonmn.cpp:702 -#, fuzzy -msgid "Toning Effect" -msgstr "Цветовое проÑтранÑтво" - -#: src/canonmn.cpp:1078 -#, fuzzy -msgid "Macro Magnification" -msgstr "ВерÑÐ¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸" - -#: src/canonmn.cpp:1078 -#, fuzzy -msgid "Macro magnification" -msgstr "ВерÑÐ¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸" - -#: src/canonmn.cpp:1079 -msgid "Live View Shooting" -msgstr "" - -#: src/canonmn.cpp:1079 -#, fuzzy -msgid "Live view shooting" -msgstr "Режим макроÑъёмки" - -#: src/canonmn.cpp:1080 -#, fuzzy -msgid "Flash Exposure Lock" -msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" - -#: src/canonmn.cpp:1080 -#, fuzzy -msgid "Flash exposure lock" -msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" - -#: src/canonmn.cpp:1082 -#, fuzzy -msgid "Unknown Canon File Info tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг" - -#: src/canonmn.cpp:1092 src/canonmn.cpp:1102 src/canonmn.cpp:1110 -#: src/canonmn.cpp:1123 src/fujimn.cpp:147 src/fujimn.cpp:154 -#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1135 -#: src/minoltamn.cpp:1221 src/minoltamn.cpp:1884 src/minoltamn.cpp:1973 -#: src/minoltamn.cpp:2007 src/minoltamn.cpp:2033 src/minoltamn.cpp:2059 -#: src/olympusmn.cpp:93 src/olympusmn.cpp:1135 src/panasonicmn.cpp:167 -#: src/panasonicmn.cpp:174 src/panasonicmn.cpp:204 src/pentaxmn.cpp:470 -#: src/sonymn.cpp:150 src/sonymn.cpp:475 src/sonymn.cpp:505 src/tags.cpp:1501 -msgid "Standard" -msgstr "" - -#: src/canonmn.cpp:1100 -#, fuzzy -msgid "Lowest" -msgstr "ПраваÑ" - -#: src/canonmn.cpp:1104 -#, fuzzy -msgid "Highest" -msgstr "Ð’Ñ‹Ñокий" - -#: src/canonmn.cpp:1112 -#, fuzzy -msgid "High Saturation" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/canonmn.cpp:1114 -#, fuzzy -msgid "Low Saturation" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/canonmn.cpp:1115 -msgid "CM Set 1" -msgstr "" - -#: src/canonmn.cpp:1116 -msgid "CM Set 2" -msgstr "" - -#: src/canonmn.cpp:1117 -msgid "User Def. 1" -msgstr "" - -#: src/canonmn.cpp:1118 -msgid "User Def. 2" -msgstr "" - -#: src/canonmn.cpp:1119 -msgid "User Def. 3" -msgstr "" - -#: src/canonmn.cpp:1120 -msgid "PC 1" -msgstr "" - -#: src/canonmn.cpp:1121 -msgid "PC 2" -msgstr "" - -#: src/canonmn.cpp:1122 -msgid "PC 3" -msgstr "" - -#: src/canonmn.cpp:1127 -msgid "Faithful" -msgstr "" - -#: src/canonmn.cpp:1128 src/minoltamn.cpp:903 src/minoltamn.cpp:953 -#: src/nikonmn.cpp:423 src/pentaxmn.cpp:707 -msgid "Monochrome" -msgstr "Монохромный" - -#: src/canonmn.cpp:1133 -#, fuzzy -msgid "ToneCurve" -msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ñ‚Ð¾Ð½ÐºÐ¾Ñ€Ñ€ÐµÐºÑ†Ð¸Ð¸" - -#: src/canonmn.cpp:1133 -msgid "Tone curve" -msgstr "Ð¢Ð¾Ð½Ð°Ð»ÑŒÐ½Ð°Ñ ÐºÑ€Ð¸Ð²Ð°Ñ" - -#: src/canonmn.cpp:1135 -#, fuzzy -msgid "SharpnessFrequency" -msgstr "РезкоÑÑ‚ÑŒ" - -#: src/canonmn.cpp:1135 -#, fuzzy -msgid "Sharpness frequency" -msgstr "РезкоÑÑ‚ÑŒ" - -#: src/canonmn.cpp:1136 -#, fuzzy -msgid "SensorRedLevel" -msgstr "ЗарÑд батареи" - -#: src/canonmn.cpp:1136 -#, fuzzy -msgid "Sensor red level" -msgstr "Под уровнем морÑ" - -#: src/canonmn.cpp:1137 -#, fuzzy -msgid "SensorBlueLevel" -msgstr "ЗарÑд батареи" - -#: src/canonmn.cpp:1137 -#, fuzzy -msgid "Sensor blue level" -msgstr "Под уровнем морÑ" - -#: src/canonmn.cpp:1138 -#, fuzzy -msgid "WhiteBalanceRed" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/canonmn.cpp:1138 -#, fuzzy -msgid "White balance red" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/canonmn.cpp:1139 -#, fuzzy -msgid "WhiteBalanceBlue" -msgstr "Таблица баланÑа белого" - -#: src/canonmn.cpp:1139 -#, fuzzy -msgid "White balance blue" -msgstr "Таблица баланÑа белого" - -#: src/canonmn.cpp:1140 -#, fuzzy -msgid "WhiteBalance" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/canonmn.cpp:1141 -#, fuzzy -msgid "ColorTemperature" -msgstr "Температура цвета" - -#: src/canonmn.cpp:1141 src/minoltamn.cpp:156 src/minoltamn.cpp:786 -#: src/minoltamn.cpp:1038 src/minoltamn.cpp:1053 src/minoltamn.cpp:1054 -#: src/minoltamn.cpp:1475 src/minoltamn.cpp:1577 src/olympusmn.cpp:833 -#: src/sonymn.cpp:357 src/sonymn.cpp:358 -msgid "Color Temperature" -msgstr "Температура цвета" - -#: src/canonmn.cpp:1142 -#, fuzzy -msgid "PictureStyle" -msgstr "Портретный режим" - -#: src/canonmn.cpp:1142 -#, fuzzy -msgid "Picture style" -msgstr "Портретный режим" - -#: src/canonmn.cpp:1143 -#, fuzzy -msgid "DigitalGain" -msgstr "Цифровой макрорежим" - -#: src/canonmn.cpp:1143 -#, fuzzy -msgid "Digital gain" -msgstr "Цифровой макрорежим" - -#: src/canonmn.cpp:1144 -msgid "WBShiftAB" -msgstr "" - -#: src/canonmn.cpp:1144 -#, fuzzy -msgid "WBShift AB" -msgstr "One-Shot" - -#: src/canonmn.cpp:1145 -msgid "WBShiftGM" -msgstr "" - -#: src/canonmn.cpp:1145 -#, fuzzy -msgid "WB Shift GM" -msgstr "One-Shot" - -#: src/canonmn.cpp:1146 -#, fuzzy -msgid "Unknown Canon Processing Info tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг" - -#: src/crwimage.cpp:664 -msgid "Header, offset" -msgstr "" - -#: src/crwimage.cpp:681 -msgid "tag" -msgstr "поле" - -#: src/crwimage.cpp:683 -msgid "dir" -msgstr "каталог" - -#: src/crwimage.cpp:685 -msgid "type" -msgstr "тип" - -#: src/crwimage.cpp:686 -msgid "size" -msgstr "размер" - -#: src/crwimage.cpp:687 -msgid "offset" -msgstr "быÑтрый" - -#: src/datasets.cpp:79 -msgid "(invalid)" -msgstr "" - -#: src/datasets.cpp:80 -#, fuzzy -msgid "IIM envelope record" -msgstr "Приоритет выдержки (Tv)" - -#: src/datasets.cpp:81 -msgid "IIM application record 2" -msgstr "" - -#: src/datasets.cpp:85 -msgid "Model Version" -msgstr "ВерÑÐ¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸" - -#: src/datasets.cpp:86 -msgid "" -"A binary number identifying the version of the Information Interchange " -"Model, Part I, utilised by the provider. Version numbers are assigned by " -"IPTC and NAA organizations." -msgstr "" - -#: src/datasets.cpp:90 src/panasonicmn.cpp:220 src/pentaxmn.cpp:378 -#: src/pentaxmn.cpp:962 src/pentaxmn.cpp:963 -#, fuzzy -msgid "Destination" -msgstr "ОриентациÑ" - -#: src/datasets.cpp:91 -msgid "" -"This DataSet is to accommodate some providers who require routing " -"information above the appropriate OSI layers." -msgstr "" - -#: src/datasets.cpp:94 src/sonymn.cpp:348 src/sonymn.cpp:349 -msgid "File Format" -msgstr "Формат файла" - -#: src/datasets.cpp:95 -msgid "" -"A binary number representing the file format. The file format must be " -"registered with IPTC or NAA with a unique number assigned to it. The " -"information is used to route the data to the appropriate system and to allow " -"the receiving system to perform the appropriate actions there to." -msgstr "" - -#: src/datasets.cpp:101 -msgid "File Version" -msgstr "ВерÑÐ¸Ñ Ñ„Ð°Ð¹Ð»Ð°" - -#: src/datasets.cpp:102 -msgid "" -"A binary number representing the particular version of the File Format " -"specified by tag." -msgstr "" - -#: src/datasets.cpp:105 -msgid "Service Id" -msgstr "" - -#: src/datasets.cpp:106 -msgid "Identifies the provider and product" -msgstr "" - -#: src/datasets.cpp:108 -#, fuzzy -msgid "Envelope Number" -msgstr "ЧиÑло F" - -#: src/datasets.cpp:109 -msgid "" -"The characters form a number that will be unique for the date specified in " -" tag and for the Service Identifier specified by " -" tag. If identical envelope numbers appear with the same " -"date and with the same Service Identifier, records 2-9 must be unchanged " -"from the original. This is not intended to be a sequential serial number " -"reception check." -msgstr "" - -#: src/datasets.cpp:117 -msgid "Product Id" -msgstr "" - -#: src/datasets.cpp:118 -msgid "" -"Allows a provider to identify subsets of its overall service. Used to " -"provide receiving organisation data on which to select, route, or otherwise " -"handle data." -msgstr "" - -#: src/datasets.cpp:122 -#, fuzzy -msgid "Envelope Priority" -msgstr "Приоритет выдержки (Tv)" - -#: src/datasets.cpp:123 -msgid "" -"Specifies the envelope handling priority and not the editorial urgency (see " -" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " -"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " -"Priority. The numeral \"0\" is reserved for future use." -msgstr "" - -#: src/datasets.cpp:129 -#, fuzzy -msgid "Date Sent" -msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸" - -#: src/datasets.cpp:130 -msgid "" -"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " -"to indicate year, month and day the service sent the material." -msgstr "" - -#: src/datasets.cpp:133 -msgid "Time Sent" -msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸" - -#: src/datasets.cpp:134 -msgid "" -"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " -"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " -"Universal Coordinated Time as described in ISO 8601. This is the time the " -"service sent the material." -msgstr "" - -#: src/datasets.cpp:139 -msgid "Character Set" -msgstr "Кодировка" - -#: src/datasets.cpp:140 -msgid "" -"This tag consisting of one or more control functions used for the " -"announcement, invocation or designation of coded character sets. The control " -"functions follow the ISO 2022 standard and may consist of the escape control " -"character and one or more graphic characters." -msgstr "" - -#: src/datasets.cpp:145 -#, fuzzy -msgid "Unique Name Object" -msgstr "Модель камеры" - -#: src/datasets.cpp:146 -msgid "" -"This tag provide a globally unique identification for objects as specified " -"in the IIM, independent of provider and for any media form. The provider " -"must ensure the UNO is unique. Objects with the same UNO are identical." -msgstr "" - -#: src/datasets.cpp:151 -msgid "ARM Identifier" -msgstr "Идентификатор ARM" - -#: src/datasets.cpp:152 -msgid "" -"The DataSet identifies the Abstract Relationship Method identifier (ARM) " -"which is described in a document registered by the originator of the ARM " -"with the IPTC and NAA organizations." -msgstr "" - -#: src/datasets.cpp:156 -msgid "ARM Version" -msgstr "ВерÑÐ¸Ñ ARM" - -#: src/datasets.cpp:157 -msgid "" -"This tag consisting of a binary number representing the particular version " -"of the ARM specified by tag ." -msgstr "" - -#: src/datasets.cpp:170 -msgid "Record Version" -msgstr "ВерÑÐ¸Ñ Ð·Ð°Ð¿Ð¸Ñи" - -#: src/datasets.cpp:171 -msgid "" -"A binary number identifying the version of the Information Interchange " -"Model, Part II, utilised by the provider. Version numbers are assigned by " -"IPTC and NAA organizations." -msgstr "" - -#: src/datasets.cpp:175 -msgid "Object Type" -msgstr "Тип объекта" - -#: src/datasets.cpp:176 -msgid "" -"The Object Type is used to distinguish between different types of objects " -"within the IIM. The first part is a number representing a language " -"independent international reference to an Object Type followed by a colon " -"separator. The second part, if used, is a text representation of the Object " -"Type Number consisting of graphic characters plus spaces either in English " -"or in the language of the service as indicated in tag " -msgstr "" - -#: src/datasets.cpp:184 -#, fuzzy -msgid "Object Attribute" -msgstr "ОблаÑÑ‚ÑŒ объекта Ñъёмки" - -#: src/datasets.cpp:185 -msgid "" -"The Object Attribute defines the nature of the object independent of the " -"Subject. The first part is a number representing a language independent " -"international reference to an Object Attribute followed by a colon " -"separator. The second part, if used, is a text representation of the Object " -"Attribute Number consisting of graphic characters plus spaces either in " -"English, or in the language of the service as indicated in tag " -"" -msgstr "" - -#: src/datasets.cpp:193 -msgid "Object Name" -msgstr "Ðазвание/Ð¸Ð¼Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Ñъёмки" - -#: src/datasets.cpp:194 -msgid "" -"Used as a shorthand reference for the object. Changes to exist-ing data, " -"such as updated stories or new crops on photos, should be identified in tag " -"." -msgstr "" - -#: src/datasets.cpp:198 -msgid "Document Title" -msgstr "Ð˜Ð¼Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°" - -#: src/datasets.cpp:199 src/olympusmn.cpp:820 -msgid "Edit Status" -msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð°Ð²ÐºÐ¸" - -#: src/datasets.cpp:200 -msgid "Status of the object data, according to the practice of the provider." -msgstr "" - -#: src/datasets.cpp:202 -msgid "Editorial Update" -msgstr "" - -#: src/datasets.cpp:203 -msgid "" -"Indicates the type of update that this object provides to a previous object. " -"The link to the previous object is made using the tags and " -", according to the practices of the provider." -msgstr "" - -#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:419 -msgid "Urgency" -msgstr "СрочноÑÑ‚ÑŒ" - -#: src/datasets.cpp:208 -msgid "" -"Specifies the editorial urgency of content and not necessarily the envelope " -"handling priority (see tag ). The \"1\" is most urgent, " -"\"5\" normal and \"8\" denotes the least-urgent copy." -msgstr "" - -#: src/datasets.cpp:213 src/properties.cpp:167 -msgid "Subject" -msgstr "Предмет Ñъёмки" - -#: src/datasets.cpp:214 -msgid "The Subject Reference is a structured definition of the subject matter." -msgstr "" - -#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:405 -msgid "Category" -msgstr "КатегориÑ" - -#: src/datasets.cpp:217 -msgid "" -"Identifies the subject of the object data in the opinion of the provider. A " -"list of categories will be maintained by a regional registry, where " -"available, otherwise by the provider." -msgstr "" - -#: src/datasets.cpp:222 -msgid "Supplemental Category" -msgstr "Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ" - -#: src/datasets.cpp:223 -msgid "" -"Supplemental categories further refine the subject of an object data. A " -"supplemental category may include any of the recognised categories as used " -"in tag . Otherwise, selection of supplemental categories are left " -"to the provider." -msgstr "" - -#: src/datasets.cpp:228 src/properties.cpp:417 -msgid "Supplemental Categories" -msgstr "Дополнительные категории" - -#: src/datasets.cpp:229 -#, fuzzy -msgid "Fixture Id" -msgstr "Сработала" - -#: src/datasets.cpp:230 -msgid "" -"Identifies object data that recurs often and predictably. Enables users to " -"immediately find or recall such an object." -msgstr "" - -#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:395 -msgid "Keywords" -msgstr "Ключевые Ñлова" - -#: src/datasets.cpp:234 -msgid "" -"Used to indicate specific information retrieval words. It is expected that a " -"provider of various types of data that are related in subject matter uses " -"the same keyword, enabling the receiving system or subsystems to search " -"across all types of data for related material." -msgstr "" - -#: src/datasets.cpp:240 -#, fuzzy -msgid "Location Code" -msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" - -#: src/datasets.cpp:241 -msgid "" -"Indicates the code of a country/geographical location referenced by the " -"content of the object. Where ISO has established an appropriate country code " -"under ISO 3166, that code will be used. When ISO 3166 does not adequately " -"provide for identification of a location or a country, e.g. ships at sea, " -"space, IPTC will assign an appropriate three-character code under the " -"provisions of ISO 3166 to avoid conflicts." -msgstr "" - -#: src/datasets.cpp:248 -msgid "Location Name" -msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" - -#: src/datasets.cpp:249 -msgid "" -"Provides a full, publishable name of a country/geographical location " -"referenced by the content of the object, according to guidelines of the " -"provider." -msgstr "" - -#: src/datasets.cpp:253 src/properties.cpp:358 -msgid "Release Date" -msgstr "Дата пубикации" - -#: src/datasets.cpp:254 -msgid "" -"Designates in the form CCYYMMDD the earliest date the provider intends the " -"object to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:257 -msgid "Release Time" -msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸" - -#: src/datasets.cpp:258 -msgid "" -"Designates in the form HHMMSS:HHMM the earliest time the provider intends " -"the object to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:261 -msgid "Expiration Date" -msgstr "ИÑтечение Ñрока" - -#: src/datasets.cpp:262 -msgid "" -"Designates in the form CCYYMMDD the latest date the provider or owner " -"intends the object data to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:265 -#, fuzzy -msgid "ExpirationTime" -msgstr "ИÑтечение Ñрока" - -#: src/datasets.cpp:266 -msgid "" -"Designates in the form HHMMSS:HHMM the latest time the provider or owner " -"intends the object data to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:269 -msgid "Special Instructions" -msgstr "ОÑобые инÑтрукции" - -#: src/datasets.cpp:270 -msgid "" -"Other editorial instructions concerning the use of the object data, such as " -"embargoes and warnings." -msgstr "" - -#: src/datasets.cpp:273 src/properties.cpp:414 -msgid "Instructions" -msgstr "ИнÑтрукции" - -#: src/datasets.cpp:274 -msgid "Action Advised" -msgstr "Рекомендованное дейÑтвие" - -#: src/datasets.cpp:275 -msgid "" -"Indicates the type of action that this object provides to a previous object. " -"The link to the previous object is made using tags and " -", according to the practices of the provider." -msgstr "" - -#: src/datasets.cpp:279 -#, fuzzy -msgid "Reference Service" -msgstr "Эталонный Чёрный/Белый" - -#: src/datasets.cpp:280 -msgid "" -"Identifies the Service Identifier of a prior envelope to which the current " -"object refers." -msgstr "" - -#: src/datasets.cpp:283 -#, fuzzy -msgid "Reference Date" -msgstr "Эталонный Чёрный/Белый" - -#: src/datasets.cpp:284 -msgid "" -"Identifies the date of a prior envelope to which the current object refers." -msgstr "" - -#: src/datasets.cpp:286 -#, fuzzy -msgid "Reference Number" -msgstr "Ðомер поÑледовательноÑти" - -#: src/datasets.cpp:287 -msgid "" -"Identifies the Envelope Number of a prior envelope to which the current " -"object refers." -msgstr "" - -#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:409 -msgid "Date Created" -msgstr "Дата ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Ñъёмки" - -#: src/datasets.cpp:290 -msgid "" -"Represented in the form CCYYMMDD to designate the date the intellectual " -"content of the object data was created rather than the date of the creation " -"of the physical representation. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:295 -msgid "Time Created" -msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Ñъёмки" - -#: src/datasets.cpp:296 -msgid "" -"Represented in the form HHMMSS:HHMM to designate the time the intellectual " -"content of the object data current source material was created rather than " -"the creation of the physical representation. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:301 -msgid "Digitization Date" -msgstr "Дата оцифровки" - -#: src/datasets.cpp:302 -msgid "" -"Represented in the form CCYYMMDD to designate the date the digital " -"representation of the object data was created. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:305 -msgid "Digitization Time" -msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ñ†Ð¸Ñ„Ñ€Ð¾Ð²ÐºÐ¸" - -#: src/datasets.cpp:306 -msgid "" -"Represented in the form HHMMSS:HHMM to designate the time the digital " -"representation of the object data was created. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 -#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:106 -#: src/pentaxmn.cpp:468 src/pentaxmn.cpp:526 src/sigmamn.cpp:154 -#: src/sonymn.cpp:110 -msgid "Program" -msgstr "Программа" - -#: src/datasets.cpp:311 -msgid "Identifies the type of program used to originate the object data." -msgstr "" - -#: src/datasets.cpp:313 -msgid "Program Version" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹" - -#: src/datasets.cpp:314 -msgid "Used to identify the version of the program mentioned in tag ." -msgstr "" - -#: src/datasets.cpp:316 -#, fuzzy -msgid "Object Cycle" -msgstr "Тип объекта" - -#: src/datasets.cpp:317 -msgid "Used to identify the editorial cycle of object data." -msgstr "" - -#: src/datasets.cpp:319 -#, fuzzy -msgid "By-line" -msgstr "Ñтрока" - -#: src/datasets.cpp:320 -msgid "" -"Contains name of the creator of the object data, e.g. writer, photographer " -"or graphic artist." -msgstr "" - -#: src/datasets.cpp:323 -msgid "Author" -msgstr "Ðвтор" - -#: src/datasets.cpp:324 -#, fuzzy -msgid "By-line Title" -msgstr "Ðазвание (Windows)" - -#: src/datasets.cpp:325 -msgid "" -"A by-line title is the title of the creator or creators of an object data. " -"Where used, a by-line title should follow the by-line it modifies." -msgstr "" - -#: src/datasets.cpp:328 src/datasets.cpp:332 src/properties.cpp:406 -msgid "City" -msgstr "Город" - -#: src/datasets.cpp:329 -msgid "" -"Identifies city of object data origin according to guidelines established by " -"the provider." -msgstr "" - -#: src/datasets.cpp:333 -#, fuzzy -msgid "Sub Location" -msgstr "МеÑтоположение объекта Ñъёмки" - -#: src/datasets.cpp:334 -msgid "" -"Identifies the location within a city from which the object data originates, " -"according to guidelines established by the provider." -msgstr "" - -#: src/datasets.cpp:337 -#, fuzzy -msgid "Province State" -msgstr "Данные ÑÑкиза" - -#: src/datasets.cpp:338 -msgid "" -"Identifies Province/State of origin according to guidelines established by " -"the provider." -msgstr "" - -#: src/datasets.cpp:341 -msgid "State/Province" -msgstr "Штат/провинциÑ" - -#: src/datasets.cpp:342 src/properties.cpp:649 -msgid "Country Code" -msgstr "Код Ñтраны" - -#: src/datasets.cpp:343 -msgid "" -"Indicates the code of the country/primary location where the intellectual " -"property of the object data was created, e.g. a photo was taken, an event " -"occurred. Where ISO has established an appropriate country code under ISO " -"3166, that code will be used. When ISO 3166 does not adequately provide for " -"identification of a location or a new country, e.g. ships at sea, space, " -"IPTC will assign an appropriate three-character code under the provisions of " -"ISO 3166 to avoid conflicts." -msgstr "" - -#: src/datasets.cpp:352 -msgid "Country Name" -msgstr "Ðазвание Ñтраны" - -#: src/datasets.cpp:353 -msgid "" -"Provides full, publishable, name of the country/primary location where the " -"intellectual property of the object data was created, according to " -"guidelines of the provider." -msgstr "" - -#: src/datasets.cpp:357 src/properties.cpp:407 -msgid "Country" -msgstr "Страна" - -#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:418 -#, fuzzy -msgid "Transmission Reference" -msgstr "Эталонный Чёрный/Белый" - -#: src/datasets.cpp:359 -msgid "" -"A code representing the location of original transmission according to " -"practices of the provider." -msgstr "" - -#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:413 -msgid "Headline" -msgstr "Заголовок" - -#: src/datasets.cpp:364 -msgid "" -"A publishable entry providing a synopsis of the contents of the object data." -msgstr "" - -#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:408 -#, fuzzy -msgid "Credit" -msgstr "Монохромный" - -#: src/datasets.cpp:368 -msgid "" -"Identifies the provider of the object data, not necessarily the owner/" -"creator." -msgstr "" - -#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:166 -#: src/properties.cpp:415 -msgid "Source" -msgstr "ИÑточник" - -#: src/datasets.cpp:372 -msgid "" -"Identifies the original owner of the intellectual content of the object " -"data. This could be an agency, a member of an agency or an individual." -msgstr "" - -#: src/datasets.cpp:377 -msgid "Contains any necessary copyright notice." -msgstr "" - -#: src/datasets.cpp:379 -msgid "Copyright Notice" -msgstr "Уведомление об авторÑких правах" - -#: src/datasets.cpp:380 src/properties.cpp:937 src/properties.cpp:946 -msgid "Contact" -msgstr "Контакт" - -#: src/datasets.cpp:381 -msgid "" -"Identifies the person or organisation which can provide further background " -"information on the object data." -msgstr "" - -#: src/datasets.cpp:384 -msgid "Caption" -msgstr "ПодпиÑÑŒ" - -#: src/datasets.cpp:385 -msgid "A textual description of the object data." -msgstr "ТекÑтовое опиÑание объекта Ñнимка" - -#: src/datasets.cpp:387 src/properties.cpp:151 src/properties.cpp:981 -msgid "Description" -msgstr "ОпиÑание" - -#: src/datasets.cpp:388 -msgid "Writer" -msgstr "Ðвтор текÑта" - -#: src/datasets.cpp:389 -msgid "" -"Identification of the name of the person involved in the writing, editing or " -"correcting the object data or caption/abstract." -msgstr "" - -#: src/datasets.cpp:392 -msgid "Rasterized Caption" -msgstr "РаÑÑ‚Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑŒ" - -#: src/datasets.cpp:393 -msgid "" -"Contains the rasterized object data description and is used where characters " -"that have not been coded are required for the caption." -msgstr "" - -#: src/datasets.cpp:397 -msgid "Indicates the color components of an image." -msgstr "Показывает цветовые компоненты изображениÑ" - -#: src/datasets.cpp:399 -msgid "Image Orientation" -msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" - -#: src/datasets.cpp:400 -msgid "Indicates the layout of an image." -msgstr "Показывает макет изображениÑ" - -#: src/datasets.cpp:402 src/properties.cpp:157 -msgid "Language" -msgstr "Язык" - -#: src/datasets.cpp:403 -msgid "" -"Describes the major national language of the object, according to the 2-" -"letter codes of ISO 639:1988. Does not define or imply any coded character " -"set, but is used for internal routing, e.g. to various editorial desks." -msgstr "" - -#: src/datasets.cpp:408 -msgid "Audio Type" -msgstr "Тип звуковых данных" - -#: src/datasets.cpp:409 -#, fuzzy -msgid "Indicates the type of an audio content." -msgstr "Показывает длительноÑÑ‚ÑŒ звукозапиÑи" - -#: src/datasets.cpp:411 -msgid "Audio Rate" -msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" - -#: src/datasets.cpp:412 -msgid "Indicates the sampling rate in Hertz of an audio content." -msgstr "Показывает чаÑтоту ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи в Герцах" - -#: src/datasets.cpp:414 -#, fuzzy -msgid "Audio Resolution" -msgstr "Разрешение по X" - -#: src/datasets.cpp:415 -#, fuzzy -msgid "Indicates the sampling resolution of an audio content." -msgstr "Показывает чаÑтоту ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи в Герцах" - -#: src/datasets.cpp:417 -msgid "Audio Duration" -msgstr "ДлительноÑÑ‚ÑŒ звукозапиÑи" - -#: src/datasets.cpp:418 -msgid "Indicates the duration of an audio content." -msgstr "Показывает длительноÑÑ‚ÑŒ звукозапиÑи" - -#: src/datasets.cpp:420 -#, fuzzy -msgid "Audio Outcue" -msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" - -#: src/datasets.cpp:421 -msgid "" -"Identifies the content of the end of an audio object data, according to " -"guidelines established by the provider." -msgstr "" - -#: src/datasets.cpp:424 -msgid "Preview Format" -msgstr "Формат ÑÑкиза" - -#: src/datasets.cpp:425 -msgid "" -"A binary number representing the file format of the object data preview. The " -"file format must be registered with IPTC or NAA organizations with a unique " -"number assigned to it." -msgstr "" - -#: src/datasets.cpp:429 -msgid "Preview Version" -msgstr "ВерÑÐ¸Ñ ÑÑкиза" - -#: src/datasets.cpp:430 -msgid "" -"A binary number representing the particular version of the object data " -"preview file format specified in tag ." -msgstr "" - -#: src/datasets.cpp:433 -msgid "Preview Data" -msgstr "Данные ÑÑкиза" - -#: src/datasets.cpp:434 -msgid "Binary image preview data." -msgstr "Двоичные данные ÑÑкиза изображениÑ." - -#: src/datasets.cpp:436 src/datasets.cpp:437 -msgid "(Invalid)" -msgstr "" - -#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 -msgid "Unknown dataset" -msgstr "ÐеизвеÑтный набор данных" - -#: src/error.cpp:55 -msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." -msgstr "" - -#: src/error.cpp:56 -#, fuzzy -msgid "Success" -msgstr "ИÑточник" - -#: src/error.cpp:59 -msgid "This does not look like a %1 image" -msgstr "" - -#: src/error.cpp:60 -msgid "Invalid dataset name `%1'" -msgstr "" - -#: src/error.cpp:61 -#, fuzzy -msgid "Invalid record name `%1'" -msgstr "Серийный номер" - -#: src/error.cpp:62 -msgid "Invalid key `%1'" -msgstr "" - -#: src/error.cpp:63 -msgid "Invalid tag name or ifdId `%1', ifdId %2" -msgstr "" - -#: src/error.cpp:64 -#, fuzzy -msgid "Value not set" -msgstr "не уÑтановлено\n" - -#: src/error.cpp:65 -#, fuzzy -msgid "%1: Failed to open the data source: %2" -msgstr "Ðе удалоÑÑŒ открыть файл\n" - -#: src/error.cpp:66 -#, fuzzy -msgid "%1: Failed to open file (%2): %3" -msgstr "Ðе удалоÑÑŒ открыть файл\n" - -#: src/error.cpp:67 -msgid "%1: The file contains data of an unknown image type" -msgstr "" - -#: src/error.cpp:68 -msgid "The memory contains data of an unknown image type" -msgstr "" - -#: src/error.cpp:69 -msgid "Image type %1 is not supported" -msgstr "" - -#: src/error.cpp:70 -#, fuzzy -msgid "Failed to read image data" -msgstr "Ðе удалоÑÑŒ переименовать" - -#: src/error.cpp:71 -msgid "This does not look like a JPEG image" -msgstr "" - -#: src/error.cpp:72 -msgid "%1: Failed to map file for reading and writing: %2" -msgstr "" - -#: src/error.cpp:73 -#, fuzzy -msgid "%1: Failed to rename file to %2: %3" -msgstr "Ðе удалоÑÑŒ открыть файл\n" - -#: src/error.cpp:74 -msgid "%1: Transfer failed: %2" -msgstr "" - -#: src/error.cpp:75 -msgid "Memory transfer failed: %1" -msgstr "" - -#: src/error.cpp:76 -#, fuzzy -msgid "Failed to read input data" -msgstr "Ðе удалоÑÑŒ прочитать" - -#: src/error.cpp:77 -#, fuzzy -msgid "Failed to write image" -msgstr "Ðе удалоÑÑŒ переименовать" - -#: src/error.cpp:78 -#, fuzzy -msgid "Input data does not contain a valid image" -msgstr "Ð’ Ñнимке нет Exif-ÑÑкиза\n" - -#: src/error.cpp:79 -msgid "Invalid ifdId %1" -msgstr "" - -#: src/error.cpp:80 -msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" -msgstr "" - -#: src/error.cpp:81 -msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" -msgstr "" - -#: src/error.cpp:82 -msgid "Offset out of range" -msgstr "" - -#: src/error.cpp:83 -#, fuzzy -msgid "Unsupported data area offset type" -msgstr "Ðеподдерживаемый формат даты" - -#: src/error.cpp:84 -msgid "Invalid charset: `%1'" -msgstr "" - -#: src/error.cpp:85 -msgid "Unsupported date format" -msgstr "Ðеподдерживаемый формат даты" - -#: src/error.cpp:86 -msgid "Unsupported time format" -msgstr "Ðеподдерживаемый формат времени" - -#: src/error.cpp:87 -msgid "Writing to %1 images is not supported" -msgstr "" - -#: src/error.cpp:88 -msgid "Setting %1 in %2 images is not supported" -msgstr "" - -#: src/error.cpp:89 -msgid "This does not look like a CRW image" -msgstr "" - -#: src/error.cpp:90 -msgid "%1: Not supported" -msgstr "" - -#: src/error.cpp:91 -msgid "No namespace info available for XMP prefix `%1'" -msgstr "" - -#: src/error.cpp:92 -msgid "No prefix registered for namespace `%2', needed for property path `%1'" -msgstr "" - -#: src/error.cpp:93 -msgid "Size of %1 JPEG segment is larger than 65535 bytes" -msgstr "" - -#: src/error.cpp:94 -msgid "Unhandled Xmpdatum %1 of type %2" -msgstr "" - -#: src/error.cpp:95 -msgid "Unhandled XMP node %1 with opt=%2" -msgstr "" - -#: src/error.cpp:96 -msgid "XMP Toolkit error %1: %2" -msgstr "" - -#: src/error.cpp:97 -msgid "Failed to decode Lang Alt property %1 with opt=%2" -msgstr "" - -#: src/error.cpp:98 -msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" -msgstr "" - -#: src/error.cpp:99 -msgid "Failed to encode Lang Alt property %1" -msgstr "" - -#: src/error.cpp:100 -msgid "Failed to determine property name from path %1, namespace %2" -msgstr "" - -#: src/error.cpp:101 -msgid "Schema namespace %1 is not registered with the XMP Toolkit" -msgstr "" - -#: src/error.cpp:102 -msgid "No namespace registered for prefix `%1'" -msgstr "" - -#: src/error.cpp:103 -msgid "" -"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" -"%1', `%2', `%3'" -msgstr "" - -#: src/error.cpp:104 -msgid "Invalid XmpText type `%1'" -msgstr "" - -#: src/error.cpp:105 -msgid "TIFF directory %1 has too many entries" -msgstr "" - -#: src/error.cpp:106 -msgid "Multiple TIFF array element tags %1 in one directory" -msgstr "" - -#: src/error.cpp:107 -msgid "TIFF array element tag %1 has wrong type" -msgstr "" - -#: src/error.cpp:108 -msgid "%1 has invalid XMP value type `%2'" -msgstr "" - -#: src/exiv2.cpp:212 -msgid "Copyright (C) 2004-2012 Andreas Huggel.\n" -msgstr "ÐвторÑкие права (C) 2004-2011 Andreas Huggel.\n" - -#: src/exiv2.cpp:214 -msgid "" -"This program is free software; you can redistribute it and/or\n" -"modify it under the terms of the GNU General Public License\n" -"as published by the Free Software Foundation; either version 2\n" -"of the License, or (at your option) any later version.\n" -msgstr "" - -#: src/exiv2.cpp:219 -msgid "" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -msgstr "" - -#: src/exiv2.cpp:224 -msgid "" -"You should have received a copy of the GNU General Public\n" -"License along with this program; if not, write to the Free\n" -"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" -"Boston, MA 02110-1301 USA\n" -msgstr "" - -#: src/exiv2.cpp:232 -msgid "Usage:" -msgstr "ИÑпользование:" - -#: src/exiv2.cpp:233 -msgid "" -"[ options ] [ action ] file ...\n" -"\n" -msgstr "" -"[ ключи ] [ дейÑтвие ] файл ...\n" -"\n" - -#: src/exiv2.cpp:234 -msgid "Manipulate the Exif metadata of images.\n" -msgstr "Работа Ñ Ð¼ÐµÑ‚Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ изображений.\n" - -#: src/exiv2.cpp:240 -msgid "" -"\n" -"Actions:\n" -msgstr "" -"\n" -"ДейÑтвиÑ:\n" - -#: src/exiv2.cpp:241 -msgid "" -" ad | adjust Adjust Exif timestamps by the given time. This action\n" -" requires at least one of the -a, -Y, -O or -D options.\n" -msgstr "" -" ad | adjust Заменить отметки времени Exif на заданное времÑ.\n" -" Этому дейÑтвию нужен ключ -a time.\n" - -#: src/exiv2.cpp:243 -msgid " pr | print Print image metadata.\n" -msgstr " pr | print ВывеÑти на Ñкран метаданные изображениÑ.\n" - -#: src/exiv2.cpp:244 -msgid " rm | delete Delete image metadata from the files.\n" -msgstr " rm | delete Удалить метаданные изображений из их файлов.\n" - -#: src/exiv2.cpp:245 -msgid "" -" in | insert Insert metadata from corresponding *.exv files.\n" -" Use option -S to change the suffix of the input files.\n" -msgstr "" -" in | insert Ð’Ñтавить метаданные из ÑоответÑтвующих файлов *.exv.\n" -" ИÑпользуйте ключ -S Ð´Ð»Ñ Ñмены ÑуффикÑа входÑщих файлов.\n" - -#: src/exiv2.cpp:247 -msgid "" -" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" -msgstr "" -" ex | extract Извлечь метаданные в файлы *.exv, *.xmp и файлы ÑÑкизов.\n" - -#: src/exiv2.cpp:248 -msgid "" -" mv | rename Rename files and/or set file timestamps according to the\n" -" Exif create timestamp. The filename format can be set with\n" -" -r format, timestamp options are controlled with -t and -T.\n" -msgstr "" -" mv | rename переименовать файлы и/или уÑтановить отметки\n" -" времени в ÑоответÑтвии Ñ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ¾Ð¹ времени ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸Ð· данных " -"Exif.\n" -" Формат файла можно уÑтановить ключом -r, параметры отметки\n" -" времени контролируютÑÑ ÐºÐ»ÑŽÑ‡Ð°Ð¼Ð¸ -t и -T.\n" - -#: src/exiv2.cpp:251 -msgid "" -" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" -" IPTC metadata of image files or set the JPEG comment.\n" -" Requires option -c, -m or -M.\n" -msgstr "" -" mo | modify Применить команды Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ (добавить, уÑтановить, удалить)\n" -" метаданных Exif и IPTC изображений или уÑтановить " -"комментарий JPEG.\n" -" Ðеобходимо иÑпользовать в паре Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð¼ -c, -m или -M.\n" - -#: src/exiv2.cpp:254 -msgid "" -" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" -" Exif tag.\n" -msgstr "" -" fi | fixiso Скопировать значение ISO из Nikon Makernote \n" -" в обычное поле Exif.\n" - -#: src/exiv2.cpp:256 -msgid "" -" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" -" character encoding can be specified with the -n option.\n" -msgstr "" - -#: src/exiv2.cpp:258 -msgid "" -"\n" -"Options:\n" -msgstr "" -"\n" -"Параметры:\n" - -#: src/exiv2.cpp:259 -msgid " -h Display this help and exit.\n" -msgstr " -h Показать Ñту Ñправку и выйти.\n" - -#: src/exiv2.cpp:260 -msgid " -V Show the program version and exit.\n" -msgstr " -V Показать верÑию программы и выйти.\n" - -#: src/exiv2.cpp:261 -msgid " -v Be verbose during the program run.\n" -msgstr " -v Выводить подробную информацию при выполнении дейÑтвий.\n" - -#: src/exiv2.cpp:262 -#, fuzzy -msgid "" -" -q Silence warnings and error messages during the program run " -"(quiet).\n" -msgstr " -v Выводить подробную информацию при выполнении дейÑтвий.\n" - -#: src/exiv2.cpp:263 -msgid "" -" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" -msgstr "" - -#: src/exiv2.cpp:264 -msgid " -b Show large binary values.\n" -msgstr " -b Показать большие двоичные значениÑ.\n" - -#: src/exiv2.cpp:265 -#, fuzzy -msgid " -u Show unknown tags.\n" -msgstr " -u Ðе показывать неизвеÑтные Ñ‚Ñги.\n" - -#: src/exiv2.cpp:266 -msgid " -g key Only output info for this key (grep).\n" -msgstr "" - -#: src/exiv2.cpp:267 -msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" -msgstr "" - -#: src/exiv2.cpp:268 -msgid " -k Preserve file timestamps (keep).\n" -msgstr " -k СохранÑÑ‚ÑŒ временные отметки файлов (keep).\n" - -#: src/exiv2.cpp:269 -msgid "" -" -t Also set the file timestamp in 'rename' action (overrides -k).\n" -msgstr "" - -#: src/exiv2.cpp:270 -msgid "" -" -T Only set the file timestamp in 'rename' action, do not rename\n" -" the file (overrides -k).\n" -msgstr "" - -#: src/exiv2.cpp:272 -msgid " -f Do not prompt before overwriting existing files (force).\n" -msgstr "" -" -F Ðе запрашивать подтверждение на перезапиÑÑŒ файлов (force).\n" - -#: src/exiv2.cpp:273 -msgid " -F Do not prompt before renaming files (Force).\n" -msgstr "" -" -F Ðе запрашивать подтверждение на переименование файлов (Force).\n" - -#: src/exiv2.cpp:274 -msgid "" -" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" -" is only used with the 'adjust' action.\n" -msgstr "" -" -a Ð²Ñ€ÐµÐ¼Ñ Ðовое значение времени в формате [-]ЧЧ[:ММ[:СС]]. Этот ключ\n" -" иÑпользуетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ Ð´ÐµÐ¹Ñтвием 'adjust'.\n" - -#: src/exiv2.cpp:276 -msgid " -Y yrs Year adjustment with the 'adjust' action.\n" -msgstr " -Y год Ðовое значение года Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑ‚Ð²Ð¸Ñ 'adjust'.\n" - -#: src/exiv2.cpp:277 -msgid " -O mon Month adjustment with the 'adjust' action.\n" -msgstr " -O меÑÑц Ðовое значение меÑÑца Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑ‚Ð²Ð¸Ñ 'adjust'.\n" - -#: src/exiv2.cpp:278 -msgid " -D day Day adjustment with the 'adjust' action.\n" -msgstr " -D день Ðовое значение Ð´Ð½Ñ Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑ‚Ð²Ð¸Ñ 'adjust'.\n" - -#: src/exiv2.cpp:279 -msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" -msgstr "" -" -p режим Print -- режим Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑ‚Ð²Ð¸Ñ 'вывод' (print). Возможные режимы:\n" - -#: src/exiv2.cpp:280 -msgid " s : print a summary of the Exif metadata (the default)\n" -msgstr " s : вывеÑти Ñводку метаданных Exif (по умолчанию)\n" - -#: src/exiv2.cpp:281 -#, fuzzy -msgid "" -" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" -msgstr "" -" v : обычные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… Exif (короткий вариант комбинации -" -"Pxgnycv)\n" - -#: src/exiv2.cpp:282 -#, fuzzy -msgid " t : interpreted (translated) Exif data (-PEkyct)\n" -msgstr "" -" t : интерпретированные данные Exif (короткий вариант комбинации " -"-Pkyct)\n" - -#: src/exiv2.cpp:283 -#, fuzzy -msgid " v : plain Exif data values (-PExgnycv)\n" -msgstr "" -" v : обычные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… Exif (короткий вариант комбинации -" -"Pxgnycv)\n" - -#: src/exiv2.cpp:284 -#, fuzzy -msgid " h : hexdump of the Exif data (-PExgnycsh)\n" -msgstr "" -" h : шеÑтнадцатеричный дамп данных Exif (краткий вариант Ð´Ð»Ñ -" -"Pxgnycsh)\n" - -#: src/exiv2.cpp:285 -#, fuzzy -msgid " i : IPTC data values (-PIkyct)\n" -msgstr " i : Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… IPTC\n" - -#: src/exiv2.cpp:286 -#, fuzzy -msgid " x : XMP properties (-PXkyct)\n" -msgstr " x : ÑвойÑтва XMP\n" - -#: src/exiv2.cpp:287 src/exiv2.cpp:310 -msgid " c : JPEG comment\n" -msgstr " c : комментарий JPEG\n" - -#: src/exiv2.cpp:288 -#, fuzzy -msgid " p : list available previews\n" -msgstr " l : метка Ñ‚Ñга\n" - -#: src/exiv2.cpp:289 -#, fuzzy -msgid "" -" -P flgs Print flags for fine control of tag lists ('print' action):\n" -msgstr "" -" -P Ñтолбцы ВывеÑти на Ñкран ÑпиÑок тегов Exif в виде таблицы (дейÑтвие " -"'print'). ДопуÑтимы Ñтолбцы:\n" - -#: src/exiv2.cpp:290 -#, fuzzy -msgid " E : include Exif tags in the list\n" -msgstr " s : размер в байтах\n" - -#: src/exiv2.cpp:291 -#, fuzzy -msgid " I : IPTC datasets\n" -msgstr " i : данные IPTC\n" - -#: src/exiv2.cpp:292 -#, fuzzy -msgid " X : XMP properties\n" -msgstr " x : ÑвойÑтва XMP\n" - -#: src/exiv2.cpp:293 -#, fuzzy -msgid " x : print a column with the tag number\n" -msgstr " x : вывеÑти Ñтолбец Ñо значениÑми Ñ‚Ñгов\n" - -#: src/exiv2.cpp:294 -msgid " g : group name\n" -msgstr " g : Ð¸Ð¼Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹\n" - -#: src/exiv2.cpp:295 -msgid " k : key\n" -msgstr " k : ключ\n" - -#: src/exiv2.cpp:296 -msgid " l : tag label\n" -msgstr " l : метка Ñ‚Ñга\n" - -#: src/exiv2.cpp:297 -msgid " n : tag name\n" -msgstr " n : Ð¸Ð¼Ñ Ñ‚Ñга\n" - -#: src/exiv2.cpp:298 -msgid " y : type\n" -msgstr " y : тип\n" - -#: src/exiv2.cpp:299 -msgid " c : number of components (count)\n" -msgstr " c : количеÑтво компонентов (count)\n" - -#: src/exiv2.cpp:300 -msgid " s : size in bytes\n" -msgstr " s : размер в байтах\n" - -#: src/exiv2.cpp:301 -msgid " v : plain data value\n" -msgstr " v : обычное значение данных\n" - -#: src/exiv2.cpp:302 -msgid " t : interpreted (translated) data\n" -msgstr " t : интерпретированные (переведенные) данные\n" - -#: src/exiv2.cpp:303 -msgid " h : hexdump of the data\n" -msgstr " h : шеÑтнадцатеричный дамп данных\n" - -#: src/exiv2.cpp:304 -msgid "" -" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" -msgstr " -d tgt УдалÑемые цели Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑ‚Ð²Ð¸Ñ 'delete'. Возможные цели:\n" - -#: src/exiv2.cpp:305 -msgid " a : all supported metadata (the default)\n" -msgstr " a : вÑе поддерживаемые метаданные (по умолчанию)\n" - -#: src/exiv2.cpp:306 -msgid " e : Exif section\n" -msgstr " e : раздел Exif\n" - -#: src/exiv2.cpp:307 -msgid " t : Exif thumbnail only\n" -msgstr " t : только Exif-ÑÑкиз\n" - -#: src/exiv2.cpp:308 -msgid " i : IPTC data\n" -msgstr " i : данные IPTC\n" - -#: src/exiv2.cpp:309 -msgid " x : XMP packet\n" -msgstr " x : пакет XMP\n" - -#: src/exiv2.cpp:311 -msgid "" -" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" -" the same as those for the -d option, plus a modifier:\n" -" X : Insert metadata from an XMP sidecar file .xmp\n" -" Only JPEG thumbnails can be inserted, they need to be named\n" -" -thumb.jpg\n" -msgstr "" -" -i tgt Ð’ÑтавлÑемые цели Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑ‚Ð²Ð¸Ñ 'insert'. Возможные цели\n" -" те же что и и Ð´Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° -d Ð¿Ð»ÑŽÑ Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€:\n" -" X : Ð’Ñтавить метаданные из ÑопутÑтвующего файла XMP <файл>.xmp\n" -" Можно вÑтавлÑÑ‚ÑŒ только ÑÑкизы в формате JPEG, и их Ð¸Ð¼Ñ Ð´Ð¾Ð»Ð¶Ð½Ð¾ " -"иметь вид\n" -" -thumb.jpg\n" - -#: src/exiv2.cpp:316 -#, fuzzy -msgid "" -" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" -" are the same as those for the -d option, plus a target to " -"extract\n" -" preview images and a modifier to generate an XMP sidecar file:\n" -" p[[, ...]] : Extract preview images.\n" -" X : Extract metadata to an XMP sidecar file .xmp\n" -msgstr "" -" -e tgt Извлекаемые цели Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑ‚Ð²Ð¸Ñ 'extract'. Возможные цели\n" -" те же, что и Ð´Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° -d Ð¿Ð»ÑŽÑ Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€:\n" -" X : Извлечь метаданные из ÑопутÑтвующего файла XMP <файл>.xmp\n" - -#: src/exiv2.cpp:321 -msgid "" -" -r fmt Filename format for the 'rename' action. The format string\n" -" follows strftime(3). The following keywords are supported:\n" -msgstr "" -" -r fmt Формат имени файла Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑ‚Ð²Ð¸Ñ 'rename'. Строка формата\n" -" Ñледует правилам из strftime(3). ПоддерживаютÑÑ Ñледующие " -"ключевые Ñлова:\n" - -#: src/exiv2.cpp:323 -msgid " :basename: - original filename without extension\n" -msgstr " :basename: - оригинальное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° без раÑширениÑ\n" - -#: src/exiv2.cpp:324 -msgid "" -" :dirname: - name of the directory holding the original file\n" -msgstr "" -" :dirname: - Ð¸Ð¼Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°, Ñодержащего оригинальный файл\n" - -#: src/exiv2.cpp:325 -msgid " :parentname: - name of parent directory\n" -msgstr " :parentname: - Ð¸Ð¼Ñ Ñ€Ð¾Ð´Ð¸Ñ‚ÐµÐ»ÑŒÑкого каталога\n" - -#: src/exiv2.cpp:326 -msgid " Default filename format is " -msgstr " Форматом файлов по умолчанию ÑвлÑетÑÑ " - -#: src/exiv2.cpp:328 -msgid " -c txt JPEG comment string to set in the image.\n" -msgstr "" - -#: src/exiv2.cpp:329 -msgid "" -" -m file Command file for the modify action. The format for commands is\n" -" set|add|del [[] ].\n" -msgstr "" - -#: src/exiv2.cpp:331 -msgid "" -" -M cmd Command line for the modify action. The format for the\n" -" commands is the same as that of the lines of a command file.\n" -msgstr "" - -#: src/exiv2.cpp:333 -msgid "" -" -l dir Location (directory) for files to be inserted from or extracted " -"to.\n" -msgstr "" -" -l каталог РаÑположение (каталог) вÑтавлÑемых или извлекаемых файлов.\n" - -#: src/exiv2.cpp:334 -msgid "" -" -S .suf Use suffix .suf for source files for insert command.\n" -"\n" -msgstr "" -" -S .suf ИÑпользовать ÑÑƒÑ„Ñ„Ð¸ÐºÑ .suf Ð´Ð»Ñ Ð¾Ñ€Ð¸Ð³Ð¸Ð½Ð°Ð»ÑŒÐ½Ñ‹Ñ… файлов Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ " -"insert.\n" -"\n" - -#: src/exiv2.cpp:371 src/exiv2.cpp:401 src/exiv2.cpp:436 src/exiv2.cpp:495 -#: src/exiv2.cpp:682 -msgid "Option" -msgstr "Параметр" - -#: src/exiv2.cpp:372 -msgid "requires an argument\n" -msgstr "требует аргумент\n" - -#: src/exiv2.cpp:376 -msgid "Unrecognized option" -msgstr "ÐеизвеÑтный ключ" - -#: src/exiv2.cpp:382 -msgid "getopt returned unexpected character code" -msgstr "" - -#: src/exiv2.cpp:402 -#, fuzzy -msgid "Invalid argument" -msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" - -#: src/exiv2.cpp:427 src/exiv2.cpp:480 -msgid "Ignoring surplus option" -msgstr "" - -#: src/exiv2.cpp:437 src/exiv2.cpp:497 src/exiv2.cpp:683 -msgid "is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:452 -msgid "Ignoring surplus option -a" -msgstr "" - -#: src/exiv2.cpp:458 -msgid "Error parsing -a option argument" -msgstr "" - -#: src/exiv2.cpp:465 -msgid "Option -a is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:487 -msgid "Error parsing" -msgstr "Ошибка при ÑинтакÑичеÑком разборе" - -#: src/exiv2.cpp:489 -#, fuzzy -msgid "option argument" -msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" - -#: src/exiv2.cpp:520 -msgid "Unrecognized print mode" -msgstr "" - -#: src/exiv2.cpp:528 -msgid "Ignoring surplus option -p" -msgstr "" - -#: src/exiv2.cpp:532 -msgid "Option -p is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:563 -msgid "Unrecognized print item" -msgstr "" - -#: src/exiv2.cpp:572 -msgid "Ignoring surplus option -P" -msgstr "" - -#: src/exiv2.cpp:576 -msgid "Option -P is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:603 -msgid "Option -d is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:631 -msgid "Option -e is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:659 -msgid "Option -i is not compatible with a previous option\n" -msgstr "" - -#: src/exiv2.cpp:700 -msgid "Action adjust is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:709 -msgid "Action print is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:718 -msgid "Action delete is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:729 -msgid "Action extract is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:740 -msgid "Action insert is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:749 -msgid "Action rename is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:758 -msgid "Action modify is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:767 -msgid "Action fixiso is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:776 -msgid "Action fixcom is not compatible with the given options\n" -msgstr "" - -#: src/exiv2.cpp:800 -msgid "An action must be specified\n" -msgstr "должно быть указано дейÑтвие\n" - -#: src/exiv2.cpp:809 -msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" -msgstr "" - -#: src/exiv2.cpp:815 -msgid "Modify action requires at least one -c, -m or -M option\n" -msgstr "" - -#: src/exiv2.cpp:819 -msgid "At least one file is required\n" -msgstr "нужно указать Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один файл\n" - -#: src/exiv2.cpp:825 -msgid "Error parsing -m option arguments\n" -msgstr "" - -#: src/exiv2.cpp:832 -msgid "Error parsing -M option arguments\n" -msgstr "" - -#: src/exiv2.cpp:843 -msgid "-l option can only be used with extract or insert actions\n" -msgstr "" - -#: src/exiv2.cpp:848 -msgid "-S option can only be used with insert action\n" -msgstr "" - -#: src/exiv2.cpp:853 -msgid "-t option can only be used with rename action\n" -msgstr "" - -#: src/exiv2.cpp:858 -msgid "-T option can only be used with rename action\n" -msgstr "" - -#: src/exiv2.cpp:938 -msgid "Unrecognized " -msgstr "" - -#: src/exiv2.cpp:939 -msgid "target" -msgstr "" - -#: src/exiv2.cpp:965 -#, fuzzy -msgid "Invalid preview number" -msgstr "Серийный номер" - -#: src/exiv2.cpp:997 -msgid "Failed to open command file for reading\n" -msgstr "" - -#: src/exiv2.cpp:1010 -msgid "line" -msgstr "Ñтрока" - -#: src/exiv2.cpp:1033 -msgid "-M option" -msgstr "" - -#: src/exiv2.cpp:1054 src/exiv2.cpp:1113 src/exiv2.cpp:1125 -msgid "Invalid command line" -msgstr "" - -#: src/exiv2.cpp:1061 -msgid "Invalid command" -msgstr "" - -#: src/exiv2.cpp:1093 -msgid "Invalid key" -msgstr "" - -#: src/fujimn.cpp:62 -#, fuzzy -msgid "Soft mode 1" -msgstr "Режим замера" - -#: src/fujimn.cpp:63 -#, fuzzy -msgid "Soft mode 2" -msgstr "Режим замера" - -#: src/fujimn.cpp:65 -#, fuzzy -msgid "Hard mode 1" -msgstr "Режим макроÑъёмки" - -#: src/fujimn.cpp:66 -#, fuzzy -msgid "Hard mode 2" -msgstr "Режим макроÑъёмки" - -#: src/fujimn.cpp:72 src/minoltamn.cpp:219 src/minoltamn.cpp:683 -#: src/minoltamn.cpp:869 src/minoltamn.cpp:1193 src/minoltamn.cpp:2094 -#: src/nikonmn.cpp:447 src/panasonicmn.cpp:65 src/pentaxmn.cpp:312 -#: src/sonymn.cpp:165 src/tags.cpp:1428 -msgid "Daylight" -msgstr "Дневной Ñвет" - -#: src/fujimn.cpp:74 -msgid "Fluorescent (daylight)" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° (дневной Ñвет)" - -#: src/fujimn.cpp:75 -msgid "Fluorescent (warm white)" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° (тёплый белый)" - -#: src/fujimn.cpp:76 -msgid "Fluorescent (cool white)" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° (прохладный белый)" - -#: src/fujimn.cpp:77 src/nikonmn.cpp:448 src/sonymn.cpp:170 -#, fuzzy -msgid "Incandescent" -msgstr "Ð¯Ñ€ÐºÐ°Ñ Ð»Ð°Ð¼Ð¿Ð° накаливаниÑ" - -#: src/fujimn.cpp:87 src/fujimn.cpp:88 -#, fuzzy -msgid "None (black & white)" -msgstr "Чёрно-белый" - -#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 -msgid "Red-eye reduction" -msgstr "Подавление Ñффекта краÑных глаз" - -#: src/fujimn.cpp:119 src/tags.cpp:1504 src/tags.cpp:1505 -msgid "Night scene" -msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" - -#: src/fujimn.cpp:120 src/pentaxmn.cpp:496 src/pentaxmn.cpp:503 -#: src/sonymn.cpp:518 -#, fuzzy -msgid "Program AE" -msgstr "Программа ÑкÑпозиции" - -#: src/fujimn.cpp:121 -msgid "Natural light" -msgstr "ЕÑтеÑтвенный Ñвет" - -#: src/fujimn.cpp:122 -msgid "Anti-blur" -msgstr "Ðнтиразмывание" - -#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 -#: src/minoltamn.cpp:1888 src/minoltamn.cpp:2037 src/olympusmn.cpp:108 -#: src/panasonicmn.cpp:130 src/pentaxmn.cpp:481 src/sonymn.cpp:479 -#: src/sonymn.cpp:525 -msgid "Sunset" -msgstr "Закат" - -#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:485 -msgid "Museum" -msgstr "Музей" - -#: src/fujimn.cpp:125 src/panasonicmn.cpp:117 -msgid "Party" -msgstr "Вечеринка" - -#: src/fujimn.cpp:126 -msgid "Flower" -msgstr "Цветок" - -#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 -#: src/minoltamn.cpp:2035 src/pentaxmn.cpp:480 -msgid "Text" -msgstr "ТекÑÑ‚" - -#: src/fujimn.cpp:128 -#, fuzzy -msgid "Natural light & flash" -msgstr "ЕÑтеÑтвенный Ñвет" - -#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:519 -msgid "Aperture-priority AE" -msgstr "Замер Ñ Ð¿Ñ€Ð¸Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð¾Ð¼ диафрагмы" - -#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:520 -msgid "Shutter speed priority AE" -msgstr "Замер Ñ Ð¿Ñ€Ð¸Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð¾Ð¼ выдержки" - -#: src/fujimn.cpp:142 -#, fuzzy -msgid "No flash & flash" -msgstr "Без вÑпышки" - -#: src/fujimn.cpp:148 -#, fuzzy -msgid "Chrome" -msgstr "Монохромный" - -#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 -#: src/minoltamn.cpp:1936 src/panasonicmn.cpp:211 -#, fuzzy -msgid "Wide" -msgstr "Цвет" - -#: src/fujimn.cpp:160 -#, fuzzy -msgid "F0/Standard" -msgstr "Стандартный Ñвет A" - -#: src/fujimn.cpp:161 -msgid "F1/Studio portrait" -msgstr "F1/Студийный портрет" - -#: src/fujimn.cpp:162 -msgid "F2/Fujichrome" -msgstr "F2/Fujichrome" - -#: src/fujimn.cpp:163 -#, fuzzy -msgid "F3/Studio portrait Ex" -msgstr "F1/Студийный портрет" - -#: src/fujimn.cpp:164 -msgid "F4/Velvia" -msgstr "F4/Velvia" - -#: src/fujimn.cpp:169 -msgid "Auto (100-400%)" -msgstr "Ðвто (100-400%)" - -#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 -#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2056 -#: src/olympusmn.cpp:74 src/panasonicmn.cpp:58 -msgid "Raw" -msgstr "Raw" - -#: src/fujimn.cpp:171 -#, fuzzy -msgid "Standard (100%)" -msgstr "Стандартный Ñвет A" - -#: src/fujimn.cpp:172 -msgid "Wide mode 1 (230%)" -msgstr "" - -#: src/fujimn.cpp:173 -msgid "Wide mode 2 (400%)" -msgstr "" - -#: src/fujimn.cpp:174 -#, fuzzy -msgid "Film simulation mode" -msgstr "Разрешение по X" - -#: src/fujimn.cpp:179 src/nikonmn.cpp:213 src/nikonmn.cpp:524 -#: src/nikonmn.cpp:646 src/nikonmn.cpp:691 src/nikonmn.cpp:843 -#: src/nikonmn.cpp:867 src/nikonmn.cpp:888 src/nikonmn.cpp:1001 -#: src/nikonmn.cpp:1023 src/nikonmn.cpp:1043 src/nikonmn.cpp:1063 -#: src/nikonmn.cpp:1076 src/nikonmn.cpp:1135 src/nikonmn.cpp:1195 -#: src/nikonmn.cpp:1225 src/nikonmn.cpp:1245 src/nikonmn.cpp:1258 -#: src/nikonmn.cpp:1271 src/nikonmn.cpp:1284 src/nikonmn.cpp:1297 -#: src/nikonmn.cpp:1310 src/nikonmn.cpp:1323 src/nikonmn.cpp:1342 -#: src/nikonmn.cpp:1367 src/panasonicmn.cpp:335 src/pentaxmn.cpp:865 -#: src/properties.cpp:470 -msgid "Version" -msgstr "ВерÑиÑ" - -#: src/fujimn.cpp:180 -msgid "Fujifilm Makernote version" -msgstr "ВерÑÐ¸Ñ Fujifilm Makernote" - -#: src/fujimn.cpp:183 src/panasonicmn.cpp:250 -msgid "" -"This number is unique, and contains the date of manufacture, but is not the " -"same as the number printed on the camera body." -msgstr "" - -#: src/fujimn.cpp:187 src/nikonmn.cpp:223 src/nikonmn.cpp:460 -#: src/nikonmn.cpp:527 src/olympusmn.cpp:199 -#, fuzzy -msgid "Image quality setting" -msgstr "ОпиÑание Ñнимка" - -#: src/fujimn.cpp:195 src/nikonmn.cpp:422 -msgid "Color" -msgstr "Цвет" - -#: src/fujimn.cpp:196 -#, fuzzy -msgid "Chroma saturation setting" -msgstr "ÐаÑтройка контраÑта" - -#: src/fujimn.cpp:198 -#, fuzzy -msgid "Tone" -msgstr "Ðичего" - -#: src/fujimn.cpp:202 -#, fuzzy -msgid "Flash firing mode setting" -msgstr "Ð’Ñпышка Ñработала" - -#: src/fujimn.cpp:204 -#, fuzzy -msgid "Flash Strength" -msgstr "ФокуÑное раÑÑтоÑние" - -#: src/fujimn.cpp:205 -#, fuzzy -msgid "Flash firing strength compensation setting" -msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" - -#: src/fujimn.cpp:208 -#, fuzzy -msgid "Macro mode setting" -msgstr "Режим макроÑъёмки" - -#: src/fujimn.cpp:211 -#, fuzzy -msgid "Focusing mode setting" -msgstr "СпоÑоб фокуÑировки" - -#: src/fujimn.cpp:216 -msgid "Slow Sync" -msgstr "ÐœÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ ÑинхронизациÑ" - -#: src/fujimn.cpp:217 -#, fuzzy -msgid "Slow synchro mode setting" -msgstr "Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ ÑинхронизациÑ" - -#: src/fujimn.cpp:219 src/olympusmn.cpp:690 src/olympusmn.cpp:891 -#, fuzzy -msgid "Picture Mode" -msgstr "Портретный режим" - -#: src/fujimn.cpp:220 -#, fuzzy -msgid "Picture mode setting" -msgstr "Портретный режим" - -#: src/fujimn.cpp:226 -msgid "Continuous shooting or auto bracketing setting" -msgstr "" - -#: src/fujimn.cpp:228 src/panasonicmn.cpp:256 src/sonymn.cpp:414 -#, fuzzy -msgid "Sequence Number" -msgstr "Ðомер поÑледовательноÑти" - -#: src/fujimn.cpp:229 src/olympusmn.cpp:1158 src/panasonicmn.cpp:256 -msgid "Sequence number" -msgstr "Ðомер поÑледовательноÑти" - -#: src/fujimn.cpp:234 -#, fuzzy -msgid "FinePix Color" -msgstr "Цвет" - -#: src/fujimn.cpp:235 -msgid "Fuji FinePix color setting" -msgstr "" - -#: src/fujimn.cpp:237 -#, fuzzy -msgid "Blur Warning" -msgstr "Предупреждение" - -#: src/fujimn.cpp:238 -#, fuzzy -msgid "Blur warning status" -msgstr "ÐвтоÑкÑпозициÑ" - -#: src/fujimn.cpp:240 -#, fuzzy -msgid "Focus Warning" -msgstr "СпоÑоб фокуÑировки" - -#: src/fujimn.cpp:241 -#, fuzzy -msgid "Auto Focus warning status" -msgstr "ÐвтоÑкÑпозициÑ" - -#: src/fujimn.cpp:243 -#, fuzzy -msgid "Exposure Warning" -msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" - -#: src/fujimn.cpp:244 -#, fuzzy -msgid "Auto exposure warning status" -msgstr "ÐвтоÑкÑпозициÑ" - -#: src/fujimn.cpp:246 -msgid "Dynamic Range" -msgstr "ДинамичеÑкий диапазон" - -#: src/fujimn.cpp:247 -msgid "Dynamic range" -msgstr "ДинамичеÑкий диапазон" - -#: src/fujimn.cpp:249 src/panasonicmn.cpp:273 -#, fuzzy -msgid "Film Mode" -msgstr "Режим вÑпышки" - -#: src/fujimn.cpp:250 src/panasonicmn.cpp:273 -#, fuzzy -msgid "Film mode" -msgstr "Режим вÑпышки" - -#: src/fujimn.cpp:252 -#, fuzzy -msgid "Dynamic Range Setting" -msgstr "ÐаÑтройка баланÑа белого" - -#: src/fujimn.cpp:253 -#, fuzzy -msgid "Dynamic range settings" -msgstr "ÐаÑтройка баланÑа белого" - -#: src/fujimn.cpp:255 -#, fuzzy -msgid "Development Dynamic Range" -msgstr "ДинамичеÑкий диапазон" - -#: src/fujimn.cpp:256 -#, fuzzy -msgid "Development dynamic range" -msgstr "ДинамичеÑкий диапазон" - -#: src/fujimn.cpp:258 -#, fuzzy -msgid "Minimum Focal Length" -msgstr "ФокуÑное раÑÑтоÑние" - -#: src/fujimn.cpp:259 -#, fuzzy -msgid "Minimum focal length" -msgstr "ФокуÑное раÑÑтоÑние" - -#: src/fujimn.cpp:261 -#, fuzzy -msgid "Maximum Focal Length" -msgstr "ФокуÑное раÑÑтоÑние" - -#: src/fujimn.cpp:262 -msgid "Maximum focal length" -msgstr "МакÑимальное фокуÑное раÑÑтоÑние" - -#: src/fujimn.cpp:264 -#, fuzzy -msgid "Maximum Aperture at Mininimum Focal" -msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" - -#: src/fujimn.cpp:265 -#, fuzzy -msgid "Maximum aperture at mininimum focal" -msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" - -#: src/fujimn.cpp:267 -#, fuzzy -msgid "Maximum Aperture at Maxinimum Focal" -msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" - -#: src/fujimn.cpp:268 -#, fuzzy -msgid "Maximum aperture at maxinimum focal" -msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" - -#: src/fujimn.cpp:270 src/properties.cpp:577 src/tags.cpp:1759 -msgid "File Source" -msgstr "ИÑточник файла" - -#: src/fujimn.cpp:271 -#, fuzzy -msgid "File source" -msgstr "ИÑточник файла" - -#: src/fujimn.cpp:273 -msgid "Order Number" -msgstr "Ðомер заказа" - -#: src/fujimn.cpp:274 -msgid "Order number" -msgstr "Ðомер заказа" - -#: src/fujimn.cpp:276 -#, fuzzy -msgid "Frame Number" -msgstr "ЧиÑло F" - -#: src/fujimn.cpp:277 src/pentaxmn.cpp:977 src/pentaxmn.cpp:978 -#, fuzzy -msgid "Frame number" -msgstr "Ðомер изображениÑ" - -#: src/fujimn.cpp:281 -#, fuzzy -msgid "Unknown FujiMakerNote tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг CanonMakerNote" - -#: src/minoltamn.cpp:56 -msgid "Natural Color" -msgstr "ЕÑтеÑтвенный цвет" - -#: src/minoltamn.cpp:58 src/minoltamn.cpp:1885 -#, fuzzy -msgid "Vivid Color" -msgstr "Цвет" - -#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 -#, fuzzy -msgid "Solarization" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/minoltamn.cpp:60 src/minoltamn.cpp:1891 -msgid "AdobeRGB" -msgstr "Adobe RGB" - -#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:611 -#: src/olympusmn.cpp:853 src/panasonicmn.cpp:198 src/pentaxmn.cpp:702 -#, fuzzy -msgid "Natural" -msgstr "внешнÑÑ" - -#: src/minoltamn.cpp:64 -#, fuzzy -msgid "Natural sRGB" -msgstr "внешнÑÑ" - -#: src/minoltamn.cpp:65 -#, fuzzy -msgid "Natural+ sRGB" -msgstr "внешнÑÑ" - -#: src/minoltamn.cpp:67 -msgid "Evening" -msgstr "Вечер" - -#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2040 -#: src/sonymn.cpp:526 -msgid "Night Portrait" -msgstr "Ðочной портрет" - -#: src/minoltamn.cpp:75 src/minoltamn.cpp:2057 -#, fuzzy -msgid "Super Fine" -msgstr "SXGA Fine" - -#: src/minoltamn.cpp:79 src/minoltamn.cpp:2003 src/minoltamn.cpp:2061 -#, fuzzy -msgid "Extra Fine" -msgstr "SXGA Fine" - -#: src/minoltamn.cpp:90 -#, fuzzy -msgid "Makernote Version" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/minoltamn.cpp:91 -msgid "String 'MLT0' (not null terminated)" -msgstr "" - -#: src/minoltamn.cpp:93 -#, fuzzy -msgid "Camera Settings (Std Old)" -msgstr "ÐаÑтройка контраÑта" - -#: src/minoltamn.cpp:94 -msgid "" -"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" -msgstr "" - -#: src/minoltamn.cpp:96 -#, fuzzy -msgid "Camera Settings (Std New)" -msgstr "ÐаÑтройка контраÑта" - -#: src/minoltamn.cpp:97 -msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" -msgstr "" - -#: src/minoltamn.cpp:99 -#, fuzzy -msgid "Camera Settings (7D)" -msgstr "ÐаÑтройка контраÑта" - -#: src/minoltamn.cpp:100 -#, fuzzy -msgid "Camera Settings (for Dynax 7D model)" -msgstr "ÐаÑтройка контраÑта" - -#: src/minoltamn.cpp:102 -#, fuzzy -msgid "Image Stabilization Data" -msgstr "ОпиÑание Ñнимка" - -#: src/minoltamn.cpp:103 -#, fuzzy -msgid "Image stabilization data" -msgstr "ОпиÑание Ñнимка" - -#: src/minoltamn.cpp:107 -msgid "WB Info A100" -msgstr "" - -#: src/minoltamn.cpp:108 -msgid "White balance information for the Sony DSLR-A100" -msgstr "" - -#: src/minoltamn.cpp:111 -#, fuzzy -msgid "Compressed Image Size" -msgstr "Сжатых битов на пикÑел" - -#: src/minoltamn.cpp:112 -#, fuzzy -msgid "Compressed image size" -msgstr "Сжатых битов на пикÑел" - -#: src/minoltamn.cpp:115 -msgid "Jpeg thumbnail 640x480 pixels" -msgstr "" - -#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 -#, fuzzy -msgid "Thumbnail Offset" -msgstr "ЭÑкизы" - -#: src/minoltamn.cpp:118 -msgid "Offset of the thumbnail" -msgstr "" - -#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 -#, fuzzy -msgid "Thumbnail Length" -msgstr "Длина изображениÑ" - -#: src/minoltamn.cpp:121 -#, fuzzy -msgid "Size of the thumbnail" -msgstr "ÑÑкиз" - -#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:573 -#: src/olympusmn.cpp:252 src/olympusmn.cpp:684 src/panasonicmn.cpp:282 -#: src/sonymn.cpp:363 src/sonymn.cpp:364 -#, fuzzy -msgid "Scene Mode" -msgstr "Тип Ñцены" - -#: src/minoltamn.cpp:128 src/minoltamn.cpp:1406 src/nikonmn.cpp:219 -#: src/nikonmn.cpp:462 src/nikonmn.cpp:526 src/panasonicmn.cpp:263 -#: src/sonymn.cpp:381 src/sonymn.cpp:382 -#, fuzzy -msgid "Color Mode" -msgstr "Цветовое проÑтранÑтво" - -#: src/minoltamn.cpp:129 src/minoltamn.cpp:1407 src/nikonmn.cpp:220 -#: src/nikonmn.cpp:463 src/nikonmn.cpp:526 src/panasonicmn.cpp:263 -#, fuzzy -msgid "Color mode" -msgstr "Цветовое проÑтранÑтво" - -#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 -#: src/minoltamn.cpp:990 src/panasonicmn.cpp:236 src/sonymn.cpp:274 -#, fuzzy -msgid "Image Quality" -msgstr "КачеÑтво" - -#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 -msgid "0x0103" -msgstr "" - -#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:671 -#: src/sonymn.cpp:277 -#, fuzzy -msgid "Flash Exposure Compensation" -msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" - -#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:278 -#, fuzzy -msgid "Flash exposure compensation in EV" -msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" - -#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:280 -#: src/sonymn.cpp:281 -#, fuzzy -msgid "Teleconverter Model" -msgstr "Тип Ñцены" - -#: src/minoltamn.cpp:150 -msgid "RAW+JPG Recording" -msgstr "" - -#: src/minoltamn.cpp:151 -msgid "RAW and JPG files recording" -msgstr "" - -#: src/minoltamn.cpp:153 src/sonymn.cpp:366 src/sonymn.cpp:367 -#, fuzzy -msgid "Zone Matching" -msgstr "Подавление шума" - -#: src/minoltamn.cpp:154 -#, fuzzy -msgid "Zone matching" -msgstr "Подавление шума" - -#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1039 -#: src/minoltamn.cpp:1476 src/minoltamn.cpp:1578 -msgid "Color temperature" -msgstr "Температура цвета" - -#: src/minoltamn.cpp:159 src/sonymn.cpp:375 -msgid "Lens ID" -msgstr "ID объектива" - -#: src/minoltamn.cpp:160 src/sonymn.cpp:376 -#, fuzzy -msgid "Lens identifier" -msgstr "Идентификатор ARM" - -#: src/minoltamn.cpp:162 src/minoltamn.cpp:1478 src/minoltamn.cpp:1580 -#: src/sonymn.cpp:360 -#, fuzzy -msgid "Color Compensation Filter" -msgstr "ТонкомпенÑациÑ" - -#: src/minoltamn.cpp:163 src/sonymn.cpp:361 -msgid "Color Compensation Filter: negative is green, positive is magenta" -msgstr "" - -#: src/minoltamn.cpp:165 src/minoltamn.cpp:1472 src/sonymn.cpp:283 -#: src/sonymn.cpp:563 src/sonymn.cpp:564 -#, fuzzy -msgid "White Balance Fine Tune" -msgstr "Таблица баланÑа белого" - -#: src/minoltamn.cpp:166 src/sonymn.cpp:284 -#, fuzzy -msgid "White Balance Fine Tune Value" -msgstr "Таблица баланÑа белого" - -#: src/minoltamn.cpp:168 -#, fuzzy -msgid "Image Stabilization A100" -msgstr "Ð¡Ñ‚Ð°Ð±Ð¸Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñнимка" - -#: src/minoltamn.cpp:169 -#, fuzzy -msgid "Image Stabilization for the Sony DSLR-A100" -msgstr "ОпиÑание Ñнимка" - -#: src/minoltamn.cpp:173 -#, fuzzy -msgid "Camera Settings (5D)" -msgstr "ÐаÑтройка контраÑта" - -#: src/minoltamn.cpp:174 -#, fuzzy -msgid "Camera Settings (for Dynax 5D model)" -msgstr "ÐаÑтройка контраÑта" - -#: src/minoltamn.cpp:180 src/nikonmn.cpp:607 src/olympusmn.cpp:258 -#: src/panasonicmn.cpp:279 src/sonymn.cpp:295 -msgid "Print IM" -msgstr "" - -#: src/minoltamn.cpp:181 src/nikonmn.cpp:607 src/olympusmn.cpp:259 -#: src/panasonicmn.cpp:279 src/sonymn.cpp:296 -#, fuzzy -msgid "PrintIM information" -msgstr "ОриентациÑ" - -#: src/minoltamn.cpp:183 -#, fuzzy -msgid "Camera Settings (Z1)" -msgstr "ÐаÑтройка контраÑта" - -#: src/minoltamn.cpp:184 -msgid "Camera Settings (for Z1, DImage X, and F100 models)" -msgstr "" - -#: src/minoltamn.cpp:188 -#, fuzzy -msgid "Unknown Minolta MakerNote tag" -msgstr "ÐеизвеÑтный тег PentaxMakerNote" - -#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 -#: src/panasonicmn.cpp:107 src/sigmamn.cpp:155 src/sonymn.cpp:111 -#: src/tags.cpp:1404 -msgid "Aperture priority" -msgstr "Приоритет диафрагмы" - -#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 -#: src/sigmamn.cpp:156 src/sonymn.cpp:112 src/tags.cpp:1405 -msgid "Shutter priority" -msgstr "Приоритет выдержки" - -#: src/minoltamn.cpp:209 src/minoltamn.cpp:1122 -msgid "Fill flash" -msgstr "ЗаполнÑÑŽÑ‰Ð°Ñ Ð²Ñпышка" - -#: src/minoltamn.cpp:211 src/minoltamn.cpp:1120 -#, fuzzy -msgid "Rear flash sync" -msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" - -#: src/minoltamn.cpp:212 src/minoltamn.cpp:1121 -#, fuzzy -msgid "Wireless" -msgstr "Файл" - -#: src/minoltamn.cpp:224 -#, fuzzy -msgid "Fluorescent 2" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/minoltamn.cpp:231 -#, fuzzy -msgid "Full size" -msgstr "Полный" - -#: src/minoltamn.cpp:243 -#, fuzzy -msgid "Super fine" -msgstr "SXGA Fine" - -#: src/minoltamn.cpp:247 -msgid "Extra fine" -msgstr "" - -#: src/minoltamn.cpp:252 src/minoltamn.cpp:1099 src/minoltamn.cpp:1148 -#: src/sonymn.cpp:447 -#, fuzzy -msgid "Single Frame" -msgstr "Серийный номер" - -#: src/minoltamn.cpp:254 src/minoltamn.cpp:1150 -#, fuzzy -msgid "Self-timer" -msgstr "Серийный номер" - -#: src/minoltamn.cpp:255 -msgid "Bracketing" -msgstr "Брекетинг" - -#: src/minoltamn.cpp:256 -msgid "Interval" -msgstr "Интервал" - -#: src/minoltamn.cpp:257 -#, fuzzy -msgid "UHS continuous" -msgstr "Продолжительный ведущий режим" - -#: src/minoltamn.cpp:258 -#, fuzzy -msgid "HS continuous" -msgstr "Продолжительный ведущий режим" - -#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1127 -#: src/sonymn.cpp:468 src/tags.cpp:1419 -msgid "Multi-segment" -msgstr "" - -#: src/minoltamn.cpp:264 src/minoltamn.cpp:1128 src/sonymn.cpp:469 -#: src/tags.cpp:1416 -#, fuzzy -msgid "Center weighted average" -msgstr "Центрально-взвешенный Ñредний" - -#: src/minoltamn.cpp:271 -msgid "Electronic magnification" -msgstr "" - -#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:1951 -#: src/nikonmn.cpp:100 src/nikonmn.cpp:793 src/nikonmn.cpp:808 -#: src/pentaxmn.cpp:216 -#, fuzzy -msgid "Top" -msgstr "в" - -#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:234 -#, fuzzy -msgid "Top-right" -msgstr "ÐвторÑкие и Ñмежные права" - -#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:240 -#, fuzzy -msgid "Bottom-right" -msgstr "Ñлева направо" - -#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:1955 -#: src/nikonmn.cpp:101 src/nikonmn.cpp:794 src/nikonmn.cpp:809 -#: src/pentaxmn.cpp:224 -#, fuzzy -msgid "Bottom" -msgstr "Ñнизу вверх" - -#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:238 -#, fuzzy -msgid "Bottom-left" -msgstr "Ñправа налево" - -#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:232 -#, fuzzy -msgid "Top-left" -msgstr "Ñправа налево" - -#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:368 -#: src/tags.cpp:1521 -#, fuzzy -msgid "Hard" -msgstr "Ð’Ñ‹Ñокий" - -#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:366 -#: src/tags.cpp:1520 -#, fuzzy -msgid "Soft" -msgstr "Спорт" - -#: src/minoltamn.cpp:313 src/panasonicmn.cpp:105 -#, fuzzy -msgid "Night portrait" -msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" - -#: src/minoltamn.cpp:315 -#, fuzzy -msgid "Sports action" -msgstr "Спорт" - -#: src/minoltamn.cpp:344 -msgid "Time-lapse movie" -msgstr "" - -#: src/minoltamn.cpp:349 -#, fuzzy -msgid "Standard form" -msgstr "Стандартный Ñвет A" - -#: src/minoltamn.cpp:350 -#, fuzzy -msgid "Data form" -msgstr "Стандартный Ñвет A" - -#: src/minoltamn.cpp:355 -#, fuzzy -msgid "Natural color" -msgstr "ЕÑтеÑтвенный цвет" - -#: src/minoltamn.cpp:356 src/panasonicmn.cpp:70 src/panasonicmn.cpp:148 -#, fuzzy -msgid "Black and white" -msgstr "Чёрно-белый" - -#: src/minoltamn.cpp:357 -#, fuzzy -msgid "Vivid color" -msgstr "Цвет" - -#: src/minoltamn.cpp:364 -#, fuzzy -msgid "No zone" -msgstr "Ðичего" - -#: src/minoltamn.cpp:365 -msgid "Center zone (horizontal orientation)" -msgstr "" - -#: src/minoltamn.cpp:366 -msgid "Center zone (vertical orientation)" -msgstr "" - -#: src/minoltamn.cpp:367 -#, fuzzy -msgid "Left zone" -msgstr "ЛеваÑ" - -#: src/minoltamn.cpp:368 -#, fuzzy -msgid "Right zone" -msgstr "Ñправа налево" - -#: src/minoltamn.cpp:373 src/olympusmn.cpp:999 -#, fuzzy -msgid "Auto focus" -msgstr "AI Focus" - -#: src/minoltamn.cpp:379 -#, fuzzy -msgid "Wide focus (normal)" -msgstr "СпоÑоб фокуÑировки" - -#: src/minoltamn.cpp:380 -#, fuzzy -msgid "Spot focus" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" - -#: src/minoltamn.cpp:385 src/properties.cpp:452 src/sigmamn.cpp:86 -#: src/sigmamn.cpp:87 -#, fuzzy -msgid "Exposure" -msgstr "Режим ÑкÑпозиции" - -#: src/minoltamn.cpp:388 -#, fuzzy -msgid "Filter" -msgstr "ПорÑдок заполнениÑ" - -#: src/minoltamn.cpp:393 -#, fuzzy -msgid "Not embedded" -msgstr "Ðе определено" - -#: src/minoltamn.cpp:394 -#, fuzzy -msgid "Embedded" -msgstr "Ðе определено" - -#: src/minoltamn.cpp:403 -msgid "Text + ID#" -msgstr "" - -#: src/minoltamn.cpp:408 -msgid "ADI (Advanced Distance Integration)" -msgstr "" - -#: src/minoltamn.cpp:409 -msgid "Pre-flash TTl" -msgstr "" - -#: src/minoltamn.cpp:410 -#, fuzzy -msgid "Manual flash control" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ ÑкÑпозициÑ" - -#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:984 -#: src/minoltamn.cpp:1352 src/olympusmn.cpp:659 src/properties.cpp:581 -#: src/sigmamn.cpp:74 src/sonymn.cpp:393 src/sonymn.cpp:394 src/tags.cpp:1780 -msgid "Exposure Mode" -msgstr "Режим ÑкÑпозиции" - -#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 -#: src/olympusmn.cpp:670 src/pentaxmn.cpp:896 -msgid "Flash mode" -msgstr "Режим вÑпышки" - -#: src/minoltamn.cpp:506 src/minoltamn.cpp:1428 src/olympusmn.cpp:700 -#: src/pentaxmn.cpp:991 src/pentaxmn.cpp:992 src/sigmamn.cpp:60 -#, fuzzy -msgid "Drive mode" -msgstr "Режим замера" - -#: src/minoltamn.cpp:512 -#, fuzzy -msgid "ISO Value" -msgstr "ЧувÑтвительноÑÑ‚ÑŒ (ISO)" - -#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1023 -#: src/minoltamn.cpp:1367 src/properties.cpp:548 src/tags.cpp:782 -#: src/tags.cpp:1542 -msgid "Exposure Time" -msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" - -#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1026 -#: src/minoltamn.cpp:1370 src/minoltamn.cpp:1371 src/tags.cpp:783 -#: src/tags.cpp:1545 -msgid "FNumber" -msgstr "ЧиÑло F" - -#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1027 -#, fuzzy -msgid "The F-Number" -msgstr "ЧиÑло F" - -#: src/minoltamn.cpp:520 src/olympusmn.cpp:663 -#, fuzzy -msgid "Macro Mode" -msgstr "Режим макроÑъёмки" - -#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1044 -#, fuzzy -msgid "Exposure Compensation" -msgstr "ТонкомпенÑациÑ" - -#: src/minoltamn.cpp:529 -#, fuzzy -msgid "Bracket Step" -msgstr "Брекетинг" - -#: src/minoltamn.cpp:530 -#, fuzzy -msgid "Bracket step" -msgstr "Брекетинг" - -#: src/minoltamn.cpp:532 -#, fuzzy -msgid "Interval Length" -msgstr "Длина изображениÑ" - -#: src/minoltamn.cpp:533 -#, fuzzy -msgid "Interval length" -msgstr "ФокуÑное раÑÑтоÑние" - -#: src/minoltamn.cpp:535 -#, fuzzy -msgid "Interval Number" -msgstr "Серийный номер" - -#: src/minoltamn.cpp:536 -#, fuzzy -msgid "Interval number" -msgstr "Серийный номер" - -#: src/minoltamn.cpp:541 src/nikonmn.cpp:252 src/nikonmn.cpp:564 -#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1371 src/olympusmn.cpp:303 -#: src/olympusmn.cpp:1007 -#, fuzzy -msgid "Focus Distance" -msgstr "РаÑÑтоÑние ручного фокуÑа" - -#: src/minoltamn.cpp:542 src/nikonmn.cpp:1346 src/nikonmn.cpp:1371 -#: src/olympusmn.cpp:1007 -#, fuzzy -msgid "Focus distance" -msgstr "РаÑÑтоÑние ручного фокуÑа" - -#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1002 -#, fuzzy -msgid "Flash Fired" -msgstr "Ð’Ñпышка Ñработала" - -#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1003 -#, fuzzy -msgid "Flash fired" -msgstr "Без вÑпышки" - -#: src/minoltamn.cpp:547 -#, fuzzy -msgid "Minolta Date" -msgstr "Режим замера" - -#: src/minoltamn.cpp:548 -#, fuzzy -msgid "Minolta date" -msgstr "Режим замера" - -#: src/minoltamn.cpp:550 -#, fuzzy -msgid "Minolta Time" -msgstr "Режим замера" - -#: src/minoltamn.cpp:551 -#, fuzzy -msgid "Minolta time" -msgstr "Режим замера" - -#: src/minoltamn.cpp:556 -#, fuzzy -msgid "File Number Memory" -msgstr "ЧиÑло F" - -#: src/minoltamn.cpp:557 -#, fuzzy -msgid "File number memory" -msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" - -#: src/minoltamn.cpp:559 -#, fuzzy -msgid "Last Image Number" -msgstr "Ðомер изображениÑ" - -#: src/minoltamn.cpp:560 -#, fuzzy -msgid "Last image number" -msgstr "Ðомер Ñнимка" - -#: src/minoltamn.cpp:562 -#, fuzzy -msgid "Color Balance Red" -msgstr "Цветовое проÑтранÑтво" - -#: src/minoltamn.cpp:563 -#, fuzzy -msgid "Color balance red" -msgstr "Цветовое проÑтранÑтво" - -#: src/minoltamn.cpp:565 -#, fuzzy -msgid "Color Balance Green" -msgstr "Цветовое проÑтранÑтво" - -#: src/minoltamn.cpp:566 -#, fuzzy -msgid "Color balance green" -msgstr "Цветовое проÑтранÑтво" - -#: src/minoltamn.cpp:568 -#, fuzzy -msgid "Color Balance Blue" -msgstr "Цветовое проÑтранÑтво" - -#: src/minoltamn.cpp:569 -#, fuzzy -msgid "Color balance blue" -msgstr "Цветовое проÑтранÑтво" - -#: src/minoltamn.cpp:580 -#, fuzzy -msgid "Subject Program" -msgstr "ОблаÑÑ‚ÑŒ объекта Ñъёмки" - -#: src/minoltamn.cpp:581 -#, fuzzy -msgid "Subject program" -msgstr "ОблаÑÑ‚ÑŒ объекта Ñъёмки" - -#: src/minoltamn.cpp:586 src/nikonmn.cpp:542 -#, fuzzy -msgid "ISO Settings" -msgstr "ÐаÑтройка резкоÑти" - -#: src/minoltamn.cpp:587 src/minoltamn.cpp:1398 src/nikonmn.cpp:542 -#, fuzzy -msgid "ISO setting" -msgstr "ÐаÑтройка резкоÑти" - -#: src/minoltamn.cpp:589 -#, fuzzy -msgid "Minolta Model" -msgstr "Режим замера" - -#: src/minoltamn.cpp:590 -#, fuzzy -msgid "Minolta model" -msgstr "Режим замера" - -#: src/minoltamn.cpp:592 -#, fuzzy -msgid "Interval Mode" -msgstr "Intel" - -#: src/minoltamn.cpp:593 -#, fuzzy -msgid "Interval mode" -msgstr "Intel" - -#: src/minoltamn.cpp:595 -#, fuzzy -msgid "Folder Name" -msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" - -#: src/minoltamn.cpp:596 -#, fuzzy -msgid "Folder name" -msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" - -#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 -#, fuzzy -msgid "ColorMode" -msgstr "Цвет" - -#: src/minoltamn.cpp:601 src/minoltamn.cpp:1204 src/pentaxmn.cpp:462 -#, fuzzy -msgid "Color Filter" -msgstr "Цветовое проÑтранÑтво" - -#: src/minoltamn.cpp:602 -#, fuzzy -msgid "Color filter" -msgstr "Цветовое проÑтранÑтво" - -#: src/minoltamn.cpp:604 -#, fuzzy -msgid "Black and White Filter" -msgstr "Чёрно-белый" - -#: src/minoltamn.cpp:605 -#, fuzzy -msgid "Black and white filter" -msgstr "Чёрно-белый" - -#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1013 -#, fuzzy -msgid "Internal Flash" -msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" - -#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:698 -#: src/olympusmn.cpp:276 src/properties.cpp:438 src/sonymn.cpp:602 -#: src/sonymn.cpp:603 src/tags.cpp:1630 -msgid "Brightness" -msgstr "ЯркоÑÑ‚ÑŒ" - -#: src/minoltamn.cpp:613 -#, fuzzy -msgid "Spot Focus Point X" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" - -#: src/minoltamn.cpp:614 -#, fuzzy -msgid "Spot focus point X" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" - -#: src/minoltamn.cpp:616 -#, fuzzy -msgid "Spot Focus Point Y" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" - -#: src/minoltamn.cpp:617 -#, fuzzy -msgid "Spot focus point Y" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" - -#: src/minoltamn.cpp:619 -#, fuzzy -msgid "Wide Focus Zone" -msgstr "СпоÑоб фокуÑировки" - -#: src/minoltamn.cpp:620 -#, fuzzy -msgid "Wide focus zone" -msgstr "СпоÑоб фокуÑировки" - -#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1036 -#: src/minoltamn.cpp:1380 src/nikonmn.cpp:232 src/nikonmn.cpp:475 -#: src/nikonmn.cpp:530 src/olympusmn.cpp:301 src/olympusmn.cpp:664 -#: src/panasonicmn.cpp:240 src/pentaxmn.cpp:899 -msgid "Focus mode" -msgstr "СпоÑоб фокуÑировки" - -#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1000 -#, fuzzy -msgid "Focus area" -msgstr "СпоÑоб фокуÑировки" - -#: src/minoltamn.cpp:628 -msgid "DEC Switch Position" -msgstr "" - -#: src/minoltamn.cpp:629 -msgid "DEC switch position" -msgstr "" - -#: src/minoltamn.cpp:631 -#, fuzzy -msgid "Color Profile" -msgstr "Цветовое проÑтранÑтво" - -#: src/minoltamn.cpp:632 -#, fuzzy -msgid "Color profile" -msgstr "Цветовое проÑтранÑтво" - -#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 -msgid "Data Imprint" -msgstr "" - -#: src/minoltamn.cpp:637 src/minoltamn.cpp:1421 -#, fuzzy -msgid "Flash Metering" -msgstr "ВнешнÑÑ Ð²Ñпышка" - -#: src/minoltamn.cpp:638 src/minoltamn.cpp:1422 -#, fuzzy -msgid "Flash metering" -msgstr "ВнешнÑÑ Ð²Ñпышка" - -#: src/minoltamn.cpp:642 -#, fuzzy -msgid "Unknown Minolta Camera Settings tag" -msgstr "ÐаÑтройка контраÑта" - -#: src/minoltamn.cpp:660 -#, fuzzy -msgid "Program-shift A" -msgstr "Программа" - -#: src/minoltamn.cpp:661 -#, fuzzy -msgid "Program-shift S" -msgstr "Программа" - -#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 -#, fuzzy -msgid "Raw+Jpeg" -msgstr "Размер изображениÑ" - -#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/pentaxmn.cpp:322 -#, fuzzy -msgid "Kelvin" -msgstr "3000 K" - -#: src/minoltamn.cpp:695 -#, fuzzy -msgid "Single-shot AF" -msgstr "One-Shot" - -#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1371 -#, fuzzy -msgid "Continuous AF" -msgstr "Продолжительный ведущий режим" - -#: src/minoltamn.cpp:698 -#, fuzzy -msgid "Automatic AF" -msgstr "ÐвтоматичеÑкий" - -#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 -#, fuzzy -msgid "sRGB (Natural)" -msgstr "внешнÑÑ" - -#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 -#, fuzzy -msgid "sRGB (Natural+)" -msgstr "внешнÑÑ" - -#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2019 -#: src/panasonicmn.cpp:190 -msgid "Horizontal (normal)" -msgstr "" - -#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2020 -#: src/panasonicmn.cpp:191 -msgid "Rotate 90 CW" -msgstr "" - -#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2021 -#: src/panasonicmn.cpp:192 -msgid "Rotate 270 CW" -msgstr "" - -#: src/minoltamn.cpp:756 -#, fuzzy -msgid "AF Points" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/minoltamn.cpp:757 -#, fuzzy -msgid "AF points" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/minoltamn.cpp:771 src/minoltamn.cpp:1011 src/minoltamn.cpp:1409 -#: src/nikonmn.cpp:551 src/olympusmn.cpp:683 src/olympusmn.cpp:802 -#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 src/properties.cpp:532 -#: src/sigmamn.cpp:83 src/tags.cpp:1684 -msgid "Color Space" -msgstr "Цветовое проÑтранÑтво" - -#: src/minoltamn.cpp:772 src/minoltamn.cpp:1012 src/minoltamn.cpp:1410 -#: src/nikonmn.cpp:551 src/olympusmn.cpp:683 src/olympusmn.cpp:817 -#: src/olympusmn.cpp:888 src/pentaxmn.cpp:995 src/pentaxmn.cpp:996 -#: src/sigmamn.cpp:84 -#, fuzzy -msgid "Color space" -msgstr "Цветовое проÑтранÑтво" - -#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1029 -#: src/minoltamn.cpp:1047 src/minoltamn.cpp:1457 -msgid "Free Memory Card Images" -msgstr "" - -#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1030 -#: src/minoltamn.cpp:1048 src/minoltamn.cpp:1458 -msgid "Free memory card images" -msgstr "" - -#: src/minoltamn.cpp:789 -msgid "Hue" -msgstr "" - -#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1041 -#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1571 src/minoltamn.cpp:1572 -#: src/panasonicmn.cpp:261 src/sonymn.cpp:638 src/sonymn.cpp:639 -#: src/sonymn.cpp:711 src/sonymn.cpp:712 -#, fuzzy -msgid "Rotation" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1065 -#: src/tags.cpp:835 -msgid "Image Number" -msgstr "Ðомер изображениÑ" - -#: src/minoltamn.cpp:808 src/minoltamn.cpp:1069 src/minoltamn.cpp:1494 -#: src/nikonmn.cpp:579 src/olympusmn.cpp:439 src/olympusmn.cpp:685 -#: src/olympusmn.cpp:819 src/olympusmn.cpp:889 src/olympusmn.cpp:974 -#: src/panasonicmn.cpp:258 src/pentaxmn.cpp:1024 src/pentaxmn.cpp:1025 -#, fuzzy -msgid "Noise reduction" -msgstr "Подавление шума" - -#: src/minoltamn.cpp:817 -msgid "Zone Matching On" -msgstr "" - -#: src/minoltamn.cpp:818 -#, fuzzy -msgid "Zone matching on" -msgstr "ТонкомпенÑациÑ" - -#: src/minoltamn.cpp:822 -#, fuzzy -msgid "Unknown Minolta Camera Settings 7D tag" -msgstr "ÐаÑтройка контраÑта" - -#: src/minoltamn.cpp:840 src/sonymn.cpp:521 -#, fuzzy -msgid "Program Shift A" -msgstr "Программа" - -#: src/minoltamn.cpp:841 src/sonymn.cpp:522 -#, fuzzy -msgid "Program Shift S" -msgstr "Программа" - -#: src/minoltamn.cpp:845 src/minoltamn.cpp:1889 src/minoltamn.cpp:2044 -#: src/sonymn.cpp:480 -#, fuzzy -msgid "Night View/Portrait" -msgstr "Ðочной портрет" - -#: src/minoltamn.cpp:895 -msgid "200 (Zone Matching High)" -msgstr "" - -#: src/minoltamn.cpp:896 -msgid "80 (Zone Matching Low)" -msgstr "" - -#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 -#, fuzzy -msgid "Adobe RGB (ICC)" -msgstr "Adobe RGB" - -#: src/minoltamn.cpp:918 -#, fuzzy -msgid "Central" -msgstr "ЦентральнаÑ" - -#: src/minoltamn.cpp:919 -msgid "Up" -msgstr "" - -#: src/minoltamn.cpp:920 -#, fuzzy -msgid "Up right" -msgstr "ПраваÑ" - -#: src/minoltamn.cpp:922 -#, fuzzy -msgid "Down right" -msgstr "ПраваÑ" - -#: src/minoltamn.cpp:923 -#, fuzzy -msgid "Down" -msgstr "вкл" - -#: src/minoltamn.cpp:924 -#, fuzzy -msgid "Down left" -msgstr "Ñправа налево" - -#: src/minoltamn.cpp:926 -#, fuzzy -msgid "Up left" -msgstr "Ñправа налево" - -#: src/minoltamn.cpp:932 -#, fuzzy -msgid "Selection" -msgstr "Выбор ISO" - -#: src/minoltamn.cpp:947 -#, fuzzy -msgid "Natural+" -msgstr "внешнÑÑ" - -#: src/minoltamn.cpp:949 -#, fuzzy -msgid "Wind Scene" -msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" - -#: src/minoltamn.cpp:950 -#, fuzzy -msgid "Evening Scene" -msgstr "Вечер" - -#: src/minoltamn.cpp:996 src/nikonmn.cpp:1345 src/nikonmn.cpp:1370 -#, fuzzy -msgid "Focus Position" -msgstr "СпоÑоб фокуÑировки" - -#: src/minoltamn.cpp:997 src/nikonmn.cpp:1345 src/nikonmn.cpp:1370 -#, fuzzy -msgid "Focus position" -msgstr "СпоÑоб фокуÑировки" - -#: src/minoltamn.cpp:999 -#, fuzzy -msgid "Focus Area" -msgstr "СпоÑоб фокуÑировки" - -#: src/minoltamn.cpp:1032 -#, fuzzy -msgid "Exposure Revision" -msgstr "ТонкомпенÑациÑ" - -#: src/minoltamn.cpp:1033 -#, fuzzy -msgid "Exposure revision" -msgstr "ТонкомпенÑациÑ" - -#: src/minoltamn.cpp:1050 src/minoltamn.cpp:1051 -#, fuzzy -msgid "Rotation2" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/minoltamn.cpp:1056 src/minoltamn.cpp:1057 -#, fuzzy -msgid "Picture Finish" -msgstr "Режим захвата" - -#: src/minoltamn.cpp:1059 -#, fuzzy -msgid "Exposure Manual Bias" -msgstr "Смещение ÑкÑпозиции" - -#: src/minoltamn.cpp:1060 -#, fuzzy -msgid "Exposure manual bias" -msgstr "Смещение ÑкÑпозиции" - -#: src/minoltamn.cpp:1062 src/panasonicmn.cpp:241 src/sonymn.cpp:399 -#: src/sonymn.cpp:400 -#, fuzzy -msgid "AF Mode" -msgstr "СпоÑоб фокуÑировки" - -#: src/minoltamn.cpp:1063 src/panasonicmn.cpp:241 -#, fuzzy -msgid "AF mode" -msgstr "Режим вÑпышки" - -#: src/minoltamn.cpp:1083 -#, fuzzy -msgid "Unknown Minolta Camera Settings 5D tag" -msgstr "ÐаÑтройка контраÑта" - -#: src/minoltamn.cpp:1096 src/sonymn.cpp:449 -#, fuzzy -msgid "Self-timer 10 sec" -msgstr "Серийный номер" - -#: src/minoltamn.cpp:1098 src/sonymn.cpp:450 -#, fuzzy -msgid "Self-timer 2 sec" -msgstr "Серийный номер" - -#: src/minoltamn.cpp:1100 src/sonymn.cpp:453 -#, fuzzy -msgid "White Balance Bracketing Low" -msgstr "ÐаÑтройка баланÑа белого" - -#: src/minoltamn.cpp:1101 -#, fuzzy -msgid "White Balance Bracketing High" -msgstr "ÐаÑтройка баланÑа белого" - -#: src/minoltamn.cpp:1102 -#, fuzzy -msgid "Single-frame Bracketing Low" -msgstr "Серийный номер" - -#: src/minoltamn.cpp:1103 -#, fuzzy -msgid "Continuous Bracketing Low" -msgstr "Ðвтобрекетирование" - -#: src/minoltamn.cpp:1104 -#, fuzzy -msgid "Single-frame Bracketing High" -msgstr "Серийный номер" - -#: src/minoltamn.cpp:1105 -#, fuzzy -msgid "Continuous Bracketing High" -msgstr "Продолжительный ведущий режим" - -#: src/minoltamn.cpp:1136 src/sonymn.cpp:158 -msgid "Advanced" -msgstr "" - -#: src/minoltamn.cpp:1151 src/minoltamn.cpp:1433 src/sonymn.cpp:451 -#, fuzzy -msgid "Continuous Bracketing" -msgstr "Продолжительный ведущий режим" - -#: src/minoltamn.cpp:1152 -#, fuzzy -msgid "Single-Frame Bracketing" -msgstr "Серийный номер" - -#: src/minoltamn.cpp:1153 src/minoltamn.cpp:1439 src/sonymn.cpp:225 -#, fuzzy -msgid "White Balance Bracketing" -msgstr "ÐаÑтройка баланÑа белого" - -#: src/minoltamn.cpp:1183 src/minoltamn.cpp:1186 src/nikonmn.cpp:446 -msgid "Preset" -msgstr "ПреÑет" - -#: src/minoltamn.cpp:1185 src/minoltamn.cpp:1188 src/minoltamn.cpp:2093 -#, fuzzy -msgid "Color Temperature/Color Filter" -msgstr "Температура цвета" - -#: src/minoltamn.cpp:1203 src/pentaxmn.cpp:1018 src/properties.cpp:465 -msgid "Temperature" -msgstr "Температура" - -#: src/minoltamn.cpp:1209 -#, fuzzy -msgid "Setup" -msgstr "УÑтановить" - -#: src/minoltamn.cpp:1210 -msgid "Recall" -msgstr "" - -#: src/minoltamn.cpp:1215 -msgid "Ok" -msgstr "" - -#: src/minoltamn.cpp:1216 -msgid "Error" -msgstr "" - -#: src/minoltamn.cpp:1228 -#, fuzzy -msgid "Image and Information" -msgstr "ÐŸÐ»Ð°Ð½Ð°Ñ€Ð½Ð°Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ" - -#: src/minoltamn.cpp:1229 -#, fuzzy -msgid "Image Only" -msgstr "Тип изображениÑ" - -#: src/minoltamn.cpp:1230 -#, fuzzy -msgid "Image and Histogram" -msgstr "Длина изображениÑ" - -#: src/minoltamn.cpp:1236 -#, fuzzy -msgid "Fill Flash" -msgstr "ЗаполнÑÑŽÑ‰Ð°Ñ Ð²Ñпышка" - -#: src/minoltamn.cpp:1247 -#, fuzzy -msgid "Focus Hold" -msgstr "СпоÑоб фокуÑировки" - -#: src/minoltamn.cpp:1248 -#, fuzzy -msgid "DOF Preview" -msgstr "Данные ÑÑкиза" - -#: src/minoltamn.cpp:1253 -msgid "Hold" -msgstr "" - -#: src/minoltamn.cpp:1254 -#, fuzzy -msgid "Toggle" -msgstr "Ðичего" - -#: src/minoltamn.cpp:1255 -#, fuzzy -msgid "Spot Hold" -msgstr "Режим замера" - -#: src/minoltamn.cpp:1256 -#, fuzzy -msgid "Spot Toggle" -msgstr "Режим замера" - -#: src/minoltamn.cpp:1261 src/olympusmn.cpp:267 -msgid "Shutter Speed" -msgstr "СкороÑÑ‚ÑŒ ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" - -#: src/minoltamn.cpp:1267 -msgid "Ambient and Flash" -msgstr "" - -#: src/minoltamn.cpp:1268 -msgid "Ambient Only" -msgstr "" - -#: src/minoltamn.cpp:1273 -msgid "0.3 seconds" -msgstr "" - -#: src/minoltamn.cpp:1274 -msgid "0.6 seconds" -msgstr "" - -#: src/minoltamn.cpp:1280 src/nikonmn.cpp:292 src/nikonmn.cpp:972 -#: src/nikonmn.cpp:1418 -#, fuzzy -msgid "Automatic" -msgstr "ÐвтоматичеÑкий" - -#: src/minoltamn.cpp:1286 src/minoltamn.cpp:1292 -#, fuzzy -msgid "Auto-rotate" -msgstr "ÐвтоматичеÑкий контраÑÑ‚" - -#: src/minoltamn.cpp:1287 -msgid "Horizontal" -msgstr "" - -#: src/minoltamn.cpp:1293 -#, fuzzy -msgid "Manual Rotate" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ ÑкÑпозициÑ" - -#: src/minoltamn.cpp:1298 -#, fuzzy -msgid "Within Range" -msgstr "ФокуÑный диапазон" - -#: src/minoltamn.cpp:1299 -#, fuzzy -msgid "Under/Over Range" -msgstr "ОблаÑÑ‚ÑŒ передачи" - -#: src/minoltamn.cpp:1300 -msgid "Out of Range" -msgstr "" - -#: src/minoltamn.cpp:1305 -#, fuzzy -msgid "Not Indicated" -msgstr "Ðе определено" - -#: src/minoltamn.cpp:1306 -#, fuzzy -msgid "Under Scale" -msgstr "ÐŸÐ¾Ð´Ð²Ð¾Ð´Ð½Ð°Ñ Ñъемка" - -#: src/minoltamn.cpp:1307 -#, fuzzy -msgid "Bottom of Scale" -msgstr "Ñнизу вверх" - -#: src/minoltamn.cpp:1325 -msgid "Top of Scale" -msgstr "" - -#: src/minoltamn.cpp:1326 -#, fuzzy -msgid "Over Scale" -msgstr "По умолчанию" - -#: src/minoltamn.cpp:1331 -msgid "AM" -msgstr "" - -#: src/minoltamn.cpp:1332 src/olympusmn.cpp:512 src/olympusmn.cpp:1374 -#: src/olympusmn.cpp:1384 -msgid "MF" -msgstr "" - -#: src/minoltamn.cpp:1338 -msgid "Built-in" -msgstr "" - -#: src/minoltamn.cpp:1344 src/pentaxmn.cpp:347 src/pentaxmn.cpp:360 -#, fuzzy -msgid "Very Low" -msgstr "Ðизкий" - -#: src/minoltamn.cpp:1346 -#, fuzzy -msgid "Half Full" -msgstr "Полный" - -#: src/minoltamn.cpp:1347 -msgid "Sufficient Power Remaining" -msgstr "" - -#: src/minoltamn.cpp:1355 -#, fuzzy -msgid "Exposure Compensation Setting" -msgstr "ТонкомпенÑациÑ" - -#: src/minoltamn.cpp:1356 -#, fuzzy -msgid "Exposure compensation setting" -msgstr "КомпенÑÐ°Ñ†Ð¸Ñ ÑкÑпозиции" - -#: src/minoltamn.cpp:1358 -#, fuzzy -msgid "High Speed Sync" -msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" - -#: src/minoltamn.cpp:1359 -#, fuzzy -msgid "High speed sync" -msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" - -#: src/minoltamn.cpp:1361 -#, fuzzy -msgid "Manual Exposure Time" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ ÑкÑпозициÑ" - -#: src/minoltamn.cpp:1362 -#, fuzzy -msgid "Manual exposure time" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ ÑкÑпозициÑ" - -#: src/minoltamn.cpp:1364 src/minoltamn.cpp:1365 -#, fuzzy -msgid "Manual FNumber" -msgstr "Серийный номер" - -#: src/minoltamn.cpp:1373 -#, fuzzy -msgid "Drive Mode 2" -msgstr "Режим замера" - -#: src/minoltamn.cpp:1374 -#, fuzzy -msgid "Drive mode 2" -msgstr "Режим замера" - -#: src/minoltamn.cpp:1382 src/minoltamn.cpp:1383 src/sonymn.cpp:572 -#: src/sonymn.cpp:573 src/sonymn.cpp:678 src/sonymn.cpp:679 -msgid "Local AF Area Point" -msgstr "" - -#: src/minoltamn.cpp:1385 src/minoltamn.cpp:1386 src/nikonmn.cpp:822 -#: src/nikonmn.cpp:845 src/sonymn.cpp:569 src/sonymn.cpp:570 -#: src/sonymn.cpp:675 src/sonymn.cpp:676 -#, fuzzy -msgid "AF Area Mode" -msgstr "СпоÑоб фокуÑировки" - -#: src/minoltamn.cpp:1388 src/minoltamn.cpp:1389 src/sonymn.cpp:605 -#: src/sonymn.cpp:606 src/sonymn.cpp:705 src/sonymn.cpp:706 -#, fuzzy -msgid "FlashMode" -msgstr "Режим вÑпышки" - -#: src/minoltamn.cpp:1391 -#, fuzzy -msgid "Flash Exposure Comp Setting" -msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" - -#: src/minoltamn.cpp:1392 -#, fuzzy -msgid "Flash exposure compensation setting" -msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" - -#: src/minoltamn.cpp:1397 src/sonymn.cpp:578 src/sonymn.cpp:579 -#: src/sonymn.cpp:684 src/sonymn.cpp:685 -#, fuzzy -msgid "ISO Setting" -msgstr "ÐаÑтройка резкоÑти" - -#: src/minoltamn.cpp:1400 src/minoltamn.cpp:1401 -#, fuzzy -msgid "Zone Matching Mode" -msgstr "Подавление шума" - -#: src/minoltamn.cpp:1403 src/sonymn.cpp:581 src/sonymn.cpp:582 -#: src/sonymn.cpp:687 src/sonymn.cpp:688 -#, fuzzy -msgid "Dynamic Range Optimizer Mode" -msgstr "ÐаÑтройка баланÑа белого" - -#: src/minoltamn.cpp:1404 -#, fuzzy -msgid "Dynamic range optimizer mode" -msgstr "ÐаÑтройка баланÑа белого" - -#: src/minoltamn.cpp:1424 src/minoltamn.cpp:1425 src/sonymn.cpp:609 -#: src/sonymn.cpp:610 -msgid "Priority Setup Shutter Release" -msgstr "" - -#: src/minoltamn.cpp:1430 -#, fuzzy -msgid "Self Timer Time" -msgstr "Серийный номер" - -#: src/minoltamn.cpp:1431 -#, fuzzy -msgid "Self timer time" -msgstr "Серийный номер" - -#: src/minoltamn.cpp:1434 -#, fuzzy -msgid "Continuous bracketing" -msgstr "Продолжительный ведущий режим" - -#: src/minoltamn.cpp:1436 -#, fuzzy -msgid "Single Frame Bracketing" -msgstr "ÐаÑтройка баланÑа белого" - -#: src/minoltamn.cpp:1437 -#, fuzzy -msgid "Single frame bracketing" -msgstr "ÐаÑтройка баланÑа белого" - -#: src/minoltamn.cpp:1440 src/nikonmn.cpp:156 src/nikonmn.cpp:167 -#, fuzzy -msgid "White balance bracketing" -msgstr "ÐаÑтройка баланÑа белого" - -#: src/minoltamn.cpp:1442 -#, fuzzy -msgid "White Balance Setting" -msgstr "ÐаÑтройка баланÑа белого" - -#: src/minoltamn.cpp:1445 -#, fuzzy -msgid "Preset White Balance" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/minoltamn.cpp:1446 -#, fuzzy -msgid "Preset white balance" -msgstr "Ðвтомат. Ð±Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/minoltamn.cpp:1448 -#, fuzzy -msgid "Color Temperature Setting" -msgstr "Температура цвета" - -#: src/minoltamn.cpp:1449 -#, fuzzy -msgid "Color temperature setting" -msgstr "Температура цвета" - -#: src/minoltamn.cpp:1451 -#, fuzzy -msgid "Custom WB Setting" -msgstr "Свой 1" - -#: src/minoltamn.cpp:1452 -#, fuzzy -msgid "Custom WB setting" -msgstr "Свой 1" - -#: src/minoltamn.cpp:1454 src/minoltamn.cpp:1455 -#, fuzzy -msgid "Dynamic Range Optimizer Settings" -msgstr "ÐаÑтройка баланÑа белого" - -#: src/minoltamn.cpp:1460 -#, fuzzy -msgid "Custom WB Red Level" -msgstr "ЗарÑд батареи" - -#: src/minoltamn.cpp:1461 -#, fuzzy -msgid "Custom WB red level" -msgstr "Под уровнем морÑ" - -#: src/minoltamn.cpp:1463 -#, fuzzy -msgid "Custom WB Green Level" -msgstr "ЗарÑд батареи" - -#: src/minoltamn.cpp:1464 -#, fuzzy -msgid "Custom WB green level" -msgstr "Под уровнем морÑ" - -#: src/minoltamn.cpp:1466 -#, fuzzy -msgid "Custom WB Blue Level" -msgstr "ЗарÑд батареи" - -#: src/minoltamn.cpp:1467 -#, fuzzy -msgid "CustomWB blue level" -msgstr "Под уровнем морÑ" - -#: src/minoltamn.cpp:1469 src/minoltamn.cpp:1470 -#, fuzzy -msgid "Custom WB Error" -msgstr "Свой 1" - -#: src/minoltamn.cpp:1473 -#, fuzzy -msgid "White balance fine tune" -msgstr "Ð¢Ð¾Ñ‡Ð½Ð°Ñ Ð¿Ð¾Ð´Ñтройка баланÑа белого" - -#: src/minoltamn.cpp:1479 -#, fuzzy -msgid "Color compensation filter" -msgstr "ТонкомпенÑациÑ" - -#: src/minoltamn.cpp:1481 src/minoltamn.cpp:1482 src/sonymn.cpp:641 -#: src/sonymn.cpp:642 src/sonymn.cpp:714 src/sonymn.cpp:715 -#, fuzzy -msgid "Sony Image Size" -msgstr "Размер изображениÑ" - -#: src/minoltamn.cpp:1487 -msgid "Instant Playback Time" -msgstr "" - -#: src/minoltamn.cpp:1488 -msgid "Instant playback time" -msgstr "" - -#: src/minoltamn.cpp:1490 -msgid "Instant Playback Setup" -msgstr "" - -#: src/minoltamn.cpp:1491 -msgid "Instant playback setup" -msgstr "" - -#: src/minoltamn.cpp:1496 -msgid "Eye Start AF" -msgstr "" - -#: src/minoltamn.cpp:1497 -#, fuzzy -msgid "Eye start AF" -msgstr "One-Shot" - -#: src/minoltamn.cpp:1499 -#, fuzzy -msgid "Red Eye Reduction" -msgstr "Подавление Ñффекта краÑных глаз" - -#: src/minoltamn.cpp:1500 -#, fuzzy -msgid "Red eye reduction" -msgstr "Подавление Ñффекта краÑных глаз" - -#: src/minoltamn.cpp:1502 -#, fuzzy -msgid "Flash Default" -msgstr "Ð’Ñпышка Ñработала" - -#: src/minoltamn.cpp:1503 -#, fuzzy -msgid "Flash default" -msgstr "Режим вÑпышки" - -#: src/minoltamn.cpp:1505 -#, fuzzy -msgid "Auto Bracket Order" -msgstr "Ðвтобрекетирование" - -#: src/minoltamn.cpp:1506 -#, fuzzy -msgid "Auto bracket order" -msgstr "Ðвтобрекетирование" - -#: src/minoltamn.cpp:1508 -#, fuzzy -msgid "Focus Hold Button" -msgstr "СпоÑоб фокуÑировки" - -#: src/minoltamn.cpp:1509 -#, fuzzy -msgid "Focus hold button" -msgstr "СпоÑоб фокуÑировки" - -#: src/minoltamn.cpp:1511 -#, fuzzy -msgid "AEL Button" -msgstr "СпоÑоб фокуÑировки" - -#: src/minoltamn.cpp:1512 -#, fuzzy -msgid "AEL button" -msgstr "СпоÑоб фокуÑировки" - -#: src/minoltamn.cpp:1514 -#, fuzzy -msgid "Control Dial Set" -msgstr "ÐаÑтройка контраÑта" - -#: src/minoltamn.cpp:1515 -#, fuzzy -msgid "Control dial set" -msgstr "КонтраÑÑ‚" - -#: src/minoltamn.cpp:1517 -#, fuzzy -msgid "Exposure Compensation Mode" -msgstr "ТонкомпенÑациÑ" - -#: src/minoltamn.cpp:1518 -#, fuzzy -msgid "Exposure compensation mode" -msgstr "КомпенÑÐ°Ñ†Ð¸Ñ ÑкÑпозиции" - -#: src/minoltamn.cpp:1521 -#, fuzzy -msgid "AF assist" -msgstr "Тип Ñцены" - -#: src/minoltamn.cpp:1523 -#, fuzzy -msgid "Card Shutter Lock" -msgstr "СкороÑÑ‚ÑŒ ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" - -#: src/minoltamn.cpp:1524 -#, fuzzy -msgid "Card shutter lock" -msgstr "СкороÑÑ‚ÑŒ ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" - -#: src/minoltamn.cpp:1526 -#, fuzzy -msgid "Lens Shutter Lock" -msgstr "СкороÑÑ‚ÑŒ ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" - -#: src/minoltamn.cpp:1527 -#, fuzzy -msgid "Lens shutter lock" -msgstr "СкороÑÑ‚ÑŒ ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" - -#: src/minoltamn.cpp:1529 -msgid "AF Area Illumination" -msgstr "" - -#: src/minoltamn.cpp:1530 -#, fuzzy -msgid "AF area illumination" -msgstr "Режим вÑпышки" - -#: src/minoltamn.cpp:1532 -msgid "Monitor Display Off" -msgstr "" - -#: src/minoltamn.cpp:1533 -msgid "Monitor display off" -msgstr "" - -#: src/minoltamn.cpp:1535 -msgid "Record Display" -msgstr "" - -#: src/minoltamn.cpp:1536 -msgid "Record display" -msgstr "" - -#: src/minoltamn.cpp:1538 -msgid "Play Display" -msgstr "" - -#: src/minoltamn.cpp:1539 -msgid "Play display" -msgstr "" - -#: src/minoltamn.cpp:1541 -#, fuzzy -msgid "Exposure Indicator" -msgstr "Режим ÑкÑпозиции" - -#: src/minoltamn.cpp:1542 -#, fuzzy -msgid "Exposure indicator" -msgstr "Смещение ÑкÑпозиции" - -#: src/minoltamn.cpp:1544 -#, fuzzy -msgid "AEL Exposure Indicator" -msgstr "Режим ÑкÑпозиции" - -#: src/minoltamn.cpp:1545 -msgid "" -"AEL exposure indicator (also indicates exposure for next shot when " -"bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1547 -#, fuzzy -msgid "Exposure Bracketing Indicator Last" -msgstr "Брекетинг" - -#: src/minoltamn.cpp:1548 -msgid "" -"Exposure bracketing indicator last (indicator for last shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1550 -msgid "Metering Off Scale Indicator" -msgstr "" - -#: src/minoltamn.cpp:1551 -msgid "" -"Metering off scale indicator (two flashing triangles when under or over " -"metering scale)" -msgstr "" - -#: src/minoltamn.cpp:1553 -#, fuzzy -msgid "Flash Exposure Indicator" -msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" - -#: src/minoltamn.cpp:1554 -#, fuzzy -msgid "Flash exposure indicator" -msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" - -#: src/minoltamn.cpp:1556 -#, fuzzy -msgid "Flash Exposure Indicator Next" -msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" - -#: src/minoltamn.cpp:1557 -msgid "Flash exposure indicator next (indicator for next shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1559 -#, fuzzy -msgid "Flash Exposure Indicator Last" -msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" - -#: src/minoltamn.cpp:1560 -msgid "Flash exposure indicator last (indicator for last shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1565 -#, fuzzy -msgid "Focus Mode Switch" -msgstr "СпоÑоб фокуÑировки" - -#: src/minoltamn.cpp:1566 -#, fuzzy -msgid "Focus mode switch" -msgstr "СпоÑоб фокуÑировки" - -#: src/minoltamn.cpp:1568 src/olympusmn.cpp:759 -#, fuzzy -msgid "Flash Type" -msgstr "Режим вÑпышки" - -#: src/minoltamn.cpp:1569 src/olympusmn.cpp:759 -#, fuzzy -msgid "Flash type" -msgstr "Режим вÑпышки" - -#: src/minoltamn.cpp:1574 src/olympusmn.cpp:660 -#, fuzzy -msgid "AE Lock" -msgstr "ФикÑÐ°Ñ†Ð¸Ñ ÑкÑпозиции" - -#: src/minoltamn.cpp:1581 -msgid "Color compensation filter: negative is green, positive is magenta" -msgstr "" - -#: src/minoltamn.cpp:1583 src/tags.cpp:759 -msgid "Battery Level" -msgstr "ЗарÑд батареи" - -#: src/minoltamn.cpp:1584 -#, fuzzy -msgid "Battery level" -msgstr "ЗарÑд батареи" - -#: src/minoltamn.cpp:1588 -#, fuzzy -msgid "Unknown Sony Camera Settings A100 tag" -msgstr "ÐаÑтройка контраÑта" - -#: src/minoltamn.cpp:1894 src/sonymn.cpp:484 -#, fuzzy -msgid "Clear" -msgstr "КатегориÑ" - -#: src/minoltamn.cpp:1895 src/sonymn.cpp:485 -#, fuzzy -msgid "Deep" -msgstr "Центральный" - -#: src/minoltamn.cpp:1896 src/sonymn.cpp:486 -#, fuzzy -msgid "Light" -msgstr "Ðочной портрет" - -#: src/minoltamn.cpp:1897 -#, fuzzy -msgid "Night View" -msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" - -#: src/minoltamn.cpp:1898 -msgid "Autumn Leaves" -msgstr "" - -#: src/minoltamn.cpp:1937 -#, fuzzy -msgid "Local" -msgstr "МеÑтоположение объекта Ñъёмки" - -#: src/minoltamn.cpp:1952 -#, fuzzy -msgid "Top-Right" -msgstr "ÐвторÑкие и Ñмежные права" - -#: src/minoltamn.cpp:1954 -#, fuzzy -msgid "Bottom-Right" -msgstr "Ñлева направо" - -#: src/minoltamn.cpp:1956 -#, fuzzy -msgid "Bottom-Left" -msgstr "Ñнизу вверх" - -#: src/minoltamn.cpp:1958 -#, fuzzy -msgid "Top-Left" -msgstr "Ñправа налево" - -#: src/minoltamn.cpp:1959 -#, fuzzy -msgid "Far-Right" -msgstr "ÐвторÑкие права" - -#: src/minoltamn.cpp:1960 -#, fuzzy -msgid "Far-Left" -msgstr "Ñправа налево" - -#: src/minoltamn.cpp:1974 src/sonymn.cpp:89 -#, fuzzy -msgid "Advanced Auto" -msgstr "Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸" - -#: src/minoltamn.cpp:1975 -#, fuzzy -msgid "Advanced Level" -msgstr "ЗарÑд батареи" - -#: src/minoltamn.cpp:1988 -msgid "AF" -msgstr "" - -#: src/minoltamn.cpp:1989 -#, fuzzy -msgid "Release" -msgstr "Дата пубикации" - -#: src/minoltamn.cpp:2001 -#, fuzzy -msgid "RAW " -msgstr "RAW" - -#: src/minoltamn.cpp:2002 -#, fuzzy -msgid "CRAW " -msgstr "RAW" - -#: src/minoltamn.cpp:2005 -#, fuzzy -msgid "RAW+JPEG" -msgstr "JPEG" - -#: src/minoltamn.cpp:2006 -#, fuzzy -msgid "CRAW+JPEG" -msgstr "JPEG" - -#: src/minoltamn.cpp:2062 -msgid "Raw + JPEG" -msgstr "" - -#: src/minoltamn.cpp:2063 -#, fuzzy -msgid "Compressed Raw" -msgstr "Уровень ÑжатиÑ" - -#: src/minoltamn.cpp:2064 -#, fuzzy -msgid "Compressed Raw + JPEG" -msgstr "Сжатых битов на пикÑел" - -#: src/minoltamn.cpp:2077 -msgid "Minolta AF 2x APO (D)" -msgstr "" - -#: src/minoltamn.cpp:2078 -msgid "Minolta AF 2x APO II" -msgstr "" - -#: src/minoltamn.cpp:2079 -msgid "Minolta AF 1.4x APO (D)" -msgstr "" - -#: src/minoltamn.cpp:2080 -msgid "Minolta AF 1.4x APO II" -msgstr "" - -#: src/minoltamn.cpp:2110 -#, fuzzy -msgid "ISO Setting Used" -msgstr "ÐаÑтройка резкоÑти" - -#: src/minoltamn.cpp:2111 src/olympusmn.cpp:126 src/olympusmn.cpp:1109 -msgid "High Key" -msgstr "Ð’Ñ‹Ñокий ключ" - -#: src/minoltamn.cpp:2112 src/olympusmn.cpp:132 src/olympusmn.cpp:1107 -msgid "Low Key" -msgstr "Ðизкий ключ" - -#: src/nikonmn.cpp:80 -#, fuzzy -msgid "Extra High" -msgstr "ÐвторÑкие и Ñмежные права" - -#: src/nikonmn.cpp:86 src/nikonmn.cpp:1560 -msgid "Single area" -msgstr "" - -#: src/nikonmn.cpp:87 src/nikonmn.cpp:1561 -msgid "Dynamic area" -msgstr "" - -#: src/nikonmn.cpp:88 -msgid "Dynamic area, closest subject" -msgstr "" - -#: src/nikonmn.cpp:89 -msgid "Group dynamic" -msgstr "" - -#: src/nikonmn.cpp:90 src/nikonmn.cpp:1564 -msgid "Single area (wide)" -msgstr "" - -#: src/nikonmn.cpp:91 src/nikonmn.cpp:1565 -msgid "Dynamic area (wide)" -msgstr "" - -#: src/nikonmn.cpp:104 src/nikonmn.cpp:797 src/nikonmn.cpp:812 -#: src/pentaxmn.cpp:215 -#, fuzzy -msgid "Upper-left" -msgstr "ПраваÑ" - -#: src/nikonmn.cpp:105 src/nikonmn.cpp:798 src/nikonmn.cpp:813 -#: src/pentaxmn.cpp:217 -#, fuzzy -msgid "Upper-right" -msgstr "ПраваÑ" - -#: src/nikonmn.cpp:106 src/nikonmn.cpp:799 src/nikonmn.cpp:814 -#: src/pentaxmn.cpp:223 -#, fuzzy -msgid "Lower-left" -msgstr "ПраваÑ" - -#: src/nikonmn.cpp:107 src/nikonmn.cpp:800 src/nikonmn.cpp:815 -#: src/pentaxmn.cpp:225 -#, fuzzy -msgid "Lower-right" -msgstr "ПраваÑ" - -#: src/nikonmn.cpp:108 -#, fuzzy -msgid "Left-most" -msgstr "ЛеваÑ" - -#: src/nikonmn.cpp:109 -#, fuzzy -msgid "Right-most" -msgstr "Ðочной портрет" - -#: src/nikonmn.cpp:143 -#, fuzzy -msgid "Fire, manual" -msgstr "РучнаÑ" - -#: src/nikonmn.cpp:144 -#, fuzzy -msgid "Fire, external" -msgstr "ВнешнÑÑ Ð²Ñпышка" - -#: src/nikonmn.cpp:145 -msgid "Fire, commander mode" -msgstr "" - -#: src/nikonmn.cpp:146 -#, fuzzy -msgid "Fire, TTL mode" -msgstr "Режим вÑпышки" - -#: src/nikonmn.cpp:152 src/nikonmn.cpp:163 -#, fuzzy -msgid "Delay" -msgstr "Удалить" - -#: src/nikonmn.cpp:153 src/nikonmn.cpp:164 -#, fuzzy -msgid "PC control" -msgstr "Режим захвата" - -#: src/nikonmn.cpp:154 src/nikonmn.cpp:165 -#, fuzzy -msgid "Exposure bracketing" -msgstr "Брекетинг" - -#: src/nikonmn.cpp:155 -#, fuzzy -msgid "Auto ISO" -msgstr "Ðвто" - -#: src/nikonmn.cpp:157 src/nikonmn.cpp:168 -#, fuzzy -msgid "IR control" -msgstr "Пульт Д/У?" - -#: src/nikonmn.cpp:166 -msgid "Unused LE-NR slowdown" -msgstr "" - -#: src/nikonmn.cpp:174 -#, fuzzy -msgid "Auto release" -msgstr "Ðвтобрекетирование" - -#: src/nikonmn.cpp:175 -#, fuzzy -msgid "Manual release" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ ÑкÑпозициÑ" - -#: src/nikonmn.cpp:180 -#, fuzzy -msgid "Lossy (type 1)" -msgstr "Тип объектива" - -#: src/nikonmn.cpp:181 src/tags.cpp:247 -msgid "Uncompressed" -msgstr "ÐеÑжатый" - -#: src/nikonmn.cpp:182 -msgid "Lossless" -msgstr "" - -#: src/nikonmn.cpp:183 -#, fuzzy -msgid "Lossy (type 2)" -msgstr "Тип объектива" - -#: src/nikonmn.cpp:189 -#, fuzzy -msgid "B & W" -msgstr "Ч/Б" - -#: src/nikonmn.cpp:191 -#, fuzzy -msgid "Trim" -msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸" - -#: src/nikonmn.cpp:192 -#, fuzzy -msgid "Small picture" -msgstr "Кино" - -#: src/nikonmn.cpp:193 -#, fuzzy -msgid "D-Lighting" -msgstr "Дневной Ñвет" - -#: src/nikonmn.cpp:194 -#, fuzzy -msgid "Red eye" -msgstr "ЗарÑд батареи" - -#: src/nikonmn.cpp:195 src/nikonmn.cpp:678 -#, fuzzy -msgid "Cyanotype" -msgstr "тип" - -#: src/nikonmn.cpp:196 -#, fuzzy -msgid "Sky light" -msgstr "Дневной Ñвет" - -#: src/nikonmn.cpp:197 -#, fuzzy -msgid "Warm tone" -msgstr "Цветовое проÑтранÑтво" - -#: src/nikonmn.cpp:198 -#, fuzzy -msgid "Color custom" -msgstr "Цветовое проÑтранÑтво" - -#: src/nikonmn.cpp:199 -#, fuzzy -msgid "Image overlay" -msgstr "Тип изображениÑ" - -#: src/nikonmn.cpp:205 -#, fuzzy -msgid "Minimal" -msgstr "РучнаÑ" - -#: src/nikonmn.cpp:214 src/nikonmn.cpp:524 -#, fuzzy -msgid "Nikon Makernote version" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/nikonmn.cpp:216 src/nikonmn.cpp:468 src/nikonmn.cpp:525 -#: src/olympusmn.cpp:270 src/panasonicmn.cpp:344 src/tags.cpp:1583 -#, fuzzy -msgid "ISO Speed" -msgstr "СкороÑÑ‚ÑŒ ISO" - -#: src/nikonmn.cpp:228 src/nikonmn.cpp:529 -#, fuzzy -msgid "Sharpening" -msgstr "РезкоÑÑ‚ÑŒ изображениÑ" - -#: src/nikonmn.cpp:229 src/nikonmn.cpp:529 -#, fuzzy -msgid "Image sharpening setting" -msgstr "РезкоÑÑ‚ÑŒ изображениÑ" - -#: src/nikonmn.cpp:231 src/nikonmn.cpp:530 -msgid "Focus" -msgstr "ФокуÑ" - -#: src/nikonmn.cpp:234 src/nikonmn.cpp:531 -#, fuzzy -msgid "Flash Setting" -msgstr "Ð’Ñпышка Ñработала" - -#: src/nikonmn.cpp:235 src/nikonmn.cpp:531 -#, fuzzy -msgid "Flash setting" -msgstr "Ð’Ñпышка Ñработала" - -#: src/nikonmn.cpp:240 src/nikonmn.cpp:538 -#, fuzzy -msgid "ISO Selection" -msgstr "Выбор ISO" - -#: src/nikonmn.cpp:241 src/nikonmn.cpp:538 -#, fuzzy -msgid "ISO selection" -msgstr "Выбор ISO" - -#: src/nikonmn.cpp:243 src/nikonmn.cpp:539 src/panasonicmn.cpp:246 -msgid "Data Dump" -msgstr "" - -#: src/nikonmn.cpp:244 src/nikonmn.cpp:539 src/panasonicmn.cpp:246 -msgid "Data dump" -msgstr "" - -#: src/nikonmn.cpp:246 src/nikonmn.cpp:465 src/nikonmn.cpp:559 -msgid "Image Adjustment" -msgstr "ÐšÐ¾Ñ€Ñ€ÐµÐºÑ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" - -#: src/nikonmn.cpp:247 src/nikonmn.cpp:466 src/nikonmn.cpp:559 -#, fuzzy -msgid "Image adjustment setting" -msgstr "ПодÑтройка изображениÑ" - -#: src/nikonmn.cpp:249 src/nikonmn.cpp:483 src/nikonmn.cpp:561 -msgid "Auxiliary Lens" -msgstr "" - -#: src/nikonmn.cpp:250 src/nikonmn.cpp:484 src/nikonmn.cpp:561 -msgid "Auxiliary lens (adapter)" -msgstr "" - -#: src/nikonmn.cpp:253 src/nikonmn.cpp:564 src/olympusmn.cpp:304 -#, fuzzy -msgid "Manual focus distance" -msgstr "РаÑÑтоÑние ручного фокуÑа" - -#: src/nikonmn.cpp:256 src/nikonmn.cpp:481 src/nikonmn.cpp:565 -#, fuzzy -msgid "Digital zoom setting" -msgstr "Цифровой транÑфокатор" - -#: src/nikonmn.cpp:258 -#, fuzzy -msgid "AF Focus Position" -msgstr "СпоÑоб фокуÑировки" - -#: src/nikonmn.cpp:259 -#, fuzzy -msgid "AF focus position information" -msgstr "СпоÑоб фокуÑировки" - -#: src/nikonmn.cpp:263 -#, fuzzy -msgid "Unknown Nikon1MakerNote tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг CanonMakerNote" - -#: src/nikonmn.cpp:290 src/nikonmn.cpp:1416 -#, fuzzy -msgid "Continuous autofocus" -msgstr "Продолжительный ведущий режим" - -#: src/nikonmn.cpp:291 src/nikonmn.cpp:1417 -msgid "Single autofocus" -msgstr "" - -#: src/nikonmn.cpp:325 src/nikonmn.cpp:506 src/nikonmn.cpp:1517 -#, fuzzy -msgid "Not used" -msgstr "Ðе определено" - -#: src/nikonmn.cpp:365 -msgid "guess" -msgstr "" - -#: src/nikonmn.cpp:412 -msgid "VGA Basic" -msgstr "VGA Basic" - -#: src/nikonmn.cpp:413 -msgid "VGA Normal" -msgstr "VGA Normal" - -#: src/nikonmn.cpp:414 -msgid "VGA Fine" -msgstr "VGA Fine" - -#: src/nikonmn.cpp:415 -msgid "SXGA Basic" -msgstr "SXGA Basic" - -#: src/nikonmn.cpp:416 -msgid "SXGA Normal" -msgstr "SXGA Normal" - -#: src/nikonmn.cpp:417 -msgid "SXGA Fine" -msgstr "SXGA Fine" - -#: src/nikonmn.cpp:429 -msgid "Bright+" -msgstr "ЯркоÑÑ‚ÑŒ+" - -#: src/nikonmn.cpp:430 -msgid "Bright-" -msgstr "ЯркоÑÑ‚ÑŒ-" - -#: src/nikonmn.cpp:431 -msgid "Contrast+" -msgstr "КонтраÑÑ‚+" - -#: src/nikonmn.cpp:432 -msgid "Contrast-" -msgstr "КонтраÑÑ‚-" - -#: src/nikonmn.cpp:451 -#, fuzzy -msgid "Speedlight" -msgstr "Дневной Ñвет" - -#: src/nikonmn.cpp:491 -#, fuzzy -msgid "Unknown Nikon2MakerNote tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг CanonMakerNote" - -#: src/nikonmn.cpp:532 src/olympusmn.cpp:282 -#, fuzzy -msgid "Flash Device" -msgstr "Ð’Ñпышка Ñработала" - -#: src/nikonmn.cpp:532 src/olympusmn.cpp:283 -#, fuzzy -msgid "Flash device" -msgstr "Режим вÑпышки" - -#: src/nikonmn.cpp:534 src/olympusmn.cpp:249 src/panasonicmn.cpp:248 -#, fuzzy -msgid "White Balance Bias" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/nikonmn.cpp:534 src/olympusmn.cpp:250 -#, fuzzy -msgid "White balance bias" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/nikonmn.cpp:535 src/olympusmn.cpp:932 -#, fuzzy -msgid "WB RB Levels" -msgstr "ЗарÑд батареи" - -#: src/nikonmn.cpp:535 src/olympusmn.cpp:932 -#, fuzzy -msgid "WB RB levels" -msgstr "ЗарÑд батареи" - -#: src/nikonmn.cpp:536 -#, fuzzy -msgid "Program Shift" -msgstr "Программа" - -#: src/nikonmn.cpp:536 -#, fuzzy -msgid "Program shift" -msgstr "Программа" - -#: src/nikonmn.cpp:537 -#, fuzzy -msgid "Exposure Difference" -msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" - -#: src/nikonmn.cpp:537 -#, fuzzy -msgid "Exposure difference" -msgstr "Режим ÑкÑпозиции" - -#: src/nikonmn.cpp:540 src/pentaxmn.cpp:877 -#, fuzzy -msgid "Pointer to a preview image" -msgstr "ВерÑÐ¸Ñ ÑÑкиза" - -#: src/nikonmn.cpp:540 src/pentaxmn.cpp:878 -msgid "Offset to an IFD containing a preview image" -msgstr "" - -#: src/nikonmn.cpp:541 -#, fuzzy -msgid "Flash Comp" -msgstr "Режим вÑпышки" - -#: src/nikonmn.cpp:541 -#, fuzzy -msgid "Flash compensation setting" -msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" - -#: src/nikonmn.cpp:543 -#, fuzzy -msgid "Image Boundary" -msgstr "Ðомер изображениÑ" - -#: src/nikonmn.cpp:543 -#, fuzzy -msgid "Image boundary" -msgstr "Ðомер изображениÑ" - -#: src/nikonmn.cpp:544 -#, fuzzy -msgid "Flash exposure comp" -msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" - -#: src/nikonmn.cpp:545 -#, fuzzy -msgid "Flash Bracket Comp" -msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" - -#: src/nikonmn.cpp:545 -#, fuzzy -msgid "Flash bracket compensation applied" -msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" - -#: src/nikonmn.cpp:546 -#, fuzzy -msgid "Exposure Bracket Comp" -msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" - -#: src/nikonmn.cpp:546 -#, fuzzy -msgid "AE bracket compensation applied" -msgstr "ТонкомпенÑациÑ" - -#: src/nikonmn.cpp:547 src/olympusmn.cpp:459 -#, fuzzy -msgid "Image Processing" -msgstr "РезкоÑÑ‚ÑŒ изображениÑ" - -#: src/nikonmn.cpp:547 src/pentaxmn.cpp:985 src/pentaxmn.cpp:986 -#, fuzzy -msgid "Image processing" -msgstr "РезкоÑÑ‚ÑŒ изображениÑ" - -#: src/nikonmn.cpp:548 -#, fuzzy -msgid "Crop High Speed" -msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" - -#: src/nikonmn.cpp:548 -#, fuzzy -msgid "Crop high speed" -msgstr "ÐвторÑкие права" - -#: src/nikonmn.cpp:549 -#, fuzzy -msgid "Exposure Tuning" -msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" - -#: src/nikonmn.cpp:549 -#, fuzzy -msgid "Exposure tuning" -msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" - -#: src/nikonmn.cpp:552 -#, fuzzy -msgid "VR Info" -msgstr "Инфо" - -#: src/nikonmn.cpp:552 -#, fuzzy -msgid "VR info" -msgstr "Инфо" - -#: src/nikonmn.cpp:553 -#, fuzzy -msgid "Image Authentication" -msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" - -#: src/nikonmn.cpp:553 -#, fuzzy -msgid "Image authentication" -msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" - -#: src/nikonmn.cpp:554 -msgid "ActiveD-Lighting" -msgstr "" - -#: src/nikonmn.cpp:554 -msgid "ActiveD-lighting" -msgstr "" - -#: src/nikonmn.cpp:555 -#, fuzzy -msgid "Picture Control" -msgstr "Режим захвата" - -#: src/nikonmn.cpp:555 -#, fuzzy -msgid " Picture control" -msgstr "Режим захвата" - -#: src/nikonmn.cpp:556 -#, fuzzy -msgid "World Time" -msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" - -#: src/nikonmn.cpp:556 -#, fuzzy -msgid "World time" -msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" - -#: src/nikonmn.cpp:557 -#, fuzzy -msgid "ISO Info" -msgstr "О Ñнимке" - -#: src/nikonmn.cpp:557 -#, fuzzy -msgid "ISO info" -msgstr "ÐаÑтройка резкоÑти" - -#: src/nikonmn.cpp:558 -#, fuzzy -msgid "Vignette Control" -msgstr "Пульт Д/У?" - -#: src/nikonmn.cpp:558 -#, fuzzy -msgid "Vignette control" -msgstr "Ð‘ÐµÐ»Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ°" - -#: src/nikonmn.cpp:560 -msgid "Tone Compensation" -msgstr "ТонкомпенÑациÑ" - -#: src/nikonmn.cpp:560 -msgid "Tone compensation" -msgstr "ТонкомпенÑациÑ" - -#: src/nikonmn.cpp:566 -#, fuzzy -msgid "Mode of flash used" -msgstr "Ð’Ñпышка Ñработала" - -#: src/nikonmn.cpp:568 src/panasonicmn.cpp:244 -msgid "Shooting Mode" -msgstr "Режим Ñъемки" - -#: src/nikonmn.cpp:568 src/panasonicmn.cpp:244 src/pentaxmn.cpp:868 -msgid "Shooting mode" -msgstr "Режим Ñъемки" - -#: src/nikonmn.cpp:569 -#, fuzzy -msgid "Auto Bracket Release" -msgstr "Ðвтобрекетирование" - -#: src/nikonmn.cpp:569 -#, fuzzy -msgid "Auto bracket release" -msgstr "Ðвтобрекетирование" - -#: src/nikonmn.cpp:570 -#, fuzzy -msgid "Lens FStops" -msgstr "Тип объектива" - -#: src/nikonmn.cpp:571 -#, fuzzy -msgid "Contrast Curve" -msgstr "КонтраÑÑ‚" - -#: src/nikonmn.cpp:571 -#, fuzzy -msgid "Contrast curve" -msgstr "КонтраÑÑ‚" - -#: src/nikonmn.cpp:572 -#, fuzzy -msgid "Color Hue" -msgstr "Цветовое проÑтранÑтво" - -#: src/nikonmn.cpp:572 -#, fuzzy -msgid "Color hue" -msgstr "Цветовое проÑтранÑтво" - -#: src/nikonmn.cpp:573 src/olympusmn.cpp:253 src/olympusmn.cpp:684 -#: src/panasonicmn.cpp:282 -#, fuzzy -msgid "Scene mode" -msgstr "Тип Ñцены" - -#: src/nikonmn.cpp:574 src/olympusmn.cpp:1076 src/properties.cpp:562 -#: src/tags.cpp:826 src/tags.cpp:1649 -msgid "Light Source" -msgstr "ИÑточник Ñвета" - -#: src/nikonmn.cpp:574 src/olympusmn.cpp:1076 -msgid "Light source" -msgstr "ИÑточник Ñвета" - -#: src/nikonmn.cpp:575 -#, fuzzy -msgid "Shot info" -msgstr "О Ñнимке" - -#: src/nikonmn.cpp:576 src/nikonmn.cpp:700 -msgid "Hue Adjustment" -msgstr "ПодÑтройка оттенка" - -#: src/nikonmn.cpp:576 src/nikonmn.cpp:700 -msgid "Hue adjustment" -msgstr "ÐšÐ¾Ñ€Ñ€ÐµÐºÑ†Ð¸Ñ Ñ‚Ð¾Ð½Ð°" - -#: src/nikonmn.cpp:577 -#, fuzzy -msgid "NEF Compression" -msgstr "Сжатие" - -#: src/nikonmn.cpp:577 -#, fuzzy -msgid "NEF compression" -msgstr "Сжатие" - -#: src/nikonmn.cpp:580 src/tags.cpp:898 -#, fuzzy -msgid "Linearization Table" -msgstr "Дата оцифровки" - -#: src/nikonmn.cpp:580 -#, fuzzy -msgid "Linearization table" -msgstr "Дата оцифровки" - -#: src/nikonmn.cpp:581 -#, fuzzy -msgid "Color Balance" -msgstr "Цветовое проÑтранÑтво" - -#: src/nikonmn.cpp:581 -#, fuzzy -msgid "Color balance" -msgstr "Цветовое проÑтранÑтво" - -#: src/nikonmn.cpp:582 -msgid "Lens Data" -msgstr "Данные объектива" - -#: src/nikonmn.cpp:582 -msgid "Lens data settings" -msgstr "Параметры объектива" - -#: src/nikonmn.cpp:583 -#, fuzzy -msgid "Raw Image Center" -msgstr "Ðомер изображениÑ" - -#: src/nikonmn.cpp:583 -#, fuzzy -msgid "Raw image center" -msgstr "ВерÑÐ¸Ñ ÑÑкиза" - -#: src/nikonmn.cpp:584 -#, fuzzy -msgid "Sensor Pixel Size" -msgstr "ОчиÑтка ÑенÑора" - -#: src/nikonmn.cpp:584 -#, fuzzy -msgid "Sensor pixel size" -msgstr "ОчиÑтка ÑенÑора" - -#: src/nikonmn.cpp:586 -#, fuzzy -msgid "Scene Assist" -msgstr "Тип Ñцены" - -#: src/nikonmn.cpp:586 -#, fuzzy -msgid "Scene assist" -msgstr "Тип Ñцены" - -#: src/nikonmn.cpp:587 -#, fuzzy -msgid "Retouch History" -msgstr "Длина изображениÑ" - -#: src/nikonmn.cpp:587 -msgid "Retouch history" -msgstr "" - -#: src/nikonmn.cpp:589 -#, fuzzy -msgid "Serial NO" -msgstr "Серийный номер" - -#: src/nikonmn.cpp:589 -msgid "Camera serial number, usually starts with \"NO= \"" -msgstr "" - -#: src/nikonmn.cpp:590 -#, fuzzy -msgid "Image Data Size" -msgstr "Размер изображениÑ" - -#: src/nikonmn.cpp:590 -#, fuzzy -msgid "Image data size" -msgstr "Размер изображениÑ" - -#: src/nikonmn.cpp:592 -#, fuzzy -msgid "Image Count" -msgstr "Ðомер изображениÑ" - -#: src/nikonmn.cpp:592 -#, fuzzy -msgid "Image count" -msgstr "Ðомер изображениÑ" - -#: src/nikonmn.cpp:593 src/nikonmn.cpp:1227 -#, fuzzy -msgid "Deleted Image Count" -msgstr "Ðомер изображениÑ" - -#: src/nikonmn.cpp:593 src/nikonmn.cpp:1227 -#, fuzzy -msgid "Deleted image count" -msgstr "Ðомер изображениÑ" - -#: src/nikonmn.cpp:594 src/nikonmn.cpp:1064 src/nikonmn.cpp:1077 -#: src/nikonmn.cpp:1137 src/nikonmn.cpp:1197 src/nikonmn.cpp:1233 -#, fuzzy -msgid "Shutter Count" -msgstr "Выдержка" - -#: src/nikonmn.cpp:594 -msgid "Number of shots taken by camera" -msgstr "" - -#: src/nikonmn.cpp:595 -#, fuzzy -msgid "Flash info" -msgstr "Ð’Ñпышка" - -#: src/nikonmn.cpp:596 -msgid "Image Optimization" -msgstr "ÐžÐ¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" - -#: src/nikonmn.cpp:596 -msgid "Image optimization" -msgstr "ÐžÐ¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" - -#: src/nikonmn.cpp:598 -#, fuzzy -msgid "Program Variation" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹" - -#: src/nikonmn.cpp:598 -#, fuzzy -msgid "Program variation" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹" - -#: src/nikonmn.cpp:600 -#, fuzzy -msgid "AF Response" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/nikonmn.cpp:600 -#, fuzzy -msgid "AF response" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/nikonmn.cpp:601 -#, fuzzy -msgid "Multi exposure" -msgstr "Режим ÑкÑпозиции" - -#: src/nikonmn.cpp:602 -#, fuzzy -msgid "High ISO Noise Reduction" -msgstr "Подавление шума" - -#: src/nikonmn.cpp:603 src/nikonmn.cpp:702 -#, fuzzy -msgid "Toning effect" -msgstr "Цветовое проÑтранÑтво" - -#: src/nikonmn.cpp:604 -#, fuzzy -msgid "AF info 2" -msgstr "СпоÑоб фокуÑировки" - -#: src/nikonmn.cpp:605 -#, fuzzy -msgid "File info" -msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" - -#: src/nikonmn.cpp:606 -#, fuzzy -msgid "AF tune" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/nikonmn.cpp:609 -#, fuzzy -msgid "Capture Data" -msgstr "Режим захвата" - -#: src/nikonmn.cpp:609 -#, fuzzy -msgid "Capture data" -msgstr "Режим захвата" - -#: src/nikonmn.cpp:610 -#, fuzzy -msgid "Capture Version" -msgstr "Режим захвата" - -#: src/nikonmn.cpp:610 -#, fuzzy -msgid "Capture version" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/nikonmn.cpp:612 -#, fuzzy -msgid "Capture Offsets" -msgstr "Режим захвата" - -#: src/nikonmn.cpp:612 -#, fuzzy -msgid "Capture offsets" -msgstr "Режим захвата" - -#: src/nikonmn.cpp:613 -#, fuzzy -msgid "Scan IFD" -msgstr "ID камеры" - -#: src/nikonmn.cpp:614 -#, fuzzy -msgid "ICC profile" -msgstr "Цветовое проÑтранÑтво" - -#: src/nikonmn.cpp:615 -#, fuzzy -msgid "Capture output" -msgstr "Режим захвата" - -#: src/nikonmn.cpp:617 -#, fuzzy -msgid "Unknown Nikon3MakerNote tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг CanonMakerNote" - -#: src/nikonmn.cpp:627 src/olympusmn.cpp:65 src/panasonicmn.cpp:140 -#: src/pentaxmn.cpp:298 -msgid "No" -msgstr "Ðет" - -#: src/nikonmn.cpp:628 src/olympusmn.cpp:66 src/panasonicmn.cpp:139 -#: src/pentaxmn.cpp:299 -msgid "Yes" -msgstr "Да" - -#: src/nikonmn.cpp:633 -msgid "Y/M/D" -msgstr "" - -#: src/nikonmn.cpp:634 -msgid "M/D/Y" -msgstr "" - -#: src/nikonmn.cpp:635 -msgid "D/M/Y" -msgstr "" - -#: src/nikonmn.cpp:647 src/nikonmn.cpp:1228 -#, fuzzy -msgid "Vibration Reduction" -msgstr "Без коррекции" - -#: src/nikonmn.cpp:647 src/nikonmn.cpp:1228 -#, fuzzy -msgid "Vibration reduction" -msgstr "Без коррекции" - -#: src/nikonmn.cpp:649 -#, fuzzy -msgid "Unknown Nikon Vibration Reduction Tag" -msgstr "Без коррекции" - -#: src/nikonmn.cpp:659 -#, fuzzy -msgid "Default Settings" -msgstr "ÐаÑтройка резкоÑти" - -#: src/nikonmn.cpp:660 src/nikonmn.cpp:695 -#, fuzzy -msgid "Quick Adjust" -msgstr "ПодÑтройка оттенка" - -#: src/nikonmn.cpp:661 -#, fuzzy -msgid "Full Control" -msgstr "Режим захвата" - -#: src/nikonmn.cpp:682 -msgid "Blue-green" -msgstr "" - -#: src/nikonmn.cpp:684 -msgid "Purple-blue" -msgstr "" - -#: src/nikonmn.cpp:685 -msgid "Red-purple" -msgstr "" - -#: src/nikonmn.cpp:692 src/properties.cpp:980 -#, fuzzy -msgid "Name" -msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" - -#: src/nikonmn.cpp:693 -msgid "Base" -msgstr "" - -#: src/nikonmn.cpp:694 -#, fuzzy -msgid "Adjust" -msgstr "КоррекциÑ" - -#: src/nikonmn.cpp:695 -#, fuzzy -msgid "Quick adjust" -msgstr "ÐšÐ¾Ñ€Ñ€ÐµÐºÑ†Ð¸Ñ Ñ‚Ð¾Ð½Ð°" - -#: src/nikonmn.cpp:701 -#, fuzzy -msgid "Filter effect" -msgstr "Цветовой Ñффект" - -#: src/nikonmn.cpp:703 -#, fuzzy -msgid "Toning Saturation" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/nikonmn.cpp:703 -#, fuzzy -msgid "Toning saturation" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/nikonmn.cpp:705 -#, fuzzy -msgid "Unknown Nikon Picture Control Tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг" - -#: src/nikonmn.cpp:722 -#, fuzzy -msgid "AF Fine Tune" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/nikonmn.cpp:722 -#, fuzzy -msgid "AF fine tune" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/nikonmn.cpp:723 -#, fuzzy -msgid "AF Fine Tune Index" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/nikonmn.cpp:723 -#, fuzzy -msgid "AF fine tune index" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/nikonmn.cpp:724 -#, fuzzy -msgid "AF Fine Tune Adjustment" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/nikonmn.cpp:724 -#, fuzzy -msgid "AF fine tune adjustment" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/nikonmn.cpp:726 -#, fuzzy -msgid "Unknown Nikon AF Fine Tune Tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг" - -#: src/nikonmn.cpp:736 -#, fuzzy -msgid "Timezone" -msgstr "Ðичего" - -#: src/nikonmn.cpp:737 -#, fuzzy -msgid "Daylight Savings" -msgstr "Дневной Ñвет" - -#: src/nikonmn.cpp:737 -#, fuzzy -msgid "Daylight savings" -msgstr "Дневной Ñвет" - -#: src/nikonmn.cpp:738 -#, fuzzy -msgid "Date Display Format" -msgstr "Формат файла" - -#: src/nikonmn.cpp:738 -#, fuzzy -msgid "Date display format" -msgstr "Формат файла" - -#: src/nikonmn.cpp:740 -#, fuzzy -msgid "Unknown Nikon World Time Tag" -msgstr "ÐеизвеÑтный панорамный Ñ‚Ñг Canon" - -#: src/nikonmn.cpp:751 -#, fuzzy -msgid "Hi 0.3" -msgstr "HV10" - -#: src/nikonmn.cpp:752 -#, fuzzy -msgid "Hi 0.5" -msgstr "HV10" - -#: src/nikonmn.cpp:753 -#, fuzzy -msgid "Hi 0.7" -msgstr "HV10" - -#: src/nikonmn.cpp:754 -#, fuzzy -msgid "Hi 1.0" -msgstr "HV10" - -#: src/nikonmn.cpp:755 -#, fuzzy -msgid "Hi 1.3" -msgstr "HV10" - -#: src/nikonmn.cpp:756 -#, fuzzy -msgid "Hi 1.5" -msgstr "HV10" - -#: src/nikonmn.cpp:757 -#, fuzzy -msgid "Hi 1.7" -msgstr "HV10" - -#: src/nikonmn.cpp:758 -#, fuzzy -msgid "Hi 2.0" -msgstr "HV10" - -#: src/nikonmn.cpp:759 -msgid "Lo 0.3" -msgstr "" - -#: src/nikonmn.cpp:760 -msgid "Lo 0.5" -msgstr "" - -#: src/nikonmn.cpp:761 -msgid "Lo 0.7" -msgstr "" - -#: src/nikonmn.cpp:762 -#, fuzzy -msgid "Lo 1.0" -msgstr "HV10" - -#: src/nikonmn.cpp:768 -#, fuzzy -msgid "ISO Expansion" -msgstr "Выбор ISO" - -#: src/nikonmn.cpp:768 -#, fuzzy -msgid "ISO expansion" -msgstr "Выбор ISO" - -#: src/nikonmn.cpp:769 -#, fuzzy -msgid "ISO 2" -msgstr "О Ñнимке" - -#: src/nikonmn.cpp:770 -#, fuzzy -msgid "ISO Expansion 2" -msgstr "Выбор ISO" - -#: src/nikonmn.cpp:770 -#, fuzzy -msgid "ISO expansion 2" -msgstr "Выбор ISO" - -#: src/nikonmn.cpp:772 -#, fuzzy -msgid "Unknown Nikon Iso Info Tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг" - -#: src/nikonmn.cpp:782 -#, fuzzy -msgid "Single Area" -msgstr "One-Shot" - -#: src/nikonmn.cpp:783 -#, fuzzy -msgid "Dynamic Area" -msgstr "ДинамичеÑкий диапазон" - -#: src/nikonmn.cpp:784 -msgid "Dynamic Area, Closest Subject" -msgstr "" - -#: src/nikonmn.cpp:785 -msgid "Group Dynamic" -msgstr "" - -#: src/nikonmn.cpp:786 -#, fuzzy -msgid "Single Area (wide)" -msgstr "Серийный номер" - -#: src/nikonmn.cpp:787 -#, fuzzy -msgid "Dynamic Area (wide)" -msgstr "ДинамичеÑкий диапазон" - -#: src/nikonmn.cpp:795 src/nikonmn.cpp:810 src/pentaxmn.cpp:219 -#, fuzzy -msgid "Mid-left" -msgstr "ЛеваÑ" - -#: src/nikonmn.cpp:796 src/nikonmn.cpp:811 src/pentaxmn.cpp:221 -#, fuzzy -msgid "Mid-right" -msgstr "Ñлева направо" - -#: src/nikonmn.cpp:801 src/nikonmn.cpp:816 -#, fuzzy -msgid "Far Left" -msgstr "Ñправа налево" - -#: src/nikonmn.cpp:802 src/nikonmn.cpp:817 -#, fuzzy -msgid "Far Right" -msgstr "ÐвторÑкие права" - -#: src/nikonmn.cpp:822 src/nikonmn.cpp:845 -#, fuzzy -msgid "AF area mode" -msgstr "Режим вÑпышки" - -#: src/nikonmn.cpp:823 src/olympusmn.cpp:1008 src/pentaxmn.cpp:902 -#, fuzzy -msgid "AF point" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/nikonmn.cpp:824 -#, fuzzy -msgid "AF Points In Focus" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/nikonmn.cpp:824 -#, fuzzy -msgid "AF points in focus" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/nikonmn.cpp:826 -#, fuzzy -msgid "Unknown Nikon Auto Focus Tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг" - -#: src/nikonmn.cpp:837 -msgid "On (51-point)" -msgstr "" - -#: src/nikonmn.cpp:838 -msgid "On (11-point)" -msgstr "" - -#: src/nikonmn.cpp:844 -#, fuzzy -msgid "Contrast Detect AF" -msgstr "ÐаÑтройка контраÑта" - -#: src/nikonmn.cpp:844 -#, fuzzy -msgid "Contrast detect AF" -msgstr "ÐаÑтройка контраÑта" - -#: src/nikonmn.cpp:846 -#, fuzzy -msgid "Phase Detect AF" -msgstr "Ðе удалоÑÑŒ прочитать" - -#: src/nikonmn.cpp:846 -#, fuzzy -msgid "Phase detect AF" -msgstr "Ðе удалоÑÑŒ прочитать" - -#: src/nikonmn.cpp:847 -#, fuzzy -msgid "Primary AF Point" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/nikonmn.cpp:847 -#, fuzzy -msgid "Primary AF point" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/nikonmn.cpp:849 -#, fuzzy -msgid "AF Image Width" -msgstr "Ширина изображениÑ" - -#: src/nikonmn.cpp:849 -#, fuzzy -msgid "AF image width" -msgstr "Ширина изображениÑ" - -#: src/nikonmn.cpp:850 -#, fuzzy -msgid "AF Image Height" -msgstr "Длина изображениÑ" - -#: src/nikonmn.cpp:850 -#, fuzzy -msgid "AF image height" -msgstr "Ð’Ñ‹Ñота изображениÑ" - -#: src/nikonmn.cpp:851 -#, fuzzy -msgid "AF Area X Position" -msgstr "СпоÑоб фокуÑировки" - -#: src/nikonmn.cpp:851 -#, fuzzy -msgid "AF area x position" -msgstr "СпоÑоб фокуÑировки" - -#: src/nikonmn.cpp:852 -#, fuzzy -msgid "AF Area Y Position" -msgstr "СпоÑоб фокуÑировки" - -#: src/nikonmn.cpp:852 -#, fuzzy -msgid "AF area y position" -msgstr "СпоÑоб фокуÑировки" - -#: src/nikonmn.cpp:853 -#, fuzzy -msgid "AF Area Width" -msgstr "СпоÑоб фокуÑировки" - -#: src/nikonmn.cpp:853 -#, fuzzy -msgid "AF area width" -msgstr "Режим вÑпышки" - -#: src/nikonmn.cpp:854 -#, fuzzy -msgid "AF Area Height" -msgstr "СпоÑоб фокуÑировки" - -#: src/nikonmn.cpp:854 -#, fuzzy -msgid "AF area height" -msgstr "ÐвторÑкие права" - -#: src/nikonmn.cpp:855 -#, fuzzy -msgid "Contrast Detect AF In Focus" -msgstr "ÐаÑтройка контраÑта" - -#: src/nikonmn.cpp:855 -#, fuzzy -msgid "Contrast detect AF in focus" -msgstr "ÐаÑтройка контраÑта" - -#: src/nikonmn.cpp:857 -#, fuzzy -msgid "Unknown Nikon Auto Focus 2 Tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг" - -#: src/nikonmn.cpp:868 -#, fuzzy -msgid "Directory Number" -msgstr "Ðомер заказа" - -#: src/nikonmn.cpp:868 -#, fuzzy -msgid "Directory number" -msgstr "Ðомер заказа" - -#: src/nikonmn.cpp:871 -#, fuzzy -msgid "Unknown Nikon File Info Tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг" - -#: src/nikonmn.cpp:882 src/pentaxmn.cpp:542 -#, fuzzy -msgid "Multiple Exposure" -msgstr "Режим ÑкÑпозиции" - -#: src/nikonmn.cpp:883 -#, fuzzy -msgid "Image Overlay" -msgstr "Тип изображениÑ" - -#: src/nikonmn.cpp:889 -#, fuzzy -msgid "Multi Exposure Mode" -msgstr "Режим ÑкÑпозиции" - -#: src/nikonmn.cpp:889 -#, fuzzy -msgid "Multi exposure mode" -msgstr "Режим ÑкÑпозиции" - -#: src/nikonmn.cpp:890 -#, fuzzy -msgid "Multi Exposure Shots" -msgstr "Режим ÑкÑпозиции" - -#: src/nikonmn.cpp:890 -#, fuzzy -msgid "Multi exposure shots" -msgstr "Режим ÑкÑпозиции" - -#: src/nikonmn.cpp:891 -#, fuzzy -msgid "Multi Exposure Auto Gain" -msgstr "Режим ÑкÑпозиции" - -#: src/nikonmn.cpp:891 -#, fuzzy -msgid "Multi exposure auto gain" -msgstr "Режим ÑкÑпозиции" - -#: src/nikonmn.cpp:893 src/nikonmn.cpp:1013 src/nikonmn.cpp:1033 -#: src/nikonmn.cpp:1053 -#, fuzzy -msgid "Unknown Nikon Multi Exposure Tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг" - -#: src/nikonmn.cpp:905 src/olympusmn.cpp:143 -#, fuzzy -msgid "Internal" -msgstr "Intel" - -#: src/nikonmn.cpp:911 -msgid "1.01 (SB-800 or Metz 58 AF-1)" -msgstr "" - -#: src/nikonmn.cpp:912 -msgid "1.03 (SB-800)" -msgstr "" - -#: src/nikonmn.cpp:913 -msgid "2.01 (SB-800)" -msgstr "" - -#: src/nikonmn.cpp:914 -msgid "2.04 (SB-600)" -msgstr "" - -#: src/nikonmn.cpp:915 -msgid "2.05 (SB-600)" -msgstr "" - -#: src/nikonmn.cpp:916 -msgid "3.01 (SU-800 Remote Commander)" -msgstr "" - -#: src/nikonmn.cpp:917 -msgid "4.01 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:918 -msgid "4.02 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:919 -msgid "4.04 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:920 -msgid "5.01 (SB-900)" -msgstr "" - -#: src/nikonmn.cpp:921 -msgid "5.02 (SB-900)" -msgstr "" - -#: src/nikonmn.cpp:927 -msgid "0.1 m" -msgstr "" - -#: src/nikonmn.cpp:928 -msgid "0.2 m" -msgstr "" - -#: src/nikonmn.cpp:929 -msgid "0.3 m" -msgstr "" - -#: src/nikonmn.cpp:930 -msgid "0.4 m" -msgstr "" - -#: src/nikonmn.cpp:931 -msgid "0.5 m" -msgstr "" - -#: src/nikonmn.cpp:932 -msgid "0.6 m" -msgstr "" - -#: src/nikonmn.cpp:933 -msgid "0.7 m" -msgstr "" - -#: src/nikonmn.cpp:934 -msgid "0.8 m" -msgstr "" - -#: src/nikonmn.cpp:935 -msgid "0.9 m" -msgstr "" - -#: src/nikonmn.cpp:936 -msgid "1.0 m" -msgstr "" - -#: src/nikonmn.cpp:937 -msgid "1.1 m" -msgstr "" - -#: src/nikonmn.cpp:938 -msgid "1.3 m" -msgstr "" - -#: src/nikonmn.cpp:939 -msgid "1.4 m" -msgstr "" - -#: src/nikonmn.cpp:940 -msgid "1.6 m" -msgstr "" - -#: src/nikonmn.cpp:941 -msgid "1.8 m" -msgstr "" - -#: src/nikonmn.cpp:942 -msgid "2.0 m" -msgstr "" - -#: src/nikonmn.cpp:943 -msgid "2.2 m" -msgstr "" - -#: src/nikonmn.cpp:944 -msgid "2.5 m" -msgstr "" - -#: src/nikonmn.cpp:945 -msgid "2.8 m" -msgstr "" - -#: src/nikonmn.cpp:946 -msgid "3.2 m" -msgstr "" - -#: src/nikonmn.cpp:947 -msgid "3.6 m" -msgstr "" - -#: src/nikonmn.cpp:948 -msgid "4.0 m" -msgstr "" - -#: src/nikonmn.cpp:949 -msgid "4.5 m" -msgstr "" - -#: src/nikonmn.cpp:950 -msgid "5.0 m" -msgstr "" - -#: src/nikonmn.cpp:951 -msgid "5.6 m" -msgstr "" - -#: src/nikonmn.cpp:952 -msgid "6.3 m" -msgstr "" - -#: src/nikonmn.cpp:953 -msgid "7.1 m" -msgstr "" - -#: src/nikonmn.cpp:954 -msgid "8.0 m" -msgstr "" - -#: src/nikonmn.cpp:955 -msgid "9.0 m" -msgstr "" - -#: src/nikonmn.cpp:956 -#, fuzzy -msgid "10.0 m" -msgstr "100" - -#: src/nikonmn.cpp:957 -msgid "11.0 m" -msgstr "" - -#: src/nikonmn.cpp:958 -msgid "13.0 m" -msgstr "" - -#: src/nikonmn.cpp:959 -msgid "14.0 m" -msgstr "" - -#: src/nikonmn.cpp:960 -#, fuzzy -msgid "16.0 m" -msgstr "160" - -#: src/nikonmn.cpp:961 -msgid "18.0 m" -msgstr "" - -#: src/nikonmn.cpp:962 -msgid "20.0 m" -msgstr "" - -#: src/nikonmn.cpp:969 -#, fuzzy -msgid "iTTL-BL" -msgstr "TTL" - -#: src/nikonmn.cpp:970 -#, fuzzy -msgid "iTTL" -msgstr "TTL" - -#: src/nikonmn.cpp:971 -#, fuzzy -msgid "Auto Aperture" -msgstr "Диафрагма" - -#: src/nikonmn.cpp:973 -msgid "GN (distance priority)" -msgstr "" - -#: src/nikonmn.cpp:975 src/nikonmn.cpp:976 -msgid "Repeating Flash" -msgstr "" - -#: src/nikonmn.cpp:982 -#, fuzzy -msgid "Bounce Flash" -msgstr "Без вÑпышки" - -#: src/nikonmn.cpp:983 -msgid "Wide Flash Adapter" -msgstr "" - -#: src/nikonmn.cpp:989 -msgid "FL-GL1" -msgstr "" - -#: src/nikonmn.cpp:990 -msgid "FL-GL2" -msgstr "" - -#: src/nikonmn.cpp:991 -msgid "TN-A1" -msgstr "" - -#: src/nikonmn.cpp:992 -msgid "TN-A2" -msgstr "" - -#: src/nikonmn.cpp:996 -#, fuzzy -msgid "Amber" -msgstr "ЧиÑло F" - -#: src/nikonmn.cpp:1002 src/nikonmn.cpp:1024 src/nikonmn.cpp:1044 -#, fuzzy -msgid "Flash Source" -msgstr "ИÑточник файла" - -#: src/nikonmn.cpp:1002 src/nikonmn.cpp:1024 src/nikonmn.cpp:1044 -#, fuzzy -msgid "Flash source" -msgstr "ИÑточник файла" - -#: src/nikonmn.cpp:1003 src/nikonmn.cpp:1025 -msgid "0x0005" -msgstr "" - -#: src/nikonmn.cpp:1004 src/nikonmn.cpp:1026 src/nikonmn.cpp:1045 -#, fuzzy -msgid "External Flash Firmware" -msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" - -#: src/nikonmn.cpp:1004 src/nikonmn.cpp:1026 src/nikonmn.cpp:1045 -#, fuzzy -msgid "External flash firmware" -msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" - -#: src/nikonmn.cpp:1005 src/nikonmn.cpp:1027 src/nikonmn.cpp:1046 -#, fuzzy -msgid "External Flash Flags" -msgstr "ВнешнÑÑ Ð²Ñпышка" - -#: src/nikonmn.cpp:1005 src/nikonmn.cpp:1027 src/nikonmn.cpp:1046 -#, fuzzy -msgid "External flash flags" -msgstr "ВнешнÑÑ Ð²Ñпышка" - -#: src/nikonmn.cpp:1006 src/nikonmn.cpp:1028 src/nikonmn.cpp:1047 -#, fuzzy -msgid "Flash Focal Length" -msgstr "ФокуÑное раÑÑтоÑние" - -#: src/nikonmn.cpp:1006 src/nikonmn.cpp:1028 src/nikonmn.cpp:1047 -#, fuzzy -msgid "Flash focal length" -msgstr "МакÑимальное фокуÑное раÑÑтоÑние" - -#: src/nikonmn.cpp:1007 src/nikonmn.cpp:1029 src/nikonmn.cpp:1048 -msgid "Repeating Flash Rate" -msgstr "" - -#: src/nikonmn.cpp:1007 src/nikonmn.cpp:1029 src/nikonmn.cpp:1048 -#, fuzzy -msgid "Repeating flash rate" -msgstr "Файл переименовываетÑÑ Ð²" - -#: src/nikonmn.cpp:1008 src/nikonmn.cpp:1030 src/nikonmn.cpp:1049 -msgid "Repeating Flash Count" -msgstr "" - -#: src/nikonmn.cpp:1008 src/nikonmn.cpp:1030 src/nikonmn.cpp:1049 -msgid "Repeating flash count" -msgstr "" - -#: src/nikonmn.cpp:1009 src/nikonmn.cpp:1031 src/nikonmn.cpp:1050 -#, fuzzy -msgid "Flash GN Distance" -msgstr "РаÑÑтоÑние ручного фокуÑа" - -#: src/nikonmn.cpp:1009 src/nikonmn.cpp:1031 src/nikonmn.cpp:1050 -#, fuzzy -msgid "Flash GN distance" -msgstr "РаÑÑтоÑние ручного фокуÑа" - -#: src/nikonmn.cpp:1010 -msgid "Flash Group A Control Mode" -msgstr "" - -#: src/nikonmn.cpp:1010 -msgid "Flash group a control mode" -msgstr "" - -#: src/nikonmn.cpp:1011 -msgid "Flash Group B Control Mode" -msgstr "" - -#: src/nikonmn.cpp:1011 -msgid "Flash group b control mode" -msgstr "" - -#: src/nikonmn.cpp:1051 -#, fuzzy -msgid "Flash Color Filter" -msgstr "Цветовое проÑтранÑтво" - -#: src/nikonmn.cpp:1051 -#, fuzzy -msgid "Flash color filter" -msgstr "Цветовое проÑтранÑтво" - -#: src/nikonmn.cpp:1064 src/nikonmn.cpp:1077 src/nikonmn.cpp:1137 -#: src/nikonmn.cpp:1197 src/nikonmn.cpp:1233 src/pentaxmn.cpp:1042 -#: src/pentaxmn.cpp:1043 -#, fuzzy -msgid "Shutter count" -msgstr "Выдержка" - -#: src/nikonmn.cpp:1066 -#, fuzzy -msgid "Unknown Nikon Shot Info D80 Tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг" - -#: src/nikonmn.cpp:1078 src/sonymn.cpp:408 src/sonymn.cpp:409 -#, fuzzy -msgid "Flash Level" -msgstr "Ð’Ñпышка Ñработала" - -#: src/nikonmn.cpp:1078 -#, fuzzy -msgid "Flash level" -msgstr "Ð’Ñпышка Ñработала" - -#: src/nikonmn.cpp:1080 -#, fuzzy -msgid "Unknown Nikon Shot Info D40 Tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг" - -#: src/nikonmn.cpp:1090 src/nikonmn.cpp:1150 -#, fuzzy -msgid "0" -msgstr "50" - -#: src/nikonmn.cpp:1091 src/nikonmn.cpp:1159 -#, fuzzy -msgid "+1" -msgstr "160" - -#: src/nikonmn.cpp:1092 src/nikonmn.cpp:1160 -#, fuzzy -msgid "+2" -msgstr "250" - -#: src/nikonmn.cpp:1093 src/nikonmn.cpp:1161 -msgid "+4" -msgstr "" - -#: src/nikonmn.cpp:1094 src/nikonmn.cpp:1162 -msgid "+8" -msgstr "" - -#: src/nikonmn.cpp:1095 src/nikonmn.cpp:1163 -#, fuzzy -msgid "+16" -msgstr "160" - -#: src/nikonmn.cpp:1096 src/nikonmn.cpp:1164 -#, fuzzy -msgid "-16" -msgstr "160" - -#: src/nikonmn.cpp:1097 src/nikonmn.cpp:1165 -msgid "-8" -msgstr "" - -#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1166 -msgid "-4" -msgstr "" - -#: src/nikonmn.cpp:1099 src/nikonmn.cpp:1167 -#, fuzzy -msgid "-2" -msgstr "250" - -#: src/nikonmn.cpp:1100 src/nikonmn.cpp:1168 -#, fuzzy -msgid "-1" -msgstr "160" - -#: src/nikonmn.cpp:1101 src/nikonmn.cpp:1169 -#, fuzzy -msgid "+17" -msgstr "160" - -#: src/nikonmn.cpp:1102 src/nikonmn.cpp:1170 -#, fuzzy -msgid "-17" -msgstr "160" - -#: src/nikonmn.cpp:1103 src/nikonmn.cpp:1171 -msgid "+9" -msgstr "" - -#: src/nikonmn.cpp:1104 src/nikonmn.cpp:1172 -#, fuzzy -msgid "+18" -msgstr "160" - -#: src/nikonmn.cpp:1105 src/nikonmn.cpp:1173 -#, fuzzy -msgid "-18" -msgstr "160" - -#: src/nikonmn.cpp:1106 src/nikonmn.cpp:1174 -msgid "-9" -msgstr "" - -#: src/nikonmn.cpp:1107 src/nikonmn.cpp:1175 -#, fuzzy -msgid "+19" -msgstr "160" - -#: src/nikonmn.cpp:1108 src/nikonmn.cpp:1176 -#, fuzzy -msgid "-19" -msgstr "160" - -#: src/nikonmn.cpp:1109 src/nikonmn.cpp:1177 -msgid "+5" -msgstr "" - -#: src/nikonmn.cpp:1110 src/nikonmn.cpp:1178 -#, fuzzy -msgid "+10" -msgstr "10Ñ" - -#: src/nikonmn.cpp:1111 src/nikonmn.cpp:1179 -#, fuzzy -msgid "+20" -msgstr "250" - -#: src/nikonmn.cpp:1112 src/nikonmn.cpp:1180 -#, fuzzy -msgid "-20" -msgstr "250" - -#: src/nikonmn.cpp:1113 src/nikonmn.cpp:1181 -#, fuzzy -msgid "-10" -msgstr "10Ñ" - -#: src/nikonmn.cpp:1114 src/nikonmn.cpp:1182 -msgid "-5" -msgstr "" - -#: src/nikonmn.cpp:1115 src/nikonmn.cpp:1183 -#, fuzzy -msgid "+11" -msgstr "160" - -#: src/nikonmn.cpp:1116 src/nikonmn.cpp:1184 -#, fuzzy -msgid "-11" -msgstr "160" - -#: src/nikonmn.cpp:1117 src/nikonmn.cpp:1185 -msgid "+3" -msgstr "" - -#: src/nikonmn.cpp:1118 src/nikonmn.cpp:1186 -#, fuzzy -msgid "+6" -msgstr "160" - -#: src/nikonmn.cpp:1119 src/nikonmn.cpp:1187 -#, fuzzy -msgid "+12" -msgstr "160" - -#: src/nikonmn.cpp:1120 src/nikonmn.cpp:1188 -#, fuzzy -msgid "-12" -msgstr "160" - -#: src/nikonmn.cpp:1121 src/nikonmn.cpp:1189 -#, fuzzy -msgid "-6" -msgstr "160" - -#: src/nikonmn.cpp:1122 src/nikonmn.cpp:1190 -msgid "-3" -msgstr "" - -#: src/nikonmn.cpp:1123 src/nikonmn.cpp:1151 -#, fuzzy -msgid "+13" -msgstr "160" - -#: src/nikonmn.cpp:1124 src/nikonmn.cpp:1152 -#, fuzzy -msgid "-13" -msgstr "160" - -#: src/nikonmn.cpp:1125 src/nikonmn.cpp:1153 -msgid "+7" -msgstr "" - -#: src/nikonmn.cpp:1126 src/nikonmn.cpp:1154 -#, fuzzy -msgid "+14" -msgstr "160" - -#: src/nikonmn.cpp:1127 src/nikonmn.cpp:1155 -#, fuzzy -msgid "-14" -msgstr "160" - -#: src/nikonmn.cpp:1128 src/nikonmn.cpp:1156 -msgid "-7" -msgstr "" - -#: src/nikonmn.cpp:1129 src/nikonmn.cpp:1157 -#, fuzzy -msgid "+15" -msgstr "160" - -#: src/nikonmn.cpp:1130 src/nikonmn.cpp:1158 -#, fuzzy -msgid "-15" -msgstr "160" - -#: src/nikonmn.cpp:1138 src/nikonmn.cpp:1198 -#, fuzzy -msgid "AF Fine Tune Adj" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/nikonmn.cpp:1138 src/nikonmn.cpp:1198 -#, fuzzy -msgid "AF fine tune adj" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/nikonmn.cpp:1140 -#, fuzzy -msgid "Unknown Nikon Shot Info D300 (a) Tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг" - -#: src/nikonmn.cpp:1200 -#, fuzzy -msgid "Unknown Nikon Shot Info D300 (b) Tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг" - -#: src/nikonmn.cpp:1213 -#, fuzzy -msgid "On (3)" -msgstr "Вкл" - -#: src/nikonmn.cpp:1226 -#, fuzzy -msgid "Shutter Count 1" -msgstr "Выдержка" - -#: src/nikonmn.cpp:1226 -#, fuzzy -msgid "Shutter count 1" -msgstr "Выдержка" - -#: src/nikonmn.cpp:1229 -#, fuzzy -msgid "Vibration Reduction 1" -msgstr "Без коррекции" - -#: src/nikonmn.cpp:1229 -#, fuzzy -msgid "Vibration reduction 1" -msgstr "Без коррекции" - -#: src/nikonmn.cpp:1230 -#, fuzzy -msgid "Shutter Count 2" -msgstr "Выдержка" - -#: src/nikonmn.cpp:1230 -#, fuzzy -msgid "Shutter count 2" -msgstr "Выдержка" - -#: src/nikonmn.cpp:1231 -#, fuzzy -msgid "Vibration Reduction 2" -msgstr "Без коррекции" - -#: src/nikonmn.cpp:1231 -#, fuzzy -msgid "Vibration reduction 2" -msgstr "Без коррекции" - -#: src/nikonmn.cpp:1235 -#, fuzzy -msgid "Unknown Nikon Shot Info Tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг" - -#: src/nikonmn.cpp:1246 -#, fuzzy -msgid "WB RBGG Levels" -msgstr "ЗарÑд батареи" - -#: src/nikonmn.cpp:1246 -#, fuzzy -msgid "WB RBGG levels" -msgstr "ЗарÑд батареи" - -#: src/nikonmn.cpp:1248 -#, fuzzy -msgid "Unknown Nikon Color Balance 1 Tag" -msgstr "Цветовое проÑтранÑтво" - -#: src/nikonmn.cpp:1259 src/nikonmn.cpp:1272 src/nikonmn.cpp:1285 -#, fuzzy -msgid "WB RGGB Levels" -msgstr "ЗарÑд батареи" - -#: src/nikonmn.cpp:1259 src/nikonmn.cpp:1272 src/nikonmn.cpp:1285 -#, fuzzy -msgid "WB RGGB levels" -msgstr "ЗарÑд батареи" - -#: src/nikonmn.cpp:1261 -#, fuzzy -msgid "Unknown Nikon Color Balance 2 Tag" -msgstr "Цветовое проÑтранÑтво" - -#: src/nikonmn.cpp:1274 -#, fuzzy -msgid "Unknown Nikon Color Balance 2a Tag" -msgstr "Цветовое проÑтранÑтво" - -#: src/nikonmn.cpp:1287 -#, fuzzy -msgid "Unknown Nikon Color Balance 2b Tag" -msgstr "Цветовое проÑтранÑтво" - -#: src/nikonmn.cpp:1298 -#, fuzzy -msgid "WB RGBG Levels" -msgstr "ЗарÑд батареи" - -#: src/nikonmn.cpp:1298 -#, fuzzy -msgid "WB RGBG levels" -msgstr "ЗарÑд батареи" - -#: src/nikonmn.cpp:1300 -#, fuzzy -msgid "Unknown Nikon Color Balance 3 Tag" -msgstr "ÐеизвеÑтный панорамный Ñ‚Ñг Canon" - -#: src/nikonmn.cpp:1311 -#, fuzzy -msgid "WB GRBG Levels" -msgstr "ЗарÑд батареи" - -#: src/nikonmn.cpp:1311 -#, fuzzy -msgid "WB GRBG levels" -msgstr "ЗарÑд батареи" - -#: src/nikonmn.cpp:1313 -#, fuzzy -msgid "Unknown Nikon Color Balance 4 Tag" -msgstr "ÐеизвеÑтный панорамный Ñ‚Ñг Canon" - -#: src/nikonmn.cpp:1324 src/nikonmn.cpp:1348 src/nikonmn.cpp:1373 -#, fuzzy -msgid "Lens ID Number" -msgstr "Серийный номер" - -#: src/nikonmn.cpp:1324 src/nikonmn.cpp:1348 src/nikonmn.cpp:1373 -#, fuzzy -msgid "Lens ID number" -msgstr "Серийный номер камеры" - -#: src/nikonmn.cpp:1325 src/nikonmn.cpp:1349 src/nikonmn.cpp:1374 -#, fuzzy -msgid "Lens F-Stops" -msgstr "Тип объектива" - -#: src/nikonmn.cpp:1325 src/nikonmn.cpp:1349 src/nikonmn.cpp:1374 -#, fuzzy -msgid "Lens F-stops" -msgstr "Тип объектива" - -#: src/nikonmn.cpp:1326 src/nikonmn.cpp:1350 src/nikonmn.cpp:1375 -#: src/olympusmn.cpp:751 -#, fuzzy -msgid "Min Focal Length" -msgstr "ФокуÑное раÑÑтоÑние" - -#: src/nikonmn.cpp:1326 src/nikonmn.cpp:1350 src/nikonmn.cpp:1375 -#: src/olympusmn.cpp:751 -#, fuzzy -msgid "Min focal length" -msgstr "ФокуÑное раÑÑтоÑние" - -#: src/nikonmn.cpp:1327 src/nikonmn.cpp:1351 src/nikonmn.cpp:1376 -#: src/olympusmn.cpp:752 -#, fuzzy -msgid "Max Focal Length" -msgstr "ФокуÑное раÑÑтоÑние" - -#: src/nikonmn.cpp:1327 src/nikonmn.cpp:1351 src/nikonmn.cpp:1376 -#: src/olympusmn.cpp:752 -#, fuzzy -msgid "Max focal length" -msgstr "МакÑимальное фокуÑное раÑÑтоÑние" - -#: src/nikonmn.cpp:1328 src/nikonmn.cpp:1352 src/nikonmn.cpp:1377 -#: src/olympusmn.cpp:749 -#, fuzzy -msgid "Max Aperture At Min Focal" -msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" - -#: src/nikonmn.cpp:1328 src/nikonmn.cpp:1352 src/olympusmn.cpp:749 -#, fuzzy -msgid "Max aperture at min focal" -msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" - -#: src/nikonmn.cpp:1329 src/nikonmn.cpp:1353 src/nikonmn.cpp:1378 -#: src/olympusmn.cpp:750 -#, fuzzy -msgid "Max Aperture At Max Focal" -msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" - -#: src/nikonmn.cpp:1329 src/nikonmn.cpp:1353 src/olympusmn.cpp:750 -#, fuzzy -msgid "Max aperture at max focal" -msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" - -#: src/nikonmn.cpp:1330 src/nikonmn.cpp:1354 src/nikonmn.cpp:1379 -#, fuzzy -msgid "MCU Version" -msgstr "ВерÑÐ¸Ñ ARM" - -#: src/nikonmn.cpp:1330 src/nikonmn.cpp:1354 src/nikonmn.cpp:1379 -#, fuzzy -msgid "MCU version" -msgstr "ВерÑÐ¸Ñ ARM" - -#: src/nikonmn.cpp:1332 -#, fuzzy -msgid "Unknown Nikon Lens Data 1 Tag" -msgstr "ÐеизвеÑтный панорамный Ñ‚Ñг Canon" - -#: src/nikonmn.cpp:1343 src/nikonmn.cpp:1368 -msgid "Exit Pupil Position" -msgstr "" - -#: src/nikonmn.cpp:1343 src/nikonmn.cpp:1368 -msgid "Exit pupil position" -msgstr "" - -#: src/nikonmn.cpp:1344 src/nikonmn.cpp:1369 -#, fuzzy -msgid "AF Aperture" -msgstr "Диафрагма" - -#: src/nikonmn.cpp:1344 src/nikonmn.cpp:1369 -#, fuzzy -msgid "AF aperture" -msgstr "Диафрагма" - -#: src/nikonmn.cpp:1355 src/nikonmn.cpp:1380 -#, fuzzy -msgid "Effective Max Aperture" -msgstr "Диафрагма" - -#: src/nikonmn.cpp:1355 src/nikonmn.cpp:1380 -#, fuzzy -msgid "Effective max aperture" -msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" - -#: src/nikonmn.cpp:1357 -#, fuzzy -msgid "Unknown Nikon Lens Data 2 Tag" -msgstr "ÐеизвеÑтный панорамный Ñ‚Ñг Canon" - -#: src/nikonmn.cpp:1377 -#, fuzzy -msgid "Max aperture at min focal length" -msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" - -#: src/nikonmn.cpp:1378 -#, fuzzy -msgid "Max aperture at max focal length" -msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" - -#: src/nikonmn.cpp:1382 -#, fuzzy -msgid "Unknown Nikon Lens Data 3 Tag" -msgstr "ÐеизвеÑтный панорамный Ñ‚Ñг Canon" - -#: src/nikonmn.cpp:1562 -msgid "Closest subject" -msgstr "" - -#: src/nikonmn.cpp:1563 -msgid "Group dynamic-AF" -msgstr "" - -#: src/nikonmn.cpp:1586 src/tags.cpp:240 -msgid "none" -msgstr "ничего" - -#: src/nikonmn.cpp:1596 -msgid "used" -msgstr "" - -#: src/nikonmn.cpp:1622 -#, fuzzy -msgid "All 11 Points" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/nikonmn.cpp:1637 src/nikonmn.cpp:1638 src/pentaxmn.cpp:533 -#: src/pentaxmn.cpp:537 -#, fuzzy -msgid "Single-frame" -msgstr "Серийный номер" - -#: src/olympusmn.cpp:71 -#, fuzzy -msgid "Standard Quality (SQ)" -msgstr "Стандартный Ñвет A" - -#: src/olympusmn.cpp:72 -#, fuzzy -msgid "High Quality (HQ)" -msgstr "Стандартный Ñвет A" - -#: src/olympusmn.cpp:73 -#, fuzzy -msgid "Super High Quality (SHQ)" -msgstr "Стандартный Ñвет A" - -#: src/olympusmn.cpp:88 -msgid "On (preset)" -msgstr "" - -#: src/olympusmn.cpp:95 src/pentaxmn.cpp:474 -#, fuzzy -msgid "Sport" -msgstr "Спорт" - -#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 -#, fuzzy -msgid "Landscape+Portrait" -msgstr "Ðльбом" - -#: src/olympusmn.cpp:100 -#, fuzzy -msgid "Self Portrait" -msgstr "Портрет" - -#: src/olympusmn.cpp:102 -#, fuzzy -msgid "2 in 1" -msgstr "Вкл" - -#: src/olympusmn.cpp:105 -#, fuzzy -msgid "Night+Portrait" -msgstr "Ðочной портрет" - -#: src/olympusmn.cpp:111 src/panasonicmn.cpp:120 src/pentaxmn.cpp:486 -msgid "Food" -msgstr "Пища" - -#: src/olympusmn.cpp:112 -#, fuzzy -msgid "Documents" -msgstr "ID документа" - -#: src/olympusmn.cpp:114 -#, fuzzy -msgid "Shoot & Select" -msgstr "Цветовое проÑтранÑтво" - -#: src/olympusmn.cpp:115 -msgid "Beach & Snow" -msgstr "" - -#: src/olympusmn.cpp:116 -#, fuzzy -msgid "Self Portrait+Timer" -msgstr "Серийный номер" - -#: src/olympusmn.cpp:117 -#, fuzzy -msgid "Candle" -msgstr "Дневной Ñвет" - -#: src/olympusmn.cpp:118 -#, fuzzy -msgid "Available Light" -msgstr "ЗаполнÑющий Ñвет" - -#: src/olympusmn.cpp:119 -msgid "Behind Glass" -msgstr "" - -#: src/olympusmn.cpp:120 -#, fuzzy -msgid "My Mode" -msgstr "Режим вÑпышки" - -#: src/olympusmn.cpp:121 src/panasonicmn.cpp:131 src/pentaxmn.cpp:483 -#: src/sonymn.cpp:127 -#, fuzzy -msgid "Pet" -msgstr "УÑтановить" - -#: src/olympusmn.cpp:122 -#, fuzzy -msgid "Underwater Wide1" -msgstr "ÐŸÐ¾Ð´Ð²Ð¾Ð´Ð½Ð°Ñ Ñъемка" - -#: src/olympusmn.cpp:123 -#, fuzzy -msgid "Underwater Macro" -msgstr "ÐŸÐ¾Ð´Ð²Ð¾Ð´Ð½Ð°Ñ Ñъемка" - -#: src/olympusmn.cpp:124 -#, fuzzy -msgid "Shoot & Select1" -msgstr "Цветовое проÑтранÑтво" - -#: src/olympusmn.cpp:125 -#, fuzzy -msgid "Shoot & Select2" -msgstr "Цветовое проÑтранÑтво" - -#: src/olympusmn.cpp:127 -#, fuzzy -msgid "Digital Image Stabilization" -msgstr "Ð¡Ñ‚Ð°Ð±Ð¸Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñнимка" - -#: src/olympusmn.cpp:128 -#, fuzzy -msgid "Auction" -msgstr "Ðвто" - -#: src/olympusmn.cpp:131 -#, fuzzy -msgid "Underwater Wide2" -msgstr "ÐŸÐ¾Ð´Ð²Ð¾Ð´Ð½Ð°Ñ Ñъемка" - -#: src/olympusmn.cpp:133 -msgid "Children" -msgstr "" - -#: src/olympusmn.cpp:135 -#, fuzzy -msgid "Nature Macro" -msgstr "внешнÑÑ" - -#: src/olympusmn.cpp:136 -#, fuzzy -msgid "Underwater Snapshot" -msgstr "ÐŸÐ¾Ð´Ð²Ð¾Ð´Ð½Ð°Ñ Ñъемка" - -#: src/olympusmn.cpp:137 -#, fuzzy -msgid "Shooting Guide" -msgstr "Режим Ñъемки" - -#: src/olympusmn.cpp:145 -#, fuzzy -msgid "Internal + External" -msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" - -#: src/olympusmn.cpp:176 -#, fuzzy -msgid "Interlaced" -msgstr "Intel" - -#: src/olympusmn.cpp:177 -#, fuzzy -msgid "Progressive" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹" - -#: src/olympusmn.cpp:188 -#, fuzzy -msgid "Thumbnail Image" -msgstr "ЭÑкиз" - -#: src/olympusmn.cpp:189 -#, fuzzy -msgid "Thumbnail image" -msgstr "ЭÑкиз" - -#: src/olympusmn.cpp:192 src/olympusmn.cpp:744 src/olympusmn.cpp:1027 -#, fuzzy -msgid "Body Firmware Version" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/olympusmn.cpp:193 src/olympusmn.cpp:744 src/olympusmn.cpp:1027 -#, fuzzy -msgid "Body firmware version" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/olympusmn.cpp:195 -#, fuzzy -msgid "Special Mode" -msgstr "Режим вÑпышки" - -#: src/olympusmn.cpp:196 -#, fuzzy -msgid "Picture taking mode" -msgstr "Режим замера" - -#: src/olympusmn.cpp:204 -#, fuzzy -msgid "Black & White Mode" -msgstr "Чёрно-белый" - -#: src/olympusmn.cpp:205 -#, fuzzy -msgid "Black and white mode" -msgstr "Чёрно-белый" - -#: src/olympusmn.cpp:208 -#, fuzzy -msgid "Digital zoom ratio" -msgstr "КоÑффициент цифрового транÑфокатора" - -#: src/olympusmn.cpp:210 src/olympusmn.cpp:743 -#, fuzzy -msgid "Focal Plane Diagonal" -msgstr "Разрешение по X" - -#: src/olympusmn.cpp:211 src/olympusmn.cpp:743 -#, fuzzy -msgid "Focal plane diagonal" -msgstr "Разрешение по X" - -#: src/olympusmn.cpp:213 -msgid "Lens Distortion Parameters" -msgstr "" - -#: src/olympusmn.cpp:214 -msgid "Lens distortion parameters" -msgstr "" - -#: src/olympusmn.cpp:216 src/olympusmn.cpp:740 -#, fuzzy -msgid "Camera Type" -msgstr "ID камеры" - -#: src/olympusmn.cpp:217 src/olympusmn.cpp:740 -#, fuzzy -msgid "Camera type" -msgstr "ID камеры" - -#: src/olympusmn.cpp:220 -msgid "ASCII format data such as [PictureInfo]" -msgstr "" - -#: src/olympusmn.cpp:222 -msgid "Camera ID" -msgstr "ID камеры" - -#: src/olympusmn.cpp:223 -#, fuzzy -msgid "Camera ID data" -msgstr "ID камеры" - -#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:519 -#: src/sigmamn.cpp:119 src/sigmamn.cpp:120 src/tags.cpp:538 -msgid "Software" -msgstr "Программное обеÑпечение" - -#: src/olympusmn.cpp:234 src/panasonicmn.cpp:348 src/sonymn.cpp:314 -#, fuzzy -msgid "Preview Image" -msgstr "ВерÑÐ¸Ñ ÑÑкиза" - -#: src/olympusmn.cpp:235 src/panasonicmn.cpp:348 -#, fuzzy -msgid "Preview image" -msgstr "ВерÑÐ¸Ñ ÑÑкиза" - -#: src/olympusmn.cpp:237 -#, fuzzy -msgid "Pre Capture Frames" -msgstr "Режим захвата" - -#: src/olympusmn.cpp:238 -#, fuzzy -msgid "Pre-capture frames" -msgstr "Режим захвата" - -#: src/olympusmn.cpp:240 -#, fuzzy -msgid "White Board" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/olympusmn.cpp:241 -#, fuzzy -msgid "White board" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/olympusmn.cpp:243 -#, fuzzy -msgid "One Touch WB" -msgstr "One-touch" - -#: src/olympusmn.cpp:244 -#, fuzzy -msgid "One touch white balance" -msgstr "Ðвтомат. Ð±Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/olympusmn.cpp:246 src/olympusmn.cpp:678 -#, fuzzy -msgid "White Balance Bracket" -msgstr "ÐаÑтройка баланÑа белого" - -#: src/olympusmn.cpp:247 src/olympusmn.cpp:678 -#, fuzzy -msgid "White balance bracket" -msgstr "ÐаÑтройка баланÑа белого" - -#: src/olympusmn.cpp:255 src/sigmamn.cpp:116 src/sigmamn.cpp:117 -msgid "Firmware" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/olympusmn.cpp:256 -#, fuzzy -msgid "Firmwarer" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/olympusmn.cpp:261 -msgid "Data Dump 1" -msgstr "" - -#: src/olympusmn.cpp:262 -#, fuzzy -msgid "Various camera settings 1" -msgstr "Различные наÑтройки камеры" - -#: src/olympusmn.cpp:264 -msgid "Data Dump 2" -msgstr "" - -#: src/olympusmn.cpp:265 -#, fuzzy -msgid "Various camera settings 2" -msgstr "Различные наÑтройки камеры" - -#: src/olympusmn.cpp:268 -msgid "Shutter speed value" -msgstr "СкороÑÑ‚ÑŒ ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" - -#: src/olympusmn.cpp:271 -msgid "ISO speed value" -msgstr "ЧувÑтвительноÑÑ‚ÑŒ (ISO)" - -#: src/olympusmn.cpp:274 -#, fuzzy -msgid "Aperture value" -msgstr "Диафрагма" - -#: src/olympusmn.cpp:277 -#, fuzzy -msgid "Brightness value" -msgstr "ЯркоÑÑ‚ÑŒ" - -#: src/olympusmn.cpp:285 -#, fuzzy -msgid "Bracket" -msgstr "Брекетинг" - -#: src/olympusmn.cpp:286 -#, fuzzy -msgid "Exposure compensation value" -msgstr "ТонкомпенÑациÑ" - -#: src/olympusmn.cpp:288 src/olympusmn.cpp:1015 -#, fuzzy -msgid "Sensor Temperature" -msgstr "Температура объектива" - -#: src/olympusmn.cpp:289 src/olympusmn.cpp:1015 -#, fuzzy -msgid "Sensor temperature" -msgstr "Температура объектива" - -#: src/olympusmn.cpp:291 -#, fuzzy -msgid "Lens Temperature" -msgstr "Температура объектива" - -#: src/olympusmn.cpp:292 -msgid "Lens temperature" -msgstr "Температура объектива" - -#: src/olympusmn.cpp:294 -#, fuzzy -msgid "Light Condition" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/olympusmn.cpp:295 -#, fuzzy -msgid "Light condition" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/olympusmn.cpp:297 -#, fuzzy -msgid "Focus Range" -msgstr "СпоÑоб фокуÑировки" - -#: src/olympusmn.cpp:298 -#, fuzzy -msgid "Focus range" -msgstr "СпоÑоб фокуÑировки" - -#: src/olympusmn.cpp:306 -msgid "Zoom" -msgstr "ТранÑфокатор" - -#: src/olympusmn.cpp:307 src/olympusmn.cpp:1003 -#, fuzzy -msgid "Zoom step count" -msgstr "Выдержка" - -#: src/olympusmn.cpp:309 -#, fuzzy -msgid "Macro Focus" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" - -#: src/olympusmn.cpp:310 -#, fuzzy -msgid "Macro focus step count" -msgstr "Выдержка" - -#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 -#, fuzzy -msgid "Sharpness Factor" -msgstr "РезкоÑÑ‚ÑŒ" - -#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 -#, fuzzy -msgid "Sharpness factor" -msgstr "РезкоÑÑ‚ÑŒ" - -#: src/olympusmn.cpp:315 -#, fuzzy -msgid "Flash Charge Level" -msgstr "Ð’Ñпышка Ñработала" - -#: src/olympusmn.cpp:316 -#, fuzzy -msgid "Flash charge level" -msgstr "Ð’Ñпышка Ñработала" - -#: src/olympusmn.cpp:318 src/olympusmn.cpp:962 -#, fuzzy -msgid "Color Matrix" -msgstr "Цветовое проÑтранÑтво" - -#: src/olympusmn.cpp:319 src/olympusmn.cpp:962 -#, fuzzy -msgid "Color matrix" -msgstr "Цветовое проÑтранÑтво" - -#: src/olympusmn.cpp:321 -#, fuzzy -msgid "BlackLevel" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:322 src/olympusmn.cpp:967 -#, fuzzy -msgid "Black level" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:331 -msgid "White balance mode" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/olympusmn.cpp:336 src/panasonicmn.cpp:342 -#, fuzzy -msgid "Red Balance" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/olympusmn.cpp:337 src/pentaxmn.cpp:938 -#, fuzzy -msgid "Red balance" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/olympusmn.cpp:339 src/panasonicmn.cpp:343 -#, fuzzy -msgid "Blue Balance" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/olympusmn.cpp:340 src/panasonicmn.cpp:343 src/pentaxmn.cpp:935 -#, fuzzy -msgid "Blue balance" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/olympusmn.cpp:342 -#, fuzzy -msgid "Color Matrix Number" -msgstr "Цветовое проÑтранÑтво" - -#: src/olympusmn.cpp:343 -#, fuzzy -msgid "Color matrix mumber" -msgstr "Цветовое проÑтранÑтво" - -#: src/olympusmn.cpp:345 -#, fuzzy -msgid "Serial Number 2" -msgstr "Серийный номер" - -#: src/olympusmn.cpp:346 -#, fuzzy -msgid "Serial number 2" -msgstr "Серийный номер" - -#: src/olympusmn.cpp:373 src/olympusmn.cpp:671 src/pentaxmn.cpp:1028 -#: src/pentaxmn.cpp:1029 -#, fuzzy -msgid "Flash exposure compensation" -msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" - -#: src/olympusmn.cpp:381 src/olympusmn.cpp:1011 -#, fuzzy -msgid "External Flash Bounce" -msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" - -#: src/olympusmn.cpp:382 src/olympusmn.cpp:1011 -#, fuzzy -msgid "External flash bounce" -msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" - -#: src/olympusmn.cpp:384 src/olympusmn.cpp:1012 -#, fuzzy -msgid "External Flash Zoom" -msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" - -#: src/olympusmn.cpp:385 src/olympusmn.cpp:1012 -#, fuzzy -msgid "External flash zoom" -msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" - -#: src/olympusmn.cpp:387 -#, fuzzy -msgid "External Flash Mode" -msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" - -#: src/olympusmn.cpp:388 -#, fuzzy -msgid "External flash mode" -msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" - -#: src/olympusmn.cpp:396 -#, fuzzy -msgid "Color Control" -msgstr "Режим захвата" - -#: src/olympusmn.cpp:397 -#, fuzzy -msgid "Color control" -msgstr "Цветовое проÑтранÑтво" - -#: src/olympusmn.cpp:399 -msgid "ValidBits" -msgstr "" - -#: src/olympusmn.cpp:400 src/olympusmn.cpp:969 -msgid "Valid bits" -msgstr "" - -#: src/olympusmn.cpp:402 -#, fuzzy -msgid "CoringFilter" -msgstr "Цветовое проÑтранÑтво" - -#: src/olympusmn.cpp:403 src/olympusmn.cpp:965 src/olympusmn.cpp:1067 -#, fuzzy -msgid "Coring filter" -msgstr "Цветовое проÑтранÑтво" - -#: src/olympusmn.cpp:423 -msgid "Compression Ratio" -msgstr "Уровень ÑжатиÑ" - -#: src/olympusmn.cpp:424 -msgid "Compression ratio" -msgstr "Уровень ÑжатиÑ" - -#: src/olympusmn.cpp:427 -#, fuzzy -msgid "Preview image embedded" -msgstr "ВерÑÐ¸Ñ ÑÑкиза" - -#: src/olympusmn.cpp:430 -#, fuzzy -msgid "Offset of the preview image" -msgstr "ВерÑÐ¸Ñ ÑÑкиза" - -#: src/olympusmn.cpp:433 -#, fuzzy -msgid "Size of the preview image" -msgstr "ВерÑÐ¸Ñ ÑÑкиза" - -#: src/olympusmn.cpp:435 -#, fuzzy -msgid "CCD Scan Mode" -msgstr "Тип Ñцены" - -#: src/olympusmn.cpp:436 -#, fuzzy -msgid "CCD scan mode" -msgstr "Тип Ñцены" - -#: src/olympusmn.cpp:441 -#, fuzzy -msgid "Infinity Lens Step" -msgstr "БеÑконечный" - -#: src/olympusmn.cpp:442 -#, fuzzy -msgid "Infinity lens step" -msgstr "БеÑконечный" - -#: src/olympusmn.cpp:444 -#, fuzzy -msgid "Near Lens Step" -msgstr "Тип объектива" - -#: src/olympusmn.cpp:445 -#, fuzzy -msgid "Near lens step" -msgstr "Тип объектива" - -#: src/olympusmn.cpp:447 -#, fuzzy -msgid "Equipment Info" -msgstr "ВерÑÐ¸Ñ Ñ„Ð°Ð¹Ð»Ð°" - -#: src/olympusmn.cpp:448 -#, fuzzy -msgid "Camera equipment sub-IFD" -msgstr "ÐаÑтройка контраÑта" - -#: src/olympusmn.cpp:451 -#, fuzzy -msgid "Camera Settings sub-IFD" -msgstr "ÐаÑтройка контраÑта" - -#: src/olympusmn.cpp:453 -#, fuzzy -msgid "Raw Development" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/olympusmn.cpp:454 -#, fuzzy -msgid "Raw development sub-IFD" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/olympusmn.cpp:456 -#, fuzzy -msgid "Raw Development 2" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/olympusmn.cpp:457 -#, fuzzy -msgid "Raw development 2 sub-IFD" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/olympusmn.cpp:460 -#, fuzzy -msgid "Image processing sub-IFD" -msgstr "РезкоÑÑ‚ÑŒ изображениÑ" - -#: src/olympusmn.cpp:462 -#, fuzzy -msgid "Focus Info" -msgstr "СпоÑоб фокуÑировки" - -#: src/olympusmn.cpp:463 -#, fuzzy -msgid "Focus sub-IFD" -msgstr "СпоÑоб фокуÑировки" - -#: src/olympusmn.cpp:465 -#, fuzzy -msgid "Raw Info" -msgstr "Инфо" - -#: src/olympusmn.cpp:466 -#, fuzzy -msgid "Raw sub-IFD" -msgstr "Sub-IFD" - -#: src/olympusmn.cpp:470 -#, fuzzy -msgid "Unknown OlympusMakerNote tag" -msgstr "ÐеизвеÑтное поле IFD" - -#: src/olympusmn.cpp:486 -#, fuzzy -msgid "Program-shift" -msgstr "Программа" - -#: src/olympusmn.cpp:491 -#, fuzzy -msgid "Center-weighted average" -msgstr "Центрально-взвешенный Ñредний" - -#: src/olympusmn.cpp:493 -msgid "ESP" -msgstr "" - -#: src/olympusmn.cpp:494 -#, fuzzy -msgid "Pattern+AF" -msgstr "Паттерн CFA" - -#: src/olympusmn.cpp:495 -#, fuzzy -msgid "Spot+Highlight control" -msgstr "Тень" - -#: src/olympusmn.cpp:496 -#, fuzzy -msgid "Spot+Shadow control" -msgstr "Тень" - -#: src/olympusmn.cpp:508 src/olympusmn.cpp:1369 -#, fuzzy -msgid "Single AF" -msgstr "One-Shot" - -#: src/olympusmn.cpp:509 src/olympusmn.cpp:1370 -msgid "Sequential shooting AF" -msgstr "" - -#: src/olympusmn.cpp:511 src/olympusmn.cpp:1372 src/sonymn.cpp:187 -#, fuzzy -msgid "Multi AF" -msgstr "ÐвтоматичеÑкий" - -#: src/olympusmn.cpp:517 -#, fuzzy -msgid "AF Not Used" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/olympusmn.cpp:518 -#, fuzzy -msgid "AF Used" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/olympusmn.cpp:523 -#, fuzzy -msgid "Not Ready" -msgstr "Ðе определено" - -#: src/olympusmn.cpp:524 -#, fuzzy -msgid "Ready" -msgstr "Ðе определено" - -#: src/olympusmn.cpp:531 -#, fuzzy -msgid "Fill-in" -msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" - -#: src/olympusmn.cpp:533 -#, fuzzy -msgid "Slow-sync" -msgstr "Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ ÑинхронизациÑ" - -#: src/olympusmn.cpp:534 -#, fuzzy -msgid "Forced On" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/olympusmn.cpp:535 -msgid "2nd Curtain" -msgstr "" - -#: src/olympusmn.cpp:541 -msgid "Channel 1, Low" -msgstr "" - -#: src/olympusmn.cpp:542 -msgid "Channel 2, Low" -msgstr "" - -#: src/olympusmn.cpp:543 -msgid "Channel 3, Low" -msgstr "" - -#: src/olympusmn.cpp:544 -msgid "Channel 4, Low" -msgstr "" - -#: src/olympusmn.cpp:545 -msgid "Channel 1, Mid" -msgstr "" - -#: src/olympusmn.cpp:546 -msgid "Channel 2, Mid" -msgstr "" - -#: src/olympusmn.cpp:547 -msgid "Channel 3, Mid" -msgstr "" - -#: src/olympusmn.cpp:548 -msgid "Channel 4, Mid" -msgstr "" - -#: src/olympusmn.cpp:549 -msgid "Channel 1, High" -msgstr "" - -#: src/olympusmn.cpp:550 -msgid "Channel 2, High" -msgstr "" - -#: src/olympusmn.cpp:551 -msgid "Channel 3, High" -msgstr "" - -#: src/olympusmn.cpp:552 -msgid "Channel 4, High" -msgstr "" - -#: src/olympusmn.cpp:566 -#, fuzzy -msgid "7500K (Fine Weather with Shade)" -msgstr "ЯÑÐ½Ð°Ñ Ð¿Ð¾Ð³Ð¾Ð´Ð°" - -#: src/olympusmn.cpp:567 -#, fuzzy -msgid "6000K (Cloudy)" -msgstr "Облачно" - -#: src/olympusmn.cpp:568 -#, fuzzy -msgid "5300K (Fine Weather)" -msgstr "ЯÑÐ½Ð°Ñ Ð¿Ð¾Ð³Ð¾Ð´Ð°" - -#: src/olympusmn.cpp:569 -msgid "3000K (Tungsten light)" -msgstr "" - -#: src/olympusmn.cpp:570 src/olympusmn.cpp:574 -msgid "3600K (Tungsten light-like)" -msgstr "" - -#: src/olympusmn.cpp:571 -#, fuzzy -msgid "6600K (Daylight fluorescent)" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/olympusmn.cpp:572 -#, fuzzy -msgid "4500K (Neutral white fluorescent)" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/olympusmn.cpp:573 -#, fuzzy -msgid "4000K (Cool white fluorescent)" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/olympusmn.cpp:575 -#, fuzzy -msgid "Custom WB 1" -msgstr "Свой 1" - -#: src/olympusmn.cpp:576 -#, fuzzy -msgid "Custom WB 2" -msgstr "Свой 2" - -#: src/olympusmn.cpp:577 -#, fuzzy -msgid "Custom WB 3" -msgstr "Свой" - -#: src/olympusmn.cpp:578 -#, fuzzy -msgid "Custom WB 4" -msgstr "Свой 1" - -#: src/olympusmn.cpp:579 -#, fuzzy -msgid "Custom WB 5400K" -msgstr "Свой 1" - -#: src/olympusmn.cpp:580 -#, fuzzy -msgid "Custom WB 2900K" -msgstr "Свой 2" - -#: src/olympusmn.cpp:581 -#, fuzzy -msgid "Custom WB 8000K" -msgstr "Свой 1" - -#: src/olympusmn.cpp:587 -#, fuzzy -msgid "CM1 (Red Enhance)" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/olympusmn.cpp:588 -#, fuzzy -msgid "CM2 (Green Enhance)" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/olympusmn.cpp:589 -#, fuzzy -msgid "CM3 (Blue Enhance)" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/olympusmn.cpp:590 -msgid "CM4 (Skin Tones)" -msgstr "" - -#: src/olympusmn.cpp:597 src/olympusmn.cpp:776 src/olympusmn.cpp:841 -msgid "Pro Photo RGB" -msgstr "" - -#: src/olympusmn.cpp:603 src/olympusmn.cpp:697 -#, fuzzy -msgid "Noise Filter" -msgstr "ПорÑдок заполнениÑ" - -#: src/olympusmn.cpp:604 -#, fuzzy -msgid "Noise Filter (ISO Boost)" -msgstr "ПорÑдок заполнениÑ" - -#: src/olympusmn.cpp:612 src/olympusmn.cpp:854 -msgid "Muted" -msgstr "" - -#: src/olympusmn.cpp:614 src/olympusmn.cpp:855 -#, fuzzy -msgid "Monotone" -msgstr "Цветовое проÑтранÑтво" - -#: src/olympusmn.cpp:640 -msgid "SQ" -msgstr "" - -#: src/olympusmn.cpp:641 -msgid "HQ" -msgstr "" - -#: src/olympusmn.cpp:642 -msgid "SHQ" -msgstr "" - -#: src/olympusmn.cpp:649 src/panasonicmn.cpp:86 -#, fuzzy -msgid "On, Mode 1" -msgstr "Тип Ñцены" - -#: src/olympusmn.cpp:650 src/panasonicmn.cpp:88 -#, fuzzy -msgid "On, Mode 2" -msgstr "Тип Ñцены" - -#: src/olympusmn.cpp:651 -#, fuzzy -msgid "On, Mode 3" -msgstr "Тип Ñцены" - -#: src/olympusmn.cpp:655 -#, fuzzy -msgid "Camera Settings Version" -msgstr "ÐаÑтройки камеры" - -#: src/olympusmn.cpp:655 -#, fuzzy -msgid "Camera settings version" -msgstr "ÐаÑтройки камеры" - -#: src/olympusmn.cpp:656 -#, fuzzy -msgid "PreviewImage Valid" -msgstr "ВерÑÐ¸Ñ ÑÑкиза" - -#: src/olympusmn.cpp:656 -#, fuzzy -msgid "Preview image valid" -msgstr "ВерÑÐ¸Ñ ÑÑкиза" - -#: src/olympusmn.cpp:657 -#, fuzzy -msgid "PreviewImage Start" -msgstr "Данные ÑÑкиза" - -#: src/olympusmn.cpp:657 -#, fuzzy -msgid "Preview image start" -msgstr "ВерÑÐ¸Ñ ÑÑкиза" - -#: src/olympusmn.cpp:658 -#, fuzzy -msgid "PreviewImage Length" -msgstr "Длина изображениÑ" - -#: src/olympusmn.cpp:658 -#, fuzzy -msgid "Preview image length" -msgstr "ВерÑÐ¸Ñ ÑÑкиза" - -#: src/olympusmn.cpp:660 -#, fuzzy -msgid "Auto exposure lock" -msgstr "Режим ÑкÑпозиции" - -#: src/olympusmn.cpp:662 -#, fuzzy -msgid "Exposure Shift" -msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" - -#: src/olympusmn.cpp:662 -#, fuzzy -msgid "Exposure shift" -msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" - -#: src/olympusmn.cpp:665 -#, fuzzy -msgid "Focus Process" -msgstr "СпоÑоб фокуÑировки" - -#: src/olympusmn.cpp:665 -#, fuzzy -msgid "Focus process" -msgstr "Другой процеÑÑ Ð¿Ñ€Ð¾Ñвки" - -#: src/olympusmn.cpp:666 -msgid "AF Search" -msgstr "" - -#: src/olympusmn.cpp:666 -#, fuzzy -msgid "AF search" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/olympusmn.cpp:667 -#, fuzzy -msgid "AF Areas" -msgstr "СпоÑоб фокуÑировки" - -#: src/olympusmn.cpp:667 -#, fuzzy -msgid "AF areas" -msgstr "СпоÑоб фокуÑировки" - -#: src/olympusmn.cpp:668 -#, fuzzy -msgid "AFPointSelected" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/olympusmn.cpp:669 -#, fuzzy -msgid "AF Fine Tune Adjust" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/olympusmn.cpp:669 -#, fuzzy -msgid "AF fine tune adjust" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/olympusmn.cpp:672 -#, fuzzy -msgid "Flash Remote Control" -msgstr "Пульт Д/У?" - -#: src/olympusmn.cpp:672 -#, fuzzy -msgid "Flash remote control" -msgstr "Пульт Д/У?" - -#: src/olympusmn.cpp:673 -#, fuzzy -msgid "Flash Control Mode" -msgstr "Режим вÑпышки" - -#: src/olympusmn.cpp:673 -#, fuzzy -msgid "Flash control mode" -msgstr "Режим вÑпышки" - -#: src/olympusmn.cpp:674 -#, fuzzy -msgid "Flash Intensity" -msgstr "Ð’Ñпышка Ñработала" - -#: src/olympusmn.cpp:674 -#, fuzzy -msgid "Flash intensity" -msgstr "Ð’Ñпышка Ñработала" - -#: src/olympusmn.cpp:675 -#, fuzzy -msgid "Manual Flash Strength" -msgstr "ФокуÑное раÑÑтоÑние" - -#: src/olympusmn.cpp:675 -#, fuzzy -msgid "Manual flash strength" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ ÑкÑпозициÑ" - -#: src/olympusmn.cpp:676 src/sonymn.cpp:429 -#, fuzzy -msgid "White Balance 2" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/olympusmn.cpp:676 src/sonymn.cpp:430 -#, fuzzy -msgid "White balance 2" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/olympusmn.cpp:677 -#, fuzzy -msgid "White Balance Temperature" -msgstr "Таблица баланÑа белого" - -#: src/olympusmn.cpp:677 -#, fuzzy -msgid "White balance temperature" -msgstr "Таблица баланÑа белого" - -#: src/olympusmn.cpp:679 -#, fuzzy -msgid "Custom Saturation" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/olympusmn.cpp:679 -#, fuzzy -msgid "Custom saturation" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/olympusmn.cpp:680 -#, fuzzy -msgid "Modified Saturation" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/olympusmn.cpp:680 -#, fuzzy -msgid "Modified saturation" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/olympusmn.cpp:681 src/olympusmn.cpp:1080 -#, fuzzy -msgid "Contrast Setting" -msgstr "ÐаÑтройка контраÑта" - -#: src/olympusmn.cpp:682 src/olympusmn.cpp:1081 -#, fuzzy -msgid "Sharpness Setting" -msgstr "ÐаÑтройка резкоÑти" - -#: src/olympusmn.cpp:686 src/olympusmn.cpp:975 -#, fuzzy -msgid "Distortion Correction" -msgstr "Без коррекции" - -#: src/olympusmn.cpp:686 src/olympusmn.cpp:975 -#, fuzzy -msgid "Distortion correction" -msgstr "Без коррекции" - -#: src/olympusmn.cpp:687 src/olympusmn.cpp:976 -#, fuzzy -msgid "Shading Compensation" -msgstr "ТонкомпенÑациÑ" - -#: src/olympusmn.cpp:687 src/olympusmn.cpp:976 -#, fuzzy -msgid "Shading compensation" -msgstr "ТонкомпенÑациÑ" - -#: src/olympusmn.cpp:688 -#, fuzzy -msgid "Compression Factor" -msgstr "Уровень ÑжатиÑ" - -#: src/olympusmn.cpp:688 -#, fuzzy -msgid "Compression factor" -msgstr "Уровень ÑжатиÑ" - -#: src/olympusmn.cpp:689 src/olympusmn.cpp:897 -#, fuzzy -msgid "Gradation" -msgstr "ДлительноÑÑ‚ÑŒ" - -#: src/olympusmn.cpp:690 src/olympusmn.cpp:891 src/pentaxmn.cpp:988 -#: src/pentaxmn.cpp:989 -#, fuzzy -msgid "Picture mode" -msgstr "Портретный режим" - -#: src/olympusmn.cpp:691 -#, fuzzy -msgid "Picture Mode Saturation" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/olympusmn.cpp:691 src/olympusmn.cpp:892 -#, fuzzy -msgid "Picture mode saturation" -msgstr "Портретный режим" - -#: src/olympusmn.cpp:692 -#, fuzzy -msgid "Picture Mode Hue" -msgstr "Портретный режим" - -#: src/olympusmn.cpp:692 -#, fuzzy -msgid "Picture mode hue" -msgstr "Портретный режим" - -#: src/olympusmn.cpp:693 -#, fuzzy -msgid "Picture Mode Contrast" -msgstr "Портретный режим" - -#: src/olympusmn.cpp:693 src/olympusmn.cpp:893 -#, fuzzy -msgid "Picture mode contrast" -msgstr "Портретный режим" - -#: src/olympusmn.cpp:694 -#, fuzzy -msgid "Picture Mode Sharpness" -msgstr "Портретный режим" - -#: src/olympusmn.cpp:694 src/olympusmn.cpp:894 -#, fuzzy -msgid "Picture mode sharpness" -msgstr "Портретный режим" - -#: src/olympusmn.cpp:695 -#, fuzzy -msgid "Picture Mode BW Filter" -msgstr "Портретный режим" - -#: src/olympusmn.cpp:695 -#, fuzzy -msgid "Picture mode BW filter" -msgstr "Портретный режим" - -#: src/olympusmn.cpp:696 -#, fuzzy -msgid "Picture Mode Tone" -msgstr "Портретный режим" - -#: src/olympusmn.cpp:696 -#, fuzzy -msgid "Picture mode tone" -msgstr "Портретный режим" - -#: src/olympusmn.cpp:697 -#, fuzzy -msgid "Noise filter" -msgstr "Цветовое проÑтранÑтво" - -#: src/olympusmn.cpp:698 -#, fuzzy -msgid "Art Filter" -msgstr "ПорÑдок заполнениÑ" - -#: src/olympusmn.cpp:698 -#, fuzzy -msgid "Art filter" -msgstr "Цветовое проÑтранÑтво" - -#: src/olympusmn.cpp:699 -#, fuzzy -msgid "Magic Filter" -msgstr "Цифровой фильтр" - -#: src/olympusmn.cpp:699 -#, fuzzy -msgid "Magic filter" -msgstr "Цифровой фильтр" - -#: src/olympusmn.cpp:701 -#, fuzzy -msgid "Panorama Mode" -msgstr "Панорама" - -#: src/olympusmn.cpp:701 -#, fuzzy -msgid "Panorama mode" -msgstr "Кадр панорамы" - -#: src/olympusmn.cpp:702 -#, fuzzy -msgid "Image Quality 2" -msgstr "КачеÑтво" - -#: src/olympusmn.cpp:702 -#, fuzzy -msgid "Image quality 2" -msgstr "КачеÑтво изображениÑ" - -#: src/olympusmn.cpp:704 -#, fuzzy -msgid "Manometer Pressure" -msgstr "ÐеÑжатый" - -#: src/olympusmn.cpp:704 -#, fuzzy -msgid "Manometer pressure" -msgstr "ÐеÑжатый" - -#: src/olympusmn.cpp:705 -#, fuzzy -msgid "Manometer Reading" -msgstr "ÐеÑжатый" - -#: src/olympusmn.cpp:705 -#, fuzzy -msgid "Manometer reading" -msgstr "ÐеÑжатый" - -#: src/olympusmn.cpp:706 -#, fuzzy -msgid "Extended WB Detect" -msgstr "Тип Ñцены" - -#: src/olympusmn.cpp:706 -#, fuzzy -msgid "Extended WB detect" -msgstr "Тип Ñцены" - -#: src/olympusmn.cpp:707 -msgid "Level Gauge Roll" -msgstr "" - -#: src/olympusmn.cpp:707 -msgid "Level gauge roll" -msgstr "" - -#: src/olympusmn.cpp:708 -msgid "Level Gauge Pitch" -msgstr "" - -#: src/olympusmn.cpp:708 -msgid "Level gauge pitch" -msgstr "" - -#: src/olympusmn.cpp:710 -#, fuzzy -msgid "Unknown OlympusCs tag" -msgstr "ÐеизвеÑтное поле" - -#: src/olympusmn.cpp:721 -msgid "Simple E-System" -msgstr "" - -#: src/olympusmn.cpp:722 -msgid "E-System" -msgstr "" - -#: src/olympusmn.cpp:739 -#, fuzzy -msgid "Equipment Version" -msgstr "ВерÑÐ¸Ñ Ñ„Ð°Ð¹Ð»Ð°" - -#: src/olympusmn.cpp:739 -#, fuzzy -msgid "Equipment version" -msgstr "ВерÑÐ¸Ñ Exif" - -#: src/olympusmn.cpp:741 -msgid "Serial number" -msgstr "Серийный номер" - -#: src/olympusmn.cpp:746 src/panasonicmn.cpp:277 src/tags.cpp:1854 -#, fuzzy -msgid "Lens Serial Number" -msgstr "Серийный номер" - -#: src/olympusmn.cpp:746 src/panasonicmn.cpp:277 -#, fuzzy -msgid "Lens serial number" -msgstr "Серийный номер камеры" - -#: src/olympusmn.cpp:747 src/properties.cpp:388 src/tags.cpp:1850 -#, fuzzy -msgid "Lens Model" -msgstr "Тип Ñцены" - -#: src/olympusmn.cpp:747 -#, fuzzy -msgid "Lens model" -msgstr "Тип Ñцены" - -#: src/olympusmn.cpp:748 -#, fuzzy -msgid "Lens Firmware Version" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/olympusmn.cpp:748 -#, fuzzy -msgid "Lens firmware version" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/olympusmn.cpp:753 -#, fuzzy -msgid "Max Aperture At Current Focal" -msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" - -#: src/olympusmn.cpp:753 -#, fuzzy -msgid "Max aperture at current focal" -msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" - -#: src/olympusmn.cpp:754 -#, fuzzy -msgid "Lens Properties" -msgstr "Температура объектива" - -#: src/olympusmn.cpp:754 -#, fuzzy -msgid "Lens properties" -msgstr "Температура объектива" - -#: src/olympusmn.cpp:755 -#, fuzzy -msgid "Extender" -msgstr "внешнÑÑ" - -#: src/olympusmn.cpp:756 -#, fuzzy -msgid "Extender Serial Number" -msgstr "Серийный номер камеры" - -#: src/olympusmn.cpp:756 -#, fuzzy -msgid "Extender serial number" -msgstr "Серийный номер камеры" - -#: src/olympusmn.cpp:757 -#, fuzzy -msgid "Extender Model" -msgstr "Тип Ñцены" - -#: src/olympusmn.cpp:757 -#, fuzzy -msgid "Extender model" -msgstr "Тип Ñцены" - -#: src/olympusmn.cpp:758 -#, fuzzy -msgid "Extender Firmware Version" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/olympusmn.cpp:758 -#, fuzzy -msgid "Extender firmwareversion" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/olympusmn.cpp:760 src/properties.cpp:384 -#, fuzzy -msgid "Flash Model" -msgstr "Режим вÑпышки" - -#: src/olympusmn.cpp:760 -#, fuzzy -msgid "Flash model" -msgstr "Режим вÑпышки" - -#: src/olympusmn.cpp:761 -#, fuzzy -msgid "Flash Firmware Version" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/olympusmn.cpp:761 -#, fuzzy -msgid "Flash firmware version" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/olympusmn.cpp:762 -#, fuzzy -msgid "FlashSerialNumber" -msgstr "Серийный номер" - -#: src/olympusmn.cpp:764 -#, fuzzy -msgid "Unknown OlympusEq tag" -msgstr "ÐеизвеÑтный тег Exif" - -#: src/olympusmn.cpp:781 src/olympusmn.cpp:846 -#, fuzzy -msgid "High Speed" -msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" - -#: src/olympusmn.cpp:782 src/olympusmn.cpp:803 src/olympusmn.cpp:847 -#, fuzzy -msgid "High Function" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/olympusmn.cpp:783 -#, fuzzy -msgid "Advanced High Speed" -msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" - -#: src/olympusmn.cpp:784 -#, fuzzy -msgid "Advanced High Function" -msgstr "Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸" - -#: src/olympusmn.cpp:789 -#, fuzzy -msgid "Original" -msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð´Ð°Ñ‚Ð° и времÑ" - -#: src/olympusmn.cpp:790 -#, fuzzy -msgid "Edited (Landscape)" -msgstr "Ðльбом" - -#: src/olympusmn.cpp:791 src/olympusmn.cpp:792 -#, fuzzy -msgid "Edited (Portrait)" -msgstr "Ðочной портрет" - -#: src/olympusmn.cpp:797 -#, fuzzy -msgid "WB Color Temp" -msgstr "Цветовое проÑтранÑтво" - -#: src/olympusmn.cpp:798 -#, fuzzy -msgid "WB Gray Point" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/olympusmn.cpp:808 -#, fuzzy -msgid "Raw Development Version" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/olympusmn.cpp:808 -#, fuzzy -msgid "Raw development version" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/olympusmn.cpp:809 src/olympusmn.cpp:879 src/properties.cpp:558 -#: src/tags.cpp:822 -#, fuzzy -msgid "Exposure Bias Value" -msgstr "Смещение ÑкÑпозиции" - -#: src/olympusmn.cpp:809 src/olympusmn.cpp:879 -#, fuzzy -msgid "Exposure bias value" -msgstr "Смещение ÑкÑпозиции" - -#: src/olympusmn.cpp:810 src/olympusmn.cpp:881 -#, fuzzy -msgid "White Balance Value" -msgstr "Таблица баланÑа белого" - -#: src/olympusmn.cpp:810 src/olympusmn.cpp:881 -#, fuzzy -msgid "White balance value" -msgstr "Таблица баланÑа белого" - -#: src/olympusmn.cpp:811 src/olympusmn.cpp:882 -#, fuzzy -msgid "WB Fine Adjustment" -msgstr "ПодÑтройка оттенка" - -#: src/olympusmn.cpp:811 -#, fuzzy -msgid "WB fine adjustment" -msgstr "ÐšÐ¾Ñ€Ñ€ÐµÐºÑ†Ð¸Ñ Ñ‚Ð¾Ð½Ð°" - -#: src/olympusmn.cpp:812 src/olympusmn.cpp:834 src/olympusmn.cpp:883 -#, fuzzy -msgid "Gray Point" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/olympusmn.cpp:812 src/olympusmn.cpp:883 -#, fuzzy -msgid "Gray point" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/olympusmn.cpp:813 src/olympusmn.cpp:886 -#, fuzzy -msgid "Saturation Emphasis" -msgstr "ÐаÑтройка контраÑта" - -#: src/olympusmn.cpp:813 src/olympusmn.cpp:886 -#, fuzzy -msgid "Saturation emphasis" -msgstr "ÐаÑтройка контраÑта" - -#: src/olympusmn.cpp:814 src/olympusmn.cpp:887 -#, fuzzy -msgid "Memory Color Emphasis" -msgstr "Цвет" - -#: src/olympusmn.cpp:814 src/olympusmn.cpp:887 -#, fuzzy -msgid "Memory color emphasis" -msgstr "Цвет" - -#: src/olympusmn.cpp:815 src/olympusmn.cpp:884 -#, fuzzy -msgid "Contrast Value" -msgstr "КонтраÑÑ‚" - -#: src/olympusmn.cpp:815 src/olympusmn.cpp:884 -#, fuzzy -msgid "Contrast value" -msgstr "КонтраÑÑ‚" - -#: src/olympusmn.cpp:816 src/olympusmn.cpp:885 -#, fuzzy -msgid "Sharpness Value" -msgstr "РезкоÑÑ‚ÑŒ" - -#: src/olympusmn.cpp:816 src/olympusmn.cpp:885 -#, fuzzy -msgid "Sharpness value" -msgstr "РезкоÑÑ‚ÑŒ" - -#: src/olympusmn.cpp:818 src/olympusmn.cpp:890 -#, fuzzy -msgid "Engine" -msgstr "Звукооператор" - -#: src/olympusmn.cpp:820 -#, fuzzy -msgid "Edit status" -msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð°Ð²ÐºÐ¸" - -#: src/olympusmn.cpp:821 -#, fuzzy -msgid "Settings" -msgstr "ÐаÑтройка резкоÑти" - -#: src/olympusmn.cpp:823 -#, fuzzy -msgid "Unknown OlympusRd tag" -msgstr "ÐеизвеÑтное поле" - -#: src/olympusmn.cpp:878 -#, fuzzy -msgid "Raw Development 2 Version" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/olympusmn.cpp:878 -#, fuzzy -msgid "Raw development 2 version" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/olympusmn.cpp:882 -#, fuzzy -msgid "White balance fine adjustment" -msgstr "Ð¢Ð¾Ñ‡Ð½Ð°Ñ Ð¿Ð¾Ð´Ñтройка баланÑа белого" - -#: src/olympusmn.cpp:892 -#, fuzzy -msgid "PM Saturation" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/olympusmn.cpp:893 -#, fuzzy -msgid "PM Contrast" -msgstr "КонтраÑÑ‚" - -#: src/olympusmn.cpp:894 -#, fuzzy -msgid "PM Sharpness" -msgstr "РезкоÑÑ‚ÑŒ" - -#: src/olympusmn.cpp:895 -#, fuzzy -msgid "PM BW Filter" -msgstr "ПорÑдок заполнениÑ" - -#: src/olympusmn.cpp:895 -#, fuzzy -msgid "PM BW filter" -msgstr "ПорÑдок заполнениÑ" - -#: src/olympusmn.cpp:896 -#, fuzzy -msgid "PM Picture Tone" -msgstr "Портретный режим" - -#: src/olympusmn.cpp:896 -#, fuzzy -msgid "PM picture tone" -msgstr "Портретный режим" - -#: src/olympusmn.cpp:899 -#, fuzzy -msgid "Auto Gradation" -msgstr "ДлительноÑÑ‚ÑŒ звукозапиÑи" - -#: src/olympusmn.cpp:899 -#, fuzzy -msgid "Auto gradation" -msgstr "ДлительноÑÑ‚ÑŒ звукозапиÑи" - -#: src/olympusmn.cpp:900 -#, fuzzy -msgid "PM Noise Filter" -msgstr "ПорÑдок заполнениÑ" - -#: src/olympusmn.cpp:900 -#, fuzzy -msgid "Picture mode noise filter" -msgstr "Портретный режим" - -#: src/olympusmn.cpp:902 -#, fuzzy -msgid "Unknown OlympusRd2 tag" -msgstr "ÐеизвеÑтное поле" - -#: src/olympusmn.cpp:913 -#, fuzzy -msgid "On (2 frames)" -msgstr "Вкл" - -#: src/olympusmn.cpp:914 -#, fuzzy -msgid "On (3 frames)" -msgstr "Вкл" - -#: src/olympusmn.cpp:919 -msgid "4:3" -msgstr "" - -#: src/olympusmn.cpp:920 -#, fuzzy -msgid "3:2" -msgstr "250" - -#: src/olympusmn.cpp:921 -msgid "16:9" -msgstr "" - -#: src/olympusmn.cpp:922 -msgid "6:6" -msgstr "" - -#: src/olympusmn.cpp:923 -msgid "5:4" -msgstr "" - -#: src/olympusmn.cpp:924 -msgid "7:6" -msgstr "" - -#: src/olympusmn.cpp:925 -#, fuzzy -msgid "6:5" -msgstr "D65" - -#: src/olympusmn.cpp:926 -#, fuzzy -msgid "7:5" -msgstr "D75" - -#: src/olympusmn.cpp:927 -msgid "3:4" -msgstr "" - -#: src/olympusmn.cpp:931 -#, fuzzy -msgid "Image Processing Version" -msgstr "РезкоÑÑ‚ÑŒ изображениÑ" - -#: src/olympusmn.cpp:931 -#, fuzzy -msgid "Image processing version" -msgstr "РезкоÑÑ‚ÑŒ изображениÑ" - -#: src/olympusmn.cpp:933 -#, fuzzy -msgid "WB RB Levels 3000K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:933 -#, fuzzy -msgid "WB RB levels 3000K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:934 -#, fuzzy -msgid "WB RB Levels 3300K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:934 -#, fuzzy -msgid "WB RB levels 3300K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:935 -#, fuzzy -msgid "WB RB Levels 3600K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:935 -#, fuzzy -msgid "WB RB levels 3600K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:936 -#, fuzzy -msgid "WB RB Levels 3900K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:936 -#, fuzzy -msgid "WB RB levels 3900K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:937 -#, fuzzy -msgid "WB RB Levels 4000K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:937 -#, fuzzy -msgid "WB RB levels 4000K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:938 -#, fuzzy -msgid "WB RB Levels 4300K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:938 -#, fuzzy -msgid "WB RB levels 4300K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:939 -#, fuzzy -msgid "WB RB Levels 4500K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:939 -#, fuzzy -msgid "WB RB levels 4500K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:940 -#, fuzzy -msgid "WB RB Levels 4800K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:940 -#, fuzzy -msgid "WB RB levels 4800K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:941 -#, fuzzy -msgid "WB RB Levels 5300K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:941 -#, fuzzy -msgid "WB RB levels 5300K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:942 -#, fuzzy -msgid "WB RB Levels 6000K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:942 -#, fuzzy -msgid "WB RB levels 6000K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:943 -#, fuzzy -msgid "WB RB Levels 6600K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:943 -#, fuzzy -msgid "WB RB levels 6600K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:944 -#, fuzzy -msgid "WB RB Levels 7500K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:944 -#, fuzzy -msgid "WB RB levels 7500K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:945 -#, fuzzy -msgid "WB RB Levels CWB1" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:945 -#, fuzzy -msgid "WB RB levels CWB1" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:946 -#, fuzzy -msgid "WB RB Levels CWB2" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:946 -#, fuzzy -msgid "WB RB levels CWB2" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:947 -#, fuzzy -msgid "WB RB Levels CWB3" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:947 -#, fuzzy -msgid "WB RB levels CWB3" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:948 -#, fuzzy -msgid "WB RB Levels CWB4" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:948 -#, fuzzy -msgid "WB RB levels CWB4" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:949 -#, fuzzy -msgid "WB G Level 3000K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:949 -#, fuzzy -msgid "WB G level 3000K" -msgstr "Под уровнем морÑ" - -#: src/olympusmn.cpp:950 -#, fuzzy -msgid "WB G Level 3300K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:950 -#, fuzzy -msgid "WB G level 3300K" -msgstr "Под уровнем морÑ" - -#: src/olympusmn.cpp:951 -#, fuzzy -msgid "WB G Level 3600K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:951 -#, fuzzy -msgid "WB G level 3600K" -msgstr "Под уровнем морÑ" - -#: src/olympusmn.cpp:952 -#, fuzzy -msgid "WB G Level 3900K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:952 -#, fuzzy -msgid "WB G level 3900K" -msgstr "Под уровнем морÑ" - -#: src/olympusmn.cpp:953 -#, fuzzy -msgid "WB G Level 4000K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:953 -#, fuzzy -msgid "WB G level 4000K" -msgstr "Под уровнем морÑ" - -#: src/olympusmn.cpp:954 -#, fuzzy -msgid "WB G Level 4300K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:954 -#, fuzzy -msgid "WB G level 4300K" -msgstr "Под уровнем морÑ" - -#: src/olympusmn.cpp:955 -#, fuzzy -msgid "WB G Level 4500K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:955 -#, fuzzy -msgid "WB G level 4500K" -msgstr "Под уровнем морÑ" - -#: src/olympusmn.cpp:956 -#, fuzzy -msgid "WB G Level 4800K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:956 -#, fuzzy -msgid "WB G level 4800K" -msgstr "Под уровнем морÑ" - -#: src/olympusmn.cpp:957 -#, fuzzy -msgid "WB G Level 5300K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:957 -#, fuzzy -msgid "WB G level 5300K" -msgstr "Под уровнем морÑ" - -#: src/olympusmn.cpp:958 -#, fuzzy -msgid "WB G Level 6000K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:958 -#, fuzzy -msgid "WB G level 6000K" -msgstr "Под уровнем морÑ" - -#: src/olympusmn.cpp:959 -#, fuzzy -msgid "WB G Level 6600K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:959 -#, fuzzy -msgid "WB G level 6600K" -msgstr "Под уровнем морÑ" - -#: src/olympusmn.cpp:960 -#, fuzzy -msgid "WB G Level 7500K" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:960 -#, fuzzy -msgid "WB G level 7500K" -msgstr "Под уровнем морÑ" - -#: src/olympusmn.cpp:961 -#, fuzzy -msgid "WB G Level" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:961 -#, fuzzy -msgid "WB G level" -msgstr "Под уровнем морÑ" - -#: src/olympusmn.cpp:963 -#, fuzzy -msgid "Enhancer" -msgstr "Звукооператор" - -#: src/olympusmn.cpp:964 -#, fuzzy -msgid "Enhancer Values" -msgstr "Звукооператор" - -#: src/olympusmn.cpp:964 -#, fuzzy -msgid "Enhancer values" -msgstr "Звукооператор" - -#: src/olympusmn.cpp:965 src/olympusmn.cpp:1067 -#, fuzzy -msgid "Coring Filter" -msgstr "Цветовое проÑтранÑтво" - -#: src/olympusmn.cpp:966 src/olympusmn.cpp:1068 -#, fuzzy -msgid "Coring Values" -msgstr "ЯркоÑÑ‚ÑŒ" - -#: src/olympusmn.cpp:966 src/olympusmn.cpp:1068 -#, fuzzy -msgid "Coring values" -msgstr "ЯркоÑÑ‚ÑŒ" - -#: src/olympusmn.cpp:967 src/tags.cpp:908 -#, fuzzy -msgid "Black Level" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:968 -msgid "Gain Base" -msgstr "" - -#: src/olympusmn.cpp:968 -msgid "Gain base" -msgstr "" - -#: src/olympusmn.cpp:969 -msgid "Valid Bits" -msgstr "" - -#: src/olympusmn.cpp:970 src/olympusmn.cpp:1072 src/properties.cpp:445 -#, fuzzy -msgid "Crop Left" -msgstr "Ñправа налево" - -#: src/olympusmn.cpp:970 src/olympusmn.cpp:1072 -#, fuzzy -msgid "Crop left" -msgstr "Ñправа налево" - -#: src/olympusmn.cpp:971 src/olympusmn.cpp:1073 src/properties.cpp:444 -#, fuzzy -msgid "Crop Top" -msgstr "Монохромный" - -#: src/olympusmn.cpp:971 src/olympusmn.cpp:1073 -#, fuzzy -msgid "Crop top" -msgstr "Монохромный" - -#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 src/properties.cpp:449 -#, fuzzy -msgid "Crop Width" -msgstr "ÐвторÑкие права" - -#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 -#, fuzzy -msgid "Crop width" -msgstr "ÐвторÑкие права" - -#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 src/properties.cpp:450 -#, fuzzy -msgid "Crop Height" -msgstr "ÐвторÑкие права" - -#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 -#, fuzzy -msgid "Crop height" -msgstr "ÐвторÑкие права" - -#: src/olympusmn.cpp:977 -#, fuzzy -msgid "Multiple Exposure Mode" -msgstr "Режим ÑкÑпозиции" - -#: src/olympusmn.cpp:977 -#, fuzzy -msgid "Multiple exposure mode" -msgstr "Режим ÑкÑпозиции" - -#: src/olympusmn.cpp:978 src/sonymn.cpp:644 src/sonymn.cpp:645 -msgid "Aspect Ratio" -msgstr "" - -#: src/olympusmn.cpp:978 -#, fuzzy -msgid "Aspect ratio" -msgstr "ДлительноÑÑ‚ÑŒ звукозапиÑи" - -#: src/olympusmn.cpp:979 -#, fuzzy -msgid "Aspect Frame" -msgstr "Ðазвание/Ð¸Ð¼Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Ñъёмки" - -#: src/olympusmn.cpp:979 -#, fuzzy -msgid "Aspect frame" -msgstr "Ðазвание/Ð¸Ð¼Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Ñъёмки" - -#: src/olympusmn.cpp:980 -#, fuzzy -msgid "Face Detect" -msgstr "Ðе удалоÑÑŒ прочитать" - -#: src/olympusmn.cpp:980 src/olympusmn.cpp:1373 src/olympusmn.cpp:1385 -#, fuzzy -msgid "Face detect" -msgstr "Ðе удалоÑÑŒ прочитать" - -#: src/olympusmn.cpp:981 -#, fuzzy -msgid "Face Detect Area" -msgstr "Ðе удалоÑÑŒ прочитать" - -#: src/olympusmn.cpp:981 -#, fuzzy -msgid "Face detect area" -msgstr "Ðе удалоÑÑŒ прочитать" - -#: src/olympusmn.cpp:983 -#, fuzzy -msgid "Unknown OlympusIp tag" -msgstr "ÐеизвеÑтное поле IFD" - -#: src/olympusmn.cpp:993 -msgid "Bounce or Off" -msgstr "" - -#: src/olympusmn.cpp:994 -msgid "Direct" -msgstr "" - -#: src/olympusmn.cpp:998 -#, fuzzy -msgid "Focus Info Version" -msgstr "СпоÑоб фокуÑировки" - -#: src/olympusmn.cpp:998 -#, fuzzy -msgid "Focus info version" -msgstr "СпоÑоб фокуÑировки" - -#: src/olympusmn.cpp:999 -#, fuzzy -msgid "Auto Focus" -msgstr "AI Focus" - -#: src/olympusmn.cpp:1000 -#, fuzzy -msgid "Scene Detect" -msgstr "Тип Ñцены" - -#: src/olympusmn.cpp:1000 -#, fuzzy -msgid "Scene detect" -msgstr "Тип Ñцены" - -#: src/olympusmn.cpp:1001 -#, fuzzy -msgid "Scene Area" -msgstr "Тип Ñцены" - -#: src/olympusmn.cpp:1001 -#, fuzzy -msgid "Scene area" -msgstr "Тип Ñцены" - -#: src/olympusmn.cpp:1002 -#, fuzzy -msgid "Scene Detect Data" -msgstr "Тип Ñцены" - -#: src/olympusmn.cpp:1002 -#, fuzzy -msgid "Scene detect data" -msgstr "Тип Ñцены" - -#: src/olympusmn.cpp:1003 -#, fuzzy -msgid "Zoom Step Count" -msgstr "Выдержка" - -#: src/olympusmn.cpp:1004 -#, fuzzy -msgid "Focus Step Count" -msgstr "Продолжительный ведущий режим" - -#: src/olympusmn.cpp:1004 -#, fuzzy -msgid "Focus step count" -msgstr "Выдержка" - -#: src/olympusmn.cpp:1005 -#, fuzzy -msgid "Focus Step Infinity" -msgstr "ÐаÑтройка контраÑта" - -#: src/olympusmn.cpp:1005 -#, fuzzy -msgid "Focus step infinity" -msgstr "СпоÑоб фокуÑировки" - -#: src/olympusmn.cpp:1006 -#, fuzzy -msgid "Focus Step Near" -msgstr "СпоÑоб фокуÑировки" - -#: src/olympusmn.cpp:1006 -#, fuzzy -msgid "Focus step near" -msgstr "РаÑÑтоÑние ручного фокуÑа" - -#: src/olympusmn.cpp:1009 -#, fuzzy -msgid "External Flash" -msgstr "ВнешнÑÑ Ð²Ñпышка" - -#: src/olympusmn.cpp:1010 -#, fuzzy -msgid "External Flash Guide Number" -msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" - -#: src/olympusmn.cpp:1010 -#, fuzzy -msgid "External flash guide number" -msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" - -#: src/olympusmn.cpp:1014 -#, fuzzy -msgid "Manual Flash" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ ÑкÑпозициÑ" - -#: src/olympusmn.cpp:1014 -#, fuzzy -msgid "Manual flash" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ ÑкÑпозициÑ" - -#: src/olympusmn.cpp:1018 -#, fuzzy -msgid "Unknown OlympusFi tag" -msgstr "ÐеизвеÑтное поле IFD" - -#: src/olympusmn.cpp:1029 -#, fuzzy -msgid "Unknown OlympusFe tag" -msgstr "ÐеизвеÑтное поле IFD" - -#: src/olympusmn.cpp:1042 -#, fuzzy -msgid "Fine Weather" -msgstr "ЯÑÐ½Ð°Ñ Ð¿Ð¾Ð³Ð¾Ð´Ð°" - -#: src/olympusmn.cpp:1043 -#, fuzzy -msgid "Tungsten (incandescent)" -msgstr "Ð¯Ñ€ÐºÐ°Ñ Ð»Ð°Ð¼Ð¿Ð° накаливаниÑ" - -#: src/olympusmn.cpp:1044 -#, fuzzy -msgid "Evening Sunlight" -msgstr "Вечер" - -#: src/olympusmn.cpp:1045 -#, fuzzy -msgid "Daylight Fluorescent (D 5700 - 7100K)" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° дневного Ñвета (D 5700 - 7100K)" - -#: src/olympusmn.cpp:1046 -#, fuzzy -msgid "Day White Fluorescent (N 4600 - 5400K)" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° дневного Ñвета (D 5700 - 7100K)" - -#: src/olympusmn.cpp:1047 -#, fuzzy -msgid "Cool White Fluorescent (W 3900 - 4500K)" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° дневного Ñвета (D 5700 - 7100K)" - -#: src/olympusmn.cpp:1048 -#, fuzzy -msgid "White Fluorescent (WW 3200 - 3700K)" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° дневного Ñвета (D 5700 - 7100K)" - -#: src/olympusmn.cpp:1049 -#, fuzzy -msgid "One Touch White Balance" -msgstr "Ðвтомат. Ð±Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/olympusmn.cpp:1050 -#, fuzzy -msgid "Custom 1-4" -msgstr "Свой 1" - -#: src/olympusmn.cpp:1054 -#, fuzzy -msgid "Raw Info Version" -msgstr "СпоÑоб фокуÑировки" - -#: src/olympusmn.cpp:1054 -#, fuzzy -msgid "Raw info version" -msgstr "СпоÑоб фокуÑировки" - -#: src/olympusmn.cpp:1055 -#, fuzzy -msgid "WB_RB Levels Used" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:1055 -#, fuzzy -msgid "WB_RB levels used" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:1056 -#, fuzzy -msgid "WB_RB Levels Auto" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:1056 -#, fuzzy -msgid "WB_RB levels auto" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:1057 -#, fuzzy -msgid "WB_RB Levels Shade" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:1057 -#, fuzzy -msgid "WB_RB levels shade" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:1058 -#, fuzzy -msgid "WB_RB Levels Cloudy" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:1058 -#, fuzzy -msgid "WB_RB levels cloudy" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:1059 -#, fuzzy -msgid "WB_RB Levels Fine Weather" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/olympusmn.cpp:1059 -#, fuzzy -msgid "WB_RB levels fine weather" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/olympusmn.cpp:1060 -#, fuzzy -msgid "WB_RB Levels Tungsten" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:1060 -#, fuzzy -msgid "WB_RB levels tungsten" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/olympusmn.cpp:1061 -#, fuzzy -msgid "WB_RB Levels Evening Sunlight" -msgstr "Вечер" - -#: src/olympusmn.cpp:1061 -#, fuzzy -msgid "WB_RB levels evening sunlight" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/olympusmn.cpp:1062 -#, fuzzy -msgid "WB_RB Levels Daylight Fluor" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/olympusmn.cpp:1062 -#, fuzzy -msgid "WB_RB levels daylight fluor" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/olympusmn.cpp:1063 -#, fuzzy -msgid "WB_RB Levels Day White Fluor" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/olympusmn.cpp:1063 -#, fuzzy -msgid "WB_RB levels day white fluor" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/olympusmn.cpp:1064 -#, fuzzy -msgid "WB_RB Levels Cool White Fluor" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/olympusmn.cpp:1064 -#, fuzzy -msgid "WB_RB levels cool white fluor" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/olympusmn.cpp:1065 -#, fuzzy -msgid "WB_RB Levels White Fluorescent" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/olympusmn.cpp:1065 -#, fuzzy -msgid "WB_RB levels white fluorescent" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/olympusmn.cpp:1066 -#, fuzzy -msgid "Color Matrix2" -msgstr "Цветовое проÑтранÑтво" - -#: src/olympusmn.cpp:1066 -#, fuzzy -msgid "Color matrix 2" -msgstr "Цветовое проÑтранÑтво" - -#: src/olympusmn.cpp:1069 -#, fuzzy -msgid "Black Level 2" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:1069 -#, fuzzy -msgid "Black level 2" -msgstr "ЗарÑд батареи" - -#: src/olympusmn.cpp:1070 src/properties.cpp:508 src/tags.cpp:699 -msgid "YCbCr Coefficients" -msgstr "КоÑффициенты YCbCr" - -#: src/olympusmn.cpp:1070 -#, fuzzy -msgid "YCbCr coefficients" -msgstr "КоÑффициенты YCbCr" - -#: src/olympusmn.cpp:1071 -msgid "Valid Pixel Depth" -msgstr "" - -#: src/olympusmn.cpp:1071 -msgid "Valid pixel depth" -msgstr "" - -#: src/olympusmn.cpp:1077 -#, fuzzy -msgid "White Balance Comp" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/olympusmn.cpp:1077 -#, fuzzy -msgid "White balance comp" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/olympusmn.cpp:1078 -#, fuzzy -msgid "Saturation Setting" -msgstr "ÐаÑтройка контраÑта" - -#: src/olympusmn.cpp:1079 -#, fuzzy -msgid "Hue Setting" -msgstr "ÐаÑтройка резкоÑти" - -#: src/olympusmn.cpp:1079 -#, fuzzy -msgid "Hue setting" -msgstr "СпоÑоб фокуÑировки" - -#: src/olympusmn.cpp:1082 -#, fuzzy -msgid "CM Exposure Compensation" -msgstr "ТонкомпенÑациÑ" - -#: src/olympusmn.cpp:1082 -#, fuzzy -msgid "CM exposure compensation" -msgstr "КомпенÑÐ°Ñ†Ð¸Ñ ÑкÑпозиции" - -#: src/olympusmn.cpp:1083 -#, fuzzy -msgid "CM White Balance" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/olympusmn.cpp:1083 -#, fuzzy -msgid "CM white balance" -msgstr "Ðвтомат. Ð±Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/olympusmn.cpp:1084 -#, fuzzy -msgid "CM White Balance Comp" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/olympusmn.cpp:1084 -#, fuzzy -msgid "CM white balance comp" -msgstr "Ðвтомат. Ð±Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/olympusmn.cpp:1085 -#, fuzzy -msgid "CM White Balance Gray Point" -msgstr "ÐаÑтройка баланÑа белого" - -#: src/olympusmn.cpp:1085 -#, fuzzy -msgid "CM white balance gray point" -msgstr "ÐаÑтройка баланÑа белого" - -#: src/olympusmn.cpp:1086 -#, fuzzy -msgid "CM Saturation" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/olympusmn.cpp:1086 -#, fuzzy -msgid "CM saturation" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/olympusmn.cpp:1087 -#, fuzzy -msgid "CM Hue" -msgstr "Цветовое проÑтранÑтво" - -#: src/olympusmn.cpp:1087 -#, fuzzy -msgid "CM hue" -msgstr "Цветовое проÑтранÑтво" - -#: src/olympusmn.cpp:1088 -#, fuzzy -msgid "CM Contrast" -msgstr "КонтраÑÑ‚" - -#: src/olympusmn.cpp:1088 -#, fuzzy -msgid "CM contrast" -msgstr "КонтраÑÑ‚" - -#: src/olympusmn.cpp:1089 -#, fuzzy -msgid "CM Sharpness" -msgstr "РезкоÑÑ‚ÑŒ" - -#: src/olympusmn.cpp:1089 -#, fuzzy -msgid "CM sharpness" -msgstr "РезкоÑÑ‚ÑŒ" - -#: src/olympusmn.cpp:1091 -#, fuzzy -msgid "Unknown OlympusRi tag" -msgstr "ÐеизвеÑтное поле" - -#: src/olympusmn.cpp:1114 src/pentaxmn.cpp:336 -#, fuzzy -msgid "User-Selected" -msgstr "Ðвтобрекетирование" - -#: src/olympusmn.cpp:1115 -#, fuzzy -msgid "Auto-Override" -msgstr "ПерезапиÑать" - -#: src/olympusmn.cpp:1151 -#, fuzzy -msgid "Fast" -msgstr "быÑтрый" - -#: src/olympusmn.cpp:1208 -msgid "3000 Kelvin" -msgstr "3000 K" - -#: src/olympusmn.cpp:1209 -msgid "3700 Kelvin" -msgstr "3700 K" - -#: src/olympusmn.cpp:1210 -msgid "4000 Kelvin" -msgstr "4000 K" - -#: src/olympusmn.cpp:1211 -msgid "4500 Kelvin" -msgstr "4500 K" - -#: src/olympusmn.cpp:1212 -msgid "5500 Kelvin" -msgstr "5500 K" - -#: src/olympusmn.cpp:1213 -msgid "6500 Kelvin" -msgstr "6500 K" - -#: src/olympusmn.cpp:1214 -msgid "7500 Kelvin" -msgstr "7500 K" - -#: src/olympusmn.cpp:1220 -msgid "One-touch" -msgstr "One-touch" - -#: src/olympusmn.cpp:1241 -msgid "Olympus Zuiko Digital ED 50mm F2.0 Macro" -msgstr "" - -#: src/olympusmn.cpp:1242 -msgid "Olympus Zuiko Digital 40-150mm F3.5-4.5" -msgstr "" - -#: src/olympusmn.cpp:1243 src/olympusmn.cpp:1259 -msgid "Olympus Zuiko Digital ED 14-42mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1244 -msgid "Olympus Zuiko Digital ED 150mm F2.0" -msgstr "" - -#: src/olympusmn.cpp:1245 -msgid "Olympus Zuiko Digital 17mm F2.8 Pancake" -msgstr "" - -#: src/olympusmn.cpp:1246 -msgid "Olympus Zuiko Digital ED 300mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1247 -msgid "Olympus Zuiko Digital 14-54mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1248 -msgid "Olympus Zuiko Digital Pro ED 90-250mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1249 -msgid "Olympus Zuiko Digital ED 50-200mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1250 -msgid "Olympus Zuiko Digital ED 8mm F3.5 Fisheye" -msgstr "" - -#: src/olympusmn.cpp:1251 -msgid "Olympus Zuiko Digital 11-22mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1252 -msgid "Olympus Zuiko Digital 18-180mm F3.5-6.3" -msgstr "" - -#: src/olympusmn.cpp:1253 -msgid "Olympus Zuiko Digital 70-300mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1254 -msgid "Olympus Zuiko Digital ED 7-14mm F4.0" -msgstr "" - -#: src/olympusmn.cpp:1255 -msgid "Olympus Zuiko Digital Pro ED 35-100mm F2.0" -msgstr "" - -#: src/olympusmn.cpp:1256 -msgid "Olympus Zuiko Digital 14-45mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1257 -msgid "Olympus Zuiko Digital 35mm F3.5 Macro" -msgstr "" - -#: src/olympusmn.cpp:1258 -msgid "Olympus Zuiko Digital 17.5-45mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1260 -msgid "Olympus Zuiko Digital ED 40-150mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1261 -msgid "Olympus Zuiko Digital ED 50-200mm F2.8-3.5 SWD" -msgstr "" - -#: src/olympusmn.cpp:1262 -msgid "Olympus Zuiko Digital ED 12-60mm F2.8-4.0 SWD" -msgstr "" - -#: src/olympusmn.cpp:1263 -msgid "Olympus Zuiko Digital ED 14-35mm F2.0 SWD" -msgstr "" - -#: src/olympusmn.cpp:1264 -msgid "Olympus Zuiko Digital 25mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1265 -msgid "Olympus Zuiko Digital ED 9-18mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1266 -msgid "Olympus Zuiko Digital 14-54mm F2.8-3.5 II" -msgstr "" - -#: src/olympusmn.cpp:1267 -msgid "Sigma 18-50mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1268 -msgid "Sigma 55-200mm F4.0-5.6 DC" -msgstr "" - -#: src/olympusmn.cpp:1269 -msgid "Sigma 18-125mm F3.5-5.6 DC" -msgstr "" - -#: src/olympusmn.cpp:1270 -msgid "Sigma 18-125mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1271 -msgid "Sigma 30mm F1.4" -msgstr "" - -#: src/olympusmn.cpp:1272 src/olympusmn.cpp:1278 -msgid "Sigma 50-500mm F4.0-6.3 EX DG APO HSM RF" -msgstr "" - -#: src/olympusmn.cpp:1273 -msgid "Sigma 105mm F2.8 DG" -msgstr "" - -#: src/olympusmn.cpp:1274 -msgid "Sigma 150mm F2.8 DG HSM" -msgstr "" - -#: src/olympusmn.cpp:1275 -msgid "Sigma 24mm F1.8 EX DG Aspherical Macro" -msgstr "" - -#: src/olympusmn.cpp:1276 -msgid "Sigma 135-400mm F4.5-5.6 DG ASP APO RF" -msgstr "" - -#: src/olympusmn.cpp:1277 -msgid "Sigma 300-800mm F5.6 EX DG APO" -msgstr "" - -#: src/olympusmn.cpp:1279 -msgid "Sigma 10-20mm F4.0-5.6 EX DC HSM" -msgstr "" - -#: src/olympusmn.cpp:1280 src/olympusmn.cpp:1289 -msgid "Leica D Vario Elmarit 14-50mm F2.8-3.5 Asph." -msgstr "" - -#: src/olympusmn.cpp:1281 -msgid "Lumix G Vario 14-45mm F3.5-5.6 Asph. Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1282 src/olympusmn.cpp:1290 -msgid "Leica D Summilux 25mm F1.4 Asph." -msgstr "" - -#: src/olympusmn.cpp:1283 -msgid "Lumix G Vario 45-200mm F4-5.6 Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1284 -msgid "Leica D Vario Elmar 14-50mm F3.8-5.6 Asph." -msgstr "" - -#: src/olympusmn.cpp:1285 -msgid "Lumix G Vario HD 14-140mm F4-5.8 Asph. Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1286 -msgid "Leica D Vario Elmar 14-150mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1287 -msgid "Lumix G Vario 7-14mm F4 Asph." -msgstr "" - -#: src/olympusmn.cpp:1288 -msgid "Lumix G 20mm F1.7 Asph." -msgstr "" - -#: src/olympusmn.cpp:1338 -msgid "Olympus Zuiko Digital EC-14 1.4x Teleconverter" -msgstr "" - -#: src/olympusmn.cpp:1339 -msgid "Olympus EX-25 Extension Tube" -msgstr "" - -#: src/olympusmn.cpp:1340 -msgid "Olympus Zuiko Digital EC-20 2.0x Teleconverter" -msgstr "" - -#: src/olympusmn.cpp:1382 -msgid "S-AF" -msgstr "" - -#: src/olympusmn.cpp:1383 -msgid "C-AF" -msgstr "" - -#: src/olympusmn.cpp:1386 -#, fuzzy -msgid "Imager AF" -msgstr "Уникальный ID изображениÑ" - -#: src/olympusmn.cpp:1387 -#, fuzzy -msgid "AF sensor" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/olympusmn.cpp:1433 -#, fuzzy -msgid "Soft Focus" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" - -#: src/olympusmn.cpp:1434 -msgid "Pop Art" -msgstr "" - -#: src/olympusmn.cpp:1435 -msgid "Pale & Light Color" -msgstr "" - -#: src/olympusmn.cpp:1436 -#, fuzzy -msgid "Light Tone" -msgstr "Ñправа налево" - -#: src/olympusmn.cpp:1437 -msgid "Pin Hole" -msgstr "" - -#: src/olympusmn.cpp:1438 -msgid "Grainy Film" -msgstr "" - -#: src/olympusmn.cpp:1439 -#, fuzzy -msgid "Diorama" -msgstr "Панорама" - -#: src/olympusmn.cpp:1440 -#, fuzzy -msgid "Cross Process" -msgstr "СпоÑоб фокуÑировки" - -#: src/olympusmn.cpp:1441 -#, fuzzy -msgid "Fish Eye" -msgstr "ВнешнÑÑ Ð²Ñпышка" - -#: src/olympusmn.cpp:1442 -msgid "Drawing" -msgstr "" - -#: src/olympusmn.cpp:1489 -#, fuzzy -msgid "Left (or n/a)" -msgstr "ЛеваÑ" - -#: src/olympusmn.cpp:1490 src/olympusmn.cpp:1508 -msgid "Center (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1492 src/olympusmn.cpp:1519 -msgid "Center (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1503 -msgid "Top-left (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1504 -#, fuzzy -msgid "Top-center (horizontal)" -msgstr "Центральный" - -#: src/olympusmn.cpp:1505 -msgid "Top-right (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1506 -#, fuzzy -msgid "Left (horizontal)" -msgstr "ЛеваÑ" - -#: src/olympusmn.cpp:1507 -msgid "Mid-left (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1509 -msgid "Mid-right (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1510 -#, fuzzy -msgid "Right (horizontal)" -msgstr "Ñправа налево" - -#: src/olympusmn.cpp:1511 -#, fuzzy -msgid "Bottom-left (horizontal)" -msgstr "Ñправа налево" - -#: src/olympusmn.cpp:1512 -#, fuzzy -msgid "Bottom-center (horizontal)" -msgstr "Ñлева направо" - -#: src/olympusmn.cpp:1513 -#, fuzzy -msgid "Bottom-right (horizontal)" -msgstr "Ñлева направо" - -#: src/olympusmn.cpp:1514 -msgid "Top-left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1515 -#, fuzzy -msgid "Top-center (vertical)" -msgstr "Центральный" - -#: src/olympusmn.cpp:1516 -#, fuzzy -msgid "Top-right (vertical)" -msgstr "ÐвторÑкие и Ñмежные права" - -#: src/olympusmn.cpp:1517 -msgid "Left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1518 -msgid "Mid-left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1520 -#, fuzzy -msgid "Mid-right (vertical)" -msgstr "Ñлева направо" - -#: src/olympusmn.cpp:1521 -msgid "Right (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1522 -#, fuzzy -msgid "Bottom-left (vertical)" -msgstr "Ñправа налево" - -#: src/olympusmn.cpp:1523 -#, fuzzy -msgid "Bottom-center (vertical)" -msgstr "Ñлева направо" - -#: src/olympusmn.cpp:1524 -#, fuzzy -msgid "Bottom-right (vertical)" -msgstr "Ñлева направо" - -#: src/olympusmn.cpp:1561 -#, fuzzy -msgid "Single Target" -msgstr "One-Shot" - -#: src/olympusmn.cpp:1562 -msgid "All Target" -msgstr "" - -#: src/olympusmn.cpp:1563 -#, fuzzy -msgid "Dynamic Single Target" -msgstr "ÐаÑтройка баланÑа белого" - -#: src/panasonicmn.cpp:57 src/pentaxmn.cpp:348 src/pentaxmn.cpp:361 -#, fuzzy -msgid "Very High" -msgstr "Ð’Ñ‹Ñокий" - -#: src/panasonicmn.cpp:59 -#, fuzzy -msgid "Motion Picture" -msgstr "Портретный режим" - -#: src/panasonicmn.cpp:67 -msgid "Halogen" -msgstr "" - -#: src/panasonicmn.cpp:79 -#, fuzzy -msgid "Auto, focus button" -msgstr "AI Focus" - -#: src/panasonicmn.cpp:80 src/panasonicmn.cpp:81 -#, fuzzy -msgid "Auto, continuous" -msgstr "Продолжительный ведущий режим" - -#: src/panasonicmn.cpp:95 -msgid "Tele-macro" -msgstr "Теле-макро" - -#: src/panasonicmn.cpp:103 -msgid "Scenery" -msgstr "Тип Ñцены" - -#: src/panasonicmn.cpp:108 -msgid "Shutter-speed priority" -msgstr "Приоритет выдержки" - -#: src/panasonicmn.cpp:112 -#, fuzzy -msgid "Movie preview" -msgstr "ВыполнÑетÑÑ Ð·Ð°Ð¿Ð¸ÑÑŒ" - -#: src/panasonicmn.cpp:113 -#, fuzzy -msgid "Panning" -msgstr "Предупреждение" - -#: src/panasonicmn.cpp:114 -#, fuzzy -msgid "Simple" -msgstr "Файл" - -#: src/panasonicmn.cpp:115 -#, fuzzy -msgid "Color effects" -msgstr "Цветовой Ñффект" - -#: src/panasonicmn.cpp:119 -msgid "Night scenery" -msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" - -#: src/panasonicmn.cpp:121 -msgid "Baby" -msgstr "" - -#: src/panasonicmn.cpp:122 -#, fuzzy -msgid "Soft skin" -msgstr "О Ñнимке" - -#: src/panasonicmn.cpp:123 src/pentaxmn.cpp:484 -#, fuzzy -msgid "Candlelight" -msgstr "Дневной Ñвет" - -#: src/panasonicmn.cpp:124 -#, fuzzy -msgid "Starry night" -msgstr "Стандартный Ñвет A" - -#: src/panasonicmn.cpp:125 -#, fuzzy -msgid "High sensitivity" -msgstr "Ð¡Ð¿ÐµÐºÑ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡ÑƒÐ²ÑтвительноÑÑ‚ÑŒ" - -#: src/panasonicmn.cpp:126 -#, fuzzy -msgid "Panorama assist" -msgstr "Панорама" - -#: src/panasonicmn.cpp:129 -msgid "Aerial photo" -msgstr "" - -#: src/panasonicmn.cpp:132 -#, fuzzy -msgid "Intelligent ISO" -msgstr "ФокуÑное раÑÑтоÑние" - -#: src/panasonicmn.cpp:133 -#, fuzzy -msgid "High speed continuous shooting" -msgstr "СпоÑоб фокуÑировки" - -#: src/panasonicmn.cpp:134 -#, fuzzy -msgid "Intelligent auto" -msgstr "ФокуÑное раÑÑтоÑние" - -#: src/panasonicmn.cpp:146 -msgid "Warm" -msgstr "Тёплый" - -#: src/panasonicmn.cpp:147 -#, fuzzy -msgid "Cool" -msgstr "Цвет" - -#: src/panasonicmn.cpp:155 -#, fuzzy -msgid "Low/High quality" -msgstr "КачеÑтво изображениÑ" - -#: src/panasonicmn.cpp:156 -msgid "Infinite" -msgstr "БеÑконечный" - -#: src/panasonicmn.cpp:164 -#, fuzzy -msgid "Medium low" -msgstr "Ðизкий" - -#: src/panasonicmn.cpp:165 -#, fuzzy -msgid "Medium high" -msgstr "Ð’Ñ‹Ñокий" - -#: src/panasonicmn.cpp:175 -msgid "Low (-1)" -msgstr "" - -#: src/panasonicmn.cpp:176 -#, fuzzy -msgid "High (+1)" -msgstr "Ð’Ñ‹Ñокий" - -#: src/panasonicmn.cpp:177 -msgid "Lowest (-2)" -msgstr "" - -#: src/panasonicmn.cpp:178 -#, fuzzy -msgid "Highest (+2)" -msgstr "Ð’Ñ‹Ñокий" - -#: src/panasonicmn.cpp:184 -msgid "10s" -msgstr "10Ñ" - -#: src/panasonicmn.cpp:185 -msgid "2s" -msgstr "2Ñ" - -#: src/panasonicmn.cpp:205 -msgid "EX optics" -msgstr "" - -#: src/panasonicmn.cpp:212 -msgid "Telephoto" -msgstr "" - -#: src/panasonicmn.cpp:219 src/properties.cpp:890 -#, fuzzy -msgid "Home" -msgstr "Рим" - -#: src/panasonicmn.cpp:225 -#, fuzzy -msgid "Standard (color)" -msgstr "Стандартный Ñвет A" - -#: src/panasonicmn.cpp:226 -#, fuzzy -msgid "Dynamic (color)" -msgstr "ДинамичеÑкий диапазон" - -#: src/panasonicmn.cpp:227 -#, fuzzy -msgid "Nature (color)" -msgstr "ЕÑтеÑтвенный цвет" - -#: src/panasonicmn.cpp:228 -#, fuzzy -msgid "Smooth (color)" -msgstr "Стандартный Ñвет A" - -#: src/panasonicmn.cpp:229 -#, fuzzy -msgid "Standard (B&W)" -msgstr "Стандартный Ñвет A" - -#: src/panasonicmn.cpp:230 -#, fuzzy -msgid "Dynamic (B&W)" -msgstr "ДинамичеÑкий диапазон" - -#: src/panasonicmn.cpp:231 -#, fuzzy -msgid "Smooth (B&W)" -msgstr "Стандартный Ñвет A" - -#: src/panasonicmn.cpp:245 -msgid "Audio" -msgstr "Звук" - -#: src/panasonicmn.cpp:248 -#, fuzzy -msgid "White balance adjustment" -msgstr "Ð¢Ð¾Ñ‡Ð½Ð°Ñ Ð¿Ð¾Ð´Ñтройка баланÑа белого" - -#: src/panasonicmn.cpp:249 -#, fuzzy -msgid "FlashBias" -msgstr "Ð’Ñпышка" - -#: src/panasonicmn.cpp:251 src/tags.cpp:190 -msgid "Exif version" -msgstr "ВерÑÐ¸Ñ Exif" - -#: src/panasonicmn.cpp:253 -msgid "Color Effect" -msgstr "Цветовой Ñффект" - -#: src/panasonicmn.cpp:253 -msgid "Color effect" -msgstr "Цветовой Ñффект" - -#: src/panasonicmn.cpp:254 -msgid "" -"Time in 1/100 s from when the camera was powered on to when the image is " -"written to memory card" -msgstr "" - -#: src/panasonicmn.cpp:255 -#, fuzzy -msgid "Burst Mode" -msgstr "СпоÑоб фокуÑировки" - -#: src/panasonicmn.cpp:255 -#, fuzzy -msgid "Burst mode" -msgstr "СпоÑоб фокуÑировки" - -#: src/panasonicmn.cpp:258 -msgid "NoiseReduction" -msgstr "Подавление шума" - -#: src/panasonicmn.cpp:259 -#, fuzzy -msgid "Self Timer" -msgstr "Серийный номер" - -#: src/panasonicmn.cpp:264 src/panasonicmn.cpp:286 -msgid "Baby Age" -msgstr "" - -#: src/panasonicmn.cpp:264 src/panasonicmn.cpp:286 -msgid "Baby (or pet) age" -msgstr "" - -#: src/panasonicmn.cpp:265 -#, fuzzy -msgid "Optical Zoom Mode" -msgstr "Режим вÑпышки" - -#: src/panasonicmn.cpp:265 -#, fuzzy -msgid "Optical zoom mode" -msgstr "Режим вÑпышки" - -#: src/panasonicmn.cpp:266 -#, fuzzy -msgid "Conversion Lens" -msgstr "ВерÑии" - -#: src/panasonicmn.cpp:266 -#, fuzzy -msgid "Conversion lens" -msgstr "ЯркоÑÑ‚ÑŒ" - -#: src/panasonicmn.cpp:267 -msgid "Travel Day" -msgstr "" - -#: src/panasonicmn.cpp:267 -msgid "Travel day" -msgstr "" - -#: src/panasonicmn.cpp:269 -#, fuzzy -msgid "World Time Location" -msgstr "МеÑтоположение объекта Ñъёмки" - -#: src/panasonicmn.cpp:269 -#, fuzzy -msgid "World time location" -msgstr "МеÑтоположение объекта Ñъёмки" - -#: src/panasonicmn.cpp:270 -#, fuzzy -msgid "Program ISO" -msgstr "Программа" - -#: src/panasonicmn.cpp:274 -#, fuzzy -msgid "WB Adjust AB" -msgstr "ПодÑтройка оттенка" - -#: src/panasonicmn.cpp:274 -msgid "WB adjust AB. Positive is a shift toward blue." -msgstr "" - -#: src/panasonicmn.cpp:275 -#, fuzzy -msgid "WB Adjust GM" -msgstr "ПодÑтройка оттенка" - -#: src/panasonicmn.cpp:275 -msgid "WBAdjustGM. Positive is a shift toward green." -msgstr "" - -#: src/panasonicmn.cpp:278 -#, fuzzy -msgid "Accessory Type" -msgstr "Тип объектива" - -#: src/panasonicmn.cpp:278 -#, fuzzy -msgid "Accessory type" -msgstr "Тип объектива" - -#: src/panasonicmn.cpp:281 -#, fuzzy -msgid "MakerNote Version" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/panasonicmn.cpp:281 -#, fuzzy -msgid "MakerNote version" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/panasonicmn.cpp:283 src/panasonicmn.cpp:345 -#, fuzzy -msgid "WB Red Level" -msgstr "ЗарÑд батареи" - -#: src/panasonicmn.cpp:283 src/panasonicmn.cpp:345 -#, fuzzy -msgid "WB red level" -msgstr "Под уровнем морÑ" - -#: src/panasonicmn.cpp:284 src/panasonicmn.cpp:346 -#, fuzzy -msgid "WB Green Level" -msgstr "ЗарÑд батареи" - -#: src/panasonicmn.cpp:284 src/panasonicmn.cpp:346 -#, fuzzy -msgid "WB green level" -msgstr "Под уровнем морÑ" - -#: src/panasonicmn.cpp:285 src/panasonicmn.cpp:347 -#, fuzzy -msgid "WB Blue Level" -msgstr "ЗарÑд батареи" - -#: src/panasonicmn.cpp:285 src/panasonicmn.cpp:347 -#, fuzzy -msgid "WB blue level" -msgstr "Под уровнем морÑ" - -#: src/panasonicmn.cpp:288 -#, fuzzy -msgid "Unknown PanasonicMakerNote tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг CanonMakerNote" - -#: src/panasonicmn.cpp:305 -#, fuzzy -msgid "Spot mode on" -msgstr "Режим замера" - -#: src/panasonicmn.cpp:306 -msgid "Spot mode off or 3-area (high speed)" -msgstr "" - -#: src/panasonicmn.cpp:307 -#, fuzzy -msgid "Spot focussing" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" - -#: src/panasonicmn.cpp:308 -msgid "5-area" -msgstr "" - -#: src/panasonicmn.cpp:309 -msgid "1-area" -msgstr "" - -#: src/panasonicmn.cpp:310 -msgid "1-area (high speed)" -msgstr "" - -#: src/panasonicmn.cpp:311 -msgid "3-area (auto)" -msgstr "" - -#: src/panasonicmn.cpp:312 -msgid "3-area (left)" -msgstr "" - -#: src/panasonicmn.cpp:313 -msgid "3-area (center)" -msgstr "" - -#: src/panasonicmn.cpp:314 -msgid "3-area (right)" -msgstr "" - -#: src/panasonicmn.cpp:326 -msgid " EV" -msgstr " EV" - -#: src/panasonicmn.cpp:335 -#, fuzzy -msgid "Panasonic raw version" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/panasonicmn.cpp:336 -#, fuzzy -msgid "Sensor Width" -msgstr "Ширина изображениÑ" - -#: src/panasonicmn.cpp:336 -#, fuzzy -msgid "Sensor width" -msgstr "ÐвторÑкие права" - -#: src/panasonicmn.cpp:337 -#, fuzzy -msgid "Sensor Height" -msgstr "ОчиÑтка ÑенÑора" - -#: src/panasonicmn.cpp:337 -#, fuzzy -msgid "Sensor height" -msgstr "ОчиÑтка ÑенÑора" - -#: src/panasonicmn.cpp:338 -msgid "Sensor Top Border" -msgstr "" - -#: src/panasonicmn.cpp:338 -msgid "Sensor top border" -msgstr "" - -#: src/panasonicmn.cpp:339 -msgid "Sensor Left Border" -msgstr "" - -#: src/panasonicmn.cpp:339 -msgid "Sensor left border" -msgstr "" - -#: src/panasonicmn.cpp:342 -msgid "Red balance (found in Digilux 2 RAW images)" -msgstr "" - -#: src/panasonicmn.cpp:349 src/tags.cpp:465 -msgid "Manufacturer" -msgstr "Производитель" - -#: src/panasonicmn.cpp:349 -msgid "The manufacturer of the recording equipment" -msgstr "" - -#: src/panasonicmn.cpp:350 src/properties.cpp:518 src/tags.cpp:471 -msgid "Model" -msgstr "Модель" - -#: src/panasonicmn.cpp:350 -#, fuzzy -msgid "The model name or model number of the equipment" -msgstr "Вид иÑточника Ñвета" - -#: src/panasonicmn.cpp:351 src/tags.cpp:477 -#, fuzzy -msgid "Strip Offsets" -msgstr "Режим захвата" - -#: src/panasonicmn.cpp:351 -#, fuzzy -msgid "Strip offsets" -msgstr "Режим захвата" - -#: src/panasonicmn.cpp:352 src/properties.cpp:485 src/tags.cpp:484 -msgid "Orientation" -msgstr "ОриентациÑ" - -#: src/panasonicmn.cpp:353 -msgid "Rows Per Strip" -msgstr "" - -#: src/panasonicmn.cpp:353 -#, fuzzy -msgid "The number of rows per strip" -msgstr "ЧиÑло F" - -#: src/panasonicmn.cpp:354 -#, fuzzy -msgid "Strip Byte Counts" -msgstr "Выдержка" - -#: src/panasonicmn.cpp:354 -#, fuzzy -msgid "Strip byte counts" -msgstr "Выдержка" - -#: src/panasonicmn.cpp:355 -#, fuzzy -msgid "Raw Data Offset" -msgstr "Уникальный ID изображениÑ" - -#: src/panasonicmn.cpp:355 -#, fuzzy -msgid "Raw data offset" -msgstr "ÐеизвеÑтный набор данных" - -#: src/panasonicmn.cpp:356 src/tags.cpp:790 -msgid "Exif IFD Pointer" -msgstr "Указатель Exif IFD" - -#: src/panasonicmn.cpp:356 -msgid "A pointer to the Exif IFD" -msgstr "" - -#: src/panasonicmn.cpp:357 src/tags.cpp:801 -msgid "GPS Info IFD Pointer" -msgstr "Указатель GPS Info IFD" - -#: src/panasonicmn.cpp:357 -msgid "A pointer to the GPS Info IFD" -msgstr "" - -#: src/panasonicmn.cpp:359 -#, fuzzy -msgid "Unknown PanasonicRaw tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг" - -#: src/pentaxmn.cpp:57 -#, fuzzy -msgid "Night-Scene" -msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" - -#: src/pentaxmn.cpp:63 -#, fuzzy -msgid "Optio 330/430" -msgstr "Optio 30" - -#: src/pentaxmn.cpp:64 -msgid "Optio 230" -msgstr "Optio 230" - -#: src/pentaxmn.cpp:65 -#, fuzzy -msgid "Optio 330GS" -msgstr "Optio 30" - -#: src/pentaxmn.cpp:66 -#, fuzzy -msgid "Optio 450/550" -msgstr "Optio S40" - -#: src/pentaxmn.cpp:67 -msgid "Optio S" -msgstr "Optio S" - -#: src/pentaxmn.cpp:68 -msgid "*ist D" -msgstr "" - -#: src/pentaxmn.cpp:69 -msgid "Optio 33L" -msgstr "Optio 33L" - -#: src/pentaxmn.cpp:70 -msgid "Optio 33LF" -msgstr "Optio 33LF" - -#: src/pentaxmn.cpp:71 -msgid "Optio 33WR/43WR/555" -msgstr "" - -#: src/pentaxmn.cpp:72 -msgid "Optio S4" -msgstr "Optio S4" - -#: src/pentaxmn.cpp:73 -msgid "Optio MX" -msgstr "Optio MX" - -#: src/pentaxmn.cpp:74 -msgid "Optio S40" -msgstr "Optio S40" - -#: src/pentaxmn.cpp:75 -msgid "Optio S4i" -msgstr "Optio S4i" - -#: src/pentaxmn.cpp:76 -msgid "Optio 30" -msgstr "Optio 30" - -#: src/pentaxmn.cpp:77 -msgid "Optio S30" -msgstr "Optio S30" - -#: src/pentaxmn.cpp:78 -msgid "Optio 750Z" -msgstr "Optio 750Z" - -#: src/pentaxmn.cpp:79 -msgid "Optio SV" -msgstr "Optio SV" - -#: src/pentaxmn.cpp:80 -msgid "Optio SVi" -msgstr "Optio SVi" - -#: src/pentaxmn.cpp:81 -msgid "Optio X" -msgstr "Optio X" - -#: src/pentaxmn.cpp:82 -msgid "Optio S5i" -msgstr "Optio S5i" - -#: src/pentaxmn.cpp:83 -msgid "Optio S50" -msgstr "Optio S50" - -#: src/pentaxmn.cpp:84 -msgid "*ist DS" -msgstr "" - -#: src/pentaxmn.cpp:85 -msgid "Optio MX4" -msgstr "Optio MX4" - -#: src/pentaxmn.cpp:86 -msgid "Optio S5n" -msgstr "Optio S5n" - -#: src/pentaxmn.cpp:87 -msgid "Optio WP" -msgstr "Optio WP" - -#: src/pentaxmn.cpp:88 -msgid "Optio S55" -msgstr "Optio S55" - -#: src/pentaxmn.cpp:89 -msgid "Optio S5z" -msgstr "Optio S5z" - -#: src/pentaxmn.cpp:90 -msgid "*ist DL" -msgstr "" - -#: src/pentaxmn.cpp:91 -msgid "Optio S60" -msgstr "Optio S60" - -#: src/pentaxmn.cpp:92 -msgid "Optio S45" -msgstr "Optio S45" - -#: src/pentaxmn.cpp:93 -msgid "Optio S6" -msgstr "Optio S6" - -#: src/pentaxmn.cpp:94 -msgid "Optio WPi" -msgstr "Optio WPi" - -#: src/pentaxmn.cpp:95 -msgid "BenQ DC X600" -msgstr "" - -#: src/pentaxmn.cpp:96 -msgid "*ist DS2" -msgstr "" - -#: src/pentaxmn.cpp:97 -msgid "Samsung GX-1S" -msgstr "" - -#: src/pentaxmn.cpp:98 -msgid "Optio A10" -msgstr "Optio A10" - -#: src/pentaxmn.cpp:99 -msgid "*ist DL2" -msgstr "" - -#: src/pentaxmn.cpp:100 -msgid "Samsung GX-1L" -msgstr "" - -#: src/pentaxmn.cpp:101 -#, fuzzy -msgid "K100D" -msgstr "100" - -#: src/pentaxmn.cpp:102 -msgid "K110D" -msgstr "" - -#: src/pentaxmn.cpp:103 -msgid "K100D Super" -msgstr "" - -#: src/pentaxmn.cpp:104 -#, fuzzy -msgid "Optio T10/T20" -msgstr "Optio T10" - -#: src/pentaxmn.cpp:105 -msgid "Optio W10" -msgstr "Optio W10" - -#: src/pentaxmn.cpp:106 -msgid "Optio M10" -msgstr "Optio M10" - -#: src/pentaxmn.cpp:107 -msgid "K10D" -msgstr "" - -#: src/pentaxmn.cpp:108 -msgid "Samsung GX10" -msgstr "" - -#: src/pentaxmn.cpp:109 -msgid "Optio S7" -msgstr "Optio S7" - -#: src/pentaxmn.cpp:110 -#, fuzzy -msgid "Optio L20" -msgstr "Optio 230" - -#: src/pentaxmn.cpp:111 -msgid "Optio M20" -msgstr "Optio M20" - -#: src/pentaxmn.cpp:112 -msgid "Optio W20" -msgstr "Optio W20" - -#: src/pentaxmn.cpp:113 -msgid "Optio A20" -msgstr "Optio A20" - -#: src/pentaxmn.cpp:114 -msgid "Optio M30" -msgstr "Optio M30" - -#: src/pentaxmn.cpp:115 -msgid "Optio E30" -msgstr "Optio E30" - -#: src/pentaxmn.cpp:116 -#, fuzzy -msgid "Optio E35" -msgstr "Optio E30" - -#: src/pentaxmn.cpp:117 -msgid "Optio T30" -msgstr "Optio T30" - -#: src/pentaxmn.cpp:118 -msgid "Optio W30" -msgstr "Optio W30" - -#: src/pentaxmn.cpp:119 -msgid "Optio A30" -msgstr "Optio A30" - -#: src/pentaxmn.cpp:120 -msgid "Optio E40" -msgstr "Optio E40" - -#: src/pentaxmn.cpp:121 -msgid "Optio M40" -msgstr "Optio M40" - -#: src/pentaxmn.cpp:122 -#, fuzzy -msgid "Optio Z10" -msgstr "Optio A10" - -#: src/pentaxmn.cpp:123 -msgid "K20D" -msgstr "" - -#: src/pentaxmn.cpp:124 -msgid "Samsung GX20" -msgstr "" - -#: src/pentaxmn.cpp:125 -msgid "Optio S10" -msgstr "Optio S10" - -#: src/pentaxmn.cpp:126 -#, fuzzy -msgid "Optio A40" -msgstr "Optio S40" - -#: src/pentaxmn.cpp:127 -#, fuzzy -msgid "Optio V10" -msgstr "Optio A10" - -#: src/pentaxmn.cpp:128 -msgid "K200D" -msgstr "" - -#: src/pentaxmn.cpp:129 -#, fuzzy -msgid "Optio S12" -msgstr "Optio S10" - -#: src/pentaxmn.cpp:130 -#, fuzzy -msgid "Optio E50" -msgstr "Optio S50" - -#: src/pentaxmn.cpp:131 -#, fuzzy -msgid "Optio M50" -msgstr "Optio S50" - -#: src/pentaxmn.cpp:132 -#, fuzzy -msgid "Optio V20" -msgstr "Optio 230" - -#: src/pentaxmn.cpp:133 -#, fuzzy -msgid "Optio W60" -msgstr "Optio S60" - -#: src/pentaxmn.cpp:134 -#, fuzzy -msgid "Optio M60" -msgstr "Optio S60" - -#: src/pentaxmn.cpp:135 -#, fuzzy -msgid "Optio E60" -msgstr "Optio S60" - -#: src/pentaxmn.cpp:136 -msgid "K2000" -msgstr "" - -#: src/pentaxmn.cpp:137 -msgid "K-m" -msgstr "" - -#: src/pentaxmn.cpp:138 -#, fuzzy -msgid "Optio P70" -msgstr "Optio 750Z" - -#: src/pentaxmn.cpp:139 -#, fuzzy -msgid "Optio E70" -msgstr "Optio E30" - -#: src/pentaxmn.cpp:140 -msgid "X70" -msgstr "" - -#: src/pentaxmn.cpp:141 -msgid "K-7" -msgstr "" - -#: src/pentaxmn.cpp:142 -#, fuzzy -msgid "Optio W80" -msgstr "Optio W10" - -#: src/pentaxmn.cpp:143 -#, fuzzy -msgid "Optio P80" -msgstr "Optio 30" - -#: src/pentaxmn.cpp:144 -#, fuzzy -msgid "Optio WS80" -msgstr "Optio S40" - -#: src/pentaxmn.cpp:145 -msgid "K-x" -msgstr "" - -#: src/pentaxmn.cpp:146 -msgid "645D" -msgstr "" - -#: src/pentaxmn.cpp:147 -#, fuzzy -msgid "Optio I-10" -msgstr "Optio A10" - -#: src/pentaxmn.cpp:152 -#, fuzzy -msgid "Good" -msgstr "Пища" - -#: src/pentaxmn.cpp:153 -#, fuzzy -msgid "Better" -msgstr "Центральный" - -#: src/pentaxmn.cpp:154 -#, fuzzy -msgid "Best" -msgstr "Запад" - -#: src/pentaxmn.cpp:155 -msgid "TIFF" -msgstr "" - -#: src/pentaxmn.cpp:157 -msgid "Premium" -msgstr "" - -#: src/pentaxmn.cpp:162 -msgid "640x480" -msgstr "" - -#: src/pentaxmn.cpp:164 -msgid "1024x768" -msgstr "" - -#: src/pentaxmn.cpp:165 -msgid "1280x960" -msgstr "" - -#: src/pentaxmn.cpp:166 -msgid "1600x1200" -msgstr "" - -#: src/pentaxmn.cpp:167 -msgid "2048x1536" -msgstr "" - -#: src/pentaxmn.cpp:168 -msgid "2560x1920 or 2304x1728" -msgstr "" - -#: src/pentaxmn.cpp:169 -msgid "3072x2304" -msgstr "" - -#: src/pentaxmn.cpp:170 -msgid "3264x2448" -msgstr "" - -#: src/pentaxmn.cpp:171 -msgid "320x240" -msgstr "" - -#: src/pentaxmn.cpp:172 -msgid "2288x1712" -msgstr "" - -#: src/pentaxmn.cpp:173 -msgid "2592x1944" -msgstr "" - -#: src/pentaxmn.cpp:174 -msgid "2304x1728 or 2592x1944" -msgstr "" - -#: src/pentaxmn.cpp:175 -msgid "3056x2296" -msgstr "" - -#: src/pentaxmn.cpp:176 -msgid "2816x2212 or 2816x2112" -msgstr "" - -#: src/pentaxmn.cpp:177 -msgid "3648x2736" -msgstr "" - -#: src/pentaxmn.cpp:182 -#, fuzzy -msgid "Auto, Did not fire" -msgstr "Ð’Ñпышка не Ñработала" - -#: src/pentaxmn.cpp:184 -#, fuzzy -msgid "Auto, Did not fire, Red-eye reduction" -msgstr "авто + подавление Ñффекта краÑных глаз" - -#: src/pentaxmn.cpp:185 -#, fuzzy -msgid "Auto, Fired" -msgstr "Ðвтобрекетирование" - -#: src/pentaxmn.cpp:187 -#, fuzzy -msgid "Auto, Fired, Red-eye reduction" -msgstr "авто + подавление Ñффекта краÑных глаз" - -#: src/pentaxmn.cpp:188 -#, fuzzy -msgid "On, Red-eye reduction" -msgstr "Подавление Ñффекта краÑных глаз" - -#: src/pentaxmn.cpp:189 -msgid "On, Wireless" -msgstr "" - -#: src/pentaxmn.cpp:190 -msgid "On, Soft" -msgstr "" - -#: src/pentaxmn.cpp:191 -#, fuzzy -msgid "On, Slow-sync" -msgstr "Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ ÑинхронизациÑ" - -#: src/pentaxmn.cpp:192 -#, fuzzy -msgid "On, Slow-sync, Red-eye reduction" -msgstr "Да, Ñ Ð¿Ð¾Ð´Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ Ñффекта краÑных глаз" - -#: src/pentaxmn.cpp:193 -msgid "On, Trailing-curtain Sync" -msgstr "" - -#: src/pentaxmn.cpp:203 -#, fuzzy -msgid "Pan Focus" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" - -#: src/pentaxmn.cpp:204 -msgid "AF-S" -msgstr "" - -#: src/pentaxmn.cpp:205 -msgid "AF-C" -msgstr "" - -#: src/pentaxmn.cpp:206 -msgid "AF-A" -msgstr "" - -#: src/pentaxmn.cpp:212 -#, fuzzy -msgid "Fixed Center" -msgstr "ЯÑÐ½Ð°Ñ Ð¿Ð¾Ð³Ð¾Ð´Ð°" - -#: src/pentaxmn.cpp:213 -#, fuzzy -msgid "Automatic Tracking AF" -msgstr "ÐвтоматичеÑкий" - -#: src/pentaxmn.cpp:214 -msgid "Face Recognition AF" -msgstr "" - -#: src/pentaxmn.cpp:231 -#, fuzzy -msgid "Fixed Center or multiple" -msgstr "ЯÑÐ½Ð°Ñ Ð¿Ð¾Ð³Ð¾Ð´Ð°" - -#: src/pentaxmn.cpp:233 -#, fuzzy -msgid "Top-center" -msgstr "Центральный" - -#: src/pentaxmn.cpp:239 -#, fuzzy -msgid "Bottom-center" -msgstr "Ñлева направо" - -#: src/pentaxmn.cpp:245 src/pentaxmn.cpp:267 src/pentaxmn.cpp:275 -msgid "50" -msgstr "50" - -#: src/pentaxmn.cpp:246 -msgid "64" -msgstr "" - -#: src/pentaxmn.cpp:247 -#, fuzzy -msgid "80" -msgstr "50" - -#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:268 src/pentaxmn.cpp:277 -msgid "100" -msgstr "100" - -#: src/pentaxmn.cpp:249 -#, fuzzy -msgid "125" -msgstr "250" - -#: src/pentaxmn.cpp:250 -msgid "160" -msgstr "160" - -#: src/pentaxmn.cpp:251 src/pentaxmn.cpp:269 src/pentaxmn.cpp:270 -#: src/pentaxmn.cpp:279 -#, fuzzy -msgid "200" -msgstr "250" - -#: src/pentaxmn.cpp:252 -msgid "250" -msgstr "250" - -#: src/pentaxmn.cpp:253 -#, fuzzy -msgid "320" -msgstr "250" - -#: src/pentaxmn.cpp:254 src/pentaxmn.cpp:271 src/pentaxmn.cpp:281 -#, fuzzy -msgid "400" -msgstr "100" - -#: src/pentaxmn.cpp:255 -msgid "500" -msgstr "500" - -#: src/pentaxmn.cpp:256 -#, fuzzy -msgid "640" -msgstr "160" - -#: src/pentaxmn.cpp:257 src/pentaxmn.cpp:272 src/pentaxmn.cpp:283 -#, fuzzy -msgid "800" -msgstr "100" - -#: src/pentaxmn.cpp:258 -#, fuzzy -msgid "1000" -msgstr "100" - -#: src/pentaxmn.cpp:259 -#, fuzzy -msgid "1250" -msgstr "250" - -#: src/pentaxmn.cpp:260 src/pentaxmn.cpp:273 src/pentaxmn.cpp:285 -#, fuzzy -msgid "1600" -msgstr "100" - -#: src/pentaxmn.cpp:261 -msgid "2000" -msgstr "" - -#: src/pentaxmn.cpp:262 -#, fuzzy -msgid "2500" -msgstr "250" - -#: src/pentaxmn.cpp:263 src/pentaxmn.cpp:274 src/pentaxmn.cpp:287 -msgid "3200" -msgstr "" - -#: src/pentaxmn.cpp:264 -msgid "4000" -msgstr "" - -#: src/pentaxmn.cpp:265 -#, fuzzy -msgid "5000" -msgstr "500" - -#: src/pentaxmn.cpp:266 -msgid "6400" -msgstr "" - -#: src/pentaxmn.cpp:276 -#, fuzzy -msgid "70" -msgstr "50" - -#: src/pentaxmn.cpp:278 -#, fuzzy -msgid "140" -msgstr "10Ñ" - -#: src/pentaxmn.cpp:280 -#, fuzzy -msgid "280" -msgstr "250" - -#: src/pentaxmn.cpp:282 -#, fuzzy -msgid "560" -msgstr "50" - -#: src/pentaxmn.cpp:284 -#, fuzzy -msgid "1100" -msgstr "100" - -#: src/pentaxmn.cpp:286 -msgid "2200" -msgstr "" - -#: src/pentaxmn.cpp:304 -#, fuzzy -msgid "Multi Segment" -msgstr "Режим замера" - -#: src/pentaxmn.cpp:305 -#, fuzzy -msgid "Center Weighted" -msgstr "Центровзвешенный" - -#: src/pentaxmn.cpp:317 -#, fuzzy -msgid "DaylightFluorescent" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/pentaxmn.cpp:318 -#, fuzzy -msgid "DaywhiteFluorescent" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/pentaxmn.cpp:319 -#, fuzzy -msgid "WhiteFluorescent" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/pentaxmn.cpp:324 -#, fuzzy -msgid "User Selected" -msgstr "Ðвтобрекетирование" - -#: src/pentaxmn.cpp:329 -#, fuzzy -msgid "Auto (Daylight)" -msgstr "Дневной Ñвет" - -#: src/pentaxmn.cpp:330 -#, fuzzy -msgid "Auto (Shade)" -msgstr "Тень" - -#: src/pentaxmn.cpp:331 -#, fuzzy -msgid "Auto (Flash)" -msgstr "Ðвтобрекетирование" - -#: src/pentaxmn.cpp:332 -#, fuzzy -msgid "Auto (Tungsten)" -msgstr "Лампа накаливаниÑ" - -#: src/pentaxmn.cpp:333 -#, fuzzy -msgid "Auto (DaywhiteFluorescent)" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/pentaxmn.cpp:334 -#, fuzzy -msgid "Auto (WhiteFluorescent)" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/pentaxmn.cpp:335 -#, fuzzy -msgid "Auto (Cloudy)" -msgstr "Облачно" - -#: src/pentaxmn.cpp:337 -#, fuzzy -msgid "Preset (Fireworks?)" -msgstr "Фейерверк" - -#: src/pentaxmn.cpp:345 src/pentaxmn.cpp:358 -#, fuzzy -msgid "Med Low" -msgstr "Ðизкий" - -#: src/pentaxmn.cpp:346 src/pentaxmn.cpp:359 -#, fuzzy -msgid "Med High" -msgstr "Ð’Ñ‹Ñокий" - -#: src/pentaxmn.cpp:369 -#, fuzzy -msgid "Med Soft" -msgstr "Ðизкий" - -#: src/pentaxmn.cpp:370 -#, fuzzy -msgid "Med Hard" -msgstr "Ð’Ñ‹Ñокий" - -#: src/pentaxmn.cpp:371 -msgid "Very Soft" -msgstr "" - -#: src/pentaxmn.cpp:372 -#, fuzzy -msgid "Very Hard" -msgstr "Ð’Ñ‹Ñокий" - -#: src/pentaxmn.cpp:377 src/pentaxmn.cpp:960 -#, fuzzy -msgid "Home town" -msgstr "Тип изображениÑ" - -#: src/pentaxmn.cpp:383 -msgid "Pago Pago" -msgstr "" - -#: src/pentaxmn.cpp:384 -msgid "Honolulu" -msgstr "Гонолулу" - -#: src/pentaxmn.cpp:385 -#, fuzzy -msgid "Anchorage" -msgstr "Средний" - -#: src/pentaxmn.cpp:386 -msgid "Vancouver" -msgstr "Ванкувер" - -#: src/pentaxmn.cpp:387 -msgid "San Fransisco" -msgstr "" - -#: src/pentaxmn.cpp:388 -msgid "Los Angeles" -msgstr "" - -#: src/pentaxmn.cpp:389 -#, fuzzy -msgid "Calgary" -msgstr "КатегориÑ" - -#: src/pentaxmn.cpp:390 -#, fuzzy -msgid "Denver" -msgstr "Центральный" - -#: src/pentaxmn.cpp:391 -msgid "Mexico City" -msgstr "Мехико" - -#: src/pentaxmn.cpp:392 -msgid "Chicago" -msgstr "Чикаго" - -#: src/pentaxmn.cpp:393 -msgid "Miami" -msgstr "Майами" - -#: src/pentaxmn.cpp:394 -msgid "Toronto" -msgstr "Торонто" - -#: src/pentaxmn.cpp:395 -msgid "New York" -msgstr "Ðью-Йорк" - -#: src/pentaxmn.cpp:396 -msgid "Santiago" -msgstr "СантьÑго" - -#: src/pentaxmn.cpp:397 -msgid "Caracus" -msgstr "" - -#: src/pentaxmn.cpp:398 -msgid "Halifax" -msgstr "ГалифакÑ" - -#: src/pentaxmn.cpp:399 -msgid "Buenos Aires" -msgstr "БуÑноÑ-ÐйрÑÑ" - -#: src/pentaxmn.cpp:400 -msgid "Sao Paulo" -msgstr "" - -#: src/pentaxmn.cpp:401 -msgid "Rio de Janeiro" -msgstr "" - -#: src/pentaxmn.cpp:402 -msgid "Madrid" -msgstr "Мадрид" - -#: src/pentaxmn.cpp:403 -msgid "London" -msgstr "Лондон" - -#: src/pentaxmn.cpp:404 -msgid "Paris" -msgstr "Париж" - -#: src/pentaxmn.cpp:405 -msgid "Milan" -msgstr "Милан" - -#: src/pentaxmn.cpp:406 -msgid "Rome" -msgstr "Рим" - -#: src/pentaxmn.cpp:407 -msgid "Berlin" -msgstr "Берлин" - -#: src/pentaxmn.cpp:408 -msgid "Johannesburg" -msgstr "" - -#: src/pentaxmn.cpp:409 -#, fuzzy -msgid "Istanbul" -msgstr "Кабул" - -#: src/pentaxmn.cpp:410 -msgid "Cairo" -msgstr "Каир" - -#: src/pentaxmn.cpp:411 -msgid "Jerusalem" -msgstr "ИеруÑалим" - -#: src/pentaxmn.cpp:412 -msgid "Moscow" -msgstr "МоÑква" - -#: src/pentaxmn.cpp:413 -msgid "Jeddah" -msgstr "" - -#: src/pentaxmn.cpp:414 -msgid "Tehran" -msgstr "Тегеран" - -#: src/pentaxmn.cpp:415 -msgid "Dubai" -msgstr "Дубаи" - -#: src/pentaxmn.cpp:416 -msgid "Karachi" -msgstr "Карачи" - -#: src/pentaxmn.cpp:417 -msgid "Kabul" -msgstr "Кабул" - -#: src/pentaxmn.cpp:418 -#, fuzzy -msgid "Male" -msgstr "РучнаÑ" - -#: src/pentaxmn.cpp:419 -msgid "Delhi" -msgstr "Дели" - -#: src/pentaxmn.cpp:420 -#, fuzzy -msgid "Colombo" -msgstr "Цветовое проÑтранÑтво" - -#: src/pentaxmn.cpp:421 -msgid "Kathmandu" -msgstr "Катманду" - -#: src/pentaxmn.cpp:422 -#, fuzzy -msgid "Dacca" -msgstr "Дакар" - -#: src/pentaxmn.cpp:423 -#, fuzzy -msgid "Yangon" -msgstr "ничего" - -#: src/pentaxmn.cpp:424 -msgid "Bangkok" -msgstr "Бангкок" - -#: src/pentaxmn.cpp:425 -msgid "Kuala Lumpur" -msgstr "" - -#: src/pentaxmn.cpp:426 -#, fuzzy -msgid "Vientiane" -msgstr "ОриентациÑ" - -#: src/pentaxmn.cpp:427 -msgid "Singapore" -msgstr "Сингапур" - -#: src/pentaxmn.cpp:428 -msgid "Phnom Penh" -msgstr "" - -#: src/pentaxmn.cpp:429 -msgid "Ho Chi Minh" -msgstr "" - -#: src/pentaxmn.cpp:430 -msgid "Jakarta" -msgstr "Джакарта" - -#: src/pentaxmn.cpp:431 -msgid "Hong Kong" -msgstr "Гонконг" - -#: src/pentaxmn.cpp:432 -#, fuzzy -msgid "Perth" -msgstr "Север" - -#: src/pentaxmn.cpp:433 -msgid "Beijing" -msgstr "Пекин" - -#: src/pentaxmn.cpp:434 -msgid "Shanghai" -msgstr "Шанхай" - -#: src/pentaxmn.cpp:435 -#, fuzzy -msgid "Manila" -msgstr "РучнаÑ" - -#: src/pentaxmn.cpp:436 -#, fuzzy -msgid "Taipei" -msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸" - -#: src/pentaxmn.cpp:437 -msgid "Seoul" -msgstr "Сеул" - -#: src/pentaxmn.cpp:438 -msgid "Adelaide" -msgstr "" - -#: src/pentaxmn.cpp:439 -msgid "Tokyo" -msgstr "Токио" - -#: src/pentaxmn.cpp:440 -msgid "Guam" -msgstr "" - -#: src/pentaxmn.cpp:441 -msgid "Sydney" -msgstr "Сидней" - -#: src/pentaxmn.cpp:442 -#, fuzzy -msgid "Noumea" -msgstr "ЧиÑло F" - -#: src/pentaxmn.cpp:443 -msgid "Wellington" -msgstr "" - -#: src/pentaxmn.cpp:444 -msgid "Auckland" -msgstr "" - -#: src/pentaxmn.cpp:445 -msgid "Lima" -msgstr "Лима" - -#: src/pentaxmn.cpp:446 -msgid "Dakar" -msgstr "Дакар" - -#: src/pentaxmn.cpp:447 -msgid "Algiers" -msgstr "" - -#: src/pentaxmn.cpp:448 -msgid "Helsinki" -msgstr "ХельÑинки" - -#: src/pentaxmn.cpp:449 -#, fuzzy -msgid "Athens" -msgstr "Объектив" - -#: src/pentaxmn.cpp:450 -msgid "Nairobi" -msgstr "Ðайроби" - -#: src/pentaxmn.cpp:451 -msgid "Amsterdam" -msgstr "ÐмÑтердам" - -#: src/pentaxmn.cpp:452 -msgid "Stockholm" -msgstr "Стокгольм" - -#: src/pentaxmn.cpp:453 -msgid "Lisbon" -msgstr "" - -#: src/pentaxmn.cpp:454 -#, fuzzy -msgid "Copenhagen" -msgstr "Охват" - -#: src/pentaxmn.cpp:459 -#, fuzzy -msgid "Unprocessed" -msgstr "ÐеÑжатый" - -#: src/pentaxmn.cpp:460 -msgid "Digital Filter" -msgstr "Цифровой фильтр" - -#: src/pentaxmn.cpp:461 -#, fuzzy -msgid "Cropped" -msgstr "Монохромный" - -#: src/pentaxmn.cpp:463 -msgid "Frame Synthesis?" -msgstr "" - -#: src/pentaxmn.cpp:469 src/pentaxmn.cpp:506 -#, fuzzy -msgid "MTF Program" -msgstr "Программа" - -#: src/pentaxmn.cpp:475 -#, fuzzy -msgid "Night Scene Portrait" -msgstr "Ðочной портрет" - -#: src/pentaxmn.cpp:476 -#, fuzzy -msgid "No Flash" -msgstr "Без вÑпышки" - -#: src/pentaxmn.cpp:479 -msgid "Surf & Snow" -msgstr "" - -#: src/pentaxmn.cpp:482 -msgid "Kids" -msgstr "" - -#: src/pentaxmn.cpp:487 -#, fuzzy -msgid "Stage Lighting" -msgstr "Длина изображениÑ" - -#: src/pentaxmn.cpp:488 -#, fuzzy -msgid "Night Snap" -msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" - -#: src/pentaxmn.cpp:490 -#, fuzzy -msgid "Auto PICT (Standard)" -msgstr "Ðльбом" - -#: src/pentaxmn.cpp:491 -#, fuzzy -msgid "Auto PICT (Portrait)" -msgstr "ÐвтоматичеÑкий контраÑÑ‚" - -#: src/pentaxmn.cpp:492 -#, fuzzy -msgid "Auto PICT (Landscape)" -msgstr "Ðльбом" - -#: src/pentaxmn.cpp:493 -#, fuzzy -msgid "Auto PICT (Macro)" -msgstr "Ðльбом" - -#: src/pentaxmn.cpp:494 -#, fuzzy -msgid "Auto PICT (Sport)" -msgstr "Ðльбом" - -#: src/pentaxmn.cpp:497 src/pentaxmn.cpp:507 -#, fuzzy -msgid "Green Mode" -msgstr "Режим замера" - -#: src/pentaxmn.cpp:498 src/pentaxmn.cpp:508 -#, fuzzy -msgid "Shutter Speed Priority" -msgstr "Приоритет выдержки" - -#: src/pentaxmn.cpp:499 src/pentaxmn.cpp:509 -#, fuzzy -msgid "Aperture Priority" -msgstr "Приоритет диафрагмы" - -#: src/pentaxmn.cpp:501 src/pentaxmn.cpp:513 -msgid "Bulb" -msgstr "" - -#: src/pentaxmn.cpp:504 -#, fuzzy -msgid "Hi-speed Program" -msgstr "Программа ÑкÑпозиции" - -#: src/pentaxmn.cpp:505 -#, fuzzy -msgid "DOF Program" -msgstr "Программа" - -#: src/pentaxmn.cpp:510 -#, fuzzy -msgid "Program Tv Shift" -msgstr "Программа" - -#: src/pentaxmn.cpp:511 -#, fuzzy -msgid "Program Av Shift" -msgstr "Программа" - -#: src/pentaxmn.cpp:514 -#, fuzzy -msgid "Aperture Priority (Off-Auto-Aperture)" -msgstr "Приоритет диафрагмы (Av)" - -#: src/pentaxmn.cpp:515 -#, fuzzy -msgid "Manual (Off-Auto-Aperture)" -msgstr "Приоритет диафрагмы (Av)" - -#: src/pentaxmn.cpp:516 -#, fuzzy -msgid "Bulb (Off-Auto-Aperture)" -msgstr "Приоритет диафрагмы (Av)" - -#: src/pentaxmn.cpp:518 -#, fuzzy -msgid "Shutter Priority" -msgstr "Приоритет выдержки" - -#: src/pentaxmn.cpp:519 -#, fuzzy -msgid "Shutter & Aperture Priority AE" -msgstr "Приоритет выдержки" - -#: src/pentaxmn.cpp:520 -#, fuzzy -msgid "Shutter & Aperture Priority AE (1)" -msgstr "Приоритет выдержки" - -#: src/pentaxmn.cpp:521 -#, fuzzy -msgid "Sensitivity Priority AE" -msgstr "Ð¡Ð¿ÐµÐºÑ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡ÑƒÐ²ÑтвительноÑÑ‚ÑŒ" - -#: src/pentaxmn.cpp:522 -#, fuzzy -msgid "Sensitivity Priority AE (1)" -msgstr "Приоритет выдержки" - -#: src/pentaxmn.cpp:523 -msgid "Flash X-Sync Speed AE" -msgstr "" - -#: src/pentaxmn.cpp:524 -msgid "Flash X-Sync Speed AE (1)" -msgstr "" - -#: src/pentaxmn.cpp:527 -msgid "Video (30 fps)" -msgstr "" - -#: src/pentaxmn.cpp:528 -msgid "Video (24 fps)" -msgstr "" - -#: src/pentaxmn.cpp:535 -#, fuzzy -msgid "Continuous (Hi)" -msgstr "Продолжительный ведущий режим" - -#: src/pentaxmn.cpp:536 src/sonymn.cpp:223 -#, fuzzy -msgid "Burst" -msgstr "СпоÑоб фокуÑировки" - -#: src/pentaxmn.cpp:538 -#, fuzzy -msgid "Self-timer (12 sec)" -msgstr "Серийный номер" - -#: src/pentaxmn.cpp:539 -#, fuzzy -msgid "Self-timer (2 sec)" -msgstr "Серийный номер" - -#: src/pentaxmn.cpp:540 -#, fuzzy -msgid "Remote Control (3 sec)" -msgstr "Пульт Д/У?" - -#: src/pentaxmn.cpp:541 -#, fuzzy -msgid "Remote Control" -msgstr "Пульт Д/У?" - -#: src/pentaxmn.cpp:543 src/properties.cpp:883 -#, fuzzy -msgid "Video" -msgstr "Цвет" - -#: src/pentaxmn.cpp:554 -msgid "M-42 or No Lens" -msgstr "" - -#: src/pentaxmn.cpp:555 -#, fuzzy -msgid "K,M Lens" -msgstr "Объектив" - -#: src/pentaxmn.cpp:556 -msgid "A Series Lens" -msgstr "" - -#: src/pentaxmn.cpp:703 -#, fuzzy -msgid "Bright" -msgstr "ЯркоÑÑ‚ÑŒ+" - -#: src/pentaxmn.cpp:706 -msgid "Vibrant" -msgstr "" - -#: src/pentaxmn.cpp:708 -msgid "Reversal film" -msgstr "" - -#: src/pentaxmn.cpp:720 -#, fuzzy -msgid "Weakest" -msgstr "Запад" - -#: src/pentaxmn.cpp:721 -#, fuzzy -msgid "Weak" -msgstr "Запад" - -#: src/pentaxmn.cpp:722 -#, fuzzy -msgid "Strong" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/pentaxmn.cpp:832 -#, fuzzy -msgid "No extended bracketing" -msgstr "ÐаÑтройка баланÑа белого" - -#: src/pentaxmn.cpp:838 -msgid "WB-BA" -msgstr "WB-BA" - -#: src/pentaxmn.cpp:841 -msgid "WB-GM" -msgstr "WB-GM" - -#: src/pentaxmn.cpp:853 -#, fuzzy -msgid "Unknown " -msgstr "ÐеизвеÑтно" - -#: src/pentaxmn.cpp:866 -#, fuzzy -msgid "Pentax Makernote version" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/pentaxmn.cpp:869 -#, fuzzy -msgid "Camera shooting mode" -msgstr "Режим замера" - -#: src/pentaxmn.cpp:871 src/pentaxmn.cpp:872 -msgid "Resolution of a preview image" -msgstr "" - -#: src/pentaxmn.cpp:874 -#, fuzzy -msgid "Length of a preview image" -msgstr "ВерÑÐ¸Ñ ÑÑкиза" - -#: src/pentaxmn.cpp:875 -msgid "Size of an IFD containing a preview image" -msgstr "" - -#: src/pentaxmn.cpp:880 -#, fuzzy -msgid "Model identification" -msgstr "ВерÑÐ¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸" - -#: src/pentaxmn.cpp:881 -#, fuzzy -msgid "Pentax model idenfication" -msgstr "ВерÑÐ¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸" - -#: src/pentaxmn.cpp:883 src/pentaxmn.cpp:884 src/properties.cpp:150 -#, fuzzy -msgid "Date" -msgstr "Программное обеÑпечение" - -#: src/pentaxmn.cpp:886 src/pentaxmn.cpp:887 -#, fuzzy -msgid "Time" -msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸" - -#: src/pentaxmn.cpp:890 -#, fuzzy -msgid "Image quality settings" -msgstr "ОпиÑание Ñнимка" - -#: src/pentaxmn.cpp:893 -#, fuzzy -msgid "Image size settings" -msgstr "ОпиÑание Ñнимка" - -#: src/pentaxmn.cpp:897 -#, fuzzy -msgid "Flash mode settings" -msgstr "Ð’Ñпышка Ñработала" - -#: src/pentaxmn.cpp:900 -#, fuzzy -msgid "Focus mode settings" -msgstr "СпоÑоб фокуÑировки" - -#: src/pentaxmn.cpp:903 -#, fuzzy -msgid "Selected AF point" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/pentaxmn.cpp:905 src/pentaxmn.cpp:906 -#, fuzzy -msgid "AF point in focus" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/pentaxmn.cpp:912 src/pentaxmn.cpp:913 -#, fuzzy -msgid "F-Number" -msgstr "ЧиÑло F" - -#: src/pentaxmn.cpp:915 -#, fuzzy -msgid "ISO sensitivity" -msgstr "Ð¡Ð¿ÐµÐºÑ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡ÑƒÐ²ÑтвительноÑÑ‚ÑŒ" - -#: src/pentaxmn.cpp:916 -#, fuzzy -msgid "ISO sensitivity settings" -msgstr "Параметры объектива" - -#: src/pentaxmn.cpp:923 src/pentaxmn.cpp:924 -#, fuzzy -msgid "MeteringMode" -msgstr "Режим замера" - -#: src/pentaxmn.cpp:926 src/pentaxmn.cpp:927 -#, fuzzy -msgid "AutoBracketing" -msgstr "Ðвтобрекетирование" - -#: src/pentaxmn.cpp:929 src/pentaxmn.cpp:930 -#, fuzzy -msgid "White ballance" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/pentaxmn.cpp:932 src/pentaxmn.cpp:933 -#, fuzzy -msgid "White ballance mode" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/pentaxmn.cpp:936 -#, fuzzy -msgid "Blue color balance" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/pentaxmn.cpp:939 -#, fuzzy -msgid "Red color balance" -msgstr "Цветовое проÑтранÑтво" - -#: src/pentaxmn.cpp:941 src/pentaxmn.cpp:942 -#, fuzzy -msgid "FocalLength" -msgstr "ФокуÑное раÑÑтоÑние" - -#: src/pentaxmn.cpp:956 src/pentaxmn.cpp:957 src/properties.cpp:657 -#, fuzzy -msgid "Location" -msgstr "МеÑтоположение объекта Ñъёмки" - -#: src/pentaxmn.cpp:959 -#, fuzzy -msgid "Hometown" -msgstr "Рим" - -#: src/pentaxmn.cpp:965 -msgid "Hometown DST" -msgstr "" - -#: src/pentaxmn.cpp:966 -msgid "Whether day saving time is active in home town" -msgstr "" - -#: src/pentaxmn.cpp:968 -#, fuzzy -msgid "Destination DST" -msgstr "ОриентациÑ" - -#: src/pentaxmn.cpp:969 -msgid "Whether day saving time is active in destination" -msgstr "" - -#: src/pentaxmn.cpp:971 src/pentaxmn.cpp:972 -#, fuzzy -msgid "DSPFirmwareVersion" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/pentaxmn.cpp:974 src/pentaxmn.cpp:975 -#, fuzzy -msgid "CPUFirmwareVersion" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/pentaxmn.cpp:981 -#, fuzzy -msgid "Light value" -msgstr "ЯркоÑÑ‚ÑŒ" - -#: src/pentaxmn.cpp:982 -msgid "Camera calculated light value, includes exposure compensation" -msgstr "" - -#: src/pentaxmn.cpp:998 src/pentaxmn.cpp:999 -#, fuzzy -msgid "Image area offset" -msgstr "Размер изображениÑ" - -#: src/pentaxmn.cpp:1001 src/pentaxmn.cpp:1002 -#, fuzzy -msgid "Raw image size" -msgstr "Размер изображениÑ" - -#: src/pentaxmn.cpp:1005 src/pentaxmn.cpp:1006 -#, fuzzy -msgid "Preview image borders" -msgstr "ВерÑÐ¸Ñ ÑÑкиза" - -#: src/pentaxmn.cpp:1011 src/pentaxmn.cpp:1012 -#, fuzzy -msgid "Sensitivity adjust" -msgstr "Ð¡Ð¿ÐµÐºÑ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡ÑƒÐ²ÑтвительноÑÑ‚ÑŒ" - -#: src/pentaxmn.cpp:1014 src/pentaxmn.cpp:1015 -msgid "Digital filter" -msgstr "Цифровой фильтр" - -#: src/pentaxmn.cpp:1019 -#, fuzzy -msgid "Camera temperature" -msgstr "Температура цвета" - -#: src/pentaxmn.cpp:1032 src/pentaxmn.cpp:1033 -#, fuzzy -msgid "Image tone" -msgstr "Тип изображениÑ" - -#: src/pentaxmn.cpp:1035 src/pentaxmn.cpp:1036 -msgid "Colort temperature" -msgstr "Температура цвета" - -#: src/pentaxmn.cpp:1039 -#, fuzzy -msgid "Shake reduction" -msgstr "Подавление шума" - -#: src/pentaxmn.cpp:1040 -#, fuzzy -msgid "Shake reduction information" -msgstr "СпоÑоб фокуÑировки" - -#: src/pentaxmn.cpp:1045 src/pentaxmn.cpp:1046 -#, fuzzy -msgid "Dynamic range expansion" -msgstr "ÐаÑтройка баланÑа белого" - -#: src/pentaxmn.cpp:1048 src/pentaxmn.cpp:1049 -msgid "High ISO noise reduction" -msgstr "Подавление шума на выÑоких ISO" - -#: src/pentaxmn.cpp:1051 src/pentaxmn.cpp:1052 -#, fuzzy -msgid "AF Adjustment" -msgstr "ПодÑтройка оттенка" - -#: src/pentaxmn.cpp:1055 src/pentaxmn.cpp:1056 -msgid "Black point" -msgstr "Точка черного" - -#: src/pentaxmn.cpp:1058 src/pentaxmn.cpp:1059 -msgid "White point" -msgstr "Точка белого" - -#: src/pentaxmn.cpp:1062 src/pentaxmn.cpp:1063 -#, fuzzy -msgid "ShotInfo" -msgstr "СпоÑоб фокуÑировки" - -#: src/pentaxmn.cpp:1065 src/pentaxmn.cpp:1066 -#, fuzzy -msgid "AEInfo" -msgstr "СпоÑоб фокуÑировки" - -#: src/pentaxmn.cpp:1068 src/pentaxmn.cpp:1069 -#, fuzzy -msgid "LensInfo" -msgstr "Объектив" - -#: src/pentaxmn.cpp:1071 src/pentaxmn.cpp:1072 -#, fuzzy -msgid "FlashInfo" -msgstr "Ð’Ñпышка" - -#: src/pentaxmn.cpp:1074 src/pentaxmn.cpp:1075 -#, fuzzy -msgid "AEMeteringSegments" -msgstr "Режим замера" - -#: src/pentaxmn.cpp:1077 src/pentaxmn.cpp:1078 -#, fuzzy -msgid "FlashADump" -msgstr "Режим вÑпышки" - -#: src/pentaxmn.cpp:1080 src/pentaxmn.cpp:1081 -#, fuzzy -msgid "FlashBDump" -msgstr "Режим вÑпышки" - -#: src/pentaxmn.cpp:1084 src/pentaxmn.cpp:1085 -#, fuzzy -msgid "WB_RGGBLevelsDaylight" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/pentaxmn.cpp:1087 src/pentaxmn.cpp:1088 -#, fuzzy -msgid "WB_RGGBLevelsShade" -msgstr "ЗарÑд батареи" - -#: src/pentaxmn.cpp:1090 src/pentaxmn.cpp:1091 -#, fuzzy -msgid "WB_RGGBLevelsCloudy" -msgstr "ЗарÑд батареи" - -#: src/pentaxmn.cpp:1093 src/pentaxmn.cpp:1094 -#, fuzzy -msgid "WB_RGGBLevelsTungsten" -msgstr "ЗарÑд батареи" - -#: src/pentaxmn.cpp:1096 src/pentaxmn.cpp:1097 -#, fuzzy -msgid "WB_RGGBLevelsFluorescentD" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/pentaxmn.cpp:1099 src/pentaxmn.cpp:1100 -#, fuzzy -msgid "WB_RGGBLevelsFluorescentN" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/pentaxmn.cpp:1102 src/pentaxmn.cpp:1103 -#, fuzzy -msgid "WB_RGGBLevelsFluorescentW" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/pentaxmn.cpp:1105 src/pentaxmn.cpp:1106 -#, fuzzy -msgid "WB_RGGBLevelsFlash" -msgstr "ЗарÑд батареи" - -#: src/pentaxmn.cpp:1108 src/pentaxmn.cpp:1109 -#, fuzzy -msgid "CameraInfo" -msgstr "ID камеры" - -#: src/pentaxmn.cpp:1111 src/pentaxmn.cpp:1112 -#, fuzzy -msgid "BatteryInfo" -msgstr "ID камеры" - -#: src/pentaxmn.cpp:1114 src/pentaxmn.cpp:1115 -#, fuzzy -msgid "AFInfo" -msgstr "СпоÑоб фокуÑировки" - -#: src/pentaxmn.cpp:1117 src/pentaxmn.cpp:1118 -#, fuzzy -msgid "ColorInfo" -msgstr "Цвет" - -#: src/pentaxmn.cpp:1125 -msgid "Unknown PentaxMakerNote tag" -msgstr "ÐеизвеÑтный тег PentaxMakerNote" - -#: src/properties.cpp:102 -msgid "Dublin Core schema" -msgstr "" - -#: src/properties.cpp:103 -msgid "digiKam Photo Management schema" -msgstr "" - -#: src/properties.cpp:104 -msgid "KDE Image Program Interface schema" -msgstr "" - -#: src/properties.cpp:105 -msgid "XMP Basic schema" -msgstr "" - -#: src/properties.cpp:106 -msgid "XMP Rights Management schema" -msgstr "" - -#: src/properties.cpp:107 -msgid "XMP Media Management schema" -msgstr "" - -#: src/properties.cpp:108 -msgid "XMP Basic Job Ticket schema" -msgstr "" - -#: src/properties.cpp:109 -msgid "XMP Paged-Text schema" -msgstr "" - -#: src/properties.cpp:110 -msgid "XMP Dynamic Media schema" -msgstr "" - -#: src/properties.cpp:111 -msgid "Microsoft Photo schema" -msgstr "" - -#: src/properties.cpp:112 -#, fuzzy -msgid "Adobe PDF schema" -msgstr "Adobe RGB" - -#: src/properties.cpp:113 -msgid "Adobe photoshop schema" -msgstr "" - -#: src/properties.cpp:114 -#, fuzzy -msgid "Camera Raw schema" -msgstr "ID камеры" - -#: src/properties.cpp:115 -msgid "Exif Schema for TIFF Properties" -msgstr "" - -#: src/properties.cpp:116 -msgid "Exif schema for Exif-specific Properties" -msgstr "" - -#: src/properties.cpp:117 -msgid "Exif schema for Additional Exif Properties" -msgstr "" - -#: src/properties.cpp:118 src/properties.cpp:119 -msgid "IPTC Core schema" -msgstr "" - -#: src/properties.cpp:120 src/properties.cpp:121 -msgid "IPTC Extension schema" -msgstr "" - -#: src/properties.cpp:122 -msgid "PLUS License Data Format schema" -msgstr "" - -#: src/properties.cpp:123 -msgid "iView Media Pro schema" -msgstr "" - -#: src/properties.cpp:124 -msgid "Expression Media schema" -msgstr "" - -#: src/properties.cpp:125 -msgid "Microsoft Photo 1.2 schema" -msgstr "" - -#: src/properties.cpp:126 -msgid "Microsoft Photo RegionInfo schema" -msgstr "" - -#: src/properties.cpp:127 -msgid "Microsoft Photo Region schema" -msgstr "" - -#: src/properties.cpp:128 -msgid "Metadata Working Group Regions schema" -msgstr "" - -#: src/properties.cpp:131 -msgid "Colorant structure" -msgstr "Структура краÑителÑ" - -#: src/properties.cpp:132 -#, fuzzy -msgid "Dimensions structure" -msgstr "Размер изображениÑ" - -#: src/properties.cpp:133 -#, fuzzy -msgid "Font structure" -msgstr "Структура краÑителÑ" - -#: src/properties.cpp:134 -msgid "Thumbnail structure" -msgstr "Структура ÑÑкиза" - -#: src/properties.cpp:135 -#, fuzzy -msgid "Resource Event structure" -msgstr "Структура краÑителÑ" - -#: src/properties.cpp:136 -#, fuzzy -msgid "ResourceRef structure" -msgstr "Размер изображениÑ" - -#: src/properties.cpp:137 -#, fuzzy -msgid "Version structure" -msgstr "Размер изображениÑ" - -#: src/properties.cpp:138 -msgid "Basic Job/Workflow structure" -msgstr "" - -#: src/properties.cpp:139 -#, fuzzy -msgid "Area structure" -msgstr "Структура краÑителÑ" - -#: src/properties.cpp:142 -msgid "Qualifier for xmp:Identifier" -msgstr "" - -#: src/properties.cpp:146 -msgid "Contributor" -msgstr "УчаÑтник" - -#: src/properties.cpp:146 -msgid "Contributors to the resource (other than the authors)." -msgstr "" - -#: src/properties.cpp:147 -msgid "Coverage" -msgstr "Охват" - -#: src/properties.cpp:147 -msgid "" -"The spatial or temporal topic of the resource, the spatial applicability of " -"the resource, or the jurisdiction under which the resource is relevant." -msgstr "" - -#: src/properties.cpp:149 -msgid "Creator" -msgstr "Создатель" - -#: src/properties.cpp:149 -msgid "" -"The authors of the resource (listed in order of precedence, if significant)." -msgstr "" - -#: src/properties.cpp:150 -msgid "Date(s) that something interesting happened to the resource." -msgstr "" - -#: src/properties.cpp:151 -msgid "" -"A textual description of the content of the resource. Multiple values may be " -"present for different languages." -msgstr "" - -#: src/properties.cpp:153 -msgid "Format" -msgstr "Формат" - -#: src/properties.cpp:153 -msgid "" -"The file format used when saving the resource. Tools and applications should " -"set this property to the save format of the data. It may include appropriate " -"qualifiers." -msgstr "" - -#: src/properties.cpp:155 src/properties.cpp:210 -#, fuzzy -msgid "Identifier" -msgstr "Идентификатор ARM" - -#: src/properties.cpp:155 -msgid "" -"Unique identifier of the resource. Recommended best practice is to identify " -"the resource by means of a string conforming to a formal identification " -"system." -msgstr "" - -#: src/properties.cpp:157 -msgid "An unordered array specifying the languages used in the resource." -msgstr "" - -#: src/properties.cpp:158 -msgid "Publisher" -msgstr "" - -#: src/properties.cpp:158 -msgid "" -"An entity responsible for making the resource available. Examples of a " -"Publisher include a person, an organization, or a service. Typically, the " -"name of a Publisher should be used to indicate the entity." -msgstr "" - -#: src/properties.cpp:161 -#, fuzzy -msgid "Relation" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/properties.cpp:161 -msgid "" -"Relationships to other documents. Recommended best practice is to identify " -"the related resource by means of a string conforming to a formal " -"identification system." -msgstr "" - -#: src/properties.cpp:163 -msgid "Rights" -msgstr "Права" - -#: src/properties.cpp:163 -msgid "" -"Informal rights statement, selected by language. Typically, rights " -"information includes a statement about various property rights associated " -"with the resource, including intellectual property rights." -msgstr "" - -#: src/properties.cpp:166 -#, fuzzy -msgid "Unique identifier of the work from which this resource was derived." -msgstr "Ðазвание отÑканированного документа" - -#: src/properties.cpp:167 -msgid "" -"An unordered array of descriptive phrases or keywords that specify the topic " -"of the content of the resource." -msgstr "" - -#: src/properties.cpp:169 -#, fuzzy -msgid "Title" -msgstr "Файл" - -#: src/properties.cpp:169 -msgid "" -"The title of the document, or the name given to the resource. Typically, it " -"will be a name by which the resource is formally known." -msgstr "" - -#: src/properties.cpp:171 src/properties.cpp:979 -#, fuzzy -msgid "Type" -msgstr "тип" - -#: src/properties.cpp:171 -msgid "A document type; for example, novel, poem, or working paper." -msgstr "" - -#: src/properties.cpp:177 -msgid "Tags List" -msgstr "" - -#: src/properties.cpp:177 -msgid "" -"The list of complete tags path as string. The path hierarchy is separated by " -"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." -msgstr "" - -#: src/properties.cpp:178 -#, fuzzy -msgid "Captions Author Names" -msgstr "Ðазвание Ñтраны" - -#: src/properties.cpp:178 -msgid "" -"The list of all captions author names for each language alternative captions " -"set in standard XMP tags." -msgstr "" - -#: src/properties.cpp:179 -#, fuzzy -msgid "Captions Date Time Stamps" -msgstr "обновлÑетÑÑ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ° времени" - -#: src/properties.cpp:179 -msgid "" -"The list of all captions date time stamps for each language alternative " -"captions set in standard XMP tags." -msgstr "" - -#: src/properties.cpp:180 src/tags.cpp:837 -#, fuzzy -msgid "Image History" -msgstr "Длина изображениÑ" - -#: src/properties.cpp:180 -msgid "" -"An XML based content to list all action processed on this image with image " -"editor (as crop, rotate, color corrections, adjustements, etc.)." -msgstr "" - -#: src/properties.cpp:181 -#, fuzzy -msgid "Lens Correction Settings" -msgstr "Параметры объектива" - -#: src/properties.cpp:181 -msgid "" -"The list of Lens Correction tools settings used to fix lens distorsion. This " -"include Batch Queue Manager and Image editor tools based on LensFun library." -msgstr "" - -#: src/properties.cpp:182 -#, fuzzy -msgid "Color Label" -msgstr "Цветовое проÑтранÑтво" - -#: src/properties.cpp:182 -msgid "" -"The color label assigned to this item. Possible values are \"0\": no label; " -"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " -"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." -msgstr "" - -#: src/properties.cpp:183 -#, fuzzy -msgid "Pick Label" -msgstr "Кабул" - -#: src/properties.cpp:183 -msgid "" -"The pick label assigned to this item. Possible values are \"0\": no label; " -"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " -"accepted." -msgstr "" - -#: src/properties.cpp:189 -msgid "Enfuse Input Files" -msgstr "" - -#: src/properties.cpp:189 -msgid "" -"The list of files processed with Enfuse program through ExpoBlending tool." -msgstr "" - -#: src/properties.cpp:190 -#, fuzzy -msgid "Enfuse Settings" -msgstr "ÐаÑтройка резкоÑти" - -#: src/properties.cpp:190 -msgid "" -"The list of Enfuse settings used to blend image stack with ExpoBlending tool." -msgstr "" - -#: src/properties.cpp:191 -msgid "PicasaWeb Item ID" -msgstr "" - -#: src/properties.cpp:191 -msgid "Item ID from PicasaWeb web service." -msgstr "" - -#: src/properties.cpp:192 -msgid "Yandex Fotki Item ID" -msgstr "" - -#: src/properties.cpp:192 -msgid "Item ID from Yandex Fotki web service." -msgstr "" - -#: src/properties.cpp:198 -#, fuzzy -msgid "Advisory" -msgstr "Звук" - -#: src/properties.cpp:198 -msgid "" -"An unordered array specifying properties that were edited outside the " -"authoring application. Each item should contain a single namespace and XPath " -"separated by one ASCII space (U+0020)." -msgstr "" - -#: src/properties.cpp:201 -msgid "Base URL" -msgstr "" - -#: src/properties.cpp:201 -msgid "" -"The base URL for relative URLs in the document content. If this document " -"contains Internet links, and those links are relative, they are relative to " -"this base URL. This property provides a standard way for embedded relative " -"URLs to be interpreted by tools. Web authoring tools should set the value " -"based on their notion of where URLs will be interpreted." -msgstr "" - -#: src/properties.cpp:206 -msgid "Create Date" -msgstr "Дата ÑозданиÑ" - -#: src/properties.cpp:206 -#, fuzzy -msgid "The date and time the resource was originally created." -msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" - -#: src/properties.cpp:207 -#, fuzzy -msgid "Creator Tool" -msgstr "Создатель" - -#: src/properties.cpp:207 -msgid "" -"The name of the first known tool used to create the resource. If history is " -"present in the metadata, this value should be equivalent to that of xmpMM:" -"History's softwareAgent property." -msgstr "" - -#: src/properties.cpp:210 -msgid "" -"An unordered array of text strings that unambiguously identify the resource " -"within a given context. An array item may be qualified with xmpidq:Scheme to " -"denote the formal identification system to which that identifier conforms. " -"Note: The dc:identifier property is not used because it lacks a defined " -"scheme qualifier and has been defined in the XMP Specification as a simple " -"(single-valued) property." -msgstr "" - -#: src/properties.cpp:215 -#, fuzzy -msgid "Label" -msgstr "Кабул" - -#: src/properties.cpp:215 -msgid "" -"A word or short phrase that identifies a document as a member of a user-" -"defined collection. Used to organize documents in a file browser." -msgstr "" - -#: src/properties.cpp:217 -#, fuzzy -msgid "Metadata Date" -msgstr "Дата ÑозданиÑ" - -#: src/properties.cpp:217 -msgid "" -"The date and time that any metadata for this resource was last changed. It " -"should be the same as or more recent than xmp:ModifyDate." -msgstr "" - -#: src/properties.cpp:219 -#, fuzzy -msgid "Modify Date" -msgstr "ПорÑдок заполнениÑ" - -#: src/properties.cpp:219 -msgid "" -"The date and time the resource was last modified. Note: The value of this " -"property is not necessarily the same as the file's system modification date " -"because it is set before the file is saved." -msgstr "" - -#: src/properties.cpp:222 -#, fuzzy -msgid "Nickname" -msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" - -#: src/properties.cpp:222 -msgid "A short informal name for the resource." -msgstr "" - -#: src/properties.cpp:223 -msgid "Rating" -msgstr "Оценка" - -#: src/properties.cpp:223 -msgid "" -"A number that indicates a document's status relative to other documents, " -"used to organize documents in a file browser. Values are user-defined within " -"an application-defined range." -msgstr "" - -#: src/properties.cpp:226 -msgid "Thumbnails" -msgstr "ЭÑкизы" - -#: src/properties.cpp:226 -msgid "" -"An alternative array of thumbnail images for a file, which can differ in " -"characteristics such as size or image encoding." -msgstr "" - -#: src/properties.cpp:233 -msgid "Certificate" -msgstr "" - -#: src/properties.cpp:233 -msgid "Online rights management certificate." -msgstr "" - -#: src/properties.cpp:234 -#, fuzzy -msgid "Marked" -msgstr "РучнаÑ" - -#: src/properties.cpp:234 -msgid "Indicates that this is a rights-managed resource." -msgstr "" - -#: src/properties.cpp:235 -msgid "Owner" -msgstr "Владелец" - -#: src/properties.cpp:235 -msgid "An unordered array specifying the legal owner(s) of a resource." -msgstr "" - -#: src/properties.cpp:236 -msgid "Usage Terms" -msgstr "" - -#: src/properties.cpp:236 -msgid "Text instructions on how a resource can be legally used." -msgstr "" - -#: src/properties.cpp:237 -msgid "Web Statement" -msgstr "" - -#: src/properties.cpp:237 -msgid "" -"The location of a web page describing the owner and/or rights statement for " -"this resource." -msgstr "" - -#: src/properties.cpp:243 -#, fuzzy -msgid "Derived From" -msgstr "Режим замера" - -#: src/properties.cpp:243 -msgid "" -"A reference to the original document from which this one is derived. It is a " -"minimal reference; missing components can be assumed to be unchanged. For " -"example, a new version might only need to specify the instance ID and " -"version number of the previous version, or a rendition might only need to " -"specify the instance ID and rendition class of the original." -msgstr "" - -#: src/properties.cpp:248 -msgid "Document ID" -msgstr "ID документа" - -#: src/properties.cpp:248 -msgid "" -"The common identifier for all versions and renditions of a document. It " -"should be based on a UUID; see Document and Instance IDs below." -msgstr "" - -#: src/properties.cpp:250 -#, fuzzy -msgid "History" -msgstr "Длина изображениÑ" - -#: src/properties.cpp:250 -msgid "" -"An ordered array of high-level user actions that resulted in this resource. " -"It is intended to give human readers a general indication of the steps taken " -"to make the changes from the previous version to this one. The list should " -"be at an abstract level; it is not intended to be an exhaustive keystroke or " -"other detailed history." -msgstr "" - -#: src/properties.cpp:254 -#, fuzzy -msgid "Instance ID" -msgstr "Intel" - -#: src/properties.cpp:254 -msgid "" -"An identifier for a specific incarnation of a document, updated each time a " -"file is saved. It should be based on a UUID; see Document and Instance IDs " -"below." -msgstr "" - -#: src/properties.cpp:256 -#, fuzzy -msgid "Managed From" -msgstr "Язык" - -#: src/properties.cpp:256 -msgid "" -"A reference to the document as it was prior to becoming managed. It is set " -"when a managed document is introduced to an asset management system that " -"does not currently own it. It may or may not include references to different " -"management systems." -msgstr "" - -#: src/properties.cpp:259 -#, fuzzy -msgid "Manager" -msgstr "Язык" - -#: src/properties.cpp:259 -msgid "" -"The name of the asset management system that manages this resource. Along " -"with xmpMM: ManagerVariant, it tells applications which asset management " -"system to contact concerning this document." -msgstr "" - -#: src/properties.cpp:262 -#, fuzzy -msgid "Manage To" -msgstr "Язык" - -#: src/properties.cpp:262 -msgid "" -"A URI identifying the managed resource to the asset management system; the " -"presence of this property is the formal indication that this resource is " -"managed. The form and content of this URI is private to the asset management " -"system." -msgstr "" - -#: src/properties.cpp:265 -#, fuzzy -msgid "Manage UI" -msgstr "Язык" - -#: src/properties.cpp:265 -msgid "" -"A URI that can be used to access information about the managed resource " -"through a web browser. It might require a custom browser plug-in." -msgstr "" - -#: src/properties.cpp:267 -#, fuzzy -msgid "Manager Variant" -msgstr "Язык" - -#: src/properties.cpp:267 -msgid "" -"Specifies a particular variant of the asset management system. The format of " -"this property is private to the specific asset management system." -msgstr "" - -#: src/properties.cpp:269 -msgid "Rendition Class" -msgstr "" - -#: src/properties.cpp:269 -msgid "" -"The rendition class name for this resource. This property should be absent " -"or set to default for a document version that is not a derived rendition." -msgstr "" - -#: src/properties.cpp:271 -msgid "Rendition Params" -msgstr "" - -#: src/properties.cpp:271 -msgid "" -"Can be used to provide additional rendition parameters that are too complex " -"or verbose to encode in xmpMM: RenditionClass." -msgstr "" - -#: src/properties.cpp:273 -msgid "Version ID" -msgstr "ID верÑии" - -#: src/properties.cpp:273 -msgid "" -"The document version identifier for this resource. Each version of a " -"document gets a new identifier, usually simply by incrementing integers 1, " -"2, 3 . . . and so on. Media management systems can have other conventions or " -"support branching which requires a more complex scheme." -msgstr "" - -#: src/properties.cpp:277 -msgid "Versions" -msgstr "ВерÑии" - -#: src/properties.cpp:277 -msgid "" -"The version history associated with this resource. Entry [1] is the oldest " -"known version for this document, entry [last()] is the most recent version. " -"Typically, a media management system would fill in the version information " -"in the metadata on check-in. It is not guaranteed that a complete history " -"versions from the first to this one will be present in the xmpMM:Versions " -"property. Interior version information can be compressed or eliminated and " -"the version history can be truncated at some point." -msgstr "" - -#: src/properties.cpp:283 -msgid "Last URL" -msgstr "" - -#: src/properties.cpp:283 -msgid "Deprecated for privacy protection." -msgstr "" - -#: src/properties.cpp:284 -#, fuzzy -msgid "Rendition Of" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/properties.cpp:284 -msgid "" -"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " -"which this is a rendition." -msgstr "" - -#: src/properties.cpp:286 -#, fuzzy -msgid "Save ID" -msgstr "ID камеры" - -#: src/properties.cpp:286 -msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." -msgstr "" - -#: src/properties.cpp:292 -#, fuzzy -msgid "Job Reference" -msgstr "Эталонный Чёрный/Белый" - -#: src/properties.cpp:292 -msgid "" -"References an external job management file for a job process in which the " -"document is being used. Use of job names is under user control. Typical use " -"would be to identify all documents that are part of a particular job or " -"contract. There are multiple values because there can be more than one job " -"using a particular document at any time, and it can also be useful to keep " -"historical information about what jobs a document was part of previously." -msgstr "" - -#: src/properties.cpp:301 -msgid "Maximum Page Size" -msgstr "МакÑимальный размер Ñтраницы" - -#: src/properties.cpp:301 -msgid "" -"The size of the largest page in the document (including any in contained " -"documents)." -msgstr "" - -#: src/properties.cpp:302 -msgid "Number of Pages" -msgstr "ЧиÑло Ñтраниц" - -#: src/properties.cpp:302 -msgid "" -"The number of pages in the document (including any in contained documents)." -msgstr "" - -#: src/properties.cpp:303 -msgid "Fonts" -msgstr "Шрифты" - -#: src/properties.cpp:303 -msgid "" -"An unordered array of fonts that are used in the document (including any in " -"contained documents)." -msgstr "" - -#: src/properties.cpp:304 -#, fuzzy -msgid "Colorants" -msgstr "Цвет" - -#: src/properties.cpp:304 -msgid "" -"An ordered array of colorants (swatches) that are used in the document " -"(including any in contained documents)." -msgstr "" - -#: src/properties.cpp:305 -#, fuzzy -msgid "Plate Names" -msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" - -#: src/properties.cpp:305 -msgid "" -"An ordered array of plate names that are needed to print the document " -"(including any in contained documents)." -msgstr "" - -#: src/properties.cpp:311 -#, fuzzy -msgid "Project Reference" -msgstr "Эталонный Чёрный/Белый" - -#: src/properties.cpp:311 -msgid "A reference to the project that created this file." -msgstr "" - -#: src/properties.cpp:312 -#, fuzzy -msgid "Video Frame Rate" -msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" - -#: src/properties.cpp:312 -msgid "The video frame rate. One of: 24, NTSC, PAL." -msgstr "" - -#: src/properties.cpp:313 -#, fuzzy -msgid "Video Frame Size" -msgstr "Цветовое проÑтранÑтво" - -#: src/properties.cpp:313 -msgid "The frame size. For example: w:720, h: 480, unit:pixels" -msgstr "" - -#: src/properties.cpp:314 -msgid "Video Pixel Aspect Ratio" -msgstr "" - -#: src/properties.cpp:314 -msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" -msgstr "" - -#: src/properties.cpp:315 -#, fuzzy -msgid "Video Pixel Depth" -msgstr "ПорÑдок заполнениÑ" - -#: src/properties.cpp:315 -msgid "" -"The size in bits of each color component of a pixel. Standard Windows 32-bit " -"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." -msgstr "" - -#: src/properties.cpp:317 -#, fuzzy -msgid "Video Color Space" -msgstr "Цветовое проÑтранÑтво" - -#: src/properties.cpp:317 -msgid "" -"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " -"CCIR-709 (used for HD)." -msgstr "" - -#: src/properties.cpp:319 -#, fuzzy -msgid "Video Alpha Mode" -msgstr "Режим замера" - -#: src/properties.cpp:319 -msgid "The alpha mode. One of: straight, pre-multiplied." -msgstr "" - -#: src/properties.cpp:320 -msgid "Video Alpha Premultiple Color" -msgstr "" - -#: src/properties.cpp:320 -msgid "" -"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " -"is pre-multiplied." -msgstr "" - -#: src/properties.cpp:322 -msgid "Video Alpha Unity Is Transparent" -msgstr "" - -#: src/properties.cpp:322 -msgid "When true, unity is clear, when false, it is opaque." -msgstr "" - -#: src/properties.cpp:323 -#, fuzzy -msgid "Video Compressor" -msgstr "Сжатие" - -#: src/properties.cpp:323 -msgid "Video compression used. For example, jpeg." -msgstr "" - -#: src/properties.cpp:324 -#, fuzzy -msgid "Video Field Order" -msgstr "ПорÑдок заполнениÑ" - -#: src/properties.cpp:324 -msgid "The field order for video. One of: Upper, Lower, Progressive." -msgstr "" - -#: src/properties.cpp:325 -#, fuzzy -msgid "Pull Down" -msgstr "вкл" - -#: src/properties.cpp:325 -msgid "" -"The sampling phase of film to be converted to video (pull-down). One of: " -"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " -"WWWSS_24p, WWSSW_24p." -msgstr "" - -#: src/properties.cpp:327 -#, fuzzy -msgid "Audio Sample Rate" -msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" - -#: src/properties.cpp:327 -msgid "" -"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." -msgstr "" - -#: src/properties.cpp:328 -#, fuzzy -msgid "Audio Sample Type" -msgstr "Тип звуковых данных" - -#: src/properties.cpp:328 -msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." -msgstr "" - -#: src/properties.cpp:329 -#, fuzzy -msgid "Audio Channel Type" -msgstr "Тип звуковых данных" - -#: src/properties.cpp:329 -msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." -msgstr "" - -#: src/properties.cpp:330 -#, fuzzy -msgid "Audio Compressor" -msgstr "Сжатие" - -#: src/properties.cpp:330 -msgid "The audio compression used. For example, MP3." -msgstr "" - -#: src/properties.cpp:331 -msgid "Speaker Placement" -msgstr "" - -#: src/properties.cpp:331 -msgid "" -"A description of the speaker angles from center front in degrees. For " -"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " -"-110, Right Surround = 110\"" -msgstr "" - -#: src/properties.cpp:333 -#, fuzzy -msgid "File Data Rate" -msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" - -#: src/properties.cpp:333 -msgid "" -"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" -"sec" -msgstr "" - -#: src/properties.cpp:334 -#, fuzzy -msgid "Tape Name" -msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" - -#: src/properties.cpp:334 -msgid "" -"The name of the tape from which the clip was captured, as set during the " -"capture process." -msgstr "" - -#: src/properties.cpp:335 -#, fuzzy -msgid "Alternative Tape Name" -msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" - -#: src/properties.cpp:335 -msgid "" -"An alternative tape name, set via the project window or timecode dialog in " -"Premiere. If an alternative name has been set and has not been reverted, " -"that name is displayed." -msgstr "" - -#: src/properties.cpp:337 -#, fuzzy -msgid "Start Time Code" -msgstr "Режим вÑпышки" - -#: src/properties.cpp:337 -msgid "" -"The timecode of the first frame of video in the file, as obtained from the " -"device control." -msgstr "" - -#: src/properties.cpp:338 -#, fuzzy -msgid "Alternative Time code" -msgstr "Режим вÑпышки" - -#: src/properties.cpp:338 -msgid "" -"A timecode set by the user. When specified, it is used instead of the " -"startTimecode." -msgstr "" - -#: src/properties.cpp:339 -msgid "Duration" -msgstr "ДлительноÑÑ‚ÑŒ" - -#: src/properties.cpp:339 -#, fuzzy -msgid "The duration of the media file." -msgstr "Вид иÑточника Ñвета" - -#: src/properties.cpp:340 -#, fuzzy -msgid "Scene" -msgstr "Тип Ñцены" - -#: src/properties.cpp:340 -#, fuzzy -msgid "The name of the scene." -msgstr "Вид иÑточника Ñвета" - -#: src/properties.cpp:341 -#, fuzzy -msgid "Shot Name" -msgstr "Ðазвание Ñтраны" - -#: src/properties.cpp:341 -#, fuzzy -msgid "The name of the shot or take." -msgstr "Вид иÑточника Ñвета" - -#: src/properties.cpp:342 -#, fuzzy -msgid "Shot Date" -msgstr "Программное обеÑпечение" - -#: src/properties.cpp:342 -#, fuzzy -msgid "The date and time when the video was shot." -msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" - -#: src/properties.cpp:343 -#, fuzzy -msgid "Shot Location" -msgstr "МеÑтоположение объекта Ñъёмки" - -#: src/properties.cpp:343 -msgid "" -"The name of the location where the video was shot. For example: " -"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " -"GPS values." -msgstr "" - -#: src/properties.cpp:345 -#, fuzzy -msgid "Log Comment" -msgstr "Комментарий (Windows)" - -#: src/properties.cpp:345 -#, fuzzy -msgid "User's log comments." -msgstr "ПользовательÑкий комментарий" - -#: src/properties.cpp:346 -#, fuzzy -msgid "Markers" -msgstr "РучнаÑ" - -#: src/properties.cpp:346 -msgid "An ordered list of markers" -msgstr "" - -#: src/properties.cpp:347 -#, fuzzy -msgid "Contributed Media" -msgstr "КонтраÑÑ‚" - -#: src/properties.cpp:347 -msgid "An unordered list of all media used to create this media." -msgstr "" - -#: src/properties.cpp:348 -msgid "Absolute Peak Audio File Path" -msgstr "" - -#: src/properties.cpp:348 -msgid "" -"The absolute path to the file's peak audio file. If empty, no peak file " -"exists." -msgstr "" - -#: src/properties.cpp:349 -msgid "Relative Peak Audio File Path" -msgstr "" - -#: src/properties.cpp:349 -msgid "" -"The relative path to the file's peak audio file. If empty, no peak file " -"exists." -msgstr "" - -#: src/properties.cpp:350 -#, fuzzy -msgid "Video Modified Date" -msgstr "ПорÑдок заполнениÑ" - -#: src/properties.cpp:350 -#, fuzzy -msgid "The date and time when the video was last modified." -msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" - -#: src/properties.cpp:351 -#, fuzzy -msgid "Audio Modified Date" -msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" - -#: src/properties.cpp:351 -#, fuzzy -msgid "The date and time when the audio was last modified." -msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" - -#: src/properties.cpp:352 -#, fuzzy -msgid "Metadata Modified Date" -msgstr "ПорÑдок заполнениÑ" - -#: src/properties.cpp:352 -#, fuzzy -msgid "The date and time when the metadata was last modified." -msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" - -#: src/properties.cpp:353 src/properties.cpp:521 src/tags.cpp:549 -msgid "Artist" -msgstr "ИÑполнитель" - -#: src/properties.cpp:353 -#, fuzzy -msgid "The name of the artist or artists." -msgstr "Вид иÑточника Ñвета" - -#: src/properties.cpp:354 -msgid "Album" -msgstr "Ðльбом" - -#: src/properties.cpp:354 -#, fuzzy -msgid "The name of the album." -msgstr "Вид иÑточника Ñвета" - -#: src/properties.cpp:355 -msgid "Track Number" -msgstr "Ðомер дорожки" - -#: src/properties.cpp:355 -msgid "" -"A numeric value indicating the order of the audio file within its original " -"recording." -msgstr "" - -#: src/properties.cpp:356 -msgid "Genre" -msgstr "Жанр" - -#: src/properties.cpp:356 -#, fuzzy -msgid "The name of the genre." -msgstr "Вид иÑточника Ñвета" - -#: src/properties.cpp:357 -msgid "The copyright information." -msgstr "Данные об авторÑких правах" - -#: src/properties.cpp:358 -#, fuzzy -msgid "The date the title was released." -msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" - -#: src/properties.cpp:359 -msgid "Composer" -msgstr "Композитор" - -#: src/properties.cpp:359 -msgid "The composer's name." -msgstr "" - -#: src/properties.cpp:360 -msgid "Engineer" -msgstr "Звукооператор" - -#: src/properties.cpp:360 -msgid "The engineer's name." -msgstr "" - -#: src/properties.cpp:361 -msgid "Tempo" -msgstr "" - -#: src/properties.cpp:361 -msgid "The audio's tempo." -msgstr "" - -#: src/properties.cpp:362 -msgid "Instrument" -msgstr "ИнÑтрумент" - -#: src/properties.cpp:362 -msgid "The musical instrument." -msgstr "" - -#: src/properties.cpp:363 -msgid "Intro Time" -msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð²ÑтуплениÑ" - -#: src/properties.cpp:363 -msgid "The duration of lead time for queuing music." -msgstr "" - -#: src/properties.cpp:364 -msgid "Out Cue" -msgstr "" - -#: src/properties.cpp:364 -msgid "The time at which to fade out." -msgstr "" - -#: src/properties.cpp:365 -#, fuzzy -msgid "Relative Timestamp" -msgstr "обновлÑетÑÑ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ° времени" - -#: src/properties.cpp:365 -msgid "The start time of the media inside the audio project." -msgstr "" - -#: src/properties.cpp:366 -#, fuzzy -msgid "Loop" -msgstr "Лондон" - -#: src/properties.cpp:366 -msgid "When true, the clip can be looped seemlessly." -msgstr "" - -#: src/properties.cpp:367 -#, fuzzy -msgid "Number Of Beats" -msgstr "ЧиÑло F" - -#: src/properties.cpp:367 -#, fuzzy -msgid "The number of beats." -msgstr "ЧиÑло F" - -#: src/properties.cpp:368 -#, fuzzy -msgid "Key" -msgstr "Ðизкий ключ" - -#: src/properties.cpp:368 -msgid "" -"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." -msgstr "" - -#: src/properties.cpp:369 -#, fuzzy -msgid "Stretch Mode" -msgstr "Режим коррекции" - -#: src/properties.cpp:369 -msgid "" -"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " -"Splice, Hybrid." -msgstr "" - -#: src/properties.cpp:370 -msgid "Time Scale Parameters" -msgstr "" - -#: src/properties.cpp:370 -msgid "Additional parameters for Time-Scale stretch mode." -msgstr "" - -#: src/properties.cpp:371 -msgid "Resample Parameters" -msgstr "" - -#: src/properties.cpp:371 -msgid "Additional parameters for Resample stretch mode." -msgstr "" - -#: src/properties.cpp:372 -msgid "Beat Splice Parameters" -msgstr "" - -#: src/properties.cpp:372 -msgid "Additional parameters for Beat Splice stretch mode." -msgstr "" - -#: src/properties.cpp:373 -#, fuzzy -msgid "Time Signature" -msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸" - -#: src/properties.cpp:373 -msgid "" -"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " -"12/8, other." -msgstr "" - -#: src/properties.cpp:374 -#, fuzzy -msgid "Scale Type" -msgstr "Тип изображениÑ" - -#: src/properties.cpp:374 -msgid "" -"The musical scale used in the music. One of: Major, Minor, Both, Neither. " -"Neither is most often used for instruments with no associated scale, such as " -"drums." -msgstr "" - -#: src/properties.cpp:381 src/tags.cpp:1071 -#, fuzzy -msgid "Camera Serial Number" -msgstr "Серийный номер камеры" - -#: src/properties.cpp:381 -#, fuzzy -msgid "Camera Serial Number." -msgstr "Серийный номер камеры" - -#: src/properties.cpp:382 -#, fuzzy -msgid "Date Acquired" -msgstr "Дата ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Ñъёмки" - -#: src/properties.cpp:382 -#, fuzzy -msgid "Date Acquired." -msgstr "Дата ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Ñъёмки" - -#: src/properties.cpp:383 -#, fuzzy -msgid "Flash Manufacturer" -msgstr "Производитель" - -#: src/properties.cpp:383 -#, fuzzy -msgid "Flash Manufacturer." -msgstr "Производитель" - -#: src/properties.cpp:384 -#, fuzzy -msgid "Flash Model." -msgstr "Режим вÑпышки" - -#: src/properties.cpp:385 -#, fuzzy -msgid "Last Keyword IPTC" -msgstr "Ключевые Ñлова" - -#: src/properties.cpp:385 -#, fuzzy -msgid "Last Keyword IPTC." -msgstr "Ключевые Ñлова" - -#: src/properties.cpp:386 -#, fuzzy -msgid "Last Keyword XMP" -msgstr "Ключевые Ñлова" - -#: src/properties.cpp:386 -#, fuzzy -msgid "Last Keyword XMP." -msgstr "Ключевые Ñлова" - -#: src/properties.cpp:387 -#, fuzzy -msgid "Lens Manufacturer" -msgstr "Производитель" - -#: src/properties.cpp:387 -#, fuzzy -msgid "Lens Manufacturer." -msgstr "Производитель" - -#: src/properties.cpp:388 -#, fuzzy -msgid "Lens Model." -msgstr "Тип Ñцены" - -#: src/properties.cpp:389 -#, fuzzy -msgid "Rating Percent" -msgstr "ÐŸÑ€Ð¾Ñ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð¾Ñ†ÐµÐ½ÐºÐ° в Windows" - -#: src/properties.cpp:389 -#, fuzzy -msgid "Rating Percent." -msgstr "ÐŸÑ€Ð¾Ñ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð¾Ñ†ÐµÐ½ÐºÐ° в Windows" - -#: src/properties.cpp:395 -msgid "Keywords." -msgstr "Ключевые Ñлова" - -#: src/properties.cpp:396 -msgid "PDF Version" -msgstr "ВерÑÐ¸Ñ PDF" - -#: src/properties.cpp:396 -msgid "The PDF file version (for example: 1.0, 1.3, and so on)." -msgstr "" - -#: src/properties.cpp:397 -msgid "Producer" -msgstr "" - -#: src/properties.cpp:397 -msgid "The name of the tool that created the PDF document." -msgstr "" - -#: src/properties.cpp:403 -#, fuzzy -msgid "Authors Position" -msgstr "Позиционирование YCbCr" - -#: src/properties.cpp:403 -msgid "By-line title." -msgstr "" - -#: src/properties.cpp:404 -#, fuzzy -msgid "Caption Writer" -msgstr "ПодпиÑÑŒ" - -#: src/properties.cpp:404 -msgid "Writer/editor." -msgstr "Ðвтор/редактор." - -#: src/properties.cpp:405 -msgid "Category. Limited to 3 7-bit ASCII characters." -msgstr "" - -#: src/properties.cpp:406 -msgid "City." -msgstr "Город." - -#: src/properties.cpp:407 -msgid "Country/primary location." -msgstr "" - -#: src/properties.cpp:408 -#, fuzzy -msgid "Credit." -msgstr "Город." - -#: src/properties.cpp:409 -msgid "" -"The date the intellectual content of the document was created (rather than " -"the creation date of the physical representation), following IIM " -"conventions. For example, a photo taken during the American Civil War would " -"have a creation date during that epoch (1861-1865) rather than the date the " -"photo was digitized for archiving." -msgstr "" - -#: src/properties.cpp:413 -#, fuzzy -msgid "Headline." -msgstr "Заголовок" - -#: src/properties.cpp:414 -msgid "Special instructions." -msgstr "ОÑобые инÑтрукции." - -#: src/properties.cpp:415 -msgid "Source." -msgstr "ИÑточник." - -#: src/properties.cpp:416 -#, fuzzy -msgid "State" -msgstr "Программное обеÑпечение" - -#: src/properties.cpp:416 -msgid "Province/state." -msgstr "" - -#: src/properties.cpp:417 -#, fuzzy -msgid "Supplemental category." -msgstr "Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ" - -#: src/properties.cpp:418 -msgid "Original transmission reference." -msgstr "" - -#: src/properties.cpp:419 -msgid "Urgency. Valid range is 1-8." -msgstr "" - -#: src/properties.cpp:427 -msgid "inches" -msgstr "дюймов" - -#: src/properties.cpp:428 src/tags.cpp:242 -msgid "cm" -msgstr "cm" - -#: src/properties.cpp:432 -msgid "Auto Brightness" -msgstr "ÐвтоматичеÑÐºÐ°Ñ ÑркоÑÑ‚ÑŒ" - -#: src/properties.cpp:432 -msgid "When true, \"Brightness\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:433 -msgid "Auto Contrast" -msgstr "ÐвтоматичеÑкий контраÑÑ‚" - -#: src/properties.cpp:433 -msgid "When true, \"Contrast\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:434 -msgid "Auto Exposure" -msgstr "ÐвтоматичеÑÐºÐ°Ñ ÑкÑпозициÑ" - -#: src/properties.cpp:434 -msgid "When true, \"Exposure\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:435 -#, fuzzy -msgid "Auto Shadows" -msgstr "Тень" - -#: src/properties.cpp:435 -msgid "When true,\"Shadows\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:436 -#, fuzzy -msgid "Blue Hue" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/properties.cpp:436 -#, fuzzy -msgid "\"Blue Hue\" setting. Range -100 to 100." -msgstr "ÐаÑтройка контраÑта" - -#: src/properties.cpp:437 -#, fuzzy -msgid "Blue Saturation" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/properties.cpp:437 -#, fuzzy -msgid "\"Blue Saturation\" setting. Range -100 to +100." -msgstr "ÐаÑтройка контраÑта" - -#: src/properties.cpp:438 -#, fuzzy -msgid "\"Brightness\" setting. Range 0 to +150." -msgstr "ÐаÑтройка резкоÑти" - -#: src/properties.cpp:439 -msgid "Camera Profile" -msgstr "Профиль камеры" - -#: src/properties.cpp:439 -#, fuzzy -msgid "\"Camera Profile\" setting." -msgstr "ÐаÑтройки камеры" - -#: src/properties.cpp:440 -#, fuzzy -msgid "Chromatic Aberration Blue" -msgstr "ÐаÑтройка контраÑта" - -#: src/properties.cpp:440 -#, fuzzy -msgid "" -"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." -msgstr "ÐаÑтройка контраÑта" - -#: src/properties.cpp:441 -#, fuzzy -msgid "Chromatic Aberration Red" -msgstr "ÐаÑтройка контраÑта" - -#: src/properties.cpp:441 -#, fuzzy -msgid "" -"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." -msgstr "ÐаÑтройка контраÑта" - -#: src/properties.cpp:442 -msgid "Color Noise Reduction" -msgstr "Подавление цветного шума" - -#: src/properties.cpp:442 -#, fuzzy -msgid "\"Color Noise Reducton\" setting. Range 0 to +100." -msgstr "ÐаÑтройка контраÑта" - -#: src/properties.cpp:443 -#, fuzzy -msgid "\"Contrast\" setting. Range -50 to +100." -msgstr "ÐаÑтройка контраÑта" - -#: src/properties.cpp:444 -msgid "When \"Has Crop\" is true, top of crop rectangle" -msgstr "" - -#: src/properties.cpp:445 -msgid "When \"Has Crop\" is true, left of crop rectangle." -msgstr "" - -#: src/properties.cpp:446 -#, fuzzy -msgid "Crop Bottom" -msgstr "Ñнизу вверх" - -#: src/properties.cpp:446 -msgid "When \"Has Crop\" is true, bottom of crop rectangle." -msgstr "" - -#: src/properties.cpp:447 -#, fuzzy -msgid "Crop Right" -msgstr "ÐвторÑкие права" - -#: src/properties.cpp:447 -msgid "When \"Has Crop\" is true, right of crop rectangle." -msgstr "" - -#: src/properties.cpp:448 -#, fuzzy -msgid "Crop Angle" -msgstr "Ñправа налево" - -#: src/properties.cpp:448 -msgid "When \"Has Crop\" is true, angle of crop rectangle." -msgstr "" - -#: src/properties.cpp:449 -msgid "Width of resulting cropped image in CropUnits units." -msgstr "" - -#: src/properties.cpp:450 -msgid "Height of resulting cropped image in CropUnits units." -msgstr "" - -#: src/properties.cpp:451 -#, fuzzy -msgid "Crop Units" -msgstr "ÐвторÑкие права" - -#: src/properties.cpp:451 -msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" -msgstr "" - -#: src/properties.cpp:452 -#, fuzzy -msgid "\"Exposure\" setting. Range -4.0 to +4.0." -msgstr "ÐаÑтройка резкоÑти" - -#: src/properties.cpp:453 -#, fuzzy -msgid "GreenHue" -msgstr "Режим замера" - -#: src/properties.cpp:453 -#, fuzzy -msgid "\"Green Hue\" setting. Range -100 to +100." -msgstr "ÐаÑтройка контраÑта" - -#: src/properties.cpp:454 -#, fuzzy -msgid "Green Saturation" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/properties.cpp:454 -#, fuzzy -msgid "\"Green Saturation\" setting. Range -100 to +100." -msgstr "ÐаÑтройка контраÑта" - -#: src/properties.cpp:455 -#, fuzzy -msgid "Has Crop" -msgstr "Режим вÑпышки" - -#: src/properties.cpp:455 -msgid "When true, image has a cropping rectangle." -msgstr "" - -#: src/properties.cpp:456 -#, fuzzy -msgid "Has Settings" -msgstr "ÐаÑтройка резкоÑти" - -#: src/properties.cpp:456 -msgid "When true, non-default camera raw settings." -msgstr "" - -#: src/properties.cpp:457 -msgid "Luminance Smoothing" -msgstr "" - -#: src/properties.cpp:457 -#, fuzzy -msgid "\"Luminance Smoothing\" setting. Range 0 to +100." -msgstr "ÐаÑтройка контраÑта" - -#: src/properties.cpp:458 -#, fuzzy -msgid "Raw File Name" -msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" - -#: src/properties.cpp:458 -msgid "File name of raw file (not a complete path)." -msgstr "" - -#: src/properties.cpp:459 -#, fuzzy -msgid "Red Hue" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/properties.cpp:459 -#, fuzzy -msgid "\"Red Hue\" setting. Range -100 to +100." -msgstr "ÐаÑтройка контраÑта" - -#: src/properties.cpp:460 -#, fuzzy -msgid "Red Saturation" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/properties.cpp:460 -#, fuzzy -msgid "\"Red Saturation\" setting. Range -100 to +100." -msgstr "ÐаÑтройка контраÑта" - -#: src/properties.cpp:461 -#, fuzzy -msgid "\"Saturation\" setting. Range -100 to +100." -msgstr "ÐаÑтройка контраÑта" - -#: src/properties.cpp:462 -#, fuzzy -msgid "Shadows" -msgstr "Тень" - -#: src/properties.cpp:462 -#, fuzzy -msgid "\"Shadows\" setting. Range 0 to +100." -msgstr "ÐаÑтройка резкоÑти" - -#: src/properties.cpp:463 -#, fuzzy -msgid "Shadow Tint" -msgstr "Тень" - -#: src/properties.cpp:463 -#, fuzzy -msgid "\"Shadow Tint\" setting. Range -100 to +100." -msgstr "ÐаÑтройка контраÑта" - -#: src/properties.cpp:464 -#, fuzzy -msgid "\"Sharpness\" setting. Range 0 to +100." -msgstr "ÐаÑтройка резкоÑти" - -#: src/properties.cpp:465 -#, fuzzy -msgid "\"Temperature\" setting. Range 2000 to 50000." -msgstr "ÐаÑтройка контраÑта" - -#: src/properties.cpp:466 -#, fuzzy -msgid "Tint" -msgstr "Файл" - -#: src/properties.cpp:466 -#, fuzzy -msgid "\"Tint\" setting. Range -150 to +150." -msgstr "ÐаÑтройка контраÑта" - -#: src/properties.cpp:467 -msgid "Tone Curve" -msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ñ‚Ð¾Ð½ÐºÐ¾Ñ€Ñ€ÐµÐºÑ†Ð¸Ð¸" - -#: src/properties.cpp:467 -msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." -msgstr "" - -#: src/properties.cpp:468 -#, fuzzy -msgid "Tone Curve Name" -msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ñ‚Ð¾Ð½ÐºÐ¾Ñ€Ñ€ÐµÐºÑ†Ð¸Ð¸" - -#: src/properties.cpp:468 -msgid "" -"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " -"Contrast, Strong Contrast, Custom or a user-defined preset name." -msgstr "" - -#: src/properties.cpp:470 -msgid "Version of Camera Raw plugin." -msgstr "" - -#: src/properties.cpp:471 -#, fuzzy -msgid "Vignette Amount" -msgstr "Пульт Д/У?" - -#: src/properties.cpp:471 -#, fuzzy -msgid "\"Vignetting Amount\" setting. Range -100 to +100." -msgstr "ÐаÑтройка контраÑта" - -#: src/properties.cpp:472 -#, fuzzy -msgid "Vignette Midpoint" -msgstr "Ð‘ÐµÐ»Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ°" - -#: src/properties.cpp:472 -#, fuzzy -msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." -msgstr "ÐаÑтройка контраÑта" - -#: src/properties.cpp:473 -msgid "" -"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " -"Tungsten, Fluorescent, Flash, Custom" -msgstr "" - -#: src/properties.cpp:480 -msgid "TIFF tag 256, 0x100. Image width in pixels." -msgstr "" - -#: src/properties.cpp:481 src/tags.cpp:420 -msgid "Image Length" -msgstr "Длина изображениÑ" - -#: src/properties.cpp:481 -msgid "TIFF tag 257, 0x101. Image height in pixels." -msgstr "" - -#: src/properties.cpp:482 -#, fuzzy -msgid "Bits Per Sample" -msgstr "Битов на ÑÑмпл" - -#: src/properties.cpp:482 -msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." -msgstr "" - -#: src/properties.cpp:483 src/tags.cpp:430 -msgid "Compression" -msgstr "Сжатие" - -#: src/properties.cpp:483 -msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." -msgstr "" - -#: src/properties.cpp:484 src/tags.cpp:436 -msgid "Photometric Interpretation" -msgstr "ФотометричеÑÐºÐ°Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð¿Ñ€ÐµÑ‚Ð°Ñ†Ð¸Ñ" - -#: src/properties.cpp:484 -msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." -msgstr "" - -#: src/properties.cpp:485 -msgid "" -"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " -"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " -"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " -"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " -"0th column at bottom 8 = 0th row at left, 0th column at bottom" -msgstr "" - -#: src/properties.cpp:494 -#, fuzzy -msgid "Samples Per Pixel" -msgstr "СÑмплов на пикÑел" - -#: src/properties.cpp:494 -msgid "TIFF tag 277, 0x115. Number of components per pixel." -msgstr "" - -#: src/properties.cpp:495 src/tags.cpp:510 -msgid "Planar Configuration" -msgstr "ÐŸÐ»Ð°Ð½Ð°Ñ€Ð½Ð°Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ" - -#: src/properties.cpp:495 -msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." -msgstr "" - -#: src/properties.cpp:496 -#, fuzzy -msgid "YCbCr Sub Sampling" -msgstr "СубÑÑмплинг YCbCr" - -#: src/properties.cpp:496 -msgid "" -"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " -"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" -msgstr "" - -#: src/properties.cpp:498 src/tags.cpp:713 -msgid "YCbCr Positioning" -msgstr "Позиционирование YCbCr" - -#: src/properties.cpp:498 -msgid "" -"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " -"centered; 2 = co-sited." -msgstr "" - -#: src/properties.cpp:500 -#, fuzzy -msgid "X Resolution" -msgstr "Разрешение по X" - -#: src/properties.cpp:500 -msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." -msgstr "" - -#: src/properties.cpp:501 -#, fuzzy -msgid "Y Resolution" -msgstr "Разрешение по Y" - -#: src/properties.cpp:501 -msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." -msgstr "" - -#: src/properties.cpp:502 src/tags.cpp:528 -msgid "Resolution Unit" -msgstr "Единица разрешениÑ" - -#: src/properties.cpp:502 -msgid "" -"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " -"of: 2 = inches; 3 = centimeters." -msgstr "" - -#: src/properties.cpp:504 src/tags.cpp:533 -msgid "Transfer Function" -msgstr "Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸" - -#: src/properties.cpp:504 -msgid "" -"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " -"with 3 * 256 entries." -msgstr "" - -#: src/properties.cpp:506 src/tags.cpp:565 -msgid "White Point" -msgstr "Ð‘ÐµÐ»Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ°" - -#: src/properties.cpp:506 -msgid "TIFF tag 318, 0x13E. Chromaticity of white point." -msgstr "" - -#: src/properties.cpp:507 src/tags.cpp:570 -msgid "Primary Chromaticities" -msgstr "" - -#: src/properties.cpp:507 -msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." -msgstr "" - -#: src/properties.cpp:508 -msgid "" -"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." -msgstr "" - -#: src/properties.cpp:509 -#, fuzzy -msgid "Reference Black White" -msgstr "Эталонный Чёрный/Белый" - -#: src/properties.cpp:509 -msgid "TIFF tag 532, 0x214. Reference black and white point values." -msgstr "" - -#: src/properties.cpp:510 src/tags.cpp:545 -msgid "Date and Time" -msgstr "Дата и времÑ" - -#: src/properties.cpp:510 -msgid "" -"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " -"and time of image creation (no time zone in EXIF), stored in ISO 8601 " -"format, not the original EXIF format. This property includes the value for " -"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" -"ModifyDate." -msgstr "" - -#: src/properties.cpp:516 src/tags.cpp:458 -msgid "Image Description" -msgstr "ОпиÑание Ñнимка" - -#: src/properties.cpp:516 -msgid "" -"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " -"in XMP as dc:description." -msgstr "" - -#: src/properties.cpp:517 -#, fuzzy -msgid "Make" -msgstr "РучнаÑ" - -#: src/properties.cpp:517 -msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." -msgstr "" - -#: src/properties.cpp:518 -msgid "TIFF tag 272, 0x110. Model name or number of equipment." -msgstr "" - -#: src/properties.cpp:519 -msgid "" -"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " -"property is stored in XMP as xmp:CreatorTool. " -msgstr "" - -#: src/properties.cpp:521 -msgid "" -"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " -"property is stored in XMP as the first item in the dc:creator array." -msgstr "" - -#: src/properties.cpp:523 -msgid "" -"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " -"in XMP as dc:rights." -msgstr "" - -#: src/properties.cpp:530 src/tags.cpp:1598 -msgid "Exif Version" -msgstr "ВерÑÐ¸Ñ Exif" - -#: src/properties.cpp:530 -msgid "EXIF tag 36864, 0x9000. EXIF version number." -msgstr "" - -#: src/properties.cpp:531 -#, fuzzy -msgid "Flashpix Version" -msgstr "ВерÑÐ¸Ñ FlashPix" - -#: src/properties.cpp:531 -msgid "EXIF tag 40960, 0xA000. Version of FlashPix." -msgstr "" - -#: src/properties.cpp:532 -msgid "EXIF tag 40961, 0xA001. Color space information" -msgstr "" - -#: src/properties.cpp:533 src/tags.cpp:1609 -#, fuzzy -msgid "Components Configuration" -msgstr "ÐŸÐ»Ð°Ð½Ð°Ñ€Ð½Ð°Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ" - -#: src/properties.cpp:533 -msgid "" -"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " -"compressed data), 1 2 3 0 (other cases)." -msgstr "" - -#: src/properties.cpp:535 src/tags.cpp:818 -#, fuzzy -msgid "Compressed Bits Per Pixel" -msgstr "Сжатых битов на пикÑел" - -#: src/properties.cpp:535 -#, fuzzy -msgid "" -"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " -"indicated in unit bits per pixel." -msgstr "" -"Ð¡Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð°Ñ Ð´Ð»Ñ Ñжатых данных информациÑ. ИÑпользованный режим ÑÐ¶Ð°Ñ‚Ð¸Ñ Ð´Ð»Ñ " -"Ñжатого Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ÑÑ Ð² единице Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ \"битов на пикÑел\"" - -#: src/properties.cpp:537 src/tags.cpp:1693 -msgid "Pixel X Dimension" -msgstr "" - -#: src/properties.cpp:537 -msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." -msgstr "" - -#: src/properties.cpp:538 src/tags.cpp:1700 -msgid "Pixel Y Dimension" -msgstr "" - -#: src/properties.cpp:538 -msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." -msgstr "" - -#: src/properties.cpp:539 src/tags.cpp:1667 -msgid "User Comment" -msgstr "ПользовательÑкий комментарий" - -#: src/properties.cpp:539 -msgid "EXIF tag 37510, 0x9286. Comments from user." -msgstr "" - -#: src/properties.cpp:540 src/tags.cpp:1709 -msgid "Related Sound File" -msgstr "СвÑзанный звуковой файл" - -#: src/properties.cpp:540 -msgid "" -"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." -msgstr "" - -#: src/properties.cpp:541 -#, fuzzy -msgid "Date and Time Original" -msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð´Ð°Ñ‚Ð° и времÑ" - -#: src/properties.cpp:541 -msgid "" -"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " -"time when original image was generated, in ISO 8601 format. Includes the " -"EXIF SubSecTimeOriginal data." -msgstr "" - -#: src/properties.cpp:544 -#, fuzzy -msgid "Date and Time Digitized" -msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ Ð¾Ñ†Ð¸Ñ„Ñ€Ð¾Ð²ÐºÐ¸" - -#: src/properties.cpp:544 -msgid "" -"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " -"time when image was stored as digital data, can be the same as " -"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " -"format. Includes the EXIF SubSecTimeDigitized data." -msgstr "" - -#: src/properties.cpp:548 -#, fuzzy -msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." -msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции в Ñекундах" - -#: src/properties.cpp:549 -#, fuzzy -msgid "F Number" -msgstr "ЧиÑло F" - -#: src/properties.cpp:549 -msgid "EXIF tag 33437, 0x829D. F number." -msgstr "" - -#: src/properties.cpp:550 -msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." -msgstr "" - -#: src/properties.cpp:551 src/tags.cpp:800 src/tags.cpp:1552 -msgid "Spectral Sensitivity" -msgstr "Ð¡Ð¿ÐµÐºÑ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡ÑƒÐ²ÑтвительноÑÑ‚ÑŒ" - -#: src/properties.cpp:551 -msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." -msgstr "" - -#: src/properties.cpp:552 -#, fuzzy -msgid "ISOSpeedRatings" -msgstr "ÐаÑтройка резкоÑти" - -#: src/properties.cpp:552 -msgid "" -"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " -"specified in ISO 12232." -msgstr "" - -#: src/properties.cpp:554 src/tags.cpp:807 -msgid "OECF" -msgstr "" - -#: src/properties.cpp:554 -msgid "" -"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " -"ISO 14524." -msgstr "" - -#: src/properties.cpp:555 -msgid "" -"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " -"specification." -msgstr "" - -#: src/properties.cpp:556 -#, fuzzy -msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." -msgstr "РаÑÑтоÑние до объекта в метрах" - -#: src/properties.cpp:557 src/tags.cpp:821 -#, fuzzy -msgid "Brightness Value" -msgstr "ЯркоÑÑ‚ÑŒ" - -#: src/properties.cpp:557 -#, fuzzy -msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." -msgstr "РаÑÑтоÑние до объекта в метрах" - -#: src/properties.cpp:558 -msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." -msgstr "" - -#: src/properties.cpp:559 -#, fuzzy -msgid "Maximum Aperture Value" -msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" - -#: src/properties.cpp:559 -#, fuzzy -msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." -msgstr "РаÑÑтоÑние до объекта в метрах" - -#: src/properties.cpp:560 -#, fuzzy -msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." -msgstr "РаÑÑтоÑние до объекта в метрах" - -#: src/properties.cpp:561 -#, fuzzy -msgid "EXIF tag 37383, 0x9207. Metering mode." -msgstr "РаÑÑтоÑние до объекта в метрах" - -#: src/properties.cpp:562 -#, fuzzy -msgid "EXIF tag 37384, 0x9208. Light source." -msgstr "РаÑÑтоÑние до объекта в метрах" - -#: src/properties.cpp:563 -msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." -msgstr "" - -#: src/properties.cpp:564 -#, fuzzy -msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." -msgstr "РаÑÑтоÑние до объекта в метрах" - -#: src/properties.cpp:565 src/tags.cpp:1659 -msgid "Subject Area" -msgstr "ОблаÑÑ‚ÑŒ объекта Ñъёмки" - -#: src/properties.cpp:565 -#, fuzzy -msgid "" -"EXIF tag 37396, 0x9214. The location and area of the main subject in the " -"overall scene." -msgstr "" -"Это поле хранит информацию о меÑтоположении и облаÑти объекта Ñъёмки во вÑей " -"Ñцене." - -#: src/properties.cpp:566 src/tags.cpp:829 src/tags.cpp:1724 -#, fuzzy -msgid "Flash Energy" -msgstr "ВнешнÑÑ Ð²Ñпышка" - -#: src/properties.cpp:566 -msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." -msgstr "" - -#: src/properties.cpp:567 src/tags.cpp:830 src/tags.cpp:1728 -msgid "Spatial Frequency Response" -msgstr "" - -#: src/properties.cpp:567 -msgid "" -"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " -"as specified in ISO 12233." -msgstr "" - -#: src/properties.cpp:569 src/tags.cpp:832 -#, fuzzy -msgid "Focal Plane X Resolution" -msgstr "Разрешение по X" - -#: src/properties.cpp:569 -msgid "" -"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " -"unit." -msgstr "" - -#: src/properties.cpp:570 src/tags.cpp:833 -#, fuzzy -msgid "Focal Plane Y Resolution" -msgstr "Разрешение по X" - -#: src/properties.cpp:570 -msgid "" -"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " -"unit." -msgstr "" - -#: src/properties.cpp:571 src/tags.cpp:834 src/tags.cpp:1741 -#, fuzzy -msgid "Focal Plane Resolution Unit" -msgstr "Разрешение по X" - -#: src/properties.cpp:571 -msgid "" -"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " -"FocalPlaneYResolution." -msgstr "" - -#: src/properties.cpp:572 src/tags.cpp:838 src/tags.cpp:1745 -msgid "Subject Location" -msgstr "МеÑтоположение объекта Ñъёмки" - -#: src/properties.cpp:572 -msgid "" -"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " -"value is the horizontal pixel and the second value is the vertical pixel at " -"which the main subject appears." -msgstr "" - -#: src/properties.cpp:575 src/tags.cpp:839 -#, fuzzy -msgid "Exposure Index" -msgstr "Режим ÑкÑпозиции" - -#: src/properties.cpp:575 -msgid "EXIF tag 41493, 0xA215. Exposure index of input device." -msgstr "" - -#: src/properties.cpp:576 src/tags.cpp:844 src/tags.cpp:1756 -#, fuzzy -msgid "Sensing Method" -msgstr "Файл переименовываетÑÑ Ð²" - -#: src/properties.cpp:576 -msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." -msgstr "" - -#: src/properties.cpp:577 -#, fuzzy -msgid "EXIF tag 41728, 0xA300. Indicates image source." -msgstr "РаÑÑтоÑние до объекта в метрах" - -#: src/properties.cpp:578 src/tags.cpp:1764 -msgid "Scene Type" -msgstr "Тип Ñцены" - -#: src/properties.cpp:578 -#, fuzzy -msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." -msgstr "РаÑÑтоÑние до объекта в метрах" - -#: src/properties.cpp:579 src/tags.cpp:754 -msgid "CFA Pattern" -msgstr "Паттерн CFA" - -#: src/properties.cpp:579 -msgid "" -"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " -"sense." -msgstr "" - -#: src/properties.cpp:580 src/tags.cpp:1774 -#, fuzzy -msgid "Custom Rendered" -msgstr "Другой процеÑÑ Ð¿Ñ€Ð¾Ñвки" - -#: src/properties.cpp:580 -#, fuzzy -msgid "" -"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " -"data." -msgstr "Этот Ñ‚Ñг отображает режим баланÑа белого при Ñъёмке изображениÑ." - -#: src/properties.cpp:581 -#, fuzzy -msgid "" -"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " -"shot." -msgstr "Этот Ñ‚Ñг отображает режим баланÑа белого при Ñъёмке изображениÑ." - -#: src/properties.cpp:582 -#, fuzzy -msgid "" -"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " -"was shot." -msgstr "Этот Ñ‚Ñг отображает режим баланÑа белого при Ñъёмке изображениÑ." - -#: src/properties.cpp:583 src/tags.cpp:1788 -msgid "Digital Zoom Ratio" -msgstr "КоÑффициент цифрового транÑфокатора" - -#: src/properties.cpp:583 -#, fuzzy -msgid "" -"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " -"shot." -msgstr "Этот Ñ‚Ñг отображает режим баланÑа белого при Ñъёмке изображениÑ." - -#: src/properties.cpp:584 src/tags.cpp:1793 -msgid "Focal Length In 35mm Film" -msgstr "ФокуÑное раÑÑтоÑние в 35мм аналоге" - -#: src/properties.cpp:584 -#, fuzzy -msgid "" -"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " -"35mm film camera, in mm. A value of 0 means the focal length is unknown. " -"Note that this tag differs from the FocalLength tag." -msgstr "" -"Этот Ñ‚Ñг отображает фокуÑное раÑÑтоÑние в 35мм плёночном Ñквиваленте, " -"измерÑемом миллиметрами. ЕÑли значение равно 0, то фокуÑное раÑÑтоÑние " -"неизвеÑтно. Обратите внимание на то, что Ñтот Ñ‚Ñг отличетÑÑ Ð¾Ñ‚ ." - -#: src/properties.cpp:587 src/tags.cpp:1799 -#, fuzzy -msgid "Scene Capture Type" -msgstr "Тип Ñцены" - -#: src/properties.cpp:587 -#, fuzzy -msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." -msgstr "Этот Ñ‚Ñг отображает режим баланÑа белого при Ñъёмке изображениÑ." - -#: src/properties.cpp:588 src/tags.cpp:1804 -#, fuzzy -msgid "Gain Control" -msgstr "Пульт Д/У?" - -#: src/properties.cpp:588 -#, fuzzy -msgid "" -"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " -"adjustment." -msgstr "Этот Ñ‚Ñг отображает режим баланÑа белого при Ñъёмке изображениÑ." - -#: src/properties.cpp:589 -#, fuzzy -msgid "" -"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " -"applied by the camera." -msgstr "" -"Этот Ñ‚Ñг отображает направление обработки контраÑта при Ñъёмке изображениÑ" - -#: src/properties.cpp:590 -#, fuzzy -msgid "" -"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " -"applied by the camera." -msgstr "" -"Этот Ñ‚Ñг отображает направление обработки наÑыщенноÑти при Ñъёмке изображениÑ" - -#: src/properties.cpp:591 -#, fuzzy -msgid "" -"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " -"applied by the camera." -msgstr "" -"Этот Ñ‚Ñг отображает направление обработки резкоÑти при Ñъёмке изображениÑ" - -#: src/properties.cpp:592 src/tags.cpp:1819 -#, fuzzy -msgid "Device Setting Description" -msgstr "ÐаÑтройки камеры" - -#: src/properties.cpp:592 -#, fuzzy -msgid "" -"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " -"conditions of a particular camera model." -msgstr "" -"Этот Ñ‚Ñг отображает направление обработки резкоÑти при Ñъёмке изображениÑ" - -#: src/properties.cpp:593 src/tags.cpp:1824 -#, fuzzy -msgid "Subject Distance Range" -msgstr "РаÑÑтоÑние до объекта" - -#: src/properties.cpp:593 -#, fuzzy -msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." -msgstr "РаÑÑтоÑние до объекта в метрах" - -#: src/properties.cpp:594 src/tags.cpp:1827 -msgid "Image Unique ID" -msgstr "Уникальный ID изображениÑ" - -#: src/properties.cpp:594 -msgid "" -"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " -"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " -"and 128-bit fixed length." -msgstr "" - -#: src/properties.cpp:596 src/tags.cpp:1927 -msgid "GPS Version ID" -msgstr "ID верÑии GPS" - -#: src/properties.cpp:596 -msgid "" -"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " -"period separators. The current value is \"2.0.0.0\"." -msgstr "" - -#: src/properties.cpp:598 src/tags.cpp:1938 -msgid "GPS Latitude" -msgstr "Широта по GPS" - -#: src/properties.cpp:598 -msgid "" -"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." -msgstr "" - -#: src/properties.cpp:599 src/tags.cpp:1950 -msgid "GPS Longitude" -msgstr "Долгота по GPS" - -#: src/properties.cpp:599 -msgid "" -"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." -msgstr "" - -#: src/properties.cpp:600 src/tags.cpp:1958 -#, fuzzy -msgid "GPS Altitude Reference" -msgstr "Ð’Ñ‹Ñота по GPS" - -#: src/properties.cpp:600 -#, fuzzy -msgid "" -"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." -msgstr "РаÑÑтоÑние до объекта в метрах" - -#: src/properties.cpp:601 src/tags.cpp:1966 -msgid "GPS Altitude" -msgstr "Ð’Ñ‹Ñота по GPS" - -#: src/properties.cpp:601 -#, fuzzy -msgid "GPS tag 6, 0x06. Indicates altitude in meters." -msgstr "РаÑÑтоÑние до объекта в метрах" - -#: src/properties.cpp:602 src/tags.cpp:1970 -msgid "GPS Time Stamp" -msgstr "Отметка времени по GPS" - -#: src/properties.cpp:602 -msgid "" -"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " -"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " -"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " -"present, the date component for the XMP should be taken from exif:" -"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " -"no date is available, do not write exif:GPSTimeStamp to XMP." -msgstr "" - -#: src/properties.cpp:608 src/tags.cpp:1975 -#, fuzzy -msgid "GPS Satellites" -msgstr "Широта по GPS" - -#: src/properties.cpp:608 -msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." -msgstr "" - -#: src/properties.cpp:609 src/tags.cpp:1982 -msgid "GPS Status" -msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð¸Ñ‘Ð¼Ð½Ð¸ÐºÐ° GPS" - -#: src/properties.cpp:609 -#, fuzzy -msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." -msgstr "СкороÑÑ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ñ‘Ð¼Ð½Ð¸ÐºÐ° GPS" - -#: src/properties.cpp:610 src/tags.cpp:1987 -msgid "GPS Measure Mode" -msgstr "Режим захвата данных GPS" - -#: src/properties.cpp:610 -#, fuzzy -msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." -msgstr "СкороÑÑ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ñ‘Ð¼Ð½Ð¸ÐºÐ° GPS" - -#: src/properties.cpp:611 -msgid "GPS DOP" -msgstr "" - -#: src/properties.cpp:611 -#, fuzzy -msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." -msgstr "ВерÑÐ¸Ñ Ñ‚Ñга GPS" - -#: src/properties.cpp:612 src/tags.cpp:1995 -#, fuzzy -msgid "GPS Speed Reference" -msgstr "Эталонный Чёрный/Белый" - -#: src/properties.cpp:612 -#, fuzzy -msgid "GPS tag 12, 0x0C. Units used to speed measurement." -msgstr "СкороÑÑ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ñ‘Ð¼Ð½Ð¸ÐºÐ° GPS" - -#: src/properties.cpp:613 src/tags.cpp:1999 -msgid "GPS Speed" -msgstr "СкороÑÑ‚ÑŒ по GPS" - -#: src/properties.cpp:613 -#, fuzzy -msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." -msgstr "СкороÑÑ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ñ‘Ð¼Ð½Ð¸ÐºÐ° GPS" - -#: src/properties.cpp:614 -#, fuzzy -msgid "GPS Track Reference" -msgstr "Эталонный Чёрный/Белый" - -#: src/properties.cpp:614 -#, fuzzy -msgid "GPS tag 14, 0x0E. Reference for movement direction." -msgstr "РаÑÑтоÑние до объекта в метрах" - -#: src/properties.cpp:615 src/tags.cpp:2006 -#, fuzzy -msgid "GPS Track" -msgstr "Эталонный Чёрный/Белый" - -#: src/properties.cpp:615 -msgid "" -"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." -msgstr "" - -#: src/properties.cpp:616 src/tags.cpp:2010 -#, fuzzy -msgid "GPS Image Direction Reference" -msgstr "Ðаправление Ñнимка GPS" - -#: src/properties.cpp:616 -#, fuzzy -msgid "GPS tag 16, 0x10. Reference for image direction." -msgstr "РаÑÑтоÑние до объекта в метрах" - -#: src/properties.cpp:617 src/tags.cpp:2014 -msgid "GPS Image Direction" -msgstr "Ðаправление Ñнимка GPS" - -#: src/properties.cpp:617 -msgid "" -"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " -"359.99." -msgstr "" - -#: src/properties.cpp:618 src/tags.cpp:2018 -#, fuzzy -msgid "GPS Map Datum" -msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð¸Ñ‘Ð¼Ð½Ð¸ÐºÐ° GPS" - -#: src/properties.cpp:618 -#, fuzzy -msgid "GPS tag 18, 0x12. Geodetic survey data." -msgstr "ВерÑÐ¸Ñ Ñ‚Ñга GPS" - -#: src/properties.cpp:619 src/tags.cpp:2026 -#, fuzzy -msgid "GPS Destination Latitude" -msgstr "РаÑÑтоÑние до объекта" - -#: src/properties.cpp:619 -msgid "" -"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " -"destination latitude." -msgstr "" - -#: src/properties.cpp:620 src/tags.cpp:2038 -#, fuzzy -msgid "GPS Destination Longitude" -msgstr "РаÑÑтоÑние до объекта" - -#: src/properties.cpp:620 -msgid "" -"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " -"longitude." -msgstr "" - -#: src/properties.cpp:621 src/tags.cpp:2045 -#, fuzzy -msgid "GPS Destination Bearing Reference" -msgstr "РаÑÑтоÑние до объекта" - -#: src/properties.cpp:621 -#, fuzzy -msgid "GPS tag 23, 0x17. Reference for movement direction." -msgstr "РаÑÑтоÑние до объекта в метрах" - -#: src/properties.cpp:622 src/tags.cpp:2049 -#, fuzzy -msgid "GPS Destination Bearing" -msgstr "РаÑÑтоÑние до объекта" - -#: src/properties.cpp:622 -msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." -msgstr "" - -#: src/properties.cpp:623 -#, fuzzy -msgid "GPS Destination Distance Refefrence" -msgstr "РаÑÑтоÑние до объекта" - -#: src/properties.cpp:623 -#, fuzzy -msgid "GPS tag 25, 0x19. Units used for speed measurement." -msgstr "РаÑÑтоÑние до объекта в метрах" - -#: src/properties.cpp:624 src/tags.cpp:2057 -#, fuzzy -msgid "GPS Destination Distance" -msgstr "РаÑÑтоÑние до объекта" - -#: src/properties.cpp:624 -#, fuzzy -msgid "GPS tag 26, 0x1A. Distance to destination." -msgstr "РаÑÑтоÑние до объекта в метрах" - -#: src/properties.cpp:625 src/tags.cpp:2060 -#, fuzzy -msgid "GPS Processing Method" -msgstr "РезкоÑÑ‚ÑŒ изображениÑ" - -#: src/properties.cpp:625 -msgid "" -"GPS tag 27, 0x1B. A character string recording the name of the method used " -"for location finding." -msgstr "" - -#: src/properties.cpp:626 src/tags.cpp:2065 -#, fuzzy -msgid "GPS Area Information" -msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ GPS" - -#: src/properties.cpp:626 -msgid "" -"GPS tag 28, 0x1C. A character string recording the name of the GPS area." -msgstr "" - -#: src/properties.cpp:627 src/tags.cpp:2073 -msgid "GPS Differential" -msgstr "" - -#: src/properties.cpp:627 -#, fuzzy -msgid "" -"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " -"the GPS receiver." -msgstr "" -"Этот Ñ‚Ñг отображает направление обработки наÑыщенноÑти при Ñъёмке изображениÑ" - -#: src/properties.cpp:633 -msgid "" -"A description of the lens used to take the photograph. For example, \"70-200 " -"mm f/2.8-4.0\"." -msgstr "" -"ОпиÑание объектива, применÑвшегоÑÑ Ð´Ð»Ñ Ñъемки. Ðапример, \"70-200 mm " -"f/2.8-4.0\"." - -#: src/properties.cpp:634 -#, fuzzy -msgid "SerialNumber" -msgstr "Серийный номер" - -#: src/properties.cpp:634 -msgid "" -"The serial number of the camera or camera body used to take the photograph." -msgstr "" -"Серийный номер камеры или задника камеры, иÑпользовавшегоÑÑ Ð´Ð»Ñ Ñъемки." - -#: src/properties.cpp:640 -#, fuzzy -msgid "Contact Info-City" -msgstr "Штат/провинциÑ" - -#: src/properties.cpp:640 -#, fuzzy -msgid "The contact information city part." -msgstr "СпоÑоб фокуÑировки" - -#: src/properties.cpp:641 -#, fuzzy -msgid "Contact Info-Country" -msgstr "Штат/провинциÑ" - -#: src/properties.cpp:641 -#, fuzzy -msgid "The contact information country part." -msgstr "СпоÑоб фокуÑировки" - -#: src/properties.cpp:642 -#, fuzzy -msgid "Contact Info-Address" -msgstr "Штат/провинциÑ" - -#: src/properties.cpp:642 -msgid "" -"The contact information address part. Comprises an optional company name and " -"all required information to locate the building or postbox to which mail " -"should be sent." -msgstr "" - -#: src/properties.cpp:644 -#, fuzzy -msgid "Contact Info-Postal Code" -msgstr "Штат/провинциÑ" - -#: src/properties.cpp:644 -#, fuzzy -msgid "The contact information part denoting the local postal code." -msgstr "СпоÑоб фокуÑировки" - -#: src/properties.cpp:645 -#, fuzzy -msgid "Contact Info-State/Province" -msgstr "Штат/провинциÑ" - -#: src/properties.cpp:645 -msgid "" -"The contact information part denoting regional information like state or " -"province." -msgstr "" - -#: src/properties.cpp:646 -#, fuzzy -msgid "Contact Info-Email" -msgstr "Штат/провинциÑ" - -#: src/properties.cpp:646 -#, fuzzy -msgid "The contact information email address part." -msgstr "СпоÑоб фокуÑировки" - -#: src/properties.cpp:647 -#, fuzzy -msgid "Contact Info-Phone" -msgstr "Штат/провинциÑ" - -#: src/properties.cpp:647 -#, fuzzy -msgid "The contact information phone number part." -msgstr "СпоÑоб фокуÑировки" - -#: src/properties.cpp:648 -msgid "Contact Info-Web URL" -msgstr "" - -#: src/properties.cpp:648 -#, fuzzy -msgid "The contact information web address part." -msgstr "СпоÑоб фокуÑировки" - -#: src/properties.cpp:649 -msgid "" -"Code of the country the content is focussing on -- either the country shown " -"in visual media or referenced in text or audio media. This element is at the " -"top/first level of a top-down geographical hierarchy. The code should be " -"taken from ISO 3166 two or three letter code. The full name of a country " -"should go to the \"Country\" element." -msgstr "" - -#: src/properties.cpp:653 -msgid "Creator's Contact Info" -msgstr "" - -#: src/properties.cpp:653 -msgid "" -"The creator's contact information provides all necessary information to get " -"in contact with the creator of this news object and comprises a set of sub-" -"properties for proper addressing." -msgstr "" - -#: src/properties.cpp:655 -msgid "Intellectual Genre" -msgstr "" - -#: src/properties.cpp:655 -msgid "" -"Describes the nature, intellectual or journalistic characteristic of a news " -"object, not specifically its content." -msgstr "" - -#: src/properties.cpp:657 -msgid "" -"Name of a location the content is focussing on -- either the location shown " -"in visual media or referenced by text or audio media. This location name " -"could either be the name of a sublocation to a city or the name of a well " -"known location or (natural) monument outside a city. In the sense of a " -"sublocation to a city this element is at the fourth level of a top-down " -"geographical hierarchy." -msgstr "" - -#: src/properties.cpp:662 -#, fuzzy -msgid "IPTC Scene" -msgstr "Тип Ñцены" - -#: src/properties.cpp:662 -msgid "" -"Describes the scene of a photo content. Specifies one or more terms from the " -"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " -"in an unordered list." -msgstr "" - -#: src/properties.cpp:664 -#, fuzzy -msgid "IPTC Subject Code" -msgstr "ОблаÑÑ‚ÑŒ объекта Ñъёмки" - -#: src/properties.cpp:664 -msgid "" -"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " -"to categorize the content. Each Subject is represented as a string of 8 " -"digits in an unordered list." -msgstr "" - -#: src/properties.cpp:671 -#, fuzzy -msgid "Additional model info" -msgstr "СпоÑоб фокуÑировки" - -#: src/properties.cpp:671 -msgid "" -"Information about the ethnicity and other facts of the model(s) in a model-" -"released image." -msgstr "" - -#: src/properties.cpp:672 -msgid "Code of featured Organisation" -msgstr "" - -#: src/properties.cpp:672 -msgid "" -"Code from controlled vocabulary for identyfing the organisation or company " -"which is featured in the image." -msgstr "" - -#: src/properties.cpp:673 -msgid "Controlled Vocabulary Term" -msgstr "" - -#: src/properties.cpp:673 -msgid "" -"A term to describe the content of the image by a value from a Controlled " -"Vocabulary." -msgstr "" - -#: src/properties.cpp:674 -#, fuzzy -msgid "Model age" -msgstr "Модель" - -#: src/properties.cpp:674 -msgid "" -"Age of the human model(s) at the time this image was taken in a model " -"released image." -msgstr "" - -#: src/properties.cpp:675 -msgid "Name of featured Organisation" -msgstr "" - -#: src/properties.cpp:675 -msgid "Name of the organisation or company which is featured in the image." -msgstr "" - -#: src/properties.cpp:676 -#, fuzzy -msgid "Person shown" -msgstr "ВерÑии" - -#: src/properties.cpp:676 -msgid "Name of a person shown in the image." -msgstr "" - -#: src/properties.cpp:677 -#, fuzzy -msgid "Digital Image Identifier" -msgstr "Ð¡Ñ‚Ð°Ð±Ð¸Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñнимка" - -#: src/properties.cpp:677 -msgid "" -"Globally unique identifier for this digital image. It is created and applied " -"by the creator of the digital image at the time of its creation. this value " -"shall not be changed after that time." -msgstr "" - -#: src/properties.cpp:678 -msgid "Physical type of original photo" -msgstr "" - -#: src/properties.cpp:678 -#, fuzzy -msgid "The type of the source digital file." -msgstr "Вид иÑточника Ñвета" - -#: src/properties.cpp:679 src/properties.cpp:935 src/properties.cpp:944 -#, fuzzy -msgid "Event" -msgstr "Вечер" - -#: src/properties.cpp:679 -msgid "Names or describes the specific event at which the photo was taken." -msgstr "" - -#: src/properties.cpp:680 -#, fuzzy -msgid "Maximum available height" -msgstr "ЗаполнÑющий Ñвет" - -#: src/properties.cpp:680 -msgid "" -"The maximum available height in pixels of the original photo from which this " -"photo has been derived by downsizing." -msgstr "" - -#: src/properties.cpp:681 -#, fuzzy -msgid "Maximum available width" -msgstr "МакÑимальное фокуÑное раÑÑтоÑние" - -#: src/properties.cpp:681 -msgid "" -"The maximum available width in pixels of the original photo from which this " -"photo has been derived by downsizing." -msgstr "" - -#: src/properties.cpp:682 -msgid "Registry Entry" -msgstr "" - -#: src/properties.cpp:682 -msgid "" -"Both a Registry Item Id and a Registry Organisation Id to record any " -"registration of this digital image with a registry." -msgstr "" - -#: src/properties.cpp:683 -#, fuzzy -msgid "Registry Entry-Item Identifier" -msgstr "Ð¡Ñ‚Ð°Ð±Ð¸Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñнимка" - -#: src/properties.cpp:683 -msgid "" -"A unique identifier created by a registry and applied by the creator of the " -"digital image. This value shall not be changed after being applied. This " -"identifier is linked to a corresponding Registry Organisation Identifier." -msgstr "" - -#: src/properties.cpp:684 -msgid "Registry Entry-Organisation Identifier" -msgstr "" - -#: src/properties.cpp:684 -msgid "" -"An identifier for the registry which issued the corresponding Registry Image " -"Id." -msgstr "" - -#: src/properties.cpp:685 -msgid "IPTC Fields Last Edited" -msgstr "" - -#: src/properties.cpp:685 -#, fuzzy -msgid "" -"The date and optionally time when any of the IPTC photo metadata fields has " -"been last edited." -msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" - -#: src/properties.cpp:686 -#, fuzzy -msgid "Location shown" -msgstr "МеÑтоположение объекта Ñъёмки" - -#: src/properties.cpp:686 -msgid "A location shown in the image." -msgstr "" - -#: src/properties.cpp:687 -#, fuzzy -msgid "Location Created" -msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" - -#: src/properties.cpp:687 -#, fuzzy -msgid "The location the photo was taken." -msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" - -#: src/properties.cpp:688 -#, fuzzy -msgid "Location-City" -msgstr "МеÑтоположение объекта Ñъёмки" - -#: src/properties.cpp:688 -msgid "Name of the city of a location." -msgstr "" - -#: src/properties.cpp:689 -#, fuzzy -msgid "Location-Country ISO-Code" -msgstr "Код Ñтраны" - -#: src/properties.cpp:689 -msgid "The ISO code of a country of a location." -msgstr "" - -#: src/properties.cpp:690 -#, fuzzy -msgid "Location-Country Name" -msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" - -#: src/properties.cpp:690 -msgid "The name of a country of a location." -msgstr "" - -#: src/properties.cpp:691 -#, fuzzy -msgid "Location-Province/State" -msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" - -#: src/properties.cpp:691 -msgid "" -"The name of a subregion of a country - a province or state - of a location." -msgstr "" - -#: src/properties.cpp:692 -#, fuzzy -msgid "Location-Sublocation" -msgstr "МеÑтоположение объекта Ñъёмки" - -#: src/properties.cpp:692 -msgid "" -"Name of a sublocation. This sublocation name could either be the name of a " -"sublocation to a city or the name of a well known location or (natural) " -"monument outside a city." -msgstr "" - -#: src/properties.cpp:693 -#, fuzzy -msgid "Location-World Region" -msgstr "МеÑтоположение объекта Ñъёмки" - -#: src/properties.cpp:693 -msgid "The name of a world region of a location." -msgstr "" - -#: src/properties.cpp:694 -#, fuzzy -msgid "Artwork or object in the image" -msgstr "Уведомление об авторÑких правах" - -#: src/properties.cpp:694 -msgid "A set of metadata about artwork or an object in the image." -msgstr "" - -#: src/properties.cpp:695 -#, fuzzy -msgid "Artwork or object-Copyright notice" -msgstr "Уведомление об авторÑких правах" - -#: src/properties.cpp:695 -msgid "" -"Contains any necessary copyright notice for claiming the intellectual " -"property for artwork or an object in the image and should identify the " -"current owner of the copyright of this work with associated intellectual " -"property rights." -msgstr "" - -#: src/properties.cpp:696 -#, fuzzy -msgid "Artwork or object-Creator" -msgstr "Уведомление об авторÑких правах" - -#: src/properties.cpp:696 -msgid "" -"Contains the name of the artist who has created artwork or an object in the " -"image. In cases where the artist could or should not be identified the name " -"of a company or organisation may be appropriate." -msgstr "" - -#: src/properties.cpp:697 -#, fuzzy -msgid "Artwork or object-Date Created" -msgstr "Уведомление об авторÑких правах" - -#: src/properties.cpp:697 -msgid "" -"Designates the date and optionally the time the artwork or object in the " -"image was created. This relates to artwork or objects with associated " -"intellectual property rights." -msgstr "" - -#: src/properties.cpp:698 -#, fuzzy -msgid "Artwork or object-Source" -msgstr "Уведомление об авторÑких правах" - -#: src/properties.cpp:698 -msgid "" -"The organisation or body holding and registering the artwork or object in " -"the image for inventory purposes." -msgstr "" - -#: src/properties.cpp:699 -#, fuzzy -msgid "Artwork or object-Source inventory number" -msgstr "Уведомление об авторÑких правах" - -#: src/properties.cpp:699 -msgid "" -"The inventory number issued by the organisation or body holding and " -"registering the artwork or object in the image." -msgstr "" - -#: src/properties.cpp:700 -#, fuzzy -msgid "Artwork or object-Title" -msgstr "Уведомление об авторÑких правах" - -#: src/properties.cpp:700 -msgid "A reference for the artwork or object in the image." -msgstr "" - -#: src/properties.cpp:707 -msgid "Scan from film" -msgstr "" - -#: src/properties.cpp:708 -msgid "Scan from transparency (including slide)" -msgstr "" - -#: src/properties.cpp:709 -msgid "Scan from print" -msgstr "" - -#: src/properties.cpp:710 -#, fuzzy -msgid "Camera RAW" -msgstr "ID камеры" - -#: src/properties.cpp:711 -#, fuzzy -msgid "Camera TIFF" -msgstr "ID камеры" - -#: src/properties.cpp:712 -#, fuzzy -msgid "Camera JPEG" -msgstr "ID камеры" - -#: src/properties.cpp:717 -#, fuzzy -msgid "PLUS Version" -msgstr "ВерÑÐ¸Ñ PDF" - -#: src/properties.cpp:717 -msgid "" -"The version number of the PLUS standards in place at the time of the " -"transaction." -msgstr "" - -#: src/properties.cpp:718 -#, fuzzy -msgid "Licensee" -msgstr "Объектив" - -#: src/properties.cpp:718 -msgid "" -"Party or parties to whom the license is granted by the Licensor/s under the " -"license transaction." -msgstr "" - -#: src/properties.cpp:719 -#, fuzzy -msgid "Licensee ID" -msgstr "ID объектива" - -#: src/properties.cpp:719 -msgid "Optional PLUS-ID identifying each Licensee." -msgstr "" - -#: src/properties.cpp:720 -#, fuzzy -msgid "Licensee Name" -msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" - -#: src/properties.cpp:720 -#, fuzzy -msgid "Name of each Licensee." -msgstr "Вид иÑточника Ñвета" - -#: src/properties.cpp:721 -#, fuzzy -msgid "End User" -msgstr "внешнÑÑ" - -#: src/properties.cpp:721 -msgid "Party or parties ultimately making use of the image under the license." -msgstr "" - -#: src/properties.cpp:722 -#, fuzzy -msgid "End User ID" -msgstr "внешнÑÑ" - -#: src/properties.cpp:722 -msgid "Optional PLUS-ID identifying each End User." -msgstr "" - -#: src/properties.cpp:723 -#, fuzzy -msgid "End User Name" -msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" - -#: src/properties.cpp:723 -#, fuzzy -msgid "Name of each End User." -msgstr "Вид иÑточника Ñвета" - -#: src/properties.cpp:724 -#, fuzzy -msgid "Licensor" -msgstr "Объектив" - -#: src/properties.cpp:724 -msgid "Party or parties granting the license to the Licensee." -msgstr "" - -#: src/properties.cpp:725 -#, fuzzy -msgid "Licensor ID" -msgstr "ID объектива" - -#: src/properties.cpp:725 -msgid "Optional PLUS-ID identifying each Licensor." -msgstr "" - -#: src/properties.cpp:726 -#, fuzzy -msgid "Licensor Name" -msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" - -#: src/properties.cpp:726 -#, fuzzy -msgid "Name of each Licensor." -msgstr "Вид иÑточника Ñвета" - -#: src/properties.cpp:727 -#, fuzzy -msgid "Licensor Address" -msgstr "Температура объектива" - -#: src/properties.cpp:727 -#, fuzzy -msgid "Licensor street address." -msgstr "Ðазвание Ñтраны" - -#: src/properties.cpp:728 -msgid "Licensor Address Detail" -msgstr "" - -#: src/properties.cpp:728 -msgid "Additional Licensor mailing address details." -msgstr "" - -#: src/properties.cpp:729 -#, fuzzy -msgid "Licensor City" -msgstr "Мехико" - -#: src/properties.cpp:729 -#, fuzzy -msgid "Licensor City name." -msgstr "Ðазвание Ñтраны" - -#: src/properties.cpp:730 -#, fuzzy -msgid "Licensor State or Province" -msgstr "Штат/провинциÑ" - -#: src/properties.cpp:730 -#, fuzzy -msgid "Licensor State or Province name." -msgstr "Штат/провинциÑ" - -#: src/properties.cpp:731 -#, fuzzy -msgid "Licensor Postal Code" -msgstr "Температура объектива" - -#: src/properties.cpp:731 -#, fuzzy -msgid "Licensor Postal Code or Zip Code." -msgstr "Штат/провинциÑ" - -#: src/properties.cpp:732 -#, fuzzy -msgid "Licensor Country" -msgstr "Страна" - -#: src/properties.cpp:732 -#, fuzzy -msgid "Licensor Country name." -msgstr "Ðазвание Ñтраны" - -#: src/properties.cpp:733 -#, fuzzy -msgid "Licensor Telephone Type 1" -msgstr "Серийный номер камеры" - -#: src/properties.cpp:733 -#, fuzzy -msgid "Licensor Telephone Type 1." -msgstr "Серийный номер камеры" - -#: src/properties.cpp:734 -#, fuzzy -msgid "Licensor Telephone 1" -msgstr "Серийный номер камеры" - -#: src/properties.cpp:734 -#, fuzzy -msgid "Licensor Telephone number 1." -msgstr "Серийный номер камеры" - -#: src/properties.cpp:735 -#, fuzzy -msgid "Licensor Telephone Type 2" -msgstr "Серийный номер камеры" - -#: src/properties.cpp:735 -#, fuzzy -msgid "Licensor Telephone Type 2." -msgstr "Серийный номер камеры" - -#: src/properties.cpp:736 -#, fuzzy -msgid "Licensor Telephone 2" -msgstr "Серийный номер камеры" - -#: src/properties.cpp:736 -#, fuzzy -msgid "Licensor Telephone number 2." -msgstr "Серийный номер камеры" - -#: src/properties.cpp:737 -#, fuzzy -msgid "Licensor Email" -msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" - -#: src/properties.cpp:737 -#, fuzzy -msgid "Licensor Email address." -msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" - -#: src/properties.cpp:738 -#, fuzzy -msgid "Licensor URL" -msgstr "Объектив" - -#: src/properties.cpp:738 -msgid "Licensor world wide web address." -msgstr "" - -#: src/properties.cpp:739 -#, fuzzy -msgid "Licensor Notes" -msgstr "Температура объектива" - -#: src/properties.cpp:739 -msgid "" -"Supplemental information for use in identifying and contacting the Licensor/" -"s." -msgstr "" - -#: src/properties.cpp:740 -#, fuzzy -msgid "PLUS Media Summary Code" -msgstr "Режим захвата данных GPS" - -#: src/properties.cpp:740 -msgid "" -"A PLUS-standardized alphanumeric code string summarizing the media usages " -"included in the license." -msgstr "" - -#: src/properties.cpp:741 -#, fuzzy -msgid "License Start Date" -msgstr "Данные объектива" - -#: src/properties.cpp:741 -#, fuzzy -msgid "The date on which the license takes effect." -msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" - -#: src/properties.cpp:742 -#, fuzzy -msgid "License End Date" -msgstr "Данные объектива" - -#: src/properties.cpp:742 -#, fuzzy -msgid "The date on which the license expires." -msgstr "Вид иÑточника Ñвета" - -#: src/properties.cpp:743 -#, fuzzy -msgid "Media Constraints" -msgstr "КонтраÑÑ‚" - -#: src/properties.cpp:743 -msgid "" -"Constraints limiting the scope of PLUS Media Usage/s included in the license " -"to particular named media or to media not yet specifically defined in the " -"PLUS Media Matrix." -msgstr "" - -#: src/properties.cpp:744 -#, fuzzy -msgid "Region Constraints" -msgstr "КонтраÑÑ‚" - -#: src/properties.cpp:744 -msgid "" -"Constraints limiting the scope of geographic distribution to specific " -"cities, states, provinces or other areas to be included in or excluded from " -"the PLUS Regions specified in the Media Usages specified in the license." -msgstr "" - -#: src/properties.cpp:745 -#, fuzzy -msgid "Product or Service Constraints" -msgstr "ÐвтоматичеÑкий контраÑÑ‚" - -#: src/properties.cpp:745 -msgid "" -"Constraints limiting usage of the image to promotion of/association with a " -"named product or service." -msgstr "" - -#: src/properties.cpp:746 -#, fuzzy -msgid "Image File Constraints" -msgstr "ОпиÑание Ñнимка" - -#: src/properties.cpp:746 -msgid "" -"Constraints on the changing of the image file name, metadata or file type." -msgstr "" - -#: src/properties.cpp:747 -#, fuzzy -msgid "Image Alteration Constraints" -msgstr "ОпиÑание Ñнимка" - -#: src/properties.cpp:747 -msgid "" -"Constraints on alteration of the image by cropping, flipping, retouching, " -"colorization, de-colorization or merging." -msgstr "" - -#: src/properties.cpp:748 -#, fuzzy -msgid "Image Duplication Constraints" -msgstr "ОпиÑание Ñнимка" - -#: src/properties.cpp:748 -msgid "Constraints on the creation of duplicates of the image." -msgstr "" - -#: src/properties.cpp:749 -#, fuzzy -msgid "Model Release Status" -msgstr "Дата пубикации" - -#: src/properties.cpp:749 -msgid "" -"Summarizes the availability and scope of model releases authorizing usage of " -"the likenesses of persons appearing in the photograph." -msgstr "" - -#: src/properties.cpp:750 -#, fuzzy -msgid "Model Release ID" -msgstr "ID модели" - -#: src/properties.cpp:750 -msgid "Optional identifier associated with each Model Release." -msgstr "" - -#: src/properties.cpp:751 -msgid "Minor Model Age Disclosure" -msgstr "" - -#: src/properties.cpp:751 -msgid "" -"Age of the youngest model pictured in the image, at the time that the image " -"was made." -msgstr "" - -#: src/properties.cpp:752 -#, fuzzy -msgid "Property Release Status" -msgstr "Дата пубикации" - -#: src/properties.cpp:752 -msgid "" -"Summarizes the availability and scope of property releases authorizing usage " -"of the properties appearing in the photograph." -msgstr "" - -#: src/properties.cpp:753 -#, fuzzy -msgid "Property Release ID" -msgstr "ID модели" - -#: src/properties.cpp:753 -msgid "Optional identifier associated with each Property Release." -msgstr "" - -#: src/properties.cpp:754 -#, fuzzy -msgid "Other Constraints" -msgstr "ÐвтоматичеÑкий контраÑÑ‚" - -#: src/properties.cpp:754 -msgid "Additional constraints on the license." -msgstr "" - -#: src/properties.cpp:755 -#, fuzzy -msgid "Credit Line Required" -msgstr "Ðе определено" - -#: src/properties.cpp:755 -msgid "Attribution requirements, if any." -msgstr "" - -#: src/properties.cpp:756 -msgid "Adult Content Warning" -msgstr "" - -#: src/properties.cpp:756 -msgid "Warning indicating the presence of content not suitable for minors." -msgstr "" - -#: src/properties.cpp:757 -#, fuzzy -msgid "Other License Requirements" -msgstr "Объектив" - -#: src/properties.cpp:757 -#, fuzzy -msgid "Additional license requirements." -msgstr "СпоÑоб фокуÑировки" - -#: src/properties.cpp:758 -#, fuzzy -msgid "Terms and Conditions Text" -msgstr "УÑÐ»Ð¾Ð²Ð¸Ñ Ñъёмки кадра" - -#: src/properties.cpp:758 -msgid "Terms and Conditions applying to the license." -msgstr "" - -#: src/properties.cpp:759 -#, fuzzy -msgid "Terms and Conditions URL" -msgstr "УÑÐ»Ð¾Ð²Ð¸Ñ Ñъёмки кадра" - -#: src/properties.cpp:759 -msgid "URL for Terms and Conditions applying to the license." -msgstr "" - -#: src/properties.cpp:760 -#, fuzzy -msgid "Other License Conditions" -msgstr "УÑÐ»Ð¾Ð²Ð¸Ñ Ñъёмки кадра" - -#: src/properties.cpp:760 -#, fuzzy -msgid "Additional license conditions." -msgstr "СпоÑоб фокуÑировки" - -#: src/properties.cpp:761 -msgid "Identifies the type of image delivered." -msgstr "" - -#: src/properties.cpp:762 -#, fuzzy -msgid "Licensor Image ID" -msgstr "ID объектива" - -#: src/properties.cpp:762 -msgid "Optional identifier assigned by the Licensor to the image." -msgstr "" - -#: src/properties.cpp:763 -msgid "Image File Name As Delivered" -msgstr "" - -#: src/properties.cpp:763 -msgid "" -"Name of the image file delivered to the Licensee for use under the license." -msgstr "" - -#: src/properties.cpp:764 -#, fuzzy -msgid "Image File Format As Delivered" -msgstr "ОпиÑание Ñнимка" - -#: src/properties.cpp:764 -msgid "" -"File format of the image file delivered to the Licensee for use under the " -"license." -msgstr "" - -#: src/properties.cpp:765 -msgid "Image File Size As Delivered" -msgstr "" - -#: src/properties.cpp:765 -msgid "Size of the image file delivered to the Licensee." -msgstr "" - -#: src/properties.cpp:766 -#, fuzzy -msgid "Copyright Status" -msgstr "ÐвторÑкие права" - -#: src/properties.cpp:766 -#, fuzzy -msgid "Copyright status of the image." -msgstr "Уведомление об авторÑких правах" - -#: src/properties.cpp:767 -#, fuzzy -msgid "Copyright Registration Number" -msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" - -#: src/properties.cpp:767 -msgid "Copyright Registration Number, if any, applying to the licensed image." -msgstr "" - -#: src/properties.cpp:768 -#, fuzzy -msgid "First Publication Date" -msgstr "Дата оцифровки" - -#: src/properties.cpp:768 -#, fuzzy -msgid "The date on which the image was first published." -msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" - -#: src/properties.cpp:769 -#, fuzzy -msgid "Copyright Owner" -msgstr "ÐвторÑкие права" - -#: src/properties.cpp:769 -msgid "Owner or owners of the copyright in the licensed image." -msgstr "" - -#: src/properties.cpp:770 -#, fuzzy -msgid "Copyright Owner ID" -msgstr "ÐвторÑкие права" - -#: src/properties.cpp:770 -msgid "Optional PLUS-ID identifying each Copyright Owner." -msgstr "" - -#: src/properties.cpp:771 -#, fuzzy -msgid "Copyright Owner Name" -msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" - -#: src/properties.cpp:771 -#, fuzzy -msgid "Name of Copyright Owner." -msgstr "ÐвторÑкие права" - -#: src/properties.cpp:772 -#, fuzzy -msgid "Copyright Owner Image ID" -msgstr "ÐвторÑкие права" - -#: src/properties.cpp:772 -msgid "Optional identifier assigned by the Copyright Owner to the image." -msgstr "" - -#: src/properties.cpp:773 -#, fuzzy -msgid "Image Creator" -msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" - -#: src/properties.cpp:773 -#, fuzzy -msgid "Creator/s of the image." -msgstr "Уведомление об авторÑких правах" - -#: src/properties.cpp:774 -#, fuzzy -msgid "Image Creator ID" -msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" - -#: src/properties.cpp:774 -msgid "Optional PLUS-ID identifying each Image Creator." -msgstr "" - -#: src/properties.cpp:775 -#, fuzzy -msgid "Image Creator Name" -msgstr "Тип изображениÑ" - -#: src/properties.cpp:775 -#, fuzzy -msgid "Name of Image Creator." -msgstr "Ðомер изображениÑ" - -#: src/properties.cpp:776 -#, fuzzy -msgid "Image Creator Image ID" -msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" - -#: src/properties.cpp:776 -msgid "Optional identifier assigned by the Image Creator to the image." -msgstr "" - -#: src/properties.cpp:777 -#, fuzzy -msgid "Image Supplier ID" -msgstr "Уникальный ID изображениÑ" - -#: src/properties.cpp:777 -msgid "Optional PLUS-ID identifying the Image Supplier." -msgstr "" - -#: src/properties.cpp:778 -#, fuzzy -msgid "Image Supplier Name" -msgstr "Размер изображениÑ" - -#: src/properties.cpp:778 -#, fuzzy -msgid "Name of Image Supplier." -msgstr "Ðомер изображениÑ" - -#: src/properties.cpp:779 -#, fuzzy -msgid "Image Supplier Image ID" -msgstr "Уникальный ID изображениÑ" - -#: src/properties.cpp:779 -msgid "Optional identifier assigned by the Image Supplier to the image." -msgstr "" - -#: src/properties.cpp:780 -#, fuzzy -msgid "Licensee Image ID" -msgstr "ID объектива" - -#: src/properties.cpp:780 -msgid "Optional identifier assigned by the Licensee to the image." -msgstr "" - -#: src/properties.cpp:781 -#, fuzzy -msgid "Licensee Image Notes" -msgstr "Температура объектива" - -#: src/properties.cpp:781 -#, fuzzy -msgid "Notes added by Licensee." -msgstr "Вид иÑточника Ñвета" - -#: src/properties.cpp:782 -#, fuzzy -msgid "Other Image Info" -msgstr "Объектив" - -#: src/properties.cpp:782 -#, fuzzy -msgid "Additional image information." -msgstr "СпоÑоб фокуÑировки" - -#: src/properties.cpp:783 -#, fuzzy -msgid "License ID" -msgstr "ID объектива" - -#: src/properties.cpp:783 -msgid "Optional PLUS-ID assigned by the Licensor to the License." -msgstr "" - -#: src/properties.cpp:784 -#, fuzzy -msgid "Licensor Transaction ID" -msgstr "ИÑтечение Ñрока" - -#: src/properties.cpp:784 -msgid "" -"Identifier assigned by Licensor for Licensor's reference and internal use." -msgstr "" - -#: src/properties.cpp:785 -#, fuzzy -msgid "Licensee Transaction ID" -msgstr "ИÑтечение Ñрока" - -#: src/properties.cpp:785 -msgid "" -"Identifier assigned by Licensee for Licensee's reference and internal use." -msgstr "" - -#: src/properties.cpp:786 -#, fuzzy -msgid "Licensee Project Reference" -msgstr "Эталонный Чёрный/Белый" - -#: src/properties.cpp:786 -msgid "Project reference name or description assigned by Licensee." -msgstr "" - -#: src/properties.cpp:787 -#, fuzzy -msgid "License Transaction Date" -msgstr "ИÑтечение Ñрока" - -#: src/properties.cpp:787 -#, fuzzy -msgid "The date of the License Transaction." -msgstr "Вид иÑточника Ñвета" - -#: src/properties.cpp:788 -msgid "Reuse" -msgstr "" - -#: src/properties.cpp:788 -msgid "" -"Indicates whether a license is a repeat or an initial license. Reuse may " -"require that licenses stored in files previously delivered to the customer " -"be updated." -msgstr "" - -#: src/properties.cpp:789 -#, fuzzy -msgid "Other License Documents" -msgstr "УÑÐ»Ð¾Ð²Ð¸Ñ Ñъёмки кадра" - -#: src/properties.cpp:789 -msgid "" -"Reference information for additional documents associated with the license." -msgstr "" - -#: src/properties.cpp:790 -#, fuzzy -msgid "Other License Info" -msgstr "Объектив" - -#: src/properties.cpp:790 -#, fuzzy -msgid "Additional license information." -msgstr "СпоÑоб фокуÑировки" - -#: src/properties.cpp:791 src/properties.cpp:792 src/properties.cpp:793 -#: src/properties.cpp:794 src/properties.cpp:795 -msgid "Optional field for use at Licensor's discretion." -msgstr "" - -#: src/properties.cpp:794 -#, fuzzy -msgid "Custom 4" -msgstr "Свой 1" - -#: src/properties.cpp:795 -#, fuzzy -msgid "Custom 5" -msgstr "Свой 1" - -#: src/properties.cpp:796 -#, fuzzy -msgid "Custom 6" -msgstr "Свой 1" - -#: src/properties.cpp:796 src/properties.cpp:797 src/properties.cpp:798 -#: src/properties.cpp:799 src/properties.cpp:800 -msgid "Optional field for use at Licensee's discretion." -msgstr "" - -#: src/properties.cpp:797 -#, fuzzy -msgid "Custom 7" -msgstr "Свой 1" - -#: src/properties.cpp:798 -#, fuzzy -msgid "Custom 8" -msgstr "Свой 1" - -#: src/properties.cpp:799 -#, fuzzy -msgid "Custom 9" -msgstr "Свой 1" - -#: src/properties.cpp:800 -#, fuzzy -msgid "Custom 10" -msgstr "Свой 1" - -#: src/properties.cpp:807 -msgid "Adult Content Warning Required" -msgstr "" - -#: src/properties.cpp:808 -#, fuzzy -msgid "Not Required" -msgstr "Ðе определено" - -#: src/properties.cpp:814 -msgid "Protected" -msgstr "" - -#: src/properties.cpp:815 -#, fuzzy -msgid "Public Domain" -msgstr "вкл" - -#: src/properties.cpp:821 -#, fuzzy -msgid "Credit Adjacent To Image" -msgstr "ВерÑÐ¸Ñ ÑÑкиза" - -#: src/properties.cpp:822 -msgid "Credit in Credits Area" -msgstr "" - -#: src/properties.cpp:823 -#, fuzzy -msgid "Credit on Image" -msgstr "ВерÑÐ¸Ñ ÑÑкиза" - -#: src/properties.cpp:824 -#, fuzzy -msgid "Not Require" -msgstr "Ðе определено" - -#: src/properties.cpp:829 -#, fuzzy -msgid "No Colorization" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/properties.cpp:830 -msgid "No Cropping" -msgstr "" - -#: src/properties.cpp:831 -#, fuzzy -msgid "No De-Colorization" -msgstr "ÐаÑыщенноÑÑ‚ÑŒ" - -#: src/properties.cpp:832 -msgid "No Flipping" -msgstr "" - -#: src/properties.cpp:833 -#, fuzzy -msgid "No Merging" -msgstr "Подавление шума" - -#: src/properties.cpp:834 -#, fuzzy -msgid "No Retouching" -msgstr "Подавление шума" - -#: src/properties.cpp:839 -msgid "Duplication Only as Necessary Under License" -msgstr "" - -#: src/properties.cpp:840 -#, fuzzy -msgid "No Duplication Constraints" -msgstr "ОпиÑание Ñнимка" - -#: src/properties.cpp:841 -#, fuzzy -msgid "No Duplication" -msgstr "ДлительноÑÑ‚ÑŒ звукозапиÑи" - -#: src/properties.cpp:846 -#, fuzzy -msgid "Maintain File Name" -msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" - -#: src/properties.cpp:847 -#, fuzzy -msgid "Maintain File Type" -msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" - -#: src/properties.cpp:848 -#, fuzzy -msgid "Maintain ID in File Name" -msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" - -#: src/properties.cpp:849 -#, fuzzy -msgid "Maintain Metadata" -msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" - -#: src/properties.cpp:854 -#, fuzzy -msgid "Windows Bitmap (BMP)" -msgstr "Ðазвание (Windows)" - -#: src/properties.cpp:855 -msgid "Digital Negative (DNG)" -msgstr "" - -#: src/properties.cpp:856 -msgid "Encapsulated PostScript (EPS)" -msgstr "" - -#: src/properties.cpp:857 -#, fuzzy -msgid "Graphics Interchange Format (GIF)" -msgstr "Формат обмена данными JPEG" - -#: src/properties.cpp:858 -#, fuzzy -msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" -msgstr "Формат обмена данными JPEG" - -#: src/properties.cpp:860 -msgid "Macintosh Picture (PICT)" -msgstr "" - -#: src/properties.cpp:861 -msgid "Portable Network Graphics (PNG)" -msgstr "" - -#: src/properties.cpp:862 -msgid "Photoshop Document (PSD)" -msgstr "" - -#: src/properties.cpp:863 -msgid "Proprietary RAW Image Format" -msgstr "" - -#: src/properties.cpp:864 -msgid "Tagged Image File Format (TIFF)" -msgstr "" - -#: src/properties.cpp:865 -msgid "Windows Media Photo (HD Photo)" -msgstr "" - -#: src/properties.cpp:870 -msgid "Greater than 50 MB" -msgstr "" - -#: src/properties.cpp:871 -#, fuzzy -msgid "Up to 1 MB" -msgstr "Optio A10" - -#: src/properties.cpp:872 -#, fuzzy -msgid "Up to 10 MB" -msgstr "Optio A10" - -#: src/properties.cpp:873 -#, fuzzy -msgid "Up to 30 MB" -msgstr "Optio 30" - -#: src/properties.cpp:874 -#, fuzzy -msgid "Up to 50 MB" -msgstr "Optio S50" - -#: src/properties.cpp:879 -#, fuzzy -msgid "Illustrated Image" -msgstr "Ширина изображениÑ" - -#: src/properties.cpp:880 -msgid "Multimedia or Composited Image" -msgstr "" - -#: src/properties.cpp:882 -msgid "Photographic Image" -msgstr "" - -#: src/properties.cpp:888 -msgid "Cell" -msgstr "" - -#: src/properties.cpp:889 -msgid "FAX" -msgstr "" - -#: src/properties.cpp:891 -#, fuzzy -msgid "Pager" -msgstr "Язык" - -#: src/properties.cpp:892 -msgid "Work" -msgstr "" - -#: src/properties.cpp:897 -#, fuzzy -msgid "Age Unknown" -msgstr "ÐеизвеÑтно" - -#: src/properties.cpp:898 -msgid "Age 25 or Over" -msgstr "" - -#: src/properties.cpp:899 -msgid "Age 24" -msgstr "" - -#: src/properties.cpp:900 -msgid "Age 23" -msgstr "" - -#: src/properties.cpp:901 -msgid "Age 22" -msgstr "" - -#: src/properties.cpp:902 -msgid "Age 21" -msgstr "" - -#: src/properties.cpp:903 -msgid "Age 20" -msgstr "" - -#: src/properties.cpp:904 -msgid "Age 19" -msgstr "" - -#: src/properties.cpp:905 -msgid "Age 18" -msgstr "" - -#: src/properties.cpp:906 -msgid "Age 17" -msgstr "" - -#: src/properties.cpp:907 -msgid "Age 16" -msgstr "" - -#: src/properties.cpp:908 -msgid "Age 15" -msgstr "" - -#: src/properties.cpp:909 -msgid "Age 14 or Under" -msgstr "" - -#: src/properties.cpp:915 src/properties.cpp:923 src/properties.cpp:930 -msgid "Not Applicable" -msgstr "" - -#: src/properties.cpp:916 -#, fuzzy -msgid "Unlimited Model Releases" -msgstr "ID модели" - -#: src/properties.cpp:917 -msgid "Limited or Incomplete Model Releases" -msgstr "" - -#: src/properties.cpp:924 -msgid "Unlimited Property Releases" -msgstr "" - -#: src/properties.cpp:925 -msgid "Limited or Incomplete Property Releases" -msgstr "" - -#: src/properties.cpp:931 -msgid "Repeat Use" -msgstr "" - -#: src/properties.cpp:935 src/properties.cpp:944 -#, fuzzy -msgid "Fixture Identification" -msgstr "ВерÑÐ¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸" - -#: src/properties.cpp:936 src/properties.cpp:945 -#, fuzzy -msgid "Status" -msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð¸Ñ‘Ð¼Ð½Ð¸ÐºÐ° GPS" - -#: src/properties.cpp:936 src/properties.cpp:945 -msgid "A notation making the image unique" -msgstr "" - -#: src/properties.cpp:937 src/properties.cpp:946 -msgid "People" -msgstr "" - -#: src/properties.cpp:938 src/properties.cpp:947 -msgid "CatalogSets" -msgstr "" - -#: src/properties.cpp:938 src/properties.cpp:947 src/properties.cpp:978 -#: src/properties.cpp:982 -msgid "Descriptive markers of catalog items by content" -msgstr "" - -#: src/properties.cpp:953 -#, fuzzy -msgid "RegionInfo" -msgstr "Объектив" - -#: src/properties.cpp:953 -msgid "Microsoft Photo people-tagging metadata root" -msgstr "" - -#: src/properties.cpp:959 -msgid "DateRegionsValid" -msgstr "" - -#: src/properties.cpp:959 -#, fuzzy -msgid "Date the last region was created" -msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" - -#: src/properties.cpp:960 src/properties.cpp:975 -#, fuzzy -msgid "Regions" -msgstr "ВерÑии" - -#: src/properties.cpp:960 -msgid "Contains Regions/person tags" -msgstr "" - -#: src/properties.cpp:966 -#, fuzzy -msgid "PersonDisplayName" -msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" - -#: src/properties.cpp:966 -msgid "Name of the person (in the given rectangle)" -msgstr "" - -#: src/properties.cpp:967 -msgid "Rectangle" -msgstr "" - -#: src/properties.cpp:967 -msgid "Rectangle that identifies the person within the photo" -msgstr "" - -#: src/properties.cpp:968 -msgid "PersonEmailDigest" -msgstr "" - -#: src/properties.cpp:968 -msgid "" -"SHA-1 encrypted message hash of the person's Windows Live e-mail address" -msgstr "" - -#: src/properties.cpp:969 -msgid "PersonLiveCID" -msgstr "" - -#: src/properties.cpp:969 -msgid "Signed decimal representation of the person's Windows Live CID" -msgstr "" - -#: src/properties.cpp:975 -msgid "Main structure containing region based information" -msgstr "" - -#: src/properties.cpp:976 -msgid "AppliedToDimensions" -msgstr "" - -#: src/properties.cpp:976 -msgid "Width and height of image when storing region data" -msgstr "" - -#: src/properties.cpp:977 -msgid "RegionList" -msgstr "" - -#: src/properties.cpp:977 -#, fuzzy -msgid "List of Region structures" -msgstr "Размер изображениÑ" - -#: src/properties.cpp:978 -#, fuzzy -msgid "Area" -msgstr "СпоÑоб фокуÑировки" - -#: src/properties.cpp:979 -msgid "Type purpose of region (Face|Pet|Focus|BarCode)" -msgstr "" - -#: src/properties.cpp:980 -msgid "Name/ short description of content in image region" -msgstr "" - -#: src/properties.cpp:981 -msgid "" -"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" -"NotEvaluatedNotUsed)" -msgstr "" - -#: src/properties.cpp:982 -#, fuzzy -msgid "FocusUsage" -msgstr "СпоÑоб фокуÑировки" - -#: src/properties.cpp:983 -#, fuzzy -msgid "BarCodeValue" -msgstr "Брекетинг" - -#: src/properties.cpp:983 -msgid "Decoded BarCode value string" -msgstr "" - -#: src/properties.cpp:984 -#, fuzzy -msgid "Extensions" -msgstr "ВерÑии" - -#: src/properties.cpp:984 -msgid "Any top level XMP property to describe the region content" -msgstr "" - -#: src/sigmamn.cpp:62 -#, fuzzy -msgid "Resolution Mode" -msgstr "Разрешение по X" - -#: src/sigmamn.cpp:63 -#, fuzzy -msgid "Resolution mode" -msgstr "Разрешение по X" - -#: src/sigmamn.cpp:65 -msgid "Autofocus Mode" -msgstr "Режим автофокуÑировки" - -#: src/sigmamn.cpp:66 -msgid "Autofocus mode" -msgstr "Режим автофокуÑировки" - -#: src/sigmamn.cpp:68 -#, fuzzy -msgid "Focus Setting" -msgstr "ÐаÑтройка контраÑта" - -#: src/sigmamn.cpp:69 -#, fuzzy -msgid "Focus setting" -msgstr "СпоÑоб фокуÑировки" - -#: src/sigmamn.cpp:80 -msgid "Lens Range" -msgstr "ФокуÑный диапазон" - -#: src/sigmamn.cpp:81 -msgid "Lens focal length range" -msgstr "ФокуÑный диапазон объектива" - -#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 -msgid "Shadow" -msgstr "Тень" - -#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 -msgid "Highlight" -msgstr "Светлые облаÑти" - -#: src/sigmamn.cpp:104 -msgid "Fill Light" -msgstr "ЗаполнÑющий Ñвет" - -#: src/sigmamn.cpp:105 -#, fuzzy -msgid "X3 Fill light" -msgstr "ЗаполнÑющий Ñвет" - -#: src/sigmamn.cpp:107 -msgid "Color Adjustment" -msgstr "Режим коррекции" - -#: src/sigmamn.cpp:108 -msgid "Color adjustment" -msgstr "Режим коррекции" - -#: src/sigmamn.cpp:110 -msgid "Adjustment Mode" -msgstr "Режим коррекции" - -#: src/sigmamn.cpp:111 -msgid "Adjustment mode" -msgstr "Режим коррекции" - -#: src/sigmamn.cpp:122 -msgid "Auto Bracket" -msgstr "Ðвтобрекетирование" - -#: src/sigmamn.cpp:123 src/tags.cpp:1490 -msgid "Auto bracket" -msgstr "Ðвтобрекетирование" - -#: src/sigmamn.cpp:127 -#, fuzzy -msgid "Unknown SigmaMakerNote tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг CanonMakerNote" - -#: src/sigmamn.cpp:170 -msgid "8-Segment" -msgstr "" - -#: src/sonymn.cpp:88 -#, fuzzy -msgid "Standard " -msgstr "Стандартный Ñвет A" - -#: src/sonymn.cpp:91 -msgid "Advanced Lv1" -msgstr "" - -#: src/sonymn.cpp:92 -msgid "Advanced Lv2" -msgstr "" - -#: src/sonymn.cpp:93 -msgid "Advanced Lv3" -msgstr "" - -#: src/sonymn.cpp:94 -msgid "Advanced Lv4" -msgstr "" - -#: src/sonymn.cpp:95 -msgid "Advanced Lv5" -msgstr "" - -#: src/sonymn.cpp:109 -#, fuzzy -msgid "Landscape " -msgstr "Ðльбом" - -#: src/sonymn.cpp:113 -#, fuzzy -msgid "Night Scene / Twilight" -msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" - -#: src/sonymn.cpp:114 -msgid "Hi-Speed Shutter" -msgstr "" - -#: src/sonymn.cpp:115 -#, fuzzy -msgid "Twilight Portrait" -msgstr "Ðочной портрет" - -#: src/sonymn.cpp:116 -msgid "Soft Snap" -msgstr "" - -#: src/sonymn.cpp:118 -#, fuzzy -msgid "Smile Shutter" -msgstr "СкороÑÑ‚ÑŒ ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" - -#: src/sonymn.cpp:120 -#, fuzzy -msgid "High Sensitivity" -msgstr "Ð¡Ð¿ÐµÐºÑ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡ÑƒÐ²ÑтвительноÑÑ‚ÑŒ" - -#: src/sonymn.cpp:121 -msgid "Advanced Sports Shooting" -msgstr "" - -#: src/sonymn.cpp:123 -#, fuzzy -msgid "Gourmet" -msgstr "ID документа" - -#: src/sonymn.cpp:125 -#, fuzzy -msgid "Handheld Twilight" -msgstr "Дневной Ñвет" - -#: src/sonymn.cpp:126 -#, fuzzy -msgid "Anti Motion Blur" -msgstr "Портретный режим" - -#: src/sonymn.cpp:128 -#, fuzzy -msgid "Backlight Correction HDR" -msgstr "Без коррекции" - -#: src/sonymn.cpp:142 -#, fuzzy -msgid "On (Continuous)" -msgstr "Продолжительный ведущий режим" - -#: src/sonymn.cpp:143 -#, fuzzy -msgid "On (Shooting)" -msgstr "Режим Ñъемки" - -#: src/sonymn.cpp:151 -msgid "Plus" -msgstr "" - -#: src/sonymn.cpp:167 -#, fuzzy -msgid "White Flourescent" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/sonymn.cpp:168 -#, fuzzy -msgid "Cool White Flourescent" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/sonymn.cpp:169 -#, fuzzy -msgid "Day White Flourescent" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" - -#: src/sonymn.cpp:172 -#, fuzzy -msgid "Underwater 1 (Blue Water)" -msgstr "ÐŸÐ¾Ð´Ð²Ð¾Ð´Ð½Ð°Ñ Ñъемка" - -#: src/sonymn.cpp:173 -#, fuzzy -msgid "Underwater 2 (Green Water)" -msgstr "ÐŸÐ¾Ð´Ð²Ð¾Ð´Ð½Ð°Ñ Ñъемка" - -#: src/sonymn.cpp:180 -msgid "Permanent-AF" -msgstr "" - -#: src/sonymn.cpp:188 -#, fuzzy -msgid "Center AF" -msgstr "Центральный" - -#: src/sonymn.cpp:189 -#, fuzzy -msgid "Spot AF" -msgstr "Спорт" - -#: src/sonymn.cpp:190 -msgid "Flexible Spot AF" -msgstr "" - -#: src/sonymn.cpp:191 -#, fuzzy -msgid "Touch AF" -msgstr "One-touch" - -#: src/sonymn.cpp:192 -#, fuzzy -msgid "Manual Focus" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" - -#: src/sonymn.cpp:193 -#, fuzzy -msgid "Face Detected" -msgstr "Ðе удалоÑÑŒ прочитать" - -#: src/sonymn.cpp:208 -#, fuzzy -msgid "Close Focus" -msgstr "AI Focus" - -#: src/sonymn.cpp:224 -#, fuzzy -msgid "Exposure Bracketing" -msgstr "Брекетинг" - -#: src/sonymn.cpp:298 src/sonymn.cpp:299 -#, fuzzy -msgid "Multi Burst Mode" -msgstr "СпоÑоб фокуÑировки" - -#: src/sonymn.cpp:301 src/sonymn.cpp:302 -#, fuzzy -msgid "Multi Burst Image Width" -msgstr "Ширина изображениÑ" - -#: src/sonymn.cpp:304 src/sonymn.cpp:305 -#, fuzzy -msgid "Multi Burst Image Height" -msgstr "Длина изображениÑ" - -#: src/sonymn.cpp:315 -#, fuzzy -msgid "JPEG preview image" -msgstr "ВерÑÐ¸Ñ ÑÑкиза" - -#: src/sonymn.cpp:341 -#, fuzzy -msgid "Auto HDR" -msgstr "ÐвторÑкие и Ñмежные права" - -#: src/sonymn.cpp:342 -msgid "High Definition Range Mode" -msgstr "" - -#: src/sonymn.cpp:346 -#, fuzzy -msgid "Shot Information" -msgstr "СпоÑоб фокуÑировки" - -#: src/sonymn.cpp:351 src/sonymn.cpp:352 -#, fuzzy -msgid "Sony Model ID" -msgstr "ID модели" - -#: src/sonymn.cpp:354 src/sonymn.cpp:355 -#, fuzzy -msgid "Color Reproduction" -msgstr "Подавление цветного шума" - -#: src/sonymn.cpp:369 src/sonymn.cpp:370 src/sonymn.cpp:423 src/sonymn.cpp:424 -#, fuzzy -msgid "Dynamic Range Optimizer" -msgstr "ÐаÑтройка баланÑа белого" - -#: src/sonymn.cpp:378 src/sonymn.cpp:379 -#, fuzzy -msgid "Minolta MakerNote" -msgstr "Режим замера" - -#: src/sonymn.cpp:384 src/sonymn.cpp:385 -#, fuzzy -msgid "Full Image Size" -msgstr "Размер изображениÑ" - -#: src/sonymn.cpp:387 -#, fuzzy -msgid "Preview Image Size" -msgstr "ВерÑÐ¸Ñ ÑÑкиза" - -#: src/sonymn.cpp:388 -#, fuzzy -msgid "Preview image size" -msgstr "ВерÑÐ¸Ñ ÑÑкиза" - -#: src/sonymn.cpp:402 src/sonymn.cpp:403 src/sonymn.cpp:613 src/sonymn.cpp:614 -msgid "AF Illuminator" -msgstr "" - -#: src/sonymn.cpp:405 src/sonymn.cpp:406 -#, fuzzy -msgid "JPEG Quality" -msgstr "КачеÑтво" - -#: src/sonymn.cpp:411 src/sonymn.cpp:412 -#, fuzzy -msgid "Release Mode" -msgstr "Дата пубикации" - -#: src/sonymn.cpp:415 -msgid "Shot number in continous burst mode" -msgstr "" - -#: src/sonymn.cpp:417 src/sonymn.cpp:418 -#, fuzzy -msgid "Anti-Blur" -msgstr "Ðнтиразмывание" - -#: src/sonymn.cpp:420 src/sonymn.cpp:421 src/sonymn.cpp:621 src/sonymn.cpp:622 -#, fuzzy -msgid "Long Exposure Noise Reduction" -msgstr "Подавление шума при длительной выдержке" - -#: src/sonymn.cpp:426 src/sonymn.cpp:427 -#, fuzzy -msgid "Intelligent Auto" -msgstr "ФокуÑное раÑÑтоÑние" - -#: src/sonymn.cpp:434 -#, fuzzy -msgid "Unknown Sony1MakerNote tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг CanonMakerNote" - -#: src/sonymn.cpp:448 -#, fuzzy -msgid "Continuous High" -msgstr "Продолжительный ведущий режим" - -#: src/sonymn.cpp:452 -#, fuzzy -msgid "Continuous Low" -msgstr "Продолжительный ведущий режим" - -#: src/sonymn.cpp:454 src/sonymn.cpp:455 -#, fuzzy -msgid "D-Range Optimizer Bracketing Low" -msgstr "ÐžÐ¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" - -#: src/sonymn.cpp:487 -#, fuzzy -msgid "Autumn" -msgstr "Ðвто" - -#: src/sonymn.cpp:493 -msgid "ADI" -msgstr "" - -#: src/sonymn.cpp:509 src/sonymn.cpp:510 src/sonymn.cpp:511 -msgid "StyleBox1" -msgstr "" - -#: src/sonymn.cpp:529 -#, fuzzy -msgid "Auto No Flash" -msgstr "Ðвтобрекетирование" - -#: src/sonymn.cpp:584 src/sonymn.cpp:585 src/sonymn.cpp:690 src/sonymn.cpp:691 -#, fuzzy -msgid "Dynamic Range Optimizer Level" -msgstr "ÐаÑтройка баланÑа белого" - -#: src/sonymn.cpp:587 src/sonymn.cpp:588 src/sonymn.cpp:693 src/sonymn.cpp:694 -#, fuzzy -msgid "Creative Style" -msgstr "Дата ÑозданиÑ" - -#: src/sonymn.cpp:599 src/sonymn.cpp:600 -#, fuzzy -msgid "Zone Matching Value" -msgstr "ЯркоÑÑ‚ÑŒ" - -#: src/sonymn.cpp:617 src/sonymn.cpp:618 -msgid "AF With Shutter" -msgstr "" - -#: src/sonymn.cpp:625 src/sonymn.cpp:626 -#, fuzzy -msgid "High ISO NoiseReduction" -msgstr "Подавление шума" - -#: src/sonymn.cpp:629 src/sonymn.cpp:630 -#, fuzzy -msgid "Image Style" -msgstr "Тип изображениÑ" - -#: src/sonymn.cpp:655 -#, fuzzy -msgid "Unknown Sony1 Camera Settings tag" -msgstr "ÐаÑтройка контраÑта" - -#: src/sonymn.cpp:719 -#, fuzzy -msgid "Unknown Sony1 Camera Settings 2 tag" -msgstr "ÐаÑтройка контраÑта" - -#: src/tags.cpp:184 -msgid "Unknown section" -msgstr "ÐеизвеÑтный раздел" - -#: src/tags.cpp:185 -#, fuzzy -msgid "Image data structure" -msgstr "Размер изображениÑ" - -#: src/tags.cpp:186 -#, fuzzy -msgid "Recording offset" -msgstr "Цветовое проÑтранÑтво" - -#: src/tags.cpp:187 -#, fuzzy -msgid "Image data characteristics" -msgstr "Размер изображениÑ" - -#: src/tags.cpp:188 -msgid "Other data" -msgstr "Прочие данные" - -#: src/tags.cpp:189 -msgid "Exif data structure" -msgstr "Структура данных Exif" - -#: src/tags.cpp:191 -#, fuzzy -msgid "Image configuration" -msgstr "ÐŸÐ»Ð°Ð½Ð°Ñ€Ð½Ð°Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ" - -#: src/tags.cpp:192 -msgid "User information" -msgstr "О пользователе" - -#: src/tags.cpp:193 -msgid "Related file" -msgstr "СвÑзанный файл" - -#: src/tags.cpp:194 -msgid "Date and time" -msgstr "Дата и времÑ" - -#: src/tags.cpp:195 -msgid "Picture taking conditions" -msgstr "УÑÐ»Ð¾Ð²Ð¸Ñ Ñъёмки кадра" - -#: src/tags.cpp:196 -msgid "GPS information" -msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ GPS" - -#: src/tags.cpp:197 -msgid "Interoperability information" -msgstr "О ÑовмеÑтимоÑти" - -#: src/tags.cpp:198 -msgid "Vendor specific information" -msgstr "Ð¡Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð°Ñ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÐµÐ»Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ" - -#: src/tags.cpp:199 -#, fuzzy -msgid "Adobe DNG tags" -msgstr "Adobe RGB" - -#: src/tags.cpp:200 -#, fuzzy -msgid "Panasonic RAW tags" -msgstr "ÐеизвеÑтный Ñ‚Ñг" - -#: src/tags.cpp:201 -#, fuzzy -msgid "TIFF/EP tags" -msgstr "ID Ñтандарта TIFF/EP" - -#: src/tags.cpp:202 -msgid "TIFF PageMaker 6.0 tags" -msgstr "" - -#: src/tags.cpp:203 -#, fuzzy -msgid "Adobe OPI tags" -msgstr "Adobe RGB" - -#: src/tags.cpp:204 -msgid "Last section" -msgstr "ПоÑледний раздел" - -#: src/tags.cpp:220 -#, fuzzy -msgid "Primary image" -msgstr "ВерÑÐ¸Ñ ÑÑкиза" - -#: src/tags.cpp:221 -#, fuzzy -msgid "Thumbnail/Preview image" -msgstr "ЭÑкиз" - -#: src/tags.cpp:222 -msgid "Primary image, Multi page file" -msgstr "" - -#: src/tags.cpp:223 -msgid "Thumbnail/Preview image, Multi page file" -msgstr "" - -#: src/tags.cpp:224 -#, fuzzy -msgid "Primary image, Transparency mask" -msgstr "ÐŸÑ€Ð¾Ð·Ñ€Ð°Ñ‡Ð½Ð°Ñ Ð¼Ð°Ñка" - -#: src/tags.cpp:225 -msgid "Thumbnail/Preview image, Transparency mask" -msgstr "" - -#: src/tags.cpp:226 -msgid "Primary image, Multi page file, Transparency mask" -msgstr "" - -#: src/tags.cpp:227 src/tags.cpp:228 -msgid "Thumbnail/Preview image, Multi page file, Transparency mask" -msgstr "" - -#: src/tags.cpp:233 -msgid "Full-resolution image data" -msgstr "" - -#: src/tags.cpp:234 -msgid "Reduced-resolution image data" -msgstr "" - -#: src/tags.cpp:235 -msgid "A single page of a multi-page image" -msgstr "" - -#: src/tags.cpp:241 -msgid "inch" -msgstr "дюйм" - -#: src/tags.cpp:248 -msgid "CCITT RLE" -msgstr "CCITT RLE" - -#: src/tags.cpp:249 -msgid "T4/Group 3 Fax" -msgstr "T4/Group 3 Fax" - -#: src/tags.cpp:250 -msgid "T6/Group 4 Fax" -msgstr "T6/Group 4 Fax" - -#: src/tags.cpp:251 -msgid "LZW" -msgstr "LZW" - -#: src/tags.cpp:252 -msgid "JPEG (old-style)" -msgstr "" - -#: src/tags.cpp:253 -msgid "JPEG" -msgstr "JPEG" - -#: src/tags.cpp:254 -#, fuzzy -msgid "Adobe Deflate" -msgstr "Pixar Deflate" - -#: src/tags.cpp:255 -msgid "JBIG B&W" -msgstr "JBIG Ч/Б" - -#: src/tags.cpp:256 -#, fuzzy -msgid "JBIG Color" -msgstr "Цвет" - -#: src/tags.cpp:257 -msgid "Next 2-bits RLE" -msgstr "" - -#: src/tags.cpp:258 -#, fuzzy -msgid "Epson ERF Compressed" -msgstr "Cжатый Nikon NEF" - -#: src/tags.cpp:259 -#, fuzzy -msgid "Samsung SRW Compressed" -msgstr "Cжатый Nikon NEF" - -#: src/tags.cpp:260 -#, fuzzy -msgid "CCITT RLE 1-word" -msgstr "CCITT RLE" - -#: src/tags.cpp:261 -msgid "PackBits (Macintosh RLE)" -msgstr "PackBits (Macintosh RLE)" - -#: src/tags.cpp:262 -msgid "Thunderscan RLE" -msgstr "Thunderscan RLE" - -#: src/tags.cpp:263 -msgid "IT8 CT Padding" -msgstr "IT8 CT Padding" - -#: src/tags.cpp:264 -msgid "IT8 Linework RLE" -msgstr "IT8 Linework RLE" - -#: src/tags.cpp:265 -msgid "IT8 Monochrome Picture" -msgstr "Монохромное изображение IT8" - -#: src/tags.cpp:266 -msgid "IT8 Binary Lineart" -msgstr "IT8 Binary Lineart" - -#: src/tags.cpp:267 -msgid "Pixar Film (10-bits LZW)" -msgstr "Pixar Film (10-разрÑдный LZW)" - -#: src/tags.cpp:268 -msgid "Pixar Log (11-bits ZIP)" -msgstr "Pixar Log (11-разрÑдный ZIP)" - -#: src/tags.cpp:269 -msgid "Pixar Deflate" -msgstr "Pixar Deflate" - -#: src/tags.cpp:270 -msgid "Kodak DCS Encoding" -msgstr "Kodak DCS Encoding" - -#: src/tags.cpp:271 -msgid "ISO JBIG" -msgstr "ISO JBIG" - -#: src/tags.cpp:272 -msgid "SGI Log Luminance RLE" -msgstr "SGI Log Luminance RLE" - -#: src/tags.cpp:273 -msgid "SGI Log 24-bits packed" -msgstr "SGI Log 24-bits packed" - -#: src/tags.cpp:274 -msgid "Leadtools JPEG 2000" -msgstr "Leadtools JPEG 2000" - -#: src/tags.cpp:275 -msgid "Nikon NEF Compressed" -msgstr "Cжатый Nikon NEF" - -#: src/tags.cpp:276 -#, fuzzy -msgid "Kodak DCR Compressed" -msgstr "Cжатый Nikon NEF" - -#: src/tags.cpp:277 -#, fuzzy -msgid "Pentax PEF Compressed" -msgstr "Cжатый Nikon NEF" - -#: src/tags.cpp:282 -#, fuzzy -msgid "White Is Zero" -msgstr "Чёрно-белый" - -#: src/tags.cpp:283 -#, fuzzy -msgid "Black Is Zero" -msgstr "Чёрно-белый" - -#: src/tags.cpp:284 -msgid "RGB" -msgstr "RGB" - -#: src/tags.cpp:285 -msgid "RGB Palette" -msgstr "Палитра RGB" - -#: src/tags.cpp:286 -msgid "Transparency Mask" -msgstr "ÐŸÑ€Ð¾Ð·Ñ€Ð°Ñ‡Ð½Ð°Ñ Ð¼Ð°Ñка" - -#: src/tags.cpp:287 src/tags.cpp:326 -msgid "CMYK" -msgstr "CMYK" - -#: src/tags.cpp:288 -msgid "YCbCr" -msgstr "YCbCr" - -#: src/tags.cpp:289 -msgid "CIELab" -msgstr "CIELab" - -#: src/tags.cpp:290 -msgid "ICCLab" -msgstr "ICCLab" - -#: src/tags.cpp:291 -msgid "ITULab" -msgstr "ITULab" - -#: src/tags.cpp:292 -#, fuzzy -msgid "Color Filter Array" -msgstr "Цветовое проÑтранÑтво" - -#: src/tags.cpp:293 -msgid "Pixar LogL" -msgstr "Pixar LogL" - -#: src/tags.cpp:294 -msgid "Pixar LogLuv" -msgstr "Pixar LogLuv" - -#: src/tags.cpp:295 -msgid "Linear Raw" -msgstr "Линейный Raw" - -#: src/tags.cpp:300 -msgid "No dithering or halftoning" -msgstr "" - -#: src/tags.cpp:301 -msgid "Ordered dither or halftone technique" -msgstr "" - -#: src/tags.cpp:302 -#, fuzzy -msgid "Randomized process" -msgstr "Обычный процеÑÑ Ð¿Ñ€Ð¾Ñвки" - -#: src/tags.cpp:307 -#, fuzzy -msgid "top, left" -msgstr "Ñправа налево" - -#: src/tags.cpp:308 -#, fuzzy -msgid "top, right" -msgstr "ÐвторÑкие и Ñмежные права" - -#: src/tags.cpp:309 -#, fuzzy -msgid "bottom, right" -msgstr "Ñлева направо" - -#: src/tags.cpp:310 -#, fuzzy -msgid "bottom, left" -msgstr "Ñправа налево" - -#: src/tags.cpp:311 -#, fuzzy -msgid "left, top" -msgstr "Ñлева направо" - -#: src/tags.cpp:312 -#, fuzzy -msgid "right, top" -msgstr "Ñправа налево" - -#: src/tags.cpp:313 -#, fuzzy -msgid "right, bottom" -msgstr "Ñверху вниз" - -#: src/tags.cpp:314 src/tags.cpp:315 -#, fuzzy -msgid "left, bottom" -msgstr "Ñверху вниз" - -#: src/tags.cpp:320 -msgid "No prediction scheme used" -msgstr "" - -#: src/tags.cpp:321 -msgid "Horizontal differencing" -msgstr "" - -#: src/tags.cpp:327 -#, fuzzy -msgid "not CMYK" -msgstr "CMYK" - -#: src/tags.cpp:332 -msgid "Unsigned integer data" -msgstr "" - -#: src/tags.cpp:333 -msgid "Two's complement signed integer data" -msgstr "" - -#: src/tags.cpp:334 -msgid "IEEE floating point data" -msgstr "" - -#: src/tags.cpp:335 src/tags.cpp:336 -#, fuzzy -msgid "Undefined data format" -msgstr "Ðеподдерживаемый формат даты" - -#: src/tags.cpp:341 -#, fuzzy -msgid "Not indexed" -msgstr "Ðе определено" - -#: src/tags.cpp:342 src/tags.cpp:648 -msgid "Indexed" -msgstr "" - -#: src/tags.cpp:347 -msgid "A" -msgstr "" - -#: src/tags.cpp:348 -msgid "B" -msgstr "" - -#: src/tags.cpp:349 -msgid "C" -msgstr "" - -#: src/tags.cpp:350 -msgid "A+B-C" -msgstr "" - -#: src/tags.cpp:351 -msgid "A+((B-C)/2)" -msgstr "" - -#: src/tags.cpp:352 -msgid "B+((A-C)/2)" -msgstr "" - -#: src/tags.cpp:353 -msgid "(A+B)/2" -msgstr "" - -#: src/tags.cpp:358 -#, fuzzy -msgid "Centered" -msgstr "ЦентральнаÑ" - -#: src/tags.cpp:359 -#, fuzzy -msgid "Co-sited" -msgstr "Крупный план" - -#: src/tags.cpp:364 -msgid "No flash" -msgstr "Без вÑпышки" - -#: src/tags.cpp:366 -#, fuzzy -msgid "Fired, return light not detected" -msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет не найден" - -#: src/tags.cpp:367 -#, fuzzy -msgid "Fired, return light detected" -msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет найден" - -#: src/tags.cpp:368 -#, fuzzy -msgid "Yes, did not fire" -msgstr "Ð’Ñпышка не Ñработала" - -#: src/tags.cpp:369 -#, fuzzy -msgid "Yes, compulsory" -msgstr "авто + подавление Ñффекта краÑных глаз" - -#: src/tags.cpp:370 -#, fuzzy -msgid "Yes, compulsory, return light not detected" -msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет не найден" - -#: src/tags.cpp:371 -#, fuzzy -msgid "Yes, compulsory, return light detected" -msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет найден" - -#: src/tags.cpp:372 -msgid "No, compulsory" -msgstr "" - -#: src/tags.cpp:373 -#, fuzzy -msgid "No, did not fire, return light not detected" -msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет не найден" - -#: src/tags.cpp:374 -msgid "No, auto" -msgstr "Ðет, авто" - -#: src/tags.cpp:375 -msgid "Yes, auto" -msgstr "Да, авто" - -#: src/tags.cpp:376 -#, fuzzy -msgid "Yes, auto, return light not detected" -msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет не найден" - -#: src/tags.cpp:377 -#, fuzzy -msgid "Yes, auto, return light detected" -msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет найден" - -#: src/tags.cpp:378 -msgid "No flash function" -msgstr "Ðет функции вÑпышки" - -#: src/tags.cpp:379 -#, fuzzy -msgid "No, no flash function" -msgstr "Ðет функции вÑпышки" - -#: src/tags.cpp:380 -msgid "Yes, red-eye reduction" -msgstr "Да, Ñ Ð¿Ð¾Ð´Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ Ñффекта краÑных глаз" - -#: src/tags.cpp:381 -#, fuzzy -msgid "Yes, red-eye reduction, return light not detected" -msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет не найден" - -#: src/tags.cpp:382 -#, fuzzy -msgid "Yes, red-eye reduction, return light detected" -msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет найден" - -#: src/tags.cpp:383 -#, fuzzy -msgid "Yes, compulsory, red-eye reduction" -msgstr "авто + подавление Ñффекта краÑных глаз" - -#: src/tags.cpp:384 -#, fuzzy -msgid "Yes, compulsory, red-eye reduction, return light not detected" -msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет не найден" - -#: src/tags.cpp:385 -#, fuzzy -msgid "Yes, compulsory, red-eye reduction, return light detected" -msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет найден" - -#: src/tags.cpp:386 -#, fuzzy -msgid "No, red-eye reduction" -msgstr "Да, Ñ Ð¿Ð¾Ð´Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ Ñффекта краÑных глаз" - -#: src/tags.cpp:387 -#, fuzzy -msgid "No, auto, red-eye reduction" -msgstr "авто + подавление Ñффекта краÑных глаз" - -#: src/tags.cpp:388 -#, fuzzy -msgid "Yes, auto, red-eye reduction" -msgstr "авто + подавление Ñффекта краÑных глаз" - -#: src/tags.cpp:389 -#, fuzzy -msgid "Yes, auto, red-eye reduction, return light not detected" -msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет не найден" - -#: src/tags.cpp:390 -#, fuzzy -msgid "Yes, auto, red-eye reduction, return light detected" -msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет найден" - -#: src/tags.cpp:395 -msgid "Rectangular (or square) layout" -msgstr "" - -#: src/tags.cpp:396 -msgid "Staggered layout A: even columns are offset down by 1/2 row" -msgstr "" - -#: src/tags.cpp:397 -msgid "Staggered layout B: even columns are offset up by 1/2 row" -msgstr "" - -#: src/tags.cpp:398 -msgid "Staggered layout C: even rows are offset right by 1/2 column" -msgstr "" - -#: src/tags.cpp:399 -msgid "Staggered layout D: even rows are offset left by 1/2 column" -msgstr "" - -#: src/tags.cpp:404 -msgid "Processing Software" -msgstr "По обработки" - -#: src/tags.cpp:405 -msgid "The name and version of the software used to post-process the picture." -msgstr "" - -#: src/tags.cpp:408 -#, fuzzy -msgid "New Subfile Type" -msgstr "Тип изображениÑ" - -#: src/tags.cpp:409 -msgid "A general indication of the kind of data contained in this subfile." -msgstr "" - -#: src/tags.cpp:411 -#, fuzzy -msgid "Subfile Type" -msgstr "Тип изображениÑ" - -#: src/tags.cpp:412 -msgid "" -"A general indication of the kind of data contained in this subfile. This " -"field is deprecated. The NewSubfileType field should be used instead." -msgstr "" - -#: src/tags.cpp:416 -msgid "" -"The number of columns of image data, equal to the number of pixels per row. " -"In JPEG compressed data a JPEG marker is used instead of this tag." -msgstr "" -"КоличеÑтво Ñтолбцов данных изображениÑ, равное количеÑтву пикÑелов на Ñ€Ñд. Ð’ " -"данных, Ñжатых по алгоритму JPEG, вмеÑто Ñтого Ñ‚Ñга иÑпользуетÑÑ Ð¼Ð°Ñ€ÐºÐµÑ€." - -#: src/tags.cpp:421 -msgid "" -"The number of rows of image data. In JPEG compressed data a JPEG marker is " -"used instead of this tag." -msgstr "" -"КоличеÑтво Ñ€Ñдов данных изображениÑ. Ð’ данных, Ñжатых по алгоритму JPEG, " -"вмеÑто Ñтого Ñ‚Ñга иÑпользуетÑÑ Ð¼Ð°Ñ€ÐºÐµÑ€." - -#: src/tags.cpp:424 -msgid "Bits per Sample" -msgstr "Битов на ÑÑмпл" - -#: src/tags.cpp:425 -#, fuzzy -msgid "" -"The number of bits per image component. In this standard each component of " -"the image is 8 bits, so the value for this tag is 8. See also " -". In JPEG compressed data a JPEG marker is used instead of " -"this tag." -msgstr "" -"КоличеÑтво битов на компонент изображениÑ. Ð’ Ñтом Ñтандарте каждый компонент " -"Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð¿Ð¸ÑываетÑÑ 8 битами, так что значение Ñтого Ñ‚Ñга равно 9. См. " -"также . Ð’ данных, Ñжатых по алгоритму JPEG, вмеÑто Ñтого " -"Ñ‚Ñга иÑпользуетÑÑ Ð¼Ð°Ñ€ÐºÐµÑ€." - -#: src/tags.cpp:431 -msgid "" -"The compression scheme used for the image data. When a primary image is JPEG " -"compressed, this designation is not necessary and is omitted. When " -"thumbnails use JPEG compression, this tag value is set to 6." -msgstr "" -"Схема ÑжатиÑ, иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… Ñтого изображениÑ. Когда оÑновное " -"изображение Ñжато по алгоритму JPEG , Ñто обозначение не ÑвлÑетÑÑ " -"обÑзательным и опуÑкаетÑÑ. Когда миниатюры иÑпользуют JPEG-Ñжатие, значение " -"Ñтого Ñ‚Ñга равно 6." - -#: src/tags.cpp:437 -msgid "" -"The pixel composition. In JPEG compressed data a JPEG marker is used instead " -"of this tag." -msgstr "" -"Компоновка пикÑелов. ЕÑли данные Ñжаты по алгоритму JPEG, вмеÑто Ñтого Ñ‚Ñга " -"иÑпользуетÑÑ JPEG-маркер." - -#: src/tags.cpp:440 -msgid "Threshholding" -msgstr "" - -#: src/tags.cpp:441 -msgid "" -"For black and white TIFF files that represent shades of gray, the technique " -"used to convert from gray to black and white pixels." -msgstr "" - -#: src/tags.cpp:444 -#, fuzzy -msgid "Cell Width" -msgstr "Ширина изображениÑ" - -#: src/tags.cpp:445 -msgid "" -"The width of the dithering or halftoning matrix used to create a dithered or " -"halftoned bilevel file." -msgstr "" - -#: src/tags.cpp:448 -#, fuzzy -msgid "Cell Length" -msgstr "Длина изображениÑ" - -#: src/tags.cpp:449 -msgid "" -"The length of the dithering or halftoning matrix used to create a dithered " -"or halftoned bilevel file." -msgstr "" - -#: src/tags.cpp:452 -msgid "Fill Order" -msgstr "ПорÑдок заполнениÑ" - -#: src/tags.cpp:453 -msgid "The logical order of bits within a byte" -msgstr "" - -#: src/tags.cpp:455 -msgid "Document Name" -msgstr "Ð˜Ð¼Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°" - -#: src/tags.cpp:456 -msgid "The name of the document from which this image was scanned" -msgstr "Ðазвание отÑканированного документа" - -#: src/tags.cpp:459 -msgid "" -"A character string giving the title of the image. It may be a comment such " -"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " -"used. When a 2-bytes code is necessary, the Exif Private tag " -"is to be used." -msgstr "" -"ТекÑÑ‚Ð¾Ð²Ð°Ñ Ñтрока, в которой даетÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ изображению. Это может быть " -"комментарий вроде Â«ÐšÐ¾Ñ€Ð¿Ð¾Ñ€Ð°Ñ‚Ð¸Ð²Ð½Ð°Ñ Ñ‚ÑƒÑовка 1988» или что-то наподобие. " -"Ð”Ð²ÑƒÑ…Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð°Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ° Ñимволов не может быть иÑпользована. ЕÑли она вÑÑ‘ же " -"необходима, должен быть иÑпользован чаÑтный тег Exif ." - -#: src/tags.cpp:466 -msgid "" -"The manufacturer of the recording equipment. This is the manufacturer of the " -"DSC, scanner, video digitizer or other equipment that generated the image. " -"When the field is left blank, it is treated as unknown." -msgstr "" -"Производитель запиÑывающего оборудованиÑ. Это изготовитель цифровой " -"фотокамеры, Ñканера, видеодигитайзера или любого другого оборудованиÑ, " -"которое иÑпользовалоÑÑŒ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñтого изображениÑ. ЕÑли поле не " -"заполнено, производитель ÑчитаетÑÑ Ð½ÐµÐ¸Ð·Ð²ÐµÑтным." - -#: src/tags.cpp:472 -msgid "" -"The model name or model number of the equipment. This is the model name or " -"number of the DSC, scanner, video digitizer or other equipment that " -"generated the image. When the field is left blank, it is treated as unknown." -msgstr "" -"Ð˜Ð¼Ñ Ð¸Ð»Ð¸ номер модели иÑпользованного оборудованиÑ. Это Ð¸Ð¼Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸ или номер " -"цифровой камеры (DSC), Ñканера, видеодигитайзера или любого другого " -"оборудованиÑ, которое иÑпользовалоÑÑŒ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñтого изображениÑ. ЕÑли " -"поле не заполнено, оборудование ÑчитаетÑÑ Ð½ÐµÐ¸Ð·Ð²ÐµÑтным." - -#: src/tags.cpp:478 -msgid "" -"For each strip, the byte offset of that strip. It is recommended that this " -"be selected so the number of strip bytes does not exceed 64 Kbytes. With " -"JPEG compressed data this designation is not needed and is omitted. See also " -" and ." -msgstr "" - -#: src/tags.cpp:485 -msgid "The image orientation viewed in terms of rows and columns." -msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ, раÑÑÐ¼Ð°Ñ‚Ñ€Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ Ð² терминах Ñтрок и Ñтолбцов." - -#: src/tags.cpp:487 -msgid "Samples per Pixel" -msgstr "СÑмплов на пикÑел" - -#: src/tags.cpp:488 -msgid "" -"The number of components per pixel. Since this standard applies to RGB and " -"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " -"JPEG marker is used instead of this tag." -msgstr "" -"КоличеÑтво компонентов на один пикÑел. ПоÑкольку Ñтандарт применÑетÑÑ Ðº " -"изображениÑм в цветовых проÑтранÑтвах RGB и YCbCr, значение Ñтого Ñ‚Ñга равно " -"3. ЕÑли данные Ñжаты по алгоритму JPEG, вмеÑто Ñтого Ñ‚Ñга иÑпользуетÑÑ JPEG-" -"маркер." - -#: src/tags.cpp:492 -msgid "Rows per Strip" -msgstr "" - -#: src/tags.cpp:493 -msgid "" -"The number of rows per strip. This is the number of rows in the image of one " -"strip when an image is divided into strips. With JPEG compressed data this " -"designation is not needed and is omitted. See also and " -"." -msgstr "" - -#: src/tags.cpp:498 -#, fuzzy -msgid "Strip Byte Count" -msgstr "Выдержка" - -#: src/tags.cpp:499 -msgid "" -"The total number of bytes in each strip. With JPEG compressed data this " -"designation is not needed and is omitted." -msgstr "" - -#: src/tags.cpp:502 -msgid "X-Resolution" -msgstr "Разрешение по X" - -#: src/tags.cpp:503 -msgid "" -"The number of pixels per in the direction. " -"When the image resolution is unknown, 72 [dpi] is designated." -msgstr "" -"КоличеÑтво пикÑелов на в направлении . ЕÑли " -"разрешение не указано, оно принимаетÑÑ Ð·Ð° 72 точки на дюйм." - -#: src/tags.cpp:506 -msgid "Y-Resolution" -msgstr "Разрешение по Y" - -#: src/tags.cpp:507 -msgid "" -"The number of pixels per in the direction. " -"The same value as is designated." -msgstr "" -"КоличеÑтво пикÑелов на в направлении . " -"ОÑтальное аналогично ." - -#: src/tags.cpp:511 -msgid "" -"Indicates whether pixel components are recorded in a chunky or planar " -"format. In JPEG compressed files a JPEG marker is used instead of this tag. " -"If this field does not exist, the TIFF default of 1 (chunky) is assumed." -msgstr "" - -#: src/tags.cpp:516 -#, fuzzy -msgid "Gray Response Unit" -msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" - -#: src/tags.cpp:517 -msgid "The precision of the information contained in the GrayResponseCurve." -msgstr "" - -#: src/tags.cpp:519 -#, fuzzy -msgid "Gray Response Curve" -msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ñ‚Ð¾Ð½ÐºÐ¾Ñ€Ñ€ÐµÐºÑ†Ð¸Ð¸" - -#: src/tags.cpp:520 -msgid "For grayscale data, the optical density of each possible pixel value." -msgstr "" - -#: src/tags.cpp:522 -#, fuzzy -msgid "T4 Options" -msgstr "Параметр" - -#: src/tags.cpp:523 -msgid "T.4-encoding options." -msgstr "" - -#: src/tags.cpp:525 -#, fuzzy -msgid "T6 Options" -msgstr "Параметр" - -#: src/tags.cpp:526 -msgid "T.6-encoding options." -msgstr "" - -#: src/tags.cpp:529 -msgid "" -"The unit for measuring and . The same unit is " -"used for both and . If the image resolution is " -"unknown, 2 (inches) is designated." -msgstr "" -"Единица Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð¸ . Та же ÑÐ°Ð¼Ð°Ñ ÐµÐ´Ð¸Ð½Ð¸Ñ†Ð° " -"иÑпользуетÑÑ ÐºÐ°Ðº Ð´Ð»Ñ , так и Ð´Ð»Ñ . ЕÑли разрешение " -"Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑтно, оно принимаетÑÑ Ð·Ð° 2 (дюйма)." - -#: src/tags.cpp:534 -msgid "" -"A transfer function for the image, described in tabular style. Normally this " -"tag is not necessary, since color space is specified in the color space " -"information tag ()." -msgstr "" -"Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸ Ð´Ð»Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ, опиÑÐ°Ð½Ð½Ð°Ñ Ð² виде таблицы. Обычно Ñтот Ñ‚Ñг " -"не ÑвлÑетÑÑ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ñ‹Ð¼, поÑкольку цветовое проÑтранÑтво уже указано в Ñ‚Ñге " -"." - -#: src/tags.cpp:539 -msgid "" -"This tag records the name and version of the software or firmware of the " -"camera or image input device used to generate the image. The detailed format " -"is not specified, but it is recommended that the example shown below be " -"followed. When the field is left blank, it is treated as unknown." -msgstr "" -"Ð’ Ñтом Ñ‚Ñге запиÑываетÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ и верÑÐ¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð¾Ð³Ð¾ обеÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ " -"прошивки камеры либо уÑтройÑтва ввода изображениÑ, иÑпользованного Ð´Ð»Ñ " -"ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñтого изображениÑ. Подробный Ñтандарт не Ñпецифицирован, однако " -"рекомендуетÑÑ Ñледовать приведённому ниже примеру. Когда поле оÑтавлено " -"пуÑтым, значение принимаетÑÑ Ð·Ð° неизвеÑтное." - -#: src/tags.cpp:546 -msgid "" -"The date and time of image creation. In Exif standard, it is the date and " -"time the file was changed." -msgstr "" -"Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ. Ð’ текущей верÑии Ñтандарта Exif Ñто дата " -"и Ð²Ñ€ÐµÐ¼Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°." - -#: src/tags.cpp:550 -msgid "" -"This tag records the name of the camera owner, photographer or image " -"creator. The detailed format is not specified, but it is recommended that " -"the information be written as in the example below for ease of " -"Interoperability. When the field is left blank, it is treated as unknown. " -"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " -"Ken James\"" -msgstr "" -"Ð’ Ñтом теге запиÑываетÑÑ Ð¸Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð° камеры, фотографа или ÑÐ¾Ð·Ð´Ð°Ñ‚ÐµÐ»Ñ " -"изображениÑ. Подробный Ñтандарт не Ñпецифицирован, однако рекомендуетÑÑ " -"Ñледовать приведённому ниже примеру. Когда поле оÑтавлено пуÑтым, значение " -"принимаетÑÑ Ð·Ð° неизвеÑтное." - -#: src/tags.cpp:557 -msgid "Host Computer" -msgstr "" - -#: src/tags.cpp:558 -msgid "" -"This tag records information about the host computer used to generate the " -"image." -msgstr "" - -#: src/tags.cpp:561 -#, fuzzy -msgid "Predictor" -msgstr "Создатель" - -#: src/tags.cpp:562 -msgid "" -"A predictor is a mathematical operator that is applied to the image data " -"before an encoding scheme is applied." -msgstr "" - -#: src/tags.cpp:566 -msgid "" -"The chromaticity of the white point of the image. Normally this tag is not " -"necessary, since color space is specified in the colorspace information tag " -"()." -msgstr "" -"ХроматичноÑÑ‚ÑŒ белой точки изображениÑ. Обычно Ñтот тег не ÑвлÑетÑÑ " -"необходимым, поÑкольку цветовое проÑтранÑтво уже указано в теге ." - -#: src/tags.cpp:571 -#, fuzzy -msgid "" -"The chromaticity of the three primary colors of the image. Normally this tag " -"is not necessary, since colorspace is specified in the colorspace " -"information tag ()." -msgstr "" -"ХроматичноÑÑ‚ÑŒ белой точки изображениÑ. Обычно Ñтот тег не ÑвлÑетÑÑ " -"необходимым, поÑкольку цветовое проÑтранÑтво уже указано в теге ." - -#: src/tags.cpp:575 -#, fuzzy -msgid "Color Map" -msgstr "Цветовое проÑтранÑтво" - -#: src/tags.cpp:576 -msgid "" -"A color map for palette color images. This field defines a Red-Green-Blue " -"color map (often called a lookup table) for palette-color images. In a " -"palette-color image, a pixel value is used to index into an RGB lookup table." -msgstr "" - -#: src/tags.cpp:581 -msgid "Halftone Hints" -msgstr "" - -#: src/tags.cpp:582 -msgid "" -"The purpose of the HalftoneHints field is to convey to the halftone function " -"the range of gray levels within a colorimetrically-specified image that " -"should retain tonal detail." -msgstr "" - -#: src/tags.cpp:586 -#, fuzzy -msgid "Tile Width" -msgstr "Ширина изображениÑ" - -#: src/tags.cpp:587 -msgid "The tile width in pixels. This is the number of columns in each tile." -msgstr "" - -#: src/tags.cpp:589 -#, fuzzy -msgid "Tile Length" -msgstr "Длина изображениÑ" - -#: src/tags.cpp:590 -msgid "" -"The tile length (height) in pixels. This is the number of rows in each tile." -msgstr "" - -#: src/tags.cpp:592 -#, fuzzy -msgid "Tile Offsets" -msgstr "Режим захвата" - -#: src/tags.cpp:593 -msgid "" -"For each tile, the byte offset of that tile, as compressed and stored on " -"disk. The offset is specified with respect to the beginning of the TIFF " -"file. Note that this implies that each tile has a location independent of " -"the locations of other tiles." -msgstr "" - -#: src/tags.cpp:598 -#, fuzzy -msgid "Tile Byte Counts" -msgstr "Выдержка" - -#: src/tags.cpp:599 -msgid "" -"For each tile, the number of (compressed) bytes in that tile. See " -"TileOffsets for a description of how the byte counts are ordered." -msgstr "" - -#: src/tags.cpp:602 -#, fuzzy -msgid "SubIFD Offsets" -msgstr "Режим захвата" - -#: src/tags.cpp:603 -msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." -msgstr "Определено Adobe Corporation Ð´Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ TIFF Trees в файлах TIFF." - -#: src/tags.cpp:605 -#, fuzzy -msgid "Ink Set" -msgstr "УÑтановить" - -#: src/tags.cpp:606 -msgid "" -"The set of inks used in a separated (PhotometricInterpretation=5) image." -msgstr "" - -#: src/tags.cpp:608 -#, fuzzy -msgid "Ink Names" -msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" - -#: src/tags.cpp:609 -msgid "" -"The name of each ink used in a separated (PhotometricInterpretation=5) image." -msgstr "" - -#: src/tags.cpp:611 -#, fuzzy -msgid "Number Of Inks" -msgstr "ЧиÑло F" - -#: src/tags.cpp:612 -msgid "" -"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " -"samples." -msgstr "" - -#: src/tags.cpp:614 -#, fuzzy -msgid "Dot Range" -msgstr "ДинамичеÑкий диапазон" - -#: src/tags.cpp:615 -#, c-format -msgid "The component values that correspond to a 0% dot and 100% dot." -msgstr "" - -#: src/tags.cpp:617 -#, fuzzy -msgid "Target Printer" -msgstr "Диафрагма" - -#: src/tags.cpp:618 -msgid "" -"A description of the printing environment for which this separation is " -"intended." -msgstr "" - -#: src/tags.cpp:620 -#, fuzzy -msgid "Extra Samples" -msgstr "Битов на ÑÑмпл" - -#: src/tags.cpp:621 -msgid "" -"Specifies that each pixel has m extra components whose interpretation is " -"defined by one of the values listed below." -msgstr "" - -#: src/tags.cpp:624 -#, fuzzy -msgid "Sample Format" -msgstr "Формат файла" - -#: src/tags.cpp:625 -msgid "This field specifies how to interpret each data sample in a pixel." -msgstr "" - -#: src/tags.cpp:627 -#, fuzzy -msgid "SMin Sample Value" -msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" - -#: src/tags.cpp:628 -msgid "This field specifies the minimum sample value." -msgstr "" - -#: src/tags.cpp:630 -#, fuzzy -msgid "SMax Sample Value" -msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" - -#: src/tags.cpp:631 -msgid "This field specifies the maximum sample value." -msgstr "" - -#: src/tags.cpp:633 -msgid "Transfer Range" -msgstr "ОблаÑÑ‚ÑŒ передачи" - -#: src/tags.cpp:634 -msgid "Expands the range of the TransferFunction" -msgstr "" - -#: src/tags.cpp:636 -msgid "Clip Path" -msgstr "" - -#: src/tags.cpp:637 -msgid "" -"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " -"creation functionality." -msgstr "" - -#: src/tags.cpp:640 -msgid "X Clip Path Units" -msgstr "" - -#: src/tags.cpp:641 -msgid "" -"The number of units that span the width of the image, in terms of integer " -"ClipPath coordinates." -msgstr "" - -#: src/tags.cpp:644 -msgid "Y Clip Path Units" -msgstr "" - -#: src/tags.cpp:645 -msgid "" -"The number of units that span the height of the image, in terms of integer " -"ClipPath coordinates." -msgstr "" - -#: src/tags.cpp:649 -msgid "" -"Indexed images are images where the 'pixels' do not represent color values, " -"but rather an index (usually 8-bit) into a separate color table, the " -"ColorMap." -msgstr "" - -#: src/tags.cpp:653 -#, fuzzy -msgid "JPEG tables" -msgstr "Сжатие JPEG" - -#: src/tags.cpp:654 -msgid "" -"This optional tag may be used to encode the JPEG quantization andHuffman " -"tables for subsequent use by the JPEG decompression process." -msgstr "" - -#: src/tags.cpp:657 -msgid "OPI Proxy" -msgstr "" - -#: src/tags.cpp:658 -msgid "" -"OPIProxy gives information concerning whether this image is a low-resolution " -"proxy of a high-resolution image (Adobe OPI)." -msgstr "" - -#: src/tags.cpp:661 -#, fuzzy -msgid "JPEG Process" -msgstr "Сжатие JPEG" - -#: src/tags.cpp:662 -msgid "This field indicates the process used to produce the compressed data" -msgstr "" - -#: src/tags.cpp:664 -msgid "JPEG Interchange Format" -msgstr "Формат обмена данными JPEG" - -#: src/tags.cpp:665 -msgid "" -"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " -"is not used for primary image JPEG data." -msgstr "" - -#: src/tags.cpp:668 -#, fuzzy -msgid "JPEG Interchange Format Length" -msgstr "Формат обмена данными JPEG" - -#: src/tags.cpp:669 -msgid "" -"The number of bytes of JPEG compressed thumbnail data. This is not used for " -"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " -"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " -"be recorded. Compressed thumbnails must be recorded in no more than 64 " -"Kbytes, including all other data to be recorded in APP1." -msgstr "" - -#: src/tags.cpp:676 -msgid "JPEG Restart Interval" -msgstr "" - -#: src/tags.cpp:677 -#, fuzzy -msgid "" -"This Field indicates the length of the restart interval used in the " -"compressed image data." -msgstr "" -"Этот Ñ‚Ñг отображает направление обработки резкоÑти при Ñъёмке изображениÑ" - -#: src/tags.cpp:680 -msgid "JPEG Lossless Predictors" -msgstr "" - -#: src/tags.cpp:681 -msgid "" -"This Field points to a list of lossless predictor-selection values, one per " -"component." -msgstr "" - -#: src/tags.cpp:684 -msgid "JPEG Point Transforms" -msgstr "" - -#: src/tags.cpp:685 -msgid "" -"This Field points to a list of point transform values, one per component." -msgstr "" - -#: src/tags.cpp:687 -#, fuzzy -msgid "JPEG Q-Tables" -msgstr "Сжатие JPEG" - -#: src/tags.cpp:688 -msgid "" -"This Field points to a list of offsets to the quantization tables, one per " -"component." -msgstr "" - -#: src/tags.cpp:691 -#, fuzzy -msgid "JPEG DC-Tables" -msgstr "Сжатие JPEG" - -#: src/tags.cpp:692 -msgid "" -"This Field points to a list of offsets to the DC Huffman tables or the " -"lossless Huffman tables, one per component." -msgstr "" - -#: src/tags.cpp:695 -#, fuzzy -msgid "JPEG AC-Tables" -msgstr "Сжатие JPEG" - -#: src/tags.cpp:696 -msgid "" -"This Field points to a list of offsets to the Huffman AC tables, one per " -"component." -msgstr "" - -#: src/tags.cpp:700 -msgid "" -"The matrix coefficients for transformation from RGB to YCbCr image data. No " -"default is given in TIFF; but here the value given in Appendix E, \"Color " -"Space Guidelines\", is used as the default. The color space is declared in a " -"color space information tag, with the default being the value that gives the " -"optimal image characteristics Interoperability this condition." -msgstr "" -"КоÑффициенты матрицы Ð´Ð»Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð¸Ñ…Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð· RGB в YCbCr. Ð’ " -"TIFF нет значений по умолчанию, но указанные в Приложении E, \"Color Space " -"Guidelines\" Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸ÑпользуютÑÑ ÐºÐ°Ðº таковые. Цветовое проÑтранÑтво " -"объÑвленов Ñ‚Ñге информации о цветовом проÑтранÑтве, причём по умолчанию " -"иÑпользуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ, которое обеÑпечивает оптимальные характериÑтики " -"ÑовмеÑтимоÑти." - -#: src/tags.cpp:708 -msgid "YCbCr Sub-Sampling" -msgstr "СубÑÑмплинг YCbCr" - -#: src/tags.cpp:709 -#, fuzzy -msgid "" -"The sampling ratio of chrominance components in relation to the luminance " -"component. In JPEG compressed data a JPEG marker is used instead of this tag." -msgstr "" -"Компоновка пикÑелов. ЕÑли данные Ñжаты по алгоритму JPEG, вмеÑто Ñтого Ñ‚Ñга " -"иÑпользуетÑÑ JPEG-маркер." - -#: src/tags.cpp:714 -msgid "" -"The position of chrominance components in relation to the luminance " -"component. This field is designated only for JPEG compressed data or " -"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " -"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " -"record data, in order to improve the image quality when viewed on TV " -"systems. When this field does not exist, the reader shall assume the TIFF " -"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " -"recommended. If the reader does not have the capability of supporting both " -"kinds of , it shall follow the TIFF default regardless of " -"the value in this field. It is preferable that readers be able to support " -"both centered and co-sited positioning." -msgstr "" -"ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ð¾Ð² цветноÑти по отношению к компоненту ÑркоÑти. Это поле " -"предназначено только Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…, Ñжатых по алгоритму JPEG, а также Ð´Ð»Ñ " -"неÑжатых данных YCbCr data. ИÑходное значение Ð´Ð»Ñ TIFF равно 1 (по центру); " -"но когда Y:Cb:Cr = 4:2:2, Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи данных рекомендуетÑÑ Ð¸Ñпользовать 2 (по " -"бокам), чтобы улучшить качеÑтво Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ проÑмотре через ТВ. ЕÑли Ñто " -"поле отÑутÑтвует, ÑÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°ÑŽÑ‰Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð° иÑпользует иÑходное значение Ð´Ð»Ñ " -"TIFF. Когда Y:Cb:Cr = 4:2:0, рекомендуетÑÑ Ð¸Ñходное значение Ð´Ð»Ñ TIFF (по " -"центру). ЕÑли ÑÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°ÑŽÑ‰Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð° не поддерживает оба вида " -", она иÑпользует иÑходное значение Ð´Ð»Ñ TIFF вне " -"завиÑимоÑти от того, какое значение запиÑано в поле на Ñамом деле. " -"Предпочтительнее, когда ÑÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°ÑŽÑ‰Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð° поддерживает оба типа " -"позиционированиÑ." - -#: src/tags.cpp:728 -msgid "Reference Black/White" -msgstr "Эталонный Чёрный/Белый" - -#: src/tags.cpp:729 -msgid "" -"The reference black point value and reference white point value. No defaults " -"are given in TIFF, but the values below are given as defaults here. The " -"color space is declared in a color space information tag, with the default " -"being the value that gives the optimal image characteristics " -"Interoperability these conditions." -msgstr "" -"Эталонное значение чёрной и белой точек. Ð’ TIFF нет значений по умолчанию, " -"но указанные ниже Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸ÑпользуютÑÑ ÐºÐ°Ðº таковые. Цветовое проÑтранÑтво " -"объÑвлено в поле информации о цветовом проÑтранÑтве, причём по умолчанию " -"иÑпользуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ, которое обеÑпечивает оптимальные характериÑтики " -"ÑовмеÑтимоÑти." - -#: src/tags.cpp:736 -msgid "XML Packet" -msgstr "XML-пакет" - -#: src/tags.cpp:737 -msgid "XMP Metadata (Adobe technote 9-14-02)" -msgstr "Метаданные XMP (Adobe technote 9-14-02)" - -#: src/tags.cpp:739 -msgid "Windows Rating" -msgstr "Оценка в Windows" - -#: src/tags.cpp:740 -msgid "Rating tag used by Windows" -msgstr "Поле оценки, иÑпользуемое Windows" - -#: src/tags.cpp:742 -msgid "Windows Rating Percent" -msgstr "ÐŸÑ€Ð¾Ñ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð¾Ñ†ÐµÐ½ÐºÐ° в Windows" - -#: src/tags.cpp:743 -msgid "Rating tag used by Windows, value in percent" -msgstr "Поле оценки, иÑпользуемое Windows, процентное значение" - -#: src/tags.cpp:745 -#, fuzzy -msgid "Image ID" -msgstr "Уникальный ID изображениÑ" - -#: src/tags.cpp:746 -msgid "" -"ImageID is the full pathname of the original, high-resolution image, or any " -"other identifying string that uniquely identifies the original image (Adobe " -"OPI)." -msgstr "" - -#: src/tags.cpp:750 -msgid "CFA Repeat Pattern Dimension" -msgstr "" - -#: src/tags.cpp:751 -msgid "" -"Contains two values representing the minimum rows and columns to define the " -"repeating patterns of the color filter array" -msgstr "" - -#: src/tags.cpp:755 -msgid "" -"Indicates the color filter array (CFA) geometric pattern of the image sensor " -"when a one-chip color area sensor is used. It does not apply to all sensing " -"methods" -msgstr "" - -#: src/tags.cpp:763 -msgid "" -"Copyright information. In this standard the tag is used to indicate both the " -"photographer and editor copyrights. It is the copyright notice of the person " -"or organization claiming rights to the image. The Interoperability copyright " -"statement including date and rights should be written in this field; e.g., " -"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " -"field records both the photographer and editor copyrights, with each " -"recorded in a separate part of the statement. When there is a clear " -"distinction between the photographer and editor copyrights, these are to be " -"written in the order of photographer followed by editor copyright, separated " -"by NULL (in this case since the statement also ends with a NULL, there are " -"two NULL codes). When only the photographer copyright is given, it is " -"terminated by one NULL code . When only the editor copyright is given, the " -"photographer copyright part consists of one space followed by a terminating " -"NULL code, then the editor copyright is given. When the field is left blank, " -"it is treated as unknown." -msgstr "" - -#: src/tags.cpp:782 -#, fuzzy -msgid "Exposure time, given in seconds." -msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции в Ñекундах" - -#: src/tags.cpp:783 src/tags.cpp:1546 -msgid "The F number." -msgstr "ЧиÑло F" - -#: src/tags.cpp:784 -msgid "IPTC/NAA" -msgstr "IPTC/NAA" - -#: src/tags.cpp:785 -msgid "Contains an IPTC/NAA record" -msgstr "Содержит запиÑÑŒ IPTC/NAA" - -#: src/tags.cpp:787 -msgid "Image Resources Block" -msgstr "" - -#: src/tags.cpp:788 -msgid "Contains information embedded by the Adobe Photoshop application" -msgstr "" - -#: src/tags.cpp:791 -msgid "" -"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " -"as that of the IFD specified in TIFF. ordinarily, however, it does not " -"contain image data as in the case of TIFF." -msgstr "" - -#: src/tags.cpp:796 -#, fuzzy -msgid "Inter Color Profile" -msgstr "Цветовое проÑтранÑтво" - -#: src/tags.cpp:797 -msgid "" -"Contains an InterColor Consortium (ICC) format color space characterization/" -"profile" -msgstr "" - -#: src/tags.cpp:799 src/tags.cpp:1549 -msgid "" -"The class of the program used by the camera to set exposure when the picture " -"is taken." -msgstr "" -"КлаÑÑ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹, иÑпользованной камерой Ð´Ð»Ñ ÑƒÑтановки ÑкÑпозиции при Ñъёмке." - -#: src/tags.cpp:800 -#, fuzzy -msgid "Indicates the spectral sensitivity of each channel of the camera used." -msgstr "Этот Ñ‚Ñг отображает режим баланÑа белого при Ñъёмке изображениÑ." - -#: src/tags.cpp:802 -msgid "" -"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " -"Info IFD, like that of Exif IFD, has no image data." -msgstr "" - -#: src/tags.cpp:806 src/tags.cpp:1557 -#, fuzzy -msgid "ISO Speed Ratings" -msgstr "ÐаÑтройка резкоÑти" - -#: src/tags.cpp:806 src/tags.cpp:1558 -msgid "" -"Indicates the ISO Speed and ISO Latitude of the camera or input device as " -"specified in ISO 12232." -msgstr "" - -#: src/tags.cpp:807 -msgid "" -"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " -"14524." -msgstr "" - -#: src/tags.cpp:808 -#, fuzzy -msgid "Interlace" -msgstr "Intel" - -#: src/tags.cpp:808 -#, fuzzy -msgid "Indicates the field number of multifield images." -msgstr "Показывает макет изображениÑ" - -#: src/tags.cpp:809 -#, fuzzy -msgid "Time Zone Offset" -msgstr "Режим захвата" - -#: src/tags.cpp:810 -msgid "" -"This optional tag encodes the time zone of the camera clock (relativeto " -"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " -"picture was taken. It may also contain the time zone offsetof the clock used " -"to create the DateTime tag-value when the image wasmodified." -msgstr "" - -#: src/tags.cpp:816 -#, fuzzy -msgid "Self Timer Mode" -msgstr "Серийный номер" - -#: src/tags.cpp:816 -msgid "Number of seconds image capture was delayed from button press." -msgstr "" - -#: src/tags.cpp:817 -#, fuzzy -msgid "Date Time Original" -msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð´Ð°Ñ‚Ð° и времÑ" - -#: src/tags.cpp:817 -#, fuzzy -msgid "The date and time when the original image data was generated." -msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" - -#: src/tags.cpp:818 -#, fuzzy -msgid "Specific to compressed data; states the compressed bits per pixel." -msgstr "" -"Ð¡Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð°Ñ Ð´Ð»Ñ Ñжатых данных информациÑ. ИÑпользованный режим ÑÐ¶Ð°Ñ‚Ð¸Ñ Ð´Ð»Ñ " -"Ñжатого Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ÑÑ Ð² единице Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ \"битов на пикÑел\"" - -#: src/tags.cpp:819 -#, fuzzy -msgid "Shutter speed." -msgstr "СкороÑÑ‚ÑŒ ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" - -#: src/tags.cpp:820 -#, fuzzy -msgid "The lens aperture." -msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" - -#: src/tags.cpp:821 -#, fuzzy -msgid "The value of brightness." -msgstr "ЧиÑло F" - -#: src/tags.cpp:822 -#, fuzzy -msgid "The exposure bias." -msgstr "Смещение ÑкÑпозиции" - -#: src/tags.cpp:823 src/tags.cpp:1638 -#, fuzzy -msgid "Max Aperture Value" -msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" - -#: src/tags.cpp:823 -#, fuzzy -msgid "The smallest F number of the lens." -msgstr "Вид иÑточника Ñвета" - -#: src/tags.cpp:824 src/tags.cpp:1644 -msgid "The distance to the subject, given in meters." -msgstr "РаÑÑтоÑние до объекта в метрах" - -#: src/tags.cpp:825 src/tags.cpp:1647 -msgid "The metering mode." -msgstr "Режим замера" - -#: src/tags.cpp:826 src/tags.cpp:1650 -msgid "The kind of light source." -msgstr "Вид иÑточника Ñвета" - -#: src/tags.cpp:827 -#, fuzzy -msgid "Indicates the status of flash when the image was shot." -msgstr "Этот Ñ‚Ñг отображает режим баланÑа белого при Ñъёмке изображениÑ." - -#: src/tags.cpp:828 -msgid "The actual focal length of the lens, in mm." -msgstr "" - -#: src/tags.cpp:829 -msgid "Amount of flash energy (BCPS)." -msgstr "" - -#: src/tags.cpp:830 -msgid "SFR of the camera." -msgstr "" - -#: src/tags.cpp:831 -#, fuzzy -msgid "Noise" -msgstr "Ðичего" - -#: src/tags.cpp:831 -msgid "Noise measurement values." -msgstr "" - -#: src/tags.cpp:832 -#, fuzzy -msgid "" -"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " -"direction for main image." -msgstr "" -"КоличеÑтво пикÑелов на в направлении . " -"ОÑтальное аналогично ." - -#: src/tags.cpp:833 -#, fuzzy -msgid "" -"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " -"direction for main image." -msgstr "" -"КоличеÑтво пикÑелов на в направлении . " -"ОÑтальное аналогично ." - -#: src/tags.cpp:834 -msgid "" -"Unit of measurement for FocalPlaneXResolution(37390) and " -"FocalPlaneYResolution(37391)." -msgstr "" - -#: src/tags.cpp:835 -msgid "Number assigned to an image, e.g., in a chained image burst." -msgstr "" - -#: src/tags.cpp:836 -msgid "Security Classification" -msgstr "" - -#: src/tags.cpp:836 -msgid "Security classification assigned to the image." -msgstr "" - -#: src/tags.cpp:837 -msgid "Record of what has been done to the image." -msgstr "" - -#: src/tags.cpp:838 -#, fuzzy -msgid "" -"Indicates the location and area of the main subject in the overall scene." -msgstr "" -"Это поле хранит информацию о меÑтоположении и облаÑти объекта Ñъёмки во вÑей " -"Ñцене." - -#: src/tags.cpp:839 -msgid "Encodes the camera exposure index setting when image was captured." -msgstr "" - -#: src/tags.cpp:840 -msgid "TIFF/EP Standard ID" -msgstr "ID Ñтандарта TIFF/EP" - -#: src/tags.cpp:841 -msgid "" -"Contains four ASCII characters representing the TIFF/EP standard version of " -"a TIFF/EP file, eg '1', '0', '0', '0'" -msgstr "" - -#: src/tags.cpp:844 -#, fuzzy -msgid "Type of image sensor." -msgstr "Ðомер изображениÑ" - -#: src/tags.cpp:845 -msgid "Windows Title" -msgstr "Ðазвание (Windows)" - -#: src/tags.cpp:846 -msgid "Title tag used by Windows, encoded in UCS2" -msgstr "Поле названиÑ, иÑпользуемое в Windows, кодированное в UCS2" - -#: src/tags.cpp:848 -msgid "Windows Comment" -msgstr "Комментарий (Windows)" - -#: src/tags.cpp:849 -msgid "Comment tag used by Windows, encoded in UCS2" -msgstr "Поле комментариÑ, иÑпользуемое в Windows, кодированное в UCS2" - -#: src/tags.cpp:851 -msgid "Windows Author" -msgstr "Ðвтор (Windows)" - -#: src/tags.cpp:852 -msgid "Author tag used by Windows, encoded in UCS2" -msgstr "Поле автора, иÑпользуемое в Windows, кодированное в UCS2" - -#: src/tags.cpp:854 -msgid "Windows Keywords" -msgstr "Ключевые Ñлова (Windows)" - -#: src/tags.cpp:855 -msgid "Keywords tag used by Windows, encoded in UCS2" -msgstr "Поле ключевых Ñлов, иÑпользуемое в Windows, кодированное в UCS2" - -#: src/tags.cpp:857 -#, fuzzy -msgid "Windows Subject" -msgstr "ПользовательÑкий комментарий" - -#: src/tags.cpp:858 -#, fuzzy -msgid "Subject tag used by Windows, encoded in UCS2" -msgstr "Поле автора, иÑпользуемое в Windows, кодированное в UCS2" - -#: src/tags.cpp:860 -msgid "Print Image Matching" -msgstr "" - -#: src/tags.cpp:861 -msgid "Print Image Matching, description needed." -msgstr "" - -#: src/tags.cpp:863 -#, fuzzy -msgid "DNG version" -msgstr "ВерÑÐ¸Ñ PDF" - -#: src/tags.cpp:864 -msgid "" -"This tag encodes the DNG four-tier version number. For files compliant with " -"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " -"1, 1, 0, 0." -msgstr "" - -#: src/tags.cpp:868 -#, fuzzy -msgid "DNG backward version" -msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#: src/tags.cpp:869 -msgid "" -"This tag specifies the oldest version of the Digital Negative specification " -"for which a file is compatible. Readers shouldnot attempt to read a file if " -"this tag specifies a version number that is higher than the version number " -"of the specification the reader was based on. In addition to checking the " -"version tags, readers should, for all tags, check the types, counts, and " -"values, to verify it is able to correctly read the file." -msgstr "" - -#: src/tags.cpp:877 -#, fuzzy -msgid "Unique Camera Model" -msgstr "Модель камеры" - -#: src/tags.cpp:878 -msgid "" -"Defines a unique, non-localized name for the camera model that created the " -"image in the raw file. This name should include the manufacturer's name to " -"avoid conflicts, and should not be localized, even if the camera name itself " -"is localized for different markets (see LocalizedCameraModel). This string " -"may be used by reader software to index into per-model preferences and " -"replacement profiles." -msgstr "" - -#: src/tags.cpp:885 -#, fuzzy -msgid "Localized Camera Model" -msgstr "Модель камеры" - -#: src/tags.cpp:886 -msgid "" -"Similar to the UniqueCameraModel field, except the name can be localized for " -"different markets to match the localization of the camera name." -msgstr "" - -#: src/tags.cpp:890 -#, fuzzy -msgid "CFA Plane Color" -msgstr "Паттерн CFA" - -#: src/tags.cpp:891 -msgid "" -"Provides a mapping between the values in the CFAPattern tag and the plane " -"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." -msgstr "" - -#: src/tags.cpp:895 -msgid "CFA Layout" -msgstr "" - -#: src/tags.cpp:896 -msgid "Describes the spatial layout of the CFA." -msgstr "" - -#: src/tags.cpp:899 -msgid "" -"Describes a lookup table that maps stored values into linear values. This " -"tag is typically used to increase compression ratios by storing the raw data " -"in a non-linear, more visually uniform space with fewer total encoding " -"levels. If SamplesPerPixel is not equal to one, this single table applies to " -"all the samples for each pixel." -msgstr "" - -#: src/tags.cpp:905 -#, fuzzy -msgid "Black Level Repeat Dim" -msgstr "ЗарÑд батареи" - -#: src/tags.cpp:906 -msgid "Specifies repeat pattern size for the BlackLevel tag." -msgstr "" - -#: src/tags.cpp:909 -msgid "" -"Specifies the zero light (a.k.a. thermal black or black current) encoding " -"level, as a repeating pattern. The origin of this pattern is the top-left " -"corner of the ActiveArea rectangle. The values are stored in row-column-" -"sample scan order." -msgstr "" - -#: src/tags.cpp:914 -#, fuzzy -msgid "Black Level Delta H" -msgstr "ЗарÑд батареи" - -#: src/tags.cpp:915 -msgid "" -"If the zero light encoding level is a function of the image column, " -"BlackLevelDeltaH specifies the difference between the zero light encoding " -"level for each column and the baseline zero light encoding level. If " -"SamplesPerPixel is not equal to one, this single table applies to all the " -"samples for each pixel." -msgstr "" - -#: src/tags.cpp:921 -#, fuzzy -msgid "Black Level Delta V" -msgstr "ЗарÑд батареи" - -#: src/tags.cpp:922 -msgid "" -"If the zero light encoding level is a function of the image row, this tag " -"specifies the difference between the zero light encoding level for each row " -"and the baseline zero light encoding level. If SamplesPerPixel is not equal " -"to one, this single table applies to all the samples for each pixel." -msgstr "" - -#: src/tags.cpp:928 -#, fuzzy -msgid "White Level" -msgstr "ЗарÑд батареи" - -#: src/tags.cpp:929 -msgid "" -"This tag specifies the fully saturated encoding level for the raw sample " -"values. Saturation is caused either by the sensor itself becoming highly non-" -"linear in response, or by the camera's analog to digital converter clipping." -msgstr "" - -#: src/tags.cpp:934 -#, fuzzy -msgid "Default Scale" -msgstr "По умолчанию" - -#: src/tags.cpp:935 -msgid "" -"DefaultScale is required for cameras with non-square pixels. It specifies " -"the default scale factors for each direction to convert the image to square " -"pixels. Typically these factors are selected to approximately preserve total " -"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " -"as the Fujifilm SuperCCD, these two values should usually differ by a factor " -"of 2.0." -msgstr "" - -#: src/tags.cpp:942 -msgid "Default Crop Origin" -msgstr "" - -#: src/tags.cpp:943 -msgid "" -"Raw images often store extra pixels around the edges of the final image. " -"These extra pixels help prevent interpolation artifacts near the edges of " -"the final image. DefaultCropOrigin specifies the origin of the final image " -"area, in raw image coordinates (i.e., before the DefaultScale has been " -"applied), relative to the top-left corner of the ActiveArea rectangle." -msgstr "" - -#: src/tags.cpp:950 -#, fuzzy -msgid "Default Crop Size" -msgstr "По умолчанию" - -#: src/tags.cpp:951 -msgid "" -"Raw images often store extra pixels around the edges of the final image. " -"These extra pixels help prevent interpolation artifacts near the edges of " -"the final image. DefaultCropSize specifies the size of the final image area, " -"in raw image coordinates (i.e., before the DefaultScale has been applied)." -msgstr "" - -#: src/tags.cpp:957 -#, fuzzy -msgid "Color Matrix 1" -msgstr "Цветовое проÑтранÑтво" - -#: src/tags.cpp:958 -msgid "" -"ColorMatrix1 defines a transformation matrix that converts XYZ values to " -"reference camera native color space values, under the first calibration " -"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " -"tag is required for all non-monochrome DNG files." -msgstr "" - -#: src/tags.cpp:964 -#, fuzzy -msgid "Color Matrix 2" -msgstr "Цветовое проÑтранÑтво" - -#: src/tags.cpp:965 -msgid "" -"ColorMatrix2 defines a transformation matrix that converts XYZ values to " -"reference camera native color space values, under the second calibration " -"illuminant. The matrix values are stored in row scan order." -msgstr "" - -#: src/tags.cpp:970 -#, fuzzy -msgid "Camera Calibration 1" -msgstr "ÐаÑтройка контраÑта" - -#: src/tags.cpp:971 -msgid "" -"CameraClalibration1 defines a calibration matrix that transforms reference " -"camera native space values to individual camera native space values under " -"the first calibration illuminant. The matrix is stored in row scan order. " -"This matrix is stored separately from the matrix specified by the " -"ColorMatrix1 tag to allow raw converters to swap in replacement color " -"matrices based on UniqueCameraModel tag, while still taking advantage of any " -"per-individual camera calibration performed by the camera manufacturer." -msgstr "" - -#: src/tags.cpp:980 -#, fuzzy -msgid "Camera Calibration 2" -msgstr "ÐаÑтройка контраÑта" - -#: src/tags.cpp:981 -msgid "" -"CameraCalibration2 defines a calibration matrix that transforms reference " -"camera native space values to individual camera native space values under " -"the second calibration illuminant. The matrix is stored in row scan order. " -"This matrix is stored separately from the matrix specified by the " -"ColorMatrix2 tag to allow raw converters to swap in replacement color " -"matrices based on UniqueCameraModel tag, while still taking advantage of any " -"per-individual camera calibration performed by the camera manufacturer." -msgstr "" - -#: src/tags.cpp:990 -#, fuzzy -msgid "Reduction Matrix 1" -msgstr "Цветовое проÑтранÑтво" - -#: src/tags.cpp:991 -msgid "" -"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " -"first stage in converting color camera native space values to XYZ values, " -"under the first calibration illuminant. This tag may only be used if " -"ColorPlanes is greater than 3. The matrix is stored in row scan order." -msgstr "" - -#: src/tags.cpp:997 -#, fuzzy -msgid "Reduction Matrix 2" -msgstr "Цветовое проÑтранÑтво" - -#: src/tags.cpp:998 -msgid "" -"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " -"first stage in converting color camera native space values to XYZ values, " -"under the second calibration illuminant. This tag may only be used if " -"ColorPlanes is greater than 3. The matrix is stored in row scan order." -msgstr "" - -#: src/tags.cpp:1004 -#, fuzzy -msgid "Analog Balance" -msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" - -#: src/tags.cpp:1005 -msgid "" -"Normally the stored raw values are not white balanced, since any digital " -"white balancing will reduce the dynamic range of the final image if the user " -"decides to later adjust the white balance; however, if camera hardware is " -"capable of white balancing the color channels before the signal is " -"digitized, it can improve the dynamic range of the final image. " -"AnalogBalance defines the gain, either analog (recommended) or digital (not " -"recommended) that has been applied the stored raw values." -msgstr "" - -#: src/tags.cpp:1014 -#, fuzzy -msgid "As Shot Neutral" -msgstr "внешнÑÑ" - -#: src/tags.cpp:1015 -msgid "" -"Specifies the selected white balance at time of capture, encoded as the " -"coordinates of a perfectly neutral color in linear reference space values. " -"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." -msgstr "" - -#: src/tags.cpp:1020 -msgid "As Shot White XY" -msgstr "" - -#: src/tags.cpp:1021 -msgid "" -"Specifies the selected white balance at time of capture, encoded as x-y " -"chromaticity coordinates. The inclusion of this tag precludes the inclusion " -"of the AsShotNeutral tag." -msgstr "" - -#: src/tags.cpp:1025 -#, fuzzy -msgid "Baseline Exposure" -msgstr "Режим ÑкÑпозиции" - -#: src/tags.cpp:1026 -msgid "" -"Camera models vary in the trade-off they make between highlight headroom and " -"shadow noise. Some leave a significant amount of highlight headroom during a " -"normal exposure. This allows significant negative exposure compensation to " -"be applied during raw conversion, but also means normal exposures will " -"contain more shadow noise. Other models leave less headroom during normal " -"exposures. This allows for less negative exposure compensation, but results " -"in lower shadow noise for normal exposures. Because of these differences, a " -"raw converter needs to vary the zero point of its exposure compensation " -"control from model to model. BaselineExposure specifies by how much (in EV " -"units) to move the zero point. Positive values result in brighter default " -"results, while negative values result in darker default results." -msgstr "" - -#: src/tags.cpp:1040 -#, fuzzy -msgid "Baseline Noise" -msgstr "Режим ÑкÑпозиции" - -#: src/tags.cpp:1041 -msgid "" -"Specifies the relative noise level of the camera model at a baseline ISO " -"value of 100, compared to a reference camera model. Since noise levels tend " -"to vary approximately with the square root of the ISO value, a raw converter " -"can use this value, combined with the current ISO, to estimate the relative " -"noise level of the current image." -msgstr "" - -#: src/tags.cpp:1047 -#, fuzzy -msgid "Baseline Sharpness" -msgstr "РезкоÑÑ‚ÑŒ" - -#: src/tags.cpp:1048 -msgid "" -"Specifies the relative amount of sharpening required for this camera model, " -"compared to a reference camera model. Camera models vary in the strengths of " -"their anti-aliasing filters. Cameras with weak or no filters require less " -"sharpening than cameras with strong anti-aliasing filters." -msgstr "" - -#: src/tags.cpp:1054 -msgid "Bayer Green Split" -msgstr "" - -#: src/tags.cpp:1055 -msgid "" -"Only applies to CFA images using a Bayer pattern filter array. This tag " -"specifies, in arbitrary units, how closely the values of the green pixels in " -"the blue/green rows track the values of the green pixels in the red/green " -"rows. A value of zero means the two kinds of green pixels track closely, " -"while a non-zero value means they sometimes diverge. The useful range for " -"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." -msgstr "" - -#: src/tags.cpp:1063 -msgid "Linear Response Limit" -msgstr "" - -#: src/tags.cpp:1064 -msgid "" -"Some sensors have an unpredictable non-linearity in their response as they " -"near the upper limit of their encoding range. This non-linearity results in " -"color shifts in the highlight areas of the resulting image unless the raw " -"converter compensates for this effect. LinearResponseLimit specifies the " -"fraction of the encoding range above which the response may become " -"significantly non-linear." -msgstr "" - -#: src/tags.cpp:1072 -#, fuzzy -msgid "" -"CameraSerialNumber contains the serial number of the camera or camera body " -"that captured the image." -msgstr "" -"Серийный номер камеры или задника камеры, иÑпользовавшегоÑÑ Ð´Ð»Ñ Ñъемки." - -#: src/tags.cpp:1075 -#, fuzzy -msgid "Lens Info" -msgstr "Объектив" - -#: src/tags.cpp:1076 -msgid "" -"Contains information about the lens that captured the image. If the minimum " -"f-stops are unknown, they should be encoded as 0/0." -msgstr "" - -#: src/tags.cpp:1079 -msgid "Chroma Blur Radius" -msgstr "" - -#: src/tags.cpp:1080 -msgid "" -"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " -"blur should be applied to the image. If this tag is omitted, the reader will " -"use its default amount of chroma blurring. Normally this tag is only " -"included for non-CFA images, since the amount of chroma blur required for " -"mosaic images is highly dependent on the de-mosaic algorithm, in which case " -"the DNG reader's default value is likely optimized for its particular de-" -"mosaic algorithm." -msgstr "" - -#: src/tags.cpp:1088 -#, fuzzy -msgid "Anti Alias Strength" -msgstr "ФокуÑное раÑÑтоÑние" - -#: src/tags.cpp:1089 -msgid "" -"Provides a hint to the DNG reader about how strong the camera's anti-alias " -"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " -"prone to aliasing artifacts with some subjects), while a value of 1.0 means " -"a strong anti-alias filter (i.e., the camera almost never has aliasing " -"artifacts)." -msgstr "" - -#: src/tags.cpp:1095 -#, fuzzy -msgid "Shadow Scale" -msgstr "Тень" - -#: src/tags.cpp:1096 -msgid "" -"This tag is used by Adobe Camera Raw to control the sensitivity of its " -"'Shadows' slider." -msgstr "" - -#: src/tags.cpp:1099 -#, fuzzy -msgid "DNG Private Data" -msgstr "Данные ÑÑкиза" - -#: src/tags.cpp:1100 -msgid "" -"Provides a way for camera manufacturers to store private data in the DNG " -"file for use by their own raw converters, and to have that data preserved by " -"programs that edit DNG files." -msgstr "" - -#: src/tags.cpp:1104 -#, fuzzy -msgid "MakerNote Safety" -msgstr "Данные производителÑ" - -#: src/tags.cpp:1105 -msgid "" -"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " -"safe to preserve along with the rest of the EXIF data. File browsers and " -"other image management software processing an image with a preserved " -"MakerNote should be aware that any thumbnail image embedded in the MakerNote " -"may be stale, and may not reflect the current state of the full size image." -msgstr "" - -#: src/tags.cpp:1112 -msgid "Calibration Illuminant 1" -msgstr "" - -#: src/tags.cpp:1113 -msgid "" -"The illuminant used for the first set of color calibration tags " -"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " -"this tag are the same as the legal values for the LightSource EXIF tag." -msgstr "" - -#: src/tags.cpp:1118 -#, fuzzy -msgid "Calibration Illuminant 2" -msgstr "Без коррекции" - -#: src/tags.cpp:1119 -msgid "" -"The illuminant used for an optional second set of color calibration tags " -"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " -"this tag are the same as the legal values for the CalibrationIlluminant1 " -"tag; however, if both are included, neither is allowed to have a value of 0 " -"(unknown)." -msgstr "" - -#: src/tags.cpp:1125 -#, fuzzy -msgid "Best Quality Scale" -msgstr "По умолчанию" - -#: src/tags.cpp:1126 -msgid "" -"For some cameras, the best possible image quality is not achieved by " -"preserving the total pixel count during conversion. For example, Fujifilm " -"SuperCCD images have maximum detail when their total pixel count is doubled. " -"This tag specifies the amount by which the values of the DefaultScale tag " -"need to be multiplied to achieve the best quality image size." -msgstr "" - -#: src/tags.cpp:1133 -#, fuzzy -msgid "Raw Data Unique ID" -msgstr "Уникальный ID изображениÑ" - -#: src/tags.cpp:1134 -msgid "" -"This tag contains a 16-byte unique identifier for the raw image data in the " -"DNG file. DNG readers can use this tag to recognize a particular raw image, " -"even if the file's name or the metadata contained in the file has been " -"changed. If a DNG writer creates such an identifier, it should do so using " -"an algorithm that will ensure that it is very unlikely two different images " -"will end up having the same identifier." -msgstr "" - -#: src/tags.cpp:1142 -#, fuzzy -msgid "Original Raw File Name" -msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" - -#: src/tags.cpp:1143 -msgid "" -"If the DNG file was converted from a non-DNG raw file, then this tag " -"contains the file name of that original raw file." -msgstr "" - -#: src/tags.cpp:1146 -#, fuzzy -msgid "Original Raw File Data" -msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" - -#: src/tags.cpp:1147 -msgid "" -"If the DNG file was converted from a non-DNG raw file, then this tag " -"contains the compressed contents of that original raw file. The contents of " -"this tag always use the big-endian byte order. The tag contains a sequence " -"of data blocks. Future versions of the DNG specification may define " -"additional data blocks, so DNG readers should ignore extra bytes when " -"parsing this tag. DNG readers should also detect the case where data blocks " -"are missing from the end of the sequence, and should assume a default value " -"for all the missing blocks. There are no padding or alignment bytes between " -"data blocks." -msgstr "" - -#: src/tags.cpp:1157 -#, fuzzy -msgid "Active Area" -msgstr "ОблаÑÑ‚ÑŒ объекта Ñъёмки" - -#: src/tags.cpp:1158 -msgid "" -"This rectangle defines the active (non-masked) pixels of the sensor. The " -"order of the rectangle coordinates is: top, left, bottom, right." -msgstr "" - -#: src/tags.cpp:1161 -#, fuzzy -msgid "Masked Areas" -msgstr "РучнаÑ" - -#: src/tags.cpp:1162 -msgid "" -"This tag contains a list of non-overlapping rectangle coordinates of fully " -"masked pixels, which can be optionally used by DNG readers to measure the " -"black encoding level. The order of each rectangle's coordinates is: top, " -"left, bottom, right. If the raw image data has already had its black " -"encoding level subtracted, then this tag should not be used, since the " -"masked pixels are no longer useful." -msgstr "" - -#: src/tags.cpp:1169 -#, fuzzy -msgid "As-Shot ICC Profile" -msgstr "Профиль камеры" - -#: src/tags.cpp:1170 -msgid "" -"This tag contains an ICC profile that, in conjunction with the " -"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " -"specify a default color rendering from camera color space coordinates " -"(linear reference values) into the ICC profile connection space. The ICC " -"profile connection space is an output referred colorimetric space, whereas " -"the other color calibration tags in DNG specify a conversion into a scene " -"referred colorimetric space. This means that the rendering in this profile " -"should include any desired tone and gamut mapping needed to convert between " -"scene referred values and output referred values." -msgstr "" - -#: src/tags.cpp:1181 -msgid "As-Shot Pre-Profile Matrix" -msgstr "" - -#: src/tags.cpp:1182 -msgid "" -"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " -"a matrix that should be applied to the camera color space coordinates before " -"processing the values through the ICC profile specified in the " -"AsShotICCProfile tag. The matrix is stored in the row scan order. If " -"ColorPlanes is greater than three, then this matrix can (but is not required " -"to) reduce the dimensionality of the color data down to three components, in " -"which case the AsShotICCProfile should have three rather than ColorPlanes " -"input components." -msgstr "" - -#: src/tags.cpp:1191 -#, fuzzy -msgid "Current ICC Profile" -msgstr "Профиль камеры" - -#: src/tags.cpp:1192 -msgid "" -"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " -"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " -"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " -"they are for use by raw file editors rather than camera manufacturers." -msgstr "" - -#: src/tags.cpp:1198 -#, fuzzy -msgid "Current Pre-Profile Matrix" -msgstr "Профиль камеры" - -#: src/tags.cpp:1199 -msgid "" -"This tag is used in conjunction with the CurrentICCProfile tag. The " -"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " -"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " -"they are for use by raw file editors rather than camera manufacturers." -msgstr "" - -#: src/tags.cpp:1205 -#, fuzzy -msgid "Colorimetric Reference" -msgstr "Эталонный Чёрный/Белый" - -#: src/tags.cpp:1206 -msgid "" -"The DNG color model documents a transform between camera colors and CIE XYZ " -"values. This tag describes the colorimetric reference for the CIE XYZ " -"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" -"referred, using the ICC profile perceptual dynamic range. This tag allows " -"output-referred data to be stored in DNG files and still processed correctly " -"by DNG readers." -msgstr "" - -#: src/tags.cpp:1213 -#, fuzzy -msgid "Camera Calibration Signature" -msgstr "ÐаÑтройка контраÑта" - -#: src/tags.cpp:1214 -msgid "" -"A UTF-8 encoded string associated with the CameraCalibration1 and " -"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " -"should only be used in the DNG color transform if the string stored in the " -"CameraCalibrationSignature tag exactly matches the string stored in the " -"ProfileCalibrationSignature tag for the selected camera profile." -msgstr "" - -#: src/tags.cpp:1220 -#, fuzzy -msgid "Profile Calibration Signature" -msgstr "Без коррекции" - -#: src/tags.cpp:1221 -msgid "" -"A UTF-8 encoded string associated with the camera profile tags. The " -"CameraCalibration1 and CameraCalibration2 tags should only be used in the " -"DNG color transfer if the string stored in the CameraCalibrationSignature " -"tag exactly matches the string stored in the ProfileCalibrationSignature tag " -"for the selected camera profile." -msgstr "" - -#: src/tags.cpp:1227 -#, fuzzy -msgid "As Shot Profile Name" -msgstr "Профиль камеры" - -#: src/tags.cpp:1228 -msgid "" -"A UTF-8 encoded string containing the name of the \"as shot\" camera " -"profile, if any." -msgstr "" - -#: src/tags.cpp:1231 -#, fuzzy -msgid "Noise Reduction Applied" -msgstr "Подавление шума" - -#: src/tags.cpp:1232 -msgid "" -"This tag indicates how much noise reduction has been applied to the raw data " -"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " -"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " -"reduction has been applied, i.e. that the DNG reader should not apply " -"additional noise reduction by default. A value of 0/0 indicates that this " -"parameter is unknown." -msgstr "" - -#: src/tags.cpp:1239 -#, fuzzy -msgid "Profile Name" -msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" - -#: src/tags.cpp:1240 -msgid "" -"A UTF-8 encoded string containing the name of the camera profile. This tag " -"is optional if there is only a single camera profile stored in the file but " -"is required for all camera profiles if there is more than one camera profile " -"stored in the file." -msgstr "" - -#: src/tags.cpp:1245 -msgid "Profile Hue Sat Map Dims" -msgstr "" - -#: src/tags.cpp:1246 -msgid "" -"This tag specifies the number of input samples in each dimension of the hue/" -"saturation/value mapping tables. The data for these tables are stored in " -"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " -"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " -"to the mapping table." -msgstr "" - -#: src/tags.cpp:1252 -msgid "Profile Hue Sat Map Data 1" -msgstr "" - -#: src/tags.cpp:1253 -msgid "" -"This tag contains the data for the first hue/saturation/value mapping table. " -"Each entry of the table contains three 32-bit IEEE floating-point values. " -"The first entry is hue shift in degrees; the second entry is saturation " -"scale factor; and the third entry is a value scale factor. The table entries " -"are stored in the tag in nested loop order, with the value divisions in the " -"outer loop, the hue divisions in the middle loop, and the saturation " -"divisions in the inner loop. All zero input saturation entries are required " -"to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1262 -msgid "Profile Hue Sat Map Data 2" -msgstr "" - -#: src/tags.cpp:1263 -msgid "" -"This tag contains the data for the second hue/saturation/value mapping " -"table. Each entry of the table contains three 32-bit IEEE floating-point " -"values. The first entry is hue shift in degrees; the second entry is a " -"saturation scale factor; and the third entry is a value scale factor. The " -"table entries are stored in the tag in nested loop order, with the value " -"divisions in the outer loop, the hue divisions in the middle loop, and the " -"saturation divisions in the inner loop. All zero input saturation entries " -"are required to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1272 -#, fuzzy -msgid "Profile Tone Curve" -msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ñ‚Ð¾Ð½ÐºÐ¾Ñ€Ñ€ÐµÐºÑ†Ð¸Ð¸" - -#: src/tags.cpp:1273 -msgid "" -"This tag contains a default tone curve that can be applied while processing " -"the image as a starting point for user adjustments. The curve is specified " -"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " -"sample has an input value in the range of 0.0 to 1.0, and an output value in " -"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " -"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " -"cubic spline." -msgstr "" - -#: src/tags.cpp:1281 -msgid "Profile Embed Policy" -msgstr "" - -#: src/tags.cpp:1282 -msgid "" -"This tag contains information about the usage rules for the associated " -"camera profile." -msgstr "" - -#: src/tags.cpp:1285 -#, fuzzy -msgid "Profile Copyright" -msgstr "ÐвторÑкие права" - -#: src/tags.cpp:1286 -msgid "" -"A UTF-8 encoded string containing the copyright information for the camera " -"profile. This string always should be preserved along with the other camera " -"profile tags." -msgstr "" - -#: src/tags.cpp:1290 -#, fuzzy -msgid "Forward Matrix 1" -msgstr "Цветовое проÑтранÑтво" - -#: src/tags.cpp:1291 src/tags.cpp:1295 -msgid "" -"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " -"colors." -msgstr "" - -#: src/tags.cpp:1294 -#, fuzzy -msgid "Forward Matrix 2" -msgstr "Цветовое проÑтранÑтво" - -#: src/tags.cpp:1298 -#, fuzzy -msgid "Preview Application Name" -msgstr "Данные ÑÑкиза" - -#: src/tags.cpp:1299 -msgid "" -"A UTF-8 encoded string containing the name of the application that created " -"the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1302 -#, fuzzy -msgid "Preview Application Version" -msgstr "ВерÑÐ¸Ñ ÑÑкиза" - -#: src/tags.cpp:1303 -msgid "" -"A UTF-8 encoded string containing the version number of the application that " -"created the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1306 -#, fuzzy -msgid "Preview Settings Name" -msgstr "ВерÑÐ¸Ñ ÑÑкиза" - -#: src/tags.cpp:1307 -msgid "" -"A UTF-8 encoded string containing the name of the conversion settings (for " -"example, snapshot name) used for the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1310 -#, fuzzy -msgid "Preview Settings Digest" -msgstr "ÐаÑтройки камеры" - -#: src/tags.cpp:1311 -msgid "" -"A unique ID of the conversion settings (for example, MD5 digest) used to " -"render the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1314 -#, fuzzy -msgid "Preview Color Space" -msgstr "Цветовое проÑтранÑтво" - -#: src/tags.cpp:1315 -msgid "" -"This tag specifies the color space in which the rendered preview in this IFD " -"is stored. The default value for this tag is sRGB for color previews and " -"Gray Gamma 2.2 for monochrome previews." -msgstr "" - -#: src/tags.cpp:1319 -#, fuzzy -msgid "Preview Date Time" -msgstr "Данные ÑÑкиза" - -#: src/tags.cpp:1320 -msgid "" -"This tag is an ASCII string containing the name of the date/time at which " -"the preview stored in the IFD was rendered. The date/time is encoded using " -"ISO 8601 format." -msgstr "" - -#: src/tags.cpp:1324 -#, fuzzy -msgid "Raw Image Digest" -msgstr "Ðомер изображениÑ" - -#: src/tags.cpp:1325 -msgid "" -"This tag is an MD5 digest of the raw image data. All pixels in the image are " -"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " -"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " -"data for each pixel is processed in little-endian byte order." -msgstr "" - -#: src/tags.cpp:1330 -#, fuzzy -msgid "Original Raw File Digest" -msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" - -#: src/tags.cpp:1331 -msgid "" -"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." -msgstr "" - -#: src/tags.cpp:1334 -msgid "Sub Tile Block Size" -msgstr "" - -#: src/tags.cpp:1335 -msgid "" -"Normally, the pixels within a tile are stored in simple row-scan order. This " -"tag specifies that the pixels within a tile should be grouped first into " -"rectangular blocks of the specified size. These blocks are stored in row-" -"scan order. Within each block, the pixels are stored in row-scan order. The " -"use of a non-default value for this tag requires setting the " -"DNGBackwardVersion tag to at least 1.2.0.0." -msgstr "" - -#: src/tags.cpp:1342 -msgid "Row Interleave Factor" -msgstr "" - -#: src/tags.cpp:1343 -msgid "" -"This tag specifies that rows of the image are stored in interleaved order. " -"The value of the tag specifies the number of interleaved fields. The use of " -"a non-default value for this tag requires setting the DNGBackwardVersion tag " -"to at least 1.2.0.0." -msgstr "" - -#: src/tags.cpp:1348 -msgid "Profile Look Table Dims" -msgstr "" - -#: src/tags.cpp:1349 -msgid "" -"This tag specifies the number of input samples in each dimension of a " -"default \"look\" table. The data for this table is stored in the " -"ProfileLookTableData tag." -msgstr "" - -#: src/tags.cpp:1353 -msgid "Profile Look Table Data" -msgstr "" - -#: src/tags.cpp:1354 -msgid "" -"This tag contains a default \"look\" table that can be applied while " -"processing the image as a starting point for user adjustment. This table " -"uses the same format as the tables stored in the ProfileHueSatMapData1 and " -"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " -"it should be applied later in the processing pipe, after any exposure " -"compensation and/or fill light stages, but before any tone curve stage. Each " -"entry of the table contains three 32-bit IEEE floating-point values. The " -"first entry is hue shift in degrees, the second entry is a saturation scale " -"factor, and the third entry is a value scale factor. The table entries are " -"stored in the tag in nested loop order, with the value divisions in the " -"outer loop, the hue divisions in the middle loop, and the saturation " -"divisions in the inner loop. All zero input saturation entries are required " -"to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1368 -msgid "Opcode List 1" -msgstr "" - -#: src/tags.cpp:1369 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, as " -"read directly from the file." -msgstr "" - -#: src/tags.cpp:1372 -msgid "Opcode List 2" -msgstr "" - -#: src/tags.cpp:1373 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, just " -"after it has been mapped to linear reference values." -msgstr "" - -#: src/tags.cpp:1376 -msgid "Opcode List 3" -msgstr "" - -#: src/tags.cpp:1377 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, just " -"after it has been demosaiced." -msgstr "" - -#: src/tags.cpp:1380 -#, fuzzy -msgid "Noise Profile" -msgstr "Цветовое проÑтранÑтво" - -#: src/tags.cpp:1381 -msgid "" -"NoiseProfile describes the amount of noise in a raw image. Specifically, " -"this tag models the amount of signal-dependent photon (shot) noise and " -"signal-independent sensor readout noise, two common sources of noise in raw " -"images. The model assumes that the noise is white and spatially independent, " -"ignoring fixed pattern effects and other sources of noise (e.g., pixel " -"response non-uniformity, spatially-dependent thermal effects, etc.)." -msgstr "" - -#: src/tags.cpp:1389 src/tags.cpp:1390 -msgid "Unknown IFD tag" -msgstr "ÐеизвеÑтное поле IFD" - -#: src/tags.cpp:1401 src/tags.cpp:1459 -msgid "Not defined" -msgstr "Ðе определено" - -#: src/tags.cpp:1406 -msgid "Creative program" -msgstr "ТворчеÑÐºÐ°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð°" - -#: src/tags.cpp:1407 -#, fuzzy -msgid "Action program" -msgstr "ÐÐ¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð°" - -#: src/tags.cpp:1408 -msgid "Portrait mode" -msgstr "Портретный режим" - -#: src/tags.cpp:1409 -msgid "Landscape mode" -msgstr "Ðльбомный режим" - -#: src/tags.cpp:1418 -msgid "Multi-spot" -msgstr "" - -#: src/tags.cpp:1430 -#, fuzzy -msgid "Tungsten (incandescent light)" -msgstr "Ð¯Ñ€ÐºÐ°Ñ Ð»Ð°Ð¼Ð¿Ð° накаливаниÑ" - -#: src/tags.cpp:1432 -msgid "Fine weather" -msgstr "ЯÑÐ½Ð°Ñ Ð¿Ð¾Ð³Ð¾Ð´Ð°" - -#: src/tags.cpp:1433 -msgid "Cloudy weather" -msgstr "ОблачноÑÑ‚ÑŒ" - -#: src/tags.cpp:1435 -msgid "Daylight fluorescent (D 5700 - 7100K)" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° дневного Ñвета (D 5700 - 7100K)" - -#: src/tags.cpp:1436 -#, fuzzy -msgid "Day white fluorescent (N 4600 - 5400K)" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° дневного Ñвета (D 5700 - 7100K)" - -#: src/tags.cpp:1437 -#, fuzzy -msgid "Cool white fluorescent (W 3900 - 4500K)" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° дневного Ñвета (D 5700 - 7100K)" - -#: src/tags.cpp:1438 -#, fuzzy -msgid "White fluorescent (WW 3200 - 3700K)" -msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° дневного Ñвета (D 5700 - 7100K)" - -#: src/tags.cpp:1439 -msgid "Standard light A" -msgstr "Стандартный Ñвет A" - -#: src/tags.cpp:1440 -msgid "Standard light B" -msgstr "Стандартный Ñвет B" - -#: src/tags.cpp:1441 -msgid "Standard light C" -msgstr "Стандартный Ñвет C" - -#: src/tags.cpp:1442 -msgid "D55" -msgstr "D55" - -#: src/tags.cpp:1443 -msgid "D65" -msgstr "D65" - -#: src/tags.cpp:1444 -msgid "D75" -msgstr "D75" - -#: src/tags.cpp:1445 -msgid "D50" -msgstr "D50" - -#: src/tags.cpp:1446 -#, fuzzy -msgid "ISO studio tungsten" -msgstr "СкороÑÑ‚ÑŒ ISO" - -#: src/tags.cpp:1447 -msgid "Other light source" -msgstr "Другой иÑточник Ñвета" - -#: src/tags.cpp:1454 -msgid "Uncalibrated" -msgstr "Ðе откалибровано" - -#: src/tags.cpp:1460 -msgid "One-chip color area" -msgstr "" - -#: src/tags.cpp:1461 -msgid "Two-chip color area" -msgstr "" - -#: src/tags.cpp:1462 -msgid "Three-chip color area" -msgstr "" - -#: src/tags.cpp:1463 -msgid "Color sequential area" -msgstr "" - -#: src/tags.cpp:1464 -msgid "Trilinear sensor" -msgstr "" - -#: src/tags.cpp:1465 -msgid "Color sequential linear" -msgstr "" - -#: src/tags.cpp:1470 -msgid "Film scanner" -msgstr "Сканер фотопленки" - -#: src/tags.cpp:1471 -msgid "Reflexion print scanner" -msgstr "" - -#: src/tags.cpp:1472 -msgid "Digital still camera" -msgstr "Ð¦Ð¸Ñ„Ñ€Ð¾Ð²Ð°Ñ Ñ„Ð¾Ñ‚Ð¾ÐºÐ°Ð¼ÐµÑ€Ð°" - -#: src/tags.cpp:1477 -msgid "Directly photographed" -msgstr "" - -#: src/tags.cpp:1482 -msgid "Normal process" -msgstr "Обычный процеÑÑ Ð¿Ñ€Ð¾Ñвки" - -#: src/tags.cpp:1483 -msgid "Custom process" -msgstr "Другой процеÑÑ Ð¿Ñ€Ð¾Ñвки" - -#: src/tags.cpp:1511 -msgid "Low gain up" -msgstr "" - -#: src/tags.cpp:1512 -msgid "High gain up" -msgstr "" - -#: src/tags.cpp:1513 -#, fuzzy -msgid "Low gain down" -msgstr "МеÑтоположение объекта Ñъёмки" - -#: src/tags.cpp:1514 -msgid "High gain down" -msgstr "" - -#: src/tags.cpp:1535 -msgid "Close view" -msgstr "Крупный план" - -#: src/tags.cpp:1536 src/tags.cpp:1537 -msgid "Distant view" -msgstr "" - -#: src/tags.cpp:1543 -msgid "Exposure time, given in seconds (sec)." -msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции в Ñекундах" - -#: src/tags.cpp:1553 -msgid "" -"Indicates the spectral sensitivity of each channel of the camera used. The " -"tag value is an ASCII string compatible with the standard developed by the " -"ASTM Technical Committee." -msgstr "" - -#: src/tags.cpp:1561 -msgid "Opto-Electoric Conversion Function" -msgstr "" - -#: src/tags.cpp:1562 -msgid "" -"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " -"14524. is the relationship between the camera optical input and the " -"image values." -msgstr "" - -#: src/tags.cpp:1566 -#, fuzzy -msgid "Sensitivity Type" -msgstr "Ð¡Ð¿ÐµÐºÑ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡ÑƒÐ²ÑтвительноÑÑ‚ÑŒ" - -#: src/tags.cpp:1567 -msgid "" -"The SensitivityType tag indicates PhotographicSensitivity tag. which one of " -"the parameters of ISO12232 is the Although it is an optional tag, it should " -"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " -"or 7 may be used in case that the values of plural parameters are the same." -msgstr "" - -#: src/tags.cpp:1573 -#, fuzzy -msgid "Standard Output Sensitivity" -msgstr "Ð¡Ð¿ÐµÐºÑ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡ÑƒÐ²ÑтвительноÑÑ‚ÑŒ" - -#: src/tags.cpp:1574 -msgid "" -"This tag indicates the standard output sensitivity value of a camera or " -"input device defined in ISO 12232. When recording this tag, the " -"PhotographicSensitivity and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1578 -#, fuzzy -msgid "Recommended Exposure Index" -msgstr "Режим ÑкÑпозиции" - -#: src/tags.cpp:1579 -msgid "" -"This tag indicates the recommended exposure index value of a camera or input " -"device defined in ISO 12232. When recording this tag, the " -"PhotographicSensitivity and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1584 -msgid "" -"This tag indicates the ISO speed value of a camera or input device that is " -"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " -"and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1588 -#, fuzzy -msgid "ISO Speed Latitude yyy" -msgstr "СкороÑÑ‚ÑŒ ISO" - -#: src/tags.cpp:1589 -msgid "" -"This tag indicates the ISO speed latitude yyy value of a camera or input " -"device that is defined in ISO 12232. However, this tag shall not be recorded " -"without ISOSpeed and ISOSpeedLatitudezzz." -msgstr "" - -#: src/tags.cpp:1593 -#, fuzzy -msgid "ISO Speed Latitude zzz" -msgstr "СкороÑÑ‚ÑŒ ISO" - -#: src/tags.cpp:1594 -msgid "" -"This tag indicates the ISO speed latitude zzz value of a camera or input " -"device that is defined in ISO 12232. However, this tag shall not be recorded " -"without ISOSpeed and ISOSpeedLatitudeyyy." -msgstr "" - -#: src/tags.cpp:1599 -msgid "" -"The version of this standard supported. Nonexistence of this field is taken " -"to mean nonconformance to the standard." -msgstr "" -"ÐŸÐ¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ñтандарта Exif. ОтÑутÑтвие Ñтого Ð¿Ð¾Ð»Ñ Ð¿Ñ€Ð¸Ð½Ð¸Ð¼Ð°ÐµÑ‚ÑÑ Ð·Ð° " -"ÑвидетельÑтво неÑоответÑÑ‚Ð²Ð¸Ñ Ñтандарту." - -#: src/tags.cpp:1602 -msgid "Date and Time (original)" -msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð´Ð°Ñ‚Ð° и времÑ" - -#: src/tags.cpp:1603 -msgid "" -"The date and time when the original image data was generated. For a digital " -"still camera the date and time the picture was taken are recorded." -msgstr "" -"Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸Ñходного изображениÑ. Ð”Ð»Ñ Ñ†Ð¸Ñ„Ñ€Ð¾Ð²Ð¾Ð¹ фотокамеры Ñто " -"дата и Ð²Ñ€ÐµÐ¼Ñ Ñъёмки." - -#: src/tags.cpp:1606 -msgid "Date and Time (digitized)" -msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ Ð¾Ñ†Ð¸Ñ„Ñ€Ð¾Ð²ÐºÐ¸" - -#: src/tags.cpp:1607 -msgid "The date and time when the image was stored as digital data." -msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" - -#: src/tags.cpp:1610 -msgid "" -"Information specific to compressed data. The channels of each component are " -"arranged in order from the 1st component to the 4th. For uncompressed data " -"the data arrangement is given in the tag. " -"However, since can only express the order of Y, " -"Cb and Cr, this tag is provided for cases when compressed data uses " -"components other than Y, Cb, and Cr and to enable support of other sequences." -msgstr "" -"Ð¡Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð°Ñ Ð´Ð»Ñ Ñжатых данных информациÑ. Каналы каждого компонента " -"раÑÑтавлены в порÑдке от первого до четвёртого. Ð”Ð»Ñ Ð½ÐµÑжатых данных порÑдок " -"раÑÑтановки данных задаётÑÑ Ð² Ñ‚Ñге . Во вÑÑком " -"Ñлучае, поÑкольку может выражать лишь порÑдок Y, " -"Cb и Cr, Ñтот Ñ‚Ñг запиÑываетÑÑ Ð½Ð° тот Ñлучай, когда в Ñжатых данных " -"иÑпользуютÑÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ñ‹, отличные от Y, Cb и Cr, а также Ð´Ð»Ñ Ð¾Ð±ÐµÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ " -"поддержки обеих поÑледовательноÑтей." - -#: src/tags.cpp:1619 -msgid "Compressed Bits per Pixel" -msgstr "Сжатых битов на пикÑел" - -#: src/tags.cpp:1620 -msgid "" -"Information specific to compressed data. The compression mode used for a " -"compressed image is indicated in unit bits per pixel." -msgstr "" -"Ð¡Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð°Ñ Ð´Ð»Ñ Ñжатых данных информациÑ. ИÑпользованный режим ÑÐ¶Ð°Ñ‚Ð¸Ñ Ð´Ð»Ñ " -"Ñжатого Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ÑÑ Ð² единице Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ \"битов на пикÑел\"" - -#: src/tags.cpp:1624 -#, fuzzy -msgid "" -"Shutter speed. The unit is the APEX (Additive System of Photographic " -"Exposure) setting." -msgstr "" -"СкороÑÑ‚ÑŒ ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°. Эта единица Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ ÑвлÑетÑÑ APEX(Additive " -"System of Photographic Exposure)-наÑтройкой (Ñм. Приложение С)" - -#: src/tags.cpp:1628 -msgid "The lens aperture. The unit is the APEX value." -msgstr "Диафрагма объектива. Эта единица Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ ÑвлÑетÑÑ APEX-значением" - -#: src/tags.cpp:1631 -msgid "" -"The value of brightness. The unit is the APEX value. Ordinarily it is given " -"in the range of -99.99 to 99.99." -msgstr "" -"Значение ÑркоÑти. Эта единица Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ ÑвлÑетÑÑ APEX-значением. Обычно оно " -"находитÑÑ Ð² пределах от -99.99 до 99.99" - -#: src/tags.cpp:1634 -msgid "Exposure Bias" -msgstr "Смещение ÑкÑпозиции" - -#: src/tags.cpp:1635 -msgid "" -"The exposure bias. The units is the APEX value. Ordinarily it is given in " -"the range of -99.99 to 99.99." -msgstr "" -"Смещение ÑкÑпозиции. ИзмерÑетÑÑ APEX-единицами. Обычно значение лежит в " -"диапазоне между -99.99 и 99.99." - -#: src/tags.cpp:1639 -msgid "" -"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " -"is given in the range of 00.00 to 99.99, but it is not limited to this range." -msgstr "" -"Самое маленькое чиÑло F Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¸Ð²Ð°. ИзмерÑетÑÑ APEX-единицами. Обычно " -"значение лежит в диапазоне между 00.00 и 99.99, но оно не ограничено Ñтим " -"диапазоном." - -#: src/tags.cpp:1653 -msgid "" -"This tag is recorded when an image is taken using a strobe light (flash)." -msgstr "Это поле запиÑываетÑÑ Ð¿Ñ€Ð¸ иÑпользовании Ñффекта ÑтробоÑкопа во вÑпышке" - -#: src/tags.cpp:1656 -msgid "" -"The actual focal length of the lens, in mm. Conversion is not made to the " -"focal length of a 35 mm film camera." -msgstr "" -"Реальное фокуÑное раÑÑтоÑние объектива. Преобразование в 35мм плёночный " -"аналог не производитÑÑ." - -#: src/tags.cpp:1660 -msgid "" -"This tag indicates the location and area of the main subject in the overall " -"scene." -msgstr "" -"Это поле хранит информацию о меÑтоположении и облаÑти объекта Ñъёмки во вÑей " -"Ñцене." - -#: src/tags.cpp:1663 -msgid "Maker Note" -msgstr "Данные производителÑ" - -#: src/tags.cpp:1664 -msgid "" -"A tag for manufacturers of Exif writers to record any desired information. " -"The contents are up to the manufacturer." -msgstr "" -"Поле Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸ÐºÐ¾Ð² ÑредÑтва запиÑи тегов Exif, в который можно " -"запиÑывать вÑÑ‘, что им хочетÑÑ. Содержимое завиÑит от разработчиков." - -#: src/tags.cpp:1668 -msgid "" -"A tag for Exif users to write keywords or comments on the image besides " -"those in , and without the character code limitations of " -"the tag." -msgstr "" - -#: src/tags.cpp:1672 -#, fuzzy -msgid "Sub-seconds Time" -msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð´Ð°Ñ‚Ð° и времÑ" - -#: src/tags.cpp:1673 -msgid "A tag used to record fractions of seconds for the tag." -msgstr "Поле, иÑпользуемое Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи долей Ñекунды из тега ." - -#: src/tags.cpp:1675 -#, fuzzy -msgid "Sub-seconds Time Original" -msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð´Ð°Ñ‚Ð° и времÑ" - -#: src/tags.cpp:1676 -msgid "" -"A tag used to record fractions of seconds for the tag." -msgstr "" -"Поле, иÑпользуемое Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи долей Ñекунды из тега ." - -#: src/tags.cpp:1678 -#, fuzzy -msgid "Sub-seconds Time Digitized" -msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ Ð¾Ñ†Ð¸Ñ„Ñ€Ð¾Ð²ÐºÐ¸" - -#: src/tags.cpp:1679 -msgid "" -"A tag used to record fractions of seconds for the tag." -msgstr "" -"Поле, иÑпользуемое Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи долей Ñекунды из тега ." - -#: src/tags.cpp:1681 -msgid "FlashPix Version" -msgstr "ВерÑÐ¸Ñ FlashPix" - -#: src/tags.cpp:1682 -msgid "The FlashPix format version supported by a FPXR file." -msgstr "ВерÑÐ¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° FlashPix, поддерживаемого в формате файлов FPXR" - -#: src/tags.cpp:1685 -#, fuzzy -msgid "" -"The color space information tag is always recorded as the color space " -"specifier. Normally sRGB is used to define the color space based on the PC " -"monitor conditions and environment. If a color space other than sRGB is " -"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " -"treated as sRGB when it is converted to FlashPix." -msgstr "" -"ОбÑзательный Ñ‚Ñг, в котором определÑетÑÑ Ñ†Ð²ÐµÑ‚Ð¾Ð²Ð¾Ðµ проÑтранÑтво. Как правило, " -"в качеÑтве цветового проÑтранÑтва монитора и Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ Ð¸ÑпользуетÑÑ sRGB " -"(=1). ЕÑли же иÑпользуетÑÑ Ð½Ðµ sRGB, то значение уÑтанавливаетÑÑ ÐºÐ°Ðº " -"Uncalibrated (=FFFF.H). Данные изображениÑ, запиÑанного как Uncalibrated, " -"могут быть воÑпринÑÑ‚Ñ‹ как sRGB при преобразовании во FlashPix. Подробнее " -"sRGB раÑÑматриваетÑÑ Ð² приложении E." - -#: src/tags.cpp:1694 -msgid "" -"Information specific to compressed data. When a compressed file is recorded, " -"the valid width of the meaningful image must be recorded in this tag, " -"whether or not there is padding data or a restart marker. This tag should " -"not exist in an uncompressed file." -msgstr "" - -#: src/tags.cpp:1701 -msgid "" -"Information specific to compressed data. When a compressed file is recorded, " -"the valid height of the meaningful image must be recorded in this tag, " -"whether or not there is padding data or a restart marker. This tag should " -"not exist in an uncompressed file. Since data padding is unnecessary in the " -"vertical direction, the number of lines recorded in this valid image height " -"tag will in fact be the same as that recorded in the SOF." -msgstr "" - -#: src/tags.cpp:1710 -msgid "" -"This tag is used to record the name of an audio file related to the image " -"data. The only relational information recorded here is the Exif audio file " -"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " -"characters). The path is not recorded." -msgstr "" - -#: src/tags.cpp:1716 -#, fuzzy -msgid "Interoperability IFD Pointer" -msgstr "ВерÑÐ¸Ñ ÑовмеÑтимоÑти" - -#: src/tags.cpp:1717 -msgid "" -"Interoperability IFD is composed of tags which stores the information to " -"ensure the Interoperability and pointed by the following tag located in Exif " -"IFD. The Interoperability structure of Interoperability IFD is the same as " -"TIFF defined IFD structure but does not contain the image data " -"characteristically compared with normal TIFF IFD." -msgstr "" - -#: src/tags.cpp:1725 -msgid "" -"Indicates the strobe energy at the time the image is captured, as measured " -"in Beam Candle Power Seconds (BCPS)." -msgstr "" - -#: src/tags.cpp:1729 -msgid "" -"This tag records the camera or input device spatial frequency table and SFR " -"values in the direction of image width, image height, and diagonal " -"direction, as specified in ISO 12233." -msgstr "" - -#: src/tags.cpp:1733 -#, fuzzy -msgid "Focal Plane X-Resolution" -msgstr "Разрешение по X" - -#: src/tags.cpp:1734 -msgid "" -"Indicates the number of pixels in the image width (X) direction per " -" on the camera focal plane." -msgstr "" - -#: src/tags.cpp:1737 -#, fuzzy -msgid "Focal Plane Y-Resolution" -msgstr "Разрешение по X" - -#: src/tags.cpp:1738 -msgid "" -"Indicates the number of pixels in the image height (V) direction per " -" on the camera focal plane." -msgstr "" - -#: src/tags.cpp:1742 -msgid "" -"Indicates the unit for measuring and " -". This value is the same as the ." -msgstr "" - -#: src/tags.cpp:1746 -#, fuzzy -msgid "" -"Indicates the location of the main subject in the scene. The value of this " -"tag represents the pixel at the center of the main subject relative to the " -"left edge, prior to rotation processing as per the tag. The first " -"value indicates the X column number and second indicates the Y row number." -msgstr "" -"Этот Ñ‚Ñг отображает меÑтоположение главного объекта Ñъёмки в Ñцене. Значение " -"Ñтого Ñ‚Ñга предÑтавлÑет пикÑел в центре главного объекта отноÑительно левого " -"краÑ, до обработки поворота ÑоглаÑно Ñ‚Ñгу . Первое значение " -"отображает номер Ñтолбца по X, а второй - номер Ñтроки по Y." - -#: src/tags.cpp:1752 -#, fuzzy -msgid "Exposure index" -msgstr "Режим ÑкÑпозиции" - -#: src/tags.cpp:1753 -msgid "" -"Indicates the exposure index selected on the camera or input device at the " -"time the image is captured." -msgstr "" - -#: src/tags.cpp:1757 -#, fuzzy -msgid "Indicates the image sensor type on the camera or input device." -msgstr "РаÑÑтоÑние до объекта в метрах" - -#: src/tags.cpp:1760 -#, fuzzy -msgid "" -"Indicates the image source. If a DSC recorded the image, this tag value of " -"this tag always be set to 3, indicating that the image was recorded on a DSC." -msgstr "" -"Этот Ñ‚Ñг отображает тип Ñцены. ЕÑли Ñто Ñнимок цифровой фотокамеры, то " -"значение Ñ‚Ñга вÑегда должно быть равно 1, что означает непоÑредÑтвенную " -"Ñъёмку." - -#: src/tags.cpp:1765 -msgid "" -"Indicates the type of scene. If a DSC recorded the image, this tag value " -"must always be set to 1, indicating that the image was directly photographed." -msgstr "" -"Этот Ñ‚Ñг отображает тип Ñцены. ЕÑли Ñто Ñнимок цифровой фотокамеры, то " -"значение Ñ‚Ñга вÑегда должно быть равно 1, что означает непоÑредÑтвенную " -"Ñъёмку." - -#: src/tags.cpp:1769 -#, fuzzy -msgid "Color Filter Array Pattern" -msgstr "Цветовое проÑтранÑтво" - -#: src/tags.cpp:1770 -msgid "" -"Indicates the color filter array (CFA) geometric pattern of the image sensor " -"when a one-chip color area sensor is used. It does not apply to all sensing " -"methods." -msgstr "" - -#: src/tags.cpp:1775 -msgid "" -"This tag indicates the use of special processing on image data, such as " -"rendering geared to output. When special processing is performed, the reader " -"is expected to disable or minimize any further processing." -msgstr "" - -#: src/tags.cpp:1781 -msgid "" -"This tag indicates the exposure mode set when the image was shot. In auto-" -"bracketing mode, the camera shoots a series of frames of the same scene at " -"different exposure settings." -msgstr "" -"Этот Ñ‚Ñг отображает режим ÑкÑпозиции при Ñъёмке изображениÑ. Ð’ режиме " -"автоматичеÑкого брекетинга камера делает Ñерию кадров одной и той же Ñцены Ñ " -"разными наÑтройками ÑкÑпозиции." - -#: src/tags.cpp:1786 -msgid "This tag indicates the white balance mode set when the image was shot." -msgstr "Этот Ñ‚Ñг отображает режим баланÑа белого при Ñъёмке изображениÑ." - -#: src/tags.cpp:1789 -msgid "" -"This tag indicates the digital zoom ratio when the image was shot. If the " -"numerator of the recorded value is 0, this indicates that digital zoom was " -"not used." -msgstr "" -"Этот Ñ‚Ñг отображает коÑффициент цифрового транÑфокатора при Ñъёмке " -"изображениÑ. ЕÑли значение равно 0, то цифровой транÑфокатор не был " -"иÑпользован." - -#: src/tags.cpp:1794 -#, fuzzy -msgid "" -"This tag indicates the equivalent focal length assuming a 35mm film camera, " -"in mm. A value of 0 means the focal length is unknown. Note that this tag " -"differs from the tag." -msgstr "" -"Этот Ñ‚Ñг отображает фокуÑное раÑÑтоÑние в 35мм плёночном Ñквиваленте, " -"измерÑемом миллиметрами. ЕÑли значение равно 0, то фокуÑное раÑÑтоÑние " -"неизвеÑтно. Обратите внимание на то, что Ñтот Ñ‚Ñг отличетÑÑ Ð¾Ñ‚ ." - -#: src/tags.cpp:1800 -#, fuzzy -msgid "" -"This tag indicates the type of scene that was shot. It can also be used to " -"record the mode in which the image was shot. Note that this differs from the " -" tag." -msgstr "" -"Этот Ñ‚Ñг отображает фокуÑное раÑÑтоÑние в 35мм плёночном Ñквиваленте, " -"измерÑемом миллиметрами. ЕÑли значение равно 0, то фокуÑное раÑÑтоÑние " -"неизвеÑтно. Обратите внимание на то, что Ñтот Ñ‚Ñг отличетÑÑ Ð¾Ñ‚ ." - -#: src/tags.cpp:1805 -#, fuzzy -msgid "This tag indicates the degree of overall image gain adjustment." -msgstr "Этот Ñ‚Ñг отображает режим баланÑа белого при Ñъёмке изображениÑ." - -#: src/tags.cpp:1808 -msgid "" -"This tag indicates the direction of contrast processing applied by the " -"camera when the image was shot." -msgstr "" -"Этот Ñ‚Ñг отображает направление обработки контраÑта при Ñъёмке изображениÑ" - -#: src/tags.cpp:1812 -msgid "" -"This tag indicates the direction of saturation processing applied by the " -"camera when the image was shot." -msgstr "" -"Этот Ñ‚Ñг отображает направление обработки наÑыщенноÑти при Ñъёмке изображениÑ" - -#: src/tags.cpp:1816 -msgid "" -"This tag indicates the direction of sharpness processing applied by the " -"camera when the image was shot." -msgstr "" -"Этот Ñ‚Ñг отображает направление обработки резкоÑти при Ñъёмке изображениÑ" - -#: src/tags.cpp:1820 -msgid "" -"This tag indicates information on the picture-taking conditions of a " -"particular camera model. The tag is used only to indicate the picture-taking " -"conditions in the reader." -msgstr "" - -#: src/tags.cpp:1825 -#, fuzzy -msgid "This tag indicates the distance to the subject." -msgstr "РаÑÑтоÑние до объекта в метрах" - -#: src/tags.cpp:1828 -msgid "" -"This tag indicates an identifier assigned uniquely to each image. It is " -"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " -"fixed length." -msgstr "" - -#: src/tags.cpp:1832 -#, fuzzy -msgid "Camera Owner Name" -msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" - -#: src/tags.cpp:1833 -msgid "" -"This tag records the owner of a camera used in photography as an ASCII " -"string." -msgstr "" - -#: src/tags.cpp:1836 -#, fuzzy -msgid "Body Serial Number" -msgstr "Серийный номер" - -#: src/tags.cpp:1837 -msgid "" -"This tag records the serial number of the body of the camera that was used " -"in photography as an ASCII string." -msgstr "" - -#: src/tags.cpp:1840 -#, fuzzy -msgid "Lens Specification" -msgstr "Ð¡Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð°Ñ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÐµÐ»Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ" - -#: src/tags.cpp:1841 -msgid "" -"This tag notes minimum focal length, maximum focal length, minimum F number " -"in the minimum focal length, and minimum F number in the maximum focal " -"length, which are specification information for the lens that was used in " -"photography. When the minimum F number is unknown, the notation is 0/0" -msgstr "" - -#: src/tags.cpp:1847 -#, fuzzy -msgid "Lens Make" -msgstr "Тип Ñцены" - -#: src/tags.cpp:1848 -msgid "This tag records the lens manufactor as an ASCII string." -msgstr "" - -#: src/tags.cpp:1851 -msgid "" -"This tag records the lens's model name and model number as an ASCII string." -msgstr "" - -#: src/tags.cpp:1855 -msgid "" -"This tag records the serial number of the interchangeable lens that was used " -"in photography as an ASCII string." -msgstr "" - -#: src/tags.cpp:1859 src/tags.cpp:1860 -msgid "Unknown Exif tag" -msgstr "ÐеизвеÑтный тег Exif" - -#: src/tags.cpp:1871 -msgid "North" -msgstr "Север" - -#: src/tags.cpp:1872 -msgid "South" -msgstr "Юг" - -#: src/tags.cpp:1877 -msgid "East" -msgstr "ВоÑток" - -#: src/tags.cpp:1878 -msgid "West" -msgstr "Запад" - -#: src/tags.cpp:1883 -msgid "Above sea level" -msgstr "Ðад уровнем морÑ" - -#: src/tags.cpp:1884 -msgid "Below sea level" -msgstr "Под уровнем морÑ" - -#: src/tags.cpp:1889 -msgid "Measurement in progress" -msgstr "ВыполнÑетÑÑ Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ðµ" - -#: src/tags.cpp:1890 -#, fuzzy -msgid "Measurement Interoperability" -msgstr "ВыполнÑетÑÑ Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ðµ" - -#: src/tags.cpp:1895 -msgid "Two-dimensional measurement" -msgstr "" - -#: src/tags.cpp:1896 -msgid "Three-dimensional measurement" -msgstr "" - -#: src/tags.cpp:1901 -msgid "km/h" -msgstr "км/ч" - -#: src/tags.cpp:1902 -msgid "mph" -msgstr "миль/ч" - -#: src/tags.cpp:1903 -msgid "knots" -msgstr "узлов" - -#: src/tags.cpp:1908 -#, fuzzy -msgid "True direction" -msgstr "Ðаправление Ñъёмки панорамы" - -#: src/tags.cpp:1909 -#, fuzzy -msgid "Magnetic direction" -msgstr "Ðаправление Ñнимка GPS" - -#: src/tags.cpp:1914 -#, fuzzy -msgid "Kilometers" -msgstr "ПорÑдок заполнениÑ" - -#: src/tags.cpp:1915 -#, fuzzy -msgid "Miles" -msgstr "Файл" - -#: src/tags.cpp:1916 -#, fuzzy -msgid "Knots" -msgstr "узлов" - -#: src/tags.cpp:1921 -msgid "Without correction" -msgstr "Без коррекции" - -#: src/tags.cpp:1922 -#, fuzzy -msgid "Correction applied" -msgstr "ТонкомпенÑациÑ" - -#: src/tags.cpp:1928 -msgid "" -"Indicates the version of . The version is given as 2.0.0.0. This " -"tag is mandatory when tag is present. (Note: The " -"tag is given in bytes, unlike the tag. When the version is " -"2.0.0.0, the tag value is 02000000.H)." -msgstr "" -"Показывает верÑию . Ð’ качеÑтве верÑии указываетÑÑ 2.0.0.0. При " -"наличии тега Ñтот тег обÑзателен. (Примечание: в отличие от тега " -" тег задаётÑÑ Ð² байтах. Когда верÑÐ¸Ñ Ñ€Ð°Ð²Ð½Ð° " -"2.0.0.0, значение тега равно 02000000.H)." - -#: src/tags.cpp:1934 -#, fuzzy -msgid "GPS Latitude Reference" -msgstr "Эталонный Чёрный/Белый" - -#: src/tags.cpp:1935 -msgid "" -"Indicates whether the latitude is north or south latitude. The ASCII value " -"'N' indicates north latitude, and 'S' is south latitude." -msgstr "" -"Показывает, ÑÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑˆÐ¸Ñ€Ð¾Ñ‚Ð° или же южнаÑ. ASCII-значение 'N' обозначает " -"Ñеверную широту, а 'S' - южную." - -#: src/tags.cpp:1939 -msgid "" -"Indicates the latitude. The latitude is expressed as three RATIONAL values " -"giving the degrees, minutes, and seconds, respectively. When degrees, " -"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " -"degrees and minutes are used and, for example, fractions of minutes are " -"given up to two decimal places, the format is dd/1,mmmm/100,0/1." -msgstr "" -"Отображает широту, выражаемую Ñ‚Ñ€ÐµÐ¼Ñ RATIONAL-значениÑми - градуÑами (dd), " -"минутами (mm) и Ñекундами (ss). При Ñто формат таков: dd/1,mm/1,ss/1. Когда " -"иÑпользуютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ градуÑÑ‹ и минуты, формат таков: dd/1,mmmm/100,0/1." - -#: src/tags.cpp:1946 -#, fuzzy -msgid "GPS Longitude Reference" -msgstr "Долгота по GPS" - -#: src/tags.cpp:1947 -msgid "" -"Indicates whether the longitude is east or west longitude. ASCII 'E' " -"indicates east longitude, and 'W' is west longitude." -msgstr "" -"Показывает, воÑÑ‚Ð¾Ñ‡Ð½Ð°Ñ Ð´Ð¾Ð»Ð³Ð¾Ñ‚Ð° или же западнаÑ. ASCII-значение 'E' обозначает " -"воÑточную долготу, а 'W' - западную." - -#: src/tags.cpp:1951 -msgid "" -"Indicates the longitude. The longitude is expressed as three RATIONAL values " -"giving the degrees, minutes, and seconds, respectively. When degrees, " -"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " -"degrees and minutes are used and, for example, fractions of minutes are " -"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." -msgstr "" -"Отображает долготу, выражаемую Ñ‚Ñ€Ñ‘Ð¼Ñ RATIONAL-значениÑми - градуÑами (dd), " -"минутами (mm) и Ñекундами (ss). При Ñто формат таков: ddd/1,mm/1,ss/1. Когда " -"иÑпользуютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ градуÑÑ‹ и минуты, формат таков: ddd/1,mmmm/100,0/1." - -#: src/tags.cpp:1959 -msgid "" -"Indicates the altitude used as the reference altitude. If the reference is " -"sea level and the altitude is above sea level, 0 is given. If the altitude " -"is below sea level, a value of 1 is given and the altitude is indicated as " -"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " -"that this tag is BYTE type, unlike other reference tags." -msgstr "" -"Отображает выÑоту, иÑпользуемую в качеÑтве Ñталона. ЕÑли Ñталоном ÑвлÑетÑÑ " -"уровень морÑ, а выÑота выше его, то указываетÑÑ 0. ЕÑли выÑота ниже ÑƒÑ€Ð¾Ð²Ð½Ñ " -"морÑ, то указываетÑÑ 1, а выÑота отображаетÑÑ ÐºÐ°Ðº абÑолютное значение в Ñ‚Ñге " -". Эталонной единицей Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ ÑвлÑетÑÑ Ð¼ÐµÑ‚Ñ€. Помните, что Ñтот " -"Ñ‚Ñг в отличие от других \"Ñталонных\" Ñ‚Ñгов имеет тип BYTE." - -#: src/tags.cpp:1967 -msgid "" -"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " -"expressed as one RATIONAL value. The reference unit is meters." -msgstr "" -"Отображает выÑоту, оÑновываÑÑÑŒ на Ñталоне из Ñ‚Ñга . Ð’Ñ‹Ñота " -"выражаетÑÑ RATIONAL значением. Эталонной единицей Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ ÑвлÑетÑÑ Ð¼ÐµÑ‚Ñ€." - -#: src/tags.cpp:1971 -msgid "" -"Indicates the time as UTC (Coordinated Universal Time). is " -"expressed as three RATIONAL values giving the hour, minute, and second " -"(atomic clock)." -msgstr "" - -#: src/tags.cpp:1976 -msgid "" -"Indicates the GPS satellites used for measurements. This tag can be used to " -"describe the number of satellites, their ID number, angle of elevation, " -"azimuth, SNR and other information in ASCII notation. The format is not " -"specified. If the GPS receiver is incapable of taking measurements, value of " -"the tag is set to NULL." -msgstr "" - -#: src/tags.cpp:1983 -msgid "" -"Indicates the status of the GPS receiver when the image is recorded. \"A\" " -"means measurement is in progress, and \"V\" means the measurement is " -"Interoperability." -msgstr "" - -#: src/tags.cpp:1988 -msgid "" -"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " -"and \"3\" means three-dimensional measurement is in progress." -msgstr "" - -#: src/tags.cpp:1991 -#, fuzzy -msgid "GPS Data Degree of Precision" -msgstr "ВерÑÐ¸Ñ Ñ‚Ñга GPS" - -#: src/tags.cpp:1992 -msgid "" -"Indicates the GPS DOP (data degree of precision). An HDOP value is written " -"during two-dimensional measurement, and PDOP during three-dimensional " -"measurement." -msgstr "" - -#: src/tags.cpp:1996 -msgid "" -"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " -"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." -msgstr "" - -#: src/tags.cpp:2000 -msgid "Indicates the speed of GPS receiver movement." -msgstr "СкороÑÑ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ñ‘Ð¼Ð½Ð¸ÐºÐ° GPS" - -#: src/tags.cpp:2002 -#, fuzzy -msgid "GPS Track Ref" -msgstr "Эталонный Чёрный/Белый" - -#: src/tags.cpp:2003 -msgid "" -"Indicates the reference for giving the direction of GPS receiver movement. " -"\"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" - -#: src/tags.cpp:2007 -msgid "" -"Indicates the direction of GPS receiver movement. The range of values is " -"from 0.00 to 359.99." -msgstr "" - -#: src/tags.cpp:2011 -msgid "" -"Indicates the reference for giving the direction of the image when it is " -"captured. \"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" - -#: src/tags.cpp:2015 -msgid "" -"Indicates the direction of the image when it was captured. The range of " -"values is from 0.00 to 359.99." -msgstr "" - -#: src/tags.cpp:2019 -msgid "" -"Indicates the geodetic survey data used by the GPS receiver. If the survey " -"data is restricted to Japan, the value of this tag is \"TOKYO\" or " -"\"WGS-84\"." -msgstr "" - -#: src/tags.cpp:2022 -#, fuzzy -msgid "GPS Destination Latitude Refeference" -msgstr "РаÑÑтоÑние до объекта" - -#: src/tags.cpp:2023 -#, fuzzy -msgid "" -"Indicates whether the latitude of the destination point is north or south " -"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " -"latitude." -msgstr "" -"Показывает, ÑÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑˆÐ¸Ñ€Ð¾Ñ‚Ð° или же южнаÑ. ASCII-значение 'N' обозначает " -"Ñеверную широту, а 'S' - южную." - -#: src/tags.cpp:2027 -#, fuzzy -msgid "" -"Indicates the latitude of the destination point. The latitude is expressed " -"as three RATIONAL values giving the degrees, minutes, and seconds, " -"respectively. If latitude is expressed as degrees, minutes and seconds, a " -"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " -"and, for example, fractions of minutes are given up to two decimal places, " -"the format would be dd/1,mmmm/100,0/1." -msgstr "" -"Отображает широту, выражаемую Ñ‚Ñ€Ñ‘Ð¼Ñ RATIONAL-значениÑми - градуÑами (dd), " -"минутами (mm) и Ñекундами (ss). При Ñто формат таков: dd/1,mm/1,ss/1. Когда " -"иÑпользуютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ градуÑÑ‹ и минуты, формат таков: dd/1,mmmm/100,0/1." - -#: src/tags.cpp:2034 -#, fuzzy -msgid "GPS Destination Longitude Reference" -msgstr "РаÑÑтоÑние до объекта" - -#: src/tags.cpp:2035 -#, fuzzy -msgid "" -"Indicates whether the longitude of the destination point is east or west " -"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." -msgstr "" -"Показывает, воÑÑ‚Ð¾Ñ‡Ð½Ð°Ñ Ð´Ð¾Ð»Ð³Ð¾Ñ‚Ð° или же западнаÑ. ASCII-значение 'E' обозначает " -"воÑточную долготу, а 'W' - западную." - -#: src/tags.cpp:2039 -#, fuzzy -msgid "" -"Indicates the longitude of the destination point. The longitude is expressed " -"as three RATIONAL values giving the degrees, minutes, and seconds, " -"respectively. If longitude is expressed as degrees, minutes and seconds, a " -"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " -"and, for example, fractions of minutes are given up to two decimal places, " -"the format would be ddd/1,mmmm/100,0/1." -msgstr "" -"Отображает долготу, выражаемую Ñ‚Ñ€Ñ‘Ð¼Ñ RATIONAL-значениÑми - градуÑами (dd), " -"минутами (mm) и Ñекундами (ss). При Ñто формат таков: ddd/1,mm/1,ss/1. Когда " -"иÑпользуютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ градуÑÑ‹ и минуты, формат таков: ddd/1,mmmm/100,0/1." - -#: src/tags.cpp:2046 -msgid "" -"Indicates the reference used for giving the bearing to the destination " -"point. \"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" - -#: src/tags.cpp:2050 -#, fuzzy -msgid "" -"Indicates the bearing to the destination point. The range of values is from " -"0.00 to 359.99." -msgstr "РаÑÑтоÑние до объекта в метрах" - -#: src/tags.cpp:2053 -#, fuzzy -msgid "GPS Destination Distance Reference" -msgstr "РаÑÑтоÑние до объекта" - -#: src/tags.cpp:2054 -msgid "" -"Indicates the unit used to express the distance to the destination point. \"K" -"\", \"M\" and \"N\" represent kilometers, miles and knots." -msgstr "" - -#: src/tags.cpp:2058 -#, fuzzy -msgid "Indicates the distance to the destination point." -msgstr "РаÑÑтоÑние до объекта в метрах" - -#: src/tags.cpp:2061 -msgid "" -"A character string recording the name of the method used for location " -"finding. The first byte indicates the character code used, and this is " -"followed by the name of the method." -msgstr "" - -#: src/tags.cpp:2066 -msgid "" -"A character string recording the name of the GPS area. The first byte " -"indicates the character code used, and this is followed by the name of the " -"GPS area." -msgstr "" - -#: src/tags.cpp:2069 -#, fuzzy -msgid "GPS Date Stamp" -msgstr "Отметка времени по GPS" - -#: src/tags.cpp:2070 -msgid "" -"A character string recording date and time information relative to UTC " -"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." -msgstr "" - -#: src/tags.cpp:2074 -#, fuzzy -msgid "" -"Indicates whether differential correction is applied to the GPS receiver." -msgstr "" -"Этот Ñ‚Ñг отображает направление обработки наÑыщенноÑти при Ñъёмке изображениÑ" - -#: src/tags.cpp:2077 src/tags.cpp:2078 -#, fuzzy -msgid "Unknown GPSInfo tag" -msgstr "ÐеизвеÑтный Ñ‚Ñг" - -#: src/tags.cpp:2089 -#, fuzzy -msgid "Interoperability Index" -msgstr "ВерÑÐ¸Ñ ÑовмеÑтимоÑти" - -#: src/tags.cpp:2090 -msgid "" -"Indicates the identification of the Interoperability rule. Use \"R98\" for " -"stating ExifR98 Rules. Four bytes used including the termination code " -"(NULL). see the separate volume of Recommended Exif Interoperability Rules " -"(ExifR98) for other tags used for ExifR98." -msgstr "" - -#: src/tags.cpp:2096 -msgid "Interoperability Version" -msgstr "ВерÑÐ¸Ñ ÑовмеÑтимоÑти" - -#: src/tags.cpp:2097 -msgid "Interoperability version" -msgstr "ВерÑÐ¸Ñ ÑовмеÑтимоÑти" - -#: src/tags.cpp:2099 -#, fuzzy -msgid "Related Image File Format" -msgstr "Ширина изображениÑ" - -#: src/tags.cpp:2100 -#, fuzzy -msgid "File format of image file" -msgstr "Ðе удалоÑÑŒ открыть файл\n" - -#: src/tags.cpp:2102 -#, fuzzy -msgid "Related Image Width" -msgstr "Ширина изображениÑ" - -#: src/tags.cpp:2105 -#, fuzzy -msgid "Related Image Length" -msgstr "Длина изображениÑ" - -#: src/tags.cpp:2109 src/tags.cpp:2110 -msgid "Unknown Exif Interoperability tag" -msgstr "ÐеизвеÑтный тег ÑовмеÑтимоÑти Ñ Exif" - -#: src/tags.cpp:2121 -#, fuzzy -msgid "Offset" -msgstr "быÑтрый" - -#: src/tags.cpp:2122 -msgid "Offset of the makernote from the start of the TIFF header." -msgstr "" - -#: src/tags.cpp:2124 -#, fuzzy -msgid "Byte Order" -msgstr "ПорÑдок заполнениÑ" - -#: src/tags.cpp:2125 -msgid "" -"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" -"endian)." -msgstr "" - -#: src/tags.cpp:2128 src/tags.cpp:2129 -#, fuzzy -msgid "Unknown Exiv2 Makernote info tag" -msgstr "ÐеизвеÑтный тег PentaxMakerNote" - -#: src/tags.cpp:2139 src/tags.cpp:2140 -msgid "Unknown tag" -msgstr "ÐеизвеÑтное поле" - -#: src/tags.cpp:2662 -msgid "Digital zoom not used" -msgstr "Цифровой транÑфокатор не иÑпользовалÑÑ" - -#: src/tiffimage.cpp:2034 -msgid "TIFF header, offset" -msgstr "" - -#: src/tiffimage.cpp:2039 -msgid "little endian encoded" -msgstr "" - -#: src/tiffimage.cpp:2040 -msgid "big endian encoded" -msgstr "" - -#, fuzzy -#~ msgid "Software firmware version" -#~ msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" - -#, fuzzy -#~ msgid "White Balance Bracketing " -#~ msgstr "ÐаÑтройка баланÑа белого" - -#~ msgid "(Unknown Error)" -#~ msgstr "(ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°)" - -#, fuzzy -#~ msgid "Exposure Speed" -#~ msgstr "Режим ÑкÑпозиции" - -#, fuzzy -#~ msgid "Exposure speed" -#~ msgstr "Режим ÑкÑпозиции" - -#, fuzzy -#~ msgid "Color balance settings 1" -#~ msgstr "ÐаÑтройка баланÑа белого" - -#~ msgid "Compression Curve" -#~ msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ ÑжатиÑ" - -#~ msgid "Compression curve" -#~ msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ ÑжатиÑ" - -#, fuzzy -#~ msgid "Color balance settings 2" -#~ msgstr "ÐаÑтройка баланÑа белого" - -#~ msgid "ImageStabilizer" -#~ msgstr "Стабилизатор изображениÑ" - -#~ msgid "Image stabilizer" -#~ msgstr "Стабилизатор изображениÑ" - -#~ msgid "bytes.\n" -#~ msgstr "байт.\n" - -#~ msgid "entry:\n" -#~ msgstr "запиÑÑŒ:\n" - -#~ msgid "entries:\n" -#~ msgstr "запиÑей:\n" - -#~ msgid "Next directory:\n" -#~ msgstr "Следующий каталог:\n" - -#~ msgid "No next directory\n" -#~ msgstr "Ðет Ñледующего каталога\n" - -#~ msgid "Sub-IFD" -#~ msgstr "Sub-IFD" - -#~ msgid "Makernote" -#~ msgstr "Данные производителÑ" - -#~ msgid "component" -#~ msgstr "компонент" - -#~ msgid "Erasing" -#~ msgstr "Удаление" - -#, fuzzy -#~ msgid "Writing XMP packet from" -#~ msgstr "ЗапиÑÑŒ данных EXIF из" - -#, fuzzy -#~ msgid "uncalibrated" -#~ msgstr "Ðе откалибровано" - -#, fuzzy -#~ msgid "not defined" -#~ msgstr "Ðе определено" - -#, fuzzy -#~ msgid "Normal program" -#~ msgstr "ТворчеÑÐºÐ°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð°" - -#, fuzzy -#~ msgid "unknown" -#~ msgstr "ÐеизвеÑтно" - -#, fuzzy -#~ msgid "centimeters" -#~ msgstr "Центральный" - -#, fuzzy -#~ msgid "Date Time" -#~ msgstr "Дата и времÑ" - -#, fuzzy -#~ msgid "Date Time Digitized" -#~ msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ Ð¾Ñ†Ð¸Ñ„Ñ€Ð¾Ð²ÐºÐ¸" - -#, fuzzy -#~ msgid "scene" -#~ msgstr "Центральный" - -#, fuzzy -#~ msgid "artist" -#~ msgstr "ИÑполнитель" - -#, fuzzy -#~ msgid "copyright" -#~ msgstr "ÐвторÑкие права" - -#, fuzzy -#~ msgid "releaseDate" -#~ msgstr "Дата пубикации" - -#, fuzzy -#~ msgid "CenterWeightedAverage" -#~ msgstr "Центрально-взвешенный Ñредний" - -#~ msgid "Jpeg comment" -#~ msgstr "Комментарий JPEG" diff --git a/platform/win32/msvc/external/exiv2/po/sk.gmo b/platform/win32/msvc/external/exiv2/po/sk.gmo deleted file mode 100644 index 49e0c8715fd..00000000000 Binary files a/platform/win32/msvc/external/exiv2/po/sk.gmo and /dev/null differ diff --git a/platform/win32/msvc/external/exiv2/po/sk.po b/platform/win32/msvc/external/exiv2/po/sk.po deleted file mode 100644 index 16371a99af9..00000000000 --- a/platform/win32/msvc/external/exiv2/po/sk.po +++ /dev/null @@ -1,23331 +0,0 @@ -# translation of exiv2 to Slovak -# Copyright (C) 2008-2012 Andreas Huggel -# This file is distributed under the same license as the exiv2 package. -# Ivan Masár , 2008. -# -msgid "" -msgstr "" -"Project-Id-Version: exiv2\n" -"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" -"POT-Creation-Date: 2012-03-23 18:06+0800\n" -"PO-Revision-Date: 2008-11-18 14:54+0100\n" -"Last-Translator: Ivan Masár \n" -"Language-Team: Slovak \n" -"Language: sk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Poedit-Language: Slovak\n" -"X-Poedit-Country: SLOVAKIA\n" - -#: src/actions.cpp:253 src/actions.cpp:486 src/actions.cpp:698 -#: src/actions.cpp:715 src/actions.cpp:760 src/actions.cpp:850 -#: src/actions.cpp:993 src/actions.cpp:1035 src/actions.cpp:1104 -#: src/actions.cpp:1146 src/actions.cpp:1151 src/actions.cpp:1171 -#: src/actions.cpp:1176 src/actions.cpp:1208 src/actions.cpp:1451 -#: src/actions.cpp:1587 src/actions.cpp:1652 src/actions.cpp:1820 -msgid "Failed to open the file\n" -msgstr "Nepodarilo sa otvoriÅ¥ súbor\n" - -#: src/actions.cpp:263 -msgid "File name" -msgstr "Názov súboru" - -#: src/actions.cpp:269 -msgid "File size" -msgstr "VeľkosÅ¥ súboru" - -#: src/actions.cpp:270 src/actions.cpp:422 src/actions.cpp:1019 -msgid "Bytes" -msgstr "bajtov" - -#: src/actions.cpp:274 -msgid "MIME type" -msgstr "MIME typ" - -#: src/actions.cpp:278 src/canonmn.cpp:785 src/minoltamn.cpp:500 -#: src/minoltamn.cpp:745 src/minoltamn.cpp:988 src/pentaxmn.cpp:892 -msgid "Image size" -msgstr "VeľkosÅ¥ obrázka" - -#: src/actions.cpp:283 src/actions.cpp:513 src/actions.cpp:773 -#: src/actions.cpp:1002 src/actions.cpp:1464 src/actions.cpp:1600 -#: src/actions.cpp:1665 -msgid "No Exif data found in the file\n" -msgstr "V súbore neboli nájdené žiadne EXIF údaje\n" - -#: src/actions.cpp:288 -msgid "Camera make" -msgstr "ZmaÄka fotoaparátu" - -#: src/actions.cpp:291 -msgid "Camera model" -msgstr "Model fotoaparátu" - -#: src/actions.cpp:294 -msgid "Image timestamp" -msgstr "ÄŒasová známka obrázka" - -#: src/actions.cpp:298 src/minoltamn.cpp:805 src/minoltamn.cpp:812 -#: src/minoltamn.cpp:1066 -msgid "Image number" -msgstr "Číslo obrázka" - -#: src/actions.cpp:303 src/minoltamn.cpp:515 src/minoltamn.cpp:798 -#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1368 src/pentaxmn.cpp:909 -#: src/pentaxmn.cpp:910 -msgid "Exposure time" -msgstr "ÄŒas expozície" - -#: src/actions.cpp:315 src/canonmn.cpp:903 src/minoltamn.cpp:1262 -#: src/tags.cpp:1627 -msgid "Aperture" -msgstr "Clona" - -#: src/actions.cpp:325 -msgid "Exposure bias" -msgstr "Skreslenie expozície" - -#: src/actions.cpp:328 src/canonmn.cpp:835 src/minoltamn.cpp:874 -#: src/minoltamn.cpp:1198 src/minoltamn.cpp:2098 src/panasonicmn.cpp:69 -#: src/pentaxmn.cpp:320 src/properties.cpp:563 src/sonymn.cpp:171 -#: src/tags.cpp:827 src/tags.cpp:1431 src/tags.cpp:1652 -msgid "Flash" -msgstr "Blesk" - -#: src/actions.cpp:331 src/canonmn.cpp:897 src/panasonicmn.cpp:249 -msgid "Flash bias" -msgstr "Skreslenie blesku" - -#: src/actions.cpp:336 src/canonmn.cpp:201 src/minoltamn.cpp:539 -#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1372 -msgid "Focal length" -msgstr "Ohnisková vzdialenosÅ¥" - -#: src/actions.cpp:341 -msgid "35 mm equivalent" -msgstr "ekvivalent 35 mm" - -# exif-subjectdistance -#: src/actions.cpp:351 -msgid "Subject distance" -msgstr "vzdialenosÅ¥ subjektu" - -#: src/actions.cpp:362 -msgid "ISO speed" -msgstr "ISO rýchlosÅ¥" - -#: src/actions.cpp:365 src/minoltamn.cpp:491 src/minoltamn.cpp:742 -#: src/minoltamn.cpp:985 src/minoltamn.cpp:1353 src/olympusmn.cpp:659 -#: src/sigmamn.cpp:75 -msgid "Exposure mode" -msgstr "Režim expozície" - -# exif-meteringmode -#: src/actions.cpp:368 src/minoltamn.cpp:509 src/minoltamn.cpp:1006 -#: src/minoltamn.cpp:1395 src/olympusmn.cpp:661 src/sigmamn.cpp:78 -msgid "Metering mode" -msgstr "merací režim" - -#: src/actions.cpp:371 src/canonmn.cpp:776 src/minoltamn.cpp:521 -#: src/olympusmn.cpp:202 src/olympusmn.cpp:663 src/panasonicmn.cpp:243 -msgid "Macro mode" -msgstr "režim makro" - -#: src/actions.cpp:374 src/minoltamn.cpp:133 src/minoltamn.cpp:503 -#: src/minoltamn.cpp:748 src/minoltamn.cpp:991 src/pentaxmn.cpp:889 -#: src/sonymn.cpp:275 -msgid "Image quality" -msgstr "Kvalita obrázka" - -#: src/actions.cpp:377 -msgid "Exif Resolution" -msgstr "Rozlíšenie exif" - -#: src/actions.cpp:406 src/canonmn.cpp:1140 src/minoltamn.cpp:178 -#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:994 -#: src/minoltamn.cpp:1377 src/nikonmn.cpp:226 src/nikonmn.cpp:472 -#: src/nikonmn.cpp:528 src/olympusmn.cpp:880 src/sigmamn.cpp:72 -#: src/sonymn.cpp:290 -msgid "White balance" -msgstr "Vyváženie bielej" - -#: src/actions.cpp:409 src/minoltamn.cpp:114 src/olympusmn.cpp:426 -msgid "Thumbnail" -msgstr "Náhľad" - -#: src/actions.cpp:413 src/actions.cpp:418 src/canonmn.cpp:339 -#: src/canonmn.cpp:1048 src/canonmn.cpp:1057 src/canonmn.cpp:1109 -#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2076 -#: src/nikonmn.cpp:173 src/nikonmn.cpp:188 src/nikonmn.cpp:903 -#: src/nikonmn.cpp:926 src/nikonmn.cpp:988 src/olympusmn.cpp:142 -#: src/olympusmn.cpp:720 src/olympusmn.cpp:727 src/olympusmn.cpp:1181 -#: src/olympusmn.cpp:1240 src/olympusmn.cpp:1337 src/olympusmn.cpp:1493 -#: src/olympusmn.cpp:1502 src/pentaxmn.cpp:230 src/pentaxmn.cpp:349 -#: src/pentaxmn.cpp:350 src/properties.cpp:914 src/properties.cpp:922 -#: src/tags.cpp:1510 -msgid "None" -msgstr "NiÄ" - -#: src/actions.cpp:428 src/datasets.cpp:376 src/properties.cpp:357 -#: src/properties.cpp:523 src/tags.cpp:762 -msgid "Copyright" -msgstr "Copyright" - -#: src/actions.cpp:431 -msgid "Exif comment" -msgstr "Komentár EXIF" - -#: src/actions.cpp:526 -msgid "No IPTC data found in the file\n" -msgstr "Neboli nájdené žiadne IPTC dáta v súbore\n" - -#: src/actions.cpp:539 -msgid "No XMP data found in the file\n" -msgstr "Neboli nájdené žiadne XMP dáta v súbore\n" - -#: src/actions.cpp:638 src/actions.cpp:663 src/actions.cpp:684 -msgid "(Binary value suppressed)" -msgstr "(binárna hodnota potlaÄená)" - -#: src/actions.cpp:705 -msgid "JPEG comment" -msgstr "Komentár JPEG" - -#: src/actions.cpp:730 -#, fuzzy -msgid "Preview" -msgstr "Dáta náhľadu" - -#: src/actions.cpp:734 src/actions.cpp:1074 src/properties.cpp:426 -msgid "pixels" -msgstr "pixelov" - -#: src/actions.cpp:736 src/actions.cpp:1076 -msgid "bytes" -msgstr "bajtov" - -#: src/actions.cpp:783 -msgid "Neither tag" -msgstr "Žiadna znaÄka" - -#: src/actions.cpp:784 -msgid "nor" -msgstr "nor" - -#: src/actions.cpp:785 -msgid "found in the file" -msgstr "nájdený v súbore" - -#: src/actions.cpp:790 -msgid "Image file creation timestamp not set in the file" -msgstr "ÄŒasová známka vytvorenia obrázka nebola v súbore nastavená" - -#: src/actions.cpp:796 src/actions.cpp:1553 -msgid "Failed to parse timestamp" -msgstr "Nepodarilo sa preÄítaÅ¥ Äasovú známku" - -#: src/actions.cpp:797 -msgid "in the file" -msgstr "v súbore" - -#: src/actions.cpp:808 -msgid "Updating timestamp to" -msgstr "ÄŒasová známka sa aktualizuje na" - -#: src/actions.cpp:902 -#, fuzzy -msgid "Erasing thumbnail data" -msgstr "bajtov údajov náhľadov" - -#: src/actions.cpp:910 -msgid "Erasing Exif data from the file" -msgstr "Vymazávajú sa Exif údaje zo súboru" - -#: src/actions.cpp:919 -msgid "Erasing IPTC data from the file" -msgstr "Vymazávajú sa IPTC údaje zo súboru" - -#: src/actions.cpp:928 -msgid "Erasing JPEG comment from the file" -msgstr "Vymazáva sa komentár JPEG zo súboru" - -#: src/actions.cpp:937 -msgid "Erasing XMP data from the file" -msgstr "Vymazávajú sa XMP dáta zo súboru" - -#: src/actions.cpp:1009 -msgid "Image does not contain an Exif thumbnail\n" -msgstr "Obrázok neobsahuje EXIF náhľad\n" - -#: src/actions.cpp:1018 -#, fuzzy -msgid "Writing thumbnail" -msgstr "náhľad" - -#: src/actions.cpp:1019 src/actions.cpp:1077 -msgid "to file" -msgstr "do súboru" - -#: src/actions.cpp:1025 -msgid "Exif data doesn't contain a thumbnail\n" -msgstr "EXIF údaje neobsahujú náhľad\n" - -#: src/actions.cpp:1055 src/actions.cpp:1081 -msgid "Image does not have preview" -msgstr "" - -#: src/actions.cpp:1070 -#, fuzzy -msgid "Writing preview" -msgstr "Zapisuje sa" - -#: src/actions.cpp:1241 -msgid "Setting JPEG comment" -msgstr "Nastavuje sa JPEG komentár" - -#: src/actions.cpp:1282 -msgid "Add" -msgstr "PridaÅ¥" - -#: src/actions.cpp:1304 src/actions.cpp:1378 -msgid "Warning" -msgstr "Upozornenie" - -#: src/actions.cpp:1305 src/actions.cpp:1379 -msgid "Failed to read" -msgstr "Nepodarilo sa preÄítaÅ¥" - -#: src/actions.cpp:1307 src/actions.cpp:1381 -msgid "value" -msgstr "hodnota" - -#: src/actions.cpp:1318 -msgid "Set" -msgstr "NastaviÅ¥" - -#: src/actions.cpp:1390 -msgid "Del" -msgstr "VymazaÅ¥" - -#: src/actions.cpp:1422 -msgid "Reg " -msgstr "Reg " - -#: src/actions.cpp:1506 -msgid "Timestamp of metadatum with key" -msgstr "ÄŒasová známka metadáta s kľúÄom" - -#: src/actions.cpp:1507 -msgid "not set\n" -msgstr "nenastavené\n" - -#: src/actions.cpp:1512 -msgid "Adjusting" -msgstr "DolaÄuje sa" - -#: src/actions.cpp:1512 -msgid "by" -msgstr "Autor" - -#: src/actions.cpp:1516 src/actions.cpp:1565 -msgid "years" -msgstr "rokov" - -#: src/actions.cpp:1519 -msgid "year" -msgstr "rok" - -#: src/actions.cpp:1527 -msgid "months" -msgstr "mesiacov" - -#: src/actions.cpp:1530 -msgid "month" -msgstr "mesiac" - -#: src/actions.cpp:1538 -msgid "days" -msgstr "dní" - -#: src/actions.cpp:1541 -msgid "day" -msgstr "deň" - -#: src/actions.cpp:1547 -msgid "s" -msgstr "s" - -#: src/actions.cpp:1563 -msgid "Can't adjust timestamp by" -msgstr "Nie je možné upraviÅ¥ Äasovú známku o" - -#: src/actions.cpp:1572 src/actions.cpp:1844 src/actions.cpp:1852 -#: src/actions.cpp:1860 src/actions.cpp:1869 src/actions.cpp:1979 -msgid "to" -msgstr "až" - -#: src/actions.cpp:1607 -msgid "Standard Exif ISO tag exists; not modified\n" -msgstr "Å tandardný EXIF ISO znaÄka už existuje; nebude sa meniÅ¥\n" - -#: src/actions.cpp:1615 -msgid "Setting Exif ISO value to" -msgstr "Nastavuje sa hodnota EXIF ISO na" - -#: src/actions.cpp:1671 -#, fuzzy -msgid "No Exif user comment found" -msgstr "Komentár EXIF" - -#: src/actions.cpp:1679 -msgid "Found Exif user comment with unexpected value type" -msgstr "" - -#: src/actions.cpp:1686 -msgid "No Exif UNICODE user comment found" -msgstr "" - -#: src/actions.cpp:1692 -#, fuzzy -msgid "Setting Exif UNICODE user comment to" -msgstr "Nastavuje sa hodnota EXIF ISO na" - -#: src/actions.cpp:1843 -msgid "Writing Exif data from" -msgstr "Zapisujú sa EXIF údaje z" - -#: src/actions.cpp:1851 -msgid "Writing IPTC data from" -msgstr "Zápis IPTC dát od" - -#: src/actions.cpp:1859 -msgid "Writing XMP data from" -msgstr "Zápis XMP dát od" - -#: src/actions.cpp:1868 -msgid "Writing JPEG comment from" -msgstr "Zápis JPEG komentára od" - -#: src/actions.cpp:1878 -msgid "Could not write metadata to file" -msgstr "Nepodarilo sa zapísaÅ¥ metadáta do súboru" - -#: src/actions.cpp:1905 -msgid "Filename format yields empty filename for the file" -msgstr "Formát názvu súboru dáva prázdny názov súboru" - -#: src/actions.cpp:1914 -msgid "This file already has the correct name" -msgstr "Tento súbor už má správny názov" - -#: src/actions.cpp:1938 src/exiv2.cpp:168 -msgid "File" -msgstr "Súbor" - -#: src/actions.cpp:1939 -msgid "exists. [O]verwrite, [r]ename or [s]kip?" -msgstr "existuje. [P]repísaÅ¥, p[r]emenovaÅ¥ alebo pre[s]koÄiÅ¥?" - -#: src/actions.cpp:1967 -msgid "Renaming file to" -msgstr "Súbor sa premenúva na" - -#: src/actions.cpp:1969 -msgid "updating timestamp" -msgstr "aktualizuje sa Äasová známka" - -#: src/actions.cpp:1978 -msgid "Failed to rename" -msgstr "Nepodarilo sa premenovaÅ¥" - -#: src/actions.cpp:2000 -msgid "Overwrite" -msgstr "PrepísaÅ¥" - -#: src/canonmn.cpp:58 src/canonmn.cpp:186 src/canonmn.cpp:245 -#: src/canonmn.cpp:260 src/canonmn.cpp:734 src/canonmn.cpp:747 -#: src/canonmn.cpp:1009 src/canonmn.cpp:1032 src/canonmn.cpp:1041 -#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 -#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 -#: src/minoltamn.cpp:1134 src/minoltamn.cpp:1275 src/minoltamn.cpp:1337 -#: src/minoltamn.cpp:1910 src/minoltamn.cpp:1924 src/minoltamn.cpp:1972 -#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 -#: src/nikonmn.cpp:204 src/nikonmn.cpp:641 src/nikonmn.cpp:666 -#: src/nikonmn.cpp:715 src/nikonmn.cpp:750 src/nikonmn.cpp:836 -#: src/nikonmn.cpp:881 src/nikonmn.cpp:968 src/nikonmn.cpp:1210 -#: src/nikonmn.cpp:1219 src/olympusmn.cpp:59 src/olympusmn.cpp:79 -#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 -#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:586 -#: src/olympusmn.cpp:648 src/olympusmn.cpp:912 src/olympusmn.cpp:1133 -#: src/olympusmn.cpp:1431 src/olympusmn.cpp:1432 src/olympusmn.cpp:1471 -#: src/panasonicmn.cpp:87 src/panasonicmn.cpp:94 src/panasonicmn.cpp:100 -#: src/panasonicmn.cpp:145 src/panasonicmn.cpp:154 src/panasonicmn.cpp:183 -#: src/panasonicmn.cpp:210 src/pentaxmn.cpp:183 src/pentaxmn.cpp:292 -#: src/pentaxmn.cpp:713 src/pentaxmn.cpp:719 src/sonymn.cpp:56 -#: src/sonymn.cpp:87 src/sonymn.cpp:141 src/sonymn.cpp:149 src/sonymn.cpp:156 -#: src/sonymn.cpp:199 src/sonymn.cpp:206 src/sonymn.cpp:237 src/sonymn.cpp:500 -msgid "Off" -msgstr "vypnutý" - -#: src/canonmn.cpp:59 src/canonmn.cpp:244 src/canonmn.cpp:262 -#: src/canonmn.cpp:735 src/canonmn.cpp:1035 src/fujimn.cpp:57 -#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 -#: src/minoltamn.cpp:1911 src/minoltamn.cpp:1923 src/nikonmn.cpp:63 -#: src/nikonmn.cpp:640 src/nikonmn.cpp:716 src/nikonmn.cpp:717 -#: src/nikonmn.cpp:1220 src/olympusmn.cpp:60 src/olympusmn.cpp:80 -#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 -#: src/olympusmn.cpp:1472 src/panasonicmn.cpp:93 src/pentaxmn.cpp:186 -#: src/pentaxmn.cpp:293 src/pentaxmn.cpp:714 src/sonymn.cpp:157 -#: src/sonymn.cpp:207 src/sonymn.cpp:238 -msgid "On" -msgstr "zapnutý" - -#: src/canonmn.cpp:69 -msgid "PowerShot A30" -msgstr "PowerShot A30" - -#: src/canonmn.cpp:70 -msgid "PowerShot S300 / Digital IXUS 300 / IXY Digital 300" -msgstr "PowerShot S300 / Digital IXUS 300 / IXY Digital 300" - -#: src/canonmn.cpp:71 -msgid "PowerShot A20" -msgstr "PowerShot A20" - -#: src/canonmn.cpp:72 -msgid "PowerShot A10" -msgstr "PowerShot A10" - -#: src/canonmn.cpp:73 -msgid "PowerShot S110 / Digital IXUS v / IXY Digital 200" -msgstr "PowerShot S110 / Digital IXUS v / IXY Digital 200" - -#: src/canonmn.cpp:74 -msgid "PowerShot G2" -msgstr "PowerShot G2" - -#: src/canonmn.cpp:75 -msgid "PowerShot S40" -msgstr "PowerShot S40" - -#: src/canonmn.cpp:76 -msgid "PowerShot S30" -msgstr "PowerShot S30" - -#: src/canonmn.cpp:77 -msgid "PowerShot A40" -msgstr "PowerShot A40" - -#: src/canonmn.cpp:78 -msgid "EOS D30" -msgstr "EOS D30" - -#: src/canonmn.cpp:79 -msgid "PowerShot A100" -msgstr "PowerShot A100" - -#: src/canonmn.cpp:80 -msgid "PowerShot S200 / Digital IXUS v2 / IXY Digital 200a" -msgstr "PowerShot S200 / Digital IXUS v2 / IXY Digital 200a" - -#: src/canonmn.cpp:81 -msgid "PowerShot A200" -msgstr "PowerShot A200" - -#: src/canonmn.cpp:82 -msgid "PowerShot S330 / Digital IXUS 330 / IXY Digital 300a" -msgstr "PowerShot S330 / Digital IXUS 330 / IXY Digital 300a" - -#: src/canonmn.cpp:83 -msgid "PowerShot G3" -msgstr "PowerShot G3" - -#: src/canonmn.cpp:84 -msgid "PowerShot S45" -msgstr "PowerShot S45" - -#: src/canonmn.cpp:85 -msgid "PowerShot SD100 / Digital IXUS II / IXY Digital 30" -msgstr "PowerShot SD100 / Digital IXUS II / IXY Digital 30" - -#: src/canonmn.cpp:86 -msgid "PowerShot S230 / Digital IXUS v3 / IXY Digital 320" -msgstr "PowerShot S230 / Digital IXUS v3 / IXY Digital 320" - -#: src/canonmn.cpp:87 -msgid "PowerShot A70" -msgstr "PowerShot A70" - -#: src/canonmn.cpp:88 -msgid "PowerShot A60" -msgstr "PowerShot A60" - -#: src/canonmn.cpp:89 -msgid "PowerShot S400 / Digital IXUS 400 / IXY Digital 400" -msgstr "PowerShot S400 / Digital IXUS 400 / IXY Digital 400" - -#: src/canonmn.cpp:90 -msgid "PowerShot G5" -msgstr "PowerShot G5" - -#: src/canonmn.cpp:91 -msgid "PowerShot A300" -msgstr "PowerShot A300" - -#: src/canonmn.cpp:92 -msgid "PowerShot S50" -msgstr "PowerShot S50" - -#: src/canonmn.cpp:93 -msgid "PowerShot A80" -msgstr "PowerShot A80" - -#: src/canonmn.cpp:94 -msgid "PowerShot SD10 / Digital IXUS i / IXY Digital L" -msgstr "PowerShot SD10 / Digital IXUS i / IXY Digital L" - -#: src/canonmn.cpp:95 -msgid "PowerShot S1 IS" -msgstr "PowerShot S1 IS" - -#: src/canonmn.cpp:96 -msgid "PowerShot Pro1" -msgstr "PowerShot Pro1" - -#: src/canonmn.cpp:97 -msgid "PowerShot S70" -msgstr "PowerShot S70" - -#: src/canonmn.cpp:98 -msgid "PowerShot S60" -msgstr "PowerShot S60" - -#: src/canonmn.cpp:99 -msgid "PowerShot G6" -msgstr "PowerShot G6" - -#: src/canonmn.cpp:100 -msgid "PowerShot S500 / Digital IXUS 500 / IXY Digital 500" -msgstr "PowerShot S500 / Digital IXUS 500 / IXY Digital 500" - -#: src/canonmn.cpp:101 -msgid "PowerShot A75" -msgstr "PowerShot A75" - -#: src/canonmn.cpp:102 -msgid "PowerShot SD110 / Digital IXUS IIs / IXY Digital 30a" -msgstr "PowerShot SD110 / Digital IXUS IIs / IXY Digital 30a" - -#: src/canonmn.cpp:103 -msgid "PowerShot A400" -msgstr "PowerShot A400" - -#: src/canonmn.cpp:104 -msgid "PowerShot A310" -msgstr "PowerShot A310" - -#: src/canonmn.cpp:105 -msgid "PowerShot A85" -msgstr "PowerShot A85" - -#: src/canonmn.cpp:106 -msgid "PowerShot S410 / Digital IXUS 430 / IXY Digital 450" -msgstr "PowerShot S410 / Digital IXUS 430 / IXY Digital 450" - -#: src/canonmn.cpp:107 -msgid "PowerShot A95" -msgstr "PowerShot A95" - -#: src/canonmn.cpp:108 -msgid "PowerShot SD300 / Digital IXUS 40 / IXY Digital 50" -msgstr "PowerShot SD300 / Digital IXUS 40 / IXY Digital 50" - -#: src/canonmn.cpp:109 -msgid "PowerShot SD200 / Digital IXUS 30 / IXY Digital 40" -msgstr "PowerShot SD200 / Digital IXUS 30 / IXY Digital 40" - -#: src/canonmn.cpp:110 -msgid "PowerShot A520" -msgstr "PowerShot A520" - -#: src/canonmn.cpp:111 -msgid "PowerShot A510" -msgstr "PowerShot A510" - -#: src/canonmn.cpp:112 -msgid "PowerShot SD20 / Digital IXUS i5 / IXY Digital L2" -msgstr "PowerShot SD20 / Digital IXUS i5 / IXY Digital L2" - -#: src/canonmn.cpp:113 -msgid "PowerShot S2 IS" -msgstr "PowerShot S2 IS" - -#: src/canonmn.cpp:114 -msgid "PowerShot SD430 / IXUS Wireless / IXY Wireless" -msgstr "PowerShot SD430 / IXUS Wireless / IXY Wireless" - -#: src/canonmn.cpp:115 -msgid "PowerShot SD500 / Digital IXUS 700 / IXY Digital 600" -msgstr "PowerShot SD500 / Digital IXUS 700 / IXY Digital 600" - -#: src/canonmn.cpp:116 -msgid "EOS D60" -msgstr "EOS D60" - -#: src/canonmn.cpp:117 -msgid "PowerShot SD30 / Digital IXUS i zoom / IXY Digital L3" -msgstr "PowerShot SD30 / Digital IXUS i zoom / IXY Digital L3" - -#: src/canonmn.cpp:118 -msgid "PowerShot A430" -msgstr "PowerShot A430" - -#: src/canonmn.cpp:119 -msgid "PowerShot A410" -msgstr "PowerShot A410" - -#: src/canonmn.cpp:120 -msgid "PowerShot S80" -msgstr "PowerShot S80" - -#: src/canonmn.cpp:121 -msgid "PowerShot A620" -msgstr "PowerShot A620" - -#: src/canonmn.cpp:122 -msgid "PowerShot A610" -msgstr "PowerShot A610" - -#: src/canonmn.cpp:123 -msgid "PowerShot SD630 / Digital IXUS 65 / IXY Digital 80" -msgstr "PowerShot SD630 / Digital IXUS 65 / IXY Digital 80" - -#: src/canonmn.cpp:124 -msgid "PowerShot SD450 / Digital IXUS 55 / IXY Digital 60" -msgstr "PowerShot SD450 / Digital IXUS 55 / IXY Digital 60" - -#: src/canonmn.cpp:125 -msgid "PowerShot TX1" -msgstr "PowerShot TX1" - -#: src/canonmn.cpp:126 -msgid "PowerShot SD400 / Digital IXUS 50 / IXY Digital 55" -msgstr "PowerShot SD400 / Digital IXUS 50 / IXY Digital 55" - -#: src/canonmn.cpp:127 -msgid "PowerShot A420" -msgstr "PowerShot A420" - -#: src/canonmn.cpp:128 -msgid "PowerShot SD900 / Digital IXUS 900 Ti / IXY Digital 1000" -msgstr "PowerShot SD900 / Digital IXUS 900 Ti / IXY Digital 1000" - -#: src/canonmn.cpp:129 -msgid "PowerShot SD550 / Digital IXUS 750 / IXY Digital 700" -msgstr "PowerShot SD550 / Digital IXUS 750 / IXY Digital 700" - -#: src/canonmn.cpp:130 -msgid "PowerShot A700" -msgstr "PowerShot A700" - -#: src/canonmn.cpp:131 -msgid "PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS" -msgstr "PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS" - -#: src/canonmn.cpp:132 -msgid "PowerShot S3 IS" -msgstr "PowerShot S3 IS" - -#: src/canonmn.cpp:133 -msgid "PowerShot A540" -msgstr "PowerShot A540" - -#: src/canonmn.cpp:134 -msgid "PowerShot SD600 / Digital IXUS 60 / IXY Digital 70" -msgstr "PowerShot SD600 / Digital IXUS 60 / IXY Digital 70" - -#: src/canonmn.cpp:135 -msgid "PowerShot G7" -msgstr "PowerShot G7" - -#: src/canonmn.cpp:136 -msgid "PowerShot A530" -msgstr "PowerShot A530" - -#: src/canonmn.cpp:137 -msgid "PowerShot SD800 IS / Digital IXUS 850 IS / IXY Digital 900 IS" -msgstr "PowerShot SD800 IS / Digital IXUS 850 IS / IXY Digital 900 IS" - -#: src/canonmn.cpp:138 -msgid "PowerShot SD40 / Digital IXUS i7 / IXY Digital L4" -msgstr "PowerShot SD40 / Digital IXUS i7 / IXY Digital L4" - -#: src/canonmn.cpp:139 -msgid "PowerShot A710 IS" -msgstr "PowerShot A710 IS" - -#: src/canonmn.cpp:140 -msgid "PowerShot A640" -msgstr "PowerShot A640" - -#: src/canonmn.cpp:141 -msgid "PowerShot A630" -msgstr "PowerShot A630" - -#: src/canonmn.cpp:142 -msgid "PowerShot S5 IS" -msgstr "PowerShot S5 IS" - -#: src/canonmn.cpp:143 -msgid "PowerShot A460" -msgstr "PowerShot A460" - -#: src/canonmn.cpp:144 -msgid "PowerShot SD850 IS / Digital IXUS 950 IS" -msgstr "PowerShot SD850 IS / Digital IXUS 950 IS" - -#: src/canonmn.cpp:145 -msgid "PowerShot A570 IS" -msgstr "PowerShot A570 IS" - -#: src/canonmn.cpp:146 -msgid "PowerShot A560" -msgstr "PowerShot A560" - -#: src/canonmn.cpp:147 -msgid "PowerShot SD750 / Digital IXUS 75 / IXY Digital 90" -msgstr "PowerShot SD750 / Digital IXUS 75 / IXY Digital 90" - -#: src/canonmn.cpp:148 -msgid "PowerShot SD1000 / Digital IXUS 70 / IXY Digital 10" -msgstr "PowerShot SD1000 / Digital IXUS 70 / IXY Digital 10" - -#: src/canonmn.cpp:149 -msgid "PowerShot A550" -msgstr "PowerShot A550" - -#: src/canonmn.cpp:150 -msgid "PowerShot A450" -msgstr "PowerShot A450" - -#: src/canonmn.cpp:151 -msgid "PowerShot Pro90 IS" -msgstr "PowerShot Pro90 IS" - -#: src/canonmn.cpp:152 -msgid "PowerShot G1" -msgstr "PowerShot G1" - -#: src/canonmn.cpp:153 -msgid "PowerShot S100 / Digital IXUS / IXY Digital" -msgstr "PowerShot S100 / Digital IXUS / IXY Digital" - -#: src/canonmn.cpp:154 -msgid "HV10" -msgstr "HV10" - -#: src/canonmn.cpp:155 -msgid "iVIS DC50" -msgstr "iVIS DC50" - -#: src/canonmn.cpp:156 -msgid "iVIS HV20" -msgstr "iVIS HV20" - -#: src/canonmn.cpp:157 -msgid "EOS-1D" -msgstr "EOS-1D" - -#: src/canonmn.cpp:158 -msgid "EOS-1DS" -msgstr "EOS-1DS" - -#: src/canonmn.cpp:159 -msgid "EOS 10D" -msgstr "EOS 10D" - -#: src/canonmn.cpp:160 -msgid "EOS-1D Mark III" -msgstr "EOS-1D Mark III" - -#: src/canonmn.cpp:161 -msgid "EOS Digital Rebel / 300D / Kiss Digital" -msgstr "EOS Digital Rebel / 300D / Kiss Digital" - -#: src/canonmn.cpp:162 -msgid "EOS-1D Mark II" -msgstr "EOS-1D Mark II" - -#: src/canonmn.cpp:163 -msgid "EOS 20D" -msgstr "EOS 20D" - -#: src/canonmn.cpp:164 -msgid "EOS-1Ds Mark II" -msgstr "EOS-1Ds Mark II" - -#: src/canonmn.cpp:165 -msgid "EOS Digital Rebel XT / 350D / Kiss Digital N" -msgstr "EOS Digital Rebel XT / 350D / Kiss Digital N" - -#: src/canonmn.cpp:166 -msgid "EOS 5D" -msgstr "EOS 5D" - -#: src/canonmn.cpp:167 -msgid "EOS-1D Mark II N" -msgstr "EOS-1D Mark II N" - -#: src/canonmn.cpp:168 -msgid "EOS 30D" -msgstr "EOS 30D" - -#: src/canonmn.cpp:169 -msgid "EOS Digital Rebel XTi / 400D / Kiss Digital X" -msgstr "EOS Digital Rebel XTi / 400D / Kiss Digital X" - -#: src/canonmn.cpp:170 -#, fuzzy -msgid "EOS 7D" -msgstr "EOS 5D" - -#: src/canonmn.cpp:171 -#, fuzzy -msgid "EOS Rebel T1i / 500D / Kiss X3" -msgstr "EOS Digital Rebel XTi / 400D / Kiss Digital X" - -#: src/canonmn.cpp:172 -#, fuzzy -msgid "EOS Rebel XS / 1000D / Kiss F" -msgstr "EOS Digital Rebel / 300D / Kiss Digital" - -#: src/canonmn.cpp:173 -#, fuzzy -msgid "EOS 50D" -msgstr "EOS 5D" - -#: src/canonmn.cpp:174 -#, fuzzy -msgid "EOS Rebel T2i / 550D / Kiss X4" -msgstr "EOS Digital Rebel XTi / 400D / Kiss Digital X" - -#: src/canonmn.cpp:175 -#, fuzzy -msgid "EOS-1D Mark IV" -msgstr "EOS-1D Mark II" - -#: src/canonmn.cpp:180 -#, fuzzy -msgid "Format 1" -msgstr "Formát" - -#: src/canonmn.cpp:181 -#, fuzzy -msgid "Format 2" -msgstr "Formát" - -#: src/canonmn.cpp:187 src/nikonmn.cpp:1211 -#, fuzzy -msgid "On (1)" -msgstr "zapnutý" - -#: src/canonmn.cpp:188 src/nikonmn.cpp:1212 -#, fuzzy -msgid "On (2)" -msgstr "zapnutý" - -#: src/canonmn.cpp:193 src/minoltamn.cpp:1142 src/nikonmn.cpp:136 -#: src/olympusmn.cpp:595 src/olympusmn.cpp:774 src/olympusmn.cpp:839 -#: src/pentaxmn.cpp:548 src/tags.cpp:1452 -msgid "sRGB" -msgstr "sRGB" - -#: src/canonmn.cpp:194 src/canonmn.cpp:1113 src/minoltamn.cpp:359 -#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 -#: src/minoltamn.cpp:1143 src/nikonmn.cpp:137 src/olympusmn.cpp:596 -#: src/olympusmn.cpp:775 src/olympusmn.cpp:840 src/pentaxmn.cpp:549 -#: src/sonymn.cpp:482 src/sonymn.cpp:507 src/tags.cpp:1453 -msgid "Adobe RGB" -msgstr "Adobe RGB" - -#: src/canonmn.cpp:199 src/canonmn.cpp:202 src/canonmn.cpp:227 -#: src/canonmn.cpp:228 src/canonmn.cpp:229 src/canonmn.cpp:781 -#: src/canonmn.cpp:783 src/canonmn.cpp:784 src/canonmn.cpp:796 -#: src/canonmn.cpp:805 src/canonmn.cpp:806 src/canonmn.cpp:813 -#: src/canonmn.cpp:883 src/canonmn.cpp:888 src/canonmn.cpp:890 -#: src/canonmn.cpp:892 src/canonmn.cpp:893 src/canonmn.cpp:894 -#: src/canonmn.cpp:895 src/canonmn.cpp:898 src/canonmn.cpp:899 -#: src/canonmn.cpp:900 src/canonmn.cpp:902 src/canonmn.cpp:906 -#: src/canonmn.cpp:907 src/canonmn.cpp:908 src/fujimn.cpp:214 -#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:238 -#: src/nikonmn.cpp:303 src/nikonmn.cpp:457 src/nikonmn.cpp:478 -#: src/nikonmn.cpp:487 src/nikonmn.cpp:533 src/nikonmn.cpp:585 -#: src/nikonmn.cpp:588 src/nikonmn.cpp:591 src/nikonmn.cpp:1003 -#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1495 src/nikonmn.cpp:2554 -#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 -#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 -#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 -#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 -#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 -#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 -#: src/olympusmn.cpp:1039 src/panasonicmn.cpp:239 src/panasonicmn.cpp:247 -#: src/panasonicmn.cpp:252 src/panasonicmn.cpp:260 src/panasonicmn.cpp:262 -#: src/panasonicmn.cpp:280 src/pentaxmn.cpp:323 src/properties.cpp:809 -#: src/properties.cpp:816 src/sonymn.cpp:293 src/sonymn.cpp:312 -#: src/sonymn.cpp:318 src/sonymn.cpp:321 src/sonymn.cpp:330 src/sonymn.cpp:333 -#: src/sonymn.cpp:336 src/sonymn.cpp:339 src/tags.cpp:1414 src/tags.cpp:1427 -#: src/tags.cpp:1533 src/tags.cpp:2565 src/tags.cpp:2678 -msgid "Unknown" -msgstr "Neznáme" - -#: src/canonmn.cpp:200 src/olympusmn.cpp:450 src/sonymn.cpp:286 -#: src/sonymn.cpp:287 -msgid "Camera Settings" -msgstr "Nastavenie fotoaparátu" - -#: src/canonmn.cpp:200 -msgid "Various camera settings" -msgstr "Rôzne nastavenia fotoaparátu" - -#: src/canonmn.cpp:201 src/minoltamn.cpp:538 src/nikonmn.cpp:1347 -#: src/nikonmn.cpp:1372 src/properties.cpp:564 src/tags.cpp:828 -#: src/tags.cpp:1655 -msgid "Focal Length" -msgstr "Ohnisková vzdialenosÅ¥" - -#: src/canonmn.cpp:203 src/sonymn.cpp:345 -msgid "Shot Info" -msgstr "Info o snímke" - -#: src/canonmn.cpp:203 -msgid "Shot information" -msgstr "Informácie o snímke" - -#: src/canonmn.cpp:204 src/olympusmn.cpp:101 src/olympusmn.cpp:1152 -#: src/sonymn.cpp:124 src/sonymn.cpp:308 src/sonymn.cpp:309 -msgid "Panorama" -msgstr "panoráma" - -#: src/canonmn.cpp:205 src/datasets.cpp:396 src/properties.cpp:761 -msgid "Image Type" -msgstr "Typ obrázka" - -#: src/canonmn.cpp:205 -msgid "Image type" -msgstr "Typ obrázka" - -#: src/canonmn.cpp:206 src/panasonicmn.cpp:237 -msgid "Firmware Version" -msgstr "Verzia firmvéru" - -#: src/canonmn.cpp:206 src/panasonicmn.cpp:237 -msgid "Firmware version" -msgstr "Verzia firmvéru" - -#: src/canonmn.cpp:207 src/canonmn.cpp:1066 src/nikonmn.cpp:869 -#, fuzzy -msgid "File Number" -msgstr "Äíslo F" - -#: src/canonmn.cpp:207 src/nikonmn.cpp:869 -#, fuzzy -msgid "File number" -msgstr "Názov súboru" - -#: src/canonmn.cpp:208 -msgid "Owner Name" -msgstr "Meno vlastníka" - -#: src/canonmn.cpp:209 src/fujimn.cpp:182 src/nikonmn.cpp:550 -#: src/olympusmn.cpp:741 src/pentaxmn.cpp:1120 src/pentaxmn.cpp:1121 -#: src/sigmamn.cpp:56 -msgid "Serial Number" -msgstr "Sériové Äíslo" - -#: src/canonmn.cpp:209 src/sigmamn.cpp:57 -msgid "Camera serial number" -msgstr "Sériové Äíslo fotoaparátu" - -#: src/canonmn.cpp:210 -#, fuzzy -msgid "Camera Info" -msgstr "Info o fotoaparáte" - -#: src/canonmn.cpp:210 -#, fuzzy -msgid "Camera info" -msgstr "Info o fotoaparáte" - -#: src/canonmn.cpp:211 src/canonmn.cpp:223 -msgid "Custom Functions" -msgstr "Vlastné funkcie" - -#: src/canonmn.cpp:212 -msgid "ModelID" -msgstr "ID modelu" - -#: src/canonmn.cpp:212 -msgid "Model ID" -msgstr "ID modelu" - -#: src/canonmn.cpp:213 src/olympusmn.cpp:219 -msgid "Picture Info" -msgstr "Informácie o obrázku" - -#: src/canonmn.cpp:213 -msgid "Picture info" -msgstr "Informácie o obrázku" - -#: src/canonmn.cpp:214 -#, fuzzy -msgid "Thumbnail Image Valid Area" -msgstr "Náhľad" - -#: src/canonmn.cpp:214 -#, fuzzy -msgid "Thumbnail image valid area" -msgstr "Náhľad" - -#: src/canonmn.cpp:215 -#, fuzzy -msgid "Serial Number Format" -msgstr "Sériové Äíslo 1" - -#: src/canonmn.cpp:215 -#, fuzzy -msgid "Serial number format" -msgstr "Sériové Äíslo 2" - -#: src/canonmn.cpp:216 src/minoltamn.cpp:2042 src/olympusmn.cpp:110 -#: src/olympusmn.cpp:503 src/pentaxmn.cpp:202 -#, fuzzy -msgid "Super Macro" -msgstr "super makro" - -#: src/canonmn.cpp:216 src/canonmn.cpp:323 src/canonmn.cpp:393 -#: src/olympusmn.cpp:81 -msgid "Super macro" -msgstr "super makro" - -#: src/canonmn.cpp:217 src/nikonmn.cpp:567 -#, fuzzy -msgid "AF Info" -msgstr "Info o AZ" - -#: src/canonmn.cpp:217 src/nikonmn.cpp:567 -#, fuzzy -msgid "AF info" -msgstr "Info o AZ" - -#: src/canonmn.cpp:218 -msgid "Original Decision Data Offset" -msgstr "" - -#: src/canonmn.cpp:218 -msgid "Original decision data offset" -msgstr "" - -#: src/canonmn.cpp:219 -msgid "White Balance Table" -msgstr "Tabuľka vyváženia bielej" - -#: src/canonmn.cpp:219 -msgid "White balance table" -msgstr "Tabuľka vyváženia bielej" - -#: src/canonmn.cpp:220 -#, fuzzy -msgid "LensModel" -msgstr "Model Å¡oÅ¡oviek" - -#: src/canonmn.cpp:221 src/olympusmn.cpp:742 src/panasonicmn.cpp:250 -#, fuzzy -msgid "Internal Serial Number" -msgstr "Sériové Äíslo fotoaparátu" - -#: src/canonmn.cpp:221 src/olympusmn.cpp:742 -#, fuzzy -msgid "Internal serial number" -msgstr "Sériové Äíslo fotoaparátu" - -#: src/canonmn.cpp:222 -msgid "Dust Removal Data" -msgstr "" - -#: src/canonmn.cpp:222 -msgid "Dust removal data" -msgstr "" - -#: src/canonmn.cpp:223 -#, fuzzy -msgid "Custom functions" -msgstr "Vlastné funkcie" - -#: src/canonmn.cpp:224 -#, fuzzy -msgid "Processing Info" -msgstr "Softvér použitý na spracovanie" - -#: src/canonmn.cpp:224 -#, fuzzy -msgid "Processing info" -msgstr "Softvér použitý na spracovanie" - -#: src/canonmn.cpp:225 -#, fuzzy -msgid "Measured Color" -msgstr "Prirodzená farba" - -#: src/canonmn.cpp:225 -#, fuzzy -msgid "Measured color" -msgstr "Prirodzená farba" - -#: src/canonmn.cpp:226 -#, fuzzy -msgid "ColorSpace" -msgstr "Farebný priestor" - -#: src/canonmn.cpp:230 -#, fuzzy -msgid "VRD Offset" -msgstr "Ofset" - -#: src/canonmn.cpp:230 -#, fuzzy -msgid "VRD offset" -msgstr "ofset" - -#: src/canonmn.cpp:231 -#, fuzzy -msgid "Sensor Info" -msgstr "Info o Å¡oÅ¡ovkách" - -#: src/canonmn.cpp:231 -#, fuzzy -msgid "Sensor info" -msgstr "Info o snímke" - -#: src/canonmn.cpp:232 -#, fuzzy -msgid "Color Data" -msgstr "Matica farieb" - -#: src/canonmn.cpp:232 -#, fuzzy -msgid "Color data" -msgstr "moje farebné údaje" - -#: src/canonmn.cpp:234 -msgid "Unknown CanonMakerNote tag" -msgstr "Neznáma znaÄka CanonMakerNote" - -#: src/canonmn.cpp:250 src/minoltamn.cpp:78 src/minoltamn.cpp:246 -#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2060 -msgid "Economy" -msgstr "ekonomický" - -#: src/canonmn.cpp:251 src/canonmn.cpp:349 src/fujimn.cpp:64 src/fujimn.cpp:84 -#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 -#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 -#: src/nikonmn.cpp:207 src/nikonmn.cpp:428 src/olympusmn.cpp:150 -#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1108 -#: src/olympusmn.cpp:1150 src/panasonicmn.cpp:56 src/panasonicmn.cpp:101 -#: src/panasonicmn.cpp:161 src/panasonicmn.cpp:197 src/pentaxmn.cpp:198 -#: src/pentaxmn.cpp:343 src/pentaxmn.cpp:356 src/pentaxmn.cpp:367 -#: src/sonymn.cpp:134 src/sonymn.cpp:216 src/sonymn.cpp:222 src/tags.cpp:1519 -#: src/tags.cpp:1526 -msgid "Normal" -msgstr "Normálny" - -#: src/canonmn.cpp:252 src/minoltamn.cpp:76 src/minoltamn.cpp:244 -#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2004 -#: src/minoltamn.cpp:2058 src/sonymn.cpp:135 -msgid "Fine" -msgstr "jemný" - -#: src/canonmn.cpp:253 src/olympusmn.cpp:643 src/pentaxmn.cpp:156 -msgid "RAW" -msgstr "RAW" - -#: src/canonmn.cpp:254 -msgid "Superfine" -msgstr "superjemný" - -#: src/canonmn.cpp:255 -#, fuzzy -msgid "Normal Movie" -msgstr "Bežné spracovanie" - -#: src/canonmn.cpp:261 src/canonmn.cpp:357 src/canonmn.cpp:385 -#: src/canonmn.cpp:830 src/canonmn.cpp:1036 src/fujimn.cpp:71 -#: src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 -#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 -#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 -#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1119 -#: src/minoltamn.cpp:1182 src/minoltamn.cpp:1235 src/minoltamn.cpp:1976 -#: src/minoltamn.cpp:2043 src/minoltamn.cpp:2092 src/nikonmn.cpp:81 -#: src/nikonmn.cpp:445 src/olympusmn.cpp:94 src/olympusmn.cpp:156 -#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:605 -#: src/olympusmn.cpp:1196 src/olympusmn.cpp:1202 src/olympusmn.cpp:1203 -#: src/panasonicmn.cpp:64 src/panasonicmn.cpp:77 src/pentaxmn.cpp:56 -#: src/pentaxmn.cpp:211 src/pentaxmn.cpp:311 src/sonymn.cpp:57 -#: src/sonymn.cpp:90 src/sonymn.cpp:105 src/sonymn.cpp:163 src/sonymn.cpp:200 -#: src/sonymn.cpp:499 src/sonymn.cpp:516 src/tags.cpp:1403 src/tags.cpp:1488 -#: src/tags.cpp:1495 -msgid "Auto" -msgstr "Auto" - -#: src/canonmn.cpp:263 src/olympusmn.cpp:532 -msgid "Red-eye" -msgstr "ÄŒervené oÄi" - -#: src/canonmn.cpp:264 -msgid "Slow sync" -msgstr "Pomalá synchronizácia" - -#: src/canonmn.cpp:265 -msgid "Auto + red-eye" -msgstr "auto + korekcia Äervených oÄí" - -#: src/canonmn.cpp:266 -msgid "On + red-eye" -msgstr "zapnutý + korekcia Äervených oÄí" - -#: src/canonmn.cpp:267 src/canonmn.cpp:268 src/minoltamn.cpp:1339 -#: src/nikonmn.cpp:904 src/olympusmn.cpp:144 -msgid "External" -msgstr "externý" - -#: src/canonmn.cpp:273 -msgid "Single / timer" -msgstr "Jednotlivý záber / ÄasovaÄ" - -#: src/canonmn.cpp:274 src/canonmn.cpp:288 src/canonmn.cpp:720 -#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1097 -#: src/minoltamn.cpp:1149 src/nikonmn.cpp:151 src/nikonmn.cpp:162 -#: src/pentaxmn.cpp:534 -msgid "Continuous" -msgstr "Spojitý" - -#: src/canonmn.cpp:275 src/olympusmn.cpp:103 -msgid "Movie" -msgstr "Film" - -#: src/canonmn.cpp:276 -msgid "Continuous, speed priority" -msgstr "spojitý, priorita pre rýchlosÅ¥" - -#: src/canonmn.cpp:277 -msgid "Continuous, low" -msgstr "Spojitý, nízky" - -#: src/canonmn.cpp:278 -msgid "Continuous, high" -msgstr "Spojitý, vysoký" - -# AF = automatické zaostrenie -#: src/canonmn.cpp:283 -msgid "One shot AF" -msgstr "automatické zaostrenie pre jeden záber" - -# AF = automatické zaostrenie -#: src/canonmn.cpp:284 -msgid "AI servo AF" -msgstr "inteligentné servo zaostrenie" - -# AF = automatické zaostrenie -#: src/canonmn.cpp:285 -msgid "AI focus AF" -msgstr "inteligentné zaostrenie" - -#: src/canonmn.cpp:286 src/canonmn.cpp:289 src/minoltamn.cpp:374 -msgid "Manual focus" -msgstr "RuÄné zaostrenie" - -#: src/canonmn.cpp:287 src/canonmn.cpp:719 src/sonymn.cpp:231 -msgid "Single" -msgstr "Jednotlivý" - -#: src/canonmn.cpp:290 src/canonmn.cpp:291 src/canonmn.cpp:318 -#: src/canonmn.cpp:392 -msgid "Pan focus" -msgstr "posúvaÅ¥ zaostrenie" - -#: src/canonmn.cpp:296 src/canonmn.cpp:1018 src/minoltamn.cpp:666 -#: src/minoltamn.cpp:852 src/sonymn.cpp:534 -msgid "Large" -msgstr "Veľký" - -#: src/canonmn.cpp:297 src/canonmn.cpp:762 src/canonmn.cpp:1019 -#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1222 -#: src/sonymn.cpp:535 -msgid "Medium" -msgstr "Stredný" - -#: src/canonmn.cpp:298 src/canonmn.cpp:1020 src/minoltamn.cpp:668 -#: src/minoltamn.cpp:854 src/minoltamn.cpp:1223 src/sonymn.cpp:536 -msgid "Small" -msgstr "malý" - -#: src/canonmn.cpp:299 src/canonmn.cpp:1021 -msgid "Medium 1" -msgstr "stredný 1" - -#: src/canonmn.cpp:300 src/canonmn.cpp:1022 -msgid "Medium 2" -msgstr "stredný 2" - -#: src/canonmn.cpp:301 src/canonmn.cpp:1023 -msgid "Medium 3" -msgstr "stredný 3" - -#: src/canonmn.cpp:306 -msgid "Full auto" -msgstr "Plne automatický" - -#: src/canonmn.cpp:307 src/canonmn.cpp:384 src/canonmn.cpp:708 -#: src/canonmn.cpp:1093 src/fujimn.cpp:110 src/fujimn.cpp:135 -#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 -#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 -#: src/minoltamn.cpp:876 src/minoltamn.cpp:1281 src/nikonmn.cpp:974 -#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 -#: src/panasonicmn.cpp:68 src/panasonicmn.cpp:71 src/panasonicmn.cpp:72 -#: src/panasonicmn.cpp:78 src/panasonicmn.cpp:111 src/pentaxmn.cpp:58 -#: src/pentaxmn.cpp:201 src/pentaxmn.cpp:316 src/pentaxmn.cpp:500 -#: src/pentaxmn.cpp:512 src/sigmamn.cpp:157 src/sonymn.cpp:119 -#: src/sonymn.cpp:164 src/sonymn.cpp:460 src/sonymn.cpp:517 src/tags.cpp:1402 -#: src/tags.cpp:1489 src/tags.cpp:1496 -msgid "Manual" -msgstr "Manuál" - -# exif-scenecapturetype-1 -#: src/canonmn.cpp:308 src/canonmn.cpp:1125 src/fujimn.cpp:117 -#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1887 -#: src/minoltamn.cpp:2039 src/olympusmn.cpp:98 src/pentaxmn.cpp:472 -#: src/pentaxmn.cpp:705 src/sonymn.cpp:478 src/sonymn.cpp:527 -#: src/tags.cpp:1502 -msgid "Landscape" -msgstr "krajinka" - -#: src/canonmn.cpp:309 -msgid "Fast shutter" -msgstr "rýchla uzávierka" - -#: src/canonmn.cpp:310 -msgid "Slow shutter" -msgstr "pomalá uzávierka" - -#: src/canonmn.cpp:311 src/minoltamn.cpp:68 src/minoltamn.cpp:951 -#: src/minoltamn.cpp:2036 src/olympusmn.cpp:99 src/pentaxmn.cpp:478 -msgid "Night Scene" -msgstr "NoÄná scéna" - -#: src/canonmn.cpp:312 -msgid "Gray scale" -msgstr "Odtiene Å¡edej" - -#: src/canonmn.cpp:313 src/canonmn.cpp:751 src/canonmn.cpp:1058 -#: src/minoltamn.cpp:61 src/nikonmn.cpp:190 src/nikonmn.cpp:677 -#: src/olympusmn.cpp:615 src/olympusmn.cpp:632 src/olympusmn.cpp:856 -#: src/olympusmn.cpp:871 src/panasonicmn.cpp:149 src/sonymn.cpp:488 -msgid "Sepia" -msgstr "Sépia" - -#: src/canonmn.cpp:314 src/canonmn.cpp:1111 src/canonmn.cpp:1124 -#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 -#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1886 -#: src/minoltamn.cpp:2034 src/olympusmn.cpp:96 src/olympusmn.cpp:613 -#: src/panasonicmn.cpp:102 src/pentaxmn.cpp:471 src/pentaxmn.cpp:704 -#: src/sonymn.cpp:106 src/sonymn.cpp:477 src/sonymn.cpp:523 src/tags.cpp:1503 -msgid "Portrait" -msgstr "Portrét" - -#: src/canonmn.cpp:315 src/fujimn.cpp:118 src/minoltamn.cpp:843 -#: src/minoltamn.cpp:2038 src/panasonicmn.cpp:104 src/sonymn.cpp:524 -msgid "Sports" -msgstr "Å porty" - -#: src/canonmn.cpp:316 -msgid "Macro / close-up" -msgstr "Makro / záber zblízka" - -#: src/canonmn.cpp:317 src/fujimn.cpp:149 -msgid "Black & white" -msgstr "ÄŒierna a biela" - -#: src/canonmn.cpp:319 src/canonmn.cpp:748 src/olympusmn.cpp:134 -#: src/olympusmn.cpp:610 src/olympusmn.cpp:852 src/panasonicmn.cpp:199 -#: src/sonymn.cpp:476 src/sonymn.cpp:506 -msgid "Vivid" -msgstr "živé" - -#: src/canonmn.cpp:320 src/canonmn.cpp:749 src/canonmn.cpp:1126 -#: src/minoltamn.cpp:1892 src/minoltamn.cpp:1893 src/olympusmn.cpp:621 -#: src/olympusmn.cpp:631 src/olympusmn.cpp:861 src/olympusmn.cpp:870 -#: src/sonymn.cpp:483 src/sonymn.cpp:508 -msgid "Neutral" -msgstr "Neutrálny" - -#: src/canonmn.cpp:321 -msgid "Flash off" -msgstr "Blesk vypnutý" - -#: src/canonmn.cpp:322 -msgid "Long shutter" -msgstr "pomalá uzávierka" - -#: src/canonmn.cpp:324 -msgid "Foliage" -msgstr "zeleň" - -#: src/canonmn.cpp:325 src/olympusmn.cpp:106 -msgid "Indoor" -msgstr "vnútri" - -#: src/canonmn.cpp:326 src/fujimn.cpp:131 src/olympusmn.cpp:107 -#: src/panasonicmn.cpp:116 src/sonymn.cpp:117 -msgid "Fireworks" -msgstr "Ohňostroj" - -#: src/canonmn.cpp:327 src/fujimn.cpp:129 src/olympusmn.cpp:129 -#: src/panasonicmn.cpp:128 src/sonymn.cpp:107 -msgid "Beach" -msgstr "Pláž" - -#: src/canonmn.cpp:328 src/canonmn.cpp:846 src/fujimn.cpp:132 -#: src/panasonicmn.cpp:127 src/sonymn.cpp:122 -msgid "Underwater" -msgstr "pod vodou" - -#: src/canonmn.cpp:329 src/fujimn.cpp:130 src/olympusmn.cpp:130 -#: src/panasonicmn.cpp:118 src/sonymn.cpp:108 -msgid "Snow" -msgstr "Sneh" - -#: src/canonmn.cpp:330 -msgid "Kids & pets" -msgstr "deti & zvieratá" - -#: src/canonmn.cpp:331 -msgid "Night SnapShot" -msgstr "NoÄný záber" - -#: src/canonmn.cpp:332 -msgid "Digital macro" -msgstr "digitálne makro" - -#: src/canonmn.cpp:333 -msgid "My Colors" -msgstr "Moje farby" - -#: src/canonmn.cpp:334 src/minoltamn.cpp:343 -msgid "Still image" -msgstr "Fotografia" - -#: src/canonmn.cpp:342 src/canonmn.cpp:343 src/properties.cpp:859 -#: src/properties.cpp:881 src/tags.cpp:1421 src/tags.cpp:1422 -msgid "Other" -msgstr "Iný" - -#: src/canonmn.cpp:348 src/canonmn.cpp:763 src/canonmn.cpp:1101 -#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1164 -#: src/minoltamn.cpp:1170 src/minoltamn.cpp:1176 src/minoltamn.cpp:1345 -#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:206 -#: src/olympusmn.cpp:171 src/olympusmn.cpp:1134 src/panasonicmn.cpp:162 -#: src/panasonicmn.cpp:166 src/pentaxmn.cpp:342 src/pentaxmn.cpp:355 -#: src/sonymn.cpp:214 src/tags.cpp:1527 -msgid "Low" -msgstr "nízka" - -#: src/canonmn.cpp:350 src/canonmn.cpp:1103 src/fujimn.cpp:85 -#: src/fujimn.cpp:94 src/minoltamn.cpp:1165 src/minoltamn.cpp:1171 -#: src/minoltamn.cpp:1177 src/nikonmn.cpp:71 src/nikonmn.cpp:79 -#: src/nikonmn.cpp:208 src/olympusmn.cpp:169 src/olympusmn.cpp:1136 -#: src/panasonicmn.cpp:55 src/panasonicmn.cpp:163 src/panasonicmn.cpp:168 -#: src/panasonicmn.cpp:169 src/pentaxmn.cpp:344 src/pentaxmn.cpp:357 -#: src/sonymn.cpp:217 src/tags.cpp:1528 -msgid "High" -msgstr "vysoká" - -#: src/canonmn.cpp:355 src/canonmn.cpp:760 src/canonmn.cpp:764 -#: src/canonmn.cpp:769 src/canonmn.cpp:1099 src/nikonmn.cpp:671 -#: src/nikonmn.cpp:686 src/nikonmn.cpp:910 src/nikonmn.cpp:963 -#: src/nikonmn.cpp:1218 src/olympusmn.cpp:620 src/olympusmn.cpp:630 -#: src/sonymn.cpp:129 src/sonymn.cpp:136 src/sonymn.cpp:144 src/sonymn.cpp:181 -#: src/sonymn.cpp:194 src/sonymn.cpp:201 src/sonymn.cpp:209 src/sonymn.cpp:215 -#: src/sonymn.cpp:226 src/sonymn.cpp:232 src/sonymn.cpp:239 -msgid "n/a" -msgstr "nie je k dispozícii" - -#: src/canonmn.cpp:356 -msgid "Auto High" -msgstr "automatický vysoký" - -#: src/canonmn.cpp:374 src/sonymn.cpp:186 -msgid "Default" -msgstr "Å¡tandardný" - -#: src/canonmn.cpp:375 src/minoltamn.cpp:265 src/minoltamn.cpp:883 -#: src/minoltamn.cpp:933 src/minoltamn.cpp:1129 src/minoltamn.cpp:1938 -#: src/olympusmn.cpp:492 src/panasonicmn.cpp:110 src/pentaxmn.cpp:306 -#: src/sonymn.cpp:470 src/tags.cpp:1417 -msgid "Spot" -msgstr "Bodový" - -#: src/canonmn.cpp:376 src/sigmamn.cpp:168 src/tags.cpp:1415 -msgid "Average" -msgstr "priemer" - -#: src/canonmn.cpp:377 -msgid "Evaluative" -msgstr "vyhodnocujúci" - -#: src/canonmn.cpp:378 src/tags.cpp:1420 -msgid "Partial" -msgstr "ÄŒiastoÄný" - -#: src/canonmn.cpp:379 src/minoltamn.cpp:882 -msgid "Center weighted" -msgstr "Stredovo vážený" - -#: src/canonmn.cpp:386 -msgid "Not known" -msgstr "Neznámy" - -# exif-subjectdistancerange-1 -#: src/canonmn.cpp:387 src/canonmn.cpp:776 src/fujimn.cpp:207 -#: src/minoltamn.cpp:847 src/minoltamn.cpp:2041 src/olympusmn.cpp:109 -#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:109 -#: src/panasonicmn.cpp:213 src/panasonicmn.cpp:214 src/panasonicmn.cpp:243 -#: src/pentaxmn.cpp:199 src/pentaxmn.cpp:473 src/sonymn.cpp:390 -#: src/sonymn.cpp:391 src/sonymn.cpp:528 src/tags.cpp:1534 -msgid "Macro" -msgstr "makro" - -#: src/canonmn.cpp:388 -msgid "Very close" -msgstr "veľmi zblízka" - -#: src/canonmn.cpp:389 -msgid "Close" -msgstr "Zblízka" - -#: src/canonmn.cpp:390 -msgid "Middle range" -msgstr "stredný rozsah" - -#: src/canonmn.cpp:391 -msgid "Far range" -msgstr "V diaľke" - -#: src/canonmn.cpp:394 src/pentaxmn.cpp:200 src/tags.cpp:2568 -msgid "Infinity" -msgstr "NekoneÄno" - -# AF = automatické zaostrenie -#: src/canonmn.cpp:399 -msgid "Manual AF point selection" -msgstr "RuÄná voľba bodu automatického zaostrenia" - -#: src/canonmn.cpp:400 -msgid "None (MF)" -msgstr "NiÄ (MF)" - -#: src/canonmn.cpp:401 -msgid "Auto-selected" -msgstr "Automatický výber" - -#: src/canonmn.cpp:402 src/minoltamn.cpp:287 src/minoltamn.cpp:706 -#: src/minoltamn.cpp:921 src/minoltamn.cpp:1953 src/nikonmn.cpp:103 -#: src/olympusmn.cpp:1491 src/pentaxmn.cpp:222 src/pentaxmn.cpp:237 -msgid "Right" -msgstr "vpravo" - -#: src/canonmn.cpp:403 src/canonmn.cpp:741 src/minoltamn.cpp:284 -#: src/minoltamn.cpp:703 src/minoltamn.cpp:1950 src/nikonmn.cpp:99 -#: src/nikonmn.cpp:792 src/nikonmn.cpp:807 src/pentaxmn.cpp:220 -#: src/pentaxmn.cpp:236 src/sigmamn.cpp:169 -msgid "Center" -msgstr "v strede" - -#: src/canonmn.cpp:404 src/minoltamn.cpp:291 src/minoltamn.cpp:710 -#: src/minoltamn.cpp:925 src/minoltamn.cpp:1957 src/nikonmn.cpp:102 -#: src/pentaxmn.cpp:218 src/pentaxmn.cpp:235 -msgid "Left" -msgstr "vľavo" - -# AF = automatické zaostrenie -#: src/canonmn.cpp:405 -msgid "Auto AF point selection" -msgstr "automatická voľba bodu zaostrenia" - -#: src/canonmn.cpp:410 -msgid "Easy shooting (Auto)" -msgstr "Jednoduché fotenie (auto)" - -#: src/canonmn.cpp:411 -msgid "Program (P)" -msgstr "Program (P)" - -# exif-exposureprogram-4 -#: src/canonmn.cpp:412 -msgid "Shutter priority (Tv)" -msgstr "Priorita uzávierky (Tv)" - -# FUZZY exif-exposureprogram-3 -#: src/canonmn.cpp:413 -msgid "Aperture priority (Av)" -msgstr "Priorita clony (Av)" - -#: src/canonmn.cpp:414 -msgid "Manual (M)" -msgstr "Manuál (M)" - -#: src/canonmn.cpp:415 -msgid "A-DEP" -msgstr "A-DEP" - -#: src/canonmn.cpp:416 -msgid "M-DEP" -msgstr "M-DEP" - -#: src/canonmn.cpp:700 src/minoltamn.cpp:297 src/nikonmn.cpp:142 -msgid "Did not fire" -msgstr "Blesk sa nespustil" - -#: src/canonmn.cpp:701 src/minoltamn.cpp:298 src/nikonmn.cpp:981 -#: src/tags.cpp:365 -msgid "Fired" -msgstr "Spustil sa" - -#: src/canonmn.cpp:706 src/olympusmn.cpp:1009 -msgid "External flash" -msgstr "externý blesk" - -#: src/canonmn.cpp:707 src/olympusmn.cpp:1013 -msgid "Internal flash" -msgstr "Vnútorný blesk" - -#: src/canonmn.cpp:709 src/olympusmn.cpp:558 src/sonymn.cpp:494 -msgid "TTL" -msgstr "TTL" - -#: src/canonmn.cpp:710 -msgid "A-TTL" -msgstr "A-TTL" - -#: src/canonmn.cpp:711 -msgid "E-TTL" -msgstr "E-TTL" - -#: src/canonmn.cpp:712 -msgid "FP sync enabled" -msgstr "FP synchr. zapnutá" - -#: src/canonmn.cpp:713 -msgid "2nd-curtain sync used" -msgstr "synchr. 2. zácl. použitá" - -#: src/canonmn.cpp:714 -msgid "FP sync used" -msgstr "FP synchr. použitá" - -#: src/canonmn.cpp:725 -msgid "Normal AE" -msgstr "Normálna AE" - -#: src/canonmn.cpp:726 src/minoltamn.cpp:527 src/minoltamn.cpp:769 -#: src/minoltamn.cpp:1045 src/pentaxmn.cpp:919 src/pentaxmn.cpp:920 -msgid "Exposure compensation" -msgstr "Kompenzácia expozície" - -# AE - automatická expozícia -#: src/canonmn.cpp:727 src/minoltamn.cpp:1575 src/pentaxmn.cpp:1021 -#: src/pentaxmn.cpp:1022 -msgid "AE lock" -msgstr "zámok AE" - -# AE - automatická expozícia -#: src/canonmn.cpp:728 -msgid "AE lock + exposure compensation" -msgstr "zámok AE + kompenzácia expozície" - -# AE - automatická expozícia -#: src/canonmn.cpp:729 -msgid "No AE" -msgstr "bez AE" - -#: src/canonmn.cpp:736 -msgid "On, shot only" -msgstr "zapnutý, iba pri fotení" - -# AF = automatické zaostrenie -#: src/canonmn.cpp:742 src/canonmn.cpp:794 src/nikonmn.cpp:823 -#: src/olympusmn.cpp:1008 -msgid "AF Point" -msgstr "Bod automatického zaostrenia" - -#: src/canonmn.cpp:750 -msgid "Smooth" -msgstr "Hladký" - -#: src/canonmn.cpp:752 src/nikonmn.cpp:676 -msgid "B&W" -msgstr "ÄŒB" - -#: src/canonmn.cpp:753 src/canonmn.cpp:836 src/canonmn.cpp:1094 -#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 -#: src/minoltamn.cpp:1184 src/minoltamn.cpp:1187 src/minoltamn.cpp:2100 -#: src/pentaxmn.cpp:723 -msgid "Custom" -msgstr "Vlastný" - -#: src/canonmn.cpp:754 src/canonmn.cpp:755 -msgid "My color data" -msgstr "moje farebné údaje" - -#: src/canonmn.cpp:761 src/pentaxmn.cpp:163 -msgid "Full" -msgstr "Plný" - -#: src/canonmn.cpp:770 -msgid "sRAW1 (mRAW)" -msgstr "" - -#: src/canonmn.cpp:771 -msgid "sRAW2 (sRAW)" -msgstr "" - -#: src/canonmn.cpp:777 -msgid "Selftimer" -msgstr "Samospúšť" - -#: src/canonmn.cpp:777 src/panasonicmn.cpp:259 -msgid "Self timer" -msgstr "Samospúšť" - -#: src/canonmn.cpp:778 src/fujimn.cpp:186 src/minoltamn.cpp:1484 -#: src/minoltamn.cpp:1485 src/nikonmn.cpp:222 src/nikonmn.cpp:459 -#: src/nikonmn.cpp:527 src/olympusmn.cpp:198 src/panasonicmn.cpp:236 -#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:647 -#: src/sonymn.cpp:648 -msgid "Quality" -msgstr "Kvalita" - -#: src/canonmn.cpp:779 src/fujimn.cpp:201 src/minoltamn.cpp:493 -#: src/minoltamn.cpp:762 src/nikonmn.cpp:566 src/olympusmn.cpp:279 -#: src/olympusmn.cpp:670 -msgid "Flash Mode" -msgstr "Režim blesku" - -#: src/canonmn.cpp:779 -msgid "Flash mode setting" -msgstr "Nastavenie režimu blesku" - -#: src/canonmn.cpp:780 src/minoltamn.cpp:505 src/minoltamn.cpp:1427 -#: src/olympusmn.cpp:700 src/sigmamn.cpp:59 src/sonymn.cpp:559 -#: src/sonymn.cpp:560 -msgid "Drive Mode" -msgstr "Režim jazda autom" - -#: src/canonmn.cpp:780 -msgid "Drive mode setting" -msgstr "Nastavenie režimu jazda autom" - -#: src/canonmn.cpp:782 src/fujimn.cpp:210 src/minoltamn.cpp:622 -#: src/minoltamn.cpp:753 src/minoltamn.cpp:1035 src/minoltamn.cpp:1379 -#: src/nikonmn.cpp:474 src/olympusmn.cpp:300 src/olympusmn.cpp:664 -#: src/panasonicmn.cpp:240 src/sonymn.cpp:396 src/sonymn.cpp:397 -#: src/sonymn.cpp:566 src/sonymn.cpp:567 src/sonymn.cpp:672 src/sonymn.cpp:673 -msgid "Focus Mode" -msgstr "režim zaostrenia" - -#: src/canonmn.cpp:782 -msgid "Focus mode setting" -msgstr "Nastavenie režimu zaostrenia" - -#: src/canonmn.cpp:785 src/minoltamn.cpp:499 src/minoltamn.cpp:744 -#: src/minoltamn.cpp:987 -msgid "Image Size" -msgstr "VeľkosÅ¥ obrázka" - -#: src/canonmn.cpp:786 -msgid "Easy Mode" -msgstr "Jednoduchý režim" - -#: src/canonmn.cpp:786 -msgid "Easy shooting mode" -msgstr "režim jednoduchého fotenia" - -#: src/canonmn.cpp:787 src/minoltamn.cpp:523 src/nikonmn.cpp:255 -#: src/nikonmn.cpp:480 src/nikonmn.cpp:565 src/olympusmn.cpp:207 -msgid "Digital Zoom" -msgstr "digitálne priblíženie" - -#: src/canonmn.cpp:787 src/minoltamn.cpp:524 src/pentaxmn.cpp:944 -#: src/pentaxmn.cpp:945 -msgid "Digital zoom" -msgstr "digitálne priblíženie" - -#: src/canonmn.cpp:788 src/minoltamn.cpp:386 src/minoltamn.cpp:574 -#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 -#: src/minoltamn.cpp:1017 src/minoltamn.cpp:1018 src/minoltamn.cpp:1415 -#: src/minoltamn.cpp:1416 src/nikonmn.cpp:697 src/olympusmn.cpp:390 -#: src/olympusmn.cpp:800 src/panasonicmn.cpp:257 src/panasonicmn.cpp:268 -#: src/pentaxmn.cpp:850 src/pentaxmn.cpp:950 src/pentaxmn.cpp:951 -#: src/properties.cpp:443 src/properties.cpp:589 src/sigmamn.cpp:89 -#: src/sigmamn.cpp:90 src/sonymn.cpp:324 src/sonymn.cpp:593 src/sonymn.cpp:594 -#: src/sonymn.cpp:699 src/sonymn.cpp:700 src/tags.cpp:1807 -msgid "Contrast" -msgstr "Kontrast" - -#: src/canonmn.cpp:788 src/fujimn.cpp:199 src/olympusmn.cpp:391 -#: src/olympusmn.cpp:681 src/olympusmn.cpp:1080 src/panasonicmn.cpp:257 -msgid "Contrast setting" -msgstr "Nastavenie kontrastu" - -#: src/canonmn.cpp:789 src/minoltamn.cpp:387 src/minoltamn.cpp:571 -#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 -#: src/minoltamn.cpp:1020 src/minoltamn.cpp:1021 src/minoltamn.cpp:1418 -#: src/minoltamn.cpp:1419 src/nikonmn.cpp:578 src/nikonmn.cpp:597 -#: src/nikonmn.cpp:699 src/olympusmn.cpp:799 src/olympusmn.cpp:898 -#: src/panasonicmn.cpp:271 src/pentaxmn.cpp:844 src/pentaxmn.cpp:947 -#: src/pentaxmn.cpp:948 src/properties.cpp:461 src/properties.cpp:590 -#: src/sigmamn.cpp:98 src/sigmamn.cpp:99 src/sonymn.cpp:327 src/sonymn.cpp:596 -#: src/sonymn.cpp:597 src/sonymn.cpp:702 src/sonymn.cpp:703 src/tags.cpp:1811 -msgid "Saturation" -msgstr "SýtosÅ¥" - -#: src/canonmn.cpp:789 src/olympusmn.cpp:1078 -msgid "Saturation setting" -msgstr "Nastavenie sýtosti" - -#: src/canonmn.cpp:790 src/canonmn.cpp:1134 src/fujimn.cpp:189 -#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 -#: src/minoltamn.cpp:775 src/minoltamn.cpp:1014 src/minoltamn.cpp:1015 -#: src/minoltamn.cpp:1412 src/minoltamn.cpp:1413 src/nikonmn.cpp:696 -#: src/olympusmn.cpp:801 src/panasonicmn.cpp:272 src/pentaxmn.cpp:847 -#: src/pentaxmn.cpp:953 src/pentaxmn.cpp:954 src/properties.cpp:464 -#: src/properties.cpp:591 src/sigmamn.cpp:101 src/sigmamn.cpp:102 -#: src/sonymn.cpp:590 src/sonymn.cpp:591 src/sonymn.cpp:696 src/sonymn.cpp:697 -#: src/tags.cpp:1815 -msgid "Sharpness" -msgstr "OstrosÅ¥" - -#: src/canonmn.cpp:790 src/fujimn.cpp:190 src/olympusmn.cpp:682 -#: src/olympusmn.cpp:1081 -msgid "Sharpness setting" -msgstr "Nastavenie zaostrenia" - -#: src/canonmn.cpp:791 src/minoltamn.cpp:765 src/minoltamn.cpp:1008 -msgid "ISO Speed Mode" -msgstr "Režim ISO rýchlosÅ¥" - -#: src/canonmn.cpp:791 src/minoltamn.cpp:766 src/minoltamn.cpp:1009 -#: src/nikonmn.cpp:217 src/nikonmn.cpp:469 src/nikonmn.cpp:525 -#: src/panasonicmn.cpp:344 -msgid "ISO speed setting" -msgstr "Nastavenie ISO rýchlosti" - -# exif-meteringmode -#: src/canonmn.cpp:792 src/minoltamn.cpp:508 src/minoltamn.cpp:1005 -#: src/minoltamn.cpp:1394 src/olympusmn.cpp:661 src/properties.cpp:561 -#: src/sigmamn.cpp:77 src/sonymn.cpp:575 src/sonymn.cpp:576 src/sonymn.cpp:681 -#: src/sonymn.cpp:682 src/tags.cpp:825 src/tags.cpp:1646 -msgid "Metering Mode" -msgstr "merací režim" - -#: src/canonmn.cpp:792 -msgid "Metering mode setting" -msgstr "Nastavenie režimu merania" - -#: src/canonmn.cpp:793 -msgid "Focus Type" -msgstr "Typ zaostrenia" - -#: src/canonmn.cpp:793 -msgid "Focus type setting" -msgstr "Nastavenie typu zaostrenia" - -#: src/canonmn.cpp:794 -msgid "AF point selected" -msgstr "Nebol vybraný bod automatického zaostrenia" - -#: src/canonmn.cpp:795 src/properties.cpp:550 src/sonymn.cpp:632 -#: src/sonymn.cpp:633 src/sonymn.cpp:708 src/sonymn.cpp:709 src/tags.cpp:799 -#: src/tags.cpp:1548 -msgid "Exposure Program" -msgstr "Režim expozície" - -# exif-exposuremode -#: src/canonmn.cpp:795 -msgid "Exposure mode setting" -msgstr "Nastavenie režimu expozície" - -#: src/canonmn.cpp:797 src/nikonmn.cpp:562 src/olympusmn.cpp:745 -#: src/panasonicmn.cpp:276 -msgid "Lens Type" -msgstr "Typ Å¡oÅ¡pviek" - -#: src/canonmn.cpp:797 src/nikonmn.cpp:562 src/olympusmn.cpp:745 -#: src/panasonicmn.cpp:276 src/pentaxmn.cpp:1008 src/pentaxmn.cpp:1009 -msgid "Lens type" -msgstr "typ Å¡oÅ¡oviek" - -#: src/canonmn.cpp:798 src/nikonmn.cpp:563 src/properties.cpp:633 -msgid "Lens" -msgstr "Å¡oÅ¡ovky" - -#: src/canonmn.cpp:798 -msgid "" -"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " -"per mm" -msgstr "" - -#: src/canonmn.cpp:799 -msgid "Short Focal" -msgstr "" - -#: src/canonmn.cpp:799 -#, fuzzy -msgid "Short focal" -msgstr "Bodové zaostrenie" - -#: src/canonmn.cpp:800 -#, fuzzy -msgid "Focal Units" -msgstr "Ohnisková vzdialenosÅ¥" - -#: src/canonmn.cpp:800 -#, fuzzy -msgid "Focal units" -msgstr "Ohnisková vzdialenosÅ¥" - -#: src/canonmn.cpp:801 src/minoltamn.cpp:553 -msgid "Max Aperture" -msgstr "Max. clona" - -#: src/canonmn.cpp:801 src/minoltamn.cpp:554 -msgid "Max aperture" -msgstr "Max. clona" - -#: src/canonmn.cpp:802 -#, fuzzy -msgid "Min Aperture" -msgstr "Max. clona" - -#: src/canonmn.cpp:802 -#, fuzzy -msgid "Min aperture" -msgstr "Max. clona" - -#: src/canonmn.cpp:803 -msgid "Flash Activity" -msgstr "Aktivita blesku" - -#: src/canonmn.cpp:803 -msgid "Flash activity" -msgstr "aktivita blesku" - -#: src/canonmn.cpp:804 -msgid "Flash Details" -msgstr "Podrobnosti blesku" - -#: src/canonmn.cpp:804 -msgid "Flash details" -msgstr "podrobnosti blesku" - -#: src/canonmn.cpp:807 -msgid "Focus Continuous" -msgstr "Spojité zaostrenie" - -#: src/canonmn.cpp:807 -msgid "Focus continuous setting" -msgstr "Nastavenie spojité zaostrenie" - -#: src/canonmn.cpp:808 -msgid "AESetting" -msgstr "Nastavenie AE" - -#: src/canonmn.cpp:808 -msgid "AE setting" -msgstr "Nastavenie AE" - -#: src/canonmn.cpp:809 src/minoltamn.cpp:147 src/minoltamn.cpp:814 -#: src/minoltamn.cpp:1071 src/minoltamn.cpp:1562 src/nikonmn.cpp:599 -#: src/olympusmn.cpp:703 src/olympusmn.cpp:1016 src/panasonicmn.cpp:242 -#: src/sonymn.cpp:372 src/sonymn.cpp:635 src/sonymn.cpp:636 -msgid "Image Stabilization" -msgstr "Stabilizácia obrazu" - -#: src/canonmn.cpp:809 src/minoltamn.cpp:148 src/minoltamn.cpp:815 -#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1563 src/nikonmn.cpp:599 -#: src/olympusmn.cpp:703 src/olympusmn.cpp:1016 src/panasonicmn.cpp:242 -#: src/sonymn.cpp:373 -msgid "Image stabilization" -msgstr "Stabilizácia obrazu" - -#: src/canonmn.cpp:810 -msgid "Display Aperture" -msgstr "Clona displeja" - -#: src/canonmn.cpp:810 -msgid "Display aperture" -msgstr "Clona displeja" - -#: src/canonmn.cpp:811 -msgid "Zoom Source Width" -msgstr "Zdrojová šírka priblíženia" - -#: src/canonmn.cpp:811 -msgid "Zoom source width" -msgstr "zdrojová šírka priblíženia" - -#: src/canonmn.cpp:812 -msgid "Zoom Target Width" -msgstr "Cieľová šírka priblíženia" - -#: src/canonmn.cpp:812 -msgid "Zoom target width" -msgstr "Cieľová šírka priblíženia" - -# exif-meteringmode -#: src/canonmn.cpp:814 -#, fuzzy -msgid "Spot Metering Mode" -msgstr "merací režim" - -#: src/canonmn.cpp:814 -#, fuzzy -msgid "Spot metering mode" -msgstr "Režim merania." - -#: src/canonmn.cpp:815 -msgid "Photo Effect" -msgstr "Fotoefekt" - -#: src/canonmn.cpp:815 -msgid "Photo effect" -msgstr "fotoefekt" - -#: src/canonmn.cpp:816 -#, fuzzy -msgid "Manual Flash Output" -msgstr "RuÄné uvoľnenie" - -#: src/canonmn.cpp:816 -#, fuzzy -msgid "Manual flash output" -msgstr "RuÄné uvoľnenie" - -#: src/canonmn.cpp:817 -msgid "Color Tone" -msgstr "Farebný tón" - -#: src/canonmn.cpp:817 -msgid "Color tone" -msgstr "Farebný tón" - -#: src/canonmn.cpp:818 -msgid "SRAW Quality Tone" -msgstr "" - -#: src/canonmn.cpp:818 -#, fuzzy -msgid "SRAW quality" -msgstr "Kvalita obrázka" - -#: src/canonmn.cpp:820 -msgid "Unknown Canon Camera Settings 1 tag" -msgstr "Neznáma znaÄka Nastavenie fotoaparátu Canon 1" - -#: src/canonmn.cpp:831 -msgid "Sunny" -msgstr "slneÄno" - -#: src/canonmn.cpp:832 src/fujimn.cpp:73 src/minoltamn.cpp:220 -#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1194 -#: src/minoltamn.cpp:2095 src/nikonmn.cpp:450 src/olympusmn.cpp:1041 -#: src/panasonicmn.cpp:66 src/pentaxmn.cpp:321 src/sonymn.cpp:166 -msgid "Cloudy" -msgstr "oblaÄno" - -# exif-lightsource-3 -#: src/canonmn.cpp:833 src/minoltamn.cpp:221 src/minoltamn.cpp:686 -#: src/minoltamn.cpp:872 src/minoltamn.cpp:1196 src/minoltamn.cpp:2097 -#: src/pentaxmn.cpp:315 -msgid "Tungsten" -msgstr "volfrám" - -# exif-lightsource-2 -#: src/canonmn.cpp:834 src/minoltamn.cpp:223 src/minoltamn.cpp:687 -#: src/minoltamn.cpp:873 src/minoltamn.cpp:1197 src/minoltamn.cpp:2099 -#: src/nikonmn.cpp:449 src/pentaxmn.cpp:314 src/tags.cpp:1429 -msgid "Fluorescent" -msgstr "fluorescencia" - -#: src/canonmn.cpp:837 src/minoltamn.cpp:57 src/minoltamn.cpp:1890 -#: src/sonymn.cpp:481 -msgid "Black & White" -msgstr "ÄŒiernobiela" - -#: src/canonmn.cpp:838 src/minoltamn.cpp:684 src/minoltamn.cpp:871 -#: src/minoltamn.cpp:1195 src/minoltamn.cpp:2096 src/olympusmn.cpp:1040 -#: src/pentaxmn.cpp:313 src/tags.cpp:1434 -msgid "Shade" -msgstr "Tieň" - -# ?exif-lightsource-255 -#: src/canonmn.cpp:839 -msgid "Manual Temperature (Kelvin)" -msgstr "RuÄné nastavenie teploty (v kelvinoch)" - -#: src/canonmn.cpp:840 -msgid "PC Set 1" -msgstr "PC Set 1" - -#: src/canonmn.cpp:841 -msgid "PC Set 2" -msgstr "PC Set 2" - -#: src/canonmn.cpp:842 -msgid "PC Set 3" -msgstr "PC Set 3" - -# exif-lightsource-12 -#: src/canonmn.cpp:843 -msgid "Daylight Fluorescent" -msgstr "denné svetlo, fluorescenÄné" - -#: src/canonmn.cpp:844 src/properties.cpp:791 -msgid "Custom 1" -msgstr "Vlastný 1" - -#: src/canonmn.cpp:845 src/minoltamn.cpp:225 src/properties.cpp:792 -msgid "Custom 2" -msgstr "Vlastný 2" - -#: src/canonmn.cpp:847 src/canonmn.cpp:848 src/minoltamn.cpp:226 -#: src/properties.cpp:793 -msgid "Custom 3" -msgstr "vlastné 3" - -#: src/canonmn.cpp:849 -#, fuzzy -msgid "PC Set 4" -msgstr "PC Set 1" - -#: src/canonmn.cpp:850 -#, fuzzy -msgid "PC Set 5" -msgstr "PC Set 1" - -#: src/canonmn.cpp:855 src/canonmn.cpp:974 src/canonmn.cpp:982 -msgid "left" -msgstr "vľavo" - -#: src/canonmn.cpp:856 src/canonmn.cpp:971 src/canonmn.cpp:983 -msgid "center" -msgstr "v strede" - -#: src/canonmn.cpp:857 src/canonmn.cpp:968 src/canonmn.cpp:984 -msgid "right" -msgstr "vpravo" - -#: src/canonmn.cpp:884 -msgid "ISO Speed Used" -msgstr "Použitá ISO rýchlosÅ¥" - -#: src/canonmn.cpp:884 -msgid "ISO speed used" -msgstr "Použitá ISO rýchlosÅ¥" - -#: src/canonmn.cpp:885 -msgid "Measured EV" -msgstr "" - -#: src/canonmn.cpp:886 -msgid "Target Aperture" -msgstr "Cieľová clona" - -#: src/canonmn.cpp:887 -msgid "Target Shutter Speed" -msgstr "Cieľová rýchlosÅ¥ uzávierky" - -# exif-shutterspeedvalue -#: src/canonmn.cpp:887 -msgid "Target shutter speed" -msgstr "exif-shutterspeedvalue" - -#: src/canonmn.cpp:889 src/fujimn.cpp:192 src/minoltamn.cpp:177 -#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:993 -#: src/minoltamn.cpp:1376 src/nikonmn.cpp:225 src/nikonmn.cpp:471 -#: src/nikonmn.cpp:528 src/olympusmn.cpp:330 src/olympusmn.cpp:880 -#: src/panasonicmn.cpp:238 src/properties.cpp:473 src/properties.cpp:582 -#: src/sigmamn.cpp:71 src/sonymn.cpp:289 src/tags.cpp:1785 -msgid "White Balance" -msgstr "Vyváženie bielej" - -#: src/canonmn.cpp:889 src/fujimn.cpp:193 src/minoltamn.cpp:1443 -#: src/panasonicmn.cpp:238 -msgid "White balance setting" -msgstr "Nastavenie vyváženia bielej" - -#: src/canonmn.cpp:891 -msgid "Sequence" -msgstr "Poradové Äíslo" - -#: src/canonmn.cpp:891 -msgid "Sequence number (if in a continuous burst)" -msgstr "Poradové Äíslo (ak je zo spojitého záberu)" - -# AF = automatické zaostrenie -#: src/canonmn.cpp:896 -msgid "AF Point Used" -msgstr "Použitý bod automatického zaostrenia" - -# AF = automatické zaostrenie -#: src/canonmn.cpp:896 -msgid "AF point used" -msgstr "Použitý bod automatického zaostrenia" - -#: src/canonmn.cpp:897 src/olympusmn.cpp:372 -msgid "Flash Bias" -msgstr "Skreslenie blesku" - -# exif-subjectdistance -#: src/canonmn.cpp:901 src/properties.cpp:560 src/tags.cpp:824 -#: src/tags.cpp:1643 -msgid "Subject Distance" -msgstr "vzdialenosÅ¥ subjektu" - -# exif-subjectdistancerange -#: src/canonmn.cpp:901 -msgid "Subject distance (units are not clear)" -msgstr "VzdialenosÅ¥ subjektu (jednotky nie sú jasné)" - -#: src/canonmn.cpp:903 src/olympusmn.cpp:273 src/properties.cpp:556 -#: src/tags.cpp:820 -msgid "Aperture Value" -msgstr "Hodnota clony" - -#: src/canonmn.cpp:904 src/properties.cpp:555 src/tags.cpp:819 -msgid "Shutter Speed Value" -msgstr "Hodnota rýchlosti uzávierky" - -# exif-shutterspeedvalue -#: src/canonmn.cpp:904 src/tags.cpp:1623 -msgid "Shutter speed" -msgstr "rýchlosÅ¥ uzávierky" - -#: src/canonmn.cpp:905 -msgid "Measured EV 2" -msgstr "" - -#: src/canonmn.cpp:910 -msgid "Unknown Canon Camera Settings 2 tag" -msgstr "Neznáma znaÄka Nastavenie fotoaparátu Canon 2" - -#: src/canonmn.cpp:920 src/olympusmn.cpp:1164 -msgid "Left to right" -msgstr "zľava doprava" - -#: src/canonmn.cpp:921 src/olympusmn.cpp:1165 -msgid "Right to left" -msgstr "sprava doľava" - -#: src/canonmn.cpp:922 src/olympusmn.cpp:1166 -msgid "Bottom to top" -msgstr "zdola hore" - -#: src/canonmn.cpp:923 src/olympusmn.cpp:1167 -msgid "Top to bottom" -msgstr "zhora dolu" - -#: src/canonmn.cpp:924 -msgid "2x2 matrix (Clockwise)" -msgstr "matica 2x2 (v smere hodinových ruÄiÄiek)" - -#: src/canonmn.cpp:929 -msgid "Panorama Frame" -msgstr "Rámec panorámy" - -#: src/canonmn.cpp:929 -msgid "Panorama frame number" -msgstr "Číslo rámca panorámy" - -#: src/canonmn.cpp:930 -msgid "Panorama Direction" -msgstr "Smer panorámy" - -#: src/canonmn.cpp:930 -msgid "Panorama direction" -msgstr "smer panorámy" - -#: src/canonmn.cpp:932 -msgid "Unknown Canon Panorama tag" -msgstr "Neznáma znaÄka Canon Panorama" - -#: src/canonmn.cpp:942 src/canonmn.cpp:1072 src/minoltamn.cpp:807 -#: src/minoltamn.cpp:1068 src/minoltamn.cpp:1493 src/nikonmn.cpp:579 -#: src/olympusmn.cpp:438 src/olympusmn.cpp:602 src/olympusmn.cpp:685 -#: src/olympusmn.cpp:804 src/olympusmn.cpp:819 src/olympusmn.cpp:889 -#: src/olympusmn.cpp:974 -msgid "Noise Reduction" -msgstr "Redukcia Å¡umu" - -#: src/canonmn.cpp:942 -msgid "Long exposure noise reduction" -msgstr "Redukciu Å¡umu dlhej expozície" - -#: src/canonmn.cpp:943 -msgid "Shutter Ae Lock" -msgstr "Ae zámok uzávierky" - -#: src/canonmn.cpp:943 -msgid "Shutter/AE lock buttons" -msgstr "TlaÄidlá zamknutia uzávierky/AE" - -#: src/canonmn.cpp:944 -msgid "Mirror Lockup" -msgstr "" - -#: src/canonmn.cpp:944 -msgid "Mirror lockup" -msgstr "" - -#: src/canonmn.cpp:945 src/sonymn.cpp:650 src/sonymn.cpp:651 -msgid "Exposure Level Increments" -msgstr "Kroky úrovne expozície" - -#: src/canonmn.cpp:945 -msgid "Tv/Av and exposure level" -msgstr "" - -#: src/canonmn.cpp:946 src/minoltamn.cpp:1520 -msgid "AF Assist" -msgstr "Asistent AZ" - -# AF = automatické zaostrenie -#: src/canonmn.cpp:946 -msgid "AF assist light" -msgstr "Svetlo asistenta AZ" - -#: src/canonmn.cpp:947 -msgid "Flash Sync Speed Av" -msgstr "Blesk synch. rýchlosÅ¥ Av" - -#: src/canonmn.cpp:947 -msgid "Shutter speed in Av mode" -msgstr "RýchlosÅ¥ uzávierky v režime Av" - -#: src/canonmn.cpp:948 -msgid "AEB Sequence" -msgstr "Poradové Äíslo AEB" - -#: src/canonmn.cpp:948 -msgid "AEB sequence/auto cancellation" -msgstr "" - -# exif-exposureprogram-4 -#: src/canonmn.cpp:949 -#, fuzzy -msgid "Shutter Curtain Sync" -msgstr "priorita uzávierky" - -# exif-exposureprogram-4 -#: src/canonmn.cpp:949 -#, fuzzy -msgid "Shutter curtain sync" -msgstr "priorita uzávierky" - -# TODO: check -#: src/canonmn.cpp:950 -#, fuzzy -msgid "Lens AF Stop Button" -msgstr "F stops Å¡oÅ¡oviek" - -# TODO: check -#: src/canonmn.cpp:950 -#, fuzzy -msgid "Lens AF stop button Fn. Switch" -msgstr "F stops Å¡oÅ¡oviek" - -#: src/canonmn.cpp:951 -msgid "Fill Flash Auto Reduction" -msgstr "Blesk sa spustí automatická redukcia" - -#: src/canonmn.cpp:951 -msgid "Auto reduction of fill flash" -msgstr "Automatická redukcia alebo blesk sa spustí" - -#: src/canonmn.cpp:952 -msgid "Menu Button Return" -msgstr "TlaÄidlo menu Návrat" - -#: src/canonmn.cpp:952 -msgid "Menu button return position" -msgstr "Poloha tlaÄidla menu Návrat" - -#: src/canonmn.cpp:953 -msgid "Set Button Function" -msgstr "Nastavenie funkcie tlaÄidla" - -#: src/canonmn.cpp:953 -msgid "SET button func. when shooting" -msgstr "" - -#: src/canonmn.cpp:954 -msgid "Sensor Cleaning" -msgstr "ÄŒistenie snímaÄa" - -#: src/canonmn.cpp:954 -msgid "Sensor cleaning" -msgstr "VyÄistenie snímaÄa" - -#: src/canonmn.cpp:955 -msgid "Superimposed Display" -msgstr "" - -#: src/canonmn.cpp:955 -msgid "Superimposed display" -msgstr "" - -#: src/canonmn.cpp:956 -msgid "Shutter Release No CF Card" -msgstr "Uvoľnenie spúšte Žiadna CF karta" - -#: src/canonmn.cpp:956 -msgid "Shutter Release W/O CF Card" -msgstr "Uvoľnenie spúšte bez CF karty" - -#: src/canonmn.cpp:958 -msgid "Unknown Canon Custom Function tag" -msgstr "Neznáma znaÄka Canon Custom Function" - -#: src/canonmn.cpp:969 -msgid "mid-right" -msgstr "v strede vpravo" - -#: src/canonmn.cpp:970 src/canonmn.cpp:987 -msgid "bottom" -msgstr "dolu" - -#: src/canonmn.cpp:972 src/canonmn.cpp:979 -msgid "top" -msgstr "hore" - -#: src/canonmn.cpp:973 -msgid "mid-left" -msgstr "v strede vľavo" - -#: src/canonmn.cpp:980 -msgid "upper-left" -msgstr "vyÅ¡Å¡ie vľavo" - -#: src/canonmn.cpp:981 -msgid "upper-right" -msgstr "vyÅ¡Å¡ie vpravo" - -#: src/canonmn.cpp:985 -msgid "lower-left" -msgstr "nižšie vľavo" - -#: src/canonmn.cpp:986 -msgid "lower-right" -msgstr "nižšie vpravo" - -#: src/canonmn.cpp:992 src/olympusmn.cpp:225 src/olympusmn.cpp:405 -#: src/panasonicmn.cpp:341 src/properties.cpp:480 src/tags.cpp:415 -msgid "Image Width" -msgstr "Šírka obrázka" - -#: src/canonmn.cpp:992 src/olympusmn.cpp:226 src/olympusmn.cpp:406 -#: src/panasonicmn.cpp:341 src/tags.cpp:2103 -msgid "Image width" -msgstr "Šírka obrázka" - -#: src/canonmn.cpp:993 src/olympusmn.cpp:228 src/olympusmn.cpp:408 -#: src/panasonicmn.cpp:340 -msgid "Image Height" -msgstr "Výška obrázka" - -#: src/canonmn.cpp:993 src/olympusmn.cpp:229 src/olympusmn.cpp:409 -#: src/panasonicmn.cpp:340 src/tags.cpp:2106 -msgid "Image height" -msgstr "Dĺžka obrázka" - -#: src/canonmn.cpp:994 -msgid "Image Width As Shot" -msgstr "šírka obrázka ako bol odfotený" - -#: src/canonmn.cpp:994 -msgid "Image width (as shot)" -msgstr "šírka obrázka (ako bol odfotený)" - -#: src/canonmn.cpp:995 -msgid "Image Height As Shot" -msgstr "výška obrázka (ako bol odfotený)" - -#: src/canonmn.cpp:995 -#, fuzzy -msgid "Image height (as shot)" -msgstr "šírka obrázka (ako bol odfotený)" - -# AF = automatické zaostrenie -#: src/canonmn.cpp:996 src/nikonmn.cpp:848 -msgid "AF Points Used" -msgstr "Použité body automatického zaostrenia" - -# AF = automatické zaostrenie -#: src/canonmn.cpp:996 src/nikonmn.cpp:848 -msgid "AF points used" -msgstr "Použité body automatického zaostrenia" - -# AF = automatické zaostrenie -#: src/canonmn.cpp:997 -msgid "AF Points Used 20D" -msgstr "Použité body automatického zaostrenia 20D" - -# AF = automatické zaostrenie -#: src/canonmn.cpp:997 -#, fuzzy -msgid "AF points used (20D)" -msgstr "Použité body automatického zaostrenia 20D" - -#: src/canonmn.cpp:999 -msgid "Unknown Canon Picture Info tag" -msgstr "Neznáma znaÄka Canon Picture Info" - -#: src/canonmn.cpp:1010 -msgid "AEB" -msgstr "" - -#: src/canonmn.cpp:1011 -msgid "FEB" -msgstr "" - -#: src/canonmn.cpp:1012 src/minoltamn.cpp:511 src/nikonmn.cpp:767 -#: src/nikonmn.cpp:1136 src/nikonmn.cpp:1196 src/nikonmn.cpp:1232 -#, fuzzy -msgid "ISO" -msgstr "Info o snímke" - -#: src/canonmn.cpp:1013 -msgid "WB" -msgstr "" - -#: src/canonmn.cpp:1024 -msgid "Postcard" -msgstr "" - -#: src/canonmn.cpp:1025 -msgid "Widescreen" -msgstr "" - -#: src/canonmn.cpp:1026 -#, fuzzy -msgid "Medium Movie" -msgstr "stredný 1" - -#: src/canonmn.cpp:1027 -#, fuzzy -msgid "Small Movie" -msgstr "Film" - -#: src/canonmn.cpp:1033 -#, fuzzy -msgid "On 1" -msgstr "zapnutý" - -#: src/canonmn.cpp:1034 -#, fuzzy -msgid "On 2" -msgstr "zapnutý" - -# AF = automatické zaostrenie -#: src/canonmn.cpp:1042 -#, fuzzy -msgid "On (shift AB)" -msgstr "automatické zaostrenie pre jeden záber" - -# AF = automatické zaostrenie -#: src/canonmn.cpp:1043 -#, fuzzy -msgid "On (shift GM)" -msgstr "automatické zaostrenie pre jeden záber" - -#: src/canonmn.cpp:1049 src/nikonmn.cpp:667 src/nikonmn.cpp:680 -#: src/nikonmn.cpp:995 src/olympusmn.cpp:622 src/olympusmn.cpp:862 -msgid "Yellow" -msgstr "" - -#: src/canonmn.cpp:1050 src/nikonmn.cpp:668 src/olympusmn.cpp:623 -#: src/olympusmn.cpp:863 -#, fuzzy -msgid "Orange" -msgstr "V diaľke" - -#: src/canonmn.cpp:1051 src/nikonmn.cpp:669 src/nikonmn.cpp:679 -#: src/nikonmn.cpp:993 src/olympusmn.cpp:624 src/olympusmn.cpp:864 -#, fuzzy -msgid "Red" -msgstr "ÄŒervené oÄi" - -#: src/canonmn.cpp:1052 src/canonmn.cpp:1061 src/nikonmn.cpp:670 -#: src/nikonmn.cpp:681 src/olympusmn.cpp:625 src/olympusmn.cpp:635 -#: src/olympusmn.cpp:865 src/olympusmn.cpp:874 -#, fuzzy -msgid "Green" -msgstr "Zelený odtieň" - -#: src/canonmn.cpp:1059 src/nikonmn.cpp:683 src/nikonmn.cpp:994 -#: src/olympusmn.cpp:633 src/olympusmn.cpp:872 -#, fuzzy -msgid "Blue" -msgstr "hodnota" - -#: src/canonmn.cpp:1060 src/olympusmn.cpp:634 src/olympusmn.cpp:873 -msgid "Purple" -msgstr "" - -#: src/canonmn.cpp:1067 -#, fuzzy -msgid "Bracket Mode" -msgstr "Krok viacnásobného záberu" - -#: src/canonmn.cpp:1068 -#, fuzzy -msgid "Bracket Value" -msgstr "Krok viacnásobného záberu" - -#: src/canonmn.cpp:1069 -#, fuzzy -msgid "Bracket Shot Number" -msgstr "Krok viacnásobného záberu" - -#: src/canonmn.cpp:1070 -#, fuzzy -msgid "Raw Jpg Quality" -msgstr "Kvalita obrázka" - -#: src/canonmn.cpp:1071 -#, fuzzy -msgid "Raw Jpg Size" -msgstr "VeľkosÅ¥ obrázka" - -#: src/canonmn.cpp:1073 -#, fuzzy -msgid "WB Bracket Mode" -msgstr "Krok viacnásobného záberu" - -#: src/canonmn.cpp:1074 -#, fuzzy -msgid "WB Bracket Value AB" -msgstr "Tabuľka vyváženia bielej" - -#: src/canonmn.cpp:1075 -#, fuzzy -msgid "WB Bracket Value GM" -msgstr "Tabuľka vyváženia bielej" - -#: src/canonmn.cpp:1076 src/nikonmn.cpp:701 -#, fuzzy -msgid "Filter Effect" -msgstr "Farebný efekt" - -#: src/canonmn.cpp:1077 src/nikonmn.cpp:702 -#, fuzzy -msgid "Toning Effect" -msgstr "fotoefekt" - -#: src/canonmn.cpp:1078 -#, fuzzy -msgid "Macro Magnification" -msgstr "Elektromagnetické zväÄÅ¡enie" - -#: src/canonmn.cpp:1078 -#, fuzzy -msgid "Macro magnification" -msgstr "Elektromagnetické zväÄÅ¡enie" - -#: src/canonmn.cpp:1079 -msgid "Live View Shooting" -msgstr "" - -#: src/canonmn.cpp:1079 -#, fuzzy -msgid "Live view shooting" -msgstr "Nastavenie režimu jazda autom" - -#: src/canonmn.cpp:1080 -#, fuzzy -msgid "Flash Exposure Lock" -msgstr "Kompenzácia expozície blesku" - -#: src/canonmn.cpp:1080 -#, fuzzy -msgid "Flash exposure lock" -msgstr "Kompenzácia expozície blesku" - -#: src/canonmn.cpp:1082 -#, fuzzy -msgid "Unknown Canon File Info tag" -msgstr "Neznáma znaÄka Canon Picture Info" - -#: src/canonmn.cpp:1092 src/canonmn.cpp:1102 src/canonmn.cpp:1110 -#: src/canonmn.cpp:1123 src/fujimn.cpp:147 src/fujimn.cpp:154 -#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1135 -#: src/minoltamn.cpp:1221 src/minoltamn.cpp:1884 src/minoltamn.cpp:1973 -#: src/minoltamn.cpp:2007 src/minoltamn.cpp:2033 src/minoltamn.cpp:2059 -#: src/olympusmn.cpp:93 src/olympusmn.cpp:1135 src/panasonicmn.cpp:167 -#: src/panasonicmn.cpp:174 src/panasonicmn.cpp:204 src/pentaxmn.cpp:470 -#: src/sonymn.cpp:150 src/sonymn.cpp:475 src/sonymn.cpp:505 src/tags.cpp:1501 -msgid "Standard" -msgstr "Å tandardný" - -#: src/canonmn.cpp:1100 -#, fuzzy -msgid "Lowest" -msgstr "vľavo dolu" - -#: src/canonmn.cpp:1104 -#, fuzzy -msgid "Highest" -msgstr "vysoká" - -#: src/canonmn.cpp:1112 -#, fuzzy -msgid "High Saturation" -msgstr "SýtosÅ¥" - -#: src/canonmn.cpp:1114 -#, fuzzy -msgid "Low Saturation" -msgstr "SýtosÅ¥" - -#: src/canonmn.cpp:1115 -#, fuzzy -msgid "CM Set 1" -msgstr "PC Set 1" - -#: src/canonmn.cpp:1116 -#, fuzzy -msgid "CM Set 2" -msgstr "PC Set 2" - -#: src/canonmn.cpp:1117 -msgid "User Def. 1" -msgstr "" - -#: src/canonmn.cpp:1118 -msgid "User Def. 2" -msgstr "" - -#: src/canonmn.cpp:1119 -msgid "User Def. 3" -msgstr "" - -#: src/canonmn.cpp:1120 -msgid "PC 1" -msgstr "" - -#: src/canonmn.cpp:1121 -msgid "PC 2" -msgstr "" - -#: src/canonmn.cpp:1122 -msgid "PC 3" -msgstr "" - -#: src/canonmn.cpp:1127 -msgid "Faithful" -msgstr "" - -#: src/canonmn.cpp:1128 src/minoltamn.cpp:903 src/minoltamn.cpp:953 -#: src/nikonmn.cpp:423 src/pentaxmn.cpp:707 -msgid "Monochrome" -msgstr "jednofarebné" - -#: src/canonmn.cpp:1133 -#, fuzzy -msgid "ToneCurve" -msgstr "Krivka tónu" - -#: src/canonmn.cpp:1133 -msgid "Tone curve" -msgstr "Krivka tónu" - -#: src/canonmn.cpp:1135 -#, fuzzy -msgid "SharpnessFrequency" -msgstr "OstrosÅ¥" - -#: src/canonmn.cpp:1135 -#, fuzzy -msgid "Sharpness frequency" -msgstr "OstrosÅ¥" - -#: src/canonmn.cpp:1136 -#, fuzzy -msgid "SensorRedLevel" -msgstr "WB_RGGBLevelsShade" - -#: src/canonmn.cpp:1136 -#, fuzzy -msgid "Sensor red level" -msgstr "Úroveň Äiernej" - -#: src/canonmn.cpp:1137 -#, fuzzy -msgid "SensorBlueLevel" -msgstr "WB_RGGBLevelsShade" - -#: src/canonmn.cpp:1137 -#, fuzzy -msgid "Sensor blue level" -msgstr "Úroveň Äiernej" - -#: src/canonmn.cpp:1138 -#, fuzzy -msgid "WhiteBalanceRed" -msgstr "Vyváženie bielej" - -#: src/canonmn.cpp:1138 -#, fuzzy -msgid "White balance red" -msgstr "Vyváženie bielej" - -#: src/canonmn.cpp:1139 -#, fuzzy -msgid "WhiteBalanceBlue" -msgstr "Tabuľka vyváženia bielej" - -#: src/canonmn.cpp:1139 -#, fuzzy -msgid "White balance blue" -msgstr "Tabuľka vyváženia bielej" - -#: src/canonmn.cpp:1140 -#, fuzzy -msgid "WhiteBalance" -msgstr "Vyváženie bielej" - -#: src/canonmn.cpp:1141 -#, fuzzy -msgid "ColorTemperature" -msgstr "Farebná teplota" - -#: src/canonmn.cpp:1141 src/minoltamn.cpp:156 src/minoltamn.cpp:786 -#: src/minoltamn.cpp:1038 src/minoltamn.cpp:1053 src/minoltamn.cpp:1054 -#: src/minoltamn.cpp:1475 src/minoltamn.cpp:1577 src/olympusmn.cpp:833 -#: src/sonymn.cpp:357 src/sonymn.cpp:358 -msgid "Color Temperature" -msgstr "Farebná teplota" - -#: src/canonmn.cpp:1142 -#, fuzzy -msgid "PictureStyle" -msgstr "Režim obrázka" - -#: src/canonmn.cpp:1142 -#, fuzzy -msgid "Picture style" -msgstr "Režim obrázka" - -#: src/canonmn.cpp:1143 -#, fuzzy -msgid "DigitalGain" -msgstr "digitálne makro" - -#: src/canonmn.cpp:1143 -#, fuzzy -msgid "Digital gain" -msgstr "digitálne makro" - -#: src/canonmn.cpp:1144 -msgid "WBShiftAB" -msgstr "" - -# AF = automatické zaostrenie -#: src/canonmn.cpp:1144 -#, fuzzy -msgid "WBShift AB" -msgstr "automatické zaostrenie pre jeden záber" - -#: src/canonmn.cpp:1145 -msgid "WBShiftGM" -msgstr "" - -# AF = automatické zaostrenie -#: src/canonmn.cpp:1145 -#, fuzzy -msgid "WB Shift GM" -msgstr "automatické zaostrenie pre jeden záber" - -#: src/canonmn.cpp:1146 -#, fuzzy -msgid "Unknown Canon Processing Info tag" -msgstr "Neznáma znaÄka Canon Picture Info" - -#: src/crwimage.cpp:664 -msgid "Header, offset" -msgstr "HlaviÄka, ofset" - -#: src/crwimage.cpp:681 -msgid "tag" -msgstr "znaÄka" - -#: src/crwimage.cpp:683 -msgid "dir" -msgstr "prieÄinok" - -#: src/crwimage.cpp:685 -msgid "type" -msgstr "typ" - -#: src/crwimage.cpp:686 -msgid "size" -msgstr "veľkosÅ¥" - -#: src/crwimage.cpp:687 -msgid "offset" -msgstr "ofset" - -#: src/datasets.cpp:79 -msgid "(invalid)" -msgstr "(nesprávny)" - -#: src/datasets.cpp:80 -msgid "IIM envelope record" -msgstr "záznam IIM obálky" - -#: src/datasets.cpp:81 -msgid "IIM application record 2" -msgstr "záznam IIM aplikácie 2" - -#: src/datasets.cpp:85 -msgid "Model Version" -msgstr "Verzia modelu" - -#: src/datasets.cpp:86 -msgid "" -"A binary number identifying the version of the Information Interchange " -"Model, Part I, utilised by the provider. Version numbers are assigned by " -"IPTC and NAA organizations." -msgstr "" -"Binárne Äíslo, ktoré identifikuje verziu Modelu na výmenu informácií, ÄasÅ¥ " -"1, ktorú používa poskytovateľ. Čísla verzií priraÄujú organizácie IPTC a NAA." - -#: src/datasets.cpp:90 src/panasonicmn.cpp:220 src/pentaxmn.cpp:378 -#: src/pentaxmn.cpp:962 src/pentaxmn.cpp:963 -msgid "Destination" -msgstr "Cieľ" - -#: src/datasets.cpp:91 -msgid "" -"This DataSet is to accommodate some providers who require routing " -"information above the appropriate OSI layers." -msgstr "" -"Táto množina údajov slúži pre niektorých poskytovateľov, ktorí vyžadujú " -"tieto smerovacie informácie nad prísluÅ¡nými vrstvami modelu OSI." - -#: src/datasets.cpp:94 src/sonymn.cpp:348 src/sonymn.cpp:349 -msgid "File Format" -msgstr "Formát súboru" - -#: src/datasets.cpp:95 -msgid "" -"A binary number representing the file format. The file format must be " -"registered with IPTC or NAA with a unique number assigned to it. The " -"information is used to route the data to the appropriate system and to allow " -"the receiving system to perform the appropriate actions there to." -msgstr "" -"Binárne Äíslo, ktoré predstavuje formát súboru. Formát súboru musí byÅ¥ " -"zaregistrovaný u IPTC alebo NAA, kde má priradené jedineÄné Äíslo. Tieto " -"údaje sa používajú na smerovanie údajov prísluÅ¡nému systému a na umožnenie " -"prijímajúcemu systému na nich vykonávaÅ¥ prísluÅ¡né operácie." - -#: src/datasets.cpp:101 -msgid "File Version" -msgstr "Verzia súboru" - -#: src/datasets.cpp:102 -msgid "" -"A binary number representing the particular version of the File Format " -"specified by tag." -msgstr "" -"Binárne Äíslo, ktoré predstavuje konkrétnu verziu Formátu súboru, ktorý " -"Å¡pecifikuje znaÄka ." - -#: src/datasets.cpp:105 -msgid "Service Id" -msgstr "Servisné identifikaÄné Äíslo" - -#: src/datasets.cpp:106 -msgid "Identifies the provider and product" -msgstr "Identifikácia poskytovateľa a produktu" - -#: src/datasets.cpp:108 -msgid "Envelope Number" -msgstr "Číslo obálky" - -#: src/datasets.cpp:109 -msgid "" -"The characters form a number that will be unique for the date specified in " -" tag and for the Service Identifier specified by " -" tag. If identical envelope numbers appear with the same " -"date and with the same Service Identifier, records 2-9 must be unchanged " -"from the original. This is not intended to be a sequential serial number " -"reception check." -msgstr "" -"Dva znaky z Äísla, ktoré bude jedineÄné pre údaje uvedené v znaÄke " -" a Identifikátor služby uvedený v znaÄke . Ak " -"sa vyskytne identické Äíslo obálky, záznamy s rovnakým dátumom a " -"Identifikátorom služby, záznamy 2-9 musia byÅ¥ oproti originálu nezmenené. " -"Nie je vÅ¡ak úÄelom byÅ¥ sekvenÄnou kontrolou prijatia sériového Äísla." - -#: src/datasets.cpp:117 -msgid "Product Id" -msgstr "IdentifikaÄné Äíslo výrobku" - -#: src/datasets.cpp:118 -msgid "" -"Allows a provider to identify subsets of its overall service. Used to " -"provide receiving organisation data on which to select, route, or otherwise " -"handle data." -msgstr "" -"Umožňuje poskytovateľovi identifikovaÅ¥ podmnožiny svojich služieb. Používa " -"sa na príjem organizaÄných údajov, na základe ktorých sa vyberajú, smerujú " -"alebo inak pracuje s údajmi." - -#: src/datasets.cpp:122 -msgid "Envelope Priority" -msgstr "Priorita obálky" - -#: src/datasets.cpp:123 -msgid "" -"Specifies the envelope handling priority and not the editorial urgency (see " -" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " -"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " -"Priority. The numeral \"0\" is reserved for future use." -msgstr "" - -#: src/datasets.cpp:129 -msgid "Date Sent" -msgstr "Dátum odoslania" - -#: src/datasets.cpp:130 -msgid "" -"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " -"to indicate year, month and day the service sent the material." -msgstr "" - -#: src/datasets.cpp:133 -msgid "Time Sent" -msgstr "ÄŒas odoslania" - -#: src/datasets.cpp:134 -msgid "" -"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " -"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " -"Universal Coordinated Time as described in ISO 8601. This is the time the " -"service sent the material." -msgstr "" - -#: src/datasets.cpp:139 -msgid "Character Set" -msgstr "Znaková sada" - -#: src/datasets.cpp:140 -msgid "" -"This tag consisting of one or more control functions used for the " -"announcement, invocation or designation of coded character sets. The control " -"functions follow the ISO 2022 standard and may consist of the escape control " -"character and one or more graphic characters." -msgstr "" - -#: src/datasets.cpp:145 -#, fuzzy -msgid "Unique Name Object" -msgstr "JedineÄný model fotoaparátu" - -#: src/datasets.cpp:146 -msgid "" -"This tag provide a globally unique identification for objects as specified " -"in the IIM, independent of provider and for any media form. The provider " -"must ensure the UNO is unique. Objects with the same UNO are identical." -msgstr "" - -#: src/datasets.cpp:151 -msgid "ARM Identifier" -msgstr "Identifikátor ARM" - -#: src/datasets.cpp:152 -msgid "" -"The DataSet identifies the Abstract Relationship Method identifier (ARM) " -"which is described in a document registered by the originator of the ARM " -"with the IPTC and NAA organizations." -msgstr "" - -#: src/datasets.cpp:156 -msgid "ARM Version" -msgstr "Verzia ARM" - -#: src/datasets.cpp:157 -#, fuzzy -msgid "" -"This tag consisting of a binary number representing the particular version " -"of the ARM specified by tag ." -msgstr "" -"Binárne Äíslo, ktoré predstavuje konkrétnu verziu Formátu súboru, ktorý " -"Å¡pecifikuje znaÄka ." - -#: src/datasets.cpp:170 -msgid "Record Version" -msgstr "Verzia záznamu" - -#: src/datasets.cpp:171 -#, fuzzy -msgid "" -"A binary number identifying the version of the Information Interchange " -"Model, Part II, utilised by the provider. Version numbers are assigned by " -"IPTC and NAA organizations." -msgstr "" -"Binárne Äíslo, ktoré identifikuje verziu Modelu na výmenu informácií, ÄasÅ¥ " -"1, ktorú používa poskytovateľ. Čísla verzií priraÄujú organizácie IPTC a NAA." - -#: src/datasets.cpp:175 -msgid "Object Type" -msgstr "Typ objektu" - -#: src/datasets.cpp:176 -msgid "" -"The Object Type is used to distinguish between different types of objects " -"within the IIM. The first part is a number representing a language " -"independent international reference to an Object Type followed by a colon " -"separator. The second part, if used, is a text representation of the Object " -"Type Number consisting of graphic characters plus spaces either in English " -"or in the language of the service as indicated in tag " -msgstr "" - -#: src/datasets.cpp:184 -msgid "Object Attribute" -msgstr "Atribút objektu" - -#: src/datasets.cpp:185 -msgid "" -"The Object Attribute defines the nature of the object independent of the " -"Subject. The first part is a number representing a language independent " -"international reference to an Object Attribute followed by a colon " -"separator. The second part, if used, is a text representation of the Object " -"Attribute Number consisting of graphic characters plus spaces either in " -"English, or in the language of the service as indicated in tag " -"" -msgstr "" - -#: src/datasets.cpp:193 -msgid "Object Name" -msgstr "Názov objektu" - -#: src/datasets.cpp:194 -msgid "" -"Used as a shorthand reference for the object. Changes to exist-ing data, " -"such as updated stories or new crops on photos, should be identified in tag " -"." -msgstr "" - -#: src/datasets.cpp:198 -msgid "Document Title" -msgstr "Názov dokumentu" - -#: src/datasets.cpp:199 src/olympusmn.cpp:820 -msgid "Edit Status" -msgstr "UpraviÅ¥ stav" - -#: src/datasets.cpp:200 -msgid "Status of the object data, according to the practice of the provider." -msgstr "" - -#: src/datasets.cpp:202 -msgid "Editorial Update" -msgstr "" - -#: src/datasets.cpp:203 -msgid "" -"Indicates the type of update that this object provides to a previous object. " -"The link to the previous object is made using the tags and " -", according to the practices of the provider." -msgstr "" - -#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:419 -msgid "Urgency" -msgstr "SúrnosÅ¥" - -#: src/datasets.cpp:208 -msgid "" -"Specifies the editorial urgency of content and not necessarily the envelope " -"handling priority (see tag ). The \"1\" is most urgent, " -"\"5\" normal and \"8\" denotes the least-urgent copy." -msgstr "" - -#: src/datasets.cpp:213 src/properties.cpp:167 -msgid "Subject" -msgstr "Predmet" - -#: src/datasets.cpp:214 -msgid "The Subject Reference is a structured definition of the subject matter." -msgstr "" - -#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:405 -msgid "Category" -msgstr "Kategória" - -#: src/datasets.cpp:217 -msgid "" -"Identifies the subject of the object data in the opinion of the provider. A " -"list of categories will be maintained by a regional registry, where " -"available, otherwise by the provider." -msgstr "" - -#: src/datasets.cpp:222 -msgid "Supplemental Category" -msgstr "DodatoÄná kategória" - -#: src/datasets.cpp:223 -msgid "" -"Supplemental categories further refine the subject of an object data. A " -"supplemental category may include any of the recognised categories as used " -"in tag . Otherwise, selection of supplemental categories are left " -"to the provider." -msgstr "" - -#: src/datasets.cpp:228 src/properties.cpp:417 -msgid "Supplemental Categories" -msgstr "DodatoÄné kategórie" - -#: src/datasets.cpp:229 -msgid "Fixture Id" -msgstr "ID upevnenia" - -#: src/datasets.cpp:230 -msgid "" -"Identifies object data that recurs often and predictably. Enables users to " -"immediately find or recall such an object." -msgstr "" - -#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:395 -msgid "Keywords" -msgstr "KľúÄové slová" - -#: src/datasets.cpp:234 -msgid "" -"Used to indicate specific information retrieval words. It is expected that a " -"provider of various types of data that are related in subject matter uses " -"the same keyword, enabling the receiving system or subsystems to search " -"across all types of data for related material." -msgstr "" - -#: src/datasets.cpp:240 -msgid "Location Code" -msgstr "Kód umiestnenia" - -#: src/datasets.cpp:241 -msgid "" -"Indicates the code of a country/geographical location referenced by the " -"content of the object. Where ISO has established an appropriate country code " -"under ISO 3166, that code will be used. When ISO 3166 does not adequately " -"provide for identification of a location or a country, e.g. ships at sea, " -"space, IPTC will assign an appropriate three-character code under the " -"provisions of ISO 3166 to avoid conflicts." -msgstr "" - -#: src/datasets.cpp:248 -msgid "Location Name" -msgstr "Názov umiestnenia" - -#: src/datasets.cpp:249 -msgid "" -"Provides a full, publishable name of a country/geographical location " -"referenced by the content of the object, according to guidelines of the " -"provider." -msgstr "" - -#: src/datasets.cpp:253 src/properties.cpp:358 -msgid "Release Date" -msgstr "Dátum vydania" - -#: src/datasets.cpp:254 -msgid "" -"Designates in the form CCYYMMDD the earliest date the provider intends the " -"object to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:257 -msgid "Release Time" -msgstr "ÄŒas vydania" - -#: src/datasets.cpp:258 -msgid "" -"Designates in the form HHMMSS:HHMM the earliest time the provider intends " -"the object to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:261 -msgid "Expiration Date" -msgstr "Dátum expirácie" - -#: src/datasets.cpp:262 -msgid "" -"Designates in the form CCYYMMDD the latest date the provider or owner " -"intends the object data to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:265 -msgid "ExpirationTime" -msgstr "ÄŒas ukonÄenia platnosti" - -#: src/datasets.cpp:266 -msgid "" -"Designates in the form HHMMSS:HHMM the latest time the provider or owner " -"intends the object data to be used. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:269 -msgid "Special Instructions" -msgstr "Speciálne inÅ¡trukcie" - -#: src/datasets.cpp:270 -msgid "" -"Other editorial instructions concerning the use of the object data, such as " -"embargoes and warnings." -msgstr "" - -#: src/datasets.cpp:273 src/properties.cpp:414 -msgid "Instructions" -msgstr "InÅ¡trukcie" - -#: src/datasets.cpp:274 -msgid "Action Advised" -msgstr "Mali by ste urobiÅ¥" - -#: src/datasets.cpp:275 -msgid "" -"Indicates the type of action that this object provides to a previous object. " -"The link to the previous object is made using tags and " -", according to the practices of the provider." -msgstr "" - -#: src/datasets.cpp:279 -msgid "Reference Service" -msgstr "ReferenÄná služba" - -#: src/datasets.cpp:280 -msgid "" -"Identifies the Service Identifier of a prior envelope to which the current " -"object refers." -msgstr "" - -#: src/datasets.cpp:283 -msgid "Reference Date" -msgstr "ReferenÄný dátum" - -#: src/datasets.cpp:284 -msgid "" -"Identifies the date of a prior envelope to which the current object refers." -msgstr "" - -#: src/datasets.cpp:286 -msgid "Reference Number" -msgstr "ReferenÄné Äíslo" - -#: src/datasets.cpp:287 -msgid "" -"Identifies the Envelope Number of a prior envelope to which the current " -"object refers." -msgstr "" - -#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:409 -msgid "Date Created" -msgstr "Dátum vytvorenia" - -#: src/datasets.cpp:290 -msgid "" -"Represented in the form CCYYMMDD to designate the date the intellectual " -"content of the object data was created rather than the date of the creation " -"of the physical representation. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:295 -msgid "Time Created" -msgstr "ÄŒas vytvorenia" - -#: src/datasets.cpp:296 -msgid "" -"Represented in the form HHMMSS:HHMM to designate the time the intellectual " -"content of the object data current source material was created rather than " -"the creation of the physical representation. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:301 -msgid "Digitization Date" -msgstr "Dátum digitalizácie" - -#: src/datasets.cpp:302 -msgid "" -"Represented in the form CCYYMMDD to designate the date the digital " -"representation of the object data was created. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:305 -msgid "Digitization Time" -msgstr "ÄŒas digitalizácie" - -#: src/datasets.cpp:306 -msgid "" -"Represented in the form HHMMSS:HHMM to designate the time the digital " -"representation of the object data was created. Follows ISO 8601 standard." -msgstr "" - -#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 -#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:106 -#: src/pentaxmn.cpp:468 src/pentaxmn.cpp:526 src/sigmamn.cpp:154 -#: src/sonymn.cpp:110 -msgid "Program" -msgstr "Program" - -#: src/datasets.cpp:311 -msgid "Identifies the type of program used to originate the object data." -msgstr "" - -#: src/datasets.cpp:313 -msgid "Program Version" -msgstr "Verzia programu" - -#: src/datasets.cpp:314 -msgid "Used to identify the version of the program mentioned in tag ." -msgstr "" - -#: src/datasets.cpp:316 -msgid "Object Cycle" -msgstr "Cyklus objektu" - -#: src/datasets.cpp:317 -msgid "Used to identify the editorial cycle of object data." -msgstr "" - -#: src/datasets.cpp:319 -msgid "By-line" -msgstr "Vedľajší" - -#: src/datasets.cpp:320 -msgid "" -"Contains name of the creator of the object data, e.g. writer, photographer " -"or graphic artist." -msgstr "" - -#: src/datasets.cpp:323 -msgid "Author" -msgstr "Autor" - -#: src/datasets.cpp:324 -msgid "By-line Title" -msgstr "Vedľajší názov" - -#: src/datasets.cpp:325 -msgid "" -"A by-line title is the title of the creator or creators of an object data. " -"Where used, a by-line title should follow the by-line it modifies." -msgstr "" - -#: src/datasets.cpp:328 src/datasets.cpp:332 src/properties.cpp:406 -msgid "City" -msgstr "Mesto" - -#: src/datasets.cpp:329 -msgid "" -"Identifies city of object data origin according to guidelines established by " -"the provider." -msgstr "" - -#: src/datasets.cpp:333 -msgid "Sub Location" -msgstr "Umiestnenie sub." - -#: src/datasets.cpp:334 -msgid "" -"Identifies the location within a city from which the object data originates, " -"according to guidelines established by the provider." -msgstr "" - -#: src/datasets.cpp:337 -msgid "Province State" -msgstr "Provincia Å¡tátu" - -#: src/datasets.cpp:338 -msgid "" -"Identifies Province/State of origin according to guidelines established by " -"the provider." -msgstr "" - -#: src/datasets.cpp:341 -msgid "State/Province" -msgstr "Å tát/provincia" - -#: src/datasets.cpp:342 src/properties.cpp:649 -msgid "Country Code" -msgstr "Kód krajiny" - -#: src/datasets.cpp:343 -msgid "" -"Indicates the code of the country/primary location where the intellectual " -"property of the object data was created, e.g. a photo was taken, an event " -"occurred. Where ISO has established an appropriate country code under ISO " -"3166, that code will be used. When ISO 3166 does not adequately provide for " -"identification of a location or a new country, e.g. ships at sea, space, " -"IPTC will assign an appropriate three-character code under the provisions of " -"ISO 3166 to avoid conflicts." -msgstr "" - -#: src/datasets.cpp:352 -msgid "Country Name" -msgstr "Krajina" - -#: src/datasets.cpp:353 -msgid "" -"Provides full, publishable, name of the country/primary location where the " -"intellectual property of the object data was created, according to " -"guidelines of the provider." -msgstr "" - -#: src/datasets.cpp:357 src/properties.cpp:407 -msgid "Country" -msgstr "Krajina" - -#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:418 -msgid "Transmission Reference" -msgstr "OsvedÄenie na prenos" - -#: src/datasets.cpp:359 -msgid "" -"A code representing the location of original transmission according to " -"practices of the provider." -msgstr "" - -#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:413 -msgid "Headline" -msgstr "Nadpis" - -#: src/datasets.cpp:364 -msgid "" -"A publishable entry providing a synopsis of the contents of the object data." -msgstr "" - -#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:408 -msgid "Credit" -msgstr "Pôvodca" - -#: src/datasets.cpp:368 -msgid "" -"Identifies the provider of the object data, not necessarily the owner/" -"creator." -msgstr "" - -#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:166 -#: src/properties.cpp:415 -msgid "Source" -msgstr "Zdroj" - -#: src/datasets.cpp:372 -msgid "" -"Identifies the original owner of the intellectual content of the object " -"data. This could be an agency, a member of an agency or an individual." -msgstr "" -"Identifikácia pôvodného vlastníka intelektuálneho obsahu obrázka. To môže " -"byÅ¥ agentúra, Älen agentúry alebo meno individuálneho fotografa." - -#: src/datasets.cpp:377 -msgid "Contains any necessary copyright notice." -msgstr "" - -#: src/datasets.cpp:379 -msgid "Copyright Notice" -msgstr "Oznam autorských práv" - -#: src/datasets.cpp:380 src/properties.cpp:937 src/properties.cpp:946 -msgid "Contact" -msgstr "Kontakt" - -#: src/datasets.cpp:381 -msgid "" -"Identifies the person or organisation which can provide further background " -"information on the object data." -msgstr "" - -#: src/datasets.cpp:384 -msgid "Caption" -msgstr "Titulok" - -#: src/datasets.cpp:385 -msgid "A textual description of the object data." -msgstr "" - -#: src/datasets.cpp:387 src/properties.cpp:151 src/properties.cpp:981 -msgid "Description" -msgstr "Popis" - -#: src/datasets.cpp:388 -msgid "Writer" -msgstr "Zapísal" - -#: src/datasets.cpp:389 -msgid "" -"Identification of the name of the person involved in the writing, editing or " -"correcting the object data or caption/abstract." -msgstr "" - -#: src/datasets.cpp:392 -msgid "Rasterized Caption" -msgstr "Rasterizovaný titulok" - -#: src/datasets.cpp:393 -msgid "" -"Contains the rasterized object data description and is used where characters " -"that have not been coded are required for the caption." -msgstr "" - -#: src/datasets.cpp:397 -msgid "Indicates the color components of an image." -msgstr "Farebné zložky obrázka." - -#: src/datasets.cpp:399 -msgid "Image Orientation" -msgstr "Orientácia obrázka" - -#: src/datasets.cpp:400 -msgid "Indicates the layout of an image." -msgstr "Rozloženie obrázka." - -#: src/datasets.cpp:402 src/properties.cpp:157 -msgid "Language" -msgstr "Jazyk" - -#: src/datasets.cpp:403 -msgid "" -"Describes the major national language of the object, according to the 2-" -"letter codes of ISO 639:1988. Does not define or imply any coded character " -"set, but is used for internal routing, e.g. to various editorial desks." -msgstr "" - -#: src/datasets.cpp:408 -msgid "Audio Type" -msgstr "Typ audio" - -#: src/datasets.cpp:409 -msgid "Indicates the type of an audio content." -msgstr "OznaÄuje typ zvukového obsahu." - -#: src/datasets.cpp:411 -msgid "Audio Rate" -msgstr "RýchlosÅ¥ zvuku" - -#: src/datasets.cpp:412 -#, fuzzy -msgid "Indicates the sampling rate in Hertz of an audio content." -msgstr "Zobrazuje dĺžku trvania zvukového obsahu" - -#: src/datasets.cpp:414 -msgid "Audio Resolution" -msgstr "Rozlíšenie zvuku" - -#: src/datasets.cpp:415 -#, fuzzy -msgid "Indicates the sampling resolution of an audio content." -msgstr "Zobrazuje dĺžku trvania zvukového obsahu" - -#: src/datasets.cpp:417 -msgid "Audio Duration" -msgstr "Trvanie zvuku" - -#: src/datasets.cpp:418 -msgid "Indicates the duration of an audio content." -msgstr "Zobrazuje dĺžku trvania zvukového obsahu" - -#: src/datasets.cpp:420 -msgid "Audio Outcue" -msgstr "Zvuková signalizácia konca" - -#: src/datasets.cpp:421 -msgid "" -"Identifies the content of the end of an audio object data, according to " -"guidelines established by the provider." -msgstr "" - -#: src/datasets.cpp:424 -msgid "Preview Format" -msgstr "Formát náhľadu" - -#: src/datasets.cpp:425 -msgid "" -"A binary number representing the file format of the object data preview. The " -"file format must be registered with IPTC or NAA organizations with a unique " -"number assigned to it." -msgstr "" - -#: src/datasets.cpp:429 -msgid "Preview Version" -msgstr "Verzia náhľadu" - -#: src/datasets.cpp:430 -#, fuzzy -msgid "" -"A binary number representing the particular version of the object data " -"preview file format specified in tag ." -msgstr "" -"Binárne Äíslo, ktoré predstavuje konkrétnu verziu Formátu súboru, ktorý " -"Å¡pecifikuje znaÄka ." - -#: src/datasets.cpp:433 -msgid "Preview Data" -msgstr "Dáta náhľadu" - -#: src/datasets.cpp:434 -msgid "Binary image preview data." -msgstr "Údaje náhľadu binárneho obrázka." - -#: src/datasets.cpp:436 src/datasets.cpp:437 -msgid "(Invalid)" -msgstr "(Chybný)" - -#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 -msgid "Unknown dataset" -msgstr "Neznáma množina údajov" - -#: src/error.cpp:55 -#, fuzzy -msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." -msgstr "Chyba %0: arg1=%1, arg2=%2, arg3=%3." - -#: src/error.cpp:56 -msgid "Success" -msgstr "ÚspeÅ¡né" - -#: src/error.cpp:59 -msgid "This does not look like a %1 image" -msgstr "Toto nevyzerá ako obrázok %1" - -#: src/error.cpp:60 -msgid "Invalid dataset name `%1'" -msgstr "Chybný názov množiny údajov „%1“" - -#: src/error.cpp:61 -msgid "Invalid record name `%1'" -msgstr "Neplatný názov záznamu „%1“" - -#: src/error.cpp:62 -msgid "Invalid key `%1'" -msgstr "Neplatný kÄ¾ÃºÄ â€ž%1“" - -#: src/error.cpp:63 -msgid "Invalid tag name or ifdId `%1', ifdId %2" -msgstr "neplatný názov znaÄky alebo ifdId „%1“, ifdId %2" - -#: src/error.cpp:64 -msgid "Value not set" -msgstr "Nenastavená hodnota" - -#: src/error.cpp:65 -msgid "%1: Failed to open the data source: %2" -msgstr "%1: Nepodarilo sa otvoriÅ¥ zdroj dát: %2" - -#: src/error.cpp:66 -msgid "%1: Failed to open file (%2): %3" -msgstr "%1: Nepodarilo sa otvoriÅ¥ súbor (%2): %3" - -#: src/error.cpp:67 -msgid "%1: The file contains data of an unknown image type" -msgstr "%1: Súbor obsahuje dáta neznámeho typu obrázka" - -#: src/error.cpp:68 -msgid "The memory contains data of an unknown image type" -msgstr "Pamäť obsahuje dáta neznámeho typu obrázka" - -#: src/error.cpp:69 -msgid "Image type %1 is not supported" -msgstr "Typ obrázka %1 nie je podporovaný" - -#: src/error.cpp:70 -msgid "Failed to read image data" -msgstr "Nepodarilo sa naÄítaÅ¥ obrazové údaje" - -#: src/error.cpp:71 -msgid "This does not look like a JPEG image" -msgstr "Toto nevyzerá na JPEG obrázok" - -#: src/error.cpp:72 -#, fuzzy -msgid "%1: Failed to map file for reading and writing: %2" -msgstr "Nepodarilo sa otvoriÅ¥ súbor s príkazmi na Äítanie\n" - -#: src/error.cpp:73 -msgid "%1: Failed to rename file to %2: %3" -msgstr "%1: Nepodarilo sa premenovaÅ¥ súbor na %2: %3" - -#: src/error.cpp:74 -msgid "%1: Transfer failed: %2" -msgstr "%1: Prenos zlyhal: %2" - -#: src/error.cpp:75 -msgid "Memory transfer failed: %1" -msgstr "Prenos z pamäte zlyhal: %1" - -#: src/error.cpp:76 -msgid "Failed to read input data" -msgstr "Nepodarilo sa naÄítaÅ¥ vstupné údaje" - -#: src/error.cpp:77 -msgid "Failed to write image" -msgstr "Nepodarilo sa zapísaÅ¥ obrázok" - -#: src/error.cpp:78 -msgid "Input data does not contain a valid image" -msgstr "Vstupné dáta neobsahujú podporovaný obrázok" - -#: src/error.cpp:79 -#, fuzzy -msgid "Invalid ifdId %1" -msgstr "Neplatný kÄ¾ÃºÄ â€ž%1“" - -#: src/error.cpp:80 -msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" -msgstr "" -"Entry::setValue: Hodnota je príliÅ¡ veľká (znaÄka=%1, veľkosÅ¥=%2, požadovaná=" -"%3)" - -#: src/error.cpp:81 -msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" -msgstr "" -"Entry::setDataArea: Hodnota je príliÅ¡ veľká (znaÄka=%1, veľkosÅ¥=%2, " -"požadovaná=%3)" - -#: src/error.cpp:82 -msgid "Offset out of range" -msgstr "Ofset mimo rozsahu" - -#: src/error.cpp:83 -msgid "Unsupported data area offset type" -msgstr "Nepodporovaný typ ofsetu oblasti údajov" - -#: src/error.cpp:84 -msgid "Invalid charset: `%1'" -msgstr "Neplatná znaková sada: „%1“" - -#: src/error.cpp:85 -msgid "Unsupported date format" -msgstr "Nepodporovaný formát dátumu" - -#: src/error.cpp:86 -msgid "Unsupported time format" -msgstr "Nepodporovaný formát Äasu" - -#: src/error.cpp:87 -#, fuzzy -msgid "Writing to %1 images is not supported" -msgstr "Zapisovanie do obrázkov „%2“ nie je podporované" - -#: src/error.cpp:88 -msgid "Setting %1 in %2 images is not supported" -msgstr "Voľba %1 v %2 obrázkoch nie je povolené" - -#: src/error.cpp:89 -msgid "This does not look like a CRW image" -msgstr "Toto nevyzerá na CRW obrázok" - -#: src/error.cpp:90 -msgid "%1: Not supported" -msgstr "%1: Nepodporovaný" - -#: src/error.cpp:91 -msgid "No namespace info available for XMP prefix `%1'" -msgstr "Nie sú dostupné informácie mennom priestore XMP predpony „%1“" - -#: src/error.cpp:92 -#, fuzzy -msgid "No prefix registered for namespace `%2', needed for property path `%1'" -msgstr "Pre menný priestor „%1“ nie je zaregistrovaná predpona" - -#: src/error.cpp:93 -msgid "Size of %1 JPEG segment is larger than 65535 bytes" -msgstr "VeľkosÅ¥ %1 JPEG Äasti je väÄÅ¡ia ako 65535 bajtov" - -#: src/error.cpp:94 -msgid "Unhandled Xmpdatum %1 of type %2" -msgstr "Xmpdatum %1 typu %2 bez obsluhy" - -#: src/error.cpp:95 -msgid "Unhandled XMP node %1 with opt=%2" -msgstr "XMP uzol %1 s opt=%2 bez obsluhy" - -#: src/error.cpp:96 -msgid "XMP Toolkit error %1: %2" -msgstr "Chyba XMP Toolkit %1: %2" - -#: src/error.cpp:97 -msgid "Failed to decode Lang Alt property %1 with opt=%2" -msgstr "Nepodarilo sa dekódovaÅ¥ vlastnosÅ¥ Lang Alt %1 s opt=%2" - -#: src/error.cpp:98 -msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" -msgstr "Nepodarilo sa dekódovaÅ¥ kvalifikátor Lang Alt %1 s opt=%2" - -#: src/error.cpp:99 -msgid "Failed to encode Lang Alt property %1" -msgstr "Nepodarilo sa zakódovaÅ¥ vlastnosÅ¥ Lang Alt %1" - -#: src/error.cpp:100 -msgid "Failed to determine property name from path %1, namespace %2" -msgstr "" -"Nepodarilo sa dekódovaÅ¥ názov vlastnosti z cesty %1, menného priestoru %2" - -#: src/error.cpp:101 -msgid "Schema namespace %1 is not registered with the XMP Toolkit" -msgstr "Menný priestor schémy %1 nie je registrovaný v XMP Toolkit" - -#: src/error.cpp:102 -msgid "No namespace registered for prefix `%1'" -msgstr "Pre predponu „%1“ nie je zaregistrovaný menný priestor" - -#: src/error.cpp:103 -msgid "" -"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" -"%1', `%2', `%3'" -msgstr "" - -#: src/error.cpp:104 -#, fuzzy -msgid "Invalid XmpText type `%1'" -msgstr "Neplatný kÄ¾ÃºÄ â€ž%1“" - -#: src/error.cpp:105 -msgid "TIFF directory %1 has too many entries" -msgstr "" - -#: src/error.cpp:106 -msgid "Multiple TIFF array element tags %1 in one directory" -msgstr "" - -#: src/error.cpp:107 -msgid "TIFF array element tag %1 has wrong type" -msgstr "" - -#: src/error.cpp:108 -#, fuzzy -msgid "%1 has invalid XMP value type `%2'" -msgstr "Neplatný kÄ¾ÃºÄ â€ž%1“" - -#: src/exiv2.cpp:212 -msgid "Copyright (C) 2004-2012 Andreas Huggel.\n" -msgstr "Autorské práva (C) 2004-2011 Andreas Huggel.\n" - -#: src/exiv2.cpp:214 -msgid "" -"This program is free software; you can redistribute it and/or\n" -"modify it under the terms of the GNU General Public License\n" -"as published by the Free Software Foundation; either version 2\n" -"of the License, or (at your option) any later version.\n" -msgstr "" - -#: src/exiv2.cpp:219 -msgid "" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -msgstr "" -"Tento program je šírený v nádeji, že bude užitoÄný, avÅ¡ak\n" -"BEZ AKEJKOĽVEK ZÃRUKY; neposkytujú sa ani odvodené záruky PREDAJNOSTI \n" -"alebo VHODNOSTI PRE URÄŒITà ÚČEL. ÄŽalÅ¡ie podrobnosti hľadajte \n" -"v GNU General Public License.\n" - -#: src/exiv2.cpp:224 -msgid "" -"You should have received a copy of the GNU General Public\n" -"License along with this program; if not, write to the Free\n" -"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" -"Boston, MA 02110-1301 USA\n" -msgstr "" - -#: src/exiv2.cpp:232 -msgid "Usage:" -msgstr "Použitie:" - -#: src/exiv2.cpp:233 -msgid "" -"[ options ] [ action ] file ...\n" -"\n" -msgstr "" -"[ voľby ] [ ÄinnosÅ¥ ] súbor ...\n" -"\n" - -#: src/exiv2.cpp:234 -msgid "Manipulate the Exif metadata of images.\n" -msgstr "Manipulácia s Exif metadátami obrázkov.\n" - -#: src/exiv2.cpp:240 -msgid "" -"\n" -"Actions:\n" -msgstr "" -"\n" -"Operácie:\n" - -#: src/exiv2.cpp:241 -msgid "" -" ad | adjust Adjust Exif timestamps by the given time. This action\n" -" requires at least one of the -a, -Y, -O or -D options.\n" -msgstr "" -" ad | adjust UpraviÅ¥ Äasové známky EXIF o daný Äas. Táto operácia\n" -" vyžaduje aspoň jednu z volieb -a, -Y, -O or -D.\n" - -#: src/exiv2.cpp:243 -msgid " pr | print Print image metadata.\n" -msgstr " pr | print VypísaÅ¥ metadáta obrázka.\n" - -#: src/exiv2.cpp:244 -msgid " rm | delete Delete image metadata from the files.\n" -msgstr " rm | delete ZmazaÅ¥ metadáta obrázkov zo súborov.\n" - -#: src/exiv2.cpp:245 -msgid "" -" in | insert Insert metadata from corresponding *.exv files.\n" -" Use option -S to change the suffix of the input files.\n" -msgstr "" -" in | insert VložiÅ¥ metadáta zo zodpovedajúcich súborov *.exv.\n" -" Voľbou -S môžete zmeniÅ¥ príponu vstupných súborov.\n" - -#: src/exiv2.cpp:247 -msgid "" -" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" -msgstr "" -" ex | extract ExtrahovaÅ¥ metadáta do súborov *.exv, *.xmp a náhľadov.\n" - -#: src/exiv2.cpp:248 -msgid "" -" mv | rename Rename files and/or set file timestamps according to the\n" -" Exif create timestamp. The filename format can be set with\n" -" -r format, timestamp options are controlled with -t and -T.\n" -msgstr "" -" mv | rename PremenovaÅ¥ súbory a/alebo nastaviÅ¥ Äasové známky podľa\n" -" Äasovej známky EXIF. Formát názvu súboru je možné nastaviÅ¥\n" -" voľbou -r, voľby Äasovej známku sa menia pomocou -t a -T.\n" - -#: src/exiv2.cpp:251 -msgid "" -" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" -" IPTC metadata of image files or set the JPEG comment.\n" -" Requires option -c, -m or -M.\n" -msgstr "" -" mo | modify PoužiÅ¥ operácie na zmenu (pridanie, nastavenie, zmazanie) " -"EXIF\n" -" a IPTC metadát obrázkových súborov alebo nastavenie JPEG " -"komentára.\n" -" Vyžaduje voľbu -c, -m alebo -M.\n" - -#: src/exiv2.cpp:254 -msgid "" -" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" -" Exif tag.\n" -msgstr "" -" fi | fixiso SkopírovaÅ¥ nastavenie ISO z Pozn. výrobcu Nikon Makernote " -"do\n" -" bežnej EXIF znaÄky.\n" - -#: src/exiv2.cpp:256 -msgid "" -" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" -" character encoding can be specified with the -n option.\n" -msgstr "" - -#: src/exiv2.cpp:258 -msgid "" -"\n" -"Options:\n" -msgstr "" -"\n" -"Voľby:\n" - -#: src/exiv2.cpp:259 -msgid " -h Display this help and exit.\n" -msgstr " -h ZobraziÅ¥ tohto pomocníka a skonÄiÅ¥.\n" - -#: src/exiv2.cpp:260 -msgid " -V Show the program version and exit.\n" -msgstr " -V ZobraziÅ¥ verziu programu a skonÄiÅ¥.\n" - -#: src/exiv2.cpp:261 -msgid " -v Be verbose during the program run.\n" -msgstr " -v VýreÄné informácie o behu programu.\n" - -#: src/exiv2.cpp:262 -#, fuzzy -msgid "" -" -q Silence warnings and error messages during the program run " -"(quiet).\n" -msgstr " -v VýreÄné informácie o behu programu.\n" - -#: src/exiv2.cpp:263 -msgid "" -" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" -msgstr "" - -#: src/exiv2.cpp:264 -msgid " -b Show large binary values.\n" -msgstr " -b ZobrazovaÅ¥ veľké binárne hodnoty.\n" - -#: src/exiv2.cpp:265 -#, fuzzy -msgid " -u Show unknown tags.\n" -msgstr " -u NezobrazovaÅ¥ neznáme znaÄky.\n" - -#: src/exiv2.cpp:266 -msgid " -g key Only output info for this key (grep).\n" -msgstr "" - -#: src/exiv2.cpp:267 -msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" -msgstr "" - -#: src/exiv2.cpp:268 -msgid " -k Preserve file timestamps (keep).\n" -msgstr " -k ZachovaÅ¥ Äasové známky súborov.\n" - -#: src/exiv2.cpp:269 -msgid "" -" -t Also set the file timestamp in 'rename' action (overrides -k).\n" -msgstr "" -" -t Pri operácii „rename“ nastaviÅ¥ aj Äasové známky súborov (má " -"prioritu pred -k).\n" - -#: src/exiv2.cpp:270 -msgid "" -" -T Only set the file timestamp in 'rename' action, do not rename\n" -" the file (overrides -k).\n" -msgstr "" -" -T Operáciou „rename“ iba nastavovaÅ¥ Äasové známky, nepremenúvaÅ¥\n" -" súbor (má prioritu pred -k).\n" - -#: src/exiv2.cpp:272 -msgid " -f Do not prompt before overwriting existing files (force).\n" -msgstr " -f NepýtaÅ¥ sa pred prepísaním existujúcich súborov.\n" - -#: src/exiv2.cpp:273 -msgid " -F Do not prompt before renaming files (Force).\n" -msgstr " -F NepýtaÅ¥ sa pred premenovaním súborov.\n" - -#: src/exiv2.cpp:274 -msgid "" -" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" -" is only used with the 'adjust' action.\n" -msgstr "" -" -a time nastavenie Äasu vo formáte [-]HH[:MM[:SS]]. Táto voľba\n" -" sa používa iba s operáciou „adjust“.\n" - -#: src/exiv2.cpp:276 -msgid " -Y yrs Year adjustment with the 'adjust' action.\n" -msgstr " -Y rok Nastavenie rokov operáciou „adjust“.\n" - -#: src/exiv2.cpp:277 -msgid " -O mon Month adjustment with the 'adjust' action.\n" -msgstr " -O mes Nastavenie mesiacov operáciou „adjust“.\n" - -#: src/exiv2.cpp:278 -msgid " -D day Day adjustment with the 'adjust' action.\n" -msgstr " -D deň Nastavenie dní operáciou „adjust“.\n" - -#: src/exiv2.cpp:279 -msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" -msgstr " -p rež Režim výpisu operácie „print“. možné režimy sú:\n" - -#: src/exiv2.cpp:280 -msgid " s : print a summary of the Exif metadata (the default)\n" -msgstr " s : vypísaÅ¥ zhrnutie EXIF metadát (Å¡tandardne)\n" - -#: src/exiv2.cpp:281 -#, fuzzy -msgid "" -" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" -msgstr " v : Äisto hodnoty EXIF údajov (skratka pre -Pxgnycv)\n" - -#: src/exiv2.cpp:282 -#, fuzzy -msgid " t : interpreted (translated) Exif data (-PEkyct)\n" -msgstr "" -" t : interpretované (preložené) EXIF údaje (skratka pre -Pkyct)\n" - -#: src/exiv2.cpp:283 -#, fuzzy -msgid " v : plain Exif data values (-PExgnycv)\n" -msgstr " v : Äisto hodnoty EXIF údajov (skratka pre -Pxgnycv)\n" - -#: src/exiv2.cpp:284 -#, fuzzy -msgid " h : hexdump of the Exif data (-PExgnycsh)\n" -msgstr "" -" h : hexadecimálny výpis EXIF údajov (skratka pre -Pxgnycsh)\n" - -#: src/exiv2.cpp:285 -#, fuzzy -msgid " i : IPTC data values (-PIkyct)\n" -msgstr " i : hodnoty IPTC údajov\n" - -#: src/exiv2.cpp:286 -#, fuzzy -msgid " x : XMP properties (-PXkyct)\n" -msgstr " x : XMP vlastnosti\n" - -#: src/exiv2.cpp:287 src/exiv2.cpp:310 -msgid " c : JPEG comment\n" -msgstr " c : JPEG komentár\n" - -#: src/exiv2.cpp:288 -#, fuzzy -msgid " p : list available previews\n" -msgstr " l : oznaÄenie znaÄky\n" - -#: src/exiv2.cpp:289 -#, fuzzy -msgid "" -" -P flgs Print flags for fine control of tag lists ('print' action):\n" -msgstr "" -" -P stĺps VypísaÅ¥ stĺpce zoznamu EXIF znaÄiek (operácia „print“). Platné " -"voľby:\n" - -#: src/exiv2.cpp:290 -#, fuzzy -msgid " E : include Exif tags in the list\n" -msgstr " s : veľkosÅ¥ v bajtoch\n" - -#: src/exiv2.cpp:291 -#, fuzzy -msgid " I : IPTC datasets\n" -msgstr " i : údaje IPTC\n" - -#: src/exiv2.cpp:292 -#, fuzzy -msgid " X : XMP properties\n" -msgstr " x : XMP vlastnosti\n" - -#: src/exiv2.cpp:293 -#, fuzzy -msgid " x : print a column with the tag number\n" -msgstr " x : vypísaÅ¥ stĺpec s hodnotou znaÄky\n" - -#: src/exiv2.cpp:294 -msgid " g : group name\n" -msgstr " g : názov skupiny\n" - -#: src/exiv2.cpp:295 -msgid " k : key\n" -msgstr " k : kľúÄ\n" - -#: src/exiv2.cpp:296 -msgid " l : tag label\n" -msgstr " l : oznaÄenie znaÄky\n" - -#: src/exiv2.cpp:297 -msgid " n : tag name\n" -msgstr " n : názov znaÄky\n" - -#: src/exiv2.cpp:298 -msgid " y : type\n" -msgstr " y : typ\n" - -#: src/exiv2.cpp:299 -msgid " c : number of components (count)\n" -msgstr " c : poÄet zložiek\n" - -#: src/exiv2.cpp:300 -msgid " s : size in bytes\n" -msgstr " s : veľkosÅ¥ v bajtoch\n" - -#: src/exiv2.cpp:301 -msgid " v : plain data value\n" -msgstr " v : Äisté dátové hodnoty\n" - -#: src/exiv2.cpp:302 -msgid " t : interpreted (translated) data\n" -msgstr " t : interpretované (preložené) hodnoty\n" - -#: src/exiv2.cpp:303 -msgid " h : hexdump of the data\n" -msgstr " h : hexadecimálny výpis údajov\n" - -#: src/exiv2.cpp:304 -msgid "" -" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" -msgstr " -d cieľ Ciele zmazanie operácie „delete“. Možné ciele sú:\n" - -#: src/exiv2.cpp:305 -msgid " a : all supported metadata (the default)\n" -msgstr " a : vÅ¡etky podporované metadáta (Å¡tandardne)\n" - -#: src/exiv2.cpp:306 -msgid " e : Exif section\n" -msgstr " e : sekcia EXIF\n" - -#: src/exiv2.cpp:307 -msgid " t : Exif thumbnail only\n" -msgstr " t : iba EXIF náhľady\n" - -#: src/exiv2.cpp:308 -msgid " i : IPTC data\n" -msgstr " i : údaje IPTC\n" - -#: src/exiv2.cpp:309 -msgid " x : XMP packet\n" -msgstr " x : XMP paket\n" - -#: src/exiv2.cpp:311 -#, fuzzy -msgid "" -" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" -" the same as those for the -d option, plus a modifier:\n" -" X : Insert metadata from an XMP sidecar file .xmp\n" -" Only JPEG thumbnails can be inserted, they need to be named\n" -" -thumb.jpg\n" -msgstr "" -" -i cieľ Ciele vkladania operácie „insert“. Možné ciele sú\n" -" rovnaké ako pri voľbe -d, plus:\n" -" X : VložiÅ¥ XMP paket zo .xmp\n" -" Je možné vložiÅ¥ iba náhľady JPEG, musia byÅ¥ pomenované\n" -" -thumb.jpg\n" - -#: src/exiv2.cpp:316 -#, fuzzy -msgid "" -" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" -" are the same as those for the -d option, plus a target to " -"extract\n" -" preview images and a modifier to generate an XMP sidecar file:\n" -" p[[, ...]] : Extract preview images.\n" -" X : Extract metadata to an XMP sidecar file .xmp\n" -msgstr "" -" -e cieľ Ciele extrakcie operácie „extract“. Možné ciele\n" -" rovnaké ako pri voľbe -i, plus:\n" -" X : ExtrahovaÅ¥ XMP paket do .xmp\n" - -#: src/exiv2.cpp:321 -msgid "" -" -r fmt Filename format for the 'rename' action. The format string\n" -" follows strftime(3). The following keywords are supported:\n" -msgstr "" -" -r fmt Formát názvu súboru operácie „rename“. Formátovací reÅ¥azec\n" -" je podľa strftime(3). Podporované sú nasledovné kľúÄové slová:\n" - -#: src/exiv2.cpp:323 -msgid " :basename: - original filename without extension\n" -msgstr " :basename: - pôvodný názov súboru bez prípony\n" - -#: src/exiv2.cpp:324 -msgid "" -" :dirname: - name of the directory holding the original file\n" -msgstr "" -" :dirname: - názov adresára, v ktorom sa nachádza pôvodný " -"súbor\n" - -#: src/exiv2.cpp:325 -msgid " :parentname: - name of parent directory\n" -msgstr " :parentname: - názov rodiÄovského adresára\n" - -#: src/exiv2.cpp:326 -msgid " Default filename format is " -msgstr " Å tandardný formát názvu súboru je " - -#: src/exiv2.cpp:328 -msgid " -c txt JPEG comment string to set in the image.\n" -msgstr " -c txt ReÅ¥azec JPEG komentára, ktorý sa má v obrázku nastaviÅ¥.\n" - -#: src/exiv2.cpp:329 -msgid "" -" -m file Command file for the modify action. The format for commands is\n" -" set|add|del [[] ].\n" -msgstr "" -" -m súbor Súbor s príkazmi operácie „modify“. Formát príkazov je\n" -" set|add|del [[] ].\n" - -#: src/exiv2.cpp:331 -msgid "" -" -M cmd Command line for the modify action. The format for the\n" -" commands is the same as that of the lines of a command file.\n" -msgstr "" -" -M súbor Príkazový riadok operácie „modify“. Formát príkazov je\n" -" rovnaký ako formát riadkov súboru s príkazmi.\n" - -#: src/exiv2.cpp:333 -msgid "" -" -l dir Location (directory) for files to be inserted from or extracted " -"to.\n" -msgstr "" -" -l adr Umiestnenie (adresár) súborov, ktoré sa majú vložiÅ¥ alebo " -"extrahovaÅ¥.\n" - -#: src/exiv2.cpp:334 -msgid "" -" -S .suf Use suffix .suf for source files for insert command.\n" -"\n" -msgstr "" -" -S .suf PoužiÅ¥ príponu .suf pre zdrojové súbory operácie „insert“.\n" -"\n" - -#: src/exiv2.cpp:371 src/exiv2.cpp:401 src/exiv2.cpp:436 src/exiv2.cpp:495 -#: src/exiv2.cpp:682 -msgid "Option" -msgstr "Voľba" - -#: src/exiv2.cpp:372 -msgid "requires an argument\n" -msgstr "vyžaduje parameter\n" - -#: src/exiv2.cpp:376 -msgid "Unrecognized option" -msgstr "Neprípustná možnosÅ¥" - -#: src/exiv2.cpp:382 -msgid "getopt returned unexpected character code" -msgstr "getopt vrátil neoÄakávaný kód znaku" - -#: src/exiv2.cpp:402 -#, fuzzy -msgid "Invalid argument" -msgstr "Neplatný kľúÄ" - -#: src/exiv2.cpp:427 src/exiv2.cpp:480 -msgid "Ignoring surplus option" -msgstr "Ignoruje sa nadbytoÄná voľba" - -#: src/exiv2.cpp:437 src/exiv2.cpp:497 src/exiv2.cpp:683 -msgid "is not compatible with a previous option\n" -msgstr "nie je kompatibilná s predoÅ¡lou voľbou\n" - -#: src/exiv2.cpp:452 -msgid "Ignoring surplus option -a" -msgstr "Ignoruje sa nadbytoÄná voľba -a" - -#: src/exiv2.cpp:458 -msgid "Error parsing -a option argument" -msgstr "Chyba syntaktickej analýzy argumentu voľby -a" - -#: src/exiv2.cpp:465 -msgid "Option -a is not compatible with a previous option\n" -msgstr "Voľba -a nie je kompatibilná s predoÅ¡lou voľbou\n" - -#: src/exiv2.cpp:487 -msgid "Error parsing" -msgstr "Spracovanie chýb" - -#: src/exiv2.cpp:489 -msgid "option argument" -msgstr "argument voľby" - -#: src/exiv2.cpp:520 -msgid "Unrecognized print mode" -msgstr "Nerozpoznaný režim výpisu" - -#: src/exiv2.cpp:528 -msgid "Ignoring surplus option -p" -msgstr "Ignoruje sa nadbytoÄná voľba -p" - -#: src/exiv2.cpp:532 -msgid "Option -p is not compatible with a previous option\n" -msgstr "Voľba -p nie je kompatibilná s predoÅ¡lou voľbou\n" - -#: src/exiv2.cpp:563 -msgid "Unrecognized print item" -msgstr "Nerozpoznaný cieľ výpisu" - -#: src/exiv2.cpp:572 -msgid "Ignoring surplus option -P" -msgstr "Ignoruje sa nadbytoÄná voľba -P" - -#: src/exiv2.cpp:576 -msgid "Option -P is not compatible with a previous option\n" -msgstr "Voľba -P nie je kompatibilná s predoÅ¡lou voľbou\n" - -#: src/exiv2.cpp:603 -msgid "Option -d is not compatible with a previous option\n" -msgstr "Voľba -d nie je kompatibilná s predoÅ¡lou voľbou\n" - -#: src/exiv2.cpp:631 -msgid "Option -e is not compatible with a previous option\n" -msgstr "Voľba -e nie je kompatibilná s predoÅ¡lou voľbou\n" - -#: src/exiv2.cpp:659 -msgid "Option -i is not compatible with a previous option\n" -msgstr "Voľba -i nie je kompatibilná s predoÅ¡lou voľbou\n" - -#: src/exiv2.cpp:700 -msgid "Action adjust is not compatible with the given options\n" -msgstr "ÄŒinnosÅ¥ adjust nie je kompatibilná so zadanými voľbami\n" - -#: src/exiv2.cpp:709 -msgid "Action print is not compatible with the given options\n" -msgstr "ÄŒinnosÅ¥ print nie je kompatibilná so zadanými voľbami\n" - -#: src/exiv2.cpp:718 -msgid "Action delete is not compatible with the given options\n" -msgstr "ÄŒinnosÅ¥ delete nie je kompatibilná so zadanými voľbami\n" - -#: src/exiv2.cpp:729 -msgid "Action extract is not compatible with the given options\n" -msgstr "ÄŒinnosÅ¥ extract nie je kompatibilná so zadanými voľbami\n" - -#: src/exiv2.cpp:740 -msgid "Action insert is not compatible with the given options\n" -msgstr "ÄŒinnosÅ¥ insert nie je kompatibilná so zadanými voľbami\n" - -#: src/exiv2.cpp:749 -msgid "Action rename is not compatible with the given options\n" -msgstr "ÄŒinnosÅ¥ rename nie je kompatibilná so zadanými voľbami\n" - -#: src/exiv2.cpp:758 -msgid "Action modify is not compatible with the given options\n" -msgstr "ÄŒinnosÅ¥ modify nie je kompatibilná so zadanými voľbami\n" - -#: src/exiv2.cpp:767 -msgid "Action fixiso is not compatible with the given options\n" -msgstr "ÄŒinnosÅ¥ fixiso nie je kompatibilná so zadanými voľbami\n" - -#: src/exiv2.cpp:776 -#, fuzzy -msgid "Action fixcom is not compatible with the given options\n" -msgstr "ÄŒinnosÅ¥ fixiso nie je kompatibilná so zadanými voľbami\n" - -#: src/exiv2.cpp:800 -msgid "An action must be specified\n" -msgstr "Musí byÅ¥ uvedená operácia\n" - -#: src/exiv2.cpp:809 -msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" -msgstr "Operácia adjust vyžaduje aspoň jednu z volieb -a, -Y, -O alebo -D\n" - -#: src/exiv2.cpp:815 -msgid "Modify action requires at least one -c, -m or -M option\n" -msgstr "Operácia modify vyžaduje aspoň jednu z volieb -c, -m alebo -M\n" - -#: src/exiv2.cpp:819 -msgid "At least one file is required\n" -msgstr "Je požadovaný aspoň jeden súbor\n" - -#: src/exiv2.cpp:825 -msgid "Error parsing -m option arguments\n" -msgstr "Chyba syntaktickej analýzy argumentov voľby -m\n" - -#: src/exiv2.cpp:832 -msgid "Error parsing -M option arguments\n" -msgstr "Chyba syntaktickej analýzy argumentov voľby -M\n" - -#: src/exiv2.cpp:843 -msgid "-l option can only be used with extract or insert actions\n" -msgstr "Voľbu -l možno použiÅ¥ iba s operáciami extract alebo insert\n" - -#: src/exiv2.cpp:848 -msgid "-S option can only be used with insert action\n" -msgstr "Voľbu -S možno použiÅ¥ iba s operáciou insert\n" - -#: src/exiv2.cpp:853 -msgid "-t option can only be used with rename action\n" -msgstr "Voľbu -t možno použiÅ¥ iba s operáciou rename\n" - -#: src/exiv2.cpp:858 -msgid "-T option can only be used with rename action\n" -msgstr "Voľbu -T možno použiÅ¥ iba s operáciou rename\n" - -#: src/exiv2.cpp:938 -msgid "Unrecognized " -msgstr "Nerozpoznaný " - -#: src/exiv2.cpp:939 -msgid "target" -msgstr "cieľ" - -#: src/exiv2.cpp:965 -#, fuzzy -msgid "Invalid preview number" -msgstr "Číslo intervalu" - -#: src/exiv2.cpp:997 -msgid "Failed to open command file for reading\n" -msgstr "Nepodarilo sa otvoriÅ¥ súbor s príkazmi na Äítanie\n" - -#: src/exiv2.cpp:1010 -msgid "line" -msgstr "riadok" - -#: src/exiv2.cpp:1033 -msgid "-M option" -msgstr "voľba -M" - -#: src/exiv2.cpp:1054 src/exiv2.cpp:1113 src/exiv2.cpp:1125 -msgid "Invalid command line" -msgstr "Neplatný príkazový riadok" - -#: src/exiv2.cpp:1061 -msgid "Invalid command" -msgstr "Neplatný príkaz" - -#: src/exiv2.cpp:1093 -msgid "Invalid key" -msgstr "Neplatný kľúÄ" - -#: src/fujimn.cpp:62 -#, fuzzy -msgid "Soft mode 1" -msgstr "Bodový režim" - -#: src/fujimn.cpp:63 -#, fuzzy -msgid "Soft mode 2" -msgstr "Bodový režim" - -#: src/fujimn.cpp:65 -msgid "Hard mode 1" -msgstr "Tvrdý režim 1" - -#: src/fujimn.cpp:66 -msgid "Hard mode 2" -msgstr "Tvrdý režim 2" - -# exif-lightsource-1 -#: src/fujimn.cpp:72 src/minoltamn.cpp:219 src/minoltamn.cpp:683 -#: src/minoltamn.cpp:869 src/minoltamn.cpp:1193 src/minoltamn.cpp:2094 -#: src/nikonmn.cpp:447 src/panasonicmn.cpp:65 src/pentaxmn.cpp:312 -#: src/sonymn.cpp:165 src/tags.cpp:1428 -msgid "Daylight" -msgstr "denné svetlo" - -#: src/fujimn.cpp:74 -msgid "Fluorescent (daylight)" -msgstr "fluorescenÄné (denné svetlo)" - -#: src/fujimn.cpp:75 -msgid "Fluorescent (warm white)" -msgstr "fluorescenÄné (teplá biela)" - -#: src/fujimn.cpp:76 -msgid "Fluorescent (cool white)" -msgstr "fluorescenÄné (chladná biela)" - -#: src/fujimn.cpp:77 src/nikonmn.cpp:448 src/sonymn.cpp:170 -msgid "Incandescent" -msgstr "Inkadescentné" - -#: src/fujimn.cpp:87 src/fujimn.cpp:88 -msgid "None (black & white)" -msgstr "Žiadne (Äiernobiele)" - -#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 -msgid "Red-eye reduction" -msgstr "Korekcia Äervených oÄí" - -#: src/fujimn.cpp:119 src/tags.cpp:1504 src/tags.cpp:1505 -msgid "Night scene" -msgstr "NoÄná scéna" - -#: src/fujimn.cpp:120 src/pentaxmn.cpp:496 src/pentaxmn.cpp:503 -#: src/sonymn.cpp:518 -msgid "Program AE" -msgstr "Program AE" - -#: src/fujimn.cpp:121 -msgid "Natural light" -msgstr "Prirodzené svetlo" - -#: src/fujimn.cpp:122 -msgid "Anti-blur" -msgstr "Zabránenie rozostrenia" - -#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 -#: src/minoltamn.cpp:1888 src/minoltamn.cpp:2037 src/olympusmn.cpp:108 -#: src/panasonicmn.cpp:130 src/pentaxmn.cpp:481 src/sonymn.cpp:479 -#: src/sonymn.cpp:525 -msgid "Sunset" -msgstr "Západ slnka" - -#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:485 -msgid "Museum" -msgstr "múzeum" - -#: src/fujimn.cpp:125 src/panasonicmn.cpp:117 -msgid "Party" -msgstr "Oslavy" - -#: src/fujimn.cpp:126 -msgid "Flower" -msgstr "Kvet" - -#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 -#: src/minoltamn.cpp:2035 src/pentaxmn.cpp:480 -msgid "Text" -msgstr "Text" - -#: src/fujimn.cpp:128 -msgid "Natural light & flash" -msgstr "Prírodné svetlo a blesk" - -# FUZZY exif-exposureprogram-3 -#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:519 -msgid "Aperture-priority AE" -msgstr "Priorita clony AE" - -# FUZZY exif-exposureprogram-4 -#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:520 -msgid "Shutter speed priority AE" -msgstr "Priorita rýchlosti uzávierky AE" - -#: src/fujimn.cpp:142 -msgid "No flash & flash" -msgstr "Bez blesku a blesk" - -#: src/fujimn.cpp:148 -msgid "Chrome" -msgstr "Chróm" - -#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 -#: src/minoltamn.cpp:1936 src/panasonicmn.cpp:211 -msgid "Wide" -msgstr "Å iroké" - -#: src/fujimn.cpp:160 -msgid "F0/Standard" -msgstr "F0/Å tandardný" - -#: src/fujimn.cpp:161 -msgid "F1/Studio portrait" -msgstr "F1/Å túdiový portrét" - -#: src/fujimn.cpp:162 -msgid "F2/Fujichrome" -msgstr "F2/Fujichróm" - -#: src/fujimn.cpp:163 -msgid "F3/Studio portrait Ex" -msgstr "F3/Å túdiový portrét Ex" - -#: src/fujimn.cpp:164 -msgid "F4/Velvia" -msgstr "F4/Velvia" - -#: src/fujimn.cpp:169 -msgid "Auto (100-400%)" -msgstr "Auto (100-400 %)" - -#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 -#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2056 -#: src/olympusmn.cpp:74 src/panasonicmn.cpp:58 -msgid "Raw" -msgstr "Raw" - -#: src/fujimn.cpp:171 -msgid "Standard (100%)" -msgstr "Å tandardný (100%)" - -#: src/fujimn.cpp:172 -msgid "Wide mode 1 (230%)" -msgstr "Å iroký režim 1 (230%)" - -#: src/fujimn.cpp:173 -msgid "Wide mode 2 (400%)" -msgstr "Å iroký režim 2 (400%)" - -#: src/fujimn.cpp:174 -msgid "Film simulation mode" -msgstr "Režim simulácie filmu" - -#: src/fujimn.cpp:179 src/nikonmn.cpp:213 src/nikonmn.cpp:524 -#: src/nikonmn.cpp:646 src/nikonmn.cpp:691 src/nikonmn.cpp:843 -#: src/nikonmn.cpp:867 src/nikonmn.cpp:888 src/nikonmn.cpp:1001 -#: src/nikonmn.cpp:1023 src/nikonmn.cpp:1043 src/nikonmn.cpp:1063 -#: src/nikonmn.cpp:1076 src/nikonmn.cpp:1135 src/nikonmn.cpp:1195 -#: src/nikonmn.cpp:1225 src/nikonmn.cpp:1245 src/nikonmn.cpp:1258 -#: src/nikonmn.cpp:1271 src/nikonmn.cpp:1284 src/nikonmn.cpp:1297 -#: src/nikonmn.cpp:1310 src/nikonmn.cpp:1323 src/nikonmn.cpp:1342 -#: src/nikonmn.cpp:1367 src/panasonicmn.cpp:335 src/pentaxmn.cpp:865 -#: src/properties.cpp:470 -msgid "Version" -msgstr "Verzia" - -#: src/fujimn.cpp:180 -msgid "Fujifilm Makernote version" -msgstr "Poznámka výrobcu Fujifilm" - -#: src/fujimn.cpp:183 src/panasonicmn.cpp:250 -msgid "" -"This number is unique, and contains the date of manufacture, but is not the " -"same as the number printed on the camera body." -msgstr "" -"Toto Äíslo je jedineÄné a obsahuje dátum výroby, ale nie je rovnaké ako " -"Äíslo na plášti fotoaparátu." - -#: src/fujimn.cpp:187 src/nikonmn.cpp:223 src/nikonmn.cpp:460 -#: src/nikonmn.cpp:527 src/olympusmn.cpp:199 -msgid "Image quality setting" -msgstr "Nastavenie kvality obrázka" - -#: src/fujimn.cpp:195 src/nikonmn.cpp:422 -msgid "Color" -msgstr "Farba" - -#: src/fujimn.cpp:196 -msgid "Chroma saturation setting" -msgstr "Nastavenie sýtosti chromaticity" - -#: src/fujimn.cpp:198 -msgid "Tone" -msgstr "odtieň" - -#: src/fujimn.cpp:202 -msgid "Flash firing mode setting" -msgstr "Nastavenie režimu spustenia blesku" - -#: src/fujimn.cpp:204 -msgid "Flash Strength" -msgstr "Sila blesku" - -#: src/fujimn.cpp:205 -msgid "Flash firing strength compensation setting" -msgstr "Nastavenie kompenzácie intenzity blesku" - -#: src/fujimn.cpp:208 -msgid "Macro mode setting" -msgstr "Nastavenie režimu makro" - -#: src/fujimn.cpp:211 -msgid "Focusing mode setting" -msgstr "Nastavenie režimu zaostrenia" - -#: src/fujimn.cpp:216 -msgid "Slow Sync" -msgstr "Pomalá synchronizácia" - -#: src/fujimn.cpp:217 -msgid "Slow synchro mode setting" -msgstr "Nastavenie režimu pomalej synchronizácie" - -#: src/fujimn.cpp:219 src/olympusmn.cpp:690 src/olympusmn.cpp:891 -msgid "Picture Mode" -msgstr "Režim obrázka" - -#: src/fujimn.cpp:220 -msgid "Picture mode setting" -msgstr "Nastavenie režimu obrázka" - -#: src/fujimn.cpp:226 -msgid "Continuous shooting or auto bracketing setting" -msgstr "Nastavenie spojitého alebo viacnásobného záberu" - -#: src/fujimn.cpp:228 src/panasonicmn.cpp:256 src/sonymn.cpp:414 -msgid "Sequence Number" -msgstr "Poradové Äíslo" - -#: src/fujimn.cpp:229 src/olympusmn.cpp:1158 src/panasonicmn.cpp:256 -msgid "Sequence number" -msgstr "Poradové Äíslo" - -#: src/fujimn.cpp:234 -msgid "FinePix Color" -msgstr "FinePix Color" - -#: src/fujimn.cpp:235 -msgid "Fuji FinePix color setting" -msgstr "Nastavenie farieb Fuji FinePix" - -#: src/fujimn.cpp:237 -msgid "Blur Warning" -msgstr "Upozornenie pred rozostrením" - -#: src/fujimn.cpp:238 -msgid "Blur warning status" -msgstr "Stav upozornenia pred rozostrením" - -#: src/fujimn.cpp:240 -msgid "Focus Warning" -msgstr "Upozornenie zaostrenia" - -#: src/fujimn.cpp:241 -msgid "Auto Focus warning status" -msgstr "Stav upozornenia automatického zaistrenia" - -#: src/fujimn.cpp:243 -msgid "Exposure Warning" -msgstr "Upozornenie expozície" - -#: src/fujimn.cpp:244 -msgid "Auto exposure warning status" -msgstr "Stav upozornenia automatickej expozície" - -#: src/fujimn.cpp:246 -msgid "Dynamic Range" -msgstr "Dynamický rozsah" - -#: src/fujimn.cpp:247 -msgid "Dynamic range" -msgstr "Dynamický rozsah" - -#: src/fujimn.cpp:249 src/panasonicmn.cpp:273 -msgid "Film Mode" -msgstr "Režim filmu" - -#: src/fujimn.cpp:250 src/panasonicmn.cpp:273 -msgid "Film mode" -msgstr "Režim filmu" - -#: src/fujimn.cpp:252 -msgid "Dynamic Range Setting" -msgstr "Nastavenie dynamického rozsahu" - -#: src/fujimn.cpp:253 -msgid "Dynamic range settings" -msgstr "Nastavenie dynamického rozsahu" - -#: src/fujimn.cpp:255 -msgid "Development Dynamic Range" -msgstr "Vývojový dynamický rozsah" - -#: src/fujimn.cpp:256 -msgid "Development dynamic range" -msgstr "Vývojový dynamický rozsah" - -# FUZZY exif-focallength -#: src/fujimn.cpp:258 -msgid "Minimum Focal Length" -msgstr "Minimálna ohnisková vzdialenosÅ¥" - -# FUZZY exif-focallength -#: src/fujimn.cpp:259 -msgid "Minimum focal length" -msgstr "Minimálna ohnisková vzdialenosÅ¥" - -# FUZZY exif-focallength -#: src/fujimn.cpp:261 -msgid "Maximum Focal Length" -msgstr "Maximálna ohnisková vzdialenosÅ¥" - -# FUZZY exif-focallength -#: src/fujimn.cpp:262 -msgid "Maximum focal length" -msgstr "Maximálna ohnisková vzdialenosÅ¥" - -#: src/fujimn.cpp:264 -msgid "Maximum Aperture at Mininimum Focal" -msgstr "maximálna clona pri minimálnom ohnisku" - -#: src/fujimn.cpp:265 -msgid "Maximum aperture at mininimum focal" -msgstr "maximálna clona pri minimálnom ohnisku" - -#: src/fujimn.cpp:267 -msgid "Maximum Aperture at Maxinimum Focal" -msgstr "maximálna clona pri maximálnom ohnisku" - -#: src/fujimn.cpp:268 -msgid "Maximum aperture at maxinimum focal" -msgstr "maximálna clona pri maximálnom ohnisku" - -#: src/fujimn.cpp:270 src/properties.cpp:577 src/tags.cpp:1759 -msgid "File Source" -msgstr "Zdroj súboru" - -#: src/fujimn.cpp:271 -msgid "File source" -msgstr "Zdroj súboru" - -#: src/fujimn.cpp:273 -msgid "Order Number" -msgstr "Poradové Äíslo" - -#: src/fujimn.cpp:274 -msgid "Order number" -msgstr "Poradové Äíslo" - -#: src/fujimn.cpp:276 -msgid "Frame Number" -msgstr "Číslo rámca" - -#: src/fujimn.cpp:277 src/pentaxmn.cpp:977 src/pentaxmn.cpp:978 -msgid "Frame number" -msgstr "Číslo rámca" - -#: src/fujimn.cpp:281 -msgid "Unknown FujiMakerNote tag" -msgstr "Neznáma znaÄka FujiMakerNote" - -#: src/minoltamn.cpp:56 -msgid "Natural Color" -msgstr "Prirodzená farba" - -#: src/minoltamn.cpp:58 src/minoltamn.cpp:1885 -msgid "Vivid Color" -msgstr "Živé farby" - -#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 -msgid "Solarization" -msgstr "Solarizácia" - -#: src/minoltamn.cpp:60 src/minoltamn.cpp:1891 -msgid "AdobeRGB" -msgstr "Adobe RGB" - -#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:611 -#: src/olympusmn.cpp:853 src/panasonicmn.cpp:198 src/pentaxmn.cpp:702 -msgid "Natural" -msgstr "Prirodzené" - -#: src/minoltamn.cpp:64 -msgid "Natural sRGB" -msgstr "Prirodzené sRGB" - -#: src/minoltamn.cpp:65 -msgid "Natural+ sRGB" -msgstr "Prirodzené+ sRGB" - -#: src/minoltamn.cpp:67 -msgid "Evening" -msgstr "VeÄer" - -#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2040 -#: src/sonymn.cpp:526 -msgid "Night Portrait" -msgstr "NoÄný portrét" - -#: src/minoltamn.cpp:75 src/minoltamn.cpp:2057 -msgid "Super Fine" -msgstr "super jemný" - -#: src/minoltamn.cpp:79 src/minoltamn.cpp:2003 src/minoltamn.cpp:2061 -msgid "Extra Fine" -msgstr "extra jemný" - -#: src/minoltamn.cpp:90 -msgid "Makernote Version" -msgstr "Poznámky zhotoviteľa - verzia" - -#: src/minoltamn.cpp:91 -msgid "String 'MLT0' (not null terminated)" -msgstr "ReÅ¥azec 'MLT0' (nie je ukonÄený nulou)" - -#: src/minoltamn.cpp:93 -msgid "Camera Settings (Std Old)" -msgstr "Nastavenie fotoaparátu (Å¡td. staré)" - -#: src/minoltamn.cpp:94 -msgid "" -"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" -msgstr "" - -#: src/minoltamn.cpp:96 -msgid "Camera Settings (Std New)" -msgstr "Nastavenie fotoaparátu (Å¡td. nové)" - -#: src/minoltamn.cpp:97 -msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" -msgstr "" - -#: src/minoltamn.cpp:99 -msgid "Camera Settings (7D)" -msgstr "Nastavenie fotoaparátu (7D)" - -#: src/minoltamn.cpp:100 -msgid "Camera Settings (for Dynax 7D model)" -msgstr "Nastavenia fotoaparátu (pre model Dynax 7D)" - -#: src/minoltamn.cpp:102 -msgid "Image Stabilization Data" -msgstr "Údaje o stabilizácii obrazu" - -#: src/minoltamn.cpp:103 -msgid "Image stabilization data" -msgstr "Údaje o stabilizácii obrazu" - -#: src/minoltamn.cpp:107 -msgid "WB Info A100" -msgstr "" - -#: src/minoltamn.cpp:108 -msgid "White balance information for the Sony DSLR-A100" -msgstr "" - -#: src/minoltamn.cpp:111 -msgid "Compressed Image Size" -msgstr "VeľkosÅ¥ komprimovaného obrázka" - -#: src/minoltamn.cpp:112 -msgid "Compressed image size" -msgstr "VeľkosÅ¥ komprimovaného obrázka" - -#: src/minoltamn.cpp:115 -msgid "Jpeg thumbnail 640x480 pixels" -msgstr "Jpeg miniatúra 640x480 bodov" - -#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 -msgid "Thumbnail Offset" -msgstr "Ofset náhľadu" - -#: src/minoltamn.cpp:118 -msgid "Offset of the thumbnail" -msgstr "Umiestnenie náhľadu v dátach" - -#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 -msgid "Thumbnail Length" -msgstr "Dĺžka náhľadu" - -#: src/minoltamn.cpp:121 -msgid "Size of the thumbnail" -msgstr "VeľkosÅ¥ náhľadu" - -#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:573 -#: src/olympusmn.cpp:252 src/olympusmn.cpp:684 src/panasonicmn.cpp:282 -#: src/sonymn.cpp:363 src/sonymn.cpp:364 -msgid "Scene Mode" -msgstr "Režim scény" - -#: src/minoltamn.cpp:128 src/minoltamn.cpp:1406 src/nikonmn.cpp:219 -#: src/nikonmn.cpp:462 src/nikonmn.cpp:526 src/panasonicmn.cpp:263 -#: src/sonymn.cpp:381 src/sonymn.cpp:382 -msgid "Color Mode" -msgstr "Farebný režim" - -#: src/minoltamn.cpp:129 src/minoltamn.cpp:1407 src/nikonmn.cpp:220 -#: src/nikonmn.cpp:463 src/nikonmn.cpp:526 src/panasonicmn.cpp:263 -msgid "Color mode" -msgstr "Farebný režim" - -#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 -#: src/minoltamn.cpp:990 src/panasonicmn.cpp:236 src/sonymn.cpp:274 -msgid "Image Quality" -msgstr "Kvalita obrázka" - -#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 -msgid "0x0103" -msgstr "" - -#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:671 -#: src/sonymn.cpp:277 -msgid "Flash Exposure Compensation" -msgstr "Kompenzácia expozície blesku" - -#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:278 -msgid "Flash exposure compensation in EV" -msgstr "Kompenzácia expozície blesku v EV" - -#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:280 -#: src/sonymn.cpp:281 -#, fuzzy -msgid "Teleconverter Model" -msgstr "Režim scény" - -#: src/minoltamn.cpp:150 -msgid "RAW+JPG Recording" -msgstr "" - -#: src/minoltamn.cpp:151 -msgid "RAW and JPG files recording" -msgstr "" - -#: src/minoltamn.cpp:153 src/sonymn.cpp:366 src/sonymn.cpp:367 -#, fuzzy -msgid "Zone Matching" -msgstr "Redukcia Å¡umu" - -#: src/minoltamn.cpp:154 -#, fuzzy -msgid "Zone matching" -msgstr "Redukcia Å¡umu" - -#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1039 -#: src/minoltamn.cpp:1476 src/minoltamn.cpp:1578 -msgid "Color temperature" -msgstr "Farebná teplota" - -#: src/minoltamn.cpp:159 src/sonymn.cpp:375 -msgid "Lens ID" -msgstr "ID Å¡oÅ¡oviek" - -#: src/minoltamn.cpp:160 src/sonymn.cpp:376 -msgid "Lens identifier" -msgstr "Identifikátor Å¡oÅ¡oviek" - -#: src/minoltamn.cpp:162 src/minoltamn.cpp:1478 src/minoltamn.cpp:1580 -#: src/sonymn.cpp:360 -#, fuzzy -msgid "Color Compensation Filter" -msgstr "Kompenzácia tónu" - -#: src/minoltamn.cpp:163 src/sonymn.cpp:361 -msgid "Color Compensation Filter: negative is green, positive is magenta" -msgstr "" - -#: src/minoltamn.cpp:165 src/minoltamn.cpp:1472 src/sonymn.cpp:283 -#: src/sonymn.cpp:563 src/sonymn.cpp:564 -#, fuzzy -msgid "White Balance Fine Tune" -msgstr "Tabuľka vyváženia bielej" - -#: src/minoltamn.cpp:166 src/sonymn.cpp:284 -#, fuzzy -msgid "White Balance Fine Tune Value" -msgstr "Tabuľka vyváženia bielej" - -#: src/minoltamn.cpp:168 -#, fuzzy -msgid "Image Stabilization A100" -msgstr "Stabilizácia obrazu" - -#: src/minoltamn.cpp:169 -#, fuzzy -msgid "Image Stabilization for the Sony DSLR-A100" -msgstr "Údaje o stabilizácii obrazu" - -#: src/minoltamn.cpp:173 -msgid "Camera Settings (5D)" -msgstr "Nastavenie fotoaparátu (5D)" - -#: src/minoltamn.cpp:174 -msgid "Camera Settings (for Dynax 5D model)" -msgstr "Nastavenia fotoaparátu (pre model Dynax 5D)" - -#: src/minoltamn.cpp:180 src/nikonmn.cpp:607 src/olympusmn.cpp:258 -#: src/panasonicmn.cpp:279 src/sonymn.cpp:295 -msgid "Print IM" -msgstr "" - -#: src/minoltamn.cpp:181 src/nikonmn.cpp:607 src/olympusmn.cpp:259 -#: src/panasonicmn.cpp:279 src/sonymn.cpp:296 -#, fuzzy -msgid "PrintIM information" -msgstr "Informácie GPS" - -#: src/minoltamn.cpp:183 -msgid "Camera Settings (Z1)" -msgstr "Nastavenie fotoaparátu (Z1)" - -#: src/minoltamn.cpp:184 -msgid "Camera Settings (for Z1, DImage X, and F100 models)" -msgstr "Nastavenia fotoaparátu (pre modely Z1, DImage X, a F100)" - -#: src/minoltamn.cpp:188 -msgid "Unknown Minolta MakerNote tag" -msgstr "Neznáma znaÄka Minolta MakerNote" - -# exif-exposureprogram-3 -#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 -#: src/panasonicmn.cpp:107 src/sigmamn.cpp:155 src/sonymn.cpp:111 -#: src/tags.cpp:1404 -msgid "Aperture priority" -msgstr "priorita clony" - -# exif-exposureprogram-4 -#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 -#: src/sigmamn.cpp:156 src/sonymn.cpp:112 src/tags.cpp:1405 -msgid "Shutter priority" -msgstr "priorita uzávierky" - -#: src/minoltamn.cpp:209 src/minoltamn.cpp:1122 -msgid "Fill flash" -msgstr "Spustí sa blesk" - -#: src/minoltamn.cpp:211 src/minoltamn.cpp:1120 -#, fuzzy -msgid "Rear flash sync" -msgstr "Odrazenie externého blesku" - -#: src/minoltamn.cpp:212 src/minoltamn.cpp:1121 -msgid "Wireless" -msgstr "Bezdrôtové" - -#: src/minoltamn.cpp:224 -msgid "Fluorescent 2" -msgstr "fluorescentné 2" - -#: src/minoltamn.cpp:231 -msgid "Full size" -msgstr "Plná veľkosÅ¥" - -#: src/minoltamn.cpp:243 -msgid "Super fine" -msgstr "super jemný" - -#: src/minoltamn.cpp:247 -msgid "Extra fine" -msgstr "extrajemný" - -#: src/minoltamn.cpp:252 src/minoltamn.cpp:1099 src/minoltamn.cpp:1148 -#: src/sonymn.cpp:447 -#, fuzzy -msgid "Single Frame" -msgstr "jediný záber" - -#: src/minoltamn.cpp:254 src/minoltamn.cpp:1150 -msgid "Self-timer" -msgstr "samospúšť" - -#: src/minoltamn.cpp:255 -msgid "Bracketing" -msgstr "Viacnásobné snímky" - -#: src/minoltamn.cpp:256 -msgid "Interval" -msgstr "Interval" - -#: src/minoltamn.cpp:257 -msgid "UHS continuous" -msgstr "UHS spojitý" - -#: src/minoltamn.cpp:258 -msgid "HS continuous" -msgstr "HS spojitý" - -# exif-meteringmode-4 -#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1127 -#: src/sonymn.cpp:468 src/tags.cpp:1419 -#, fuzzy -msgid "Multi-segment" -msgstr "Viacbodový" - -#: src/minoltamn.cpp:264 src/minoltamn.cpp:1128 src/sonymn.cpp:469 -#: src/tags.cpp:1416 -msgid "Center weighted average" -msgstr "Stredovo vážený priemer" - -#: src/minoltamn.cpp:271 -msgid "Electronic magnification" -msgstr "Elektromagnetické zväÄÅ¡enie" - -#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:1951 -#: src/nikonmn.cpp:100 src/nikonmn.cpp:793 src/nikonmn.cpp:808 -#: src/pentaxmn.cpp:216 -msgid "Top" -msgstr "hore" - -#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:234 -msgid "Top-right" -msgstr "vpravo hore" - -#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:240 -msgid "Bottom-right" -msgstr "vpravo dolu" - -#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:1955 -#: src/nikonmn.cpp:101 src/nikonmn.cpp:794 src/nikonmn.cpp:809 -#: src/pentaxmn.cpp:224 -msgid "Bottom" -msgstr "dolu" - -#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:238 -msgid "Bottom-left" -msgstr "vľavo dolu" - -#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:232 -msgid "Top-left" -msgstr "vpravo hore" - -# exif-sharpness-2 -#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:368 -#: src/tags.cpp:1521 -msgid "Hard" -msgstr "tvrdý" - -# exif-sharpness-1 -#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:366 -#: src/tags.cpp:1520 -msgid "Soft" -msgstr "mäkký" - -#: src/minoltamn.cpp:313 src/panasonicmn.cpp:105 -msgid "Night portrait" -msgstr "NoÄný portrét" - -#: src/minoltamn.cpp:315 -msgid "Sports action" -msgstr "AkÄný Å¡port" - -#: src/minoltamn.cpp:344 -msgid "Time-lapse movie" -msgstr "" - -#: src/minoltamn.cpp:349 -msgid "Standard form" -msgstr "Å tandardný tvar" - -#: src/minoltamn.cpp:350 -msgid "Data form" -msgstr "Tvar dát" - -#: src/minoltamn.cpp:355 -msgid "Natural color" -msgstr "Prirodzená farba" - -#: src/minoltamn.cpp:356 src/panasonicmn.cpp:70 src/panasonicmn.cpp:148 -msgid "Black and white" -msgstr "ÄŒiernobiela" - -#: src/minoltamn.cpp:357 -msgid "Vivid color" -msgstr "Živé farby" - -#: src/minoltamn.cpp:364 -msgid "No zone" -msgstr "Žiadna oblasÅ¥" - -#: src/minoltamn.cpp:365 -msgid "Center zone (horizontal orientation)" -msgstr "Stredná oblasÅ¥ (vodorovná orientácia)" - -#: src/minoltamn.cpp:366 -msgid "Center zone (vertical orientation)" -msgstr "Stredná oblasÅ¥ (zvislá orientácia)" - -#: src/minoltamn.cpp:367 -msgid "Left zone" -msgstr "OblasÅ¥ vľavo" - -#: src/minoltamn.cpp:368 -msgid "Right zone" -msgstr "OblasÅ¥ vpravo" - -#: src/minoltamn.cpp:373 src/olympusmn.cpp:999 -msgid "Auto focus" -msgstr "Automatické zaostrenie" - -#: src/minoltamn.cpp:379 -msgid "Wide focus (normal)" -msgstr "Å iroké zaostrenie (bežné)" - -#: src/minoltamn.cpp:380 -msgid "Spot focus" -msgstr "Bodové zaostrenie" - -#: src/minoltamn.cpp:385 src/properties.cpp:452 src/sigmamn.cpp:86 -#: src/sigmamn.cpp:87 -msgid "Exposure" -msgstr "Expozícia" - -#: src/minoltamn.cpp:388 -msgid "Filter" -msgstr "Filter" - -#: src/minoltamn.cpp:393 -msgid "Not embedded" -msgstr "Nevložený" - -#: src/minoltamn.cpp:394 -msgid "Embedded" -msgstr "Vložený" - -#: src/minoltamn.cpp:403 -msgid "Text + ID#" -msgstr "Text + ID#" - -#: src/minoltamn.cpp:408 -msgid "ADI (Advanced Distance Integration)" -msgstr "ADI (PokroÄilá integrácia vzdialenosti)" - -#: src/minoltamn.cpp:409 -msgid "Pre-flash TTl" -msgstr "" - -#: src/minoltamn.cpp:410 -msgid "Manual flash control" -msgstr "RuÄné riadenie blesku" - -#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:984 -#: src/minoltamn.cpp:1352 src/olympusmn.cpp:659 src/properties.cpp:581 -#: src/sigmamn.cpp:74 src/sonymn.cpp:393 src/sonymn.cpp:394 src/tags.cpp:1780 -msgid "Exposure Mode" -msgstr "Režim expozície" - -#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 -#: src/olympusmn.cpp:670 src/pentaxmn.cpp:896 -msgid "Flash mode" -msgstr "Režim blesku" - -#: src/minoltamn.cpp:506 src/minoltamn.cpp:1428 src/olympusmn.cpp:700 -#: src/pentaxmn.cpp:991 src/pentaxmn.cpp:992 src/sigmamn.cpp:60 -msgid "Drive mode" -msgstr "jazda autom" - -#: src/minoltamn.cpp:512 -#, fuzzy -msgid "ISO Value" -msgstr "Hodnota ISO rýchlosti" - -#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1023 -#: src/minoltamn.cpp:1367 src/properties.cpp:548 src/tags.cpp:782 -#: src/tags.cpp:1542 -msgid "Exposure Time" -msgstr "ÄŒas expozície" - -#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1026 -#: src/minoltamn.cpp:1370 src/minoltamn.cpp:1371 src/tags.cpp:783 -#: src/tags.cpp:1545 -msgid "FNumber" -msgstr "Äíslo F" - -#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1027 -msgid "The F-Number" -msgstr "Číslo F" - -#: src/minoltamn.cpp:520 src/olympusmn.cpp:663 -msgid "Macro Mode" -msgstr "Režim makro" - -#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1044 -msgid "Exposure Compensation" -msgstr "Kompenzácia expozície" - -#: src/minoltamn.cpp:529 -msgid "Bracket Step" -msgstr "Krok viacnásobného záberu" - -#: src/minoltamn.cpp:530 -msgid "Bracket step" -msgstr "Krok viacnásobného záberu" - -#: src/minoltamn.cpp:532 -msgid "Interval Length" -msgstr "Dĺžka intervalu" - -#: src/minoltamn.cpp:533 -msgid "Interval length" -msgstr "Dĺžka intervalu" - -#: src/minoltamn.cpp:535 -msgid "Interval Number" -msgstr "Číslo intervalu" - -#: src/minoltamn.cpp:536 -msgid "Interval number" -msgstr "Číslo intervalu" - -#: src/minoltamn.cpp:541 src/nikonmn.cpp:252 src/nikonmn.cpp:564 -#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1371 src/olympusmn.cpp:303 -#: src/olympusmn.cpp:1007 -msgid "Focus Distance" -msgstr "VzdialenosÅ¥ zaostrenia" - -#: src/minoltamn.cpp:542 src/nikonmn.cpp:1346 src/nikonmn.cpp:1371 -#: src/olympusmn.cpp:1007 -msgid "Focus distance" -msgstr "VzdialenosÅ¥ zaostrenia" - -#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1002 -#, fuzzy -msgid "Flash Fired" -msgstr "Zariadenie blesku" - -#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1003 -#, fuzzy -msgid "Flash fired" -msgstr "Blesk vypnutý" - -#: src/minoltamn.cpp:547 -msgid "Minolta Date" -msgstr "Dátum Minolta" - -#: src/minoltamn.cpp:548 -msgid "Minolta date" -msgstr "Dátum Minolta" - -#: src/minoltamn.cpp:550 -msgid "Minolta Time" -msgstr "ÄŒas Minolta" - -#: src/minoltamn.cpp:551 -msgid "Minolta time" -msgstr "ÄŒas Minolta" - -#: src/minoltamn.cpp:556 -msgid "File Number Memory" -msgstr "Pamäť Äísla súboru" - -#: src/minoltamn.cpp:557 -msgid "File number memory" -msgstr "Pamäť Äísla súboru" - -#: src/minoltamn.cpp:559 -#, fuzzy -msgid "Last Image Number" -msgstr "Číslo obrázka" - -#: src/minoltamn.cpp:560 -#, fuzzy -msgid "Last image number" -msgstr "Číslo obrázka" - -#: src/minoltamn.cpp:562 -msgid "Color Balance Red" -msgstr "Vyváženie farieb ÄŒervená" - -#: src/minoltamn.cpp:563 -msgid "Color balance red" -msgstr "Vyváženie farieb ÄŒervená" - -#: src/minoltamn.cpp:565 -msgid "Color Balance Green" -msgstr "Vyváženie farieb Zelená" - -#: src/minoltamn.cpp:566 -msgid "Color balance green" -msgstr "Vyváženie farieb Zelená" - -#: src/minoltamn.cpp:568 -msgid "Color Balance Blue" -msgstr "Vyváženie farieb Modrá" - -#: src/minoltamn.cpp:569 -msgid "Color balance blue" -msgstr "Vyváženie farieb Modrá" - -#: src/minoltamn.cpp:580 -msgid "Subject Program" -msgstr "Program subjektu" - -#: src/minoltamn.cpp:581 -msgid "Subject program" -msgstr "Program subjektu" - -#: src/minoltamn.cpp:586 src/nikonmn.cpp:542 -msgid "ISO Settings" -msgstr "Nastavenia ISO" - -#: src/minoltamn.cpp:587 src/minoltamn.cpp:1398 src/nikonmn.cpp:542 -msgid "ISO setting" -msgstr "Nastavenia ISO" - -#: src/minoltamn.cpp:589 -msgid "Minolta Model" -msgstr "Model Minolta" - -#: src/minoltamn.cpp:590 -msgid "Minolta model" -msgstr "Model Minolta" - -#: src/minoltamn.cpp:592 -msgid "Interval Mode" -msgstr "Režim intervalu" - -#: src/minoltamn.cpp:593 -msgid "Interval mode" -msgstr "Režim intervalu" - -#: src/minoltamn.cpp:595 -msgid "Folder Name" -msgstr "Názov prieÄinka" - -#: src/minoltamn.cpp:596 -msgid "Folder name" -msgstr "Názov prieÄinka" - -#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 -msgid "ColorMode" -msgstr "Farebný režim" - -#: src/minoltamn.cpp:601 src/minoltamn.cpp:1204 src/pentaxmn.cpp:462 -msgid "Color Filter" -msgstr "Farebný filter" - -#: src/minoltamn.cpp:602 -msgid "Color filter" -msgstr "Farebný filter" - -#: src/minoltamn.cpp:604 -msgid "Black and White Filter" -msgstr "ÄŒiernobiely filter" - -#: src/minoltamn.cpp:605 -msgid "Black and white filter" -msgstr "ÄŒiernobiely filter" - -#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1013 -msgid "Internal Flash" -msgstr "Vnútorný blesk" - -#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:698 -#: src/olympusmn.cpp:276 src/properties.cpp:438 src/sonymn.cpp:602 -#: src/sonymn.cpp:603 src/tags.cpp:1630 -msgid "Brightness" -msgstr "Jas" - -#: src/minoltamn.cpp:613 -msgid "Spot Focus Point X" -msgstr "Bod zaostrenia X" - -#: src/minoltamn.cpp:614 -msgid "Spot focus point X" -msgstr "Bod zaostrenia X" - -#: src/minoltamn.cpp:616 -msgid "Spot Focus Point Y" -msgstr "Bod zaostrenia Y" - -#: src/minoltamn.cpp:617 -msgid "Spot focus point Y" -msgstr "Bod zaostrenia Y" - -#: src/minoltamn.cpp:619 -msgid "Wide Focus Zone" -msgstr "Å iroký rozsah zaostrenia" - -#: src/minoltamn.cpp:620 -msgid "Wide focus zone" -msgstr "OblasÅ¥ Å¡irokého zaostrenia" - -#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1036 -#: src/minoltamn.cpp:1380 src/nikonmn.cpp:232 src/nikonmn.cpp:475 -#: src/nikonmn.cpp:530 src/olympusmn.cpp:301 src/olympusmn.cpp:664 -#: src/panasonicmn.cpp:240 src/pentaxmn.cpp:899 -msgid "Focus mode" -msgstr "režim zaostrenia" - -#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1000 -msgid "Focus area" -msgstr "Rozsah zaostrenia" - -#: src/minoltamn.cpp:628 -msgid "DEC Switch Position" -msgstr "Poloha prepínaÄa DEC" - -#: src/minoltamn.cpp:629 -msgid "DEC switch position" -msgstr "poloha prepínaÄa DEC" - -#: src/minoltamn.cpp:631 -msgid "Color Profile" -msgstr "Farebný profil" - -#: src/minoltamn.cpp:632 -msgid "Color profile" -msgstr "Farebný profil" - -#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 -#, fuzzy -msgid "Data Imprint" -msgstr "Výpis dát 1" - -#: src/minoltamn.cpp:637 src/minoltamn.cpp:1421 -msgid "Flash Metering" -msgstr "Meranie blesku" - -#: src/minoltamn.cpp:638 src/minoltamn.cpp:1422 -msgid "Flash metering" -msgstr "Meranie blesku" - -#: src/minoltamn.cpp:642 -msgid "Unknown Minolta Camera Settings tag" -msgstr "Neznáma znaÄka Nastavenie fotoaparátu Minolta" - -#: src/minoltamn.cpp:660 -#, fuzzy -msgid "Program-shift A" -msgstr "Posunutie programu" - -#: src/minoltamn.cpp:661 -#, fuzzy -msgid "Program-shift S" -msgstr "Posunutie programu" - -#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 -msgid "Raw+Jpeg" -msgstr "Raw+Jpeg" - -#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/pentaxmn.cpp:322 -msgid "Kelvin" -msgstr "Kelvinov" - -# AF = automatické zaostrenie -#: src/minoltamn.cpp:695 -msgid "Single-shot AF" -msgstr "automatické zaostrenie pre jeden záber" - -#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1371 -msgid "Continuous AF" -msgstr "spojité automatické zaostrenie" - -#: src/minoltamn.cpp:698 -msgid "Automatic AF" -msgstr "automatické zaostrenie" - -#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 -msgid "sRGB (Natural)" -msgstr "sRGB (prirodzené)" - -#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 -msgid "sRGB (Natural+)" -msgstr "sRGB (prirodzené+)" - -#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2019 -#: src/panasonicmn.cpp:190 -msgid "Horizontal (normal)" -msgstr "Horizontálne (normálne)" - -#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2020 -#: src/panasonicmn.cpp:191 -msgid "Rotate 90 CW" -msgstr "OtoÄiÅ¥ o 90°" - -#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2021 -#: src/panasonicmn.cpp:192 -msgid "Rotate 270 CW" -msgstr "OtoÄiÅ¥ o 270°" - -# AF = automatické zaostrenie -#: src/minoltamn.cpp:756 -msgid "AF Points" -msgstr "body automatického zaostrenia" - -# AF = automatické zaostrenie -#: src/minoltamn.cpp:757 -msgid "AF points" -msgstr "body automatického zaostrenia" - -#: src/minoltamn.cpp:771 src/minoltamn.cpp:1011 src/minoltamn.cpp:1409 -#: src/nikonmn.cpp:551 src/olympusmn.cpp:683 src/olympusmn.cpp:802 -#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 src/properties.cpp:532 -#: src/sigmamn.cpp:83 src/tags.cpp:1684 -msgid "Color Space" -msgstr "Farebný priestor" - -#: src/minoltamn.cpp:772 src/minoltamn.cpp:1012 src/minoltamn.cpp:1410 -#: src/nikonmn.cpp:551 src/olympusmn.cpp:683 src/olympusmn.cpp:817 -#: src/olympusmn.cpp:888 src/pentaxmn.cpp:995 src/pentaxmn.cpp:996 -#: src/sigmamn.cpp:84 -msgid "Color space" -msgstr "Fariebný priestor" - -#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1029 -#: src/minoltamn.cpp:1047 src/minoltamn.cpp:1457 -msgid "Free Memory Card Images" -msgstr "" - -#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1030 -#: src/minoltamn.cpp:1048 src/minoltamn.cpp:1458 -msgid "Free memory card images" -msgstr "" - -#: src/minoltamn.cpp:789 -msgid "Hue" -msgstr "Odtieň" - -#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1041 -#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1571 src/minoltamn.cpp:1572 -#: src/panasonicmn.cpp:261 src/sonymn.cpp:638 src/sonymn.cpp:639 -#: src/sonymn.cpp:711 src/sonymn.cpp:712 -msgid "Rotation" -msgstr "otoÄenie" - -#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1065 -#: src/tags.cpp:835 -msgid "Image Number" -msgstr "Číslo obrázka" - -#: src/minoltamn.cpp:808 src/minoltamn.cpp:1069 src/minoltamn.cpp:1494 -#: src/nikonmn.cpp:579 src/olympusmn.cpp:439 src/olympusmn.cpp:685 -#: src/olympusmn.cpp:819 src/olympusmn.cpp:889 src/olympusmn.cpp:974 -#: src/panasonicmn.cpp:258 src/pentaxmn.cpp:1024 src/pentaxmn.cpp:1025 -msgid "Noise reduction" -msgstr "Redukcia Å¡umu" - -#: src/minoltamn.cpp:817 -msgid "Zone Matching On" -msgstr "" - -#: src/minoltamn.cpp:818 -#, fuzzy -msgid "Zone matching on" -msgstr "Kompenzácia tónu" - -#: src/minoltamn.cpp:822 -msgid "Unknown Minolta Camera Settings 7D tag" -msgstr "Neznáma znaÄka Minolta Camera Settings 7D" - -#: src/minoltamn.cpp:840 src/sonymn.cpp:521 -#, fuzzy -msgid "Program Shift A" -msgstr "Posunutie programu" - -#: src/minoltamn.cpp:841 src/sonymn.cpp:522 -#, fuzzy -msgid "Program Shift S" -msgstr "Posunutie programu" - -#: src/minoltamn.cpp:845 src/minoltamn.cpp:1889 src/minoltamn.cpp:2044 -#: src/sonymn.cpp:480 -#, fuzzy -msgid "Night View/Portrait" -msgstr "NoÄný portrét" - -#: src/minoltamn.cpp:895 -msgid "200 (Zone Matching High)" -msgstr "" - -#: src/minoltamn.cpp:896 -msgid "80 (Zone Matching Low)" -msgstr "" - -#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 -#, fuzzy -msgid "Adobe RGB (ICC)" -msgstr "Adobe RGB" - -#: src/minoltamn.cpp:918 -msgid "Central" -msgstr "Stred" - -#: src/minoltamn.cpp:919 -msgid "Up" -msgstr "Hore" - -#: src/minoltamn.cpp:920 -msgid "Up right" -msgstr "Vpravo hore" - -#: src/minoltamn.cpp:922 -msgid "Down right" -msgstr "Vpravo dolu" - -#: src/minoltamn.cpp:923 -msgid "Down" -msgstr "Dolu" - -#: src/minoltamn.cpp:924 -msgid "Down left" -msgstr "Vľavo dolu" - -#: src/minoltamn.cpp:926 -msgid "Up left" -msgstr "Vľavo hore" - -#: src/minoltamn.cpp:932 -msgid "Selection" -msgstr "Výber" - -#: src/minoltamn.cpp:947 -#, fuzzy -msgid "Natural+" -msgstr "Prirodzené" - -#: src/minoltamn.cpp:949 -#, fuzzy -msgid "Wind Scene" -msgstr "NoÄná scéna" - -#: src/minoltamn.cpp:950 -#, fuzzy -msgid "Evening Scene" -msgstr "VeÄer" - -#: src/minoltamn.cpp:996 src/nikonmn.cpp:1345 src/nikonmn.cpp:1370 -msgid "Focus Position" -msgstr "poloha zaostrenia" - -#: src/minoltamn.cpp:997 src/nikonmn.cpp:1345 src/nikonmn.cpp:1370 -msgid "Focus position" -msgstr "poloha zaostrenia" - -#: src/minoltamn.cpp:999 -msgid "Focus Area" -msgstr "rozsah zaostrenia" - -#: src/minoltamn.cpp:1032 -msgid "Exposure Revision" -msgstr "Revízia expozície" - -#: src/minoltamn.cpp:1033 -msgid "Exposure revision" -msgstr "Revízia expozície" - -#: src/minoltamn.cpp:1050 src/minoltamn.cpp:1051 -#, fuzzy -msgid "Rotation2" -msgstr "otoÄenie" - -#: src/minoltamn.cpp:1056 src/minoltamn.cpp:1057 -#, fuzzy -msgid "Picture Finish" -msgstr "Informácie o obrázku" - -#: src/minoltamn.cpp:1059 -msgid "Exposure Manual Bias" -msgstr "RuÄné skreslenie expozície" - -#: src/minoltamn.cpp:1060 -msgid "Exposure manual bias" -msgstr "RuÄné skreslenie expozície" - -#: src/minoltamn.cpp:1062 src/panasonicmn.cpp:241 src/sonymn.cpp:399 -#: src/sonymn.cpp:400 -msgid "AF Mode" -msgstr "Režim AZ" - -#: src/minoltamn.cpp:1063 src/panasonicmn.cpp:241 -msgid "AF mode" -msgstr "Režim AZ" - -#: src/minoltamn.cpp:1083 -msgid "Unknown Minolta Camera Settings 5D tag" -msgstr "Neznáma znaÄka Minolta Camera Settings 5D" - -#: src/minoltamn.cpp:1096 src/sonymn.cpp:449 -#, fuzzy -msgid "Self-timer 10 sec" -msgstr "samospúšť (12 sek)" - -#: src/minoltamn.cpp:1098 src/sonymn.cpp:450 -#, fuzzy -msgid "Self-timer 2 sec" -msgstr "samospúšť (2 sek)" - -#: src/minoltamn.cpp:1100 src/sonymn.cpp:453 -#, fuzzy -msgid "White Balance Bracketing Low" -msgstr "Viacnásobné snímky so zmenou vyváženia bielej" - -#: src/minoltamn.cpp:1101 -#, fuzzy -msgid "White Balance Bracketing High" -msgstr "Viacnásobné snímky so zmenou vyváženia bielej" - -#: src/minoltamn.cpp:1102 -#, fuzzy -msgid "Single-frame Bracketing Low" -msgstr "jediný záber" - -#: src/minoltamn.cpp:1103 -#, fuzzy -msgid "Continuous Bracketing Low" -msgstr "Viacnásobné snímky" - -#: src/minoltamn.cpp:1104 -#, fuzzy -msgid "Single-frame Bracketing High" -msgstr "jediný záber" - -#: src/minoltamn.cpp:1105 -#, fuzzy -msgid "Continuous Bracketing High" -msgstr "Spojitý, vysoký" - -#: src/minoltamn.cpp:1136 src/sonymn.cpp:158 -msgid "Advanced" -msgstr "" - -#: src/minoltamn.cpp:1151 src/minoltamn.cpp:1433 src/sonymn.cpp:451 -#, fuzzy -msgid "Continuous Bracketing" -msgstr "Spojitý, vysoký" - -#: src/minoltamn.cpp:1152 -#, fuzzy -msgid "Single-Frame Bracketing" -msgstr "jediný záber" - -#: src/minoltamn.cpp:1153 src/minoltamn.cpp:1439 src/sonymn.cpp:225 -#, fuzzy -msgid "White Balance Bracketing" -msgstr "Viacnásobné snímky so zmenou vyváženia bielej" - -#: src/minoltamn.cpp:1183 src/minoltamn.cpp:1186 src/nikonmn.cpp:446 -msgid "Preset" -msgstr "Å tandardné" - -#: src/minoltamn.cpp:1185 src/minoltamn.cpp:1188 src/minoltamn.cpp:2093 -#, fuzzy -msgid "Color Temperature/Color Filter" -msgstr "Farebná teplota" - -#: src/minoltamn.cpp:1203 src/pentaxmn.cpp:1018 src/properties.cpp:465 -msgid "Temperature" -msgstr "Teplota" - -#: src/minoltamn.cpp:1209 -#, fuzzy -msgid "Setup" -msgstr "NastaviÅ¥" - -#: src/minoltamn.cpp:1210 -msgid "Recall" -msgstr "" - -#: src/minoltamn.cpp:1215 -msgid "Ok" -msgstr "" - -#: src/minoltamn.cpp:1216 -msgid "Error" -msgstr "" - -#: src/minoltamn.cpp:1228 -#, fuzzy -msgid "Image and Information" -msgstr "Konfigurácia obrázka" - -#: src/minoltamn.cpp:1229 -#, fuzzy -msgid "Image Only" -msgstr "Typ obrázka" - -#: src/minoltamn.cpp:1230 -#, fuzzy -msgid "Image and Histogram" -msgstr "Výška obrázka" - -#: src/minoltamn.cpp:1236 -#, fuzzy -msgid "Fill Flash" -msgstr "Spustí sa blesk" - -#: src/minoltamn.cpp:1247 -#, fuzzy -msgid "Focus Hold" -msgstr "režim zaostrenia" - -#: src/minoltamn.cpp:1248 -#, fuzzy -msgid "DOF Preview" -msgstr "Dáta náhľadu" - -#: src/minoltamn.cpp:1253 -msgid "Hold" -msgstr "" - -#: src/minoltamn.cpp:1254 -#, fuzzy -msgid "Toggle" -msgstr "odtieň" - -#: src/minoltamn.cpp:1255 -#, fuzzy -msgid "Spot Hold" -msgstr "Bodový režim" - -#: src/minoltamn.cpp:1256 -#, fuzzy -msgid "Spot Toggle" -msgstr "Bodový režim" - -# exif-shutterspeedvalue -#: src/minoltamn.cpp:1261 src/olympusmn.cpp:267 -msgid "Shutter Speed" -msgstr "RýchlosÅ¥ uzávierky" - -#: src/minoltamn.cpp:1267 -msgid "Ambient and Flash" -msgstr "" - -#: src/minoltamn.cpp:1268 -msgid "Ambient Only" -msgstr "" - -#: src/minoltamn.cpp:1273 -msgid "0.3 seconds" -msgstr "" - -#: src/minoltamn.cpp:1274 -msgid "0.6 seconds" -msgstr "" - -#: src/minoltamn.cpp:1280 src/nikonmn.cpp:292 src/nikonmn.cpp:972 -#: src/nikonmn.cpp:1418 -#, fuzzy -msgid "Automatic" -msgstr "automatické zaostrenie" - -#: src/minoltamn.cpp:1286 src/minoltamn.cpp:1292 -#, fuzzy -msgid "Auto-rotate" -msgstr "Automatický kontrast" - -#: src/minoltamn.cpp:1287 -#, fuzzy -msgid "Horizontal" -msgstr "Horizontálne (normálne)" - -#: src/minoltamn.cpp:1293 -#, fuzzy -msgid "Manual Rotate" -msgstr "RuÄné uvoľnenie" - -#: src/minoltamn.cpp:1298 -#, fuzzy -msgid "Within Range" -msgstr "Rozsah Å¡oÅ¡oviek:" - -#: src/minoltamn.cpp:1299 -#, fuzzy -msgid "Under/Over Range" -msgstr "prenosový rozsah" - -#: src/minoltamn.cpp:1300 -#, fuzzy -msgid "Out of Range" -msgstr "Ofset mimo rozsahu" - -#: src/minoltamn.cpp:1305 -#, fuzzy -msgid "Not Indicated" -msgstr "nedefinované" - -#: src/minoltamn.cpp:1306 -#, fuzzy -msgid "Under Scale" -msgstr "pod vodou" - -#: src/minoltamn.cpp:1307 -#, fuzzy -msgid "Bottom of Scale" -msgstr "zdola hore" - -#: src/minoltamn.cpp:1325 -msgid "Top of Scale" -msgstr "" - -#: src/minoltamn.cpp:1326 -#, fuzzy -msgid "Over Scale" -msgstr "Å tandardná Å¡kála" - -#: src/minoltamn.cpp:1331 -msgid "AM" -msgstr "" - -#: src/minoltamn.cpp:1332 src/olympusmn.cpp:512 src/olympusmn.cpp:1374 -#: src/olympusmn.cpp:1384 -msgid "MF" -msgstr "" - -#: src/minoltamn.cpp:1338 -msgid "Built-in" -msgstr "" - -#: src/minoltamn.cpp:1344 src/pentaxmn.cpp:347 src/pentaxmn.cpp:360 -msgid "Very Low" -msgstr "veľmi nízky" - -#: src/minoltamn.cpp:1346 -#, fuzzy -msgid "Half Full" -msgstr "Plný" - -#: src/minoltamn.cpp:1347 -msgid "Sufficient Power Remaining" -msgstr "" - -#: src/minoltamn.cpp:1355 -#, fuzzy -msgid "Exposure Compensation Setting" -msgstr "Kompenzácia expozície" - -#: src/minoltamn.cpp:1356 -#, fuzzy -msgid "Exposure compensation setting" -msgstr "Kompenzácia expozície" - -#: src/minoltamn.cpp:1358 -#, fuzzy -msgid "High Speed Sync" -msgstr "Orezanie vysoká rýchlosÅ¥" - -#: src/minoltamn.cpp:1359 -#, fuzzy -msgid "High speed sync" -msgstr "Orezanie vysoká rýchlosÅ¥" - -#: src/minoltamn.cpp:1361 -#, fuzzy -msgid "Manual Exposure Time" -msgstr "ÄŒas expozície" - -#: src/minoltamn.cpp:1362 -#, fuzzy -msgid "Manual exposure time" -msgstr "ÄŒas expozície" - -#: src/minoltamn.cpp:1364 src/minoltamn.cpp:1365 -#, fuzzy -msgid "Manual FNumber" -msgstr "Číslo intervalu" - -#: src/minoltamn.cpp:1373 -#, fuzzy -msgid "Drive Mode 2" -msgstr "Režim jazda autom" - -#: src/minoltamn.cpp:1374 -#, fuzzy -msgid "Drive mode 2" -msgstr "jazda autom" - -#: src/minoltamn.cpp:1382 src/minoltamn.cpp:1383 src/sonymn.cpp:572 -#: src/sonymn.cpp:573 src/sonymn.cpp:678 src/sonymn.cpp:679 -msgid "Local AF Area Point" -msgstr "" - -#: src/minoltamn.cpp:1385 src/minoltamn.cpp:1386 src/nikonmn.cpp:822 -#: src/nikonmn.cpp:845 src/sonymn.cpp:569 src/sonymn.cpp:570 -#: src/sonymn.cpp:675 src/sonymn.cpp:676 -#, fuzzy -msgid "AF Area Mode" -msgstr "Režim AZ" - -#: src/minoltamn.cpp:1388 src/minoltamn.cpp:1389 src/sonymn.cpp:605 -#: src/sonymn.cpp:606 src/sonymn.cpp:705 src/sonymn.cpp:706 -#, fuzzy -msgid "FlashMode" -msgstr "Režim blesku" - -#: src/minoltamn.cpp:1391 -#, fuzzy -msgid "Flash Exposure Comp Setting" -msgstr "Kompenzácia expozície blesku" - -#: src/minoltamn.cpp:1392 -#, fuzzy -msgid "Flash exposure compensation setting" -msgstr "Kompenzácia expozície blesku v EV" - -#: src/minoltamn.cpp:1397 src/sonymn.cpp:578 src/sonymn.cpp:579 -#: src/sonymn.cpp:684 src/sonymn.cpp:685 -#, fuzzy -msgid "ISO Setting" -msgstr "Nastavenia ISO" - -#: src/minoltamn.cpp:1400 src/minoltamn.cpp:1401 -#, fuzzy -msgid "Zone Matching Mode" -msgstr "Redukcia Å¡umu" - -#: src/minoltamn.cpp:1403 src/sonymn.cpp:581 src/sonymn.cpp:582 -#: src/sonymn.cpp:687 src/sonymn.cpp:688 -#, fuzzy -msgid "Dynamic Range Optimizer Mode" -msgstr "Nastavenie dynamického rozsahu" - -#: src/minoltamn.cpp:1404 -#, fuzzy -msgid "Dynamic range optimizer mode" -msgstr "Nastavenie dynamického rozsahu" - -#: src/minoltamn.cpp:1424 src/minoltamn.cpp:1425 src/sonymn.cpp:609 -#: src/sonymn.cpp:610 -msgid "Priority Setup Shutter Release" -msgstr "" - -#: src/minoltamn.cpp:1430 -#, fuzzy -msgid "Self Timer Time" -msgstr "Samospúšť" - -#: src/minoltamn.cpp:1431 -#, fuzzy -msgid "Self timer time" -msgstr "Samospúšť" - -#: src/minoltamn.cpp:1434 -#, fuzzy -msgid "Continuous bracketing" -msgstr "Spojitý, vysoký" - -#: src/minoltamn.cpp:1436 -#, fuzzy -msgid "Single Frame Bracketing" -msgstr "Viacnásobné snímky so zmenou vyváženia bielej" - -#: src/minoltamn.cpp:1437 -#, fuzzy -msgid "Single frame bracketing" -msgstr "Viacnásobné snímky so zmenou vyváženia bielej" - -#: src/minoltamn.cpp:1440 src/nikonmn.cpp:156 src/nikonmn.cpp:167 -msgid "White balance bracketing" -msgstr "Viacnásobné snímky so zmenou vyváženia bielej" - -#: src/minoltamn.cpp:1442 -#, fuzzy -msgid "White Balance Setting" -msgstr "Nastavenie vyváženia bielej" - -#: src/minoltamn.cpp:1445 -#, fuzzy -msgid "Preset White Balance" -msgstr "Vyváženie bielej" - -#: src/minoltamn.cpp:1446 -#, fuzzy -msgid "Preset white balance" -msgstr "Vyváženie bielej" - -#: src/minoltamn.cpp:1448 -#, fuzzy -msgid "Color Temperature Setting" -msgstr "Farebná teplota" - -#: src/minoltamn.cpp:1449 -#, fuzzy -msgid "Color temperature setting" -msgstr "Farebná teplota" - -#: src/minoltamn.cpp:1451 -#, fuzzy -msgid "Custom WB Setting" -msgstr "Vlastný 1" - -#: src/minoltamn.cpp:1452 -#, fuzzy -msgid "Custom WB setting" -msgstr "Vlastný 1" - -#: src/minoltamn.cpp:1454 src/minoltamn.cpp:1455 -#, fuzzy -msgid "Dynamic Range Optimizer Settings" -msgstr "Nastavenie dynamického rozsahu" - -#: src/minoltamn.cpp:1460 -#, fuzzy -msgid "Custom WB Red Level" -msgstr "WB_RGGBLevelsShade" - -#: src/minoltamn.cpp:1461 -#, fuzzy -msgid "Custom WB red level" -msgstr "Úroveň Äiernej" - -#: src/minoltamn.cpp:1463 -#, fuzzy -msgid "Custom WB Green Level" -msgstr "Úroveň Äiernej" - -#: src/minoltamn.cpp:1464 -#, fuzzy -msgid "Custom WB green level" -msgstr "Úroveň Äiernej" - -#: src/minoltamn.cpp:1466 -#, fuzzy -msgid "Custom WB Blue Level" -msgstr "WB_RGGBLevelsShade" - -#: src/minoltamn.cpp:1467 -#, fuzzy -msgid "CustomWB blue level" -msgstr "Úroveň Äiernej" - -#: src/minoltamn.cpp:1469 src/minoltamn.cpp:1470 -#, fuzzy -msgid "Custom WB Error" -msgstr "Vlastný 1" - -#: src/minoltamn.cpp:1473 -#, fuzzy -msgid "White balance fine tune" -msgstr "Nastavenie vyváženia bielej" - -#: src/minoltamn.cpp:1479 -#, fuzzy -msgid "Color compensation filter" -msgstr "Hodnota kompenzácie expozície" - -#: src/minoltamn.cpp:1481 src/minoltamn.cpp:1482 src/sonymn.cpp:641 -#: src/sonymn.cpp:642 src/sonymn.cpp:714 src/sonymn.cpp:715 -#, fuzzy -msgid "Sony Image Size" -msgstr "VeľkosÅ¥ obrázka" - -#: src/minoltamn.cpp:1487 -msgid "Instant Playback Time" -msgstr "" - -#: src/minoltamn.cpp:1488 -msgid "Instant playback time" -msgstr "" - -#: src/minoltamn.cpp:1490 -msgid "Instant Playback Setup" -msgstr "" - -#: src/minoltamn.cpp:1491 -msgid "Instant playback setup" -msgstr "" - -#: src/minoltamn.cpp:1496 -msgid "Eye Start AF" -msgstr "" - -# AF = automatické zaostrenie -#: src/minoltamn.cpp:1497 -#, fuzzy -msgid "Eye start AF" -msgstr "automatické zaostrenie pre jeden záber" - -#: src/minoltamn.cpp:1499 -#, fuzzy -msgid "Red Eye Reduction" -msgstr "Korekcia Äervených oÄí" - -#: src/minoltamn.cpp:1500 -#, fuzzy -msgid "Red eye reduction" -msgstr "Korekcia Äervených oÄí" - -#: src/minoltamn.cpp:1502 -#, fuzzy -msgid "Flash Default" -msgstr "Podrobnosti blesku" - -#: src/minoltamn.cpp:1503 -#, fuzzy -msgid "Flash default" -msgstr "podrobnosti blesku" - -#: src/minoltamn.cpp:1505 -#, fuzzy -msgid "Auto Bracket Order" -msgstr "Automatická uzávierka" - -#: src/minoltamn.cpp:1506 -#, fuzzy -msgid "Auto bracket order" -msgstr "Automatický viacnásobný záber" - -#: src/minoltamn.cpp:1508 -#, fuzzy -msgid "Focus Hold Button" -msgstr "Nastavenie režimu zaostrenia" - -#: src/minoltamn.cpp:1509 -#, fuzzy -msgid "Focus hold button" -msgstr "Nastavenie režimu zaostrenia" - -#: src/minoltamn.cpp:1511 -#, fuzzy -msgid "AEL Button" -msgstr "Nastavenie AE" - -#: src/minoltamn.cpp:1512 -#, fuzzy -msgid "AEL button" -msgstr "Nastavenie AE" - -#: src/minoltamn.cpp:1514 -#, fuzzy -msgid "Control Dial Set" -msgstr "Nastavenie kontrastu" - -#: src/minoltamn.cpp:1515 -#, fuzzy -msgid "Control dial set" -msgstr "Kontrast" - -#: src/minoltamn.cpp:1517 -#, fuzzy -msgid "Exposure Compensation Mode" -msgstr "Kompenzácia expozície" - -#: src/minoltamn.cpp:1518 -#, fuzzy -msgid "Exposure compensation mode" -msgstr "Kompenzácia expozície" - -#: src/minoltamn.cpp:1521 -#, fuzzy -msgid "AF assist" -msgstr "Asistent AZ" - -#: src/minoltamn.cpp:1523 -#, fuzzy -msgid "Card Shutter Lock" -msgstr "Ae zámok uzávierky" - -#: src/minoltamn.cpp:1524 -#, fuzzy -msgid "Card shutter lock" -msgstr "Ae zámok uzávierky" - -#: src/minoltamn.cpp:1526 -#, fuzzy -msgid "Lens Shutter Lock" -msgstr "Ae zámok uzávierky" - -#: src/minoltamn.cpp:1527 -#, fuzzy -msgid "Lens shutter lock" -msgstr "pomalá uzávierka" - -#: src/minoltamn.cpp:1529 -#, fuzzy -msgid "AF Area Illumination" -msgstr "GPS Informácie o oblasti" - -#: src/minoltamn.cpp:1530 -#, fuzzy -msgid "AF area illumination" -msgstr "Režim AZ" - -#: src/minoltamn.cpp:1532 -msgid "Monitor Display Off" -msgstr "" - -#: src/minoltamn.cpp:1533 -msgid "Monitor display off" -msgstr "" - -#: src/minoltamn.cpp:1535 -msgid "Record Display" -msgstr "" - -#: src/minoltamn.cpp:1536 -msgid "Record display" -msgstr "" - -#: src/minoltamn.cpp:1538 -msgid "Play Display" -msgstr "" - -#: src/minoltamn.cpp:1539 -msgid "Play display" -msgstr "" - -#: src/minoltamn.cpp:1541 -#, fuzzy -msgid "Exposure Indicator" -msgstr "Index expozície" - -#: src/minoltamn.cpp:1542 -#, fuzzy -msgid "Exposure indicator" -msgstr "ExpoziÄný index" - -#: src/minoltamn.cpp:1544 -#, fuzzy -msgid "AEL Exposure Indicator" -msgstr "Index expozície" - -#: src/minoltamn.cpp:1545 -msgid "" -"AEL exposure indicator (also indicates exposure for next shot when " -"bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1547 -#, fuzzy -msgid "Exposure Bracketing Indicator Last" -msgstr "Viacnásobné snímky so zmenou expozície" - -#: src/minoltamn.cpp:1548 -msgid "" -"Exposure bracketing indicator last (indicator for last shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1550 -msgid "Metering Off Scale Indicator" -msgstr "" - -#: src/minoltamn.cpp:1551 -msgid "" -"Metering off scale indicator (two flashing triangles when under or over " -"metering scale)" -msgstr "" - -#: src/minoltamn.cpp:1553 -#, fuzzy -msgid "Flash Exposure Indicator" -msgstr "Kompenzácia expozície blesku" - -#: src/minoltamn.cpp:1554 -#, fuzzy -msgid "Flash exposure indicator" -msgstr "Kompenzácia expozície blesku" - -#: src/minoltamn.cpp:1556 -#, fuzzy -msgid "Flash Exposure Indicator Next" -msgstr "Kompenzácia expozície blesku" - -#: src/minoltamn.cpp:1557 -msgid "Flash exposure indicator next (indicator for next shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1559 -#, fuzzy -msgid "Flash Exposure Indicator Last" -msgstr "Kompenzácia expozície blesku" - -#: src/minoltamn.cpp:1560 -msgid "Flash exposure indicator last (indicator for last shot when bracketing)" -msgstr "" - -#: src/minoltamn.cpp:1565 -#, fuzzy -msgid "Focus Mode Switch" -msgstr "režim zaostrenia" - -#: src/minoltamn.cpp:1566 -#, fuzzy -msgid "Focus mode switch" -msgstr "Nastavenie režimu zaostrenia" - -#: src/minoltamn.cpp:1568 src/olympusmn.cpp:759 -#, fuzzy -msgid "Flash Type" -msgstr "Režim blesku" - -#: src/minoltamn.cpp:1569 src/olympusmn.cpp:759 -#, fuzzy -msgid "Flash type" -msgstr "Režim blesku" - -# AE - automatická expozícia -#: src/minoltamn.cpp:1574 src/olympusmn.cpp:660 -#, fuzzy -msgid "AE Lock" -msgstr "zámok AE" - -#: src/minoltamn.cpp:1581 -msgid "Color compensation filter: negative is green, positive is magenta" -msgstr "" - -#: src/minoltamn.cpp:1583 src/tags.cpp:759 -msgid "Battery Level" -msgstr "úroveň batérie" - -#: src/minoltamn.cpp:1584 -#, fuzzy -msgid "Battery level" -msgstr "úroveň batérie" - -#: src/minoltamn.cpp:1588 -#, fuzzy -msgid "Unknown Sony Camera Settings A100 tag" -msgstr "Neznáma znaÄka Nastavenie fotoaparátu Canon 1" - -#: src/minoltamn.cpp:1894 src/sonymn.cpp:484 -#, fuzzy -msgid "Clear" -msgstr "rok" - -#: src/minoltamn.cpp:1895 src/sonymn.cpp:485 -#, fuzzy -msgid "Deep" -msgstr "Denver" - -#: src/minoltamn.cpp:1896 src/sonymn.cpp:486 -#, fuzzy -msgid "Light" -msgstr "vpravo" - -#: src/minoltamn.cpp:1897 -#, fuzzy -msgid "Night View" -msgstr "NoÄná scéna" - -#: src/minoltamn.cpp:1898 -msgid "Autumn Leaves" -msgstr "" - -#: src/minoltamn.cpp:1937 -#, fuzzy -msgid "Local" -msgstr "Umiestnenie" - -#: src/minoltamn.cpp:1952 -#, fuzzy -msgid "Top-Right" -msgstr "vpravo hore" - -#: src/minoltamn.cpp:1954 -#, fuzzy -msgid "Bottom-Right" -msgstr "vpravo dolu" - -#: src/minoltamn.cpp:1956 -#, fuzzy -msgid "Bottom-Left" -msgstr "vľavo dolu" - -#: src/minoltamn.cpp:1958 -#, fuzzy -msgid "Top-Left" -msgstr "vpravo hore" - -#: src/minoltamn.cpp:1959 -#, fuzzy -msgid "Far-Right" -msgstr "OrezaÅ¥ vpravo" - -#: src/minoltamn.cpp:1960 -#, fuzzy -msgid "Far-Left" -msgstr "OrezaÅ¥ vľavo" - -# exif-transferfunction -#: src/minoltamn.cpp:1974 src/sonymn.cpp:89 -#, fuzzy -msgid "Advanced Auto" -msgstr "prenosová funkcia" - -#: src/minoltamn.cpp:1975 -#, fuzzy -msgid "Advanced Level" -msgstr "Orezanie vysoká rýchlosÅ¥" - -# AF = automatické zaostrenie -#: src/minoltamn.cpp:1988 -#, fuzzy -msgid "AF" -msgstr "AZ-S" - -#: src/minoltamn.cpp:1989 -#, fuzzy -msgid "Release" -msgstr "Dátum vydania" - -#: src/minoltamn.cpp:2001 -#, fuzzy -msgid "RAW " -msgstr "RAW" - -#: src/minoltamn.cpp:2002 -#, fuzzy -msgid "CRAW " -msgstr "RAW" - -#: src/minoltamn.cpp:2005 -#, fuzzy -msgid "RAW+JPEG" -msgstr "JPEG" - -#: src/minoltamn.cpp:2006 -#, fuzzy -msgid "CRAW+JPEG" -msgstr "JPEG" - -#: src/minoltamn.cpp:2062 -msgid "Raw + JPEG" -msgstr "" - -#: src/minoltamn.cpp:2063 -#, fuzzy -msgid "Compressed Raw" -msgstr "Kompresný pomer" - -#: src/minoltamn.cpp:2064 -#, fuzzy -msgid "Compressed Raw + JPEG" -msgstr "VeľkosÅ¥ komprimovaného obrázka" - -#: src/minoltamn.cpp:2077 -msgid "Minolta AF 2x APO (D)" -msgstr "" - -#: src/minoltamn.cpp:2078 -msgid "Minolta AF 2x APO II" -msgstr "" - -#: src/minoltamn.cpp:2079 -msgid "Minolta AF 1.4x APO (D)" -msgstr "" - -#: src/minoltamn.cpp:2080 -msgid "Minolta AF 1.4x APO II" -msgstr "" - -#: src/minoltamn.cpp:2110 -msgid "ISO Setting Used" -msgstr "Použité nastavenie ISO" - -#: src/minoltamn.cpp:2111 src/olympusmn.cpp:126 src/olympusmn.cpp:1109 -msgid "High Key" -msgstr "Vysoký kľúÄ" - -#: src/minoltamn.cpp:2112 src/olympusmn.cpp:132 src/olympusmn.cpp:1107 -msgid "Low Key" -msgstr "Nízky kľúÄ" - -#: src/nikonmn.cpp:80 -#, fuzzy -msgid "Extra High" -msgstr "extra jemný" - -#: src/nikonmn.cpp:86 src/nikonmn.cpp:1560 -msgid "Single area" -msgstr "Jednoduchá oblasÅ¥" - -#: src/nikonmn.cpp:87 src/nikonmn.cpp:1561 -msgid "Dynamic area" -msgstr "Dynamická oblasÅ¥" - -#: src/nikonmn.cpp:88 -#, fuzzy -msgid "Dynamic area, closest subject" -msgstr "Najbližší subjekt" - -#: src/nikonmn.cpp:89 -#, fuzzy -msgid "Group dynamic" -msgstr "Skupinové dynamické AZ" - -#: src/nikonmn.cpp:90 src/nikonmn.cpp:1564 -msgid "Single area (wide)" -msgstr "" - -#: src/nikonmn.cpp:91 src/nikonmn.cpp:1565 -msgid "Dynamic area (wide)" -msgstr "Dynamická oblasÅ¥ (Å¡iroká)" - -#: src/nikonmn.cpp:104 src/nikonmn.cpp:797 src/nikonmn.cpp:812 -#: src/pentaxmn.cpp:215 -msgid "Upper-left" -msgstr "vľavo hore" - -#: src/nikonmn.cpp:105 src/nikonmn.cpp:798 src/nikonmn.cpp:813 -#: src/pentaxmn.cpp:217 -msgid "Upper-right" -msgstr "vpravo hore" - -#: src/nikonmn.cpp:106 src/nikonmn.cpp:799 src/nikonmn.cpp:814 -#: src/pentaxmn.cpp:223 -msgid "Lower-left" -msgstr "vľavo dolu" - -#: src/nikonmn.cpp:107 src/nikonmn.cpp:800 src/nikonmn.cpp:815 -#: src/pentaxmn.cpp:225 -msgid "Lower-right" -msgstr "vpravo dolu" - -#: src/nikonmn.cpp:108 -msgid "Left-most" -msgstr "najviac vľavo" - -#: src/nikonmn.cpp:109 -msgid "Right-most" -msgstr "najviac vpravo" - -#: src/nikonmn.cpp:143 -msgid "Fire, manual" -msgstr "Blesk, ruÄne" - -#: src/nikonmn.cpp:144 -msgid "Fire, external" -msgstr "blesk, externý" - -#: src/nikonmn.cpp:145 -msgid "Fire, commander mode" -msgstr "" - -#: src/nikonmn.cpp:146 -#, fuzzy -msgid "Fire, TTL mode" -msgstr "Režim AZ" - -#: src/nikonmn.cpp:152 src/nikonmn.cpp:163 -msgid "Delay" -msgstr "Oneskorenie" - -#: src/nikonmn.cpp:153 src/nikonmn.cpp:164 -msgid "PC control" -msgstr "Riadenie PC" - -#: src/nikonmn.cpp:154 src/nikonmn.cpp:165 -msgid "Exposure bracketing" -msgstr "Viacnásobné snímky so zmenou expozície" - -#: src/nikonmn.cpp:155 -#, fuzzy -msgid "Auto ISO" -msgstr "Auto" - -#: src/nikonmn.cpp:157 src/nikonmn.cpp:168 -msgid "IR control" -msgstr "riadenie IR" - -#: src/nikonmn.cpp:166 -msgid "Unused LE-NR slowdown" -msgstr "" - -#: src/nikonmn.cpp:174 -msgid "Auto release" -msgstr "Automatické uvoľnenie" - -#: src/nikonmn.cpp:175 -msgid "Manual release" -msgstr "RuÄné uvoľnenie" - -#: src/nikonmn.cpp:180 -#, fuzzy -msgid "Lossy (type 1)" -msgstr "typ Å¡oÅ¡oviek" - -# exif-compression-1 -#: src/nikonmn.cpp:181 src/tags.cpp:247 -msgid "Uncompressed" -msgstr "nekomprimovaný" - -#: src/nikonmn.cpp:182 -#, fuzzy -msgid "Lossless" -msgstr "Los Angeles" - -#: src/nikonmn.cpp:183 -#, fuzzy -msgid "Lossy (type 2)" -msgstr "typ Å¡oÅ¡oviek" - -#: src/nikonmn.cpp:189 -#, fuzzy -msgid "B & W" -msgstr "ÄŒB" - -#: src/nikonmn.cpp:191 -#, fuzzy -msgid "Trim" -msgstr "ÄŒas" - -#: src/nikonmn.cpp:192 -#, fuzzy -msgid "Small picture" -msgstr "Film" - -# exif-lightsource-1 -#: src/nikonmn.cpp:193 -#, fuzzy -msgid "D-Lighting" -msgstr "denné svetlo" - -#: src/nikonmn.cpp:194 -#, fuzzy -msgid "Red eye" -msgstr "ÄŒervené oÄi" - -#: src/nikonmn.cpp:195 src/nikonmn.cpp:678 -#, fuzzy -msgid "Cyanotype" -msgstr "typ" - -# exif-lightsource-1 -#: src/nikonmn.cpp:196 -#, fuzzy -msgid "Sky light" -msgstr "denné svetlo" - -#: src/nikonmn.cpp:197 -#, fuzzy -msgid "Warm tone" -msgstr "Farebný tón" - -#: src/nikonmn.cpp:198 -#, fuzzy -msgid "Color custom" -msgstr "Farebný tón" - -#: src/nikonmn.cpp:199 -#, fuzzy -msgid "Image overlay" -msgstr "Tón obrázka" - -#: src/nikonmn.cpp:205 -#, fuzzy -msgid "Minimal" -msgstr "Manuál" - -#: src/nikonmn.cpp:214 src/nikonmn.cpp:524 -msgid "Nikon Makernote version" -msgstr "Poznámka výrobcu Nikon" - -#: src/nikonmn.cpp:216 src/nikonmn.cpp:468 src/nikonmn.cpp:525 -#: src/olympusmn.cpp:270 src/panasonicmn.cpp:344 src/tags.cpp:1583 -msgid "ISO Speed" -msgstr "ISO rýchlosÅ¥" - -#: src/nikonmn.cpp:228 src/nikonmn.cpp:529 -msgid "Sharpening" -msgstr "Zaostrovanie" - -#: src/nikonmn.cpp:229 src/nikonmn.cpp:529 -msgid "Image sharpening setting" -msgstr "Nastavenie zaostrovania obrazu" - -#: src/nikonmn.cpp:231 src/nikonmn.cpp:530 -msgid "Focus" -msgstr "zaostrenie" - -#: src/nikonmn.cpp:234 src/nikonmn.cpp:531 -msgid "Flash Setting" -msgstr "Nastavenie blesku" - -#: src/nikonmn.cpp:235 src/nikonmn.cpp:531 -msgid "Flash setting" -msgstr "Nastavenie blesku" - -#: src/nikonmn.cpp:240 src/nikonmn.cpp:538 -msgid "ISO Selection" -msgstr "Výber ISO" - -#: src/nikonmn.cpp:241 src/nikonmn.cpp:538 -msgid "ISO selection" -msgstr "Výber ISO" - -#: src/nikonmn.cpp:243 src/nikonmn.cpp:539 src/panasonicmn.cpp:246 -#, fuzzy -msgid "Data Dump" -msgstr "Výpis dát 1" - -#: src/nikonmn.cpp:244 src/nikonmn.cpp:539 src/panasonicmn.cpp:246 -#, fuzzy -msgid "Data dump" -msgstr "Výpis dát 1" - -#: src/nikonmn.cpp:246 src/nikonmn.cpp:465 src/nikonmn.cpp:559 -msgid "Image Adjustment" -msgstr "Úpravy obrázka" - -#: src/nikonmn.cpp:247 src/nikonmn.cpp:466 src/nikonmn.cpp:559 -msgid "Image adjustment setting" -msgstr "Nastavenia úprav obrázka" - -#: src/nikonmn.cpp:249 src/nikonmn.cpp:483 src/nikonmn.cpp:561 -msgid "Auxiliary Lens" -msgstr "Pomocné Å¡oÅ¡ovky" - -#: src/nikonmn.cpp:250 src/nikonmn.cpp:484 src/nikonmn.cpp:561 -#, fuzzy -msgid "Auxiliary lens (adapter)" -msgstr "Pomocné Å¡oÅ¡ovky" - -#: src/nikonmn.cpp:253 src/nikonmn.cpp:564 src/olympusmn.cpp:304 -msgid "Manual focus distance" -msgstr "RuÄné nastavenie vzdialenosti zaostrenia" - -#: src/nikonmn.cpp:256 src/nikonmn.cpp:481 src/nikonmn.cpp:565 -msgid "Digital zoom setting" -msgstr "nastavenie digitálneho priblíženie" - -# AF = automatické zaostrenie -#: src/nikonmn.cpp:258 -msgid "AF Focus Position" -msgstr "poloha automatického zaostrenia" - -#: src/nikonmn.cpp:259 -msgid "AF focus position information" -msgstr "Informácie o polohe automatického zaostrenia" - -#: src/nikonmn.cpp:263 -msgid "Unknown Nikon1MakerNote tag" -msgstr "Neznáma znaÄka Nikon1MakerNote" - -#: src/nikonmn.cpp:290 src/nikonmn.cpp:1416 -msgid "Continuous autofocus" -msgstr "Spojité automatické zaostrenie" - -#: src/nikonmn.cpp:291 src/nikonmn.cpp:1417 -msgid "Single autofocus" -msgstr "" - -#: src/nikonmn.cpp:325 src/nikonmn.cpp:506 src/nikonmn.cpp:1517 -msgid "Not used" -msgstr "Nepoužité" - -#: src/nikonmn.cpp:365 -msgid "guess" -msgstr "hádaÅ¥" - -#: src/nikonmn.cpp:412 -msgid "VGA Basic" -msgstr "VGA základné" - -#: src/nikonmn.cpp:413 -msgid "VGA Normal" -msgstr "Normálny VGA" - -#: src/nikonmn.cpp:414 -msgid "VGA Fine" -msgstr "VGA jemné" - -#: src/nikonmn.cpp:415 -msgid "SXGA Basic" -msgstr "SXGA základné" - -#: src/nikonmn.cpp:416 -msgid "SXGA Normal" -msgstr "Normálny SXGA" - -#: src/nikonmn.cpp:417 -msgid "SXGA Fine" -msgstr "SXGA jemné" - -#: src/nikonmn.cpp:429 -msgid "Bright+" -msgstr "Jas+" - -#: src/nikonmn.cpp:430 -msgid "Bright-" -msgstr "Jas-" - -#: src/nikonmn.cpp:431 -msgid "Contrast+" -msgstr "Kontrast+" - -#: src/nikonmn.cpp:432 -msgid "Contrast-" -msgstr "Kontrast-" - -#: src/nikonmn.cpp:451 -msgid "Speedlight" -msgstr "Rýchlosvetlo" - -#: src/nikonmn.cpp:491 -msgid "Unknown Nikon2MakerNote tag" -msgstr "Neznáma znaÄka Nikon2MakerNote" - -#: src/nikonmn.cpp:532 src/olympusmn.cpp:282 -msgid "Flash Device" -msgstr "Zariadenie blesku" - -#: src/nikonmn.cpp:532 src/olympusmn.cpp:283 -msgid "Flash device" -msgstr "Zariadenie blesku" - -#: src/nikonmn.cpp:534 src/olympusmn.cpp:249 src/panasonicmn.cpp:248 -msgid "White Balance Bias" -msgstr "Skreslenie vyváženia bielej" - -#: src/nikonmn.cpp:534 src/olympusmn.cpp:250 -msgid "White balance bias" -msgstr "Skreslenie vyváženia bielej" - -#: src/nikonmn.cpp:535 src/olympusmn.cpp:932 -#, fuzzy -msgid "WB RB Levels" -msgstr "WB_RGGBLevelsShade" - -#: src/nikonmn.cpp:535 src/olympusmn.cpp:932 -#, fuzzy -msgid "WB RB levels" -msgstr "Úroveň Äiernej" - -#: src/nikonmn.cpp:536 -msgid "Program Shift" -msgstr "Posunutie programu" - -#: src/nikonmn.cpp:536 -msgid "Program shift" -msgstr "Posunutie programu" - -#: src/nikonmn.cpp:537 -msgid "Exposure Difference" -msgstr "Rozdiel expozície" - -#: src/nikonmn.cpp:537 -msgid "Exposure difference" -msgstr "Rozdiel expozície" - -#: src/nikonmn.cpp:540 src/pentaxmn.cpp:877 -msgid "Pointer to a preview image" -msgstr "Ukazovateľ na náhľad" - -#: src/nikonmn.cpp:540 src/pentaxmn.cpp:878 -msgid "Offset to an IFD containing a preview image" -msgstr "Umiestnenie IFD obsahujúceho náhľad obrázka" - -#: src/nikonmn.cpp:541 -msgid "Flash Comp" -msgstr "Komp. blesku" - -#: src/nikonmn.cpp:541 -msgid "Flash compensation setting" -msgstr "Nastavenie kompenzácie blesku" - -#: src/nikonmn.cpp:543 -msgid "Image Boundary" -msgstr "Okraj obrázka" - -#: src/nikonmn.cpp:543 -msgid "Image boundary" -msgstr "Okraj obrázka" - -#: src/nikonmn.cpp:544 -#, fuzzy -msgid "Flash exposure comp" -msgstr "Kompenzácia expozície blesku" - -#: src/nikonmn.cpp:545 -msgid "Flash Bracket Comp" -msgstr "Komp. viacnásobného záberu blesku" - -#: src/nikonmn.cpp:545 -msgid "Flash bracket compensation applied" -msgstr "Kompenzácia viacnásobného záberu blesku" - -#: src/nikonmn.cpp:546 -msgid "Exposure Bracket Comp" -msgstr "Komp. viacnásobného záberu" - -#: src/nikonmn.cpp:546 -msgid "AE bracket compensation applied" -msgstr "Použitá kompenzácia viacnásobného záberu AE" - -#: src/nikonmn.cpp:547 src/olympusmn.cpp:459 -msgid "Image Processing" -msgstr "Spracovanie obrazu" - -#: src/nikonmn.cpp:547 src/pentaxmn.cpp:985 src/pentaxmn.cpp:986 -msgid "Image processing" -msgstr "Spracovanie obrazu" - -#: src/nikonmn.cpp:548 -msgid "Crop High Speed" -msgstr "Orezanie vysoká rýchlosÅ¥" - -#: src/nikonmn.cpp:548 -msgid "Crop high speed" -msgstr "Orezanie vysoká rýchlosÅ¥" - -#: src/nikonmn.cpp:549 -#, fuzzy -msgid "Exposure Tuning" -msgstr "Upozornenie expozície" - -#: src/nikonmn.cpp:549 -#, fuzzy -msgid "Exposure tuning" -msgstr "Upozornenie expozície" - -#: src/nikonmn.cpp:552 -#, fuzzy -msgid "VR Info" -msgstr "Nespracované info" - -#: src/nikonmn.cpp:552 -#, fuzzy -msgid "VR info" -msgstr "Nespracované info" - -#: src/nikonmn.cpp:553 -#, fuzzy -msgid "Image Authentication" -msgstr "Orientácia obrázka" - -#: src/nikonmn.cpp:553 -#, fuzzy -msgid "Image authentication" -msgstr "Orientácia obrázka" - -#: src/nikonmn.cpp:554 -msgid "ActiveD-Lighting" -msgstr "" - -#: src/nikonmn.cpp:554 -msgid "ActiveD-lighting" -msgstr "" - -#: src/nikonmn.cpp:555 -#, fuzzy -msgid "Picture Control" -msgstr "Informácie o obrázku" - -#: src/nikonmn.cpp:555 -#, fuzzy -msgid " Picture control" -msgstr "Informácie o obrázku" - -#: src/nikonmn.cpp:556 -#, fuzzy -msgid "World Time" -msgstr "ÄŒas Minolta" - -#: src/nikonmn.cpp:556 -#, fuzzy -msgid "World time" -msgstr "ÄŒas Minolta" - -#: src/nikonmn.cpp:557 -#, fuzzy -msgid "ISO Info" -msgstr "Info o snímke" - -#: src/nikonmn.cpp:557 -#, fuzzy -msgid "ISO info" -msgstr "Nastavenia ISO" - -#: src/nikonmn.cpp:558 -#, fuzzy -msgid "Vignette Control" -msgstr "Diaľkové ovládanie?" - -#: src/nikonmn.cpp:558 -#, fuzzy -msgid "Vignette control" -msgstr "Diaľkové ovládanie?" - -#: src/nikonmn.cpp:560 -msgid "Tone Compensation" -msgstr "Kompenzácia tónu" - -#: src/nikonmn.cpp:560 -msgid "Tone compensation" -msgstr "Kompenzácia tónu" - -#: src/nikonmn.cpp:566 -msgid "Mode of flash used" -msgstr "Použitý režim blesku" - -#: src/nikonmn.cpp:568 src/panasonicmn.cpp:244 -msgid "Shooting Mode" -msgstr "Režim fotenia" - -#: src/nikonmn.cpp:568 src/panasonicmn.cpp:244 src/pentaxmn.cpp:868 -msgid "Shooting mode" -msgstr "Režim fotenia" - -#: src/nikonmn.cpp:569 -msgid "Auto Bracket Release" -msgstr "Uvoľnenie viacnásobného záberu" - -#: src/nikonmn.cpp:569 -msgid "Auto bracket release" -msgstr "Uvoľnenie viacnásobného záberu" - -# TODO: check -#: src/nikonmn.cpp:570 -#, fuzzy -msgid "Lens FStops" -msgstr "F stops Å¡oÅ¡oviek" - -#: src/nikonmn.cpp:571 -#, fuzzy -msgid "Contrast Curve" -msgstr "Kontrast" - -#: src/nikonmn.cpp:571 -#, fuzzy -msgid "Contrast curve" -msgstr "Kontrast" - -#: src/nikonmn.cpp:572 -#, fuzzy -msgid "Color Hue" -msgstr "Farebný tón" - -#: src/nikonmn.cpp:572 -#, fuzzy -msgid "Color hue" -msgstr "Farebný tón" - -#: src/nikonmn.cpp:573 src/olympusmn.cpp:253 src/olympusmn.cpp:684 -#: src/panasonicmn.cpp:282 -msgid "Scene mode" -msgstr "Režim scény" - -#: src/nikonmn.cpp:574 src/olympusmn.cpp:1076 src/properties.cpp:562 -#: src/tags.cpp:826 src/tags.cpp:1649 -msgid "Light Source" -msgstr "Zdroj svetla" - -# exif-lightsource -#: src/nikonmn.cpp:574 src/olympusmn.cpp:1076 -msgid "Light source" -msgstr "Svetelný zdroj" - -#: src/nikonmn.cpp:575 -#, fuzzy -msgid "Shot info" -msgstr "Info o snímke" - -#: src/nikonmn.cpp:576 src/nikonmn.cpp:700 -msgid "Hue Adjustment" -msgstr "Úpravy tónu" - -#: src/nikonmn.cpp:576 src/nikonmn.cpp:700 -msgid "Hue adjustment" -msgstr "Úpravy tónu" - -#: src/nikonmn.cpp:577 -#, fuzzy -msgid "NEF Compression" -msgstr "Kompresia" - -#: src/nikonmn.cpp:577 -#, fuzzy -msgid "NEF compression" -msgstr "Kompresia" - -#: src/nikonmn.cpp:580 src/tags.cpp:898 -msgid "Linearization Table" -msgstr "LinearizaÄná tabuľka" - -#: src/nikonmn.cpp:580 -#, fuzzy -msgid "Linearization table" -msgstr "LinearizaÄná tabuľka" - -#: src/nikonmn.cpp:581 -#, fuzzy -msgid "Color Balance" -msgstr "Vyváženie farieb 1" - -#: src/nikonmn.cpp:581 -#, fuzzy -msgid "Color balance" -msgstr "Vyváženie farieb ÄŒervená" - -#: src/nikonmn.cpp:582 -msgid "Lens Data" -msgstr "Údaje Å¡oÅ¡oviek" - -#: src/nikonmn.cpp:582 -msgid "Lens data settings" -msgstr "Nastavenia údajov Å¡oÅ¡oviek" - -#: src/nikonmn.cpp:583 -#, fuzzy -msgid "Raw Image Center" -msgstr "PoÄet obrázkov" - -#: src/nikonmn.cpp:583 -#, fuzzy -msgid "Raw image center" -msgstr "ZobraziÅ¥ vložený obrázok" - -#: src/nikonmn.cpp:584 -msgid "Sensor Pixel Size" -msgstr "VeľkosÅ¥ obrazového bodu snímaÄa" - -#: src/nikonmn.cpp:584 -msgid "Sensor pixel size" -msgstr "VeľkosÅ¥ obrazového bodu snímaÄa" - -#: src/nikonmn.cpp:586 -#, fuzzy -msgid "Scene Assist" -msgstr "Asistent AZ" - -#: src/nikonmn.cpp:586 -#, fuzzy -msgid "Scene assist" -msgstr "scenéria" - -#: src/nikonmn.cpp:587 -#, fuzzy -msgid "Retouch History" -msgstr "História" - -#: src/nikonmn.cpp:587 -#, fuzzy -msgid "Retouch history" -msgstr "História" - -#: src/nikonmn.cpp:589 -#, fuzzy -msgid "Serial NO" -msgstr "Sériové Äíslo" - -#: src/nikonmn.cpp:589 -msgid "Camera serial number, usually starts with \"NO= \"" -msgstr "" - -#: src/nikonmn.cpp:590 -msgid "Image Data Size" -msgstr "VeľkosÅ¥ obrazových údajov" - -#: src/nikonmn.cpp:590 -msgid "Image data size" -msgstr "VeľkosÅ¥ obrazových údajov" - -#: src/nikonmn.cpp:592 -msgid "Image Count" -msgstr "PoÄet obrázkov" - -#: src/nikonmn.cpp:592 -msgid "Image count" -msgstr "PoÄet obrázkov" - -#: src/nikonmn.cpp:593 src/nikonmn.cpp:1227 -#, fuzzy -msgid "Deleted Image Count" -msgstr "ZmazaÅ¥ poÄet obrázkov" - -#: src/nikonmn.cpp:593 src/nikonmn.cpp:1227 -#, fuzzy -msgid "Deleted image count" -msgstr "ZmazaÅ¥ poÄet obrázkov" - -#: src/nikonmn.cpp:594 src/nikonmn.cpp:1064 src/nikonmn.cpp:1077 -#: src/nikonmn.cpp:1137 src/nikonmn.cpp:1197 src/nikonmn.cpp:1233 -msgid "Shutter Count" -msgstr "PoÄítadlo uzávierky" - -#: src/nikonmn.cpp:594 -msgid "Number of shots taken by camera" -msgstr "PoÄet snímok zachytených fotoaparátom" - -#: src/nikonmn.cpp:595 -#, fuzzy -msgid "Flash info" -msgstr "Info o blesku" - -#: src/nikonmn.cpp:596 -msgid "Image Optimization" -msgstr "Optimalizácia obrázka" - -#: src/nikonmn.cpp:596 -msgid "Image optimization" -msgstr "Optimalizácia obrázka" - -#: src/nikonmn.cpp:598 -msgid "Program Variation" -msgstr "Variácia programu" - -#: src/nikonmn.cpp:598 -msgid "Program variation" -msgstr "Variácia programu" - -# AF = automatické zaostrenie -#: src/nikonmn.cpp:600 -msgid "AF Response" -msgstr "OdpoveÄ automatického zaostrenia" - -# AF = automatické zaostrenie -#: src/nikonmn.cpp:600 -msgid "AF response" -msgstr "OdpoveÄ automatického zaostrenia" - -#: src/nikonmn.cpp:601 -#, fuzzy -msgid "Multi exposure" -msgstr "Viacnásobná expozícia" - -#: src/nikonmn.cpp:602 -msgid "High ISO Noise Reduction" -msgstr "Vysoká redukcia Å¡umu ISO" - -#: src/nikonmn.cpp:603 src/nikonmn.cpp:702 -#, fuzzy -msgid "Toning effect" -msgstr "fotoefekt" - -#: src/nikonmn.cpp:604 -#, fuzzy -msgid "AF info 2" -msgstr "Info o AZ" - -#: src/nikonmn.cpp:605 -#, fuzzy -msgid "File info" -msgstr "Názov súboru" - -# AF = automatické zaostrenie -#: src/nikonmn.cpp:606 -#, fuzzy -msgid "AF tune" -msgstr "Použitý bod automatického zaostrenia" - -#: src/nikonmn.cpp:609 -msgid "Capture Data" -msgstr "Dáta snímania" - -#: src/nikonmn.cpp:609 -msgid "Capture data" -msgstr "Dáta snímania" - -#: src/nikonmn.cpp:610 -msgid "Capture Version" -msgstr "Verzia snímania" - -#: src/nikonmn.cpp:610 -msgid "Capture version" -msgstr "Verzia snímania" - -#: src/nikonmn.cpp:612 -msgid "Capture Offsets" -msgstr "Ofset snímania" - -#: src/nikonmn.cpp:612 -msgid "Capture offsets" -msgstr "Ofset snímania" - -#: src/nikonmn.cpp:613 -#, fuzzy -msgid "Scan IFD" -msgstr "UložiÅ¥ ID" - -#: src/nikonmn.cpp:614 -#, fuzzy -msgid "ICC profile" -msgstr "Farebný profil" - -#: src/nikonmn.cpp:615 -#, fuzzy -msgid "Capture output" -msgstr "Dáta snímania" - -#: src/nikonmn.cpp:617 -msgid "Unknown Nikon3MakerNote tag" -msgstr "Neznáma znaÄka Nikon3MakerNote" - -#: src/nikonmn.cpp:627 src/olympusmn.cpp:65 src/panasonicmn.cpp:140 -#: src/pentaxmn.cpp:298 -msgid "No" -msgstr "Nie" - -#: src/nikonmn.cpp:628 src/olympusmn.cpp:66 src/panasonicmn.cpp:139 -#: src/pentaxmn.cpp:299 -msgid "Yes" -msgstr "Ãno" - -#: src/nikonmn.cpp:633 -msgid "Y/M/D" -msgstr "" - -#: src/nikonmn.cpp:634 -msgid "M/D/Y" -msgstr "" - -#: src/nikonmn.cpp:635 -msgid "D/M/Y" -msgstr "" - -#: src/nikonmn.cpp:647 src/nikonmn.cpp:1228 -#, fuzzy -msgid "Vibration Reduction" -msgstr "Bez korekcie" - -#: src/nikonmn.cpp:647 src/nikonmn.cpp:1228 -#, fuzzy -msgid "Vibration reduction" -msgstr "Bez korekcie" - -#: src/nikonmn.cpp:649 -#, fuzzy -msgid "Unknown Nikon Vibration Reduction Tag" -msgstr "Neznáma znaÄka Canon Custom Function" - -#: src/nikonmn.cpp:659 -#, fuzzy -msgid "Default Settings" -msgstr "Nastavenia" - -#: src/nikonmn.cpp:660 src/nikonmn.cpp:695 -#, fuzzy -msgid "Quick Adjust" -msgstr "Úpravy tónu" - -#: src/nikonmn.cpp:661 -#, fuzzy -msgid "Full Control" -msgstr "Riadenie farieb" - -#: src/nikonmn.cpp:682 -msgid "Blue-green" -msgstr "" - -#: src/nikonmn.cpp:684 -msgid "Purple-blue" -msgstr "" - -#: src/nikonmn.cpp:685 -msgid "Red-purple" -msgstr "" - -#: src/nikonmn.cpp:692 src/properties.cpp:980 -#, fuzzy -msgid "Name" -msgstr "Prezývka" - -#: src/nikonmn.cpp:693 -#, fuzzy -msgid "Base" -msgstr "Základné URL" - -#: src/nikonmn.cpp:694 -#, fuzzy -msgid "Adjust" -msgstr "DolaÄuje sa" - -#: src/nikonmn.cpp:695 -#, fuzzy -msgid "Quick adjust" -msgstr "Úpravy tónu" - -#: src/nikonmn.cpp:701 -#, fuzzy -msgid "Filter effect" -msgstr "Farebný efekt" - -#: src/nikonmn.cpp:703 -#, fuzzy -msgid "Toning Saturation" -msgstr "SýtosÅ¥" - -#: src/nikonmn.cpp:703 -#, fuzzy -msgid "Toning saturation" -msgstr "SýtosÅ¥" - -#: src/nikonmn.cpp:705 -#, fuzzy -msgid "Unknown Nikon Picture Control Tag" -msgstr "Neznáma znaÄka Canon Picture Info" - -# AF = automatické zaostrenie -#: src/nikonmn.cpp:722 -#, fuzzy -msgid "AF Fine Tune" -msgstr "Použitý bod automatického zaostrenia" - -# AF = automatické zaostrenie -#: src/nikonmn.cpp:722 -#, fuzzy -msgid "AF fine tune" -msgstr "Použitý bod automatického zaostrenia" - -# AF = automatické zaostrenie -#: src/nikonmn.cpp:723 -#, fuzzy -msgid "AF Fine Tune Index" -msgstr "Použitý bod automatického zaostrenia" - -# AF = automatické zaostrenie -#: src/nikonmn.cpp:723 -#, fuzzy -msgid "AF fine tune index" -msgstr "Použitý bod automatického zaostrenia" - -# AF = automatické zaostrenie -#: src/nikonmn.cpp:724 -#, fuzzy -msgid "AF Fine Tune Adjustment" -msgstr "Použitý bod automatického zaostrenia" - -# AF = automatické zaostrenie -#: src/nikonmn.cpp:724 -#, fuzzy -msgid "AF fine tune adjustment" -msgstr "Použitý bod automatického zaostrenia" - -#: src/nikonmn.cpp:726 -#, fuzzy -msgid "Unknown Nikon AF Fine Tune Tag" -msgstr "Neznáma znaÄka Canon Picture Info" - -#: src/nikonmn.cpp:736 -#, fuzzy -msgid "Timezone" -msgstr "odtieň" - -# exif-lightsource-1 -#: src/nikonmn.cpp:737 -#, fuzzy -msgid "Daylight Savings" -msgstr "denné svetlo" - -# exif-lightsource-1 -#: src/nikonmn.cpp:737 -#, fuzzy -msgid "Daylight savings" -msgstr "denné svetlo" - -#: src/nikonmn.cpp:738 -#, fuzzy -msgid "Date Display Format" -msgstr "Formát súboru" - -#: src/nikonmn.cpp:738 -#, fuzzy -msgid "Date display format" -msgstr "Tvar dát" - -#: src/nikonmn.cpp:740 -#, fuzzy -msgid "Unknown Nikon World Time Tag" -msgstr "Neznáma znaÄka Nikon1MakerNote" - -#: src/nikonmn.cpp:751 -#, fuzzy -msgid "Hi 0.3" -msgstr "HV10" - -#: src/nikonmn.cpp:752 -#, fuzzy -msgid "Hi 0.5" -msgstr "HV10" - -#: src/nikonmn.cpp:753 -#, fuzzy -msgid "Hi 0.7" -msgstr "HV10" - -#: src/nikonmn.cpp:754 -#, fuzzy -msgid "Hi 1.0" -msgstr "HV10" - -#: src/nikonmn.cpp:755 -#, fuzzy -msgid "Hi 1.3" -msgstr "HV10" - -#: src/nikonmn.cpp:756 -#, fuzzy -msgid "Hi 1.5" -msgstr "HV10" - -#: src/nikonmn.cpp:757 -#, fuzzy -msgid "Hi 1.7" -msgstr "HV10" - -#: src/nikonmn.cpp:758 -#, fuzzy -msgid "Hi 2.0" -msgstr "HV10" - -#: src/nikonmn.cpp:759 -msgid "Lo 0.3" -msgstr "" - -#: src/nikonmn.cpp:760 -msgid "Lo 0.5" -msgstr "" - -#: src/nikonmn.cpp:761 -msgid "Lo 0.7" -msgstr "" - -#: src/nikonmn.cpp:762 -#, fuzzy -msgid "Lo 1.0" -msgstr "HV10" - -#: src/nikonmn.cpp:768 -#, fuzzy -msgid "ISO Expansion" -msgstr "Výber ISO" - -#: src/nikonmn.cpp:768 -#, fuzzy -msgid "ISO expansion" -msgstr "Výber ISO" - -#: src/nikonmn.cpp:769 -#, fuzzy -msgid "ISO 2" -msgstr "Info o snímke" - -#: src/nikonmn.cpp:770 -#, fuzzy -msgid "ISO Expansion 2" -msgstr "Výber ISO" - -#: src/nikonmn.cpp:770 -#, fuzzy -msgid "ISO expansion 2" -msgstr "Výber ISO" - -#: src/nikonmn.cpp:772 -#, fuzzy -msgid "Unknown Nikon Iso Info Tag" -msgstr "Neznáma znaÄka Canon Picture Info" - -#: src/nikonmn.cpp:782 -#, fuzzy -msgid "Single Area" -msgstr "Jednoduchá oblasÅ¥" - -#: src/nikonmn.cpp:783 -#, fuzzy -msgid "Dynamic Area" -msgstr "Dynamická oblasÅ¥" - -#: src/nikonmn.cpp:784 -#, fuzzy -msgid "Dynamic Area, Closest Subject" -msgstr "Najbližší subjekt" - -#: src/nikonmn.cpp:785 -#, fuzzy -msgid "Group Dynamic" -msgstr "Skupinové dynamické AZ" - -#: src/nikonmn.cpp:786 -#, fuzzy -msgid "Single Area (wide)" -msgstr "Jednoduchá oblasÅ¥" - -#: src/nikonmn.cpp:787 -#, fuzzy -msgid "Dynamic Area (wide)" -msgstr "Dynamická oblasÅ¥ (Å¡iroká)" - -#: src/nikonmn.cpp:795 src/nikonmn.cpp:810 src/pentaxmn.cpp:219 -msgid "Mid-left" -msgstr "v strede vľavo" - -#: src/nikonmn.cpp:796 src/nikonmn.cpp:811 src/pentaxmn.cpp:221 -msgid "Mid-right" -msgstr "v strede vpravo" - -#: src/nikonmn.cpp:801 src/nikonmn.cpp:816 -#, fuzzy -msgid "Far Left" -msgstr "OrezaÅ¥ vľavo" - -#: src/nikonmn.cpp:802 src/nikonmn.cpp:817 -#, fuzzy -msgid "Far Right" -msgstr "OrezaÅ¥ vpravo" - -#: src/nikonmn.cpp:822 src/nikonmn.cpp:845 -#, fuzzy -msgid "AF area mode" -msgstr "Režim AZ" - -# AF = automatické zaostrenie -#: src/nikonmn.cpp:823 src/olympusmn.cpp:1008 src/pentaxmn.cpp:902 -msgid "AF point" -msgstr "bod automatického zaostrenia" - -# AF = automatické zaostrenie -#: src/nikonmn.cpp:824 -#, fuzzy -msgid "AF Points In Focus" -msgstr "Použité body automatického zaostrenia" - -# AF = automatické zaostrenie -#: src/nikonmn.cpp:824 -#, fuzzy -msgid "AF points in focus" -msgstr "Použité body automatického zaostrenia" - -#: src/nikonmn.cpp:826 -#, fuzzy -msgid "Unknown Nikon Auto Focus Tag" -msgstr "Neznáma znaÄka Canon Custom Function" - -#: src/nikonmn.cpp:837 -msgid "On (51-point)" -msgstr "" - -#: src/nikonmn.cpp:838 -msgid "On (11-point)" -msgstr "" - -#: src/nikonmn.cpp:844 -#, fuzzy -msgid "Contrast Detect AF" -msgstr "Nastavenie kontrastu" - -#: src/nikonmn.cpp:844 -#, fuzzy -msgid "Contrast detect AF" -msgstr "Nastavenie kontrastu" - -#: src/nikonmn.cpp:846 -#, fuzzy -msgid "Phase Detect AF" -msgstr "Nepodarilo sa preÄítaÅ¥" - -#: src/nikonmn.cpp:846 -#, fuzzy -msgid "Phase detect AF" -msgstr "Nepodarilo sa preÄítaÅ¥" - -# AF = automatické zaostrenie -#: src/nikonmn.cpp:847 -#, fuzzy -msgid "Primary AF Point" -msgstr "Bod automatického zaostrenia" - -# AF = automatické zaostrenie -#: src/nikonmn.cpp:847 -#, fuzzy -msgid "Primary AF point" -msgstr "bod automatického zaostrenia" - -#: src/nikonmn.cpp:849 -#, fuzzy -msgid "AF Image Width" -msgstr "Šírka obrázka" - -#: src/nikonmn.cpp:849 -#, fuzzy -msgid "AF image width" -msgstr "Šírka obrázka" - -#: src/nikonmn.cpp:850 -#, fuzzy -msgid "AF Image Height" -msgstr "Výška obrázka" - -#: src/nikonmn.cpp:850 -#, fuzzy -msgid "AF image height" -msgstr "Dĺžka obrázka" - -# AF = automatické zaostrenie -#: src/nikonmn.cpp:851 -#, fuzzy -msgid "AF Area X Position" -msgstr "poloha automatického zaostrenia" - -# AF = automatické zaostrenie -#: src/nikonmn.cpp:851 -#, fuzzy -msgid "AF area x position" -msgstr "poloha automatického zaostrenia" - -# AF = automatické zaostrenie -#: src/nikonmn.cpp:852 -#, fuzzy -msgid "AF Area Y Position" -msgstr "poloha automatického zaostrenia" - -# AF = automatické zaostrenie -#: src/nikonmn.cpp:852 -#, fuzzy -msgid "AF area y position" -msgstr "poloha automatického zaostrenia" - -#: src/nikonmn.cpp:853 -#, fuzzy -msgid "AF Area Width" -msgstr "Režim AZ" - -#: src/nikonmn.cpp:853 -#, fuzzy -msgid "AF area width" -msgstr "Režim AZ" - -#: src/nikonmn.cpp:854 -#, fuzzy -msgid "AF Area Height" -msgstr "Režim AZ" - -#: src/nikonmn.cpp:854 -#, fuzzy -msgid "AF area height" -msgstr "OrezaÅ¥ vpravo" - -#: src/nikonmn.cpp:855 -#, fuzzy -msgid "Contrast Detect AF In Focus" -msgstr "Nastavenie kontrastu" - -#: src/nikonmn.cpp:855 -#, fuzzy -msgid "Contrast detect AF in focus" -msgstr "Nastavenie kontrastu" - -#: src/nikonmn.cpp:857 -#, fuzzy -msgid "Unknown Nikon Auto Focus 2 Tag" -msgstr "Neznáma znaÄka Canon Custom Function" - -#: src/nikonmn.cpp:868 -#, fuzzy -msgid "Directory Number" -msgstr "Poradové Äíslo" - -#: src/nikonmn.cpp:868 -#, fuzzy -msgid "Directory number" -msgstr "Poradové Äíslo" - -#: src/nikonmn.cpp:871 -#, fuzzy -msgid "Unknown Nikon File Info Tag" -msgstr "Neznáma znaÄka Canon Picture Info" - -#: src/nikonmn.cpp:882 src/pentaxmn.cpp:542 -msgid "Multiple Exposure" -msgstr "Viacnásobná expozícia" - -#: src/nikonmn.cpp:883 -#, fuzzy -msgid "Image Overlay" -msgstr "Tón obrázka" - -#: src/nikonmn.cpp:889 -#, fuzzy -msgid "Multi Exposure Mode" -msgstr "Režim expozície" - -#: src/nikonmn.cpp:889 -#, fuzzy -msgid "Multi exposure mode" -msgstr "Viacnásobná expozícia" - -#: src/nikonmn.cpp:890 -#, fuzzy -msgid "Multi Exposure Shots" -msgstr "Viacnásobná expozícia" - -#: src/nikonmn.cpp:890 -#, fuzzy -msgid "Multi exposure shots" -msgstr "Viacnásobná expozícia" - -#: src/nikonmn.cpp:891 -#, fuzzy -msgid "Multi Exposure Auto Gain" -msgstr "Viacnásobná expozícia" - -#: src/nikonmn.cpp:891 -#, fuzzy -msgid "Multi exposure auto gain" -msgstr "Viacnásobná expozícia" - -#: src/nikonmn.cpp:893 src/nikonmn.cpp:1013 src/nikonmn.cpp:1033 -#: src/nikonmn.cpp:1053 -#, fuzzy -msgid "Unknown Nikon Multi Exposure Tag" -msgstr "Neznáma znaÄka Canon Custom Function" - -#: src/nikonmn.cpp:905 src/olympusmn.cpp:143 -msgid "Internal" -msgstr "Vnútorný" - -#: src/nikonmn.cpp:911 -msgid "1.01 (SB-800 or Metz 58 AF-1)" -msgstr "" - -#: src/nikonmn.cpp:912 -msgid "1.03 (SB-800)" -msgstr "" - -#: src/nikonmn.cpp:913 -msgid "2.01 (SB-800)" -msgstr "" - -#: src/nikonmn.cpp:914 -msgid "2.04 (SB-600)" -msgstr "" - -#: src/nikonmn.cpp:915 -msgid "2.05 (SB-600)" -msgstr "" - -#: src/nikonmn.cpp:916 -msgid "3.01 (SU-800 Remote Commander)" -msgstr "" - -#: src/nikonmn.cpp:917 -msgid "4.01 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:918 -msgid "4.02 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:919 -msgid "4.04 (SB-400)" -msgstr "" - -#: src/nikonmn.cpp:920 -msgid "5.01 (SB-900)" -msgstr "" - -#: src/nikonmn.cpp:921 -msgid "5.02 (SB-900)" -msgstr "" - -#: src/nikonmn.cpp:927 -msgid "0.1 m" -msgstr "" - -#: src/nikonmn.cpp:928 -msgid "0.2 m" -msgstr "" - -#: src/nikonmn.cpp:929 -msgid "0.3 m" -msgstr "" - -#: src/nikonmn.cpp:930 -msgid "0.4 m" -msgstr "" - -#: src/nikonmn.cpp:931 -msgid "0.5 m" -msgstr "" - -#: src/nikonmn.cpp:932 -msgid "0.6 m" -msgstr "" - -#: src/nikonmn.cpp:933 -msgid "0.7 m" -msgstr "" - -#: src/nikonmn.cpp:934 -msgid "0.8 m" -msgstr "" - -#: src/nikonmn.cpp:935 -msgid "0.9 m" -msgstr "" - -#: src/nikonmn.cpp:936 -msgid "1.0 m" -msgstr "" - -#: src/nikonmn.cpp:937 -msgid "1.1 m" -msgstr "" - -#: src/nikonmn.cpp:938 -msgid "1.3 m" -msgstr "" - -#: src/nikonmn.cpp:939 -msgid "1.4 m" -msgstr "" - -#: src/nikonmn.cpp:940 -msgid "1.6 m" -msgstr "" - -#: src/nikonmn.cpp:941 -msgid "1.8 m" -msgstr "" - -#: src/nikonmn.cpp:942 -msgid "2.0 m" -msgstr "" - -#: src/nikonmn.cpp:943 -msgid "2.2 m" -msgstr "" - -#: src/nikonmn.cpp:944 -msgid "2.5 m" -msgstr "" - -#: src/nikonmn.cpp:945 -msgid "2.8 m" -msgstr "" - -#: src/nikonmn.cpp:946 -msgid "3.2 m" -msgstr "" - -#: src/nikonmn.cpp:947 -msgid "3.6 m" -msgstr "" - -#: src/nikonmn.cpp:948 -msgid "4.0 m" -msgstr "" - -#: src/nikonmn.cpp:949 -msgid "4.5 m" -msgstr "" - -#: src/nikonmn.cpp:950 -msgid "5.0 m" -msgstr "" - -#: src/nikonmn.cpp:951 -msgid "5.6 m" -msgstr "" - -#: src/nikonmn.cpp:952 -msgid "6.3 m" -msgstr "" - -#: src/nikonmn.cpp:953 -msgid "7.1 m" -msgstr "" - -#: src/nikonmn.cpp:954 -msgid "8.0 m" -msgstr "" - -#: src/nikonmn.cpp:955 -msgid "9.0 m" -msgstr "" - -#: src/nikonmn.cpp:956 -#, fuzzy -msgid "10.0 m" -msgstr "&" - -#: src/nikonmn.cpp:957 -msgid "11.0 m" -msgstr "" - -#: src/nikonmn.cpp:958 -msgid "13.0 m" -msgstr "" - -#: src/nikonmn.cpp:959 -msgid "14.0 m" -msgstr "" - -#: src/nikonmn.cpp:960 -#, fuzzy -msgid "16.0 m" -msgstr "160" - -#: src/nikonmn.cpp:961 -msgid "18.0 m" -msgstr "" - -#: src/nikonmn.cpp:962 -#, fuzzy -msgid "20.0 m" -msgstr "&" - -#: src/nikonmn.cpp:969 -#, fuzzy -msgid "iTTL-BL" -msgstr "TTL" - -#: src/nikonmn.cpp:970 -#, fuzzy -msgid "iTTL" -msgstr "TTL" - -#: src/nikonmn.cpp:971 -#, fuzzy -msgid "Auto Aperture" -msgstr "Clona" - -#: src/nikonmn.cpp:973 -msgid "GN (distance priority)" -msgstr "" - -#: src/nikonmn.cpp:975 src/nikonmn.cpp:976 -#, fuzzy -msgid "Repeating Flash" -msgstr "RoÄník vydania" - -#: src/nikonmn.cpp:982 -#, fuzzy -msgid "Bounce Flash" -msgstr "Bez blesku" - -#: src/nikonmn.cpp:983 -msgid "Wide Flash Adapter" -msgstr "" - -#: src/nikonmn.cpp:989 -msgid "FL-GL1" -msgstr "" - -#: src/nikonmn.cpp:990 -msgid "FL-GL2" -msgstr "" - -#: src/nikonmn.cpp:991 -msgid "TN-A1" -msgstr "" - -#: src/nikonmn.cpp:992 -msgid "TN-A2" -msgstr "" - -#: src/nikonmn.cpp:996 -#, fuzzy -msgid "Amber" -msgstr "Äíslo F" - -#: src/nikonmn.cpp:1002 src/nikonmn.cpp:1024 src/nikonmn.cpp:1044 -#, fuzzy -msgid "Flash Source" -msgstr "Zdroj súboru" - -#: src/nikonmn.cpp:1002 src/nikonmn.cpp:1024 src/nikonmn.cpp:1044 -#, fuzzy -msgid "Flash source" -msgstr "Zdroj súboru" - -#: src/nikonmn.cpp:1003 src/nikonmn.cpp:1025 -#, fuzzy -msgid "0x0005" -msgstr "1000" - -#: src/nikonmn.cpp:1004 src/nikonmn.cpp:1026 src/nikonmn.cpp:1045 -#, fuzzy -msgid "External Flash Firmware" -msgstr "Priblíženie externého blesku" - -#: src/nikonmn.cpp:1004 src/nikonmn.cpp:1026 src/nikonmn.cpp:1045 -#, fuzzy -msgid "External flash firmware" -msgstr "Režim externého blesku" - -#: src/nikonmn.cpp:1005 src/nikonmn.cpp:1027 src/nikonmn.cpp:1046 -#, fuzzy -msgid "External Flash Flags" -msgstr "externý blesk" - -#: src/nikonmn.cpp:1005 src/nikonmn.cpp:1027 src/nikonmn.cpp:1046 -#, fuzzy -msgid "External flash flags" -msgstr "externý blesk" - -# FUZZY exif-focallength -#: src/nikonmn.cpp:1006 src/nikonmn.cpp:1028 src/nikonmn.cpp:1047 -#, fuzzy -msgid "Flash Focal Length" -msgstr "Maximálna ohnisková vzdialenosÅ¥" - -# FUZZY exif-focallength -#: src/nikonmn.cpp:1006 src/nikonmn.cpp:1028 src/nikonmn.cpp:1047 -#, fuzzy -msgid "Flash focal length" -msgstr "Maximálna ohnisková vzdialenosÅ¥" - -#: src/nikonmn.cpp:1007 src/nikonmn.cpp:1029 src/nikonmn.cpp:1048 -msgid "Repeating Flash Rate" -msgstr "" - -#: src/nikonmn.cpp:1007 src/nikonmn.cpp:1029 src/nikonmn.cpp:1048 -#, fuzzy -msgid "Repeating flash rate" -msgstr "Súbor sa premenúva na" - -#: src/nikonmn.cpp:1008 src/nikonmn.cpp:1030 src/nikonmn.cpp:1049 -msgid "Repeating Flash Count" -msgstr "" - -#: src/nikonmn.cpp:1008 src/nikonmn.cpp:1030 src/nikonmn.cpp:1049 -#, fuzzy -msgid "Repeating flash count" -msgstr "RuÄné riadenie blesku" - -#: src/nikonmn.cpp:1009 src/nikonmn.cpp:1031 src/nikonmn.cpp:1050 -#, fuzzy -msgid "Flash GN Distance" -msgstr "VzdialenosÅ¥ zaostrenia" - -#: src/nikonmn.cpp:1009 src/nikonmn.cpp:1031 src/nikonmn.cpp:1050 -#, fuzzy -msgid "Flash GN distance" -msgstr "VzdialenosÅ¥ zaostrenia" - -#: src/nikonmn.cpp:1010 -msgid "Flash Group A Control Mode" -msgstr "" - -#: src/nikonmn.cpp:1010 -msgid "Flash group a control mode" -msgstr "" - -#: src/nikonmn.cpp:1011 -msgid "Flash Group B Control Mode" -msgstr "" - -#: src/nikonmn.cpp:1011 -msgid "Flash group b control mode" -msgstr "" - -#: src/nikonmn.cpp:1051 -#, fuzzy -msgid "Flash Color Filter" -msgstr "Farebný filter" - -#: src/nikonmn.cpp:1051 -#, fuzzy -msgid "Flash color filter" -msgstr "Farebný filter" - -#: src/nikonmn.cpp:1064 src/nikonmn.cpp:1077 src/nikonmn.cpp:1137 -#: src/nikonmn.cpp:1197 src/nikonmn.cpp:1233 src/pentaxmn.cpp:1042 -#: src/pentaxmn.cpp:1043 -msgid "Shutter count" -msgstr "Hodnota uzávierky" - -#: src/nikonmn.cpp:1066 -#, fuzzy -msgid "Unknown Nikon Shot Info D80 Tag" -msgstr "Neznáma znaÄka Canon Picture Info" - -#: src/nikonmn.cpp:1078 src/sonymn.cpp:408 src/sonymn.cpp:409 -#, fuzzy -msgid "Flash Level" -msgstr "Zariadenie blesku" - -#: src/nikonmn.cpp:1078 -#, fuzzy -msgid "Flash level" -msgstr "Zariadenie blesku" - -#: src/nikonmn.cpp:1080 -#, fuzzy -msgid "Unknown Nikon Shot Info D40 Tag" -msgstr "Neznáma znaÄka Canon Picture Info" - -#: src/nikonmn.cpp:1090 src/nikonmn.cpp:1150 -#, fuzzy -msgid "0" -msgstr "50" - -#: src/nikonmn.cpp:1091 src/nikonmn.cpp:1159 -#, fuzzy -msgid "+1" -msgstr "160" - -#: src/nikonmn.cpp:1092 src/nikonmn.cpp:1160 -#, fuzzy -msgid "+2" -msgstr "&" - -#: src/nikonmn.cpp:1093 src/nikonmn.cpp:1161 -msgid "+4" -msgstr "" - -#: src/nikonmn.cpp:1094 src/nikonmn.cpp:1162 -msgid "+8" -msgstr "" - -#: src/nikonmn.cpp:1095 src/nikonmn.cpp:1163 -#, fuzzy -msgid "+16" -msgstr "160" - -#: src/nikonmn.cpp:1096 src/nikonmn.cpp:1164 -#, fuzzy -msgid "-16" -msgstr "160" - -#: src/nikonmn.cpp:1097 src/nikonmn.cpp:1165 -msgid "-8" -msgstr "" - -#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1166 -msgid "-4" -msgstr "" - -#: src/nikonmn.cpp:1099 src/nikonmn.cpp:1167 -#, fuzzy -msgid "-2" -msgstr "&" - -#: src/nikonmn.cpp:1100 src/nikonmn.cpp:1168 -#, fuzzy -msgid "-1" -msgstr "160" - -#: src/nikonmn.cpp:1101 src/nikonmn.cpp:1169 -#, fuzzy -msgid "+17" -msgstr "160" - -#: src/nikonmn.cpp:1102 src/nikonmn.cpp:1170 -#, fuzzy -msgid "-17" -msgstr "160" - -#: src/nikonmn.cpp:1103 src/nikonmn.cpp:1171 -msgid "+9" -msgstr "" - -#: src/nikonmn.cpp:1104 src/nikonmn.cpp:1172 -#, fuzzy -msgid "+18" -msgstr "160" - -#: src/nikonmn.cpp:1105 src/nikonmn.cpp:1173 -#, fuzzy -msgid "-18" -msgstr "160" - -#: src/nikonmn.cpp:1106 src/nikonmn.cpp:1174 -msgid "-9" -msgstr "" - -#: src/nikonmn.cpp:1107 src/nikonmn.cpp:1175 -#, fuzzy -msgid "+19" -msgstr "160" - -#: src/nikonmn.cpp:1108 src/nikonmn.cpp:1176 -#, fuzzy -msgid "-19" -msgstr "160" - -#: src/nikonmn.cpp:1109 src/nikonmn.cpp:1177 -#, fuzzy -msgid "+5" -msgstr "125" - -#: src/nikonmn.cpp:1110 src/nikonmn.cpp:1178 -#, fuzzy -msgid "+10" -msgstr "10s" - -#: src/nikonmn.cpp:1111 src/nikonmn.cpp:1179 -#, fuzzy -msgid "+20" -msgstr "&" - -#: src/nikonmn.cpp:1112 src/nikonmn.cpp:1180 -#, fuzzy -msgid "-20" -msgstr "&" - -#: src/nikonmn.cpp:1113 src/nikonmn.cpp:1181 -#, fuzzy -msgid "-10" -msgstr "10s" - -#: src/nikonmn.cpp:1114 src/nikonmn.cpp:1182 -#, fuzzy -msgid "-5" -msgstr "125" - -#: src/nikonmn.cpp:1115 src/nikonmn.cpp:1183 -#, fuzzy -msgid "+11" -msgstr "160" - -#: src/nikonmn.cpp:1116 src/nikonmn.cpp:1184 -#, fuzzy -msgid "-11" -msgstr "160" - -#: src/nikonmn.cpp:1117 src/nikonmn.cpp:1185 -msgid "+3" -msgstr "" - -#: src/nikonmn.cpp:1118 src/nikonmn.cpp:1186 -#, fuzzy -msgid "+6" -msgstr "160" - -#: src/nikonmn.cpp:1119 src/nikonmn.cpp:1187 -#, fuzzy -msgid "+12" -msgstr "125" - -#: src/nikonmn.cpp:1120 src/nikonmn.cpp:1188 -#, fuzzy -msgid "-12" -msgstr "125" - -#: src/nikonmn.cpp:1121 src/nikonmn.cpp:1189 -#, fuzzy -msgid "-6" -msgstr "160" - -#: src/nikonmn.cpp:1122 src/nikonmn.cpp:1190 -msgid "-3" -msgstr "" - -#: src/nikonmn.cpp:1123 src/nikonmn.cpp:1151 -#, fuzzy -msgid "+13" -msgstr "160" - -#: src/nikonmn.cpp:1124 src/nikonmn.cpp:1152 -#, fuzzy -msgid "-13" -msgstr "160" - -#: src/nikonmn.cpp:1125 src/nikonmn.cpp:1153 -msgid "+7" -msgstr "" - -#: src/nikonmn.cpp:1126 src/nikonmn.cpp:1154 -#, fuzzy -msgid "+14" -msgstr "160" - -#: src/nikonmn.cpp:1127 src/nikonmn.cpp:1155 -#, fuzzy -msgid "-14" -msgstr "160" - -#: src/nikonmn.cpp:1128 src/nikonmn.cpp:1156 -msgid "-7" -msgstr "" - -#: src/nikonmn.cpp:1129 src/nikonmn.cpp:1157 -#, fuzzy -msgid "+15" -msgstr "125" - -#: src/nikonmn.cpp:1130 src/nikonmn.cpp:1158 -#, fuzzy -msgid "-15" -msgstr "125" - -# AF = automatické zaostrenie -#: src/nikonmn.cpp:1138 src/nikonmn.cpp:1198 -#, fuzzy -msgid "AF Fine Tune Adj" -msgstr "Použitý bod automatického zaostrenia" - -# AF = automatické zaostrenie -#: src/nikonmn.cpp:1138 src/nikonmn.cpp:1198 -#, fuzzy -msgid "AF fine tune adj" -msgstr "Použitý bod automatického zaostrenia" - -#: src/nikonmn.cpp:1140 -#, fuzzy -msgid "Unknown Nikon Shot Info D300 (a) Tag" -msgstr "Neznáma znaÄka Canon Picture Info" - -#: src/nikonmn.cpp:1200 -#, fuzzy -msgid "Unknown Nikon Shot Info D300 (b) Tag" -msgstr "Neznáma znaÄka Canon Picture Info" - -#: src/nikonmn.cpp:1213 -#, fuzzy -msgid "On (3)" -msgstr "zapnutý" - -#: src/nikonmn.cpp:1226 -#, fuzzy -msgid "Shutter Count 1" -msgstr "PoÄítadlo uzávierky" - -#: src/nikonmn.cpp:1226 -#, fuzzy -msgid "Shutter count 1" -msgstr "Hodnota uzávierky" - -#: src/nikonmn.cpp:1229 -#, fuzzy -msgid "Vibration Reduction 1" -msgstr "Bez korekcie" - -#: src/nikonmn.cpp:1229 -#, fuzzy -msgid "Vibration reduction 1" -msgstr "Bez korekcie" - -#: src/nikonmn.cpp:1230 -#, fuzzy -msgid "Shutter Count 2" -msgstr "PoÄítadlo uzávierky" - -#: src/nikonmn.cpp:1230 -#, fuzzy -msgid "Shutter count 2" -msgstr "Hodnota uzávierky" - -#: src/nikonmn.cpp:1231 -#, fuzzy -msgid "Vibration Reduction 2" -msgstr "Bez korekcie" - -#: src/nikonmn.cpp:1231 -#, fuzzy -msgid "Vibration reduction 2" -msgstr "Bez korekcie" - -#: src/nikonmn.cpp:1235 -#, fuzzy -msgid "Unknown Nikon Shot Info Tag" -msgstr "Neznáma znaÄka Canon Picture Info" - -#: src/nikonmn.cpp:1246 -#, fuzzy -msgid "WB RBGG Levels" -msgstr "WB_RGGBLevelsShade" - -#: src/nikonmn.cpp:1246 -#, fuzzy -msgid "WB RBGG levels" -msgstr "Úroveň Äiernej" - -#: src/nikonmn.cpp:1248 -#, fuzzy -msgid "Unknown Nikon Color Balance 1 Tag" -msgstr "Vyváženie farieb 1" - -#: src/nikonmn.cpp:1259 src/nikonmn.cpp:1272 src/nikonmn.cpp:1285 -#, fuzzy -msgid "WB RGGB Levels" -msgstr "WB_RGGBLevelsShade" - -#: src/nikonmn.cpp:1259 src/nikonmn.cpp:1272 src/nikonmn.cpp:1285 -#, fuzzy -msgid "WB RGGB levels" -msgstr "Úroveň Äiernej" - -#: src/nikonmn.cpp:1261 -#, fuzzy -msgid "Unknown Nikon Color Balance 2 Tag" -msgstr "Vyváženie farieb 2" - -#: src/nikonmn.cpp:1274 -#, fuzzy -msgid "Unknown Nikon Color Balance 2a Tag" -msgstr "Vyváženie farieb 2" - -#: src/nikonmn.cpp:1287 -#, fuzzy -msgid "Unknown Nikon Color Balance 2b Tag" -msgstr "Vyváženie farieb 2" - -#: src/nikonmn.cpp:1298 -#, fuzzy -msgid "WB RGBG Levels" -msgstr "WB_RGGBLevelsShade" - -#: src/nikonmn.cpp:1298 -#, fuzzy -msgid "WB RGBG levels" -msgstr "Úroveň Äiernej" - -#: src/nikonmn.cpp:1300 -#, fuzzy -msgid "Unknown Nikon Color Balance 3 Tag" -msgstr "Neznáma znaÄka Canon Panorama" - -#: src/nikonmn.cpp:1311 -#, fuzzy -msgid "WB GRBG Levels" -msgstr "WB_RGGBLevelsShade" - -#: src/nikonmn.cpp:1311 -#, fuzzy -msgid "WB GRBG levels" -msgstr "Úroveň Äiernej" - -#: src/nikonmn.cpp:1313 -#, fuzzy -msgid "Unknown Nikon Color Balance 4 Tag" -msgstr "Neznáma znaÄka Canon Panorama" - -#: src/nikonmn.cpp:1324 src/nikonmn.cpp:1348 src/nikonmn.cpp:1373 -#, fuzzy -msgid "Lens ID Number" -msgstr "Sériové Äíslo" - -#: src/nikonmn.cpp:1324 src/nikonmn.cpp:1348 src/nikonmn.cpp:1373 -#, fuzzy -msgid "Lens ID number" -msgstr "Sériové Äíslo fotoaparátu" - -# TODO: check -#: src/nikonmn.cpp:1325 src/nikonmn.cpp:1349 src/nikonmn.cpp:1374 -#, fuzzy -msgid "Lens F-Stops" -msgstr "F stops Å¡oÅ¡oviek" - -# TODO: check -#: src/nikonmn.cpp:1325 src/nikonmn.cpp:1349 src/nikonmn.cpp:1374 -#, fuzzy -msgid "Lens F-stops" -msgstr "F stops Å¡oÅ¡oviek" - -# FUZZY exif-focallength -#: src/nikonmn.cpp:1326 src/nikonmn.cpp:1350 src/nikonmn.cpp:1375 -#: src/olympusmn.cpp:751 -#, fuzzy -msgid "Min Focal Length" -msgstr "Minimálna ohnisková vzdialenosÅ¥" - -# FUZZY exif-focallength -#: src/nikonmn.cpp:1326 src/nikonmn.cpp:1350 src/nikonmn.cpp:1375 -#: src/olympusmn.cpp:751 -#, fuzzy -msgid "Min focal length" -msgstr "Minimálna ohnisková vzdialenosÅ¥" - -# FUZZY exif-focallength -#: src/nikonmn.cpp:1327 src/nikonmn.cpp:1351 src/nikonmn.cpp:1376 -#: src/olympusmn.cpp:752 -#, fuzzy -msgid "Max Focal Length" -msgstr "Maximálna ohnisková vzdialenosÅ¥" - -# FUZZY exif-focallength -#: src/nikonmn.cpp:1327 src/nikonmn.cpp:1351 src/nikonmn.cpp:1376 -#: src/olympusmn.cpp:752 -#, fuzzy -msgid "Max focal length" -msgstr "Maximálna ohnisková vzdialenosÅ¥" - -#: src/nikonmn.cpp:1328 src/nikonmn.cpp:1352 src/nikonmn.cpp:1377 -#: src/olympusmn.cpp:749 -#, fuzzy -msgid "Max Aperture At Min Focal" -msgstr "maximálna clona pri minimálnom ohnisku" - -#: src/nikonmn.cpp:1328 src/nikonmn.cpp:1352 src/olympusmn.cpp:749 -#, fuzzy -msgid "Max aperture at min focal" -msgstr "maximálna clona pri minimálnom ohnisku" - -#: src/nikonmn.cpp:1329 src/nikonmn.cpp:1353 src/nikonmn.cpp:1378 -#: src/olympusmn.cpp:750 -#, fuzzy -msgid "Max Aperture At Max Focal" -msgstr "maximálna clona pri maximálnom ohnisku" - -#: src/nikonmn.cpp:1329 src/nikonmn.cpp:1353 src/olympusmn.cpp:750 -#, fuzzy -msgid "Max aperture at max focal" -msgstr "maximálna clona pri maximálnom ohnisku" - -#: src/nikonmn.cpp:1330 src/nikonmn.cpp:1354 src/nikonmn.cpp:1379 -#, fuzzy -msgid "MCU Version" -msgstr "Verzia ARM" - -#: src/nikonmn.cpp:1330 src/nikonmn.cpp:1354 src/nikonmn.cpp:1379 -#, fuzzy -msgid "MCU version" -msgstr "Verzia ARM" - -#: src/nikonmn.cpp:1332 -#, fuzzy -msgid "Unknown Nikon Lens Data 1 Tag" -msgstr "Neznáma znaÄka Nikon1MakerNote" - -#: src/nikonmn.cpp:1343 src/nikonmn.cpp:1368 -#, fuzzy -msgid "Exit Pupil Position" -msgstr "Poloha prepínaÄa DEC" - -#: src/nikonmn.cpp:1343 src/nikonmn.cpp:1368 -#, fuzzy -msgid "Exit pupil position" -msgstr "poloha prepínaÄa DEC" - -#: src/nikonmn.cpp:1344 src/nikonmn.cpp:1369 -#, fuzzy -msgid "AF Aperture" -msgstr "Clona" - -#: src/nikonmn.cpp:1344 src/nikonmn.cpp:1369 -#, fuzzy -msgid "AF aperture" -msgstr "Clona" - -#: src/nikonmn.cpp:1355 src/nikonmn.cpp:1380 -#, fuzzy -msgid "Effective Max Aperture" -msgstr "Max. clona" - -#: src/nikonmn.cpp:1355 src/nikonmn.cpp:1380 -#, fuzzy -msgid "Effective max aperture" -msgstr "Max. clona" - -#: src/nikonmn.cpp:1357 -#, fuzzy -msgid "Unknown Nikon Lens Data 2 Tag" -msgstr "Neznáma znaÄka Nikon1MakerNote" - -#: src/nikonmn.cpp:1377 -#, fuzzy -msgid "Max aperture at min focal length" -msgstr "maximálna clona pri minimálnom ohnisku" - -#: src/nikonmn.cpp:1378 -#, fuzzy -msgid "Max aperture at max focal length" -msgstr "maximálna clona pri maximálnom ohnisku" - -#: src/nikonmn.cpp:1382 -#, fuzzy -msgid "Unknown Nikon Lens Data 3 Tag" -msgstr "Neznáma znaÄka Nikon1MakerNote" - -#: src/nikonmn.cpp:1562 -msgid "Closest subject" -msgstr "Najbližší subjekt" - -#: src/nikonmn.cpp:1563 -msgid "Group dynamic-AF" -msgstr "Skupinové dynamické AZ" - -#: src/nikonmn.cpp:1586 src/tags.cpp:240 -msgid "none" -msgstr "žiadne" - -#: src/nikonmn.cpp:1596 -msgid "used" -msgstr "použité" - -# AF = automatické zaostrenie -#: src/nikonmn.cpp:1622 -#, fuzzy -msgid "All 11 Points" -msgstr "body automatického zaostrenia" - -#: src/nikonmn.cpp:1637 src/nikonmn.cpp:1638 src/pentaxmn.cpp:533 -#: src/pentaxmn.cpp:537 -msgid "Single-frame" -msgstr "jediný záber" - -#: src/olympusmn.cpp:71 -msgid "Standard Quality (SQ)" -msgstr "Å tandardná kvalita (SQ)" - -#: src/olympusmn.cpp:72 -msgid "High Quality (HQ)" -msgstr "Vysoká kvalita (HQ)" - -#: src/olympusmn.cpp:73 -msgid "Super High Quality (SHQ)" -msgstr "Super vysoká kvalita (SHQ)" - -#: src/olympusmn.cpp:88 -msgid "On (preset)" -msgstr "Zapnuté (predvolené)" - -#: src/olympusmn.cpp:95 src/pentaxmn.cpp:474 -msgid "Sport" -msgstr "Å port" - -# exif-scenecapturetype-1 -#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 -#, fuzzy -msgid "Landscape+Portrait" -msgstr "krajinka" - -#: src/olympusmn.cpp:100 -#, fuzzy -msgid "Self Portrait" -msgstr "Portrét" - -#: src/olympusmn.cpp:102 -#, fuzzy -msgid "2 in 1" -msgstr "zapnutý" - -#: src/olympusmn.cpp:105 -#, fuzzy -msgid "Night+Portrait" -msgstr "NoÄný portrét" - -#: src/olympusmn.cpp:111 src/panasonicmn.cpp:120 src/pentaxmn.cpp:486 -msgid "Food" -msgstr "jedlo" - -#: src/olympusmn.cpp:112 -#, fuzzy -msgid "Documents" -msgstr "ID dokumentu" - -#: src/olympusmn.cpp:114 -#, fuzzy -msgid "Shoot & Select" -msgstr "fotoefekt" - -#: src/olympusmn.cpp:115 -#, fuzzy -msgid "Beach & Snow" -msgstr "surfovanie & sneh" - -#: src/olympusmn.cpp:116 -#, fuzzy -msgid "Self Portrait+Timer" -msgstr "Samospúšť" - -#: src/olympusmn.cpp:117 -#, fuzzy -msgid "Candle" -msgstr "svetlo svieÄky" - -#: src/olympusmn.cpp:118 -#, fuzzy -msgid "Available Light" -msgstr "nedostupné" - -#: src/olympusmn.cpp:119 -msgid "Behind Glass" -msgstr "" - -#: src/olympusmn.cpp:120 -#, fuzzy -msgid "My Mode" -msgstr "Jednoduchý režim" - -#: src/olympusmn.cpp:121 src/panasonicmn.cpp:131 src/pentaxmn.cpp:483 -#: src/sonymn.cpp:127 -msgid "Pet" -msgstr "Zvieratko" - -#: src/olympusmn.cpp:122 -#, fuzzy -msgid "Underwater Wide1" -msgstr "pod vodou" - -#: src/olympusmn.cpp:123 -#, fuzzy -msgid "Underwater Macro" -msgstr "pod vodou" - -#: src/olympusmn.cpp:124 -#, fuzzy -msgid "Shoot & Select1" -msgstr "fotoefekt" - -#: src/olympusmn.cpp:125 -#, fuzzy -msgid "Shoot & Select2" -msgstr "fotoefekt" - -#: src/olympusmn.cpp:127 -#, fuzzy -msgid "Digital Image Stabilization" -msgstr "Stabilizácia obrazu" - -#: src/olympusmn.cpp:128 -#, fuzzy -msgid "Auction" -msgstr "Auto" - -#: src/olympusmn.cpp:131 -#, fuzzy -msgid "Underwater Wide2" -msgstr "pod vodou" - -#: src/olympusmn.cpp:133 -msgid "Children" -msgstr "" - -#: src/olympusmn.cpp:135 -#, fuzzy -msgid "Nature Macro" -msgstr "Prirodzená farba" - -#: src/olympusmn.cpp:136 -#, fuzzy -msgid "Underwater Snapshot" -msgstr "pod vodou" - -#: src/olympusmn.cpp:137 -#, fuzzy -msgid "Shooting Guide" -msgstr "Režim fotenia" - -#: src/olympusmn.cpp:145 -msgid "Internal + External" -msgstr "Interný + externý" - -#: src/olympusmn.cpp:176 -msgid "Interlaced" -msgstr "Prekladaný" - -#: src/olympusmn.cpp:177 -msgid "Progressive" -msgstr "Progresívne" - -#: src/olympusmn.cpp:188 -#, fuzzy -msgid "Thumbnail Image" -msgstr "Náhľad" - -#: src/olympusmn.cpp:189 -#, fuzzy -msgid "Thumbnail image" -msgstr "Náhľad" - -#: src/olympusmn.cpp:192 src/olympusmn.cpp:744 src/olympusmn.cpp:1027 -#, fuzzy -msgid "Body Firmware Version" -msgstr "Verzia firmvéru" - -#: src/olympusmn.cpp:193 src/olympusmn.cpp:744 src/olympusmn.cpp:1027 -#, fuzzy -msgid "Body firmware version" -msgstr "Verzia firmvéru" - -#: src/olympusmn.cpp:195 -msgid "Special Mode" -msgstr "Å peciálny režim" - -#: src/olympusmn.cpp:196 -msgid "Picture taking mode" -msgstr "Režim fotenia" - -#: src/olympusmn.cpp:204 -msgid "Black & White Mode" -msgstr "ÄŒiernobiely režim" - -#: src/olympusmn.cpp:205 -msgid "Black and white mode" -msgstr "ÄŒiernobiely režim" - -# exif-digitalzoomratio -#: src/olympusmn.cpp:208 -msgid "Digital zoom ratio" -msgstr "Pomer digitálneho priblíženia" - -#: src/olympusmn.cpp:210 src/olympusmn.cpp:743 -msgid "Focal Plane Diagonal" -msgstr "Diagonála ohniskovej roviny" - -#: src/olympusmn.cpp:211 src/olympusmn.cpp:743 -msgid "Focal plane diagonal" -msgstr "Diagonála ohniskovej roviny" - -#: src/olympusmn.cpp:213 -msgid "Lens Distortion Parameters" -msgstr "Parametre zakrivenia Å¡oÅ¡oviek" - -#: src/olympusmn.cpp:214 -msgid "Lens distortion parameters" -msgstr "Parametre zakrivenia Å¡oÅ¡oviek" - -#: src/olympusmn.cpp:216 src/olympusmn.cpp:740 -#, fuzzy -msgid "Camera Type" -msgstr "ZmaÄka fotoaparátu" - -#: src/olympusmn.cpp:217 src/olympusmn.cpp:740 -#, fuzzy -msgid "Camera type" -msgstr "ZmaÄka fotoaparátu" - -#: src/olympusmn.cpp:220 -msgid "ASCII format data such as [PictureInfo]" -msgstr "údaje vo formáte ASCII ako [PictureInfo]" - -#: src/olympusmn.cpp:222 -msgid "Camera ID" -msgstr "ID fotoaparátu" - -#: src/olympusmn.cpp:223 -msgid "Camera ID data" -msgstr "ID údaje fotoaparátu" - -# exif-software -#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:519 -#: src/sigmamn.cpp:119 src/sigmamn.cpp:120 src/tags.cpp:538 -msgid "Software" -msgstr "softvér" - -#: src/olympusmn.cpp:234 src/panasonicmn.cpp:348 src/sonymn.cpp:314 -#, fuzzy -msgid "Preview Image" -msgstr "ZobraziÅ¥ vložený obrázok" - -#: src/olympusmn.cpp:235 src/panasonicmn.cpp:348 -#, fuzzy -msgid "Preview image" -msgstr "ZobraziÅ¥ vložený obrázok" - -#: src/olympusmn.cpp:237 -msgid "Pre Capture Frames" -msgstr "PredzachytávaÅ¥ rámce" - -#: src/olympusmn.cpp:238 -msgid "Pre-capture frames" -msgstr "PredzachytávaÅ¥ rámce" - -#: src/olympusmn.cpp:240 -#, fuzzy -msgid "White Board" -msgstr "Vyváženie bielej" - -#: src/olympusmn.cpp:241 -#, fuzzy -msgid "White board" -msgstr "Vyváženie bielej" - -#: src/olympusmn.cpp:243 -msgid "One Touch WB" -msgstr "VB jedným dotykom" - -#: src/olympusmn.cpp:244 -msgid "One touch white balance" -msgstr "Vyváženie bielej jedným dotykom" - -#: src/olympusmn.cpp:246 src/olympusmn.cpp:678 -#, fuzzy -msgid "White Balance Bracket" -msgstr "Viacnásobné snímky so zmenou vyváženia bielej" - -#: src/olympusmn.cpp:247 src/olympusmn.cpp:678 -#, fuzzy -msgid "White balance bracket" -msgstr "Viacnásobné snímky so zmenou vyváženia bielej" - -#: src/olympusmn.cpp:255 src/sigmamn.cpp:116 src/sigmamn.cpp:117 -msgid "Firmware" -msgstr "Firmvér" - -#: src/olympusmn.cpp:256 -#, fuzzy -msgid "Firmwarer" -msgstr "Firmvér" - -#: src/olympusmn.cpp:261 -msgid "Data Dump 1" -msgstr "Výpis dát 1" - -#: src/olympusmn.cpp:262 -msgid "Various camera settings 1" -msgstr "Rôzne nastavenia fotoaparátu 1" - -#: src/olympusmn.cpp:264 -msgid "Data Dump 2" -msgstr "Výpis dát 2" - -#: src/olympusmn.cpp:265 -msgid "Various camera settings 2" -msgstr "Rôzne nastavenia fotoaparátu 2" - -# exif-shutterspeedvalue -#: src/olympusmn.cpp:268 -msgid "Shutter speed value" -msgstr "Hodnota rýchlosti uzávierky" - -#: src/olympusmn.cpp:271 -msgid "ISO speed value" -msgstr "Hodnota ISO rýchlosti" - -#: src/olympusmn.cpp:274 -msgid "Aperture value" -msgstr "Hodnota clony" - -#: src/olympusmn.cpp:277 -msgid "Brightness value" -msgstr "Hodnota jasu" - -#: src/olympusmn.cpp:285 -msgid "Bracket" -msgstr "Viacnásobné snímky" - -#: src/olympusmn.cpp:286 -msgid "Exposure compensation value" -msgstr "Hodnota kompenzácie expozície" - -#: src/olympusmn.cpp:288 src/olympusmn.cpp:1015 -msgid "Sensor Temperature" -msgstr "Teplota snímaÄa" - -#: src/olympusmn.cpp:289 src/olympusmn.cpp:1015 -msgid "Sensor temperature" -msgstr "Teplota snímaÄa" - -#: src/olympusmn.cpp:291 -msgid "Lens Temperature" -msgstr "Teplota Å¡oÅ¡oviek" - -#: src/olympusmn.cpp:292 -msgid "Lens temperature" -msgstr "Teplota Å¡oÅ¡oviek" - -#: src/olympusmn.cpp:294 -#, fuzzy -msgid "Light Condition" -msgstr "Silné nasýtenie" - -#: src/olympusmn.cpp:295 -#, fuzzy -msgid "Light condition" -msgstr "Silné nasýtenie" - -#: src/olympusmn.cpp:297 -#, fuzzy -msgid "Focus Range" -msgstr "Rozsah zaostrenia" - -#: src/olympusmn.cpp:298 -#, fuzzy -msgid "Focus range" -msgstr "Rozsah zaostrenia" - -#: src/olympusmn.cpp:306 -msgid "Zoom" -msgstr "Priblíženie" - -#: src/olympusmn.cpp:307 src/olympusmn.cpp:1003 -msgid "Zoom step count" -msgstr "PoÄet krokov priblíženia" - -#: src/olympusmn.cpp:309 -msgid "Macro Focus" -msgstr "Priblíženie makro" - -#: src/olympusmn.cpp:310 -msgid "Macro focus step count" -msgstr "PoÄet krokov makro priblíženia" - -#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 -msgid "Sharpness Factor" -msgstr "Koeficient ostrosti" - -#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 -msgid "Sharpness factor" -msgstr "Koeficient ostrosti" - -#: src/olympusmn.cpp:315 -msgid "Flash Charge Level" -msgstr "Úroveň nabitia blesku" - -#: src/olympusmn.cpp:316 -msgid "Flash charge level" -msgstr "Úroveň nabitia blesku" - -#: src/olympusmn.cpp:318 src/olympusmn.cpp:962 -msgid "Color Matrix" -msgstr "Matica farieb" - -#: src/olympusmn.cpp:319 src/olympusmn.cpp:962 -msgid "Color matrix" -msgstr "Matica farieb" - -#: src/olympusmn.cpp:321 -msgid "BlackLevel" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:322 src/olympusmn.cpp:967 -msgid "Black level" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:331 -msgid "White balance mode" -msgstr "Režim vyváženia bielej" - -#: src/olympusmn.cpp:336 src/panasonicmn.cpp:342 -msgid "Red Balance" -msgstr "Vyváženie Äervenej" - -#: src/olympusmn.cpp:337 src/pentaxmn.cpp:938 -msgid "Red balance" -msgstr "Vyváženie Äervenej" - -#: src/olympusmn.cpp:339 src/panasonicmn.cpp:343 -msgid "Blue Balance" -msgstr "Vyváženie modrej" - -#: src/olympusmn.cpp:340 src/panasonicmn.cpp:343 src/pentaxmn.cpp:935 -msgid "Blue balance" -msgstr "Vyváženie modrej" - -#: src/olympusmn.cpp:342 -#, fuzzy -msgid "Color Matrix Number" -msgstr "Matica farieb 1" - -#: src/olympusmn.cpp:343 -#, fuzzy -msgid "Color matrix mumber" -msgstr "Matica farieb 2" - -#: src/olympusmn.cpp:345 -msgid "Serial Number 2" -msgstr "Sériové Äíslo 1" - -#: src/olympusmn.cpp:346 -msgid "Serial number 2" -msgstr "Sériové Äíslo 2" - -#: src/olympusmn.cpp:373 src/olympusmn.cpp:671 src/pentaxmn.cpp:1028 -#: src/pentaxmn.cpp:1029 -msgid "Flash exposure compensation" -msgstr "Kompenzácia expozície blesku" - -#: src/olympusmn.cpp:381 src/olympusmn.cpp:1011 -msgid "External Flash Bounce" -msgstr "Odrazenie externého blesku" - -#: src/olympusmn.cpp:382 src/olympusmn.cpp:1011 -msgid "External flash bounce" -msgstr "Odrazenie externého blesku" - -#: src/olympusmn.cpp:384 src/olympusmn.cpp:1012 -msgid "External Flash Zoom" -msgstr "Priblíženie externého blesku" - -#: src/olympusmn.cpp:385 src/olympusmn.cpp:1012 -msgid "External flash zoom" -msgstr "Priblíženie externého blesku" - -#: src/olympusmn.cpp:387 -msgid "External Flash Mode" -msgstr "Režim externého blesku" - -#: src/olympusmn.cpp:388 -msgid "External flash mode" -msgstr "Režim externého blesku" - -#: src/olympusmn.cpp:396 -msgid "Color Control" -msgstr "Riadenie farieb" - -#: src/olympusmn.cpp:397 -msgid "Color control" -msgstr "Riadenie farieb" - -#: src/olympusmn.cpp:399 -msgid "ValidBits" -msgstr "Platné bity" - -#: src/olympusmn.cpp:400 src/olympusmn.cpp:969 -msgid "Valid bits" -msgstr "Platné bity" - -#: src/olympusmn.cpp:402 -#, fuzzy -msgid "CoringFilter" -msgstr "Farebný filter" - -#: src/olympusmn.cpp:403 src/olympusmn.cpp:965 src/olympusmn.cpp:1067 -#, fuzzy -msgid "Coring filter" -msgstr "Farebný filter" - -#: src/olympusmn.cpp:423 -msgid "Compression Ratio" -msgstr "Kompresný pomer" - -#: src/olympusmn.cpp:424 -msgid "Compression ratio" -msgstr "Kompresný pomer" - -#: src/olympusmn.cpp:427 -msgid "Preview image embedded" -msgstr "ZobraziÅ¥ vložený obrázok" - -#: src/olympusmn.cpp:430 -msgid "Offset of the preview image" -msgstr "Posunutie náhľadu" - -#: src/olympusmn.cpp:433 -msgid "Size of the preview image" -msgstr "VeľkosÅ¥ náhľadu" - -#: src/olympusmn.cpp:435 -msgid "CCD Scan Mode" -msgstr "Režim CCD snímania" - -#: src/olympusmn.cpp:436 -msgid "CCD scan mode" -msgstr "Režim CCD snímania" - -#: src/olympusmn.cpp:441 -msgid "Infinity Lens Step" -msgstr "NekoneÄný krok Å¡oÅ¡oviek" - -#: src/olympusmn.cpp:442 -msgid "Infinity lens step" -msgstr "NekoneÄný krok Å¡oÅ¡oviek" - -#: src/olympusmn.cpp:444 -msgid "Near Lens Step" -msgstr "Blízky krok Å¡oÅ¡oviek" - -#: src/olympusmn.cpp:445 -msgid "Near lens step" -msgstr "Blízky krok Å¡oÅ¡oviek" - -#: src/olympusmn.cpp:447 -msgid "Equipment Info" -msgstr "Info o vybavení" - -#: src/olympusmn.cpp:448 -#, fuzzy -msgid "Camera equipment sub-IFD" -msgstr "Informácie o vybavení fotoaparátu" - -#: src/olympusmn.cpp:451 -#, fuzzy -msgid "Camera Settings sub-IFD" -msgstr "Nastavenie fotoaparátu (7D)" - -#: src/olympusmn.cpp:453 -msgid "Raw Development" -msgstr "Nespracovaný vývoj" - -#: src/olympusmn.cpp:454 -#, fuzzy -msgid "Raw development sub-IFD" -msgstr "Nespracovaný vývoj" - -#: src/olympusmn.cpp:456 -#, fuzzy -msgid "Raw Development 2" -msgstr "Nespracovaný vývoj" - -#: src/olympusmn.cpp:457 -#, fuzzy -msgid "Raw development 2 sub-IFD" -msgstr "Nespracovaný vývoj" - -#: src/olympusmn.cpp:460 -#, fuzzy -msgid "Image processing sub-IFD" -msgstr "Spracovanie obrazu" - -#: src/olympusmn.cpp:462 -msgid "Focus Info" -msgstr "Info o zaostrení" - -#: src/olympusmn.cpp:463 -#, fuzzy -msgid "Focus sub-IFD" -msgstr "Info o zaostrení" - -#: src/olympusmn.cpp:465 -msgid "Raw Info" -msgstr "Nespracované info" - -#: src/olympusmn.cpp:466 -#, fuzzy -msgid "Raw sub-IFD" -msgstr "Sub-IFD" - -#: src/olympusmn.cpp:470 -msgid "Unknown OlympusMakerNote tag" -msgstr "Neznáma znaÄka OlympusMakerNote" - -#: src/olympusmn.cpp:486 -#, fuzzy -msgid "Program-shift" -msgstr "Posunutie programu" - -#: src/olympusmn.cpp:491 -#, fuzzy -msgid "Center-weighted average" -msgstr "Stredovo vážený priemer" - -#: src/olympusmn.cpp:493 -msgid "ESP" -msgstr "" - -# exif-meteringmode-5 -#: src/olympusmn.cpp:494 -#, fuzzy -msgid "Pattern+AF" -msgstr "vzorka" - -#: src/olympusmn.cpp:495 -#, fuzzy -msgid "Spot+Highlight control" -msgstr "Riadenie farieb" - -#: src/olympusmn.cpp:496 -#, fuzzy -msgid "Spot+Shadow control" -msgstr "Riadenie farieb" - -#: src/olympusmn.cpp:508 src/olympusmn.cpp:1369 -#, fuzzy -msgid "Single AF" -msgstr "Jednotlivý" - -#: src/olympusmn.cpp:509 src/olympusmn.cpp:1370 -msgid "Sequential shooting AF" -msgstr "" - -#: src/olympusmn.cpp:511 src/olympusmn.cpp:1372 src/sonymn.cpp:187 -#, fuzzy -msgid "Multi AF" -msgstr "Viacbodový" - -# AF = automatické zaostrenie -#: src/olympusmn.cpp:517 -#, fuzzy -msgid "AF Not Used" -msgstr "Použitý bod automatického zaostrenia" - -# AF = automatické zaostrenie -#: src/olympusmn.cpp:518 -#, fuzzy -msgid "AF Used" -msgstr "Použitý bod automatického zaostrenia" - -#: src/olympusmn.cpp:523 -#, fuzzy -msgid "Not Ready" -msgstr "Nepoužité" - -#: src/olympusmn.cpp:524 -#, fuzzy -msgid "Ready" -msgstr "ÄŒervené oÄi" - -#: src/olympusmn.cpp:531 -#, fuzzy -msgid "Fill-in" -msgstr "Názov súboru" - -#: src/olympusmn.cpp:533 -#, fuzzy -msgid "Slow-sync" -msgstr "Pomalá synchronizácia" - -# exif-lightsource-2 -#: src/olympusmn.cpp:534 -#, fuzzy -msgid "Forced On" -msgstr "fluorescencia" - -#: src/olympusmn.cpp:535 -msgid "2nd Curtain" -msgstr "" - -#: src/olympusmn.cpp:541 -msgid "Channel 1, Low" -msgstr "" - -#: src/olympusmn.cpp:542 -msgid "Channel 2, Low" -msgstr "" - -#: src/olympusmn.cpp:543 -msgid "Channel 3, Low" -msgstr "" - -#: src/olympusmn.cpp:544 -msgid "Channel 4, Low" -msgstr "" - -#: src/olympusmn.cpp:545 -msgid "Channel 1, Mid" -msgstr "" - -#: src/olympusmn.cpp:546 -msgid "Channel 2, Mid" -msgstr "" - -#: src/olympusmn.cpp:547 -msgid "Channel 3, Mid" -msgstr "" - -#: src/olympusmn.cpp:548 -msgid "Channel 4, Mid" -msgstr "" - -#: src/olympusmn.cpp:549 -msgid "Channel 1, High" -msgstr "" - -#: src/olympusmn.cpp:550 -msgid "Channel 2, High" -msgstr "" - -#: src/olympusmn.cpp:551 -msgid "Channel 3, High" -msgstr "" - -#: src/olympusmn.cpp:552 -msgid "Channel 4, High" -msgstr "" - -# exif-lightsource-9 -#: src/olympusmn.cpp:566 -#, fuzzy -msgid "7500K (Fine Weather with Shade)" -msgstr "pekné poÄasie" - -#: src/olympusmn.cpp:567 -#, fuzzy -msgid "6000K (Cloudy)" -msgstr "Auto (oblaÄno)" - -# exif-lightsource-9 -#: src/olympusmn.cpp:568 -#, fuzzy -msgid "5300K (Fine Weather)" -msgstr "pekné poÄasie" - -#: src/olympusmn.cpp:569 -msgid "3000K (Tungsten light)" -msgstr "" - -#: src/olympusmn.cpp:570 src/olympusmn.cpp:574 -msgid "3600K (Tungsten light-like)" -msgstr "" - -# exif-lightsource-12 -#: src/olympusmn.cpp:571 -#, fuzzy -msgid "6600K (Daylight fluorescent)" -msgstr "denné svetlo, fluorescenÄné" - -#: src/olympusmn.cpp:572 -#, fuzzy -msgid "4500K (Neutral white fluorescent)" -msgstr "Auto (biely deň, fluorescenÄné)" - -#: src/olympusmn.cpp:573 -#, fuzzy -msgid "4000K (Cool white fluorescent)" -msgstr "chladné biele fluorescenÄné (W 3900 - 4500K)" - -#: src/olympusmn.cpp:575 -#, fuzzy -msgid "Custom WB 1" -msgstr "Vlastný 1" - -#: src/olympusmn.cpp:576 -#, fuzzy -msgid "Custom WB 2" -msgstr "Vlastný 2" - -#: src/olympusmn.cpp:577 -#, fuzzy -msgid "Custom WB 3" -msgstr "vlastné 3" - -#: src/olympusmn.cpp:578 -#, fuzzy -msgid "Custom WB 4" -msgstr "Vlastný 1" - -#: src/olympusmn.cpp:579 -#, fuzzy -msgid "Custom WB 5400K" -msgstr "Vlastný 1" - -#: src/olympusmn.cpp:580 -#, fuzzy -msgid "Custom WB 2900K" -msgstr "Vlastný 2" - -#: src/olympusmn.cpp:581 -#, fuzzy -msgid "Custom WB 8000K" -msgstr "Vlastný 1" - -#: src/olympusmn.cpp:587 -#, fuzzy -msgid "CM1 (Red Enhance)" -msgstr "Vyváženie modrej" - -#: src/olympusmn.cpp:588 -#, fuzzy -msgid "CM2 (Green Enhance)" -msgstr "Vyváženie modrej" - -#: src/olympusmn.cpp:589 -#, fuzzy -msgid "CM3 (Blue Enhance)" -msgstr "Vyváženie modrej" - -#: src/olympusmn.cpp:590 -msgid "CM4 (Skin Tones)" -msgstr "" - -#: src/olympusmn.cpp:597 src/olympusmn.cpp:776 src/olympusmn.cpp:841 -msgid "Pro Photo RGB" -msgstr "" - -#: src/olympusmn.cpp:603 src/olympusmn.cpp:697 -#, fuzzy -msgid "Noise Filter" -msgstr "Filter" - -#: src/olympusmn.cpp:604 -#, fuzzy -msgid "Noise Filter (ISO Boost)" -msgstr "Filter" - -#: src/olympusmn.cpp:612 src/olympusmn.cpp:854 -#, fuzzy -msgid "Muted" -msgstr "použité" - -#: src/olympusmn.cpp:614 src/olympusmn.cpp:855 -#, fuzzy -msgid "Monotone" -msgstr "Farebný tón" - -#: src/olympusmn.cpp:640 -msgid "SQ" -msgstr "" - -#: src/olympusmn.cpp:641 -msgid "HQ" -msgstr "" - -#: src/olympusmn.cpp:642 -msgid "SHQ" -msgstr "" - -#: src/olympusmn.cpp:649 src/panasonicmn.cpp:86 -msgid "On, Mode 1" -msgstr "zapnutý, režim 1" - -#: src/olympusmn.cpp:650 src/panasonicmn.cpp:88 -msgid "On, Mode 2" -msgstr "zapnutý, režim 2" - -#: src/olympusmn.cpp:651 -#, fuzzy -msgid "On, Mode 3" -msgstr "zapnutý, režim 1" - -#: src/olympusmn.cpp:655 -#, fuzzy -msgid "Camera Settings Version" -msgstr "Informácie o nastaveniach fotoaparátu" - -#: src/olympusmn.cpp:655 -#, fuzzy -msgid "Camera settings version" -msgstr "Informácie o nastaveniach fotoaparátu" - -#: src/olympusmn.cpp:656 -#, fuzzy -msgid "PreviewImage Valid" -msgstr "ZobraziÅ¥ vložený obrázok" - -#: src/olympusmn.cpp:656 -#, fuzzy -msgid "Preview image valid" -msgstr "ZobraziÅ¥ vložený obrázok" - -#: src/olympusmn.cpp:657 -#, fuzzy -msgid "PreviewImage Start" -msgstr "Dáta náhľadu" - -#: src/olympusmn.cpp:657 -#, fuzzy -msgid "Preview image start" -msgstr "ZobraziÅ¥ vložený obrázok" - -#: src/olympusmn.cpp:658 -#, fuzzy -msgid "PreviewImage Length" -msgstr "Dĺžka obrázka" - -#: src/olympusmn.cpp:658 -#, fuzzy -msgid "Preview image length" -msgstr "ZobraziÅ¥ vložený obrázok" - -#: src/olympusmn.cpp:660 -#, fuzzy -msgid "Auto exposure lock" -msgstr "Automatická expozícia" - -#: src/olympusmn.cpp:662 -#, fuzzy -msgid "Exposure Shift" -msgstr "ÄŒas expozície" - -#: src/olympusmn.cpp:662 -#, fuzzy -msgid "Exposure shift" -msgstr "ÄŒas expozície" - -#: src/olympusmn.cpp:665 -#, fuzzy -msgid "Focus Process" -msgstr "režim zaostrenia" - -#: src/olympusmn.cpp:665 -#, fuzzy -msgid "Focus process" -msgstr "Vlastné spracovanie" - -#: src/olympusmn.cpp:666 -#, fuzzy -msgid "AF Search" -msgstr "Moje vyhľadávania" - -#: src/olympusmn.cpp:666 -#, fuzzy -msgid "AF search" -msgstr "Moje vyhľadávania" - -#: src/olympusmn.cpp:667 -#, fuzzy -msgid "AF Areas" -msgstr "rozsah zaostrenia" - -#: src/olympusmn.cpp:667 -#, fuzzy -msgid "AF areas" -msgstr "Rozsah zaostrenia" - -#: src/olympusmn.cpp:668 -#, fuzzy -msgid "AFPointSelected" -msgstr "Nebol vybraný bod automatického zaostrenia" - -# AF = automatické zaostrenie -#: src/olympusmn.cpp:669 -#, fuzzy -msgid "AF Fine Tune Adjust" -msgstr "Použitý bod automatického zaostrenia" - -# AF = automatické zaostrenie -#: src/olympusmn.cpp:669 -#, fuzzy -msgid "AF fine tune adjust" -msgstr "Použitý bod automatického zaostrenia" - -#: src/olympusmn.cpp:672 -#, fuzzy -msgid "Flash Remote Control" -msgstr "Diaľkové ovládanie?" - -#: src/olympusmn.cpp:672 -#, fuzzy -msgid "Flash remote control" -msgstr "Diaľkové ovládanie?" - -#: src/olympusmn.cpp:673 -#, fuzzy -msgid "Flash Control Mode" -msgstr "Režim blesku" - -#: src/olympusmn.cpp:673 -#, fuzzy -msgid "Flash control mode" -msgstr "Režim blesku" - -#: src/olympusmn.cpp:674 -#, fuzzy -msgid "Flash Intensity" -msgstr "Aktivita blesku" - -#: src/olympusmn.cpp:674 -#, fuzzy -msgid "Flash intensity" -msgstr "Aktivita blesku" - -#: src/olympusmn.cpp:675 -#, fuzzy -msgid "Manual Flash Strength" -msgstr "Sila blesku" - -#: src/olympusmn.cpp:675 -#, fuzzy -msgid "Manual flash strength" -msgstr "RuÄné riadenie blesku" - -#: src/olympusmn.cpp:676 src/sonymn.cpp:429 -#, fuzzy -msgid "White Balance 2" -msgstr "Vyváženie bielej" - -#: src/olympusmn.cpp:676 src/sonymn.cpp:430 -#, fuzzy -msgid "White balance 2" -msgstr "Vyváženie bielej" - -#: src/olympusmn.cpp:677 -#, fuzzy -msgid "White Balance Temperature" -msgstr "Tabuľka vyváženia bielej" - -#: src/olympusmn.cpp:677 -#, fuzzy -msgid "White balance temperature" -msgstr "Tabuľka vyváženia bielej" - -#: src/olympusmn.cpp:679 -#, fuzzy -msgid "Custom Saturation" -msgstr "Modrá sýtosÅ¥" - -#: src/olympusmn.cpp:679 -#, fuzzy -msgid "Custom saturation" -msgstr "Slabé nasýtenie" - -#: src/olympusmn.cpp:680 -#, fuzzy -msgid "Modified Saturation" -msgstr "ÄŒervená sýtosÅ¥" - -#: src/olympusmn.cpp:680 -#, fuzzy -msgid "Modified saturation" -msgstr "ÄŒervená sýtosÅ¥" - -#: src/olympusmn.cpp:681 src/olympusmn.cpp:1080 -#, fuzzy -msgid "Contrast Setting" -msgstr "Nastavenie kontrastu" - -#: src/olympusmn.cpp:682 src/olympusmn.cpp:1081 -#, fuzzy -msgid "Sharpness Setting" -msgstr "Nastavenie zaostrenia" - -#: src/olympusmn.cpp:686 src/olympusmn.cpp:975 -#, fuzzy -msgid "Distortion Correction" -msgstr "Bez korekcie" - -#: src/olympusmn.cpp:686 src/olympusmn.cpp:975 -#, fuzzy -msgid "Distortion correction" -msgstr "Bez korekcie" - -#: src/olympusmn.cpp:687 src/olympusmn.cpp:976 -#, fuzzy -msgid "Shading Compensation" -msgstr "Kompenzácia tónu" - -#: src/olympusmn.cpp:687 src/olympusmn.cpp:976 -#, fuzzy -msgid "Shading compensation" -msgstr "Kompenzácia tónu" - -#: src/olympusmn.cpp:688 -#, fuzzy -msgid "Compression Factor" -msgstr "Kompresný pomer" - -#: src/olympusmn.cpp:688 -#, fuzzy -msgid "Compression factor" -msgstr "Kompresný pomer" - -#: src/olympusmn.cpp:689 src/olympusmn.cpp:897 -#, fuzzy -msgid "Gradation" -msgstr "Trvanie" - -#: src/olympusmn.cpp:690 src/olympusmn.cpp:891 src/pentaxmn.cpp:988 -#: src/pentaxmn.cpp:989 -msgid "Picture mode" -msgstr "Režim obrázka" - -#: src/olympusmn.cpp:691 -#, fuzzy -msgid "Picture Mode Saturation" -msgstr "Nastavenie režimu obrázka" - -#: src/olympusmn.cpp:691 src/olympusmn.cpp:892 -#, fuzzy -msgid "Picture mode saturation" -msgstr "Nastavenie režimu obrázka" - -#: src/olympusmn.cpp:692 -#, fuzzy -msgid "Picture Mode Hue" -msgstr "Režim obrázka" - -#: src/olympusmn.cpp:692 -#, fuzzy -msgid "Picture mode hue" -msgstr "Režim obrázka" - -#: src/olympusmn.cpp:693 -#, fuzzy -msgid "Picture Mode Contrast" -msgstr "Režim obrázka" - -#: src/olympusmn.cpp:693 src/olympusmn.cpp:893 -#, fuzzy -msgid "Picture mode contrast" -msgstr "Nastavenie režimu obrázka" - -#: src/olympusmn.cpp:694 -#, fuzzy -msgid "Picture Mode Sharpness" -msgstr "Režim obrázka" - -#: src/olympusmn.cpp:694 src/olympusmn.cpp:894 -#, fuzzy -msgid "Picture mode sharpness" -msgstr "Nastavenie režimu obrázka" - -#: src/olympusmn.cpp:695 -#, fuzzy -msgid "Picture Mode BW Filter" -msgstr "Režim obrázka" - -#: src/olympusmn.cpp:695 -#, fuzzy -msgid "Picture mode BW filter" -msgstr "Režim obrázka" - -#: src/olympusmn.cpp:696 -#, fuzzy -msgid "Picture Mode Tone" -msgstr "Režim obrázka" - -#: src/olympusmn.cpp:696 -#, fuzzy -msgid "Picture mode tone" -msgstr "Režim obrázka" - -#: src/olympusmn.cpp:697 -#, fuzzy -msgid "Noise filter" -msgstr "Farebný filter" - -#: src/olympusmn.cpp:698 -#, fuzzy -msgid "Art Filter" -msgstr "Filter" - -#: src/olympusmn.cpp:698 -#, fuzzy -msgid "Art filter" -msgstr "Farebný filter" - -#: src/olympusmn.cpp:699 -#, fuzzy -msgid "Magic Filter" -msgstr "Digitálny filter" - -#: src/olympusmn.cpp:699 -#, fuzzy -msgid "Magic filter" -msgstr "Digitálny filter" - -#: src/olympusmn.cpp:701 -#, fuzzy -msgid "Panorama Mode" -msgstr "panoráma" - -#: src/olympusmn.cpp:701 -#, fuzzy -msgid "Panorama mode" -msgstr "Rámec panorámy" - -#: src/olympusmn.cpp:702 -#, fuzzy -msgid "Image Quality 2" -msgstr "Kvalita obrázka" - -#: src/olympusmn.cpp:702 -#, fuzzy -msgid "Image quality 2" -msgstr "Kvalita obrázka" - -# exif-compression-1 -#: src/olympusmn.cpp:704 -#, fuzzy -msgid "Manometer Pressure" -msgstr "nekomprimovaný" - -# exif-compression-1 -#: src/olympusmn.cpp:704 -#, fuzzy -msgid "Manometer pressure" -msgstr "nekomprimovaný" - -# exif-compression-1 -#: src/olympusmn.cpp:705 -#, fuzzy -msgid "Manometer Reading" -msgstr "nekomprimovaný" - -# exif-compression-1 -#: src/olympusmn.cpp:705 -#, fuzzy -msgid "Manometer reading" -msgstr "nekomprimovaný" - -#: src/olympusmn.cpp:706 -#, fuzzy -msgid "Extended WB Detect" -msgstr "Režim scény" - -#: src/olympusmn.cpp:706 -#, fuzzy -msgid "Extended WB detect" -msgstr "Režim scény" - -#: src/olympusmn.cpp:707 -msgid "Level Gauge Roll" -msgstr "" - -#: src/olympusmn.cpp:707 -msgid "Level gauge roll" -msgstr "" - -#: src/olympusmn.cpp:708 -msgid "Level Gauge Pitch" -msgstr "" - -#: src/olympusmn.cpp:708 -msgid "Level gauge pitch" -msgstr "" - -#: src/olympusmn.cpp:710 -msgid "Unknown OlympusCs tag" -msgstr "Neznáma znaÄka OlympusCs" - -#: src/olympusmn.cpp:721 -msgid "Simple E-System" -msgstr "" - -#: src/olympusmn.cpp:722 -msgid "E-System" -msgstr "" - -#: src/olympusmn.cpp:739 -#, fuzzy -msgid "Equipment Version" -msgstr "Info o vybavení" - -#: src/olympusmn.cpp:739 -#, fuzzy -msgid "Equipment version" -msgstr "Info o vybavení" - -#: src/olympusmn.cpp:741 -msgid "Serial number" -msgstr "Sériové Äíslo" - -#: src/olympusmn.cpp:746 src/panasonicmn.cpp:277 src/tags.cpp:1854 -#, fuzzy -msgid "Lens Serial Number" -msgstr "Sériové Äíslo" - -#: src/olympusmn.cpp:746 src/panasonicmn.cpp:277 -#, fuzzy -msgid "Lens serial number" -msgstr "Sériové Äíslo fotoaparátu" - -#: src/olympusmn.cpp:747 src/properties.cpp:388 src/tags.cpp:1850 -msgid "Lens Model" -msgstr "Model Å¡oÅ¡oviek" - -#: src/olympusmn.cpp:747 -#, fuzzy -msgid "Lens model" -msgstr "Model Å¡oÅ¡oviek" - -#: src/olympusmn.cpp:748 -#, fuzzy -msgid "Lens Firmware Version" -msgstr "Verzia firmvéru" - -#: src/olympusmn.cpp:748 -#, fuzzy -msgid "Lens firmware version" -msgstr "Verzia firmvéru" - -#: src/olympusmn.cpp:753 -#, fuzzy -msgid "Max Aperture At Current Focal" -msgstr "maximálna clona pri minimálnom ohnisku" - -#: src/olympusmn.cpp:753 -#, fuzzy -msgid "Max aperture at current focal" -msgstr "maximálna clona pri minimálnom ohnisku" - -#: src/olympusmn.cpp:754 -#, fuzzy -msgid "Lens Properties" -msgstr "Vlastnosti digiKam" - -#: src/olympusmn.cpp:754 -#, fuzzy -msgid "Lens properties" -msgstr "Teplota Å¡oÅ¡oviek" - -#: src/olympusmn.cpp:755 -#, fuzzy -msgid "Extender" -msgstr "externý" - -#: src/olympusmn.cpp:756 -#, fuzzy -msgid "Extender Serial Number" -msgstr "Sériové Äíslo fotoaparátu" - -#: src/olympusmn.cpp:756 -#, fuzzy -msgid "Extender serial number" -msgstr "Sériové Äíslo fotoaparátu" - -#: src/olympusmn.cpp:757 -#, fuzzy -msgid "Extender Model" -msgstr "Režim scény" - -#: src/olympusmn.cpp:757 -#, fuzzy -msgid "Extender model" -msgstr "Režim scény" - -#: src/olympusmn.cpp:758 -#, fuzzy -msgid "Extender Firmware Version" -msgstr "Verzia firmvéru" - -#: src/olympusmn.cpp:758 -#, fuzzy -msgid "Extender firmwareversion" -msgstr "Verzia formvéru" - -#: src/olympusmn.cpp:760 src/properties.cpp:384 -#, fuzzy -msgid "Flash Model" -msgstr "Režim blesku" - -#: src/olympusmn.cpp:760 -#, fuzzy -msgid "Flash model" -msgstr "Režim blesku" - -#: src/olympusmn.cpp:761 -#, fuzzy -msgid "Flash Firmware Version" -msgstr "Verzia firmvéru" - -#: src/olympusmn.cpp:761 -#, fuzzy -msgid "Flash firmware version" -msgstr "Verzia firmvéru" - -#: src/olympusmn.cpp:762 -#, fuzzy -msgid "FlashSerialNumber" -msgstr "SériovéČíslo" - -#: src/olympusmn.cpp:764 -msgid "Unknown OlympusEq tag" -msgstr "Neznáma znaÄka OlympusEq" - -#: src/olympusmn.cpp:781 src/olympusmn.cpp:846 -#, fuzzy -msgid "High Speed" -msgstr "Orezanie vysoká rýchlosÅ¥" - -#: src/olympusmn.cpp:782 src/olympusmn.cpp:803 src/olympusmn.cpp:847 -#, fuzzy -msgid "High Function" -msgstr "Silné nasýtenie" - -#: src/olympusmn.cpp:783 -#, fuzzy -msgid "Advanced High Speed" -msgstr "Orezanie vysoká rýchlosÅ¥" - -# exif-transferfunction -#: src/olympusmn.cpp:784 -#, fuzzy -msgid "Advanced High Function" -msgstr "prenosová funkcia" - -#: src/olympusmn.cpp:789 -msgid "Original" -msgstr "Originál" - -# exif-scenecapturetype-1 -#: src/olympusmn.cpp:790 -#, fuzzy -msgid "Edited (Landscape)" -msgstr "krajinka" - -#: src/olympusmn.cpp:791 src/olympusmn.cpp:792 -#, fuzzy -msgid "Edited (Portrait)" -msgstr "NoÄný portrét" - -#: src/olympusmn.cpp:797 -#, fuzzy -msgid "WB Color Temp" -msgstr "Farebný tón" - -# AF = automatické zaostrenie -#: src/olympusmn.cpp:798 -#, fuzzy -msgid "WB Gray Point" -msgstr "Bod automatického zaostrenia" - -#: src/olympusmn.cpp:808 -#, fuzzy -msgid "Raw Development Version" -msgstr "Nespracovaný vývoj" - -#: src/olympusmn.cpp:808 -#, fuzzy -msgid "Raw development version" -msgstr "Informácie o nespracovanom vývoji" - -#: src/olympusmn.cpp:809 src/olympusmn.cpp:879 src/properties.cpp:558 -#: src/tags.cpp:822 -msgid "Exposure Bias Value" -msgstr "Hodnota skreslenia expozície" - -#: src/olympusmn.cpp:809 src/olympusmn.cpp:879 -#, fuzzy -msgid "Exposure bias value" -msgstr "Hodnota skreslenia expozície" - -#: src/olympusmn.cpp:810 src/olympusmn.cpp:881 -#, fuzzy -msgid "White Balance Value" -msgstr "Tabuľka vyváženia bielej" - -#: src/olympusmn.cpp:810 src/olympusmn.cpp:881 -#, fuzzy -msgid "White balance value" -msgstr "Tabuľka vyváženia bielej" - -#: src/olympusmn.cpp:811 src/olympusmn.cpp:882 -#, fuzzy -msgid "WB Fine Adjustment" -msgstr "Úpravy tónu" - -#: src/olympusmn.cpp:811 -#, fuzzy -msgid "WB fine adjustment" -msgstr "Úpravy tónu" - -# AF = automatické zaostrenie -#: src/olympusmn.cpp:812 src/olympusmn.cpp:834 src/olympusmn.cpp:883 -#, fuzzy -msgid "Gray Point" -msgstr "Bod automatického zaostrenia" - -# AF = automatické zaostrenie -#: src/olympusmn.cpp:812 src/olympusmn.cpp:883 -#, fuzzy -msgid "Gray point" -msgstr "bod automatického zaostrenia" - -#: src/olympusmn.cpp:813 src/olympusmn.cpp:886 -#, fuzzy -msgid "Saturation Emphasis" -msgstr "Nastavenie sýtosti" - -#: src/olympusmn.cpp:813 src/olympusmn.cpp:886 -#, fuzzy -msgid "Saturation emphasis" -msgstr "Nastavenie sýtosti" - -#: src/olympusmn.cpp:814 src/olympusmn.cpp:887 -#, fuzzy -msgid "Memory Color Emphasis" -msgstr "Moje farby" - -#: src/olympusmn.cpp:814 src/olympusmn.cpp:887 -#, fuzzy -msgid "Memory color emphasis" -msgstr "Moje farby" - -#: src/olympusmn.cpp:815 src/olympusmn.cpp:884 -#, fuzzy -msgid "Contrast Value" -msgstr "Kontrast" - -#: src/olympusmn.cpp:815 src/olympusmn.cpp:884 -#, fuzzy -msgid "Contrast value" -msgstr "Kontrast" - -#: src/olympusmn.cpp:816 src/olympusmn.cpp:885 -#, fuzzy -msgid "Sharpness Value" -msgstr "OstrosÅ¥" - -#: src/olympusmn.cpp:816 src/olympusmn.cpp:885 -#, fuzzy -msgid "Sharpness value" -msgstr "OstrosÅ¥" - -#: src/olympusmn.cpp:818 src/olympusmn.cpp:890 -#, fuzzy -msgid "Engine" -msgstr "VeÄer" - -#: src/olympusmn.cpp:820 -#, fuzzy -msgid "Edit status" -msgstr "UpraviÅ¥ stav" - -#: src/olympusmn.cpp:821 -#, fuzzy -msgid "Settings" -msgstr "Nastavenie AE" - -#: src/olympusmn.cpp:823 -msgid "Unknown OlympusRd tag" -msgstr "Neznáma znaÄka OlympusRd" - -#: src/olympusmn.cpp:878 -#, fuzzy -msgid "Raw Development 2 Version" -msgstr "Nespracovaný vývoj" - -#: src/olympusmn.cpp:878 -#, fuzzy -msgid "Raw development 2 version" -msgstr "Informácie o nespracovanom vývoji" - -#: src/olympusmn.cpp:882 -#, fuzzy -msgid "White balance fine adjustment" -msgstr "Nastavenie vyváženia bielej" - -#: src/olympusmn.cpp:892 -#, fuzzy -msgid "PM Saturation" -msgstr "SýtosÅ¥" - -#: src/olympusmn.cpp:893 -#, fuzzy -msgid "PM Contrast" -msgstr "Kontrast" - -#: src/olympusmn.cpp:894 -#, fuzzy -msgid "PM Sharpness" -msgstr "OstrosÅ¥" - -#: src/olympusmn.cpp:895 -#, fuzzy -msgid "PM BW Filter" -msgstr "Filter" - -#: src/olympusmn.cpp:895 -#, fuzzy -msgid "PM BW filter" -msgstr "Filter" - -#: src/olympusmn.cpp:896 -#, fuzzy -msgid "PM Picture Tone" -msgstr "Režim obrázka" - -#: src/olympusmn.cpp:896 -#, fuzzy -msgid "PM picture tone" -msgstr "Režim obrázka" - -#: src/olympusmn.cpp:899 -#, fuzzy -msgid "Auto Gradation" -msgstr "Trvanie zvuku" - -#: src/olympusmn.cpp:899 -#, fuzzy -msgid "Auto gradation" -msgstr "Trvanie zvuku" - -#: src/olympusmn.cpp:900 -#, fuzzy -msgid "PM Noise Filter" -msgstr "Filter" - -#: src/olympusmn.cpp:900 -#, fuzzy -msgid "Picture mode noise filter" -msgstr "Nastavenie režimu obrázka" - -#: src/olympusmn.cpp:902 -msgid "Unknown OlympusRd2 tag" -msgstr "Neznáma znaÄka OlympusRd2" - -#: src/olympusmn.cpp:913 -#, fuzzy -msgid "On (2 frames)" -msgstr "Zapnuté (predvolené)" - -#: src/olympusmn.cpp:914 -#, fuzzy -msgid "On (3 frames)" -msgstr "Zapnuté (predvolené)" - -#: src/olympusmn.cpp:919 -msgid "4:3" -msgstr "" - -#: src/olympusmn.cpp:920 -#, fuzzy -msgid "3:2" -msgstr "320" - -#: src/olympusmn.cpp:921 -msgid "16:9" -msgstr "" - -#: src/olympusmn.cpp:922 -msgid "6:6" -msgstr "" - -#: src/olympusmn.cpp:923 -msgid "5:4" -msgstr "" - -#: src/olympusmn.cpp:924 -msgid "7:6" -msgstr "" - -# exif-lightsource-21 -#: src/olympusmn.cpp:925 -#, fuzzy -msgid "6:5" -msgstr "D65" - -# exif-lightsource-22 -#: src/olympusmn.cpp:926 -#, fuzzy -msgid "7:5" -msgstr "D75" - -#: src/olympusmn.cpp:927 -msgid "3:4" -msgstr "" - -#: src/olympusmn.cpp:931 -#, fuzzy -msgid "Image Processing Version" -msgstr "Spracovanie obrazu" - -#: src/olympusmn.cpp:931 -#, fuzzy -msgid "Image processing version" -msgstr "Informácie o spracovaní obrazu" - -#: src/olympusmn.cpp:933 -#, fuzzy -msgid "WB RB Levels 3000K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:933 -#, fuzzy -msgid "WB RB levels 3000K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:934 -#, fuzzy -msgid "WB RB Levels 3300K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:934 -#, fuzzy -msgid "WB RB levels 3300K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:935 -#, fuzzy -msgid "WB RB Levels 3600K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:935 -#, fuzzy -msgid "WB RB levels 3600K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:936 -#, fuzzy -msgid "WB RB Levels 3900K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:936 -#, fuzzy -msgid "WB RB levels 3900K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:937 -#, fuzzy -msgid "WB RB Levels 4000K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:937 -#, fuzzy -msgid "WB RB levels 4000K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:938 -#, fuzzy -msgid "WB RB Levels 4300K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:938 -#, fuzzy -msgid "WB RB levels 4300K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:939 -#, fuzzy -msgid "WB RB Levels 4500K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:939 -#, fuzzy -msgid "WB RB levels 4500K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:940 -#, fuzzy -msgid "WB RB Levels 4800K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:940 -#, fuzzy -msgid "WB RB levels 4800K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:941 -#, fuzzy -msgid "WB RB Levels 5300K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:941 -#, fuzzy -msgid "WB RB levels 5300K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:942 -#, fuzzy -msgid "WB RB Levels 6000K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:942 -#, fuzzy -msgid "WB RB levels 6000K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:943 -#, fuzzy -msgid "WB RB Levels 6600K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:943 -#, fuzzy -msgid "WB RB levels 6600K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:944 -#, fuzzy -msgid "WB RB Levels 7500K" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:944 -#, fuzzy -msgid "WB RB levels 7500K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:945 -#, fuzzy -msgid "WB RB Levels CWB1" -msgstr "WB_RGGBLevelsCloudy" - -#: src/olympusmn.cpp:945 -#, fuzzy -msgid "WB RB levels CWB1" -msgstr "WB_RGGBLevelsCloudy" - -#: src/olympusmn.cpp:946 -#, fuzzy -msgid "WB RB Levels CWB2" -msgstr "WB_RGGBLevelsCloudy" - -#: src/olympusmn.cpp:946 -#, fuzzy -msgid "WB RB levels CWB2" -msgstr "WB_RGGBLevelsCloudy" - -#: src/olympusmn.cpp:947 -#, fuzzy -msgid "WB RB Levels CWB3" -msgstr "WB_RGGBLevelsCloudy" - -#: src/olympusmn.cpp:947 -#, fuzzy -msgid "WB RB levels CWB3" -msgstr "WB_RGGBLevelsCloudy" - -#: src/olympusmn.cpp:948 -#, fuzzy -msgid "WB RB Levels CWB4" -msgstr "WB_RGGBLevelsCloudy" - -#: src/olympusmn.cpp:948 -#, fuzzy -msgid "WB RB levels CWB4" -msgstr "WB_RGGBLevelsCloudy" - -#: src/olympusmn.cpp:949 -#, fuzzy -msgid "WB G Level 3000K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:949 -#, fuzzy -msgid "WB G level 3000K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:950 -#, fuzzy -msgid "WB G Level 3300K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:950 -#, fuzzy -msgid "WB G level 3300K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:951 -#, fuzzy -msgid "WB G Level 3600K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:951 -#, fuzzy -msgid "WB G level 3600K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:952 -#, fuzzy -msgid "WB G Level 3900K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:952 -#, fuzzy -msgid "WB G level 3900K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:953 -#, fuzzy -msgid "WB G Level 4000K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:953 -#, fuzzy -msgid "WB G level 4000K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:954 -#, fuzzy -msgid "WB G Level 4300K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:954 -#, fuzzy -msgid "WB G level 4300K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:955 -#, fuzzy -msgid "WB G Level 4500K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:955 -#, fuzzy -msgid "WB G level 4500K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:956 -#, fuzzy -msgid "WB G Level 4800K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:956 -#, fuzzy -msgid "WB G level 4800K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:957 -#, fuzzy -msgid "WB G Level 5300K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:957 -#, fuzzy -msgid "WB G level 5300K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:958 -#, fuzzy -msgid "WB G Level 6000K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:958 -#, fuzzy -msgid "WB G level 6000K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:959 -#, fuzzy -msgid "WB G Level 6600K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:959 -#, fuzzy -msgid "WB G level 6600K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:960 -#, fuzzy -msgid "WB G Level 7500K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:960 -#, fuzzy -msgid "WB G level 7500K" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:961 -#, fuzzy -msgid "WB G Level" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:961 -#, fuzzy -msgid "WB G level" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:963 -msgid "Enhancer" -msgstr "" - -#: src/olympusmn.cpp:964 -#, fuzzy -msgid "Enhancer Values" -msgstr "OstrosÅ¥" - -#: src/olympusmn.cpp:964 -#, fuzzy -msgid "Enhancer values" -msgstr "OstrosÅ¥" - -#: src/olympusmn.cpp:965 src/olympusmn.cpp:1067 -#, fuzzy -msgid "Coring Filter" -msgstr "Farebný filter" - -#: src/olympusmn.cpp:966 src/olympusmn.cpp:1068 -#, fuzzy -msgid "Coring Values" -msgstr "Hodnota jasu" - -#: src/olympusmn.cpp:966 src/olympusmn.cpp:1068 -#, fuzzy -msgid "Coring values" -msgstr "Hodnota jasu" - -#: src/olympusmn.cpp:967 src/tags.cpp:908 -#, fuzzy -msgid "Black Level" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:968 -#, fuzzy -msgid "Gain Base" -msgstr "Základné URL" - -#: src/olympusmn.cpp:968 -msgid "Gain base" -msgstr "" - -#: src/olympusmn.cpp:969 -#, fuzzy -msgid "Valid Bits" -msgstr "Platné bity" - -#: src/olympusmn.cpp:970 src/olympusmn.cpp:1072 src/properties.cpp:445 -msgid "Crop Left" -msgstr "OrezaÅ¥ vľavo" - -#: src/olympusmn.cpp:970 src/olympusmn.cpp:1072 -#, fuzzy -msgid "Crop left" -msgstr "OrezaÅ¥ vľavo" - -#: src/olympusmn.cpp:971 src/olympusmn.cpp:1073 src/properties.cpp:444 -msgid "Crop Top" -msgstr "OrezaÅ¥ vrch" - -#: src/olympusmn.cpp:971 src/olympusmn.cpp:1073 -#, fuzzy -msgid "Crop top" -msgstr "OrezaÅ¥ vrch" - -#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 src/properties.cpp:449 -msgid "Crop Width" -msgstr "OrezaÅ¥ šírku" - -#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 -#, fuzzy -msgid "Crop width" -msgstr "OrezaÅ¥ šírku" - -#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 src/properties.cpp:450 -msgid "Crop Height" -msgstr "OrezaÅ¥ výšku" - -#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 -#, fuzzy -msgid "Crop height" -msgstr "OrezaÅ¥ výšku" - -#: src/olympusmn.cpp:977 -#, fuzzy -msgid "Multiple Exposure Mode" -msgstr "Režim expozície" - -#: src/olympusmn.cpp:977 -#, fuzzy -msgid "Multiple exposure mode" -msgstr "Viacnásobná expozícia" - -#: src/olympusmn.cpp:978 src/sonymn.cpp:644 src/sonymn.cpp:645 -msgid "Aspect Ratio" -msgstr "" - -#: src/olympusmn.cpp:978 -#, fuzzy -msgid "Aspect ratio" -msgstr "Trvanie zvuku" - -#: src/olympusmn.cpp:979 -#, fuzzy -msgid "Aspect Frame" -msgstr "Názov objektu" - -#: src/olympusmn.cpp:979 -#, fuzzy -msgid "Aspect frame" -msgstr "Názov objektu" - -#: src/olympusmn.cpp:980 -#, fuzzy -msgid "Face Detect" -msgstr "Nepodarilo sa preÄítaÅ¥" - -#: src/olympusmn.cpp:980 src/olympusmn.cpp:1373 src/olympusmn.cpp:1385 -#, fuzzy -msgid "Face detect" -msgstr "Nepodarilo sa preÄítaÅ¥" - -#: src/olympusmn.cpp:981 -#, fuzzy -msgid "Face Detect Area" -msgstr "Nepodarilo sa preÄítaÅ¥" - -#: src/olympusmn.cpp:981 -#, fuzzy -msgid "Face detect area" -msgstr "Nepodarilo sa preÄítaÅ¥" - -#: src/olympusmn.cpp:983 -msgid "Unknown OlympusIp tag" -msgstr "Neznáma znaÄka OlympusIp" - -#: src/olympusmn.cpp:993 -msgid "Bounce or Off" -msgstr "" - -#: src/olympusmn.cpp:994 -msgid "Direct" -msgstr "" - -#: src/olympusmn.cpp:998 -#, fuzzy -msgid "Focus Info Version" -msgstr "Informácie o zaostrení" - -#: src/olympusmn.cpp:998 -#, fuzzy -msgid "Focus info version" -msgstr "Informácie o zaostrení" - -#: src/olympusmn.cpp:999 -#, fuzzy -msgid "Auto Focus" -msgstr "Automatické zaostrenie" - -#: src/olympusmn.cpp:1000 -#, fuzzy -msgid "Scene Detect" -msgstr "Režim scény" - -#: src/olympusmn.cpp:1000 -#, fuzzy -msgid "Scene detect" -msgstr "Režim scény" - -#: src/olympusmn.cpp:1001 -#, fuzzy -msgid "Scene Area" -msgstr "scenéria" - -#: src/olympusmn.cpp:1001 -#, fuzzy -msgid "Scene area" -msgstr "Jednoduchá oblasÅ¥" - -#: src/olympusmn.cpp:1002 -#, fuzzy -msgid "Scene Detect Data" -msgstr "Režim scény" - -#: src/olympusmn.cpp:1002 -#, fuzzy -msgid "Scene detect data" -msgstr "Režim scény" - -#: src/olympusmn.cpp:1003 -#, fuzzy -msgid "Zoom Step Count" -msgstr "PoÄet krokov priblíženia" - -#: src/olympusmn.cpp:1004 -#, fuzzy -msgid "Focus Step Count" -msgstr "PoÄet krokov makro priblíženia" - -#: src/olympusmn.cpp:1004 -#, fuzzy -msgid "Focus step count" -msgstr "PoÄet krokov makro priblíženia" - -#: src/olympusmn.cpp:1005 -#, fuzzy -msgid "Focus Step Infinity" -msgstr "Nastavenia zaostrenia" - -#: src/olympusmn.cpp:1005 -#, fuzzy -msgid "Focus step infinity" -msgstr "Nastavenia zaostrenia" - -#: src/olympusmn.cpp:1006 -#, fuzzy -msgid "Focus Step Near" -msgstr "Typ zaostrenia" - -#: src/olympusmn.cpp:1006 -#, fuzzy -msgid "Focus step near" -msgstr "VzdialenosÅ¥ zaostrenia" - -#: src/olympusmn.cpp:1009 -#, fuzzy -msgid "External Flash" -msgstr "externý blesk" - -#: src/olympusmn.cpp:1010 -#, fuzzy -msgid "External Flash Guide Number" -msgstr "Režim externého blesku" - -#: src/olympusmn.cpp:1010 -#, fuzzy -msgid "External flash guide number" -msgstr "Odrazenie externého blesku" - -#: src/olympusmn.cpp:1014 -#, fuzzy -msgid "Manual Flash" -msgstr "RuÄné uvoľnenie" - -#: src/olympusmn.cpp:1014 -#, fuzzy -msgid "Manual flash" -msgstr "RuÄné uvoľnenie" - -#: src/olympusmn.cpp:1018 -msgid "Unknown OlympusFi tag" -msgstr "Neznáma znaÄka OlympusFi" - -#: src/olympusmn.cpp:1029 -#, fuzzy -msgid "Unknown OlympusFe tag" -msgstr "Neznáma znaÄka OlympusFi" - -# exif-lightsource-9 -#: src/olympusmn.cpp:1042 -#, fuzzy -msgid "Fine Weather" -msgstr "pekné poÄasie" - -# exif-lightsource-3 -#: src/olympusmn.cpp:1043 -#, fuzzy -msgid "Tungsten (incandescent)" -msgstr "volfram (inkadescentné svetlo)" - -#: src/olympusmn.cpp:1044 -#, fuzzy -msgid "Evening Sunlight" -msgstr "VeÄer" - -#: src/olympusmn.cpp:1045 -#, fuzzy -msgid "Daylight Fluorescent (D 5700 - 7100K)" -msgstr "denné svetlo fluorescenÄné (D 5700 - 7100K)" - -#: src/olympusmn.cpp:1046 -#, fuzzy -msgid "Day White Fluorescent (N 4600 - 5400K)" -msgstr "biely deň, fluorescenÄné (N 4600 - 5400K)" - -#: src/olympusmn.cpp:1047 -#, fuzzy -msgid "Cool White Fluorescent (W 3900 - 4500K)" -msgstr "chladné biele fluorescenÄné (W 3900 - 4500K)" - -#: src/olympusmn.cpp:1048 -#, fuzzy -msgid "White Fluorescent (WW 3200 - 3700K)" -msgstr "biele fluorescenÄné (WW 3200 - 3700K)" - -#: src/olympusmn.cpp:1049 -#, fuzzy -msgid "One Touch White Balance" -msgstr "Vyváženie bielej jedným dotykom" - -#: src/olympusmn.cpp:1050 -#, fuzzy -msgid "Custom 1-4" -msgstr "Vlastný 1" - -#: src/olympusmn.cpp:1054 -#, fuzzy -msgid "Raw Info Version" -msgstr "Informácie o zaostrení" - -#: src/olympusmn.cpp:1054 -#, fuzzy -msgid "Raw info version" -msgstr "Nespracované informácie" - -#: src/olympusmn.cpp:1055 -#, fuzzy -msgid "WB_RB Levels Used" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:1055 -#, fuzzy -msgid "WB_RB levels used" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:1056 -#, fuzzy -msgid "WB_RB Levels Auto" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:1056 -#, fuzzy -msgid "WB_RB levels auto" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:1057 -#, fuzzy -msgid "WB_RB Levels Shade" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:1057 -#, fuzzy -msgid "WB_RB levels shade" -msgstr "WB_RGGBLevelsShade" - -#: src/olympusmn.cpp:1058 -#, fuzzy -msgid "WB_RB Levels Cloudy" -msgstr "WB_RGGBLevelsCloudy" - -#: src/olympusmn.cpp:1058 -#, fuzzy -msgid "WB_RB levels cloudy" -msgstr "WB_RGGBLevelsCloudy" - -#: src/olympusmn.cpp:1059 -#, fuzzy -msgid "WB_RB Levels Fine Weather" -msgstr "WB_RGGBLevelsFlash" - -#: src/olympusmn.cpp:1059 -#, fuzzy -msgid "WB_RB levels fine weather" -msgstr "WB_RGGBLevelsFlash" - -#: src/olympusmn.cpp:1060 -#, fuzzy -msgid "WB_RB Levels Tungsten" -msgstr "WB_RGGBLevelsTungsten" - -#: src/olympusmn.cpp:1060 -#, fuzzy -msgid "WB_RB levels tungsten" -msgstr "WB_RGGBLevelsTungsten" - -#: src/olympusmn.cpp:1061 -#, fuzzy -msgid "WB_RB Levels Evening Sunlight" -msgstr "WB_RGGBLevelsDaylight" - -#: src/olympusmn.cpp:1061 -#, fuzzy -msgid "WB_RB levels evening sunlight" -msgstr "WB_RGGBLevelsDaylight" - -#: src/olympusmn.cpp:1062 -#, fuzzy -msgid "WB_RB Levels Daylight Fluor" -msgstr "WB_RGGBLevelsDaylight" - -#: src/olympusmn.cpp:1062 -#, fuzzy -msgid "WB_RB levels daylight fluor" -msgstr "WB_RGGBLevelsDaylight" - -#: src/olympusmn.cpp:1063 -#, fuzzy -msgid "WB_RB Levels Day White Fluor" -msgstr "WB_RGGBLevelsDaylight" - -#: src/olympusmn.cpp:1063 -#, fuzzy -msgid "WB_RB levels day white fluor" -msgstr "WB_RGGBLevelsDaylight" - -#: src/olympusmn.cpp:1064 -#, fuzzy -msgid "WB_RB Levels Cool White Fluor" -msgstr "WB_RGGBLevelsCloudy" - -#: src/olympusmn.cpp:1064 -#, fuzzy -msgid "WB_RB levels cool white fluor" -msgstr "WB_RGGBLevelsCloudy" - -# exif-lightsource-15 -#: src/olympusmn.cpp:1065 -#, fuzzy -msgid "WB_RB Levels White Fluorescent" -msgstr "WB_RGGBLevelsFluorescentD" - -# exif-lightsource-15 -#: src/olympusmn.cpp:1065 -#, fuzzy -msgid "WB_RB levels white fluorescent" -msgstr "WB_RGGBLevelsFluorescentD" - -#: src/olympusmn.cpp:1066 -#, fuzzy -msgid "Color Matrix2" -msgstr "Matica farieb 2" - -#: src/olympusmn.cpp:1066 -#, fuzzy -msgid "Color matrix 2" -msgstr "Matica farieb 2" - -#: src/olympusmn.cpp:1069 -#, fuzzy -msgid "Black Level 2" -msgstr "Úroveň Äiernej" - -#: src/olympusmn.cpp:1069 -#, fuzzy -msgid "Black level 2" -msgstr "Úroveň Äiernej" - -# exif-ycbcrcoefficients -#: src/olympusmn.cpp:1070 src/properties.cpp:508 src/tags.cpp:699 -msgid "YCbCr Coefficients" -msgstr "koeficienty YCbCr" - -# exif-ycbcrcoefficients -#: src/olympusmn.cpp:1070 -#, fuzzy -msgid "YCbCr coefficients" -msgstr "koeficienty YCbCr" - -#: src/olympusmn.cpp:1071 -msgid "Valid Pixel Depth" -msgstr "" - -#: src/olympusmn.cpp:1071 -msgid "Valid pixel depth" -msgstr "" - -#: src/olympusmn.cpp:1077 -#, fuzzy -msgid "White Balance Comp" -msgstr "Vyváženie bielej" - -#: src/olympusmn.cpp:1077 -#, fuzzy -msgid "White balance comp" -msgstr "Vyváženie bielej" - -#: src/olympusmn.cpp:1078 -#, fuzzy -msgid "Saturation Setting" -msgstr "Nastavenie sýtosti" - -#: src/olympusmn.cpp:1079 -#, fuzzy -msgid "Hue Setting" -msgstr "Nastavenia" - -#: src/olympusmn.cpp:1079 -#, fuzzy -msgid "Hue setting" -msgstr "Nastavenie AE" - -#: src/olympusmn.cpp:1082 -#, fuzzy -msgid "CM Exposure Compensation" -msgstr "Kompenzácia expozície" - -#: src/olympusmn.cpp:1082 -#, fuzzy -msgid "CM exposure compensation" -msgstr "Kompenzácia expozície" - -#: src/olympusmn.cpp:1083 -#, fuzzy -msgid "CM White Balance" -msgstr "Vyváženie bielej" - -#: src/olympusmn.cpp:1083 -#, fuzzy -msgid "CM white balance" -msgstr "Vyváženie bielej" - -#: src/olympusmn.cpp:1084 -#, fuzzy -msgid "CM White Balance Comp" -msgstr "Vyváženie bielej" - -#: src/olympusmn.cpp:1084 -#, fuzzy -msgid "CM white balance comp" -msgstr "Vyváženie bielej" - -#: src/olympusmn.cpp:1085 -#, fuzzy -msgid "CM White Balance Gray Point" -msgstr "Viacnásobné snímky so zmenou vyváženia bielej" - -#: src/olympusmn.cpp:1085 -#, fuzzy -msgid "CM white balance gray point" -msgstr "Viacnásobné snímky so zmenou vyváženia bielej" - -#: src/olympusmn.cpp:1086 -#, fuzzy -msgid "CM Saturation" -msgstr "SýtosÅ¥" - -#: src/olympusmn.cpp:1086 -#, fuzzy -msgid "CM saturation" -msgstr "SýtosÅ¥" - -#: src/olympusmn.cpp:1087 -#, fuzzy -msgid "CM Hue" -msgstr "Odtieň" - -#: src/olympusmn.cpp:1087 -#, fuzzy -msgid "CM hue" -msgstr "Odtieň" - -#: src/olympusmn.cpp:1088 -#, fuzzy -msgid "CM Contrast" -msgstr "Kontrast" - -#: src/olympusmn.cpp:1088 -#, fuzzy -msgid "CM contrast" -msgstr "Kontrast" - -#: src/olympusmn.cpp:1089 -#, fuzzy -msgid "CM Sharpness" -msgstr "OstrosÅ¥" - -#: src/olympusmn.cpp:1089 -#, fuzzy -msgid "CM sharpness" -msgstr "OstrosÅ¥" - -#: src/olympusmn.cpp:1091 -#, fuzzy -msgid "Unknown OlympusRi tag" -msgstr "Neznáma znaÄka OlympusRd" - -#: src/olympusmn.cpp:1114 src/pentaxmn.cpp:336 -msgid "User-Selected" -msgstr "Vybrané používateľom" - -#: src/olympusmn.cpp:1115 -#, fuzzy -msgid "Auto-Override" -msgstr "PrepísaÅ¥" - -#: src/olympusmn.cpp:1151 -msgid "Fast" -msgstr "rýchly" - -#: src/olympusmn.cpp:1208 -msgid "3000 Kelvin" -msgstr "3000 Kelvinov" - -#: src/olympusmn.cpp:1209 -msgid "3700 Kelvin" -msgstr "3700 Kelvinov" - -#: src/olympusmn.cpp:1210 -msgid "4000 Kelvin" -msgstr "4000 Kelvinov" - -#: src/olympusmn.cpp:1211 -msgid "4500 Kelvin" -msgstr "4500 Kelvinov" - -#: src/olympusmn.cpp:1212 -msgid "5500 Kelvin" -msgstr "5500 Kelvinov" - -#: src/olympusmn.cpp:1213 -msgid "6500 Kelvin" -msgstr "6500 Kelvinov" - -#: src/olympusmn.cpp:1214 -msgid "7500 Kelvin" -msgstr "7500 Kelvinov" - -#: src/olympusmn.cpp:1220 -msgid "One-touch" -msgstr "jedným dotykom" - -#: src/olympusmn.cpp:1241 -msgid "Olympus Zuiko Digital ED 50mm F2.0 Macro" -msgstr "" - -#: src/olympusmn.cpp:1242 -msgid "Olympus Zuiko Digital 40-150mm F3.5-4.5" -msgstr "" - -#: src/olympusmn.cpp:1243 src/olympusmn.cpp:1259 -msgid "Olympus Zuiko Digital ED 14-42mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1244 -msgid "Olympus Zuiko Digital ED 150mm F2.0" -msgstr "" - -#: src/olympusmn.cpp:1245 -msgid "Olympus Zuiko Digital 17mm F2.8 Pancake" -msgstr "" - -#: src/olympusmn.cpp:1246 -msgid "Olympus Zuiko Digital ED 300mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1247 -msgid "Olympus Zuiko Digital 14-54mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1248 -msgid "Olympus Zuiko Digital Pro ED 90-250mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1249 -msgid "Olympus Zuiko Digital ED 50-200mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1250 -msgid "Olympus Zuiko Digital ED 8mm F3.5 Fisheye" -msgstr "" - -#: src/olympusmn.cpp:1251 -msgid "Olympus Zuiko Digital 11-22mm F2.8-3.5" -msgstr "" - -#: src/olympusmn.cpp:1252 -msgid "Olympus Zuiko Digital 18-180mm F3.5-6.3" -msgstr "" - -#: src/olympusmn.cpp:1253 -msgid "Olympus Zuiko Digital 70-300mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1254 -msgid "Olympus Zuiko Digital ED 7-14mm F4.0" -msgstr "" - -#: src/olympusmn.cpp:1255 -msgid "Olympus Zuiko Digital Pro ED 35-100mm F2.0" -msgstr "" - -#: src/olympusmn.cpp:1256 -msgid "Olympus Zuiko Digital 14-45mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1257 -msgid "Olympus Zuiko Digital 35mm F3.5 Macro" -msgstr "" - -#: src/olympusmn.cpp:1258 -msgid "Olympus Zuiko Digital 17.5-45mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1260 -msgid "Olympus Zuiko Digital ED 40-150mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1261 -msgid "Olympus Zuiko Digital ED 50-200mm F2.8-3.5 SWD" -msgstr "" - -#: src/olympusmn.cpp:1262 -msgid "Olympus Zuiko Digital ED 12-60mm F2.8-4.0 SWD" -msgstr "" - -#: src/olympusmn.cpp:1263 -msgid "Olympus Zuiko Digital ED 14-35mm F2.0 SWD" -msgstr "" - -#: src/olympusmn.cpp:1264 -msgid "Olympus Zuiko Digital 25mm F2.8" -msgstr "" - -#: src/olympusmn.cpp:1265 -msgid "Olympus Zuiko Digital ED 9-18mm F4.0-5.6" -msgstr "" - -#: src/olympusmn.cpp:1266 -msgid "Olympus Zuiko Digital 14-54mm F2.8-3.5 II" -msgstr "" - -#: src/olympusmn.cpp:1267 -msgid "Sigma 18-50mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1268 -msgid "Sigma 55-200mm F4.0-5.6 DC" -msgstr "" - -#: src/olympusmn.cpp:1269 -msgid "Sigma 18-125mm F3.5-5.6 DC" -msgstr "" - -#: src/olympusmn.cpp:1270 -msgid "Sigma 18-125mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1271 -msgid "Sigma 30mm F1.4" -msgstr "" - -#: src/olympusmn.cpp:1272 src/olympusmn.cpp:1278 -msgid "Sigma 50-500mm F4.0-6.3 EX DG APO HSM RF" -msgstr "" - -#: src/olympusmn.cpp:1273 -msgid "Sigma 105mm F2.8 DG" -msgstr "" - -#: src/olympusmn.cpp:1274 -msgid "Sigma 150mm F2.8 DG HSM" -msgstr "" - -#: src/olympusmn.cpp:1275 -msgid "Sigma 24mm F1.8 EX DG Aspherical Macro" -msgstr "" - -#: src/olympusmn.cpp:1276 -msgid "Sigma 135-400mm F4.5-5.6 DG ASP APO RF" -msgstr "" - -#: src/olympusmn.cpp:1277 -msgid "Sigma 300-800mm F5.6 EX DG APO" -msgstr "" - -#: src/olympusmn.cpp:1279 -msgid "Sigma 10-20mm F4.0-5.6 EX DC HSM" -msgstr "" - -#: src/olympusmn.cpp:1280 src/olympusmn.cpp:1289 -msgid "Leica D Vario Elmarit 14-50mm F2.8-3.5 Asph." -msgstr "" - -#: src/olympusmn.cpp:1281 -msgid "Lumix G Vario 14-45mm F3.5-5.6 Asph. Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1282 src/olympusmn.cpp:1290 -msgid "Leica D Summilux 25mm F1.4 Asph." -msgstr "" - -#: src/olympusmn.cpp:1283 -msgid "Lumix G Vario 45-200mm F4-5.6 Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1284 -msgid "Leica D Vario Elmar 14-50mm F3.8-5.6 Asph." -msgstr "" - -#: src/olympusmn.cpp:1285 -msgid "Lumix G Vario HD 14-140mm F4-5.8 Asph. Mega OIS" -msgstr "" - -#: src/olympusmn.cpp:1286 -msgid "Leica D Vario Elmar 14-150mm F3.5-5.6" -msgstr "" - -#: src/olympusmn.cpp:1287 -msgid "Lumix G Vario 7-14mm F4 Asph." -msgstr "" - -#: src/olympusmn.cpp:1288 -msgid "Lumix G 20mm F1.7 Asph." -msgstr "" - -#: src/olympusmn.cpp:1338 -msgid "Olympus Zuiko Digital EC-14 1.4x Teleconverter" -msgstr "" - -#: src/olympusmn.cpp:1339 -msgid "Olympus EX-25 Extension Tube" -msgstr "" - -#: src/olympusmn.cpp:1340 -msgid "Olympus Zuiko Digital EC-20 2.0x Teleconverter" -msgstr "" - -#: src/olympusmn.cpp:1382 -msgid "S-AF" -msgstr "" - -#: src/olympusmn.cpp:1383 -msgid "C-AF" -msgstr "" - -#: src/olympusmn.cpp:1386 -#, fuzzy -msgid "Imager AF" -msgstr "JedineÄný ID obrázka" - -#: src/olympusmn.cpp:1387 -#, fuzzy -msgid "AF sensor" -msgstr "Moje vyhľadávania" - -#: src/olympusmn.cpp:1433 -#, fuzzy -msgid "Soft Focus" -msgstr "Bodové zaostrenie" - -#: src/olympusmn.cpp:1434 -msgid "Pop Art" -msgstr "" - -#: src/olympusmn.cpp:1435 -msgid "Pale & Light Color" -msgstr "" - -#: src/olympusmn.cpp:1436 -#, fuzzy -msgid "Light Tone" -msgstr "OblasÅ¥ vpravo" - -#: src/olympusmn.cpp:1437 -msgid "Pin Hole" -msgstr "" - -#: src/olympusmn.cpp:1438 -msgid "Grainy Film" -msgstr "" - -#: src/olympusmn.cpp:1439 -#, fuzzy -msgid "Diorama" -msgstr "panoráma" - -#: src/olympusmn.cpp:1440 -#, fuzzy -msgid "Cross Process" -msgstr "režim zaostrenia" - -# exif-flashenergy -#: src/olympusmn.cpp:1441 -#, fuzzy -msgid "Fish Eye" -msgstr "energia blesku" - -#: src/olympusmn.cpp:1442 -msgid "Drawing" -msgstr "" - -#: src/olympusmn.cpp:1489 -#, fuzzy -msgid "Left (or n/a)" -msgstr "OblasÅ¥ vľavo" - -#: src/olympusmn.cpp:1490 src/olympusmn.cpp:1508 -#, fuzzy -msgid "Center (horizontal)" -msgstr "Stredná oblasÅ¥ (vodorovná orientácia)" - -#: src/olympusmn.cpp:1492 src/olympusmn.cpp:1519 -#, fuzzy -msgid "Center (vertical)" -msgstr "Stredná oblasÅ¥ (zvislá orientácia)" - -#: src/olympusmn.cpp:1503 -msgid "Top-left (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1504 -#, fuzzy -msgid "Top-center (horizontal)" -msgstr "Stredná oblasÅ¥ (vodorovná orientácia)" - -#: src/olympusmn.cpp:1505 -msgid "Top-right (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1506 -#, fuzzy -msgid "Left (horizontal)" -msgstr "Horizontálne (normálne)" - -#: src/olympusmn.cpp:1507 -msgid "Mid-left (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1509 -msgid "Mid-right (horizontal)" -msgstr "" - -#: src/olympusmn.cpp:1510 -#, fuzzy -msgid "Right (horizontal)" -msgstr "Horizontálne (normálne)" - -#: src/olympusmn.cpp:1511 -#, fuzzy -msgid "Bottom-left (horizontal)" -msgstr "vľavo dolu" - -#: src/olympusmn.cpp:1512 -#, fuzzy -msgid "Bottom-center (horizontal)" -msgstr "vľavo dolu" - -#: src/olympusmn.cpp:1513 -#, fuzzy -msgid "Bottom-right (horizontal)" -msgstr "vpravo dolu" - -#: src/olympusmn.cpp:1514 -msgid "Top-left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1515 -#, fuzzy -msgid "Top-center (vertical)" -msgstr "v strede" - -#: src/olympusmn.cpp:1516 -#, fuzzy -msgid "Top-right (vertical)" -msgstr "vpravo hore" - -#: src/olympusmn.cpp:1517 -msgid "Left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1518 -msgid "Mid-left (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1520 -#, fuzzy -msgid "Mid-right (vertical)" -msgstr "v strede vpravo" - -#: src/olympusmn.cpp:1521 -msgid "Right (vertical)" -msgstr "" - -#: src/olympusmn.cpp:1522 -#, fuzzy -msgid "Bottom-left (vertical)" -msgstr "vľavo dolu" - -#: src/olympusmn.cpp:1523 -#, fuzzy -msgid "Bottom-center (vertical)" -msgstr "vľavo dolu" - -#: src/olympusmn.cpp:1524 -#, fuzzy -msgid "Bottom-right (vertical)" -msgstr "vpravo dolu" - -#: src/olympusmn.cpp:1561 -#, fuzzy -msgid "Single Target" -msgstr "Jednoduchá oblasÅ¥" - -#: src/olympusmn.cpp:1562 -#, fuzzy -msgid "All Target" -msgstr "cieľ" - -#: src/olympusmn.cpp:1563 -#, fuzzy -msgid "Dynamic Single Target" -msgstr "Nastavenie dynamického rozsahu" - -#: src/panasonicmn.cpp:57 src/pentaxmn.cpp:348 src/pentaxmn.cpp:361 -msgid "Very High" -msgstr "veľmi vysoký" - -#: src/panasonicmn.cpp:59 -#, fuzzy -msgid "Motion Picture" -msgstr "Režim obrázka" - -#: src/panasonicmn.cpp:67 -msgid "Halogen" -msgstr "Halogén" - -#: src/panasonicmn.cpp:79 -msgid "Auto, focus button" -msgstr "auto, stlaÄenie tlaÄidla zaostrenia" - -#: src/panasonicmn.cpp:80 src/panasonicmn.cpp:81 -msgid "Auto, continuous" -msgstr "auto, spojitý" - -#: src/panasonicmn.cpp:95 -msgid "Tele-macro" -msgstr "Tele-makro" - -#: src/panasonicmn.cpp:103 -msgid "Scenery" -msgstr "scenéria" - -# exif-exposureprogram-4 -#: src/panasonicmn.cpp:108 -msgid "Shutter-speed priority" -msgstr "priorita rýchlosti uzávierky" - -#: src/panasonicmn.cpp:112 -#, fuzzy -msgid "Movie preview" -msgstr "Zapisuje sa" - -#: src/panasonicmn.cpp:113 -msgid "Panning" -msgstr "posúvanie" - -#: src/panasonicmn.cpp:114 -#, fuzzy -msgid "Simple" -msgstr "Jednotlivý" - -#: src/panasonicmn.cpp:115 -#, fuzzy -msgid "Color effects" -msgstr "Farebný efekt" - -#: src/panasonicmn.cpp:119 -msgid "Night scenery" -msgstr "noÄná scéna" - -#: src/panasonicmn.cpp:121 -#, fuzzy -msgid "Baby" -msgstr "Autor" - -# exif-sharpness-1 -#: src/panasonicmn.cpp:122 -#, fuzzy -msgid "Soft skin" -msgstr "mäkký" - -#: src/panasonicmn.cpp:123 src/pentaxmn.cpp:484 -msgid "Candlelight" -msgstr "svetlo svieÄky" - -#: src/panasonicmn.cpp:124 -#, fuzzy -msgid "Starry night" -msgstr "Å tandardné svetlo A" - -#: src/panasonicmn.cpp:125 -#, fuzzy -msgid "High sensitivity" -msgstr "ISO citlivosÅ¥" - -#: src/panasonicmn.cpp:126 -#, fuzzy -msgid "Panorama assist" -msgstr "panoráma" - -#: src/panasonicmn.cpp:129 -msgid "Aerial photo" -msgstr "" - -#: src/panasonicmn.cpp:132 -#, fuzzy -msgid "Intelligent ISO" -msgstr "Dĺžka intervalu" - -#: src/panasonicmn.cpp:133 -#, fuzzy -msgid "High speed continuous shooting" -msgstr "Nastavenie spojité zaostrenie" - -#: src/panasonicmn.cpp:134 -#, fuzzy -msgid "Intelligent auto" -msgstr "Dĺžka intervalu" - -#: src/panasonicmn.cpp:146 -msgid "Warm" -msgstr "Teplé" - -#: src/panasonicmn.cpp:147 -msgid "Cool" -msgstr "Chladné" - -#: src/panasonicmn.cpp:155 -msgid "Low/High quality" -msgstr "Nízka/vysoká kvalita" - -#: src/panasonicmn.cpp:156 -msgid "Infinite" -msgstr "nekoneÄno" - -#: src/panasonicmn.cpp:164 -#, fuzzy -msgid "Medium low" -msgstr "stredný 1" - -#: src/panasonicmn.cpp:165 -#, fuzzy -msgid "Medium high" -msgstr "stredný 1" - -#: src/panasonicmn.cpp:175 -msgid "Low (-1)" -msgstr "" - -#: src/panasonicmn.cpp:176 -#, fuzzy -msgid "High (+1)" -msgstr "vysoká" - -#: src/panasonicmn.cpp:177 -msgid "Lowest (-2)" -msgstr "" - -#: src/panasonicmn.cpp:178 -#, fuzzy -msgid "Highest (+2)" -msgstr "vysoká" - -#: src/panasonicmn.cpp:184 -msgid "10s" -msgstr "10s" - -#: src/panasonicmn.cpp:185 -msgid "2s" -msgstr "2s" - -#: src/panasonicmn.cpp:205 -msgid "EX optics" -msgstr "" - -#: src/panasonicmn.cpp:212 -msgid "Telephoto" -msgstr "" - -#: src/panasonicmn.cpp:219 src/properties.cpp:890 -#, fuzzy -msgid "Home" -msgstr "Rím" - -#: src/panasonicmn.cpp:225 -#, fuzzy -msgid "Standard (color)" -msgstr "Å tandardný tvar" - -#: src/panasonicmn.cpp:226 -#, fuzzy -msgid "Dynamic (color)" -msgstr "Dynamická oblasÅ¥" - -#: src/panasonicmn.cpp:227 -#, fuzzy -msgid "Nature (color)" -msgstr "Prirodzená farba" - -#: src/panasonicmn.cpp:228 -#, fuzzy -msgid "Smooth (color)" -msgstr "Hladký" - -#: src/panasonicmn.cpp:229 -#, fuzzy -msgid "Standard (B&W)" -msgstr "Å tandardný (100%)" - -#: src/panasonicmn.cpp:230 -#, fuzzy -msgid "Dynamic (B&W)" -msgstr "Dynamická oblasÅ¥" - -#: src/panasonicmn.cpp:231 -#, fuzzy -msgid "Smooth (B&W)" -msgstr "Hladký" - -#: src/panasonicmn.cpp:245 -msgid "Audio" -msgstr "Audio" - -#: src/panasonicmn.cpp:248 -msgid "White balance adjustment" -msgstr "Nastavenie vyváženia bielej" - -#: src/panasonicmn.cpp:249 -msgid "FlashBias" -msgstr "Skreslenie blesku" - -# exif-exifversion -#: src/panasonicmn.cpp:251 src/tags.cpp:190 -msgid "Exif version" -msgstr "Verzia EXIF" - -#: src/panasonicmn.cpp:253 -msgid "Color Effect" -msgstr "Farebný efekt" - -#: src/panasonicmn.cpp:253 -msgid "Color effect" -msgstr "Farebný efekt" - -#: src/panasonicmn.cpp:254 -msgid "" -"Time in 1/100 s from when the camera was powered on to when the image is " -"written to memory card" -msgstr "" - -#: src/panasonicmn.cpp:255 -msgid "Burst Mode" -msgstr "Režim dávky" - -#: src/panasonicmn.cpp:255 -msgid "Burst mode" -msgstr "Režim dávky" - -#: src/panasonicmn.cpp:258 -msgid "NoiseReduction" -msgstr "Redukcia Å¡umu" - -#: src/panasonicmn.cpp:259 -msgid "Self Timer" -msgstr "Samospúšť" - -#: src/panasonicmn.cpp:264 src/panasonicmn.cpp:286 -#, fuzzy -msgid "Baby Age" -msgstr "Autor" - -#: src/panasonicmn.cpp:264 src/panasonicmn.cpp:286 -msgid "Baby (or pet) age" -msgstr "" - -#: src/panasonicmn.cpp:265 -#, fuzzy -msgid "Optical Zoom Mode" -msgstr "Å peciálny režim" - -#: src/panasonicmn.cpp:265 -#, fuzzy -msgid "Optical zoom mode" -msgstr "Režim filmu" - -#: src/panasonicmn.cpp:266 -#, fuzzy -msgid "Conversion Lens" -msgstr "Verzie" - -#: src/panasonicmn.cpp:266 -#, fuzzy -msgid "Conversion lens" -msgstr "Hodnota jasu" - -#: src/panasonicmn.cpp:267 -msgid "Travel Day" -msgstr "Cestovanie" - -#: src/panasonicmn.cpp:267 -msgid "Travel day" -msgstr "Cestovanie" - -#: src/panasonicmn.cpp:269 -#, fuzzy -msgid "World Time Location" -msgstr "Miesto záberu" - -#: src/panasonicmn.cpp:269 -#, fuzzy -msgid "World time location" -msgstr "Miesto záberu" - -#: src/panasonicmn.cpp:270 -#, fuzzy -msgid "Program ISO" -msgstr "Program" - -#: src/panasonicmn.cpp:274 -#, fuzzy -msgid "WB Adjust AB" -msgstr "Úpravy tónu" - -#: src/panasonicmn.cpp:274 -msgid "WB adjust AB. Positive is a shift toward blue." -msgstr "" - -#: src/panasonicmn.cpp:275 -#, fuzzy -msgid "WB Adjust GM" -msgstr "Úpravy tónu" - -#: src/panasonicmn.cpp:275 -msgid "WBAdjustGM. Positive is a shift toward green." -msgstr "" - -#: src/panasonicmn.cpp:278 -#, fuzzy -msgid "Accessory Type" -msgstr "Typ Å¡oÅ¡pviek" - -#: src/panasonicmn.cpp:278 -#, fuzzy -msgid "Accessory type" -msgstr "typ Å¡oÅ¡oviek" - -#: src/panasonicmn.cpp:281 -#, fuzzy -msgid "MakerNote Version" -msgstr "Poznámky zhotoviteľa - verzia" - -#: src/panasonicmn.cpp:281 -#, fuzzy -msgid "MakerNote version" -msgstr "Poznámky zhotoviteľa - verzia" - -#: src/panasonicmn.cpp:283 src/panasonicmn.cpp:345 -#, fuzzy -msgid "WB Red Level" -msgstr "WB_RGGBLevelsShade" - -#: src/panasonicmn.cpp:283 src/panasonicmn.cpp:345 -#, fuzzy -msgid "WB red level" -msgstr "Úroveň Äiernej" - -#: src/panasonicmn.cpp:284 src/panasonicmn.cpp:346 -#, fuzzy -msgid "WB Green Level" -msgstr "Úroveň Äiernej" - -#: src/panasonicmn.cpp:284 src/panasonicmn.cpp:346 -#, fuzzy -msgid "WB green level" -msgstr "Úroveň Äiernej" - -#: src/panasonicmn.cpp:285 src/panasonicmn.cpp:347 -#, fuzzy -msgid "WB Blue Level" -msgstr "WB_RGGBLevelsShade" - -#: src/panasonicmn.cpp:285 src/panasonicmn.cpp:347 -#, fuzzy -msgid "WB blue level" -msgstr "Úroveň Äiernej" - -#: src/panasonicmn.cpp:288 -msgid "Unknown PanasonicMakerNote tag" -msgstr "Neznáma znaÄka PanasonicMakerNote" - -#: src/panasonicmn.cpp:305 -#, fuzzy -msgid "Spot mode on" -msgstr "Bodový režim" - -#: src/panasonicmn.cpp:306 -msgid "Spot mode off or 3-area (high speed)" -msgstr "" - -#: src/panasonicmn.cpp:307 -#, fuzzy -msgid "Spot focussing" -msgstr "Bodové zaostrenie" - -#: src/panasonicmn.cpp:308 -msgid "5-area" -msgstr "" - -#: src/panasonicmn.cpp:309 -msgid "1-area" -msgstr "" - -#: src/panasonicmn.cpp:310 -#, fuzzy -msgid "1-area (high speed)" -msgstr "Orezanie vysoká rýchlosÅ¥" - -#: src/panasonicmn.cpp:311 -msgid "3-area (auto)" -msgstr "" - -#: src/panasonicmn.cpp:312 -msgid "3-area (left)" -msgstr "" - -#: src/panasonicmn.cpp:313 -msgid "3-area (center)" -msgstr "" - -#: src/panasonicmn.cpp:314 -msgid "3-area (right)" -msgstr "" - -#: src/panasonicmn.cpp:326 -msgid " EV" -msgstr " EV" - -#: src/panasonicmn.cpp:335 -#, fuzzy -msgid "Panasonic raw version" -msgstr "Verzia firmvéru" - -#: src/panasonicmn.cpp:336 -#, fuzzy -msgid "Sensor Width" -msgstr "OrezaÅ¥ šírku" - -#: src/panasonicmn.cpp:336 -#, fuzzy -msgid "Sensor width" -msgstr "OrezaÅ¥ šírku" - -#: src/panasonicmn.cpp:337 -#, fuzzy -msgid "Sensor Height" -msgstr "ÄŒistenie snímaÄa" - -#: src/panasonicmn.cpp:337 -#, fuzzy -msgid "Sensor height" -msgstr "ÄŒistenie snímaÄa" - -#: src/panasonicmn.cpp:338 -#, fuzzy -msgid "Sensor Top Border" -msgstr "Teplota snímaÄa" - -#: src/panasonicmn.cpp:338 -#, fuzzy -msgid "Sensor top border" -msgstr "Teplota snímaÄa" - -#: src/panasonicmn.cpp:339 -#, fuzzy -msgid "Sensor Left Border" -msgstr "Teplota snímaÄa" - -#: src/panasonicmn.cpp:339 -#, fuzzy -msgid "Sensor left border" -msgstr "Teplota snímaÄa" - -#: src/panasonicmn.cpp:342 -msgid "Red balance (found in Digilux 2 RAW images)" -msgstr "" - -#: src/panasonicmn.cpp:349 src/tags.cpp:465 -msgid "Manufacturer" -msgstr "Výrobca" - -#: src/panasonicmn.cpp:349 -msgid "The manufacturer of the recording equipment" -msgstr "" - -#: src/panasonicmn.cpp:350 src/properties.cpp:518 src/tags.cpp:471 -msgid "Model" -msgstr "Model" - -#: src/panasonicmn.cpp:350 -#, fuzzy -msgid "The model name or model number of the equipment" -msgstr "Názov scény" - -# exif-stripoffsets -#: src/panasonicmn.cpp:351 src/tags.cpp:477 -msgid "Strip Offsets" -msgstr "umiestnenie obrazových dát" - -# exif-stripoffsets -#: src/panasonicmn.cpp:351 -#, fuzzy -msgid "Strip offsets" -msgstr "umiestnenie obrazových dát" - -#: src/panasonicmn.cpp:352 src/properties.cpp:485 src/tags.cpp:484 -msgid "Orientation" -msgstr "Orientácia" - -# exif-rowsperstrip -#: src/panasonicmn.cpp:353 -#, fuzzy -msgid "Rows Per Strip" -msgstr "riadkov na prúžok" - -#: src/panasonicmn.cpp:353 -#, fuzzy -msgid "The number of rows per strip" -msgstr "PoÄet úderov." - -# exif-stripbytecounts -#: src/panasonicmn.cpp:354 -#, fuzzy -msgid "Strip Byte Counts" -msgstr "bajtov na komprimovaný prúžok" - -# exif-stripbytecounts -#: src/panasonicmn.cpp:354 -#, fuzzy -msgid "Strip byte counts" -msgstr "bajtov na komprimovaný prúžok" - -#: src/panasonicmn.cpp:355 -#, fuzzy -msgid "Raw Data Offset" -msgstr "umiestnenie IFD" - -#: src/panasonicmn.cpp:355 -#, fuzzy -msgid "Raw data offset" -msgstr "HlaviÄka, ofset" - -#: src/panasonicmn.cpp:356 src/tags.cpp:790 -msgid "Exif IFD Pointer" -msgstr "" - -#: src/panasonicmn.cpp:356 -msgid "A pointer to the Exif IFD" -msgstr "" - -#: src/panasonicmn.cpp:357 src/tags.cpp:801 -#, fuzzy -msgid "GPS Info IFD Pointer" -msgstr "IFD ukazovateľ interoperability" - -#: src/panasonicmn.cpp:357 -msgid "A pointer to the GPS Info IFD" -msgstr "" - -#: src/panasonicmn.cpp:359 -#, fuzzy -msgid "Unknown PanasonicRaw tag" -msgstr "Neznáma znaÄka PanasonicMakerNote" - -#: src/pentaxmn.cpp:57 -msgid "Night-Scene" -msgstr "NoÄná scéna" - -#: src/pentaxmn.cpp:63 -msgid "Optio 330/430" -msgstr "Optio 330/430" - -#: src/pentaxmn.cpp:64 -msgid "Optio 230" -msgstr "Optio 230" - -#: src/pentaxmn.cpp:65 -msgid "Optio 330GS" -msgstr "Optio 330GS" - -#: src/pentaxmn.cpp:66 -msgid "Optio 450/550" -msgstr "Optio 450/550" - -#: src/pentaxmn.cpp:67 -msgid "Optio S" -msgstr "Optio S" - -#: src/pentaxmn.cpp:68 -msgid "*ist D" -msgstr "*ist D" - -#: src/pentaxmn.cpp:69 -msgid "Optio 33L" -msgstr "Optio 33L" - -#: src/pentaxmn.cpp:70 -msgid "Optio 33LF" -msgstr "Optio 33LF" - -#: src/pentaxmn.cpp:71 -msgid "Optio 33WR/43WR/555" -msgstr "Optio 33WR/43WR/555" - -#: src/pentaxmn.cpp:72 -msgid "Optio S4" -msgstr "Optio S4" - -#: src/pentaxmn.cpp:73 -msgid "Optio MX" -msgstr "Optio MX" - -#: src/pentaxmn.cpp:74 -msgid "Optio S40" -msgstr "Optio S40" - -#: src/pentaxmn.cpp:75 -msgid "Optio S4i" -msgstr "Optio S4i" - -#: src/pentaxmn.cpp:76 -msgid "Optio 30" -msgstr "Optio 30" - -#: src/pentaxmn.cpp:77 -msgid "Optio S30" -msgstr "Optio S30" - -#: src/pentaxmn.cpp:78 -msgid "Optio 750Z" -msgstr "Optio 750Z" - -#: src/pentaxmn.cpp:79 -msgid "Optio SV" -msgstr "Optio SV" - -#: src/pentaxmn.cpp:80 -msgid "Optio SVi" -msgstr "Optio SVi" - -#: src/pentaxmn.cpp:81 -msgid "Optio X" -msgstr "Optio X" - -#: src/pentaxmn.cpp:82 -msgid "Optio S5i" -msgstr "Optio S5i" - -#: src/pentaxmn.cpp:83 -msgid "Optio S50" -msgstr "Optio S50" - -#: src/pentaxmn.cpp:84 -msgid "*ist DS" -msgstr "*ist DS" - -#: src/pentaxmn.cpp:85 -msgid "Optio MX4" -msgstr "Optio MX4" - -#: src/pentaxmn.cpp:86 -msgid "Optio S5n" -msgstr "Optio S5n" - -#: src/pentaxmn.cpp:87 -msgid "Optio WP" -msgstr "Optio WP" - -#: src/pentaxmn.cpp:88 -msgid "Optio S55" -msgstr "Optio S55" - -#: src/pentaxmn.cpp:89 -msgid "Optio S5z" -msgstr "Optio S5z" - -#: src/pentaxmn.cpp:90 -msgid "*ist DL" -msgstr "*ist DL" - -#: src/pentaxmn.cpp:91 -msgid "Optio S60" -msgstr "Optio S60" - -#: src/pentaxmn.cpp:92 -msgid "Optio S45" -msgstr "Optio S45" - -#: src/pentaxmn.cpp:93 -msgid "Optio S6" -msgstr "Optio S6" - -#: src/pentaxmn.cpp:94 -msgid "Optio WPi" -msgstr "Optio WPi" - -#: src/pentaxmn.cpp:95 -msgid "BenQ DC X600" -msgstr "BenQ DC X600" - -#: src/pentaxmn.cpp:96 -msgid "*ist DS2" -msgstr "*ist DS2" - -#: src/pentaxmn.cpp:97 -msgid "Samsung GX-1S" -msgstr "Samsung GX-1S" - -#: src/pentaxmn.cpp:98 -msgid "Optio A10" -msgstr "Optio A10" - -#: src/pentaxmn.cpp:99 -msgid "*ist DL2" -msgstr "*ist DL2" - -#: src/pentaxmn.cpp:100 -msgid "Samsung GX-1L" -msgstr "Samsung GX-1L" - -#: src/pentaxmn.cpp:101 -msgid "K100D" -msgstr "K100D" - -#: src/pentaxmn.cpp:102 -msgid "K110D" -msgstr "K110D" - -#: src/pentaxmn.cpp:103 -msgid "K100D Super" -msgstr "K100D Super" - -#: src/pentaxmn.cpp:104 -#, fuzzy -msgid "Optio T10/T20" -msgstr "Optio T10" - -#: src/pentaxmn.cpp:105 -msgid "Optio W10" -msgstr "Optio W10" - -#: src/pentaxmn.cpp:106 -msgid "Optio M10" -msgstr "Optio M10" - -#: src/pentaxmn.cpp:107 -msgid "K10D" -msgstr "K10D" - -#: src/pentaxmn.cpp:108 -msgid "Samsung GX10" -msgstr "Samsung GX10" - -#: src/pentaxmn.cpp:109 -msgid "Optio S7" -msgstr "Optio S7" - -#: src/pentaxmn.cpp:110 -#, fuzzy -msgid "Optio L20" -msgstr "Optio 230" - -#: src/pentaxmn.cpp:111 -msgid "Optio M20" -msgstr "Optio M20" - -#: src/pentaxmn.cpp:112 -msgid "Optio W20" -msgstr "Optio W20" - -#: src/pentaxmn.cpp:113 -msgid "Optio A20" -msgstr "Optio A20" - -#: src/pentaxmn.cpp:114 -msgid "Optio M30" -msgstr "Optio M30" - -#: src/pentaxmn.cpp:115 -msgid "Optio E30" -msgstr "Optio E30" - -#: src/pentaxmn.cpp:116 -#, fuzzy -msgid "Optio E35" -msgstr "Optio E30" - -#: src/pentaxmn.cpp:117 -msgid "Optio T30" -msgstr "Optio T30" - -#: src/pentaxmn.cpp:118 -msgid "Optio W30" -msgstr "Optio W30" - -#: src/pentaxmn.cpp:119 -msgid "Optio A30" -msgstr "Optio A30" - -#: src/pentaxmn.cpp:120 -msgid "Optio E40" -msgstr "Optio E40" - -#: src/pentaxmn.cpp:121 -msgid "Optio M40" -msgstr "Optio M40" - -#: src/pentaxmn.cpp:122 -#, fuzzy -msgid "Optio Z10" -msgstr "Optio A10" - -#: src/pentaxmn.cpp:123 -#, fuzzy -msgid "K20D" -msgstr "K10D" - -#: src/pentaxmn.cpp:124 -#, fuzzy -msgid "Samsung GX20" -msgstr "Samsung GX10" - -#: src/pentaxmn.cpp:125 -msgid "Optio S10" -msgstr "Optio S10" - -#: src/pentaxmn.cpp:126 -#, fuzzy -msgid "Optio A40" -msgstr "Optio S40" - -#: src/pentaxmn.cpp:127 -#, fuzzy -msgid "Optio V10" -msgstr "Optio A10" - -#: src/pentaxmn.cpp:128 -#, fuzzy -msgid "K200D" -msgstr "K100D" - -#: src/pentaxmn.cpp:129 -#, fuzzy -msgid "Optio S12" -msgstr "Optio S10" - -#: src/pentaxmn.cpp:130 -#, fuzzy -msgid "Optio E50" -msgstr "Optio S50" - -#: src/pentaxmn.cpp:131 -#, fuzzy -msgid "Optio M50" -msgstr "Optio S50" - -#: src/pentaxmn.cpp:132 -#, fuzzy -msgid "Optio V20" -msgstr "Optio 230" - -#: src/pentaxmn.cpp:133 -#, fuzzy -msgid "Optio W60" -msgstr "Optio S60" - -#: src/pentaxmn.cpp:134 -#, fuzzy -msgid "Optio M60" -msgstr "Optio S60" - -#: src/pentaxmn.cpp:135 -#, fuzzy -msgid "Optio E60" -msgstr "Optio S60" - -#: src/pentaxmn.cpp:136 -#, fuzzy -msgid "K2000" -msgstr "K100D" - -#: src/pentaxmn.cpp:137 -msgid "K-m" -msgstr "" - -#: src/pentaxmn.cpp:138 -#, fuzzy -msgid "Optio P70" -msgstr "Optio 750Z" - -#: src/pentaxmn.cpp:139 -#, fuzzy -msgid "Optio E70" -msgstr "Optio E30" - -#: src/pentaxmn.cpp:140 -msgid "X70" -msgstr "" - -#: src/pentaxmn.cpp:141 -msgid "K-7" -msgstr "" - -#: src/pentaxmn.cpp:142 -#, fuzzy -msgid "Optio W80" -msgstr "Optio W10" - -#: src/pentaxmn.cpp:143 -#, fuzzy -msgid "Optio P80" -msgstr "Optio 30" - -#: src/pentaxmn.cpp:144 -#, fuzzy -msgid "Optio WS80" -msgstr "Optio S40" - -#: src/pentaxmn.cpp:145 -msgid "K-x" -msgstr "" - -#: src/pentaxmn.cpp:146 -#, fuzzy -msgid "645D" -msgstr "64" - -#: src/pentaxmn.cpp:147 -#, fuzzy -msgid "Optio I-10" -msgstr "Optio A10" - -#: src/pentaxmn.cpp:152 -msgid "Good" -msgstr "dobrý" - -#: src/pentaxmn.cpp:153 -msgid "Better" -msgstr "Lepší" - -#: src/pentaxmn.cpp:154 -msgid "Best" -msgstr "Najlepší" - -#: src/pentaxmn.cpp:155 -msgid "TIFF" -msgstr "TIFF" - -#: src/pentaxmn.cpp:157 -#, fuzzy -msgid "Premium" -msgstr "Stredný" - -#: src/pentaxmn.cpp:162 -msgid "640x480" -msgstr "640x480" - -#: src/pentaxmn.cpp:164 -msgid "1024x768" -msgstr "1024x768" - -#: src/pentaxmn.cpp:165 -msgid "1280x960" -msgstr "1280x960" - -#: src/pentaxmn.cpp:166 -msgid "1600x1200" -msgstr "1600x1200" - -#: src/pentaxmn.cpp:167 -msgid "2048x1536" -msgstr "2048x1536" - -#: src/pentaxmn.cpp:168 -msgid "2560x1920 or 2304x1728" -msgstr "2560x1920 alebo 2304x1728" - -#: src/pentaxmn.cpp:169 -msgid "3072x2304" -msgstr "3072x2304" - -#: src/pentaxmn.cpp:170 -msgid "3264x2448" -msgstr "3264x2448" - -#: src/pentaxmn.cpp:171 -msgid "320x240" -msgstr "320x240" - -#: src/pentaxmn.cpp:172 -msgid "2288x1712" -msgstr "2288x1712" - -#: src/pentaxmn.cpp:173 -msgid "2592x1944" -msgstr "2592x1944" - -#: src/pentaxmn.cpp:174 -msgid "2304x1728 or 2592x1944" -msgstr "2304x1728 alebo 2592x1944" - -#: src/pentaxmn.cpp:175 -msgid "3056x2296" -msgstr "3056x2296" - -#: src/pentaxmn.cpp:176 -msgid "2816x2212 or 2816x2112" -msgstr "2816x2212 alebo 2816x2112" - -#: src/pentaxmn.cpp:177 -msgid "3648x2736" -msgstr "3648x2736" - -#: src/pentaxmn.cpp:182 -msgid "Auto, Did not fire" -msgstr "auto, blesk sa nespustil" - -#: src/pentaxmn.cpp:184 -msgid "Auto, Did not fire, Red-eye reduction" -msgstr "automaticky, blesk sa nespustil, korekcia Äervených oÄí" - -#: src/pentaxmn.cpp:185 -msgid "Auto, Fired" -msgstr "auto, blesk sa spustil" - -#: src/pentaxmn.cpp:187 -msgid "Auto, Fired, Red-eye reduction" -msgstr "auto, blesk sa spustil, korekcia Äervených oÄí" - -#: src/pentaxmn.cpp:188 -msgid "On, Red-eye reduction" -msgstr "Zap., korekcia Äervených oÄí" - -#: src/pentaxmn.cpp:189 -msgid "On, Wireless" -msgstr "zapnuté, bezdrôtovo" - -#: src/pentaxmn.cpp:190 -msgid "On, Soft" -msgstr "zapnutý, mäkký" - -#: src/pentaxmn.cpp:191 -msgid "On, Slow-sync" -msgstr "zapnuté, pomalá synchr." - -#: src/pentaxmn.cpp:192 -msgid "On, Slow-sync, Red-eye reduction" -msgstr "zapnutý, pomalá synch., korekcia Äervených oÄí" - -#: src/pentaxmn.cpp:193 -msgid "On, Trailing-curtain Sync" -msgstr "zapnuté, synchr. koncovej záclony" - -#: src/pentaxmn.cpp:203 -msgid "Pan Focus" -msgstr "posúvaÅ¥ zaostrenie" - -# AF = automatické zaostrenie -#: src/pentaxmn.cpp:204 -msgid "AF-S" -msgstr "AZ-S" - -# AF = automatické zaostrenie -#: src/pentaxmn.cpp:205 -msgid "AF-C" -msgstr "AZ-C" - -# AF = automatické zaostrenie -#: src/pentaxmn.cpp:206 -#, fuzzy -msgid "AF-A" -msgstr "AZ-S" - -#: src/pentaxmn.cpp:212 -msgid "Fixed Center" -msgstr "pevný stred" - -#: src/pentaxmn.cpp:213 -#, fuzzy -msgid "Automatic Tracking AF" -msgstr "automatické zaostrenie" - -#: src/pentaxmn.cpp:214 -msgid "Face Recognition AF" -msgstr "" - -#: src/pentaxmn.cpp:231 -#, fuzzy -msgid "Fixed Center or multiple" -msgstr "pevný stred" - -#: src/pentaxmn.cpp:233 -#, fuzzy -msgid "Top-center" -msgstr "v strede" - -#: src/pentaxmn.cpp:239 -#, fuzzy -msgid "Bottom-center" -msgstr "vľavo dolu" - -#: src/pentaxmn.cpp:245 src/pentaxmn.cpp:267 src/pentaxmn.cpp:275 -msgid "50" -msgstr "50" - -#: src/pentaxmn.cpp:246 -msgid "64" -msgstr "64" - -#: src/pentaxmn.cpp:247 -msgid "80" -msgstr "80" - -#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:268 src/pentaxmn.cpp:277 -msgid "100" -msgstr "&" - -#: src/pentaxmn.cpp:249 -msgid "125" -msgstr "125" - -#: src/pentaxmn.cpp:250 -msgid "160" -msgstr "160" - -#: src/pentaxmn.cpp:251 src/pentaxmn.cpp:269 src/pentaxmn.cpp:270 -#: src/pentaxmn.cpp:279 -msgid "200" -msgstr "&" - -#: src/pentaxmn.cpp:252 -msgid "250" -msgstr "250" - -#: src/pentaxmn.cpp:253 -msgid "320" -msgstr "320" - -#: src/pentaxmn.cpp:254 src/pentaxmn.cpp:271 src/pentaxmn.cpp:281 -msgid "400" -msgstr "&" - -#: src/pentaxmn.cpp:255 -msgid "500" -msgstr "500" - -#: src/pentaxmn.cpp:256 -msgid "640" -msgstr "640" - -#: src/pentaxmn.cpp:257 src/pentaxmn.cpp:272 src/pentaxmn.cpp:283 -msgid "800" -msgstr "800" - -#: src/pentaxmn.cpp:258 -msgid "1000" -msgstr "1000" - -#: src/pentaxmn.cpp:259 -msgid "1250" -msgstr "1250" - -#: src/pentaxmn.cpp:260 src/pentaxmn.cpp:273 src/pentaxmn.cpp:285 -msgid "1600" -msgstr "1600" - -#: src/pentaxmn.cpp:261 -#, fuzzy -msgid "2000" -msgstr "&" - -#: src/pentaxmn.cpp:262 -#, fuzzy -msgid "2500" -msgstr "&" - -#: src/pentaxmn.cpp:263 src/pentaxmn.cpp:274 src/pentaxmn.cpp:287 -msgid "3200" -msgstr "3200" - -#: src/pentaxmn.cpp:264 -#, fuzzy -msgid "4000" -msgstr "&" - -#: src/pentaxmn.cpp:265 -#, fuzzy -msgid "5000" -msgstr "500" - -#: src/pentaxmn.cpp:266 -#, fuzzy -msgid "6400" -msgstr "&" - -#: src/pentaxmn.cpp:276 -#, fuzzy -msgid "70" -msgstr "50" - -#: src/pentaxmn.cpp:278 -#, fuzzy -msgid "140" -msgstr "10s" - -#: src/pentaxmn.cpp:280 -#, fuzzy -msgid "280" -msgstr "80" - -#: src/pentaxmn.cpp:282 -#, fuzzy -msgid "560" -msgstr "50" - -#: src/pentaxmn.cpp:284 -#, fuzzy -msgid "1100" -msgstr "&" - -#: src/pentaxmn.cpp:286 -#, fuzzy -msgid "2200" -msgstr "&" - -# exif-meteringmode-4 -#: src/pentaxmn.cpp:304 -msgid "Multi Segment" -msgstr "Viacbodový" - -#: src/pentaxmn.cpp:305 -msgid "Center Weighted" -msgstr "Stredovo vážený" - -# exif-lightsource-12 -#: src/pentaxmn.cpp:317 -msgid "DaylightFluorescent" -msgstr "denné svetlo, fluorescenÄné" - -# exif-lightsource-13 -#: src/pentaxmn.cpp:318 -msgid "DaywhiteFluorescent" -msgstr "biely deň, fluorescenÄné" - -# exif-lightsource-15 -#: src/pentaxmn.cpp:319 -msgid "WhiteFluorescent" -msgstr "biela, fluorescenÄná" - -#: src/pentaxmn.cpp:324 -msgid "User Selected" -msgstr "Vybrané používateľom" - -#: src/pentaxmn.cpp:329 -msgid "Auto (Daylight)" -msgstr "Auto (denné svetlo)" - -#: src/pentaxmn.cpp:330 -msgid "Auto (Shade)" -msgstr "Auto (tieň)" - -#: src/pentaxmn.cpp:331 -msgid "Auto (Flash)" -msgstr "Auto (blesk)" - -#: src/pentaxmn.cpp:332 -msgid "Auto (Tungsten)" -msgstr "Auto (volfrám)" - -#: src/pentaxmn.cpp:333 -msgid "Auto (DaywhiteFluorescent)" -msgstr "Auto (biely deň, fluorescenÄné)" - -#: src/pentaxmn.cpp:334 -msgid "Auto (WhiteFluorescent)" -msgstr "Auto (biela, fluorescenÄná)" - -#: src/pentaxmn.cpp:335 -msgid "Auto (Cloudy)" -msgstr "Auto (oblaÄno)" - -#: src/pentaxmn.cpp:337 -msgid "Preset (Fireworks?)" -msgstr "Å tandard (ohňostroj?)" - -#: src/pentaxmn.cpp:345 src/pentaxmn.cpp:358 -msgid "Med Low" -msgstr "stredne nízky" - -#: src/pentaxmn.cpp:346 src/pentaxmn.cpp:359 -msgid "Med High" -msgstr "stredne vysoký" - -#: src/pentaxmn.cpp:369 -msgid "Med Soft" -msgstr "stredne mäkký" - -#: src/pentaxmn.cpp:370 -msgid "Med Hard" -msgstr "stredne tvrdý" - -#: src/pentaxmn.cpp:371 -msgid "Very Soft" -msgstr "veľmi mäkký" - -#: src/pentaxmn.cpp:372 -msgid "Very Hard" -msgstr "veľmi tvrdý" - -#: src/pentaxmn.cpp:377 src/pentaxmn.cpp:960 -msgid "Home town" -msgstr "Domovské mesto" - -#: src/pentaxmn.cpp:383 -msgid "Pago Pago" -msgstr "Pago Pago" - -#: src/pentaxmn.cpp:384 -msgid "Honolulu" -msgstr "Honolulu" - -#: src/pentaxmn.cpp:385 -msgid "Anchorage" -msgstr "Ukotvenie" - -#: src/pentaxmn.cpp:386 -msgid "Vancouver" -msgstr "Vancouver" - -#: src/pentaxmn.cpp:387 -msgid "San Fransisco" -msgstr "San Fransisco" - -#: src/pentaxmn.cpp:388 -msgid "Los Angeles" -msgstr "Los Angeles" - -#: src/pentaxmn.cpp:389 -msgid "Calgary" -msgstr "Calgary" - -#: src/pentaxmn.cpp:390 -msgid "Denver" -msgstr "Denver" - -#: src/pentaxmn.cpp:391 -msgid "Mexico City" -msgstr "Mexico City" - -#: src/pentaxmn.cpp:392 -msgid "Chicago" -msgstr "Chicago" - -#: src/pentaxmn.cpp:393 -msgid "Miami" -msgstr "Miami" - -#: src/pentaxmn.cpp:394 -msgid "Toronto" -msgstr "Toronto" - -#: src/pentaxmn.cpp:395 -msgid "New York" -msgstr "New York" - -#: src/pentaxmn.cpp:396 -msgid "Santiago" -msgstr "Santiago" - -#: src/pentaxmn.cpp:397 -msgid "Caracus" -msgstr "Caracus" - -#: src/pentaxmn.cpp:398 -msgid "Halifax" -msgstr "Halifax" - -#: src/pentaxmn.cpp:399 -msgid "Buenos Aires" -msgstr "Buenos Aires" - -#: src/pentaxmn.cpp:400 -msgid "Sao Paulo" -msgstr "Sao Paulo" - -#: src/pentaxmn.cpp:401 -msgid "Rio de Janeiro" -msgstr "Rio de Janeiro" - -#: src/pentaxmn.cpp:402 -msgid "Madrid" -msgstr "Madrid" - -#: src/pentaxmn.cpp:403 -msgid "London" -msgstr "Londýn" - -#: src/pentaxmn.cpp:404 -msgid "Paris" -msgstr "Paríž" - -#: src/pentaxmn.cpp:405 -msgid "Milan" -msgstr "Miláno" - -#: src/pentaxmn.cpp:406 -msgid "Rome" -msgstr "Rím" - -#: src/pentaxmn.cpp:407 -msgid "Berlin" -msgstr "Berlín" - -#: src/pentaxmn.cpp:408 -msgid "Johannesburg" -msgstr "Johannesburg" - -#: src/pentaxmn.cpp:409 -msgid "Istanbul" -msgstr "Istambul" - -#: src/pentaxmn.cpp:410 -msgid "Cairo" -msgstr "Káhira" - -#: src/pentaxmn.cpp:411 -msgid "Jerusalem" -msgstr "Jeruzalem" - -#: src/pentaxmn.cpp:412 -msgid "Moscow" -msgstr "Moskva" - -#: src/pentaxmn.cpp:413 -msgid "Jeddah" -msgstr "Jeddah" - -#: src/pentaxmn.cpp:414 -msgid "Tehran" -msgstr "Teherán" - -#: src/pentaxmn.cpp:415 -msgid "Dubai" -msgstr "Dubaj" - -#: src/pentaxmn.cpp:416 -msgid "Karachi" -msgstr "KaráÄí" - -#: src/pentaxmn.cpp:417 -msgid "Kabul" -msgstr "Kábul" - -#: src/pentaxmn.cpp:418 -msgid "Male" -msgstr "Male" - -#: src/pentaxmn.cpp:419 -msgid "Delhi" -msgstr "Delhi" - -#: src/pentaxmn.cpp:420 -msgid "Colombo" -msgstr "Colombo" - -#: src/pentaxmn.cpp:421 -msgid "Kathmandu" -msgstr "Káthmandu" - -#: src/pentaxmn.cpp:422 -msgid "Dacca" -msgstr "Dacca" - -#: src/pentaxmn.cpp:423 -msgid "Yangon" -msgstr "Yangon" - -#: src/pentaxmn.cpp:424 -msgid "Bangkok" -msgstr "Bangkok" - -#: src/pentaxmn.cpp:425 -msgid "Kuala Lumpur" -msgstr "Kuala Lumpur" - -#: src/pentaxmn.cpp:426 -msgid "Vientiane" -msgstr "Vientiane" - -#: src/pentaxmn.cpp:427 -msgid "Singapore" -msgstr "Singapur" - -#: src/pentaxmn.cpp:428 -msgid "Phnom Penh" -msgstr "Phnom Pénh" - -#: src/pentaxmn.cpp:429 -msgid "Ho Chi Minh" -msgstr "Ho Chi Minh" - -#: src/pentaxmn.cpp:430 -msgid "Jakarta" -msgstr "Jakarta" - -#: src/pentaxmn.cpp:431 -msgid "Hong Kong" -msgstr "Hong Kong" - -#: src/pentaxmn.cpp:432 -msgid "Perth" -msgstr "Perth" - -#: src/pentaxmn.cpp:433 -msgid "Beijing" -msgstr "Peking" - -#: src/pentaxmn.cpp:434 -msgid "Shanghai" -msgstr "Å anghaj" - -#: src/pentaxmn.cpp:435 -msgid "Manila" -msgstr "Manila" - -#: src/pentaxmn.cpp:436 -msgid "Taipei" -msgstr "Tchaj-pej" - -#: src/pentaxmn.cpp:437 -msgid "Seoul" -msgstr "Soul" - -#: src/pentaxmn.cpp:438 -msgid "Adelaide" -msgstr "Adelaide" - -#: src/pentaxmn.cpp:439 -msgid "Tokyo" -msgstr "Tokio" - -#: src/pentaxmn.cpp:440 -msgid "Guam" -msgstr "Guam" - -#: src/pentaxmn.cpp:441 -msgid "Sydney" -msgstr "Sydney" - -#: src/pentaxmn.cpp:442 -msgid "Noumea" -msgstr "Noumea" - -#: src/pentaxmn.cpp:443 -msgid "Wellington" -msgstr "Wellington" - -#: src/pentaxmn.cpp:444 -msgid "Auckland" -msgstr "Auckland" - -#: src/pentaxmn.cpp:445 -msgid "Lima" -msgstr "Lima" - -#: src/pentaxmn.cpp:446 -msgid "Dakar" -msgstr "Dakar" - -#: src/pentaxmn.cpp:447 -msgid "Algiers" -msgstr "Algiers" - -#: src/pentaxmn.cpp:448 -msgid "Helsinki" -msgstr "Helsinki" - -#: src/pentaxmn.cpp:449 -msgid "Athens" -msgstr "Athény" - -#: src/pentaxmn.cpp:450 -msgid "Nairobi" -msgstr "Nairobi" - -#: src/pentaxmn.cpp:451 -msgid "Amsterdam" -msgstr "Amsterdam" - -#: src/pentaxmn.cpp:452 -msgid "Stockholm" -msgstr "Å tokholm" - -#: src/pentaxmn.cpp:453 -msgid "Lisbon" -msgstr "Lisabon" - -#: src/pentaxmn.cpp:454 -#, fuzzy -msgid "Copenhagen" -msgstr "Pokrytie" - -#: src/pentaxmn.cpp:459 -msgid "Unprocessed" -msgstr "Nespracovaný" - -#: src/pentaxmn.cpp:460 -msgid "Digital Filter" -msgstr "Digitálny filter" - -#: src/pentaxmn.cpp:461 -msgid "Cropped" -msgstr "Orezaný" - -#: src/pentaxmn.cpp:463 -msgid "Frame Synthesis?" -msgstr "Syntéza rámcov?" - -#: src/pentaxmn.cpp:469 src/pentaxmn.cpp:506 -msgid "MTF Program" -msgstr "Program MTF" - -#: src/pentaxmn.cpp:475 -msgid "Night Scene Portrait" -msgstr "NoÄný portrét" - -#: src/pentaxmn.cpp:476 -msgid "No Flash" -msgstr "Bez blesku" - -#: src/pentaxmn.cpp:479 -msgid "Surf & Snow" -msgstr "surfovanie & sneh" - -#: src/pentaxmn.cpp:482 -msgid "Kids" -msgstr "Deti" - -#: src/pentaxmn.cpp:487 -#, fuzzy -msgid "Stage Lighting" -msgstr "Výška obrázka" - -#: src/pentaxmn.cpp:488 -#, fuzzy -msgid "Night Snap" -msgstr "NoÄný záber" - -#: src/pentaxmn.cpp:490 -msgid "Auto PICT (Standard)" -msgstr "Auto PICT (Å¡tandard)" - -#: src/pentaxmn.cpp:491 -msgid "Auto PICT (Portrait)" -msgstr "Auto PICT (portrét)" - -#: src/pentaxmn.cpp:492 -msgid "Auto PICT (Landscape)" -msgstr "Auto PICT (krajinka)" - -#: src/pentaxmn.cpp:493 -msgid "Auto PICT (Macro)" -msgstr "Auto PICT (makro)" - -#: src/pentaxmn.cpp:494 -msgid "Auto PICT (Sport)" -msgstr "Auto PICT (Å¡port)" - -#: src/pentaxmn.cpp:497 src/pentaxmn.cpp:507 -msgid "Green Mode" -msgstr "Zelený režim" - -# exif-exposureprogram-4 -#: src/pentaxmn.cpp:498 src/pentaxmn.cpp:508 -msgid "Shutter Speed Priority" -msgstr "Priorita rýchlosti uzávierky" - -# exif-exposureprogram-3 -#: src/pentaxmn.cpp:499 src/pentaxmn.cpp:509 -msgid "Aperture Priority" -msgstr "Priorita clony" - -#: src/pentaxmn.cpp:501 src/pentaxmn.cpp:513 -msgid "Bulb" -msgstr "Žiarovka" - -#: src/pentaxmn.cpp:504 -msgid "Hi-speed Program" -msgstr "Vysokorýchlostný program" - -#: src/pentaxmn.cpp:505 -msgid "DOF Program" -msgstr "Program DOF" - -#: src/pentaxmn.cpp:510 -#, fuzzy -msgid "Program Tv Shift" -msgstr "Posunutie programu" - -#: src/pentaxmn.cpp:511 -#, fuzzy -msgid "Program Av Shift" -msgstr "Posunutie programu" - -# FUZZY exif-exposureprogram-3 -#: src/pentaxmn.cpp:514 -msgid "Aperture Priority (Off-Auto-Aperture)" -msgstr "Priorita clony (vyp. - auto - clona)" - -#: src/pentaxmn.cpp:515 -msgid "Manual (Off-Auto-Aperture)" -msgstr "RuÄné nastavenie (vyp. - auto - clona)" - -#: src/pentaxmn.cpp:516 -msgid "Bulb (Off-Auto-Aperture)" -msgstr "Žiarovka (vyp. - auto - clona)" - -#: src/pentaxmn.cpp:518 -msgid "Shutter Priority" -msgstr "Priorita uzávierky" - -#: src/pentaxmn.cpp:519 -msgid "Shutter & Aperture Priority AE" -msgstr "Priorita uzávierky a clony AE" - -#: src/pentaxmn.cpp:520 -msgid "Shutter & Aperture Priority AE (1)" -msgstr "Priorita uzávierky a clony AE (1)" - -# FUZZY exif-exposureprogram-4 -#: src/pentaxmn.cpp:521 -msgid "Sensitivity Priority AE" -msgstr "Priorita citlivosti AE" - -# FUZZY exif-exposureprogram-4 -#: src/pentaxmn.cpp:522 -msgid "Sensitivity Priority AE (1)" -msgstr "Priorita citlivosti AE (1)" - -#: src/pentaxmn.cpp:523 -msgid "Flash X-Sync Speed AE" -msgstr "Blesk synch. s rýchlosÅ¥ou AE" - -#: src/pentaxmn.cpp:524 -msgid "Flash X-Sync Speed AE (1)" -msgstr "Blesk synch. s rýchlosÅ¥ou AE (1)" - -#: src/pentaxmn.cpp:527 -msgid "Video (30 fps)" -msgstr "" - -#: src/pentaxmn.cpp:528 -msgid "Video (24 fps)" -msgstr "" - -#: src/pentaxmn.cpp:535 -#, fuzzy -msgid "Continuous (Hi)" -msgstr "Spojitý" - -#: src/pentaxmn.cpp:536 src/sonymn.cpp:223 -#, fuzzy -msgid "Burst" -msgstr "Režim dávky" - -#: src/pentaxmn.cpp:538 -msgid "Self-timer (12 sec)" -msgstr "samospúšť (12 sek)" - -#: src/pentaxmn.cpp:539 -msgid "Self-timer (2 sec)" -msgstr "samospúšť (2 sek)" - -#: src/pentaxmn.cpp:540 -#, fuzzy -msgid "Remote Control (3 sec)" -msgstr "Diaľkové ovládanie?" - -#: src/pentaxmn.cpp:541 -#, fuzzy -msgid "Remote Control" -msgstr "Diaľkové ovládanie?" - -#: src/pentaxmn.cpp:543 src/properties.cpp:883 -#, fuzzy -msgid "Video" -msgstr "Å iroké" - -#: src/pentaxmn.cpp:554 -msgid "M-42 or No Lens" -msgstr "Å¡oÅ¡ovky M-42 alebo žiadne" - -#: src/pentaxmn.cpp:555 -msgid "K,M Lens" -msgstr "Å¡oÅ¡ovky K,M" - -#: src/pentaxmn.cpp:556 -msgid "A Series Lens" -msgstr "Å oÅ¡ovky série A" - -#: src/pentaxmn.cpp:703 -msgid "Bright" -msgstr "Jasný" - -#: src/pentaxmn.cpp:706 -msgid "Vibrant" -msgstr "" - -#: src/pentaxmn.cpp:708 -msgid "Reversal film" -msgstr "" - -#: src/pentaxmn.cpp:720 -#, fuzzy -msgid "Weakest" -msgstr "Západ" - -#: src/pentaxmn.cpp:721 -msgid "Weak" -msgstr "Slabé" - -#: src/pentaxmn.cpp:722 -msgid "Strong" -msgstr "Silný" - -#: src/pentaxmn.cpp:832 -msgid "No extended bracketing" -msgstr "Bez rozšírených viacnásobných snímok" - -#: src/pentaxmn.cpp:838 -msgid "WB-BA" -msgstr "WB-BA" - -#: src/pentaxmn.cpp:841 -msgid "WB-GM" -msgstr "WB-GM" - -#: src/pentaxmn.cpp:853 -msgid "Unknown " -msgstr "Neznáme" - -#: src/pentaxmn.cpp:866 -msgid "Pentax Makernote version" -msgstr "Poznámka výrobcu Pentax" - -#: src/pentaxmn.cpp:869 -msgid "Camera shooting mode" -msgstr "Režim záberu fotoaparátu" - -#: src/pentaxmn.cpp:871 src/pentaxmn.cpp:872 -msgid "Resolution of a preview image" -msgstr "Rozlíšenie náhľadu" - -#: src/pentaxmn.cpp:874 -msgid "Length of a preview image" -msgstr "Dĺžka náhľadu" - -#: src/pentaxmn.cpp:875 -msgid "Size of an IFD containing a preview image" -msgstr "VeľkosÅ¥ IFD obsahujúceho náhľad obrázka" - -#: src/pentaxmn.cpp:880 -msgid "Model identification" -msgstr "Model" - -#: src/pentaxmn.cpp:881 -msgid "Pentax model idenfication" -msgstr "Identifikácia modelu Pentax" - -#: src/pentaxmn.cpp:883 src/pentaxmn.cpp:884 src/properties.cpp:150 -msgid "Date" -msgstr "Dátum" - -#: src/pentaxmn.cpp:886 src/pentaxmn.cpp:887 -msgid "Time" -msgstr "ÄŒas" - -#: src/pentaxmn.cpp:890 -msgid "Image quality settings" -msgstr "Nastavenie kvality obrázka" - -#: src/pentaxmn.cpp:893 -msgid "Image size settings" -msgstr "Nastavenie veľkosti obrázka" - -#: src/pentaxmn.cpp:897 -msgid "Flash mode settings" -msgstr "Nastavenie režimu blesku" - -#: src/pentaxmn.cpp:900 -msgid "Focus mode settings" -msgstr "Nastavenie režimu zaostrenia" - -#: src/pentaxmn.cpp:903 -msgid "Selected AF point" -msgstr "Vybraný bod AZ" - -# AF = automatické zaostrenie -#: src/pentaxmn.cpp:905 src/pentaxmn.cpp:906 -#, fuzzy -msgid "AF point in focus" -msgstr "Použité body automatického zaostrenia" - -#: src/pentaxmn.cpp:912 src/pentaxmn.cpp:913 -msgid "F-Number" -msgstr "Äíslo F" - -#: src/pentaxmn.cpp:915 -msgid "ISO sensitivity" -msgstr "ISO citlivosÅ¥" - -#: src/pentaxmn.cpp:916 -msgid "ISO sensitivity settings" -msgstr "Nastavenia citlivosti ISO" - -#: src/pentaxmn.cpp:923 src/pentaxmn.cpp:924 -msgid "MeteringMode" -msgstr "merací režim" - -#: src/pentaxmn.cpp:926 src/pentaxmn.cpp:927 -msgid "AutoBracketing" -msgstr "Viacnásobné snímky" - -#: src/pentaxmn.cpp:929 src/pentaxmn.cpp:930 -msgid "White ballance" -msgstr "Vyváženie bielej" - -#: src/pentaxmn.cpp:932 src/pentaxmn.cpp:933 -msgid "White ballance mode" -msgstr "Režim vyváženia bielej" - -#: src/pentaxmn.cpp:936 -#, fuzzy -msgid "Blue color balance" -msgstr "Vyváženie modrej" - -#: src/pentaxmn.cpp:939 -#, fuzzy -msgid "Red color balance" -msgstr "Vyváženie farieb ÄŒervená" - -#: src/pentaxmn.cpp:941 src/pentaxmn.cpp:942 -msgid "FocalLength" -msgstr "Ohnisková vzdialenosÅ¥" - -#: src/pentaxmn.cpp:956 src/pentaxmn.cpp:957 src/properties.cpp:657 -msgid "Location" -msgstr "Umiestnenie" - -#: src/pentaxmn.cpp:959 -msgid "Hometown" -msgstr "Domovské mesto" - -#: src/pentaxmn.cpp:965 -msgid "Hometown DST" -msgstr "Domovské mesto, letný Äas" - -#: src/pentaxmn.cpp:966 -msgid "Whether day saving time is active in home town" -msgstr "ÄŒi v domovskom meste prebieha letný Äas" - -#: src/pentaxmn.cpp:968 -msgid "Destination DST" -msgstr "Cieľová DST" - -#: src/pentaxmn.cpp:969 -msgid "Whether day saving time is active in destination" -msgstr "ÄŒi v cieľovom meste prebieha letný Äas" - -#: src/pentaxmn.cpp:971 src/pentaxmn.cpp:972 -#, fuzzy -msgid "DSPFirmwareVersion" -msgstr "Verzia firmvéru" - -#: src/pentaxmn.cpp:974 src/pentaxmn.cpp:975 -#, fuzzy -msgid "CPUFirmwareVersion" -msgstr "Verzia firmvéru" - -#: src/pentaxmn.cpp:981 -#, fuzzy -msgid "Light value" -msgstr "Hodnota jasu" - -#: src/pentaxmn.cpp:982 -msgid "Camera calculated light value, includes exposure compensation" -msgstr "" - -#: src/pentaxmn.cpp:998 src/pentaxmn.cpp:999 -#, fuzzy -msgid "Image area offset" -msgstr "VeľkosÅ¥ obrazových údajov" - -#: src/pentaxmn.cpp:1001 src/pentaxmn.cpp:1002 -#, fuzzy -msgid "Raw image size" -msgstr "VeľkosÅ¥ obrázka" - -#: src/pentaxmn.cpp:1005 src/pentaxmn.cpp:1006 -#, fuzzy -msgid "Preview image borders" -msgstr "ZobraziÅ¥ vložený obrázok" - -#: src/pentaxmn.cpp:1011 src/pentaxmn.cpp:1012 -#, fuzzy -msgid "Sensitivity adjust" -msgstr "ISO citlivosÅ¥" - -#: src/pentaxmn.cpp:1014 src/pentaxmn.cpp:1015 -msgid "Digital filter" -msgstr "Digitálny filter" - -#: src/pentaxmn.cpp:1019 -msgid "Camera temperature" -msgstr "Teplota fotoaparátu" - -#: src/pentaxmn.cpp:1032 src/pentaxmn.cpp:1033 -msgid "Image tone" -msgstr "Tón obrázka" - -#: src/pentaxmn.cpp:1035 src/pentaxmn.cpp:1036 -#, fuzzy -msgid "Colort temperature" -msgstr "Farebná teplota" - -#: src/pentaxmn.cpp:1039 -msgid "Shake reduction" -msgstr "Redukcia chvenia" - -#: src/pentaxmn.cpp:1040 -msgid "Shake reduction information" -msgstr "Informácie o redukcii chvenia" - -#: src/pentaxmn.cpp:1045 src/pentaxmn.cpp:1046 -#, fuzzy -msgid "Dynamic range expansion" -msgstr "Nastavenie dynamického rozsahu" - -#: src/pentaxmn.cpp:1048 src/pentaxmn.cpp:1049 -#, fuzzy -msgid "High ISO noise reduction" -msgstr "Vysoká redukcia Å¡umu ISO" - -#: src/pentaxmn.cpp:1051 src/pentaxmn.cpp:1052 -#, fuzzy -msgid "AF Adjustment" -msgstr "Úpravy tónu" - -#: src/pentaxmn.cpp:1055 src/pentaxmn.cpp:1056 -msgid "Black point" -msgstr "Äierny bod" - -#: src/pentaxmn.cpp:1058 src/pentaxmn.cpp:1059 -msgid "White point" -msgstr "biely bod" - -#: src/pentaxmn.cpp:1062 src/pentaxmn.cpp:1063 -#, fuzzy -msgid "ShotInfo" -msgstr "Info o snímke" - -#: src/pentaxmn.cpp:1065 src/pentaxmn.cpp:1066 -msgid "AEInfo" -msgstr "Info o AE" - -#: src/pentaxmn.cpp:1068 src/pentaxmn.cpp:1069 -msgid "LensInfo" -msgstr "Info o Å¡oÅ¡ovkách" - -#: src/pentaxmn.cpp:1071 src/pentaxmn.cpp:1072 -msgid "FlashInfo" -msgstr "Info o blesku" - -#: src/pentaxmn.cpp:1074 src/pentaxmn.cpp:1075 -msgid "AEMeteringSegments" -msgstr "Segmenty merania AZ" - -#: src/pentaxmn.cpp:1077 src/pentaxmn.cpp:1078 -msgid "FlashADump" -msgstr "FlashADump" - -#: src/pentaxmn.cpp:1080 src/pentaxmn.cpp:1081 -msgid "FlashBDump" -msgstr "FlashBDump" - -#: src/pentaxmn.cpp:1084 src/pentaxmn.cpp:1085 -msgid "WB_RGGBLevelsDaylight" -msgstr "WB_RGGBLevelsDaylight" - -#: src/pentaxmn.cpp:1087 src/pentaxmn.cpp:1088 -msgid "WB_RGGBLevelsShade" -msgstr "WB_RGGBLevelsShade" - -#: src/pentaxmn.cpp:1090 src/pentaxmn.cpp:1091 -msgid "WB_RGGBLevelsCloudy" -msgstr "WB_RGGBLevelsCloudy" - -#: src/pentaxmn.cpp:1093 src/pentaxmn.cpp:1094 -msgid "WB_RGGBLevelsTungsten" -msgstr "WB_RGGBLevelsTungsten" - -# exif-lightsource-15 -#: src/pentaxmn.cpp:1096 src/pentaxmn.cpp:1097 -msgid "WB_RGGBLevelsFluorescentD" -msgstr "WB_RGGBLevelsFluorescentD" - -# exif-lightsource-15 -#: src/pentaxmn.cpp:1099 src/pentaxmn.cpp:1100 -msgid "WB_RGGBLevelsFluorescentN" -msgstr "WB_RGGBLevelsFluorescentN" - -# exif-lightsource-15 -#: src/pentaxmn.cpp:1102 src/pentaxmn.cpp:1103 -msgid "WB_RGGBLevelsFluorescentW" -msgstr "WB_RGGBLevelsFluorescentW" - -#: src/pentaxmn.cpp:1105 src/pentaxmn.cpp:1106 -msgid "WB_RGGBLevelsFlash" -msgstr "WB_RGGBLevelsFlash" - -#: src/pentaxmn.cpp:1108 src/pentaxmn.cpp:1109 -msgid "CameraInfo" -msgstr "Info o fotoaparáte" - -#: src/pentaxmn.cpp:1111 src/pentaxmn.cpp:1112 -msgid "BatteryInfo" -msgstr "Info o batérii" - -#: src/pentaxmn.cpp:1114 src/pentaxmn.cpp:1115 -msgid "AFInfo" -msgstr "Info o AZ" - -#: src/pentaxmn.cpp:1117 src/pentaxmn.cpp:1118 -#, fuzzy -msgid "ColorInfo" -msgstr "Farba" - -#: src/pentaxmn.cpp:1125 -msgid "Unknown PentaxMakerNote tag" -msgstr "Neznáma znaÄka PentaxMakerNote" - -#: src/properties.cpp:102 -msgid "Dublin Core schema" -msgstr "" - -#: src/properties.cpp:103 -msgid "digiKam Photo Management schema" -msgstr "" - -#: src/properties.cpp:104 -msgid "KDE Image Program Interface schema" -msgstr "" - -#: src/properties.cpp:105 -msgid "XMP Basic schema" -msgstr "XMP základná schéma" - -#: src/properties.cpp:106 -msgid "XMP Rights Management schema" -msgstr "" - -#: src/properties.cpp:107 -msgid "XMP Media Management schema" -msgstr "" - -#: src/properties.cpp:108 -#, fuzzy -msgid "XMP Basic Job Ticket schema" -msgstr "XMP základná schéma" - -#: src/properties.cpp:109 -#, fuzzy -msgid "XMP Paged-Text schema" -msgstr "XMP základná schéma" - -#: src/properties.cpp:110 -#, fuzzy -msgid "XMP Dynamic Media schema" -msgstr "XMP základná schéma" - -#: src/properties.cpp:111 -msgid "Microsoft Photo schema" -msgstr "" - -#: src/properties.cpp:112 -msgid "Adobe PDF schema" -msgstr "Schéma Adobe PDF" - -#: src/properties.cpp:113 -msgid "Adobe photoshop schema" -msgstr "Schéma Adobe Photoshop" - -#: src/properties.cpp:114 -msgid "Camera Raw schema" -msgstr "RAW schéma fotoaparátu" - -#: src/properties.cpp:115 -msgid "Exif Schema for TIFF Properties" -msgstr "" - -#: src/properties.cpp:116 -msgid "Exif schema for Exif-specific Properties" -msgstr "" - -#: src/properties.cpp:117 -msgid "Exif schema for Additional Exif Properties" -msgstr "" - -#: src/properties.cpp:118 src/properties.cpp:119 -msgid "IPTC Core schema" -msgstr "" - -#: src/properties.cpp:120 src/properties.cpp:121 -msgid "IPTC Extension schema" -msgstr "" - -#: src/properties.cpp:122 -msgid "PLUS License Data Format schema" -msgstr "" - -#: src/properties.cpp:123 -msgid "iView Media Pro schema" -msgstr "" - -#: src/properties.cpp:124 -msgid "Expression Media schema" -msgstr "" - -#: src/properties.cpp:125 -msgid "Microsoft Photo 1.2 schema" -msgstr "" - -#: src/properties.cpp:126 -msgid "Microsoft Photo RegionInfo schema" -msgstr "" - -#: src/properties.cpp:127 -msgid "Microsoft Photo Region schema" -msgstr "" - -#: src/properties.cpp:128 -msgid "Metadata Working Group Regions schema" -msgstr "" - -#: src/properties.cpp:131 -msgid "Colorant structure" -msgstr "Å truktúra farbiva" - -#: src/properties.cpp:132 -msgid "Dimensions structure" -msgstr "Å truktúra rozmerov" - -#: src/properties.cpp:133 -msgid "Font structure" -msgstr "Å truktúra písma" - -#: src/properties.cpp:134 -msgid "Thumbnail structure" -msgstr "Å truktúra náhľadu" - -#: src/properties.cpp:135 -#, fuzzy -msgid "Resource Event structure" -msgstr "Å truktúra písma" - -#: src/properties.cpp:136 -#, fuzzy -msgid "ResourceRef structure" -msgstr "Å truktúra verzie" - -#: src/properties.cpp:137 -msgid "Version structure" -msgstr "Å truktúra verzie" - -#: src/properties.cpp:138 -msgid "Basic Job/Workflow structure" -msgstr "" - -#: src/properties.cpp:139 -#, fuzzy -msgid "Area structure" -msgstr "Å truktúra farbiva" - -#: src/properties.cpp:142 -msgid "Qualifier for xmp:Identifier" -msgstr "" - -#: src/properties.cpp:146 -msgid "Contributor" -msgstr "Prispievateľ" - -#: src/properties.cpp:146 -msgid "Contributors to the resource (other than the authors)." -msgstr "Prispeli do zdroja (okrem autorov)." - -#: src/properties.cpp:147 -msgid "Coverage" -msgstr "Pokrytie" - -#: src/properties.cpp:147 -msgid "" -"The spatial or temporal topic of the resource, the spatial applicability of " -"the resource, or the jurisdiction under which the resource is relevant." -msgstr "" -"Priestorová alebo Äasová téma zdroja, priestorová aplikovateľkosÅ¥ zdroja " -"alebo jurisdikcia, v ktorej je zdroj relevantný." - -#: src/properties.cpp:149 -msgid "Creator" -msgstr "Tvorca" - -#: src/properties.cpp:149 -msgid "" -"The authors of the resource (listed in order of precedence, if significant)." -msgstr "Autori zdroja (uvedení v poradí, ak je to dôležité)." - -#: src/properties.cpp:150 -msgid "Date(s) that something interesting happened to the resource." -msgstr "Dátumy, kedy sa so zdrojom udialo nieÄo významné." - -#: src/properties.cpp:151 -msgid "" -"A textual description of the content of the resource. Multiple values may be " -"present for different languages." -msgstr "" -"Textový popis obsahu zdroja. Môže byÅ¥ prítomných viacero hodnôt v rôznych " -"jazykoch." - -#: src/properties.cpp:153 -msgid "Format" -msgstr "Formát" - -#: src/properties.cpp:153 -msgid "" -"The file format used when saving the resource. Tools and applications should " -"set this property to the save format of the data. It may include appropriate " -"qualifiers." -msgstr "" -"Formátu súboru použitý pri uložení zdroja. Nástroje a aplikácie by mali túto " -"vlastnosÅ¥ nastavovaÅ¥ na formát, v ktorom sú uložené dáta. Môže obsahovaÅ¥ " -"prísluÅ¡né kvalifikátory." - -#: src/properties.cpp:155 src/properties.cpp:210 -msgid "Identifier" -msgstr "Identifikátor" - -#: src/properties.cpp:155 -msgid "" -"Unique identifier of the resource. Recommended best practice is to identify " -"the resource by means of a string conforming to a formal identification " -"system." -msgstr "" -"JedineÄný identifikátor zdroja. OdporúÄa sa identifikovaÅ¥ zdroje reÅ¥azcom " -"zodpovedajúcim formalizovanému identifikaÄnému systému." - -#: src/properties.cpp:157 -msgid "An unordered array specifying the languages used in the resource." -msgstr "Nezoradené pole so zoznamom jazykov použitých v zdroji." - -#: src/properties.cpp:158 -msgid "Publisher" -msgstr "Vydavateľ" - -#: src/properties.cpp:158 -msgid "" -"An entity responsible for making the resource available. Examples of a " -"Publisher include a person, an organization, or a service. Typically, the " -"name of a Publisher should be used to indicate the entity." -msgstr "" -"Entita zodpovedná za sprístupnenie zdroja. Medzi príklady Vydavateľa patrí " -"osoba, organizácia alebo služba. Na oznaÄenie entity sa zvyÄajne používa " -"meno Vydavateľa." - -#: src/properties.cpp:161 -msgid "Relation" -msgstr "VzÅ¥ah" - -#: src/properties.cpp:161 -msgid "" -"Relationships to other documents. Recommended best practice is to identify " -"the related resource by means of a string conforming to a formal " -"identification system." -msgstr "" -"VzÅ¥ah k iným dokumentom. OdporúÄa sa identifikovaÅ¥ súvisiace zdroje reÅ¥azcom " -"zodpovedajúcim formalizovanému identifikaÄnému systému." - -#: src/properties.cpp:163 -msgid "Rights" -msgstr "Práva" - -#: src/properties.cpp:163 -msgid "" -"Informal rights statement, selected by language. Typically, rights " -"information includes a statement about various property rights associated " -"with the resource, including intellectual property rights." -msgstr "" -"Neformálny oznam o právach, vybraný podľa jazyka. Informácia o právach je " -"zvyÄajne vyjadrenie o rôznych vlastníckych právach súvisiacich so zdrojom " -"vrátane práv na intelektuálne vlastníctvo." - -#: src/properties.cpp:166 -msgid "Unique identifier of the work from which this resource was derived." -msgstr "JedineÄný identifikátor diela, z ktorého bol zdroj odvodený." - -#: src/properties.cpp:167 -msgid "" -"An unordered array of descriptive phrases or keywords that specify the topic " -"of the content of the resource." -msgstr "" -"Nezoradené pole popisných kľúÄových slov alebo spojení, ktoré Å¡pecifikujú " -"predmet obsahu zdroja." - -#: src/properties.cpp:169 -msgid "Title" -msgstr "Názov" - -#: src/properties.cpp:169 -msgid "" -"The title of the document, or the name given to the resource. Typically, it " -"will be a name by which the resource is formally known." -msgstr "" -"Titulok dokumentu alebo názov pridelený zdroju. ZvyÄajne to bude názov, " -"ktorým je zdroj formálne oznaÄovaný." - -#: src/properties.cpp:171 src/properties.cpp:979 -msgid "Type" -msgstr "Typ" - -#: src/properties.cpp:171 -msgid "A document type; for example, novel, poem, or working paper." -msgstr "Typ dokumentu, napr. román, báseň alebo pracovný dokument." - -#: src/properties.cpp:177 -msgid "Tags List" -msgstr "Zoznam znaÄiek" - -#: src/properties.cpp:177 -msgid "" -"The list of complete tags path as string. The path hierarchy is separated by " -"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." -msgstr "" -"Zoznam úplnej cesty ako reÅ¥azec. Hierarchia ciest sa oddeľuje znakom " -"„/“ (napr. „City/Paris/Monument/Eiffel Tower“)" - -#: src/properties.cpp:178 -#, fuzzy -msgid "Captions Author Names" -msgstr "Krajina" - -#: src/properties.cpp:178 -msgid "" -"The list of all captions author names for each language alternative captions " -"set in standard XMP tags." -msgstr "" - -#: src/properties.cpp:179 -#, fuzzy -msgid "Captions Date Time Stamps" -msgstr "aktualizuje sa Äasová známka" - -#: src/properties.cpp:179 -msgid "" -"The list of all captions date time stamps for each language alternative " -"captions set in standard XMP tags." -msgstr "" - -#: src/properties.cpp:180 src/tags.cpp:837 -#, fuzzy -msgid "Image History" -msgstr "Výška obrázka" - -#: src/properties.cpp:180 -msgid "" -"An XML based content to list all action processed on this image with image " -"editor (as crop, rotate, color corrections, adjustements, etc.)." -msgstr "" - -#: src/properties.cpp:181 -#, fuzzy -msgid "Lens Correction Settings" -msgstr "Nastavenia údajov Å¡oÅ¡oviek" - -#: src/properties.cpp:181 -msgid "" -"The list of Lens Correction tools settings used to fix lens distorsion. This " -"include Batch Queue Manager and Image editor tools based on LensFun library." -msgstr "" - -#: src/properties.cpp:182 -#, fuzzy -msgid "Color Label" -msgstr "Farebný priestor" - -#: src/properties.cpp:182 -msgid "" -"The color label assigned to this item. Possible values are \"0\": no label; " -"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " -"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." -msgstr "" - -#: src/properties.cpp:183 -#, fuzzy -msgid "Pick Label" -msgstr "OznaÄenie" - -#: src/properties.cpp:183 -msgid "" -"The pick label assigned to this item. Possible values are \"0\": no label; " -"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " -"accepted." -msgstr "" - -#: src/properties.cpp:189 -msgid "Enfuse Input Files" -msgstr "" - -#: src/properties.cpp:189 -msgid "" -"The list of files processed with Enfuse program through ExpoBlending tool." -msgstr "" - -#: src/properties.cpp:190 -#, fuzzy -msgid "Enfuse Settings" -msgstr "Nastavenia" - -#: src/properties.cpp:190 -msgid "" -"The list of Enfuse settings used to blend image stack with ExpoBlending tool." -msgstr "" - -#: src/properties.cpp:191 -msgid "PicasaWeb Item ID" -msgstr "" - -#: src/properties.cpp:191 -msgid "Item ID from PicasaWeb web service." -msgstr "" - -#: src/properties.cpp:192 -msgid "Yandex Fotki Item ID" -msgstr "" - -#: src/properties.cpp:192 -msgid "Item ID from Yandex Fotki web service." -msgstr "" - -#: src/properties.cpp:198 -msgid "Advisory" -msgstr "Poradca" - -#: src/properties.cpp:198 -msgid "" -"An unordered array specifying properties that were edited outside the " -"authoring application. Each item should contain a single namespace and XPath " -"separated by one ASCII space (U+0020)." -msgstr "" - -#: src/properties.cpp:201 -msgid "Base URL" -msgstr "Základné URL" - -#: src/properties.cpp:201 -msgid "" -"The base URL for relative URLs in the document content. If this document " -"contains Internet links, and those links are relative, they are relative to " -"this base URL. This property provides a standard way for embedded relative " -"URLs to be interpreted by tools. Web authoring tools should set the value " -"based on their notion of where URLs will be interpreted." -msgstr "" - -#: src/properties.cpp:206 -msgid "Create Date" -msgstr "Dátum vytvorenia" - -#: src/properties.cpp:206 -msgid "The date and time the resource was originally created." -msgstr "Dátum a Äas, kedy bol obrázok pôvodne vytvorený." - -#: src/properties.cpp:207 -msgid "Creator Tool" -msgstr "Vytvorené nástrojom" - -#: src/properties.cpp:207 -msgid "" -"The name of the first known tool used to create the resource. If history is " -"present in the metadata, this value should be equivalent to that of xmpMM:" -"History's softwareAgent property." -msgstr "" - -#: src/properties.cpp:210 -msgid "" -"An unordered array of text strings that unambiguously identify the resource " -"within a given context. An array item may be qualified with xmpidq:Scheme to " -"denote the formal identification system to which that identifier conforms. " -"Note: The dc:identifier property is not used because it lacks a defined " -"scheme qualifier and has been defined in the XMP Specification as a simple " -"(single-valued) property." -msgstr "" - -#: src/properties.cpp:215 -msgid "Label" -msgstr "OznaÄenie" - -#: src/properties.cpp:215 -msgid "" -"A word or short phrase that identifies a document as a member of a user-" -"defined collection. Used to organize documents in a file browser." -msgstr "" - -#: src/properties.cpp:217 -msgid "Metadata Date" -msgstr "Dátum (metadáta)" - -#: src/properties.cpp:217 -msgid "" -"The date and time that any metadata for this resource was last changed. It " -"should be the same as or more recent than xmp:ModifyDate." -msgstr "" - -#: src/properties.cpp:219 -msgid "Modify Date" -msgstr "Dátum zmeny" - -#: src/properties.cpp:219 -msgid "" -"The date and time the resource was last modified. Note: The value of this " -"property is not necessarily the same as the file's system modification date " -"because it is set before the file is saved." -msgstr "" - -#: src/properties.cpp:222 -msgid "Nickname" -msgstr "Prezývka" - -#: src/properties.cpp:222 -msgid "A short informal name for the resource." -msgstr "" - -#: src/properties.cpp:223 -msgid "Rating" -msgstr "Hodnotenie" - -#: src/properties.cpp:223 -msgid "" -"A number that indicates a document's status relative to other documents, " -"used to organize documents in a file browser. Values are user-defined within " -"an application-defined range." -msgstr "" - -#: src/properties.cpp:226 -msgid "Thumbnails" -msgstr "Náhľady" - -#: src/properties.cpp:226 -msgid "" -"An alternative array of thumbnail images for a file, which can differ in " -"characteristics such as size or image encoding." -msgstr "" - -#: src/properties.cpp:233 -msgid "Certificate" -msgstr "Certifikát" - -#: src/properties.cpp:233 -msgid "Online rights management certificate." -msgstr "" - -#: src/properties.cpp:234 -msgid "Marked" -msgstr "OznaÄené" - -#: src/properties.cpp:234 -#, fuzzy -msgid "Indicates that this is a rights-managed resource." -msgstr "Dátumy, kedy sa so zdrojom udialo nieÄo významné." - -#: src/properties.cpp:235 -msgid "Owner" -msgstr "Vlastník" - -#: src/properties.cpp:235 -#, fuzzy -msgid "An unordered array specifying the legal owner(s) of a resource." -msgstr "Nezoradené pole so zoznamom jazykov použitých v zdroji." - -#: src/properties.cpp:236 -msgid "Usage Terms" -msgstr "Podmienky používania" - -#: src/properties.cpp:236 -msgid "Text instructions on how a resource can be legally used." -msgstr "" - -# exif-meteringmode-4 -#: src/properties.cpp:237 -#, fuzzy -msgid "Web Statement" -msgstr "element" - -#: src/properties.cpp:237 -msgid "" -"The location of a web page describing the owner and/or rights statement for " -"this resource." -msgstr "" - -#: src/properties.cpp:243 -msgid "Derived From" -msgstr "Odovodené od" - -#: src/properties.cpp:243 -msgid "" -"A reference to the original document from which this one is derived. It is a " -"minimal reference; missing components can be assumed to be unchanged. For " -"example, a new version might only need to specify the instance ID and " -"version number of the previous version, or a rendition might only need to " -"specify the instance ID and rendition class of the original." -msgstr "" - -#: src/properties.cpp:248 -msgid "Document ID" -msgstr "ID dokumentu" - -#: src/properties.cpp:248 -msgid "" -"The common identifier for all versions and renditions of a document. It " -"should be based on a UUID; see Document and Instance IDs below." -msgstr "" - -#: src/properties.cpp:250 -msgid "History" -msgstr "História" - -#: src/properties.cpp:250 -msgid "" -"An ordered array of high-level user actions that resulted in this resource. " -"It is intended to give human readers a general indication of the steps taken " -"to make the changes from the previous version to this one. The list should " -"be at an abstract level; it is not intended to be an exhaustive keystroke or " -"other detailed history." -msgstr "" - -#: src/properties.cpp:254 -msgid "Instance ID" -msgstr "ID príkladu" - -#: src/properties.cpp:254 -msgid "" -"An identifier for a specific incarnation of a document, updated each time a " -"file is saved. It should be based on a UUID; see Document and Instance IDs " -"below." -msgstr "" - -#: src/properties.cpp:256 -msgid "Managed From" -msgstr "Riadený z" - -#: src/properties.cpp:256 -msgid "" -"A reference to the document as it was prior to becoming managed. It is set " -"when a managed document is introduced to an asset management system that " -"does not currently own it. It may or may not include references to different " -"management systems." -msgstr "" - -#: src/properties.cpp:259 -msgid "Manager" -msgstr "Manažér" - -#: src/properties.cpp:259 -msgid "" -"The name of the asset management system that manages this resource. Along " -"with xmpMM: ManagerVariant, it tells applications which asset management " -"system to contact concerning this document." -msgstr "" - -#: src/properties.cpp:262 -#, fuzzy -msgid "Manage To" -msgstr "Riadený z" - -#: src/properties.cpp:262 -msgid "" -"A URI identifying the managed resource to the asset management system; the " -"presence of this property is the formal indication that this resource is " -"managed. The form and content of this URI is private to the asset management " -"system." -msgstr "" - -#: src/properties.cpp:265 -#, fuzzy -msgid "Manage UI" -msgstr "Manažér" - -#: src/properties.cpp:265 -msgid "" -"A URI that can be used to access information about the managed resource " -"through a web browser. It might require a custom browser plug-in." -msgstr "" - -#: src/properties.cpp:267 -#, fuzzy -msgid "Manager Variant" -msgstr "Manažér" - -#: src/properties.cpp:267 -msgid "" -"Specifies a particular variant of the asset management system. The format of " -"this property is private to the specific asset management system." -msgstr "" - -#: src/properties.cpp:269 -msgid "Rendition Class" -msgstr "RoÄník vydania" - -#: src/properties.cpp:269 -msgid "" -"The rendition class name for this resource. This property should be absent " -"or set to default for a document version that is not a derived rendition." -msgstr "" - -#: src/properties.cpp:271 -msgid "Rendition Params" -msgstr "Parametre interpretácie" - -#: src/properties.cpp:271 -msgid "" -"Can be used to provide additional rendition parameters that are too complex " -"or verbose to encode in xmpMM: RenditionClass." -msgstr "" - -#: src/properties.cpp:273 -msgid "Version ID" -msgstr "ID verzie" - -#: src/properties.cpp:273 -msgid "" -"The document version identifier for this resource. Each version of a " -"document gets a new identifier, usually simply by incrementing integers 1, " -"2, 3 . . . and so on. Media management systems can have other conventions or " -"support branching which requires a more complex scheme." -msgstr "" - -#: src/properties.cpp:277 -msgid "Versions" -msgstr "Verzie" - -#: src/properties.cpp:277 -msgid "" -"The version history associated with this resource. Entry [1] is the oldest " -"known version for this document, entry [last()] is the most recent version. " -"Typically, a media management system would fill in the version information " -"in the metadata on check-in. It is not guaranteed that a complete history " -"versions from the first to this one will be present in the xmpMM:Versions " -"property. Interior version information can be compressed or eliminated and " -"the version history can be truncated at some point." -msgstr "" - -#: src/properties.cpp:283 -msgid "Last URL" -msgstr "Posledný URL" - -#: src/properties.cpp:283 -msgid "Deprecated for privacy protection." -msgstr "" - -#: src/properties.cpp:284 -msgid "Rendition Of" -msgstr "Vydanie" - -#: src/properties.cpp:284 -msgid "" -"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " -"which this is a rendition." -msgstr "" - -#: src/properties.cpp:286 -msgid "Save ID" -msgstr "UložiÅ¥ ID" - -#: src/properties.cpp:286 -msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." -msgstr "" - -#: src/properties.cpp:292 -#, fuzzy -msgid "Job Reference" -msgstr "ReferenÄný dátum" - -#: src/properties.cpp:292 -msgid "" -"References an external job management file for a job process in which the " -"document is being used. Use of job names is under user control. Typical use " -"would be to identify all documents that are part of a particular job or " -"contract. There are multiple values because there can be more than one job " -"using a particular document at any time, and it can also be useful to keep " -"historical information about what jobs a document was part of previously." -msgstr "" - -#: src/properties.cpp:301 -msgid "Maximum Page Size" -msgstr "Maximálna veľkosÅ¥ stránky" - -#: src/properties.cpp:301 -msgid "" -"The size of the largest page in the document (including any in contained " -"documents)." -msgstr "" - -#: src/properties.cpp:302 -msgid "Number of Pages" -msgstr "PoÄet stránok" - -#: src/properties.cpp:302 -msgid "" -"The number of pages in the document (including any in contained documents)." -msgstr "" - -#: src/properties.cpp:303 -msgid "Fonts" -msgstr "Písma" - -#: src/properties.cpp:303 -msgid "" -"An unordered array of fonts that are used in the document (including any in " -"contained documents)." -msgstr "" - -#: src/properties.cpp:304 -msgid "Colorants" -msgstr "Farbivá" - -#: src/properties.cpp:304 -msgid "" -"An ordered array of colorants (swatches) that are used in the document " -"(including any in contained documents)." -msgstr "" - -#: src/properties.cpp:305 -msgid "Plate Names" -msgstr "Názvy plôch" - -#: src/properties.cpp:305 -msgid "" -"An ordered array of plate names that are needed to print the document " -"(including any in contained documents)." -msgstr "" - -#: src/properties.cpp:311 -#, fuzzy -msgid "Project Reference" -msgstr "GPS referencia zemepisnej dĺžky" - -#: src/properties.cpp:311 -msgid "A reference to the project that created this file." -msgstr "" - -#: src/properties.cpp:312 -msgid "Video Frame Rate" -msgstr "PoÄet snímok za sekundu vo videu" - -#: src/properties.cpp:312 -msgid "The video frame rate. One of: 24, NTSC, PAL." -msgstr "PoÄet snímok za sekundu vo videu: 24, NTSC, PAL." - -#: src/properties.cpp:313 -msgid "Video Frame Size" -msgstr "VeľkosÅ¥ snímky vo videu" - -#: src/properties.cpp:313 -msgid "The frame size. For example: w:720, h: 480, unit:pixels" -msgstr "VeľkosÅ¥ snímky. Napr.: Å¡:720, v: 480, jednotka:pixely" - -#: src/properties.cpp:314 -msgid "Video Pixel Aspect Ratio" -msgstr "" - -#: src/properties.cpp:314 -msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" -msgstr "" - -#: src/properties.cpp:315 -#, fuzzy -msgid "Video Pixel Depth" -msgstr "Poradie video polí" - -#: src/properties.cpp:315 -msgid "" -"The size in bits of each color component of a pixel. Standard Windows 32-bit " -"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." -msgstr "" - -#: src/properties.cpp:317 -msgid "Video Color Space" -msgstr "Farebný priestor videa" - -#: src/properties.cpp:317 -msgid "" -"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " -"CCIR-709 (used for HD)." -msgstr "" - -#: src/properties.cpp:319 -#, fuzzy -msgid "Video Alpha Mode" -msgstr "Model Minolta" - -#: src/properties.cpp:319 -msgid "The alpha mode. One of: straight, pre-multiplied." -msgstr "" - -#: src/properties.cpp:320 -msgid "Video Alpha Premultiple Color" -msgstr "" - -#: src/properties.cpp:320 -msgid "" -"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " -"is pre-multiplied." -msgstr "" - -#: src/properties.cpp:322 -msgid "Video Alpha Unity Is Transparent" -msgstr "" - -#: src/properties.cpp:322 -msgid "When true, unity is clear, when false, it is opaque." -msgstr "" - -#: src/properties.cpp:323 -msgid "Video Compressor" -msgstr "Kompresia videa" - -#: src/properties.cpp:323 -#, fuzzy -msgid "Video compression used. For example, jpeg." -msgstr "Použitý zvukový komprimátor. Napríklad MP3." - -#: src/properties.cpp:324 -msgid "Video Field Order" -msgstr "Poradie video polí" - -#: src/properties.cpp:324 -msgid "The field order for video. One of: Upper, Lower, Progressive." -msgstr "" - -#: src/properties.cpp:325 -#, fuzzy -msgid "Pull Down" -msgstr "Dolu" - -#: src/properties.cpp:325 -msgid "" -"The sampling phase of film to be converted to video (pull-down). One of: " -"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " -"WWWSS_24p, WWSSW_24p." -msgstr "" - -#: src/properties.cpp:327 -#, fuzzy -msgid "Audio Sample Rate" -msgstr "RýchlosÅ¥ zvuku" - -#: src/properties.cpp:327 -msgid "" -"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." -msgstr "" - -#: src/properties.cpp:328 -#, fuzzy -msgid "Audio Sample Type" -msgstr "Typ audio" - -#: src/properties.cpp:328 -msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." -msgstr "" - -#: src/properties.cpp:329 -#, fuzzy -msgid "Audio Channel Type" -msgstr "Typ audio" - -#: src/properties.cpp:329 -msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." -msgstr "" - -#: src/properties.cpp:330 -msgid "Audio Compressor" -msgstr "Kompresia zvuku" - -#: src/properties.cpp:330 -msgid "The audio compression used. For example, MP3." -msgstr "Použitý zvukový komprimátor. Napríklad MP3." - -#: src/properties.cpp:331 -msgid "Speaker Placement" -msgstr "Poloha reproduktora" - -#: src/properties.cpp:331 -msgid "" -"A description of the speaker angles from center front in degrees. For " -"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " -"-110, Right Surround = 110\"" -msgstr "" - -#: src/properties.cpp:333 -#, fuzzy -msgid "File Data Rate" -msgstr "Dátum Minolta" - -#: src/properties.cpp:333 -msgid "" -"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" -"sec" -msgstr "" - -#: src/properties.cpp:334 -msgid "Tape Name" -msgstr "Názov pásky" - -#: src/properties.cpp:334 -msgid "" -"The name of the tape from which the clip was captured, as set during the " -"capture process." -msgstr "" - -#: src/properties.cpp:335 -#, fuzzy -msgid "Alternative Tape Name" -msgstr "Názov pásky" - -#: src/properties.cpp:335 -msgid "" -"An alternative tape name, set via the project window or timecode dialog in " -"Premiere. If an alternative name has been set and has not been reverted, " -"that name is displayed." -msgstr "" - -#: src/properties.cpp:337 -msgid "Start Time Code" -msgstr "Kód Äasu zaÄiatku" - -#: src/properties.cpp:337 -msgid "" -"The timecode of the first frame of video in the file, as obtained from the " -"device control." -msgstr "" - -#: src/properties.cpp:338 -#, fuzzy -msgid "Alternative Time code" -msgstr "Kód Äasu zaÄiatku" - -#: src/properties.cpp:338 -msgid "" -"A timecode set by the user. When specified, it is used instead of the " -"startTimecode." -msgstr "" - -#: src/properties.cpp:339 -msgid "Duration" -msgstr "Trvanie" - -#: src/properties.cpp:339 -#, fuzzy -msgid "The duration of the media file." -msgstr "Názov scény" - -# exif-scenetype -#: src/properties.cpp:340 -msgid "Scene" -msgstr "Scéna" - -#: src/properties.cpp:340 -msgid "The name of the scene." -msgstr "Názov scény" - -#: src/properties.cpp:341 -msgid "Shot Name" -msgstr "Názov záberu" - -#: src/properties.cpp:341 -#, fuzzy -msgid "The name of the shot or take." -msgstr "Meno autora alebo autorov" - -#: src/properties.cpp:342 -msgid "Shot Date" -msgstr "Dátum záberu" - -#: src/properties.cpp:342 -msgid "The date and time when the video was shot." -msgstr "Dátum a Äas, kedy bolo video nasnímané." - -#: src/properties.cpp:343 -msgid "Shot Location" -msgstr "Miesto záberu" - -#: src/properties.cpp:343 -msgid "" -"The name of the location where the video was shot. For example: " -"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " -"GPS values." -msgstr "" - -#: src/properties.cpp:345 -msgid "Log Comment" -msgstr "Komentár denníka" - -#: src/properties.cpp:345 -msgid "User's log comments." -msgstr "Komentár používateľovho denníka." - -#: src/properties.cpp:346 -msgid "Markers" -msgstr "ZnaÄky" - -#: src/properties.cpp:346 -msgid "An ordered list of markers" -msgstr "" - -#: src/properties.cpp:347 -#, fuzzy -msgid "Contributed Media" -msgstr "Prispievateľ" - -#: src/properties.cpp:347 -msgid "An unordered list of all media used to create this media." -msgstr "" - -#: src/properties.cpp:348 -msgid "Absolute Peak Audio File Path" -msgstr "" - -#: src/properties.cpp:348 -msgid "" -"The absolute path to the file's peak audio file. If empty, no peak file " -"exists." -msgstr "" - -#: src/properties.cpp:349 -msgid "Relative Peak Audio File Path" -msgstr "" - -#: src/properties.cpp:349 -msgid "" -"The relative path to the file's peak audio file. If empty, no peak file " -"exists." -msgstr "" - -#: src/properties.cpp:350 -msgid "Video Modified Date" -msgstr "Dátum úpravy videa" - -#: src/properties.cpp:350 -msgid "The date and time when the video was last modified." -msgstr "Dátum a Äas, kedy bolo video naposledy zmenené." - -#: src/properties.cpp:351 -msgid "Audio Modified Date" -msgstr "Dátum úpravy zvuku" - -#: src/properties.cpp:351 -msgid "The date and time when the audio was last modified." -msgstr "Dátum a Äas, kedy bol zvuk naposledy zmenený." - -#: src/properties.cpp:352 -#, fuzzy -msgid "Metadata Modified Date" -msgstr "Dátum (metadáta)" - -#: src/properties.cpp:352 -msgid "The date and time when the metadata was last modified." -msgstr "Dátum a Äas, kedy boli metadáta naposledy zmenené." - -#: src/properties.cpp:353 src/properties.cpp:521 src/tags.cpp:549 -msgid "Artist" -msgstr "Umelec" - -#: src/properties.cpp:353 -msgid "The name of the artist or artists." -msgstr "Meno autora alebo autorov" - -#: src/properties.cpp:354 -msgid "Album" -msgstr "Album" - -#: src/properties.cpp:354 -msgid "The name of the album." -msgstr "Názov albumu." - -#: src/properties.cpp:355 -msgid "Track Number" -msgstr "Číslo stopy" - -#: src/properties.cpp:355 -msgid "" -"A numeric value indicating the order of the audio file within its original " -"recording." -msgstr "" - -#: src/properties.cpp:356 -msgid "Genre" -msgstr "Žáner" - -#: src/properties.cpp:356 -msgid "The name of the genre." -msgstr "Názov žánru" - -#: src/properties.cpp:357 -msgid "The copyright information." -msgstr "Informácie o autorských právach" - -#: src/properties.cpp:358 -msgid "The date the title was released." -msgstr "Dátum, kedy bol titul vydaný" - -#: src/properties.cpp:359 -msgid "Composer" -msgstr "Skladateľ" - -#: src/properties.cpp:359 -msgid "The composer's name." -msgstr "Meno skladateľa" - -#: src/properties.cpp:360 -#, fuzzy -msgid "Engineer" -msgstr "VeÄer" - -#: src/properties.cpp:360 -#, fuzzy -msgid "The engineer's name." -msgstr "Meno skladateľa" - -#: src/properties.cpp:361 -msgid "Tempo" -msgstr "RýchlosÅ¥" - -#: src/properties.cpp:361 -msgid "The audio's tempo." -msgstr "RýchlosÅ¥ zvuku" - -#: src/properties.cpp:362 -msgid "Instrument" -msgstr "Nástroj" - -#: src/properties.cpp:362 -msgid "The musical instrument." -msgstr "Hudobný nástroj" - -#: src/properties.cpp:363 -msgid "Intro Time" -msgstr "ÄŒas vstupu" - -#: src/properties.cpp:363 -msgid "The duration of lead time for queuing music." -msgstr "" - -#: src/properties.cpp:364 -msgid "Out Cue" -msgstr "" - -#: src/properties.cpp:364 -msgid "The time at which to fade out." -msgstr "" - -#: src/properties.cpp:365 -msgid "Relative Timestamp" -msgstr "Relatívna Äasová známka" - -#: src/properties.cpp:365 -msgid "The start time of the media inside the audio project." -msgstr "" - -#: src/properties.cpp:366 -msgid "Loop" -msgstr "SluÄka" - -#: src/properties.cpp:366 -msgid "When true, the clip can be looped seemlessly." -msgstr "" - -#: src/properties.cpp:367 -#, fuzzy -msgid "Number Of Beats" -msgstr "PoÄet stránok" - -#: src/properties.cpp:367 -msgid "The number of beats." -msgstr "PoÄet úderov." - -#: src/properties.cpp:368 -msgid "Key" -msgstr "KľúÄ" - -#: src/properties.cpp:368 -msgid "" -"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." -msgstr "" - -#: src/properties.cpp:369 -msgid "Stretch Mode" -msgstr "Režim roztiahnutia" - -#: src/properties.cpp:369 -msgid "" -"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " -"Splice, Hybrid." -msgstr "" - -#: src/properties.cpp:370 -msgid "Time Scale Parameters" -msgstr "" - -#: src/properties.cpp:370 -msgid "Additional parameters for Time-Scale stretch mode." -msgstr "" - -#: src/properties.cpp:371 -msgid "Resample Parameters" -msgstr "" - -#: src/properties.cpp:371 -msgid "Additional parameters for Resample stretch mode." -msgstr "" - -#: src/properties.cpp:372 -msgid "Beat Splice Parameters" -msgstr "" - -#: src/properties.cpp:372 -msgid "Additional parameters for Beat Splice stretch mode." -msgstr "" - -#: src/properties.cpp:373 -msgid "Time Signature" -msgstr "ÄŒasová signatúra" - -#: src/properties.cpp:373 -msgid "" -"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " -"12/8, other." -msgstr "" - -#: src/properties.cpp:374 -msgid "Scale Type" -msgstr "Typ mierky" - -#: src/properties.cpp:374 -msgid "" -"The musical scale used in the music. One of: Major, Minor, Both, Neither. " -"Neither is most often used for instruments with no associated scale, such as " -"drums." -msgstr "" - -#: src/properties.cpp:381 src/tags.cpp:1071 -msgid "Camera Serial Number" -msgstr "Sériové Äíslo fotoaparátu" - -#: src/properties.cpp:381 -msgid "Camera Serial Number." -msgstr "Sériové Äíslo fotoaparátu." - -#: src/properties.cpp:382 -msgid "Date Acquired" -msgstr "Dátum vytvorenia" - -#: src/properties.cpp:382 -msgid "Date Acquired." -msgstr "Dátum vytvorenia." - -#: src/properties.cpp:383 -msgid "Flash Manufacturer" -msgstr "Výrobca blesku" - -#: src/properties.cpp:383 -msgid "Flash Manufacturer." -msgstr "Výrobca blesku." - -#: src/properties.cpp:384 -msgid "Flash Model." -msgstr "Model blesku." - -#: src/properties.cpp:385 -#, fuzzy -msgid "Last Keyword IPTC" -msgstr "Posledné kľúÄové slovo XMP." - -#: src/properties.cpp:385 -#, fuzzy -msgid "Last Keyword IPTC." -msgstr "Posledné kľúÄové slovo XMP." - -#: src/properties.cpp:386 -#, fuzzy -msgid "Last Keyword XMP" -msgstr "Posledné kľúÄové slovo XMP." - -#: src/properties.cpp:386 -msgid "Last Keyword XMP." -msgstr "Posledné kľúÄové slovo XMP." - -#: src/properties.cpp:387 -msgid "Lens Manufacturer" -msgstr "Výrobca Å¡oÅ¡oviek" - -#: src/properties.cpp:387 -msgid "Lens Manufacturer." -msgstr "Výrobca Å¡oÅ¡oviek." - -#: src/properties.cpp:388 -msgid "Lens Model." -msgstr "Model Å¡oÅ¡oviek." - -#: src/properties.cpp:389 -msgid "Rating Percent" -msgstr "Percentá hodnotenia" - -#: src/properties.cpp:389 -msgid "Rating Percent." -msgstr "Percentá hodnotenia." - -#: src/properties.cpp:395 -msgid "Keywords." -msgstr "KľúÄové slová." - -#: src/properties.cpp:396 -msgid "PDF Version" -msgstr "PDF verzia" - -#: src/properties.cpp:396 -msgid "The PDF file version (for example: 1.0, 1.3, and so on)." -msgstr "Verzia PDF súboru (napríklad: 1.0, 1.3, atÄ)." - -#: src/properties.cpp:397 -msgid "Producer" -msgstr "Tvorca" - -#: src/properties.cpp:397 -msgid "The name of the tool that created the PDF document." -msgstr "Názov programu, pomocou ktorého bol vytvorený PDF dokument" - -#: src/properties.cpp:403 -msgid "Authors Position" -msgstr "Pozícia autora" - -#: src/properties.cpp:403 -#, fuzzy -msgid "By-line title." -msgstr "Vedľajší názov" - -#: src/properties.cpp:404 -msgid "Caption Writer" -msgstr "ZapisovaÄ titulku" - -#: src/properties.cpp:404 -msgid "Writer/editor." -msgstr "Autor/vydavateľ" - -#: src/properties.cpp:405 -msgid "Category. Limited to 3 7-bit ASCII characters." -msgstr "" - -#: src/properties.cpp:406 -msgid "City." -msgstr "Mesto." - -#: src/properties.cpp:407 -msgid "Country/primary location." -msgstr "" - -#: src/properties.cpp:408 -msgid "Credit." -msgstr "Pôvodca." - -#: src/properties.cpp:409 -msgid "" -"The date the intellectual content of the document was created (rather than " -"the creation date of the physical representation), following IIM " -"conventions. For example, a photo taken during the American Civil War would " -"have a creation date during that epoch (1861-1865) rather than the date the " -"photo was digitized for archiving." -msgstr "" - -#: src/properties.cpp:413 -msgid "Headline." -msgstr "Titulok." - -#: src/properties.cpp:414 -msgid "Special instructions." -msgstr "Å pecifické pokyny." - -#: src/properties.cpp:415 -msgid "Source." -msgstr "Zdroj." - -#: src/properties.cpp:416 -msgid "State" -msgstr "Å tát" - -#: src/properties.cpp:416 -msgid "Province/state." -msgstr "Provincia/Å¡tát" - -#: src/properties.cpp:417 -msgid "Supplemental category." -msgstr "Doplnková kategória" - -#: src/properties.cpp:418 -#, fuzzy -msgid "Original transmission reference." -msgstr "OsvedÄenie na prenos" - -#: src/properties.cpp:419 -msgid "Urgency. Valid range is 1-8." -msgstr "" - -#: src/properties.cpp:427 -msgid "inches" -msgstr "palcov" - -#: src/properties.cpp:428 src/tags.cpp:242 -msgid "cm" -msgstr "cm" - -#: src/properties.cpp:432 -msgid "Auto Brightness" -msgstr "Automatický jas" - -#: src/properties.cpp:432 -msgid "When true, \"Brightness\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:433 -msgid "Auto Contrast" -msgstr "Automatický kontrast" - -#: src/properties.cpp:433 -msgid "When true, \"Contrast\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:434 -msgid "Auto Exposure" -msgstr "Automatická korekcia expozície" - -#: src/properties.cpp:434 -msgid "When true, \"Exposure\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:435 -msgid "Auto Shadows" -msgstr "Automatické tiene" - -#: src/properties.cpp:435 -msgid "When true,\"Shadows\" is automatically adjusted." -msgstr "" - -#: src/properties.cpp:436 -msgid "Blue Hue" -msgstr "Modrý odtieň" - -#: src/properties.cpp:436 -msgid "\"Blue Hue\" setting. Range -100 to 100." -msgstr "Nastavenie \"Modrý odtieň\". Rozsah -100 to 100." - -#: src/properties.cpp:437 -msgid "Blue Saturation" -msgstr "Modrá sýtosÅ¥" - -#: src/properties.cpp:437 -#, fuzzy -msgid "\"Blue Saturation\" setting. Range -100 to +100." -msgstr "Nastavenie \"SýtosÅ¥\". Rozsah od -100 do +100." - -#: src/properties.cpp:438 -msgid "\"Brightness\" setting. Range 0 to +150." -msgstr "Nastavenie \"Jas\". Rozsah od 0 do +150." - -#: src/properties.cpp:439 -msgid "Camera Profile" -msgstr "Profil fotoaparátu" - -#: src/properties.cpp:439 -msgid "\"Camera Profile\" setting." -msgstr "Nastavenie \"Profil fotoaparátu\"" - -#: src/properties.cpp:440 -msgid "Chromatic Aberration Blue" -msgstr "Chromatická aberácia modrej" - -#: src/properties.cpp:440 -#, fuzzy -msgid "" -"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." -msgstr "Nastavenie \"SýtosÅ¥\". Rozsah od -100 do +100." - -#: src/properties.cpp:441 -msgid "Chromatic Aberration Red" -msgstr "Chromatická aberácia Äervenej" - -#: src/properties.cpp:441 -#, fuzzy -msgid "" -"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." -msgstr "Nastavenie \"SýtosÅ¥\". Rozsah od -100 do +100." - -#: src/properties.cpp:442 -msgid "Color Noise Reduction" -msgstr "Redukcia farebného Å¡umu" - -#: src/properties.cpp:442 -#, fuzzy -msgid "\"Color Noise Reducton\" setting. Range 0 to +100." -msgstr "Nastavenie \"Kontrast\". Rozsah od -50 do +100." - -#: src/properties.cpp:443 -msgid "\"Contrast\" setting. Range -50 to +100." -msgstr "Nastavenie \"Kontrast\". Rozsah od -50 do +100." - -#: src/properties.cpp:444 -msgid "When \"Has Crop\" is true, top of crop rectangle" -msgstr "" - -#: src/properties.cpp:445 -msgid "When \"Has Crop\" is true, left of crop rectangle." -msgstr "" - -#: src/properties.cpp:446 -msgid "Crop Bottom" -msgstr "OrezaÅ¥ dolu" - -#: src/properties.cpp:446 -msgid "When \"Has Crop\" is true, bottom of crop rectangle." -msgstr "" - -#: src/properties.cpp:447 -msgid "Crop Right" -msgstr "OrezaÅ¥ vpravo" - -#: src/properties.cpp:447 -msgid "When \"Has Crop\" is true, right of crop rectangle." -msgstr "" - -#: src/properties.cpp:448 -#, fuzzy -msgid "Crop Angle" -msgstr "OrezaÅ¥ vľavo" - -#: src/properties.cpp:448 -msgid "When \"Has Crop\" is true, angle of crop rectangle." -msgstr "" - -#: src/properties.cpp:449 -msgid "Width of resulting cropped image in CropUnits units." -msgstr "" - -#: src/properties.cpp:450 -msgid "Height of resulting cropped image in CropUnits units." -msgstr "" - -#: src/properties.cpp:451 -msgid "Crop Units" -msgstr "Jednotky pri orezávaní" - -#: src/properties.cpp:451 -msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" -msgstr "" - -#: src/properties.cpp:452 -msgid "\"Exposure\" setting. Range -4.0 to +4.0." -msgstr "Nastavenie \"Expozícia\". Rozsah od -4.0 do +4.0." - -#: src/properties.cpp:453 -msgid "GreenHue" -msgstr "Zelený odtieň" - -#: src/properties.cpp:453 -msgid "\"Green Hue\" setting. Range -100 to +100." -msgstr "Nastavenie \"Zelený odtieň\". Rozsah od -100 do +100." - -#: src/properties.cpp:454 -msgid "Green Saturation" -msgstr "Zelená sýtosÅ¥" - -#: src/properties.cpp:454 -#, fuzzy -msgid "\"Green Saturation\" setting. Range -100 to +100." -msgstr "Nastavenie \"SýtosÅ¥\". Rozsah od -100 do +100." - -#: src/properties.cpp:455 -msgid "Has Crop" -msgstr "Orezanie" - -#: src/properties.cpp:455 -msgid "When true, image has a cropping rectangle." -msgstr "" - -#: src/properties.cpp:456 -msgid "Has Settings" -msgstr "Nastavenia" - -#: src/properties.cpp:456 -msgid "When true, non-default camera raw settings." -msgstr "" - -#: src/properties.cpp:457 -msgid "Luminance Smoothing" -msgstr "" - -#: src/properties.cpp:457 -#, fuzzy -msgid "\"Luminance Smoothing\" setting. Range 0 to +100." -msgstr "Nastavenie \"SýtosÅ¥\". Rozsah od -100 do +100." - -#: src/properties.cpp:458 -msgid "Raw File Name" -msgstr "Názov nespracovaného súboru" - -#: src/properties.cpp:458 -msgid "File name of raw file (not a complete path)." -msgstr "Názov RAW súboru (nie kompletná cesta k nemu)." - -#: src/properties.cpp:459 -msgid "Red Hue" -msgstr "ÄŒervený odtieň" - -#: src/properties.cpp:459 -msgid "\"Red Hue\" setting. Range -100 to +100." -msgstr "Nastavenie \"ÄŒervený odtieň\". Rozsah od -100 do +100." - -#: src/properties.cpp:460 -msgid "Red Saturation" -msgstr "ÄŒervená sýtosÅ¥" - -#: src/properties.cpp:460 -#, fuzzy -msgid "\"Red Saturation\" setting. Range -100 to +100." -msgstr "Nastavenie \"SýtosÅ¥\". Rozsah od -100 do +100." - -#: src/properties.cpp:461 -msgid "\"Saturation\" setting. Range -100 to +100." -msgstr "Nastavenie \"SýtosÅ¥\". Rozsah od -100 do +100." - -#: src/properties.cpp:462 -msgid "Shadows" -msgstr "Tiene" - -#: src/properties.cpp:462 -msgid "\"Shadows\" setting. Range 0 to +100." -msgstr "Nastavenie \"Tiene\". Rozsah od 0 do +100." - -#: src/properties.cpp:463 -msgid "Shadow Tint" -msgstr "Sfarbenie tieňa" - -#: src/properties.cpp:463 -msgid "\"Shadow Tint\" setting. Range -100 to +100." -msgstr "Nastavenie \"Sfarbenie tieňa\". Rozsah od -100 do +100." - -#: src/properties.cpp:464 -msgid "\"Sharpness\" setting. Range 0 to +100." -msgstr "Nastavenie \"OstrosÅ¥\". Rozsah od 0 do +100." - -#: src/properties.cpp:465 -msgid "\"Temperature\" setting. Range 2000 to 50000." -msgstr "Nastavenie \"Teplota\". Rozsah od 2000 do 50000." - -#: src/properties.cpp:466 -msgid "Tint" -msgstr "Sfarbenie" - -#: src/properties.cpp:466 -msgid "\"Tint\" setting. Range -150 to +150." -msgstr "Nastavenie \"Sfarbenie\". Rozsah od -150 do +150." - -#: src/properties.cpp:467 -msgid "Tone Curve" -msgstr "Krivka tónu" - -#: src/properties.cpp:467 -msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." -msgstr "" - -#: src/properties.cpp:468 -msgid "Tone Curve Name" -msgstr "Názov krivky tónu" - -#: src/properties.cpp:468 -msgid "" -"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " -"Contrast, Strong Contrast, Custom or a user-defined preset name." -msgstr "" - -#: src/properties.cpp:470 -msgid "Version of Camera Raw plugin." -msgstr "Verzia RAW zásuvného modulu fotoaparátu" - -#: src/properties.cpp:471 -#, fuzzy -msgid "Vignette Amount" -msgstr "Diaľkové ovládanie?" - -#: src/properties.cpp:471 -#, fuzzy -msgid "\"Vignetting Amount\" setting. Range -100 to +100." -msgstr "Nastavenie \"SýtosÅ¥\". Rozsah od -100 do +100." - -#: src/properties.cpp:472 -#, fuzzy -msgid "Vignette Midpoint" -msgstr "Diaľkové ovládanie?" - -#: src/properties.cpp:472 -#, fuzzy -msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." -msgstr "Nastavenie \"SýtosÅ¥\". Rozsah od -100 do +100." - -#: src/properties.cpp:473 -msgid "" -"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " -"Tungsten, Fluorescent, Flash, Custom" -msgstr "" - -#: src/properties.cpp:480 -msgid "TIFF tag 256, 0x100. Image width in pixels." -msgstr "TIFF tag 256, 0x100. Šírka obrázka v bodoch." - -#: src/properties.cpp:481 src/tags.cpp:420 -msgid "Image Length" -msgstr "Dĺžka obrázka" - -#: src/properties.cpp:481 -msgid "TIFF tag 257, 0x101. Image height in pixels." -msgstr "TIFF tag 257, 0x101. Dĺžka obrázka v bodoch." - -#: src/properties.cpp:482 -msgid "Bits Per Sample" -msgstr "bitov na vzorku" - -#: src/properties.cpp:482 -msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." -msgstr "" - -#: src/properties.cpp:483 src/tags.cpp:430 -msgid "Compression" -msgstr "Kompresia" - -#: src/properties.cpp:483 -msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." -msgstr "" - -#: src/properties.cpp:484 src/tags.cpp:436 -msgid "Photometric Interpretation" -msgstr "Fotometrická interpretácia" - -#: src/properties.cpp:484 -msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." -msgstr "" - -#: src/properties.cpp:485 -msgid "" -"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " -"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " -"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " -"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " -"0th column at bottom 8 = 0th row at left, 0th column at bottom" -msgstr "" - -#: src/properties.cpp:494 -msgid "Samples Per Pixel" -msgstr "vzoriek na pixel" - -#: src/properties.cpp:494 -#, fuzzy -msgid "TIFF tag 277, 0x115. Number of components per pixel." -msgstr "TIFF tag 257, 0x101. Dĺžka obrázka v bodoch." - -#: src/properties.cpp:495 src/tags.cpp:510 -msgid "Planar Configuration" -msgstr "Rovinná konfigurácia" - -#: src/properties.cpp:495 -msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." -msgstr "" - -# exif-ycbcrsubsampling -#: src/properties.cpp:496 -msgid "YCbCr Sub Sampling" -msgstr "podvzorkovanie YCbCr" - -#: src/properties.cpp:496 -msgid "" -"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " -"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" -msgstr "" - -#: src/properties.cpp:498 src/tags.cpp:713 -msgid "YCbCr Positioning" -msgstr "polohovanie YCbCr" - -#: src/properties.cpp:498 -msgid "" -"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " -"centered; 2 = co-sited." -msgstr "" - -# exif-xresolution -#: src/properties.cpp:500 -msgid "X Resolution" -msgstr "horizontálne rozlíšenie" - -#: src/properties.cpp:500 -#, fuzzy -msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." -msgstr "" -"EXIF znaÄka 41486, 0xA20E. Vodorovné ohniskové rozlíšenie v pixeloch na " -"jednotku" - -# exif-xresolution -#: src/properties.cpp:501 -msgid "Y Resolution" -msgstr "horizontálne rozlíšenie" - -#: src/properties.cpp:501 -#, fuzzy -msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." -msgstr "" -"EXIF znaÄka 41487, 0xA20F. Zvislé ohniskové rozlíšenie v pixeloch na jednotku" - -# exif-resolutionunit -#: src/properties.cpp:502 src/tags.cpp:528 -msgid "Resolution Unit" -msgstr "jednotka rozlíšenia" - -#: src/properties.cpp:502 -msgid "" -"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " -"of: 2 = inches; 3 = centimeters." -msgstr "" - -# exif-transferfunction -#: src/properties.cpp:504 src/tags.cpp:533 -msgid "Transfer Function" -msgstr "prenosová funkcia" - -#: src/properties.cpp:504 -msgid "" -"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " -"with 3 * 256 entries." -msgstr "" - -# exif-whitepoint -#: src/properties.cpp:506 src/tags.cpp:565 -msgid "White Point" -msgstr "biely bod" - -#: src/properties.cpp:506 -msgid "TIFF tag 318, 0x13E. Chromaticity of white point." -msgstr "" - -# exif-primarychromaticities -#: src/properties.cpp:507 src/tags.cpp:570 -msgid "Primary Chromaticities" -msgstr "primárne chromaticity" - -#: src/properties.cpp:507 -msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." -msgstr "" - -#: src/properties.cpp:508 -msgid "" -"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." -msgstr "" - -#: src/properties.cpp:509 -msgid "Reference Black White" -msgstr "ReferenÄná Äierna a biela" - -#: src/properties.cpp:509 -msgid "TIFF tag 532, 0x214. Reference black and white point values." -msgstr "" - -#: src/properties.cpp:510 src/tags.cpp:545 -msgid "Date and Time" -msgstr "Dátum a Äas" - -#: src/properties.cpp:510 -msgid "" -"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " -"and time of image creation (no time zone in EXIF), stored in ISO 8601 " -"format, not the original EXIF format. This property includes the value for " -"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" -"ModifyDate." -msgstr "" - -#: src/properties.cpp:516 src/tags.cpp:458 -msgid "Image Description" -msgstr "Popis obrázka" - -#: src/properties.cpp:516 -msgid "" -"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " -"in XMP as dc:description." -msgstr "" - -#: src/properties.cpp:517 -msgid "Make" -msgstr "Zhotoviteľ" - -#: src/properties.cpp:517 -msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." -msgstr "" - -#: src/properties.cpp:518 -msgid "TIFF tag 272, 0x110. Model name or number of equipment." -msgstr "" - -#: src/properties.cpp:519 -msgid "" -"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " -"property is stored in XMP as xmp:CreatorTool. " -msgstr "" - -#: src/properties.cpp:521 -msgid "" -"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " -"property is stored in XMP as the first item in the dc:creator array." -msgstr "" - -#: src/properties.cpp:523 -msgid "" -"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " -"in XMP as dc:rights." -msgstr "" - -#: src/properties.cpp:530 src/tags.cpp:1598 -msgid "Exif Version" -msgstr "Verzia EXIF" - -#: src/properties.cpp:530 -msgid "EXIF tag 36864, 0x9000. EXIF version number." -msgstr "EXIF znaÄka 36864, 0x9000. Číslo verzie EXIF." - -#: src/properties.cpp:531 -msgid "Flashpix Version" -msgstr "Verzia FlashPix" - -#: src/properties.cpp:531 -msgid "EXIF tag 40960, 0xA000. Version of FlashPix." -msgstr "EXIF znaÄka 40960, 0xA000. Verzia FlashPix." - -#: src/properties.cpp:532 -msgid "EXIF tag 40961, 0xA001. Color space information" -msgstr "EXIF znaÄka 40961, 0xA001. Informácie o farebnom priestore" - -#: src/properties.cpp:533 src/tags.cpp:1609 -msgid "Components Configuration" -msgstr "Nastavenie zložiek" - -#: src/properties.cpp:533 -msgid "" -"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " -"compressed data), 1 2 3 0 (other cases)." -msgstr "" -"EXIF znaÄka 37121, 0x9101. Konfigurácia dátových zložiek: 4 5 6 0 (pre RGB " -"komprimované údaje), 1 2 3 0 (ostatné prípady)." - -# exif-compressedbitsperpixel -#: src/properties.cpp:535 src/tags.cpp:818 -msgid "Compressed Bits Per Pixel" -msgstr "komprimované bity na pixel" - -#: src/properties.cpp:535 -msgid "" -"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " -"indicated in unit bits per pixel." -msgstr "" -"EXIF znaÄka 37122, 0x9102. Kompresný režim komprimovaného obrázka sa " -"oznaÄuje v jednotkách bity na pixel." - -#: src/properties.cpp:537 src/tags.cpp:1693 -msgid "Pixel X Dimension" -msgstr "Vodorovný rozmer pixelu" - -#: src/properties.cpp:537 -msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." -msgstr "EXIF znaÄka 40962, 0xA002. Platná šírka obrázka v pixeloch" - -#: src/properties.cpp:538 src/tags.cpp:1700 -msgid "Pixel Y Dimension" -msgstr "Zvislý rozmer pixelu" - -#: src/properties.cpp:538 -msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." -msgstr "EXIF znaÄka 40963, 0xA003. Platná výška obrázka v pixeloch" - -#: src/properties.cpp:539 src/tags.cpp:1667 -msgid "User Comment" -msgstr "Komentár používateľa" - -#: src/properties.cpp:539 -msgid "EXIF tag 37510, 0x9286. Comments from user." -msgstr "EXIF znaÄka 37510, 0x9286. Komentár používateľa." - -#: src/properties.cpp:540 src/tags.cpp:1709 -msgid "Related Sound File" -msgstr "Súvisiaci zvukový súbor" - -#: src/properties.cpp:540 -msgid "" -"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." -msgstr "" -"EXIF znaÄka 40964, 0xA004. \"8.3\" názov súboru prísluÅ¡ného zvukového súboru." - -#: src/properties.cpp:541 -msgid "Date and Time Original" -msgstr "Dátum a Äas zhotovenia" - -#: src/properties.cpp:541 -msgid "" -"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " -"time when original image was generated, in ISO 8601 format. Includes the " -"EXIF SubSecTimeOriginal data." -msgstr "" -"EXIF znaÄky 36867, 0x9003 (primárny) a 37521, 0x9291 (podsekundy). Dátum a " -"Äas, kedy bol vytvorený pôvodný obrázok, vo formáte ISO 8601. Vrátane údajov " -"EXIF SubSecTimeOriginal." - -#: src/properties.cpp:544 -msgid "Date and Time Digitized" -msgstr "Dátum a Äas digitalizácie" - -#: src/properties.cpp:544 -msgid "" -"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " -"time when image was stored as digital data, can be the same as " -"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " -"format. Includes the EXIF SubSecTimeDigitized data." -msgstr "" -"EXIF znaÄka 36868, 0x9004 (primárny) a 37522, 0x9292 (podsekundy). Dátum a " -"Äas, kedy bol obrázok uložený ako digitálne údaje. Môže byÅ¥ rovnaký ako " -"DateTimeOriginal ak bol obrázok pôvodne uložený v digitálnej forme. Ukladá " -"sa vo formáte ISO 8601. Vrátane údajov EXIF SubSecTimeOriginal." - -#: src/properties.cpp:548 -msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." -msgstr "EXIF znaÄka 33434, 0x829A. ÄŒas expozície v sekundách" - -#: src/properties.cpp:549 -msgid "F Number" -msgstr "Äíslo F" - -#: src/properties.cpp:549 -msgid "EXIF tag 33437, 0x829D. F number." -msgstr "EXIF znaÄka 33437, 0x829D. Číslo F" - -#: src/properties.cpp:550 -msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." -msgstr "EXIF znaÄka 34850, 0x8822. Trieda expoziÄného programu" - -#: src/properties.cpp:551 src/tags.cpp:800 src/tags.cpp:1552 -msgid "Spectral Sensitivity" -msgstr "Spektrálna citlivosÅ¥:" - -#: src/properties.cpp:551 -msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." -msgstr "EXIF znaÄka 34852, 0x8824. Spektrálna citlivosÅ¥ každého kanála" - -#: src/properties.cpp:552 -msgid "ISOSpeedRatings" -msgstr "ISO rýchlosti" - -#: src/properties.cpp:552 -msgid "" -"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " -"specified in ISO 12232." -msgstr "" -"EXIF znaÄka 34855, 0x8827. OznaÄuje ISO rýchlosÅ¥ a ISO zemepisnú šírku " -"fotoaparátu alebo vstupného zariadenia podľa Å¡pecifikácie ISO 12232." - -#: src/properties.cpp:554 src/tags.cpp:807 -msgid "OECF" -msgstr "OECF" - -#: src/properties.cpp:554 -msgid "" -"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " -"ISO 14524." -msgstr "" -"EXIF znaÄka 34856, 0x8828. Opto-elektronická konverzná funkcie podľa " -"Å¡pecifikácie ISO 14524" - -#: src/properties.cpp:555 -msgid "" -"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " -"specification." -msgstr "" -"EXIF znaÄka 37377, 0x9201. RýchlosÅ¥ uzávierky, jednotka je APEX. Pozri " -"Prílohu C Å pecifikácie EXIF." - -#: src/properties.cpp:556 -msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." -msgstr "EXIF znaÄka 37378, 0x9202. Clona Å¡oÅ¡oviek, jednotka je APEX." - -#: src/properties.cpp:557 src/tags.cpp:821 -msgid "Brightness Value" -msgstr "Hodnota jasu" - -#: src/properties.cpp:557 -msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." -msgstr "EXIF znaÄka 37379, 0x9203. Jas, jednotka je APEX." - -#: src/properties.cpp:558 -msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." -msgstr "EXIF znaÄka 37380, 0x9204. Skreslenie expozície, jednotka je APEX." - -#: src/properties.cpp:559 -msgid "Maximum Aperture Value" -msgstr "Maximálna hodnota clony" - -#: src/properties.cpp:559 -msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." -msgstr "" -"EXIF znaÄka 37381, 0x9205. NajmenÅ¡ie Äíslo F Å¡oÅ¡oviek, jednotka je APEX." - -#: src/properties.cpp:560 -msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." -msgstr "EXIF znaÄka 37382, 0x9206. VzdialenosÅ¥ subjektu v metroch." - -#: src/properties.cpp:561 -msgid "EXIF tag 37383, 0x9207. Metering mode." -msgstr "EXIF znaÄka 37383, 0x9207. Režim merania" - -#: src/properties.cpp:562 -msgid "EXIF tag 37384, 0x9208. Light source." -msgstr "EXIF znaÄka 37384, 0x9208. Svetelný zdroj" - -#: src/properties.cpp:563 -msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." -msgstr "" -"EXIF znaÄka 37385, 0x9209. Zdrojové údaje o impulznom osvetlení (blesk)" - -#: src/properties.cpp:564 -msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." -msgstr "" -"EXIF znaÄka 37386, 0x920A. Ohnisková vzdialenosÅ¥ Å¡oÅ¡oviek v milimetroch" - -# exif-subjectarea -#: src/properties.cpp:565 src/tags.cpp:1659 -msgid "Subject Area" -msgstr "oblasÅ¥ subjektu" - -#: src/properties.cpp:565 -msgid "" -"EXIF tag 37396, 0x9214. The location and area of the main subject in the " -"overall scene." -msgstr "" -"EXIF znaÄka 37396, 0x9214. Táto znaÄka oznaÄuje polohu a plochu hlavného " -"subjektu v celkovej scéne." - -# exif-flashenergy -#: src/properties.cpp:566 src/tags.cpp:829 src/tags.cpp:1724 -msgid "Flash Energy" -msgstr "energia blesku" - -#: src/properties.cpp:566 -msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." -msgstr "EXIF znaÄka 41483, 0xA20B. Energia blesku poÄas zachytenia obrázka" - -# exif-spatialfrequencyresponse -#: src/properties.cpp:567 src/tags.cpp:830 src/tags.cpp:1728 -msgid "Spatial Frequency Response" -msgstr "priestorová frekvenÄná odozva" - -#: src/properties.cpp:567 -msgid "" -"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " -"as specified in ISO 12233." -msgstr "" -"EXIF znaÄka 41484, 0xA20C. Priestorové frekvenÄná tabuľka vstupného " -"zariadenia a hodnoty SFR podľa Å¡pecifikácie ISO 12233" - -# exif-focalplanexresolution -#: src/properties.cpp:569 src/tags.cpp:832 -msgid "Focal Plane X Resolution" -msgstr "vodorovné rozlíšenie ohniskovej roviny" - -#: src/properties.cpp:569 -msgid "" -"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " -"unit." -msgstr "" -"EXIF znaÄka 41486, 0xA20E. Vodorovné ohniskové rozlíšenie v pixeloch na " -"jednotku" - -# exif-focalplanexresolution -#: src/properties.cpp:570 src/tags.cpp:833 -msgid "Focal Plane Y Resolution" -msgstr "zvislé rozlíšenie ohniskovej roviny" - -#: src/properties.cpp:570 -msgid "" -"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " -"unit." -msgstr "" -"EXIF znaÄka 41487, 0xA20F. Zvislé ohniskové rozlíšenie v pixeloch na jednotku" - -# exif-focalplaneresolutionunit -#: src/properties.cpp:571 src/tags.cpp:834 src/tags.cpp:1741 -msgid "Focal Plane Resolution Unit" -msgstr "jednotka rozlíšenia v ohniskovej rovine" - -#: src/properties.cpp:571 -msgid "" -"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " -"FocalPlaneYResolution." -msgstr "" -"EXIF znaÄka 41488, 0xA210. Jednotka pre FocalPlaneXResolution a " -"FocalPlaneYResolution" - -# exif-subjectlocation -#: src/properties.cpp:572 src/tags.cpp:838 src/tags.cpp:1745 -msgid "Subject Location" -msgstr "umiestnenie subjektu" - -#: src/properties.cpp:572 -msgid "" -"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " -"value is the horizontal pixel and the second value is the vertical pixel at " -"which the main subject appears." -msgstr "" -"EXIF znaÄka 41492, 0xA214. Umiestnenie hlavného subjektu scény. Prvá hodnota " -"je vodorovný a druhá zvislý pixel, na ktorom sa nachádza subjekt." - -#: src/properties.cpp:575 src/tags.cpp:839 -msgid "Exposure Index" -msgstr "Index expozície" - -#: src/properties.cpp:575 -msgid "EXIF tag 41493, 0xA215. Exposure index of input device." -msgstr "EXIF znaÄka 41493, 0xA215. ExpoziÄný index vstupného zariadenia" - -# exif-sensingmethod -#: src/properties.cpp:576 src/tags.cpp:844 src/tags.cpp:1756 -msgid "Sensing Method" -msgstr "snímacia metóda" - -#: src/properties.cpp:576 -msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." -msgstr "" -"EXIF znaÄka 41495, 0xA217. Táto znaÄka oznaÄuje typ obrazového snímaÄa " -"vstupného fotoaparátu alebo vstupného zariadenia." - -#: src/properties.cpp:577 -msgid "EXIF tag 41728, 0xA300. Indicates image source." -msgstr "EXIF znaÄka 41728, 0xA300. Zdroj obrázka" - -#: src/properties.cpp:578 src/tags.cpp:1764 -msgid "Scene Type" -msgstr "Typ scény" - -#: src/properties.cpp:578 -msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." -msgstr "EXIF znaÄka 41729, 0xA301. Typ scény" - -# exif-cfapattern -#: src/properties.cpp:579 src/tags.cpp:754 -msgid "CFA Pattern" -msgstr "vzorka CFA" - -#: src/properties.cpp:579 -msgid "" -"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " -"sense." -msgstr "" -"EXIF znaÄka 41730, 0xA302. Geometrický vzor snímaÄa obrázka poľa farebného " -"filtra" - -# exif-customrendered -#: src/properties.cpp:580 src/tags.cpp:1774 -msgid "Custom Rendered" -msgstr "ruÄné spracovanie obrazu" - -#: src/properties.cpp:580 -msgid "" -"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " -"data." -msgstr "" -"EXIF znaÄka 41985, 0xA401. Použitie Å¡peciálneho spracovania obrazových údajov" - -#: src/properties.cpp:581 -msgid "" -"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " -"shot." -msgstr "" -"EXIF znaÄka 41986, 0xA402. Táto znaÄka oznaÄuje aký režim expozície bol " -"zvolený pri odfotení obrázka." - -#: src/properties.cpp:582 -msgid "" -"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " -"was shot." -msgstr "" -"EXIF znaÄka 41987, 0xA403. Táto znaÄka oznaÄuje aký režim vyváženia bielej " -"bol zvolený pri odfotení obrázka." - -# exif-digitalzoomratio -#: src/properties.cpp:583 src/tags.cpp:1788 -msgid "Digital Zoom Ratio" -msgstr "pomer digitálneho priblíženia" - -#: src/properties.cpp:583 -msgid "" -"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " -"shot." -msgstr "" -"EXIF znaÄka 41988, 0xA404. Táto znaÄka oznaÄuje aký pomer digitálneho " -"priblíženia bol zvolený pri odfotení obrázka." - -# exif-focallengthin35mmfilm -#: src/properties.cpp:584 src/tags.cpp:1793 -msgid "Focal Length In 35mm Film" -msgstr "ohnisková vzdialenosÅ¥ na 35 mm filme" - -#: src/properties.cpp:584 -msgid "" -"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " -"35mm film camera, in mm. A value of 0 means the focal length is unknown. " -"Note that this tag differs from the FocalLength tag." -msgstr "" -"EXIF znaÄka 41989, 0xA405. Táto znaÄka oznaÄuje ohniskovú vzdialenosÅ¥ " -"ekvivalentnú fotoaparátu s 35 mm filmom. Hodnota 0 znamená, že ohnisková " -"vzdialenosÅ¥ je neznáma. VÅ¡imnite si, že táto znaÄka sa líši od znaÄky " -"FocalLength." - -# exif-scenecapturetype -#: src/properties.cpp:587 src/tags.cpp:1799 -msgid "Scene Capture Type" -msgstr "typ zachytenia scény" - -#: src/properties.cpp:587 -msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." -msgstr "EXIF znaÄka 41990, 0xA406. Typ snímanej scény." - -#: src/properties.cpp:588 src/tags.cpp:1804 -msgid "Gain Control" -msgstr "Riadenie zosilnenia" - -#: src/properties.cpp:588 -msgid "" -"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " -"adjustment." -msgstr "" -"EXIF znaÄka 41991, 0xA407. Táto znaÄka oznaÄuje stupeň celkového zosilnenia " -"obrazu." - -#: src/properties.cpp:589 -msgid "" -"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " -"applied by the camera." -msgstr "" -"EXIF znaÄka 41992, 0xA408. Táto znaÄka oznaÄuje smer spracovania kontrastu, " -"ktorý použil fotoaparát pri zachytení obrázka." - -#: src/properties.cpp:590 -msgid "" -"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " -"applied by the camera." -msgstr "" -"EXIF znaÄka 41993, 0xA409. Táto znaÄka oznaÄuje smer spracovania sýtosti, " -"ktorý použil fotoaparát pri zachytení obrázka." - -#: src/properties.cpp:591 -msgid "" -"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " -"applied by the camera." -msgstr "" -"EXIF znaÄka 41994, 0xA40A. Táto znaÄka oznaÄuje smer spracovania ostrosti, " -"ktorý použil fotoaparát pri zachytení obrázka." - -# exif-devicesettingdescription -#: src/properties.cpp:592 src/tags.cpp:1819 -msgid "Device Setting Description" -msgstr "opis nastavení zariadenia" - -#: src/properties.cpp:592 -msgid "" -"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " -"conditions of a particular camera model." -msgstr "" -"EXIF znaÄka 41995, 0xA40B. Táto znaÄka oznaÄuje informácie o podmienkach " -"fotografovania konkrétnym modelom fotoaparátu. ZnaÄka sa používa iba na " -"oznaÄenie podmienok fotografovania v Äítacom zariadení." - -# exif-subjectdistancerange -#: src/properties.cpp:593 src/tags.cpp:1824 -msgid "Subject Distance Range" -msgstr "rozsah vzdialenosti subjektu" - -#: src/properties.cpp:593 -msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." -msgstr "" -"EXIF znaÄka 41996, 0xA40C. Táto znaÄka oznaÄuje vzdialenosÅ¥ k subjektu." - -#: src/properties.cpp:594 src/tags.cpp:1827 -msgid "Image Unique ID" -msgstr "JedineÄný ID obrázka" - -#: src/properties.cpp:594 -msgid "" -"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " -"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " -"and 128-bit fixed length." -msgstr "" -"EXIF znaÄka 42016, 0xA420. Táto znaÄka oznaÄuje jedineÄný identifikátor " -"priradený každému obrázku. Je zaznamenaný ako ASCII reÅ¥azec zodpovedajúci " -"hexadecimálnemu zápisu 128-bitového Äísla." - -#: src/properties.cpp:596 src/tags.cpp:1927 -msgid "GPS Version ID" -msgstr "ID verzie GPS" - -#: src/properties.cpp:596 -msgid "" -"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " -"period separators. The current value is \"2.0.0.0\"." -msgstr "" - -# exif-gpslatitude -#: src/properties.cpp:598 src/tags.cpp:1938 -msgid "GPS Latitude" -msgstr "GPS zemepisná šírka" - -#: src/properties.cpp:598 -msgid "" -"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." -msgstr "" - -# exif-gpslongitude -#: src/properties.cpp:599 src/tags.cpp:1950 -msgid "GPS Longitude" -msgstr "GPS zemepisná dĺžka" - -#: src/properties.cpp:599 -msgid "" -"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." -msgstr "" - -# exif-gpsaltituderef -#: src/properties.cpp:600 src/tags.cpp:1958 -msgid "GPS Altitude Reference" -msgstr "GPS referencia nadmorskej výšky" - -#: src/properties.cpp:600 -#, fuzzy -msgid "" -"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." -msgstr "GPS tag 6, 0x06. Udáva nadmorskú výšku v metroch." - -# exif-gpsaltitude -#: src/properties.cpp:601 src/tags.cpp:1966 -msgid "GPS Altitude" -msgstr "GPS nadmorská výška" - -#: src/properties.cpp:601 -msgid "GPS tag 6, 0x06. Indicates altitude in meters." -msgstr "GPS tag 6, 0x06. Udáva nadmorskú výšku v metroch." - -#: src/properties.cpp:602 src/tags.cpp:1970 -#, fuzzy -msgid "GPS Time Stamp" -msgstr "ÄŒas odoslania" - -#: src/properties.cpp:602 -msgid "" -"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " -"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " -"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " -"present, the date component for the XMP should be taken from exif:" -"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " -"no date is available, do not write exif:GPSTimeStamp to XMP." -msgstr "" - -#: src/properties.cpp:608 src/tags.cpp:1975 -msgid "GPS Satellites" -msgstr "GPS satelity" - -#: src/properties.cpp:608 -msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." -msgstr "" - -#: src/properties.cpp:609 src/tags.cpp:1982 -msgid "GPS Status" -msgstr "Stav GPS" - -#: src/properties.cpp:609 -msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." -msgstr "" - -#: src/properties.cpp:610 src/tags.cpp:1987 -msgid "GPS Measure Mode" -msgstr "GPS Režim merania" - -#: src/properties.cpp:610 -msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." -msgstr "" - -#: src/properties.cpp:611 -msgid "GPS DOP" -msgstr "GPS DOP" - -#: src/properties.cpp:611 -#, fuzzy -msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." -msgstr "Stupeň presnosti GPS údajov" - -# exif-gpsaltituderef -#: src/properties.cpp:612 src/tags.cpp:1995 -#, fuzzy -msgid "GPS Speed Reference" -msgstr "GPS referencia nadmorskej výšky" - -#: src/properties.cpp:612 -msgid "GPS tag 12, 0x0C. Units used to speed measurement." -msgstr "" - -#: src/properties.cpp:613 src/tags.cpp:1999 -msgid "GPS Speed" -msgstr "GPS rýchlosÅ¥" - -#: src/properties.cpp:613 -#, fuzzy -msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." -msgstr "OznaÄuje rýchlosÅ¥ pohybu GPS prijímaÄa." - -#: src/properties.cpp:614 -#, fuzzy -msgid "GPS Track Reference" -msgstr "GPS referencia zemepisnej šírky" - -#: src/properties.cpp:614 -msgid "GPS tag 14, 0x0E. Reference for movement direction." -msgstr "" - -#: src/properties.cpp:615 src/tags.cpp:2006 -msgid "GPS Track" -msgstr "" - -#: src/properties.cpp:615 -msgid "" -"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." -msgstr "" - -#: src/properties.cpp:616 src/tags.cpp:2010 -#, fuzzy -msgid "GPS Image Direction Reference" -msgstr "GPS Smer obrázka" - -#: src/properties.cpp:616 -msgid "GPS tag 16, 0x10. Reference for image direction." -msgstr "" - -#: src/properties.cpp:617 src/tags.cpp:2014 -msgid "GPS Image Direction" -msgstr "GPS Smer obrázka" - -#: src/properties.cpp:617 -msgid "" -"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " -"359.99." -msgstr "" - -#: src/properties.cpp:618 src/tags.cpp:2018 -#, fuzzy -msgid "GPS Map Datum" -msgstr "Stav GPS" - -#: src/properties.cpp:618 -msgid "GPS tag 18, 0x12. Geodetic survey data." -msgstr "" - -#: src/properties.cpp:619 src/tags.cpp:2026 -#, fuzzy -msgid "GPS Destination Latitude" -msgstr "GPS VzdialenosÅ¥ cieľa" - -#: src/properties.cpp:619 -msgid "" -"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " -"destination latitude." -msgstr "" - -#: src/properties.cpp:620 src/tags.cpp:2038 -#, fuzzy -msgid "GPS Destination Longitude" -msgstr "GPS VzdialenosÅ¥ cieľa" - -#: src/properties.cpp:620 -msgid "" -"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " -"longitude." -msgstr "" - -#: src/properties.cpp:621 src/tags.cpp:2045 -#, fuzzy -msgid "GPS Destination Bearing Reference" -msgstr "GPS VzdialenosÅ¥ cieľa" - -#: src/properties.cpp:621 -msgid "GPS tag 23, 0x17. Reference for movement direction." -msgstr "" - -#: src/properties.cpp:622 src/tags.cpp:2049 -#, fuzzy -msgid "GPS Destination Bearing" -msgstr "GPS VzdialenosÅ¥ cieľa" - -#: src/properties.cpp:622 -msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." -msgstr "" - -#: src/properties.cpp:623 -#, fuzzy -msgid "GPS Destination Distance Refefrence" -msgstr "GPS VzdialenosÅ¥ cieľa" - -#: src/properties.cpp:623 -msgid "GPS tag 25, 0x19. Units used for speed measurement." -msgstr "" - -#: src/properties.cpp:624 src/tags.cpp:2057 -msgid "GPS Destination Distance" -msgstr "GPS VzdialenosÅ¥ cieľa" - -#: src/properties.cpp:624 -#, fuzzy -msgid "GPS tag 26, 0x1A. Distance to destination." -msgstr "EXIF znaÄka 37382, 0x9206. VzdialenosÅ¥ subjektu v metroch." - -#: src/properties.cpp:625 src/tags.cpp:2060 -msgid "GPS Processing Method" -msgstr "GPS Metóda spracovania" - -#: src/properties.cpp:625 -msgid "" -"GPS tag 27, 0x1B. A character string recording the name of the method used " -"for location finding." -msgstr "" - -#: src/properties.cpp:626 src/tags.cpp:2065 -msgid "GPS Area Information" -msgstr "GPS Informácie o oblasti" - -#: src/properties.cpp:626 -msgid "" -"GPS tag 28, 0x1C. A character string recording the name of the GPS area." -msgstr "" - -#: src/properties.cpp:627 src/tags.cpp:2073 -msgid "GPS Differential" -msgstr "" - -#: src/properties.cpp:627 -#, fuzzy -msgid "" -"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " -"the GPS receiver." -msgstr "GPS tag 6, 0x06. Udáva nadmorskú výšku v metroch." - -#: src/properties.cpp:633 -msgid "" -"A description of the lens used to take the photograph. For example, \"70-200 " -"mm f/2.8-4.0\"." -msgstr "" - -#: src/properties.cpp:634 -msgid "SerialNumber" -msgstr "SériovéČíslo" - -#: src/properties.cpp:634 -msgid "" -"The serial number of the camera or camera body used to take the photograph." -msgstr "" - -#: src/properties.cpp:640 -msgid "Contact Info-City" -msgstr "Kontaktné informácie- Mesto" - -#: src/properties.cpp:640 -#, fuzzy -msgid "The contact information city part." -msgstr "ÄŒasÅ¥ krajina kontaktných informácií." - -#: src/properties.cpp:641 -msgid "Contact Info-Country" -msgstr "Kontaktné informácie- Krajina" - -#: src/properties.cpp:641 -msgid "The contact information country part." -msgstr "ÄŒasÅ¥ krajina kontaktných informácií." - -#: src/properties.cpp:642 -msgid "Contact Info-Address" -msgstr "Kontaktné informácie- Adresa" - -#: src/properties.cpp:642 -msgid "" -"The contact information address part. Comprises an optional company name and " -"all required information to locate the building or postbox to which mail " -"should be sent." -msgstr "" - -#: src/properties.cpp:644 -msgid "Contact Info-Postal Code" -msgstr "Kontaktné informácie- PSÄŒ" - -#: src/properties.cpp:644 -#, fuzzy -msgid "The contact information part denoting the local postal code." -msgstr "ÄŒasÅ¥ krajina kontaktných informácií." - -#: src/properties.cpp:645 -msgid "Contact Info-State/Province" -msgstr "Kontaktné informácie- Å tát/Provincia" - -#: src/properties.cpp:645 -msgid "" -"The contact information part denoting regional information like state or " -"province." -msgstr "" - -#: src/properties.cpp:646 -msgid "Contact Info-Email" -msgstr "Kontaktné informácie- E-mail" - -#: src/properties.cpp:646 -#, fuzzy -msgid "The contact information email address part." -msgstr "ÄŒasÅ¥ krajina kontaktných informácií." - -#: src/properties.cpp:647 -msgid "Contact Info-Phone" -msgstr "Kontaktné informácie- Tel. Äíslo" - -#: src/properties.cpp:647 -#, fuzzy -msgid "The contact information phone number part." -msgstr "ÄŒasÅ¥ krajina kontaktných informácií." - -#: src/properties.cpp:648 -msgid "Contact Info-Web URL" -msgstr "Kontaktné informácie- Web stránka" - -#: src/properties.cpp:648 -#, fuzzy -msgid "The contact information web address part." -msgstr "ÄŒasÅ¥ krajina kontaktných informácií." - -#: src/properties.cpp:649 -msgid "" -"Code of the country the content is focussing on -- either the country shown " -"in visual media or referenced in text or audio media. This element is at the " -"top/first level of a top-down geographical hierarchy. The code should be " -"taken from ISO 3166 two or three letter code. The full name of a country " -"should go to the \"Country\" element." -msgstr "" - -#: src/properties.cpp:653 -msgid "Creator's Contact Info" -msgstr "Kontaktné informácie tvorcu" - -#: src/properties.cpp:653 -msgid "" -"The creator's contact information provides all necessary information to get " -"in contact with the creator of this news object and comprises a set of sub-" -"properties for proper addressing." -msgstr "" - -#: src/properties.cpp:655 -msgid "Intellectual Genre" -msgstr "" - -#: src/properties.cpp:655 -msgid "" -"Describes the nature, intellectual or journalistic characteristic of a news " -"object, not specifically its content." -msgstr "" - -#: src/properties.cpp:657 -msgid "" -"Name of a location the content is focussing on -- either the location shown " -"in visual media or referenced by text or audio media. This location name " -"could either be the name of a sublocation to a city or the name of a well " -"known location or (natural) monument outside a city. In the sense of a " -"sublocation to a city this element is at the fourth level of a top-down " -"geographical hierarchy." -msgstr "" - -#: src/properties.cpp:662 -msgid "IPTC Scene" -msgstr "IPTC Scéna" - -#: src/properties.cpp:662 -msgid "" -"Describes the scene of a photo content. Specifies one or more terms from the " -"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " -"in an unordered list." -msgstr "" - -#: src/properties.cpp:664 -msgid "IPTC Subject Code" -msgstr "IPTC Kód subjektu" - -#: src/properties.cpp:664 -msgid "" -"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " -"to categorize the content. Each Subject is represented as a string of 8 " -"digits in an unordered list." -msgstr "" - -#: src/properties.cpp:671 -#, fuzzy -msgid "Additional model info" -msgstr "Informácie o polohe automatického zaostrenia" - -#: src/properties.cpp:671 -msgid "" -"Information about the ethnicity and other facts of the model(s) in a model-" -"released image." -msgstr "" - -#: src/properties.cpp:672 -msgid "Code of featured Organisation" -msgstr "" - -#: src/properties.cpp:672 -msgid "" -"Code from controlled vocabulary for identyfing the organisation or company " -"which is featured in the image." -msgstr "" - -#: src/properties.cpp:673 -msgid "Controlled Vocabulary Term" -msgstr "" - -#: src/properties.cpp:673 -msgid "" -"A term to describe the content of the image by a value from a Controlled " -"Vocabulary." -msgstr "" - -#: src/properties.cpp:674 -#, fuzzy -msgid "Model age" -msgstr "Model" - -#: src/properties.cpp:674 -msgid "" -"Age of the human model(s) at the time this image was taken in a model " -"released image." -msgstr "" - -#: src/properties.cpp:675 -msgid "Name of featured Organisation" -msgstr "" - -#: src/properties.cpp:675 -msgid "Name of the organisation or company which is featured in the image." -msgstr "" - -#: src/properties.cpp:676 -#, fuzzy -msgid "Person shown" -msgstr "Verzie" - -#: src/properties.cpp:676 -msgid "Name of a person shown in the image." -msgstr "" - -#: src/properties.cpp:677 -#, fuzzy -msgid "Digital Image Identifier" -msgstr "Stabilizácia obrazu" - -#: src/properties.cpp:677 -msgid "" -"Globally unique identifier for this digital image. It is created and applied " -"by the creator of the digital image at the time of its creation. this value " -"shall not be changed after that time." -msgstr "" - -#: src/properties.cpp:678 -msgid "Physical type of original photo" -msgstr "" - -#: src/properties.cpp:678 -#, fuzzy -msgid "The type of the source digital file." -msgstr "Názov scény" - -#: src/properties.cpp:679 src/properties.cpp:935 src/properties.cpp:944 -#, fuzzy -msgid "Event" -msgstr "VeÄer" - -#: src/properties.cpp:679 -msgid "Names or describes the specific event at which the photo was taken." -msgstr "" - -#: src/properties.cpp:680 -#, fuzzy -msgid "Maximum available height" -msgstr "nedostupné" - -#: src/properties.cpp:680 -msgid "" -"The maximum available height in pixels of the original photo from which this " -"photo has been derived by downsizing." -msgstr "" - -# FUZZY exif-focallength -#: src/properties.cpp:681 -#, fuzzy -msgid "Maximum available width" -msgstr "Maximálna ohnisková vzdialenosÅ¥" - -#: src/properties.cpp:681 -msgid "" -"The maximum available width in pixels of the original photo from which this " -"photo has been derived by downsizing." -msgstr "" - -#: src/properties.cpp:682 -#, fuzzy -msgid "Registry Entry" -msgstr "položka poľa" - -#: src/properties.cpp:682 -msgid "" -"Both a Registry Item Id and a Registry Organisation Id to record any " -"registration of this digital image with a registry." -msgstr "" - -#: src/properties.cpp:683 -#, fuzzy -msgid "Registry Entry-Item Identifier" -msgstr "položka poľa" - -#: src/properties.cpp:683 -msgid "" -"A unique identifier created by a registry and applied by the creator of the " -"digital image. This value shall not be changed after being applied. This " -"identifier is linked to a corresponding Registry Organisation Identifier." -msgstr "" - -#: src/properties.cpp:684 -msgid "Registry Entry-Organisation Identifier" -msgstr "" - -#: src/properties.cpp:684 -msgid "" -"An identifier for the registry which issued the corresponding Registry Image " -"Id." -msgstr "" - -#: src/properties.cpp:685 -msgid "IPTC Fields Last Edited" -msgstr "" - -#: src/properties.cpp:685 -#, fuzzy -msgid "" -"The date and optionally time when any of the IPTC photo metadata fields has " -"been last edited." -msgstr "Dátum a Äas, kedy boli metadáta naposledy zmenené." - -#: src/properties.cpp:686 -#, fuzzy -msgid "Location shown" -msgstr "Kód umiestnenia" - -#: src/properties.cpp:686 -#, fuzzy -msgid "A location shown in the image." -msgstr "Posunutie náhľadu" - -#: src/properties.cpp:687 -#, fuzzy -msgid "Location Created" -msgstr "Kód umiestnenia" - -#: src/properties.cpp:687 -#, fuzzy -msgid "The location the photo was taken." -msgstr "Dátum, kedy bol titul vydaný" - -#: src/properties.cpp:688 -#, fuzzy -msgid "Location-City" -msgstr "Umiestnenie" - -#: src/properties.cpp:688 -#, fuzzy -msgid "Name of the city of a location." -msgstr "Meno autora alebo autorov" - -#: src/properties.cpp:689 -#, fuzzy -msgid "Location-Country ISO-Code" -msgstr "Kód umiestnenia" - -#: src/properties.cpp:689 -#, fuzzy -msgid "The ISO code of a country of a location." -msgstr "Meno autora alebo autorov" - -#: src/properties.cpp:690 -#, fuzzy -msgid "Location-Country Name" -msgstr "Názov umiestnenia" - -#: src/properties.cpp:690 -#, fuzzy -msgid "The name of a country of a location." -msgstr "Meno autora alebo autorov" - -#: src/properties.cpp:691 -#, fuzzy -msgid "Location-Province/State" -msgstr "Provincia Å¡tátu" - -#: src/properties.cpp:691 -#, fuzzy -msgid "" -"The name of a subregion of a country - a province or state - of a location." -msgstr "Meno autora alebo autorov" - -#: src/properties.cpp:692 -#, fuzzy -msgid "Location-Sublocation" -msgstr "Umiestnenie sub." - -#: src/properties.cpp:692 -msgid "" -"Name of a sublocation. This sublocation name could either be the name of a " -"sublocation to a city or the name of a well known location or (natural) " -"monument outside a city." -msgstr "" - -#: src/properties.cpp:693 -#, fuzzy -msgid "Location-World Region" -msgstr "Kód umiestnenia" - -#: src/properties.cpp:693 -#, fuzzy -msgid "The name of a world region of a location." -msgstr "Meno autora alebo autorov" - -#: src/properties.cpp:694 -#, fuzzy -msgid "Artwork or object in the image" -msgstr "Oznam autorských práv" - -#: src/properties.cpp:694 -msgid "A set of metadata about artwork or an object in the image." -msgstr "" - -#: src/properties.cpp:695 -#, fuzzy -msgid "Artwork or object-Copyright notice" -msgstr "Oznam autorských práv" - -#: src/properties.cpp:695 -msgid "" -"Contains any necessary copyright notice for claiming the intellectual " -"property for artwork or an object in the image and should identify the " -"current owner of the copyright of this work with associated intellectual " -"property rights." -msgstr "" - -#: src/properties.cpp:696 -#, fuzzy -msgid "Artwork or object-Creator" -msgstr "Oznam autorských práv" - -#: src/properties.cpp:696 -msgid "" -"Contains the name of the artist who has created artwork or an object in the " -"image. In cases where the artist could or should not be identified the name " -"of a company or organisation may be appropriate." -msgstr "" - -#: src/properties.cpp:697 -#, fuzzy -msgid "Artwork or object-Date Created" -msgstr "Oznam autorských práv" - -#: src/properties.cpp:697 -msgid "" -"Designates the date and optionally the time the artwork or object in the " -"image was created. This relates to artwork or objects with associated " -"intellectual property rights." -msgstr "" - -#: src/properties.cpp:698 -#, fuzzy -msgid "Artwork or object-Source" -msgstr "Oznam autorských práv" - -#: src/properties.cpp:698 -msgid "" -"The organisation or body holding and registering the artwork or object in " -"the image for inventory purposes." -msgstr "" - -#: src/properties.cpp:699 -#, fuzzy -msgid "Artwork or object-Source inventory number" -msgstr "Oznam autorských práv" - -#: src/properties.cpp:699 -msgid "" -"The inventory number issued by the organisation or body holding and " -"registering the artwork or object in the image." -msgstr "" - -#: src/properties.cpp:700 -#, fuzzy -msgid "Artwork or object-Title" -msgstr "Oznam autorských práv" - -#: src/properties.cpp:700 -msgid "A reference for the artwork or object in the image." -msgstr "" - -#: src/properties.cpp:707 -msgid "Scan from film" -msgstr "" - -#: src/properties.cpp:708 -msgid "Scan from transparency (including slide)" -msgstr "" - -#: src/properties.cpp:709 -msgid "Scan from print" -msgstr "" - -#: src/properties.cpp:710 -#, fuzzy -msgid "Camera RAW" -msgstr "ID fotoaparátu" - -#: src/properties.cpp:711 -#, fuzzy -msgid "Camera TIFF" -msgstr "ID fotoaparátu" - -#: src/properties.cpp:712 -#, fuzzy -msgid "Camera JPEG" -msgstr "ID fotoaparátu" - -#: src/properties.cpp:717 -#, fuzzy -msgid "PLUS Version" -msgstr "PDF verzia" - -#: src/properties.cpp:717 -msgid "" -"The version number of the PLUS standards in place at the time of the " -"transaction." -msgstr "" - -#: src/properties.cpp:718 -#, fuzzy -msgid "Licensee" -msgstr "Å¡oÅ¡ovky" - -#: src/properties.cpp:718 -msgid "" -"Party or parties to whom the license is granted by the Licensor/s under the " -"license transaction." -msgstr "" - -#: src/properties.cpp:719 -#, fuzzy -msgid "Licensee ID" -msgstr "ID Å¡oÅ¡oviek" - -#: src/properties.cpp:719 -msgid "Optional PLUS-ID identifying each Licensee." -msgstr "" - -#: src/properties.cpp:720 -#, fuzzy -msgid "Licensee Name" -msgstr "Názov umiestnenia" - -#: src/properties.cpp:720 -#, fuzzy -msgid "Name of each Licensee." -msgstr "Názov scény" - -#: src/properties.cpp:721 -#, fuzzy -msgid "End User" -msgstr "externý" - -#: src/properties.cpp:721 -msgid "Party or parties ultimately making use of the image under the license." -msgstr "" - -#: src/properties.cpp:722 -#, fuzzy -msgid "End User ID" -msgstr "externý" - -#: src/properties.cpp:722 -msgid "Optional PLUS-ID identifying each End User." -msgstr "" - -#: src/properties.cpp:723 -#, fuzzy -msgid "End User Name" -msgstr "Meno vlastníka" - -#: src/properties.cpp:723 -#, fuzzy -msgid "Name of each End User." -msgstr "Názov scény" - -#: src/properties.cpp:724 -#, fuzzy -msgid "Licensor" -msgstr "Å¡oÅ¡ovky" - -#: src/properties.cpp:724 -msgid "Party or parties granting the license to the Licensee." -msgstr "" - -#: src/properties.cpp:725 -#, fuzzy -msgid "Licensor ID" -msgstr "ID Å¡oÅ¡oviek" - -#: src/properties.cpp:725 -msgid "Optional PLUS-ID identifying each Licensor." -msgstr "" - -#: src/properties.cpp:726 -#, fuzzy -msgid "Licensor Name" -msgstr "Názov umiestnenia" - -#: src/properties.cpp:726 -#, fuzzy -msgid "Name of each Licensor." -msgstr "Názov scény" - -#: src/properties.cpp:727 -#, fuzzy -msgid "Licensor Address" -msgstr "Vlastnosti digiKam" - -#: src/properties.cpp:727 -#, fuzzy -msgid "Licensor street address." -msgstr "Krajina" - -#: src/properties.cpp:728 -#, fuzzy -msgid "Licensor Address Detail" -msgstr "Kontaktné informácie- PSÄŒ" - -#: src/properties.cpp:728 -#, fuzzy -msgid "Additional Licensor mailing address details." -msgstr "Informácie o polohe automatického zaostrenia" - -#: src/properties.cpp:729 -#, fuzzy -msgid "Licensor City" -msgstr "Mexico City" - -#: src/properties.cpp:729 -#, fuzzy -msgid "Licensor City name." -msgstr "Krajina" - -#: src/properties.cpp:730 -#, fuzzy -msgid "Licensor State or Province" -msgstr "Å tát/provincia" - -#: src/properties.cpp:730 -#, fuzzy -msgid "Licensor State or Province name." -msgstr "Å tát/provincia" - -#: src/properties.cpp:731 -#, fuzzy -msgid "Licensor Postal Code" -msgstr "Kontaktné informácie- PSÄŒ" - -#: src/properties.cpp:731 -#, fuzzy -msgid "Licensor Postal Code or Zip Code." -msgstr "Kontaktné informácie- PSÄŒ" - -#: src/properties.cpp:732 -#, fuzzy -msgid "Licensor Country" -msgstr "Krajina" - -#: src/properties.cpp:732 -#, fuzzy -msgid "Licensor Country name." -msgstr "Krajina" - -#: src/properties.cpp:733 -#, fuzzy -msgid "Licensor Telephone Type 1" -msgstr "Sériové Äíslo fotoaparátu" - -#: src/properties.cpp:733 -#, fuzzy -msgid "Licensor Telephone Type 1." -msgstr "Sériové Äíslo fotoaparátu" - -#: src/properties.cpp:734 -#, fuzzy -msgid "Licensor Telephone 1" -msgstr "Sériové Äíslo fotoaparátu" - -#: src/properties.cpp:734 -#, fuzzy -msgid "Licensor Telephone number 1." -msgstr "Sériové Äíslo fotoaparátu" - -#: src/properties.cpp:735 -#, fuzzy -msgid "Licensor Telephone Type 2" -msgstr "Sériové Äíslo fotoaparátu" - -#: src/properties.cpp:735 -#, fuzzy -msgid "Licensor Telephone Type 2." -msgstr "Sériové Äíslo fotoaparátu" - -#: src/properties.cpp:736 -#, fuzzy -msgid "Licensor Telephone 2" -msgstr "Sériové Äíslo fotoaparátu" - -#: src/properties.cpp:736 -#, fuzzy -msgid "Licensor Telephone number 2." -msgstr "Sériové Äíslo fotoaparátu" - -#: src/properties.cpp:737 -#, fuzzy -msgid "Licensor Email" -msgstr "Názov umiestnenia" - -#: src/properties.cpp:737 -#, fuzzy -msgid "Licensor Email address." -msgstr "Kontaktné informácie- PSÄŒ" - -#: src/properties.cpp:738 -#, fuzzy -msgid "Licensor URL" -msgstr "Posledný URL" - -#: src/properties.cpp:738 -msgid "Licensor world wide web address." -msgstr "" - -#: src/properties.cpp:739 -#, fuzzy -msgid "Licensor Notes" -msgstr "Vlastnosti digiKam" - -#: src/properties.cpp:739 -msgid "" -"Supplemental information for use in identifying and contacting the Licensor/" -"s." -msgstr "" - -#: src/properties.cpp:740 -#, fuzzy -msgid "PLUS Media Summary Code" -msgstr "GPS Režim merania" - -#: src/properties.cpp:740 -msgid "" -"A PLUS-standardized alphanumeric code string summarizing the media usages " -"included in the license." -msgstr "" - -#: src/properties.cpp:741 -#, fuzzy -msgid "License Start Date" -msgstr "Dátum Minolta" - -#: src/properties.cpp:741 -#, fuzzy -msgid "The date on which the license takes effect." -msgstr "Dátum a Äas, kedy bolo video nasnímané." - -#: src/properties.cpp:742 -#, fuzzy -msgid "License End Date" -msgstr "Údaje Å¡oÅ¡oviek" - -#: src/properties.cpp:742 -#, fuzzy -msgid "The date on which the license expires." -msgstr "Názov scény" - -#: src/properties.cpp:743 -#, fuzzy -msgid "Media Constraints" -msgstr "Kontrast" - -#: src/properties.cpp:743 -msgid "" -"Constraints limiting the scope of PLUS Media Usage/s included in the license " -"to particular named media or to media not yet specifically defined in the " -"PLUS Media Matrix." -msgstr "" - -#: src/properties.cpp:744 -#, fuzzy -msgid "Region Constraints" -msgstr "Kontrast" - -#: src/properties.cpp:744 -msgid "" -"Constraints limiting the scope of geographic distribution to specific " -"cities, states, provinces or other areas to be included in or excluded from " -"the PLUS Regions specified in the Media Usages specified in the license." -msgstr "" - -#: src/properties.cpp:745 -#, fuzzy -msgid "Product or Service Constraints" -msgstr "Automatický kontrast" - -#: src/properties.cpp:745 -msgid "" -"Constraints limiting usage of the image to promotion of/association with a " -"named product or service." -msgstr "" - -#: src/properties.cpp:746 -#, fuzzy -msgid "Image File Constraints" -msgstr "Nastavenie veľkosti obrázka" - -#: src/properties.cpp:746 -msgid "" -"Constraints on the changing of the image file name, metadata or file type." -msgstr "" - -#: src/properties.cpp:747 -#, fuzzy -msgid "Image Alteration Constraints" -msgstr "Nastavenie kvality obrázka" - -#: src/properties.cpp:747 -msgid "" -"Constraints on alteration of the image by cropping, flipping, retouching, " -"colorization, de-colorization or merging." -msgstr "" - -#: src/properties.cpp:748 -#, fuzzy -msgid "Image Duplication Constraints" -msgstr "Nastavenie kvality obrázka" - -#: src/properties.cpp:748 -msgid "Constraints on the creation of duplicates of the image." -msgstr "" - -#: src/properties.cpp:749 -#, fuzzy -msgid "Model Release Status" -msgstr "Dátum vydania" - -#: src/properties.cpp:749 -msgid "" -"Summarizes the availability and scope of model releases authorizing usage of " -"the likenesses of persons appearing in the photograph." -msgstr "" - -#: src/properties.cpp:750 -#, fuzzy -msgid "Model Release ID" -msgstr "ID modelu" - -#: src/properties.cpp:750 -msgid "Optional identifier associated with each Model Release." -msgstr "" - -#: src/properties.cpp:751 -msgid "Minor Model Age Disclosure" -msgstr "" - -#: src/properties.cpp:751 -msgid "" -"Age of the youngest model pictured in the image, at the time that the image " -"was made." -msgstr "" - -#: src/properties.cpp:752 -#, fuzzy -msgid "Property Release Status" -msgstr "Dátum vydania" - -#: src/properties.cpp:752 -msgid "" -"Summarizes the availability and scope of property releases authorizing usage " -"of the properties appearing in the photograph." -msgstr "" - -#: src/properties.cpp:753 -#, fuzzy -msgid "Property Release ID" -msgstr "ID modelu" - -#: src/properties.cpp:753 -msgid "Optional identifier associated with each Property Release." -msgstr "" - -#: src/properties.cpp:754 -#, fuzzy -msgid "Other Constraints" -msgstr "Automatický kontrast" - -#: src/properties.cpp:754 -#, fuzzy -msgid "Additional constraints on the license." -msgstr "Informácie o polohe automatického zaostrenia" - -#: src/properties.cpp:755 -#, fuzzy -msgid "Credit Line Required" -msgstr "Nepoužité" - -#: src/properties.cpp:755 -msgid "Attribution requirements, if any." -msgstr "" - -#: src/properties.cpp:756 -msgid "Adult Content Warning" -msgstr "" - -#: src/properties.cpp:756 -msgid "Warning indicating the presence of content not suitable for minors." -msgstr "" - -#: src/properties.cpp:757 -#, fuzzy -msgid "Other License Requirements" -msgstr "Info o Å¡oÅ¡ovkách" - -#: src/properties.cpp:757 -#, fuzzy -msgid "Additional license requirements." -msgstr "Informácie o polohe automatického zaostrenia" - -#: src/properties.cpp:758 -#, fuzzy -msgid "Terms and Conditions Text" -msgstr "Podmienky zachytenia obrázka" - -#: src/properties.cpp:758 -msgid "Terms and Conditions applying to the license." -msgstr "" - -#: src/properties.cpp:759 -#, fuzzy -msgid "Terms and Conditions URL" -msgstr "Podmienky zachytenia obrázka" - -#: src/properties.cpp:759 -msgid "URL for Terms and Conditions applying to the license." -msgstr "" - -#: src/properties.cpp:760 -#, fuzzy -msgid "Other License Conditions" -msgstr "Podmienky zachytenia obrázka" - -#: src/properties.cpp:760 -#, fuzzy -msgid "Additional license conditions." -msgstr "Informácie o polohe automatického zaostrenia" - -#: src/properties.cpp:761 -#, fuzzy -msgid "Identifies the type of image delivered." -msgstr "Identifikácia poskytovateľa a produktu" - -#: src/properties.cpp:762 -#, fuzzy -msgid "Licensor Image ID" -msgstr "ID Å¡oÅ¡oviek" - -#: src/properties.cpp:762 -msgid "Optional identifier assigned by the Licensor to the image." -msgstr "" - -#: src/properties.cpp:763 -#, fuzzy -msgid "Image File Name As Delivered" -msgstr "Súvisiaci formát súboru obrázka" - -#: src/properties.cpp:763 -msgid "" -"Name of the image file delivered to the Licensee for use under the license." -msgstr "" - -#: src/properties.cpp:764 -#, fuzzy -msgid "Image File Format As Delivered" -msgstr "Súvisiaci formát súboru obrázka" - -#: src/properties.cpp:764 -msgid "" -"File format of the image file delivered to the Licensee for use under the " -"license." -msgstr "" - -#: src/properties.cpp:765 -#, fuzzy -msgid "Image File Size As Delivered" -msgstr "Súvisiaci formát súboru obrázka" - -#: src/properties.cpp:765 -msgid "Size of the image file delivered to the Licensee." -msgstr "" - -#: src/properties.cpp:766 -#, fuzzy -msgid "Copyright Status" -msgstr "Copyright" - -#: src/properties.cpp:766 -#, fuzzy -msgid "Copyright status of the image." -msgstr "Oznam autorských práv" - -#: src/properties.cpp:767 -#, fuzzy -msgid "Copyright Registration Number" -msgstr "Meno vlastníka" - -#: src/properties.cpp:767 -msgid "Copyright Registration Number, if any, applying to the licensed image." -msgstr "" - -#: src/properties.cpp:768 -#, fuzzy -msgid "First Publication Date" -msgstr "Dátum digitalizácie" - -#: src/properties.cpp:768 -#, fuzzy -msgid "The date on which the image was first published." -msgstr "Dátum, kedy bol titul vydaný" - -#: src/properties.cpp:769 -#, fuzzy -msgid "Copyright Owner" -msgstr "Copyright" - -#: src/properties.cpp:769 -msgid "Owner or owners of the copyright in the licensed image." -msgstr "" - -#: src/properties.cpp:770 -#, fuzzy -msgid "Copyright Owner ID" -msgstr "Copyright" - -#: src/properties.cpp:770 -msgid "Optional PLUS-ID identifying each Copyright Owner." -msgstr "" - -#: src/properties.cpp:771 -#, fuzzy -msgid "Copyright Owner Name" -msgstr "Meno vlastníka" - -#: src/properties.cpp:771 -#, fuzzy -msgid "Name of Copyright Owner." -msgstr "Copyright" - -#: src/properties.cpp:772 -#, fuzzy -msgid "Copyright Owner Image ID" -msgstr "Copyright" - -#: src/properties.cpp:772 -msgid "Optional identifier assigned by the Copyright Owner to the image." -msgstr "" - -#: src/properties.cpp:773 -#, fuzzy -msgid "Image Creator" -msgstr "Orientácia obrázka" - -#: src/properties.cpp:773 -#, fuzzy -msgid "Creator/s of the image." -msgstr "Posunutie náhľadu" - -#: src/properties.cpp:774 -#, fuzzy -msgid "Image Creator ID" -msgstr "Orientácia obrázka" - -#: src/properties.cpp:774 -msgid "Optional PLUS-ID identifying each Image Creator." -msgstr "" - -#: src/properties.cpp:775 -#, fuzzy -msgid "Image Creator Name" -msgstr "Tón obrázka" - -#: src/properties.cpp:775 -#, fuzzy -msgid "Name of Image Creator." -msgstr "PoÄet obrázkov" - -#: src/properties.cpp:776 -#, fuzzy -msgid "Image Creator Image ID" -msgstr "Orientácia obrázka" - -#: src/properties.cpp:776 -msgid "Optional identifier assigned by the Image Creator to the image." -msgstr "" - -#: src/properties.cpp:777 -#, fuzzy -msgid "Image Supplier ID" -msgstr "JedineÄný ID obrázka" - -#: src/properties.cpp:777 -msgid "Optional PLUS-ID identifying the Image Supplier." -msgstr "" - -#: src/properties.cpp:778 -#, fuzzy -msgid "Image Supplier Name" -msgstr "VeľkosÅ¥ obrázka" - -#: src/properties.cpp:778 -#, fuzzy -msgid "Name of Image Supplier." -msgstr "PoÄet obrázkov" - -#: src/properties.cpp:779 -#, fuzzy -msgid "Image Supplier Image ID" -msgstr "JedineÄný ID obrázka" - -#: src/properties.cpp:779 -msgid "Optional identifier assigned by the Image Supplier to the image." -msgstr "" - -#: src/properties.cpp:780 -#, fuzzy -msgid "Licensee Image ID" -msgstr "ZmazaÅ¥ poÄet obrázkov" - -#: src/properties.cpp:780 -msgid "Optional identifier assigned by the Licensee to the image." -msgstr "" - -#: src/properties.cpp:781 -#, fuzzy -msgid "Licensee Image Notes" -msgstr "ZmazaÅ¥ poÄet obrázkov" - -#: src/properties.cpp:781 -#, fuzzy -msgid "Notes added by Licensee." -msgstr "Názov scény" - -#: src/properties.cpp:782 -#, fuzzy -msgid "Other Image Info" -msgstr "Info o Å¡oÅ¡ovkách" - -#: src/properties.cpp:782 -#, fuzzy -msgid "Additional image information." -msgstr "Informácie o polohe automatického zaostrenia" - -#: src/properties.cpp:783 -#, fuzzy -msgid "License ID" -msgstr "ID Å¡oÅ¡oviek" - -#: src/properties.cpp:783 -msgid "Optional PLUS-ID assigned by the Licensor to the License." -msgstr "" - -#: src/properties.cpp:784 -#, fuzzy -msgid "Licensor Transaction ID" -msgstr "Dátum expirácie" - -#: src/properties.cpp:784 -msgid "" -"Identifier assigned by Licensor for Licensor's reference and internal use." -msgstr "" - -#: src/properties.cpp:785 -#, fuzzy -msgid "Licensee Transaction ID" -msgstr "Dátum expirácie" - -#: src/properties.cpp:785 -msgid "" -"Identifier assigned by Licensee for Licensee's reference and internal use." -msgstr "" - -#: src/properties.cpp:786 -msgid "Licensee Project Reference" -msgstr "" - -#: src/properties.cpp:786 -msgid "Project reference name or description assigned by Licensee." -msgstr "" - -#: src/properties.cpp:787 -#, fuzzy -msgid "License Transaction Date" -msgstr "Dátum expirácie" - -#: src/properties.cpp:787 -#, fuzzy -msgid "The date of the License Transaction." -msgstr "Názov scény" - -#: src/properties.cpp:788 -#, fuzzy -msgid "Reuse" -msgstr "použité" - -#: src/properties.cpp:788 -msgid "" -"Indicates whether a license is a repeat or an initial license. Reuse may " -"require that licenses stored in files previously delivered to the customer " -"be updated." -msgstr "" - -#: src/properties.cpp:789 -#, fuzzy -msgid "Other License Documents" -msgstr "Podmienky zachytenia obrázka" - -#: src/properties.cpp:789 -msgid "" -"Reference information for additional documents associated with the license." -msgstr "" - -#: src/properties.cpp:790 -#, fuzzy -msgid "Other License Info" -msgstr "Info o Å¡oÅ¡ovkách" - -#: src/properties.cpp:790 -#, fuzzy -msgid "Additional license information." -msgstr "Informácie o polohe automatického zaostrenia" - -#: src/properties.cpp:791 src/properties.cpp:792 src/properties.cpp:793 -#: src/properties.cpp:794 src/properties.cpp:795 -msgid "Optional field for use at Licensor's discretion." -msgstr "" - -#: src/properties.cpp:794 -#, fuzzy -msgid "Custom 4" -msgstr "Vlastný 1" - -#: src/properties.cpp:795 -#, fuzzy -msgid "Custom 5" -msgstr "Vlastný 1" - -#: src/properties.cpp:796 -#, fuzzy -msgid "Custom 6" -msgstr "Vlastný 1" - -#: src/properties.cpp:796 src/properties.cpp:797 src/properties.cpp:798 -#: src/properties.cpp:799 src/properties.cpp:800 -msgid "Optional field for use at Licensee's discretion." -msgstr "" - -#: src/properties.cpp:797 -#, fuzzy -msgid "Custom 7" -msgstr "Vlastný 1" - -#: src/properties.cpp:798 -#, fuzzy -msgid "Custom 8" -msgstr "Vlastný 1" - -#: src/properties.cpp:799 -#, fuzzy -msgid "Custom 9" -msgstr "Vlastný 1" - -#: src/properties.cpp:800 -#, fuzzy -msgid "Custom 10" -msgstr "Vlastný 1" - -#: src/properties.cpp:807 -msgid "Adult Content Warning Required" -msgstr "" - -#: src/properties.cpp:808 -#, fuzzy -msgid "Not Required" -msgstr "Nepoužité" - -#: src/properties.cpp:814 -#, fuzzy -msgid "Protected" -msgstr "IdentifikaÄné Äíslo výrobku" - -#: src/properties.cpp:815 -msgid "Public Domain" -msgstr "" - -#: src/properties.cpp:821 -#, fuzzy -msgid "Credit Adjacent To Image" -msgstr "ZobraziÅ¥ vložený obrázok" - -#: src/properties.cpp:822 -msgid "Credit in Credits Area" -msgstr "" - -#: src/properties.cpp:823 -#, fuzzy -msgid "Credit on Image" -msgstr "ZobraziÅ¥ vložený obrázok" - -#: src/properties.cpp:824 -#, fuzzy -msgid "Not Require" -msgstr "nedefinované" - -#: src/properties.cpp:829 -#, fuzzy -msgid "No Colorization" -msgstr "Solarizácia" - -#: src/properties.cpp:830 -msgid "No Cropping" -msgstr "" - -#: src/properties.cpp:831 -#, fuzzy -msgid "No De-Colorization" -msgstr "Solarizácia" - -#: src/properties.cpp:832 -msgid "No Flipping" -msgstr "" - -#: src/properties.cpp:833 -#, fuzzy -msgid "No Merging" -msgstr "Redukcia Å¡umu" - -#: src/properties.cpp:834 -#, fuzzy -msgid "No Retouching" -msgstr "Redukcia Å¡umu" - -#: src/properties.cpp:839 -msgid "Duplication Only as Necessary Under License" -msgstr "" - -#: src/properties.cpp:840 -#, fuzzy -msgid "No Duplication Constraints" -msgstr "Nastavenie kvality obrázka" - -#: src/properties.cpp:841 -#, fuzzy -msgid "No Duplication" -msgstr "Trvanie zvuku" - -#: src/properties.cpp:846 -#, fuzzy -msgid "Maintain File Name" -msgstr "Názov nespracovaného súboru" - -#: src/properties.cpp:847 -#, fuzzy -msgid "Maintain File Type" -msgstr "Názov nespracovaného súboru" - -#: src/properties.cpp:848 -#, fuzzy -msgid "Maintain ID in File Name" -msgstr "Názov nespracovaného pôvodného súboru" - -#: src/properties.cpp:849 -#, fuzzy -msgid "Maintain Metadata" -msgstr "Dátum Minolta" - -#: src/properties.cpp:854 -#, fuzzy -msgid "Windows Bitmap (BMP)" -msgstr "Názov okna" - -#: src/properties.cpp:855 -msgid "Digital Negative (DNG)" -msgstr "" - -#: src/properties.cpp:856 -msgid "Encapsulated PostScript (EPS)" -msgstr "" - -# exif-jpeginterchangeformat -#: src/properties.cpp:857 -#, fuzzy -msgid "Graphics Interchange Format (GIF)" -msgstr "formát JPEG" - -# exif-jpeginterchangeformat -#: src/properties.cpp:858 -#, fuzzy -msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" -msgstr "formát JPEG" - -#: src/properties.cpp:860 -msgid "Macintosh Picture (PICT)" -msgstr "" - -#: src/properties.cpp:861 -msgid "Portable Network Graphics (PNG)" -msgstr "" - -#: src/properties.cpp:862 -msgid "Photoshop Document (PSD)" -msgstr "" - -#: src/properties.cpp:863 -msgid "Proprietary RAW Image Format" -msgstr "" - -#: src/properties.cpp:864 -#, fuzzy -msgid "Tagged Image File Format (TIFF)" -msgstr "Súvisiaci formát súboru obrázka" - -#: src/properties.cpp:865 -msgid "Windows Media Photo (HD Photo)" -msgstr "" - -#: src/properties.cpp:870 -msgid "Greater than 50 MB" -msgstr "" - -#: src/properties.cpp:871 -#, fuzzy -msgid "Up to 1 MB" -msgstr "Optio A10" - -#: src/properties.cpp:872 -#, fuzzy -msgid "Up to 10 MB" -msgstr "Optio A10" - -#: src/properties.cpp:873 -#, fuzzy -msgid "Up to 30 MB" -msgstr "Optio 30" - -#: src/properties.cpp:874 -#, fuzzy -msgid "Up to 50 MB" -msgstr "Optio S50" - -#: src/properties.cpp:879 -#, fuzzy -msgid "Illustrated Image" -msgstr "Šírka súvisiaceho obrázka" - -#: src/properties.cpp:880 -msgid "Multimedia or Composited Image" -msgstr "" - -#: src/properties.cpp:882 -msgid "Photographic Image" -msgstr "" - -#: src/properties.cpp:888 -msgid "Cell" -msgstr "" - -#: src/properties.cpp:889 -msgid "FAX" -msgstr "" - -#: src/properties.cpp:891 -#, fuzzy -msgid "Pager" -msgstr "Manažér" - -#: src/properties.cpp:892 -msgid "Work" -msgstr "" - -#: src/properties.cpp:897 -#, fuzzy -msgid "Age Unknown" -msgstr "Neznáme" - -#: src/properties.cpp:898 -msgid "Age 25 or Over" -msgstr "" - -#: src/properties.cpp:899 -msgid "Age 24" -msgstr "" - -#: src/properties.cpp:900 -msgid "Age 23" -msgstr "" - -#: src/properties.cpp:901 -msgid "Age 22" -msgstr "" - -#: src/properties.cpp:902 -msgid "Age 21" -msgstr "" - -#: src/properties.cpp:903 -msgid "Age 20" -msgstr "" - -#: src/properties.cpp:904 -msgid "Age 19" -msgstr "" - -#: src/properties.cpp:905 -msgid "Age 18" -msgstr "" - -#: src/properties.cpp:906 -msgid "Age 17" -msgstr "" - -#: src/properties.cpp:907 -msgid "Age 16" -msgstr "" - -#: src/properties.cpp:908 -msgid "Age 15" -msgstr "" - -#: src/properties.cpp:909 -msgid "Age 14 or Under" -msgstr "" - -#: src/properties.cpp:915 src/properties.cpp:923 src/properties.cpp:930 -msgid "Not Applicable" -msgstr "" - -#: src/properties.cpp:916 -#, fuzzy -msgid "Unlimited Model Releases" -msgstr "ID modelu" - -#: src/properties.cpp:917 -msgid "Limited or Incomplete Model Releases" -msgstr "" - -#: src/properties.cpp:924 -msgid "Unlimited Property Releases" -msgstr "" - -#: src/properties.cpp:925 -msgid "Limited or Incomplete Property Releases" -msgstr "" - -#: src/properties.cpp:931 -msgid "Repeat Use" -msgstr "" - -#: src/properties.cpp:935 src/properties.cpp:944 -#, fuzzy -msgid "Fixture Identification" -msgstr "Model" - -#: src/properties.cpp:936 src/properties.cpp:945 -#, fuzzy -msgid "Status" -msgstr "Stav GPS" - -#: src/properties.cpp:936 src/properties.cpp:945 -msgid "A notation making the image unique" -msgstr "" - -#: src/properties.cpp:937 src/properties.cpp:946 -msgid "People" -msgstr "" - -#: src/properties.cpp:938 src/properties.cpp:947 -msgid "CatalogSets" -msgstr "" - -#: src/properties.cpp:938 src/properties.cpp:947 src/properties.cpp:978 -#: src/properties.cpp:982 -msgid "Descriptive markers of catalog items by content" -msgstr "" - -#: src/properties.cpp:953 -#, fuzzy -msgid "RegionInfo" -msgstr "Info o Å¡oÅ¡ovkách" - -#: src/properties.cpp:953 -msgid "Microsoft Photo people-tagging metadata root" -msgstr "" - -#: src/properties.cpp:959 -msgid "DateRegionsValid" -msgstr "" - -#: src/properties.cpp:959 -#, fuzzy -msgid "Date the last region was created" -msgstr "Dátum, kedy bol titul vydaný" - -#: src/properties.cpp:960 src/properties.cpp:975 -#, fuzzy -msgid "Regions" -msgstr "Verzie" - -#: src/properties.cpp:960 -msgid "Contains Regions/person tags" -msgstr "" - -#: src/properties.cpp:966 -#, fuzzy -msgid "PersonDisplayName" -msgstr "Názvy plôch" - -#: src/properties.cpp:966 -msgid "Name of the person (in the given rectangle)" -msgstr "" - -#: src/properties.cpp:967 -msgid "Rectangle" -msgstr "" - -#: src/properties.cpp:967 -msgid "Rectangle that identifies the person within the photo" -msgstr "" - -#: src/properties.cpp:968 -msgid "PersonEmailDigest" -msgstr "" - -#: src/properties.cpp:968 -msgid "" -"SHA-1 encrypted message hash of the person's Windows Live e-mail address" -msgstr "" - -#: src/properties.cpp:969 -msgid "PersonLiveCID" -msgstr "" - -#: src/properties.cpp:969 -msgid "Signed decimal representation of the person's Windows Live CID" -msgstr "" - -#: src/properties.cpp:975 -msgid "Main structure containing region based information" -msgstr "" - -#: src/properties.cpp:976 -#, fuzzy -msgid "AppliedToDimensions" -msgstr "Vodorovný rozmer pixelu" - -#: src/properties.cpp:976 -msgid "Width and height of image when storing region data" -msgstr "" - -#: src/properties.cpp:977 -msgid "RegionList" -msgstr "" - -#: src/properties.cpp:977 -#, fuzzy -msgid "List of Region structures" -msgstr "Å truktúra verzie" - -#: src/properties.cpp:978 -#, fuzzy -msgid "Area" -msgstr "rozsah zaostrenia" - -#: src/properties.cpp:979 -msgid "Type purpose of region (Face|Pet|Focus|BarCode)" -msgstr "" - -#: src/properties.cpp:980 -msgid "Name/ short description of content in image region" -msgstr "" - -#: src/properties.cpp:981 -msgid "" -"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" -"NotEvaluatedNotUsed)" -msgstr "" - -#: src/properties.cpp:982 -#, fuzzy -msgid "FocusUsage" -msgstr "Rozsah zaostrenia" - -#: src/properties.cpp:983 -#, fuzzy -msgid "BarCodeValue" -msgstr "Krok viacnásobného záberu" - -#: src/properties.cpp:983 -msgid "Decoded BarCode value string" -msgstr "" - -#: src/properties.cpp:984 -#, fuzzy -msgid "Extensions" -msgstr "Verzie" - -#: src/properties.cpp:984 -msgid "Any top level XMP property to describe the region content" -msgstr "" - -#: src/sigmamn.cpp:62 -msgid "Resolution Mode" -msgstr "Režim rozlíšenia" - -#: src/sigmamn.cpp:63 -msgid "Resolution mode" -msgstr "Režim rozlíšenia" - -#: src/sigmamn.cpp:65 -msgid "Autofocus Mode" -msgstr "Režim automatického zaostrenia" - -#: src/sigmamn.cpp:66 -msgid "Autofocus mode" -msgstr "Režim automatického zaostrenia" - -#: src/sigmamn.cpp:68 -msgid "Focus Setting" -msgstr "Nastavenia zaostrenia" - -#: src/sigmamn.cpp:69 -msgid "Focus setting" -msgstr "Nastavenia zaostrenia" - -#: src/sigmamn.cpp:80 -msgid "Lens Range" -msgstr "Rozsah Å¡oÅ¡oviek:" - -#: src/sigmamn.cpp:81 -msgid "Lens focal length range" -msgstr "Rozsah ohniskovej vzdialenosti Å¡oÅ¡oviek" - -# exif-lightsource-11 -#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 -msgid "Shadow" -msgstr "Tieň" - -#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 -msgid "Highlight" -msgstr "Svetlé miesta" - -#: src/sigmamn.cpp:104 -#, fuzzy -msgid "Fill Light" -msgstr "nedostupné" - -#: src/sigmamn.cpp:105 -#, fuzzy -msgid "X3 Fill light" -msgstr "Spustí sa blesk" - -#: src/sigmamn.cpp:107 -msgid "Color Adjustment" -msgstr "Úprava farieb" - -#: src/sigmamn.cpp:108 -msgid "Color adjustment" -msgstr "Úprava farieb" - -#: src/sigmamn.cpp:110 -msgid "Adjustment Mode" -msgstr "Režim úprav" - -#: src/sigmamn.cpp:111 -msgid "Adjustment mode" -msgstr "Režim úprav" - -#: src/sigmamn.cpp:122 -msgid "Auto Bracket" -msgstr "Automatická uzávierka" - -#: src/sigmamn.cpp:123 src/tags.cpp:1490 -msgid "Auto bracket" -msgstr "Automatický viacnásobný záber" - -#: src/sigmamn.cpp:127 -msgid "Unknown SigmaMakerNote tag" -msgstr "Neznáma znaÄka SigmaMakerNote" - -#: src/sigmamn.cpp:170 -msgid "8-Segment" -msgstr "" - -#: src/sonymn.cpp:88 -#, fuzzy -msgid "Standard " -msgstr "Å tandardný" - -#: src/sonymn.cpp:91 -msgid "Advanced Lv1" -msgstr "" - -#: src/sonymn.cpp:92 -msgid "Advanced Lv2" -msgstr "" - -#: src/sonymn.cpp:93 -msgid "Advanced Lv3" -msgstr "" - -#: src/sonymn.cpp:94 -msgid "Advanced Lv4" -msgstr "" - -#: src/sonymn.cpp:95 -msgid "Advanced Lv5" -msgstr "" - -# exif-scenecapturetype-1 -#: src/sonymn.cpp:109 -#, fuzzy -msgid "Landscape " -msgstr "krajinka" - -#: src/sonymn.cpp:113 -#, fuzzy -msgid "Night Scene / Twilight" -msgstr "NoÄná scéna" - -#: src/sonymn.cpp:114 -msgid "Hi-Speed Shutter" -msgstr "" - -#: src/sonymn.cpp:115 -#, fuzzy -msgid "Twilight Portrait" -msgstr "NoÄný portrét" - -# exif-sharpness-1 -#: src/sonymn.cpp:116 -#, fuzzy -msgid "Soft Snap" -msgstr "mäkký" - -#: src/sonymn.cpp:118 -#, fuzzy -msgid "Smile Shutter" -msgstr "pomalá uzávierka" - -#: src/sonymn.cpp:120 -#, fuzzy -msgid "High Sensitivity" -msgstr "ISO citlivosÅ¥" - -#: src/sonymn.cpp:121 -msgid "Advanced Sports Shooting" -msgstr "" - -#: src/sonymn.cpp:123 -#, fuzzy -msgid "Gourmet" -msgstr "ID dokumentu" - -#: src/sonymn.cpp:125 -#, fuzzy -msgid "Handheld Twilight" -msgstr "svetlo svieÄky" - -#: src/sonymn.cpp:126 -#, fuzzy -msgid "Anti Motion Blur" -msgstr "Režim obrázka" - -#: src/sonymn.cpp:128 -#, fuzzy -msgid "Backlight Correction HDR" -msgstr "Bez korekcie" - -#: src/sonymn.cpp:142 -#, fuzzy -msgid "On (Continuous)" -msgstr "Spojitý" - -#: src/sonymn.cpp:143 -#, fuzzy -msgid "On (Shooting)" -msgstr "Režim fotenia" - -#: src/sonymn.cpp:151 -msgid "Plus" -msgstr "" - -# exif-lightsource-15 -#: src/sonymn.cpp:167 -#, fuzzy -msgid "White Flourescent" -msgstr "biela, fluorescenÄná" - -# exif-lightsource-15 -#: src/sonymn.cpp:168 -#, fuzzy -msgid "Cool White Flourescent" -msgstr "biela, fluorescenÄná" - -# exif-lightsource-13 -#: src/sonymn.cpp:169 -#, fuzzy -msgid "Day White Flourescent" -msgstr "biely deň, fluorescenÄné" - -#: src/sonymn.cpp:172 -#, fuzzy -msgid "Underwater 1 (Blue Water)" -msgstr "pod vodou" - -#: src/sonymn.cpp:173 -#, fuzzy -msgid "Underwater 2 (Green Water)" -msgstr "pod vodou" - -#: src/sonymn.cpp:180 -msgid "Permanent-AF" -msgstr "" - -#: src/sonymn.cpp:188 -#, fuzzy -msgid "Center AF" -msgstr "v strede" - -#: src/sonymn.cpp:189 -#, fuzzy -msgid "Spot AF" -msgstr "Bodový" - -#: src/sonymn.cpp:190 -msgid "Flexible Spot AF" -msgstr "" - -#: src/sonymn.cpp:191 -#, fuzzy -msgid "Touch AF" -msgstr "VB jedným dotykom" - -#: src/sonymn.cpp:192 -#, fuzzy -msgid "Manual Focus" -msgstr "RuÄné zaostrenie" - -#: src/sonymn.cpp:193 -#, fuzzy -msgid "Face Detected" -msgstr "Nepodarilo sa preÄítaÅ¥" - -#: src/sonymn.cpp:208 -#, fuzzy -msgid "Close Focus" -msgstr "Automatické zaostrenie" - -#: src/sonymn.cpp:224 -#, fuzzy -msgid "Exposure Bracketing" -msgstr "Viacnásobné snímky so zmenou expozície" - -#: src/sonymn.cpp:298 src/sonymn.cpp:299 -#, fuzzy -msgid "Multi Burst Mode" -msgstr "Režim dávky" - -#: src/sonymn.cpp:301 src/sonymn.cpp:302 -#, fuzzy -msgid "Multi Burst Image Width" -msgstr "Šírka súvisiaceho obrázka" - -#: src/sonymn.cpp:304 src/sonymn.cpp:305 -#, fuzzy -msgid "Multi Burst Image Height" -msgstr "Výška obrázka" - -#: src/sonymn.cpp:315 -#, fuzzy -msgid "JPEG preview image" -msgstr "ZobraziÅ¥ vložený obrázok" - -#: src/sonymn.cpp:341 -#, fuzzy -msgid "Auto HDR" -msgstr "automatický vysoký" - -#: src/sonymn.cpp:342 -msgid "High Definition Range Mode" -msgstr "" - -#: src/sonymn.cpp:346 -#, fuzzy -msgid "Shot Information" -msgstr "Informácie o snímke" - -#: src/sonymn.cpp:351 src/sonymn.cpp:352 -#, fuzzy -msgid "Sony Model ID" -msgstr "ID modelu" - -#: src/sonymn.cpp:354 src/sonymn.cpp:355 -#, fuzzy -msgid "Color Reproduction" -msgstr "Redukcia farebného Å¡umu" - -#: src/sonymn.cpp:369 src/sonymn.cpp:370 src/sonymn.cpp:423 src/sonymn.cpp:424 -#, fuzzy -msgid "Dynamic Range Optimizer" -msgstr "Nastavenie dynamického rozsahu" - -#: src/sonymn.cpp:378 src/sonymn.cpp:379 -#, fuzzy -msgid "Minolta MakerNote" -msgstr "Dátum Minolta" - -#: src/sonymn.cpp:384 src/sonymn.cpp:385 -#, fuzzy -msgid "Full Image Size" -msgstr "VeľkosÅ¥ obrázka" - -#: src/sonymn.cpp:387 -#, fuzzy -msgid "Preview Image Size" -msgstr "ZobraziÅ¥ vložený obrázok" - -#: src/sonymn.cpp:388 -#, fuzzy -msgid "Preview image size" -msgstr "ZobraziÅ¥ vložený obrázok" - -#: src/sonymn.cpp:402 src/sonymn.cpp:403 src/sonymn.cpp:613 src/sonymn.cpp:614 -msgid "AF Illuminator" -msgstr "" - -#: src/sonymn.cpp:405 src/sonymn.cpp:406 -#, fuzzy -msgid "JPEG Quality" -msgstr "Kvalita" - -#: src/sonymn.cpp:411 src/sonymn.cpp:412 -#, fuzzy -msgid "Release Mode" -msgstr "Dátum vydania" - -#: src/sonymn.cpp:415 -#, fuzzy -msgid "Shot number in continous burst mode" -msgstr "Poradové Äíslo (ak je zo spojitého záberu)" - -#: src/sonymn.cpp:417 src/sonymn.cpp:418 -#, fuzzy -msgid "Anti-Blur" -msgstr "Zabránenie rozostrenia" - -#: src/sonymn.cpp:420 src/sonymn.cpp:421 src/sonymn.cpp:621 src/sonymn.cpp:622 -#, fuzzy -msgid "Long Exposure Noise Reduction" -msgstr "Redukciu Å¡umu dlhej expozície" - -#: src/sonymn.cpp:426 src/sonymn.cpp:427 -#, fuzzy -msgid "Intelligent Auto" -msgstr "Dĺžka intervalu" - -#: src/sonymn.cpp:434 -#, fuzzy -msgid "Unknown Sony1MakerNote tag" -msgstr "Neznáma znaÄka SonyMakerNote" - -#: src/sonymn.cpp:448 -#, fuzzy -msgid "Continuous High" -msgstr "Spojitý, vysoký" - -#: src/sonymn.cpp:452 -#, fuzzy -msgid "Continuous Low" -msgstr "Spojitý, nízky" - -#: src/sonymn.cpp:454 src/sonymn.cpp:455 -#, fuzzy -msgid "D-Range Optimizer Bracketing Low" -msgstr "Optimalizácia obrázka" - -#: src/sonymn.cpp:487 -#, fuzzy -msgid "Autumn" -msgstr "Auto" - -#: src/sonymn.cpp:493 -msgid "ADI" -msgstr "" - -#: src/sonymn.cpp:509 src/sonymn.cpp:510 src/sonymn.cpp:511 -msgid "StyleBox1" -msgstr "" - -#: src/sonymn.cpp:529 -#, fuzzy -msgid "Auto No Flash" -msgstr "Auto (blesk)" - -#: src/sonymn.cpp:584 src/sonymn.cpp:585 src/sonymn.cpp:690 src/sonymn.cpp:691 -#, fuzzy -msgid "Dynamic Range Optimizer Level" -msgstr "Nastavenie dynamického rozsahu" - -#: src/sonymn.cpp:587 src/sonymn.cpp:588 src/sonymn.cpp:693 src/sonymn.cpp:694 -#, fuzzy -msgid "Creative Style" -msgstr "Dátum vytvorenia" - -#: src/sonymn.cpp:599 src/sonymn.cpp:600 -#, fuzzy -msgid "Zone Matching Value" -msgstr "Hodnota jasu" - -#: src/sonymn.cpp:617 src/sonymn.cpp:618 -#, fuzzy -msgid "AF With Shutter" -msgstr "rýchla uzávierka" - -#: src/sonymn.cpp:625 src/sonymn.cpp:626 -#, fuzzy -msgid "High ISO NoiseReduction" -msgstr "Vysoká redukcia Å¡umu ISO" - -#: src/sonymn.cpp:629 src/sonymn.cpp:630 -#, fuzzy -msgid "Image Style" -msgstr "Typ obrázka" - -#: src/sonymn.cpp:655 -#, fuzzy -msgid "Unknown Sony1 Camera Settings tag" -msgstr "Neznáma znaÄka Nastavenie fotoaparátu Canon 1" - -#: src/sonymn.cpp:719 -#, fuzzy -msgid "Unknown Sony1 Camera Settings 2 tag" -msgstr "Neznáma znaÄka Nastavenie fotoaparátu Canon 2" - -#: src/tags.cpp:184 -msgid "Unknown section" -msgstr "Neznáma sekcia" - -#: src/tags.cpp:185 -msgid "Image data structure" -msgstr "Å truktúra obrazových údajov" - -#: src/tags.cpp:186 -msgid "Recording offset" -msgstr "Posunitie záznamu" - -#: src/tags.cpp:187 -msgid "Image data characteristics" -msgstr "Charakteristika obrazových dát" - -#: src/tags.cpp:188 -msgid "Other data" -msgstr "Iné údaje" - -#: src/tags.cpp:189 -#, fuzzy -msgid "Exif data structure" -msgstr "Å truktúra obrazových údajov" - -#: src/tags.cpp:191 -msgid "Image configuration" -msgstr "Konfigurácia obrázka" - -#: src/tags.cpp:192 -msgid "User information" -msgstr "Informácie o používateľovi" - -#: src/tags.cpp:193 -msgid "Related file" -msgstr "Súviasiaci súbor" - -#: src/tags.cpp:194 -msgid "Date and time" -msgstr "Dátum a Äas" - -#: src/tags.cpp:195 -msgid "Picture taking conditions" -msgstr "Podmienky zachytenia obrázka" - -#: src/tags.cpp:196 -msgid "GPS information" -msgstr "Informácie GPS" - -#: src/tags.cpp:197 -msgid "Interoperability information" -msgstr "Informácie o interoperabilite" - -#: src/tags.cpp:198 -msgid "Vendor specific information" -msgstr "Å pecifické informácie dodávateľa" - -#: src/tags.cpp:199 -msgid "Adobe DNG tags" -msgstr "ZnaÄky Adobe DNG" - -#: src/tags.cpp:200 -#, fuzzy -msgid "Panasonic RAW tags" -msgstr "Neznáma znaÄka PanasonicMakerNote" - -#: src/tags.cpp:201 -#, fuzzy -msgid "TIFF/EP tags" -msgstr "ID Å¡tandardu TIFF/EP" - -#: src/tags.cpp:202 -msgid "TIFF PageMaker 6.0 tags" -msgstr "" - -#: src/tags.cpp:203 -#, fuzzy -msgid "Adobe OPI tags" -msgstr "ZnaÄky Adobe DNG" - -#: src/tags.cpp:204 -msgid "Last section" -msgstr "Posledná sekcia" - -#: src/tags.cpp:220 -msgid "Primary image" -msgstr "Primárny obrázok" - -#: src/tags.cpp:221 -msgid "Thumbnail/Preview image" -msgstr "Náhľad" - -#: src/tags.cpp:222 -#, fuzzy -msgid "Primary image, Multi page file" -msgstr "Primárny obrázok" - -#: src/tags.cpp:223 -#, fuzzy -msgid "Thumbnail/Preview image, Multi page file" -msgstr "Náhľad" - -#: src/tags.cpp:224 -msgid "Primary image, Transparency mask" -msgstr "" - -#: src/tags.cpp:225 -#, fuzzy -msgid "Thumbnail/Preview image, Transparency mask" -msgstr "Náhľad" - -#: src/tags.cpp:226 -msgid "Primary image, Multi page file, Transparency mask" -msgstr "" - -#: src/tags.cpp:227 src/tags.cpp:228 -msgid "Thumbnail/Preview image, Multi page file, Transparency mask" -msgstr "" - -#: src/tags.cpp:233 -#, fuzzy -msgid "Full-resolution image data" -msgstr "Nepodarilo sa naÄítaÅ¥ obrazové údaje" - -#: src/tags.cpp:234 -msgid "Reduced-resolution image data" -msgstr "" - -#: src/tags.cpp:235 -msgid "A single page of a multi-page image" -msgstr "" - -#: src/tags.cpp:241 -msgid "inch" -msgstr "palce" - -#: src/tags.cpp:248 -msgid "CCITT RLE" -msgstr "CCITT RLE" - -#: src/tags.cpp:249 -msgid "T4/Group 3 Fax" -msgstr "T4/Group 3 Fax" - -#: src/tags.cpp:250 -msgid "T6/Group 4 Fax" -msgstr "T6/Group 4 Fax" - -#: src/tags.cpp:251 -msgid "LZW" -msgstr "LZW" - -#: src/tags.cpp:252 -msgid "JPEG (old-style)" -msgstr "" - -#: src/tags.cpp:253 -msgid "JPEG" -msgstr "JPEG" - -#: src/tags.cpp:254 -msgid "Adobe Deflate" -msgstr "Adobe deflate" - -#: src/tags.cpp:255 -msgid "JBIG B&W" -msgstr "JBIG ÄŒB" - -#: src/tags.cpp:256 -msgid "JBIG Color" -msgstr "JBIG farby" - -#: src/tags.cpp:257 -msgid "Next 2-bits RLE" -msgstr "" - -#: src/tags.cpp:258 -msgid "Epson ERF Compressed" -msgstr "Kompresia Epson ERF" - -#: src/tags.cpp:259 -#, fuzzy -msgid "Samsung SRW Compressed" -msgstr "Kompresia Epson ERF" - -#: src/tags.cpp:260 -msgid "CCITT RLE 1-word" -msgstr "CCITT RLE 1-word" - -#: src/tags.cpp:261 -msgid "PackBits (Macintosh RLE)" -msgstr "" - -#: src/tags.cpp:262 -msgid "Thunderscan RLE" -msgstr "Thunderscan RLE" - -#: src/tags.cpp:263 -msgid "IT8 CT Padding" -msgstr "" - -#: src/tags.cpp:264 -msgid "IT8 Linework RLE" -msgstr "IT8 Linework RLE" - -#: src/tags.cpp:265 -msgid "IT8 Monochrome Picture" -msgstr "IT8 Jednofarebný obrázok" - -#: src/tags.cpp:266 -msgid "IT8 Binary Lineart" -msgstr "IT8 Binárne Äiarové umenie" - -#: src/tags.cpp:267 -msgid "Pixar Film (10-bits LZW)" -msgstr "" - -#: src/tags.cpp:268 -msgid "Pixar Log (11-bits ZIP)" -msgstr "" - -#: src/tags.cpp:269 -#, fuzzy -msgid "Pixar Deflate" -msgstr "Adobe deflate" - -#: src/tags.cpp:270 -msgid "Kodak DCS Encoding" -msgstr "" - -#: src/tags.cpp:271 -msgid "ISO JBIG" -msgstr "ISO JBIG" - -#: src/tags.cpp:272 -msgid "SGI Log Luminance RLE" -msgstr "" - -#: src/tags.cpp:273 -msgid "SGI Log 24-bits packed" -msgstr "" - -#: src/tags.cpp:274 -msgid "Leadtools JPEG 2000" -msgstr "Leadtools JPEG 2000" - -#: src/tags.cpp:275 -msgid "Nikon NEF Compressed" -msgstr "Kompresia Nikon NEF" - -#: src/tags.cpp:276 -#, fuzzy -msgid "Kodak DCR Compressed" -msgstr "Kompresia Epson ERF" - -#: src/tags.cpp:277 -msgid "Pentax PEF Compressed" -msgstr "Kompresia Pentax PEF" - -#: src/tags.cpp:282 -#, fuzzy -msgid "White Is Zero" -msgstr "ÄŒierna je nula" - -#: src/tags.cpp:283 -msgid "Black Is Zero" -msgstr "ÄŒierna je nula" - -#: src/tags.cpp:284 -msgid "RGB" -msgstr "RGB" - -#: src/tags.cpp:285 -msgid "RGB Palette" -msgstr "RGB paleta" - -#: src/tags.cpp:286 -msgid "Transparency Mask" -msgstr "" - -#: src/tags.cpp:287 src/tags.cpp:326 -msgid "CMYK" -msgstr "CMYK" - -#: src/tags.cpp:288 -msgid "YCbCr" -msgstr "YCbCr" - -#: src/tags.cpp:289 -msgid "CIELab" -msgstr "CIELab" - -#: src/tags.cpp:290 -msgid "ICCLab" -msgstr "ICCLab" - -#: src/tags.cpp:291 -msgid "ITULab" -msgstr "ITULab" - -#: src/tags.cpp:292 -#, fuzzy -msgid "Color Filter Array" -msgstr "Farebný filter" - -#: src/tags.cpp:293 -msgid "Pixar LogL" -msgstr "Pixar LogL" - -#: src/tags.cpp:294 -msgid "Pixar LogLuv" -msgstr "Pixar LogLuv" - -#: src/tags.cpp:295 -msgid "Linear Raw" -msgstr "Lineárny Raw" - -#: src/tags.cpp:300 -msgid "No dithering or halftoning" -msgstr "" - -#: src/tags.cpp:301 -msgid "Ordered dither or halftone technique" -msgstr "" - -#: src/tags.cpp:302 -#, fuzzy -msgid "Randomized process" -msgstr "Bežné spracovanie" - -#: src/tags.cpp:307 -msgid "top, left" -msgstr "hore, vľavo" - -#: src/tags.cpp:308 -msgid "top, right" -msgstr "hore, vpravo" - -#: src/tags.cpp:309 -msgid "bottom, right" -msgstr "dolu, vpravo" - -#: src/tags.cpp:310 -msgid "bottom, left" -msgstr "dolu. vľavo" - -#: src/tags.cpp:311 -msgid "left, top" -msgstr "hore, vľavo" - -#: src/tags.cpp:312 -msgid "right, top" -msgstr "vpravo, hore" - -#: src/tags.cpp:313 -msgid "right, bottom" -msgstr "vpravo, dolu" - -#: src/tags.cpp:314 src/tags.cpp:315 -msgid "left, bottom" -msgstr "vľavo, dolu" - -#: src/tags.cpp:320 -msgid "No prediction scheme used" -msgstr "" - -#: src/tags.cpp:321 -msgid "Horizontal differencing" -msgstr "" - -#: src/tags.cpp:327 -#, fuzzy -msgid "not CMYK" -msgstr "CMYK" - -#: src/tags.cpp:332 -msgid "Unsigned integer data" -msgstr "" - -#: src/tags.cpp:333 -msgid "Two's complement signed integer data" -msgstr "" - -#: src/tags.cpp:334 -msgid "IEEE floating point data" -msgstr "" - -#: src/tags.cpp:335 src/tags.cpp:336 -#, fuzzy -msgid "Undefined data format" -msgstr "Nepodporovaný formát dátumu" - -#: src/tags.cpp:341 -#, fuzzy -msgid "Not indexed" -msgstr "nedefinované" - -#: src/tags.cpp:342 src/tags.cpp:648 -msgid "Indexed" -msgstr "" - -#: src/tags.cpp:347 -msgid "A" -msgstr "" - -#: src/tags.cpp:348 -msgid "B" -msgstr "" - -#: src/tags.cpp:349 -msgid "C" -msgstr "" - -# AF = automatické zaostrenie -#: src/tags.cpp:350 -#, fuzzy -msgid "A+B-C" -msgstr "AZ-C" - -#: src/tags.cpp:351 -msgid "A+((B-C)/2)" -msgstr "" - -#: src/tags.cpp:352 -msgid "B+((A-C)/2)" -msgstr "" - -#: src/tags.cpp:353 -msgid "(A+B)/2" -msgstr "" - -#: src/tags.cpp:358 -msgid "Centered" -msgstr "Vystrednený" - -#: src/tags.cpp:359 -msgid "Co-sited" -msgstr "Spolu umiestnený" - -#: src/tags.cpp:364 -msgid "No flash" -msgstr "Bez blesku" - -#: src/tags.cpp:366 -#, fuzzy -msgid "Fired, return light not detected" -msgstr "Spustil sa, vracajúci sa impulz svetla nebol detekovaný." - -#: src/tags.cpp:367 -#, fuzzy -msgid "Fired, return light detected" -msgstr "Spustil sa, vracajúci sa impulz svetla bol detekovaný." - -#: src/tags.cpp:368 -msgid "Yes, did not fire" -msgstr "Ãno, blesk sa nespustil" - -#: src/tags.cpp:369 -#, fuzzy -msgid "Yes, compulsory" -msgstr "Ãno, povinný režim blesku, korekcia Äervených oÄí" - -#: src/tags.cpp:370 -msgid "Yes, compulsory, return light not detected" -msgstr "Ãno, povinný režim blesku, vracajúce sa svetlo nedetekované." - -#: src/tags.cpp:371 -msgid "Yes, compulsory, return light detected" -msgstr "Ãno, povinný režim blesku, vracajúce sa svetlo detekované." - -#: src/tags.cpp:372 -msgid "No, compulsory" -msgstr "" - -#: src/tags.cpp:373 -#, fuzzy -msgid "No, did not fire, return light not detected" -msgstr "Nie, nespustil sa, vracajúci sa impulz svetla nebol detekovaný." - -#: src/tags.cpp:374 -msgid "No, auto" -msgstr "Nie, automaticky" - -#: src/tags.cpp:375 -msgid "Yes, auto" -msgstr "Ãno, automaticky" - -#: src/tags.cpp:376 -msgid "Yes, auto, return light not detected" -msgstr "Ãno, vracajúci sa impulz svetla nebol detekovaný." - -#: src/tags.cpp:377 -msgid "Yes, auto, return light detected" -msgstr "Ãno, automaticky, vracajúci sa impulz svetla bol detekovaný." - -#: src/tags.cpp:378 -msgid "No flash function" -msgstr "Bez funkcie blesku." - -#: src/tags.cpp:379 -msgid "No, no flash function" -msgstr "Nie, bez funkcie blesku." - -#: src/tags.cpp:380 -msgid "Yes, red-eye reduction" -msgstr "Ãno, korekcia Äervených oÄí" - -#: src/tags.cpp:381 -msgid "Yes, red-eye reduction, return light not detected" -msgstr "Ãno, korekcia Äervených oÄí, vracajúce sa svetlo nedetekované." - -#: src/tags.cpp:382 -msgid "Yes, red-eye reduction, return light detected" -msgstr "Ãno, korekcia Äervených oÄí, vracajúce sa svetlo detekované." - -#: src/tags.cpp:383 -msgid "Yes, compulsory, red-eye reduction" -msgstr "Ãno, povinný režim blesku, korekcia Äervených oÄí" - -#: src/tags.cpp:384 -msgid "Yes, compulsory, red-eye reduction, return light not detected" -msgstr "" -"Ãno, povinný režim blesku, korekcia Äervených oÄí, vracajúce sa svetlo " -"nedetekované." - -#: src/tags.cpp:385 -msgid "Yes, compulsory, red-eye reduction, return light detected" -msgstr "" -"Ãno, povinný režim blesku, korekcia Äervených oÄí, vracajúce sa svetlo " -"detekované." - -#: src/tags.cpp:386 -msgid "No, red-eye reduction" -msgstr "Nie, korekcia Äervených oÄí" - -#: src/tags.cpp:387 -msgid "No, auto, red-eye reduction" -msgstr "Nie, automaticky, korekcia Äervených oÄí" - -#: src/tags.cpp:388 -msgid "Yes, auto, red-eye reduction" -msgstr "Ãno, automaticky, korekcia Äervených oÄí" - -#: src/tags.cpp:389 -msgid "Yes, auto, red-eye reduction, return light not detected" -msgstr "" -"Ãno, automaticky, korekcia Äervených oÄí, vracajúce sa svetlo nedetekované." - -#: src/tags.cpp:390 -msgid "Yes, auto, red-eye reduction, return light detected" -msgstr "" -"Ãno, automaticky, korekcia Äervených oÄí, vracajúce sa svetlo detekované." - -#: src/tags.cpp:395 -msgid "Rectangular (or square) layout" -msgstr "" - -#: src/tags.cpp:396 -msgid "Staggered layout A: even columns are offset down by 1/2 row" -msgstr "" - -#: src/tags.cpp:397 -msgid "Staggered layout B: even columns are offset up by 1/2 row" -msgstr "" - -#: src/tags.cpp:398 -msgid "Staggered layout C: even rows are offset right by 1/2 column" -msgstr "" - -#: src/tags.cpp:399 -msgid "Staggered layout D: even rows are offset left by 1/2 column" -msgstr "" - -#: src/tags.cpp:404 -msgid "Processing Software" -msgstr "Softvér použitý na spracovanie" - -#: src/tags.cpp:405 -msgid "The name and version of the software used to post-process the picture." -msgstr "" - -#: src/tags.cpp:408 -msgid "New Subfile Type" -msgstr "Nový typ podsúboru" - -#: src/tags.cpp:409 -msgid "A general indication of the kind of data contained in this subfile." -msgstr "VÅ¡eobecné oznaÄenie údajov obsiahnutých v tomto podsúbore." - -#: src/tags.cpp:411 -#, fuzzy -msgid "Subfile Type" -msgstr "Nový typ podsúboru" - -#: src/tags.cpp:412 -#, fuzzy -msgid "" -"A general indication of the kind of data contained in this subfile. This " -"field is deprecated. The NewSubfileType field should be used instead." -msgstr "VÅ¡eobecné oznaÄenie údajov obsiahnutých v tomto podsúbore." - -#: src/tags.cpp:416 -msgid "" -"The number of columns of image data, equal to the number of pixels per row. " -"In JPEG compressed data a JPEG marker is used instead of this tag." -msgstr "" -"PoÄet stĺpcov obrazových údajov rovný poÄtu pixelov na riadok. V JPEG " -"komprimovaných dátach sa namiesto tejto znaÄky používa JPEG znaÄka." - -#: src/tags.cpp:421 -msgid "" -"The number of rows of image data. In JPEG compressed data a JPEG marker is " -"used instead of this tag." -msgstr "" -"PoÄet riadkov obrazových údajov rovný poÄtu pixelov na stĺpec. V JPEG " -"komprimovaných dátach sa namiesto tejto znaÄky používa JPEG znaÄka." - -# exif-bitspersample -#: src/tags.cpp:424 -msgid "Bits per Sample" -msgstr "bitov na vzorku" - -#: src/tags.cpp:425 -msgid "" -"The number of bits per image component. In this standard each component of " -"the image is 8 bits, so the value for this tag is 8. See also " -". In JPEG compressed data a JPEG marker is used instead of " -"this tag." -msgstr "" -"PoÄet bitov na obrazovú zložku. V tomto Å¡tandarde má každá zložka 8 bitov, " -"takže hodnota tejto znaÄky je 8. Pozri aj . V JPEG " -"komprimovaných dátach sa namiesto tejto znaÄky používa JPEG znaÄka." - -#: src/tags.cpp:431 -msgid "" -"The compression scheme used for the image data. When a primary image is JPEG " -"compressed, this designation is not necessary and is omitted. When " -"thumbnails use JPEG compression, this tag value is set to 6." -msgstr "" -"Kompresná schéma použitá na obrazové dáta. KeÄ je primárny obrázok " -"komprimovaný ako JPEG, tento údaj nie je potrebný a vynecháva sa. Ak náhľady " -"používajú JPEG kompresiu, hodnota tejto znaÄky je 6." - -#: src/tags.cpp:437 -msgid "" -"The pixel composition. In JPEG compressed data a JPEG marker is used instead " -"of this tag." -msgstr "" -"Kompozícia pixelov. V JPEG komprimovaných dátach sa namiesto tejto znaÄky " -"používa JPEG znaÄka." - -#: src/tags.cpp:440 -msgid "Threshholding" -msgstr "" - -#: src/tags.cpp:441 -msgid "" -"For black and white TIFF files that represent shades of gray, the technique " -"used to convert from gray to black and white pixels." -msgstr "" - -#: src/tags.cpp:444 -#, fuzzy -msgid "Cell Width" -msgstr "OrezaÅ¥ šírku" - -#: src/tags.cpp:445 -msgid "" -"The width of the dithering or halftoning matrix used to create a dithered or " -"halftoned bilevel file." -msgstr "" - -#: src/tags.cpp:448 -#, fuzzy -msgid "Cell Length" -msgstr "Dĺžka dlaždice" - -#: src/tags.cpp:449 -msgid "" -"The length of the dithering or halftoning matrix used to create a dithered " -"or halftoned bilevel file." -msgstr "" - -#: src/tags.cpp:452 -msgid "Fill Order" -msgstr "poradie vypĺňania" - -#: src/tags.cpp:453 -msgid "The logical order of bits within a byte" -msgstr "" - -#: src/tags.cpp:455 -msgid "Document Name" -msgstr "Názov dokumentu" - -#: src/tags.cpp:456 -#, fuzzy -msgid "The name of the document from which this image was scanned" -msgstr "Dátum, kedy bol titul vydaný" - -#: src/tags.cpp:459 -msgid "" -"A character string giving the title of the image. It may be a comment such " -"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " -"used. When a 2-bytes code is necessary, the Exif Private tag " -"is to be used." -msgstr "" -"Znakový reÅ¥azec udávajúci nadpis obrázka. Môže to byÅ¥ komentár ako \"rodinný " -"piknik 1988\" alebo podobne. Dvojbajtové znakové sady nie je možné použiÅ¥. " -"KeÄ je potrebná dvojbajtová znaková sada, použite Privátnu znaÄku Exif " -"." - -#: src/tags.cpp:466 -msgid "" -"The manufacturer of the recording equipment. This is the manufacturer of the " -"DSC, scanner, video digitizer or other equipment that generated the image. " -"When the field is left blank, it is treated as unknown." -msgstr "" -"Výrobca záznamového zariadenia. Toto je výrobca digitálneho fotoaparátu, " -"skenera, videodigitalizátora alebo iného zariadenia, ktoré vytvorilo " -"obrázok. KeÄ je pole prázdne, výrobca je neznámy." - -#: src/tags.cpp:472 -msgid "" -"The model name or model number of the equipment. This is the model name or " -"number of the DSC, scanner, video digitizer or other equipment that " -"generated the image. When the field is left blank, it is treated as unknown." -msgstr "" -"Názov alebo Äíslo modelu zariadenia. Toto je model digitálneho fotoaparátu, " -"skenera, videodigitalizátora alebo iného zariadenia, ktoré vytvorilo " -"obrázok. KeÄ je pole prázdne, model je neznámy." - -#: src/tags.cpp:478 -msgid "" -"For each strip, the byte offset of that strip. It is recommended that this " -"be selected so the number of strip bytes does not exceed 64 Kbytes. With " -"JPEG compressed data this designation is not needed and is omitted. See also " -" and ." -msgstr "" -"Pre každý prúžok, ofset prúžka v bajtoch. OdporúÄa sa ho zvoliÅ¥ tak, aby " -"poÄet bajtov prúžka neprekroÄil 60 kilobajtov. Pri JPEG komprimovaných " -"dátach tento údaj nie je potrebný a vynechá sa. Pozri aj a " -"." - -#: src/tags.cpp:485 -msgid "The image orientation viewed in terms of rows and columns." -msgstr "Orientácia obrázka vzhľadom na riadky a stĺpce." - -# exif-samplesperpixel -#: src/tags.cpp:487 -msgid "Samples per Pixel" -msgstr "vzoriek na pixel" - -#: src/tags.cpp:488 -msgid "" -"The number of components per pixel. Since this standard applies to RGB and " -"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " -"JPEG marker is used instead of this tag." -msgstr "" -"PoÄet zložiek na pixel. KeÄže tento Å¡tandard sa vzÅ¥ahuje na RGB a YCbCr " -"obrázky, hodnota tejto znaÄky je 3. V JPEG komprimovaných dátach sa namiesto " -"tejto znaÄky používa JPEG znaÄka." - -# exif-rowsperstrip -#: src/tags.cpp:492 -msgid "Rows per Strip" -msgstr "riadkov na prúžok" - -#: src/tags.cpp:493 -msgid "" -"The number of rows per strip. This is the number of rows in the image of one " -"strip when an image is divided into strips. With JPEG compressed data this " -"designation is not needed and is omitted. See also and " -"." -msgstr "" -"PoÄet riadkov na prúžok. Toto je poÄet obrazových riadkov v jednom prúžku, " -"keÄ sa obrázok delí na prúžky. Pri JPEG komprimovaných dátach tento údaj nie " -"je potrebný a vynechá sa. Pozri aj a ." - -# exif-stripbytecounts -#: src/tags.cpp:498 -msgid "Strip Byte Count" -msgstr "bajtov na komprimovaný prúžok" - -#: src/tags.cpp:499 -msgid "" -"The total number of bytes in each strip. With JPEG compressed data this " -"designation is not needed and is omitted." -msgstr "" -"Celkový poÄet bajtov na každý komprimovaný prúžok. Pre JPEG komprimované " -"dáta tento údaj nie je potrebný a vynechá sa." - -# exif-xresolution -#: src/tags.cpp:502 -msgid "X-Resolution" -msgstr "vodorovné rozlíšenie" - -#: src/tags.cpp:503 -msgid "" -"The number of pixels per in the direction. " -"When the image resolution is unknown, 72 [dpi] is designated." -msgstr "" -"PoÄet pixelov na v smere . KeÄ je rozlíšenie " -"obrázka neznáme, použije sa 72 [dpi]." - -# exif-xresolution -#: src/tags.cpp:506 -msgid "Y-Resolution" -msgstr "zvislé rozlíšenie" - -#: src/tags.cpp:507 -msgid "" -"The number of pixels per in the direction. " -"The same value as is designated." -msgstr "" -"PoÄet pixelov na v smere . Použije sa rovnaká " -"hodnota ako ." - -#: src/tags.cpp:511 -msgid "" -"Indicates whether pixel components are recorded in a chunky or planar " -"format. In JPEG compressed files a JPEG marker is used instead of this tag. " -"If this field does not exist, the TIFF default of 1 (chunky) is assumed." -msgstr "" -"OznaÄuje, Äi sa obrazové zložky zaznamenávajú v kúskovom alebo rovinnom " -"formáte. V JPEG komprimovaných dátach sa namiesto tejto znaÄky používa JPEG " -"znaÄka. Ak toto pole neexistuje, Å¡tandardná hodnota pre TIFF sa predpokladá " -"1 (kúskový)." - -# AF = automatické zaostrenie -#: src/tags.cpp:516 -#, fuzzy -msgid "Gray Response Unit" -msgstr "bod automatického zaostrenia" - -#: src/tags.cpp:517 -msgid "The precision of the information contained in the GrayResponseCurve." -msgstr "" - -#: src/tags.cpp:519 -#, fuzzy -msgid "Gray Response Curve" -msgstr "Krivka tónu" - -#: src/tags.cpp:520 -msgid "For grayscale data, the optical density of each possible pixel value." -msgstr "" - -#: src/tags.cpp:522 -#, fuzzy -msgid "T4 Options" -msgstr "Voľba" - -#: src/tags.cpp:523 -msgid "T.4-encoding options." -msgstr "" - -#: src/tags.cpp:525 -#, fuzzy -msgid "T6 Options" -msgstr "Voľba" - -#: src/tags.cpp:526 -msgid "T.6-encoding options." -msgstr "" - -#: src/tags.cpp:529 -msgid "" -"The unit for measuring and . The same unit is " -"used for both and . If the image resolution is " -"unknown, 2 (inches) is designated." -msgstr "" -"Jednotka pre meranie and . Rovnaká jednotka sa " -"používa pre aj . Ak je rozlíšenie obrázka " -"neznáme, použije sa 2 (palce)." - -#: src/tags.cpp:534 -msgid "" -"A transfer function for the image, described in tabular style. Normally this " -"tag is not necessary, since color space is specified in the color space " -"information tag ()." -msgstr "" -"Prenosová funkcia obrázka, popísaná tabuľkou. Bežne táto znaÄka nie je " -"potrebná, keÄže farebný priestor je uvedený v informaÄnej znaÄke farebného " -"priestoru ()." - -#: src/tags.cpp:539 -msgid "" -"This tag records the name and version of the software or firmware of the " -"camera or image input device used to generate the image. The detailed format " -"is not specified, but it is recommended that the example shown below be " -"followed. When the field is left blank, it is treated as unknown." -msgstr "" -"Táto znaÄka zaznamenáva názov a verziu softvéru alebo firmvéru fotoaparátu " -"alebo zariadenia, ktoré bolo použité pri tvorbe obrázka. Podrobný formát nie " -"je Å¡pecifikovaný, ale odporúÄa sa dodržiavaÅ¥ formát ako v dolu uvedenom " -"príklade. KeÄ je pole prázdne, verzia je neznáma." - -#: src/tags.cpp:546 -msgid "" -"The date and time of image creation. In Exif standard, it is the date and " -"time the file was changed." -msgstr "" -"Dátum a Äas vytvorenia obrázka. V tomto Å¡tandarde (EXIF-2.1) je to dátum a " -"Äas zmeny súboru." - -#: src/tags.cpp:550 -msgid "" -"This tag records the name of the camera owner, photographer or image " -"creator. The detailed format is not specified, but it is recommended that " -"the information be written as in the example below for ease of " -"Interoperability. When the field is left blank, it is treated as unknown. " -"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " -"Ken James\"" -msgstr "" -"Táto znaÄka zaznamenáva vlastníka fotoaparátu, fotografa alebo tvorcu " -"obrázka. Presný formát nie je Å¡pecifikovaný, ale odporúÄa sa, aby kvôli " -"interoperabilite bola informácia zapísaná ako v dolu uvedenom príklade. KeÄ " -"je pole prázdne, umelec je neznámy. Príklad: \"Camera owner, John Smith; " -"Photographer, Michael Brown; Image creator, Ken James\"" - -#: src/tags.cpp:557 -msgid "Host Computer" -msgstr "" - -#: src/tags.cpp:558 -msgid "" -"This tag records information about the host computer used to generate the " -"image." -msgstr "" - -#: src/tags.cpp:561 -#, fuzzy -msgid "Predictor" -msgstr "Pôvodca" - -#: src/tags.cpp:562 -msgid "" -"A predictor is a mathematical operator that is applied to the image data " -"before an encoding scheme is applied." -msgstr "" - -#: src/tags.cpp:566 -msgid "" -"The chromaticity of the white point of the image. Normally this tag is not " -"necessary, since color space is specified in the colorspace information tag " -"()." -msgstr "" -"Chromaticita bieleho bodu obrázka. Bežne nie je táto znaÄka potrebná, keÄže " -"farebný priestor je uvedený v informaÄnej znaÄke farebného priestoru " -"()." - -#: src/tags.cpp:571 -msgid "" -"The chromaticity of the three primary colors of the image. Normally this tag " -"is not necessary, since colorspace is specified in the colorspace " -"information tag ()." -msgstr "" -"Chromaticity troch primárnych farieb obrázka. Bežne nie je táto znaÄka " -"potrebná, keÄže farebný priestor je uvedený v informaÄnej znaÄke farebného " -"priestoru ()." - -#: src/tags.cpp:575 -#, fuzzy -msgid "Color Map" -msgstr "Matica farieb" - -#: src/tags.cpp:576 -msgid "" -"A color map for palette color images. This field defines a Red-Green-Blue " -"color map (often called a lookup table) for palette-color images. In a " -"palette-color image, a pixel value is used to index into an RGB lookup table." -msgstr "" - -#: src/tags.cpp:581 -msgid "Halftone Hints" -msgstr "" - -#: src/tags.cpp:582 -msgid "" -"The purpose of the HalftoneHints field is to convey to the halftone function " -"the range of gray levels within a colorimetrically-specified image that " -"should retain tonal detail." -msgstr "" - -#: src/tags.cpp:586 -msgid "Tile Width" -msgstr "Šírka dlaždice" - -#: src/tags.cpp:587 -msgid "The tile width in pixels. This is the number of columns in each tile." -msgstr "" - -#: src/tags.cpp:589 -msgid "Tile Length" -msgstr "Dĺžka dlaždice" - -#: src/tags.cpp:590 -msgid "" -"The tile length (height) in pixels. This is the number of rows in each tile." -msgstr "" - -# exif-stripoffsets -#: src/tags.cpp:592 -msgid "Tile Offsets" -msgstr "Ofsety dlaždíc" - -#: src/tags.cpp:593 -msgid "" -"For each tile, the byte offset of that tile, as compressed and stored on " -"disk. The offset is specified with respect to the beginning of the TIFF " -"file. Note that this implies that each tile has a location independent of " -"the locations of other tiles." -msgstr "" - -# exif-stripbytecounts -#: src/tags.cpp:598 -msgid "Tile Byte Counts" -msgstr "PoÄet bajtov dlaždice" - -#: src/tags.cpp:599 -msgid "" -"For each tile, the number of (compressed) bytes in that tile. See " -"TileOffsets for a description of how the byte counts are ordered." -msgstr "" - -#: src/tags.cpp:602 -msgid "SubIFD Offsets" -msgstr "Umiestnenie SubIFD" - -#: src/tags.cpp:603 -msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." -msgstr "Definovala Adobe Corporation aby umožnila TIFF stromy v TIFF súboroch." - -#: src/tags.cpp:605 -#, fuzzy -msgid "Ink Set" -msgstr "NastaviÅ¥" - -#: src/tags.cpp:606 -msgid "" -"The set of inks used in a separated (PhotometricInterpretation=5) image." -msgstr "" - -#: src/tags.cpp:608 -#, fuzzy -msgid "Ink Names" -msgstr "Meno vlastníka" - -#: src/tags.cpp:609 -msgid "" -"The name of each ink used in a separated (PhotometricInterpretation=5) image." -msgstr "" - -#: src/tags.cpp:611 -#, fuzzy -msgid "Number Of Inks" -msgstr "PoÄet stránok" - -#: src/tags.cpp:612 -msgid "" -"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " -"samples." -msgstr "" - -#: src/tags.cpp:614 -#, fuzzy -msgid "Dot Range" -msgstr "Dynamický rozsah" - -#: src/tags.cpp:615 -#, c-format -msgid "The component values that correspond to a 0% dot and 100% dot." -msgstr "" - -#: src/tags.cpp:617 -#, fuzzy -msgid "Target Printer" -msgstr "Cieľová clona" - -#: src/tags.cpp:618 -msgid "" -"A description of the printing environment for which this separation is " -"intended." -msgstr "" - -#: src/tags.cpp:620 -#, fuzzy -msgid "Extra Samples" -msgstr "bitov na vzorku" - -#: src/tags.cpp:621 -msgid "" -"Specifies that each pixel has m extra components whose interpretation is " -"defined by one of the values listed below." -msgstr "" - -#: src/tags.cpp:624 -#, fuzzy -msgid "Sample Format" -msgstr "Formát súboru" - -#: src/tags.cpp:625 -msgid "This field specifies how to interpret each data sample in a pixel." -msgstr "" - -#: src/tags.cpp:627 -#, fuzzy -msgid "SMin Sample Value" -msgstr "OstrosÅ¥" - -#: src/tags.cpp:628 -msgid "This field specifies the minimum sample value." -msgstr "" - -#: src/tags.cpp:630 -#, fuzzy -msgid "SMax Sample Value" -msgstr "Max. hodnota clony" - -#: src/tags.cpp:631 -msgid "This field specifies the maximum sample value." -msgstr "" - -#: src/tags.cpp:633 -msgid "Transfer Range" -msgstr "prenosový rozsah" - -#: src/tags.cpp:634 -msgid "Expands the range of the TransferFunction" -msgstr "" - -#: src/tags.cpp:636 -msgid "Clip Path" -msgstr "" - -#: src/tags.cpp:637 -msgid "" -"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " -"creation functionality." -msgstr "" - -#: src/tags.cpp:640 -msgid "X Clip Path Units" -msgstr "" - -#: src/tags.cpp:641 -msgid "" -"The number of units that span the width of the image, in terms of integer " -"ClipPath coordinates." -msgstr "" - -#: src/tags.cpp:644 -msgid "Y Clip Path Units" -msgstr "" - -#: src/tags.cpp:645 -msgid "" -"The number of units that span the height of the image, in terms of integer " -"ClipPath coordinates." -msgstr "" - -#: src/tags.cpp:649 -msgid "" -"Indexed images are images where the 'pixels' do not represent color values, " -"but rather an index (usually 8-bit) into a separate color table, the " -"ColorMap." -msgstr "" - -#: src/tags.cpp:653 -#, fuzzy -msgid "JPEG tables" -msgstr "JPEG proces" - -#: src/tags.cpp:654 -msgid "" -"This optional tag may be used to encode the JPEG quantization andHuffman " -"tables for subsequent use by the JPEG decompression process." -msgstr "" - -#: src/tags.cpp:657 -msgid "OPI Proxy" -msgstr "" - -#: src/tags.cpp:658 -msgid "" -"OPIProxy gives information concerning whether this image is a low-resolution " -"proxy of a high-resolution image (Adobe OPI)." -msgstr "" - -#: src/tags.cpp:661 -msgid "JPEG Process" -msgstr "JPEG proces" - -#: src/tags.cpp:662 -msgid "This field indicates the process used to produce the compressed data" -msgstr "" - -# exif-jpeginterchangeformat -#: src/tags.cpp:664 -msgid "JPEG Interchange Format" -msgstr "formát JPEG" - -#: src/tags.cpp:665 -msgid "" -"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " -"is not used for primary image JPEG data." -msgstr "" -"Ofset k zaÄiatoÄnému bajtu (SOI) komprimovaných JPEG dát náhľadu. Nepoužíva " -"sa pre JPEG dáta primárneho obrázka." - -# exif-jpeginterchangeformatlength -#: src/tags.cpp:668 -msgid "JPEG Interchange Format Length" -msgstr "dĺžka JPEG dát" - -#: src/tags.cpp:669 -msgid "" -"The number of bytes of JPEG compressed thumbnail data. This is not used for " -"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " -"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " -"be recorded. Compressed thumbnails must be recorded in no more than 64 " -"Kbytes, including all other data to be recorded in APP1." -msgstr "" -"PoÄet bajtov komprimovaných JPEG dát náhľadu. Nepoužíva sa pre JPEG dáta " -"primárneho obrázka. JPEG náhľady sa nerozdeľujú ale zaznamenávajú sa ako " -"súvislý bitový tok JPEG od SOI po EOI. ZnaÄky Appn a COM sa nezaznamenávajú. " -"Komprimované náhľady nesmú byÅ¥ zaznamenané vo viac ako 64 kilobajtoch " -"vrátane vÅ¡etkých ostatných dát zaznamenaných v APP1." - -#: src/tags.cpp:676 -msgid "JPEG Restart Interval" -msgstr "" - -#: src/tags.cpp:677 -#, fuzzy -msgid "" -"This Field indicates the length of the restart interval used in the " -"compressed image data." -msgstr "" -"Táto znaÄka oznaÄuje smer spracovania ostrosti, ktorý použil fotoaparát pri " -"zachytení obrázka." - -#: src/tags.cpp:680 -msgid "JPEG Lossless Predictors" -msgstr "" - -#: src/tags.cpp:681 -msgid "" -"This Field points to a list of lossless predictor-selection values, one per " -"component." -msgstr "" - -#: src/tags.cpp:684 -msgid "JPEG Point Transforms" -msgstr "" - -#: src/tags.cpp:685 -msgid "" -"This Field points to a list of point transform values, one per component." -msgstr "" - -#: src/tags.cpp:687 -#, fuzzy -msgid "JPEG Q-Tables" -msgstr "JPEG proces" - -#: src/tags.cpp:688 -msgid "" -"This Field points to a list of offsets to the quantization tables, one per " -"component." -msgstr "" - -#: src/tags.cpp:691 -#, fuzzy -msgid "JPEG DC-Tables" -msgstr "JPEG proces" - -#: src/tags.cpp:692 -msgid "" -"This Field points to a list of offsets to the DC Huffman tables or the " -"lossless Huffman tables, one per component." -msgstr "" - -#: src/tags.cpp:695 -#, fuzzy -msgid "JPEG AC-Tables" -msgstr "JPEG proces" - -#: src/tags.cpp:696 -msgid "" -"This Field points to a list of offsets to the Huffman AC tables, one per " -"component." -msgstr "" - -#: src/tags.cpp:700 -msgid "" -"The matrix coefficients for transformation from RGB to YCbCr image data. No " -"default is given in TIFF; but here the value given in Appendix E, \"Color " -"Space Guidelines\", is used as the default. The color space is declared in a " -"color space information tag, with the default being the value that gives the " -"optimal image characteristics Interoperability this condition." -msgstr "" -"Matica koeficientov transformácie obrazových dát z RGB na YCbCr. V TIFF nie " -"je definovaná Å¡tandardná hodnota; ale tu sa používa hodnota uvedená v " -"Prílohe E, \"Pokyny ohľadne farebného priestoru\". Farebný priestor je " -"deklarovaný informaÄnou znaÄkou farebného priestoru, priÄom Å¡tandardnou " -"hodnotou je tá, ktorá dáva optimálnu charakteristiku interoperability tohto " -"stavu." - -# exif-ycbcrsubsampling -#: src/tags.cpp:708 -msgid "YCbCr Sub-Sampling" -msgstr "podvzorkovanie YCbCr" - -#: src/tags.cpp:709 -msgid "" -"The sampling ratio of chrominance components in relation to the luminance " -"component. In JPEG compressed data a JPEG marker is used instead of this tag." -msgstr "" -"Vzorkovací pomer zložiek chrominancie v pomere k svietivosti. V dátach " -"komprimovaných JPEG sa namiesto tejto znaÄky používa znaÄka JPEG." - -#: src/tags.cpp:714 -msgid "" -"The position of chrominance components in relation to the luminance " -"component. This field is designated only for JPEG compressed data or " -"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " -"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " -"record data, in order to improve the image quality when viewed on TV " -"systems. When this field does not exist, the reader shall assume the TIFF " -"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " -"recommended. If the reader does not have the capability of supporting both " -"kinds of , it shall follow the TIFF default regardless of " -"the value in this field. It is preferable that readers be able to support " -"both centered and co-sited positioning." -msgstr "" -"Poloha zložiek chrominancie vzhľadom ku zložke svietivosti. Toto pole je " -"urÄené iba pre komprimované dáta JPEG alebo nekomprimované dáta YCbCr. " -"Å tandard TIFF je 1 (centrované), ale keÄ Y:Cb:Cr = 4:2:2 odporúÄa sa v tomto " -"Å¡tandarde použiÅ¥ pre záznam dát 2 (na rovnakom mieste), aby sa zlepÅ¡ila " -"kvalita obrazu pri zobrazovaní na televíznych systémoch. KeÄ toto pole " -"neexistuje, Äítacie zariadenie bude predpokladaÅ¥ Å¡tandard TIFF. V prípade, " -"že Y:Cb:Cr = 4:2:0 sa odporúÄa Å¡tandard TIFF (centrované). Ak Äítacie " -"zariadenie nedokáže naraz podporovaÅ¥ oba druhy , bude sa " -"držaÅ¥ Å¡tandardu TIFF nezávisle od hodnoty v tomto poli. Uprednostňuje sa, " -"aby Äítacie zariadenia podporovali obe polohy - centrované aj na rovnakom " -"mieste." - -# exif-referenceblackwhite -#: src/tags.cpp:728 -msgid "Reference Black/White" -msgstr "referenÄná Äierna/biela" - -#: src/tags.cpp:729 -msgid "" -"The reference black point value and reference white point value. No defaults " -"are given in TIFF, but the values below are given as defaults here. The " -"color space is declared in a color space information tag, with the default " -"being the value that gives the optimal image characteristics " -"Interoperability these conditions." -msgstr "" -"ReferenÄná hodnota Äierneho bodu a referenÄná hodnota bieleho bodu. TIFF " -"neudáva Å¡tandardné hodnoty, ale nižšie uvedené hodnoty sú tu dané ako " -"Å¡tandardy. Farebný priestor sa deklaruje v informaÄnej znaÄke farebného " -"priestoru, priÄom Å¡tandardnou hodnotou je tá, ktorá dáva optimálnu " -"charakteristiku interoperability tohto stavu." - -#: src/tags.cpp:736 -msgid "XML Packet" -msgstr "XML paket" - -#: src/tags.cpp:737 -msgid "XMP Metadata (Adobe technote 9-14-02)" -msgstr "" - -#: src/tags.cpp:739 -msgid "Windows Rating" -msgstr "Windows hodnotenie" - -#: src/tags.cpp:740 -msgid "Rating tag used by Windows" -msgstr "" - -#: src/tags.cpp:742 -#, fuzzy -msgid "Windows Rating Percent" -msgstr "Percentá hodnotenia" - -#: src/tags.cpp:743 -msgid "Rating tag used by Windows, value in percent" -msgstr "" - -#: src/tags.cpp:745 -#, fuzzy -msgid "Image ID" -msgstr "JedineÄný ID obrázka" - -#: src/tags.cpp:746 -msgid "" -"ImageID is the full pathname of the original, high-resolution image, or any " -"other identifying string that uniquely identifies the original image (Adobe " -"OPI)." -msgstr "" - -#: src/tags.cpp:750 -msgid "CFA Repeat Pattern Dimension" -msgstr "" - -#: src/tags.cpp:751 -msgid "" -"Contains two values representing the minimum rows and columns to define the " -"repeating patterns of the color filter array" -msgstr "" - -#: src/tags.cpp:755 -msgid "" -"Indicates the color filter array (CFA) geometric pattern of the image sensor " -"when a one-chip color area sensor is used. It does not apply to all sensing " -"methods" -msgstr "" -"OznaÄuje geometrickú vzorku poľa farebného filtra (CFA) obrazového snímaÄa " -"pri použítí jednoÄipového farebného snímaÄa oblasti. NevzÅ¥ahuje sa na vÅ¡etky " -"metódy snímania." - -#: src/tags.cpp:763 -msgid "" -"Copyright information. In this standard the tag is used to indicate both the " -"photographer and editor copyrights. It is the copyright notice of the person " -"or organization claiming rights to the image. The Interoperability copyright " -"statement including date and rights should be written in this field; e.g., " -"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " -"field records both the photographer and editor copyrights, with each " -"recorded in a separate part of the statement. When there is a clear " -"distinction between the photographer and editor copyrights, these are to be " -"written in the order of photographer followed by editor copyright, separated " -"by NULL (in this case since the statement also ends with a NULL, there are " -"two NULL codes). When only the photographer copyright is given, it is " -"terminated by one NULL code . When only the editor copyright is given, the " -"photographer copyright part consists of one space followed by a terminating " -"NULL code, then the editor copyright is given. When the field is left blank, " -"it is treated as unknown." -msgstr "" -"Informácia o autorských právach. V tomto Å¡tandarde znaÄka oznaÄuje aj práva " -"fotografa aj redaktora. Je to informácia o autorských právach osoby Äi " -"organizácie, ktorá si nárokuje práva na obrázok. Do tohto poľa patrí " -"vyhlásenie autorských práv vrátane dátumu; napr. \"Copyright, John Smith, " -"20xx. VÅ¡etky práva vyhradené.\". V tomto Å¡tandarde pole obsahuje ako " -"autorské práva fotografa, tak aj redaktora, priÄom každé je samostatnou " -"ÄasÅ¥ou záznamu. KeÄ existuje jasný rozdiel medzi autorskými právami " -"fotografa a redaktora, majú byÅ¥ zapísané v poradí najskôr fotograf, potom " -"redaktor, oddelené znakom NULL (v takom prípade, keÄže znaÄka tiež konÄí " -"znakom NULL, obsahuje dva znaky NULL) (pozri príklad 1). KeÄ sa udáva iba " -"fotograf, je ukonÄené iba jedným znakom NULL (pozri príklad 2). KeÄ je pole " -"nevyplnené, zaobchádza sa s ním ako s neznámym." - -#: src/tags.cpp:782 -#, fuzzy -msgid "Exposure time, given in seconds." -msgstr "ÄŒas expozície v sekundách (sek)." - -# exif-fnumber -#: src/tags.cpp:783 src/tags.cpp:1546 -msgid "The F number." -msgstr "Äíslo F." - -#: src/tags.cpp:784 -msgid "IPTC/NAA" -msgstr "IPTC/NAA" - -#: src/tags.cpp:785 -msgid "Contains an IPTC/NAA record" -msgstr "Obsahuje IPTC/NAA nahrávku" - -#: src/tags.cpp:787 -msgid "Image Resources Block" -msgstr "blok obrazových prostriedkov" - -#: src/tags.cpp:788 -msgid "Contains information embedded by the Adobe Photoshop application" -msgstr "" - -#: src/tags.cpp:791 -msgid "" -"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " -"as that of the IFD specified in TIFF. ordinarily, however, it does not " -"contain image data as in the case of TIFF." -msgstr "" -"Ukazovateľ na Exif IFD. Interoperabilita, Exif IFD má rovnakú Å¡truktúru ako " -"Å¡truktúra IFD podľa Å¡pecifikácie v TIFF. Bežne vÅ¡ak neobsahuje obrazové dáta " -"ako v prípade Å¡truktúry v TIFF." - -#: src/tags.cpp:796 -msgid "Inter Color Profile" -msgstr "Farebný profil Inter" - -#: src/tags.cpp:797 -msgid "" -"Contains an InterColor Consortium (ICC) format color space characterization/" -"profile" -msgstr "" - -#: src/tags.cpp:799 src/tags.cpp:1549 -msgid "" -"The class of the program used by the camera to set exposure when the picture " -"is taken." -msgstr "" -"Trieda programu, ktorý fotoaparát používa na nastavenie expozície pri fotení " -"obrázka." - -#: src/tags.cpp:800 -#, fuzzy -msgid "Indicates the spectral sensitivity of each channel of the camera used." -msgstr "EXIF znaÄka 34852, 0x8824. Spektrálna citlivosÅ¥ každého kanála" - -#: src/tags.cpp:802 -msgid "" -"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " -"Info IFD, like that of Exif IFD, has no image data." -msgstr "" -"Ukazovateľ na GPS Info IFD. Å truktúra interoperability GPS Info IFD, rovnako " -"ako pri Exif IFD, neobsahuje obrazové dáta." - -# exif-isospeedratings -#: src/tags.cpp:806 src/tags.cpp:1557 -msgid "ISO Speed Ratings" -msgstr "rýchlostné ohodnotenie ISO" - -#: src/tags.cpp:806 src/tags.cpp:1558 -msgid "" -"Indicates the ISO Speed and ISO Latitude of the camera or input device as " -"specified in ISO 12232." -msgstr "" -"OznaÄuje ISO rýchlosÅ¥ a ISO zemepisnú šírku fotoaparátu alebo vstupného " -"zariadenia podľa Å¡pecifikácie ISO 12232." - -#: src/tags.cpp:807 -#, fuzzy -msgid "" -"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " -"14524." -msgstr "" -"EXIF znaÄka 34856, 0x8828. Opto-elektronická konverzná funkcie podľa " -"Å¡pecifikácie ISO 14524" - -#: src/tags.cpp:808 -#, fuzzy -msgid "Interlace" -msgstr "Prekladaný" - -#: src/tags.cpp:808 -#, fuzzy -msgid "Indicates the field number of multifield images." -msgstr "Rozloženie obrázka." - -# exif-stripoffsets -#: src/tags.cpp:809 -#, fuzzy -msgid "Time Zone Offset" -msgstr "Ofsety dlaždíc" - -#: src/tags.cpp:810 -msgid "" -"This optional tag encodes the time zone of the camera clock (relativeto " -"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " -"picture was taken. It may also contain the time zone offsetof the clock used " -"to create the DateTime tag-value when the image wasmodified." -msgstr "" - -#: src/tags.cpp:816 -#, fuzzy -msgid "Self Timer Mode" -msgstr "Samospúšť" - -#: src/tags.cpp:816 -msgid "Number of seconds image capture was delayed from button press." -msgstr "" - -#: src/tags.cpp:817 -#, fuzzy -msgid "Date Time Original" -msgstr "Dátum a Äas zhotovenia" - -#: src/tags.cpp:817 -#, fuzzy -msgid "The date and time when the original image data was generated." -msgstr "Dátum a Äas, kedy boli metadáta naposledy zmenené." - -#: src/tags.cpp:818 -#, fuzzy -msgid "Specific to compressed data; states the compressed bits per pixel." -msgstr "" -"Informácia Å¡pecifická komprimovaným dátam. Režim kompresie použitý na " -"komprimovaný obrázok sa oznaÄuje v jednotkách bity na pixel." - -# exif-shutterspeedvalue -#: src/tags.cpp:819 -#, fuzzy -msgid "Shutter speed." -msgstr "rýchlosÅ¥ uzávierky" - -#: src/tags.cpp:820 -#, fuzzy -msgid "The lens aperture." -msgstr "Max. clona" - -#: src/tags.cpp:821 -#, fuzzy -msgid "The value of brightness." -msgstr "PoÄet úderov." - -#: src/tags.cpp:822 -#, fuzzy -msgid "The exposure bias." -msgstr "Skreslenie expozície" - -#: src/tags.cpp:823 src/tags.cpp:1638 -msgid "Max Aperture Value" -msgstr "Max. hodnota clony" - -#: src/tags.cpp:823 -#, fuzzy -msgid "The smallest F number of the lens." -msgstr "Názov scény" - -#: src/tags.cpp:824 src/tags.cpp:1644 -msgid "The distance to the subject, given in meters." -msgstr "VzdialenosÅ¥ subjektu v metroch." - -#: src/tags.cpp:825 src/tags.cpp:1647 -msgid "The metering mode." -msgstr "Režim merania." - -#: src/tags.cpp:826 src/tags.cpp:1650 -msgid "The kind of light source." -msgstr "Druh svetelného zdroja." - -#: src/tags.cpp:827 -#, fuzzy -msgid "Indicates the status of flash when the image was shot." -msgstr "" -"Táto znaÄka oznaÄuje aký režim vyváženia bielej bol zvolený pri odfotení " -"obrázka." - -#: src/tags.cpp:828 -#, fuzzy -msgid "The actual focal length of the lens, in mm." -msgstr "" -"EXIF znaÄka 37386, 0x920A. Ohnisková vzdialenosÅ¥ Å¡oÅ¡oviek v milimetroch" - -#: src/tags.cpp:829 -msgid "Amount of flash energy (BCPS)." -msgstr "" - -#: src/tags.cpp:830 -msgid "SFR of the camera." -msgstr "" - -#: src/tags.cpp:831 -#, fuzzy -msgid "Noise" -msgstr "NiÄ" - -#: src/tags.cpp:831 -msgid "Noise measurement values." -msgstr "" - -#: src/tags.cpp:832 -#, fuzzy -msgid "" -"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " -"direction for main image." -msgstr "" -"PoÄet pixelov na v smere . Použije sa rovnaká " -"hodnota ako ." - -#: src/tags.cpp:833 -#, fuzzy -msgid "" -"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " -"direction for main image." -msgstr "" -"PoÄet pixelov na v smere . Použije sa rovnaká " -"hodnota ako ." - -#: src/tags.cpp:834 -#, fuzzy -msgid "" -"Unit of measurement for FocalPlaneXResolution(37390) and " -"FocalPlaneYResolution(37391)." -msgstr "" -"EXIF znaÄka 41488, 0xA210. Jednotka pre FocalPlaneXResolution a " -"FocalPlaneYResolution" - -#: src/tags.cpp:835 -msgid "Number assigned to an image, e.g., in a chained image burst." -msgstr "" - -#: src/tags.cpp:836 -#, fuzzy -msgid "Security Classification" -msgstr "Elektromagnetické zväÄÅ¡enie" - -#: src/tags.cpp:836 -#, fuzzy -msgid "Security classification assigned to the image." -msgstr "Elektromagnetické zväÄÅ¡enie" - -#: src/tags.cpp:837 -msgid "Record of what has been done to the image." -msgstr "" - -#: src/tags.cpp:838 -#, fuzzy -msgid "" -"Indicates the location and area of the main subject in the overall scene." -msgstr "" -"Táto znaÄka oznaÄuje polohu a plochu hlavného subjektu v celkovej scéne." - -#: src/tags.cpp:839 -#, fuzzy -msgid "Encodes the camera exposure index setting when image was captured." -msgstr "" -"Táto znaÄka oznaÄuje expoziÄný index zvolený na fotoaparáte alebo vstupnom " -"zariadení v Äase zachytenia obrázka." - -#: src/tags.cpp:840 -msgid "TIFF/EP Standard ID" -msgstr "ID Å¡tandardu TIFF/EP" - -#: src/tags.cpp:841 -msgid "" -"Contains four ASCII characters representing the TIFF/EP standard version of " -"a TIFF/EP file, eg '1', '0', '0', '0'" -msgstr "" - -#: src/tags.cpp:844 -#, fuzzy -msgid "Type of image sensor." -msgstr "PoÄet obrázkov" - -#: src/tags.cpp:845 -msgid "Windows Title" -msgstr "Názov okna" - -#: src/tags.cpp:846 -msgid "Title tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:848 -msgid "Windows Comment" -msgstr "Windows Komentár" - -#: src/tags.cpp:849 -msgid "Comment tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:851 -msgid "Windows Author" -msgstr "Windows autor" - -#: src/tags.cpp:852 -msgid "Author tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:854 -msgid "Windows Keywords" -msgstr "Windows kľúÄové slová" - -#: src/tags.cpp:855 -msgid "Keywords tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:857 -msgid "Windows Subject" -msgstr "Windows predmet" - -#: src/tags.cpp:858 -msgid "Subject tag used by Windows, encoded in UCS2" -msgstr "" - -#: src/tags.cpp:860 -msgid "Print Image Matching" -msgstr "" - -#: src/tags.cpp:861 -msgid "Print Image Matching, description needed." -msgstr "" - -#: src/tags.cpp:863 -msgid "DNG version" -msgstr "Verzia DNG" - -#: src/tags.cpp:864 -msgid "" -"This tag encodes the DNG four-tier version number. For files compliant with " -"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " -"1, 1, 0, 0." -msgstr "" - -#: src/tags.cpp:868 -msgid "DNG backward version" -msgstr "Spätná verzia DNG" - -#: src/tags.cpp:869 -msgid "" -"This tag specifies the oldest version of the Digital Negative specification " -"for which a file is compatible. Readers shouldnot attempt to read a file if " -"this tag specifies a version number that is higher than the version number " -"of the specification the reader was based on. In addition to checking the " -"version tags, readers should, for all tags, check the types, counts, and " -"values, to verify it is able to correctly read the file." -msgstr "" - -#: src/tags.cpp:877 -msgid "Unique Camera Model" -msgstr "JedineÄný model fotoaparátu" - -#: src/tags.cpp:878 -msgid "" -"Defines a unique, non-localized name for the camera model that created the " -"image in the raw file. This name should include the manufacturer's name to " -"avoid conflicts, and should not be localized, even if the camera name itself " -"is localized for different markets (see LocalizedCameraModel). This string " -"may be used by reader software to index into per-model preferences and " -"replacement profiles." -msgstr "" - -#: src/tags.cpp:885 -msgid "Localized Camera Model" -msgstr "Lokalizovaný model fotoaparátu" - -#: src/tags.cpp:886 -msgid "" -"Similar to the UniqueCameraModel field, except the name can be localized for " -"different markets to match the localization of the camera name." -msgstr "" - -#: src/tags.cpp:890 -msgid "CFA Plane Color" -msgstr "Farba CFA roviny" - -#: src/tags.cpp:891 -msgid "" -"Provides a mapping between the values in the CFAPattern tag and the plane " -"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." -msgstr "" - -#: src/tags.cpp:895 -msgid "CFA Layout" -msgstr "" - -#: src/tags.cpp:896 -msgid "Describes the spatial layout of the CFA." -msgstr "" - -#: src/tags.cpp:899 -msgid "" -"Describes a lookup table that maps stored values into linear values. This " -"tag is typically used to increase compression ratios by storing the raw data " -"in a non-linear, more visually uniform space with fewer total encoding " -"levels. If SamplesPerPixel is not equal to one, this single table applies to " -"all the samples for each pixel." -msgstr "" - -#: src/tags.cpp:905 -msgid "Black Level Repeat Dim" -msgstr "Úroveň Äiernej - stlmenie opakovania" - -#: src/tags.cpp:906 -msgid "Specifies repeat pattern size for the BlackLevel tag." -msgstr "" - -#: src/tags.cpp:909 -msgid "" -"Specifies the zero light (a.k.a. thermal black or black current) encoding " -"level, as a repeating pattern. The origin of this pattern is the top-left " -"corner of the ActiveArea rectangle. The values are stored in row-column-" -"sample scan order." -msgstr "" - -#: src/tags.cpp:914 -msgid "Black Level Delta H" -msgstr "Úroveň Äiernej - vodorov. rozdiel" - -#: src/tags.cpp:915 -msgid "" -"If the zero light encoding level is a function of the image column, " -"BlackLevelDeltaH specifies the difference between the zero light encoding " -"level for each column and the baseline zero light encoding level. If " -"SamplesPerPixel is not equal to one, this single table applies to all the " -"samples for each pixel." -msgstr "" - -#: src/tags.cpp:921 -msgid "Black Level Delta V" -msgstr "Úroveň Äiernej - zvis. rozdiel" - -#: src/tags.cpp:922 -msgid "" -"If the zero light encoding level is a function of the image row, this tag " -"specifies the difference between the zero light encoding level for each row " -"and the baseline zero light encoding level. If SamplesPerPixel is not equal " -"to one, this single table applies to all the samples for each pixel." -msgstr "" - -#: src/tags.cpp:928 -msgid "White Level" -msgstr "Úroveň bielej" - -#: src/tags.cpp:929 -msgid "" -"This tag specifies the fully saturated encoding level for the raw sample " -"values. Saturation is caused either by the sensor itself becoming highly non-" -"linear in response, or by the camera's analog to digital converter clipping." -msgstr "" - -#: src/tags.cpp:934 -msgid "Default Scale" -msgstr "Å tandardná Å¡kála" - -#: src/tags.cpp:935 -msgid "" -"DefaultScale is required for cameras with non-square pixels. It specifies " -"the default scale factors for each direction to convert the image to square " -"pixels. Typically these factors are selected to approximately preserve total " -"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " -"as the Fujifilm SuperCCD, these two values should usually differ by a factor " -"of 2.0." -msgstr "" - -#: src/tags.cpp:942 -msgid "Default Crop Origin" -msgstr "" - -#: src/tags.cpp:943 -msgid "" -"Raw images often store extra pixels around the edges of the final image. " -"These extra pixels help prevent interpolation artifacts near the edges of " -"the final image. DefaultCropOrigin specifies the origin of the final image " -"area, in raw image coordinates (i.e., before the DefaultScale has been " -"applied), relative to the top-left corner of the ActiveArea rectangle." -msgstr "" - -#: src/tags.cpp:950 -#, fuzzy -msgid "Default Crop Size" -msgstr "Å tandardná Å¡kála" - -#: src/tags.cpp:951 -msgid "" -"Raw images often store extra pixels around the edges of the final image. " -"These extra pixels help prevent interpolation artifacts near the edges of " -"the final image. DefaultCropSize specifies the size of the final image area, " -"in raw image coordinates (i.e., before the DefaultScale has been applied)." -msgstr "" - -#: src/tags.cpp:957 -msgid "Color Matrix 1" -msgstr "Matica farieb 1" - -#: src/tags.cpp:958 -msgid "" -"ColorMatrix1 defines a transformation matrix that converts XYZ values to " -"reference camera native color space values, under the first calibration " -"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " -"tag is required for all non-monochrome DNG files." -msgstr "" - -#: src/tags.cpp:964 -msgid "Color Matrix 2" -msgstr "Matica farieb 2" - -#: src/tags.cpp:965 -msgid "" -"ColorMatrix2 defines a transformation matrix that converts XYZ values to " -"reference camera native color space values, under the second calibration " -"illuminant. The matrix values are stored in row scan order." -msgstr "" - -#: src/tags.cpp:970 -msgid "Camera Calibration 1" -msgstr "Kalibrácia fotoaparátu 1" - -#: src/tags.cpp:971 -msgid "" -"CameraClalibration1 defines a calibration matrix that transforms reference " -"camera native space values to individual camera native space values under " -"the first calibration illuminant. The matrix is stored in row scan order. " -"This matrix is stored separately from the matrix specified by the " -"ColorMatrix1 tag to allow raw converters to swap in replacement color " -"matrices based on UniqueCameraModel tag, while still taking advantage of any " -"per-individual camera calibration performed by the camera manufacturer." -msgstr "" - -#: src/tags.cpp:980 -#, fuzzy -msgid "Camera Calibration 2" -msgstr "Kalibrácia fotoaparátu 1" - -#: src/tags.cpp:981 -msgid "" -"CameraCalibration2 defines a calibration matrix that transforms reference " -"camera native space values to individual camera native space values under " -"the second calibration illuminant. The matrix is stored in row scan order. " -"This matrix is stored separately from the matrix specified by the " -"ColorMatrix2 tag to allow raw converters to swap in replacement color " -"matrices based on UniqueCameraModel tag, while still taking advantage of any " -"per-individual camera calibration performed by the camera manufacturer." -msgstr "" - -#: src/tags.cpp:990 -#, fuzzy -msgid "Reduction Matrix 1" -msgstr "Matica farieb 1" - -#: src/tags.cpp:991 -msgid "" -"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " -"first stage in converting color camera native space values to XYZ values, " -"under the first calibration illuminant. This tag may only be used if " -"ColorPlanes is greater than 3. The matrix is stored in row scan order." -msgstr "" - -#: src/tags.cpp:997 -#, fuzzy -msgid "Reduction Matrix 2" -msgstr "Matica farieb 2" - -#: src/tags.cpp:998 -msgid "" -"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " -"first stage in converting color camera native space values to XYZ values, " -"under the second calibration illuminant. This tag may only be used if " -"ColorPlanes is greater than 3. The matrix is stored in row scan order." -msgstr "" - -#: src/tags.cpp:1004 -msgid "Analog Balance" -msgstr "Analógové vyváženie" - -#: src/tags.cpp:1005 -msgid "" -"Normally the stored raw values are not white balanced, since any digital " -"white balancing will reduce the dynamic range of the final image if the user " -"decides to later adjust the white balance; however, if camera hardware is " -"capable of white balancing the color channels before the signal is " -"digitized, it can improve the dynamic range of the final image. " -"AnalogBalance defines the gain, either analog (recommended) or digital (not " -"recommended) that has been applied the stored raw values." -msgstr "" - -#: src/tags.cpp:1014 -msgid "As Shot Neutral" -msgstr "Neutrálny, ako nafotený" - -#: src/tags.cpp:1015 -msgid "" -"Specifies the selected white balance at time of capture, encoded as the " -"coordinates of a perfectly neutral color in linear reference space values. " -"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." -msgstr "" - -#: src/tags.cpp:1020 -msgid "As Shot White XY" -msgstr "" - -#: src/tags.cpp:1021 -msgid "" -"Specifies the selected white balance at time of capture, encoded as x-y " -"chromaticity coordinates. The inclusion of this tag precludes the inclusion " -"of the AsShotNeutral tag." -msgstr "" - -#: src/tags.cpp:1025 -#, fuzzy -msgid "Baseline Exposure" -msgstr "Viacnásobná expozícia" - -#: src/tags.cpp:1026 -msgid "" -"Camera models vary in the trade-off they make between highlight headroom and " -"shadow noise. Some leave a significant amount of highlight headroom during a " -"normal exposure. This allows significant negative exposure compensation to " -"be applied during raw conversion, but also means normal exposures will " -"contain more shadow noise. Other models leave less headroom during normal " -"exposures. This allows for less negative exposure compensation, but results " -"in lower shadow noise for normal exposures. Because of these differences, a " -"raw converter needs to vary the zero point of its exposure compensation " -"control from model to model. BaselineExposure specifies by how much (in EV " -"units) to move the zero point. Positive values result in brighter default " -"results, while negative values result in darker default results." -msgstr "" - -#: src/tags.cpp:1040 -#, fuzzy -msgid "Baseline Noise" -msgstr "Viacnásobná expozícia" - -#: src/tags.cpp:1041 -msgid "" -"Specifies the relative noise level of the camera model at a baseline ISO " -"value of 100, compared to a reference camera model. Since noise levels tend " -"to vary approximately with the square root of the ISO value, a raw converter " -"can use this value, combined with the current ISO, to estimate the relative " -"noise level of the current image." -msgstr "" - -#: src/tags.cpp:1047 -#, fuzzy -msgid "Baseline Sharpness" -msgstr "OstrosÅ¥" - -#: src/tags.cpp:1048 -msgid "" -"Specifies the relative amount of sharpening required for this camera model, " -"compared to a reference camera model. Camera models vary in the strengths of " -"their anti-aliasing filters. Cameras with weak or no filters require less " -"sharpening than cameras with strong anti-aliasing filters." -msgstr "" - -#: src/tags.cpp:1054 -msgid "Bayer Green Split" -msgstr "" - -#: src/tags.cpp:1055 -msgid "" -"Only applies to CFA images using a Bayer pattern filter array. This tag " -"specifies, in arbitrary units, how closely the values of the green pixels in " -"the blue/green rows track the values of the green pixels in the red/green " -"rows. A value of zero means the two kinds of green pixels track closely, " -"while a non-zero value means they sometimes diverge. The useful range for " -"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." -msgstr "" - -#: src/tags.cpp:1063 -msgid "Linear Response Limit" -msgstr "" - -#: src/tags.cpp:1064 -msgid "" -"Some sensors have an unpredictable non-linearity in their response as they " -"near the upper limit of their encoding range. This non-linearity results in " -"color shifts in the highlight areas of the resulting image unless the raw " -"converter compensates for this effect. LinearResponseLimit specifies the " -"fraction of the encoding range above which the response may become " -"significantly non-linear." -msgstr "" - -#: src/tags.cpp:1072 -msgid "" -"CameraSerialNumber contains the serial number of the camera or camera body " -"that captured the image." -msgstr "" - -#: src/tags.cpp:1075 -msgid "Lens Info" -msgstr "Info o Å¡oÅ¡ovkách" - -#: src/tags.cpp:1076 -msgid "" -"Contains information about the lens that captured the image. If the minimum " -"f-stops are unknown, they should be encoded as 0/0." -msgstr "" - -#: src/tags.cpp:1079 -msgid "Chroma Blur Radius" -msgstr "" - -#: src/tags.cpp:1080 -msgid "" -"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " -"blur should be applied to the image. If this tag is omitted, the reader will " -"use its default amount of chroma blurring. Normally this tag is only " -"included for non-CFA images, since the amount of chroma blur required for " -"mosaic images is highly dependent on the de-mosaic algorithm, in which case " -"the DNG reader's default value is likely optimized for its particular de-" -"mosaic algorithm." -msgstr "" - -#: src/tags.cpp:1088 -msgid "Anti Alias Strength" -msgstr "Sila antialiasingu" - -#: src/tags.cpp:1089 -msgid "" -"Provides a hint to the DNG reader about how strong the camera's anti-alias " -"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " -"prone to aliasing artifacts with some subjects), while a value of 1.0 means " -"a strong anti-alias filter (i.e., the camera almost never has aliasing " -"artifacts)." -msgstr "" - -# exif-lightsource-11 -#: src/tags.cpp:1095 -#, fuzzy -msgid "Shadow Scale" -msgstr "Tieň" - -#: src/tags.cpp:1096 -msgid "" -"This tag is used by Adobe Camera Raw to control the sensitivity of its " -"'Shadows' slider." -msgstr "" - -#: src/tags.cpp:1099 -msgid "DNG Private Data" -msgstr "Privátne údaje DNG" - -#: src/tags.cpp:1100 -msgid "" -"Provides a way for camera manufacturers to store private data in the DNG " -"file for use by their own raw converters, and to have that data preserved by " -"programs that edit DNG files." -msgstr "" - -#: src/tags.cpp:1104 -msgid "MakerNote Safety" -msgstr "Poistka Poznámky výrobcu" - -#: src/tags.cpp:1105 -msgid "" -"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " -"safe to preserve along with the rest of the EXIF data. File browsers and " -"other image management software processing an image with a preserved " -"MakerNote should be aware that any thumbnail image embedded in the MakerNote " -"may be stale, and may not reflect the current state of the full size image." -msgstr "" - -#: src/tags.cpp:1112 -msgid "Calibration Illuminant 1" -msgstr "" - -#: src/tags.cpp:1113 -msgid "" -"The illuminant used for the first set of color calibration tags " -"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " -"this tag are the same as the legal values for the LightSource EXIF tag." -msgstr "" - -#: src/tags.cpp:1118 -#, fuzzy -msgid "Calibration Illuminant 2" -msgstr "Bez korekcie" - -#: src/tags.cpp:1119 -msgid "" -"The illuminant used for an optional second set of color calibration tags " -"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " -"this tag are the same as the legal values for the CalibrationIlluminant1 " -"tag; however, if both are included, neither is allowed to have a value of 0 " -"(unknown)." -msgstr "" - -#: src/tags.cpp:1125 -#, fuzzy -msgid "Best Quality Scale" -msgstr "Å tandardná Å¡kála" - -#: src/tags.cpp:1126 -msgid "" -"For some cameras, the best possible image quality is not achieved by " -"preserving the total pixel count during conversion. For example, Fujifilm " -"SuperCCD images have maximum detail when their total pixel count is doubled. " -"This tag specifies the amount by which the values of the DefaultScale tag " -"need to be multiplied to achieve the best quality image size." -msgstr "" - -#: src/tags.cpp:1133 -msgid "Raw Data Unique ID" -msgstr "JedineÄný ID nespracovaných údajov" - -#: src/tags.cpp:1134 -msgid "" -"This tag contains a 16-byte unique identifier for the raw image data in the " -"DNG file. DNG readers can use this tag to recognize a particular raw image, " -"even if the file's name or the metadata contained in the file has been " -"changed. If a DNG writer creates such an identifier, it should do so using " -"an algorithm that will ensure that it is very unlikely two different images " -"will end up having the same identifier." -msgstr "" - -#: src/tags.cpp:1142 -msgid "Original Raw File Name" -msgstr "Názov nespracovaného pôvodného súboru" - -#: src/tags.cpp:1143 -msgid "" -"If the DNG file was converted from a non-DNG raw file, then this tag " -"contains the file name of that original raw file." -msgstr "" - -#: src/tags.cpp:1146 -#, fuzzy -msgid "Original Raw File Data" -msgstr "Názov nespracovaného pôvodného súboru" - -#: src/tags.cpp:1147 -msgid "" -"If the DNG file was converted from a non-DNG raw file, then this tag " -"contains the compressed contents of that original raw file. The contents of " -"this tag always use the big-endian byte order. The tag contains a sequence " -"of data blocks. Future versions of the DNG specification may define " -"additional data blocks, so DNG readers should ignore extra bytes when " -"parsing this tag. DNG readers should also detect the case where data blocks " -"are missing from the end of the sequence, and should assume a default value " -"for all the missing blocks. There are no padding or alignment bytes between " -"data blocks." -msgstr "" - -# exif-subjectarea -#: src/tags.cpp:1157 -msgid "Active Area" -msgstr "Aktívna oblasÅ¥" - -#: src/tags.cpp:1158 -msgid "" -"This rectangle defines the active (non-masked) pixels of the sensor. The " -"order of the rectangle coordinates is: top, left, bottom, right." -msgstr "" - -#: src/tags.cpp:1161 -msgid "Masked Areas" -msgstr "Maskované oblasti" - -#: src/tags.cpp:1162 -msgid "" -"This tag contains a list of non-overlapping rectangle coordinates of fully " -"masked pixels, which can be optionally used by DNG readers to measure the " -"black encoding level. The order of each rectangle's coordinates is: top, " -"left, bottom, right. If the raw image data has already had its black " -"encoding level subtracted, then this tag should not be used, since the " -"masked pixels are no longer useful." -msgstr "" - -#: src/tags.cpp:1169 -msgid "As-Shot ICC Profile" -msgstr "ICC profil ako bolo nafotené" - -#: src/tags.cpp:1170 -msgid "" -"This tag contains an ICC profile that, in conjunction with the " -"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " -"specify a default color rendering from camera color space coordinates " -"(linear reference values) into the ICC profile connection space. The ICC " -"profile connection space is an output referred colorimetric space, whereas " -"the other color calibration tags in DNG specify a conversion into a scene " -"referred colorimetric space. This means that the rendering in this profile " -"should include any desired tone and gamut mapping needed to convert between " -"scene referred values and output referred values." -msgstr "" - -#: src/tags.cpp:1181 -#, fuzzy -msgid "As-Shot Pre-Profile Matrix" -msgstr "ICC profil ako bolo nafotené" - -#: src/tags.cpp:1182 -msgid "" -"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " -"a matrix that should be applied to the camera color space coordinates before " -"processing the values through the ICC profile specified in the " -"AsShotICCProfile tag. The matrix is stored in the row scan order. If " -"ColorPlanes is greater than three, then this matrix can (but is not required " -"to) reduce the dimensionality of the color data down to three components, in " -"which case the AsShotICCProfile should have three rather than ColorPlanes " -"input components." -msgstr "" - -#: src/tags.cpp:1191 -msgid "Current ICC Profile" -msgstr "Aktuálny ICC profil" - -#: src/tags.cpp:1192 -msgid "" -"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " -"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " -"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " -"they are for use by raw file editors rather than camera manufacturers." -msgstr "" - -#: src/tags.cpp:1198 -#, fuzzy -msgid "Current Pre-Profile Matrix" -msgstr "Aktuálny ICC profil" - -#: src/tags.cpp:1199 -msgid "" -"This tag is used in conjunction with the CurrentICCProfile tag. The " -"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " -"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " -"they are for use by raw file editors rather than camera manufacturers." -msgstr "" - -#: src/tags.cpp:1205 -#, fuzzy -msgid "Colorimetric Reference" -msgstr "GPS referencia zemepisnej dĺžky" - -#: src/tags.cpp:1206 -msgid "" -"The DNG color model documents a transform between camera colors and CIE XYZ " -"values. This tag describes the colorimetric reference for the CIE XYZ " -"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" -"referred, using the ICC profile perceptual dynamic range. This tag allows " -"output-referred data to be stored in DNG files and still processed correctly " -"by DNG readers." -msgstr "" - -#: src/tags.cpp:1213 -#, fuzzy -msgid "Camera Calibration Signature" -msgstr "Kalibrácia fotoaparátu 1" - -#: src/tags.cpp:1214 -msgid "" -"A UTF-8 encoded string associated with the CameraCalibration1 and " -"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " -"should only be used in the DNG color transform if the string stored in the " -"CameraCalibrationSignature tag exactly matches the string stored in the " -"ProfileCalibrationSignature tag for the selected camera profile." -msgstr "" - -#: src/tags.cpp:1220 -#, fuzzy -msgid "Profile Calibration Signature" -msgstr "Bez korekcie" - -#: src/tags.cpp:1221 -msgid "" -"A UTF-8 encoded string associated with the camera profile tags. The " -"CameraCalibration1 and CameraCalibration2 tags should only be used in the " -"DNG color transfer if the string stored in the CameraCalibrationSignature " -"tag exactly matches the string stored in the ProfileCalibrationSignature tag " -"for the selected camera profile." -msgstr "" - -#: src/tags.cpp:1227 -#, fuzzy -msgid "As Shot Profile Name" -msgstr "ICC profil ako bolo nafotené" - -#: src/tags.cpp:1228 -msgid "" -"A UTF-8 encoded string containing the name of the \"as shot\" camera " -"profile, if any." -msgstr "" - -#: src/tags.cpp:1231 -#, fuzzy -msgid "Noise Reduction Applied" -msgstr "Redukcia Å¡umu" - -#: src/tags.cpp:1232 -msgid "" -"This tag indicates how much noise reduction has been applied to the raw data " -"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " -"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " -"reduction has been applied, i.e. that the DNG reader should not apply " -"additional noise reduction by default. A value of 0/0 indicates that this " -"parameter is unknown." -msgstr "" - -#: src/tags.cpp:1239 -#, fuzzy -msgid "Profile Name" -msgstr "Názvy plôch" - -#: src/tags.cpp:1240 -msgid "" -"A UTF-8 encoded string containing the name of the camera profile. This tag " -"is optional if there is only a single camera profile stored in the file but " -"is required for all camera profiles if there is more than one camera profile " -"stored in the file." -msgstr "" - -#: src/tags.cpp:1245 -msgid "Profile Hue Sat Map Dims" -msgstr "" - -#: src/tags.cpp:1246 -msgid "" -"This tag specifies the number of input samples in each dimension of the hue/" -"saturation/value mapping tables. The data for these tables are stored in " -"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " -"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " -"to the mapping table." -msgstr "" - -#: src/tags.cpp:1252 -msgid "Profile Hue Sat Map Data 1" -msgstr "" - -#: src/tags.cpp:1253 -msgid "" -"This tag contains the data for the first hue/saturation/value mapping table. " -"Each entry of the table contains three 32-bit IEEE floating-point values. " -"The first entry is hue shift in degrees; the second entry is saturation " -"scale factor; and the third entry is a value scale factor. The table entries " -"are stored in the tag in nested loop order, with the value divisions in the " -"outer loop, the hue divisions in the middle loop, and the saturation " -"divisions in the inner loop. All zero input saturation entries are required " -"to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1262 -msgid "Profile Hue Sat Map Data 2" -msgstr "" - -#: src/tags.cpp:1263 -msgid "" -"This tag contains the data for the second hue/saturation/value mapping " -"table. Each entry of the table contains three 32-bit IEEE floating-point " -"values. The first entry is hue shift in degrees; the second entry is a " -"saturation scale factor; and the third entry is a value scale factor. The " -"table entries are stored in the tag in nested loop order, with the value " -"divisions in the outer loop, the hue divisions in the middle loop, and the " -"saturation divisions in the inner loop. All zero input saturation entries " -"are required to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1272 -#, fuzzy -msgid "Profile Tone Curve" -msgstr "Krivka tónu" - -#: src/tags.cpp:1273 -msgid "" -"This tag contains a default tone curve that can be applied while processing " -"the image as a starting point for user adjustments. The curve is specified " -"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " -"sample has an input value in the range of 0.0 to 1.0, and an output value in " -"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " -"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " -"cubic spline." -msgstr "" - -#: src/tags.cpp:1281 -msgid "Profile Embed Policy" -msgstr "" - -#: src/tags.cpp:1282 -msgid "" -"This tag contains information about the usage rules for the associated " -"camera profile." -msgstr "" - -#: src/tags.cpp:1285 -#, fuzzy -msgid "Profile Copyright" -msgstr "Copyright" - -#: src/tags.cpp:1286 -msgid "" -"A UTF-8 encoded string containing the copyright information for the camera " -"profile. This string always should be preserved along with the other camera " -"profile tags." -msgstr "" - -#: src/tags.cpp:1290 -#, fuzzy -msgid "Forward Matrix 1" -msgstr "Matica farieb 1" - -#: src/tags.cpp:1291 src/tags.cpp:1295 -msgid "" -"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " -"colors." -msgstr "" - -#: src/tags.cpp:1294 -#, fuzzy -msgid "Forward Matrix 2" -msgstr "Matica farieb 2" - -#: src/tags.cpp:1298 -#, fuzzy -msgid "Preview Application Name" -msgstr "Dáta náhľadu" - -#: src/tags.cpp:1299 -msgid "" -"A UTF-8 encoded string containing the name of the application that created " -"the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1302 -#, fuzzy -msgid "Preview Application Version" -msgstr "Verzia náhľadu" - -#: src/tags.cpp:1303 -msgid "" -"A UTF-8 encoded string containing the version number of the application that " -"created the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1306 -#, fuzzy -msgid "Preview Settings Name" -msgstr "ZobraziÅ¥ vložený obrázok" - -#: src/tags.cpp:1307 -msgid "" -"A UTF-8 encoded string containing the name of the conversion settings (for " -"example, snapshot name) used for the preview stored in the IFD." -msgstr "" - -# exif-devicesettingdescription -#: src/tags.cpp:1310 -#, fuzzy -msgid "Preview Settings Digest" -msgstr "opis nastavení zariadenia" - -#: src/tags.cpp:1311 -msgid "" -"A unique ID of the conversion settings (for example, MD5 digest) used to " -"render the preview stored in the IFD." -msgstr "" - -#: src/tags.cpp:1314 -#, fuzzy -msgid "Preview Color Space" -msgstr "Farebný priestor videa" - -#: src/tags.cpp:1315 -msgid "" -"This tag specifies the color space in which the rendered preview in this IFD " -"is stored. The default value for this tag is sRGB for color previews and " -"Gray Gamma 2.2 for monochrome previews." -msgstr "" - -#: src/tags.cpp:1319 -#, fuzzy -msgid "Preview Date Time" -msgstr "Dáta náhľadu" - -#: src/tags.cpp:1320 -msgid "" -"This tag is an ASCII string containing the name of the date/time at which " -"the preview stored in the IFD was rendered. The date/time is encoded using " -"ISO 8601 format." -msgstr "" - -#: src/tags.cpp:1324 -#, fuzzy -msgid "Raw Image Digest" -msgstr "PoÄet obrázkov" - -#: src/tags.cpp:1325 -msgid "" -"This tag is an MD5 digest of the raw image data. All pixels in the image are " -"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " -"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " -"data for each pixel is processed in little-endian byte order." -msgstr "" - -#: src/tags.cpp:1330 -#, fuzzy -msgid "Original Raw File Digest" -msgstr "Názov nespracovaného pôvodného súboru" - -#: src/tags.cpp:1331 -msgid "" -"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." -msgstr "" - -#: src/tags.cpp:1334 -msgid "Sub Tile Block Size" -msgstr "" - -#: src/tags.cpp:1335 -msgid "" -"Normally, the pixels within a tile are stored in simple row-scan order. This " -"tag specifies that the pixels within a tile should be grouped first into " -"rectangular blocks of the specified size. These blocks are stored in row-" -"scan order. Within each block, the pixels are stored in row-scan order. The " -"use of a non-default value for this tag requires setting the " -"DNGBackwardVersion tag to at least 1.2.0.0." -msgstr "" - -#: src/tags.cpp:1342 -msgid "Row Interleave Factor" -msgstr "" - -#: src/tags.cpp:1343 -msgid "" -"This tag specifies that rows of the image are stored in interleaved order. " -"The value of the tag specifies the number of interleaved fields. The use of " -"a non-default value for this tag requires setting the DNGBackwardVersion tag " -"to at least 1.2.0.0." -msgstr "" - -#: src/tags.cpp:1348 -msgid "Profile Look Table Dims" -msgstr "" - -#: src/tags.cpp:1349 -msgid "" -"This tag specifies the number of input samples in each dimension of a " -"default \"look\" table. The data for this table is stored in the " -"ProfileLookTableData tag." -msgstr "" - -#: src/tags.cpp:1353 -msgid "Profile Look Table Data" -msgstr "" - -#: src/tags.cpp:1354 -msgid "" -"This tag contains a default \"look\" table that can be applied while " -"processing the image as a starting point for user adjustment. This table " -"uses the same format as the tables stored in the ProfileHueSatMapData1 and " -"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " -"it should be applied later in the processing pipe, after any exposure " -"compensation and/or fill light stages, but before any tone curve stage. Each " -"entry of the table contains three 32-bit IEEE floating-point values. The " -"first entry is hue shift in degrees, the second entry is a saturation scale " -"factor, and the third entry is a value scale factor. The table entries are " -"stored in the tag in nested loop order, with the value divisions in the " -"outer loop, the hue divisions in the middle loop, and the saturation " -"divisions in the inner loop. All zero input saturation entries are required " -"to have a value scale factor of 1.0." -msgstr "" - -#: src/tags.cpp:1368 -msgid "Opcode List 1" -msgstr "" - -#: src/tags.cpp:1369 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, as " -"read directly from the file." -msgstr "" - -#: src/tags.cpp:1372 -msgid "Opcode List 2" -msgstr "" - -#: src/tags.cpp:1373 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, just " -"after it has been mapped to linear reference values." -msgstr "" - -#: src/tags.cpp:1376 -msgid "Opcode List 3" -msgstr "" - -#: src/tags.cpp:1377 -msgid "" -"Specifies the list of opcodes that should be applied to the raw image, just " -"after it has been demosaiced." -msgstr "" - -#: src/tags.cpp:1380 -#, fuzzy -msgid "Noise Profile" -msgstr "Farebný filter" - -#: src/tags.cpp:1381 -msgid "" -"NoiseProfile describes the amount of noise in a raw image. Specifically, " -"this tag models the amount of signal-dependent photon (shot) noise and " -"signal-independent sensor readout noise, two common sources of noise in raw " -"images. The model assumes that the noise is white and spatially independent, " -"ignoring fixed pattern effects and other sources of noise (e.g., pixel " -"response non-uniformity, spatially-dependent thermal effects, etc.)." -msgstr "" - -#: src/tags.cpp:1389 src/tags.cpp:1390 -msgid "Unknown IFD tag" -msgstr "Neznáma znaÄka IFD" - -#: src/tags.cpp:1401 src/tags.cpp:1459 -msgid "Not defined" -msgstr "nedefinované" - -#: src/tags.cpp:1406 -msgid "Creative program" -msgstr "Tvorivý program" - -#: src/tags.cpp:1407 -msgid "Action program" -msgstr "AkÄný program" - -#: src/tags.cpp:1408 -msgid "Portrait mode" -msgstr "Režim portrét" - -#: src/tags.cpp:1409 -msgid "Landscape mode" -msgstr "Režim krajinka" - -#: src/tags.cpp:1418 -msgid "Multi-spot" -msgstr "Viacbodový" - -# exif-lightsource-3 -#: src/tags.cpp:1430 -msgid "Tungsten (incandescent light)" -msgstr "volfram (inkadescentné svetlo)" - -# exif-lightsource-9 -#: src/tags.cpp:1432 -msgid "Fine weather" -msgstr "pekné poÄasie" - -# exif-lightsource-10 -#: src/tags.cpp:1433 -msgid "Cloudy weather" -msgstr "oblaÄné poÄasie" - -#: src/tags.cpp:1435 -msgid "Daylight fluorescent (D 5700 - 7100K)" -msgstr "denné svetlo fluorescenÄné (D 5700 - 7100K)" - -#: src/tags.cpp:1436 -msgid "Day white fluorescent (N 4600 - 5400K)" -msgstr "biely deň, fluorescenÄné (N 4600 - 5400K)" - -#: src/tags.cpp:1437 -msgid "Cool white fluorescent (W 3900 - 4500K)" -msgstr "chladné biele fluorescenÄné (W 3900 - 4500K)" - -#: src/tags.cpp:1438 -msgid "White fluorescent (WW 3200 - 3700K)" -msgstr "biele fluorescenÄné (WW 3200 - 3700K)" - -#: src/tags.cpp:1439 -msgid "Standard light A" -msgstr "Å tandardné svetlo A" - -#: src/tags.cpp:1440 -msgid "Standard light B" -msgstr "Å tandardné svetlo B" - -#: src/tags.cpp:1441 -msgid "Standard light C" -msgstr "Å tandardné svetlo C" - -# exif-lightsource-20 -#: src/tags.cpp:1442 -msgid "D55" -msgstr "D55" - -# exif-lightsource-21 -#: src/tags.cpp:1443 -msgid "D65" -msgstr "D65" - -# exif-lightsource-22 -#: src/tags.cpp:1444 -msgid "D75" -msgstr "D75" - -#: src/tags.cpp:1445 -msgid "D50" -msgstr "D50" - -# exif-lightsource-24 -#: src/tags.cpp:1446 -msgid "ISO studio tungsten" -msgstr "ISO Å¡túdiový volfrám" - -#: src/tags.cpp:1447 -msgid "Other light source" -msgstr "Iný svetelný zdroj" - -#: src/tags.cpp:1454 -msgid "Uncalibrated" -msgstr "Nekalibrované" - -# exif-sensingmethod-2 -#: src/tags.cpp:1460 -msgid "One-chip color area" -msgstr "jednoÄipový farebný snímaÄ oblasti" - -# exif-sensingmethod-3 -#: src/tags.cpp:1461 -msgid "Two-chip color area" -msgstr "dvojÄipový farebný snímaÄ oblasti" - -# exif-sensingmethod-4 -#: src/tags.cpp:1462 -msgid "Three-chip color area" -msgstr "trojÄipový farebný snímaÄ oblasti" - -# exif-sensingmethod-5 -#: src/tags.cpp:1463 -msgid "Color sequential area" -msgstr "sekvenÄný farebný snímaÄ oblasti" - -# exif-sensingmethod-7 -#: src/tags.cpp:1464 -msgid "Trilinear sensor" -msgstr "trilineárny snímaÄ" - -# exif-sensingmethod-5 -#: src/tags.cpp:1465 -msgid "Color sequential linear" -msgstr "sekvenÄný farebný snímaÄ oblasti" - -#: src/tags.cpp:1470 -#, fuzzy -msgid "Film scanner" -msgstr "Názov súboru" - -#: src/tags.cpp:1471 -msgid "Reflexion print scanner" -msgstr "" - -#: src/tags.cpp:1472 -msgid "Digital still camera" -msgstr "digitálny fotoaparát" - -#: src/tags.cpp:1477 -msgid "Directly photographed" -msgstr "" - -#: src/tags.cpp:1482 -msgid "Normal process" -msgstr "Bežné spracovanie" - -#: src/tags.cpp:1483 -msgid "Custom process" -msgstr "Vlastné spracovanie" - -#: src/tags.cpp:1511 -msgid "Low gain up" -msgstr "Slabé zosilnenie" - -# exif-gaincontrol-2 -#: src/tags.cpp:1512 -msgid "High gain up" -msgstr "vysoké zosilnenie" - -# exif-gaincontrol-3 -#: src/tags.cpp:1513 -msgid "Low gain down" -msgstr "nízke zoslabenie" - -# exif-gaincontrol-4 -#: src/tags.cpp:1514 -msgid "High gain down" -msgstr "vysoké zoslabenie" - -# exif-subjectdistancerange-2 -#: src/tags.cpp:1535 -msgid "Close view" -msgstr "pohľad zblízka" - -#: src/tags.cpp:1536 src/tags.cpp:1537 -msgid "Distant view" -msgstr "Vzdialený pohľad" - -#: src/tags.cpp:1543 -msgid "Exposure time, given in seconds (sec)." -msgstr "ÄŒas expozície v sekundách (sek)." - -#: src/tags.cpp:1553 -msgid "" -"Indicates the spectral sensitivity of each channel of the camera used. The " -"tag value is an ASCII string compatible with the standard developed by the " -"ASTM Technical Committee." -msgstr "" -"OznaÄuje spektrálnu citlivosÅ¥ každého z kanálov použitého fotoaparátu. " -"Hodnota znaÄky je ASCII reÅ¥azec kompatibilný so Å¡tandardom vyvinutým " -"Technickou komisiou ASTM." - -#: src/tags.cpp:1561 -msgid "Opto-Electoric Conversion Function" -msgstr "" - -# exif-oecf -#: src/tags.cpp:1562 -msgid "" -"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " -"14524. is the relationship between the camera optical input and the " -"image values." -msgstr "" -"OznaÄuje optoelektronickú konverznú funkciu (OECF) podľa Å¡pecifikácie ISO " -"14524. je vzÅ¥ah medzi optickým vstupom fotoaparátu a hodnotami " -"obrázka." - -#: src/tags.cpp:1566 -#, fuzzy -msgid "Sensitivity Type" -msgstr "ISO citlivosÅ¥" - -#: src/tags.cpp:1567 -msgid "" -"The SensitivityType tag indicates PhotographicSensitivity tag. which one of " -"the parameters of ISO12232 is the Although it is an optional tag, it should " -"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " -"or 7 may be used in case that the values of plural parameters are the same." -msgstr "" - -#: src/tags.cpp:1573 -#, fuzzy -msgid "Standard Output Sensitivity" -msgstr "Spektrálna citlivosÅ¥:" - -#: src/tags.cpp:1574 -msgid "" -"This tag indicates the standard output sensitivity value of a camera or " -"input device defined in ISO 12232. When recording this tag, the " -"PhotographicSensitivity and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1578 -#, fuzzy -msgid "Recommended Exposure Index" -msgstr "Index expozície" - -#: src/tags.cpp:1579 -msgid "" -"This tag indicates the recommended exposure index value of a camera or input " -"device defined in ISO 12232. When recording this tag, the " -"PhotographicSensitivity and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1584 -msgid "" -"This tag indicates the ISO speed value of a camera or input device that is " -"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " -"and SensitivityType tags shall also be recorded." -msgstr "" - -#: src/tags.cpp:1588 -#, fuzzy -msgid "ISO Speed Latitude yyy" -msgstr "Režim ISO rýchlosÅ¥" - -#: src/tags.cpp:1589 -msgid "" -"This tag indicates the ISO speed latitude yyy value of a camera or input " -"device that is defined in ISO 12232. However, this tag shall not be recorded " -"without ISOSpeed and ISOSpeedLatitudezzz." -msgstr "" - -#: src/tags.cpp:1593 -#, fuzzy -msgid "ISO Speed Latitude zzz" -msgstr "Režim ISO rýchlosÅ¥" - -#: src/tags.cpp:1594 -msgid "" -"This tag indicates the ISO speed latitude zzz value of a camera or input " -"device that is defined in ISO 12232. However, this tag shall not be recorded " -"without ISOSpeed and ISOSpeedLatitudeyyy." -msgstr "" - -#: src/tags.cpp:1599 -msgid "" -"The version of this standard supported. Nonexistence of this field is taken " -"to mean nonconformance to the standard." -msgstr "" -"Podporovaná verzia tohto Å¡tandardu. Neexistencia tohto poľa znamená " -"nekonformnosÅ¥ so Å¡tandardom." - -#: src/tags.cpp:1602 -msgid "Date and Time (original)" -msgstr "Dátum a Äas (pôvodný)" - -#: src/tags.cpp:1603 -msgid "" -"The date and time when the original image data was generated. For a digital " -"still camera the date and time the picture was taken are recorded." -msgstr "" -"Dátum a Äas, kedy boli vytvorené pôvodné obrazové dáta. Pre digitálny " -"fotoaparát je to dátum a Äas zachytenia a zaznamenania obrázka." - -# exif-datetimedigitized -#: src/tags.cpp:1606 -msgid "Date and Time (digitized)" -msgstr "dátum a Äas digitalizácie" - -#: src/tags.cpp:1607 -msgid "The date and time when the image was stored as digital data." -msgstr "Dátum a Äas, kedy bol obrázok uložený ako digitálne dáta." - -#: src/tags.cpp:1610 -msgid "" -"Information specific to compressed data. The channels of each component are " -"arranged in order from the 1st component to the 4th. For uncompressed data " -"the data arrangement is given in the tag. " -"However, since can only express the order of Y, " -"Cb and Cr, this tag is provided for cases when compressed data uses " -"components other than Y, Cb, and Cr and to enable support of other sequences." -msgstr "" -"Informácia Å¡pecifická pre kompresné dáta. Kanály každej zložky sú zoradené v " -"poradí d 1. po 4. zložku. Pre nekomprimované dáta je poradie dát dané " -"znaÄkou . AvÅ¡ak keÄže " -"dokáže vyjadriÅ¥ iba poradie Y, Cb a táto znaÄka je použiteľná v prípadoch, " -"kedy komprimované dáta používajú iné komponenty ako Y, Cb, a Cr a na to, aby " -"sa umožnila podpora iných poradí." - -# exif-compressedbitsperpixel -#: src/tags.cpp:1619 -msgid "Compressed Bits per Pixel" -msgstr "komprimované bity na pixel" - -#: src/tags.cpp:1620 -msgid "" -"Information specific to compressed data. The compression mode used for a " -"compressed image is indicated in unit bits per pixel." -msgstr "" -"Informácia Å¡pecifická komprimovaným dátam. Režim kompresie použitý na " -"komprimovaný obrázok sa oznaÄuje v jednotkách bity na pixel." - -#: src/tags.cpp:1624 -msgid "" -"Shutter speed. The unit is the APEX (Additive System of Photographic " -"Exposure) setting." -msgstr "" -"RýchlosÅ¥ uzávierky. Jednotka je nastavenie APEX (Aditívny systém " -"fotografickej expozície)." - -#: src/tags.cpp:1628 -msgid "The lens aperture. The unit is the APEX value." -msgstr "Clona. Jednotka je hodnota APEX." - -#: src/tags.cpp:1631 -msgid "" -"The value of brightness. The unit is the APEX value. Ordinarily it is given " -"in the range of -99.99 to 99.99." -msgstr "" -"Hodnota jasu. Jednotka je hodnota APEX. Bežne sa udáva v rozsahu -99.99 až " -"99.99." - -#: src/tags.cpp:1634 -msgid "Exposure Bias" -msgstr "Skreslenie expozície" - -#: src/tags.cpp:1635 -msgid "" -"The exposure bias. The units is the APEX value. Ordinarily it is given in " -"the range of -99.99 to 99.99." -msgstr "" -"ExpoziÄné skreslenie. Jednotka je hodnota APEX. Bežne sa udáva v rozsahu " -"-99.99 až 99.99." - -#: src/tags.cpp:1639 -msgid "" -"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " -"is given in the range of 00.00 to 99.99, but it is not limited to this range." -msgstr "" -"NajmenÅ¡ie Äíslo F Å¡oÅ¡oviek. Jednotka je hodnota APEX. Bežne sa udáva v " -"rozsahu -99.99 až 99.99." - -#: src/tags.cpp:1653 -msgid "" -"This tag is recorded when an image is taken using a strobe light (flash)." -msgstr "" -"Táto znaÄka sa zaznamenáva, keÄ je obrázok odfotený pri impulznom svetle " -"(blesk)." - -#: src/tags.cpp:1656 -msgid "" -"The actual focal length of the lens, in mm. Conversion is not made to the " -"focal length of a 35 mm film camera." -msgstr "" -"SkutoÄná ohnisková vzdialenosÅ¥ Å¡oÅ¡oviek v mm. Nerobí sa konverzia na " -"ohniskovú vzdialenosÅ¥ fotoaparátu s 35 mm filmom." - -#: src/tags.cpp:1660 -msgid "" -"This tag indicates the location and area of the main subject in the overall " -"scene." -msgstr "" -"Táto znaÄka oznaÄuje polohu a plochu hlavného subjektu v celkovej scéne." - -#: src/tags.cpp:1663 -msgid "Maker Note" -msgstr "Poznámka výrobcu" - -#: src/tags.cpp:1664 -msgid "" -"A tag for manufacturers of Exif writers to record any desired information. " -"The contents are up to the manufacturer." -msgstr "" -"ZnaÄka pre výrobcov zariadení zapisujúcich EXIF informácie pre uloženie " -"akejkoľvek potrebnej informácie. Obsah je na výrobcovi." - -#: src/tags.cpp:1668 -msgid "" -"A tag for Exif users to write keywords or comments on the image besides " -"those in , and without the character code limitations of " -"the tag." -msgstr "" - -#: src/tags.cpp:1672 -#, fuzzy -msgid "Sub-seconds Time" -msgstr "Pôvodný Äas - zlomky sekundy" - -#: src/tags.cpp:1673 -msgid "A tag used to record fractions of seconds for the tag." -msgstr "ZnaÄka, ktorá sa používa na záznam zlomkov sekundy znaÄky ." - -#: src/tags.cpp:1675 -msgid "Sub-seconds Time Original" -msgstr "Pôvodný Äas - zlomky sekundy" - -#: src/tags.cpp:1676 -msgid "" -"A tag used to record fractions of seconds for the tag." -msgstr "" -"ZnaÄka, ktorá sa používa na záznam zlomkov sekundy znaÄky ." - -#: src/tags.cpp:1678 -msgid "Sub-seconds Time Digitized" -msgstr "ÄŒas digitalizácie - zlomky sekundy" - -#: src/tags.cpp:1679 -msgid "" -"A tag used to record fractions of seconds for the tag." -msgstr "" -"ZnaÄka, ktorá sa používa na záznam zlomkov sekundy znaÄky " -"." - -#: src/tags.cpp:1681 -msgid "FlashPix Version" -msgstr "Verzia FlashPix" - -#: src/tags.cpp:1682 -msgid "The FlashPix format version supported by a FPXR file." -msgstr "Verzia FlashPix formátu podporovaná FPXR súborom." - -#: src/tags.cpp:1685 -msgid "" -"The color space information tag is always recorded as the color space " -"specifier. Normally sRGB is used to define the color space based on the PC " -"monitor conditions and environment. If a color space other than sRGB is " -"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " -"treated as sRGB when it is converted to FlashPix." -msgstr "" -"ZnaÄka informácie o farebnom priestore je vždy zaznamenaná ako Å¡pecifikátor " -"farebného priestoru. Normálne sa na definíciu farebného priestoru používa " -"sRGB (=1) na základe podmienok a prostredia PC monitora. Ak je použitý iný " -"farebný priestor ako sRGB, nastaví sa Nekalibrovaný (=FFFF.H). S obrazovými " -"údajmi zaznamenanými ako Nekalibrované je možné pracovaÅ¥ ako s sRGB keÄ sa " -"skonvertujú na FlashPix." - -#: src/tags.cpp:1694 -msgid "" -"Information specific to compressed data. When a compressed file is recorded, " -"the valid width of the meaningful image must be recorded in this tag, " -"whether or not there is padding data or a restart marker. This tag should " -"not exist in an uncompressed file." -msgstr "" -"Informácia Å¡pecifická komprimovaným dátam. KeÄ sa zaznamená komprimovaný " -"súbor, platná šírka zmysluplného obrázka sa musí zaznamenaÅ¥ do tejto znaÄky, " -"Äi je alebo nie je prítomná výplň alebo znaÄka reÅ¡tart. Táto znaÄka by " -"nemala existovaÅ¥ v nekomprimovanom súbore." - -#: src/tags.cpp:1701 -msgid "" -"Information specific to compressed data. When a compressed file is recorded, " -"the valid height of the meaningful image must be recorded in this tag, " -"whether or not there is padding data or a restart marker. This tag should " -"not exist in an uncompressed file. Since data padding is unnecessary in the " -"vertical direction, the number of lines recorded in this valid image height " -"tag will in fact be the same as that recorded in the SOF." -msgstr "" -"Informácia Å¡pecifická komprimovaným dátam. KeÄ sa zaznamená komprimovaný " -"súbor, platná výška zmysluplného obrázka sa musí zaznamenaÅ¥ do tejto znaÄky, " -"Äi je alebo nie je prítomná výplň alebo znaÄka reÅ¡tart. Táto znaÄka by " -"nemala existovaÅ¥ v nekomprimovanom súbore. KeÄže nie je potrebné dopĺňaÅ¥ " -"údaje v zvislom smere, poÄet riadkov zaznamenaných v tejto znaÄke platnej " -"výšky obrázka bude v skutoÄnosti rovnaký ako v SOF." - -#: src/tags.cpp:1710 -msgid "" -"This tag is used to record the name of an audio file related to the image " -"data. The only relational information recorded here is the Exif audio file " -"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " -"characters). The path is not recorded." -msgstr "" - -#: src/tags.cpp:1716 -msgid "Interoperability IFD Pointer" -msgstr "IFD ukazovateľ interoperability" - -#: src/tags.cpp:1717 -msgid "" -"Interoperability IFD is composed of tags which stores the information to " -"ensure the Interoperability and pointed by the following tag located in Exif " -"IFD. The Interoperability structure of Interoperability IFD is the same as " -"TIFF defined IFD structure but does not contain the image data " -"characteristically compared with normal TIFF IFD." -msgstr "" -"IFD interoperability sa skladá zo znaÄiek ukladajúcich informácie na " -"zaistenie interoperability a ukazuje naň nasledujúci znaÄku nachádzajúcu sa " -"v Exif IFD. Å truktúra IFD interoperability je rovnaká ako IFD Å¡truktúra " -"definovaná v TIFF, ale neobsahuje obrazové údaje charakteristicky porovnané " -"s normálnym TIFF IFD." - -#: src/tags.cpp:1725 -msgid "" -"Indicates the strobe energy at the time the image is captured, as measured " -"in Beam Candle Power Seconds (BCPS)." -msgstr "" -"OznaÄuje energiu elektronického dosvietenia v Äase zachytenia obrázka meranú " -"v Beam Candle Power Seconds (BCPS)." - -#: src/tags.cpp:1729 -msgid "" -"This tag records the camera or input device spatial frequency table and SFR " -"values in the direction of image width, image height, and diagonal " -"direction, as specified in ISO 12233." -msgstr "" -"Táto znaÄka zaznamenáva tabuľku priestorovej frekvenÄnej odozvy zariadenia a " -"hodnoty PFO v smere šírky obrázka a v diagonálnom smere podľa Å¡pecifikácie " -"ISO 12233." - -# exif-focalplanexresolution -#: src/tags.cpp:1733 -msgid "Focal Plane X-Resolution" -msgstr "horizontálne rozlíšenie ohniskovej roviny" - -#: src/tags.cpp:1734 -msgid "" -"Indicates the number of pixels in the image width (X) direction per " -" on the camera focal plane." -msgstr "" -"Táto znaÄka oznaÄuje poÄet pixelov šírky obrázka (X) na " -" v ohniskovej rovine fotoaparátu." - -# exif-focalplanexresolution -#: src/tags.cpp:1737 -msgid "Focal Plane Y-Resolution" -msgstr "horizontálne rozlíšenie ohniskovej roviny" - -#: src/tags.cpp:1738 -msgid "" -"Indicates the number of pixels in the image height (V) direction per " -" on the camera focal plane." -msgstr "" -"Táto znaÄka oznaÄuje poÄet pixelov výšky obrázka (Y) na " -" v ohniskovej rovine fotoaparátu." - -#: src/tags.cpp:1742 -msgid "" -"Indicates the unit for measuring and " -". This value is the same as the ." -msgstr "" -"Táto znaÄka oznaÄuje jednotky, v ktorých je merané a " -". Táto hodnota je rovnaká ako ." - -#: src/tags.cpp:1746 -msgid "" -"Indicates the location of the main subject in the scene. The value of this " -"tag represents the pixel at the center of the main subject relative to the " -"left edge, prior to rotation processing as per the tag. The first " -"value indicates the X column number and second indicates the Y row number." -msgstr "" -"Táto znaÄka oznaÄuje umiestnenie hlavného subjektu na scéne. Hodnota tejto " -"znaÄky predstavuje pixel v strede hlavného subjektu vzhľadom na ľavý okraj, " -"pred procesom rotácie podľa znaÄky . Prvá hodnota oznaÄuje Äíslo X " -"stĺpca a druhá oznaÄuje Äíslo Y riadka." - -#: src/tags.cpp:1752 -msgid "Exposure index" -msgstr "ExpoziÄný index" - -#: src/tags.cpp:1753 -msgid "" -"Indicates the exposure index selected on the camera or input device at the " -"time the image is captured." -msgstr "" -"Táto znaÄka oznaÄuje expoziÄný index zvolený na fotoaparáte alebo vstupnom " -"zariadení v Äase zachytenia obrázka." - -#: src/tags.cpp:1757 -msgid "Indicates the image sensor type on the camera or input device." -msgstr "" -"Táto znaÄka oznaÄuje typ obrazového snímaÄa vstupného fotoaparátu alebo " -"vstupného zariadenia." - -#: src/tags.cpp:1760 -msgid "" -"Indicates the image source. If a DSC recorded the image, this tag value of " -"this tag always be set to 3, indicating that the image was recorded on a DSC." -msgstr "" -"Táto znaÄka oznaÄuje zdroj obrázka. Ak obrázok zaznamenal DSC, táto znaÄka " -"musí byÅ¥ vždy nastavená na 3, Äo znaÄí, že obrázok bol nahraný na DSC." - -#: src/tags.cpp:1765 -msgid "" -"Indicates the type of scene. If a DSC recorded the image, this tag value " -"must always be set to 1, indicating that the image was directly photographed." -msgstr "" -"Táto znaÄka oznaÄuje typ scény. Ak obrázok zaznamenal DSC, táto znaÄka musí " -"byÅ¥ vždy nastavená na 1, Äo znaÄí, že obrázok bol priamo odfotografovaný." - -#: src/tags.cpp:1769 -#, fuzzy -msgid "Color Filter Array Pattern" -msgstr "Farebný filter" - -#: src/tags.cpp:1770 -msgid "" -"Indicates the color filter array (CFA) geometric pattern of the image sensor " -"when a one-chip color area sensor is used. It does not apply to all sensing " -"methods." -msgstr "" -"OznaÄuje geometrickú vzorku poľa farebného filtra (CFA) obrazového snímaÄa " -"pri použití jednoÄipového farebného snímaÄa oblasti. NevzÅ¥ahuje sa na vÅ¡etky " -"metódy snímania." - -#: src/tags.cpp:1775 -msgid "" -"This tag indicates the use of special processing on image data, such as " -"rendering geared to output. When special processing is performed, the reader " -"is expected to disable or minimize any further processing." -msgstr "" -"Táto znaÄka oznaÄuje použitie Å¡peciálneho spracovania obrazových dát ako " -"spracovanie zamerané na výstup. Po vykonaní Å¡peciálneho spracovania sa od " -"Äítacieho zariadenia oÄakáva, že vypne alebo minimalizuje akékoľvek ÄalÅ¡ie " -"spracovanie." - -#: src/tags.cpp:1781 -msgid "" -"This tag indicates the exposure mode set when the image was shot. In auto-" -"bracketing mode, the camera shoots a series of frames of the same scene at " -"different exposure settings." -msgstr "" -"Táto znaÄka oznaÄuje aký expoziÄný režim bol zvolený pri odfotení obrázka. V " -"režime viacnásobných snímok so zmenou expozície fotoaparát nafotí sériu " -"snímok rovnakej scény pri rozliÄných nastaveniach expozície." - -#: src/tags.cpp:1786 -msgid "This tag indicates the white balance mode set when the image was shot." -msgstr "" -"Táto znaÄka oznaÄuje aký režim vyváženia bielej bol zvolený pri odfotení " -"obrázka." - -#: src/tags.cpp:1789 -msgid "" -"This tag indicates the digital zoom ratio when the image was shot. If the " -"numerator of the recorded value is 0, this indicates that digital zoom was " -"not used." -msgstr "" -"Táto znaÄka oznaÄuje pomer digitálneho priblíženia v Äase zachytenia snímky. " -"Ak je zaznamenaná hodnota 0, nebolo použité digitálne priblíženie." - -#: src/tags.cpp:1794 -msgid "" -"This tag indicates the equivalent focal length assuming a 35mm film camera, " -"in mm. A value of 0 means the focal length is unknown. Note that this tag " -"differs from the tag." -msgstr "" -"Táto znaÄka oznaÄuje ohniskovú vzdialenosÅ¥ ekvivalentnú fotoaparátu s 35 mm " -"filmom. Hodnota 0 znamená, že ohnisková vzdialenosÅ¥ je neznáma. VÅ¡imnite si, " -"že táto znaÄka sa líši od znaÄky ." - -#: src/tags.cpp:1800 -msgid "" -"This tag indicates the type of scene that was shot. It can also be used to " -"record the mode in which the image was shot. Note that this differs from the " -" tag." -msgstr "" -"Táto znaÄka oznaÄuje typ zachytenej scény. Tiež je možné ho použiÅ¥ na " -"zaznamenanie režimu, v ktorom bol obrázok odfotený. VÅ¡imnite si, že táto " -"znaÄka sa líši od znaÄky ." - -#: src/tags.cpp:1805 -msgid "This tag indicates the degree of overall image gain adjustment." -msgstr "Táto znaÄka oznaÄuje stupeň celkového zosilnenia obrazu." - -#: src/tags.cpp:1808 -msgid "" -"This tag indicates the direction of contrast processing applied by the " -"camera when the image was shot." -msgstr "" -"Táto znaÄka oznaÄuje smer spracovania kontrastu, ktorý použil fotoaparát pri " -"zachytení obrázka." - -#: src/tags.cpp:1812 -msgid "" -"This tag indicates the direction of saturation processing applied by the " -"camera when the image was shot." -msgstr "" -"Táto znaÄka oznaÄuje smer spracovania sýtosti, ktorý použil fotoaparát pri " -"zachytení obrázka." - -#: src/tags.cpp:1816 -msgid "" -"This tag indicates the direction of sharpness processing applied by the " -"camera when the image was shot." -msgstr "" -"Táto znaÄka oznaÄuje smer spracovania ostrosti, ktorý použil fotoaparát pri " -"zachytení obrázka." - -#: src/tags.cpp:1820 -msgid "" -"This tag indicates information on the picture-taking conditions of a " -"particular camera model. The tag is used only to indicate the picture-taking " -"conditions in the reader." -msgstr "" -"Táto znaÄka oznaÄuje informácie o podmienkach fotografovania konkrétnym " -"modelom fotoaparátu. ZnaÄka sa používa iba na oznaÄenie podmienok " -"fotografovania v Äítacom zariadení." - -#: src/tags.cpp:1825 -msgid "This tag indicates the distance to the subject." -msgstr "Táto znaÄka oznaÄuje vzdialenosÅ¥ k subjektu." - -#: src/tags.cpp:1828 -msgid "" -"This tag indicates an identifier assigned uniquely to each image. It is " -"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " -"fixed length." -msgstr "" -"Táto znaÄka oznaÄuje jedineÄný identifikátor priradený každému obrázku. Je " -"zaznamenaný ako ASCII reÅ¥azec zodpovedajúci hexadecimálnemu zápisu 128-" -"bitového Äísla." - -#: src/tags.cpp:1832 -#, fuzzy -msgid "Camera Owner Name" -msgstr "Meno vlastníka" - -#: src/tags.cpp:1833 -msgid "" -"This tag records the owner of a camera used in photography as an ASCII " -"string." -msgstr "" - -#: src/tags.cpp:1836 -#, fuzzy -msgid "Body Serial Number" -msgstr "Sériové Äíslo" - -#: src/tags.cpp:1837 -msgid "" -"This tag records the serial number of the body of the camera that was used " -"in photography as an ASCII string." -msgstr "" - -#: src/tags.cpp:1840 -#, fuzzy -msgid "Lens Specification" -msgstr "Å pecifické informácie dodávateľa" - -#: src/tags.cpp:1841 -msgid "" -"This tag notes minimum focal length, maximum focal length, minimum F number " -"in the minimum focal length, and minimum F number in the maximum focal " -"length, which are specification information for the lens that was used in " -"photography. When the minimum F number is unknown, the notation is 0/0" -msgstr "" - -#: src/tags.cpp:1847 -#, fuzzy -msgid "Lens Make" -msgstr "Model Å¡oÅ¡oviek" - -#: src/tags.cpp:1848 -msgid "This tag records the lens manufactor as an ASCII string." -msgstr "" - -#: src/tags.cpp:1851 -msgid "" -"This tag records the lens's model name and model number as an ASCII string." -msgstr "" - -#: src/tags.cpp:1855 -msgid "" -"This tag records the serial number of the interchangeable lens that was used " -"in photography as an ASCII string." -msgstr "" - -#: src/tags.cpp:1859 src/tags.cpp:1860 -msgid "Unknown Exif tag" -msgstr "Neznáma znaÄka EXIF" - -#: src/tags.cpp:1871 -msgid "North" -msgstr "Sever" - -#: src/tags.cpp:1872 -msgid "South" -msgstr "Juh" - -#: src/tags.cpp:1877 -msgid "East" -msgstr "Východ" - -#: src/tags.cpp:1878 -msgid "West" -msgstr "Západ" - -#: src/tags.cpp:1883 -msgid "Above sea level" -msgstr "nad hladinou mora" - -#: src/tags.cpp:1884 -msgid "Below sea level" -msgstr "Pod hladinou mora" - -#: src/tags.cpp:1889 -msgid "Measurement in progress" -msgstr "Prebieha meranie" - -#: src/tags.cpp:1890 -msgid "Measurement Interoperability" -msgstr "Interoperabilita merania" - -#: src/tags.cpp:1895 -msgid "Two-dimensional measurement" -msgstr "Dvojrozmerné meranie" - -#: src/tags.cpp:1896 -msgid "Three-dimensional measurement" -msgstr "Trojrozmerné meranie" - -#: src/tags.cpp:1901 -msgid "km/h" -msgstr "km/h" - -#: src/tags.cpp:1902 -msgid "mph" -msgstr "míľ za hodinu" - -#: src/tags.cpp:1903 -msgid "knots" -msgstr "uzlov" - -#: src/tags.cpp:1908 -msgid "True direction" -msgstr "SkutoÄný smer" - -#: src/tags.cpp:1909 -msgid "Magnetic direction" -msgstr "Magnetický smer" - -#: src/tags.cpp:1914 -msgid "Kilometers" -msgstr "Kilometrov" - -#: src/tags.cpp:1915 -msgid "Miles" -msgstr "Míľ" - -#: src/tags.cpp:1916 -msgid "Knots" -msgstr "Uzlov" - -#: src/tags.cpp:1921 -msgid "Without correction" -msgstr "Bez korekcie" - -#: src/tags.cpp:1922 -msgid "Correction applied" -msgstr "S korekciou" - -#: src/tags.cpp:1928 -msgid "" -"Indicates the version of . The version is given as 2.0.0.0. This " -"tag is mandatory when tag is present. (Note: The " -"tag is given in bytes, unlike the tag. When the version is " -"2.0.0.0, the tag value is 02000000.H)." -msgstr "" -"OznaÄuje verziu . Verzia sa udáva ako 2.0.0.0. Táto znaÄka je " -"povinný, ak je prítomná znaÄka . (Pozn.: ZnaÄka je " -"uvedená v bajtoch na rozdiel od znaÄky . KeÄ je verzia 2.0.0.0, " -"hodnota znaÄky je 02000000.H)." - -#: src/tags.cpp:1934 -msgid "GPS Latitude Reference" -msgstr "GPS referencia zemepisnej šírky" - -#: src/tags.cpp:1935 -msgid "" -"Indicates whether the latitude is north or south latitude. The ASCII value " -"'N' indicates north latitude, and 'S' is south latitude." -msgstr "" -"OznaÄuje, Äi je zemepisná šírka severná alebo južná šírka. ASCII hodnota „N“ " -"oznaÄuje severnú šírku a „S“ južnú šírku." - -#: src/tags.cpp:1939 -msgid "" -"Indicates the latitude. The latitude is expressed as three RATIONAL values " -"giving the degrees, minutes, and seconds, respectively. When degrees, " -"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " -"degrees and minutes are used and, for example, fractions of minutes are " -"given up to two decimal places, the format is dd/1,mmmm/100,0/1." -msgstr "" -"OznaÄuje zemepisnú šírku. Zemepisná šírka je vyjadrená tromi RACIONÃLNYMI " -"hodnotami udanými v stupňoch, minútach a sekundách. Stupne, minúty a sekundy " -"sú vyjadrené vo formáte ddd/1,mm/1,ss/1. KeÄ sú použité stupne, minúty a " -"napr. zlomky minút sú zadané na dve desatinné miesta, formát je ddd/1," -"mmmm/100,0/1." - -#: src/tags.cpp:1946 -msgid "GPS Longitude Reference" -msgstr "GPS referencia zemepisnej dĺžky" - -#: src/tags.cpp:1947 -msgid "" -"Indicates whether the longitude is east or west longitude. ASCII 'E' " -"indicates east longitude, and 'W' is west longitude." -msgstr "" -"OznaÄuje, Äi je zemepisná dĺžka východná alebo západná dĺžka. ASCII hodnota " -"„E“ oznaÄuje východnú dĺžku a „W“ západnú dĺžku." - -#: src/tags.cpp:1951 -msgid "" -"Indicates the longitude. The longitude is expressed as three RATIONAL values " -"giving the degrees, minutes, and seconds, respectively. When degrees, " -"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " -"degrees and minutes are used and, for example, fractions of minutes are " -"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." -msgstr "" -"OznaÄuje zemepisnú dĺžku. Zemepisná dĺžka je vyjadrená tromi RACIONÃLNYMI " -"hodnotami udanými v stupňoch, minútach a sekundách. Stupne, minúty a sekundy " -"sú vyjadrené vo formáte ddd/1,mm/1,ss/1. KeÄ sú použité stupne, minúty a " -"napr. zlomky minút sú zadané na dve desatinné miesta, formát je ddd/1," -"mmmm/100,0/1." - -#: src/tags.cpp:1959 -msgid "" -"Indicates the altitude used as the reference altitude. If the reference is " -"sea level and the altitude is above sea level, 0 is given. If the altitude " -"is below sea level, a value of 1 is given and the altitude is indicated as " -"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " -"that this tag is BYTE type, unlike other reference tags." -msgstr "" -"OznaÄuje nadmorskú výšku, ktorá sa použije ako referenÄná. Ak je referenÄnou " -"hodnotou úroveň hladiny mora a nadmorská výška je nad hladinou mora, udáva " -"sa 0. Ak je nadmorská výška pod hladinou mora, udáva sa hodnota 0 a " -"nadmorská výška sa uvedie ako absolútna hodnota v znaÄke GSPAltitude. " -"ReferenÄná jednotka sú metre. VÅ¡imnite si, že táto znaÄka je typu BAJT na " -"rozdiel od iných referenÄných znaÄiek." - -#: src/tags.cpp:1967 -msgid "" -"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " -"expressed as one RATIONAL value. The reference unit is meters." -msgstr "" -"OznaÄuje nadmorskú výšku na základe referenÄného GPSAltitudeRef. Nadmorská " -"výška je vyjadrená ako jedna RACIONÃLNA hodnota. ReferenÄná jednotka sú " -"metre." - -#: src/tags.cpp:1971 -msgid "" -"Indicates the time as UTC (Coordinated Universal Time). is " -"expressed as three RATIONAL values giving the hour, minute, and second " -"(atomic clock)." -msgstr "" - -#: src/tags.cpp:1976 -msgid "" -"Indicates the GPS satellites used for measurements. This tag can be used to " -"describe the number of satellites, their ID number, angle of elevation, " -"azimuth, SNR and other information in ASCII notation. The format is not " -"specified. If the GPS receiver is incapable of taking measurements, value of " -"the tag is set to NULL." -msgstr "" - -#: src/tags.cpp:1983 -msgid "" -"Indicates the status of the GPS receiver when the image is recorded. \"A\" " -"means measurement is in progress, and \"V\" means the measurement is " -"Interoperability." -msgstr "" - -#: src/tags.cpp:1988 -msgid "" -"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " -"and \"3\" means three-dimensional measurement is in progress." -msgstr "" - -#: src/tags.cpp:1991 -msgid "GPS Data Degree of Precision" -msgstr "Stupeň presnosti GPS údajov" - -#: src/tags.cpp:1992 -msgid "" -"Indicates the GPS DOP (data degree of precision). An HDOP value is written " -"during two-dimensional measurement, and PDOP during three-dimensional " -"measurement." -msgstr "" - -#: src/tags.cpp:1996 -msgid "" -"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " -"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." -msgstr "" - -#: src/tags.cpp:2000 -msgid "Indicates the speed of GPS receiver movement." -msgstr "OznaÄuje rýchlosÅ¥ pohybu GPS prijímaÄa." - -#: src/tags.cpp:2002 -msgid "GPS Track Ref" -msgstr "" - -#: src/tags.cpp:2003 -msgid "" -"Indicates the reference for giving the direction of GPS receiver movement. " -"\"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" - -#: src/tags.cpp:2007 -msgid "" -"Indicates the direction of GPS receiver movement. The range of values is " -"from 0.00 to 359.99." -msgstr "" - -#: src/tags.cpp:2011 -msgid "" -"Indicates the reference for giving the direction of the image when it is " -"captured. \"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" - -#: src/tags.cpp:2015 -msgid "" -"Indicates the direction of the image when it was captured. The range of " -"values is from 0.00 to 359.99." -msgstr "" - -#: src/tags.cpp:2019 -msgid "" -"Indicates the geodetic survey data used by the GPS receiver. If the survey " -"data is restricted to Japan, the value of this tag is \"TOKYO\" or " -"\"WGS-84\"." -msgstr "" - -#: src/tags.cpp:2022 -#, fuzzy -msgid "GPS Destination Latitude Refeference" -msgstr "GPS referencia zemepisnej šírky" - -#: src/tags.cpp:2023 -msgid "" -"Indicates whether the latitude of the destination point is north or south " -"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " -"latitude." -msgstr "" -"OznaÄuje, Äi je zemepisná šírka severná alebo južná šírka. ASCII hodnota „N“ " -"oznaÄuje severnú šírku a „S“ južnú šírku." - -#: src/tags.cpp:2027 -msgid "" -"Indicates the latitude of the destination point. The latitude is expressed " -"as three RATIONAL values giving the degrees, minutes, and seconds, " -"respectively. If latitude is expressed as degrees, minutes and seconds, a " -"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " -"and, for example, fractions of minutes are given up to two decimal places, " -"the format would be dd/1,mmmm/100,0/1." -msgstr "" -"OznaÄuje zemepisnú šírku. Zemepisná šírka je vyjadrená tromi RACIONÃLNYMI " -"hodnotami udanými v stupňoch, minútach a sekundách. Stupne, minúty a sekundy " -"sú vyjadrené vo formáte ddd/1,mm/1,ss/1. KeÄ sú použité stupne, minúty a " -"napr. zlomky minút sú zadané na dve desatinné miesta, formát je ddd/1," -"mmmm/100,0/1." - -#: src/tags.cpp:2034 -#, fuzzy -msgid "GPS Destination Longitude Reference" -msgstr "GPS referencia zemepisnej dĺžky" - -#: src/tags.cpp:2035 -msgid "" -"Indicates whether the longitude of the destination point is east or west " -"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." -msgstr "" -"OznaÄuje, Äi je zemepisná dĺžka východná alebo západná dĺžka. ASCII hodnota " -"„E“ oznaÄuje východnú dĺžku a „W“ západnú dĺžku." - -#: src/tags.cpp:2039 -msgid "" -"Indicates the longitude of the destination point. The longitude is expressed " -"as three RATIONAL values giving the degrees, minutes, and seconds, " -"respectively. If longitude is expressed as degrees, minutes and seconds, a " -"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " -"and, for example, fractions of minutes are given up to two decimal places, " -"the format would be ddd/1,mmmm/100,0/1." -msgstr "" -"OznaÄuje zemepisnú dĺžku. Zemepisná dĺžka je vyjadrená tromi RACIONÃLNYMI " -"hodnotami udanými v stupňoch, minútach a sekundách. Stupne, minúty a sekundy " -"sú vyjadrené vo formáte ddd/1,mm/1,ss/1. KeÄ sú použité stupne, minúty a " -"napr. zlomky minút sú zadané na dve desatinné miesta, formát je ddd/1," -"mmmm/100,0/1." - -#: src/tags.cpp:2046 -msgid "" -"Indicates the reference used for giving the bearing to the destination " -"point. \"T\" denotes true direction and \"M\" is magnetic direction." -msgstr "" - -#: src/tags.cpp:2050 -#, fuzzy -msgid "" -"Indicates the bearing to the destination point. The range of values is from " -"0.00 to 359.99." -msgstr "Táto znaÄka oznaÄuje vzdialenosÅ¥ k cieľovému bodu." - -#: src/tags.cpp:2053 -#, fuzzy -msgid "GPS Destination Distance Reference" -msgstr "GPS VzdialenosÅ¥ cieľa" - -#: src/tags.cpp:2054 -msgid "" -"Indicates the unit used to express the distance to the destination point. \"K" -"\", \"M\" and \"N\" represent kilometers, miles and knots." -msgstr "" - -#: src/tags.cpp:2058 -msgid "Indicates the distance to the destination point." -msgstr "Táto znaÄka oznaÄuje vzdialenosÅ¥ k cieľovému bodu." - -#: src/tags.cpp:2061 -msgid "" -"A character string recording the name of the method used for location " -"finding. The first byte indicates the character code used, and this is " -"followed by the name of the method." -msgstr "" - -#: src/tags.cpp:2066 -msgid "" -"A character string recording the name of the GPS area. The first byte " -"indicates the character code used, and this is followed by the name of the " -"GPS area." -msgstr "" - -#: src/tags.cpp:2069 -#, fuzzy -msgid "GPS Date Stamp" -msgstr "Dátum odoslania" - -#: src/tags.cpp:2070 -msgid "" -"A character string recording date and time information relative to UTC " -"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." -msgstr "" - -#: src/tags.cpp:2074 -msgid "" -"Indicates whether differential correction is applied to the GPS receiver." -msgstr "" - -#: src/tags.cpp:2077 src/tags.cpp:2078 -msgid "Unknown GPSInfo tag" -msgstr "Neznáma znaÄka GPSInfo" - -#: src/tags.cpp:2089 -msgid "Interoperability Index" -msgstr "Index interoperability" - -#: src/tags.cpp:2090 -msgid "" -"Indicates the identification of the Interoperability rule. Use \"R98\" for " -"stating ExifR98 Rules. Four bytes used including the termination code " -"(NULL). see the separate volume of Recommended Exif Interoperability Rules " -"(ExifR98) for other tags used for ExifR98." -msgstr "" -"OznaÄuje identifikáciu Pravidla interoperability. Použite \"R98\" pre " -"vyhlásenie pravidiel ExifR98. Použité Å¡tyri bajty vrátane ukonÄovacieho " -"znaku (NULL). ÄŽalÅ¡ie znaÄky použité v ExifR98 nájdete v samostatnom zväzku " -"Recommended Exif Interoperability Rules (ExifR98)." - -#: src/tags.cpp:2096 -msgid "Interoperability Version" -msgstr "Verzia interoperability" - -#: src/tags.cpp:2097 -msgid "Interoperability version" -msgstr "Verzia interoperability" - -#: src/tags.cpp:2099 -msgid "Related Image File Format" -msgstr "Súvisiaci formát súboru obrázka" - -#: src/tags.cpp:2100 -msgid "File format of image file" -msgstr "Formát súboru s obrázkom" - -#: src/tags.cpp:2102 -msgid "Related Image Width" -msgstr "Šírka súvisiaceho obrázka" - -#: src/tags.cpp:2105 -msgid "Related Image Length" -msgstr "Dĺžka súvisiaceho obrázka" - -#: src/tags.cpp:2109 src/tags.cpp:2110 -msgid "Unknown Exif Interoperability tag" -msgstr "Neznáma EXIF znaÄka Interoperability" - -#: src/tags.cpp:2121 -msgid "Offset" -msgstr "Ofset" - -#: src/tags.cpp:2122 -msgid "Offset of the makernote from the start of the TIFF header." -msgstr "" - -#: src/tags.cpp:2124 -msgid "Byte Order" -msgstr "Endianita" - -#: src/tags.cpp:2125 -msgid "" -"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" -"endian)." -msgstr "" - -#: src/tags.cpp:2128 src/tags.cpp:2129 -msgid "Unknown Exiv2 Makernote info tag" -msgstr "Neznáma znaÄka Exiv2 MakerNote" - -#: src/tags.cpp:2139 src/tags.cpp:2140 -msgid "Unknown tag" -msgstr "Neznáma znaÄka" - -#: src/tags.cpp:2662 -msgid "Digital zoom not used" -msgstr "Digitálne priblíženie nebolo použité" - -#: src/tiffimage.cpp:2034 -msgid "TIFF header, offset" -msgstr "HlaviÄka TIFF, ofset" - -#: src/tiffimage.cpp:2039 -msgid "little endian encoded" -msgstr "" - -#: src/tiffimage.cpp:2040 -msgid "big endian encoded" -msgstr "" - -#~ msgid "Software firmware version" -#~ msgstr "Verzia formvéru" - -#, fuzzy -#~ msgid "White Balance Bracketing " -#~ msgstr "Viacnásobné snímky so zmenou vyváženia bielej" - -#~ msgid "(Unknown Error)" -#~ msgstr "(Neznáma chyba)" - -#~ msgid "Exposure Speed" -#~ msgstr "RýchlosÅ¥ expozície" - -#~ msgid "Exposure speed" -#~ msgstr "RýchlosÅ¥ expozície" - -#~ msgid "Color balance settings 1" -#~ msgstr "Nastavenie vyváženia farieb 1" - -#~ msgid "Compression Curve" -#~ msgstr "Kompresná krivka" - -#~ msgid "Compression curve" -#~ msgstr "Kompresná krivka" - -#~ msgid "Color balance settings 2" -#~ msgstr "Nastavenie vyváženia farieb 2" - -#~ msgid "Dynamic area (wide" -#~ msgstr "Dynamická oblasÅ¥ (Å¡iroká)" - -#~ msgid "On for ISO 1600/3200" -#~ msgstr "Zapnuté pre ISO 1600/3200" - -#~ msgid "ImageStabilizer" -#~ msgstr "Stabilizátor obrazu" - -#~ msgid "Image stabilizer" -#~ msgstr "Stabilizátor obrazu" - -#~ msgid "Data area" -#~ msgstr "OblasÅ¥ dát" - -#~ msgid "bytes.\n" -#~ msgstr "bajtov.\n" - -#~ msgid "directory with" -#~ msgstr "adresár s" - -#~ msgid "entry:\n" -#~ msgstr "záznam:\n" - -#~ msgid "entries:\n" -#~ msgstr "záznamy:\n" - -#~ msgid "Next directory:\n" -#~ msgstr "ÄŽalší prieÄinok:\n" - -#~ msgid "No next directory\n" -#~ msgstr "Žiadny Äalší prieÄinok\n" - -#~ msgid "Sub-IFD" -#~ msgstr "Sub-IFD" - -#~ msgid "Makernote" -#~ msgstr "Poznámky zhotoviteľa" - -#~ msgid "component" -#~ msgstr "komponent" - -#~ msgid "NEF Thumbnail Size" -#~ msgstr "VeľkosÅ¥ náhľadu NEF" - -#~ msgid "NEF thumbnail size" -#~ msgstr "VeľkosÅ¥ náhľadu NEF" - -#~ msgid "Erasing" -#~ msgstr "Maže sa" - -#~ msgid "MakerTagInfo registry full" -#~ msgstr "Register MakerTagInfo je plný" - -#~ msgid "Failed to create Makernote for ifdId %1" -#~ msgstr "Nepodarilo sa vytvoriÅ¥ Poznámku výrobcu pre ifdId %1" - -#~ msgid "IFD Entries" -#~ msgstr "IFD vstupy" - -#~ msgid "Next IFD" -#~ msgstr "ÄŽalší IFD" - -#~ msgid "Data of entry" -#~ msgstr "Dáta vstupu" - -#~ msgid "Writing XMP packet from" -#~ msgstr "Zapisuje sa XMP paket z" - -#~ msgid "Failed to open file " -#~ msgstr "Nepodarilo sa otvoriÅ¥ súbor" - -#~ msgid "uncalibrated" -#~ msgstr "nekalibrované" - -#~ msgid "does not exist" -#~ msgstr "neexistuje" - -#~ msgid "not defined" -#~ msgstr "nedefinované" - -#~ msgid "Normal program" -#~ msgstr "Bežný program" - -#~ msgid "unknown" -#~ msgstr "neznámy" - -#~ msgid "other" -#~ msgstr "iný" - -#~ msgid "centimeters" -#~ msgstr "centimetrov" diff --git a/platform/win32/msvc/external/exiv2/po/stamp-po b/platform/win32/msvc/external/exiv2/po/stamp-po deleted file mode 100644 index 9788f70238c..00000000000 --- a/platform/win32/msvc/external/exiv2/po/stamp-po +++ /dev/null @@ -1 +0,0 @@ -timestamp diff --git a/platform/win32/msvc/external/exiv2/samples/addmoddel.cpp b/platform/win32/msvc/external/exiv2/samples/addmoddel.cpp deleted file mode 100644 index 8a6bbbbd59c..00000000000 --- a/platform/win32/msvc/external/exiv2/samples/addmoddel.cpp +++ /dev/null @@ -1,109 +0,0 @@ -// ***************************************************************** -*- C++ -*- -// addmoddel.cpp, $Rev: 2286 $ -// Sample program showing how to add, modify and delete Exif metadata. - -#include - -#include -#include -#include - -int main(int argc, char* const argv[]) -try { - if (argc != 2) { - std::cout << "Usage: " << argv[0] << " file\n"; - return 1; - } - std::string file(argv[1]); - - // Container for exif metadata. This is an example of creating - // exif metadata from scratch. If you want to add, modify, delete - // metadata that exists in an image, start with ImageFactory::open - Exiv2::ExifData exifData; - - // ************************************************************************* - // Add to the Exif data - - // This is the quickest way to add (simple) Exif data. If a metadatum for - // a given key already exists, its value is overwritten. Otherwise a new - // tag is added. - exifData["Exif.Image.Model"] = "Test 1"; // AsciiValue - exifData["Exif.Image.SamplesPerPixel"] = uint16_t(162); // UShortValue - exifData["Exif.Image.XResolution"] = int32_t(-2); // LongValue - exifData["Exif.Image.YResolution"] = Exiv2::Rational(-2, 3); // RationalValue - std::cout << "Added a few tags the quick way.\n"; - - // Create a ASCII string value (note the use of create) - Exiv2::Value::AutoPtr v = Exiv2::Value::create(Exiv2::asciiString); - // Set the value to a string - v->read("1999:12:31 23:59:59"); - // Add the value together with its key to the Exif data container - Exiv2::ExifKey key("Exif.Photo.DateTimeOriginal"); - exifData.add(key, v.get()); - std::cout << "Added key \"" << key << "\", value \"" << *v << "\"\n"; - - // Now create a more interesting value (without using the create method) - Exiv2::URationalValue::AutoPtr rv(new Exiv2::URationalValue); - // Set two rational components from a string - rv->read("1/2 1/3"); - // Add more elements through the extended interface of rational value - rv->value_.push_back(std::make_pair(2,3)); - rv->value_.push_back(std::make_pair(3,4)); - // Add the key and value pair to the Exif data - key = Exiv2::ExifKey("Exif.Image.PrimaryChromaticities"); - exifData.add(key, rv.get()); - std::cout << "Added key \"" << key << "\", value \"" << *rv << "\"\n"; - - // ************************************************************************* - // Modify Exif data - - // Since we know that the metadatum exists (or we don't mind creating a new - // tag if it doesn't), we can simply do this: - Exiv2::Exifdatum& tag = exifData["Exif.Photo.DateTimeOriginal"]; - std::string date = tag.toString(); - date.replace(0, 4, "2000"); - tag.setValue(date); - std::cout << "Modified key \"" << key - << "\", new value \"" << tag.value() << "\"\n"; - - // Alternatively, we can use findKey() - key = Exiv2::ExifKey("Exif.Image.PrimaryChromaticities"); - Exiv2::ExifData::iterator pos = exifData.findKey(key); - if (pos == exifData.end()) throw Exiv2::Error(1, "Key not found"); - // Get a pointer to a copy of the value - v = pos->getValue(); - // Downcast the Value pointer to its actual type - Exiv2::URationalValue* prv = dynamic_cast(v.release()); - if (prv == 0) throw Exiv2::Error(1, "Downcast failed"); - rv = Exiv2::URationalValue::AutoPtr(prv); - // Modify the value directly through the interface of URationalValue - rv->value_[2] = std::make_pair(88,77); - // Copy the modified value back to the metadatum - pos->setValue(rv.get()); - std::cout << "Modified key \"" << key - << "\", new value \"" << pos->value() << "\"\n"; - - // ************************************************************************* - // Delete metadata from the Exif data container - - // Delete the metadatum at iterator position pos - key = Exiv2::ExifKey("Exif.Image.PrimaryChromaticities"); - pos = exifData.findKey(key); - if (pos == exifData.end()) throw Exiv2::Error(1, "Key not found"); - exifData.erase(pos); - std::cout << "Deleted key \"" << key << "\"\n"; - - // ************************************************************************* - // Finally, write the remaining Exif data to the image file - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file); - assert(image.get() != 0); - - image->setExifData(exifData); - image->writeMetadata(); - - return 0; -} -catch (Exiv2::AnyError& e) { - std::cout << "Caught Exiv2 exception '" << e << "'\n"; - return -1; -} diff --git a/platform/win32/msvc/external/exiv2/samples/convert-test.cpp b/platform/win32/msvc/external/exiv2/samples/convert-test.cpp deleted file mode 100644 index bab44289d97..00000000000 --- a/platform/win32/msvc/external/exiv2/samples/convert-test.cpp +++ /dev/null @@ -1,37 +0,0 @@ -// ***************************************************************** -*- C++ -*- -// convert-test.cpp, $Rev: 2286 $ -// Conversion test driver - make sure you have a copy of the input file around! - -#include - -#include -#include -#include - -int main(int argc, char* const argv[]) -try { - if (argc != 2) { - std::cout << "Usage: " << argv[0] << " file\n"; - return 1; - } - - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(argv[1]); - assert(image.get() != 0); - image->readMetadata(); - - Exiv2::XmpData xmpData; - Exiv2::copyExifToXmp(image->exifData(), xmpData); - - Exiv2::ExifData exifData; - Exiv2::copyXmpToExif(xmpData, exifData); - - image->setXmpData(xmpData); - image->setExifData(exifData); - image->writeMetadata(); - - return 0; -} -catch (Exiv2::AnyError& e) { - std::cout << "Caught Exiv2 exception '" << e << "'\n"; - return -1; -} diff --git a/platform/win32/msvc/external/exiv2/samples/easyaccess-test.cpp b/platform/win32/msvc/external/exiv2/samples/easyaccess-test.cpp deleted file mode 100644 index 55dc6cced87..00000000000 --- a/platform/win32/msvc/external/exiv2/samples/easyaccess-test.cpp +++ /dev/null @@ -1,73 +0,0 @@ -// ***************************************************************** -*- C++ -*- -// easyaccess-test.cpp, $Rev: 2380 $ -// Sample program using high-level metadata access functions - -// included header files -#include - -#include -#include -#include - -typedef Exiv2::ExifData::const_iterator (*EasyAccessFct)(const Exiv2::ExifData& ed); - -struct EasyAccess { - const char* label_; - EasyAccessFct findFct_; -}; - -static const EasyAccess easyAccess[] = { - { "Orientation", Exiv2::orientation }, - { "ISO speed", Exiv2::isoSpeed }, - { "Flash bias", Exiv2::flashBias }, - { "Exposure mode", Exiv2::exposureMode }, - { "Scene mode", Exiv2::sceneMode }, - { "Macro mode", Exiv2::macroMode }, - { "Image quality", Exiv2::imageQuality }, - { "White balance", Exiv2::whiteBalance }, - { "Lens name", Exiv2::lensName }, - { "Saturation", Exiv2::saturation }, - { "Sharpness", Exiv2::sharpness }, - { "Contrast", Exiv2::contrast }, - { "Scene capture type", Exiv2::sceneCaptureType }, - { "Metering mode", Exiv2::meteringMode }, - { "Camera make", Exiv2::make }, - { "Camera model", Exiv2::model }, - { "Exposure time", Exiv2::exposureTime }, - { "FNumber", Exiv2::fNumber }, - { "Subject distance", Exiv2::subjectDistance }, - { "Camera serial number", Exiv2::serialNumber }, - { "Focal length", Exiv2::focalLength }, - { "AF point", Exiv2::afPoint } -}; - -int main(int argc, char **argv) -try { - if (argc != 2) { - std::cout << "Usage: " << argv[0] << " file\n"; - return 1; - } - - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(argv[1]); - assert (image.get() != 0); - image->readMetadata(); - Exiv2::ExifData& ed = image->exifData(); - - for (unsigned int i = 0; i < EXV_COUNTOF(easyAccess); ++i) { - Exiv2::ExifData::const_iterator pos = easyAccess[i].findFct_(ed); - std::cout << std::setw(20) << std::left << easyAccess[i].label_; - if (pos != ed.end()) { - std::cout << " (" << std::setw(35) << pos->key() << ") : " - << pos->print(&ed) << "\n"; - } - else { - std::cout << " (" << std::setw(35) << " " << ") : \n"; - } - } - - return 0; -} -catch (Exiv2::AnyError& e) { - std::cout << "Caught Exiv2 exception '" << e << "'\n"; - return -1; -} diff --git a/platform/win32/msvc/external/exiv2/samples/exifcomment.cpp b/platform/win32/msvc/external/exiv2/samples/exifcomment.cpp deleted file mode 100644 index 0f95a287b90..00000000000 --- a/platform/win32/msvc/external/exiv2/samples/exifcomment.cpp +++ /dev/null @@ -1,66 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - Abstract : Sample program showing how to set the Exif comment of an image, - Exif.Photo.UserComment - - File: exifcomment.cpp - Version : $Rev: 2286 $ - Author(s): Andreas Huggel (ahu) - History : 10-May-04, ahu: created - 16-Jan-05, ahu: updated using CommentValue and operator trickery - */ -// ***************************************************************************** -// included header files -#include - -#include -#include - -// ***************************************************************************** -// Main -int main(int argc, char* const argv[]) -try { - - if (argc != 2) { - std::cout << "Usage: " << argv[0] << " file\n"; - return 1; - } - - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(argv[1]); - assert (image.get() != 0); - image->readMetadata(); - Exiv2::ExifData &exifData = image->exifData(); - - /* - Exiv2 uses a CommentValue for Exif user comments. The format of the - comment string includes an optional charset specification at the beginning: - - [charset=["]Ascii|Jis|Unicode|Undefined["] ]comment - - Undefined is used as a default if the comment doesn't start with a charset - definition. - - Following are a few examples of valid comments. The last one is written to - the file. - */ - exifData["Exif.Photo.UserComment"] - = "charset=\"Unicode\" An Unicode Exif comment added with Exiv2"; - exifData["Exif.Photo.UserComment"] - = "charset=\"Undefined\" An undefined Exif comment added with Exiv2"; - exifData["Exif.Photo.UserComment"] - = "Another undefined Exif comment added with Exiv2"; - exifData["Exif.Photo.UserComment"] - = "charset=Ascii An ASCII Exif comment added with Exiv2"; - - std::cout << "Writing user comment '" - << exifData["Exif.Photo.UserComment"] - << "' back to the image\n"; - - image->writeMetadata(); - - return 0; -} -catch (Exiv2::AnyError& e) { - std::cout << "Caught Exiv2 exception '" << e << "'\n"; - return -1; -} diff --git a/platform/win32/msvc/external/exiv2/samples/exifdata-test.cpp b/platform/win32/msvc/external/exiv2/samples/exifdata-test.cpp deleted file mode 100644 index c5d86c90298..00000000000 --- a/platform/win32/msvc/external/exiv2/samples/exifdata-test.cpp +++ /dev/null @@ -1,136 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - Abstract : ExifData assignment and copy construction unit tests - - File : exifdata-test.cpp - Version : $Rev: 2286 $ - Author(s): Andreas Huggel (ahu) - History : 20-Feb-05, ahu: created - - */ -// ***************************************************************************** -// included header files -#include - -#include -#include -#include -#include - -void write(const std::string& file, Exiv2::ExifData& ed); -void print(const std::string& file); - -// ***************************************************************************** -// Main -int main(int argc, char* const argv[]) -{ -try { - if (argc != 2) { - std::cout << "Usage: " << argv[0] << " file\n"; - return 1; - } - std::string file(argv[1]); - - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file); - assert (image.get() != 0); - image->readMetadata(); - - Exiv2::ExifData &ed = image->exifData(); - if (ed.empty()) { - std::string error = file + ": No Exif data found in the file"; - throw Exiv2::Error(1, error); - } - - std::cout << "Copy construction, non-intrusive changes\n"; - Exiv2::ExifData ed1(ed); - ed1["Exif.Image.DateTime"] = "Sunday, 11am"; - ed1["Exif.Image.Orientation"] = uint16_t(2); - ed1["Exif.Photo.DateTimeOriginal"] = "Sunday, 11am"; - ed1["Exif.Photo.MeteringMode"] = uint16_t(1); - ed1["Exif.Iop.InteroperabilityIndex"] = "123"; -// ed1["Exif.Thumbnail.Orientation"] = uint16_t(2); - write(file, ed1); - print(file); - std::cout << "----------------------------------------------\n"; - - std::cout << "Copy construction, intrusive changes\n"; - Exiv2::ExifData ed2(ed); - ed2["Exif.Image.DateTime"] = "Sunday, 11am and ten minutes"; - ed2["Exif.Image.Orientation"] = "2 3 4 5"; - ed2["Exif.Photo.DateTimeOriginal"] = "Sunday, 11am and ten minutes"; - ed2["Exif.Photo.MeteringMode"] = "1 2 3 4 5 6"; - ed2["Exif.Iop.InteroperabilityIndex"] = "1234"; - ed2["Exif.Thumbnail.Orientation"] = "2 3 4 5 6"; - write(file, ed2); - print(file); - std::cout << "----------------------------------------------\n"; - - std::cout << "Assignment, non-intrusive changes\n"; - Exiv2::ExifData ed3; - ed3["Exif.Iop.InteroperabilityVersion"] = "Test 6 Iop tag"; - ed3["Exif.Thumbnail.Artist"] = "Test 6 Ifd1 tag"; - ed3 = ed; - ed3["Exif.Image.DateTime"] = "Sunday, 11am"; - ed3["Exif.Image.Orientation"] = uint16_t(2); - ed3["Exif.Photo.DateTimeOriginal"] = "Sunday, 11am"; - ed3["Exif.Photo.MeteringMode"] = uint16_t(1); - ed3["Exif.Iop.InteroperabilityIndex"] = "123"; - ed3["Exif.Thumbnail.Orientation"] = uint16_t(2); - write(file, ed3); - print(file); - std::cout << "----------------------------------------------\n"; - - std::cout << "Assignment, intrusive changes\n"; - Exiv2::ExifData ed4; - ed4["Exif.Iop.InteroperabilityVersion"] = "Test 6 Iop tag"; - ed4["Exif.Thumbnail.Artist"] = "Test 6 Ifd1 tag"; - ed4 = ed; - ed4["Exif.Image.DateTime"] = "Sunday, 11am and ten minutes"; - ed4["Exif.Image.Orientation"] = "2 3 4 5"; - ed4["Exif.Photo.DateTimeOriginal"] = "Sunday, 11am and ten minutes"; - ed4["Exif.Photo.MeteringMode"] = uint16_t(1); - ed4["Exif.Iop.InteroperabilityIndex"] = "123"; - ed4["Exif.Thumbnail.Orientation"] = uint16_t(2); - write(file, ed4); - print(file); - - return 0; -} -catch (Exiv2::AnyError& e) { - std::cout << "Caught Exiv2 exception '" << e << "'\n"; - return -1; -} -} - -void write(const std::string& file, Exiv2::ExifData& ed) -{ - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file); - assert (image.get() != 0); - image->setExifData(ed); - image->writeMetadata(); -} - -void print(const std::string& file) -{ - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file); - assert (image.get() != 0); - image->readMetadata(); - - Exiv2::ExifData &ed = image->exifData(); - Exiv2::ExifData::const_iterator end = ed.end(); - for (Exiv2::ExifData::const_iterator i = ed.begin(); i != end; ++i) { - std::cout << std::setw(45) << std::setfill(' ') << std::left - << i->key() << " " - << "0x" << std::setw(4) << std::setfill('0') << std::right - << std::hex << i->tag() << " " - << std::setw(12) << std::setfill(' ') << std::left - << i->ifdName() << " " - << std::setw(9) << std::setfill(' ') << std::left - << i->typeName() << " " - << std::dec << std::setw(3) - << std::setfill(' ') << std::right - << i->count() << " " - << std::dec << i->value() - << "\n"; - } -} diff --git a/platform/win32/msvc/external/exiv2/samples/exifprint.cpp b/platform/win32/msvc/external/exiv2/samples/exifprint.cpp deleted file mode 100644 index c117dfb2061..00000000000 --- a/platform/win32/msvc/external/exiv2/samples/exifprint.cpp +++ /dev/null @@ -1,52 +0,0 @@ -// ***************************************************************** -*- C++ -*- -// exifprint.cpp, $Rev: 2286 $ -// Sample program to print the Exif metadata of an image - -#include - -#include -#include -#include - -int main(int argc, char* const argv[]) -try { - - if (argc != 2) { - std::cout << "Usage: " << argv[0] << " file\n"; - return 1; - } - - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(argv[1]); - assert(image.get() != 0); - image->readMetadata(); - - Exiv2::ExifData &exifData = image->exifData(); - if (exifData.empty()) { - std::string error(argv[1]); - error += ": No Exif data found in the file"; - throw Exiv2::Error(1, error); - } - Exiv2::ExifData::const_iterator end = exifData.end(); - for (Exiv2::ExifData::const_iterator i = exifData.begin(); i != end; ++i) { - const char* tn = i->typeName(); - std::cout << std::setw(44) << std::setfill(' ') << std::left - << i->key() << " " - << "0x" << std::setw(4) << std::setfill('0') << std::right - << std::hex << i->tag() << " " - << std::setw(9) << std::setfill(' ') << std::left - << (tn ? tn : "Unknown") << " " - << std::dec << std::setw(3) - << std::setfill(' ') << std::right - << i->count() << " " - << std::dec << i->value() - << "\n"; - } - - return 0; -} -//catch (std::exception& e) { -//catch (Exiv2::AnyError& e) { -catch (Exiv2::Error& e) { - std::cout << "Caught Exiv2 exception '" << e.what() << "'\n"; - return -1; -} diff --git a/platform/win32/msvc/external/exiv2/samples/iotest.cpp b/platform/win32/msvc/external/exiv2/samples/iotest.cpp deleted file mode 100644 index 525cee32279..00000000000 --- a/platform/win32/msvc/external/exiv2/samples/iotest.cpp +++ /dev/null @@ -1,225 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - Abstract : Tester application for BasicIo functions. Tests MemIo primarily - since FileIo just sits atop of FILE* streams. - - File : iotest.cpp - Version : $Rev: 2681 $ - Author(s): Brad Schick (brad) - History : 04-Dec-04, brad: created - */ -// ***************************************************************************** -// included header files -#include - -#include // for EOF -#include -#include - -using Exiv2::byte; -using Exiv2::BasicIo; -using Exiv2::MemIo; -using Exiv2::FileIo; -using Exiv2::IoCloser; -using Exiv2::Error; -using Exiv2::strError; - -int WriteReadSeek(BasicIo &io); - -// ***************************************************************************** -// Main -int main(int argc, char* const argv[]) -{ -try { - if (argc != 4) { - std::cout << "Usage: " << argv[0] << " filein fileout1 fileout2\n"; - std::cout << "fileouts are overwritten and should match filein exactly\n"; - return 1; - } - - FileIo fileIn(argv[1]); - if (fileIn.open() != 0) { - throw Error(9, fileIn.path(), strError()); - } - - FileIo fileOut1(argv[2]); - if (fileOut1.open("w+b") != 0) { - throw Error(10, argv[2], "w+b", strError()); - } - - MemIo memIo1; - - // Copy to output file through memIo - memIo1.write(fileIn); - memIo1.seek(0, BasicIo::beg); - fileOut1.write(memIo1); - - // Make sure they are all the same size - if(fileIn.size() != memIo1.size() || memIo1.size() != fileOut1.size()) { - std::cerr << argv[0] << - ": Sizes do not match\n"; - return 1; - } - - // Read writereadseek test on MemIo - MemIo memIo2; - int rc = WriteReadSeek(memIo2); - if (rc != 0) return rc; - - // Read writereadseek test on FileIo - // Create or overwrite the file, then close it - FileIo fileTest("iotest.txt"); - if (fileTest.open("w+b") != 0) { - throw Error(10, "iotest.txt", "w+b", strError()); - } - - fileTest.close(); - rc = WriteReadSeek(fileTest); - if (rc != 0) return rc; - - // Another test of reading and writing - fileOut1.seek(0, BasicIo::beg); - memIo2.seek(0, BasicIo::beg); - FileIo fileOut2(argv[3]); - if (fileOut2.open("w+b") != 0) { - throw Error(10, argv[3], "w+b", strError()); - } - - long readCount = 0; - byte buf[32]; - while ((readCount=fileOut1.read(buf, sizeof(buf)))) { - if (memIo2.write(buf, readCount) != readCount) { - std::cerr << argv[0] << - ": MemIo bad write 2\n"; - return 13; - } - if (fileOut2.write(buf, readCount) != readCount) { - std::cerr << argv[0] << - ": FileIo bad write 2\n"; - return 14; - } - } - - return 0; -} -catch (Exiv2::AnyError& e) { - std::cerr << "Caught Exiv2 exception '" << e << "'\n"; - return 20; -} -} - - -int WriteReadSeek(BasicIo &io) -{ - byte buf[4096]; - const char tester1[] = "this is a little test of MemIo"; - const char tester2[] = "Appending this on the end"; - const char expect[] = "this is a little teAppending this on the end"; - const long insert = 19; - const long len1 = (long)std::strlen(tester1) + 1; - const long len2 = (long)std::strlen(tester2) + 1; - - if (io.open() != 0) { - throw Error(9, io.path(), strError()); - } - IoCloser closer(io); - if (io.write((byte*)tester1, len1) != len1) { - std::cerr << ": WRS initial write failed\n"; - return 2; - } - - if (io.size() != len1) { - std::cerr << ": WRS size is not " << len1 << "\n"; - return 2; - } - - io.seek(-len1, BasicIo::cur); - - int c = EOF; - std::memset(buf, -1, sizeof(buf)); - for (int i = 0; (c=io.getb()) != EOF; ++i) { - buf[i] = (byte)c; - } - - // Make sure we got the null back - if(buf[len1-1] != 0) { - std::cerr << ": WRS missing null terminator 1\n"; - return 3; - } - - if (strcmp(tester1, (char*)buf) != 0 ) { - std::cerr << ": WRS strings don't match 1\n"; - return 4; - } - - io.seek(-2, BasicIo::end); - if (io.getb() != 'o') { - std::cerr << ": WRS bad getb o\n"; - return 5; - } - - io.seek(-2, BasicIo::cur); - if (io.getb() != 'I') { - std::cerr << ": WRS bad getb I\n"; - return 6; - } - - if (io.putb('O') != 'O') { - std::cerr << ": WRS bad putb\n"; - return 7; - } - - io.seek(-1, BasicIo::cur); - if (io.getb() != 'O') { - std::cerr << ": WRS bad getb O\n"; - return 8; - } - - io.seek(insert, BasicIo::beg); - if(io.write((byte*)tester2, len2) != len2) { - std::cerr << ": WRS bad write 1\n"; - return 9; - } - - // open should seek to beginning - if (io.open() != 0) { - throw Error(9, io.path(), strError()); - } - std::memset(buf, -1, sizeof(buf)); - if (io.read(buf, sizeof(buf)) != insert + len2) { - std::cerr << ": WRS something went wrong\n"; - return 10; - } - - // Make sure we got the null back - if(buf[insert + len2 - 1] != 0) { - std::cerr << ": WRS missing null terminator 2\n"; - return 11; - } - - if (std::strcmp(expect, (char*)buf) != 0 ) { - std::cerr << ": WRS strings don't match 2\n"; - return 12; - } - - return 0; -} diff --git a/platform/win32/msvc/external/exiv2/samples/iptceasy.cpp b/platform/win32/msvc/external/exiv2/samples/iptceasy.cpp deleted file mode 100644 index f55a8c479c1..00000000000 --- a/platform/win32/msvc/external/exiv2/samples/iptceasy.cpp +++ /dev/null @@ -1,49 +0,0 @@ -// ***************************************************************** -*- C++ -*- -// iptceasy.cpp, $Rev: 2286 $ -// The quickest way to access, set or modify IPTC metadata. - -#include - -#include -#include -#include - -int main(int argc, char* const argv[]) -try { - if (argc != 2) { - std::cout << "Usage: " << argv[0] << " file\n"; - return 1; - } - std::string file(argv[1]); - - Exiv2::IptcData iptcData; - - iptcData["Iptc.Application2.Headline"] = "The headline I am"; - iptcData["Iptc.Application2.Keywords"] = "Yet another keyword"; - iptcData["Iptc.Application2.DateCreated"] = "2004-8-3"; - iptcData["Iptc.Application2.Urgency"] = uint16_t(1); - iptcData["Iptc.Envelope.ModelVersion"] = 42; - iptcData["Iptc.Envelope.TimeSent"] = "14:41:0-05:00"; - iptcData["Iptc.Application2.RasterizedCaption"] = "230 42 34 2 90 84 23 146"; - iptcData["Iptc.0x0009.0x0001"] = "Who am I?"; - - Exiv2::StringValue value; - value.read("very!"); - iptcData["Iptc.Application2.Urgency"] = value; - - std::cout << "Time sent: " << iptcData["Iptc.Envelope.TimeSent"] << "\n"; - - // Open image file - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file); - assert (image.get() != 0); - - // Set IPTC data and write it to the file - image->setIptcData(iptcData); - image->writeMetadata(); - - return 0; -} -catch (Exiv2::AnyError& e) { - std::cout << "Caught Exiv2 exception '" << e << "'\n"; - return -1; -} diff --git a/platform/win32/msvc/external/exiv2/samples/iptcprint.cpp b/platform/win32/msvc/external/exiv2/samples/iptcprint.cpp deleted file mode 100644 index 6d2858c5c7d..00000000000 --- a/platform/win32/msvc/external/exiv2/samples/iptcprint.cpp +++ /dev/null @@ -1,50 +0,0 @@ -// ***************************************************************** -*- C++ -*- -// iptcprint.cpp, $Rev: 2286 $ -// Sample program to print the IPTC metadata of an image - -#include - -#include -#include -#include - -int main(int argc, char* const argv[]) -try { - - if (argc != 2) { - std::cout << "Usage: " << argv[0] << " file\n"; - return 1; - } - - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(argv[1]); - assert (image.get() != 0); - image->readMetadata(); - - Exiv2::IptcData &iptcData = image->iptcData(); - if (iptcData.empty()) { - std::string error(argv[1]); - error += ": No IPTC data found in the file"; - throw Exiv2::Error(1, error); - } - - Exiv2::IptcData::iterator end = iptcData.end(); - for (Exiv2::IptcData::iterator md = iptcData.begin(); md != end; ++md) { - std::cout << std::setw(44) << std::setfill(' ') << std::left - << md->key() << " " - << "0x" << std::setw(4) << std::setfill('0') << std::right - << std::hex << md->tag() << " " - << std::setw(9) << std::setfill(' ') << std::left - << md->typeName() << " " - << std::dec << std::setw(3) - << std::setfill(' ') << std::right - << md->count() << " " - << std::dec << md->value() - << std::endl; - } - - return 0; -} -catch (Exiv2::AnyError& e) { - std::cout << "Caught Exiv2 exception '" << e << "'\n"; - return -1; -} diff --git a/platform/win32/msvc/external/exiv2/samples/iptctest.cpp b/platform/win32/msvc/external/exiv2/samples/iptctest.cpp deleted file mode 100644 index f0832e913ec..00000000000 --- a/platform/win32/msvc/external/exiv2/samples/iptctest.cpp +++ /dev/null @@ -1,174 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - Abstract : Sample program test the Iptc reading and writing. - This is not designed to be a robust application. - - File : iptctest.cpp - Version : $Rev: 2286 $ - Author(s): Brad Schick (brad) - History : 01-Aug-04, brad: created - */ -// ***************************************************************************** -// included header files -#include - -#include -#include -#include - -using namespace Exiv2; - -bool processLine(const std::string& line, int num, IptcData &iptcData); -void processAdd(const std::string& line, int num, IptcData &iptcData); -void processRemove(const std::string& line, int num, IptcData &iptcData); -void processModify(const std::string& line, int num, IptcData &iptcData); - -// ***************************************************************************** -// Main -int main(int argc, char* const argv[]) -{ - try { - - if (argc != 2) { - std::cout << "Usage: " << argv[0] << " image\n"; - std::cout << "Commands read from stdin.\n"; - return 1; - } - - Image::AutoPtr image = ImageFactory::open(argv[1]); - assert (image.get() != 0); - image->readMetadata(); - - // Process commands - std::string line; - int num = 0; - std::getline(std::cin, line); - while (line.length() && processLine(line, ++num, image->iptcData())) { - std::getline(std::cin, line); - } - - // Save any changes - image->writeMetadata(); - - return 0; - } - catch (AnyError& e) { - std::cout << "Caught Exiv2 exception '" << e << "'\n"; - return -1; - } -} - -bool processLine(const std::string& line, int num, IptcData &iptcData) -{ - switch (line.at(0)) { - case 'a': - case 'A': - processAdd(line, num, iptcData); - break; - case 'r': - case 'R': - processRemove(line, num, iptcData); - break; - case 'm': - case 'M': - processModify(line, num, iptcData); - break; - case 'q': - case 'Q': - return false; - default: - std::ostringstream os; - os << "Unknown command (" << line.at(0) << ") at line " << num; - throw Error(1, os.str()); - } - return true; -} - -void processAdd(const std::string& line, int num, IptcData &iptcData) -{ - std::string::size_type keyStart = line.find_first_not_of(" \t", 1); - std::string::size_type keyEnd = line.find_first_of(" \t", keyStart+1); - std::string::size_type dataStart = line.find_first_not_of(" \t", keyEnd+1); - - if (keyStart == std::string::npos || - keyEnd == std::string::npos || - dataStart == std::string::npos) { - std::ostringstream os; - os << "Invalid \'a\' command at line " << num; - throw Error(1, os.str()); - } - - std::string key(line.substr(keyStart, keyEnd-keyStart)); - IptcKey iptcKey(key); - - std::string data(line.substr(dataStart)); - // if data starts and ends with quotes, remove them - if (data.at(0) == '\"' && data.at(data.size()-1) == '\"') { - data = data.substr(1, data.size()-2); - } - TypeId type = IptcDataSets::dataSetType(iptcKey.tag(), iptcKey.record()); - Value::AutoPtr value = Value::create(type); - value->read(data); - - int rc = iptcData.add(iptcKey, value.get()); - if (rc) { - throw Error(1, "Iptc dataset already exists and is not repeatable"); - } -} - -void processRemove(const std::string& line, int num, IptcData &iptcData) -{ - std::string::size_type keyStart = line.find_first_not_of(" \t", 1); - - if (keyStart == std::string::npos) { - std::ostringstream os; - os << "Invalid \'r\' command at line " << num; - throw Error(1, os.str()); - } - - const std::string key( line.substr(keyStart) ); - IptcKey iptcKey(key); - - IptcData::iterator iter = iptcData.findKey(iptcKey); - if (iter != iptcData.end()) { - iptcData.erase(iter); - } -} - -void processModify(const std::string& line, int num, IptcData &iptcData) -{ - std::string::size_type keyStart = line.find_first_not_of(" \t", 1); - std::string::size_type keyEnd = line.find_first_of(" \t", keyStart+1); - std::string::size_type dataStart = line.find_first_not_of(" \t", keyEnd+1); - - if (keyStart == std::string::npos || - keyEnd == std::string::npos || - dataStart == std::string::npos) { - std::ostringstream os; - os << "Invalid \'m\' command at line " << num; - throw Error(1, os.str()); - } - - std::string key(line.substr(keyStart, keyEnd-keyStart)); - IptcKey iptcKey(key); - - std::string data(line.substr(dataStart)); - // if data starts and ends with quotes, remove them - if (data.at(0) == '\"' && data.at(data.size()-1) == '\"') { - data = data.substr(1, data.size()-2); - } - TypeId type = IptcDataSets::dataSetType(iptcKey.tag(), iptcKey.record()); - Value::AutoPtr value = Value::create(type); - value->read(data); - - IptcData::iterator iter = iptcData.findKey(iptcKey); - if (iter != iptcData.end()) { - iter->setValue(value.get()); - } - else { - int rc = iptcData.add(iptcKey, value.get()); - if (rc) { - throw Error(1, "Iptc dataset already exists and is not repeatable"); - } - } -} diff --git a/platform/win32/msvc/external/exiv2/samples/key-test.cpp b/platform/win32/msvc/external/exiv2/samples/key-test.cpp deleted file mode 100644 index 7c291a08c43..00000000000 --- a/platform/win32/msvc/external/exiv2/samples/key-test.cpp +++ /dev/null @@ -1,199 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - Abstract : Key unit tests - - File : key-test.cpp - Version : $Rev: 2348 $ - Author(s): Andreas Huggel (ahu) - History : 24-Aug-04, ahu: created - - */ -// ***************************************************************************** -// included header files -#include - -#include -#include -#include - -using namespace Exiv2; - -int main() -{ - int tc = 0; - int rc = 0; - - std::string key("Exif.Iop.InteroperabilityVersion"); - ExifKey ek(key); - - // operator<< - tc += 1; - std::ostringstream os; - os << ek; - if (os.str() != key) { - std::cout << "Testcase failed (operator<<)" << std::endl; - rc += 1; - } - // familyName - tc += 1; - if (std::string(ek.familyName()) != "Exif") { - std::cout << "Testcase failed (familyName)" << std::endl; - rc += 1; - } - // groupName - tc += 1; - if (ek.groupName() != "Iop") { - std::cout << "Testcase failed (groupName)" << std::endl; - rc += 1; - } - // tagName - tc += 1; - if (ek.tagName() != "InteroperabilityVersion") { - std::cout << "Testcase failed (tagName)" << std::endl; - rc += 1; - } - // tagName - tc += 1; - if (ek.tag() != 0x0002) { - std::cout << "Testcase failed (tag)" << std::endl; - rc += 1; - } - // ifdName - tc += 1; - if (std::string(ExifTags::ifdName(ek.groupName())) != "Iop") { - std::cout << "Testcase failed (ifdName: " << std::endl; - rc += 1; - } - // sectionName - tc += 1; - if (strcmp(ExifTags::sectionName(ek), "Interoperability") != 0) { - std::cout << "Testcase failed (sectionName)" << std::endl; - rc += 1; - } - - // ----- - - // Copy constructor - ExifKey ek2(ek); - - // operator<< - tc += 1; - std::ostringstream os2; - os2 << ek2; - if (os2.str() != key) { - std::cout << "Testcase failed (operator<<)" << std::endl; - rc += 1; - } - // familyName - tc += 1; - if (std::string(ek2.familyName()) != "Exif") { - std::cout << "Testcase failed (familyName)" << std::endl; - rc += 1; - } - // groupName - tc += 1; - if (ek2.groupName() != "Iop") { - std::cout << "Testcase failed (groupName)" << std::endl; - rc += 1; - } - // tagName - tc += 1; - if (ek2.tagName() != "InteroperabilityVersion") { - std::cout << "Testcase failed (tagName)" << std::endl; - rc += 1; - } - // tagName - tc += 1; - if (ek2.tag() != 0x0002) { - std::cout << "Testcase failed (tag)" << std::endl; - rc += 1; - } - // ifdName - tc += 1; - if (std::string(ExifTags::ifdName(ek2.groupName())) != "Iop") { - std::cout << "Testcase failed (ifdName: " << std::endl; - rc += 1; - } - // sectionName - tc += 1; - if (strcmp(ExifTags::sectionName(ek2), "Interoperability") != 0) { - std::cout << "Testcase failed (sectionName)" << std::endl; - rc += 1; - } - - // ----- - - ExifKey ek4("Exif.Image.0x0110"); - tc += 1; - if (ek4.key() != "Exif.Image.Model") { - std::cout << "Testcase failed (converted key)" << std::endl; - rc += 1; - } - tc += 1; - if (ek4.tagName() != "Model") { - std::cout << "Testcase failed (converted tagName)" << std::endl; - rc += 1; - } - - // ----- - - ExifKey ek5("Exif.Nikon3.0x0007"); - tc += 1; - if (ek5.key() != "Exif.Nikon3.Focus") { - std::cout << "Testcase failed (converted key)" << std::endl; - rc += 1; - } - tc += 1; - if (ek5.tagName() != "Focus") { - std::cout << "Testcase failed (converted tagName)" << std::endl; - rc += 1; - } - - // ----- - - IptcKey ik1("Iptc.Envelope.0x0005"); - tc += 1; - if (ik1.key() != "Iptc.Envelope.Destination") { - std::cout << "Testcase failed (converted Iptc key)" << std::endl; - rc += 1; - } - tc += 1; - if (ik1.tagName() != "Destination") { - std::cout << "Testcase failed (converted tagName)" << std::endl; - rc += 1; - } - tc += 1; - if (ik1.recordName() != "Envelope") { - std::cout << "Testcase failed (converted recordName)" << std::endl; - rc += 1; - } - - // ----- - - IptcKey ik2(0xabcd, 0x1234); - tc += 1; - if (ik2.key() != "Iptc.0x1234.0xabcd") { - std::cout << "Testcase failed (unknown Iptc key)" << std::endl; - rc += 1; - } - tc += 1; - if (ik2.tagName() != "0xabcd") { - std::cout << "Testcase failed (converted tagName)" << std::endl; - rc += 1; - } - tc += 1; - if (ik2.recordName() != "0x1234") { - std::cout << "Testcase failed (converted recordName)" << std::endl; - rc += 1; - } - - // ----- - - if (rc == 0) { - std::cout << "All " << tc << " testcases passed." << std::endl; - } - else { - std::cout << rc << " of " << tc << " testcases failed." << std::endl; - } -} - diff --git a/platform/win32/msvc/external/exiv2/samples/largeiptc-test.cpp b/platform/win32/msvc/external/exiv2/samples/largeiptc-test.cpp deleted file mode 100644 index 88ba80b8ab0..00000000000 --- a/platform/win32/msvc/external/exiv2/samples/largeiptc-test.cpp +++ /dev/null @@ -1,69 +0,0 @@ -// ***************************************************************** -*- C++ -*- -// Test for large (>65535 bytes) IPTC buffer - -#include - -#include -#include - -int main(int argc, char* const argv[]) -try { - if (argc != 3) { - std::cout << "Usage: " << argv[0] << " image datafile\n"; - return 1; - } - std::string file(argv[1]); - std::string data(argv[2]); - - // Read data file into data buffer - Exiv2::FileIo io(data); - if (io.open() != 0) { - throw Exiv2::Error(9, io.path(), Exiv2::strError()); - } - Exiv2::DataBuf buf(io.size()); - std::cout << "Reading " << buf.size_ << " bytes from " << data << "\n"; - io.read(buf.pData_, buf.size_); - if (io.error() || io.eof()) throw Exiv2::Error(14); - - // Read metadata from file - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file); - assert(image.get() != 0); - image->readMetadata(); - - // Set Preview field to the content of the data file - Exiv2::DataValue value; - value.read(buf.pData_, buf.size_); - Exiv2::IptcData& iptcData = image->iptcData(); - std::cout << "IPTC fields: " << iptcData.size() << "\n"; - iptcData["Iptc.Application2.Preview"] = value; - std::cout << "IPTC fields: " << iptcData.size() << "\n"; - - // Set IRB, compare with IPTC raw data - Exiv2::DataBuf irb = Exiv2::Photoshop::setIptcIrb(0, 0, iptcData); - std::cout << "IRB buffer : " << irb.size_ << "\n"; - const Exiv2::byte* record; - uint32_t sizeHdr; - uint32_t sizeData; - Exiv2::Photoshop::locateIptcIrb(irb.pData_, irb.size_, &record, &sizeHdr, &sizeData); - Exiv2::DataBuf rawIptc = Exiv2::IptcParser::encode(iptcData); - std::cout << "Comparing IPTC and IRB size... "; - if (static_cast(rawIptc.size_) != sizeData) { - std::cout << "not "; - } - std::cout << "ok\n"; - - std::cout << "Comparing IPTC and IRB data... "; - if (0 != memcmp(rawIptc.pData_, record + sizeHdr, sizeData)) { - std::cout << "not "; - } - std::cout << "ok\n"; - - // Set Iptc data and write it to the file - image->writeMetadata(); - - return 0; -} -catch (Exiv2::AnyError& e) { - std::cout << "Caught Exiv2 exception '" << e << "'\n"; - return -1; -} diff --git a/platform/win32/msvc/external/exiv2/samples/mmap-test.cpp b/platform/win32/msvc/external/exiv2/samples/mmap-test.cpp deleted file mode 100644 index 4f5d1fac5e2..00000000000 --- a/platform/win32/msvc/external/exiv2/samples/mmap-test.cpp +++ /dev/null @@ -1,41 +0,0 @@ -// ***************************************************************** -*- C++ -*- -// mmap-test.cpp, $Rev: 2286 $ -// Simple mmap tests - -#include - -#include -#include - -using namespace Exiv2; - -int main(int argc, char* const argv[]) -try { - if (argc != 2) { - std::cout << "Usage: " << argv[0] << " file\n"; - return 1; - } - const char* path = argv[1]; - - FileIo file(path); - // Open the file in read mode - if (file.open("rb") != 0) { - throw Error(10, path, "rb", strError()); - } - // Map it to memory - const Exiv2::byte* pData = file.mmap(); - long size = file.size(); - DataBuf buf(size); - // Read from the memory mapped region - memcpy(buf.pData_, pData, buf.size_); - // Reopen file in write mode and write to it - file.write(buf.pData_, buf.size_); - // Read from the mapped region again - memcpy(buf.pData_, pData, buf.size_); - file.close(); - - return 0; -} -catch (const AnyError& e) { - std::cout << e << "\n"; -} diff --git a/platform/win32/msvc/external/exiv2/samples/prevtest.cpp b/platform/win32/msvc/external/exiv2/samples/prevtest.cpp deleted file mode 100644 index d0cf34cb6cc..00000000000 --- a/platform/win32/msvc/external/exiv2/samples/prevtest.cpp +++ /dev/null @@ -1,46 +0,0 @@ -// ***************************************************************** -*- C++ -*- -// prevtest.cpp, $Rev: 2286 $ -// Test access to preview images - -#include - -#include -#include -#include - -int main(int argc, char* const argv[]) -try { - if (argc != 2) { - std::cout << "Usage: " << argv[0] << " file\n"; - return 1; - } - std::string filename(argv[1]); - - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(filename); - assert(image.get() != 0); - image->readMetadata(); - - Exiv2::PreviewManager loader(*image); - Exiv2::PreviewPropertiesList list = loader.getPreviewProperties(); - for (Exiv2::PreviewPropertiesList::iterator pos = list.begin(); pos != list.end(); pos++) { - std::cout << pos->mimeType_ - << " preview, type " << pos->id_ << ", " - << pos->size_ << " bytes, " - << pos->width_ << 'x' << pos->height_ << " pixels" - << "\n"; - - Exiv2::PreviewImage preview = loader.getPreviewImage(*pos); - preview.writeFile(filename + "_" - + Exiv2::toString(pos->width_) + "x" - + Exiv2::toString(pos->height_)); - } - - // Cleanup - Exiv2::XmpParser::terminate(); - - return 0; -} -catch (Exiv2::AnyError& e) { - std::cout << "Caught Exiv2 exception '" << e << "'\n"; - return -1; -} diff --git a/platform/win32/msvc/external/exiv2/samples/stringto-test.cpp b/platform/win32/msvc/external/exiv2/samples/stringto-test.cpp deleted file mode 100644 index 322938b4f58..00000000000 --- a/platform/win32/msvc/external/exiv2/samples/stringto-test.cpp +++ /dev/null @@ -1,77 +0,0 @@ -// ***************************************************************** -*- C++ -*- -// stringto-test.cpp, $Rev: 2286 $ -// Test conversions from string to long, float and Rational types. - -#include - -#include -#include - -const char* testcases[] = { - // bool - "True", - "False", - "t", - "f", - // long - "-1", - "0", - "1", - // float - "0.0", - "0.1", - "0.01", - "0.001", - "-1.49999", - "-1.5", - "1.49999", - "1.5", - // Rational - "0/1", - "1/1", - "1/3", - "-1/3", - "4/3", - "-4/3", - "0/0", - // nok - "text" -}; - -int main() -{ - std::cout << std::setfill(' '); - - std::cout << std::setw(12) << std::left << "string"; - std::cout << std::setw(12) << std::left << "long"; - std::cout << std::setw(12) << std::left << "float"; - std::cout << std::setw(12) << std::left << "Rational"; - - std::cout << std::endl; - - for (unsigned int i = 0; i < EXV_COUNTOF(testcases); ++i) try { - std::string s(testcases[i]); - std::cout << std::setw(12) << std::left << s; - bool ok; - - long l = Exiv2::parseLong(s, ok); - std::cout << std::setw(12) << std::left; - if (ok) std::cout << l; else std::cout << "nok"; - - float f = Exiv2::parseFloat(s, ok); - std::cout << std::setw(12) << std::left; - if (ok) std::cout << f; else std::cout << "nok"; - - Exiv2::Rational r = Exiv2::parseRational(s, ok); - if (ok) std::cout << r.first << "/" << r.second; - else std::cout << "nok"; - - std::cout << std::endl; - } - catch (Exiv2::AnyError& e) { - std::cout << "Caught Exiv2 exception '" << e << "'\n"; - return -1; - } - - return 0; -} diff --git a/platform/win32/msvc/external/exiv2/samples/tiff-test.cpp b/platform/win32/msvc/external/exiv2/samples/tiff-test.cpp deleted file mode 100644 index 655b234c6e1..00000000000 --- a/platform/win32/msvc/external/exiv2/samples/tiff-test.cpp +++ /dev/null @@ -1,106 +0,0 @@ -// ***************************************************************** -*- C++ -*- -// tiff-test.cpp, $Rev: 2286 $ -// First and very simple TIFF write test. - -#include - -#include -#include -#include -#include - -using namespace Exiv2; - -void print(const ExifData& exifData); - -void mini1(const char* path); -void mini9(const char* path); - -int main(int argc, char* const argv[]) -try { - if (argc != 2) { - std::cout << "Usage: " << argv[0] << " file\n"; - return 1; - } - - const char* path = argv[1]; - mini1(path); - mini9(path); - - return 0; -} -catch (const AnyError& e) { - std::cout << e << "\n"; -} - -void mini1(const char* path) -{ - ExifData exifData; - Blob blob; - WriteMethod wm; - - // Write nothing to a new structure, without a previous binary image - wm = ExifParser::encode(blob, 0, 0, bigEndian, exifData); - assert(wm == wmIntrusive); - assert(blob.size() == 0); - std::cout << "Test 1: Writing empty Exif data without original binary data: ok.\n"; - - // Write nothing, this time with a previous binary image - DataBuf buf = readFile(path); - wm = ExifParser::encode(blob, buf.pData_, buf.size_, bigEndian, exifData); - assert(wm == wmIntrusive); - assert(blob.size() == 0); - std::cout << "Test 2: Writing empty Exif data with original binary data: ok.\n"; - - // Write something to a new structure, without a previous binary image - exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; - wm = ExifParser::encode(blob, 0, 0, bigEndian, exifData); - assert(wm == wmIntrusive); - std::cout << "Test 3: Wrote non-empty Exif data without original binary data:\n"; - exifData.clear(); - ByteOrder bo = ExifParser::decode(exifData, &blob[0], blob.size()); - assert(bo == bigEndian); - print(exifData); -} - -void mini9(const char* path) -{ - TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); - tiffImage.readMetadata(); - - std::cout << "MIME type: " << tiffImage.mimeType() << "\n"; - std::cout << "Image size: " << tiffImage.pixelWidth() << " x " << tiffImage.pixelHeight() << "\n"; - - ExifData& exifData = tiffImage.exifData(); - std::cout << "Before\n"; - print(exifData); - std::cout << "======\n"; - - exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; - - std::cout << "After\n"; - print(exifData); - tiffImage.writeMetadata(); -} - -void print(const ExifData& exifData) -{ - if (exifData.empty()) { - std::string error("No Exif data found in the file"); - throw Exiv2::Error(1, error); - } - Exiv2::ExifData::const_iterator end = exifData.end(); - for (Exiv2::ExifData::const_iterator i = exifData.begin(); i != end; ++i) { - std::cout << std::setw(44) << std::setfill(' ') << std::left - << i->key() << " " - << "0x" << std::setw(4) << std::setfill('0') << std::right - << std::hex << i->tag() << " " - << std::setw(9) << std::setfill(' ') << std::left - << i->typeName() << " " - << std::dec << std::setw(3) - << std::setfill(' ') << std::right - << i->count() << " " - << std::dec << i->value() - << "\n"; - } -} diff --git a/platform/win32/msvc/external/exiv2/samples/tiffaddpath-test.cpp b/platform/win32/msvc/external/exiv2/samples/tiffaddpath-test.cpp deleted file mode 100644 index 9518ba0c646..00000000000 --- a/platform/win32/msvc/external/exiv2/samples/tiffaddpath-test.cpp +++ /dev/null @@ -1,136 +0,0 @@ -// ***************************************************************** -*- C++ -*- -// tiffaddpath-test.cpp, $Rev: 1512 $ -// Test driver to test adding new tags to a TIFF composite structure - -#include "tiffcomposite_int.hpp" -#include "makernote2_int.hpp" -#include "tiffimage_int.hpp" - -#include -#include -#include - -#include - -using namespace Exiv2; - -void addPath(TiffComponent* pRootDir, - uint16_t tag, - TiffPath& tiffPath); - -void printPath(TiffPath tiffPath, - uint32_t tag, - uint16_t grp); - -struct TiffTagInfo { - bool operator==(const uint32_t& tag) const; - - uint32_t tag_; - const char* name_; -}; - -extern const TiffTagInfo tiffTagInfo[] = { - { 0x10000, "none" }, - { 0x20000, "root" }, - { 0x30000, "next" }, - { 0x40000, "all" } -}; - -bool TiffTagInfo::operator==(const uint32_t& tag) const -{ - return tag_ == tag; -} - -std::string tiffTagName(uint32_t tag) -{ - const TiffTagInfo* gi = find(tiffTagInfo, tag); - std::string name; - if (gi != 0) { - name = gi->name_; - } - else { - std::ostringstream os; - os << "0x" << std::hex << std::setw(4) - << std::setfill('0') << std::right << tag; - name = os.str(); - } - return name; -} - -// ----------------------------------------------------------------------------- -// Main program -int main(int argc, char* const argv[]) -{ - if (argc != 3) { - std::cout << "Usage: " << argv[0] << " tag group\n" - << "Print the TIFF path for a tag and group (decimal numbers)\n"; - return 1; - } - - uint32_t tag = atol(argv[1]); - uint16_t grp = atol(argv[2]); - - TiffComponent* pRootDir = new TiffDirectory(0, 1); - - TiffPath tiffPath1; - TiffCreator::getPath(tiffPath1, tag, grp); - printPath(tiffPath1, tag, grp); - addPath(pRootDir, tag, tiffPath1); - - ++tag; - TiffPath tiffPath2; - TiffCreator::getPath(tiffPath2, tag, grp); - printPath(tiffPath2, tag, grp); - addPath(pRootDir, tag, tiffPath2); - - return 0; -} - -// ----------------------------------------------------------------------------- -void addPath(TiffComponent* pRootDir, - uint16_t tag, - TiffPath& tiffPath) -{ - TiffComponent* tc = pRootDir->addPath(tag, tiffPath); - - TiffPrinter tiffPrinter(std::cout); - pRootDir->accept(tiffPrinter); - - std::cout << std::endl; - if (tc) { - std::cout << "Added tag " << tiffTagName(tc->tag()) - << ", group " << tiffGroupName(tc->group()) << "\n"; - } - else { - std::cout << "No tag added\n"; - } - std::cout << std::endl; -} - -// ----------------------------------------------------------------------------- -void printPath(TiffPath tiffPath, - uint32_t tag, - uint16_t grp) -{ - std::cout << "\nTiff path for tag " - << std::setw(6) << std::setfill(' ') << std::left - << tiffTagName(tag) - << ", group " << tiffGroupName(grp) - << " (id = " << std::dec << grp << "):\n\n" - << "ext. tag group new group \n" - << "-------- ------------ ------------\n"; - - while (!tiffPath.empty()) - { - const TiffStructure* ts = tiffPath.top(); - tiffPath.pop(); - std::cout << std::setw(8) << std::setfill(' ') << std::left - << tiffTagName(ts->extendedTag_) - << " " << std::setw(12) << std::setfill(' ') << std::left - << tiffGroupName(ts->group_) - << " " << std::setw(12) << std::setfill(' ') << std::left - << tiffGroupName(ts->newGroup_) - << "\n"; - } - std::cout << std::endl; -} diff --git a/platform/win32/msvc/external/exiv2/samples/werror-test.cpp b/platform/win32/msvc/external/exiv2/samples/werror-test.cpp deleted file mode 100644 index c40cb38f94d..00000000000 --- a/platform/win32/msvc/external/exiv2/samples/werror-test.cpp +++ /dev/null @@ -1,29 +0,0 @@ -// ***************************************************************** -*- C++ -*- -// werror-test.cpp, $Rev: 2286 $ -// Simple tests for the wide-string error class WError - -#include -#include - -int main() -{ - try { - throw Exiv2::Error(-1, "ARG1", "ARG2", "ARG3"); - } - catch (const Exiv2::Error& e) { - std::cout << "Caught Error '" << e.what() << "'\n"; - } - -#ifdef EXV_UNICODE_PATH - try { - throw Exiv2::WError(-1, L"WARG1", L"WARG2", L"WARG3"); - } - catch (const Exiv2::WError& e) { - std::wstring wmsg = e.wwhat(); - std::string msg(wmsg.begin(), wmsg.end()); - std::cout << "Caught WError '" << msg << "'\n"; - } -#endif - - return 0; -} diff --git a/platform/win32/msvc/external/exiv2/samples/write-test.cpp b/platform/win32/msvc/external/exiv2/samples/write-test.cpp deleted file mode 100644 index fe82f889359..00000000000 --- a/platform/win32/msvc/external/exiv2/samples/write-test.cpp +++ /dev/null @@ -1,218 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - Abstract : ExifData write unit tests - - Author(s): Andreas Huggel (ahu) - Version : $Rev: 2286 $ - - Test procedure: - $ rm -f test.jpg thumb.jpg iii ttt; - $ ./exifprint ../test/img_1771.jpg > iii; - $ cp ../test/img_1771.jpg ./test.jpg; - $ ./makernote-test2 ../test/img_1771.jpg > ttt; - $ diff iii ttt - - */ -// ***************************************************************************** -// included header files -#include - -#include -#include -#include -#include -#include -#include - -// ***************************************************************************** -// local declarations - -using namespace Exiv2; - -void testCase(const std::string& file1, - const std::string& file2, - const std::string& thumb, - const std::string& key, - const std::string& value); -void exifPrint(const ExifData& exifData); - -// ***************************************************************************** -// Main -int main(int argc, char* const argv[]) -{ -try { - - if (argc != 3) { - std::cout << "Usage: write-test file case\n\n" - << "where case is an integer between 1 and 11\n"; - return 1; - } - - std::string testFile = argv[1]; - std::istringstream iss(argv[2]); - int testNo; - iss >> testNo; - - int rc = 0; - switch (testNo) { - case 1: - std::cerr << "Case 1: "; - std::cerr << "Non-intrusive change to the standard Exif metadata\n"; - testCase(testFile, "test1.jpg", "thumb1", - "Exif.Photo.DateTimeOriginal", - "1999:11:22 00:11:22"); - break; - case 2: - std::cerr << "Case 2: "; - std::cerr << "Non-intrusive change to the makernote metadata\n"; - testCase(testFile, "test2.jpg", "thumb2", - "Exif.Canon.OwnerName", - "Chan YeeSend"); - break; - case 3: - std::cerr << "Case 3: "; - std::cerr << "Non-intrusive change to the Exif metadata (w/o makernote)\n"; - testCase(testFile, "test3.jpg", "thumb3", - "Exif.Photo.DateTimeOriginal", - "1999:11:22 00:11:22"); - break; - case 4: - std::cerr << "Case 4: "; - std::cerr << "Intrusive change to the standard Exif metadata\n"; - testCase(testFile, "test4.jpg", "thumb4", - "Exif.Photo.DateTimeOriginal", - "1999:11:22 00:11:22 and twenty seconds"); - break; - case 5: - std::cerr << "Case 5: "; - std::cerr << "Intrusive change to the Canon makernote metadata\n"; - testCase(testFile, "test5.jpg", "thumb5", - "Exif.Canon.OwnerName", - "Frau Chan YeeSend und Herr Andreas Huggel"); - break; - case 6: - std::cerr << "Case 6: "; - std::cerr << "Intrusive change to the Exif metadata (w/o makernote)\n"; - testCase(testFile, "test6.jpg", "thumb6", - "Exif.Photo.DateTimeOriginal", - "1999:11:22 00:11:22 and twenty seconds"); - break; - case 7: - std::cerr << "Case 7: "; - std::cerr << "Intrusive change to the Fujifilm makernote metadata\n"; - testCase(testFile, "test7.jpg", "thumb7", - "Exif.Fujifilm.Quality", - "Typical Fujifilm Quality"); - break; - case 8: - std::cerr << "Case 8: "; - std::cerr << "Intrusive change to the Sigma makernote metadata\n"; - testCase(testFile, "test8.jpg", "thumb8", - "Exif.Sigma.ResolutionMode", - "Sigma HI resolution"); - break; - case 9: - std::cerr << "Case 9: "; - std::cerr << "Intrusive change to the Nikon1 makernote metadata\n"; - testCase(testFile, "test9.jpg", "thumb9", - "Exif.Nikon1.Quality", - "Typical Nikon1 Quality"); - break; - case 10: - std::cerr << "Case 10: "; - std::cerr << "Intrusive change to the Nikon2 makernote metadata\n"; - testCase(testFile, "test10.jpg", "thumb10", - "Exif.Nikon2.0x0002", - "Nikon2 Version 2"); - break; - case 11: - std::cerr << "Case 11: "; - std::cerr << "Intrusive change to the Nikon3 makernote metadata\n"; - testCase(testFile, "test11.jpg", "thumb11", - "Exif.Nikon3.Quality", - "Typical Nikon3 Quality"); - break; - - // ToDo: Erase Sigma thumbnail - - // ToDo: Write to a broken (truncated) IFD entry - - default: - std::cout << "Usage: exiftest file case\n\n" - << "where case is an integer between 1 and 11\n"; - rc = 1; - break; - } - - return rc; -} -catch (AnyError& e) { - std::cerr << "Caught Exiv2 exception '" << e << "'\n"; - return 1; -} -} - -// ***************************************************************************** -void testCase(const std::string& file1, - const std::string& file2, - const std::string& thumb, - const std::string& key, - const std::string& value) -{ - ExifKey ek(key); - - //Open first image - Image::AutoPtr image1 = ImageFactory::open(file1); - assert(image1.get() != 0); - - // Load existing metadata - std::cerr << "---> Reading file " << file1 << "\n"; - image1->readMetadata(); - - Exiv2::ExifData &ed1 = image1->exifData(); - std::cerr << "---> Modifying Exif data\n"; - Exiv2::ExifData::iterator pos = ed1.findKey(ek); - if (pos == ed1.end()) { - throw Error(1, "Metadatum with key = " + ek.key() + " not found"); - } - pos->setValue(value); - - // Open second image - Image::AutoPtr image2 = ImageFactory::open(file2); - assert(image2.get() != 0); - - image2->setExifData(image1->exifData()); - - std::cerr << "---> Writing Exif data to file " << file2 << "\n"; - image2->writeMetadata(); - - std::cerr << "---> Reading file " << file2 << "\n"; - image2->readMetadata(); - - Exiv2::ExifData &ed2 = image2->exifData(); - exifPrint(ed2); - - std::cerr << "---> Writing Exif thumbnail to file " << thumb << ".*\n"; - ExifThumbC et2(ed2); - et2.writeFile(thumb); -} - -// ***************************************************************************** - -void exifPrint(const ExifData& exifData) -{ - ExifData::const_iterator i = exifData.begin(); - for (; i != exifData.end(); ++i) { - std::cout << std::setw(44) << std::setfill(' ') << std::left - << i->key() << " " - << "0x" << std::setw(4) << std::setfill('0') << std::right - << std::hex << i->tag() << " " - << std::setw(9) << std::setfill(' ') << std::left - << i->typeName() << " " - << std::dec << std::setw(3) - << std::setfill(' ') << std::right - << i->count() << " " - << std::dec << i->value() - << "\n"; - } -} diff --git a/platform/win32/msvc/external/exiv2/samples/write2-test.cpp b/platform/win32/msvc/external/exiv2/samples/write2-test.cpp deleted file mode 100644 index d2bee525f19..00000000000 --- a/platform/win32/msvc/external/exiv2/samples/write2-test.cpp +++ /dev/null @@ -1,240 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - Abstract : ExifData write unit tests for Exif data created from scratch - - File : write2-test.cpp - Version : $Rev: 2286 $ - Author(s): Andreas Huggel (ahu) - History : 26-Jun-04, ahu: created - - */ -// ***************************************************************************** -// included header files -#include - -#include -#include -#include -#include - -void write(const std::string& file, Exiv2::ExifData& ed); -void print(const std::string& file); - -// ***************************************************************************** -// Main -int main(int argc, char* const argv[]) -{ -try { - if (argc != 2) { - std::cout << "Usage: " << argv[0] << " file\n"; - return 1; - } - std::string file(argv[1]); - - std::cout <<"----- Some IFD0 tags\n"; - Exiv2::ExifData ed1; - ed1["Exif.Image.Model"] = "Test 1"; - - Exiv2::Value::AutoPtr v1 = Exiv2::Value::create(Exiv2::unsignedShort); - v1->read("160 161 162 163"); - ed1.add(Exiv2::ExifKey("Exif.Image.SamplesPerPixel"), v1.get()); - - Exiv2::Value::AutoPtr v2 = Exiv2::Value::create(Exiv2::signedLong); - v2->read("-2 -1 0 1"); - ed1.add(Exiv2::ExifKey("Exif.Image.XResolution"), v2.get()); - - Exiv2::Value::AutoPtr v3 = Exiv2::Value::create(Exiv2::signedRational); - v3->read("-2/3 -1/3 0/3 1/3"); - ed1.add(Exiv2::ExifKey("Exif.Image.YResolution"), v3.get()); - - Exiv2::Value::AutoPtr v4 = Exiv2::Value::create(Exiv2::undefined); - v4->read("255 254 253 252"); - ed1.add(Exiv2::ExifKey("Exif.Image.WhitePoint"), v4.get()); - - write(file, ed1); - print(file); - - std::cout <<"\n----- One Exif tag\n"; - Exiv2::ExifData ed2; - ed2["Exif.Photo.DateTimeOriginal"] = "Test 2"; - write(file, ed2); - print(file); - - std::cout <<"\n----- Canon MakerNote tags\n"; - Exiv2::ExifData edMn1; - edMn1["Exif.Image.Make"] = "Canon"; - edMn1["Exif.Image.Model"] = "Canon PowerShot S40"; - edMn1["Exif.Canon.0xabcd"] = "A Canon makernote tag"; - edMn1["Exif.CanonCs.0x0002"] = uint16_t(41); - edMn1["Exif.CanonSi.0x0005"] = uint16_t(42); - edMn1["Exif.CanonCf.0x0001"] = uint16_t(43); - edMn1["Exif.CanonPi.0x0001"] = uint16_t(44); - edMn1["Exif.CanonPa.0x0001"] = uint16_t(45); - write(file, edMn1); - print(file); - - std::cout <<"\n----- Non-intrusive writing of special Canon MakerNote tags\n"; - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file); - assert(image.get() != 0); - image->readMetadata(); - - Exiv2::ExifData& rEd = image->exifData(); - rEd["Exif.CanonCs.0x0001"] = uint16_t(88); - rEd["Exif.CanonSi.0x0004"] = uint16_t(99); - image->writeMetadata(); - print(file); - - std::cout <<"\n----- One Fujifilm MakerNote tag\n"; - Exiv2::ExifData edMn2; - edMn2["Exif.Image.Make"] = "FUJIFILM"; - edMn2["Exif.Image.Model"] = "FinePixS2Pro"; - edMn2["Exif.Fujifilm.0x1000"] = "A Fujifilm QUALITY tag"; - write(file, edMn2); - print(file); - - std::cout <<"\n----- One Sigma/Foveon MakerNote tag\n"; - Exiv2::ExifData edMn3; - edMn3["Exif.Image.Make"] = "SIGMA"; - edMn3["Exif.Image.Model"] = "SIGMA SD10"; - edMn3["Exif.Sigma.0x0018"] = "Software? Exiv2!"; - write(file, edMn3); - print(file); - - std::cout <<"\n----- One Nikon1 MakerNote tag\n"; - Exiv2::ExifData edMn4; - edMn4["Exif.Image.Make"] = "NIKON"; - edMn4["Exif.Image.Model"] = "E990"; - edMn4["Exif.Nikon1.0x0080"] = "ImageAdjustment by Exiv2"; - write(file, edMn4); - print(file); - - std::cout <<"\n----- One Nikon2 MakerNote tag\n"; - Exiv2::ExifData edMn5; - edMn5["Exif.Image.Make"] = "NIKON"; - edMn5["Exif.Image.Model"] = "E950"; - edMn5["Exif.Nikon2.0xffff"] = "An obscure Nikon2 tag"; - write(file, edMn5); - print(file); - - std::cout <<"\n----- One Nikon3 MakerNote tag\n"; - Exiv2::ExifData edMn6; - edMn6["Exif.Image.Make"] = "NIKON CORPORATION"; - edMn6["Exif.Image.Model"] = "NIKON D70"; - edMn6["Exif.Nikon3.0x0004"] = "A boring Nikon3 Quality tag"; - write(file, edMn6); - print(file); - - std::cout <<"\n----- One Olympus MakerNote tag\n"; - Exiv2::ExifData edMn7; - edMn7["Exif.Image.Make"] = "OLYMPUS CORPORATION"; - edMn7["Exif.Image.Model"] = "C8080WZ"; - edMn7["Exif.Olympus.0x0201"] = uint16_t(1); - write(file, edMn7); - print(file); - - std::cout <<"\n----- One Panasonic MakerNote tag\n"; - Exiv2::ExifData edMn8; - edMn8["Exif.Image.Make"] = "Panasonic"; - edMn8["Exif.Image.Model"] = "DMC-FZ5"; - edMn8["Exif.Panasonic.0x0001"] = uint16_t(1); - write(file, edMn8); - print(file); - - std::cout <<"\n----- One Sony1 MakerNote tag\n"; - Exiv2::ExifData edMn9; - edMn9["Exif.Image.Make"] = "SONY"; - edMn9["Exif.Image.Model"] = "DSC-W7"; - edMn9["Exif.Sony1.0x2000"] = "0 1 2 3 4 5"; - write(file, edMn9); - print(file); - - std::cout <<"\n----- Minolta MakerNote tags\n"; - Exiv2::ExifData edMn10; - edMn10["Exif.Image.Make"] = "Minolta"; - edMn10["Exif.Image.Model"] = "A fancy Minolta camera"; - edMn10["Exif.Minolta.ColorMode"] = uint32_t(1); - edMn10["Exif.MinoltaCsNew.WhiteBalance"] = uint32_t(2); - edMn10["Exif.MinoltaCs5D.WhiteBalance"] = uint16_t(3); - edMn10["Exif.MinoltaCs5D.ColorTemperature"] = int16_t(-1); - edMn10["Exif.MinoltaCs7D.WhiteBalance"] = uint16_t(4); - edMn10["Exif.MinoltaCs7D.ExposureCompensation"] = int16_t(-2); - edMn10["Exif.MinoltaCs7D.ColorTemperature"] = int16_t(-3); - write(file, edMn10); - print(file); - - std::cout <<"\n----- One IOP tag\n"; - Exiv2::ExifData ed3; - ed3["Exif.Iop.InteroperabilityIndex"] = "Test 3"; - write(file, ed3); - print(file); - - std::cout <<"\n----- One GPS tag\n"; - Exiv2::ExifData ed4; - ed4["Exif.GPSInfo.GPSVersionID"] = "19 20"; - write(file, ed4); - print(file); - - std::cout <<"\n----- One IFD1 tag\n"; - Exiv2::ExifData ed5; - ed5["Exif.Thumbnail.Artist"] = "Test 5"; - write(file, ed5); - print(file); - - std::cout <<"\n----- One IOP and one IFD1 tag\n"; - Exiv2::ExifData ed6; - ed6["Exif.Iop.InteroperabilityIndex"] = "Test 6 Iop tag"; - ed6["Exif.Thumbnail.Artist"] = "Test 6 Ifd1 tag"; - write(file, ed6); - print(file); - - std::cout <<"\n----- One IFD0 and one IFD1 tag\n"; - Exiv2::ExifData ed7; - ed7["Exif.Thumbnail.Artist"] = "Test 7"; - Exiv2::Value::AutoPtr v5 = Exiv2::Value::create(Exiv2::unsignedShort); - v5->read("160 161 162 163"); - ed7.add(Exiv2::ExifKey("Exif.Image.SamplesPerPixel"), v5.get()); - write(file, ed7); - print(file); - - return 0; -} -catch (Exiv2::AnyError& e) { - std::cout << "Caught Exiv2 exception '" << e << "'\n"; - return -1; -} -} - -void write(const std::string& file, Exiv2::ExifData& ed) -{ - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file); - assert(image.get() != 0); - - image->setExifData(ed); - image->writeMetadata(); -} - -void print(const std::string& file) -{ - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file); - assert(image.get() != 0); - image->readMetadata(); - - Exiv2::ExifData &ed = image->exifData(); - Exiv2::ExifData::const_iterator end = ed.end(); - for (Exiv2::ExifData::const_iterator i = ed.begin(); i != end; ++i) { - std::cout << std::setw(45) << std::setfill(' ') << std::left - << i->key() << " " - << "0x" << std::setw(4) << std::setfill('0') << std::right - << std::hex << i->tag() << " " - << std::setw(12) << std::setfill(' ') << std::left - << i->ifdName() << " " - << std::setw(9) << std::setfill(' ') << std::left - << i->typeName() << " " - << std::dec << std::setw(3) - << std::setfill(' ') << std::right - << i->count() << " " - << std::dec << i->value() - << "\n"; - - } -} diff --git a/platform/win32/msvc/external/exiv2/samples/xmpparse.cpp b/platform/win32/msvc/external/exiv2/samples/xmpparse.cpp deleted file mode 100644 index 36b1410d69c..00000000000 --- a/platform/win32/msvc/external/exiv2/samples/xmpparse.cpp +++ /dev/null @@ -1,50 +0,0 @@ -// ***************************************************************** -*- C++ -*- -// xmpparse.cpp, $Rev: 2286 $ -// Read an XMP packet from a file, parse it and print all (known) properties. - -#include - -#include -#include -#include - -int main(int argc, char* const argv[]) -try { - if (argc != 2) { - std::cout << "Usage: " << argv[0] << " file\n"; - return 1; - } - Exiv2::DataBuf buf = Exiv2::readFile(argv[1]); - std::string xmpPacket; - xmpPacket.assign(reinterpret_cast(buf.pData_), buf.size_); - Exiv2::XmpData xmpData; - if (0 != Exiv2::XmpParser::decode(xmpData, xmpPacket)) { - std::string error(argv[1]); - error += ": Failed to parse file contents (XMP packet)"; - throw Exiv2::Error(1, error); - } - if (xmpData.empty()) { - std::string error(argv[1]); - error += ": No XMP properties found in the XMP packet"; - throw Exiv2::Error(1, error); - } - for (Exiv2::XmpData::const_iterator md = xmpData.begin(); - md != xmpData.end(); ++md) { - std::cout << std::setfill(' ') << std::left - << std::setw(44) - << md->key() << " " - << std::setw(9) << std::setfill(' ') << std::left - << md->typeName() << " " - << std::dec << std::setw(3) - << std::setfill(' ') << std::right - << md->count() << " " - << std::dec << md->value() - << std::endl; - } - Exiv2::XmpParser::terminate(); - return 0; -} -catch (Exiv2::AnyError& e) { - std::cout << "Caught Exiv2 exception '" << e << "'\n"; - return -1; -} diff --git a/platform/win32/msvc/external/exiv2/samples/xmpparser-test.cpp b/platform/win32/msvc/external/exiv2/samples/xmpparser-test.cpp deleted file mode 100644 index 6d825ff1f92..00000000000 --- a/platform/win32/msvc/external/exiv2/samples/xmpparser-test.cpp +++ /dev/null @@ -1,66 +0,0 @@ -// ***************************************************************** -*- C++ -*- -// xmpparser-test.cpp, $Rev: 2286 $ -// Read an XMP packet from a file, parse and re-serialize it. - -#include - -#include -#include -#include - -int main(int argc, char* const argv[]) -try { - if (argc != 2) { - std::cout << "Usage: " << argv[0] << " file\n"; - return 1; - } - std::string filename(argv[1]); - Exiv2::DataBuf buf = Exiv2::readFile(filename); - std::string xmpPacket; - xmpPacket.assign(reinterpret_cast(buf.pData_), buf.size_); - std::cerr << "-----> Decoding XMP data read from " << filename << " <-----\n"; - Exiv2::XmpData xmpData; - if (0 != Exiv2::XmpParser::decode(xmpData, xmpPacket)) { - std::string error(argv[1]); - error += ": Failed to parse file contents (XMP packet)"; - throw Exiv2::Error(1, error); - } - if (xmpData.empty()) { - std::string error(argv[1]); - error += ": No XMP properties found in the XMP packet"; - throw Exiv2::Error(1, error); - } - for (Exiv2::XmpData::const_iterator md = xmpData.begin(); - md != xmpData.end(); ++md) { - std::cout << std::setfill(' ') << std::left - << std::setw(44) - << md->key() << " " - << std::setw(9) << std::setfill(' ') << std::left - << md->typeName() << " " - << std::dec << std::setw(3) - << std::setfill(' ') << std::right - << md->count() << " " - << std::dec << md->value() - << std::endl; - } - filename += "-new"; - std::cerr << "-----> Encoding XMP data to write to " << filename << " <-----\n"; - if (0 != Exiv2::XmpParser::encode(xmpPacket, xmpData)) { - std::string error(argv[1]); - error += ": Failed to encode the XMP data"; - throw Exiv2::Error(1, error); - } - Exiv2::FileIo file(filename); - if (file.open("wb") != 0) { - throw Exiv2::Error(10, filename, "wb", Exiv2::strError()); - } - if (file.write(reinterpret_cast(xmpPacket.data()), static_cast(xmpPacket.size())) == 0) { - throw Exiv2::Error(2, filename, Exiv2::strError(), "FileIo::write"); - } - Exiv2::XmpParser::terminate(); - return 0; -} -catch (Exiv2::AnyError& e) { - std::cout << "Caught Exiv2 exception '" << e << "'\n"; - return -1; -} diff --git a/platform/win32/msvc/external/exiv2/samples/xmpsample.cpp b/platform/win32/msvc/external/exiv2/samples/xmpsample.cpp deleted file mode 100644 index c32b29ee05b..00000000000 --- a/platform/win32/msvc/external/exiv2/samples/xmpsample.cpp +++ /dev/null @@ -1,216 +0,0 @@ -// ***************************************************************** -*- C++ -*- -// xmpsample.cpp, $Rev: 2639 $ -// Sample/test for high level XMP classes. See also addmoddel.cpp - -#include - -#include -#include -#include -#include -#include - -bool isEqual(float a, float b) -{ - double d = std::fabs(a - b); - return d < 0.00001; -} - -int main() -try { - // The XMP property container - Exiv2::XmpData xmpData; - - // ------------------------------------------------------------------------- - // Teaser: Setting XMP properties doesn't get much easier than this: - - xmpData["Xmp.dc.source"] = "xmpsample.cpp"; // a simple text value - xmpData["Xmp.dc.subject"] = "Palmtree"; // an array item - xmpData["Xmp.dc.subject"] = "Rubbertree"; // add a 2nd array item - // a language alternative with two entries and without default - xmpData["Xmp.dc.title"] = "lang=de-DE Sonnenuntergang am Strand"; - xmpData["Xmp.dc.title"] = "lang=en-US Sunset on the beach"; - - // ------------------------------------------------------------------------- - // Any properties can be set provided the namespace is known. Values of any - // type can be assigned to an Xmpdatum, if they have an output operator. The - // default XMP value type for unknown properties is a simple text value. - - xmpData["Xmp.dc.one"] = -1; - xmpData["Xmp.dc.two"] = 3.1415; - xmpData["Xmp.dc.three"] = Exiv2::Rational(5, 7); - xmpData["Xmp.dc.four"] = uint16_t(255); - xmpData["Xmp.dc.five"] = int32_t(256); - xmpData["Xmp.dc.six"] = false; - - // In addition, there is a dedicated assignment operator for Exiv2::Value - Exiv2::XmpTextValue val("Seven"); - xmpData["Xmp.dc.seven"] = val; - xmpData["Xmp.dc.eight"] = true; - - // Extracting values - assert(xmpData["Xmp.dc.one"].toLong() == -1); - assert(xmpData["Xmp.dc.one"].value().ok()); - - const Exiv2::Value &getv1 = xmpData["Xmp.dc.one"].value(); - assert(isEqual(getv1.toFloat(), -1)); - assert(getv1.ok()); - assert(getv1.toRational() == Exiv2::Rational(-1, 1)); - assert(getv1.ok()); - - const Exiv2::Value &getv2 = xmpData["Xmp.dc.two"].value(); - assert(isEqual(getv2.toFloat(), 3.1415f)); - assert(getv2.ok()); - assert(getv2.toLong() == 3); - assert(getv2.ok()); - Exiv2::Rational R = getv2.toRational(); - assert(getv2.ok()); - assert(isEqual(static_cast(R.first) / R.second, 3.1415f )); - - const Exiv2::Value &getv3 = xmpData["Xmp.dc.three"].value(); - assert(isEqual(getv3.toFloat(), 5.0f/7.0f)); - assert(getv3.ok()); - assert(getv3.toLong() == 0); // long(5.0 / 7.0) - assert(getv3.ok()); - assert(getv3.toRational() == Exiv2::Rational(5, 7)); - assert(getv3.ok()); - - const Exiv2::Value &getv6 = xmpData["Xmp.dc.six"].value(); - assert(getv6.toLong() == 0); - assert(getv6.ok()); - assert(getv6.toFloat() == 0.0); - assert(getv6.ok()); - assert(getv6.toRational() == Exiv2::Rational(0, 1)); - assert(getv6.ok()); - - const Exiv2::Value &getv7 = xmpData["Xmp.dc.seven"].value(); - getv7.toLong(); // this should fail - assert(!getv7.ok()); - - const Exiv2::Value &getv8 = xmpData["Xmp.dc.eight"].value(); - assert(getv8.toLong() == 1); - assert(getv8.ok()); - assert(getv8.toFloat() == 1.0); - assert(getv8.ok()); - assert(getv8.toRational() == Exiv2::Rational(1, 1)); - assert(getv8.ok()); - - // Deleting an XMP property - Exiv2::XmpData::iterator pos = xmpData.findKey(Exiv2::XmpKey("Xmp.dc.eight")); - if (pos == xmpData.end()) throw Exiv2::Error(1, "Key not found"); - xmpData.erase(pos); - - // ------------------------------------------------------------------------- - // Exiv2 has specialized values for simple XMP properties, arrays of simple - // properties and language alternatives. - - // Add a simple XMP property in a known namespace - Exiv2::Value::AutoPtr v = Exiv2::Value::create(Exiv2::xmpText); - v->read("image/jpeg"); - xmpData.add(Exiv2::XmpKey("Xmp.dc.format"), v.get()); - - // Add an ordered array of text values. - v = Exiv2::Value::create(Exiv2::xmpSeq); // or xmpBag or xmpAlt. - v->read("1) The first creator"); // The sequence in which the array - v->read("2) The second creator"); // elements are added is their - v->read("3) And another one"); // order in the array. - xmpData.add(Exiv2::XmpKey("Xmp.dc.creator"), v.get()); - - // Add a language alternative property - v = Exiv2::Value::create(Exiv2::langAlt); - v->read("lang=de-DE Hallo, Welt"); // The default doesn't need a - v->read("Hello, World"); // qualifier - xmpData.add(Exiv2::XmpKey("Xmp.dc.description"), v.get()); - - // According to the XMP specification, Xmp.tiff.ImageDescription is an - // alias for Xmp.dc.description. Exiv2 treats an alias just like any - // other property and leaves it to the application to implement specific - // behaviour if desired. - xmpData["Xmp.tiff.ImageDescription"] = "TIFF image description"; - xmpData["Xmp.tiff.ImageDescription"] = "lang=de-DE TIFF Bildbeschreibung"; - - // ------------------------------------------------------------------------- - // Register a namespace which Exiv2 doesn't know yet. This is only needed - // when properties are added manually. If the XMP metadata is read from an - // image, namespaces are decoded and registered at the same time. - Exiv2::XmpProperties::registerNs("myNamespace/", "ns"); - - // ------------------------------------------------------------------------- - // Add a property in the new custom namespace. - xmpData["Xmp.ns.myProperty"] = "myValue"; - - // ------------------------------------------------------------------------- - // There are no specialized values for structures, qualifiers and nested - // types. However, these can be added by using an XmpTextValue and a path as - // the key. - - // Add a structure - Exiv2::XmpTextValue tv("16"); - xmpData.add(Exiv2::XmpKey("Xmp.xmpDM.videoFrameSize/stDim:w"), &tv); - tv.read("9"); - xmpData.add(Exiv2::XmpKey("Xmp.xmpDM.videoFrameSize/stDim:h"), &tv); - tv.read("inch"); - xmpData.add(Exiv2::XmpKey("Xmp.xmpDM.videoFrameSize/stDim:unit"), &tv); - - // Add an element with a qualifier (using the namespace registered above) - xmpData["Xmp.dc.publisher"] = "James Bond"; // creates an unordered array - xmpData["Xmp.dc.publisher[1]/?ns:role"] = "secret agent"; - - // Add a qualifer to an array element of Xmp.dc.creator (added above) - tv.read("programmer"); - xmpData.add(Exiv2::XmpKey("Xmp.dc.creator[2]/?ns:role"), &tv); - - // Add an array of structures - tv.read(""); // Clear the value - tv.setXmpArrayType(Exiv2::XmpValue::xaBag); - xmpData.add(Exiv2::XmpKey("Xmp.xmpBJ.JobRef"), &tv); // Set the array type. - - tv.setXmpArrayType(Exiv2::XmpValue::xaNone); - tv.read("Birthday party"); - xmpData.add(Exiv2::XmpKey("Xmp.xmpBJ.JobRef[1]/stJob:name"), &tv); - tv.read("Photographer"); - xmpData.add(Exiv2::XmpKey("Xmp.xmpBJ.JobRef[1]/stJob:role"), &tv); - - tv.read("Wedding ceremony"); - xmpData.add(Exiv2::XmpKey("Xmp.xmpBJ.JobRef[2]/stJob:name"), &tv); - tv.read("Best man"); - xmpData.add(Exiv2::XmpKey("Xmp.xmpBJ.JobRef[2]/stJob:role"), &tv); - - // Add a creator contact info structure - xmpData["Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCity"] = "Kuala Lumpur"; - xmpData["Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCtry"] = "Malaysia"; - xmpData["Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiUrlWork"] = "http://www.exiv2.org"; - - // ------------------------------------------------------------------------- - // Output XMP properties - for (Exiv2::XmpData::const_iterator md = xmpData.begin(); - md != xmpData.end(); ++md) { - std::cout << std::setfill(' ') << std::left - << std::setw(44) - << md->key() << " " - << std::setw(9) << std::setfill(' ') << std::left - << md->typeName() << " " - << std::dec << std::setw(3) - << std::setfill(' ') << std::right - << md->count() << " " - << std::dec << md->value() - << std::endl; - } - - // ------------------------------------------------------------------------- - // Serialize the XMP data and output the XMP packet - std::string xmpPacket; - if (0 != Exiv2::XmpParser::encode(xmpPacket, xmpData)) { - throw Exiv2::Error(1, "Failed to serialize XMP data"); - } - std::cout << xmpPacket << "\n"; - - // Cleanup - Exiv2::XmpParser::terminate(); - - return 0; -} -catch (Exiv2::AnyError& e) { - std::cout << "Caught Exiv2 exception '" << e << "'\n"; - return -1; -} diff --git a/platform/win32/msvc/external/exiv2/src/TODO b/platform/win32/msvc/external/exiv2/src/TODO deleted file mode 100644 index 6c6c7a94261..00000000000 --- a/platform/win32/msvc/external/exiv2/src/TODO +++ /dev/null @@ -1,39 +0,0 @@ -Library Features: -+ rename erase* methods that access a file to remove* -+ add ExifData::erase(tag) -+ Thumbnail support: set (re-calculate) -+ operator>> for Value, since we already have read()? -+ Use size_t where appropriate -+ Support TIFF type ids -+ Support for broken IFD makernotes (which have corrupted IFD offsets) -+ Support non-intrusive deletion of entries from an IFD. -+ Write an example using low level IFD classes to print summary Exif info -+ Extended JPEG support (actual resolution of the image) -+ Implement proper error handling -+ Complete support to create Exif data from scratch: - + set thumbnail, write thumbnail tags -+ Make it possible to force write from metadata (just an optional arg to write?) - -+ Make Image::doWriteMetadata do its work in a single pass - -+ Revise Image and IptcData+ExifData API (aka turn it inside out) -+ Add PSD images support (and TIFF, NEF, CRW...) -+ Add support for XML metadata files - -Exiv2 functionality -+ Add offset to value for hexdump (requires metadata to have an offset) - -Bugs: -+ Handle all Todo's -+ Cleanup and fix implementation of JpegImage (must be able to read any APP0/1), - should be able to insert exv into extracted thumbs (usually w/o APP0/1) -+ Review Image interface. Is it really necessary to have so many functions there? -+ Review the handling of type ids? What if we encounter type 27 in an IFD? -+ Rational and other output operators (see Josuttis, p653) -+ Through ExifData::iterator and Metadatum::operator= it is possible to have - multiple copies of one metadatum in the metadata container -+ Checks and non-intrusive updates must be atomic, i.e., not change anything - if the metadata is not compatible -+ Review: Exception safety -+ Review: Ifd1 only at Thumbnail, do we really need Thumbnail::update() ? -+ Should JpegImage differ between NO Jpeg comment and an empty Jpeg comment?? diff --git a/platform/win32/msvc/external/exiv2/src/actions.cpp b/platform/win32/msvc/external/exiv2/src/actions.cpp deleted file mode 100644 index a1026838fa0..00000000000 --- a/platform/win32/msvc/external/exiv2/src/actions.cpp +++ /dev/null @@ -1,2008 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: actions.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - History: 08-Dec-03, ahu: created - 30-Apr-06, Roger Larsson: Print filename if processing multiple files - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: actions.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#ifndef EXV_HAVE_TIMEGM -# include "timegm.h" -#endif -#include "actions.hpp" -#include "exiv2app.hpp" -#include "image.hpp" -#include "jpgimage.hpp" -#include "xmpsidecar.hpp" -#include "utils.hpp" -#include "types.hpp" -#include "exif.hpp" -#include "easyaccess.hpp" -#include "iptc.hpp" -#include "xmp.hpp" -#include "preview.hpp" -#include "futils.hpp" -#include "i18n.h" // NLS support. - -// + standard includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // for stat() -#include // for stat() -#ifdef EXV_HAVE_UNISTD_H -# include // for stat() -#endif -#ifdef _MSC_VER -# include -#else -# include -#endif - -// ***************************************************************************** -// local declarations -namespace { - - //! Helper class to set the timestamp of a file to that of another file - class Timestamp { - public: - //! C'tor - Timestamp() : actime_(0), modtime_(0) {} - //! Read the timestamp of a file - int read(const std::string& path); - //! Read the timestamp from a broken-down time in buffer \em tm. - int read(struct tm* tm); - //! Set the timestamp of a file - int touch(const std::string& path); - - private: - time_t actime_; - time_t modtime_; - }; - - /*! - @brief Convert a string "YYYY:MM:DD HH:MI:SS" to a struct tm type, - returns 0 if successful - */ - int str2Tm(const std::string& timeStr, struct tm* tm); - - //! Convert a localtime to a string "YYYY:MM:DD HH:MI:SS", "" on error - std::string time2Str(time_t time); - - //! Convert a tm structure to a string "YYYY:MM:DD HH:MI:SS", "" on error - std::string tm2Str(const struct tm* tm); - - /*! - @brief Copy metadata from source to target according to Params::copyXyz - - @param source Source file path - @param target Target file path. An *.exv file is created if target doesn't - exist. - @param targetType Image type for the target image in case it needs to be - created. - @param preserve Indicates if existing metadata in the target file should - be kept. - @return 0 if successful, else an error code - */ - int metacopy(const std::string& source, - const std::string& target, - int targetType, - bool preserve); - - /*! - @brief Rename a file according to a timestamp value. - - @param path The original file path. Contains the new path on exit. - @param tm Pointer to a buffer with the broken-down time to rename - the file to. - @return 0 if successful, -1 if the file was skipped, 1 on error. - */ - int renameFile(std::string& path, const struct tm* tm); - - /*! - @brief Make a file path from the current file path, destination - directory (if any) and the filename extension passed in. - - @param path Path of the existing file - @param ext New filename extension (incl. the dot '.' if required) - @return 0 if successful, 1 if the new file exists and the user - chose not to overwrite it. - */ - std::string newFilePath(const std::string& path, const std::string& ext); - - /*! - @brief Check if file \em path exists and whether it should be - overwritten. Ask user if necessary. Return 1 if the file - exists and shouldn't be overwritten, else 0. - */ - int dontOverwrite(const std::string& path); -} - -// ***************************************************************************** -// class member definitions -namespace Action { - - Task::~Task() - { - } - - Task::AutoPtr Task::clone() const - { - return AutoPtr(clone_()); - } - - TaskFactory* TaskFactory::instance_ = 0; - - TaskFactory& TaskFactory::instance() - { - if (0 == instance_) { - instance_ = new TaskFactory; - } - return *instance_; - } // TaskFactory::instance - - void TaskFactory::cleanup() - { - if (instance_ != 0) { - Registry::iterator e = registry_.end(); - for (Registry::iterator i = registry_.begin(); i != e; ++i) { - delete i->second; - } - delete instance_; - instance_ = 0; - } - } //TaskFactory::cleanup - - void TaskFactory::registerTask(TaskType type, Task::AutoPtr task) - { - Registry::iterator i = registry_.find(type); - if (i != registry_.end()) { - delete i->second; - } - registry_[type] = task.release(); - } // TaskFactory::registerTask - - TaskFactory::TaskFactory() - { - // Register a prototype of each known task - registerTask(adjust, Task::AutoPtr(new Adjust)); - registerTask(print, Task::AutoPtr(new Print)); - registerTask(rename, Task::AutoPtr(new Rename)); - registerTask(erase, Task::AutoPtr(new Erase)); - registerTask(extract, Task::AutoPtr(new Extract)); - registerTask(insert, Task::AutoPtr(new Insert)); - registerTask(modify, Task::AutoPtr(new Modify)); - registerTask(fixiso, Task::AutoPtr(new FixIso)); - registerTask(fixcom, Task::AutoPtr(new FixCom)); - } // TaskFactory c'tor - - Task::AutoPtr TaskFactory::create(TaskType type) - { - Registry::const_iterator i = registry_.find(type); - if (i != registry_.end() && i->second != 0) { - Task* t = i->second; - return t->clone(); - } - return Task::AutoPtr(0); - } // TaskFactory::create - - Print::~Print() - { - } - - int Print::run(const std::string& path) - try { - path_ = path; - int rc = 0; - switch (Params::instance().printMode_) { - case Params::pmSummary: rc = printSummary(); break; - case Params::pmList: rc = printList(); break; - case Params::pmComment: rc = printComment(); break; - case Params::pmPreview: rc = printPreviewList(); break; - } - return rc; - } - catch(const Exiv2::AnyError& e) { - std::cerr << "Exiv2 exception in print action for file " - << path << ":\n" << e << "\n"; - return 1; - } // Print::run - - int Print::printSummary() - { - if (!Exiv2::fileExists(path_, true)) { - std::cerr << path_ << ": " - << _("Failed to open the file\n"); - return -1; - } - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path_); - assert(image.get() != 0); - image->readMetadata(); - Exiv2::ExifData& exifData = image->exifData(); - align_ = 16; - - // Filename - printLabel(_("File name")); - std::cout << path_ << std::endl; - - // Filesize - struct stat buf; - if (0 == stat(path_.c_str(), &buf)) { - printLabel(_("File size")); - std::cout << buf.st_size << " " << _("Bytes") << std::endl; - } - - // MIME type - printLabel(_("MIME type")); - std::cout << image->mimeType() << std::endl; - - // Image size - printLabel(_("Image size")); - std::cout << image->pixelWidth() << " x " << image->pixelHeight() << std::endl; - - if (exifData.empty()) { - std::cerr << path_ << ": " - << _("No Exif data found in the file\n"); - return -3; - } - - // Camera make - printTag(exifData, "Exif.Image.Make", _("Camera make")); - - // Camera model - printTag(exifData, "Exif.Image.Model", _("Camera model")); - - // Image Timestamp - printTag(exifData, "Exif.Photo.DateTimeOriginal", _("Image timestamp")); - - // Image number - // Todo: Image number for cameras other than Canon - printTag(exifData, "Exif.Canon.FileNumber", _("Image number")); - - // Exposure time - // From ExposureTime, failing that, try ShutterSpeedValue - bool done = false; - printLabel(_("Exposure time")); - if (!done) { - done = 0 != printTag(exifData, "Exif.Photo.ExposureTime"); - } - if (!done) { - done = 0 != printTag(exifData, "Exif.Photo.ShutterSpeedValue"); - } - std::cout << std::endl; - - // Aperture - // Get if from FNumber and, failing that, try ApertureValue - done = false; - printLabel(_("Aperture")); - if (!done) { - done = 0 != printTag(exifData, "Exif.Photo.FNumber"); - } - if (!done) { - done = 0 != printTag(exifData, "Exif.Photo.ApertureValue"); - } - std::cout << std::endl; - - // Exposure bias - printTag(exifData, "Exif.Photo.ExposureBiasValue", _("Exposure bias")); - - // Flash - printTag(exifData, "Exif.Photo.Flash", _("Flash")); - - // Flash bias - printTag(exifData, Exiv2::flashBias, _("Flash bias")); - - // Actual focal length and 35 mm equivalent - // Todo: Calculate 35 mm equivalent a la jhead - Exiv2::ExifData::const_iterator md; - printLabel(_("Focal length")); - if (1 == printTag(exifData, "Exif.Photo.FocalLength")) { - md = exifData.findKey( - Exiv2::ExifKey("Exif.Photo.FocalLengthIn35mmFilm")); - if (md != exifData.end()) { - std::cout << " ("<< _("35 mm equivalent") << ": " - << md->print(&exifData) << ")"; - } - } - else { - printTag(exifData, "Exif.Canon.FocalLength"); - } - std::cout << std::endl; - - // Subject distance - printLabel(_("Subject distance")); - done = false; - if (!done) { - done = 0 != printTag(exifData, "Exif.Photo.SubjectDistance"); - } - if (!done) { - done = 0 != printTag(exifData, "Exif.CanonSi.SubjectDistance"); - } - std::cout << std::endl; - - // ISO speed - printTag(exifData, Exiv2::isoSpeed, _("ISO speed")); - - // Exposure mode - printTag(exifData, Exiv2::exposureMode, _("Exposure mode")); - - // Metering mode - printTag(exifData, "Exif.Photo.MeteringMode", _("Metering mode")); - - // Macro mode - printTag(exifData, Exiv2::macroMode, _("Macro mode")); - - // Image quality setting (compression) - printTag(exifData, Exiv2::imageQuality, _("Image quality")); - - // Exif Resolution - printLabel(_("Exif Resolution")); - long xdim = 0; - long ydim = 0; - if (image->mimeType() == "image/tiff") { - xdim = image->pixelWidth(); - ydim = image->pixelHeight(); - } - else { - md = exifData.findKey(Exiv2::ExifKey("Exif.Image.ImageWidth")); - if (md == exifData.end()) { - md = exifData.findKey(Exiv2::ExifKey("Exif.Photo.PixelXDimension")); - } - if (md != exifData.end() && md->count() > 0) { - xdim = md->toLong(); - } - md = exifData.findKey(Exiv2::ExifKey("Exif.Image.ImageLength")); - if (md == exifData.end()) { - md = exifData.findKey(Exiv2::ExifKey("Exif.Photo.PixelYDimension")); - } - if (md != exifData.end() && md->count() > 0) { - ydim = md->toLong(); - } - } - if (xdim != 0 && ydim != 0) { - std::cout << xdim << " x " << ydim; - } - std::cout << std::endl; - - // White balance - printTag(exifData, Exiv2::whiteBalance, _("White balance")); - - // Thumbnail - printLabel(_("Thumbnail")); - Exiv2::ExifThumbC exifThumb(exifData); - std::string thumbExt = exifThumb.extension(); - if (thumbExt.empty()) { - std::cout << _("None"); - } - else { - Exiv2::DataBuf buf = exifThumb.copy(); - if (buf.size_ == 0) { - std::cout << _("None"); - } - else { - std::cout << exifThumb.mimeType() << ", " - << buf.size_ << " " << _("Bytes"); - } - } - std::cout << std::endl; - - // Copyright - printTag(exifData, "Exif.Image.Copyright", _("Copyright")); - - // Exif Comment - printTag(exifData, "Exif.Photo.UserComment", _("Exif comment")); - std::cout << std::endl; - - return 0; - } // Print::printSummary - - void Print::printLabel(const std::string& label) const - { - std::cout << std::setfill(' ') << std::left; - if (Params::instance().files_.size() > 1) { - std::cout << std::setw(20) << path_ << " "; - } - std::cout << std::setw(align_) - << label << ": "; - } - - int Print::printTag(const Exiv2::ExifData& exifData, - const std::string& key, - const std::string& label) const - { - int rc = 0; - if (!label.empty()) { - printLabel(label); - } - Exiv2::ExifKey ek(key); - Exiv2::ExifData::const_iterator md = exifData.findKey(ek); - if (md != exifData.end()) { - md->write(std::cout, &exifData); - rc = 1; - } - if (!label.empty()) std::cout << std::endl; - return rc; - } // Print::printTag - - int Print::printTag(const Exiv2::ExifData& exifData, - EasyAccessFct easyAccessFct, - const std::string& label) const - { - int rc = 0; - if (!label.empty()) { - printLabel(label); - } - Exiv2::ExifData::const_iterator md = easyAccessFct(exifData); - if (md != exifData.end()) { - md->write(std::cout, &exifData); - rc = 1; - } - if (!label.empty()) std::cout << std::endl; - return rc; - } // Print::printTag - - int Print::printList() - { - if (!Exiv2::fileExists(path_, true)) { - std::cerr << path_ - << ": " << _("Failed to open the file\n"); - return -1; - } - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path_); - assert(image.get() != 0); - image->readMetadata(); - // Set defaults for metadata types and data columns - if (Params::instance().printTags_ == Exiv2::mdNone) { - Params::instance().printTags_ = Exiv2::mdExif | Exiv2::mdIptc | Exiv2::mdXmp; - } - if (Params::instance().printItems_ == 0) { - Params::instance().printItems_ = Params::prKey | Params::prType | Params::prCount | Params::prTrans; - } - return printMetadata(image.get()); - } // Print::printList - - int Print::printMetadata(const Exiv2::Image* image) - { - int rc = 0; - if (Params::instance().printTags_ & Exiv2::mdExif) { - const Exiv2::ExifData& exifData = image->exifData(); - for (Exiv2::ExifData::const_iterator md = exifData.begin(); - md != exifData.end(); ++md) { - printMetadatum(*md, image); - } - if (exifData.empty()) { - if (Params::instance().verbose_) { - std::cerr << path_ << ": " << _("No Exif data found in the file\n"); - } - rc = -3; - } - } - if (Params::instance().printTags_ & Exiv2::mdIptc) { - const Exiv2::IptcData& iptcData = image->iptcData(); - for (Exiv2::IptcData::const_iterator md = iptcData.begin(); - md != iptcData.end(); ++md) { - printMetadatum(*md, image); - } - if (iptcData.empty()) { - if (Params::instance().verbose_) { - std::cerr << path_ << ": " << _("No IPTC data found in the file\n"); - } - rc = -3; - } - } - if (Params::instance().printTags_ & Exiv2::mdXmp) { - const Exiv2::XmpData& xmpData = image->xmpData(); - for (Exiv2::XmpData::const_iterator md = xmpData.begin(); - md != xmpData.end(); ++md) { - printMetadatum(*md, image); - } - if (xmpData.empty()) { - if (Params::instance().verbose_) { - std::cerr << path_ << ": " << _("No XMP data found in the file\n"); - } - rc = -3; - } - } - return rc; - } // Print::printMetadata - - bool Print::grepTag(const std::string& key) - { - if (Params::instance().keys_.empty()) return true; - for (Params::Keys::const_iterator k = Params::instance().keys_.begin(); - k != Params::instance().keys_.end(); ++k) { - if (*k == key) return true; - } - return false; - } - - void Print::printMetadatum(const Exiv2::Metadatum& md, const Exiv2::Image* pImage) - { - if (!grepTag(md.key())) return; - - if ( Params::instance().unknown_ - && md.tagName().substr(0, 2) == "0x") { - return; - } - bool const manyFiles = Params::instance().files_.size() > 1; - if (manyFiles) { - std::cout << std::setfill(' ') << std::left << std::setw(20) - << path_ << " "; - } - bool first = true; - if (Params::instance().printItems_ & Params::prTag) { - if (!first) std::cout << " "; - first = false; - std::cout << "0x" << std::setw(4) << std::setfill('0') - << std::right << std::hex - << md.tag(); - } - if (Params::instance().printItems_ & Params::prGroup) { - if (!first) std::cout << " "; - first = false; - std::cout << std::setw(12) << std::setfill(' ') << std::left - << md.groupName(); - } - if (Params::instance().printItems_ & Params::prKey) { - if (!first) std::cout << " "; - first = false; - std::cout << std::setfill(' ') << std::left << std::setw(44) - << md.key(); - } - if (Params::instance().printItems_ & Params::prName) { - if (!first) std::cout << " "; - first = false; - std::cout << std::setw(27) << std::setfill(' ') << std::left - << md.tagName(); - } - if (Params::instance().printItems_ & Params::prLabel) { - if (!first) std::cout << " "; - first = false; - std::cout << std::setw(30) << std::setfill(' ') << std::left - << md.tagLabel(); - } - if (Params::instance().printItems_ & Params::prType) { - if (!first) std::cout << " "; - first = false; - std::cout << std::setw(9) << std::setfill(' ') << std::left; - const char* tn = md.typeName(); - if (tn) { - std::cout << tn; - } - else { - std::ostringstream os; - os << "0x" << std::setw(4) << std::setfill('0') << std::hex << md.typeId(); - std::cout << os.str(); - } - } - if (Params::instance().printItems_ & Params::prCount) { - if (!first) std::cout << " "; - first = false; - std::cout << std::dec << std::setw(3) - << std::setfill(' ') << std::right - << md.count(); - } - if (Params::instance().printItems_ & Params::prSize) { - if (!first) std::cout << " "; - first = false; - std::cout << std::dec << std::setw(3) - << std::setfill(' ') << std::right - << md.size(); - } - if (Params::instance().printItems_ & Params::prValue) { - if (!first) std::cout << " "; - first = false; - if ( Params::instance().binary_ - && ( md.typeId() == Exiv2::undefined - || md.typeId() == Exiv2::unsignedByte - || md.typeId() == Exiv2::signedByte) - && md.size() > 128) { - std::cout << _("(Binary value suppressed)") << std::endl; - return; - } - bool done = false; - if (0 == strcmp(md.key().c_str(), "Exif.Photo.UserComment")) { - const Exiv2::CommentValue* pcv = dynamic_cast(&md.value()); - if (pcv) { - Exiv2::CommentValue::CharsetId csId = pcv->charsetId(); - if (csId != Exiv2::CommentValue::undefined) { - std::cout << "charset=\"" << Exiv2::CommentValue::CharsetInfo::name(csId) << "\" "; - } - std::cout << pcv->comment(Params::instance().charset_.c_str()); - done = true; - } - } - if (!done) std::cout << std::dec << md.value(); - } - if (Params::instance().printItems_ & Params::prTrans) { - if (!first) std::cout << " "; - first = false; - if ( Params::instance().binary_ - && ( md.typeId() == Exiv2::undefined - || md.typeId() == Exiv2::unsignedByte - || md.typeId() == Exiv2::signedByte) - && md.size() > 128) { - std::cout << _("(Binary value suppressed)") << std::endl; - return; - } - bool done = false; - if (0 == strcmp(md.key().c_str(), "Exif.Photo.UserComment")) { - const Exiv2::CommentValue* pcv = dynamic_cast(&md.value()); - if (pcv) { - std::cout << pcv->comment(Params::instance().charset_.c_str()); - done = true; - } - } - if (!done) std::cout << std::dec << md.print(&pImage->exifData()); - } - if (Params::instance().printItems_ & Params::prHex) { - if (!first) std::cout << std::endl; - first = false; - if ( Params::instance().binary_ - && ( md.typeId() == Exiv2::undefined - || md.typeId() == Exiv2::unsignedByte - || md.typeId() == Exiv2::signedByte) - && md.size() > 128) { - std::cout << _("(Binary value suppressed)") << std::endl; - return; - } - Exiv2::DataBuf buf(md.size()); - md.copy(buf.pData_, pImage->byteOrder()); - Exiv2::hexdump(std::cout, buf.pData_, buf.size_); - } - std::cout << std::endl; - } // Print::printMetadatum - - int Print::printComment() - { - if (!Exiv2::fileExists(path_, true)) { - std::cerr << path_ - << ": " << _("Failed to open the file\n"); - return -1; - } - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path_); - assert(image.get() != 0); - image->readMetadata(); - if (Params::instance().verbose_) { - std::cout << _("JPEG comment") << ": "; - } - std::cout << image->comment() << std::endl; - return 0; - } // Print::printComment - - int Print::printPreviewList() - { - if (!Exiv2::fileExists(path_, true)) { - std::cerr << path_ - << ": " << _("Failed to open the file\n"); - return -1; - } - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path_); - assert(image.get() != 0); - image->readMetadata(); - bool const manyFiles = Params::instance().files_.size() > 1; - int cnt = 0; - Exiv2::PreviewManager pm(*image); - Exiv2::PreviewPropertiesList list = pm.getPreviewProperties(); - for (Exiv2::PreviewPropertiesList::const_iterator pos = list.begin(); pos != list.end(); ++pos) { - if (manyFiles) { - std::cout << std::setfill(' ') << std::left << std::setw(20) - << path_ << " "; - } - std::cout << _("Preview") << " " << ++cnt << ": " - << pos->mimeType_ << ", "; - if (pos->width_ != 0 && pos->height_ != 0) { - std::cout << pos->width_ << "x" << pos->height_ << " " - << _("pixels") << ", "; - } - std::cout << pos->size_ << " " << _("bytes") << "\n"; - } - return 0; - } // Print::printPreviewList - - Print::AutoPtr Print::clone() const - { - return AutoPtr(clone_()); - } - - Print* Print::clone_() const - { - return new Print(*this); - } - - Rename::~Rename() - { - } - - int Rename::run(const std::string& path) - { - try { - if (!Exiv2::fileExists(path, true)) { - std::cerr << path - << ": " << _("Failed to open the file\n"); - return -1; - } - Timestamp ts; - if (Params::instance().preserve_) { - ts.read(path); - } - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path); - assert(image.get() != 0); - image->readMetadata(); - Exiv2::ExifData& exifData = image->exifData(); - if (exifData.empty()) { - std::cerr << path - << ": " << _("No Exif data found in the file\n"); - return -3; - } - Exiv2::ExifKey key("Exif.Photo.DateTimeOriginal"); - Exiv2::ExifData::iterator md = exifData.findKey(key); - if (md == exifData.end()) { - key = Exiv2::ExifKey("Exif.Image.DateTime"); - md = exifData.findKey(key); - } - if (md == exifData.end()) { - std::cerr << _("Neither tag") << " `Exif.Photo.DateTimeOriginal' " - << _("nor") << " `Exif.Image.DateTime' " - << _("found in the file") << " " << path << "\n"; - return 1; - } - std::string v = md->toString(); - if (v.length() == 0 || v[0] == ' ') { - std::cerr << _("Image file creation timestamp not set in the file") - << " " << path << "\n"; - return 1; - } - struct tm tm; - if (str2Tm(v, &tm) != 0) { - std::cerr << _("Failed to parse timestamp") << " `" << v - << "' " << _("in the file") << " " << path << "\n"; - return 1; - } - if ( Params::instance().timestamp_ - || Params::instance().timestampOnly_) { - ts.read(&tm); - } - int rc = 0; - std::string newPath = path; - if (Params::instance().timestampOnly_) { - if (Params::instance().verbose_) { - std::cout << _("Updating timestamp to") << " " << v << std::endl; - } - } - else { - rc = renameFile(newPath, &tm); - if (rc == -1) return 0; // skip - } - if ( 0 == rc - && ( Params::instance().preserve_ - || Params::instance().timestamp_ - || Params::instance().timestampOnly_)) { - ts.touch(newPath); - } - return rc; - } - catch(const Exiv2::AnyError& e) - { - std::cerr << "Exiv2 exception in rename action for file " << path - << ":\n" << e << "\n"; - return 1; - }} // Rename::run - - Rename::AutoPtr Rename::clone() const - { - return AutoPtr(clone_()); - } - - Rename* Rename::clone_() const - { - return new Rename(*this); - } - - Erase::~Erase() - { - } - - int Erase::run(const std::string& path) - try { - path_ = path; - - if (!Exiv2::fileExists(path_, true)) { - std::cerr << path_ - << ": " << _("Failed to open the file\n"); - return -1; - } - Timestamp ts; - if (Params::instance().preserve_) { - ts.read(path); - } - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path_); - assert(image.get() != 0); - image->readMetadata(); - // Thumbnail must be before Exif - int rc = 0; - if (Params::instance().target_ & Params::ctThumb) { - rc = eraseThumbnail(image.get()); - } - if (0 == rc && Params::instance().target_ & Params::ctExif) { - rc = eraseExifData(image.get()); - } - if (0 == rc && Params::instance().target_ & Params::ctIptc) { - rc = eraseIptcData(image.get()); - } - if (0 == rc && Params::instance().target_ & Params::ctComment) { - rc = eraseComment(image.get()); - } - if (0 == rc && Params::instance().target_ & Params::ctXmp) { - rc = eraseXmpData(image.get()); - } - if (0 == rc) { - image->writeMetadata(); - } - if (Params::instance().preserve_) { - ts.touch(path); - } - - return rc; - } - catch(const Exiv2::AnyError& e) - { - std::cerr << "Exiv2 exception in erase action for file " << path - << ":\n" << e << "\n"; - return 1; - } // Erase::run - - int Erase::eraseThumbnail(Exiv2::Image* image) const - { - Exiv2::ExifThumb exifThumb(image->exifData()); - std::string thumbExt = exifThumb.extension(); - if (thumbExt.empty()) { - return 0; - } - exifThumb.erase(); - if (Params::instance().verbose_) { - std::cout << _("Erasing thumbnail data") << std::endl; - } - return 0; - } - - int Erase::eraseExifData(Exiv2::Image* image) const - { - if (Params::instance().verbose_ && image->exifData().count() > 0) { - std::cout << _("Erasing Exif data from the file") << std::endl; - } - image->clearExifData(); - return 0; - } - - int Erase::eraseIptcData(Exiv2::Image* image) const - { - if (Params::instance().verbose_ && image->iptcData().count() > 0) { - std::cout << _("Erasing IPTC data from the file") << std::endl; - } - image->clearIptcData(); - return 0; - } - - int Erase::eraseComment(Exiv2::Image* image) const - { - if (Params::instance().verbose_ && image->comment().size() > 0) { - std::cout << _("Erasing JPEG comment from the file") << std::endl; - } - image->clearComment(); - return 0; - } - - int Erase::eraseXmpData(Exiv2::Image* image) const - { - if (Params::instance().verbose_ && image->xmpData().count() > 0) { - std::cout << _("Erasing XMP data from the file") << std::endl; - } - image->clearXmpData(); // Quick fix for bug #612 - image->clearXmpPacket(); - return 0; - } - - Erase::AutoPtr Erase::clone() const - { - return AutoPtr(clone_()); - } - - Erase* Erase::clone_() const - { - return new Erase(*this); - } - - Extract::~Extract() - { - } - - int Extract::run(const std::string& path) - try { - path_ = path; - int rc = 0; - if (Params::instance().target_ & Params::ctThumb) { - rc = writeThumbnail(); - } - if (Params::instance().target_ & Params::ctXmpSidecar) { - std::string xmpPath = newFilePath(path_, ".xmp"); - if (dontOverwrite(xmpPath)) return 0; - rc = metacopy(path_, xmpPath, Exiv2::ImageType::xmp, false); - } - if (Params::instance().target_ & Params::ctPreview) { - rc = writePreviews(); - } - if ( !(Params::instance().target_ & Params::ctXmpSidecar) - && !(Params::instance().target_ & Params::ctThumb) - && !(Params::instance().target_ & Params::ctPreview)) { - std::string exvPath = newFilePath(path_, ".exv"); - if (dontOverwrite(exvPath)) return 0; - rc = metacopy(path_, exvPath, Exiv2::ImageType::exv, false); - } - return rc; - } - catch(const Exiv2::AnyError& e) - { - std::cerr << "Exiv2 exception in extract action for file " << path - << ":\n" << e << "\n"; - return 1; - } // Extract::run - - int Extract::writeThumbnail() const - { - if (!Exiv2::fileExists(path_, true)) { - std::cerr << path_ - << ": " << _("Failed to open the file\n"); - return -1; - } - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path_); - assert(image.get() != 0); - image->readMetadata(); - Exiv2::ExifData& exifData = image->exifData(); - if (exifData.empty()) { - std::cerr << path_ - << ": " << _("No Exif data found in the file\n"); - return -3; - } - int rc = 0; - Exiv2::ExifThumb exifThumb(exifData); - std::string thumbExt = exifThumb.extension(); - if (thumbExt.empty()) { - std::cerr << path_ << ": " << _("Image does not contain an Exif thumbnail\n"); - } - else { - std::string thumb = newFilePath(path_, "-thumb"); - std::string thumbPath = thumb + thumbExt; - if (dontOverwrite(thumbPath)) return 0; - if (Params::instance().verbose_) { - Exiv2::DataBuf buf = exifThumb.copy(); - if (buf.size_ != 0) { - std::cout << _("Writing thumbnail") << " (" << exifThumb.mimeType() << ", " - << buf.size_ << " " << _("Bytes") << ") " << _("to file") << " " - << thumbPath << std::endl; - } - } - rc = exifThumb.writeFile(thumb); - if (rc == 0) { - std::cerr << path_ << ": " << _("Exif data doesn't contain a thumbnail\n"); - } - } - return rc; - } // Extract::writeThumbnail - - int Extract::writePreviews() const - { - if (!Exiv2::fileExists(path_, true)) { - std::cerr << path_ - << ": " << _("Failed to open the file\n"); - return -1; - } - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path_); - assert(image.get() != 0); - image->readMetadata(); - - Exiv2::PreviewManager pvMgr(*image); - Exiv2::PreviewPropertiesList pvList = pvMgr.getPreviewProperties(); - - const Params::PreviewNumbers& numbers = Params::instance().previewNumbers_; - for (Params::PreviewNumbers::const_iterator n = numbers.begin(); n != numbers.end(); ++n) { - if (*n == 0) { - // Write all previews - for (int num = 0; num < static_cast(pvList.size()); ++num) { - writePreviewFile(pvMgr.getPreviewImage(pvList[num]), num + 1); - } - break; - } - if (*n > static_cast(pvList.size())) { - std::cerr << path_ << ": " << _("Image does not have preview") - << " " << *n << "\n"; - continue; - } - writePreviewFile(pvMgr.getPreviewImage(pvList[*n - 1]), *n); - } - return 0; - } // Extract::writePreviews - - void Extract::writePreviewFile(const Exiv2::PreviewImage& pvImg, int num) const - { - std::string pvFile = newFilePath(path_, "-preview") + Exiv2::toString(num); - std::string pvPath = pvFile + pvImg.extension(); - if (dontOverwrite(pvPath)) return; - if (Params::instance().verbose_) { - std::cout << _("Writing preview") << " " << num << " (" - << pvImg.mimeType() << ", "; - if (pvImg.width() != 0 && pvImg.height() != 0) { - std::cout << pvImg.width() << "x" << pvImg.height() << " " - << _("pixels") << ", "; - } - std::cout << pvImg.size() << " " << _("bytes") << ") " - << _("to file") << " " << pvPath << std::endl; - } - long rc = pvImg.writeFile(pvFile); - if (rc == 0) { - std::cerr << path_ << ": " << _("Image does not have preview") - << " " << num << "\n"; - } - } // Extract::writePreviewFile - - Extract::AutoPtr Extract::clone() const - { - return AutoPtr(clone_()); - } - - Extract* Extract::clone_() const - { - return new Extract(*this); - } - - Insert::~Insert() - { - } - - int Insert::run(const std::string& path) - try { - if (!Exiv2::fileExists(path, true)) { - std::cerr << path - << ": " << _("Failed to open the file\n"); - return -1; - } - int rc = 0; - Timestamp ts; - if (Params::instance().preserve_) { - ts.read(path); - } - if (Params::instance().target_ & Params::ctThumb) { - rc = insertThumbnail(path); - } - if ( rc == 0 - && ( Params::instance().target_ & Params::ctExif - || Params::instance().target_ & Params::ctIptc - || Params::instance().target_ & Params::ctComment - || Params::instance().target_ & Params::ctXmp)) { - std::string suffix = Params::instance().suffix_; - if (suffix.empty()) suffix = ".exv"; - if (Params::instance().target_ & Params::ctXmpSidecar) suffix = ".xmp"; - std::string exvPath = newFilePath(path, suffix); - rc = metacopy(exvPath, path, Exiv2::ImageType::none, true); - } - if (0 == rc && Params::instance().target_ & Params::ctXmpSidecar) { - rc = insertXmpPacket(path); - } - if (Params::instance().preserve_) { - ts.touch(path); - } - return rc; - } - catch(const Exiv2::AnyError& e) - { - std::cerr << "Exiv2 exception in insert action for file " << path - << ":\n" << e << "\n"; - return 1; - } // Insert::run - - int Insert::insertXmpPacket(const std::string& path) const - { - std::string xmpPath = newFilePath(path, ".xmp"); - if (!Exiv2::fileExists(xmpPath, true)) { - std::cerr << xmpPath - << ": " << _("Failed to open the file\n"); - return -1; - } - if (!Exiv2::fileExists(path, true)) { - std::cerr << path - << ": " << _("Failed to open the file\n"); - return -1; - } - Exiv2::DataBuf buf = Exiv2::readFile(xmpPath); - std::string xmpPacket; - xmpPacket.assign(reinterpret_cast(buf.pData_), buf.size_); - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path); - assert(image.get() != 0); - image->readMetadata(); - image->setXmpPacket(xmpPacket); - image->writeMetadata(); - - return 0; - } - - int Insert::insertThumbnail(const std::string& path) const - { - std::string thumbPath = newFilePath(path, "-thumb.jpg"); - if (!Exiv2::fileExists(thumbPath, true)) { - std::cerr << thumbPath - << ": " << _("Failed to open the file\n"); - return -1; - } - if (!Exiv2::fileExists(path, true)) { - std::cerr << path - << ": " << _("Failed to open the file\n"); - return -1; - } - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path); - assert(image.get() != 0); - image->readMetadata(); - Exiv2::ExifThumb exifThumb(image->exifData()); - exifThumb.setJpegThumbnail(thumbPath); - image->writeMetadata(); - - return 0; - } // Insert::insertThumbnail - - Insert::AutoPtr Insert::clone() const - { - return AutoPtr(clone_()); - } - - Insert* Insert::clone_() const - { - return new Insert(*this); - } - - Modify::~Modify() - { - } - - int Modify::run(const std::string& path) - { - try { - if (!Exiv2::fileExists(path, true)) { - std::cerr << path - << ": " << _("Failed to open the file\n"); - return -1; - } - Timestamp ts; - if (Params::instance().preserve_) { - ts.read(path); - } - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path); - assert(image.get() != 0); - image->readMetadata(); - - int rc = applyCommands(image.get()); - - // Save both exif and iptc metadata - image->writeMetadata(); - - if (Params::instance().preserve_) { - ts.touch(path); - } - return rc; - } - catch(const Exiv2::AnyError& e) - { - std::cerr << "Exiv2 exception in modify action for file " << path - << ":\n" << e << "\n"; - return 1; - } - } // Modify::run - - int Modify::applyCommands(Exiv2::Image* pImage) - { - if (!Params::instance().jpegComment_.empty()) { - if (Params::instance().verbose_) { - std::cout << _("Setting JPEG comment") << " '" - << Params::instance().jpegComment_ - << "'" - << std::endl; - } - pImage->setComment(Params::instance().jpegComment_); - } - - // loop through command table and apply each command - ModifyCmds& modifyCmds = Params::instance().modifyCmds_; - ModifyCmds::const_iterator i = modifyCmds.begin(); - ModifyCmds::const_iterator end = modifyCmds.end(); - int rc = 0; - int ret = 0; - for (; i != end; ++i) { - switch (i->cmdId_) { - case add: - ret = addMetadatum(pImage, *i); - if (rc == 0) rc = ret; - break; - case set: - ret = setMetadatum(pImage, *i); - if (rc == 0) rc = ret; - break; - case del: - delMetadatum(pImage, *i); - break; - case reg: - regNamespace(*i); - break; - case invalidCmdId: - assert(invalidCmdId == i->cmdId_); - break; - } - } - return rc; - } // Modify::applyCommands - - int Modify::addMetadatum(Exiv2::Image* pImage, const ModifyCmd& modifyCmd) - { - if (Params::instance().verbose_) { - std::cout << _("Add") << " " << modifyCmd.key_ << " \"" - << modifyCmd.value_ << "\" (" - << Exiv2::TypeInfo::typeName(modifyCmd.typeId_) - << ")" << std::endl; - } - Exiv2::ExifData& exifData = pImage->exifData(); - Exiv2::IptcData& iptcData = pImage->iptcData(); - Exiv2::XmpData& xmpData = pImage->xmpData(); - Exiv2::Value::AutoPtr value = Exiv2::Value::create(modifyCmd.typeId_); - int rc = value->read(modifyCmd.value_); - if (0 == rc) { - if (modifyCmd.metadataId_ == exif) { - exifData.add(Exiv2::ExifKey(modifyCmd.key_), value.get()); - } - if (modifyCmd.metadataId_ == iptc) { - iptcData.add(Exiv2::IptcKey(modifyCmd.key_), value.get()); - } - if (modifyCmd.metadataId_ == xmp) { - xmpData.add(Exiv2::XmpKey(modifyCmd.key_), value.get()); - } - } - else { - std::cerr << _("Warning") << ": " << modifyCmd.key_ << ": " - << _("Failed to read") << " " - << Exiv2::TypeInfo::typeName(value->typeId()) - << " " << _("value") - << " \"" << modifyCmd.value_ << "\"\n"; - } - return rc; - } - - // This function looks rather complex because we try to avoid adding an - // empty metadatum if reading the value fails - int Modify::setMetadatum(Exiv2::Image* pImage, const ModifyCmd& modifyCmd) - { - if (Params::instance().verbose_) { - std::cout << _("Set") << " " << modifyCmd.key_ << " \"" - << modifyCmd.value_ << "\" (" - << Exiv2::TypeInfo::typeName(modifyCmd.typeId_) - << ")" << std::endl; - } - Exiv2::ExifData& exifData = pImage->exifData(); - Exiv2::IptcData& iptcData = pImage->iptcData(); - Exiv2::XmpData& xmpData = pImage->xmpData(); - Exiv2::Metadatum* metadatum = 0; - if (modifyCmd.metadataId_ == exif) { - Exiv2::ExifData::iterator pos = - exifData.findKey(Exiv2::ExifKey(modifyCmd.key_)); - if (pos != exifData.end()) { - metadatum = &(*pos); - } - } - if (modifyCmd.metadataId_ == iptc) { - Exiv2::IptcData::iterator pos = - iptcData.findKey(Exiv2::IptcKey(modifyCmd.key_)); - if (pos != iptcData.end()) { - metadatum = &(*pos); - } - } - if (modifyCmd.metadataId_ == xmp) { - Exiv2::XmpData::iterator pos = - xmpData.findKey(Exiv2::XmpKey(modifyCmd.key_)); - if (pos != xmpData.end()) { - metadatum = &(*pos); - } - } - // If a type was explicitly requested, use it; else - // use the current type of the metadatum, if any; - // or the default type - Exiv2::Value::AutoPtr value; - if (metadatum) { - value = metadatum->getValue(); - } - if ( value.get() == 0 - || ( modifyCmd.explicitType_ - && modifyCmd.typeId_ != value->typeId())) { - value = Exiv2::Value::create(modifyCmd.typeId_); - } - int rc = value->read(modifyCmd.value_); - if (0 == rc) { - if (metadatum) { - metadatum->setValue(value.get()); - } - else { - if (modifyCmd.metadataId_ == exif) { - exifData.add(Exiv2::ExifKey(modifyCmd.key_), value.get()); - } - if (modifyCmd.metadataId_ == iptc) { - iptcData.add(Exiv2::IptcKey(modifyCmd.key_), value.get()); - } - if (modifyCmd.metadataId_ == xmp) { - xmpData.add(Exiv2::XmpKey(modifyCmd.key_), value.get()); - } - } - } - else { - std::cerr << _("Warning") << ": " << modifyCmd.key_ << ": " - << _("Failed to read") << " " - << Exiv2::TypeInfo::typeName(value->typeId()) - << " " << _("value") - << " \"" << modifyCmd.value_ << "\"\n"; - } - return rc; - } - - void Modify::delMetadatum(Exiv2::Image* pImage, const ModifyCmd& modifyCmd) - { - if (Params::instance().verbose_) { - std::cout << _("Del") << " " << modifyCmd.key_ << std::endl; - } - - Exiv2::ExifData& exifData = pImage->exifData(); - Exiv2::IptcData& iptcData = pImage->iptcData(); - Exiv2::XmpData& xmpData = pImage->xmpData(); - if (modifyCmd.metadataId_ == exif) { - Exiv2::ExifData::iterator pos; - Exiv2::ExifKey exifKey = Exiv2::ExifKey(modifyCmd.key_); - while((pos = exifData.findKey(exifKey)) != exifData.end()) { - exifData.erase(pos); - } - } - if (modifyCmd.metadataId_ == iptc) { - Exiv2::IptcData::iterator pos; - Exiv2::IptcKey iptcKey = Exiv2::IptcKey(modifyCmd.key_); - while((pos = iptcData.findKey(iptcKey)) != iptcData.end()) { - iptcData.erase(pos); - } - } - if (modifyCmd.metadataId_ == xmp) { - Exiv2::XmpData::iterator pos; - Exiv2::XmpKey xmpKey = Exiv2::XmpKey(modifyCmd.key_); - while((pos = xmpData.findKey(xmpKey)) != xmpData.end()) { - xmpData.erase(pos); - } - } - } - - void Modify::regNamespace(const ModifyCmd& modifyCmd) - { - if (Params::instance().verbose_) { - std::cout << _("Reg ") << modifyCmd.key_ << "=\"" - << modifyCmd.value_ << "\"" << std::endl; - } - Exiv2::XmpProperties::registerNs(modifyCmd.value_, modifyCmd.key_); - } - - Modify::AutoPtr Modify::clone() const - { - return AutoPtr(clone_()); - } - - Modify* Modify::clone_() const - { - return new Modify(*this); - } - - Adjust::~Adjust() - { - } - - int Adjust::run(const std::string& path) - try { - adjustment_ = Params::instance().adjustment_; - yearAdjustment_ = Params::instance().yodAdjust_[Params::yodYear].adjustment_; - monthAdjustment_ = Params::instance().yodAdjust_[Params::yodMonth].adjustment_; - dayAdjustment_ = Params::instance().yodAdjust_[Params::yodDay].adjustment_; - - if (!Exiv2::fileExists(path, true)) { - std::cerr << path - << ": " << _("Failed to open the file\n"); - return -1; - } - Timestamp ts; - if (Params::instance().preserve_) { - ts.read(path); - } - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path); - assert(image.get() != 0); - image->readMetadata(); - Exiv2::ExifData& exifData = image->exifData(); - if (exifData.empty()) { - std::cerr << path - << ": " << _("No Exif data found in the file\n"); - return -3; - } - int rc = adjustDateTime(exifData, "Exif.Image.DateTime", path); - rc += adjustDateTime(exifData, "Exif.Photo.DateTimeOriginal", path); - rc += adjustDateTime(exifData, "Exif.Photo.DateTimeDigitized", path); - if (rc) return 1; - image->writeMetadata(); - if (Params::instance().preserve_) { - ts.touch(path); - } - return rc; - } - catch(const Exiv2::AnyError& e) - { - std::cerr << "Exiv2 exception in adjust action for file " << path - << ":\n" << e << "\n"; - return 1; - } // Adjust::run - - Adjust::AutoPtr Adjust::clone() const - { - return AutoPtr(clone_()); - } - - Adjust* Adjust::clone_() const - { - return new Adjust(*this); - } - - int Adjust::adjustDateTime(Exiv2::ExifData& exifData, - const std::string& key, - const std::string& path) const - { - Exiv2::ExifKey ek(key); - Exiv2::ExifData::iterator md = exifData.findKey(ek); - if (md == exifData.end()) { - // Key not found. That's ok, we do nothing. - return 0; - } - std::string timeStr = md->toString(); - if (timeStr == "" || timeStr[0] == ' ') { - std::cerr << path << ": " << _("Timestamp of metadatum with key") << " `" - << ek << "' " << _("not set\n"); - return 1; - } - if (Params::instance().verbose_) { - bool comma = false; - std::cout << _("Adjusting") << " `" << ek << "' " << _("by"); - if (yearAdjustment_ != 0) { - std::cout << (yearAdjustment_ < 0 ? " " : " +") << yearAdjustment_ << " "; - if (yearAdjustment_ < -1 || yearAdjustment_ > 1) { - std::cout << _("years"); - } - else { - std::cout << _("year"); - } - comma = true; - } - if (monthAdjustment_ != 0) { - if (comma) std::cout << ","; - std::cout << (monthAdjustment_ < 0 ? " " : " +") << monthAdjustment_ << " "; - if (monthAdjustment_ < -1 || monthAdjustment_ > 1) { - std::cout << _("months"); - } - else { - std::cout << _("month"); - } - comma = true; - } - if (dayAdjustment_ != 0) { - if (comma) std::cout << ","; - std::cout << (dayAdjustment_ < 0 ? " " : " +") << dayAdjustment_ << " "; - if (dayAdjustment_ < -1 || dayAdjustment_ > 1) { - std::cout << _("days"); - } - else { - std::cout << _("day"); - } - comma = true; - } - if (adjustment_ != 0) { - if (comma) std::cout << ","; - std::cout << " " << adjustment_ << _("s"); - } - } - struct tm tm; - if (str2Tm(timeStr, &tm) != 0) { - if (Params::instance().verbose_) std::cout << std::endl; - std::cerr << path << ": " << _("Failed to parse timestamp") << " `" - << timeStr << "'\n"; - return 1; - } - const long monOverflow = (tm.tm_mon + monthAdjustment_) / 12; - tm.tm_mon = (tm.tm_mon + monthAdjustment_) % 12; - tm.tm_year += yearAdjustment_ + monOverflow; - // Let's not create files with non-4-digit years, we can't read them. - if (tm.tm_year > 9999 - 1900 || tm.tm_year < 1000 - 1900) { - if (Params::instance().verbose_) std::cout << std::endl; - std::cerr << path << ": " << _("Can't adjust timestamp by") << " " - << yearAdjustment_ + monOverflow - << " " << _("years") << "\n"; - return 1; - } - time_t time = mktime(&tm); - time += adjustment_ + dayAdjustment_ * 86400; - timeStr = time2Str(time); - if (Params::instance().verbose_) { - std::cout << " " << _("to") << " " << timeStr << std::endl; - } - md->setValue(timeStr); - return 0; - } // Adjust::adjustDateTime - - FixIso::~FixIso() - { - } - - int FixIso::run(const std::string& path) - { - try { - if (!Exiv2::fileExists(path, true)) { - std::cerr << path - << ": " <<_("Failed to open the file\n"); - return -1; - } - Timestamp ts; - if (Params::instance().preserve_) { - ts.read(path); - } - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path); - assert(image.get() != 0); - image->readMetadata(); - Exiv2::ExifData& exifData = image->exifData(); - if (exifData.empty()) { - std::cerr << path - << ": " << _("No Exif data found in the file\n"); - return -3; - } - Exiv2::ExifData::const_iterator md = Exiv2::isoSpeed(exifData); - if (md != exifData.end()) { - if (strcmp(md->key().c_str(), "Exif.Photo.ISOSpeedRatings") == 0) { - if (Params::instance().verbose_) { - std::cout << _("Standard Exif ISO tag exists; not modified\n"); - } - return 0; - } - // Copy the proprietary tag to the standard place - std::ostringstream os; - md->write(os, &exifData); - if (Params::instance().verbose_) { - std::cout << _("Setting Exif ISO value to") << " " << os.str() << "\n"; - } - exifData["Exif.Photo.ISOSpeedRatings"] = os.str(); - } - image->writeMetadata(); - if (Params::instance().preserve_) { - ts.touch(path); - } - return 0; - } - catch(const Exiv2::AnyError& e) - { - std::cerr << "Exiv2 exception in fixiso action for file " << path - << ":\n" << e << "\n"; - return 1; - } - } // FixIso::run - - FixIso::AutoPtr FixIso::clone() const - { - return AutoPtr(clone_()); - } - - FixIso* FixIso::clone_() const - { - return new FixIso(*this); - } - - FixCom::~FixCom() - { - } - - int FixCom::run(const std::string& path) - { - try { - if (!Exiv2::fileExists(path, true)) { - std::cerr << path - << ": " <<_("Failed to open the file\n"); - return -1; - } - Timestamp ts; - if (Params::instance().preserve_) { - ts.read(path); - } - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path); - assert(image.get() != 0); - image->readMetadata(); - Exiv2::ExifData& exifData = image->exifData(); - if (exifData.empty()) { - std::cerr << path - << ": " << _("No Exif data found in the file\n"); - return -3; - } - Exiv2::ExifData::iterator pos = exifData.findKey(Exiv2::ExifKey("Exif.Photo.UserComment")); - if (pos == exifData.end()) { - if (Params::instance().verbose_) { - std::cout << _("No Exif user comment found") << "\n"; - } - return 0; - } - Exiv2::Value::AutoPtr v = pos->getValue(); - const Exiv2::CommentValue* pcv = dynamic_cast(v.get()); - if (!pcv) { - if (Params::instance().verbose_) { - std::cout << _("Found Exif user comment with unexpected value type") << "\n"; - } - return 0; - } - Exiv2::CommentValue::CharsetId csId = pcv->charsetId(); - if (csId != Exiv2::CommentValue::unicode) { - if (Params::instance().verbose_) { - std::cout << _("No Exif UNICODE user comment found") << "\n"; - } - return 0; - } - std::string comment = pcv->comment(Params::instance().charset_.c_str()); - if (Params::instance().verbose_) { - std::cout << _("Setting Exif UNICODE user comment to") << " \"" << comment << "\"\n"; - } - comment = std::string("charset=\"") + Exiv2::CommentValue::CharsetInfo::name(csId) + "\" " + comment; - // Remove BOM and convert value from source charset to UCS-2, but keep byte order - pos->setValue(comment); - image->writeMetadata(); - if (Params::instance().preserve_) { - ts.touch(path); - } - return 0; - } - catch(const Exiv2::AnyError& e) - { - std::cerr << "Exiv2 exception in fixcom action for file " << path - << ":\n" << e << "\n"; - return 1; - } - } // FixCom::run - - FixCom::AutoPtr FixCom::clone() const - { - return AutoPtr(clone_()); - } - - FixCom* FixCom::clone_() const - { - return new FixCom(*this); - } - -} // namespace Action - -// ***************************************************************************** -// local definitions -namespace { - - //! @cond IGNORE - int Timestamp::read(const std::string& path) - { - struct stat buf; - int rc = stat(path.c_str(), &buf); - if (0 == rc) { - actime_ = buf.st_atime; - modtime_ = buf.st_mtime; - } - return rc; - } - - int Timestamp::read(struct tm* tm) - { - int rc = 1; - time_t t = mktime(tm); // interpret tm according to current timezone settings - if (t != (time_t)-1) { - rc = 0; - actime_ = t; - modtime_ = t; - } - return rc; - } - - int Timestamp::touch(const std::string& path) - { - if (0 == actime_) return 1; - struct utimbuf buf; - buf.actime = actime_; - buf.modtime = modtime_; - return utime(path.c_str(), &buf); - } - //! @endcond - - int str2Tm(const std::string& timeStr, struct tm* tm) - { - if (timeStr.length() == 0 || timeStr[0] == ' ') return 1; - if (timeStr.length() < 19) return 2; - if ( timeStr[4] != ':' || timeStr[7] != ':' || timeStr[10] != ' ' - || timeStr[13] != ':' || timeStr[16] != ':') return 3; - if (0 == tm) return 4; - std::memset(tm, 0x0, sizeof(struct tm)); - tm->tm_isdst = -1; - - long tmp; - if (!Util::strtol(timeStr.substr(0,4).c_str(), tmp)) return 5; - tm->tm_year = tmp - 1900; - if (!Util::strtol(timeStr.substr(5,2).c_str(), tmp)) return 6; - tm->tm_mon = tmp - 1; - if (!Util::strtol(timeStr.substr(8,2).c_str(), tmp)) return 7; - tm->tm_mday = tmp; - if (!Util::strtol(timeStr.substr(11,2).c_str(), tmp)) return 8; - tm->tm_hour = tmp; - if (!Util::strtol(timeStr.substr(14,2).c_str(), tmp)) return 9; - tm->tm_min = tmp; - if (!Util::strtol(timeStr.substr(17,2).c_str(), tmp)) return 10; - tm->tm_sec = tmp; - - // Conversions to set remaining fields of the tm structure - if (mktime(tm) == (time_t)-1) return 11; - - return 0; - } // str2Tm - - std::string time2Str(time_t time) - { - struct tm* tm = localtime(&time); - return tm2Str(tm); - } // time2Str - - std::string tm2Str(const struct tm* tm) - { - if (0 == tm) return ""; - - std::ostringstream os; - os << std::setfill('0') - << tm->tm_year + 1900 << ":" - << std::setw(2) << tm->tm_mon + 1 << ":" - << std::setw(2) << tm->tm_mday << " " - << std::setw(2) << tm->tm_hour << ":" - << std::setw(2) << tm->tm_min << ":" - << std::setw(2) << tm->tm_sec; - - return os.str(); - } // tm2Str - - int metacopy(const std::string& source, - const std::string& target, - int targetType, - bool preserve) - { - if (!Exiv2::fileExists(source, true)) { - std::cerr << source - << ": " << _("Failed to open the file\n"); - return -1; - } - Exiv2::Image::AutoPtr sourceImage = Exiv2::ImageFactory::open(source); - assert(sourceImage.get() != 0); - sourceImage->readMetadata(); - - // Apply any modification commands to the source image on-the-fly - Action::Modify::applyCommands(sourceImage.get()); - - Exiv2::Image::AutoPtr targetImage; - if (Exiv2::fileExists(target)) { - targetImage = Exiv2::ImageFactory::open(target); - assert(targetImage.get() != 0); - if (preserve) targetImage->readMetadata(); - } - else { - targetImage = Exiv2::ImageFactory::create(targetType, target); - assert(targetImage.get() != 0); - } - if ( Params::instance().target_ & Params::ctExif - && !sourceImage->exifData().empty()) { - if (Params::instance().verbose_) { - std::cout << _("Writing Exif data from") << " " << source - << " " << _("to") << " " << target << std::endl; - } - targetImage->setExifData(sourceImage->exifData()); - } - if ( Params::instance().target_ & Params::ctIptc - && !sourceImage->iptcData().empty()) { - if (Params::instance().verbose_) { - std::cout << _("Writing IPTC data from") << " " << source - << " " << _("to") << " " << target << std::endl; - } - targetImage->setIptcData(sourceImage->iptcData()); - } - if ( Params::instance().target_ & Params::ctXmp - && !sourceImage->xmpData().empty()) { - if (Params::instance().verbose_) { - std::cout << _("Writing XMP data from") << " " << source - << " " << _("to") << " " << target << std::endl; - } - // Todo: Should use XMP packet if there are no XMP modification commands - targetImage->setXmpData(sourceImage->xmpData()); - } - if ( Params::instance().target_ & Params::ctComment - && !sourceImage->comment().empty()) { - if (Params::instance().verbose_) { - std::cout << _("Writing JPEG comment from") << " " << source - << " " << _("to") << " " << target << std::endl; - } - targetImage->setComment(sourceImage->comment()); - } - try { - targetImage->writeMetadata(); - } - catch (const Exiv2::AnyError& e) { - std::cerr << target << - ": " << _("Could not write metadata to file") << ": " << e << "\n"; - return 1; - } - - return 0; - } // metacopy - - // Defined outside of the function so that Exiv2::find() can see it - struct String { - const char* s_; - bool operator==(const char* s) const { - return 0 == strcmp(s_, s); - } - }; - - int renameFile(std::string& newPath, const struct tm* tm) - { - std::string path = newPath; - std::string format = Params::instance().format_; - Util::replace(format, ":basename:", Util::basename(path, true)); - Util::replace(format, ":dirname:", Util::basename(Util::dirname(path))); - Util::replace(format, ":parentname:", Util::basename(Util::dirname(Util::dirname(path)))); - - const size_t max = 1024; - char basename[max]; - std::memset(basename, 0x0, max); - if (strftime(basename, max, format.c_str(), tm) == 0) { - std::cerr << _("Filename format yields empty filename for the file") << " " - << path << "\n"; - return 1; - } - newPath = Util::dirname(path) + EXV_SEPERATOR_STR - + basename + Util::suffix(path); - if ( Util::dirname(newPath) == Util::dirname(path) - && Util::basename(newPath) == Util::basename(path)) { - if (Params::instance().verbose_) { - std::cout << _("This file already has the correct name") << std::endl; - } - return -1; - } - - bool go = true; - int seq = 1; - std::string s; - Params::FileExistsPolicy fileExistsPolicy - = Params::instance().fileExistsPolicy_; - while (go) { - if (Exiv2::fileExists(newPath)) { - switch (fileExistsPolicy) { - case Params::overwritePolicy: - go = false; - break; - case Params::renamePolicy: - newPath = Util::dirname(path) - + EXV_SEPERATOR_STR + basename - + "_" + Exiv2::toString(seq++) - + Util::suffix(path); - break; - case Params::askPolicy: - std::cout << Params::instance().progname() - << ": " << _("File") << " `" << newPath - << "' " << _("exists. [O]verwrite, [r]ename or [s]kip?") - << " "; - std::cin >> s; - switch (s[0]) { - case 'o': - case 'O': - go = false; - break; - case 'r': - case 'R': - fileExistsPolicy = Params::renamePolicy; - newPath = Util::dirname(path) - + EXV_SEPERATOR_STR + basename - + "_" + Exiv2::toString(seq++) - + Util::suffix(path); - break; - default: // skip - return -1; - break; - } - } - } - else { - go = false; - } - } - - if (Params::instance().verbose_) { - std::cout << _("Renaming file to") << " " << newPath; - if (Params::instance().timestamp_) { - std::cout << ", " << _("updating timestamp"); - } - std::cout << std::endl; - } - - // Workaround for MinGW rename which does not overwrite existing files - remove(newPath.c_str()); - if (std::rename(path.c_str(), newPath.c_str()) == -1) { - std::cerr << Params::instance().progname() - << ": " << _("Failed to rename") << " " - << path << " " << _("to") << " " << newPath << ": " - << Exiv2::strError() << "\n"; - return 1; - } - - return 0; - } // renameFile - - std::string newFilePath(const std::string& path, const std::string& ext) - { - std::string directory = Params::instance().directory_; - if (directory.empty()) directory = Util::dirname(path); - std::string newPath = directory + EXV_SEPERATOR_STR - + Util::basename(path, true) + ext; - return newPath; - } - - int dontOverwrite(const std::string& path) - { - if (!Params::instance().force_ && Exiv2::fileExists(path)) { - std::cout << Params::instance().progname() - << ": " << _("Overwrite") << " `" << path << "'? "; - std::string s; - std::cin >> s; - if (s[0] != 'y' && s[0] != 'Y') return 1; - } - return 0; - } - -} diff --git a/platform/win32/msvc/external/exiv2/src/actions.hpp b/platform/win32/msvc/external/exiv2/src/actions.hpp deleted file mode 100644 index ab94c19a743..00000000000 --- a/platform/win32/msvc/external/exiv2/src/actions.hpp +++ /dev/null @@ -1,413 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file actions.hpp - @brief Implements base class Task, TaskFactory and the various supported - actions (derived from Task). - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 11-Dec-03, ahu: created - */ -#ifndef ACTIONS_HPP_ -#define ACTIONS_HPP_ - -// ***************************************************************************** -// included header files - -// + standard includes -#include -#include - -#include "exiv2app.hpp" -#include "image.hpp" -#include "exif.hpp" -#include "iptc.hpp" - -// ***************************************************************************** -// class declarations - -namespace Exiv2 { - class ExifData; - class Image; - class Metadatum; - class PreviewImage; -} - -// ***************************************************************************** -// namespace extensions -/*! - @brief Contains all action classes (task subclasses). - */ -namespace Action { - - //! Enumerates all tasks - enum TaskType { none, adjust, print, rename, erase, extract, insert, - modify, fixiso, fixcom }; - -// ***************************************************************************** -// class definitions - - /*! - @brief Abstract base class for all concrete actions. - - Task provides a simple interface that actions must implement and a few - commonly used helpers. - */ - class Task { - public: - //! Shortcut for an auto pointer. - typedef std::auto_ptr AutoPtr; - //! Virtual destructor. - virtual ~Task(); - //! Virtual copy construction. - AutoPtr clone() const; - /*! - @brief Application interface to perform a task. - - @param path Path of the file to process. - @return 0 if successful. - */ - virtual int run(const std::string& path) =0; - - private: - //! Internal virtual copy constructor. - virtual Task* clone_() const =0; - - }; // class Task - - /*! - @brief Task factory. - - Creates an instance of the task of the requested type. The factory is - implemented as a singleton, which can be accessed only through the static - member function instance(). - */ - class TaskFactory { - public: - /*! - @brief Get access to the task factory. - - Clients access the task factory exclusively through - this method. - */ - static TaskFactory& instance(); - //! Destructor - void cleanup(); - - /*! - @brief Create a task. - - @param type Identifies the type of task to create. - @return An auto pointer that owns a task of the requested type. If - the task type is not supported, the pointer is 0. - @remark The caller of the function should check the content of the - returned auto pointer and take appropriate action (e.g., throw - an exception) if it is 0. - */ - Task::AutoPtr create(TaskType type); - - /*! - @brief Register a task prototype together with its type. - - The task factory creates new tasks of a given type by cloning its - associated prototype. Additional tasks can be registered. If called - for a type which already exists in the list, the corresponding - prototype is replaced. - - @param type Task type. - @param task Pointer to the prototype. Ownership is transfered to the - task factory. That's what the auto pointer indicates. - */ - void registerTask(TaskType type, Task::AutoPtr task); - - private: - //! Prevent construction other than through instance(). - TaskFactory(); - //! Prevent copy construction: not implemented. - TaskFactory(const TaskFactory& rhs); - - //! Pointer to the one and only instance of this class. - static TaskFactory* instance_; - //! Type used to store Task prototype classes - typedef std::map Registry; - //! List of task types and corresponding prototypes. - Registry registry_; - - }; // class TaskFactory - - //! %Print the Exif (or other metadata) of a file to stdout - class Print : public Task { - public: - virtual ~Print(); - virtual int run(const std::string& path); - typedef std::auto_ptr AutoPtr; - AutoPtr clone() const; - - //! Print the Jpeg comment - int printComment(); - //! Print list of available preview images - int printPreviewList(); - //! Print Exif summary information - int printSummary(); - //! Print Exif, IPTC and XMP metadata in user defined format - int printList(); - //! Return true if key should be printed, else false - bool grepTag(const std::string& key); - //! Print all metadata in a user defined format - int printMetadata(const Exiv2::Image* image); - //! Print a metadatum in a user defined format - void printMetadatum(const Exiv2::Metadatum& md, const Exiv2::Image* image); - //! Print the label for a summary line - void printLabel(const std::string& label) const; - /*! - @brief Print one summary line with a label (if provided) and requested - data. A line break is printed only if a label is provided. - @return 1 if a line was written, 0 if the key was not found. - */ - int printTag(const Exiv2::ExifData& exifData, - const std::string& key, - const std::string& label ="") const; - //! Type for an Exiv2 Easy access function - typedef Exiv2::ExifData::const_iterator (*EasyAccessFct)(const Exiv2::ExifData& ed); - /*! - @brief Print one summary line with a label (if provided) and requested - data. A line break is printed only if a label is provided. - @return 1 if a line was written, 0 if the information was not found. - */ - int printTag(const Exiv2::ExifData& exifData, - EasyAccessFct easyAccessFct, - const std::string& label) const; - - private: - virtual Print* clone_() const; - - std::string path_; - int align_; // for the alignment of the summary output - }; // class Print - - /*! - @brief %Rename a file to its metadate creation timestamp, - in the specified format. - */ - class Rename : public Task { - public: - virtual ~Rename(); - virtual int run(const std::string& path); - typedef std::auto_ptr AutoPtr; - AutoPtr clone() const; - - private: - virtual Rename* clone_() const; - }; // class Rename - - //! %Adjust the Exif (or other metadata) timestamps - class Adjust : public Task { - public: - virtual ~Adjust(); - virtual int run(const std::string& path); - typedef std::auto_ptr AutoPtr; - AutoPtr clone() const; - - private: - virtual Adjust* clone_() const; - int adjustDateTime(Exiv2::ExifData& exifData, - const std::string& key, - const std::string& path) const; - - long adjustment_; - long yearAdjustment_; - long monthAdjustment_; - long dayAdjustment_; - - }; // class Adjust - - /*! - @brief %Erase the entire exif data or only the thumbnail section. - */ - class Erase : public Task { - public: - virtual ~Erase(); - virtual int run(const std::string& path); - typedef std::auto_ptr AutoPtr; - AutoPtr clone() const; - - /*! - @brief Delete the thumbnail image, incl IFD1 metadata from the file. - */ - int eraseThumbnail(Exiv2::Image* image) const; - /*! - @brief Erase the complete Exif data block from the file. - */ - int eraseExifData(Exiv2::Image* image) const; - /*! - @brief Erase all Iptc data from the file. - */ - int eraseIptcData(Exiv2::Image* image) const; - /*! - @brief Erase Jpeg comment from the file. - */ - int eraseComment(Exiv2::Image* image) const; - /*! - @brief Erase XMP packet from the file. - */ - int eraseXmpData(Exiv2::Image* image) const; - - private: - virtual Erase* clone_() const; - std::string path_; - - }; // class Erase - - /*! - @brief %Extract the entire exif data or only the thumbnail section. - */ - class Extract : public Task { - public: - virtual ~Extract(); - virtual int run(const std::string& path); - typedef std::auto_ptr AutoPtr; - AutoPtr clone() const; - - /*! - @brief Write the thumbnail image to a file. The filename is composed by - removing the suffix from the image filename and appending - "-thumb" and the appropriate suffix (".jpg" or ".tif"), depending - on the format of the Exif thumbnail image. - */ - int writeThumbnail() const; - /*! - @brief Write preview images to files. - */ - int writePreviews() const; - /*! - @brief Write one preview image to a file. The filename is composed by - removing the suffix from the image filename and appending - "-preview" and the appropriate suffix (".jpg" or ".tif"), - depending on the format of the Exif thumbnail image. - */ - void writePreviewFile(const Exiv2::PreviewImage& pvImg, int num) const; - - private: - virtual Extract* clone_() const; - std::string path_; - - }; // class Extract - - /*! - @brief %Insert the Exif data from corresponding *.exv files. - */ - class Insert : public Task { - public: - virtual ~Insert(); - virtual int run(const std::string& path); - typedef std::auto_ptr AutoPtr; - AutoPtr clone() const; - - /*! - @brief Insert a Jpeg thumbnail image from a file into file \em path. - The filename of the thumbnail is expected to be the image - filename (\em path) minus its suffix plus "-thumb.jpg". - */ - int insertThumbnail(const std::string& path) const; - /*! - @brief Insert an XMP packet from a file into file \em path. - The filename of the XMP packet is expected to be the image - filename (\em path) minus its suffix plus ".xmp". - */ - int insertXmpPacket(const std::string& path) const; - - private: - virtual Insert* clone_() const; - - }; // class Insert - - /*! - @brief %Modify the Exif data according to the commands in the - modification table. - */ - class Modify : public Task { - public: - virtual ~Modify(); - virtual int run(const std::string& path); - typedef std::auto_ptr AutoPtr; - AutoPtr clone() const; - Modify() {} - //! Apply modification commands to the \em pImage, return 0 if successful. - static int applyCommands(Exiv2::Image* pImage); - - private: - virtual Modify* clone_() const; - //! Copy contructor needed because of AutoPtr member - Modify(const Modify& /*src*/) : Task() {} - - //! Add a metadatum to \em pImage according to \em modifyCmd - static int addMetadatum(Exiv2::Image* pImage, - const ModifyCmd& modifyCmd); - //! Set a metadatum in \em pImage according to \em modifyCmd - static int setMetadatum(Exiv2::Image* pImage, - const ModifyCmd& modifyCmd); - //! Delete a metadatum from \em pImage according to \em modifyCmd - static void delMetadatum(Exiv2::Image* pImage, - const ModifyCmd& modifyCmd); - //! Register an XMP namespace according to \em modifyCmd - static void regNamespace(const ModifyCmd& modifyCmd); - - }; // class Modify - - /*! - @brief %Copy ISO settings from any of the Nikon makernotes to the - regular Exif tag, Exif.Photo.ISOSpeedRatings. - */ - class FixIso : public Task { - public: - virtual ~FixIso(); - virtual int run(const std::string& path); - typedef std::auto_ptr AutoPtr; - AutoPtr clone() const; - - private: - virtual FixIso* clone_() const; - std::string path_; - - }; // class FixIso - - /*! - @brief Fix the character encoding of Exif UNICODE user comments. - Decodes the comment using the auto-detected or specified - character encoding and writes it back in UCS-2. - */ - class FixCom : public Task { - public: - virtual ~FixCom(); - virtual int run(const std::string& path); - typedef std::auto_ptr AutoPtr; - AutoPtr clone() const; - - private: - virtual FixCom* clone_() const; - std::string path_; - - }; // class FixCom - -} // namespace Action - -#endif // #ifndef ACTIONS_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/basicio.cpp b/platform/win32/msvc/external/exiv2/src/basicio.cpp deleted file mode 100644 index 0343dff6965..00000000000 --- a/platform/win32/msvc/external/exiv2/src/basicio.cpp +++ /dev/null @@ -1,1223 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: basicio.cpp - Version: $Rev: 2689 $ - Author(s): Brad Schick (brad) - History: 04-Dec-04, brad: created - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: basicio.cpp 2689 2012-03-24 13:00:00Z ahuggel $") - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#include "basicio.hpp" -#include "futils.hpp" -#include "types.hpp" -#include "error.hpp" - -// + standard includes -#include -#include -#include -#include -#include -#include // for remove, rename -#include // for alloc, realloc, free -#include // for stat, chmod -#include // for stat, chmod -#ifdef EXV_HAVE_SYS_MMAN_H -# include // for mmap and munmap -#endif -#ifdef EXV_HAVE_PROCESS_H -# include -#endif -#ifdef EXV_HAVE_UNISTD_H -# include // for getpid, stat -#endif - -#if defined WIN32 && !defined __CYGWIN__ -// Windows doesn't provide mode_t, nlink_t -typedef unsigned short mode_t; -typedef short nlink_t; - -# include -# include -#endif - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - BasicIo::~BasicIo() - { - } - - //! Internal Pimpl structure of class FileIo. - class FileIo::Impl { - public: - //! Constructor - Impl(const std::string& path); -#ifdef EXV_UNICODE_PATH - //! Constructor accepting a unicode path in an std::wstring - Impl(const std::wstring& wpath); -#endif - // Enumerations - //! Mode of operation - enum OpMode { opRead, opWrite, opSeek }; -#ifdef EXV_UNICODE_PATH - //! Used to indicate if the path is stored as a standard or unicode string - enum WpMode { wpStandard, wpUnicode }; -#endif - // DATA - std::string path_; //!< (Standard) path -#ifdef EXV_UNICODE_PATH - std::wstring wpath_; //!< Unicode path - WpMode wpMode_; //!< Indicates which path is in use -#endif - std::string openMode_; //!< File open mode - FILE *fp_; //!< File stream pointer - OpMode opMode_; //!< File open mode - -#if defined WIN32 && !defined __CYGWIN__ - HANDLE hFile_; //!< Duplicated fd - HANDLE hMap_; //!< Handle from CreateFileMapping -#endif - byte* pMappedArea_; //!< Pointer to the memory-mapped area - size_t mappedLength_; //!< Size of the memory-mapped area - bool isMalloced_; //!< Is the mapped area allocated? - bool isWriteable_; //!< Can the mapped area be written to? - // TYPES - //! Simple struct stat wrapper for internal use - struct StructStat { - StructStat() : st_mode(0), st_size(0), st_nlink(0) {} - mode_t st_mode; //!< Permissions - off_t st_size; //!< Size - nlink_t st_nlink; //!< Number of hard links (broken on Windows, see winNumberOfLinks()) - }; - - // METHODS - /*! - @brief Switch to a new access mode, reopening the file if needed. - Optimized to only reopen the file when it is really necessary. - @param opMode The mode to switch to. - @return 0 if successful - */ - int switchMode(OpMode opMode); - //! stat wrapper for internal use - int stat(StructStat& buf) const; -#if defined WIN32 && !defined __CYGWIN__ - // Windows function to determine the number of hardlinks (on NTFS) - DWORD winNumberOfLinks() const; -#endif - - private: - // NOT IMPLEMENTED - Impl(const Impl& rhs); //!< Copy constructor - Impl& operator=(const Impl& rhs); //!< Assignment - - }; // class FileIo::Impl - - FileIo::Impl::Impl(const std::string& path) - : path_(path), -#ifdef EXV_UNICODE_PATH - wpMode_(wpStandard), -#endif - fp_(0), opMode_(opSeek), -#if defined WIN32 && !defined __CYGWIN__ - hFile_(0), hMap_(0), -#endif - pMappedArea_(0), mappedLength_(0), isMalloced_(false), isWriteable_(false) - { - } - -#ifdef EXV_UNICODE_PATH - FileIo::Impl::Impl(const std::wstring& wpath) - : wpath_(wpath), - wpMode_(wpUnicode), - fp_(0), opMode_(opSeek), -#if defined WIN32 && !defined __CYGWIN__ - hFile_(0), hMap_(0), -#endif - pMappedArea_(0), mappedLength_(0), isMalloced_(false), isWriteable_(false) - { - } - -#endif - int FileIo::Impl::switchMode(OpMode opMode) - { - assert(fp_ != 0); - if (opMode_ == opMode) return 0; - OpMode oldOpMode = opMode_; - opMode_ = opMode; - - bool reopen = true; - switch(opMode) { - case opRead: - // Flush if current mode allows reading, else reopen (in mode "r+b" - // as in this case we know that we can write to the file) - if (openMode_[0] == 'r' || openMode_[1] == '+') reopen = false; - break; - case opWrite: - // Flush if current mode allows writing, else reopen - if (openMode_[0] != 'r' || openMode_[1] == '+') reopen = false; - break; - case opSeek: - reopen = false; - break; - } - - if (!reopen) { - // Don't do anything when switching _from_ opSeek mode; we - // flush when switching _to_ opSeek. - if (oldOpMode == opSeek) return 0; - - // Flush. On msvcrt fflush does not do the job - std::fseek(fp_, 0, SEEK_CUR); - return 0; - } - - // Reopen the file - long offset = std::ftell(fp_); - if (offset == -1) return -1; - // 'Manual' open("r+b") to avoid munmap() - if (fp_ != 0) { - std::fclose(fp_); - fp_= 0; - } - openMode_ = "r+b"; - opMode_ = opSeek; -#ifdef EXV_UNICODE_PATH - if (wpMode_ == wpUnicode) { - fp_ = ::_wfopen(wpath_.c_str(), s2ws(openMode_).c_str()); - } - else -#endif - { - fp_ = std::fopen(path_.c_str(), openMode_.c_str()); - } - if (!fp_) return 1; - return std::fseek(fp_, offset, SEEK_SET); - } // FileIo::Impl::switchMode - - int FileIo::Impl::stat(StructStat& buf) const - { - int ret = 0; -#ifdef EXV_UNICODE_PATH - if (wpMode_ == wpUnicode) { - struct _stat st; - ret = ::_wstat(wpath_.c_str(), &st); - if (0 == ret) { - buf.st_size = st.st_size; - buf.st_mode = st.st_mode; - buf.st_nlink = st.st_nlink; - } - } - else -#endif - { - struct stat st; - ret = ::stat(path_.c_str(), &st); - if (0 == ret) { - buf.st_size = st.st_size; - buf.st_mode = st.st_mode; - buf.st_nlink = st.st_nlink; - } - } - return ret; - } // FileIo::Impl::stat - -#if defined WIN32 && !defined __CYGWIN__ - DWORD FileIo::Impl::winNumberOfLinks() const - { - DWORD nlink = 1; - - HANDLE hFd = (HANDLE)_get_osfhandle(fileno(fp_)); - if (hFd != INVALID_HANDLE_VALUE) { - typedef BOOL (WINAPI * GetFileInformationByHandle_t)(HANDLE, LPBY_HANDLE_FILE_INFORMATION); - HMODULE hKernel = LoadLibraryA("kernel32.dll"); - if (hKernel) { - GetFileInformationByHandle_t pfcn_GetFileInformationByHandle = (GetFileInformationByHandle_t)GetProcAddress(hKernel, "GetFileInformationByHandle"); - if (pfcn_GetFileInformationByHandle) { - BY_HANDLE_FILE_INFORMATION fi = {0}; - if (pfcn_GetFileInformationByHandle(hFd, &fi)) { - nlink = fi.nNumberOfLinks; - } -#ifdef DEBUG - else EXV_DEBUG << "GetFileInformationByHandle failed\n"; -#endif - } -#ifdef DEBUG - else EXV_DEBUG << "GetProcAddress(hKernel, \"GetFileInformationByHandle\") failed\n"; -#endif - FreeLibrary(hKernel); - } -#ifdef DEBUG - else EXV_DEBUG << "LoadLibraryA(\"kernel32.dll\") failed\n"; -#endif - } -#ifdef DEBUG - else EXV_DEBUG << "_get_osfhandle failed: INVALID_HANDLE_VALUE\n"; -#endif - - return nlink; - } // FileIo::Impl::winNumberOfLinks - -#endif // defined WIN32 && !defined __CYGWIN__ - FileIo::FileIo(const std::string& path) - : p_(new Impl(path)) - { - } - -#ifdef EXV_UNICODE_PATH - FileIo::FileIo(const std::wstring& wpath) - : p_(new Impl(wpath)) - { - } - -#endif - FileIo::~FileIo() - { - close(); - delete p_; - } - - int FileIo::munmap() - { - int rc = 0; - if (p_->pMappedArea_ != 0) { -#if defined EXV_HAVE_MMAP && defined EXV_HAVE_MUNMAP - if (::munmap(p_->pMappedArea_, p_->mappedLength_) != 0) { - rc = 1; - } -#elif defined WIN32 && !defined __CYGWIN__ - UnmapViewOfFile(p_->pMappedArea_); - CloseHandle(p_->hMap_); - p_->hMap_ = 0; - CloseHandle(p_->hFile_); - p_->hFile_ = 0; -#else - if (p_->isWriteable_) { - seek(0, BasicIo::beg); - write(p_->pMappedArea_, p_->mappedLength_); - } - if (p_->isMalloced_) { - delete[] p_->pMappedArea_; - p_->isMalloced_ = false; - } -#endif - } - if (p_->isWriteable_) { - if (p_->fp_ != 0) p_->switchMode(Impl::opRead); - p_->isWriteable_ = false; - } - p_->pMappedArea_ = 0; - p_->mappedLength_ = 0; - return rc; - } - - byte* FileIo::mmap(bool isWriteable) - { - assert(p_->fp_ != 0); - if (munmap() != 0) { -#ifdef EXV_UNICODE_PATH - if (p_->wpMode_ == Impl::wpUnicode) { - throw WError(2, wpath(), strError().c_str(), "munmap"); - } - else -#endif - { - throw Error(2, path(), strError(), "munmap"); - } - } - p_->mappedLength_ = size(); - p_->isWriteable_ = isWriteable; - if (p_->isWriteable_ && p_->switchMode(Impl::opWrite) != 0) { -#ifdef EXV_UNICODE_PATH - if (p_->wpMode_ == Impl::wpUnicode) { - throw WError(16, wpath(), strError().c_str()); - } - else -#endif - { - throw Error(16, path(), strError()); - } - } -#if defined EXV_HAVE_MMAP && defined EXV_HAVE_MUNMAP - int prot = PROT_READ; - if (p_->isWriteable_) { - prot |= PROT_WRITE; - } - void* rc = ::mmap(0, p_->mappedLength_, prot, MAP_SHARED, fileno(p_->fp_), 0); - if (MAP_FAILED == rc) { -#ifdef EXV_UNICODE_PATH - if (p_->wpMode_ == Impl::wpUnicode) { - throw WError(2, wpath(), strError().c_str(), "mmap"); - } - else -#endif - { - throw Error(2, path(), strError(), "mmap"); - } - } - p_->pMappedArea_ = static_cast(rc); - -#elif defined WIN32 && !defined __CYGWIN__ - // Windows implementation - - // TODO: An attempt to map a file with a length of 0 (zero) fails with - // an error code of ERROR_FILE_INVALID. - // Applications should test for files with a length of 0 (zero) and - // reject those files. - - DWORD dwAccess = FILE_MAP_READ; - DWORD flProtect = PAGE_READONLY; - if (isWriteable) { - dwAccess = FILE_MAP_WRITE; - flProtect = PAGE_READWRITE; - } - HANDLE hPh = GetCurrentProcess(); - HANDLE hFd = (HANDLE)_get_osfhandle(fileno(p_->fp_)); - if (hFd == INVALID_HANDLE_VALUE) { -#ifdef EXV_UNICODE_PATH - if (p_->wpMode_ == Impl::wpUnicode) { - throw WError(2, wpath(), "MSG1", "_get_osfhandle"); - } - else -#endif - { - throw Error(2, path(), "MSG1", "_get_osfhandle"); - } - } - if (!DuplicateHandle(hPh, hFd, hPh, &p_->hFile_, 0, false, DUPLICATE_SAME_ACCESS)) { -#ifdef EXV_UNICODE_PATH - if (p_->wpMode_ == Impl::wpUnicode) { - throw WError(2, wpath(), "MSG2", "DuplicateHandle"); - } - else -#endif - { - throw Error(2, path(), "MSG2", "DuplicateHandle"); - } - } - p_->hMap_ = CreateFileMapping(p_->hFile_, 0, flProtect, 0, (DWORD) p_->mappedLength_, 0); - if (p_->hMap_ == 0 ) { -#ifdef EXV_UNICODE_PATH - if (p_->wpMode_ == Impl::wpUnicode) { - throw WError(2, wpath(), "MSG3", "CreateFileMapping"); - } - else -#endif - { - throw Error(2, path(), "MSG3", "CreateFileMapping"); - } - } - void* rc = MapViewOfFile(p_->hMap_, dwAccess, 0, 0, 0); - if (rc == 0) { -#ifdef EXV_UNICODE_PATH - if (p_->wpMode_ == Impl::wpUnicode) { - throw WError(2, wpath(), "MSG4", "CreateFileMapping"); - } - else -#endif - { - throw Error(2, path(), "MSG4", "CreateFileMapping"); - } - } - p_->pMappedArea_ = static_cast(rc); -#else - // Workaround for platforms without mmap: Read the file into memory - DataBuf buf(static_cast(p_->mappedLength_)); - if (read(buf.pData_, buf.size_) != buf.size_) { -#ifdef EXV_UNICODE_PATH - if (p_->wpMode_ == Impl::wpUnicode) { - throw WError(2, wpath(), strError().c_str(), "FileIo::read"); - } - else -#endif - { - throw Error(2, path(), strError(), "FileIo::read"); - } - } - if (error() || eof()) { -#ifdef EXV_UNICODE_PATH - if (p_->wpMode_ == Impl::wpUnicode) { - throw WError(2, wpath(), strError().c_str(), "FileIo::mmap"); - } - else -#endif - { - throw Error(2, path(), strError(), "FileIo::mmap"); - } - } - p_->pMappedArea_ = buf.release().first; - p_->isMalloced_ = true; -#endif - return p_->pMappedArea_; - } - - BasicIo::AutoPtr FileIo::temporary() const - { - BasicIo::AutoPtr basicIo; - - Impl::StructStat buf; - int ret = p_->stat(buf); -#if defined WIN32 && !defined __CYGWIN__ - DWORD nlink = p_->winNumberOfLinks(); -#else - nlink_t nlink = buf.st_nlink; -#endif - - // If file is > 1MB and doesn't have hard links then use a file, otherwise - // use a memory buffer. I.e., files with hard links always use a memory - // buffer, which is a workaround to ensure that the links don't get broken. - if (ret != 0 || (buf.st_size > 1048576 && nlink == 1)) { - pid_t pid = ::getpid(); - std::auto_ptr fileIo; -#ifdef EXV_UNICODE_PATH - if (p_->wpMode_ == Impl::wpUnicode) { - std::wstring tmpname = wpath() + s2ws(toString(pid)); - fileIo = std::auto_ptr(new FileIo(tmpname)); - } - else -#endif - { - std::string tmpname = path() + toString(pid); - fileIo = std::auto_ptr(new FileIo(tmpname)); - } - if (fileIo->open("w+b") != 0) { -#ifdef EXV_UNICODE_PATH - if (p_->wpMode_ == Impl::wpUnicode) { - throw WError(10, wpath(), "w+b", strError().c_str()); - } - else -#endif - { - throw Error(10, path(), "w+b", strError()); - } - } - basicIo = fileIo; - } - else { - basicIo.reset(new MemIo); - } - - return basicIo; - } - - long FileIo::write(const byte* data, long wcount) - { - assert(p_->fp_ != 0); - if (p_->switchMode(Impl::opWrite) != 0) return 0; - return (long)std::fwrite(data, 1, wcount, p_->fp_); - } - - long FileIo::write(BasicIo& src) - { - assert(p_->fp_ != 0); - if (static_cast(this) == &src) return 0; - if (!src.isopen()) return 0; - if (p_->switchMode(Impl::opWrite) != 0) return 0; - - byte buf[4096]; - long readCount = 0; - long writeCount = 0; - long writeTotal = 0; - while ((readCount = src.read(buf, sizeof(buf)))) { - writeTotal += writeCount = (long)std::fwrite(buf, 1, readCount, p_->fp_); - if (writeCount != readCount) { - // try to reset back to where write stopped - src.seek(writeCount-readCount, BasicIo::cur); - break; - } - } - - return writeTotal; - } - - void FileIo::transfer(BasicIo& src) - { - const bool wasOpen = (p_->fp_ != 0); - const std::string lastMode(p_->openMode_); - - FileIo *fileIo = dynamic_cast(&src); - if (fileIo) { - // Optimization if src is another instance of FileIo - fileIo->close(); - // Check if the file can be written to, if it already exists - if (open("a+b") != 0) { - // Remove the (temporary) file -#ifdef EXV_UNICODE_PATH - if (fileIo->p_->wpMode_ == Impl::wpUnicode) { - ::_wremove(fileIo->wpath().c_str()); - } - else -#endif - { - ::remove(fileIo->path().c_str()); - } -#ifdef EXV_UNICODE_PATH - if (p_->wpMode_ == Impl::wpUnicode) { - throw WError(10, wpath(), "a+b", strError().c_str()); - } - else -#endif - { - throw Error(10, path(), "a+b", strError()); - } - } - close(); - - bool statOk = true; - mode_t origStMode = 0; - std::string spf; - char* pf = 0; -#ifdef EXV_UNICODE_PATH - std::wstring wspf; - wchar_t* wpf = 0; - if (p_->wpMode_ == Impl::wpUnicode) { - wspf = wpath(); - wpf = const_cast(wspf.c_str()); - } - else -#endif - { - spf = path(); - pf = const_cast(spf.c_str()); - } - - // Get the permissions of the file, or linked-to file, on platforms which have lstat -#ifdef EXV_HAVE_LSTAT - -# ifdef EXV_UNICODE_PATH -# error EXV_UNICODE_PATH and EXV_HAVE_LSTAT are not compatible. Stop. -# endif - struct stat buf1; - if (::lstat(pf, &buf1) == -1) { - statOk = false; -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << Error(2, pf, strError(), "::lstat") << "\n"; -#endif - } - origStMode = buf1.st_mode; - DataBuf lbuf; // So that the allocated memory is freed. Must have same scope as pf - // In case path() is a symlink, get the path of the linked-to file - if (statOk && S_ISLNK(buf1.st_mode)) { - lbuf.alloc(buf1.st_size + 1); - memset(lbuf.pData_, 0x0, lbuf.size_); - pf = reinterpret_cast(lbuf.pData_); - if (::readlink(path().c_str(), pf, lbuf.size_ - 1) == -1) { - throw Error(2, path(), strError(), "readlink"); - } - // We need the permissions of the file, not the symlink - if (::stat(pf, &buf1) == -1) { - statOk = false; -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << Error(2, pf, strError(), "::stat") << "\n"; -#endif - } - origStMode = buf1.st_mode; - } -#else // EXV_HAVE_LSTAT - Impl::StructStat buf1; - if (p_->stat(buf1) == -1) { - statOk = false; - } - origStMode = buf1.st_mode; -#endif // !EXV_HAVE_LSTAT - - // MSVCRT rename that does not overwrite existing files -#ifdef EXV_UNICODE_PATH - if (p_->wpMode_ == Impl::wpUnicode) { - if (fileExists(wpf) && ::_wremove(wpf) != 0) { - throw WError(2, wpf, strError().c_str(), "::_wremove"); - } - if (::_wrename(fileIo->wpath().c_str(), wpf) == -1) { - throw WError(17, fileIo->wpath(), wpf, strError().c_str()); - } - ::_wremove(fileIo->wpath().c_str()); - // Check permissions of new file - struct _stat buf2; - if (statOk && ::_wstat(wpf, &buf2) == -1) { - statOk = false; -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << Error(2, wpf, strError(), "::_wstat") << "\n"; -#endif - } - if (statOk && origStMode != buf2.st_mode) { - // Set original file permissions - if (::_wchmod(wpf, origStMode) == -1) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << Error(2, wpf, strError(), "::_wchmod") << "\n"; -#endif - } - } - } // if (p_->wpMode_ == Impl::wpUnicode) - else -#endif // EXV_UNICODE_PATH - { - if (fileExists(pf) && ::remove(pf) != 0) { - throw Error(2, pf, strError(), "::remove"); - } - if (::rename(fileIo->path().c_str(), pf) == -1) { - throw Error(17, fileIo->path(), pf, strError()); - } - ::remove(fileIo->path().c_str()); - // Check permissions of new file - struct stat buf2; - if (statOk && ::stat(pf, &buf2) == -1) { - statOk = false; -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << Error(2, pf, strError(), "::stat") << "\n"; -#endif - } - if (statOk && origStMode != buf2.st_mode) { - // Set original file permissions - if (::chmod(pf, origStMode) == -1) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << Error(2, pf, strError(), "::chmod") << "\n"; -#endif - } - } - } - } // if (fileIo) - else { - // Generic handling, reopen both to reset to start - if (open("w+b") != 0) { -#ifdef EXV_UNICODE_PATH - if (p_->wpMode_ == Impl::wpUnicode) { - throw WError(10, wpath(), "w+b", strError().c_str()); - } - else -#endif - { - throw Error(10, path(), "w+b", strError()); - } - } - if (src.open() != 0) { -#ifdef EXV_UNICODE_PATH - if (p_->wpMode_ == Impl::wpUnicode) { - throw WError(9, src.wpath(), strError().c_str()); - } - else -#endif - { - throw Error(9, src.path(), strError()); - } - } - write(src); - src.close(); - } - - if (wasOpen) { - if (open(lastMode) != 0) { -#ifdef EXV_UNICODE_PATH - if (p_->wpMode_ == Impl::wpUnicode) { - throw WError(10, wpath(), lastMode.c_str(), strError().c_str()); - } - else -#endif - { - throw Error(10, path(), lastMode, strError()); - } - } - } - else close(); - - if (error() || src.error()) { -#ifdef EXV_UNICODE_PATH - if (p_->wpMode_ == Impl::wpUnicode) { - throw WError(18, wpath(), strError().c_str()); - } - else -#endif - { - throw Error(18, path(), strError()); - } - } - } // FileIo::transfer - - int FileIo::putb(byte data) - { - assert(p_->fp_ != 0); - if (p_->switchMode(Impl::opWrite) != 0) return EOF; - return putc(data, p_->fp_); - } - - int FileIo::seek(long offset, Position pos) - { - assert(p_->fp_ != 0); - - int fileSeek = 0; - switch (pos) { - case BasicIo::cur: fileSeek = SEEK_CUR; break; - case BasicIo::beg: fileSeek = SEEK_SET; break; - case BasicIo::end: fileSeek = SEEK_END; break; - } - - if (p_->switchMode(Impl::opSeek) != 0) return 1; - return std::fseek(p_->fp_, offset, fileSeek); - } - - long FileIo::tell() const - { - assert(p_->fp_ != 0); - return std::ftell(p_->fp_); - } - - long FileIo::size() const - { - // Flush and commit only if the file is open for writing - if (p_->fp_ != 0 && (p_->openMode_[0] != 'r' || p_->openMode_[1] == '+')) { - std::fflush(p_->fp_); -#if defined WIN32 && !defined __CYGWIN__ - // This is required on msvcrt before stat after writing to a file - _commit(_fileno(p_->fp_)); -#endif - } - - Impl::StructStat buf; - int ret = p_->stat(buf); - - if (ret != 0) return -1; - return buf.st_size; - } - - int FileIo::open() - { - // Default open is in read-only binary mode - return open("rb"); - } - - int FileIo::open(const std::string& mode) - { - close(); - p_->openMode_ = mode; - p_->opMode_ = Impl::opSeek; -#ifdef EXV_UNICODE_PATH - if (p_->wpMode_ == Impl::wpUnicode) { - p_->fp_ = ::_wfopen(wpath().c_str(), s2ws(mode).c_str()); - } - else -#endif - { - p_->fp_ = ::fopen(path().c_str(), mode.c_str()); - } - if (!p_->fp_) return 1; - return 0; - } - - bool FileIo::isopen() const - { - return p_->fp_ != 0; - } - - int FileIo::close() - { - int rc = 0; - if (munmap() != 0) rc = 2; - if (p_->fp_ != 0) { - if (std::fclose(p_->fp_) != 0) rc |= 1; - p_->fp_= 0; - } - return rc; - } - - DataBuf FileIo::read(long rcount) - { - assert(p_->fp_ != 0); - DataBuf buf(rcount); - long readCount = read(buf.pData_, buf.size_); - buf.size_ = readCount; - return buf; - } - - long FileIo::read(byte* buf, long rcount) - { - assert(p_->fp_ != 0); - if (p_->switchMode(Impl::opRead) != 0) return 0; - return (long)std::fread(buf, 1, rcount, p_->fp_); - } - - int FileIo::getb() - { - assert(p_->fp_ != 0); - if (p_->switchMode(Impl::opRead) != 0) return EOF; - return getc(p_->fp_); - } - - int FileIo::error() const - { - return p_->fp_ != 0 ? ferror(p_->fp_) : 0; - } - - bool FileIo::eof() const - { - assert(p_->fp_ != 0); - return feof(p_->fp_) != 0; - } - - std::string FileIo::path() const - { -#ifdef EXV_UNICODE_PATH - if (p_->wpMode_ == Impl::wpUnicode) { - return ws2s(p_->wpath_); - } -#endif - return p_->path_; - } - -#ifdef EXV_UNICODE_PATH - std::wstring FileIo::wpath() const - { - if (p_->wpMode_ == Impl::wpStandard) { - return s2ws(p_->path_); - } - return p_->wpath_; - } - -#endif - //! Internal Pimpl structure of class MemIo. - class MemIo::Impl { - public: - Impl(); //!< Default constructor - Impl(const byte* data, long size); //!< Constructor 2 - - // DATA - byte* data_; //!< Pointer to the start of the memory area - long idx_; //!< Index into the memory area - long size_; //!< Size of the memory area - long sizeAlloced_; //!< Size of the allocated buffer - bool isMalloced_; //!< Was the buffer allocated? - bool eof_; //!< EOF indicator - - // METHODS - void reserve(long wcount); //!< Reserve memory - - private: - // NOT IMPLEMENTED - Impl(const Impl& rhs); //!< Copy constructor - Impl& operator=(const Impl& rhs); //!< Assignment - - }; // class MemIo::Impl - - MemIo::Impl::Impl() - : data_(0), - idx_(0), - size_(0), - sizeAlloced_(0), - isMalloced_(false), - eof_(false) - { - } - - MemIo::Impl::Impl(const byte* data, long size) - : data_(const_cast(data)), - idx_(0), - size_(size), - sizeAlloced_(0), - isMalloced_(false), - eof_(false) - { - } - - void MemIo::Impl::reserve(long wcount) - { - long need = wcount + idx_; - - if (!isMalloced_) { - // Minimum size for 1st block is 32kB - long size = EXV_MAX(32768 * (1 + need / 32768), size_); - byte* data = (byte*)std::malloc(size); - std::memcpy(data, data_, size_); - data_ = data; - sizeAlloced_ = size; - isMalloced_ = true; - } - - if (need > size_) { - if (need > sizeAlloced_) { - // Allocate in blocks of 32kB - long want = 32768 * (1 + need / 32768); - data_ = (byte*)std::realloc(data_, want); - sizeAlloced_ = want; - isMalloced_ = true; - } - size_ = need; - } - } - - MemIo::MemIo() - : p_(new Impl()) - { - } - - MemIo::MemIo(const byte* data, long size) - : p_(new Impl(data, size)) - { - } - - MemIo::~MemIo() - { - if (p_->isMalloced_) { - std::free(p_->data_); - } - delete p_; - } - - BasicIo::AutoPtr MemIo::temporary() const - { - return BasicIo::AutoPtr(new MemIo); - } - - long MemIo::write(const byte* data, long wcount) - { - p_->reserve(wcount); - assert(p_->isMalloced_); - std::memcpy(&p_->data_[p_->idx_], data, wcount); - p_->idx_ += wcount; - return wcount; - } - - void MemIo::transfer(BasicIo& src) - { - MemIo *memIo = dynamic_cast(&src); - if (memIo) { - // Optimization if src is another instance of MemIo - if (true == p_->isMalloced_) { - std::free(p_->data_); - } - p_->idx_ = 0; - p_->data_ = memIo->p_->data_; - p_->size_ = memIo->p_->size_; - p_->isMalloced_ = memIo->p_->isMalloced_; - memIo->p_->idx_ = 0; - memIo->p_->data_ = 0; - memIo->p_->size_ = 0; - memIo->p_->isMalloced_ = false; - } - else { - // Generic reopen to reset position to start - if (src.open() != 0) { - throw Error(9, src.path(), strError()); - } - p_->idx_ = 0; - write(src); - src.close(); - } - if (error() || src.error()) throw Error(19, strError()); - } - - long MemIo::write(BasicIo& src) - { - if (static_cast(this) == &src) return 0; - if (!src.isopen()) return 0; - - byte buf[4096]; - long readCount = 0; - long writeTotal = 0; - while ((readCount = src.read(buf, sizeof(buf)))) { - write(buf, readCount); - writeTotal += readCount; - } - - return writeTotal; - } - - int MemIo::putb(byte data) - { - p_->reserve(1); - assert(p_->isMalloced_); - p_->data_[p_->idx_++] = data; - return data; - } - - int MemIo::seek(long offset, Position pos) - { - long newIdx = 0; - - switch (pos) { - case BasicIo::cur: newIdx = p_->idx_ + offset; break; - case BasicIo::beg: newIdx = offset; break; - case BasicIo::end: newIdx = p_->size_ + offset; break; - } - - if (newIdx < 0 || newIdx > p_->size_) return 1; - p_->idx_ = newIdx; - p_->eof_ = false; - return 0; - } - - byte* MemIo::mmap(bool /*isWriteable*/) - { - return p_->data_; - } - - int MemIo::munmap() - { - return 0; - } - - long MemIo::tell() const - { - return p_->idx_; - } - - long MemIo::size() const - { - return p_->size_; - } - - int MemIo::open() - { - p_->idx_ = 0; - p_->eof_ = false; - return 0; - } - - bool MemIo::isopen() const - { - return true; - } - - int MemIo::close() - { - return 0; - } - - DataBuf MemIo::read(long rcount) - { - DataBuf buf(rcount); - long readCount = read(buf.pData_, buf.size_); - buf.size_ = readCount; - return buf; - } - - long MemIo::read(byte* buf, long rcount) - { - long avail = p_->size_ - p_->idx_; - long allow = EXV_MIN(rcount, avail); - std::memcpy(buf, &p_->data_[p_->idx_], allow); - p_->idx_ += allow; - if (rcount > avail) p_->eof_ = true; - return allow; - } - - int MemIo::getb() - { - if (p_->idx_ == p_->size_) { - p_->eof_ = true; - return EOF; - } - return p_->data_[p_->idx_++]; - } - - int MemIo::error() const - { - return 0; - } - - bool MemIo::eof() const - { - return p_->eof_; - } - - std::string MemIo::path() const - { - return "MemIo"; - } - -#ifdef EXV_UNICODE_PATH - std::wstring MemIo::wpath() const - { - return EXV_WIDEN("MemIo"); - } - -#endif - // ************************************************************************* - // free functions - - DataBuf readFile(const std::string& path) - { - FileIo file(path); - if (file.open("rb") != 0) { - throw Error(10, path, "rb", strError()); - } - struct stat st; - if (0 != ::stat(path.c_str(), &st)) { - throw Error(2, path, strError(), "::stat"); - } - DataBuf buf(st.st_size); - long len = file.read(buf.pData_, buf.size_); - if (len != buf.size_) { - throw Error(2, path, strError(), "FileIo::read"); - } - return buf; - } - -#ifdef EXV_UNICODE_PATH - DataBuf readFile(const std::wstring& wpath) - { - FileIo file(wpath); - if (file.open("rb") != 0) { - throw WError(10, wpath, "rb", strError().c_str()); - } - struct _stat st; - if (0 != ::_wstat(wpath.c_str(), &st)) { - throw WError(2, wpath, strError().c_str(), "::_wstat"); - } - DataBuf buf(st.st_size); - long len = file.read(buf.pData_, buf.size_); - if (len != buf.size_) { - throw WError(2, wpath, strError().c_str(), "FileIo::read"); - } - return buf; - } - -#endif - long writeFile(const DataBuf& buf, const std::string& path) - { - FileIo file(path); - if (file.open("wb") != 0) { - throw Error(10, path, "wb", strError()); - } - return file.write(buf.pData_, buf.size_); - } - -#ifdef EXV_UNICODE_PATH - long writeFile(const DataBuf& buf, const std::wstring& wpath) - { - FileIo file(wpath); - if (file.open("wb") != 0) { - throw WError(10, wpath, "wb", strError().c_str()); - } - return file.write(buf.pData_, buf.size_); - } - -#endif -} // namespace Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/basicio.hpp b/platform/win32/msvc/external/exiv2/src/basicio.hpp deleted file mode 100644 index 9be44150e1d..00000000000 --- a/platform/win32/msvc/external/exiv2/src/basicio.hpp +++ /dev/null @@ -1,731 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file basicio.hpp - @brief Simple binary IO abstraction - @version $Rev: 2681 $ - @author Brad Schick (brad) - brad@robotbattle.com - @date 04-Dec-04, brad: created - */ -#ifndef BASICIO_HPP_ -#define BASICIO_HPP_ - -// ***************************************************************************** -// included header files -#include "types.hpp" - -// + standard includes -#include -#include // for std::auto_ptr - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class definitions - - /*! - @brief An interface for simple binary IO. - - Designed to have semantics and names similar to those of C style FILE* - operations. Subclasses should all behave the same so that they can be - interchanged. - */ - class EXIV2API BasicIo { - public: - //! BasicIo auto_ptr type - typedef std::auto_ptr AutoPtr; - - //! Seek starting positions - enum Position { beg, cur, end }; - - //! @name Creators - //@{ - //! Destructor - virtual ~BasicIo(); - //@} - - //! @name Manipulators - //@{ - /*! - @brief Open the IO source using the default access mode. The - default mode should allow for reading and writing. - - This method can also be used to "reopen" an IO source which will - flush any unwritten data and reset the IO position to the start. - Subclasses may provide custom methods to allow for - opening IO sources differently. - - @return 0 if successful;
- Nonzero if failure. - */ - virtual int open() = 0; - /*! - @brief Close the IO source. After closing a BasicIo instance can not - be read or written. Closing flushes any unwritten data. It is - safe to call close on a closed instance. - @return 0 if successful;
- Nonzero if failure. - */ - virtual int close() = 0; - /*! - @brief Write data to the IO source. Current IO position is advanced - by the number of bytes written. - @param data Pointer to data. Data must be at least \em wcount - bytes long - @param wcount Number of bytes to be written. - @return Number of bytes written to IO source successfully;
- 0 if failure; - */ - virtual long write(const byte* data, long wcount) = 0; - /*! - @brief Write data that is read from another BasicIo instance to - the IO source. Current IO position is advanced by the number - of bytes written. - @param src Reference to another BasicIo instance. Reading start - at the source's current IO position - @return Number of bytes written to IO source successfully;
- 0 if failure; - */ - virtual long write(BasicIo& src) = 0; - /*! - @brief Write one byte to the IO source. Current IO position is - advanced by one byte. - @param data The single byte to be written. - @return The value of the byte written if successful;
- EOF if failure; - */ - virtual int putb(byte data) = 0; - /*! - @brief Read data from the IO source. Reading starts at the current - IO position and the position is advanced by the number of bytes - read. - @param rcount Maximum number of bytes to read. Fewer bytes may be - read if \em rcount bytes are not available. - @return DataBuf instance containing the bytes read. Use the - DataBuf::size_ member to find the number of bytes read. - DataBuf::size_ will be 0 on failure. - */ - virtual DataBuf read(long rcount) = 0; - /*! - @brief Read data from the IO source. Reading starts at the current - IO position and the position is advanced by the number of bytes - read. - @param buf Pointer to a block of memory into which the read data - is stored. The memory block must be at least \em rcount bytes - long. - @param rcount Maximum number of bytes to read. Fewer bytes may be - read if \em rcount bytes are not available. - @return Number of bytes read from IO source successfully;
- 0 if failure; - */ - virtual long read(byte* buf, long rcount) = 0; - /*! - @brief Read one byte from the IO source. Current IO position is - advanced by one byte. - @return The byte read from the IO source if successful;
- EOF if failure; - */ - virtual int getb() = 0; - /*! - @brief Remove all data from this object's IO source and then transfer - data from the \em src BasicIo object into this object. - - The source object is invalidated by this operation and should not be - used after this method returns. This method exists primarily to - be used with the BasicIo::temporary() method. - - @param src Reference to another BasicIo instance. The entire contents - of src are transferred to this object. The \em src object is - invalidated by the method. - @throw Error In case of failure - */ - virtual void transfer(BasicIo& src) = 0; - /*! - @brief Move the current IO position. - @param offset Number of bytes to move the position relative - to the starting position specified by \em pos - @param pos Position from which the seek should start - @return 0 if successful;
- Nonzero if failure; - */ - virtual int seek(long offset, Position pos) = 0; - /*! - @brief Direct access to the IO data. For files, this is done by - mapping the file into the process's address space; for memory - blocks, this allows direct access to the memory block. - @param isWriteable Set to true if the mapped area should be writeable - (default is false). - @return A pointer to the mapped area. - @throw Error In case of failure. - */ - virtual byte* mmap(bool isWriteable =false) =0; - /*! - @brief Remove a mapping established with mmap(). If the mapped area - is writeable, this ensures that changes are written back. - @return 0 if successful;
- Nonzero if failure; - */ - virtual int munmap() =0; - //@} - - //! @name Accessors - //@{ - /*! - @brief Get the current IO position. - @return Offset from the start of IO if successful;
- -1 if failure; - */ - virtual long tell() const = 0; - /*! - @brief Get the current size of the IO source in bytes. - @return Size of the IO source in bytes;
- -1 if failure; - */ - virtual long size() const = 0; - //!Returns true if the IO source is open, otherwise false. - virtual bool isopen() const = 0; - //!Returns 0 if the IO source is in a valid state, otherwise nonzero. - virtual int error() const = 0; - //!Returns true if the IO position has reach the end, otherwise false. - virtual bool eof() const = 0; - /*! - @brief Return the path to the IO resource. Often used to form - comprehensive error messages where only a BasicIo instance is - available. - */ - virtual std::string path() const =0; -#ifdef EXV_UNICODE_PATH - /*! - @brief Like path() but returns a unicode path in an std::wstring. - @note This function is only available on Windows. - */ - virtual std::wstring wpath() const =0; -#endif - /*! - @brief Returns a temporary data storage location. This is often - needed to rewrite an IO source. - - For example, data may be read from the original IO source, modified - in some way, and then saved to the temporary instance. After the - operation is complete, the BasicIo::transfer method can be used to - replace the original IO source with the modified version. Subclasses - are free to return any class that derives from BasicIo. - - @return An instance of BasicIo on success - @throw Error In case of failure - */ - virtual BasicIo::AutoPtr temporary() const = 0; - //@} - - protected: - //! @name Creators - //@{ - //! Default Constructor - BasicIo() {} - //@} - }; // class BasicIo - - /*! - @brief Utility class that closes a BasicIo instance upon destruction. - Meant to be used as a stack variable in functions that need to - ensure BasicIo instances get closed. Useful when functions return - errors from many locations. - */ - class EXIV2API IoCloser { - public: - //! @name Creators - //@{ - //! Constructor, takes a BasicIo reference - IoCloser(BasicIo& bio) : bio_(bio) {} - //! Destructor, closes the BasicIo reference - ~IoCloser() { close(); } - //@} - - //! @name Manipulators - //@{ - //! Close the BasicIo if it is open - void close() { if (bio_.isopen()) bio_.close(); } - //@} - - // DATA - //! The BasicIo reference - BasicIo& bio_; - - private: - // Not implemented - //! Copy constructor - IoCloser(const IoCloser&); - //! Assignment operator - IoCloser& operator=(const IoCloser&); - }; // class IoCloser - - /*! - @brief Provides binary file IO by implementing the BasicIo - interface. - */ - class EXIV2API FileIo : public BasicIo { - public: - //! @name Creators - //@{ - /*! - @brief Constructor that accepts the file path on which IO will be - performed. The constructor does not open the file, and - therefore never failes. - @param path The full path of a file - */ - FileIo(const std::string& path); -#ifdef EXV_UNICODE_PATH - /*! - @brief Like FileIo(const std::string& path) but accepts a - unicode path in an std::wstring. - @note This constructor is only available on Windows. - */ - FileIo(const std::wstring& wpath); -#endif - //! Destructor. Flushes and closes an open file. - virtual ~FileIo(); - //@} - - //! @name Manipulators - //@{ - /*! - @brief Open the file using using the specified mode. - - This method can also be used to "reopen" a file which will flush any - unwritten data and reset the IO position to the start. Although - files can be opened in binary or text mode, this class has - only been tested carefully in binary mode. - - @param mode Specified that type of access allowed on the file. - Valid values match those of the C fopen command exactly. - @return 0 if successful;
- Nonzero if failure. - */ - int open(const std::string& mode); - /*! - @brief Open the file using using the default access mode of "rb". - This method can also be used to "reopen" a file which will flush - any unwritten data and reset the IO position to the start. - @return 0 if successful;
- Nonzero if failure. - */ - virtual int open(); - /*! - @brief Flush and unwritten data and close the file . It is - safe to call close on an already closed instance. - @return 0 if successful;
- Nonzero if failure; - */ - virtual int close(); - /*! - @brief Write data to the file. The file position is advanced - by the number of bytes written. - @param data Pointer to data. Data must be at least \em wcount - bytes long - @param wcount Number of bytes to be written. - @return Number of bytes written to the file successfully;
- 0 if failure; - */ - virtual long write(const byte* data, long wcount); - /*! - @brief Write data that is read from another BasicIo instance to - the file. The file position is advanced by the number - of bytes written. - @param src Reference to another BasicIo instance. Reading start - at the source's current IO position - @return Number of bytes written to the file successfully;
- 0 if failure; - */ - virtual long write(BasicIo& src); - /*! - @brief Write one byte to the file. The file position is - advanced by one byte. - @param data The single byte to be written. - @return The value of the byte written if successful;
- EOF if failure; - */ - virtual int putb(byte data); - /*! - @brief Read data from the file. Reading starts at the current - file position and the position is advanced by the number of - bytes read. - @param rcount Maximum number of bytes to read. Fewer bytes may be - read if \em rcount bytes are not available. - @return DataBuf instance containing the bytes read. Use the - DataBuf::size_ member to find the number of bytes read. - DataBuf::size_ will be 0 on failure. - */ - virtual DataBuf read(long rcount); - /*! - @brief Read data from the file. Reading starts at the current - file position and the position is advanced by the number of - bytes read. - @param buf Pointer to a block of memory into which the read data - is stored. The memory block must be at least \em rcount bytes - long. - @param rcount Maximum number of bytes to read. Fewer bytes may be - read if \em rcount bytes are not available. - @return Number of bytes read from the file successfully;
- 0 if failure; - */ - virtual long read(byte* buf, long rcount); - /*! - @brief Read one byte from the file. The file position is - advanced by one byte. - @return The byte read from the file if successful;
- EOF if failure; - */ - virtual int getb(); - /*! - @brief Remove the contents of the file and then transfer data from - the \em src BasicIo object into the empty file. - - This method is optimized to simply rename the source file if the - source object is another FileIo instance. The source BasicIo object - is invalidated by this operation and should not be used after this - method returns. This method exists primarily to be used with - the BasicIo::temporary() method. - - @note If the caller doesn't have permissions to write to the file, - an exception is raised and \em src is deleted. - - @param src Reference to another BasicIo instance. The entire contents - of src are transferred to this object. The \em src object is - invalidated by the method. - @throw Error In case of failure - */ - virtual void transfer(BasicIo& src); - /*! - @brief Move the current file position. - @param offset Number of bytes to move the file position - relative to the starting position specified by \em pos - @param pos Position from which the seek should start - @return 0 if successful;
- Nonzero if failure; - */ - virtual int seek(long offset, Position pos); - /*! - @brief Map the file into the process's address space. The file must be - open before mmap() is called. If the mapped area is writeable, - changes may not be written back to the underlying file until - munmap() is called. The pointer is valid only as long as the - FileIo object exists. - @param isWriteable Set to true if the mapped area should be writeable - (default is false). - @return A pointer to the mapped area. - @throw Error In case of failure. - */ - virtual byte* mmap(bool isWriteable =false); - /*! - @brief Remove a mapping established with mmap(). If the mapped area is - writeable, this ensures that changes are written back to the - underlying file. - @return 0 if successful;
- Nonzero if failure; - */ - virtual int munmap(); - //@} - - //! @name Accessors - //@{ - /*! - @brief Get the current file position. - @return Offset from the start of the file if successful;
- -1 if failure; - */ - virtual long tell() const; - /*! - @brief Flush any buffered writes and get the current file size - in bytes. - @return Size of the file in bytes;
- -1 if failure; - */ - virtual long size() const; - //! Returns true if the file is open, otherwise false. - virtual bool isopen() const; - //! Returns 0 if the file is in a valid state, otherwise nonzero. - virtual int error() const; - //! Returns true if the file position has reach the end, otherwise false. - virtual bool eof() const; - //! Returns the path of the file - virtual std::string path() const; -#ifdef EXV_UNICODE_PATH - /* - @brief Like path() but returns the unicode path of the file in an std::wstring. - @note This function is only available on Windows. - */ - virtual std::wstring wpath() const; -#endif - /*! - @brief Returns a temporary data storage location. The actual type - returned depends upon the size of the file represented a FileIo - object. For small files, a MemIo is returned while for large files - a FileIo is returned. Callers should not rely on this behavior, - however, since it may change. - @return An instance of BasicIo on success - @throw Error If opening the temporary file fails - */ - virtual BasicIo::AutoPtr temporary() const; - //@} - - private: - // NOT IMPLEMENTED - //! Copy constructor - FileIo(FileIo& rhs); - //! Assignment operator - FileIo& operator=(const FileIo& rhs); - - // Pimpl idiom - class Impl; - Impl* p_; - - }; // class FileIo - - /*! - @brief Provides binary IO on blocks of memory by implementing the BasicIo - interface. A copy-on-write implementation ensures that the data passed - in is only copied when necessary, i.e., as soon as data is written to - the MemIo. The original data is only used for reading. If writes are - performed, the changed data can be retrieved using the read methods - (since the data used in construction is never modified). - - @note If read only usage of this class is common, it might be worth - creating a specialized readonly class or changing this one to - have a readonly mode. - */ - class EXIV2API MemIo : public BasicIo { - public: - //! @name Creators - //@{ - //! Default constructor that results in an empty object - MemIo(); - /*! - @brief Constructor that accepts a block of memory. A copy-on-write - algorithm allows read operations directly from the original data - and will create a copy of the buffer on the first write operation. - @param data Pointer to data. Data must be at least \em size - bytes long - @param size Number of bytes to copy. - */ - MemIo(const byte* data, long size); - //! Destructor. Releases all managed memory - ~MemIo(); - //@} - - //! @name Manipulators - //@{ - /*! - @brief Memory IO is always open for reading and writing. This method - therefore only resets the IO position to the start. - - @return 0 - */ - virtual int open(); - /*! - @brief Does nothing on MemIo objects. - @return 0 - */ - virtual int close(); - /*! - @brief Write data to the memory block. If needed, the size of the - internal memory block is expanded. The IO position is advanced - by the number of bytes written. - @param data Pointer to data. Data must be at least \em wcount - bytes long - @param wcount Number of bytes to be written. - @return Number of bytes written to the memory block successfully;
- 0 if failure; - */ - virtual long write(const byte* data, long wcount); - /*! - @brief Write data that is read from another BasicIo instance to - the memory block. If needed, the size of the internal memory - block is expanded. The IO position is advanced by the number - of bytes written. - @param src Reference to another BasicIo instance. Reading start - at the source's current IO position - @return Number of bytes written to the memory block successfully;
- 0 if failure; - */ - virtual long write(BasicIo& src); - /*! - @brief Write one byte to the memory block. The IO position is - advanced by one byte. - @param data The single byte to be written. - @return The value of the byte written if successful;
- EOF if failure; - */ - virtual int putb(byte data); - /*! - @brief Read data from the memory block. Reading starts at the current - IO position and the position is advanced by the number of - bytes read. - @param rcount Maximum number of bytes to read. Fewer bytes may be - read if \em rcount bytes are not available. - @return DataBuf instance containing the bytes read. Use the - DataBuf::size_ member to find the number of bytes read. - DataBuf::size_ will be 0 on failure. - */ - virtual DataBuf read(long rcount); - /*! - @brief Read data from the memory block. Reading starts at the current - IO position and the position is advanced by the number of - bytes read. - @param buf Pointer to a block of memory into which the read data - is stored. The memory block must be at least \em rcount bytes - long. - @param rcount Maximum number of bytes to read. Fewer bytes may be - read if \em rcount bytes are not available. - @return Number of bytes read from the memory block successfully;
- 0 if failure; - */ - virtual long read(byte* buf, long rcount); - /*! - @brief Read one byte from the memory block. The IO position is - advanced by one byte. - @return The byte read from the memory block if successful;
- EOF if failure; - */ - virtual int getb(); - /*! - @brief Clear the memory block and then transfer data from - the \em src BasicIo object into a new block of memory. - - This method is optimized to simply swap memory block if the source - object is another MemIo instance. The source BasicIo instance - is invalidated by this operation and should not be used after this - method returns. This method exists primarily to be used with - the BasicIo::temporary() method. - - @param src Reference to another BasicIo instance. The entire contents - of src are transferred to this object. The \em src object is - invalidated by the method. - @throw Error In case of failure - */ - virtual void transfer(BasicIo& src); - /*! - @brief Move the current IO position. - @param offset Number of bytes to move the IO position - relative to the starting position specified by \em pos - @param pos Position from which the seek should start - @return 0 if successful;
- Nonzero if failure; - */ - virtual int seek(long offset, Position pos); - /*! - @brief Allow direct access to the underlying data buffer. The buffer - is not protected against write access in any way, the argument - is ignored. - @note The application must ensure that the memory pointed to by the - returned pointer remains valid and allocated as long as the - MemIo object exists. - */ - virtual byte* mmap(bool /*isWriteable*/ =false); - virtual int munmap(); - //@} - - //! @name Accessors - //@{ - /*! - @brief Get the current IO position. - @return Offset from the start of the memory block - */ - virtual long tell() const; - /*! - @brief Get the current memory buffer size in bytes. - @return Size of the in memory data in bytes;
- -1 if failure; - */ - virtual long size() const; - //!Always returns true - virtual bool isopen() const; - //!Always returns 0 - virtual int error() const; - //!Returns true if the IO position has reach the end, otherwise false. - virtual bool eof() const; - //! Returns a dummy path, indicating that memory access is used - virtual std::string path() const; -#ifdef EXV_UNICODE_PATH - /* - @brief Like path() but returns a unicode dummy path in an std::wstring. - @note This function is only available on Windows. - */ - virtual std::wstring wpath() const; -#endif - /*! - @brief Returns a temporary data storage location. Currently returns - an empty MemIo object, but callers should not rely on this - behavior since it may change. - @return An instance of BasicIo - */ - virtual BasicIo::AutoPtr temporary() const; - //@} - - private: - // NOT IMPLEMENTED - //! Copy constructor - MemIo(MemIo& rhs); - //! Assignment operator - MemIo& operator=(const MemIo& rhs); - - // Pimpl idiom - class Impl; - Impl* p_; - - }; // class MemIo - -// ***************************************************************************** -// template, inline and free functions - - /*! - @brief Read file \em path into a DataBuf, which is returned. - @return Buffer containing the file. - @throw Error In case of failure. - */ - EXIV2API DataBuf readFile(const std::string& path); -#ifdef EXV_UNICODE_PATH - /*! - @brief Like readFile() but accepts a unicode path in an std::wstring. - @note This function is only available on Windows. - */ - EXIV2API DataBuf readFile(const std::wstring& wpath); -#endif - /*! - @brief Write DataBuf \em buf to file \em path. - @return Return the number of bytes written. - @throw Error In case of failure. - */ - EXIV2API long writeFile(const DataBuf& buf, const std::string& path); -#ifdef EXV_UNICODE_PATH - /*! - @brief Like writeFile() but accepts a unicode path in an std::wstring. - @note This function is only available on Windows. - */ - EXIV2API long writeFile(const DataBuf& buf, const std::wstring& wpath); - -#endif - -} // namespace Exiv2 - -#endif // #ifndef BASICIO_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/bmpimage.cpp b/platform/win32/msvc/external/exiv2/src/bmpimage.cpp deleted file mode 100644 index 5aa662cf036..00000000000 --- a/platform/win32/msvc/external/exiv2/src/bmpimage.cpp +++ /dev/null @@ -1,165 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: bmpimage.cpp - Version: $Rev: 2681 $ - Author(s): Marco Piovanelli, Ovolab (marco) - History: 05-Mar-2007, marco: created - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: bmpimage.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -//#define DEBUG 1 - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif -#include "bmpimage.hpp" -#include "image.hpp" -#include "basicio.hpp" -#include "error.hpp" -#include "futils.hpp" - -// + standard includes -#include -#include -#include - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - BmpImage::BmpImage(BasicIo::AutoPtr io) - : Image(ImageType::bmp, mdNone, io) - { - } // BmpImage::BmpImage - - std::string BmpImage::mimeType() const - { - return "image/x-ms-bmp"; - } - - void BmpImage::setExifData(const ExifData& /*exifData*/) - { - // Todo: implement me! - throw(Error(32, "Exif metadata", "BMP")); - } - - void BmpImage::setIptcData(const IptcData& /*iptcData*/) - { - // Todo: implement me! - throw(Error(32, "IPTC metadata", "BMP")); - } - - void BmpImage::setComment(const std::string& /*comment*/) - { - // not supported - throw(Error(32, "Image comment", "BMP")); - } - - void BmpImage::readMetadata() - { -#ifdef DEBUG - std::cerr << "Exiv2::BmpImage::readMetadata: Reading Windows bitmap file " << io_->path() << "\n"; -#endif - if (io_->open() != 0) - { - throw Error(9, io_->path(), strError()); - } - IoCloser closer(*io_); - // Ensure that this is the correct image type - if (!isBmpType(*io_, false)) - { - if (io_->error() || io_->eof()) throw Error(14); - throw Error(3, "BMP"); - } - clearMetadata(); - - /* - The Windows bitmap header goes as follows -- all numbers are in little-endian byte order: - - offset length name description - ====== ======= ===================== ======= - 0 2 bytes signature always 'BM' - 2 4 bytes bitmap size - 6 4 bytes reserved - 10 4 bytes bitmap offset - 14 4 bytes header size - 18 4 bytes bitmap width - 22 4 bytes bitmap height - 26 2 bytes plane count - 28 2 bytes depth - 30 4 bytes compression 0 = none; 1 = RLE, 8 bits/pixel; 2 = RLE, 4 bits/pixel; 3 = bitfield; 4 = JPEG; 5 = PNG - 34 4 bytes image size size of the raw bitmap data, in bytes - 38 4 bytes horizontal resolution (in pixels per meter) - 42 4 bytes vertical resolution (in pixels per meter) - 46 4 bytes color count - 50 4 bytes important colors number of "important" colors - */ - byte buf[54]; - if (io_->read(buf, sizeof(buf)) == sizeof(buf)) - { - pixelWidth_ = getLong(buf + 18, littleEndian); - pixelHeight_ = getLong(buf + 22, littleEndian); - } - } // BmpImage::readMetadata - - void BmpImage::writeMetadata() - { - // Todo: implement me! - throw(Error(31, "BMP")); - } // BmpImage::writeMetadata - - // ************************************************************************* - // free functions - Image::AutoPtr newBmpInstance(BasicIo::AutoPtr io, bool /*create*/) - { - Image::AutoPtr image(new BmpImage(io)); - if (!image->good()) - { - image.reset(); - } - return image; - } - - bool isBmpType(BasicIo& iIo, bool advance) - { - const int32_t len = 2; - const unsigned char BmpImageId[2] = { 'B', 'M' }; - byte buf[len]; - iIo.read(buf, len); - if (iIo.error() || iIo.eof()) - { - return false; - } - bool matched = (memcmp(buf, BmpImageId, len) == 0); - if (!advance || !matched) - { - iIo.seek(-len, BasicIo::cur); - } - return matched; - } -} // namespace Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/bmpimage.hpp b/platform/win32/msvc/external/exiv2/src/bmpimage.hpp deleted file mode 100644 index a7e38a37259..00000000000 --- a/platform/win32/msvc/external/exiv2/src/bmpimage.hpp +++ /dev/null @@ -1,134 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file bmpimage.hpp - @brief Windows Bitmap (BMP) image - @version $Rev: 2681 $ - @author Marco Piovanelli, Ovolab (marco) - marco.piovanelli@pobox.com - @date 05-Mar-2007, marco: created - */ -#ifndef BMPIMAGE_HPP_ -#define BMPIMAGE_HPP_ - -// ***************************************************************************** -// included header files -#include "exif.hpp" -#include "iptc.hpp" -#include "image.hpp" -#include "types.hpp" - -// + standard includes -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class definitions - - // Add Windows Bitmap (BMP) to the supported image formats - namespace ImageType { - const int bmp = 14; //!< Windows bitmap (bmp) image type (see class BmpImage) - } - - /*! - @brief Class to access Windows bitmaps. This is just a stub - we only - read width and height. - */ - class EXIV2API BmpImage : public Image { - //! @name NOT Implemented - //@{ - //! Copy constructor - BmpImage(const BmpImage& rhs); - //! Assignment operator - BmpImage& operator=(const BmpImage& rhs); - //@} - - public: - //! @name Creators - //@{ - /*! - @brief Constructor to open a Windows bitmap image. Since the - constructor can not return a result, callers should check the - good() method after object construction to determine success - or failure. - @param io An auto-pointer that owns a BasicIo instance used for - reading and writing image metadata. \b Important: The constructor - takes ownership of the passed in BasicIo instance through the - auto-pointer. Callers should not continue to use the BasicIo - instance after it is passed to this method. Use the Image::io() - method to get a temporary reference. - */ - BmpImage(BasicIo::AutoPtr io); - //@} - - //! @name Manipulators - //@{ - void readMetadata(); - /*! - @brief Todo: Write metadata back to the image. This method is not - yet(?) implemented. Calling it will throw an Error(31). - */ - void writeMetadata(); - /*! - @brief Todo: Not supported yet(?). Calling this function will throw - an instance of Error(32). - */ - void setExifData(const ExifData& exifData); - /*! - @brief Todo: Not supported yet(?). Calling this function will throw - an instance of Error(32). - */ - void setIptcData(const IptcData& iptcData); - /*! - @brief Not supported. Calling this function will throw an instance - of Error(32). - */ - void setComment(const std::string& comment); - //@} - - //! @name Accessors - //@{ - std::string mimeType() const; - //@} - - }; // class BmpImage - -// ***************************************************************************** -// template, inline and free functions - - // These could be static private functions on Image subclasses but then - // ImageFactory needs to be made a friend. - /*! - @brief Create a new BmpImage instance and return an auto-pointer to it. - Caller owns the returned object and the auto-pointer ensures that - it will be deleted. - */ - EXIV2API Image::AutoPtr newBmpInstance(BasicIo::AutoPtr io, bool create); - - //! Check if the file iIo is a Windows Bitmap image. - EXIV2API bool isBmpType(BasicIo& iIo, bool advance); - -} // namespace Exiv2 - -#endif // #ifndef BMPIMAGE_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/canonmn.cpp b/platform/win32/msvc/external/exiv2/src/canonmn.cpp deleted file mode 100644 index 1c0a73a2982..00000000000 --- a/platform/win32/msvc/external/exiv2/src/canonmn.cpp +++ /dev/null @@ -1,1503 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: canonmn.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - David Cannings (dc) - Andi Clemens (ac) - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: canonmn.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#include "types.hpp" -#include "canonmn_int.hpp" -#include "tags_int.hpp" -#include "value.hpp" -#include "exif.hpp" -#include "i18n.h" // NLS support. - -// + standard includes -#include -#include -#include -#include -#include -#include -#include -#include - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - namespace Internal { - - //! OffOn, multiple tags - extern const TagDetails canonOffOn[] = { - { 0, N_("Off") }, - { 1, N_("On") } - }; - - //! Special treatment pretty-print function for non-unique lens ids. - std::ostream& printCsLensByFocalLength(std::ostream& os, - const Value& value, - const ExifData* metadata); - - //! ModelId, tag 0x0010 - extern const TagDetails canonModelId[] = { - { 0x1010000, N_("PowerShot A30") }, - { 0x1040000, N_("PowerShot S300 / Digital IXUS 300 / IXY Digital 300") }, - { 0x1060000, N_("PowerShot A20") }, - { 0x1080000, N_("PowerShot A10") }, - { 0x1090000, N_("PowerShot S110 / Digital IXUS v / IXY Digital 200") }, - { 0x1100000, N_("PowerShot G2") }, - { 0x1110000, N_("PowerShot S40") }, - { 0x1120000, N_("PowerShot S30") }, - { 0x1130000, N_("PowerShot A40") }, - { 0x1140000, N_("EOS D30") }, - { 0x1150000, N_("PowerShot A100") }, - { 0x1160000, N_("PowerShot S200 / Digital IXUS v2 / IXY Digital 200a") }, - { 0x1170000, N_("PowerShot A200") }, - { 0x1180000, N_("PowerShot S330 / Digital IXUS 330 / IXY Digital 300a") }, - { 0x1190000, N_("PowerShot G3") }, - { 0x1210000, N_("PowerShot S45") }, - { 0x1230000, N_("PowerShot SD100 / Digital IXUS II / IXY Digital 30") }, - { 0x1240000, N_("PowerShot S230 / Digital IXUS v3 / IXY Digital 320") }, - { 0x1250000, N_("PowerShot A70") }, - { 0x1260000, N_("PowerShot A60") }, - { 0x1270000, N_("PowerShot S400 / Digital IXUS 400 / IXY Digital 400") }, - { 0x1290000, N_("PowerShot G5") }, - { 0x1300000, N_("PowerShot A300") }, - { 0x1310000, N_("PowerShot S50") }, - { 0x1340000, N_("PowerShot A80") }, - { 0x1350000, N_("PowerShot SD10 / Digital IXUS i / IXY Digital L") }, - { 0x1360000, N_("PowerShot S1 IS") }, - { 0x1370000, N_("PowerShot Pro1") }, - { 0x1380000, N_("PowerShot S70") }, - { 0x1390000, N_("PowerShot S60") }, - { 0x1400000, N_("PowerShot G6") }, - { 0x1410000, N_("PowerShot S500 / Digital IXUS 500 / IXY Digital 500") }, - { 0x1420000, N_("PowerShot A75") }, - { 0x1440000, N_("PowerShot SD110 / Digital IXUS IIs / IXY Digital 30a") }, - { 0x1450000, N_("PowerShot A400") }, - { 0x1470000, N_("PowerShot A310") }, - { 0x1490000, N_("PowerShot A85") }, - { 0x1520000, N_("PowerShot S410 / Digital IXUS 430 / IXY Digital 450") }, - { 0x1530000, N_("PowerShot A95") }, - { 0x1540000, N_("PowerShot SD300 / Digital IXUS 40 / IXY Digital 50") }, - { 0x1550000, N_("PowerShot SD200 / Digital IXUS 30 / IXY Digital 40") }, - { 0x1560000, N_("PowerShot A520") }, - { 0x1570000, N_("PowerShot A510") }, - { 0x1590000, N_("PowerShot SD20 / Digital IXUS i5 / IXY Digital L2") }, - { 0x1640000, N_("PowerShot S2 IS") }, - { 0x1650000, N_("PowerShot SD430 / IXUS Wireless / IXY Wireless") }, - { 0x1660000, N_("PowerShot SD500 / Digital IXUS 700 / IXY Digital 600") }, - { 0x1668000, N_("EOS D60") }, - { 0x1700000, N_("PowerShot SD30 / Digital IXUS i zoom / IXY Digital L3") }, - { 0x1740000, N_("PowerShot A430") }, - { 0x1750000, N_("PowerShot A410") }, - { 0x1760000, N_("PowerShot S80") }, - { 0x1780000, N_("PowerShot A620") }, - { 0x1790000, N_("PowerShot A610") }, - { 0x1800000, N_("PowerShot SD630 / Digital IXUS 65 / IXY Digital 80") }, - { 0x1810000, N_("PowerShot SD450 / Digital IXUS 55 / IXY Digital 60") }, - { 0x1820000, N_("PowerShot TX1") }, - { 0x1870000, N_("PowerShot SD400 / Digital IXUS 50 / IXY Digital 55") }, - { 0x1880000, N_("PowerShot A420") }, - { 0x1890000, N_("PowerShot SD900 / Digital IXUS 900 Ti / IXY Digital 1000") }, - { 0x1900000, N_("PowerShot SD550 / Digital IXUS 750 / IXY Digital 700") }, - { 0x1920000, N_("PowerShot A700") }, - { 0x1940000, N_("PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS") }, - { 0x1950000, N_("PowerShot S3 IS") }, - { 0x1960000, N_("PowerShot A540") }, - { 0x1970000, N_("PowerShot SD600 / Digital IXUS 60 / IXY Digital 70") }, - { 0x1980000, N_("PowerShot G7") }, - { 0x1990000, N_("PowerShot A530") }, - { 0x2000000, N_("PowerShot SD800 IS / Digital IXUS 850 IS / IXY Digital 900 IS") }, - { 0x2010000, N_("PowerShot SD40 / Digital IXUS i7 / IXY Digital L4") }, - { 0x2020000, N_("PowerShot A710 IS") }, - { 0x2030000, N_("PowerShot A640") }, - { 0x2040000, N_("PowerShot A630") }, - { 0x2090000, N_("PowerShot S5 IS") }, - { 0x2100000, N_("PowerShot A460") }, - { 0x2120000, N_("PowerShot SD850 IS / Digital IXUS 950 IS") }, - { 0x2130000, N_("PowerShot A570 IS") }, - { 0x2140000, N_("PowerShot A560") }, - { 0x2150000, N_("PowerShot SD750 / Digital IXUS 75 / IXY Digital 90") }, - { 0x2160000, N_("PowerShot SD1000 / Digital IXUS 70 / IXY Digital 10") }, - { 0x2180000, N_("PowerShot A550") }, - { 0x2190000, N_("PowerShot A450") }, - { 0x3010000, N_("PowerShot Pro90 IS") }, - { 0x4040000, N_("PowerShot G1") }, - { 0x6040000, N_("PowerShot S100 / Digital IXUS / IXY Digital") }, - { 0x4007d675, N_("HV10") }, - { 0x4007d777, N_("iVIS DC50") }, - { 0x4007d778, N_("iVIS HV20") }, - { 0x80000001, N_("EOS-1D") }, - { 0x80000167, N_("EOS-1DS") }, - { 0x80000168, N_("EOS 10D") }, - { 0x80000169, N_("EOS-1D Mark III") }, - { 0x80000170, N_("EOS Digital Rebel / 300D / Kiss Digital") }, - { 0x80000174, N_("EOS-1D Mark II") }, - { 0x80000175, N_("EOS 20D") }, - { 0x80000188, N_("EOS-1Ds Mark II") }, - { 0x80000189, N_("EOS Digital Rebel XT / 350D / Kiss Digital N") }, - { 0x80000213, N_("EOS 5D") }, - { 0x80000232, N_("EOS-1D Mark II N") }, - { 0x80000234, N_("EOS 30D") }, - { 0x80000236, N_("EOS Digital Rebel XTi / 400D / Kiss Digital X") }, - { 0x80000250, N_("EOS 7D") }, - { 0x80000252, N_("EOS Rebel T1i / 500D / Kiss X3") }, - { 0x80000254, N_("EOS Rebel XS / 1000D / Kiss F") }, - { 0x80000261, N_("EOS 50D") }, - { 0x80000270, N_("EOS Rebel T2i / 550D / Kiss X4") }, - { 0x80000281, N_("EOS-1D Mark IV") }, - }; - - //! SerialNumberFormat, tag 0x0015 - extern const TagDetails canonSerialNumberFormat[] = { - { 0x90000000, N_("Format 1") }, - { 0xa0000000, N_("Format 2") }, - }; - - //! SuperMacro, tag 0x001a - extern const TagDetails canonSuperMacro[] = { - { 0, N_("Off") }, - { 1, N_("On (1)") }, - { 2, N_("On (2)") } - }; - - //! ColorSpace, tag 0x00b4 - extern const TagDetails canonColorSpace[] = { - { 1, N_("sRGB") }, - { 2, N_("Adobe RGB") } - }; - - // Canon MakerNote Tag Info - const TagInfo CanonMakerNote::tagInfo_[] = { - TagInfo(0x0000, "0x0000", "0x0000", N_("Unknown"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0001, "CameraSettings", N_("Camera Settings"), N_("Various camera settings"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0002, "FocalLength", N_("Focal Length"), N_("Focal length"), canonId, makerTags, unsignedShort, -1, printFocalLength), - TagInfo(0x0003, "0x0003", "0x0003", N_("Unknown"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0004, "ShotInfo", N_("Shot Info"), N_("Shot information"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0005, "Panorama", N_("Panorama"), N_("Panorama"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0006, "ImageType", N_("Image Type"), N_("Image type"), canonId, makerTags, asciiString, -1, printValue), - TagInfo(0x0007, "FirmwareVersion", N_("Firmware Version"), N_("Firmware version"), canonId, makerTags, asciiString, -1, printValue), - TagInfo(0x0008, "FileNumber", N_("File Number"), N_("File number"), canonId, makerTags, unsignedLong, -1, print0x0008), - TagInfo(0x0009, "OwnerName", N_("Owner Name"), N_("Owner Name"), canonId, makerTags, asciiString, -1, printValue), - TagInfo(0x000c, "SerialNumber", N_("Serial Number"), N_("Camera serial number"), canonId, makerTags, unsignedLong, -1, print0x000c), - TagInfo(0x000d, "CameraInfo", N_("Camera Info"), N_("Camera info"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x000f, "CustomFunctions", N_("Custom Functions"), N_("Custom Functions"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0010, "ModelID", N_("ModelID"), N_("Model ID"), canonId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(canonModelId)), - TagInfo(0x0012, "PictureInfo", N_("Picture Info"), N_("Picture info"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0013, "ThumbnailImageValidArea", N_("Thumbnail Image Valid Area"), N_("Thumbnail image valid area"), canonId, makerTags, signedShort, -1, printValue), - TagInfo(0x0015, "SerialNumberFormat", N_("Serial Number Format"), N_("Serial number format"), canonId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(canonSerialNumberFormat)), - TagInfo(0x001a, "SuperMacro", N_("Super Macro"), N_("Super macro"), canonId, makerTags, signedShort, -1, EXV_PRINT_TAG(canonSuperMacro)), - TagInfo(0x0026, "AFInfo", N_("AF Info"), N_("AF info"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0083, "OriginalDecisionDataOffset", N_("Original Decision Data Offset"), N_("Original decision data offset"), canonId, makerTags, signedLong, -1, printValue), - TagInfo(0x00a4, "WhiteBalanceTable", N_("White Balance Table"), N_("White balance table"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0095, "LensModel", N_("LensModel"), N_("LensModel"), canonId, makerTags, asciiString, -1, printValue), - TagInfo(0x0096, "InternalSerialNumber", N_("Internal Serial Number"), N_("Internal serial number"), canonId, makerTags, asciiString, -1, printValue), - TagInfo(0x0097, "DustRemovalData", N_("Dust Removal Data"), N_("Dust removal data"), canonId, makerTags, asciiString, -1, printValue), - TagInfo(0x0099, "CustomFunctions", N_("Custom Functions"), N_("Custom functions"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00a0, "ProcessingInfo", N_("Processing Info"), N_("Processing info"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00aa, "MeasuredColor", N_("Measured Color"), N_("Measured color"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00b4, "ColorSpace", N_("ColorSpace"), N_("ColorSpace"), canonId, makerTags, signedShort, -1, EXV_PRINT_TAG(canonColorSpace)), - TagInfo(0x00b5, "0x00b5", "0x00b5", N_("Unknown"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00c0, "0x00c0", "0x00c0", N_("Unknown"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00c1, "0x00c1", "0x00c1", N_("Unknown"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00d0, "VRDOffset", N_("VRD Offset"), N_("VRD offset"), canonId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x00e0, "SensorInfo", N_("Sensor Info"), N_("Sensor info"), canonId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x4001, "ColorData", N_("Color Data"), N_("Color data"), canonId, makerTags, unsignedShort, -1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownCanonMakerNoteTag)", "(UnknownCanonMakerNoteTag)", N_("Unknown CanonMakerNote tag"), canonId, makerTags, asciiString, -1, printValue) - }; - - const TagInfo* CanonMakerNote::tagList() - { - return tagInfo_; - } - - //! Macro, tag 0x0001 - extern const TagDetails canonCsMacro[] = { - { 1, N_("On") }, - { 2, N_("Off") } - }; - - //! Quality, tag 0x0003 - extern const TagDetails canonCsQuality[] = { - { 1, N_("Economy") }, - { 2, N_("Normal") }, - { 3, N_("Fine") }, - { 4, N_("RAW") }, - { 5, N_("Superfine") }, - { 130, N_("Normal Movie") } - }; - - //! FlashMode, tag 0x0004 - extern const TagDetails canonCsFlashMode[] = { - { 0, N_("Off") }, - { 1, N_("Auto") }, - { 2, N_("On") }, - { 3, N_("Red-eye") }, - { 4, N_("Slow sync") }, - { 5, N_("Auto + red-eye") }, - { 6, N_("On + red-eye") }, - { 16, N_("External") }, - { 16, N_("External") } // To silence compiler warning - }; - - //! DriveMode, tag 0x0005 - extern const TagDetails canonCsDriveMode[] = { - { 0, N_("Single / timer") }, - { 1, N_("Continuous") }, - { 2, N_("Movie") }, - { 3, N_("Continuous, speed priority") }, - { 4, N_("Continuous, low") }, - { 5, N_("Continuous, high") } - }; - - //! FocusMode, tag 0x0007 - extern const TagDetails canonCsFocusMode[] = { - { 0, N_("One shot AF") }, - { 1, N_("AI servo AF") }, - { 2, N_("AI focus AF") }, - { 3, N_("Manual focus") }, - { 4, N_("Single") }, - { 5, N_("Continuous") }, - { 6, N_("Manual focus") }, - { 16, N_("Pan focus") }, - { 16, N_("Pan focus") } // To silence compiler warning - }; - - //! ImageSize, tag 0x000a - extern const TagDetails canonCsImageSize[] = { - { 0, N_("Large") }, - { 1, N_("Medium") }, - { 2, N_("Small") }, - { 5, N_("Medium 1") }, - { 6, N_("Medium 2") }, - { 7, N_("Medium 3") } - }; - - //! EasyMode, tag 0x000b - extern const TagDetails canonCsEasyMode[] = { - { 0, N_("Full auto") }, - { 1, N_("Manual") }, - { 2, N_("Landscape") }, - { 3, N_("Fast shutter") }, - { 4, N_("Slow shutter") }, - { 5, N_("Night Scene") }, - { 6, N_("Gray scale") }, - { 7, N_("Sepia") }, - { 8, N_("Portrait") }, - { 9, N_("Sports") }, - { 10, N_("Macro / close-up") }, - { 11, N_("Black & white") }, - { 12, N_("Pan focus") }, - { 13, N_("Vivid") }, - { 14, N_("Neutral") }, - { 15, N_("Flash off") }, - { 16, N_("Long shutter") }, - { 17, N_("Super macro") }, - { 18, N_("Foliage") }, - { 19, N_("Indoor") }, - { 20, N_("Fireworks") }, - { 21, N_("Beach") }, - { 22, N_("Underwater") }, - { 23, N_("Snow") }, - { 24, N_("Kids & pets") }, - { 25, N_("Night SnapShot") }, - { 26, N_("Digital macro") }, - { 27, N_("My Colors") }, - { 28, N_("Still image") } - }; - - //! DigitalZoom, tag 0x000c - extern const TagDetails canonCsDigitalZoom[] = { - { 0, N_("None") }, - { 1, "2x" }, - { 2, "4x" }, - { 3, N_("Other") }, - { 3, N_("Other") } // To silence compiler warning - }; - - //! Contrast, Saturation Sharpness, tags 0x000d, 0x000e, 0x000f - extern const TagDetails canonCsLnh[] = { - { 0xffff, N_("Low") }, - { 0x0000, N_("Normal") }, - { 0x0001, N_("High") } - }; - - //! ISOSpeeds, tag 0x0010 - extern const TagDetails canonCsISOSpeed[] = { - { 0, N_("n/a") }, - { 14, N_("Auto High") }, - { 15, N_("Auto") }, - { 16, "50" }, - { 17, "100" }, - { 18, "200" }, - { 19, "400" }, - { 20, "800" }, - { 16464, "80" }, - { 16484, "100" }, - { 16584, "200" }, - { 16784, "400" }, - { 17184, "800" }, - { 17984, "1600" }, - { 19584, "3200" } - }; - - //! MeteringMode, tag 0x0011 - extern const TagDetails canonCsMeteringMode[] = { - { 0, N_("Default") }, - { 1, N_("Spot") }, - { 2, N_("Average") }, - { 3, N_("Evaluative") }, - { 4, N_("Partial") }, - { 5, N_("Center weighted") } - }; - - //! FocusType, tag 0x0012 - extern const TagDetails canonCsFocusType[] = { - { 0, N_("Manual") }, - { 1, N_("Auto") }, - { 2, N_("Not known") }, - { 3, N_("Macro") }, - { 4, N_("Very close") }, - { 5, N_("Close") }, - { 6, N_("Middle range") }, - { 7, N_("Far range") }, - { 8, N_("Pan focus") }, - { 9, N_("Super macro") }, - { 10, N_("Infinity") } - }; - - //! AFPoint, tag 0x0013 - extern const TagDetails canonCsAfPoint[] = { - { 0x2005, N_("Manual AF point selection") }, - { 0x3000, N_("None (MF)") }, - { 0x3001, N_("Auto-selected") }, - { 0x3002, N_("Right") }, - { 0x3003, N_("Center") }, - { 0x3004, N_("Left") }, - { 0x4001, N_("Auto AF point selection") } - }; - - //! ExposureProgram, tag 0x0014 - extern const TagDetails canonCsExposureProgram[] = { - { 0, N_("Easy shooting (Auto)") }, - { 1, N_("Program (P)") }, - { 2, N_("Shutter priority (Tv)") }, - { 3, N_("Aperture priority (Av)") }, - { 4, N_("Manual (M)") }, - { 5, N_("A-DEP") }, - { 6, N_("M-DEP") } - }; - - //! LensType, tag 0x0016 - extern const TagDetails canonCsLensType[] = { - { 1, "Canon EF 50mm f/1.8" }, - { 2, "Canon EF 28mm f/2.8" }, - { 3, "Canon EF 135mm f/2.8 Soft" }, - { 4, "Canon EF 35-105mm f/3.5-4.5 or Sigma Lens" }, // 0 - { 4, "Sigma UC Zoom 35-135mm f/4-5.6" }, // 1 - { 5, "Canon EF 35-70mm f/3.5-4.5" }, - { 6, "Canon EF 28-70mm f/3.5-4.5 or Sigma or Tokina Lens" }, // 0 - { 6, "Sigma 18-50mm f/3.5-5.6 DC" }, // 1 - { 6, "Sigma 18-125mm f/3.5-5.6 DC IF ASP" }, // 2 - { 6, "Tokina AF193-2 19-35mm f/3.5-4.5" }, // 3 - { 6, "Sigma 28-80mm f/3.5-5.6 II Macro" }, // 4 - { 7, "Canon EF 100-300mm f/5.6L" }, - { 8, "Canon EF 100-300mm f/5.6" }, // 0 - { 8, "Sigma 70-300mm f/4-5.6 DG Macro" }, // 1 - { 8, "Tokina AT-X242AF 24-200mm f/3.5-5.6" }, // 2 - { 9, "Canon EF 70-210mm f/4" }, // 0 - { 9, "Sigma 55-200mm f/4-5.6 DC" }, // 1 - { 10, "Canon EF 50mm f/2.5 Macro" }, // 0 - { 10, "Sigma 50mm f/2.8 EX" }, // 1 - { 10, "Sigma 28mm f/1.8" }, // 2 - { 10, "Sigma 105mm f/2.8 Macro EX" }, // 3 - { 10, "Sigma 70mm f/2.8 EX DG Macro EF" }, // 4 - { 11, "Canon EF 35mm f/2" }, - { 13, "Canon EF 15mm f/2.8 Fisheye" }, - { 14, "Canon EF 50-200mm f/3.5-4.5L" }, - { 15, "Canon EF 50-200mm f/3.5-4.5" }, - { 16, "Canon EF 35-135mm f/3.5-4.5" }, - { 17, "Canon EF 35-70mm f/3.5-4.5A" }, - { 18, "Canon EF 28-70mm f/3.5-4.5" }, - { 20, "Canon EF 100-200mm f/4.5A" }, - { 21, "Canon EF 80-200mm f/2.8L" }, - { 22, "Canon EF 20-35mm f/2.8L" }, // 0 - { 22, "Tokina AT-X280AF PRO 28-80mm f/2.8 Aspherical" }, // 1 - { 23, "Canon EF 35-105mm f/3.5-4.5" }, - { 24, "Canon EF 35-80mm f/4-5.6 Power Zoom" }, - { 25, "Canon EF 35-80mm f/4-5.6 Power Zoom" }, - { 26, "Canon EF 100mm f/2.8 Macro or Cosina or Tamron Lens" }, // 0 - { 26, "Cosina 100mm f/3.5 Macro AF" }, // 1 - { 26, "Tamron SP AF 90mm f/2.8 Di Macro" }, // 2 - { 26, "Tamron SP AF 180mm f/3.5 Di Macro" }, // 3 - { 26, "Carl Zeiss Planar T* 50mm f/1.4" }, // 4 - { 27, "Canon EF 35-80mm f/4-5.6" }, - { 28, "Canon EF 80-200mm f/4.5-5.6" }, // 0 - { 28, "Tamron SP AF 28-105mm f/2.8 LD Aspherical IF" }, // 1 - { 28, "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical [IF] Macro" }, // 2 - { 28, "Tamron AF 70-300mm f/4.5-5.6 Di LD 1:2 Macro Zoom" }, // 3 - { 28, "Tamron AF Aspherical 28-200mm f/3.8-5.6" }, // 4 - { 29, "Canon EF 50mm f/1.8 MkII" }, - { 30, "Canon EF 35-105mm f/4.5-5.6" }, - { 31, "Canon EF 75-300mm f/4-5.6" }, // 0 - { 31, "Tamron SP AF 300mm f/2.8 LD IF" }, // 1 - { 32, "Canon EF 24mm f/2.8" }, // 0 - { 32, "Sigma 15mm f/2.8 EX Fisheye" }, // 1 - { 33, "Voigtlander or Zeiss Lens" }, // 0 - { 33, "Voigtlander Ultron 40mm f/2 SLII Aspherical" }, // 1 - { 33, "Zeiss Distagon 35mm T* f/2 ZE" }, // 2 - { 35, "Canon EF 35-80mm f/4-5.6" }, - { 36, "Canon EF 38-76mm f/4.5-5.6" }, - { 37, "Canon EF 35-80mm f/4-5.6" }, // 0 - { 37, "Tamron 70-200mm f/2.8 Di LD IF Macro" }, // 1 - { 37, "Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro Model A20" }, // 2 - { 37, "Tamron SP AF 17-50mm f/2.8 XR Di II VC LD Aspherical [IF] " }, // 3 - { 37, "Tamron AF 18-270mm f/3.5-6.3 Di II VC LD Aspherical [IF] Macro" }, // 4 - { 38, "Canon EF 80-200mm f/4.5-5.6" }, - { 39, "Canon EF 75-300mm f/4-5.6" }, - { 40, "Canon EF 28-80mm f/3.5-5.6" }, - { 41, "Canon EF 28-90mm f/4-5.6" }, - { 42, "Canon EF 28-200mm f/3.5-5.6" }, // 0 - { 42, "Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro Model A20" }, // 1 - { 43, "Canon EF 28-105mm f/4-5.6" }, - { 44, "Canon EF 90-300mm f/4.5-5.6" }, - { 45, "Canon EF-S 18-55mm f/3.5-5.6" }, - { 46, "Canon EF 28-90mm f/4-5.6" }, - { 48, "Canon EF-S 18-55mm f/3.5-5.6 IS" }, - { 49, "Canon EF-S 55-250mm f/4-5.6 IS" }, - { 50, "Canon EF-S 18-200mm f/3.5-5.6 IS" }, - { 51, "Canon EF-S 18-135mm f/3.5-5.6 IS" }, - { 52, "Canon EF-S 18-55mm f/3.5-5.6 IS II" }, - { 53, "Canon EF-S 18-55mm f/3.5-5.6 III" }, - { 94, "Canon TS-E 17mm f/4L" }, - { 95, "Canon TS-E 24.0mm f/3.5 L II" }, - { 124, "Canon MP-E 65mm f/2.8 1-5x Macro Photo" }, - { 125, "Canon TS-E 24mm f/3.5L" }, - { 126, "Canon TS-E 45mm f/2.8" }, - { 127, "Canon TS-E 90mm f/2.8" }, - { 129, "Canon EF 300mm f/2.8L" }, - { 130, "Canon EF 50mm f/1.0L" }, - { 131, "Canon EF 28-80mm f/2.8-4L" }, // 0 - { 131, "Sigma 8mm f/3.5 EX DG Circular Fisheye" }, // 1 - { 131, "Sigma 17-35mm f/2.8-4 EX DG Aspherical HSM" }, // 2 - { 131, "Sigma 17-70mm f/2.8-4.5 DC Macro" }, // 3 - { 131, "Sigma APO 50-150mm f/2.8 EX DC HSM" }, // 4 - { 131, "Sigma APO 120-300mm f/2.8 EX DG HSM" }, // 5 - { 131, "Sigma 4.5mm F2.8 EX DC HSM Circular Fisheye" }, // 6 - { 132, "Canon EF 1200mm f/5.6L" }, - { 134, "Canon EF 600mm f/4L IS" }, - { 135, "Canon EF 200mm f/1.8L" }, - { 136, "Canon EF 300mm f/2.8L" }, - { 137, "Canon EF 85mm f/1.2L" }, // 0 - { 137, "Sigma 18-50mm f/2.8-4.5 DC OS HSM" }, // 1 - { 137, "Sigma 50-200mm f/4-5.6 DC OS HSM" }, // 2 - { 137, "Sigma 18-250mm f/3.5-6.3 DC OS HSM" }, // 3 - { 137, "Sigma 24-70mm f/2.8 IF EX DG HSM" }, // 4 - { 137, "Sigma 18-125mm f/3.8-5.6 DC OS HSM" }, // 5 - { 137, "Sigma 17-70mm f/2.8-4 DC Macro OS HSM" }, // 6 - { 137, "Sigma 17-50mm f/2.8 OS HSM" }, // 7 - { 137, "Sigma 18-200mm f/3.5-6.3 II DC OS HSM" }, // 8 - { 137, "Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD" }, // 9 - { 138, "Canon EF 28-80mm f/2.8-4L" }, - { 139, "Canon EF 400mm f/2.8L" }, - { 140, "Canon EF 500mm f/4.5L" }, - { 141, "Canon EF 500mm f/4.5L" }, - { 142, "Canon EF 300mm f/2.8L IS" }, - { 143, "Canon EF 500mm f/4L IS" }, - { 144, "Canon EF 35-135mm f/4-5.6 USM" }, - { 145, "Canon EF 100-300mm f/4.5-5.6 USM" }, - { 146, "Canon EF 70-210mm f/3.5-4.5 USM" }, - { 147, "Canon EF 35-135mm f/4-5.6 USM" }, - { 148, "Canon EF 28-80mm f/3.5-5.6 USM" }, - { 149, "Canon EF 100mm f/2 USM" }, - { 150, "Canon EF 14mm f/2.8L" }, // 0 - { 150, "Sigma 20mm EX f/1.8" }, // 1 - { 150, "Sigma 30mm f/1.4 DC HSM" }, // 2 - { 150, "Sigma 24mm f/1.8 DG Macro EX" }, // 3 - { 151, "Canon EF 200mm f/2.8L" }, - { 152, "Canon EF 300mm f/4L IS" }, // 0 - { 152, "Sigma 12-24mm f/4.5-5.6 EX DG ASPHERICAL HSM" }, // 1 - { 152, "Sigma 14mm f/2.8 EX Aspherical HSM" }, // 2 - { 152, "Sigma 10-20mm f/4-5.6" }, // 3 - { 152, "Sigma 100-300mm f/4" }, // 4 - { 153, "Canon EF 35-350mm f/3.5-5.6L" }, // 0 - { 153, "Sigma 50-500mm f/4-6.3 APO HSM EX" }, // 1 - { 153, "Tamron AF 28-300mm f/3.5-6.3 XR LD Aspherical [IF] Macro" }, // 2 - { 153, "Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical [IF] Macro Model A14" }, // 3 - { 153, "Tamron 18-250mm f/3.5-6.3 Di II LD Aspherical [IF] Macro" }, // 4 - { 154, "Canon EF 20mm f/2.8 USM" }, - { 155, "Canon EF 85mm f/1.8 USM" }, - { 156, "Canon EF 28-105mm f/3.5-4.5 USM" }, // 0 - { 156, "Tamron SP AF 70-300mm F4-5.6 Di VC USD" }, // 1 - { 160, "Canon EF 20-35mm f/3.5-4.5 USM" }, // 0 - { 160, "Tamron AF 19-35mm f/3.5-4.5" }, // 1 - { 160, "Tokina AT-X 124 AF 12-24mm f/4 DX" }, // 2 - { 160, "Tokina AT-X 107 AF DX Fish-eye 10-17mm f/3.5-4.5" }, // 3 - { 160, "Tokina AT-X 116 PRO DX AF 11-16mm f/2.8" }, // 4 - { 161, "Canon EF 28-70mm f/2.8L" }, // 0 - { 161, "Sigma 24-70mm EX f/2.8" }, // 1 - { 161, "Sigma 28-70mm f/2.8 EX" }, // 2 - { 161, "Tamron AF 17-50mm f/2.8 Di-II LD Aspherical" }, // 3 - { 161, "Tamron 90mm f/2.8" }, // 4 - { 162, "Canon EF 200mm f/2.8L" }, - { 163, "Canon EF 300mm f/4L" }, - { 164, "Canon EF 400mm f/5.6L" }, - { 165, "Canon EF 70-200mm f/2.8 L" }, - { 166, "Canon EF 70-200mm f/2.8 L + 1.4x" }, - { 167, "Canon EF 70-200mm f/2.8 L + 2x" }, - { 168, "Canon EF 28mm f/1.8 USM" }, - { 169, "Canon EF 17-35mm f/2.8L" }, // 0 - { 169, "Sigma 18-200mm f/3.5-6.3 DC OS" }, // 1 - { 169, "Sigma 15-30mm f/3.5-4.5 EX DG Aspherical" }, // 2 - { 169, "Sigma 18-50mm f/2.8 Macro" }, // 3 - { 169, "Sigma 50mm f/1.4 EX DG HSM" }, // 4 - { 169, "Sigma 85mm f/1.4 EX DG HSM" }, // 5 - { 169, "Sigma 30mm f/1.4 EX DC HSM" }, // 6 - { 170, "Canon EF 200mm f/2.8L II" }, - { 171, "Canon EF 300mm f/4L" }, - { 172, "Canon EF 400mm f/5.6L" }, - { 173, "Canon EF 180mm Macro f/3.5L or Sigma Lens" }, // 0 - { 173, "Sigma 180mm EX HSM Macro f/3.5" }, // 1 - { 173, "Sigma APO Macro 150mm f/3.5 EX DG IF HSM" }, // 2 - { 174, "Canon EF 135mm f/2L" }, // 0 - { 174, "Sigma 70-200mm f/2.8 EX DG APO OS HSM" }, // 1 - { 175, "Canon EF 400mm f/2.8L" }, - { 176, "Canon EF 24-85mm f/3.5-4.5 USM" }, - { 177, "Canon EF 300mm f/4L IS" }, - { 178, "Canon EF 28-135mm f/3.5-5.6 IS" }, - { 179, "Canon EF 24mm f/1.4L" }, - { 180, "Canon EF 35mm f/1.4L" }, - { 181, "Canon EF 100-400mm f/4.5-5.6L IS + 1.4x" }, - { 182, "Canon EF 100-400mm f/4.5-5.6L IS + 2x" }, - { 183, "Canon EF 100-400mm f/4.5-5.6L IS" }, - { 184, "Canon EF 400mm f/2.8L + 2x" }, - { 185, "Canon EF 600mm f/4L IS" }, - { 186, "Canon EF 70-200mm f/4L" }, - { 187, "Canon EF 70-200mm f/4L + 1.4x" }, - { 188, "Canon EF 70-200mm f/4L + 2x" }, - { 189, "Canon EF 70-200mm f/4L + 2.8x" }, - { 190, "Canon EF 100mm f/2.8 Macro" }, - { 191, "Canon EF 400mm f/4 DO IS" }, - { 193, "Canon EF 35-80mm f/4-5.6 USM" }, - { 194, "Canon EF 80-200mm f/4.5-5.6 USM" }, - { 195, "Canon EF 35-105mm f/4.5-5.6 USM" }, - { 196, "Canon EF 75-300mm f/4-5.6 USM" }, - { 197, "Canon EF 75-300mm f/4-5.6 IS USM" }, - { 198, "Canon EF 50mm f/1.4 USM" }, - { 199, "Canon EF 28-80mm f/3.5-5.6 USM" }, - { 200, "Canon EF 75-300mm f/4-5.6 USM" }, - { 201, "Canon EF 28-80mm f/3.5-5.6 USM" }, - { 202, "Canon EF 28-80mm f/3.5-5.6 USM IV" }, - { 208, "Canon EF 22-55mm f/4-5.6 USM" }, - { 209, "Canon EF 55-200mm f/4.5-5.6" }, - { 210, "Canon EF 28-90mm f/4-5.6 USM" }, - { 211, "Canon EF 28-200mm f/3.5-5.6 USM" }, - { 212, "Canon EF 28-105mm f/4-5.6 USM" }, - { 213, "Canon EF 90-300mm f/4.5-5.6 USM" }, - { 214, "Canon EF-S 18-55mm f/3.5-5.6 USM" }, - { 215, "Canon EF 55-200mm f/4.5-5.6 II USM" }, - { 224, "Canon EF 70-200mm f/2.8L IS" }, - { 225, "Canon EF 70-200mm f/2.8L IS + 1.4x" }, - { 226, "Canon EF 70-200mm f/2.8L IS + 2x" }, - { 227, "Canon EF 70-200mm f/2.8L IS + 2.8x" }, - { 228, "Canon EF 28-105mm f/3.5-4.5 USM" }, - { 229, "Canon EF 16-35mm f/2.8L" }, - { 230, "Canon EF 24-70mm f/2.8L" }, - { 231, "Canon EF 17-40mm f/4L" }, - { 232, "Canon EF 70-300mm f/4.5-5.6 DO IS USM" }, - { 233, "Canon EF 28-300mm f/3.5-5.6L IS" }, - { 234, "Canon EF-S 17-85mm f4-5.6 IS USM" }, - { 235, "Canon EF-S 10-22mm f/3.5-4.5 USM" }, - { 236, "Canon EF-S 60mm f/2.8 Macro USM" }, - { 237, "Canon EF 24-105mm f/4L IS" }, - { 238, "Canon EF 70-300mm f/4-5.6 IS USM" }, - { 239, "Canon EF 85mm f/1.2L II" }, - { 240, "Canon EF-S 17-55mm f/2.8 IS USM" }, - { 241, "Canon EF 50mm f/1.2L" }, - { 242, "Canon EF 70-200mm f/4L IS" }, - { 243, "Canon EF 70-200mm f/4L IS + 1.4x" }, - { 244, "Canon EF 70-200mm f/4L IS + 2x" }, - { 245, "Canon EF 70-200mm f/4L IS + 2.8x" }, - { 246, "Canon EF 16-35mm f/2.8L II" }, - { 247, "Canon EF 14mm f/2.8L II USM" }, - { 248, "Canon EF 200mm f/2L IS" }, - { 249, "Canon EF 800mm f/5.6L IS" }, - { 250, "Canon EF 24 f/1.4L II" }, - { 251, "Canon EF 70-200mm f/2.8L IS II USM" }, - { 254, "Canon EF 100mm f/2.8L Macro IS USM" }, - { 488, "Canon EF-S 15-85mm f/3.5-5.6 IS USM" }, - { 489, "Canon EF 70-300mm f/4-5.6L IS USM" }, - { 490, "Canon EF 8-15mm f/4L USM" }, - { 491, "Canon EF 300mm f/2.8L IS II USM" } - }; - - //! A lens id and a pretty-print function for special treatment of the id. - struct LensIdFct { - long id_; //!< Lens id - PrintFct fct_; //!< Pretty-print function - //! Comparison operator for find template - bool operator==(long id) const { return id_ == id; } - }; - - //! List of lens ids which require special treatment with the medicine - const LensIdFct lensIdFct[] = { - { 4, 0 }, // no known medicine - { 6, printCsLensByFocalLength }, - { 8, printCsLensByFocalLength }, - { 9, printCsLensByFocalLength }, - { 10, printCsLensByFocalLength }, // works partly - { 22, printCsLensByFocalLength }, - { 26, printCsLensByFocalLength }, // works partly - { 28, printCsLensByFocalLength }, - { 31, printCsLensByFocalLength }, - { 32, printCsLensByFocalLength }, - { 33, printCsLensByFocalLength }, // not tested - { 37, printCsLensByFocalLength }, - { 42, printCsLensByFocalLength }, - { 131, printCsLensByFocalLength }, - { 137, printCsLensByFocalLength }, // not tested - { 150, printCsLensByFocalLength }, - { 152, printCsLensByFocalLength }, - { 153, printCsLensByFocalLength }, - { 156, printCsLensByFocalLength }, - { 160, printCsLensByFocalLength }, - { 161, printCsLensByFocalLength }, - { 169, printCsLensByFocalLength }, - { 173, printCsLensByFocalLength }, // works partly - { 174, printCsLensByFocalLength } // not tested - }; - - //! FlashActivity, tag 0x001c - extern const TagDetails canonCsFlashActivity[] = { - { 0, N_("Did not fire") }, - { 1, N_("Fired") } - }; - - //! FlashDetails, tag 0x001d - extern const TagDetailsBitmask canonCsFlashDetails[] = { - { 0x4000, N_("External flash") }, - { 0x2000, N_("Internal flash") }, - { 0x0001, N_("Manual") }, - { 0x0002, N_("TTL") }, - { 0x0004, N_("A-TTL") }, - { 0x0008, N_("E-TTL") }, - { 0x0010, N_("FP sync enabled") }, - { 0x0080, N_("2nd-curtain sync used") }, - { 0x0800, N_("FP sync used") } - }; - - //! FocusContinuous, tag 0x0020 - extern const TagDetails canonCsFocusContinuous[] = { - { 0, N_("Single") }, - { 1, N_("Continuous") } - }; - - //! AESetting, tag 0x0021 - extern const TagDetails canonCsAESetting[] = { - { 0, N_("Normal AE") }, - { 1, N_("Exposure compensation") }, - { 2, N_("AE lock") }, - { 3, N_("AE lock + exposure compensation") }, - { 4, N_("No AE") } - }; - - //! ImageStabilization, tag 0x0022 - extern const TagDetails canonCsImageStabilization[] = { - { 0, N_("Off") }, - { 1, N_("On") }, - { 2, N_("On, shot only") } - }; - - //! SpotMeteringMode, tag 0x0027 - extern const TagDetails canonCsSpotMeteringMode[] = { - { 0, N_("Center") }, - { 1, N_("AF Point") } - }; - - //! PhotoEffect, tag 0x0028 - extern const TagDetails canonCsPhotoEffect[] = { - { 0, N_("Off") }, - { 1, N_("Vivid") }, - { 2, N_("Neutral") }, - { 3, N_("Smooth") }, - { 4, N_("Sepia") }, - { 5, N_("B&W") }, - { 6, N_("Custom") }, - { 100, N_("My color data") }, - { 100, N_("My color data") } // To silence compiler warning - }; - - //! ManualFlashOutput, tag 0x0029 - extern const TagDetails canonCsManualFlashOutput[] = { - { 0x0000, N_("n/a") }, - { 0x0500, N_("Full") }, - { 0x0502, N_("Medium") }, - { 0x0504, N_("Low") }, - { 0x7fff, N_("n/a") } - }; - - //! SRAWQuality, tag 0x002e - extern const TagDetails canonCsSRAWQuality[] = { - { 0, N_("n/a") }, - { 1, N_("sRAW1 (mRAW)") }, - { 2, N_("sRAW2 (sRAW)") } - }; - - // Canon Camera Settings Tag Info - const TagInfo CanonMakerNote::tagInfoCs_[] = { - TagInfo(0x0001, "Macro", N_("Macro"), N_("Macro mode"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsMacro)), - TagInfo(0x0002, "Selftimer", N_("Selftimer"), N_("Self timer"), canonCsId, makerTags, signedShort, 1, printCs0x0002), - TagInfo(0x0003, "Quality", N_("Quality"), N_("Quality"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsQuality)), - TagInfo(0x0004, "FlashMode", N_("Flash Mode"), N_("Flash mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFlashMode)), - TagInfo(0x0005, "DriveMode", N_("Drive Mode"), N_("Drive mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsDriveMode)), - TagInfo(0x0006, "0x0006", "0x0006", N_("Unknown"), canonCsId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0007, "FocusMode", N_("Focus Mode"), N_("Focus mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFocusMode)), - TagInfo(0x0008, "0x0008", "0x0008", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue), - TagInfo(0x0009, "0x0009", "0x0009", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue), - TagInfo(0x000a, "ImageSize", N_("Image Size"), N_("Image size"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsImageSize)), - TagInfo(0x000b, "EasyMode", N_("Easy Mode"), N_("Easy shooting mode"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsEasyMode)), - TagInfo(0x000c, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsDigitalZoom)), - TagInfo(0x000d, "Contrast", N_("Contrast"), N_("Contrast setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsLnh)), - TagInfo(0x000e, "Saturation", N_("Saturation"), N_("Saturation setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsLnh)), - TagInfo(0x000f, "Sharpness", N_("Sharpness"), N_("Sharpness setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsLnh)), - TagInfo(0x0010, "ISOSpeed", N_("ISO Speed Mode"), N_("ISO speed setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsISOSpeed)), - TagInfo(0x0011, "MeteringMode", N_("Metering Mode"), N_("Metering mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsMeteringMode)), - TagInfo(0x0012, "FocusType", N_("Focus Type"), N_("Focus type setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFocusType)), - TagInfo(0x0013, "AFPoint", N_("AF Point"), N_("AF point selected"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsAfPoint)), - TagInfo(0x0014, "ExposureProgram", N_("Exposure Program"), N_("Exposure mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsExposureProgram)), - TagInfo(0x0015, "0x0015", "0x0015", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue), - TagInfo(0x0016, "LensType", N_("Lens Type"), N_("Lens type"), canonCsId, makerTags, signedShort, 1, printCsLensType), - TagInfo(0x0017, "Lens", N_("Lens"), N_("'long' and 'short' focal length of lens (in 'focal units') and 'focal units' per mm"), canonCsId, makerTags, unsignedShort, 3, printCsLens), - TagInfo(0x0018, "ShortFocal", N_("Short Focal"), N_("Short focal"), canonCsId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0019, "FocalUnits", N_("Focal Units"), N_("Focal units"), canonCsId, makerTags, signedShort, 1, printValue), - TagInfo(0x001a, "MaxAperture", N_("Max Aperture"), N_("Max aperture"), canonCsId, makerTags, signedShort, 1, printSi0x0015), - TagInfo(0x001b, "MinAperture", N_("Min Aperture"), N_("Min aperture"), canonCsId, makerTags, signedShort, 1, printSi0x0015), - TagInfo(0x001c, "FlashActivity", N_("Flash Activity"), N_("Flash activity"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFlashActivity)), - TagInfo(0x001d, "FlashDetails", N_("Flash Details"), N_("Flash details"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG_BITMASK(canonCsFlashDetails)), - TagInfo(0x001e, "0x001e", "0x001e", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue), - TagInfo(0x001f, "0x001f", "0x001f", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue), - TagInfo(0x0020, "FocusContinuous", N_("Focus Continuous"), N_("Focus continuous setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFocusContinuous)), - TagInfo(0x0021, "AESetting", N_("AESetting"), N_("AE setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsAESetting)), - TagInfo(0x0022, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsImageStabilization)), - TagInfo(0x0023, "DisplayAperture", N_("Display Aperture"), N_("Display aperture"), canonCsId, makerTags, signedShort, 1, printValue), - TagInfo(0x0024, "ZoomSourceWidth", N_("Zoom Source Width"), N_("Zoom source width"), canonCsId, makerTags, signedShort, 1, printValue), - TagInfo(0x0025, "ZoomTargetWidth", N_("Zoom Target Width"), N_("Zoom target width"), canonCsId, makerTags, signedShort, 1, printValue), - TagInfo(0x0026, "0x0026", "0x0026", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue), - TagInfo(0x0027, "SpotMeteringMode", N_("Spot Metering Mode"), N_("Spot metering mode"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsSpotMeteringMode)), - TagInfo(0x0028, "PhotoEffect", N_("Photo Effect"), N_("Photo effect"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsPhotoEffect)), - TagInfo(0x0029, "ManualFlashOutput", N_("Manual Flash Output"), N_("Manual flash output"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsSRAWQuality)), - TagInfo(0x002a, "ColorTone", N_("Color Tone"), N_("Color tone"), canonCsId, makerTags, signedShort, 1, printValue), - TagInfo(0x002e, "SRAWQuality", N_("SRAW Quality Tone"), N_("SRAW quality"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsSRAWQuality)), - // End of list marker - TagInfo(0xffff, "(UnknownCanonCsTag)", "(UnknownCanonCsTag)", N_("Unknown Canon Camera Settings 1 tag"), canonCsId, makerTags, unsignedShort, 1, printValue) - }; - - const TagInfo* CanonMakerNote::tagListCs() - { - return tagInfoCs_; - } - - //! WhiteBalance, multiple tags - extern const TagDetails canonSiWhiteBalance[] = { - { 0, N_("Auto") }, - { 1, N_("Sunny") }, - { 2, N_("Cloudy") }, - { 3, N_("Tungsten") }, - { 4, N_("Fluorescent") }, - { 5, N_("Flash") }, - { 6, N_("Custom") }, - { 7, N_("Black & White") }, - { 8, N_("Shade") }, - { 9, N_("Manual Temperature (Kelvin)") }, - { 10, N_("PC Set 1") }, - { 11, N_("PC Set 2") }, - { 12, N_("PC Set 3") }, - { 14, N_("Daylight Fluorescent") }, - { 15, N_("Custom 1") }, - { 16, N_("Custom 2") }, - { 17, N_("Underwater") }, - { 18, N_("Custom 3") }, - { 19, N_("Custom 3") }, - { 20, N_("PC Set 4") }, - { 21, N_("PC Set 5") } - }; - - //! AFPointUsed, tag 0x000e - extern const TagDetailsBitmask canonSiAFPointUsed[] = { - { 0x0004, N_("left") }, - { 0x0002, N_("center") }, - { 0x0001, N_("right") } - }; - - //! FlashBias, tag 0x000f - extern const TagDetails canonSiFlashBias[] = { - { 0xffc0, "-2 EV" }, - { 0xffcc, "-1.67 EV" }, - { 0xffd0, "-1.50 EV" }, - { 0xffd4, "-1.33 EV" }, - { 0xffe0, "-1 EV" }, - { 0xffec, "-0.67 EV" }, - { 0xfff0, "-0.50 EV" }, - { 0xfff4, "-0.33 EV" }, - { 0x0000, "0 EV" }, - { 0x000c, "0.33 EV" }, - { 0x0010, "0.50 EV" }, - { 0x0014, "0.67 EV" }, - { 0x0020, "1 EV" }, - { 0x002c, "1.33 EV" }, - { 0x0030, "1.50 EV" }, - { 0x0034, "1.67 EV" }, - { 0x0040, "2 EV" } - }; - - // Canon Shot Info Tag - const TagInfo CanonMakerNote::tagInfoSi_[] = { - TagInfo(0x0001, "0x0001", "0x0001", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0002, "ISOSpeed", N_("ISO Speed Used"), N_("ISO speed used"), canonSiId, makerTags, unsignedShort, 1, printSi0x0002), - TagInfo(0x0003, "MeasuredEV", N_("Measured EV"), N_("Measured EV"), canonSiId, makerTags, unsignedShort, 1, printSi0x0003), - TagInfo(0x0004, "TargetAperture", N_("Target Aperture"), N_("Target Aperture"), canonSiId, makerTags, unsignedShort, 1, printSi0x0015), - TagInfo(0x0005, "TargetShutterSpeed", N_("Target Shutter Speed"), N_("Target shutter speed"), canonSiId, makerTags, unsignedShort, 1, printSi0x0016), - TagInfo(0x0006, "0x0006", "0x0006", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0007, "WhiteBalance", N_("White Balance"), N_("White balance setting"), canonSiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(canonSiWhiteBalance)), - TagInfo(0x0008, "0x0008", "0x0008", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0009, "Sequence", N_("Sequence"), N_("Sequence number (if in a continuous burst)"), canonSiId, makerTags, unsignedShort, 1, printSi0x0009), - TagInfo(0x000a, "0x000a", "0x000a", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x000b, "0x000b", "0x000b", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x000c, "0x000c", "0x000c", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x000d, "0x000d", "0x000d", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x000e, "AFPointUsed", N_("AF Point Used"), N_("AF point used"), canonSiId, makerTags, unsignedShort, 1, printSi0x000e), - TagInfo(0x000f, "FlashBias", N_("Flash Bias"), N_("Flash bias"), canonSiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(canonSiFlashBias)), - TagInfo(0x0010, "0x0010", "0x0010", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0011, "0x0011", "0x0011", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0012, "0x0012", "0x0012", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0013, "SubjectDistance", N_("Subject Distance"), N_("Subject distance (units are not clear)"), canonSiId, makerTags, unsignedShort, 1, printSi0x0013), - TagInfo(0x0014, "0x0014", "0x0014", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0015, "ApertureValue", N_("Aperture Value"), N_("Aperture"), canonSiId, makerTags, unsignedShort, 1, printSi0x0015), - TagInfo(0x0016, "ShutterSpeedValue", N_("Shutter Speed Value"), N_("Shutter speed"), canonSiId, makerTags, unsignedShort, 1, printSi0x0016), - TagInfo(0x0017, "MeasuredEV2", N_("Measured EV 2"), N_("Measured EV 2"), canonSiId, makerTags, unsignedShort, 1, printSi0x0017), - TagInfo(0x0018, "0x0018", "0x0018", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0019, "0x0019", "0x0019", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x001a, "0x001a", "0x001a", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownCanonSiTag)", "(UnknownCanonSiTag)", N_("Unknown Canon Camera Settings 2 tag"), canonSiId, makerTags, unsignedShort, 1, printValue) - }; - - const TagInfo* CanonMakerNote::tagListSi() - { - return tagInfoSi_; - } - - //! PanoramaDirection, tag 0x0005 - extern const TagDetails canonPaDirection[] = { - { 0, N_("Left to right") }, - { 1, N_("Right to left") }, - { 2, N_("Bottom to top") }, - { 3, N_("Top to bottom") }, - { 4, N_("2x2 matrix (Clockwise)") } - }; - - // Canon Panorama Info - const TagInfo CanonMakerNote::tagInfoPa_[] = { - TagInfo(0x0002, "PanoramaFrame", N_("Panorama Frame"), N_("Panorama frame number"), canonPaId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0005, "PanoramaDirection", N_("Panorama Direction"), N_("Panorama direction"), canonPaId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(canonPaDirection)), - // End of list marker - TagInfo(0xffff, "(UnknownCanonCs2Tag)", "(UnknownCanonCs2Tag)", N_("Unknown Canon Panorama tag"), canonPaId, makerTags, unsignedShort, 1, printValue) - }; - - const TagInfo* CanonMakerNote::tagListPa() - { - return tagInfoPa_; - } - - // Canon Custom Function Tag Info - const TagInfo CanonMakerNote::tagInfoCf_[] = { - TagInfo(0x0001, "NoiseReduction", N_("Noise Reduction"), N_("Long exposure noise reduction"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0002, "ShutterAeLock", N_("Shutter Ae Lock"), N_("Shutter/AE lock buttons"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0003, "MirrorLockup", N_("Mirror Lockup"), N_("Mirror lockup"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0004, "ExposureLevelIncrements", N_("Exposure Level Increments"), N_("Tv/Av and exposure level"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0005, "AFAssist", N_("AF Assist"), N_("AF assist light"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0006, "FlashSyncSpeedAv", N_("Flash Sync Speed Av"), N_("Shutter speed in Av mode"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0007, "AEBSequence", N_("AEB Sequence"), N_("AEB sequence/auto cancellation"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0008, "ShutterCurtainSync", N_("Shutter Curtain Sync"), N_("Shutter curtain sync"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0009, "LensAFStopButton", N_("Lens AF Stop Button"), N_("Lens AF stop button Fn. Switch"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x000a, "FillFlashAutoReduction", N_("Fill Flash Auto Reduction"), N_("Auto reduction of fill flash"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x000b, "MenuButtonReturn", N_("Menu Button Return"), N_("Menu button return position"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x000c, "SetButtonFunction", N_("Set Button Function"), N_("SET button func. when shooting"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x000d, "SensorCleaning", N_("Sensor Cleaning"), N_("Sensor cleaning"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x000e, "SuperimposedDisplay", N_("Superimposed Display"), N_("Superimposed display"), canonCfId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x000f, "ShutterReleaseNoCFCard", N_("Shutter Release No CF Card"), N_("Shutter Release W/O CF Card"), canonCfId, makerTags, unsignedShort, 1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownCanonCfTag)", "(UnknownCanonCfTag)", N_("Unknown Canon Custom Function tag"), canonCfId, makerTags, unsignedShort, 1, printValue) - }; - - const TagInfo* CanonMakerNote::tagListCf() - { - return tagInfoCf_; - } - - //! AFPointsUsed, tag 0x0016 - extern const TagDetailsBitmask canonPiAFPointsUsed[] = { - { 0x01, N_("right") }, - { 0x02, N_("mid-right") }, - { 0x04, N_("bottom") }, - { 0x08, N_("center") }, - { 0x10, N_("top") }, - { 0x20, N_("mid-left") }, - { 0x40, N_("left") } - }; - - //! AFPointsUsed20D, tag 0x001a - extern const TagDetailsBitmask canonPiAFPointsUsed20D[] = { - { 0x001, N_("top") }, - { 0x002, N_("upper-left") }, - { 0x004, N_("upper-right") }, - { 0x008, N_("left") }, - { 0x010, N_("center") }, - { 0x020, N_("right") }, - { 0x040, N_("lower-left") }, - { 0x080, N_("lower-right") }, - { 0x100, N_("bottom") } - }; - - // Canon Picture Info Tag - const TagInfo CanonMakerNote::tagInfoPi_[] = { - TagInfo(0x0002, "ImageWidth", N_("Image Width"), N_("Image width"), canonPiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0003, "ImageHeight", N_("Image Height"), N_("Image height"), canonPiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0004, "ImageWidthAsShot", N_("Image Width As Shot"), N_("Image width (as shot)"), canonPiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0005, "ImageHeightAsShot", N_("Image Height As Shot"), N_("Image height (as shot)"), canonPiId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0016, "AFPointsUsed", N_("AF Points Used"), N_("AF points used"), canonPiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG_BITMASK(canonPiAFPointsUsed)), - TagInfo(0x001a, "AFPointsUsed20D", N_("AF Points Used 20D"), N_("AF points used (20D)"), canonPiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG_BITMASK(canonPiAFPointsUsed20D)), - // End of list marker - TagInfo(0xffff, "(UnknownCanonPiTag)", "(UnknownCanonPiTag)", N_("Unknown Canon Picture Info tag"), canonPiId, makerTags, unsignedShort, 1, printValue) - }; - - const TagInfo* CanonMakerNote::tagListPi() - { - return tagInfoPi_; - } - - //! BracketMode, tag 0x0003 - extern const TagDetails canonBracketMode[] = { - { 0, N_("Off") }, - { 1, N_("AEB") }, - { 2, N_("FEB") }, - { 3, N_("ISO") }, - { 4, N_("WB") } - }; - - //! RawJpgSize, tag 0x0007 - extern const TagDetails canonRawJpgSize[] = { - { 0, N_("Large") }, - { 1, N_("Medium") }, - { 2, N_("Small") }, - { 5, N_("Medium 1") }, - { 6, N_("Medium 2") }, - { 7, N_("Medium 3") }, - { 8, N_("Postcard") }, - { 9, N_("Widescreen") }, - { 129, N_("Medium Movie") }, - { 130, N_("Small Movie") } - }; - - //! NoiseReduction, tag 0x0008 - extern const TagDetails canonNoiseReduction[] = { - { 0, N_("Off") }, - { 1, N_("On 1") }, - { 2, N_("On 2") }, - { 3, N_("On") }, - { 4, N_("Auto") } - }; - - //! WBBracketMode, tag 0x0009 - extern const TagDetails canonWBBracketMode[] = { - { 0, N_("Off") }, - { 1, N_("On (shift AB)") }, - { 2, N_("On (shift GM)") } - }; - - //! FilterEffect, tag 0x000e - extern const TagDetails canonFilterEffect[] = { - { 0, N_("None") }, - { 1, N_("Yellow") }, - { 2, N_("Orange") }, - { 3, N_("Red") }, - { 4, N_("Green") } - }; - - //! ToningEffect, tag 0x000e - extern const TagDetails canonToningEffect[] = { - { 0, N_("None") }, - { 1, N_("Sepia") }, - { 2, N_("Blue") }, - { 3, N_("Purple") }, - { 4, N_("Green") } - }; - - // Canon File Info Tag - const TagInfo CanonMakerNote::tagInfoFi_[] = { - TagInfo(0x0001, "FileNumber", N_("File Number"), N_("File Number"), canonFiId, makerTags, unsignedLong, 1, printFiFileNumber), - TagInfo(0x0003, "BracketMode", N_("Bracket Mode"), N_("Bracket Mode"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonBracketMode)), - TagInfo(0x0004, "BracketValue", N_("Bracket Value"), N_("Bracket Value"), canonFiId, makerTags, signedShort, 1, printValue), - TagInfo(0x0005, "BracketShotNumber", N_("Bracket Shot Number"), N_("Bracket Shot Number"), canonFiId, makerTags, signedShort, 1, printValue), - TagInfo(0x0006, "RawJpgQuality", N_("Raw Jpg Quality"), N_("Raw Jpg Quality"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsQuality)), - TagInfo(0x0007, "RawJpgSize", N_("Raw Jpg Size"), N_("Raw Jpg Size"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonRawJpgSize)), - TagInfo(0x0008, "NoiseReduction", N_("Noise Reduction"), N_("Noise Reduction"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonNoiseReduction)), - TagInfo(0x0009, "WBBracketMode", N_("WB Bracket Mode"), N_("WB Bracket Mode"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonWBBracketMode)), - TagInfo(0x000c, "WBBracketValueAB", N_("WB Bracket Value AB"), N_("WB Bracket Value AB"), canonFiId, makerTags, signedShort, 1, printValue), - TagInfo(0x000d, "WBBracketValueGM", N_("WB Bracket Value GM"), N_("WB Bracket Value GM"), canonFiId, makerTags, signedShort, 1, printValue), - TagInfo(0x000e, "FilterEffect", N_("Filter Effect"), N_("Filter Effect"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonFilterEffect)), - TagInfo(0x000f, "ToningEffect", N_("Toning Effect"), N_("Toning Effect"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonToningEffect)), - TagInfo(0x0010, "MacroMagnification", N_("Macro Magnification"), N_("Macro magnification"), canonFiId, makerTags, signedShort, 1, printValue), - TagInfo(0x0013, "LiveViewShooting", N_("Live View Shooting"), N_("Live view shooting"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonOffOn)), - TagInfo(0x0019, "FlashExposureLock", N_("Flash Exposure Lock"), N_("Flash exposure lock"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonOffOn)), - // End of list marker - TagInfo(0xffff, "(UnknownCanonFiTag)", "(UnknownCanonFiTag)", N_("Unknown Canon File Info tag"), canonFiId, makerTags, signedShort, 1, printValue) - }; - - const TagInfo* CanonMakerNote::tagListFi() - { - return tagInfoFi_; - } - - //! Tone Curve Values - extern const TagDetails canonToneCurve[] = { - { 0, N_("Standard") }, - { 1, N_("Manual") }, - { 2, N_("Custom") } - }; - - //! Sharpness Frequency Values - extern const TagDetails canonSharpnessFrequency[] = { - { 0, N_("n/a") }, - { 1, N_("Lowest") }, - { 2, N_("Low") }, - { 3, N_("Standard") }, - { 4, N_("High") }, - { 5, N_("Highest") } - }; - - //! PictureStyle Values - extern const TagDetails canonPictureStyle[] = { - { 0x00, N_("None") }, - { 0x01, N_("Standard") }, - { 0x02, N_("Portrait") }, - { 0x03, N_("High Saturation") }, - { 0x04, N_("Adobe RGB") }, - { 0x05, N_("Low Saturation") }, - { 0x06, N_("CM Set 1") }, - { 0x07, N_("CM Set 2") }, - { 0x21, N_("User Def. 1") }, - { 0x22, N_("User Def. 2") }, - { 0x23, N_("User Def. 3") }, - { 0x41, N_("PC 1") }, - { 0x42, N_("PC 2") }, - { 0x43, N_("PC 3") }, - { 0x81, N_("Standard") }, - { 0x82, N_("Portrait") }, - { 0x83, N_("Landscape") }, - { 0x84, N_("Neutral") }, - { 0x85, N_("Faithful") }, - { 0x86, N_("Monochrome") }, - }; - - // Canon Processing Info Tag - const TagInfo CanonMakerNote::tagInfoPr_[] = { - TagInfo(0x0001, "ToneCurve", N_("ToneCurve"), N_("Tone curve"), canonPrId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonToneCurve)), - TagInfo(0x0002, "Sharpness", N_("Sharpness"), N_("Sharpness"), canonPrId, makerTags, signedShort, 1, printValue), - TagInfo(0x0003, "SharpnessFrequency", N_("SharpnessFrequency"), N_("Sharpness frequency"), canonPrId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonSharpnessFrequency)), - TagInfo(0x0004, "SensorRedLevel", N_("SensorRedLevel"), N_("Sensor red level"), canonPrId, makerTags, signedShort, 1, printValue), - TagInfo(0x0005, "SensorBlueLevel", N_("SensorBlueLevel"), N_("Sensor blue level"), canonPrId, makerTags, signedShort, 1, printValue), - TagInfo(0x0006, "WhiteBalanceRed", N_("WhiteBalanceRed"), N_("White balance red"), canonPrId, makerTags, signedShort, 1, printValue), - TagInfo(0x0007, "WhiteBalanceBlue", N_("WhiteBalanceBlue"), N_("White balance blue"), canonPrId, makerTags, signedShort, 1, printValue), - TagInfo(0x0008, "WhiteBalance", N_("WhiteBalance"), N_("White balance"), canonPrId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonSiWhiteBalance)), - TagInfo(0x0009, "ColorTemperature", N_("ColorTemperature"), N_("Color Temperature"), canonPrId, makerTags, signedShort, 1, printValue), - TagInfo(0x000a, "PictureStyle", N_("PictureStyle"), N_("Picture style"), canonPrId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonPictureStyle)), - TagInfo(0x000b, "DigitalGain", N_("DigitalGain"), N_("Digital gain"), canonPrId, makerTags, signedShort, 1, printValue), - TagInfo(0x000c, "WBShiftAB", N_("WBShiftAB"), N_("WBShift AB"), canonPrId, makerTags, signedShort, 1, printValue), - TagInfo(0x000d, "WBShiftGM", N_("WBShiftGM"), N_("WB Shift GM"), canonPrId, makerTags, signedShort, 1, printValue), - TagInfo(0xffff, "(UnknownCanonPrTag)", "(UnknownCanonPrTag)", N_("Unknown Canon Processing Info tag"), canonPrId, makerTags, signedShort, 1, printValue) - }; - - const TagInfo* CanonMakerNote::tagListPr() - { - return tagInfoPr_; - } - - std::ostream& CanonMakerNote::printFiFileNumber(std::ostream& os, - const Value& value, - const ExifData* metadata) - { - if ( !metadata || value.typeId() != unsignedLong - || value.count() == 0) return os << "(" << value << ")"; - - ExifData::const_iterator pos = metadata->findKey(ExifKey("Exif.Image.Model")); - if (pos == metadata->end()) return os << "(" << value << ")"; - - // Ported from Exiftool - std::string model = pos->toString(); - if ( model.find("20D") != std::string::npos - || model.find("350D") != std::string::npos - || model.substr(model.size() - 8, 8) == "REBEL XT" - || model.find("Kiss Digital N") != std::string::npos) { - uint32_t val = value.toLong(); - uint32_t dn = (val & 0xffc0) >> 6; - uint32_t fn = ((val >> 16) & 0xff) + ((val & 0x3f) << 8); - return os << std::dec << dn << "-" << std::setw(4) << std::setfill('0') << fn; - } - if ( model.find("30D") != std::string::npos - || model.find("400D") != std::string::npos - || model.find("REBEL XTi") != std::string::npos - || model.find("Kiss Digital X") != std::string::npos - || model.find("K236") != std::string::npos) { - uint32_t val = value.toLong(); - uint32_t dn = (val & 0xffc00) >> 10; - while (dn < 100) dn += 0x40; - uint32_t fn = ((val & 0x3ff) << 4) + ((val >> 20) & 0x0f); - return os << std::dec << dn << "-" << std::setw(4) << std::setfill('0') << fn; - } - - return os << "(" << value << ")"; - } - - std::ostream& CanonMakerNote::printFocalLength(std::ostream& os, - const Value& value, - const ExifData* metadata) - { - if ( !metadata - || value.count() < 4 - || value.typeId() != unsignedShort) { - return os << value; - } - - ExifKey key("Exif.CanonCs.Lens"); - ExifData::const_iterator pos = metadata->findKey(key); - if ( pos != metadata->end() - && pos->value().count() >= 3 - && pos->value().typeId() == unsignedShort) { - float fu = pos->value().toFloat(2); - if (fu != 0.0) { - float fl = value.toFloat(1) / fu; - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(1); - os << fl << " mm"; - os.copyfmt(oss); - return os; - } - } - - return os << value; - } - - std::ostream& CanonMakerNote::print0x0008(std::ostream& os, - const Value& value, - const ExifData*) - { - std::string n = value.toString(); - if (n.length() < 4) return os << "(" << n << ")"; - return os << n.substr(0, n.length() - 4) << "-" - << n.substr(n.length() - 4); - } - - std::ostream& CanonMakerNote::print0x000c(std::ostream& os, - const Value& value, - const ExifData*) - { - std::istringstream is(value.toString()); - uint32_t l; - is >> l; - return os << std::setw(4) << std::setfill('0') << std::hex - << ((l & 0xffff0000) >> 16) - << std::setw(5) << std::setfill('0') << std::dec - << (l & 0x0000ffff); - } - - std::ostream& CanonMakerNote::printCs0x0002(std::ostream& os, - const Value& value, - const ExifData*) - { - if ( value.typeId() != unsignedShort - || value.count() == 0) return os << value; - - long l = value.toLong(); - if (l == 0) { - os << "Off"; - } - else { - os << l / 10.0 << " s"; - } - return os; - } - - //! Helper structure - struct LensTypeAndFocalLength { - long lensType_; //!< Lens type - std::string focalLength_; //!< Focal length - }; - - //! Compare tag details with a lens entry - bool operator==(const TagDetails& td, const LensTypeAndFocalLength& ltfl) { - return ( td.val_ == ltfl.lensType_ - && std::string(td.label_).find(ltfl.focalLength_) != std::string::npos); - } - - std::ostream& printCsLensByFocalLength(std::ostream& os, - const Value& value, - const ExifData* metadata) - { - if ( !metadata || value.typeId() != unsignedShort - || value.count() == 0) return os << value; - - LensTypeAndFocalLength ltfl; - ltfl.lensType_ = value.toLong(); - - ExifKey key("Exif.CanonCs.Lens"); - ExifData::const_iterator pos = metadata->findKey(key); - if ( pos != metadata->end() - && pos->value().count() >= 3 - && pos->value().typeId() == unsignedShort) { - float fu = pos->value().toFloat(2); - if (fu != 0.0) { - float len1 = pos->value().toLong(0) / fu; - float len2 = pos->value().toLong(1) / fu; - std::ostringstream oss; - oss << std::fixed << std::setprecision(0); - if (len1 == len2) { - oss << len1 << "mm"; - } else { - oss << len2 << "-" << len1 << "mm"; - } - ltfl.focalLength_ = oss.str(); - } - } - if (ltfl.focalLength_.empty()) return os << value; - - const TagDetails* td = find(canonCsLensType, ltfl); - if (!td) return os << value; - return os << td->label_; - } - - std::ostream& CanonMakerNote::printCsLensType(std::ostream& os, - const Value& value, - const ExifData* metadata) - { - if ( value.typeId() != unsignedShort - || value.count() == 0) return os << "(" << value << ")"; - - const LensIdFct* lif = find(lensIdFct, value.toLong()); - if (!lif) { - return EXV_PRINT_TAG(canonCsLensType)(os, value, metadata); - } - if (metadata && lif->fct_) { - return lif->fct_(os, value, metadata); - } - return os << value; - } - - std::ostream& CanonMakerNote::printCsLens(std::ostream& os, - const Value& value, - const ExifData*) - { - if ( value.count() < 3 - || value.typeId() != unsignedShort) { - return os << "(" << value << ")"; - } - - float fu = value.toFloat(2); - if (fu == 0.0) return os << value; - float len1 = value.toLong(0) / fu; - float len2 = value.toLong(1) / fu; - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(1); - if (len1 == len2) { - os << len1 << " mm"; - } else { - os << len2 << " - " << len1 << " mm"; - } - os.copyfmt(oss); - return os; - } - - std::ostream& CanonMakerNote::printSi0x0002(std::ostream& os, - const Value& value, - const ExifData*) - { - if ( value.typeId() == unsignedShort - && value.count() > 0) { - // Ported from Exiftool by Will Stokes - os << exp(canonEv(value.toLong()) * log(2.0)) * 100.0 / 32.0; - } - return os; - } - - std::ostream& CanonMakerNote::printSi0x0003(std::ostream& os, - const Value& value, - const ExifData*) - { - if ( value.typeId() == unsignedShort - && value.count() > 0) { - // The offset of '5' seems to be ok for most Canons (see Exiftool) - // It might be explained by the fakt, that most Canons have a longest - // exposure of 30s which is 5 EV below 1s - // see also printSi0x0017 - std::ostringstream oss; - oss.copyfmt(os); - int res = static_cast(100.0 * (value.toLong() / 32.0 + 5.0) + 0.5); - os << std::fixed << std::setprecision(2) << res / 100.0; - os.copyfmt(oss); - } - return os; - } - - std::ostream& CanonMakerNote::printSi0x0009(std::ostream& os, - const Value& value, - const ExifData*) - { - if ( value.typeId() != unsignedShort - || value.count() == 0) return os << value; - - long l = value.toLong(); - os << l << ""; - // Todo: determine unit - return os; - } - - std::ostream& CanonMakerNote::printSi0x000e(std::ostream& os, - const Value& value, - const ExifData* pExifData) - { - if ( value.typeId() != unsignedShort - || value.count() == 0) return os << value; - - long l = value.toLong(); - long num = (l & 0xf000) >> 12; - os << num << " focus points; "; - long used = l & 0x0fff; - if (used == 0) { - os << "none"; - } - else { - EXV_PRINT_TAG_BITMASK(canonSiAFPointUsed)(os, value, pExifData); - } - os << " used"; - return os; - } - - std::ostream& CanonMakerNote::printSi0x0013(std::ostream& os, - const Value& value, - const ExifData*) - { - if ( value.typeId() != unsignedShort - || value.count() == 0) return os << value; - - long l = value.toLong(); - if (l == 0xffff) { - os << "Infinite"; - } - else { - os << l << ""; - } - return os; - } - - std::ostream& CanonMakerNote::printSi0x0015(std::ostream& os, - const Value& value, - const ExifData*) - { - if ( value.typeId() != unsignedShort - || value.count() == 0) return os << value; - - std::ostringstream oss; - oss.copyfmt(os); - long val = static_cast(value.toLong()); - if (val < 0) return os << value; - os << std::setprecision(2) - << "F" << fnumber(canonEv(val)); - os.copyfmt(oss); - return os; - } - - std::ostream& CanonMakerNote::printSi0x0016(std::ostream& os, - const Value& value, - const ExifData*) - { - if ( value.typeId() != unsignedShort - || value.count() == 0) return os << value; - - URational ur = exposureTime(canonEv(value.toLong())); - os << ur.first; - if (ur.second > 1) { - os << "/" << ur.second; - } - return os << " s"; - } - - std::ostream& CanonMakerNote::printSi0x0017(std::ostream& os, - const Value& value, - const ExifData*) - { - if ( value.typeId() != unsignedShort - || value.count() == 0) return os << value; - - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(2) - << value.toLong() / 8.0 - 6.0; - os.copyfmt(oss); - return os; - } - -// ***************************************************************************** -// free functions - - float canonEv(long val) - { - // temporarily remove sign - int sign = 1; - if (val < 0) { - sign = -1; - val = -val; - } - // remove fraction - float frac = static_cast(val & 0x1f); - val -= long(frac); - // convert 1/3 (0x0c) and 2/3 (0x14) codes - if (frac == 0x0c) { - frac = 32.0f / 3; - } - else if (frac == 0x14) { - frac = 64.0f / 3; - } - return sign * (val + frac) / 32.0f; - } - -}} // namespace Internal, Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/canonmn_int.hpp b/platform/win32/msvc/external/exiv2/src/canonmn_int.hpp deleted file mode 100644 index fef1516727c..00000000000 --- a/platform/win32/msvc/external/exiv2/src/canonmn_int.hpp +++ /dev/null @@ -1,148 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file canonmn_int.hpp - @brief Canon makernote tags.
References:
- [1] EXIF MakerNote of Canon by David Burren
- [2] Canon makernote tags by Phil Harvey - @version $Rev: 2681 $ - @author Andreas Huggel (ahu)
- David Cannings (dc) - Andi Clemens (ac) - @date 18-Feb-04, ahu: created
- 07-Mar-04, ahu: isolated as a separate component
- 12-Aug-06, dc: started updating all tags - */ -#ifndef CANONMN_INT_HPP_ -#define CANONMN_INT_HPP_ - -// ***************************************************************************** -// included header files -#include "tags.hpp" -#include "types.hpp" - -// + standard includes -#include -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - class Value; - - namespace Internal { - -// ***************************************************************************** -// class definitions - - //! MakerNote for Canon cameras - class CanonMakerNote { - public: - //! Return read-only list of built-in Canon tags - static const TagInfo* tagList(); - //! Return read-only list of built-in Canon Camera Settings tags - static const TagInfo* tagListCs(); - //! Return read-only list of built-in Canon Shot Info tags - static const TagInfo* tagListSi(); - //! Return read-only list of built-in Canon Panorama tags - static const TagInfo* tagListPa(); - //! Return read-only list of built-in Canon Custom Function tags - static const TagInfo* tagListCf(); - //! Return read-only list of built-in Canon Picture Info tags - static const TagInfo* tagListPi(); - //! Return read-only list of built-in Canon File Info tags - static const TagInfo* tagListFi(); - //! Return read-only list of built-in Canon Processing Info tags - static const TagInfo* tagListPr(); - - //! @name Print functions for Canon %MakerNote tags - //@{ - //! Print the FileInfo FileNumber - static std::ostream& printFiFileNumber(std::ostream& os, const Value& value, const ExifData* metadata); - //! Print the focal length - static std::ostream& printFocalLength(std::ostream& os, const Value& value, const ExifData*); - //! Print the image number - static std::ostream& print0x0008(std::ostream& os, const Value& value, const ExifData*); - //! Print the serial number of the camera - static std::ostream& print0x000c(std::ostream& os, const Value& value, const ExifData*); - //! Self timer - static std::ostream& printCs0x0002(std::ostream& os, const Value& value, const ExifData*); - //! Camera lens type. For some values, the exact type can only be determined if \em metadata is provided. - static std::ostream& printCsLensType(std::ostream& os, const Value& value, const ExifData* metadata); - //! Camera lens information - static std::ostream& printCsLens(std::ostream& os, const Value& value, const ExifData*); - //! ISO speed used - static std::ostream& printSi0x0002(std::ostream& os, const Value& value, const ExifData*); - //! MeasuredEV - static std::ostream& printSi0x0003(std::ostream& os, const Value& value, const ExifData*); - //! Sequence number - static std::ostream& printSi0x0009(std::ostream& os, const Value& value, const ExifData*); - //! AF point used - static std::ostream& printSi0x000e(std::ostream& os, const Value& value, const ExifData* pExifData); - //! Subject distance - static std::ostream& printSi0x0013(std::ostream& os, const Value& value, const ExifData*); - //! Aperture - static std::ostream& printSi0x0015(std::ostream& os, const Value& value, const ExifData*); - //! Shutter speed - static std::ostream& printSi0x0016(std::ostream& os, const Value& value, const ExifData*); - //! MeasuredEV2 - static std::ostream& printSi0x0017(std::ostream& os, const Value& value, const ExifData*); - //@} - - private: - // DATA - - //! Tag information - static const TagInfo tagInfo_[]; - static const TagInfo tagInfoCs_[]; - static const TagInfo tagInfoSi_[]; - static const TagInfo tagInfoCf_[]; - static const TagInfo tagInfoPi_[]; - static const TagInfo tagInfoFi_[]; - static const TagInfo tagInfoPa_[]; - static const TagInfo tagInfoPr_[]; - - }; // class CanonMakerNote - -// ***************************************************************************** -// template, inline and free functions - - /*! - @brief Convert Canon hex-based EV (modulo 0x20) to real number - Ported from Phil Harvey's Image::ExifTool::Canon::CanonEv - by Will Stokes - - 0x00 -> 0 - 0x0c -> 0.33333 - 0x10 -> 0.5 - 0x14 -> 0.66666 - 0x20 -> 1 - .. - 160 -> 5 - 128 -> 4 - 143 -> 4.46875 - */ - float canonEv(long val); - -}} // namespace Internal, Exiv2 - -#endif // #ifndef CANONMN_INT_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/convert.cpp b/platform/win32/msvc/external/exiv2/src/convert.cpp deleted file mode 100644 index 3b320aed718..00000000000 --- a/platform/win32/msvc/external/exiv2/src/convert.cpp +++ /dev/null @@ -1,1582 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: convert.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - Vladimir Nadvornik (vn) - History: 17-Mar-08, ahu: created basic converter framework - 20-May-08, vn: added actual conversion logic - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: convert.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#include "types.hpp" -#include "exif.hpp" -#include "iptc.hpp" -#include "xmp.hpp" -#include "futils.hpp" -#include "convert.hpp" - -// + standard includes -#include -#include -#include -#include -#include -#include // for snprintf (C99) -#ifdef _MSC_VER -# define snprintf _snprintf -#endif -#include - -#if defined WIN32 && !defined __CYGWIN__ -# include -#endif - -#ifdef EXV_HAVE_ICONV -# include -# include -#endif - -// Adobe XMP Toolkit -#ifdef EXV_HAVE_XMP_TOOLKIT -# define TXMP_STRING_TYPE std::string -# include -# include -#endif // EXV_HAVE_XMP_TOOLKIT - -// ***************************************************************************** -// local declarations -namespace { -#if defined WIN32 && !defined __CYGWIN__ - // Convert string charset with Windows functions. - bool convertStringCharsetWindows(std::string& str, const char* from, const char* to); -#endif -#if defined EXV_HAVE_ICONV - // Convert string charset with iconv. - bool convertStringCharsetIconv(std::string& str, const char* from, const char* to); -#endif - /*! - @brief Get the text value of an XmpDatum \em pos. - - If \em pos refers to a LangAltValue, \em value is set to the default language - entry without the x-default qualifier. If there is no default but - exactly one entry, \em value is set to this entry, without the qualifier. - The return code indicates if the operation was successful. - */ - bool getTextValue(std::string& value, const Exiv2::XmpData::iterator& pos); -} - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - //! Metadata conversions. - class Converter { - public: - /*! - @brief Type for metadata converter functions, taking two key strings, - \em from and \em to. - - These functions have access to both the source and destination metadata - containers and store the result directly in the destination container. - */ - typedef void (Converter::*ConvertFct)(const char* from, const char* to); - //! Structure to define conversions between two keys. - struct Conversion { - MetadataId metadataId_; //!< Type of metadata for the first key. - const char* key1_; //!< First metadata key. - const char* key2_; //!< Second metadata key (always an XMP key for now). - ConvertFct key1ToKey2_; //!< Conversion from first to second key. - ConvertFct key2ToKey1_; //!< Conversion from second to first key. - }; - public: - //! @name Creators - //@{ - //! Constructor for Exif tags and XMP properties. - Converter(ExifData& exifData, XmpData& xmpData); - //! Constructor for Iptc tags and XMP properties. - Converter(IptcData& iptcData, XmpData& xmpData, const char *iptcCharset = 0); - //@} - - //! @name Manipulators - //@{ - //! Convert Exif tags or IPTC datasets to XMP properties according to the conversion table. - void cnvToXmp(); - //! Convert XMP properties to Exif tags or IPTC datasets according to the conversion table. - void cnvFromXmp(); - /*! - @brief Set the erase flag. - - This flag indicates whether successfully converted source records are erased. - */ - void setErase(bool onoff =true) { erase_ = onoff; } - /*! - @brief Set the overwrite flag. - - This flag indicates whether existing target records are overwritten. - */ - void setOverwrite(bool onoff =true) { overwrite_ = onoff; } - //@} - - //! @name Conversion functions (manipulators) - //@{ - /*! - @brief Simple Exif to XMP conversion function. - - Sets the XMP property to an XmpText value containing the Exif value string. - */ - void cnvExifValue(const char* from, const char* to); - /*! - @brief Convert the tag Exif.Photo.UserComment to XMP. - - Todo: Convert the Exif comment to UTF-8 if necessary. - */ - void cnvExifComment(const char* from, const char* to); - /*! - @brief Converts Exif tag with multiple components to XMP array. - - Converts Exif tag with multiple components to XMP array. This function is - used for ComponentsConfiguration tag. - */ - void cnvExifArray(const char* from, const char* to); - /*! - @brief Exif date to XMP conversion function. - - Sets the XMP property to an XmpText value containing date and time. This function - combines values from multiple Exif tags as described in XMP specification. It - is used for DateTime, DateTimeOriginal, DateTimeDigitized and GPSTimeStamp. - */ - void cnvExifDate(const char* from, const char* to); - /*! - @brief Exif version to XMP conversion function. - - Converts ExifVersion tag to XmpText value. - */ - void cnvExifVersion(const char* from, const char* to); - /*! - @brief Exif GPS version to XMP conversion function. - - Converts GPSVersionID tag to XmpText value. - */ - void cnvExifGPSVersion(const char* from, const char* to); - /*! - @brief Exif Flash to XMP conversion function. - - Converts Flash tag to XMP structure. - */ - void cnvExifFlash(const char* from, const char* to); - /*! - @brief Exif GPS coordinate to XMP conversion function. - - Converts GPS coordinates tag to XmpText value. It combines multiple Exif tags - as described in XMP specification. - */ - void cnvExifGPSCoord(const char* from, const char* to); - /*! - @brief Simple XMP to Exif conversion function. - - Sets the Exif tag according to the XMP property. - For LangAlt values, only the x-default entry is used. - - Todo: Escape non-ASCII characters in XMP text values - */ - void cnvXmpValue(const char* from, const char* to); - /*! - @brief Convert the tag Xmp.exif.UserComment to Exif. - */ - void cnvXmpComment(const char* from, const char* to); - /*! - @brief Converts XMP array to Exif tag with multiple components. - - Converts XMP array to Exif tag with multiple components. This function is - used for ComponentsConfiguration tag. - */ - void cnvXmpArray(const char* from, const char* to); - /*! - @brief XMP to Exif date conversion function. - - Converts the XmpText value to Exif date and time. This function - sets multiple Exif tags as described in XMP specification. It - is used for DateTime, DateTimeOriginal, DateTimeDigitized and GPSTimeStamp. - */ - void cnvXmpDate(const char* from, const char* to); - /*! - @brief XMP to Exif version conversion function. - - Converts XmpText value to ExifVersion tag. - */ - void cnvXmpVersion(const char* from, const char* to); - /*! - @brief XMP to Exif GPS version conversion function. - - Converts XmpText value to GPSVersionID tag. - */ - void cnvXmpGPSVersion(const char* from, const char* to); - /*! - @brief XMP to Exif Flash conversion function. - - Converts XMP structure to Flash tag. - */ - void cnvXmpFlash(const char* from, const char* to); - /*! - @brief XMP to Exif GPS coordinate conversion function. - - Converts XmpText value to GPS coordinates tags. It sets multiple Exif tags - as described in XMP specification. - */ - void cnvXmpGPSCoord(const char* from, const char* to); - /*! - @brief IPTC dataset to XMP conversion function. - - Multiple IPTC datasets with the same key are converted to an XMP array. - */ - void cnvIptcValue(const char* from, const char* to); - /*! - @brief XMP to IPTC dataset conversion function. - - Each array element of an XMP array value is added as one IPTC dataset. - */ - void cnvXmpValueToIptc(const char* from, const char* to); - /*! - @brief Write exif:NativeDigest and tiff:NativeDigest properties to XMP. - - Compute digests from Exif values and write them to exif:NativeDigest - and tiff:NativeDigest properties. This should be compatible with XMP SDK. - */ - void writeExifDigest(); - /*! - @brief Copies metadata in appropriate direction. - - From values of exif:NativeDigest and tiff:NativeDigest detects which of - XMP and Exif was updated more recently and copies metadata in appropriate direction. - */ - void syncExifWithXmp(); - //@} - - //! @name Accessors - //@{ - //! Get the value of the erase flag, see also setErase(bool on). - bool erase() const { return erase_; } - //! Get the value of the overwrite flag, see also setOverwrite(bool on). - bool overwrite() const { return overwrite_; } - //@} - - private: - bool prepareExifTarget(const char* to, bool force =false); - bool prepareIptcTarget(const char* to, bool force =false); - bool prepareXmpTarget(const char* to, bool force =false); - std::string computeExifDigest(bool tiff); - std::string computeIptcDigest(); - - // DATA - static const Conversion conversion_[]; //findKey(ExifKey(to)); - if (pos == exifData_->end()) return true; - if (!overwrite_ && !force) return false; - exifData_->erase(pos); - return true; - } - - bool Converter::prepareIptcTarget(const char* to, bool force) - { - Exiv2::IptcData::iterator pos = iptcData_->findKey(IptcKey(to)); - if (pos == iptcData_->end()) return true; - if (!overwrite_ && !force) return false; - while ((pos = iptcData_->findKey(IptcKey(to))) != iptcData_->end()) { - iptcData_->erase(pos); - } - return true; - } - - bool Converter::prepareXmpTarget(const char* to, bool force) - { - Exiv2::XmpData::iterator pos = xmpData_->findKey(XmpKey(to)); - if (pos == xmpData_->end()) return true; - if (!overwrite_ && !force) return false; - xmpData_->erase(pos); - return true; - } - - void Converter::cnvExifValue(const char* from, const char* to) - { - Exiv2::ExifData::iterator pos = exifData_->findKey(ExifKey(from)); - if (pos == exifData_->end()) return; - std::string value = pos->toString(); - if (!pos->value().ok()) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; -#endif - return; - } - if (!prepareXmpTarget(to)) return; - (*xmpData_)[to] = value; - if (erase_) exifData_->erase(pos); - } - - void Converter::cnvExifComment(const char* from, const char* to) - { - Exiv2::ExifData::iterator pos = exifData_->findKey(ExifKey(from)); - if (pos == exifData_->end()) return; - if (!prepareXmpTarget(to)) return; - const CommentValue* cv = dynamic_cast(&pos->value()); - if (cv == 0) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; -#endif - return; - } - // Todo: Convert to UTF-8 if necessary - (*xmpData_)[to] = cv->comment(); - if (erase_) exifData_->erase(pos); - } - - void Converter::cnvExifArray(const char* from, const char* to) - { - Exiv2::ExifData::iterator pos = exifData_->findKey(ExifKey(from)); - if (pos == exifData_->end()) return; - if (!prepareXmpTarget(to)) return; - for (int i = 0; i < pos->count(); ++i) { - std::string value = pos->toString(i); - if (!pos->value().ok()) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; -#endif - return; - } - (*xmpData_)[to] = value; - } - if (erase_) exifData_->erase(pos); - } - - void Converter::cnvExifDate(const char* from, const char* to) - { - Exiv2::ExifData::iterator pos = exifData_->findKey(ExifKey(from)); - if (pos == exifData_->end()) return; - if (!prepareXmpTarget(to)) return; - int year, month, day, hour, min, sec; - std::string subsec; - char buf[30]; - - if (std::string(from) != "Exif.GPSInfo.GPSTimeStamp") { - std::string value = pos->toString(); - if (!pos->value().ok()) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; -#endif - return; - } - if (sscanf(value.c_str(), "%d:%d:%d %d:%d:%d", &year, &month, &day, &hour, &min, &sec) != 6) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to - << ", unable to parse '" << value << "'\n"; -#endif - return; - } - } - else { // "Exif.GPSInfo.GPSTimeStamp" - - bool ok = true; - if (pos->count() != 3) ok = false; - if (ok) { - for (int i = 0; i < 3; ++i) { - if (pos->toRational(i).second == 0) { - ok = false; - break; - } - } - } - if (!ok) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; -#endif - return; - } - - double dhour = pos->toFloat(0); - double dmin = pos->toFloat(1); - // Hack: Need Value::toDouble - Rational r = pos->toRational(2); - double dsec = static_cast(r.first)/r.second; - - if (!pos->value().ok()) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; -#endif - return; - } - - dsec = dhour * 3600.0 + dmin * 60.0 + dsec; - - hour = static_cast(dsec / 3600.0); - dsec -= hour * 3600; - min = static_cast(dsec / 60.0); - dsec -= min * 60; - sec = static_cast(dsec); - dsec -= sec; - - snprintf(buf, sizeof(buf), "%.9f", dsec); - buf[sizeof(buf) - 1] = 0; - buf[1] = '.'; // some locales use ',' - subsec = buf + 1; - - Exiv2::ExifData::iterator datePos = exifData_->findKey(ExifKey("Exif.GPSInfo.GPSDateStamp")); - if (datePos == exifData_->end()) { - datePos = exifData_->findKey(ExifKey("Exif.Photo.DateTimeOriginal")); - } - if (datePos == exifData_->end()) { - datePos = exifData_->findKey(ExifKey("Exif.Photo.DateTimeDigitized")); - } - if (datePos == exifData_->end()) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; -#endif - return; - } - std::string value = datePos->toString(); - if (sscanf(value.c_str(), "%d:%d:%d", &year, &month, &day) != 3) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to - << ", unable to parse '" << value << "'\n"; -#endif - return; - } - } - - const char* subsecTag = 0; - if (std::string(from) == "Exif.Image.DateTime") { - subsecTag = "Exif.Photo.SubSecTime"; - } - else if (std::string(from) == "Exif.Photo.DateTimeOriginal") { - subsecTag = "Exif.Photo.SubSecTimeOriginal"; - } - else if (std::string(from) == "Exif.Photo.DateTimeDigitized") { - subsecTag = "Exif.Photo.SubSecTimeDigitized"; - } - - if (subsecTag) { - ExifData::iterator subsec_pos = exifData_->findKey(ExifKey(subsecTag)); - if ( subsec_pos != exifData_->end() - && subsec_pos->typeId() == asciiString) { - std::string ss = subsec_pos->toString(); - if (!ss.empty()) { - bool ok = false; - stringTo(ss, ok); - if (ok) subsec = std::string(".") + ss; - } - } - if (erase_) exifData_->erase(subsec_pos); - } - - if (subsec.size() > 10) subsec = subsec.substr(0, 10); - snprintf(buf, sizeof(buf), "%4d-%02d-%02dT%02d:%02d:%02d%s", - year, month, day, hour, min, sec, subsec.c_str()); - buf[sizeof(buf) - 1] = 0; - - (*xmpData_)[to] = buf; - if (erase_) exifData_->erase(pos); - } - - void Converter::cnvExifVersion(const char* from, const char* to) - { - Exiv2::ExifData::iterator pos = exifData_->findKey(ExifKey(from)); - if (pos == exifData_->end()) return; - if (!prepareXmpTarget(to)) return; - std::ostringstream value; - for (int i = 0; i < pos->count(); ++i) { - value << static_cast(pos->toLong(i)); - } - (*xmpData_)[to] = value.str(); - if (erase_) exifData_->erase(pos); - } - - void Converter::cnvExifGPSVersion(const char* from, const char* to) - { - Exiv2::ExifData::iterator pos = exifData_->findKey(ExifKey(from)); - if (pos == exifData_->end()) return; - if (!prepareXmpTarget(to)) return; - std::ostringstream value; - for (int i = 0; i < pos->count(); ++i) { - if (i > 0) value << '.'; - value << pos->toLong(i); - } - (*xmpData_)[to] = value.str(); - if (erase_) exifData_->erase(pos); - } - - void Converter::cnvExifFlash(const char* from, const char* to) - { - Exiv2::ExifData::iterator pos = exifData_->findKey(ExifKey(from)); - if (pos == exifData_->end() || pos->count() == 0) return; - if (!prepareXmpTarget(to)) return; - int value = pos->toLong(); - if (!pos->value().ok()) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; -#endif - return; - } - - (*xmpData_)["Xmp.exif.Flash/exif:Fired"] = static_cast(value & 1); - (*xmpData_)["Xmp.exif.Flash/exif:Return"] = (value >> 1) & 3; - (*xmpData_)["Xmp.exif.Flash/exif:Mode"] = (value >> 3) & 3; - (*xmpData_)["Xmp.exif.Flash/exif:Function"] = static_cast((value >> 5) & 1); - (*xmpData_)["Xmp.exif.Flash/exif:RedEyeMode"] = static_cast((value >> 6) & 1); - - if (erase_) exifData_->erase(pos); - } - - void Converter::cnvExifGPSCoord(const char* from, const char* to) - { - Exiv2::ExifData::iterator pos = exifData_->findKey(ExifKey(from)); - if (pos == exifData_->end()) return; - if (!prepareXmpTarget(to)) return; - if (pos->count() != 3) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; -#endif - return; - } - Exiv2::ExifData::iterator refPos = exifData_->findKey(ExifKey(std::string(from) + "Ref")); - if (refPos == exifData_->end()) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; -#endif - return; - } - double deg[3]; - for (int i = 0; i < 3; ++i) { - const int32_t z = pos->toRational(i).first; - const int32_t d = pos->toRational(i).second; - if (d == 0) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; -#endif - return; - } - // Hack: Need Value::toDouble - deg[i] = static_cast(z)/d; - } - double min = deg[0] * 60.0 + deg[1] + deg[2] / 60.0; - int ideg = static_cast(min / 60.0); - min -= ideg * 60; - std::ostringstream oss; - oss << ideg << "," - << std::fixed << std::setprecision(7) << min - << refPos->toString().c_str()[0]; - (*xmpData_)[to] = oss.str(); - - if (erase_) exifData_->erase(pos); - if (erase_) exifData_->erase(refPos); - } - - void Converter::cnvXmpValue(const char* from, const char* to) - { - Exiv2::XmpData::iterator pos = xmpData_->findKey(XmpKey(from)); - if (pos == xmpData_->end()) return; - if (!prepareExifTarget(to)) return; - std::string value; - if (!getTextValue(value, pos)) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; -#endif - return; - } - // Todo: Escape non-ASCII characters in XMP text values - ExifKey key(to); - Exifdatum ed(key); - if (0 == ed.setValue(value)) { - exifData_->add(ed); - } - if (erase_) xmpData_->erase(pos); - } - - void Converter::cnvXmpComment(const char* from, const char* to) - { - if (!prepareExifTarget(to)) return; - Exiv2::XmpData::iterator pos = xmpData_->findKey(XmpKey(from)); - if (pos == xmpData_->end()) return; - std::string value; - if (!getTextValue(value, pos)) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; -#endif - return; - } - // Assumes the XMP value is encoded in UTF-8, as it should be - (*exifData_)[to] = "charset=Unicode " + value; - if (erase_) xmpData_->erase(pos); - } - - void Converter::cnvXmpArray(const char* from, const char* to) - { - if (!prepareExifTarget(to)) return; - Exiv2::XmpData::iterator pos = xmpData_->findKey(XmpKey(from)); - if (pos == xmpData_->end()) return; - std::ostringstream array; - for (int i = 0; i < pos->count(); ++i) { - std::string value = pos->toString(i); - if (!pos->value().ok()) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; -#endif - return; - } - array << value; - if (i != pos->count() - 1) array << " "; - } - (*exifData_)[to] = array.str(); - if (erase_) xmpData_->erase(pos); - } - - void Converter::cnvXmpDate(const char* from, const char* to) - { - Exiv2::XmpData::iterator pos = xmpData_->findKey(XmpKey(from)); - if (pos == xmpData_->end()) return; - if (!prepareExifTarget(to)) return; -#ifdef EXV_HAVE_XMP_TOOLKIT - std::string value = pos->toString(); - if (!pos->value().ok()) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; -#endif - return; - } - XMP_DateTime datetime; - try { - SXMPUtils::ConvertToDate(value, &datetime); - } -#ifndef SUPPRESS_WARNINGS - catch (const XMP_Error& e) { - EXV_WARNING << "Failed to convert " << from << " to " << to << " (" << e.GetErrMsg() << ")\n"; - return; - } -#else - catch (const XMP_Error&) { - return; - } -#endif // SUPPRESS_WARNINGS - char buf[30]; - if (std::string(to) != "Exif.GPSInfo.GPSTimeStamp") { - - SXMPUtils::ConvertToLocalTime(&datetime); - - snprintf(buf, sizeof(buf), "%4d:%02d:%02d %02d:%02d:%02d", - static_cast(datetime.year), - static_cast(datetime.month), - static_cast(datetime.day), - static_cast(datetime.hour), - static_cast(datetime.minute), - static_cast(datetime.second)); - buf[sizeof(buf) - 1] = 0; - (*exifData_)[to] = buf; - - if (datetime.nanoSecond) { - const char* subsecTag = 0; - if (std::string(to) == "Exif.Image.DateTime") { - subsecTag = "Exif.Photo.SubSecTime"; - } - else if (std::string(to) == "Exif.Photo.DateTimeOriginal") { - subsecTag = "Exif.Photo.SubSecTimeOriginal"; - } - else if (std::string(to) == "Exif.Photo.DateTimeDigitized") { - subsecTag = "Exif.Photo.SubSecTimeDigitized"; - } - if (subsecTag) { - prepareExifTarget(subsecTag, true); - (*exifData_)[subsecTag] = toString(datetime.nanoSecond); - } - } - } - else { // "Exif.GPSInfo.GPSTimeStamp" - - // Ignore the time zone, assuming the time is in UTC as it should be - - URational rhour(datetime.hour, 1); - URational rmin(datetime.minute, 1); - URational rsec(datetime.second, 1); - if (datetime.nanoSecond != 0) { - if (datetime.second != 0) { - // Add the seconds to rmin so that the ns fit into rsec - rmin.second = 60; - rmin.first *= 60; - rmin.first += datetime.second; - } - rsec.second = 1000000000; - rsec.first = datetime.nanoSecond; - } - - std::ostringstream array; - array << rhour << " " << rmin << " " << rsec; - (*exifData_)[to] = array.str(); - - prepareExifTarget("Exif.GPSInfo.GPSDateStamp", true); - snprintf(buf, sizeof(buf), "%4d:%02d:%02d", - static_cast(datetime.year), - static_cast(datetime.month), - static_cast(datetime.day)); - buf[sizeof(buf) - 1] = 0; - (*exifData_)["Exif.GPSInfo.GPSDateStamp"] = buf; - } - - if (erase_) xmpData_->erase(pos); -#else -# ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; -# endif -#endif // !EXV_HAVE_XMP_TOOLKIT - } - - void Converter::cnvXmpVersion(const char* from, const char* to) - { - Exiv2::XmpData::iterator pos = xmpData_->findKey(XmpKey(from)); - if (pos == xmpData_->end()) return; - if (!prepareExifTarget(to)) return; - std::string value = pos->toString(); - if (!pos->value().ok() || value.length() < 4) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; -#endif - return; - } - std::ostringstream array; - - array << static_cast(value[0]) << " " - << static_cast(value[1]) << " " - << static_cast(value[2]) << " " - << static_cast(value[3]); - - (*exifData_)[to] = array.str(); - if (erase_) xmpData_->erase(pos); - } - - void Converter::cnvXmpGPSVersion(const char* from, const char* to) - { - Exiv2::XmpData::iterator pos = xmpData_->findKey(XmpKey(from)); - if (pos == xmpData_->end()) return; - if (!prepareExifTarget(to)) return; - std::string value = pos->toString(); - if (!pos->value().ok()) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; -#endif - return; - } - - for (unsigned i = 0; i < value.length(); ++i) { - if (value[i] == '.') value[i] = ' '; - } - (*exifData_)[to] = value; - if (erase_) xmpData_->erase(pos); - - } - - void Converter::cnvXmpFlash(const char* from, const char* to) - { - Exiv2::XmpData::iterator pos = xmpData_->findKey(XmpKey(std::string(from) + "/exif:Fired")); - if (pos == xmpData_->end()) return; - if (!prepareExifTarget(to)) return; - unsigned short value = 0; - - if (pos != xmpData_->end() && pos->count() > 0) { - int fired = pos->toLong(); - if (pos->value().ok()) - value |= fired & 1; -#ifndef SUPPRESS_WARNINGS - else - EXV_WARNING << "Failed to convert " << std::string(from) + "/exif:Fired" << " to " << to << "\n"; -#endif - } - pos = xmpData_->findKey(XmpKey(std::string(from) + "/exif:Return")); - if (pos != xmpData_->end() && pos->count() > 0) { - int ret = pos->toLong(); - if (pos->value().ok()) - value |= (ret & 3) << 1; -#ifndef SUPPRESS_WARNINGS - else - EXV_WARNING << "Failed to convert " << std::string(from) + "/exif:Return" << " to " << to << "\n"; -#endif - } - pos = xmpData_->findKey(XmpKey(std::string(from) + "/exif:Mode")); - if (pos != xmpData_->end() && pos->count() > 0) { - int mode = pos->toLong(); - if (pos->value().ok()) - value |= (mode & 3) << 3; -#ifndef SUPPRESS_WARNINGS - else - EXV_WARNING << "Failed to convert " << std::string(from) + "/exif:Mode" << " to " << to << "\n"; -#endif - } - pos = xmpData_->findKey(XmpKey(std::string(from) + "/exif:Function")); - if (pos != xmpData_->end() && pos->count() > 0) { - int function = pos->toLong(); - if (pos->value().ok()) - value |= (function & 1) << 5; -#ifndef SUPPRESS_WARNINGS - else - EXV_WARNING << "Failed to convert " << std::string(from) + "/exif:Function" << " to " << to << "\n"; -#endif - } - pos = xmpData_->findKey(XmpKey(std::string(from) + "/exif:RedEyeMode")); - if (pos != xmpData_->end() && pos->count() > 0) { - int red = pos->toLong(); - if (pos->value().ok()) - value |= (red & 1) << 6; -#ifndef SUPPRESS_WARNINGS - else - EXV_WARNING << "Failed to convert " << std::string(from) + "/exif:RedEyeMode" << " to " << to << "\n"; -#endif - } - - (*exifData_)[to] = value; - if (erase_) xmpData_->erase(pos); - } - - void Converter::cnvXmpGPSCoord(const char* from, const char* to) - { - Exiv2::XmpData::iterator pos = xmpData_->findKey(XmpKey(from)); - if (pos == xmpData_->end()) return; - if (!prepareExifTarget(to)) return; - std::string value = pos->toString(); - if (!pos->value().ok()) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; -#endif - return; - } - if (value.empty()) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << from << " is empty\n"; -#endif - return; - } - - double deg = 0.0; - double min = 0.0; - double sec = 0.0; - char ref = '\0'; - char sep1 = '\0'; - char sep2 = '\0'; - - ref = value[value.length() - 1]; - value.erase(value.length() - 1); - - std::istringstream in(value); - - in >> deg >> sep1 >> min >> sep2; - - if (sep2 == ',') { - in >> sec; - } - else { - sec = (min - static_cast(min)) * 60.0; - min = static_cast(static_cast(min)); - sep2 = ','; - } - - if ( in.bad() || !(ref == 'N' || ref == 'S' || ref == 'E' || ref == 'W') - || sep1 != ',' || sep2 != ',' || !in.eof()) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; -#endif - return; - } - - Rational rdeg = floatToRationalCast(static_cast(deg)); - Rational rmin = floatToRationalCast(static_cast(min)); - Rational rsec = floatToRationalCast(static_cast(sec)); - - std::ostringstream array; - array << rdeg << " " << rmin << " " << rsec; - (*exifData_)[to] = array.str(); - - prepareExifTarget((std::string(to) + "Ref").c_str(), true); - char ref_str[2] = {ref, 0}; - (*exifData_)[std::string(to) + "Ref"] = ref_str; - - if (erase_) xmpData_->erase(pos); - } - - void Converter::cnvIptcValue(const char* from, const char* to) - { - Exiv2::IptcData::iterator pos = iptcData_->findKey(IptcKey(from)); - if (pos == iptcData_->end()) return; - if (!prepareXmpTarget(to)) return; - while (pos != iptcData_->end()) { - if (pos->key() == from) { - std::string value = pos->toString(); - if (!pos->value().ok()) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; -#endif - ++pos; - continue; - } - if (iptcCharset_) convertStringCharset(value, iptcCharset_, "UTF-8"); - (*xmpData_)[to] = value; - if (erase_) { - pos = iptcData_->erase(pos); - continue; - } - } - ++pos; - } - } - - void Converter::cnvXmpValueToIptc(const char* from, const char* to) - { - XmpData::iterator pos = xmpData_->findKey(XmpKey(from)); - if (pos == xmpData_->end()) return; - if (!prepareIptcTarget(to)) return; - - if (pos->typeId() == langAlt || pos->typeId() == xmpText) { - std::string value; - if (!getTextValue(value, pos)) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; -#endif - return; - } - (*iptcData_)[to] = value; - (*iptcData_)["Iptc.Envelope.CharacterSet"] = "\033%G"; // indicate UTF-8 encoding - if (erase_) xmpData_->erase(pos); - return; - } - - int count = pos->count(); - bool added = false; - for (int i = 0; i < count; ++i) { - std::string value = pos->toString(i); - if (!pos->value().ok()) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; -#endif - continue; - } - IptcKey key(to); - Iptcdatum id(key); - id.setValue(value); - iptcData_->add(id); - added = true; - } - if (added) (*iptcData_)["Iptc.Envelope.CharacterSet"] = "\033%G"; // indicate UTF-8 encoding - if (erase_) xmpData_->erase(pos); - } - - std::string Converter::computeExifDigest(bool tiff) - { -#ifdef EXV_HAVE_XMP_TOOLKIT - std::ostringstream res; - MD5_CTX context; - unsigned char digest[16]; - - MD5Init ( &context ); - for (unsigned int i = 0; i < EXV_COUNTOF(conversion_); ++i) { - const Conversion& c = conversion_[i]; - if (c.metadataId_ == mdExif) { - Exiv2::ExifKey key(c.key1_); - if (tiff && key.groupName() != "Image") continue; - if (!tiff && key.groupName() == "Image") continue; - - if (!res.str().empty()) res << ','; - res << key.tag(); - Exiv2::ExifData::iterator pos = exifData_->findKey(key); - if (pos == exifData_->end()) continue; - DataBuf data(pos->size()); - pos->copy(data.pData_, littleEndian /* FIXME ? */); - MD5Update ( &context, data.pData_, data.size_); - } - } - MD5Final(digest, &context); - res << ';'; - res << std::setw(2) << std::setfill('0') << std::hex << std::uppercase; - for (int i = 0; i < 16; ++i) { - res << static_cast(digest[i]); - } - return res.str(); -#else - return std::string(""); -#endif - } - - void Converter::writeExifDigest() - { -#ifdef EXV_HAVE_XMP_TOOLKIT - (*xmpData_)["Xmp.tiff.NativeDigest"] = computeExifDigest(true); - (*xmpData_)["Xmp.exif.NativeDigest"] = computeExifDigest(false); -#endif - } - - void Converter::syncExifWithXmp() - { - Exiv2::XmpData::iterator td = xmpData_->findKey(XmpKey("Xmp.tiff.NativeDigest")); - Exiv2::XmpData::iterator ed = xmpData_->findKey(XmpKey("Xmp.exif.NativeDigest")); - if (td != xmpData_->end() && ed != xmpData_->end()) { - if (td->value().toString() == computeExifDigest(true) && - ed->value().toString() == computeExifDigest(false)) { - // We have both digests and the values match - // XMP is up-to-date, we should update Exif - setOverwrite(true); - setErase(false); - - cnvFromXmp(); - writeExifDigest(); - return; - } - else { - // We have both digests and the values do not match - // Exif was modified after XMP, we should update XMP - setOverwrite(true); - setErase(false); - - cnvToXmp(); - writeExifDigest(); - return; - } - } - else { - // We don't have both digests, it is probably the first conversion to XMP - setOverwrite(false); // to be safe - setErase(false); - - cnvToXmp(); - writeExifDigest(); - return; - } - } - - std::string Converter::computeIptcDigest() - { -#ifdef EXV_HAVE_XMP_TOOLKIT - std::ostringstream res; - MD5_CTX context; - unsigned char digest[16]; - - MD5Init(&context); - - DataBuf data = IptcParser::encode(*iptcData_); - MD5Update(&context, data.pData_, data.size_); - MD5Final(digest, &context); - res << std::setw(2) << std::setfill('0') << std::hex << std::uppercase; - for (int i = 0; i < 16; ++i) { - res << static_cast(digest[i]); - } - return res.str(); -#else - return std::string(""); -#endif - } - - - // ************************************************************************* - // free functions - void copyExifToXmp(const ExifData& exifData, XmpData& xmpData) - { - Converter converter(const_cast(exifData), xmpData); - converter.cnvToXmp(); - } - - void moveExifToXmp(ExifData& exifData, XmpData& xmpData) - { - Converter converter(const_cast(exifData), xmpData); - converter.setErase(); - converter.cnvToXmp(); - } - - void copyXmpToExif(const XmpData& xmpData, ExifData& exifData) - { - Converter converter(exifData, const_cast(xmpData)); - converter.cnvFromXmp(); - } - - void moveXmpToExif(XmpData& xmpData, ExifData& exifData) - { - Converter converter(exifData, const_cast(xmpData)); - converter.setErase(); - converter.cnvFromXmp(); - } - - void syncExifWithXmp(ExifData& exifData, XmpData& xmpData) - { - Converter converter(exifData, const_cast(xmpData)); - converter.syncExifWithXmp(); - } - - void copyIptcToXmp(const IptcData& iptcData, XmpData& xmpData, const char *iptcCharset) - { - if (!iptcCharset) iptcCharset = iptcData.detectCharset(); - if (!iptcCharset) iptcCharset = "ISO-8859-1"; - - Converter converter(const_cast(iptcData), xmpData, iptcCharset); - converter.cnvToXmp(); - } - - void moveIptcToXmp(IptcData& iptcData, XmpData& xmpData, const char *iptcCharset) - { - if (!iptcCharset) iptcCharset = iptcData.detectCharset(); - if (!iptcCharset) iptcCharset = "ISO-8859-1"; - Converter converter(const_cast(iptcData), xmpData, iptcCharset); - converter.setErase(); - converter.cnvToXmp(); - } - - void copyXmpToIptc(const XmpData& xmpData, IptcData& iptcData) - { - Converter converter(iptcData, const_cast(xmpData)); - converter.cnvFromXmp(); - } - - void moveXmpToIptc(XmpData& xmpData, IptcData& iptcData) - { - Converter converter(iptcData, const_cast(xmpData)); - converter.setErase(); - converter.cnvFromXmp(); - } - - bool convertStringCharset(std::string &str, const char* from, const char* to) - { - if (0 == strcmp(from, to)) return true; // nothing to do - bool ret = false; -#if defined EXV_HAVE_ICONV - ret = convertStringCharsetIconv(str, from, to); -#elif defined WIN32 && !defined __CYGWIN__ - ret = convertStringCharsetWindows(str, from, to); -#else -# ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Charset conversion required but no character mapping functionality available.\n"; -# endif -#endif - return ret; - } -} // namespace Exiv2 - -// ***************************************************************************** -// local definitions -namespace { - - using namespace Exiv2; - -#if defined WIN32 && !defined __CYGWIN__ - bool swapBytes(std::string& str) - { - // Naive byte-swapping, I'm sure this can be done more efficiently - if (str.size() & 1) { -#ifdef DEBUG - EXV_DEBUG << "swapBytes: Size " << str.size() << " of input string is not even.\n"; -#endif - return false; - } - for (unsigned int i = 0; i < str.size() / 2; ++i) { - char t = str[2 * i]; - str[2 * i] = str[2 * i + 1]; - str[2 * i + 1] = t; - } - return true; - } - - bool mb2wc(UINT cp, std::string& str) - { - if (str.empty()) return true; - int len = MultiByteToWideChar(cp, 0, str.c_str(), (int)str.size(), 0, 0); - if (len == 0) { -#ifdef DEBUG - EXV_DEBUG << "mb2wc: Failed to determine required size of output buffer.\n"; -#endif - return false; - } - std::vector out; - out.resize(len * 2); - int ret = MultiByteToWideChar(cp, 0, str.c_str(), (int)str.size(), (LPWSTR)&out[0], len * 2); - if (ret == 0) { -#ifdef DEBUG - EXV_DEBUG << "mb2wc: Failed to convert the input string to a wide character string.\n"; -#endif - return false; - } - str.assign(out.begin(), out.end()); - return true; - } - - bool wc2mb(UINT cp, std::string& str) - { - if (str.empty()) return true; - if (str.size() & 1) { -#ifdef DEBUG - EXV_DEBUG << "wc2mb: Size " << str.size() << " of input string is not even.\n"; -#endif - return false; - } - int len = WideCharToMultiByte(cp, 0, (LPCWSTR)str.data(), (int)str.size() / 2, 0, 0, 0, 0); - if (len == 0) { -#ifdef DEBUG - EXV_DEBUG << "wc2mb: Failed to determine required size of output buffer.\n"; -#endif - return false; - } - std::vector out; - out.resize(len); - int ret = WideCharToMultiByte(cp, 0, (LPCWSTR)str.data(), (int)str.size() / 2, (LPSTR)&out[0], len, 0, 0); - if (ret == 0) { -#ifdef DEBUG - EXV_DEBUG << "wc2mb: Failed to convert the input string to a multi byte string.\n"; -#endif - return false; - } - str.assign(out.begin(), out.end()); - return true; - } - - bool utf8ToUcs2be(std::string& str) - { - bool ret = mb2wc(CP_UTF8, str); - if (ret) ret = swapBytes(str); - return ret; - } - - bool utf8ToUcs2le(std::string& str) - { - return mb2wc(CP_UTF8, str); - } - - bool ucs2beToUtf8(std::string& str) - { - bool ret = swapBytes(str); - if (ret) ret = wc2mb(CP_UTF8, str); - return ret; - } - - bool ucs2beToUcs2le(std::string& str) - { - return swapBytes(str); - } - - bool ucs2leToUtf8(std::string& str) - { - return wc2mb(CP_UTF8, str); - } - - bool ucs2leToUcs2be(std::string& str) - { - return swapBytes(str); - } - - bool iso88591ToUtf8(std::string& str) - { - bool ret = mb2wc(28591, str); - if (ret) ret = wc2mb(CP_UTF8, str); - return ret; - } - - bool asciiToUtf8(std::string& /*str*/) - { - // nothing to do - return true; - } - - typedef bool (*ConvFct)(std::string& str); - - struct ConvFctList { - bool operator==(std::pair fromTo) const - { return 0 == strcmp(from_, fromTo.first) && 0 == strcmp(to_, fromTo.second); } - const char* from_; - const char* to_; - ConvFct convFct_; - }; - - const ConvFctList convFctList[] = { - { "UTF-8", "UCS-2BE", utf8ToUcs2be }, - { "UTF-8", "UCS-2LE", utf8ToUcs2le }, - { "UCS-2BE", "UTF-8", ucs2beToUtf8 }, - { "UCS-2BE", "UCS-2LE", ucs2beToUcs2le }, - { "UCS-2LE", "UTF-8", ucs2leToUtf8 }, - { "UCS-2LE", "UCS-2BE", ucs2leToUcs2be }, - { "ISO-8859-1", "UTF-8", iso88591ToUtf8 }, - { "ASCII", "UTF-8", asciiToUtf8 } - // Update the convertStringCharset() documentation if you add more here! - }; - - bool convertStringCharsetWindows(std::string& str, const char* from, const char* to) - { - bool ret = false; - const ConvFctList* p = find(convFctList, std::make_pair(from, to)); - std::string tmpstr = str; - if (p) ret = p->convFct_(tmpstr); -#ifndef SUPPRESS_WARNINGS - else { - EXV_WARNING << "No Windows function to map character string from " << from << " to " << to << " available.\n"; - } -#endif - if (ret) str = tmpstr; - return ret; - } - -#endif // defined WIN32 && !defined __CYGWIN__ -#if defined EXV_HAVE_ICONV - bool convertStringCharsetIconv(std::string& str, const char* from, const char* to) - { - if (0 == strcmp(from, to)) return true; // nothing to do - - bool ret = true; - iconv_t cd; - cd = iconv_open(to, from); - if (cd == (iconv_t)(-1)) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "iconv_open: " << strError() << "\n"; -#endif - return false; - } - std::string outstr; - EXV_ICONV_CONST char* inptr = const_cast(str.c_str()); - size_t inbytesleft = str.length(); - while (inbytesleft) { - char outbuf[256]; - char* outptr = outbuf; - size_t outbytesleft = sizeof(outbuf); - size_t rc = iconv(cd, - &inptr, - &inbytesleft, - &outptr, - &outbytesleft); - int outbytesProduced = sizeof(outbuf) - outbytesleft; - if (rc == size_t(-1) && errno != E2BIG) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "iconv: " << strError() - << " inbytesleft = " << inbytesleft << "\n"; -#endif - ret = false; - break; - } - outstr.append(std::string(outbuf, outbytesProduced)); - } - if (cd != (iconv_t)(-1)) { - iconv_close(cd); - } - - if (ret) str = outstr; - return ret; - } - -#endif // EXV_HAVE_ICONV - bool getTextValue(std::string& value, const XmpData::iterator& pos) - { - if (pos->typeId() == langAlt) { - // get the default language entry without x-default qualifier - value = pos->toString(0); - if (!pos->value().ok() && pos->count() == 1) { - // If there is no default but exactly one entry, take that - // without the qualifier - value = pos->toString(); - if ( pos->value().ok() - && value.length() > 5 && value.substr(0, 5) == "lang=") { - std::string::size_type pos = value.find_first_of(' '); - if (pos != std::string::npos) { - value = value.substr(pos + 1); - } - else { - value.clear(); - } - } - } - } - else { - value = pos->toString(); - } - return pos->value().ok(); - } - -} diff --git a/platform/win32/msvc/external/exiv2/src/convert.hpp b/platform/win32/msvc/external/exiv2/src/convert.hpp deleted file mode 100644 index 94fffe5c127..00000000000 --- a/platform/win32/msvc/external/exiv2/src/convert.hpp +++ /dev/null @@ -1,120 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file convert.hpp - @brief Exif and IPTC conversions to and from XMP - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net
- Vladimir Nadvornik (vn) - nadvornik@suse.cz - @date 17-Mar-08, ahu: created basic converter framework
- 20-May-08, vn: added actual conversion logic - */ -#ifndef CONVERT_HPP_ -#define CONVERT_HPP_ - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -// + standard includes -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class declarations - class ExifData; - class IptcData; - class XmpData; - -// ***************************************************************************** -// free functions, template and inline definitions - - //! Convert (copy) Exif tags to XMP properties. - EXIV2API void copyExifToXmp(const ExifData& exifData, XmpData& xmpData); - //! Convert (move) Exif tags to XMP properties, remove converted Exif tags. - EXIV2API void moveExifToXmp(ExifData& exifData, XmpData& xmpData); - - //! Convert (copy) XMP properties to Exif tags. - EXIV2API void copyXmpToExif(const XmpData& xmpData, ExifData& exifData); - //! Convert (move) XMP properties to Exif tags, remove converted XMP properties. - EXIV2API void moveXmpToExif(XmpData& xmpData, ExifData& exifData); - - //! Detect which metadata are newer and perform a copy in appropriate direction. - EXIV2API void syncExifWithXmp(ExifData& exifData, XmpData& xmpData); - - //! Convert (copy) IPTC datasets to XMP properties. - EXIV2API void copyIptcToXmp(const IptcData& iptcData, XmpData& xmpData, const char *iptcCharset = 0); - //! Convert (move) IPTC datasets to XMP properties, remove converted IPTC datasets. - EXIV2API void moveIptcToXmp(IptcData& iptcData, XmpData& xmpData, const char *iptcCharset = 0); - - //! Convert (copy) XMP properties to IPTC datasets. - EXIV2API void copyXmpToIptc(const XmpData& xmpData, IptcData& iptcData); - //! Convert (move) XMP properties to IPTC tags, remove converted XMP properties. - EXIV2API void moveXmpToIptc(XmpData& xmpData, IptcData& iptcData); - - /*! - @brief Convert character encoding of \em str from \em from to \em to. - If the function succeeds, \em str contains the result string. - - This function uses the iconv library, if the %Exiv2 library was compiled - with iconv support. Otherwise, on Windows, it uses Windows functions to - support a limited number of conversions and fails with a warning if an - unsupported conversion is attempted. If the function is called but %Exiv2 - was not compiled with iconv support and can't use Windows functions, it - fails with a warning. - - The conversions supported on Windows without iconv are: - - - - - - - - - - - -
fromto
UTF-8 UCS-2BE
UTF-8 UCS-2LE
UCS-2BE UTF-8
UCS-2BE UCS-2LE
UCS-2LE UTF-8
UCS-2LE UCS-2BE
ISO-8859-1UTF-8
ASCII UTF-8
- - @param str The string to convert. It is updated to the converted string, - which may have a different size. If the function call fails, - the string is not modified. - @param from Charset in which the input string is encoded as a name - understood by \c iconv_open(3). - @param to Charset to convert the string to as a name - understood by \c iconv_open(3). - @return Return \c true if the conversion was successful, else \c false. - */ - EXIV2API bool convertStringCharset(std::string& str, const char* from, const char* to); - -} // namespace Exiv2 - -#endif // #ifndef CONVERT_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/cr2image.cpp b/platform/win32/msvc/external/exiv2/src/cr2image.cpp deleted file mode 100644 index 1feb92fd88d..00000000000 --- a/platform/win32/msvc/external/exiv2/src/cr2image.cpp +++ /dev/null @@ -1,303 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: cr2image.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - History: 22-Apr-06, ahu: created - - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: cr2image.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#include "cr2image.hpp" -#include "cr2image_int.hpp" -#include "tiffcomposite_int.hpp" -#include "tiffimage_int.hpp" -#include "image.hpp" -#include "error.hpp" -#include "futils.hpp" -#include "i18n.h" // NLS support. - -// + standard includes -#include -#include -#include -#include - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - using namespace Internal; - - Cr2Image::Cr2Image(BasicIo::AutoPtr io, bool /*create*/) - : Image(ImageType::cr2, mdExif | mdIptc | mdXmp, io) - { - } // Cr2Image::Cr2Image - - std::string Cr2Image::mimeType() const - { - return "image/x-canon-cr2"; - } - - int Cr2Image::pixelWidth() const - { - ExifData::const_iterator imageWidth = exifData_.findKey(Exiv2::ExifKey("Exif.Photo.PixelXDimension")); - if (imageWidth != exifData_.end() && imageWidth->count() > 0) { - return imageWidth->toLong(); - } - return 0; - } - - int Cr2Image::pixelHeight() const - { - ExifData::const_iterator imageHeight = exifData_.findKey(Exiv2::ExifKey("Exif.Photo.PixelYDimension")); - if (imageHeight != exifData_.end() && imageHeight->count() > 0) { - return imageHeight->toLong(); - } - return 0; - } - - void Cr2Image::setComment(const std::string& /*comment*/) - { - // not supported - throw(Error(32, "Image comment", "CR2")); - } - - void Cr2Image::readMetadata() - { -#ifdef DEBUG - std::cerr << "Reading CR2 file " << io_->path() << "\n"; -#endif - if (io_->open() != 0) { - throw Error(9, io_->path(), strError()); - } - IoCloser closer(*io_); - // Ensure that this is the correct image type - if (!isCr2Type(*io_, false)) { - if (io_->error() || io_->eof()) throw Error(14); - throw Error(3, "CR2"); - } - clearMetadata(); - ByteOrder bo = Cr2Parser::decode(exifData_, - iptcData_, - xmpData_, - io_->mmap(), - io_->size()); - setByteOrder(bo); - } // Cr2Image::readMetadata - - void Cr2Image::writeMetadata() - { -#ifdef DEBUG - std::cerr << "Writing CR2 file " << io_->path() << "\n"; -#endif - ByteOrder bo = byteOrder(); - byte* pData = 0; - long size = 0; - IoCloser closer(*io_); - if (io_->open() == 0) { - // Ensure that this is the correct image type - if (isCr2Type(*io_, false)) { - pData = io_->mmap(true); - size = io_->size(); - Cr2Header cr2Header; - if (0 == cr2Header.read(pData, 16)) { - bo = cr2Header.byteOrder(); - } - } - } - if (bo == invalidByteOrder) { - bo = littleEndian; - } - setByteOrder(bo); - Cr2Parser::encode(*io_, pData, size, bo, exifData_, iptcData_, xmpData_); // may throw - } // Cr2Image::writeMetadata - - ByteOrder Cr2Parser::decode( - ExifData& exifData, - IptcData& iptcData, - XmpData& xmpData, - const byte* pData, - uint32_t size - ) - { - Cr2Header cr2Header; - return TiffParserWorker::decode(exifData, - iptcData, - xmpData, - pData, - size, - Tag::root, - TiffMapping::findDecoder, - &cr2Header); - } - - WriteMethod Cr2Parser::encode( - BasicIo& io, - const byte* pData, - uint32_t size, - ByteOrder byteOrder, - const ExifData& exifData, - const IptcData& iptcData, - const XmpData& xmpData - ) - { - // Copy to be able to modify the Exif data - ExifData ed = exifData; - - // Delete IFDs which do not occur in TIFF images - static const IfdId filteredIfds[] = { - panaRawId - }; - for (unsigned int i = 0; i < EXV_COUNTOF(filteredIfds); ++i) { -#ifdef DEBUG - std::cerr << "Warning: Exif IFD " << filteredIfds[i] << " not encoded\n"; -#endif - ed.erase(std::remove_if(ed.begin(), - ed.end(), - FindExifdatum(filteredIfds[i])), - ed.end()); - } - - std::auto_ptr header(new Cr2Header(byteOrder)); - OffsetWriter offsetWriter; - offsetWriter.setOrigin(OffsetWriter::cr2RawIfdOffset, Cr2Header::offset2addr(), byteOrder); - return TiffParserWorker::encode(io, - pData, - size, - ed, - iptcData, - xmpData, - Tag::root, - TiffMapping::findEncoder, - header.get(), - &offsetWriter); - } - - // ************************************************************************* - // free functions - Image::AutoPtr newCr2Instance(BasicIo::AutoPtr io, bool create) - { - Image::AutoPtr image(new Cr2Image(io, create)); - if (!image->good()) { - image.reset(); - } - return image; - } - - bool isCr2Type(BasicIo& iIo, bool advance) - { - const int32_t len = 16; - byte buf[len]; - iIo.read(buf, len); - if (iIo.error() || iIo.eof()) { - return false; - } - Cr2Header header; - bool rc = header.read(buf, len); - if (!advance || !rc) { - iIo.seek(-len, BasicIo::cur); - } - return rc; - } - -} // namespace Exiv2 - -namespace Exiv2 { - namespace Internal { - - const char* Cr2Header::cr2sig_ = "CR\2\0"; - - Cr2Header::Cr2Header(ByteOrder byteOrder) - : TiffHeaderBase(42, 16, byteOrder, 0x00000010), - offset2_(0x00000000) - { - } - - Cr2Header::~Cr2Header() - { - } - - bool Cr2Header::read(const byte* pData, uint32_t size) - { - if (size < 16) return false; - - if (pData[0] == 0x49 && pData[1] == 0x49) { - setByteOrder(littleEndian); - } - else if (pData[0] == 0x4d && pData[1] == 0x4d) { - setByteOrder(bigEndian); - } - else { - return false; - } - if (tag() != getUShort(pData + 2, byteOrder())) return false; - setOffset(getULong(pData + 4, byteOrder())); - if (0 != memcmp(pData + 8, cr2sig_, 4)) return false; - offset2_ = getULong(pData + 12, byteOrder()); - - return true; - } // Cr2Header::read - - DataBuf Cr2Header::write() const - { - DataBuf buf(16); - switch (byteOrder()) { - case littleEndian: - buf.pData_[0] = 0x49; - buf.pData_[1] = 0x49; - break; - case bigEndian: - buf.pData_[0] = 0x4d; - buf.pData_[1] = 0x4d; - break; - case invalidByteOrder: - assert(false); - break; - } - us2Data(buf.pData_ + 2, tag(), byteOrder()); - ul2Data(buf.pData_ + 4, 0x00000010, byteOrder()); - memcpy(buf.pData_ + 8, cr2sig_, 4); - // Write a dummy value for the RAW IFD offset. The offset-writer is used to set this offset in a second pass. - ul2Data(buf.pData_ + 12, 0x00000000, byteOrder()); - return buf; - } // Cr2Header::write - - bool Cr2Header::isImageTag(uint16_t tag, IfdId group, const PrimaryGroups* /*pPrimaryGroups*/) const - { - // CR2 image tags are all IFD2 and IFD3 tags - if (group == ifd2Id || group == ifd3Id) return true; - // ...and any (IFD0) tag that is in the TIFF image tags list - return isTiffImageTag(tag, group); - } - -}} // namespace Internal, Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/cr2image.hpp b/platform/win32/msvc/external/exiv2/src/cr2image.hpp deleted file mode 100644 index 0b7c6b15083..00000000000 --- a/platform/win32/msvc/external/exiv2/src/cr2image.hpp +++ /dev/null @@ -1,160 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file cr2image.hpp - @brief Class Cr2Image - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 22-Apr-06, ahu: created - */ -#ifndef CR2IMAGE_HPP_ -#define CR2IMAGE_HPP_ - -// ***************************************************************************** -// included header files -#include "image.hpp" -#include "basicio.hpp" -#include "types.hpp" - -// + standard includes -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class definitions - - // Add CR2 to the supported image formats - namespace ImageType { - const int cr2 = 7; //!< CR2 image type (see class Cr2Image) - } - - /*! - @brief Class to access raw Canon CR2 images. Exif metadata - is supported directly, IPTC is read from the Exif data, if present. - */ - class EXIV2API Cr2Image : public Image { - public: - //! @name Creators - //@{ - /*! - @brief Constructor that can either open an existing CR2 image or create - a new image from scratch. If a new image is to be created, any - existing data is overwritten. Since the constructor can not return - a result, callers should check the good() method after object - construction to determine success or failure. - @param io An auto-pointer that owns a BasicIo instance used for - reading and writing image metadata. \b Important: The constructor - takes ownership of the passed in BasicIo instance through the - auto-pointer. Callers should not continue to use the BasicIo - instance after it is passed to this method. Use the Image::io() - method to get a temporary reference. - @param create Specifies if an existing image should be read (false) - or if a new file should be created (true). - */ - Cr2Image(BasicIo::AutoPtr io, bool create); - //@} - - //! @name Manipulators - //@{ - void readMetadata(); - void writeMetadata(); - /*! - @brief Not supported. CR2 format does not contain a comment. - Calling this function will throw an Error(32). - */ - void setComment(const std::string& comment); - //@} - - //! @name Accessors - //@{ - std::string mimeType() const; - int pixelWidth() const; - int pixelHeight() const; - //@} - - private: - //! @name NOT implemented - //@{ - //! Copy constructor - Cr2Image(const Cr2Image& rhs); - //! Assignment operator - Cr2Image& operator=(const Cr2Image& rhs); - //@} - - }; // class Cr2Image - - /*! - @brief Stateless parser class for data in CR2 format. Images use this - class to decode and encode CR2 data. - See class TiffParser for details. - */ - class EXIV2API Cr2Parser { - public: - /*! - @brief Decode metadata from a buffer \em pData of length \em size - with data in CR2 format to the provided metadata containers. - See TiffParser::decode(). - */ - static ByteOrder decode( - ExifData& exifData, - IptcData& iptcData, - XmpData& xmpData, - const byte* pData, - uint32_t size - ); - /*! - @brief Encode metadata from the provided metadata to CR2 format. - See TiffParser::encode(). - */ - static WriteMethod encode( - BasicIo& io, - const byte* pData, - uint32_t size, - ByteOrder byteOrder, - const ExifData& exifData, - const IptcData& iptcData, - const XmpData& xmpData - ); - - }; // class Cr2Parser - -// ***************************************************************************** -// template, inline and free functions - - // These could be static private functions on Image subclasses but then - // ImageFactory needs to be made a friend. - /*! - @brief Create a new Cr2Image instance and return an auto-pointer to it. - Caller owns the returned object and the auto-pointer ensures that - it will be deleted. - */ - EXIV2API Image::AutoPtr newCr2Instance(BasicIo::AutoPtr io, bool create); - - //! Check if the file iIo is a CR2 image. - EXIV2API bool isCr2Type(BasicIo& iIo, bool advance); - -} // namespace Exiv2 - -#endif // #ifndef CR2IMAGE_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/cr2image_int.hpp b/platform/win32/msvc/external/exiv2/src/cr2image_int.hpp deleted file mode 100644 index 2d24baa1847..00000000000 --- a/platform/win32/msvc/external/exiv2/src/cr2image_int.hpp +++ /dev/null @@ -1,85 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file cr2image_int.hpp - @brief Internal classes to support CR2 image format - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 23-Apr-08, ahu: created - */ -#ifndef CR2IMAGE_INT_HPP_ -#define CR2IMAGE_INT_HPP_ - -// ***************************************************************************** -// included header files -#include "tiffimage_int.hpp" -#include "types.hpp" - -// + standard includes -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - namespace Internal { - -// ***************************************************************************** -// class definitions - - /*! - @brief Canon CR2 header structure. - */ - class Cr2Header : public TiffHeaderBase { - public: - //! @name Creators - //@{ - //! Default constructor - Cr2Header(ByteOrder byteOrder =littleEndian); - //! Destructor. - ~Cr2Header(); - //@} - - //! @name Manipulators - //@{ - bool read(const byte* pData, uint32_t size); - //@} - - //! @name Accessors - //@{ - DataBuf write() const; - bool isImageTag( uint16_t tag, - IfdId group, - const PrimaryGroups* pPrimaryGroups) const; - //@} - - //! Return the address of offset2 from the start of the header - static uint32_t offset2addr() { return 12; } - - private: - // DATA - uint32_t offset2_; //!< Bytes 12-15 from the header - static const char* cr2sig_; //!< Signature for CR2 type TIFF - }; // class Cr2Header - -}} // namespace Internal, Exiv2 - -#endif // #ifndef CR2IMAGE_INT_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/crwedit.cpp b/platform/win32/msvc/external/exiv2/src/crwedit.cpp deleted file mode 100644 index 29597c47eb5..00000000000 --- a/platform/win32/msvc/external/exiv2/src/crwedit.cpp +++ /dev/null @@ -1,133 +0,0 @@ -// ***************************************************************** -*- C++ -*- -// crwedit.cpp, $Rev: 1560 $ -// Print the CIFF structure of a CRW file - -#include "crwimage.hpp" -#include "crwimage_int.hpp" -#include "futils.hpp" - -#include -#include -#include - -void remove(Exiv2::Internal::CiffHeader* pHead); -void add(Exiv2::Internal::CiffHeader* pHead); -void help(); -void write(const std::string& filename, const Exiv2::Internal::CiffHeader* pHead); - -int main(int argc, char* const argv[]) -try { - if (argc != 2) { - std::cout << "Usage: " << argv[0] << " file\n"; - std::cout << "Edit the CIFF structure of a CRW file\n"; - return 1; - } - - std::string filename(argv[1]); - Exiv2::FileIo io(filename); - if(io.open() != 0) { - throw Exiv2::Error(9, io.path(), Exiv2::strError()); - } - Exiv2::IoCloser closer(io); - - // Ensure that this is a CRW image - if (!Exiv2::isCrwType(io, false)) { - if (io.error() || io.eof()) throw Exiv2::Error(14); - throw Exiv2::Error(33); - } - - // Read the image into a memory buffer - long len = io.size(); - Exiv2::DataBuf buf(len); - io.read(buf.pData_, len); - if (io.error() || io.eof()) throw Exiv2::Error(14); - - // Parse the image, starting with a CIFF header component - Exiv2::Internal::CiffHeader::AutoPtr parseTree(new Exiv2::Internal::CiffHeader); - parseTree->read(buf.pData_, buf.size_); - - // Allow user to make changes - bool go = true; - while (go) { - char cmd; - std::cout << "command> "; - std::cin >> cmd; - switch (cmd) { - case 'q': go = false; break; - case 'p': parseTree->print(std::cout); break; - case 'a': add(parseTree.get()); break; - case 'd': remove(parseTree.get()); break; - case 'w': write(filename, parseTree.get()); break; - case 'h': help(); break; - } - } - - return 0; -} -catch (Exiv2::AnyError& e) { - std::cerr << e << "\n"; - return -1; -} - -void write(const std::string& filename, const Exiv2::Internal::CiffHeader* pHead) -{ - Exiv2::Blob blob; - pHead->write(blob); - - Exiv2::FileIo io(filename); - if(io.open("wb") != 0) { - throw Exiv2::Error(9, io.path(), Exiv2::strError()); - } - Exiv2::IoCloser closer(io); - long ret = io.write(&blob[0], blob.size()); - if (static_cast(ret) != blob.size()) throw Exiv2::Error(21); - io.close(); -} - -void remove(Exiv2::Internal::CiffHeader* pHead) -{ - uint16_t crwTag, crwDir; - std::cout << "crwTag> 0x"; - std::cin >> std::hex >> crwTag; - std::cout << "crwDir> 0x"; - std::cin >> std::hex >> crwDir; - std::cout << "Deleting tag 0x" << std::hex << crwTag - << " in dir 0x" << crwDir << ", ok? "; - char cmd; - std::cin >> cmd; - if (cmd != 'n' && cmd != 'N') { - pHead->remove(crwTag, crwDir); - } - else { - std::cout << "Canceled.\n"; - } -} - -void add(Exiv2::Internal::CiffHeader* pHead) -{ - uint16_t crwTag, crwDir; - uint32_t size; - std::cout << "crwTag> 0x"; - std::cin >> std::hex >> crwTag; - std::cout << "crwDir> 0x"; - std::cin >> std::hex >> crwDir; - std::cout << "size> "; - std::cin >> std::dec >> size; - std::cout << "Adding tag 0x" << std::hex << crwTag - << " in dir 0x" << crwDir << ", " << size << " bytes, ok? "; - char cmd; - std::cin >> cmd; - if (cmd != 'n' && cmd != 'N') { - Exiv2::DataBuf buf(size); - std::memset(buf.pData_, 0xaa, size); - pHead->add(crwTag, crwDir, buf); - } - else { - std::cout << "Canceled.\n"; - } -} - -void help() -{ - std::cout << "a: add tag, d: delete tag, p: print tags, w: write file, q: quit\n"; -} diff --git a/platform/win32/msvc/external/exiv2/src/crwimage.cpp b/platform/win32/msvc/external/exiv2/src/crwimage.cpp deleted file mode 100644 index 6cd883216d8..00000000000 --- a/platform/win32/msvc/external/exiv2/src/crwimage.cpp +++ /dev/null @@ -1,1431 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: crwimage.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - History: 28-Aug-05, ahu: created - - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: crwimage.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// Define DEBUG to output debug information to std::cerr, e.g, by calling make -// like this: make DEFS=-DDEBUG crwimage.o -//#define DEBUG 1 - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#include "crwimage.hpp" -#include "crwimage_int.hpp" -#include "error.hpp" -#include "futils.hpp" -#include "value.hpp" -#include "tags.hpp" -#include "tags_int.hpp" -#include "canonmn_int.hpp" -#include "i18n.h" // NLS support. - -// + standard includes -#include -#include -#include -#include -#include -#include -#include -#include -#ifndef EXV_HAVE_TIMEGM -# include "timegm.h" -#endif - -// ***************************************************************************** -// local declarations -namespace { - //! Helper class to map Exif orientation values to CRW rotation degrees - class RotationMap { - public: - //! Get the orientation number for a degree value - static uint16_t orientation(int32_t degrees); - //! Get the degree value for an orientation number - static int32_t degrees(uint16_t orientation); - private: - //! Helper structure for the mapping list - struct OmList { - uint16_t orientation; //!< Exif orientation value - int32_t degrees; //!< CRW Rotation degrees - }; - // DATA - static const OmList omList_[]; - }; // class RotationMap -} - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - using namespace Internal; - - CrwImage::CrwImage(BasicIo::AutoPtr io, bool /*create*/) - : Image(ImageType::crw, mdExif | mdComment, io) - { - } // CrwImage::CrwImage - - std::string CrwImage::mimeType() const - { - return "image/x-canon-crw"; - } - - int CrwImage::pixelWidth() const - { - Exiv2::ExifData::const_iterator widthIter = exifData_.findKey(Exiv2::ExifKey("Exif.Photo.PixelXDimension")); - if (widthIter != exifData_.end() && widthIter->count() > 0) { - return widthIter->toLong(); - } - return 0; - } - - int CrwImage::pixelHeight() const - { - Exiv2::ExifData::const_iterator heightIter = exifData_.findKey(Exiv2::ExifKey("Exif.Photo.PixelYDimension")); - if (heightIter != exifData_.end() && heightIter->count() > 0) { - return heightIter->toLong(); - } - return 0; - } - - void CrwImage::setIptcData(const IptcData& /*iptcData*/) - { - // not supported - throw(Error(32, "IPTC metadata", "CRW")); - } - - void CrwImage::readMetadata() - { -#ifdef DEBUG - std::cerr << "Reading CRW file " << io_->path() << "\n"; -#endif - if (io_->open() != 0) { - throw Error(9, io_->path(), strError()); - } - IoCloser closer(*io_); - // Ensure that this is the correct image type - if (!isCrwType(*io_, false)) { - if (io_->error() || io_->eof()) throw Error(14); - throw Error(33); - } - clearMetadata(); - CrwParser::decode(this, io_->mmap(), io_->size()); - - } // CrwImage::readMetadata - - void CrwImage::writeMetadata() - { -#ifdef DEBUG - std::cerr << "Writing CRW file " << io_->path() << "\n"; -#endif - // Read existing image - DataBuf buf; - if (io_->open() == 0) { - IoCloser closer(*io_); - // Ensure that this is the correct image type - if (isCrwType(*io_, false)) { - // Read the image into a memory buffer - buf.alloc(io_->size()); - io_->read(buf.pData_, buf.size_); - if (io_->error() || io_->eof()) { - buf.reset(); - } - } - } - - Blob blob; - CrwParser::encode(blob, buf.pData_, buf.size_, this); - - // Write new buffer to file - BasicIo::AutoPtr tempIo(io_->temporary()); // may throw - assert(tempIo.get() != 0); - tempIo->write((blob.size() > 0 ? &blob[0] : 0), static_cast(blob.size())); - io_->close(); - io_->transfer(*tempIo); // may throw - - } // CrwImage::writeMetadata - - void CrwParser::decode(CrwImage* pCrwImage, const byte* pData, uint32_t size) - { - assert(pCrwImage != 0); - assert(pData != 0); - - // Parse the image, starting with a CIFF header component - CiffHeader::AutoPtr head(new CiffHeader); - head->read(pData, size); -#ifdef DEBUG - head->print(std::cerr); -#endif - head->decode(*pCrwImage); - - // a hack to get absolute offset of preview image inside CRW structure - CiffComponent* preview = head->findComponent(0x2007, 0x0000); - if (preview) { - (pCrwImage->exifData())["Exif.Image2.JPEGInterchangeFormat"] = uint32_t(preview->pData() - pData); - (pCrwImage->exifData())["Exif.Image2.JPEGInterchangeFormatLength"] = preview->size(); - } - } // CrwParser::decode - - void CrwParser::encode( - Blob& blob, - const byte* pData, - uint32_t size, - const CrwImage* pCrwImage - ) - { - // Parse image, starting with a CIFF header component - CiffHeader::AutoPtr head(new CiffHeader); - if (size != 0) { - head->read(pData, size); - } - - // Encode Exif tags from image into the CRW parse tree and write the - // structure to the binary image blob - CrwMap::encode(head.get(), *pCrwImage); - head->write(blob); - - } // CrwParser::encode - - // ************************************************************************* - // free functions - Image::AutoPtr newCrwInstance(BasicIo::AutoPtr io, bool create) - { - Image::AutoPtr image(new CrwImage(io, create)); - if (!image->good()) { - image.reset(); - } - return image; - } - - bool isCrwType(BasicIo& iIo, bool advance) - { - bool result = true; - byte tmpBuf[14]; - iIo.read(tmpBuf, 14); - if (iIo.error() || iIo.eof()) { - return false; - } - if (!( ('I' == tmpBuf[0] && 'I' == tmpBuf[1]) - || ('M' == tmpBuf[0] && 'M' == tmpBuf[1]))) { - result = false; - } - if ( true == result - && std::memcmp(tmpBuf + 6, CiffHeader::signature(), 8) != 0) { - result = false; - } - if (!advance || !result) iIo.seek(-14, BasicIo::cur); - return result; - } - -} // namespace Exiv2 - -namespace Exiv2 { - namespace Internal { - - /* - Mapping table used to decode and encode CIFF tags to/from Exif tags. Only - a subset of the Exif tags can be mapped to known tags found in CRW files - and not all CIFF tags in the CRW files have a corresponding Exif tag. Tags - which are not mapped in the table below are ignored. - - When decoding, each CIFF tag/directory pair in the CRW image is looked up - in the table and if it has an entry, the corresponding decode function is - called (CrwMap::decode). This function may or may not make use of the - other parameters in the structure (such as the Exif tag and Ifd id). - - Encoding is done in a loop over the mapping table (CrwMap::encode). For - each entry, the encode function is called, which looks up the (Exif) - metadata to encode in the image. This function may or may not make use of - the other parameters in the mapping structure. - */ - const CrwMapping CrwMap::crwMapping_[] = { - // CrwTag CrwDir Size ExifTag IfdId decodeFct encodeFct - // ------ ------ ---- ------- ----- --------- --------- - CrwMapping(0x0805, 0x300a, 0, 0, canonId, decode0x0805, encode0x0805), - CrwMapping(0x080a, 0x2807, 0, 0, canonId, decode0x080a, encode0x080a), - CrwMapping(0x080b, 0x3004, 0, 0x0007, canonId, decodeBasic, encodeBasic), - CrwMapping(0x0810, 0x2807, 0, 0x0009, canonId, decodeBasic, encodeBasic), - CrwMapping(0x0815, 0x2804, 0, 0x0006, canonId, decodeBasic, encodeBasic), - CrwMapping(0x1029, 0x300b, 0, 0x0002, canonId, decodeBasic, encodeBasic), - CrwMapping(0x102a, 0x300b, 0, 0x0004, canonId, decodeArray, encodeArray), - CrwMapping(0x102d, 0x300b, 0, 0x0001, canonId, decodeArray, encodeArray), - CrwMapping(0x1033, 0x300b, 0, 0x000f, canonId, decodeArray, encodeArray), - CrwMapping(0x1038, 0x300b, 0, 0x0012, canonId, decodeArray, encodeArray), - CrwMapping(0x10a9, 0x300b, 0, 0x00a9, canonId, decodeBasic, encodeBasic), - // Mapped to Exif.Photo.ColorSpace instead (see below) - //CrwMapping(0x10b4, 0x300b, 0, 0x00b4, canonId, decodeBasic, encodeBasic), - CrwMapping(0x10b4, 0x300b, 0, 0xa001, exifId, decodeBasic, encodeBasic), - CrwMapping(0x10b5, 0x300b, 0, 0x00b5, canonId, decodeBasic, encodeBasic), - CrwMapping(0x10c0, 0x300b, 0, 0x00c0, canonId, decodeBasic, encodeBasic), - CrwMapping(0x10c1, 0x300b, 0, 0x00c1, canonId, decodeBasic, encodeBasic), - CrwMapping(0x1807, 0x3002, 0, 0x9206, exifId, decodeBasic, encodeBasic), - CrwMapping(0x180b, 0x3004, 0, 0x000c, canonId, decodeBasic, encodeBasic), - CrwMapping(0x180e, 0x300a, 0, 0x9003, exifId, decode0x180e, encode0x180e), - CrwMapping(0x1810, 0x300a, 0, 0xa002, exifId, decode0x1810, encode0x1810), - CrwMapping(0x1817, 0x300a, 4, 0x0008, canonId, decodeBasic, encodeBasic), - //CrwMapping(0x1818, 0x3002, 0, 0x9204, exifId, decodeBasic, encodeBasic), - CrwMapping(0x183b, 0x300b, 0, 0x0015, canonId, decodeBasic, encodeBasic), - CrwMapping(0x2008, 0x0000, 0, 0, ifd1Id, decode0x2008, encode0x2008), - // End of list marker - CrwMapping(0x0000, 0x0000, 0, 0x0000, ifdIdNotSet, 0, 0) - }; // CrwMap::crwMapping_[] - - /* - CIFF directory hierarchy - - root - | - 300a - | - +----+----+----+----+ - | | | | | - 2804 2807 3002 3003 300b - | - 3004 - - The array is arranged bottom-up so that starting with a directory at the - bottom, the (unique) path to root can be determined in a single loop. - */ - const CrwSubDir CrwMap::crwSubDir_[] = { - // dir, parent - { 0x3004, 0x2807 }, - { 0x300b, 0x300a }, - { 0x3003, 0x300a }, - { 0x3002, 0x300a }, - { 0x2807, 0x300a }, - { 0x2804, 0x300a }, - { 0x300a, 0x0000 }, - { 0x0000, 0xffff }, - // End of list marker - { 0xffff, 0xffff } - }; - - const char CiffHeader::signature_[] = "HEAPCCDR"; - - CiffHeader::~CiffHeader() - { - delete pRootDir_; - delete[] pPadding_; - } - - CiffComponent::~CiffComponent() - { - if (isAllocated_) delete[] pData_; - } - - CiffEntry::~CiffEntry() - { - } - - CiffDirectory::~CiffDirectory() - { - Components::iterator b = components_.begin(); - Components::iterator e = components_.end(); - for (Components::iterator i = b; i != e; ++i) { - delete *i; - } - } - - void CiffComponent::add(AutoPtr component) - { - doAdd(component); - } - - void CiffEntry::doAdd(AutoPtr /*component*/) - { - throw Error(34, "CiffEntry::add"); - } // CiffEntry::doAdd - - void CiffDirectory::doAdd(AutoPtr component) - { - components_.push_back(component.release()); - } // CiffDirectory::doAdd - - void CiffHeader::read(const byte* pData, uint32_t size) - { - if (size < 14) throw Error(33); - - if (pData[0] == 0x49 && pData[1] == 0x49) { - byteOrder_ = littleEndian; - } - else if (pData[0] == 0x4d && pData[1] == 0x4d) { - byteOrder_ = bigEndian; - } - else { - throw Error(33); - } - offset_ = getULong(pData + 2, byteOrder_); - if (offset_ < 14 || offset_ > size) throw Error(33); - if (std::memcmp(pData + 6, signature(), 8) != 0) { - throw Error(33); - } - - delete pPadding_; - pPadding_ = new byte[offset_ - 14]; - padded_ = offset_ - 14; - std::memcpy(pPadding_, pData + 14, padded_); - - pRootDir_ = new CiffDirectory; - pRootDir_->readDirectory(pData + offset_, size - offset_, byteOrder_); - } // CiffHeader::read - - void CiffComponent::read(const byte* pData, - uint32_t size, - uint32_t start, - ByteOrder byteOrder) - { - doRead(pData, size, start, byteOrder); - } - - void CiffComponent::doRead(const byte* pData, - uint32_t size, - uint32_t start, - ByteOrder byteOrder) - { - if (size < 10) throw Error(33); - tag_ = getUShort(pData + start, byteOrder); - - DataLocId dl = dataLocation(); - assert(dl == directoryData || dl == valueData); - - if (dl == valueData) { - size_ = getULong(pData + start + 2, byteOrder); - offset_ = getULong(pData + start + 6, byteOrder); - } - if (dl == directoryData) { - size_ = 8; - offset_ = start + 2; - } - pData_ = pData + offset_; -#ifdef DEBUG - std::cout << " Entry for tag 0x" - << std::hex << tagId() << " (0x" << tag() - << "), " << std::dec << size_ - << " Bytes, Offset is " << offset_ << "\n"; -#endif - - } // CiffComponent::doRead - - void CiffDirectory::doRead(const byte* pData, - uint32_t size, - uint32_t start, - ByteOrder byteOrder) - { - CiffComponent::doRead(pData, size, start, byteOrder); -#ifdef DEBUG - std::cout << "Reading directory 0x" << std::hex << tag() << "\n"; -#endif - readDirectory(pData + offset(), this->size(), byteOrder); -#ifdef DEBUG - std::cout << "<---- 0x" << std::hex << tag() << "\n"; -#endif - } // CiffDirectory::doRead - - void CiffDirectory::readDirectory(const byte* pData, - uint32_t size, - ByteOrder byteOrder) - { - uint32_t o = getULong(pData + size - 4, byteOrder); - if (o + 2 > size) throw Error(33); - uint16_t count = getUShort(pData + o, byteOrder); -#ifdef DEBUG - std::cout << "Directory at offset " << std::dec << o - <<", " << count << " entries \n"; -#endif - o += 2; - for (uint16_t i = 0; i < count; ++i) { - if (o + 10 > size) throw Error(33); - uint16_t tag = getUShort(pData + o, byteOrder); - CiffComponent::AutoPtr m; - switch (CiffComponent::typeId(tag)) { - case directory: m = CiffComponent::AutoPtr(new CiffDirectory); break; - default: m = CiffComponent::AutoPtr(new CiffEntry); break; - } - m->setDir(this->tag()); - m->read(pData, size, o, byteOrder); - add(m); - o += 10; - } - } // CiffDirectory::readDirectory - - void CiffHeader::decode(Image& image) const - { - // Nothing to decode from the header itself, just add correct byte order - if (pRootDir_) pRootDir_->decode(image, byteOrder_); - } // CiffHeader::decode - - void CiffComponent::decode(Image& image, ByteOrder byteOrder) const - { - doDecode(image, byteOrder); - } - - void CiffEntry::doDecode(Image& image, ByteOrder byteOrder) const - { - CrwMap::decode(*this, image, byteOrder); - } // CiffEntry::doDecode - - void CiffDirectory::doDecode(Image& image, ByteOrder byteOrder) const - { - Components::const_iterator b = components_.begin(); - Components::const_iterator e = components_.end(); - for (Components::const_iterator i = b; i != e; ++i) { - (*i)->decode(image, byteOrder); - } - } // CiffDirectory::doDecode - - void CiffHeader::write(Blob& blob) const - { - assert( byteOrder_ == littleEndian - || byteOrder_ == bigEndian); - if (byteOrder_ == littleEndian) { - blob.push_back(0x49); - blob.push_back(0x49); - } - else { - blob.push_back(0x4d); - blob.push_back(0x4d); - } - uint32_t o = 2; - byte buf[4]; - ul2Data(buf, offset_, byteOrder_); - append(blob, buf, 4); - o += 4; - append(blob, reinterpret_cast(signature_), 8); - o += 8; - // Pad as needed - if (pPadding_) { - assert(padded_ == offset_ - o); - append(blob, pPadding_, padded_); - } - else { - for (uint32_t i = o; i < offset_; ++i) { - blob.push_back(0); - ++o; - } - } - if (pRootDir_) { - pRootDir_->write(blob, byteOrder_, offset_); - } - } - - uint32_t CiffComponent::write(Blob& blob, - ByteOrder byteOrder, - uint32_t offset) - { - return doWrite(blob, byteOrder, offset); - } - - uint32_t CiffEntry::doWrite(Blob& blob, - ByteOrder /*byteOrder*/, - uint32_t offset) - { - return writeValueData(blob, offset); - } // CiffEntry::doWrite - - uint32_t CiffComponent::writeValueData(Blob& blob, uint32_t offset) - { - if (dataLocation() == valueData) { -#ifdef DEBUG - std::cout << " Data for tag 0x" << std::hex << tagId() - << ", " << std::dec << size_ << " Bytes\n"; -#endif - offset_ = offset; - append(blob, pData_, size_); - offset += size_; - // Pad the value to an even number of bytes - if (size_ % 2 == 1) { - blob.push_back(0); - ++offset; - } - } - return offset; - } // CiffComponent::writeValueData - - uint32_t CiffDirectory::doWrite(Blob& blob, - ByteOrder byteOrder, - uint32_t offset) - { -#ifdef DEBUG - std::cout << "Writing directory 0x" << std::hex << tag() << "---->\n"; -#endif - // Ciff offsets are relative to the start of the directory - uint32_t dirOffset = 0; - - // Value data - const Components::iterator b = components_.begin(); - const Components::iterator e = components_.end(); - for (Components::iterator i = b; i != e; ++i) { - dirOffset = (*i)->write(blob, byteOrder, dirOffset); - } - const uint32_t dirStart = dirOffset; - - // Number of directory entries - byte buf[4]; - us2Data(buf, static_cast(components_.size()), byteOrder); - append(blob, buf, 2); - dirOffset += 2; - - // Directory entries - for (Components::iterator i = b; i != e; ++i) { - (*i)->writeDirEntry(blob, byteOrder); - dirOffset += 10; - } - - // Offset of directory - ul2Data(buf, dirStart, byteOrder); - append(blob, buf, 4); - dirOffset += 4; - - // Update directory entry - setOffset(offset); - setSize(dirOffset); - -#ifdef DEBUG - std::cout << "Directory is at offset " << std::dec << dirStart - << ", " << components_.size() << " entries\n" - << "<---- 0x" << std::hex << tag() << "\n"; -#endif - return offset + dirOffset; - } // CiffDirectory::doWrite - - void CiffComponent::writeDirEntry(Blob& blob, ByteOrder byteOrder) const - { -#ifdef DEBUG - std::cout << " Directory entry for tag 0x" - << std::hex << tagId() << " (0x" << tag() - << "), " << std::dec << size_ - << " Bytes, Offset is " << offset_ << "\n"; -#endif - byte buf[4]; - - DataLocId dl = dataLocation(); - assert(dl == directoryData || dl == valueData); - - if (dl == valueData) { - us2Data(buf, tag_, byteOrder); - append(blob, buf, 2); - - ul2Data(buf, size_, byteOrder); - append(blob, buf, 4); - - ul2Data(buf, offset_, byteOrder); - append(blob, buf, 4); - } - - if (dl == directoryData) { - // Only 8 bytes fit in the directory entry - assert(size_ <= 8); - - us2Data(buf, tag_, byteOrder); - append(blob, buf, 2); - // Copy value instead of size and offset - append(blob, pData_, size_); - // Pad with 0s - for (uint32_t i = size_; i < 8; ++i) { - blob.push_back(0); - } - } - } // CiffComponent::writeDirEntry - - void CiffHeader::print(std::ostream& os, const std::string& prefix) const - { - os << prefix - << _("Header, offset") << " = 0x" << std::setw(8) << std::setfill('0') - << std::hex << std::right << offset_ << "\n"; - if (pRootDir_) pRootDir_->print(os, byteOrder_, prefix); - } // CiffHeader::print - - void CiffComponent::print(std::ostream& os, - ByteOrder byteOrder, - const std::string& prefix) const - { - doPrint(os, byteOrder, prefix); - } - - void CiffComponent::doPrint(std::ostream& os, - ByteOrder byteOrder, - const std::string& prefix) const - { - os << prefix - << _("tag") << " = 0x" << std::setw(4) << std::setfill('0') - << std::hex << std::right << tagId() - << ", " << _("dir") << " = 0x" << std::setw(4) << std::setfill('0') - << std::hex << std::right << dir() - << ", " << _("type") << " = " << TypeInfo::typeName(typeId()) - << ", " << _("size") << " = " << std::dec << size_ - << ", " << _("offset") << " = " << offset_ << "\n"; - - Value::AutoPtr value; - if (typeId() != directory) { - value = Value::create(typeId()); - value->read(pData_, size_, byteOrder); - if (value->size() < 100) { - os << prefix << *value << "\n"; - } - } - } // CiffComponent::doPrint - - void CiffDirectory::doPrint(std::ostream& os, - ByteOrder byteOrder, - const std::string& prefix) const - { - CiffComponent::doPrint(os, byteOrder, prefix); - Components::const_iterator b = components_.begin(); - Components::const_iterator e = components_.end(); - for (Components::const_iterator i = b; i != e; ++i) { - (*i)->print(os, byteOrder, prefix + " "); - } - } // CiffDirectory::doPrint - - void CiffComponent::setValue(DataBuf buf) - { - if (isAllocated_) { - delete pData_; - pData_ = 0; - size_ = 0; - } - isAllocated_ = true; - std::pair p = buf.release(); - pData_ = p.first; - size_ = p.second; - if (size_ > 8 && dataLocation() == directoryData) { - tag_ &= 0x3fff; - } - } // CiffComponent::setValue - - TypeId CiffComponent::typeId(uint16_t tag) - { - TypeId ti = invalidTypeId; - switch (tag & 0x3800) { - case 0x0000: ti = unsignedByte; break; - case 0x0800: ti = asciiString; break; - case 0x1000: ti = unsignedShort; break; - case 0x1800: ti = unsignedLong; break; - case 0x2000: ti = undefined; break; - case 0x2800: // fallthrough - case 0x3000: ti = directory; break; - } - return ti; - } // CiffComponent::typeId - - DataLocId CiffComponent::dataLocation(uint16_t tag) - { - DataLocId di = invalidDataLocId; - switch (tag & 0xc000) { - case 0x0000: di = valueData; break; - case 0x4000: di = directoryData; break; - } - return di; - } // CiffComponent::dataLocation - - /*! - @brief Finds \em crwTagId in directory \em crwDir, returning a pointer to - the component or 0 if not found. - - */ - CiffComponent* CiffHeader::findComponent(uint16_t crwTagId, - uint16_t crwDir) const - { - if (pRootDir_ == 0) return 0; - return pRootDir_->findComponent(crwTagId, crwDir); - } // CiffHeader::findComponent - - CiffComponent* CiffComponent::findComponent(uint16_t crwTagId, - uint16_t crwDir) const - { - return doFindComponent(crwTagId, crwDir); - } // CiffComponent::findComponent - - CiffComponent* CiffComponent::doFindComponent(uint16_t crwTagId, - uint16_t crwDir) const - { - if (tagId() == crwTagId && dir() == crwDir) { - return const_cast(this); - } - return 0; - } // CiffComponent::doFindComponent - - CiffComponent* CiffDirectory::doFindComponent(uint16_t crwTagId, - uint16_t crwDir) const - { - CiffComponent* cc = 0; - const Components::const_iterator b = components_.begin(); - const Components::const_iterator e = components_.end(); - for (Components::const_iterator i = b; i != e; ++i) { - cc = (*i)->findComponent(crwTagId, crwDir); - if (cc) return cc; - } - return 0; - } // CiffDirectory::doFindComponent - - void CiffHeader::add(uint16_t crwTagId, uint16_t crwDir, DataBuf buf) - { - CrwDirs crwDirs; - CrwMap::loadStack(crwDirs, crwDir); - uint16_t rootDirectory = crwDirs.top().crwDir_; - assert(rootDirectory == 0x0000); - crwDirs.pop(); - if (!pRootDir_) pRootDir_ = new CiffDirectory; - CiffComponent* cc = pRootDir_->add(crwDirs, crwTagId); - cc->setValue(buf); - } // CiffHeader::add - - CiffComponent* CiffComponent::add(CrwDirs& crwDirs, uint16_t crwTagId) - { - return doAdd(crwDirs, crwTagId); - } // CiffComponent::add - - CiffComponent* CiffComponent::doAdd(CrwDirs& /*crwDirs*/, uint16_t /*crwTagId*/) - { - return 0; - } // CiffComponent::doAdd - - CiffComponent* CiffDirectory::doAdd(CrwDirs& crwDirs, uint16_t crwTagId) - { - /* - add() - if stack not empty - pop from stack - find dir among components - if not found, create it - add() - else - find tag among components - if not found, create it - set value - */ - - CiffComponent* cc = 0; - const Components::iterator b = components_.begin(); - const Components::iterator e = components_.end(); - - if (!crwDirs.empty()) { - CrwSubDir csd = crwDirs.top(); - crwDirs.pop(); - // Find the directory - for (Components::iterator i = b; i != e; ++i) { - if ((*i)->tag() == csd.crwDir_) { - cc = *i; - break; - } - } - if (cc == 0) { - // Directory doesn't exist yet, add it - AutoPtr m(new CiffDirectory(csd.crwDir_, csd.parent_)); - cc = m.get(); - add(m); - } - // Recursive call to next lower level directory - cc = cc->add(crwDirs, crwTagId); - } - else { - // Find the tag - for (Components::iterator i = b; i != e; ++i) { - if ((*i)->tagId() == crwTagId) { - cc = *i; - break; - } - } - if (cc == 0) { - // Tag doesn't exist yet, add it - AutoPtr m(new CiffEntry(crwTagId, tag())); - cc = m.get(); - add(m); - } - } - return cc; - } // CiffDirectory::doAdd - - void CiffHeader::remove(uint16_t crwTagId, uint16_t crwDir) - { - if (pRootDir_) { - CrwDirs crwDirs; - CrwMap::loadStack(crwDirs, crwDir); - uint16_t rootDirectory = crwDirs.top().crwDir_; - assert(rootDirectory == 0x0000); - crwDirs.pop(); - pRootDir_->remove(crwDirs, crwTagId); - } - } // CiffHeader::remove - - void CiffComponent::remove(CrwDirs& crwDirs, uint16_t crwTagId) - { - return doRemove(crwDirs, crwTagId); - } // CiffComponent::remove - - void CiffComponent::doRemove(CrwDirs& /*crwDirs*/, uint16_t /*crwTagId*/) - { - // do nothing - } // CiffComponent::doRemove - - void CiffDirectory::doRemove(CrwDirs& crwDirs, uint16_t crwTagId) - { - const Components::iterator b = components_.begin(); - const Components::iterator e = components_.end(); - Components::iterator i; - - if (!crwDirs.empty()) { - CrwSubDir csd = crwDirs.top(); - crwDirs.pop(); - // Find the directory - for (i = b; i != e; ++i) { - if ((*i)->tag() == csd.crwDir_) { - // Recursive call to next lower level directory - (*i)->remove(crwDirs, crwTagId); - if ((*i)->empty()) components_.erase(i); - break; - } - } - } - else { - // Find the tag - for (i = b; i != e; ++i) { - if ((*i)->tagId() == crwTagId) { - // Remove the entry and abort the loop - delete *i; - components_.erase(i); - break; - } - } - } - } // CiffDirectory::doRemove - - bool CiffComponent::empty() const - { - return doEmpty(); - } - - bool CiffComponent::doEmpty() const - { - return size_ == 0; - } - - bool CiffDirectory::doEmpty() const - { - return components_.empty(); - } - - void CrwMap::decode(const CiffComponent& ciffComponent, - Image& image, - ByteOrder byteOrder) - { - const CrwMapping* cmi = crwMapping(ciffComponent.dir(), - ciffComponent.tagId()); - if (cmi && cmi->toExif_) { - cmi->toExif_(ciffComponent, cmi, image, byteOrder); - } - } // CrwMap::decode - - const CrwMapping* CrwMap::crwMapping(uint16_t crwDir, uint16_t crwTagId) - { - for (int i = 0; crwMapping_[i].ifdId_ != ifdIdNotSet; ++i) { - if ( crwMapping_[i].crwDir_ == crwDir - && crwMapping_[i].crwTagId_ == crwTagId) { - return &(crwMapping_[i]); - } - } - return 0; - } // CrwMap::crwMapping - - void CrwMap::decode0x0805(const CiffComponent& ciffComponent, - const CrwMapping* /*pCrwMapping*/, - Image& image, - ByteOrder /*byteOrder*/) - { - std::string s(reinterpret_cast(ciffComponent.pData())); - image.setComment(s); - } // CrwMap::decode0x0805 - - void CrwMap::decode0x080a(const CiffComponent& ciffComponent, - const CrwMapping* /*pCrwMapping*/, - Image& image, - ByteOrder byteOrder) - { - if (ciffComponent.typeId() != asciiString) return; - - // Make - ExifKey key1("Exif.Image.Make"); - Value::AutoPtr value1 = Value::create(ciffComponent.typeId()); - uint32_t i = 0; - for (; i < ciffComponent.size() - && ciffComponent.pData()[i] != '\0'; ++i) { - // empty - } - value1->read(ciffComponent.pData(), ++i, byteOrder); - image.exifData().add(key1, value1.get()); - - // Model - ExifKey key2("Exif.Image.Model"); - Value::AutoPtr value2 = Value::create(ciffComponent.typeId()); - uint32_t j = i; - for (; i < ciffComponent.size() - && ciffComponent.pData()[i] != '\0'; ++i) { - // empty - } - value2->read(ciffComponent.pData() + j, i - j + 1, byteOrder); - image.exifData().add(key2, value2.get()); - } // CrwMap::decode0x080a - - void CrwMap::decodeArray(const CiffComponent& ciffComponent, - const CrwMapping* pCrwMapping, - Image& image, - ByteOrder byteOrder) - { - if (ciffComponent.typeId() != unsignedShort) { - return decodeBasic(ciffComponent, pCrwMapping, image, byteOrder); - } - - long aperture = 0; - long shutterSpeed = 0; - - IfdId ifdId = ifdIdNotSet; - switch (pCrwMapping->tag_) { - case 0x0001: ifdId = canonCsId; break; - case 0x0004: ifdId = canonSiId; break; - case 0x000f: ifdId = canonCfId; break; - case 0x0012: ifdId = canonPiId; break; - } - assert(ifdId != ifdIdNotSet); - - std::string groupName(Internal::groupName(ifdId)); - uint16_t c = 1; - while (uint32_t(c)*2 < ciffComponent.size()) { - uint16_t n = 1; - ExifKey key(c, groupName); - UShortValue value; - if (ifdId == canonCsId && c == 23 && ciffComponent.size() > 50) n = 3; - value.read(ciffComponent.pData() + c*2, n*2, byteOrder); - image.exifData().add(key, &value); - if (ifdId == canonSiId && c == 21) aperture = value.toLong(); - if (ifdId == canonSiId && c == 22) shutterSpeed = value.toLong(); - c += n; - } - - if (ifdId == canonSiId) { - // Exif.Photo.FNumber - float f = fnumber(canonEv(aperture)); - Rational r = floatToRationalCast(f); - URational ur(r.first, r.second); - URationalValue fn; - fn.value_.push_back(ur); - image.exifData().add(ExifKey("Exif.Photo.FNumber"), &fn); - - // Exif.Photo.ExposureTime - ur = exposureTime(canonEv(shutterSpeed)); - URationalValue et; - et.value_.push_back(ur); - image.exifData().add(ExifKey("Exif.Photo.ExposureTime"), &et); - } - } // CrwMap::decodeArray - - void CrwMap::decode0x180e(const CiffComponent& ciffComponent, - const CrwMapping* pCrwMapping, - Image& image, - ByteOrder byteOrder) - { - if (ciffComponent.size() < 8 || ciffComponent.typeId() != unsignedLong) { - return decodeBasic(ciffComponent, pCrwMapping, image, byteOrder); - } - assert(pCrwMapping != 0); - ULongValue v; - v.read(ciffComponent.pData(), 8, byteOrder); - time_t t = v.value_[0]; -#ifdef EXV_HAVE_GMTIME_R - struct tm tms; - struct tm* tm = &tms; - tm = gmtime_r(&t, tm); -#else - struct tm* tm = std::gmtime(&t); -#endif - if (tm) { - const size_t m = 20; - char s[m]; - std::strftime(s, m, "%Y:%m:%d %H:%M:%S", tm); - - ExifKey key(pCrwMapping->tag_, Internal::groupName(pCrwMapping->ifdId_)); - AsciiValue value; - value.read(std::string(s)); - image.exifData().add(key, &value); - } - } // CrwMap::decode0x180e - - void CrwMap::decode0x1810(const CiffComponent& ciffComponent, - const CrwMapping* pCrwMapping, - Image& image, - ByteOrder byteOrder) - { - if (ciffComponent.typeId() != unsignedLong || ciffComponent.size() < 28) { - return decodeBasic(ciffComponent, pCrwMapping, image, byteOrder); - } - - ExifKey key1("Exif.Photo.PixelXDimension"); - ULongValue value1; - value1.read(ciffComponent.pData(), 4, byteOrder); - image.exifData().add(key1, &value1); - - ExifKey key2("Exif.Photo.PixelYDimension"); - ULongValue value2; - value2.read(ciffComponent.pData() + 4, 4, byteOrder); - image.exifData().add(key2, &value2); - - int32_t r = getLong(ciffComponent.pData() + 12, byteOrder); - uint16_t o = RotationMap::orientation(r); - image.exifData()["Exif.Image.Orientation"] = o; - - } // CrwMap::decode0x1810 - - void CrwMap::decode0x2008(const CiffComponent& ciffComponent, - const CrwMapping* /*pCrwMapping*/, - Image& image, - ByteOrder /*byteOrder*/) - { - ExifThumb exifThumb(image.exifData()); - exifThumb.setJpegThumbnail(ciffComponent.pData(), ciffComponent.size()); - } // CrwMap::decode0x2008 - - void CrwMap::decodeBasic(const CiffComponent& ciffComponent, - const CrwMapping* pCrwMapping, - Image& image, - ByteOrder byteOrder) - { - assert(pCrwMapping != 0); - // create a key and value pair - ExifKey key(pCrwMapping->tag_, Internal::groupName(pCrwMapping->ifdId_)); - Value::AutoPtr value; - if (ciffComponent.typeId() != directory) { - value = Value::create(ciffComponent.typeId()); - uint32_t size = 0; - if (pCrwMapping->size_ != 0) { - // size in the mapping table overrides all - size = pCrwMapping->size_; - } - else if (ciffComponent.typeId() == asciiString) { - // determine size from the data, by looking for the first 0 - uint32_t i = 0; - for (; i < ciffComponent.size() - && ciffComponent.pData()[i] != '\0'; ++i) { - // empty - } - size = ++i; - } - else { - // by default, use the size from the directory entry - size = ciffComponent.size(); - } - value->read(ciffComponent.pData(), size, byteOrder); - } - // Add metadatum to exif data - image.exifData().add(key, value.get()); - } // CrwMap::decodeBasic - - void CrwMap::loadStack(CrwDirs& crwDirs, uint16_t crwDir) - { - for (int i = 0; crwSubDir_[i].crwDir_ != 0xffff; ++i) { - if (crwSubDir_[i].crwDir_ == crwDir) { - crwDirs.push(crwSubDir_[i]); - crwDir = crwSubDir_[i].parent_; - } - } - } // CrwMap::loadStack - - void CrwMap::encode(CiffHeader* pHead, const Image& image) - { - for (const CrwMapping* cmi = crwMapping_; cmi->ifdId_ != ifdIdNotSet; ++cmi) { - if (cmi->fromExif_ != 0) { - cmi->fromExif_(image, cmi, pHead); - } - } - } // CrwMap::encode - - void CrwMap::encodeBasic(const Image& image, - const CrwMapping* pCrwMapping, - CiffHeader* pHead) - { - assert(pCrwMapping != 0); - assert(pHead != 0); - - // Determine the source Exif metadatum - ExifKey ek(pCrwMapping->tag_, Internal::groupName(pCrwMapping->ifdId_)); - ExifData::const_iterator ed = image.exifData().findKey(ek); - - // Set the new value or remove the entry - if (ed != image.exifData().end()) { - DataBuf buf(ed->size()); - ed->copy(buf.pData_, pHead->byteOrder()); - pHead->add(pCrwMapping->crwTagId_, pCrwMapping->crwDir_, buf); - } - else { - pHead->remove(pCrwMapping->crwTagId_, pCrwMapping->crwDir_); - } - } // CrwMap::encodeBasic - - void CrwMap::encode0x0805(const Image& image, - const CrwMapping* pCrwMapping, - CiffHeader* pHead) - { - assert(pCrwMapping != 0); - assert(pHead != 0); - - std::string comment = image.comment(); - - CiffComponent* cc = pHead->findComponent(pCrwMapping->crwTagId_, - pCrwMapping->crwDir_); - if (!comment.empty()) { - uint32_t size = static_cast(comment.size()); - if (cc && cc->size() > size) size = cc->size(); - DataBuf buf(size); - std::memset(buf.pData_, 0x0, buf.size_); - std::memcpy(buf.pData_, comment.data(), comment.size()); - pHead->add(pCrwMapping->crwTagId_, pCrwMapping->crwDir_, buf); - } - else { - if (cc) { - // Just delete the value, do not remove the tag - DataBuf buf(cc->size()); - std::memset(buf.pData_, 0x0, buf.size_); - cc->setValue(buf); - } - } - } // CrwMap::encode0x0805 - - void CrwMap::encode0x080a(const Image& image, - const CrwMapping* pCrwMapping, - CiffHeader* pHead) - { - assert(pCrwMapping != 0); - assert(pHead != 0); - - const ExifKey k1("Exif.Image.Make"); - const ExifKey k2("Exif.Image.Model"); - const ExifData::const_iterator ed1 = image.exifData().findKey(k1); - const ExifData::const_iterator ed2 = image.exifData().findKey(k2); - const ExifData::const_iterator edEnd = image.exifData().end(); - - long size = 0; - if (ed1 != edEnd) size += ed1->size(); - if (ed2 != edEnd) size += ed2->size(); - if (size != 0) { - DataBuf buf(size); - if (ed1 != edEnd) ed1->copy(buf.pData_, pHead->byteOrder()); - if (ed2 != edEnd) ed2->copy(buf.pData_ + ed1->size(), pHead->byteOrder()); - pHead->add(pCrwMapping->crwTagId_, pCrwMapping->crwDir_, buf); - } - else { - pHead->remove(pCrwMapping->crwTagId_, pCrwMapping->crwDir_); - } - } // CrwMap::encode0x080a - - void CrwMap::encodeArray(const Image& image, - const CrwMapping* pCrwMapping, - CiffHeader* pHead) - { - assert(pCrwMapping != 0); - assert(pHead != 0); - - IfdId ifdId = ifdIdNotSet; - switch (pCrwMapping->tag_) { - case 0x0001: ifdId = canonCsId; break; - case 0x0004: ifdId = canonSiId; break; - case 0x000f: ifdId = canonCfId; break; - case 0x0012: ifdId = canonPiId; break; - } - assert(ifdId != ifdIdNotSet); - DataBuf buf = packIfdId(image.exifData(), ifdId, pHead->byteOrder()); - if (buf.size_ == 0) { - // Try the undecoded tag - encodeBasic(image, pCrwMapping, pHead); - } - if (buf.size_ > 0) { - // Write the number of shorts to the beginning of buf - us2Data(buf.pData_, static_cast(buf.size_), pHead->byteOrder()); - pHead->add(pCrwMapping->crwTagId_, pCrwMapping->crwDir_, buf); - } - else { - pHead->remove(pCrwMapping->crwTagId_, pCrwMapping->crwDir_); - } - } // CrwMap::encodeArray - - void CrwMap::encode0x180e(const Image& image, - const CrwMapping* pCrwMapping, - CiffHeader* pHead) - { - assert(pCrwMapping != 0); - assert(pHead != 0); - - time_t t = 0; - const ExifKey key(pCrwMapping->tag_, Internal::groupName(pCrwMapping->ifdId_)); - const ExifData::const_iterator ed = image.exifData().findKey(key); - if (ed != image.exifData().end()) { - struct tm tm; - std::memset(&tm, 0x0, sizeof(tm)); - int rc = exifTime(ed->toString().c_str(), &tm); - if (rc == 0) t = timegm(&tm); - } - if (t != 0) { - DataBuf buf(12); - std::memset(buf.pData_, 0x0, 12); - ul2Data(buf.pData_, static_cast(t), pHead->byteOrder()); - pHead->add(pCrwMapping->crwTagId_, pCrwMapping->crwDir_, buf); - } - else { - pHead->remove(pCrwMapping->crwTagId_, pCrwMapping->crwDir_); - } - } // CrwMap::encode0x180e - - void CrwMap::encode0x1810(const Image& image, - const CrwMapping* pCrwMapping, - CiffHeader* pHead) - { - assert(pCrwMapping != 0); - assert(pHead != 0); - - const ExifKey kX("Exif.Photo.PixelXDimension"); - const ExifKey kY("Exif.Photo.PixelYDimension"); - const ExifKey kO("Exif.Image.Orientation"); - const ExifData::const_iterator edX = image.exifData().findKey(kX); - const ExifData::const_iterator edY = image.exifData().findKey(kY); - const ExifData::const_iterator edO = image.exifData().findKey(kO); - const ExifData::const_iterator edEnd = image.exifData().end(); - - CiffComponent* cc = pHead->findComponent(pCrwMapping->crwTagId_, - pCrwMapping->crwDir_); - if (edX != edEnd || edY != edEnd || edO != edEnd) { - uint32_t size = 28; - if (cc && cc->size() > size) size = cc->size(); - DataBuf buf(size); - std::memset(buf.pData_, 0x0, buf.size_); - if (cc) std::memcpy(buf.pData_ + 8, cc->pData() + 8, cc->size() - 8); - if (edX != edEnd && edX->size() == 4) { - edX->copy(buf.pData_, pHead->byteOrder()); - } - if (edY != edEnd && edY->size() == 4) { - edY->copy(buf.pData_ + 4, pHead->byteOrder()); - } - int32_t d = 0; - if (edO != edEnd && edO->count() > 0 && edO->typeId() == unsignedShort) { - d = RotationMap::degrees(static_cast(edO->toLong())); - } - l2Data(buf.pData_ + 12, d, pHead->byteOrder()); - pHead->add(pCrwMapping->crwTagId_, pCrwMapping->crwDir_, buf); - } - else { - pHead->remove(pCrwMapping->crwTagId_, pCrwMapping->crwDir_); - } - } // CrwMap::encode0x1810 - - void CrwMap::encode0x2008(const Image& image, - const CrwMapping* pCrwMapping, - CiffHeader* pHead) - { - assert(pCrwMapping != 0); - assert(pHead != 0); - - ExifThumbC exifThumb(image.exifData()); - DataBuf buf = exifThumb.copy(); - if (buf.size_ != 0) { - pHead->add(pCrwMapping->crwTagId_, pCrwMapping->crwDir_, buf); - } - else { - pHead->remove(pCrwMapping->crwTagId_, pCrwMapping->crwDir_); - } - } // CrwMap::encode0x2008 - - // ************************************************************************* - // free functions - DataBuf packIfdId(const ExifData& exifData, - IfdId ifdId, - ByteOrder byteOrder) - { - const uint16_t size = 1024; - DataBuf buf(size); - std::memset(buf.pData_, 0x0, buf.size_); - - uint16_t len = 0; - const ExifData::const_iterator b = exifData.begin(); - const ExifData::const_iterator e = exifData.end(); - for (ExifData::const_iterator i = b; i != e; ++i) { - if (i->ifdId() != ifdId) continue; - const uint16_t s = i->tag()*2 + static_cast(i->size()); - assert(s <= size); - if (len < s) len = s; - i->copy(buf.pData_ + i->tag()*2, byteOrder); - } - // Round the size to make it even. - buf.size_ = len + len%2; - return buf; - } - -}} // namespace Internal, Exiv2 - -// ***************************************************************************** -// local definitions -namespace { - //! @cond IGNORE - const RotationMap::OmList RotationMap::omList_[] = { - { 1, 0 }, - { 3, 180 }, - { 3, -180 }, - { 6, 90 }, - { 6, -270 }, - { 8, 270 }, - { 8, -90 }, - // last entry - { 0, 0 } - }; - - uint16_t RotationMap::orientation(int32_t degrees) - { - uint16_t o = 1; - for (int i = 0; omList_[i].orientation != 0; ++i) { - if (omList_[i].degrees == degrees) { - o = omList_[i].orientation; - break; - } - } - return o; - } - - int32_t RotationMap::degrees(uint16_t orientation) - { - int32_t d = 0; - for (int i = 0; omList_[i].orientation != 0; ++i) { - if (omList_[i].orientation == orientation) { - d = omList_[i].degrees; - break; - } - } - return d; - } - //! @endcond -} diff --git a/platform/win32/msvc/external/exiv2/src/crwimage.hpp b/platform/win32/msvc/external/exiv2/src/crwimage.hpp deleted file mode 100644 index 264a2cfb39f..00000000000 --- a/platform/win32/msvc/external/exiv2/src/crwimage.hpp +++ /dev/null @@ -1,177 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file crwimage.hpp - @brief Class CrwImage to access Canon CRW images.
- References:
- The Canon RAW (CRW) File Format by Phil Harvey - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 28-Aug-05, ahu: created - */ -#ifndef CRWIMAGE_HPP_ -#define CRWIMAGE_HPP_ - -// ***************************************************************************** -// included header files -#include "types.hpp" -#include "image.hpp" -#include "basicio.hpp" - -// + standard includes -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class declarations - class ExifData; - class IptcData; - -// ***************************************************************************** -// class definitions - - // Add CRW to the supported image formats - namespace ImageType { - const int crw = 3; //!< CRW image type (see class CrwImage) - } - - /*! - @brief Class to access raw Canon CRW images. Only Exif metadata and a - comment are supported. CRW format does not contain IPTC metadata. - */ - class EXIV2API CrwImage : public Image { - public: - //! @name Creators - //@{ - /*! - @brief Constructor that can either open an existing CRW image or create - a new image from scratch. If a new image is to be created, any - existing data is overwritten. Since the constructor can not return - a result, callers should check the good() method after object - construction to determine success or failure. - @param io An auto-pointer that owns a BasicIo instance used for - reading and writing image metadata. \b Important: The constructor - takes ownership of the passed in BasicIo instance through the - auto-pointer. Callers should not continue to use the BasicIo - instance after it is passed to this method. Use the Image::io() - method to get a temporary reference. - @param create Specifies if an existing image should be read (false) - or if a new file should be created (true). - */ - CrwImage(BasicIo::AutoPtr io, bool create); - //@} - - //! @name Manipulators - //@{ - void readMetadata(); - void writeMetadata(); - /*! - @brief Not supported. CRW format does not contain IPTC metadata. - Calling this function will throw an Error(32). - */ - void setIptcData(const IptcData& iptcData); - //@} - - //! @name Accessors - //@{ - std::string mimeType() const; - int pixelWidth() const; - int pixelHeight() const; - //@} - - private: - //! @name NOT Implemented - //@{ - //! Copy constructor - CrwImage(const CrwImage& rhs); - //! Assignment operator - CrwImage& operator=(const CrwImage& rhs); - //@} - - }; // class CrwImage - - /*! - Stateless parser class for Canon CRW images (Ciff format). - */ - class EXIV2API CrwParser { - public: - /*! - @brief Decode metadata from a Canon CRW image in data buffer \em pData - of length \em size into \em crwImage. - - This is the entry point to access image data in Ciff format. The - parser uses classes CiffHeader, CiffEntry, CiffDirectory. - - @param pCrwImage Pointer to the %Exiv2 CRW image to hold the metadata - read from the buffer. - @param pData Pointer to the data buffer. Must point to the data of - a CRW image; no checks are performed. - @param size Length of the data buffer. - - @throw Error If the data buffer cannot be parsed. - */ - static void decode(CrwImage* pCrwImage, const byte* pData, uint32_t size); - /*! - @brief Encode metadata from the CRW image into a data buffer (the - binary CRW image). - - @param blob Data buffer for the binary image (target). - @param pData Pointer to the binary image data buffer. Must - point to data in CRW format; no checks are - performed. - @param size Length of the data buffer. - @param pCrwImage Pointer to the %Exiv2 CRW image with the metadata to - encode. - - @throw Error If the metadata from the CRW image cannot be encoded. - */ - static void encode( - Blob& blob, - const byte* pData, - uint32_t size, - const CrwImage* pCrwImage - ); - - }; // class CrwParser - -// ***************************************************************************** -// template, inline and free functions - - // These could be static private functions on Image subclasses but then - // ImageFactory needs to be made a friend. - /*! - @brief Create a new CrwImage instance and return an auto-pointer to it. - Caller owns the returned object and the auto-pointer ensures that - it will be deleted. - */ - EXIV2API Image::AutoPtr newCrwInstance(BasicIo::AutoPtr io, bool create); - - //! Check if the file iIo is a CRW image. - EXIV2API bool isCrwType(BasicIo& iIo, bool advance); - -} // namespace Exiv2 - -#endif // #ifndef CRWIMAGE_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/crwimage_int.hpp b/platform/win32/msvc/external/exiv2/src/crwimage_int.hpp deleted file mode 100644 index 5b17f66c6a3..00000000000 --- a/platform/win32/msvc/external/exiv2/src/crwimage_int.hpp +++ /dev/null @@ -1,750 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file crwimage_int.hpp - @brief Internal classes to support CRW/CIFF format. - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 28-Aug-05, ahu: created - */ -#ifndef CRWIMAGE_INT_HPP_ -#define CRWIMAGE_INT_HPP_ - -// ***************************************************************************** -// included header files -#include "types.hpp" -#include "tags_int.hpp" -#include "image.hpp" -#include "basicio.hpp" - -// + standard includes -#include -#include -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class declarations - class ExifData; - - namespace Internal { - -// ***************************************************************************** -// class declarations - class CiffHeader; - class CiffComponent; - struct CrwMapping; - struct CrwSubDir; - -// ***************************************************************************** -// type definitions - - //! Function pointer for functions to decode Exif tags from a CRW entry - typedef void (*CrwDecodeFct)(const CiffComponent&, - const CrwMapping*, - Image&, - ByteOrder); - - //! Function pointer for functions to encode CRW entries from Exif tags - typedef void (*CrwEncodeFct)(const Image&, - const CrwMapping*, - CiffHeader*); - - //! Stack to hold a path of CRW directories - typedef std::stack CrwDirs; - - //! Type to identify where the data is stored in a directory - enum DataLocId { - invalidDataLocId, - valueData, - directoryData, - lastDataLocId - }; - -// ***************************************************************************** -// class definitions - - /*! - @brief Interface class for components of the CIFF directory hierarchy of a - CRW (Canon Raw data) image. Both CIFF directories as well as - entries implement this interface. This class is implemented as NVI - (non-virtual interface). - */ - class CiffComponent { - public: - //! CiffComponent auto_ptr type - typedef std::auto_ptr AutoPtr; - //! Container type to hold all metadata - typedef std::vector Components; - - //! @name Creators - //@{ - //! Default constructor - CiffComponent() - : dir_(0), tag_(0), size_(0), offset_(0), pData_(0), - isAllocated_(false) {} - //! Constructor taking a tag and directory - CiffComponent(uint16_t tag, uint16_t dir) - : dir_(dir), tag_(tag), size_(0), offset_(0), pData_(0), - isAllocated_(false) {} - //! Virtual destructor. - virtual ~CiffComponent(); - //@} - - //! @name Manipulators - //@{ - // Default assignment operator is fine - - //! Add a component to the composition - void add(AutoPtr component); - /*! - @brief Add \em crwTagId to the parse tree, if it doesn't exist - yet. \em crwDirs contains the path of subdirectories, starting - with the root directory, leading to \em crwTagId. Directories - that don't exist yet are added along the way. Returns a pointer - to the newly added component. - - @param crwDirs Subdirectory path from root to the subdirectory - containing the tag to be added. - @param crwTagId Tag to be added. - - @return A pointer to the newly added component. - */ - CiffComponent* add(CrwDirs& crwDirs, uint16_t crwTagId); - /*! - @brief Remove \em crwTagId from the parse tree, if it exists yet. \em - crwDirs contains the path of subdirectories, starting with the - root directory, leading to \em crwTagId. - - @param crwDirs Subdirectory path from root to the subdirectory - containing the tag to be removed. - @param crwTagId Tag to be removed. - */ - void remove(CrwDirs& crwDirs, uint16_t crwTagId); - /*! - @brief Read a component from a data buffer - - @param pData Pointer to the data buffer. - @param size Number of bytes in the data buffer. - @param start Component starts at \em pData + \em start. - @param byteOrder Applicable byte order (little or big endian). - - @throw Error If the component cannot be parsed. - */ - void read(const byte* pData, - uint32_t size, - uint32_t start, - ByteOrder byteOrder); - /*! - @brief Write the metadata from the raw metadata component to the - binary image \em blob. This method may append to the blob. - - @param blob Binary image to add metadata to - @param byteOrder Byte order - @param offset Current offset - - @return New offset - */ - uint32_t write(Blob& blob, ByteOrder byteOrder, uint32_t offset); - /*! - @brief Writes the entry's value if size is larger than eight bytes. If - needed, the value is padded with one 0 byte to make the number - of bytes written to the blob even. The offset of the component - is set to the offset passed in. - @param blob The binary image to write to. - @param offset Offset from the start of the directory for this entry. - - @return New offset. - */ - uint32_t writeValueData(Blob& blob, uint32_t offset); - //! Set the directory tag for this component. - void setDir(uint16_t dir) { dir_ = dir; } - //! Set the data value of the entry. - void setValue(DataBuf buf); - //@} - - //! Return the type id for a tag - static TypeId typeId(uint16_t tag); - //! Return the data location id for a tag - static DataLocId dataLocation(uint16_t tag); - - //! @name Accessors - //@{ - /*! - @brief Decode metadata from the component and add it to - \em image. - - @param image Image to add metadata to - @param byteOrder Byte order - */ - void decode(Image& image, ByteOrder byteOrder) const; - /*! - @brief Print debug info about a component to \em os. - - @param os Output stream to write to - @param byteOrder Byte order - @param prefix Prefix to be written before each line of output - */ - void print(std::ostream& os, - ByteOrder byteOrder, - const std::string& prefix ="") const; - /*! - @brief Write a directory entry for the component to the \em blob. - If the size of the data is not larger than 8 bytes, the - data is written to the directory entry. - */ - void writeDirEntry(Blob& blob, ByteOrder byteOrder) const; - //! Return the tag of the directory containing this component - uint16_t dir() const { return dir_; } - - //! Return the tag of this component - uint16_t tag() const { return tag_; } - - //! Return true if the component is empty, else false - bool empty() const; - - /*! - @brief Return the data size of this component - - @note If the data is contained in the directory entry itself, - this method returns 8, which is the maximum number - of data bytes this component can have. The actual size, - i.e., used data bytes, may be less than 8. - */ - uint32_t size() const { return size_; } - - //! Return the offset to the data from the start of the directory - uint32_t offset() const { return offset_; } - - //! Return a pointer to the data area of this component - const byte* pData() const { return pData_; } - - //! Return the tag id of this component - uint16_t tagId() const { return tag_ & 0x3fff; } - - //! Return the type id of thi component - TypeId typeId() const { return typeId(tag_); } - - //! Return the data location for this component - DataLocId dataLocation() const { return dataLocation(tag_); } - - /*! - @brief Finds \em crwTagId in directory \em crwDir, returning a pointer to - the component or 0 if not found. - */ - CiffComponent* findComponent(uint16_t crwTagId, uint16_t crwDir) const; - //@} - - protected: - //! @name Manipulators - //@{ - //! Implements add() - virtual void doAdd(AutoPtr component) =0; - //! Implements add(). The default implementation does nothing. - virtual CiffComponent* doAdd(CrwDirs& crwDirs, uint16_t crwTagId); - //! Implements remove(). The default implementation does nothing. - virtual void doRemove(CrwDirs& crwDirs, uint16_t crwTagId); - //! Implements read(). The default implementation reads a directory entry. - virtual void doRead(const byte* pData, - uint32_t size, - uint32_t start, - ByteOrder byteOrder); - //! Implements write() - virtual uint32_t doWrite(Blob& blob, - ByteOrder byteOrder, - uint32_t offset) =0; - //! Set the size of the data area. - void setSize(uint32_t size) { size_ = size; } - //! Set the offset for this component. - void setOffset(uint32_t offset) { offset_ = offset; } - //@} - - //! @name Accessors - //@{ - //! Implements decode() - virtual void doDecode(Image& image, - ByteOrder byteOrder) const =0; - //! Implements print(). The default implementation prints the entry. - virtual void doPrint(std::ostream& os, - ByteOrder byteOrder, - const std::string& prefix) const; - //! Implements empty(). Default implementation returns true if size is 0. - virtual bool doEmpty() const; - //! Implements findComponent(). The default implementation checks the entry. - virtual CiffComponent* doFindComponent(uint16_t crwTagId, - uint16_t crwDir) const; - //@} - - private: - // DATA - uint16_t dir_; //!< Tag of the directory containing this component - uint16_t tag_; //!< Tag of the entry - uint32_t size_; //!< Size of the data area - uint32_t offset_; //!< Offset to the data area from start of dir - const byte* pData_; //!< Pointer to the data area - bool isAllocated_; //!< True if this entry owns the value data - - }; // class CiffComponent - - /*! - @brief This class models one directory entry of a CIFF directory of - a CRW (Canon Raw data) image. - */ - class CiffEntry : public CiffComponent { - public: - //! @name Creators - //@{ - //! Default constructor - CiffEntry() {} - //! Constructor taking a tag and directory - CiffEntry(uint16_t tag, uint16_t dir) : CiffComponent(tag, dir) {} - - //! Virtual destructor. - virtual ~CiffEntry(); - //@} - - // Default assignment operator is fine - - private: - //! @name Manipulators - //@{ - using CiffComponent::doAdd; - // See base class comment - virtual void doAdd(AutoPtr component); - /*! - @brief Implements write(). Writes only the value data of the entry, - using writeValueData(). - */ - virtual uint32_t doWrite(Blob& blob, - ByteOrder byteOrder, - uint32_t offset); - //@} - - //! @name Accessors - //@{ - // See base class comment - virtual void doDecode(Image& image, ByteOrder byteOrder) const; - //@} - - }; // class CiffEntry - - //! This class models a CIFF directory of a CRW (Canon Raw data) image. - class CiffDirectory : public CiffComponent { - public: - //! @name Creators - //@{ - //! Default constructor - CiffDirectory() {} - //! Constructor taking a tag and directory - CiffDirectory(uint16_t tag, uint16_t dir) : CiffComponent(tag, dir) {} - - //! Virtual destructor - virtual ~CiffDirectory(); - //@} - - //! @name Manipulators - //@{ - // Default assignment operator is fine - - /*! - @brief Parse a CIFF directory from a memory buffer - - @param pData Pointer to the memory buffer containing the directory - @param size Size of the memory buffer - @param byteOrder Applicable byte order (little or big endian) - */ - void readDirectory(const byte* pData, - uint32_t size, - ByteOrder byteOrder); - //@} - - private: - //! @name Manipulators - //@{ - // See base class comment - virtual void doAdd(AutoPtr component); - // See base class comment - virtual CiffComponent* doAdd(CrwDirs& crwDirs, uint16_t crwTagId); - // See base class comment - virtual void doRemove(CrwDirs& crwDirs, uint16_t crwTagId); - /*! - @brief Implements write(). Writes the complete Ciff directory to - the blob. - */ - virtual uint32_t doWrite(Blob& blob, - ByteOrder byteOrder, - uint32_t offset); - // See base class comment - virtual void doRead(const byte* pData, - uint32_t size, - uint32_t start, - ByteOrder byteOrder); - //@} - - //! @name Accessors - //@{ - // See base class comment - virtual void doDecode(Image& image, - ByteOrder byteOrder) const; - - // See base class comment - virtual void doPrint(std::ostream& os, - ByteOrder byteOrder, - const std::string& prefix) const; - - //! See base class comment. A directory is empty if it has no components. - virtual bool doEmpty() const; - - // See base class comment - virtual CiffComponent* doFindComponent(uint16_t crwTagId, - uint16_t crwDir) const; - //@} - - private: - // DATA - Components components_; //!< List of components in this dir - - }; // class CiffDirectory - - /*! - @brief This class models the header of a CRW (Canon Raw data) image. It - is the head of a CIFF parse tree, consisting of CiffDirectory and - CiffEntry objects. Most of its methods will walk the parse tree to - perform the requested action. - */ - class CiffHeader { - public: - //! CiffHeader auto_ptr type - typedef std::auto_ptr AutoPtr; - - //! @name Creators - //@{ - //! Default constructor - CiffHeader() - : pRootDir_ (0), - byteOrder_ (littleEndian), - offset_ (0x0000001a), - pPadding_ (0), - padded_ (0) - {} - //! Virtual destructor - virtual ~CiffHeader(); - //@} - - //! @name Manipulators - //@{ - /*! - @brief Read the CRW image from a data buffer, starting with the Ciff - header. - - @param pData Pointer to the data buffer. - @param size Number of bytes in the data buffer. - - @throw Error If the image cannot be parsed. - */ - void read(const byte* pData, uint32_t size); - /*! - @brief Set the value of entry \em crwTagId in directory \em crwDir to - \em buf. If this tag doesn't exist, it is added along with all - directories needed. - - @param crwTagId Tag to be added. - @param crwDir Parent directory of the tag. - @param buf Value to be set. - */ - void add(uint16_t crwTagId, uint16_t crwDir, DataBuf buf); - /*! - @brief Remove entry \em crwTagId in directory \em crwDir from the parse - tree. If it's the last entry in the directory, the directory is - removed as well, etc. - - @param crwTagId Tag id to be removed. - @param crwDir Parent directory of the tag. - */ - void remove(uint16_t crwTagId, uint16_t crwDir); - //@} - - //! Return a pointer to the Canon CRW signature. - static const char* signature() { return signature_; } - - //! @name Accessors - //@{ - /*! - @brief Write the CRW image to the binary image \em blob, starting with - the Ciff header. This method appends to the blob. - - @param blob Binary image to add to. - - @throw Error If the image cannot be written. - */ - void write(Blob& blob) const; - /*! - @brief Decode the CRW image and add it to \em image. - - Walk the parse tree and convert CIFF entries to metadata - entries which are added to \em image. - - @param image Image to add metadata to - */ - void decode(Image& image) const; - /*! - @brief Print debug info for the CRW image to \em os. - - @param os Output stream to write to. - @param prefix Prefix to be written before each line of output. - */ - void print(std::ostream& os, const std::string& prefix ="") const; - //! Return the byte order (little or big endian). - ByteOrder byteOrder() const { return byteOrder_; } - /*! - @brief Finds \em crwTagId in directory \em crwDir in the parse tree, - returning a pointer to the component or 0 if not found. - */ - CiffComponent* findComponent(uint16_t crwTagId, uint16_t crwDir) const; - //@} - - private: - // DATA - static const char signature_[]; //!< Canon CRW signature "HEAPCCDR" - - CiffDirectory* pRootDir_; //!< Pointer to the root directory - ByteOrder byteOrder_; //!< Applicable byte order - uint32_t offset_; //!< Offset to the start of the root dir - byte* pPadding_; //!< Pointer to the (unknown) remainder - uint32_t padded_; //!< Number of padding-bytes - - }; // class CiffHeader - - //! Structure for the CIFF directory hierarchy - struct CrwSubDir { - uint16_t crwDir_; //!< Directory tag - uint16_t parent_; //!< Parent directory tag - }; // struct CrwSubDir - - /*! - @brief Structure for a mapping table for conversion of CIFF entries to - image metadata and vice versa. - */ - struct CrwMapping { - //! @name Creators - //@{ - //! Default constructor - CrwMapping( - uint16_t crwTagId, - uint16_t crwDir, - uint32_t size, - uint16_t tag, - Internal::IfdId ifdId, - CrwDecodeFct toExif, - CrwEncodeFct fromExif) - : crwTagId_ (crwTagId), - crwDir_ (crwDir), - size_ (size), - tag_ (tag), - ifdId_ (ifdId), - toExif_ (toExif), - fromExif_ (fromExif) - {} - //@} - - // DATA - uint16_t crwTagId_; //!< CRW tag id - uint16_t crwDir_; //!< CRW directory tag - uint32_t size_; //!< Data size (overwrites the size from the entry) - uint16_t tag_; //!< Exif tag to map to - IfdId ifdId_; //!< Exif Ifd id to map to - CrwDecodeFct toExif_; //!< Conversion function - CrwEncodeFct fromExif_; //!< Reverse conversion function - - }; // struct CrwMapping - - /*! - @brief Static class providing mapping functionality from CRW entries - to image metadata and vice versa - */ - class CrwMap { - //! @name Not implemented - //@{ - //! Default constructor - CrwMap(); - //@} - - public: - /*! - @brief Decode image metadata from a CRW entry, convert and add it - to the image metadata. This function converts only one CRW - component. - - @param ciffComponent Source CIFF entry - @param image Destination image for the metadata - @param byteOrder Byte order in which the data of the entry - is encoded - */ - static void decode(const CiffComponent& ciffComponent, - Image& image, - ByteOrder byteOrder); - /*! - @brief Encode image metadata from \em image into the CRW parse tree. - This function converts all Exif metadata that %Exiv2 can - convert to CRW format, in a loop through the entries of the - mapping table. - - @param pHead Destination parse tree. - @param image Source image containing the metadata. - */ - static void encode(CiffHeader* pHead, const Image& image); - - /*! - @brief Load the stack: loop through the CRW subdirs hierarchy and push - all directories on the path from \em crwDir to root onto the - stack \em crwDirs. Requires the subdirs array to be arranged in - bottom-up order to be able to finish in only one pass. - */ - static void loadStack(CrwDirs& crwDirs, uint16_t crwDir); - - private: - //! Return conversion information for one \em crwDir and \em crwTagId - static const CrwMapping* crwMapping(uint16_t crwDir, uint16_t crwTagId); - - /*! - @brief Standard decode function to convert CRW entries to - Exif metadata. - - Uses the mapping defined in the conversion structure \em pCrwMapping - to convert the data. If the \em size field in the conversion structure - is not 0, then it is used instead of the \em size provided by the - entry itself. - */ - static void decodeBasic(const CiffComponent& ciffComponent, - const CrwMapping* pCrwMapping, - Image& image, - ByteOrder byteOrder); - - //! Decode the user comment - static void decode0x0805(const CiffComponent& ciffComponent, - const CrwMapping* pCrwMapping, - Image& image, - ByteOrder byteOrder); - - //! Decode camera Make and Model information - static void decode0x080a(const CiffComponent& ciffComponent, - const CrwMapping* pCrwMapping, - Image& image, - ByteOrder byteOrder); - - //! Decode Canon Camera Settings 1, 2 and Custom Function arrays - static void decodeArray(const CiffComponent& ciffComponent, - const CrwMapping* pCrwMapping, - Image& image, - ByteOrder byteOrder); - - //! Decode the date when the picture was taken - static void decode0x180e(const CiffComponent& ciffComponent, - const CrwMapping* pCrwMapping, - Image& image, - ByteOrder byteOrder); - - //! Decode image width and height - static void decode0x1810(const CiffComponent& ciffComponent, - const CrwMapping* pCrwMapping, - Image& image, - ByteOrder byteOrder); - - //! Decode the thumbnail image - static void decode0x2008(const CiffComponent& ciffComponent, - const CrwMapping* pCrwMapping, - Image& image, - ByteOrder byteOrder); - - /*! - @brief Standard encode function to convert Exif metadata to Crw - entries. - - This is the basic encode function taking one Exif key and converting - it to one Ciff entry. Both are available in the \em pCrwMapping passed - in. - - @param image Image with the metadata to encode - @param pCrwMapping Pointer to an entry into the \em crwMapping_ table - with information on the source and target metadata entries. - @param pHead Pointer to the head of the CIFF parse tree into which - the metadata from \em image is encoded. - */ - static void encodeBasic(const Image& image, - const CrwMapping* pCrwMapping, - CiffHeader* pHead); - - //! Encode the user comment - static void encode0x0805(const Image& image, - const CrwMapping* pCrwMapping, - CiffHeader* pHead); - - //! Encode camera Make and Model information - static void encode0x080a(const Image& image, - const CrwMapping* pCrwMapping, - CiffHeader* pHead); - - //! Encode Canon Camera Settings 1, 2 and Custom Function arrays - static void encodeArray(const Image& image, - const CrwMapping* pCrwMapping, - CiffHeader* pHead); - - //! Encode the date when the picture was taken - static void encode0x180e(const Image& image, - const CrwMapping* pCrwMapping, - CiffHeader* pHead); - - //! Encode image width and height - static void encode0x1810(const Image& image, - const CrwMapping* pCrwMapping, - CiffHeader* pHead); - - //! Encode the thumbnail image - static void encode0x2008(const Image& image, - const CrwMapping* pCrwMapping, - CiffHeader* pHead); - private: - // DATA - static const CrwMapping crwMapping_[]; //!< Metadata conversion table - static const CrwSubDir crwSubDir_[]; //!< Ciff directory hierarchy - - }; // class CrwMap - -// ***************************************************************************** -// template, inline and free functions - - /*! - @brief Pack the tag values of all \em ifdId tags in \em exifData into a - data buffer. This function is used to pack Canon Camera Settings1,2 - and Custom Function tags. - */ - DataBuf packIfdId(const ExifData& exifData, - IfdId ifdId, - ByteOrder byteOrder); - -}} // namespace Internal, Exiv2 - -#endif // #ifndef CRWIMAGE_INT_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/crwparse.cpp b/platform/win32/msvc/external/exiv2/src/crwparse.cpp deleted file mode 100644 index 8d719e12b8c..00000000000 --- a/platform/win32/msvc/external/exiv2/src/crwparse.cpp +++ /dev/null @@ -1,47 +0,0 @@ -// ***************************************************************** -*- C++ -*- -// crwparse.cpp, $Rev: 1560 $ -// Print the CIFF structure of a CRW file - -#include "crwimage.hpp" -#include "crwimage_int.hpp" -#include "futils.hpp" - -#include - -int main(int argc, char* const argv[]) -try { - if (argc != 2) { - std::cout << "Usage: " << argv[0] << " file\n"; - std::cout << "Print the CIFF structure of a CRW file\n"; - return 1; - } - - Exiv2::FileIo io(argv[1]); - if(io.open() != 0) { - throw Exiv2::Error(9, io.path(), Exiv2::strError()); - } - Exiv2::IoCloser closer(io); - - // Ensure that this is a CRW image - if (!Exiv2::isCrwType(io, false)) { - if (io.error() || io.eof()) throw Exiv2::Error(14); - throw Exiv2::Error(33); - } - - // Read the image into a memory buffer - long len = io.size(); - Exiv2::DataBuf buf(len); - io.read(buf.pData_, len); - if (io.error() || io.eof()) throw Exiv2::Error(14); - - // Parse the image, starting with a CIFF header component - Exiv2::Internal::CiffHeader::AutoPtr parseTree(new Exiv2::Internal::CiffHeader); - parseTree->read(buf.pData_, buf.size_); - parseTree->print(std::cout); - - return 0; -} -catch (Exiv2::AnyError& e) { - std::cerr << e << "\n"; - return -1; -} diff --git a/platform/win32/msvc/external/exiv2/src/datasets.cpp b/platform/win32/msvc/external/exiv2/src/datasets.cpp deleted file mode 100644 index 60fec5c8835..00000000000 --- a/platform/win32/msvc/external/exiv2/src/datasets.cpp +++ /dev/null @@ -1,734 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: datasets.cpp - Version: $Rev: 2681 $ - Author(s): Brad Schick (brad) - Gilles Caulier (gc) - History: 24-Jul-04, brad: created - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: datasets.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#include "datasets.hpp" -#include "error.hpp" -#include "types.hpp" -#include "value.hpp" -#include "metadatum.hpp" -#include "i18n.h" // NLS support. - -#include -#include -#include - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - DataSet::DataSet( - uint16_t number, - const char* name, - const char* title, - const char* desc, - bool mandatory, - bool repeatable, - uint32_t minbytes, - uint32_t maxbytes, - TypeId type, - uint16_t recordId, - const char* photoshop - ) - : number_(number), name_(name), title_(title), desc_(desc), - mandatory_(mandatory), repeatable_(repeatable), minbytes_(minbytes), - maxbytes_(maxbytes), type_(type), recordId_(recordId), - photoshop_(photoshop) - { - } - - RecordInfo::RecordInfo( - uint16_t recordId, - const char* name, - const char* desc - ) - : recordId_(recordId), name_(name), desc_(desc) - { - } - - const RecordInfo IptcDataSets::recordInfo_[] = { - RecordInfo(IptcDataSets::invalidRecord, "(invalid)", N_("(invalid)")), - RecordInfo(IptcDataSets::envelope, "Envelope", N_("IIM envelope record")), - RecordInfo(IptcDataSets::application2, "Application2", N_("IIM application record 2")), - }; - - static const DataSet envelopeRecord[] = { - DataSet(IptcDataSets::ModelVersion, "ModelVersion", N_("Model Version"), - N_("A binary number identifying the version of the Information " - "Interchange Model, Part I, utilised by the provider. Version " - "numbers are assigned by IPTC and NAA organizations."), - true, false, 2, 2, Exiv2::unsignedShort, IptcDataSets::envelope, ""), - DataSet(IptcDataSets::Destination, "Destination", N_("Destination"), - N_("This DataSet is to accommodate some providers who require " - "routing information above the appropriate OSI layers."), - false, true, 0, 1024, Exiv2::string, IptcDataSets::envelope, ""), - DataSet(IptcDataSets::FileFormat, "FileFormat", N_("File Format"), - N_("A binary number representing the file format. The file format " - "must be registered with IPTC or NAA with a unique number " - "assigned to it. The information is used to route " - "the data to the appropriate system and to allow the receiving " - "system to perform the appropriate actions there to."), - true, false, 2, 2, Exiv2::unsignedShort, IptcDataSets::envelope, ""), - DataSet(IptcDataSets::FileVersion, "FileVersion", N_("File Version"), - N_("A binary number representing the particular version of the File " - "Format specified by tag."), - true, false, 2, 2, Exiv2::unsignedShort, IptcDataSets::envelope, ""), - DataSet(IptcDataSets::ServiceId, "ServiceId", N_("Service Id"), - N_("Identifies the provider and product"), - true, false, 0, 10, Exiv2::string, IptcDataSets::envelope, ""), - DataSet(IptcDataSets::EnvelopeNumber, "EnvelopeNumber", N_("Envelope Number"), - N_("The characters form a number that will be unique for the date " - "specified in tag and for the Service Identifier " - "specified by tag. " - "If identical envelope numbers appear with the same date and " - "with the same Service Identifier, records 2-9 must be unchanged " - "from the original. This is not intended to be a sequential serial " - "number reception check."), - true, false, 8, 8, Exiv2::string, IptcDataSets::envelope, ""), - DataSet(IptcDataSets::ProductId, "ProductId", N_("Product Id"), - N_("Allows a provider to identify subsets of its overall service. Used " - "to provide receiving organisation data on which to select, route, " - "or otherwise handle data."), - false, true, 0, 32, Exiv2::string, IptcDataSets::envelope, ""), - DataSet(IptcDataSets::EnvelopePriority, "EnvelopePriority", N_("Envelope Priority"), - N_("Specifies the envelope handling priority and not the editorial " - "urgency (see tag). \"1\" indicates the most urgent, \"5\" " - "the normal urgency, and \"8\" the least urgent copy. The numeral " - "\"9\" indicates a User Defined Priority. The numeral \"0\" is reserved " - "for future use."), - false, false, 1, 1, Exiv2::string, IptcDataSets::envelope, ""), - DataSet(IptcDataSets::DateSent, "DateSent", N_("Date Sent"), - N_("Uses the format CCYYMMDD (century, year, month, day) as de-fined " - "in ISO 8601 to indicate year, month and day the service sent the material."), - true, false, 8, 8, Exiv2::date, IptcDataSets::envelope, ""), - DataSet(IptcDataSets::TimeSent, "TimeSent", N_("Time Sent"), - N_("Uses the format HHMMSS:HHMM where HHMMSS refers to " - "local hour, minute and seconds and HHMM refers to hours and " - "minutes ahead (+) or behind (-) Universal Coordinated Time as " - "described in ISO 8601. This is the time the service sent the material."), - false, false, 11, 11, Exiv2::time, IptcDataSets::envelope, ""), - DataSet(IptcDataSets::CharacterSet, "CharacterSet", N_("Character Set"), - N_("This tag consisting of one or more control functions used for the announcement, " - "invocation or designation of coded character sets. The control functions follow " - "the ISO 2022 standard and may consist of the escape control " - "character and one or more graphic characters."), - false, false, 0, 32, Exiv2::string, IptcDataSets::envelope, ""), - DataSet(IptcDataSets::UNO, "UNO", N_("Unique Name Object"), - N_("This tag provide a globally unique " - "identification for objects as specified in the IIM, independent of " - "provider and for any media form. The provider must ensure the " - "UNO is unique. Objects with the same UNO are identical."), - false, false, 14, 80, Exiv2::string, IptcDataSets::envelope, ""), - DataSet(IptcDataSets::ARMId, "ARMId", N_("ARM Identifier"), - N_("The DataSet identifies the Abstract Relationship Method identifier (ARM) " - "which is described in a document registered by the originator of " - "the ARM with the IPTC and NAA organizations."), - false, false, 2, 2, Exiv2::unsignedShort, IptcDataSets::envelope, ""), - DataSet(IptcDataSets::ARMVersion, "ARMVersion", N_("ARM Version"), - N_("This tag consisting of a binary number representing the particular " - "version of the ARM specified by tag ."), - false, false, 2, 2, Exiv2::unsignedShort, IptcDataSets::envelope, ""), - DataSet(0xffff, "(Invalid)", "(Invalid)", - "(Invalid)", false, false, 0, 0, Exiv2::unsignedShort, IptcDataSets::envelope, "") - }; - - const DataSet* IptcDataSets::envelopeRecordList() - { - return envelopeRecord; - } - - static const DataSet application2Record[] = { - DataSet(IptcDataSets::RecordVersion, "RecordVersion", N_("Record Version"), - N_("A binary number identifying the version of the Information " - "Interchange Model, Part II, utilised by the provider. " - "Version numbers are assigned by IPTC and NAA organizations."), - true, false, 2, 2, Exiv2::unsignedShort, IptcDataSets::application2, ""), - DataSet(IptcDataSets::ObjectType, "ObjectType", N_("Object Type"), - N_("The Object Type is used to distinguish between different types " - "of objects within the IIM. The first part is a number representing " - "a language independent international reference to an Object Type " - "followed by a colon separator. The second part, if used, is a text " - "representation of the Object Type Number consisting of graphic " - "characters plus spaces either in English or in the language of the " - "service as indicated in tag "), - false, false, 3, 67, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::ObjectAttribute, "ObjectAttribute", N_("Object Attribute"), - N_("The Object Attribute defines the nature of the object " - "independent of the Subject. The first part is a number representing " - "a language independent international reference to an Object Attribute " - "followed by a colon separator. The second part, if used, is a text " - "representation of the Object Attribute Number consisting of graphic " - "characters plus spaces either in English, or in the language of the " - "service as indicated in tag "), - false, true, 4, 68, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::ObjectName, "ObjectName", N_("Object Name"), - N_("Used as a shorthand reference for the object. Changes to exist-ing " - "data, such as updated stories or new crops on photos, should be " - "identified in tag ."), - false, false, 0, 64, Exiv2::string, IptcDataSets::application2, - N_("Document Title")), - DataSet(IptcDataSets::EditStatus, "EditStatus", N_("Edit Status"), - N_("Status of the object data, according to the practice of the provider."), - false, false, 0, 64, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::EditorialUpdate, "EditorialUpdate", N_("Editorial Update"), - N_("Indicates the type of update that this object provides to a " - "previous object. The link to the previous object is made using " - "the tags and , according to the practices of the provider."), - false, false, 2, 2, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::Urgency, "Urgency", N_("Urgency"), - N_("Specifies the editorial urgency of content and not necessarily the " - "envelope handling priority (see tag ). The \"1\" " - "is most urgent, \"5\" normal and \"8\" denotes the least-urgent copy."), - false, false, 1, 1, Exiv2::string, IptcDataSets::application2, - N_("Urgency")), - DataSet(IptcDataSets::Subject, "Subject", N_("Subject"), - N_("The Subject Reference is a structured definition of the subject matter."), - false, true, 13, 236, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::Category, "Category", N_("Category"), - N_("Identifies the subject of the object data in the opinion of the provider. " - "A list of categories will be maintained by a regional registry, " - "where available, otherwise by the provider."), - false, false, 0, 3, Exiv2::string, IptcDataSets::application2, - N_("Category")), - DataSet(IptcDataSets::SuppCategory, "SuppCategory", N_("Supplemental Category"), - N_("Supplemental categories further refine the subject of an " - "object data. A supplemental category may include " - "any of the recognised categories as used in tag . Otherwise, " - "selection of supplemental categories are left to the provider."), - false, true, 0, 32, Exiv2::string, IptcDataSets::application2, - N_("Supplemental Categories")), - DataSet(IptcDataSets::FixtureId, "FixtureId", N_("Fixture Id"), - N_("Identifies object data that recurs often and predictably. Enables " - "users to immediately find or recall such an object."), - false, false, 0, 32, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::Keywords, "Keywords", N_("Keywords"), - N_("Used to indicate specific information retrieval words. " - "It is expected that a provider of various types of data that are related " - "in subject matter uses the same keyword, enabling the receiving system " - "or subsystems to search across all types of data for related material."), - false, true, 0, 64, Exiv2::string, IptcDataSets::application2, - N_("Keywords")), - DataSet(IptcDataSets::LocationCode, "LocationCode", N_("Location Code"), - N_("Indicates the code of a country/geographical location referenced " - "by the content of the object. Where ISO has established an appropriate " - "country code under ISO 3166, that code will be used. When ISO 3166 does not " - "adequately provide for identification of a location or a country, " - "e.g. ships at sea, space, IPTC will assign an appropriate three-character " - "code under the provisions of ISO 3166 to avoid conflicts."), - false, true, 3, 3, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::LocationName, "LocationName", N_("Location Name"), - N_("Provides a full, publishable name of a country/geographical " - "location referenced by the content of the object, according to " - "guidelines of the provider."), - false, true, 0, 64, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::ReleaseDate, "ReleaseDate", N_("Release Date"), - N_("Designates in the form CCYYMMDD the earliest date the " - "provider intends the object to be used. Follows ISO 8601 standard."), - false, false, 8, 8, Exiv2::date, IptcDataSets::application2, ""), - DataSet(IptcDataSets::ReleaseTime, "ReleaseTime", N_("Release Time"), - N_("Designates in the form HHMMSS:HHMM the earliest time the " - "provider intends the object to be used. Follows ISO 8601 standard."), - false, false, 11, 11, Exiv2::time, IptcDataSets::application2, ""), - DataSet(IptcDataSets::ExpirationDate, "ExpirationDate", N_("Expiration Date"), - N_("Designates in the form CCYYMMDD the latest date the provider " - "or owner intends the object data to be used. Follows ISO 8601 standard."), - false, false, 8, 8, Exiv2::date, IptcDataSets::application2, ""), - DataSet(IptcDataSets::ExpirationTime, "ExpirationTime", N_("ExpirationTime"), - N_("Designates in the form HHMMSS:HHMM the latest time the " - "provider or owner intends the object data to be used. Follows ISO 8601 standard."), - false, false, 11, 11, Exiv2::time, IptcDataSets::application2, ""), - DataSet(IptcDataSets::SpecialInstructions, "SpecialInstructions", N_("Special Instructions"), - N_("Other editorial instructions concerning the use of the object data, " - "such as embargoes and warnings."), - false, false, 0, 256, Exiv2::string, IptcDataSets::application2, - N_("Instructions")), - DataSet(IptcDataSets::ActionAdvised, "ActionAdvised", N_("Action Advised"), - N_("Indicates the type of action that this object provides to a " - "previous object. The link to the previous object is made using " - "tags and , according to the practices of the provider."), - false, false, 2, 2, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::ReferenceService, "ReferenceService", N_("Reference Service"), - N_("Identifies the Service Identifier of a prior envelope to which the " - "current object refers."), - false, true, 0, 10, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::ReferenceDate, "ReferenceDate", N_("Reference Date"), - N_("Identifies the date of a prior envelope to which the current object refers."), - false, true, 8, 8, Exiv2::date, IptcDataSets::application2, ""), - DataSet(IptcDataSets::ReferenceNumber, "ReferenceNumber", N_("Reference Number"), - N_("Identifies the Envelope Number of a prior envelope to which the current object refers."), - false, true, 8, 8, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::DateCreated, "DateCreated", N_("Date Created"), - N_("Represented in the form CCYYMMDD to designate the date the " - "intellectual content of the object data was created rather than the " - "date of the creation of the physical representation. Follows ISO 8601 standard."), - false, false, 8, 8, Exiv2::date, IptcDataSets::application2, - N_("Date Created")), - DataSet(IptcDataSets::TimeCreated, "TimeCreated", N_("Time Created"), - N_("Represented in the form HHMMSS:HHMM to designate the " - "time the intellectual content of the object data current source " - "material was created rather than the creation of the physical " - "representation. Follows ISO 8601 standard."), - false, false, 11, 11, Exiv2::time, IptcDataSets::application2, ""), - DataSet(IptcDataSets::DigitizationDate, "DigitizationDate", N_("Digitization Date"), - N_("Represented in the form CCYYMMDD to designate the date the " - "digital representation of the object data was created. Follows ISO 8601 standard."), - false, false, 8, 8, Exiv2::date, IptcDataSets::application2, ""), - DataSet(IptcDataSets::DigitizationTime, "DigitizationTime", N_("Digitization Time"), - N_("Represented in the form HHMMSS:HHMM to designate the " - "time the digital representation of the object data was created. " - "Follows ISO 8601 standard."), - false, false, 11, 11, Exiv2::time, IptcDataSets::application2, ""), - DataSet(IptcDataSets::Program, "Program", N_("Program"), - N_("Identifies the type of program used to originate the object data."), - false, false, 0, 32, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::ProgramVersion, "ProgramVersion", N_("Program Version"), - N_("Used to identify the version of the program mentioned in tag ."), - false, false, 0, 10, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::ObjectCycle, "ObjectCycle", N_("Object Cycle"), - N_("Used to identify the editorial cycle of object data."), - false, false, 1, 1, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::Byline, "Byline", N_("By-line"), - N_("Contains name of the creator of the object data, e.g. writer, photographer " - "or graphic artist."), - false, true, 0, 32, Exiv2::string, IptcDataSets::application2, - N_("Author")), - DataSet(IptcDataSets::BylineTitle, "BylineTitle", N_("By-line Title"), - N_("A by-line title is the title of the creator or creators of an " - "object data. Where used, a by-line title should follow the by-line it modifies."), - false, true, 0, 32, Exiv2::string, IptcDataSets::application2, "Authors Position"), - DataSet(IptcDataSets::City, "City", N_("City"), - N_("Identifies city of object data origin according to guidelines established " - "by the provider."), - false, false, 0, 32, Exiv2::string, IptcDataSets::application2, - N_("City")), - DataSet(IptcDataSets::SubLocation, "SubLocation", N_("Sub Location"), - N_("Identifies the location within a city from which the object data " - "originates, according to guidelines established by the provider."), - false, false, 0, 32, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::ProvinceState, "ProvinceState", N_("Province State"), - N_("Identifies Province/State of origin according to guidelines " - "established by the provider."), - false, false, 0, 32, Exiv2::string, IptcDataSets::application2, - N_("State/Province")), - DataSet(IptcDataSets::CountryCode, "CountryCode", N_("Country Code"), - N_("Indicates the code of the country/primary location where the " - "intellectual property of the object data was created, e.g. a photo " - "was taken, an event occurred. Where ISO has established an appropriate " - "country code under ISO 3166, that code will be used. When ISO 3166 does not " - "adequately provide for identification of a location or a new " - "country, e.g. ships at sea, space, IPTC will assign an " - "appropriate three-character code under the provisions of " - "ISO 3166 to avoid conflicts."), - false, false, 3, 3, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::CountryName, "CountryName", N_("Country Name"), - N_("Provides full, publishable, name of the country/primary location " - "where the intellectual property of the object data was created, " - "according to guidelines of the provider."), - false, false, 0, 64, Exiv2::string, IptcDataSets::application2, - N_("Country")), - DataSet(IptcDataSets::TransmissionReference, "TransmissionReference", N_("Transmission Reference"), - N_("A code representing the location of original transmission according " - "to practices of the provider."), - false, false, 0, 32, Exiv2::string, IptcDataSets::application2, - N_("Transmission Reference")), - DataSet(IptcDataSets::Headline, "Headline", N_("Headline"), - N_("A publishable entry providing a synopsis of the contents of the object data."), - false, false, 0, 256, Exiv2::string, IptcDataSets::application2, - N_("Headline")), - DataSet(IptcDataSets::Credit, "Credit", N_("Credit"), - N_("Identifies the provider of the object data, not necessarily the owner/creator."), - false, false, 0, 32, Exiv2::string, IptcDataSets::application2, - N_("Credit")), - DataSet(IptcDataSets::Source, "Source", N_("Source"), - N_("Identifies the original owner of the intellectual content of the " - "object data. This could be an agency, a member of an agency or an individual."), - false, false, 0, 32, Exiv2::string, IptcDataSets::application2, - N_("Source")), - DataSet(IptcDataSets::Copyright, "Copyright", N_("Copyright"), - N_("Contains any necessary copyright notice."), - false, false, 0, 128, Exiv2::string, IptcDataSets::application2, - N_("Copyright Notice")), - DataSet(IptcDataSets::Contact, "Contact", N_("Contact"), - N_("Identifies the person or organisation which can provide further " - "background information on the object data."), - false, true, 0, 128, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::Caption, "Caption", N_("Caption"), - N_("A textual description of the object data."), - false, false, 0, 2000, Exiv2::string, IptcDataSets::application2, - N_("Description")), - DataSet(IptcDataSets::Writer, "Writer", N_("Writer"), - N_("Identification of the name of the person involved in the writing, " - "editing or correcting the object data or caption/abstract."), - false, true, 0, 32, Exiv2::string, IptcDataSets::application2, "Description writer"), - DataSet(IptcDataSets::RasterizedCaption, "RasterizedCaption", N_("Rasterized Caption"), - N_("Contains the rasterized object data description and is used " - "where characters that have not been coded are required for the caption."), - false, false, 7360, 7360, Exiv2::undefined, IptcDataSets::application2, ""), - DataSet(IptcDataSets::ImageType, "ImageType", N_("Image Type"), - N_("Indicates the color components of an image."), - false, false, 2, 2, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::ImageOrientation, "ImageOrientation", N_("Image Orientation"), - N_("Indicates the layout of an image."), - false, false, 1, 1, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::Language, "Language", N_("Language"), - N_("Describes the major national language of the object, according " - "to the 2-letter codes of ISO 639:1988. Does not define or imply " - "any coded character set, but is used for internal routing, e.g. to " - "various editorial desks."), - false, false, 2, 3, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::AudioType, "AudioType", N_("Audio Type"), - N_("Indicates the type of an audio content."), - false, false, 2, 2, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::AudioRate, "AudioRate", N_("Audio Rate"), - N_("Indicates the sampling rate in Hertz of an audio content."), - false, false, 6, 6, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::AudioResolution, "AudioResolution", N_("Audio Resolution"), - N_("Indicates the sampling resolution of an audio content."), - false, false, 2, 2, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::AudioDuration, "AudioDuration", N_("Audio Duration"), - N_("Indicates the duration of an audio content."), - false, false, 6, 6, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::AudioOutcue, "AudioOutcue", N_("Audio Outcue"), - N_("Identifies the content of the end of an audio object data, " - "according to guidelines established by the provider."), - false, false, 0, 64, Exiv2::string, IptcDataSets::application2, ""), - DataSet(IptcDataSets::PreviewFormat, "PreviewFormat", N_("Preview Format"), - N_("A binary number representing the file format of the object data " - "preview. The file format must be registered with IPTC or NAA organizations " - "with a unique number assigned to it."), - false, false, 2, 2, Exiv2::unsignedShort, IptcDataSets::application2, ""), - DataSet(IptcDataSets::PreviewVersion, "PreviewVersion", N_("Preview Version"), - N_("A binary number representing the particular version of the " - "object data preview file format specified in tag ."), - false, false, 2, 2, Exiv2::unsignedShort, IptcDataSets::application2, ""), - DataSet(IptcDataSets::Preview, "Preview", N_("Preview Data"), - N_("Binary image preview data."), - false, false, 0, 256000, Exiv2::undefined, IptcDataSets::application2, ""), - DataSet(0xffff, "(Invalid)", N_("(Invalid)"), - N_("(Invalid)"), - false, false, 0, 0, Exiv2::unsignedShort, IptcDataSets::application2, "") - }; - - const DataSet* IptcDataSets::application2RecordList() - { - return application2Record; - } - - static const DataSet unknownDataSet(0xffff, "Unknown dataset", N_("Unknown dataset"), - N_("Unknown dataset"), - false, true, 0, 0xffffffff, Exiv2::string, - IptcDataSets::invalidRecord, - N_("Unknown dataset")); - - // Dataset lookup lists.This is an array with pointers to one list per IIM4 Record. - // The record id is used as the index into the array. - const DataSet* IptcDataSets::records_[] = { - 0, - envelopeRecord, application2Record, - 0 - }; - - int IptcDataSets::dataSetIdx(uint16_t number, uint16_t recordId) - { - if( recordId != envelope && recordId != application2 ) return -1; - const DataSet* dataSet = records_[recordId]; - if (dataSet == 0) return -1; - int idx; - for (idx = 0; dataSet[idx].number_ != number; ++idx) { - if (dataSet[idx].number_ == 0xffff) return -1; - } - return idx; - } - - int IptcDataSets::dataSetIdx(const std::string& dataSetName, uint16_t recordId) - { - if( recordId != envelope && recordId != application2 ) return -1; - const DataSet* dataSet = records_[recordId]; - if (dataSet == 0) return -1; - int idx; - for (idx = 0; dataSet[idx].name_ != dataSetName; ++idx) { - if (dataSet[idx].number_ == 0xffff) return -1; - } - return idx; - } - - TypeId IptcDataSets::dataSetType(uint16_t number, uint16_t recordId) - { - int idx = dataSetIdx(number, recordId); - if (idx == -1) return unknownDataSet.type_; - return records_[recordId][idx].type_; - } - - std::string IptcDataSets::dataSetName(uint16_t number, uint16_t recordId) - { - int idx = dataSetIdx(number, recordId); - if (idx != -1) return records_[recordId][idx].name_; - - std::ostringstream os; - os << "0x" << std::setw(4) << std::setfill('0') << std::right - << std::hex << number; - return os.str(); - } - - const char* IptcDataSets::dataSetTitle(uint16_t number, uint16_t recordId) - { - int idx = dataSetIdx(number, recordId); - if (idx == -1) return unknownDataSet.title_; - return records_[recordId][idx].title_; - } - - const char* IptcDataSets::dataSetDesc(uint16_t number, uint16_t recordId) - { - int idx = dataSetIdx(number, recordId); - if (idx == -1) return unknownDataSet.desc_; - return records_[recordId][idx].desc_; - } - - const char* IptcDataSets::dataSetPsName(uint16_t number, uint16_t recordId) - { - int idx = dataSetIdx(number, recordId); - if (idx == -1) return unknownDataSet.photoshop_; - return records_[recordId][idx].photoshop_; - } - - bool IptcDataSets::dataSetRepeatable(uint16_t number, uint16_t recordId) - { - int idx = dataSetIdx(number, recordId); - if (idx == -1) return unknownDataSet.repeatable_; - return records_[recordId][idx].repeatable_; - } - - uint16_t IptcDataSets::dataSet(const std::string& dataSetName, - uint16_t recordId) - { - uint16_t dataSet; - int idx = dataSetIdx(dataSetName, recordId); - if (idx != -1) { - // dataSetIdx checks the range of recordId - dataSet = records_[recordId][idx].number_; - } - else { - if (!isHex(dataSetName, 4, "0x")) throw Error(4, dataSetName); - std::istringstream is(dataSetName); - is >> std::hex >> dataSet; - } - return dataSet; - } - - std::string IptcDataSets::recordName(uint16_t recordId) - { - if (recordId == envelope || recordId == application2) { - return recordInfo_[recordId].name_; - } - - std::ostringstream os; - os << "0x" << std::setw(4) << std::setfill('0') << std::right - << std::hex << recordId; - return os.str(); - } - - const char* IptcDataSets::recordDesc(uint16_t recordId) - { - if (recordId != envelope && recordId != application2) { - return unknownDataSet.desc_; - } - return recordInfo_[recordId].desc_; - } - - uint16_t IptcDataSets::recordId(const std::string& recordName) - { - uint16_t i; - for (i = application2; i > 0; --i) { - if (recordInfo_[i].name_ == recordName) break; - } - if (i == 0) { - if (!isHex(recordName, 4, "0x")) throw Error(5, recordName); - std::istringstream is(recordName); - is >> std::hex >> i; - } - return i; - } - - void IptcDataSets::dataSetList(std::ostream& os) - { - const int count = sizeof(records_)/sizeof(records_[0]); - for (int i=0; i < count; ++i) { - const DataSet *record = records_[i]; - for (int j=0; record != 0 && record[j].number_ != 0xffff; ++j) { - os << record[j] << "\n"; - } - } - } // IptcDataSets::dataSetList - - const char* IptcKey::familyName_ = "Iptc"; - - IptcKey::IptcKey(const std::string& key) - : key_(key) - { - decomposeKey(); - } - - IptcKey::IptcKey(uint16_t tag, uint16_t record) - : tag_(tag), record_(record) - { - makeKey(); - } - - IptcKey::IptcKey(const IptcKey& rhs) - : Key(rhs), tag_(rhs.tag_), record_(rhs.record_), key_(rhs.key_) - { - } - - IptcKey::~IptcKey() - { - } - - IptcKey& IptcKey::operator=(const IptcKey& rhs) - { - if (this == &rhs) return *this; - Key::operator=(rhs); - tag_ = rhs.tag_; - record_ = rhs.record_; - key_ = rhs.key_; - return *this; - } - - std::string IptcKey::key() const - { - return key_; - } - - const char* IptcKey::familyName() const - { - return familyName_; - } - - std::string IptcKey::groupName() const - { - return recordName(); - } - - std::string IptcKey::tagName() const - { - return IptcDataSets::dataSetName(tag_, record_); - } - - std::string IptcKey::tagLabel() const - { - return IptcDataSets::dataSetTitle(tag_, record_); - } - - uint16_t IptcKey::tag() const - { - return tag_; - } - - std::string IptcKey::recordName() const - { - return IptcDataSets::recordName(record_); - } - - uint16_t IptcKey::record() const - { - return record_; - } - - IptcKey::AutoPtr IptcKey::clone() const - { - return AutoPtr(clone_()); - } - - IptcKey* IptcKey::clone_() const - { - return new IptcKey(*this); - } - - void IptcKey::decomposeKey() - { - // Get the family name, record name and dataSet name parts of the key - std::string::size_type pos1 = key_.find('.'); - if (pos1 == std::string::npos) throw Error(6, key_); - std::string familyName = key_.substr(0, pos1); - if (0 != strcmp(familyName.c_str(), familyName_)) { - throw Error(6, key_); - } - std::string::size_type pos0 = pos1 + 1; - pos1 = key_.find('.', pos0); - if (pos1 == std::string::npos) throw Error(6, key_); - std::string recordName = key_.substr(pos0, pos1 - pos0); - if (recordName == "") throw Error(6, key_); - std::string dataSetName = key_.substr(pos1 + 1); - if (dataSetName == "") throw Error(6, key_); - - // Use the parts of the key to find dataSet and recordId - uint16_t recId = IptcDataSets::recordId(recordName); - uint16_t dataSet = IptcDataSets::dataSet(dataSetName, recId); - - // Possibly translate hex name parts (0xabcd) to real names - recordName = IptcDataSets::recordName(recId); - dataSetName = IptcDataSets::dataSetName(dataSet, recId); - - tag_ = dataSet; - record_ = recId; - key_ = familyName + "." + recordName + "." + dataSetName; - } // IptcKey::decomposeKey - - void IptcKey::makeKey() - { - key_ = std::string(familyName_) - + "." + IptcDataSets::recordName(record_) - + "." + IptcDataSets::dataSetName(tag_, record_); - } - - // ************************************************************************* - // free functions - - std::ostream& operator<<(std::ostream& os, const DataSet& dataSet) - { - IptcKey iptcKey(dataSet.number_, dataSet.recordId_); - return os << dataSet.name_ << ", " - << std::dec << dataSet.number_ << ", " - << "0x" << std::setw(4) << std::setfill('0') - << std::right << std::hex << dataSet.number_ << ", " - << IptcDataSets::recordName(dataSet.recordId_) << ", " - << std::boolalpha << dataSet.mandatory_ << ", " - << dataSet.repeatable_ << ", " - << std::dec << dataSet.minbytes_ << ", " - << dataSet.maxbytes_ << ", " - << iptcKey.key() << ", " - << TypeInfo::typeName( - IptcDataSets::dataSetType(dataSet.number_, - dataSet.recordId_)) << ", " - << dataSet.desc_; - } - -} // namespace Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/datasets.hpp b/platform/win32/msvc/external/exiv2/src/datasets.hpp deleted file mode 100644 index f4ff2cd7fa6..00000000000 --- a/platform/win32/msvc/external/exiv2/src/datasets.hpp +++ /dev/null @@ -1,371 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file datasets.hpp - @brief IPTC dataset and type information - @version $Rev: 2681 $ - @author Brad Schick (brad) - @date 24-Jul-04, brad: created - */ -#ifndef DATASETS_HPP_ -#define DATASETS_HPP_ - -// ***************************************************************************** -// included header files -#include "types.hpp" -#include "metadatum.hpp" - -// + standard includes -#include -#include // for std::pair -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class definitions - - //! Details of an IPTC record. - struct EXIV2API RecordInfo { - //! Constructor - RecordInfo(uint16_t recordId, const char* name, const char* desc); - uint16_t recordId_; //!< Record id - const char* name_; //!< Record name (one word) - const char* desc_; //!< Record description - }; - - //! Details of an IPTC dataset. - struct EXIV2API DataSet { - //! Constructor - DataSet( - uint16_t number, - const char* name, - const char* title, - const char* desc, - bool mandatory, - bool repeatable, - uint32_t minbytes, - uint32_t maxbytes, - TypeId type, - uint16_t recordId, - const char* photoshop - ); - uint16_t number_; //!< Dataset number - const char* name_; //!< Dataset name - const char* title_; //!< Dataset title or label - const char* desc_; //!< Dataset description - bool mandatory_; //!< True if dataset is mandatory - bool repeatable_; //!< True if dataset is repeatable - uint32_t minbytes_; //!< Minimum number of bytes - uint32_t maxbytes_; //!< Maximum number of bytes - TypeId type_; //!< Exiv2 default type - uint16_t recordId_; //!< Record id - const char* photoshop_; //!< Photoshop string - }; // struct DataSet - - //! IPTC dataset reference, implemented as a static class. - class EXIV2API IptcDataSets { - public: - /*! - @name Record identifiers - @brief Record identifiers to logically group dataSets. There are other - possible record types, but they are not standardized by the IPTC - IIM4 standard (and not commonly used in images). - */ - //@{ - static const uint16_t invalidRecord = 0; - static const uint16_t envelope = 1; - static const uint16_t application2 = 2; - //@} - - //! @name Dataset identifiers - //@{ - static const uint16_t ModelVersion = 0; - static const uint16_t Destination = 5; - static const uint16_t FileFormat = 20; - static const uint16_t FileVersion = 22; - static const uint16_t ServiceId = 30; - static const uint16_t EnvelopeNumber = 40; - static const uint16_t ProductId = 50; - static const uint16_t EnvelopePriority = 60; - static const uint16_t DateSent = 70; - static const uint16_t TimeSent = 80; - static const uint16_t CharacterSet = 90; - static const uint16_t UNO = 100; - static const uint16_t ARMId = 120; - static const uint16_t ARMVersion = 122; - static const uint16_t RecordVersion = 0; - static const uint16_t ObjectType = 3; - static const uint16_t ObjectAttribute = 4; - static const uint16_t ObjectName = 5; - static const uint16_t EditStatus = 7; - static const uint16_t EditorialUpdate = 8; - static const uint16_t Urgency = 10; - static const uint16_t Subject = 12; - static const uint16_t Category = 15; - static const uint16_t SuppCategory = 20; - static const uint16_t FixtureId = 22; - static const uint16_t Keywords = 25; - static const uint16_t LocationCode = 26; - static const uint16_t LocationName = 27; - static const uint16_t ReleaseDate = 30; - static const uint16_t ReleaseTime = 35; - static const uint16_t ExpirationDate = 37; - static const uint16_t ExpirationTime = 38; - static const uint16_t SpecialInstructions = 40; - static const uint16_t ActionAdvised = 42; - static const uint16_t ReferenceService = 45; - static const uint16_t ReferenceDate = 47; - static const uint16_t ReferenceNumber = 50; - static const uint16_t DateCreated = 55; - static const uint16_t TimeCreated = 60; - static const uint16_t DigitizationDate = 62; - static const uint16_t DigitizationTime = 63; - static const uint16_t Program = 65; - static const uint16_t ProgramVersion = 70; - static const uint16_t ObjectCycle = 75; - static const uint16_t Byline = 80; - static const uint16_t BylineTitle = 85; - static const uint16_t City = 90; - static const uint16_t SubLocation = 92; - static const uint16_t ProvinceState = 95; - static const uint16_t CountryCode = 100; - static const uint16_t CountryName = 101; - static const uint16_t TransmissionReference = 103; - static const uint16_t Headline = 105; - static const uint16_t Credit = 110; - static const uint16_t Source = 115; - static const uint16_t Copyright = 116; - static const uint16_t Contact = 118; - static const uint16_t Caption = 120; - static const uint16_t Writer = 122; - static const uint16_t RasterizedCaption = 125; - static const uint16_t ImageType = 130; - static const uint16_t ImageOrientation = 131; - static const uint16_t Language = 135; - static const uint16_t AudioType = 150; - static const uint16_t AudioRate = 151; - static const uint16_t AudioResolution = 152; - static const uint16_t AudioDuration = 153; - static const uint16_t AudioOutcue = 154; - static const uint16_t PreviewFormat = 200; - static const uint16_t PreviewVersion = 201; - static const uint16_t Preview = 202; - //@} - - private: - //! Prevent construction: not implemented. - IptcDataSets() {} - //! Prevent copy-construction: not implemented. - IptcDataSets(const IptcDataSets& rhs); - //! Prevent assignment: not implemented. - IptcDataSets& operator=(const IptcDataSets& rhs); - - public: - /*! - @brief Return the name of the dataset. - @param number The dataset number - @param recordId The IPTC record Id - @return The name of the dataset or a string containing the hexadecimal - value of the dataset in the form "0x01ff", if this is an unknown - dataset. - */ - static std::string dataSetName(uint16_t number, uint16_t recordId); - /*! - @brief Return the title (label) of the dataset. - @param number The dataset number - @param recordId The IPTC record Id - @return The title (label) of the dataset - */ - static const char* dataSetTitle(uint16_t number, uint16_t recordId); - /*! - @brief Return the description of the dataset. - @param number The dataset number - @param recordId The IPTC record Id - @return The description of the dataset - */ - static const char* dataSetDesc(uint16_t number, uint16_t recordId); - /*! - @brief Return the photohsop name of a given dataset. - @param number The dataset number - @param recordId The IPTC record Id - @return The name used by photoshop for a dataset or an empty - string if photoshop does not use the dataset. - */ - static const char* dataSetPsName(uint16_t number, uint16_t recordId); - /*! - @brief Check if a given dataset is repeatable - @param number The dataset number - @param recordId The IPTC record Id - @return true if the given dataset is repeatable otherwise false - */ - static bool dataSetRepeatable(uint16_t number, uint16_t recordId); - /*! - @brief Return the dataSet number for dataset name and record id - - @param dataSetName dataSet name - @param recordId recordId - - @return dataSet number - - @throw Error if the \em dataSetName or \em recordId are invalid - */ - static uint16_t dataSet(const std::string& dataSetName, uint16_t recordId); - //! Return the type for dataSet number and Record id - static TypeId dataSetType(uint16_t number, uint16_t recordId); - /*! - @brief Return the name of the Record - @param recordId The record id - @return The name of the record or a string containing the hexadecimal - value of the record in the form "0x01ff", if this is an - unknown record. - */ - static std::string recordName(uint16_t recordId); - /*! - @brief Return the description of a record - @param recordId Record Id number - @return the description of the Record - */ - static const char* recordDesc(uint16_t recordId); - /*! - @brief Return the Id number of a record - @param recordName Name of a record type - @return the Id number of a Record - @throw Error if the record is not known; - */ - static uint16_t recordId(const std::string& recordName); - //! Return read-only list of built-in Envelope Record datasets - static const DataSet* envelopeRecordList(); - //! Return read-only list of built-in Application2 Record datasets - static const DataSet* application2RecordList(); - //! Print a list of all dataSets to output stream - static void dataSetList(std::ostream& os); - - private: - static int dataSetIdx(uint16_t number, uint16_t recordId); - static int dataSetIdx(const std::string& dataSetName, uint16_t recordId); - - static const DataSet* records_[]; - static const RecordInfo recordInfo_[]; - - }; // class IptcDataSets - - /*! - @brief Concrete keys for IPTC metadata. - */ - class EXIV2API IptcKey : public Key { - public: - //! Shortcut for an %IptcKey auto pointer. - typedef std::auto_ptr AutoPtr; - - //! @name Creators - //@{ - /*! - @brief Constructor to create an IPTC key from a key string. - - @param key The key string. - @throw Error if the first part of the key is not 'Iptc' or - the remaining parts of the key cannot be parsed and - converted to a record name and a dataset name. - */ - explicit IptcKey(const std::string& key); - /*! - @brief Constructor to create an IPTC key from dataset and record ids. - @param tag Dataset id - @param record Record id - */ - IptcKey(uint16_t tag, uint16_t record); - //! Copy constructor - IptcKey(const IptcKey& rhs); - //! Destructor - virtual ~IptcKey(); - //@} - - //! @name Manipulators - //@{ - /*! - @brief Assignment operator. - */ - IptcKey& operator=(const IptcKey& rhs); - //@} - - //! @name Accessors - //@{ - virtual std::string key() const; - virtual const char* familyName() const; - /*! - @brief Return the name of the group (the second part of the key). - For IPTC keys, the group name is the record name. - */ - virtual std::string groupName() const; - virtual std::string tagName() const; - virtual std::string tagLabel() const; - virtual uint16_t tag() const; - AutoPtr clone() const; - //! Return the name of the record - std::string recordName() const; - //! Return the record id - uint16_t record() const; - //@} - - protected: - //! @name Manipulators - //@{ - /*! - @brief Set the key corresponding to the dataset and record id. - The key is of the form 'Iptc.recordName.dataSetName'. - */ - void makeKey(); - /*! - @brief Parse and convert the key string into dataset and record id. - Updates data members if the string can be decomposed, or throws - \em Error. - - @throw Error if the key cannot be decomposed. - */ - void decomposeKey(); - //@} - - private: - //! Internal virtual copy constructor. - EXV_DLLLOCAL virtual IptcKey* clone_() const; - - // DATA - static const char* familyName_; - - uint16_t tag_; //!< Tag value - uint16_t record_; //!< Record value - std::string key_; //!< Key - - }; // class IptcKey - -// ***************************************************************************** -// free functions - - //! Output operator for dataSet - EXIV2API std::ostream& operator<<(std::ostream& os, const DataSet& dataSet); - -} // namespace Exiv2 - -#endif // #ifndef DATASETS_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/doxygen.hpp.in b/platform/win32/msvc/external/exiv2/src/doxygen.hpp.in deleted file mode 100644 index c6638817f62..00000000000 --- a/platform/win32/msvc/external/exiv2/src/doxygen.hpp.in +++ /dev/null @@ -1,144 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/*! - @file doxygen.hpp - @brief Additional documentation, this file contains no source code - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 07-Feb-04, ahu: created - */ -// ***************************************************************************** -// *** NOTE: doxygen.hpp is a generated file! Only edit doxygen.hpp.in *** -// ***************************************************************************** -/*! - @mainpage Image metadata library and tools v@PACKAGE_VERSION@ - - @section overview Exiv2 Overview - - %Exiv2 comprises of a C++ library and a command line utility to access image - metadata. %Exiv2 is free software. The homepage of %Exiv2 is at - http://www.exiv2.org/. - - The %Exiv2 library provides - - fast read and write access to the Exif, IPTC and XMP metadata of an image - through %Exiv2 keys and standard C++ iterators - - conversion of Exif and IPTC metadata to and from XMP - - a smart IPTC implementation that does not affect data that programs like - Photoshop store in the same image segment - - Exif MakerNote support: - - %MakerNote tags can be accessed just like any other Exif metadata - - a sophisticated write algorithm avoids corrupting the %MakerNote - - extract and delete methods for Exif thumbnails (both, JPEG and TIFF thumbnails) - - set methods for Exif thumbnails (JPEG only, TIFF thumbnails can be set from - individual tags) - - an easy to use and well documented API - - @section getting-started Getting started - - A few pointers to get you started with - the %Exiv2 library without delay. - - @section metadata Metadata reference tables - - Exif and MakerNote tags - - Standard Exif tags - - Canon MakerNote tags - - Fujifilm MakerNote tags - - Minolta MakerNote tags - - Nikon MakerNote tags - - Olympus MakerNote tags - - Panasonic MakerNote tags - - Pentax MakerNote tags - - Samsung MakerNote tags - - Sigma/Foveon MakerNote tags - - Sony MakerNote tags - - IPTC datasets - - IPTC datasets - - XMP properties - - dc schema - - xmp schema - - xmpRights schema - - xmpMM schema - - xmpBJ schema - - xmpTPg schema - - xmpDM schema - - pdf schema - - photoshop schema - - crs schema - - tiff schema - - exif schema - - aux schema - - Iptc4xmpCore schema - - Iptc4xmpExt schema - - PLUS schema - - digiKam schema - - KDE Image Program Interface schema - - MicrosoftPhoto schema - - iView Media Pro schema - - Microsoft Expression Media schema - - Microsoft Photo 1.2 schema - - Microsoft Photo RegionInfo schema - - Microsoft Photo Region schema - - Metadata Working Group Regions schema - - @section formats File Formats - -

See the list of supported image formats - in the Wiki and the Canon CRW mapping.

- - @section supp Support - -

All project resources are accessible from the - project website.

- -

Please send feedback or queries to the %Exiv2 forum. For new bug reports - and feature requests, please open an issue.

- - @section license License - -

Copyright (C) 2004-2012 Andreas Huggel

- -

%Exiv2 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.

- -

Alternatively, %Exiv2 is also available with a commercial license, which - allows it to be used in closed-source projects. - Contact me for more information.

- -

%Exiv2 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., - 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.

-*/ -/*! - @example addmoddel.cpp - Sample usage of high-level metadata operations. - */ -/*! - @example exifprint.cpp - Sample program to print Exif data from an image. - */ -/*! - @example exifcomment.cpp - Sample program showing how to set the Exif comment of an image. - */ -/*! - @example iptcprint.cpp - Sample program to print the IPTC metadata of an image - */ -/*! - @example iptceasy.cpp - The quickest way to access, set or modify IPTC metadata - */ -/*! - @example xmpsample.cpp - Sample usage of high-level XMP classes. - */ diff --git a/platform/win32/msvc/external/exiv2/src/easyaccess.cpp b/platform/win32/msvc/external/exiv2/src/easyaccess.cpp deleted file mode 100644 index 6dfe3e9d4e3..00000000000 --- a/platform/win32/msvc/external/exiv2/src/easyaccess.cpp +++ /dev/null @@ -1,462 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: easyaccess.cpp - Version: $Rev: 2711 $ - Author(s): Carsten Pfeiffer - Andreas Huggel (ahu) - History: 28-Feb-09, gis: created - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: easyaccess.cpp 2711 2012-04-22 05:28:42Z ahuggel $") - -// ***************************************************************************** -// included header files -#include "easyaccess.hpp" - -// ***************************************************************************** -namespace { - - using namespace Exiv2; - - /*! - @brief Search \em ed for a Metadatum specified by the \em keys. - The \em keys are searched in the order of their appearance, the - first available Metadatum is returned. - - @param ed The %Exif metadata container to search - @param keys Array of keys to look for - @param count Number of elements in the array - */ - ExifData::const_iterator findMetadatum(const ExifData& ed, - const char* keys[], - int count) - { - for (int i = 0; i < count; ++i) { - ExifData::const_iterator pos = ed.findKey(ExifKey(keys[i])); - if (pos != ed.end()) return pos; - } - return ed.end(); - } // findMetadatum - -} // anonymous namespace - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - ExifData::const_iterator orientation(const ExifData& ed) - { - static const char* keys[] = { - "Exif.Image.Orientation", - "Exif.Panasonic.Rotation", - "Exif.MinoltaCs5D.Rotation", - "Exif.MinoltaCs5D.Rotation2", - "Exif.MinoltaCs7D.Rotation", - "Exif.Sony1MltCsA100.Rotation", - "Exif.Sony1Cs.Rotation", - "Exif.Sony2Cs.Rotation", - "Exif.Sony1Cs2.Rotation", - "Exif.Sony2Cs2.Rotation", - "Exif.Sony1MltCsA100.Rotation" - }; - return findMetadatum(ed, keys, EXV_COUNTOF(keys)); - } - - ExifData::const_iterator isoSpeed(const ExifData& ed) - { - static const char* keys[] = { - "Exif.Photo.ISOSpeedRatings", - "Exif.Image.ISOSpeedRatings", - "Exif.CanonSi.ISOSpeed", - "Exif.CanonCs.ISOSpeed", - "Exif.Nikon1.ISOSpeed", - "Exif.Nikon2.ISOSpeed", - "Exif.Nikon3.ISOSpeed", - "Exif.NikonIi.ISO", - "Exif.NikonIi.ISO2", - "Exif.MinoltaCsNew.ISOSetting", - "Exif.MinoltaCsOld.ISOSetting", - "Exif.MinoltaCs5D.ISOSpeed", - "Exif.MinoltaCs7D.ISOSpeed", - "Exif.Sony1Cs.ISOSetting", - "Exif.Sony2Cs.ISOSetting", - "Exif.Sony1Cs2.ISOSetting", - "Exif.Sony2Cs2.ISOSetting", - "Exif.Sony1MltCsA100.ISOSetting", - "Exif.Pentax.ISO", - "Exif.PentaxDng.ISO", - "Exif.Olympus.ISOSpeed", - "Exif.Samsung2.ISO" - }; - - // Find the first ISO value which is not "0" - const int cnt = EXV_COUNTOF(keys); - ExifData::const_iterator md = ed.end(); - for (int idx = 0; idx < cnt; ) { - md = findMetadatum(ed, keys + idx, cnt - idx); - if (md == ed.end()) break; - std::ostringstream os; - md->write(os, &ed); - bool ok = false; - long v = parseLong(os.str(), ok); - if (ok && v != 0) break; - while (strcmp(keys[idx++], md->key().c_str()) != 0 && idx < cnt) {} - md = ed.end(); - } - - return md; - } - - ExifData::const_iterator flashBias(const ExifData& ed) - { - static const char* keys[] = { - "Exif.CanonSi.FlashBias", - "Exif.Panasonic.FlashBias", - "Exif.Olympus.FlashBias", - "Exif.OlympusCs.FlashExposureComp", - "Exif.Minolta.FlashExposureComp", - "Exif.SonyMinolta.FlashExposureComp", - "Exif.Sony1.FlashExposureComp", - "Exif.Sony2.FlashExposureComp" - }; - return findMetadatum(ed, keys, EXV_COUNTOF(keys)); - } - - ExifData::const_iterator exposureMode(const ExifData& ed) - { - static const char* keys[] = { - "Exif.Photo.ExposureProgram", - "Exif.Image.ExposureProgram", - "Exif.CanonCs.ExposureProgram", - "Exif.MinoltaCs7D.ExposureMode", - "Exif.MinoltaCs5D.ExposureMode", - "Exif.MinoltaCsNew.ExposureMode", - "Exif.MinoltaCsOld.ExposureMode", - "Exif.Sony1MltCsA100.ExposureMode", - "Exif.Sony1Cs.ExposureProgram", - "Exif.Sony2Cs.ExposureProgram", - "Exif.Sigma.ExposureMode" - }; - return findMetadatum(ed, keys, EXV_COUNTOF(keys)); - } - - ExifData::const_iterator sceneMode(const ExifData& ed) - { - static const char* keys[] = { - "Exif.CanonCs.EasyMode", - "Exif.Fujifilm.PictureMode", - "Exif.MinoltaCsNew.SubjectProgram", - "Exif.MinoltaCsOld.SubjectProgram", - "Exif.Minolta.SceneMode", - "Exif.SonyMinolta.SceneMode", - "Exif.Sony1.SceneMode", - "Exif.Sony2.SceneMode", - "Exif.OlympusCs.SceneMode", - "Exif.Panasonic.ShootingMode", - "Exif.Panasonic.SceneMode", - "Exif.Pentax.PictureMode", - "Exif.PentaxDng.PictureMode", - "Exif.Photo.SceneCaptureType" - }; - return findMetadatum(ed, keys, EXV_COUNTOF(keys)); - } - - ExifData::const_iterator macroMode(const ExifData& ed) - { - static const char* keys[] = { - "Exif.CanonCs.Macro", - "Exif.Fujifilm.Macro", - "Exif.Olympus.Macro", - "Exif.OlympusCs.MacroMode", - "Exif.Panasonic.Macro", - "Exif.MinoltaCsNew.MacroMode", - "Exif.MinoltaCsOld.MacroMode", - "Exif.Sony1.Macro", - "Exif.Sony2.Macro" - }; - return findMetadatum(ed, keys, EXV_COUNTOF(keys)); - } - - ExifData::const_iterator imageQuality(const ExifData& ed) - { - static const char* keys[] = { - "Exif.CanonCs.Quality", - "Exif.Fujifilm.Quality", - "Exif.Sigma.Quality", - "Exif.Nikon1.Quality", - "Exif.Nikon2.Quality", - "Exif.Nikon3.Quality", - "Exif.Olympus.Quality", - "Exif.OlympusCs.Quality", - "Exif.Panasonic.Quality", - "Exif.Minolta.Quality", - "Exif.MinoltaCsNew.Quality", - "Exif.MinoltaCsOld.Quality", - "Exif.MinoltaCs5D.Quality", - "Exif.MinoltaCs7D.Quality", - "Exif.Sony1MltCsA100.Quality", - "Exif.Sony1.JPEGQuality", - "Exif.Sony1.Quality", - "Exif.Sony1Cs.Quality", - "Exif.Sony2.JPEGQuality", - "Exif.Sony2.Quality", - "Exif.Sony2Cs.Quality" - }; - return findMetadatum(ed, keys, EXV_COUNTOF(keys)); - } - - ExifData::const_iterator whiteBalance(const ExifData& ed) - { - static const char* keys[] = { - "Exif.CanonSi.WhiteBalance", - "Exif.Fujifilm.WhiteBalance", - "Exif.Sigma.WhiteBalance", - "Exif.Nikon1.WhiteBalance", - "Exif.Nikon2.WhiteBalance", - "Exif.Nikon3.WhiteBalance", - "Exif.Olympus.WhiteBalance", - "Exif.OlympusCs.WhiteBalance", - "Exif.Panasonic.WhiteBalance", - "Exif.MinoltaCs5D.WhiteBalance", - "Exif.MinoltaCs7D.WhiteBalance", - "Exif.MinoltaCsNew.WhiteBalance", - "Exif.MinoltaCsOld.WhiteBalance", - "Exif.Minolta.WhiteBalance", - "Exif.Sony1MltCsA100.WhiteBalance", - "Exif.SonyMinolta.WhiteBalance", - "Exif.Sony1.WhiteBalance", - "Exif.Sony2.WhiteBalance", - "Exif.Sony1.WhiteBalance2", - "Exif.Sony2.WhiteBalance2", - "Exif.Photo.WhiteBalance" - }; - return findMetadatum(ed, keys, EXV_COUNTOF(keys)); - } - - ExifData::const_iterator lensName(const ExifData& ed) - { - static const char* keys[] = { - "Exif.CanonCs.LensType", - "Exif.NikonLd1.LensIDNumber", - "Exif.NikonLd2.LensIDNumber", - "Exif.NikonLd3.LensIDNumber", - "Exif.Pentax.LensType", - "Exif.PentaxDng.LensType", - "Exif.Minolta.LensID", - "Exif.SonyMinolta.LensID", - "Exif.Sony1.LensID", - "Exif.Sony2.LensID", - "Exif.OlympusEq.LensModel", - "Exif.Panasonic.LensType", - "Exif.Samsung2.LensType" - }; - return findMetadatum(ed, keys, EXV_COUNTOF(keys)); - } - - ExifData::const_iterator saturation(const ExifData& ed) - { - static const char* keys[] = { - "Exif.Photo.Saturation", - "Exif.CanonCs.Saturation", - "Exif.MinoltaCsNew.Saturation", - "Exif.MinoltaCsOld.Saturation", - "Exif.MinoltaCs7D.Saturation", - "Exif.MinoltaCs5D.Saturation", - "Exif.Fujifilm.Color", - "Exif.Nikon3.Saturation", - "Exif.Panasonic.Saturation", - "Exif.Pentax.Saturation", - "Exif.PentaxDng.Saturation", - "Exif.Sigma.Saturation" - }; - return findMetadatum(ed, keys, EXV_COUNTOF(keys)); - } - - ExifData::const_iterator sharpness(const ExifData& ed) - { - static const char* keys[] = { - "Exif.Photo.Sharpness", - "Exif.CanonCs.Sharpness", - "Exif.Fujifilm.Sharpness", - "Exif.MinoltaCsNew.Sharpness", - "Exif.MinoltaCsOld.Sharpness", - "Exif.MinoltaCs7D.Sharpness", - "Exif.MinoltaCs5D.Sharpness", - "Exif.Olympus.SharpnessFactor", - "Exif.Panasonic.Sharpness", - "Exif.Pentax.Sharpness", - "Exif.PentaxDng.Sharpness", - "Exif.Sigma.Sharpness" - }; - return findMetadatum(ed, keys, EXV_COUNTOF(keys)); - } - - ExifData::const_iterator contrast(const ExifData& ed) - { - static const char* keys[] = { - "Exif.Photo.Contrast", - "Exif.CanonCs.Contrast", - "Exif.Fujifilm.Tone", - "Exif.MinoltaCsNew.Contrast", - "Exif.MinoltaCsOld.Contrast", - "Exif.MinoltaCs7D.Contrast", - "Exif.MinoltaCs5D.Contrast", - "Exif.Olympus.Contrast", - "Exif.Panasonic.Contrast", - "Exif.Pentax.Contrast", - "Exif.PentaxDng.Contrast", - "Exif.Sigma.Contrast" - }; - return findMetadatum(ed, keys, EXV_COUNTOF(keys)); - } - - ExifData::const_iterator sceneCaptureType(const ExifData& ed) - { - static const char* keys[] = { - "Exif.Photo.SceneCaptureType", - "Exif.Olympus.SpecialMode" - }; - return findMetadatum(ed, keys, EXV_COUNTOF(keys)); - } - - ExifData::const_iterator meteringMode(const ExifData& ed) - { - static const char* keys[] = { - "Exif.Photo.MeteringMode", - "Exif.Image.MeteringMode", - "Exif.CanonCs.MeteringMode", - "Exif.Sony1MltCsA100.MeteringMode" - }; - return findMetadatum(ed, keys, EXV_COUNTOF(keys)); - } - - ExifData::const_iterator make(const ExifData& ed) - { - static const char* keys[] = { - "Exif.Image.Make" - }; - return findMetadatum(ed, keys, EXV_COUNTOF(keys)); - } - - ExifData::const_iterator model(const ExifData& ed) - { - static const char* keys[] = { - "Exif.Image.Model" - }; - return findMetadatum(ed, keys, EXV_COUNTOF(keys)); - } - - ExifData::const_iterator exposureTime(const ExifData& ed) - { - static const char* keys[] = { - "Exif.Photo.ExposureTime", - "Exif.Image.ExposureTime", - "Exif.Samsung2.ExposureTime" - }; - return findMetadatum(ed, keys, EXV_COUNTOF(keys)); - } - - ExifData::const_iterator fNumber(const ExifData& ed) - { - static const char* keys[] = { - "Exif.Photo.FNumber", - "Exif.Image.FNumber", - "Exif.Samsung2.FNumber" - }; - return findMetadatum(ed, keys, EXV_COUNTOF(keys)); - } - - ExifData::const_iterator subjectDistance(const ExifData& ed) - { - static const char* keys[] = { - "Exif.Photo.SubjectDistance", - "Exif.Image.SubjectDistance", - "Exif.CanonSi.SubjectDistance", - "Exif.MinoltaCsNew.FocusDistance", - "Exif.Nikon1.FocusDistance", - "Exif.Nikon3.FocusDistance", - "Exif.NikonLd2.FocusDistance", - "Exif.NikonLd3.FocusDistance", - "Exif.Olympus.FocusDistance", - "Exif.OlympusFi.FocusDistance" - }; - return findMetadatum(ed, keys, EXV_COUNTOF(keys)); - } - - ExifData::const_iterator serialNumber(const ExifData& ed) - { - static const char* keys[] = { - "Exif.Image.CameraSerialNumber", - "Exif.Canon.SerialNumber", - "Exif.Nikon3.SerialNumber", - "Exif.Nikon3.SerialNO", - "Exif.Fujifilm.SerialNumber", - "Exif.Olympus.SerialNumber2", - "Exif.Sigma.SerialNumber" - }; - return findMetadatum(ed, keys, EXV_COUNTOF(keys)); - } - - ExifData::const_iterator focalLength(const ExifData& ed) - { - static const char* keys[] = { - "Exif.Photo.FocalLength", - "Exif.Image.FocalLength", - "Exif.Canon.FocalLength", - "Exif.NikonLd2.FocalLength", - "Exif.NikonLd3.FocalLength", - "Exif.MinoltaCsNew.FocalLength", - "Exif.Pentax.FocalLength", - "Exif.PentaxDng.FocalLength" - }; - return findMetadatum(ed, keys, EXV_COUNTOF(keys)); - } - - ExifData::const_iterator afPoint(const ExifData& ed) - { - static const char* keys[] = { - "Exif.CanonPi.AFPointsUsed", - "Exif.CanonPi.AFPointsUsed20D", - "Exif.CanonSi.AFPointUsed", - "Exif.CanonCs.AFPoint", - "Exif.MinoltaCs7D.AFPoints", - "Exif.Nikon1.AFFocusPos", - "Exif.NikonAf.AFPoint", - "Exif.NikonAf.AFPointsInFocus", - "Exif.NikonAf2.AFPointsUsed", - "Exif.NikonAf2.PrimaryAFPoint", - "Exif.OlympusFi.AFPoint", - "Exif.Pentax.AFPoint", - "Exif.Pentax.AFPointInFocus", - "Exif.PentaxDng.AFPoint", - "Exif.PentaxDng.AFPointInFocus", - "Exif.Sony1Cs.LocalAFAreaPoint", - "Exif.Sony2Cs.LocalAFAreaPoint", - "Exif.Sony1Cs2.LocalAFAreaPoint", - "Exif.Sony2Cs2.LocalAFAreaPoint", - "Exif.Sony1MltCsA100.LocalAFAreaPoint" - }; - return findMetadatum(ed, keys, EXV_COUNTOF(keys)); - } - -} // namespace Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/easyaccess.hpp b/platform/win32/msvc/external/exiv2/src/easyaccess.hpp deleted file mode 100644 index fece5c424cd..00000000000 --- a/platform/win32/msvc/external/exiv2/src/easyaccess.hpp +++ /dev/null @@ -1,88 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file easyaccess.hpp - @brief Provides easy (high-level) access to some Exif meta data. - @version $Rev: 2681 $ - @author Carsten Pfeiffer - @date 28-Feb-09, gis: created - */ -#ifndef EASYACCESS_HPP_ -#define EASYACCESS_HPP_ - -// ***************************************************************************** -// included header files -#include "exif.hpp" - -namespace Exiv2 { - -// ***************************************************************************** -// class declarations - class ExifData; - - //! Return the orientation of the image - EXIV2API ExifData::const_iterator orientation(const ExifData& ed); - //! Return the ISO speed used to shoot the image - EXIV2API ExifData::const_iterator isoSpeed(const ExifData& ed); - //! Return the flash bias value - EXIV2API ExifData::const_iterator flashBias(const ExifData& ed); - //! Return the exposure mode setting - EXIV2API ExifData::const_iterator exposureMode(const ExifData& ed); - //! Return the scene mode setting - EXIV2API ExifData::const_iterator sceneMode(const ExifData& ed); - //! Return the macro mode setting - EXIV2API ExifData::const_iterator macroMode(const ExifData& ed); - //! Return the image quality setting - EXIV2API ExifData::const_iterator imageQuality(const ExifData& ed); - //! Return the white balance setting - EXIV2API ExifData::const_iterator whiteBalance(const ExifData& ed); - //! Return the name of the lens used - EXIV2API ExifData::const_iterator lensName(const ExifData& ed); - //! Return the saturation level - EXIV2API ExifData::const_iterator saturation(const ExifData& ed); - //! Return the sharpness level - EXIV2API ExifData::const_iterator sharpness(const ExifData& ed); - //! Return the contrast level - EXIV2API ExifData::const_iterator contrast(const ExifData& ed); - //! Return the scene capture type - EXIV2API ExifData::const_iterator sceneCaptureType(const ExifData& ed); - //! Return the metering mode setting - EXIV2API ExifData::const_iterator meteringMode(const ExifData& ed); - //! Return the camera make - EXIV2API ExifData::const_iterator make(const ExifData& ed); - //! Return the camera model - EXIV2API ExifData::const_iterator model(const ExifData& ed); - //! Return the exposure time - EXIV2API ExifData::const_iterator exposureTime(const ExifData& ed); - //! Return the F number - EXIV2API ExifData::const_iterator fNumber(const ExifData& ed); - //! Return the subject distance - EXIV2API ExifData::const_iterator subjectDistance(const ExifData& ed); - //! Return the camera serial number - EXIV2API ExifData::const_iterator serialNumber(const ExifData& ed); - //! Return the focal length setting - EXIV2API ExifData::const_iterator focalLength(const ExifData& ed); - //! Return the AF point - EXIV2API ExifData::const_iterator afPoint(const ExifData& ed); - -} // namespace Exiv2 - -#endif // EASYACCESS_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/epsimage.cpp b/platform/win32/msvc/external/exiv2/src/epsimage.cpp deleted file mode 100644 index 9d9cf4f741e..00000000000 --- a/platform/win32/msvc/external/exiv2/src/epsimage.cpp +++ /dev/null @@ -1,1143 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: epsimage.cpp - Version: $Rev: 2455 $ - Author(s): Michael Ulbrich (mul) - Volker Grabsch (vog) - History: 7-Mar-2011, vog: created - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: epsimage.cpp $") - -// ***************************************************************************** - -//#define DEBUG 1 - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif -#include "epsimage.hpp" -#include "image.hpp" -#include "basicio.hpp" -#include "error.hpp" -#include "futils.hpp" - -// + standard includes -#include -#include -#include -#include -#include -#include -#include - -// ***************************************************************************** -namespace { - - using namespace Exiv2; - - // signature of DOS EPS - const std::string dosEpsSignature = "\xC5\xD0\xD3\xC6"; - - // first line of EPS - const std::string epsFirstLine[] = { - "%!PS-Adobe-3.0 EPSF-3.0", - "%!PS-Adobe-3.0 EPSF-3.0 ", // OpenOffice - "%!PS-Adobe-3.1 EPSF-3.0", // Illustrator - }; - - // blank EPS file - const std::string epsBlank = "%!PS-Adobe-3.0 EPSF-3.0\n" - "%%BoundingBox: 0 0 0 0\n"; - - // list of all valid XMP headers - const std::string xmpHeaders[] = { - - // We do not enforce the trailing "?>" here, because the XMP specification - // permits additional attributes after begin="..." and id="...". - - // normal headers - "" here, because the XMP specification - // permits additional attributes after end="...". - - {""; - - //! Write data into temp file, taking care of errors - void writeTemp(BasicIo& tempIo, const byte* data, size_t size) - { - if (size == 0) return; - if (tempIo.write(data, static_cast(size)) != static_cast(size)) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to write to temporary file.\n"; - #endif - throw Error(21); - } - } - - //! Write data into temp file, taking care of errors - void writeTemp(BasicIo& tempIo, const std::string &data) - { - writeTemp(tempIo, reinterpret_cast(data.data()), data.size()); - } - - //! Get the current write position of temp file, taking care of errors - uint32_t posTemp(BasicIo& tempIo) - { - const long pos = tempIo.tell(); - if (pos == -1) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Internal error while determining current write position in temporary file.\n"; - #endif - throw Error(21); - } - return static_cast(pos); - } - - //! Check whether a string has a certain beginning - bool startsWith(const std::string& s, const std::string& start) - { - return s.size() >= start.size() && memcmp(s.data(), start.data(), start.size()) == 0; - } - - //! Check whether a string contains only white space characters - bool onlyWhitespaces(const std::string& s) - { - // According to the DSC 3.0 specification, 4.4 Parsing Rules, - // only spaces and tabs are considered to be white space characters. - return s.find_first_not_of(" \t") == std::string::npos; - } - - //! Read the next line of a buffer, allow for changing line ending style - size_t readLine(std::string& line, const byte* data, size_t startPos, size_t size) - { - line.clear(); - size_t pos = startPos; - // step through line - while (pos < size && data[pos] != '\r' && data[pos] != '\n') { - line += data[pos]; - pos++; - } - // skip line ending, if present - if (pos >= size) return pos; - pos++; - if (pos >= size) return pos; - if (data[pos - 1] == '\r' && data[pos] == '\n') pos++; - return pos; - } - - //! Read the previous line of a buffer, allow for changing line ending style - size_t readPrevLine(std::string& line, const byte* data, size_t startPos, size_t size) - { - line.clear(); - size_t pos = startPos; - if (pos > size) return pos; - // skip line ending of previous line, if present - if (pos <= 0) return pos; - if (data[pos - 1] == '\r' || data[pos - 1] == '\n') { - pos--; - if (pos <= 0) return pos; - if (data[pos - 1] == '\r' && data[pos] == '\n') { - pos--; - if (pos <= 0) return pos; - } - } - // step through previous line - while (pos >= 1 && data[pos - 1] != '\r' && data[pos - 1] != '\n') { - pos--; - line += data[pos]; - } - std::reverse(line.begin(), line.end()); - return pos; - } - - //! Find an XMP block - void findXmp(size_t& xmpPos, size_t& xmpSize, const byte* data, size_t startPos, size_t size, bool write) - { - // search for valid XMP header - xmpSize = 0; - for (xmpPos = startPos; xmpPos < size; xmpPos++) { - if (data[xmpPos] != '\x00' && data[xmpPos] != '<') continue; - for (size_t i = 0; i < (sizeof xmpHeaders) / (sizeof *xmpHeaders); i++) { - const std::string &header = xmpHeaders[i]; - if (xmpPos + header.size() > size) continue; - if (memcmp(data + xmpPos, header.data(), header.size()) != 0) continue; - #ifdef DEBUG - EXV_DEBUG << "findXmp: Found XMP header at position: " << xmpPos << "\n"; - #endif - - // search for valid XMP trailer - for (size_t trailerPos = xmpPos + header.size(); trailerPos < size; trailerPos++) { - if (data[xmpPos] != '\x00' && data[xmpPos] != '<') continue; - for (size_t j = 0; j < (sizeof xmpTrailers) / (sizeof *xmpTrailers); j++) { - const std::string &trailer = xmpTrailers[j].trailer; - const bool readOnly = xmpTrailers[j].readOnly; - - if (trailerPos + trailer.size() > size) continue; - if (memcmp(data + trailerPos, trailer.data(), trailer.size()) != 0) continue; - #ifdef DEBUG - EXV_DEBUG << "findXmp: Found XMP trailer at position: " << trailerPos << "\n"; - #endif - - if (readOnly) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Unable to handle read-only XMP metadata yet. Please provide your " - "sample EPS file to the Exiv2 project: http://dev.exiv2.org/projects/exiv2\n"; - #endif - throw Error(write ? 21 : 14); - } - - // search for end of XMP trailer - for (size_t trailerEndPos = trailerPos + trailer.size(); trailerEndPos + xmpTrailerEnd.size() <= size; trailerEndPos++) { - if (memcmp(data + trailerEndPos, xmpTrailerEnd.data(), xmpTrailerEnd.size()) == 0) { - xmpSize = (trailerEndPos + xmpTrailerEnd.size()) - xmpPos; - return; - } - } - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Found XMP header but incomplete XMP trailer.\n"; - #endif - throw Error(write ? 21 : 14); - } - } - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Found XMP header but no XMP trailer.\n"; - #endif - throw Error(write ? 21 : 14); - } - } - } - - //! Unified implementation of reading and writing EPS metadata - void readWriteEpsMetadata(BasicIo& io, std::string& xmpPacket, NativePreviewList& nativePreviews, bool write) - { - // open input file - if (io.open() != 0) { - throw Error(9, io.path(), strError()); - } - IoCloser closer(io); - - // read from input file via memory map - const byte *data = io.mmap(); - - // default positions and sizes - const size_t size = static_cast(io.size()); - size_t posEps = 0; - size_t posEndEps = size; - uint32_t posWmf = 0; - uint32_t sizeWmf = 0; - uint32_t posTiff = 0; - uint32_t sizeTiff = 0; - - // check for DOS EPS - const bool dosEps = (size >= dosEpsSignature.size() && memcmp(data, dosEpsSignature.data(), dosEpsSignature.size()) == 0); - if (dosEps) { - #ifdef DEBUG - EXV_DEBUG << "readWriteEpsMetadata: Found DOS EPS signature\n"; - #endif - if (size < 30) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Premature end of file after DOS EPS signature.\n"; - #endif - throw Error(write ? 21 : 14); - } - posEps = getULong(data + 4, littleEndian); - posEndEps = getULong(data + 8, littleEndian) + posEps; - posWmf = getULong(data + 12, littleEndian); - sizeWmf = getULong(data + 16, littleEndian); - posTiff = getULong(data + 20, littleEndian); - sizeTiff = getULong(data + 24, littleEndian); - const uint16_t checksum = getUShort(data + 28, littleEndian); - #ifdef DEBUG - EXV_DEBUG << "readWriteEpsMetadata: EPS section at position " << posEps << ", size " << (posEndEps - posEps) << "\n"; - EXV_DEBUG << "readWriteEpsMetadata: WMF section at position " << posWmf << ", size " << sizeWmf << "\n"; - EXV_DEBUG << "readWriteEpsMetadata: TIFF section at position " << posTiff << ", size " << sizeTiff << "\n"; - #endif - if (checksum != 0xFFFF) { - #ifdef DEBUG - EXV_DEBUG << "readWriteEpsMetadata: DOS EPS checksum is not FFFF\n"; - #endif - } - if (!((posWmf == 0 && sizeWmf == 0) || (posTiff == 0 && sizeTiff == 0))) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "DOS EPS file has both WMF and TIFF section. Only one of those is allowed.\n"; - #endif - if (write) throw Error(21); - } - if (sizeWmf == 0 && sizeTiff == 0) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "DOS EPS file has neither WMF nor TIFF section. Exactly one of those is required.\n"; - #endif - if (write) throw Error(21); - } - if (posEps < 30 || posEndEps > size) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "DOS EPS file has invalid position (" << posEps << ") or size (" << (posEndEps - posEps) << ") for EPS section.\n"; - #endif - throw Error(write ? 21 : 14); - } - if (sizeWmf != 0 && (posWmf < 30 || posWmf + sizeWmf > size)) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "DOS EPS file has invalid position (" << posWmf << ") or size (" << sizeWmf << ") for WMF section.\n"; - #endif - if (write) throw Error(21); - } - if (sizeTiff != 0 && (posTiff < 30 || posTiff + sizeTiff > size)) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "DOS EPS file has invalid position (" << posTiff << ") or size (" << sizeTiff << ") for TIFF section.\n"; - #endif - if (write) throw Error(21); - } - } - - // check first line - std::string firstLine; - const size_t posSecondLine = readLine(firstLine, data, posEps, posEndEps); - #ifdef DEBUG - EXV_DEBUG << "readWriteEpsMetadata: First line: " << firstLine << "\n"; - #endif - bool matched = false; - for (size_t i = 0; !matched && i < (sizeof epsFirstLine) / (sizeof *epsFirstLine); i++) { - matched = (firstLine == epsFirstLine[i]); - } - if (!matched) { - throw Error(3, "EPS"); - } - - // determine line ending style of the first line - if (posSecondLine >= posEndEps) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Premature end of file after first line.\n"; - #endif - throw Error(write ? 21 : 14); - } - const std::string lineEnding(reinterpret_cast(data + posEps + firstLine.size()), posSecondLine - (posEps + firstLine.size())); - #ifdef DEBUG - if (lineEnding == "\n") { - EXV_DEBUG << "readWriteEpsMetadata: Line ending style: Unix (LF)\n"; - } else if (lineEnding == "\r") { - EXV_DEBUG << "readWriteEpsMetadata: Line ending style: Mac (CR)\n"; - } else if (lineEnding == "\r\n") { - EXV_DEBUG << "readWriteEpsMetadata: Line ending style: DOS (CR LF)\n"; - } else { - EXV_DEBUG << "readWriteEpsMetadata: Line ending style: (unknown)\n"; - } - #endif - - // scan comments - size_t posLanguageLevel = posEndEps; - size_t posContainsXmp = posEndEps; - size_t posPages = posEndEps; - size_t posExiv2Version = posEndEps; - size_t posExiv2Website = posEndEps; - size_t posEndComments = posEndEps; - size_t posAi7Thumbnail = posEndEps; - size_t posAi7ThumbnailEndData = posEndEps; - size_t posBeginPhotoshop = posEndEps; - size_t posEndPhotoshop = posEndEps; - size_t posPage = posEndEps; - size_t posEndPageSetup = posEndEps; - size_t posPageTrailer = posEndEps; - size_t posEof = posEndEps; - std::vector > removableEmbeddings; - unsigned int depth = 0; - const unsigned int maxDepth = UINT_MAX; - bool illustrator8 = false; - bool corelDraw = false; - bool implicitPage = false; - bool implicitPageTrailer = false; - bool inDefaultsPreviewPrologSetup = false; - bool inPageSetup = false; - bool inRemovableEmbedding = false; - std::string removableEmbeddingEndLine; - unsigned int removableEmbeddingsWithUnmarkedTrailer = 0; - for (size_t pos = posEps; pos < posEof;) { - const size_t startPos = pos; - std::string line; - pos = readLine(line, data, startPos, posEndEps); - #ifdef DEBUG - bool significantLine = true; - #endif - // nested documents - if (posPage == posEndEps && (startsWith(line, "%%IncludeDocument:") || startsWith(line, "%%BeginDocument:"))) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Nested document at invalid position: " << startPos << "\n"; - #endif - throw Error(write ? 21 : 14); - } else if (startsWith(line, "%%BeginDocument:")) { - if (depth == maxDepth) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Document too deeply nested at position: " << startPos << "\n"; - #endif - throw Error(write ? 21 : 14); - } - depth++; - } else if (startsWith(line, "%%EndDocument")) { - if (depth == 0) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Unmatched EndDocument at position: " << startPos << "\n"; - #endif - throw Error(write ? 21 : 14); - } - depth--; - } else { - #ifdef DEBUG - significantLine = false; - #endif - } - #ifdef DEBUG - if (significantLine) { - EXV_DEBUG << "readWriteEpsMetadata: Found significant line \"" << line << "\" at position: " << startPos << "\n"; - } - #endif - if (depth != 0) continue; - // explicit "Begin" comments - if (startsWith(line, "%%BeginPreview:")) { - inDefaultsPreviewPrologSetup = true; - } else if (line == "%%BeginDefaults") { - inDefaultsPreviewPrologSetup = true; - } else if (line == "%%BeginProlog") { - inDefaultsPreviewPrologSetup = true; - } else if (line == "%%BeginSetup") { - inDefaultsPreviewPrologSetup = true; - } else if (posPage == posEndEps && startsWith(line, "%%Page:")) { - posPage = startPos; - } else if (posPage != posEndEps && startsWith(line, "%%Page:")) { - if (implicitPage) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Page at position " << startPos << " conflicts with implicit page at position: " << posPage << "\n"; - #endif - throw Error(write ? 21 : 14); - } - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Unable to handle multiple PostScript pages. Found second page at position: " << startPos << "\n"; - #endif - throw Error(write ? 21 : 14); - } else if (line == "%%BeginPageSetup") { - inPageSetup = true; - } else if (!inRemovableEmbedding && line == "%Exiv2BeginXMP: Before %%EndPageSetup") { - inRemovableEmbedding = true; - removableEmbeddings.push_back(std::make_pair(startPos, startPos)); - removableEmbeddingEndLine = "%Exiv2EndXMP"; - } else if (!inRemovableEmbedding && line == "%Exiv2BeginXMP: After %%PageTrailer") { - inRemovableEmbedding = true; - removableEmbeddings.push_back(std::make_pair(startPos, startPos)); - removableEmbeddingEndLine = "%Exiv2EndXMP"; - } else if (!inRemovableEmbedding && line == "%ADOBeginClientInjection: PageSetup End \"AI11EPS\"") { - inRemovableEmbedding = true; - removableEmbeddings.push_back(std::make_pair(startPos, startPos)); - removableEmbeddingEndLine = "%ADOEndClientInjection: PageSetup End \"AI11EPS\""; - } else if (!inRemovableEmbedding && line == "%ADOBeginClientInjection: PageTrailer Start \"AI11EPS\"") { - inRemovableEmbedding = true; - removableEmbeddings.push_back(std::make_pair(startPos, startPos)); - removableEmbeddingEndLine = "%ADOEndClientInjection: PageTrailer Start \"AI11EPS\""; - } else if (!inRemovableEmbedding && line == "%begin_xml_code") { - inRemovableEmbedding = true; - removableEmbeddings.push_back(std::make_pair(startPos, startPos)); - removableEmbeddingEndLine = "%end_xml_code"; - removableEmbeddingsWithUnmarkedTrailer++; - } else { - #ifdef DEBUG - significantLine = false; - #endif - } - #ifdef DEBUG - if (significantLine) { - EXV_DEBUG << "readWriteEpsMetadata: Found significant line \"" << line << "\" at position: " << startPos << "\n"; - } - #endif - // implicit comments - if (line == "%%EOF" || line == "%begin_xml_code" || !(line.size() >= 2 && line[0] == '%' && '\x21' <= line[1] && line[1] <= '\x7e')) { - if (posEndComments == posEndEps) { - posEndComments = startPos; - #ifdef DEBUG - EXV_DEBUG << "readWriteEpsMetadata: Found implicit EndComments at position: " << startPos << "\n"; - #endif - } - } - if (posPage == posEndEps && posEndComments != posEndEps && !inDefaultsPreviewPrologSetup && !inRemovableEmbedding && !onlyWhitespaces(line)) { - posPage = startPos; - implicitPage = true; - posEndPageSetup = startPos; - #ifdef DEBUG - EXV_DEBUG << "readWriteEpsMetadata: Found implicit Page and EndPageSetup at position: " << startPos << "\n"; - #endif - } - if (posEndPageSetup == posEndEps && posPage != posEndEps && !inPageSetup && !inRemovableEmbedding && line.size() >= 1 && line[0] != '%') { - posEndPageSetup = startPos; - #ifdef DEBUG - EXV_DEBUG << "readWriteEpsMetadata: Found implicit EndPageSetup at position: " << startPos << "\n"; - #endif - } - if (line.size() >= 1 && line[0] != '%') continue; // performance optimization - if (line == "%%EOF" || line == "%%Trailer") { - if (posPageTrailer == posEndEps) { - posPageTrailer = startPos; - implicitPageTrailer = true; - #ifdef DEBUG - EXV_DEBUG << "readWriteEpsMetadata: Found implicit PageTrailer at position: " << startPos << "\n"; - #endif - } - } - // remaining explicit comments - if (posEndComments == posEndEps && posLanguageLevel == posEndEps && startsWith(line, "%%LanguageLevel:")) { - posLanguageLevel = startPos; - } else if (posEndComments == posEndEps && posContainsXmp == posEndEps && startsWith(line, "%ADO_ContainsXMP:")) { - posContainsXmp = startPos; - } else if (posEndComments == posEndEps && posPages == posEndEps && startsWith(line, "%%Pages:")) { - posPages = startPos; - } else if (posEndComments == posEndEps && posExiv2Version == posEndEps && startsWith(line, "%Exiv2Version:")) { - posExiv2Version = startPos; - } else if (posEndComments == posEndEps && posExiv2Website == posEndEps && startsWith(line, "%Exiv2Website:")) { - posExiv2Website = startPos; - } else if (posEndComments == posEndEps && startsWith(line, "%%Creator: Adobe Illustrator") && firstLine == "%!PS-Adobe-3.0 EPSF-3.0") { - illustrator8 = true; - } else if (posEndComments == posEndEps && startsWith(line, "%AI7_Thumbnail:")) { - posAi7Thumbnail = startPos; - } else if (posEndComments == posEndEps && posAi7Thumbnail != posEndEps && posAi7ThumbnailEndData == posEndEps && line == "%%EndData") { - posAi7ThumbnailEndData = startPos; - } else if (posEndComments == posEndEps && line == "%%EndComments") { - posEndComments = startPos; - } else if (inDefaultsPreviewPrologSetup && startsWith(line, "%%BeginResource: procset wCorel")) { - corelDraw = true; - } else if (line == "%%EndPreview") { - inDefaultsPreviewPrologSetup = false; - } else if (line == "%%EndDefaults") { - inDefaultsPreviewPrologSetup = false; - } else if (line == "%%EndProlog") { - inDefaultsPreviewPrologSetup = false; - } else if (line == "%%EndSetup") { - inDefaultsPreviewPrologSetup = false; - } else if (posEndPageSetup == posEndEps && line == "%%EndPageSetup") { - inPageSetup = false; - posEndPageSetup = startPos; - } else if (posPageTrailer == posEndEps && line == "%%PageTrailer") { - posPageTrailer = startPos; - } else if (posBeginPhotoshop == posEndEps && startsWith(line, "%BeginPhotoshop:")) { - posBeginPhotoshop = pos; - } else if (posBeginPhotoshop != posEndEps && posEndPhotoshop == posEndEps && line == "%EndPhotoshop") { - posEndPhotoshop = startPos; - } else if (inRemovableEmbedding && line == removableEmbeddingEndLine) { - inRemovableEmbedding = false; - removableEmbeddings.back().second = pos; - } else if (line == "%%EOF") { - posEof = startPos; - } else { - #ifdef DEBUG - significantLine = false; - #endif - } - #ifdef DEBUG - if (significantLine) { - EXV_DEBUG << "readWriteEpsMetadata: Found significant line \"" << line << "\" at position: " << startPos << "\n"; - } - #endif - } - - // check for unfinished nested documents - if (depth != 0) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Unmatched BeginDocument (" << depth << "x)\n"; - #endif - throw Error(write ? 21 : 14); - } - - // look for the unmarked trailers of some removable XMP embeddings - size_t posXmpTrailerEnd = posEof; - for (size_t i = 0; i < removableEmbeddingsWithUnmarkedTrailer; i++) { - std::string line1; - const size_t posLine1 = readPrevLine(line1, data, posXmpTrailerEnd, posEndEps); - std::string line2; - const size_t posLine2 = readPrevLine(line2, data, posLine1, posEndEps); - size_t posXmpTrailer; - if (line1 == "[/EMC pdfmark") { // Exiftool style - posXmpTrailer = posLine1; - } else if (line1 == "[/NamespacePop pdfmark" && - line2 == "[{nextImage} 1 dict begin /Metadata {photoshop_metadata_stream} def currentdict end /PUT pdfmark") { // Photoshop style - posXmpTrailer = posLine2; - } else { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Unable to find XMP embedding trailer ending at position: " << posXmpTrailerEnd << "\n"; - #endif - if (write) throw Error(21); - break; - } - removableEmbeddings.push_back(std::make_pair(posXmpTrailer, posXmpTrailerEnd)); - #ifdef DEBUG - EXV_DEBUG << "readWriteEpsMetadata: Recognized unmarked trailer of removable XMP embedding at " - "[" << removableEmbeddings.back().first << "," << removableEmbeddings.back().second << ")" - "\n"; - #endif - posXmpTrailerEnd = posXmpTrailer; - } - - // interpret comment "%ADO_ContainsXMP:" - std::string line; - readLine(line, data, posContainsXmp, posEndEps); - bool containsXmp; - if (line == "%ADO_ContainsXMP: MainFirst" || line == "%ADO_ContainsXMP:MainFirst") { - containsXmp = true; - } else if (line == "" || line == "%ADO_ContainsXMP: NoMain" || line == "%ADO_ContainsXMP:NoMain") { - containsXmp = false; - } else { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Invalid line \"" << line << "\" at position: " << posContainsXmp << "\n"; - #endif - throw Error(write ? 21 : 14); - } - - const bool deleteXmp = (write && xmpPacket.size() == 0); - bool fixBeginXmlPacket = false; - bool useFlexibleEmbedding = false; - size_t xmpPos = posEndEps; - size_t xmpSize = 0; - if (containsXmp) { - // search for XMP metadata - findXmp(xmpPos, xmpSize, data, posEps, posEndEps, write); - if (xmpPos == posEndEps) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Unable to find XMP metadata as announced at position: " << posContainsXmp << "\n"; - #endif - } - // check embedding of XMP metadata - const size_t posLineAfterXmp = readLine(line, data, xmpPos + xmpSize, posEndEps); - if (line != "") { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Unexpected " << line.size() << " bytes of data after XMP at position: " << (xmpPos + xmpSize) << "\n"; - #endif - } else if (!deleteXmp) { - readLine(line, data, posLineAfterXmp, posEndEps); - if (line == "% &&end XMP packet marker&&" || line == "% &&end XMP packet marker&&") { - useFlexibleEmbedding = true; - } - } - } - if (useFlexibleEmbedding) { - #ifdef DEBUG - EXV_DEBUG << "readWriteEpsMetadata: Using flexible XMP embedding\n"; - #endif - const size_t posBeginXmlPacket = readPrevLine(line, data, xmpPos, posEndEps); - if (startsWith(line, "%begin_xml_packet:")) { - #ifdef DEBUG - EXV_DEBUG << "readWriteEpsMetadata: XMP embedding contains %begin_xml_packet\n"; - #endif - if (write) { - fixBeginXmlPacket = true; - xmpSize += (xmpPos - posBeginXmlPacket); - xmpPos = posBeginXmlPacket; - } - } else if (posBeginPhotoshop != posEndEps) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Missing %begin_xml_packet in Photoshop EPS at position: " << xmpPos << "\n"; - #endif - if (write) throw Error(21); - } - } - if (!useFlexibleEmbedding) { - // check if there are irremovable XMP metadata blocks before EndPageSetup - size_t posOtherXmp = containsXmp ? xmpPos : posEps; - size_t sizeOtherXmp = 0; - for (;;) { - findXmp(posOtherXmp, sizeOtherXmp, data, posOtherXmp + sizeOtherXmp, posEndPageSetup, write); - if (posOtherXmp >= posEndPageSetup) break; - bool isRemovableEmbedding = false; - for (std::vector >::const_iterator e = removableEmbeddings.begin(); e != removableEmbeddings.end(); e++) { - if (e->first <= posOtherXmp && posOtherXmp < e->second) { - isRemovableEmbedding = true; - break; - } - } - if (!isRemovableEmbedding) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "XMP metadata block is not removable at position: " << posOtherXmp << "\n"; - #endif - if (write) throw Error(21); - break; - } - } - } - - if (!write) { - // copy XMP metadata - xmpPacket.assign(reinterpret_cast(data + xmpPos), xmpSize); - - // native previews - nativePreviews.clear(); - if (posAi7ThumbnailEndData != posEndEps) { - NativePreview nativePreview; - std::string dummy; - std::string lineAi7Thumbnail; - const size_t posBeginData = readLine(lineAi7Thumbnail, data, posAi7Thumbnail, posEndEps); - std::istringstream lineStreamAi7Thumbnail(lineAi7Thumbnail); - lineStreamAi7Thumbnail >> dummy; - lineStreamAi7Thumbnail >> nativePreview.width_; - lineStreamAi7Thumbnail >> nativePreview.height_; - std::string depth; - lineStreamAi7Thumbnail >> depth; - std::string lineBeginData; - const size_t posAfterBeginData = readLine(lineBeginData, data, posBeginData, posEndEps); - std::istringstream lineStreamBeginData(lineBeginData); - std::string beginData; - lineStreamBeginData >> beginData; - lineStreamBeginData >> dummy; - std::string type; - lineStreamBeginData >> type; - nativePreview.position_ = static_cast(posAfterBeginData); - nativePreview.size_ = static_cast(posAi7ThumbnailEndData - posAfterBeginData); - nativePreview.filter_ = "hex-ai7thumbnail-pnm"; - nativePreview.mimeType_ = "image/x-portable-anymap"; - if (depth != "8") { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Unable to handle Illustrator thumbnail depth: " << depth << "\n"; - #endif - } else if (beginData != "%%BeginData:") { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Unable to handle Illustrator thumbnail data section: " << lineBeginData << "\n"; - #endif - } else if (type != "Hex") { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Unable to handle Illustrator thumbnail data type: " << type << "\n"; - #endif - } else { - nativePreviews.push_back(nativePreview); - } - } - if (posEndPhotoshop != posEndEps) { - NativePreview nativePreview; - nativePreview.position_ = static_cast(posBeginPhotoshop); - nativePreview.size_ = static_cast(posEndPhotoshop - posBeginPhotoshop); - nativePreview.width_ = 0; - nativePreview.height_ = 0; - nativePreview.filter_ = "hex-irb"; - nativePreview.mimeType_ = "image/jpeg"; - nativePreviews.push_back(nativePreview); - } - if (sizeWmf != 0) { - NativePreview nativePreview; - nativePreview.position_ = static_cast(posWmf); - nativePreview.size_ = sizeWmf; - nativePreview.width_ = 0; - nativePreview.height_ = 0; - nativePreview.filter_ = ""; - nativePreview.mimeType_ = "image/x-wmf"; - nativePreviews.push_back(nativePreview); - } - if (sizeTiff != 0) { - NativePreview nativePreview; - nativePreview.position_ = static_cast(posTiff); - nativePreview.size_ = sizeTiff; - nativePreview.width_ = 0; - nativePreview.height_ = 0; - nativePreview.filter_ = ""; - nativePreview.mimeType_ = "image/tiff"; - nativePreviews.push_back(nativePreview); - } - } else { - // check for Adobe Illustrator 8.0 or older - if (illustrator8) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Unable to write to EPS files created by Adobe Illustrator 8.0 or older.\n"; - #endif - throw Error(21); - } - - // create temporary output file - BasicIo::AutoPtr tempIo(io.temporary()); - assert (tempIo.get() != 0); - if (!tempIo->isopen()) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Unable to create temporary file for writing.\n"; - #endif - throw Error(21); - } - #ifdef DEBUG - EXV_DEBUG << "readWriteEpsMetadata: Created temporary file " << tempIo->path() << "\n"; - #endif - - // sort all positions - std::vector positions; - positions.push_back(posLanguageLevel); - positions.push_back(posContainsXmp); - positions.push_back(posPages); - positions.push_back(posExiv2Version); - positions.push_back(posExiv2Website); - positions.push_back(posEndComments); - positions.push_back(posPage); - positions.push_back(posEndPageSetup); - positions.push_back(posPageTrailer); - positions.push_back(posEof); - positions.push_back(posEndEps); - if (useFlexibleEmbedding) { - positions.push_back(xmpPos); - } - for (std::vector >::const_iterator e = removableEmbeddings.begin(); e != removableEmbeddings.end(); e++) { - positions.push_back(e->first); - } - std::sort(positions.begin(), positions.end()); - - // assemble result EPS document - if (dosEps) { - // DOS EPS header will be written afterwards - writeTemp(*tempIo, std::string(30, '\x00')); - } - const std::string containsXmpLine = deleteXmp ? "%ADO_ContainsXMP: NoMain" : "%ADO_ContainsXMP: MainFirst"; - const uint32_t posEpsNew = posTemp(*tempIo); - size_t prevPos = posEps; - size_t prevSkipPos = prevPos; - for (std::vector::const_iterator i = positions.begin(); i != positions.end(); i++) { - const size_t pos = *i; - if (pos == prevPos) continue; - if (pos < prevSkipPos) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Internal error while assembling the result EPS document: " - "Unable to continue at position " << pos << " after skipping to position " << prevSkipPos << "\n"; - #endif - throw Error(21); - } - writeTemp(*tempIo, data + prevSkipPos, pos - prevSkipPos); - const size_t posLineEnd = readLine(line, data, pos, posEndEps); - size_t skipPos = pos; - // add last line ending if necessary - if (pos == posEndEps && pos >= 1 && data[pos - 1] != '\r' && data[pos - 1] != '\n') { - writeTemp(*tempIo, lineEnding); - #ifdef DEBUG - EXV_DEBUG << "readWriteEpsMetadata: Added missing line ending of last line\n"; - #endif - } - // update and complement DSC comments - if (pos == posLanguageLevel && posLanguageLevel != posEndEps && !deleteXmp && !useFlexibleEmbedding) { - if (line == "%%LanguageLevel:1" || line == "%%LanguageLevel: 1") { - writeTemp(*tempIo, "%%LanguageLevel: 2" + lineEnding); - skipPos = posLineEnd; - } - } - if (pos == posContainsXmp && posContainsXmp != posEndEps) { - if (line != containsXmpLine) { - writeTemp(*tempIo, containsXmpLine + lineEnding); - skipPos = posLineEnd; - } - } - if (pos == posExiv2Version && posExiv2Version != posEndEps) { - writeTemp(*tempIo, "%Exiv2Version: " + versionNumberHexString() + lineEnding); - skipPos = posLineEnd; - } - if (pos == posExiv2Website && posExiv2Website != posEndEps) { - writeTemp(*tempIo, "%Exiv2Website: http://www.exiv2.org/" + lineEnding); - skipPos = posLineEnd; - } - if (pos == posEndComments) { - if (posLanguageLevel == posEndEps && !deleteXmp && !useFlexibleEmbedding) { - writeTemp(*tempIo, "%%LanguageLevel: 2" + lineEnding); - } - if (posContainsXmp == posEndEps) { - writeTemp(*tempIo, containsXmpLine + lineEnding); - } - if (posPages == posEndEps) { - writeTemp(*tempIo, "%%Pages: 1" + lineEnding); - } - if (posExiv2Version == posEndEps) { - writeTemp(*tempIo, "%Exiv2Version: " + versionNumberHexString() + lineEnding); - } - if (posExiv2Website == posEndEps) { - writeTemp(*tempIo, "%Exiv2Website: http://www.exiv2.org/" + lineEnding); - } - readLine(line, data, posEndComments, posEndEps); - if (line != "%%EndComments") { - writeTemp(*tempIo, "%%EndComments" + lineEnding); - } - } - if (pos == posPage) { - if (!startsWith(line, "%%Page:")) { - writeTemp(*tempIo, "%%Page: 1 1" + lineEnding); - writeTemp(*tempIo, "%%EndPageComments" + lineEnding); - } - } - if (useFlexibleEmbedding) { - // insert XMP metadata into existing flexible embedding - if (pos == xmpPos) { - if (fixBeginXmlPacket) { - writeTemp(*tempIo, "%begin_xml_packet: " + toString(xmpPacket.size()) + lineEnding); - } - writeTemp(*tempIo, xmpPacket); - skipPos += xmpSize; - } - } else { - // remove preceding embedding(s) - for (std::vector >::const_iterator e = removableEmbeddings.begin(); e != removableEmbeddings.end(); e++) { - if (pos == e->first) { - skipPos = e->second; - break; - } - } - // insert XMP metadata with new flexible embedding, if necessary - if (pos == posEndPageSetup && !deleteXmp) { - if (line != "%%EndPageSetup") { - writeTemp(*tempIo, "%%BeginPageSetup" + lineEnding); - } - writeTemp(*tempIo, "%Exiv2BeginXMP: Before %%EndPageSetup" + lineEnding); - if (corelDraw) { - writeTemp(*tempIo, "%Exiv2Notice: The following line is needed by CorelDRAW." + lineEnding); - writeTemp(*tempIo, "@rs" + lineEnding); - } - if (posBeginPhotoshop != posEndEps) { - writeTemp(*tempIo, "%Exiv2Notice: The following line is needed by Photoshop." + lineEnding); - writeTemp(*tempIo, "%begin_xml_code" + lineEnding); - } - writeTemp(*tempIo, "/currentdistillerparams where" + lineEnding); - writeTemp(*tempIo, "{pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse" + lineEnding); - writeTemp(*tempIo, "{userdict /Exiv2_pdfmark /cleartomark load put" + lineEnding); - writeTemp(*tempIo, " userdict /Exiv2_metafile_pdfmark {flushfile cleartomark} bind put}" + lineEnding); - writeTemp(*tempIo, "{userdict /Exiv2_pdfmark /pdfmark load put" + lineEnding); - writeTemp(*tempIo, " userdict /Exiv2_metafile_pdfmark {/PUT pdfmark} bind put} ifelse" + lineEnding); - writeTemp(*tempIo, "[/NamespacePush Exiv2_pdfmark" + lineEnding); - writeTemp(*tempIo, "[/_objdef {Exiv2_metadata_stream} /type /stream /OBJ Exiv2_pdfmark" + lineEnding); - writeTemp(*tempIo, "[{Exiv2_metadata_stream} 2 dict begin" + lineEnding); - writeTemp(*tempIo, " /Type /Metadata def /Subtype /XML def currentdict end /PUT Exiv2_pdfmark" + lineEnding); - writeTemp(*tempIo, "[{Exiv2_metadata_stream}" + lineEnding); - writeTemp(*tempIo, " currentfile 0 (% &&end XMP packet marker&&)" + lineEnding); - writeTemp(*tempIo, " /SubFileDecode filter Exiv2_metafile_pdfmark" + lineEnding); - if (posBeginPhotoshop != posEndEps) { - writeTemp(*tempIo, "%Exiv2Notice: The following line is needed by Photoshop. " - "Parameter must be exact size of XMP metadata." + lineEnding); - writeTemp(*tempIo, "%begin_xml_packet: " + toString(xmpPacket.size()) + lineEnding); - } - writeTemp(*tempIo, xmpPacket); - writeTemp(*tempIo, lineEnding); - writeTemp(*tempIo, "% &&end XMP packet marker&&" + lineEnding); - writeTemp(*tempIo, "[/Document 1 dict begin" + lineEnding); - writeTemp(*tempIo, " /Metadata {Exiv2_metadata_stream} def currentdict end /BDC Exiv2_pdfmark" + lineEnding); - if (posBeginPhotoshop != posEndEps) { - writeTemp(*tempIo, "%Exiv2Notice: The following line is needed by Photoshop." + lineEnding); - writeTemp(*tempIo, "%end_xml_code" + lineEnding); - } - if (corelDraw) { - writeTemp(*tempIo, "%Exiv2Notice: The following line is needed by CorelDRAW." + lineEnding); - writeTemp(*tempIo, "@sv" + lineEnding); - } - writeTemp(*tempIo, "%Exiv2EndXMP" + lineEnding); - if (line != "%%EndPageSetup") { - writeTemp(*tempIo, "%%EndPageSetup" + lineEnding); - } - } - if (pos == posPageTrailer && !deleteXmp) { - if (!implicitPageTrailer) { - skipPos = posLineEnd; - } - writeTemp(*tempIo, "%%PageTrailer" + lineEnding); - writeTemp(*tempIo, "%Exiv2BeginXMP: After %%PageTrailer" + lineEnding); - writeTemp(*tempIo, "[/EMC Exiv2_pdfmark" + lineEnding); - writeTemp(*tempIo, "[/NamespacePop Exiv2_pdfmark" + lineEnding); - writeTemp(*tempIo, "%Exiv2EndXMP" + lineEnding); - } - } - // add EOF comment if necessary - if (pos == posEndEps && posEof == posEndEps) { - writeTemp(*tempIo, "%%EOF" + lineEnding); - } - prevPos = pos; - prevSkipPos = skipPos; - } - const uint32_t posEndEpsNew = posTemp(*tempIo); - #ifdef DEBUG - EXV_DEBUG << "readWriteEpsMetadata: New EPS size: " << (posEndEpsNew - posEpsNew) << "\n"; - #endif - if (dosEps) { - // write WMF and/or TIFF section if present - writeTemp(*tempIo, data + posWmf, sizeWmf); - writeTemp(*tempIo, data + posTiff, sizeTiff); - #ifdef DEBUG - EXV_DEBUG << "readWriteEpsMetadata: New DOS EPS total size: " << posTemp(*tempIo) << "\n"; - #endif - // write DOS EPS header - if (tempIo->seek(0, BasicIo::beg) != 0) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Internal error while seeking in temporary file.\n"; - #endif - throw Error(21); - } - byte dosEpsHeader[30]; - dosEpsSignature.copy(reinterpret_cast(dosEpsHeader), dosEpsSignature.size()); - ul2Data(dosEpsHeader + 4, posEpsNew, littleEndian); - ul2Data(dosEpsHeader + 8, posEndEpsNew - posEpsNew, littleEndian); - ul2Data(dosEpsHeader + 12, sizeWmf == 0 ? 0 : posEndEpsNew, littleEndian); - ul2Data(dosEpsHeader + 16, sizeWmf, littleEndian); - ul2Data(dosEpsHeader + 20, sizeTiff == 0 ? 0 : posEndEpsNew + sizeWmf, littleEndian); - ul2Data(dosEpsHeader + 24, sizeTiff, littleEndian); - us2Data(dosEpsHeader + 28, 0xFFFF, littleEndian); - writeTemp(*tempIo, dosEpsHeader, sizeof(dosEpsHeader)); - } - - // copy temporary file to real output file - io.close(); - io.transfer(*tempIo); - } - } - -} // namespace - -// ***************************************************************************** -// class member definitions -namespace Exiv2 -{ - - EpsImage::EpsImage(BasicIo::AutoPtr io, bool create) - : Image(ImageType::eps, mdXmp, io) - { - //LogMsg::setLevel(LogMsg::debug); - if (create) { - if (io_->open() == 0) { - #ifdef DEBUG - EXV_DEBUG << "Exiv2::EpsImage:: Creating blank EPS image\n"; - #endif - IoCloser closer(*io_); - if (io_->write(reinterpret_cast(epsBlank.data()), static_cast(epsBlank.size())) != static_cast(epsBlank.size())) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to write blank EPS image.\n"; - #endif - throw Error(21); - } - } - } - } - - std::string EpsImage::mimeType() const - { - return "application/postscript"; - } - - void EpsImage::setComment(const std::string& /*comment*/) - { - throw Error(32, "Image comment", "EPS"); - } - - void EpsImage::readMetadata() - { - #ifdef DEBUG - EXV_DEBUG << "Exiv2::EpsImage::readMetadata: Reading EPS file " << io_->path() << "\n"; - #endif - - // read metadata - readWriteEpsMetadata(*io_, xmpPacket_, nativePreviews_, /* write = */ false); - - // decode XMP metadata - if (xmpPacket_.size() > 0 && XmpParser::decode(xmpData_, xmpPacket_) > 1) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to decode XMP metadata.\n"; - #endif - throw Error(14); - } - - #ifdef DEBUG - EXV_DEBUG << "Exiv2::EpsImage::readMetadata: Finished reading EPS file " << io_->path() << "\n"; - #endif - } - - void EpsImage::writeMetadata() - { - #ifdef DEBUG - EXV_DEBUG << "Exiv2::EpsImage::writeMetadata: Writing EPS file " << io_->path() << "\n"; - #endif - - // encode XMP metadata if necessary - if (!writeXmpFromPacket() && XmpParser::encode(xmpPacket_, xmpData_) > 1) { - #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to encode XMP metadata.\n"; - #endif - throw Error(21); - } - - // write metadata - readWriteEpsMetadata(*io_, xmpPacket_, nativePreviews_, /* write = */ true); - - #ifdef DEBUG - EXV_DEBUG << "Exiv2::EpsImage::writeMetadata: Finished writing EPS file " << io_->path() << "\n"; - #endif - } - - // ************************************************************************* - // free functions - Image::AutoPtr newEpsInstance(BasicIo::AutoPtr io, bool create) - { - Image::AutoPtr image(new EpsImage(io, create)); - if (!image->good()) { - image.reset(); - } - return image; - } - - bool isEpsType(BasicIo& iIo, bool advance) - { - // read as many bytes as needed for the longest (DOS) EPS signature - long bufSize = static_cast(dosEpsSignature.size()); - for (size_t i = 0; i < (sizeof epsFirstLine) / (sizeof *epsFirstLine); i++) { - if (bufSize < static_cast(epsFirstLine[i].size())) { - bufSize = static_cast(epsFirstLine[i].size()); - } - } - DataBuf buf = iIo.read(bufSize); - if (iIo.error() || buf.size_ != bufSize) { - return false; - } - // check for all possible (DOS) EPS signatures - bool matched = (memcmp(buf.pData_, dosEpsSignature.data(), dosEpsSignature.size()) == 0); - for (size_t i = 0; !matched && i < (sizeof epsFirstLine) / (sizeof *epsFirstLine); i++) { - matched = (memcmp(buf.pData_, epsFirstLine[i].data(), epsFirstLine[i].size()) == 0); - } - // seek back if possible and requested - if (!advance || !matched) { - iIo.seek(-buf.size_, BasicIo::cur); - } - return matched; - } - -} // namespace Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/epsimage.hpp b/platform/win32/msvc/external/exiv2/src/epsimage.hpp deleted file mode 100644 index ffa29c2d8dc..00000000000 --- a/platform/win32/msvc/external/exiv2/src/epsimage.hpp +++ /dev/null @@ -1,128 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file epsimage.hpp - @brief EPS image. -
References: -
[1] Adobe PostScript Language Document Structuring Conventions Specification, Version 3.0, September 1992 -
[2] Adobe Encapsulated PostScript File Format Specification, Version 3.0, May 1992 -
[3] Adobe XMP Specification Part 3: Storage in Files, July 2010 -
[4] Re: Thumbnail data format in ai file, Dec 2003 - @version $Rev: $ - @author Michael Ulbrich (mul) - mul@rentapacs.de - @author Volker Grabsch (vog) - vog@notjusthosting.com - @date 7-Mar-2011, vog: created - */ -#ifndef EPSIMAGE_HPP_ -#define EPSIMAGE_HPP_ - -// ***************************************************************************** -// included header files -#include "image.hpp" -#include "types.hpp" - -// + standard includes -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 -{ - -// ***************************************************************************** -// class definitions - - // Add EPS to the supported image formats - namespace ImageType { - const int eps = 18; //!< EPS image type - } - - /*! - @brief Class to access EPS images. - */ - class EXIV2API EpsImage : public Image { - public: - //! @name Creators - //@{ - /*! - @brief Constructor to open a EPS image. Since the - constructor can't return a result, callers should check the - good() method after object construction to determine success - or failure. - @param io An auto-pointer that owns a BasicIo instance used for - reading and writing image metadata. \b Important: The constructor - takes ownership of the passed in BasicIo instance through the - auto-pointer. Callers should not continue to use the BasicIo - instance after it is passed to this method. Use the Image::io() - method to get a temporary reference. - @param create Specifies if an existing image should be read (false) - or if a new file should be created (true). - */ - EpsImage(BasicIo::AutoPtr io, bool create); - //@} - - //! @name Manipulators - //@{ - void readMetadata(); - void writeMetadata(); - /*! - @brief Not supported. - Calling this function will throw an instance of Error(32). - */ - void setComment(const std::string& comment); - //@} - - //! @name Accessors - //@{ - std::string mimeType() const; - //@} - - private: - //! @name NOT Implemented - //@{ - //! Copy constructor - EpsImage(const EpsImage& rhs); - //! Assignment operator - EpsImage& operator=(const EpsImage& rhs); - //@} - - }; // class EpsImage - -// ***************************************************************************** -// template, inline and free functions - - // These could be static private functions on Image subclasses but then - // ImageFactory needs to be made a friend. - /*! - @brief Create a new EpsImage instance and return an auto-pointer to it. - Caller owns the returned object and the auto-pointer ensures that - it will be deleted. - */ - EXIV2API Image::AutoPtr newEpsInstance(BasicIo::AutoPtr io, bool create); - - //! Check if the file iIo is a EPS image. - EXIV2API bool isEpsType(BasicIo& iIo, bool advance); - -} // namespace Exiv2 - -#endif // #ifndef EPSIMAGE_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/error.cpp b/platform/win32/msvc/external/exiv2/src/error.cpp deleted file mode 100644 index af588d02fc6..00000000000 --- a/platform/win32/msvc/external/exiv2/src/error.cpp +++ /dev/null @@ -1,211 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: error.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - History: 02-Apr-05, ahu: created - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: error.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#include "error.hpp" -#include "i18n.h" // NLS support. - -// + standard includes -#include -#include -#include - -// ***************************************************************************** -namespace { - - //! Helper structure defining an error message. - struct ErrMsg { - //! Comparison operator - bool operator==(int code) const { return code_ == code; } - - int code_; //!< Error code - const char* message_; //!< Error message - }; - - //! Complete list of Exiv2 exception error messages - const ErrMsg errList[] = { - { -1, N_("Error %0: arg2=%2, arg3=%3, arg1=%1.") }, - { 0, N_("Success") }, - { 1, "%1" }, // %1=error message - { 2, "%1: Call to `%3' failed: %2" }, // %1=path, %2=strerror, %3=function that failed - { 3, N_("This does not look like a %1 image") }, // %1=Image type - { 4, N_("Invalid dataset name `%1'") }, // %1=dataset name - { 5, N_("Invalid record name `%1'") }, // %1=record name - { 6, N_("Invalid key `%1'") }, // %1=key - { 7, N_("Invalid tag name or ifdId `%1', ifdId %2") }, // %1=tag name, %2=ifdId - { 8, N_("Value not set") }, - { 9, N_("%1: Failed to open the data source: %2") }, // %1=path, %2=strerror - { 10, N_("%1: Failed to open file (%2): %3") }, // %1=path, %2=mode, %3=strerror - { 11, N_("%1: The file contains data of an unknown image type") }, // %1=path - { 12, N_("The memory contains data of an unknown image type") }, - { 13, N_("Image type %1 is not supported") }, // %1=image type - { 14, N_("Failed to read image data") }, - { 15, N_("This does not look like a JPEG image") }, - { 16, N_("%1: Failed to map file for reading and writing: %2") }, // %1=path, %2=strerror - { 17, N_("%1: Failed to rename file to %2: %3") }, // %1=old path, %2=new path, %3=strerror - { 18, N_("%1: Transfer failed: %2") }, // %1=path, %2=strerror - { 19, N_("Memory transfer failed: %1") }, // %1=strerror - { 20, N_("Failed to read input data") }, - { 21, N_("Failed to write image") }, - { 22, N_("Input data does not contain a valid image") }, - { 23, N_("Invalid ifdId %1") }, // %1=ifdId - { 24, N_("Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)") }, // %1=tag, %2=dataSize, %3=required size - { 25, N_("Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)") }, // %1=tag, %2=dataAreaSize, %3=required size - { 26, N_("Offset out of range") }, - { 27, N_("Unsupported data area offset type") }, - { 28, N_("Invalid charset: `%1'") }, // %1=charset name - { 29, N_("Unsupported date format") }, - { 30, N_("Unsupported time format") }, - { 31, N_("Writing to %1 images is not supported") }, // %1=image format - { 32, N_("Setting %1 in %2 images is not supported") }, // %1=metadata type, %2=image format - { 33, N_("This does not look like a CRW image") }, - { 34, N_("%1: Not supported") }, // %1=function - { 35, N_("No namespace info available for XMP prefix `%1'") }, // %1=prefix - { 36, N_("No prefix registered for namespace `%2', needed for property path `%1'") }, // %1=namespace - { 37, N_("Size of %1 JPEG segment is larger than 65535 bytes") }, // %1=type of metadata (Exif, IPTC, JPEG comment) - { 38, N_("Unhandled Xmpdatum %1 of type %2") }, // %1=key, %2=value type - { 39, N_("Unhandled XMP node %1 with opt=%2") }, // %1=key, %2=XMP Toolkit option flags - { 40, N_("XMP Toolkit error %1: %2") }, // %1=XMP_Error::GetID(), %2=XMP_Error::GetErrMsg() - { 41, N_("Failed to decode Lang Alt property %1 with opt=%2") }, // %1=property path, %3=XMP Toolkit option flags - { 42, N_("Failed to decode Lang Alt qualifier %1 with opt=%2") }, // %1=qualifier path, %3=XMP Toolkit option flags - { 43, N_("Failed to encode Lang Alt property %1") }, // %1=key - { 44, N_("Failed to determine property name from path %1, namespace %2") }, // %1=property path, %2=namespace - { 45, N_("Schema namespace %1 is not registered with the XMP Toolkit") }, // %1=namespace - { 46, N_("No namespace registered for prefix `%1'") }, // %1=prefix - { 47, N_("Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `%1', `%2', `%3'") }, // %1=namespace, %2=property path, %3=value - { 48, N_("Invalid XmpText type `%1'") }, // %1=type - { 49, N_("TIFF directory %1 has too many entries") }, // %1=TIFF directory name - { 50, N_("Multiple TIFF array element tags %1 in one directory") }, // %1=tag number - { 51, N_("TIFF array element tag %1 has wrong type") }, // %1=tag number - { 52, N_("%1 has invalid XMP value type `%2'") } // %1=key, %2=value type - }; - -} - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - LogMsg::Level LogMsg::level_ = LogMsg::warn; // Default output level - LogMsg::Handler LogMsg::handler_ = LogMsg::defaultHandler; - - void LogMsg::defaultHandler(int level, const char* s) - { - switch (static_cast(level)) { - case LogMsg::debug: std::cerr << "Debug: "; break; - case LogMsg::info: std::cerr << "Info: "; break; - case LogMsg::warn: std::cerr << "Warning: "; break; - case LogMsg::error: std::cerr << "Error: "; break; - case LogMsg::mute: assert(false); - } - std::cerr << s; - } - - AnyError::~AnyError() throw() - { - } - - //! @cond IGNORE - template<> - void BasicError::setMsg() - { - std::string msg = _(errMsg(code_)); - std::string::size_type pos; - pos = msg.find("%0"); - if (pos != std::string::npos) { - msg.replace(pos, 2, toString(code_)); - } - if (count_ > 0) { - pos = msg.find("%1"); - if (pos != std::string::npos) { - msg.replace(pos, 2, arg1_); - } - } - if (count_ > 1) { - pos = msg.find("%2"); - if (pos != std::string::npos) { - msg.replace(pos, 2, arg2_); - } - } - if (count_ > 2) { - pos = msg.find("%3"); - if (pos != std::string::npos) { - msg.replace(pos, 2, arg3_); - } - } - msg_ = msg; -#ifdef EXV_UNICODE_PATH - wmsg_ = s2ws(msg); -#endif - } - //! @endcond - -#ifdef EXV_UNICODE_PATH - template<> - void BasicError::setMsg() - { - std::string s = _(errMsg(code_)); - std::wstring wmsg(s.begin(), s.end()); - std::wstring::size_type pos; - pos = wmsg.find(L"%0"); - if (pos != std::wstring::npos) { - wmsg.replace(pos, 2, toBasicString(code_)); - } - if (count_ > 0) { - pos = wmsg.find(L"%1"); - if (pos != std::wstring::npos) { - wmsg.replace(pos, 2, arg1_); - } - } - if (count_ > 1) { - pos = wmsg.find(L"%2"); - if (pos != std::wstring::npos) { - wmsg.replace(pos, 2, arg2_); - } - } - if (count_ > 2) { - pos = wmsg.find(L"%3"); - if (pos != std::wstring::npos) { - wmsg.replace(pos, 2, arg3_); - } - } - wmsg_ = wmsg; - msg_ = ws2s(wmsg); - } -#endif - - const char* errMsg(int code) - { - const ErrMsg* em = find(errList, code); - return em ? em->message_ : ""; - } - -} // namespace Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/error.hpp b/platform/win32/msvc/external/exiv2/src/error.hpp deleted file mode 100644 index c10e6b74817..00000000000 --- a/platform/win32/msvc/external/exiv2/src/error.hpp +++ /dev/null @@ -1,331 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file error.hpp - @brief Error class for exceptions, log message class - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 15-Jan-04, ahu: created
- 11-Feb-04, ahu: isolated as a component - */ -#ifndef ERROR_HPP_ -#define ERROR_HPP_ - -// ***************************************************************************** -// included header files -#include "types.hpp" - -// + standard includes -#include -#include -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class definitions - - /*! - @brief Class for a log message, used by the library. Applications can set - the log level and provide a customer log message handler (callback - function). - - This class is meant to be used as a temporary object with the - related macro-magic like this: - - - EXV_WARNING << "Warning! Something looks fishy.\n"; - - - which translates to - - - if (LogMsg::warn >= LogMsg::level() && LogMsg::handler()) - LogMsg(LogMsg::warn).os() << "Warning! Something looks fishy.\n"; - - - The macros EXV_DEBUG, EXV_INFO, EXV_WARNING and EXV_ERROR are - shorthands and ensure efficient use of the logging facility: If a - log message doesn't need to be generated because of the log level - setting, the temp object is not even created. - - Caveat: The entire log message is not processed in this case. So don't - make that call any logic that always needs to be executed. - */ - class EXIV2API LogMsg { - //! Prevent copy-construction: not implemented. - LogMsg(const LogMsg&); - //! Prevent assignment: not implemented. - LogMsg& operator=(const LogMsg&); - public: - /*! - @brief Defined log levels. To suppress all log messages, either set the - log level to \c mute or set the log message handler to 0. - */ - enum Level { debug = 0, info = 1, warn = 2, error = 3, mute = 4 }; - /*! - @brief Type for a log message handler function. The function receives - the log level and message and can process it in an application - specific way. The default handler sends the log message to - standard error. - */ - typedef void (*Handler)(int, const char*); - - //! @name Creators - //@{ - //! Constructor, takes the log message type as an argument - explicit LogMsg(Level msgType) : msgType_(msgType) {} - //! Destructor, passes the log message to the message handler depending on the log level - ~LogMsg() { if (msgType_ >= level_ && handler_) handler_(msgType_, os_.str().c_str()); } - //@} - - //! @name Manipulators - //@{ - //! Return a reference to the ostringstream which holds the log message - std::ostringstream& os() { return os_; } - //@} - - /*! - @brief Set the log level. Only log messages with a level greater or - equal \em level are sent to the log message handler. Default - log level is \c warn. To suppress all log messages, set the log - level to \c mute (or set the log message handler to 0). - */ - static void setLevel(Level level) { level_ = level; } - /*! - @brief Set the log message handler. The default handler writes log - messages to standard error. To suppress all log messages, set - the log message handler to 0 (or set the log level to \c mute). - */ - static void setHandler(Handler handler) { handler_ = handler; } - //! Return the current log level - static Level level() { return level_; } - //! Return the current log message handler - static Handler handler() { return handler_; } - //! The default log handler. Sends the log message to standard error. - static void defaultHandler(int level, const char* s); - - private: - // DATA - // The output level. Only messages with type >= level_ will be written - static Level level_; - // The log handler in use - static Handler handler_; - // The type of this log message - const Level msgType_; - // Holds the log message until it is passed to the message handler - std::ostringstream os_; - - }; // class LogMsg - -// Macros for simple access -//! Shorthand to create a temp debug log message object and return its ostringstream -#define EXV_DEBUG if (LogMsg::debug >= LogMsg::level() && LogMsg::handler()) LogMsg(LogMsg::debug).os() -//! Shorthand for a temp info log message object and return its ostringstream -#define EXV_INFO if (LogMsg::info >= LogMsg::level() && LogMsg::handler()) LogMsg(LogMsg::info).os() -//! Shorthand for a temp warning log message object and return its ostringstream -#define EXV_WARNING if (LogMsg::warn >= LogMsg::level() && LogMsg::handler()) LogMsg(LogMsg::warn).os() -//! Shorthand for a temp error log message object and return its ostringstream -#define EXV_ERROR if (LogMsg::error >= LogMsg::level() && LogMsg::handler()) LogMsg(LogMsg::error).os() - -#ifdef _MSC_VER -// Disable MSVC warnings "non - DLL-interface classkey 'identifier' used as base -// for DLL-interface classkey 'identifier'" -# pragma warning( disable : 4275 ) -#endif - - //! Generalised toString function - template - std::basic_string toBasicString(const T& arg) - { - std::basic_ostringstream os; - os << arg; - return os.str(); - } - - /*! - @brief Error class interface. Allows the definition and use of a hierarchy - of error classes which can all be handled in one catch block. - Inherits from the standard exception base-class, to make life - easier for library users (they have the option of catching most - things via std::exception). - */ - class EXIV2API AnyError : public std::exception { - public: - //! @name Creators - //@{ - //! Virtual destructor. - virtual ~AnyError() throw(); - //@} - - //! @name Accessors - //@{ - //! Return the error code. - virtual int code() const throw() =0; - //@} - }; // AnyError - - //! %AnyError output operator - inline std::ostream& operator<<(std::ostream& os, const AnyError& error) - { - return os << error.what(); - } - - /*! - @brief Simple error class used for exceptions. An output operator is - provided to print errors to a stream. - */ - template - class EXV_DLLPUBLIC BasicError : public AnyError { - public: - //! @name Creators - //@{ - //! Constructor taking only an error code - EXV_DLLLOCAL explicit BasicError(int code); - //! Constructor taking an error code and one argument - template - EXV_DLLLOCAL BasicError(int code, const A& arg1); - //! Constructor taking an error code and two arguments - template - EXV_DLLLOCAL BasicError(int code, const A& arg1, const B& arg2); - //! Constructor taking an error code and three arguments - template - EXV_DLLLOCAL BasicError(int code, const A& arg1, const B& arg2, const C& arg3); - //! Virtual destructor. (Needed because of throw()) - EXV_DLLLOCAL virtual ~BasicError() throw(); - //@} - - //! @name Accessors - //@{ - EXV_DLLLOCAL virtual int code() const throw(); - /*! - @brief Return the error message as a C-string. The pointer returned by what() - is valid only as long as the BasicError object exists. - */ - EXV_DLLLOCAL virtual const char* what() const throw(); -#ifdef EXV_UNICODE_PATH - /*! - @brief Return the error message as a wchar_t-string. The pointer returned by - wwhat() is valid only as long as the BasicError object exists. - */ - EXV_DLLLOCAL virtual const wchar_t* wwhat() const throw(); -#endif - //@} - - private: - //! @name Manipulators - //@{ - //! Assemble the error message from the arguments - EXIV2API void setMsg(); - //@} - - // DATA - int code_; //!< Error code - int count_; //!< Number of arguments - std::basic_string arg1_; //!< First argument - std::basic_string arg2_; //!< Second argument - std::basic_string arg3_; //!< Third argument - std::string msg_; //!< Complete error message -#ifdef EXV_UNICODE_PATH - std::wstring wmsg_; //!< Complete error message as a wide string -#endif - }; // class BasicError - - //! Error class used for exceptions (std::string based) - typedef BasicError Error; -#ifdef EXV_UNICODE_PATH - //! Error class used for exceptions (std::wstring based) - typedef BasicError WError; -#endif - -// ***************************************************************************** -// free functions, template and inline definitions - - //! Return the error message for the error with code \em code. - EXIV2API const char* errMsg(int code); - - template - BasicError::BasicError(int code) - : code_(code), count_(0) - { - setMsg(); - } - - template template - BasicError::BasicError(int code, const A& arg1) - : code_(code), count_(1), arg1_(toBasicString(arg1)) - { - setMsg(); - } - - template template - BasicError::BasicError(int code, const A& arg1, const B& arg2) - : code_(code), count_(2), - arg1_(toBasicString(arg1)), - arg2_(toBasicString(arg2)) - { - setMsg(); - } - - template template - BasicError::BasicError(int code, const A& arg1, const B& arg2, const C& arg3) - : code_(code), count_(3), - arg1_(toBasicString(arg1)), - arg2_(toBasicString(arg2)), - arg3_(toBasicString(arg3)) - { - setMsg(); - } - - template - BasicError::~BasicError() throw() - { - } - - template - int BasicError::code() const throw() - { - return code_; - } - - template - const char* BasicError::what() const throw() - { - return msg_.c_str(); - } - -#ifdef EXV_UNICODE_PATH - template - const wchar_t* BasicError::wwhat() const throw() - { - return wmsg_.c_str(); - } -#endif -#ifdef _MSC_VER -# pragma warning( default : 4275 ) -#endif - -} // namespace Exiv2 -#endif // #ifndef ERROR_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/exif.cpp b/platform/win32/msvc/external/exiv2/src/exif.cpp deleted file mode 100644 index 941096096c8..00000000000 --- a/platform/win32/msvc/external/exiv2/src/exif.cpp +++ /dev/null @@ -1,945 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: exif.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - History: 26-Jan-04, ahu: created - 11-Feb-04, ahu: isolated as a component - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: exif.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#include "exif.hpp" -#include "metadatum.hpp" -#include "tags.hpp" -#include "tags_int.hpp" -#include "value.hpp" -#include "types.hpp" -#include "error.hpp" -#include "basicio.hpp" -#include "tiffimage.hpp" -#include "tiffimage_int.hpp" -#include "tiffcomposite_int.hpp" // for Tag::root - -// + standard includes -#include -#include -#include -#include -#include -#include -#include - -// ***************************************************************************** -namespace { - - //! Unary predicate that matches a Exifdatum with a given key - class FindExifdatumByKey { - public: - //! Constructor, initializes the object with the key to look for - FindExifdatumByKey(const std::string& key) : key_(key) {} - /*! - @brief Returns true if the key of \em exifdatum is equal - to that of the object. - */ - bool operator()(const Exiv2::Exifdatum& exifdatum) const - { - return key_ == exifdatum.key(); - } - - private: - const std::string& key_; - - }; // class FindExifdatumByKey - - /*! - @brief Exif %Thumbnail image. This abstract base class provides the - interface for the thumbnail image that is optionally embedded in - the Exif data. This class is used internally by ExifData, it is - probably not useful for a client as a standalone class. Instead, - use an instance of ExifData to access the Exif thumbnail image. - */ - class Thumbnail { - public: - //! Shortcut for a %Thumbnail auto pointer. - typedef std::auto_ptr AutoPtr; - - //! @name Creators - //@{ - //! Virtual destructor - virtual ~Thumbnail() {} - //@} - - //! Factory function to create a thumbnail for the Exif metadata provided. - static AutoPtr create(const Exiv2::ExifData& exifData); - - //! @name Accessors - //@{ - /*! - @brief Return the thumbnail image in a %DataBuf. The caller owns the - data buffer and %DataBuf ensures that it will be deleted. - */ - virtual Exiv2::DataBuf copy(const Exiv2::ExifData& exifData) const =0; - /*! - @brief Return the MIME type of the thumbnail ("image/tiff" or - "image/jpeg"). - */ - virtual const char* mimeType() const =0; - /*! - @brief Return the file extension for the format of the thumbnail - (".tif", ".jpg"). - */ - virtual const char* extension() const =0; -#ifdef EXV_UNICODE_PATH - /*! - @brief Like extension() but returns the extension in a wchar_t. - @note This function is only available on Windows. - */ - virtual const wchar_t* wextension() const =0; -#endif - //@} - - }; // class Thumbnail - - //! Exif thumbnail image in TIFF format - class TiffThumbnail : public Thumbnail { - public: - //! Shortcut for a %TiffThumbnail auto pointer. - typedef std::auto_ptr AutoPtr; - - //! @name Manipulators - //@{ - //! Assignment operator. - TiffThumbnail& operator=(const TiffThumbnail& rhs); - //@} - - //! @name Accessors - //@{ - Exiv2::DataBuf copy(const Exiv2::ExifData& exifData) const; - const char* mimeType() const; - const char* extension() const; -#ifdef EXV_UNICODE_PATH - const wchar_t* wextension() const; -#endif - //@} - - }; // class TiffThumbnail - - //! Exif thumbnail image in JPEG format - class JpegThumbnail : public Thumbnail { - public: - //! Shortcut for a %JpegThumbnail auto pointer. - typedef std::auto_ptr AutoPtr; - - //! @name Manipulators - //@{ - //! Assignment operator. - JpegThumbnail& operator=(const JpegThumbnail& rhs); - //@} - - //! @name Accessors - //@{ - Exiv2::DataBuf copy(const Exiv2::ExifData& exifData) const; - const char* mimeType() const; - const char* extension() const; -#ifdef EXV_UNICODE_PATH - const wchar_t* wextension() const; -#endif - //@} - - }; // class JpegThumbnail - - //! Helper function to sum all components of the value of a metadatum - long sumToLong(const Exiv2::Exifdatum& md); - - //! Helper function to delete all tags of a specific IFD from the metadata. - void eraseIfd(Exiv2::ExifData& ed, Exiv2::Internal::IfdId ifdId); - -} - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - using namespace Internal; - - /*! - @brief Set the value of \em exifDatum to \em value. If the object already - has a value, it is replaced. Otherwise a new ValueType\ value - is created and set to \em value. - - This is a helper function, called from Exifdatum members. It is meant to - be used with T = (u)int16_t, (u)int32_t or (U)Rational. Do not use directly. - */ - template - Exiv2::Exifdatum& setValue(Exiv2::Exifdatum& exifDatum, const T& value) - { - std::auto_ptr > v - = std::auto_ptr >(new Exiv2::ValueType); - v->value_.push_back(value); - exifDatum.value_ = v; - return exifDatum; - } - - Exifdatum::Exifdatum(const ExifKey& key, const Value* pValue) - : key_(key.clone()) - { - if (pValue) value_ = pValue->clone(); - } - - Exifdatum::~Exifdatum() - { - } - - Exifdatum::Exifdatum(const Exifdatum& rhs) - : Metadatum(rhs) - { - if (rhs.key_.get() != 0) key_ = rhs.key_->clone(); // deep copy - if (rhs.value_.get() != 0) value_ = rhs.value_->clone(); // deep copy - } - - std::ostream& Exifdatum::write(std::ostream& os, const ExifData* pMetadata) const - { - if (value().count() == 0) return os; - PrintFct fct = printValue; - const TagInfo* ti = Internal::tagInfo(tag(), static_cast(ifdId())); - if (ti != 0) fct = ti->printFct_; - return fct(os, value(), pMetadata); - } - - const Value& Exifdatum::value() const - { - if (value_.get() == 0) throw Error(8); - return *value_; - } - - Exifdatum& Exifdatum::operator=(const Exifdatum& rhs) - { - if (this == &rhs) return *this; - Metadatum::operator=(rhs); - - key_.reset(); - if (rhs.key_.get() != 0) key_ = rhs.key_->clone(); // deep copy - - value_.reset(); - if (rhs.value_.get() != 0) value_ = rhs.value_->clone(); // deep copy - - return *this; - } // Exifdatum::operator= - - Exifdatum& Exifdatum::operator=(const std::string& value) - { - setValue(value); - return *this; - } - - Exifdatum& Exifdatum::operator=(const uint16_t& value) - { - return Exiv2::setValue(*this, value); - } - - Exifdatum& Exifdatum::operator=(const uint32_t& value) - { - return Exiv2::setValue(*this, value); - } - - Exifdatum& Exifdatum::operator=(const URational& value) - { - return Exiv2::setValue(*this, value); - } - - Exifdatum& Exifdatum::operator=(const int16_t& value) - { - return Exiv2::setValue(*this, value); - } - - Exifdatum& Exifdatum::operator=(const int32_t& value) - { - return Exiv2::setValue(*this, value); - } - - Exifdatum& Exifdatum::operator=(const Rational& value) - { - return Exiv2::setValue(*this, value); - } - - Exifdatum& Exifdatum::operator=(const Value& value) - { - setValue(&value); - return *this; - } - - void Exifdatum::setValue(const Value* pValue) - { - value_.reset(); - if (pValue) value_ = pValue->clone(); - } - - int Exifdatum::setValue(const std::string& value) - { - if (value_.get() == 0) { - TypeId type = key_->defaultTypeId(); - value_ = Value::create(type); - } - return value_->read(value); - } - - int Exifdatum::setDataArea(const byte* buf, long len) - { - return value_.get() == 0 ? -1 : value_->setDataArea(buf, len); - } - - std::string Exifdatum::key() const - { - return key_.get() == 0 ? "" : key_->key(); - } - - const char* Exifdatum::familyName() const - { - return key_.get() == 0 ? "" : key_->familyName(); - } - - std::string Exifdatum::groupName() const - { - return key_.get() == 0 ? "" : key_->groupName(); - } - - std::string Exifdatum::tagName() const - { - return key_.get() == 0 ? "" : key_->tagName(); - } - - std::string Exifdatum::tagLabel() const - { - return key_.get() == 0 ? "" : key_->tagLabel(); - } - - uint16_t Exifdatum::tag() const - { - return key_.get() == 0 ? 0xffff : key_->tag(); - } - - int Exifdatum::ifdId() const - { - return key_.get() == 0 ? ifdIdNotSet : key_->ifdId(); - } - - const char* Exifdatum::ifdName() const - { - return key_.get() == 0 ? "" : Internal::ifdName(static_cast(key_->ifdId())); - } - - int Exifdatum::idx() const - { - return key_.get() == 0 ? 0 : key_->idx(); - } - - long Exifdatum::copy(byte* buf, ByteOrder byteOrder) const - { - return value_.get() == 0 ? 0 : value_->copy(buf, byteOrder); - } - - TypeId Exifdatum::typeId() const - { - return value_.get() == 0 ? invalidTypeId : value_->typeId(); - } - - const char* Exifdatum::typeName() const - { - return TypeInfo::typeName(typeId()); - } - - long Exifdatum::typeSize() const - { - return TypeInfo::typeSize(typeId()); - } - - long Exifdatum::count() const - { - return value_.get() == 0 ? 0 : value_->count(); - } - - long Exifdatum::size() const - { - return value_.get() == 0 ? 0 : value_->size(); - } - - std::string Exifdatum::toString() const - { - return value_.get() == 0 ? "" : value_->toString(); - } - - std::string Exifdatum::toString(long n) const - { - return value_.get() == 0 ? "" : value_->toString(n); - } - - long Exifdatum::toLong(long n) const - { - return value_.get() == 0 ? -1 : value_->toLong(n); - } - - float Exifdatum::toFloat(long n) const - { - return value_.get() == 0 ? -1 : value_->toFloat(n); - } - - Rational Exifdatum::toRational(long n) const - { - return value_.get() == 0 ? Rational(-1, 1) : value_->toRational(n); - } - - Value::AutoPtr Exifdatum::getValue() const - { - return value_.get() == 0 ? Value::AutoPtr(0) : value_->clone(); - } - - long Exifdatum::sizeDataArea() const - { - return value_.get() == 0 ? 0 : value_->sizeDataArea(); - } - - DataBuf Exifdatum::dataArea() const - { - return value_.get() == 0 ? DataBuf(0, 0) : value_->dataArea(); - } - - ExifThumbC::ExifThumbC(const ExifData& exifData) - : exifData_(exifData) - { - } - - DataBuf ExifThumbC::copy() const - { - Thumbnail::AutoPtr thumbnail = Thumbnail::create(exifData_); - if (thumbnail.get() == 0) return DataBuf(); - return thumbnail->copy(exifData_); - } - - long ExifThumbC::writeFile(const std::string& path) const - { - Thumbnail::AutoPtr thumbnail = Thumbnail::create(exifData_); - if (thumbnail.get() == 0) return 0; - std::string name = path + thumbnail->extension(); - DataBuf buf(thumbnail->copy(exifData_)); - if (buf.size_ == 0) return 0; - return Exiv2::writeFile(buf, name); - } - -#ifdef EXV_UNICODE_PATH - long ExifThumbC::writeFile(const std::wstring& wpath) const - { - Thumbnail::AutoPtr thumbnail = Thumbnail::create(exifData_); - if (thumbnail.get() == 0) return 0; - std::wstring name = wpath + thumbnail->wextension(); - DataBuf buf(thumbnail->copy(exifData_)); - if (buf.size_ == 0) return 0; - return Exiv2::writeFile(buf, name); - } - -#endif - const char* ExifThumbC::mimeType() const - { - Thumbnail::AutoPtr thumbnail = Thumbnail::create(exifData_); - if (thumbnail.get() == 0) return ""; - return thumbnail->mimeType(); - } - - const char* ExifThumbC::extension() const - { - Thumbnail::AutoPtr thumbnail = Thumbnail::create(exifData_); - if (thumbnail.get() == 0) return ""; - return thumbnail->extension(); - } - -#ifdef EXV_UNICODE_PATH - const wchar_t* ExifThumbC::wextension() const - { - Thumbnail::AutoPtr thumbnail = Thumbnail::create(exifData_); - if (thumbnail.get() == 0) return EXV_WIDEN(""); - return thumbnail->wextension(); - } - -#endif - ExifThumb::ExifThumb(ExifData& exifData) - : ExifThumbC(exifData), exifData_(exifData) - { - } - - void ExifThumb::setJpegThumbnail( - const std::string& path, - URational xres, - URational yres, - uint16_t unit - ) - { - DataBuf thumb = readFile(path); // may throw - setJpegThumbnail(thumb.pData_, thumb.size_, xres, yres, unit); - } - -#ifdef EXV_UNICODE_PATH - void ExifThumb::setJpegThumbnail( - const std::wstring& wpath, - URational xres, - URational yres, - uint16_t unit - ) - { - DataBuf thumb = readFile(wpath); // may throw - setJpegThumbnail(thumb.pData_, thumb.size_, xres, yres, unit); - } - -#endif - void ExifThumb::setJpegThumbnail( - const byte* buf, - long size, - URational xres, - URational yres, - uint16_t unit - ) - { - setJpegThumbnail(buf, size); - exifData_["Exif.Thumbnail.XResolution"] = xres; - exifData_["Exif.Thumbnail.YResolution"] = yres; - exifData_["Exif.Thumbnail.ResolutionUnit"] = unit; - } - - void ExifThumb::setJpegThumbnail(const std::string& path) - { - DataBuf thumb = readFile(path); // may throw - setJpegThumbnail(thumb.pData_, thumb.size_); - } - -#ifdef EXV_UNICODE_PATH - void ExifThumb::setJpegThumbnail(const std::wstring& wpath) - { - DataBuf thumb = readFile(wpath); // may throw - setJpegThumbnail(thumb.pData_, thumb.size_); - } - -#endif - void ExifThumb::setJpegThumbnail(const byte* buf, long size) - { - exifData_["Exif.Thumbnail.Compression"] = uint16_t(6); - Exifdatum& format = exifData_["Exif.Thumbnail.JPEGInterchangeFormat"]; - format = uint32_t(0); - format.setDataArea(buf, size); - exifData_["Exif.Thumbnail.JPEGInterchangeFormatLength"] = uint32_t(size); - } - - void ExifThumb::erase() - { - eraseIfd(exifData_, ifd1Id); - } - - Exifdatum& ExifData::operator[](const std::string& key) - { - ExifKey exifKey(key); - iterator pos = findKey(exifKey); - if (pos == end()) { - add(Exifdatum(exifKey)); - pos = findKey(exifKey); - } - return *pos; - } - - void ExifData::add(const ExifKey& key, const Value* pValue) - { - add(Exifdatum(key, pValue)); - } - - void ExifData::add(const Exifdatum& exifdatum) - { - // allow duplicates - exifMetadata_.push_back(exifdatum); - } - - ExifData::const_iterator ExifData::findKey(const ExifKey& key) const - { - return std::find_if(exifMetadata_.begin(), exifMetadata_.end(), - FindExifdatumByKey(key.key())); - } - - ExifData::iterator ExifData::findKey(const ExifKey& key) - { - return std::find_if(exifMetadata_.begin(), exifMetadata_.end(), - FindExifdatumByKey(key.key())); - } - - void ExifData::clear() - { - exifMetadata_.clear(); - } - - void ExifData::sortByKey() - { - exifMetadata_.sort(cmpMetadataByKey); - } - - void ExifData::sortByTag() - { - exifMetadata_.sort(cmpMetadataByTag); - } - - ExifData::iterator ExifData::erase(ExifData::iterator beg, ExifData::iterator end) - { - return exifMetadata_.erase(beg, end); - } - - ExifData::iterator ExifData::erase(ExifData::iterator pos) - { - return exifMetadata_.erase(pos); - } - - ByteOrder ExifParser::decode( - ExifData& exifData, - const byte* pData, - uint32_t size - ) - { - IptcData iptcData; - XmpData xmpData; - ByteOrder bo = TiffParser::decode(exifData, - iptcData, - xmpData, - pData, - size); -#ifndef SUPPRESS_WARNINGS - if (!iptcData.empty()) { - EXV_WARNING << "Ignoring IPTC information encoded in the Exif data.\n"; - } - if (!xmpData.empty()) { - EXV_WARNING << "Ignoring XMP information encoded in the Exif data.\n"; - } -#endif - return bo; - } // ExifParser::decode - - //! @cond IGNORE - enum Ptt { pttLen, pttTag, pttIfd }; - struct PreviewTags { - Ptt ptt_; - const char* key_; - }; - //! @endcond - - WriteMethod ExifParser::encode( - Blob& blob, - const byte* pData, - uint32_t size, - ByteOrder byteOrder, - const ExifData& exifData - ) - { - ExifData ed = exifData; - - // Delete IFD0 tags that are "not recorded" in compressed images - // Reference: Exif 2.2 specs, 4.6.8 Tag Support Levels, section A - static const char* filteredIfd0Tags[] = { - "Exif.Image.PhotometricInterpretation", - "Exif.Image.StripOffsets", - "Exif.Image.RowsPerStrip", - "Exif.Image.StripByteCounts", - "Exif.Image.JPEGInterchangeFormat", - "Exif.Image.JPEGInterchangeFormatLength", - "Exif.Image.SubIFDs" - }; - for (unsigned int i = 0; i < EXV_COUNTOF(filteredIfd0Tags); ++i) { - ExifData::iterator pos = ed.findKey(ExifKey(filteredIfd0Tags[i])); - if (pos != ed.end()) { -#ifdef DEBUG - std::cerr << "Warning: Exif tag " << pos->key() << " not encoded\n"; -#endif - ed.erase(pos); - } - } - - // Delete IFDs which do not occur in JPEGs - static const IfdId filteredIfds[] = { - subImage1Id, - subImage2Id, - subImage3Id, - subImage4Id, - subImage5Id, - subImage6Id, - subImage7Id, - subImage8Id, - subImage9Id, - subThumb1Id, - panaRawId, - ifd2Id, - ifd3Id - }; - for (unsigned int i = 0; i < EXV_COUNTOF(filteredIfds); ++i) { -#ifdef DEBUG - std::cerr << "Warning: Exif IFD " << filteredIfds[i] << " not encoded\n"; -#endif - eraseIfd(ed, filteredIfds[i]); - } - - // IPTC and XMP are stored elsewhere, not in the Exif APP1 segment. - IptcData emptyIptc; - XmpData emptyXmp; - - // Encode and check if the result fits into a JPEG Exif APP1 segment - MemIo mio1; - std::auto_ptr header(new TiffHeader(byteOrder, 0x00000008, false)); - WriteMethod wm = TiffParserWorker::encode(mio1, - pData, - size, - ed, - emptyIptc, - emptyXmp, - Tag::root, - TiffMapping::findEncoder, - header.get(), - 0); - if (mio1.size() <= 65527) { - append(blob, mio1.mmap(), mio1.size()); - return wm; - } - - // If it doesn't fit, remove additional tags - - // Delete preview tags if the preview is larger than 32kB. - // Todo: Enhance preview classes to be able to write and delete previews and use that instead. - // Table must be sorted by preview, the first tag in each group is the size - static const PreviewTags filteredPvTags[] = { - { pttLen, "Exif.Minolta.ThumbnailLength" }, - { pttTag, "Exif.Minolta.ThumbnailOffset" }, - { pttLen, "Exif.Minolta.Thumbnail" }, - { pttLen, "Exif.NikonPreview.JPEGInterchangeFormatLength" }, - { pttIfd, "NikonPreview" }, - { pttLen, "Exif.Olympus.ThumbnailLength" }, - { pttTag, "Exif.Olympus.ThumbnailOffset" }, - { pttLen, "Exif.Olympus.ThumbnailImage" }, - { pttLen, "Exif.Olympus.Thumbnail" }, - { pttLen, "Exif.Olympus2.ThumbnailLength" }, - { pttTag, "Exif.Olympus2.ThumbnailOffset" }, - { pttLen, "Exif.Olympus2.ThumbnailImage" }, - { pttLen, "Exif.Olympus2.Thumbnail" }, - { pttLen, "Exif.OlympusCs.PreviewImageLength" }, - { pttTag, "Exif.OlympusCs.PreviewImageStart" }, - { pttTag, "Exif.OlympusCs.PreviewImageValid" }, - { pttLen, "Exif.Pentax.PreviewLength" }, - { pttTag, "Exif.Pentax.PreviewOffset" }, - { pttTag, "Exif.Pentax.PreviewResolution" }, - { pttLen, "Exif.Thumbnail.StripByteCounts" }, - { pttIfd, "Thumbnail" }, - { pttLen, "Exif.Thumbnail.JPEGInterchangeFormatLength" }, - { pttIfd, "Thumbnail" } - }; - bool delTags = false; - ExifData::iterator pos; - for (unsigned int i = 0; i < EXV_COUNTOF(filteredPvTags); ++i) { - switch (filteredPvTags[i].ptt_) { - case pttLen: - delTags = false; - pos = ed.findKey(ExifKey(filteredPvTags[i].key_)); - if (pos != ed.end() && sumToLong(*pos) > 32768) { - delTags = true; -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Exif tag " << pos->key() << " not encoded\n"; -#endif - ed.erase(pos); - } - break; - case pttTag: - if (delTags) { - pos = ed.findKey(ExifKey(filteredPvTags[i].key_)); - if (pos != ed.end()) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Exif tag " << pos->key() << " not encoded\n"; -#endif - ed.erase(pos); - } - } - break; - case pttIfd: - if (delTags) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Exif IFD " << filteredPvTags[i].key_ << " not encoded\n"; -#endif - eraseIfd(ed, Internal::groupId(filteredPvTags[i].key_)); - } - break; - } - } - - // Delete unknown tags larger than 4kB and known tags larger than 40kB. - for (ExifData::iterator pos = ed.begin(); pos != ed.end(); ) { - if ( (pos->size() > 4096 && pos->tagName().substr(0, 2) == "0x") - || pos->size() > 40960) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Exif tag " << pos->key() << " not encoded\n"; -#endif - pos = ed.erase(pos); - } - else { - ++pos; - } - } - - // Encode the remaining Exif tags again, don't care if it fits this time - MemIo mio2; - wm = TiffParserWorker::encode(mio2, - pData, - size, - ed, - emptyIptc, - emptyXmp, - Tag::root, - TiffMapping::findEncoder, - header.get(), - 0); - append(blob, mio2.mmap(), mio2.size()); -#ifdef DEBUG - if (wm == wmIntrusive) { - std::cerr << "SIZE OF EXIF DATA IS " << std::dec << io.size() << " BYTES\n"; - } - else { - std::cerr << "SIZE DOESN'T MATTER, NON-INTRUSIVE WRITING USED\n"; - } -#endif - return wm; - - } // ExifParser::encode - -} // namespace Exiv2 - -// ***************************************************************************** -// local definitions -namespace { - - //! @cond IGNORE - Thumbnail::AutoPtr Thumbnail::create(const Exiv2::ExifData& exifData) - { - Thumbnail::AutoPtr thumbnail; - const Exiv2::ExifKey k1("Exif.Thumbnail.Compression"); - Exiv2::ExifData::const_iterator pos = exifData.findKey(k1); - if (pos != exifData.end()) { - if (pos->count() == 0) return thumbnail; - long compression = pos->toLong(); - if (compression == 6) { - thumbnail = Thumbnail::AutoPtr(new JpegThumbnail); - } - else { - thumbnail = Thumbnail::AutoPtr(new TiffThumbnail); - } - } - else { - const Exiv2::ExifKey k2("Exif.Thumbnail.JPEGInterchangeFormat"); - pos = exifData.findKey(k2); - if (pos != exifData.end()) { - thumbnail = Thumbnail::AutoPtr(new JpegThumbnail); - } - } - return thumbnail; - } - - const char* TiffThumbnail::mimeType() const - { - return "image/tiff"; - } - - const char* TiffThumbnail::extension() const - { - return ".tif"; - } - -#ifdef EXV_UNICODE_PATH - const wchar_t* TiffThumbnail::wextension() const - { - return EXV_WIDEN(".tif"); - } - -#endif - Exiv2::DataBuf TiffThumbnail::copy(const Exiv2::ExifData& exifData) const - { - Exiv2::ExifData thumb; - // Copy all Thumbnail (IFD1) tags from exifData to Image (IFD0) tags in thumb - for (Exiv2::ExifData::const_iterator i = exifData.begin(); i != exifData.end(); ++i) { - if (i->groupName() == "Thumbnail") { - std::string key = "Exif.Image." + i->tagName(); - thumb.add(Exiv2::ExifKey(key), &i->value()); - } - } - - Exiv2::MemIo io; - Exiv2::IptcData emptyIptc; - Exiv2::XmpData emptyXmp; - Exiv2::TiffParser::encode(io, 0, 0, Exiv2::littleEndian, thumb, emptyIptc, emptyXmp); - return io.read(io.size()); - } - - const char* JpegThumbnail::mimeType() const - { - return "image/jpeg"; - } - - const char* JpegThumbnail::extension() const - { - return ".jpg"; - } - -#ifdef EXV_UNICODE_PATH - const wchar_t* JpegThumbnail::wextension() const - { - return EXV_WIDEN(".jpg"); - } - -#endif - Exiv2::DataBuf JpegThumbnail::copy(const Exiv2::ExifData& exifData) const - { - Exiv2::ExifKey key("Exif.Thumbnail.JPEGInterchangeFormat"); - Exiv2::ExifData::const_iterator format = exifData.findKey(key); - if (format == exifData.end()) return Exiv2::DataBuf(); - return format->dataArea(); - } - - long sumToLong(const Exiv2::Exifdatum& md) - { - long sum = 0; - for (int i = 0; i < md.count(); ++i) { - sum += md.toLong(i); - } - return sum; - } - - void eraseIfd(Exiv2::ExifData& ed, Exiv2::IfdId ifdId) - { - ed.erase(std::remove_if(ed.begin(), - ed.end(), - Exiv2::FindExifdatum(ifdId)), - ed.end()); - } - //! @endcond -} diff --git a/platform/win32/msvc/external/exiv2/src/exif.hpp b/platform/win32/msvc/external/exiv2/src/exif.hpp deleted file mode 100644 index 3174a6b436b..00000000000 --- a/platform/win32/msvc/external/exiv2/src/exif.hpp +++ /dev/null @@ -1,631 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file exif.hpp - @brief Encoding and decoding of Exif data - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 09-Jan-04, ahu: created - */ -#ifndef EXIF_HPP_ -#define EXIF_HPP_ - -// ***************************************************************************** -// included header files -#include "metadatum.hpp" -#include "tags.hpp" -#include "value.hpp" -#include "types.hpp" - -// + standard includes -#include -#include -#include - -// ***************************************************************************** -// namespace extensions -/*! - @brief Provides classes and functions to encode and decode Exif and Iptc data. - The libexiv2 API consists of the objects of this namespace. - */ -namespace Exiv2 { - -// ***************************************************************************** -// class declarations - class ExifData; - -// ***************************************************************************** -// class definitions - - /*! - @brief An Exif metadatum, consisting of an ExifKey and a Value and - methods to manipulate these. - */ - class EXIV2API Exifdatum : public Metadatum { - template friend Exifdatum& setValue(Exifdatum&, const T&); - public: - //! @name Creators - //@{ - /*! - @brief Constructor for new tags created by an application. The - %Exifdatum is created from a \em key / value pair. %Exifdatum copies - (clones) the \em key and value if one is provided. Alternatively, - a program can create an 'empty' %Exifdatum with only a key - and set the value using setValue(). - - @param key %ExifKey. - @param pValue Pointer to an %Exifdatum value. - @throw Error if the key cannot be parsed and converted. - */ - explicit Exifdatum(const ExifKey& key, const Value* pValue =0); - //! Copy constructor - Exifdatum(const Exifdatum& rhs); - //! Destructor - virtual ~Exifdatum(); - //@} - - //! @name Manipulators - //@{ - //! Assignment operator - Exifdatum& operator=(const Exifdatum& rhs); - /*! - @brief Assign \em value to the %Exifdatum. The type of the new Value - is set to UShortValue. - */ - Exifdatum& operator=(const uint16_t& value); - /*! - @brief Assign \em value to the %Exifdatum. The type of the new Value - is set to ULongValue. - */ - Exifdatum& operator=(const uint32_t& value); - /*! - @brief Assign \em value to the %Exifdatum. The type of the new Value - is set to URationalValue. - */ - Exifdatum& operator=(const URational& value); - /*! - @brief Assign \em value to the %Exifdatum. The type of the new Value - is set to ShortValue. - */ - Exifdatum& operator=(const int16_t& value); - /*! - @brief Assign \em value to the %Exifdatum. The type of the new Value - is set to LongValue. - */ - Exifdatum& operator=(const int32_t& value); - /*! - @brief Assign \em value to the %Exifdatum. The type of the new Value - is set to RationalValue. - */ - Exifdatum& operator=(const Rational& value); - /*! - @brief Assign \em value to the %Exifdatum. - Calls setValue(const std::string&). - */ - Exifdatum& operator=(const std::string& value); - /*! - @brief Assign \em value to the %Exifdatum. - Calls setValue(const Value*). - */ - Exifdatum& operator=(const Value& value); - void setValue(const Value* pValue); - /*! - @brief Set the value to the string \em value. Uses Value::read(const - std::string&). If the %Exifdatum does not have a Value yet, - then a %Value of the correct type for this %Exifdatum is - created. An AsciiValue is created for unknown tags. Return - 0 if the value was read successfully. - */ - int setValue(const std::string& value); - /*! - @brief Set the data area by copying (cloning) the buffer pointed to - by \em buf. - - Values may have a data area, which can contain additional - information besides the actual value. This method is used to set such - a data area. - - @param buf Pointer to the source data area - @param len Size of the data area - @return Return -1 if the %Exifdatum does not have a value yet or the - value has no data area, else 0. - */ - int setDataArea(const byte* buf, long len); - //@} - - //! @name Accessors - //@{ - //! Return the key of the %Exifdatum. - std::string key() const; - const char* familyName() const; - std::string groupName() const; - std::string tagName() const; - std::string tagLabel() const; - uint16_t tag() const; - //! Return the IFD id as an integer. (Do not use, this is meant for library internal use.) - int ifdId() const; - //! Return the name of the IFD - const char* ifdName() const; - //! Return the index (unique id of this key within the original IFD) - int idx() const; - /*! - @brief Write value to a data buffer and return the number - of bytes written. - - The user must ensure that the buffer has enough memory. Otherwise - the call results in undefined behaviour. - - @param buf Data buffer to write to. - @param byteOrder Applicable byte order (little or big endian). - @return Number of characters written. - */ - long copy(byte* buf, ByteOrder byteOrder) const; - std::ostream& write(std::ostream& os, const ExifData* pMetadata =0) const; - //! Return the type id of the value - TypeId typeId() const; - //! Return the name of the type - const char* typeName() const; - //! Return the size in bytes of one component of this type - long typeSize() const; - //! Return the number of components in the value - long count() const; - //! Return the size of the value in bytes - long size() const; - //! Return the value as a string. - std::string toString() const; - std::string toString(long n) const; - long toLong(long n =0) const; - float toFloat(long n =0) const; - Rational toRational(long n =0) const; - Value::AutoPtr getValue() const; - const Value& value() const; - //! Return the size of the data area. - long sizeDataArea() const; - /*! - @brief Return a copy of the data area of the value. The caller owns - this copy and %DataBuf ensures that it will be deleted. - - Values may have a data area, which can contain additional - information besides the actual value. This method is used to access - such a data area. - - @return A %DataBuf containing a copy of the data area or an empty - %DataBuf if the value does not have a data area assigned or the - value is not set. - */ - DataBuf dataArea() const; - //@} - - private: - // DATA - ExifKey::AutoPtr key_; //!< Key - Value::AutoPtr value_; //!< Value - - }; // class Exifdatum - - /*! - @brief Access to a Exif %thumbnail image. This class provides higher level - accessors to the thumbnail image that is optionally embedded in IFD1 - of the Exif data. These methods do not write to the Exif metadata. - Manipulators are provided in subclass ExifThumb. - - @note Various other preview and thumbnail images may be contained in an - image, depending on its format and the camera make and model. This - class only provides access to the Exif thumbnail as specified in the - Exif standard. - */ - class EXIV2API ExifThumbC { - public: - //! @name Creators - //@{ - //! Constructor. - ExifThumbC(const ExifData& exifData); - //@} - - //! @name Accessors - //@{ - /*! - @brief Return the thumbnail image in a %DataBuf. The caller owns the - data buffer and %DataBuf ensures that it will be deleted. - */ - DataBuf copy() const; - /*! - @brief Write the thumbnail image to a file. - - A filename extension is appended to \em path according to the image - type of the thumbnail, so \em path should not include an extension. - The function will overwrite an existing file of the same name. - - @param path File name of the thumbnail without extension. - @return The number of bytes written. - */ - long writeFile(const std::string& path) const; -#ifdef EXV_UNICODE_PATH - /*! - @brief Like writeFile() but accepts a unicode path in an std::wstring. - @note This function is only available on Windows. - */ - long writeFile(const std::wstring& wpath) const; -#endif - /*! - @brief Return the MIME type of the thumbnail, either \c "image/tiff" - or \c "image/jpeg". - */ - const char* mimeType() const; - /*! - @brief Return the file extension for the format of the thumbnail - (".tif" or ".jpg"). - */ - const char* extension() const; -#ifdef EXV_UNICODE_PATH - /*! - @brief Like extension() but returns the extension in a wchar_t. - @note This function is only available on Windows. - */ - const wchar_t* wextension() const; -#endif - //@} - - private: - // DATA - const ExifData& exifData_; //!< Const reference to the Exif metadata. - - }; // class ExifThumb - - /*! - @brief Access and modify an Exif %thumbnail image. This class implements - manipulators to set and erase the thumbnail image that is optionally - embedded in IFD1 of the Exif data. Accessors are provided by the - base class, ExifThumbC. - - @note Various other preview and thumbnail images may be contained in an - image, depending on its format and the camera make and model. This - class only provides access to the Exif thumbnail as specified in the - Exif standard. - */ - class EXIV2API ExifThumb : public ExifThumbC { - public: - //! @name Creators - //@{ - //! Constructor. - ExifThumb(ExifData& exifData); - //@} - - //! @name Manipulators - //@{ - /*! - @brief Set the Exif thumbnail to the JPEG image \em path. Set - XResolution, YResolution and ResolutionUnit to \em xres, - \em yres and \em unit, respectively. - - This results in the minimal thumbnail tags being set for a JPEG - thumbnail, as mandated by the Exif standard. - - @throw Error if reading the file fails. - - @note No checks on the file format or size are performed. - @note Additional existing Exif thumbnail tags are not modified. - @note The JPEG image inserted as thumbnail image should not - itself contain Exif data (or other metadata), as existing - applications may have problems with that. (The preview - application that comes with OS X for one.) - David Harvey. - */ - void setJpegThumbnail( - const std::string& path, - URational xres, - URational yres, - uint16_t unit - ); -#ifdef EXV_UNICODE_PATH - /*! - @brief Like setJpegThumbnail() but accepts a unicode path in an - std::wstring. - @note This function is only available on Windows. - */ - void setJpegThumbnail( - const std::wstring& wpath, - URational xres, - URational yres, - uint16_t unit - ); -#endif - /*! - @brief Set the Exif thumbnail to the JPEG image pointed to by \em buf, - and size \em size. Set XResolution, YResolution and - ResolutionUnit to \em xres, \em yres and \em unit, respectively. - - This results in the minimal thumbnail tags being set for a JPEG - thumbnail, as mandated by the Exif standard. - - @throw Error if reading the file fails. - - @note No checks on the image format or size are performed. - @note Additional existing Exif thumbnail tags are not modified. - @note The JPEG image inserted as thumbnail image should not - itself contain Exif data (or other metadata), as existing - applications may have problems with that. (The preview - application that comes with OS X for one.) - David Harvey. - */ - void setJpegThumbnail( - const byte* buf, - long size, - URational xres, - URational yres, - uint16_t unit - ); - /*! - @brief Set the Exif thumbnail to the JPEG image \em path. - - This sets only the Compression, JPEGInterchangeFormat and - JPEGInterchangeFormatLength tags, which is not all the thumbnail - Exif information mandatory according to the Exif standard. (But it's - enough to work with the thumbnail.) - - @throw Error if reading the file fails. - - @note No checks on the file format or size are performed. - @note Additional existing Exif thumbnail tags are not modified. - */ - void setJpegThumbnail(const std::string& path); -#ifdef EXV_UNICODE_PATH - /*! - @brief Like setJpegThumbnail(const std::string& path) but accepts a - unicode path in an std::wstring. - @note This function is only available on Windows. - */ - void setJpegThumbnail(const std::wstring& wpath); -#endif - /*! - @brief Set the Exif thumbnail to the JPEG image pointed to by \em buf, - and size \em size. - - This sets only the Compression, JPEGInterchangeFormat and - JPEGInterchangeFormatLength tags, which is not all the thumbnail - Exif information mandatory according to the Exif standard. (But it's - enough to work with the thumbnail.) - - @note No checks on the image format or size are performed. - @note Additional existing Exif thumbnail tags are not modified. - */ - void setJpegThumbnail(const byte* buf, long size); - /*! - @brief Delete the thumbnail from the Exif data. Removes all - Exif.%Thumbnail.*, i.e., Exif IFD1 tags. - */ - void erase(); - //@} - - private: - // DATA - ExifData& exifData_; //!< Reference to the related Exif metadata. - - }; // class ExifThumb - - //! Container type to hold all metadata - typedef std::list ExifMetadata; - - /*! - @brief A container for Exif data. This is a top-level class of the %Exiv2 - library. The container holds Exifdatum objects. - - Provide high-level access to the Exif data of an image: - - read Exif information from JPEG files - - access metadata through keys and standard C++ iterators - - add, modify and delete metadata - - write Exif data to JPEG files - - extract Exif metadata to files, insert from these files - - extract and delete Exif thumbnail (JPEG and TIFF thumbnails) - */ - class EXIV2API ExifData { - public: - //! ExifMetadata iterator type - typedef ExifMetadata::iterator iterator; - //! ExifMetadata const iterator type - typedef ExifMetadata::const_iterator const_iterator; - - //! @name Manipulators - //@{ - /*! - @brief Returns a reference to the %Exifdatum that is associated with a - particular \em key. If %ExifData does not already contain such - an %Exifdatum, operator[] adds object \em Exifdatum(key). - - @note Since operator[] might insert a new element, it can't be a const - member function. - */ - Exifdatum& operator[](const std::string& key); - /*! - @brief Add an Exifdatum from the supplied key and value pair. This - method copies (clones) key and value. No duplicate checks are - performed, i.e., it is possible to add multiple metadata with - the same key. - */ - void add(const ExifKey& key, const Value* pValue); - /*! - @brief Add a copy of the \em exifdatum to the Exif metadata. No - duplicate checks are performed, i.e., it is possible to add - multiple metadata with the same key. - - @throw Error if the makernote cannot be created - */ - void add(const Exifdatum& exifdatum); - /*! - @brief Delete the Exifdatum at iterator position \em pos, return the - position of the next exifdatum. Note that iterators into - the metadata, including \em pos, are potentially invalidated - by this call. - */ - iterator erase(iterator pos); - /*! - @brief Remove all elements of the range \em beg, \em end, return the - position of the next element. Note that iterators into - the metadata are potentially invalidated by this call. - */ - iterator erase(iterator beg, iterator end); - /*! - @brief Delete all Exifdatum instances resulting in an empty container. - Note that this also removes thumbnails. - */ - void clear(); - //! Sort metadata by key - void sortByKey(); - //! Sort metadata by tag - void sortByTag(); - //! Begin of the metadata - iterator begin() { return exifMetadata_.begin(); } - //! End of the metadata - iterator end() { return exifMetadata_.end(); } - /*! - @brief Find the first Exifdatum with the given \em key, return an - iterator to it. - */ - iterator findKey(const ExifKey& key); - //@} - - //! @name Accessors - //@{ - //! Begin of the metadata - const_iterator begin() const { return exifMetadata_.begin(); } - //! End of the metadata - const_iterator end() const { return exifMetadata_.end(); } - /*! - @brief Find the first Exifdatum with the given \em key, return a const - iterator to it. - */ - const_iterator findKey(const ExifKey& key) const; - //! Return true if there is no Exif metadata - bool empty() const { return count() == 0; } - //! Get the number of metadata entries - long count() const { return static_cast(exifMetadata_.size()); } - //@} - - private: - // DATA - ExifMetadata exifMetadata_; - - }; // class ExifData - - /*! - @brief Stateless parser class for Exif data. Images use this class to - decode and encode binary Exif data. - - @note Encode is lossy and is not the inverse of decode. - */ - class EXIV2API ExifParser { - public: - /*! - @brief Decode metadata from a buffer \em pData of length \em size - with binary Exif data to the provided metadata container. - - The buffer must start with a TIFF header. Return byte order - in which the data is encoded. - - @param exifData Exif metadata container. - @param pData Pointer to the data buffer. Must point to data in - binary Exif format; no checks are performed. - @param size Length of the data buffer - @return Byte order in which the data is encoded. - */ - static ByteOrder decode( - ExifData& exifData, - const byte* pData, - uint32_t size - ); - /*! - @brief Encode Exif metadata from the provided metadata to binary Exif - format. - - The original binary Exif data in the memory block \em pData, \em size - is parsed and updated in-place if possible ("non-intrusive" - writing). If that is not possible (e.g., if new tags were added), the - entire Exif structure is re-written to the \em blob ("intrusive" - writing). The return value indicates which write method was used. If - it is \c wmNonIntrusive, the original memory \em pData, \em size - contains the result and \em blob is empty. If the return value is - \c wmIntrusive, a new Exif structure was created and returned in - \em blob. The memory block \em pData, \em size may be partly updated in - this case and should not be used anymore. - - Encode is a lossy operation. It attempts to fit the Exif data into a - binary block suitable as the payload of a JPEG APP1 Exif segment, - which can be at most 65527 bytes large. Encode omits IFD0 tags that - are "not recorded" in compressed images according to the Exif 2.2 - specification. It also doesn't write tags in groups which do not occur - in JPEG images. If the resulting binary block is larger than allowed, - it further deletes specific large preview tags, unknown tags larger - than 4kB and known tags larger than 40kB. The operation succeeds even - if the end result is still larger than the allowed size. Application - should therefore always check the size of the \em blob. - - @param blob Container for the binary Exif data if "intrusive" - writing is necessary. Empty otherwise. - @param pData Pointer to the binary Exif data buffer. Must - point to data in Exif format; no checks are - performed. Will be modified if "non-intrusive" - writing is possible. - @param size Length of the data buffer. - @param byteOrder Byte order to use. - @param exifData Exif metadata container. - - @return Write method used. - */ - static WriteMethod encode( - Blob& blob, - const byte* pData, - uint32_t size, - ByteOrder byteOrder, - const ExifData& exifData - ); - /*! - @brief Encode metadata from the provided metadata to Exif format. - - Encode Exif metadata from the \em ExifData container to binary Exif - format in the \em blob, encoded in \em byteOrder. - - This simpler encode method uses "intrusive" writing, i.e., it builds - the binary representation of the metadata from scratch. It does not - attempt "non-intrusive", i.e., in-place updating. It's better to use - the other encode() method, if the metadata is already available in - binary format, in order to allow for "non-intrusive" updating of the - existing binary representation. - - This is just an inline wrapper for - ExifParser::encode(blob, 0, 0, byteOrder, exifData). - - @param blob Container for the binary Exif data. - @param byteOrder Byte order to use. - @param exifData Exif metadata container. - */ - static void encode( - Blob& blob, - ByteOrder byteOrder, - const ExifData& exifData - ) - { - encode(blob, 0, 0, byteOrder, exifData); - } - - }; // class ExifParser - -} // namespace Exiv2 - -#endif // #ifndef EXIF_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/exiv2.1 b/platform/win32/msvc/external/exiv2/src/exiv2.1 deleted file mode 100644 index ad76a191d1f..00000000000 --- a/platform/win32/msvc/external/exiv2/src/exiv2.1 +++ /dev/null @@ -1,494 +0,0 @@ -.\" Hey, EMACS: -*- nroff -*- -.\" @(#) $Id: exiv2.1 2687 2012-03-23 10:41:53Z ahuggel $ -.\" First parameter, NAME, should be all caps -.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection -.\" other parameters are allowed: see man(7), man(1) -.TH EXIV2 1 "Mar 23, 2012" -.\" Please adjust this date whenever revising the manpage. -.\" -.\" Some roff macros, for reference: -.\" .nh disable hyphenation -.\" .hy enable hyphenation -.\" .ad l left justify -.\" .ad b justify to both left and right margins -.\" .nf disable filling -.\" .fi enable filling -.\" .br insert line break -.\" .sp insert n+1 empty lines -.\" for manpage-specific macros, see man(7) -.SH NAME -exiv2 \- Image metadata manipulation tool -.SH SYNOPSIS -.B exiv2 -[\fIoptions\fP] [\fIaction\fP] \fIfile\fP ... -.br -.SH DESCRIPTION -.PP -.\" TeX users may be more comfortable with the \fB\fP and -.\" \fI\fP escape sequences to invode bold face and italics, -.\" respectively. -.B exiv2 -is a program to read and write Exif, IPTC and XMP image metadata and -image comments. The following image formats are supported: -.TS -lB lB lB lB lB -_ _ _ _ _ -l l l l l. -Type Exif IPTC XMP Image comments -JPEG Read/Write Read/Write Read/Write Read/Write -EXV Read/Write Read/Write Read/Write Read/Write -CR2 Read/Write Read/Write Read/Write - -CRW Read/Write - - Read/Write -MRW Read Read Read - -TIFF Read/Write Read/Write Read/Write - -DNG Read/Write Read/Write Read/Write - -NEF Read/Write Read/Write Read/Write - -PEF Read/Write Read/Write Read/Write - -ARW Read Read Read - -RW2 Read Read Read - -SR2 Read Read Read - -SRW Read/Write Read/Write Read/Write - -ORF Read/Write Read/Write Read/Write - -PNG Read/Write Read/Write Read/Write Read/Write -PGF Read/Write Read/Write Read/Write Read/Write -RAF Read Read Read - -EPS - - Read/Write - -XMP - - Read/Write - -GIF - - - - -PSD Read/Write Read/Write Read/Write - -TGA - - - - -BMP - - - - -JP2 Read/Write Read/Write Read/Write - -.TE -.IP \(bu 2 -Support for GIF, TGA and BMP images is minimal: the image format is -recognized, a MIME type assigned to it and the height and width of the -image are determined. -.IP \(bu 2 -Reading other TIFF-like RAW image formats, which are not listed in the -table, may also work. -.SH ACTIONS -The \fIaction\fP argument is only required if it is not clear from the -\fIoptions\fP which action is implied. -.TP -.B pr | print -Print image metadata. This is the default action, i.e., the command -\fIexiv2 image.jpg\fP will print a summary of the image Exif metadata. -.TP -.B ex | extract -Extract metadata to *.exv, XMP sidecar (*.xmp) and thumbnail image files. -Modification commands can be applied on-the-fly. -.TP -.B in | insert -Insert metadata from corresponding *.exv, XMP sidecar (*.xmp) and -thumbnail files. Use option \fB\-S\fP \fI.suf\fP to change the suffix -of the input files. Since files of any supported format can be used as -input files, this command can be used to copy the metadata between -files of different formats. Modification commands can be applied -on-the-fly. -.TP -.B rm | delete -Delete image metadata from the files. -.TP -.B ad | adjust -Adjust Exif timestamps by the given time. Requires at least one of the -options \fB\-a\fP \fItime\fP, \fB\-Y\fP \fIyrs\fP, \fB\-O\fP -\fImon\fP or \fB\-D\fP \fIday\fP. -.TP -.B mo | modify -Apply commands to modify (add, set, delete) the Exif, IPTC and XMP -metadata of image files. Requires option \fB\-c\fP, \fB\-m\fP or -\fB\-M\fP. -.TP -.B mv | rename -Rename files and/or set file timestamps according to the Exif create -timestamp. Uses the value of tag Exif.Photo.DateTimeOriginal or, if -not present, Exif.Image.DateTime to determine the timestamp. The -filename format can be set with \fB\-r\fP \fIfmt\fP, timestamp options -are \fB\-t\fP and \fB\-T\fP. -.TP -.B fi | fixiso -Copy the ISO setting from one of the proprietary Nikon or Canon -makernote ISO tags to the regular Exif ISO tag, -Exif.Photo.ISOSpeedRatings. Does not overwrite an existing standard -Exif ISO tag. -.TP -.B fc | fixcom -Fix the character encoding of Exif Unicode user comments. Decodes the -comment using the auto-detected or specified character encoding and -writes it back in UCS-2. Use option \fB\-n\fP to specify the current -encoding of the comment if necessary. -.SH OPTIONS -.TP -.B \-h -Display help and exit. -.TP -.B \-V -Show the program version and exit. -.TP -.B \-v -Be verbose during the program run. -.TP -.B \-q -Silence warnings and error messages from the Exiv2 library during the -program run (quiet). Note that options \fB\-v\fP and \fB\-q\fP can be -used at the same time. -.TP -.B \-Q \fIlvl\fP -Set the log-level to 'd'(ebug), 'i'(nfo), 'w'(arning), 'e'(rror) -or 'm'(ute). The default log-level is 'w'. \fB\-Qm\fP is equivalent -to \fB\-q\fP. All log messages are written to standard error. -.TP -.B \-b -Show large binary values (default is to suppress them). -.TP -.B \-u -Show unknown tags (default is to suppress tags which don't have a name). -.TP -.B \-g \fIkey\fP -Only output info for this Exiv2 key (grep). Multiple \fB\-g\fP options -can be used to grep info for several keys. -.TP -.B \-n \fIenc\fP -Charset to use to decode Exif Unicode user comments. \fIenc\fP is -a name understood by \fBiconv_open\fP(3), e.g., 'UTF-8'. -.TP -.B \-k -Preserve file timestamps when updating files (keep). Can be used with -all options which update files. The flag is ignored by read-only -options. -.TP -.B \-t -Set the file timestamp according to the Exif create timestamp in -addition to renaming the file (overrides \fB\-k\fP). This option is -only used with the 'rename' action. -.TP -.B \-T -Only set the file timestamp according to the Exif create timestamp, do -not rename the file (overrides \fB\-k\fP). This option is only used -with the 'rename' action. Note: On Windows you may have to set the TZ -environment variable for this option to work correctly. -.TP -.B \-f -Do not prompt before overwriting existing files (force overwrite). -.TP -.B \-F -Do not prompt before renaming files (Force rename). Appends '_1' -('_2', ...) to the name of the new file. -.TP -.B \-a \fItime\fP -Time adjustment in the format [\-]HH[:MM[:SS]]. This option is only -used with the 'adjust' action. Examples: 1 adds one hour, 1:01 -adds one hour and one minute, \-0:00:30 subtracts 30 seconds. -.TP -.B \-Y \fIyrs\fP -Time adjustment by a positive or negative number of years, for -the 'adjust' action. -.TP -.B \-O \fImon\fP -Time adjustment by a positive or negative number of months, for -the 'adjust' action. -.TP -.B \-D \fIday\fP -Time adjustment by a positive or negative number of days, for -the 'adjust' action. -.TP -.B \-p \fImode\fP -Print mode for the 'print' action. Possible modes are: -.br -s : print a summary of the Exif metadata (the default) -.br -a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct) -.br -t : interpreted (translated) Exif tags (-PEkyct) -.br -v : plain Exif tag values (-PExgnycv) -.br -h : hexdump of the Exif data (-PExgnycsh) -.br -i : IPTC datasets (-PIkyct) -.br -x : XMP properties (-PXkyct) -.br -c : JPEG comment -.br -p : list available image previews, sorted by preview image size in pixels -.TP -.B \-P \fIflgs\fP -Print flags for fine control of the tag list ('print' action). Allows -control of the type of metadata as well as data columns included in -the print output. Valid flags are: -.br -E : include Exif tags in the list -.br -I : IPTC datasets -.br -X : XMP properties -.br -x : print a column with the tag number -.br -g : group name -.br -k : key -.br -l : tag label -.br -n : tag name -.br -y : type -.br -c : number of components (count) -.br -s : size in bytes -.br -v : plain data value -.br -t : interpreted (translated) data -.br -h : hexdump of the data -.TP -.B \-d \fItgt\fP -Delete target(s) for the 'delete' action. Possible targets are: -.br -a : all supported metadata (the default) -.br -e : Exif section -.br -t : Exif thumbnail only -.br -i : IPTC data -.br -x : XMP packet -.br -c : JPEG comment -.TP -.B \-i \fItgt\fP -Insert target(s) for the 'insert' action. Possible targets are the -same as those for the \fB\-d\fP option, plus a modifier: -.br -X : Insert metadata from an XMP sidecar file .xmp. The remaining -insert targets determine what metadata to insert from the sidecar -file. Possible are Exif, IPTC and XMP and the default is all of -these. Note that the inserted XMP properties include those converted -to Exif and IPTC. -.br -Only JPEG thumbnails can be inserted (not TIFF thumbnails), they need to -be named \fIfile\fP\-thumb.jpg. -.TP -.B \-e \fItgt\fP -Extract target(s) for the 'extract' action. Possible targets are the same -as those for the \fB\-d\fP option, plus a target to extract preview -images and a modifier to generate an XMP sidecar file: -.br -p[[, ...]] : Extract preview images. The optional comma separated -list of preview image numbers is used to determine which preview images -to extract. The available preview images and their numbers are displayed -with the 'print' option -pp. -.br -X : Extract metadata to an XMP sidecar file .xmp. The remaining -extract targets determine what metadata to extract to the sidecar -file. Possible are Exif, IPTC and XMP and the default is all of these. -.TP -.B \-r \fIfmt\fP -Filename format for the 'rename' action. The format string follows -\fBstrftime\fP(3) and supports the following keywords: -.br -:basename: - original filename without extension -.br -:dirname: - name of the directory holding the original file -.br -:parentname: - name of parent directory -.br -Default filename format is %Y%m%d_%H%M%S. -.TP -.B \-c \fItxt\fP -JPEG comment string to set in the image ('modify' action). This option -can also be used with the 'extract' and 'insert' actions to modify -metadata on-the-fly. -.TP -.B \-m \fIfile\fP -Command file for the 'modify' action. This option can also be used -with the 'extract' and 'insert' actions to modify metadata on-the-fly. -.TP -.B \-M \fIcmd\fP -Command line for the 'modify' action. This option can also be used -with the 'extract' and 'insert' actions to modify metadata on-the-fly. -The format for the commands is the same as that of the lines of a -command file. -.TP -.B \-l \fIdir\fP -Location (directory) for files to be inserted or extracted. -.TP -.B \-S \fI.suf\fP -Use suffix \fI.suf\fP for source files in 'insert' action. -.SH COMMANDS -Commands for the 'modify' action can be read from a command file, e.g., -.sp 1 -.nf - exiv2 \-m cmd.txt image.jpg -.fi -.sp 1 -or given on the command line, as in -.sp 1 -.nf - exiv2 \-M"add Iptc.Application2.Credit String Mr. Smith" image.jpg -.fi -.sp 1 -Note the quotes. Multiple \fB\-m\fP and \fB\-M\fP options can be combined. -.sp 1 -When writing Exif, IPTC and XMP metadata, -.B exiv2 -enforces only a correct -metadata structure. It is possible to write tags with types and values -different from those specified in the standards, duplicate Exif tags, -undefined tags, or incomplete metadata. While -.B exiv2 -is able to read -all metadata that it can write, other programs may have difficulties -with images that contain non standard\-conforming metadata. -.SS Command format -The format of a command is -.sp 1 -.nf -\fBset | add | del\fP \fIkey\fP [[\fItype\fP] \fIvalue\fP] -.fi -.TP -.B set -Set the \fIvalue\fP of an existing tag with a matching \fIkey\fP or -add the tag. -.TP -.B add -Add a tag (unless \fIkey\fP is a non\-repeatable IPTC key; nothing -prevents you from adding duplicate Exif tags). -.TP -.B del -Delete all occurrences of a tag (requires only a \fIkey\fP). -.TP -.I key -Exiv2 Exif, IPTC or XMP key. -.TP -.I type -.B Byte | Ascii | Short | Long | Rational | Undefined | SShort | SLong | SRational | Comment -for Exif keys, -.br -.B String | Date | Time | Short | Undefined -for IPTC keys, and -.br -.B XmpText | XmpAlt | XmpBag | XmpSeq | LangAlt -for XMP keys. -.sp 1 -A default \fItype\fP is used if none is explicitly given. The default -is determined based on \fIkey\fP. -.TP -.I value -The remaining text on the line is the value. It can optionally be -enclosed in single quotes ('\fIvalue\fP') or double quotes ("\fIvalue\fP"). -.sp 1 -The value is optional. Not providing any value is equivalent to an -empty value ("") and is mainly useful to create an XMP array property, -e.g., a bag. -.sp 1 -The format of Exif \fBComment\fP values includes an optional charset -specification at the beginning: -.sp 1 -.B [charset=Ascii|Jis|Unicode|Undefined ]\fIcomment\fP -.sp 1 -.B Undefined -is used by default if the value doesn't start with a charset -definition. -.sp 1 -The format for IPTC \fBDate\fP values is YYYY\-MM\-DD (year, month, day), -that for IPTC \fBTime\fP values is HH:MM:SS+|\-HH:MM, where HH:MM:SS -refers to local hour, minute and seconds and +|\-HH:MM refers to hours -and minutes ahead or behind Universal Coordinated Time (+|\- means -either a + or a \- sign is required). -.sp 1 -The format of XMP \fBLangAlt\fP values includes an optional language -qualifier: -.sp 1 -.B [lang=\fIlanguage-code\fP ]\fItext\fP -.sp 1 -.B x-default -is used by default if the value doesn't start with a language qualifier. -.TP -An additional command is available to register XMP namespaces: -.TP -.nf -\fBreg\fP \fIprefix\fP \fInamespace\fP -.fi -.SS Command file format -Empty lines and lines starting with \fB#\fP in a command file are -ignored (comments). Remaining lines are commands as described above. -.SH EXAMPLES -.TP -exiv2 *.jpg -Prints a summary of the Exif information for all JPEG files in the directory. -.TP -exiv2 -pi image.jpg -Prints the IPTC metadata of the image. -.TP -exiv2 rename img_1234.jpg -Renames img_1234.jpg (taken on 13\-Nov\-05 at 22:58:31) to 20051113_225831.jpg -.TP -exiv2 -r':basename:_%Y%m' rename img_1234.jpg -Renames img_1234.jpg to img_1234_200511.jpg -.TP -exiv2 \-et img1.jpg img2.jpg -Extracts the Exif thumbnails from the two files into img1\-thumb.jpg -and img2\-thumb.jpg. -.TP -exiv2 \-it img1.jpg img2.jpg -Inserts (copies) metadata from img1.exv to img1.jpg and from img2.exv -to img2.jpg. -.TP -exiv2 \-ep1,2 image.jpg -Extracts previews 1 and 2 from the image to the files image\-preview1.jpg -and image\-preview2.jpg. -.TP -exiv2 \-eiX image.jpg -Extracts IPTC datasets into an XMP sidecar file image.xmp and in the -process converts them to "IPTC Core" XMP schema. -.TP -exiv2 \-iixX image.jpg -Inserts IPTC and XMP metadata from an XMP sidecar file image.xmp into -image.jpg. The resulting IPTC datasets are converted from the "IPTC -Core" XMP schema properties in the sidecar file to the older IPTC IIM4 -format. The inserted XMP properties include those in the "IPTC Core" -XMP schema. -.TP -.nf -exiv2 \-M"set Exif.Photo.UserComment charset=Ascii New Exif comment" image.jpg -.fi -Sets the Exif comment to an ASCII string. -.TP -.nf -exiv2 \-M"set Exif.GPSInfo.GPSLatitude 4/1 15/1 33/1" \\ -\-M"set Exif.GPSInfo.GPSLatitudeRef N" image.jpg -.fi -Sets the latitude to 4 degrees, 15 minutes and 33 seconds north. The -Exif standard stipulates that the GPSLatitude tag consists of three -Rational numbers for the degrees, minutes and seconds of the latitude -and GPSLatitudeRef contains either 'N' or 'S' for north or south -latitude respectively. -.TP -.nf -exiv2 insert -l/tmp -S.CRW /data/*.JPG -.fi -Copy all metadata from CRW files in the /tmp directory to JPG files -with corresponding basenames in the /data directory. Note that this -copies metadata as is, without any modifications to adapt it to the -requirements of the target format. Some tags copied like this may not -make sense in the target image. -.SH SEE ALSO -.TP -.I http://www.exiv2.org/sample.html#modify -Sample command files. -.TP -.I http://www.exiv2.org/metadata.html -Taglists with \fIkey\fP and default \fItype\fP values. -.SH AUTHORS -.B exiv2 -was written by Andreas Huggel . -.PP -This manual page was originally written by KELEMEN Peter , -for the Debian project. diff --git a/platform/win32/msvc/external/exiv2/src/exiv2.cpp b/platform/win32/msvc/external/exiv2/src/exiv2.cpp deleted file mode 100644 index 2dae4c76389..00000000000 --- a/platform/win32/msvc/external/exiv2/src/exiv2.cpp +++ /dev/null @@ -1,1243 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - Abstract: Command line program to display and manipulate image metadata. - - File: exiv2.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - History: 10-Dec-03, ahu: created - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: exiv2.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#include "exiv2app.hpp" -#include "actions.hpp" -#include "utils.hpp" -#include "convert.hpp" -#include "i18n.h" // NLS support. -#include "xmp.hpp" - -#include -#include -#include -#include -#include -#include -#include - -// ***************************************************************************** -// local declarations -namespace { - - //! List of all command identifiers and corresponding strings - static const CmdIdAndString cmdIdAndString[] = { - { add, "add" }, - { set, "set" }, - { del, "del" }, - { reg, "reg" }, - { invalidCmdId, "invalidCmd" } // End of list marker - }; - - // Return a command Id for a command string - CmdId commandId(const std::string& cmdString); - - // Evaluate [-]HH[:MM[:SS]], returns true and sets time to the value - // in seconds if successful, else returns false. - bool parseTime(const std::string& ts, long& time); - - /*! - @brief Parse the oparg string into a bitmap of common targets. - @param optarg Option arguments - @param action Action being processed - @return A bitmap of common targets or -1 in case of a parse error - */ - int parseCommonTargets(const std::string& optarg, - const std::string& action); - - /*! - @brief Parse numbers separated by commas into container - @param previewNumbers Container for the numbers - @param optarg Option arguments - @param j Starting index into optarg - @return Number of characters processed - */ - int parsePreviewNumbers(Params::PreviewNumbers& previewNumbers, - const std::string& optarg, - int j); - - /*! - @brief Parse metadata modification commands from multiple files - @param modifyCmds Reference to a structure to store the parsed commands - @param cmdFiles Container with the file names - */ - bool parseCmdFiles(ModifyCmds& modifyCmds, - const Params::CmdFiles& cmdFiles); - - /*! - @brief Parse metadata modification commands from a container of commands - @param modifyCmds Reference to a structure to store the parsed commands - @param cmdLines Container with the commands - */ - bool parseCmdLines(ModifyCmds& modifyCmds, - const Params::CmdLines& cmdLines); - - /*! - @brief Parse one line of the command file - @param modifyCmd Reference to a command structure to store the parsed - command - @param line Input line - @param num Line number (used for error output) - */ - bool parseLine(ModifyCmd& modifyCmd, - const std::string& line, int num); - - /*! - @brief Parses a string containing backslash-escapes - @param input Input string, assumed to be UTF-8 - */ - std::string parseEscapes(const std::string& input); -} - -// ***************************************************************************** -// Main -int main(int argc, char* const argv[]) -{ -#ifdef EXV_ENABLE_NLS - setlocale(LC_ALL, ""); - bindtextdomain(EXV_PACKAGE, EXV_LOCALEDIR); - textdomain(EXV_PACKAGE); -#endif - - // Handle command line arguments - Params& params = Params::instance(); - if (params.getopt(argc, argv)) { - params.usage(); - return 1; - } - if (params.help_) { - params.help(); - return 0; - } - if (params.version_) { - params.version(); - return 0; - } - - // Create the required action class - Action::TaskFactory& taskFactory = Action::TaskFactory::instance(); - Action::Task::AutoPtr task - = taskFactory.create(Action::TaskType(params.action_)); - assert(task.get()); - - // Process all files - int rc = 0; - int n = 1; - int s = static_cast(params.files_.size()); - int w = s > 9 ? s > 99 ? 3 : 2 : 1; - for (Params::Files::const_iterator i = params.files_.begin(); - i != params.files_.end(); ++i) { - if (params.verbose_) { - std::cout << _("File") << " " << std::setw(w) << std::right << n++ << "/" << s << ": " - << *i << std::endl; - } - int ret = task->run(*i); - if (rc == 0) rc = ret; - } - - taskFactory.cleanup(); - params.cleanup(); - Exiv2::XmpParser::terminate(); - - // Return a positive one byte code for better consistency across platforms - return static_cast(rc) % 256; -} // main - -// ***************************************************************************** -// class Params -Params* Params::instance_ = 0; - -const Params::YodAdjust Params::emptyYodAdjust_[] = { - { false, "-Y", 0 }, - { false, "-O", 0 }, - { false, "-D", 0 }, -}; - -Params& Params::instance() -{ - if (0 == instance_) { - instance_ = new Params; - } - return *instance_; -} - -void Params::cleanup() -{ - delete instance_; - instance_ = 0; -} - -void Params::version(std::ostream& os) const -{ - bool b64 = sizeof(void*)==8; - const char* sBuild = b64 ? "(64 bit build)" : "(32 bit build)" ; - os << EXV_PACKAGE_STRING << " " << Exiv2::versionNumberHexString() << " " << sBuild << "\n" - << _("Copyright (C) 2004-2012 Andreas Huggel.\n") - << "\n" - << _("This program is free software; you can redistribute it and/or\n" - "modify it under the terms of the GNU General Public License\n" - "as published by the Free Software Foundation; either version 2\n" - "of the License, or (at your option) any later version.\n") - << "\n" - << _("This program is distributed in the hope that it will be useful,\n" - "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" - "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" - "GNU General Public License for more details.\n") - << "\n" - << _("You should have received a copy of the GNU General Public\n" - "License along with this program; if not, write to the Free\n" - "Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" - "Boston, MA 02110-1301 USA\n"); -} - -void Params::usage(std::ostream& os) const -{ - os << _("Usage:") << " " << progname() - << " " << _("[ options ] [ action ] file ...\n\n") - << _("Manipulate the Exif metadata of images.\n"); -} - -void Params::help(std::ostream& os) const -{ - usage(os); - os << _("\nActions:\n") - << _(" ad | adjust Adjust Exif timestamps by the given time. This action\n" - " requires at least one of the -a, -Y, -O or -D options.\n") - << _(" pr | print Print image metadata.\n") - << _(" rm | delete Delete image metadata from the files.\n") - << _(" in | insert Insert metadata from corresponding *.exv files.\n" - " Use option -S to change the suffix of the input files.\n") - << _(" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n") - << _(" mv | rename Rename files and/or set file timestamps according to the\n" - " Exif create timestamp. The filename format can be set with\n" - " -r format, timestamp options are controlled with -t and -T.\n") - << _(" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" - " IPTC metadata of image files or set the JPEG comment.\n" - " Requires option -c, -m or -M.\n") - << _(" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" - " Exif tag.\n") - << _(" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" - " character encoding can be specified with the -n option.\n") - << _("\nOptions:\n") - << _(" -h Display this help and exit.\n") - << _(" -V Show the program version and exit.\n") - << _(" -v Be verbose during the program run.\n") - << _(" -q Silence warnings and error messages during the program run (quiet).\n") - << _(" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n") - << _(" -b Show large binary values.\n") - << _(" -u Show unknown tags.\n") - << _(" -g key Only output info for this key (grep).\n") - << _(" -n enc Charset to use to decode UNICODE Exif user comments.\n") - << _(" -k Preserve file timestamps (keep).\n") - << _(" -t Also set the file timestamp in 'rename' action (overrides -k).\n") - << _(" -T Only set the file timestamp in 'rename' action, do not rename\n" - " the file (overrides -k).\n") - << _(" -f Do not prompt before overwriting existing files (force).\n") - << _(" -F Do not prompt before renaming files (Force).\n") - << _(" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" - " is only used with the 'adjust' action.\n") - << _(" -Y yrs Year adjustment with the 'adjust' action.\n") - << _(" -O mon Month adjustment with the 'adjust' action.\n") - << _(" -D day Day adjustment with the 'adjust' action.\n") - << _(" -p mode Print mode for the 'print' action. Possible modes are:\n") - << _(" s : print a summary of the Exif metadata (the default)\n") - << _(" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n") - << _(" t : interpreted (translated) Exif data (-PEkyct)\n") - << _(" v : plain Exif data values (-PExgnycv)\n") - << _(" h : hexdump of the Exif data (-PExgnycsh)\n") - << _(" i : IPTC data values (-PIkyct)\n") - << _(" x : XMP properties (-PXkyct)\n") - << _(" c : JPEG comment\n") - << _(" p : list available previews\n") - << _(" -P flgs Print flags for fine control of tag lists ('print' action):\n") - << _(" E : include Exif tags in the list\n") - << _(" I : IPTC datasets\n") - << _(" X : XMP properties\n") - << _(" x : print a column with the tag number\n") - << _(" g : group name\n") - << _(" k : key\n") - << _(" l : tag label\n") - << _(" n : tag name\n") - << _(" y : type\n") - << _(" c : number of components (count)\n") - << _(" s : size in bytes\n") - << _(" v : plain data value\n") - << _(" t : interpreted (translated) data\n") - << _(" h : hexdump of the data\n") - << _(" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n") - << _(" a : all supported metadata (the default)\n") - << _(" e : Exif section\n") - << _(" t : Exif thumbnail only\n") - << _(" i : IPTC data\n") - << _(" x : XMP packet\n") - << _(" c : JPEG comment\n") - << _(" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" - " the same as those for the -d option, plus a modifier:\n" - " X : Insert metadata from an XMP sidecar file .xmp\n" - " Only JPEG thumbnails can be inserted, they need to be named\n" - " -thumb.jpg\n") - << _(" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" - " are the same as those for the -d option, plus a target to extract\n" - " preview images and a modifier to generate an XMP sidecar file:\n" - " p[[, ...]] : Extract preview images.\n" - " X : Extract metadata to an XMP sidecar file .xmp\n") - << _(" -r fmt Filename format for the 'rename' action. The format string\n" - " follows strftime(3). The following keywords are supported:\n") - << _(" :basename: - original filename without extension\n") - << _(" :dirname: - name of the directory holding the original file\n") - << _(" :parentname: - name of parent directory\n") - << _(" Default filename format is ") - << format_ << ".\n" - << _(" -c txt JPEG comment string to set in the image.\n") - << _(" -m file Command file for the modify action. The format for commands is\n" - " set|add|del [[] ].\n") - << _(" -M cmd Command line for the modify action. The format for the\n" - " commands is the same as that of the lines of a command file.\n") - << _(" -l dir Location (directory) for files to be inserted from or extracted to.\n") - << _(" -S .suf Use suffix .suf for source files for insert command.\n\n"); -} // Params::help - -int Params::option(int opt, const std::string& optarg, int optopt) -{ - int rc = 0; - switch (opt) { - case 'h': help_ = true; break; - case 'V': version_ = true; break; - case 'v': verbose_ = true; break; - case 'q': Exiv2::LogMsg::setLevel(Exiv2::LogMsg::mute); break; - case 'Q': rc = setLogLevel(optarg); break; - case 'k': preserve_ = true; break; - case 'b': binary_ = false; break; - case 'u': unknown_ = false; break; - case 'f': force_ = true; fileExistsPolicy_ = overwritePolicy; break; - case 'F': force_ = true; fileExistsPolicy_ = renamePolicy; break; - case 'g': keys_.push_back(optarg); printMode_ = pmList; break; - case 'n': charset_ = optarg; break; - case 'r': rc = evalRename(opt, optarg); break; - case 't': rc = evalRename(opt, optarg); break; - case 'T': rc = evalRename(opt, optarg); break; - case 'a': rc = evalAdjust(optarg); break; - case 'Y': rc = evalYodAdjust(yodYear, optarg); break; - case 'O': rc = evalYodAdjust(yodMonth, optarg); break; - case 'D': rc = evalYodAdjust(yodDay, optarg); break; - case 'p': rc = evalPrint(optarg); break; - case 'P': rc = evalPrintFlags(optarg); break; - case 'd': rc = evalDelete(optarg); break; - case 'e': rc = evalExtract(optarg); break; - case 'i': rc = evalInsert(optarg); break; - case 'c': rc = evalModify(opt, optarg); break; - case 'm': rc = evalModify(opt, optarg); break; - case 'M': rc = evalModify(opt, optarg); break; - case 'l': directory_ = optarg; break; - case 'S': suffix_ = optarg; break; - case ':': - std::cerr << progname() << ": " << _("Option") << " -" << static_cast(optopt) - << " " << _("requires an argument\n"); - rc = 1; - break; - case '?': - std::cerr << progname() << ": " << _("Unrecognized option") << " -" - << static_cast(optopt) << "\n"; - rc = 1; - break; - default: - std::cerr << progname() - << ": " << _("getopt returned unexpected character code") << " " - << std::hex << opt << "\n"; - rc = 1; - break; - } - return rc; -} // Params::option - -int Params::setLogLevel(const std::string& optarg) -{ - int rc = 0; - const char logLevel = tolower(optarg[0]); - switch (logLevel) { - case 'd': Exiv2::LogMsg::setLevel(Exiv2::LogMsg::debug); break; - case 'i': Exiv2::LogMsg::setLevel(Exiv2::LogMsg::info); break; - case 'w': Exiv2::LogMsg::setLevel(Exiv2::LogMsg::warn); break; - case 'e': Exiv2::LogMsg::setLevel(Exiv2::LogMsg::error); break; - case 'm': Exiv2::LogMsg::setLevel(Exiv2::LogMsg::mute); break; - default: - std::cerr << progname() << ": " << _("Option") << " -Q: " - << _("Invalid argument") << " \"" << optarg << "\"\n"; - rc = 1; - break; - } - return rc; -} // Params::setLogLevel - -int Params::evalRename(int opt, const std::string& optarg) -{ - int rc = 0; - switch (action_) { - case Action::none: - action_ = Action::rename; - switch (opt) { - case 'r': - format_ = optarg; - formatSet_ = true; - break; - case 't': timestamp_ = true; break; - case 'T': timestampOnly_ = true; break; - } - break; - case Action::rename: - if (opt == 'r' && (formatSet_ || timestampOnly_)) { - std::cerr << progname() - << ": " << _("Ignoring surplus option") << " -r \"" << optarg << "\"\n"; - } - else { - format_ = optarg; - formatSet_ = true; - } - break; - default: - std::cerr << progname() - << ": " << _("Option") << " -" << (char)opt - << " " << _("is not compatible with a previous option\n"); - rc = 1; - break; - } - return rc; -} // Params::evalRename - -int Params::evalAdjust(const std::string& optarg) -{ - int rc = 0; - switch (action_) { - case Action::none: - case Action::adjust: - if (adjust_) { - std::cerr << progname() - << ": " << _("Ignoring surplus option -a") << " " << optarg << "\n"; - break; - } - action_ = Action::adjust; - adjust_ = parseTime(optarg, adjustment_); - if (!adjust_) { - std::cerr << progname() << ": " << _("Error parsing -a option argument") << " `" - << optarg << "'\n"; - rc = 1; - } - break; - default: - std::cerr << progname() - << ": " << _("Option -a is not compatible with a previous option\n"); - rc = 1; - break; - } - return rc; -} // Params::evalAdjust - -int Params::evalYodAdjust(const Yod& yod, const std::string& optarg) -{ - int rc = 0; - switch (action_) { - case Action::none: // fall-through - case Action::adjust: - if (yodAdjust_[yod].flag_) { - std::cerr << progname() - << ": " << _("Ignoring surplus option") << " " - << yodAdjust_[yod].option_ << " " << optarg << "\n"; - break; - } - action_ = Action::adjust; - yodAdjust_[yod].flag_ = true; - if (!Util::strtol(optarg.c_str(), yodAdjust_[yod].adjustment_)) { - std::cerr << progname() << ": " << _("Error parsing") << " " - << yodAdjust_[yod].option_ << " " - << _("option argument") << " `" << optarg << "'\n"; - rc = 1; - } - break; - default: - std::cerr << progname() - << ": " << _("Option") << " " - << yodAdjust_[yod].option_ << " " - << _("is not compatible with a previous option\n"); - rc = 1; - break; - } - return rc; -} // Params::evalYodAdjust - -int Params::evalPrint(const std::string& optarg) -{ - int rc = 0; - switch (action_) { - case Action::none: - switch (optarg[0]) { - case 's': action_ = Action::print; printMode_ = pmSummary; break; - case 'a': rc = evalPrintFlags("kyct"); break; - case 't': rc = evalPrintFlags("Ekyct"); break; - case 'v': rc = evalPrintFlags("Exgnycv"); break; - case 'h': rc = evalPrintFlags("Exgnycsh"); break; - case 'i': rc = evalPrintFlags("Ikyct"); break; - case 'x': rc = evalPrintFlags("Xkyct"); break; - case 'c': action_ = Action::print; printMode_ = pmComment; break; - case 'p': action_ = Action::print; printMode_ = pmPreview; break; - default: - std::cerr << progname() << ": " << _("Unrecognized print mode") << " `" - << optarg << "'\n"; - rc = 1; - break; - } - break; - case Action::print: - std::cerr << progname() << ": " - << _("Ignoring surplus option -p") << optarg << "\n"; - break; - default: - std::cerr << progname() << ": " - << _("Option -p is not compatible with a previous option\n"); - rc = 1; - break; - } - return rc; -} // Params::evalPrint - -int Params::evalPrintFlags(const std::string& optarg) -{ - int rc = 0; - switch (action_) { - case Action::none: - action_ = Action::print; - printMode_ = pmList; - for (std::size_t i = 0; i < optarg.length(); ++i) { - switch (optarg[i]) { - case 'E': printTags_ |= Exiv2::mdExif; break; - case 'I': printTags_ |= Exiv2::mdIptc; break; - case 'X': printTags_ |= Exiv2::mdXmp; break; - case 'x': printItems_ |= prTag; break; - case 'g': printItems_ |= prGroup; break; - case 'k': printItems_ |= prKey; break; - case 'l': printItems_ |= prLabel; break; - case 'n': printItems_ |= prName; break; - case 'y': printItems_ |= prType; break; - case 'c': printItems_ |= prCount; break; - case 's': printItems_ |= prSize; break; - case 'v': printItems_ |= prValue; break; - case 't': printItems_ |= prTrans; break; - case 'h': printItems_ |= prHex; break; - default: - std::cerr << progname() << ": " << _("Unrecognized print item") << " `" - << optarg[i] << "'\n"; - rc = 1; - break; - } - } - break; - case Action::print: - std::cerr << progname() << ": " - << _("Ignoring surplus option -P") << optarg << "\n"; - break; - default: - std::cerr << progname() << ": " - << _("Option -P is not compatible with a previous option\n"); - rc = 1; - break; - } - return rc; -} // Params::evalPrintFlags - -int Params::evalDelete(const std::string& optarg) -{ - int rc = 0; - switch (action_) { - case Action::none: - action_ = Action::erase; - target_ = 0; - // fallthrough - case Action::erase: - rc = parseCommonTargets(optarg, "erase"); - if (rc > 0) { - target_ |= rc; - rc = 0; - } - else { - rc = 1; - } - break; - default: - std::cerr << progname() << ": " - << _("Option -d is not compatible with a previous option\n"); - rc = 1; - break; - } - return rc; -} // Params::evalDelete - -int Params::evalExtract(const std::string& optarg) -{ - int rc = 0; - switch (action_) { - case Action::none: - case Action::modify: - action_ = Action::extract; - target_ = 0; - // fallthrough - case Action::extract: - rc = parseCommonTargets(optarg, "extract"); - if (rc > 0) { - target_ |= rc; - rc = 0; - } - else { - rc = 1; - } - break; - default: - std::cerr << progname() << ": " - << _("Option -e is not compatible with a previous option\n"); - rc = 1; - break; - } - return rc; -} // Params::evalExtract - -int Params::evalInsert(const std::string& optarg) -{ - int rc = 0; - switch (action_) { - case Action::none: - case Action::modify: - action_ = Action::insert; - target_ = 0; - // fallthrough - case Action::insert: - rc = parseCommonTargets(optarg, "insert"); - if (rc > 0) { - target_ |= rc; - rc = 0; - } - else { - rc = 1; - } - break; - default: - std::cerr << progname() << ": " - << _("Option -i is not compatible with a previous option\n"); - rc = 1; - break; - } - return rc; -} // Params::evalInsert - -int Params::evalModify(int opt, const std::string& optarg) -{ - int rc = 0; - switch (action_) { - case Action::none: - action_ = Action::modify; - // fallthrough - case Action::modify: - case Action::extract: - case Action::insert: - if (opt == 'c') jpegComment_ = parseEscapes(optarg); - if (opt == 'm') cmdFiles_.push_back(optarg); // parse the files later - if (opt == 'M') cmdLines_.push_back(optarg); // parse the commands later - break; - default: - std::cerr << progname() << ": " - << _("Option") << " -" << (char)opt << " " - << _("is not compatible with a previous option\n"); - rc = 1; - break; - } - return rc; -} // Params::evalModify - -int Params::nonoption(const std::string& argv) -{ - int rc = 0; - bool action = false; - if (first_) { - // The first non-option argument must be the action - first_ = false; - if (argv == "ad" || argv == "adjust") { - if (action_ != Action::none && action_ != Action::adjust) { - std::cerr << progname() << ": " - << _("Action adjust is not compatible with the given options\n"); - rc = 1; - } - action = true; - action_ = Action::adjust; - } - if (argv == "pr" || argv == "print") { - if (action_ != Action::none && action_ != Action::print) { - std::cerr << progname() << ": " - << _("Action print is not compatible with the given options\n"); - rc = 1; - } - action = true; - action_ = Action::print; - } - if (argv == "rm" || argv == "delete") { - if (action_ != Action::none && action_ != Action::erase) { - std::cerr << progname() << ": " - << _("Action delete is not compatible with the given options\n"); - rc = 1; - } - action = true; - action_ = Action::erase; - } - if (argv == "ex" || argv == "extract") { - if ( action_ != Action::none - && action_ != Action::extract - && action_ != Action::modify) { - std::cerr << progname() << ": " - << _("Action extract is not compatible with the given options\n"); - rc = 1; - } - action = true; - action_ = Action::extract; - } - if (argv == "in" || argv == "insert") { - if ( action_ != Action::none - && action_ != Action::insert - && action_ != Action::modify) { - std::cerr << progname() << ": " - << _("Action insert is not compatible with the given options\n"); - rc = 1; - } - action = true; - action_ = Action::insert; - } - if (argv == "mv" || argv == "rename") { - if (action_ != Action::none && action_ != Action::rename) { - std::cerr << progname() << ": " - << _("Action rename is not compatible with the given options\n"); - rc = 1; - } - action = true; - action_ = Action::rename; - } - if (argv == "mo" || argv == "modify") { - if (action_ != Action::none && action_ != Action::modify) { - std::cerr << progname() << ": " - << _("Action modify is not compatible with the given options\n"); - rc = 1; - } - action = true; - action_ = Action::modify; - } - if (argv == "fi" || argv == "fixiso") { - if (action_ != Action::none && action_ != Action::fixiso) { - std::cerr << progname() << ": " - << _("Action fixiso is not compatible with the given options\n"); - rc = 1; - } - action = true; - action_ = Action::fixiso; - } - if (argv == "fc" || argv == "fixcom" || argv == "fixcomment") { - if (action_ != Action::none && action_ != Action::fixcom) { - std::cerr << progname() << ": " - << _("Action fixcom is not compatible with the given options\n"); - rc = 1; - } - action = true; - action_ = Action::fixcom; - } - if (action_ == Action::none) { - // if everything else fails, assume print as the default action - action_ = Action::print; - } - } - if (!action) { - files_.push_back(argv); - } - return rc; -} // Params::nonoption - -int Params::getopt(int argc, char* const argv[]) -{ - int rc = Util::Getopt::getopt(argc, argv, optstring_); - // Further consistency checks - if (help_ || version_) return 0; - if (action_ == Action::none) { - // This shouldn't happen since print is taken as default action - std::cerr << progname() << ": " << _("An action must be specified\n"); - rc = 1; - } - if ( action_ == Action::adjust - && !adjust_ - && !yodAdjust_[yodYear].flag_ - && !yodAdjust_[yodMonth].flag_ - && !yodAdjust_[yodDay].flag_) { - std::cerr << progname() << ": " - << _("Adjust action requires at least one -a, -Y, -O or -D option\n"); - rc = 1; - } - if ( action_ == Action::modify - && cmdFiles_.empty() && cmdLines_.empty() && jpegComment_.empty()) { - std::cerr << progname() << ": " - << _("Modify action requires at least one -c, -m or -M option\n"); - rc = 1; - } - if (0 == files_.size()) { - std::cerr << progname() << ": " << _("At least one file is required\n"); - rc = 1; - } - if (rc == 0 && !cmdFiles_.empty()) { - // Parse command files - if (!parseCmdFiles(modifyCmds_, cmdFiles_)) { - std::cerr << progname() << ": " << _("Error parsing -m option arguments\n"); - rc = 1; - } - } - if (rc == 0 && !cmdLines_.empty()) { - // Parse command lines - if (!parseCmdLines(modifyCmds_, cmdLines_)) { - std::cerr << progname() << ": " << _("Error parsing -M option arguments\n"); - rc = 1; - } - } - if (rc == 0 && (!cmdFiles_.empty() || !cmdLines_.empty())) { - // We'll set them again, after reading the file - Exiv2::XmpProperties::unregisterNs(); - } - if ( !directory_.empty() - && !(action_ == Action::insert || action_ == Action::extract)) { - std::cerr << progname() << ": " - << _("-l option can only be used with extract or insert actions\n"); - rc = 1; - } - if (!suffix_.empty() && !(action_ == Action::insert)) { - std::cerr << progname() << ": " - << _("-S option can only be used with insert action\n"); - rc = 1; - } - if (timestamp_ && !(action_ == Action::rename)) { - std::cerr << progname() << ": " - << _("-t option can only be used with rename action\n"); - rc = 1; - } - if (timestampOnly_ && !(action_ == Action::rename)) { - std::cerr << progname() << ": " - << _("-T option can only be used with rename action\n"); - rc = 1; - } - return rc; -} // Params::getopt - -// ***************************************************************************** -// local implementations -namespace { - - bool parseTime(const std::string& ts, long& time) - { - std::string hstr, mstr, sstr; - char *cts = new char[ts.length() + 1]; - strcpy(cts, ts.c_str()); - char *tmp = ::strtok(cts, ":"); - if (tmp) hstr = tmp; - tmp = ::strtok(0, ":"); - if (tmp) mstr = tmp; - tmp = ::strtok(0, ":"); - if (tmp) sstr = tmp; - delete[] cts; - - int sign = 1; - long hh(0), mm(0), ss(0); - // [-]HH part - if (!Util::strtol(hstr.c_str(), hh)) return false; - if (hh < 0) { - sign = -1; - hh *= -1; - } - // check for the -0 special case - if (hh == 0 && hstr.find('-') != std::string::npos) sign = -1; - // MM part, if there is one - if (mstr != "") { - if (!Util::strtol(mstr.c_str(), mm)) return false; - if (mm > 59) return false; - if (mm < 0) return false; - } - // SS part, if there is one - if (sstr != "") { - if (!Util::strtol(sstr.c_str(), ss)) return false; - if (ss > 59) return false; - if (ss < 0) return false; - } - - time = sign * (hh * 3600 + mm * 60 + ss); - return true; - } // parseTime - - int parseCommonTargets(const std::string& optarg, - const std::string& action) - { - int rc = 0; - int target = 0; - for (size_t i = 0; rc == 0 && i < optarg.size(); ++i) { - switch (optarg[i]) { - case 'e': target |= Params::ctExif; break; - case 'i': target |= Params::ctIptc; break; - case 'x': target |= Params::ctXmp; break; - case 'c': target |= Params::ctComment; break; - case 't': target |= Params::ctThumb; break; - case 'a': target |= Params::ctExif - | Params::ctIptc - | Params::ctComment - | Params::ctXmp; break; - case 'X': - target |= Params::ctXmpSidecar; - if (optarg == "X") target |= Params::ctExif | Params::ctIptc | Params::ctXmp; - break; - case 'p': - { - if (strcmp(action.c_str(), "extract") == 0) { - i += (size_t) parsePreviewNumbers(Params::instance().previewNumbers_, optarg, (int) i + 1); - target |= Params::ctPreview; - break; - } - // fallthrough - } - default: - std::cerr << Params::instance().progname() << ": " << _("Unrecognized ") - << action << " " << _("target") << " `" << optarg[i] << "'\n"; - rc = -1; - break; - } - } - return rc ? rc : target; - } // parseCommonTargets - - int parsePreviewNumbers(Params::PreviewNumbers& previewNumbers, - const std::string& optarg, - int j) - { - size_t k = j; - for (size_t i = j; i < optarg.size(); ++i) { - std::ostringstream os; - for (k = i; k < optarg.size() && isdigit(optarg[k]); ++k) { - os << optarg[k]; - } - if (k > i) { - bool ok = false; - int num = Exiv2::stringTo(os.str(), ok); - if (ok && num >= 0) { - previewNumbers.insert(num); - } - else { - std::cerr << Params::instance().progname() << ": " - << _("Invalid preview number") << ": " << num << "\n"; - } - i = k; - } - if (!(k < optarg.size() && optarg[i] == ',')) break; - } - int ret = static_cast(k - j); - if (ret == 0) { - previewNumbers.insert(0); - } -#ifdef DEBUG - std::cout << "\nThe set now contains: "; - for (Params::PreviewNumbers::const_iterator i = previewNumbers.begin(); - i != previewNumbers.end(); - ++i) { - std::cout << *i << ", "; - } - std::cout << std::endl; -#endif - return (int) (k - j); - } // parsePreviewNumbers - - bool parseCmdFiles(ModifyCmds& modifyCmds, - const Params::CmdFiles& cmdFiles) - { - Params::CmdFiles::const_iterator end = cmdFiles.end(); - Params::CmdFiles::const_iterator filename = cmdFiles.begin(); - for ( ; filename != end; ++filename) { - try { - std::ifstream file(filename->c_str()); - if (!file) { - std::cerr << *filename << ": " - << _("Failed to open command file for reading\n"); - return false; - } - int num = 0; - std::string line; - while (std::getline(file, line)) { - ModifyCmd modifyCmd; - if (parseLine(modifyCmd, line, ++num)) { - modifyCmds.push_back(modifyCmd); - } - } - } - catch (const Exiv2::AnyError& error) { - std::cerr << *filename << ", " << _("line") << " " << error << "\n"; - return false; - } - } - return true; - } // parseCmdFile - - bool parseCmdLines(ModifyCmds& modifyCmds, - const Params::CmdLines& cmdLines) - { - try { - int num = 0; - Params::CmdLines::const_iterator end = cmdLines.end(); - Params::CmdLines::const_iterator line = cmdLines.begin(); - for ( ; line != end; ++line) { - ModifyCmd modifyCmd; - if (parseLine(modifyCmd, *line, ++num)) { - modifyCmds.push_back(modifyCmd); - } - } - return true; - } - catch (const Exiv2::AnyError& error) { - std::cerr << _("-M option") << " " << error << "\n"; - return false; - } - } // parseCmdLines - - bool parseLine(ModifyCmd& modifyCmd, const std::string& line, int num) - { - const std::string delim = " \t"; - - // Skip empty lines and comments - std::string::size_type cmdStart = line.find_first_not_of(delim); - if (cmdStart == std::string::npos || line[cmdStart] == '#') return false; - - // Get command and key - std::string::size_type cmdEnd = line.find_first_of(delim, cmdStart+1); - std::string::size_type keyStart = line.find_first_not_of(delim, cmdEnd+1); - std::string::size_type keyEnd = line.find_first_of(delim, keyStart+1); - if ( cmdStart == std::string::npos - || cmdEnd == std::string::npos - || keyStart == std::string::npos) { - throw Exiv2::Error(1, Exiv2::toString(num) - + ": " + _("Invalid command line")); - } - - std::string cmd(line.substr(cmdStart, cmdEnd-cmdStart)); - CmdId cmdId = commandId(cmd); - if (cmdId == invalidCmdId) { - throw Exiv2::Error(1, Exiv2::toString(num) - + ": " + _("Invalid command") + " `" + cmd + "'"); - } - - Exiv2::TypeId defaultType = Exiv2::invalidTypeId; - std::string key(line.substr(keyStart, keyEnd-keyStart)); - MetadataId metadataId = invalidMetadataId; - if (cmdId != reg) { - try { - Exiv2::IptcKey iptcKey(key); - metadataId = iptc; - defaultType = Exiv2::IptcDataSets::dataSetType(iptcKey.tag(), - iptcKey.record()); - } - catch (const Exiv2::AnyError&) {} - if (metadataId == invalidMetadataId) { - try { - Exiv2::ExifKey exifKey(key); - metadataId = exif; - defaultType = exifKey.defaultTypeId(); - } - catch (const Exiv2::AnyError&) {} - } - if (metadataId == invalidMetadataId) { - try { - Exiv2::XmpKey xmpKey(key); - metadataId = xmp; - defaultType = Exiv2::XmpProperties::propertyType(xmpKey); - } - catch (const Exiv2::AnyError&) {} - } - if (metadataId == invalidMetadataId) { - throw Exiv2::Error(1, Exiv2::toString(num) - + ": " + _("Invalid key") + " `" + key + "'"); - } - } - std::string value; - Exiv2::TypeId type = defaultType; - bool explicitType = false; - if (cmdId != del) { - // Get type and value - std::string::size_type typeStart = std::string::npos; - if (keyEnd != std::string::npos) typeStart = line.find_first_not_of(delim, keyEnd+1); - std::string::size_type typeEnd = std::string::npos; - if (typeStart != std::string::npos) typeEnd = line.find_first_of(delim, typeStart+1); - std::string::size_type valStart = typeStart; - std::string::size_type valEnd = std::string::npos; - if (valStart != std::string::npos) valEnd = line.find_last_not_of(delim); - - if ( cmdId == reg - && ( keyEnd == std::string::npos - || valStart == std::string::npos)) { - throw Exiv2::Error(1, Exiv2::toString(num) - + ": " + _("Invalid command line") + " " ); - } - - if ( cmdId != reg - && typeStart != std::string::npos - && typeEnd != std::string::npos) { - std::string typeStr(line.substr(typeStart, typeEnd-typeStart)); - Exiv2::TypeId tmpType = Exiv2::TypeInfo::typeId(typeStr); - if (tmpType != Exiv2::invalidTypeId) { - valStart = line.find_first_not_of(delim, typeEnd+1); - if (valStart == std::string::npos) { - throw Exiv2::Error(1, Exiv2::toString(num) - + ": " + _("Invalid command line") + " " ); - } - type = tmpType; - explicitType = true; - } - } - - if (valStart != std::string::npos) { - value = parseEscapes(line.substr(valStart, valEnd+1-valStart)); - std::string::size_type last = value.length()-1; - if ( (value[0] == '"' && value[last] == '"') - || (value[0] == '\'' && value[last] == '\'')) { - value = value.substr(1, value.length()-2); - } - } - } - - modifyCmd.cmdId_ = cmdId; - modifyCmd.key_ = key; - modifyCmd.metadataId_ = metadataId; - modifyCmd.typeId_ = type; - modifyCmd.explicitType_ = explicitType; - modifyCmd.value_ = value; - - if (cmdId == reg) { - // Registration needs to be done immediately as the new namespaces are - // looked up during parsing of subsequent lines (to validate XMP keys). - Exiv2::XmpProperties::registerNs(modifyCmd.value_, modifyCmd.key_); - } - - return true; - } // parseLine - - CmdId commandId(const std::string& cmdString) - { - int i = 0; - for (; cmdIdAndString[i].cmdId_ != invalidCmdId - && cmdIdAndString[i].cmdString_ != cmdString; ++i) {} - return cmdIdAndString[i].cmdId_; - } - - std::string parseEscapes(const std::string& input) - { - std::string result = ""; - for (unsigned int i = 0; i < input.length(); ++i) { - char ch = input[i]; - if (ch != '\\') { - result.push_back(ch); - continue; - } - int escapeStart = i; - if (!(input.length() - 1 > i)) { - result.push_back(ch); - continue; - } - ++i; - ch = input[i]; - switch (ch) { - case '\\': // Escaping of backslash - result.push_back('\\'); - break; - case 'r': // Escaping of carriage return - result.push_back('\r'); - break; - case 'n': // Escaping of newline - result.push_back('\n'); - break; - case 't': // Escaping of tab - result.push_back('\t'); - break; - case 'u': // Escaping of unicode - if (input.length() - 4 > i) { - int acc = 0; - for (int j = 0; j < 4; ++j) { - ++i; - acc <<= 4; - if (input[i] >= '0' && input[i] <= '9') { - acc |= input[i] - '0'; - } - else if (input[i] >= 'a' && input[i] <= 'f') { - acc |= input[i] - 'a' + 10; - } - else if (input[i] >= 'A' && input[i] <= 'F') { - acc |= input[i] - 'A' + 10; - } - else { - acc = -1; - break; - } - } - if (acc == -1) { - result.push_back('\\'); - i = escapeStart; - break; - } - - std::string ucs2toUtf8 = ""; - ucs2toUtf8.push_back((char) ((acc & 0xff00) >> 8)); - ucs2toUtf8.push_back((char) (acc & 0x00ff)); - - if (Exiv2::convertStringCharset (ucs2toUtf8, "UCS-2BE", "UTF-8")) { - result.append (ucs2toUtf8); - } - } - else { - result.push_back('\\'); - result.push_back(ch); - } - break; - default: - result.push_back('\\'); - result.push_back(ch); - } - } - return result; - } - -} - diff --git a/platform/win32/msvc/external/exiv2/src/exiv2.hpp b/platform/win32/msvc/external/exiv2/src/exiv2.hpp deleted file mode 100644 index 72a862e6504..00000000000 --- a/platform/win32/msvc/external/exiv2/src/exiv2.hpp +++ /dev/null @@ -1,69 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file exiv2.hpp - @brief Include all Exiv2 header files. - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 21-Jun-10, ahu: created - */ -#ifndef EXIV2_HPP_ -#define EXIV2_HPP_ - -// ***************************************************************************** -// included header files -#include "basicio.hpp" -#include "bmpimage.hpp" -#include "convert.hpp" -#include "cr2image.hpp" -#include "crwimage.hpp" -#include "datasets.hpp" -#include "easyaccess.hpp" -#include "epsimage.hpp" -#include "error.hpp" -#include "exif.hpp" -#include "futils.hpp" -#include "gifimage.hpp" -#include "image.hpp" -#include "iptc.hpp" -#include "jp2image.hpp" -#include "jpgimage.hpp" -#include "metadatum.hpp" -#include "mrwimage.hpp" -#include "orfimage.hpp" -#include "pgfimage.hpp" -#include "pngimage.hpp" -#include "preview.hpp" -#include "properties.hpp" -#include "psdimage.hpp" -#include "rafimage.hpp" -#include "rw2image.hpp" -#include "tags.hpp" -#include "tgaimage.hpp" -#include "tiffimage.hpp" -#include "types.hpp" -#include "value.hpp" -#include "version.hpp" -#include "xmp.hpp" -#include "xmpsidecar.hpp" - -#endif // #ifndef EXIV2_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/exiv2app.hpp b/platform/win32/msvc/external/exiv2/src/exiv2app.hpp deleted file mode 100644 index 2e5d765eb01..00000000000 --- a/platform/win32/msvc/external/exiv2/src/exiv2app.hpp +++ /dev/null @@ -1,296 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file exiv2app.hpp - @brief Defines class Params, used for the command line handling of exiv2 - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 08-Dec-03, ahu: created - */ -#ifndef EXIV2APP_HPP_ -#define EXIV2APP_HPP_ - -// ***************************************************************************** -// included header files -#include "utils.hpp" -#include "types.hpp" - -// + standard includes -#include -#include -#include -#include - -// ***************************************************************************** -// class definitions - -//! Command identifiers -enum CmdId { invalidCmdId, add, set, del, reg }; -//! Metadata identifiers -enum MetadataId { invalidMetadataId, iptc, exif, xmp }; -//! Structure for one parsed modification command -struct ModifyCmd { - //! C'tor - ModifyCmd() : - cmdId_(invalidCmdId), metadataId_(invalidMetadataId), - typeId_(Exiv2::invalidTypeId), explicitType_(false) {} - CmdId cmdId_; //!< Command identifier - std::string key_; //!< Exiv2 key string - MetadataId metadataId_; //!< Metadata identifier - Exiv2::TypeId typeId_; //!< Exiv2 type identifier - //! Flag to indicate if the type was explicitly specified (true) - bool explicitType_; - std::string value_; //!< Data -}; -//! Container for modification commands -typedef std::vector ModifyCmds; -//! Structure to link command identifiers to strings -struct CmdIdAndString { - CmdId cmdId_; //!< Commands identifier - std::string cmdString_; //!< Command string -}; - -/*! - @brief Implements the command line handling for the program. - - Derives from Util::Getopt to use the command line argument parsing - functionality provided there. This class is implemented as a singleton, - i.e., there is only one global instance of it, which can be accessed - from everywhere. - - Usage example:
- @code - #include "params.h" - - int main(int argc, char* const argv[]) - { - Params& params = Params::instance(); - if (params.getopt(argc, argv)) { - params.usage(); - return 1; - } - if (params.help_) { - params.help(); - return 0; - } - if (params.version_) { - params.version(); - return 0; - } - - // do something useful here... - - return 0; - } - @endcode - */ -class Params : public Util::Getopt { -private: - std::string optstring_; - -public: - //! Container for command files - typedef std::vector CmdFiles; - //! Container for commands from the command line - typedef std::vector CmdLines; - //! Container to store filenames. - typedef std::vector Files; - //! Container for preview image numbers - typedef std::set PreviewNumbers; - //! Container for keys - typedef std::vector Keys; - - /*! - @brief Controls all access to the global Params instance. - @return Reference to the global Params instance. - */ - static Params& instance(); - //! Destructor - void cleanup(); - - //! Enumerates print modes - enum PrintMode { - pmSummary, - pmList, - pmComment, - pmPreview - }; - - //! Individual items to print, bitmap - enum PrintItem { - prTag = 1, - prGroup = 2, - prKey = 4, - prName = 8, - prLabel = 16, - prType = 32, - prCount = 64, - prSize = 128, - prValue = 256, - prTrans = 512, - prHex = 1024 - }; - - //! Enumerates common targets, bitmap - enum CommonTarget { - ctExif = 1, - ctIptc = 2, - ctComment = 4, - ctThumb = 8, - ctXmp = 16, - ctXmpSidecar = 32, - ctPreview = 64 - }; - - //! Enumerates the policies to handle existing files in rename action - enum FileExistsPolicy { overwritePolicy, renamePolicy, askPolicy }; - - //! Enumerates year, month and day adjustments. - enum Yod { yodYear, yodMonth, yodDay }; - - //! Structure for year, month and day adjustment command line arguments. - struct YodAdjust { - bool flag_; //!< Adjustment flag. - const char* option_; //!< Adjustment option string. - long adjustment_; //!< Adjustment value. - }; - - bool help_; //!< Help option flag. - bool version_; //!< Version option flag. - bool verbose_; //!< Verbose (talkative) option flag. - bool force_; //!< Force overwrites flag. - bool binary_; //!< Suppress long binary values. - bool unknown_; //!< Suppress unknown tags. - bool preserve_; //!< Preserve timestamps flag. - bool timestamp_; //!< Rename also sets the file timestamp. - bool timestampOnly_; //!< Rename only sets the file timestamp. - FileExistsPolicy fileExistsPolicy_; //!< What to do if file to rename exists. - bool adjust_; //!< Adjustment flag. - PrintMode printMode_; //!< Print mode. - unsigned long printItems_; //!< Print items. - unsigned long printTags_; //!< Print tags (bitmap of MetadataId flags). - //! %Action (integer rather than TaskType to avoid dependency). - int action_; - int target_; //!< What common target to process. - - long adjustment_; //!< Adjustment in seconds. - YodAdjust yodAdjust_[3]; //!< Year, month and day adjustment info. - std::string format_; //!< Filename format (-r option arg). - bool formatSet_; //!< Whether the format is set with -r - CmdFiles cmdFiles_; //!< Names of the modification command files - CmdLines cmdLines_; //!< Commands from the command line - ModifyCmds modifyCmds_; //!< Parsed modification commands - std::string jpegComment_; //!< Jpeg comment to set in the image - std::string directory_; //!< Location for files to extract/insert - std::string suffix_; //!< File extension of the file to insert - Files files_; //!< List of non-option arguments. - PreviewNumbers previewNumbers_; //!< List of preview numbers - Keys keys_; //!< List of keys to 'grep' from the metadata - std::string charset_; //!< Charset to use for UNICODE Exif user comment - -private: - //! Pointer to the global Params object. - static Params* instance_; - //! Initializer for year, month and day adjustment info. - static const YodAdjust emptyYodAdjust_[]; - - bool first_; - -private: - /*! - @brief Default constructor. Note that optstring_ is initialized here. - The c'tor is private to force instantiation through instance(). - */ - Params() : optstring_(":hVvqfbuktTFa:Y:O:D:r:p:P:d:e:i:c:m:M:l:S:g:n:Q:"), - help_(false), - version_(false), - verbose_(false), - force_(false), - binary_(true), - unknown_(true), - preserve_(false), - timestamp_(false), - timestampOnly_(false), - fileExistsPolicy_(askPolicy), - adjust_(false), - printMode_(pmSummary), - printItems_(0), - printTags_(Exiv2::mdNone), - action_(0), - target_(ctExif|ctIptc|ctComment|ctXmp), - adjustment_(0), - format_("%Y%m%d_%H%M%S"), - formatSet_(false), - first_(true) - { - yodAdjust_[yodYear] = emptyYodAdjust_[yodYear]; - yodAdjust_[yodMonth] = emptyYodAdjust_[yodMonth]; - yodAdjust_[yodDay] = emptyYodAdjust_[yodDay]; - } - - //! Prevent copy-construction: not implemented. - Params(const Params& rhs); - - //! @name Helpers - //@{ - int setLogLevel(const std::string& optarg); - int evalRename(int opt, const std::string& optarg); - int evalAdjust(const std::string& optarg); - int evalYodAdjust(const Yod& yod, const std::string& optarg); - int evalPrint(const std::string& optarg); - int evalPrintFlags(const std::string& optarg); - int evalDelete(const std::string& optarg); - int evalExtract(const std::string& optarg); - int evalInsert(const std::string& optarg); - int evalModify(int opt, const std::string& optarg); - //@} - -public: - /*! - @brief Call Getopt::getopt() with optstring, to inititate command line - argument parsing, perform consistency checks after all command line - arguments are parsed. - - @param argc Argument count as passed to main() on program invocation. - @param argv Argument array as passed to main() on program invocation. - - @return 0 if successful, >0 in case of errors. - */ - int getopt(int argc, char* const argv[]); - - //! Handle options and their arguments. - virtual int option(int opt, const std::string& optarg, int optopt); - - //! Handle non-option parameters. - virtual int nonoption(const std::string& argv); - - //! Print a minimal usage note to an output stream. - void usage(std::ostream& os =std::cout) const; - - //! Print further usage explanations to an output stream. - void help(std::ostream& os =std::cout) const; - - //! Print version information to an output stream. - void version(std::ostream& os =std::cout) const; -}; // class Params - -#endif // #ifndef EXIV2APP_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/fujimn.cpp b/platform/win32/msvc/external/exiv2/src/fujimn.cpp deleted file mode 100644 index 5f5f2796111..00000000000 --- a/platform/win32/msvc/external/exiv2/src/fujimn.cpp +++ /dev/null @@ -1,290 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: fujimn.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - Gilles Caulier (gc) - History: 18-Feb-04, ahu: created - 07-Mar-04, ahu: isolated as a separate component - Credits: See header file. - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: fujimn.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#include "types.hpp" -#include "fujimn_int.hpp" -#include "tags_int.hpp" -#include "value.hpp" -#include "i18n.h" // NLS support. - -// + standard includes -#include -#include -#include -#include -#include - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - namespace Internal { - - //! OffOn, multiple tags - extern const TagDetails fujiOffOn[] = { - { 0, N_("Off") }, - { 1, N_("On") } - }; - - //! Sharpness, tag 0x1001 - extern const TagDetails fujiSharpness[] = { - { 1, N_("Soft mode 1") }, - { 2, N_("Soft mode 2") }, - { 3, N_("Normal") }, - { 4, N_("Hard mode 1") }, - { 5, N_("Hard mode 2") } - }; - - //! WhiteBalance, tag 0x1002 - extern const TagDetails fujiWhiteBalance[] = { - { 0, N_("Auto") }, - { 256, N_("Daylight") }, - { 512, N_("Cloudy") }, - { 768, N_("Fluorescent (daylight)") }, - { 769, N_("Fluorescent (warm white)") }, - { 770, N_("Fluorescent (cool white)") }, - { 1024, N_("Incandescent") }, - { 3480, N_("Custom") }, - { 3480, N_("Custom") } // To silence compiler warning - }; - - //! Color, tag 0x1003 - extern const TagDetails fujiColor[] = { - { 0, N_("Normal") }, - { 256, N_("High") }, - { 512, N_("Low") }, - { 768, N_("None (black & white)") }, - { 768, N_("None (black & white)") } // To silence compiler warning - }; - - //! Tone, tag 0x1004 - extern const TagDetails fujiTone[] = { - { 0, N_("Normal") }, - { 256, N_("High") }, - { 512, N_("Low") } - }; - - //! FlashMode, tag 0x1010 - extern const TagDetails fujiFlashMode[] = { - { 0, N_("Auto") }, - { 1, N_("On") }, - { 2, N_("Off") }, - { 3, N_("Red-eye reduction") }, - { 3, N_("Red-eye reduction") } // To silence compiler warning - }; - - //! FocusMode, tag 0x1021 - extern const TagDetails fujiFocusMode[] = { - { 0, N_("Auto") }, - { 1, N_("Manual") } - }; - - //! PictureMode, tag 0x1031 - extern const TagDetails fujiPictureMode[] = { - { 0, N_("Auto") }, - { 1, N_("Portrait") }, - { 2, N_("Landscape") }, - { 4, N_("Sports") }, - { 5, N_("Night scene") }, - { 6, N_("Program AE") }, - { 7, N_("Natural light") }, - { 8, N_("Anti-blur") }, - { 10, N_("Sunset") }, - { 11, N_("Museum") }, - { 12, N_("Party") }, - { 13, N_("Flower") }, - { 14, N_("Text") }, - { 15, N_("Natural light & flash") }, - { 16, N_("Beach") }, - { 17, N_("Snow") }, - { 18, N_("Fireworks") }, - { 19, N_("Underwater") }, - { 256, N_("Aperture-priority AE") }, - { 512, N_("Shutter speed priority AE") }, - { 768, N_("Manual") } - }; - - //! Continuous, tag 0x1100 - extern const TagDetails fujiContinuous[] = { - { 0, N_("Off") }, - { 1, N_("On") }, - { 2, N_("No flash & flash") } - }; - - //! FinePixColor, tag 0x1210 - extern const TagDetails fujiFinePixColor[] = { - { 0, N_("Standard") }, - { 16, N_("Chrome") }, - { 48, N_("Black & white") } - }; - - //! DynamicRange, tag 0x1400 - extern const TagDetails fujiDynamicRange[] = { - { 1, N_("Standard") }, - { 3, N_("Wide") } - }; - - //! FilmMode, tag 0x1401 - extern const TagDetails fujiFilmMode[] = { - { 0, N_("F0/Standard") }, - { 256, N_("F1/Studio portrait") }, - { 512, N_("F2/Fujichrome") }, - { 768, N_("F3/Studio portrait Ex") }, - { 1024, N_("F4/Velvia") } - }; - - //! DynamicRange, tag 0x1402 - extern const TagDetails fujiDynamicRangeSetting[] = { - { 0, N_("Auto (100-400%)") }, - { 1, N_("Raw") }, - { 256, N_("Standard (100%)") }, - { 512, N_("Wide mode 1 (230%)") }, - { 513, N_("Wide mode 2 (400%)") }, - { 32768, N_("Film simulation mode") } - }; - - // Fujifilm MakerNote Tag Info - const TagInfo FujiMakerNote::tagInfo_[] = { - TagInfo(0x0000, "Version", N_("Version"), - N_("Fujifilm Makernote version"), - fujiId, makerTags, undefined, -1, printValue), - TagInfo(0x0010, "SerialNumber", N_("Serial Number"), - N_("This number is unique, and contains the date of manufacture, " - "but is not the same as the number printed on the camera body."), - fujiId, makerTags, asciiString, -1, printValue), - TagInfo(0x1000, "Quality", N_("Quality"), - N_("Image quality setting"), - fujiId, makerTags, asciiString, -1, printValue), - TagInfo(0x1001, N_("Sharpness"), N_("Sharpness"), - N_("Sharpness setting"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiSharpness)), - TagInfo(0x1002, "WhiteBalance", N_("White Balance"), - N_("White balance setting"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiWhiteBalance)), - TagInfo(0x1003, "Color", N_("Color"), - N_("Chroma saturation setting"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiColor)), - TagInfo(0x1004, "Tone", N_("Tone"), - N_("Contrast setting"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiTone)), - TagInfo(0x1010, "FlashMode", N_("Flash Mode"), - N_("Flash firing mode setting"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiFlashMode)), - TagInfo(0x1011, "FlashStrength", N_("Flash Strength"), - N_("Flash firing strength compensation setting"), - fujiId, makerTags, signedRational, -1, printValue), - TagInfo(0x1020, "Macro", N_("Macro"), - N_("Macro mode setting"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)), - TagInfo(0x1021, "FocusMode", N_("Focus Mode"), - N_("Focusing mode setting"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiFocusMode)), - TagInfo(0x1022, "0x1022", "0x1022", - N_("Unknown"), - fujiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1030, "SlowSync", N_("Slow Sync"), - N_("Slow synchro mode setting"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)), - TagInfo(0x1031, "PictureMode", N_("Picture Mode"), - N_("Picture mode setting"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiPictureMode)), - TagInfo(0x1032, "0x1032", "0x1032", - N_("Unknown"), - fujiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1100, "Continuous", N_("Continuous"), - N_("Continuous shooting or auto bracketing setting"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiContinuous)), - TagInfo(0x1101, "SequenceNumber", N_("Sequence Number"), - N_("Sequence number"), - fujiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1200, "0x1200", "0x1200", - N_("Unknown"), - fujiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1210, "FinePixColor", N_("FinePix Color"), - N_("Fuji FinePix color setting"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiFinePixColor)), - TagInfo(0x1300, "BlurWarning", N_("Blur Warning"), - N_("Blur warning status"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)), - TagInfo(0x1301, "FocusWarning", N_("Focus Warning"), - N_("Auto Focus warning status"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)), - TagInfo(0x1302, "ExposureWarning", N_("Exposure Warning"), - N_("Auto exposure warning status"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)), - TagInfo(0x1400, "DynamicRange", N_("Dynamic Range"), - N_("Dynamic range"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiDynamicRange)), - TagInfo(0x1401, "FilmMode", N_("Film Mode"), - N_("Film mode"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiFilmMode)), - TagInfo(0x1402, "DynamicRangeSetting", N_("Dynamic Range Setting"), - N_("Dynamic range settings"), - fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiDynamicRangeSetting)), - TagInfo(0x1403, "DevelopmentDynamicRange", N_("Development Dynamic Range"), - N_("Development dynamic range"), - fujiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1404, "MinFocalLength", N_("Minimum Focal Length"), - N_("Minimum focal length"), - fujiId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x1405, "MaxFocalLength", N_("Maximum Focal Length"), - N_("Maximum focal length"), - fujiId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x1406, "MaxApertureAtMinFocal", N_("Maximum Aperture at Mininimum Focal"), - N_("Maximum aperture at mininimum focal"), - fujiId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x1407, "MaxApertureAtMaxFocal", N_("Maximum Aperture at Maxinimum Focal"), - N_("Maximum aperture at maxinimum focal"), - fujiId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x8000, "FileSource", N_("File Source"), - N_("File source"), - fujiId, makerTags, asciiString, -1, printValue), - TagInfo(0x8002, "OrderNumber", N_("Order Number"), - N_("Order number"), - fujiId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x8003, "FrameNumber", N_("Frame Number"), - N_("Frame number"), - fujiId, makerTags, unsignedShort, -1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownFujiMakerNoteTag)", "(UnknownFujiMakerNoteTag)", - N_("Unknown FujiMakerNote tag"), - fujiId, makerTags, asciiString, -1, printValue) - }; - - const TagInfo* FujiMakerNote::tagList() - { - return tagInfo_; - } - -}} // namespace Internal, Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/fujimn_int.hpp b/platform/win32/msvc/external/exiv2/src/fujimn_int.hpp deleted file mode 100644 index b522409c0fe..00000000000 --- a/platform/win32/msvc/external/exiv2/src/fujimn_int.hpp +++ /dev/null @@ -1,65 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file fujimn_int.hpp - @brief Fujifilm MakerNote implemented according to the specification - in Appendix 4: Makernote of Fujifilm of the document - - Exif file format by TsuruZoh Tachibanaya
- Fuji Makernote list by Phil Harvey
- @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @author Gilles Caulier (gc) - caulier dot gilles at gmail dot com - @date 11-Feb-04, ahu: created - */ -#ifndef FUJIMN_INT_HPP_ -#define FUJIMN_INT_HPP_ - -// ***************************************************************************** -// included header files -#include "tags.hpp" -#include "types.hpp" - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - namespace Internal { - -// ***************************************************************************** -// class definitions - - //! MakerNote for Fujifilm cameras - class FujiMakerNote { - public: - //! Return read-only list of built-in Fujifilm tags - static const TagInfo* tagList(); - - private: - //! Tag information - static const TagInfo tagInfo_[]; - - }; // class FujiMakerNote - -}} // namespace Internal, Exiv2 - -#endif // #ifndef FUJIMN_INT_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/futils.cpp b/platform/win32/msvc/external/exiv2/src/futils.cpp deleted file mode 100644 index 4c2ebeac340..00000000000 --- a/platform/win32/msvc/external/exiv2/src/futils.cpp +++ /dev/null @@ -1,114 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: futils.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - History: 08-Dec-03, ahu: created - 02-Apr-05, ahu: moved to Exiv2 namespace - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: futils.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#include "futils.hpp" - -// + standard includes -#include -#include -#ifdef _MSC_VER -# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) -#endif -#ifdef EXV_HAVE_UNISTD_H -# include // for stat() -#endif - -#include -#include -#include - -#if defined EXV_HAVE_STRERROR_R && !defined EXV_HAVE_DECL_STRERROR_R -# ifdef EXV_STRERROR_R_CHAR_P -extern char *strerror_r(int errnum, char *buf, size_t n); -# else -extern int strerror_r(int errnum, char *buf, size_t n); -# endif -#endif - -namespace Exiv2 { - -// ***************************************************************************** -// free functions - - bool fileExists(const std::string& path, bool ct) - { - struct stat buf; - int ret = ::stat(path.c_str(), &buf); - if (0 != ret) return false; - if (ct && !S_ISREG(buf.st_mode)) return false; - return true; - } // fileExists - -#ifdef EXV_UNICODE_PATH - bool fileExists(const std::wstring& wpath, bool ct) - { - struct _stat buf; - int ret = _wstat(wpath.c_str(), &buf); - if (0 != ret) return false; - if (ct && !S_ISREG(buf.st_mode)) return false; - return true; - } // fileExists - -#endif - std::string strError() - { - int error = errno; - std::ostringstream os; -#ifdef EXV_HAVE_STRERROR_R - const size_t n = 1024; -// _GNU_SOURCE: See Debian bug #485135 -# if defined EXV_STRERROR_R_CHAR_P && defined _GNU_SOURCE - char *buf = 0; - char buf2[n]; - std::memset(buf2, 0x0, n); - buf = strerror_r(error, buf2, n); -# else - char buf[n]; - std::memset(buf, 0x0, n); - strerror_r(error, buf, n); -# endif - os << buf; -#else - os << std::strerror(error); -#endif - os << " (errno = " << error << ")"; - return os.str(); - } // strError - -} // namespace Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/futils.hpp b/platform/win32/msvc/external/exiv2/src/futils.hpp deleted file mode 100644 index 7bf2921c8ea..00000000000 --- a/platform/win32/msvc/external/exiv2/src/futils.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// ********************************************************* -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file futils.hpp - @brief Basic file utility functions required by Exiv2 - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 12-Dec-03, ahu: created
- 02-Apr-05, ahu: moved to Exiv2 namespace - */ -#ifndef FUTILS_HPP_ -#define FUTILS_HPP_ - -// ********************************************************************* -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -// + standard includes -#include - -// ********************************************************************* -// namespace extensions -namespace Exiv2 { - -// ********************************************************************* -// free functions - - /*! - @brief Test if a file exists. - - @param path Name of file to verify. - @param ct Flag to check if path is a regular file. - @return true if path exists and, if ct is set, - is a regular file, else false. - - @note The function calls stat() test for path - and its type, see stat(2). errno is left unchanged - in case of an error. - */ - EXIV2API bool fileExists(const std::string& path, bool ct =false); -#ifdef EXV_UNICODE_PATH - /*! - @brief Like fileExists() but accepts a unicode path in an std::wstring. - @note This function is only available on Windows. - */ - EXIV2API bool fileExists(const std::wstring& wpath, bool ct =false); -#endif - /*! - @brief Return a system error message and the error code (errno). - See %strerror(3). - */ - EXIV2API std::string strError(); - -} // namespace Exiv2 - -#endif // #ifndef FUTILS_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/getopt_win32.c b/platform/win32/msvc/external/exiv2/src/getopt_win32.c deleted file mode 100644 index fca29924dc2..00000000000 --- a/platform/win32/msvc/external/exiv2/src/getopt_win32.c +++ /dev/null @@ -1,512 +0,0 @@ -/* $NetBSD: getopt_long.c,v 1.15 2002/01/31 22:43:40 tv Exp $ */ - -/*- - * Copyright (c) 2000 The NetBSD Foundation, Inc. - * All rights reserved. - * - * This code is derived from software contributed to The NetBSD Foundation - * by Dieter Baron and Thomas Klausner. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the NetBSD - * Foundation, Inc. and its contributors. - * 4. Neither the name of The NetBSD Foundation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#if _MSC_VER >= 1400 -# pragma warning(disable : 4996) -#endif - -// included header files -#include -#include -#include -#include -#include "getopt_win32.h" -#include -#include - -#define REPLACE_GETOPT - -#define _DIAGASSERT(x) do {} while (0) - -#ifdef REPLACE_GETOPT -#ifdef __weak_alias -__weak_alias(getopt,_getopt) -#endif -int opterr = 1; /* if error message should be printed */ -int optind = 1; /* index into parent argv vector */ -int optopt = '?'; /* character checked for validity */ -int optreset; /* reset getopt */ -char *optarg; /* argument associated with option */ -#endif - -#ifdef __weak_alias -__weak_alias(getopt_long,_getopt_long) -#endif - -#ifndef __CYGWIN__ -#define __progname __argv[0] -#else -extern char __declspec(dllimport) *__progname; -#endif - -#define IGNORE_FIRST (*options == '-' || *options == '+') -#define PRINT_ERROR ((opterr) && ((*options != ':') \ - || (IGNORE_FIRST && options[1] != ':'))) - -/* This differs from the cygwin implementation, which effectively defaults to - PC, but is consistent with the NetBSD implementation and doc's. */ -#ifndef IS_POSIXLY_CORRECT -#define IS_POSIXLY_CORRECT (getenv("POSIXLY_CORRECT") != NULL) -#endif - -#define PERMUTE (!IS_POSIXLY_CORRECT && !IGNORE_FIRST) -/* XXX: GNU ignores PC if *options == '-' */ -#define IN_ORDER (!IS_POSIXLY_CORRECT && *options == '-') - -/* return values */ -#define BADCH (int)'?' -#define BADARG ((IGNORE_FIRST && options[1] == ':') \ - || (*options == ':') ? (int)':' : (int)'?') -#define INORDER (int)1 - -static char EMSG[1]; - -static int getopt_internal (int, char * const *, const char *); -static int gcd (int, int); -static void permute_args (int, int, int, char * const *); - -static char *place = EMSG; /* option letter processing */ - -/* XXX: set optreset to 1 rather than these two */ -static int nonopt_start = -1; /* first non option argument (for permute) */ -static int nonopt_end = -1; /* first option after non options (for permute) */ - -/* Error messages */ -static const char recargchar[] = "option requires an argument -- %c"; -static const char recargstring[] = "option requires an argument -- %s"; -static const char ambig[] = "ambiguous option -- %.*s"; -static const char noarg[] = "option doesn't take an argument -- %.*s"; -static const char illoptchar[] = "unknown option -- %c"; -static const char illoptstring[] = "unknown option -- %s"; - -static void -_vwarnx(const char *fmt, va_list ap) -{ - (void)fprintf(stderr, "%s: ", __progname); - if (fmt != NULL) - (void)vfprintf(stderr, fmt, ap); - (void)fprintf(stderr, "\n"); -} - -static void -warnx(const char *fmt, ...) -{ - va_list ap; - va_start(ap, fmt); - _vwarnx(fmt, ap); - va_end(ap); -} - -/* - * Compute the greatest common divisor of a and b. - */ -static int -gcd(a, b) - int a; - int b; -{ - int c; - - c = a % b; - while (c != 0) { - a = b; - b = c; - c = a % b; - } - - return b; -} - -/* - * Exchange the block from nonopt_start to nonopt_end with the block - * from nonopt_end to opt_end (keeping the same order of arguments - * in each block). - */ -static void -permute_args(panonopt_start, panonopt_end, opt_end, nargv) - int panonopt_start; - int panonopt_end; - int opt_end; - char * const *nargv; -{ - int cstart, cyclelen, i, j, ncycle, nnonopts, nopts, pos; - char *swap; - - _DIAGASSERT(nargv != NULL); - - /* - * compute lengths of blocks and number and size of cycles - */ - nnonopts = panonopt_end - panonopt_start; - nopts = opt_end - panonopt_end; - ncycle = gcd(nnonopts, nopts); - cyclelen = (opt_end - panonopt_start) / ncycle; - - for (i = 0; i < ncycle; i++) { - cstart = panonopt_end+i; - pos = cstart; - for (j = 0; j < cyclelen; j++) { - if (pos >= panonopt_end) - pos -= nnonopts; - else - pos += nopts; - swap = nargv[pos]; - /* LINTED const cast */ - ((char **) nargv)[pos] = nargv[cstart]; - /* LINTED const cast */ - ((char **)nargv)[cstart] = swap; - } - } -} - -/* - * getopt_internal -- - * Parse argc/argv argument vector. Called by user level routines. - * Returns -2 if -- is found (can be long option or end of options marker). - */ -static int -getopt_internal(nargc, nargv, options) - int nargc; - char * const *nargv; - const char *options; -{ - char *oli; /* option letter list index */ - int optchar; - - _DIAGASSERT(nargv != NULL); - _DIAGASSERT(options != NULL); - - optarg = NULL; - - /* - * XXX Some programs (like rsyncd) expect to be able to - * XXX re-initialize optind to 0 and have getopt_long(3) - * XXX properly function again. Work around this braindamage. - */ - if (optind == 0) - optind = 1; - - if (optreset) - nonopt_start = nonopt_end = -1; -start: - if (optreset || !*place) { /* update scanning pointer */ - optreset = 0; - if (optind >= nargc) { /* end of argument vector */ - place = EMSG; - if (nonopt_end != -1) { - /* do permutation, if we have to */ - permute_args(nonopt_start, nonopt_end, - optind, nargv); - optind -= nonopt_end - nonopt_start; - } - else if (nonopt_start != -1) { - /* - * If we skipped non-options, set optind - * to the first of them. - */ - optind = nonopt_start; - } - nonopt_start = nonopt_end = -1; - return -1; - } - if ((*(place = nargv[optind]) != '-') - || (place[1] == '\0')) { /* found non-option */ - place = EMSG; - if (IN_ORDER) { - /* - * GNU extension: - * return non-option as argument to option 1 - */ - optarg = nargv[optind++]; - return INORDER; - } - if (!PERMUTE) { - /* - * if no permutation wanted, stop parsing - * at first non-option - */ - return -1; - } - /* do permutation */ - if (nonopt_start == -1) - nonopt_start = optind; - else if (nonopt_end != -1) { - permute_args(nonopt_start, nonopt_end, - optind, nargv); - nonopt_start = optind - - (nonopt_end - nonopt_start); - nonopt_end = -1; - } - optind++; - /* process next argument */ - goto start; - } - if (nonopt_start != -1 && nonopt_end == -1) - nonopt_end = optind; - if (place[1] && *++place == '-') { /* found "--" */ - place++; - return -2; - } - } - if ((optchar = (int)*place++) == (int)':' || - (oli = strchr(options + (IGNORE_FIRST ? 1 : 0), optchar)) == NULL) { - /* option letter unknown or ':' */ - if (!*place) - ++optind; - if (PRINT_ERROR) - warnx(illoptchar, optchar); - optopt = optchar; - return BADCH; - } - if (optchar == 'W' && oli[1] == ';') { /* -W long-option */ - /* XXX: what if no long options provided (called by getopt)? */ - if (*place) - return -2; - - if (++optind >= nargc) { /* no arg */ - place = EMSG; - if (PRINT_ERROR) - warnx(recargchar, optchar); - optopt = optchar; - return BADARG; - } else /* white space */ - place = nargv[optind]; - /* - * Handle -W arg the same as --arg (which causes getopt to - * stop parsing). - */ - return -2; - } - if (*++oli != ':') { /* doesn't take argument */ - if (!*place) - ++optind; - } else { /* takes (optional) argument */ - optarg = NULL; - if (*place) /* no white space */ - optarg = place; - /* XXX: disable test for :: if PC? (GNU doesn't) */ - else if (oli[1] != ':') { /* arg not optional */ - if (++optind >= nargc) { /* no arg */ - place = EMSG; - if (PRINT_ERROR) - warnx(recargchar, optchar); - optopt = optchar; - return BADARG; - } else - optarg = nargv[optind]; - } - place = EMSG; - ++optind; - } - /* dump back option letter */ - return optchar; -} - -#ifdef REPLACE_GETOPT -/* - * getopt -- - * Parse argc/argv argument vector. - * - * [eventually this will replace the real getopt] - */ -int -getopt(nargc, nargv, options) - int nargc; - char * const *nargv; - const char *options; -{ - int retval; - - _DIAGASSERT(nargv != NULL); - _DIAGASSERT(options != NULL); - - if ((retval = getopt_internal(nargc, nargv, options)) == -2) { - ++optind; - /* - * We found an option (--), so if we skipped non-options, - * we have to permute. - */ - if (nonopt_end != -1) { - permute_args(nonopt_start, nonopt_end, optind, - nargv); - optind -= nonopt_end - nonopt_start; - } - nonopt_start = nonopt_end = -1; - retval = -1; - } - return retval; -} -#endif - -/* - * getopt_long -- - * Parse argc/argv argument vector. - */ -int -getopt_long(nargc, nargv, options, long_options, idx) - int nargc; - char * const *nargv; - const char *options; - const struct option *long_options; - int *idx; -{ - int retval; - - _DIAGASSERT(nargv != NULL); - _DIAGASSERT(options != NULL); - _DIAGASSERT(long_options != NULL); - /* idx may be NULL */ - - if ((retval = getopt_internal(nargc, nargv, options)) == -2) { - char *current_argv, *has_equal; - size_t current_argv_len; - int i, match; - - current_argv = place; - match = -1; - - optind++; - place = EMSG; - - if (*current_argv == '\0') { /* found "--" */ - /* - * We found an option (--), so if we skipped - * non-options, we have to permute. - */ - if (nonopt_end != -1) { - permute_args(nonopt_start, nonopt_end, - optind, nargv); - optind -= nonopt_end - nonopt_start; - } - nonopt_start = nonopt_end = -1; - return -1; - } - if ((has_equal = strchr(current_argv, '=')) != NULL) { - /* argument found (--option=arg) */ - current_argv_len = has_equal - current_argv; - has_equal++; - } else - current_argv_len = strlen(current_argv); - - for (i = 0; long_options[i].name; i++) { - /* find matching long option */ - if (strncmp(current_argv, long_options[i].name, - current_argv_len)) - continue; - - if (strlen(long_options[i].name) == - (unsigned)current_argv_len) { - /* exact match */ - match = i; - break; - } - if (match == -1) /* partial match */ - match = i; - else { - /* ambiguous abbreviation */ - if (PRINT_ERROR) - warnx(ambig, (int)current_argv_len, - current_argv); - optopt = 0; - return BADCH; - } - } - if (match != -1) { /* option found */ - if (long_options[match].has_arg == no_argument - && has_equal) { - if (PRINT_ERROR) - warnx(noarg, (int)current_argv_len, - current_argv); - /* - * XXX: GNU sets optopt to val regardless of - * flag - */ - if (long_options[match].flag == NULL) - optopt = long_options[match].val; - else - optopt = 0; - return BADARG; - } - if (long_options[match].has_arg == required_argument || - long_options[match].has_arg == optional_argument) { - if (has_equal) - optarg = has_equal; - else if (long_options[match].has_arg == - required_argument) { - /* - * optional argument doesn't use - * next nargv - */ - optarg = nargv[optind++]; - } - } - if ((long_options[match].has_arg == required_argument) - && (optarg == NULL)) { - /* - * Missing argument; leading ':' - * indicates no error should be generated - */ - if (PRINT_ERROR) - warnx(recargstring, current_argv); - /* - * XXX: GNU sets optopt to val regardless - * of flag - */ - if (long_options[match].flag == NULL) - optopt = long_options[match].val; - else - optopt = 0; - --optind; - return BADARG; - } - } else { /* unknown option */ - if (PRINT_ERROR) - warnx(illoptstring, current_argv); - optopt = 0; - return BADCH; - } - if (long_options[match].flag) { - *long_options[match].flag = long_options[match].val; - retval = 0; - } else - retval = long_options[match].val; - if (idx) - *idx = match; - } - return retval; -} diff --git a/platform/win32/msvc/external/exiv2/src/getopt_win32.h b/platform/win32/msvc/external/exiv2/src/getopt_win32.h deleted file mode 100644 index 6b6f643b7d4..00000000000 --- a/platform/win32/msvc/external/exiv2/src/getopt_win32.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (c) 1987, 1993, 1994, 1996 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef __GETOPT_H__ -#define __GETOPT_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -extern int opterr; /* if error message should be printed */ -extern int optind; /* index into parent argv vector */ -extern int optopt; /* character checked for validity */ -extern int optreset; /* reset getopt */ -extern char *optarg; /* argument associated with option */ - -int getopt (int, char * const *, const char *); - -#ifdef __cplusplus -} -#endif - -#endif /* __GETOPT_H__ */ - -#ifndef __UNISTD_GETOPT__ -#ifndef __GETOPT_LONG_H__ -#define __GETOPT_LONG_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -struct option { - const char *name; - int has_arg; - int *flag; - int val; -}; - -int getopt_long (int, char *const *, const char *, const struct option *, int *); -#ifndef HAVE_DECL_GETOPT -#define HAVE_DECL_GETOPT 1 -#endif - -#define no_argument 0 -#define required_argument 1 -#define optional_argument 2 - -#ifdef __cplusplus -} -#endif - -#endif /* __GETOPT_LONG_H__ */ -#endif /* __UNISTD_GETOPT__ */ diff --git a/platform/win32/msvc/external/exiv2/src/gifimage.cpp b/platform/win32/msvc/external/exiv2/src/gifimage.cpp deleted file mode 100644 index e15d56becbe..00000000000 --- a/platform/win32/msvc/external/exiv2/src/gifimage.cpp +++ /dev/null @@ -1,146 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: gifimage.cpp - Version: $Rev: 2681 $ - Author(s): Marco Piovanelli, Ovolab (marco) - History: 26-Feb-2007, marco: created - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: gifimage.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -//#define DEBUG 1 - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif -#include "gifimage.hpp" -#include "image.hpp" -#include "basicio.hpp" -#include "error.hpp" -#include "futils.hpp" - -// + standard includes -#include -#include -#include - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - GifImage::GifImage(BasicIo::AutoPtr io) - : Image(ImageType::gif, mdNone, io) - { - } // GifImage::GifImage - - std::string GifImage::mimeType() const - { - return "image/gif"; - } - - void GifImage::setExifData(const ExifData& /*exifData*/) - { - // Todo: implement me! - throw(Error(32, "Exif metadata", "GIF")); - } - - void GifImage::setIptcData(const IptcData& /*iptcData*/) - { - // Todo: implement me! - throw(Error(32, "IPTC metadata", "GIF")); - } - - void GifImage::setComment(const std::string& /*comment*/) - { - // not supported - throw(Error(32, "Image comment", "GIF")); - } - - void GifImage::readMetadata() - { -#ifdef DEBUG - std::cerr << "Exiv2::GifImage::readMetadata: Reading GIF file " << io_->path() << "\n"; -#endif - if (io_->open() != 0) - { - throw Error(9, io_->path(), strError()); - } - IoCloser closer(*io_); - // Ensure that this is the correct image type - if (!isGifType(*io_, true)) - { - if (io_->error() || io_->eof()) throw Error(14); - throw Error(3, "GIF"); - } - clearMetadata(); - - byte buf[4]; - if (io_->read(buf, sizeof(buf)) == sizeof(buf)) - { - pixelWidth_ = getShort(buf, littleEndian); - pixelHeight_ = getShort(buf + 2, littleEndian); - } - } // GifImage::readMetadata - - void GifImage::writeMetadata() - { - // Todo: implement me! - throw(Error(31, "GIF")); - } // GifImage::writeMetadata - - // ************************************************************************* - // free functions - Image::AutoPtr newGifInstance(BasicIo::AutoPtr io, bool /*create*/) - { - Image::AutoPtr image(new GifImage(io)); - if (!image->good()) - { - image.reset(); - } - return image; - } - - bool isGifType(BasicIo& iIo, bool advance) - { - const int32_t len = 6; - const unsigned char Gif87aId[8] = { 'G', 'I', 'F', '8', '7', 'a' }; - const unsigned char Gif89aId[8] = { 'G', 'I', 'F', '8', '9', 'a' }; - byte buf[len]; - iIo.read(buf, len); - if (iIo.error() || iIo.eof()) - { - return false; - } - bool matched = (memcmp(buf, Gif87aId, len) == 0) - || (memcmp(buf, Gif89aId, len) == 0); - if (!advance || !matched) - { - iIo.seek(-len, BasicIo::cur); - } - return matched; - } -} // namespace Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/gifimage.hpp b/platform/win32/msvc/external/exiv2/src/gifimage.hpp deleted file mode 100644 index f5faf753a78..00000000000 --- a/platform/win32/msvc/external/exiv2/src/gifimage.hpp +++ /dev/null @@ -1,135 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file gifimage.hpp - @brief GIF image, implemented using the following references: - GIF89 specification by W3C
- @version $Rev: 2681 $ - @author Marco Piovanelli, Ovolab (marco) - marco.piovanelli@pobox.com - @date 26-Feb-2007, marco: created - */ -#ifndef GIFIMAGE_HPP_ -#define GIFIMAGE_HPP_ - -// ***************************************************************************** -// included header files -#include "exif.hpp" -#include "iptc.hpp" -#include "image.hpp" -#include "types.hpp" - -// + standard includes -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class definitions - - // Add GIF to the supported image formats - namespace ImageType { - const int gif = 11; //!< GIF image type (see class GifImage) - } - - /*! - @brief Class to access raw GIF images. Exif/IPTC metadata are supported - directly. - */ - class EXIV2API GifImage : public Image { - //! @name NOT Implemented - //@{ - //! Copy constructor - GifImage(const GifImage& rhs); - //! Assignment operator - GifImage& operator=(const GifImage& rhs); - //@} - - public: - //! @name Creators - //@{ - /*! - @brief Constructor to open a GIF image. Since the - constructor can not return a result, callers should check the - good() method after object construction to determine success - or failure. - @param io An auto-pointer that owns a BasicIo instance used for - reading and writing image metadata. \b Important: The constructor - takes ownership of the passed in BasicIo instance through the - auto-pointer. Callers should not continue to use the BasicIo - instance after it is passed to this method. Use the Image::io() - method to get a temporary reference. - */ - GifImage(BasicIo::AutoPtr io); - //@} - - //! @name Manipulators - //@{ - void readMetadata(); - /*! - @brief Todo: Write metadata back to the image. This method is not - yet(?) implemented. Calling it will throw an Error(31). - */ - void writeMetadata(); - /*! - @brief Todo: Not supported yet(?). Calling this function will throw - an instance of Error(32). - */ - void setExifData(const ExifData& exifData); - /*! - @brief Todo: Not supported yet(?). Calling this function will throw - an instance of Error(32). - */ - void setIptcData(const IptcData& iptcData); - /*! - @brief Not supported. Calling this function will throw an instance - of Error(32). - */ - void setComment(const std::string& comment); - //@} - - //! @name Accessors - //@{ - std::string mimeType() const; - //@} - - }; // class GifImage - -// ***************************************************************************** -// template, inline and free functions - - // These could be static private functions on Image subclasses but then - // ImageFactory needs to be made a friend. - /*! - @brief Create a new GifImage instance and return an auto-pointer to it. - Caller owns the returned object and the auto-pointer ensures that - it will be deleted. - */ - EXIV2API Image::AutoPtr newGifInstance(BasicIo::AutoPtr io, bool create); - - //! Check if the file iIo is a GIF image. - EXIV2API bool isGifType(BasicIo& iIo, bool advance); - -} // namespace Exiv2 - -#endif // #ifndef GIFIMAGE_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/i18n.h b/platform/win32/msvc/external/exiv2/src/i18n.h deleted file mode 100644 index 6f4a36f3a1a..00000000000 --- a/platform/win32/msvc/external/exiv2/src/i18n.h +++ /dev/null @@ -1,54 +0,0 @@ -/* **************************************************************** -*- C -*- */ -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: i18n.h - Brief: i18n definitions. Do not use. This is an Exiv2 internal header. - Version: $Rev: 2681 $ - Author(s): Gilles Caulier (gc) - History: 01-Nov-06, gc: created - */ -#ifndef I18N_H_ -#define I18N_H_ - -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -/* NLS can be disabled through the configure --disable-nls option. */ -#ifdef EXV_ENABLE_NLS -# include - -// Definition is in types.cpp -EXIV2API const char* _exvGettext(const char* str); - -# define _(String) _exvGettext(String) -# define N_(String) String - -#else /* NLS is disabled */ - -# define _(String) (String) -# define N_(String) String - -#endif /* EXV_ENABLE_NLS */ - -#endif /* I18N_H_ */ diff --git a/platform/win32/msvc/external/exiv2/src/image.cpp b/platform/win32/msvc/external/exiv2/src/image.cpp deleted file mode 100644 index 7d12c1677c3..00000000000 --- a/platform/win32/msvc/external/exiv2/src/image.cpp +++ /dev/null @@ -1,517 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: image.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - Brad Schick (brad) - History: 26-Jan-04, ahu: created - 11-Feb-04, ahu: isolated as a component - 19-Jul-04, brad: revamped to be more flexible and support Iptc - 15-Jan-05, brad: inside-out design changes - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: image.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#include "image.hpp" -#include "error.hpp" -#include "futils.hpp" - -#include "cr2image.hpp" -#include "crwimage.hpp" -#include "epsimage.hpp" -#include "jpgimage.hpp" -#include "mrwimage.hpp" -#ifdef EXV_HAVE_LIBZ -# include "pngimage.hpp" -#endif // EXV_HAVE_LIBZ -#include "rafimage.hpp" -#include "tiffimage.hpp" -#include "orfimage.hpp" -#include "gifimage.hpp" -#include "psdimage.hpp" -#include "tgaimage.hpp" -#include "bmpimage.hpp" -#include "jp2image.hpp" -#include "rw2image.hpp" -#include "pgfimage.hpp" -#include "xmpsidecar.hpp" - -// + standard includes -#include -#include -#include -#include -#include -#include -#ifdef _MSC_VER -# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) -#endif -#ifdef EXV_HAVE_UNISTD_H -# include // stat -#endif - -// ***************************************************************************** -namespace { - - using namespace Exiv2; - - //! Struct for storing image types and function pointers. - struct Registry { - //! Comparison operator to compare a Registry structure with an image type - bool operator==(const int& imageType) const { return imageType == imageType_; } - - // DATA - int imageType_; - NewInstanceFct newInstance_; - IsThisTypeFct isThisType_; - AccessMode exifSupport_; - AccessMode iptcSupport_; - AccessMode xmpSupport_; - AccessMode commentSupport_; - }; - - const Registry registry[] = { - //image type creation fct type check Exif mode IPTC mode XMP mode Comment mode - //--------------- --------------- ---------- ----------- ----------- ----------- ------------ - { ImageType::jpeg, newJpegInstance, isJpegType, amReadWrite, amReadWrite, amReadWrite, amReadWrite }, - { ImageType::exv, newExvInstance, isExvType, amReadWrite, amReadWrite, amReadWrite, amReadWrite }, - { ImageType::cr2, newCr2Instance, isCr2Type, amRead, amRead, amRead, amNone }, - { ImageType::crw, newCrwInstance, isCrwType, amReadWrite, amNone, amNone, amReadWrite }, - { ImageType::mrw, newMrwInstance, isMrwType, amRead, amRead, amRead, amNone }, - { ImageType::tiff, newTiffInstance, isTiffType, amReadWrite, amReadWrite, amReadWrite, amNone }, - { ImageType::dng, newTiffInstance, isTiffType, amReadWrite, amReadWrite, amReadWrite, amNone }, - { ImageType::nef, newTiffInstance, isTiffType, amReadWrite, amReadWrite, amReadWrite, amNone }, - { ImageType::pef, newTiffInstance, isTiffType, amReadWrite, amReadWrite, amReadWrite, amNone }, - { ImageType::arw, newTiffInstance, isTiffType, amRead, amRead, amRead, amNone }, - { ImageType::rw2, newRw2Instance, isRw2Type, amRead, amRead, amRead, amNone }, - { ImageType::sr2, newTiffInstance, isTiffType, amRead, amRead, amRead, amNone }, - { ImageType::srw, newTiffInstance, isTiffType, amReadWrite, amReadWrite, amReadWrite, amNone }, - { ImageType::orf, newOrfInstance, isOrfType, amReadWrite, amReadWrite, amReadWrite, amNone }, -#ifdef EXV_HAVE_LIBZ - { ImageType::png, newPngInstance, isPngType, amReadWrite, amReadWrite, amReadWrite, amReadWrite }, -#endif // EXV_HAVE_LIBZ - { ImageType::pgf, newPgfInstance, isPgfType, amReadWrite, amReadWrite, amReadWrite, amReadWrite }, - { ImageType::raf, newRafInstance, isRafType, amRead, amRead, amRead, amNone }, - { ImageType::eps, newEpsInstance, isEpsType, amNone, amNone, amReadWrite, amNone }, - { ImageType::xmp, newXmpInstance, isXmpType, amReadWrite, amReadWrite, amReadWrite, amNone }, - { ImageType::gif, newGifInstance, isGifType, amNone, amNone, amNone, amNone }, - { ImageType::psd, newPsdInstance, isPsdType, amRead, amRead, amRead, amNone }, - { ImageType::tga, newTgaInstance, isTgaType, amNone, amNone, amNone, amNone }, - { ImageType::bmp, newBmpInstance, isBmpType, amNone, amNone, amNone, amNone }, - { ImageType::jp2, newJp2Instance, isJp2Type, amReadWrite, amReadWrite, amReadWrite, amNone }, - // End of list marker - { ImageType::none, 0, 0, amNone, amNone, amNone, amNone } - }; - -} - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - Image::Image(int imageType, - uint16_t supportedMetadata, - BasicIo::AutoPtr io) - : io_(io), - pixelWidth_(0), - pixelHeight_(0), - imageType_(imageType), - supportedMetadata_(supportedMetadata), -#ifdef EXV_HAVE_XMP_TOOLKIT - writeXmpFromPacket_(false), -#else - writeXmpFromPacket_(true), -#endif - byteOrder_(invalidByteOrder) - { - } - - Image::~Image() - { - } - - void Image::clearMetadata() - { - clearExifData(); - clearIptcData(); - clearXmpPacket(); - clearXmpData(); - clearComment(); - } - - ExifData& Image::exifData() - { - return exifData_; - } - - IptcData& Image::iptcData() - { - return iptcData_; - } - - XmpData& Image::xmpData() - { - return xmpData_; - } - - std::string& Image::xmpPacket() - { - return xmpPacket_; - } - - void Image::setMetadata(const Image& image) - { - if (checkMode(mdExif) & amWrite) { - setExifData(image.exifData()); - } - if (checkMode(mdIptc) & amWrite) { - setIptcData(image.iptcData()); - } - if (checkMode(mdXmp) & amWrite) { - setXmpPacket(image.xmpPacket()); - setXmpData(image.xmpData()); - } - if (checkMode(mdComment) & amWrite) { - setComment(image.comment()); - } - } - - void Image::clearExifData() - { - exifData_.clear(); - } - - void Image::setExifData(const ExifData& exifData) - { - exifData_ = exifData; - } - - void Image::clearIptcData() - { - iptcData_.clear(); - } - - void Image::setIptcData(const IptcData& iptcData) - { - iptcData_ = iptcData; - } - - void Image::clearXmpPacket() - { - xmpPacket_.clear(); - writeXmpFromPacket(true); - } - - void Image::setXmpPacket(const std::string& xmpPacket) - { - xmpPacket_ = xmpPacket; - writeXmpFromPacket(true); - } - - void Image::clearXmpData() - { - xmpData_.clear(); - writeXmpFromPacket(false); - } - - void Image::setXmpData(const XmpData& xmpData) - { - xmpData_ = xmpData; - writeXmpFromPacket(false); - } - - void Image::writeXmpFromPacket(bool flag) - { -#ifdef EXV_HAVE_XMP_TOOLKIT - writeXmpFromPacket_ = flag; -#endif - } - - void Image::clearComment() - { - comment_.erase(); - } - - void Image::setComment(const std::string& comment) - { - comment_ = comment; - } - - void Image::setByteOrder(ByteOrder byteOrder) - { - byteOrder_ = byteOrder; - } - - ByteOrder Image::byteOrder() const - { - return byteOrder_; - } - - int Image::pixelWidth() const - { - return pixelWidth_; - } - - int Image::pixelHeight() const - { - return pixelHeight_; - } - - const ExifData& Image::exifData() const - { - return exifData_; - } - - const IptcData& Image::iptcData() const - { - return iptcData_; - } - - const XmpData& Image::xmpData() const - { - return xmpData_; - } - - std::string Image::comment() const - { - return comment_; - } - - const std::string& Image::xmpPacket() const - { - return xmpPacket_; - } - - BasicIo& Image::io() const - { - return *io_; - } - - bool Image::writeXmpFromPacket() const - { - return writeXmpFromPacket_; - } - - const NativePreviewList& Image::nativePreviews() const - { - return nativePreviews_; - } - - bool Image::good() const - { - if (io_->open() != 0) return false; - IoCloser closer(*io_); - return ImageFactory::checkType(imageType_, *io_, false); - } - - bool Image::supportsMetadata(MetadataId metadataId) const - { - return (supportedMetadata_ & metadataId) != 0; - } - - AccessMode Image::checkMode(MetadataId metadataId) const - { - return ImageFactory::checkMode(imageType_, metadataId); - } - - AccessMode ImageFactory::checkMode(int type, MetadataId metadataId) - { - const Registry* r = find(registry, type); - if (!r) throw Error(13, type); - AccessMode am = amNone; - switch (metadataId) { - case mdNone: - break; - case mdExif: - am = r->exifSupport_; - break; - case mdIptc: - am = r->iptcSupport_; - break; - case mdXmp: - am = r->xmpSupport_; - break; - case mdComment: - am = r->commentSupport_; - break; - // no default: let the compiler complain - } - return am; - } - - bool ImageFactory::checkType(int type, BasicIo& io, bool advance) - { - const Registry* r = find(registry, type); - if (0 != r) { - return r->isThisType_(io, advance); - } - return false; - } // ImageFactory::checkType - - int ImageFactory::getType(const std::string& path) - { - FileIo fileIo(path); - return getType(fileIo); - } - -#ifdef EXV_UNICODE_PATH - int ImageFactory::getType(const std::wstring& wpath) - { - FileIo fileIo(wpath); - return getType(fileIo); - } - -#endif - int ImageFactory::getType(const byte* data, long size) - { - MemIo memIo(data, size); - return getType(memIo); - } - - int ImageFactory::getType(BasicIo& io) - { - if (io.open() != 0) return ImageType::none; - IoCloser closer(io); - for (unsigned int i = 0; registry[i].imageType_ != ImageType::none; ++i) { - if (registry[i].isThisType_(io, false)) { - return registry[i].imageType_; - } - } - return ImageType::none; - } // ImageFactory::getType - - Image::AutoPtr ImageFactory::open(const std::string& path) - { - BasicIo::AutoPtr io(new FileIo(path)); - Image::AutoPtr image = open(io); // may throw - if (image.get() == 0) throw Error(11, path); - return image; - } - -#ifdef EXV_UNICODE_PATH - Image::AutoPtr ImageFactory::open(const std::wstring& wpath) - { - BasicIo::AutoPtr io(new FileIo(wpath)); - Image::AutoPtr image = open(io); // may throw - if (image.get() == 0) throw WError(11, wpath); - return image; - } - -#endif - Image::AutoPtr ImageFactory::open(const byte* data, long size) - { - BasicIo::AutoPtr io(new MemIo(data, size)); - Image::AutoPtr image = open(io); // may throw - if (image.get() == 0) throw Error(12); - return image; - } - - Image::AutoPtr ImageFactory::open(BasicIo::AutoPtr io) - { - if (io->open() != 0) { - throw Error(9, io->path(), strError()); - } - for (unsigned int i = 0; registry[i].imageType_ != ImageType::none; ++i) { - if (registry[i].isThisType_(*io, false)) { - return registry[i].newInstance_(io, false); - } - } - return Image::AutoPtr(); - } // ImageFactory::open - - Image::AutoPtr ImageFactory::create(int type, - const std::string& path) - { - std::auto_ptr fileIo(new FileIo(path)); - // Create or overwrite the file, then close it - if (fileIo->open("w+b") != 0) { - throw Error(10, path, "w+b", strError()); - } - fileIo->close(); - BasicIo::AutoPtr io(fileIo); - Image::AutoPtr image = create(type, io); - if (image.get() == 0) throw Error(13, type); - return image; - } - -#ifdef EXV_UNICODE_PATH - Image::AutoPtr ImageFactory::create(int type, - const std::wstring& wpath) - { - std::auto_ptr fileIo(new FileIo(wpath)); - // Create or overwrite the file, then close it - if (fileIo->open("w+b") != 0) { - throw WError(10, wpath, "w+b", strError().c_str()); - } - fileIo->close(); - BasicIo::AutoPtr io(fileIo); - Image::AutoPtr image = create(type, io); - if (image.get() == 0) throw Error(13, type); - return image; - } - -#endif - Image::AutoPtr ImageFactory::create(int type) - { - BasicIo::AutoPtr io(new MemIo); - Image::AutoPtr image = create(type, io); - if (image.get() == 0) throw Error(13, type); - return image; - } - - Image::AutoPtr ImageFactory::create(int type, - BasicIo::AutoPtr io) - { - // BasicIo instance does not need to be open - const Registry* r = find(registry, type); - if (0 != r) { - return r->newInstance_(io, true); - } - return Image::AutoPtr(); - } // ImageFactory::create - -// ***************************************************************************** -// template, inline and free functions - - void append(Blob& blob, const byte* buf, uint32_t len) - { - if (len != 0) { - assert(buf != 0); - Blob::size_type size = blob.size(); - if (blob.capacity() - size < len) { - blob.reserve(size + 65536); - } - blob.resize(size + len); - std::memcpy(&blob[size], buf, len); - } - } // append - -} // namespace Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/image.hpp b/platform/win32/msvc/external/exiv2/src/image.hpp deleted file mode 100644 index 61798752531..00000000000 --- a/platform/win32/msvc/external/exiv2/src/image.hpp +++ /dev/null @@ -1,617 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file image.hpp - @brief Class Image, defining the interface for all Image subclasses. - @version $Rev: 2701 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @author Brad Schick (brad) - brad@robotbattle.com - @date 09-Jan-04, ahu: created
- 11-Feb-04, ahu: isolated as a component
- 19-Jul-04, brad: revamped to be more flexible and support IPTC
- 15-Jan-05, brad: inside-out design changes - */ -#ifndef IMAGE_HPP_ -#define IMAGE_HPP_ - -// ***************************************************************************** -// included header files -#include "types.hpp" -#include "basicio.hpp" -#include "exif.hpp" -#include "iptc.hpp" -#include "xmp.hpp" - -// + standard includes -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class definitions - - //! Supported image formats - namespace ImageType { - const int none = 0; //!< Not an image - } - - //! Native preview information. This is meant to be used only by the PreviewManager. - struct NativePreview { - long position_; //!< Position - uint32_t size_; //!< Size - uint32_t width_; //!< Width - uint32_t height_; //!< Height - std::string filter_; //!< Filter - std::string mimeType_; //!< MIME type - }; - - //! List of native previews. This is meant to be used only by the PreviewManager. - typedef std::vector NativePreviewList; - - /*! - @brief Abstract base class defining the interface for an image. This is - the top-level interface to the Exiv2 library. - - Image has containers to store image metadata and subclasses implement - read and save metadata from and to specific image formats.
- Most client apps will obtain an Image instance by calling a static - ImageFactory method. The Image class can then be used to to read, write, - and save metadata. - */ - class EXIV2API Image { - public: - //! Image auto_ptr type - typedef std::auto_ptr AutoPtr; - - //! @name Creators - //@{ - /*! - @brief Constructor taking the image type, a bitmap of the supported - metadata types and an auto-pointer that owns an IO instance. - See subclass constructor doc. - */ - Image(int imageType, - uint16_t supportedMetadata, - BasicIo::AutoPtr io); - //! Virtual Destructor - virtual ~Image(); - //@} - - //! @name Manipulators - //@{ - /*! - @brief Read all metadata supported by a specific image format from the - image. Before this method is called, the image metadata will be - cleared. - - This method returns success even if no metadata is found in the - image. Callers must therefore check the size of individual metadata - types before accessing the data. - - @throw Error if opening or reading of the file fails or the image - data is not valid (does not look like data of the specific image - type). - */ - virtual void readMetadata() =0; - /*! - @brief Write metadata back to the image. - - All existing metadata sections in the image are either created, - replaced, or erased. If values for a given metadata type have been - assigned, a section for that metadata type will either be created or - replaced. If no values have been assigned to a given metadata type, - any exists section for that metadata type will be removed from the - image. - - @throw Error if the operation fails - */ - virtual void writeMetadata() =0; - /*! - @brief Assign new Exif data. The new Exif data is not written - to the image until the writeMetadata() method is called. - @param exifData An ExifData instance holding Exif data to be copied - */ - virtual void setExifData(const ExifData& exifData); - /*! - @brief Erase any buffered Exif data. Exif data is not removed from - the actual image until the writeMetadata() method is called. - */ - virtual void clearExifData(); - /*! - @brief Assign new IPTC data. The new IPTC data is not written - to the image until the writeMetadata() method is called. - @param iptcData An IptcData instance holding IPTC data to be copied - */ - virtual void setIptcData(const IptcData& iptcData); - /*! - @brief Erase any buffered IPTC data. IPTC data is not removed from - the actual image until the writeMetadata() method is called. - */ - virtual void clearIptcData(); - /*! - @brief Assign a raw XMP packet. The new XMP packet is not written - to the image until the writeMetadata() method is called. - - Subsequent calls to writeMetadata() write the XMP packet from - the buffered raw XMP packet rather than from buffered parsed XMP - data. In order to write from parsed XMP data again, use - either writeXmpFromPacket(false) or setXmpData(). - - @param xmpPacket A string containing the raw XMP packet. - */ - virtual void setXmpPacket(const std::string& xmpPacket); - /*! - @brief Erase the buffered XMP packet. XMP data is not removed from - the actual image until the writeMetadata() method is called. - - This has the same effect as clearXmpData() but operates on the - buffered raw XMP packet only, not the parsed XMP data. - - Subsequent calls to writeMetadata() write the XMP packet from - the buffered raw XMP packet rather than from buffered parsed XMP - data. In order to write from parsed XMP data again, use - either writeXmpFromPacket(false) or setXmpData(). - */ - virtual void clearXmpPacket(); - /*! - @brief Assign new XMP data. The new XMP data is not written - to the image until the writeMetadata() method is called. - - Subsequent calls to writeMetadata() encode the XMP data to - a raw XMP packet and write the newly encoded packet to the image. - In the process, the buffered raw XMP packet is updated. - In order to write directly from the raw XMP packet, use - writeXmpFromPacket(true) or setXmpPacket(). - - @param xmpData An XmpData instance holding XMP data to be copied - */ - virtual void setXmpData(const XmpData& xmpData); - /*! - @brief Erase any buffered XMP data. XMP data is not removed from - the actual image until the writeMetadata() method is called. - - This has the same effect as clearXmpPacket() but operates on the - buffered parsed XMP data. - - Subsequent calls to writeMetadata() encode the XMP data to - a raw XMP packet and write the newly encoded packet to the image. - In the process, the buffered raw XMP packet is updated. - In order to write directly from the raw XMP packet, use - writeXmpFromPacket(true) or setXmpPacket(). - */ - virtual void clearXmpData(); - /*! - @brief Set the image comment. The new comment is not written - to the image until the writeMetadata() method is called. - @param comment String containing comment. - */ - virtual void setComment(const std::string& comment); - /*! - @brief Erase any buffered comment. Comment is not removed - from the actual image until the writeMetadata() method is called. - */ - virtual void clearComment(); - /*! - @brief Copy all existing metadata from source Image. The data is - copied into internal buffers and is not written to the image - until the writeMetadata() method is called. - @param image Metadata source. All metadata types are copied. - */ - virtual void setMetadata(const Image& image); - /*! - @brief Erase all buffered metadata. Metadata is not removed - from the actual image until the writeMetadata() method is called. - */ - virtual void clearMetadata(); - /*! - @brief Returns an ExifData instance containing currently buffered - Exif data. - - The contained Exif data may have been read from the image by - a previous call to readMetadata() or added directly. The Exif - data in the returned instance will be written to the image when - writeMetadata() is called. - - @return modifiable ExifData instance containing Exif values - */ - virtual ExifData& exifData(); - /*! - @brief Returns an IptcData instance containing currently buffered - IPTC data. - - The contained IPTC data may have been read from the image by - a previous call to readMetadata() or added directly. The IPTC - data in the returned instance will be written to the image when - writeMetadata() is called. - - @return modifiable IptcData instance containing IPTC values - */ - virtual IptcData& iptcData(); - /*! - @brief Returns an XmpData instance containing currently buffered - XMP data. - - The contained XMP data may have been read from the image by - a previous call to readMetadata() or added directly. The XMP - data in the returned instance will be written to the image when - writeMetadata() is called. - - @return modifiable XmpData instance containing XMP values - */ - virtual XmpData& xmpData(); - /*! - @brief Return a modifiable reference to the raw XMP packet. - */ - virtual std::string& xmpPacket(); - /*! - @brief Determine the source when writing XMP. - - Depending on the setting of this flag, writeMetadata() writes - XMP from the buffered raw XMP packet or from parsed XMP data. - The default is to write from parsed XMP data. The switch is also - set by all functions to set and clear the buffered raw XMP packet - and parsed XMP data, so using this function should usually not be - necessary. - - If %Exiv2 was compiled without XMP support, the default for this - flag is true and it will never be changed in order to preserve - access to the raw XMP packet. - */ - void writeXmpFromPacket(bool flag); - /*! - @brief Set the byte order to encode the Exif metadata in. - - The setting is only used when new Exif metadata is created and may - not be applicable at all for some image formats. If the target image - already contains Exif metadata, the byte order of the existing data - is used. If byte order is not set when writeMetadata() is called, - little-endian byte order (II) is used by default. - */ - void setByteOrder(ByteOrder byteOrder); - //@} - - //! @name Accessors - //@{ - /*! - @brief Return the byte order in which the Exif metadata of the image is - encoded. Initially, it is not set (\em invalidByteOrder). - */ - ByteOrder byteOrder() const; - /*! - @brief Check if the Image instance is valid. Use after object - construction. - @return true if the Image is in a valid state. - */ - bool good() const; - /*! - @brief Return the MIME type of the image. - - @note For each supported image format, the library knows only one MIME - type. This may not be the most specific MIME type for that format. In - particular, several RAW formats are variants of the TIFF format with - the same magic as TIFF itself. Class TiffImage handles most of them - and thus they all have MIME type "image/tiff", although a more - specific MIME type may exist (e.g., "image/x-nikon-nef"). - */ - virtual std::string mimeType() const =0; - /*! - @brief Return the pixel width of the image. - */ - virtual int pixelWidth() const; - /*! - @brief Return the pixel height of the image. - */ - virtual int pixelHeight() const; - /*! - @brief Returns an ExifData instance containing currently buffered - Exif data. - - The Exif data may have been read from the image by - a previous call to readMetadata() or added directly. The Exif - data in the returned instance will be written to the image when - writeMetadata() is called. - - @return read only ExifData instance containing Exif values - */ - virtual const ExifData& exifData() const; - /*! - @brief Returns an IptcData instance containing currently buffered - IPTC data. - - The contained IPTC data may have been read from the image by - a previous call to readMetadata() or added directly. The IPTC - data in the returned instance will be written to the image when - writeMetadata() is called. - - @return modifiable IptcData instance containing IPTC values - */ - virtual const IptcData& iptcData() const; - /*! - @brief Returns an XmpData instance containing currently buffered - XMP data. - - The contained XMP data may have been read from the image by - a previous call to readMetadata() or added directly. The XMP - data in the returned instance will be written to the image when - writeMetadata() is called. - - @return modifiable XmpData instance containing XMP values - */ - virtual const XmpData& xmpData() const; - /*! - @brief Return a copy of the image comment. May be an empty string. - */ - virtual std::string comment() const; - /*! - @brief Return the raw XMP packet as a string. - */ - virtual const std::string& xmpPacket() const; - /*! - @brief Return a reference to the BasicIo instance being used for Io. - - This refence is particularly useful to reading the results of - operations on a MemIo instance. For example after metadata has - been modified and the writeMetadata() method has been called, - this method can be used to get access to the modified image. - - @return BasicIo instance that can be used to read or write image - data directly. - @note If the returned BasicIo is used to write to the image, the - Image class will not see those changes until the readMetadata() - method is called. - */ - virtual BasicIo& io() const; - /*! - @brief Returns the access mode, i.e., the metadata functions, which - this image supports for the metadata type \em metadataId. - @param metadataId The metadata identifier. - @return Access mode for the requested image type and metadata identifier. - */ - AccessMode checkMode(MetadataId metadataId) const; - /*! - @brief Check if image supports a particular type of metadata. - This method is deprecated. Use checkMode() instead. - */ - bool supportsMetadata(MetadataId metadataId) const; - //! Return the flag indicating the source when writing XMP metadata. - bool writeXmpFromPacket() const; - //! Return list of native previews. This is meant to be used only by the PreviewManager. - const NativePreviewList& nativePreviews() const; - //@} - - protected: - // DATA - BasicIo::AutoPtr io_; //!< Image data IO pointer - ExifData exifData_; //!< Exif data container - IptcData iptcData_; //!< IPTC data container - XmpData xmpData_; //!< XMP data container - std::string comment_; //!< User comment - std::string xmpPacket_; //!< XMP packet - int pixelWidth_; //!< image pixel width - int pixelHeight_; //!< image pixel height - NativePreviewList nativePreviews_; //!< list of native previews - - private: - //! @name NOT implemented - //@{ - //! Copy constructor - Image(const Image& rhs); - //! Assignment operator - Image& operator=(const Image& rhs); - //@} - - // DATA - const int imageType_; //!< Image type - const uint16_t supportedMetadata_; //!< Bitmap with all supported metadata types - bool writeXmpFromPacket_;//!< Determines the source when writing XMP - ByteOrder byteOrder_; //!< Byte order - - }; // class Image - - //! Type for function pointer that creates new Image instances - typedef Image::AutoPtr (*NewInstanceFct)(BasicIo::AutoPtr io, bool create); - //! Type for function pointer that checks image types - typedef bool (*IsThisTypeFct)(BasicIo& iIo, bool advance); - - /*! - @brief Returns an Image instance of the specified type. - - The factory is implemented as a static class. - */ - class EXIV2API ImageFactory { - friend bool Image::good() const; - public: - /*! - @brief Create an Image subclass of the appropriate type by reading - the specified file. %Image type is derived from the file - contents. - @param path %Image file. The contents of the file are tested to - determine the image type. File extension is ignored. - @return An auto-pointer that owns an Image instance whose type - matches that of the file. - @throw Error If opening the file fails or it contains data of an - unknown image type. - */ - static Image::AutoPtr open(const std::string& path); -#ifdef EXV_UNICODE_PATH - /*! - @brief Like open() but accepts a unicode path in an std::wstring. - @note This function is only available on Windows. - */ - static Image::AutoPtr open(const std::wstring& wpath); -#endif - /*! - @brief Create an Image subclass of the appropriate type by reading - the provided memory. %Image type is derived from the memory - contents. - @param data Pointer to a data buffer containing an image. The contents - of the memory are tested to determine the image type. - @param size Number of bytes pointed to by \em data. - @return An auto-pointer that owns an Image instance whose type - matches that of the data buffer. - @throw Error If the memory contains data of an unknown image type. - */ - static Image::AutoPtr open(const byte* data, long size); - /*! - @brief Create an Image subclass of the appropriate type by reading - the provided BasicIo instance. %Image type is derived from the - data provided by \em io. The passed in \em io instance is - (re)opened by this method. - @param io An auto-pointer that owns a BasicIo instance that provides - image data. The contents of the image data are tested to determine - the type. - @note This method takes ownership of the passed - in BasicIo instance through the auto-pointer. Callers should not - continue to use the BasicIo instance after it is passed to this method. - Use the Image::io() method to get a temporary reference. - @return An auto-pointer that owns an Image instance whose type - matches that of the \em io data. If no image type could be - determined, the pointer is 0. - @throw Error If opening the BasicIo fails - */ - static Image::AutoPtr open(BasicIo::AutoPtr io); - /*! - @brief Create an Image subclass of the requested type by creating a - new image file. If the file already exists, it will be overwritten. - @param type Type of the image to be created. - @param path %Image file to create. File extension is ignored. - @return An auto-pointer that owns an Image instance of the requested - type. - @throw Error If the image type is not supported. - */ - static Image::AutoPtr create(int type, const std::string& path); -#ifdef EXV_UNICODE_PATH - /*! - @brief Like create() but accepts a unicode path in an std::wstring. - @note This function is only available on Windows. - */ - static Image::AutoPtr create(int type, const std::wstring& wpath); -#endif - /*! - @brief Create an Image subclass of the requested type by creating a - new image in memory. - @param type Type of the image to be created. - @return An auto-pointer that owns an Image instance of the requested - type. - @throw Error If the image type is not supported - */ - static Image::AutoPtr create(int type); - /*! - @brief Create an Image subclass of the requested type by writing a - new image to a BasicIo instance. If the BasicIo instance already - contains data, it will be overwritten. - @param type Type of the image to be created. - @param io An auto-pointer that owns a BasicIo instance that will - be written to when creating a new image. - @note This method takes ownership of the passed in BasicIo instance - through the auto-pointer. Callers should not continue to use the - BasicIo instance after it is passed to this method. Use the - Image::io() method to get a temporary reference. - @return An auto-pointer that owns an Image instance of the requested - type. If the image type is not supported, the pointer is 0. - */ - static Image::AutoPtr create(int type, BasicIo::AutoPtr io); - /*! - @brief Returns the image type of the provided file. - @param path %Image file. The contents of the file are tested to - determine the image type. File extension is ignored. - @return %Image type or Image::none if the type is not recognized. - */ - static int getType(const std::string& path); -#ifdef EXV_UNICODE_PATH - /*! - @brief Like getType() but accepts a unicode path in an std::wstring. - @note This function is only available on Windows. - */ - static int getType(const std::wstring& wpath); -#endif - /*! - @brief Returns the image type of the provided data buffer. - @param data Pointer to a data buffer containing an image. The contents - of the memory are tested to determine the image type. - @param size Number of bytes pointed to by \em data. - @return %Image type or Image::none if the type is not recognized. - */ - static int getType(const byte* data, long size); - /*! - @brief Returns the image type of data provided by a BasicIo instance. - The passed in \em io instance is (re)opened by this method. - @param io A BasicIo instance that provides image data. The contents - of the image data are tested to determine the type. - @return %Image type or Image::none if the type is not recognized. - */ - static int getType(BasicIo& io); - /*! - @brief Returns the access mode or supported metadata functions for an - image type and a metadata type. - @param type The image type. - @param metadataId The metadata identifier. - @return Access mode for the requested image type and metadata identifier. - @throw Error(13) if the image type is not supported. - */ - static AccessMode checkMode(int type, MetadataId metadataId); - /*! - @brief Determine if the content of \em io is an image of \em type. - - The \em advance flag determines if the read position in the - stream is moved (see below). This applies only if the type - matches and the function returns true. If the type does not - match, the stream position is not changed. However, if - reading from the stream fails, the stream position is - undefined. Consult the stream state to obtain more - information in this case. - - @param type Type of the image. - @param io BasicIo instance to read from. - @param advance Flag indicating whether the position of the io - should be advanced by the number of characters read to - analyse the data (true) or left at its original - position (false). This applies only if the type matches. - @return true if the data matches the type of this class;
- false if the data does not match - */ - static bool checkType(int type, BasicIo& io, bool advance); - - private: - //! @name Creators - //@{ - //! Prevent construction: not implemented. - ImageFactory(); - //! Prevent copy construction: not implemented. - ImageFactory(const ImageFactory& rhs); - //@} - - }; // class ImageFactory - -// ***************************************************************************** -// template, inline and free functions - - //! Append \em len bytes pointed to by \em buf to \em blob. - void append(Exiv2::Blob& blob, const byte* buf, uint32_t len); - -} // namespace Exiv2 - -#endif // #ifndef IMAGE_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/iptc.cpp b/platform/win32/msvc/external/exiv2/src/iptc.cpp deleted file mode 100644 index 74c0cf6d0c0..00000000000 --- a/platform/win32/msvc/external/exiv2/src/iptc.cpp +++ /dev/null @@ -1,556 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: iptc.cpp - Version: $Rev: 2681 $ - Author(s): Brad Schick (brad) - History: 31-July-04, brad: created - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: iptc.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#include "iptc.hpp" -#include "types.hpp" -#include "error.hpp" -#include "value.hpp" -#include "datasets.hpp" -#include "jpgimage.hpp" - -// + standard includes -#include -#include -#include - -// ***************************************************************************** -namespace { - /*! - @brief Read a single dataset payload and create a new metadata entry. - - @param iptcData IPTC metadata container to add the dataset to - @param dataSet DataSet number - @param record Record Id - @param data Pointer to the first byte of dataset payload - @param sizeData Length in bytes of dataset payload - @return 0 if successful. - */ - int readData( - Exiv2::IptcData& iptcData, - uint16_t dataSet, - uint16_t record, - const Exiv2::byte* data, - uint32_t sizeData - ); - - //! Unary predicate that matches an Iptcdatum with given record and dataset - class FindIptcdatum { - public: - //! Constructor, initializes the object with the record and dataset id - FindIptcdatum(uint16_t dataset, uint16_t record) - : dataset_(dataset), record_(record) {} - /*! - @brief Returns true if the record and dataset id of the argument - Iptcdatum is equal to that of the object. - */ - bool operator()(const Exiv2::Iptcdatum& iptcdatum) const - { - return dataset_ == iptcdatum.tag() && record_ == iptcdatum.record(); - } - - private: - // DATA - uint16_t dataset_; - uint16_t record_; - - }; // class FindIptcdatum -} - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - Iptcdatum::Iptcdatum(const IptcKey& key, - const Value* pValue) - : key_(key.clone()) - { - if (pValue) value_ = pValue->clone(); - } - - Iptcdatum::Iptcdatum(const Iptcdatum& rhs) - : Metadatum(rhs) - { - if (rhs.key_.get() != 0) key_ = rhs.key_->clone(); // deep copy - if (rhs.value_.get() != 0) value_ = rhs.value_->clone(); // deep copy - } - - Iptcdatum::~Iptcdatum() - { - } - - long Iptcdatum::copy(byte* buf, ByteOrder byteOrder) const - { - return value_.get() == 0 ? 0 : value_->copy(buf, byteOrder); - } - - std::ostream& Iptcdatum::write(std::ostream& os, const ExifData*) const - { - return os << value(); - } - - std::string Iptcdatum::key() const - { - return key_.get() == 0 ? "" : key_->key(); - } - - std::string Iptcdatum::recordName() const - { - return key_.get() == 0 ? "" : key_->recordName(); - } - - uint16_t Iptcdatum::record() const - { - return key_.get() == 0 ? 0 : key_->record(); - } - - const char* Iptcdatum::familyName() const - { - return key_.get() == 0 ? "" : key_->familyName(); - } - - std::string Iptcdatum::groupName() const - { - return key_.get() == 0 ? "" : key_->groupName(); - } - - std::string Iptcdatum::tagName() const - { - return key_.get() == 0 ? "" : key_->tagName(); - } - - std::string Iptcdatum::tagLabel() const - { - return key_.get() == 0 ? "" : key_->tagLabel(); - } - - uint16_t Iptcdatum::tag() const - { - return key_.get() == 0 ? 0 : key_->tag(); - } - - TypeId Iptcdatum::typeId() const - { - return value_.get() == 0 ? invalidTypeId : value_->typeId(); - } - - const char* Iptcdatum::typeName() const - { - return TypeInfo::typeName(typeId()); - } - - long Iptcdatum::typeSize() const - { - return TypeInfo::typeSize(typeId()); - } - - long Iptcdatum::count() const - { - return value_.get() == 0 ? 0 : value_->count(); - } - - long Iptcdatum::size() const - { - return value_.get() == 0 ? 0 : value_->size(); - } - - std::string Iptcdatum::toString() const - { - return value_.get() == 0 ? "" : value_->toString(); - } - - std::string Iptcdatum::toString(long n) const - { - return value_.get() == 0 ? "" : value_->toString(n); - } - - long Iptcdatum::toLong(long n) const - { - return value_.get() == 0 ? -1 : value_->toLong(n); - } - - float Iptcdatum::toFloat(long n) const - { - return value_.get() == 0 ? -1 : value_->toFloat(n); - } - - Rational Iptcdatum::toRational(long n) const - { - return value_.get() == 0 ? Rational(-1, 1) : value_->toRational(n); - } - - Value::AutoPtr Iptcdatum::getValue() const - { - return value_.get() == 0 ? Value::AutoPtr(0) : value_->clone(); - } - - const Value& Iptcdatum::value() const - { - if (value_.get() == 0) throw Error(8); - return *value_; - } - - Iptcdatum& Iptcdatum::operator=(const Iptcdatum& rhs) - { - if (this == &rhs) return *this; - Metadatum::operator=(rhs); - - key_.reset(); - if (rhs.key_.get() != 0) key_ = rhs.key_->clone(); // deep copy - - value_.reset(); - if (rhs.value_.get() != 0) value_ = rhs.value_->clone(); // deep copy - - return *this; - } // Iptcdatum::operator= - - Iptcdatum& Iptcdatum::operator=(const uint16_t& value) - { - UShortValue::AutoPtr v(new UShortValue); - v->value_.push_back(value); - value_ = v; - return *this; - } - - Iptcdatum& Iptcdatum::operator=(const std::string& value) - { - setValue(value); - return *this; - } - - Iptcdatum& Iptcdatum::operator=(const Value& value) - { - setValue(&value); - return *this; - } - - void Iptcdatum::setValue(const Value* pValue) - { - value_.reset(); - if (pValue) value_ = pValue->clone(); - } - - int Iptcdatum::setValue(const std::string& value) - { - if (value_.get() == 0) { - TypeId type = IptcDataSets::dataSetType(tag(), record()); - value_ = Value::create(type); - } - return value_->read(value); - } - - Iptcdatum& IptcData::operator[](const std::string& key) - { - IptcKey iptcKey(key); - iterator pos = findKey(iptcKey); - if (pos == end()) { - add(Iptcdatum(iptcKey)); - pos = findKey(iptcKey); - } - return *pos; - } - - long IptcData::size() const - { - long newSize = 0; - const_iterator iter = iptcMetadata_.begin(); - const_iterator end = iptcMetadata_.end(); - for ( ; iter != end; ++iter) { - // marker, record Id, dataset num, first 2 bytes of size - newSize += 5; - long dataSize = iter->size(); - newSize += dataSize; - if (dataSize > 32767) { - // extended dataset (we always use 4 bytes) - newSize += 4; - } - } - return newSize; - } // IptcData::size - - int IptcData::add(const IptcKey& key, Value* value) - { - return add(Iptcdatum(key, value)); - } - - int IptcData::add(const Iptcdatum& iptcDatum) - { - if (!IptcDataSets::dataSetRepeatable( - iptcDatum.tag(), iptcDatum.record()) && - findId(iptcDatum.tag(), iptcDatum.record()) != end()) { - return 6; - } - // allow duplicates - iptcMetadata_.push_back(iptcDatum); - return 0; - } - - IptcData::const_iterator IptcData::findKey(const IptcKey& key) const - { - return std::find_if(iptcMetadata_.begin(), iptcMetadata_.end(), - FindIptcdatum(key.tag(), key.record())); - } - - IptcData::iterator IptcData::findKey(const IptcKey& key) - { - return std::find_if(iptcMetadata_.begin(), iptcMetadata_.end(), - FindIptcdatum(key.tag(), key.record())); - } - - IptcData::const_iterator IptcData::findId(uint16_t dataset, uint16_t record) const - { - return std::find_if(iptcMetadata_.begin(), iptcMetadata_.end(), - FindIptcdatum(dataset, record)); - } - - IptcData::iterator IptcData::findId(uint16_t dataset, uint16_t record) - { - return std::find_if(iptcMetadata_.begin(), iptcMetadata_.end(), - FindIptcdatum(dataset, record)); - } - - void IptcData::sortByKey() - { - std::sort(iptcMetadata_.begin(), iptcMetadata_.end(), cmpMetadataByKey); - } - - void IptcData::sortByTag() - { - std::sort(iptcMetadata_.begin(), iptcMetadata_.end(), cmpMetadataByTag); - } - - IptcData::iterator IptcData::erase(IptcData::iterator pos) - { - return iptcMetadata_.erase(pos); - } - - const char *IptcData::detectCharset() const - { - const_iterator pos = findKey(IptcKey("Iptc.Envelope.CharacterSet")); - if (pos != end()) { - const std::string value = pos->toString(); - if (pos->value().ok()) { - if (value == "\033%G") return "UTF-8"; - // other values are probably not practically relevant - } - } - - bool ascii = true; - bool utf8 = true; - - for (pos = begin(); pos != end(); ++pos) { - std::string value = pos->toString(); - if (pos->value().ok()) { - int seqCount = 0; - std::string::iterator i; - for (i = value.begin(); i != value.end(); ++i) { - char c = *i; - if (seqCount) { - if ((c & 0xc0) != 0x80) { - utf8 = false; - break; - } - --seqCount; - } - else { - if (c & 0x80) ascii = false; - else continue; // ascii character - - if ((c & 0xe0) == 0xc0) seqCount = 1; - else if ((c & 0xf0) == 0xe0) seqCount = 2; - else if ((c & 0xf8) == 0xf0) seqCount = 3; - else if ((c & 0xfc) == 0xf8) seqCount = 4; - else if ((c & 0xfe) == 0xfc) seqCount = 5; - else { - utf8 = false; - break; - } - } - } - if (seqCount) utf8 = false; // unterminated seq - if (!utf8) break; - } - } - - if (ascii) return "ASCII"; - if (utf8) return "UTF-8"; - return NULL; - } - - const byte IptcParser::marker_ = 0x1C; // Dataset marker - - int IptcParser::decode( - IptcData& iptcData, - const byte* pData, - uint32_t size - ) - { -#ifdef DEBUG - std::cerr << "IptcParser::decode, size = " << size << "\n"; -#endif - const byte* pRead = pData; - iptcData.clear(); - - uint16_t record = 0; - uint16_t dataSet = 0; - uint32_t sizeData = 0; - byte extTest = 0; - - while (pRead + 3 < pData + size) { - // First byte should be a marker. If it isn't, scan forward and skip - // the chunk bytes present in some images. This deviates from the - // standard, which advises to treat such cases as errors. - if (*pRead++ != marker_) continue; - record = *pRead++; - dataSet = *pRead++; - - extTest = *pRead; - if (extTest & 0x80) { - // extended dataset - uint16_t sizeOfSize = (getUShort(pRead, bigEndian) & 0x7FFF); - if (sizeOfSize > 4) return 5; - pRead += 2; - sizeData = 0; - for (; sizeOfSize > 0; --sizeOfSize) { - sizeData |= *pRead++ << (8 *(sizeOfSize-1)); - } - } - else { - // standard dataset - sizeData = getUShort(pRead, bigEndian); - pRead += 2; - } - if (pRead + sizeData <= pData + size) { - int rc = 0; - if ((rc = readData(iptcData, dataSet, record, pRead, sizeData)) != 0) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to read IPTC dataset " - << IptcKey(dataSet, record) - << " (rc = " << rc << "); skipped.\n"; -#endif - } - } -#ifndef SUPPRESS_WARNINGS - else { - EXV_WARNING << "IPTC dataset " << IptcKey(dataSet, record) - << " has invalid size " << sizeData << "; skipped.\n"; - } -#endif - pRead += sizeData; - } - - return 0; - } // IptcParser::decode - - /*! - @brief Compare two iptc items by record. Return true if the record of - lhs is less than that of rhs. - - This is a helper function for IptcParser::encode(). - */ - bool cmpIptcdataByRecord(const Iptcdatum& lhs, const Iptcdatum& rhs) - { - return lhs.record() < rhs.record(); - } - - DataBuf IptcParser::encode(const IptcData& iptcData) - { - DataBuf buf(iptcData.size()); - byte *pWrite = buf.pData_; - - // Copy the iptc data sets and sort them by record but preserve the order of datasets - IptcMetadata sortedIptcData; - std::copy(iptcData.begin(), iptcData.end(), std::back_inserter(sortedIptcData)); - std::stable_sort(sortedIptcData.begin(), sortedIptcData.end(), cmpIptcdataByRecord); - - IptcData::const_iterator iter = sortedIptcData.begin(); - IptcData::const_iterator end = sortedIptcData.end(); - for ( ; iter != end; ++iter) { - // marker, record Id, dataset num - *pWrite++ = marker_; - *pWrite++ = static_cast(iter->record()); - *pWrite++ = static_cast(iter->tag()); - - // extended or standard dataset? - long dataSize = iter->size(); - if (dataSize > 32767) { - // always use 4 bytes for extended length - uint16_t sizeOfSize = 4 | 0x8000; - us2Data(pWrite, sizeOfSize, bigEndian); - pWrite += 2; - ul2Data(pWrite, dataSize, bigEndian); - pWrite += 4; - } - else { - us2Data(pWrite, static_cast(dataSize), bigEndian); - pWrite += 2; - } - pWrite += iter->value().copy(pWrite, bigEndian); - } - - return buf; - } // IptcParser::encode - -} // namespace Exiv2 - -// ***************************************************************************** -// local definitions -namespace { - - int readData( - Exiv2::IptcData& iptcData, - uint16_t dataSet, - uint16_t record, - const Exiv2::byte* data, - uint32_t sizeData - ) - { - Exiv2::Value::AutoPtr value; - Exiv2::TypeId type = Exiv2::IptcDataSets::dataSetType(dataSet, record); - value = Exiv2::Value::create(type); - int rc = value->read(data, sizeData, Exiv2::bigEndian); - if (0 == rc) { - Exiv2::IptcKey key(dataSet, record); - iptcData.add(key, value.get()); - } - else if (1 == rc) { - // If the first attempt failed, try with a string value - value = Exiv2::Value::create(Exiv2::string); - rc = value->read(data, sizeData, Exiv2::bigEndian); - if (0 == rc) { - Exiv2::IptcKey key(dataSet, record); - iptcData.add(key, value.get()); - } - } - return rc; - } - -} diff --git a/platform/win32/msvc/external/exiv2/src/iptc.hpp b/platform/win32/msvc/external/exiv2/src/iptc.hpp deleted file mode 100644 index be4c9db4cd5..00000000000 --- a/platform/win32/msvc/external/exiv2/src/iptc.hpp +++ /dev/null @@ -1,326 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file iptc.hpp - @brief Encoding and decoding of IPTC data - @version $Rev: 2681 $ - @author Brad Schick (brad) - brad@robotbattle.com - @date 31-Jul-04, brad: created - */ -#ifndef IPTC_HPP_ -#define IPTC_HPP_ - -// ***************************************************************************** -// included header files -#include "metadatum.hpp" -#include "types.hpp" -#include "error.hpp" -#include "value.hpp" -#include "datasets.hpp" - -// + standard includes -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class declarations - class ExifData; - -// ***************************************************************************** -// class definitions - - /*! - @brief An IPTC metadatum ("dataset"), consisting of an IptcKey and a - Value and methods to manipulate these. - */ - class EXIV2API Iptcdatum : public Metadatum { - public: - //! @name Creators - //@{ - /*! - @brief Constructor for new tags created by an application. The - %Iptcdatum is created from a key / value pair. %Iptcdatum - copies (clones) the value if one is provided. Alternatively, a - program can create an 'empty' %Iptcdatum with only a key and - set the value using setValue(). - - @param key The key of the %Iptcdatum. - @param pValue Pointer to a %Iptcdatum value. - @throw Error if the key cannot be parsed and converted - to a tag number and record id. - */ - explicit Iptcdatum(const IptcKey& key, - const Value* pValue =0); - //! Copy constructor - Iptcdatum(const Iptcdatum& rhs); - //! Destructor - virtual ~Iptcdatum(); - //@} - - //! @name Manipulators - //@{ - //! Assignment operator - Iptcdatum& operator=(const Iptcdatum& rhs); - /*! - @brief Assign \em value to the %Iptcdatum. The type of the new Value - is set to UShortValue. - */ - Iptcdatum& operator=(const uint16_t& value); - /*! - @brief Assign \em value to the %Iptcdatum. - Calls setValue(const std::string&). - */ - Iptcdatum& operator=(const std::string& value); - /*! - @brief Assign \em value to the %Iptcdatum. - Calls setValue(const Value*). - */ - Iptcdatum& operator=(const Value& value); - void setValue(const Value* pValue); - /*! - @brief Set the value to the string \em value, using - Value::read(const std::string&). - If the %Iptcdatum does not have a Value yet, then a %Value of - the correct type for this %Iptcdatum is created. If that - fails (because of an unknown dataset), a StringValue is - created. Return 0 if the value was read successfully. - */ - int setValue(const std::string& value); - //@} - - //! @name Accessors - //@{ - long copy(byte* buf, ByteOrder byteOrder) const; - std::ostream& write(std::ostream& os, const ExifData* pMetadata =0) const; - /*! - @brief Return the key of the Iptcdatum. The key is of the form - 'Iptc.recordName.datasetName'. Note however that the key - is not necessarily unique, i.e., an IptcData object may contain - multiple metadata with the same key. - */ - std::string key() const; - /*! - @brief Return the name of the record (deprecated) - @return record name - */ - std::string recordName() const; - /*! - @brief Return the record id - @return record id - */ - uint16_t record() const; - const char* familyName() const; - std::string groupName() const; - /*! - @brief Return the name of the tag (aka dataset) - @return tag name - */ - std::string tagName() const; - std::string tagLabel() const; - //! Return the tag (aka dataset) number - uint16_t tag() const; - TypeId typeId() const; - const char* typeName() const; - long typeSize() const; - long count() const; - long size() const; - std::string toString() const; - std::string toString(long n) const; - long toLong(long n =0) const; - float toFloat(long n =0) const; - Rational toRational(long n =0) const; - Value::AutoPtr getValue() const; - const Value& value() const; - //@} - - private: - // DATA - IptcKey::AutoPtr key_; //!< Key - Value::AutoPtr value_; //!< Value - - }; // class Iptcdatum - - //! Container type to hold all metadata - typedef std::vector IptcMetadata; - - /*! - @brief A container for IPTC data. This is a top-level class of - the %Exiv2 library. - - Provide high-level access to the IPTC data of an image: - - read IPTC information from JPEG files - - access metadata through keys and standard C++ iterators - - add, modify and delete metadata - - write IPTC data to JPEG files - - extract IPTC metadata to files, insert from these files - */ - class EXIV2API IptcData { - public: - //! IptcMetadata iterator type - typedef IptcMetadata::iterator iterator; - //! IptcMetadata const iterator type - typedef IptcMetadata::const_iterator const_iterator; - - // Use the compiler generated constructors and assignment operator - - //! @name Manipulators - //@{ - /*! - @brief Returns a reference to the %Iptcdatum that is associated with a - particular \em key. If %IptcData does not already contain such - an %Iptcdatum, operator[] adds object \em Iptcdatum(key). - - @note Since operator[] might insert a new element, it can't be a const - member function. - */ - Iptcdatum& operator[](const std::string& key); - /*! - @brief Add an %Iptcdatum from the supplied key and value pair. This - method copies (clones) the value. A check for non-repeatable - datasets is performed. - @return 0 if successful;
- 6 if the dataset already exists and is not repeatable - */ - int add(const IptcKey& key, Value* value); - /*! - @brief Add a copy of the Iptcdatum to the IPTC metadata. A check - for non-repeatable datasets is performed. - @return 0 if successful;
- 6 if the dataset already exists and is not repeatable;
- */ - int add(const Iptcdatum& iptcdatum); - /*! - @brief Delete the Iptcdatum at iterator position pos, return the - position of the next Iptcdatum. Note that iterators into - the metadata, including pos, are potentially invalidated - by this call. - */ - iterator erase(iterator pos); - /*! - @brief Delete all Iptcdatum instances resulting in an empty container. - */ - void clear() { iptcMetadata_.clear(); } - //! Sort metadata by key - void sortByKey(); - //! Sort metadata by tag (aka dataset) - void sortByTag(); - //! Begin of the metadata - iterator begin() { return iptcMetadata_.begin(); } - //! End of the metadata - iterator end() { return iptcMetadata_.end(); } - /*! - @brief Find the first Iptcdatum with the given key, return an iterator - to it. - */ - iterator findKey(const IptcKey& key); - /*! - @brief Find the first Iptcdatum with the given record and dataset it, - return a const iterator to it. - */ - iterator findId(uint16_t dataset, - uint16_t record = IptcDataSets::application2); - //@} - - //! @name Accessors - //@{ - //! Begin of the metadata - const_iterator begin() const { return iptcMetadata_.begin(); } - //! End of the metadata - const_iterator end() const { return iptcMetadata_.end(); } - /*! - @brief Find the first Iptcdatum with the given key, return a const - iterator to it. - */ - const_iterator findKey(const IptcKey& key) const; - /*! - @brief Find the first Iptcdatum with the given record and dataset - number, return a const iterator to it. - */ - const_iterator findId(uint16_t dataset, - uint16_t record = IptcDataSets::application2) const; - //! Return true if there is no IPTC metadata - bool empty() const { return count() == 0; } - //! Get the number of metadata entries - long count() const { return static_cast(iptcMetadata_.size()); } - /*! - @brief Return the exact size of all contained IPTC metadata - */ - long size() const; - /*! - @brief Return the metadata charset name or 0 - */ - const char *detectCharset() const; - //@} - - private: - // DATA - IptcMetadata iptcMetadata_; - }; // class IptcData - - /*! - @brief Stateless parser class for IPTC data. Images use this class to - decode and encode binary IPTC data. - */ - class EXIV2API IptcParser { - public: - /*! - @brief Decode binary IPTC data in IPTC IIM4 format from a buffer \em pData - of length \em size to the provided metadata container. - - @param iptcData Metadata container to add the decoded IPTC datasets to. - @param pData Pointer to the data buffer to read from. - @param size Number of bytes in the data buffer. - - @return 0 if successful;
- 5 if the binary IPTC data is invalid or corrupt - */ - static int decode( - IptcData& iptcData, - const byte* pData, - uint32_t size - ); - /*! - @brief Encode the IPTC datasets from \em iptcData to a binary - representation in IPTC IIM4 format. - - Convert the IPTC datasets to binary format and return it. Caller owns - the returned buffer. The copied data follows the IPTC IIM4 standard. - - @return Data buffer containing the binary IPTC data in IPTC IIM4 format. - */ - static DataBuf encode( - const IptcData& iptcData - ); - - private: - // Constant data - static const byte marker_; // Dataset marker - - }; // class IptcParser - -} // namespace Exiv2 - -#endif // #ifndef IPTC_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/jp2image.cpp b/platform/win32/msvc/external/exiv2/src/jp2image.cpp deleted file mode 100644 index c3fc1ebd61f..00000000000 --- a/platform/win32/msvc/external/exiv2/src/jp2image.cpp +++ /dev/null @@ -1,637 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: jp2image.cpp - Version: $Rev: 2681 $ - Author(s): Marco Piovanelli, Ovolab (marco) - Author(s): Gilles Caulier (cgilles) - History: 12-Mar-2007, marco: created - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: jp2image.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** - -//#define DEBUG 1 - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif -#include "jp2image.hpp" -#include "tiffimage.hpp" -#include "image.hpp" -#include "basicio.hpp" -#include "error.hpp" -#include "futils.hpp" - -// + standard includes -#include -#include -#include -#include - -// JPEG-2000 box types -const uint32_t kJp2BoxTypeJp2Header = 0x6a703268; // 'jp2h' -const uint32_t kJp2BoxTypeImageHeader = 0x69686472; // 'ihdr' -const uint32_t kJp2BoxTypeUuid = 0x75756964; // 'uuid' - -// JPEG-2000 UUIDs for embedded metadata -// -// See http://www.jpeg.org/public/wg1n2600.doc for information about embedding IPTC-NAA data in JPEG-2000 files -// See http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf for information about embedding XMP data in JPEG-2000 files -const unsigned char kJp2UuidExif[] = "JpgTiffExif->JP2"; -const unsigned char kJp2UuidIptc[] = "\x33\xc7\xa4\xd2\xb8\x1d\x47\x23\xa0\xba\xf1\xa3\xe0\x97\xad\x38"; -const unsigned char kJp2UuidXmp[] = "\xbe\x7a\xcf\xcb\x97\xa9\x42\xe8\x9c\x71\x99\x94\x91\xe3\xaf\xac"; - -// See section B.1.1 (JPEG 2000 Signature box) of JPEG-2000 specification -const unsigned char Jp2Signature[12] = { 0x00, 0x00, 0x00, 0x0c, 0x6a, 0x50, 0x20, 0x20, 0x0d, 0x0a, 0x87, 0x0a }; - -const unsigned char Jp2Blank[] = { 0x00,0x00,0x00,0x0c,0x6a,0x50,0x20,0x20,0x0d,0x0a,0x87,0x0a,0x00,0x00,0x00,0x14, - 0x66,0x74,0x79,0x70,0x6a,0x70,0x32,0x20,0x00,0x00,0x00,0x00,0x6a,0x70,0x32,0x20, - 0x00,0x00,0x00,0x2d,0x6a,0x70,0x32,0x68,0x00,0x00,0x00,0x16,0x69,0x68,0x64,0x72, - 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x07,0x07,0x00,0x00,0x00,0x00, - 0x00,0x0f,0x63,0x6f,0x6c,0x72,0x01,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00, - 0x00,0x6a,0x70,0x32,0x63,0xff,0x4f,0xff,0x51,0x00,0x29,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x07, - 0x01,0x01,0xff,0x64,0x00,0x23,0x00,0x01,0x43,0x72,0x65,0x61,0x74,0x6f,0x72,0x3a, - 0x20,0x4a,0x61,0x73,0x50,0x65,0x72,0x20,0x56,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20, - 0x31,0x2e,0x39,0x30,0x30,0x2e,0x31,0xff,0x52,0x00,0x0c,0x00,0x00,0x00,0x01,0x00, - 0x05,0x04,0x04,0x00,0x01,0xff,0x5c,0x00,0x13,0x40,0x40,0x48,0x48,0x50,0x48,0x48, - 0x50,0x48,0x48,0x50,0x48,0x48,0x50,0x48,0x48,0x50,0xff,0x90,0x00,0x0a,0x00,0x00, - 0x00,0x00,0x00,0x2d,0x00,0x01,0xff,0x5d,0x00,0x14,0x00,0x40,0x40,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x93,0xcf,0xb4, - 0x04,0x00,0x80,0x80,0x80,0x80,0x80,0xff,0xd9 - }; - -//! @cond IGNORE -struct Jp2BoxHeader -{ - uint32_t boxLength; - uint32_t boxType; -}; - -struct Jp2ImageHeaderBox -{ - uint32_t imageHeight; - uint32_t imageWidth; - uint16_t componentCount; - uint8_t bitsPerComponent; - uint8_t compressionType; - uint8_t colorspaceIsUnknown; - uint8_t intellectualPropertyFlag; - uint16_t compressionTypeProfile; -}; - -struct Jp2UuidBox -{ - uint8_t uuid[16]; -}; -//! @endcond - -// ***************************************************************************** -// class member definitions -namespace Exiv2 -{ - - Jp2Image::Jp2Image(BasicIo::AutoPtr io, bool create) - : Image(ImageType::jp2, mdExif | mdIptc | mdXmp, io) - { - if (create) - { - if (io_->open() == 0) - { -#ifdef DEBUG - std::cerr << "Exiv2::Jp2Image:: Creating JPEG2000 image to memory\n"; -#endif - IoCloser closer(*io_); - if (io_->write(Jp2Blank, sizeof(Jp2Blank)) != sizeof(Jp2Blank)) - { -#ifdef DEBUG - std::cerr << "Exiv2::Jp2Image:: Failed to create JPEG2000 image on memory\n"; -#endif - } - } - } - } // Jp2Image::Jp2Image - - std::string Jp2Image::mimeType() const - { - return "image/jp2"; - } - - void Jp2Image::setComment(const std::string& /*comment*/) - { - // Todo: implement me! - throw(Error(32, "Image comment", "JP2")); - } // Jp2Image::setComment - - void Jp2Image::readMetadata() - { -#ifdef DEBUG - std::cerr << "Exiv2::Jp2Image::readMetadata: Reading JPEG-2000 file " << io_->path() << "\n"; -#endif - if (io_->open() != 0) - { - throw Error(9, io_->path(), strError()); - } - IoCloser closer(*io_); - // Ensure that this is the correct image type - if (!isJp2Type(*io_, true)) - { - if (io_->error() || io_->eof()) throw Error(14); - throw Error(3, "JPEG-2000"); - } - - long position = 0; - Jp2BoxHeader box = {0,0}; - Jp2BoxHeader subBox = {0,0}; - Jp2ImageHeaderBox ihdr = {0,0,0,0,0,0,0,0}; - Jp2UuidBox uuid = {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}; - - while (io_->read((byte*)&box, sizeof(box)) == sizeof(box)) - { - position = io_->tell(); - box.boxLength = getLong((byte*)&box.boxLength, bigEndian); -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::readMetadata: Position: " << position << "\n"; - std::cout << "Exiv2::Jp2Image::readMetadata: Find box type: " << std::string((const char*)&box.boxType) - << " lenght: " << box.boxLength << "\n"; -#endif - box.boxType = getLong((byte*)&box.boxType, bigEndian); - - if (box.boxLength == 0) - { -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::readMetadata: Null Box size has been found. " - "This is the last box of file.\n"; -#endif - return; - } - if (box.boxLength == 1) - { - // FIXME. Special case. the real box size is given in another place. - } - - switch(box.boxType) - { - case kJp2BoxTypeJp2Header: - { -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::readMetadata: JP2Header box found\n"; -#endif - - if (io_->read((byte*)&subBox, sizeof(subBox)) == sizeof(subBox)) - { - subBox.boxLength = getLong((byte*)&subBox.boxLength, bigEndian); - subBox.boxType = getLong((byte*)&subBox.boxType, bigEndian); - - if((subBox.boxType == kJp2BoxTypeImageHeader) && - (io_->read((byte*)&ihdr, sizeof(ihdr)) == sizeof(ihdr))) - { -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::readMetadata: Ihdr data found\n"; -#endif - - ihdr.imageHeight = getLong((byte*)&ihdr.imageHeight, bigEndian); - ihdr.imageWidth = getLong((byte*)&ihdr.imageWidth, bigEndian); - ihdr.componentCount = getShort((byte*)&ihdr.componentCount, bigEndian); - ihdr.compressionTypeProfile = getShort((byte*)&ihdr.compressionTypeProfile, bigEndian); - - pixelWidth_ = ihdr.imageWidth; - pixelHeight_ = ihdr.imageHeight; - } - } - break; - } - - case kJp2BoxTypeUuid: - { -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::readMetadata: UUID box found\n"; -#endif - - if (io_->read((byte*)&uuid, sizeof(uuid)) == sizeof(uuid)) - { - DataBuf rawData; - long bufRead; - - if(memcmp(uuid.uuid, kJp2UuidExif, sizeof(uuid)) == 0) - { -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::readMetadata: Exif data found\n"; -#endif - - // we've hit an embedded Exif block - rawData.alloc(box.boxLength - (sizeof(box) + sizeof(uuid))); - bufRead = io_->read(rawData.pData_, rawData.size_); - if (io_->error()) throw Error(14); - if (bufRead != rawData.size_) throw Error(20); - - if (rawData.size_ > 0) - { - // Find the position of Exif header in bytes array. - - const byte exifHeader[] = { 0x45, 0x78, 0x69, 0x66, 0x00, 0x00 }; - long pos = -1; - - for (long i=0 ; i < rawData.size_-(long)sizeof(exifHeader) ; i++) - { - if (memcmp(exifHeader, &rawData.pData_[i], sizeof(exifHeader)) == 0) - { - pos = i; - break; - } - } - - // If found it, store only these data at from this place. - - if (pos !=-1) - { -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::readMetadata: Exif header found at position " << pos << "\n"; -#endif - pos = pos + sizeof(exifHeader); - ByteOrder bo = TiffParser::decode(exifData(), - iptcData(), - xmpData(), - rawData.pData_ + pos, - rawData.size_ - pos); - setByteOrder(bo); - } - } - else - { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to decode Exif metadata.\n"; -#endif - exifData_.clear(); - } - } - else if(memcmp(uuid.uuid, kJp2UuidIptc, sizeof(uuid)) == 0) - { - // we've hit an embedded IPTC block -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::readMetadata: Iptc data found\n"; -#endif - rawData.alloc(box.boxLength - (sizeof(box) + sizeof(uuid))); - bufRead = io_->read(rawData.pData_, rawData.size_); - if (io_->error()) throw Error(14); - if (bufRead != rawData.size_) throw Error(20); - - if (IptcParser::decode(iptcData_, rawData.pData_, rawData.size_)) - { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to decode IPTC metadata.\n"; -#endif - iptcData_.clear(); - } - } - else if(memcmp(uuid.uuid, kJp2UuidXmp, sizeof(uuid)) == 0) - { - // we've hit an embedded XMP block -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::readMetadata: Xmp data found\n"; -#endif - - rawData.alloc(box.boxLength - (sizeof(box) + sizeof(uuid))); - bufRead = io_->read(rawData.pData_, rawData.size_); - if (io_->error()) throw Error(14); - if (bufRead != rawData.size_) throw Error(20); - xmpPacket_.assign(reinterpret_cast(rawData.pData_), rawData.size_); - - std::string::size_type idx = xmpPacket_.find_first_of('<'); - if (idx != std::string::npos && idx > 0) - { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Removing " << static_cast(idx) - << " characters from the beginning of the XMP packet\n"; -#endif - xmpPacket_ = xmpPacket_.substr(idx); - } - - if (xmpPacket_.size() > 0 && XmpParser::decode(xmpData_, xmpPacket_)) - { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to decode XMP metadata.\n"; -#endif - } - } - } - break; - } - - default: - { - break; - } - } - - // Move to the next box. - - io_->seek(position - sizeof(box) + box.boxLength, BasicIo::beg); - if (io_->error() || io_->eof()) throw Error(14); - } - - } // Jp2Image::readMetadata - - void Jp2Image::writeMetadata() - { - if (io_->open() != 0) - { - throw Error(9, io_->path(), strError()); - } - IoCloser closer(*io_); - BasicIo::AutoPtr tempIo(io_->temporary()); // may throw - assert (tempIo.get() != 0); - - doWriteMetadata(*tempIo); // may throw - io_->close(); - io_->transfer(*tempIo); // may throw - - } // Jp2Image::writeMetadata - - void Jp2Image::doWriteMetadata(BasicIo& outIo) - { - if (!io_->isopen()) throw Error(20); - if (!outIo.isopen()) throw Error(21); - -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::doWriteMetadata: Writing JPEG-2000 file " << io_->path() << "\n"; - std::cout << "Exiv2::Jp2Image::doWriteMetadata: tmp file created " << outIo.path() << "\n"; -#endif - - // Ensure that this is the correct image type - if (!isJp2Type(*io_, true)) - { - if (io_->error() || io_->eof()) throw Error(20); - throw Error(22); - } - - // Write JPEG2000 Signature. - if (outIo.write(Jp2Signature, 12) != 12) throw Error(21); - - Jp2BoxHeader box = {0,0}; - - byte boxDataSize[4]; - byte boxUUIDtype[4]; - DataBuf bheaderBuf(8); // Box header : 4 bytes (data size) + 4 bytes (box type). - - // FIXME: Andreas, why the loop do not stop when EOF is taken from _io. The loop go out by an exception - // generated by a zero size data read. - - while(io_->tell() < io_->size()) - { -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::doWriteMetadata: Position: " << io_->tell() << " / " << io_->size() << "\n"; -#endif - - // Read chunk header. - - std::memset(bheaderBuf.pData_, 0x00, bheaderBuf.size_); - long bufRead = io_->read(bheaderBuf.pData_, bheaderBuf.size_); - if (io_->error()) throw Error(14); - if (bufRead != bheaderBuf.size_) throw Error(20); - - // Decode box header. - - box.boxLength = getLong(bheaderBuf.pData_, bigEndian); - box.boxType = getLong(bheaderBuf.pData_ + 4, bigEndian); - -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::doWriteMetadata: Find box type: " << bheaderBuf.pData_ + 4 - << " lenght: " << box.boxLength << "\n"; -#endif - - if (box.boxLength == 0) - { -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::doWriteMetadata: Null Box size has been found. " - "This is the last box of file.\n"; -#endif - box.boxLength = io_->size() - io_->tell() + 8; - } - if (box.boxLength == 1) - { - // FIXME. Special case. the real box size is given in another place. - } - - // Read whole box : Box header + Box data (not fixed size - can be null). - - DataBuf boxBuf(box.boxLength); // Box header (8 bytes) + box data. - memcpy(boxBuf.pData_, bheaderBuf.pData_, 8); // Copy header. - bufRead = io_->read(boxBuf.pData_ + 8, box.boxLength - 8); // Extract box data. - if (io_->error()) - { -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::doWriteMetadata: Error reading source file\n"; -#endif - - throw Error(14); - } - - if (bufRead != (long)(box.boxLength - 8)) - { -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::doWriteMetadata: Cannot read source file data\n"; -#endif - throw Error(20); - } - - switch(box.boxType) - { - case kJp2BoxTypeJp2Header: - { - -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::doWriteMetadata: Write JP2Header box (lenght: " << box.boxLength << ")\n"; -#endif - if (outIo.write(boxBuf.pData_, boxBuf.size_) != boxBuf.size_) throw Error(21); - - // Write all updated metadata here, just after JP2Header. - - if (exifData_.count() > 0) - { - // Update Exif data to a new UUID box - - Blob blob; - ExifParser::encode(blob, littleEndian, exifData_); - if (blob.size()) - { - const unsigned char ExifHeader[] = {0x45, 0x78, 0x69, 0x66, 0x00, 0x00}; - - DataBuf rawExif(static_cast(sizeof(ExifHeader) + blob.size())); - memcpy(rawExif.pData_, ExifHeader, sizeof(ExifHeader)); - memcpy(rawExif.pData_ + sizeof(ExifHeader), &blob[0], blob.size()); - - DataBuf boxData(8 + 16 + rawExif.size_); - ul2Data(boxDataSize, boxData.size_, Exiv2::bigEndian); - ul2Data(boxUUIDtype, kJp2BoxTypeUuid, Exiv2::bigEndian); - memcpy(boxData.pData_, boxDataSize, 4); - memcpy(boxData.pData_ + 4, boxUUIDtype, 4); - memcpy(boxData.pData_ + 8, kJp2UuidExif, 16); - memcpy(boxData.pData_ + 8 + 16, rawExif.pData_, rawExif.size_); - -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::doWriteMetadata: Write box with Exif metadata (lenght: " - << boxData.size_ << ")\n"; -#endif - if (outIo.write(boxData.pData_, boxData.size_) != boxData.size_) throw Error(21); - } - } - - if (iptcData_.count() > 0) - { - // Update Iptc data to a new UUID box - - DataBuf rawIptc = IptcParser::encode(iptcData_); - if (rawIptc.size_ > 0) - { - DataBuf boxData(8 + 16 + rawIptc.size_); - ul2Data(boxDataSize, boxData.size_, Exiv2::bigEndian); - ul2Data(boxUUIDtype, kJp2BoxTypeUuid, Exiv2::bigEndian); - memcpy(boxData.pData_, boxDataSize, 4); - memcpy(boxData.pData_ + 4, boxUUIDtype, 4); - memcpy(boxData.pData_ + 8, kJp2UuidIptc, 16); - memcpy(boxData.pData_ + 8 + 16, rawIptc.pData_, rawIptc.size_); - -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::doWriteMetadata: Write box with Iptc metadata (lenght: " - << boxData.size_ << ")\n"; -#endif - if (outIo.write(boxData.pData_, boxData.size_) != boxData.size_) throw Error(21); - } - } - - if (writeXmpFromPacket() == false) - { - if (XmpParser::encode(xmpPacket_, xmpData_) > 1) - { -#ifndef SUPPRESS_WARNINGS - EXV_ERROR << "Failed to encode XMP metadata.\n"; -#endif - } - } - if (xmpPacket_.size() > 0) - { - // Update Xmp data to a new UUID box - - DataBuf xmp(reinterpret_cast(xmpPacket_.data()), static_cast(xmpPacket_.size())); - DataBuf boxData(8 + 16 + xmp.size_); - ul2Data(boxDataSize, boxData.size_, Exiv2::bigEndian); - ul2Data(boxUUIDtype, kJp2BoxTypeUuid, Exiv2::bigEndian); - memcpy(boxData.pData_, boxDataSize, 4); - memcpy(boxData.pData_ + 4, boxUUIDtype, 4); - memcpy(boxData.pData_ + 8, kJp2UuidXmp, 16); - memcpy(boxData.pData_ + 8 + 16, xmp.pData_, xmp.size_); - -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::doWriteMetadata: Write box with XMP metadata (lenght: " - << boxData.size_ << ")\n"; -#endif - if (outIo.write(boxData.pData_, boxData.size_) != boxData.size_) throw Error(21); - } - - break; - } - - case kJp2BoxTypeUuid: - { - if(memcmp(boxBuf.pData_ + 8, kJp2UuidExif, sizeof(16)) == 0) - { -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::doWriteMetadata: strip Exif Uuid box\n"; -#endif - } - else if(memcmp(boxBuf.pData_ + 8, kJp2UuidIptc, sizeof(16)) == 0) - { -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::doWriteMetadata: strip Iptc Uuid box\n"; -#endif - } - else if(memcmp(boxBuf.pData_ + 8, kJp2UuidXmp, sizeof(16)) == 0) - { -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::doWriteMetadata: strip Xmp Uuid box\n"; -#endif - } - else - { -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::doWriteMetadata: write Uuid box (lenght: " << box.boxLength << ")\n"; -#endif - if (outIo.write(boxBuf.pData_, boxBuf.size_) != boxBuf.size_) throw Error(21); - } - break; - } - - default: - { -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::doWriteMetadata: write box (lenght: " << box.boxLength << ")\n"; -#endif - if (outIo.write(boxBuf.pData_, boxBuf.size_) != boxBuf.size_) throw Error(21); - - break; - } - } - } - -#ifdef DEBUG - std::cout << "Exiv2::Jp2Image::doWriteMetadata: EOF\n"; -#endif - - } // Jp2Image::doWriteMetadata - - // ************************************************************************* - // free functions - Image::AutoPtr newJp2Instance(BasicIo::AutoPtr io, bool create) - { - Image::AutoPtr image(new Jp2Image(io, create)); - if (!image->good()) - { - image.reset(); - } - return image; - } - - bool isJp2Type(BasicIo& iIo, bool advance) - { - const int32_t len = 12; - byte buf[len]; - iIo.read(buf, len); - if (iIo.error() || iIo.eof()) - { - return false; - } - bool matched = (memcmp(buf, Jp2Signature, len) == 0); - if (!advance || !matched) - { - iIo.seek(-len, BasicIo::cur); - } - return matched; - } -} // namespace Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/jp2image.hpp b/platform/win32/msvc/external/exiv2/src/jp2image.hpp deleted file mode 100644 index 863c744cd7d..00000000000 --- a/platform/win32/msvc/external/exiv2/src/jp2image.hpp +++ /dev/null @@ -1,135 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file jp2image.hpp - @brief JPEG-2000 image, implemented using the following references: - ISO/IEC JTC 1/SC 29/WG1 N2401: JPEG 2000 Part 6 FCD 15444-6
- @version $Rev: 2681 $ - @author Gilles Caulier (cgilles) - caulier dot gilles at gmail dot com - @author Marco Piovanelli, Ovolab (marco) - marco.piovanelli@pobox.com - @date 12-Mar-2007, marco: created - */ -#ifndef JP2IMAGE_HPP_ -#define JP2IMAGE_HPP_ - -// ***************************************************************************** -// included header files -#include "exif.hpp" -#include "iptc.hpp" -#include "image.hpp" -#include "types.hpp" - -// + standard includes -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 -{ - -// ***************************************************************************** -// class definitions - - // Add JPEG-2000 to the supported image formats - namespace ImageType - { - const int jp2 = 15; //!< JPEG-2000 image type - } - - /*! - @brief Class to access JPEG-2000 images. - */ - class EXIV2API Jp2Image : public Image { - public: - //! @name Creators - //@{ - /*! - @brief Constructor to open a JPEG-2000 image. Since the - constructor can not return a result, callers should check the - good() method after object construction to determine success - or failure. - @param io An auto-pointer that owns a BasicIo instance used for - reading and writing image metadata. \b Important: The constructor - takes ownership of the passed in BasicIo instance through the - auto-pointer. Callers should not continue to use the BasicIo - instance after it is passed to this method. Use the Image::io() - method to get a temporary reference. - @param create Specifies if an existing image should be read (false) - or if a new file should be created (true). - */ - Jp2Image(BasicIo::AutoPtr io, bool create); - //@} - - //! @name Manipulators - //@{ - void readMetadata(); - void writeMetadata(); - /*! - @brief Todo: Not supported yet(?). Calling this function will throw - an instance of Error(32). - */ - void setComment(const std::string& comment); - //@} - - //! @name Accessors - //@{ - std::string mimeType() const; - //@} - - private: - //! @name NOT Implemented - //@{ - //! Copy constructor - Jp2Image(const Jp2Image& rhs); - //! Assignment operator - Jp2Image& operator=(const Jp2Image& rhs); - /*! - @brief Provides the main implementation of writeMetadata() by - writing all buffered metadata to the provided BasicIo. - @param oIo BasicIo instance to write to (a temporary location). - - @return 4 if opening or writing to the associated BasicIo fails - */ - EXV_DLLLOCAL void doWriteMetadata(BasicIo& oIo); - //@} - - }; // class Jp2Image - -// ***************************************************************************** -// template, inline and free functions - - // These could be static private functions on Image subclasses but then - // ImageFactory needs to be made a friend. - /*! - @brief Create a new Jp2Image instance and return an auto-pointer to it. - Caller owns the returned object and the auto-pointer ensures that - it will be deleted. - */ - EXIV2API Image::AutoPtr newJp2Instance(BasicIo::AutoPtr io, bool create); - - //! Check if the file iIo is a JPEG-2000 image. - EXIV2API bool isJp2Type(BasicIo& iIo, bool advance); - -} // namespace Exiv2 - -#endif // #ifndef JP2IMAGE_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/jpgimage.cpp b/platform/win32/msvc/external/exiv2/src/jpgimage.cpp deleted file mode 100644 index cbc3e010425..00000000000 --- a/platform/win32/msvc/external/exiv2/src/jpgimage.cpp +++ /dev/null @@ -1,960 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: jpgimage.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - Brad Schick (brad) - Volker Grabsch (vog) - Michael Ulbrich (mul) - History: 15-Jan-05, brad: split out from image.cpp - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: jpgimage.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#include "jpgimage.hpp" -#include "error.hpp" -#include "futils.hpp" - -// + standard includes -#include // for EOF -#include -#include - -// ***************************************************************************** -// class member definitions - -namespace Exiv2 { - - const byte JpegBase::sos_ = 0xda; - const byte JpegBase::eoi_ = 0xd9; - const byte JpegBase::app0_ = 0xe0; - const byte JpegBase::app1_ = 0xe1; - const byte JpegBase::app13_ = 0xed; - const byte JpegBase::com_ = 0xfe; - -// Start of Frame markers, nondifferential Huffman-coding frames - const byte JpegBase::sof0_ = 0xc0; // start of frame 0, baseline DCT - const byte JpegBase::sof1_ = 0xc1; // start of frame 1, extended sequential DCT, Huffman coding - const byte JpegBase::sof2_ = 0xc2; // start of frame 2, progressive DCT, Huffman coding - const byte JpegBase::sof3_ = 0xc3; // start of frame 3, lossless sequential, Huffman coding - -// Start of Frame markers, differential Huffman-coding frames - const byte JpegBase::sof5_ = 0xc5; // start of frame 5, differential sequential DCT, Huffman coding - const byte JpegBase::sof6_ = 0xc6; // start of frame 6, differential progressive DCT, Huffman coding - const byte JpegBase::sof7_ = 0xc7; // start of frame 7, differential lossless, Huffman coding - -// Start of Frame markers, nondifferential arithmetic-coding frames - const byte JpegBase::sof9_ = 0xc9; // start of frame 9, extended sequential DCT, arithmetic coding - const byte JpegBase::sof10_ = 0xca; // start of frame 10, progressive DCT, arithmetic coding - const byte JpegBase::sof11_ = 0xcb; // start of frame 11, lossless sequential, arithmetic coding - -// Start of Frame markers, differential arithmetic-coding frames - const byte JpegBase::sof13_ = 0xcd; // start of frame 13, differential sequential DCT, arithmetic coding - const byte JpegBase::sof14_ = 0xce; // start of frame 14, progressive DCT, arithmetic coding - const byte JpegBase::sof15_ = 0xcf; // start of frame 15, differential lossless, arithmetic coding - - const char JpegBase::exifId_[] = "Exif\0\0"; - const char JpegBase::jfifId_[] = "JFIF\0"; - const char JpegBase::xmpId_[] = "http://ns.adobe.com/xap/1.0/\0"; - - const char Photoshop::ps3Id_[] = "Photoshop 3.0\0"; - const char* Photoshop::irbId_[] = {"8BIM", "AgHg", "DCSR", "PHUT"}; - const char Photoshop::bimId_[] = "8BIM"; // deprecated - const uint16_t Photoshop::iptc_ = 0x0404; - const uint16_t Photoshop::preview_ = 0x040c; - - bool Photoshop::isIrb(const byte* pPsData, - long sizePsData) - { - if (sizePsData < 4) return false; - for (size_t i = 0; i < (sizeof irbId_) / (sizeof *irbId_); i++) { - assert(strlen(irbId_[i]) == 4); - if (memcmp(pPsData, irbId_[i], 4) == 0) return true; - } - return false; - } - - bool Photoshop::valid(const byte* pPsData, - long sizePsData) - { - const byte *record = 0; - uint32_t sizeIptc = 0; - uint32_t sizeHdr = 0; - const byte* pCur = pPsData; - const byte* pEnd = pPsData + sizePsData; - int ret = 0; - while (pCur < pEnd - && 0 == (ret = Photoshop::locateIptcIrb(pCur, static_cast(pEnd - pCur), - &record, &sizeHdr, &sizeIptc))) { - pCur = record + sizeHdr + sizeIptc + (sizeIptc & 1); - } - return ret >= 0; - } - - // Todo: Generalised from JpegBase::locateIptcData without really understanding - // the format (in particular the header). So it remains to be confirmed - // if this also makes sense for psTag != Photoshop::iptc - int Photoshop::locateIrb(const byte* pPsData, - long sizePsData, - uint16_t psTag, - const byte** record, - uint32_t *const sizeHdr, - uint32_t *const sizeData) - { - assert(record); - assert(sizeHdr); - assert(sizeData); - // Used for error checking - long position = 0; -#ifdef DEBUG - std::cerr << "Photoshop::locateIrb: "; -#endif - // Data should follow Photoshop format, if not exit - while (position <= sizePsData - 12 && isIrb(pPsData + position, 4)) { - const byte *hrd = pPsData + position; - position += 4; - uint16_t type = getUShort(pPsData + position, bigEndian); - position += 2; -#ifdef DEBUG - std::cerr << "0x" << std::hex << type << std::dec << " "; -#endif - // Pascal string is padded to have an even size (including size byte) - byte psSize = pPsData[position] + 1; - psSize += (psSize & 1); - position += psSize; - if (position + 4 > sizePsData) { -#ifdef DEBUG - std::cerr << "Warning: " - << "Invalid or extended Photoshop IRB\n"; -#endif - return -2; - } - uint32_t dataSize = getULong(pPsData + position, bigEndian); - position += 4; - if (dataSize > static_cast(sizePsData - position)) { -#ifdef DEBUG - std::cerr << "Warning: " - << "Invalid Photoshop IRB data size " - << dataSize << " or extended Photoshop IRB\n"; -#endif - return -2; - } -#ifndef DEBUG - if ( (dataSize & 1) - && position + dataSize == static_cast(sizePsData)) { - std::cerr << "Warning: " - << "Photoshop IRB data is not padded to even size\n"; - } -#endif - if (type == psTag) { -#ifdef DEBUG - std::cerr << "ok\n"; -#endif - *sizeData = dataSize; - *sizeHdr = psSize + 10; - *record = hrd; - return 0; - } - // Data size is also padded to be even - position += dataSize + (dataSize & 1); - } -#ifdef DEBUG - std::cerr << "pPsData doesn't start with '8BIM'\n"; -#endif - if (position < sizePsData) { -#ifdef DEBUG - std::cerr << "Warning: " - << "Invalid or extended Photoshop IRB\n"; -#endif - return -2; - } - return 3; - } // Photoshop::locateIrb - - int Photoshop::locateIptcIrb(const byte* pPsData, - long sizePsData, - const byte** record, - uint32_t *const sizeHdr, - uint32_t *const sizeData) - { - return locateIrb(pPsData, sizePsData, iptc_, - record, sizeHdr, sizeData); - } - - int Photoshop::locatePreviewIrb(const byte* pPsData, - long sizePsData, - const byte** record, - uint32_t *const sizeHdr, - uint32_t *const sizeData) - { - return locateIrb(pPsData, sizePsData, preview_, - record, sizeHdr, sizeData); - } - - DataBuf Photoshop::setIptcIrb(const byte* pPsData, - long sizePsData, - const IptcData& iptcData) - { - if (sizePsData > 0) assert(pPsData); -#ifdef DEBUG - std::cerr << "IRB block at the beginning of Photoshop::setIptcIrb\n"; - if (sizePsData == 0) std::cerr << " None.\n"; - else hexdump(std::cerr, pPsData, sizePsData); -#endif - const byte* record = pPsData; - uint32_t sizeIptc = 0; - uint32_t sizeHdr = 0; - DataBuf rc; - // Safe to call with zero psData.size_ - if (0 > Photoshop::locateIptcIrb(pPsData, sizePsData, - &record, &sizeHdr, &sizeIptc)) { - return rc; - } - Blob psBlob; - const uint32_t sizeFront = static_cast(record - pPsData); - // Write data before old record. - if (sizePsData > 0 && sizeFront > 0) { - append(psBlob, pPsData, sizeFront); - } - // Write new iptc record if we have it - DataBuf rawIptc = IptcParser::encode(iptcData); - if (rawIptc.size_ > 0) { - byte tmpBuf[12]; - std::memcpy(tmpBuf, Photoshop::irbId_[0], 4); - us2Data(tmpBuf + 4, iptc_, bigEndian); - tmpBuf[6] = 0; - tmpBuf[7] = 0; - ul2Data(tmpBuf + 8, rawIptc.size_, bigEndian); - append(psBlob, tmpBuf, 12); - append(psBlob, rawIptc.pData_, rawIptc.size_); - // Data is padded to be even (but not included in size) - if (rawIptc.size_ & 1) psBlob.push_back(0x00); - } - // Write existing stuff after record, - // skip the current and all remaining IPTC blocks - long pos = sizeFront; - while (0 == Photoshop::locateIptcIrb(pPsData + pos, sizePsData - pos, - &record, &sizeHdr, &sizeIptc)) { - const long newPos = static_cast(record - pPsData); - // Copy data up to the IPTC IRB - if (newPos > pos) { - append(psBlob, pPsData + pos, newPos - pos); - } - // Skip the IPTC IRB - pos = newPos + sizeHdr + sizeIptc + (sizeIptc & 1); - } - if (pos < sizePsData) { - append(psBlob, pPsData + pos, sizePsData - pos); - } - // Data is rounded to be even - if (psBlob.size() > 0) rc = DataBuf(&psBlob[0], static_cast(psBlob.size())); -#ifdef DEBUG - std::cerr << "IRB block at the end of Photoshop::setIptcIrb\n"; - if (rc.size_ == 0) std::cerr << " None.\n"; - else hexdump(std::cerr, rc.pData_, rc.size_); -#endif - return rc; - - } // Photoshop::setIptcIrb - - JpegBase::JpegBase(int type, BasicIo::AutoPtr io, bool create, - const byte initData[], long dataSize) - : Image(type, mdExif | mdIptc | mdXmp | mdComment, io) - { - if (create) { - initImage(initData, dataSize); - } - } - - int JpegBase::initImage(const byte initData[], long dataSize) - { - if (io_->open() != 0) { - return 4; - } - IoCloser closer(*io_); - if (io_->write(initData, dataSize) != dataSize) { - return 4; - } - return 0; - } - - int JpegBase::advanceToMarker() const - { - int c = -1; - // Skips potential padding between markers - while ((c=io_->getb()) != 0xff) { - if (c == EOF) return -1; - } - - // Markers can start with any number of 0xff - while ((c=io_->getb()) == 0xff) { - if (c == EOF) return -2; - } - return c; - } - - void JpegBase::readMetadata() - { - int rc = 0; // Todo: this should be the return value - - if (io_->open() != 0) throw Error(9, io_->path(), strError()); - IoCloser closer(*io_); - // Ensure that this is the correct image type - if (!isThisType(*io_, true)) { - if (io_->error() || io_->eof()) throw Error(14); - throw Error(15); - } - clearMetadata(); - int search = 5; - const long bufMinSize = 36; - long bufRead = 0; - DataBuf buf(bufMinSize); - Blob psBlob; - bool foundCompletePsData = false; - bool foundExifData = false; - bool foundXmpData = false; - - // Read section marker - int marker = advanceToMarker(); - if (marker < 0) throw Error(15); - - while (marker != sos_ && marker != eoi_ && search > 0) { - // Read size and signature (ok if this hits EOF) - std::memset(buf.pData_, 0x0, buf.size_); - bufRead = io_->read(buf.pData_, bufMinSize); - if (io_->error()) throw Error(14); - if (bufRead < 2) throw Error(15); - uint16_t size = getUShort(buf.pData_, bigEndian); - - if ( !foundExifData - && marker == app1_ && memcmp(buf.pData_ + 2, exifId_, 6) == 0) { - if (size < 8) { - rc = 1; - break; - } - // Seek to beginning and read the Exif data - io_->seek(8 - bufRead, BasicIo::cur); - DataBuf rawExif(size - 8); - io_->read(rawExif.pData_, rawExif.size_); - if (io_->error() || io_->eof()) throw Error(14); - ByteOrder bo = ExifParser::decode(exifData_, rawExif.pData_, rawExif.size_); - setByteOrder(bo); - if (rawExif.size_ > 0 && byteOrder() == invalidByteOrder) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to decode Exif metadata.\n"; -#endif - exifData_.clear(); - } - --search; - foundExifData = true; - } - else if ( !foundXmpData - && marker == app1_ && memcmp(buf.pData_ + 2, xmpId_, 29) == 0) { - if (size < 31) { - rc = 6; - break; - } - // Seek to beginning and read the XMP packet - io_->seek(31 - bufRead, BasicIo::cur); - DataBuf xmpPacket(size - 31); - io_->read(xmpPacket.pData_, xmpPacket.size_); - if (io_->error() || io_->eof()) throw Error(14); - xmpPacket_.assign(reinterpret_cast(xmpPacket.pData_), xmpPacket.size_); - if (xmpPacket_.size() > 0 && XmpParser::decode(xmpData_, xmpPacket_)) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to decode XMP metadata.\n"; -#endif - } - --search; - foundXmpData = true; - } - else if ( !foundCompletePsData - && marker == app13_ && memcmp(buf.pData_ + 2, Photoshop::ps3Id_, 14) == 0) { - if (size < 16) { - rc = 2; - break; - } - // Read the rest of the APP13 segment - io_->seek(16 - bufRead, BasicIo::cur); - DataBuf psData(size - 16); - io_->read(psData.pData_, psData.size_); - if (io_->error() || io_->eof()) throw Error(14); -#ifdef DEBUG - std::cerr << "Found app13 segment, size = " << size << "\n"; - //hexdump(std::cerr, psData.pData_, psData.size_); -#endif - // Append to psBlob - append(psBlob, psData.pData_, psData.size_); - // Check whether psBlob is complete - if (psBlob.size() > 0 && Photoshop::valid(&psBlob[0], (long) psBlob.size())) { - --search; - foundCompletePsData = true; - } - } - else if (marker == com_ && comment_.empty()) - { - if (size < 2) { - rc = 3; - break; - } - // JPEGs can have multiple comments, but for now only read - // the first one (most jpegs only have one anyway). Comments - // are simple single byte ISO-8859-1 strings. - io_->seek(2 - bufRead, BasicIo::cur); - DataBuf comment(size - 2); - io_->read(comment.pData_, comment.size_); - if (io_->error() || io_->eof()) throw Error(14); - comment_.assign(reinterpret_cast(comment.pData_), comment.size_); - while ( comment_.length() - && comment_.at(comment_.length()-1) == '\0') { - comment_.erase(comment_.length()-1); - } - --search; - } - else if ( pixelHeight_ == 0 - && ( marker == sof0_ || marker == sof1_ || marker == sof2_ - || marker == sof3_ || marker == sof5_ || marker == sof6_ - || marker == sof7_ || marker == sof9_ || marker == sof10_ - || marker == sof11_ || marker == sof13_ || marker == sof14_ - || marker == sof15_)) { - // We hit a SOFn (start-of-frame) marker - if (size < 8) { - rc = 7; - break; - } - pixelHeight_ = getUShort(buf.pData_ + 3, bigEndian); - pixelWidth_ = getUShort(buf.pData_ + 5, bigEndian); - if (pixelHeight_ != 0) --search; - // Skip the remainder of the segment - io_->seek(size-bufRead, BasicIo::cur); - } - else { - if (size < 2) { - rc = 4; - break; - } - // Skip the remainder of the unknown segment - if (io_->seek(size - bufRead, BasicIo::cur)) throw Error(14); - } - // Read the beginning of the next segment - marker = advanceToMarker(); - if (marker < 0) { - rc = 5; - break; - } - } // while there are segments to process - - if (psBlob.size() > 0) { - // Find actual IPTC data within the psBlob - Blob iptcBlob; - const byte *record = 0; - uint32_t sizeIptc = 0; - uint32_t sizeHdr = 0; - const byte* pCur = &psBlob[0]; - const byte* pEnd = pCur + psBlob.size(); - while ( pCur < pEnd - && 0 == Photoshop::locateIptcIrb(pCur, static_cast(pEnd - pCur), - &record, &sizeHdr, &sizeIptc)) { -#ifdef DEBUG - std::cerr << "Found IPTC IRB, size = " << sizeIptc << "\n"; -#endif - if (sizeIptc) { - append(iptcBlob, record + sizeHdr, sizeIptc); - } - pCur = record + sizeHdr + sizeIptc + (sizeIptc & 1); - } - if ( iptcBlob.size() > 0 - && IptcParser::decode(iptcData_, - &iptcBlob[0], - static_cast(iptcBlob.size()))) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to decode IPTC metadata.\n"; -#endif - iptcData_.clear(); - } - } // psBlob.size() > 0 - - if (rc != 0) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "JPEG format error, rc = " << rc << "\n"; -#endif - } - } // JpegBase::readMetadata - - void JpegBase::writeMetadata() - { - if (io_->open() != 0) { - throw Error(9, io_->path(), strError()); - } - IoCloser closer(*io_); - BasicIo::AutoPtr tempIo(io_->temporary()); // may throw - assert (tempIo.get() != 0); - - doWriteMetadata(*tempIo); // may throw - io_->close(); - io_->transfer(*tempIo); // may throw - } // JpegBase::writeMetadata - - void JpegBase::doWriteMetadata(BasicIo& outIo) - { - if (!io_->isopen()) throw Error(20); - if (!outIo.isopen()) throw Error(21); - - // Ensure that this is the correct image type - if (!isThisType(*io_, true)) { - if (io_->error() || io_->eof()) throw Error(20); - throw Error(22); - } - - const long bufMinSize = 36; - long bufRead = 0; - DataBuf buf(bufMinSize); - const long seek = io_->tell(); - int count = 0; - int search = 0; - int insertPos = 0; - int comPos = 0; - int skipApp1Exif = -1; - int skipApp1Xmp = -1; - bool foundCompletePsData = false; - std::vector skipApp13Ps3; - int skipCom = -1; - Blob psBlob; - DataBuf rawExif; - - // Write image header - if (writeHeader(outIo)) throw Error(21); - - // Read section marker - int marker = advanceToMarker(); - if (marker < 0) throw Error(22); - - // First find segments of interest. Normally app0 is first and we want - // to insert after it. But if app0 comes after com, app1 and app13 then - // don't bother. - while (marker != sos_ && marker != eoi_ && search < 5) { - // Read size and signature (ok if this hits EOF) - bufRead = io_->read(buf.pData_, bufMinSize); - if (io_->error()) throw Error(20); - uint16_t size = getUShort(buf.pData_, bigEndian); - - if (marker == app0_) { - if (size < 2) throw Error(22); - insertPos = count + 1; - if (io_->seek(size-bufRead, BasicIo::cur)) throw Error(22); - } - else if ( skipApp1Exif == -1 - && marker == app1_ && memcmp(buf.pData_ + 2, exifId_, 6) == 0) { - if (size < 8) throw Error(22); - skipApp1Exif = count; - ++search; - // Seek to beginning and read the current Exif data - io_->seek(8 - bufRead, BasicIo::cur); - rawExif.alloc(size - 8); - io_->read(rawExif.pData_, rawExif.size_); - if (io_->error() || io_->eof()) throw Error(22); - } - else if ( skipApp1Xmp == -1 - && marker == app1_ && memcmp(buf.pData_ + 2, xmpId_, 29) == 0) { - if (size < 31) throw Error(22); - skipApp1Xmp = count; - ++search; - if (io_->seek(size-bufRead, BasicIo::cur)) throw Error(22); - } - else if ( !foundCompletePsData - && marker == app13_ && memcmp(buf.pData_ + 2, Photoshop::ps3Id_, 14) == 0) { -#ifdef DEBUG - std::cerr << "Found APP13 Photoshop PS3 segment\n"; -#endif - if (size < 16) throw Error(22); - skipApp13Ps3.push_back(count); - io_->seek(16 - bufRead, BasicIo::cur); - // Load PS data now to allow reinsertion at any point - DataBuf psData(size - 16); - io_->read(psData.pData_, size - 16); - if (io_->error() || io_->eof()) throw Error(20); - // Append to psBlob - append(psBlob, psData.pData_, psData.size_); - // Check whether psBlob is complete - if (psBlob.size() > 0 && Photoshop::valid(&psBlob[0],(long) psBlob.size())) { - foundCompletePsData = true; - } - } - else if (marker == com_ && skipCom == -1) { - if (size < 2) throw Error(22); - // Jpegs can have multiple comments, but for now only handle - // the first one (most jpegs only have one anyway). - skipCom = count; - ++search; - if (io_->seek(size-bufRead, BasicIo::cur)) throw Error(22); - } - else { - if (size < 2) throw Error(22); - if (io_->seek(size-bufRead, BasicIo::cur)) throw Error(22); - } - // As in jpeg-6b/wrjpgcom.c: - // We will insert the new comment marker just before SOFn. - // This (a) causes the new comment to appear after, rather than before, - // existing comments; and (b) ensures that comments come after any JFIF - // or JFXX markers, as required by the JFIF specification. - if ( comPos == 0 - && ( marker == sof0_ - || marker == sof1_ - || marker == sof2_ - || marker == sof3_ - || marker == sof5_ - || marker == sof6_ - || marker == sof7_ - || marker == sof9_ - || marker == sof10_ - || marker == sof11_ - || marker == sof13_ - || marker == sof14_ - || marker == sof15_)) { - comPos = count; - ++search; - } - marker = advanceToMarker(); - if (marker < 0) throw Error(22); - ++count; - } - - if (!foundCompletePsData && psBlob.size() > 0) throw Error(22); - search += (int) skipApp13Ps3.size(); - - if (comPos == 0) { - if (marker == eoi_) comPos = count; - else comPos = insertPos; - ++search; - } - if (exifData_.count() > 0) ++search; - if (writeXmpFromPacket() == false && xmpData_.count() > 0) ++search; - if (writeXmpFromPacket() == true && xmpPacket_.size() > 0) ++search; - if (foundCompletePsData || iptcData_.count() > 0) ++search; - if (!comment_.empty()) ++search; - - io_->seek(seek, BasicIo::beg); - count = 0; - marker = advanceToMarker(); - if (marker < 0) throw Error(22); - - // To simplify this a bit, new segments are inserts at either the start - // or right after app0. This is standard in most jpegs, but has the - // potential to change segment ordering (which is allowed). - // Segments are erased if there is no assigned metadata. - while (marker != sos_ && search > 0) { - // Read size and signature (ok if this hits EOF) - bufRead = io_->read(buf.pData_, bufMinSize); - if (io_->error()) throw Error(20); - // Careful, this can be a meaningless number for empty - // images with only an eoi_ marker - uint16_t size = getUShort(buf.pData_, bigEndian); - - if (insertPos == count) { - byte tmpBuf[64]; - // Write Exif data first so that - if there is no app0 - we - // create "Exif images" according to the Exif standard. - if (exifData_.count() > 0) { - Blob blob; - ByteOrder bo = byteOrder(); - if (bo == invalidByteOrder) { - bo = littleEndian; - setByteOrder(bo); - } - WriteMethod wm = ExifParser::encode(blob, - rawExif.pData_, - rawExif.size_, - bo, - exifData_); - const byte* pExifData = rawExif.pData_; - uint32_t exifSize = rawExif.size_; - if (wm == wmIntrusive) { - pExifData = blob.size() > 0 ? &blob[0] : 0; - exifSize = static_cast(blob.size()); - } - if (exifSize > 0) { - // Write APP1 marker, size of APP1 field, Exif id and Exif data - tmpBuf[0] = 0xff; - tmpBuf[1] = app1_; - - if (exifSize + 8 > 0xffff) throw Error(37, "Exif"); - us2Data(tmpBuf + 2, static_cast(exifSize + 8), bigEndian); - std::memcpy(tmpBuf + 4, exifId_, 6); - if (outIo.write(tmpBuf, 10) != 10) throw Error(21); - - // Write new Exif data buffer - if ( outIo.write(pExifData, exifSize) - != static_cast(exifSize)) throw Error(21); - if (outIo.error()) throw Error(21); - --search; - } - } - if (writeXmpFromPacket() == false) { - if (XmpParser::encode(xmpPacket_, xmpData_, XmpParser::useCompactFormat | XmpParser::omitAllFormatting) > 1) { -#ifndef SUPPRESS_WARNINGS - EXV_ERROR << "Failed to encode XMP metadata.\n"; -#endif - } - } - if (xmpPacket_.size() > 0) { - // Write APP1 marker, size of APP1 field, XMP id and XMP packet - tmpBuf[0] = 0xff; - tmpBuf[1] = app1_; - - if (xmpPacket_.size() + 31 > 0xffff) throw Error(37, "XMP"); - us2Data(tmpBuf + 2, static_cast(xmpPacket_.size() + 31), bigEndian); - std::memcpy(tmpBuf + 4, xmpId_, 29); - if (outIo.write(tmpBuf, 33) != 33) throw Error(21); - - // Write new XMP packet - if ( outIo.write(reinterpret_cast(xmpPacket_.data()), static_cast(xmpPacket_.size())) - != static_cast(xmpPacket_.size())) throw Error(21); - if (outIo.error()) throw Error(21); - --search; - } - if (foundCompletePsData || iptcData_.count() > 0) { - // Set the new IPTC IRB, keeps existing IRBs but removes the - // IPTC block if there is no new IPTC data to write - DataBuf newPsData = Photoshop::setIptcIrb(psBlob.size() > 0 ? &psBlob[0] : 0, - (long) psBlob.size(), - iptcData_); - const long maxChunkSize = 0xffff - 16; - const byte* chunkStart = newPsData.pData_; - const byte* chunkEnd = chunkStart + newPsData.size_; - while (chunkStart < chunkEnd) { - // Determine size of next chunk - long chunkSize = static_cast(chunkEnd - chunkStart); - if (chunkSize > maxChunkSize) { - chunkSize = maxChunkSize; - // Don't break at a valid IRB boundary - const long writtenSize = static_cast(chunkStart - newPsData.pData_); - if (Photoshop::valid(newPsData.pData_, writtenSize + chunkSize)) { - // Since an IRB has minimum size 12, - // (chunkSize - 8) can't be also a IRB boundary - chunkSize -= 8; - } - } - - // Write APP13 marker, chunk size, and ps3Id - tmpBuf[0] = 0xff; - tmpBuf[1] = app13_; - us2Data(tmpBuf + 2, static_cast(chunkSize + 16), bigEndian); - std::memcpy(tmpBuf + 4, Photoshop::ps3Id_, 14); - if (outIo.write(tmpBuf, 18) != 18) throw Error(21); - if (outIo.error()) throw Error(21); - - // Write next chunk of the Photoshop IRB data buffer - if (outIo.write(chunkStart, chunkSize) != chunkSize) throw Error(21); - if (outIo.error()) throw Error(21); - - chunkStart += chunkSize; - } - --search; - } - } - if (comPos == count) { - if (!comment_.empty()) { - byte tmpBuf[4]; - // Write COM marker, size of comment, and string - tmpBuf[0] = 0xff; - tmpBuf[1] = com_; - - if (comment_.length() + 3 > 0xffff) throw Error(37, "JPEG comment"); - us2Data(tmpBuf + 2, static_cast(comment_.length() + 3), bigEndian); - - if (outIo.write(tmpBuf, 4) != 4) throw Error(21); - if (outIo.write((byte*)comment_.data(), (long)comment_.length()) - != (long)comment_.length()) throw Error(21); - if (outIo.putb(0)==EOF) throw Error(21); - if (outIo.error()) throw Error(21); - --search; - } - --search; - } - if (marker == eoi_) { - break; - } - else if ( skipApp1Exif == count - || skipApp1Xmp == count - || std::find(skipApp13Ps3.begin(), skipApp13Ps3.end(), count) != skipApp13Ps3.end() - || skipCom == count) { - --search; - io_->seek(size-bufRead, BasicIo::cur); - } - else { - if (size < 2) throw Error(22); - buf.alloc(size+2); - io_->seek(-bufRead-2, BasicIo::cur); - io_->read(buf.pData_, size+2); - if (io_->error() || io_->eof()) throw Error(20); - if (outIo.write(buf.pData_, size+2) != size+2) throw Error(21); - if (outIo.error()) throw Error(21); - } - - // Next marker - marker = advanceToMarker(); - if (marker < 0) throw Error(22); - ++count; - } - - // Copy rest of the Io - io_->seek(-2, BasicIo::cur); - buf.alloc(4096); - long readSize = 0; - while ((readSize=io_->read(buf.pData_, buf.size_))) { - if (outIo.write(buf.pData_, readSize) != readSize) throw Error(21); - } - if (outIo.error()) throw Error(21); - - } // JpegBase::doWriteMetadata - - const byte JpegImage::soi_ = 0xd8; - const byte JpegImage::blank_[] = { - 0xFF,0xD8,0xFF,0xDB,0x00,0x84,0x00,0x10,0x0B,0x0B,0x0B,0x0C,0x0B,0x10,0x0C,0x0C, - 0x10,0x17,0x0F,0x0D,0x0F,0x17,0x1B,0x14,0x10,0x10,0x14,0x1B,0x1F,0x17,0x17,0x17, - 0x17,0x17,0x1F,0x1E,0x17,0x1A,0x1A,0x1A,0x1A,0x17,0x1E,0x1E,0x23,0x25,0x27,0x25, - 0x23,0x1E,0x2F,0x2F,0x33,0x33,0x2F,0x2F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, - 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x01,0x11,0x0F,0x0F,0x11,0x13,0x11,0x15,0x12, - 0x12,0x15,0x14,0x11,0x14,0x11,0x14,0x1A,0x14,0x16,0x16,0x14,0x1A,0x26,0x1A,0x1A, - 0x1C,0x1A,0x1A,0x26,0x30,0x23,0x1E,0x1E,0x1E,0x1E,0x23,0x30,0x2B,0x2E,0x27,0x27, - 0x27,0x2E,0x2B,0x35,0x35,0x30,0x30,0x35,0x35,0x40,0x40,0x3F,0x40,0x40,0x40,0x40, - 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xFF,0xC0,0x00,0x11,0x08,0x00,0x01,0x00, - 0x01,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xFF,0xC4,0x00,0x4B,0x00, - 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x07,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xDA,0x00,0x0C,0x03,0x01,0x00,0x02, - 0x11,0x03,0x11,0x00,0x3F,0x00,0xA0,0x00,0x0F,0xFF,0xD9 }; - - JpegImage::JpegImage(BasicIo::AutoPtr io, bool create) - : JpegBase(ImageType::jpeg, io, create, blank_, sizeof(blank_)) - { - } - - std::string JpegImage::mimeType() const - { - return "image/jpeg"; - } - - int JpegImage::writeHeader(BasicIo& outIo) const - { - // Jpeg header - byte tmpBuf[2]; - tmpBuf[0] = 0xff; - tmpBuf[1] = soi_; - if (outIo.write(tmpBuf, 2) != 2) return 4; - if (outIo.error()) return 4; - return 0; - } - - bool JpegImage::isThisType(BasicIo& iIo, bool advance) const - { - return isJpegType(iIo, advance); - } - - Image::AutoPtr newJpegInstance(BasicIo::AutoPtr io, bool create) - { - Image::AutoPtr image(new JpegImage(io, create)); - if (!image->good()) { - image.reset(); - } - return image; - } - - bool isJpegType(BasicIo& iIo, bool advance) - { - bool result = true; - byte tmpBuf[2]; - iIo.read(tmpBuf, 2); - if (iIo.error() || iIo.eof()) return false; - - if (0xff != tmpBuf[0] || JpegImage::soi_ != tmpBuf[1]) { - result = false; - } - if (!advance || !result ) iIo.seek(-2, BasicIo::cur); - return result; - } - - const char ExvImage::exiv2Id_[] = "Exiv2"; - const byte ExvImage::blank_[] = { 0xff,0x01,'E','x','i','v','2',0xff,0xd9 }; - - ExvImage::ExvImage(BasicIo::AutoPtr io, bool create) - : JpegBase(ImageType::exv, io, create, blank_, sizeof(blank_)) - { - } - - std::string ExvImage::mimeType() const - { - return "image/x-exv"; - } - - int ExvImage::writeHeader(BasicIo& outIo) const - { - // Exv header - byte tmpBuf[7]; - tmpBuf[0] = 0xff; - tmpBuf[1] = 0x01; - std::memcpy(tmpBuf + 2, exiv2Id_, 5); - if (outIo.write(tmpBuf, 7) != 7) return 4; - if (outIo.error()) return 4; - return 0; - } - - bool ExvImage::isThisType(BasicIo& iIo, bool advance) const - { - return isExvType(iIo, advance); - } - - Image::AutoPtr newExvInstance(BasicIo::AutoPtr io, bool create) - { - Image::AutoPtr image; - image = Image::AutoPtr(new ExvImage(io, create)); - if (!image->good()) image.reset(); - return image; - } - - bool isExvType(BasicIo& iIo, bool advance) - { - bool result = true; - byte tmpBuf[7]; - iIo.read(tmpBuf, 7); - if (iIo.error() || iIo.eof()) return false; - - if ( 0xff != tmpBuf[0] || 0x01 != tmpBuf[1] - || memcmp(tmpBuf + 2, ExvImage::exiv2Id_, 5) != 0) { - result = false; - } - if (!advance || !result) iIo.seek(-7, BasicIo::cur); - return result; - } - -} // namespace Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/jpgimage.hpp b/platform/win32/msvc/external/exiv2/src/jpgimage.hpp deleted file mode 100644 index b4e988a9520..00000000000 --- a/platform/win32/msvc/external/exiv2/src/jpgimage.hpp +++ /dev/null @@ -1,430 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file jpgimage.hpp - @brief Class JpegImage to access JPEG images - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @author Brad Schick (brad) - brad@robotbattle.com - @author Volker Grabsch (vog) - vog@notjusthosting.com - @author Michael Ulbrich (mul) - mul@rentapacs.de - @date 15-Jan-05, brad: split out from image.cpp - */ -#ifndef JPGIMAGE_HPP_ -#define JPGIMAGE_HPP_ - -// ***************************************************************************** -// included header files -#include "image.hpp" -#include "basicio.hpp" -#include "types.hpp" - -// + standard includes -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class definitions - - // Supported JPEG image formats - namespace ImageType { - const int jpeg = 1; //!< JPEG image type (see class JpegImage) - const int exv = 2; //!< EXV image type (see class ExvImage) - } - - /*! - @brief Helper class, has methods to deal with %Photoshop "Information - Resource Blocks" (IRBs). - */ - struct EXIV2API Photoshop { - // Todo: Public for now - static const char ps3Id_[]; //!< %Photoshop marker - static const char* irbId_[]; //!< %Photoshop IRB markers - static const char bimId_[]; //!< %Photoshop IRB marker (deprecated) - static const uint16_t iptc_; //!< %Photoshop IPTC marker - static const uint16_t preview_; //!< %Photoshop preview marker - - /*! - @brief Checks an IRB - - @param pPsData Existing IRB buffer - @param sizePsData Size of the IRB buffer - @return true if the IRB marker is known and the buffer is big enough to check this;
- false otherwise - */ - static bool isIrb(const byte* pPsData, - long sizePsData); - /*! - @brief Validates all IRBs - - @param pPsData Existing IRB buffer - @param sizePsData Size of the IRB buffer, may be 0 - @return true if all IRBs are valid;
- false otherwise - */ - static bool valid(const byte* pPsData, - long sizePsData); - /*! - @brief Locates the data for a %Photoshop tag in a %Photoshop formated memory - buffer. Operates on raw data to simplify reuse. - @param pPsData Pointer to buffer containing entire payload of - %Photoshop formated data, e.g., from APP13 Jpeg segment. - @param sizePsData Size in bytes of pPsData. - @param psTag %Tag number of the block to look for. - @param record Output value that is set to the start of the - data block within pPsData (may not be null). - @param sizeHdr Output value that is set to the size of the header - within the data block pointed to by record (may not be null). - @param sizeData Output value that is set to the size of the actual - data within the data block pointed to by record (may not be null). - @return 0 if successful;
- 3 if no data for psTag was found in pPsData;
- -2 if the pPsData buffer does not contain valid data. - */ - static int locateIrb(const byte *pPsData, - long sizePsData, - uint16_t psTag, - const byte **record, - uint32_t *const sizeHdr, - uint32_t *const sizeData); - /*! - @brief Forwards to locateIrb() with \em psTag = \em iptc_ - */ - static int locateIptcIrb(const byte *pPsData, - long sizePsData, - const byte **record, - uint32_t *const sizeHdr, - uint32_t *const sizeData); - /*! - @brief Forwards to locatePreviewIrb() with \em psTag = \em preview_ - */ - static int locatePreviewIrb(const byte *pPsData, - long sizePsData, - const byte **record, - uint32_t *const sizeHdr, - uint32_t *const sizeData); - /*! - @brief Set the new IPTC IRB, keeps existing IRBs but removes the - IPTC block if there is no new IPTC data to write. - - @param pPsData Existing IRB buffer - @param sizePsData Size of the IRB buffer, may be 0 - @param iptcData Iptc data to embed, may be empty - @return A data buffer containing the new IRB buffer, may have 0 size - */ - static DataBuf setIptcIrb(const byte* pPsData, - long sizePsData, - const IptcData& iptcData); - - }; // class Photoshop - - /*! - @brief Abstract helper base class to access JPEG images. - */ - class EXIV2API JpegBase : public Image { - public: - //! @name Manipulators - //@{ - void readMetadata(); - void writeMetadata(); - //@} - - protected: - //! @name Creators - //@{ - /*! - @brief Constructor that can either open an existing image or create - a new image from scratch. If a new image is to be created, any - existing data is overwritten. - @param type Image type. - @param io An auto-pointer that owns a BasicIo instance used for - reading and writing image metadata. \b Important: The constructor - takes ownership of the passed in BasicIo instance through the - auto-pointer. Callers should not continue to use the BasicIo - instance after it is passed to this method. Use the Image::io() - method to get a temporary reference. - @param create Specifies if an existing image should be read (false) - or if a new image should be created (true). - @param initData Data to initialize newly created images. Only used - when \em create is true. Should contain data for the smallest - valid image of the calling subclass. - @param dataSize Size of initData in bytes. - */ - JpegBase(int type, - BasicIo::AutoPtr io, - bool create, - const byte initData[], - long dataSize); - //@} - - //! @name Accessors - //@{ - /*! - @brief Determine if the content of the BasicIo instance is of the - type supported by this class. - - The advance flag determines if the read position in the stream is - moved (see below). This applies only if the type matches and the - function returns true. If the type does not match, the stream - position is not changed. However, if reading from the stream fails, - the stream position is undefined. Consult the stream state to obtain - more information in this case. - - @param iIo BasicIo instance to read from. - @param advance Flag indicating whether the position of the io - should be advanced by the number of characters read to - analyse the data (true) or left at its original - position (false). This applies only if the type matches. - @return true if the data matches the type of this class;
- false if the data does not match - */ - virtual bool isThisType(BasicIo& iIo, bool advance) const =0; - //@} - - //! @name Manipulators - //@{ - /*! - @brief Writes the image header (aka signature) to the BasicIo instance. - @param oIo BasicIo instance that the header is written to. - @return 0 if successful;
- 4 if the output file can not be written to - */ - virtual int writeHeader(BasicIo& oIo) const =0; - //@} - - // Constant Data - static const byte sos_; //!< JPEG SOS marker - static const byte eoi_; //!< JPEG EOI marker - static const byte app0_; //!< JPEG APP0 marker - static const byte app1_; //!< JPEG APP1 marker - static const byte app13_; //!< JPEG APP13 marker - static const byte com_; //!< JPEG Comment marker - static const byte sof0_; //!< JPEG Start-Of-Frame marker - static const byte sof1_; //!< JPEG Start-Of-Frame marker - static const byte sof2_; //!< JPEG Start-Of-Frame marker - static const byte sof3_; //!< JPEG Start-Of-Frame marker - static const byte sof5_; //!< JPEG Start-Of-Frame marker - static const byte sof6_; //!< JPEG Start-Of-Frame marker - static const byte sof7_; //!< JPEG Start-Of-Frame marker - static const byte sof9_; //!< JPEG Start-Of-Frame marker - static const byte sof10_; //!< JPEG Start-Of-Frame marker - static const byte sof11_; //!< JPEG Start-Of-Frame marker - static const byte sof13_; //!< JPEG Start-Of-Frame marker - static const byte sof14_; //!< JPEG Start-Of-Frame marker - static const byte sof15_; //!< JPEG Start-Of-Frame marker - static const char exifId_[]; //!< Exif identifier - static const char jfifId_[]; //!< JFIF identifier - static const char xmpId_[]; //!< XMP packet identifier - - private: - //! @name NOT implemented - //@{ - //! Default constructor. - JpegBase(); - //! Copy constructor - JpegBase(const JpegBase& rhs); - //! Assignment operator - JpegBase& operator=(const JpegBase& rhs); - //@} - - //! @name Manipulators - //@{ - /*! - @brief Initialize the image with the provided data. - @param initData Data to be written to the associated BasicIo - @param dataSize Size in bytes of data to be written - @return 0 if successful;
- 4 if the image can not be written to. - */ - EXV_DLLLOCAL int initImage(const byte initData[], long dataSize); - /*! - @brief Provides the main implementation of writeMetadata() by - writing all buffered metadata to the provided BasicIo. - @param oIo BasicIo instance to write to (a temporary location). - - @return 4 if opening or writing to the associated BasicIo fails - */ - EXV_DLLLOCAL void doWriteMetadata(BasicIo& oIo); - //@} - - //! @name Accessors - //@{ - /*! - @brief Advances associated io instance to one byte past the next - Jpeg marker and returns the marker. This method should be called - when the BasicIo instance is positioned one byte past the end of a - Jpeg segment. - @return the next Jpeg segment marker if successful;
- -1 if a maker was not found before EOF - */ - EXV_DLLLOCAL int advanceToMarker() const; - //@} - - }; // class JpegBase - - /*! - @brief Class to access JPEG images - */ - class EXIV2API JpegImage : public JpegBase { - friend EXIV2API bool isJpegType(BasicIo& iIo, bool advance); - public: - //! @name Creators - //@{ - /*! - @brief Constructor that can either open an existing Jpeg image or create - a new image from scratch. If a new image is to be created, any - existing data is overwritten. Since the constructor can not return - a result, callers should check the good() method after object - construction to determine success or failure. - @param io An auto-pointer that owns a BasicIo instance used for - reading and writing image metadata. \b Important: The constructor - takes ownership of the passed in BasicIo instance through the - auto-pointer. Callers should not continue to use the BasicIo - instance after it is passed to this method. Use the Image::io() - method to get a temporary reference. - @param create Specifies if an existing image should be read (false) - or if a new file should be created (true). - */ - JpegImage(BasicIo::AutoPtr io, bool create); - //@} - //! @name Accessors - //@{ - std::string mimeType() const; - //@} - - protected: - //! @name Accessors - //@{ - bool isThisType(BasicIo& iIo, bool advance) const; - //@} - //! @name Manipulators - //@{ - /*! - @brief Writes a Jpeg header (aka signature) to the BasicIo instance. - @param oIo BasicIo instance that the header is written to. - @return 0 if successful;
- 2 if the input image is invalid or can not be read;
- 4 if the temporary image can not be written to;
- -3 other temporary errors - */ - int writeHeader(BasicIo& oIo) const; - //@} - - private: - // Constant data - static const byte soi_; // SOI marker - static const byte blank_[]; // Minimal Jpeg image - - // NOT Implemented - //! Default constructor - JpegImage(); - //! Copy constructor - JpegImage(const JpegImage& rhs); - //! Assignment operator - JpegImage& operator=(const JpegImage& rhs); - - }; // class JpegImage - - //! Helper class to access %Exiv2 files - class EXIV2API ExvImage : public JpegBase { - friend EXIV2API bool isExvType(BasicIo& iIo, bool advance); - public: - //! @name Creators - //@{ - /*! - @brief Constructor that can either open an existing EXV image or create - a new image from scratch. If a new image is to be created, any - existing data is overwritten. Since the constructor can not return - a result, callers should check the good() method after object - construction to determine success or failure. - @param io An auto-pointer that owns a BasicIo instance used for - reading and writing image metadata. \b Important: The constructor - takes ownership of the passed in BasicIo instance through the - auto-pointer. Callers should not continue to use the BasicIo - instance after it is passed to this method. Use the Image::io() - method to get a temporary reference. - @param create Specifies if an existing image should be read (false) - or if a new file should be created (true). - */ - ExvImage(BasicIo::AutoPtr io, bool create); - //@} - //! @name Accessors - //@{ - std::string mimeType() const; - //@} - - protected: - //! @name Accessors - //@{ - bool isThisType(BasicIo& iIo, bool advance) const; - //@} - //! @name Manipulators - //@{ - int writeHeader(BasicIo& oIo) const; - //@} - - private: - // Constant data - static const char exiv2Id_[]; // EXV identifier - static const byte blank_[]; // Minimal exiv2 file - - // NOT Implemented - //! Default constructor - ExvImage(); - //! Copy constructor - ExvImage(const ExvImage& rhs); - //! Assignment operator - ExvImage& operator=(const ExvImage& rhs); - - }; // class ExvImage - -// ***************************************************************************** -// template, inline and free functions - - // These could be static private functions on Image subclasses but then - // ImageFactory needs to be made a friend. - /*! - @brief Create a new JpegImage instance and return an auto-pointer to it. - Caller owns the returned object and the auto-pointer ensures that - it will be deleted. - */ - EXIV2API Image::AutoPtr newJpegInstance(BasicIo::AutoPtr io, bool create); - //! Check if the file iIo is a JPEG image. - EXIV2API bool isJpegType(BasicIo& iIo, bool advance); - /*! - @brief Create a new ExvImage instance and return an auto-pointer to it. - Caller owns the returned object and the auto-pointer ensures that - it will be deleted. - */ - EXIV2API Image::AutoPtr newExvInstance(BasicIo::AutoPtr io, bool create); - //! Check if the file iIo is an EXV file - EXIV2API bool isExvType(BasicIo& iIo, bool advance); - -} // namespace Exiv2 - -#endif // #ifndef JPGIMAGE_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/localtime.c b/platform/win32/msvc/external/exiv2/src/localtime.c deleted file mode 100644 index 71e39b3e3a1..00000000000 --- a/platform/win32/msvc/external/exiv2/src/localtime.c +++ /dev/null @@ -1,1442 +0,0 @@ -/*! - @file localtime.c - @brief This file is from the tz distribution at ftp://elsie.nci.nih.gov/pub/ - @version $Rev: 2347 $ -*/ - -#ifdef _MSC_VER -# include "exv_msvc.h" -# define tzname _tzname -#else -# include "exv_conf.h" -#endif - -#include "timegm.h" - -/* -** This file is in the public domain, so clarified as of -** 1996-06-05 by Arthur David Olson (arthur_david_olson@nih.gov). -*/ - -#ifndef lint -#ifndef NOID -static char elsieid[] = "@(#)localtime.c 7.78"; -#endif /* !defined NOID */ -#endif /* !defined lint */ - -/* -** Leap second handling from Bradley White (bww@k.gp.cs.cmu.edu). -** POSIX-style TZ environment variable handling from Guy Harris -** (guy@auspex.com). -*/ - -/*LINTLIBRARY*/ - -#include "private.h" -#include "tzfile.h" -#include "fcntl.h" - -/* -** SunOS 4.1.1 headers lack O_BINARY. -*/ - -#ifdef O_BINARY -#define OPEN_MODE (O_RDONLY | O_BINARY) -#endif /* defined O_BINARY */ -#ifndef O_BINARY -#define OPEN_MODE O_RDONLY -#endif /* !defined O_BINARY */ - -#ifndef WILDABBR -/* -** Someone might make incorrect use of a time zone abbreviation: -** 1. They might reference tzname[0] before calling tzset (explicitly -** or implicitly). -** 2. They might reference tzname[1] before calling tzset (explicitly -** or implicitly). -** 3. They might reference tzname[1] after setting to a time zone -** in which Daylight Saving Time is never observed. -** 4. They might reference tzname[0] after setting to a time zone -** in which Standard Time is never observed. -** 5. They might reference tm.TM_ZONE after calling offtime. -** What's best to do in the above cases is open to debate; -** for now, we just set things up so that in any of the five cases -** WILDABBR is used. Another possibility: initialize tzname[0] to the -** string "tzname[0] used before set", and similarly for the other cases. -** And another: initialize tzname[0] to "ERA", with an explanation in the -** manual page of what this "time zone abbreviation" means (doing this so -** that tzname[0] has the "normal" length of three characters). -*/ -#define WILDABBR " " -#endif /* !defined WILDABBR */ - -/* ahu: added conditional */ -#ifdef TM_ZONE -static char wildabbr[] = "WILDABBR"; -#endif /* TM_ZONE */ - -static const char gmt[] = "GMT"; - -/* -** The DST rules to use if TZ has no rules and we can't load TZDEFRULES. -** We default to US rules as of 1999-08-17. -** POSIX 1003.1 section 8.1.1 says that the default DST rules are -** implementation dependent; for historical reasons, US rules are a -** common default. -*/ -#ifndef TZDEFRULESTRING -#define TZDEFRULESTRING ",M4.1.0,M10.5.0" -#endif /* !defined TZDEFDST */ - -struct ttinfo { /* time type information */ - long tt_gmtoff; /* UTC offset in seconds */ - int tt_isdst; /* used to set tm_isdst */ - size_t tt_abbrind; /* abbreviation list index */ - int tt_ttisstd; /* TRUE if transition is std time */ - int tt_ttisgmt; /* TRUE if transition is UTC */ -}; - -struct lsinfo { /* leap second information */ - time_t ls_trans; /* transition time */ - long ls_corr; /* correction to apply */ -}; - -#define BIGGEST(a, b) (((a) > (b)) ? (a) : (b)) - -#ifdef TZNAME_MAX -#define MY_TZNAME_MAX TZNAME_MAX -#endif /* defined TZNAME_MAX */ -#ifndef TZNAME_MAX -#define MY_TZNAME_MAX 255 -#endif /* !defined TZNAME_MAX */ - -struct state { - int leapcnt; - int timecnt; - int typecnt; - size_t charcnt; - time_t ats[TZ_MAX_TIMES]; - unsigned char types[TZ_MAX_TIMES]; - struct ttinfo ttis[TZ_MAX_TYPES]; - char chars[BIGGEST(BIGGEST(TZ_MAX_CHARS + 1, sizeof gmt), - (2 * (MY_TZNAME_MAX + 1)))]; - struct lsinfo lsis[TZ_MAX_LEAPS]; -}; - -struct rule { - int r_type; /* type of rule--see below */ - int r_day; /* day number of rule */ - int r_week; /* week number of rule */ - int r_mon; /* month number of rule */ - long r_time; /* transition time of rule */ -}; - -#define JULIAN_DAY 0 /* Jn - Julian day */ -#define DAY_OF_YEAR 1 /* n - day of year */ -#define MONTH_NTH_DAY_OF_WEEK 2 /* Mm.n.d - month, week, day of week */ - -/* -** Prototypes for static functions. -*/ - -/* ahu: deleted declaration of detzcode */ -static const char * getzname P((const char * strp)); -static const char * getnum P((const char * strp, int * nump, int min, - int max)); -static const char * getsecs P((const char * strp, long * secsp)); -static const char * getoffset P((const char * strp, long * offsetp)); -static const char * getrule P((const char * strp, struct rule * rulep)); -static void gmtload P((struct state * sp)); -static void gmtsub P((const time_t * timep, long offset, - struct tm * tmp)); -static void localsub P((const time_t * timep, long offset, - struct tm * tmp)); -static int increment_overflow P((int * number, int delta)); -static int normalize_overflow P((int * tensptr, int * unitsptr, - int base)); -/* ahu: deleted declaration of settzname */ -static time_t time1 P((struct tm * tmp, - void(*funcp) P((const time_t *, - long, struct tm *)), - long offset)); -static time_t time2 P((struct tm *tmp, - void(*funcp) P((const time_t *, - long, struct tm*)), - long offset, int * okayp)); -static time_t time2sub P((struct tm *tmp, - void(*funcp) P((const time_t *, - long, struct tm*)), - long offset, int * okayp, int do_norm_secs)); -static void timesub P((const time_t * timep, long offset, - const struct state * sp, struct tm * tmp)); -static int tmcomp P((const struct tm * atmp, - const struct tm * btmp)); -static time_t transtime P((time_t janfirst, int year, - const struct rule * rulep, long offset)); -static int tzload P((const char * name, struct state * sp)); -static int tzparse P((const char * name, struct state * sp, - int lastditch)); - -#ifdef ALL_STATE -static struct state * lclptr; -static struct state * gmtptr; -#endif /* defined ALL_STATE */ - -#ifndef ALL_STATE -static struct state lclmem; -static struct state gmtmem; -#define lclptr (&lclmem) -#define gmtptr (&gmtmem) -#endif /* State Farm */ - -#ifndef TZ_STRLEN_MAX -#define TZ_STRLEN_MAX 255 -#endif /* !defined TZ_STRLEN_MAX */ - -/* ahu: deleted definition of lcl_TZname[] and lcl_is_set */ -static int gmt_is_set; - -/* ahu: deleted definition of tzname[] */ - -/* -** Section 4.12.3 of X3.159-1989 requires that -** Except for the strftime function, these functions [asctime, -** ctime, gmtime, localtime] return values in one of two static -** objects: a broken-down time structure and an array of char. -** Thanks to Paul Eggert (eggert@twinsun.com) for noting this. -*/ - -/* deleted definition of tm */ - -#ifdef USG_COMPAT -time_t timezone = 0; -int daylight = 0; -#endif /* defined USG_COMPAT */ - -#ifdef ALTZONE -time_t altzone = 0; -#endif /* defined ALTZONE */ - -static long -detzcode(codep) -const char * const codep; -{ - register long result; - register int i; - - result = (codep[0] & 0x80) ? ~0L : 0L; - for (i = 0; i < 4; ++i) - result = (result << 8) | (codep[i] & 0xff); - return result; -} - -/* ahu: deleted definition of settzname */ - -static int -tzload(name, sp) -register const char * name; -register struct state * const sp; -{ - register const char * p; - register int i; - register int fid; - - if (name == NULL && (name = TZDEFAULT) == NULL) - return -1; - { - register int doaccess; - /* - ** Section 4.9.1 of the C standard says that - ** "FILENAME_MAX expands to an integral constant expression - ** that is the size needed for an array of char large enough - ** to hold the longest file name string that the implementation - ** guarantees can be opened." - */ - char fullname[FILENAME_MAX + 1]; - - if (name[0] == ':') - ++name; - doaccess = name[0] == '/'; - if (!doaccess) { - if ((p = TZDIR) == NULL) - return -1; - if ((strlen(p) + strlen(name) + 1) >= sizeof fullname) - return -1; - (void) strcpy(fullname, p); - (void) strcat(fullname, "/"); - (void) strcat(fullname, name); - /* - ** Set doaccess if '.' (as in "../") shows up in name. - */ - if (strchr(name, '.') != NULL) - doaccess = TRUE; - name = fullname; - } - if (doaccess && access(name, R_OK) != 0) - return -1; - if ((fid = open(name, OPEN_MODE)) == -1) - return -1; - } - { - struct tzhead * tzhp; - union { - struct tzhead tzhead; - char buf[sizeof *sp + sizeof *tzhp]; - } u; - int ttisstdcnt; - int ttisgmtcnt; - - i = read(fid, u.buf, sizeof u.buf); - if (close(fid) != 0) - return -1; - ttisstdcnt = (int) detzcode(u.tzhead.tzh_ttisstdcnt); - ttisgmtcnt = (int) detzcode(u.tzhead.tzh_ttisgmtcnt); - sp->leapcnt = (int) detzcode(u.tzhead.tzh_leapcnt); - sp->timecnt = (int) detzcode(u.tzhead.tzh_timecnt); - sp->typecnt = (int) detzcode(u.tzhead.tzh_typecnt); - sp->charcnt = detzcode(u.tzhead.tzh_charcnt); - p = u.tzhead.tzh_charcnt + sizeof u.tzhead.tzh_charcnt; - if (sp->leapcnt < 0 || sp->leapcnt > TZ_MAX_LEAPS || - sp->typecnt <= 0 || sp->typecnt > TZ_MAX_TYPES || - sp->timecnt < 0 || sp->timecnt > TZ_MAX_TIMES || - sp->charcnt < 0 || sp->charcnt > TZ_MAX_CHARS || - (ttisstdcnt != sp->typecnt && ttisstdcnt != 0) || - (ttisgmtcnt != sp->typecnt && ttisgmtcnt != 0)) - return -1; - if (i - (p - u.buf) < sp->timecnt * 4 + /* ats */ - sp->timecnt + /* types */ - sp->typecnt * (4 + 2) + /* ttinfos */ - (int)sp->charcnt + /* chars */ - sp->leapcnt * (4 + 4) + /* lsinfos */ - ttisstdcnt + /* ttisstds */ - ttisgmtcnt) /* ttisgmts */ - return -1; - for (i = 0; i < sp->timecnt; ++i) { - sp->ats[i] = detzcode(p); - p += 4; - } - for (i = 0; i < sp->timecnt; ++i) { - sp->types[i] = (unsigned char) *p++; - if (sp->types[i] >= sp->typecnt) - return -1; - } - for (i = 0; i < sp->typecnt; ++i) { - register struct ttinfo * ttisp; - - ttisp = &sp->ttis[i]; - ttisp->tt_gmtoff = detzcode(p); - p += 4; - ttisp->tt_isdst = (unsigned char) *p++; - if (ttisp->tt_isdst != 0 && ttisp->tt_isdst != 1) - return -1; - ttisp->tt_abbrind = (unsigned char) *p++; - if (ttisp->tt_abbrind < 0 || - ttisp->tt_abbrind > sp->charcnt) - return -1; - } - for (i = 0; i < (int)sp->charcnt; ++i) - sp->chars[i] = *p++; - sp->chars[i] = '\0'; /* ensure '\0' at end */ - for (i = 0; i < sp->leapcnt; ++i) { - register struct lsinfo * lsisp; - - lsisp = &sp->lsis[i]; - lsisp->ls_trans = detzcode(p); - p += 4; - lsisp->ls_corr = detzcode(p); - p += 4; - } - for (i = 0; i < sp->typecnt; ++i) { - register struct ttinfo * ttisp; - - ttisp = &sp->ttis[i]; - if (ttisstdcnt == 0) - ttisp->tt_ttisstd = FALSE; - else { - ttisp->tt_ttisstd = *p++; - if (ttisp->tt_ttisstd != TRUE && - ttisp->tt_ttisstd != FALSE) - return -1; - } - } - for (i = 0; i < sp->typecnt; ++i) { - register struct ttinfo * ttisp; - - ttisp = &sp->ttis[i]; - if (ttisgmtcnt == 0) - ttisp->tt_ttisgmt = FALSE; - else { - ttisp->tt_ttisgmt = *p++; - if (ttisp->tt_ttisgmt != TRUE && - ttisp->tt_ttisgmt != FALSE) - return -1; - } - } - } - return 0; -} - -static const int mon_lengths[2][MONSPERYEAR] = { - { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, - { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } -}; - -static const int year_lengths[2] = { - DAYSPERNYEAR, DAYSPERLYEAR -}; - -/* -** Given a pointer into a time zone string, scan until a character that is not -** a valid character in a zone name is found. Return a pointer to that -** character. -*/ - -static const char * -getzname(strp) -register const char * strp; -{ - register char c; - - while ((c = *strp) != '\0' && !is_digit(c) && c != ',' && c != '-' && - c != '+') - ++strp; - return strp; -} - -/* -** Given a pointer into a time zone string, extract a number from that string. -** Check that the number is within a specified range; if it is not, return -** NULL. -** Otherwise, return a pointer to the first character not part of the number. -*/ - -static const char * -getnum(strp, nump, min, max) -register const char * strp; -int * const nump; -const int min; -const int max; -{ - register char c; - register int num; - - if (strp == NULL || !is_digit(c = *strp)) - return NULL; - num = 0; - do { - num = num * 10 + (c - '0'); - if (num > max) - return NULL; /* illegal value */ - c = *++strp; - } while (is_digit(c)); - if (num < min) - return NULL; /* illegal value */ - *nump = num; - return strp; -} - -/* -** Given a pointer into a time zone string, extract a number of seconds, -** in hh[:mm[:ss]] form, from the string. -** If any error occurs, return NULL. -** Otherwise, return a pointer to the first character not part of the number -** of seconds. -*/ - -static const char * -getsecs(strp, secsp) -register const char * strp; -long * const secsp; -{ - int num; - - /* - ** `HOURSPERDAY * DAYSPERWEEK - 1' allows quasi-Posix rules like - ** "M10.4.6/26", which does not conform to Posix, - ** but which specifies the equivalent of - ** ``02:00 on the first Sunday on or after 23 Oct''. - */ - strp = getnum(strp, &num, 0, HOURSPERDAY * DAYSPERWEEK - 1); - if (strp == NULL) - return NULL; - *secsp = num * (long) SECSPERHOUR; - if (*strp == ':') { - ++strp; - strp = getnum(strp, &num, 0, MINSPERHOUR - 1); - if (strp == NULL) - return NULL; - *secsp += num * SECSPERMIN; - if (*strp == ':') { - ++strp; - /* `SECSPERMIN' allows for leap seconds. */ - strp = getnum(strp, &num, 0, SECSPERMIN); - if (strp == NULL) - return NULL; - *secsp += num; - } - } - return strp; -} - -/* -** Given a pointer into a time zone string, extract an offset, in -** [+-]hh[:mm[:ss]] form, from the string. -** If any error occurs, return NULL. -** Otherwise, return a pointer to the first character not part of the time. -*/ - -static const char * -getoffset(strp, offsetp) -register const char * strp; -long * const offsetp; -{ - register int neg = 0; - - if (*strp == '-') { - neg = 1; - ++strp; - } else if (*strp == '+') - ++strp; - strp = getsecs(strp, offsetp); - if (strp == NULL) - return NULL; /* illegal time */ - if (neg) - *offsetp = -*offsetp; - return strp; -} - -/* -** Given a pointer into a time zone string, extract a rule in the form -** date[/time]. See POSIX section 8 for the format of "date" and "time". -** If a valid rule is not found, return NULL. -** Otherwise, return a pointer to the first character not part of the rule. -*/ - -static const char * -getrule(strp, rulep) -const char * strp; -register struct rule * const rulep; -{ - if (*strp == 'J') { - /* - ** Julian day. - */ - rulep->r_type = JULIAN_DAY; - ++strp; - strp = getnum(strp, &rulep->r_day, 1, DAYSPERNYEAR); - } else if (*strp == 'M') { - /* - ** Month, week, day. - */ - rulep->r_type = MONTH_NTH_DAY_OF_WEEK; - ++strp; - strp = getnum(strp, &rulep->r_mon, 1, MONSPERYEAR); - if (strp == NULL) - return NULL; - if (*strp++ != '.') - return NULL; - strp = getnum(strp, &rulep->r_week, 1, 5); - if (strp == NULL) - return NULL; - if (*strp++ != '.') - return NULL; - strp = getnum(strp, &rulep->r_day, 0, DAYSPERWEEK - 1); - } else if (is_digit(*strp)) { - /* - ** Day of year. - */ - rulep->r_type = DAY_OF_YEAR; - strp = getnum(strp, &rulep->r_day, 0, DAYSPERLYEAR - 1); - } else return NULL; /* invalid format */ - if (strp == NULL) - return NULL; - if (*strp == '/') { - /* - ** Time specified. - */ - ++strp; - strp = getsecs(strp, &rulep->r_time); - } else rulep->r_time = 2 * SECSPERHOUR; /* default = 2:00:00 */ - return strp; -} - -/* -** Given the Epoch-relative time of January 1, 00:00:00 UTC, in a year, the -** year, a rule, and the offset from UTC at the time that rule takes effect, -** calculate the Epoch-relative time that rule takes effect. -*/ - -static time_t -transtime(janfirst, year, rulep, offset) -const time_t janfirst; -const int year; -register const struct rule * const rulep; -const long offset; -{ - register int leapyear; - register time_t value; - register int i; - int d, m1, yy0, yy1, yy2, dow; - - INITIALIZE(value); - leapyear = isleap(year); - switch (rulep->r_type) { - - case JULIAN_DAY: - /* - ** Jn - Julian day, 1 == January 1, 60 == March 1 even in leap - ** years. - ** In non-leap years, or if the day number is 59 or less, just - ** add SECSPERDAY times the day number-1 to the time of - ** January 1, midnight, to get the day. - */ - value = janfirst + (rulep->r_day - 1) * SECSPERDAY; - if (leapyear && rulep->r_day >= 60) - value += SECSPERDAY; - break; - - case DAY_OF_YEAR: - /* - ** n - day of year. - ** Just add SECSPERDAY times the day number to the time of - ** January 1, midnight, to get the day. - */ - value = janfirst + rulep->r_day * SECSPERDAY; - break; - - case MONTH_NTH_DAY_OF_WEEK: - /* - ** Mm.n.d - nth "dth day" of month m. - */ - value = janfirst; - for (i = 0; i < rulep->r_mon - 1; ++i) - value += mon_lengths[leapyear][i] * SECSPERDAY; - - /* - ** Use Zeller's Congruence to get day-of-week of first day of - ** month. - */ - m1 = (rulep->r_mon + 9) % 12 + 1; - yy0 = (rulep->r_mon <= 2) ? (year - 1) : year; - yy1 = yy0 / 100; - yy2 = yy0 % 100; - dow = ((26 * m1 - 2) / 10 + - 1 + yy2 + yy2 / 4 + yy1 / 4 - 2 * yy1) % 7; - if (dow < 0) - dow += DAYSPERWEEK; - - /* - ** "dow" is the day-of-week of the first day of the month. Get - ** the day-of-month (zero-origin) of the first "dow" day of the - ** month. - */ - d = rulep->r_day - dow; - if (d < 0) - d += DAYSPERWEEK; - for (i = 1; i < rulep->r_week; ++i) { - if (d + DAYSPERWEEK >= - mon_lengths[leapyear][rulep->r_mon - 1]) - break; - d += DAYSPERWEEK; - } - - /* - ** "d" is the day-of-month (zero-origin) of the day we want. - */ - value += d * SECSPERDAY; - break; - } - - /* - ** "value" is the Epoch-relative time of 00:00:00 UTC on the day in - ** question. To get the Epoch-relative time of the specified local - ** time on that day, add the transition time and the current offset - ** from UTC. - */ - return value + rulep->r_time + offset; -} - -/* -** Given a POSIX section 8-style TZ string, fill in the rule tables as -** appropriate. -*/ - -static int -tzparse(name, sp, lastditch) -const char * name; -register struct state * const sp; -const int lastditch; -{ - const char * stdname; - const char * dstname; - size_t stdlen; - size_t dstlen; - long stdoffset; - long dstoffset; - register time_t * atp; - register unsigned char * typep; - register char * cp; - register int load_result; - - INITIALIZE(dstname); - stdname = name; - if (lastditch) { - stdlen = strlen(name); /* length of standard zone name */ - name += stdlen; - if (stdlen >= sizeof sp->chars) - stdlen = (sizeof sp->chars) - 1; - stdoffset = 0; - } else { - name = getzname(name); - stdlen = name - stdname; - if (stdlen < 3) - return -1; - if (*name == '\0') - return -1; - name = getoffset(name, &stdoffset); - if (name == NULL) - return -1; - } - load_result = tzload(TZDEFRULES, sp); - if (load_result != 0) - sp->leapcnt = 0; /* so, we're off a little */ - if (*name != '\0') { - dstname = name; - name = getzname(name); - dstlen = name - dstname; /* length of DST zone name */ - if (dstlen < 3) - return -1; - if (*name != '\0' && *name != ',' && *name != ';') { - name = getoffset(name, &dstoffset); - if (name == NULL) - return -1; - } else dstoffset = stdoffset - SECSPERHOUR; - if (*name == '\0' && load_result != 0) - name = TZDEFRULESTRING; - if (*name == ',' || *name == ';') { - struct rule start; - struct rule end; - register int year; - register time_t janfirst; - time_t starttime; - time_t endtime; - - ++name; - if ((name = getrule(name, &start)) == NULL) - return -1; - if (*name++ != ',') - return -1; - if ((name = getrule(name, &end)) == NULL) - return -1; - if (*name != '\0') - return -1; - sp->typecnt = 2; /* standard time and DST */ - /* - ** Two transitions per year, from EPOCH_YEAR to 2037. - */ - sp->timecnt = 2 * (2037 - EPOCH_YEAR + 1); - if (sp->timecnt > TZ_MAX_TIMES) - return -1; - sp->ttis[0].tt_gmtoff = -dstoffset; - sp->ttis[0].tt_isdst = 1; - sp->ttis[0].tt_abbrind = stdlen + 1; - sp->ttis[1].tt_gmtoff = -stdoffset; - sp->ttis[1].tt_isdst = 0; - sp->ttis[1].tt_abbrind = 0; - atp = sp->ats; - typep = sp->types; - janfirst = 0; - for (year = EPOCH_YEAR; year <= 2037; ++year) { - starttime = transtime(janfirst, year, &start, - stdoffset); - endtime = transtime(janfirst, year, &end, - dstoffset); - if (starttime > endtime) { - *atp++ = endtime; - *typep++ = 1; /* DST ends */ - *atp++ = starttime; - *typep++ = 0; /* DST begins */ - } else { - *atp++ = starttime; - *typep++ = 0; /* DST begins */ - *atp++ = endtime; - *typep++ = 1; /* DST ends */ - } - janfirst += year_lengths[isleap(year)] * - SECSPERDAY; - } - } else { - register long theirstdoffset; - register long theirdstoffset; - register long theiroffset; - register int isdst; - register int i; - register int j; - - if (*name != '\0') - return -1; - /* - ** Initial values of theirstdoffset and theirdstoffset. - */ - theirstdoffset = 0; - for (i = 0; i < sp->timecnt; ++i) { - j = sp->types[i]; - if (!sp->ttis[j].tt_isdst) { - theirstdoffset = - -sp->ttis[j].tt_gmtoff; - break; - } - } - theirdstoffset = 0; - for (i = 0; i < sp->timecnt; ++i) { - j = sp->types[i]; - if (sp->ttis[j].tt_isdst) { - theirdstoffset = - -sp->ttis[j].tt_gmtoff; - break; - } - } - /* - ** Initially we're assumed to be in standard time. - */ - isdst = FALSE; - theiroffset = theirstdoffset; - /* - ** Now juggle transition times and types - ** tracking offsets as you do. - */ - for (i = 0; i < sp->timecnt; ++i) { - j = sp->types[i]; - sp->types[i] = sp->ttis[j].tt_isdst; - if (sp->ttis[j].tt_ttisgmt) { - /* No adjustment to transition time */ - } else { - /* - ** If summer time is in effect, and the - ** transition time was not specified as - ** standard time, add the summer time - ** offset to the transition time; - ** otherwise, add the standard time - ** offset to the transition time. - */ - /* - ** Transitions from DST to DDST - ** will effectively disappear since - ** POSIX provides for only one DST - ** offset. - */ - if (isdst && !sp->ttis[j].tt_ttisstd) { - sp->ats[i] += dstoffset - - theirdstoffset; - } else { - sp->ats[i] += stdoffset - - theirstdoffset; - } - } - theiroffset = -sp->ttis[j].tt_gmtoff; - if (sp->ttis[j].tt_isdst) - theirdstoffset = theiroffset; - else theirstdoffset = theiroffset; - } - /* - ** Finally, fill in ttis. - ** ttisstd and ttisgmt need not be handled. - */ - sp->ttis[0].tt_gmtoff = -stdoffset; - sp->ttis[0].tt_isdst = FALSE; - sp->ttis[0].tt_abbrind = 0; - sp->ttis[1].tt_gmtoff = -dstoffset; - sp->ttis[1].tt_isdst = TRUE; - sp->ttis[1].tt_abbrind = stdlen + 1; - sp->typecnt = 2; - } - } else { - dstlen = 0; - sp->typecnt = 1; /* only standard time */ - sp->timecnt = 0; - sp->ttis[0].tt_gmtoff = -stdoffset; - sp->ttis[0].tt_isdst = 0; - sp->ttis[0].tt_abbrind = 0; - } - sp->charcnt = stdlen + 1; - if (dstlen != 0) - sp->charcnt += dstlen + 1; - if ((size_t) sp->charcnt > sizeof sp->chars) - return -1; - cp = sp->chars; - (void) strncpy(cp, stdname, stdlen); - cp += stdlen; - *cp++ = '\0'; - if (dstlen != 0) { - (void) strncpy(cp, dstname, dstlen); - *(cp + dstlen) = '\0'; - } - return 0; -} - -static void -gmtload(sp) -struct state * const sp; -{ - if (tzload(gmt, sp) != 0) - (void) tzparse(gmt, sp, TRUE); -} - -/* ahu: deleted definition of tzsetwall */ - -/* ahu: deleted definition of tzset */ - -/* -** The easy way to behave "as if no library function calls" localtime -** is to not call it--so we drop its guts into "localsub", which can be -** freely called. (And no, the PANS doesn't require the above behavior-- -** but it *is* desirable.) -** -** The unused offset argument is for the benefit of mktime variants. -*/ - -/*ARGSUSED*/ -static void -localsub(timep, offset, tmp) -const time_t * const timep; -const long offset; -struct tm * const tmp; -{ - register struct state * sp; - register const struct ttinfo * ttisp; - register int i; - const time_t t = *timep; - - sp = lclptr; -#ifdef ALL_STATE - if (sp == NULL) { - gmtsub(timep, offset, tmp); - return; - } -#endif /* defined ALL_STATE */ - if (sp->timecnt == 0 || t < sp->ats[0]) { - i = 0; - while (sp->ttis[i].tt_isdst) - if (++i >= sp->typecnt) { - i = 0; - break; - } - } else { - for (i = 1; i < sp->timecnt; ++i) - if (t < sp->ats[i]) - break; - i = sp->types[i - 1]; - } - ttisp = &sp->ttis[i]; - /* - ** To get (wrong) behavior that's compatible with System V Release 2.0 - ** you'd replace the statement below with - ** t += ttisp->tt_gmtoff; - ** timesub(&t, 0L, sp, tmp); - */ - timesub(&t, ttisp->tt_gmtoff, sp, tmp); - tmp->tm_isdst = ttisp->tt_isdst; - tzname[tmp->tm_isdst] = &sp->chars[ttisp->tt_abbrind]; -#ifdef TM_ZONE - tmp->TM_ZONE = &sp->chars[ttisp->tt_abbrind]; -#endif /* defined TM_ZONE */ -} - -/* ahu: deleted definition of localtime */ - -/* ahu: deleted definition of localtime_r */ - -/* -** gmtsub is to gmtime as localsub is to localtime. -*/ - -static void -gmtsub(timep, offset, tmp) -const time_t * const timep; -const long offset; -struct tm * const tmp; -{ - if (!gmt_is_set) { - gmt_is_set = TRUE; -#ifdef ALL_STATE - gmtptr = (struct state *) malloc(sizeof *gmtptr); - if (gmtptr != NULL) -#endif /* defined ALL_STATE */ - gmtload(gmtptr); - } - timesub(timep, offset, gmtptr, tmp); -#ifdef TM_ZONE - /* - ** Could get fancy here and deliver something such as - ** "UTC+xxxx" or "UTC-xxxx" if offset is non-zero, - ** but this is no time for a treasure hunt. - */ - if (offset != 0) - tmp->TM_ZONE = wildabbr; - else { -#ifdef ALL_STATE - if (gmtptr == NULL) - tmp->TM_ZONE = gmt; - else tmp->TM_ZONE = gmtptr->chars; -#endif /* defined ALL_STATE */ -#ifndef ALL_STATE - tmp->TM_ZONE = gmtptr->chars; -#endif /* State Farm */ - } -#endif /* defined TM_ZONE */ -} - -/* ahu: deleted definition of gmtime */ - -/* ahu: deleted definition of gmtime_r */ - -/* ahu: deleted definition of offtime */ - -static void -timesub(timep, offset, sp, tmp) -const time_t * const timep; -const long offset; -register const struct state * const sp; -register struct tm * const tmp; -{ - register const struct lsinfo * lp; - register long days; - register long rem; - register int y; - register int yleap; - register const int * ip; - register long corr; - register int hit; - register int i; - - corr = 0; - hit = 0; -#ifdef ALL_STATE - i = (sp == NULL) ? 0 : sp->leapcnt; -#endif /* defined ALL_STATE */ -#ifndef ALL_STATE - i = sp->leapcnt; -#endif /* State Farm */ - while (--i >= 0) { - lp = &sp->lsis[i]; - if (*timep >= lp->ls_trans) { - if (*timep == lp->ls_trans) { - hit = ((i == 0 && lp->ls_corr > 0) || - lp->ls_corr > sp->lsis[i - 1].ls_corr); - if (hit) - while (i > 0 && - sp->lsis[i].ls_trans == - sp->lsis[i - 1].ls_trans + 1 && - sp->lsis[i].ls_corr == - sp->lsis[i - 1].ls_corr + 1) { - ++hit; - --i; - } - } - corr = lp->ls_corr; - break; - } - } - days = (int)*timep / SECSPERDAY; - rem = (int)*timep % SECSPERDAY; -#ifdef mc68k - if (*timep == 0x80000000) { - /* - ** A 3B1 muffs the division on the most negative number. - */ - days = -24855; - rem = -11648; - } -#endif /* defined mc68k */ - rem += (offset - corr); - while (rem < 0) { - rem += SECSPERDAY; - --days; - } - while (rem >= SECSPERDAY) { - rem -= SECSPERDAY; - ++days; - } - tmp->tm_hour = (int) (rem / SECSPERHOUR); - rem = rem % SECSPERHOUR; - tmp->tm_min = (int) (rem / SECSPERMIN); - /* - ** A positive leap second requires a special - ** representation. This uses "... ??:59:60" et seq. - */ - tmp->tm_sec = (int) (rem % SECSPERMIN) + hit; - tmp->tm_wday = (int) ((EPOCH_WDAY + days) % DAYSPERWEEK); - if (tmp->tm_wday < 0) - tmp->tm_wday += DAYSPERWEEK; - y = EPOCH_YEAR; -#define LEAPS_THRU_END_OF(y) ((y) / 4 - (y) / 100 + (y) / 400) - while (days < 0 || days >= (long) year_lengths[yleap = isleap(y)]) { - register int newy; - - newy = y + days / DAYSPERNYEAR; - if (days < 0) - --newy; - days -= (newy - y) * DAYSPERNYEAR + - LEAPS_THRU_END_OF(newy - 1) - - LEAPS_THRU_END_OF(y - 1); - y = newy; - } - tmp->tm_year = y - TM_YEAR_BASE; - tmp->tm_yday = (int) days; - ip = mon_lengths[yleap]; - for (tmp->tm_mon = 0; days >= (long) ip[tmp->tm_mon]; ++(tmp->tm_mon)) - days = days - (long) ip[tmp->tm_mon]; - tmp->tm_mday = (int) (days + 1); - tmp->tm_isdst = 0; -#ifdef TM_GMTOFF - tmp->TM_GMTOFF = offset; -#endif /* defined TM_GMTOFF */ -} - -/* ahu: deleted definition of ctime */ - -/* ahu: deleted definition of ctime_r */ - -/* -** Adapted from code provided by Robert Elz, who writes: -** The "best" way to do mktime I think is based on an idea of Bob -** Kridle's (so its said...) from a long time ago. -** [kridle@xinet.com as of 1996-01-16.] -** It does a binary search of the time_t space. Since time_t's are -** just 32 bits, its a max of 32 iterations (even at 64 bits it -** would still be very reasonable). -*/ - -#ifndef WRONG -#define WRONG (-1) -#endif /* !defined WRONG */ - -/* -** Simplified normalize logic courtesy Paul Eggert (eggert@twinsun.com). -*/ - -static int -increment_overflow(number, delta) -int * number; -int delta; -{ - int number0; - - number0 = *number; - *number += delta; - return (*number < number0) != (delta < 0); -} - -static int -normalize_overflow(tensptr, unitsptr, base) -int * const tensptr; -int * const unitsptr; -const int base; -{ - register int tensdelta; - - tensdelta = (*unitsptr >= 0) ? - (*unitsptr / base) : - (-1 - (-1 - *unitsptr) / base); - *unitsptr -= tensdelta * base; - return increment_overflow(tensptr, tensdelta); -} - -static int -tmcomp(atmp, btmp) -register const struct tm * const atmp; -register const struct tm * const btmp; -{ - register int result; - - if ((result = (atmp->tm_year - btmp->tm_year)) == 0 && - (result = (atmp->tm_mon - btmp->tm_mon)) == 0 && - (result = (atmp->tm_mday - btmp->tm_mday)) == 0 && - (result = (atmp->tm_hour - btmp->tm_hour)) == 0 && - (result = (atmp->tm_min - btmp->tm_min)) == 0) - result = atmp->tm_sec - btmp->tm_sec; - return result; -} - -static time_t -time2sub(tmp, funcp, offset, okayp, do_norm_secs) -struct tm * const tmp; -void (* const funcp) P((const time_t*, long, struct tm*)); -const long offset; -int * const okayp; -const int do_norm_secs; -{ - register const struct state * sp; - register int dir; - register int bits; - register int i, j ; - register int saved_seconds; - time_t newt; - time_t t; - struct tm yourtm, mytm; - - *okayp = FALSE; - yourtm = *tmp; - if (do_norm_secs) { - if (normalize_overflow(&yourtm.tm_min, &yourtm.tm_sec, - SECSPERMIN)) - return WRONG; - } - if (normalize_overflow(&yourtm.tm_hour, &yourtm.tm_min, MINSPERHOUR)) - return WRONG; - if (normalize_overflow(&yourtm.tm_mday, &yourtm.tm_hour, HOURSPERDAY)) - return WRONG; - if (normalize_overflow(&yourtm.tm_year, &yourtm.tm_mon, MONSPERYEAR)) - return WRONG; - /* - ** Turn yourtm.tm_year into an actual year number for now. - ** It is converted back to an offset from TM_YEAR_BASE later. - */ - if (increment_overflow(&yourtm.tm_year, TM_YEAR_BASE)) - return WRONG; - while (yourtm.tm_mday <= 0) { - if (increment_overflow(&yourtm.tm_year, -1)) - return WRONG; - i = yourtm.tm_year + (1 < yourtm.tm_mon); - yourtm.tm_mday += year_lengths[isleap(i)]; - } - while (yourtm.tm_mday > DAYSPERLYEAR) { - i = yourtm.tm_year + (1 < yourtm.tm_mon); - yourtm.tm_mday -= year_lengths[isleap(i)]; - if (increment_overflow(&yourtm.tm_year, 1)) - return WRONG; - } - for ( ; ; ) { - i = mon_lengths[isleap(yourtm.tm_year)][yourtm.tm_mon]; - if (yourtm.tm_mday <= i) - break; - yourtm.tm_mday -= i; - if (++yourtm.tm_mon >= MONSPERYEAR) { - yourtm.tm_mon = 0; - if (increment_overflow(&yourtm.tm_year, 1)) - return WRONG; - } - } - if (increment_overflow(&yourtm.tm_year, -TM_YEAR_BASE)) - return WRONG; - if (yourtm.tm_sec >= 0 && yourtm.tm_sec < SECSPERMIN) - saved_seconds = 0; - else if (yourtm.tm_year + TM_YEAR_BASE < EPOCH_YEAR) { - /* - ** We can't set tm_sec to 0, because that might push the - ** time below the minimum representable time. - ** Set tm_sec to 59 instead. - ** This assumes that the minimum representable time is - ** not in the same minute that a leap second was deleted from, - ** which is a safer assumption than using 58 would be. - */ - if (increment_overflow(&yourtm.tm_sec, 1 - SECSPERMIN)) - return WRONG; - saved_seconds = yourtm.tm_sec; - yourtm.tm_sec = SECSPERMIN - 1; - } else { - saved_seconds = yourtm.tm_sec; - yourtm.tm_sec = 0; - } - /* - ** Divide the search space in half - ** (this works whether time_t is signed or unsigned). - */ - bits = TYPE_BIT(time_t) - 1; - /* - ** If time_t is signed, then 0 is just above the median, - ** assuming two's complement arithmetic. - ** If time_t is unsigned, then (1 << bits) is just above the median. - */ - t = TYPE_SIGNED(time_t) ? 0 : (((time_t) 1) << bits); - for ( ; ; ) { - (*funcp)(&t, offset, &mytm); - dir = tmcomp(&mytm, &yourtm); - if (dir != 0) { - if (bits-- < 0) - return WRONG; - if (bits < 0) - --t; /* may be needed if new t is minimal */ - else if (dir > 0) - t -= ((time_t) 1) << bits; - else t += ((time_t) 1) << bits; - continue; - } - if (yourtm.tm_isdst < 0 || mytm.tm_isdst == yourtm.tm_isdst) - break; - /* - ** Right time, wrong type. - ** Hunt for right time, right type. - ** It's okay to guess wrong since the guess - ** gets checked. - */ - /* - ** The (void *) casts are the benefit of SunOS 3.3 on Sun 2's. - */ - sp = (const struct state *) - (((void *) funcp == (void *) localsub) ? - lclptr : gmtptr); -#ifdef ALL_STATE - if (sp == NULL) - return WRONG; -#endif /* defined ALL_STATE */ - for (i = sp->typecnt - 1; i >= 0; --i) { - if (sp->ttis[i].tt_isdst != yourtm.tm_isdst) - continue; - for (j = sp->typecnt - 1; j >= 0; --j) { - if (sp->ttis[j].tt_isdst == yourtm.tm_isdst) - continue; - newt = t + sp->ttis[j].tt_gmtoff - - sp->ttis[i].tt_gmtoff; - (*funcp)(&newt, offset, &mytm); - if (tmcomp(&mytm, &yourtm) != 0) - continue; - if (mytm.tm_isdst != yourtm.tm_isdst) - continue; - /* - ** We have a match. - */ - t = newt; - goto label; - } - } - return WRONG; - } -label: - newt = t + saved_seconds; - if ((newt < t) != (saved_seconds < 0)) - return WRONG; - t = newt; - (*funcp)(&t, offset, tmp); - *okayp = TRUE; - return t; -} - -static time_t -time2(tmp, funcp, offset, okayp) -struct tm * const tmp; -void (* const funcp) P((const time_t*, long, struct tm*)); -const long offset; -int * const okayp; -{ - time_t t; - - /* - ** First try without normalization of seconds - ** (in case tm_sec contains a value associated with a leap second). - ** If that fails, try with normalization of seconds. - */ - t = time2sub(tmp, funcp, offset, okayp, FALSE); - return *okayp ? t : time2sub(tmp, funcp, offset, okayp, TRUE); -} - -static time_t -time1(tmp, funcp, offset) -struct tm * const tmp; -void (* const funcp) P((const time_t *, long, struct tm *)); -const long offset; -{ - register time_t t; - register const struct state * sp; - register int samei, otheri; - register int sameind, otherind; - register int i; - register int nseen; - int seen[TZ_MAX_TYPES]; - int types[TZ_MAX_TYPES]; - int okay; - - if (tmp->tm_isdst > 1) - tmp->tm_isdst = 1; - t = time2(tmp, funcp, offset, &okay); -#ifdef PCTS - /* - ** PCTS code courtesy Grant Sullivan (grant@osf.org). - */ - if (okay) - return t; - if (tmp->tm_isdst < 0) - tmp->tm_isdst = 0; /* reset to std and try again */ -#endif /* defined PCTS */ -#ifndef PCTS - if (okay || tmp->tm_isdst < 0) - return t; -#endif /* !defined PCTS */ - /* - ** We're supposed to assume that somebody took a time of one type - ** and did some math on it that yielded a "struct tm" that's bad. - ** We try to divine the type they started from and adjust to the - ** type they need. - */ - /* - ** The (void *) casts are the benefit of SunOS 3.3 on Sun 2's. - */ - sp = (const struct state *) (((void *) funcp == (void *) localsub) ? - lclptr : gmtptr); -#ifdef ALL_STATE - if (sp == NULL) - return WRONG; -#endif /* defined ALL_STATE */ - for (i = 0; i < sp->typecnt; ++i) - seen[i] = FALSE; - nseen = 0; - for (i = sp->timecnt - 1; i >= 0; --i) - if (!seen[sp->types[i]]) { - seen[sp->types[i]] = TRUE; - types[nseen++] = sp->types[i]; - } - for (sameind = 0; sameind < nseen; ++sameind) { - samei = types[sameind]; - if (sp->ttis[samei].tt_isdst != tmp->tm_isdst) - continue; - for (otherind = 0; otherind < nseen; ++otherind) { - otheri = types[otherind]; - if (sp->ttis[otheri].tt_isdst == tmp->tm_isdst) - continue; - tmp->tm_sec += sp->ttis[otheri].tt_gmtoff - - sp->ttis[samei].tt_gmtoff; - tmp->tm_isdst = !tmp->tm_isdst; - t = time2(tmp, funcp, offset, &okay); - if (okay) - return t; - tmp->tm_sec -= sp->ttis[otheri].tt_gmtoff - - sp->ttis[samei].tt_gmtoff; - tmp->tm_isdst = !tmp->tm_isdst; - } - } - return WRONG; -} - -/* ahu: deleted definition of mktime */ - -#ifdef STD_INSPIRED - -/* ahu: deleted definition of timelocal */ - -/* rmills - timegm is replaced with _mkgmtime on VC 2005 and up */ -/* - see timegm.h */ -#if !defined(_MSC_VER) || (_MSC_VER < 1400) -time_t -timegm(tmp) -struct tm * const tmp; -{ - tmp->tm_isdst = 0; - return time1(tmp, gmtsub, 0L); -} -#endif - - - - - -/* ahu: deleted definition of timeoff */ - -#endif /* defined STD_INSPIRED */ - -/* ahu: deleted definition of gtime */ - -/* ahu: deleted definition of leapcorr */ - -/* ahu: deleted definition of time2posix */ - -/* ahu: deleted definition of posix2time */ diff --git a/platform/win32/msvc/external/exiv2/src/makernote.cpp b/platform/win32/msvc/external/exiv2/src/makernote.cpp deleted file mode 100644 index 026174dc86b..00000000000 --- a/platform/win32/msvc/external/exiv2/src/makernote.cpp +++ /dev/null @@ -1,1152 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: makernote.cpp - Version: $Rev: 2698 $ - Author(s): Andreas Huggel (ahu) - History: 11-Apr-06, ahu: created - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: makernote.cpp 2698 2012-04-11 16:02:44Z ahuggel $") - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#include "makernote_int.hpp" -#include "tiffcomposite_int.hpp" -#include "tiffvisitor_int.hpp" -#include "tiffimage.hpp" -#include "tiffimage_int.hpp" - -// + standard includes -#include -#include - -// ***************************************************************************** -namespace { - // Todo: Can be generalized further - get any tag as a string/long/... - //! Get the model name from tag Exif.Image.Model - std::string getExifModel(Exiv2::Internal::TiffComponent* const pRoot); - //! Nikon en/decryption function - void ncrypt(Exiv2::byte* pData, uint32_t size, uint32_t count, uint32_t serial); -} - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - namespace Internal { - - const TiffMnRegistry TiffMnCreator::registry_[] = { - { "Canon", canonId, newIfdMn, newIfdMn2 }, - { "FOVEON", sigmaId, newSigmaMn, newSigmaMn2 }, - { "FUJI", fujiId, newFujiMn, newFujiMn2 }, - { "KONICA MINOLTA", minoltaId, newIfdMn, newIfdMn2 }, - { "Minolta", minoltaId, newIfdMn, newIfdMn2 }, - { "NIKON", ifdIdNotSet, newNikonMn, 0 }, // mnGroup_ is not used - { "OLYMPUS", ifdIdNotSet, newOlympusMn, 0 }, // mnGroup_ is not used - { "Panasonic", panasonicId, newPanasonicMn, newPanasonicMn2 }, - { "PENTAX", ifdIdNotSet, newPentaxMn, 0 }, // mnGroup_ is not used - { "SAMSUNG", samsung2Id, newSamsungMn, newSamsungMn2 }, - { "SIGMA", sigmaId, newSigmaMn, newSigmaMn2 }, - { "SONY", ifdIdNotSet, newSonyMn, 0 }, // mnGroup_ is not used - // Entries below are only used for lookup by group - { "-", nikon1Id, 0, newIfdMn2 }, - { "-", nikon2Id, 0, newNikon2Mn2 }, - { "-", nikon3Id, 0, newNikon3Mn2 }, - { "-", sony1Id, 0, newSony1Mn2 }, - { "-", sony2Id, 0, newSony2Mn2 }, - { "-", olympusId, 0, newOlympusMn2 }, - { "-", olympus2Id, 0, newOlympus2Mn2 }, - { "-", pentaxId, 0, newPentaxMn2 }, - { "-", pentaxDngId, 0, newPentaxDngMn2 } - }; - - bool TiffMnRegistry::operator==(const std::string& key) const - { - std::string make(make_); - if (key.size() > 0 && key[0] == '-') return false; - return make == key.substr(0, make.length()); - } - - bool TiffMnRegistry::operator==(IfdId key) const - { - return mnGroup_ == key; - } - - TiffComponent* TiffMnCreator::create(uint16_t tag, - IfdId group, - const std::string& make, - const byte* pData, - uint32_t size, - ByteOrder byteOrder) - { - TiffComponent* tc = 0; - const TiffMnRegistry* tmr = find(registry_, make); - if (tmr) { - assert(tmr->newMnFct_); - tc = tmr->newMnFct_(tag, - group, - tmr->mnGroup_, - pData, - size, - byteOrder); - } - return tc; - } // TiffMnCreator::create - - TiffComponent* TiffMnCreator::create(uint16_t tag, - IfdId group, - IfdId mnGroup) - { - TiffComponent* tc = 0; - const TiffMnRegistry* tmr = find(registry_, mnGroup); - if (tmr) { - - if (tmr->newMnFct2_ == 0) { - - std::cout << "mnGroup = " << mnGroup << "\n"; - - } - - assert(tmr->newMnFct2_); - tc = tmr->newMnFct2_(tag, group, mnGroup); - } - return tc; - } // TiffMnCreator::create - - MnHeader::~MnHeader() - { - } - - void MnHeader::setByteOrder(ByteOrder /*byteOrder*/) - { - } - - uint32_t MnHeader::ifdOffset() const - { - return 0; - } - - ByteOrder MnHeader::byteOrder() const - { - return invalidByteOrder; - } - - uint32_t MnHeader::baseOffset(uint32_t /*mnOffset*/) const - { - return 0; - } - - const byte OlympusMnHeader::signature_[] = { - 'O', 'L', 'Y', 'M', 'P', 0x00, 0x01, 0x00 - }; - - uint32_t OlympusMnHeader::sizeOfSignature() - { - return sizeof(signature_); - } - - OlympusMnHeader::OlympusMnHeader() - { - read(signature_, sizeOfSignature(), invalidByteOrder); - } - - OlympusMnHeader::~OlympusMnHeader() - { - } - - uint32_t OlympusMnHeader::size() const - { - return header_.size_; - } - - uint32_t OlympusMnHeader::ifdOffset() const - { - return sizeOfSignature(); - } - - bool OlympusMnHeader::read(const byte* pData, - uint32_t size, - ByteOrder /*byteOrder*/) - { - if (!pData || size < sizeOfSignature()) return false; - header_.alloc(sizeOfSignature()); - std::memcpy(header_.pData_, pData, header_.size_); - if ( static_cast(header_.size_) < sizeOfSignature() - || 0 != memcmp(header_.pData_, signature_, 6)) { - return false; - } - return true; - } // OlympusMnHeader::read - - uint32_t OlympusMnHeader::write(IoWrapper& ioWrapper, - ByteOrder /*byteOrder*/) const - { - ioWrapper.write(signature_, sizeOfSignature()); - return sizeOfSignature(); - } // OlympusMnHeader::write - - const byte Olympus2MnHeader::signature_[] = { - 'O', 'L', 'Y', 'M', 'P', 'U', 'S', 0x00, 'I', 'I', 0x03, 0x00 - }; - - uint32_t Olympus2MnHeader::sizeOfSignature() - { - return sizeof(signature_); - } - - Olympus2MnHeader::Olympus2MnHeader() - { - read(signature_, sizeOfSignature(), invalidByteOrder); - } - - Olympus2MnHeader::~Olympus2MnHeader() - { - } - - uint32_t Olympus2MnHeader::size() const - { - return header_.size_; - } - - uint32_t Olympus2MnHeader::ifdOffset() const - { - return sizeOfSignature(); - } - - uint32_t Olympus2MnHeader::baseOffset(uint32_t mnOffset) const - { - return mnOffset; - } - - bool Olympus2MnHeader::read(const byte* pData, - uint32_t size, - ByteOrder /*byteOrder*/) - { - if (!pData || size < sizeOfSignature()) return false; - header_.alloc(sizeOfSignature()); - std::memcpy(header_.pData_, pData, header_.size_); - if ( static_cast(header_.size_) < sizeOfSignature() - || 0 != memcmp(header_.pData_, signature_, 10)) { - return false; - } - return true; - } // Olympus2MnHeader::read - - uint32_t Olympus2MnHeader::write(IoWrapper& ioWrapper, - ByteOrder /*byteOrder*/) const - { - ioWrapper.write(signature_, sizeOfSignature()); - return sizeOfSignature(); - } // Olympus2MnHeader::write - - const byte FujiMnHeader::signature_[] = { - 'F', 'U', 'J', 'I', 'F', 'I', 'L', 'M', 0x0c, 0x00, 0x00, 0x00 - }; - const ByteOrder FujiMnHeader::byteOrder_ = littleEndian; - - uint32_t FujiMnHeader::sizeOfSignature() - { - return sizeof(signature_); - } - - FujiMnHeader::FujiMnHeader() - { - read(signature_, sizeOfSignature(), byteOrder_); - } - - FujiMnHeader::~FujiMnHeader() - { - } - - uint32_t FujiMnHeader::size() const - { - return header_.size_; - } - - uint32_t FujiMnHeader::ifdOffset() const - { - return start_; - } - - ByteOrder FujiMnHeader::byteOrder() const - { - return byteOrder_; - } - - uint32_t FujiMnHeader::baseOffset(uint32_t mnOffset) const - { - return mnOffset; - } - - bool FujiMnHeader::read(const byte* pData, - uint32_t size, - ByteOrder /*byteOrder*/) - { - if (!pData || size < sizeOfSignature()) return false; - header_.alloc(sizeOfSignature()); - std::memcpy(header_.pData_, pData, header_.size_); - // Read offset to the IFD relative to the start of the makernote - // from the header. Note that we ignore the byteOrder argument - start_ = getULong(header_.pData_ + 8, byteOrder_); - if ( static_cast(header_.size_) < sizeOfSignature() - || 0 != memcmp(header_.pData_, signature_, 8)) { - return false; - } - return true; - } // FujiMnHeader::read - - uint32_t FujiMnHeader::write(IoWrapper& ioWrapper, - ByteOrder /*byteOrder*/) const - { - ioWrapper.write(signature_, sizeOfSignature()); - return sizeOfSignature(); - } // FujiMnHeader::write - - const byte Nikon2MnHeader::signature_[] = { - 'N', 'i', 'k', 'o', 'n', '\0', 0x01, 0x00 - }; - - uint32_t Nikon2MnHeader::sizeOfSignature() - { - return sizeof(signature_); - } - - Nikon2MnHeader::Nikon2MnHeader() - { - read(signature_, sizeOfSignature(), invalidByteOrder); - } - - Nikon2MnHeader::~Nikon2MnHeader() - { - } - - uint32_t Nikon2MnHeader::size() const - { - return sizeOfSignature(); - } - - uint32_t Nikon2MnHeader::ifdOffset() const - { - return start_; - } - - bool Nikon2MnHeader::read(const byte* pData, - uint32_t size, - ByteOrder /*byteOrder*/) - { - if (!pData || size < sizeOfSignature()) return false; - if (0 != memcmp(pData, signature_, 6)) return false; - buf_.alloc(sizeOfSignature()); - std::memcpy(buf_.pData_, pData, buf_.size_); - start_ = sizeOfSignature(); - return true; - } // Nikon2MnHeader::read - - uint32_t Nikon2MnHeader::write(IoWrapper& ioWrapper, - ByteOrder /*byteOrder*/) const - { - ioWrapper.write(signature_, sizeOfSignature()); - return sizeOfSignature(); - } // Nikon2MnHeader::write - - const byte Nikon3MnHeader::signature_[] = { - 'N', 'i', 'k', 'o', 'n', '\0', 0x02, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - - uint32_t Nikon3MnHeader::sizeOfSignature() - { - return sizeof(signature_); - } - - Nikon3MnHeader::Nikon3MnHeader() - { - buf_.alloc(sizeOfSignature()); - std::memcpy(buf_.pData_, signature_, buf_.size_); - byteOrder_ = invalidByteOrder; - start_ = sizeOfSignature(); - } - - Nikon3MnHeader::~Nikon3MnHeader() - { - } - - uint32_t Nikon3MnHeader::size() const - { - return sizeOfSignature(); - } - - uint32_t Nikon3MnHeader::ifdOffset() const - { - return start_; - } - - ByteOrder Nikon3MnHeader::byteOrder() const - { - return byteOrder_; - } - - uint32_t Nikon3MnHeader::baseOffset(uint32_t mnOffset) const - { - return mnOffset + 10; - } - - bool Nikon3MnHeader::read(const byte* pData, - uint32_t size, - ByteOrder /*byteOrder*/) - { - if (!pData || size < sizeOfSignature()) return false; - if (0 != memcmp(pData, signature_, 6)) return false; - buf_.alloc(sizeOfSignature()); - std::memcpy(buf_.pData_, pData, buf_.size_); - TiffHeader th; - if (!th.read(buf_.pData_ + 10, 8)) return false; - byteOrder_ = th.byteOrder(); - start_ = 10 + th.offset(); - return true; - } // Nikon3MnHeader::read - - uint32_t Nikon3MnHeader::write(IoWrapper& ioWrapper, - ByteOrder byteOrder) const - { - assert(buf_.size_ >= 10); - - ioWrapper.write(buf_.pData_, 10); - // Todo: This removes any gap between the header and - // makernote IFD. The gap should be copied too. - TiffHeader th(byteOrder); - DataBuf buf = th.write(); - ioWrapper.write(buf.pData_, buf.size_); - return 10 + buf.size_; - } // Nikon3MnHeader::write - - void Nikon3MnHeader::setByteOrder(ByteOrder byteOrder) - { - byteOrder_ = byteOrder; - } - - const byte PanasonicMnHeader::signature_[] = { - 'P', 'a', 'n', 'a', 's', 'o', 'n', 'i', 'c', 0x00, 0x00, 0x00 - }; - - uint32_t PanasonicMnHeader::sizeOfSignature() - { - return sizeof(signature_); - } - - PanasonicMnHeader::PanasonicMnHeader() - { - read(signature_, sizeOfSignature(), invalidByteOrder); - } - - PanasonicMnHeader::~PanasonicMnHeader() - { - } - - uint32_t PanasonicMnHeader::size() const - { - return sizeOfSignature(); - } - - uint32_t PanasonicMnHeader::ifdOffset() const - { - return start_; - } - - bool PanasonicMnHeader::read(const byte* pData, - uint32_t size, - ByteOrder /*byteOrder*/) - { - if (!pData || size < sizeOfSignature()) return false; - if (0 != memcmp(pData, signature_, 9)) return false; - buf_.alloc(sizeOfSignature()); - std::memcpy(buf_.pData_, pData, buf_.size_); - start_ = sizeOfSignature(); - return true; - } // PanasonicMnHeader::read - - uint32_t PanasonicMnHeader::write(IoWrapper& ioWrapper, - ByteOrder /*byteOrder*/) const - { - ioWrapper.write(signature_, sizeOfSignature()); - return sizeOfSignature(); - } // PanasonicMnHeader::write - - const byte PentaxDngMnHeader::signature_[] = { - 'P', 'E', 'N', 'T', 'A', 'X', ' ', 0x00, 'M', 'M' - }; - - uint32_t PentaxDngMnHeader::sizeOfSignature() - { - return sizeof(signature_); - } - - PentaxDngMnHeader::PentaxDngMnHeader() - { - read(signature_, sizeOfSignature(), invalidByteOrder); - } - - PentaxDngMnHeader::~PentaxDngMnHeader() - { - } - - uint32_t PentaxDngMnHeader::size() const - { - return header_.size_; - } - - uint32_t PentaxDngMnHeader::baseOffset(uint32_t mnOffset) const - { - return mnOffset; - } - - uint32_t PentaxDngMnHeader::ifdOffset() const - { - return sizeOfSignature(); - } - - bool PentaxDngMnHeader::read(const byte* pData, - uint32_t size, - ByteOrder /*byteOrder*/) - { - if (!pData || size < sizeOfSignature()) return false; - header_.alloc(sizeOfSignature()); - std::memcpy(header_.pData_, pData, header_.size_); - if ( static_cast(header_.size_) < sizeOfSignature() - || 0 != memcmp(header_.pData_, signature_, 7)) { - return false; - } - return true; - } // PentaxDngMnHeader::read - - uint32_t PentaxDngMnHeader::write(IoWrapper& ioWrapper, - ByteOrder /*byteOrder*/) const - { - ioWrapper.write(signature_, sizeOfSignature()); - return sizeOfSignature(); - } // PentaxDngMnHeader::write - - const byte PentaxMnHeader::signature_[] = { - 'A', 'O', 'C', 0x00, 'M', 'M' - }; - - uint32_t PentaxMnHeader::sizeOfSignature() - { - return sizeof(signature_); - } - - PentaxMnHeader::PentaxMnHeader() - { - read(signature_, sizeOfSignature(), invalidByteOrder); - } - - PentaxMnHeader::~PentaxMnHeader() - { - } - - uint32_t PentaxMnHeader::size() const - { - return header_.size_; - } - - uint32_t PentaxMnHeader::ifdOffset() const - { - return sizeOfSignature(); - } - - bool PentaxMnHeader::read(const byte* pData, - uint32_t size, - ByteOrder /*byteOrder*/) - { - if (!pData || size < sizeOfSignature()) return false; - header_.alloc(sizeOfSignature()); - std::memcpy(header_.pData_, pData, header_.size_); - if ( static_cast(header_.size_) < sizeOfSignature() - || 0 != memcmp(header_.pData_, signature_, 3)) { - return false; - } - return true; - } // PentaxMnHeader::read - - uint32_t PentaxMnHeader::write(IoWrapper& ioWrapper, - ByteOrder /*byteOrder*/) const - { - ioWrapper.write(signature_, sizeOfSignature()); - return sizeOfSignature(); - } // PentaxMnHeader::write - - SamsungMnHeader::SamsungMnHeader() - { - read(0, 0, invalidByteOrder); - } - - uint32_t SamsungMnHeader::size() const - { - return 0; - } - - uint32_t SamsungMnHeader::baseOffset(uint32_t mnOffset) const - { - return mnOffset; - } - - bool SamsungMnHeader::read(const byte* /*pData*/, - uint32_t /*size*/, - ByteOrder /*byteOrder*/) - { - return true; - } // SamsungMnHeader::read - - uint32_t SamsungMnHeader::write(IoWrapper& /*ioWrapper*/, - ByteOrder /*byteOrder*/) const - { - return 0; - } // SamsungMnHeader::write - - const byte SigmaMnHeader::signature1_[] = { - 'S', 'I', 'G', 'M', 'A', '\0', '\0', '\0', 0x01, 0x00 - }; - const byte SigmaMnHeader::signature2_[] = { - 'F', 'O', 'V', 'E', 'O', 'N', '\0', '\0', 0x01, 0x00 - }; - - uint32_t SigmaMnHeader::sizeOfSignature() - { - assert(sizeof(signature1_) == sizeof(signature2_)); - return sizeof(signature1_); - } - - SigmaMnHeader::SigmaMnHeader() - { - read(signature1_, sizeOfSignature(), invalidByteOrder); - } - - SigmaMnHeader::~SigmaMnHeader() - { - } - - uint32_t SigmaMnHeader::size() const - { - return sizeOfSignature(); - } - - uint32_t SigmaMnHeader::ifdOffset() const - { - return start_; - } - - bool SigmaMnHeader::read(const byte* pData, - uint32_t size, - ByteOrder /*byteOrder*/) - { - if (!pData || size < sizeOfSignature()) return false; - if ( 0 != memcmp(pData, signature1_, 8) - && 0 != memcmp(pData, signature2_, 8)) return false; - buf_.alloc(sizeOfSignature()); - std::memcpy(buf_.pData_, pData, buf_.size_); - start_ = sizeOfSignature(); - return true; - } // SigmaMnHeader::read - - uint32_t SigmaMnHeader::write(IoWrapper& ioWrapper, - ByteOrder /*byteOrder*/) const - { - ioWrapper.write(signature1_, sizeOfSignature()); - return sizeOfSignature(); - } // SigmaMnHeader::write - - const byte SonyMnHeader::signature_[] = { - 'S', 'O', 'N', 'Y', ' ', 'D', 'S', 'C', ' ', '\0', '\0', '\0' - }; - - uint32_t SonyMnHeader::sizeOfSignature() - { - return sizeof(signature_); - } - - SonyMnHeader::SonyMnHeader() - { - read(signature_, sizeOfSignature(), invalidByteOrder); - } - - SonyMnHeader::~SonyMnHeader() - { - } - - uint32_t SonyMnHeader::size() const - { - return sizeOfSignature(); - } - - uint32_t SonyMnHeader::ifdOffset() const - { - return start_; - } - - bool SonyMnHeader::read(const byte* pData, - uint32_t size, - ByteOrder /*byteOrder*/) - { - if (!pData || size < sizeOfSignature()) return false; - if (0 != memcmp(pData, signature_, sizeOfSignature())) return false; - buf_.alloc(sizeOfSignature()); - std::memcpy(buf_.pData_, pData, buf_.size_); - start_ = sizeOfSignature(); - return true; - } // SonyMnHeader::read - - uint32_t SonyMnHeader::write(IoWrapper& ioWrapper, - ByteOrder /*byteOrder*/) const - { - ioWrapper.write(signature_, sizeOfSignature()); - return sizeOfSignature(); - } // SonyMnHeader::write - - // ************************************************************************* - // free functions - - TiffComponent* newIfdMn(uint16_t tag, - IfdId group, - IfdId mnGroup, - const byte* /*pData*/, - uint32_t size, - ByteOrder /*byteOrder*/) - { - // Require at least an IFD with 1 entry, but not necessarily a next pointer - if (size < 14) return 0; - return newIfdMn2(tag, group, mnGroup); - } - - TiffComponent* newIfdMn2(uint16_t tag, - IfdId group, - IfdId mnGroup) - { - return new TiffIfdMakernote(tag, group, mnGroup, 0); - } - - TiffComponent* newOlympusMn(uint16_t tag, - IfdId group, - IfdId /*mnGroup*/, - const byte* pData, - uint32_t size, - ByteOrder /*byteOrder*/) - { - if (size < 10 || std::string(reinterpret_cast(pData), 10) - != std::string("OLYMPUS\0II", 10)) { - // Require at least the header and an IFD with 1 entry - if (size < OlympusMnHeader::sizeOfSignature() + 18) return 0; - return newOlympusMn2(tag, group, olympusId); - } - // Require at least the header and an IFD with 1 entry - if (size < Olympus2MnHeader::sizeOfSignature() + 18) return 0; - return newOlympus2Mn2(tag, group, olympus2Id); - } - - TiffComponent* newOlympusMn2(uint16_t tag, - IfdId group, - IfdId mnGroup) - { - return new TiffIfdMakernote(tag, group, mnGroup, new OlympusMnHeader); - } - - TiffComponent* newOlympus2Mn2(uint16_t tag, - IfdId group, - IfdId mnGroup) - { - return new TiffIfdMakernote(tag, group, mnGroup, new Olympus2MnHeader); - } - - TiffComponent* newFujiMn(uint16_t tag, - IfdId group, - IfdId mnGroup, - const byte* /*pData*/, - uint32_t size, - ByteOrder /*byteOrder*/) - { - // Require at least the header and an IFD with 1 entry - if (size < FujiMnHeader::sizeOfSignature() + 18) return 0; - return newFujiMn2(tag, group, mnGroup); - } - - TiffComponent* newFujiMn2(uint16_t tag, - IfdId group, - IfdId mnGroup) - { - return new TiffIfdMakernote(tag, group, mnGroup, new FujiMnHeader); - } - - TiffComponent* newNikonMn(uint16_t tag, - IfdId group, - IfdId /*mnGroup*/, - const byte* pData, - uint32_t size, - ByteOrder /*byteOrder*/) - { - // If there is no "Nikon" string it must be Nikon1 format - if (size < 6 || std::string(reinterpret_cast(pData), 6) - != std::string("Nikon\0", 6)) { - // Require at least an IFD with 1 entry - if (size < 18) return 0; - return newIfdMn2(tag, group, nikon1Id); - } - // If the "Nikon" string is not followed by a TIFF header, we assume - // Nikon2 format - TiffHeader tiffHeader; - if ( size < 18 - || !tiffHeader.read(pData + 10, size - 10) - || tiffHeader.tag() != 0x002a) { - // Require at least the header and an IFD with 1 entry - if (size < Nikon2MnHeader::sizeOfSignature() + 18) return 0; - return newNikon2Mn2(tag, group, nikon2Id); - } - // Else we have a Nikon3 makernote - // Require at least the header and an IFD with 1 entry - if (size < Nikon3MnHeader::sizeOfSignature() + 18) return 0; - return newNikon3Mn2(tag, group, nikon3Id); - } - - TiffComponent* newNikon2Mn2(uint16_t tag, - IfdId group, - IfdId mnGroup) - { - return new TiffIfdMakernote(tag, group, mnGroup, new Nikon2MnHeader); - } - - TiffComponent* newNikon3Mn2(uint16_t tag, - IfdId group, - IfdId mnGroup) - { - return new TiffIfdMakernote(tag, group, mnGroup, new Nikon3MnHeader); - } - - TiffComponent* newPanasonicMn(uint16_t tag, - IfdId group, - IfdId mnGroup, - const byte* /*pData*/, - uint32_t size, - ByteOrder /*byteOrder*/) - { - // Require at least the header and an IFD with 1 entry, but without a next pointer - if (size < PanasonicMnHeader::sizeOfSignature() + 14) return 0; - return newPanasonicMn2(tag, group, mnGroup); - } - - TiffComponent* newPanasonicMn2(uint16_t tag, - IfdId group, - IfdId mnGroup) - { - return new TiffIfdMakernote(tag, group, mnGroup, new PanasonicMnHeader, false); - } - - TiffComponent* newPentaxMn(uint16_t tag, - IfdId group, - IfdId /*mnGroup*/, - const byte* pData, - uint32_t size, - ByteOrder /*byteOrder*/) - { - if ( size > 8 - && std::string(reinterpret_cast(pData), 8) == std::string("PENTAX \0", 8)) { - // Require at least the header and an IFD with 1 entry - if (size < PentaxDngMnHeader::sizeOfSignature() + 18) return 0; - return newPentaxDngMn2(tag, group, pentaxDngId); - } - else if ( size > 4 - && std::string(reinterpret_cast(pData), 4) == std::string("AOC\0", 4)) { - // Require at least the header and an IFD with 1 entry - if (size < PentaxMnHeader::sizeOfSignature() + 18) return 0; - return newPentaxMn2(tag, group, pentaxId); - } else - return 0; - } - - TiffComponent* newPentaxMn2(uint16_t tag, - IfdId group, - IfdId mnGroup) - { - return new TiffIfdMakernote(tag, group, mnGroup, new PentaxMnHeader); - } - - TiffComponent* newPentaxDngMn2(uint16_t tag, - IfdId group, - IfdId mnGroup) - { - return new TiffIfdMakernote(tag, group, mnGroup, new PentaxDngMnHeader); - } - - TiffComponent* newSamsungMn(uint16_t tag, - IfdId group, - IfdId mnGroup, - const byte* /*pData*/, - uint32_t size, - ByteOrder /*byteOrder*/) - { - // Require at least an IFD with 1 entry - if (size < 18) return 0; - return newSamsungMn2(tag, group, mnGroup); - } - - TiffComponent* newSamsungMn2(uint16_t tag, - IfdId group, - IfdId mnGroup) - { - return new TiffIfdMakernote(tag, group, mnGroup, new SamsungMnHeader); - } - - TiffComponent* newSigmaMn(uint16_t tag, - IfdId group, - IfdId mnGroup, - const byte* /*pData*/, - uint32_t size, - ByteOrder /*byteOrder*/) - { - // Require at least the header and an IFD with 1 entry - if (size < SigmaMnHeader::sizeOfSignature() + 18) return 0; - return newSigmaMn2(tag, group, mnGroup); - } - - TiffComponent* newSigmaMn2(uint16_t tag, - IfdId group, - IfdId mnGroup) - { - return new TiffIfdMakernote(tag, group, mnGroup, new SigmaMnHeader); - } - - TiffComponent* newSonyMn(uint16_t tag, - IfdId group, - IfdId /*mnGroup*/, - const byte* pData, - uint32_t size, - ByteOrder /*byteOrder*/) - { - // If there is no "SONY DSC " string we assume it's a simple IFD Makernote - if (size < 12 || std::string(reinterpret_cast(pData), 12) - != std::string("SONY DSC \0\0\0", 12)) { - // Require at least an IFD with 1 entry - if (size < 18) return 0; - return newSony2Mn2(tag, group, sony2Id); - } - // Require at least the header and an IFD with 1 entry, but without a next pointer - if (size < SonyMnHeader::sizeOfSignature() + 14) return 0; - return newSony1Mn2(tag, group, sony1Id); - } - - TiffComponent* newSony1Mn2(uint16_t tag, - IfdId group, - IfdId mnGroup) - { - return new TiffIfdMakernote(tag, group, mnGroup, new SonyMnHeader, false); - } - - TiffComponent* newSony2Mn2(uint16_t tag, - IfdId group, - IfdId mnGroup) - { - return new TiffIfdMakernote(tag, group, mnGroup, 0, true); - } - - //! Structure for an index into the array set of complex binary arrays. - struct NikonArrayIdx { - //! Key for comparisons - struct Key { - //! Constructor - Key(uint16_t tag, const char* ver, uint32_t size) : tag_(tag), ver_(ver), size_(size) {} - uint16_t tag_; //!< Tag number - const char* ver_; //!< Version string - uint32_t size_; //!< Size of the data (not the version string) - }; - //! Comparison operator for a key - bool operator==(const Key& key) const - { - return key.tag_ == tag_ - && 0 == strncmp(key.ver_, ver_, strlen(ver_)) - && (size_ == 0 || key.size_ == size_); - } - - uint16_t tag_; //!< Tag number of the binary array - const char* ver_; //!< Version string - uint32_t size_; //!< Size of the data - int idx_; //!< Index into the array set - uint32_t start_; //!< Start of the encrypted data - }; - -#define NA ((uint32_t)-1) - - //! Nikon binary array version lookup table - extern const NikonArrayIdx nikonArrayIdx[] = { - // NikonSi - { 0x0091, "0208", 0, 0, 4 }, // D80 - { 0x0091, "0209", 0, 1, 4 }, // D40 - { 0x0091, "0210", 5291, 2, 4 }, // D300 - { 0x0091, "0210", 5303, 3, 4 }, // D300, firmware version 1.10 - { 0x0091, "02", 0, 4, 4 }, // Other v2.* (encrypted) - { 0x0091, "01", 0, 5, NA }, // Other v1.* (not encrypted) - // NikonCb - { 0x0097, "0100", 0, 0, NA }, - { 0x0097, "0102", 0, 1, NA }, - { 0x0097, "0103", 0, 4, NA }, - { 0x0097, "0204", 0, 3, 284 }, - { 0x0097, "0205", 0, 2, 4 }, - { 0x0097, "0206", 0, 3, 284 }, - { 0x0097, "0207", 0, 3, 284 }, - { 0x0097, "0208", 0, 3, 284 }, - { 0x0097, "0209", 0, 5, 284 }, - { 0x0097, "02", 0, 3, 284 }, - // NikonLd - { 0x0098, "0100", 0, 0, NA }, - { 0x0098, "0101", 0, 1, NA }, - { 0x0098, "0201", 0, 1, 4 }, - { 0x0098, "0202", 0, 1, 4 }, - { 0x0098, "0203", 0, 1, 4 }, - { 0x0098, "0204", 0, 2, 4 }, - // NikonFl - { 0x00a8, "0100", 0, 0, NA }, - { 0x00a8, "0101", 0, 0, NA }, - { 0x00a8, "0102", 0, 1, NA }, - { 0x00a8, "0103", 0, 2, NA }, - }; - - int nikonSelector(uint16_t tag, const byte* pData, uint32_t size, TiffComponent* const /*pRoot*/) - { - if (size < 4) return -1; - const NikonArrayIdx* aix = find(nikonArrayIdx, NikonArrayIdx::Key(tag, reinterpret_cast(pData), size)); - return aix == 0 ? -1 : aix->idx_; - } - - DataBuf nikonCrypt(uint16_t tag, const byte* pData, uint32_t size, TiffComponent* const pRoot) - { - DataBuf buf; - - if (size < 4) return buf; - const NikonArrayIdx* nci = find(nikonArrayIdx, NikonArrayIdx::Key(tag, reinterpret_cast(pData), size)); - if (nci == 0 || nci->start_ == NA || size <= nci->start_) return buf; - - // Find Exif.Nikon3.ShutterCount - TiffFinder finder(0x00a7, nikon3Id); - pRoot->accept(finder); - TiffEntryBase* te = dynamic_cast(finder.result()); - if (!te || !te->pValue() || te->pValue()->count() == 0) return buf; - uint32_t count = static_cast(te->pValue()->toLong()); - - // Find Exif.Nikon3.SerialNumber - finder.init(0x001d, nikon3Id); - pRoot->accept(finder); - te = dynamic_cast(finder.result()); - if (!te || !te->pValue() || te->pValue()->count() == 0) return buf; - bool ok(false); - uint32_t serial = stringTo(te->pValue()->toString(), ok); - if (!ok) { - std::string model = getExifModel(pRoot); - if (model.empty()) return buf; - if (model.find("D50") != std::string::npos) { - serial = 0x22; - } - else { - serial = 0x60; - } - } - buf.alloc(size); - memcpy(buf.pData_, pData, buf.size_); - ncrypt(buf.pData_ + nci->start_, buf.size_ - nci->start_, count, serial); - return buf; - } - - int sonyCsSelector(uint16_t /*tag*/, const byte* /*pData*/, uint32_t /*size*/, TiffComponent* const pRoot) - { - std::string model = getExifModel(pRoot); - if (model.empty()) return -1; - int idx = 0; - if ( model.find("DSLR-A330") != std::string::npos - || model.find("DSLR-A380") != std::string::npos) { - idx = 1; - } - return idx; - } -}} // namespace Internal, Exiv2 - -// ***************************************************************************** -// local definitions -namespace { - std::string getExifModel(Exiv2::Internal::TiffComponent* const pRoot) - { - Exiv2::Internal::TiffFinder finder(0x0110, Exiv2::Internal::ifd0Id); // Exif.Image.Model - pRoot->accept(finder); - Exiv2::Internal::TiffEntryBase* te = dynamic_cast(finder.result()); - if (!te || !te->pValue() || te->pValue()->count() == 0) return std::string(); - return te->pValue()->toString(); - } - - void ncrypt(Exiv2::byte* pData, uint32_t size, uint32_t count, uint32_t serial) - { - static const Exiv2::byte xlat[2][256] = { - { 0xc1,0xbf,0x6d,0x0d,0x59,0xc5,0x13,0x9d,0x83,0x61,0x6b,0x4f,0xc7,0x7f,0x3d,0x3d, - 0x53,0x59,0xe3,0xc7,0xe9,0x2f,0x95,0xa7,0x95,0x1f,0xdf,0x7f,0x2b,0x29,0xc7,0x0d, - 0xdf,0x07,0xef,0x71,0x89,0x3d,0x13,0x3d,0x3b,0x13,0xfb,0x0d,0x89,0xc1,0x65,0x1f, - 0xb3,0x0d,0x6b,0x29,0xe3,0xfb,0xef,0xa3,0x6b,0x47,0x7f,0x95,0x35,0xa7,0x47,0x4f, - 0xc7,0xf1,0x59,0x95,0x35,0x11,0x29,0x61,0xf1,0x3d,0xb3,0x2b,0x0d,0x43,0x89,0xc1, - 0x9d,0x9d,0x89,0x65,0xf1,0xe9,0xdf,0xbf,0x3d,0x7f,0x53,0x97,0xe5,0xe9,0x95,0x17, - 0x1d,0x3d,0x8b,0xfb,0xc7,0xe3,0x67,0xa7,0x07,0xf1,0x71,0xa7,0x53,0xb5,0x29,0x89, - 0xe5,0x2b,0xa7,0x17,0x29,0xe9,0x4f,0xc5,0x65,0x6d,0x6b,0xef,0x0d,0x89,0x49,0x2f, - 0xb3,0x43,0x53,0x65,0x1d,0x49,0xa3,0x13,0x89,0x59,0xef,0x6b,0xef,0x65,0x1d,0x0b, - 0x59,0x13,0xe3,0x4f,0x9d,0xb3,0x29,0x43,0x2b,0x07,0x1d,0x95,0x59,0x59,0x47,0xfb, - 0xe5,0xe9,0x61,0x47,0x2f,0x35,0x7f,0x17,0x7f,0xef,0x7f,0x95,0x95,0x71,0xd3,0xa3, - 0x0b,0x71,0xa3,0xad,0x0b,0x3b,0xb5,0xfb,0xa3,0xbf,0x4f,0x83,0x1d,0xad,0xe9,0x2f, - 0x71,0x65,0xa3,0xe5,0x07,0x35,0x3d,0x0d,0xb5,0xe9,0xe5,0x47,0x3b,0x9d,0xef,0x35, - 0xa3,0xbf,0xb3,0xdf,0x53,0xd3,0x97,0x53,0x49,0x71,0x07,0x35,0x61,0x71,0x2f,0x43, - 0x2f,0x11,0xdf,0x17,0x97,0xfb,0x95,0x3b,0x7f,0x6b,0xd3,0x25,0xbf,0xad,0xc7,0xc5, - 0xc5,0xb5,0x8b,0xef,0x2f,0xd3,0x07,0x6b,0x25,0x49,0x95,0x25,0x49,0x6d,0x71,0xc7 }, - { 0xa7,0xbc,0xc9,0xad,0x91,0xdf,0x85,0xe5,0xd4,0x78,0xd5,0x17,0x46,0x7c,0x29,0x4c, - 0x4d,0x03,0xe9,0x25,0x68,0x11,0x86,0xb3,0xbd,0xf7,0x6f,0x61,0x22,0xa2,0x26,0x34, - 0x2a,0xbe,0x1e,0x46,0x14,0x68,0x9d,0x44,0x18,0xc2,0x40,0xf4,0x7e,0x5f,0x1b,0xad, - 0x0b,0x94,0xb6,0x67,0xb4,0x0b,0xe1,0xea,0x95,0x9c,0x66,0xdc,0xe7,0x5d,0x6c,0x05, - 0xda,0xd5,0xdf,0x7a,0xef,0xf6,0xdb,0x1f,0x82,0x4c,0xc0,0x68,0x47,0xa1,0xbd,0xee, - 0x39,0x50,0x56,0x4a,0xdd,0xdf,0xa5,0xf8,0xc6,0xda,0xca,0x90,0xca,0x01,0x42,0x9d, - 0x8b,0x0c,0x73,0x43,0x75,0x05,0x94,0xde,0x24,0xb3,0x80,0x34,0xe5,0x2c,0xdc,0x9b, - 0x3f,0xca,0x33,0x45,0xd0,0xdb,0x5f,0xf5,0x52,0xc3,0x21,0xda,0xe2,0x22,0x72,0x6b, - 0x3e,0xd0,0x5b,0xa8,0x87,0x8c,0x06,0x5d,0x0f,0xdd,0x09,0x19,0x93,0xd0,0xb9,0xfc, - 0x8b,0x0f,0x84,0x60,0x33,0x1c,0x9b,0x45,0xf1,0xf0,0xa3,0x94,0x3a,0x12,0x77,0x33, - 0x4d,0x44,0x78,0x28,0x3c,0x9e,0xfd,0x65,0x57,0x16,0x94,0x6b,0xfb,0x59,0xd0,0xc8, - 0x22,0x36,0xdb,0xd2,0x63,0x98,0x43,0xa1,0x04,0x87,0x86,0xf7,0xa6,0x26,0xbb,0xd6, - 0x59,0x4d,0xbf,0x6a,0x2e,0xaa,0x2b,0xef,0xe6,0x78,0xb6,0x4e,0xe0,0x2f,0xdc,0x7c, - 0xbe,0x57,0x19,0x32,0x7e,0x2a,0xd0,0xb8,0xba,0x29,0x00,0x3c,0x52,0x7d,0xa8,0x49, - 0x3b,0x2d,0xeb,0x25,0x49,0xfa,0xa3,0xaa,0x39,0xa7,0xc5,0xa7,0x50,0x11,0x36,0xfb, - 0xc6,0x67,0x4a,0xf5,0xa5,0x12,0x65,0x7e,0xb0,0xdf,0xaf,0x4e,0xb3,0x61,0x7f,0x2f } - }; - Exiv2::byte key = 0; - for (int i = 0; i < 4; ++i) { - key ^= (count >> (i*8)) & 0xff; - } - Exiv2::byte ci = xlat[0][serial & 0xff]; - Exiv2::byte cj = xlat[1][key]; - Exiv2::byte ck = 0x60; - for (uint32_t i = 0; i < size; ++i) { - cj += ci * ck++; - pData[i] ^= cj; - } - } -} diff --git a/platform/win32/msvc/external/exiv2/src/makernote_int.hpp b/platform/win32/msvc/external/exiv2/src/makernote_int.hpp deleted file mode 100644 index d3eeeb3c48e..00000000000 --- a/platform/win32/msvc/external/exiv2/src/makernote_int.hpp +++ /dev/null @@ -1,706 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file makernote_int.hpp - @brief Makernote factory and registry, IFD makernote header, and camera - vendor specific makernote implementations.
References:
- [1] ExifTool by Phil Harvey
- [2] Decoding raw digital photos in Linux by Dave Coffin - @version $Rev: 2701 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 11-Apr-06, ahu: created - */ -#ifndef MAKERNOTE_INT_HPP_ -#define MAKERNOTE_INT_HPP_ - -// ***************************************************************************** -// included header files -#include "tifffwd_int.hpp" -#include "tags_int.hpp" -#include "types.hpp" - -// + standard includes -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - namespace Internal { - -// ***************************************************************************** -// class definitions - - //! Type for a pointer to a function creating a makernote (image) - typedef TiffComponent* (*NewMnFct)(uint16_t tag, - IfdId group, - IfdId mnGroup, - const byte* pData, - uint32_t size, - ByteOrder byteOrder); - - //! Type for a pointer to a function creating a makernote (group) - typedef TiffComponent* (*NewMnFct2)(uint16_t tag, - IfdId group, - IfdId mnGroup); - - //! Makernote registry structure - struct TiffMnRegistry { - struct MakeKey; - /*! - @brief Compare a TiffMnRegistry structure with a key being the make - string from the image. The two are equal if - TiffMnRegistry::make_ equals a substring of the key of the - same size. E.g., registry = "OLYMPUS", - key = "OLYMPUS OPTICAL CO.,LTD" (found in the image) match. - */ - bool operator==(const std::string& key) const; - - //! Compare a TiffMnRegistry structure with a makernote group - bool operator==(IfdId key) const; - - // DATA - const char* make_; //!< Camera make - IfdId mnGroup_; //!< Group identifier - NewMnFct newMnFct_; //!< Makernote create function (image) - NewMnFct2 newMnFct2_; //!< Makernote create function (group) - }; - - /*! - @brief TIFF makernote factory for concrete TIFF makernotes. - */ - class TiffMnCreator { - public: - /*! - @brief Create the Makernote for camera \em make and details from - the makernote entry itself if needed. Return a pointer to - the newly created TIFF component. Set tag and group of the - new component to \em tag and \em group. This method is used - when a makernote is parsed from the Exif block. - @note Ownership for the component is transferred to the caller, - who is responsible to delete the component. No smart pointer - is used to indicate this transfer here in order to reduce - file dependencies. - */ - static TiffComponent* create(uint16_t tag, - IfdId group, - const std::string& make, - const byte* pData, - uint32_t size, - ByteOrder byteOrder); - /*! - @brief Create the Makernote for a given group. This method is used - when a makernote is written back from Exif tags. - */ - static TiffComponent* create(uint16_t tag, - IfdId group, - IfdId mnGroup); - - protected: - //! Prevent destruction (needed if used as a policy class) - ~TiffMnCreator() {} - private: - static const TiffMnRegistry registry_[]; // - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - Abstract : Tester application for image file handling - - File : metacopy.cpp - Version : $Rev: 2681 $ - Author(s): Brad Schick (brad) - History : 13-Jul-04, brad: created - */ -// ***************************************************************************** -// included header files -#include "image.hpp" -#include "iptc.hpp" -#include "exif.hpp" -#include "types.hpp" -#include "metacopy.hpp" -#include -#include -#include - -// ***************************************************************************** -// Main -int main(int argc, char* const argv[]) -{ -try { - // Handle command line arguments - Params params; - if (params.getopt(argc, argv)) { - params.usage(); - return 1; - } - if (params.help_) { - params.help(); - return 2; - } - - // Use MemIo to increase test coverage. - Exiv2::BasicIo::AutoPtr fileIo(new Exiv2::FileIo(params.read_)); - Exiv2::BasicIo::AutoPtr memIo(new Exiv2::MemIo); - memIo->transfer(*fileIo); - - Exiv2::Image::AutoPtr readImg = Exiv2::ImageFactory::open(memIo); - assert(readImg.get() != 0); - readImg->readMetadata(); - - Exiv2::Image::AutoPtr writeImg = Exiv2::ImageFactory::open(params.write_); - assert(writeImg.get() != 0); - if (params.preserve_) writeImg->readMetadata(); - if (params.iptc_) { - writeImg->setIptcData(readImg->iptcData()); - } - if (params.exif_) { - writeImg->setExifData(readImg->exifData()); - } - if (params.comment_) { - writeImg->setComment(readImg->comment()); - } - if (params.xmp_) { - writeImg->setXmpData(readImg->xmpData()); - } - - try { - writeImg->writeMetadata(); - } - catch (const Exiv2::AnyError&) { - std::cerr << params.progname() << - ": Could not write metadata to (" << params.write_ << ")\n"; - return 8; - } - - return 0; -} -catch (Exiv2::AnyError& e) { - std::cerr << "Caught Exiv2 exception '" << e << "'\n"; - return 10; -} -} - -int Params::option(int opt, const std::string& /*optarg*/, int optopt) -{ - int rc = 0; - switch (opt) { - case 'h': help_ = true; break; - case 'i': iptc_ = true; break; - case 'e': exif_ = true; break; - case 'c': comment_ = true; break; - case 'x': xmp_ = true; break; - case 'p': preserve_ = true; break; - case 'a': - iptc_ =true; - exif_ =true; - comment_ =true; - xmp_ =true; - break; - case ':': - std::cerr << progname() << ": Option -" << static_cast(optopt) - << " requires an argument\n"; - rc = 1; - break; - case '?': - std::cerr << progname() << ": Unrecognized option -" - << static_cast(optopt) << "\n"; - rc = 1; - break; - default: - std::cerr << progname() - << ": getopt returned unexpected character code " - << std::hex << opt << "\n"; - rc = 1; - break; - } - - return rc; -} - -int Params::nonoption(const std::string& argv) -{ - if (!write_.empty()) { - std::cerr << progname() << ": Unexpected extra argument (" << argv << ")\n"; - return 1; - } - if (first_) read_ = argv; - else write_ = argv; - first_ = false; - return 0; -} - -int Params::getopt(int argc, char* const argv[]) -{ - int rc = Util::Getopt::getopt(argc, argv, optstring_); - // Further consistency checks - if (help_==false) { - if (rc==0 && read_.empty() ) { - std::cerr << progname() << ": Read and write files must be specified\n"; - rc = 1; - } - if (rc==0 && write_.empty() ) { - std::cerr << progname() << ": Write file must be specified\n"; - rc = 1; - } - if (preserve_ && iptc_ && exif_ && comment_ && xmp_ ) { - std::cerr << progname() << ": Option -p has no effect when all metadata types are specified.\n"; - rc = 1; - } - } - return rc; -} // Params::getopt - - -void Params::usage(std::ostream& os) const -{ - os << "\nReads and writes raw metadata. Use -h option for help.\n" - << "Usage: " << progname() - << " [-iecaph] readfile writefile\n"; -} - -void Params::help(std::ostream& os) const -{ - usage(os); - os << "\nOptions:\n" - << " -i Read Iptc data from readfile and write to writefile.\n" - << " -e Read Exif data from readfile and write to writefile.\n" - << " -c Read Jpeg comment from readfile and write to writefile.\n" - << " -x Read XMP data from readfile and write to writefile.\n" - << " -a Read all metadata from readfile and write to writefile.\n" - << " -p Preserve existing metadata in writefile if not replaced.\n" - << " -h Display this help and exit.\n\n"; -} // Params::help - diff --git a/platform/win32/msvc/external/exiv2/src/metacopy.hpp b/platform/win32/msvc/external/exiv2/src/metacopy.hpp deleted file mode 100644 index b156a79af01..00000000000 --- a/platform/win32/msvc/external/exiv2/src/metacopy.hpp +++ /dev/null @@ -1,88 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file metacopy.hpp - @brief Defines class Params, used for the command line handling - @version $Rev: 2681 $ - @author Brad Schick (brad) - @date 13-Jul-04, brad: created - */ -#ifndef METACOPY_HPP_ -#define METACOPY_HPP_ - -#include "utils.hpp" - -class Params : public Util::Getopt { -private: - std::string optstring_; - bool first_; - -public: - bool help_; //!< Help option flag. - bool iptc_; //!< Iptc option flag. - bool exif_; //!< Exif option flag. - bool comment_; //!< JPEG comment option flag. - bool xmp_; //!< XMP option flag. - bool preserve_; //!< Preserve existing metadata option flag. - std::string read_; //!< Source file - std::string write_; //!< Destination file - -public: - /*! - @brief Default constructor. Note that optstring_ is initialized here. - */ - Params() : optstring_(":iecaph"), - first_(true), - help_(false), - iptc_(false), - exif_(false), - comment_(false), - xmp_(false), - preserve_(false) - {} - - /*! - @brief Call Getopt::getopt() with optstring, to initiate command line - argument parsing, perform consistency checks after all command line - arguments are parsed. - - @param argc Argument count as passed to main() on program invocation. - @param argv Argument array as passed to main() on program invocation. - - @return 0 if successful, >0 in case of errors. - */ - int getopt(int argc, char* const argv[]); - - //! Handle options and their arguments. - virtual int option(int opt, const std::string& optarg, int optopt); - - //! Handle non-option parameters. - virtual int nonoption(const std::string& argv); - - //! Print a minimal usage note to an output stream. - void usage(std::ostream& os =std::cout) const; - - //! Print further usage explanations to an output stream. - void help(std::ostream& os =std::cout) const; - -}; // class Params - -#endif // METACOPY_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/metadatum.cpp b/platform/win32/msvc/external/exiv2/src/metadatum.cpp deleted file mode 100644 index 159a5a5ce7c..00000000000 --- a/platform/win32/msvc/external/exiv2/src/metadatum.cpp +++ /dev/null @@ -1,96 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: metadatum.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - Brad Schick (brad) - History: 26-Jan-04, ahu: created - 31-Jul-04, brad: isolated as a component - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: metadatum.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#include "metadatum.hpp" - -// + standard includes -#include -#include - - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - Key::~Key() - { - } - - Key::AutoPtr Key::clone() const - { - return AutoPtr(clone_()); - } - - Key& Key::operator=(const Key& /*rhs*/) - { - return *this; - } - - Metadatum::Metadatum() - { - } - - Metadatum::Metadatum(const Metadatum& /*rhs*/) - { - } - - Metadatum::~Metadatum() - { - } - - Metadatum& Metadatum::operator=(const Metadatum& /*rhs*/) - { - return *this; - } - - std::string Metadatum::print(const ExifData* pMetadata) const - { - std::ostringstream os; - write(os, pMetadata); - return os.str(); - } - - bool cmpMetadataByTag(const Metadatum& lhs, const Metadatum& rhs) - { - return lhs.tag() < rhs.tag(); - } - - - bool cmpMetadataByKey(const Metadatum& lhs, const Metadatum& rhs) - { - return lhs.key() < rhs.key(); - } - -} // namespace Exiv2 - diff --git a/platform/win32/msvc/external/exiv2/src/metadatum.hpp b/platform/win32/msvc/external/exiv2/src/metadatum.hpp deleted file mode 100644 index 1a4e078de87..00000000000 --- a/platform/win32/msvc/external/exiv2/src/metadatum.hpp +++ /dev/null @@ -1,321 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file metadatum.hpp - @brief Provides abstract base classes Metadatum and Key - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @author Brad Schick (brad) - brad@robotbattle.com - @date 09-Jan-04, ahu: created
- 31-Jul-04, brad: isolated as a component
- 23-Aug-04, ahu: added Key - */ -#ifndef METADATUM_HPP_ -#define METADATUM_HPP_ - -// ***************************************************************************** -// included header files -#include "types.hpp" -#include "value.hpp" - -// + standard includes -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class declarations - class ExifData; - -// ***************************************************************************** -// class definitions - - /*! - @brief Abstract base class defining the %Key of a metadatum. - Keys are used to identify and group metadata. - */ - class EXIV2API Key { - public: - //! Shortcut for a %Key auto pointer. - typedef std::auto_ptr AutoPtr; - - //! @name Creators - //@{ - //! Destructor - virtual ~Key(); - //@} - - //! @name Accessors - //@{ - /*! - @brief Return the key of the metadatum as a string. The key is of the - form 'familyName.groupName.tagName'. Note however that the - key is not necessarily unique, e.g., an ExifData may contain - multiple metadata with the same key. - */ - virtual std::string key() const =0; - //! Return an identifier for the type of metadata (the first part of the key) - virtual const char* familyName() const =0; - //! Return the name of the group (the second part of the key) - virtual std::string groupName() const =0; - //! Return the name of the tag (which is also the third part of the key) - virtual std::string tagName() const =0; - //! Return a label for the tag - virtual std::string tagLabel() const =0; - //! Return the tag number - virtual uint16_t tag() const =0; - /*! - @brief Return an auto-pointer to a copy of itself (deep copy). - The caller owns this copy and the auto-pointer ensures that it - will be deleted. - */ - AutoPtr clone() const; - /*! - @brief Write the key to an output stream. You do not usually have - to use this function; it is used for the implementation of - the output operator for %Key, - operator<<(std::ostream &os, const Key &key). - */ - std::ostream& write(std::ostream& os) const { return os << key(); } - //@} - - protected: - //! @name Manipulators - //@{ - /*! - @brief Assignment operator. Protected so that it can only be used - by subclasses but not directly. - */ - Key& operator=(const Key& rhs); - //@} - - private: - //! Internal virtual copy constructor. - EXV_DLLLOCAL virtual Key* clone_() const =0; - - }; // class Key - - //! Output operator for Key types - inline std::ostream& operator<<(std::ostream& os, const Key& key) - { - return key.write(os); - } - - /*! - @brief Abstract base class defining the interface to access information - related to one metadata tag. - */ - class EXIV2API Metadatum { - public: - //! @name Creators - //@{ - //! Default Constructor - Metadatum(); - //! Copy constructor - Metadatum(const Metadatum& rhs); - //! Destructor - virtual ~Metadatum(); - //@} - - //! @name Manipulators - //@{ - /*! - @brief Set the value. This method copies (clones) the value pointed - to by pValue. - */ - virtual void setValue(const Value* pValue) =0; - /*! - @brief Set the value to the string buf. - Uses Value::read(const std::string& buf). If the metadatum does - not have a value yet, then one is created. See subclasses for - more details. Return 0 if the value was read successfully. - */ - virtual int setValue(const std::string& buf) =0; - //@} - - //! @name Accessors - //@{ - /*! - @brief Write the interpreted value to a string. - - Implemented in terms of write(), see there. - */ - std::string print(const ExifData* pMetadata =0) const; - /*! - @brief Write value to a data buffer and return the number - of bytes written. - - The user must ensure that the buffer has enough memory. Otherwise - the call results in undefined behaviour. - - @param buf Data buffer to write to. - @param byteOrder Applicable byte order (little or big endian). - @return Number of characters written. - */ - virtual long copy(byte* buf, ByteOrder byteOrder) const =0; - /*! - @brief Write the interpreted value to an output stream, return - the stream. - - The method takes an optional pointer to a metadata container. - Pretty-print functions may use that to refer to other metadata as it - is sometimes not sufficient to know only the value of the metadatum - that should be interpreted. Thus, it is advisable to always call this - method with a pointer to the metadata container if possible. - - This functionality is currently only implemented for Exif tags. - The pointer is ignored when used to write IPTC datasets or XMP - properties. - - Without the optional metadata pointer, you do not usually have to use - this function; it is used for the implementation of the output - operator for %Metadatum, - operator<<(std::ostream &os, const Metadatum &md). - - See also print(), which prints the interpreted value to a string. - */ - virtual std::ostream& write( - std::ostream& os, - const ExifData* pMetadata =0 - ) const =0; - /*! - @brief Return the key of the metadatum. The key is of the form - 'familyName.groupName.tagName'. Note however that the key - is not necessarily unique, e.g., an ExifData object may - contain multiple metadata with the same key. - */ - virtual std::string key() const =0; - //! Return the name of the metadata family (which is also the first part of the key) - virtual const char* familyName() const =0; - //! Return the name of the metadata group (which is also the second part of the key) - virtual std::string groupName() const =0; - //! Return the name of the tag (which is also the third part of the key) - virtual std::string tagName() const =0; - //! Return a label for the tag - virtual std::string tagLabel() const =0; - //! Return the tag - virtual uint16_t tag() const =0; - //! Return the type id of the value - virtual TypeId typeId() const =0; - //! Return the name of the type - virtual const char* typeName() const =0; - //! Return the size in bytes of one component of this type - virtual long typeSize() const =0; - //! Return the number of components in the value - virtual long count() const =0; - //! Return the size of the value in bytes - virtual long size() const =0; - //! Return the value as a string. - virtual std::string toString() const =0; - /*! - @brief Return the n-th component of the value converted to - a string. The behaviour of the method is undefined if there - is no n-th component. - */ - virtual std::string toString(long n) const =0; - /*! - @brief Return the n-th component of the value converted to long. - The return value is -1 if the value is not set and the behaviour - of the method is undefined if there is no n-th component. - */ - virtual long toLong(long n =0) const =0; - /*! - @brief Return the n-th component of the value converted to float. - The return value is -1 if the value is not set and the behaviour - of the method is undefined if there is no n-th component. - */ - virtual float toFloat(long n =0) const =0; - /*! - @brief Return the n-th component of the value converted to Rational. - The return value is -1/1 if the value is not set and the behaviour - of the method is undefined if there is no n-th component. - */ - virtual Rational toRational(long n =0) const =0; - /*! - @brief Return an auto-pointer to a copy (clone) of the value. The - caller owns this copy and the auto-poiner ensures that it will - be deleted. - - This method is provided for users who need full control over the - value. A caller may, e.g., downcast the pointer to the appropriate - subclass of Value to make use of the interface of the subclass to set - or modify its contents. - - @return An auto-pointer containing a pointer to a copy (clone) of the - value, 0 if the value is not set. - */ - virtual Value::AutoPtr getValue() const =0; - /*! - @brief Return a constant reference to the value. - - This method is provided mostly for convenient and versatile output of - the value which can (to some extent) be formatted through standard - stream manipulators. Do not attempt to write to the value through - this reference. An Error is thrown if the value is not set; as an - alternative to catching it, one can use count() to check if there - is any data before calling this method. - - @return A constant reference to the value. - @throw Error if the value is not set. - */ - virtual const Value& value() const =0; - //@} - - protected: - //! @name Manipulators - //@{ - /*! - @brief Assignment operator. Protected so that it can only be used - by subclasses but not directly. - */ - Metadatum& operator=(const Metadatum& rhs); - //@} - - }; // class Metadatum - - /*! - @brief Output operator for Metadatum types, writing the interpreted - tag value. - */ - inline std::ostream& operator<<(std::ostream& os, const Metadatum& md) - { - return md.write(os); - } - - /*! - @brief Compare two metadata by tag. Return true if the tag of metadatum - lhs is less than that of rhs. - */ - EXIV2API bool cmpMetadataByTag(const Metadatum& lhs, const Metadatum& rhs); - /*! - @brief Compare two metadata by key. Return true if the key of metadatum - lhs is less than that of rhs. - */ - EXIV2API bool cmpMetadataByKey(const Metadatum& lhs, const Metadatum& rhs); - -} // namespace Exiv2 - -#endif // #ifndef METADATUM_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/minoltamn.cpp b/platform/win32/msvc/external/exiv2/src/minoltamn.cpp deleted file mode 100644 index 3fc2e3c1f4f..00000000000 --- a/platform/win32/msvc/external/exiv2/src/minoltamn.cpp +++ /dev/null @@ -1,2128 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: minoltamn.cpp - Version: $Rev: 2681 $ - Author(s): Gilles Caulier (cgilles) - Andreas Huggel (ahu) - History: 06-May-06, gc: submitted - Credits: See header file. - */ - -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: minoltamn.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#include "minoltamn_int.hpp" -#include "tags_int.hpp" -#include "value.hpp" -#include "i18n.h" // NLS support. - -#include -#include -#include -#include -#include - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - namespace Internal { - - // -- Standard Minolta Makernotes tags --------------------------------------------------------------- - - //! Lookup table to translate Minolta color mode values to readable labels - extern const TagDetails minoltaColorMode[] = { - { 0, N_("Natural Color") }, - { 1, N_("Black & White") }, - { 2, N_("Vivid Color") }, - { 3, N_("Solarization") }, - { 4, N_("AdobeRGB") }, - { 5, N_("Sepia") }, - { 9, N_("Natural") }, - { 12, N_("Portrait") }, - { 13, N_("Natural sRGB") }, - { 14, N_("Natural+ sRGB") }, - { 15, N_("Landscape") }, - { 16, N_("Evening") }, - { 17, N_("Night Scene") }, - { 18, N_("Night Portrait") } - }; - - //! Lookup table to translate Minolta image quality values to readable labels - extern const TagDetails minoltaImageQuality[] = { - { 0, N_("Raw") }, - { 1, N_("Super Fine") }, - { 2, N_("Fine") }, - { 3, N_("Standard") }, - { 4, N_("Economy") }, - { 5, N_("Extra Fine") } - }; - - //! Lookup table to translate Minolta image stabilization values - extern const TagDetails minoltaImageStabilization[] = { - { 1, N_("Off") }, - { 5, N_("On") } - }; - - // Minolta Tag Info - const TagInfo MinoltaMakerNote::tagInfo_[] = { - TagInfo(0x0000, "Version", N_("Makernote Version"), - N_("String 'MLT0' (not null terminated)"), - minoltaId, makerTags, undefined, -1, printValue), - TagInfo(0x0001, "CameraSettingsStdOld", N_("Camera Settings (Std Old)"), - N_("Standard Camera settings (Old Camera models like D5, D7, S304, and S404)"), - minoltaId, makerTags, undefined, -1, printValue), - TagInfo(0x0003, "CameraSettingsStdNew", N_("Camera Settings (Std New)"), - N_("Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)"), - minoltaId, makerTags, undefined, -1, printValue), - TagInfo(0x0004, "CameraSettings7D", N_("Camera Settings (7D)"), - N_("Camera Settings (for Dynax 7D model)"), - minoltaId, makerTags, undefined, -1, printValue), - TagInfo(0x0018, "ImageStabilizationData", N_("Image Stabilization Data"), - N_("Image stabilization data"), - minoltaId, makerTags, undefined, -1, printValue), - - // TODO: Implement WB Info A100 tags decoding. - TagInfo(0x0020, "WBInfoA100", N_("WB Info A100"), - N_("White balance information for the Sony DSLR-A100"), - minoltaId, makerTags, undefined, -1, printValue), - - TagInfo(0x0040, "CompressedImageSize", N_("Compressed Image Size"), - N_("Compressed image size"), - minoltaId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0081, "Thumbnail", N_("Thumbnail"), - N_("Jpeg thumbnail 640x480 pixels"), - minoltaId, makerTags, undefined, -1, printValue), - TagInfo(0x0088, "ThumbnailOffset", N_("Thumbnail Offset"), - N_("Offset of the thumbnail"), - minoltaId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0089, "ThumbnailLength", N_("Thumbnail Length"), - N_("Size of the thumbnail"), - minoltaId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0100, "SceneMode", N_("Scene Mode"), - N_("Scene Mode"), - minoltaId, makerTags, unsignedLong, -1, printMinoltaSonySceneMode), - - // TODO: for A100, use Sony table from printMinoltaSonyColorMode(). - TagInfo(0x0101, "ColorMode", N_("Color Mode"), - N_("Color mode"), - minoltaId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(minoltaColorMode)), - - TagInfo(0x0102, "Quality", N_("Image Quality"), - N_("Image quality"), - minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyImageQuality), - - // TODO: Tag 0x0103 : quality or image size (see ExifTool doc). - TagInfo(0x0103, "0x0103", N_("0x0103"), - N_("0x0103"), - minoltaId, makerTags, unsignedLong, -1, printValue), - - TagInfo(0x0104, "FlashExposureComp", N_("Flash Exposure Compensation"), - N_("Flash exposure compensation in EV"), - minoltaId, makerTags, signedRational, -1, print0x9204), - TagInfo(0x0105, "Teleconverter", N_("Teleconverter Model"), - N_("Teleconverter Model"), - minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyTeleconverterModel), - TagInfo(0x0107, "ImageStabilization", N_("Image Stabilization"), - N_("Image stabilization"), - minoltaId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(minoltaImageStabilization)), - TagInfo(0x0109, "RawAndJpgRecording", N_("RAW+JPG Recording"), - N_("RAW and JPG files recording"), - minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyBoolValue), - TagInfo(0x010a, "ZoneMatching", N_("Zone Matching"), - N_("Zone matching"), - minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyZoneMatching), - TagInfo(0x010b, "ColorTemperature", N_("Color Temperature"), - N_("Color temperature"), - minoltaId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x010c, "LensID", N_("Lens ID"), - N_("Lens identifier"), - minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyLensID), - TagInfo(0x0111, "ColorCompensationFilter", N_("Color Compensation Filter"), - N_("Color Compensation Filter: negative is green, positive is magenta"), - minoltaId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0112, "WhiteBalanceFineTune", N_("White Balance Fine Tune"), - N_("White Balance Fine Tune Value"), - minoltaId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0113, "ImageStabilizationA100", N_("Image Stabilization A100"), - N_("Image Stabilization for the Sony DSLR-A100"), - minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyBoolValue), - - // TODO: implement CameraSettingsA100 tags decoding. - TagInfo(0x0114, "CameraSettings5D", N_("Camera Settings (5D)"), - N_("Camera Settings (for Dynax 5D model)"), - minoltaId, makerTags, undefined, -1, printValue), - - TagInfo(0x0115, "WhiteBalance", N_("White Balance"), - N_("White balance"), - minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyWhiteBalanceStd), - TagInfo(0x0e00, "PrintIM", N_("Print IM"), - N_("PrintIM information"), - minoltaId, makerTags, undefined, -1, printValue), - TagInfo(0x0f00, "CameraSettingsZ1", N_("Camera Settings (Z1)"), - N_("Camera Settings (for Z1, DImage X, and F100 models)"), - minoltaId, makerTags, undefined, -1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownMinoltaMakerNoteTag)", "(UnknownMinoltaMakerNoteTag)", - N_("Unknown Minolta MakerNote tag"), - minoltaId, makerTags, asciiString, -1, printValue) - }; - - const TagInfo* MinoltaMakerNote::tagList() - { - return tagInfo_; - } - - // -- Standard Minolta camera settings --------------------------------------------------------------- - - //! Lookup table to translate Minolta Std camera settings exposure mode values to readable labels - extern const TagDetails minoltaExposureModeStd[] = { - { 0, N_("Program") }, - { 1, N_("Aperture priority") }, - { 2, N_("Shutter priority") }, - { 3, N_("Manual") } - }; - - //! Lookup table to translate Minolta Std camera settings flash mode values to readable labels - extern const TagDetails minoltaFlashModeStd[] = { - { 0, N_("Fill flash") }, - { 1, N_("Red-eye reduction") }, - { 2, N_("Rear flash sync") }, - { 3, N_("Wireless") }, - { 4, N_("Off") } - }; - - //! Lookup table to translate Minolta Std camera settings white balance values to readable labels - extern const TagDetails minoltaWhiteBalanceStd[] = { - { 0, N_("Auto") }, - { 1, N_("Daylight") }, - { 2, N_("Cloudy") }, - { 3, N_("Tungsten") }, - { 5, N_("Custom") }, - { 7, N_("Fluorescent") }, - { 8, N_("Fluorescent 2") }, - { 11, N_("Custom 2") }, - { 12, N_("Custom 3") } - }; - - //! Lookup table to translate Minolta Std camera settings image size values to readable labels - extern const TagDetails minoltaImageSizeStd[] = { - { 0, N_("Full size") }, - { 1, "1600x1200" }, - { 2, "1280x960" }, - { 3, "640x480" }, - { 6, "2080x1560" }, - { 7, "2560x1920" }, - { 8, "3264x2176" } - }; - - //! Lookup table to translate Minolta Std camera settings image quality values to readable labels - extern const TagDetails minoltaImageQualityStd[] = { - { 0, N_("Raw") }, - { 1, N_("Super fine") }, - { 2, N_("Fine") }, - { 3, N_("Standard") }, - { 4, N_("Economy") }, - { 5, N_("Extra fine") } - }; - - //! Lookup table to translate Minolta Std camera settings drive mode values to readable labels - extern const TagDetails minoltaDriveModeStd[] = { - { 0, N_("Single Frame") }, - { 1, N_("Continuous") }, - { 2, N_("Self-timer") }, - { 4, N_("Bracketing") }, - { 5, N_("Interval") }, - { 6, N_("UHS continuous") }, - { 7, N_("HS continuous") } - }; - - //! Lookup table to translate Minolta Std camera settings metering mode values to readable labels - extern const TagDetails minoltaMeteringModeStd[] = { - { 0, N_("Multi-segment") }, - { 1, N_("Center weighted average") }, - { 2, N_("Spot") } - }; - - //! Lookup table to translate Minolta Std camera settings digital zoom values to readable labels - extern const TagDetails minoltaDigitalZoomStd[] = { - { 0, N_("Off") }, - { 1, N_("Electronic magnification") }, - { 2, "2x" } - }; - - //! Lookup table to translate Minolta Std camera bracket step mode values to readable labels - extern const TagDetails minoltaBracketStepStd[] = { - { 0, "1/3 EV" }, - { 1, "2/3 EV" }, - { 2, "1 EV" } - }; - - //! Lookup table to translate Minolta Std camera settings AF points values to readable labels - extern const TagDetails minoltaAFPointsStd[] = { - { 0, N_("Center") }, - { 1, N_("Top") }, - { 2, N_("Top-right") }, - { 3, N_("Right") }, - { 4, N_("Bottom-right") }, - { 5, N_("Bottom") }, - { 6, N_("Bottom-left") }, - { 7, N_("Left") }, - { 8, N_("Top-left") } - }; - - //! Lookup table to translate Minolta Std camera settings flash fired values to readable labels - extern const TagDetails minoltaFlashFired[] = { - { 0, N_("Did not fire") }, - { 1, N_("Fired") } - }; - - //! Lookup table to translate Minolta Std camera settings sharpness values to readable labels - extern const TagDetails minoltaSharpnessStd[] = { - { 0, N_("Hard") }, - { 1, N_("Normal") }, - { 2, N_("Soft") } - }; - - //! Lookup table to translate Minolta Std camera settings subject program values to readable labels - extern const TagDetails minoltaSubjectProgramStd[] = { - { 0, N_("None") }, - { 1, N_("Portrait") }, - { 2, N_("Text") }, - { 3, N_("Night portrait") }, - { 4, N_("Sunset") }, - { 5, N_("Sports action") } - }; - - //! Lookup table to translate Minolta Std camera settings ISO settings values to readable labels - extern const TagDetails minoltaISOSettingStd[] = { - { 0, "100" }, - { 1, "200" }, - { 2, "400" }, - { 3, "800" }, - { 4, N_("Auto") }, - { 5, "64" } - }; - - //! Lookup table to translate Minolta Std camera settings model values to readable labels - extern const TagDetails minoltaModelStd[] = { - { 0, "DiMAGE 7 | X1 | X21 | X31" }, - { 1, "DiMAGE 5" }, - { 2, "DiMAGE S304" }, - { 3, "DiMAGE S404" }, - { 4, "DiMAGE 7i" }, - { 5, "DiMAGE 7Hi" }, - { 6, "DiMAGE A1" }, - { 7, "DiMAGE A2 | S414" }, - { 7, "DiMAGE A2 | S414" } // To silence compiler warning - }; - - //! Lookup table to translate Minolta Std camera settings interval mode values to readable labels - extern const TagDetails minoltaIntervalModeStd[] = { - { 0, N_("Still image") }, - { 1, N_("Time-lapse movie") } - }; - - //! Lookup table to translate Minolta Std camera settings folder name values to readable labels - extern const TagDetails minoltaFolderNameStd[] = { - { 0, N_("Standard form") }, - { 1, N_("Data form") } - }; - - //! Lookup table to translate Minolta Std camera settings color mode values to readable labels - extern const TagDetails minoltaColorModeStd[] = { - { 0, N_("Natural color") }, - { 1, N_("Black and white") }, - { 2, N_("Vivid color") }, - { 3, N_("Solarization") }, - { 4, N_("Adobe RGB") } - }; - - //! Lookup table to translate Minolta Std camera settings wide focus zone values to readable labels - extern const TagDetails minoltaWideFocusZoneStd[] = { - { 0, N_("No zone") }, - { 1, N_("Center zone (horizontal orientation)") }, - { 1, N_("Center zone (vertical orientation)") }, - { 1, N_("Left zone") }, - { 4, N_("Right zone") } - }; - - //! Lookup table to translate Minolta Std camera settings focus mode values to readable labels - extern const TagDetails minoltaFocusModeStd[] = { - { 0, N_("Auto focus") }, - { 1, N_("Manual focus") } - }; - - //! Lookup table to translate Minolta Std camera settings focus area values to readable labels - extern const TagDetails minoltaFocusAreaStd[] = { - { 0, N_("Wide focus (normal)") }, - { 1, N_("Spot focus") } - }; - - //! Lookup table to translate Minolta Std camera settings DEC switch position values to readable labels - extern const TagDetails minoltaDECPositionStd[] = { - { 0, N_("Exposure") }, - { 1, N_("Contrast") }, - { 2, N_("Saturation") }, - { 3, N_("Filter") } - }; - - //! Lookup table to translate Minolta Std camera settings color profile values to readable labels - extern const TagDetails minoltaColorProfileStd[] = { - { 0, N_("Not embedded") }, - { 1, N_("Embedded") } - }; - - //! Lookup table to translate Minolta Std camera settings data Imprint values to readable labels - extern const TagDetails minoltaDataImprintStd[] = { - { 0, N_("None") }, - { 1, "YYYY/MM/DD" }, - { 2, "MM/DD/HH:MM" }, - { 3, N_("Text") }, - { 4, N_("Text + ID#") } - }; - - //! Lookup table to translate Minolta Std camera settings flash metering values to readable labels - extern const TagDetails minoltaFlashMeteringStd[] = { - { 0, N_("ADI (Advanced Distance Integration)") }, - { 1, N_("Pre-flash TTl") }, - { 2, N_("Manual flash control") } - }; - - std::ostream& MinoltaMakerNote::printMinoltaExposureSpeedStd(std::ostream& os, const Value& value, const ExifData*) - { - // From the PHP JPEG Metadata Toolkit - os << (value.toLong()/8)-1; - return os; - } - - std::ostream& MinoltaMakerNote::printMinoltaExposureTimeStd(std::ostream& os, const Value& value, const ExifData*) - { - // From the PHP JPEG Metadata Toolkit - os << (value.toLong()/8)-6; - return os; - } - - std::ostream& MinoltaMakerNote::printMinoltaFNumberStd(std::ostream& os, const Value& value, const ExifData*) - { - // From the PHP JPEG Metadata Toolkit - os << (value.toLong()/8)-1; - return os; - } - - std::ostream& MinoltaMakerNote::printMinoltaExposureCompensationStd(std::ostream& os, const Value& value, const ExifData*) - { - // From the PHP JPEG Metadata Toolkit - os << value.toLong()/256; - return os; - } - - std::ostream& MinoltaMakerNote::printMinoltaFocalLengthStd(std::ostream& os, const Value& value, const ExifData*) - { - // From the PHP JPEG Metadata Toolkit - os << (value.toLong()/3)-2; - return os; - } - - std::ostream& MinoltaMakerNote::printMinoltaDateStd(std::ostream& os, const Value& value, const ExifData*) - { - // From the PHP JPEG Metadata Toolkit - os << value.toLong() / 65536 << ":" << std::right << std::setw(2) << std::setfill('0') - << (value.toLong() - value.toLong() / 65536 * 65536) / 256 << ":" - << std::right << std::setw(2) << std::setfill('0') << value.toLong() % 256; - return os; - } - - std::ostream& MinoltaMakerNote::printMinoltaTimeStd(std::ostream& os, const Value& value, const ExifData*) - { - // From the PHP JPEG Metadata Toolkit - os << std::right << std::setw(2) << std::setfill('0') << value.toLong() / 65536 - << ":" << std::right << std::setw(2) << std::setfill('0') - << (value.toLong() - value.toLong() / 65536 * 65536) / 256 << ":" - << std::right << std::setw(2) << std::setfill('0') << value.toLong() % 256; - return os; - } - - std::ostream& MinoltaMakerNote::printMinoltaFlashExposureCompStd(std::ostream& os, const Value& value, const ExifData*) - { - // From the PHP JPEG Metadata Toolkit - os << (value.toLong()-6)/3; - return os; - } - - std::ostream& MinoltaMakerNote::printMinoltaWhiteBalanceStd(std::ostream& os, const Value& value, const ExifData*) - { - // From the PHP JPEG Metadata Toolkit - os << value.toLong()/256; - return os; - } - - std::ostream& MinoltaMakerNote::printMinoltaBrightnessStd(std::ostream& os, const Value& value, const ExifData*) - { - // From the PHP JPEG Metadata Toolkit - os << (value.toLong()/8)-6; - return os; - } - - // Minolta Standard Camera Settings Tag Info (Old and New) - const TagInfo MinoltaMakerNote::tagInfoCsStd_[] = { - TagInfo(0x0001, "ExposureMode", N_("Exposure Mode"), - N_("Exposure mode"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaExposureModeStd)), - TagInfo(0x0002, "FlashMode", N_("Flash Mode"), - N_("Flash mode"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashModeStd)), - TagInfo(0x0003, "WhiteBalance", N_("White Balance"), - N_("White balance"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaWhiteBalanceStd)), - TagInfo(0x0004, "ImageSize", N_("Image Size"), - N_("Image size"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaImageSizeStd)), - TagInfo(0x0005, "Quality", N_("Image Quality"), - N_("Image quality"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaImageQualityStd)), - TagInfo(0x0006, "DriveMode", N_("Drive Mode"), - N_("Drive mode"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaDriveModeStd)), - TagInfo(0x0007, "MeteringMode", N_("Metering Mode"), - N_("Metering mode"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaMeteringModeStd)), - TagInfo(0x0008, "ISO", N_("ISO"), - N_("ISO Value"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaExposureSpeedStd), - TagInfo(0x0009, "ExposureTime", N_("Exposure Time"), - N_("Exposure time"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaExposureTimeStd), - TagInfo(0x000A, "FNumber", N_("FNumber"), - N_("The F-Number"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaFNumberStd), - TagInfo(0x000B, "MacroMode", N_("Macro Mode"), - N_("Macro mode"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaSonyBoolValue), - TagInfo(0x000C, "DigitalZoom", N_("Digital Zoom"), - N_("Digital zoom"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaDigitalZoomStd)), - TagInfo(0x000D, "ExposureCompensation", N_("Exposure Compensation"), - N_("Exposure compensation"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaExposureCompensationStd), - TagInfo(0x000E, "BracketStep", N_("Bracket Step"), - N_("Bracket step"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaBracketStepStd)), - TagInfo(0x0010, "IntervalLength", N_("Interval Length"), - N_("Interval length"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x0011, "IntervalNumber", N_("Interval Number"), - N_("Interval number"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x0012, "FocalLength", N_("Focal Length"), - N_("Focal length"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaFocalLengthStd), - TagInfo(0x0013, "FocusDistance", N_("Focus Distance"), - N_("Focus distance"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x0014, "FlashFired", N_("Flash Fired"), - N_("Flash fired"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashFired)), - TagInfo(0x0015, "MinoltaDate", N_("Minolta Date"), - N_("Minolta date"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaDateStd), - TagInfo(0x0016, "MinoltaTime", N_("Minolta Time"), - N_("Minolta time"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaTimeStd), - TagInfo(0x0017, "MaxAperture", N_("Max Aperture"), - N_("Max aperture"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x001A, "FileNumberMemory", N_("File Number Memory"), - N_("File number memory"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaSonyBoolValue), - TagInfo(0x001B, "LastFileNumber", N_("Last Image Number"), - N_("Last image number"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x001C, "ColorBalanceRed", N_("Color Balance Red"), - N_("Color balance red"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaWhiteBalanceStd), - TagInfo(0x001D, "ColorBalanceGreen", N_("Color Balance Green"), - N_("Color balance green"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaWhiteBalanceStd), - TagInfo(0x001E, "ColorBalanceBlue", N_("Color Balance Blue"), - N_("Color balance blue"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaWhiteBalanceStd), - TagInfo(0x001F, "Saturation", N_("Saturation"), - N_("Saturation"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x0020, "Contrast", N_("Contrast"), - N_("Contrast"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x0021, "Sharpness", N_("Sharpness"), - N_("Sharpness"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaSharpnessStd)), - TagInfo(0x0022, "SubjectProgram", N_("Subject Program"), - N_("Subject program"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaSubjectProgramStd)), - TagInfo(0x0023, "FlashExposureComp", N_("Flash Exposure Compensation"), - N_("Flash exposure compensation in EV"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaFlashExposureCompStd), - TagInfo(0x0024, "ISOSetting", N_("ISO Settings"), - N_("ISO setting"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaISOSettingStd)), - TagInfo(0x0025, "MinoltaModel", N_("Minolta Model"), - N_("Minolta model"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaModelStd)), - TagInfo(0x0026, "IntervalMode", N_("Interval Mode"), - N_("Interval mode"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaIntervalModeStd)), - TagInfo(0x0027, "FolderName", N_("Folder Name"), - N_("Folder name"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFolderNameStd)), - TagInfo(0x0028, "ColorMode", N_("ColorMode"), - N_("ColorMode"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaColorModeStd)), - TagInfo(0x0029, "ColorFilter", N_("Color Filter"), - N_("Color filter"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x002A, "BWFilter", N_("Black and White Filter"), - N_("Black and white filter"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x002B, "Internal Flash", N_("Internal Flash"), - N_("Internal Flash"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashFired)), - TagInfo(0x002C, "Brightness", N_("Brightness"), - N_("Brightness"), - minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaBrightnessStd), - TagInfo(0x002D, "SpotFocusPointX", N_("Spot Focus Point X"), - N_("Spot focus point X"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x002E, "SpotFocusPointY", N_("Spot Focus Point Y"), - N_("Spot focus point Y"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x002F, "WideFocusZone", N_("Wide Focus Zone"), - N_("Wide focus zone"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaWideFocusZoneStd)), - TagInfo(0x0030, "FocusMode", N_("Focus Mode"), - N_("Focus mode"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFocusModeStd)), - TagInfo(0x0031, "FocusArea", N_("Focus area"), - N_("Focus area"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFocusAreaStd)), - TagInfo(0x0032, "DECPosition", N_("DEC Switch Position"), - N_("DEC switch position"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaDECPositionStd)), - TagInfo(0x0033, "ColorProfile", N_("Color Profile"), - N_("Color profile"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaColorProfileStd)), - TagInfo(0x0034, "DataImprint", N_("Data Imprint"), - N_("Data Imprint"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaDataImprintStd)), - TagInfo(0x003F, "FlashMetering", N_("Flash Metering"), - N_("Flash metering"), - minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashMeteringStd)), - // End of list marker - TagInfo(0xffff, "(UnknownMinoltaCsStdTag)", "(UnknownMinoltaCsStdTag)", - N_("Unknown Minolta Camera Settings tag"), - minoltaCsNewId, makerTags, unsignedLong, 1, printValue) - }; - - const TagInfo* MinoltaMakerNote::tagListCsStd() - { - return tagInfoCsStd_; - } - - // -- Minolta Dynax 7D camera settings --------------------------------------------------------------- - - //! Lookup table to translate Minolta Dynax 7D camera settings exposure mode values to readable labels - extern const TagDetails minoltaExposureMode7D[] = { - { 0, N_("Program") }, - { 1, N_("Aperture priority") }, - { 2, N_("Shutter priority") }, - { 3, N_("Manual") }, - { 4, N_("Auto") }, - { 5, N_("Program-shift A") }, - { 6, N_("Program-shift S") } - }; - - //! Lookup table to translate Minolta Dynax 7D camera settings image size values to readable labels - extern const TagDetails minoltaImageSize7D[] = { - { 0, N_("Large") }, - { 1, N_("Medium") }, - { 2, N_("Small") } - }; - - //! Lookup table to translate Minolta Dynax 7D camera settings image quality values to readable labels - extern const TagDetails minoltaImageQuality7D[] = { - { 0, N_("Raw") }, - { 16, N_("Fine") }, - { 32, N_("Normal") }, - { 34, N_("Raw+Jpeg") }, - { 48, N_("Economy") } - }; - - //! Lookup table to translate Minolta Dynax 7D camera settings white balance values to readable labels - extern const TagDetails minoltaWhiteBalance7D[] = { - { 0, N_("Auto") }, - { 1, N_("Daylight") }, - { 2, N_("Shade") }, - { 3, N_("Cloudy") }, - { 4, N_("Tungsten") }, - { 5, N_("Fluorescent") }, - { 256, N_("Kelvin") }, - { 512, N_("Manual") }, - { 512, N_("Manual") } // To silence compiler warning - }; - - //! Lookup table to translate Minolta Dynax 7D camera settings focus mode values to readable labels - extern const TagDetails minoltaFocusMode7D[] = { - { 0, N_("Single-shot AF") }, - { 1, N_("Continuous AF") }, - { 3, N_("Manual") }, - { 4, N_("Automatic AF") } - }; - - //! Lookup table to translate Minolta Dynax 7D camera settings AF points values to readable labels - extern const TagDetails minoltaAFPoints7D[] = { - { 1, N_("Center") }, - { 2, N_("Top") }, - { 4, N_("Top-right") }, - { 8, N_("Right") }, - { 16, N_("Bottom-right") }, - { 32, N_("Bottom") }, - { 64, N_("Bottom-left") }, - { 128, N_("Left") }, - { 256, N_("Top-left") } - }; - - //! Lookup table to translate Minolta Dynax 7D camera settings ISO settings values to readable labels - extern const TagDetails minoltaISOSetting7D[] = { - { 0, N_("Auto") }, - { 1, "100" }, - { 3, "200" }, - { 4, "400" }, - { 5, "800" }, - { 6, "1600" }, - { 7, "3200" } - }; - - //! Lookup table to translate Minolta Dynax 7D camera settings color space values to readable labels - extern const TagDetails minoltaColorSpace7D[] = { - { 0, N_("sRGB (Natural)") }, - { 1, N_("sRGB (Natural+)") }, - { 4, N_("Adobe RGB") } - }; - - //! Lookup table to translate Minolta Dynax 7D camera settings rotation values to readable labels - extern const TagDetails minoltaRotation7D[] = { - { 72, N_("Horizontal (normal)") }, - { 76, N_("Rotate 90 CW") }, - { 82, N_("Rotate 270 CW") } - }; - - // Minolta Dynax 7D Camera Settings Tag Info - const TagInfo MinoltaMakerNote::tagInfoCs7D_[] = { - TagInfo(0x0000, "ExposureMode", N_("Exposure Mode"), - N_("Exposure mode"), - minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaExposureMode7D)), - TagInfo(0x0002, "ImageSize", N_("Image Size"), - N_("Image size"), - minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaImageSize7D)), - TagInfo(0x0003, "Quality", N_("Image Quality"), - N_("Image quality"), - minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaImageQuality7D)), - TagInfo(0x0004, "WhiteBalance", N_("White Balance"), - N_("White balance"), - minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaWhiteBalance7D)), - TagInfo(0x000E, "FocusMode", N_("Focus Mode"), - N_("Focus mode"), - minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaFocusMode7D)), - TagInfo(0x0010, "AFPoints", N_("AF Points"), - N_("AF points"), - minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaAFPoints7D)), - TagInfo(0x0015, "FlashFired", N_("Flash Fired"), - N_("Flash fired"), - minoltaCs7DId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashFired)), - TagInfo(0x0016, "FlashMode", N_("Flash Mode"), - N_("Flash mode"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x001C, "ISOSpeed", N_("ISO Speed Mode"), - N_("ISO speed setting"), - minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaISOSetting7D)), - TagInfo(0x001E, "ExposureCompensation", N_("Exposure Compensation"), - N_("Exposure compensation"), - minoltaCs7DId, makerTags, signedShort, 1, printValue), - TagInfo(0x0025, "ColorSpace", N_("Color Space"), - N_("Color space"), - minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaColorSpace7D)), - TagInfo(0x0026, "Sharpness", N_("Sharpness"), - N_("Sharpness"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0027, "Contrast", N_("Contrast"), - N_("Contrast"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0028, "Saturation", N_("Saturation"), - N_("Saturation"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x002D, "FreeMemoryCardImages", N_("Free Memory Card Images"), - N_("Free memory card images"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x003F, "ColorTemperature", N_("Color Temperature"), - N_("Color temperature"), - minoltaCs7DId, makerTags, signedShort, 1, printValue), - TagInfo(0x0040, "Hue", N_("Hue"), N_("Hue"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0046, "Rotation", N_("Rotation"), - N_("Rotation"), - minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaRotation7D)), - TagInfo(0x0047, "FNumber", N_("FNumber"), - N_("The F-Number"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0048, "ExposureTime", N_("Exposure Time"), - N_("Exposure time"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue), - // 0x004A is a dupplicate than 0x002D. - TagInfo(0x004A, "FreeMemoryCardImages", N_("Free Memory Card Images"), - N_("Free memory card images"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x005E, "ImageNumber", N_("Image Number"), - N_("Image number"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0060, "NoiseReduction", N_("Noise Reduction"), - N_("Noise reduction"), - minoltaCs7DId, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), - // 0x0062 is a dupplicate than 0x005E. - TagInfo(0x0062, "ImageNumber", N_("Image Number"), - N_("Image number"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0071, "ImageStabilization", N_("Image Stabilization"), - N_("Image stabilization"), - minoltaCs7DId, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), - TagInfo(0x0075, "ZoneMatchingOn", N_("Zone Matching On"), - N_("Zone matching on"), - minoltaCs7DId, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), - // End of list marker - TagInfo(0xffff, "(UnknownMinoltaCs7DTag)", "(UnknownMinoltaCs7DTag)", - N_("Unknown Minolta Camera Settings 7D tag"), - minoltaCs7DId, makerTags, unsignedShort, 1, printValue) - }; - - const TagInfo* MinoltaMakerNote::tagListCs7D() - { - return tagInfoCs7D_; - } - - // -- Minolta Dynax 5D camera settings --------------------------------------------------------------- - - //! Lookup table to translate Minolta Dynax 5D camera settings exposure mode values to readable labels - extern const TagDetails minoltaExposureMode5D[] = { - { 0, N_("Program") }, - { 1, N_("Aperture priority") }, - { 2, N_("Shutter priority") }, - { 3, N_("Manual") }, - { 4, N_("Auto") }, - { 5, N_("Program Shift A") }, - { 6, N_("Program Shift S") }, - { 0x1013, N_("Portrait") }, - { 0x1023, N_("Sports") }, - { 0x1033, N_("Sunset") }, - { 0x1043, N_("Night View/Portrait") }, - { 0x1053, N_("Landscape") }, - { 0x1083, N_("Macro") } - }; - - //! Lookup table to translate Minolta Dynax 5D camera settings image size values to readable labels - extern const TagDetails minoltaImageSize5D[] = { - { 0, N_("Large") }, - { 1, N_("Medium") }, - { 2, N_("Small") } - }; - - //! Lookup table to translate Minolta Dynax 5D camera settings image quality values to readable labels - extern const TagDetails minoltaImageQuality5D[] = { - { 0, N_("Raw") }, - { 16, N_("Fine") }, - { 32, N_("Normal") }, - { 34, N_("Raw+Jpeg") }, - { 48, N_("Economy") } - }; - - //! Lookup table to translate Minolta Dynax 5D camera settings white balance values to readable labels - extern const TagDetails minoltaWhiteBalance5D[] = { - { 0, N_("Auto") }, - { 1, N_("Daylight") }, - { 2, N_("Cloudy") }, - { 3, N_("Shade") }, - { 4, N_("Tungsten") }, - { 5, N_("Fluorescent") }, - { 6, N_("Flash") }, - { 256, N_("Kelvin") }, - { 512, N_("Manual") } - }; - - //! Lookup table to translate Minolta Dynax 5D camera settings metering mode values to readable labels - extern const TagDetails minoltaMeteringMode5D[] = { - { 0, N_("Multi-segment") }, - { 1, N_("Center weighted") }, - { 2, N_("Spot") } - }; - - //! Lookup table to translate Minolta Dynax 5D camera settings ISO settings values to readable labels - extern const TagDetails minoltaISOSetting5D[] = { - { 0, N_("Auto") }, - { 1, "100" }, - { 3, "200" }, - { 4, "400" }, - { 5, "800" }, - { 6, "1600" }, - { 7, "3200" }, - { 8, N_("200 (Zone Matching High)") }, - { 10, N_("80 (Zone Matching Low)") } - }; - - //! Lookup table to translate Minolta Dynax 5D camera settings color space values to readable labels - extern const TagDetails minoltaColorSpace5D[] = { - { 0, N_("sRGB (Natural)") }, - { 1, N_("sRGB (Natural+)") }, - { 2, N_("Monochrome") }, - { 3, N_("Adobe RGB (ICC)") }, - { 4, N_("Adobe RGB") } - }; - - //! Lookup table to translate Minolta Dynax 5D camera settings rotation values to readable labels - extern const TagDetails minoltaRotation5D[] = { - { 72, N_("Horizontal (normal)") }, - { 76, N_("Rotate 90 CW") }, - { 82, N_("Rotate 270 CW") } - }; - - //! Lookup table to translate Minolta Dynax 5D camera settings focus position values to readable labels - extern const TagDetails minoltaFocusPosition5D[] = { - { 0, N_("Wide") }, - { 1, N_("Central") }, - { 2, N_("Up") }, - { 3, N_("Up right") }, - { 4, N_("Right") }, - { 5, N_("Down right") }, - { 6, N_("Down") }, - { 7, N_("Down left") }, - { 8, N_("Left") }, - { 9, N_("Up left") } - }; - - //! Lookup table to translate Minolta Dynax 5D camera settings focus area values to readable labels - extern const TagDetails minoltaFocusArea5D[] = { - { 0, N_("Wide") }, - { 1, N_("Selection") }, - { 2, N_("Spot") } - }; - - //! Lookup table to translate Minolta Dynax 5D camera settings focus mode values to readable labels - extern const TagDetails minoltaAFMode5D[] = { - { 0, "AF-A" }, - { 1, "AF-S" }, - { 2, "AF-D" }, - { 3, "DMF" } - }; - - //! Lookup table to translate Minolta Dynax 5D camera settings picture finish values to readable labels - extern const TagDetails minoltaPictureFinish5D[] = { - { 0, N_("Natural") }, - { 1, N_("Natural+") }, - { 2, N_("Portrait") }, - { 3, N_("Wind Scene") }, - { 4, N_("Evening Scene") }, - { 5, N_("Night Scene") }, - { 6, N_("Night Portrait") }, - { 7, N_("Monochrome") }, - { 8, N_("Adobe RGB") }, - { 9, N_("Adobe RGB (ICC)") } - }; - - //! Method to convert Minolta Dynax 5D exposure manual bias values. - std::ostream& MinoltaMakerNote::printMinoltaExposureManualBias5D(std::ostream& os, const Value& value, const ExifData*) - { - // From Xavier Raynaud: the value is converted from 0:256 to -5.33:5.33 - - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(2) - << (float (value.toLong()-128)/24); - os.copyfmt(oss); - return os; - } - - //! Method to convert Minolta Dynax 5D exposure compensation values. - std::ostream& MinoltaMakerNote::printMinoltaExposureCompensation5D(std::ostream& os, const Value& value, const ExifData*) - { - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(2) - << (float (value.toLong()-300)/100); - os.copyfmt(oss); - return os; - } - - // Minolta Dynax 5D Camera Settings Tag Info - const TagInfo MinoltaMakerNote::tagInfoCs5D_[] = { - TagInfo(0x000A, "ExposureMode", N_("Exposure Mode"), - N_("Exposure mode"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaExposureMode5D)), - TagInfo(0x000C, "ImageSize", N_("Image Size"), - N_("Image size"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaImageSize5D)), - TagInfo(0x000D, "Quality", N_("Image Quality"), - N_("Image quality"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaImageQuality5D)), - TagInfo(0x000E, "WhiteBalance", N_("White Balance"), - N_("White balance"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaWhiteBalance5D)), - TagInfo(0x001A, "FocusPosition", N_("Focus Position"), - N_("Focus position"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaFocusPosition5D)), - TagInfo(0x001B, "FocusArea", N_("Focus Area"), - N_("Focus area"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaFocusArea5D)), - TagInfo(0x001F, "FlashFired", N_("Flash Fired"), - N_("Flash fired"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaFlashFired)), - TagInfo(0x0025, "MeteringMode", N_("Metering Mode"), - N_("Metering mode"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaMeteringMode5D)), - TagInfo(0x0026, "ISOSpeed", N_("ISO Speed Mode"), - N_("ISO speed setting"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaISOSetting5D)), - TagInfo(0x002F, "ColorSpace", N_("Color Space"), - N_("Color space"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaColorSpace5D)), - TagInfo(0x0030, "Sharpness", N_("Sharpness"), - N_("Sharpness"), - minoltaCs5DId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0031, "Contrast", N_("Contrast"), - N_("Contrast"), - minoltaCs5DId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0032, "Saturation", N_("Saturation"), - N_("Saturation"), - minoltaCs5DId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0035, "ExposureTime", N_("Exposure Time"), - N_("Exposure time"), - minoltaCs5DId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0036, "FNumber", N_("FNumber"), - N_("The F-Number"), - minoltaCs5DId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0037, "FreeMemoryCardImages", N_("Free Memory Card Images"), - N_("Free memory card images"), - minoltaCs5DId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0038, "ExposureRevision", N_("Exposure Revision"), - N_("Exposure revision"), - minoltaCs5DId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0048, "FocusMode", N_("Focus Mode"), - N_("Focus mode"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaFocusModeStd)), - TagInfo(0x0049, "ColorTemperature", N_("Color Temperature"), - N_("Color temperature"), - minoltaCs5DId, makerTags, signedShort, -1, printValue), - TagInfo(0x0050, "Rotation", N_("Rotation"), - N_("Rotation"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaRotation5D)), - TagInfo(0x0053, "ExposureCompensation", N_("Exposure Compensation"), - N_("Exposure compensation"), - minoltaCs5DId, makerTags, unsignedShort, -1, printMinoltaExposureCompensation5D), - TagInfo(0x0054, "FreeMemoryCardImages", N_("Free Memory Card Images"), - N_("Free memory card images"), - minoltaCs5DId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0065, "Rotation2", N_("Rotation2"), - N_("Rotation2"), - minoltaCs5DId, makerTags, unsignedShort, -1, printMinoltaSonyRotation), - TagInfo(0x006E, "Color Temperature", N_("Color Temperature"), - N_("Color Temperature"), - minoltaCs5DId, makerTags, signedShort, -1, printValue), - TagInfo(0x0071, "PictureFinish", N_("Picture Finish"), - N_("Picture Finish"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaPictureFinish5D)), - TagInfo(0x0091, "ExposureManualBias", N_("Exposure Manual Bias"), - N_("Exposure manual bias"), - minoltaCs5DId, makerTags, unsignedShort, -1, printMinoltaExposureManualBias5D), - TagInfo(0x009E, "AFMode", N_("AF Mode"), - N_("AF mode"), - minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaAFMode5D)), - TagInfo(0x00AE, "ImageNumber", N_("Image Number"), - N_("Image number"), - minoltaCs5DId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x00B0, "NoiseReduction", N_("Noise Reduction"), - N_("Noise reduction"), - minoltaCs5DId, makerTags, unsignedShort, -1, printMinoltaSonyBoolValue), - TagInfo(0x00BD, "ImageStabilization", N_("Image Stabilization"), - N_("Image stabilization"), - minoltaCs5DId, makerTags, unsignedShort, -1, printMinoltaSonyBoolValue), - - // From Xavier Raynaud: some notes on missing tags. - // 0x0051 seems to be identical to FNumber (0x0036). An approx. relation between Tag value - // and Fstop is exp(-0.335+value*0.043) - // 0x0052 seems to be identical to ExposureTime (0x0035). An approx. relation between Tag - // value and Exposure time is exp(-4+value*0.085) - - // End of list marker - TagInfo(0xFFFF, "(UnknownMinoltaCs5DTag)", "(UnknownMinoltaCs5DTag)", - N_("Unknown Minolta Camera Settings 5D tag"), - minoltaCs5DId, makerTags, invalidTypeId, -1, printValue) - }; - - const TagInfo* MinoltaMakerNote::tagListCs5D() - { - return tagInfoCs5D_; - } - - // -- Sony A100 camera settings --------------------------------------------------------------- - - //! Lookup table to translate Sony A100 camera settings drive mode 2 values to readable labels - extern const TagDetails sonyDriveMode2A100[] = { - { 0, N_("Self-timer 10 sec") }, - { 1, N_("Continuous") }, - { 4, N_("Self-timer 2 sec") }, - { 5, N_("Single Frame") }, - { 8, N_("White Balance Bracketing Low") }, - { 9, N_("White Balance Bracketing High") }, - { 770, N_("Single-frame Bracketing Low") }, - { 771, N_("Continuous Bracketing Low") }, - { 1794, N_("Single-frame Bracketing High") }, - { 1795, N_("Continuous Bracketing High") } - }; - - //! Lookup table to translate Sony A100 camera settings focus mode values to readable labels - extern const TagDetails sonyFocusModeA100[] = { - { 0, "AF-S" }, - { 1, "AF-C" }, - { 4, "AF-A" }, - { 5, "Manual" }, - { 6, "DMF" } - }; - - //! Lookup table to translate Sony A100 camera settings flash mode values to readable labels - extern const TagDetails sonyFlashModeA100[] = { - { 0, N_("Auto") }, - { 2, N_("Rear flash sync") }, - { 3, N_("Wireless") }, - { 4, N_("Fill flash") } - }; - - //! Lookup table to translate Sony A100 camera settings metering mode values to readable labels - extern const TagDetails sonyMeteringModeA100[] = { - { 0, N_("Multi-segment") }, - { 1, N_("Center weighted average") }, - { 2, N_("Spot") } - }; - - //! Lookup table to translate Sony A100 camera settings zone matching mode values to readable labels - extern const TagDetails sonyZoneMatchingModeA100[] = { - { 0, N_("Off") }, - { 1, N_("Standard") }, - { 2, N_("Advanced") } - }; - - //! Lookup table to translate Sony A100 camera settings color space values to readable labels - - extern const TagDetails sonyColorSpaceA100[] = { - { 0, N_("sRGB") }, - { 5, N_("Adobe RGB") } - }; - - //! Lookup table to translate Sony A100 camera settings drive mode values to readable labels - extern const TagDetails sonyDriveModeA100[] = { - { 0, N_("Single Frame") }, - { 1, N_("Continuous") }, - { 2, N_("Self-timer") }, - { 3, N_("Continuous Bracketing") }, - { 4, N_("Single-Frame Bracketing") }, - { 5, N_("White Balance Bracketing") } - }; - - //! Lookup table to translate Sony A100 camera settings self timer time values to readable labels - extern const TagDetails sonySelfTimerTimeA100[] = { - { 0, "10s" }, - { 4, "2s" } - }; - - //! Lookup table to translate Sony A100 camera settings continuous bracketing values to readable labels - extern const TagDetails sonyContinuousBracketingA100[] = { - { 0x303, N_("Low") }, - { 0x703, N_("High") } - }; - - //! Lookup table to translate Sony A100 camera settings single frame bracketing values to readable labels - extern const TagDetails sonySingleFrameBracketingA100[] = { - { 0x302, N_("Low") }, - { 0x702, N_("High") } - }; - - //! Lookup table to translate Sony A100 camera settings white balance bracketing values to readable labels - extern const TagDetails sonyWhiteBalanceBracketingA100[] = { - { 0x8, N_("Low") }, - { 0x9, N_("High") } - }; - - //! Lookup table to translate Sony A100 camera settings white balance setting values to readable labels - extern const TagDetails sonyWhiteBalanceSettingA100[] = { - { 0x0000, N_("Auto") }, - { 0x0001, N_("Preset") }, - { 0x0002, N_("Custom") }, - { 0x0003, N_("Color Temperature/Color Filter") }, - { 0x8001, N_("Preset") }, - { 0x8002, N_("Custom") }, - { 0x8003, N_("Color Temperature/Color Filter") } - }; - - //! Lookup table to translate Sony A100 camera settings preset white balance values to readable labels - extern const TagDetails sonyPresetWhiteBalanceA100[] = { - { 1, N_("Daylight") }, - { 2, N_("Cloudy") }, - { 3, N_("Shade") }, - { 4, N_("Tungsten") }, - { 5, N_("Fluorescent") }, - { 6, N_("Flash") } - }; - - //! Lookup table to translate Sony A100 camera settings color temperature setting values to readable labels - extern const TagDetails sonyColorTemperatureSettingA100[] = { - { 0, N_("Temperature") }, - { 2, N_("Color Filter") } - }; - - //! Lookup table to translate Sony A100 camera settings custom WB setting values to readable labels - extern const TagDetails sonyCustomWBSettingA100[] = { - { 0, N_("Setup") }, - { 2, N_("Recall") } - }; - - //! Lookup table to translate Sony A100 camera settings custom WB error values to readable labels - extern const TagDetails sonyCustomWBErrorA100[] = { - { 0, N_("Ok") }, - { 2, N_("Error") } - }; - - //! Lookup table to translate Sony A100 camera settings image size values to readable labels - extern const TagDetails sonyImageSizeA100[] = { - { 0, N_("Standard") }, - { 1, N_("Medium") }, - { 2, N_("Small") } - }; - - //! Lookup table to translate Sony A100 camera settings instant playback setup values to readable labels - extern const TagDetails sonyInstantPlaybackSetupA100[] = { - { 0, N_("Image and Information") }, - { 1, N_("Image Only") }, - { 3, N_("Image and Histogram") } - }; - - //! Lookup table to translate Sony A100 camera settings flash default setup values to readable labels - extern const TagDetails sonyFlashDefaultA100[] = { - { 0, N_("Auto") }, - { 1, N_("Fill Flash") } - }; - - //! Lookup table to translate Sony A100 camera settings auto bracket order values to readable labels - extern const TagDetails sonyAutoBracketOrderA100[] = { - { 0, "0-+" }, - { 1, "-0+" } - }; - - //! Lookup table to translate Sony A100 camera settings focus hold button values to readable labels - extern const TagDetails sonyFocusHoldButtonA100[] = { - { 0, N_("Focus Hold") }, - { 1, N_("DOF Preview") } - }; - - //! Lookup table to translate Sony A100 camera settings AEL button values to readable labels - extern const TagDetails sonyAELButtonA100[] = { - { 0, N_("Hold") }, - { 1, N_("Toggle") }, - { 2, N_("Spot Hold") }, - { 3, N_("Spot Toggle") } - }; - - //! Lookup table to translate Sony A100 camera settings control dial set values to readable labels - extern const TagDetails sonyControlDialSetA100[] = { - { 0, N_("Shutter Speed") }, - { 1, N_("Aperture") } - }; - - //! Lookup table to translate Sony A100 camera settings exposure compensation mode values to readable labels - extern const TagDetails sonyExposureCompensationModeA100[] = { - { 0, N_("Ambient and Flash") }, - { 1, N_("Ambient Only") } - }; - - //! Lookup table to translate Sony A100 camera settings sony AF area illumination values to readable labels - extern const TagDetails sonyAFAreaIlluminationA100[] = { - { 0, N_("0.3 seconds") }, - { 1, N_("0.6 seconds") }, - { 2, N_("Off") } - }; - - //! Lookup table to translate Sony A100 camera settings monitor display off values to readable labels - extern const TagDetails sonyMonitorDisplayOffA100[] = { - { 0, N_("Automatic") }, - { 1, N_("Manual") } - }; - - //! Lookup table to translate Sony A100 camera settings record display values to readable labels - extern const TagDetails sonyRecordDisplayA100[] = { - { 0, N_("Auto-rotate") }, - { 1, N_("Horizontal") } - }; - - //! Lookup table to translate Sony A100 camera settings play display values to readable labels - extern const TagDetails sonyPlayDisplayA100[] = { - { 0, N_("Auto-rotate") }, - { 1, N_("Manual Rotate") } - }; - - //! Lookup table to translate Sony A100 camera settings metering off scale indicator values to readable labels - extern const TagDetails sonyMeteringOffScaleIndicatorA100[] = { - { 0, N_("Within Range") }, - { 1, N_("Under/Over Range") }, - { 255, N_("Out of Range") } - }; - - //! Lookup table to translate Sony A100 camera settings exposure indicator values to readable labels - extern const TagDetails sonyExposureIndicatorA100[] = { - { 0, N_("Not Indicated") }, - { 1, N_("Under Scale") }, - { 119, N_("Bottom of Scale") }, - { 120, "-2.0" }, - { 121, "-1.7" }, - { 122, "-1.5" }, - { 123, "-1.3" }, - { 124, "-1.0" }, - { 125, "-0.7" }, - { 126, "-0.5" }, - { 127, "-0.3" }, - { 128, "-0.0" }, - { 129, "+0.3" }, - { 130, "+0.5" }, - { 131, "+0.7" }, - { 132, "+1.0" }, - { 133, "+1.3" }, - { 134, "+1.5" }, - { 135, "+1.7" }, - { 136, "+2.0" }, - { 253, N_("Top of Scale") }, - { 254, N_("Over Scale") } - }; - - //! Lookup table to translate Sony A100 camera settings focus mode switch values to readable labels - extern const TagDetails sonyFocusModeSwitchA100[] = { - { 0, N_("AM") }, - { 1, N_("MF") } - }; - - //! Lookup table to translate Sony A100 camera settings flash type switch values to readable labels - extern const TagDetails sonyFlashTypeA100[] = { - { 0, N_("Off") }, - { 1, N_("Built-in") }, - { 2, N_("External") } - }; - - //! Lookup table to translate Sony A100 camera settings battery level switch values to readable labels - extern const TagDetails sonyBatteryLevelA100[] = { - { 3, N_("Very Low") }, - { 4, N_("Low") }, - { 5, N_("Half Full") }, - { 6, N_("Sufficient Power Remaining") } - }; - - // Sony A100 Camera Settings Tag Info - const TagInfo MinoltaMakerNote::tagInfoCsA100_[] = { - TagInfo(0x0000, "ExposureMode", N_("Exposure Mode"), - N_("Exposure mode"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaExposureMode5D)), - TagInfo(0x0001, "ExposureCompensationSetting", N_("Exposure Compensation Setting"), - N_("Exposure compensation setting"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0005, "HighSpeedSync", N_("High Speed Sync"), - N_("High speed sync"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), - TagInfo(0x0006, "ManualExposureTime", N_("Manual Exposure Time"), - N_("Manual exposure time"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0007, "ManualFNumber", N_("Manual FNumber"), - N_("Manual FNumber"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0008, "ExposureTime", N_("Exposure Time"), - N_("Exposure time"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0009, "FNumber", N_("FNumber"), - N_("FNumber"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x000A, "DriveMode2", N_("Drive Mode 2"), - N_("Drive mode 2"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyDriveMode2A100)), - TagInfo(0x000B, "WhiteBalance", N_("White Balance"), - N_("White balance"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaWhiteBalance5D)), - TagInfo(0x000C, "FocusMode", N_("Focus Mode"), - N_("Focus mode"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFocusModeA100)), - TagInfo(0x000D, "LocalAFAreaPoint", N_("Local AF Area Point"), - N_("Local AF Area Point"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyLocalAFAreaPoint), - TagInfo(0x000E, "AFAreaMode", N_("AF Area Mode"), - N_("AF Area Mode"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyAFAreaMode), - TagInfo(0x000F, "FlashMode", N_("FlashMode"), - N_("FlashMode"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFlashModeA100)), - TagInfo(0x0010, "FlashExposureCompSetting", N_("Flash Exposure Comp Setting"), - N_("Flash exposure compensation setting"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0012, "MeteringMode", N_("Metering Mode"), - N_("Metering mode"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyMeteringModeA100)), - TagInfo(0x0013, "ISOSetting", N_("ISO Setting"), - N_("ISO setting"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0014, "ZoneMatchingMode", N_("Zone Matching Mode"), - N_("Zone Matching Mode"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyZoneMatchingModeA100)), - TagInfo(0x0015, "DynamicRangeOptimizerMode", N_("Dynamic Range Optimizer Mode"), - N_("Dynamic range optimizer mode"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyDynamicRangeOptimizerMode), - TagInfo(0x0016, "ColorMode", N_("Color Mode"), - N_("Color mode"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyColorMode), - TagInfo(0x0017, "ColorSpace", N_("Color Space"), - N_("Color space"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyColorSpaceA100)), - TagInfo(0x0018, "Sharpness", N_("Sharpness"), - N_("Sharpness"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0019, "Contrast", N_("Contrast"), - N_("Contrast"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x001A, "Saturation", N_("Saturation"), - N_("Saturation"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x001C, "FlashMetering", N_("Flash Metering"), - N_("Flash metering"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaFlashMeteringStd)), - TagInfo(0x001D, "PrioritySetupShutterRelease", N_("Priority Setup Shutter Release"), - N_("Priority Setup Shutter Release"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyPrioritySetupShutterRelease), - TagInfo(0x001E, "DriveMode", N_("Drive Mode"), - N_("Drive mode"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyDriveModeA100)), - TagInfo(0x001F, "SelfTimerTime", N_("Self Timer Time"), - N_("Self timer time"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonySelfTimerTimeA100)), - TagInfo(0x0020, "ContinuousBracketing", N_("Continuous Bracketing"), - N_("Continuous bracketing"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyContinuousBracketingA100)), - TagInfo(0x0021, "SingleFrameBracketing", N_("Single Frame Bracketing"), - N_("Single frame bracketing"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonySingleFrameBracketingA100)), - TagInfo(0x0022, "WhiteBalanceBracketing", N_("White Balance Bracketing"), - N_("White balance bracketing"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyWhiteBalanceBracketingA100)), - TagInfo(0x0023, "WhiteBalanceSetting", N_("White Balance Setting"), - N_("White balance setting"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyWhiteBalanceSettingA100)), - TagInfo(0x0024, "PresetWhiteBalance", N_("Preset White Balance"), - N_("Preset white balance"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyPresetWhiteBalanceA100)), - TagInfo(0x0025, "ColorTemperatureSetting", N_("Color Temperature Setting"), - N_("Color temperature setting"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyColorTemperatureSettingA100)), - TagInfo(0x0026, "CustomWBSetting", N_("Custom WB Setting"), - N_("Custom WB setting"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCustomWBSettingA100)), - TagInfo(0x0027, "DynamicRangeOptimizerSettings", N_("Dynamic Range Optimizer Settings"), - N_("Dynamic Range Optimizer Settings"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyDynamicRangeOptimizerMode), - TagInfo(0x0032, "FreeMemoryCardImages", N_("Free Memory Card Images"), - N_("Free memory card images"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0034, "CustomWBRedLevel", N_("Custom WB Red Level"), - N_("Custom WB red level"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0035, "CustomWBGreenLevel", N_("Custom WB Green Level"), - N_("Custom WB green level"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0036, "CustomWBBlueLevel", N_("Custom WB Blue Level"), - N_("CustomWB blue level"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0037, "CustomWBError", N_("Custom WB Error"), - N_("Custom WB Error"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCustomWBErrorA100)), - TagInfo(0x0038, "WhiteBalanceFineTune", N_("White Balance Fine Tune"), - N_("White balance fine tune"), - sony1MltCsA100Id, makerTags, signedShort, 1, printValue), - TagInfo(0x0039, "ColorTemperature", N_("Color Temperature"), - N_("Color temperature"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x003A, "ColorCompensationFilter", N_("Color Compensation Filter"), - N_("Color compensation filter"), - sony1MltCsA100Id, makerTags, signedShort, 1, printValue), - TagInfo(0x003B, "SonyImageSize", N_("Sony Image Size"), - N_("Sony Image Size"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyImageSizeA100)), - TagInfo(0x003C, "Quality", N_("Quality"), - N_("Quality"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyQualityCs), - TagInfo(0x003D, "InstantPlaybackTime", N_("Instant Playback Time"), - N_("Instant playback time"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x003E, "InstantPlaybackSetup", N_("Instant Playback Setup"), - N_("Instant playback setup"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyInstantPlaybackSetupA100)), - TagInfo(0x003F, "NoiseReduction", N_("Noise Reduction"), - N_("Noise reduction"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), - TagInfo(0x0040, "EyeStartAF", N_("Eye Start AF"), - N_("Eye start AF"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolInverseValue), - TagInfo(0x0041, "RedEyeReduction", N_("Red Eye Reduction"), - N_("Red eye reduction"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), - TagInfo(0x0042, "FlashDefault", N_("Flash Default"), - N_("Flash default"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFlashDefaultA100)), - TagInfo(0x0043, "AutoBracketOrder", N_("Auto Bracket Order"), - N_("Auto bracket order"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyAutoBracketOrderA100)), - TagInfo(0x0044, "FocusHoldButton", N_("Focus Hold Button"), - N_("Focus hold button"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFocusHoldButtonA100)), - TagInfo(0x0045, "AELButton", N_("AEL Button"), - N_("AEL button"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyAELButtonA100)), - TagInfo(0x0046, "ControlDialSet", N_("Control Dial Set"), - N_("Control dial set"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyControlDialSetA100)), - TagInfo(0x0047, "ExposureCompensationMode", N_("Exposure Compensation Mode"), - N_("Exposure compensation mode"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureCompensationModeA100)), - TagInfo(0x0048, "AFAssist", N_("AF Assist"), - N_("AF assist"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolInverseValue), - TagInfo(0x0049, "CardShutterLock", N_("Card Shutter Lock"), - N_("Card shutter lock"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolInverseValue), - TagInfo(0x004A, "LensShutterLock", N_("Lens Shutter Lock"), - N_("Lens shutter lock"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolInverseValue), - TagInfo(0x004B, "AFAreaIllumination", N_("AF Area Illumination"), - N_("AF area illumination"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyAFAreaIlluminationA100)), - TagInfo(0x004C, "MonitorDisplayOff", N_("Monitor Display Off"), - N_("Monitor display off"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyMonitorDisplayOffA100)), - TagInfo(0x004D, "RecordDisplay", N_("Record Display"), - N_("Record display"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyRecordDisplayA100)), - TagInfo(0x004E, "PlayDisplay", N_("Play Display"), - N_("Play display"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyPlayDisplayA100)), - TagInfo(0x0050, "ExposureIndicator", N_("Exposure Indicator"), - N_("Exposure indicator"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)), - TagInfo(0x0051, "AELExposureIndicator", N_("AEL Exposure Indicator"), - N_("AEL exposure indicator (also indicates exposure for next shot when bracketing)"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)), - TagInfo(0x0052, "ExposureBracketingIndicatorLast", N_("Exposure Bracketing Indicator Last"), - N_("Exposure bracketing indicator last (indicator for last shot when bracketing)"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)), - TagInfo(0x0053, "MeteringOffScaleIndicator", N_("Metering Off Scale Indicator"), - N_("Metering off scale indicator (two flashing triangles when under or over metering scale)"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyMeteringOffScaleIndicatorA100)), - TagInfo(0x0054, "FlashExposureIndicator", N_("Flash Exposure Indicator"), - N_("Flash exposure indicator"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)), - TagInfo(0x0055, "FlashExposureIndicatorNext", N_("Flash Exposure Indicator Next"), - N_("Flash exposure indicator next (indicator for next shot when bracketing)"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)), - TagInfo(0x0056, "FlashExposureIndicatorLast", N_("Flash Exposure Indicator Last"), - N_("Flash exposure indicator last (indicator for last shot when bracketing)"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)), - TagInfo(0x0057, "ImageStabilization", N_("Image Stabilization"), - N_("Image stabilization"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), - TagInfo(0x0058, "FocusModeSwitch", N_("Focus Mode Switch"), - N_("Focus mode switch"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFocusModeSwitchA100)), - TagInfo(0x0059, "FlashType", N_("Flash Type"), - N_("Flash type"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFlashTypeA100)), - TagInfo(0x005A, "Rotation", N_("Rotation"), - N_("Rotation"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyRotation), - TagInfo(0x004B, "AELock", N_("AE Lock"), - N_("AE lock"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), - TagInfo(0x005E, "ColorTemperature", N_("Color Temperature"), - N_("Color temperature"), - sony1MltCsA100Id, makerTags, unsignedLong, 1, printValue), - TagInfo(0x005F, "ColorCompensationFilter", N_("Color Compensation Filter"), - N_("Color compensation filter: negative is green, positive is magenta"), - sony1MltCsA100Id, makerTags, unsignedLong, 1, printValue), - TagInfo(0x0060, "BatteryLevel", N_("Battery Level"), - N_("Battery level"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyBatteryLevelA100)), - // End of list marker - TagInfo(0xffff, "(UnknownSonyCsA100Tag)", "(UnknownSonyCsA100Tag)", - N_("Unknown Sony Camera Settings A100 tag"), - sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue) - }; - - const TagInfo* MinoltaMakerNote::tagListCsA100() - { - return tagInfoCsA100_; - } - - // TODO : Add camera settings tags info "New2"... - - // -- Minolta and Sony MakerNote Common Values --------------------------------------- - - //! Lookup table to translate Minolta/Sony Lens id values to readable labels - /* NOTE: - - duplicate tags value are: - 0/25520, 4/25920, 13/25610, 19/25910, 22/26050/26070, - 25500/25501/26130, 25540/25541/25850, 25580/25581, 2564025641, - 25720/25721, 25790/25791, 25960/25961, 25980/25981, 26150/26151 - - No need to i18n these string. - */ - extern TagDetails const minoltaSonyLensID[] = { - { 0, "Minolta AF 28-85mm F3.5-4.5 New" }, - { 1, "Minolta AF 80-200mm F2.8 HS-APO G" }, - { 2, "Minolta AF 28-70mm F2.8 G" }, - { 3, "Minolta AF 28-80mm F4-5.6" }, - { 4, "Minolta AF 85mm F1.4G" }, - { 5, "Minolta AF 35-70mm F3.5-4.5 [II]" }, - { 6, "Minolta AF 24-85mm F3.5-4.5 [New]" }, - { 7, "Minolta AF 100-300mm F4.5-5.6(D) APO [New] | " - "Minolta AF 100-400mm F4.5-6.7(D) | " - "Sigma AF 100-300mm F4 EX DG IF" }, - { 8, "Minolta AF 70-210mm F4.5-5.6 [II]" }, - { 9, "Minolta AF 50mm F3.5 Macro" }, - { 10, "Minolta AF 28-105mm F3.5-4.5 [New]" }, - { 11, "Minolta AF 300mm F4 HS-APO G" }, - { 12, "Minolta AF 100mm F2.8 Soft Focus" }, - { 13, "Minolta AF 75-300mm F4.5-5.6 (New or II)" }, - { 14, "Minolta AF 100-400mm F4.5-6.7 APO" }, - { 15, "Minolta AF 400mm F4.5 HS-APO G" }, - { 16, "Minolta AF 17-35mm F3.5 G" }, - { 17, "Minolta AF 20-35mm F3.5-4.5" }, - { 18, "Minolta AF 28-80mm F3.5-5.6 II" }, - { 19, "Minolta AF 35mm F1.4 G" }, - { 20, "Minolta/Sony 135mm F2.8 [T4.5] STF" }, - { 22, "Minolta AF 35-80mm F4-5.6 II" }, - { 23, "Minolta AF 200mm F4 Macro APO G" }, - { 24, "Minolta/Sony AF 24-105mm F3.5-4.5 (D) | " - "Sigma 18-50mm F2.8 | " - "Sigma 17-70mm F2.8-4.5 (D) | " - "Sigma 20-40mm F2.8 EX DG Aspherical IF | " - "Sigma 18-200mm F3.5-6.3 DC | " - "Sigma 20-40mm F2.8 EX DG Aspherical IF | " - "Sigma DC 18-125mm F4-5,6 D | " - "Tamron SP AF 28-75mm F2.8 XR Di (IF) Macro" }, - { 25, "Minolta AF 100-300mm F4.5-5.6 APO (D) | " - "Sigma 100-300mm F4 EX (APO (D) or D IF) | " - "Sigma 70mm F2.8 EX DG Macro | " - "Sigma 20mm F1.8 EX DG Aspherical RF | " - "Sigma 30mm F1.4 DG EX" }, - { 27, "Minolta AF 85mm F1.4 G (D)" }, - { 28, "Minolta/Sony AF 100mm F2.8 Macro (D) | " - "Tamron SP AF 90mm F2.8 Di Macro" }, - { 29, "Minolta/Sony AF 75-300mm F4.5-5.6 (D) " }, - { 30, "Minolta AF 28-80mm F3.5-5.6 (D) | " - "Sigma AF 10-20mm F4-5.6 EX DC | " - "Sigma AF 12-24mm F4.5-5.6 EX DG | " - "Sigma 28-70mm EX DG F2.8 | " - "Sigma 55-200mm F4-5.6 DC" }, - { 31, "Minolta AF 50mm F2.8 Macro(D) | " - "Minolta AF 50mm F3.5 Macro" }, - { 32, "Minolta AF 100-400mm F4.5-6.7(D) | " - "Minolta AF 300mm F2.8G APO(D) SSM" }, - { 33, "Minolta/Sony AF 70-200mm F2.8 G" }, - { 35, "Minolta AF 85mm F1.4 G (D) Limited" }, - { 36, "Minolta AF 28-100mm F3.5-5.6 (D)" }, - { 38, "Minolta AF 17-35mm F2.8-4 (D)" }, - { 39, "Minolta AF 28-75mm F2.8 (D)" }, - { 40, "Minolta/Sony AF DT 18-70mm F3.5-5.6 (D) | " - "Sony AF DT 18-200mm F3.5-6.3" }, - { 41, "Minolta/Sony AF DT 11-18mm F4.5-5.6 (D) | " - "Tamron SP AF 11-18mm F4.5-5.6 Di II LD Aspherical IF" }, - { 42, "Minolta/Sony AF DT 18-200mm F3.5-6.3 (D)" }, - { 43, "Sony 35mm F1.4 G (SAL-35F14G)" }, - { 44, "Sony 50mm F1.4 (SAL-50F14)" }, - { 45, "Carl Zeiss Planar T* 85mm F1.4 ZA" }, - { 46, "Carl Zeiss Vario-Sonnar T* DT 16-80mm F3.5-4.5 ZA" }, - { 47, "Carl Zeiss Sonnar T* 135mm F1.8 ZA" }, - { 48, "Carl Zeiss Vario-Sonnar T* 24-70mm F2.8 ZA SSM (SAL-2470Z)" }, - { 49, "Sony AF DT 55-200mm F4-5.6" }, - { 50, "Sony AF DT 18-250mm F3.5-6.3" }, - { 51, "Sony AF DT 16-105mm F3.5-5.6 | " - "Sony AF DT 55-200mm F4-5.5" }, - { 52, "Sony 70-300mm F4.5-5.6 G SSM" }, - { 53, "Sony AF 70-400mm F4.5-5.6 G SSM (SAL-70400G)" }, - { 54, "Carl Zeiss Vario-Sonnar T* 16-35mm F2.8 ZA SSM (SAL-1635Z)" }, - { 55, "Sony DT 18-55mm F3.5-5.6 SAM (SAL-1855)" }, - { 56, "Sony AF DT 55-200mm F4-5.6 SAM" }, - { 57, "Sony AF DT 50mm F1.8 SAM" }, - { 58, "Sony AF DT 30mm F2.8 SAM Macro" }, - { 128, "Sigma 70-200mm F2.8 APO EX DG MACRO | " - "Tamron 18-200mm F3.5-6.3 | " - "Tamron 28-300mm F3.5-6.3 | " - "Tamron 80-300mm F3.5-6.3 | " - "Tamron AF 28-200mm F3.8-5.6 XR Di Aspherical [IF] MACRO | " - "Tamron SP AF 17-35mm F2.8-4 Di LD Aspherical IF | " - "Sigma AF 50-150mm F2.8 EX DC APO HSM II | " - "Sigma 10-20mm F3.5 EX DC HSM | " - "Sigma 70-200mm F2.8 II EX DG APO MACRO HSM" }, - { 129, "Tamron 200-400mm F5.6 LD | " - "Tamron 70-300mm F4-5.6 LD" }, - { 131, "Tamron 20-40mm F2.7-3.5 SP Aspherical IF" }, - { 135, "Vivitar 28-210mm F3.5-5.6" }, - { 136, "Tokina EMZ M100 AF 100mm F3.5" }, - { 137, "Cosina 70-210mm F2.8-4 AF" }, - { 138, "Soligor 19-35mm F3.5-4.5" }, - { 142, "Voigtlander 70-300mm F4.5-5.6" }, - { 146, "Voigtlander Macro APO-Lanthar 125mm F2.5 SL" }, - { 193, "Minolta AF 1.4x APO II" }, - { 255, "Tamron SP AF 17-50mm F2.8 XR Di II LD Aspherical | " - "Tamron AF 18-250mm F3.5-6.3 XR Di II LD | " - "Tamron AF 55-200mm F4-5.6 Di II | " - "Tamron AF 70-300mm F4-5.6 Di LD MACRO 1:2 | " - "Tamron SP AF 200-500mm F5.0-6.3 Di LD IF | " - "Tamron SP AF 10-24mm F3.5-4.5 Di II LD Aspherical IF | " - "Tamron SP AF 70-200mm F2.8 Di LD IF Macro | " - "Tamron SP AF 28-75mm F2.8 XR Di LD Aspherical IF" }, - { 25500, "Minolta AF 50mm F1.7" }, - { 25501, "Minolta AF 50mm F1.7" }, - { 25510, "Minolta AF 35-70mm F1.4" }, - { 25511, "Minolta AF 35-70mm F4 | " - "Sigma UC AF 28-70mm F3.5-4.5 | " - "Sigma AF 28-70mm F2.8 | " - "Sigma M-AF 70-200mm F2.8 EX Aspherical | " - "Quantaray M-AF 35-80mm F4-5.6 " }, - { 25520, "Minolta AF 28-85mm F3.5-4.5" }, - { 25521, "Minolta AF 28-85mm F3.5-4.5 | " - "Tokina 19-35mm F3.5-4.5 | " - "Tokina 28-70mm F2.8 AT-X | " - "Tokina 80-400mm F4.5-5.6 AT-X AF II 840 | " - "Tokina AF PRO 28-80mm F2.8 AT-X 280 | " - "Tokina AT-X PRO II AF 28-70mm F2.6-2.8 270 | " - "Tamron AF 19-35mm F3.5-4.5 | " - "Angenieux AF 28-70mm F2.6" }, - { 25530, "Minolta AF 28-135mm F4-4.5" }, - { 25531, "Minolta AF 28-135mm F4-4.5 | " - "Sigma ZOOM-alpha 35-135mm F3.5-4.5 | " - "Sigma 28-105mm F2.8-4 Aspherical" }, - { 25540, "Minolta AF 35-105mm F3.5-4.5" }, - { 25541, "Minolta AF 35-105mm F3.5-4.5" }, - { 25550, "Minolta AF 70-210mm F4" }, - { 25551, "Minolta AF 70-210mm F4 Macro | " - "Sigma 70-210mm F4-5.6 APO | " - "Sigma M-AF 70-200mm F2.8 EX APO | " - "Sigma 75-200mm F2.8-3.5" }, - { 25560, "Minolta AF 135mm F2.8" }, - { 25561, "Minolta AF 135mm F2.8" }, - { 25570, "Minolta AF 28mm F2.8" }, - { 25571, "Minolta/Sony AF 28mm F2.8" }, - { 25580, "Minolta AF 24-50mm F4" }, - { 25581, "Minolta AF 24-50mm F4" }, - { 25600, "Minolta AF 100-200mm F4.5" }, - { 25601, "Minolta AF 100-200mm F4.5" }, - { 25610, "Minolta AF 75-300mm F4.5-5.6" }, - { 25611, "Minolta AF 75-300mm F4.5-5.6 | " - "Sigma 70-300mm F4-5.6 DL Macro | " - "Sigma 300mm F4 APO Macro | " - "Sigma AF 500mm F4.5 APO | " - "Sigma AF 170-500mm F5-6.3 APO Aspherical | " - "Tokina AT-X AF 300mm F4 | " - "Tokina AT-X AF 400mm F5.6 SD | " - "Tokina AF 730 II 75-300mm F4.5-5.6" }, - { 25620, "Minolta AF 50mm F1.4" }, - { 25621, "Minolta AF 50mm F1.4 [New]" }, - { 25630, "Minolta AF 300mm F2.8G APO" }, - { 25631, "Minolta AF 300mm F2.8 APO | " - "Sigma AF 50-500mm F4-6.3 EX DG APO | " - "Sigma AF 170-500mm F5-6.3 APO Aspherical | " - "Sigma AF 500mm F4.5 EX DG APO | " - "Sigma 400mm F5.6 APO" }, - { 25640, "Minolta AF 50mm F2.8 Macro" }, - { 25641, "Minolta AF 50mm F2.8 Macro | " - "Sigma 50mm F2.8 EX Macro" }, - { 25650, "Minolta AF 600mm F4 APO" }, - { 25651, "Minolta AF 600mm F4 APO" }, - { 25660, "Minolta AF 24mm F2.8" }, - { 25661, "Minolta AF 24mm F2.8 | " - "Sigma 17-35mm F2.8-4.0 EX-D" }, - { 25720, "Minolta AF 500mm F8 Reflex" }, - { 25721, "Minolta/Sony AF 500mm F8 Reflex" }, - { 25780, "Minolta/Sony AF 16mm F2.8 Fisheye" }, - { 25781, "Minolta/Sony AF 16mm F2.8 Fisheye | " - "Sigma 8mm F4 EX [DG] Fisheye | " - "Sigma 14mm F3.5 | " - "Sigma 15mm F2.8 Fisheye" }, - { 25790, "Minolta AF 20mm F2.8" }, - { 25791, "Minolta/Sony AF 20mm F2.8" }, - { 25810, "Minolta AF 100mm F2.8 Macro" }, - { 25811, "Minolta AF 100mm F2.8 Macro [New] | " - "Sigma AF 90mm F2.8 Macro | " - "Sigma AF 105mm F2.8 EX [DG] Macro | " - "Sigma 180mm F5.6 Macro | " - "Tamron 90mm F2.8 Macro" }, - { 25850, "Minolta AF 35-105mm F3.5-4.5" }, - { 25851, "Beroflex 35-135mm F3.5-4.5" }, - { 25858, "Minolta AF 35-105mm F3.5-4.5 New | " - "Tamron 24-135mm F3.5-5.6" }, - { 25880, "Minolta AF 70-210mm F3.5-4.5" }, - { 25881, "Minolta AF 70-210mm F3.5-4.5" }, - { 25890, "Minolta AF 80-200mm F2.8 APO" }, - { 25891, "Minolta AF 80-200mm F2.8 APO | " - "Tokina 80-200mm F2.8" }, - { 25910, "Minolta AF 35mm F1.4G" }, - { 25911, "Minolta AF 35mm F1.4" }, - { 25920, "Minolta AF 85mm F1.4G" }, - { 25921, "Minolta AF 85mm F1.4G(D)" }, - { 25930, "Minolta AF 200mm F2.8 APO" }, - { 25931, "Minolta AF 200mm F2.8 G APO" }, - { 25940, "Minolta AF 3X-1X F1.7-2.8 Macro" }, - { 25941, "Minolta AF 3x-1x F1.7-2.8 Macro" }, - { 25960, "Minolta AF 28mm F2" }, - { 25961, "Minolta AF 28mm F2" }, - { 25970, "Minolta AF 35mm F2" }, - { 25971, "Minolta AF 35mm F2 [New]" }, - { 25980, "Minolta AF 100mm F2" }, - { 25981, "Minolta AF 100mm F2" }, - { 26040, "Minolta AF 80-200mm F4.5-5.6" }, - { 26041, "Minolta AF 80-200mm F4.5-5.6" }, - { 26050, "Minolta AF 35-80mm F4-5.6" }, - { 26051, "Minolta AF 35-80mm F4-5.6" }, - { 26060, "Minolta AF 100-300mm F4.5-5.6" }, - { 26061, "Minolta AF 100-300mm F4.5-5.6(D) | " - "Sigma 105mm F2.8 Macro EX-DG" }, - { 26070, "Minolta AF 35-80mm F4-5.6" }, - { 26071, "Minolta AF 35-80mm F4-5.6" }, - { 26080, "Minolta AF 300mm F2.8G APO High Speed" }, - { 26081, "Minolta AF 300mm F2.8G" }, - { 26090, "Minolta AF 600mm F4G APO High Speed" }, - { 26091, "Minolta AF 600mm F4 HS-APO G" }, - { 26120, "Minolta AF 200mm F2.8G APO High Speed" }, - { 26121, "Minolta AF 200mm F2.8G(D)" }, - { 26130, "Minolta AF 50mm F1.7" }, - { 26131, "Minolta AF 50mm F1.7 New" }, - { 26150, "Minolta AF 28-105mm F3.5-4.5 Xi" }, - { 26151, "Minolta AF 28-105mm F3.5-4.5 xi" }, - { 26160, "Minolta AF 35-200mm F4.5-5.6 Xi" }, - { 26161, "Minolta AF 35-200mm F4.5-5.6 Xi" }, - { 26180, "Minolta AF 28-80mm F4-5.6 Xi" }, - { 26181, "Minolta AF 28-80mm F4-5.6 xi" }, - { 26190, "Minolta AF 80-200mm F4.5-5.6 Xi" }, - { 26191, "Minolta AF 80-200mm F4.5-5.6 Xi" }, - { 26201, "Minolta AF 28-70mm F2.8 G" }, - { 26210, "Minolta AF 100-300mm F4.5-5.6 Xi" }, - { 26211, "Minolta AF 100-300mm F4.5-5.6 xi" }, - { 26240, "Minolta AF 35-80mm F4-5.6 Power" }, - { 26241, "Minolta AF 35-80mm F4-5.6 Power Zoom" }, - { 26281, "Minolta AF 80-200mm F2.8 G" }, - { 26291, "Minolta AF 85mm F1.4 New" }, - { 26311, "Minolta/Sony AF 100-300mm F4.5-5.6 APO" }, - { 26321, "Minolta AF 24-50mm F4 New" }, - { 26381, "Minolta AF 50mm F2.8 Macro New" }, - { 26391, "Minolta AF 100mm F2.8 Macro" }, - { 26411, "Minolta/Sony AF 20mm F2.8 New" }, - { 26421, "Minolta AF 24mm F2.8 New" }, - { 26441, "Minolta AF 100-400mm F4.5-6.7 APO" }, - { 26621, "Minolta AF 50mm F1.4 New" }, - { 26671, "Minolta AF 35mm F2 New" }, - { 26681, "Minolta AF 28mm F2 New" }, - { 26721, "Minolta AF 24-105mm F3.5-4.5 (D)" }, - { 45671, "Tokina 70-210mm F4-5.6" }, - { 45741, "Minolta AF200mm F2.8G x2 | " - "Tokina 300mm F2.8 x2 | " - "Tokina RF 500mm F8.0 x2 | " - "Tamron SP AF 90mm F2.5"}, - { 45751, "1.4x Teleconverter " }, - { 45851, "Tamron SP AF 300mm F2.8 LD IF" }, - { 65535, "T-Mount | " - "Arax MC 35mm F2.8 Tilt+Shift | " - "Arax MC 80mm F2.8 Tilt+Shift | " - "Zenitar MF 16mm F2.8 Fisheye M42 | " - "Samyang 500mm Mirror F8.0 | " - "Pentacon Auto 135mm F2.8 | " - "Pentacon Auto 29mm F2.8 | " - "Helios 44-2 58mm F2.0 | " - "No Lens" } - }; - - std::ostream& printMinoltaSonyLensID(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(minoltaSonyLensID)(os, value, metadata); - } - - // ---------------------------------------------------------------------------------------------------- - - //! Lookup table to translate Minolta A100 and all other Sony Alpha camera color mode values to readable labels - extern const TagDetails minoltaSonyColorMode[] = { - { 0, N_("Standard") }, - { 1, N_("Vivid Color") }, - { 2, N_("Portrait") }, - { 3, N_("Landscape") }, - { 4, N_("Sunset") }, - { 5, N_("Night View/Portrait") }, - { 6, N_("Black & White") }, - { 7, N_("AdobeRGB") }, - { 12, N_("Neutral") }, - { 100, N_("Neutral") }, - { 101, N_("Clear") }, - { 102, N_("Deep") }, - { 103, N_("Light") }, - { 104, N_("Night View") }, - { 105, N_("Autumn Leaves") } - }; - - std::ostream& printMinoltaSonyColorMode(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(minoltaSonyColorMode)(os, value, metadata); - } - - // ---------------------------------------------------------------------------------------------------- - - //! Lookup table to translate Minolta/Sony bool function values to readable labels - extern const TagDetails minoltaSonyBoolFunction[] = { - { 0, N_("Off") }, - { 1, N_("On") } - }; - - std::ostream& printMinoltaSonyBoolValue(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(minoltaSonyBoolFunction)(os, value, metadata); - } - - // ---------------------------------------------------------------------------------------------------- - - //! Lookup table to translate Minolta/Sony bool inverse function values to readable labels - extern const TagDetails minoltaSonyBoolInverseFunction[] = { - { 0, N_("On") }, - { 1, N_("Off") } - }; - - std::ostream& printMinoltaSonyBoolInverseValue(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(minoltaSonyBoolInverseFunction)(os, value, metadata); - } - - // ---------------------------------------------------------------------------------------------------- - - //! Lookup table to translate Sony camera settings focus mode values to readable labels - extern const TagDetails minoltaSonyAFAreaMode[] = { - { 0, N_("Wide") }, - { 1, N_("Local") }, - { 2, N_("Spot") } - }; - - std::ostream& printMinoltaSonyAFAreaMode(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(minoltaSonyAFAreaMode)(os, value, metadata); - } - - // ---------------------------------------------------------------------------------------------------- - - //! Lookup table to translate Sony camera settings Local AF Area Point values to readable labels - extern const TagDetails minoltaSonyLocalAFAreaPoint[] = { - { 1, N_("Center") }, - { 2, N_("Top") }, - { 3, N_("Top-Right") }, - { 4, N_("Right") }, - { 5, N_("Bottom-Right") }, - { 6, N_("Bottom") }, - { 7, N_("Bottom-Left") }, - { 8, N_("Left") }, - { 9, N_("Top-Left") }, - { 10, N_("Far-Right") }, - { 11, N_("Far-Left") } - }; - - std::ostream& printMinoltaSonyLocalAFAreaPoint(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(minoltaSonyLocalAFAreaPoint)(os, value, metadata); - } - - // ---------------------------------------------------------------------------------------------------- - - //! Lookup table to translate Sony camera settings dynamic range optimizer mode values to readable labels - extern const TagDetails minoltaSonyDynamicRangeOptimizerMode[] = { - { 0, N_("Off") }, - { 1, N_("Standard") }, - { 2, N_("Advanced Auto") }, - { 3, N_("Advanced Level") }, - { 4097, N_("Auto") } - }; - - std::ostream& printMinoltaSonyDynamicRangeOptimizerMode(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(minoltaSonyDynamicRangeOptimizerMode)(os, value, metadata); - } - - // ---------------------------------------------------------------------------------------------------- - - //! Lookup table to translate Sony camera settings priority setup shutter release values to readable labels - extern const TagDetails minoltaSonyPrioritySetupShutterRelease[] = { - { 0, N_("AF") }, - { 1, N_("Release") } - }; - - std::ostream& printMinoltaSonyPrioritySetupShutterRelease(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(minoltaSonyPrioritySetupShutterRelease)(os, value, metadata); - } - - // ---------------------------------------------------------------------------------------------------- - - //! Lookup table to translate Sony camera settings quality values to readable labels - extern const TagDetails minoltaSonyQualityCs[] = { - { 0, N_("RAW ") }, - { 2, N_("CRAW ") }, - { 16, N_("Extra Fine") }, - { 32, N_("Fine") }, - { 34, N_("RAW+JPEG") }, - { 35, N_("CRAW+JPEG") }, - { 48, N_("Standard") } - }; - - std::ostream& printMinoltaSonyQualityCs(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(minoltaSonyQualityCs)(os, value, metadata); - } - - // ---------------------------------------------------------------------------------------------------- - - //! Lookup table to translate Sony camera settings rotation values to readable labels - extern const TagDetails minoltaSonyRotation[] = { - { 0, N_("Horizontal (normal)") }, - { 1, N_("Rotate 90 CW") }, - { 2, N_("Rotate 270 CW") } - }; - - std::ostream& printMinoltaSonyRotation(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(minoltaSonyRotation)(os, value, metadata); - } - - // ---------------------------------------------------------------------------------------------------- - - //! Lookup table to translate Minolta/Sony scene mode values to readable labels - extern const TagDetails minoltaSonySceneMode[] = { - { 0, N_("Standard") }, - { 1, N_("Portrait") }, - { 2, N_("Text") }, - { 3, N_("Night Scene") }, - { 4, N_("Sunset") }, - { 5, N_("Sports") }, - { 6, N_("Landscape") }, - { 7, N_("Night Portrait") }, - { 8, N_("Macro") }, - { 9, N_("Super Macro") }, - { 16, N_("Auto") }, - { 17, N_("Night View/Portrait") } - }; - - std::ostream& printMinoltaSonySceneMode(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(minoltaSonySceneMode)(os, value, metadata); - } - - // ---------------------------------------------------------------------------------------------------- - - //! Lookup table to translate Sony/Minolta image quality values to readable labels - extern const TagDetails minoltaSonyImageQuality[] = { - { 0, N_("Raw") }, - { 1, N_("Super Fine") }, - { 2, N_("Fine") }, - { 3, N_("Standard") }, - { 4, N_("Economy") }, - { 5, N_("Extra Fine") }, - { 6, N_("Raw + JPEG") }, - { 7, N_("Compressed Raw") }, - { 8, N_("Compressed Raw + JPEG") } - }; - - std::ostream& printMinoltaSonyImageQuality(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(minoltaSonyImageQuality)(os, value, metadata); - } - - // ---------------------------------------------------------------------------------------------------- - - //! Lookup table to translate Sony/Minolta teleconverter model values to readable labels - extern const TagDetails minoltaSonyTeleconverterModel[] = { - { 0x00, N_("None") }, - { 0x48, N_("Minolta AF 2x APO (D)") }, - { 0x50, N_("Minolta AF 2x APO II") }, - { 0x88, N_("Minolta AF 1.4x APO (D)") }, - { 0x90, N_("Minolta AF 1.4x APO II") } - }; - - std::ostream& printMinoltaSonyTeleconverterModel(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(minoltaSonyTeleconverterModel)(os, value, metadata); - } - - // ---------------------------------------------------------------------------------------------------- - - //! Lookup table to translate Sony/Minolta Std camera settings white balance values to readable labels - extern const TagDetails minoltaSonyWhiteBalanceStd[] = { - { 0x00, N_("Auto") }, - { 0x01, N_("Color Temperature/Color Filter") }, - { 0x10, N_("Daylight") }, - { 0x20, N_("Cloudy") }, - { 0x30, N_("Shade") }, - { 0x40, N_("Tungsten") }, - { 0x50, N_("Flash") }, - { 0x60, N_("Fluorescent") }, - { 0x70, N_("Custom") } - }; - - std::ostream& printMinoltaSonyWhiteBalanceStd(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(minoltaSonyWhiteBalanceStd)(os, value, metadata); - } - - //! Lookup table to translate Sony/Minolta zone matching values to readable labels - extern const TagDetails minoltaSonyZoneMatching[] = { - { 0, N_("ISO Setting Used") }, - { 1, N_("High Key") }, - { 2, N_("Low Key") } - }; - - std::ostream& printMinoltaSonyZoneMatching(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(minoltaSonyZoneMatching)(os, value, metadata); - } - - std::ostream& printMinoltaSonyFlashExposureComp(std::ostream& os, const Value& value, const ExifData*) - { - if (value.count() != 1 || value.typeId() != signedRational) { - return os << "(" << value << ")"; - } - return os << std::fixed << std::setprecision(2) << value.toFloat(0) << " EV"; - } - -}} // namespace Internal, Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/minoltamn_int.hpp b/platform/win32/msvc/external/exiv2/src/minoltamn_int.hpp deleted file mode 100644 index a73043f31f1..00000000000 --- a/platform/win32/msvc/external/exiv2/src/minoltamn_int.hpp +++ /dev/null @@ -1,162 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file minoltamn_int.hpp - @brief Minolta MakerNote implemented using the following references:
- Minolta Makernote Format Specification by Dalibor Jelinek,
- Minolta Makernote list by Phil Harvey
- Minolta Makernote list from PHP JPEG Metadata Toolkit
- Email communication with caulier dot gilles at gmail dot com
- Some Minolta camera settings have been decoded by Xavier Raynaud from digiKam project and added by Gilles Caulier. - @version $Rev: 2701 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @author Gilles Caulier (cgilles) - caulier dot gilles at gmail dot com - @date 06-May-06, gc: submitted - */ -#ifndef MINOLTAMN_INT_HPP_ -#define MINOLTAMN_INT_HPP_ - -// ***************************************************************************** -// included header files -#include "tags.hpp" -#include "types.hpp" - -// + standard includes -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - namespace Internal { - -// ***************************************************************************** -// class definitions - - //! MakerNote for Minolta cameras - class MinoltaMakerNote { - public: - //! Return read-only list of built-in Minolta tags - static const TagInfo* tagList(); - //! Return read-only list of built-in Minolta Standard Camera Settings tags - static const TagInfo* tagListCsStd(); - //! Return read-only list of built-in Minolta 7D Camera Settings tags - static const TagInfo* tagListCs7D(); - //! Return read-only list of built-in Minolta 5D Camera Settings tags - static const TagInfo* tagListCs5D(); - //! Return read-only list of built-in Sony A100 Camera Settings tags - static const TagInfo* tagListCsA100(); - - //! @name Print functions for Minolta %MakerNote tags - //@{ - //! Print Exposure Speed setting from standard Minolta Camera Settings makernote - static std::ostream& printMinoltaExposureSpeedStd(std::ostream& os, const Value& value, const ExifData*); - //! Print Exposure Time setting from standard Minolta Camera Settings makernote - static std::ostream& printMinoltaExposureTimeStd(std::ostream& os, const Value& value, const ExifData*); - //! Print F Number setting from standard Minolta Camera Settings makernote - static std::ostream& printMinoltaFNumberStd(std::ostream& os, const Value& value, const ExifData*); - //! Print Exposure Compensation setting from standard Minolta Camera Settings makernote - static std::ostream& printMinoltaExposureCompensationStd(std::ostream& os, const Value& value, const ExifData*); - //! Print Focal Length setting from standard Minolta Camera Settings makernote - static std::ostream& printMinoltaFocalLengthStd(std::ostream& os, const Value& value, const ExifData*); - //! Print Minolta Date from standard Minolta Camera Settings makernote - static std::ostream& printMinoltaDateStd(std::ostream& os, const Value& value, const ExifData*); - //! Print Minolta Time from standard Minolta Camera Settings makernote - static std::ostream& printMinoltaTimeStd(std::ostream& os, const Value& value, const ExifData*); - //! Print Flash Exposure Compensation setting from standard Minolta Camera Settings makernote - static std::ostream& printMinoltaFlashExposureCompStd(std::ostream& os, const Value& value, const ExifData*); - //! Print White Balance setting from standard Minolta Camera Settings makernote - static std::ostream& printMinoltaWhiteBalanceStd(std::ostream& os, const Value& value, const ExifData*); - //! Print Brightness setting from standard Minolta Camera Settings makernote - static std::ostream& printMinoltaBrightnessStd(std::ostream& os, const Value& value, const ExifData*); - - //! Print Exposure Manual Bias setting from 5D Minolta Camera Settings makernote - static std::ostream& printMinoltaExposureManualBias5D(std::ostream& os, const Value& value, const ExifData*); - //! Print Exposure Compensation setting from 5D Minolta Camera Settings makernote - static std::ostream& printMinoltaExposureCompensation5D(std::ostream& os, const Value& value, const ExifData*); - //@} - - private: - //! Tag information - static const TagInfo tagInfo_[]; - static const TagInfo tagInfoCsA100_[]; - static const TagInfo tagInfoCs5D_[]; - static const TagInfo tagInfoCs7D_[]; - static const TagInfo tagInfoCsStd_[]; - - }; // class MinoltaMakerNote - - // -- Minolta and Sony MakerNote Common Values --------------------------------------- - - //! Print Minolta/Sony Lens id values to readable labels. - std::ostream& printMinoltaSonyLensID(std::ostream&, const Value&, const ExifData*); - - //! Print Minolta/Sony Color Mode values to readable labels. - std::ostream& printMinoltaSonyColorMode(std::ostream&, const Value&, const ExifData*); - - //! Print Minolta/Sony bool function values to readable labels. - std::ostream& printMinoltaSonyBoolValue(std::ostream&, const Value&, const ExifData*); - - //! Print Minolta/Sony bool inverse function values to readable labels. - std::ostream& printMinoltaSonyBoolInverseValue(std::ostream&, const Value&, const ExifData*); - - //! Print Minolta/Sony AF Area Mode values to readable labels. - std::ostream& printMinoltaSonyAFAreaMode(std::ostream&, const Value&, const ExifData*); - - //! Print Minolta/Sony Local AF Area Point values to readable labels. - std::ostream& printMinoltaSonyLocalAFAreaPoint(std::ostream&, const Value&, const ExifData*); - - //! Print Minolta/Sony dynamic range optimizer mode values to readable labels. - std::ostream& printMinoltaSonyDynamicRangeOptimizerMode(std::ostream&, const Value&, const ExifData*); - - //! Print Minolta/Sony priority setup shutter release values to readable labels. - std::ostream& printMinoltaSonyPrioritySetupShutterRelease(std::ostream&, const Value&, const ExifData*); - - //! Print Minolta/Sony Quality values to readable labels. - std::ostream& printMinoltaSonyQualityCs(std::ostream&, const Value&, const ExifData*); - - //! Print Minolta/Sony Rotation values to readable labels. - std::ostream& printMinoltaSonyRotation(std::ostream&, const Value&, const ExifData*); - - //! Print Minolta/Sony Scene Mode values to readable labels. - std::ostream& printMinoltaSonySceneMode(std::ostream&, const Value&, const ExifData*); - - //! Print Minolta/Sony Image Quality values to readable labels. - std::ostream& printMinoltaSonyImageQuality(std::ostream&, const Value&, const ExifData*); - - //! Print Minolta/Sony Teleconverter Model values to readable labels. - std::ostream& printMinoltaSonyTeleconverterModel(std::ostream&, const Value&, const ExifData*); - - //! Print Minolta/Sony White Balance Std values to readable labels. - std::ostream& printMinoltaSonyWhiteBalanceStd(std::ostream&, const Value&, const ExifData*); - - //! Print Minolta/Sony ZoneMatching values to readable labels. - std::ostream& printMinoltaSonyZoneMatching(std::ostream&, const Value&, const ExifData*); - - //! Print Minolta/Sony FlashExposureComp values to readable labels. - std::ostream& printMinoltaSonyFlashExposureComp(std::ostream&, const Value&, const ExifData*); - - // TODO: Added shared methods here. - -}} // namespace Internal, Exiv2 - -#endif // #ifndef MINOLTAMN_INT_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/mrwimage.cpp b/platform/win32/msvc/external/exiv2/src/mrwimage.cpp deleted file mode 100644 index 9b631858961..00000000000 --- a/platform/win32/msvc/external/exiv2/src/mrwimage.cpp +++ /dev/null @@ -1,188 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: mrwimage.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - History: 13-May-06, ahu: created - Credits: See header file - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: mrwimage.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#include "mrwimage.hpp" -#include "tiffimage.hpp" -#include "image.hpp" -#include "basicio.hpp" -#include "error.hpp" -#include "futils.hpp" - -// + standard includes -#include -#include -#include -#include - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - MrwImage::MrwImage(BasicIo::AutoPtr io, bool /*create*/) - : Image(ImageType::mrw, mdExif | mdIptc | mdXmp, io) - { - } // MrwImage::MrwImage - - std::string MrwImage::mimeType() const - { - return "image/x-minolta-mrw"; - } - - int MrwImage::pixelWidth() const - { - ExifData::const_iterator imageWidth = exifData_.findKey(Exiv2::ExifKey("Exif.Image.ImageWidth")); - if (imageWidth != exifData_.end() && imageWidth->count() > 0) { - return imageWidth->toLong(); - } - return 0; - } - - int MrwImage::pixelHeight() const - { - ExifData::const_iterator imageHeight = exifData_.findKey(Exiv2::ExifKey("Exif.Image.ImageLength")); - if (imageHeight != exifData_.end() && imageHeight->count() > 0) { - return imageHeight->toLong(); - } - return 0; - } - - void MrwImage::setExifData(const ExifData& /*exifData*/) - { - // Todo: implement me! - throw(Error(32, "Exif metadata", "MRW")); - } - - void MrwImage::setIptcData(const IptcData& /*iptcData*/) - { - // Todo: implement me! - throw(Error(32, "IPTC metadata", "MRW")); - } - - void MrwImage::setComment(const std::string& /*comment*/) - { - // not supported - throw(Error(32, "Image comment", "MRW")); - } - - void MrwImage::readMetadata() - { -#ifdef DEBUG - std::cerr << "Reading MRW file " << io_->path() << "\n"; -#endif - if (io_->open() != 0) { - throw Error(9, io_->path(), strError()); - } - IoCloser closer(*io_); - // Ensure that this is the correct image type - if (!isMrwType(*io_, false)) { - if (io_->error() || io_->eof()) throw Error(14); - throw Error(3, "MRW"); - } - clearMetadata(); - - // Find the TTW block and read it into a buffer - uint32_t const len = 8; - byte tmp[len]; - io_->read(tmp, len); - uint32_t pos = len; - uint32_t const end = getULong(tmp + 4, bigEndian); - - pos += len; - if (pos > end) throw Error(14); - io_->read(tmp, len); - if (io_->error() || io_->eof()) throw Error(14); - - while (memcmp(tmp + 1, "TTW", 3) != 0) { - uint32_t const siz = getULong(tmp + 4, bigEndian); - pos += siz; - if (pos > end) throw Error(14); - io_->seek(siz, BasicIo::cur); - if (io_->error() || io_->eof()) throw Error(14); - - pos += len; - if (pos > end) throw Error(14); - io_->read(tmp, len); - if (io_->error() || io_->eof()) throw Error(14); - } - - DataBuf buf(getULong(tmp + 4, bigEndian)); - io_->read(buf.pData_, buf.size_); - if (io_->error() || io_->eof()) throw Error(14); - - ByteOrder bo = TiffParser::decode(exifData_, - iptcData_, - xmpData_, - buf.pData_, - buf.size_); - setByteOrder(bo); - } // MrwImage::readMetadata - - void MrwImage::writeMetadata() - { - // Todo: implement me! - throw(Error(31, "MRW")); - } // MrwImage::writeMetadata - - // ************************************************************************* - // free functions - Image::AutoPtr newMrwInstance(BasicIo::AutoPtr io, bool create) - { - Image::AutoPtr image(new MrwImage(io, create)); - if (!image->good()) { - image.reset(); - } - return image; - } - - bool isMrwType(BasicIo& iIo, bool advance) - { - const int32_t len = 4; - byte buf[len]; - iIo.read(buf, len); - if (iIo.error() || iIo.eof()) { - return false; - } - int rc = memcmp(buf, "\0MRM", 4); - if (!advance || rc != 0) { - iIo.seek(-len, BasicIo::cur); - } - return rc == 0; - } - -} // namespace Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/mrwimage.hpp b/platform/win32/msvc/external/exiv2/src/mrwimage.hpp deleted file mode 100644 index 16824647177..00000000000 --- a/platform/win32/msvc/external/exiv2/src/mrwimage.hpp +++ /dev/null @@ -1,140 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file mrwimage.hpp - @brief Minolta RAW image, implemented using the following references: - Minolta Raw file format by Dalibor Jelinek - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 13-May-06, ahu: created - */ -#ifndef MRWIMAGE_HPP_ -#define MRWIMAGE_HPP_ - -// ***************************************************************************** -// included header files -#include "image.hpp" -#include "basicio.hpp" -#include "types.hpp" - -// + standard includes -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class definitions - - // Add MRW to the supported image formats - namespace ImageType { - const int mrw = 5; //!< MRW image type (see class MrwImage) - } - - /*! - @brief Class to access raw Minolta MRW images. Exif metadata is supported - directly, IPTC is read from the Exif data, if present. - */ - class EXIV2API MrwImage : public Image { - public: - //! @name Creators - //@{ - /*! - @brief Constructor that can either open an existing MRW image or create - a new image from scratch. If a new image is to be created, any - existing data is overwritten. Since the constructor can not return - a result, callers should check the good() method after object - construction to determine success or failure. - @param io An auto-pointer that owns a BasicIo instance used for - reading and writing image metadata. \b Important: The constructor - takes ownership of the passed in BasicIo instance through the - auto-pointer. Callers should not continue to use the BasicIo - instance after it is passed to this method. Use the Image::io() - method to get a temporary reference. - @param create Specifies if an existing image should be read (false) - or if a new file should be created (true). - */ - MrwImage(BasicIo::AutoPtr io, bool create); - //@} - - //! @name Manipulators - //@{ - void readMetadata(); - /*! - @brief Todo: Write metadata back to the image. This method is not - yet implemented. Calling it will throw an Error(31). - */ - void writeMetadata(); - /*! - @brief Todo: Not supported yet, requires writeMetadata(). Calling - this function will throw an Error(32). - */ - void setExifData(const ExifData& exifData); - /*! - @brief Todo: Not supported yet, requires writeMetadata(). Calling - this function will throw an Error(32). - */ - void setIptcData(const IptcData& iptcData); - /*! - @brief Not supported. MRW format does not contain a comment. - Calling this function will throw an Error(32). - */ - void setComment(const std::string& comment); - //@} - - //! @name Accessors - //@{ - std::string mimeType() const; - int pixelWidth() const; - int pixelHeight() const; - //@} - - private: - //! @name NOT Implemented - //@{ - //! Copy constructor - MrwImage(const MrwImage& rhs); - //! Assignment operator - MrwImage& operator=(const MrwImage& rhs); - //@} - - }; // class MrwImage - -// ***************************************************************************** -// template, inline and free functions - - // These could be static private functions on Image subclasses but then - // ImageFactory needs to be made a friend. - /*! - @brief Create a new MrwImage instance and return an auto-pointer to it. - Caller owns the returned object and the auto-pointer ensures that - it will be deleted. - */ - EXIV2API Image::AutoPtr newMrwInstance(BasicIo::AutoPtr io, bool create); - - //! Check if the file iIo is a MRW image. - EXIV2API bool isMrwType(BasicIo& iIo, bool advance); - -} // namespace Exiv2 - -#endif // #ifndef MRWIMAGE_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/mrwthumb.cpp b/platform/win32/msvc/external/exiv2/src/mrwthumb.cpp deleted file mode 100644 index 25d7416ffcf..00000000000 --- a/platform/win32/msvc/external/exiv2/src/mrwthumb.cpp +++ /dev/null @@ -1,49 +0,0 @@ -// ***************************************************************** -*- C++ -*- -// mrwthumb.cpp, $Rev: 1532 $ -// Sample program to extract a Minolta thumbnail from the makernote - -#include "image.hpp" -#include "exif.hpp" -#include "error.hpp" -#include - -int main(int argc, char* const argv[]) -try { - if (argc != 2) { - std::cout << "Usage: " << argv[0] << " file\n"; - return 1; - } - - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(argv[1]); - assert(image.get() != 0); - image->readMetadata(); - - Exiv2::ExifData &exifData = image->exifData(); - if (exifData.empty()) { - std::string error(argv[1]); - error += ": No Exif data found in the file"; - throw Exiv2::Error(1, error); - } - - Exiv2::ExifKey key("Exif.Minolta.ThumbnailOffset"); - Exiv2::ExifData::const_iterator format = exifData.findKey(key); - - if (format != exifData.end()) { - Exiv2::DataBuf buf = format->dataArea(); - - // The first byte of the buffer needs to be patched - buf.pData_[0] = 0xff; - - Exiv2::FileIo file("img_thumb.jpg"); - - file.open("wb"); - file.write(buf.pData_, buf.size_); - file.close(); - } - - return 0; -} -catch (Exiv2::AnyError& e) { - std::cout << "Caught Exiv2 exception '" << e << "'\n"; - return -1; -} diff --git a/platform/win32/msvc/external/exiv2/src/nikonmn.cpp b/platform/win32/msvc/external/exiv2/src/nikonmn.cpp deleted file mode 100644 index e0a5be7d2f7..00000000000 --- a/platform/win32/msvc/external/exiv2/src/nikonmn.cpp +++ /dev/null @@ -1,2562 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * Lens database for the conversion of Nikon lens data to readable lens names - * Copyright (C) 2005-2008 Robert Rottmerhusen - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: nikonmn.cpp - Version: $Rev: 2715 $ - Author(s): Andreas Huggel (ahu) - Gilles Caulier (gc) - Jens Mueller (jm) - History: 17-May-04, ahu: created - 25-May-04, ahu: combined all Nikon formats in one component - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: nikonmn.cpp 2715 2012-04-22 05:29:10Z ahuggel $") - -// ***************************************************************************** -// included header files -#include "types.hpp" -#include "nikonmn_int.hpp" -#include "value.hpp" -#include "image.hpp" -#include "tags_int.hpp" -#include "error.hpp" -#include "i18n.h" // NLS support. - -// + standard includes -#include -#include -#include -#include -#include -#include //for log, pow, abs - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - namespace Internal { - - //! OffOn, multiple tags - extern const TagDetails nikonOffOn[] = { - { 0, N_("Off") }, - { 1, N_("On") } - }; - - //! Off, Low, Normal, High, multiple tags - extern const TagDetails nikonOlnh[] = { - { 0, N_("Off") }, - { 1, N_("Low") }, - { 3, N_("Normal") }, - { 5, N_("High") } - }; - - //! Off, Low, Normal, High, multiple tags - extern const TagDetails nikonActiveDLighning[] = { - { 0, N_("Off") }, - { 1, N_("Low") }, - { 3, N_("Normal") }, - { 5, N_("High") }, - { 7, N_("Extra High") }, - { 65535, N_("Auto") } - }; - - //! Focus area for Nikon cameras. - extern const char * const nikonFocusarea[] = { - N_("Single area"), - N_("Dynamic area"), - N_("Dynamic area, closest subject"), - N_("Group dynamic"), - N_("Single area (wide)"), - N_("Dynamic area (wide)") - }; - - // Roger Larsson: My guess is that focuspoints will follow autofocus sensor - // module. Note that relative size and position will vary depending on if - // "wide" or not - //! Focus points for Nikon cameras, used for Nikon 1 and Nikon 3 makernotes. - extern const char * const nikonFocuspoints[] = { - N_("Center"), - N_("Top"), - N_("Bottom"), - N_("Left"), - N_("Right"), - N_("Upper-left"), - N_("Upper-right"), - N_("Lower-left"), - N_("Lower-right"), - N_("Left-most"), - N_("Right-most") - }; - - //! FlashComp, tag 0x0012 - extern const TagDetails nikonFlashComp[] = { - // From the PHP JPEG Metadata Toolkit - { 0x06, "+1.0 EV" }, - { 0x04, "+0.7 EV" }, - { 0x03, "+0.5 EV" }, - { 0x02, "+0.3 EV" }, - { 0x00, "0.0 EV" }, - { 0xfe, "-0.3 EV" }, - { 0xfd, "-0.5 EV" }, - { 0xfc, "-0.7 EV" }, - { 0xfa, "-1.0 EV" }, - { 0xf8, "-1.3 EV" }, - { 0xf7, "-1.5 EV" }, - { 0xf6, "-1.7 EV" }, - { 0xf4, "-2.0 EV" }, - { 0xf2, "-2.3 EV" }, - { 0xf1, "-2.5 EV" }, - { 0xf0, "-2.7 EV" }, - { 0xee, "-3.0 EV" } - }; - - //! ColorSpace, tag 0x001e - extern const TagDetails nikonColorSpace[] = { - { 1, N_("sRGB") }, - { 2, N_("Adobe RGB") } - }; - - //! FlashMode, tag 0x0087 - extern const TagDetails nikonFlashMode[] = { - { 0, N_("Did not fire") }, - { 1, N_("Fire, manual") }, - { 7, N_("Fire, external") }, - { 8, N_("Fire, commander mode") }, - { 9, N_("Fire, TTL mode") } - }; - - //! ShootingMode, tag 0x0089 - extern const TagDetailsBitmask nikonShootingMode[] = { - { 0x0001, N_("Continuous") }, - { 0x0002, N_("Delay") }, - { 0x0004, N_("PC control") }, - { 0x0010, N_("Exposure bracketing") }, - { 0x0020, N_("Auto ISO") }, - { 0x0040, N_("White balance bracketing") }, - { 0x0080, N_("IR control") } - }; - - //! ShootingMode D70, tag 0x0089 - extern const TagDetailsBitmask nikonShootingModeD70[] = { - { 0x0001, N_("Continuous") }, - { 0x0002, N_("Delay") }, - { 0x0004, N_("PC control") }, - { 0x0010, N_("Exposure bracketing") }, - { 0x0020, N_("Unused LE-NR slowdown") }, - { 0x0040, N_("White balance bracketing") }, - { 0x0080, N_("IR control") } - }; - - //! AutoBracketRelease, tag 0x008a - extern const TagDetails nikonAutoBracketRelease[] = { - { 0, N_("None") }, - { 1, N_("Auto release") }, - { 2, N_("Manual release") } - }; - - //! NEFCompression, tag 0x0093 - extern const TagDetails nikonNefCompression[] = { - { 1, N_("Lossy (type 1)") }, - { 2, N_("Uncompressed") }, - { 3, N_("Lossless") }, - { 4, N_("Lossy (type 2)") } - }; - - //! RetouchHistory, tag 0x009e - extern const TagDetails nikonRetouchHistory[] = { - { 0, N_("None") }, - { 3, N_("B & W") }, - { 4, N_("Sepia") }, - { 5, N_("Trim") }, - { 6, N_("Small picture") }, - { 7, N_("D-Lighting") }, - { 8, N_("Red eye") }, - { 9, N_("Cyanotype") }, - { 10, N_("Sky light") }, - { 11, N_("Warm tone") }, - { 12, N_("Color custom") }, - { 13, N_("Image overlay") } - }; - - //! HighISONoiseReduction, tag 0x00b1 - extern const TagDetails nikonHighISONoiseReduction[] = { - { 0, N_("Off") }, - { 1, N_("Minimal") }, - { 2, N_("Low") }, - { 4, N_("Normal") }, - { 6, N_("High") } - }; - - // Nikon1 MakerNote Tag Info - const TagInfo Nikon1MakerNote::tagInfo_[] = { - TagInfo(0x0001, "Version", N_("Version"), - N_("Nikon Makernote version"), - nikon1Id, makerTags, undefined, -1, printValue), - TagInfo(0x0002, "ISOSpeed", N_("ISO Speed"), - N_("ISO speed setting"), - nikon1Id, makerTags, unsignedShort, -1, print0x0002), - TagInfo(0x0003, "ColorMode", N_("Color Mode"), - N_("Color mode"), - nikon1Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0004, "Quality", N_("Quality"), - N_("Image quality setting"), - nikon1Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0005, "WhiteBalance", N_("White Balance"), - N_("White balance"), - nikon1Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0006, "Sharpening", N_("Sharpening"), - N_("Image sharpening setting"), - nikon1Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0007, "Focus", N_("Focus"), - N_("Focus mode"), - nikon1Id, makerTags, asciiString, -1, print0x0007), - TagInfo(0x0008, "FlashSetting", N_("Flash Setting"), - N_("Flash setting"), - nikon1Id, makerTags, asciiString, -1, printValue), - TagInfo(0x000a, "0x000a", "0x000a", - N_("Unknown"), - nikon1Id, makerTags, unsignedRational, -1, printValue), - TagInfo(0x000f, "ISOSelection", N_("ISO Selection"), - N_("ISO selection"), - nikon1Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0010, "DataDump", N_("Data Dump"), - N_("Data dump"), - nikon1Id, makerTags, undefined, -1, printValue), - TagInfo(0x0080, "ImageAdjustment", N_("Image Adjustment"), - N_("Image adjustment setting"), - nikon1Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0082, "AuxiliaryLens", N_("Auxiliary Lens"), - N_("Auxiliary lens (adapter)"), - nikon1Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0085, "FocusDistance", N_("Focus Distance"), - N_("Manual focus distance"), - nikon1Id, makerTags, unsignedRational, -1, print0x0085), - TagInfo(0x0086, "DigitalZoom", N_("Digital Zoom"), - N_("Digital zoom setting"), - nikon1Id, makerTags, unsignedRational, -1, print0x0086), - TagInfo(0x0088, "AFFocusPos", N_("AF Focus Position"), - N_("AF focus position information"), - nikon1Id, makerTags, undefined, -1, print0x0088), - // End of list marker - TagInfo(0xffff, "(UnknownNikon1MnTag)", "(UnknownNikon1MnTag)", - N_("Unknown Nikon1MakerNote tag"), - nikon1Id, makerTags, asciiString, -1, printValue) - }; - - const TagInfo* Nikon1MakerNote::tagList() - { - return tagInfo_; - } - - std::ostream& Nikon1MakerNote::print0x0002(std::ostream& os, - const Value& value, - const ExifData*) - { - if (value.count() > 1) { - os << value.toLong(1); - } - else { - os << "(" << value << ")"; - } - return os; - } - - std::ostream& Nikon1MakerNote::print0x0007(std::ostream& os, - const Value& value, - const ExifData*) - { - std::string focus = value.toString(); - if (focus == "AF-C ") os << _("Continuous autofocus"); - else if (focus == "AF-S ") os << _("Single autofocus"); - else if (focus == "AF-A ") os << _("Automatic"); - else os << "(" << value << ")"; - return os; - } - - std::ostream& Nikon1MakerNote::print0x0085(std::ostream& os, - const Value& value, - const ExifData*) - { - Rational distance = value.toRational(); - if (distance.first == 0) { - os << _("Unknown"); - } - else if (distance.second != 0) { - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(2) - << (float)distance.first / distance.second - << " m"; - os.copyfmt(oss); - } - else { - os << "(" << value << ")"; - } - return os; - } - - std::ostream& Nikon1MakerNote::print0x0086(std::ostream& os, - const Value& value, - const ExifData*) - { - Rational zoom = value.toRational(); - if (zoom.first == 0) { - os << _("Not used"); - } - else if (zoom.second != 0) { - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(1) - << (float)zoom.first / zoom.second - << "x"; - os.copyfmt(oss); - } - else { - os << "(" << value << ")"; - } - return os; - } - - std::ostream& Nikon1MakerNote::print0x0088(std::ostream& os, - const Value& value, - const ExifData*) - { - if (value.count() >= 1) { - unsigned long focusArea = value.toLong(0); - os << nikonFocusarea[focusArea] ; - } - if (value.count() >= 2) { - os << "; "; - unsigned long focusPoint = value.toLong(1); - - switch (focusPoint) { - // Could use array nikonFokuspoints - case 0: - case 1: - case 2: - case 3: - case 4: - os << nikonFocuspoints[focusPoint]; - break; - default: - os << value; - if (focusPoint < sizeof(nikonFocuspoints)/sizeof(nikonFocuspoints[0])) - os << " " << _("guess") << " " << nikonFocuspoints[focusPoint]; - break; - } - } - if (value.count() >= 3) { - unsigned long focusPointsUsed1 = value.toLong(2); - unsigned long focusPointsUsed2 = value.toLong(3); - - if (focusPointsUsed1 != 0 && focusPointsUsed2 != 0) - { - os << "; ["; - - if (focusPointsUsed1 & 1) - os << nikonFocuspoints[0] << " "; - if (focusPointsUsed1 & 2) - os << nikonFocuspoints[1] << " "; - if (focusPointsUsed1 & 4) - os << nikonFocuspoints[2] << " "; - if (focusPointsUsed1 & 8) - os << nikonFocuspoints[3] << " "; - if (focusPointsUsed1 & 16) - os << nikonFocuspoints[4] << " "; - if (focusPointsUsed1 & 32) - os << nikonFocuspoints[5] << " "; - if (focusPointsUsed1 & 64) - os << nikonFocuspoints[6] << " "; - if (focusPointsUsed1 & 128) - os << nikonFocuspoints[7] << " "; - - if (focusPointsUsed2 & 1) - os << nikonFocuspoints[8] << " "; - if (focusPointsUsed2 & 2) - os << nikonFocuspoints[9] << " "; - if (focusPointsUsed2 & 4) - os << nikonFocuspoints[10] << " "; - - os << "]"; - } - } - else { - os << "(" << value << ")"; - } - return os; - } - - //! Quality, tag 0x0003 - extern const TagDetails nikon2Quality[] = { - { 1, N_("VGA Basic") }, - { 2, N_("VGA Normal") }, - { 3, N_("VGA Fine") }, - { 4, N_("SXGA Basic") }, - { 5, N_("SXGA Normal") }, - { 6, N_("SXGA Fine") } - }; - - //! ColorMode, tag 0x0004 - extern const TagDetails nikon2ColorMode[] = { - { 1, N_("Color") }, - { 2, N_("Monochrome") } - }; - - //! ImageAdjustment, tag 0x0005 - extern const TagDetails nikon2ImageAdjustment[] = { - { 0, N_("Normal") }, - { 1, N_("Bright+") }, - { 2, N_("Bright-") }, - { 3, N_("Contrast+") }, - { 4, N_("Contrast-") } - }; - - //! ISOSpeed, tag 0x0006 - extern const TagDetails nikon2IsoSpeed[] = { - { 0, "80" }, - { 2, "160" }, - { 4, "320" }, - { 5, "100" } - }; - - //! WhiteBalance, tag 0x0007 - extern const TagDetails nikon2WhiteBalance[] = { - { 0, N_("Auto") }, - { 1, N_("Preset") }, - { 2, N_("Daylight") }, - { 3, N_("Incandescent") }, - { 4, N_("Fluorescent") }, - { 5, N_("Cloudy") }, - { 6, N_("Speedlight") } - }; - - // Nikon2 MakerNote Tag Info - const TagInfo Nikon2MakerNote::tagInfo_[] = { - TagInfo(0x0002, "0x0002", "0x0002", - N_("Unknown"), - nikon2Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0003, "Quality", N_("Quality"), - N_("Image quality setting"), - nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2Quality)), - TagInfo(0x0004, "ColorMode", N_("Color Mode"), - N_("Color mode"), - nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2ColorMode)), - TagInfo(0x0005, "ImageAdjustment", N_("Image Adjustment"), - N_("Image adjustment setting"), - nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2ImageAdjustment)), - TagInfo(0x0006, "ISOSpeed", N_("ISO Speed"), - N_("ISO speed setting"), - nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2IsoSpeed)), - TagInfo(0x0007, "WhiteBalance", N_("White Balance"), - N_("White balance"), - nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2WhiteBalance)), - TagInfo(0x0008, "Focus", N_("Focus Mode"), - N_("Focus mode"), - nikon2Id, makerTags, unsignedRational, -1, printValue), - TagInfo(0x0009, "0x0009", "0x0009", - N_("Unknown"), - nikon2Id, makerTags, asciiString, -1, printValue), - TagInfo(0x000a, "DigitalZoom", N_("Digital Zoom"), - N_("Digital zoom setting"), - nikon2Id, makerTags, unsignedRational, -1, print0x000a), - TagInfo(0x000b, "AuxiliaryLens", N_("Auxiliary Lens"), - N_("Auxiliary lens (adapter)"), - nikon2Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0f00, "0x0f00", "0x0f00", - N_("Unknown"), - nikon2Id, makerTags, unsignedLong, -1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownNikon2MnTag)", "(UnknownNikon2MnTag)", - N_("Unknown Nikon2MakerNote tag"), - nikon2Id, makerTags, asciiString, -1, printValue) - }; - - const TagInfo* Nikon2MakerNote::tagList() - { - return tagInfo_; - } - - std::ostream& Nikon2MakerNote::print0x000a(std::ostream& os, - const Value& value, - const ExifData*) - { - Rational zoom = value.toRational(); - if (zoom.first == 0) { - os << _("Not used"); - } - else if (zoom.second != 0) { - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(1) - << (float)zoom.first / zoom.second - << "x"; - os.copyfmt(oss); - } - else { - os << "(" << value << ")"; - } - return os; - } - - // Nikon3 MakerNote Tag Info - const TagInfo Nikon3MakerNote::tagInfo_[] = { - TagInfo(0x0001, "Version", N_("Version"), N_("Nikon Makernote version"), nikon3Id, makerTags, undefined, -1, printExifVersion), - TagInfo(0x0002, "ISOSpeed", N_("ISO Speed"), N_("ISO speed setting"), nikon3Id, makerTags, unsignedShort, -1, print0x0002), - TagInfo(0x0003, "ColorMode", N_("Color Mode"), N_("Color mode"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0004, "Quality", N_("Quality"), N_("Image quality setting"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0005, "WhiteBalance", N_("White Balance"), N_("White balance"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0006, "Sharpening", N_("Sharpening"), N_("Image sharpening setting"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0007, "Focus", N_("Focus"), N_("Focus mode"), nikon3Id, makerTags, asciiString, -1, print0x0007), - TagInfo(0x0008, "FlashSetting", N_("Flash Setting"), N_("Flash setting"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0009, "FlashDevice", N_("Flash Device"), N_("Flash device"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x000a, "0x000a", "0x000a", N_("Unknown"), nikon3Id, makerTags, unsignedRational, -1, printValue), - TagInfo(0x000b, "WhiteBalanceBias", N_("White Balance Bias"), N_("White balance bias"), nikon3Id, makerTags, signedShort, -1, printValue), - TagInfo(0x000c, "WB_RBLevels", N_("WB RB Levels"), N_("WB RB levels"), nikon3Id, makerTags, unsignedRational, -1, printValue), - TagInfo(0x000d, "ProgramShift", N_("Program Shift"), N_("Program shift"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)), - TagInfo(0x000e, "ExposureDiff", N_("Exposure Difference"), N_("Exposure difference"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)), - TagInfo(0x000f, "ISOSelection", N_("ISO Selection"), N_("ISO selection"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0010, "DataDump", N_("Data Dump"), N_("Data dump"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0011, "Preview", N_("Pointer to a preview image"), N_("Offset to an IFD containing a preview image"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0012, "FlashComp", N_("Flash Comp"), N_("Flash compensation setting"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)), - TagInfo(0x0013, "ISOSettings", N_("ISO Settings"), N_("ISO setting"), nikon3Id, makerTags, unsignedShort, -1, print0x0002), // use 0x0002 print fct - TagInfo(0x0016, "ImageBoundary", N_("Image Boundary"), N_("Image boundary"), nikon3Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0017, "FlashExposureComp", "Flash Exposure Comp", N_("Flash exposure comp"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)), - TagInfo(0x0018, "FlashBracketComp", N_("Flash Bracket Comp"), N_("Flash bracket compensation applied"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)), // use 0x0012 print fct - TagInfo(0x0019, "ExposureBracketComp", N_("Exposure Bracket Comp"), N_("AE bracket compensation applied"), nikon3Id, makerTags, signedRational, -1, printValue), - TagInfo(0x001a, "ImageProcessing", N_("Image Processing"), N_("Image processing"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x001b, "CropHiSpeed", N_("Crop High Speed"), N_("Crop high speed"), nikon3Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x001c, "ExposureTuning", N_("Exposure Tuning"), N_("Exposure tuning"), nikon3Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x001d, "SerialNumber", N_("Serial Number"), N_("Serial Number"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x001e, "ColorSpace", N_("Color Space"), N_("Color space"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonColorSpace)), - TagInfo(0x001f, "VRInfo", N_("VR Info"), N_("VR info"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0020, "ImageAuthentication", N_("Image Authentication"), N_("Image authentication"), nikon3Id, makerTags, unsignedByte, -1, EXV_PRINT_TAG(nikonOffOn)), - TagInfo(0x0022, "ActiveDLighting", N_("ActiveD-Lighting"), N_("ActiveD-lighting"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonActiveDLighning)), - TagInfo(0x0023, "PictureControl", N_("Picture Control"), N_(" Picture control"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0024, "WorldTime", N_("World Time"), N_("World time"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0025, "ISOInfo", N_("ISO Info"), N_("ISO info"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x002a, "VignetteControl", N_("Vignette Control"), N_("Vignette control"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonOlnh)), - TagInfo(0x0080, "ImageAdjustment", N_("Image Adjustment"), N_("Image adjustment setting"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0081, "ToneComp", N_("Tone Compensation"), N_("Tone compensation"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0082, "AuxiliaryLens", N_("Auxiliary Lens"), N_("Auxiliary lens (adapter)"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0083, "LensType", N_("Lens Type"), N_("Lens type"), nikon3Id, makerTags, unsignedByte, -1, print0x0083), - TagInfo(0x0084, "Lens", N_("Lens"), N_("Lens"), nikon3Id, makerTags, unsignedRational, -1, print0x0084), - TagInfo(0x0085, "FocusDistance", N_("Focus Distance"), N_("Manual focus distance"), nikon3Id, makerTags, unsignedRational, -1, print0x0085), - TagInfo(0x0086, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom setting"), nikon3Id, makerTags, unsignedRational, -1, print0x0086), - TagInfo(0x0087, "FlashMode", N_("Flash Mode"), N_("Mode of flash used"), nikon3Id, makerTags, unsignedByte, -1, EXV_PRINT_TAG(nikonFlashMode)), - TagInfo(0x0088, "AFInfo", N_("AF Info"), N_("AF info"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0089, "ShootingMode", N_("Shooting Mode"), N_("Shooting mode"), nikon3Id, makerTags, unsignedShort, -1, print0x0089), - TagInfo(0x008a, "AutoBracketRelease", N_("Auto Bracket Release"), N_("Auto bracket release"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonAutoBracketRelease)), - TagInfo(0x008b, "LensFStops", N_("Lens FStops"), N_("Lens FStops"), nikon3Id, makerTags, undefined, -1, print0x008b), - TagInfo(0x008c, "ContrastCurve", N_("Contrast Curve"), N_("Contrast curve"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x008d, "ColorHue", N_("Color Hue"), N_("Color hue"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x008f, "SceneMode", N_("Scene Mode"), N_("Scene mode"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0090, "LightSource", N_("Light Source"), N_("Light source"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0091, "ShotInfo", "Shot Info", N_("Shot info"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0092, "HueAdjustment", N_("Hue Adjustment"), N_("Hue adjustment"), nikon3Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0093, "NEFCompression", N_("NEF Compression"), N_("NEF compression"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonNefCompression)), - TagInfo(0x0094, "Saturation", N_("Saturation"), N_("Saturation"), nikon3Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0095, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0096, "LinearizationTable", N_("Linearization Table"), N_("Linearization table"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0097, "ColorBalance", N_("Color Balance"), N_("Color balance"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0098, "LensData", N_("Lens Data"), N_("Lens data settings"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0099, "RawImageCenter", N_("Raw Image Center"), N_("Raw image center"), nikon3Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x009a, "SensorPixelSize", N_("Sensor Pixel Size"), N_("Sensor pixel size"), nikon3Id, makerTags, unsignedRational, -1, print0x009a), - TagInfo(0x009b, "0x009b", "0x009b", N_("Unknown"), nikon3Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x009c, "SceneAssist", N_("Scene Assist"), N_("Scene assist"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x009e, "RetouchHistory", N_("Retouch History"), N_("Retouch history"), nikon3Id, makerTags, unsignedShort, -1, print0x009e), - TagInfo(0x009f, "0x009f", "0x009f", N_("Unknown"), nikon3Id, makerTags, signedShort, -1, printValue), - TagInfo(0x00a0, "SerialNO", N_("Serial NO"), N_("Camera serial number, usually starts with \"NO= \""), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x00a2, "ImageDataSize", N_("Image Data Size"), N_("Image data size"), nikon3Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0x00a3, "0x00a3", "0x00a3", N_("Unknown"), nikon3Id, makerTags, unsignedByte, -1, printValue), - TagInfo(0x00a5, "ImageCount", N_("Image Count"), N_("Image count"), nikon3Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0x00a6, "DeletedImageCount", N_("Deleted Image Count"), N_("Deleted image count"), nikon3Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0x00a7, "ShutterCount", N_("Shutter Count"), N_("Number of shots taken by camera"), nikon3Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0x00a8, "FlashInfo", "Flash Info", N_("Flash info"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x00a9, "ImageOptimization", N_("Image Optimization"), N_("Image optimization"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x00aa, "Saturation", N_("Saturation"), N_("Saturation"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x00ab, "VariProgram", N_("Program Variation"), N_("Program variation"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x00ac, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x00ad, "AFResponse", N_("AF Response"), N_("AF response"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x00b0, "MultiExposure", "Multi Exposure", N_("Multi exposure"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x00b1, "HighISONoiseReduction", N_("High ISO Noise Reduction"), N_("High ISO Noise Reduction"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonHighISONoiseReduction)), - TagInfo(0x00b3, "ToningEffect", "Toning Effect", N_("Toning effect"), nikon3Id, makerTags, asciiString, -1, printValue), - TagInfo(0x00b7, "AFInfo2", "AF Info 2", N_("AF info 2"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x00b8, "FileInfo", "File Info", N_("File info"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x00b9, "AFTune", "AF Tune", N_("AF tune"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), nikon3Id, makerTags, undefined, -1, printValue), - // TODO: Add Capture Data decoding implementation. - TagInfo(0x0e01, "CaptureData", N_("Capture Data"), N_("Capture data"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0e09, "CaptureVersion", N_("Capture Version"), N_("Capture version"), nikon3Id, makerTags, asciiString, -1, printValue), - // TODO: Add Capture Offsets decoding implementation. - TagInfo(0x0e0e, "CaptureOffsets", N_("Capture Offsets"), N_("Capture offsets"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0e10, "ScanIFD", "Scan IFD", N_("Scan IFD"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0e1d, "ICCProfile", "ICC Profile", N_("ICC profile"), nikon3Id, makerTags, undefined, -1, printValue), - TagInfo(0x0e1e, "CaptureOutput", "Capture Output", N_("Capture output"), nikon3Id, makerTags, undefined, -1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownNikon3MnTag)", "(UnknownNikon3MnTag)", N_("Unknown Nikon3MakerNote tag"), nikon3Id, makerTags, asciiString, -1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagList() - { - return tagInfo_; - } - - //! YesNo, used for DaylightSavings, tag index 2 - extern const TagDetails nikonYesNo[] = { - { 0, N_("No") }, - { 1, N_("Yes") } - }; - - //! DateDisplayFormat, tag index 3 - extern const TagDetails nikonDateDisplayFormat[] = { - { 0, N_("Y/M/D") }, - { 1, N_("M/D/Y") }, - { 2, N_("D/M/Y") } - }; - - //! OnOff - extern const TagDetails nikonOnOff[] = { - { 1, N_("On") }, - { 2, N_("Off") } - }; - - // Nikon3 Vibration Reduction Tag Info - const TagInfo Nikon3MakerNote::tagInfoVr_[] = { - TagInfo(0, "Version", N_("Version"), N_("Version"), nikonVrId, makerTags, undefined, 4, printExifVersion), - TagInfo(4, "VibrationReduction", N_("Vibration Reduction"), N_("Vibration reduction"), nikonVrId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOnOff)), - // End of list marker - TagInfo(0xffff, "(UnknownNikonVrTag)", "(UnknownNikonVrTag)", N_("Unknown Nikon Vibration Reduction Tag"), nikonVrId, makerTags, unsignedByte, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListVr() - { - return tagInfoVr_; - } - - //! Adjust - extern const TagDetails nikonAdjust[] = { - { 0, N_("Default Settings") }, - { 1, N_("Quick Adjust") }, - { 2, N_("Full Control") } - }; - - //! FilterEffect - extern const TagDetails nikonFilterEffect[] = { - { 0x80, N_("Off") }, - { 0x81, N_("Yellow") }, - { 0x82, N_("Orange") }, - { 0x83, N_("Red") }, - { 0x84, N_("Green") }, - { 0xff, N_("n/a") } - }; - - //! ToningEffect - extern const TagDetails nikonToningEffect[] = { - { 0x80, N_("B&W") }, - { 0x81, N_("Sepia") }, - { 0x82, N_("Cyanotype") }, - { 0x83, N_("Red") }, - { 0x84, N_("Yellow") }, - { 0x85, N_("Green") }, - { 0x86, N_("Blue-green") }, - { 0x87, N_("Blue") }, - { 0x88, N_("Purple-blue") }, - { 0x89, N_("Red-purple") }, - { 0xff, N_("n/a") } - }; - - // Nikon3 Picture Control Tag Info - const TagInfo Nikon3MakerNote::tagInfoPc_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonPcId, makerTags, undefined, 4, printExifVersion), - TagInfo( 4, "Name", N_("Name"), N_("Name"), nikonPcId, makerTags, asciiString, 20, printValue), - TagInfo(24, "Base", N_("Base"), N_("Base"), nikonPcId, makerTags, asciiString, 20, printValue), - TagInfo(48, "Adjust", N_("Adjust"), N_("Adjust"), nikonPcId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonAdjust)), - TagInfo(49, "QuickAdjust", N_("Quick Adjust"), N_("Quick adjust"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), - TagInfo(50, "Sharpness", N_("Sharpness"), N_("Sharpness"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), - TagInfo(51, "Contrast", N_("Contrast"), N_("Contrast"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), - TagInfo(52, "Brightness", N_("Brightness"), N_("Brightness"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), - TagInfo(53, "Saturation", N_("Saturation"), N_("Saturation"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), - TagInfo(54, "HueAdjustment", N_("Hue Adjustment"), N_("Hue adjustment"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), - TagInfo(55, "FilterEffect", N_("Filter Effect"), N_("Filter effect"), nikonPcId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFilterEffect)), - TagInfo(56, "ToningEffect", N_("Toning Effect"), N_("Toning effect"), nikonPcId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonToningEffect)), - TagInfo(57, "ToningSaturation", N_("Toning Saturation"), N_("Toning saturation"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), - // End of list marker - TagInfo(0xffff, "(UnknownNikonPcTag)", "(UnknownNikonPcTag)", N_("Unknown Nikon Picture Control Tag"), nikonPcId, makerTags, unsignedByte, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListPc() - { - return tagInfoPc_; - } - - //! OnOff - extern const TagDetails aftOnOff[] = { - { 0, N_("Off") }, - { 1, N_("On") }, - { 2, N_("On") } - }; - - // Nikon3 AF Fine Tune - const TagInfo Nikon3MakerNote::tagInfoAFT_[] = { - TagInfo(0, "AFFineTune", N_("AF Fine Tune"), N_("AF fine tune"), nikonAFTId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(aftOnOff)), - TagInfo(1, "AFFineTuneIndex", N_("AF Fine Tune Index"), N_("AF fine tune index"), nikonAFTId, makerTags, unsignedByte, 1, printValue), - TagInfo(2, "AFFineTuneAdj", N_("AF Fine Tune Adjustment"), N_("AF fine tune adjustment"), nikonAFTId, makerTags, signedByte, 1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownNikonAFTTag)", "(UnknownNikonAFTTag)", N_("Unknown Nikon AF Fine Tune Tag"), nikonAFTId, makerTags, unsignedByte, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListAFT() - { - return tagInfoAFT_; - } - - // Nikon3 World Time Tag Info - const TagInfo Nikon3MakerNote::tagInfoWt_[] = { - TagInfo(0, "Timezone", N_("Timezone"), N_("Timezone"), nikonWtId, makerTags, signedShort, 1, printTimeZone), - TagInfo(2, "DaylightSavings", N_("Daylight Savings"), N_("Daylight savings"), nikonWtId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonYesNo)), - TagInfo(3, "DateDisplayFormat", N_("Date Display Format"), N_("Date display format"), nikonWtId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonDateDisplayFormat)), - // End of list marker - TagInfo(0xffff, "(UnknownNikonWtTag)", "(UnknownNikonWtTag)", N_("Unknown Nikon World Time Tag"), nikonWtId, makerTags, unsignedByte, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListWt() - { - return tagInfoWt_; - } - - //! ISOExpansion, tag index 4 and 10 - extern const TagDetails nikonIsoExpansion[] = { - { 0x000, N_("Off") }, - { 0x101, N_("Hi 0.3") }, - { 0x102, N_("Hi 0.5") }, - { 0x103, N_("Hi 0.7") }, - { 0x104, N_("Hi 1.0") }, - { 0x105, N_("Hi 1.3") }, - { 0x106, N_("Hi 1.5") }, - { 0x107, N_("Hi 1.7") }, - { 0x108, N_("Hi 2.0") }, - { 0x201, N_("Lo 0.3") }, - { 0x202, N_("Lo 0.5") }, - { 0x203, N_("Lo 0.7") }, - { 0x204, N_("Lo 1.0") } - }; - - // Nikon3 ISO Info Tag Info - const TagInfo Nikon3MakerNote::tagInfoIi_[] = { - TagInfo( 0, "ISO", N_("ISO"), N_("ISO"), nikonIiId, makerTags, unsignedByte, 1, printIiIso), - TagInfo( 4, "ISOExpansion", N_("ISO Expansion"), N_("ISO expansion"), nikonIiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonIsoExpansion)), - TagInfo( 6, "ISO2", N_("ISO 2"), N_("ISO 2"), nikonIiId, makerTags, unsignedByte, 1, printIiIso), - TagInfo(10, "ISOExpansion2", N_("ISO Expansion 2"), N_("ISO expansion 2"), nikonIiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonIsoExpansion)), - // End of list marker - TagInfo(0xffff, "(UnknownNikonIiTag)", "(UnknownNikonIiTag)", N_("Unknown Nikon Iso Info Tag"), nikonIiId, makerTags, unsignedByte, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListIi() - { - return tagInfoIi_; - } - - //! AfAreaMode - extern const TagDetails nikonAfAreaMode[] = { - { 0, N_("Single Area") }, - { 1, N_("Dynamic Area") }, - { 2, N_("Dynamic Area, Closest Subject") }, - { 3, N_("Group Dynamic") }, - { 4, N_("Single Area (wide)") }, - { 5, N_("Dynamic Area (wide)") } - }; - - //! AfPoint - extern const TagDetails nikonAfPoint[] = { - { 0, N_("Center") }, - { 1, N_("Top") }, - { 2, N_("Bottom") }, - { 3, N_("Mid-left") }, - { 4, N_("Mid-right") }, - { 5, N_("Upper-left") }, - { 6, N_("Upper-right") }, - { 7, N_("Lower-left") }, - { 8, N_("Lower-right") }, - { 9, N_("Far Left") }, - { 10, N_("Far Right") } - }; - - //! AfPointsInFocus - extern const TagDetailsBitmask nikonAfPointsInFocus[] = { - { 0x0001, N_("Center") }, - { 0x0002, N_("Top") }, - { 0x0004, N_("Bottom") }, - { 0x0008, N_("Mid-left") }, - { 0x0010, N_("Mid-right") }, - { 0x0020, N_("Upper-left") }, - { 0x0040, N_("Upper-right") }, - { 0x0080, N_("Lower-left") }, - { 0x0100, N_("Lower-right") }, - { 0x0200, N_("Far Left") }, - { 0x0400, N_("Far Right") } - }; - - // Nikon3 Auto Focus Tag Info - const TagInfo Nikon3MakerNote::tagInfoAf_[] = { - TagInfo( 0, "AFAreaMode", N_("AF Area Mode"), N_("AF area mode"), nikonAfId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonAfAreaMode)), - TagInfo( 1, "AFPoint", N_("AF Point"), N_("AF point"), nikonAfId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonAfPoint)), - TagInfo( 2, "AFPointsInFocus", N_("AF Points In Focus"), N_("AF points in focus"), nikonAfId, makerTags, unsignedShort, 1, printAfPointsInFocus), - // End of list marker - TagInfo(0xffff, "(UnknownNikonAfTag)", "(UnknownNikonAfTag)", N_("Unknown Nikon Auto Focus Tag"), nikonAfId, makerTags, unsignedByte, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListAf() - { - return tagInfoAf_; - } - - //! PhaseDetectAF - extern const TagDetails nikonPhaseDetectAF[] = { - { 0, N_("Off") }, - { 1, N_("On (51-point)") }, - { 2, N_("On (11-point)") } - }; - - // Nikon3 Auto Focus Tag Info - const TagInfo Nikon3MakerNote::tagInfoAf2_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonAf2Id, makerTags, undefined, 4, printExifVersion), - TagInfo( 4, "ContrastDetectAF", N_("Contrast Detect AF"), N_("Contrast detect AF"), nikonAf2Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn)), - TagInfo( 5, "AFAreaMode", N_("AF Area Mode"), N_("AF area mode"), nikonAf2Id, makerTags, unsignedByte, 1, printValue), - TagInfo( 6, "PhaseDetectAF", N_("Phase Detect AF"), N_("Phase detect AF"), nikonAf2Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonPhaseDetectAF)), - TagInfo( 7, "PrimaryAFPoint", N_("Primary AF Point"), N_("Primary AF point"), nikonAf2Id, makerTags, unsignedByte, 1, printValue), - TagInfo( 8, "AFPointsUsed", N_("AF Points Used"), N_("AF points used"), nikonAf2Id, makerTags, unsignedByte, 7, printValue), - TagInfo( 16, "AFImageWidth", N_("AF Image Width"), N_("AF image width"), nikonAf2Id, makerTags, unsignedShort, 1, printValue), - TagInfo( 18, "AFImageHeight", N_("AF Image Height"), N_("AF image height"), nikonAf2Id, makerTags, unsignedShort, 1, printValue), - TagInfo( 20, "AFAreaXPosition", N_("AF Area X Position"), N_("AF area x position"), nikonAf2Id, makerTags, unsignedShort, 1, printValue), - TagInfo( 22, "AFAreaYPosition", N_("AF Area Y Position"), N_("AF area y position"), nikonAf2Id, makerTags, unsignedShort, 1, printValue), - TagInfo( 24, "AFAreaWidth", N_("AF Area Width"), N_("AF area width"), nikonAf2Id, makerTags, unsignedShort, 1, printValue), - TagInfo( 26, "AFAreaHeight", N_("AF Area Height"), N_("AF area height"), nikonAf2Id, makerTags, unsignedShort, 1, printValue), - TagInfo( 28, "ContrastDetectAFInFocus", N_("Contrast Detect AF In Focus"), N_("Contrast detect AF in focus"), nikonAf2Id, makerTags, unsignedShort, 1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownNikonAf2Tag)", "(UnknownNikonAf2Tag)", N_("Unknown Nikon Auto Focus 2 Tag"), nikonAf2Id, makerTags, unsignedByte, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListAf2() - { - return tagInfoAf2_; - } - - // Nikon3 File Info Tag Info - const TagInfo Nikon3MakerNote::tagInfoFi_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonFiId, makerTags, undefined, 4, printExifVersion), - TagInfo( 6, "DirectoryNumber", N_("Directory Number"), N_("Directory number"), nikonFiId, makerTags, unsignedShort, 1, printValue), - TagInfo( 8, "FileNumber", N_("File Number"), N_("File number"), nikonFiId, makerTags, unsignedShort, 1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownNikonFiTag)", "(UnknownNikonFiTag)", N_("Unknown Nikon File Info Tag"), nikonFiId, makerTags, unsignedByte, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListFi() - { - return tagInfoFi_; - } - - //! MultiExposureMode - extern const TagDetails nikonMultiExposureMode[] = { - { 0, N_("Off") }, - { 1, N_("Multiple Exposure") }, - { 2, N_("Image Overlay") } - }; - - // Nikon3 Multi Exposure Tag Info - const TagInfo Nikon3MakerNote::tagInfoMe_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonMeId, makerTags, undefined, 4, printExifVersion), - TagInfo( 4, "MultiExposureMode", N_("Multi Exposure Mode"), N_("Multi exposure mode"), nikonMeId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(nikonMultiExposureMode)), - TagInfo( 8, "MultiExposureShots", N_("Multi Exposure Shots"), N_("Multi exposure shots"), nikonMeId, makerTags, unsignedLong, 1, printValue), - TagInfo( 12, "MultiExposureAutoGain", N_("Multi Exposure Auto Gain"), N_("Multi exposure auto gain"), nikonMeId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(nikonOffOn)), - // End of list marker - TagInfo(0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonMeId, makerTags, unsignedByte, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListMe() - { - return tagInfoMe_; - } - - //! FlashSource - extern const TagDetails nikonFlashSource[] = { - { 0, N_("None") }, - { 1, N_("External") }, - { 2, N_("Internal") } - }; - - //! FlashFirmware - extern const TagDetails nikonFlashFirmware[] = { - { 0x0000, N_("n/a") }, - { 0x0101, N_("1.01 (SB-800 or Metz 58 AF-1)") }, - { 0x0103, N_("1.03 (SB-800)") }, - { 0x0201, N_("2.01 (SB-800)") }, - { 0x0204, N_("2.04 (SB-600)") }, - { 0x0205, N_("2.05 (SB-600)") }, - { 0x0301, N_("3.01 (SU-800 Remote Commander)") }, - { 0x0401, N_("4.01 (SB-400)") }, - { 0x0402, N_("4.02 (SB-400)") }, - { 0x0404, N_("4.04 (SB-400)") }, - { 0x0501, N_("5.01 (SB-900)") }, - { 0x0502, N_("5.02 (SB-900)") } - }; - - //! FlashGNDistance - extern const TagDetails nikonFlashGNDistance[] = { - { 0, N_("None") }, - { 1, N_("0.1 m") }, - { 2, N_("0.2 m") }, - { 3, N_("0.3 m") }, - { 4, N_("0.4 m") }, - { 5, N_("0.5 m") }, - { 6, N_("0.6 m") }, - { 7, N_("0.7 m") }, - { 8, N_("0.8 m") }, - { 9, N_("0.9 m") }, - { 10, N_("1.0 m") }, - { 11, N_("1.1 m") }, - { 12, N_("1.3 m") }, - { 13, N_("1.4 m") }, - { 14, N_("1.6 m") }, - { 15, N_("1.8 m") }, - { 16, N_("2.0 m") }, - { 17, N_("2.2 m") }, - { 18, N_("2.5 m") }, - { 19, N_("2.8 m") }, - { 20, N_("3.2 m") }, - { 21, N_("3.6 m") }, - { 22, N_("4.0 m") }, - { 23, N_("4.5 m") }, - { 24, N_("5.0 m") }, - { 25, N_("5.6 m") }, - { 26, N_("6.3 m") }, - { 27, N_("7.1 m") }, - { 28, N_("8.0 m") }, - { 29, N_("9.0 m") }, - { 30, N_("10.0 m") }, - { 31, N_("11.0 m") }, - { 32, N_("13.0 m") }, - { 33, N_("14.0 m") }, - { 34, N_("16.0 m") }, - { 35, N_("18.0 m") }, - { 36, N_("20.0 m") }, - { 255, N_("n/a") } - }; - - //! FlashControlMode - extern const TagDetails nikonFlashControlMode[] = { - { 0, N_("Off") }, - { 1, N_("iTTL-BL") }, - { 2, N_("iTTL") }, - { 3, N_("Auto Aperture") }, - { 4, N_("Automatic") }, - { 5, N_("GN (distance priority)") }, - { 6, N_("Manual") }, - { 7, N_("Repeating Flash") }, - { 7, N_("Repeating Flash") } // To silence compiler warning - }; - - //! ExternalFlashFlags - extern const TagDetails nikonExternalFlashFlags[] = { - { 0, N_("Fired") }, - { 2, N_("Bounce Flash") }, - { 4, N_("Wide Flash Adapter") } - }; - - //! FlashColorFilter - extern const TagDetails nikonFlashColorFilter[] = { - { 0, N_("None") }, - { 1, N_("FL-GL1") }, - { 2, N_("FL-GL2") }, - { 9, N_("TN-A1") }, - { 10, N_("TN-A2") }, - { 65, N_("Red") }, - { 66, N_("Blue") }, - { 67, N_("Yellow") }, - { 68, N_("Amber") } - }; - - // Nikon3 Flash Info 1 Tag Info - const TagInfo Nikon3MakerNote::tagInfoFl1_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonFl1Id, makerTags, undefined, 4, printExifVersion), - TagInfo( 4, "FlashSource", N_("Flash Source"), N_("Flash source"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashSource)), - TagInfo( 5, "0x0005", N_("0x0005"), N_("Unknown"), nikonFl1Id, makerTags, unsignedByte, 1, printValue), - TagInfo( 6, "ExternalFlashFirmware", N_("External Flash Firmware"), N_("External flash firmware"), nikonFl1Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonFlashFirmware)), - TagInfo( 8, "ExternalFlashFlags", N_("External Flash Flags"), N_("External flash flags"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonExternalFlashFlags)), - TagInfo( 11, "FlashFocalLength", N_("Flash Focal Length"), N_("Flash focal length"), nikonFl1Id, makerTags, unsignedByte, 1, printFlashFocalLength), - TagInfo( 12, "RepeatingFlashRate", N_("Repeating Flash Rate"), N_("Repeating flash rate"), nikonFl1Id, makerTags, unsignedByte, 1, printRepeatingFlashRate), - TagInfo( 13, "RepeatingFlashCount", N_("Repeating Flash Count"), N_("Repeating flash count"), nikonFl1Id, makerTags, unsignedByte, 1, printRepeatingFlashCount), - TagInfo( 14, "FlashGNDistance", N_("Flash GN Distance"), N_("Flash GN distance"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashGNDistance)), - TagInfo( 15, "FlashGroupAControlMode", N_("Flash Group A Control Mode"), N_("Flash group a control mode"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashControlMode)), - TagInfo( 16, "FlashGroupBControlMode", N_("Flash Group B Control Mode"), N_("Flash group b control mode"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashControlMode)), - // End of list marker - TagInfo(0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonFl1Id, makerTags, unsignedByte, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListFl1() - { - return tagInfoFl1_; - } - - // Nikon3 Flash Info 2 Tag Info - const TagInfo Nikon3MakerNote::tagInfoFl2_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonFl2Id, makerTags, undefined, 4, printExifVersion), - TagInfo( 4, "FlashSource", N_("Flash Source"), N_("Flash source"), nikonFl2Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashSource)), - TagInfo( 5, "0x0005", N_("0x0005"), N_("Unknown"), nikonFl2Id, makerTags, unsignedByte, 1, printValue), - TagInfo( 6, "ExternalFlashFirmware", N_("External Flash Firmware"), N_("External flash firmware"), nikonFl2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonFlashFirmware)), - TagInfo( 8, "ExternalFlashFlags", N_("External Flash Flags"), N_("External flash flags"), nikonFl2Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonExternalFlashFlags)), - TagInfo( 12, "FlashFocalLength", N_("Flash Focal Length"), N_("Flash focal length"), nikonFl2Id, makerTags, unsignedByte, 1, printFlashFocalLength), - TagInfo( 13, "RepeatingFlashRate", N_("Repeating Flash Rate"), N_("Repeating flash rate"), nikonFl2Id, makerTags, unsignedByte, 1, printRepeatingFlashRate), - TagInfo( 14, "RepeatingFlashCount", N_("Repeating Flash Count"), N_("Repeating flash count"), nikonFl2Id, makerTags, unsignedByte, 1, printRepeatingFlashCount), - TagInfo( 15, "FlashGNDistance", N_("Flash GN Distance"), N_("Flash GN distance"), nikonFl2Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashGNDistance)), - // End of list marker - TagInfo(0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonFl2Id, makerTags, unsignedByte, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListFl2() - { - return tagInfoFl2_; - } - - // Nikon3 Flash Info 3 Tag Info - const TagInfo Nikon3MakerNote::tagInfoFl3_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonFl3Id, makerTags, undefined, 4, printExifVersion), - TagInfo( 4, "FlashSource", N_("Flash Source"), N_("Flash source"), nikonFl3Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashSource)), - TagInfo( 6, "ExternalFlashFirmware", N_("External Flash Firmware"), N_("External flash firmware"), nikonFl3Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonFlashFirmware)), - TagInfo( 8, "ExternalFlashFlags", N_("External Flash Flags"), N_("External flash flags"), nikonFl3Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonExternalFlashFlags)), - TagInfo( 12, "FlashFocalLength", N_("Flash Focal Length"), N_("Flash focal length"), nikonFl3Id, makerTags, unsignedByte, 1, printFlashFocalLength), - TagInfo( 13, "RepeatingFlashRate", N_("Repeating Flash Rate"), N_("Repeating flash rate"), nikonFl3Id, makerTags, unsignedByte, 1, printRepeatingFlashRate), - TagInfo( 14, "RepeatingFlashCount", N_("Repeating Flash Count"), N_("Repeating flash count"), nikonFl3Id, makerTags, unsignedByte, 1, printRepeatingFlashCount), - TagInfo( 15, "FlashGNDistance", N_("Flash GN Distance"), N_("Flash GN distance"), nikonFl3Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashGNDistance)), - TagInfo( 16, "FlashColorFilter", N_("Flash Color Filter"), N_("Flash color filter"), nikonFl3Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashColorFilter)), - // End of list marker - TagInfo(0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonFl3Id, makerTags, unsignedByte, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListFl3() - { - return tagInfoFl3_; - } - - // Nikon3 Shot Info D80 Tag Info - const TagInfo Nikon3MakerNote::tagInfoSi1_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonSi1Id, makerTags, unsignedByte, 4, printExifVersion), - TagInfo( 586, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi1Id, makerTags, unsignedLong, 1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownNikonSi1Tag)", "(UnknownNikonSi1Tag)", N_("Unknown Nikon Shot Info D80 Tag"), nikonSi1Id, makerTags, unsignedByte, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListSi1() - { - return tagInfoSi1_; - } - - // Nikon3 Shot Info D40 Tag Info - const TagInfo Nikon3MakerNote::tagInfoSi2_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonSi2Id, makerTags, unsignedByte, 4, printExifVersion), - TagInfo( 582, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi2Id, makerTags, unsignedLong, 1, printValue), - TagInfo( 738, "FlashLevel", N_("Flash Level"), N_("Flash level"), nikonSi2Id, makerTags, unsignedByte, 1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownNikonSi2Tag)", "(UnknownNikonSi2Tag)", N_("Unknown Nikon Shot Info D40 Tag"), nikonSi2Id, makerTags, unsignedByte, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListSi2() - { - return tagInfoSi2_; - } - - //! AfFineTuneAdj D300 (a) - extern const TagDetails nikonAfFineTuneAdj1[] = { - { 0x0000, N_("0") }, - { 0x003a, N_("+1") }, - { 0x003b, N_("+2") }, - { 0x003c, N_("+4") }, - { 0x003d, N_("+8") }, - { 0x003e, N_("+16") }, - { 0x00c2, N_("-16") }, - { 0x00c3, N_("-8") }, - { 0x00c4, N_("-4") }, - { 0x00c5, N_("-2") }, - { 0x00c6, N_("-1") }, - { 0x103e, N_("+17") }, - { 0x10c2, N_("-17") }, - { 0x203d, N_("+9") }, - { 0x203e, N_("+18") }, - { 0x20c2, N_("-18") }, - { 0x20c3, N_("-9") }, - { 0x303e, N_("+19") }, - { 0x30c2, N_("-19") }, - { 0x403c, N_("+5") }, - { 0x403d, N_("+10") }, - { 0x403e, N_("+20") }, - { 0x40c2, N_("-20") }, - { 0x40c3, N_("-10") }, - { 0x40c4, N_("-5") }, - { 0x603d, N_("+11") }, - { 0x60c3, N_("-11") }, - { 0x803b, N_("+3") }, - { 0x803c, N_("+6") }, - { 0x803d, N_("+12") }, - { 0x80c3, N_("-12") }, - { 0x80c4, N_("-6") }, - { 0x80c5, N_("-3") }, - { 0xa03d, N_("+13") }, - { 0xa0c3, N_("-13") }, - { 0xc03c, N_("+7") }, - { 0xc03d, N_("+14") }, - { 0xc0c3, N_("-14") }, - { 0xc0c4, N_("-7") }, - { 0xe03d, N_("+15") }, - { 0xe0c3, N_("-15") } - }; - - // Nikon3 Shot Info D300 (a) Tag Info - const TagInfo Nikon3MakerNote::tagInfoSi3_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonSi3Id, makerTags, unsignedByte, 4, printExifVersion), - TagInfo( 604, "ISO", N_("ISO"), N_("ISO"), nikonSi3Id, makerTags, unsignedByte, 1, printIiIso), - TagInfo( 633, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi3Id, makerTags, unsignedLong, 1, printValue), - TagInfo( 721, "AFFineTuneAdj", N_("AF Fine Tune Adj"), N_("AF fine tune adj"), nikonSi3Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonAfFineTuneAdj1)), - // End of list marker - TagInfo(0xffff, "(UnknownNikonSi3Tag)", "(UnknownNikonSi3Tag)", N_("Unknown Nikon Shot Info D300 (a) Tag"), nikonSi3Id, makerTags, unsignedByte, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListSi3() - { - return tagInfoSi3_; - } - - //! AfFineTuneAdj D300 (b) - extern const TagDetails nikonAfFineTuneAdj2[] = { - { 0x0000, N_("0") }, - { 0x043e, N_("+13") }, - { 0x04c2, N_("-13") }, - { 0x183d, N_("+7") }, - { 0x183e, N_("+14") }, - { 0x18c2, N_("-14") }, - { 0x18c3, N_("-7") }, - { 0x2c3e, N_("+15") }, - { 0x2cc2, N_("-15") }, - { 0x403a, N_("+1") }, - { 0x403b, N_("+2") }, - { 0x403c, N_("+4") }, - { 0x403d, N_("+8") }, - { 0x403e, N_("+16") }, - { 0x40c2, N_("-16") }, - { 0x40c3, N_("-8") }, - { 0x40c4, N_("-4") }, - { 0x40c5, N_("-2") }, - { 0x40c6, N_("-1") }, - { 0x543e, N_("+17") }, - { 0x54c2, N_("-17") }, - { 0x683d, N_("+9") }, - { 0x683e, N_("+18") }, - { 0x68c2, N_("-18") }, - { 0x68c3, N_("-9") }, - { 0x7c3e, N_("+19") }, - { 0x7cc2, N_("-19") }, - { 0x903c, N_("+5") }, - { 0x903d, N_("+10") }, - { 0x903e, N_("+20") }, - { 0x90c2, N_("-20") }, - { 0x90c3, N_("-10") }, - { 0x90c4, N_("-5") }, - { 0xb83d, N_("+11") }, - { 0xb8c3, N_("-11") }, - { 0xe03b, N_("+3") }, - { 0xe03c, N_("+6") }, - { 0xe03d, N_("+12") }, - { 0xe0c3, N_("-12") }, - { 0xe0c4, N_("-6") }, - { 0xe0c5, N_("-3") } - }; - - // Nikon3 Shot Info D300 (b) Tag Info - const TagInfo Nikon3MakerNote::tagInfoSi4_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonSi4Id, makerTags, unsignedByte, 4, printExifVersion), - TagInfo( 613, "ISO", N_("ISO"), N_("ISO"), nikonSi4Id, makerTags, unsignedByte, 1, printIiIso), - TagInfo( 644, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi4Id, makerTags, unsignedLong, 1, printValue), - TagInfo( 732, "AFFineTuneAdj", N_("AF Fine Tune Adj"), N_("AF fine tune adj"), nikonSi4Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonAfFineTuneAdj2)), - // End of list marker - TagInfo(0xffff, "(UnknownNikonSi4Tag)", "(UnknownNikonSi4Tag)", N_("Unknown Nikon Shot Info D300 (b) Tag"), nikonSi4Id, makerTags, unsignedByte, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListSi4() - { - return tagInfoSi4_; - } - - //! VibrationReduction - extern const TagDetails nikonOffOn2[] = { - { 0, N_("Off") }, - { 1, N_("On (1)") }, - { 2, N_("On (2)") }, - { 3, N_("On (3)") } - }; - - //! VibrationReduction2 - extern const TagDetails nikonOffOn3[] = { - { 0x0, N_("n/a") }, - { 0xc, N_("Off") }, - { 0xf, N_("On") } - }; - - // Nikon3 Shot Info Tag Info - const TagInfo Nikon3MakerNote::tagInfoSi5_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonSi5Id, makerTags, unsignedByte, 4, printExifVersion), - TagInfo( 106, "ShutterCount1", N_("Shutter Count 1"), N_("Shutter count 1"), nikonSi5Id, makerTags, unsignedLong, 1, printValue), - TagInfo( 110, "DeletedImageCount", N_("Deleted Image Count"), N_("Deleted image count"), nikonSi5Id, makerTags, unsignedLong, 1, printValue), - TagInfo( 117, "VibrationReduction", N_("Vibration Reduction"), N_("Vibration reduction"), nikonSi5Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn2)), - TagInfo( 130, "VibrationReduction1", N_("Vibration Reduction 1"), N_("Vibration reduction 1"), nikonSi5Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn)), - TagInfo( 343, "ShutterCount2", N_("Shutter Count 2"), N_("Shutter count 2"), nikonSi5Id, makerTags, undefined, 2, printValue), - TagInfo( 430, "VibrationReduction2", N_("Vibration Reduction 2"), N_("Vibration reduction 2"), nikonSi5Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn3)), - TagInfo( 598, "ISO", N_("ISO"), N_("ISO"), nikonSi5Id, makerTags, unsignedByte, 1, printIiIso), - TagInfo( 630, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi5Id, makerTags, unsignedLong, 1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownNikonSi5Tag)", "(UnknownNikonSi5Tag)", N_("Unknown Nikon Shot Info Tag"), nikonSi5Id, makerTags, unsignedByte, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListSi5() - { - return tagInfoSi5_; - } - - // Nikon3 Color Balance 1 Tag Info - const TagInfo Nikon3MakerNote::tagInfoCb1_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb1Id, makerTags, undefined, 4, printExifVersion), - TagInfo(36, "WB_RBGGLevels", N_("WB RBGG Levels"), N_("WB RBGG levels"), nikonCb1Id, makerTags, unsignedShort, 4, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownNikonCb1Tag)", "(UnknownNikonCb1Tag)", N_("Unknown Nikon Color Balance 1 Tag"), nikonCb1Id, makerTags, unsignedShort, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListCb1() - { - return tagInfoCb1_; - } - - // Nikon3 Color Balance 2 Tag Info - const TagInfo Nikon3MakerNote::tagInfoCb2_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb2Id, makerTags, undefined, 4, printExifVersion), - TagInfo( 5, "WB_RGGBLevels", N_("WB RGGB Levels"), N_("WB RGGB levels"), nikonCb2Id, makerTags, unsignedShort, 4, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownNikonCb2Tag)", "(UnknownNikonCb2Tag)", N_("Unknown Nikon Color Balance 2 Tag"), nikonCb2Id, makerTags, unsignedShort, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListCb2() - { - return tagInfoCb2_; - } - - // Nikon3 Color Balance 2a Tag Info - const TagInfo Nikon3MakerNote::tagInfoCb2a_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb2aId, makerTags, undefined, 4, printExifVersion), - TagInfo( 9, "WB_RGGBLevels", N_("WB RGGB Levels"), N_("WB RGGB levels"), nikonCb2aId, makerTags, unsignedShort, 4, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownNikonCb2aTag)", "(UnknownNikonCb2aTag)", N_("Unknown Nikon Color Balance 2a Tag"), nikonCb2aId, makerTags, unsignedShort, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListCb2a() - { - return tagInfoCb2a_; - } - - // Nikon3 Color Balance 2b Tag Info - const TagInfo Nikon3MakerNote::tagInfoCb2b_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb2bId, makerTags, undefined, 4, printExifVersion), - TagInfo(145, "WB_RGGBLevels", N_("WB RGGB Levels"), N_("WB RGGB levels"), nikonCb2bId, makerTags, unsignedShort, 4, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownNikonCb2bTag)", "(UnknownNikonCb2bTag)", N_("Unknown Nikon Color Balance 2b Tag"), nikonCb2bId, makerTags, unsignedShort, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListCb2b() - { - return tagInfoCb2b_; - } - - // Nikon3 Color Balance 3 Tag Info - const TagInfo Nikon3MakerNote::tagInfoCb3_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb3Id, makerTags, undefined, 4, printExifVersion), - TagInfo(10, "WB_RGBGLevels", N_("WB RGBG Levels"), N_("WB RGBG levels"), nikonCb3Id, makerTags, unsignedShort, 4, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownNikonCb3Tag)", "(UnknownNikonCb3Tag)", N_("Unknown Nikon Color Balance 3 Tag"), nikonCb3Id, makerTags, unsignedShort, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListCb3() - { - return tagInfoCb3_; - } - - // Nikon3 Color Balance 4 Tag Info - const TagInfo Nikon3MakerNote::tagInfoCb4_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb4Id, makerTags, undefined, 4, printExifVersion), - TagInfo(147, "WB_GRBGLevels", N_("WB GRBG Levels"), N_("WB GRBG levels"), nikonCb4Id, makerTags, unsignedShort, 4, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownNikonCb4Tag)", "(UnknownNikonCb4Tag)", N_("Unknown Nikon Color Balance 4 Tag"), nikonCb4Id, makerTags, unsignedShort, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListCb4() - { - return tagInfoCb4_; - } - - // Nikon3 Lens Data 1 Tag Info - const TagInfo Nikon3MakerNote::tagInfoLd1_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonLd1Id, makerTags, undefined, 4, printExifVersion), - TagInfo( 6, "LensIDNumber", N_("Lens ID Number"), N_("Lens ID number"), nikonLd1Id, makerTags, unsignedByte, 1, printLensId1), - TagInfo( 7, "LensFStops", N_("Lens F-Stops"), N_("Lens F-stops"), nikonLd1Id, makerTags, unsignedByte, 1, printFStops), - TagInfo( 8, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), nikonLd1Id, makerTags, unsignedByte, 1, printFocal), - TagInfo( 9, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), nikonLd1Id, makerTags, unsignedByte, 1, printFocal), - TagInfo(10, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal"), nikonLd1Id, makerTags, unsignedByte, 1, printAperture), - TagInfo(11, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal"), nikonLd1Id, makerTags, unsignedByte, 1, printAperture), - TagInfo(12, "MCUVersion", N_("MCU Version"), N_("MCU version"), nikonLd1Id, makerTags, unsignedByte, 1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownNikonLd1Tag)", "(UnknownNikonLd1Tag)", N_("Unknown Nikon Lens Data 1 Tag"), nikonLd1Id, makerTags, unsignedByte, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListLd1() - { - return tagInfoLd1_; - } - - // Nikon3 Lens Data 2 Tag Info - const TagInfo Nikon3MakerNote::tagInfoLd2_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonLd2Id, makerTags, undefined, 4, printExifVersion), - TagInfo( 4, "ExitPupilPosition", N_("Exit Pupil Position"), N_("Exit pupil position"), nikonLd2Id, makerTags, unsignedByte, 1, printExitPupilPosition), - TagInfo( 5, "AFAperture", N_("AF Aperture"), N_("AF aperture"), nikonLd2Id, makerTags, unsignedByte, 1, printAperture), - TagInfo( 8, "FocusPosition", N_("Focus Position"), N_("Focus position"), nikonLd2Id, makerTags, unsignedByte, 1, printValue), - TagInfo( 9, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), nikonLd2Id, makerTags, unsignedByte, 1, printFocusDistance), - TagInfo(10, "FocalLength", N_("Focal Length"), N_("Focal length"), nikonLd2Id, makerTags, unsignedByte, 1, printFocal), - TagInfo(11, "LensIDNumber", N_("Lens ID Number"), N_("Lens ID number"), nikonLd2Id, makerTags, unsignedByte, 1, printLensId2), - TagInfo(12, "LensFStops", N_("Lens F-Stops"), N_("Lens F-stops"), nikonLd2Id, makerTags, unsignedByte, 1, printFStops), - TagInfo(13, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), nikonLd2Id, makerTags, unsignedByte, 1, printFocal), - TagInfo(14, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), nikonLd2Id, makerTags, unsignedByte, 1, printFocal), - TagInfo(15, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal"), nikonLd2Id, makerTags, unsignedByte, 1, printAperture), - TagInfo(16, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal"), nikonLd2Id, makerTags, unsignedByte, 1, printAperture), - TagInfo(17, "MCUVersion", N_("MCU Version"), N_("MCU version"), nikonLd2Id, makerTags, unsignedByte, 1, printValue), - TagInfo(18, "EffectiveMaxAperture", N_("Effective Max Aperture"), N_("Effective max aperture"), nikonLd2Id, makerTags, unsignedByte, 1, printAperture), - // End of list marker - TagInfo(0xffff, "(UnknownNikonLd2Tag)", "(UnknownNikonLd2Tag)", N_("Unknown Nikon Lens Data 2 Tag"), nikonLd2Id, makerTags, unsignedByte, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListLd2() - { - return tagInfoLd2_; - } - - // Nikon3 Lens Data 3 Tag Info - const TagInfo Nikon3MakerNote::tagInfoLd3_[] = { - TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonLd3Id, makerTags, undefined, 4, printExifVersion), - TagInfo( 4, "ExitPupilPosition", N_("Exit Pupil Position"), N_("Exit pupil position"), nikonLd3Id, makerTags, unsignedByte, 1, printExitPupilPosition), - TagInfo( 5, "AFAperture", N_("AF Aperture"), N_("AF aperture"), nikonLd3Id, makerTags, unsignedByte, 1, printAperture), - TagInfo( 8, "FocusPosition", N_("Focus Position"), N_("Focus position"), nikonLd3Id, makerTags, unsignedByte, 1, printValue), - TagInfo(10, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), nikonLd3Id, makerTags, unsignedByte, 1, printFocusDistance), - TagInfo(11, "FocalLength", N_("Focal Length"), N_("Focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printFocal), - TagInfo(12, "LensIDNumber", N_("Lens ID Number"), N_("Lens ID number"), nikonLd3Id, makerTags, unsignedByte, 1, printLensId3), - TagInfo(13, "LensFStops", N_("Lens F-Stops"), N_("Lens F-stops"), nikonLd3Id, makerTags, unsignedByte, 1, printFStops), - TagInfo(14, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printFocal), - TagInfo(15, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printFocal), - TagInfo(16, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printAperture), - TagInfo(17, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printAperture), - TagInfo(18, "MCUVersion", N_("MCU Version"), N_("MCU version"), nikonLd3Id, makerTags, unsignedByte, 1, printValue), - TagInfo(19, "EffectiveMaxAperture", N_("Effective Max Aperture"), N_("Effective max aperture"), nikonLd3Id, makerTags, unsignedByte, 1, printAperture), - // End of list marker - TagInfo(0xffff, "(UnknownNikonLd3Tag)", "(UnknownNikonLd3Tag)", N_("Unknown Nikon Lens Data 3 Tag"), nikonLd3Id, makerTags, unsignedByte, 1, printValue) - }; - - const TagInfo* Nikon3MakerNote::tagListLd3() - { - return tagInfoLd3_; - } - - std::ostream& Nikon3MakerNote::printIiIso(std::ostream& os, - const Value& value, - const ExifData*) - { - double v = 100 * exp((value.toLong() / 12.0 - 5) * log(2.0)); - return os << static_cast(v + 0.5); - } - - std::ostream& Nikon3MakerNote::print0x0002(std::ostream& os, - const Value& value, - const ExifData*) - { - if (value.count() > 1) { - os << value.toLong(1); - } - else { - os << "(" << value << ")"; - } - return os; - } - - std::ostream& Nikon3MakerNote::print0x0007(std::ostream& os, - const Value& value, - const ExifData*) - { - std::string focus = value.toString(); - if (focus == "AF-C ") os << _("Continuous autofocus"); - else if (focus == "AF-S ") os << _("Single autofocus"); - else if (focus == "AF-A ") os << _("Automatic"); - else os << "(" << value << ")"; - return os; - } - - std::ostream& Nikon3MakerNote::print0x0083(std::ostream& os, - const Value& value, - const ExifData*) - { - long lensType = value.toLong(); - - bool valid=false; - if (lensType & 1) - { - os << "MF "; - valid=true; - } - if (lensType & 2) - { - os << "D "; - valid=true; - } - if (lensType & 4) - { - os << "G "; - valid=true; - } - if (lensType & 8) - { - os << "VR"; - valid=true; - } - - if (!valid) - os << "(" << lensType << ")"; - - return os; - } - - std::ostream& Nikon3MakerNote::print0x0084(std::ostream& os, - const Value& value, - const ExifData*) - { - if ( value.count() != 4 - || value.toRational(0).second == 0 - || value.toRational(1).second == 0) { - os << "(" << value << ")"; - return os; - } - long len1 = value.toLong(0); - long len2 = value.toLong(1); - - Rational fno1 = value.toRational(2); - Rational fno2 = value.toRational(3); - os << len1; - if (len2 != len1) { - os << "-" << len2; - } - os << "mm "; - std::ostringstream oss; - oss.copyfmt(os); - os << "F" << std::setprecision(2) - << static_cast(fno1.first) / fno1.second; - if (fno2 != fno1) { - os << "-" << std::setprecision(2) - << static_cast(fno2.first) / fno2.second; - } - os.copyfmt(oss); - return os; - } - - std::ostream& Nikon3MakerNote::print0x0085(std::ostream& os, - const Value& value, - const ExifData*) - { - Rational distance = value.toRational(); - if (distance.first == 0) { - os << _("Unknown"); - } - else if (distance.second != 0) { - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(2) - << (float)distance.first / distance.second - << " m"; - os.copyfmt(oss); - } - else { - os << "(" << value << ")"; - } - return os; - } - - std::ostream& Nikon3MakerNote::print0x0086(std::ostream& os, - const Value& value, - const ExifData*) - { - Rational zoom = value.toRational(); - if (zoom.first == 0) { - os << _("Not used"); - } - else if (zoom.second != 0) { - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(1) - << (float)zoom.first / zoom.second - << "x"; - os.copyfmt(oss); - } - else { - os << "(" << value << ")"; - } - return os; - } - - std::ostream& Nikon3MakerNote::print0x0088(std::ostream& os, - const Value& value, - const ExifData*) - { - if (value.size() != 4) { // Size is 4 even for those who map this way... - os << "(" << value << ")"; - } - else { - // Mapping by Roger Larsson - unsigned focusmetering = value.toLong(0); - unsigned focuspoint = value.toLong(1); - unsigned focusused = (value.toLong(2) << 8) + value.toLong(3); - // TODO: enum {standard, wide} combination = standard; - const unsigned focuspoints = sizeof(nikonFocuspoints) - / sizeof(nikonFocuspoints[0]); - - if (focusmetering == 0 && focuspoint == 0 && focusused == 0) { - // Special case, in Manual focus and with Nikon compacts - // this indicates that the field has no meaning. - // But when acually in "Single area, Center" this can mean - // that focus was not found (try this in AF-C mode) - // TODO: handle the meaningful case (interacts with other fields) - os << "N/A"; - return os; - } - - switch (focusmetering) { - case 0x00: os << _("Single area"); break; // D70, D200 - case 0x01: os << _("Dynamic area"); break; // D70, D200 - case 0x02: os << _("Closest subject"); break; // D70, D200 - case 0x03: os << _("Group dynamic-AF"); break; // D200 - case 0x04: os << _("Single area (wide)"); /* TODO: combination = wide; */ break; // D200 - case 0x05: os << _("Dynamic area (wide)"); /* TODO: combination = wide; */ break; // D200 - default: os << "(" << focusmetering << ")"; break; - } - - char sep = ';'; - if (focusmetering != 0x02) { // No user selected point for Closest subject - os << sep << ' '; - - // What focuspoint did the user select? - if (focuspoint < focuspoints) { - os << nikonFocuspoints[focuspoint]; - // TODO: os << position[fokuspoint][combination] - } - else - os << "(" << focuspoint << ")"; - - sep = ','; - } - - // What fokuspoints(!) did the camera use? add if differs - if (focusused == 0) - os << sep << " " << _("none"); - else if (focusused != 1U<findKey(ExifKey("Exif.Image.Model")); - if (pos != metadata->end() && pos->count() != 0) { - std::string model = pos->toString(); - if (model.find("NIKON D") != std::string::npos) { - dModel = true; - } - } - } - - uint16_t val = static_cast(value.toLong()); - if (dModel) val = (val >> 8) | ((val & 0x00ff) << 8); - - if (val == 0x07ff) return os << _("All 11 Points"); - - UShortValue v; - v.value_.push_back(val); - return EXV_PRINT_TAG_BITMASK(nikonAfPointsInFocus)(os, v, 0); - } - - std::ostream& Nikon3MakerNote::print0x0089(std::ostream& os, - const Value& value, - const ExifData* metadata) - { - if (value.count() != 1 || value.typeId() != unsignedShort) { - return os << "(" << value << ")"; - } - long l = value.toLong(0); - if (l == 0) return os << _("Single-frame"); - if (!(l & 0x87)) os << _("Single-frame") << ", "; - bool d70 = false; - if (metadata) { - ExifKey key("Exif.Image.Model"); - ExifData::const_iterator pos = metadata->findKey(key); - if (pos != metadata->end() && pos->count() != 0) { - std::string model = pos->toString(); - if (model.find("D70") != std::string::npos) { - d70 = true; - } - } - } - if (d70) { - EXV_PRINT_TAG_BITMASK(nikonShootingModeD70)(os, value, 0); - } - else { - EXV_PRINT_TAG_BITMASK(nikonShootingMode)(os, value, 0); - } - return os; - } - - std::ostream& Nikon3MakerNote::print0x008b(std::ostream& os, - const Value& value, - const ExifData*) - { - // Decoded by Robert Rottmerhusen - if ( value.size() != 4 - || value.typeId() != undefined) { - return os << "(" << value << ")"; - } - float a = value.toFloat(0); - long b = value.toLong(1); - long c = value.toLong(2); - if (c == 0) return os << "(" << value << ")"; - return os << a * b / c; - } - - std::ostream& Nikon3MakerNote::printLensId1(std::ostream& os, - const Value& value, - const ExifData* metadata) - { - return printLensId(os, value, metadata, "NikonLd1"); - } - - std::ostream& Nikon3MakerNote::printLensId2(std::ostream& os, - const Value& value, - const ExifData* metadata) - { - return printLensId(os, value, metadata, "NikonLd2"); - } - - std::ostream& Nikon3MakerNote::printLensId3(std::ostream& os, - const Value& value, - const ExifData* metadata) - { - return printLensId(os, value, metadata, "NikonLd3"); - } - - std::ostream& Nikon3MakerNote::printLensId(std::ostream& os, - const Value& value, - const ExifData* metadata, - const std::string& group) - { -#ifdef EXV_HAVE_LENSDATA -// 8< - - - 8< do not remove this line >8 - - - >8 -//------------------------------------------------------------------------------ -#ifndef FMOUNTLH -#define FMOUNTLH -//------------------------------------------------------------------------------ -// List of AF F-Mount lenses - Version 4.3.428.01 2012-03-26 -//------------------------------------------------------------------------------ -#define FMLVERSION "4.3.428.01" -#define FMLDATE "2012-03-26" -//------------------------------------------------------------------------------ -// -// -// Created by Robert Rottmerhusen 2005 - 2012 -// http://www.rottmerhusen.com (lens_id@rottmerhusen.com) -// -// For contributor info and more visit my online list: -// http://www.rottmerhusen.com/objektives/lensid/thirdparty.html -// -// -// Seven misidentified lenses due to double LensIDs: -// -// 2F 48 30 44 24 24 29 02.1: Nikon AF Zoom-Nikkor 20-35mm f/2.8D IF -// 2F 48 30 44 24 24 29 02.2: Tokina AT-X 235 AF PRO (AF 20-35mm f/2.8) -// -// 32 54 6A 6A 24 24 35 02.1: Nikon AF Micro-Nikkor 105mm f/2.8D -// 32 54 6A 6A 24 24 35 02.2: Sigma Macro 105mm F2.8 EX DG -// -// 7A 3C 1F 37 30 30 7E 06.1: Nikon AF-S DX Zoom-Nikkor 12-24mm f/4G IF-ED -// 7A 3C 1F 37 30 30 7E 06.2: Tokina AT-X 124 AF PRO DX II (AF 12-24mm f/4) -// -// 8B 40 2D 80 2C 3C FD 0E.1: Nikon AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED -// 8B 40 2D 80 2C 3C FD 0E.2: Nikon AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED II -// -// 32 53 64 64 24 24 35 02.1: Tamron SP AF 90mm F/2.8 Macro 1:1 (172E) -// 32 53 64 64 24 24 35 02.2: Tamron SP AF 90mm F/2.8 Di Macro 1:1 (272E) -// -// 2F 40 30 44 2C 34 29 02.1: Tokina AF 235 II (AF 20-35mm f/3.5-4.5) -// 2F 40 30 44 2C 34 29 02.2: Tokina AF 193 (AF 19-35mm f/3.5-4.5) -// -// 25 48 3C 5C 24 24 1B 02.1: Tokina AT-X 287 AF PRO SV (AF 28-70mm f/2.8) -// 25 48 3C 5C 24 24 1B 02.2: Tokina AT-X 270 AF PRO II (AF 28-70mm f/2.6-2.8) -// -// -// product number/order code not complete -// -// Free use in non-commercial, GPL or open source software only! -// Please contact me for adding lenses or use in commercial software. -// -//"data from TAG 0x98" "ltyp" " "TC" "MID" "maker" "PN" "lens name from manuf"; -// -//------------------------------------------------------------------------------ -// Nikkor lenses by their LensID -//------------------------------------------------------------------------------ -// -static const struct {unsigned char lid,stps,focs,focl,aps,apl,lfw, ltype, tcinfo, dblid, mid; const char *manuf, *lnumber, *lensname;} -fmountlens[] = { -{0x01,0x58,0x50,0x50,0x14,0x14,0x02,0x00,0x00,0x00,0x00, "Nikon", "JAA00901", "AF Nikkor 50mm f/1.8"}, -{0x02,0x42,0x44,0x5C,0x2A,0x34,0x02,0x00,0x00,0x00,0x00, "Nikon", "JAA72701", "AF Zoom-Nikkor 35-70mm f/3.3-4.5"}, -{0x02,0x42,0x44,0x5C,0x2A,0x34,0x08,0x00,0x00,0x00,0x00, "Nikon", "JAA72701", "AF Zoom-Nikkor 35-70mm f/3.3-4.5"}, -{0x03,0x48,0x5C,0x81,0x30,0x30,0x02,0x00,0x00,0x00,0x00, "Nikon", "JAA72801", "AF Zoom-Nikkor 70-210mm f/4"}, -{0x04,0x48,0x3C,0x3C,0x24,0x24,0x03,0x00,0x00,0x00,0x00, "Nikon", "JAA12001", "AF Nikkor 28mm f/2.8"}, -{0x05,0x54,0x50,0x50,0x0C,0x0C,0x04,0x00,0x00,0x00,0x00, "Nikon", "JAA01001", "AF Nikkor 50mm f/1.4"}, -{0x06,0x54,0x53,0x53,0x24,0x24,0x06,0x00,0x40,0x00,0x00, "Nikon", "JAA62101", "AF Micro-Nikkor 55mm f/2.8"}, -{0x07,0x40,0x3C,0x62,0x2C,0x34,0x03,0x00,0x00,0x00,0x00, "Nikon", "JAA72901", "AF Zoom-Nikkor 28-85mm f/3.5-4.5"}, -{0x08,0x40,0x44,0x6A,0x2C,0x34,0x04,0x00,0x00,0x00,0x00, "Nikon", "JAA73001", "AF Zoom-Nikkor 35-105mm f/3.5-4.5"}, -{0x09,0x48,0x37,0x37,0x24,0x24,0x04,0x00,0x00,0x00,0x00, "Nikon", "JAA12101", "AF Nikkor 24mm f/2.8"}, -{0x0A,0x48,0x8E,0x8E,0x24,0x24,0x03,0x00,0x00,0x00,0x00, "Nikon", "JAA322AA", "AF Nikkor 300mm f/2.8 IF-ED"}, -{0x0A,0x48,0x8E,0x8E,0x24,0x24,0x05,0x00,0x00,0x00,0x00, "Nikon", "JAA322AB", "AF Nikkor 300mm f/2.8 IF-ED N"}, -{0x0B,0x48,0x7C,0x7C,0x24,0x24,0x05,0x00,0x00,0x00,0x00, "Nikon", "JAA32101", "AF Nikkor 180mm f/2.8 IF-ED"}, -//0C -{0x0D,0x40,0x44,0x72,0x2C,0x34,0x07,0x00,0x00,0x00,0x00, "Nikon", "JAA73101", "AF Zoom-Nikkor 35-135mm f/3.5-4.5"}, -{0x0E,0x48,0x5C,0x81,0x30,0x30,0x05,0x00,0x00,0x00,0x00, "Nikon", "", "AF Zoom-Nikkor 70-210mm f/4"}, -{0x0F,0x58,0x50,0x50,0x14,0x14,0x05,0x00,0x00,0x00,0x00, "Nikon", "JAA009AD", "AF Nikkor 50mm f/1.8 N"}, -{0x10,0x48,0x8E,0x8E,0x30,0x30,0x08,0x00,0x00,0x00,0x00, "Nikon", "JAA32301", "AF Nikkor 300mm f/4 IF-ED"}, -{0x11,0x48,0x44,0x5C,0x24,0x24,0x08,0x00,0x00,0x00,0x00, "Nikon", "JAA73301", "AF Zoom-Nikkor 35-70mm f/2.8"}, -{0x12,0x48,0x5C,0x81,0x30,0x3C,0x09,0x00,0x00,0x00,0x00, "Nikon", "JAA73201", "AF Nikkor 70-210mm f/4-5.6"}, -{0x13,0x42,0x37,0x50,0x2A,0x34,0x0B,0x00,0x00,0x00,0x00, "Nikon", "JAA73401", "AF Zoom-Nikkor 24-50mm f/3.3-4.5"}, -{0x14,0x48,0x60,0x80,0x24,0x24,0x0B,0x00,0x00,0x00,0x00, "Nikon", "JAA73501", "AF Zoom-Nikkor 80-200mm f/2.8 ED"}, -{0x15,0x4C,0x62,0x62,0x14,0x14,0x0C,0x00,0x00,0x00,0x00, "Nikon", "JAA32401", "AF Nikkor 85mm f/1.8"}, -//16 -{0x17,0x3C,0xA0,0xA0,0x30,0x30,0x0F,0x00,0x00,0x00,0x00, "Nikon", "JAA518AA", "Nikkor 500mm f/4 P ED IF"}, -{0x17,0x3C,0xA0,0xA0,0x30,0x30,0x11,0x00,0x00,0x00,0x00, "Nikon", "JAA518AA", "Nikkor 500mm f/4 P ED IF"}, -{0x18,0x40,0x44,0x72,0x2C,0x34,0x0E,0x00,0x00,0x00,0x00, "Nikon", "JAA736AA", "AF Zoom-Nikkor 35-135mm f/3.5-4.5 N"}, -//19 -{0x1A,0x54,0x44,0x44,0x18,0x18,0x11,0x00,0x00,0x00,0x00, "Nikon", "JAA12201", "AF Nikkor 35mm f/2"}, -{0x1B,0x44,0x5E,0x8E,0x34,0x3C,0x10,0x00,0x00,0x00,0x00, "Nikon", "JAA738AA", "AF Zoom-Nikkor 75-300mm f/4.5-5.6"}, -{0x1C,0x48,0x30,0x30,0x24,0x24,0x12,0x00,0x00,0x00,0x00, "Nikon", "JAA12301", "AF Nikkor 20mm f/2.8"}, -{0x1D,0x42,0x44,0x5C,0x2A,0x34,0x12,0x00,0x00,0x00,0x00, "Nikon", "", "AF Zoom-Nikkor 35-70mm f/3.3-4.5 N"}, -{0x1E,0x54,0x56,0x56,0x24,0x24,0x13,0x00,0x40,0x00,0x00, "Nikon", "JAA62201", "AF Micro-Nikkor 60mm f/2.8"}, -{0x1F,0x54,0x6A,0x6A,0x24,0x24,0x14,0x00,0x40,0x00,0x00, "Nikon", "JAA62301", "AF Micro-Nikkor 105mm f/2.8"}, -{0x20,0x48,0x60,0x80,0x24,0x24,0x15,0x00,0x00,0x00,0x00, "Nikon", "", "AF Zoom-Nikkor 80-200mm f/2.8 ED"}, -{0x21,0x40,0x3C,0x5C,0x2C,0x34,0x16,0x00,0x00,0x00,0x00, "Nikon", "", "AF Zoom-Nikkor 28-70mm f/3.5-4.5"}, -{0x22,0x48,0x72,0x72,0x18,0x18,0x16,0x00,0x00,0x00,0x00, "Nikon", "JAA32501", "AF DC-Nikkor 135mm f/2"}, -{0x23,0x30,0xBE,0xCA,0x3C,0x48,0x17,0x00,0x00,0x00,0x00, "Nikon", "", "Zoom-Nikkor 1200-1700mm f/5.6-8 P ED IF"}, -// - D - lenses from here -{0x24,0x48,0x60,0x80,0x24,0x24,0x1A,0x02,0x00,0x00,0x00, "Nikon", "JAA742DA", "AF Zoom-Nikkor 80-200mm f/2.8D ED"}, -{0x25,0x48,0x44,0x5c,0x24,0x24,0x1B,0x02,0x00,0x00,0x00, "Nikon", "JAA743DA", "AF Zoom-Nikkor 35-70mm f/2.8D"}, -{0x25,0x48,0x44,0x5c,0x24,0x24,0x52,0x02,0x00,0x00,0x00, "Nikon", "JAA743DA", "AF Zoom-Nikkor 35-70mm f/2.8D"}, -{0x26,0x40,0x3C,0x5C,0x2C,0x34,0x1C,0x02,0x00,0x00,0x00, "Nikon", "JAA744DA", "AF Zoom-Nikkor 28-70mm f/3.5-4.5D"}, -// ^- not yet verified -{0x27,0x48,0x8E,0x8E,0x24,0x24,0x1D,0x02,0x07,0x00,0x00, "Nikon", "JAA326DA", "AF-I Nikkor 300mm f/2.8D IF-ED"}, -{0x27,0x48,0x8E,0x8E,0x24,0x24,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA326DA", "AF-I Nikkor 300mm f/2.8D IF-ED + TC-14E"}, -{0x27,0x48,0x8E,0x8E,0x24,0x24,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA326DA", "AF-I Nikkor 300mm f/2.8D IF-ED + TC-17E"}, -{0x27,0x48,0x8E,0x8E,0x24,0x24,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA326DA", "AF-I Nikkor 300mm f/2.8D IF-ED + TC-20E"}, -{0x28,0x3C,0xA6,0xA6,0x30,0x30,0x1D,0x02,0x07,0x00,0x00, "Nikon", "JAA519DA", "AF-I Nikkor 600mm f/4D IF-ED"}, -{0x28,0x3C,0xA6,0xA6,0x30,0x30,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA519DA", "AF-I Nikkor 600mm f/4D IF-ED + TC-14E"}, -{0x28,0x3C,0xA6,0xA6,0x30,0x30,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA519DA", "AF-I Nikkor 600mm f/4D IF-ED + TC-17E"}, -{0x28,0x3C,0xA6,0xA6,0x30,0x30,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA519DA", "AF-I Nikkor 600mm f/4D IF-ED + TC-20E"}, -//29 -{0x2A,0x54,0x3C,0x3C,0x0C,0x0C,0x26,0x02,0x00,0x00,0x00, "Nikon", "JAA124DA", "AF Nikkor 28mm f/1.4D"}, -{0x2B,0x3C,0x44,0x60,0x30,0x3C,0x1F,0x02,0x00,0x00,0x00, "Nikon", "", "AF Zoom-Nikkor 35-80mm f/4-5.6D"}, -{0x2C,0x48,0x6A,0x6A,0x18,0x18,0x27,0x02,0x00,0x00,0x00, "Nikon", "JAA327DA", "AF DC-Nikkor 105mm f/2D"}, -{0x2D,0x48,0x80,0x80,0x30,0x30,0x21,0x02,0x40,0x00,0x00, "Nikon", "JAA624DA", "AF Micro-Nikkor 200mm f/4D IF-ED"}, -{0x2E,0x48,0x5C,0x82,0x30,0x3C,0x22,0x02,0x00,0x00,0x00, "Nikon", "JAA747DA", "AF Nikkor 70-210mm f/4-5.6D"}, -{0x2E,0x48,0x5C,0x82,0x30,0x3C,0x28,0x02,0x00,0x00,0x00, "Nikon", "JAA747DA", "AF Nikkor 70-210mm f/4-5.6D"}, -{0x2F,0x48,0x30,0x44,0x24,0x24,0x29,0x02,0x00,0x01,0x00, "Nikon", "JAA746DA", "AF Zoom-Nikkor 20-35mm f/2.8D IF"}, -{0x30,0x48,0x98,0x98,0x24,0x24,0x24,0x02,0x07,0x00,0x00, "Nikon", "JAA520DA", "AF-I Nikkor 400mm f/2.8D IF-ED"}, -{0x30,0x48,0x98,0x98,0x24,0x24,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA520DA", "AF-I Nikkor 400mm f/2.8D IF-ED + TC-14E"}, -{0x30,0x48,0x98,0x98,0x24,0x24,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA520DA", "AF-I Nikkor 400mm f/2.8D IF-ED + TC-17E"}, -{0x30,0x48,0x98,0x98,0x24,0x24,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA520DA", "AF-I Nikkor 400mm f/2.8D IF-ED + TC-20E"}, -{0x31,0x54,0x56,0x56,0x24,0x24,0x25,0x02,0x40,0x00,0x00, "Nikon", "JAA625DA", "AF Micro-Nikkor 60mm f/2.8D"}, -{0x32,0x54,0x6A,0x6A,0x24,0x24,0x35,0x02,0x40,0x01,0x00, "Nikon", "JAA627DA", "AF Micro-Nikkor 105mm f/2.8D"}, -{0x33,0x48,0x2D,0x2D,0x24,0x24,0x31,0x02,0x00,0x00,0x00, "Nikon", "JAA126DA", "AF Nikkor 18mm f/2.8D"}, -{0x34,0x48,0x29,0x29,0x24,0x24,0x32,0x02,0x00,0x00,0x00, "Nikon", "JAA626DA", "AF Fisheye Nikkor 16mm f/2.8D"}, -{0x35,0x3C,0xA0,0xA0,0x30,0x30,0x33,0x02,0x07,0x00,0x00, "Nikon", "JAA521DA", "AF-I Nikkor 500mm f/4D IF-ED"}, -{0x35,0x3C,0xA0,0xA0,0x30,0x30,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA521DA", "AF-I Nikkor 500mm f/4D IF-ED + TC-14E"}, -{0x35,0x3C,0xA0,0xA0,0x30,0x30,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA521DA", "AF-I Nikkor 500mm f/4D IF-ED + TC-17E"}, -{0x35,0x3C,0xA0,0xA0,0x30,0x30,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA521DA", "AF-I Nikkor 500mm f/4D IF-ED + TC-20E"}, -{0x36,0x48,0x37,0x37,0x24,0x24,0x34,0x02,0x00,0x00,0x00, "Nikon", "JAA125DA", "AF Nikkor 24mm f/2.8D"}, -{0x37,0x48,0x30,0x30,0x24,0x24,0x36,0x02,0x00,0x00,0x00, "Nikon", "JAA127DA", "AF Nikkor 20mm f/2.8D"}, -{0x38,0x4C,0x62,0x62,0x14,0x14,0x37,0x02,0x00,0x00,0x00, "Nikon", "JAA328DA", "AF Nikkor 85mm f/1.8D"}, -//39 38 -{0x3A,0x40,0x3C,0x5C,0x2C,0x34,0x39,0x02,0x00,0x00,0x00, "Nikon", "JAA744DA", "AF Zoom-Nikkor 28-70mm f/3.5-4.5D"}, -{0x3B,0x48,0x44,0x5C,0x24,0x24,0x3A,0x02,0x00,0x00,0x00, "Nikon", "JAA743DA", "AF Zoom-Nikkor 35-70mm f/2.8D N"}, -{0x3C,0x48,0x60,0x80,0x24,0x24,0x3B,0x02,0x00,0x00,0x00, "Nikon", "", "AF Zoom-Nikkor 80-200mm f/2.8D ED"}, -{0x3D,0x3C,0x44,0x60,0x30,0x3C,0x3E,0x02,0x00,0x00,0x00, "Nikon", "", "AF Zoom-Nikkor 35-80mm f/4-5.6D"}, -{0x3E,0x48,0x3C,0x3C,0x24,0x24,0x3D,0x02,0x00,0x00,0x00, "Nikon", "JAA128DA", "AF Nikkor 28mm f/2.8D"}, -{0x3F,0x40,0x44,0x6A,0x2C,0x34,0x45,0x02,0x00,0x00,0x00, "Nikon", "JAA748DA", "AF Zoom-Nikkor 35-105mm f/3.5-4.5D"}, -//40 -{0x41,0x48,0x7c,0x7c,0x24,0x24,0x43,0x02,0x00,0x00,0x00, "Nikon", "JAA330DA", "AF Nikkor 180mm f/2.8D IF-ED"}, -{0x42,0x54,0x44,0x44,0x18,0x18,0x44,0x02,0x00,0x00,0x00, "Nikon", "JAA129DA", "AF Nikkor 35mm f/2D"}, -{0x43,0x54,0x50,0x50,0x0C,0x0C,0x46,0x02,0x00,0x00,0x00, "Nikon", "JAA011DB", "AF Nikkor 50mm f/1.4D"}, -{0x44,0x44,0x60,0x80,0x34,0x3C,0x47,0x02,0x00,0x00,0x00, "Nikon", "JAA753DB", "AF Zoom-Nikkor 80-200mm f/4.5-5.6D"}, -{0x45,0x40,0x3C,0x60,0x2C,0x3C,0x48,0x02,0x00,0x00,0x00, "Nikon", "JAA752DA", "AF Zoom-Nikkor 28-80mm f/3.5-5.6D"}, -{0x46,0x3C,0x44,0x60,0x30,0x3C,0x49,0x02,0x00,0x00,0x00, "Nikon", "JAA754DA", "AF Zoom-Nikkor 35-80mm f/4-5.6D N"}, -{0x47,0x42,0x37,0x50,0x2A,0x34,0x4A,0x02,0x00,0x00,0x00, "Nikon", "JAA756DA", "AF Zoom-Nikkor 24-50mm f/3.3-4.5D"}, -{0x48,0x48,0x8E,0x8E,0x24,0x24,0x4B,0x02,0x07,0x00,0x00, "Nikon", "JAA333DA", "AF-S Nikkor 300mm f/2.8D IF-ED"}, -{0x48,0x48,0x8E,0x8E,0x24,0x24,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA333DA", "AF-S Nikkor 300mm f/2.8D IF-ED + TC-14E"}, -{0x48,0x48,0x8E,0x8E,0x24,0x24,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA333DA", "AF-S Nikkor 300mm f/2.8D IF-ED + TC-17E"}, -{0x48,0x48,0x8E,0x8E,0x24,0x24,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA333DA", "AF-S Nikkor 300mm f/2.8D IF-ED + TC-20E"}, -{0x49,0x3C,0xA6,0xA6,0x30,0x30,0x4C,0x02,0x07,0x00,0x00, "Nikon", "JAA522DA", "AF-S Nikkor 600mm f/4D IF-ED"}, -{0x49,0x3C,0xA6,0xA6,0x30,0x30,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA522DA", "AF-S Nikkor 600mm f/4D IF-ED + TC-14E"}, -{0x49,0x3C,0xA6,0xA6,0x30,0x30,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA522DA", "AF-S Nikkor 600mm f/4D IF-ED + TC-17E"}, -{0x49,0x3C,0xA6,0xA6,0x30,0x30,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA522DA", "AF-S Nikkor 600mm f/4D IF-ED + TC-20E"}, -{0x4A,0x54,0x62,0x62,0x0C,0x0C,0x4D,0x02,0x00,0x00,0x00, "Nikon", "JAA332DA", "AF Nikkor 85mm f/1.4D IF"}, -{0x4B,0x3C,0xA0,0xA0,0x30,0x30,0x4E,0x02,0x07,0x00,0x00, "Nikon", "JAA523DA", "AF-S Nikkor 500mm f/4D IF-ED"}, -{0x4B,0x3C,0xA0,0xA0,0x30,0x30,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA523DA", "AF-S Nikkor 500mm f/4D IF-ED + TC-14E"}, -{0x4B,0x3C,0xA0,0xA0,0x30,0x30,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA523DA", "AF-S Nikkor 500mm f/4D IF-ED + TC-17E"}, -{0x4B,0x3C,0xA0,0xA0,0x30,0x30,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA523DA", "AF-S Nikkor 500mm f/4D IF-ED + TC-20E"}, -{0x4C,0x40,0x37,0x6E,0x2C,0x3C,0x4F,0x02,0x00,0x00,0x00, "Nikon", "JAA757DA", "AF Zoom-Nikkor 24-120mm f/3.5-5.6D IF"}, -{0x4D,0x40,0x3C,0x80,0x2C,0x3C,0x62,0x02,0x00,0x00,0x00, "Nikon", "JAA758DA", "AF Zoom-Nikkor 28-200mm f/3.5-5.6D IF"}, -{0x4E,0x48,0x72,0x72,0x18,0x18,0x51,0x02,0x00,0x00,0x00, "Nikon", "JAA329DA", "AF DC-Nikkor 135mm f/2D"}, -{0x4F,0x40,0x37,0x5C,0x2C,0x3C,0x53,0x06,0x00,0x00,0x00, "Nikon", "JBA701AA", "IX-Nikkor 24-70mm f/3.5-5.6"}, -{0x50,0x48,0x56,0x7C,0x30,0x3C,0x54,0x06,0x00,0x00,0x00, "Nikon", "JBA702AA", "IX-Nikkor 60-180mm f/4-5.6"}, -// "JBA703AC" "IX-Nikkor 20-60 mm f/3.5-5.6"; -//51 -//52 -{0x53,0x48,0x60,0x80,0x24,0x24,0x57,0x02,0x00,0x00,0x00, "Nikon", "JAA762DA", "AF Zoom-Nikkor 80-200mm f/2.8D ED"}, -{0x53,0x48,0x60,0x80,0x24,0x24,0x60,0x02,0x00,0x00,0x00, "Nikon", "JAA762DA", "AF Zoom-Nikkor 80-200mm f/2.8D ED"}, -{0x54,0x44,0x5C,0x7C,0x34,0x3C,0x58,0x02,0x00,0x00,0x00, "Nikon", "JAA763DA", "AF Zoom-Micro Nikkor 70-180mm f/4.5-5.6D ED"}, -//55 -{0x56,0x48,0x5C,0x8E,0x30,0x3C,0x5A,0x02,0x00,0x00,0x00, "Nikon", "JAA764DA", "AF Zoom-Nikkor 70-300mm f/4-5.6D ED"}, -//57 -//58 -{0x59,0x48,0x98,0x98,0x24,0x24,0x5D,0x02,0x07,0x00,0x00, "Nikon", "JAA524DA", "AF-S Nikkor 400mm f/2.8D IF-ED"}, -{0x59,0x48,0x98,0x98,0x24,0x24,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA524DA", "AF-S Nikkor 400mm f/2.8D IF-ED + TC-14E"}, -{0x59,0x48,0x98,0x98,0x24,0x24,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA524DA", "AF-S Nikkor 400mm f/2.8D IF-ED + TC-17E"}, -{0x59,0x48,0x98,0x98,0x24,0x24,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA524DA", "AF-S Nikkor 400mm f/2.8D IF-ED + TC-20E"}, -{0x5A,0x3C,0x3E,0x56,0x30,0x3C,0x5E,0x06,0x00,0x00,0x00, "Nikon", "JBA704AA", "IX-Nikkor 30-60mm f/4-5.6"}, -{0x5B,0x44,0x56,0x7C,0x34,0x3C,0x5F,0x06,0x00,0x00,0x00, "Nikon", "JBA705AA", "IX-Nikkor 60-180mm f/4.5-5.6"}, -// "JBA706AC" "IX-Nikkor 20-60 mm f/3.5-5.6N"; -//5C -{0x5D,0x48,0x3C,0x5C,0x24,0x24,0x63,0x02,0x01,0x00,0x00, "Nikon", "JAA767DA", "AF-S Zoom-Nikkor 28-70mm f/2.8D IF-ED"}, -{0x5E,0x48,0x60,0x80,0x24,0x24,0x64,0x02,0x03,0x00,0x00, "Nikon", "JAA765DA", "AF-S Zoom-Nikkor 80-200mm f/2.8D IF-ED"}, -{0x5F,0x40,0x3C,0x6A,0x2C,0x34,0x65,0x02,0x00,0x00,0x00, "Nikon", "JAA766DA", "AF Zoom-Nikkor 28-105mm f/3.5-4.5D IF"}, -{0x60,0x40,0x3C,0x60,0x2C,0x3C,0x66,0x02,0x00,0x00,0x00, "Nikon", "JAA769DA", "AF Zoom-Nikkor 28-80mm f/3.5-5.6D"}, -{0x61,0x44,0x5E,0x86,0x34,0x3C,0x67,0x02,0x00,0x00,0x00, "Nikon", "JAA768DA", "AF Zoom-Nikkor 75-240mm f/4.5-5.6D"}, -//62 69 -{0x63,0x48,0x2B,0x44,0x24,0x24,0x68,0x02,0x01,0x00,0x00, "Nikon", "JAA770DA", "AF-S Nikkor 17-35mm f/2.8D IF-ED"}, -{0x64,0x00,0x62,0x62,0x24,0x24,0x6A,0x02,0x40,0x00,0x00, "Nikon", "JAA628DA", "PC Micro-Nikkor 85mm f/2.8D"}, -{0x65,0x44,0x60,0x98,0x34,0x3C,0x6B,0x0A,0x00,0x00,0x00, "Nikon", "JAA771DA", "AF VR Zoom-Nikkor 80-400mm f/4.5-5.6D ED"}, -{0x66,0x40,0x2D,0x44,0x2C,0x34,0x6C,0x02,0x00,0x00,0x00, "Nikon", "JAA772DA", "AF Zoom-Nikkor 18-35mm f/3.5-4.5D IF-ED"}, -{0x67,0x48,0x37,0x62,0x24,0x30,0x6D,0x02,0x00,0x00,0x00, "Nikon", "JAA774DA", "AF Zoom-Nikkor 24-85mm f/2.8-4D IF"}, -{0x68,0x42,0x3C,0x60,0x2A,0x3C,0x6E,0x06,0x00,0x00,0x00, "Nikon", "JAA777DA", "AF Zoom-Nikkor 28-80mm f/3.3-5.6G"}, -{0x69,0x48,0x5C,0x8E,0x30,0x3C,0x6F,0x06,0x00,0x00,0x00, "Nikon", "JAA776DA", "AF Zoom-Nikkor 70-300mm f/4-5.6G"}, -{0x6A,0x48,0x8E,0x8E,0x30,0x30,0x70,0x02,0x03,0x00,0x00, "Nikon", "JAA334DA", "AF-S Nikkor 300mm f/4D IF-ED"}, -{0x6B,0x48,0x24,0x24,0x24,0x24,0x71,0x02,0x00,0x00,0x00, "Nikon", "JAA130DA", "AF Nikkor ED 14mm f/2.8D"}, -//6C 72 -{0x6D,0x48,0x8E,0x8E,0x24,0x24,0x73,0x02,0x03,0x00,0x00, "Nikon", "JAA335DA", "AF-S Nikkor 300mm f/2.8D IF-ED II"}, -{0x6E,0x48,0x98,0x98,0x24,0x24,0x74,0x02,0x03,0x00,0x00, "Nikon", "JAA525DA", "AF-S Nikkor 400mm f/2.8D IF-ED II"}, -{0x6F,0x3C,0xA0,0xA0,0x30,0x30,0x75,0x02,0x03,0x00,0x00, "Nikon", "JAA526DA", "AF-S Nikkor 500mm f/4D IF-ED II"}, -{0x70,0x3C,0xA6,0xA6,0x30,0x30,0x76,0x02,0x03,0x00,0x00, "Nikon", "JAA527DA", "AF-S Nikkor 600mm f/4D IF-ED II"}, -//71 -{0x72,0x48,0x4C,0x4C,0x24,0x24,0x77,0x00,0x00,0x00,0x00, "Nikon", "JAA012AA", "Nikkor 45mm f/2.8 P"}, -//73 -{0x74,0x40,0x37,0x62,0x2C,0x34,0x78,0x06,0x01,0x00,0x00, "Nikon", "JAA780DA", "AF-S Zoom-Nikkor 24-85mm f/3.5-4.5G IF-ED"}, -{0x75,0x40,0x3C,0x68,0x2C,0x3C,0x79,0x06,0x00,0x00,0x00, "Nikon", "JAA778DA", "AF Zoom-Nikkor 28-100mm f/3.5-5.6G"}, -{0x76,0x58,0x50,0x50,0x14,0x14,0x7A,0x02,0x00,0x00,0x00, "Nikon", "JAA013DA", "AF Nikkor 50mm f/1.8D"}, -{0x77,0x48,0x5C,0x80,0x24,0x24,0x7B,0x0E,0x03,0x00,0x00, "Nikon", "JAA781DA", "AF-S VR Zoom-Nikkor 70-200mm f/2.8G IF-ED"}, -{0x78,0x40,0x37,0x6E,0x2C,0x3C,0x7C,0x0E,0x01,0x00,0x00, "Nikon", "JAA782DA", "AF-S VR Zoom-Nikkor 24-120mm f/3.5-5.6G IF-ED"}, -{0x79,0x40,0x3C,0x80,0x2C,0x3C,0x7F,0x06,0x00,0x00,0x00, "Nikon", "JAA783DA", "AF Zoom-Nikkor 28-200mm f/3.5-5.6G IF-ED"}, -{0x7A,0x3C,0x1F,0x37,0x30,0x30,0x7E,0x06,0x01,0x01,0x00, "Nikon", "JAA784DA", "AF-S DX Zoom-Nikkor 12-24mm f/4G IF-ED"}, -{0x7B,0x48,0x80,0x98,0x30,0x30,0x80,0x0E,0x03,0x00,0x00, "Nikon", "JAA787DA", "AF-S VR Zoom-Nikkor 200-400mm f/4G IF-ED"}, -//7C 81 -{0x7D,0x48,0x2B,0x53,0x24,0x24,0x82,0x06,0x01,0x00,0x00, "Nikon", "JAA788DA", "AF-S DX Zoom-Nikkor 17-55mm f/2.8G IF-ED"}, -//7E 83 -{0x7F,0x40,0x2D,0x5C,0x2C,0x34,0x84,0x06,0x11,0x00,0x00, "Nikon", "JAA790DA", "AF-S DX Zoom-Nikkor 18-70mm f/3.5-4.5G IF-ED"}, -{0x80,0x48,0x1A,0x1A,0x24,0x24,0x85,0x06,0x00,0x00,0x00, "Nikon", "JAA629DA", "AF DX Fisheye-Nikkor 10.5mm f/2.8G ED"}, -{0x81,0x54,0x80,0x80,0x18,0x18,0x86,0x0E,0x03,0x00,0x00, "Nikon", "JAA336DA", "AF-S VR Nikkor 200mm f/2G IF-ED"}, -{0x82,0x48,0x8E,0x8E,0x24,0x24,0x87,0x0E,0x13,0x00,0x00, "Nikon", "JAA337DA", "AF-S VR Nikkor 300mm f/2.8G IF-ED"}, -{0x83,0x00,0xB0,0xB0,0x5A,0x5A,0x88,0x04,0x00,0x00,0x00, "Nikon", "", "FSA-L2, EDG 65, 800mm F13 G"}, -//84 -//85 -//86 -//87 -//88 -{0x89,0x3C,0x53,0x80,0x30,0x3C,0x8B,0x06,0x01,0x00,0x00, "Nikon", "JAA793DA", "AF-S DX Zoom-Nikkor 55-200mm f/4-5.6G ED"}, -{0x8A,0x54,0x6A,0x6A,0x24,0x24,0x8C,0x0E,0x53,0x00,0x00, "Nikon", "JAA630DA", "AF-S VR Micro-Nikkor 105mm f/2.8G IF-ED"}, -{0x8B,0x40,0x2D,0x80,0x2C,0x3C,0x8D,0x0E,0x01,0x00,0x00, "Nikon", "JAA794DA", "AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED"}, -{0x8B,0x40,0x2D,0x80,0x2C,0x3C,0xFD,0x0E,0x01,0x01,0x00, "Nikon", "JAA794DA", "AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED"}, -{0x8B,0x40,0x2D,0x80,0x2C,0x3C,0xFD,0x0E,0x01,0x02,0x00, "Nikon", "JAA813DA", "AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED II"}, -{0x8C,0x40,0x2D,0x53,0x2C,0x3C,0x8E,0x06,0x01,0x00,0x00, "Nikon", "JAA792DA", "AF-S DX Zoom-Nikkor 18-55mm f/3.5-5.6G ED"}, -{0x8D,0x44,0x5C,0x8E,0x34,0x3C,0x8F,0x0E,0x31,0x00,0x00, "Nikon", "JAA795DA", "AF-S VR Zoom-Nikkor 70-300mm f/4.5-5.6G IF-ED"}, -//8E 90 -{0x8F,0x40,0x2D,0x72,0x2C,0x3C,0x91,0x06,0x01,0x00,0x00, "Nikon", "JAA796DA", "AF-S DX Zoom-Nikkor 18-135mm f/3.5-5.6G IF-ED"}, -{0x90,0x3B,0x53,0x80,0x30,0x3C,0x92,0x0E,0x01,0x00,0x00, "Nikon", "JAA798DA", "AF-S DX VR Zoom-Nikkor 55-200mm f/4-5.6G IF-ED"}, -//91 93 -{0x92,0x48,0x24,0x37,0x24,0x24,0x94,0x06,0x01,0x00,0x00, "Nikon", "JAA801DA", "AF-S Zoom-Nikkor 14-24mm f/2.8G ED"}, -{0x93,0x48,0x37,0x5C,0x24,0x24,0x95,0x06,0x01,0x00,0x00, "Nikon", "JAA802DA", "AF-S Zoom-Nikkor 24-70mm f/2.8G ED"}, -{0x94,0x40,0x2D,0x53,0x2C,0x3C,0x96,0x06,0x01,0x00,0x00, "Nikon", "JAA797DA", "AF-S DX Zoom-Nikkor 18-55mm f/3.5-5.6G ED II"}, -{0x95,0x4C,0x37,0x37,0x2C,0x2C,0x97,0x02,0x00,0x00,0x00, "Nikon", "JAA631DA", "PC-E Nikkor 24mm f/3.5D ED"}, -{0x95,0x00,0x37,0x37,0x2C,0x2C,0x97,0x06,0x00,0x00,0x00, "Nikon", "JAA631DA", "PC-E Nikkor 24mm f/3.5D ED"}, -{0x96,0x48,0x98,0x98,0x24,0x24,0x98,0x0E,0x13,0x00,0x00, "Nikon", "JAA528DA", "AF-S VR Nikkor 400mm f/2.8G ED"}, -{0x97,0x3C,0xA0,0xA0,0x30,0x30,0x99,0x0E,0x13,0x00,0x00, "Nikon", "JAA529DA", "AF-S VR Nikkor 500mm f/4G ED"}, -{0x98,0x3C,0xA6,0xA6,0x30,0x30,0x9A,0x0E,0x13,0x00,0x00, "Nikon", "JAA530DA", "AF-S VR Nikkor 600mm f/4G ED"}, -{0x99,0x40,0x29,0x62,0x2C,0x3C,0x9B,0x0E,0x01,0x00,0x00, "Nikon", "JAA800DA", "AF-S DX VR Zoom-Nikkor 16-85mm f/3.5-5.6G ED"}, -{0x9A,0x40,0x2D,0x53,0x2C,0x3C,0x9C,0x0E,0x01,0x00,0x00, "Nikon", "JAA803DA", "AF-S DX VR Zoom-Nikkor 18-55mm f/3.5-5.6G"}, -{0x9B,0x54,0x4C,0x4C,0x24,0x24,0x9D,0x02,0x00,0x00,0x00, "Nikon", "JAA633DA", "PC-E Micro Nikkor 45mm f/2.8D ED"}, -{0x9B,0x00,0x4C,0x4C,0x24,0x24,0x9D,0x06,0x00,0x00,0x00, "Nikon", "JAA633DA", "PC-E Micro Nikkor 45mm f/2.8D ED"}, -{0x9C,0x54,0x56,0x56,0x24,0x24,0x9E,0x06,0x41,0x00,0x00, "Nikon", "JAA632DA", "AF-S Micro Nikkor 60mm f/2.8G ED"}, -{0x9D,0x54,0x62,0x62,0x24,0x24,0x9F,0x02,0x40,0x00,0x00, "Nikon", "JAA634DA", "PC-E Micro Nikkor 85mm f/2.8D"}, -{0x9D,0x00,0x62,0x62,0x24,0x24,0x9F,0x06,0x40,0x00,0x00, "Nikon", "JAA634DA", "PC-E Micro Nikkor 85mm f/2.8D"}, -{0x9E,0x40,0x2D,0x6A,0x2C,0x3C,0xA0,0x0E,0x01,0x00,0x00, "Nikon", "JAA805DA", "AF-S DX VR Zoom-Nikkor 18-105mm f/3.5-5.6G ED"}, -{0x9F,0x58,0x44,0x44,0x14,0x14,0xA1,0x06,0x01,0x00,0x00, "Nikon", "JAA132DA", "AF-S DX Nikkor 35mm f/1.8G"}, -{0xA0,0x54,0x50,0x50,0x0C,0x0C,0xA2,0x06,0x01,0x00,0x00, "Nikon", "JAA014DA", "AF-S Nikkor 50mm f/1.4G"}, -{0xA1,0x40,0x18,0x37,0x2C,0x34,0xA3,0x06,0x01,0x00,0x00, "Nikon", "JAA804DA", "AF-S DX Nikkor 10-24mm f/3.5-4.5G ED"}, -{0xA2,0x48,0x5C,0x80,0x24,0x24,0xA4,0x0E,0x13,0x00,0x00, "Nikon", "JAA807DA", "AF-S Nikkor 70-200mm f/2.8G ED VR II"}, -{0xA3,0x3C,0x29,0x44,0x30,0x30,0xA5,0x0E,0x01,0x00,0x00, "Nikon", "JAA806DA", "AF-S Nikkor 16-35mm f/4G ED VR"}, -{0xA4,0x54,0x37,0x37,0x0C,0x0C,0xA6,0x06,0x01,0x00,0x00, "Nikon", "JAA131DA", "AF-S Nikkor 24mm f/1.4G ED"}, -{0xA5,0x40,0x3C,0x8E,0x2C,0x3C,0xA7,0x0E,0x01,0x00,0x00, "Nikon", "JAA808DA", "AF-S Nikkor 28-300mm f/3.5-5.6G ED VR"}, -{0xA6,0x48,0x8E,0x8E,0x24,0x24,0xA8,0x0E,0x13,0x00,0x00, "Nikon", "JAA339DA", "AF-S VR Nikkor 300mm f/2.8G IF-ED II"}, -{0xA7,0x4B,0x62,0x62,0x2C,0x2C,0xA9,0x0E,0x41,0x00,0x00, "Nikon", "JAA637DA", "AF-S DX Micro Nikkor 85mm f/3.5G ED VR"}, -{0xA8,0x48,0x80,0x98,0x30,0x30,0xAA,0x0E,0x03,0x00,0x00, "Nikon", "JAA809DA", "AF-S VR Zoom-Nikkor 200-400mm f/4G IF-ED II"}, -{0xA9,0x54,0x80,0x80,0x18,0x18,0xAB,0x0E,0x13,0x00,0x00, "Nikon", "JAA340DA", "AF-S Nikkor 200mm f/2G ED VR II"}, -{0xAA,0x3C,0x37,0x6E,0x30,0x30,0xAC,0x0E,0x01,0x00,0x00, "Nikon", "JAA811DA", "AF-S Nikkor 24-120mm f/4G ED VR"}, -//AB AD -{0xAC,0x38,0x53,0x8E,0x34,0x3C,0xAE,0x0E,0x01,0x00,0x00, "Nikon", "JAA814DA", "AF-S DX VR Nikkor 55-300mm 4.5-5.6G ED"}, -//AD AF -{0xAE,0x54,0x62,0x62,0x0C,0x0C,0xB0,0x06,0x01,0x00,0x00, "Nikon", "JAA338DA", "AF-S Nikkor 85mm f/1.4G"}, -{0xAF,0x54,0x44,0x44,0x0C,0x0C,0xB1,0x06,0x01,0x00,0x00, "Nikon", "JAA134DA", "AF-S Nikkor 35mm f/1.4G"}, -{0xB0,0x4C,0x50,0x50,0x14,0x14,0xB2,0x06,0x01,0x00,0x00, "Nikon", "JAA015DA", "AF-S Nikkor 50mm f/1.8G"}, -{0xB1,0x48,0x48,0x48,0x24,0x24,0xB3,0x06,0x01,0x00,0x00, "Nikon", "JAA638DA", "AF-S DX Micro Nikkor 40mm f/2.8G"}, -//B2 -{0xB3,0x4C,0x62,0x62,0x14,0x14,0xB5,0x06,0x01,0x00,0x00, "Nikon", "JAA341DA", "AF-S Nikkor 85mm f/1.8G"}, -// -{0x01,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00, "Nikon", "JAA90701", "TC-16A"}, -{0x01,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00, "Nikon", "JAA90701", "TC-16A"}, -// -//------------------------------------------------------------------------------ -// Sigma lenses by focal length, first fixed then zoom lenses -//------------------------------------------------------------------------------ -// -{0xFE,0x47,0x00,0x00,0x24,0x24,0x4B,0x06,0x01,0x00,0x05, "Sigma", "486556", "4.5mm F2.8 EX DC HSM Circular Fisheye"}, -{0x26,0x48,0x11,0x11,0x30,0x30,0x1C,0x02,0x00,0x00,0x05, "Sigma", "483", "8mm F4 EX Circular Fisheye"}, -{0x79,0x40,0x11,0x11,0x2C,0x2C,0x1C,0x06,0x00,0x00,0x05, "Sigma", "485597", "8mm F3.5 EX Circular Fisheye"}, -{0xDC,0x48,0x19,0x19,0x24,0x24,0x4B,0x06,0x01,0x00,0x05, "Sigma", "477554", "10mm F2.8 EX DC HSM Fisheye"}, -{0x02,0x3F,0x24,0x24,0x2C,0x2C,0x02,0x00,0x00,0x00,0x05, "Sigma", "468", "14mm F3.5"}, -{0x48,0x48,0x24,0x24,0x24,0x24,0x4B,0x02,0x01,0x00,0x05, "Sigma", "", "14mm F2.8 EX Aspherical HSM"}, -{0x26,0x48,0x27,0x27,0x24,0x24,0x1C,0x02,0x00,0x00,0x05, "Sigma", "476441", "15mm F2.8 EX Diagonal Fisheye"}, -//M "Sigma" "410" "18mm F3.5"; -{0x26,0x58,0x31,0x31,0x14,0x14,0x1C,0x02,0x00,0x00,0x05, "Sigma", "411442", "20mm F1.8 EX DG Aspherical RF"}, -{0x26,0x58,0x37,0x37,0x14,0x14,0x1C,0x02,0x00,0x00,0x05, "Sigma", "432447", "24mm F1.8 EX DG Aspherical Macro"}, -{0xE1,0x58,0x37,0x37,0x14,0x14,0x1C,0x02,0x00,0x00,0x05, "Sigma", "432447", "24mm F1.8 EX DG Aspherical Macro"}, -{0x02,0x46,0x37,0x37,0x25,0x25,0x02,0x00,0x00,0x00,0x05, "Sigma", "438", "24mm F2.8 Super Wide II Macro"}, -{0x26,0x58,0x3C,0x3C,0x14,0x14,0x1C,0x02,0x00,0x00,0x05, "Sigma", "440442", "28mm F1.8 EX DG Aspherical Macro"}, -{0x48,0x54,0x3E,0x3E,0x0C,0x0C,0x4B,0x06,0x01,0x00,0x05, "Sigma", "477554", "30mm F1.4 EX DC HSM"}, -{0xF8,0x54,0x3E,0x3E,0x0C,0x0C,0x4B,0x06,0x01,0x00,0x05, "Sigma", "477554", "30mm F1.4 EX DC HSM"}, -{0xDE,0x54,0x50,0x50,0x0C,0x0C,0x4B,0x06,0x01,0x00,0x05, "Sigma", "310554", "50mm F1.4 EX DG HSM"}, -{0x02,0x48,0x50,0x50,0x24,0x24,0x02,0x00,0x00,0x00,0x05, "Sigma", "", "Macro 50mm F2.8"}, -{0x32,0x54,0x50,0x50,0x24,0x24,0x35,0x02,0x00,0x00,0x05, "Sigma", "346447", "Macro 50mm F2.8 EX DG"}, -{0xE3,0x54,0x50,0x50,0x24,0x24,0x35,0x02,0x00,0x00,0x05, "Sigma", "", "Macro 50mm F2.8 EX DG"}, -{0x79,0x48,0x5C,0x5C,0x24,0x24,0x1C,0x06,0x00,0x00,0x05, "Sigma", "270599", "Macro 70mm F2.8 EX DG"}, -{0x9B,0x54,0x62,0x62,0x0C,0x0C,0x4B,0x06,0x00,0x00,0x05, "Sigma", "", "85mm F1.4 EX DG HSM"}, -{0x02,0x48,0x65,0x65,0x24,0x24,0x02,0x00,0x00,0x00,0x05, "Sigma", "", "Macro 90mm F2.8"}, -{0x32,0x54,0x6A,0x6A,0x24,0x24,0x35,0x02,0x00,0x02,0x05, "Sigma", "256", "Macro 105mm F2.8 EX DG"}, -{0xE5,0x54,0x6A,0x6A,0x24,0x24,0x35,0x02,0x40,0x00,0x05, "Sigma", "257446", "Macro 105mm F2.8 EX DG"}, -{0x48,0x48,0x76,0x76,0x24,0x24,0x4B,0x06,0x43,0x00,0x05, "Sigma", "104559", "APO Macro 150mm F2.8 EX DG HSM"}, -{0xF5,0x48,0x76,0x76,0x24,0x24,0x4B,0x06,0x43,0x00,0x05, "Sigma", "104559", "APO Macro 150mm F2.8 EX DG HSM"}, -{0x48,0x4C,0x7C,0x7C,0x2C,0x2C,0x4B,0x02,0x43,0x00,0x05, "Sigma", "", "APO Macro 180mm F3.5 EX DG HSM"}, -{0x48,0x4C,0x7D,0x7D,0x2C,0x2C,0x4B,0x02,0x43,0x00,0x05, "Sigma", "105556", "APO Macro 180mm F3.5 EX DG HSM"}, -//M "Sigma" "" "APO 300mm F2.8"; -{0x48,0x54,0x8E,0x8E,0x24,0x24,0x4B,0x02,0x03,0x00,0x05, "Sigma", "", "APO 300mm F2.8 EX DG HSM"}, -{0xFB,0x54,0x8E,0x8E,0x24,0x24,0x4B,0x02,0x13,0x00,0x05, "Sigma", "195557", "APO 300mm F2.8 EX DG HSM"}, -{0x26,0x48,0x8E,0x8E,0x30,0x30,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "APO Tele Macro 300mm F4"}, -{0x02,0x2F,0x98,0x98,0x3D,0x3D,0x02,0x00,0x00,0x00,0x05, "Sigma", "", "APO 400mm F5.6"}, -{0x26,0x3C,0x98,0x98,0x3C,0x3C,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "APO Tele Macro 400mm F5.6"}, -{0x02,0x37,0xA0,0xA0,0x34,0x34,0x02,0x00,0x00,0x00,0x05, "Sigma", "", "APO 500mm F4.5"}, -{0x48,0x44,0xA0,0xA0,0x34,0x34,0x4B,0x02,0x03,0x00,0x05, "Sigma", "", "APO 500mm F4.5 EX HSM"}, -{0xF1,0x44,0xA0,0xA0,0x34,0x34,0x4B,0x02,0x03,0x00,0x05, "Sigma", "184551", "APO 500mm F4.5 EX DG HSM"}, -{0x02,0x34,0xA0,0xA0,0x44,0x44,0x02,0x00,0x00,0x00,0x05, "Sigma", "", "APO 500mm F7.2"}, -{0x02,0x3C,0xB0,0xB0,0x3C,0x3C,0x02,0x00,0x00,0x00,0x05, "Sigma", "", "APO 800mm F5.6"}, -{0x48,0x3C,0xB0,0xB0,0x3C,0x3C,0x4B,0x02,0x03,0x00,0x05, "Sigma", "", "APO 800mm F5.6 EX HSM"}, -//M "Sigma" "152550" "APO 800mm F5.6 EX DG HSM"; -//M2 B8 B8 49 49 02" "00" "00" "00" "05" "Sigma" "" "APO 1000mm F8.0"; -// -{0x9E,0x38,0x11,0x29,0x34,0x3C,0x4B,0x06,0x01,0x00,0x05, "Sigma", "", "8-16mm F4.5-5.6 DC HSM"}, -{0xA1,0x41,0x19,0x31,0x2C,0x2C,0x4B,0x06,0x01,0x00,0x05, "Sigma", "", "10-20mm F3.5 EX DC HSM"}, -{0x48,0x3C,0x19,0x31,0x30,0x3C,0x4B,0x06,0x01,0x00,0x05, "Sigma", "201555", "10-20mm F4-5.6 EX DC HSM"}, -{0xF9,0x3C,0x19,0x31,0x30,0x3C,0x4B,0x06,0x01,0x00,0x05, "Sigma", "201555", "10-20mm F4-5.6 EX DC HSM"}, -{0x48,0x38,0x1F,0x37,0x34,0x3C,0x4B,0x06,0x00,0x00,0x05, "Sigma", "200558", "12-24mm F4.5-5.6 EX DG Aspherical HSM"}, -{0xF0,0x38,0x1F,0x37,0x34,0x3C,0x4B,0x06,0x00,0x00,0x05, "Sigma", "200558", "12-24mm F4.5-5.6 EX DG Aspherical HSM"}, -{0x26,0x40,0x27,0x3F,0x2C,0x34,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "15-30mm F3.5-4.5 EX DG Aspherical DF"}, -{0x48,0x48,0x2B,0x44,0x24,0x30,0x4B,0x06,0x00,0x00,0x05, "Sigma", "", "17-35mm F2.8-4 EX DG Aspherical HSM"}, -{0x26,0x54,0x2B,0x44,0x24,0x30,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "17-35mm F2.8-4 EX Aspherical"}, -{0x9D,0x48,0x2B,0x50,0x24,0x24,0x4B,0x0E,0x00,0x00,0x05, "Sigma", "", "17-50mm F2.8 EX DC OS HSM"}, -{0x7A,0x47,0x2B,0x5C,0x24,0x34,0x4B,0x06,0x00,0x00,0x05, "Sigma", "689599", "17-70mm F2.8-4.5 DC Macro Asp. IF HSM"}, -{0x7A,0x48,0x2B,0x5C,0x24,0x34,0x4B,0x06,0x00,0x00,0x05, "Sigma", "689599", "17-70mm F2.8-4.5 DC Macro Asp. IF HSM"}, -{0x7F,0x48,0x2B,0x5C,0x24,0x34,0x1C,0x06,0x00,0x00,0x05, "Sigma", "", "17-70mm F2.8-4.5 DC Macro Asp. IF"}, -{0x26,0x40,0x2D,0x44,0x2B,0x34,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "18-35 F3.5-4.5 Aspherical"}, -{0x26,0x48,0x2D,0x50,0x24,0x24,0x1C,0x06,0x00,0x00,0x05, "Sigma", "", "18-50mm F2.8 EX DC"}, -{0x7F,0x48,0x2D,0x50,0x24,0x24,0x1C,0x06,0x00,0x00,0x05, "Sigma", "", "18-50mm F2.8 EX DC Macro"}, -{0x7A,0x48,0x2D,0x50,0x24,0x24,0x4B,0x06,0x01,0x00,0x05, "Sigma", "582593", "18-50mm F2.8 EX DC Macro"}, -{0xF6,0x48,0x2D,0x50,0x24,0x24,0x4B,0x06,0x01,0x00,0x05, "Sigma", "582593", "18-50mm F2.8 EX DC Macro"}, -{0xA4,0x47,0x2D,0x50,0x24,0x34,0x4B,0x0E,0x01,0x00,0x05, "Sigma", "", "18-50mm F2.8-4.5 DC OS HSM"}, -{0x26,0x40,0x2D,0x50,0x2C,0x3C,0x1C,0x06,0x00,0x00,0x05, "Sigma", "", "18-50mm F3.5-5.6 DC"}, -{0x7A,0x40,0x2D,0x50,0x2C,0x3C,0x4B,0x06,0x01,0x00,0x05, "Sigma", "551551", "18-50mm F3.5-5.6 DC HSM"}, -{0x26,0x40,0x2D,0x70,0x2B,0x3C,0x1C,0x06,0x00,0x00,0x05, "Sigma", "", "18-125mm F3.5-5.6 DC"}, -{0xCD,0x3D,0x2D,0x70,0x2E,0x3C,0x4B,0x0E,0x01,0x00,0x05, "Sigma", "853556", "18-125mm F3.8-5.6 DC OS HSM"}, -{0x26,0x40,0x2D,0x80,0x2C,0x40,0x1C,0x06,0x00,0x00,0x05, "Sigma", "777555", "18-200mm F3.5-6.3 DC"}, -{0x7A,0x40,0x2D,0x80,0x2C,0x40,0x4B,0x0E,0x01,0x00,0x05, "Sigma", "888558", "18-200mm F3.5-6.3 DC OS HSM"}, -{0xED,0x40,0x2D,0x80,0x2C,0x40,0x4B,0x0E,0x01,0x00,0x05, "Sigma", "888558", "18-200mm F3.5-6.3 DC OS HSM"}, -{0xA5,0x40,0x2D,0x88,0x2C,0x40,0x4B,0x0E,0x01,0x00,0x05, "Sigma", "", "18-250mm F3.5-6.3 DC OS HSM"}, -{0x26,0x48,0x31,0x49,0x24,0x24,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "20-40mm F2.8"}, -{0x26,0x48,0x37,0x56,0x24,0x24,0x1C,0x02,0x00,0x00,0x05, "Sigma", "547448", "24-60mm F2.8 EX DG"}, -{0xB6,0x48,0x37,0x56,0x24,0x24,0x1C,0x02,0x00,0x00,0x05, "Sigma", "547448", "24-60mm F2.8 EX DG"}, -{0xA6,0x48,0x37,0x5C,0x24,0x24,0x4B,0x06,0x01,0x00,0x05, "Sigma", "571559", "24-70mm F2.8 IF EX DG HSM"}, -{0x26,0x54,0x37,0x5C,0x24,0x24,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "24-70mm F2.8 EX DG Macro"}, -{0x67,0x54,0x37,0x5C,0x24,0x24,0x1C,0x02,0x00,0x00,0x05, "Sigma", "548445", "24-70mm F2.8 EX DG Macro"}, -{0xE9,0x54,0x37,0x5C,0x24,0x24,0x1C,0x02,0x00,0x00,0x05, "Sigma", "548445", "24-70mm F2.8 EX DG Macro"}, -{0x26,0x40,0x37,0x5C,0x2C,0x3C,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "24-70mm F3.5-5.6 Aspherical HF"}, -{0x26,0x54,0x37,0x73,0x24,0x34,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "24-135mm F2.8-4.5"}, -{0x02,0x46,0x3C,0x5C,0x25,0x25,0x02,0x00,0x00,0x00,0x05, "Sigma", "", "28-70mm F2.8"}, -{0x26,0x54,0x3C,0x5C,0x24,0x24,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "28-70mm F2.8 EX"}, -{0x26,0x48,0x3C,0x5C,0x24,0x24,0x1C,0x06,0x00,0x00,0x05, "Sigma", "549442", "28-70mm F2.8 EX DG"}, -{0x26,0x48,0x3C,0x5C,0x24,0x30,0x1C,0x02,0x00,0x00,0x05, "Sigma", "634445", "28-70mm F2.8-4 DG"}, -{0x02,0x3F,0x3C,0x5C,0x2D,0x35,0x02,0x00,0x00,0x00,0x05, "Sigma", "", "28-70mm F3.5-4.5 UC"}, -{0x26,0x40,0x3C,0x60,0x2C,0x3C,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "28-80mm F3.5-5.6 Mini Zoom Macro II Aspherical"}, -{0x26,0x40,0x3C,0x65,0x2C,0x3C,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "28-90mm F3.5-5.6 Macro"}, -{0x26,0x48,0x3C,0x6A,0x24,0x30,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "28-105mm F2.8-4 Aspherical"}, -{0x26,0x3E,0x3C,0x6A,0x2E,0x3C,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "28-105mm F3.8-5.6 UC-III Aspherical IF"}, -{0x26,0x40,0x3C,0x80,0x2C,0x3C,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "28-200mm F3.5-5.6 Compact Aspherical Hyperzoom Macro"}, -{0x26,0x40,0x3C,0x80,0x2B,0x3C,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "28-200mm F3.5-5.6 Compact Aspherical Hyperzoom Macro"}, -{0x26,0x3D,0x3C,0x80,0x2F,0x3D,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "28-300mm F3.8-5.6 Aspherical"}, -{0x26,0x41,0x3C,0x8E,0x2C,0x40,0x1C,0x02,0x00,0x00,0x05, "Sigma", "795443", "28-300mm F3.5-6.3 DG Macro"}, -{0xE6,0x41,0x3C,0x8E,0x2C,0x40,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "28-300mm F3.5-6.3 DG Macro"}, -{0x26,0x40,0x3C,0x8E,0x2C,0x40,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "28-300mm F3.5-6.3 Macro"}, -{0x02,0x3B,0x44,0x61,0x30,0x3D,0x02,0x00,0x00,0x00,0x05, "Sigma", "", "35-80mm F4-5.6"}, -{0x02,0x40,0x44,0x73,0x2B,0x36,0x02,0x00,0x00,0x00,0x05, "Sigma", "", "35-135mm F3.5-4.5 a"}, -{0x7A,0x47,0x50,0x76,0x24,0x24,0x4B,0x06,0x03,0x00,0x05, "Sigma", "", "50-150mm F2.8 EX APO DC HSM"}, -{0xFD,0x47,0x50,0x76,0x24,0x24,0x4B,0x06,0x03,0x00,0x05, "Sigma", "691554", "50-150mm F2.8 EX APO DC HSM II"}, -{0x48,0x3C,0x50,0xA0,0x30,0x40,0x4B,0x02,0x03,0x00,0x05, "Sigma", "736552", "APO 50-500mm F4-6.3 EX HSM"}, -{0x9F,0x37,0x50,0xA0,0x34,0x40,0x4B,0x0E,0x03,0x00,0x05, "Sigma", "", "50-500mm F4.5-6.3 APO DG OS HSM"}, -//M "Sigma" "686550" "50-200mm F4-5.6 DC OS HSM"; -{0x26,0x3C,0x54,0x80,0x30,0x3C,0x1C,0x06,0x00,0x00,0x05, "Sigma", "", "55-200mm F4-5.6 DC"}, -{0x7A,0x3B,0x53,0x80,0x30,0x3C,0x4B,0x06,0x01,0x00,0x05, "Sigma", "", "55-200mm F4-5.6 DC HSM"}, -{0x48,0x54,0x5C,0x80,0x24,0x24,0x4B,0x02,0x00,0x00,0x05, "Sigma", "", "70-200mm F2.8 EX APO IF HSM"}, -{0x7A,0x48,0x5C,0x80,0x24,0x24,0x4B,0x06,0x03,0x00,0x05, "Sigma", "", "70-200mm F2.8 EX APO DG Macro HSM II"}, -{0xEE,0x48,0x5C,0x80,0x24,0x24,0x4B,0x06,0x03,0x00,0x05, "Sigma", "579555", "70-200mm F2.8 EX APO DG Macro HSM II"}, -{0x9C,0x48,0x5C,0x80,0x24,0x24,0x4B,0x0E,0x03,0x00,0x05, "Sigma", "", "70-200mm F2.8 EX DG OS HSM"}, -{0x02,0x46,0x5C,0x82,0x25,0x25,0x02,0x00,0x00,0x00,0x05, "Sigma", "", "70-210mm F2.8 APO"}, -{0x26,0x3C,0x5C,0x82,0x30,0x3C,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "70-210mm F4-5.6 UC-II"}, -{0x26,0x3C,0x5C,0x8E,0x30,0x3C,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "70-300mm F4-5.6 DG Macro"}, -{0x56,0x3C,0x5C,0x8E,0x30,0x3C,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "70-300mm F4-5.6 APO Macro Super II"}, -{0xE0,0x3C,0x5C,0x8E,0x30,0x3C,0x4B,0x06,0x00,0x00,0x05, "Sigma", "508555", "APO 70-300mm F4-5.6 DG Macro"}, -{0xA3,0x3C,0x5C,0x8E,0x30,0x3C,0x4B,0x0E,0x00,0x00,0x05, "Sigma", "572556", "70-300mm F4-5.6 DG OS"}, -{0x02,0x37,0x5E,0x8E,0x35,0x3D,0x02,0x00,0x00,0x00,0x05, "Sigma", "", "75-300mm F4.5-5.6 APO"}, -{0x02,0x3A,0x5E,0x8E,0x32,0x3D,0x02,0x00,0x00,0x00,0x05, "Sigma", "", "75-300mm F4.0-5.6"}, -{0x77,0x44,0x61,0x98,0x34,0x3C,0x7B,0x0E,0x03,0x00,0x05, "Sigma", "", "80-400mm f4.5-5.6 EX OS"}, -{0x48,0x48,0x68,0x8E,0x30,0x30,0x4B,0x02,0x03,0x00,0x05, "Sigma", "134556", "APO 100-300mm F4 EX IF HSM"}, -{0xF3,0x48,0x68,0x8E,0x30,0x30,0x4B,0x02,0x13,0x00,0x05, "Sigma", "134556", "APO 100-300mm F4 EX IF HSM"}, -{0x48,0x54,0x6F,0x8E,0x24,0x24,0x4B,0x02,0x03,0x00,0x05, "Sigma", "", "APO 120-300mm F2.8 EX DG HSM"}, -{0x7A,0x54,0x6E,0x8E,0x24,0x24,0x4B,0x02,0x03,0x00,0x05, "Sigma", "135553", "APO 120-300mm F2.8 EX DG HSM"}, -{0xFA,0x54,0x6E,0x8E,0x24,0x24,0x4B,0x02,0x03,0x00,0x05, "Sigma", "135553", "APO 120-300mm F2.8 EX DG HSM"}, -{0xCF,0x38,0x6E,0x98,0x34,0x3C,0x4B,0x0E,0x03,0x00,0x05, "Sigma", "728557", "APO 120-400mm F4.5-5.6 DG OS HSM"}, -{0x26,0x44,0x73,0x98,0x34,0x3C,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "135-400mm F4.5-5.6 APO Aspherical"}, -{0xCE,0x34,0x76,0xA0,0x38,0x40,0x4B,0x0E,0x03,0x00,0x05, "Sigma", "737559", "APO 150-500mm F5-6.3 DG OS HSM"}, -{0x26,0x40,0x7B,0xA0,0x34,0x40,0x1C,0x02,0x00,0x00,0x05, "Sigma", "", "APO 170-500mm F5-6.3 Aspherical RF"}, -{0xA7,0x49,0x80,0xA0,0x24,0x24,0x4B,0x06,0x03,0x00,0x05, "Sigma", "", "APO 200-500mm F2.8 EX DG"}, -{0x48,0x3C,0x8E,0xB0,0x3C,0x3C,0x4B,0x02,0x03,0x00,0x05, "Sigma", "595555", "APO 300-800mm F5.6 EX DG HSM"}, -// -//------------------------------------------------------------------------------ -// Tamron lenses by focal length, first fixed then zoom lenses -//------------------------------------------------------------------------------ -// -{0x00,0x47,0x25,0x25,0x24,0x24,0x00,0x02,0x00,0x00,0x02, "Tamron", "69E", "SP AF 14mm F/2.8 Aspherical (IF)"}, -{0xF4,0x54,0x56,0x56,0x18,0x18,0x84,0x06,0x01,0x00,0x02, "Tamron", "G005", "SP AF 60mm F/2 Di II LD (IF) Macro 1:1"}, -{0x1E,0x5D,0x64,0x64,0x20,0x20,0x13,0x00,0x40,0x00,0x02, "Tamron", "52E", "SP AF 90mm F/2.5"}, -{0x20,0x5A,0x64,0x64,0x20,0x20,0x14,0x00,0x40,0x00,0x02, "Tamron", "152E", "SP AF 90mm F/2.5 Macro"}, -{0x22,0x53,0x64,0x64,0x24,0x24,0xE0,0x02,0x40,0x00,0x02, "Tamron", "72E", "SP AF 90mm F/2.8 Macro 1:1"}, -{0x32,0x53,0x64,0x64,0x24,0x24,0x35,0x02,0x40,0x01,0x02, "Tamron", "172E", "SP AF 90mm F/2.8 Macro 1:1"}, -{0x32,0x53,0x64,0x64,0x24,0x24,0x35,0x02,0x40,0x02,0x02, "Tamron", "272E", "SP AF 90mm F/2.8 Di Macro 1:1"}, -{0xF8,0x55,0x64,0x64,0x24,0x24,0x84,0x06,0x41,0x00,0x02, "Tamron", "272NII", "SP AF 90mm F/2.8 Di Macro 1:1"}, -{0xF8,0x54,0x64,0x64,0x24,0x24,0xDF,0x06,0x41,0x00,0x02, "Tamron", "272NII", "SP AF 90mm F/2.8 Di Macro 1:1"}, -{0x00,0x4C,0x7C,0x7C,0x2C,0x2C,0x00,0x02,0x00,0x00,0x02, "Tamron", "B01", "SP AF 180mm F/3.5 Di Model"}, -{0x21,0x56,0x8E,0x8E,0x24,0x24,0x14,0x00,0x00,0x00,0x02, "Tamron", "60E", "SP AF 300mm F/2.8 LD-IF"}, -{0x27,0x54,0x8E,0x8E,0x24,0x24,0x1D,0x02,0x00,0x00,0x02, "Tamron", "360E", "SP AF 300mm F/2.8 LD-IF"}, -// -{0xF6,0x3F,0x18,0x37,0x2C,0x34,0x84,0x06,0x01,0x00,0x02, "Tamron", "B001", "SP AF 10-24mm F/3.5-4.5 Di II LD Aspherical (IF)"}, -{0x00,0x36,0x1C,0x2D,0x34,0x3C,0x00,0x06,0x00,0x00,0x02, "Tamron", "A13", "SP AF 11-18mm F/4.5-5.6 Di II LD Aspherical (IF)"}, -{0x07,0x46,0x2B,0x44,0x24,0x30,0x03,0x02,0x00,0x00,0x02, "Tamron", "A05", "SP AF 17-35mm F/2.8-4 Di LD Aspherical (IF)"}, -{0x00,0x53,0x2B,0x50,0x24,0x24,0x00,0x06,0x00,0x00,0x02, "Tamron", "A16", "SP AF 17-50mm F/2.8 XR Di II LD Aspherical (IF)"}, -{0x00,0x54,0x2B,0x50,0x24,0x24,0x00,0x06,0x01,0x00,0x02, "Tamron", "A16NII", "SP AF 17-50mm F/2.8 XR Di II LD Aspherical (IF)"}, -{0xFB,0x54,0x2B,0x50,0x24,0x24,0x84,0x06,0x01,0x00,0x02, "Tamron", "A16NII", "SP AF 17-50mm F/2.8 XR Di II LD Aspherical (IF)"}, -{0xF3,0x54,0x2B,0x50,0x24,0x24,0x84,0x0E,0x01,0x00,0x02, "Tamron", "B005", "SP AF 17-50mm F/2.8 XR Di II VC LD Aspherical (IF)"}, -{0x00,0x3F,0x2D,0x80,0x2B,0x40,0x00,0x06,0x00,0x00,0x02, "Tamron", "A14", "AF 18-200mm F/3.5-6.3 XR Di II LD Aspherical (IF)"}, -{0x00,0x3F,0x2D,0x80,0x2C,0x40,0x00,0x06,0x00,0x00,0x02, "Tamron", "A14", "AF 18-200mm F/3.5-6.3 XR Di II LD Aspherical (IF) Macro"}, -{0x00,0x40,0x2D,0x80,0x2C,0x40,0x00,0x06,0x01,0x00,0x02, "Tamron", "A14NII", "AF 18-200mm F/3.5-6.3 XR Di II LD Aspherical (IF) Macro"}, -{0xFC,0x40,0x2D,0x80,0x2C,0x40,0xDF,0x06,0x01,0x00,0x02, "Tamron", "A14NII", "AF 18-200mm F/3.5-6.3 XR Di II LD Aspherical (IF) Macro"}, -{0x00,0x40,0x2D,0x88,0x2C,0x40,0x62,0x06,0x00,0x00,0x02, "Tamron", "A18", "AF 18-250mm F/3.5-6.3 Di II LD Aspherical (IF) Macro"}, -{0x00,0x40,0x2D,0x88,0x2C,0x40,0x00,0x06,0x01,0x00,0x02, "Tamron", "A18NII", "AF 18-250mm F/3.5-6.3 Di II LD Aspherical (IF) Macro "}, -{0xF5,0x40,0x2C,0x8A,0x2C,0x40,0x40,0x0E,0x01,0x00,0x02, "Tamron", "B003", "AF 18-270mm F/3.5-6.3 Di II VC LD Aspherical (IF) Macro"}, -{0xF0,0x3F,0x2D,0x8A,0x2C,0x40,0xDF,0x0E,0x01,0x00,0x02, "Tamron", "B008", "AF 18-270mm F/3.5-6.3 Di II VC PZD"}, -{0x07,0x40,0x2F,0x44,0x2C,0x34,0x03,0x02,0x00,0x00,0x02, "Tamron", "A10", "AF 19-35mm F/3.5-4.5"}, -{0x07,0x40,0x30,0x45,0x2D,0x35,0x03,0x02,0x00,0x00,0x02, "Tamron", "A10", "AF 19-35mm F/3.5-4.5"}, -{0x00,0x49,0x30,0x48,0x22,0x2B,0x00,0x02,0x00,0x00,0x02, "Tamron", "166D", "SP AF 20-40mm F/2.7-3.5"}, -{0x0E,0x4A,0x31,0x48,0x23,0x2D,0x0E,0x02,0x00,0x00,0x02, "Tamron", "166D", "SP AF 20-40mm F/2.7-3.5"}, -//M "Tamron" "266D" "SP AF 20-40mm F/2.7-3.5 Aspherical-IF"; -//M "Tamron" "73D" "AF 24-70mm F/3.3-5.6 Aspherical"; -{0x45,0x41,0x37,0x72,0x2C,0x3C,0x48,0x02,0x00,0x00,0x02, "Tamron", "190D", "SP AF 24-135mm F/3.5-5.6 AD Aspherical (IF) Macro"}, -//M "Tamron" "159D" "AF 28-70mm F/3.5-4.5"; -//M "Tamron" "259D" "AF 28-70mm F/3.5-4.5"; -{0x33,0x54,0x3C,0x5E,0x24,0x24,0x62,0x02,0x00,0x00,0x02, "Tamron", "A09", "SP AF 28-75mm F/2.8 XR Di LD Aspherical (IF) Macro"}, -{0xFA,0x54,0x3C,0x5E,0x24,0x24,0x84,0x06,0x01,0x00,0x02, "Tamron", "A09NII", "SP AF 28-75mm F/2.8 XR Di LD Aspherical (IF) Macro"}, -{0x10,0x3D,0x3C,0x60,0x2C,0x3C,0xD2,0x02,0x00,0x00,0x02, "Tamron", "177D", "AF 28-80mm F/3.5-5.6 Aspherical"}, -{0x45,0x3D,0x3C,0x60,0x2C,0x3C,0x48,0x02,0x00,0x00,0x02, "Tamron", "177D", "AF 28-80mm F/3.5-5.6 Aspherical"}, -{0x00,0x48,0x3C,0x6A,0x24,0x24,0x00,0x02,0x00,0x00,0x02, "Tamron", "176D", "SP AF 28-105mm F/2.8 LD Aspherical IF"}, -//M "Tamron" "276D" "SP AF 28-105mm F/2.8 LD Aspherical IF"; -//M "Tamron" "179D" "AF 28-105mm F4.0-5.6 IF"; -//M "Tamron" "471D" "AF 28-200mm F/3.8-5.6 Aspherical IF Super2 Silver"; -{0x0B,0x3E,0x3D,0x7F,0x2F,0x3D,0x0E,0x00,0x00,0x00,0x02, "Tamron", "71D", "AF 28-200mm F/3.8-5.6"}, -{0x0B,0x3E,0x3D,0x7F,0x2F,0x3D,0x0E,0x02,0x00,0x00,0x02, "Tamron", "171D", "AF 28-200mm F/3.8-5.6D"}, -{0x12,0x3D,0x3C,0x80,0x2E,0x3C,0xDF,0x02,0x00,0x00,0x02, "Tamron", "271D", "AF 28-200mm F/3.8-5.6 LD Aspherical (IF)"}, -{0x4D,0x41,0x3C,0x8E,0x2B,0x40,0x62,0x02,0x00,0x00,0x02, "Tamron", "A061", "AF 28-300mm F/3.5-6.3 XR Di LD Aspherical (IF)"}, -{0x4D,0x41,0x3C,0x8E,0x2C,0x40,0x62,0x02,0x00,0x00,0x02, "Tamron", "185D", "AF 28-300mm F/3.5-6.3 XR LD Aspherical (IF)"}, -//M "Tamron" "285D" "AF 28-300mm F/3.8-6.3 LD Aspherical IF Silver"; -{0xF9,0x40,0x3C,0x8E,0x2C,0x40,0x40,0x0E,0x01,0x00,0x02, "Tamron", "A20", "AF 28-300mm F/3.5-6.3 XR Di VC LD Aspherical (IF) Macro"}, -//M "Tamron" "63D" "AF 35-90mm F/4-5.6"; -//M "Tamron" "65D" "SP AF 35-105mm F/2.8 Aspherical"; -//M "Tamron" "" "AF 35-135mm F/3.5-4.5"; -{0x00,0x47,0x53,0x80,0x30,0x3C,0x00,0x06,0x00,0x00,0x02, "Tamron", "A15", "AF 55-200mm F/4-5.6 Di II LD"}, -{0xF7,0x53,0x5C,0x80,0x24,0x24,0x84,0x06,0x01,0x00,0x02, "Tamron", "A001", "SP AF 70-200mm F/2.8 Di LD (IF) Macro"}, -{0xFE,0x53,0x5C,0x80,0x24,0x24,0x84,0x06,0x01,0x00,0x02, "Tamron", "A001", "SP AF 70-200mm F/2.8 Di LD (IF) Macro"}, -//M "Tamron" "67D" "SP AF 70-210mm f/2.8 LD"; -//M "Tamron" "" "AF 70-210mm F/3.5-4.5"; -//M "Tamron" "158D" "AF 70-210mm F/4-5.6"; -//M "Tamron" "258D" "AF 70-210mm F/4-5.6"; -//M "Tamron" "172D" "AF 70-300mm F/4-5.6"; -//M "Tamron" "472D" "AF 70-300mm F/4-5.6 LD"; -{0x69,0x48,0x5C,0x8E,0x30,0x3C,0x6F,0x02,0x00,0x00,0x02, "Tamron", "772D", "AF 70-300mm F/4-5.6 LD Macro 1:2"}, -{0x69,0x47,0x5C,0x8E,0x30,0x3C,0x00,0x02,0x00,0x00,0x02, "Tamron", "A17N", "AF 70-300mm F/4-5.6 Di LD Macro 1:2"}, -{0x00,0x48,0x5C,0x8E,0x30,0x3C,0x00,0x06,0x01,0x00,0x02, "Tamron", "A17NII", "AF 70-300mm F/4-5.6 Di LD Macro 1:2"}, -{0xF1,0x47,0x5C,0x8E,0x30,0x3C,0xDF,0x0E,0x00,0x00,0x02, "Tamron", "A005", "SP 70-300mm F4-5.6 Di VC USD"}, -//M "Tamron" "872D" "AF 75-300mm F/4-5.6 LD"; -//M "Tamron" "278D" "AF 80-210mm F/4.5-5.6"; -//M "Tamron" "62D" "AF 90-300mm F/4.5-5.6"; -//M "Tamron" "186D" "AF 100-300mm F/5-6.3"; -{0x20,0x3C,0x80,0x98,0x3D,0x3D,0x1E,0x02,0x00,0x00,0x02, "Tamron", "75D", "AF 200-400mm F/5.6 LD IF"}, -{0x00,0x3E,0x80,0xA0,0x38,0x3F,0x00,0x02,0x00,0x00,0x02, "Tamron", "A08", "SP AF 200-500mm F/5-6.3 Di LD (IF)"}, -{0x00,0x3F,0x80,0xA0,0x38,0x3F,0x00,0x02,0x00,0x00,0x02, "Tamron", "A08", "SP AF 200-500mm F/5-6.3 Di"}, -// -//------------------------------------------------------------------------------ -// Tokina Lenses by focal length, first fixed then zoom lenses -//------------------------------------------------------------------------------ -// -{0x00,0x40,0x2B,0x2B,0x2C,0x2C,0x00,0x02,0x00,0x00,0x03, "Tokina", "", "AT-X 17 AF PRO (AF 17mm f/3.5)"}, -{0x00,0x47,0x44,0x44,0x24,0x24,0x00,0x06,0x40,0x00,0x03, "Tokina", "T303503", "AT-X M35 PRO DX (AF 35mm f/2.8 Macro)"}, -{0x00,0x54,0x68,0x68,0x24,0x24,0x00,0x02,0x40,0x00,0x03, "Tokina", "T310003N", "AT-X M100 PRO D (AF 100mm f/2.8 Macro)"}, -{0x27,0x48,0x8E,0x8E,0x30,0x30,0x1D,0x02,0x00,0x00,0x03, "Tokina", "", "AT-X 304 AF (AF 300mm f/4.0)"}, -{0x00,0x54,0x8E,0x8E,0x24,0x24,0x00,0x02,0x00,0x00,0x03, "Tokina", "", "AT-X 300 AF PRO (AF 300mm f/2.8)"}, -{0x12,0x3B,0x98,0x98,0x3D,0x3D,0x09,0x00,0x00,0x00,0x03, "Tokina", "", "AT-X 400 AF SD (AF 400mm f/5.6)"}, -// -{0x00,0x40,0x18,0x2B,0x2C,0x34,0x00,0x06,0x00,0x00,0x03, "Tokina", "T4101703", "AT-X 107 DX Fisheye (AF 10-17mm f/3.5-4.5)"}, -{0x00,0x48,0x1C,0x29,0x24,0x24,0x00,0x06,0x00,0x00,0x03, "Tokina", "T4111603", "AT-X 116 PRO DX (AF 11-16mm f/2.8)"}, -{0x00,0x3C,0x1F,0x37,0x30,0x30,0x00,0x06,0x00,0x00,0x03, "Tokina", "T4122403", "AT-X 124 AF PRO DX (AF 12-24mm f/4)"}, -{0x7A,0x3C,0x1F,0x37,0x30,0x30,0x7E,0x06,0x01,0x02,0x03, "Tokina", "T4122423", "AT-X 124 AF PRO DX II (AF 12-24mm f/4)"}, -{0x00,0x48,0x29,0x3C,0x24,0x24,0x00,0x06,0x00,0x00,0x03, "Tokina", "", "AT-X 16-28 AF PRO FX (AF 16-28mm f/2.8)"}, -{0x00,0x48,0x29,0x50,0x24,0x24,0x00,0x06,0x00,0x00,0x03, "Tokina", "", "AT-X 165 PRO DX (AF 16-50mm f/2.8)"}, -{0x00,0x40,0x2A,0x72,0x2C,0x3C,0x00,0x06,0x00,0x00,0x03, "Tokina", "", "AT-X 16.5-135 DX (AF 16.5-135mm F3.5-5.6)"}, -{0x2F,0x40,0x30,0x44,0x2C,0x34,0x29,0x02,0x00,0x02,0x03, "Tokina", "", "AF 193 (AF 19-35mm f/3.5-4.5)"}, -{0x2F,0x48,0x30,0x44,0x24,0x24,0x29,0x02,0x00,0x02,0x03, "Tokina", "", "AT-X 235 AF PRO (AF 20-35mm f/2.8)"}, -//M "Tokina" "" "AF 235 (AF 20-35mm f/3.5-4.5)" -{0x2F,0x40,0x30,0x44,0x2C,0x34,0x29,0x02,0x00,0x01,0x03, "Tokina", "", "AF 235 II (AF 20-35mm f/3.5-4.5)"}, -//M "Tokina" "" "AT-X 240 AF (AF 24-40mm f/2.8)" -{0x00,0x40,0x37,0x80,0x2C,0x3C,0x00,0x02,0x00,0x00,0x03, "Tokina", "", "AT-X 242 AF (AF 24-200mm f/3.5-5.6)"}, -{0x25,0x48,0x3C,0x5C,0x24,0x24,0x1B,0x02,0x00,0x02,0x03, "Tokina", "", "AT-X 270 AF PRO II (AF 28-70mm f/2.6-2.8)"}, -{0x25,0x48,0x3C,0x5C,0x24,0x24,0x1B,0x02,0x00,0x01,0x03, "Tokina", "", "AT-X 287 AF PRO SV (AF 28-70mm f/2.8)"}, -{0x07,0x48,0x3C,0x5C,0x24,0x24,0x03,0x00,0x00,0x00,0x03, "Tokina", "", "AT-X 287 AF (AF 28-70mm f/2.8)"}, -{0x07,0x47,0x3C,0x5C,0x25,0x35,0x03,0x00,0x00,0x00,0x03, "Tokina", "", "AF 287 SD (AF 28-70mm f/2.8-4.5)"}, -{0x07,0x40,0x3C,0x5C,0x2C,0x35,0x03,0x00,0x00,0x00,0x03, "Tokina", "", "AF 270 II (AF 28-70mm f/3.5-4.5)"}, -{0x00,0x48,0x3C,0x60,0x24,0x24,0x00,0x02,0x00,0x00,0x03, "Tokina", "", "AT-X 280 AF PRO (AF 28-80mm f/2.8)"}, -//M "Tokina" "" "AF 280 II EMZ (AF 28-80mm f/3.5-5.6)" -//M "Tokina" "" "AF 205 (AF 28-105mm f/3.5-4.5)" -//M "Tokina" "" "AF 282 (AF 28-200mm 3.5-5.6)" -//M "Tokina" "" "AF 282 EMZ II (AF 28-210mm f/4.2-6.5)" -//M "Tokina" "" "AF 370 (AF 35-70mm f/3.5-4.6)" -//M "Tokina" "" "AF 370 II (AF 35-70mm f/3.5-4.6)" -{0x25,0x44,0x44,0x8E,0x34,0x42,0x1B,0x02,0x00,0x00,0x03, "Tokina", "", "AF 353 (AF 35-300mm f/4.5-6.7)"}, -{0x00,0x48,0x50,0x72,0x24,0x24,0x00,0x06,0x00,0x00,0x03, "Tokina", "", "AT-X 535 PRO DX (AF 50-135mm f/2.8)"}, -//M "Tokina" "" "AF 745 (AF 70-210mm f/4.5)" -//M "Tokina" "" "AF 210 (AF 70-210mm f/4.0-5.6)" -//M "Tokina" "" "AF 210 II SD (AF 70-210mm f/4.0-5.6)" -{0x12,0x44,0x5E,0x8E,0x34,0x3C,0x09,0x00,0x00,0x00,0x03, "Tokina", "", "AF 730 (AF 75-300mm F4.5-5.6)"}, -//M "Tokina" "" "AF 730 II (AF 75-300mm f/4.5-5.6)" -{0x14,0x54,0x60,0x80,0x24,0x24,0x0B,0x00,0x00,0x00,0x03, "Tokina", "", "AT-X 828 AF (AF 80-200mm f/2.8)"}, -{0x24,0x54,0x60,0x80,0x24,0x24,0x1A,0x02,0x00,0x00,0x03, "Tokina", "", "AT-X 828 AF PRO (AF 80-200mm f/2.8)"}, -//M "Tokina" "" "AT-X 840 AF (AF 80-400mm f/4.5-5.6)" -{0x24,0x44,0x60,0x98,0x34,0x3C,0x1A,0x02,0x00,0x00,0x03, "Tokina", "", "AT-X 840 AF-II (AF 80-400mm f/4.5-5.6)"}, -{0x00,0x44,0x60,0x98,0x34,0x3C,0x00,0x02,0x00,0x00,0x03, "Tokina", "", "AT-X 840 D (AF 80-400mm f/4.5-5.6)"}, -{0x14,0x48,0x68,0x8E,0x30,0x30,0x0B,0x00,0x00,0x00,0x03, "Tokina", "", "AT-X 340 AF (AF 100-300mm f/4)"}, -//M "Tokina" "" "AT-X 340 AF-II (AF 100-300mm f/4)" -//M "Tokina" "" "AF 130 EMZ II (AF 100-300mm f/5.6-6.7)" -//M "Tokina" "" "AF 140 EMZ (AF 100-400mm f/4.5-6.3)" -// -//------------------------------------------------------------------------------ -// Lenses from various other brands -//------------------------------------------------------------------------------ -// -{0x06,0x3F,0x68,0x68,0x2C,0x2C,0x06,0x00,0x00,0x00,0x04, "Cosina", "", "AF 100mm F3.5 Macro"}, -{0x07,0x36,0x3D,0x5F,0x2C,0x3C,0x03,0x00,0x00,0x00,0x04, "Cosina", "", "AF Zoom 28-80mm F3.5-5.6 MC Macro"}, -{0x07,0x46,0x3D,0x6A,0x25,0x2F,0x03,0x00,0x00,0x00,0x04, "Cosina", "", "AF Zoom 28-105mm F2.8-3.8 MC"}, -//M "Cosina" "" "AF Zoom 28-210mm F3.5-5.6"; -//M "Cosina" "" "AF Zoom 28-210mm F4.2-6.5 Aspherical IF"; -//M "Cosina" "" "AF Zoom 28-300mm F4.0-6.3"; -//M "Cosina" "" "AF Zoom 70-210mm F2.8-4.0"; -{0x12,0x36,0x5C,0x81,0x35,0x3D,0x09,0x00,0x00,0x00,0x04, "Cosina", "", "AF Zoom 70-210mm F4.5-5.6 MC Macro"}, -{0x12,0x39,0x5C,0x8E,0x34,0x3D,0x08,0x02,0x00,0x00,0x04, "Cosina", "", "AF Zoom 70-300mm F4.5-5.6 MC Macro"}, -{0x12,0x3B,0x68,0x8D,0x3D,0x43,0x09,0x02,0x00,0x00,0x04, "Cosina", "", "AF Zoom 100-300mm F5.6-6.7 MC Macro"}, -//M "Cosina" "" "AF Zoom 100-400mm F5.6-6.7 MC"; -// -{0x00,0x40,0x31,0x31,0x2C,0x2C,0x00,0x00,0x00,0x00,0x34, "Voigtlander", "BA295AN", "Color Skopar 20mm F3.5 SLII Aspherical"}, -{0x00,0x54,0x48,0x48,0x18,0x18,0x00,0x00,0x00,0x00,0x34, "Voigtlander", "BA229DN", "Ultron 40mm F2 SLII Aspherical"}, -{0x00,0x54,0x55,0x55,0x0C,0x0C,0x00,0x00,0x00,0x00,0x34, "Voigtlander", "BA239BN", "Nokton 58mm F1.4 SLII"}, -{0x00,0x40,0x64,0x64,0x2C,0x2C,0x00,0x00,0x00,0x00,0x34, "Voigtlander", "", "APO-Lanthar 90mm F3.5 SLII Close Focus"}, -// -{0x00,0x40,0x2D,0x2D,0x2C,0x2C,0x00,0x00,0x00,0x00,0x44, "Carl Zeiss", "", "Distagon T* 3,5/18 ZF.2"}, -{0x00,0x48,0x32,0x32,0x24,0x24,0x00,0x00,0x00,0x00,0x44, "Carl Zeiss", "", "Distagon T* 2,8/21 ZF.2"}, -{0x00,0x54,0x3C,0x3C,0x18,0x18,0x00,0x00,0x00,0x00,0x44, "Carl Zeiss", "", "Distagon T* 2/28 ZF.2"}, -{0x00,0x54,0x44,0x44,0x18,0x18,0x00,0x00,0x00,0x00,0x44, "Carl Zeiss", "", "Distagon T* 2/35 ZF.2"}, -{0x00,0x54,0x50,0x50,0x0C,0x0C,0x00,0x00,0x00,0x00,0x44, "Carl Zeiss", "", "Planar T* 1,4/50 ZF.2"}, -{0x00,0x54,0x50,0x50,0x18,0x18,0x00,0x00,0x00,0x00,0x44, "Carl Zeiss", "", "Makro-Planar T* 2/50 ZF.2"}, -{0x00,0x54,0x62,0x62,0x0C,0x0C,0x00,0x00,0x00,0x00,0x44, "Carl Zeiss", "", "Planar T* 1,4/85 ZF.2"}, -{0x00,0x54,0x68,0x68,0x18,0x18,0x00,0x00,0x00,0x00,0x44, "Carl Zeiss", "", "Makro-Planar T* 2/100 ZF.2"}, -// -{0x00,0x54,0x56,0x56,0x30,0x30,0x00,0x00,0x00,0x00,0x0C, "Coastal Optical Systems", "", "60mm 1:4 UV-VIS-IR Macro Apo"}, -// -{0x4A,0x48,0x24,0x24,0x24,0x0C,0x4D,0x02,0x00,0x00,0x1D, "Samyang", "", "AE 14mm f/2.8 ED AS IF UMC"}, -{0x4A,0x60,0x44,0x44,0x0C,0x0C,0x4D,0x02,0x00,0x00,0x1D, "Samyang", "", "35mm f/1.4 AS UMC"}, -{0x4A,0x60,0x62,0x62,0x0C,0x0C,0x4D,0x02,0x00,0x00,0x1D, "Samyang", "", "AE 85mm f/1.4 AS IF UMC"}, -// -{0x02,0x40,0x44,0x5C,0x2C,0x34,0x02,0x00,0x00,0x00,0x15, "Exakta", "", "AF 35-70mm 1:3.5-4.5 MC"}, -{0x07,0x3E,0x30,0x43,0x2D,0x35,0x03,0x00,0x00,0x00,0x14, "Soligor", "", "AF Zoom 19-35mm 1:3.5-4.5 MC"}, -{0x03,0x43,0x5C,0x81,0x35,0x35,0x02,0x00,0x00,0x00,0x13, "Soligor", "", "AF C/D Zoom UMCS 70-210mm 1:4.5"}, -{0x12,0x4A,0x5C,0x81,0x31,0x3D,0x09,0x00,0x00,0x00,0x13, "Soligor", "", "AF C/D Auto Zoom+Macro 70-210mm 1:4-5.6 UMCS"}, -{0x12,0x36,0x69,0x97,0x35,0x42,0x09,0x00,0x00,0x00,0x14, "Soligor", "", "AF Zoom 100-400mm 1:4.5-6.7 MC"}, -// -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, "Manual Lens", "", "No CPU"}, -// -//------------------------------------------------------------------------------ -// -// Lenses, that were upgraded with custom CPU -// -{0x00,0x47,0x10,0x10,0x24,0x24,0x00,0x00,0x00,0x00,0x00, "Nikon", "JAA604AC", "Fisheye Nikkor 8mm f/2.8 AiS"}, -{0x00,0x54,0x44,0x44,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00, "Nikon", "JAA115AD", "Nikkor 35mm f/1.4 AiS"}, -{0x00,0x48,0x50,0x50,0x18,0x18,0x00,0x00,0x00,0x00,0x00, "Nikon", "", "Nikkor H 50mm f/2"}, -{0x00,0x48,0x68,0x68,0x24,0x24,0x00,0x00,0x00,0x00,0x00, "Nikon", "JAA304AA", "Series E 100mm f/2.8"}, -{0x00,0x4C,0x6A,0x6A,0x20,0x20,0x00,0x00,0x00,0x00,0x00, "Nikon", "JAA305AA", "Nikkor 105mm f/2.5 AiS"}, -{0x00,0x48,0x80,0x80,0x30,0x30,0x00,0x00,0x00,0x00,0x00, "Nikon", "JAA313AA", "Nikkor 200mm f/4 AiS"}, -{0x00,0x40,0x11,0x11,0x2C,0x2C,0x00,0x00,0x00,0x00,0x1D, "Samyang", "", "8mm f/3.5 Fish-Eye"}, -{0x00,0x58,0x64,0x64,0x20,0x20,0x00,0x00,0x00,0x00,0x17, "Soligor", "", "C/D Macro MC 90mm f/2.5"}, -// -{0,0,0,0,0,0,0,0,0,0,0, NULL, NULL, NULL} -}; -//------------------------------------------------------------------------------ -#endif -// 8< - - - 8< do not remove this line >8 - - - >8 - - if (metadata == 0) return os << value; - - byte raw[] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }; - - static const char* tags[] = { - "LensIDNumber", - "LensFStops", - "MinFocalLength", - "MaxFocalLength", - "MaxApertureAtMinFocal", - "MaxApertureAtMaxFocal", - "MCUVersion" - }; - - const std::string pre = std::string("Exif.") + group + std::string("."); - for (unsigned int i = 0; i < 7; ++i) { - ExifKey key(pre + std::string(tags[i])); - ExifData::const_iterator md = metadata->findKey(key); - if (md == metadata->end() || md->typeId() != unsignedByte || md->count() == 0) { - return os << value; - } - raw[i] = static_cast(md->toLong()); - } - - ExifData::const_iterator md = metadata->findKey(ExifKey("Exif.Nikon3.LensType")); - if (md == metadata->end() || md->typeId() != unsignedByte || md->count() == 0) { - return os << value; - } - raw[7] = static_cast(md->toLong()); - - for (int i = 0; fmountlens[i].lensname != NULL; ++i) { - if ( raw[0] == fmountlens[i].lid - && raw[1] == fmountlens[i].stps - && raw[2] == fmountlens[i].focs - && raw[3] == fmountlens[i].focl - && raw[4] == fmountlens[i].aps - && raw[5] == fmountlens[i].apl - && raw[6] == fmountlens[i].lfw - && raw[7] == fmountlens[i].ltype) { - // Lens found in database - return os << fmountlens[i].manuf << " " << fmountlens[i].lensname; - } - } - // Lens not found in database - return os << value; -#else - return os << value; -#endif // EXV_HAVE_LENSDATA - } - - std::ostream& Nikon3MakerNote::printFocusDistance(std::ostream& os, - const Value& value, - const ExifData*) - { - if (value.count() != 1 || value.typeId() != unsignedByte) { - return os << "(" << value << ")"; - } - double dist = 0.01 * pow(10.0, value.toLong()/40.0); - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(2) << dist << " m"; - os.copyfmt(oss); - return os; - } - - std::ostream& Nikon3MakerNote::printAperture(std::ostream& os, - const Value& value, - const ExifData*) - { - if (value.count() != 1 || value.typeId() != unsignedByte) { - return os << "(" << value << ")"; - } - double aperture = pow(2.0, value.toLong()/24.0); - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(1) << "F" << aperture; - os.copyfmt(oss); - return os; - } - - std::ostream& Nikon3MakerNote::printFocal(std::ostream& os, - const Value& value, - const ExifData*) - { - if (value.count() != 1 || value.typeId() != unsignedByte) { - return os << "(" << value << ")"; - } - double focal = 5.0 * pow(2.0, value.toLong()/24.0); - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(1) << focal << " mm"; - os.copyfmt(oss); - return os; - } - - std::ostream& Nikon3MakerNote::printFStops(std::ostream& os, - const Value& value, - const ExifData*) - { - if (value.count() != 1 || value.typeId() != unsignedByte) { - return os << "(" << value << ")"; - } - double fstops = value.toLong()/12.0; - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(1) << "F" << fstops; - os.copyfmt(oss); - return os; - } - - std::ostream& Nikon3MakerNote::printExitPupilPosition(std::ostream& os, - const Value& value, - const ExifData*) - { - if (value.count() != 1 || value.typeId() != unsignedByte || value.toLong() == 0) { - return os << "(" << value << ")"; - } - double epp = 2048.0/value.toLong(); - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(1) << epp << " mm"; - os.copyfmt(oss); - return os; - } - - std::ostream& Nikon3MakerNote::printFlashFocalLength(std::ostream& os, - const Value& value, - const ExifData*) - { - if (value.count() != 1 || value.typeId() != unsignedByte || value.toLong() == 0 || value.toLong() == 255) { - return os << "(" << value << ")"; - } - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(1) << value.toLong() << " mm"; - os.copyfmt(oss); - return os; - } - - std::ostream& Nikon3MakerNote::printRepeatingFlashRate(std::ostream& os, - const Value& value, - const ExifData*) - { - if (value.count() != 1 || value.typeId() != unsignedByte || value.toLong() == 0 || value.toLong() == 255) { - return os << "(" << value << ")"; - } - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(2) << value.toLong() << " Hz"; - os.copyfmt(oss); - return os; - } - - std::ostream& Nikon3MakerNote::printRepeatingFlashCount(std::ostream& os, - const Value& value, - const ExifData*) - { - if (value.count() != 1 || value.typeId() != unsignedByte || value.toLong() == 0 || value.toLong() == 255) { - return os << "(" << value << ")"; - } - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(2) << value.toLong(); - os.copyfmt(oss); - return os; - } - - std::ostream& Nikon3MakerNote::printTimeZone(std::ostream& os, - const Value& value, - const ExifData*) - { - if (value.count() != 1 || value.typeId() != signedShort) { - return os << "(" << value << ")"; - } - std::ostringstream oss; - oss.copyfmt(os); - char sign = value.toLong() < 0 ? '-' : '+'; - long h = long(abs(value.toFloat())/60.0); - long min = long(abs(value.toFloat()) - h*60); - os << std::fixed << "UTC " << sign << std::setw(2) << std::setfill('0') << h << ":" - << std::setw(2) << std::setfill('0') << min; - os.copyfmt(oss); - return os; - } - - std::ostream& Nikon3MakerNote::printPictureControl(std::ostream& os, - const Value& value, - const ExifData*) - { - if (value.count() != 1 || value.typeId() != unsignedByte) { - return os << "(" << value << ")"; - } - long pcval = value.toLong() - 0x80; - std::ostringstream oss; - oss.copyfmt(os); - switch(pcval) - { - case 0: - os << "Normal"; - break; - case 127: - os << "n/a"; - break; - case -127: - os << "User"; - break; - case -128: - os << "Auto"; - break; - default: - os << pcval; - break; - } - os.copyfmt(oss); - return os; - } - - std::ostream& Nikon3MakerNote::print0x009a(std::ostream& os, - const Value& value, - const ExifData*) - { - if (value.count() != 2 || value.typeId() != unsignedRational) { - return os << value; - } - float f1 = value.toFloat(0); - float f2 = value.toFloat(1); - return os << f1 << " x " << f2 << " um"; - } - - std::ostream& Nikon3MakerNote::print0x009e(std::ostream& os, - const Value& value, - const ExifData*) - { - if (value.count() != 10 || value.typeId() != unsignedShort) { - return os << value; - } - std::string s; - bool trim = true; - for (int i = 9; i >= 0; --i) { - long l = value.toLong(i); - if (i > 0 && l == 0 && trim) continue; - if (l != 0) trim = false; - std::string d = s.empty() ? "" : "; "; - const TagDetails* td = find(nikonRetouchHistory, l); - if (td) { - s = std::string(exvGettext(td->label_)) + d + s; - } - else { - s = std::string(_("Unknown")) + std::string(" (") + toString(l) + std::string(")") + d + s; - } - } - return os << s; - } - -}} // namespace Internal, Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/nikonmn_int.hpp b/platform/win32/msvc/external/exiv2/src/nikonmn_int.hpp deleted file mode 100644 index bd050ef64ad..00000000000 --- a/platform/win32/msvc/external/exiv2/src/nikonmn_int.hpp +++ /dev/null @@ -1,284 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file nikonmn_int.hpp - @brief Nikon makernote tags.
References:
- [1] MakerNote EXIF Tag of the Nikon 990 by Max Lyons
- [2] Exif file format by TsuruZoh Tachibanaya
- [3] "EXIFutils Field Reference Guide"
- [3] Nikon Type 3 Makernote Tags Definition of the PHP JPEG Metadata Toolkit by Evan Hunter
- [4] ExifTool by Phil Harvey
- [5] Email communication with Robert Rottmerhusen
- [6] Email communication with Roger Larsson
- [7] Decoding raw digital photos in Linux by Dave Coffin
- - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @author Gilles Caulier (gc) - caulier dot gilles at gmail dot com - @author Jens Mueller (jm) - tschensinger at web dot de - @date 17-May-04, ahu: created
- 25-May-04, ahu: combined all Nikon formats in one component - */ -#ifndef NIKONMN_INT_HPP_ -#define NIKONMN_INT_HPP_ - -// ***************************************************************************** -// included header files -#include "tags.hpp" -#include "types.hpp" - -// + standard includes -#include -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - namespace Internal { - -// ***************************************************************************** -// class definitions - - //! A MakerNote format used by Nikon cameras, such as the E990 and D1. - class Nikon1MakerNote { - public: - //! Return read-only list of built-in Nikon1 tags - static const TagInfo* tagList(); - - //! @name Print functions for Nikon1 %MakerNote tags - //@{ - //! Print ISO setting - static std::ostream& print0x0002(std::ostream& os, const Value& value, const ExifData*); - //! Print autofocus mode - static std::ostream& print0x0007(std::ostream& os, const Value& value, const ExifData*); - //! Print manual focus distance - static std::ostream& print0x0085(std::ostream& os, const Value& value, const ExifData*); - //! Print digital zoom setting - static std::ostream& print0x0086(std::ostream& os, const Value& value, const ExifData*); - //! Print AF focus position - static std::ostream& print0x0088(std::ostream& os, const Value& value, const ExifData*); - //@} - - private: - //! Tag information - static const TagInfo tagInfo_[]; - - }; // class Nikon1MakerNote - - /*! - @brief A second MakerNote format used by Nikon cameras, including the - E700, E800, E900, E900S, E910, E950 - */ - class Nikon2MakerNote { - public: - //! Return read-only list of built-in Nikon2 tags - static const TagInfo* tagList(); - - //! @name Print functions for Nikon2 %MakerNote tags - //@{ - //! Print digital zoom setting - static std::ostream& print0x000a(std::ostream& os, const Value& value, const ExifData*); - //@} - - private: - //! Tag information - static const TagInfo tagInfo_[]; - - }; // class Nikon2MakerNote - - //! A third MakerNote format used by Nikon cameras, e.g., E5400, SQ, D2H, D70 - class Nikon3MakerNote { - public: - //! Return read-only list of built-in Nikon3 tags - static const TagInfo* tagList(); - //! Return read-only list of built-in Vibration Reduction tags - static const TagInfo* tagListVr(); - //! Return read-only list of built-in Picture Control tags - static const TagInfo* tagListPc(); - //! Return read-only list of built-in World time tags - static const TagInfo* tagListWt(); - //! Return read-only list of built-in ISO info tags - static const TagInfo* tagListIi(); - //! Return read-only list of built-in Auto Focus tags - static const TagInfo* tagListAf(); - //! Return read-only list of built-in Auto Focus 2 tags - static const TagInfo* tagListAf2(); - //! Return read-only list of built-in AF Fine Tune tags - static const TagInfo* tagListAFT(); - //! Return read-only list of built-in File Info tags - static const TagInfo* tagListFi(); - //! Return read-only list of built-in Multi Exposure tags - static const TagInfo* tagListMe(); - //! Return read-only list of built-in Flash Info 1 tags - static const TagInfo* tagListFl1(); - //! Return read-only list of built-in Flash Info 2 tags - static const TagInfo* tagListFl2(); - //! Return read-only list of built-in Flash Info 3 tags - static const TagInfo* tagListFl3(); - //! Return read-only list of built-in Shot Info D80 tags - static const TagInfo* tagListSi1(); - //! Return read-only list of built-in Shot Info D40 tags - static const TagInfo* tagListSi2(); - //! Return read-only list of built-in Shot Info D300 (a) tags - static const TagInfo* tagListSi3(); - //! Return read-only list of built-in Shot Info D300 (b) tags - static const TagInfo* tagListSi4(); - //! Return read-only list of built-in Shot Info tags - static const TagInfo* tagListSi5(); - //! Return read-only list of built-in Color Balance 1 tags - static const TagInfo* tagListCb1(); - //! Return read-only list of built-in Color Balance 2 tags - static const TagInfo* tagListCb2(); - //! Return read-only list of built-in Color Balance 2a tags - static const TagInfo* tagListCb2a(); - //! Return read-only list of built-in Color Balance 2b tags - static const TagInfo* tagListCb2b(); - //! Return read-only list of built-in Color Balance 3 tags - static const TagInfo* tagListCb3(); - //! Return read-only list of built-in Color Balance 4 tags - static const TagInfo* tagListCb4(); - //! Return read-only list of built-in Lens Data 1 tags - static const TagInfo* tagListLd1(); - //! Return read-only list of built-in Lens Data 2 tags - static const TagInfo* tagListLd2(); - //! Return read-only list of built-in Lens Data 3 tags - static const TagInfo* tagListLd3(); - - //! @name Print functions for Nikon3 %MakerNote tags - //@{ - //! Print ISO setting - static std::ostream& print0x0002(std::ostream& os, const Value& value, const ExifData*); - //! Print autofocus mode - static std::ostream& print0x0007(std::ostream& os, const Value& value, const ExifData*); - //! Print lens type - static std::ostream& print0x0083(std::ostream& os, const Value& value, const ExifData*); - //! Print lens information - static std::ostream& print0x0084(std::ostream& os, const Value& value, const ExifData*); - //! Print manual focus distance - static std::ostream& print0x0085(std::ostream& os, const Value& value, const ExifData*); - //! Print digital zoom setting - static std::ostream& print0x0086(std::ostream& os, const Value& value, const ExifData*); - //! Print AF point - static std::ostream& print0x0088(std::ostream& os, const Value& value, const ExifData*); - //! Print shooting mode - static std::ostream& print0x0089(std::ostream& os, const Value& value, const ExifData* metadata); - //! Print number of lens stops - static std::ostream& print0x008b(std::ostream& os, const Value& value, const ExifData*); - //! Print AF Points In Focus - static std::ostream& printAfPointsInFocus(std::ostream& os, const Value& value, const ExifData* metadata); - //! Print lens name - static std::ostream& printLensId(std::ostream& os, const Value& value, const ExifData* metadata, const std::string& group); - static std::ostream& printLensId1(std::ostream& os, const Value& value, const ExifData* metadata); - static std::ostream& printLensId2(std::ostream& os, const Value& value, const ExifData* metadata); - static std::ostream& printLensId3(std::ostream& os, const Value& value, const ExifData* metadata); - //! Print focus distance - static std::ostream& printFocusDistance(std::ostream& os, const Value& value, const ExifData*); - //! Print lens aperture value - static std::ostream& printAperture(std::ostream& os, const Value& value, const ExifData*); - //! Print lens focal length - static std::ostream& printFocal(std::ostream& os, const Value& value, const ExifData*); - //! Print lens f-stops - static std::ostream& printFStops(std::ostream& os, const Value& value, const ExifData*); - //! Print exit pupil position - static std::ostream& printExitPupilPosition(std::ostream& os, const Value& value, const ExifData*); - //! Print sensor pixel size - static std::ostream& print0x009a(std::ostream& os, const Value& value, const ExifData*); - //! Print retouch history - static std::ostream& print0x009e(std::ostream& os, const Value& value, const ExifData*); - //! Print Exif.NikonIi.ISO(2) - static std::ostream& printIiIso(std::ostream& os, const Value& value, const ExifData*); - //! Print flash focal length - static std::ostream& printFlashFocalLength(std::ostream& os, const Value& value, const ExifData*); - //! Print repeating flash rate - static std::ostream& printRepeatingFlashRate(std::ostream& os, const Value& value, const ExifData*); - //! Print repeating flash count - static std::ostream& printRepeatingFlashCount(std::ostream& os, const Value& value, const ExifData*); - //! Print time zone - static std::ostream& printTimeZone(std::ostream& os, const Value& value, const ExifData*); - //! Print picture control value - static std::ostream& printPictureControl(std::ostream& os, const Value& value, const ExifData*); - //@} - - private: - //! Tag information - static const TagInfo tagInfo_[]; - //! Vibration Reduction tag information - static const TagInfo tagInfoVr_[]; - //! Picture Control tag information - static const TagInfo tagInfoPc_[]; - //! World Time tag information - static const TagInfo tagInfoWt_[]; - //! ISO info tag information - static const TagInfo tagInfoIi_[]; - //! Auto Focus tag information - static const TagInfo tagInfoAf_[]; - //! Auto Focus tag 2 information - static const TagInfo tagInfoAf2_[]; - //! AF Fine Tune tag information - static const TagInfo tagInfoAFT_[]; - //! File Info tag information - static const TagInfo tagInfoFi_[]; - //! Multi Exposure tag information - static const TagInfo tagInfoMe_[]; - //! Flash Info 1 tag information - static const TagInfo tagInfoFl1_[]; - //! Flash Info 2 tag information - static const TagInfo tagInfoFl2_[]; - //! Flash Info 3 tag information - static const TagInfo tagInfoFl3_[]; - //! Shot Info D80 tag information - static const TagInfo tagInfoSi1_[]; - //! Shot Info D40 tag information - static const TagInfo tagInfoSi2_[]; - //! Shot Info D300 (a) tag information - static const TagInfo tagInfoSi3_[]; - //! Shot Info D300 (b) tag information - static const TagInfo tagInfoSi4_[]; - //! Shot Info tag information - static const TagInfo tagInfoSi5_[]; - //! Color Balance 1 tag information - static const TagInfo tagInfoCb1_[]; - //! Color Balance 2 tag information - static const TagInfo tagInfoCb2_[]; - //! Color Balance 2a tag information - static const TagInfo tagInfoCb2a_[]; - //! Color Balance 2b tag information - static const TagInfo tagInfoCb2b_[]; - //! Color Balance 3 tag information - static const TagInfo tagInfoCb3_[]; - //! Color Balance 4 tag information - static const TagInfo tagInfoCb4_[]; - //! Lens Data 1 tag information - static const TagInfo tagInfoLd1_[]; - //! Lens Data 2 tag information - static const TagInfo tagInfoLd2_[]; - //! Lens Data 3 tag information - static const TagInfo tagInfoLd3_[]; - - }; // class Nikon3MakerNote - -}} // namespace Internal, Exiv2 - -#endif // #ifndef NIKONMN_INT_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/olympusmn.cpp b/platform/win32/msvc/external/exiv2/src/olympusmn.cpp deleted file mode 100644 index 800ae677de1..00000000000 --- a/platform/win32/msvc/external/exiv2/src/olympusmn.cpp +++ /dev/null @@ -1,1570 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: olympusmn.cpp - Version: $Rev: 2681 $ - Author(s): Will Stokes (wuz) - Andreas Huggel (ahu) - Gilles Caulier (gc) - Greg Mansfield - History: 10-Mar-05, wuz: created - Credits: See header file. - */ - -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: olympusmn.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#include "types.hpp" -#include "olympusmn_int.hpp" -#include "value.hpp" -#include "image.hpp" -#include "tags_int.hpp" -#include "i18n.h" // NLS support. - -// + standard includes -#include -#include -#include -#include -#include - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - namespace Internal { - - //! OffOn, multiple tags - extern const TagDetails olympusOffOn[] = { - { 0, N_("Off") }, - { 1, N_("On") } - }; - - //! NoYes, multiple tags - extern const TagDetails olympusNoYes[] = { - { 0, N_("No") }, - { 1, N_("Yes") } - }; - - //! Quality, tag 0x0201 - extern const TagDetails olympusQuality[] = { - { 1, N_("Standard Quality (SQ)") }, - { 2, N_("High Quality (HQ)") }, - { 3, N_("Super High Quality (SHQ)") }, - { 6, N_("Raw") } - }; - - //! Macro, tag 0x0202 - extern const TagDetails olympusMacro[] = { - { 0, N_("Off") }, - { 1, N_("On") }, - { 2, N_("Super macro") } - }; - - //! OneTouchWB, tag 0x0302 - extern const TagDetails olympusOneTouchWb[] = { - { 0, N_("Off") }, - { 1, N_("On") }, - { 2, N_("On (preset)") } - }; - - //! SceneMode, tag 0x403 and CameraSettings tag 0x509 - extern const TagDetails olympusSceneMode[] = { - { 0, N_("Standard") }, - { 6, N_("Auto") }, - { 7, N_("Sport") }, - { 8, N_("Portrait") }, - { 9, N_("Landscape+Portrait") }, - { 10, N_("Landscape") }, - { 11, N_("Night Scene") }, - { 12, N_("Self Portrait") }, - { 13, N_("Panorama") }, - { 14, N_("2 in 1") }, - { 15, N_("Movie") }, - { 16, N_("Landscape+Portrait") }, - { 17, N_("Night+Portrait") }, - { 18, N_("Indoor") }, - { 19, N_("Fireworks") }, - { 20, N_("Sunset") }, - { 22, N_("Macro") }, - { 23, N_("Super Macro") }, - { 24, N_("Food") }, - { 25, N_("Documents") }, - { 26, N_("Museum") }, - { 27, N_("Shoot & Select") }, - { 28, N_("Beach & Snow") }, - { 29, N_("Self Portrait+Timer") }, - { 30, N_("Candle") }, - { 31, N_("Available Light") }, - { 32, N_("Behind Glass") }, - { 33, N_("My Mode") }, - { 34, N_("Pet") }, - { 35, N_("Underwater Wide1") }, - { 36, N_("Underwater Macro") }, - { 37, N_("Shoot & Select1") }, - { 38, N_("Shoot & Select2") }, - { 39, N_("High Key") }, - { 40, N_("Digital Image Stabilization") }, - { 41, N_("Auction") }, - { 42, N_("Beach") }, - { 43, N_("Snow") }, - { 44, N_("Underwater Wide2") }, - { 45, N_("Low Key") }, - { 46, N_("Children") }, - { 47, N_("Vivid") }, - { 48, N_("Nature Macro") }, - { 49, N_("Underwater Snapshot") }, - { 50, N_("Shooting Guide") } - }; - - //! FlashDevice, tag 0x1005 - extern const TagDetails olympusFlashDevice[] = { - { 0, N_("None") }, - { 1, N_("Internal") }, - { 4, N_("External") }, - { 5, N_("Internal + External") } - }; - - //! FocusRange, tag 0x100a - extern const TagDetails olympusFocusRange[] = { - { 0, N_("Normal") }, - { 1, N_("Macro") } - }; - - //! FocusMode, tag 0x100b - extern const TagDetails olympusFocusMode[] = { - { 0, N_("Auto") }, - { 1, N_("Manual") } - }; - - //! Sharpness, tag 0x100f - extern const TagDetails olympusSharpness[] = { - { 0, N_("Normal") }, - { 1, N_("Hard") }, - { 2, N_("Soft") } - }; - - //! Contrast, tag 0x1029 - extern const TagDetails olympusContrast[] = { - { 0, N_("High") }, - { 1, N_("Normal") }, - { 2, N_("Low") } - }; - - //! CCDScanMode, tag 0x1039 - extern const TagDetails olympusCCDScanMode[] = { - { 0, N_("Interlaced") }, - { 1, N_("Progressive") } - }; - - // Olympus Tag Info - const TagInfo OlympusMakerNote::tagInfo_[] = { - - /* TODO: - add Minolta makenotes tags here (0x0000-0x0103). See Exiftool database.*/ - TagInfo(0x0000, "0x0000", "0x0000", - N_("Unknown"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0100, "ThumbnailImage", N_("Thumbnail Image"), - N_("Thumbnail image"), - olympusId, makerTags, undefined, -1, printValue), - - TagInfo(0x0104, "BodyFirmwareVersion", N_("Body Firmware Version"), - N_("Body firmware version"), - olympusId, makerTags, asciiString, -1, printValue), - TagInfo(0x0200, "SpecialMode", N_("Special Mode"), - N_("Picture taking mode"), - olympusId, makerTags, unsignedLong, -1, print0x0200), - TagInfo(0x0201, "Quality", N_("Quality"), - N_("Image quality setting"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusQuality)), - TagInfo(0x0202, "Macro", N_("Macro"), - N_("Macro mode"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusMacro)), - TagInfo(0x0203, "BWMode", N_("Black & White Mode"), - N_("Black and white mode"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x0204, "DigitalZoom", N_("Digital Zoom"), - N_("Digital zoom ratio"), - olympusId, makerTags, unsignedRational, -1, print0x0204), - TagInfo(0x0205, "FocalPlaneDiagonal", N_("Focal Plane Diagonal"), - N_("Focal plane diagonal"), - olympusId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x0206, "LensDistortionParams", N_("Lens Distortion Parameters"), - N_("Lens distortion parameters"), - olympusId, makerTags, signedShort, -1, printValue), - TagInfo(0x0207, "CameraType", N_("Camera Type"), - N_("Camera type"), - olympusId, makerTags, asciiString, -1, printValue), - TagInfo(0x0208, "PictureInfo", N_("Picture Info"), - N_("ASCII format data such as [PictureInfo]"), - olympusId, makerTags, asciiString, -1, printValue), - TagInfo(0x0209, "CameraID", N_("Camera ID"), - N_("Camera ID data"), - olympusId, makerTags, asciiString, -1, print0x0209), - TagInfo(0x020b, "ImageWidth", N_("Image Width"), - N_("Image width"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x020c, "ImageHeight", N_("Image Height"), - N_("Image height"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x020d, "Software", N_("Software"), - N_("Software"), - olympusId, makerTags, asciiString, -1, printValue), - TagInfo(0x0280, "PreviewImage", N_("Preview Image"), - N_("Preview image"), - olympusId, makerTags, unsignedByte, -1, printValue), - TagInfo(0x0300, "PreCaptureFrames", N_("Pre Capture Frames"), - N_("Pre-capture frames"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0301, "WhiteBoard", N_("White Board"), - N_("White board"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0302, "OneTouchWB", N_("One Touch WB"), - N_("One touch white balance"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOneTouchWb)), - TagInfo(0x0303, "WhiteBalanceBracket", N_("White Balance Bracket"), - N_("White balance bracket"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0304, "WhiteBalanceBias", N_("White Balance Bias"), - N_("White balance bias"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0403, "SceneMode", N_("Scene Mode"), - N_("Scene mode"), - olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusSceneMode)), - TagInfo(0x0404, "Firmware", N_("Firmware"), - N_("Firmwarer"), - olympusId, makerTags, asciiString, -1, printValue), - TagInfo(0x0e00, "PrintIM", N_("Print IM"), - N_("PrintIM information"), - olympusId, makerTags, undefined, -1, printValue), - TagInfo(0x0f00, "DataDump1", N_("Data Dump 1"), - N_("Various camera settings 1"), - olympusId, makerTags, undefined, -1, printValue), - TagInfo(0x0f01, "DataDump2", N_("Data Dump 2"), - N_("Various camera settings 2"), - olympusId, makerTags, undefined, -1, printValue), - TagInfo(0x1000, "ShutterSpeed", N_("Shutter Speed"), - N_("Shutter speed value"), - olympusId, makerTags, signedRational, -1, printValue), - TagInfo(0x1001, "ISOSpeed", N_("ISO Speed"), - N_("ISO speed value"), - olympusId, makerTags, signedRational, -1, printValue), - TagInfo(0x1002, "ApertureValue", N_("Aperture Value"), - N_("Aperture value"), - olympusId, makerTags, signedRational, -1, printValue), - TagInfo(0x1003, "Brightness", N_("Brightness"), - N_("Brightness value"), - olympusId, makerTags, signedRational, -1, printValue), - TagInfo(0x1004, "FlashMode", N_("Flash Mode"), - N_("Flash mode"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x1005, "FlashDevice", N_("Flash Device"), - N_("Flash device"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFlashDevice)), - TagInfo(0x1006, "Bracket", N_("Bracket"), - N_("Exposure compensation value"), - olympusId, makerTags, signedRational, -1, printValue), - TagInfo(0x1007, "SensorTemperature", N_("Sensor Temperature"), - N_("Sensor temperature"), - olympusId, makerTags, signedShort, -1, printValue), - TagInfo(0x1008, "LensTemperature", N_("Lens Temperature"), - N_("Lens temperature"), - olympusId, makerTags, signedShort, -1, printValue), - TagInfo(0x1009, "LightCondition", N_("Light Condition"), - N_("Light condition"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x100a, "FocusRange", N_("Focus Range"), - N_("Focus range"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFocusRange)), - TagInfo(0x100b, "FocusMode", N_("Focus Mode"), - N_("Focus mode"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFocusMode)), - TagInfo(0x100c, "FocusDistance", N_("Focus Distance"), - N_("Manual focus distance"), - olympusId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x100d, "Zoom", N_("Zoom"), - N_("Zoom step count"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x100e, "MacroFocus", N_("Macro Focus"), - N_("Macro focus step count"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x100f, "SharpnessFactor", N_("Sharpness Factor"), - N_("Sharpness factor"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusSharpness)), - TagInfo(0x1010, "FlashChargeLevel", N_("Flash Charge Level"), - N_("Flash charge level"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1011, "ColorMatrix", N_("Color Matrix"), - N_("Color matrix"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1012, "BlackLevel", N_("BlackLevel"), - N_("Black level"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1013, "0x1013", "0x1013", - N_("Unknown"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1014, "0x1014", "0x1014", - N_("Unknown"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1015, "WhiteBalance", N_("White Balance"), - N_("White balance mode"), - olympusId, makerTags, unsignedShort, -1, print0x1015), - TagInfo(0x1016, "0x1016", "0x1016", - N_("Unknown"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1017, "RedBalance", N_("Red Balance"), - N_("Red balance"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1018, "BlueBalance", N_("Blue Balance"), - N_("Blue balance"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1019, "ColorMatrixNumber", N_("Color Matrix Number"), - N_("Color matrix mumber"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x101a, "SerialNumber2", N_("Serial Number 2"), - N_("Serial number 2"), - olympusId, makerTags, asciiString, -1, printValue), - TagInfo(0x101b, "0x101b", "0x101b", - N_("Unknown"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x101c, "0x101c", "0x101c", - N_("Unknown"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x101d, "0x101d", "0x101d", - N_("Unknown"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x101e, "0x101e", "0x101e", - N_("Unknown"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x101f, "0x101f", "0x101f", - N_("Unknown"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1020, "0x1020", "0x1020", - N_("Unknown"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1021, "0x1021", "0x1021", - N_("Unknown"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1022, "0x1022", "0x1022", - N_("Unknown"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1023, "FlashBias", N_("Flash Bias"), - N_("Flash exposure compensation"), - olympusId, makerTags, signedRational, -1, printValue), - TagInfo(0x1024, "0x1024", "0x1024", - N_("Unknown"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1025, "0x1025", "0x1025", - N_("Unknown"), - olympusId, makerTags, signedRational, -1, printValue), - TagInfo(0x1026, "ExternalFlashBounce", N_("External Flash Bounce"), - N_("External flash bounce"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x1027, "ExternalFlashZoom", N_("External Flash Zoom"), - N_("External flash zoom"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1028, "ExternalFlashMode", N_("External Flash Mode"), - N_("External flash mode"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1029, "Contrast", N_("Contrast"), - N_("Contrast setting"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusContrast)), - TagInfo(0x102a, "SharpnessFactor", N_("Sharpness Factor"), - N_("Sharpness factor"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x102b, "ColorControl", N_("Color Control"), - N_("Color control"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x102c, "ValidBits", N_("ValidBits"), - N_("Valid bits"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x102d, "CoringFilter", N_("CoringFilter"), - N_("Coring filter"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x102e, "ImageWidth", N_("Image Width"), - N_("Image width"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x102f, "ImageHeight", N_("Image Height"), - N_("Image height"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1030, "0x1030", "0x1030", - N_("Unknown"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1031, "0x1031", "0x1031", - N_("Unknown"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1032, "0x1032", "0x1032", - N_("Unknown"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1033, "0x1033", "0x1033", - N_("Unknown"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1034, "CompressionRatio", N_("Compression Ratio"), - N_("Compression ratio"), - olympusId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x1035, "Thumbnail", N_("Thumbnail"), - N_("Preview image embedded"), - olympusId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x1036, "ThumbnailOffset", N_("Thumbnail Offset"), - N_("Offset of the preview image"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1037, "ThumbnailLength", N_("Thumbnail Length"), - N_("Size of the preview image"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1039, "CCDScanMode", N_("CCD Scan Mode"), - N_("CCD scan mode"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusCCDScanMode)), - TagInfo(0x103a, "NoiseReduction", N_("Noise Reduction"), - N_("Noise reduction"), - olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x103b, "InfinityLensStep", N_("Infinity Lens Step"), - N_("Infinity lens step"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x103c, "NearLensStep", N_("Near Lens Step"), - N_("Near lens step"), - olympusId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x2010, "Equipment", N_("Equipment Info"), - N_("Camera equipment sub-IFD"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x2020, "CameraSettings", N_("Camera Settings"), - N_("Camera Settings sub-IFD"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x2030, "RawDevelopment", N_("Raw Development"), - N_("Raw development sub-IFD"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x2031, "RawDevelopment2", N_("Raw Development 2"), - N_("Raw development 2 sub-IFD"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x2040, "ImageProcessing", N_("Image Processing"), - N_("Image processing sub-IFD"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x2050, "FocusInfo", N_("Focus Info"), - N_("Focus sub-IFD"), - olympusId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x3000, "RawInfo", N_("Raw Info"), - N_("Raw sub-IFD"), - olympusId, makerTags, unsignedLong, -1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownOlympusMakerNoteTag)", "(UnknownOlympusMakerNoteTag)", - N_("Unknown OlympusMakerNote tag"), - olympusId, makerTags, asciiString, -1, printValue) - }; - - const TagInfo* OlympusMakerNote::tagList() - { - return tagInfo_; - } - -// Olympus CameraSettings Tags - //! ExposureMode, tag 0x0200 - extern const TagDetails olympusExposureMode[] = { - { 1, N_("Manual") }, - { 2, N_("Program") }, - { 3, N_("Aperture-priority AE") }, - { 4, N_("Shutter speed priority AE") }, - { 5, N_("Program-shift") } - }; - - //! MeteringMode, tag 0x0202 - extern const TagDetails olympusMeteringMode[] = { - { 2, N_("Center-weighted average") }, - { 3, N_("Spot") }, - { 5, N_("ESP") }, - { 261, N_("Pattern+AF") }, - { 515, N_("Spot+Highlight control") }, - { 1027, N_("Spot+Shadow control") } - }; - - //! MacroMode, tag 0x0300 - extern const TagDetails olympusMacroMode[] = { - { 0, N_("Off") }, - { 1, N_("On") }, - { 2, N_("Super Macro") } - }; - - //! FocusMode, tag 0x0301 - extern const TagDetails olympusCsFocusMode[] = { - { 0, N_("Single AF") }, - { 1, N_("Sequential shooting AF") }, - { 2, N_("Continuous AF") }, - { 3, N_("Multi AF") }, - { 10, N_("MF") } - }; - - //! FocusProcess, tag 0x0302 - extern const TagDetails olympusFocusProcess[] = { - { 0, N_("AF Not Used") }, - { 1, N_("AF Used") } - }; - - //! AFSearch, tag 0x0303 - extern const TagDetails olympusAFSearch[] = { - { 0, N_("Not Ready") }, - { 1, N_("Ready") } - }; - - //! FlashMode, tag 0x0400 - extern const TagDetailsBitmask olympusFlashMode[] = { - { 0x0000, N_("Off") }, - { 0x0001, N_("On") }, - { 0x0002, N_("Fill-in") }, - { 0x0004, N_("Red-eye") }, - { 0x0008, N_("Slow-sync") }, - { 0x0010, N_("Forced On") }, - { 0x0020, N_("2nd Curtain") } - }; - - //! FlashRemoteControl, tag 0x0403 - extern const TagDetails olympusFlashRemoteControl[] = { - { 0x0, N_("Off") }, - { 0x1, N_("Channel 1, Low") }, - { 0x2, N_("Channel 2, Low") }, - { 0x3, N_("Channel 3, Low") }, - { 0x4, N_("Channel 4, Low") }, - { 0x9, N_("Channel 1, Mid") }, - { 0xa, N_("Channel 2, Mid") }, - { 0xb, N_("Channel 3, Mid") }, - { 0xc, N_("Channel 4, Mid") }, - { 0x11, N_("Channel 1, High") }, - { 0x12, N_("Channel 2, High") }, - { 0x13, N_("Channel 3, High") }, - { 0x14, N_("Channel 4, High") } - }; - - //! FlashControlMode, tag 0x0404 - extern const TagDetails olympusFlashControlMode[] = { - { 0, N_("Off") }, - { 3, N_("TTL") }, - { 4, N_("Auto") }, - { 5, N_("Manual") } - }; - - //! WhiteBalance, tag 0x0500 - extern const TagDetails olympusWhiteBalance[] = { - { 0, N_("Auto") }, - { 16, N_("7500K (Fine Weather with Shade)") }, - { 17, N_("6000K (Cloudy)") }, - { 18, N_("5300K (Fine Weather)") }, - { 20, N_("3000K (Tungsten light)") }, - { 21, N_("3600K (Tungsten light-like)") }, - { 33, N_("6600K (Daylight fluorescent)") }, - { 34, N_("4500K (Neutral white fluorescent)") }, - { 35, N_("4000K (Cool white fluorescent)") }, - { 48, N_("3600K (Tungsten light-like)") }, - { 256, N_("Custom WB 1") }, - { 257, N_("Custom WB 2") }, - { 258, N_("Custom WB 3") }, - { 259, N_("Custom WB 4") }, - { 512, N_("Custom WB 5400K") }, - { 513, N_("Custom WB 2900K") }, - { 514, N_("Custom WB 8000K") } - }; - - //! ModifiedSaturation, tag 0x0504 - extern const TagDetails olympusModifiedSaturation[] = { - { 0, N_("Off") }, - { 1, N_("CM1 (Red Enhance)") }, - { 2, N_("CM2 (Green Enhance)") }, - { 3, N_("CM3 (Blue Enhance)") }, - { 4, N_("CM4 (Skin Tones)") } - }; - - //! ColorSpace, tag 0x0507 - extern const TagDetails olympusColorSpace[] = { - { 0, N_("sRGB") }, - { 1, N_("Adobe RGB") }, - { 2, N_("Pro Photo RGB") } - }; - - //! NoiseReduction, tag 0x050a - extern const TagDetailsBitmask olympusNoiseReduction[] = { - { 0x0001, N_("Noise Reduction") }, - { 0x0002, N_("Noise Filter") }, - { 0x0004, N_("Noise Filter (ISO Boost)") }, - { 0x0008, N_("Auto") } - }; - - //! PictureMode, tag 0x0520 - extern const TagDetails olympusPictureMode[] = { - { 1, N_("Vivid") }, - { 2, N_("Natural") }, - { 3, N_("Muted") }, - { 4, N_("Portrait") }, - { 256, N_("Monotone") }, - { 512, N_("Sepia") } - }; - - //! PictureModeBWFilter, tag 0x0525 - extern const TagDetails olympusPictureModeBWFilter[] = { - { 0, N_("n/a") }, - { 1, N_("Neutral") }, - { 2, N_("Yellow") }, - { 3, N_("Orange") }, - { 4, N_("Red") }, - { 5, N_("Green") } - }; - - //! PictureModeTone, tag 0x0526 - extern const TagDetails olympusPictureModeTone[] = { - { 0, N_("n/a") }, - { 1, N_("Neutral") }, - { 2, N_("Sepia") }, - { 3, N_("Blue") }, - { 4, N_("Purple") }, - { 5, N_("Green") } - }; - - //! OlympusCs Quality, tag 0x0603 - extern const TagDetails olympusCsQuality[] = { - { 1, N_("SQ") }, - { 2, N_("HQ") }, - { 3, N_("SHQ") }, - { 4, N_("RAW") } - }; - - //! Olympus ImageStabilization, tag 0x0604 - extern const TagDetails olympusImageStabilization[] = { - { 0, N_("Off") }, - { 1, N_("On, Mode 1") }, - { 2, N_("On, Mode 2") }, - { 3, N_("On, Mode 3") } - }; - - const TagInfo OlympusMakerNote::tagInfoCs_[] = { - TagInfo(0x0000, "CameraSettingsVersion", N_("Camera Settings Version"), N_("Camera settings version"), olympusCsId, makerTags, undefined, -1, printExifVersion), - TagInfo(0x0100, "PreviewImageValid", N_("PreviewImage Valid"), N_("Preview image valid"), olympusCsId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(olympusNoYes)), - TagInfo(0x0101, "PreviewImageStart", N_("PreviewImage Start"), N_("Preview image start"), olympusCsId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0102, "PreviewImageLength", N_("PreviewImage Length"), N_("Preview image length"), olympusCsId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0200, "ExposureMode", N_("Exposure Mode"), N_("Exposure mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusExposureMode)), - TagInfo(0x0201, "AELock", N_("AE Lock"), N_("Auto exposure lock"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x0202, "MeteringMode", N_("Metering Mode"), N_("Metering mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusMeteringMode)), - TagInfo(0x0203, "ExposureShift", N_("Exposure Shift"), N_("Exposure shift"), olympusCsId, makerTags, signedRational, -1, printValue), - TagInfo(0x0300, "MacroMode", N_("Macro Mode"), N_("Macro mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusMacroMode)), - TagInfo(0x0301, "FocusMode", N_("Focus Mode"), N_("Focus mode"), olympusCsId, makerTags, unsignedShort, -1, printCs0x0301), - TagInfo(0x0302, "FocusProcess", N_("Focus Process"), N_("Focus process"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFocusProcess)), - TagInfo(0x0303, "AFSearch", N_("AF Search"), N_("AF search"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusAFSearch)), - TagInfo(0x0304, "AFAreas", N_("AF Areas"), N_("AF areas"), olympusCsId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0305, "AFPointSelected", N_("AFPointSelected"), N_("AFPointSelected"), olympusCsId, makerTags, signedRational, -1, printValue), - TagInfo(0x0307, "AFFineTuneAdj", N_("AF Fine Tune Adjust"), N_("AF fine tune adjust"), olympusCsId, makerTags, signedShort, -1, printValue), - TagInfo(0x0400, "FlashMode", N_("Flash Mode"), N_("Flash mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusFlashMode)), - TagInfo(0x0401, "FlashExposureComp", N_("Flash Exposure Compensation"), N_("Flash exposure compensation"), olympusCsId, makerTags, signedRational, -1, printValue), - TagInfo(0x0403, "FlashRemoteControl", N_("Flash Remote Control"), N_("Flash remote control"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFlashRemoteControl)), - TagInfo(0x0404, "FlashControlMode", N_("Flash Control Mode"), N_("Flash control mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFlashControlMode)), - TagInfo(0x0405, "FlashIntensity", N_("Flash Intensity"), N_("Flash intensity"), olympusCsId, makerTags, signedRational, -1, printValue), - TagInfo(0x0406, "ManualFlashStrength", N_("Manual Flash Strength"), N_("Manual flash strength"), olympusCsId, makerTags, signedRational, -1, printValue), - TagInfo(0x0500, "WhiteBalance", N_("White Balance 2"), N_("White balance 2"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusWhiteBalance)), - TagInfo(0x0501, "WhiteBalanceTemperature", N_("White Balance Temperature"), N_("White balance temperature"), olympusCsId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0502, "WhiteBalanceBracket", N_("White Balance Bracket"), N_("White balance bracket"), olympusCsId, makerTags, signedShort, -1, printValue), - TagInfo(0x0503, "CustomSaturation", N_("Custom Saturation"), N_("Custom saturation"), olympusCsId, makerTags, signedShort, -1, printValue), - TagInfo(0x0504, "ModifiedSaturation", N_("Modified Saturation"), N_("Modified saturation"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusModifiedSaturation)), - TagInfo(0x0505, "ContrastSetting", N_("Contrast Setting"), N_("Contrast setting"), olympusCsId, makerTags, signedShort, -1, printValue), - TagInfo(0x0506, "SharpnessSetting", N_("Sharpness Setting"), N_("Sharpness setting"), olympusCsId, makerTags, signedShort, -1, printValue), - TagInfo(0x0507, "ColorSpace", N_("Color Space"), N_("Color space"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusColorSpace)), - TagInfo(0x0509, "SceneMode", N_("Scene Mode"), N_("Scene mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusSceneMode)), - TagInfo(0x050a, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)), - TagInfo(0x050b, "DistortionCorrection", N_("Distortion Correction"), N_("Distortion correction"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x050c, "ShadingCompensation", N_("Shading Compensation"), N_("Shading compensation"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x050d, "CompressionFactor", N_("Compression Factor"), N_("Compression factor"), olympusCsId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x050f, "Gradation", N_("Gradation"), N_("Gradation"), olympusCsId, makerTags, signedShort, -1, print0x050f), - TagInfo(0x0520, "PictureMode", N_("Picture Mode"), N_("Picture mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusPictureMode)), - TagInfo(0x0521, "PictureModeSaturation", N_("Picture Mode Saturation"), N_("Picture mode saturation"), olympusCsId, makerTags, signedShort, -1, printValue), - TagInfo(0x0522, "PictureModeHue", N_("Picture Mode Hue"), N_("Picture mode hue"), olympusCsId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0523, "PictureModeContrast", N_("Picture Mode Contrast"), N_("Picture mode contrast"), olympusCsId, makerTags, signedShort, -1, printValue), - TagInfo(0x0524, "PictureModeSharpness", N_("Picture Mode Sharpness"), N_("Picture mode sharpness"), olympusCsId, makerTags, signedShort, -1, printValue), - TagInfo(0x0525, "PictureModeBWFilter", N_("Picture Mode BW Filter"), N_("Picture mode BW filter"), olympusCsId, makerTags, signedShort, -1, EXV_PRINT_TAG(olympusPictureModeBWFilter)), - TagInfo(0x0526, "PictureModeTone", N_("Picture Mode Tone"), N_("Picture mode tone"), olympusCsId, makerTags, signedShort, -1, EXV_PRINT_TAG(olympusPictureModeTone)), - TagInfo(0x0527, "NoiseFilter", N_("Noise Filter"), N_("Noise filter"), olympusCsId, makerTags, signedShort, -1, print0x0527), - TagInfo(0x0529, "ArtFilter", N_("Art Filter"), N_("Art filter"), olympusCsId, makerTags, unsignedShort, -1, print0x0529), - TagInfo(0x052c, "MagicFilter", N_("Magic Filter"), N_("Magic filter"), olympusCsId, makerTags, unsignedShort, -1, print0x0529), - TagInfo(0x0600, "DriveMode", N_("Drive Mode"), N_("Drive mode"), olympusCsId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0601, "PanoramaMode", N_("Panorama Mode"), N_("Panorama mode"), olympusCsId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0603, "Quality", N_("Image Quality 2"), N_("Image quality 2"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusCsQuality)), - TagInfo(0x0604, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusImageStabilization)), - TagInfo(0x0900, "ManometerPressure", N_("Manometer Pressure"), N_("Manometer pressure"), olympusCsId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0901, "ManometerReading", N_("Manometer Reading"), N_("Manometer reading"), olympusCsId, makerTags, signedLong, -1, printValue), - TagInfo(0x0902, "ExtendedWBDetect", N_("Extended WB Detect"), N_("Extended WB detect"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x0903, "LevelGaugeRoll", N_("Level Gauge Roll"), N_("Level gauge roll"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x0904, "LevelGaugePitch", N_("Level Gauge Pitch"), N_("Level gauge pitch"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - // End of list marker - TagInfo(0xffff, "(UnknownOlympusCsTag)", "(UnknownOlympusCsTag)", N_("Unknown OlympusCs tag"), olympusCsId, makerTags, asciiString, -1, printValue) - }; - - const TagInfo* OlympusMakerNote::tagListCs() - { - return tagInfoCs_; - } - - //! OlympusEq FlashType, tag 0x1000 - extern const TagDetails olympusEqFlashType[] = { - { 0, N_("None") }, - { 2, N_("Simple E-System") }, - { 3, N_("E-System") } - }; - - //! OlympusEq FlashModel, tag 0x1001 - extern const TagDetails olympusEqFlashModel[] = { - { 0, N_("None") }, - { 1, "FL-20" }, - { 2, "FL-50" }, - { 3, "RF-11" }, - { 4, "TF-22" }, - { 5, "FL-36" }, - { 6, "FL-50R" }, - { 7, "FL-36R" }, - { 7, "FL-36R" } // To silence compiler warning - }; - - const TagInfo OlympusMakerNote::tagInfoEq_[] = { - TagInfo(0x0000, "EquipmentVersion", N_("Equipment Version"), N_("Equipment version"), olympusEqId, makerTags, undefined, -1, printExifVersion), - TagInfo(0x0100, "CameraType", N_("Camera Type"), N_("Camera type"), olympusEqId, makerTags, asciiString, -1, printValue), - TagInfo(0x0101, "SerialNumber", N_("Serial Number"), N_("Serial number"), olympusEqId, makerTags, asciiString, -1, printValue), - TagInfo(0x0102, "InternalSerialNumber", N_("Internal Serial Number"), N_("Internal serial number"), olympusEqId, makerTags, asciiString, -1, printValue), - TagInfo(0x0103, "FocalPlaneDiagonal", N_("Focal Plane Diagonal"), N_("Focal plane diagonal"), olympusEqId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x0104, "BodyFirmwareVersion", N_("Body Firmware Version"), N_("Body firmware version"), olympusEqId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0201, "LensType", N_("Lens Type"), N_("Lens type"), olympusEqId, makerTags, unsignedByte, -1, print0x0201), - TagInfo(0x0202, "LensSerialNumber", N_("Lens Serial Number"), N_("Lens serial number"), olympusEqId, makerTags, asciiString, -1, printValue), - TagInfo(0x0203, "LensModel", N_("Lens Model"), N_("Lens model"), olympusEqId, makerTags, asciiString, -1, printValue), - TagInfo(0x0204, "LensFirmwareVersion", N_("Lens Firmware Version"), N_("Lens firmware version"), olympusEqId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0205, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal"), olympusEqId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0206, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal"), olympusEqId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0207, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), olympusEqId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0208, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), olympusEqId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x020a, "MaxApertureAtCurrentFocal", N_("Max Aperture At Current Focal"), N_("Max aperture at current focal"), olympusEqId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x020b, "LensProperties", N_("Lens Properties"), N_("Lens properties"), olympusEqId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0301, "Extender", N_("Extender"), N_("Extender"), olympusEqId, makerTags, unsignedByte, -1, printEq0x0301), - TagInfo(0x0302, "ExtenderSerialNumber", N_("Extender Serial Number"), N_("Extender serial number"), olympusEqId, makerTags, asciiString, -1, printValue), - TagInfo(0x0303, "ExtenderModel", N_("Extender Model"), N_("Extender model"), olympusEqId, makerTags, asciiString, -1, printValue), - TagInfo(0x0304, "ExtenderFirmwareVersion", N_("Extender Firmware Version"), N_("Extender firmwareversion"), olympusEqId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1000, "FlashType", N_("Flash Type"), N_("Flash type"), olympusEqId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusEqFlashType)), - TagInfo(0x1001, "FlashModel", N_("Flash Model"), N_("Flash model"), olympusEqId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusEqFlashModel)), - TagInfo(0x1002, "FlashFirmwareVersion", N_("Flash Firmware Version"), N_("Flash firmware version"), olympusEqId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1003, "FlashSerialNumber", N_("FlashSerialNumber"), N_("FlashSerialNumber"), olympusEqId, makerTags, asciiString, -1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownOlympusEqTag)", "(UnknownOlympusEqTag)", N_("Unknown OlympusEq tag"), olympusEqId, makerTags, asciiString, -1, printValue) - }; - - const TagInfo* OlympusMakerNote::tagListEq() - { - return tagInfoEq_; - } - - //! OlympusRd ColorSpace, tag 0x0108 - extern const TagDetails olympusRdColorSpace[] = { - { 0, N_("sRGB") }, - { 1, N_("Adobe RGB") }, - { 2, N_("Pro Photo RGB") } - }; - - //! OlympusRd Engine, tag 0x0109 - extern const TagDetails olympusRdEngine[] = { - { 0, N_("High Speed") }, - { 1, N_("High Function") }, - { 2, N_("Advanced High Speed") }, - { 3, N_("Advanced High Function") } - }; - - //! OlympusRd EditStatus, tag 0x010b - extern const TagDetails olympusRdEditStatus[] = { - { 0, N_("Original") }, - { 1, N_("Edited (Landscape)") }, - { 6, N_("Edited (Portrait)") }, - { 8, N_("Edited (Portrait)") } - }; - - //! OlympusRd Settings, tag 0x010c - extern const TagDetailsBitmask olympusRdSettings[] = { - { 0x0001, N_("WB Color Temp") }, - { 0x0004, N_("WB Gray Point") }, - { 0x0008, N_("Saturation") }, - { 0x0010, N_("Contrast") }, - { 0x0020, N_("Sharpness") }, - { 0x0040, N_("Color Space") }, - { 0x0080, N_("High Function") }, - { 0x0100, N_("Noise Reduction") } - }; - - const TagInfo OlympusMakerNote::tagInfoRd_[] = { - TagInfo(0x0000, "RawDevVersion", N_("Raw Development Version"), N_("Raw development version"), olympusRdId, makerTags, undefined, -1, printExifVersion), - TagInfo(0x0100, "ExposureBiasValue", N_("Exposure Bias Value"), N_("Exposure bias value"), olympusRdId, makerTags, signedRational, -1, printValue), - TagInfo(0x0101, "WhiteBalanceValue", N_("White Balance Value"), N_("White balance value"), olympusRdId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0102, "WBFineAdjustment", N_("WB Fine Adjustment"), N_("WB fine adjustment"), olympusRdId, makerTags, signedShort, -1, printValue), - TagInfo(0x0103, "GrayPoint", N_("Gray Point"), N_("Gray point"), olympusRdId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0104, "SaturationEmphasis", N_("Saturation Emphasis"), N_("Saturation emphasis"), olympusRdId, makerTags, signedShort, -1, printValue), - TagInfo(0x0105, "MemoryColorEmphasis", N_("Memory Color Emphasis"), N_("Memory color emphasis"), olympusRdId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0106, "ContrastValue", N_("Contrast Value"), N_("Contrast value"), olympusRdId, makerTags, signedShort, -1, printValue), - TagInfo(0x0107, "SharpnessValue", N_("Sharpness Value"), N_("Sharpness value"), olympusRdId, makerTags, signedShort, -1, printValue), - TagInfo(0x0108, "ColorSpace", N_("Color Space"), N_("Color space"), olympusRdId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRdColorSpace)), - TagInfo(0x0109, "Engine", N_("Engine"), N_("Engine"), olympusRdId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRdEngine)), - TagInfo(0x010a, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), olympusRdId, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)), - TagInfo(0x010b, "EditStatus", N_("Edit Status"), N_("Edit status"), olympusRdId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRdEditStatus)), - TagInfo(0x010c, "Settings", N_("Settings"), N_("Settings"), olympusRdId, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusRdSettings)), - // End of list marker - TagInfo(0xffff, "(UnknownOlympusRdTag)", "(UnknownOlympusRdTag)", N_("Unknown OlympusRd tag"), olympusRdId, makerTags, asciiString, -1, printValue) - }; - - const TagInfo* OlympusMakerNote::tagListRd() - { - return tagInfoRd_; - } - - //! OlympusRd2 WhiteBalance, tag 0x0101 - extern const TagDetails olympusRd2WhiteBalance[] = { - { 1, N_("Color Temperature") }, - { 2, N_("Gray Point") } - }; - - //! OlympusRd2 ColorSpace, tag 0x0109 - extern const TagDetails olympusRd2ColorSpace[] = { - { 0, N_("sRGB") }, - { 1, N_("Adobe RGB") }, - { 2, N_("Pro Photo RGB") } - }; - - //! OlympusRd2 Engine, tag 0x010b - extern const TagDetails olympusRd2Engine[] = { - { 0, N_("High Speed") }, - { 1, N_("High Function") } - }; - - //! OlympusRd2 PictureMode, tag 0x010c - extern const TagDetails olympusRd2PictureMode[] = { - { 1, N_("Vivid") }, - { 2, N_("Natural") }, - { 3, N_("Muted") }, - { 256, N_("Monotone") }, - { 512, N_("Sepia") } - }; - - //! OlympusRd2 PM_BWFilter, tag 0x0110 - extern const TagDetails olympusRd2PM_BWFilter[] = { - { 1, N_("Neutral") }, - { 2, N_("Yellow") }, - { 3, N_("Orange") }, - { 4, N_("Red") }, - { 5, N_("Green") } - }; - - //! OlympusRd2 PMPictureTone, tag 0x0111 - extern const TagDetails olympusRd2PMPictureTone[] = { - { 1, N_("Neutral") }, - { 2, N_("Sepia") }, - { 3, N_("Blue") }, - { 4, N_("Purple") }, - { 5, N_("Green") } - }; - - const TagInfo OlympusMakerNote::tagInfoRd2_[] = { - TagInfo(0x0000, "RawDev2Version", N_("Raw Development 2 Version"), N_("Raw development 2 version"), olympusRd2Id, makerTags, undefined, -1, printExifVersion), - TagInfo(0x0100, "ExposureBiasValue", N_("Exposure Bias Value"), N_("Exposure bias value"), olympusRd2Id, makerTags, signedRational, -1, printValue), - TagInfo(0x0101, "WhiteBalance", N_("White Balance"), N_("White balance"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2WhiteBalance)), - TagInfo(0x0102, "WhiteBalanceValue", N_("White Balance Value"), N_("White balance value"), olympusRd2Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0103, "WBFineAdjustment", N_("WB Fine Adjustment"), N_("White balance fine adjustment"), olympusRd2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0104, "GrayPoint", N_("Gray Point"), N_("Gray point"), olympusRd2Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0105, "ContrastValue", N_("Contrast Value"), N_("Contrast value"), olympusRd2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0106, "SharpnessValue", N_("Sharpness Value"), N_("Sharpness value"), olympusRd2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0107, "SaturationEmphasis", N_("Saturation Emphasis"), N_("Saturation emphasis"), olympusRd2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0108, "MemoryColorEmphasis", N_("Memory Color Emphasis"), N_("Memory color emphasis"), olympusRd2Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0109, "ColorSpace", N_("Color Space"), N_("Color space"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2ColorSpace)), - TagInfo(0x010a, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)), - TagInfo(0x010b, "Engine", N_("Engine"), N_("Engine"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2Engine)), - TagInfo(0x010c, "PictureMode", N_("Picture Mode"), N_("Picture mode"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2PictureMode)), - TagInfo(0x010d, "PMSaturation", N_("PM Saturation"), N_("Picture mode saturation"), olympusRd2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x010e, "PMContrast", N_("PM Contrast"), N_("Picture mode contrast"), olympusRd2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x010f, "PMSharpness", N_("PM Sharpness"), N_("Picture mode sharpness"), olympusRd2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0110, "PM_BWFilter", N_("PM BW Filter"), N_("PM BW filter"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2PM_BWFilter)), - TagInfo(0x0111, "PMPictureTone", N_("PM Picture Tone"), N_("PM picture tone"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2PMPictureTone)), - TagInfo(0x0112, "Gradation", N_("Gradation"), N_("Gradation"), olympusRd2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0113, "Saturation", N_("Saturation"), N_("Saturation"), olympusRd2Id, makerTags, signedShort, -1, printValue), - TagInfo(0x0119, "AutoGradation", N_("Auto Gradation"), N_("Auto gradation"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x0120, "PMNoiseFilter", N_("PM Noise Filter"), N_("Picture mode noise filter"), olympusRd2Id, makerTags, unsignedShort, -1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownOlympusRd2Tag)", "(UnknownOlympusRd2Tag)", N_("Unknown OlympusRd2 tag"), olympusRd2Id, makerTags, asciiString, -1, printValue) - }; - - const TagInfo* OlympusMakerNote::tagListRd2() - { - return tagInfoRd2_; - } - - //! OlympusIp MultipleExposureMode, tag 0x101c - extern const TagDetails olympusIpMultipleExposureMode[] = { - { 0, N_("Off") }, - { 2, N_("On (2 frames)") }, - { 3, N_("On (3 frames)") } - }; - - //! OlympusIp olympusIpAspectRatio, tag 0x101c - extern const TagDetails olympusIpAspectRatio[] = { - { 1, N_("4:3") }, - { 2, N_("3:2") }, - { 3, N_("16:9") }, - { 4, N_("6:6") }, - { 5, N_("5:4") }, - { 6, N_("7:6") }, - { 7, N_("6:5") }, - { 8, N_("7:5") }, - { 9, N_("3:4") } - }; - - const TagInfo OlympusMakerNote::tagInfoIp_[] = { - TagInfo(0x0000, "ImageProcessingVersion", N_("Image Processing Version"), N_("Image processing version"), olympusIpId, makerTags, undefined, -1, printExifVersion), - TagInfo(0x0100, "WB_RBLevels", N_("WB RB Levels"), N_("WB RB levels"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0102, "WB_RBLevels3000K", N_("WB RB Levels 3000K"), N_("WB RB levels 3000K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0103, "WB_RBLevels3300K", N_("WB RB Levels 3300K"), N_("WB RB levels 3300K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0104, "WB_RBLevels3600K", N_("WB RB Levels 3600K"), N_("WB RB levels 3600K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0105, "WB_RBLevels3900K", N_("WB RB Levels 3900K"), N_("WB RB levels 3900K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0106, "WB_RBLevels4000K", N_("WB RB Levels 4000K"), N_("WB RB levels 4000K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0107, "WB_RBLevels4300K", N_("WB RB Levels 4300K"), N_("WB RB levels 4300K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0108, "WB_RBLevels4500K", N_("WB RB Levels 4500K"), N_("WB RB levels 4500K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0109, "WB_RBLevels4800K", N_("WB RB Levels 4800K"), N_("WB RB levels 4800K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x010a, "WB_RBLevels5300K", N_("WB RB Levels 5300K"), N_("WB RB levels 5300K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x010b, "WB_RBLevels6000K", N_("WB RB Levels 6000K"), N_("WB RB levels 6000K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x010c, "WB_RBLevels6600K", N_("WB RB Levels 6600K"), N_("WB RB levels 6600K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x010d, "WB_RBLevels7500K", N_("WB RB Levels 7500K"), N_("WB RB levels 7500K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x010e, "WB_RBLevelsCWB1", N_("WB RB Levels CWB1"), N_("WB RB levels CWB1"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x010f, "WB_RBLevelsCWB2", N_("WB RB Levels CWB2"), N_("WB RB levels CWB2"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0110, "WB_RBLevelsCWB3", N_("WB RB Levels CWB3"), N_("WB RB levels CWB3"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0111, "WB_RBLevelsCWB4", N_("WB RB Levels CWB4"), N_("WB RB levels CWB4"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0113, "WB_GLevel3000K", N_("WB G Level 3000K"), N_("WB G level 3000K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0114, "WB_GLevel3300K", N_("WB G Level 3300K"), N_("WB G level 3300K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0115, "WB_GLevel3600K", N_("WB G Level 3600K"), N_("WB G level 3600K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0116, "WB_GLevel3900K", N_("WB G Level 3900K"), N_("WB G level 3900K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0117, "WB_GLevel4000K", N_("WB G Level 4000K"), N_("WB G level 4000K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0118, "WB_GLevel4300K", N_("WB G Level 4300K"), N_("WB G level 4300K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0119, "WB_GLevel4500K", N_("WB G Level 4500K"), N_("WB G level 4500K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x011a, "WB_GLevel4800K", N_("WB G Level 4800K"), N_("WB G level 4800K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x011b, "WB_GLevel5300K", N_("WB G Level 5300K"), N_("WB G level 5300K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x011c, "WB_GLevel6000K", N_("WB G Level 6000K"), N_("WB G level 6000K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x011d, "WB_GLevel6600K", N_("WB G Level 6600K"), N_("WB G level 6600K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x011e, "WB_GLevel7500K", N_("WB G Level 7500K"), N_("WB G level 7500K"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x011f, "WB_GLevel", N_("WB G Level"), N_("WB G level"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0200, "ColorMatrix", N_("Color Matrix"), N_("Color matrix"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0300, "Enhancer", N_("Enhancer"), N_("Enhancer"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0301, "EnhancerValues", N_("Enhancer Values"), N_("Enhancer values"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0310, "CoringFilter", N_("Coring Filter"), N_("Coring filter"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0311, "CoringValues", N_("Coring Values"), N_("Coring values"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0600, "BlackLevel", N_("Black Level"), N_("Black level"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0610, "GainBase", N_("Gain Base"), N_("Gain base"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0611, "ValidBits", N_("Valid Bits"), N_("Valid bits"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0612, "CropLeft", N_("Crop Left"), N_("Crop left"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0613, "CropTop", N_("Crop Top"), N_("Crop top"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0614, "CropWidth", N_("Crop Width"), N_("Crop width"), olympusIpId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0615, "CropHeight", N_("Crop Height"), N_("Crop height"), olympusIpId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1010, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), olympusIpId, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)), - TagInfo(0x1011, "DistortionCorrection", N_("Distortion Correction"), N_("Distortion correction"), olympusIpId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x1012, "ShadingCompensation", N_("Shading Compensation"), N_("Shading compensation"), olympusIpId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x101c, "MultipleExposureMode", N_("Multiple Exposure Mode"), N_("Multiple exposure mode"), olympusIpId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusIpMultipleExposureMode)), - TagInfo(0x1112, "AspectRatio", N_("Aspect Ratio"), N_("Aspect ratio"), olympusIpId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(olympusIpAspectRatio)), - TagInfo(0x1113, "AspectFrame", N_("Aspect Frame"), N_("Aspect frame"), olympusIpId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1200, "FaceDetect", N_("Face Detect"), N_("Face detect"), olympusIpId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x1201, "FaceDetectArea", N_("Face Detect Area"), N_("Face detect area"), olympusIpId, makerTags, signedShort, -1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownOlympusIpTag)", "(UnknownOlympusIpTag)", N_("Unknown OlympusIp tag"), olympusIpId, makerTags, asciiString, -1, printValue) - }; - - const TagInfo* OlympusMakerNote::tagListIp() - { - return tagInfoIp_; - } - - //! OlympusFi ExternalFlashBounce, tag 0x1204 - extern const TagDetails olympusFiExternalFlashBounce[] = { - { 0, N_("Bounce or Off") }, - { 1, N_("Direct") } - }; - - const TagInfo OlympusMakerNote::tagInfoFi_[] = { - TagInfo(0x0000, "FocusInfoVersion", N_("Focus Info Version"), N_("Focus info version"), olympusFiId, makerTags, undefined, -1, printExifVersion), - TagInfo(0x0209, "AutoFocus", N_("Auto Focus"), N_("Auto focus"), olympusFiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x0210, "SceneDetect", N_("Scene Detect"), N_("Scene detect"), olympusFiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0211, "SceneArea", N_("Scene Area"), N_("Scene area"), olympusFiId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0212, "SceneDetectData", N_("Scene Detect Data"), N_("Scene detect data"), olympusFiId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0300, "ZoomStepCount", N_("Zoom Step Count"), N_("Zoom step count"), olympusFiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0301, "FocusStepCount", N_("Focus Step Count"), N_("Focus step count"), olympusFiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0303, "FocusStepInfinity", N_("Focus Step Infinity"), N_("Focus step infinity"), olympusFiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0304, "FocusStepNear", N_("Focus Step Near"), N_("Focus step near"), olympusFiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0305, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), olympusFiId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x0308, "AFPoint", N_("AF Point"), N_("AF point"), olympusFiId, makerTags, unsignedShort, -1, print0x0308), - TagInfo(0x1201, "ExternalFlash", N_("External Flash"), N_("External flash"), olympusFiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x1203, "ExternalFlashGuideNumber", N_("External Flash Guide Number"), N_("External flash guide number"), olympusFiId, makerTags, signedRational, -1, printValue), - TagInfo(0x1204, "ExternalFlashBounce", N_("External Flash Bounce"), N_("External flash bounce"), olympusFiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFiExternalFlashBounce)), - TagInfo(0x1205, "ExternalFlashZoom", N_("External Flash Zoom"), N_("External flash zoom"), olympusFiId, makerTags, unsignedRational, -1, printValue), - TagInfo(0x1208, "InternalFlash", N_("Internal Flash"), N_("Internal flash"), olympusFiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), - TagInfo(0x1209, "ManualFlash", N_("Manual Flash"), N_("Manual flash"), olympusFiId, makerTags, unsignedShort, -1, print0x1209), - TagInfo(0x1500, "SensorTemperature", N_("Sensor Temperature"), N_("Sensor temperature"), olympusFiId, makerTags, signedShort, -1, printValue), - TagInfo(0x1600, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), olympusFiId, makerTags, unsignedLong, -1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownOlympusFiTag)", "(UnknownOlympusFiTag)", N_("Unknown OlympusFi tag"), olympusFiId, makerTags, asciiString, -1, printValue) - }; - - const TagInfo* OlympusMakerNote::tagListFi() - { - return tagInfoFi_; - } - - const TagInfo OlympusMakerNote::tagInfoFe_[] = { - TagInfo(0x0100, "BodyFirmwareVersion", N_("Body Firmware Version"), N_("Body firmware version"), olympusFe1Id, makerTags, asciiString, -1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownOlympusFeTag)", "(UnknownOlympusFeTag)", N_("Unknown OlympusFe tag"), olympusFe1Id, makerTags, asciiString, -1, printValue) - }; - - const TagInfo* OlympusMakerNote::tagListFe() - { - return tagInfoFe_; - } - - //! OlympusRi LightSource, tag 0x1000 - extern const TagDetails olympusRiLightSource[] = { - { 0, N_("Unknown") }, - { 16, N_("Shade") }, - { 17, N_("Cloudy") }, - { 18, N_("Fine Weather") }, - { 20, N_("Tungsten (incandescent)") }, - { 22, N_("Evening Sunlight") }, - { 33, N_("Daylight Fluorescent (D 5700 - 7100K)") }, - { 34, N_("Day White Fluorescent (N 4600 - 5400K)") }, - { 35, N_("Cool White Fluorescent (W 3900 - 4500K)") }, - { 36, N_("White Fluorescent (WW 3200 - 3700K)") }, - { 256, N_("One Touch White Balance") }, - { 512, N_("Custom 1-4") } - }; - - const TagInfo OlympusMakerNote::tagInfoRi_[] = { - TagInfo(0x0000, "RawInfoVersion", N_("Raw Info Version"), N_("Raw info version"), olympusRiId, makerTags, undefined, -1, printValue), - TagInfo(0x0100, "WB_RBLevelsUsed", N_("WB_RB Levels Used"), N_("WB_RB levels used"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0110, "WB_RBLevelsAuto", N_("WB_RB Levels Auto"), N_("WB_RB levels auto"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0120, "WB_RBLevelsShade", N_("WB_RB Levels Shade"), N_("WB_RB levels shade"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0121, "WB_RBLevelsCloudy", N_("WB_RB Levels Cloudy"), N_("WB_RB levels cloudy"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0122, "WB_RBLevelsFineWeather", N_("WB_RB Levels Fine Weather"), N_("WB_RB levels fine weather"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0123, "WB_RBLevelsTungsten", N_("WB_RB Levels Tungsten"), N_("WB_RB levels tungsten"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0124, "WB_RBLevelsEveningSunlight", N_("WB_RB Levels Evening Sunlight"), N_("WB_RB levels evening sunlight"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0130, "WB_RBLevelsDaylightFluor", N_("WB_RB Levels Daylight Fluor"), N_("WB_RB levels daylight fluor"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0131, "WB_RBLevelsDayWhiteFluor", N_("WB_RB Levels Day White Fluor"), N_("WB_RB levels day white fluor"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0132, "WB_RBLevelsCoolWhiteFluor", N_("WB_RB Levels Cool White Fluor"), N_("WB_RB levels cool white fluor"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0133, "WB_RBLevelsWhiteFluorescent", N_("WB_RB Levels White Fluorescent"), N_("WB_RB levels white fluorescent"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0200, "ColorMatrix2", N_("Color Matrix2"), N_("Color matrix 2"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0310, "CoringFilter", N_("Coring Filter"), N_("Coring filter"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0311, "CoringValues", N_("Coring Values"), N_("Coring values"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0600, "BlackLevel2", N_("Black Level 2"), N_("Black level 2"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0601, "YCbCrCoefficients", N_("YCbCr Coefficients"), N_("YCbCr coefficients"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0611, "ValidPixelDepth", N_("Valid Pixel Depth"), N_("Valid pixel depth"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0612, "CropLeft", N_("Crop Left"), N_("Crop left"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0613, "CropTop", N_("Crop Top"), N_("Crop top"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0614, "CropWidth", N_("Crop Width"), N_("Crop width"), olympusRiId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0615, "CropHeight", N_("Crop Height"), N_("Crop height"), olympusRiId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x1000, "LightSource", N_("Light Source"), N_("Light source"), olympusRiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRiLightSource)), - TagInfo(0x1001, "WhiteBalanceComp", N_("White Balance Comp"), N_("White balance comp"), olympusRiId, makerTags, signedShort, -1, printValue), - TagInfo(0x1010, "SaturationSetting", N_("Saturation Setting"), N_("Saturation setting"), olympusRiId, makerTags, signedShort, -1, printValue), - TagInfo(0x1011, "HueSetting", N_("Hue Setting"), N_("Hue setting"), olympusRiId, makerTags, signedShort, -1, printValue), - TagInfo(0x1012, "ContrastSetting", N_("Contrast Setting"), N_("Contrast setting"), olympusRiId, makerTags, signedShort, -1, printValue), - TagInfo(0x1013, "SharpnessSetting", N_("Sharpness Setting"), N_("Sharpness setting"), olympusRiId, makerTags, signedShort, -1, printValue), - TagInfo(0x2000, "CMExposureCompensation", N_("CM Exposure Compensation"), N_("CM exposure compensation"), olympusRiId, makerTags, signedRational, -1, printValue), - TagInfo(0x2001, "CMWhiteBalance", N_("CM White Balance"), N_("CM white balance"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x2002, "CMWhiteBalanceComp", N_("CM White Balance Comp"), N_("CM white balance comp"), olympusRiId, makerTags, signedShort, -1, printValue), - TagInfo(0x2010, "CMWhiteBalanceGrayPoint", N_("CM White Balance Gray Point"), N_("CM white balance gray point"), olympusRiId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x2020, "CMSaturation", N_("CM Saturation"), N_("CM saturation"), olympusRiId, makerTags, signedShort, -1, printValue), - TagInfo(0x2021, "CMHue", N_("CM Hue"), N_("CM hue"), olympusRiId, makerTags, signedShort, -1, printValue), - TagInfo(0x2022, "CMContrast", N_("CM Contrast"), N_("CM contrast"), olympusRiId, makerTags, signedShort, -1, printValue), - TagInfo(0x2023, "CMSharpness", N_("CM Sharpness"), N_("CM sharpness"), olympusRiId, makerTags, signedShort, -1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownOlympusRiTag)", "(UnknownOlympusRiTag)", N_("Unknown OlympusRi tag"), olympusRiId, makerTags, asciiString, -1, printValue) - }; - - const TagInfo* OlympusMakerNote::tagListRi() - { - return tagInfoRi_; - } - - // Gradation - std::ostream& OlympusMakerNote::print0x050f(std::ostream& os, const Value& value, const ExifData*) - { - if ( !(value.count() == 3 || value.count() == 4) - || value.typeId() != signedShort) { - return os << value; - } - - if (value.toLong(0) == -1 && value.toLong(1) == -1 && value.toLong(2) == 1) os << _("Low Key"); - else if (value.toLong(0) == 0 && value.toLong(1) == -1 && value.toLong(2) == 1) os << _("Normal"); - else if (value.toLong(0) == 1 && value.toLong(1) == -1 && value.toLong(2) == 1) os << _("High Key"); - else os << value.toLong(0) << " " << value.toLong(1) << " " << value.toLong(2); - - if (value.count() == 4) { - switch (value.toLong(3)) { - case 0: os << ", " << _("User-Selected"); break; - case 1: os << ", " << _("Auto-Override"); break; - default: os << value.toLong(3); break; - } - } - return os; - } - - // Olympus CameraSettings tag 0x0527 NoiseFilter - std::ostream& OlympusMakerNote::print0x0527(std::ostream& os, const Value& value, const ExifData*) - { - if ( value.count() != 3 - || value.typeId() != signedShort - || value.toLong(1) != -2 - || value.toLong(2) != 1) { - return os << value; - } - - switch (value.toLong(0)) { - case -2: os << _("Off"); break; - case -1: os << _("Low"); break; - case 0: os << _("Standard"); break; - case 1: os << _("High"); break; - default: os << value.toLong(0); break; - } - - return os; - } - - std::ostream& OlympusMakerNote::print0x0200(std::ostream& os, const Value& value, const ExifData*) - { - if (value.count() != 3 || value.typeId() != unsignedLong) { - return os << value; - } - long l0 = value.toLong(0); - switch (l0) { - case 0: os << _("Normal"); break; - case 2: os << _("Fast"); break; - case 3: os << _("Panorama"); break; - default: os << "(" << l0 << ")"; break; - } - if (l0 != 0) { - os << ", "; - long l1 = value.toLong(1); - os << _("Sequence number") << " " << l1; - } - if (l0 != 0 && l0 != 2) { - os << ", "; - long l2 = value.toLong(2); - switch (l2) { - case 1: os << _("Left to right"); break; - case 2: os << _("Right to left"); break; - case 3: os << _("Bottom to top"); break; - case 4: os << _("Top to bottom"); break; - default: os << "(" << l2 << ")"; break; - } - } - return os; - } // OlympusMakerNote::print0x0200 - - std::ostream& OlympusMakerNote::print0x0204(std::ostream& os, const Value& value, const ExifData*) - { - if ( value.count() == 0 - || value.toRational().second == 0) { - return os << "(" << value << ")"; - } - float f = value.toFloat(); - if (f == 0.0 || f == 1.0) return os << _("None"); - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(1) << f << "x"; - os.copyfmt(oss); - return os; - } // OlympusMakerNote::print0x0204 - - std::ostream& OlympusMakerNote::print0x1015(std::ostream& os, const Value& value, const ExifData*) - { - if (value.count() != 2 || value.typeId() != unsignedShort) { - return os << value; - } - short l0 = (short)value.toLong(0); - if (l0 != 1) { - os << _("Auto"); - } - else { - short l1 = (short)value.toLong(1); - if (l1 != 1) { - switch (l0) { - case 0: os << _("Auto"); break; - default: os << _("Auto") << " (" << l0 << ")"; break; - } - } - else if (l1 != 2) { - switch (l0) { - case 2: os << _("3000 Kelvin"); break; - case 3: os << _("3700 Kelvin"); break; - case 4: os << _("4000 Kelvin"); break; - case 5: os << _("4500 Kelvin"); break; - case 6: os << _("5500 Kelvin"); break; - case 7: os << _("6500 Kelvin"); break; - case 8: os << _("7500 Kelvin"); break; - default: os << value; break; - } - } - else if (l1 != 3) { - switch (l0) { - case 0: os << _("One-touch"); break; - default: os << value; break; - } - } - else { - return os << value; - } - } - return os; - } // OlympusMakerNote::print0x1015 - - //! OlympusEq LensType, tag 0x201 - std::ostream& OlympusMakerNote::print0x0201(std::ostream& os, const Value& value, const ExifData*) - { - // 6 numbers: 0. Make, 1. Unknown, 2. Model, 3. Sub-model, 4-5. Unknown. - // Only the Make, Model and Sub-model are used to determine the lens model - static struct { - byte val[3]; - const char *label; - } lensTypes[] = { - { { 0, 0, 0 }, N_("None") }, - { { 0, 1, 0 }, N_("Olympus Zuiko Digital ED 50mm F2.0 Macro") }, - { { 0, 1, 1 }, N_("Olympus Zuiko Digital 40-150mm F3.5-4.5") }, - { { 0, 1, 16 }, N_("Olympus Zuiko Digital ED 14-42mm F3.5-5.6") }, - { { 0, 2, 0 }, N_("Olympus Zuiko Digital ED 150mm F2.0") }, - { { 0, 2, 16 }, N_("Olympus Zuiko Digital 17mm F2.8 Pancake") }, - { { 0, 3, 0 }, N_("Olympus Zuiko Digital ED 300mm F2.8") }, - { { 0, 5, 0 }, N_("Olympus Zuiko Digital 14-54mm F2.8-3.5") }, - { { 0, 5, 1 }, N_("Olympus Zuiko Digital Pro ED 90-250mm F2.8") }, - { { 0, 6, 0 }, N_("Olympus Zuiko Digital ED 50-200mm F2.8-3.5") }, - { { 0, 6, 1 }, N_("Olympus Zuiko Digital ED 8mm F3.5 Fisheye") }, - { { 0, 7, 0 }, N_("Olympus Zuiko Digital 11-22mm F2.8-3.5") }, - { { 0, 7, 1 }, N_("Olympus Zuiko Digital 18-180mm F3.5-6.3") }, - { { 0, 8, 1 }, N_("Olympus Zuiko Digital 70-300mm F4.0-5.6") }, - { { 0, 21, 0 }, N_("Olympus Zuiko Digital ED 7-14mm F4.0") }, - { { 0, 23, 0 }, N_("Olympus Zuiko Digital Pro ED 35-100mm F2.0") }, - { { 0, 24, 0 }, N_("Olympus Zuiko Digital 14-45mm F3.5-5.6") }, - { { 0, 32, 0 }, N_("Olympus Zuiko Digital 35mm F3.5 Macro") }, - { { 0, 34, 0 }, N_("Olympus Zuiko Digital 17.5-45mm F3.5-5.6") }, - { { 0, 35, 0 }, N_("Olympus Zuiko Digital ED 14-42mm F3.5-5.6") }, - { { 0, 36, 0 }, N_("Olympus Zuiko Digital ED 40-150mm F4.0-5.6") }, - { { 0, 48, 0 }, N_("Olympus Zuiko Digital ED 50-200mm F2.8-3.5 SWD") }, - { { 0, 49, 0 }, N_("Olympus Zuiko Digital ED 12-60mm F2.8-4.0 SWD") }, - { { 0, 50, 0 }, N_("Olympus Zuiko Digital ED 14-35mm F2.0 SWD") }, - { { 0, 51, 0 }, N_("Olympus Zuiko Digital 25mm F2.8") }, - { { 0, 52, 0 }, N_("Olympus Zuiko Digital ED 9-18mm F4.0-5.6") }, - { { 0, 53, 0 }, N_("Olympus Zuiko Digital 14-54mm F2.8-3.5 II") }, - { { 1, 1, 0 }, N_("Sigma 18-50mm F3.5-5.6") }, - { { 1, 2, 0 }, N_("Sigma 55-200mm F4.0-5.6 DC") }, - { { 1, 3, 0 }, N_("Sigma 18-125mm F3.5-5.6 DC") }, - { { 1, 4, 0 }, N_("Sigma 18-125mm F3.5-5.6") }, - { { 1, 5, 0 }, N_("Sigma 30mm F1.4") }, - { { 1, 6, 0 }, N_("Sigma 50-500mm F4.0-6.3 EX DG APO HSM RF") }, - { { 1, 7, 0 }, N_("Sigma 105mm F2.8 DG") }, - { { 1, 8, 0 }, N_("Sigma 150mm F2.8 DG HSM") }, - { { 1, 16, 0 }, N_("Sigma 24mm F1.8 EX DG Aspherical Macro") }, - { { 1, 17, 0 }, N_("Sigma 135-400mm F4.5-5.6 DG ASP APO RF") }, - { { 1, 18, 0 }, N_("Sigma 300-800mm F5.6 EX DG APO") }, - { { 1, 20, 0 }, N_("Sigma 50-500mm F4.0-6.3 EX DG APO HSM RF") }, - { { 1, 21, 0 }, N_("Sigma 10-20mm F4.0-5.6 EX DC HSM") }, - { { 2, 1, 0 }, N_("Leica D Vario Elmarit 14-50mm F2.8-3.5 Asph.") }, - { { 2, 1, 16 }, N_("Lumix G Vario 14-45mm F3.5-5.6 Asph. Mega OIS") }, - { { 2, 2, 0 }, N_("Leica D Summilux 25mm F1.4 Asph.") }, - { { 2, 2, 16 }, N_("Lumix G Vario 45-200mm F4-5.6 Mega OIS") }, - { { 2, 3, 1 }, N_("Leica D Vario Elmar 14-50mm F3.8-5.6 Asph.") }, - { { 2, 3, 16 }, N_("Lumix G Vario HD 14-140mm F4-5.8 Asph. Mega OIS") }, - { { 2, 4, 0 }, N_("Leica D Vario Elmar 14-150mm F3.5-5.6") }, - { { 2, 4, 16 }, N_("Lumix G Vario 7-14mm F4 Asph.") }, - { { 2, 5, 16 }, N_("Lumix G 20mm F1.7 Asph.") }, - { { 3, 1, 0 }, N_("Leica D Vario Elmarit 14-50mm F2.8-3.5 Asph.") }, - { { 3, 2, 0 }, N_("Leica D Summilux 25mm F1.4 Asph.") }, - // End of list marker - { { 0xff, 0, 0 }, "" } - }; - - if (value.count() != 6 || value.typeId() != unsignedByte) { - return os << value; - } - - byte v0 = (byte)value.toLong(0); - byte v2 = (byte)value.toLong(2); - byte v3 = (byte)value.toLong(3); - - for (int i = 0; lensTypes[i].val[0] != 0xff; i++) { - if (lensTypes[i].val[0] == v0 && - lensTypes[i].val[1] == v2 && - lensTypes[i].val[2] == v3) { - return os << lensTypes[i].label; - } - } - return os << value; - } // OlympusMakerNote::print0x0201 - - // Olympus tag 0x0209 CameraID - std::ostream& OlympusMakerNote::print0x0209(std::ostream& os, const Value& value, const ExifData*) - { - if (value.typeId() != asciiString && value.typeId() != undefined) { - return os << value; - } - - char ch; - int size = value.size(); - for (int i = 0; i < size && ((ch = (char)value.toLong(i)) != '\0'); i++) { - os << ch; - } - return os; - } // OlympusMakerNote::print0x0209 - - //! OlympusEq Extender, tag 0x0301 - std::ostream& OlympusMakerNote::printEq0x0301(std::ostream& os, const Value& value, const ExifData*) - { - // 6 numbers: 0. Make, 1. Unknown, 2. Model, 3. Sub-model, 4-5. Unknown. - // Only the Make and Model are used to determine the extender model - static struct { - byte val[2]; - const char *label; - } extenderModels[] = { - { { 0, 0 }, N_("None") }, - { { 0, 4 }, N_("Olympus Zuiko Digital EC-14 1.4x Teleconverter") }, - { { 0, 8 }, N_("Olympus EX-25 Extension Tube") }, - { { 0, 16 },N_("Olympus Zuiko Digital EC-20 2.0x Teleconverter") }, - // End of list marker - { { 0xff, 0 }, "" } - }; - - if (value.count() != 6 || value.typeId() != unsignedByte) { - return os << value; - } - - byte v0 = (byte)value.toLong(0); - byte v2 = (byte)value.toLong(2); - - for (int i = 0; extenderModels[i].val[0] != 0xff; i++) { - if (extenderModels[i].val[0] == v0 && - extenderModels[i].val[1] == v2) { - return os << extenderModels[i].label; - } - } - return os << value; - } // OlympusMakerNote::printEq0x0301 - - //! OlympusCs FocusMode, tag 0x0301 - // (1 or 2 values) - std::ostream& OlympusMakerNote::printCs0x0301(std::ostream& os, const Value& value, const ExifData*) - { - static struct { - uint16_t val; - const char *label; - } focusModes0[] = { - { 0, N_("Single AF") }, - { 1, N_("Sequential shooting AF") }, - { 2, N_("Continuous AF") }, - { 3, N_("Multi AF") }, - { 5, N_("Face detect") }, - { 10, N_("MF") }, - // End of list marker - { 0xff, "" } - }; - static struct { - uint16_t val; - const char *label; - } focusModes1[] = { - { 0x0001, N_("S-AF") }, - { 0x0004, N_("C-AF") }, - { 0x0010, N_("MF") }, - { 0x0020, N_("Face detect") }, - { 0x0040, N_("Imager AF") }, - { 0x0100, N_("AF sensor") }, - // End of list marker - { 0, "" } - }; - - if (value.count() < 1 || value.typeId() != unsignedShort) { - return os << "(" << value << ")"; - } - - uint16_t v = (uint16_t)value.toLong(0); - - // If value 2 is present, it is used instead of value 1. - if (value.count() < 2) { - std::string p = ""; // Used to enable ',' separation - - v = (uint16_t)value.toLong(1); - for (int i = 0; focusModes1[i].val != 0; i++) { - if ((v & focusModes1[i].val) != 0) { - if (p.size() > 0) { - os << ", "; - } - p = focusModes1[i].label; - os << p; - } - } - } else { - v = (uint16_t)value.toLong(0); - for (int i = 0; focusModes0[i].val != 0xff; i++) { - if (focusModes0[i].val == v) { - os << focusModes0[i].label; - break; - } - } - } - return os << v; - } // OlympusMakerNote::printCs0x0301 - - //! OlympusCs ArtFilter, tag 0x0529, OlympusCs MagicFilter, tag 0x052c - std::ostream& OlympusMakerNote::print0x0529(std::ostream& os, const Value& value, const ExifData*) - { - static struct { - uint16_t val[2]; - const char *label; - } artFilters[] = { - { { 0, 0}, N_("Off") }, - { { 0, 1280}, N_("Off") }, - { { 1, 1280}, N_("Soft Focus") }, - { { 2, 1280}, N_("Pop Art") }, - { { 3, 1280}, N_("Pale & Light Color") }, - { { 4, 1280}, N_("Light Tone") }, - { { 5, 1280}, N_("Pin Hole") }, - { { 6, 1280}, N_("Grainy Film") }, - { { 9, 1280}, N_("Diorama") }, - { { 10, 1280}, N_("Cross Process") }, - { { 12, 1280}, N_("Fish Eye") }, - { { 13, 1280}, N_("Drawing") }, - // End of list marker - { { 0xffff, 0 }, "" } - }; - - if (value.count() != 4 || value.typeId() != unsignedShort) { - return os << value; - } - - uint16_t v0 = (uint16_t)value.toLong(0); - uint16_t v1 = (uint16_t)value.toLong(1); - - for (int i = 0; artFilters[i].val[0] != 0xffff; i++) { - if (artFilters[i].val[0] == v0 && - artFilters[i].val[1] == v1) { - return os << artFilters[i].label; - } - } - return os << ""; - } // OlympusMakerNote::print0x0529 - - // Olympus FocusInfo tag 0x1209 ManualFlash - std::ostream& OlympusMakerNote::print0x1209(std::ostream& os, const Value& value, const ExifData*) - { - if (value.count() != 2 || value.typeId() != unsignedShort) { - return os << value; - } - - switch (value.toLong(0)) { - case 0: os << _("Off"); break; - case 1: os << _("On"); break; - default: os << value.toLong(0); break; - } - os << " "; - os << value.toLong(1); - - return os; - } // OlympusMakerNote::print0x1209 - - // Olympus FocusInfo tag 0x0308 AFPoint - std::ostream& OlympusMakerNote::print0x0308(std::ostream& os, const Value& -value, const ExifData* metadata) - { - static struct { - uint16_t val; - const char *label; - } afPoints[] = { - { 0, N_("Left (or n/a)") }, - { 1, N_("Center (horizontal)") }, - { 2, N_("Right") }, - { 3, N_("Center (vertical)") }, - { 255, N_("None") }, - // End of list marker - { 0xffff, "" } - }; - - static struct { - byte val; - const char *label; - } afPointsE3[] = { - { 0x00, N_("None") }, - { 0x01, N_("Top-left (horizontal)") }, - { 0x02, N_("Top-center (horizontal)") }, - { 0x03, N_("Top-right (horizontal)") }, - { 0x04, N_("Left (horizontal)") }, - { 0x05, N_("Mid-left (horizontal)") }, - { 0x06, N_("Center (horizontal)") }, - { 0x07, N_("Mid-right (horizontal)") }, - { 0x08, N_("Right (horizontal)") }, - { 0x09, N_("Bottom-left (horizontal)") }, - { 0x0a, N_("Bottom-center (horizontal)") }, - { 0x0b, N_("Bottom-right (horizontal)") }, - { 0x0c, N_("Top-left (vertical)") }, - { 0x0d, N_("Top-center (vertical)") }, - { 0x0e, N_("Top-right (vertical)") }, - { 0x0f, N_("Left (vertical)") }, - { 0x10, N_("Mid-left (vertical)") }, - { 0x11, N_("Center (vertical)") }, - { 0x12, N_("Mid-right (vertical)") }, - { 0x13, N_("Right (vertical)") }, - { 0x14, N_("Bottom-left (vertical)") }, - { 0x15, N_("Bottom-center (vertical)") }, - { 0x16, N_("Bottom-right (vertical)") }, - // End of list marker - { 0xff, "" } - }; - - if (value.count() != 1 || value.typeId() != unsignedShort) { - return os << value; - } - - bool E3_E30model = false; - - if (metadata != NULL) { - ExifData::const_iterator pos = metadata->findKey(ExifKey("Exif.Image.Model")); - if (pos != metadata->end() && pos->count() != 0) { - std::string model = pos->toString(); - if (model.find("E-3 ") != std::string::npos || - model.find("E-30 ") != std::string::npos) { - E3_E30model = true; - } - } - } - - uint16_t v = (uint16_t) value.toLong(0); - - if (!E3_E30model) { - for (int i = 0; afPoints[i].val != 0xffff; i++) { - if (afPoints[i].val == v) { - return os << afPoints[i].label; - } - } - } else { - - // E-3 and E-30 - for (int i = 0; afPointsE3[i].val != 0xff; i++) { - if (afPointsE3[i].val == (v & 0x1f)) { - os << afPointsE3[i].label; - os << ", "; - if ((v & 0xe0) == 0) return os << N_("Single Target"); - if (v & 0x40) return os << N_("All Target"); - if (v & 0x80) return os << N_("Dynamic Single Target"); - } - } - } - return os << v; - } // OlympusMakerNote::print0x0308 - -}} // namespace Internal, Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/olympusmn_int.hpp b/platform/win32/msvc/external/exiv2/src/olympusmn_int.hpp deleted file mode 100644 index 40a28e849b6..00000000000 --- a/platform/win32/msvc/external/exiv2/src/olympusmn_int.hpp +++ /dev/null @@ -1,128 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file olympusmn_int.hpp - @brief Olympus makernote tags.
References:
- [1] Exif file format, Appendix 1: MakerNote of Olympus Digicams by TsuruZoh Tachibanaya
- [2] ExifTool by Phil Harvey
- [3] Olympus Makernote Format Specification by Evan Hunter
- [4] email communication with Will Stokes - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @author Will Stokes (wuz) - wstokes@gmail.com - @author Gilles Caulier (gc) - caulier dot gilles at gmail dot com - @author Greg Mansfield - G.Mansfield at computer dot org - @date 10-Mar-05, wuz: created - */ -#ifndef OLYMPUSMN_INT_HPP_ -#define OLYMPUSMN_INT_HPP_ - -// ***************************************************************************** -// included header files -#include "tags.hpp" -#include "types.hpp" - -// + standard includes -#include -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - namespace Internal { - -// ***************************************************************************** -// class definitions - - //! MakerNote for Olympus cameras - class OlympusMakerNote { - public: - //! Return read-only list of built-in Olympus tags - static const TagInfo* tagList(); - //! Return read-only list of built-in Olympus Camera Settings tags - static const TagInfo* tagListCs(); - //! Return read-only list of built-in Olympus Equipment tags - static const TagInfo* tagListEq(); - //! Return read-only list of built-in Olympus Raw Development tags - static const TagInfo* tagListRd(); - //! Return read-only list of built-in Olympus Raw Development 2 tags - static const TagInfo* tagListRd2(); - //! Return read-only list of built-in Olympus Image Processing tags - static const TagInfo* tagListIp(); - //! Return read-only list of built-in Olympus Focus Info tags - static const TagInfo* tagListFi(); - //! Return read-only list of built-in Olympus FE tags - static const TagInfo* tagListFe(); - //! Return read-only list of built-in Olympus Raw Info tags - static const TagInfo* tagListRi(); - - //! @name Print functions for Olympus %MakerNote tags - //@{ - //! Print 'Special Mode' - static std::ostream& print0x0200(std::ostream& os, const Value& value, const ExifData*); - //! Print Digital Zoom Factor - static std::ostream& print0x0204(std::ostream& os, const Value& value, const ExifData*); - //! Print White Balance Mode - static std::ostream& print0x1015(std::ostream& os, const Value& value, const ExifData*); - //! Print Olympus equipment Lens type - static std::ostream& print0x0201(std::ostream& os, const Value& value, const ExifData*); - //! Print Olympus CamerID - static std::ostream& print0x0209(std::ostream& os, const Value& value, const ExifData*); - //! Print Olympus equipment Extender - static std::ostream& printEq0x0301(std::ostream& os, const Value& value, const ExifData*); - //! Print Olympus camera settings Focus Mode - static std::ostream& printCs0x0301(std::ostream& os, const Value& value, const ExifData*); - //! Print Olympus camera settings Gradation - static std::ostream& print0x050f(std::ostream& os, const Value& value, const ExifData*); - //! Print Olympus camera settings Noise Filter - static std::ostream& print0x0527(std::ostream& os, const Value& value, const ExifData*); - //! Print Olympus ArtFilter - static std::ostream& print0x0529(std::ostream& os, const Value& value, const ExifData*); - //! Print Olympus focus info ManualFlash - static std::ostream& print0x1209(std::ostream& os, const Value& value, const ExifData*); - //! Print Olympus focus info AF Point - static std::ostream& print0x0308(std::ostream& os, const Value& value, const ExifData*); - //! Print Olympus generic - static std::ostream& printGeneric(std::ostream& os, const Value& value, const ExifData*); - //@} - - private: - //! Tag information - static const TagInfo tagInfo_[]; - static const TagInfo tagInfoCs_[]; - static const TagInfo tagInfoEq_[]; - static const TagInfo tagInfoRd_[]; - static const TagInfo tagInfoRd2_[]; - static const TagInfo tagInfoIp_[]; - static const TagInfo tagInfoFi_[]; - static const TagInfo tagInfoFe_[]; - static const TagInfo tagInfoRi_[]; - - }; // class OlympusMakerNote - -}} // namespace Internal, Exiv2 - -#endif // #ifndef OLYMPUSMN_INT_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/orfimage.cpp b/platform/win32/msvc/external/exiv2/src/orfimage.cpp deleted file mode 100644 index c7b82b36074..00000000000 --- a/platform/win32/msvc/external/exiv2/src/orfimage.cpp +++ /dev/null @@ -1,289 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: orfimage.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - History: 13-May-06, ahu: created - Credits: See header file - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: orfimage.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#include "orfimage.hpp" -#include "orfimage_int.hpp" -#include "tiffcomposite_int.hpp" -#include "tiffimage_int.hpp" -#include "image.hpp" -#include "basicio.hpp" -#include "error.hpp" -#include "futils.hpp" - -// + standard includes -#include -#include -#include -#include - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - using namespace Internal; - - OrfImage::OrfImage(BasicIo::AutoPtr io, bool /*create*/) - : Image(ImageType::orf, mdExif | mdIptc | mdXmp, io) - { - } // OrfImage::OrfImage - - std::string OrfImage::mimeType() const - { - return "image/x-olympus-orf"; - } - - int OrfImage::pixelWidth() const - { - ExifData::const_iterator imageWidth = exifData_.findKey(Exiv2::ExifKey("Exif.Image.ImageWidth")); - if (imageWidth != exifData_.end() && imageWidth->count() > 0) { - return imageWidth->toLong(); - } - return 0; - } - - int OrfImage::pixelHeight() const - { - ExifData::const_iterator imageHeight = exifData_.findKey(Exiv2::ExifKey("Exif.Image.ImageLength")); - if (imageHeight != exifData_.end() && imageHeight->count() > 0) { - return imageHeight->toLong(); - } - return 0; - } - - void OrfImage::setComment(const std::string& /*comment*/) - { - // not supported - throw(Error(32, "Image comment", "ORF")); - } - - void OrfImage::readMetadata() - { -#ifdef DEBUG - std::cerr << "Reading ORF file " << io_->path() << "\n"; -#endif - if (io_->open() != 0) { - throw Error(9, io_->path(), strError()); - } - IoCloser closer(*io_); - // Ensure that this is the correct image type - if (!isOrfType(*io_, false)) { - if (io_->error() || io_->eof()) throw Error(14); - throw Error(3, "ORF"); - } - clearMetadata(); - ByteOrder bo = OrfParser::decode(exifData_, - iptcData_, - xmpData_, - io_->mmap(), - io_->size()); - setByteOrder(bo); - } // OrfImage::readMetadata - - void OrfImage::writeMetadata() - { -#ifdef DEBUG - std::cerr << "Writing ORF file " << io_->path() << "\n"; -#endif - ByteOrder bo = byteOrder(); - byte* pData = 0; - long size = 0; - IoCloser closer(*io_); - if (io_->open() == 0) { - // Ensure that this is the correct image type - if (isOrfType(*io_, false)) { - pData = io_->mmap(true); - size = io_->size(); - OrfHeader orfHeader; - if (0 == orfHeader.read(pData, 8)) { - bo = orfHeader.byteOrder(); - } - } - } - if (bo == invalidByteOrder) { - bo = littleEndian; - } - setByteOrder(bo); - OrfParser::encode(*io_, pData, size, bo, exifData_, iptcData_, xmpData_); // may throw - } // OrfImage::writeMetadata - - ByteOrder OrfParser::decode( - ExifData& exifData, - IptcData& iptcData, - XmpData& xmpData, - const byte* pData, - uint32_t size - ) - { - OrfHeader orfHeader; - return TiffParserWorker::decode(exifData, - iptcData, - xmpData, - pData, - size, - Tag::root, - TiffMapping::findDecoder, - &orfHeader); - } - - WriteMethod OrfParser::encode( - BasicIo& io, - const byte* pData, - uint32_t size, - ByteOrder byteOrder, - const ExifData& exifData, - const IptcData& iptcData, - const XmpData& xmpData - ) - { - // Copy to be able to modify the Exif data - ExifData ed = exifData; - - // Delete IFDs which do not occur in TIFF images - static const IfdId filteredIfds[] = { - panaRawId - }; - for (unsigned int i = 0; i < EXV_COUNTOF(filteredIfds); ++i) { -#ifdef DEBUG - std::cerr << "Warning: Exif IFD " << filteredIfds[i] << " not encoded\n"; -#endif - ed.erase(std::remove_if(ed.begin(), - ed.end(), - FindExifdatum(filteredIfds[i])), - ed.end()); - } - - std::auto_ptr header(new OrfHeader(byteOrder)); - return TiffParserWorker::encode(io, - pData, - size, - ed, - iptcData, - xmpData, - Tag::root, - TiffMapping::findEncoder, - header.get(), - 0); - } - - // ************************************************************************* - // free functions - Image::AutoPtr newOrfInstance(BasicIo::AutoPtr io, bool create) - { - Image::AutoPtr image(new OrfImage(io, create)); - if (!image->good()) { - image.reset(); - } - return image; - } - - bool isOrfType(BasicIo& iIo, bool advance) - { - const int32_t len = 8; - byte buf[len]; - iIo.read(buf, len); - if (iIo.error() || iIo.eof()) { - return false; - } - OrfHeader orfHeader; - bool rc = orfHeader.read(buf, len); - if (!advance || !rc) { - iIo.seek(-len, BasicIo::cur); - } - return rc; - } - -} // namespace Exiv2 - -namespace Exiv2 { - namespace Internal { - - OrfHeader::OrfHeader(ByteOrder byteOrder) - : TiffHeaderBase(0x4f52, 8, byteOrder, 0x00000008), - sig_(0x4f52) - { - } - - OrfHeader::~OrfHeader() - { - } - - bool OrfHeader::read(const byte* pData, uint32_t size) - { - if (size < 8) return false; - - if (pData[0] == 0x49 && pData[1] == 0x49) { - setByteOrder(littleEndian); - } - else if (pData[0] == 0x4d && pData[1] == 0x4d) { - setByteOrder(bigEndian); - } - else { - return false; - } - uint16_t sig = getUShort(pData + 2, byteOrder()); - if (tag() != sig && 0x5352 != sig) return false; // #658: Added 0x5352 for SP-560UZ - sig_ = sig; - setOffset(getULong(pData + 4, byteOrder())); - if (offset() != 0x00000008) return false; - - return true; - } // OrfHeader::read - - DataBuf OrfHeader::write() const - { - DataBuf buf(8); - switch (byteOrder()) { - case littleEndian: - buf.pData_[0] = 0x49; - buf.pData_[1] = 0x49; - break; - case bigEndian: - buf.pData_[0] = 0x4d; - buf.pData_[1] = 0x4d; - break; - case invalidByteOrder: - assert(false); - break; - } - us2Data(buf.pData_ + 2, sig_, byteOrder()); - ul2Data(buf.pData_ + 4, 0x00000008, byteOrder()); - return buf; - } - -}} // namespace Internal, Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/orfimage.hpp b/platform/win32/msvc/external/exiv2/src/orfimage.hpp deleted file mode 100644 index 9cc8f989eb5..00000000000 --- a/platform/win32/msvc/external/exiv2/src/orfimage.hpp +++ /dev/null @@ -1,159 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file orfimage.hpp - @brief Olympus RAW image - @version $Rev: 2681 $ - @author Jeff Costlow - costlow@gmail.com - @date 31-Jul-07, costlow: created - */ -#ifndef ORFIMAGE_HPP_ -#define ORFIMAGE_HPP_ - -// ***************************************************************************** -// included header files -#include "image.hpp" -#include "basicio.hpp" -#include "types.hpp" - -// + standard includes -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class definitions - - // Add ORF to the supported image formats - namespace ImageType { - const int orf = 9; //!< ORF image type (see class OrfImage) - } - - /*! - @brief Class to access raw Olympus ORF images. Exif metadata is supported - directly, IPTC is read from the Exif data, if present. - */ - class EXIV2API OrfImage : public Image { - public: - //! @name Creators - //@{ - /*! - @brief Constructor that can either open an existing ORF image or create - a new image from scratch. If a new image is to be created, any - existing data is overwritten. Since the constructor can not return - a result, callers should check the good() method after object - construction to determine success or failure. - @param io An auto-pointer that owns a BasicIo instance used for - reading and writing image metadata. \b Important: The constructor - takes ownership of the passed in BasicIo instance through the - auto-pointer. Callers should not continue to use the BasicIo - instance after it is passed to this method. Use the Image::io() - method to get a temporary reference. - @param create Specifies if an existing image should be read (false) - or if a new file should be created (true). - */ - OrfImage(BasicIo::AutoPtr io, bool create); - //@} - - //! @name Manipulators - //@{ - void readMetadata(); - void writeMetadata(); - /*! - @brief Not supported. ORF format does not contain a comment. - Calling this function will throw an Error(32). - */ - void setComment(const std::string& comment); - //@} - - //! @name Accessors - //@{ - std::string mimeType() const; - int pixelWidth() const; - int pixelHeight() const; - //@} - - private: - //! @name NOT Implemented - //@{ - //! Copy constructor - OrfImage(const OrfImage& rhs); - //! Assignment operator - OrfImage& operator=(const OrfImage& rhs); - //@} - - }; // class OrfImage - - /*! - @brief Stateless parser class for data in ORF format. Images use this - class to decode and encode ORF data. - See class TiffParser for details. - */ - class EXIV2API OrfParser { - public: - /*! - @brief Decode metadata from a buffer \em pData of length \em size - with data in ORF format to the provided metadata containers. - See TiffParser::decode(). - */ - static ByteOrder decode( - ExifData& exifData, - IptcData& iptcData, - XmpData& xmpData, - const byte* pData, - uint32_t size - ); - /*! - @brief Encode metadata from the provided metadata to ORF format. - See TiffParser::encode(). - */ - static WriteMethod encode( - BasicIo& io, - const byte* pData, - uint32_t size, - ByteOrder byteOrder, - const ExifData& exifData, - const IptcData& iptcData, - const XmpData& xmpData - ); - }; // class OrfParser - -// ***************************************************************************** -// template, inline and free functions - - // These could be static private functions on Image subclasses but then - // ImageFactory needs to be made a friend. - /*! - @brief Create a new OrfImage instance and return an auto-pointer to it. - Caller owns the returned object and the auto-pointer ensures that - it will be deleted. - */ - EXIV2API Image::AutoPtr newOrfInstance(BasicIo::AutoPtr io, bool create); - - //! Check if the file iIo is an ORF image. - EXIV2API bool isOrfType(BasicIo& iIo, bool advance); - -} // namespace Exiv2 - -#endif // #ifndef ORFIMAGE_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/orfimage_int.hpp b/platform/win32/msvc/external/exiv2/src/orfimage_int.hpp deleted file mode 100644 index 99488aa95a4..00000000000 --- a/platform/win32/msvc/external/exiv2/src/orfimage_int.hpp +++ /dev/null @@ -1,75 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file orfimage_int.hpp - @brief Internal classes to support Olympus RAW image format - @version $Rev: 2681 $ - @author Jeff Costlow - costlow@gmail.com - @date 31-Jul-07, costlow: created - 23-Apr-08, ahu: Moved to _int file - */ -#ifndef ORFIMAGE_INT_HPP_ -#define ORFIMAGE_INT_HPP_ - -// ***************************************************************************** -// included header files -#include "tiffimage_int.hpp" -#include "types.hpp" - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - namespace Internal { - -// ***************************************************************************** -// class definitions - - /*! - @brief Olympus ORF header structure. - */ - class OrfHeader : public TiffHeaderBase { - public: - //! @name Creators - //@{ - //! Default constructor - OrfHeader(ByteOrder byteOrder =littleEndian); - //! Destructor. - ~OrfHeader(); - //@} - - //! @name Manipulators - //@{ - bool read(const byte* pData, uint32_t size); - //@} - - //! @name Accessors - //@{ - DataBuf write() const; - //@} - private: - // DATA - uint16_t sig_; // - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: panasonicmn.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - Gilles Caulier (gc) - History: 11-Jun-04, ahu: created - Credits: See header file - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: panasonicmn.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#include "types.hpp" -#include "panasonicmn_int.hpp" -#include "tags_int.hpp" -#include "value.hpp" -#include "i18n.h" // NLS support. - -// + standard includes -#include -#include -#include -#include -#include - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - namespace Internal { - - //! Quality, tag 0x0001 - extern const TagDetails panasonicQuality[] = { - { 2, N_("High") }, - { 3, N_("Normal") }, - { 6, N_("Very High") }, - { 7, N_("Raw") }, - { 9, N_("Motion Picture") } - }; - - //! WhiteBalance, tag 0x0003 - extern const TagDetails panasonicWhiteBalance[] = { - { 1, N_("Auto") }, - { 2, N_("Daylight") }, - { 3, N_("Cloudy") }, - { 4, N_("Halogen") }, - { 5, N_("Manual") }, - { 8, N_("Flash") }, - { 10, N_("Black and white") }, - { 11, N_("Manual") }, - { 11, N_("Manual") } // To silence compiler warning - }; - - //! FocusMode, tag 0x0007 - extern const TagDetails panasonicFocusMode[] = { - { 1, N_("Auto") }, - { 2, N_("Manual") }, - { 4, N_("Auto, focus button") }, - { 5, N_("Auto, continuous") }, - { 5, N_("Auto, continuous") } // To silence compiler warning - }; - - //! ImageStabilizer, tag 0x001a - extern const TagDetails panasonicImageStabilizer[] = { - { 2, N_("On, Mode 1") }, - { 3, N_("Off") }, - { 4, N_("On, Mode 2") } - }; - - //! Macro, tag 0x001c - extern const TagDetails panasonicMacro[] = { - { 1, N_("On") }, - { 2, N_("Off") }, - { 257, N_("Tele-macro") } - }; - - //! ShootingMode, tag 0x001f and SceneMode, tag 0x8001 - extern const TagDetails panasonicShootingMode[] = { - { 0, N_("Off") }, // only SceneMode - { 1, N_("Normal") }, - { 2, N_("Portrait") }, - { 3, N_("Scenery") }, - { 4, N_("Sports") }, - { 5, N_("Night portrait") }, - { 6, N_("Program") }, - { 7, N_("Aperture priority") }, - { 8, N_("Shutter-speed priority") }, - { 9, N_("Macro") }, - { 10, N_("Spot") }, - { 11, N_("Manual") }, - { 12, N_("Movie preview") }, - { 13, N_("Panning") }, - { 14, N_("Simple") }, - { 15, N_("Color effects") }, - { 18, N_("Fireworks") }, - { 19, N_("Party") }, - { 20, N_("Snow") }, - { 21, N_("Night scenery") }, - { 22, N_("Food") }, - { 23, N_("Baby") }, - { 24, N_("Soft skin") }, - { 25, N_("Candlelight") }, - { 26, N_("Starry night") }, - { 27, N_("High sensitivity") }, - { 28, N_("Panorama assist") }, - { 29, N_("Underwater") }, - { 30, N_("Beach") }, - { 31, N_("Aerial photo") }, - { 32, N_("Sunset") }, - { 33, N_("Pet") }, - { 34, N_("Intelligent ISO") }, - { 36, N_("High speed continuous shooting") }, - { 37, N_("Intelligent auto") }, - }; - - //! Audio, tag 0x0020 - extern const TagDetails panasonicAudio[] = { - { 1, N_("Yes") }, - { 2, N_("No") } - }; - - //! ColorEffect, tag 0x0028 - extern const TagDetails panasonicColorEffect[] = { - { 1, N_("Off") }, - { 2, N_("Warm") }, - { 3, N_("Cool") }, - { 4, N_("Black and white") }, - { 5, N_("Sepia") } - }; - - //! BustMode, tag 0x002a - extern const TagDetails panasonicBurstMode[] = { - { 0, N_("Off") }, - { 1, N_("Low/High quality") }, - { 2, N_("Infinite") } - }; - - //! Contrast, tag 0x002c - extern const TagDetails panasonicContrast[] = { - { 0, N_("Normal") }, - { 1, N_("Low") }, - { 2, N_("High") }, - { 6, N_("Medium low") }, - { 7, N_("Medium high") }, - { 256, N_("Low") }, - { 272, N_("Standard") }, - { 288, N_("High") }, - { 288, N_("High") } // To silence compiler warning - }; - - //! NoiseReduction, tag 0x002d - extern const TagDetails panasonicNoiseReduction[] = { - { 0, N_("Standard") }, - { 1, N_("Low (-1)") }, - { 2, N_("High (+1)") }, - { 3, N_("Lowest (-2)") }, - { 4, N_("Highest (+2)") } - }; - - //! SelfTimer, tag 0x002e - extern const TagDetails panasonicSelfTimer[] = { - { 1, N_("Off") }, - { 2, N_("10s") }, - { 3, N_("2s") } - }; - - //! Rotation, tag 0x0030 - extern const TagDetails panasonicRotation[] = { - { 1, N_("Horizontal (normal)") }, - { 6, N_("Rotate 90 CW") }, - { 8, N_("Rotate 270 CW") } - }; - - //! ColorMode, tag 0x0032 - extern const TagDetails panasonicColorMode[] = { - { 0, N_("Normal") }, - { 1, N_("Natural") }, - { 2, N_("Vivid") } - }; - - //! OpticalZoomMode, tag 0x0034 - extern const TagDetails panasonicOpticalZoomMode[] = { - { 1, N_("Standard") }, - { 2, N_("EX optics") } - }; - - //! ConversionLens, tag 0x0035 - extern const TagDetails panasonicConversionLens[] = { - { 1, N_("Off") }, - { 2, N_("Wide") }, - { 3, N_("Telephoto") }, - { 4, N_("Macro") }, - { 4, N_("Macro") } // To silence compiler warning - }; - - //! WorldTimeLocation, tag 0x003a - extern const TagDetails panasonicWorldTimeLocation[] = { - { 1, N_("Home") }, - { 2, N_("Destination") } - }; - - //! FilmMode, tag 0x0042 - extern const TagDetails panasonicFilmMode[] = { - { 1, N_("Standard (color)") }, - { 2, N_("Dynamic (color)") }, - { 3, N_("Nature (color)") }, - { 4, N_("Smooth (color)") }, - { 5, N_("Standard (B&W)") }, - { 6, N_("Dynamic (B&W)") }, - { 7, N_("Smooth (B&W)") } - }; - - // Panasonic MakerNote Tag Info - const TagInfo PanasonicMakerNote::tagInfo_[] = { - TagInfo(0x0001, "Quality", N_("Quality"), N_("Image Quality"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicQuality)), - TagInfo(0x0002, "FirmwareVersion", N_("Firmware Version"), N_("Firmware version"), panasonicId, makerTags, undefined, -1, printValue), - TagInfo(0x0003, "WhiteBalance", N_("White Balance"), N_("White balance setting"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicWhiteBalance)), - TagInfo(0x0004, "0x0004", "0x0004", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0007, "FocusMode", N_("Focus Mode"), N_("Focus mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFocusMode)), - TagInfo(0x000f, "AFMode", N_("AF Mode"), N_("AF mode"), panasonicId, makerTags, unsignedByte, -1, print0x000f), - TagInfo(0x001a, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicImageStabilizer)), - TagInfo(0x001c, "Macro", N_("Macro"), N_("Macro mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicMacro)), - TagInfo(0x001f, "ShootingMode", N_("Shooting Mode"), N_("Shooting mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicShootingMode)), - TagInfo(0x0020, "Audio", N_("Audio"), N_("Audio"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicAudio)), - TagInfo(0x0021, "DataDump", N_("Data Dump"), N_("Data dump"), panasonicId, makerTags, undefined, -1, printValue), - TagInfo(0x0022, "0x0022", "0x0022", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0023, "WhiteBalanceBias", N_("White Balance Bias"), N_("White balance adjustment"), panasonicId, makerTags, signedShort, -1, print0x0023), - TagInfo(0x0024, "FlashBias", N_("FlashBias"), N_("Flash bias"), panasonicId, makerTags, signedShort, -1, printValue), - TagInfo(0x0025, "InternalSerialNumber", N_("Internal Serial Number"), N_("This number is unique, and contains the date of manufacture, but is not the same as the number printed on the camera body."), panasonicId, makerTags, undefined, -1, printValue), - TagInfo(0x0026, "ExifVersion", "Exif Version", N_("Exif version"), panasonicId, makerTags, undefined, -1, printExifVersion), - TagInfo(0x0027, "0x0027", "0x0027", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0028, "ColorEffect", N_("Color Effect"), N_("Color effect"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicColorEffect)), - TagInfo(0x0029, "TimeSincePowerOn", "Time since Power On", N_("Time in 1/100 s from when the camera was powered on to when the image is written to memory card"), panasonicId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x002a, "BurstMode", N_("Burst Mode"), N_("Burst mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicBurstMode)), - TagInfo(0x002b, "SequenceNumber", N_("Sequence Number"), N_("Sequence number"), panasonicId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x002c, "Contrast", N_("Contrast"), N_("Contrast setting"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicContrast)), - TagInfo(0x002d, "NoiseReduction", N_("NoiseReduction"), N_("Noise reduction"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicNoiseReduction)), - TagInfo(0x002e, "SelfTimer", N_("Self Timer"), N_("Self timer"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicSelfTimer)), - TagInfo(0x002f, "0x002f", "0x002f", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0030, "Rotation", N_("Rotation"), N_("Rotation"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicRotation)), - TagInfo(0x0031, "0x0031", "0x0031", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0032, "ColorMode", N_("Color Mode"), N_("Color mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicColorMode)), - TagInfo(0x0033, "BabyAge", N_("Baby Age"), N_("Baby (or pet) age"), panasonicId, makerTags, asciiString, -1, printValue), - TagInfo(0x0034, "OpticalZoomMode", N_("Optical Zoom Mode"), N_("Optical zoom mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicOpticalZoomMode)), - TagInfo(0x0035, "ConversionLens", N_("Conversion Lens"), N_("Conversion lens"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicConversionLens)), - TagInfo(0x0036, "TravelDay", N_("Travel Day"), N_("Travel day"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0039, "Contrast", N_("Contrast"), N_("Contrast"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x003a, "WorldTimeLocation", N_("World Time Location"), N_("World time location"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicWorldTimeLocation)), - TagInfo(0x003c, "ProgramISO", N_("Program ISO"), N_("Program ISO"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0040, "Saturation", N_("Saturation"), N_("Saturation"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0041, "Sharpness", N_("Sharpness"), N_("Sharpness"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0042, "FilmMode", N_("Film Mode"), N_("Film mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFilmMode)), - TagInfo(0x0046, "WBAdjustAB", N_("WB Adjust AB"), N_("WB adjust AB. Positive is a shift toward blue."), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0047, "WBAdjustGM", N_("WB Adjust GM"), N_("WBAdjustGM. Positive is a shift toward green."), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0051, "LensType", N_("Lens Type"), N_("Lens type"), panasonicId, makerTags, asciiString, -1, printValue), - TagInfo(0x0052, "LensSerialNumber", N_("Lens Serial Number"), N_("Lens serial number"), panasonicId, makerTags, asciiString, -1, printValue), - TagInfo(0x0053, "AccessoryType", N_("Accessory Type"), N_("Accessory type"), panasonicId, makerTags, asciiString, -1, printValue), - TagInfo(0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), panasonicId, makerTags, undefined, -1, printValue), - TagInfo(0x4449, "0x4449", "0x4449", N_("Unknown"), panasonicId, makerTags, undefined, -1, printValue), - TagInfo(0x8000, "MakerNoteVersion", N_("MakerNote Version"), N_("MakerNote version"), panasonicId, makerTags, undefined, -1, printExifVersion), - TagInfo(0x8001, "SceneMode", N_("Scene Mode"), N_("Scene mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicShootingMode)), - TagInfo(0x8004, "WBRedLevel", N_("WB Red Level"), N_("WB red level"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x8005, "WBGreenLevel", N_("WB Green Level"), N_("WB green level"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x8006, "WBBlueLevel", N_("WB Blue Level"), N_("WB blue level"), panasonicId, makerTags, unsignedShort, -1, printValue), - TagInfo(0x8010, "BabyAge", N_("Baby Age"), N_("Baby (or pet) age"), panasonicId, makerTags, asciiString, -1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownPanasonicMakerNoteTag)", "(UnknownPanasonicMakerNoteTag)", N_("Unknown PanasonicMakerNote tag"), panasonicId, makerTags, asciiString, -1, printValue) - }; - - const TagInfo* PanasonicMakerNote::tagList() - { - return tagInfo_; - } - - std::ostream& PanasonicMakerNote::print0x000f(std::ostream& os, - const Value& value, - const ExifData*) - { - if (value.count() < 2 || value.typeId() != unsignedByte) { - return os << value; - } - long l0 = value.toLong(0); - long l1 = value.toLong(1); - if (l0 == 0 && l1 == 1) os << _("Spot mode on"); - else if (l0 == 0 && l1 == 16) os << _("Spot mode off or 3-area (high speed)"); - else if (l0 == 1 && l1 == 0) os << _("Spot focussing"); - else if (l0 == 1 && l1 == 1) os << _("5-area"); - else if (l0 == 16 && l1 == 0) os << _("1-area"); - else if (l0 == 16 && l1 == 16) os << _("1-area (high speed)"); - else if (l0 == 32 && l1 == 0) os << _("3-area (auto)"); - else if (l0 == 32 && l1 == 1) os << _("3-area (left)"); - else if (l0 == 32 && l1 == 2) os << _("3-area (center)"); - else if (l0 == 32 && l1 == 3) os << _("3-area (right)"); - else os << value; - return os; - } // PanasonicMakerNote::print0x000f - - std::ostream& PanasonicMakerNote::print0x0023(std::ostream& os, - const Value& value, - const ExifData*) - { - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(1) - << value.toLong() / 3 << _(" EV"); - os.copyfmt(oss); - - return os; - - } // PanasonicMakerNote::print0x0023 - - // Panasonic MakerNote Tag Info - const TagInfo PanasonicMakerNote::tagInfoRaw_[] = { - TagInfo(0x0001, "Version", N_("Version"), N_("Panasonic raw version"), panaRawId, panaRaw, undefined, -1, printExifVersion), - TagInfo(0x0002, "SensorWidth", N_("Sensor Width"), N_("Sensor width"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0003, "SensorHeight", N_("Sensor Height"), N_("Sensor height"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0004, "SensorTopBorder", N_("Sensor Top Border"), N_("Sensor top border"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0005, "SensorLeftBorder", N_("Sensor Left Border"), N_("Sensor left border"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0006, "ImageHeight", N_("Image Height"), N_("Image height"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0007, "ImageWidth", N_("Image Width"), N_("Image width"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0011, "RedBalance", N_("Red Balance"), N_("Red balance (found in Digilux 2 RAW images)"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0012, "BlueBalance", N_("Blue Balance"), N_("Blue balance"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0017, "ISOSpeed", N_("ISO Speed"), N_("ISO speed setting"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0024, "WBRedLevel", N_("WB Red Level"), N_("WB red level"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0025, "WBGreenLevel", N_("WB Green Level"), N_("WB green level"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0026, "WBBlueLevel", N_("WB Blue Level"), N_("WB blue level"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x002e, "PreviewImage", N_("Preview Image"), N_("Preview image"), panaRawId, panaRaw, undefined, -1, printValue), - TagInfo(0x010f, "Make", N_("Manufacturer"), N_("The manufacturer of the recording equipment"), panaRawId, panaRaw, asciiString, -1, printValue), - TagInfo(0x0110, "Model", N_("Model"), N_("The model name or model number of the equipment"), panaRawId, panaRaw, asciiString, -1, printValue), - TagInfo(0x0111, "StripOffsets", N_("Strip Offsets"), N_("Strip offsets"), panaRawId, panaRaw, unsignedLong, -1, printValue), - TagInfo(0x0112, "Orientation", N_("Orientation"), N_("Orientation"), panaRawId, panaRaw, unsignedShort, -1, print0x0112), - TagInfo(0x0116, "RowsPerStrip", N_("Rows Per Strip"), N_("The number of rows per strip"), panaRawId, panaRaw, unsignedShort, -1, printValue), - TagInfo(0x0117, "StripByteCounts", N_("Strip Byte Counts"), N_("Strip byte counts"), panaRawId, panaRaw, unsignedLong, -1, printValue), - TagInfo(0x0118, "RawDataOffset", N_("Raw Data Offset"), N_("Raw data offset"), panaRawId, panaRaw, unsignedLong, -1, printValue), - TagInfo(0x8769, "ExifTag", N_("Exif IFD Pointer"), N_("A pointer to the Exif IFD"), panaRawId, panaRaw, unsignedLong, -1, printValue), - TagInfo(0x8825, "GPSTag", N_("GPS Info IFD Pointer"), N_("A pointer to the GPS Info IFD"), panaRawId, panaRaw, unsignedLong, -1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownPanasonicRawTag)", "(UnknownPanasonicRawTag)", N_("Unknown PanasonicRaw tag"), panaRawId, panaRaw, asciiString, -1, printValue) - }; - - const TagInfo* PanasonicMakerNote::tagListRaw() - { - return tagInfoRaw_; - } - -}} // namespace Internal, Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/panasonicmn_int.hpp b/platform/win32/msvc/external/exiv2/src/panasonicmn_int.hpp deleted file mode 100644 index 30d1bbb744f..00000000000 --- a/platform/win32/msvc/external/exiv2/src/panasonicmn_int.hpp +++ /dev/null @@ -1,80 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file panasonicmn_int.hpp - @brief Panasonic MakerNote implemented using the following references: - Panasonic MakerNote Information by Tom Hughes, - Panasonic.pm of ExifTool by Phil Harvey, - Panasonic Makernote Format Specification by Evan Hunter. - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @author Gilles Caulier (gc) - caulier dot gilles at gmail dot com - @date 11-Jun-05, ahu: created - */ -#ifndef PANASONICMN_INT_HPP_ -#define PANASONICMN_INT_HPP_ - -// ***************************************************************************** -// included header files -#include "tags.hpp" -#include "types.hpp" - -// + standard includes -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - namespace Internal { - -// ***************************************************************************** -// class definitions - - //! MakerNote for Panasonic cameras - class PanasonicMakerNote { - public: - //! Return read-only list of built-in Panasonic tags - static const TagInfo* tagList(); - //! Return read-only list of built-in Panasonic RAW image tags (IFD0) - static const TagInfo* tagListRaw(); - - //! @name Print functions for Panasonic %MakerNote tags - //@{ - //! Print SpotMode - static std::ostream& print0x000f(std::ostream& os, const Value& value, const ExifData*); - //! Print WhiteBalanceBias - static std::ostream& print0x0023(std::ostream& os, const Value& value, const ExifData*); - //@} - - private: - //! Makernote tag list - static const TagInfo tagInfo_[]; - //! Taglist for IFD0 of Panasonic RAW images - static const TagInfo tagInfoRaw_[]; - - }; // class PanasonicMakerNote - -}} // namespace Internal, Exiv2 - -#endif // #ifndef PANASONICMN_INT_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/path-test.cpp b/platform/win32/msvc/external/exiv2/src/path-test.cpp deleted file mode 100644 index 325292e3970..00000000000 --- a/platform/win32/msvc/external/exiv2/src/path-test.cpp +++ /dev/null @@ -1,36 +0,0 @@ -// ***************************************************************** -*- C++ -*- -// path-test.cpp, $Rev: 1703 $ - -#include "utils.hpp" -#include -#include -#include -#include - -int main(int argc, char* const argv[]) -{ - if (argc != 2) { - std::cout << "Usage: " << argv[0] << " file\n"; - return 1; - } - std::ifstream file(argv[1]); - if (!file) { - std::cerr << *argv[1] << ": Failed to open file for reading\n"; - return 1; - } - std::string line; - while (std::getline(file, line)) { - std::string path, dir, base; - std::istringstream is(line); - is >> path >> dir >> base; - std::string d = Util::dirname(path); - std::string b = Util::basename(path); - - if (d != dir || b != base) { - std::cout << path << "\t'" << d << "'\t '" << b - << "'\t ==> Testcase failed\n"; - } - } - - return 0; -} diff --git a/platform/win32/msvc/external/exiv2/src/pentaxmn.cpp b/platform/win32/msvc/external/exiv2/src/pentaxmn.cpp deleted file mode 100644 index 34eb475eb14..00000000000 --- a/platform/win32/msvc/external/exiv2/src/pentaxmn.cpp +++ /dev/null @@ -1,1134 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: pentaxmn.cpp - Version: $Rev: 2681 $ - Author(s): Michal Cihar - Based on fujimn.cpp by: - Andreas Huggel (ahu) - Gilles Caulier (gc) - History: 27-Sep-07 created - Credits: See header file. - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: pentaxmn.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#include "types.hpp" -#include "pentaxmn_int.hpp" -#include "value.hpp" -#include "i18n.h" // NLS support. - -// + standard includes -#include -#include -#include -#include -#include - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - namespace Internal { - - //! ShootingMode, tag 0x0001 - extern const TagDetails pentaxShootingMode[] = { - { 0, N_("Auto") }, - { 1, N_("Night-Scene") }, - { 2, N_("Manual") }, - }; - - //! CameraModel, tag 0x0005 - extern const TagDetails pentaxModel[] = { - { 0x0000d, N_("Optio 330/430") }, - { 0x12926, N_("Optio 230") }, - { 0x12958, N_("Optio 330GS") }, - { 0x12962, N_("Optio 450/550") }, - { 0x1296c, N_("Optio S") }, - { 0x12994, N_("*ist D") }, - { 0x129b2, N_("Optio 33L") }, - { 0x129bc, N_("Optio 33LF") }, - { 0x129c6, N_("Optio 33WR/43WR/555") }, - { 0x129d5, N_("Optio S4") }, - { 0x12a02, N_("Optio MX") }, - { 0x12a0c, N_("Optio S40") }, - { 0x12a16, N_("Optio S4i") }, - { 0x12a34, N_("Optio 30") }, - { 0x12a52, N_("Optio S30") }, - { 0x12a66, N_("Optio 750Z") }, - { 0x12a70, N_("Optio SV") }, - { 0x12a75, N_("Optio SVi") }, - { 0x12a7a, N_("Optio X") }, - { 0x12a8e, N_("Optio S5i") }, - { 0x12a98, N_("Optio S50") }, - { 0x12aa2, N_("*ist DS") }, - { 0x12ab6, N_("Optio MX4") }, - { 0x12ac0, N_("Optio S5n") }, - { 0x12aca, N_("Optio WP") }, - { 0x12afc, N_("Optio S55") }, - { 0x12b10, N_("Optio S5z") }, - { 0x12b1a, N_("*ist DL") }, - { 0x12b24, N_("Optio S60") }, - { 0x12b2e, N_("Optio S45") }, - { 0x12b38, N_("Optio S6") }, - { 0x12b4c, N_("Optio WPi") }, - { 0x12b56, N_("BenQ DC X600") }, - { 0x12b60, N_("*ist DS2") }, - { 0x12b62, N_("Samsung GX-1S") }, - { 0x12b6a, N_("Optio A10") }, - { 0x12b7e, N_("*ist DL2") }, - { 0x12b80, N_("Samsung GX-1L") }, - { 0x12b9c, N_("K100D") }, - { 0x12b9d, N_("K110D") }, - { 0x12ba2, N_("K100D Super") }, - { 0x12bb0, N_("Optio T10/T20") }, - { 0x12be2, N_("Optio W10") }, - { 0x12bf6, N_("Optio M10") }, - { 0x12c1e, N_("K10D") }, - { 0x12c20, N_("Samsung GX10") }, - { 0x12c28, N_("Optio S7") }, - { 0x12c2d, N_("Optio L20") }, - { 0x12c32, N_("Optio M20") }, - { 0x12c3c, N_("Optio W20") }, - { 0x12c46, N_("Optio A20") }, - { 0x12c8c, N_("Optio M30") }, - { 0x12c78, N_("Optio E30") }, - { 0x12c7d, N_("Optio E35") }, - { 0x12c82, N_("Optio T30") }, - { 0x12c96, N_("Optio W30") }, - { 0x12ca0, N_("Optio A30") }, - { 0x12cb4, N_("Optio E40") }, - { 0x12cbe, N_("Optio M40") }, - { 0x12cc8, N_("Optio Z10") }, - { 0x12cd2, N_("K20D") }, - { 0x12cd4, N_("Samsung GX20") }, - { 0x12cdc, N_("Optio S10") }, - { 0x12ce6, N_("Optio A40") }, - { 0x12cf0, N_("Optio V10") }, - { 0x12cfa, N_("K200D") }, - { 0x12d04, N_("Optio S12") }, - { 0x12d0e, N_("Optio E50") }, - { 0x12d18, N_("Optio M50") }, - { 0x12d2c, N_("Optio V20") }, - { 0x12d40, N_("Optio W60") }, - { 0x12d4a, N_("Optio M60") }, - { 0x12d68, N_("Optio E60") }, - { 0x12d72, N_("K2000") }, - { 0x12d73, N_("K-m") }, - { 0x12d86, N_("Optio P70") }, - { 0x12d9a, N_("Optio E70") }, - { 0x12dae, N_("X70") }, - { 0x12db8, N_("K-7") }, - { 0x12dcc, N_("Optio W80") }, - { 0x12dea, N_("Optio P80") }, - { 0x12df4, N_("Optio WS80") }, - { 0x12dfe, N_("K-x") }, - { 0x12e08, N_("645D") }, - { 0x12e3a, N_("Optio I-10") }, - }; - - //! Quality, tag 0x0008 - extern const TagDetails pentaxQuality[] = { - { 0, N_("Good") }, - { 1, N_("Better") }, - { 2, N_("Best") }, - { 3, N_("TIFF") }, - { 4, N_("RAW") }, - { 5, N_("Premium") }, - }; - - //! Size, tag 0x0009 - extern const TagDetails pentaxSize[] = { - { 0, N_("640x480") }, - { 1, N_("Full") }, - { 2, N_("1024x768") }, - { 3, N_("1280x960") }, - { 4, N_("1600x1200") }, - { 5, N_("2048x1536") }, - { 8, N_("2560x1920 or 2304x1728") }, - { 9, N_("3072x2304") }, - { 10, N_("3264x2448") }, - { 19, N_("320x240") }, - { 20, N_("2288x1712") }, - { 21, N_("2592x1944") }, - { 22, N_("2304x1728 or 2592x1944") }, - { 23, N_("3056x2296") }, - { 25, N_("2816x2212 or 2816x2112") }, - { 27, N_("3648x2736") }, - }; - - //! Flash, tag 0x000c - extern const TagDetails pentaxFlash[] = { - { 0x000, N_("Auto, Did not fire") }, - { 0x001, N_("Off") }, - { 0x003, N_("Auto, Did not fire, Red-eye reduction") }, - { 0x100, N_("Auto, Fired") }, - { 0x102, N_("On") }, - { 0x103, N_("Auto, Fired, Red-eye reduction") }, - { 0x104, N_("On, Red-eye reduction") }, - { 0x105, N_("On, Wireless") }, - { 0x108, N_("On, Soft") }, - { 0x109, N_("On, Slow-sync") }, - { 0x10a, N_("On, Slow-sync, Red-eye reduction") }, - { 0x10b, N_("On, Trailing-curtain Sync") }, - }; - - //! Focus, tag 0x000d - extern const TagDetails pentaxFocus[] = { - { 0, N_("Normal") }, - { 1, N_("Macro") }, - { 2, N_("Infinity") }, - { 3, N_("Manual") }, - { 4, N_("Super Macro") }, - { 5, N_("Pan Focus") }, - { 16, N_("AF-S") }, - { 17, N_("AF-C") }, - { 18, N_("AF-A") }, - }; - - //! AFPoint, tag 0x000e - extern const TagDetails pentaxAFPoint[] = { - { 0xffff, N_("Auto") }, - { 0xfffe, N_("Fixed Center") }, - { 0xfffd, N_("Automatic Tracking AF") }, - { 0xfffc, N_("Face Recognition AF") }, - { 1, N_("Upper-left") }, - { 2, N_("Top") }, - { 3, N_("Upper-right") }, - { 4, N_("Left") }, - { 5, N_("Mid-left") }, - { 6, N_("Center") }, - { 7, N_("Mid-right") }, - { 8, N_("Right") }, - { 9, N_("Lower-left") }, - { 10, N_("Bottom") }, - { 11, N_("Lower-right") }, - }; - - //! AFPointInFocus, tag 0x000f - extern const TagDetails pentaxAFPointFocus[] = { - { 0xffff, N_("None") }, - { 0, N_("Fixed Center or multiple") }, - { 1, N_("Top-left") }, - { 2, N_("Top-center") }, - { 3, N_("Top-right") }, - { 4, N_("Left") }, - { 5, N_("Center") }, - { 6, N_("Right") }, - { 7, N_("Bottom-left") }, - { 8, N_("Bottom-center") }, - { 9, N_("Bottom-right") }, - }; - - //! ISO, tag 0x0014 - extern const TagDetails pentaxISO[] = { - { 3, N_("50") }, - { 4, N_("64") }, - { 5, N_("80") }, - { 6, N_("100") }, - { 7, N_("125") }, - { 8, N_("160") }, - { 9, N_("200") }, - { 10, N_("250") }, - { 11, N_("320") }, - { 12, N_("400") }, - { 13, N_("500") }, - { 14, N_("640") }, - { 15, N_("800") }, - { 16, N_("1000") }, - { 17, N_("1250") }, - { 18, N_("1600") }, - { 19, N_("2000") }, - { 20, N_("2500") }, - { 21, N_("3200") }, - { 22, N_("4000") }, - { 23, N_("5000") }, - { 24, N_("6400") }, - { 50, N_("50") }, - { 100, N_("100") }, - { 200, N_("200") }, - { 268, N_("200") }, - { 400, N_("400") }, - { 800, N_("800") }, - { 1600, N_("1600") }, - { 3200, N_("3200") }, - { 258, N_("50") }, - { 259, N_("70") }, - { 260, N_("100") }, - { 261, N_("140") }, - { 262, N_("200") }, - { 263, N_("280") }, - { 264, N_("400") }, - { 265, N_("560") }, - { 266, N_("800") }, - { 267, N_("1100") }, - { 268, N_("1600") }, - { 269, N_("2200") }, - { 270, N_("3200") }, - }; - - //! Generic for Off/On switches - extern const TagDetails pentaxOffOn[] = { - { 0, N_("Off") }, - { 1, N_("On") }, - }; - - //! Generic for Yes/No switches - extern const TagDetails pentaxYesNo[] = { - { 0, N_("No") }, - { 1, N_("Yes") }, - }; - - //! MeteringMode, tag 0x0017 - extern const TagDetails pentaxMeteringMode[] = { - { 0, N_("Multi Segment") }, - { 1, N_("Center Weighted") }, - { 2, N_("Spot") }, - }; - - //! WhiteBallance, tag 0x0019 - extern const TagDetails pentaxWhiteBallance[] = { - { 0, N_("Auto") }, - { 1, N_("Daylight") }, - { 2, N_("Shade") }, - { 3, N_("Fluorescent") }, - { 4, N_("Tungsten") }, - { 5, N_("Manual") }, - { 6, N_("DaylightFluorescent") }, - { 7, N_("DaywhiteFluorescent") }, - { 8, N_("WhiteFluorescent") }, - { 9, N_("Flash") }, - { 10, N_("Cloudy") }, - { 17, N_("Kelvin") }, - { 65534, N_("Unknown") }, - { 65535, N_("User Selected") }, - }; - - //! WhiteBallance, tag 0x001a - extern const TagDetails pentaxWhiteBallanceMode[] = { - { 1, N_("Auto (Daylight)") }, - { 2, N_("Auto (Shade)") }, - { 3, N_("Auto (Flash)") }, - { 4, N_("Auto (Tungsten)") }, - { 7, N_("Auto (DaywhiteFluorescent)") }, - { 8, N_("Auto (WhiteFluorescent)") }, - { 10, N_("Auto (Cloudy)") }, - { 0xffff, N_("User-Selected") }, - { 0xfffe, N_("Preset (Fireworks?)") }, - }; - - //! Saturation, tag 0x001f - extern const TagDetails pentaxSaturation[] = { - { 0, N_("Low") }, - { 1, N_("Normal") }, - { 2, N_("High") }, - { 3, N_("Med Low") }, - { 4, N_("Med High") }, - { 5, N_("Very Low") }, - { 6, N_("Very High") }, - { 65535, N_("None") }, - { 65535, N_("None") } // To silence compiler warning - }; - - //! Contrast, tag 0x0020 - extern const TagDetails pentaxContrast[] = { - { 0, N_("Low") }, - { 1, N_("Normal") }, - { 2, N_("High") }, - { 3, N_("Med Low") }, - { 4, N_("Med High") }, - { 5, N_("Very Low") }, - { 6, N_("Very High") }, - }; - - //! Sharpness, tag 0x0021 - extern const TagDetails pentaxSharpness[] = { - { 0, N_("Soft") }, - { 1, N_("Normal") }, - { 2, N_("Hard") }, - { 3, N_("Med Soft") }, - { 4, N_("Med Hard") }, - { 5, N_("Very Soft") }, - { 6, N_("Very Hard") }, - }; - - //! Location, tag 0x0022 - extern const TagDetails pentaxLocation[] = { - { 0, N_("Home town") }, - { 1, N_("Destination") }, - }; - - //! City names, tags 0x0023 and 0x0024 - extern const TagDetails pentaxCities[] = { - { 0, N_("Pago Pago") }, - { 1, N_("Honolulu") }, - { 2, N_("Anchorage") }, - { 3, N_("Vancouver") }, - { 4, N_("San Fransisco") }, - { 5, N_("Los Angeles") }, - { 6, N_("Calgary") }, - { 7, N_("Denver") }, - { 8, N_("Mexico City") }, - { 9, N_("Chicago") }, - { 10, N_("Miami") }, - { 11, N_("Toronto") }, - { 12, N_("New York") }, - { 13, N_("Santiago") }, - { 14, N_("Caracus") }, - { 15, N_("Halifax") }, - { 16, N_("Buenos Aires") }, - { 17, N_("Sao Paulo") }, - { 18, N_("Rio de Janeiro") }, - { 19, N_("Madrid") }, - { 20, N_("London") }, - { 21, N_("Paris") }, - { 22, N_("Milan") }, - { 23, N_("Rome") }, - { 24, N_("Berlin") }, - { 25, N_("Johannesburg") }, - { 26, N_("Istanbul") }, - { 27, N_("Cairo") }, - { 28, N_("Jerusalem") }, - { 29, N_("Moscow") }, - { 30, N_("Jeddah") }, - { 31, N_("Tehran") }, - { 32, N_("Dubai") }, - { 33, N_("Karachi") }, - { 34, N_("Kabul") }, - { 35, N_("Male") }, - { 36, N_("Delhi") }, - { 37, N_("Colombo") }, - { 38, N_("Kathmandu") }, - { 39, N_("Dacca") }, - { 40, N_("Yangon") }, - { 41, N_("Bangkok") }, - { 42, N_("Kuala Lumpur") }, - { 43, N_("Vientiane") }, - { 44, N_("Singapore") }, - { 45, N_("Phnom Penh") }, - { 46, N_("Ho Chi Minh") }, - { 47, N_("Jakarta") }, - { 48, N_("Hong Kong") }, - { 49, N_("Perth") }, - { 50, N_("Beijing") }, - { 51, N_("Shanghai") }, - { 52, N_("Manila") }, - { 53, N_("Taipei") }, - { 54, N_("Seoul") }, - { 55, N_("Adelaide") }, - { 56, N_("Tokyo") }, - { 57, N_("Guam") }, - { 58, N_("Sydney") }, - { 59, N_("Noumea") }, - { 60, N_("Wellington") }, - { 61, N_("Auckland") }, - { 62, N_("Lima") }, - { 63, N_("Dakar") }, - { 64, N_("Algiers") }, - { 65, N_("Helsinki") }, - { 66, N_("Athens") }, - { 67, N_("Nairobi") }, - { 68, N_("Amsterdam") }, - { 69, N_("Stockholm") }, - { 70, N_("Lisbon") }, - { 71, N_("Copenhagen") }, - }; - - //! ImageProcessing, combi-tag 0x0032 (4 bytes) - extern const TagDetails pentaxImageProcessing[] = { - { 0x00000000, N_("Unprocessed") }, - { 0x00000004, N_("Digital Filter") }, - { 0x02000000, N_("Cropped") }, - { 0x04000000, N_("Color Filter") }, - { 0x10000000, N_("Frame Synthesis?") } - }; - - //! PictureMode, combi-tag 0x0033 (3 bytes) - extern const TagDetails pentaxPictureMode[] = { - { 0x000000, N_("Program") }, - { 0x000300, N_("MTF Program") }, - { 0x000400, N_("Standard") }, - { 0x000500, N_("Portrait") }, - { 0x000600, N_("Landscape") }, - { 0x000700, N_("Macro") }, - { 0x000800, N_("Sport") }, - { 0x000900, N_("Night Scene Portrait") }, - { 0x000a00, N_("No Flash") }, - /* SCN modes (menu-selected) */ - { 0x000b00, N_("Night Scene") }, - { 0x000c00, N_("Surf & Snow") }, - { 0x000d00, N_("Text") }, - { 0x000e00, N_("Sunset") }, - { 0x000f00, N_("Kids") }, - { 0x001000, N_("Pet") }, - { 0x001100, N_("Candlelight") }, - { 0x001200, N_("Museum") }, - { 0x001300, N_("Food") }, - { 0x001400, N_("Stage Lighting") }, - { 0x001500, N_("Night Snap") }, - /* AUTO PICT modes (auto-selected) */ - { 0x010400, N_("Auto PICT (Standard)") }, - { 0x010500, N_("Auto PICT (Portrait)") }, - { 0x010600, N_("Auto PICT (Landscape)") }, - { 0x010700, N_("Auto PICT (Macro)") }, - { 0x010800, N_("Auto PICT (Sport)") }, - /* Manual dial modes */ - { 0x020000, N_("Program AE") }, - { 0x030000, N_("Green Mode") }, - { 0x040000, N_("Shutter Speed Priority") }, - { 0x050000, N_("Aperture Priority") }, - { 0x080000, N_("Manual") }, - { 0x090000, N_("Bulb") }, - /* *istD modes */ - { 0x020001, N_("Program AE") }, - { 0x020101, N_("Hi-speed Program") }, - { 0x020201, N_("DOF Program") }, - { 0x020301, N_("MTF Program") }, - { 0x030001, N_("Green Mode") }, - { 0x040001, N_("Shutter Speed Priority") }, - { 0x050001, N_("Aperture Priority") }, - { 0x060001, N_("Program Tv Shift") }, - { 0x070001, N_("Program Av Shift") }, - { 0x080001, N_("Manual") }, - { 0x090001, N_("Bulb") }, - { 0x0a0001, N_("Aperture Priority (Off-Auto-Aperture)") }, - { 0x0b0001, N_("Manual (Off-Auto-Aperture)") }, - { 0x0c0001, N_("Bulb (Off-Auto-Aperture)") }, - /* K10D modes */ - { 0x060000, N_("Shutter Priority") }, - { 0x0d0000, N_("Shutter & Aperture Priority AE") }, - { 0x0d0001, N_("Shutter & Aperture Priority AE (1)") }, - { 0x0f0000, N_("Sensitivity Priority AE") }, - { 0x0f0001, N_("Sensitivity Priority AE (1)") }, - { 0x100000, N_("Flash X-Sync Speed AE") }, - { 0x100001, N_("Flash X-Sync Speed AE (1)") }, - /* other modes */ - { 0x000001, N_("Program") }, - { 0xfe0000, N_("Video (30 fps)") }, - { 0xff0004, N_("Video (24 fps)") }, - }; - - //! DriveMode, combi-tag 0x0034 (4 bytes) - extern const TagDetails pentaxDriveMode[] = { - { 0x00000000, N_("Single-frame") }, - { 0x01000000, N_("Continuous") }, - { 0x02000000, N_("Continuous (Hi)") }, - { 0x03000000, N_("Burst") }, - { 0x00100000, N_("Single-frame") }, /* on 645D */ - { 0x00010000, N_("Self-timer (12 sec)") }, - { 0x00020000, N_("Self-timer (2 sec)") }, - { 0x00000100, N_("Remote Control (3 sec)") }, - { 0x00000200, N_("Remote Control") }, - { 0x00000001, N_("Multiple Exposure") }, - { 0x000000ff, N_("Video") }, - }; - - //! ColorSpace, tag 0x0037 - extern const TagDetails pentaxColorSpace[] = { - { 0, N_("sRGB") }, - { 1, N_("Adobe RGB") }, - }; - - //! LensType, combi-tag 0x003f (2 unsigned long) - extern const TagDetails pentaxLensType[] = { - { 0x0000, N_("M-42 or No Lens") }, - { 0x0100, N_("K,M Lens") }, - { 0x0200, N_("A Series Lens") }, - { 0x0300, "SIGMA" }, - { 0x0311, "smc PENTAX-FA SOFT 85mm F2.8" }, - { 0x0312, "smc PENTAX-F 1.7X AF ADAPTER" }, - { 0x0313, "smc PENTAX-F 24-50mm F4" }, - { 0x0314, "smc PENTAX-F 35-80mm F4-5.6" }, - { 0x0315, "smc PENTAX-F 80-200mm F4.7-5.6" }, - { 0x0316, "smc PENTAX-F FISH-EYE 17-28mm F3.5-4.5" }, - { 0x0317, "smc PENTAX-F 100-300mm F4.5-5.6" }, - { 0x0318, "smc PENTAX-F 35-135mm F3.5-4.5" }, - { 0x0319, "smc PENTAX-F 35-105mm F4-5.6 or SIGMA or Tokina" }, - { 0x031a, "smc PENTAX-F* 250-600mm F5.6 ED[IF]" }, - { 0x031b, "smc PENTAX-F 28-80mm F3.5-4.5" }, - { 0x031c, "smc PENTAX-F 35-70mm F3.5-4.5" }, - { 0x031d, "PENTAX-F 28-80mm F3.5-4.5 or SIGMA AF 18-125mm F3.5-5.6 DC" }, - { 0x031e, "PENTAX-F 70-200mm F4-5.6" }, - { 0x031f, "smc PENTAX-F 70-210mm F4-5.6" }, - { 0x0320, "smc PENTAX-F 50mm F1.4" }, - { 0x0321, "smc PENTAX-F 50mm F1.7" }, - { 0x0322, "smc PENTAX-F 135mm F2.8 [IF]" }, - { 0x0323, "smc PENTAX-F 28mm F2.8" }, - { 0x0324, "SIGMA 20mm F1.8 EX DG ASPHERICAL RF" }, - { 0x0326, "smc PENTAX-F* 300mm F4.5 ED[IF]" }, - { 0x0327, "smc PENTAX-F* 600mm F4 ED[IF]" }, - { 0x0328, "smc PENTAX-F MACRO 100mm F2.8" }, - { 0x0329, "smc PENTAX-F MACRO 50mm F2.8 or Sigma 50mm F2,8 MACRO" }, - { 0x032c, "Tamron 35-90mm F4 AF or various SIGMA models" }, - { 0x032e, "SIGMA APO 70-200mm F2.8 EX" }, - { 0x0332, "smc PENTAX-FA 28-70mm F4 AL" }, - { 0x0333, "SIGMA 28mm F1.8 EX DG ASPHERICAL MACRO" }, - { 0x0334, "smc PENTAX-FA 28-200mm F3.8-5.6 AL[IF]" }, - { 0x0335, "smc PENTAX-FA 28-80mm F3.5-5.6 AL" }, - { 0x03f7, "smc PENTAX-DA FISH-EYE 10-17mm F3.5-4.5 ED[IF]" }, - { 0x03f8, "smc PENTAX-DA 12-24mm F4 ED AL[IF]" }, - { 0x03fa, "smc PENTAX-DA 50-200mm F4-5.6 ED" }, - { 0x03fb, "smc PENTAX-DA 40mm F2.8 Limited" }, - { 0x03fc, "smc PENTAX-DA 18-55mm F3.5-5.6 AL" }, - { 0x03fd, "smc PENTAX-DA 14mm F2.8 ED[IF]" }, - { 0x03fe, "smc PENTAX-DA 16-45mm F4 ED AL" }, - { 0x03ff, "SIGMA" }, - { 0x0401, "smc PENTAX-FA SOFT 28mm F2.8" }, - { 0x0402, "smc PENTAX-FA 80-320mm F4.5-5.6" }, - { 0x0403, "smc PENTAX-FA 43mm F1.9 Limited" }, - { 0x0406, "smc PENTAX-FA 35-80mm F4-5.6" }, - { 0x040c, "smc PENTAX-FA 50mm F1.4" }, - { 0x040f, "smc PENTAX-FA 28-105mm F4-5.6 [IF]" }, - { 0x0410, "TAMRON AF 80-210mm F4-5.6 (178D)" }, - { 0x0413, "TAMRON SP AF 90mm F2.8 (172E)" }, - { 0x0414, "smc PENTAX-FA 28-80mm F3.5-5.6" }, - { 0x0416, "TOKINA 28-80mm F3.5-5.6" }, - { 0x0417, "smc PENTAX-FA 20-35mm F4 AL" }, - { 0x0418, "smc PENTAX-FA 77mm F1.8 Limited" }, - { 0x0419, "TAMRON SP AF 14mm F2.8" }, - { 0x041a, "smc PENTAX-FA MACRO 100mm F3.5" }, - { 0x041b, "TAMRON AF28-300mm F/3.5-6.3 LD Aspherical[IF] MACRO (285D)" }, - { 0x041c, "smc PENTAX-FA 35mm F2 AL" }, - { 0x041d, "TAMRON AF 28-200mm F/3.8-5.6 LD Super II MACRO (371D)" }, - { 0x0422, "smc PENTAX-FA 24-90mm F3.5-4.5 AL[IF]" }, - { 0x0423, "smc PENTAX-FA 100-300mm F4.7-5.8" }, - { 0x0424, "TAMRON AF70-300mm F/4-5.6 LD MACRO" }, - { 0x0425, "TAMRON SP AF 24-135mm F3.5-5.6 AD AL (190D)" }, - { 0x0426, "smc PENTAX-FA 28-105mm F3.2-4.5 AL[IF]" }, - { 0x0427, "smc PENTAX-FA 31mm F1.8AL Limited" }, - { 0x0429, "TAMRON AF 28-200mm Super Zoom F3.8-5.6 Aspherical XR [IF] MACRO (A03)" }, - { 0x042b, "smc PENTAX-FA 28-90mm F3.5-5.6" }, - { 0x042c, "smc PENTAX-FA J 75-300mm F4.5-5.8 AL" }, - { 0x042d, "TAMRON 28-300mm F3.5-6.3 Ultra zoom XR" }, - { 0x042e, "smc PENTAX-FA J 28-80mm F3.5-5.6 AL" }, - { 0x042f, "smc PENTAX-FA J 18-35mm F4-5.6 AL" }, - { 0x0431, "TAMRON SP AF 28-75mm F2.8 XR Di (A09)" }, - { 0x0433, "smc PENTAX-D FA 50mm F2.8 MACRO" }, - { 0x0434, "smc PENTAX-D FA 100mm F2.8 MACRO" }, - { 0x04f4, "smc PENTAX-DA 21mm F3.2 AL Limited" }, - { 0x04f5, "Schneider D-XENON 50-200mm" }, - { 0x04f6, "Schneider D-XENON 18-55mm" }, - { 0x04f7, "smc PENTAX-DA 10-17mm F3.5-4.5 ED [IF] Fisheye zoom" }, - { 0x04f8, "smc PENTAX-DA 12-24mm F4 ED AL [IF]" }, - { 0x04f9, "TAMRON XR DiII 18-200mm F3.5-6.3 (A14)" }, - { 0x04fa, "smc PENTAX-DA 50-200mm F4-5.6 ED" }, - { 0x04fb, "smc PENTAX-DA 40mm F2.8 Limited" }, - { 0x04fc, "smc PENTAX-DA 18-55mm F3.5-5.6 AL" }, - { 0x04fd, "smc PENTAX-DA 14mm F2.8 ED[IF]" }, - { 0x04fe, "smc PENTAX-DA 16-45mm F4 ED AL" }, - { 0x0501, "smc PENTAX-FA* 24mm F2 AL[IF]" }, - { 0x0502, "smc PENTAX-FA 28mm F2.8 AL" }, - { 0x0503, "smc PENTAX-FA 50mm F1.7" }, - { 0x0504, "smc PENTAX-FA 50mm F1.4" }, - { 0x0505, "smc PENTAX-FA* 600mm F4 ED[IF]" }, - { 0x0506, "smc PENTAX-FA* 300mm F4.5 ED[IF]" }, - { 0x0507, "smc PENTAX-FA 135mm F2.8 [IF]" }, - { 0x0508, "smc PENTAX-FA MACRO 50mm F2.8" }, - { 0x0509, "smc PENTAX-FA MACRO 100mm F2.8" }, - { 0x050a, "smc PENTAX-FA* 85mm F1.4 [IF]" }, - { 0x050b, "smc PENTAX-FA* 200mm F2.8 ED[IF]" }, - { 0x050c, "smc PENTAX-FA 28-80mm F3.5-4.7" }, - { 0x050d, "smc PENTAX-FA 70-200mm F4-5.6" }, - { 0x050e, "smc PENTAX-FA* 250-600mm F5.6 ED[IF]" }, - { 0x050f, "smc PENTAX-FA 28-105mm F4-5.6" }, - { 0x0510, "smc PENTAX-FA 100-300mm F4.5-5.6" }, - { 0x0601, "smc PENTAX-FA* 85mm F1.4[IF]" }, - { 0x0602, "smc PENTAX-FA* 200mm F2.8 ED[IF]" }, - { 0x0603, "smc PENTAX-FA* 300mm F2.8 ED[IF]" }, - { 0x0604, "smc PENTAX-FA* 28-70mm F2.8 AL" }, - { 0x0605, "smc PENTAX-FA* 80-200mm F2.8 ED[IF]" }, - { 0x0606, "smc PENTAX-FA* 28-70mm F2.8 AL" }, - { 0x0607, "smc PENTAX-FA* 80-200mm F2.8 ED[IF]" }, - { 0x0608, "smc PENTAX-FA 28-70mm F4AL" }, - { 0x0609, "smc PENTAX-FA 20mm F2.8" }, - { 0x060a, "smc PENTAX-FA* 400mm F5.6 ED[IF]" }, - { 0x060d, "smc PENTAX-FA* 400mm F5.6 ED[IF]" }, - { 0x060e, "smc PENTAX-FA* MACRO 200mm F4 ED[IF]" }, - { 0x0700, "smc PENTAX-DA 21mm F3.2 AL Limited" }, - { 0x074b, "Tamron SP AF 70-200mm F2.8 Di LD [IF] Macro (A001)" }, - { 0x07d9, "smc PENTAX-DA 50-200mm F4-5.6 ED WR" }, - { 0x07da, "smc PENTAX-DA 18-55mm F3.5-5.6 AL WR" }, - { 0x07dc, "Tamron SP AF 10-24mm F3.5-4.5 Di II LD Aspherical [IF]" }, - { 0x07de, "smc PENTAX-DA 18-55mm F3.5-5.6 AL II" }, - { 0x07df, "Samsung D-XENON 18-55mm F3.5-5.6 II" }, - { 0x07e0, "smc PENTAX-DA 15mm F4 ED AL Limited" }, - { 0x07e1, "Samsung D-XENON 18-250mm F3.5-6.3" }, - { 0x07e5, "smc PENTAX-DA 18-55mm F3.5-5.6 AL II" }, - { 0x07e6, "Tamron AF 17-50mm F2.8 XR Di-II LD (Model A16)" }, - { 0x07e7, "smc PENTAX-DA 18-250mm F3.5-6.3ED AL [IF]" }, - { 0x07e9, "smc PENTAX-DA 35mm F2.8 Macro Limited" }, - { 0x07ea, "smc PENTAX-DA* 300 mm F4ED [IF] SDM (SDM not used)" }, - { 0x07eb, "smc PENTAX-DA* 200mm F2.8 ED [IF] SDM (SDM not used)" }, - { 0x07ec, "smc PENTAX-DA 55-300mm F4-5.8 ED" }, - { 0x07ee, "TAMRON AF 18-250mm F3.5-6.3 Di II LD Aspherical [IF] MACRO" }, - { 0x07f1, "smc PENTAX-DA* 50-135mm F2.8 ED [IF] SDM (SDM not used)" }, - { 0x07f2, "smc PENTAX-DA* 16-50mm F2.8 ED AL [IF] SDM (SDM not used)" }, - { 0x07f3, "smc PENTAX-DA 70mm F2.4 Limited" }, - { 0x07f4, "smc PENTAX-DA 21mm F3.2 AL Limited" }, - { 0x08e2, "smc PENTAX-DA* 55mm F1.4 SDM" }, - { 0x08e3, "smc PENTAX DA* 60-250mm F4 [IF] SDM"}, - { 0x08e8, "smc PENTAX-DA 17-70mm F4 AL [IF] SDM" }, - { 0x08ea, "smc PENTAX-DA* 300mm F4 ED [IF] SDM" }, - { 0x08eb, "smc PENTAX-DA* 200mm F2.8 ED [IF] SDM" }, - { 0x08f1, "smc PENTAX-DA* 50-135mm F2.8 ED [IF] SDM" }, - { 0x08f2, "smc PENTAX-DA* 16-50mm F2.8 ED AL [IF] SDM" }, - { 0x0b04, "smc PENTAX-FA645 Zoom 45mm-85mm F4.5" }, - { 0x0b07, "smc PENTAX-FA645 Macro 120mm F4" }, - { 0x0b11, "smc PENTAX-FA645 Zoom 150mm-300mm F5.6 ED [IF]" }, - }; - - //! ImageTone, tag 0x004f - extern const TagDetails pentaxImageTone[] = { - { 0, N_("Natural") }, - { 1, N_("Bright") }, - { 2, N_("Portrait") }, - { 3, N_("Landscape") }, - { 4, N_("Vibrant") }, - { 5, N_("Monochrome") }, - { 7, N_("Reversal film") }, - }; - - //! DynamicRangeExpansion, tag 0x0069 - extern const TagDetails pentaxDynamicRangeExpansion[] = { - { 0, N_("Off") }, - { 0x1000000, N_("On") }, - }; - - //! HighISONoiseReduction, tag 0x0071 - extern const TagDetails pentaxHighISONoiseReduction[] = { - { 0, N_("Off") }, - { 1, N_("Weakest") }, - { 2, N_("Weak") }, - { 3, N_("Strong") }, - { 4, N_("Custom") }, - }; - - std::ostream& PentaxMakerNote::printPentaxVersion(std::ostream& os, const Value& value, const ExifData*) - { - std::string val = value.toString(); - size_t i; - while ((i = val.find(' ')) != std::string::npos && i != val.length() - 1) { - val.replace(i, 1, "."); - } - os << val; - return os; - } - - std::ostream& PentaxMakerNote::printPentaxResolution(std::ostream& os, const Value& value, const ExifData*) - { - std::string val = value.toString(); - size_t i; - while ((i = val.find(' ')) != std::string::npos && i != val.length() - 1) { - val.replace(i, 1, "x"); - } - os << val; - return os; - } - - std::ostream& PentaxMakerNote::printPentaxDate(std::ostream& os, const Value& value, const ExifData*) - { - /* I choose same format as is used inside EXIF itself */ - os << ((value.toLong(0) << 8) + value.toLong(1)); - os << ":"; - os << std::setw(2) << std::setfill('0') << value.toLong(2); - os << ":"; - os << std::setw(2) << std::setfill('0') << value.toLong(3); - return os; - } - - std::ostream& PentaxMakerNote::printPentaxTime(std::ostream& os, const Value& value, const ExifData*) - { - os << std::setw(2) << std::setfill('0') << value.toLong(0); - os << ":"; - os << std::setw(2) << std::setfill('0') << value.toLong(1); - os << ":"; - os << std::setw(2) << std::setfill('0') << value.toLong(2); - return os; - } - - std::ostream& PentaxMakerNote::printPentaxExposure(std::ostream& os, const Value& value, const ExifData*) - { - os << static_cast(value.toLong()) / 100 << " ms"; - return os; - } - - std::ostream& PentaxMakerNote::printPentaxFValue(std::ostream& os, const Value& value, const ExifData*) - { - os << "F" << std::setprecision(2) - << static_cast(value.toLong()) / 10; - return os; - } - - std::ostream& PentaxMakerNote::printPentaxFocalLength(std::ostream& os, const Value& value, const ExifData*) - { - os << std::fixed << std::setprecision(1) - << static_cast(value.toLong()) / 100 - << " mm"; - return os; - } - - std::ostream& PentaxMakerNote::printPentaxCompensation(std::ostream& os, const Value& value, const ExifData*) - { - os << std::setprecision(2) - << (static_cast(value.toLong()) - 50) / 10 - << " EV"; - return os; - } - - std::ostream& PentaxMakerNote::printPentaxTemperature(std::ostream& os, const Value& value, const ExifData*) - { - os << value.toLong() << " C"; - return os; - } - - std::ostream& PentaxMakerNote::printPentaxFlashCompensation(std::ostream& os, const Value& value, const ExifData*) - { - os << std::setprecision(2) - << static_cast(value.toLong()) / 256 - << " EV"; - return os; - } - - std::ostream& PentaxMakerNote::printPentaxBracketing(std::ostream& os, const Value& value, const ExifData*) - { - long l0 = value.toLong(0); - - if (l0 < 10) { - os << std::setprecision(2) - << static_cast(l0) / 3 - << " EV"; - } else { - os << std::setprecision(2) - << static_cast(l0) - 9.5 - << " EV"; - } - - if (value.count() == 2) { - long l1 = value.toLong(1); - long type; - long range; - os << " ("; - if (l1 == 0) { - os << _("No extended bracketing"); - } else { - type = l1 >> 8; - range = l1 & 0xff; - switch (type) { - case 1: - os << _("WB-BA"); - break; - case 2: - os << _("WB-GM"); - break; - case 3: - os << _("Saturation"); - break; - case 4: - os << _("Sharpness"); - break; - case 5: - os << _("Contrast"); - break; - default: - os << _("Unknown ") << type; - break; - } - os << " " << range; - } - os << ")"; - } - return os; - } - - // Pentax MakerNote Tag Info - const TagInfo PentaxMakerNote::tagInfo_[] = { - TagInfo(0x0000, "Version", N_("Version"), - N_("Pentax Makernote version"), - pentaxId, makerTags, undefined, -1, printPentaxVersion), - TagInfo(0x0001, "Mode", N_("Shooting mode"), - N_("Camera shooting mode"), - pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxShootingMode)), - TagInfo(0x0002, "PreviewResolution", N_("Resolution of a preview image"), - N_("Resolution of a preview image"), - pentaxId, makerTags, undefined, -1, printPentaxResolution), - TagInfo(0x0003, "PreviewLength", N_("Length of a preview image"), - N_("Size of an IFD containing a preview image"), - pentaxId, makerTags, undefined, -1, printValue), - TagInfo(0x0004, "PreviewOffset", N_("Pointer to a preview image"), - N_("Offset to an IFD containing a preview image"), - pentaxId, makerTags, undefined, -1, printValue), - TagInfo(0x0005, "ModelID", N_("Model identification"), - N_("Pentax model idenfication"), - pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxModel)), - TagInfo(0x0006, "Date", N_("Date"), - N_("Date"), - pentaxId, makerTags, undefined, -1, printPentaxDate), - TagInfo(0x0007, "Time", N_("Time"), - N_("Time"), - pentaxId, makerTags, undefined, -1, printPentaxTime), - TagInfo(0x0008, "Quality", N_("Image quality"), - N_("Image quality settings"), - pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxQuality)), - TagInfo(0x0009, "Size", N_("Image size"), - N_("Image size settings"), - pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxSize)), - /* Some missing ! */ - TagInfo(0x000c, "Flash", N_("Flash mode"), - N_("Flash mode settings"), - pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxFlash)), - TagInfo(0x000d, "Focus", N_("Focus mode"), - N_("Focus mode settings"), - pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxFocus)), - TagInfo(0x000e, "AFPoint", N_("AF point"), - N_("Selected AF point"), - pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxAFPoint)), - TagInfo(0x000F, "AFPointInFocus", N_("AF point in focus"), - N_("AF point in focus"), - pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxAFPointFocus)), - /* Some missing ! */ - TagInfo(0x0012, "ExposureTime", N_("Exposure time"), - N_("Exposure time"), - pentaxId, makerTags, unsignedLong, -1, printPentaxExposure), - TagInfo(0x0013, "FNumber", N_("F-Number"), - N_("F-Number"), - pentaxId, makerTags, unsignedLong, -1, printPentaxFValue), - TagInfo(0x0014, "ISO", N_("ISO sensitivity"), - N_("ISO sensitivity settings"), - pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxISO)), - /* Some missing ! */ - TagInfo(0x0016, "ExposureCompensation", N_("Exposure compensation"), - N_("Exposure compensation"), - pentaxId, makerTags, unsignedLong, -1, printPentaxCompensation), - /* Some missing ! */ - TagInfo(0x0017, "MeteringMode", N_("MeteringMode"), - N_("MeteringMode"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxMeteringMode)), - TagInfo(0x0018, "AutoBracketing", N_("AutoBracketing"), - N_("AutoBracketing"), - pentaxId, makerTags, undefined, -1, printPentaxBracketing), - TagInfo(0x0019, "WhiteBallance", N_("White ballance"), - N_("White ballance"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxWhiteBallance)), - TagInfo(0x001a, "WhiteBallanceMode", N_("White ballance mode"), - N_("White ballance mode"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxWhiteBallanceMode)), - TagInfo(0x001b, "BlueBalance", N_("Blue balance"), - N_("Blue color balance"), - pentaxId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x001c, "RedBalance", N_("Red balance"), - N_("Red color balance"), - pentaxId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x001d, "FocalLength", N_("FocalLength"), - N_("FocalLength"), - pentaxId, makerTags, undefined, -1, printPentaxFocalLength), - TagInfo(0x001e, "DigitalZoom", N_("Digital zoom"), - N_("Digital zoom"), - pentaxId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x001f, "Saturation", N_("Saturation"), - N_("Saturation"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxSaturation)), - TagInfo(0x0020, "Contrast", N_("Contrast"), - N_("Contrast"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxContrast)), - TagInfo(0x0021, "Sharpness", N_("Sharpness"), - N_("Sharpness"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxSharpness)), - TagInfo(0x0022, "Location", N_("Location"), - N_("Location"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxLocation)), - TagInfo(0x0023, "Hometown", N_("Hometown"), - N_("Home town"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxCities)), - TagInfo(0x0024, "Destination", N_("Destination"), - N_("Destination"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxCities)), - TagInfo(0x0025, "HometownDST", N_("Hometown DST"), - N_("Whether day saving time is active in home town"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxYesNo)), - TagInfo(0x0026, "DestinationDST", N_("Destination DST"), - N_("Whether day saving time is active in destination"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxYesNo)), - TagInfo(0x0027, "DSPFirmwareVersion", N_("DSPFirmwareVersion"), - N_("DSPFirmwareVersion"), - pentaxId, makerTags, unsignedByte, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0028, "CPUFirmwareVersion", N_("CPUFirmwareVersion"), - N_("CPUFirmwareVersion"), - pentaxId, makerTags, unsignedByte, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0029, "FrameNumber", N_("Frame number"), - N_("Frame number"), - pentaxId, makerTags, undefined, -1, printValue), - /* Some missing ! */ - TagInfo(0x002d, "EffectiveLV", N_("Light value"), - N_("Camera calculated light value, includes exposure compensation"), - pentaxId, makerTags, unsignedShort, -1, printValue), - /* Some missing ! */ - TagInfo(0x0032, "ImageProcessing", N_("Image processing"), - N_("Image processing"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_COMBITAG(pentaxImageProcessing, 4, 0)), - TagInfo(0x0033, "PictureMode", N_("Picture mode"), - N_("Picture mode"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_COMBITAG(pentaxPictureMode, 3, 0)), - TagInfo(0x0034, "DriveMode", N_("Drive mode"), - N_("Drive mode"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_COMBITAG(pentaxDriveMode, 4, 0)), - /* Some missing ! */ - TagInfo(0x0037, "ColorSpace", N_("Color space"), - N_("Color space"), - pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxColorSpace)), - TagInfo(0x0038, "ImageAreaOffset", N_("Image area offset"), - N_("Image area offset"), - pentaxId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0039, "RawImageSize", N_("Raw image size"), - N_("Raw image size"), - pentaxId, makerTags, unsignedLong, -1, printValue), - /* Some missing ! */ - TagInfo(0x003e, "PreviewImageBorders", N_("Preview image borders"), - N_("Preview image borders"), - pentaxId, makerTags, unsignedByte, -1, printValue), - TagInfo(0x003f, "LensType", N_("Lens type"), - N_("Lens type"), - pentaxId, makerTags, unsignedByte, -1, EXV_PRINT_COMBITAG_MULTI(pentaxLensType, 2, 1, 2)), - TagInfo(0x0040, "SensitivityAdjust", N_("Sensitivity adjust"), - N_("Sensitivity adjust"), - pentaxId, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0041, "DigitalFilter", N_("Digital filter"), - N_("Digital filter"), - pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxOffOn)), - /* Some missing ! */ - TagInfo(0x0047, "Temperature", N_("Temperature"), - N_("Camera temperature"), - pentaxId, makerTags, signedByte, -1, printPentaxTemperature), - TagInfo(0x0048, "AELock", N_("AE lock"), - N_("AE lock"), - pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxOffOn)), - TagInfo(0x0049, "NoiseReduction", N_("Noise reduction"), - N_("Noise reduction"), - pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxOffOn)), - /* Some missing ! */ - TagInfo(0x004d, "FlashExposureCompensation", N_("Flash exposure compensation"), - N_("Flash exposure compensation"), - pentaxId, makerTags, signedLong, -1, printPentaxFlashCompensation), - /* Some missing ! */ - TagInfo(0x004f, "ImageTone", N_("Image tone"), - N_("Image tone"), - pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxImageTone)), - TagInfo(0x0050, "ColorTemperature", N_("Colort temperature"), - N_("Colort temperature"), - pentaxId, makerTags, unsignedShort, -1, printValue), - /* Some missing ! */ - TagInfo(0x005c, "ShakeReduction", N_("Shake reduction"), - N_("Shake reduction information"), - pentaxId, makerTags, undefined, -1, printValue), - TagInfo(0x005d, "ShutterCount", N_("Shutter count"), - N_("Shutter count"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: This has some encryption by date (see exiftool) */ - TagInfo(0x0069, "DynamicRangeExpansion", N_("Dynamic range expansion"), - N_("Dynamic range expansion"), - pentaxId, makerTags, undefined, -1, EXV_PRINT_COMBITAG(pentaxDynamicRangeExpansion, 4, 0)), - TagInfo(0x0071, "HighISONoiseReduction", N_("High ISO noise reduction"), - N_("High ISO noise reduction"), - pentaxId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(pentaxHighISONoiseReduction)), - TagInfo(0x0072, "AFAdjustment", N_("AF Adjustment"), - N_("AF Adjustment"), - pentaxId, makerTags, undefined, -1, printValue), - /* Many missing ! */ - TagInfo(0x0200, "BlackPoint", N_("Black point"), - N_("Black point"), - pentaxId, makerTags, undefined, -1, printValue), - TagInfo(0x0201, "WhitePoint", N_("White point"), - N_("White point"), - pentaxId, makerTags, undefined, -1, printValue), - /* Some missing ! */ - TagInfo(0x0205, "ShotInfo", N_("ShotInfo"), - N_("ShotInfo"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0206, "AEInfo", N_("AEInfo"), - N_("AEInfo"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0207, "LensInfo", N_("LensInfo"), - N_("LensInfo"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0208, "FlashInfo", N_("FlashInfo"), - N_("FlashInfo"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0209, "AEMeteringSegments", N_("AEMeteringSegments"), - N_("AEMeteringSegments"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x020a, "FlashADump", N_("FlashADump"), - N_("FlashADump"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x020b, "FlashBDump", N_("FlashBDump"), - N_("FlashBDump"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - /* Some missing ! */ - TagInfo(0x020d, "WB_RGGBLevelsDaylight", N_("WB_RGGBLevelsDaylight"), - N_("WB_RGGBLevelsDaylight"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x020e, "WB_RGGBLevelsShade", N_("WB_RGGBLevelsShade"), - N_("WB_RGGBLevelsShade"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x020f, "WB_RGGBLevelsCloudy", N_("WB_RGGBLevelsCloudy"), - N_("WB_RGGBLevelsCloudy"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0210, "WB_RGGBLevelsTungsten", N_("WB_RGGBLevelsTungsten"), - N_("WB_RGGBLevelsTungsten"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0211, "WB_RGGBLevelsFluorescentD", N_("WB_RGGBLevelsFluorescentD"), - N_("WB_RGGBLevelsFluorescentD"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0212, "WB_RGGBLevelsFluorescentN", N_("WB_RGGBLevelsFluorescentN"), - N_("WB_RGGBLevelsFluorescentN"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0213, "WB_RGGBLevelsFluorescentW", N_("WB_RGGBLevelsFluorescentW"), - N_("WB_RGGBLevelsFluorescentW"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0214, "WB_RGGBLevelsFlash", N_("WB_RGGBLevelsFlash"), - N_("WB_RGGBLevelsFlash"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0215, "CameraInfo", N_("CameraInfo"), - N_("CameraInfo"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0216, "BatteryInfo", N_("BatteryInfo"), - N_("BatteryInfo"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x021f, "AFInfo", N_("AFInfo"), - N_("AFInfo"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0222, "ColorInfo", N_("ColorInfo"), - N_("ColorInfo"), - pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ - TagInfo(0x0229, "SerialNumber", N_("Serial Number"), - N_("Serial Number"), - pentaxId, makerTags, asciiString, -1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownPentaxMakerNoteTag)", "(UnknownPentaxMakerNoteTag)", - N_("Unknown PentaxMakerNote tag"), - pentaxId, makerTags, asciiString, -1, printValue) - }; - - const TagInfo* PentaxMakerNote::tagList() - { - return tagInfo_; - } - -}} // namespace Internal, Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/pentaxmn_int.hpp b/platform/win32/msvc/external/exiv2/src/pentaxmn_int.hpp deleted file mode 100644 index d552319cfa5..00000000000 --- a/platform/win32/msvc/external/exiv2/src/pentaxmn_int.hpp +++ /dev/null @@ -1,126 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file pentaxmn_int.hpp - @brief Pentax MakerNote implemented according to the specification - http://www.gvsoft.homedns.org/exif/makernote-pentax-type3.html and - based on ExifTool implementation and - Pentax Makernote list by Phil Harvey
- @version $Rev: 2681 $ - @author Michal Cihar - michal@cihar.com - @date 27-Sep-07 - */ -#ifndef PENTAXMN_INT_HPP_ -#define PENTAXMN_INT_HPP_ - -// ***************************************************************************** -// included header files -#include "tags.hpp" -#include "tags_int.hpp" -#include "types.hpp" - -// + standard includes -#include -#include -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - namespace Internal { - -// ***************************************************************************** -// class definitions - - //! MakerNote for Pentaxfilm cameras - class PentaxMakerNote { - public: - //! Return read-only list of built-in Pentaxfilm tags - static const TagInfo* tagList(); - - //! Print Pentax version - static std::ostream& printPentaxVersion(std::ostream& os, const Value& value, const ExifData*); - //! Print Pentax resolution - static std::ostream& printPentaxResolution(std::ostream& os, const Value& value, const ExifData*); - //! Print Pentax date - static std::ostream& printPentaxDate(std::ostream& os, const Value& value, const ExifData*); - //! Print Pentax time - static std::ostream& printPentaxTime(std::ostream& os, const Value& value, const ExifData*); - //! Print Pentax exposure - static std::ostream& printPentaxExposure(std::ostream& os, const Value& value, const ExifData*); - //! Print Pentax F value - static std::ostream& printPentaxFValue(std::ostream& os, const Value& value, const ExifData*); - //! Print Pentax focal length - static std::ostream& printPentaxFocalLength(std::ostream& os, const Value& value, const ExifData*); - //! Print Pentax compensation - static std::ostream& printPentaxCompensation(std::ostream& os, const Value& value, const ExifData*); - //! Print Pentax temperature - static std::ostream& printPentaxTemperature(std::ostream& os, const Value& value, const ExifData*); - //! Print Pentax flash compensation - static std::ostream& printPentaxFlashCompensation(std::ostream& os, const Value& value, const ExifData*); - //! Print Pentax bracketing - static std::ostream& printPentaxBracketing(std::ostream& os, const Value& value, const ExifData*); - - private: - //! Tag information - static const TagInfo tagInfo_[]; - }; // class PentaxMakerNote - - /*! - @brief Print function to translate Pentax "combi-values" to a description - by looking up a reference table. - */ - template - std::ostream& printCombiTag(std::ostream& os, const Value& value, const ExifData* metadata) - { - if ((value.count() != count && (value.count() < (count + ignoredcount) || value.count() > (count + ignoredcountmax))) || count > 4) { - return printValue(os, value, metadata); - } - unsigned long l = 0; - for (int c = 0; c < count; ++c) { - if (value.toLong(c) < 0 || value.toLong(c) > 255) { - return printValue(os, value, metadata); - } - l += (value.toLong(c) << ((count - c - 1) * 8)); - } - const TagDetails* td = find(array, l); - if (td) { - os << exvGettext(td->label_); - } - else { - os << exvGettext("Unknown") << " (0x" - << std::setw(2 * count) << std::setfill('0') - << std::hex << l << std::dec << ")"; - } - - return os; - } - -//! Shortcut for the printCombiTag template which requires typing the array name only once. -#define EXV_PRINT_COMBITAG(array, count, ignoredcount) printCombiTag -//! Shortcut for the printCombiTag template which requires typing the array name only once. -#define EXV_PRINT_COMBITAG_MULTI(array, count, ignoredcount, ignoredcountmax) printCombiTag - -}} // namespace Internal, Exiv2 - -#endif // #ifndef PENTAXMN_INT_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/pgfimage.cpp b/platform/win32/msvc/external/exiv2/src/pgfimage.cpp deleted file mode 100644 index a75c1d28c9c..00000000000 --- a/platform/win32/msvc/external/exiv2/src/pgfimage.cpp +++ /dev/null @@ -1,332 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: pgfimage.cpp - Version: $Rev: 2681 $ - Author(s): Gilles Caulier (cgilles) - History: 16-Jun-09, gc: submitted - Credits: See header file - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: pgfimage.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** - -//#define DEBUG 1 - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#include "pgfimage.hpp" -#include "image.hpp" -#include "pngimage.hpp" -#include "basicio.hpp" -#include "error.hpp" -#include "futils.hpp" - -// + standard includes -#include // for EOF -#include -#include -#include -#include - -// Signature from front of PGF file -const unsigned char pgfSignature[3] = { 0x50, 0x47, 0x46 }; - -const unsigned char pgfBlank[] = { 0x50,0x47,0x46,0x36,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0x00,0x00,0x18,0x03,0x03,0x00,0x00,0x00,0x14,0x00,0x67,0x08,0x20,0x00,0xc0,0x01, - 0x00,0x00,0x37,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x37,0x00, - 0x00,0x78,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x37,0x00,0x00,0x78,0x00,0x00, - 0x00,0x00,0x01,0x00,0x00,0x00,0x37,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x01,0x00, - 0x00,0x00,0x37,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x37,0x00, - 0x00,0x78,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00 - }; - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - PgfImage::PgfImage(BasicIo::AutoPtr io, bool create) - : Image(ImageType::pgf, mdExif | mdIptc| mdXmp | mdComment, io) - { - if (create) - { - if (io_->open() == 0) - { -#ifdef DEBUG - std::cerr << "Exiv2::PgfImage:: Creating PGF image to memory\n"; -#endif - IoCloser closer(*io_); - if (io_->write(pgfBlank, sizeof(pgfBlank)) != sizeof(pgfBlank)) - { -#ifdef DEBUG - std::cerr << "Exiv2::PgfImage:: Failed to create PGF image on memory\n"; -#endif - } - } - } - } // PgfImage::PgfImage - - void PgfImage::readMetadata() - { -#ifdef DEBUG - std::cerr << "Exiv2::PgfImage::readMetadata: Reading PGF file " << io_->path() << "\n"; -#endif - if (io_->open() != 0) - { - throw Error(9, io_->path(), strError()); - } - IoCloser closer(*io_); - // Ensure that this is the correct image type - if (!isPgfType(*io_, true)) - { - if (io_->error() || io_->eof()) throw Error(14); - throw Error(3, "PGF"); - } - clearMetadata(); - - readPgfMagicNumber(*io_); - - uint32_t headerSize = readPgfHeaderSize(*io_); - - readPgfHeaderStructure(*io_, &pixelWidth_, &pixelHeight_); - - // And now, the most interresting, the user data byte array where metadata are stored as small image. - - long size = 8 + headerSize - io_->tell(); - -#ifdef DEBUG - std::cout << "Exiv2::PgfImage::readMetadata: Found Image data (" << size << " bytes)\n"; -#endif - - if (size < 0) throw Error(20); - if (size == 0) return; - - DataBuf imgData(size); - std::memset(imgData.pData_, 0x0, imgData.size_); - long bufRead = io_->read(imgData.pData_, imgData.size_); - if (io_->error()) throw Error(14); - if (bufRead != imgData.size_) throw Error(20); - - Image::AutoPtr image = Exiv2::ImageFactory::open(imgData.pData_, imgData.size_); - image->readMetadata(); - exifData() = image->exifData(); - iptcData() = image->iptcData(); - xmpData() = image->xmpData(); - - } // PgfImage::readMetadata - - void PgfImage::writeMetadata() - { - if (io_->open() != 0) - { - throw Error(9, io_->path(), strError()); - } - IoCloser closer(*io_); - BasicIo::AutoPtr tempIo(io_->temporary()); // may throw - assert (tempIo.get() != 0); - - doWriteMetadata(*tempIo); // may throw - io_->close(); - io_->transfer(*tempIo); // may throw - - } // PgfImage::writeMetadata - - void PgfImage::doWriteMetadata(BasicIo& outIo) - { - if (!io_->isopen()) throw Error(20); - if (!outIo.isopen()) throw Error(21); - -#ifdef DEBUG - std::cout << "Exiv2::PgfImage::doWriteMetadata: Writing PGF file " << io_->path() << "\n"; - std::cout << "Exiv2::PgfImage::doWriteMetadata: tmp file created " << outIo.path() << "\n"; -#endif - - // Ensure that this is the correct image type - if (!isPgfType(*io_, true)) - { - if (io_->error() || io_->eof()) throw Error(20); - throw Error(22); - } - - // Ensure PGF version. - byte mnb = readPgfMagicNumber(*io_); - - readPgfHeaderSize(*io_); - - int w, h; - DataBuf header = readPgfHeaderStructure(*io_, &w, &h); - - Image::AutoPtr img = ImageFactory::create(ImageType::png); - - img->setExifData(exifData_); - img->setIptcData(iptcData_); - img->setXmpData(xmpData_); - img->writeMetadata(); - int imgSize = img->io().size(); - DataBuf imgBuf = img->io().read(imgSize); - -#ifdef DEBUG - std::cout << "Exiv2::PgfImage::doWriteMetadata: Creating image to host metadata (" << imgSize << " bytes)\n"; -#endif - - //--------------------------------------------------------------- - - // Write PGF Signature. - if (outIo.write(pgfSignature, 3) != 3) throw Error(21); - - // Write Magic number. - if (outIo.putb(mnb) == EOF) throw Error(21); - - // Write new Header size. - uint32_t newHeaderSize = header.size_ + imgSize; - DataBuf buffer(4); - memcpy (buffer.pData_, &newHeaderSize, 4); - if (outIo.write(buffer.pData_, 4) != 4) throw Error(21); - -#ifdef DEBUG - std::cout << "Exiv2::PgfImage: new PGF header size : " << newHeaderSize << " bytes\n"; - - printf("%x\n", buffer.pData_[0]); - printf("%x\n", buffer.pData_[1]); - printf("%x\n", buffer.pData_[2]); - printf("%x\n", buffer.pData_[3]); -#endif - - // Write Header data. - if (outIo.write(header.pData_, header.size_) != header.size_) throw Error(21); - - // Write new metadata byte array. - if (outIo.write(imgBuf.pData_, imgBuf.size_) != imgBuf.size_) throw Error(21); - - // Copy the rest of PGF image data. - - DataBuf buf(4096); - long readSize = 0; - while ((readSize=io_->read(buf.pData_, buf.size_))) - { - if (outIo.write(buf.pData_, readSize) != readSize) throw Error(21); - } - if (outIo.error()) throw Error(21); - - } // PgfImage::doWriteMetadata - - byte PgfImage::readPgfMagicNumber(BasicIo& iIo) - { - byte b = iIo.getb(); - if (iIo.error()) throw Error(14); - - if (b < 0x36) // 0x36 = '6'. - { - // Not right Magick version. -#ifdef DEBUG - std::cout << "Exiv2::PgfImage::readMetadata: wrong Magick number\n"; -#endif - } - - return b; - } // PgfImage::readPgfMagicNumber - - uint32_t PgfImage::readPgfHeaderSize(BasicIo& iIo) - { - DataBuf buffer(4); - long bufRead = iIo.read(buffer.pData_, buffer.size_); - if (iIo.error()) throw Error(14); - if (bufRead != buffer.size_) throw Error(20); - - uint32_t headerSize = 0; - memcpy (&headerSize, buffer.pData_, 4); // TODO : check endianness. - if (headerSize <= 0 ) throw Error(22); - -#ifdef DEBUG - std::cout << "Exiv2::PgfImage: PGF header size : " << headerSize << " bytes\n"; -#endif - - return headerSize; - } // PgfImage::readPgfHeaderSize - - DataBuf PgfImage::readPgfHeaderStructure(BasicIo& iIo, int* width, int* height) - { - DataBuf header(16); - long bufRead = iIo.read(header.pData_, header.size_); - if (iIo.error()) throw Error(14); - if (bufRead != header.size_) throw Error(20); - - memcpy(width, &header.pData_[0], 4); // TODO : check endianness. - memcpy(height, &header.pData_[4], 4); // TODO : check endianness. - - /* NOTE: properties not yet used - byte nLevels = buffer.pData_[8]; - byte quality = buffer.pData_[9]; - byte bpp = buffer.pData_[10]; - byte channels = buffer.pData_[11]; - */ - byte mode = header.pData_[12]; - - if (mode == 2) // Indexed color image. We pass color table (256 * 3 bytes). - { - header.alloc(16 + 256*3); - - bufRead = iIo.read(&header.pData_[16], 256*3); - if (iIo.error()) throw Error(14); - if (bufRead != 256*3) throw Error(20); - } - - return header; - } // PgfImage::readPgfHeaderStructure - - // ************************************************************************* - // free functions - Image::AutoPtr newPgfInstance(BasicIo::AutoPtr io, bool create) - { - Image::AutoPtr image(new PgfImage(io, create)); - if (!image->good()) - { - image.reset(); - } - return image; - } - - bool isPgfType(BasicIo& iIo, bool advance) - { - const int32_t len = 3; - byte buf[len]; - iIo.read(buf, len); - if (iIo.error() || iIo.eof()) - { - return false; - } - int rc = memcmp(buf, pgfSignature, 3); - if (!advance || rc != 0) - { - iIo.seek(-len, BasicIo::cur); - } - - return rc == 0; - } -} // namespace Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/pgfimage.hpp b/platform/win32/msvc/external/exiv2/src/pgfimage.hpp deleted file mode 100644 index d64efb77a39..00000000000 --- a/platform/win32/msvc/external/exiv2/src/pgfimage.hpp +++ /dev/null @@ -1,137 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file pgfimage.hpp - @brief PGF image, implemented using the following references: - PGF specification from libpgf web site
- @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @author Gilles Caulier (cgilles) - caulier dot gilles at gmail dot com - @date 16-Jun-09, gc: submitted - */ -#ifndef PGFIMAGE_HPP_ -#define PGFIMAGE_HPP_ - -// ***************************************************************************** -// included header files -#include "image.hpp" -#include "basicio.hpp" -#include "types.hpp" - -// + standard includes -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 -{ - -// ***************************************************************************** -// class definitions - - // Add PGF to the supported image formats - namespace ImageType - { - const int pgf = 17; //!< PGF image type (see class PgfImage) - } - - /*! - @brief Class to access PGF images. Exif and IPTC metadata are supported - directly. - */ - class EXIV2API PgfImage : public Image { - public: - //! @name Creators - //@{ - /*! - @brief Constructor that can either open an existing PGF image or create - a new image from scratch. If a new image is to be created, any - existing data is overwritten. Since the constructor can not return - a result, callers should check the good() method after object - construction to determine success or failure. - @param io An auto-pointer that owns a BasicIo instance used for - reading and writing image metadata. \b Important: The constructor - takes ownership of the passed in BasicIo instance through the - auto-pointer. Callers should not continue to use the BasicIo - instance after it is passed to this method. Use the Image::io() - method to get a temporary reference. - @param create Specifies if an existing image should be read (false) - or if a new file should be created (true). - */ - PgfImage(BasicIo::AutoPtr io, bool create); - //@} - - //! @name Manipulators - //@{ - void readMetadata(); - void writeMetadata(); - //@} - - //! @name Accessors - //@{ - std::string mimeType() const { return "image/pgf"; } - //@} - - private: - //! @name NOT implemented - //@{ - //! Copy constructor - PgfImage(const PgfImage& rhs); - //! Assignment operator - PgfImage& operator=(const PgfImage& rhs); - /*! - @brief Provides the main implementation of writeMetadata() by - writing all buffered metadata to the provided BasicIo. - @param oIo BasicIo instance to write to (a temporary location). - - @return 4 if opening or writing to the associated BasicIo fails - */ - EXV_DLLLOCAL void doWriteMetadata(BasicIo& oIo); - //! Read Magick number. Only version >= 6 is supported. - byte readPgfMagicNumber(BasicIo& iIo); - //! Read PGF Header size encoded in 32 bits integer. - uint32_t readPgfHeaderSize(BasicIo& iIo); - //! Read header structure. - DataBuf readPgfHeaderStructure(BasicIo& iIo, int* width, int* height); - //@} - - }; // class PgfImage - -// ***************************************************************************** -// template, inline and free functions - - // These could be static private functions on Image subclasses but then - // ImageFactory needs to be made a friend. - /*! - @brief Create a new PgfImage instance and return an auto-pointer to it. - Caller owns the returned object and the auto-pointer ensures that - it will be deleted. - */ - EXIV2API Image::AutoPtr newPgfInstance(BasicIo::AutoPtr io, bool create); - - //! Check if the file iIo is a PGF image. - EXIV2API bool isPgfType(BasicIo& iIo, bool advance); - -} // namespace Exiv2 - -#endif // #ifndef PGFIMAGE_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/pngchunk.cpp b/platform/win32/msvc/external/exiv2/src/pngchunk.cpp deleted file mode 100644 index e81b1779e3c..00000000000 --- a/platform/win32/msvc/external/exiv2/src/pngchunk.cpp +++ /dev/null @@ -1,692 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: pngchunk.cpp - Version: $Rev: 2681 $ - Author(s): Gilles Caulier (cgilles) - History: 12-Jun-06, gc: submitted - Credits: See header file - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: pngchunk.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -//#define DEBUG 1 -#ifdef EXV_HAVE_LIBZ - -extern "C" { -#include // To uncompress or compress text chunk -} - -#include "pngchunk_int.hpp" -#include "tiffimage.hpp" -#include "jpgimage.hpp" -#include "exif.hpp" -#include "iptc.hpp" -#include "image.hpp" -#include "error.hpp" - -// + standard includes -#include -#include -#include -#include -#include -#include -#include - -/* - -URLs to find informations about PNG chunks : - -tEXt and zTXt chunks : http://www.vias.org/pngguide/chapter11_04.html -iTXt chunk : http://www.vias.org/pngguide/chapter11_05.html -PNG tags : http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/PNG.html#TextualData - -*/ - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - namespace Internal { - - void PngChunk::decodeIHDRChunk(const DataBuf& data, - int* outWidth, - int* outHeight) - { - // Extract image width and height from IHDR chunk. - - *outWidth = getLong((const byte*)data.pData_, bigEndian); - *outHeight = getLong((const byte*)data.pData_ + 4, bigEndian); - - } // PngChunk::decodeIHDRChunk - - void PngChunk::decodeTXTChunk(Image* pImage, - const DataBuf& data, - TxtChunkType type) - { - DataBuf key = keyTXTChunk(data); - -#ifdef DEBUG - std::cout << "Exiv2::PngChunk::decodeTXTChunk: TXT chunk key: " - << std::string((const char*)key.pData_, key.size_) << "\n"; -#endif - DataBuf arr = parseTXTChunk(data, key.size_, type); - -#ifdef DEBUG - std::cout << "Exiv2::PngChunk::decodeTXTChunk: TXT chunk data: " - << std::string((const char*)arr.pData_, arr.size_) << "\n"; -#endif - parseChunkContent(pImage, key.pData_, key.size_, arr); - - } // PngChunk::decodeTXTChunk - - DataBuf PngChunk::keyTXTChunk(const DataBuf& data, bool stripHeader) - { - // From a tEXt, zTXt, or iTXt chunk, - // we get the key, it's a null terminated string at the chunk start - if (data.size_ <= (stripHeader ? 8 : 0)) throw Error(14); - const byte *key = data.pData_ + (stripHeader ? 8 : 0); - - // Find null string at end of key. - int keysize=0; - for ( ; key[keysize] != 0 ; keysize++) - { - // look if keysize is valid. - if (keysize >= data.size_) - throw Error(14); - } - - return DataBuf(key, keysize); - - } // PngChunk::keyTXTChunk - - DataBuf PngChunk::parseTXTChunk(const DataBuf& data, - int keysize, - TxtChunkType type) - { - DataBuf arr; - - if(type == zTXt_Chunk) - { - // Extract a deflate compressed Latin-1 text chunk - - // we get the compression method after the key - const byte* compressionMethod = data.pData_ + keysize + 1; - if ( *compressionMethod != 0x00 ) - { - // then it isn't zlib compressed and we are sunk -#ifdef DEBUG - std::cerr << "Exiv2::PngChunk::parseTXTChunk: Non-standard zTXt compression method.\n"; -#endif - throw Error(14); - } - - // compressed string after the compression technique spec - const byte* compressedText = data.pData_ + keysize + 2; - unsigned int compressedTextSize = data.size_ - keysize - 2; - - zlibUncompress(compressedText, compressedTextSize, arr); - } - else if(type == tEXt_Chunk) - { - // Extract a non-compressed Latin-1 text chunk - - // the text comes after the key, but isn't null terminated - const byte* text = data.pData_ + keysize + 1; - long textsize = data.size_ - keysize - 1; - - arr = DataBuf(text, textsize); - } - else if(type == iTXt_Chunk) - { - // Extract a deflate compressed or uncompressed UTF-8 text chunk - - // we get the compression flag after the key - const byte* compressionFlag = data.pData_ + keysize + 1; - // we get the compression method after the compression flag - const byte* compressionMethod = data.pData_ + keysize + 2; - // language description string after the compression technique spec - std::string languageText((const char*)(data.pData_ + keysize + 3)); - unsigned int languageTextSize = static_cast(languageText.size()); - // translated keyword string after the language description - std::string translatedKeyText((const char*)(data.pData_ + keysize + 3 + languageTextSize +1)); - unsigned int translatedKeyTextSize = static_cast(translatedKeyText.size()); - - if ( compressionFlag[0] == 0x00 ) - { - // then it's an uncompressed iTXt chunk -#ifdef DEBUG - std::cout << "Exiv2::PngChunk::parseTXTChunk: We found an uncompressed iTXt field\n"; -#endif - - // the text comes after the translated keyword, but isn't null terminated - const byte* text = data.pData_ + keysize + 3 + languageTextSize + 1 + translatedKeyTextSize + 1; - long textsize = data.size_ - (keysize + 3 + languageTextSize + 1 + translatedKeyTextSize + 1); - - arr.alloc(textsize); - arr = DataBuf(text, textsize); - } - else if ( compressionFlag[0] == 0x01 && compressionMethod[0] == 0x00 ) - { - // then it's a zlib compressed iTXt chunk -#ifdef DEBUG - std::cout << "Exiv2::PngChunk::parseTXTChunk: We found a zlib compressed iTXt field\n"; -#endif - - // the compressed text comes after the translated keyword, but isn't null terminated - const byte* compressedText = data.pData_ + keysize + 3 + languageTextSize + 1 + translatedKeyTextSize + 1; - long compressedTextSize = data.size_ - (keysize + 3 + languageTextSize + 1 + translatedKeyTextSize + 1); - - zlibUncompress(compressedText, compressedTextSize, arr); - } - else - { - // then it isn't zlib compressed and we are sunk -#ifdef DEBUG - std::cerr << "Exiv2::PngChunk::parseTXTChunk: Non-standard iTXt compression method.\n"; -#endif - throw Error(14); - } - } - else - { -#ifdef DEBUG - std::cerr << "Exiv2::PngChunk::parseTXTChunk: We found a field, not expected though\n"; -#endif - throw Error(14); - } - - return arr; - - } // PngChunk::parsePngChunk - - void PngChunk::parseChunkContent( Image* pImage, - const byte* key, - long keySize, - const DataBuf arr) - { - // We look if an ImageMagick EXIF raw profile exist. - - if ( keySize >= 21 - && ( memcmp("Raw profile type exif", key, 21) == 0 - || memcmp("Raw profile type APP1", key, 21) == 0) - && pImage->exifData().empty()) - { - DataBuf exifData = readRawProfile(arr); - long length = exifData.size_; - - if (length > 0) - { - // Find the position of Exif header in bytes array. - - const byte exifHeader[] = { 0x45, 0x78, 0x69, 0x66, 0x00, 0x00 }; - long pos = -1; - - for (long i=0 ; i < length-(long)sizeof(exifHeader) ; i++) - { - if (memcmp(exifHeader, &exifData.pData_[i], sizeof(exifHeader)) == 0) - { - pos = i; - break; - } - } - - // If found it, store only these data at from this place. - - if (pos !=-1) - { -#ifdef DEBUG - std::cout << "Exiv2::PngChunk::parseChunkContent: Exif header found at position " << pos << "\n"; -#endif - pos = pos + sizeof(exifHeader); - ByteOrder bo = TiffParser::decode(pImage->exifData(), - pImage->iptcData(), - pImage->xmpData(), - exifData.pData_ + pos, - length - pos); - pImage->setByteOrder(bo); - } - else - { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to decode Exif metadata.\n"; -#endif - pImage->exifData().clear(); - } - } - } - - // We look if an ImageMagick IPTC raw profile exist. - - if ( keySize >= 21 - && memcmp("Raw profile type iptc", key, 21) == 0 - && pImage->iptcData().empty()) { - DataBuf psData = readRawProfile(arr); - if (psData.size_ > 0) { - Blob iptcBlob; - const byte *record = 0; - uint32_t sizeIptc = 0; - uint32_t sizeHdr = 0; - - const byte* pEnd = psData.pData_ + psData.size_; - const byte* pCur = psData.pData_; - while ( pCur < pEnd - && 0 == Photoshop::locateIptcIrb(pCur, - static_cast(pEnd - pCur), - &record, - &sizeHdr, - &sizeIptc)) { - if (sizeIptc) { -#ifdef DEBUG - std::cerr << "Found IPTC IRB, size = " << sizeIptc << "\n"; -#endif - append(iptcBlob, record + sizeHdr, sizeIptc); - } - pCur = record + sizeHdr + sizeIptc; - pCur += (sizeIptc & 1); - } - if ( iptcBlob.size() > 0 - && IptcParser::decode(pImage->iptcData(), - &iptcBlob[0], - static_cast(iptcBlob.size()))) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to decode IPTC metadata.\n"; -#endif - pImage->clearIptcData(); - } - // If there is no IRB, try to decode the complete chunk data - if ( iptcBlob.empty() - && IptcParser::decode(pImage->iptcData(), - psData.pData_, - psData.size_)) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to decode IPTC metadata.\n"; -#endif - pImage->clearIptcData(); - } - } // if (psData.size_ > 0) - } - - // We look if an ImageMagick XMP raw profile exist. - - if ( keySize >= 20 - && memcmp("Raw profile type xmp", key, 20) == 0 - && pImage->xmpData().empty()) - { - DataBuf xmpBuf = readRawProfile(arr); - long length = xmpBuf.size_; - - if (length > 0) - { - std::string& xmpPacket = pImage->xmpPacket(); - xmpPacket.assign(reinterpret_cast(xmpBuf.pData_), length); - std::string::size_type idx = xmpPacket.find_first_of('<'); - if (idx != std::string::npos && idx > 0) - { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Removing " << idx - << " characters from the beginning of the XMP packet\n"; -#endif - xmpPacket = xmpPacket.substr(idx); - } - if (XmpParser::decode(pImage->xmpData(), xmpPacket)) - { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to decode XMP metadata.\n"; -#endif - } - } - } - - // We look if an Adobe XMP string exist. - - if ( keySize >= 17 - && memcmp("XML:com.adobe.xmp", key, 17) == 0 - && pImage->xmpData().empty()) - { - if (arr.size_ > 0) - { - std::string& xmpPacket = pImage->xmpPacket(); - xmpPacket.assign(reinterpret_cast(arr.pData_), arr.size_); - std::string::size_type idx = xmpPacket.find_first_of('<'); - if (idx != std::string::npos && idx > 0) - { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Removing " << idx << " characters " - << "from the beginning of the XMP packet\n"; -#endif - xmpPacket = xmpPacket.substr(idx); - } - if (XmpParser::decode(pImage->xmpData(), xmpPacket)) - { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to decode XMP metadata.\n"; -#endif - } - } - } - - // We look if a comments string exist. Note than we use only 'Description' keyword which - // is dedicaced to store long comments. 'Comment' keyword is ignored. - - if ( keySize >= 11 - && memcmp("Description", key, 11) == 0 - && pImage->comment().empty()) - { - pImage->setComment(std::string(reinterpret_cast(arr.pData_), arr.size_)); - } - - } // PngChunk::parseChunkContent - - std::string PngChunk::makeMetadataChunk(const std::string& metadata, - MetadataId type) - { - std::string chunk; - std::string rawProfile; - - switch (type) { - case mdComment: - chunk = makeUtf8TxtChunk("Description", metadata, true); - break; - case mdExif: - rawProfile = writeRawProfile(metadata, "exif"); - chunk = makeAsciiTxtChunk("Raw profile type exif", rawProfile, true); - break; - case mdIptc: - rawProfile = writeRawProfile(metadata, "iptc"); - chunk = makeAsciiTxtChunk("Raw profile type iptc", rawProfile, true); - break; - case mdXmp: - chunk = makeUtf8TxtChunk("XML:com.adobe.xmp", metadata, false); - break; - case mdNone: - assert(false); - } - - return chunk; - - } // PngChunk::makeMetadataChunk - - void PngChunk::zlibUncompress(const byte* compressedText, - unsigned int compressedTextSize, - DataBuf& arr) - { - uLongf uncompressedLen = compressedTextSize * 2; // just a starting point - int zlibResult; - int dos = 0; - - do { - arr.alloc(uncompressedLen); - zlibResult = uncompress((Bytef*)arr.pData_, - &uncompressedLen, - compressedText, - compressedTextSize); - if (zlibResult == Z_OK) { - assert((uLongf)arr.size_ >= uncompressedLen); - arr.size_ = uncompressedLen; - } - else if (zlibResult == Z_BUF_ERROR) { - // the uncompressedArray needs to be larger - uncompressedLen *= 2; - // DoS protection. can't be bigger than 64k - if (uncompressedLen > 131072) { - if (++dos > 1) break; - uncompressedLen = 131072; - } - } - else { - // something bad happened - throw Error(14); - } - } - while (zlibResult == Z_BUF_ERROR); - - if (zlibResult != Z_OK) { - throw Error(14); - } - } // PngChunk::zlibUncompress - - std::string PngChunk::zlibCompress(const std::string& text) - { - uLongf compressedLen = static_cast(text.size() * 2); // just a starting point - int zlibResult; - - DataBuf arr; - do { - arr.alloc(compressedLen); - zlibResult = compress2((Bytef*)arr.pData_, &compressedLen, - (const Bytef*)text.data(), static_cast(text.size()), - Z_BEST_COMPRESSION); - - switch (zlibResult) { - case Z_OK: - assert((uLongf)arr.size_ >= compressedLen); - arr.size_ = compressedLen; - break; - case Z_BUF_ERROR: - // The compressed array needs to be larger -#ifdef DEBUG - std::cout << "Exiv2::PngChunk::parsePngChunk: doubling size for compression.\n"; -#endif - compressedLen *= 2; - // DoS protection. Cap max compressed size - if ( compressedLen > 131072 ) throw Error(14); - break; - default: - // Something bad happened - throw Error(14); - } - } while (zlibResult == Z_BUF_ERROR); - - return std::string((const char*)arr.pData_, arr.size_); - - } // PngChunk::zlibCompress - - std::string PngChunk::makeAsciiTxtChunk(const std::string& keyword, - const std::string& text, - bool compress) - { - // Chunk structure: length (4 bytes) + chunk type + chunk data + CRC (4 bytes) - // Length is the size of the chunk data - // CRC is calculated on chunk type + chunk data - - // Compressed text chunk using zlib. - // Chunk data format : keyword + 0x00 + compression method (0x00) + compressed text - - // Not Compressed text chunk. - // Chunk data format : keyword + 0x00 + text - - // Build chunk data, determine chunk type - std::string chunkData = keyword + '\0'; - std::string chunkType; - if (compress) { - chunkData += '\0' + zlibCompress(text); - chunkType = "zTXt"; - } - else { - chunkData += text; - chunkType = "tEXt"; - } - // Determine length of the chunk data - byte length[4]; - ul2Data(length, static_cast(chunkData.size()), bigEndian); - // Calculate CRC on chunk type and chunk data - std::string crcData = chunkType + chunkData; - uLong tmp = crc32(0L, Z_NULL, 0); - tmp = crc32(tmp, (const Bytef*)crcData.data(), static_cast(crcData.size())); - byte crc[4]; - ul2Data(crc, tmp, bigEndian); - // Assemble the chunk - return std::string((const char*)length, 4) + chunkType + chunkData + std::string((const char*)crc, 4); - - } // PngChunk::makeAsciiTxtChunk - - std::string PngChunk::makeUtf8TxtChunk(const std::string& keyword, - const std::string& text, - bool compress) - { - // Chunk structure: length (4 bytes) + chunk type + chunk data + CRC (4 bytes) - // Length is the size of the chunk data - // CRC is calculated on chunk type + chunk data - - // Chunk data format : keyword + 0x00 + compression flag (0x00: uncompressed - 0x01: compressed) - // + compression method (0x00: zlib format) + language tag (null) + 0x00 - // + translated keyword (null) + 0x00 + text (compressed or not) - - // Build chunk data, determine chunk type - std::string chunkData = keyword; - if (compress) { - static const char flags[] = { 0x00, 0x01, 0x00, 0x00, 0x00 }; - chunkData += std::string(flags, 5) + zlibCompress(text); - } - else { - static const char flags[] = { 0x00, 0x00, 0x00, 0x00, 0x00 }; - chunkData += std::string(flags, 5) + text; - } - // Determine length of the chunk data - byte length[4]; - ul2Data(length, static_cast(chunkData.size()), bigEndian); - // Calculate CRC on chunk type and chunk data - std::string chunkType = "iTXt"; - std::string crcData = chunkType + chunkData; - uLong tmp = crc32(0L, Z_NULL, 0); - tmp = crc32(tmp, (const Bytef*)crcData.data(), static_cast(crcData.size())); - byte crc[4]; - ul2Data(crc, tmp, bigEndian); - // Assemble the chunk - return std::string((const char*)length, 4) + chunkType + chunkData + std::string((const char*)crc, 4); - - } // PngChunk::makeUtf8TxtChunk - - DataBuf PngChunk::readRawProfile(const DataBuf& text) - { - DataBuf info; - register long i; - register unsigned char *dp; - const char *sp; - unsigned int nibbles; - long length; - unsigned char unhex[103]={0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,1, 2,3,4,5,6,7,8,9,0,0, - 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,10,11,12, - 13,14,15}; - if (text.size_ == 0) { - return DataBuf(); - } - - sp = (char*)text.pData_+1; - - // Look for newline - - while (*sp != '\n') - sp++; - - // Look for length - - while (*sp == '\0' || *sp == ' ' || *sp == '\n') - sp++; - - length = (long) atol(sp); - - while (*sp != ' ' && *sp != '\n') - sp++; - - // Allocate space - - if (length == 0) - { -#ifdef DEBUG - std::cerr << "Exiv2::PngChunk::readRawProfile: Unable To Copy Raw Profile: invalid profile length\n"; -#endif - return DataBuf(); - } - - info.alloc(length); - - if (info.size_ != length) - { -#ifdef DEBUG - std::cerr << "Exiv2::PngChunk::readRawProfile: Unable To Copy Raw Profile: cannot allocate memory\n"; -#endif - return DataBuf(); - } - - // Copy profile, skipping white space and column 1 "=" signs - - dp = (unsigned char*)info.pData_; - nibbles = length * 2; - - for (i = 0; i < (long) nibbles; i++) - { - while (*sp < '0' || (*sp > '9' && *sp < 'a') || *sp > 'f') - { - if (*sp == '\0') - { -#ifdef DEBUG - std::cerr << "Exiv2::PngChunk::readRawProfile: Unable To Copy Raw Profile: ran out of data\n"; -#endif - return DataBuf(); - } - - sp++; - } - - if (i%2 == 0) - *dp = (unsigned char) (16*unhex[(int) *sp++]); - else - (*dp++) += unhex[(int) *sp++]; - } - - return info; - - } // PngChunk::readRawProfile - - std::string PngChunk::writeRawProfile(const std::string& profileData, - const char* profileType) - { - static byte hex[16] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; - - std::ostringstream oss; - oss << '\n' << profileType << '\n' << std::setw(8) << profileData.size(); - const char* sp = profileData.data(); - for (std::string::size_type i = 0; i < profileData.size(); ++i) { - if (i % 36 == 0) oss << '\n'; - oss << hex[((*sp >> 4) & 0x0f)]; - oss << hex[((*sp++) & 0x0f)]; - } - oss << '\n'; - return oss.str(); - - } // PngChunk::writeRawProfile - -}} // namespace Internal, Exiv2 -#endif // ifdef EXV_HAVE_LIBZ diff --git a/platform/win32/msvc/external/exiv2/src/pngchunk_int.hpp b/platform/win32/msvc/external/exiv2/src/pngchunk_int.hpp deleted file mode 100644 index 62365d466d3..00000000000 --- a/platform/win32/msvc/external/exiv2/src/pngchunk_int.hpp +++ /dev/null @@ -1,196 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file pngchunk_int.hpp - @brief Class PngChunk to parse PNG chunk data implemented using the following references:
- PNG iTXt chunk structure from PNG definitive guide,
- PNG tTXt and zTXt chunks structures from PNG definitive guide,
- PNG tags list by Phil Harvey
- Email communication with caulier dot gilles at gmail dot com
- @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @author Gilles Caulier (cgilles) - caulier dot gilles at gmail dot com - @date 12-Jun-06, gc: submitted - */ -#ifndef PNGCHUNK_INT_HPP_ -#define PNGCHUNK_INT_HPP_ - -// ***************************************************************************** -// included header files -#include "types.hpp" - -// + standard includes -#include -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class declarations - class Image; - - namespace Internal { - -// ***************************************************************************** -// class definitions - - /*! - @brief Stateless parser class for data in PNG chunk format. Images use this - class to decode and encode PNG-based data. - */ - class PngChunk { - public: - /*! - @brief Text Chunk types. - */ - enum TxtChunkType { - tEXt_Chunk = 0, - zTXt_Chunk = 1, - iTXt_Chunk = 2 - }; - - public: - /*! - @brief Decode PNG IHDR chunk data from a data buffer - \em data and return image size to \em outWidth and \em outHeight. - - @param data PNG Chunk data buffer. - @param outWidth Integer pointer to be set to the width of the image. - @param outHeight Integer pointer to be set to the height of the image. - */ - static void decodeIHDRChunk(const DataBuf& data, - int* outWidth, - int* outHeight); - - /*! - @brief Decode PNG tEXt, zTXt, or iTXt chunk data from \em pImage passed by data buffer - \em data and extract Comment, Exif, Iptc, Xmp metadata accordingly. - - @param pImage Pointer to the image to hold the metadata - @param data PNG Chunk data buffer. - @param type PNG Chunk TXT type. - */ - static void decodeTXTChunk(Image* pImage, - const DataBuf& data, - TxtChunkType type); - - /*! - @brief Return PNG TXT chunk key as data buffer. - - @param data PNG Chunk data buffer. - @param stripHeader Set true if chunk data start with header bytes, else false (default). - */ - static DataBuf keyTXTChunk(const DataBuf& data, bool stripHeader=false); - - /*! - @brief Return a complete PNG chunk data compressed or not as buffer. - Data returned is formated accordingly with metadata \em type - to host passed by \em metadata. - - @param metadata metadata buffer. - @param type metadata type. - */ - static std::string makeMetadataChunk(const std::string& metadata, - MetadataId type); - - private: - /*! - @brief Parse PNG Text chunk to determine type and extract content. - Supported Chunk types are tTXt, zTXt, and iTXt. - */ - static DataBuf parseTXTChunk(const DataBuf& data, - int keysize, - TxtChunkType type); - - /*! - @brief Parse PNG chunk contents to extract metadata container and assign it to image. - Supported contents are: - Exif raw text profile generated by ImageMagick ==> Image Exif metadata. - Iptc raw text profile generated by ImageMagick ==> Image Iptc metadata. - Xmp raw text profile generated by ImageMagick ==> Image Xmp metadata. - Xmp packet generated by Adobe ==> Image Xmp metadata. - Description string ==> Image Comments. - */ - static void parseChunkContent( Image* pImage, - const byte* key, - long keySize, - const DataBuf arr); - - /*! - @brief Return a compressed (zTXt) or uncompressed (tEXt) PNG ASCII text chunk - (length + chunk type + chunk data + CRC) as a string. - - @param keyword Keyword for the PNG text chunk - @param text Text to be recorded in the PNG chunk. - @param compress Flag indicating whether to compress the PNG chunk data. - - @return String containing the PNG chunk - */ - static std::string makeAsciiTxtChunk(const std::string& keyword, - const std::string& text, - bool compress); - - /*! - @brief Return a compressed or uncompressed (iTXt) PNG international text chunk - (length + chunk type + chunk data + CRC) as a string. - - @param keyword Keyword for the PNG international text chunk - @param text Text to be recorded in the PNG chunk. - @param compress Flag indicating whether to compress the PNG chunk data. - */ - static std::string makeUtf8TxtChunk(const std::string& keyword, - const std::string& text, - bool compress); - - /*! - @brief Wrapper around zlib to uncompress a PNG chunk content. - */ - static void zlibUncompress(const byte* compressedText, - unsigned int compressedTextSize, - DataBuf& arr); - - /*! - @brief Wrapper around zlib to compress a PNG chunk content. - */ - static std::string zlibCompress(const std::string& text); - - /*! - @brief Decode from ImageMagick raw text profile which host encoded Exif/Iptc/Xmp metadata byte array. - */ - static DataBuf readRawProfile(const DataBuf& text); - - /*! - @brief Encode to ImageMagick raw text profile, which host encoded - Exif/IPTC/XMP metadata byte arrays. - */ - static std::string writeRawProfile(const std::string& profileData, - const char* profileType); - - }; // class PngChunk - -}} // namespace Internal, Exiv2 - -#endif // #ifndef PNGCHUNK_INT_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/pngimage.cpp b/platform/win32/msvc/external/exiv2/src/pngimage.cpp deleted file mode 100644 index dd7a8ef7824..00000000000 --- a/platform/win32/msvc/external/exiv2/src/pngimage.cpp +++ /dev/null @@ -1,410 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: pngimage.cpp - Version: $Rev: 2681 $ - Author(s): Gilles Caulier (cgilles) - History: 12-Jun-06, gc: submitted - Credits: See header file - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: pngimage.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** - -//#define DEBUG 1 - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#ifdef EXV_HAVE_LIBZ -#include "pngchunk_int.hpp" -#include "pngimage.hpp" -#include "jpgimage.hpp" -#include "image.hpp" -#include "basicio.hpp" -#include "error.hpp" -#include "futils.hpp" - -// + standard includes -#include -#include -#include -#include - -// Signature from front of PNG file -const unsigned char pngSignature[8] = { 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A }; - -const unsigned char pngBlank[] = { 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52, - 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x08,0x02,0x00,0x00,0x00,0x90,0x77,0x53, - 0xde,0x00,0x00,0x00,0x01,0x73,0x52,0x47,0x42,0x00,0xae,0xce,0x1c,0xe9,0x00,0x00, - 0x00,0x09,0x70,0x48,0x59,0x73,0x00,0x00,0x0b,0x13,0x00,0x00,0x0b,0x13,0x01,0x00, - 0x9a,0x9c,0x18,0x00,0x00,0x00,0x0c,0x49,0x44,0x41,0x54,0x08,0xd7,0x63,0xf8,0xff, - 0xff,0x3f,0x00,0x05,0xfe,0x02,0xfe,0xdc,0xcc,0x59,0xe7,0x00,0x00,0x00,0x00,0x49, - 0x45,0x4e,0x44,0xae,0x42,0x60,0x82 - }; - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - using namespace Internal; - - PngImage::PngImage(BasicIo::AutoPtr io, bool create) - : Image(ImageType::png, mdExif | mdIptc | mdXmp | mdComment, io) - { - if (create) - { - if (io_->open() == 0) - { -#ifdef DEBUG - std::cerr << "Exiv2::PngImage:: Creating PNG image to memory\n"; -#endif - IoCloser closer(*io_); - if (io_->write(pngBlank, sizeof(pngBlank)) != sizeof(pngBlank)) - { -#ifdef DEBUG - std::cerr << "Exiv2::PngImage:: Failed to create PNG image on memory\n"; -#endif - } - } - } - } // PngImage::PngImage - - std::string PngImage::mimeType() const - { - return "image/png"; - } - - void PngImage::readMetadata() - { -#ifdef DEBUG - std::cerr << "Exiv2::PngImage::readMetadata: Reading PNG file " << io_->path() << "\n"; -#endif - if (io_->open() != 0) - { - throw Error(9, io_->path(), strError()); - } - IoCloser closer(*io_); - // Ensure that this is the correct image type - if (!isPngType(*io_, true)) - { - if (io_->error() || io_->eof()) throw Error(14); - throw Error(3, "PNG"); - } - clearMetadata(); - - DataBuf cheaderBuf(8); // Chunk header size : 4 bytes (data size) + 4 bytes (chunk type). - - while(!io_->eof()) - { - // Read chunk header. - -#ifdef DEBUG - std::cout << "Exiv2::PngImage::readMetadata: Position: " << io_->tell() << "\n"; -#endif - std::memset(cheaderBuf.pData_, 0x0, cheaderBuf.size_); - long bufRead = io_->read(cheaderBuf.pData_, cheaderBuf.size_); - if (io_->error()) throw Error(14); - if (bufRead != cheaderBuf.size_) throw Error(20); - - // Decode chunk data length. - uint32_t dataOffset = Exiv2::getULong(cheaderBuf.pData_, Exiv2::bigEndian); - if (dataOffset > 0x7FFFFFFF) throw Exiv2::Error(14); - - // Perform a chunk triage for item that we need. - - if (!memcmp(cheaderBuf.pData_ + 4, "IEND", 4) || - !memcmp(cheaderBuf.pData_ + 4, "IHDR", 4) || - !memcmp(cheaderBuf.pData_ + 4, "tEXt", 4) || - !memcmp(cheaderBuf.pData_ + 4, "zTXt", 4) || - !memcmp(cheaderBuf.pData_ + 4, "iTXt", 4)) - { - // Extract chunk data. - - DataBuf cdataBuf(dataOffset); - bufRead = io_->read(cdataBuf.pData_, dataOffset); - if (io_->error()) throw Error(14); - if (bufRead != (long)dataOffset) throw Error(20); - - if (!memcmp(cheaderBuf.pData_ + 4, "IEND", 4)) - { - // Last chunk found: we stop parsing. -#ifdef DEBUG - std::cout << "Exiv2::PngImage::readMetadata: Found IEND chunk (length: " << dataOffset << ")\n"; -#endif - return; - } - else if (!memcmp(cheaderBuf.pData_ + 4, "IHDR", 4)) - { -#ifdef DEBUG - std::cout << "Exiv2::PngImage::readMetadata: Found IHDR chunk (length: " << dataOffset << ")\n"; -#endif - PngChunk::decodeIHDRChunk(cdataBuf, &pixelWidth_, &pixelHeight_); - } - else if (!memcmp(cheaderBuf.pData_ + 4, "tEXt", 4)) - { -#ifdef DEBUG - std::cout << "Exiv2::PngImage::readMetadata: Found tEXt chunk (length: " << dataOffset << ")\n"; -#endif - PngChunk::decodeTXTChunk(this, cdataBuf, PngChunk::tEXt_Chunk); - } - else if (!memcmp(cheaderBuf.pData_ + 4, "zTXt", 4)) - { -#ifdef DEBUG - std::cout << "Exiv2::PngImage::readMetadata: Found zTXt chunk (length: " << dataOffset << ")\n"; -#endif - PngChunk::decodeTXTChunk(this, cdataBuf, PngChunk::zTXt_Chunk); - } - else if (!memcmp(cheaderBuf.pData_ + 4, "iTXt", 4)) - { -#ifdef DEBUG - std::cout << "Exiv2::PngImage::readMetadata: Found iTXt chunk (length: " << dataOffset << ")\n"; -#endif - PngChunk::decodeTXTChunk(this, cdataBuf, PngChunk::iTXt_Chunk); - } - - // Set dataOffset to null like chunk data have been extracted previously. - dataOffset = 0; - } - - // Move to the next chunk: chunk data size + 4 CRC bytes. -#ifdef DEBUG - std::cout << "Exiv2::PngImage::readMetadata: Seek to offset: " << dataOffset + 4 << "\n"; -#endif - io_->seek(dataOffset + 4 , BasicIo::cur); - if (io_->error() || io_->eof()) throw Error(14); - } - - } // PngImage::readMetadata - - void PngImage::writeMetadata() - { - if (io_->open() != 0) - { - throw Error(9, io_->path(), strError()); - } - IoCloser closer(*io_); - BasicIo::AutoPtr tempIo(io_->temporary()); // may throw - assert (tempIo.get() != 0); - - doWriteMetadata(*tempIo); // may throw - io_->close(); - io_->transfer(*tempIo); // may throw - - } // PngImage::writeMetadata - - void PngImage::doWriteMetadata(BasicIo& outIo) - { - if (!io_->isopen()) throw Error(20); - if (!outIo.isopen()) throw Error(21); - -#ifdef DEBUG - std::cout << "Exiv2::PngImage::doWriteMetadata: Writing PNG file " << io_->path() << "\n"; - std::cout << "Exiv2::PngImage::doWriteMetadata: tmp file created " << outIo.path() << "\n"; -#endif - - // Ensure that this is the correct image type - if (!isPngType(*io_, true)) - { - if (io_->error() || io_->eof()) throw Error(20); - throw Error(22); - } - - // Write PNG Signature. - if (outIo.write(pngSignature, 8) != 8) throw Error(21); - - DataBuf cheaderBuf(8); // Chunk header : 4 bytes (data size) + 4 bytes (chunk type). - - while(!io_->eof()) - { - // Read chunk header. - - std::memset(cheaderBuf.pData_, 0x00, cheaderBuf.size_); - long bufRead = io_->read(cheaderBuf.pData_, cheaderBuf.size_); - if (io_->error()) throw Error(14); - if (bufRead != cheaderBuf.size_) throw Error(20); - - // Decode chunk data length. - - uint32_t dataOffset = getULong(cheaderBuf.pData_, bigEndian); - if (dataOffset > 0x7FFFFFFF) throw Exiv2::Error(14); - - // Read whole chunk : Chunk header + Chunk data (not fixed size - can be null) + CRC (4 bytes). - - DataBuf chunkBuf(8 + dataOffset + 4); // Chunk header (8 bytes) + Chunk data + CRC (4 bytes). - memcpy(chunkBuf.pData_, cheaderBuf.pData_, 8); // Copy header. - bufRead = io_->read(chunkBuf.pData_ + 8, dataOffset + 4); // Extract chunk data + CRC - if (io_->error()) throw Error(14); - if (bufRead != (long)(dataOffset + 4)) throw Error(20); - - if (!memcmp(cheaderBuf.pData_ + 4, "IEND", 4)) - { - // Last chunk found: we write it and done. -#ifdef DEBUG - std::cout << "Exiv2::PngImage::doWriteMetadata: Write IEND chunk (length: " << dataOffset << ")\n"; -#endif - if (outIo.write(chunkBuf.pData_, chunkBuf.size_) != chunkBuf.size_) throw Error(21); - return; - } - else if (!memcmp(cheaderBuf.pData_ + 4, "IHDR", 4)) - { -#ifdef DEBUG - std::cout << "Exiv2::PngImage::doWriteMetadata: Write IHDR chunk (length: " << dataOffset << ")\n"; -#endif - if (outIo.write(chunkBuf.pData_, chunkBuf.size_) != chunkBuf.size_) throw Error(21); - - // Write all updated metadata here, just after IHDR. - if (!comment_.empty()) - { - // Update Comment data to a new PNG chunk - std::string chunk = PngChunk::makeMetadataChunk(comment_, mdComment); - if (outIo.write((const byte*)chunk.data(), static_cast(chunk.size())) != (long)chunk.size()) - { - throw Error(21); - } - } - - if (exifData_.count() > 0) - { - // Update Exif data to a new PNG chunk - Blob blob; - ExifParser::encode(blob, littleEndian, exifData_); - if (blob.size() > 0) - { - static const char exifHeader[] = { 0x45, 0x78, 0x69, 0x66, 0x00, 0x00 }; - std::string rawExif = std::string(exifHeader, 6) - + std::string((const char*)&blob[0], blob.size()); - std::string chunk = PngChunk::makeMetadataChunk(rawExif, mdExif); - if (outIo.write((const byte*)chunk.data(), static_cast(chunk.size())) != (long)chunk.size()) - { - throw Error(21); - } - } - } - - if (iptcData_.count() > 0) - { - // Update IPTC data to a new PNG chunk - DataBuf newPsData = Photoshop::setIptcIrb(0, 0, iptcData_); - if (newPsData.size_ > 0) - { - std::string rawIptc((const char*)newPsData.pData_, newPsData.size_); - std::string chunk = PngChunk::makeMetadataChunk(rawIptc, mdIptc); - if (outIo.write((const byte*)chunk.data(), static_cast(chunk.size())) != (long)chunk.size()) - { - throw Error(21); - } - } - } - - if (writeXmpFromPacket() == false) { - if (XmpParser::encode(xmpPacket_, xmpData_) > 1) { -#ifndef SUPPRESS_WARNINGS - EXV_ERROR << "Failed to encode XMP metadata.\n"; -#endif - } - } - if (xmpPacket_.size() > 0) { - // Update XMP data to a new PNG chunk - std::string chunk = PngChunk::makeMetadataChunk(xmpPacket_, mdXmp); - if (outIo.write((const byte*)chunk.data(), static_cast(chunk.size())) != (long)chunk.size()) { - throw Error(21); - } - } - } - else if (!memcmp(cheaderBuf.pData_ + 4, "tEXt", 4) || - !memcmp(cheaderBuf.pData_ + 4, "zTXt", 4) || - !memcmp(cheaderBuf.pData_ + 4, "iTXt", 4)) - { - DataBuf key = PngChunk::keyTXTChunk(chunkBuf, true); - if (memcmp("Raw profile type exif", key.pData_, 21) == 0 || - memcmp("Raw profile type APP1", key.pData_, 21) == 0 || - memcmp("Raw profile type iptc", key.pData_, 21) == 0 || - memcmp("Raw profile type xmp", key.pData_, 20) == 0 || - memcmp("XML:com.adobe.xmp", key.pData_, 17) == 0 || - memcmp("Description", key.pData_, 11) == 0) - { -#ifdef DEBUG - std::cout << "Exiv2::PngImage::doWriteMetadata: strip " << cheaderBuf.pData_ + 4 - << " chunk (key: " << key.pData_ << ")\n"; -#endif - } - else - { -#ifdef DEBUG - std::cout << "Exiv2::PngImage::doWriteMetadata: write " << cheaderBuf.pData_ + 4 - << " chunk (length: " << dataOffset << ")\n"; -#endif - if (outIo.write(chunkBuf.pData_, chunkBuf.size_) != chunkBuf.size_) throw Error(21); - } - } - else - { - // Write all others chunk as well. -#ifdef DEBUG - std::cout << "Exiv2::PngImage::doWriteMetadata: write " << cheaderBuf.pData_ + 4 - << " chunk (length: " << dataOffset << ")\n"; -#endif - if (outIo.write(chunkBuf.pData_, chunkBuf.size_) != chunkBuf.size_) throw Error(21); - - } - } - - } // PngImage::doWriteMetadata - - // ************************************************************************* - // free functions - Image::AutoPtr newPngInstance(BasicIo::AutoPtr io, bool create) - { - Image::AutoPtr image(new PngImage(io, create)); - if (!image->good()) - { - image.reset(); - } - return image; - } - - bool isPngType(BasicIo& iIo, bool advance) - { - const int32_t len = 8; - byte buf[len]; - iIo.read(buf, len); - if (iIo.error() || iIo.eof()) - { - return false; - } - int rc = memcmp(buf, pngSignature, 8); - if (!advance || rc != 0) - { - iIo.seek(-len, BasicIo::cur); - } - - return rc == 0; - } -} // namespace Exiv2 -#endif diff --git a/platform/win32/msvc/external/exiv2/src/pngimage.hpp b/platform/win32/msvc/external/exiv2/src/pngimage.hpp deleted file mode 100644 index e28997a3cfe..00000000000 --- a/platform/win32/msvc/external/exiv2/src/pngimage.hpp +++ /dev/null @@ -1,132 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file pngimage.hpp - @brief PNG image, implemented using the following references: - PNG specification by W3C
- PNG tags list by Phil Harvey
- @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @author Gilles Caulier (cgilles) - caulier dot gilles at gmail dot com - @date 12-Jun-06, gc: submitted - */ -#ifndef PNGIMAGE_HPP_ -#define PNGIMAGE_HPP_ - -// ***************************************************************************** -// included header files -#include "image.hpp" -#include "basicio.hpp" -#include "types.hpp" - -// + standard includes -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 -{ - -// ***************************************************************************** -// class definitions - - // Add PNG to the supported image formats - namespace ImageType - { - const int png = 6; //!< PNG image type (see class PngImage) - } - - /*! - @brief Class to access PNG images. Exif and IPTC metadata are supported - directly. - */ - class EXIV2API PngImage : public Image { - public: - //! @name Creators - //@{ - /*! - @brief Constructor that can either open an existing PNG image or create - a new image from scratch. If a new image is to be created, any - existing data is overwritten. Since the constructor can not return - a result, callers should check the good() method after object - construction to determine success or failure. - @param io An auto-pointer that owns a BasicIo instance used for - reading and writing image metadata. \b Important: The constructor - takes ownership of the passed in BasicIo instance through the - auto-pointer. Callers should not continue to use the BasicIo - instance after it is passed to this method. Use the Image::io() - method to get a temporary reference. - @param create Specifies if an existing image should be read (false) - or if a new file should be created (true). - */ - PngImage(BasicIo::AutoPtr io, bool create); - //@} - - //! @name Manipulators - //@{ - void readMetadata(); - void writeMetadata(); - //@} - - //! @name Accessors - //@{ - std::string mimeType() const; - //@} - - private: - //! @name NOT implemented - //@{ - //! Copy constructor - PngImage(const PngImage& rhs); - //! Assignment operator - PngImage& operator=(const PngImage& rhs); - /*! - @brief Provides the main implementation of writeMetadata() by - writing all buffered metadata to the provided BasicIo. - @param oIo BasicIo instance to write to (a temporary location). - - @return 4 if opening or writing to the associated BasicIo fails - */ - EXV_DLLLOCAL void doWriteMetadata(BasicIo& oIo); - //@} - - }; // class PngImage - -// ***************************************************************************** -// template, inline and free functions - - // These could be static private functions on Image subclasses but then - // ImageFactory needs to be made a friend. - /*! - @brief Create a new PngImage instance and return an auto-pointer to it. - Caller owns the returned object and the auto-pointer ensures that - it will be deleted. - */ - EXIV2API Image::AutoPtr newPngInstance(BasicIo::AutoPtr io, bool create); - - //! Check if the file iIo is a PNG image. - EXIV2API bool isPngType(BasicIo& iIo, bool advance); - -} // namespace Exiv2 - -#endif // #ifndef PNGIMAGE_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/preview.cpp b/platform/win32/msvc/external/exiv2/src/preview.cpp deleted file mode 100644 index 6e477799be9..00000000000 --- a/platform/win32/msvc/external/exiv2/src/preview.cpp +++ /dev/null @@ -1,1165 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: preview.cpp - Version: $Rev: 2698 $ - Author(s): Vladimir Nadvornik (vn) - History: 18-Sep-08, vn: created - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: preview.cpp 2698 2012-04-11 16:02:44Z ahuggel $") - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#include -#include - -#include "preview.hpp" -#include "futils.hpp" - -#include "image.hpp" -#include "cr2image.hpp" -#include "jpgimage.hpp" -#include "tiffimage.hpp" -#include "tiffimage_int.hpp" - -// ***************************************************************************** -namespace { - - using namespace Exiv2; - - /*! - @brief Compare two preview images by number of pixels, if width and height - of both lhs and rhs are available or else by size. - Return true if lhs is smaller than rhs. - */ - bool cmpPreviewProperties( - const PreviewProperties& lhs, - const PreviewProperties& rhs - ) - { - uint32_t l = lhs.width_ * lhs.height_; - uint32_t r = rhs.width_ * rhs.height_; - - return l < r; - } - - /*! - @brief Decode a Hex string. - */ - DataBuf decodeHex(const byte *src, long srcSize); - - /*! - @brief Decode a Base64 string. - */ - DataBuf decodeBase64(const std::string &src); - - /*! - @brief Decode an Illustrator thumbnail that follows after %AI7_Thumbnail. - */ - DataBuf decodeAi7Thumbnail(const DataBuf &src); - - /*! - @brief Create a PNM image from raw RGB data. - */ - DataBuf makePnm(uint32_t width, uint32_t height, const DataBuf &rgb); - - /*! - Base class for image loaders. Provides virtual methods for reading properties - and DataBuf. - */ - class Loader { - public: - //! Virtual destructor. - virtual ~Loader() {} - - //! Loader auto pointer - typedef std::auto_ptr AutoPtr; - - //! Create a Loader subclass for requested id - static AutoPtr create(PreviewId id, const Image &image); - - //! Check if a preview image with given params exists in the image - virtual bool valid() const { return valid_; } - - //! Get properties of a preview image with given params - virtual PreviewProperties getProperties() const; - - //! Get a buffer that contains the preview image - virtual DataBuf getData() const = 0; - - //! Read preview image dimensions when they are not available directly - virtual bool readDimensions() { return true; } - - //! A number of image loaders configured in the loaderList_ table - static PreviewId getNumLoaders(); - - protected: - //! Constructor. Sets all image properies to unknown. - Loader(PreviewId id, const Image &image); - - //! Functions that creates a loader from given parameters - typedef AutoPtr (*CreateFunc)(PreviewId id, const Image &image, int parIdx); - - //! Structure to list possible loaders - struct LoaderList { - const char *imageMimeType_; //!< Image type for which the loader is valid, 0 matches all images - CreateFunc create_; //!< Function that creates particular loader instance - int parIdx_; //!< Parameter that is passed into CreateFunc - }; - - //! Table that lists possible loaders. PreviewId is an index to this table. - static const LoaderList loaderList_[]; - - //! Identifies preview image type - PreviewId id_; - - //! Source image reference - const Image &image_; - - //! Preview image width - uint32_t width_; - - //! Preview image length - uint32_t height_; - - //! Preview image size in bytes - uint32_t size_; - - //! True if the source image contains a preview image of given type - bool valid_; - }; - - //! Loader for native previews - class LoaderNative : public Loader { - public: - //! Constructor - LoaderNative(PreviewId id, const Image &image, int parIdx); - - //! Get properties of a preview image with given params - virtual PreviewProperties getProperties() const; - - //! Get a buffer that contains the preview image - virtual DataBuf getData() const; - - //! Read preview image dimensions - virtual bool readDimensions(); - - protected: - //! Native preview information - NativePreview nativePreview_; - }; - - //! Function to create new LoaderNative - Loader::AutoPtr createLoaderNative(PreviewId id, const Image &image, int parIdx); - - //! Loader for Jpeg previews that are not read into ExifData directly - class LoaderExifJpeg : public Loader { - public: - - //! Constructor - LoaderExifJpeg(PreviewId id, const Image &image, int parIdx); - - //! Get properties of a preview image with given params - virtual PreviewProperties getProperties() const; - - //! Get a buffer that contains the preview image - virtual DataBuf getData() const; - - //! Read preview image dimensions - virtual bool readDimensions(); - - protected: - //! Structure that lists offset/size tag pairs - struct Param { - const char* offsetKey_; //!< Offset tag - const char* sizeKey_; //!< Size tag - const char* baseOffsetKey_; //!< Tag that holds base offset or 0 - }; - - //! Table that holds all possible offset/size pairs. parIdx is an index to this table - static const Param param_[]; - - //! Offset value - uint32_t offset_; - }; - - //! Function to create new LoaderExifJpeg - Loader::AutoPtr createLoaderExifJpeg(PreviewId id, const Image &image, int parIdx); - - //! Loader for Jpeg previews that are read into ExifData - class LoaderExifDataJpeg : public Loader { - public: - //! Constructor - LoaderExifDataJpeg(PreviewId id, const Image &image, int parIdx); - - //! Get properties of a preview image with given params - virtual PreviewProperties getProperties() const; - - //! Get a buffer that contains the preview image - virtual DataBuf getData() const; - - //! Read preview image dimensions - virtual bool readDimensions(); - - protected: - - //! Structure that lists data/size tag pairs - struct Param { - const char* dataKey_; //!< Data tag - const char* sizeKey_; //!< Size tag - }; - - //! Table that holds all possible data/size pairs. parIdx is an index to this table - static const Param param_[]; - - //! Key that points to the Value that contains the JPEG preview in data area - ExifKey dataKey_; - }; - - //! Function to create new LoaderExifDataJpeg - Loader::AutoPtr createLoaderExifDataJpeg(PreviewId id, const Image &image, int parIdx); - - //! Loader for Tiff previews - it can get image data from ExifData or image_.io() as needed - class LoaderTiff : public Loader { - public: - //! Constructor - LoaderTiff(PreviewId id, const Image &image, int parIdx); - - //! Get properties of a preview image with given params - virtual PreviewProperties getProperties() const; - - //! Get a buffer that contains the preview image - virtual DataBuf getData() const; - - protected: - //! Name of the group that contains the preview image - const char *group_; - - //! Tag that contains image data. Possible values are "StripOffsets" or "TileOffsets" - std::string offsetTag_; - - //! Tag that contains data sizes. Possible values are "StripByteCounts" or "TileByteCounts" - std::string sizeTag_; - - //! Structure that lists preview groups - struct Param { - const char* group_; //!< Group name - const char* checkTag_; //!< Tag to check or NULL - const char* checkValue_; //!< The preview image is valid only if the checkTag_ has this value - }; - - //! Table that holds all possible groups. parIdx is an index to this table. - static const Param param_[]; - - }; - - //! Function to create new LoaderTiff - Loader::AutoPtr createLoaderTiff(PreviewId id, const Image &image, int parIdx); - - //! Loader for JPEG previews stored in the XMP metadata - class LoaderXmpJpeg : public Loader { - public: - //! Constructor - LoaderXmpJpeg(PreviewId id, const Image &image, int parIdx); - - //! Get properties of a preview image with given params - virtual PreviewProperties getProperties() const; - - //! Get a buffer that contains the preview image - virtual DataBuf getData() const; - - //! Read preview image dimensions - virtual bool readDimensions(); - - protected: - //! Preview image data - DataBuf preview_; - }; - - //! Function to create new LoaderXmpJpeg - Loader::AutoPtr createLoaderXmpJpeg(PreviewId id, const Image &image, int parIdx); - -// ***************************************************************************** -// class member definitions - - const Loader::LoaderList Loader::loaderList_[] = { - { 0, createLoaderNative, 0 }, - { 0, createLoaderNative, 1 }, - { 0, createLoaderNative, 2 }, - { 0, createLoaderNative, 3 }, - { 0, createLoaderExifDataJpeg, 0 }, - { 0, createLoaderExifDataJpeg, 1 }, - { 0, createLoaderExifDataJpeg, 2 }, - { 0, createLoaderExifDataJpeg, 3 }, - { 0, createLoaderExifDataJpeg, 4 }, - { 0, createLoaderExifDataJpeg, 5 }, - { 0, createLoaderExifDataJpeg, 6 }, - { 0, createLoaderExifDataJpeg, 7 }, - { 0, createLoaderExifDataJpeg, 8 }, - { "image/x-panasonic-rw2", createLoaderExifDataJpeg, 9 }, - { 0, createLoaderExifDataJpeg,10 }, - { 0, createLoaderTiff, 0 }, - { 0, createLoaderTiff, 1 }, - { 0, createLoaderTiff, 2 }, - { 0, createLoaderTiff, 3 }, - { 0, createLoaderTiff, 4 }, - { 0, createLoaderTiff, 5 }, - { 0, createLoaderTiff, 6 }, - { "image/x-canon-cr2", createLoaderTiff, 7 }, - { 0, createLoaderExifJpeg, 0 }, - { 0, createLoaderExifJpeg, 1 }, - { 0, createLoaderExifJpeg, 2 }, - { 0, createLoaderExifJpeg, 3 }, - { 0, createLoaderExifJpeg, 4 }, - { 0, createLoaderExifJpeg, 5 }, - { 0, createLoaderExifJpeg, 6 }, - { "image/x-canon-cr2", createLoaderExifJpeg, 7 }, - { 0, createLoaderExifJpeg, 8 }, - { 0, createLoaderXmpJpeg, 0 } - }; - - const LoaderExifJpeg::Param LoaderExifJpeg::param_[] = { - { "Exif.Image.JPEGInterchangeFormat", "Exif.Image.JPEGInterchangeFormatLength", 0 }, // 0 - { "Exif.SubImage1.JPEGInterchangeFormat", "Exif.SubImage1.JPEGInterchangeFormatLength", 0 }, // 1 - { "Exif.SubImage2.JPEGInterchangeFormat", "Exif.SubImage2.JPEGInterchangeFormatLength", 0 }, // 2 - { "Exif.SubImage3.JPEGInterchangeFormat", "Exif.SubImage3.JPEGInterchangeFormatLength", 0 }, // 3 - { "Exif.SubImage4.JPEGInterchangeFormat", "Exif.SubImage4.JPEGInterchangeFormatLength", 0 }, // 4 - { "Exif.SubThumb1.JPEGInterchangeFormat", "Exif.SubThumb1.JPEGInterchangeFormatLength", 0 }, // 5 - { "Exif.Image2.JPEGInterchangeFormat", "Exif.Image2.JPEGInterchangeFormatLength", 0 }, // 6 - { "Exif.Image.StripOffsets", "Exif.Image.StripByteCounts", 0 }, // 7 - { "Exif.OlympusCs.PreviewImageStart", "Exif.OlympusCs.PreviewImageLength", "Exif.MakerNote.Offset"} // 8 - }; - - const LoaderExifDataJpeg::Param LoaderExifDataJpeg::param_[] = { - { "Exif.Thumbnail.JPEGInterchangeFormat", "Exif.Thumbnail.JPEGInterchangeFormatLength" }, // 0 - { "Exif.NikonPreview.JPEGInterchangeFormat", "Exif.NikonPreview.JPEGInterchangeFormatLength" }, // 1 - { "Exif.Pentax.PreviewOffset", "Exif.Pentax.PreviewLength" }, // 2 - { "Exif.PentaxDng.PreviewOffset", "Exif.PentaxDng.PreviewLength" }, // 3 - { "Exif.Minolta.ThumbnailOffset", "Exif.Minolta.ThumbnailLength" }, // 4 - { "Exif.SonyMinolta.ThumbnailOffset", "Exif.SonyMinolta.ThumbnailLength" }, // 5 - { "Exif.Olympus.ThumbnailImage", 0 }, // 6 - { "Exif.Olympus2.ThumbnailImage", 0 }, // 7 - { "Exif.Minolta.Thumbnail", 0 }, // 8 - { "Exif.PanasonicRaw.PreviewImage", 0 }, // 9 - { "Exif.SamsungPreview.JPEGInterchangeFormat", "Exif.SamsungPreview.JPEGInterchangeFormatLength" } // 10 - }; - - const LoaderTiff::Param LoaderTiff::param_[] = { - { "Image", "Exif.Image.NewSubfileType", "1" }, // 0 - { "SubImage1", "Exif.SubImage1.NewSubfileType", "1" }, // 1 - { "SubImage2", "Exif.SubImage2.NewSubfileType", "1" }, // 2 - { "SubImage3", "Exif.SubImage3.NewSubfileType", "1" }, // 3 - { "SubImage4", "Exif.SubImage4.NewSubfileType", "1" }, // 4 - { "SubThumb1", "Exif.SubThumb1.NewSubfileType", "1" }, // 5 - { "Thumbnail", 0, 0 }, // 6 - { "Image2", 0, 0 } // 7 - }; - - Loader::AutoPtr Loader::create(PreviewId id, const Image &image) - { - if (id < 0 || id >= Loader::getNumLoaders()) - return AutoPtr(); - - if (loaderList_[id].imageMimeType_ && - std::string(loaderList_[id].imageMimeType_) != std::string(image.mimeType())) - return AutoPtr(); - - AutoPtr loader = loaderList_[id].create_(id, image, loaderList_[id].parIdx_); - - if (loader.get() && !loader->valid()) loader.reset(); - return loader; - } - - Loader::Loader(PreviewId id, const Image &image) - : id_(id), image_(image), - width_(0), height_(0), - size_(0), - valid_(false) - { - } - - PreviewProperties Loader::getProperties() const - { - PreviewProperties prop; - prop.id_ = id_; - prop.size_ = size_; - prop.width_ = width_; - prop.height_ = height_; - return prop; - } - - PreviewId Loader::getNumLoaders() - { - return (PreviewId)EXV_COUNTOF(loaderList_); - } - - LoaderNative::LoaderNative(PreviewId id, const Image &image, int parIdx) - : Loader(id, image) - { - if (!(0 <= parIdx && static_cast(parIdx) < image.nativePreviews().size())) return; - nativePreview_ = image.nativePreviews()[parIdx]; - width_ = nativePreview_.width_; - height_ = nativePreview_.height_; - valid_ = true; - if (nativePreview_.filter_ == "") { - size_ = nativePreview_.size_; - } else { - size_ = getData().size_; - } - } - - Loader::AutoPtr createLoaderNative(PreviewId id, const Image &image, int parIdx) - { - return Loader::AutoPtr(new LoaderNative(id, image, parIdx)); - } - - PreviewProperties LoaderNative::getProperties() const - { - PreviewProperties prop = Loader::getProperties(); - prop.mimeType_ = nativePreview_.mimeType_; - if (nativePreview_.mimeType_ == "image/jpeg") { - prop.extension_ = ".jpg"; - } else if (nativePreview_.mimeType_ == "image/tiff") { - prop.extension_ = ".tif"; - } else if (nativePreview_.mimeType_ == "image/x-wmf") { - prop.extension_ = ".wmf"; - } else if (nativePreview_.mimeType_ == "image/x-portable-anymap") { - prop.extension_ = ".pnm"; - } else { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Unknown native preview format: " << nativePreview_.mimeType_ << "\n"; -#endif - prop.extension_ = ".dat"; - } -#ifdef EXV_UNICODE_PATH - prop.wextension_ = s2ws(prop.extension_); -#endif - return prop; - } - - DataBuf LoaderNative::getData() const - { - if (!valid()) return DataBuf(); - - BasicIo &io = image_.io(); - if (io.open() != 0) { - throw Error(9, io.path(), strError()); - } - IoCloser closer(io); - const byte* data = io.mmap(); - if (io.size() < nativePreview_.position_ + static_cast(nativePreview_.size_)) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Invalid native preview position or size.\n"; -#endif - return DataBuf(); - } - if (nativePreview_.filter_ == "") { - return DataBuf(data + nativePreview_.position_, static_cast(nativePreview_.size_)); - } else if (nativePreview_.filter_ == "hex-ai7thumbnail-pnm") { - const DataBuf ai7thumbnail = decodeHex(data + nativePreview_.position_, static_cast(nativePreview_.size_)); - const DataBuf rgb = decodeAi7Thumbnail(ai7thumbnail); - return makePnm(width_, height_, rgb); - } else if (nativePreview_.filter_ == "hex-irb") { - const DataBuf psData = decodeHex(data + nativePreview_.position_, static_cast(nativePreview_.size_)); - const byte *record; - uint32_t sizeHdr; - uint32_t sizeData; - if (Photoshop::locatePreviewIrb(psData.pData_, psData.size_, &record, &sizeHdr, &sizeData) != 0) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Missing preview IRB in Photoshop EPS preview.\n"; -#endif - return DataBuf(); - } - return DataBuf(record + sizeHdr + 28, sizeData - 28); - } else { - throw Error(1, "Invalid native preview filter: " + nativePreview_.filter_); - } - } - - bool LoaderNative::readDimensions() - { - if (!valid()) return false; - if (width_ != 0 || height_ != 0) return true; - - const DataBuf data = getData(); - if (data.size_ == 0) return false; - try { - Image::AutoPtr image = ImageFactory::open(data.pData_, data.size_); - if (image.get() == 0) return false; - image->readMetadata(); - - width_ = image->pixelWidth(); - height_ = image->pixelHeight(); - } catch (const AnyError& /* error */) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Invalid native preview image.\n"; -#endif - return false; - } - return true; - } - - LoaderExifJpeg::LoaderExifJpeg(PreviewId id, const Image &image, int parIdx) - : Loader(id, image) - { - offset_ = 0; - ExifData::const_iterator pos = image_.exifData().findKey(ExifKey(param_[parIdx].offsetKey_)); - if (pos != image_.exifData().end() && pos->count() > 0) { - offset_ = pos->toLong(); - } - - size_ = 0; - pos = image_.exifData().findKey(ExifKey(param_[parIdx].sizeKey_)); - if (pos != image_.exifData().end() && pos->count() > 0) { - size_ = pos->toLong(); - } - - if (offset_ == 0 || size_ == 0) return; - - if (param_[parIdx].baseOffsetKey_) { - pos = image_.exifData().findKey(ExifKey(param_[parIdx].baseOffsetKey_)); - if (pos != image_.exifData().end() && pos->count() > 0) { - offset_ += pos->toLong(); - } - } - - if (offset_ + size_ > static_cast(image_.io().size())) return; - - valid_ = true; - } - - Loader::AutoPtr createLoaderExifJpeg(PreviewId id, const Image &image, int parIdx) - { - return Loader::AutoPtr(new LoaderExifJpeg(id, image, parIdx)); - } - - PreviewProperties LoaderExifJpeg::getProperties() const - { - PreviewProperties prop = Loader::getProperties(); - prop.mimeType_ = "image/jpeg"; - prop.extension_ = ".jpg"; -#ifdef EXV_UNICODE_PATH - prop.wextension_ = EXV_WIDEN(".jpg"); -#endif - return prop; - } - - DataBuf LoaderExifJpeg::getData() const - { - if (!valid()) return DataBuf(); - BasicIo &io = image_.io(); - - if (io.open() != 0) { - throw Error(9, io.path(), strError()); - } - IoCloser closer(io); - - const Exiv2::byte* base = io.mmap(); - - return DataBuf(base + offset_, size_); - } - - bool LoaderExifJpeg::readDimensions() - { - if (!valid()) return false; - if (width_ || height_) return true; - - BasicIo &io = image_.io(); - - if (io.open() != 0) { - throw Error(9, io.path(), strError()); - } - IoCloser closer(io); - const Exiv2::byte* base = io.mmap(); - - try { - Image::AutoPtr image = ImageFactory::open(base + offset_, size_); - if (image.get() == 0) return false; - image->readMetadata(); - - width_ = image->pixelWidth(); - height_ = image->pixelHeight(); - } - catch (const AnyError& /* error */ ) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Invalid JPEG preview image.\n"; -#endif - return false; - } - - return true; - } - - LoaderExifDataJpeg::LoaderExifDataJpeg(PreviewId id, const Image &image, int parIdx) - : Loader(id, image), - dataKey_(param_[parIdx].dataKey_) - { - ExifData::const_iterator pos = image_.exifData().findKey(dataKey_); - if (pos != image_.exifData().end()) { - size_ = pos->sizeDataArea(); // indirect data - if (size_ == 0 && pos->typeId() == undefined) - size_ = pos->size(); // direct data - } - - if (size_ == 0) return; - - valid_ = true; - } - - Loader::AutoPtr createLoaderExifDataJpeg(PreviewId id, const Image &image, int parIdx) - { - return Loader::AutoPtr(new LoaderExifDataJpeg(id, image, parIdx)); - } - - PreviewProperties LoaderExifDataJpeg::getProperties() const - { - PreviewProperties prop = Loader::getProperties(); - prop.mimeType_ = "image/jpeg"; - prop.extension_ = ".jpg"; -#ifdef EXV_UNICODE_PATH - prop.wextension_ = EXV_WIDEN(".jpg"); -#endif - return prop; - } - - DataBuf LoaderExifDataJpeg::getData() const - { - if (!valid()) return DataBuf(); - - ExifData::const_iterator pos = image_.exifData().findKey(dataKey_); - if (pos != image_.exifData().end()) { - DataBuf buf = pos->dataArea(); // indirect data - - if (buf.size_ == 0) { // direct data - buf = DataBuf(pos->size()); - pos->copy(buf.pData_, invalidByteOrder); - } - - buf.pData_[0] = 0xff; // fix Minolta thumbnails with invalid jpeg header - return buf; - } - - return DataBuf(); - } - - bool LoaderExifDataJpeg::readDimensions() - { - if (!valid()) return false; - - DataBuf buf = getData(); - if (buf.size_ == 0) return false; - - try { - Image::AutoPtr image = ImageFactory::open(buf.pData_, buf.size_); - if (image.get() == 0) return false; - image->readMetadata(); - - width_ = image->pixelWidth(); - height_ = image->pixelHeight(); - } - catch (const AnyError& /* error */ ) { - return false; - } - - return true; - } - - LoaderTiff::LoaderTiff(PreviewId id, const Image &image, int parIdx) - : Loader(id, image), - group_(param_[parIdx].group_) - { - const ExifData &exifData = image_.exifData(); - - int offsetCount = 0; - ExifData::const_iterator pos; - - // check if the group_ contains a preview image - if (param_[parIdx].checkTag_) { - pos = exifData.findKey(ExifKey(param_[parIdx].checkTag_)); - if (pos == exifData.end()) return; - if (param_[parIdx].checkValue_ && pos->toString() != param_[parIdx].checkValue_) return; - } - - pos = exifData.findKey(ExifKey(std::string("Exif.") + group_ + ".StripOffsets")); - if (pos != exifData.end()) { - offsetTag_ = "StripOffsets"; - sizeTag_ = "StripByteCounts"; - offsetCount = pos->value().count(); - } - else { - pos = exifData.findKey(ExifKey(std::string("Exif.") + group_ + ".TileOffsets")); - if (pos == exifData.end()) return; - offsetTag_ = "TileOffsets"; - sizeTag_ = "TileByteCounts"; - offsetCount = pos->value().count(); - } - - pos = exifData.findKey(ExifKey(std::string("Exif.") + group_ + '.' + sizeTag_)); - if (pos == exifData.end()) return; - if (offsetCount != pos->value().count()) return; - for (int i = 0; i < offsetCount; i++) { - size_ += pos->toLong(i); - } - - if (size_ == 0) return; - - pos = exifData.findKey(ExifKey(std::string("Exif.") + group_ + ".ImageWidth")); - if (pos != exifData.end() && pos->count() > 0) { - width_ = pos->toLong(); - } - - pos = exifData.findKey(ExifKey(std::string("Exif.") + group_ + ".ImageLength")); - if (pos != exifData.end() && pos->count() > 0) { - height_ = pos->toLong(); - } - - if (width_ == 0 || height_ == 0) return; - - valid_ = true; - } - - Loader::AutoPtr createLoaderTiff(PreviewId id, const Image &image, int parIdx) - { - return Loader::AutoPtr(new LoaderTiff(id, image, parIdx)); - } - - PreviewProperties LoaderTiff::getProperties() const - { - PreviewProperties prop = Loader::getProperties(); - prop.mimeType_ = "image/tiff"; - prop.extension_ = ".tif"; -#ifdef EXV_UNICODE_PATH - prop.wextension_ = EXV_WIDEN(".tif"); -#endif - return prop; - } - - DataBuf LoaderTiff::getData() const - { - const ExifData &exifData = image_.exifData(); - - ExifData preview; - - // copy tags - for (ExifData::const_iterator pos = exifData.begin(); pos != exifData.end(); ++pos) { - if (pos->groupName() == group_) { - /* - Write only the neccessary TIFF image tags - tags that especially could cause problems are: - "NewSubfileType" - the result is no longer a thumbnail, it is a standalone image - "Orientation" - this tag typically appears only in the "Image" group. Deleting it ensures - consistent result for all previews, including JPEG - */ - uint16_t tag = pos->tag(); - if (tag != 0x00fe && tag != 0x00ff && Internal::isTiffImageTag(tag, Internal::ifd0Id)) { - preview.add(ExifKey(tag, "Image"), &pos->value()); - } - } - } - - Value &dataValue = const_cast(preview["Exif.Image." + offsetTag_].value()); - - if (dataValue.sizeDataArea() == 0) { - // image data are not available via exifData, read them from image_.io() - BasicIo &io = image_.io(); - - if (io.open() != 0) { - throw Error(9, io.path(), strError()); - } - IoCloser closer(io); - - const Exiv2::byte* base = io.mmap(); - - const Value &sizes = preview["Exif.Image." + sizeTag_].value(); - - if (sizes.count() == dataValue.count()) { - if (sizes.count() == 1) { - // this saves one copying of the buffer - uint32_t offset = dataValue.toLong(0); - uint32_t size = sizes.toLong(0); - if (offset + size <= static_cast(io.size())) - dataValue.setDataArea(base + offset, size); - } - else { - // FIXME: the buffer is probably copied twice, it should be optimized - DataBuf buf(size_); - Exiv2::byte* pos = buf.pData_; - for (int i = 0; i < sizes.count(); i++) { - uint32_t offset = dataValue.toLong(i); - uint32_t size = sizes.toLong(i); - if (offset + size <= static_cast(io.size())) - memcpy(pos, base + offset, size); - pos += size; - } - dataValue.setDataArea(buf.pData_, buf.size_); - } - } - } - - // Fix compression value in the CR2 IFD2 image - if (0 == strcmp(group_, "Image2") && image_.mimeType() == "image/x-canon-cr2") { - preview["Exif.Image.Compression"] = uint16_t(1); - } - - // write new image - MemIo mio; - IptcData emptyIptc; - XmpData emptyXmp; - TiffParser::encode(mio, 0, 0, Exiv2::littleEndian, preview, emptyIptc, emptyXmp); - return DataBuf(mio.mmap(), mio.size()); - } - - LoaderXmpJpeg::LoaderXmpJpeg(PreviewId id, const Image &image, int parIdx) - : Loader(id, image) - { - (void)parIdx; - - const XmpData &xmpData = image_.xmpData(); - - std::string prefix = "xmpGImg"; - if (xmpData.findKey(XmpKey("Xmp.xmp.Thumbnails[1]/xapGImg:image")) != xmpData.end()) { - prefix = "xapGImg"; - } - - XmpData::const_iterator imageDatum = xmpData.findKey(XmpKey("Xmp.xmp.Thumbnails[1]/" + prefix + ":image")); - if (imageDatum == xmpData.end()) return; - XmpData::const_iterator formatDatum = xmpData.findKey(XmpKey("Xmp.xmp.Thumbnails[1]/" + prefix + ":format")); - if (formatDatum == xmpData.end()) return; - XmpData::const_iterator widthDatum = xmpData.findKey(XmpKey("Xmp.xmp.Thumbnails[1]/" + prefix + ":width")); - if (widthDatum == xmpData.end()) return; - XmpData::const_iterator heightDatum = xmpData.findKey(XmpKey("Xmp.xmp.Thumbnails[1]/" + prefix + ":height")); - if (heightDatum == xmpData.end()) return; - - if (formatDatum->toString() != "JPEG") return; - - width_ = widthDatum->toLong(); - height_ = heightDatum->toLong(); - preview_ = decodeBase64(imageDatum->toString()); - size_ = static_cast(preview_.size_); - valid_ = true; - } - - Loader::AutoPtr createLoaderXmpJpeg(PreviewId id, const Image &image, int parIdx) - { - return Loader::AutoPtr(new LoaderXmpJpeg(id, image, parIdx)); - } - - PreviewProperties LoaderXmpJpeg::getProperties() const - { - PreviewProperties prop = Loader::getProperties(); - prop.mimeType_ = "image/jpeg"; - prop.extension_ = ".jpg"; -#ifdef EXV_UNICODE_PATH - prop.wextension_ = EXV_WIDEN(".jpg"); -#endif - return prop; - } - - DataBuf LoaderXmpJpeg::getData() const - { - if (!valid()) return DataBuf(); - return DataBuf(preview_.pData_, preview_.size_); - } - - bool LoaderXmpJpeg::readDimensions() - { - return valid(); - } - - DataBuf decodeHex(const byte *src, long srcSize) - { - // create decoding table - byte invalid = 16; - byte decodeHexTable[256]; - for (long i = 0; i < 256; i++) decodeHexTable[i] = invalid; - for (byte i = 0; i < 10; i++) decodeHexTable[static_cast('0') + i] = i; - for (byte i = 0; i < 6; i++) decodeHexTable[static_cast('A') + i] = i + 10; - for (byte i = 0; i < 6; i++) decodeHexTable[static_cast('a') + i] = i + 10; - - // calculate dest size - long validSrcSize = 0; - for (long srcPos = 0; srcPos < srcSize; srcPos++) { - if (decodeHexTable[src[srcPos]] != invalid) validSrcSize++; - } - const long destSize = validSrcSize / 2; - - // allocate dest buffer - DataBuf dest(destSize); - - // decode - for (long srcPos = 0, destPos = 0; destPos < destSize; destPos++) { - byte buffer = 0; - for (int bufferPos = 1; bufferPos >= 0 && srcPos < srcSize; srcPos++) { - byte srcValue = decodeHexTable[src[srcPos]]; - if (srcValue == invalid) continue; - buffer |= srcValue << (bufferPos * 4); - bufferPos--; - } - dest.pData_[destPos] = buffer; - } - return dest; - } - - static const char encodeBase64Table[64 + 1] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - - DataBuf decodeBase64(const std::string& src) - { - const unsigned long srcSize = static_cast(src.size()); - - // create decoding table - unsigned long invalid = 64; - unsigned long decodeBase64Table[256]; - for (unsigned long i = 0; i < 256; i++) decodeBase64Table[i] = invalid; - for (unsigned long i = 0; i < 64; i++) decodeBase64Table[(unsigned char)encodeBase64Table[i]] = i; - - // calculate dest size - unsigned long validSrcSize = 0; - for (unsigned long srcPos = 0; srcPos < srcSize; srcPos++) { - if (decodeBase64Table[(unsigned char)src[srcPos]] != invalid) validSrcSize++; - } - if (validSrcSize > ULONG_MAX / 3) return DataBuf(); // avoid integer overflow - const unsigned long destSize = (validSrcSize * 3) / 4; - - // allocate dest buffer - if (destSize > LONG_MAX) return DataBuf(); // avoid integer overflow - DataBuf dest(static_cast(destSize)); - - // decode - for (unsigned long srcPos = 0, destPos = 0; destPos < destSize;) { - unsigned long buffer = 0; - for (int bufferPos = 3; bufferPos >= 0 && srcPos < srcSize; srcPos++) { - unsigned long srcValue = decodeBase64Table[(unsigned char)src[srcPos]]; - if (srcValue == invalid) continue; - buffer |= srcValue << (bufferPos * 6); - bufferPos--; - } - for (int bufferPos = 2; bufferPos >= 0 && destPos < destSize; bufferPos--, destPos++) { - dest.pData_[destPos] = static_cast((buffer >> (bufferPos * 8)) & 0xFF); - } - } - return dest; - } - - DataBuf decodeAi7Thumbnail(const DataBuf &src) - { - const byte *colorTable = src.pData_; - const long colorTableSize = 256 * 3; - if (src.size_ < colorTableSize) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Invalid size of AI7 thumbnail: " << src.size_ << "\n"; -#endif - return DataBuf(); - } - const byte *imageData = src.pData_ + colorTableSize; - const long imageDataSize = src.size_ - colorTableSize; - const bool rle = (imageDataSize >= 3 && imageData[0] == 'R' && imageData[1] == 'L' && imageData[2] == 'E'); - std::string dest; - for (long i = rle ? 3 : 0; i < imageDataSize;) { - byte num = 1; - byte value = imageData[i++]; - if (rle && value == 0xFD) { - if (i >= imageDataSize) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Unexpected end of image data at AI7 thumbnail.\n"; -#endif - return DataBuf(); - } - value = imageData[i++]; - if (value != 0xFD) { - if (i >= imageDataSize) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Unexpected end of image data at AI7 thumbnail.\n"; -#endif - return DataBuf(); - } - num = value; - value = imageData[i++]; - } - } - for (; num != 0; num--) { - dest.append(reinterpret_cast(colorTable + (3*value)), 3); - } - } - return DataBuf(reinterpret_cast(dest.data()), static_cast(dest.size())); - } - - DataBuf makePnm(uint32_t width, uint32_t height, const DataBuf &rgb) - { - const long expectedSize = static_cast(width * height * 3); - if (rgb.size_ != expectedSize) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Invalid size of preview data. Expected " << expectedSize << " bytes, got " << rgb.size_ << " bytes.\n"; -#endif - return DataBuf(); - } - - const std::string header = "P6\n" + toString(width) + " " + toString(height) + "\n255\n"; - const byte *headerBytes = reinterpret_cast(header.data()); - - DataBuf dest(static_cast(header.size() + rgb.size_)); - std::copy(headerBytes, headerBytes + header.size(), dest.pData_); - std::copy(rgb.pData_, rgb.pData_ + rgb.size_, dest.pData_ + header.size()); - return dest; - } - -} // namespace - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - PreviewImage::PreviewImage(const PreviewProperties& properties, DataBuf data) - : properties_(properties) - { - pData_ = data.pData_; - size_ = data.size_; - data.release(); - } - - PreviewImage::~PreviewImage() - { - delete[] pData_; - } - - PreviewImage::PreviewImage(const PreviewImage& rhs) - { - properties_ = rhs.properties_; - pData_ = new byte[rhs.size_]; - memcpy(pData_, rhs.pData_, rhs.size_); - size_ = rhs.size_; - } - - PreviewImage& PreviewImage::operator=(const PreviewImage& rhs) - { - if (this == &rhs) return *this; - if (rhs.size_ > size_) { - delete[] pData_; - pData_ = new byte[rhs.size_]; - } - properties_ = rhs.properties_; - memcpy(pData_, rhs.pData_, rhs.size_); - size_ = rhs.size_; - return *this; - } - - long PreviewImage::writeFile(const std::string& path) const - { - std::string name = path + extension(); - // Todo: Creating a DataBuf here unnecessarily copies the memory - DataBuf buf(pData_, size_); - return Exiv2::writeFile(buf, name); - } - -#ifdef EXV_UNICODE_PATH - long PreviewImage::writeFile(const std::wstring& wpath) const - { - std::wstring name = wpath + wextension(); - // Todo: Creating a DataBuf here unnecessarily copies the memory - DataBuf buf(pData_, size_); - return Exiv2::writeFile(buf, name); - } - -#endif - DataBuf PreviewImage::copy() const - { - return DataBuf(pData_, size_); - } - - const byte* PreviewImage::pData() const - { - return pData_; - } - - uint32_t PreviewImage::size() const - { - return size_; - } - - std::string PreviewImage::mimeType() const - { - return properties_.mimeType_; - } - - std::string PreviewImage::extension() const - { - return properties_.extension_; - } - -#ifdef EXV_UNICODE_PATH - std::wstring PreviewImage::wextension() const - { - return properties_.wextension_; - } - -#endif - uint32_t PreviewImage::width() const - { - return properties_.width_; - } - - uint32_t PreviewImage::height() const - { - return properties_.height_; - } - - PreviewId PreviewImage::id() const - { - return properties_.id_; - } - - PreviewManager::PreviewManager(const Image& image) - : image_(image) - { - } - - PreviewPropertiesList PreviewManager::getPreviewProperties() const - { - PreviewPropertiesList list; - // go through the loader table and store all successfully created loaders in the list - for (PreviewId id = 0; id < Loader::getNumLoaders(); ++id) { - Loader::AutoPtr loader = Loader::create(id, image_); - if (loader.get() && loader->readDimensions()) { - list.push_back(loader->getProperties()); - } - } - std::sort(list.begin(), list.end(), cmpPreviewProperties); - return list; - } - - PreviewImage PreviewManager::getPreviewImage(const PreviewProperties &properties) const - { - Loader::AutoPtr loader = Loader::create(properties.id_, image_); - DataBuf buf; - if (loader.get()) { - buf = loader->getData(); - } - - return PreviewImage(properties, buf); - } -} // namespace Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/preview.hpp b/platform/win32/msvc/external/exiv2/src/preview.hpp deleted file mode 100644 index 4d231ac4113..00000000000 --- a/platform/win32/msvc/external/exiv2/src/preview.hpp +++ /dev/null @@ -1,202 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file preview.hpp - @brief Classes to access all preview images embedded in an image. - @version $Rev: 2681 $ - @author Vladimir Nadvornik (vn) - nadvornik@suse.cz - @date 18-Sep-08, vn: created - */ -#ifndef PREVIEW_HPP_ -#define PREVIEW_HPP_ - -// ***************************************************************************** -// included header files -#include "types.hpp" -#include "image.hpp" -#include "basicio.hpp" - -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class definitions - - //! Type of preview image. - typedef int PreviewId; - - /*! - @brief Preview image properties. - */ - struct EXIV2API PreviewProperties { - //! Preview image mime type. - std::string mimeType_; - //! Preview image extension. - std::string extension_; -#ifdef EXV_UNICODE_PATH - //! Unicode preview image extension in an std::wstring - std::wstring wextension_; -#endif - //! Preview image size in bytes. - uint32_t size_; - //! Preview image width in pixels or 0 for unknown width. - uint32_t width_; - //! Preview image height in pixels or 0 for unknown height. - uint32_t height_; - //! Identifies type of preview image. - PreviewId id_; - }; - - //! Container type to hold all preview images metadata. - typedef std::vector PreviewPropertiesList; - - /*! - @brief Class that holds preview image properties and data buffer. - */ - class EXIV2API PreviewImage { - friend class PreviewManager; - public: - //! @name Constructors - //@{ - //! Copy constructor - PreviewImage(const PreviewImage& rhs); - //! Destructor. - ~PreviewImage(); - //@} - - //! @name Manipulators - //@{ - //! Assignment operator - PreviewImage& operator=(const PreviewImage& rhs); - //@} - - //! @name Accessors - //@{ - /*! - @brief Return a copy of the preview image data. The caller owns - this copy and %DataBuf ensures that it will be deleted. - */ - DataBuf copy() const; - /*! - @brief Return a pointer to the image data for read-only access. - */ - const byte* pData() const; - /*! - @brief Return the size of the preview image in bytes. - */ - uint32_t size() const; - /*! - @brief Write the thumbnail image to a file. - - A filename extension is appended to \em path according to the image - type of the preview image, so \em path should not include an extension. - The function will overwrite an existing file of the same name. - - @param path File name of the preview image without extension. - @return The number of bytes written. - */ - long writeFile(const std::string& path) const; -#ifdef EXV_UNICODE_PATH - /*! - @brief Like writeFile() but accepts a unicode path in an std::wstring. - @note This function is only available on Windows. - */ - long writeFile(const std::wstring& wpath) const; -#endif - /*! - @brief Return the MIME type of the preview image, usually either - \c "image/tiff" or \c "image/jpeg". - */ - std::string mimeType() const; - /*! - @brief Return the file extension for the format of the preview image - (".tif" or ".jpg"). - */ - std::string extension() const; -#ifdef EXV_UNICODE_PATH - /*! - @brief Like extension() but returns the unicode encoded extension in - an std::wstring. - @note This function is only available on Windows. - */ - std::wstring wextension() const; -#endif - /*! - @brief Return the width of the preview image in pixels. - */ - uint32_t width() const; - /*! - @brief Return the height of the preview image in pixels. - */ - uint32_t height() const; - /*! - @brief Return the preview image type identifier. - */ - PreviewId id() const; - //@} - - private: - //! Private constructor - EXV_DLLLOCAL PreviewImage(const PreviewProperties& properties, DataBuf data); - - PreviewProperties properties_; //!< Preview image properties - byte* pData_; //!< Pointer to the preview image data - uint32_t size_; //!< Size of the preview image data - - }; // class PreviewImage - - /*! - @brief Class for extracting preview images from image metadata. - */ - class EXIV2API PreviewManager { - public: - //! @name Constructors - //@{ - //! Constructor. - PreviewManager(const Image& image); - //@} - - //! @name Accessors - //@{ - /*! - @brief Return the properties of all preview images in a list - sorted by preview width * height, starting with the smallest - preview image. - */ - PreviewPropertiesList getPreviewProperties() const; - /*! - @brief Return the preview image for the given preview properties. - */ - PreviewImage getPreviewImage(const PreviewProperties& properties) const; - //@} - - private: - const Image& image_; - - }; // class PreviewManager -} // namespace Exiv2 - -#endif // #ifndef PREVIEW_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/private.h b/platform/win32/msvc/external/exiv2/src/private.h deleted file mode 100644 index 11078a0e4f7..00000000000 --- a/platform/win32/msvc/external/exiv2/src/private.h +++ /dev/null @@ -1,210 +0,0 @@ -/*! - @file private.h - @brief This file is from the tz distribution at ftp://elsie.nci.nih.gov/pub/ - @version $Rev: 1358 $ -*/ -#ifndef PRIVATE_H - -#define PRIVATE_H - -/* -** This file is in the public domain, so clarified as of -** 1996-06-05 by Arthur David Olson (arthur_david_olson@nih.gov). -*/ - -/* -** This header is for use ONLY with the time conversion code. -** There is no guarantee that it will remain unchanged, -** or that it will remain at all. -** Do NOT copy it to any system include directory. -** Thank you! -*/ - -/* -** ID -*/ - -#ifndef lint -#ifndef NOID -static char privatehid[] = "@(#)private.h 7.53"; -#endif /* !defined NOID */ -#endif /* !defined lint */ - -/* ahu: moved required preprocessor symbols to config.h */ - -/* ahu: disable warnings */ -#ifdef _MSC_VER -// disable warning 'uses old-style declarator' C4131 -#pragma warning (disable: 4131) -#endif - -/* -** Nested includes -*/ - -#include "sys/types.h" /* for time_t */ -#include "stdio.h" -#include "errno.h" -#include "string.h" -#include "limits.h" /* for CHAR_BIT */ -#include "time.h" -#include "stdlib.h" - -/* ahu: added io.h for MSVC */ -#ifdef _MSC_VER -# include "io.h" -#endif - -/* ahu: deleted include libintl.h */ - -/* ahu: deleted include sys/wait.h and WIFEXITED, WEXITSTATUS macros */ - -#if EXV_HAVE_UNISTD_H - 0 -#include "unistd.h" /* for F_OK and R_OK */ -#endif /* EXV_HAVE_UNISTD_H - 0 */ - -#if !(EXV_HAVE_UNISTD_H - 0) -#ifndef F_OK -#define F_OK 0 -#endif /* !defined F_OK */ -#ifndef R_OK -#define R_OK 4 -#endif /* !defined R_OK */ -#endif /* !(EXV_HAVE_UNISTD_H - 0) */ - -/* Unlike 's isdigit, this also works if c < 0 | c > UCHAR_MAX. */ -#define is_digit(c) ((unsigned)(c) - '0' <= 9) - -/* -** Workarounds for compilers/systems. -*/ - -/* -** SunOS 4.1.1 cc lacks prototypes. -*/ - -#ifndef P -#ifdef __STDC__ -#define P(x) x -#endif /* defined __STDC__ */ -#ifndef __STDC__ -#define P(x) () -#endif /* !defined __STDC__ */ -#endif /* !defined P */ - -/* -** SunOS 4.1.1 headers lack EXIT_SUCCESS. -*/ - -#ifndef EXIT_SUCCESS -#define EXIT_SUCCESS 0 -#endif /* !defined EXIT_SUCCESS */ - -/* -** SunOS 4.1.1 headers lack EXIT_FAILURE. -*/ - -#ifndef EXIT_FAILURE -#define EXIT_FAILURE 1 -#endif /* !defined EXIT_FAILURE */ - -/* -** SunOS 4.1.1 headers lack FILENAME_MAX. -*/ - -#ifndef FILENAME_MAX - -#ifndef MAXPATHLEN -#ifdef unix -#include "sys/param.h" -#endif /* defined unix */ -#endif /* !defined MAXPATHLEN */ - -#ifdef MAXPATHLEN -#define FILENAME_MAX MAXPATHLEN -#endif /* defined MAXPATHLEN */ -#ifndef MAXPATHLEN -#define FILENAME_MAX 1024 /* Pure guesswork */ -#endif /* !defined MAXPATHLEN */ - -#endif /* !defined FILENAME_MAX */ - -/* ahu: deleted unlink declaration and remove define */ - -/* ahu: deleted errno declaration */ - -/* ahu: deleted private function declarations */ - -/* -** Finally, some convenience items. -*/ - -#ifndef TRUE -#define TRUE 1 -#endif /* !defined TRUE */ - -#ifndef FALSE -#define FALSE 0 -#endif /* !defined FALSE */ - -#ifndef TYPE_BIT -#define TYPE_BIT(type) (sizeof (type) * CHAR_BIT) -#endif /* !defined TYPE_BIT */ - -#ifndef TYPE_SIGNED -#define TYPE_SIGNED(type) (((type) -1) < 0) -#endif /* !defined TYPE_SIGNED */ - -#ifndef INT_STRLEN_MAXIMUM -/* -** 302 / 1000 is log10(2.0) rounded up. -** Subtract one for the sign bit if the type is signed; -** add one for integer division truncation; -** add one more for a minus sign if the type is signed. -*/ -#define INT_STRLEN_MAXIMUM(type) \ - ((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + 1 + TYPE_SIGNED(type)) -#endif /* !defined INT_STRLEN_MAXIMUM */ - -/* -** INITIALIZE(x) -*/ - -#ifndef GNUC_or_lint -#ifdef lint -#define GNUC_or_lint -#endif /* defined lint */ -#ifndef lint -#ifdef __GNUC__ -#define GNUC_or_lint -#endif /* defined __GNUC__ */ -#endif /* !defined lint */ -#endif /* !defined GNUC_or_lint */ - -#ifndef INITIALIZE -#ifdef GNUC_or_lint -#define INITIALIZE(x) ((x) = 0) -#endif /* defined GNUC_or_lint */ -#ifndef GNUC_or_lint -#define INITIALIZE(x) -#endif /* !defined GNUC_or_lint */ -#endif /* !defined INITIALIZE */ - -/* ahu: deleted definition of _(msgid) macro */ - -#ifndef TZ_DOMAIN -#define TZ_DOMAIN "tz" -#endif /* !defined TZ_DOMAIN */ - -#if HAVE_INCOMPATIBLE_CTIME_R -#undef asctime_r -#undef ctime_r -char *asctime_r P((struct tm const *, char *)); -char *ctime_r P((time_t const *, char *)); -#endif /* HAVE_INCOMPATIBLE_CTIME_R */ - -/* -** UNIX was a registered trademark of The Open Group in 2003. -*/ - -#endif /* !defined PRIVATE_H */ diff --git a/platform/win32/msvc/external/exiv2/src/properties.cpp b/platform/win32/msvc/external/exiv2/src/properties.cpp deleted file mode 100644 index 5f4190cf642..00000000000 --- a/platform/win32/msvc/external/exiv2/src/properties.cpp +++ /dev/null @@ -1,1408 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: properties.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - Gilles Caulier (cgilles) - History: 13-July-07, ahu: created - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: properties.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#include "properties.hpp" -#include "tags_int.hpp" -#include "error.hpp" -#include "types.hpp" -#include "value.hpp" -#include "metadatum.hpp" -#include "i18n.h" // NLS support. -#include "xmp.hpp" - -#include -#include -#include -#include -#include -#include - -// ***************************************************************************** -namespace { - - //! Struct used in the lookup table for pretty print functions - struct XmpPrintInfo { - //! Comparison operator for key - bool operator==(const std::string& key) const - { - return 0 == strcmp(key_, key.c_str()); - } - - const char* key_; //!< XMP key - Exiv2::PrintFct printFct_; //!< Print function - }; - -} - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - using namespace Internal; - - //! @cond IGNORE - extern const XmpPropertyInfo xmpDcInfo[]; - extern const XmpPropertyInfo xmpDigikamInfo[]; - extern const XmpPropertyInfo xmpKipiInfo[]; - extern const XmpPropertyInfo xmpXmpInfo[]; - extern const XmpPropertyInfo xmpXmpRightsInfo[]; - extern const XmpPropertyInfo xmpXmpMMInfo[]; - extern const XmpPropertyInfo xmpXmpBJInfo[]; - extern const XmpPropertyInfo xmpXmpTPgInfo[]; - extern const XmpPropertyInfo xmpXmpDMInfo[]; - extern const XmpPropertyInfo xmpMicrosoftInfo[]; - extern const XmpPropertyInfo xmpPdfInfo[]; - extern const XmpPropertyInfo xmpPhotoshopInfo[]; - extern const XmpPropertyInfo xmpCrsInfo[]; - extern const XmpPropertyInfo xmpTiffInfo[]; - extern const XmpPropertyInfo xmpExifInfo[]; - extern const XmpPropertyInfo xmpAuxInfo[]; - extern const XmpPropertyInfo xmpIptcInfo[]; - extern const XmpPropertyInfo xmpIptcExtInfo[]; - extern const XmpPropertyInfo xmpPlusInfo[]; - extern const XmpPropertyInfo xmpMediaProInfo[]; - extern const XmpPropertyInfo xmpExpressionMediaInfo[]; - extern const XmpPropertyInfo xmpMicrosoftPhotoInfo[]; - extern const XmpPropertyInfo xmpMicrosoftPhotoRegionInfoInfo[]; - extern const XmpPropertyInfo xmpMicrosoftPhotoRegionInfo[]; - extern const XmpPropertyInfo xmpMWGRegionsInfo[]; - - extern const XmpNsInfo xmpNsInfo[] = { - // Schemas - NOTE: Schemas which the XMP-SDK doesn't know must be registered in XmpParser::initialize - Todo: Automate this - { "http://purl.org/dc/elements/1.1/", "dc", xmpDcInfo, N_("Dublin Core schema") }, - { "http://www.digikam.org/ns/1.0/", "digiKam", xmpDigikamInfo, N_("digiKam Photo Management schema") }, - { "http://www.digikam.org/ns/kipi/1.0/", "kipi", xmpKipiInfo, N_("KDE Image Program Interface schema") }, - { "http://ns.adobe.com/xap/1.0/", "xmp", xmpXmpInfo, N_("XMP Basic schema") }, - { "http://ns.adobe.com/xap/1.0/rights/", "xmpRights", xmpXmpRightsInfo, N_("XMP Rights Management schema") }, - { "http://ns.adobe.com/xap/1.0/mm/", "xmpMM", xmpXmpMMInfo, N_("XMP Media Management schema") }, - { "http://ns.adobe.com/xap/1.0/bj/", "xmpBJ", xmpXmpBJInfo, N_("XMP Basic Job Ticket schema") }, - { "http://ns.adobe.com/xap/1.0/t/pg/", "xmpTPg", xmpXmpTPgInfo, N_("XMP Paged-Text schema") }, - { "http://ns.adobe.com/xmp/1.0/DynamicMedia/", "xmpDM", xmpXmpDMInfo, N_("XMP Dynamic Media schema") }, - { "http://ns.microsoft.com/photo/1.0/", "MicrosoftPhoto", xmpMicrosoftInfo, N_("Microsoft Photo schema") }, - { "http://ns.adobe.com/pdf/1.3/", "pdf", xmpPdfInfo, N_("Adobe PDF schema") }, - { "http://ns.adobe.com/photoshop/1.0/", "photoshop", xmpPhotoshopInfo, N_("Adobe photoshop schema") }, - { "http://ns.adobe.com/camera-raw-settings/1.0/", "crs", xmpCrsInfo, N_("Camera Raw schema") }, - { "http://ns.adobe.com/tiff/1.0/", "tiff", xmpTiffInfo, N_("Exif Schema for TIFF Properties") }, - { "http://ns.adobe.com/exif/1.0/", "exif", xmpExifInfo, N_("Exif schema for Exif-specific Properties") }, - { "http://ns.adobe.com/exif/1.0/aux/", "aux", xmpAuxInfo, N_("Exif schema for Additional Exif Properties")}, - { "http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/", "iptc", xmpIptcInfo, N_("IPTC Core schema") }, // NOTE: 'Iptc4xmpCore' is just too long, so make 'iptc' - { "http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/", "Iptc4xmpCore", xmpIptcInfo, N_("IPTC Core schema") }, // the default prefix. But provide the official one too. - { "http://iptc.org/std/Iptc4xmpExt/2008-02-29/", "iptcExt", xmpIptcExtInfo, N_("IPTC Extension schema") }, // NOTE: It really should be 'Iptc4xmpExt' but following - { "http://iptc.org/std/Iptc4xmpExt/2008-02-29/", "Iptc4xmpExt", xmpIptcExtInfo, N_("IPTC Extension schema") }, // example above, 'iptcExt' is the default, Iptc4xmpExt works too. - { "http://ns.useplus.org/ldf/xmp/1.0/", "plus", xmpPlusInfo, N_("PLUS License Data Format schema") }, - { "http://ns.iview-multimedia.com/mediapro/1.0/", "mediapro", xmpMediaProInfo, N_("iView Media Pro schema") }, - { "http://ns.microsoft.com/expressionmedia/1.0/", "expressionmedia",xmpExpressionMediaInfo, N_("Expression Media schema") }, - { "http://ns.microsoft.com/photo/1.2/", "MP", xmpMicrosoftPhotoInfo, N_("Microsoft Photo 1.2 schema") }, - { "http://ns.microsoft.com/photo/1.2/t/RegionInfo#", "MPRI", xmpMicrosoftPhotoRegionInfoInfo, N_("Microsoft Photo RegionInfo schema")}, - { "http://ns.microsoft.com/photo/1.2/t/Region#", "MPReg", xmpMicrosoftPhotoRegionInfo, N_("Microsoft Photo Region schema") }, - { "http://www.metadataworkinggroup.com/schemas/regions/", "mwg-rs", xmpMWGRegionsInfo,N_("Metadata Working Group Regions schema") }, - - // Structures - { "http://ns.adobe.com/xap/1.0/g/", "xapG", 0, N_("Colorant structure") }, - { "http://ns.adobe.com/xap/1.0/sType/Dimensions#", "stDim", 0, N_("Dimensions structure") }, - { "http://ns.adobe.com/xap/1.0/sType/Font#", "stFnt", 0, N_("Font structure") }, - { "http://ns.adobe.com/xap/1.0/g/img/", "xapGImg", 0, N_("Thumbnail structure") }, - { "http://ns.adobe.com/xap/1.0/sType/ResourceEvent#", "stEvt", 0, N_("Resource Event structure") }, - { "http://ns.adobe.com/xap/1.0/sType/ResourceRef#", "stRef", 0, N_("ResourceRef structure") }, - { "http://ns.adobe.com/xap/1.0/sType/Version#", "stVer", 0, N_("Version structure") }, - { "http://ns.adobe.com/xap/1.0/sType/Job#", "stJob", 0, N_("Basic Job/Workflow structure") }, - { "http://ns.adobe.com/xmp/sType/Area#", "stArea", 0, N_("Area structure") }, - - // Qualifiers - { "http://ns.adobe.com/xmp/Identifier/qual/1.0/", "xmpidq", 0, N_("Qualifier for xmp:Identifier") } - }; - - extern const XmpPropertyInfo xmpDcInfo[] = { - { "contributor", N_("Contributor"), "bag ProperName", xmpBag, xmpExternal, N_("Contributors to the resource (other than the authors).") }, - { "coverage", N_("Coverage"), "Text", xmpText, xmpExternal, N_("The spatial or temporal topic of the resource, the spatial applicability of the " - "resource, or the jurisdiction under which the resource is relevant.") }, - { "creator", N_("Creator"), "seq ProperName", xmpSeq, xmpExternal, N_("The authors of the resource (listed in order of precedence, if significant).") }, - { "date", N_("Date"), "seq Date", xmpSeq, xmpExternal, N_("Date(s) that something interesting happened to the resource.") }, - { "description", N_("Description"), "Lang Alt", langAlt, xmpExternal, N_("A textual description of the content of the resource. Multiple values may be " - "present for different languages.") }, - { "format", N_("Format"), "MIMEType", xmpText, xmpInternal, N_("The file format used when saving the resource. Tools and applications should set " - "this property to the save format of the data. It may include appropriate qualifiers.") }, - { "identifier", N_("Identifier"), "Text", xmpText, xmpExternal, N_("Unique identifier of the resource. Recommended best practice is to identify the " - "resource by means of a string conforming to a formal identification system.") }, - { "language", N_("Language"), "bag Locale", xmpBag, xmpInternal, N_("An unordered array specifying the languages used in the resource.") }, - { "publisher", N_("Publisher"), "bag ProperName", xmpBag, xmpExternal, N_("An entity responsible for making the resource available. Examples of a Publisher " - "include a person, an organization, or a service. Typically, the name of a Publisher " - "should be used to indicate the entity.") }, - { "relation", N_("Relation"), "bag Text", xmpBag, xmpInternal, N_("Relationships to other documents. Recommended best practice is to identify the " - "related resource by means of a string conforming to a formal identification system.") }, - { "rights", N_("Rights"), "Lang Alt", langAlt, xmpExternal, N_("Informal rights statement, selected by language. Typically, rights information " - "includes a statement about various property rights associated with the resource, " - "including intellectual property rights.") }, - { "source", N_("Source"), "Text", xmpText, xmpExternal, N_("Unique identifier of the work from which this resource was derived.") }, - { "subject", N_("Subject"), "bag Text", xmpBag, xmpExternal, N_("An unordered array of descriptive phrases or keywords that specify the topic of the " - "content of the resource.") }, - { "title", N_("Title"), "Lang Alt", langAlt, xmpExternal, N_("The title of the document, or the name given to the resource. Typically, it will be " - "a name by which the resource is formally known.") }, - { "type", N_("Type"), "bag open Choice", xmpBag, xmpExternal, N_("A document type; for example, novel, poem, or working paper.") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - extern const XmpPropertyInfo xmpDigikamInfo[] = { - { "TagsList", N_("Tags List"), "seq Text", xmpSeq, xmpExternal, N_("The list of complete tags path as string. The path hierarchy is separated by '/' character (ex.: \"City/Paris/Monument/Eiffel Tower\".") }, - { "CaptionsAuthorNames", N_("Captions Author Names"), "Lang Alt", langAlt, xmpExternal, N_("The list of all captions author names for each language alternative captions set in standard XMP tags.") }, - { "CaptionsDateTimeStamps", N_("Captions Date Time Stamps"), "Lang Alt", langAlt, xmpExternal, N_("The list of all captions date time stamps for each language alternative captions set in standard XMP tags.") }, - { "ImageHistory", N_("Image History"), "Text", xmpText, xmpExternal, N_("An XML based content to list all action processed on this image with image editor (as crop, rotate, color corrections, adjustements, etc.).") }, - { "LensCorrectionSettings", N_("Lens Correction Settings"), "Text", xmpText, xmpExternal, N_("The list of Lens Correction tools settings used to fix lens distorsion. This include Batch Queue Manager and Image editor tools based on LensFun library.") }, - { "ColorLabel", N_("Color Label"), "Text", xmpText, xmpExternal, N_("The color label assigned to this item. Possible values are \"0\": no label; \"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": Magenta; \"7\": Gray; \"8\": Black; \"9\": White.") }, - { "PickLabel", N_("Pick Label"), "Text", xmpText, xmpExternal, N_("The pick label assigned to this item. Possible values are \"0\": no label; \"1\": item rejected; \"2\": item in pending validation; \"3\": item accepted.") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - extern const XmpPropertyInfo xmpKipiInfo[] = { - { "EnfuseInputFiles", N_("Enfuse Input Files"), "Text", xmpText, xmpExternal, N_("The list of files processed with Enfuse program through ExpoBlending tool.") }, - { "EnfuseSettings", N_("Enfuse Settings"), "Text", xmpText, xmpExternal, N_("The list of Enfuse settings used to blend image stack with ExpoBlending tool.") }, - { "picasawebGPhotoId", N_("PicasaWeb Item ID"), "Text", xmpText, xmpExternal, N_("Item ID from PicasaWeb web service.") }, - { "yandexGPhotoId", N_("Yandex Fotki Item ID"), "Text", xmpText, xmpExternal, N_("Item ID from Yandex Fotki web service.") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - extern const XmpPropertyInfo xmpXmpInfo[] = { - { "Advisory", N_("Advisory"), "bag XPath", xmpBag, xmpExternal, N_("An unordered array specifying properties that were edited outside the authoring " - "application. Each item should contain a single namespace and XPath separated by " - "one ASCII space (U+0020).") }, - { "BaseURL", N_("Base URL"), "URL", xmpText, xmpInternal, N_("The base URL for relative URLs in the document content. If this document contains " - "Internet links, and those links are relative, they are relative to this base URL. " - "This property provides a standard way for embedded relative URLs to be interpreted " - "by tools. Web authoring tools should set the value based on their notion of where " - "URLs will be interpreted.") }, - { "CreateDate", N_("Create Date"), "Date", xmpText, xmpInternal, N_("The date and time the resource was originally created.") }, - { "CreatorTool", N_("Creator Tool"), "AgentName", xmpText, xmpInternal, N_("The name of the first known tool used to create the resource. If history is " - "present in the metadata, this value should be equivalent to that of " - "xmpMM:History's softwareAgent property.") }, - { "Identifier", N_("Identifier"), "bag Text", xmpBag, xmpExternal, N_("An unordered array of text strings that unambiguously identify the resource within " - "a given context. An array item may be qualified with xmpidq:Scheme to denote the " - "formal identification system to which that identifier conforms. Note: The " - "dc:identifier property is not used because it lacks a defined scheme qualifier and " - "has been defined in the XMP Specification as a simple (single-valued) property.") }, - { "Label", N_("Label"), "Text", xmpText, xmpExternal, N_("A word or short phrase that identifies a document as a member of a user-defined " - "collection. Used to organize documents in a file browser.") }, - { "MetadataDate", N_("Metadata Date"), "Date", xmpText, xmpInternal, N_("The date and time that any metadata for this resource was last changed. It should " - "be the same as or more recent than xmp:ModifyDate.") }, - { "ModifyDate", N_("Modify Date"), "Date", xmpText, xmpInternal, N_("The date and time the resource was last modified. Note: The value of this property " - "is not necessarily the same as the file's system modification date because it is " - "set before the file is saved.") }, - { "Nickname", N_("Nickname"), "Text", xmpText, xmpExternal, N_("A short informal name for the resource.") }, - { "Rating", N_("Rating"), "Closed Choice of Integer", xmpText, xmpExternal, N_("A number that indicates a document's status relative to other documents, " - "used to organize documents in a file browser. Values are user-defined within an " - "application-defined range.") }, - { "Thumbnails", N_("Thumbnails"), "alt Thumbnail", xmpText, xmpInternal, N_("An alternative array of thumbnail images for a file, which can differ in " - "characteristics such as size or image encoding.") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - extern const XmpPropertyInfo xmpXmpRightsInfo[] = { - { "Certificate", N_("Certificate"), "URL", xmpText, xmpExternal, N_("Online rights management certificate.") }, - { "Marked", N_("Marked"), "Boolean", xmpText, xmpExternal, N_("Indicates that this is a rights-managed resource.") }, - { "Owner", N_("Owner"), "bag ProperName", xmpBag, xmpExternal, N_("An unordered array specifying the legal owner(s) of a resource.") }, - { "UsageTerms", N_("Usage Terms"), "Lang Alt", langAlt, xmpExternal, N_("Text instructions on how a resource can be legally used.") }, - { "WebStatement", N_("Web Statement"), "URL", xmpText, xmpExternal, N_("The location of a web page describing the owner and/or rights statement for this resource.") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - extern const XmpPropertyInfo xmpXmpMMInfo[] = { - { "DerivedFrom", N_("Derived From"), "ResourceRef", xmpText, xmpInternal, N_("A reference to the original document from which this one is derived. It is a " - "minimal reference; missing components can be assumed to be unchanged. For example, " - "a new version might only need to specify the instance ID and version number of the " - "previous version, or a rendition might only need to specify the instance ID and " - "rendition class of the original.") }, - { "DocumentID", N_("Document ID"), "URI", xmpText, xmpInternal, N_("The common identifier for all versions and renditions of a document. It should be " - "based on a UUID; see Document and Instance IDs below.") }, - { "History", N_("History"), "seq ResourceEvent", xmpText, xmpInternal, N_("An ordered array of high-level user actions that resulted in this resource. It is " - "intended to give human readers a general indication of the steps taken to make the " - "changes from the previous version to this one. The list should be at an abstract " - "level; it is not intended to be an exhaustive keystroke or other detailed history.") }, - { "InstanceID", N_("Instance ID"), "URI", xmpText, xmpInternal, N_("An identifier for a specific incarnation of a document, updated each time a file " - "is saved. It should be based on a UUID; see Document and Instance IDs below.") }, - { "ManagedFrom", N_("Managed From"), "ResourceRef", xmpText, xmpInternal, N_("A reference to the document as it was prior to becoming managed. It is set when a " - "managed document is introduced to an asset management system that does not " - "currently own it. It may or may not include references to different management systems.") }, - { "Manager", N_("Manager"), "AgentName", xmpText, xmpInternal, N_("The name of the asset management system that manages this resource. Along with " - "xmpMM: ManagerVariant, it tells applications which asset management system to " - "contact concerning this document.") }, - { "ManageTo", N_("Manage To"), "URI", xmpText, xmpInternal, N_("A URI identifying the managed resource to the asset management system; the presence " - "of this property is the formal indication that this resource is managed. The form " - "and content of this URI is private to the asset management system.") }, - { "ManageUI", N_("Manage UI"), "URI", xmpText, xmpInternal, N_("A URI that can be used to access information about the managed resource through a " - "web browser. It might require a custom browser plug-in.") }, - { "ManagerVariant", N_("Manager Variant"), "Text", xmpText, xmpInternal, N_("Specifies a particular variant of the asset management system. The format of this " - "property is private to the specific asset management system.") }, - { "RenditionClass", N_("Rendition Class"), "RenditionClass", xmpText, xmpInternal, N_("The rendition class name for this resource. This property should be absent or set " - "to default for a document version that is not a derived rendition.") }, - { "RenditionParams", N_("Rendition Params"), "Text", xmpText, xmpInternal, N_("Can be used to provide additional rendition parameters that are too complex or " - "verbose to encode in xmpMM: RenditionClass.") }, - { "VersionID", N_("Version ID"), "Text", xmpText, xmpInternal, N_("The document version identifier for this resource. Each version of a document gets " - "a new identifier, usually simply by incrementing integers 1, 2, 3 . . . and so on. " - "Media management systems can have other conventions or support branching which " - "requires a more complex scheme.") }, - { "Versions", N_("Versions"), "seq Version", xmpText, xmpInternal, N_("The version history associated with this resource. Entry [1] is the oldest known " - "version for this document, entry [last()] is the most recent version. Typically, a " - "media management system would fill in the version information in the metadata on " - "check-in. It is not guaranteed that a complete history versions from the first to " - "this one will be present in the xmpMM:Versions property. Interior version information " - "can be compressed or eliminated and the version history can be truncated at some point.") }, - { "LastURL", N_("Last URL"), "URL", xmpText, xmpInternal, N_("Deprecated for privacy protection.") }, - { "RenditionOf", N_("Rendition Of"), "ResourceRef", xmpText, xmpInternal, N_("Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of which this is " - "a rendition.") }, - { "SaveID", N_("Save ID"), "Integer", xmpText, xmpInternal, N_("Deprecated. Previously used only to support the xmpMM:LastURL property.") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - extern const XmpPropertyInfo xmpXmpBJInfo[] = { - { "JobRef", N_("Job Reference"), "bag Job", xmpText, xmpExternal, N_("References an external job management file for a job process in which the document is being used. Use of job " - "names is under user control. Typical use would be to identify all documents that are part of a particular job or contract. " - "There are multiple values because there can be more than one job using a particular document at any time, and it can " - "also be useful to keep historical information about what jobs a document was part of previously.") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - extern const XmpPropertyInfo xmpXmpTPgInfo[] = { - { "MaxPageSize", N_("Maximum Page Size"), "Dimensions", xmpText, xmpInternal, N_("The size of the largest page in the document (including any in contained documents).") }, - { "NPages", N_("Number of Pages"), "Integer", xmpText, xmpInternal, N_("The number of pages in the document (including any in contained documents).") }, - { "Fonts", N_("Fonts"), "bag Font", xmpText, xmpInternal, N_("An unordered array of fonts that are used in the document (including any in contained documents).") }, - { "Colorants", N_("Colorants"), "seq Colorant", xmpText, xmpInternal, N_("An ordered array of colorants (swatches) that are used in the document (including any in contained documents).") }, - { "PlateNames", N_("Plate Names"), "seq Text", xmpSeq, xmpInternal, N_("An ordered array of plate names that are needed to print the document (including any in contained documents).") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - extern const XmpPropertyInfo xmpXmpDMInfo[] = { - { "projectRef", N_("Project Reference"), "ProjectLink", xmpText, xmpInternal, N_("A reference to the project that created this file.") }, - { "videoFrameRate", N_("Video Frame Rate"), "open Choice of Text", xmpText, xmpInternal, N_("The video frame rate. One of: 24, NTSC, PAL.") }, - { "videoFrameSize", N_("Video Frame Size"), "Dimensions", xmpText, xmpInternal, N_("The frame size. For example: w:720, h: 480, unit:pixels") }, - { "videoPixelAspectRatio", N_("Video Pixel Aspect Ratio"), "Rational", xmpText, xmpInternal, N_("The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9") }, - { "videoPixelDepth", N_("Video Pixel Depth"), "closed Choice of Text", xmpText, xmpInternal, N_("The size in bits of each color component of a pixel. Standard Windows 32-bit " - "pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float.") }, - { "videoColorSpace", N_("Video Color Space"), "closed Choice of Text", xmpText, xmpInternal, N_("The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " - "CCIR-709 (used for HD).") }, - { "videoAlphaMode", N_("Video Alpha Mode"), "closed Choice of Text", xmpText, xmpExternal, N_("The alpha mode. One of: straight, pre-multiplied.") }, - { "videoAlphaPremultipleColor", N_("Video Alpha Premultiple Color"), "Colorant", xmpText, xmpExternal, N_("A color in CMYK or RGB to be used as the pre-multiple color when " - "alpha mode is pre-multiplied.") }, - { "videoAlphaUnityIsTransparent", N_("Video Alpha Unity Is Transparent"), "Boolean", xmpText, xmpInternal, N_("When true, unity is clear, when false, it is opaque.") }, - { "videoCompressor", N_("Video Compressor"), "Text", xmpText, xmpInternal, N_("Video compression used. For example, jpeg.") }, - { "videoFieldOrder", N_("Video Field Order"), "closed Choice of Text", xmpText, xmpInternal, N_("The field order for video. One of: Upper, Lower, Progressive.") }, - { "pullDown", N_("Pull Down"), "closed Choice of Text", xmpText, xmpInternal, N_("The sampling phase of film to be converted to video (pull-down). One of: " - "WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, WWWSS_24p, WWSSW_24p.") }, - { "audioSampleRate", N_("Audio Sample Rate"), "Integer", xmpText, xmpInternal, N_("The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000.") }, - { "audioSampleType", N_("Audio Sample Type"), "closed Choice of Text", xmpText, xmpInternal, N_("The audio sample type. One of: 8Int, 16Int, 32Int, 32Float.") }, - { "audioChannelType", N_("Audio Channel Type"), "closed Choice of Text", xmpText, xmpInternal, N_("The audio channel type. One of: Mono, Stereo, 5.1, 7.1.") }, - { "audioCompressor", N_("Audio Compressor"), "Text", xmpText, xmpInternal, N_("The audio compression used. For example, MP3.") }, - { "speakerPlacement", N_("Speaker Placement"), "Text", xmpText, xmpExternal, N_("A description of the speaker angles from center front in degrees. For example: " - "\"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = -110, Right Surround = 110\"") }, - { "fileDataRate", N_("File Data Rate"), "Rational", xmpText, xmpInternal, N_("The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/sec") }, - { "tapeName", N_("Tape Name"), "Text", xmpText, xmpExternal, N_("The name of the tape from which the clip was captured, as set during the capture process.") }, - { "altTapeName", N_("Alternative Tape Name"), "Text", xmpText, xmpExternal, N_("An alternative tape name, set via the project window or timecode dialog in Premiere. " - "If an alternative name has been set and has not been reverted, that name is displayed.") }, - { "startTimecode", N_("Start Time Code"), "Timecode", xmpText, xmpInternal, N_("The timecode of the first frame of video in the file, as obtained from the device control.") }, - { "altTimecode", N_("Alternative Time code"), "Timecode", xmpText, xmpExternal, N_("A timecode set by the user. When specified, it is used instead of the startTimecode.") }, - { "duration", N_("Duration"), "Time", xmpText, xmpInternal, N_("The duration of the media file.") }, - { "scene", N_("Scene"), "Text", xmpText, xmpExternal, N_("The name of the scene.") }, - { "shotName", N_("Shot Name"), "Text", xmpText, xmpExternal, N_("The name of the shot or take.") }, - { "shotDate", N_("Shot Date"), "Date", xmpText, xmpExternal, N_("The date and time when the video was shot.") }, - { "shotLocation", N_("Shot Location"), "Text", xmpText, xmpExternal, N_("The name of the location where the video was shot. For example: \"Oktoberfest, Munich Germany\" " - "For more accurate positioning, use the EXIF GPS values.") }, - { "logComment", N_("Log Comment"), "Text", xmpText, xmpExternal, N_("User's log comments.") }, - { "markers", N_("Markers"), "seq Marker", xmpText, xmpInternal, N_("An ordered list of markers") }, - { "contributedMedia", N_("Contributed Media"), "bag Media", xmpText, xmpInternal, N_("An unordered list of all media used to create this media.") }, - { "absPeakAudioFilePath", N_("Absolute Peak Audio File Path"), "URI", xmpText, xmpInternal, N_("The absolute path to the file's peak audio file. If empty, no peak file exists.") }, - { "relativePeakAudioFilePath", N_("Relative Peak Audio File Path"), "URI", xmpText, xmpInternal, N_("The relative path to the file's peak audio file. If empty, no peak file exists.") }, - { "videoModDate", N_("Video Modified Date"), "Date", xmpText, xmpInternal, N_("The date and time when the video was last modified.") }, - { "audioModDate", N_("Audio Modified Date"), "Date", xmpText, xmpInternal, N_("The date and time when the audio was last modified.") }, - { "metadataModDate", N_("Metadata Modified Date"), "Date", xmpText, xmpInternal, N_("The date and time when the metadata was last modified.") }, - { "artist", N_("Artist"), "Text", xmpText, xmpExternal, N_("The name of the artist or artists.") }, - { "album", N_("Album"), "Text", xmpText, xmpExternal, N_("The name of the album.") }, - { "trackNumber", N_("Track Number"), "Integer", xmpText, xmpExternal, N_("A numeric value indicating the order of the audio file within its original recording.") }, - { "genre", N_("Genre"), "Text", xmpText, xmpExternal, N_("The name of the genre.") }, - { "copyright", N_("Copyright"), "Text", xmpText, xmpExternal, N_("The copyright information.") }, - { "releaseDate", N_("Release Date"), "Date", xmpText, xmpExternal, N_("The date the title was released.") }, - { "composer", N_("Composer"), "Text", xmpText, xmpExternal, N_("The composer's name.") }, - { "engineer", N_("Engineer"), "Text", xmpText, xmpExternal, N_("The engineer's name.") }, - { "tempo", N_("Tempo"), "Real", xmpText, xmpInternal, N_("The audio's tempo.") }, - { "instrument", N_("Instrument"), "Text", xmpText, xmpExternal, N_("The musical instrument.") }, - { "introTime", N_("Intro Time"), "Time", xmpText, xmpInternal, N_("The duration of lead time for queuing music.") }, - { "outCue", N_("Out Cue"), "Time", xmpText, xmpInternal, N_("The time at which to fade out.") }, - { "relativeTimestamp", N_("Relative Timestamp"), "Time", xmpText, xmpInternal, N_("The start time of the media inside the audio project.") }, - { "loop", N_("Loop"), "Boolean", xmpText, xmpInternal, N_("When true, the clip can be looped seemlessly.") }, - { "numberOfBeats", N_("Number Of Beats"), "Real", xmpText, xmpInternal, N_("The number of beats.") }, - { "key", N_("Key"), "closed Choice of Text", xmpText, xmpInternal, N_("The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B.") }, - { "stretchMode", N_("Stretch Mode"), "closed Choice of Text", xmpText, xmpInternal, N_("The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat Splice, Hybrid.") }, - { "timeScaleParams", N_("Time Scale Parameters"), "timeScaleStretch", xmpText, xmpInternal, N_("Additional parameters for Time-Scale stretch mode.") }, - { "resampleParams", N_("Resample Parameters"), "resampleStretch", xmpText, xmpInternal, N_("Additional parameters for Resample stretch mode.") }, - { "beatSpliceParams", N_("Beat Splice Parameters"), "beatSpliceStretch", xmpText, xmpInternal, N_("Additional parameters for Beat Splice stretch mode.") }, - { "timeSignature", N_("Time Signature"), "closed Choice of Text", xmpText, xmpInternal, N_("The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, 12/8, other.") }, - { "scaleType", N_("Scale Type"), "closed Choice of Text", xmpText, xmpInternal, N_("The musical scale used in the music. One of: Major, Minor, Both, Neither. " - "Neither is most often used for instruments with no associated scale, such as drums.") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - extern const XmpPropertyInfo xmpMicrosoftInfo[] = { - { "CameraSerialNumber", N_("Camera Serial Number"), "Text", xmpText, xmpExternal, N_("Camera Serial Number.") }, - { "DateAcquired", N_("Date Acquired"), "Date", xmpText, xmpExternal, N_("Date Acquired.") }, - { "FlashManufacturer", N_("Flash Manufacturer"), "Text", xmpText, xmpExternal, N_("Flash Manufacturer.") }, - { "FlashModel", N_("Flash Model"), "Text", xmpText, xmpExternal, N_("Flash Model.") }, - { "LastKeywordIPTC", N_("Last Keyword IPTC"), "bag Text", xmpBag, xmpExternal, N_("Last Keyword IPTC.") }, - { "LastKeywordXMP", N_("Last Keyword XMP"), "bag Text", xmpBag, xmpExternal, N_("Last Keyword XMP.") }, - { "LensManufacturer", N_("Lens Manufacturer"), "Text", xmpText, xmpExternal, N_("Lens Manufacturer.") }, - { "LensModel", N_("Lens Model"), "Text", xmpText, xmpExternal, N_("Lens Model.") }, - { "Rating", N_("Rating Percent"), "Text", xmpText, xmpExternal, N_("Rating Percent.") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - extern const XmpPropertyInfo xmpPdfInfo[] = { - { "Keywords", N_("Keywords"), "Text", xmpText, xmpExternal, N_("Keywords.") }, - { "PDFVersion", N_("PDF Version"), "Text", xmpText, xmpInternal, N_("The PDF file version (for example: 1.0, 1.3, and so on).") }, - { "Producer", N_("Producer"), "AgentName", xmpText, xmpInternal, N_("The name of the tool that created the PDF document.") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - extern const XmpPropertyInfo xmpPhotoshopInfo[] = { - { "AuthorsPosition", N_("Authors Position"), "Text", xmpText, xmpExternal, N_("By-line title.") }, - { "CaptionWriter", N_("Caption Writer"), "ProperName", xmpText, xmpExternal, N_("Writer/editor.") }, - { "Category", N_("Category"), "Text", xmpText, xmpExternal, N_("Category. Limited to 3 7-bit ASCII characters.") }, - { "City", N_("City"), "Text", xmpText, xmpExternal, N_("City.") }, - { "Country", N_("Country"), "Text", xmpText, xmpExternal, N_("Country/primary location.") }, - { "Credit", N_("Credit"), "Text", xmpText, xmpExternal, N_("Credit.") }, - { "DateCreated", N_("Date Created"), "Date", xmpText, xmpExternal, N_("The date the intellectual content of the document was created (rather than the creation " - "date of the physical representation), following IIM conventions. For example, a photo " - "taken during the American Civil War would have a creation date during that epoch " - "(1861-1865) rather than the date the photo was digitized for archiving.") }, - { "Headline", N_("Headline"), "Text", xmpText, xmpExternal, N_("Headline.") }, - { "Instructions", N_("Instructions"), "Text", xmpText, xmpExternal, N_("Special instructions.") }, - { "Source", N_("Source"), "Text", xmpText, xmpExternal, N_("Source.") }, - { "State", N_("State"), "Text", xmpText, xmpExternal, N_("Province/state.") }, - { "SupplementalCategories", N_("Supplemental Categories"), "bag Text", xmpBag, xmpExternal, N_("Supplemental category.") }, - { "TransmissionReference", N_("Transmission Reference"), "Text", xmpText, xmpExternal, N_("Original transmission reference.") }, - { "Urgency", N_("Urgency"), "Integer", xmpText, xmpExternal, N_("Urgency. Valid range is 1-8.") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - //! XMP crs:CropUnits - extern const TagDetails crsCropUnits[] = { - { 0, N_("pixels") }, - { 1, N_("inches") }, - { 2, N_("cm") } - }; - - extern const XmpPropertyInfo xmpCrsInfo[] = { - { "AutoBrightness", N_("Auto Brightness"), "Boolean", xmpText, xmpExternal, N_("When true, \"Brightness\" is automatically adjusted.") }, - { "AutoContrast", N_("Auto Contrast"), "Boolean", xmpText, xmpExternal, N_("When true, \"Contrast\" is automatically adjusted.") }, - { "AutoExposure", N_("Auto Exposure"), "Boolean", xmpText, xmpExternal, N_("When true, \"Exposure\" is automatically adjusted.") }, - { "AutoShadows", N_("Auto Shadows"), "Boolean", xmpText, xmpExternal, N_("When true,\"Shadows\" is automatically adjusted.") }, - { "BlueHue", N_("Blue Hue"), "Integer", xmpText, xmpExternal, N_("\"Blue Hue\" setting. Range -100 to 100.") }, - { "BlueSaturation", N_("Blue Saturation"), "Integer", xmpText, xmpExternal, N_("\"Blue Saturation\" setting. Range -100 to +100.") }, - { "Brightness", N_("Brightness"), "Integer", xmpText, xmpExternal, N_("\"Brightness\" setting. Range 0 to +150.") }, - { "CameraProfile", N_("Camera Profile"), "Text", xmpText, xmpExternal, N_("\"Camera Profile\" setting.") }, - { "ChromaticAberrationB", N_("Chromatic Aberration Blue"), "Integer", xmpText, xmpExternal, N_("\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100.") }, - { "ChromaticAberrationR", N_("Chromatic Aberration Red"), "Integer", xmpText, xmpExternal, N_("\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100.") }, - { "ColorNoiseReduction", N_("Color Noise Reduction"), "Integer", xmpText, xmpExternal, N_("\"Color Noise Reducton\" setting. Range 0 to +100.") }, - { "Contrast", N_("Contrast"), "Integer", xmpText, xmpExternal, N_("\"Contrast\" setting. Range -50 to +100.") }, - { "CropTop", N_("Crop Top"), "Real", xmpText, xmpExternal, N_("When \"Has Crop\" is true, top of crop rectangle") }, - { "CropLeft", N_("Crop Left"), "Real", xmpText, xmpExternal, N_("When \"Has Crop\" is true, left of crop rectangle.") }, - { "CropBottom", N_("Crop Bottom"), "Real", xmpText, xmpExternal, N_("When \"Has Crop\" is true, bottom of crop rectangle.") }, - { "CropRight", N_("Crop Right"), "Real", xmpText, xmpExternal, N_("When \"Has Crop\" is true, right of crop rectangle.") }, - { "CropAngle", N_("Crop Angle"), "Real", xmpText, xmpExternal, N_("When \"Has Crop\" is true, angle of crop rectangle.") }, - { "CropWidth", N_("Crop Width"), "Real", xmpText, xmpExternal, N_("Width of resulting cropped image in CropUnits units.") }, - { "CropHeight", N_("Crop Height"), "Real", xmpText, xmpExternal, N_("Height of resulting cropped image in CropUnits units.") }, - { "CropUnits", N_("Crop Units"), "Integer", xmpText, xmpExternal, N_("Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm") }, - { "Exposure", N_("Exposure"), "Real", xmpText, xmpExternal, N_("\"Exposure\" setting. Range -4.0 to +4.0.") }, - { "GreenHue", N_("GreenHue"), "Integer", xmpText, xmpExternal, N_("\"Green Hue\" setting. Range -100 to +100.") }, - { "GreenSaturation", N_("Green Saturation"), "Integer", xmpText, xmpExternal, N_("\"Green Saturation\" setting. Range -100 to +100.") }, - { "HasCrop", N_("Has Crop"), "Boolean", xmpText, xmpExternal, N_("When true, image has a cropping rectangle.") }, - { "HasSettings", N_("Has Settings"), "Boolean", xmpText, xmpExternal, N_("When true, non-default camera raw settings.") }, - { "LuminanceSmoothing", N_("Luminance Smoothing"), "Integer", xmpText, xmpExternal, N_("\"Luminance Smoothing\" setting. Range 0 to +100.") }, - { "RawFileName", N_("Raw File Name"), "Text", xmpText, xmpInternal, N_("File name of raw file (not a complete path).") }, - { "RedHue", N_("Red Hue"), "Integer", xmpText, xmpExternal, N_("\"Red Hue\" setting. Range -100 to +100.") }, - { "RedSaturation", N_("Red Saturation"), "Integer", xmpText, xmpExternal, N_("\"Red Saturation\" setting. Range -100 to +100.") }, - { "Saturation", N_("Saturation"), "Integer", xmpText, xmpExternal, N_("\"Saturation\" setting. Range -100 to +100.") }, - { "Shadows", N_("Shadows"), "Integer", xmpText, xmpExternal, N_("\"Shadows\" setting. Range 0 to +100.") }, - { "ShadowTint", N_("Shadow Tint"), "Integer", xmpText, xmpExternal, N_("\"Shadow Tint\" setting. Range -100 to +100.") }, - { "Sharpness", N_("Sharpness"), "Integer", xmpText, xmpExternal, N_("\"Sharpness\" setting. Range 0 to +100.") }, - { "Temperature", N_("Temperature"), "Integer", xmpText, xmpExternal, N_("\"Temperature\" setting. Range 2000 to 50000.") }, - { "Tint", N_("Tint"), "Integer", xmpText, xmpExternal, N_("\"Tint\" setting. Range -150 to +150.") }, - { "ToneCurve", N_("Tone Curve"), "Seq of points (Integer, Integer)", xmpText, xmpExternal, N_("Array of points (Integer, Integer) defining a \"Tone Curve\".") }, - { "ToneCurveName", N_("Tone Curve Name"), "Choice Text", xmpText, xmpInternal, N_("The name of the Tone Curve described by ToneCurve. One of: Linear, Medium Contrast, " - "Strong Contrast, Custom or a user-defined preset name.") }, - { "Version", N_("Version"), "Text", xmpText, xmpInternal, N_("Version of Camera Raw plugin.") }, - { "VignetteAmount", N_("Vignette Amount"), "Integer", xmpText, xmpExternal, N_("\"Vignetting Amount\" setting. Range -100 to +100.") }, - { "VignetteMidpoint", N_("Vignette Midpoint"), "Integer", xmpText, xmpExternal, N_("\"Vignetting Midpoint\" setting. Range 0 to +100.") }, - { "WhiteBalance", N_("White Balance"), "Closed Choice Text", xmpText, xmpExternal, N_("\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, Tungsten, " - "Fluorescent, Flash, Custom") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - extern const XmpPropertyInfo xmpTiffInfo[] = { - { "ImageWidth", N_("Image Width"), "Integer", xmpText, xmpInternal, N_("TIFF tag 256, 0x100. Image width in pixels.") }, - { "ImageLength", N_("Image Length"), "Integer", xmpText, xmpInternal, N_("TIFF tag 257, 0x101. Image height in pixels.") }, - { "BitsPerSample", N_("Bits Per Sample"), "seq Integer", xmpSeq, xmpInternal, N_("TIFF tag 258, 0x102. Number of bits per component in each channel.") }, - { "Compression", N_("Compression"), "Closed Choice of Integer", xmpText, xmpInternal, N_("TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG.") }, - { "PhotometricInterpretation", N_("Photometric Interpretation"), "Closed Choice of Integer", xmpText, xmpInternal, N_("TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr.") }, - { "Orientation", N_("Orientation"), "Closed Choice of Integer", xmpText, xmpInternal, N_("TIFF tag 274, 0x112. Orientation:" - "1 = 0th row at top, 0th column at left " - "2 = 0th row at top, 0th column at right " - "3 = 0th row at bottom, 0th column at right " - "4 = 0th row at bottom, 0th column at left " - "5 = 0th row at left, 0th column at top " - "6 = 0th row at right, 0th column at top " - "7 = 0th row at right, 0th column at bottom " - "8 = 0th row at left, 0th column at bottom") }, - { "SamplesPerPixel", N_("Samples Per Pixel"), "Integer", xmpText, xmpInternal, N_("TIFF tag 277, 0x115. Number of components per pixel.") }, - { "PlanarConfiguration", N_("Planar Configuration"), "Closed Choice of Integer", xmpText, xmpInternal, N_("TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar.") }, - { "YCbCrSubSampling", N_("YCbCr Sub Sampling"), "Closed Choice of seq Integer", xmpSeq, xmpInternal, N_("TIFF tag 530, 0x212. Sampling ratio of chrominance " - "components: [2, 1] = YCbCr4:2:2; [2, 2] = YCbCr4:2:0") }, - { "YCbCrPositioning", N_("YCbCr Positioning"), "Closed Choice of Integer", xmpText, xmpInternal, N_("TIFF tag 531, 0x213. Position of chrominance vs. " - "luminance components: 1 = centered; 2 = co-sited.") }, - { "XResolution", N_("X Resolution"), "Rational", xmpText, xmpInternal, N_("TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit.") }, - { "YResolution", N_("Y Resolution"), "Rational", xmpText, xmpInternal, N_("TIFF tag 283, 0x11B. Vertical resolution in pixels per unit.") }, - { "ResolutionUnit", N_("Resolution Unit"), "Closed Choice of Integer", xmpText, xmpInternal, N_("TIFF tag 296, 0x128. Unit used for XResolution and " - "YResolution. Value is one of: 2 = inches; 3 = centimeters.") }, - { "TransferFunction", N_("Transfer Function"), "seq Integer", xmpSeq, xmpInternal, N_("TIFF tag 301, 0x12D. Transfer function for image " - "described in tabular style with 3 * 256 entries.") }, - { "WhitePoint", N_("White Point"), "seq Rational", xmpSeq, xmpInternal, N_("TIFF tag 318, 0x13E. Chromaticity of white point.") }, - { "PrimaryChromaticities", N_("Primary Chromaticities"), "seq Rational", xmpSeq, xmpInternal, N_("TIFF tag 319, 0x13F. Chromaticity of the three primary colors.") }, - { "YCbCrCoefficients", N_("YCbCr Coefficients"), "seq Rational", xmpSeq, xmpInternal, N_("TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation.") }, - { "ReferenceBlackWhite", N_("Reference Black White"), "seq Rational", xmpSeq, xmpInternal, N_("TIFF tag 532, 0x214. Reference black and white point values.") }, - { "DateTime", N_("Date and Time"), "Date", xmpText, xmpInternal, N_("TIFF tag 306, 0x132 (primary) and EXIF tag 37520, " - "0x9290 (subseconds). Date and time of image creation " - "(no time zone in EXIF), stored in ISO 8601 format, not " - "the original EXIF format. This property includes the " - "value for the EXIF SubSecTime attribute. " - "NOTE: This property is stored in XMP as xmp:ModifyDate.") }, - { "ImageDescription", N_("Image Description"), "Lang Alt", langAlt, xmpExternal, N_("TIFF tag 270, 0x10E. Description of the image. Note: This property is stored in XMP as dc:description.") }, - { "Make", N_("Make"), "ProperName", xmpText, xmpInternal, N_("TIFF tag 271, 0x10F. Manufacturer of recording equipment.") }, - { "Model", N_("Model"), "ProperName", xmpText, xmpInternal, N_("TIFF tag 272, 0x110. Model name or number of equipment.") }, - { "Software", N_("Software"), "AgentName", xmpText, xmpInternal, N_("TIFF tag 305, 0x131. Software or firmware used to generate image. " - "Note: This property is stored in XMP as xmp:CreatorTool. ") }, - { "Artist", N_("Artist"), "ProperName", xmpText, xmpExternal, N_("TIFF tag 315, 0x13B. Camera owner, photographer or image creator. " - "Note: This property is stored in XMP as the first item in the dc:creator array.") }, - { "Copyright", N_("Copyright"), "Lang Alt", langAlt, xmpExternal, N_("TIFF tag 33432, 0x8298. Copyright information. " - "Note: This property is stored in XMP as dc:rights.") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - extern const XmpPropertyInfo xmpExifInfo[] = { - { "ExifVersion", N_("Exif Version"), "Closed Choice of Text", xmpText, xmpInternal, N_("EXIF tag 36864, 0x9000. EXIF version number.") }, - { "FlashpixVersion", N_("Flashpix Version"), "Closed Choice of Text", xmpText, xmpInternal, N_("EXIF tag 40960, 0xA000. Version of FlashPix.") }, - { "ColorSpace", N_("Color Space"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 40961, 0xA001. Color space information") }, - { "ComponentsConfiguration", N_("Components Configuration"), "Closed Choice of seq Integer", xmpSeq, xmpInternal, N_("EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB compressed data), " - "1 2 3 0 (other cases).") }, - { "CompressedBitsPerPixel", N_("Compressed Bits Per Pixel"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37122, 0x9102. Compression mode used for a compressed image is indicated " - "in unit bits per pixel.") }, - { "PixelXDimension", N_("Pixel X Dimension"), "Integer", xmpText, xmpInternal, N_("EXIF tag 40962, 0xA002. Valid image width, in pixels.") }, - { "PixelYDimension", N_("Pixel Y Dimension"), "Integer", xmpText, xmpInternal, N_("EXIF tag 40963, 0xA003. Valid image height, in pixels.") }, - { "UserComment", N_("User Comment"), "Lang Alt", langAlt, xmpExternal, N_("EXIF tag 37510, 0x9286. Comments from user.") }, - { "RelatedSoundFile", N_("Related Sound File"), "Text", xmpText, xmpInternal, N_("EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file.") }, - { "DateTimeOriginal", N_("Date and Time Original"), "Date", xmpText, xmpInternal, N_("EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). " - "Date and time when original image was generated, in ISO 8601 format. " - "Includes the EXIF SubSecTimeOriginal data.") }, - { "DateTimeDigitized", N_("Date and Time Digitized"), "Date", xmpText, xmpInternal, N_("EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and time when " - "image was stored as digital data, can be the same as DateTimeOriginal if originally " - "stored in digital form. Stored in ISO 8601 format. Includes the EXIF " - "SubSecTimeDigitized data.") }, - { "ExposureTime", N_("Exposure Time"), "Rational", xmpText, xmpInternal, N_("EXIF tag 33434, 0x829A. Exposure time in seconds.") }, - { "FNumber", N_("F Number"), "Rational", xmpText, xmpInternal, N_("EXIF tag 33437, 0x829D. F number.") }, - { "ExposureProgram", N_("Exposure Program"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 34850, 0x8822. Class of program used for exposure.") }, - { "SpectralSensitivity", N_("Spectral Sensitivity"), "Text", xmpText, xmpInternal, N_("EXIF tag 34852, 0x8824. Spectral sensitivity of each channel.") }, - { "ISOSpeedRatings", N_("ISOSpeedRatings"), "seq Integer", xmpSeq, xmpInternal, N_("EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " - "specified in ISO 12232.") }, - { "OECF", N_("OECF"), "OECF/SFR", xmpText, xmpInternal, N_("EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in ISO 14524.") }, - { "ShutterSpeedValue", N_("Shutter Speed Value"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF specification.") }, - { "ApertureValue", N_("Aperture Value"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37378, 0x9202. Lens aperture, unit is APEX.") }, - { "BrightnessValue", N_("Brightness Value"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37379, 0x9203. Brightness, unit is APEX.") }, - { "ExposureBiasValue", N_("Exposure Bias Value"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37380, 0x9204. Exposure bias, unit is APEX.") }, - { "MaxApertureValue", N_("Maximum Aperture Value"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX.") }, - { "SubjectDistance", N_("Subject Distance"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37382, 0x9206. Distance to subject, in meters.") }, - { "MeteringMode", N_("Metering Mode"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 37383, 0x9207. Metering mode.") }, - { "LightSource", N_("Light Source"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 37384, 0x9208. Light source.") }, - { "Flash", N_("Flash"), "Flash", xmpText, xmpInternal, N_("EXIF tag 37385, 0x9209. Strobe light (flash) source data.") }, - { "FocalLength", N_("Focal Length"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters.") }, - { "SubjectArea", N_("Subject Area"), "seq Integer", xmpSeq, xmpInternal, N_("EXIF tag 37396, 0x9214. The location and area of the main subject in the overall scene.") }, - { "FlashEnergy", N_("Flash Energy"), "Rational", xmpText, xmpInternal, N_("EXIF tag 41483, 0xA20B. Strobe energy during image capture.") }, - { "SpatialFrequencyResponse", N_("Spatial Frequency Response"), "OECF/SFR", xmpText, xmpInternal, N_("EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values as " - "specified in ISO 12233.") }, - { "FocalPlaneXResolution", N_("Focal Plane X Resolution"), "Rational", xmpText, xmpInternal, N_("EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per unit.") }, - { "FocalPlaneYResolution", N_("Focal Plane Y Resolution"), "Rational", xmpText, xmpInternal, N_("EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per unit.") }, - { "FocalPlaneResolutionUnit", N_("Focal Plane Resolution Unit"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and FocalPlaneYResolution.") }, - { "SubjectLocation", N_("Subject Location"), "seq Integer", xmpSeq, xmpInternal, N_("EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first value is the " - "horizontal pixel and the second value is the vertical pixel at which the " - "main subject appears.") }, - { "ExposureIndex", N_("Exposure Index"), "Rational", xmpText, xmpInternal, N_("EXIF tag 41493, 0xA215. Exposure index of input device.") }, - { "SensingMethod", N_("Sensing Method"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41495, 0xA217. Image sensor type on input device.") }, - { "FileSource", N_("File Source"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41728, 0xA300. Indicates image source.") }, - { "SceneType", N_("Scene Type"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41729, 0xA301. Indicates the type of scene.") }, - { "CFAPattern", N_("CFA Pattern"), "CFAPattern", xmpText, xmpInternal, N_("EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image sense.") }, - { "CustomRendered", N_("Custom Rendered"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41985, 0xA401. Indicates the use of special processing on image data.") }, - { "ExposureMode", N_("Exposure Mode"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was shot.") }, - { "WhiteBalance", N_("White Balance"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image was shot.") }, - { "DigitalZoomRatio", N_("Digital Zoom Ratio"), "Rational", xmpText, xmpInternal, N_("EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was shot.") }, - { "FocalLengthIn35mmFilm", N_("Focal Length In 35mm Film"), "Integer", xmpText, xmpInternal, N_("EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a 35mm film " - "camera, in mm. A value of 0 means the focal length is unknown. Note that this tag " - "differs from the FocalLength tag.") }, - { "SceneCaptureType", N_("Scene Capture Type"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41990, 0xA406. Indicates the type of scene that was shot.") }, - { "GainControl", N_("Gain Control"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41991, 0xA407. Indicates the degree of overall image gain adjustment.") }, - { "Contrast", N_("Contrast"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41992, 0xA408. Indicates the direction of contrast processing applied by the camera.") }, - { "Saturation", N_("Saturation"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41993, 0xA409. Indicates the direction of saturation processing applied by the camera.") }, - { "Sharpness", N_("Sharpness"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing applied by the camera.") }, - { "DeviceSettingDescription", N_("Device Setting Description"), "DeviceSettings", xmpText, xmpInternal, N_("EXIF tag 41995, 0xA40B. Indicates information on the picture-taking conditions of a particular camera model.") }, - { "SubjectDistanceRange", N_("Subject Distance Range"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41996, 0xA40C. Indicates the distance to the subject.") }, - { "ImageUniqueID", N_("Image Unique ID"), "Text", xmpText, xmpInternal, N_("EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is recorded as a 32 " - "character ASCII string, equivalent to hexadecimal notation and 128-bit fixed length.") }, - { "GPSVersionID", N_("GPS Version ID"), "Text", xmpText, xmpInternal, N_("GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with period separators. " - "The current value is \"2.0.0.0\".") }, - { "GPSLatitude", N_("GPS Latitude"), "GPSCoordinate", xmpText, xmpInternal, N_("GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude.") }, - { "GPSLongitude", N_("GPS Longitude"), "GPSCoordinate", xmpText, xmpInternal, N_("GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude.") }, - { "GPSAltitudeRef", N_("GPS Altitude Reference"), "Closed Choice of Integer", xmpText, xmpInternal, N_("GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level.") }, - { "GPSAltitude", N_("GPS Altitude"), "Rational", xmpText, xmpInternal, N_("GPS tag 6, 0x06. Indicates altitude in meters.") }, - { "GPSTimeStamp", N_("GPS Time Stamp"), "Date", xmpText, xmpInternal, N_("GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS data, " - "in Coordinated Universal Time. Note: The GPSDateStamp tag is new in EXIF 2.2. " - "The GPS timestamp in EXIF 2.1 does not include a date. If not present, " - "the date component for the XMP should be taken from exif:DateTimeOriginal, or if that is " - "also lacking from exif:DateTimeDigitized. If no date is available, do not write " - "exif:GPSTimeStamp to XMP.") }, - { "GPSSatellites", N_("GPS Satellites"), "Text", xmpText, xmpInternal, N_("GPS tag 8, 0x08. Satellite information, format is unspecified.") }, - { "GPSStatus", N_("GPS Status"), "Closed Choice of Text", xmpText, xmpInternal, N_("GPS tag 9, 0x09. Status of GPS receiver at image creation time.") }, - { "GPSMeasureMode", N_("GPS Measure Mode"), "Text", xmpText, xmpInternal, N_("GPS tag 10, 0x0A. GPS measurement mode, Text type.") }, - { "GPSDOP", N_("GPS DOP"), "Rational", xmpText, xmpInternal, N_("GPS tag 11, 0x0B. Degree of precision for GPS data.") }, - { "GPSSpeedRef", N_("GPS Speed Reference"), "Closed Choice of Text", xmpText, xmpInternal, N_("GPS tag 12, 0x0C. Units used to speed measurement.") }, - { "GPSSpeed", N_("GPS Speed"), "Rational", xmpText, xmpInternal, N_("GPS tag 13, 0x0D. Speed of GPS receiver movement.") }, - { "GPSTrackRef", N_("GPS Track Reference"), "Closed Choice of Text", xmpText, xmpInternal, N_("GPS tag 14, 0x0E. Reference for movement direction.") }, - { "GPSTrack", N_("GPS Track"), "Rational", xmpText, xmpInternal, N_("GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99.") }, - { "GPSImgDirectionRef", N_("GPS Image Direction Reference"), "Closed Choice of Text", xmpText, xmpInternal, N_("GPS tag 16, 0x10. Reference for image direction.") }, - { "GPSImgDirection", N_("GPS Image Direction"), "Rational", xmpText, xmpInternal, N_("GPS tag 17, 0x11. Direction of image when captured, values range from 0 to 359.99.") }, - { "GPSMapDatum", N_("GPS Map Datum"), "Text", xmpText, xmpInternal, N_("GPS tag 18, 0x12. Geodetic survey data.") }, - { "GPSDestLatitude", N_("GPS Destination Latitude"), "GPSCoordinate", xmpText, xmpInternal, N_("GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates destination latitude.") }, - { "GPSDestLongitude", N_("GPS Destination Longitude"), "GPSCoordinate", xmpText, xmpInternal, N_("GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination longitude.") }, - { "GPSDestBearingRef", N_("GPS Destination Bearing Reference"), "Closed Choice of Text", xmpText, xmpInternal, N_("GPS tag 23, 0x17. Reference for movement direction.") }, - { "GPSDestBearing", N_("GPS Destination Bearing"), "Rational", xmpText, xmpInternal, N_("GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99.") }, - { "GPSDestDistanceRef", N_("GPS Destination Distance Refefrence"), "Closed Choice of Text", xmpText, xmpInternal, N_("GPS tag 25, 0x19. Units used for speed measurement.") }, - { "GPSDestDistance", N_("GPS Destination Distance"), "Rational", xmpText, xmpInternal, N_("GPS tag 26, 0x1A. Distance to destination.") }, - { "GPSProcessingMethod", N_("GPS Processing Method"), "Text", xmpText, xmpInternal, N_("GPS tag 27, 0x1B. A character string recording the name of the method used for location finding.") }, - { "GPSAreaInformation", N_("GPS Area Information"), "Text", xmpText, xmpInternal, N_("GPS tag 28, 0x1C. A character string recording the name of the GPS area.") }, - { "GPSDifferential", N_("GPS Differential"), "Closed Choice of Integer", xmpText, xmpInternal, N_("GPS tag 30, 0x1E. Indicates whether differential correction is applied to the GPS receiver.") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - extern const XmpPropertyInfo xmpAuxInfo[] = { - { "Lens", N_("Lens"), "Text", xmpText, xmpInternal, N_("A description of the lens used to take the photograph. For example, \"70-200 mm f/2.8-4.0\".") }, - { "SerialNumber", N_("SerialNumber"), "Text", xmpText, xmpInternal, N_("The serial number of the camera or camera body used to take the photograph.") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - extern const XmpPropertyInfo xmpIptcInfo[] = { - { "CiAdrCity", N_("Contact Info-City"), "Text", xmpText, xmpExternal, N_("The contact information city part.") }, - { "CiAdrCtry", N_("Contact Info-Country"), "Text", xmpText, xmpExternal, N_("The contact information country part.") }, - { "CiAdrExtadr", N_("Contact Info-Address"), "Text", xmpText, xmpExternal, N_("The contact information address part. Comprises an optional company name and all required " - "information to locate the building or postbox to which mail should be sent.") }, - { "CiAdrPcode", N_("Contact Info-Postal Code"), "Text", xmpText, xmpExternal, N_("The contact information part denoting the local postal code.") }, - { "CiAdrRegion", N_("Contact Info-State/Province"), "Text", xmpText, xmpExternal, N_("The contact information part denoting regional information like state or province.") }, - { "CiEmailWork", N_("Contact Info-Email"), "Text", xmpText, xmpExternal, N_("The contact information email address part.") }, - { "CiTelWork", N_("Contact Info-Phone"), "Text", xmpText, xmpExternal, N_("The contact information phone number part.") }, - { "CiUrlWork", N_("Contact Info-Web URL"), "Text", xmpText, xmpExternal, N_("The contact information web address part.") }, - { "CountryCode", N_("Country Code"), "closed Choice of Text", xmpText, xmpExternal, N_("Code of the country the content is focussing on -- either the country shown in visual " - "media or referenced in text or audio media. This element is at the top/first level of " - "a top-down geographical hierarchy. The code should be taken from ISO 3166 two or three " - "letter code. The full name of a country should go to the \"Country\" element.") }, - { "CreatorContactInfo", N_("Creator's Contact Info"), "ContactInfo", xmpText, xmpExternal, N_("The creator's contact information provides all necessary information to get in contact " - "with the creator of this news object and comprises a set of sub-properties for proper addressing.") }, - { "IntellectualGenre", N_("Intellectual Genre"), "Text", xmpText, xmpExternal, N_("Describes the nature, intellectual or journalistic characteristic of a news object, not " - "specifically its content.") }, - { "Location", N_("Location"), "Text", xmpText, xmpExternal, N_("Name of a location the content is focussing on -- either the location shown in visual " - "media or referenced by text or audio media. This location name could either be the name " - "of a sublocation to a city or the name of a well known location or (natural) monument " - "outside a city. In the sense of a sublocation to a city this element is at the fourth " - "level of a top-down geographical hierarchy.") }, - { "Scene", N_("IPTC Scene"), "bag closed Choice of Text", xmpBag, xmpExternal, N_("Describes the scene of a photo content. Specifies one or more terms from the IPTC " - "\"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits in an unordered list.") }, - { "SubjectCode", N_("IPTC Subject Code"), "bag closed Choice of Text", xmpBag, xmpExternal, N_("Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy to " - "categorize the content. Each Subject is represented as a string of 8 digits in an unordered list.") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - extern const XmpPropertyInfo xmpIptcExtInfo[] = { - { "AddlModelInfo", N_("Additional model info"), "Text", xmpText, xmpExternal, N_("Information about the ethnicity and other facts of the model(s) in a model-released image.") }, - { "OrganisationInImageCode", N_("Code of featured Organisation"), "bag Text", xmpBag, xmpExternal, N_("Code from controlled vocabulary for identyfing the organisation or company which is featured in the image.") }, - { "CVterm", N_("Controlled Vocabulary Term"), "bag URI", xmpBag, xmpExternal, N_("A term to describe the content of the image by a value from a Controlled Vocabulary.") }, - { "ModelAge", N_("Model age"), "bag Integer", xmpBag, xmpExternal, N_("Age of the human model(s) at the time this image was taken in a model released image.") }, - { "OrganisationInImageName", N_("Name of featured Organisation"), "bag Text", xmpBag, xmpExternal, N_("Name of the organisation or company which is featured in the image.") }, - { "PersonInImage", N_("Person shown"), "bag Text", xmpBag, xmpExternal, N_("Name of a person shown in the image.") }, - { "DigImageGUID", N_("Digital Image Identifier"), "Text", xmpText, xmpExternal, N_("Globally unique identifier for this digital image. It is created and applied by the creator of the digital image at the time of its creation. this value shall not be changed after that time.") }, - { "DigitalSourcefileType", N_("Physical type of original photo"), "URI", xmpText, xmpExternal, N_("The type of the source digital file.") }, - { "Event", N_("Event"), "Lang Alt", langAlt, xmpExternal, N_("Names or describes the specific event at which the photo was taken.") }, - { "MaxAvailHeight", N_("Maximum available height"), "Integer", xmpText, xmpExternal, N_("The maximum available height in pixels of the original photo from which this photo has been derived by downsizing.") }, - { "MaxAvailWidth", N_("Maximum available width"), "Integer", xmpText, xmpExternal, N_("The maximum available width in pixels of the original photo from which this photo has been derived by downsizing.") }, - { "RegistryId", N_("Registry Entry"), "bag RegistryEntryDetails", xmpBag, xmpExternal, N_("Both a Registry Item Id and a Registry Organisation Id to record any registration of this digital image with a registry.") }, - { "RegItemId", N_("Registry Entry-Item Identifier"), "Text", xmpText, xmpExternal, N_("A unique identifier created by a registry and applied by the creator of the digital image. This value shall not be changed after being applied. This identifier is linked to a corresponding Registry Organisation Identifier.") }, - { "RegOrgId", N_("Registry Entry-Organisation Identifier"), "Text", xmpText, xmpExternal, N_("An identifier for the registry which issued the corresponding Registry Image Id.") }, - { "IptcLastEdited", N_("IPTC Fields Last Edited"), "Date", xmpText, xmpExternal, N_("The date and optionally time when any of the IPTC photo metadata fields has been last edited.") }, - { "LocationShown", N_("Location shown"), "bag LocationDetails", xmpBag, xmpExternal, N_("A location shown in the image.") }, - { "LocationCreated", N_("Location Created"), "bag LocationDetails", xmpBag, xmpExternal, N_("The location the photo was taken.") }, - { "City", N_("Location-City"), "Text", xmpText, xmpExternal, N_("Name of the city of a location.") }, - { "CountryCode", N_("Location-Country ISO-Code"), "Text", xmpText, xmpExternal, N_("The ISO code of a country of a location.") }, - { "CountryName", N_("Location-Country Name"), "Text", xmpText, xmpExternal, N_("The name of a country of a location.") }, - { "ProvinceState", N_("Location-Province/State"), "Text", xmpText, xmpExternal, N_("The name of a subregion of a country - a province or state - of a location.") }, - { "Sublocation", N_("Location-Sublocation"), "Text", xmpText, xmpExternal, N_("Name of a sublocation. This sublocation name could either be the name of a sublocation to a city or the name of a well known location or (natural) monument outside a city.") }, - { "WorldRegion", N_("Location-World Region"), "Text", xmpText, xmpExternal, N_("The name of a world region of a location.") }, - { "ArtworkOrObject", N_("Artwork or object in the image"), "bag ArtworkOrObjectDetails", xmpBag, xmpExternal, N_("A set of metadata about artwork or an object in the image.") }, - { "AOCopyrightNotice", N_("Artwork or object-Copyright notice"), "Text", xmpText, xmpExternal, N_("Contains any necessary copyright notice for claiming the intellectual property for artwork or an object in the image and should identify the current owner of the copyright of this work with associated intellectual property rights.") }, - { "AOCreator", N_("Artwork or object-Creator"), "seq ProperName", xmpSeq, xmpExternal, N_("Contains the name of the artist who has created artwork or an object in the image. In cases where the artist could or should not be identified the name of a company or organisation may be appropriate.") }, - { "AODateCreated", N_("Artwork or object-Date Created"), "Date", xmpText, xmpExternal, N_("Designates the date and optionally the time the artwork or object in the image was created. This relates to artwork or objects with associated intellectual property rights.") }, - { "AOSource", N_("Artwork or object-Source"), "Text", xmpText, xmpExternal, N_("The organisation or body holding and registering the artwork or object in the image for inventory purposes.") }, - { "AOSourceInvNo", N_("Artwork or object-Source inventory number"), "Text", xmpText, xmpExternal, N_("The inventory number issued by the organisation or body holding and registering the artwork or object in the image.") }, - { "AOTitle", N_("Artwork or object-Title"), "Lang Alt", langAlt, xmpExternal, N_("A reference for the artwork or object in the image.") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - //! XMP iptcExt:DigitalSourcefileType - extern const TagVocabulary iptcExtDigitalSourcefileType[] = { - { "scanfilm", N_("Scan from film") }, - { "scantransparency", N_("Scan from transparency (including slide)") }, - { "scanprint", N_("Scan from print") }, - { "cameraraw", N_("Camera RAW") }, - { "cameratiff", N_("Camera TIFF") }, - { "camerajpeg", N_("Camera JPEG") } - }; - - extern const XmpPropertyInfo xmpPlusInfo[] = { - // PLUS Version 1.2.0 - { "Version", N_("PLUS Version"), "Text", xmpText, xmpExternal, N_("The version number of the PLUS standards in place at the time of the transaction.") }, - { "Licensee", N_("Licensee"), "seq LicenseeDetail", xmpSeq, xmpExternal, N_("Party or parties to whom the license is granted by the Licensor/s under the license transaction.") }, - { "LicenseeID", N_("Licensee ID"), "Text", xmpText, xmpExternal, N_("Optional PLUS-ID identifying each Licensee.") }, - { "LicenseeName", N_("Licensee Name"), "ProperName", xmpText, xmpExternal, N_("Name of each Licensee.") }, - { "EndUser", N_("End User"), "seq EndUserDetail", xmpSeq, xmpExternal, N_("Party or parties ultimately making use of the image under the license.") }, - { "EndUserID", N_("End User ID"), "Text", xmpText, xmpExternal, N_("Optional PLUS-ID identifying each End User.") }, - { "EndUserName", N_("End User Name"), "ProperName", xmpText, xmpExternal, N_("Name of each End User.") }, - { "Licensor", N_("Licensor"), "seq LicensorDetail", xmpSeq, xmpExternal, N_("Party or parties granting the license to the Licensee.") }, - { "LicensorID", N_("Licensor ID"), "Text", xmpText, xmpExternal, N_("Optional PLUS-ID identifying each Licensor.") }, - { "LicensorName", N_("Licensor Name"), "ProperName", xmpText, xmpExternal, N_("Name of each Licensor.") }, - { "LicensorStreetAddress", N_("Licensor Address"), "Text", xmpText, xmpExternal, N_("Licensor street address.") }, - { "LicensorExtendedAddress", N_("Licensor Address Detail"), "Text", xmpText, xmpExternal, N_("Additional Licensor mailing address details.") }, - { "LicensorCity", N_("Licensor City"), "Text", xmpText, xmpExternal, N_("Licensor City name.") }, - { "LicensorRegion", N_("Licensor State or Province"), "Text", xmpText, xmpExternal, N_("Licensor State or Province name.") }, - { "LicensorPostalCode", N_("Licensor Postal Code"), "Text", xmpText, xmpExternal, N_("Licensor Postal Code or Zip Code.") }, - { "LicensorCountry", N_("Licensor Country"), "Text", xmpText, xmpExternal, N_("Licensor Country name.") }, - { "LicensorTelephoneType1", N_("Licensor Telephone Type 1"), "URL", xmpText, xmpExternal, N_("Licensor Telephone Type 1.") }, - { "LicensorTelephone1", N_("Licensor Telephone 1"), "Text", xmpText, xmpExternal, N_("Licensor Telephone number 1.") }, - { "LicensorTelephoneType2", N_("Licensor Telephone Type 2"), "URL", xmpText, xmpExternal, N_("Licensor Telephone Type 2.") }, - { "LicensorTelephone2", N_("Licensor Telephone 2"), "Text", xmpText, xmpExternal, N_("Licensor Telephone number 2.") }, - { "LicensorEmail", N_("Licensor Email"), "Text", xmpText, xmpExternal, N_("Licensor Email address.") }, - { "LicensorURL", N_("Licensor URL"), "URL", xmpText, xmpExternal, N_("Licensor world wide web address.") }, - { "LicensorNotes", N_("Licensor Notes"), "Lang Alt", langAlt, xmpExternal, N_("Supplemental information for use in identifying and contacting the Licensor/s.") }, - { "MediaSummaryCode", N_("PLUS Media Summary Code"), "Text", xmpText, xmpExternal, N_("A PLUS-standardized alphanumeric code string summarizing the media usages included in the license.") }, - { "LicenseStartDate", N_("License Start Date"), "Date", xmpText, xmpExternal, N_("The date on which the license takes effect.") }, - { "LicenseEndDate", N_("License End Date"), "Date", xmpText, xmpExternal, N_("The date on which the license expires.") }, - { "MediaConstraints", N_("Media Constraints"), "Lang Alt", langAlt, xmpExternal, N_("Constraints limiting the scope of PLUS Media Usage/s included in the license to particular named media or to media not yet specifically defined in the PLUS Media Matrix.") }, - { "RegionConstraints", N_("Region Constraints"), "Lang Alt", langAlt, xmpExternal, N_("Constraints limiting the scope of geographic distribution to specific cities, states, provinces or other areas to be included in or excluded from the PLUS Regions specified in the Media Usages specified in the license.") }, - { "ProductOrServiceConstraints", N_("Product or Service Constraints"), "Lang Alt", langAlt, xmpExternal, N_("Constraints limiting usage of the image to promotion of/association with a named product or service.") }, - { "ImageFileConstraints", N_("Image File Constraints"), "bag URL", xmpBag, xmpExternal, N_("Constraints on the changing of the image file name, metadata or file type.") }, - { "ImageAlterationConstraints", N_("Image Alteration Constraints"), "bag URL", xmpBag, xmpExternal, N_("Constraints on alteration of the image by cropping, flipping, retouching, colorization, de-colorization or merging.") }, - { "ImageDuplicationConstraints", N_("Image Duplication Constraints"), "URL", xmpText, xmpExternal, N_("Constraints on the creation of duplicates of the image.") }, - { "ModelReleaseStatus", N_("Model Release Status"), "URL", xmpText, xmpExternal, N_("Summarizes the availability and scope of model releases authorizing usage of the likenesses of persons appearing in the photograph.") }, - { "ModelReleaseID", N_("Model Release ID"), "bag Text", xmpBag, xmpExternal, N_("Optional identifier associated with each Model Release.") }, - { "MinorModelAgeDisclosure", N_("Minor Model Age Disclosure"), "URL", xmpText, xmpExternal, N_("Age of the youngest model pictured in the image, at the time that the image was made.") }, - { "PropertyReleaseStatus", N_("Property Release Status"), "URL", xmpText, xmpExternal, N_("Summarizes the availability and scope of property releases authorizing usage of the properties appearing in the photograph.") }, - { "PropertyReleaseID", N_("Property Release ID"), "bag Text", xmpBag, xmpExternal, N_("Optional identifier associated with each Property Release.") }, - { "OtherConstraints", N_("Other Constraints"), "Lang Alt", langAlt, xmpExternal, N_("Additional constraints on the license.") }, - { "CreditLineRequired", N_("Credit Line Required"), "URL", xmpText, xmpExternal, N_("Attribution requirements, if any.") }, - { "AdultContentWarning", N_("Adult Content Warning"), "URL", xmpText, xmpExternal, N_("Warning indicating the presence of content not suitable for minors.") }, - { "OtherLicenseRequirements", N_("Other License Requirements"), "Lang Alt", langAlt, xmpExternal, N_("Additional license requirements.") }, - { "TermsAndConditionsText", N_("Terms and Conditions Text"), "Lang Alt", langAlt, xmpExternal, N_("Terms and Conditions applying to the license.") }, - { "TermsAndConditionsURL", N_("Terms and Conditions URL"), "URL", xmpText, xmpExternal, N_("URL for Terms and Conditions applying to the license.") }, - { "OtherConditions", N_("Other License Conditions"), "Lang Alt", langAlt, xmpExternal, N_("Additional license conditions.") }, - { "ImageType", N_("Image Type"), "URL", xmpText, xmpExternal, N_("Identifies the type of image delivered.") }, - { "LicensorImageID", N_("Licensor Image ID"), "Text", xmpText, xmpExternal, N_("Optional identifier assigned by the Licensor to the image.") }, - { "FileNameAsDelivered", N_("Image File Name As Delivered"), "Text", xmpText, xmpExternal, N_("Name of the image file delivered to the Licensee for use under the license.") }, - { "ImageFileFormatAsDelivered", N_("Image File Format As Delivered"), "URL", xmpText, xmpExternal, N_("File format of the image file delivered to the Licensee for use under the license.") }, - { "ImageFileSizeAsDelivered", N_("Image File Size As Delivered"), "URL", xmpText, xmpExternal, N_("Size of the image file delivered to the Licensee.") }, - { "CopyrightStatus", N_("Copyright Status"), "URL", xmpText, xmpExternal, N_("Copyright status of the image.") }, - { "CopyrightRegistrationNumber", N_("Copyright Registration Number"), "Text", xmpText, xmpExternal, N_("Copyright Registration Number, if any, applying to the licensed image.") }, - { "FirstPublicationDate", N_("First Publication Date"), "Date", xmpText, xmpExternal, N_("The date on which the image was first published.") }, - { "CopyrightOwner", N_("Copyright Owner"), "seq CopyrightOwnerDetail", xmpSeq, xmpExternal, N_("Owner or owners of the copyright in the licensed image.") }, - { "CopyrightOwnerID", N_("Copyright Owner ID"), "Text", xmpText, xmpExternal, N_("Optional PLUS-ID identifying each Copyright Owner.") }, - { "CopyrightOwnerName", N_("Copyright Owner Name"), "ProperName", xmpText, xmpExternal, N_("Name of Copyright Owner.") }, - { "CopyrightOwnerImageID", N_("Copyright Owner Image ID"), "Text", xmpText, xmpExternal, N_("Optional identifier assigned by the Copyright Owner to the image.") }, - { "ImageCreator", N_("Image Creator"), "seq ImageCreatorDetail", xmpSeq, xmpExternal, N_("Creator/s of the image.") }, - { "ImageCreatorID", N_("Image Creator ID"), "Text", xmpText, xmpExternal, N_("Optional PLUS-ID identifying each Image Creator.") }, - { "ImageCreatorName", N_("Image Creator Name"), "ProperName", xmpText, xmpExternal, N_("Name of Image Creator.") }, - { "ImageCreatorImageID", N_("Image Creator Image ID"), "Text", xmpText, xmpExternal, N_("Optional identifier assigned by the Image Creator to the image.") }, - { "ImageSupplierID", N_("Image Supplier ID"), "Text", xmpText, xmpExternal, N_("Optional PLUS-ID identifying the Image Supplier.") }, - { "ImageSupplierName", N_("Image Supplier Name"), "ProperName", xmpText, xmpExternal, N_("Name of Image Supplier.") }, - { "ImageSupplierImageID", N_("Image Supplier Image ID"), "Text", xmpText, xmpExternal, N_("Optional identifier assigned by the Image Supplier to the image.") }, - { "LicenseeImageID", N_("Licensee Image ID"), "Text", xmpText, xmpExternal, N_("Optional identifier assigned by the Licensee to the image.") }, - { "LicenseeImageNotes", N_("Licensee Image Notes"), "Lang Alt", langAlt, xmpExternal, N_("Notes added by Licensee.") }, - { "OtherImageInfo", N_("Other Image Info"), "Lang Alt", langAlt, xmpExternal, N_("Additional image information.") }, - { "LicenseID", N_("License ID"), "Text", xmpText, xmpExternal, N_("Optional PLUS-ID assigned by the Licensor to the License.") }, - { "LicensorTransactionID", N_("Licensor Transaction ID"), "bag Text", xmpBag, xmpExternal, N_("Identifier assigned by Licensor for Licensor's reference and internal use.") }, - { "LicenseeTransactionID", N_("Licensee Transaction ID"), "bag Text", xmpBag, xmpExternal, N_("Identifier assigned by Licensee for Licensee's reference and internal use.") }, - { "LicenseeProjectReference", N_("Licensee Project Reference"), "bag Text", xmpBag, xmpExternal, N_("Project reference name or description assigned by Licensee.") }, - { "LicenseTransactionDate", N_("License Transaction Date"), "Date", xmpText, xmpExternal, N_("The date of the License Transaction.") }, - { "Reuse", N_("Reuse"), "URL", xmpText, xmpExternal, N_("Indicates whether a license is a repeat or an initial license. Reuse may require that licenses stored in files previously delivered to the customer be updated.") }, - { "OtherLicenseDocuments", N_("Other License Documents"), "bag Text", xmpBag, xmpExternal, N_("Reference information for additional documents associated with the license.") }, - { "OtherLicenseInfo", N_("Other License Info"), "Lang Alt", langAlt, xmpExternal, N_("Additional license information.") }, - { "Custom1", N_("Custom 1"), "bag Lang Alt", xmpBag, xmpExternal, N_("Optional field for use at Licensor's discretion.") }, - { "Custom2", N_("Custom 2"), "bag Lang Alt", xmpBag, xmpExternal, N_("Optional field for use at Licensor's discretion.") }, - { "Custom3", N_("Custom 3"), "bag Lang Alt", xmpBag, xmpExternal, N_("Optional field for use at Licensor's discretion.") }, - { "Custom4", N_("Custom 4"), "bag Lang Alt", xmpBag, xmpExternal, N_("Optional field for use at Licensor's discretion.") }, - { "Custom5", N_("Custom 5"), "bag Lang Alt", xmpBag, xmpExternal, N_("Optional field for use at Licensor's discretion.") }, - { "Custom6", N_("Custom 6"), "bag Lang Alt", xmpBag, xmpExternal, N_("Optional field for use at Licensee's discretion.") }, - { "Custom7", N_("Custom 7"), "bag Lang Alt", xmpBag, xmpExternal, N_("Optional field for use at Licensee's discretion.") }, - { "Custom8", N_("Custom 8"), "bag Lang Alt", xmpBag, xmpExternal, N_("Optional field for use at Licensee's discretion.") }, - { "Custom9", N_("Custom 9"), "bag Lang Alt", xmpBag, xmpExternal, N_("Optional field for use at Licensee's discretion.") }, - { "Custom10", N_("Custom 10"), "bag Lang Alt", xmpBag, xmpExternal, N_("Optional field for use at Licensee's discretion.") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - //! XMP plus:AdultContentWarning - extern const TagVocabulary plusAdultContentWarning[] = { - { "CW-AWR", N_("Adult Content Warning Required") }, - { "CW-NRQ", N_("Not Required") }, - { "CW-UNK", N_("Unknown") } - }; - - //! XMP plus:CopyrightStatus - extern const TagVocabulary plusCopyrightStatus[] = { - { "CS-PRO", N_("Protected") }, - { "CS-PUB", N_("Public Domain") }, - { "CS-UNK", N_("Unknown") } - }; - - //! XMP plus:CreditLineRequired - extern const TagVocabulary plusCreditLineRequired[] = { - { "CR-CAI", N_("Credit Adjacent To Image") }, - { "CR-CCA", N_("Credit in Credits Area") }, - { "CR-COI", N_("Credit on Image") }, - { "CR-NRQ", N_("Not Require") } - }; - - //! XMP plus:ImageAlterationConstraints - extern const TagVocabulary plusImageAlterationConstraints[] = { - { "AL-CLR", N_("No Colorization") }, - { "AL-CRP", N_("No Cropping") }, - { "AL-DCL", N_("No De-Colorization") }, - { "AL-FLP", N_("No Flipping") }, - { "AL-MRG", N_("No Merging") }, - { "AL-RET", N_("No Retouching") } - }; - - //! XMP plus:ImageDuplicationConstraints - extern const TagVocabulary plusImageDuplicationConstraints[] = { - { "DP-LIC", N_("Duplication Only as Necessary Under License") }, - { "DP-NDC", N_("No Duplication Constraints") }, - { "DP-NOD", N_("No Duplication") } - }; - - //! XMP plus:ImageFileConstraints - extern const TagVocabulary plusImageFileConstraints[] = { - { "IF-MFN", N_("Maintain File Name") }, - { "IF-MFT", N_("Maintain File Type") }, - { "IF-MID", N_("Maintain ID in File Name") }, - { "IF-MMD", N_("Maintain Metadata") } - }; - - //! XMP plus:ImageFileFormatAsDelivered - extern const TagVocabulary plusImageFileFormatAsDelivered[] = { - { "FF-BMP", N_("Windows Bitmap (BMP)") }, - { "FF-DNG", N_("Digital Negative (DNG)") }, - { "FF-EPS", N_("Encapsulated PostScript (EPS)") }, - { "FF-GIF", N_("Graphics Interchange Format (GIF)") }, - { "FF-JPG", N_("JPEG Interchange Formats (JPG, JIF, JFIF)") }, - { "FF-OTR", N_("Other") }, - { "FF-PIC", N_("Macintosh Picture (PICT)") }, - { "FF-PNG", N_("Portable Network Graphics (PNG)") }, - { "FF-PSD", N_("Photoshop Document (PSD)") }, - { "FF-RAW", N_("Proprietary RAW Image Format") }, - { "FF-TIF", N_("Tagged Image File Format (TIFF)") }, - { "FF-WMP", N_("Windows Media Photo (HD Photo)") } - }; - - //! XMP plus:ImageFileSizeAsDelivered - extern const TagVocabulary plusImageFileSizeAsDelivered[] = { - { "SZ-G50", N_("Greater than 50 MB") }, - { "SZ-U01", N_("Up to 1 MB") }, - { "SZ-U10", N_("Up to 10 MB") }, - { "SZ-U30", N_("Up to 30 MB") }, - { "SZ-U50", N_("Up to 50 MB") } - }; - - //! XMP plus:ImageType - extern const TagVocabulary plusImageType[] = { - { "TY-ILL", N_("Illustrated Image") }, - { "TY-MCI", N_("Multimedia or Composited Image") }, - { "TY-OTR", N_("Other") }, - { "TY-PHO", N_("Photographic Image") }, - { "TY-VID", N_("Video") } - }; - - //! XMP plus:LicensorTelephoneType - extern const TagVocabulary plusLicensorTelephoneType[] = { - { "cell", N_("Cell") }, - { "fax", N_("FAX") }, - { "home", N_("Home") }, - { "pager", N_("Pager") }, - { "work", N_("Work") } - }; - - //! XMP plus:MinorModelAgeDisclosure - extern const TagVocabulary plusMinorModelAgeDisclosure[] = { - { "AG-UNK", N_("Age Unknown") }, - { "AG-A25", N_("Age 25 or Over") }, - { "AG-A24", N_("Age 24") }, - { "AG-A23", N_("Age 23") }, - { "AG-A22", N_("Age 22") }, - { "AG-A21", N_("Age 21") }, - { "AG-A20", N_("Age 20") }, - { "AG-A19", N_("Age 19") }, - { "AG-A18", N_("Age 18") }, - { "AG-A17", N_("Age 17") }, - { "AG-A16", N_("Age 16") }, - { "AG-A15", N_("Age 15") }, - { "AG-U14", N_("Age 14 or Under") } - }; - - //! XMP plus:ModelReleaseStatus - extern const TagVocabulary plusModelReleaseStatus[] = { - { "MR-NON", N_("None") }, - { "MR-NAP", N_("Not Applicable") }, - { "MR-UMR", N_("Unlimited Model Releases") }, - { "MR-LMR", N_("Limited or Incomplete Model Releases") } - }; - - //! XMP plus:PropertyReleaseStatus - extern const TagVocabulary plusPropertyReleaseStatus[] = { - { "PR-NON", N_("None") }, - { "PR-NAP", N_("Not Applicable") }, - { "PR-UPR", N_("Unlimited Property Releases") }, - { "PR-LPR", N_("Limited or Incomplete Property Releases") } - }; - - //! XMP plus:Reuse - extern const TagVocabulary plusReuse[] = { - { "RE-NAP", N_("Not Applicable") }, - { "RE-REU", N_("Repeat Use") } - }; - - extern const XmpPropertyInfo xmpMediaProInfo[] = { - { "Event", N_("Event"), "Text", xmpText, xmpExternal, N_("Fixture Identification") }, - { "Status", N_("Status"), "Text", xmpText, xmpExternal, N_("A notation making the image unique") }, - { "People", N_("People"), "bag Text", xmpBag, xmpExternal, N_("Contact") }, - { "CatalogSets", N_("CatalogSets"), "bag Text", xmpBag, xmpExternal, N_("Descriptive markers of catalog items by content") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - extern const XmpPropertyInfo xmpExpressionMediaInfo[] = { - { "Event", N_("Event"), "Text", xmpText, xmpExternal, N_("Fixture Identification") }, - { "Status", N_("Status"), "Text", xmpText, xmpExternal, N_("A notation making the image unique") }, - { "People", N_("People"), "bag Text", xmpBag, xmpExternal, N_("Contact") }, - { "CatalogSets", N_("CatalogSets"), "bag Text", xmpBag, xmpExternal, N_("Descriptive markers of catalog items by content") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - extern const XmpPropertyInfo xmpMicrosoftPhotoInfo[] = { - { "RegionInfo", N_("RegionInfo"), "RegionInfo", xmpText, xmpInternal, N_("Microsoft Photo people-tagging metadata root") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - extern const XmpPropertyInfo xmpMicrosoftPhotoRegionInfoInfo[] = { - { "DateRegionsValid", N_("DateRegionsValid"), "Date", xmpText, xmpExternal, N_("Date the last region was created") }, - { "Regions", N_("Regions"), "bag Region", xmpBag, xmpExternal, N_("Contains Regions/person tags") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - extern const XmpPropertyInfo xmpMicrosoftPhotoRegionInfo[] = { - { "PersonDisplayName", N_("PersonDisplayName"), "Text", xmpText, xmpExternal, N_("Name of the person (in the given rectangle)") }, - { "Rectangle", N_("Rectangle"), "Text", xmpText, xmpExternal, N_("Rectangle that identifies the person within the photo") }, - { "PersonEmailDigest", N_("PersonEmailDigest"), "Text", xmpText, xmpExternal, N_("SHA-1 encrypted message hash of the person's Windows Live e-mail address"), }, - { "PersonLiveCID", N_("PersonLiveCID"), "Text", xmpText, xmpExternal, N_("Signed decimal representation of the person's Windows Live CID") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - extern const XmpPropertyInfo xmpMWGRegionsInfo[] = { - { "Regions", N_("Regions"), "RegionInfo", xmpText, xmpInternal, N_("Main structure containing region based information") }, - { "AppliedToDimensions", N_("AppliedToDimensions"), "Dimensions", xmpText, xmpExternal, N_("Width and height of image when storing region data") }, - { "RegionList", N_("RegionList"), "bag RegionStruct", xmpBag, xmpExternal, N_("List of Region structures") }, - { "Area", N_("Area"), "Area", xmpText, xmpExternal, N_("Descriptive markers of catalog items by content") }, - { "Type", N_("Type"), "closed Choice of Text", xmpText, xmpExternal, N_("Type purpose of region (Face|Pet|Focus|BarCode)") }, - { "Name", N_("Name"), "Text", xmpText, xmpExternal, N_("Name/ short description of content in image region") }, - { "Description", N_("Description"), "Text", xmpText, xmpExternal, N_("Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|NotEvaluatedNotUsed)") }, - { "FocusUsage", N_("FocusUsage"), "closed Choice of Text", xmpText, xmpExternal, N_("Descriptive markers of catalog items by content") }, - { "BarCodeValue", N_("BarCodeValue"), "Text", xmpText, xmpExternal, N_("Decoded BarCode value string") }, - { "Extensions", N_("Extensions"), "Text", xmpText, xmpInternal, N_("Any top level XMP property to describe the region content") }, - // End of list marker - { 0, 0, 0, invalidTypeId, xmpInternal, 0 } - }; - - extern const XmpPrintInfo xmpPrintInfo[] = { - {"Xmp.crs.CropUnits", EXV_PRINT_TAG(crsCropUnits) }, - {"Xmp.exif.ApertureValue", print0x9202 }, - {"Xmp.exif.BrightnessValue", printFloat }, - {"Xmp.exif.ColorSpace", print0xa001 }, - {"Xmp.exif.ComponentsConfiguration", print0x9101 }, - {"Xmp.exif.Contrast", printNormalSoftHard }, - {"Xmp.exif.CreateDate", printXmpDate }, - {"Xmp.exif.CustomRendered", print0xa401 }, - {"Xmp.exif.DateTimeOriginal", printXmpDate }, - {"Xmp.exif.ExifVersion", printXmpVersion }, - {"Xmp.exif.ExposureBiasValue", print0x9204 }, - {"Xmp.exif.ExposureMode", print0xa402 }, - {"Xmp.exif.ExposureProgram", print0x8822 }, - {"Xmp.exif.FileSource", print0xa300 }, - {"Xmp.exif.FlashpixVersion", printXmpVersion }, - {"Xmp.exif.FNumber", print0x829d }, - {"Xmp.exif.FocalLength", print0x920a }, - {"Xmp.exif.FocalPlaneResolutionUnit", printExifUnit }, - {"Xmp.exif.FocalPlaneXResolution", printFloat }, - {"Xmp.exif.FocalPlaneYResolution", printFloat }, - {"Xmp.exif.GainControl", print0xa407 }, - {"Xmp.exif.GPSAltitudeRef", print0x0005 }, - {"Xmp.exif.GPSDestBearingRef", printGPSDirRef }, - {"Xmp.exif.GPSDestDistanceRef", print0x0019 }, - {"Xmp.exif.GPSDifferential", print0x001e }, - {"Xmp.exif.GPSImgDirectionRef", printGPSDirRef }, - {"Xmp.exif.GPSMeasureMode", print0x000a }, - {"Xmp.exif.GPSSpeedRef", print0x000c }, - {"Xmp.exif.GPSStatus", print0x0009 }, - {"Xmp.exif.GPSTimeStamp", printXmpDate }, - {"Xmp.exif.GPSTrackRef", printGPSDirRef }, - {"Xmp.exif.LightSource", print0x9208 }, - {"Xmp.exif.MeteringMode", print0x9207 }, - {"Xmp.exif.ModifyDate", printXmpDate }, - {"Xmp.exif.Saturation", print0xa409 }, - {"Xmp.exif.SceneCaptureType", print0xa406 }, - {"Xmp.exif.SceneType", print0xa301 }, - {"Xmp.exif.SensingMethod", print0xa217 }, - {"Xmp.exif.Sharpness", printNormalSoftHard }, - {"Xmp.exif.ShutterSpeedValue", print0x9201 }, - {"Xmp.exif.SubjectDistanceRange", print0xa40c }, - {"Xmp.exif.WhiteBalance", print0xa403 }, - {"Xmp.tiff.Orientation", print0x0112 }, - {"Xmp.tiff.ResolutionUnit", printExifUnit }, - {"Xmp.tiff.XResolution", printLong }, - {"Xmp.tiff.YCbCrPositioning", print0x0213 }, - {"Xmp.tiff.YResolution", printLong }, - {"Xmp.iptcExt.DigitalSourcefileType", EXV_PRINT_VOCABULARY(iptcExtDigitalSourcefileType) }, - {"Xmp.plus.AdultContentWarning", EXV_PRINT_VOCABULARY(plusAdultContentWarning) }, - {"Xmp.plus.CopyrightStatus", EXV_PRINT_VOCABULARY(plusCopyrightStatus) }, - {"Xmp.plus.CreditLineRequired", EXV_PRINT_VOCABULARY(plusCreditLineRequired) }, - {"Xmp.plus.ImageAlterationConstraints", EXV_PRINT_VOCABULARY(plusImageAlterationConstraints) }, - {"Xmp.plus.ImageDuplicationConstraints", EXV_PRINT_VOCABULARY(plusImageDuplicationConstraints)}, - {"Xmp.plus.ImageFileConstraints", EXV_PRINT_VOCABULARY(plusImageFileConstraints) }, - {"Xmp.plus.ImageFileFormatAsDelivered", EXV_PRINT_VOCABULARY(plusImageFileFormatAsDelivered) }, - {"Xmp.plus.ImageFileSizeAsDelivered", EXV_PRINT_VOCABULARY(plusImageFileSizeAsDelivered) }, - {"Xmp.plus.ImageType", EXV_PRINT_VOCABULARY(plusImageType) }, - {"Xmp.plus.LicensorTelephoneType1", EXV_PRINT_VOCABULARY(plusLicensorTelephoneType) }, - {"Xmp.plus.LicensorTelephoneType2", EXV_PRINT_VOCABULARY(plusLicensorTelephoneType) }, - {"Xmp.plus.MinorModelAgeDisclosure", EXV_PRINT_VOCABULARY(plusMinorModelAgeDisclosure) }, - {"Xmp.plus.ModelReleaseStatus", EXV_PRINT_VOCABULARY(plusModelReleaseStatus) }, - {"Xmp.plus.PropertyReleaseStatus", EXV_PRINT_VOCABULARY(plusPropertyReleaseStatus) }, - {"Xmp.plus.Reuse", EXV_PRINT_VOCABULARY(plusReuse) } - }; - - XmpNsInfo::Ns::Ns(const std::string& ns) - : ns_(ns) - { - } - - XmpNsInfo::Prefix::Prefix(const std::string& prefix) - : prefix_(prefix) - { - } - - bool XmpNsInfo::operator==(const XmpNsInfo::Ns& ns) const - { - std::string n(ns_); - return n == ns.ns_; - } - - bool XmpNsInfo::operator==(const XmpNsInfo::Prefix& prefix) const - { - std::string p(prefix_); - return p == prefix.prefix_; - } - - bool XmpPropertyInfo::operator==(const std::string& name) const - { - std::string n(name_); - return n == name; - } - - XmpProperties::NsRegistry XmpProperties::nsRegistry_; - - const XmpNsInfo* XmpProperties::lookupNsRegistry(const XmpNsInfo::Prefix& prefix) - { - for (NsRegistry::const_iterator i = nsRegistry_.begin(); - i != nsRegistry_.end(); ++i) { - if (i->second == prefix) return &(i->second); - } - return 0; - } - - void XmpProperties::registerNs(const std::string& ns, - const std::string& prefix) - { - std::string ns2 = ns; - if ( ns2.substr(ns2.size() - 1, 1) != "/" - && ns2.substr(ns2.size() - 1, 1) != "#") ns2 += "/"; - // Check if there is already a registered namespace with this prefix - const XmpNsInfo* xnp = lookupNsRegistry(XmpNsInfo::Prefix(prefix)); - if (xnp) { -#ifndef SUPPRESS_WARNINGS - if (strcmp(xnp->ns_, ns2.c_str()) != 0) { - EXV_WARNING << "Updating namespace URI for " << prefix << " from " - << xnp->ns_ << " to " << ns2 << "\n"; - } -#endif - unregisterNs(xnp->ns_); - } - // Allocated memory is freed when the namespace is unregistered. - // Using malloc/free for better system compatibility in case - // users don't unregister their namespaces explicitly. - XmpNsInfo xn; - char* c = static_cast(std::malloc(ns2.size() + 1)); - std::strcpy(c, ns2.c_str()); - xn.ns_ = c; - c = static_cast(std::malloc(prefix.size() + 1)); - std::strcpy(c, prefix.c_str()); - xn.prefix_ = c; - xn.xmpPropertyInfo_ = 0; - xn.desc_ = ""; - nsRegistry_[ns2] = xn; - } - - void XmpProperties::unregisterNs(const std::string& ns) - { - NsRegistry::iterator i = nsRegistry_.find(ns); - if (i != nsRegistry_.end()) { - std::free(const_cast(i->second.prefix_)); - std::free(const_cast(i->second.ns_)); - nsRegistry_.erase(i); - } - } - - void XmpProperties::unregisterNs() - { - NsRegistry::iterator i = nsRegistry_.begin(); - while (i != nsRegistry_.end()) { - NsRegistry::iterator kill = i++; - unregisterNs(kill->first); - } - } - - std::string XmpProperties::prefix(const std::string& ns) - { - std::string ns2 = ns; - if ( ns2.substr(ns2.size() - 1, 1) != "/" - && ns2.substr(ns2.size() - 1, 1) != "#") ns2 += "/"; - NsRegistry::const_iterator i = nsRegistry_.find(ns2); - std::string p; - if (i != nsRegistry_.end()) { - p = i->second.prefix_; - } - else { - const XmpNsInfo* xn = find(xmpNsInfo, XmpNsInfo::Ns(ns2)); - if (xn) p = std::string(xn->prefix_); - } - return p; - } - - std::string XmpProperties::ns(const std::string& prefix) - { - const XmpNsInfo* xn = lookupNsRegistry(XmpNsInfo::Prefix(prefix)); - if (xn != 0) return xn->ns_; - return nsInfo(prefix)->ns_; - } - - const char* XmpProperties::propertyTitle(const XmpKey& key) - { - const XmpPropertyInfo* pi = propertyInfo(key); - return pi ? pi->title_ : 0; - } - - const char* XmpProperties::propertyDesc(const XmpKey& key) - { - const XmpPropertyInfo* pi = propertyInfo(key); - return pi ? pi->desc_ : 0; - } - - TypeId XmpProperties::propertyType(const XmpKey& key) - { - const XmpPropertyInfo* pi = propertyInfo(key); - return pi ? pi->typeId_ : xmpText; - } - - const XmpPropertyInfo* XmpProperties::propertyInfo(const XmpKey& key) - { - std::string prefix = key.groupName(); - std::string property = key.tagName(); - // If property is a path for a nested property, determines the innermost element - std::string::size_type i = property.find_last_of('/'); - if (i != std::string::npos) { - for (; i != std::string::npos && !isalpha(property[i]); ++i) {} - property = property.substr(i); - i = property.find_first_of(':'); - if (i != std::string::npos) { - prefix = property.substr(0, i); - property = property.substr(i+1); - } -#ifdef DEBUG - std::cout << "Nested key: " << key.key() << ", prefix: " << prefix - << ", property: " << property << "\n"; -#endif - } - const XmpPropertyInfo* pl = propertyList(prefix); - if (!pl) return 0; - const XmpPropertyInfo* pi = 0; - for (int i = 0; pl[i].name_ != 0; ++i) { - if (0 == strcmp(pl[i].name_, property.c_str())) { - pi = pl + i; - break; - } - } - return pi; - } - - const char* XmpProperties::nsDesc(const std::string& prefix) - { - return nsInfo(prefix)->desc_; - } - - const XmpPropertyInfo* XmpProperties::propertyList(const std::string& prefix) - { - return nsInfo(prefix)->xmpPropertyInfo_; - } - - const XmpNsInfo* XmpProperties::nsInfo(const std::string& prefix) - { - const XmpNsInfo::Prefix pf(prefix); - const XmpNsInfo* xn = lookupNsRegistry(pf); - if (!xn) xn = find(xmpNsInfo, pf); - if (!xn) throw Error(35, prefix); - return xn; - } - - void XmpProperties::printProperties(std::ostream& os, const std::string& prefix) - { - const XmpPropertyInfo* pl = propertyList(prefix); - if (pl) { - for (int i = 0; pl[i].name_ != 0; ++i) { - os << pl[i]; - } - } - - } // XmpProperties::printProperties - - std::ostream& XmpProperties::printProperty(std::ostream& os, - const std::string& key, - const Value& value) - { - PrintFct fct = printValue; - if (value.count() != 0) { - const XmpPrintInfo* info = find(xmpPrintInfo, key); - if (info) fct = info->printFct_; - } - return fct(os, value, 0); - } - - //! @cond IGNORE - - //! Internal Pimpl structure with private members and data of class XmpKey. - struct XmpKey::Impl { - Impl() {} //!< Default constructor - Impl(const std::string& prefix, const std::string& property); //!< Constructor - - /*! - @brief Parse and convert the \em key string into property and prefix. - Updates data members if the string can be decomposed, or throws - \em Error. - - @throw Error if the key cannot be decomposed. - */ - void decomposeKey(const std::string& key); - - // DATA - static const char* familyName_; //!< "Xmp" - - std::string prefix_; //!< Prefix - std::string property_; //!< Property name - }; - //! @endcond - - XmpKey::Impl::Impl(const std::string& prefix, const std::string& property) - { - // Validate prefix - if (XmpProperties::ns(prefix).empty()) throw Error(46, prefix); - - property_ = property; - prefix_ = prefix; - } - - const char* XmpKey::Impl::familyName_ = "Xmp"; - - XmpKey::XmpKey(const std::string& key) - : p_(new Impl) - { - p_->decomposeKey(key); - } - - XmpKey::XmpKey(const std::string& prefix, const std::string& property) - : p_(new Impl(prefix, property)) - { - } - - XmpKey::~XmpKey() - { - delete p_; - } - - XmpKey::XmpKey(const XmpKey& rhs) - : Key(rhs), p_(new Impl(*rhs.p_)) - { - } - - XmpKey& XmpKey::operator=(const XmpKey& rhs) - { - if (this == &rhs) return *this; - Key::operator=(rhs); - *p_ = *rhs.p_; - return *this; - } - - XmpKey::AutoPtr XmpKey::clone() const - { - return AutoPtr(clone_()); - } - - XmpKey* XmpKey::clone_() const - { - return new XmpKey(*this); - } - - std::string XmpKey::key() const - { - return std::string(p_->familyName_) + "." + p_->prefix_ + "." + p_->property_; - } - - const char* XmpKey::familyName() const - { - return p_->familyName_; - } - - std::string XmpKey::groupName() const - { - return p_->prefix_; - } - - std::string XmpKey::tagName() const - { - return p_->property_; - } - - std::string XmpKey::tagLabel() const - { - const char* pt = XmpProperties::propertyTitle(*this); - if (!pt) return tagName(); - return pt; - } - - uint16_t XmpKey::tag() const - { - return 0; - } - - std::string XmpKey::ns() const - { - return XmpProperties::ns(p_->prefix_); - } - - void XmpKey::Impl::decomposeKey(const std::string& key) - { - // Get the family name, prefix and property name parts of the key - std::string::size_type pos1 = key.find('.'); - if (pos1 == std::string::npos) throw Error(6, key); - std::string familyName = key.substr(0, pos1); - if (0 != strcmp(familyName.c_str(), familyName_)) { - throw Error(6, key); - } - std::string::size_type pos0 = pos1 + 1; - pos1 = key.find('.', pos0); - if (pos1 == std::string::npos) throw Error(6, key); - std::string prefix = key.substr(pos0, pos1 - pos0); - if (prefix == "") throw Error(6, key); - std::string property = key.substr(pos1 + 1); - if (property == "") throw Error(6, key); - - // Validate prefix - if (XmpProperties::ns(prefix).empty()) throw Error(46, prefix); - - property_ = property; - prefix_ = prefix; - } // XmpKey::Impl::decomposeKey - - // ************************************************************************* - // free functions - std::ostream& operator<<(std::ostream& os, const XmpPropertyInfo& property) - { - return os << property.name_ << ",\t" - << property.title_ << ",\t" - << property.xmpValueType_ << ",\t" - << TypeInfo::typeName(property.typeId_) << ",\t" - << ( property.xmpCategory_ == xmpExternal ? "External" : "Internal" ) << ",\t" - << property.desc_ << "\n"; - } - //! @endcond - -} // namespace Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/properties.hpp b/platform/win32/msvc/external/exiv2/src/properties.hpp deleted file mode 100644 index cedf545d16e..00000000000 --- a/platform/win32/msvc/external/exiv2/src/properties.hpp +++ /dev/null @@ -1,310 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file properties.hpp - @brief XMP property and type information.
References:
- XMP Specification from Adobe - (Property descriptions copied from the XMP specification with the permission of Adobe) - @version $Rev: 2701 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @author Gilles Caulier (cgilles) - caulier dot gilles at gmail dot com - @date 13-Jul-07, ahu: created - */ -#ifndef PROPERTIES_HPP_ -#define PROPERTIES_HPP_ - -// ***************************************************************************** -// included header files -#include "types.hpp" -#include "metadatum.hpp" -#include "tags.hpp" - -// + standard includes -#include -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class declarations - class XmpKey; - -// ***************************************************************************** -// class definitions - - //! Category of an XMP property - enum XmpCategory { xmpInternal, xmpExternal }; - - //! Information about one XMP property. - struct EXIV2API XmpPropertyInfo { - //! Comparison operator for name - bool operator==(const std::string& name) const; - - const char* name_; //!< Property name - const char* title_; //!< Property title or label - const char* xmpValueType_; //!< XMP value type (for info only) - TypeId typeId_; //!< Exiv2 default type for the property - XmpCategory xmpCategory_; //!< Category (internal or external) - const char* desc_; //!< Property description - }; - - //! Structure mapping XMP namespaces and (preferred) prefixes. - struct EXIV2API XmpNsInfo { - //! For comparison with prefix - struct Prefix { - //! Constructor. - Prefix(const std::string& prefix); - //! The prefix string. - std::string prefix_; - }; - //! For comparison with namespace - struct Ns { - //! Constructor. - Ns(const std::string& ns); - //! The namespace string - std::string ns_; - }; - //! Comparison operator for namespace - bool operator==(const Ns& ns) const; - //! Comparison operator for prefix - bool operator==(const Prefix& prefix) const; - - const char* ns_; //!< Namespace - const char* prefix_; //!< (Preferred) prefix - const XmpPropertyInfo* xmpPropertyInfo_; //!< List of known properties - const char* desc_; //!< Brief description of the namespace - }; - - //! XMP property reference, implemented as a static class. - class EXIV2API XmpProperties { - //! Prevent construction: not implemented. - XmpProperties(); - //! Prevent copy-construction: not implemented. - XmpProperties(const XmpProperties& rhs); - //! Prevent assignment: not implemented. - XmpProperties& operator=(const XmpProperties& rhs); - - public: - /*! - @brief Return the title (label) of the property. - @param key The property key - @return The title (label) of the property, 0 if the - key is of an unknown property. - */ - static const char* propertyTitle(const XmpKey& key); - /*! - @brief Return the description of the property. - @param key The property key - @return The description of the property, 0 if the - key is of an unknown property. - */ - static const char* propertyDesc(const XmpKey& key); - /*! - @brief Return the type for property \em key. The default - for unknown keys is xmpText. - @param key The property key - @return The type of the property - */ - static TypeId propertyType(const XmpKey& key); - /*! - @brief Return information for the property for key. - - If the key is a path to a nested property (one which contains a slash, - like \c Xmp.MP.RegionInfo/MPRI:Regions), determines the innermost element - (\c Xmp.MPRI.Regions) and returns its property information. - - @param key The property key - @return A pointer to the property information, 0 if the - key is of an unknown property. - */ - static const XmpPropertyInfo* propertyInfo(const XmpKey& key); - /*! - @brief Return the namespace name for the schema associated - with \em prefix. - @param prefix Prefix - @return The namespace name - @throw Error if no namespace is registered with \em prefix. - */ - static std::string ns(const std::string& prefix); - /*! - @brief Return the namespace description for the schema associated - with \em prefix. - @param prefix Prefix - @return The namespace description - @throw Error if no namespace is registered with \em prefix. - */ - static const char* nsDesc(const std::string& prefix); - /*! - @brief Return read-only list of built-in properties for \em prefix. - @param prefix Prefix - @return Pointer to the built-in properties for prefix, may be 0 if - none is configured in the namespace info. - @throw Error if no namespace is registered with \em prefix. - */ - static const XmpPropertyInfo* propertyList(const std::string& prefix); - /*! - @brief Return information about a schema namespace for \em prefix. - Always returns a valid pointer. - @param prefix The prefix - @return A pointer to the related information - @throw Error if no namespace is registered with \em prefix. - */ - static const XmpNsInfo* nsInfo(const std::string& prefix); - /*! - @brief Return the (preferred) prefix for schema namespace \em ns. - @param ns Schema namespace - @return The prefix or an empty string if namespace \em ns is not - registered. - */ - static std::string prefix(const std::string& ns); - //! Print a list of properties of a schema namespace to output stream \em os. - static void printProperties(std::ostream& os, const std::string& prefix); - - //! Interpret and print the value of an XMP property - static std::ostream& printProperty(std::ostream& os, - const std::string& key, - const Value& value); - /*! - @brief Register namespace \em ns with preferred prefix \em prefix. - - If the prefix is a known or previously registered prefix, the - corresponding namespace URI is overwritten. - - @note This invalidates XMP keys generated with the previous prefix. - */ - static void registerNs(const std::string& ns, const std::string& prefix); - /*! - @brief Unregister a custom namespace \em ns. - - The function only has an effect if there is a namespace \em ns - registered earlier, it does not unregister built-in namespaces. - - @note This invalidates XMP keys generated in this namespace. - */ - static void unregisterNs(const std::string& ns); - /*! - @brief Unregister all custom namespaces. - - The function only unregisters namespaces registered earlier, it does not - unregister built-in namespaces. - - @note This invalidates XMP keys generated in any custom namespace. - */ - static void unregisterNs(); - //! Type for the namespace registry - typedef std::map NsRegistry; - /*! - @brief Get the registered namespace for a specific \em prefix from the registry. - */ - static const XmpNsInfo* lookupNsRegistry(const XmpNsInfo::Prefix& prefix); - - // DATA - static NsRegistry nsRegistry_; //!< Namespace registry - - }; // class XmpProperties - - /*! - @brief Concrete keys for XMP metadata. - */ - class EXIV2API XmpKey : public Key { - public: - //! Shortcut for an %XmpKey auto pointer. - typedef std::auto_ptr AutoPtr; - - //! @name Creators - //@{ - /*! - @brief Constructor to create an XMP key from a key string. - - @param key The key string. - @throw Error if the first part of the key is not 'Xmp' or - the second part of the key cannot be parsed and converted - to a known (i.e., built-in or registered) schema prefix. - */ - explicit XmpKey(const std::string& key); - /*! - @brief Constructor to create an XMP key from a schema prefix - and a property name. - - @param prefix Schema prefix name - @param property Property name - - @throw Error if the schema prefix is not known. - */ - XmpKey(const std::string& prefix, const std::string& property); - //! Copy constructor. - XmpKey(const XmpKey& rhs); - //! Virtual destructor. - virtual ~XmpKey(); - //@} - - //! @name Manipulators - //@{ - //! Assignment operator. - XmpKey& operator=(const XmpKey& rhs); - //@} - - //! @name Accessors - //@{ - virtual std::string key() const; - virtual const char* familyName() const; - /*! - @brief Return the name of the group (the second part of the key). - For XMP keys, the group name is the schema prefix name. - */ - virtual std::string groupName() const; - virtual std::string tagName() const; - virtual std::string tagLabel() const; - //! Properties don't have a tag number. Return 0. - virtual uint16_t tag() const; - - AutoPtr clone() const; - - // Todo: Should this be removed? What about tagLabel then? - //! Return the schema namespace for the prefix of the key - std::string ns() const; - //@} - - private: - //! Internal virtual copy constructor. - EXV_DLLLOCAL virtual XmpKey* clone_() const; - - private: - // Pimpl idiom - struct Impl; - Impl* p_; - - }; // class XmpKey - -// ***************************************************************************** -// free functions - - //! Output operator for property info - EXIV2API std::ostream& operator<<(std::ostream& os, const XmpPropertyInfo& propertyInfo); - -} // namespace Exiv2 - -#endif // #ifndef PROPERTIES_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/psdimage.cpp b/platform/win32/msvc/external/exiv2/src/psdimage.cpp deleted file mode 100644 index acc1a959514..00000000000 --- a/platform/win32/msvc/external/exiv2/src/psdimage.cpp +++ /dev/null @@ -1,714 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: psdimage.cpp - Version: $Rev: 2681 $ - Author(s): Marco Piovanelli, Ovolab (marco) - Michael Ulbrich (mul) - History: 05-Mar-2007, marco: created - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: psdimage.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -//#define DEBUG 1 - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif -#include "psdimage.hpp" -#include "jpgimage.hpp" -#include "image.hpp" -#include "basicio.hpp" -#include "error.hpp" -#include "futils.hpp" - -// + standard includes -#include -#include -#include -#include -#include -#include - -// Todo: Consolidate with existing code in struct Photoshop (jpgimage.hpp): -// Extend this helper to a proper class with all required functionality, -// then move it here or into a separate file? - -//! @cond IGNORE -struct PhotoshopResourceBlock { - uint32_t resourceType; // one of the markers in Photoshop::irbId_[] - uint16_t resourceId; - unsigned char resourceName[2]; // Pascal string (length byte + characters), padded to an even size -- this assumes the empty string - uint32_t resourceDataSize; -}; -//! @endcond - -// Photoshop resource IDs (Cf. ) -enum { - kPhotoshopResourceID_Photoshop2Info = 0x03e8, // [obsolete -- Photoshop 2.0 only] General information -- contains five 2-byte values: number of channels, rows, columns, depth and mode - kPhotoshopResourceID_MacintoshClassicPrintInfo = 0x03e9, // [optional] Macintosh classic print record (120 bytes) - kPhotoshopResourceID_MacintoshCarbonPrintInfo = 0x03ea, // [optional] Macintosh carbon print info (variable-length XML format) - kPhotoshopResourceID_Photoshop2ColorTable = 0x03eb, // [obsolete -- Photoshop 2.0 only] Indexed color table - kPhotoshopResourceID_ResolutionInfo = 0x03ed, // PhotoshopResolutionInfo structure (see below) - kPhotoshopResourceID_AlphaChannelsNames = 0x03ee, // as a series of Pstrings - kPhotoshopResourceID_DisplayInfo = 0x03ef, // see appendix A in Photoshop SDK - kPhotoshopResourceID_PStringCaption = 0x03f0, // [optional] the caption, as a Pstring - kPhotoshopResourceID_BorderInformation = 0x03f1, // border width and units - kPhotoshopResourceID_BackgroundColor = 0x03f2, // see additional Adobe information - kPhotoshopResourceID_PrintFlags = 0x03f3, // labels, crop marks, colour bars, ecc... - kPhotoshopResourceID_BWHalftoningInfo = 0x03f4, // Gray-scale and multich. half-toning info - kPhotoshopResourceID_ColorHalftoningInfo = 0x03f5, // Colour half-toning information - kPhotoshopResourceID_DuotoneHalftoningInfo = 0x03f6, // Duo-tone half-toning information - kPhotoshopResourceID_BWTransferFunc = 0x03f7, // Gray-scale and multich. transfer function - kPhotoshopResourceID_ColorTransferFuncs = 0x03f8, // Colour transfer function - kPhotoshopResourceID_DuotoneTransferFuncs = 0x03f9, // Duo-tone transfer function - kPhotoshopResourceID_DuotoneImageInfo = 0x03fa, // Duo-tone image information - kPhotoshopResourceID_EffectiveBW = 0x03fb, // two bytes for the effective black and white values - kPhotoshopResourceID_ObsoletePhotoshopTag1 = 0x03fc, // [obsolete] - kPhotoshopResourceID_EPSOptions = 0x03fd, // Encapsulated Postscript options - kPhotoshopResourceID_QuickMaskInfo = 0x03fe, // Quick Mask information. 2 bytes containing Quick Mask channel ID, 1 byte boolean indicating whether the mask was initially empty. - kPhotoshopResourceID_ObsoletePhotoshopTag2 = 0x03ff, // [obsolete] - kPhotoshopResourceID_LayerStateInfo = 0x0400, // index of target layer (0 means bottom) - kPhotoshopResourceID_WorkingPathInfo = 0x0401, // should not be saved to the file - kPhotoshopResourceID_LayersGroupInfo = 0x0402, // for grouping layers together - kPhotoshopResourceID_ObsoletePhotoshopTag3 = 0x0403, // [obsolete] ?? - kPhotoshopResourceID_IPTC_NAA = 0x0404, // IPTC/NAA data - kPhotoshopResourceID_RawImageMode = 0x0405, // image mode for raw format files - kPhotoshopResourceID_JPEGQuality = 0x0406, // [private] - kPhotoshopResourceID_GridGuidesInfo = 0x0408, // see additional Adobe information - kPhotoshopResourceID_ThumbnailResource = 0x0409, // see additional Adobe information - kPhotoshopResourceID_CopyrightFlag = 0x040a, // true if image is copyrighted - kPhotoshopResourceID_URL = 0x040b, // text string with a resource locator - kPhotoshopResourceID_ThumbnailResource2 = 0x040c, // see additional Adobe information - kPhotoshopResourceID_GlobalAngle = 0x040d, // global lighting angle for effects layer - kPhotoshopResourceID_ColorSamplersResource = 0x040e, // see additional Adobe information - kPhotoshopResourceID_ICCProfile = 0x040f, // see notes from Internat. Color Consortium - kPhotoshopResourceID_Watermark = 0x0410, // one byte - kPhotoshopResourceID_ICCUntagged = 0x0411, // 1 means intentionally untagged - kPhotoshopResourceID_EffectsVisible = 0x0412, // 1 byte to show/hide all effects layers - kPhotoshopResourceID_SpotHalftone = 0x0413, // version, length and data - kPhotoshopResourceID_IDsBaseValue = 0x0414, // base value for new layers ID's - kPhotoshopResourceID_UnicodeAlphaNames = 0x0415, // length plus Unicode string - kPhotoshopResourceID_IndexedColourTableCount = 0x0416, // [Photoshop 6.0 and later] 2 bytes - kPhotoshopResourceID_TransparentIndex = 0x0417, // [Photoshop 6.0 and later] 2 bytes - kPhotoshopResourceID_GlobalAltitude = 0x0419, // [Photoshop 6.0 and later] 4 bytes - kPhotoshopResourceID_Slices = 0x041a, // [Photoshop 6.0 and later] see additional Adobe info - kPhotoshopResourceID_WorkflowURL = 0x041b, // [Photoshop 6.0 and later] 4 bytes length + Unicode string - kPhotoshopResourceID_JumpToXPEP = 0x041c, // [Photoshop 6.0 and later] see additional Adobe info - kPhotoshopResourceID_AlphaIdentifiers = 0x041d, // [Photoshop 6.0 and later] 4*(n+1) bytes - kPhotoshopResourceID_URLList = 0x041e, // [Photoshop 6.0 and later] structured Unicode URL's - kPhotoshopResourceID_VersionInfo = 0x0421, // [Photoshop 6.0 and later] see additional Adobe info - kPhotoshopResourceID_ExifInfo = 0x0422, // [Photoshop 7.0?] Exif metadata - kPhotoshopResourceID_XMPPacket = 0x0424, // [Photoshop 7.0?] XMP packet -- see http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf - kPhotoshopResourceID_ClippingPathName = 0x0bb7, // [Photoshop 6.0 and later] name of clipping path - kPhotoshopResourceID_MorePrintFlags = 0x2710 // [Photoshop 6.0 and later] Print flags information. 2 bytes version (=1), 1 byte center crop marks, 1 byte (=0), 4 bytes bleed width value, 2 bytes bleed width scale. -}; - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - PsdImage::PsdImage(BasicIo::AutoPtr io) - : Image(ImageType::psd, mdExif | mdIptc | mdXmp, io) - { - } // PsdImage::PsdImage - - std::string PsdImage::mimeType() const - { - return "image/x-photoshop"; - } - - void PsdImage::setComment(const std::string& /*comment*/) - { - // not supported - throw(Error(32, "Image comment", "Photoshop")); - } - - void PsdImage::readMetadata() - { -#ifdef DEBUG - std::cerr << "Exiv2::PsdImage::readMetadata: Reading Photoshop file " << io_->path() << "\n"; -#endif - if (io_->open() != 0) - { - throw Error(9, io_->path(), strError()); - } - IoCloser closer(*io_); - // Ensure that this is the correct image type - if (!isPsdType(*io_, false)) - { - if (io_->error() || io_->eof()) throw Error(14); - throw Error(3, "Photoshop"); - } - clearMetadata(); - - /* - The Photoshop header goes as follows -- all numbers are in big-endian byte order: - - offset length name description - ====== ======= ========= ========= - 0 4 bytes signature always '8BPS' - 4 2 bytes version always equal to 1 - 6 6 bytes reserved must be zero - 12 2 bytes channels number of channels in the image, including alpha channels (1 to 24) - 14 4 bytes rows the height of the image in pixels - 18 4 bytes columns the width of the image in pixels - 22 2 bytes depth the number of bits per channel - 24 2 bytes mode the color mode of the file; Supported values are: Bitmap=0; Grayscale=1; Indexed=2; RGB=3; CMYK=4; Multichannel=7; Duotone=8; Lab=9 - */ - byte buf[26]; - if (io_->read(buf, 26) != 26) - { - throw Error(3, "Photoshop"); - } - pixelWidth_ = getLong(buf + 18, bigEndian); - pixelHeight_ = getLong(buf + 14, bigEndian); - - // immediately following the image header is the color mode data section, - // the first four bytes of which specify the byte size of the whole section - if (io_->read(buf, 4) != 4) - { - throw Error(3, "Photoshop"); - } - - // skip it - uint32_t colorDataLength = getULong(buf, bigEndian); - if (io_->seek(colorDataLength, BasicIo::cur)) - { - throw Error(3, "Photoshop"); - } - - // after the color data section, comes a list of resource blocks, preceeded by the total byte size - if (io_->read(buf, 4) != 4) - { - throw Error(3, "Photoshop"); - } - uint32_t resourcesLength = getULong(buf, bigEndian); - while (resourcesLength > 0) - { - if (io_->read(buf, 8) != 8) - { - throw Error(3, "Photoshop"); - } - - if (!Photoshop::isIrb(buf, 4)) - { - break; // bad resource type - } - uint16_t resourceId = getUShort(buf + 4, bigEndian); - uint32_t resourceNameLength = buf[6] & ~1; - - // skip the resource name, plus any padding - io_->seek(resourceNameLength, BasicIo::cur); - - // read resource size - if (io_->read(buf, 4) != 4) - { - throw Error(3, "Photoshop"); - } - uint32_t resourceSize = getULong(buf, bigEndian); - uint32_t curOffset = io_->tell(); - -#ifdef DEBUG - std::cerr << std::hex << "resourceId: " << resourceId << std::dec << " length: " << resourceSize << std::hex << "\n"; -#endif - - readResourceBlock(resourceId, resourceSize); - resourceSize = (resourceSize + 1) & ~1; // pad to even - io_->seek(curOffset + resourceSize, BasicIo::beg); - resourcesLength -= (12 + resourceNameLength + resourceSize); - } - - } // PsdImage::readMetadata - - void PsdImage::readResourceBlock(uint16_t resourceId, uint32_t resourceSize) - { - switch(resourceId) - { - case kPhotoshopResourceID_IPTC_NAA: - { - DataBuf rawIPTC(resourceSize); - io_->read(rawIPTC.pData_, rawIPTC.size_); - if (io_->error() || io_->eof()) throw Error(14); - if (IptcParser::decode(iptcData_, rawIPTC.pData_, rawIPTC.size_)) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to decode IPTC metadata.\n"; -#endif - iptcData_.clear(); - } - break; - } - - case kPhotoshopResourceID_ExifInfo: - { - DataBuf rawExif(resourceSize); - io_->read(rawExif.pData_, rawExif.size_); - if (io_->error() || io_->eof()) throw Error(14); - ByteOrder bo = ExifParser::decode(exifData_, rawExif.pData_, rawExif.size_); - setByteOrder(bo); - if (rawExif.size_ > 0 && byteOrder() == invalidByteOrder) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to decode Exif metadata.\n"; -#endif - exifData_.clear(); - } - break; - } - - case kPhotoshopResourceID_XMPPacket: - { - DataBuf xmpPacket(resourceSize); - io_->read(xmpPacket.pData_, xmpPacket.size_); - if (io_->error() || io_->eof()) throw Error(14); - xmpPacket_.assign(reinterpret_cast(xmpPacket.pData_), xmpPacket.size_); - if (xmpPacket_.size() > 0 && XmpParser::decode(xmpData_, xmpPacket_)) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to decode XMP metadata.\n"; -#endif - } - break; - } - - // - PS 4.0 preview data is fetched from ThumbnailResource - // - PS >= 5.0 preview data is fetched from ThumbnailResource2 - case kPhotoshopResourceID_ThumbnailResource: - case kPhotoshopResourceID_ThumbnailResource2: - { - /* - Photoshop thumbnail resource header - - offset length name description - ====== ======== ==== =========== - 0 4 bytes format = 1 (kJpegRGB). Also supports kRawRGB (0). - 4 4 bytes width Width of thumbnail in pixels. - 8 4 bytes height Height of thumbnail in pixels. - 12 4 bytes widthbytes Padded row bytes as (width * bitspixel + 31) / 32 * 4. - 16 4 bytes size Total size as widthbytes * height * planes - 20 4 bytes compressedsize Size after compression. Used for consistentcy check. - 24 2 bytes bitspixel = 24. Bits per pixel. - 26 2 bytes planes = 1. Number of planes. - 28 variable data JFIF data in RGB format. - Note: For resource ID 1033 the data is in BGR format. - */ - byte buf[28]; - if (io_->read(buf, 28) != 28) - { - throw Error(3, "Photoshop"); - } - NativePreview nativePreview; - nativePreview.position_ = io_->tell(); - nativePreview.size_ = getLong(buf + 20, bigEndian); // compressedsize - nativePreview.width_ = getLong(buf + 4, bigEndian); - nativePreview.height_ = getLong(buf + 8, bigEndian); - const uint32_t format = getLong(buf + 0, bigEndian); - - if (nativePreview.size_ > 0 && nativePreview.position_ >= 0) { - io_->seek(static_cast(nativePreview.size_), BasicIo::cur); - if (io_->error() || io_->eof()) throw Error(14); - - if (format == 1) { - nativePreview.filter_ = ""; - nativePreview.mimeType_ = "image/jpeg"; - nativePreviews_.push_back(nativePreview); - } else { - // unsupported format of native preview - } - } - break; - } - - default: - { - break; - } - } - } // PsdImage::readResourceBlock - - void PsdImage::writeMetadata() - { - if (io_->open() != 0) - { - throw Error(9, io_->path(), strError()); - } - IoCloser closer(*io_); - BasicIo::AutoPtr tempIo(io_->temporary()); // may throw - assert (tempIo.get() != 0); - - doWriteMetadata(*tempIo); // may throw - io_->close(); - io_->transfer(*tempIo); // may throw - - } // PsdImage::writeMetadata - - void PsdImage::doWriteMetadata(BasicIo& outIo) - { - if (!io_->isopen()) throw Error(20); - if (!outIo.isopen()) throw Error(21); - -#ifdef DEBUG - std::cout << "Exiv2::PsdImage::doWriteMetadata: Writing PSD file " << io_->path() << "\n"; - std::cout << "Exiv2::PsdImage::doWriteMetadata: tmp file created " << outIo.path() << "\n"; -#endif - - // Ensure that this is the correct image type - if (!isPsdType(*io_, true)) { - if (io_->error() || io_->eof()) throw Error(20); - throw Error(22); - } - - io_->seek(0, BasicIo::beg); // rewind - - DataBuf lbuf(4096); - byte buf[8]; - - // Get Photoshop header from original file - byte psd_head[26]; - if (io_->read(psd_head, 26) != 26) throw Error(3, "Photoshop"); - - // Write Photoshop header data out to new PSD file - if (outIo.write(psd_head, 26) != 26) throw Error(21); - - // Read colorDataLength from original PSD - if (io_->read(buf, 4) != 4) throw Error(3, "Photoshop"); - - uint32_t colorDataLength = getULong(buf, bigEndian); - - // Write colorDataLength - ul2Data(buf, colorDataLength, bigEndian); - if (outIo.write(buf, 4) != 4) throw Error(21); -#ifdef DEBUG - std::cerr << std::dec << "colorDataLength: " << colorDataLength << "\n"; -#endif - // Copy colorData - uint32_t readTotal = 0; - long toRead = 0; - while (readTotal < colorDataLength) { - toRead = static_cast(colorDataLength - readTotal) < lbuf.size_ - ? static_cast(colorDataLength - readTotal) : lbuf.size_; - if (io_->read(lbuf.pData_, toRead) != toRead) throw Error(3, "Photoshop"); - readTotal += toRead; - if (outIo.write(lbuf.pData_, toRead) != toRead) throw Error(21); - } - if (outIo.error()) throw Error(21); - - uint32_t resLenOffset = io_->tell(); // remember for later update - - // Read length of all resource blocks from original PSD - if (io_->read(buf, 4) != 4) throw Error(3, "Photoshop"); - - uint32_t oldResLength = getULong(buf, bigEndian); - uint32_t newResLength = 0; - - // Write oldResLength (will be updated later) - ul2Data(buf, oldResLength, bigEndian); - if (outIo.write(buf, 4) != 4) throw Error(21); - -#ifdef DEBUG - std::cerr << std::dec << "oldResLength: " << oldResLength << "\n"; -#endif - - // Iterate over original resource blocks. - // Replace or insert IPTC, EXIF and XMP - // Original resource blocks assumed to be sorted ASC - - bool iptcDone = false; - bool exifDone = false; - bool xmpDone = false; - while (oldResLength > 0) { - if (io_->read(buf, 8) != 8) throw Error(3, "Photoshop"); - - // read resource type and ID - uint32_t resourceType = getULong(buf, bigEndian); - - if (!Photoshop::isIrb(buf, 4)) - { - throw Error(3, "Photoshop"); // bad resource type - } - uint16_t resourceId = getUShort(buf + 4, bigEndian); - uint32_t resourceNameLength = buf[6]; - uint32_t adjResourceNameLen = resourceNameLength & ~1; - unsigned char resourceNameFirstChar = buf[7]; - - // read rest of resource name, plus any padding - DataBuf resName(256); - if ( io_->read(resName.pData_, adjResourceNameLen) - != static_cast(adjResourceNameLen)) throw Error(3, "Photoshop"); - - // read resource size (actual length w/o padding!) - if (io_->read(buf, 4) != 4) throw Error(3, "Photoshop"); - - uint32_t resourceSize = getULong(buf, bigEndian); - uint32_t pResourceSize = (resourceSize + 1) & ~1; // padded resource size - uint32_t curOffset = io_->tell(); - - // Write IPTC_NAA resource block - if ((resourceId == kPhotoshopResourceID_IPTC_NAA || - resourceId > kPhotoshopResourceID_IPTC_NAA) && iptcDone == false) { - newResLength += writeIptcData(iptcData_, outIo); - iptcDone = true; - } - - // Write ExifInfo resource block - else if ((resourceId == kPhotoshopResourceID_ExifInfo || - resourceId > kPhotoshopResourceID_ExifInfo) && exifDone == false) { - newResLength += writeExifData(exifData_, outIo); - exifDone = true; - } - - // Write XMPpacket resource block - else if ((resourceId == kPhotoshopResourceID_XMPPacket || - resourceId > kPhotoshopResourceID_XMPPacket) && xmpDone == false) { - newResLength += writeXmpData(xmpData_, outIo); - xmpDone = true; - } - - // Copy all other resource blocks - if ( resourceId != kPhotoshopResourceID_IPTC_NAA - && resourceId != kPhotoshopResourceID_ExifInfo - && resourceId != kPhotoshopResourceID_XMPPacket) { -#ifdef DEBUG - std::cerr << std::hex << "copy : resourceType: " << resourceType << "\n"; - std::cerr << std::hex << "copy : resourceId: " << resourceId << "\n"; - std::cerr << std::dec; -#endif - // Copy resource block to new PSD file - ul2Data(buf, resourceType, bigEndian); - if (outIo.write(buf, 4) != 4) throw Error(21); - us2Data(buf, resourceId, bigEndian); - if (outIo.write(buf, 2) != 2) throw Error(21); - // Write resource name as Pascal string - buf[0] = resourceNameLength & 0x00ff; - if (outIo.write(buf, 1) != 1) throw Error(21); - buf[0] = resourceNameFirstChar; - if (outIo.write(buf, 1) != 1) throw Error(21); - if ( outIo.write(resName.pData_, adjResourceNameLen) - != static_cast(adjResourceNameLen)) throw Error(21); - ul2Data(buf, resourceSize, bigEndian); - if (outIo.write(buf, 4) != 4) throw Error(21); - - readTotal = 0; - toRead = 0; - while (readTotal < pResourceSize) { - toRead = static_cast(pResourceSize - readTotal) < lbuf.size_ - ? static_cast(pResourceSize - readTotal) : lbuf.size_; - if (io_->read(lbuf.pData_, toRead) != toRead) { - throw Error(3, "Photoshop"); - } - readTotal += toRead; - if (outIo.write(lbuf.pData_, toRead) != toRead) throw Error(21); - } - if (outIo.error()) throw Error(21); - newResLength += pResourceSize + adjResourceNameLen + 12; - } - - io_->seek(curOffset + pResourceSize, BasicIo::beg); - oldResLength -= (12 + adjResourceNameLen + pResourceSize); - } - - // Append IPTC_NAA resource block, if not yet written - if (iptcDone == false) { - newResLength += writeIptcData(iptcData_, outIo); - iptcDone = true; - } - - // Append ExifInfo resource block, if not yet written - if (exifDone == false) { - newResLength += writeExifData(exifData_, outIo); - exifDone = true; - } - - // Append XmpPacket resource block, if not yet written - if (xmpDone == false) { - newResLength += writeXmpData(xmpData_, outIo); - xmpDone = true; - } - - // Copy remaining data - long readSize = 0; - while ((readSize=io_->read(lbuf.pData_, lbuf.size_))) { - if (outIo.write(lbuf.pData_, readSize) != readSize) throw Error(21); - } - if (outIo.error()) throw Error(21); - - // Update length of resources -#ifdef DEBUG - std::cerr << "newResLength: " << newResLength << "\n"; -#endif - outIo.seek(resLenOffset, BasicIo::beg); - ul2Data(buf, newResLength, bigEndian); - if (outIo.write(buf, 4) != 4) throw Error(21); - - } // PsdImage::doWriteMetadata - - uint32_t PsdImage::writeIptcData(const IptcData& iptcData, BasicIo& out) const - { - uint32_t resLength = 0; - byte buf[8]; - - if (iptcData.count() > 0) { - DataBuf rawIptc = IptcParser::encode(iptcData); - if (rawIptc.size_ > 0) { -#ifdef DEBUG - std::cerr << std::hex << "write: resourceId: " << kPhotoshopResourceID_IPTC_NAA << "\n"; - std::cerr << std::dec << "Writing IPTC_NAA: size: " << rawIptc.size_ << "\n"; -#endif - if (out.write(reinterpret_cast(Photoshop::irbId_[0]), 4) != 4) throw Error(21); - us2Data(buf, kPhotoshopResourceID_IPTC_NAA, bigEndian); - if (out.write(buf, 2) != 2) throw Error(21); - us2Data(buf, 0, bigEndian); // NULL resource name - if (out.write(buf, 2) != 2) throw Error(21); - ul2Data(buf, rawIptc.size_, bigEndian); - if (out.write(buf, 4) != 4) throw Error(21); - // Write encoded Iptc data - if (out.write(rawIptc.pData_, rawIptc.size_) != rawIptc.size_) throw Error(21); - resLength += rawIptc.size_ + 12; - if (rawIptc.size_ & 1) // even padding - { - buf[0] = 0; - if (out.write(buf, 1) != 1) throw Error(21); - resLength++; - } - } - } - return resLength; - } // PsdImage::writeIptcData - - uint32_t PsdImage::writeExifData(const ExifData& exifData, BasicIo& out) - { - uint32_t resLength = 0; - byte buf[8]; - - if (exifData.count() > 0) { - Blob blob; - ByteOrder bo = byteOrder(); - if (bo == invalidByteOrder) { - bo = littleEndian; - setByteOrder(bo); - } - ExifParser::encode(blob, bo, exifData); - - if (blob.size() > 0) { -#ifdef DEBUG - std::cerr << std::hex << "write: resourceId: " << kPhotoshopResourceID_ExifInfo << "\n"; - std::cerr << std::dec << "Writing ExifInfo: size: " << blob.size() << "\n"; -#endif - if (out.write(reinterpret_cast(Photoshop::irbId_[0]), 4) != 4) throw Error(21); - us2Data(buf, kPhotoshopResourceID_ExifInfo, bigEndian); - if (out.write(buf, 2) != 2) throw Error(21); - us2Data(buf, 0, bigEndian); // NULL resource name - if (out.write(buf, 2) != 2) throw Error(21); - ul2Data(buf, static_cast(blob.size()), bigEndian); - if (out.write(buf, 4) != 4) throw Error(21); - // Write encoded Exif data - if (out.write(&blob[0], static_cast(blob.size())) != static_cast(blob.size())) throw Error(21); - resLength += static_cast(blob.size()) + 12; - if (blob.size() & 1) // even padding - { - buf[0] = 0; - if (out.write(buf, 1) != 1) throw Error(21); - resLength++; - } - } - } - return resLength; - } // PsdImage::writeExifData - - uint32_t PsdImage::writeXmpData(const XmpData& xmpData, BasicIo& out) const - { - std::string xmpPacket; - uint32_t resLength = 0; - byte buf[8]; - -#ifdef DEBUG - std::cerr << "writeXmpFromPacket(): " << writeXmpFromPacket() << "\n"; -#endif -// writeXmpFromPacket(true); - if (writeXmpFromPacket() == false) { - if (XmpParser::encode(xmpPacket, xmpData) > 1) { -#ifndef SUPPRESS_WARNINGS - EXV_ERROR << "Failed to encode XMP metadata.\n"; -#endif - } - } - - if (xmpPacket.size() > 0) { -#ifdef DEBUG - std::cerr << std::hex << "write: resourceId: " << kPhotoshopResourceID_XMPPacket << "\n"; - std::cerr << std::dec << "Writing XMPPacket: size: " << xmpPacket.size() << "\n"; -#endif - if (out.write(reinterpret_cast(Photoshop::irbId_[0]), 4) != 4) throw Error(21); - us2Data(buf, kPhotoshopResourceID_XMPPacket, bigEndian); - if (out.write(buf, 2) != 2) throw Error(21); - us2Data(buf, 0, bigEndian); // NULL resource name - if (out.write(buf, 2) != 2) throw Error(21); - ul2Data(buf, static_cast(xmpPacket.size()), bigEndian); - if (out.write(buf, 4) != 4) throw Error(21); - // Write XMPPacket - if (out.write(reinterpret_cast(xmpPacket.data()), static_cast(xmpPacket.size())) - != static_cast(xmpPacket.size())) throw Error(21); - if (out.error()) throw Error(21); - resLength += static_cast(xmpPacket.size()) + 12; - if (xmpPacket.size() & 1) // even padding - { - buf[0] = 0; - if (out.write(buf, 1) != 1) throw Error(21); - resLength++; - } - } - return resLength; - } // PsdImage::writeXmpData - - // ************************************************************************* - // free functions - Image::AutoPtr newPsdInstance(BasicIo::AutoPtr io, bool /*create*/) - { - Image::AutoPtr image(new PsdImage(io)); - if (!image->good()) - { - image.reset(); - } - return image; - } - - bool isPsdType(BasicIo& iIo, bool advance) - { - const int32_t len = 6; - const unsigned char PsdHeader[6] = { '8', 'B', 'P', 'S', 0, 1 }; - byte buf[len]; - iIo.read(buf, len); - if (iIo.error() || iIo.eof()) - { - return false; - } - bool matched = (memcmp(buf, PsdHeader, len) == 0); - if (!advance || !matched) - { - iIo.seek(-len, BasicIo::cur); - } - - return matched; - } -} // namespace Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/psdimage.hpp b/platform/win32/msvc/external/exiv2/src/psdimage.hpp deleted file mode 100644 index 1ea2f1c0153..00000000000 --- a/platform/win32/msvc/external/exiv2/src/psdimage.hpp +++ /dev/null @@ -1,153 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file psdimage.hpp - @brief Photoshop image, implemented using the following references: - Adobe Photoshop 6.0 File Format Specification by Adobe
- @version $Rev: 2681 $ - @author Marco Piovanelli, Ovolab (marco) - marco.piovanelli@pobox.com - @author Michael Ulbrich - mul@rentapacs.de - @date 05-Mar-2007, marco: created - */ -#ifndef PSDIMAGE_HPP_ -#define PSDIMAGE_HPP_ - -// ***************************************************************************** -// included header files -#include "exif.hpp" -#include "iptc.hpp" -#include "image.hpp" -#include "types.hpp" - -// + standard includes -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class definitions - - // Add PSD to the supported image formats - namespace ImageType { - const int psd = 12; //!< Photoshop (PSD) image type (see class PsdImage) - } - - /*! - @brief Class to access raw Photoshop images. - */ - class EXIV2API PsdImage : public Image { - //! @name NOT Implemented - //@{ - //! Copy constructor - PsdImage(const PsdImage& rhs); - //! Assignment operator - PsdImage& operator=(const PsdImage& rhs); - //@} - - public: - //! @name Creators - //@{ - /*! - @brief Constructor to open a Photoshop image. Since the - constructor can not return a result, callers should check the - good() method after object construction to determine success - or failure. - @param io An auto-pointer that owns a BasicIo instance used for - reading and writing image metadata. \b Important: The constructor - takes ownership of the passed in BasicIo instance through the - auto-pointer. Callers should not continue to use the BasicIo - instance after it is passed to this method. Use the Image::io() - method to get a temporary reference. - */ - PsdImage(BasicIo::AutoPtr io); - //@} - - //! @name Manipulators - //@{ - void readMetadata(); - void writeMetadata(); - /*! - @brief Not supported. Calling this function will throw an Error(32). - */ - void setComment(const std::string& comment); - //@} - - //! @name Accessors - //@{ - /*! - @brief Return the MIME type of the image. - - The MIME type returned for Photoshop images is "image/x-photoshop". - - @note This should really be "image/vnd.adobe.photoshop" - (officially registered with IANA in December 2005 -- see - http://www.iana.org/assignments/media-types/image/vnd.adobe.photoshop) - but Apple, as of Tiger (10.4.8), maps this official MIME type to a - dynamic UTI, rather than "com.adobe.photoshop-image" as it should. - */ - std::string mimeType() const; - //@} - - private: - //! @name Manipulators - //@{ - EXV_DLLLOCAL void readResourceBlock(uint16_t resourceId, uint32_t resourceSize); - /*! - @brief Provides the main implementation of writeMetadata() by - writing all buffered metadata to the provided BasicIo. - @param oIo BasicIo instance to write to (a temporary location). - - @return 4 if opening or writing to the associated BasicIo fails - */ - EXV_DLLLOCAL void doWriteMetadata(BasicIo& oIo); - EXV_DLLLOCAL uint32_t writeExifData(const ExifData& exifData, BasicIo& out); - //@} - - //! @name Accessors - //@{ - EXV_DLLLOCAL uint32_t writeIptcData(const IptcData& iptcData, BasicIo& out) const; - EXV_DLLLOCAL uint32_t writeXmpData(const XmpData& xmpData, BasicIo& out) const; - //@} - - }; // class PsdImage - -// ***************************************************************************** -// template, inline and free functions - - // These could be static private functions on Image subclasses but then - // ImageFactory needs to be made a friend. - /*! - @brief Create a new PsdImage instance and return an auto-pointer to it. - Caller owns the returned object and the auto-pointer ensures that - it will be deleted. - */ - EXIV2API Image::AutoPtr newPsdInstance(BasicIo::AutoPtr io, bool create); - - //! Check if the file iIo is a Photoshop image. - EXIV2API bool isPsdType(BasicIo& iIo, bool advance); - -} // namespace Exiv2 - -#endif // #ifndef PSDIMAGE_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/rafimage.cpp b/platform/win32/msvc/external/exiv2/src/rafimage.cpp deleted file mode 100644 index bcbd7282bfb..00000000000 --- a/platform/win32/msvc/external/exiv2/src/rafimage.cpp +++ /dev/null @@ -1,165 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: rafimage.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - History: 05-Feb-07, ahu: created - Credits: See header file - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: rafimage.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#include "rafimage.hpp" -#include "tiffimage.hpp" -#include "image.hpp" -#include "basicio.hpp" -#include "error.hpp" -#include "futils.hpp" - -// + standard includes -#include -#include -#include -#include - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - RafImage::RafImage(BasicIo::AutoPtr io, bool /*create*/) - : Image(ImageType::raf, mdExif | mdIptc | mdXmp, io) - { - } // RafImage::RafImage - - std::string RafImage::mimeType() const - { - return "image/x-fuji-raf"; - } - - int RafImage::pixelWidth() const - { - Exiv2::ExifData::const_iterator widthIter = exifData_.findKey(Exiv2::ExifKey("Exif.Photo.PixelXDimension")); - if (widthIter != exifData_.end() && widthIter->count() > 0) { - return widthIter->toLong(); - } - return 0; - } - - int RafImage::pixelHeight() const - { - Exiv2::ExifData::const_iterator heightIter = exifData_.findKey(Exiv2::ExifKey("Exif.Photo.PixelYDimension")); - if (heightIter != exifData_.end() && heightIter->count() > 0) { - return heightIter->toLong(); - } - return 0; - } - - void RafImage::setExifData(const ExifData& /*exifData*/) - { - // Todo: implement me! - throw(Error(32, "Exif metadata", "RAF")); - } - - void RafImage::setIptcData(const IptcData& /*iptcData*/) - { - // Todo: implement me! - throw(Error(32, "IPTC metadata", "RAF")); - } - - void RafImage::setComment(const std::string& /*comment*/) - { - // not supported - throw(Error(32, "Image comment", "RAF")); - } - - void RafImage::readMetadata() - { -#ifdef DEBUG - std::cerr << "Reading RAF file " << io_->path() << "\n"; -#endif - if (io_->open() != 0) throw Error(9, io_->path(), strError()); - IoCloser closer(*io_); - // Ensure that this is the correct image type - if (!isRafType(*io_, false)) { - if (io_->error() || io_->eof()) throw Error(14); - throw Error(3, "RAF"); - } - byte const* pData = io_->mmap(); - long size = io_->size(); - if (size < 88 + 4) throw Error(14); // includes the test for -1 - uint32_t const start = getULong(pData + 84, bigEndian) + 12; - if (static_cast(size) < start) throw Error(14); - clearMetadata(); - ByteOrder bo = TiffParser::decode(exifData_, - iptcData_, - xmpData_, - pData + start, - size - start); - - exifData_["Exif.Image2.JPEGInterchangeFormat"] = getULong(pData + 84, bigEndian); - exifData_["Exif.Image2.JPEGInterchangeFormatLength"] = getULong(pData + 88, bigEndian); - - setByteOrder(bo); - } // RafImage::readMetadata - - void RafImage::writeMetadata() - { - //! Todo: implement me! - throw(Error(31, "RAF")); - } // RafImage::writeMetadata - - // ************************************************************************* - // free functions - Image::AutoPtr newRafInstance(BasicIo::AutoPtr io, bool create) - { - Image::AutoPtr image(new RafImage(io, create)); - if (!image->good()) { - image.reset(); - } - return image; - } - - bool isRafType(BasicIo& iIo, bool advance) - { - const int32_t len = 8; - byte buf[len]; - iIo.read(buf, len); - if (iIo.error() || iIo.eof()) { - return false; - } - int rc = memcmp(buf, "FUJIFILM", 8); - if (!advance || rc != 0) { - iIo.seek(-len, BasicIo::cur); - } - return rc == 0; - } - -} // namespace Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/rafimage.hpp b/platform/win32/msvc/external/exiv2/src/rafimage.hpp deleted file mode 100644 index 84fc579f453..00000000000 --- a/platform/win32/msvc/external/exiv2/src/rafimage.hpp +++ /dev/null @@ -1,139 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file rafimage.hpp - @brief Fujifilm RAW image - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 05-Feb-07, ahu: created - */ -#ifndef RAFIMAGE_HPP_ -#define RAFIMAGE_HPP_ - -// ***************************************************************************** -// included header files -#include "image.hpp" -#include "basicio.hpp" -#include "types.hpp" - -// + standard includes -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class definitions - - // Add RAF to the supported image formats - namespace ImageType { - const int raf = 8; //!< RAF image type (see class RafImage) - } - - /*! - @brief Class to access raw Fujifilm RAF images. Exif metadata is - supported directly, IPTC is read from the Exif data, if present. - */ - class EXIV2API RafImage : public Image { - public: - //! @name Creators - //@{ - /*! - @brief Constructor that can either open an existing RAF image or create - a new image from scratch. If a new image is to be created, any - existing data is overwritten. Since the constructor can not return - a result, callers should check the good() method after object - construction to determine success or failure. - @param io An auto-pointer that owns a BasicIo instance used for - reading and writing image metadata. \b Important: The constructor - takes ownership of the passed in BasicIo instance through the - auto-pointer. Callers should not continue to use the BasicIo - instance after it is passed to this method. Use the Image::io() - method to get a temporary reference. - @param create Specifies if an existing image should be read (false) - or if a new file should be created (true). - */ - RafImage(BasicIo::AutoPtr io, bool create); - //@} - - //! @name Manipulators - //@{ - void readMetadata(); - /*! - @brief Todo: Write metadata back to the image. This method is not - yet implemented. Calling it will throw an Error(31). - */ - void writeMetadata(); - /*! - @brief Todo: Not supported yet, requires writeMetadata(). Calling - this function will throw an Error(32). - */ - void setExifData(const ExifData& exifData); - /*! - @brief Todo: Not supported yet, requires writeMetadata(). Calling - this function will throw an Error(32). - */ - void setIptcData(const IptcData& iptcData); - /*! - @brief Not supported. RAF format does not contain a comment. - Calling this function will throw an Error(32). - */ - void setComment(const std::string& comment); - //@} - - //! @name Accessors - //@{ - std::string mimeType() const; - int pixelWidth() const; - int pixelHeight() const; - //@} - - private: - //! @name NOT implemented - //@{ - //! Copy constructor - RafImage(const RafImage& rhs); - //! Assignment operator - RafImage& operator=(const RafImage& rhs); - //@} - - }; // class RafImage - -// ***************************************************************************** -// template, inline and free functions - - // These could be static private functions on Image subclasses but then - // ImageFactory needs to be made a friend. - /*! - @brief Create a new RafImage instance and return an auto-pointer to it. - Caller owns the returned object and the auto-pointer ensures that - it will be deleted. - */ - EXIV2API Image::AutoPtr newRafInstance(BasicIo::AutoPtr io, bool create); - - //! Check if the file iIo is a RAF image. - EXIV2API bool isRafType(BasicIo& iIo, bool advance); - -} // namespace Exiv2 - -#endif // #ifndef RAFIMAGE_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/rcsid_int.hpp b/platform/win32/msvc/external/exiv2/src/rcsid_int.hpp deleted file mode 100644 index f463cc63e31..00000000000 --- a/platform/win32/msvc/external/exiv2/src/rcsid_int.hpp +++ /dev/null @@ -1,62 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file rcsid_int.hpp - @brief Define an RCS id string in every object file compiled from a source - file that includes rcsid_int.hpp. - - This is a simplified version of the ACE_RCSID macro that is used in the - ACE(TM) distribution. - - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 02-Feb-04, ahu: created - */ -#ifndef RCSID_INT_HPP_ -#define RCSID_INT_HPP_ - -#if !defined (EXIV2_RCSID) -/*! - @brief Macro to store version information in each object file. - - Use this macro by including the following two lines at the beginning of - each *.cpp file. See the ident(1) manual pages for more information. - - @code - #include "rcsid_int.hpp" - EXIV2_RCSID("@(#) $Id$"); - @endcode - - The macro hack itself has the following purposes: - -# To define the RCS id string variable in the local namespace, so - that there won't be any duplicate extern symbols at link time. - -# To avoid warnings of the type "variable declared and never used". - - */ -#define EXIV2_RCSID(id) \ - namespace { \ - inline const char* getRcsId(const char*) { return id ; } \ - const char* rcsId = getRcsId(rcsId); \ - } - -#endif // #if !defined (EXIV2_RCSID) -#endif // #ifndef RCSID_INT_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/rw2image.cpp b/platform/win32/msvc/external/exiv2/src/rw2image.cpp deleted file mode 100644 index a81f7a76e4c..00000000000 --- a/platform/win32/msvc/external/exiv2/src/rw2image.cpp +++ /dev/null @@ -1,287 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: rw2image.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - History: 06-Jan-09, ahu: created - - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: rw2image.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#include "rw2image.hpp" -#include "rw2image_int.hpp" -#include "tiffcomposite_int.hpp" -#include "tiffimage_int.hpp" -#include "image.hpp" -#include "preview.hpp" -#include "error.hpp" -#include "futils.hpp" - -// + standard includes -#ifdef DEBUG -# include -#endif - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - using namespace Internal; - - Rw2Image::Rw2Image(BasicIo::AutoPtr io) - : Image(ImageType::rw2, mdExif | mdIptc | mdXmp, io) - { - } // Rw2Image::Rw2Image - - std::string Rw2Image::mimeType() const - { - return "image/x-panasonic-rw2"; - } - - int Rw2Image::pixelWidth() const - { - ExifData::const_iterator imageWidth = - exifData_.findKey(Exiv2::ExifKey("Exif.PanasonicRaw.SensorWidth")); - if (imageWidth != exifData_.end() && imageWidth->count() > 0) { - return imageWidth->toLong(); - } - return 0; - } - - int Rw2Image::pixelHeight() const - { - ExifData::const_iterator imageHeight = - exifData_.findKey(Exiv2::ExifKey("Exif.PanasonicRaw.SensorHeight")); - if (imageHeight != exifData_.end() && imageHeight->count() > 0) { - return imageHeight->toLong(); - } - return 0; - } - - void Rw2Image::setExifData(const ExifData& /*exifData*/) - { - // Todo: implement me! - throw(Error(32, "Exif metadata", "RW2")); - } - - void Rw2Image::setIptcData(const IptcData& /*iptcData*/) - { - // Todo: implement me! - throw(Error(32, "IPTC metadata", "RW2")); - } - - void Rw2Image::setComment(const std::string& /*comment*/) - { - // not supported - throw(Error(32, "Image comment", "RW2")); - } - - void Rw2Image::readMetadata() - { -#ifdef DEBUG - std::cerr << "Reading RW2 file " << io_->path() << "\n"; -#endif - if (io_->open() != 0) { - throw Error(9, io_->path(), strError()); - } - IoCloser closer(*io_); - // Ensure that this is the correct image type - if (!isRw2Type(*io_, false)) { - if (io_->error() || io_->eof()) throw Error(14); - throw Error(3, "RW2"); - } - clearMetadata(); - ByteOrder bo = Rw2Parser::decode(exifData_, - iptcData_, - xmpData_, - io_->mmap(), - io_->size()); - setByteOrder(bo); - - // A lot more metadata is hidden in the embedded preview image - // Todo: This should go into the Rw2Parser, but for that it needs the Image - PreviewManager loader(*this); - PreviewPropertiesList list = loader.getPreviewProperties(); - // Todo: What if there are more preview images? - if (list.size() > 1) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "RW2 image contains more than one preview. None used.\n"; -#endif - } - if (list.size() != 1) return; - ExifData exifData; - PreviewImage preview = loader.getPreviewImage(*list.begin()); - Image::AutoPtr image = ImageFactory::open(preview.pData(), preview.size()); - if (image.get() == 0) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to open RW2 preview image.\n"; -#endif - return; - } - image->readMetadata(); - ExifData& prevData = image->exifData(); - if (!prevData.empty()) { - // Filter duplicate tags - for (ExifData::const_iterator pos = exifData_.begin(); pos != exifData_.end(); ++pos) { - if (pos->ifdId() == panaRawId) continue; - ExifData::iterator dup = prevData.findKey(ExifKey(pos->key())); - if (dup != prevData.end()) { -#ifdef DEBUG - std::cerr << "Filtering duplicate tag " << pos->key() - << " (values '" << pos->value() - << "' and '" << dup->value() << "')\n"; -#endif - prevData.erase(dup); - } - } - } - // Remove tags not applicable for raw images - static const char* filteredTags[] = { - "Exif.Photo.ComponentsConfiguration", - "Exif.Photo.CompressedBitsPerPixel", - "Exif.Panasonic.ColorEffect", - "Exif.Panasonic.Contrast", - "Exif.Panasonic.NoiseReduction", - "Exif.Panasonic.ColorMode", - "Exif.Panasonic.OpticalZoomMode", - "Exif.Panasonic.Contrast", - "Exif.Panasonic.Saturation", - "Exif.Panasonic.Sharpness", - "Exif.Panasonic.FilmMode", - "Exif.Panasonic.SceneMode", - "Exif.Panasonic.WBRedLevel", - "Exif.Panasonic.WBGreenLevel", - "Exif.Panasonic.WBBlueLevel", - "Exif.Photo.ColorSpace", - "Exif.Photo.PixelXDimension", - "Exif.Photo.PixelYDimension", - "Exif.Photo.SceneType", - "Exif.Photo.CustomRendered", - "Exif.Photo.DigitalZoomRatio", - "Exif.Photo.SceneCaptureType", - "Exif.Photo.GainControl", - "Exif.Photo.Contrast", - "Exif.Photo.Saturation", - "Exif.Photo.Sharpness", - "Exif.Image.PrintImageMatching", - "Exif.Image.YCbCrPositioning" - }; - for (unsigned int i = 0; i < EXV_COUNTOF(filteredTags); ++i) { - ExifData::iterator pos = prevData.findKey(ExifKey(filteredTags[i])); - if (pos != prevData.end()) { -#ifdef DEBUG - std::cerr << "Exif tag " << pos->key() << " removed\n"; -#endif - prevData.erase(pos); - } - } - - // Add the remaining tags - for (ExifData::const_iterator pos = prevData.begin(); pos != prevData.end(); ++pos) { - exifData_.add(*pos); - } - - } // Rw2Image::readMetadata - - void Rw2Image::writeMetadata() - { - // Todo: implement me! - throw(Error(31, "RW2")); - } // Rw2Image::writeMetadata - - ByteOrder Rw2Parser::decode( - ExifData& exifData, - IptcData& iptcData, - XmpData& xmpData, - const byte* pData, - uint32_t size - ) - { - Rw2Header rw2Header; - return TiffParserWorker::decode(exifData, - iptcData, - xmpData, - pData, - size, - Tag::pana, - TiffMapping::findDecoder, - &rw2Header); - } - - // ************************************************************************* - // free functions - Image::AutoPtr newRw2Instance(BasicIo::AutoPtr io, bool /*create*/) - { - Image::AutoPtr image(new Rw2Image(io)); - if (!image->good()) { - image.reset(); - } - return image; - } - - bool isRw2Type(BasicIo& iIo, bool advance) - { - const int32_t len = 24; - byte buf[len]; - iIo.read(buf, len); - if (iIo.error() || iIo.eof()) { - return false; - } - Rw2Header header; - bool rc = header.read(buf, len); - if (!advance || !rc) { - iIo.seek(-len, BasicIo::cur); - } - return rc; - } - -} // namespace Exiv2 - -namespace Exiv2 { - namespace Internal { - - Rw2Header::Rw2Header() - : TiffHeaderBase(0x0055, 24, littleEndian, 0x00000018) - { - } - - Rw2Header::~Rw2Header() - { - } - - DataBuf Rw2Header::write() const - { - // Todo: Implement me! - return DataBuf(); - } - -}} // namespace Internal, Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/rw2image.hpp b/platform/win32/msvc/external/exiv2/src/rw2image.hpp deleted file mode 100644 index f31fb29b632..00000000000 --- a/platform/win32/msvc/external/exiv2/src/rw2image.hpp +++ /dev/null @@ -1,159 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file rw2image.hpp - @brief Class Rw2Image - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 06-Jan-09, ahu: created - */ -#ifndef RW2IMAGE_HPP_ -#define RW2IMAGE_HPP_ - -// ***************************************************************************** -// included header files -#include "image.hpp" -#include "basicio.hpp" -#include "types.hpp" - -// + standard includes -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class definitions - - // Add RW2 to the supported image formats - namespace ImageType { - const int rw2 = 16; //!< RW2 image type (see class Rw2Image) - } - - /*! - @brief Class to access raw Panasonic RW2 images. Exif metadata is - supported directly, IPTC and XMP are read from the Exif data, if - present. - */ - class EXIV2API Rw2Image : public Image { - public: - //! @name Creators - //@{ - /*! - @brief Constructor to open an existing RW2 image. Since the - constructor can not return a result, callers should check the - good() method after object construction to determine success or - failure. - @param io An auto-pointer that owns a BasicIo instance used for - reading and writing image metadata. \b Important: The constructor - takes ownership of the passed in BasicIo instance through the - auto-pointer. Callers should not continue to use the BasicIo - instance after it is passed to this method. Use the Image::io() - method to get a temporary reference. - */ - Rw2Image(BasicIo::AutoPtr io); - //@} - - //! @name Manipulators - //@{ - void readMetadata(); - /*! - @brief Todo: Write metadata back to the image. This method is not - yet implemented. Calling it will throw an Error(31). - */ - void writeMetadata(); - /*! - @brief Todo: Not supported yet, requires writeMetadata(). Calling - this function will throw an Error(32). - */ - void setExifData(const ExifData& exifData); - /*! - @brief Todo: Not supported yet, requires writeMetadata(). Calling - this function will throw an Error(32). - */ - void setIptcData(const IptcData& iptcData); - /*! - @brief Not supported. RW2 format does not contain a comment. - Calling this function will throw an Error(32). - */ - void setComment(const std::string& comment); - //@} - - //! @name Accessors - //@{ - std::string mimeType() const; - int pixelWidth() const; - int pixelHeight() const; - //@} - - private: - //! @name NOT implemented - //@{ - //! Copy constructor - Rw2Image(const Rw2Image& rhs); - //! Assignment operator - Rw2Image& operator=(const Rw2Image& rhs); - //@} - - }; // class Rw2Image - - /*! - @brief Stateless parser class for data in RW2 format. Images use this - class to decode and encode RW2 data. Only decoding is currently - implemented. See class TiffParser for details. - */ - class EXIV2API Rw2Parser { - public: - /*! - @brief Decode metadata from a buffer \em pData of length \em size - with data in RW2 format to the provided metadata containers. - See TiffParser::decode(). - */ - static ByteOrder decode( - ExifData& exifData, - IptcData& iptcData, - XmpData& xmpData, - const byte* pData, - uint32_t size - ); - - }; // class Rw2Parser - -// ***************************************************************************** -// template, inline and free functions - - // These could be static private functions on Image subclasses but then - // ImageFactory needs to be made a friend. - /*! - @brief Create a new Rw2Image instance and return an auto-pointer to it. - Caller owns the returned object and the auto-pointer ensures that - it will be deleted. - */ - EXIV2API Image::AutoPtr newRw2Instance(BasicIo::AutoPtr io, bool create); - - //! Check if the file iIo is a RW2 image. - EXIV2API bool isRw2Type(BasicIo& iIo, bool advance); - -} // namespace Exiv2 - -#endif // #ifndef RW2IMAGE_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/rw2image_int.hpp b/platform/win32/msvc/external/exiv2/src/rw2image_int.hpp deleted file mode 100644 index 589b89ac83e..00000000000 --- a/platform/win32/msvc/external/exiv2/src/rw2image_int.hpp +++ /dev/null @@ -1,71 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file rw2image_int.hpp - @brief Internal classes to support RW2 image format - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 06-Jan-09, ahu: created - */ -#ifndef RW2IMAGE_INT_HPP_ -#define RW2IMAGE_INT_HPP_ - -// ***************************************************************************** -// included header files -#include "tiffimage_int.hpp" -#include "types.hpp" - -// + standard includes -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - namespace Internal { - -// ***************************************************************************** -// class definitions - - /*! - @brief Panasonic RW2 header structure. - */ - class Rw2Header : public TiffHeaderBase { - public: - //! @name Creators - //@{ - //! Default constructor - Rw2Header(); - //! Destructor. - ~Rw2Header(); - //@} - - //! @name Accessors - //@{ - //! Not yet implemented. Does nothing and returns an empty buffer. - DataBuf write() const; - //@} - - }; // class Rw2Header - -}} // namespace Internal, Exiv2 - -#endif // #ifndef RW2IMAGE_INT_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/samsungmn.cpp b/platform/win32/msvc/external/exiv2/src/samsungmn.cpp deleted file mode 100644 index 83911148609..00000000000 --- a/platform/win32/msvc/external/exiv2/src/samsungmn.cpp +++ /dev/null @@ -1,185 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: samsungmn.cpp - Version: $Rev: 2701 $ - Author(s): Andreas Huggel (ahu) - History: 27-Sep-10, ahu: created - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: samsungmn.cpp 2701 2012-04-13 14:08:56Z ahuggel $") - -// ***************************************************************************** -// included header files -#include "types.hpp" -#include "samsungmn_int.hpp" -#include "tags_int.hpp" -#include "value.hpp" -#include "i18n.h" // NLS support. - -// + standard includes -#include -#include -#include -#include -#include - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - namespace Internal { - - //! LensType, tag 0xa003 - extern const TagDetails samsung2LensType[] = { - { 0, N_("Built-in") }, - { 1, N_("Samsung 30mm F2 Pancake") }, - { 2, N_("Samsung Zoom 18-55mm F3.5-5.6 OIS") }, - { 3, N_("Samsung Zoom 50-200mm F4-5.6 ED OIS") }, - { 4, N_("Samsung 20-50mm F3.5-5.6 Compact Zoom") }, - { 5, N_("Samsung 20mm F2.8 Pancake") }, - { 7, N_("Samsung 60mm F2.8 Macro ED OIS SSA") }, - { 8, N_("Samsung 16mm F2.4 Ultra Wide Pancake") } - }; - - //! ColorSpace, tag 0xa011 - extern const TagDetails samsung2ColorSpace[] = { - { 0, N_("sRGB") }, - { 1, N_("Adobe RGB") } - }; - - //! SmartRange, tag 0xa012 - extern const TagDetails samsung2SmartRange[] = { - { 0, N_("Off") }, - { 1, N_("On") } - }; - - //! Print the camera temperature - std::ostream& printCameraTemperature(std::ostream& os, const Value& value, const ExifData*) - { - if (value.count() != 1 || value.typeId() != signedRational) { - return os << value; - } - return os << value.toFloat() << " C"; - } - - //! Print the 35mm focal length - std::ostream& printFocalLength35(std::ostream& os, const Value& value, const ExifData*) - { - if (value.count() != 1 || value.typeId() != unsignedLong) { - return os << value; - } - long length = value.toLong(); - if (length == 0) { - os << _("Unknown"); - } - else { - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(1) << length / 10.0 << " mm"; - os.copyfmt(oss); - } - return os; - } - - // Samsung MakerNote Tag Info - const TagInfo Samsung2MakerNote::tagInfo_[] = { - TagInfo(0x0001, "Version", N_("Version"), N_("Makernote version"), samsung2Id, makerTags, undefined, -1, printExifVersion), - TagInfo(0x0021, "PictureWizard", N_("Picture Wizard"), N_("Picture wizard composite tag"), samsung2Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x0030, "LocalLocationName", N_("Local Location Name"), N_("Local location name"), samsung2Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0031, "LocationName", N_("Location Name"), N_("Location name"), samsung2Id, makerTags, asciiString, -1, printValue), - TagInfo(0x0035, "Preview", N_("Pointer to a preview image"), N_("Offset to an IFD containing a preview image"), samsung2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0043, "CameraTemperature", N_("Camera Temperature"), N_("Camera temperature"), samsung2Id, makerTags, signedRational, -1, printCameraTemperature), - TagInfo(0xa001, "FirmwareName", N_("Firmware Name"), N_("Firmware name"), samsung2Id, makerTags, asciiString, -1, printValue), - TagInfo(0xa003, "LensType", N_("Lens Type"), N_("Lens type"), samsung2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(samsung2LensType)), - TagInfo(0xa004, "LensFirmware", N_("Lens Firmware"), N_("Lens firmware"), samsung2Id, makerTags, asciiString, -1, printValue), - TagInfo(0xa010, "SensorAreas", N_("Sensor Areas"), N_("Sensor areas"), samsung2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xa011, "ColorSpace", N_("Color Space"), N_("Color space"), samsung2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(samsung2ColorSpace)), - TagInfo(0xa012, "SmartRange", N_("Smart Range"), N_("Smart range"), samsung2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(samsung2SmartRange)), - TagInfo(0xa013, "ExposureBiasValue", N_("Exposure Bias Value"), N_("Exposure bias value"), samsung2Id, makerTags, signedRational, -1, print0x9204), - TagInfo(0xa014, "ISO", N_("ISO"), N_("ISO"), samsung2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xa018, "ExposureTime", N_("Exposure Time"), N_("Exposure time"), samsung2Id, makerTags, unsignedRational, -1, print0x829a), - TagInfo(0xa019, "FNumber", N_("FNumber"), N_("The F number."), samsung2Id, makerTags, unsignedRational, -1, print0x829d), - TagInfo(0xa01a, "FocalLengthIn35mmFormat", N_("Focal Length In 35mm Format"), N_("Focal length in 35mm format"), samsung2Id, makerTags, unsignedLong, -1, printFocalLength35), - TagInfo(0xa020, "EncryptionKey", N_("Encryption Key"), N_("Encryption key"), samsung2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xa021, "WB_RGGBLevelsUncorrected", N_("WB RGGB Levels Uncorrected"), N_("WB RGGB levels not corrected for WB_RGGBLevelsBlack"), samsung2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xa022, "WB_RGGBLevelsAuto", N_("WB RGGB Levels Auto"), N_("WB RGGB levels auto"), samsung2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xa023, "WB_RGGBLevelsIlluminator1", N_("WB RGGB Levels Illuminator1"), N_("WB RGGB levels illuminator1"), samsung2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xa024, "WB_RGGBLevelsIlluminator2", N_("WB RGGB Levels Illuminator2"), N_("WB RGGB levels illuminator2"), samsung2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xa028, "WB_RGGBLevelsBlack", N_("WB RGGB Levels Black"), N_("WB RGGB levels black"), samsung2Id, makerTags, signedLong, -1, printValue), - TagInfo(0xa030, "ColorMatrix", N_("Color Matrix"), N_("Color matrix"), samsung2Id, makerTags, signedLong, -1, printValue), - TagInfo(0xa031, "ColorMatrixSRGB", N_("Color Matrix sRGB"), N_("Color matrix sRGB"), samsung2Id, makerTags, signedLong, -1, printValue), - TagInfo(0xa032, "ColorMatrixAdobeRGB", N_("Color Matrix Adobe RGB"), N_("Color matrix Adobe RGB"), samsung2Id, makerTags, signedLong, -1, printValue), - TagInfo(0xa040, "ToneCurve1", N_("Tone Curve 1"), N_("Tone curve 1"), samsung2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xa041, "ToneCurve2", N_("Tone Curve 2"), N_("Tone curve 2"), samsung2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xa042, "ToneCurve3", N_("Tone Curve 3"), N_("Tone curve 3"), samsung2Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xa043, "ToneCurve4", N_("Tone Curve 4"), N_("Tone curve 4"), samsung2Id, makerTags, unsignedLong, -1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownSamsung2MakerNoteTag)", "(UnknownSamsung2MakerNoteTag)", N_("Unknown Samsung2MakerNote tag"), samsung2Id, makerTags, undefined, -1, printValue) - }; - - const TagInfo* Samsung2MakerNote::tagList() - { - return tagInfo_; - } - - //! PictureWizard Mode - extern const TagDetails samsungPwMode[] = { - { 0, N_("Standard") }, - { 1, N_("Vivid") }, - { 2, N_("Portrait") }, - { 3, N_("Landscape") }, - { 4, N_("Forest") }, - { 5, N_("Retro") }, - { 6, N_("Cool") }, - { 7, N_("Calm") }, - { 8, N_("Classic") }, - { 9, N_("Custom1") }, - { 10, N_("Custom2") }, - { 11, N_("Custom3") } - }; - - //! Print the tag value minus 4 - std::ostream& printValueMinus4(std::ostream& os, const Value& value, const ExifData*) - { - if (value.count() != 1 || value.typeId() != unsignedShort) { - return os << value; - } - return os << value.toLong(0) - 4; - } - - // Samsung PictureWizard Tag Info - const TagInfo Samsung2MakerNote::tagInfoPw_[] = { - TagInfo(0x0000, "Mode", N_("Mode"), N_("Mode"), samsungPwId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(samsungPwMode)), - TagInfo(0x0001, "Color", N_("Color"), N_("Color"), samsungPwId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0002, "Saturation", N_("Saturation"), N_("Saturation"), samsungPwId, makerTags, unsignedShort, 1, printValueMinus4), - TagInfo(0x0003, "Sharpness", N_("Sharpness"), N_("Sharpness"), samsungPwId, makerTags, unsignedShort, 1, printValueMinus4), - TagInfo(0x0004, "Contrast", N_("Contrast"), N_("Contrast"), samsungPwId, makerTags, unsignedShort, 1, printValueMinus4), - // End of list marker - TagInfo(0xffff, "(UnknownSamsungPictureWizardTag)", "(UnknownSamsungPictureWizardTag)", N_("Unknown SamsungPictureWizard tag"), samsungPwId, makerTags, unsignedShort, 1, printValue) - }; - - const TagInfo* Samsung2MakerNote::tagListPw() - { - return tagInfoPw_; - } - -}} // namespace Internal, Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/samsungmn_int.hpp b/platform/win32/msvc/external/exiv2/src/samsungmn_int.hpp deleted file mode 100644 index a2aa6beffb4..00000000000 --- a/platform/win32/msvc/external/exiv2/src/samsungmn_int.hpp +++ /dev/null @@ -1,69 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file samsungmn_int.hpp - @brief Samsung makernote tags.
References:
- [1] ExifTool by Phil Harvey - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 27-Sep-10, ahu: created - */ -#ifndef SAMSUNGMN_INT_HPP_ -#define SAMSUNGMN_INT_HPP_ - -// ***************************************************************************** -// included header files -#include "tags.hpp" -#include "types.hpp" - -// + standard includes -#include -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - namespace Internal { - -// ***************************************************************************** -// class definitions - - //! MakerNote for Samsung cameras - class Samsung2MakerNote { - public: - //! Return read-only list of built-in Samsung tags - static const TagInfo* tagList(); - //! Return read-only list of built-in PictureWizard tags - static const TagInfo* tagListPw(); - - private: - //! Tag information - static const TagInfo tagInfo_[]; - //! PictureWizard tag information - static const TagInfo tagInfoPw_[]; - - }; // class Samsung2MakerNote - -}} // namespace Internal, Exiv2 - -#endif // #ifndef SAMSUNGMN_INT_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/sigmamn.cpp b/platform/win32/msvc/external/exiv2/src/sigmamn.cpp deleted file mode 100644 index ad4e899367f..00000000000 --- a/platform/win32/msvc/external/exiv2/src/sigmamn.cpp +++ /dev/null @@ -1,176 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: sigmamn.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - History: 02-Apr-04, ahu: created - Credits: Sigma and Foveon MakerNote implemented according to the specification - in "SIGMA and FOVEON EXIF MakerNote Documentation" by Foveon. - - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: sigmamn.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#include "types.hpp" -#include "sigmamn_int.hpp" -#include "tags_int.hpp" -#include "value.hpp" -#include "i18n.h" // NLS support. - -// + standard includes -#include -#include -#include -#include -#include - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - namespace Internal { - - // Sigma (Foveon) MakerNote Tag Info - const TagInfo SigmaMakerNote::tagInfo_[] = { - TagInfo(0x0002, "SerialNumber", N_("Serial Number"), - N_("Camera serial number"), - sigmaId, makerTags, asciiString, -1, printValue), - TagInfo(0x0003, "DriveMode", N_("Drive Mode"), - N_("Drive mode"), - sigmaId, makerTags, asciiString, -1, printValue), - TagInfo(0x0004, "ResolutionMode", N_("Resolution Mode"), - N_("Resolution mode"), - sigmaId, makerTags, asciiString, -1, printValue), - TagInfo(0x0005, "AutofocusMode", N_("Autofocus Mode"), - N_("Autofocus mode"), - sigmaId, makerTags, asciiString, -1, printValue), - TagInfo(0x0006, "FocusSetting", N_("Focus Setting"), - N_("Focus setting"), - sigmaId, makerTags, asciiString, -1, printValue), - TagInfo(0x0007, "WhiteBalance", N_("White Balance"), - N_("White balance"), - sigmaId, makerTags, asciiString, -1, printValue), - TagInfo(0x0008, "ExposureMode", N_("Exposure Mode"), - N_("Exposure mode"), - sigmaId, makerTags, asciiString, -1, print0x0008), - TagInfo(0x0009, "MeteringMode", N_("Metering Mode"), - N_("Metering mode"), - sigmaId, makerTags, asciiString, -1, print0x0009), - TagInfo(0x000a, "LensRange", N_("Lens Range"), - N_("Lens focal length range"), - sigmaId, makerTags, asciiString, -1, printValue), - TagInfo(0x000b, "ColorSpace", N_("Color Space"), - N_("Color space"), - sigmaId, makerTags, asciiString, -1, printValue), - TagInfo(0x000c, "Exposure", N_("Exposure"), - N_("Exposure"), - sigmaId, makerTags, asciiString, -1, printStripLabel), - TagInfo(0x000d, "Contrast", N_("Contrast"), - N_("Contrast"), - sigmaId, makerTags, asciiString, -1, printStripLabel), - TagInfo(0x000e, "Shadow", N_("Shadow"), - N_("Shadow"), - sigmaId, makerTags, asciiString, -1, printStripLabel), - TagInfo(0x000f, "Highlight", N_("Highlight"), - N_("Highlight"), - sigmaId, makerTags, asciiString, -1, printStripLabel), - TagInfo(0x0010, "Saturation", N_("Saturation"), - N_("Saturation"), - sigmaId, makerTags, asciiString, -1, printStripLabel), - TagInfo(0x0011, "Sharpness", N_("Sharpness"), - N_("Sharpness"), - sigmaId, makerTags, asciiString, -1, printStripLabel), - TagInfo(0x0012, "FillLight", N_("Fill Light"), - N_("X3 Fill light"), - sigmaId, makerTags, asciiString, -1, printStripLabel), - TagInfo(0x0014, "ColorAdjustment", N_("Color Adjustment"), - N_("Color adjustment"), - sigmaId, makerTags, asciiString, -1, printStripLabel), - TagInfo(0x0015, "AdjustmentMode", N_("Adjustment Mode"), - N_("Adjustment mode"), - sigmaId, makerTags, asciiString, -1, printValue), - TagInfo(0x0016, "Quality", N_("Quality"), - N_("Quality"), - sigmaId, makerTags, asciiString, -1, printStripLabel), - TagInfo(0x0017, "Firmware", N_("Firmware"), - N_("Firmware"), - sigmaId, makerTags, asciiString, -1, printValue), - TagInfo(0x0018, "Software", N_("Software"), - N_("Software"), - sigmaId, makerTags, asciiString, -1, printValue), - TagInfo(0x0019, "AutoBracket", N_("Auto Bracket"), - N_("Auto bracket"), - sigmaId, makerTags, asciiString, -1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownSigmaMakerNoteTag)", "(UnknownSigmaMakerNoteTag)", - N_("Unknown SigmaMakerNote tag"), - sigmaId, makerTags, asciiString, -1, printValue) - }; - - const TagInfo* SigmaMakerNote::tagList() - { - return tagInfo_; - } - - std::ostream& SigmaMakerNote::printStripLabel(std::ostream& os, - const Value& value, - const ExifData*) - { - std::string v = value.toString(); - std::string::size_type pos = v.find(':'); - if (pos != std::string::npos) { - if (v[pos + 1] == ' ') ++pos; - v = v.substr(pos + 1); - } - return os << v; - } - - std::ostream& SigmaMakerNote::print0x0008(std::ostream& os, - const Value& value, - const ExifData*) - { - switch (value.toString()[0]) { - case 'P': os << _("Program"); break; - case 'A': os << _("Aperture priority"); break; - case 'S': os << _("Shutter priority"); break; - case 'M': os << _("Manual"); break; - default: os << "(" << value << ")"; break; - } - return os; - } - - std::ostream& SigmaMakerNote::print0x0009(std::ostream& os, - const Value& value, - const ExifData*) - { - switch (value.toString()[0]) { - case 'A': os << _("Average"); break; - case 'C': os << _("Center"); break; - case '8': os << _("8-Segment"); break; - default: os << "(" << value << ")"; break; - } - return os; - } - -}} // namespace Internal, Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/sigmamn_int.hpp b/platform/win32/msvc/external/exiv2/src/sigmamn_int.hpp deleted file mode 100644 index 7275be7d597..00000000000 --- a/platform/win32/msvc/external/exiv2/src/sigmamn_int.hpp +++ /dev/null @@ -1,76 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file sigmamn_int.hpp - @brief Sigma and Foveon MakerNote implemented according to the specification - - SIGMA and FOVEON EXIF MakerNote Documentation by Foveon. - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 02-Apr-04, ahu: created - */ -#ifndef SIGMAMN_INT_HPP_ -#define SIGMAMN_INT_HPP_ - -// ***************************************************************************** -// included header files -#include "tags.hpp" -#include "types.hpp" - -// + standard includes -#include -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - namespace Internal { - -// ***************************************************************************** -// class definitions - - //! MakerNote for Sigma (Foveon) cameras - class SigmaMakerNote { - public: - //! Return read-only list of built-in Sigma tags - static const TagInfo* tagList(); - - //! @name Print functions for Sigma (Foveon) %MakerNote tags - //@{ - //! Strip the label from the value and print the remainder - static std::ostream& printStripLabel(std::ostream& os, const Value& value, const ExifData*); - //! Print exposure mode - static std::ostream& print0x0008(std::ostream& os, const Value& value, const ExifData*); - //! Print metering mode - static std::ostream& print0x0009(std::ostream& os, const Value& value, const ExifData*); - //@} - - private: - //! Tag information - static const TagInfo tagInfo_[]; - - }; // class SigmaMakerNote - -}} // namespace Internal, Exiv2 - -#endif // #ifndef SIGMAMN_INT_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/sonymn.cpp b/platform/win32/msvc/external/exiv2/src/sonymn.cpp deleted file mode 100644 index 92d4690572a..00000000000 --- a/platform/win32/msvc/external/exiv2/src/sonymn.cpp +++ /dev/null @@ -1,728 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: sonymn.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - History: 18-Apr-05, ahu: created - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: sonymn.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#include "types.hpp" -#include "minoltamn_int.hpp" -#include "sonymn_int.hpp" -#include "tags_int.hpp" -#include "value.hpp" -#include "i18n.h" // NLS support. - -// + standard includes -#include -#include -#include -#include -#include - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - namespace Internal { - - // -- Standard Sony Makernotes tags --------------------------------------------------------------- - - //! Lookup table to translate Sony Auto HDR values to readable labels - extern const TagDetails sonyHDRMode[] = { - { 0x00000, N_("Off") }, - { 0x10001, N_("Auto") }, - { 0x10010, "1" }, - { 0x10012, "2" }, - { 0x10014, "3" }, - { 0x10016, "4" }, - { 0x10018, "5" } - }; - - //! Lookup table to translate Sony model ID values to readable labels - extern const TagDetails sonyModelId[] = { - { 2, "DSC-R1" }, - { 256, "DSLR-A100" }, - { 257, "DSLR-A900" }, - { 258, "DSLR-A700" }, - { 259, "DSLR-A200" }, - { 260, "DSLR-A350" }, - { 261, "DSLR-A300" }, - { 263, "DSLR-A380" }, - { 264, "DSLR-A330" }, - { 265, "DSLR-A230" }, - { 269, "DSLR-A850" }, - { 273, "DSLR-A550" }, - { 274, "DSLR-A500" }, - { 275, "DSLR-A450" }, - { 278, "NEX-5" }, - { 279, "NEX-3" } - }; - - //! Lookup table to translate Sony dynamic range optimizer values to readable labels - extern const TagDetails print0xb025[] = { - { 0, N_("Off") }, - { 1, N_("Standard ") }, - { 2, N_("Advanced Auto") }, - { 3, N_("Auto") }, - { 8, N_("Advanced Lv1") }, - { 9, N_("Advanced Lv2") }, - { 10, N_("Advanced Lv3") }, - { 11, N_("Advanced Lv4") }, - { 12, N_("Advanced Lv5") }, - { 16, "1" }, - { 17, "2" }, - { 18, "3" }, - { 19, "4" }, - { 20, "5" } - }; - - //! Lookup table to translate Sony exposure mode values to readable labels - extern const TagDetails sonyExposureMode[] = { - { 0, N_("Auto") }, - { 1, N_("Portrait") }, - { 2, N_("Beach") }, - { 4, N_("Snow") }, - { 5, N_("Landscape ") }, - { 6, N_("Program") }, - { 7, N_("Aperture priority") }, - { 8, N_("Shutter priority") }, - { 9, N_("Night Scene / Twilight") }, - { 10, N_("Hi-Speed Shutter") }, - { 11, N_("Twilight Portrait") }, - { 12, N_("Soft Snap") }, - { 13, N_("Fireworks") }, - { 14, N_("Smile Shutter") }, - { 15, N_("Manual") }, - { 18, N_("High Sensitivity") }, - { 20, N_("Advanced Sports Shooting") }, - { 29, N_("Underwater") }, - { 33, N_("Gourmet") }, - { 34, N_("Panorama") }, - { 35, N_("Handheld Twilight") }, - { 36, N_("Anti Motion Blur") }, - { 37, N_("Pet") }, - { 38, N_("Backlight Correction HDR") }, - { 65535, N_("n/a") } - }; - - //! Lookup table to translate Sony JPEG Quality values to readable labels - extern const TagDetails sonyJPEGQuality[] = { - { 0, N_("Normal") }, - { 1, N_("Fine") }, - { 65535, N_("n/a") } - }; - - //! Lookup table to translate Sony anti-blur values to readable labels - extern const TagDetails sonyAntiBlur[] = { - { 0, N_("Off") }, - { 1, N_("On (Continuous)") }, - { 2, N_("On (Shooting)") }, - { 65535, N_("n/a") } - }; - - //! Lookup table to translate Sony dynamic range optimizer values to readable labels - extern const TagDetails print0xb04f[] = { - { 0, N_("Off") }, - { 1, N_("Standard") }, - { 2, N_("Plus") } - }; - - //! Lookup table to translate Sony Intelligent Auto values to readable labels - extern const TagDetails sonyIntelligentAuto[] = { - { 0, N_("Off") }, - { 1, N_("On") }, - { 2, N_("Advanced") } - }; - - //! Lookup table to translate Sony WB values to readable labels - extern const TagDetails sonyWhiteBalance[] = { - { 0, N_("Auto") }, - { 4, N_("Manual") }, - { 5, N_("Daylight") }, - { 6, N_("Cloudy") }, - { 7, N_("White Flourescent") }, - { 8, N_("Cool White Flourescent") }, - { 9, N_("Day White Flourescent") }, - { 14, N_("Incandescent") }, - { 15, N_("Flash") }, - { 17, N_("Underwater 1 (Blue Water)") }, - { 18, N_("Underwater 2 (Green Water)") } - }; - - //! Lookup table to translate Sony AF mode values to readable labels - extern const TagDetails sonyFocusMode[] = { - { 1, "AF-S" }, - { 2, "AF-C" }, - { 4, N_("Permanent-AF") }, - { 65535, N_("n/a") } - }; - - //! Lookup table to translate Sony AF mode values to readable labels - extern const TagDetails sonyAFMode[] = { - { 0, N_("Default") }, - { 1, N_("Multi AF") }, - { 2, N_("Center AF") }, - { 3, N_("Spot AF") }, - { 4, N_("Flexible Spot AF") }, - { 6, N_("Touch AF") }, - { 14, N_("Manual Focus") }, - { 15, N_("Face Detected") }, - { 65535, N_("n/a") } - }; - - //! Lookup table to translate Sony AF illuminator values to readable labels - extern const TagDetails sonyAFIlluminator[] = { - { 0, N_("Off") }, - { 1, N_("Auto") }, - { 65535, N_("n/a") } - }; - - //! Lookup table to translate Sony macro mode values to readable labels - extern const TagDetails sonyMacroMode[] = { - { 0, N_("Off") }, - { 1, N_("On") }, - { 2, N_("Close Focus") }, - { 65535, N_("n/a") } - }; - - //! Lookup table to translate Sony flash level values to readable labels - extern const TagDetails sonyFlashLevel[] = { - { -32768, N_("Low") }, - { -1, N_("n/a") }, - { 0, N_("Normal") }, - { 32767, N_("High") } - }; - - //! Lookup table to translate Sony release mode values to readable labels - extern const TagDetails sonyReleaseMode[] = { - { 0, N_("Normal") }, - { 2, N_("Burst") }, - { 5, N_("Exposure Bracketing") }, - { 6, N_("White Balance Bracketing") }, - { 65535, N_("n/a") } - }; - - //! Lookup table to translate Sony sequence number values to readable labels - extern const TagDetails sonySequenceNumber[] = { - { 0, N_("Single") }, - { 65535, N_("n/a") } - }; - - //! Lookup table to translate Sony long exposure noise reduction values to readable labels - extern const TagDetails sonyLongExposureNoiseReduction[] = { - { 0, N_("Off") }, - { 1, N_("On") }, - { 65535, N_("n/a") } - }; - - std::ostream& SonyMakerNote::print0xb000(std::ostream& os, const Value& value, const ExifData*) - { - if (value.count() != 4) - { - os << "(" << value << ")"; - } - else - { - std::string val = value.toString(0) + value.toString(1) + value.toString(2) + value.toString(3); - if (val == "0002") os << "JPEG"; - else if (val == "1000") os << "SR2"; - else if (val == "2000") os << "ARW 1.0"; - else if (val == "3000") os << "ARW 2.0"; - else if (val == "3100") os << "ARW 2.1"; - else if (val == "3200") os << "ARW 2.2"; - else os << "(" << value << ")"; - } - return os; - } - - std::ostream& SonyMakerNote::printImageSize(std::ostream& os, const Value& value, const ExifData*) - { - if (value.count() == 2) - os << value.toString(0) << " x " << value.toString(1); - else - os << "(" << value << ")"; - - return os; - } - - // Sony MakerNote Tag Info - const TagInfo SonyMakerNote::tagInfo_[] = { - TagInfo(0x0102, "Quality", N_("Image Quality"), - N_("Image quality"), - sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyImageQuality), - TagInfo(0x0104, "FlashExposureComp", N_("Flash Exposure Compensation"), - N_("Flash exposure compensation in EV"), - sony1Id, makerTags, signedRational, -1, print0x9204), - TagInfo(0x0105, "Teleconverter", N_("Teleconverter Model"), - N_("Teleconverter Model"), - sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyTeleconverterModel), - TagInfo(0x0112, "WhiteBalanceFineTune", N_("White Balance Fine Tune"), - N_("White Balance Fine Tune Value"), - sony1Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0x0114, "CameraSettings", N_("Camera Settings"), - N_("Camera Settings"), - sony1Id, makerTags, undefined, -1, printValue), - TagInfo(0x0115, "WhiteBalance", N_("White Balance"), - N_("White balance"), - sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyWhiteBalanceStd), - TagInfo(0x0116, "0x0116", "0x0116", - N_("Unknown"), - sony1Id, makerTags, undefined, -1, printValue), - TagInfo(0x0E00, "PrintIM", N_("Print IM"), - N_("PrintIM information"), - sony1Id, makerTags, undefined, -1, printValue), - TagInfo(0x1000, "MultiBurstMode", N_("Multi Burst Mode"), - N_("Multi Burst Mode"), - sony1Id, makerTags, undefined, -1, printMinoltaSonyBoolValue), - TagInfo(0x1001, "MultiBurstImageWidth", N_("Multi Burst Image Width"), - N_("Multi Burst Image Width"), - sony1Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x1002, "MultiBurstImageHeight", N_("Multi Burst Image Height"), - N_("Multi Burst Image Height"), - sony1Id, makerTags, unsignedShort, -1, printValue), - // TODO : Implement Panorama tags decoding. - TagInfo(0x1003, "Panorama", N_("Panorama"), - N_("Panorama"), - sony1Id, makerTags, undefined, -1, printValue), - TagInfo(0x2000, "0x2000", "0x2000", - N_("Unknown"), - sony1Id, makerTags, undefined, -1, printValue), - TagInfo(0x2001, "PreviewImage", N_("Preview Image"), - N_("JPEG preview image"), - sony1Id, makerTags, undefined, -1, printValue), - TagInfo(0x2002, "0x2002", "0x2002", - N_("Unknown"), - sony1Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0x2003, "0x2003", "0x2003", - N_("Unknown"), - sony1Id, makerTags, asciiString, -1, printValue), - TagInfo(0x2004, "Contrast", "Contrast", - N_("Contrast"), - sony1Id, makerTags, signedLong, -1, printValue), - TagInfo(0x2005, "Saturation", "Saturation", - N_("Saturation"), - sony1Id, makerTags, signedLong, -1, printValue), - TagInfo(0x2006, "0x2006", "0x2006", - N_("Unknown"), - sony1Id, makerTags, signedLong, -1, printValue), - TagInfo(0x2007, "0x2007", "0x2007", - N_("Unknown"), - sony1Id, makerTags, signedLong, -1, printValue), - TagInfo(0x2008, "0x2008", "0x2008", - N_("Unknown"), - sony1Id, makerTags, signedLong, -1, printValue), - TagInfo(0x2009, "0x2009", "0x2009", - N_("Unknown"), - sony1Id, makerTags, unsignedShort, -1, printValue), - TagInfo(0x200A, "AutoHDR", N_("Auto HDR"), - N_("High Definition Range Mode"), - sony1Id, makerTags, unsignedLong, -1, EXV_PRINT_TAG(sonyHDRMode)), - // TODO : Implement Shot Info tags decoding. - TagInfo(0x3000, "ShotInfo", N_("Shot Info"), - N_("Shot Information"), - sony1Id, makerTags, undefined, -1, printValue), - TagInfo(0xB000, "FileFormat", N_("File Format"), - N_("File Format"), - sony1Id, makerTags, unsignedByte, -1, print0xb000), - TagInfo(0xB001, "SonyModelID", N_("Sony Model ID"), - N_("Sony Model ID"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyModelId)), - TagInfo(0xB020, "ColorReproduction", N_("Color Reproduction"), - N_("Color Reproduction"), - sony1Id, makerTags, asciiString, -1, printValue), - TagInfo(0xb021, "ColorTemperature", N_("Color Temperature"), - N_("Color Temperature"), - sony1Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xB022, "ColorCompensationFilter", N_("Color Compensation Filter"), - N_("Color Compensation Filter: negative is green, positive is magenta"), - sony1Id, makerTags, unsignedLong, -1, printValue), - TagInfo(0xB023, "SceneMode", N_("Scene Mode"), - N_("Scene Mode"), - sony1Id, makerTags, unsignedLong, -1, printMinoltaSonySceneMode), - TagInfo(0xB024, "ZoneMatching", N_("Zone Matching"), - N_("Zone Matching"), - sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyZoneMatching), - TagInfo(0xB025, "DynamicRangeOptimizer", N_("Dynamic Range Optimizer"), - N_("Dynamic Range Optimizer"), - sony1Id, makerTags, unsignedLong, -1, EXV_PRINT_TAG(print0xb025)), - TagInfo(0xB026, "ImageStabilization", N_("Image Stabilization"), - N_("Image stabilization"), - sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyBoolValue), - TagInfo(0xB027, "LensID", N_("Lens ID"), - N_("Lens identifier"), - sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyLensID), - TagInfo(0xB028, "MinoltaMakerNote", N_("Minolta MakerNote"), - N_("Minolta MakerNote"), - sony1Id, makerTags, undefined, -1, printValue), - TagInfo(0xB029, "ColorMode", N_("Color Mode"), - N_("Color Mode"), - sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyColorMode), - TagInfo(0xB02B, "FullImageSize", N_("Full Image Size"), - N_("Full Image Size"), - sony1Id, makerTags, unsignedLong, -1, printImageSize), - TagInfo(0xB02C, "PreviewImageSize", N_("Preview Image Size"), - N_("Preview image size"), - sony1Id, makerTags, unsignedLong, -1, printImageSize), - TagInfo(0xB040, "Macro", N_("Macro"), - N_("Macro"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyMacroMode)), - TagInfo(0xB041, "ExposureMode", N_("Exposure Mode"), - N_("Exposure Mode"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyExposureMode)), - TagInfo(0xB042, "FocusMode", N_("Focus Mode"), - N_("Focus Mode"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyFocusMode)), - TagInfo(0xB043, "AFMode", N_("AF Mode"), - N_("AF Mode"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyAFMode)), - TagInfo(0xB044, "AFIlluminator", N_("AF Illuminator"), - N_("AF Illuminator"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyAFIlluminator)), - TagInfo(0xB047, "JPEGQuality", N_("JPEG Quality"), - N_("JPEG Quality"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyJPEGQuality)), - TagInfo(0xB048, "FlashLevel", N_("Flash Level"), - N_("Flash Level"), - sony1Id, makerTags, signedShort, -1, EXV_PRINT_TAG(sonyFlashLevel)), - TagInfo(0xB049, "ReleaseMode", N_("Release Mode"), - N_("Release Mode"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyReleaseMode)), - TagInfo(0xB04A, "SequenceNumber", N_("Sequence Number"), - N_("Shot number in continous burst mode"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonySequenceNumber)), - TagInfo(0xB04B, "AntiBlur", N_("Anti-Blur"), - N_("Anti-Blur"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyAntiBlur)), - TagInfo(0xB04E, "LongExposureNoiseReduction", N_("Long Exposure Noise Reduction"), - N_("Long Exposure Noise Reduction"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyLongExposureNoiseReduction)), - TagInfo(0xB04F, "DynamicRangeOptimizer", N_("Dynamic Range Optimizer"), - N_("Dynamic Range Optimizer"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(print0xb04f)), - TagInfo(0xB052, "IntelligentAuto", N_("Intelligent Auto"), - N_("Intelligent Auto"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyIntelligentAuto)), - TagInfo(0xB054, "WhiteBalance2", N_("White Balance 2"), - N_("White balance 2"), - sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyWhiteBalance)), - // End of list marker - TagInfo(0xffff, "(UnknownSony1MakerNoteTag)", "(UnknownSony1MakerNoteTag)", - N_("Unknown Sony1MakerNote tag"), - sony1Id, makerTags, asciiString, -1, printValue) - }; - - const TagInfo* SonyMakerNote::tagList() - { - return tagInfo_; - } - - // -- Sony camera settings --------------------------------------------------------------- - - //! Lookup table to translate Sony camera settings drive mode values to readable labels - extern const TagDetails sonyDriveModeStd[] = { - { 1, N_("Single Frame") }, - { 2, N_("Continuous High") }, - { 4, N_("Self-timer 10 sec") }, - { 5, N_("Self-timer 2 sec") }, - { 7, N_("Continuous Bracketing") }, - { 12, N_("Continuous Low") }, - { 18, N_("White Balance Bracketing Low") }, - { 19, N_("D-Range Optimizer Bracketing Low") }, - { 19, N_("D-Range Optimizer Bracketing Low") } // To silence compiler warning - }; - - //! Lookup table to translate Sony camera settings focus mode values to readable labels - extern const TagDetails sonyCSFocusMode[] = { - { 0, N_("Manual") }, - { 1, "AF-S" }, - { 2, "AF-C" }, - { 3, "AF-A" } - }; - - //! Lookup table to translate Sony camera settings metering mode values to readable labels - extern const TagDetails sonyMeteringMode[] = { - { 1, N_("Multi-segment") }, - { 2, N_("Center weighted average") }, - { 4, N_("Spot") } - }; - - //! Lookup table to translate Sony camera settings creative style values to readable labels - extern const TagDetails sonyCreativeStyle[] = { - { 1, N_("Standard") }, - { 2, N_("Vivid") }, - { 3, N_("Portrait") }, - { 4, N_("Landscape") }, - { 5, N_("Sunset") }, - { 6, N_("Night View/Portrait") }, - { 8, N_("Black & White") }, - { 9, N_("Adobe RGB") }, - { 11, N_("Neutral") }, - { 12, N_("Clear") }, - { 13, N_("Deep") }, - { 14, N_("Light") }, - { 15, N_("Autumn") }, - { 16, N_("Sepia") } - }; - - //! Lookup table to translate Sony camera settings flash mode values to readable labels - extern const TagDetails sonyFlashMode[] = { - { 0, N_("ADI") }, - { 1, N_("TTL") }, - }; - - //! Lookup table to translate Sony AF illuminator values to readable labels - extern const TagDetails sonyAFIlluminatorCS[] = { - { 0, N_("Auto") }, - { 1, N_("Off") } - }; - - //! Lookup table to translate Sony camera settings image style values to readable labels - extern const TagDetails sonyImageStyle[] = { - { 1, N_("Standard") }, - { 2, N_("Vivid") }, - { 9, N_("Adobe RGB") }, - { 11, N_("Neutral") }, - { 129, N_("StyleBox1") }, - { 130, N_("StyleBox1") }, - { 131, N_("StyleBox1") } - }; - - //! Lookup table to translate Sony camera settings exposure program values to readable labels - extern const TagDetails sonyExposureProgram[] = { - { 0, N_("Auto") }, - { 1, N_("Manual") }, - { 2, N_("Program AE") }, - { 3, N_("Aperture-priority AE") }, - { 4, N_("Shutter speed priority AE") }, - { 8, N_("Program Shift A") }, - { 9, N_("Program Shift S") }, - { 16, N_("Portrait") }, - { 17, N_("Sports") }, - { 18, N_("Sunset") }, - { 19, N_("Night Portrait") }, - { 20, N_("Landscape") }, - { 21, N_("Macro") }, - { 35, N_("Auto No Flash") } - }; - - //! Lookup table to translate Sony camera settings image size values to readable labels - extern const TagDetails sonyImageSize[] = { - { 1, N_("Large") }, - { 2, N_("Medium") }, - { 3, N_("Small") } - }; - - //! Lookup table to translate Sony aspect ratio values to readable labels - extern const TagDetails sonyAspectRatio[] = { - { 1, "3:2" }, - { 2, "16:9" } - }; - - //! Lookup table to translate Sony exposure level increments values to readable labels - extern const TagDetails sonyExposureLevelIncrements[] = { - { 33, "1/3 EV" }, - { 50, "1/2 EV" } - }; - - // Sony Camera Settings Tag Info - // NOTE: all are for A200, A230, A300, A350, A700, A850 and A900 Sony model excepted - // some entries which are only relevant with A700. - - // Warnings: Exiftool database give a list of tags shorted in decimal mode, not hexadecimal. - - const TagInfo SonyMakerNote::tagInfoCs_[] = { - // NOTE: A700 only - TagInfo(0x0004, "DriveMode", N_("Drive Mode"), - N_("Drive Mode"), - sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyDriveModeStd)), - // NOTE: A700 only - TagInfo(0x0006, "WhiteBalanceFineTune", N_("White Balance Fine Tune"), - N_("White Balance Fine Tune"), - sony1CsId, makerTags, signedShort, 1, printValue), - TagInfo(0x0010, "FocusMode", N_("Focus Mode"), - N_("Focus Mode"), - sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCSFocusMode)), - TagInfo(0x0011, "AFAreaMode", N_("AF Area Mode"), - N_("AF Area Mode"), - sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyAFAreaMode), - TagInfo(0x0012, "LocalAFAreaPoint", N_("Local AF Area Point"), - N_("Local AF Area Point"), - sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyLocalAFAreaPoint), - TagInfo(0x0015, "MeteringMode", N_("Metering Mode"), - N_("Metering Mode"), - sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyMeteringMode)), - TagInfo(0x0016, "ISOSetting", N_("ISO Setting"), - N_("ISO Setting"), - sony1CsId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0018, "DynamicRangeOptimizerMode", N_("Dynamic Range Optimizer Mode"), - N_("Dynamic Range Optimizer Mode"), - sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyDynamicRangeOptimizerMode), - TagInfo(0x0019, "DynamicRangeOptimizerLevel", N_("Dynamic Range Optimizer Level"), - N_("Dynamic Range Optimizer Level"), - sony1CsId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x001A, "CreativeStyle", N_("Creative Style"), - N_("Creative Style"), - sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCreativeStyle)), - TagInfo(0x001C, "Sharpness", N_("Sharpness"), - N_("Sharpness"), - sony1CsId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x001D, "Contrast", N_("Contrast"), - N_("Contrast"), - sony1CsId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x001E, "Saturation", N_("Saturation"), - N_("Saturation"), - sony1CsId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x001F, "ZoneMatchingValue", N_("Zone Matching Value"), - N_("Zone Matching Value"), - sony1CsId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0022, "Brightness", N_("Brightness"), - N_("Brightness"), - sony1CsId, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0023, "FlashMode", N_("FlashMode"), - N_("FlashMode"), - sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFlashMode)), - // NOTE: A700 only - TagInfo(0x0028, "PrioritySetupShutterRelease", N_("Priority Setup Shutter Release"), - N_("Priority Setup Shutter Release"), - sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyPrioritySetupShutterRelease), - // NOTE: A700 only - TagInfo(0x0029, "AFIlluminator", N_("AF Illuminator"), - N_("AF Illuminator"), - sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyAFIlluminatorCS)), - // NOTE: A700 only - TagInfo(0x002A, "AFWithShutter", N_("AF With Shutter"), - N_("AF With Shutter"), - sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyBoolInverseValue), - // NOTE: A700 only - TagInfo(0x002B, "LongExposureNoiseReduction", N_("Long Exposure Noise Reduction"), - N_("Long Exposure Noise Reduction"), - sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), - // NOTE: A700 only - TagInfo(0x002C, "HighISONoiseReduction", N_("High ISO NoiseReduction"), - N_("High ISO NoiseReduction"), - sony1CsId, makerTags, unsignedShort, 1, printValue), - // NOTE: A700 only - TagInfo(0x002D, "ImageStyle", N_("Image Style"), - N_("Image Style"), - sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyImageStyle)), - TagInfo(0x003C, "ExposureProgram", N_("Exposure Program"), - N_("Exposure Program"), - sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureProgram)), - TagInfo(0x003D, "ImageStabilization", N_("Image Stabilization"), - N_("Image Stabilization"), - sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), - TagInfo(0x003F, "Rotation", N_("Rotation"), - N_("Rotation"), - sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyRotation), - TagInfo(0x0054, "SonyImageSize", N_("Sony Image Size"), - N_("Sony Image Size"), - sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyImageSize)), - TagInfo(0x0055, "AspectRatio", N_("Aspect Ratio"), - N_("Aspect Ratio"), - sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyAspectRatio)), - TagInfo(0x0056, "Quality", N_("Quality"), - N_("Quality"), - sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyQualityCs), - TagInfo(0x0058, "ExposureLevelIncrements", N_("Exposure Level Increments"), - N_("Exposure Level Increments"), - sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureLevelIncrements)), - // End of list marker - TagInfo(0xffff, "(UnknownSony1CsTag)", "(UnknownSony1CsTag)", - N_("Unknown Sony1 Camera Settings tag"), - sony1CsId, makerTags, unsignedShort, 1, printValue) - }; - - const TagInfo* SonyMakerNote::tagListCs() - { - return tagInfoCs_; - } - - // -- Sony camera settings 2 --------------------------------------------------------------- - - // Sony Camera Settings Tag Version 2 Info - // NOTE: for A330, A380, A450, A500, A550 Sony model - - // Warnings: Exiftool database give a list of tags shorted in decimal mode, not hexadecimal. - - const TagInfo SonyMakerNote::tagInfoCs2_[] = { - TagInfo(0x0010, "FocusMode", N_("Focus Mode"), - N_("Focus Mode"), - sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCSFocusMode)), - TagInfo(0x0011, "AFAreaMode", N_("AF Area Mode"), - N_("AF Area Mode"), - sony1Cs2Id, makerTags, unsignedShort, 1, printMinoltaSonyAFAreaMode), - TagInfo(0x0012, "LocalAFAreaPoint", N_("Local AF Area Point"), - N_("Local AF Area Point"), - sony1Cs2Id, makerTags, unsignedShort, 1, printMinoltaSonyLocalAFAreaPoint), - TagInfo(0x0013, "MeteringMode", N_("Metering Mode"), - N_("Metering Mode"), - sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyMeteringMode)), - TagInfo(0x0014, "ISOSetting", N_("ISO Setting"), - N_("ISO Setting"), - sony1Cs2Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0016, "DynamicRangeOptimizerMode", N_("Dynamic Range Optimizer Mode"), - N_("Dynamic Range Optimizer Mode"), - sony1Cs2Id, makerTags, unsignedShort, 1, printMinoltaSonyDynamicRangeOptimizerMode), - TagInfo(0x0017, "DynamicRangeOptimizerLevel", N_("Dynamic Range Optimizer Level"), - N_("Dynamic Range Optimizer Level"), - sony1Cs2Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0018, "CreativeStyle", N_("Creative Style"), - N_("Creative Style"), - sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCreativeStyle)), - TagInfo(0x0019, "Sharpness", N_("Sharpness"), - N_("Sharpness"), - sony1Cs2Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x001A, "Contrast", N_("Contrast"), - N_("Contrast"), - sony1Cs2Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x001B, "Saturation", N_("Saturation"), - N_("Saturation"), - sony1Cs2Id, makerTags, unsignedShort, 1, printValue), - TagInfo(0x0023, "FlashMode", N_("FlashMode"), - N_("FlashMode"), - sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFlashMode)), - TagInfo(0x003C, "ExposureProgram", N_("Exposure Program"), - N_("Exposure Program"), - sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureProgram)), - TagInfo(0x003F, "Rotation", N_("Rotation"), - N_("Rotation"), - sony1Cs2Id, makerTags, unsignedShort, 1, printMinoltaSonyRotation), - TagInfo(0x0054, "SonyImageSize", N_("Sony Image Size"), - N_("Sony Image Size"), - sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyImageSize)), - // End of list marker - TagInfo(0xffff, "(UnknownSony1Cs2Tag)", "(UnknownSony1Cs2Tag)", - N_("Unknown Sony1 Camera Settings 2 tag"), - sony1Cs2Id, makerTags, unsignedShort, 1, printValue) - }; - - const TagInfo* SonyMakerNote::tagListCs2() - { - return tagInfoCs2_; - } - -}} // namespace Internal, Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/sonymn_int.hpp b/platform/win32/msvc/external/exiv2/src/sonymn_int.hpp deleted file mode 100644 index 791c791e5e1..00000000000 --- a/platform/win32/msvc/external/exiv2/src/sonymn_int.hpp +++ /dev/null @@ -1,81 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file sonymn_int.hpp - @brief Sony MakerNote implemented using the following references:
- Sony Makernote list by Phil Harvey
-Email communication with caulier dot gilles at gmail dot com
- - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @author Gilles Caulier (cgilles) - caulier dot gilles at gmail dot com - @date 18-Apr-05, ahu: created - */ -#ifndef SONYMN_INT_HPP_ -#define SONYMN_INT_HPP_ - -// ***************************************************************************** -// included header files -#include "tags.hpp" -#include "types.hpp" - -// + standard includes -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - namespace Internal { - -// ***************************************************************************** -// class definitions - - //! MakerNote for Sony cameras - class SonyMakerNote { - public: - //! Return read-only list of built-in Sony tags - static const TagInfo* tagList(); - //! Return read-only list of built-in Sony Standard Camera Settings tags - static const TagInfo* tagListCs(); - //! Return read-only list of built-in Sony Standard Camera Settings version 2 tags - static const TagInfo* tagListCs2(); - - //! @name Print functions for Sony %MakerNote tags - //@{ - //! Print Sony Camera Model - static std::ostream& print0xb000(std::ostream&, const Value&, const ExifData*); - //! Print Full and Preview Image size - static std::ostream& printImageSize(std::ostream&, const Value&, const ExifData*); - - private: - //! Tag information - static const TagInfo tagInfo_[]; - static const TagInfo tagInfoCs_[]; - static const TagInfo tagInfoCs2_[]; - - }; // class SonyMakerNote - -}} // namespace Internal, Exiv2 - -#endif // #ifndef SONYMN_INT_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/taglist.cpp b/platform/win32/msvc/external/exiv2/src/taglist.cpp deleted file mode 100644 index f016fdbf580..00000000000 --- a/platform/win32/msvc/external/exiv2/src/taglist.cpp +++ /dev/null @@ -1,72 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - Abstract: Print a simple comma separated list of tags defined in Exiv2 - - File: taglist.cpp - Version: $Rev: 2331 $ - Author(s): Andreas Huggel (ahu) - History: 07-Jan-04, ahu: created - */ -// ***************************************************************************** -#include "tags.hpp" -#include "datasets.hpp" -#include "properties.hpp" -#include "error.hpp" - -#include -#include - -using namespace Exiv2; - -int main(int argc, char* argv[]) -try { - int rc = 0; - - switch (argc) { - case 2: - { - std::string item(argv[1]); - - if (item == "Exif") { - ExifTags::taglist(std::cout); - break; - } - - if (item == "Iptc") { - IptcDataSets::dataSetList(std::cout); - break; - } - - if (ExifTags::isExifGroup(item) || ExifTags::isMakerGroup(item)) { - ExifTags::taglist(std::cout, item); - break; - } - - try { - XmpProperties::printProperties(std::cout, item); - } - catch(const AnyError&) { - rc = 2; - } - - break; - } - case 1: - ExifTags::taglist(std::cout); - break; - default: - rc = 1; - break; - } - if (rc) { - std::cout << "Usage: " << argv[0] - << " [Exif|Canon|CanonCs|CanonSi|CanonCf|Fujifilm|Minolta|Nikon1|Nikon2|Nikon3|Olympus|Panasonic|Pentax|Sigma|Sony|Iptc" - << "|dc|xmp|xmpRights|xmpMM|xmpBJ|xmpTPg|xmpDM|pdf|photoshop|crs|tiff|exif|aux|iptc]\n" - << "Print Exif tags, MakerNote tags, or Iptc datasets\n"; - } - return rc; -} -catch (AnyError& e) { - std::cout << "Caught Exiv2 exception '" << e << "'\n"; - return 1; -} diff --git a/platform/win32/msvc/external/exiv2/src/tags.cpp b/platform/win32/msvc/external/exiv2/src/tags.cpp deleted file mode 100644 index f71eb2d02c0..00000000000 --- a/platform/win32/msvc/external/exiv2/src/tags.cpp +++ /dev/null @@ -1,3131 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: tags.cpp - Version: $Rev: 2696 $ - Author(s): Andreas Huggel (ahu) - Gilles Caulier (gc) - History: 15-Jan-04, ahu: created - 21-Jan-05, ahu: added MakerNote TagInfo registry and related code - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: tags.cpp 2696 2012-04-11 05:50:34Z ahuggel $") - -// ***************************************************************************** -// included header files -#include "types.hpp" -#include "tags.hpp" -#include "tags_int.hpp" -#include "error.hpp" -#include "futils.hpp" -#include "value.hpp" -#include "convert.hpp" -#include "i18n.h" // NLS support. - -#include "canonmn_int.hpp" -#include "fujimn_int.hpp" -#include "minoltamn_int.hpp" -#include "nikonmn_int.hpp" -#include "olympusmn_int.hpp" -#include "panasonicmn_int.hpp" -#include "pentaxmn_int.hpp" -#include "samsungmn_int.hpp" -#include "sigmamn_int.hpp" -#include "sonymn_int.hpp" - -#include -#include -#include -#include -#include -#include -#include -#include - -// ***************************************************************************** -// local declarations -namespace { - // Print version string from an intermediate string - std::ostream& printVersion(std::ostream& os, const std::string& str); -} - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - using namespace Internal; - - //! List of all known Exif groups. Important: Group name (3rd column) must be unique! - extern const GroupInfo groupInfo[] = { - { ifdIdNotSet, "Unknown IFD", "Unknown", 0 }, - { ifd0Id, "IFD0", "Image", ifdTagList }, - { ifd1Id, "IFD1", "Thumbnail", ifdTagList }, - { ifd2Id, "IFD2", "Image2", ifdTagList }, - { ifd3Id, "IFD3", "Image3", ifdTagList }, - { exifId, "Exif", "Photo", exifTagList }, - { gpsId, "GPSInfo", "GPSInfo", gpsTagList }, - { iopId, "Iop", "Iop", iopTagList }, - { subImage1Id, "SubImage1", "SubImage1", ifdTagList }, - { subImage2Id, "SubImage2", "SubImage2", ifdTagList }, - { subImage3Id, "SubImage3", "SubImage3", ifdTagList }, - { subImage4Id, "SubImage4", "SubImage4", ifdTagList }, - { subImage5Id, "SubImage5", "SubImage5", ifdTagList }, - { subImage6Id, "SubImage6", "SubImage6", ifdTagList }, - { subImage7Id, "SubImage7", "SubImage7", ifdTagList }, - { subImage8Id, "SubImage8", "SubImage8", ifdTagList }, - { subImage9Id, "SubImage9", "SubImage9", ifdTagList }, - { subThumb1Id, "SubThumb1", "SubThumb1", ifdTagList }, - { panaRawId, "PanaRaw", "PanasonicRaw", PanasonicMakerNote::tagListRaw }, - { mnId, "Makernote", "MakerNote", mnTagList }, - { canonId, "Makernote", "Canon", CanonMakerNote::tagList }, - { canonCsId, "Makernote", "CanonCs", CanonMakerNote::tagListCs }, - { canonSiId, "Makernote", "CanonSi", CanonMakerNote::tagListSi }, - { canonCfId, "Makernote", "CanonCf", CanonMakerNote::tagListCf }, - { canonPiId, "Makernote", "CanonPi", CanonMakerNote::tagListPi }, - { canonFiId, "Makernote", "CanonFi", CanonMakerNote::tagListFi }, - { canonPaId, "Makernote", "CanonPa", CanonMakerNote::tagListPa }, - { canonPrId, "Makernote", "CanonPr", CanonMakerNote::tagListPr }, - { fujiId, "Makernote", "Fujifilm", FujiMakerNote::tagList }, - { minoltaId, "Makernote", "Minolta", MinoltaMakerNote::tagList }, - { minoltaCs5DId, "Makernote", "MinoltaCs5D", MinoltaMakerNote::tagListCs5D }, - { minoltaCs7DId, "Makernote", "MinoltaCs7D", MinoltaMakerNote::tagListCs7D }, - { minoltaCsOldId, "Makernote", "MinoltaCsOld", MinoltaMakerNote::tagListCsStd }, - { minoltaCsNewId, "Makernote", "MinoltaCsNew", MinoltaMakerNote::tagListCsStd }, - { nikon1Id, "Makernote", "Nikon1", Nikon1MakerNote::tagList }, - { nikon2Id, "Makernote", "Nikon2", Nikon2MakerNote::tagList }, - { nikon3Id, "Makernote", "Nikon3", Nikon3MakerNote::tagList }, - { nikonPvId, "Makernote", "NikonPreview", ifdTagList }, - { nikonVrId, "Makernote", "NikonVr", Nikon3MakerNote::tagListVr }, - { nikonPcId, "Makernote", "NikonPc", Nikon3MakerNote::tagListPc }, - { nikonWtId, "Makernote", "NikonWt", Nikon3MakerNote::tagListWt }, - { nikonIiId, "Makernote", "NikonIi", Nikon3MakerNote::tagListIi }, - { nikonAfId, "Makernote", "NikonAf", Nikon3MakerNote::tagListAf }, - { nikonAf2Id, "Makernote", "NikonAf2", Nikon3MakerNote::tagListAf2 }, - { nikonAFTId, "Makernote", "NikonAFT", Nikon3MakerNote::tagListAFT }, - { nikonFiId, "Makernote", "NikonFi", Nikon3MakerNote::tagListFi }, - { nikonMeId, "Makernote", "NikonMe", Nikon3MakerNote::tagListMe }, - { nikonFl1Id, "Makernote", "NikonFl1", Nikon3MakerNote::tagListFl1 }, - { nikonFl2Id, "Makernote", "NikonFl2", Nikon3MakerNote::tagListFl2 }, - { nikonFl3Id, "Makernote", "NikonFl3", Nikon3MakerNote::tagListFl3 }, - { nikonSi1Id, "Makernote", "NikonSiD80", Nikon3MakerNote::tagListSi1 }, - { nikonSi2Id, "Makernote", "NikonSiD40", Nikon3MakerNote::tagListSi2 }, - { nikonSi3Id, "Makernote", "NikonSiD300a", Nikon3MakerNote::tagListSi3 }, - { nikonSi4Id, "Makernote", "NikonSiD300b", Nikon3MakerNote::tagListSi4 }, - { nikonSi5Id, "Makernote", "NikonSi02xx", Nikon3MakerNote::tagListSi5 }, - { nikonSi6Id, "Makernote", "NikonSi01xx", Nikon3MakerNote::tagListSi5 }, - { nikonCb1Id, "Makernote", "NikonCb1", Nikon3MakerNote::tagListCb1 }, - { nikonCb2Id, "Makernote", "NikonCb2", Nikon3MakerNote::tagListCb2 }, - { nikonCb2aId, "Makernote", "NikonCb2a", Nikon3MakerNote::tagListCb2a }, - { nikonCb2bId, "Makernote", "NikonCb2b", Nikon3MakerNote::tagListCb2b }, - { nikonCb3Id, "Makernote", "NikonCb3", Nikon3MakerNote::tagListCb3 }, - { nikonCb4Id, "Makernote", "NikonCb4", Nikon3MakerNote::tagListCb4 }, - { nikonLd1Id, "Makernote", "NikonLd1", Nikon3MakerNote::tagListLd1 }, - { nikonLd2Id, "Makernote", "NikonLd2", Nikon3MakerNote::tagListLd2 }, - { nikonLd3Id, "Makernote", "NikonLd3", Nikon3MakerNote::tagListLd3 }, - { olympusId, "Makernote", "Olympus", OlympusMakerNote::tagList }, - { olympus2Id, "Makernote", "Olympus2", OlympusMakerNote::tagList }, - { olympusCsId, "Makernote", "OlympusCs", OlympusMakerNote::tagListCs }, - { olympusEqId, "Makernote", "OlympusEq", OlympusMakerNote::tagListEq }, - { olympusRdId, "Makernote", "OlympusRd", OlympusMakerNote::tagListRd }, - { olympusRd2Id, "Makernote", "OlympusRd2", OlympusMakerNote::tagListRd2 }, - { olympusIpId, "Makernote", "OlympusIp", OlympusMakerNote::tagListIp }, - { olympusFiId, "Makernote", "OlympusFi", OlympusMakerNote::tagListFi }, - { olympusFe1Id, "Makernote", "OlympusFe1", OlympusMakerNote::tagListFe }, - { olympusFe2Id, "Makernote", "OlympusFe2", OlympusMakerNote::tagListFe }, - { olympusFe3Id, "Makernote", "OlympusFe3", OlympusMakerNote::tagListFe }, - { olympusFe4Id, "Makernote", "OlympusFe4", OlympusMakerNote::tagListFe }, - { olympusFe5Id, "Makernote", "OlympusFe5", OlympusMakerNote::tagListFe }, - { olympusFe6Id, "Makernote", "OlympusFe6", OlympusMakerNote::tagListFe }, - { olympusFe7Id, "Makernote", "OlympusFe7", OlympusMakerNote::tagListFe }, - { olympusFe8Id, "Makernote", "OlympusFe8", OlympusMakerNote::tagListFe }, - { olympusFe9Id, "Makernote", "OlympusFe9", OlympusMakerNote::tagListFe }, - { olympusRiId, "Makernote", "OlympusRi", OlympusMakerNote::tagListRi }, - { panasonicId, "Makernote", "Panasonic", PanasonicMakerNote::tagList }, - { pentaxDngId, "Makernote", "PentaxDng", PentaxMakerNote::tagList }, - { pentaxId, "Makernote", "Pentax", PentaxMakerNote::tagList }, - { samsung2Id, "Makernote", "Samsung2", Samsung2MakerNote::tagList }, - { samsungPvId, "Makernote", "SamsungPreview", ifdTagList }, - { samsungPwId, "Makernote", "SamsungPictureWizard", Samsung2MakerNote::tagListPw }, - { sigmaId, "Makernote", "Sigma", SigmaMakerNote::tagList }, - { sony1Id, "Makernote", "Sony1", SonyMakerNote::tagList }, - { sony2Id, "Makernote", "Sony2", SonyMakerNote::tagList }, - { sonyMltId, "Makernote", "SonyMinolta", MinoltaMakerNote::tagList }, - { sony1CsId, "Makernote", "Sony1Cs", SonyMakerNote::tagListCs }, - { sony1Cs2Id, "Makernote", "Sony1Cs2", SonyMakerNote::tagListCs2 }, - { sony1MltCs7DId, "Makernote", "Sony1MltCs7D", MinoltaMakerNote::tagListCs7D }, - { sony1MltCsOldId, "Makernote", "Sony1MltCsOld",MinoltaMakerNote::tagListCsStd }, - { sony1MltCsNewId, "Makernote", "Sony1MltCsNew",MinoltaMakerNote::tagListCsStd }, - { sony1MltCsA100Id,"Makernote","Sony1MltCsA100",MinoltaMakerNote::tagListCsA100}, - { sony2CsId, "Makernote", "Sony2Cs", SonyMakerNote::tagListCs }, - { sony2Cs2Id, "Makernote", "Sony2Cs2", SonyMakerNote::tagListCs2 }, - { lastId, "(Last IFD info)", "(Last IFD item)", 0 } - }; - - //! List of all defined Exif sections. - extern const SectionInfo sectionInfo[] = { - { sectionIdNotSet, "(UnknownSection)", N_("Unknown section") }, - { imgStruct, "ImageStructure", N_("Image data structure") }, - { recOffset, "RecordingOffset", N_("Recording offset") }, - { imgCharacter, "ImageCharacteristics", N_("Image data characteristics") }, - { otherTags, "OtherTags", N_("Other data") }, - { exifFormat, "ExifFormat", N_("Exif data structure") }, - { exifVersion, "ExifVersion", N_("Exif version") }, - { imgConfig, "ImageConfig", N_("Image configuration") }, - { userInfo, "UserInfo", N_("User information") }, - { relatedFile, "RelatedFile", N_("Related file") }, - { dateTime, "DateTime", N_("Date and time") }, - { captureCond, "CaptureConditions", N_("Picture taking conditions") }, - { gpsTags, "GPS", N_("GPS information") }, - { iopTags, "Interoperability", N_("Interoperability information") }, - { makerTags, "Makernote", N_("Vendor specific information") }, - { dngTags, "DngTags", N_("Adobe DNG tags") }, - { panaRaw, "PanasonicRaw", N_("Panasonic RAW tags") }, - { tiffEp, "TIFF/EP", N_("TIFF/EP tags") }, - { tiffPm6, "TIFF&PM6", N_("TIFF PageMaker 6.0 tags") }, - { adobeOpi, "AdobeOPI", N_("Adobe OPI tags") }, - { lastSectionId, "(LastSection)", N_("Last section") } - }; - -} // namespace Exiv2 - -namespace Exiv2 { - namespace Internal { - - bool TagVocabulary::operator==(const std::string& key) const - { - if (strlen(voc_) > key.size()) return false; - return 0 == strcmp(voc_, key.c_str() + key.size() - strlen(voc_)); - } - - //! NewSubfileType, TIFF tag 0x00fe - this is actually a bitmask - extern const TagDetails exifNewSubfileType[] = { - { 0, N_("Primary image") }, - { 1, N_("Thumbnail/Preview image") }, - { 2, N_("Primary image, Multi page file") }, - { 3, N_("Thumbnail/Preview image, Multi page file") }, - { 4, N_("Primary image, Transparency mask") }, - { 5, N_("Thumbnail/Preview image, Transparency mask") }, - { 6, N_("Primary image, Multi page file, Transparency mask") }, - { 7, N_("Thumbnail/Preview image, Multi page file, Transparency mask") }, - { 7, N_("Thumbnail/Preview image, Multi page file, Transparency mask") } // To silence compiler warning - }; - - //! SubfileType, TIFF tag 0x00ff - extern const TagDetails exifSubfileType[] = { - { 1, N_("Full-resolution image data") }, - { 2, N_("Reduced-resolution image data") }, - { 3, N_("A single page of a multi-page image") } - }; - - //! Units for measuring X and Y resolution, tags 0x0128, 0xa210 - extern const TagDetails exifUnit[] = { - { 1, N_("none") }, - { 2, N_("inch") }, - { 3, N_("cm") } - }; - - //! Compression, tag 0x0103 - extern const TagDetails exifCompression[] = { - { 1, N_("Uncompressed") }, - { 2, N_("CCITT RLE") }, - { 3, N_("T4/Group 3 Fax") }, - { 4, N_("T6/Group 4 Fax") }, - { 5, N_("LZW") }, - { 6, N_("JPEG (old-style)") }, - { 7, N_("JPEG") }, - { 8, N_("Adobe Deflate") }, - { 9, N_("JBIG B&W") }, - { 10, N_("JBIG Color") }, - { 32766, N_("Next 2-bits RLE") }, - { 32769, N_("Epson ERF Compressed") }, - { 32770, N_("Samsung SRW Compressed") }, - { 32771, N_("CCITT RLE 1-word") }, - { 32773, N_("PackBits (Macintosh RLE)") }, - { 32809, N_("Thunderscan RLE") }, - { 32895, N_("IT8 CT Padding") }, - { 32896, N_("IT8 Linework RLE") }, - { 32897, N_("IT8 Monochrome Picture") }, - { 32898, N_("IT8 Binary Lineart") }, - { 32908, N_("Pixar Film (10-bits LZW)") }, - { 32909, N_("Pixar Log (11-bits ZIP)") }, - { 32946, N_("Pixar Deflate") }, - { 32947, N_("Kodak DCS Encoding") }, - { 34661, N_("ISO JBIG") }, - { 34676, N_("SGI Log Luminance RLE") }, - { 34677, N_("SGI Log 24-bits packed") }, - { 34712, N_("Leadtools JPEG 2000") }, - { 34713, N_("Nikon NEF Compressed") }, - { 65000, N_("Kodak DCR Compressed") }, - { 65535, N_("Pentax PEF Compressed") } - }; - - //! PhotometricInterpretation, tag 0x0106 - extern const TagDetails exifPhotometricInterpretation[] = { - { 0, N_("White Is Zero") }, - { 1, N_("Black Is Zero") }, - { 2, N_("RGB") }, - { 3, N_("RGB Palette") }, - { 4, N_("Transparency Mask") }, - { 5, N_("CMYK") }, - { 6, N_("YCbCr") }, - { 8, N_("CIELab") }, - { 9, N_("ICCLab") }, - { 10, N_("ITULab") }, - { 32803, N_("Color Filter Array") }, - { 32844, N_("Pixar LogL") }, - { 32845, N_("Pixar LogLuv") }, - { 34892, N_("Linear Raw") } - }; - - //! Threshholding, tag 0x0107 - extern const TagDetails exifThreshholding[] = { - { 1, N_("No dithering or halftoning") }, - { 2, N_("Ordered dither or halftone technique") }, - { 3, N_("Randomized process") } - }; - - //! Orientation, tag 0x0112 - extern const TagDetails exifOrientation[] = { - { 1, N_("top, left") }, - { 2, N_("top, right") }, - { 3, N_("bottom, right") }, - { 4, N_("bottom, left") }, - { 5, N_("left, top") }, - { 6, N_("right, top") }, - { 7, N_("right, bottom") }, - { 8, N_("left, bottom") }, - { 8, N_("left, bottom") } // To silence compiler warning - }; - - //! Predictor, tag 0x013d - extern const TagDetails exifPredictor[] = { - { 1, N_("No prediction scheme used") }, - { 2, N_("Horizontal differencing") } - }; - - //! InkSet, tag 0x014c - extern const TagDetails exifInkSet[] = { - { 1, N_("CMYK") }, - { 2, N_("not CMYK") } - }; - - //! SampleFormat, tag 0x0153 - extern const TagDetails exifSampleFormat[] = { - { 1, N_("Unsigned integer data") }, - { 2, N_("Two's complement signed integer data") }, - { 3, N_("IEEE floating point data") }, - { 4, N_("Undefined data format") }, - { 4, N_("Undefined data format") } // To silence compiler warning - }; - - //! Indexed, tag 0x015a - extern const TagDetails exifIndexed[] = { - { 0, N_("Not indexed") }, - { 1, N_("Indexed") } - }; - - //! exifJpegLosslessPredictor, tag 0x0205 - extern const TagDetails exifJpegLosslessPredictor[] = { - { 1, N_("A") }, - { 2, N_("B") }, - { 3, N_("C") }, - { 4, N_("A+B-C") }, - { 5, N_("A+((B-C)/2)") }, - { 6, N_("B+((A-C)/2)") }, - { 7, N_("(A+B)/2") } - }; - - //! YCbCrPositioning, tag 0x0213 - extern const TagDetails exifYCbCrPositioning[] = { - { 1, N_("Centered") }, - { 2, N_("Co-sited") } - }; - - //! Flash, Exif tag 0x9209 - extern const TagDetails exifFlash[] = { - { 0x00, N_("No flash") }, - { 0x01, N_("Fired") }, - { 0x05, N_("Fired, return light not detected") }, - { 0x07, N_("Fired, return light detected") }, - { 0x08, N_("Yes, did not fire") }, - { 0x09, N_("Yes, compulsory") }, - { 0x0d, N_("Yes, compulsory, return light not detected") }, - { 0x0f, N_("Yes, compulsory, return light detected") }, - { 0x10, N_("No, compulsory") }, - { 0x14, N_("No, did not fire, return light not detected") }, - { 0x18, N_("No, auto") }, - { 0x19, N_("Yes, auto") }, - { 0x1d, N_("Yes, auto, return light not detected") }, - { 0x1f, N_("Yes, auto, return light detected") }, - { 0x20, N_("No flash function") }, - { 0x20, N_("No, no flash function") }, - { 0x41, N_("Yes, red-eye reduction") }, - { 0x45, N_("Yes, red-eye reduction, return light not detected") }, - { 0x47, N_("Yes, red-eye reduction, return light detected") }, - { 0x49, N_("Yes, compulsory, red-eye reduction") }, - { 0x4d, N_("Yes, compulsory, red-eye reduction, return light not detected") }, - { 0x4f, N_("Yes, compulsory, red-eye reduction, return light detected") }, - { 0x50, N_("No, red-eye reduction") }, - { 0x58, N_("No, auto, red-eye reduction") }, - { 0x59, N_("Yes, auto, red-eye reduction") }, - { 0x5d, N_("Yes, auto, red-eye reduction, return light not detected") }, - { 0x5f, N_("Yes, auto, red-eye reduction, return light detected") } - }; - - //! CFALayout, tag 0xc617 - extern const TagDetails exifCfaLayout[] = { - { 1, N_("Rectangular (or square) layout") }, - { 2, N_("Staggered layout A: even columns are offset down by 1/2 row") }, - { 3, N_("Staggered layout B: even columns are offset up by 1/2 row") }, - { 4, N_("Staggered layout C: even rows are offset right by 1/2 column") }, - { 5, N_("Staggered layout D: even rows are offset left by 1/2 column") } - }; - - //! Base IFD Tags (IFD0 and IFD1) - static const TagInfo ifdTagInfo[] = { - TagInfo(0x000b, "ProcessingSoftware", N_("Processing Software"), - N_("The name and version of the software used to post-process " - "the picture."), // ACD Systems Digital Imaging tag - ifd0Id, otherTags, asciiString, 0, printValue), - TagInfo(0x00fe, "NewSubfileType", N_("New Subfile Type"), - N_("A general indication of the kind of data contained in this subfile."), - ifd0Id, imgStruct, unsignedLong, 1, EXV_PRINT_TAG(exifNewSubfileType)), // TIFF tag - TagInfo(0x00ff, "SubfileType", N_("Subfile Type"), - N_("A general indication of the kind of data contained in this subfile. " - "This field is deprecated. The NewSubfileType field should be used instead."), - ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifSubfileType)), // TIFF tag - TagInfo(0x0100, "ImageWidth", N_("Image Width"), - N_("The number of columns of image data, equal to the number of " - "pixels per row. In JPEG compressed data a JPEG marker is " - "used instead of this tag."), - ifd0Id, imgStruct, unsignedLong, 1, printValue), - TagInfo(0x0101, "ImageLength", N_("Image Length"), - N_("The number of rows of image data. In JPEG compressed data a " - "JPEG marker is used instead of this tag."), - ifd0Id, imgStruct, unsignedLong, 1, printValue), - TagInfo(0x0102, "BitsPerSample", N_("Bits per Sample"), - N_("The number of bits per image component. In this standard each " - "component of the image is 8 bits, so the value for this " - "tag is 8. See also . In JPEG compressed data " - "a JPEG marker is used instead of this tag."), - ifd0Id, imgStruct, unsignedShort, 3, printValue), - TagInfo(0x0103, "Compression", N_("Compression"), - N_("The compression scheme used for the image data. When a " - "primary image is JPEG compressed, this designation is " - "not necessary and is omitted. When thumbnails use JPEG " - "compression, this tag value is set to 6."), - ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifCompression)), - TagInfo(0x0106, "PhotometricInterpretation", N_("Photometric Interpretation"), - N_("The pixel composition. In JPEG compressed data a JPEG " - "marker is used instead of this tag."), - ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifPhotometricInterpretation)), - TagInfo(0x0107, "Threshholding", N_("Threshholding"), - N_("For black and white TIFF files that represent shades of gray, " - "the technique used to convert from gray to black and white pixels."), - ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifThreshholding)), // TIFF tag - TagInfo(0x0108, "CellWidth", N_("Cell Width"), - N_("The width of the dithering or halftoning matrix used to create a " - "dithered or halftoned bilevel file."), - ifd0Id, imgStruct, unsignedShort, 1, printValue), // TIFF tag - TagInfo(0x0109, "CellLength", N_("Cell Length"), - N_("The length of the dithering or halftoning matrix used to create a " - "dithered or halftoned bilevel file."), - ifd0Id, imgStruct, unsignedShort, 1, printValue), // TIFF tag - TagInfo(0x010a, "FillOrder", N_("Fill Order"), - N_("The logical order of bits within a byte"), - ifd0Id, imgStruct, unsignedShort, 1, printValue), // TIFF tag - TagInfo(0x010d, "DocumentName", N_("Document Name"), - N_("The name of the document from which this image was scanned"), - ifd0Id, imgStruct, asciiString, 0, printValue), // TIFF tag - TagInfo(0x010e, "ImageDescription", N_("Image Description"), - N_("A character string giving the title of the image. It may be " - "a comment such as \"1988 company picnic\" or " - "the like. Two-bytes character codes cannot be used. " - "When a 2-bytes code is necessary, the Exif Private tag " - " is to be used."), - ifd0Id, otherTags, asciiString, 0, printValue), - TagInfo(0x010f, "Make", N_("Manufacturer"), - N_("The manufacturer of the recording " - "equipment. This is the manufacturer of the DSC, scanner, " - "video digitizer or other equipment that generated the " - "image. When the field is left blank, it is treated as unknown."), - ifd0Id, otherTags, asciiString, 0, printValue), - TagInfo(0x0110, "Model", N_("Model"), - N_("The model name or model number of the equipment. This is the " - "model name or number of the DSC, scanner, video digitizer " - "or other equipment that generated the image. When the field " - "is left blank, it is treated as unknown."), - ifd0Id, otherTags, asciiString, 0, printValue), - TagInfo(0x0111, "StripOffsets", N_("Strip Offsets"), - N_("For each strip, the byte offset of that strip. It is " - "recommended that this be selected so the number of strip " - "bytes does not exceed 64 Kbytes. With JPEG compressed " - "data this designation is not needed and is omitted. See also " - " and ."), - ifd0Id, recOffset, unsignedLong, -1, printValue), - TagInfo(0x0112, "Orientation", N_("Orientation"), - N_("The image orientation viewed in terms of rows and columns."), - ifd0Id, imgStruct, unsignedShort, 1, print0x0112), - TagInfo(0x0115, "SamplesPerPixel", N_("Samples per Pixel"), - N_("The number of components per pixel. Since this standard applies " - "to RGB and YCbCr images, the value set for this tag is 3. " - "In JPEG compressed data a JPEG marker is used instead of this tag."), - ifd0Id, imgStruct, unsignedShort, 1, printValue), - TagInfo(0x0116, "RowsPerStrip", N_("Rows per Strip"), - N_("The number of rows per strip. This is the number of rows " - "in the image of one strip when an image is divided into " - "strips. With JPEG compressed data this designation is not " - "needed and is omitted. See also and ."), - ifd0Id, recOffset, unsignedLong, 1, printValue), - TagInfo(0x0117, "StripByteCounts", N_("Strip Byte Count"), - N_("The total number of bytes in each strip. With JPEG compressed " - "data this designation is not needed and is omitted."), - ifd0Id, recOffset, unsignedLong, -1, printValue), - TagInfo(0x011a, "XResolution", N_("X-Resolution"), - N_("The number of pixels per in the " - "direction. When the image resolution is unknown, 72 [dpi] is designated."), - ifd0Id, imgStruct, unsignedRational, 1, printLong), - TagInfo(0x011b, "YResolution", N_("Y-Resolution"), - N_("The number of pixels per in the " - "direction. The same value as is designated."), - ifd0Id, imgStruct, unsignedRational, 1, printLong), - TagInfo(0x011c, "PlanarConfiguration", N_("Planar Configuration"), - N_("Indicates whether pixel components are recorded in a chunky " - "or planar format. In JPEG compressed files a JPEG marker " - "is used instead of this tag. If this field does not exist, " - "the TIFF default of 1 (chunky) is assumed."), - ifd0Id, imgStruct, unsignedShort, 1, printValue), - TagInfo(0x0122, "GrayResponseUnit", N_("Gray Response Unit"), - N_("The precision of the information contained in the GrayResponseCurve."), - ifd0Id, imgStruct, unsignedShort, 1, printValue), // TIFF tag - TagInfo(0x0123, "GrayResponseCurve", N_("Gray Response Curve"), - N_("For grayscale data, the optical density of each possible pixel value."), - ifd0Id, imgStruct, unsignedShort, -1, printValue), // TIFF tag - TagInfo(0x0124, "T4Options", N_("T4 Options"), - N_("T.4-encoding options."), - ifd0Id, imgStruct, unsignedLong, 1, printValue), // TIFF tag - TagInfo(0x0125, "T6Options", N_("T6 Options"), - N_("T.6-encoding options."), - ifd0Id, imgStruct, unsignedLong, 1, printValue), // TIFF tag - TagInfo(0x0128, "ResolutionUnit", N_("Resolution Unit"), - N_("The unit for measuring and . The same " - "unit is used for both and . If " - "the image resolution is unknown, 2 (inches) is designated."), - ifd0Id, imgStruct, unsignedShort, 1, printExifUnit), - TagInfo(0x012d, "TransferFunction", N_("Transfer Function"), - N_("A transfer function for the image, described in tabular style. " - "Normally this tag is not necessary, since color space is " - "specified in the color space information tag ()."), - ifd0Id, imgCharacter, unsignedShort, 3*256, printValue), - TagInfo(0x0131, "Software", N_("Software"), - N_("This tag records the name and version of the software or " - "firmware of the camera or image input device used to " - "generate the image. The detailed format is not specified, but " - "it is recommended that the example shown below be " - "followed. When the field is left blank, it is treated as unknown."), - ifd0Id, otherTags, asciiString, 0, printValue), - TagInfo(0x0132, "DateTime", N_("Date and Time"), - N_("The date and time of image creation. In Exif standard, " - "it is the date and time the file was changed."), - ifd0Id, otherTags, asciiString, 20, printValue), - TagInfo(0x013b, "Artist", N_("Artist"), - N_("This tag records the name of the camera owner, photographer or " - "image creator. The detailed format is not specified, but it is " - "recommended that the information be written as in the example " - "below for ease of Interoperability. When the field is " - "left blank, it is treated as unknown. Ex.) \"Camera owner, John " - "Smith; Photographer, Michael Brown; Image creator, Ken James\""), - ifd0Id, otherTags, asciiString, 0, printValue), - TagInfo(0x013c, "HostComputer", N_("Host Computer"), - N_("This tag records information about the host computer used " - "to generate the image."), - ifd0Id, otherTags, asciiString, 0, printValue), - TagInfo(0x013d, "Predictor", N_("Predictor"), - N_("A predictor is a mathematical operator that is applied to " - "the image data before an encoding scheme is applied."), - ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifPredictor)), // TIFF tag - TagInfo(0x013e, "WhitePoint", N_("White Point"), - N_("The chromaticity of the white point of the image. Normally " - "this tag is not necessary, since color space is specified " - "in the colorspace information tag ()."), - ifd0Id, imgCharacter, unsignedRational, 2, printValue), - TagInfo(0x013f, "PrimaryChromaticities", N_("Primary Chromaticities"), - N_("The chromaticity of the three primary colors of the image. " - "Normally this tag is not necessary, since colorspace is " - "specified in the colorspace information tag ()."), - ifd0Id, imgCharacter, unsignedRational, 6, printValue), - TagInfo(0x0140, "ColorMap", N_("Color Map"), - N_("A color map for palette color images. This field defines " - "a Red-Green-Blue color map (often called a lookup table) " - "for palette-color images. In a palette-color image, a " - "pixel value is used to index into an RGB lookup table."), - ifd0Id, imgCharacter, unsignedShort, -1, printValue), - TagInfo(0x0141, "HalftoneHints", N_("Halftone Hints"), - N_("The purpose of the HalftoneHints field is to convey to the " - "halftone function the range of gray levels within a " - "colorimetrically-specified image that should retain tonal detail."), - ifd0Id, imgStruct, unsignedShort, 2, printValue), // TIFF tag - TagInfo(0x0142, "TileWidth", N_("Tile Width"), - N_("The tile width in pixels. This is the number of columns in each tile."), - ifd0Id, recOffset, unsignedShort, 1, printValue), // TIFF tag - TagInfo(0x0143, "TileLength", N_("Tile Length"), - N_("The tile length (height) in pixels. This is the number of rows in each tile."), - ifd0Id, recOffset, unsignedShort, 1, printValue), // TIFF tag - TagInfo(0x0144, "TileOffsets", N_("Tile Offsets"), - N_("For each tile, the byte offset of that tile, as compressed and " - "stored on disk. The offset is specified with respect to the " - "beginning of the TIFF file. Note that this implies that each " - "tile has a location independent of the locations of other tiles."), - ifd0Id, recOffset, unsignedShort, -1, printValue), // TIFF tag - TagInfo(0x0145, "TileByteCounts", N_("Tile Byte Counts"), - N_("For each tile, the number of (compressed) bytes in that tile. See " - "TileOffsets for a description of how the byte counts are ordered."), - ifd0Id, recOffset, unsignedShort, -1, printValue), // TIFF tag - TagInfo(0x014a, "SubIFDs", N_("SubIFD Offsets"), - N_("Defined by Adobe Corporation to enable TIFF Trees within a TIFF file."), - ifd0Id, tiffEp, unsignedLong, -1, printValue), - TagInfo(0x014c, "InkSet", N_("Ink Set"), - N_("The set of inks used in a separated (PhotometricInterpretation=5) image."), - ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifInkSet)), // TIFF tag - TagInfo(0x014d, "InkNames", N_("Ink Names"), - N_("The name of each ink used in a separated (PhotometricInterpretation=5) image."), - ifd0Id, imgStruct, asciiString, 0, printValue), // TIFF tag - TagInfo(0x014e, "NumberOfInks", N_("Number Of Inks"), - N_("The number of inks. Usually equal to SamplesPerPixel, unless there are extra samples."), - ifd0Id, imgStruct, unsignedShort, 1, printValue), // TIFF tag - TagInfo(0x0150, "DotRange", N_("Dot Range"), - N_("The component values that correspond to a 0% dot and 100% dot."), - ifd0Id, imgStruct, unsignedByte, -1, printValue), // TIFF tag - TagInfo(0x0151, "TargetPrinter", N_("Target Printer"), - N_("A description of the printing environment for which this separation is intended."), - ifd0Id, imgStruct, asciiString, 0, printValue), // TIFF tag - TagInfo(0x0152, "ExtraSamples", N_("Extra Samples"), - N_("Specifies that each pixel has m extra components whose interpretation " - "is defined by one of the values listed below."), - ifd0Id, imgStruct, unsignedShort, -1, printValue), // TIFF tag - TagInfo(0x0153, "SampleFormat", N_("Sample Format"), - N_("This field specifies how to interpret each data sample in a pixel."), - ifd0Id, imgStruct, unsignedShort, -1, EXV_PRINT_TAG(exifSampleFormat)), // TIFF tag - TagInfo(0x0154, "SMinSampleValue", N_("SMin Sample Value"), - N_("This field specifies the minimum sample value."), - ifd0Id, imgStruct, unsignedShort, -1, printValue), // TIFF tag - TagInfo(0x0155, "SMaxSampleValue", N_("SMax Sample Value"), - N_("This field specifies the maximum sample value."), - ifd0Id, imgStruct, unsignedShort, -1, printValue), // TIFF tag - TagInfo(0x0156, "TransferRange", N_("Transfer Range"), - N_("Expands the range of the TransferFunction"), - ifd0Id, imgCharacter, unsignedShort, 6, printValue), // TIFF tag - TagInfo(0x0157, "ClipPath", N_("Clip Path"), - N_("A TIFF ClipPath is intended to mirror the essentials of PostScript's " - "path creation functionality."), - ifd0Id, tiffPm6, unsignedByte, -1, printValue), // TIFF&PM6 tag - TagInfo(0x0158, "XClipPathUnits", N_("X Clip Path Units"), - N_("The number of units that span the width of the image, in terms of " - "integer ClipPath coordinates."), - ifd0Id, tiffPm6, signedShort, 1, printValue), // TIFF&PM6 tag - TagInfo(0x0159, "YClipPathUnits", N_("Y Clip Path Units"), - N_("The number of units that span the height of the image, in terms of " - "integer ClipPath coordinates."), - ifd0Id, tiffPm6, signedShort, 1, printValue), // TIFF&PM6 tag - TagInfo(0x015a, "Indexed", N_("Indexed"), - N_("Indexed images are images where the 'pixels' do not represent color " - "values, but rather an index (usually 8-bit) into a separate color " - "table, the ColorMap."), - ifd0Id, tiffPm6, unsignedShort, 1, EXV_PRINT_TAG(exifIndexed)), // TIFF&PM6 tag - TagInfo(0x015b, "JPEGTables", N_("JPEG tables"), - N_("This optional tag may be used to encode the JPEG quantization and" - "Huffman tables for subsequent use by the JPEG decompression process."), - ifd0Id, imgStruct, undefined, 0, printValue), // TIFF/EP tag - TagInfo(0x015F, "OPIProxy", N_("OPI Proxy"), - N_("OPIProxy gives information concerning whether this image is a " - "low-resolution proxy of a high-resolution image (Adobe OPI)."), - ifd0Id, adobeOpi, unsignedShort, 1, printValue), // Adobe OPI tag - TagInfo(0x0200, "JPEGProc", N_("JPEG Process"), - N_("This field indicates the process used to produce the compressed data"), - ifd0Id, recOffset, unsignedLong, 1, printValue), // TIFF tag - TagInfo(0x0201, "JPEGInterchangeFormat", N_("JPEG Interchange Format"), - N_("The offset to the start byte (SOI) of JPEG compressed " - "thumbnail data. This is not used for primary image JPEG data."), - ifd0Id, recOffset, unsignedLong, 1, printValue), - TagInfo(0x0202, "JPEGInterchangeFormatLength", N_("JPEG Interchange Format Length"), - N_("The number of bytes of JPEG compressed thumbnail data. This " - "is not used for primary image JPEG data. JPEG thumbnails " - "are not divided but are recorded as a continuous JPEG " - "bitstream from SOI to EOI. Appn and COM markers should " - "not be recorded. Compressed thumbnails must be recorded in no " - "more than 64 Kbytes, including all other data to be recorded in APP1."), - ifd0Id, recOffset, unsignedLong, 1, printValue), - TagInfo(0x0203, "JPEGRestartInterval", N_("JPEG Restart Interval"), - N_("This Field indicates the length of the restart interval used " - "in the compressed image data."), - ifd0Id, imgStruct, unsignedShort, 1, printValue), // TIFF tag - TagInfo(0x0205, "JPEGLosslessPredictors", N_("JPEG Lossless Predictors"), - N_("This Field points to a list of lossless predictor-selection " - "values, one per component."), - ifd0Id, imgStruct, unsignedShort, -1, EXV_PRINT_TAG(exifJpegLosslessPredictor)), // TIFF tag - TagInfo(0x0206, "JPEGPointTransforms", N_("JPEG Point Transforms"), - N_("This Field points to a list of point transform values, one per component."), - ifd0Id, imgStruct, unsignedShort, -1, printValue), // TIFF tag - TagInfo(0x0207, "JPEGQTables", N_("JPEG Q-Tables"), - N_("This Field points to a list of offsets to the quantization tables, " - "one per component."), - ifd0Id, imgStruct, unsignedLong, -1, printValue), // TIFF tag - TagInfo(0x0208, "JPEGDCTables", N_("JPEG DC-Tables"), - N_("This Field points to a list of offsets to the DC Huffman tables or " - "the lossless Huffman tables, one per component."), - ifd0Id, imgStruct, unsignedLong, -1, printValue), // TIFF tag - TagInfo(0x0209, "JPEGACTables", N_("JPEG AC-Tables"), - N_("This Field points to a list of offsets to the Huffman AC tables, " - "one per component."), - ifd0Id, imgStruct, unsignedLong, -1, printValue), // TIFF tag - TagInfo(0x0211, "YCbCrCoefficients", N_("YCbCr Coefficients"), - N_("The matrix coefficients for transformation from RGB to YCbCr " - "image data. No default is given in TIFF; but here the " - "value given in Appendix E, \"Color Space Guidelines\", is used " - "as the default. The color space is declared in a " - "color space information tag, with the default being the value " - "that gives the optimal image characteristics " - "Interoperability this condition."), - ifd0Id, imgCharacter, unsignedRational, 3, printValue), - TagInfo(0x0212, "YCbCrSubSampling", N_("YCbCr Sub-Sampling"), - N_("The sampling ratio of chrominance components in relation to the " - "luminance component. In JPEG compressed data a JPEG marker " - "is used instead of this tag."), - ifd0Id, imgStruct, unsignedShort, 2, printValue), - TagInfo(0x0213, "YCbCrPositioning", N_("YCbCr Positioning"), - N_("The position of chrominance components in relation to the " - "luminance component. This field is designated only for " - "JPEG compressed data or uncompressed YCbCr data. The TIFF " - "default is 1 (centered); but when Y:Cb:Cr = 4:2:2 it is " - "recommended in this standard that 2 (co-sited) be used to " - "record data, in order to improve the image quality when viewed " - "on TV systems. When this field does not exist, the reader shall " - "assume the TIFF default. In the case of Y:Cb:Cr = 4:2:0, the " - "TIFF default (centered) is recommended. If the reader " - "does not have the capability of supporting both kinds of " - ", it shall follow the TIFF default regardless " - "of the value in this field. It is preferable that readers " - "be able to support both centered and co-sited positioning."), - ifd0Id, imgStruct, unsignedShort, 1, print0x0213), - TagInfo(0x0214, "ReferenceBlackWhite", N_("Reference Black/White"), - N_("The reference black point value and reference white point " - "value. No defaults are given in TIFF, but the values " - "below are given as defaults here. The color space is declared " - "in a color space information tag, with the default " - "being the value that gives the optimal image characteristics " - "Interoperability these conditions."), - ifd0Id, imgCharacter, unsignedRational, 6, printValue), - TagInfo(0x02bc, "XMLPacket", N_("XML Packet"), - N_("XMP Metadata (Adobe technote 9-14-02)"), - ifd0Id, otherTags, unsignedByte, -1, printValue), - TagInfo(0x4746, "Rating", N_("Windows Rating"), - N_("Rating tag used by Windows"), - ifd0Id, otherTags, unsignedShort, -1, printValue), // Windows Tag - TagInfo(0x4749, "RatingPercent", N_("Windows Rating Percent"), - N_("Rating tag used by Windows, value in percent"), - ifd0Id, otherTags, unsignedShort, -1, printValue), // Windows Tag - TagInfo(0x800d, "ImageID", N_("Image ID"), - N_("ImageID is the full pathname of the original, high-resolution image, " - "or any other identifying string that uniquely identifies the original " - "image (Adobe OPI)."), - ifd0Id, adobeOpi, asciiString, 0, printValue), // Adobe OPI tag - TagInfo(0x828d, "CFARepeatPatternDim", N_("CFA Repeat Pattern Dimension"), - N_("Contains two values representing the minimum rows and columns " - "to define the repeating patterns of the color filter array"), - ifd0Id, tiffEp, unsignedShort, 2, printValue), // TIFF/EP Tag - TagInfo(0x828e, "CFAPattern", N_("CFA Pattern"), - N_("Indicates the color filter array (CFA) geometric pattern of the image " - "sensor when a one-chip color area sensor is used. It does not apply to " - "all sensing methods"), - ifd0Id, tiffEp, unsignedByte, -1, printValue), // TIFF/EP Tag - TagInfo(0x828f, "BatteryLevel", N_("Battery Level"), - "Contains a value of the battery level as a fraction or string", - ifd0Id, tiffEp, unsignedRational, 1, printValue), // TIFF/EP Tag - TagInfo(0x8298, "Copyright", N_("Copyright"), - N_("Copyright information. In this standard the tag is used to " - "indicate both the photographer and editor copyrights. It is " - "the copyright notice of the person or organization claiming " - "rights to the image. The Interoperability copyright " - "statement including date and rights should be written in this " - "field; e.g., \"Copyright, John Smith, 19xx. All rights " - "reserved.\". In this standard the field records both the " - "photographer and editor copyrights, with each recorded in a " - "separate part of the statement. When there is a clear distinction " - "between the photographer and editor copyrights, these are to be " - "written in the order of photographer followed by editor copyright, " - "separated by NULL (in this case since the statement also ends with " - "a NULL, there are two NULL codes). When only the photographer " - "copyright is given, it is terminated by one NULL code . When only " - "the editor copyright is given, the photographer copyright part " - "consists of one space followed by a terminating NULL code, then " - "the editor copyright is given. When the field is left blank, it is " - "treated as unknown."), - ifd0Id, otherTags, asciiString, 0, print0x8298), - TagInfo(0x829a, "ExposureTime", N_("Exposure Time"), N_("Exposure time, given in seconds."), ifd0Id, tiffEp, unsignedRational, 1, print0x829a), // TIFF/EP tag - TagInfo(0x829d, "FNumber", N_("FNumber"), N_("The F number."), ifd0Id, tiffEp, unsignedRational, 1, print0x829d), // TIFF/EP tag - TagInfo(0x83bb, "IPTCNAA", N_("IPTC/NAA"), - N_("Contains an IPTC/NAA record"), - ifd0Id, tiffEp, unsignedLong, 0, printValue), // TIFF/EP Tag - TagInfo(0x8649, "ImageResources", N_("Image Resources Block"), - N_("Contains information embedded by the Adobe Photoshop application"), - ifd0Id, otherTags, unsignedByte, -1, printValue), - TagInfo(0x8769, "ExifTag", N_("Exif IFD Pointer"), - N_("A pointer to the Exif IFD. Interoperability, Exif IFD has the " - "same structure as that of the IFD specified in TIFF. " - "ordinarily, however, it does not contain image data as in " - "the case of TIFF."), - ifd0Id, exifFormat, unsignedLong, 1, printValue), - TagInfo(0x8773, "InterColorProfile", N_("Inter Color Profile"), - N_("Contains an InterColor Consortium (ICC) format color space characterization/profile"), - ifd0Id, tiffEp, undefined, -1, printValue), - TagInfo(0x8822, "ExposureProgram", N_("Exposure Program"), N_("The class of the program used by the camera to set exposure when the picture is taken."), ifd0Id, tiffEp, unsignedShort, 1, print0x8822), // TIFF/EP tag - TagInfo(0x8824, "SpectralSensitivity", N_("Spectral Sensitivity"), N_("Indicates the spectral sensitivity of each channel of the camera used."), ifd0Id, tiffEp, asciiString, 0, printValue), // TIFF/EP tag - TagInfo(0x8825, "GPSTag", N_("GPS Info IFD Pointer"), - N_("A pointer to the GPS Info IFD. The " - "Interoperability structure of the GPS Info IFD, like that of " - "Exif IFD, has no image data."), - ifd0Id, exifFormat, unsignedLong, 1, printValue), - TagInfo(0x8827, "ISOSpeedRatings", N_("ISO Speed Ratings"), N_("Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232."), ifd0Id, tiffEp, unsignedShort, 0, print0x8827), // TIFF/EP tag - TagInfo(0x8828, "OECF", N_("OECF"), N_("Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524."), ifd0Id, tiffEp, undefined, 0, printValue), // TIFF/EP tag - TagInfo(0x8829, "Interlace", N_("Interlace"), N_("Indicates the field number of multifield images."), ifd0Id, tiffEp, unsignedShort, 1, printValue), // TIFF/EP tag - TagInfo(0x882a, "TimeZoneOffset", N_("Time Zone Offset"), - N_("This optional tag encodes the time zone of the camera clock (relative" - "to Greenwich Mean Time) used to create the DataTimeOriginal tag-value" - "when the picture was taken. It may also contain the time zone offset" - "of the clock used to create the DateTime tag-value when the image was" - "modified."), - ifd0Id, tiffEp, signedShort, -1, printValue), - TagInfo(0x882b, "SelfTimerMode", N_("Self Timer Mode"), N_("Number of seconds image capture was delayed from button press."), ifd0Id, tiffEp, unsignedShort, 1, printValue), // TIFF/EP tag - TagInfo(0x9003, "DateTimeOriginal", N_("Date Time Original"), N_("The date and time when the original image data was generated."), ifd0Id, tiffEp, asciiString, 20, printValue), // TIFF/EP tag - TagInfo(0x9102, "CompressedBitsPerPixel", N_("Compressed Bits Per Pixel"), N_("Specific to compressed data; states the compressed bits per pixel."), ifd0Id, tiffEp, unsignedRational, 1, printFloat), // TIFF/EP tag - TagInfo(0x9201, "ShutterSpeedValue", N_("Shutter Speed Value"), N_("Shutter speed."), ifd0Id, tiffEp, signedRational, 1, print0x9201), // TIFF/EP tag - TagInfo(0x9202, "ApertureValue", N_("Aperture Value"), N_("The lens aperture."), ifd0Id, tiffEp, unsignedRational, 1, print0x9202), // TIFF/EP tag - TagInfo(0x9203, "BrightnessValue", N_("Brightness Value"), N_("The value of brightness."), ifd0Id, tiffEp, signedRational, 1, printFloat), // TIFF/EP tag - TagInfo(0x9204, "ExposureBiasValue", N_("Exposure Bias Value"), N_("The exposure bias."), ifd0Id, tiffEp, signedRational, 1, print0x9204), // TIFF/EP tag - TagInfo(0x9205, "MaxApertureValue", N_("Max Aperture Value"), N_("The smallest F number of the lens."), ifd0Id, tiffEp, unsignedRational, 1, print0x9202), // TIFF/EP tag - TagInfo(0x9206, "SubjectDistance", N_("Subject Distance"), N_("The distance to the subject, given in meters."), ifd0Id, tiffEp, signedRational, 1, print0x9206), // TIFF/EP tag - TagInfo(0x9207, "MeteringMode", N_("Metering Mode"), N_("The metering mode."), ifd0Id, tiffEp, unsignedShort, 1, print0x9207), // TIFF/EP tag - TagInfo(0x9208, "LightSource", N_("Light Source"), N_("The kind of light source."), ifd0Id, tiffEp, unsignedShort, 1, print0x9208), // TIFF/EP tag - TagInfo(0x9209, "Flash", N_("Flash"), N_("Indicates the status of flash when the image was shot."), ifd0Id, tiffEp, unsignedShort, 1, EXV_PRINT_TAG(exifFlash)), // TIFF/EP tag - TagInfo(0x920a, "FocalLength", N_("Focal Length"), N_("The actual focal length of the lens, in mm."), ifd0Id, tiffEp, unsignedRational, 1, print0x920a), // TIFF/EP tag - TagInfo(0x920b, "FlashEnergy", N_("Flash Energy"), N_("Amount of flash energy (BCPS)."), ifd0Id, tiffEp, unsignedRational, 1, printValue), // TIFF/EP tag - TagInfo(0x920c, "SpatialFrequencyResponse", N_("Spatial Frequency Response"), N_("SFR of the camera."), ifd0Id, tiffEp, undefined, 0, printValue), // TIFF/EP tag - TagInfo(0x920d, "Noise", N_("Noise"), N_("Noise measurement values."), ifd0Id, tiffEp, undefined, 0, printValue), // TIFF/EP tag - TagInfo(0x920e, "FocalPlaneXResolution", N_("Focal Plane X Resolution"), N_("Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth direction for main image."), ifd0Id, tiffEp, unsignedRational, 1, printValue), // TIFF/EP tag - TagInfo(0x920f, "FocalPlaneYResolution", N_("Focal Plane Y Resolution"), N_("Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength direction for main image."), ifd0Id, tiffEp, unsignedRational, 1, printValue), // TIFF/EP tag - TagInfo(0x9210, "FocalPlaneResolutionUnit", N_("Focal Plane Resolution Unit"), N_("Unit of measurement for FocalPlaneXResolution(37390) and FocalPlaneYResolution(37391)."), ifd0Id, tiffEp, unsignedShort, 1, printValue), // TIFF/EP tag - TagInfo(0x9211, "ImageNumber", N_("Image Number"), N_("Number assigned to an image, e.g., in a chained image burst."), ifd0Id, tiffEp, unsignedLong, 1, printValue), // TIFF/EP tag - TagInfo(0x9212, "SecurityClassification", N_("Security Classification"), N_("Security classification assigned to the image."), ifd0Id, tiffEp, asciiString, 0, printValue), // TIFF/EP tag - TagInfo(0x9213, "ImageHistory", N_("Image History"), N_("Record of what has been done to the image."), ifd0Id, tiffEp, asciiString, 0, printValue), // TIFF/EP tag - TagInfo(0x9214, "SubjectLocation", N_("Subject Location"), N_("Indicates the location and area of the main subject in the overall scene."), ifd0Id, tiffEp, unsignedShort, 2, printValue), // TIFF/EP tag - TagInfo(0x9215, "ExposureIndex", N_("Exposure Index"), N_("Encodes the camera exposure index setting when image was captured."), ifd0Id, tiffEp, unsignedRational, 1, printValue), // TIFF/EP tag - TagInfo(0x9216, "TIFFEPStandardID", N_("TIFF/EP Standard ID"), - N_("Contains four ASCII characters representing the TIFF/EP standard " - "version of a TIFF/EP file, eg '1', '0', '0', '0'"), - ifd0Id, tiffEp, unsignedByte, 4, printValue), // TIFF/EP Tag - TagInfo(0x9217, "SensingMethod", N_("Sensing Method"), N_("Type of image sensor."), ifd0Id, tiffEp, unsignedShort, 1, printValue), // TIFF/EP tag - TagInfo(0x9c9b, "XPTitle", N_("Windows Title"), - N_("Title tag used by Windows, encoded in UCS2"), - ifd0Id, otherTags, unsignedByte, -1, printUcs2), // Windows Tag - TagInfo(0x9c9c, "XPComment", N_("Windows Comment"), - N_("Comment tag used by Windows, encoded in UCS2"), - ifd0Id, otherTags, unsignedByte, -1, printUcs2), // Windows Tag - TagInfo(0x9c9d, "XPAuthor", N_("Windows Author"), - N_("Author tag used by Windows, encoded in UCS2"), - ifd0Id, otherTags, unsignedByte, -1, printUcs2), // Windows Tag - TagInfo(0x9c9e, "XPKeywords", N_("Windows Keywords"), - N_("Keywords tag used by Windows, encoded in UCS2"), - ifd0Id, otherTags, unsignedByte, -1, printUcs2), // Windows Tag - TagInfo(0x9c9f, "XPSubject", N_("Windows Subject"), - N_("Subject tag used by Windows, encoded in UCS2"), - ifd0Id, otherTags, unsignedByte, -1, printUcs2), // Windows Tag - TagInfo(0xc4a5, "PrintImageMatching", N_("Print Image Matching"), - N_("Print Image Matching, description needed."), - ifd0Id, otherTags, undefined, -1, printValue), - TagInfo(0xc612, "DNGVersion", N_("DNG version"), - N_("This tag encodes the DNG four-tier version number. For files " - "compliant with version 1.1.0.0 of the DNG specification, this " - "tag should contain the bytes: 1, 1, 0, 0."), - ifd0Id, dngTags, unsignedByte, 4, printValue), // DNG tag - TagInfo(0xc613, "DNGBackwardVersion", N_("DNG backward version"), - N_("This tag specifies the oldest version of the Digital Negative " - "specification for which a file is compatible. Readers should" - "not attempt to read a file if this tag specifies a version " - "number that is higher than the version number of the specification " - "the reader was based on. In addition to checking the version tags, " - "readers should, for all tags, check the types, counts, and values, " - "to verify it is able to correctly read the file."), - ifd0Id, dngTags, unsignedByte, 4, printValue), // DNG tag - TagInfo(0xc614, "UniqueCameraModel", N_("Unique Camera Model"), - N_("Defines a unique, non-localized name for the camera model that " - "created the image in the raw file. This name should include the " - "manufacturer's name to avoid conflicts, and should not be localized, " - "even if the camera name itself is localized for different markets " - "(see LocalizedCameraModel). This string may be used by reader " - "software to index into per-model preferences and replacement profiles."), - ifd0Id, dngTags, asciiString, 0, printValue), // DNG tag - TagInfo(0xc615, "LocalizedCameraModel", N_("Localized Camera Model"), - N_("Similar to the UniqueCameraModel field, except the name can be " - "localized for different markets to match the localization of the " - "camera name."), - ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag - TagInfo(0xc616, "CFAPlaneColor", N_("CFA Plane Color"), - N_("Provides a mapping between the values in the CFAPattern tag and the " - "plane numbers in LinearRaw space. This is a required tag for non-RGB " - "CFA images."), - ifd0Id, dngTags, unsignedByte, -1, printValue), // DNG tag - TagInfo(0xc617, "CFALayout", N_("CFA Layout"), - N_("Describes the spatial layout of the CFA."), - ifd0Id, dngTags, unsignedShort, 1, EXV_PRINT_TAG(exifCfaLayout)), // DNG tag - TagInfo(0xc618, "LinearizationTable", N_("Linearization Table"), - N_("Describes a lookup table that maps stored values into linear values. " - "This tag is typically used to increase compression ratios by storing " - "the raw data in a non-linear, more visually uniform space with fewer " - "total encoding levels. If SamplesPerPixel is not equal to one, this " - "single table applies to all the samples for each pixel."), - ifd0Id, dngTags, unsignedShort, -1, printValue), // DNG tag - TagInfo(0xc619, "BlackLevelRepeatDim", N_("Black Level Repeat Dim"), - N_("Specifies repeat pattern size for the BlackLevel tag."), - ifd0Id, dngTags, unsignedShort, 2, printValue), // DNG tag - TagInfo(0xc61a, "BlackLevel", N_("Black Level"), - N_("Specifies the zero light (a.k.a. thermal black or black current) " - "encoding level, as a repeating pattern. The origin of this pattern " - "is the top-left corner of the ActiveArea rectangle. The values are " - "stored in row-column-sample scan order."), - ifd0Id, dngTags, unsignedRational, -1, printValue), // DNG tag - TagInfo(0xc61b, "BlackLevelDeltaH", N_("Black Level Delta H"), - N_("If the zero light encoding level is a function of the image column, " - "BlackLevelDeltaH specifies the difference between the zero light " - "encoding level for each column and the baseline zero light encoding " - "level. If SamplesPerPixel is not equal to one, this single table " - "applies to all the samples for each pixel."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc61c, "BlackLevelDeltaV", N_("Black Level Delta V"), - N_("If the zero light encoding level is a function of the image row, " - "this tag specifies the difference between the zero light encoding " - "level for each row and the baseline zero light encoding level. If " - "SamplesPerPixel is not equal to one, this single table applies to " - "all the samples for each pixel."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc61d, "WhiteLevel", N_("White Level"), - N_("This tag specifies the fully saturated encoding level for the raw " - "sample values. Saturation is caused either by the sensor itself " - "becoming highly non-linear in response, or by the camera's analog " - "to digital converter clipping."), - ifd0Id, dngTags, unsignedShort, -1, printValue), // DNG tag - TagInfo(0xc61e, "DefaultScale", N_("Default Scale"), - N_("DefaultScale is required for cameras with non-square pixels. It " - "specifies the default scale factors for each direction to convert " - "the image to square pixels. Typically these factors are selected " - "to approximately preserve total pixel count. For CFA images that " - "use CFALayout equal to 2, 3, 4, or 5, such as the Fujifilm SuperCCD, " - "these two values should usually differ by a factor of 2.0."), - ifd0Id, dngTags, unsignedRational, 2, printValue), // DNG tag - TagInfo(0xc61f, "DefaultCropOrigin", N_("Default Crop Origin"), - N_("Raw images often store extra pixels around the edges of the final " - "image. These extra pixels help prevent interpolation artifacts near " - "the edges of the final image. DefaultCropOrigin specifies the origin " - "of the final image area, in raw image coordinates (i.e., before the " - "DefaultScale has been applied), relative to the top-left corner of " - "the ActiveArea rectangle."), - ifd0Id, dngTags, unsignedShort, 2, printValue), // DNG tag - TagInfo(0xc620, "DefaultCropSize", N_("Default Crop Size"), - N_("Raw images often store extra pixels around the edges of the final " - "image. These extra pixels help prevent interpolation artifacts near " - "the edges of the final image. DefaultCropSize specifies the size of " - "the final image area, in raw image coordinates (i.e., before the " - "DefaultScale has been applied)."), - ifd0Id, dngTags, unsignedShort, 2, printValue), // DNG tag - TagInfo(0xc621, "ColorMatrix1", N_("Color Matrix 1"), - N_("ColorMatrix1 defines a transformation matrix that converts XYZ " - "values to reference camera native color space values, under the " - "first calibration illuminant. The matrix values are stored in row " - "scan order. The ColorMatrix1 tag is required for all non-monochrome " - "DNG files."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc622, "ColorMatrix2", N_("Color Matrix 2"), - N_("ColorMatrix2 defines a transformation matrix that converts XYZ " - "values to reference camera native color space values, under the " - "second calibration illuminant. The matrix values are stored in row " - "scan order."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc623, "CameraCalibration1", N_("Camera Calibration 1"), - N_("CameraClalibration1 defines a calibration matrix that transforms " - "reference camera native space values to individual camera native " - "space values under the first calibration illuminant. The matrix is " - "stored in row scan order. This matrix is stored separately from the " - "matrix specified by the ColorMatrix1 tag to allow raw converters to " - "swap in replacement color matrices based on UniqueCameraModel tag, " - "while still taking advantage of any per-individual camera calibration " - "performed by the camera manufacturer."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc624, "CameraCalibration2", N_("Camera Calibration 2"), - N_("CameraCalibration2 defines a calibration matrix that transforms " - "reference camera native space values to individual camera native " - "space values under the second calibration illuminant. The matrix is " - "stored in row scan order. This matrix is stored separately from the " - "matrix specified by the ColorMatrix2 tag to allow raw converters to " - "swap in replacement color matrices based on UniqueCameraModel tag, " - "while still taking advantage of any per-individual camera calibration " - "performed by the camera manufacturer."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc625, "ReductionMatrix1", N_("Reduction Matrix 1"), - N_("ReductionMatrix1 defines a dimensionality reduction matrix for use as " - "the first stage in converting color camera native space values to XYZ " - "values, under the first calibration illuminant. This tag may only be " - "used if ColorPlanes is greater than 3. The matrix is stored in row " - "scan order."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc626, "ReductionMatrix2", N_("Reduction Matrix 2"), - N_("ReductionMatrix2 defines a dimensionality reduction matrix for use as " - "the first stage in converting color camera native space values to XYZ " - "values, under the second calibration illuminant. This tag may only be " - "used if ColorPlanes is greater than 3. The matrix is stored in row " - "scan order."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc627, "AnalogBalance", N_("Analog Balance"), - N_("Normally the stored raw values are not white balanced, since any " - "digital white balancing will reduce the dynamic range of the final " - "image if the user decides to later adjust the white balance; " - "however, if camera hardware is capable of white balancing the color " - "channels before the signal is digitized, it can improve the dynamic " - "range of the final image. AnalogBalance defines the gain, either " - "analog (recommended) or digital (not recommended) that has been " - "applied the stored raw values."), - ifd0Id, dngTags, unsignedRational, -1, printValue), // DNG tag - TagInfo(0xc628, "AsShotNeutral", N_("As Shot Neutral"), - N_("Specifies the selected white balance at time of capture, encoded as " - "the coordinates of a perfectly neutral color in linear reference " - "space values. The inclusion of this tag precludes the inclusion of " - "the AsShotWhiteXY tag."), - ifd0Id, dngTags, unsignedShort, -1, printValue), // DNG tag - TagInfo(0xc629, "AsShotWhiteXY", N_("As Shot White XY"), - N_("Specifies the selected white balance at time of capture, encoded as " - "x-y chromaticity coordinates. The inclusion of this tag precludes " - "the inclusion of the AsShotNeutral tag."), - ifd0Id, dngTags, unsignedRational, 2, printValue), // DNG tag - TagInfo(0xc62a, "BaselineExposure", N_("Baseline Exposure"), - N_("Camera models vary in the trade-off they make between highlight " - "headroom and shadow noise. Some leave a significant amount of " - "highlight headroom during a normal exposure. This allows significant " - "negative exposure compensation to be applied during raw conversion, " - "but also means normal exposures will contain more shadow noise. Other " - "models leave less headroom during normal exposures. This allows for " - "less negative exposure compensation, but results in lower shadow " - "noise for normal exposures. Because of these differences, a raw " - "converter needs to vary the zero point of its exposure compensation " - "control from model to model. BaselineExposure specifies by how much " - "(in EV units) to move the zero point. Positive values result in " - "brighter default results, while negative values result in darker " - "default results."), - ifd0Id, dngTags, signedRational, 1, printValue), // DNG tag - TagInfo(0xc62b, "BaselineNoise", N_("Baseline Noise"), - N_("Specifies the relative noise level of the camera model at a baseline " - "ISO value of 100, compared to a reference camera model. Since noise " - "levels tend to vary approximately with the square root of the ISO " - "value, a raw converter can use this value, combined with the current " - "ISO, to estimate the relative noise level of the current image."), - ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG tag - TagInfo(0xc62c, "BaselineSharpness", N_("Baseline Sharpness"), - N_("Specifies the relative amount of sharpening required for this camera " - "model, compared to a reference camera model. Camera models vary in " - "the strengths of their anti-aliasing filters. Cameras with weak or " - "no filters require less sharpening than cameras with strong " - "anti-aliasing filters."), - ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG tag - TagInfo(0xc62d, "BayerGreenSplit", N_("Bayer Green Split"), - N_("Only applies to CFA images using a Bayer pattern filter array. This " - "tag specifies, in arbitrary units, how closely the values of the " - "green pixels in the blue/green rows track the values of the green " - "pixels in the red/green rows. A value of zero means the two kinds " - "of green pixels track closely, while a non-zero value means they " - "sometimes diverge. The useful range for this tag is from 0 (no " - "divergence) to about 5000 (quite large divergence)."), - ifd0Id, dngTags, unsignedLong, 1, printValue), // DNG tag - TagInfo(0xc62e, "LinearResponseLimit", N_("Linear Response Limit"), - N_("Some sensors have an unpredictable non-linearity in their response " - "as they near the upper limit of their encoding range. This " - "non-linearity results in color shifts in the highlight areas of the " - "resulting image unless the raw converter compensates for this effect. " - "LinearResponseLimit specifies the fraction of the encoding range " - "above which the response may become significantly non-linear."), - ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG tag - TagInfo(0xc62f, "CameraSerialNumber", N_("Camera Serial Number"), - N_("CameraSerialNumber contains the serial number of the camera or camera " - "body that captured the image."), - ifd0Id, dngTags, asciiString, 0, printValue), // DNG tag - TagInfo(0xc630, "LensInfo", N_("Lens Info"), - N_("Contains information about the lens that captured the image. If the " - "minimum f-stops are unknown, they should be encoded as 0/0."), - ifd0Id, dngTags, unsignedRational, 4, printValue), // DNG tag - TagInfo(0xc631, "ChromaBlurRadius", N_("Chroma Blur Radius"), - N_("ChromaBlurRadius provides a hint to the DNG reader about how much " - "chroma blur should be applied to the image. If this tag is omitted, " - "the reader will use its default amount of chroma blurring. " - "Normally this tag is only included for non-CFA images, since the " - "amount of chroma blur required for mosaic images is highly dependent " - "on the de-mosaic algorithm, in which case the DNG reader's default " - "value is likely optimized for its particular de-mosaic algorithm."), - ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG tag - TagInfo(0xc632, "AntiAliasStrength", N_("Anti Alias Strength"), - N_("Provides a hint to the DNG reader about how strong the camera's " - "anti-alias filter is. A value of 0.0 means no anti-alias filter " - "(i.e., the camera is prone to aliasing artifacts with some subjects), " - "while a value of 1.0 means a strong anti-alias filter (i.e., the " - "camera almost never has aliasing artifacts)."), - ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG tag - TagInfo(0xc633, "ShadowScale", N_("Shadow Scale"), - N_("This tag is used by Adobe Camera Raw to control the sensitivity of " - "its 'Shadows' slider."), - ifd0Id, dngTags, signedRational, 1, printValue), // DNG tag - TagInfo(0xc634, "DNGPrivateData", N_("DNG Private Data"), - N_("Provides a way for camera manufacturers to store private data in the " - "DNG file for use by their own raw converters, and to have that data " - "preserved by programs that edit DNG files."), - ifd0Id, dngTags, unsignedByte, -1, printValue), // DNG tag - TagInfo(0xc635, "MakerNoteSafety", N_("MakerNote Safety"), - N_("MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote " - "tag is safe to preserve along with the rest of the EXIF data. File " - "browsers and other image management software processing an image " - "with a preserved MakerNote should be aware that any thumbnail " - "image embedded in the MakerNote may be stale, and may not reflect " - "the current state of the full size image."), - ifd0Id, dngTags, unsignedShort, 1, printValue), // DNG tag - TagInfo(0xc65a, "CalibrationIlluminant1", N_("Calibration Illuminant 1"), - N_("The illuminant used for the first set of color calibration tags " - "(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal " - "values for this tag are the same as the legal values for the " - "LightSource EXIF tag."), - ifd0Id, dngTags, unsignedShort, 1, printValue), // DNG tag - TagInfo(0xc65b, "CalibrationIlluminant2", N_("Calibration Illuminant 2"), - N_("The illuminant used for an optional second set of color calibration " - "tags (ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal " - "values for this tag are the same as the legal values for the " - "CalibrationIlluminant1 tag; however, if both are included, neither " - "is allowed to have a value of 0 (unknown)."), - ifd0Id, dngTags, unsignedShort, 1, printValue), // DNG tag - TagInfo(0xc65c, "BestQualityScale", N_("Best Quality Scale"), - N_("For some cameras, the best possible image quality is not achieved " - "by preserving the total pixel count during conversion. For example, " - "Fujifilm SuperCCD images have maximum detail when their total pixel " - "count is doubled. This tag specifies the amount by which the values " - "of the DefaultScale tag need to be multiplied to achieve the best " - "quality image size."), - ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG tag - TagInfo(0xc65d, "RawDataUniqueID", N_("Raw Data Unique ID"), - N_("This tag contains a 16-byte unique identifier for the raw image data " - "in the DNG file. DNG readers can use this tag to recognize a " - "particular raw image, even if the file's name or the metadata " - "contained in the file has been changed. If a DNG writer creates such " - "an identifier, it should do so using an algorithm that will ensure " - "that it is very unlikely two different images will end up having the " - "same identifier."), - ifd0Id, dngTags, unsignedByte, 16, printValue), // DNG tag - TagInfo(0xc68b, "OriginalRawFileName", N_("Original Raw File Name"), - N_("If the DNG file was converted from a non-DNG raw file, then this tag " - "contains the file name of that original raw file."), - ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag - TagInfo(0xc68c, "OriginalRawFileData", N_("Original Raw File Data"), - N_("If the DNG file was converted from a non-DNG raw file, then this tag " - "contains the compressed contents of that original raw file. The " - "contents of this tag always use the big-endian byte order. The tag " - "contains a sequence of data blocks. Future versions of the DNG " - "specification may define additional data blocks, so DNG readers " - "should ignore extra bytes when parsing this tag. DNG readers should " - "also detect the case where data blocks are missing from the end of " - "the sequence, and should assume a default value for all the missing " - "blocks. There are no padding or alignment bytes between data blocks."), - ifd0Id, dngTags, undefined, -1, printValue), // DNG tag - TagInfo(0xc68d, "ActiveArea", N_("Active Area"), - N_("This rectangle defines the active (non-masked) pixels of the sensor. " - "The order of the rectangle coordinates is: top, left, bottom, right."), - ifd0Id, dngTags, unsignedShort, 4, printValue), // DNG tag - TagInfo(0xc68e, "MaskedAreas", N_("Masked Areas"), - N_("This tag contains a list of non-overlapping rectangle coordinates of " - "fully masked pixels, which can be optionally used by DNG readers " - "to measure the black encoding level. The order of each rectangle's " - "coordinates is: top, left, bottom, right. If the raw image data has " - "already had its black encoding level subtracted, then this tag should " - "not be used, since the masked pixels are no longer useful."), - ifd0Id, dngTags, unsignedShort, -1, printValue), // DNG tag - TagInfo(0xc68f, "AsShotICCProfile", N_("As-Shot ICC Profile"), - N_("This tag contains an ICC profile that, in conjunction with the " - "AsShotPreProfileMatrix tag, provides the camera manufacturer with a " - "way to specify a default color rendering from camera color space " - "coordinates (linear reference values) into the ICC profile connection " - "space. The ICC profile connection space is an output referred " - "colorimetric space, whereas the other color calibration tags in DNG " - "specify a conversion into a scene referred colorimetric space. This " - "means that the rendering in this profile should include any desired " - "tone and gamut mapping needed to convert between scene referred " - "values and output referred values."), - ifd0Id, dngTags, undefined, -1, printValue), // DNG tag - TagInfo(0xc690, "AsShotPreProfileMatrix", N_("As-Shot Pre-Profile Matrix"), - N_("This tag is used in conjunction with the AsShotICCProfile tag. It " - "specifies a matrix that should be applied to the camera color space " - "coordinates before processing the values through the ICC profile " - "specified in the AsShotICCProfile tag. The matrix is stored in the " - "row scan order. If ColorPlanes is greater than three, then this " - "matrix can (but is not required to) reduce the dimensionality of the " - "color data down to three components, in which case the AsShotICCProfile " - "should have three rather than ColorPlanes input components."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc691, "CurrentICCProfile", N_("Current ICC Profile"), - N_("This tag is used in conjunction with the CurrentPreProfileMatrix tag. " - "The CurrentICCProfile and CurrentPreProfileMatrix tags have the same " - "purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix " - "tag pair, except they are for use by raw file editors rather than " - "camera manufacturers."), - ifd0Id, dngTags, undefined, -1, printValue), // DNG tag - TagInfo(0xc692, "CurrentPreProfileMatrix", N_("Current Pre-Profile Matrix"), - N_("This tag is used in conjunction with the CurrentICCProfile tag. " - "The CurrentICCProfile and CurrentPreProfileMatrix tags have the same " - "purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix " - "tag pair, except they are for use by raw file editors rather than " - "camera manufacturers."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc6bf, "ColorimetricReference", N_("Colorimetric Reference"), - N_("The DNG color model documents a transform between camera colors and " - "CIE XYZ values. This tag describes the colorimetric reference for the " - "CIE XYZ values. 0 = The XYZ values are scene-referred. 1 = The XYZ values " - "are output-referred, using the ICC profile perceptual dynamic range. This " - "tag allows output-referred data to be stored in DNG files and still processed " - "correctly by DNG readers."), - ifd0Id, dngTags, unsignedShort, 0, printValue), // DNG tag - TagInfo(0xc6f3, "CameraCalibrationSignature", N_("Camera Calibration Signature"), - N_("A UTF-8 encoded string associated with the CameraCalibration1 and " - "CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " - "should only be used in the DNG color transform if the string stored in the " - "CameraCalibrationSignature tag exactly matches the string stored in the " - "ProfileCalibrationSignature tag for the selected camera profile."), - ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag - TagInfo(0xc6f4, "ProfileCalibrationSignature", N_("Profile Calibration Signature"), - N_("A UTF-8 encoded string associated with the camera profile tags. The " - "CameraCalibration1 and CameraCalibration2 tags should only be used in the " - "DNG color transfer if the string stored in the CameraCalibrationSignature " - "tag exactly matches the string stored in the ProfileCalibrationSignature tag " - "for the selected camera profile."), - ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag - TagInfo(0xc6f6, "AsShotProfileName", N_("As Shot Profile Name"), - N_("A UTF-8 encoded string containing the name of the \"as shot\" camera " - "profile, if any."), - ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag - TagInfo(0xc6f7, "NoiseReductionApplied", N_("Noise Reduction Applied"), - N_("This tag indicates how much noise reduction has been applied to the raw " - "data on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction " - "has been applied. A 1.0 value indicates that the \"ideal\" amount of noise " - "reduction has been applied, i.e. that the DNG reader should not apply " - "additional noise reduction by default. A value of 0/0 indicates that this " - "parameter is unknown."), - ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG tag - TagInfo(0xc6f8, "ProfileName", N_("Profile Name"), - N_("A UTF-8 encoded string containing the name of the camera profile. This " - "tag is optional if there is only a single camera profile stored in the file " - "but is required for all camera profiles if there is more than one camera " - "profile stored in the file."), - ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag - TagInfo(0xc6f9, "ProfileHueSatMapDims", N_("Profile Hue Sat Map Dims"), - N_("This tag specifies the number of input samples in each dimension of the " - "hue/saturation/value mapping tables. The data for these tables are stored " - "in ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common " - "case has ValueDivisions equal to 1, so only hue and saturation are used as " - "inputs to the mapping table."), - ifd0Id, dngTags, unsignedLong, 3, printValue), // DNG tag - TagInfo(0xc6fa, "ProfileHueSatMapData1", N_("Profile Hue Sat Map Data 1"), - N_("This tag contains the data for the first hue/saturation/value mapping " - "table. Each entry of the table contains three 32-bit IEEE floating-point " - "values. The first entry is hue shift in degrees; the second entry is " - "saturation scale factor; and the third entry is a value scale factor. The " - "table entries are stored in the tag in nested loop order, with the value " - "divisions in the outer loop, the hue divisions in the middle loop, and the " - "saturation divisions in the inner loop. All zero input saturation entries " - "are required to have a value scale factor of 1.0."), - ifd0Id, dngTags, tiffFloat, 0, printValue), // DNG tag - TagInfo(0xc6fb, "ProfileHueSatMapData2", N_("Profile Hue Sat Map Data 2"), - N_("This tag contains the data for the second hue/saturation/value mapping " - "table. Each entry of the table contains three 32-bit IEEE floating-point " - "values. The first entry is hue shift in degrees; the second entry is a " - "saturation scale factor; and the third entry is a value scale factor. The " - "table entries are stored in the tag in nested loop order, with the value " - "divisions in the outer loop, the hue divisions in the middle loop, and the " - "saturation divisions in the inner loop. All zero input saturation entries " - "are required to have a value scale factor of 1.0."), - ifd0Id, dngTags, tiffFloat, 0, printValue), // DNG tag - TagInfo(0xc6fc, "ProfileToneCurve", N_("Profile Tone Curve"), - N_("This tag contains a default tone curve that can be applied while " - "processing the image as a starting point for user adjustments. The curve " - "is specified as a list of 32-bit IEEE floating-point value pairs in linear " - "gamma. Each sample has an input value in the range of 0.0 to 1.0, and an " - "output value in the range of 0.0 to 1.0. The first sample is required to be " - "(0.0, 0.0), and the last sample is required to be (1.0, 1.0). Interpolated " - "the curve using a cubic spline."), - ifd0Id, dngTags, tiffFloat, -1, printValue), // DNG tag - TagInfo(0xc6fd, "ProfileEmbedPolicy", N_("Profile Embed Policy"), - N_("This tag contains information about the usage rules for the associated " - "camera profile."), - ifd0Id, dngTags, unsignedLong, 1, printValue), // DNG tag - TagInfo(0xc6fe, "ProfileCopyright", N_("Profile Copyright"), - N_("A UTF-8 encoded string containing the copyright information for the " - "camera profile. This string always should be preserved along with the other " - "camera profile tags."), - ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag - TagInfo(0xc714, "ForwardMatrix1", N_("Forward Matrix 1"), - N_("This tag defines a matrix that maps white balanced camera colors to XYZ " - "D50 colors."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc715, "ForwardMatrix2", N_("Forward Matrix 2"), - N_("This tag defines a matrix that maps white balanced camera colors to XYZ " - "D50 colors."), - ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag - TagInfo(0xc716, "PreviewApplicationName", N_("Preview Application Name"), - N_("A UTF-8 encoded string containing the name of the application that " - "created the preview stored in the IFD."), - ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag - TagInfo(0xc717, "PreviewApplicationVersion", N_("Preview Application Version"), - N_("A UTF-8 encoded string containing the version number of the application " - "that created the preview stored in the IFD."), - ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag - TagInfo(0xc718, "PreviewSettingsName", N_("Preview Settings Name"), - N_("A UTF-8 encoded string containing the name of the conversion settings " - "(for example, snapshot name) used for the preview stored in the IFD."), - ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag - TagInfo(0xc719, "PreviewSettingsDigest", N_("Preview Settings Digest"), - N_("A unique ID of the conversion settings (for example, MD5 digest) used " - "to render the preview stored in the IFD."), - ifd0Id, dngTags, unsignedByte, 16, printValue), // DNG tag - TagInfo(0xc71a, "PreviewColorSpace", N_("Preview Color Space"), - N_("This tag specifies the color space in which the rendered preview in this " - "IFD is stored. The default value for this tag is sRGB for color previews " - "and Gray Gamma 2.2 for monochrome previews."), - ifd0Id, dngTags, unsignedLong, 1, printValue), // DNG tag - TagInfo(0xc71b, "PreviewDateTime", N_("Preview Date Time"), - N_("This tag is an ASCII string containing the name of the date/time at which " - "the preview stored in the IFD was rendered. The date/time is encoded using " - "ISO 8601 format."), - ifd0Id, dngTags, asciiString, 0, printValue), // DNG tag - TagInfo(0xc71c, "RawImageDigest", N_("Raw Image Digest"), - N_("This tag is an MD5 digest of the raw image data. All pixels in the image " - "are processed in row-scan order. Each pixel is zero padded to 16 or 32 bits " - "deep (16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). " - "The data for each pixel is processed in little-endian byte order."), - ifd0Id, dngTags, undefined, 16, printValue), // DNG tag - TagInfo(0xc71d, "OriginalRawFileDigest", N_("Original Raw File Digest"), - N_("This tag is an MD5 digest of the data stored in the OriginalRawFileData " - "tag."), - ifd0Id, dngTags, undefined, 16, printValue), // DNG tag - TagInfo(0xc71e, "SubTileBlockSize", N_("Sub Tile Block Size"), - N_("Normally, the pixels within a tile are stored in simple row-scan order. " - "This tag specifies that the pixels within a tile should be grouped first " - "into rectangular blocks of the specified size. These blocks are stored in " - "row-scan order. Within each block, the pixels are stored in row-scan order. " - "The use of a non-default value for this tag requires setting the " - "DNGBackwardVersion tag to at least 1.2.0.0."), - ifd0Id, dngTags, unsignedLong, 2, printValue), // DNG tag - TagInfo(0xc71f, "RowInterleaveFactor", N_("Row Interleave Factor"), - N_("This tag specifies that rows of the image are stored in interleaved " - "order. The value of the tag specifies the number of interleaved fields. " - "The use of a non-default value for this tag requires setting the " - "DNGBackwardVersion tag to at least 1.2.0.0."), - ifd0Id, dngTags, unsignedLong, 1, printValue), // DNG tag - TagInfo(0xc725, "ProfileLookTableDims", N_("Profile Look Table Dims"), - N_("This tag specifies the number of input samples in each dimension of a " - "default \"look\" table. The data for this table is stored in the " - "ProfileLookTableData tag."), - ifd0Id, dngTags, unsignedLong, 3, printValue), // DNG tag - TagInfo(0xc726, "ProfileLookTableData", N_("Profile Look Table Data"), - N_("This tag contains a default \"look\" table that can be applied while " - "processing the image as a starting point for user adjustment. This table " - "uses the same format as the tables stored in the ProfileHueSatMapData1 " - "and ProfileHueSatMapData2 tags, and is applied in the same color space. " - "However, it should be applied later in the processing pipe, after any " - "exposure compensation and/or fill light stages, but before any tone curve " - "stage. Each entry of the table contains three 32-bit IEEE floating-point " - "values. The first entry is hue shift in degrees, the second entry is a " - "saturation scale factor, and the third entry is a value scale factor. " - "The table entries are stored in the tag in nested loop order, with the " - "value divisions in the outer loop, the hue divisions in the middle loop, " - "and the saturation divisions in the inner loop. All zero input saturation " - "entries are required to have a value scale factor of 1.0."), - ifd0Id, dngTags, tiffFloat, -1, printValue), // DNG tag - TagInfo(0xc740, "OpcodeList1", N_("Opcode List 1"), - N_("Specifies the list of opcodes that should be applied to the raw image, " - "as read directly from the file."), - ifd0Id, dngTags, undefined, -1, printValue), // DNG tag - TagInfo(0xc741, "OpcodeList2", N_("Opcode List 2"), - N_("Specifies the list of opcodes that should be applied to the raw image, " - "just after it has been mapped to linear reference values."), - ifd0Id, dngTags, undefined, -1, printValue), // DNG tag - TagInfo(0xc74e, "OpcodeList3", N_("Opcode List 3"), - N_("Specifies the list of opcodes that should be applied to the raw image, " - "just after it has been demosaiced."), - ifd0Id, dngTags, undefined, -1, printValue), // DNG tag - TagInfo(0xc761, "NoiseProfile", N_("Noise Profile"), - N_("NoiseProfile describes the amount of noise in a raw image. Specifically, " - "this tag models the amount of signal-dependent photon (shot) noise and " - "signal-independent sensor readout noise, two common sources of noise in " - "raw images. The model assumes that the noise is white and spatially " - "independent, ignoring fixed pattern effects and other sources of noise (e.g., " - "pixel response non-uniformity, spatially-dependent thermal effects, etc.)."), - ifd0Id, dngTags, tiffDouble, -1, printValue), // DNG tag - // End of list marker - TagInfo(0xffff, "(UnknownIfdTag)", N_("Unknown IFD tag"), - N_("Unknown IFD tag"), - ifd0Id, sectionIdNotSet, asciiString, -1, printValue) - }; - - const TagInfo* ifdTagList() - { - return ifdTagInfo; - } - - //! ExposureProgram, tag 0x8822 - extern const TagDetails exifExposureProgram[] = { - { 0, N_("Not defined") }, - { 1, N_("Manual") }, - { 2, N_("Auto") }, - { 3, N_("Aperture priority") }, - { 4, N_("Shutter priority") }, - { 5, N_("Creative program") }, - { 6, N_("Action program") }, - { 7, N_("Portrait mode") }, - { 8, N_("Landscape mode") } - }; - - //! MeteringMode, tag 0x9207 - extern const TagDetails exifMeteringMode[] = { - { 0, N_("Unknown") }, - { 1, N_("Average") }, - { 2, N_("Center weighted average") }, - { 3, N_("Spot") }, - { 4, N_("Multi-spot") }, - { 5, N_("Multi-segment") }, - { 6, N_("Partial") }, - { 255, N_("Other") }, - { 255, N_("Other") } // To silence compiler warning - }; - - //! LightSource, tag 0x9208 - extern const TagDetails exifLightSource[] = { - { 0, N_("Unknown") }, - { 1, N_("Daylight") }, - { 2, N_("Fluorescent") }, - { 3, N_("Tungsten (incandescent light)") }, - { 4, N_("Flash") }, - { 9, N_("Fine weather") }, - { 10, N_("Cloudy weather") }, - { 11, N_("Shade") }, - { 12, N_("Daylight fluorescent (D 5700 - 7100K)") }, - { 13, N_("Day white fluorescent (N 4600 - 5400K)") }, - { 14, N_("Cool white fluorescent (W 3900 - 4500K)") }, - { 15, N_("White fluorescent (WW 3200 - 3700K)") }, - { 17, N_("Standard light A") }, - { 18, N_("Standard light B") }, - { 19, N_("Standard light C") }, - { 20, N_("D55") }, - { 21, N_("D65") }, - { 22, N_("D75") }, - { 23, N_("D50") }, - { 24, N_("ISO studio tungsten") }, - { 255, N_("Other light source") } - }; - - //! ColorSpace, tag 0xa001 - extern const TagDetails exifColorSpace[] = { - { 1, N_("sRGB") }, - { 2, N_("Adobe RGB") }, // Not defined to Exif 2.2 spec. But used by a lot of cameras. - { 0xffff, N_("Uncalibrated") } - }; - - //! SensingMethod, tag 0xa217 - extern const TagDetails exifSensingMethod[] = { - { 1, N_("Not defined") }, - { 2, N_("One-chip color area") }, - { 3, N_("Two-chip color area") }, - { 4, N_("Three-chip color area") }, - { 5, N_("Color sequential area") }, - { 7, N_("Trilinear sensor") }, - { 8, N_("Color sequential linear") } - }; - - //! FileSource, tag 0xa300 - extern const TagDetails exifFileSource[] = { - { 1, N_("Film scanner") }, // Not defined to Exif 2.2 spec. - { 2, N_("Reflexion print scanner") }, // but used by some scanner device softwares. - { 3, N_("Digital still camera") } - }; - - //! SceneType, tag 0xa301 - extern const TagDetails exifSceneType[] = { - { 1, N_("Directly photographed") } - }; - - //! CustomRendered, tag 0xa401 - extern const TagDetails exifCustomRendered[] = { - { 0, N_("Normal process") }, - { 1, N_("Custom process") } - }; - - //! ExposureMode, tag 0xa402 - extern const TagDetails exifExposureMode[] = { - { 0, N_("Auto") }, - { 1, N_("Manual") }, - { 2, N_("Auto bracket") } - }; - - //! WhiteBalance, tag 0xa403 - extern const TagDetails exifWhiteBalance[] = { - { 0, N_("Auto") }, - { 1, N_("Manual") } - }; - - //! SceneCaptureType, tag 0xa406 - extern const TagDetails exifSceneCaptureType[] = { - { 0, N_("Standard") }, - { 1, N_("Landscape") }, - { 2, N_("Portrait") }, - { 3, N_("Night scene") }, - { 3, N_("Night scene") } // To silence compiler warning - }; - - //! GainControl, tag 0xa407 - extern const TagDetails exifGainControl[] = { - { 0, N_("None") }, - { 1, N_("Low gain up") }, - { 2, N_("High gain up") }, - { 3, N_("Low gain down") }, - { 4, N_("High gain down") } - }; - - //! Contrast, tag 0xa408 and Sharpness, tag 0xa40a - extern const TagDetails exifNormalSoftHard[] = { - { 0, N_("Normal") }, - { 1, N_("Soft") }, - { 2, N_("Hard") } - }; - - //! Saturation, tag 0xa409 - extern const TagDetails exifSaturation[] = { - { 0, N_("Normal") }, - { 1, N_("Low") }, - { 2, N_("High") } - }; - - //! SubjectDistanceRange, tag 0xa40c - extern const TagDetails exifSubjectDistanceRange[] = { - { 0, N_("Unknown") }, - { 1, N_("Macro") }, - { 2, N_("Close view") }, - { 3, N_("Distant view") }, - { 3, N_("Distant view") } // To silence compiler warning - }; - - // Exif IFD Tags - static const TagInfo exifTagInfo[] = { - TagInfo(0x829a, "ExposureTime", N_("Exposure Time"), - N_("Exposure time, given in seconds (sec)."), - exifId, captureCond, unsignedRational, 1, print0x829a), - TagInfo(0x829d, "FNumber", N_("FNumber"), - N_("The F number."), - exifId, captureCond, unsignedRational, 1, print0x829d), - TagInfo(0x8822, "ExposureProgram", N_("Exposure Program"), - N_("The class of the program used by the camera to set exposure " - "when the picture is taken."), - exifId, captureCond, unsignedShort, 1, print0x8822), - TagInfo(0x8824, "SpectralSensitivity", N_("Spectral Sensitivity"), - N_("Indicates the spectral sensitivity of each channel of the " - "camera used. The tag value is an ASCII string compatible " - "with the standard developed by the ASTM Technical Committee."), - exifId, captureCond, asciiString, 0, printValue), - TagInfo(0x8827, "ISOSpeedRatings", N_("ISO Speed Ratings"), - N_("Indicates the ISO Speed and ISO Latitude of the camera or " - "input device as specified in ISO 12232."), - exifId, captureCond, unsignedShort, 0, print0x8827), - TagInfo(0x8828, "OECF", N_("Opto-Electoric Conversion Function"), - N_("Indicates the Opto-Electoric Conversion Function (OECF) " - "specified in ISO 14524. is the relationship between " - "the camera optical input and the image values."), - exifId, captureCond, undefined, 0, printValue), - TagInfo(0x8830, "SensitivityType", N_("Sensitivity Type"), - N_("The SensitivityType tag indicates PhotographicSensitivity tag. which " - "one of the parameters of ISO12232 is the Although it is an optional tag, " - "it should be recorded when a PhotographicSensitivity tag is recorded. " - "Value = 4, 5, 6, or 7 may be used in case that the values of plural " - "parameters are the same."), - exifId, captureCond, unsignedShort, 1, printValue), - TagInfo(0x8831, "StandardOutputSensitivity", N_("Standard Output Sensitivity"), - N_("This tag indicates the standard output sensitivity value of a camera or " - "input device defined in ISO 12232. When recording this tag, the " - "PhotographicSensitivity and SensitivityType tags shall also be recorded."), - exifId, captureCond, unsignedLong, 1, printValue), - TagInfo(0x8832, "RecommendedExposureIndex", N_("Recommended Exposure Index"), - N_("This tag indicates the recommended exposure index value of a camera or " - "input device defined in ISO 12232. When recording this tag, the " - "PhotographicSensitivity and SensitivityType tags shall also be recorded."), - exifId, captureCond, unsignedLong, 1, printValue), - TagInfo(0x8833, "ISOSpeed", N_("ISO Speed"), - N_("This tag indicates the ISO speed value of a camera or input device that " - "is defined in ISO 12232. When recording this tag, the PhotographicSensitivity " - "and SensitivityType tags shall also be recorded."), - exifId, captureCond, unsignedLong, 1, printValue), - TagInfo(0x8834, "ISOSpeedLatitudeyyy", N_("ISO Speed Latitude yyy"), - N_("This tag indicates the ISO speed latitude yyy value of a camera or input " - "device that is defined in ISO 12232. However, this tag shall not be recorded " - "without ISOSpeed and ISOSpeedLatitudezzz."), - exifId, captureCond, unsignedLong, 1, printValue), - TagInfo(0x8835, "ISOSpeedLatitudezzz", N_("ISO Speed Latitude zzz"), - N_("This tag indicates the ISO speed latitude zzz value of a camera or input " - "device that is defined in ISO 12232. However, this tag shall not be recorded " - "without ISOSpeed and ISOSpeedLatitudeyyy."), - exifId, captureCond, unsignedLong, 1, printValue), - TagInfo(0x9000, "ExifVersion", N_("Exif Version"), - N_("The version of this standard supported. Nonexistence of this " - "field is taken to mean nonconformance to the standard."), - exifId, exifVersion, undefined, 4, printExifVersion), - TagInfo(0x9003, "DateTimeOriginal", N_("Date and Time (original)"), - N_("The date and time when the original image data was generated. " - "For a digital still camera the date and time the picture was taken are recorded."), - exifId, dateTime, asciiString, 20, printValue), - TagInfo(0x9004, "DateTimeDigitized", N_("Date and Time (digitized)"), - N_("The date and time when the image was stored as digital data."), - exifId, dateTime, asciiString, 20, printValue), - TagInfo(0x9101, "ComponentsConfiguration", N_("Components Configuration"), - N_("Information specific to compressed data. The channels of " - "each component are arranged in order from the 1st " - "component to the 4th. For uncompressed data the data " - "arrangement is given in the tag. " - "However, since can only " - "express the order of Y, Cb and Cr, this tag is provided " - "for cases when compressed data uses components other than " - "Y, Cb, and Cr and to enable support of other sequences."), - exifId, imgConfig, undefined, 4, print0x9101), - TagInfo(0x9102, "CompressedBitsPerPixel", N_("Compressed Bits per Pixel"), - N_("Information specific to compressed data. The compression mode " - "used for a compressed image is indicated in unit bits per pixel."), - exifId, imgConfig, unsignedRational, 1, printFloat), - TagInfo(0x9201, "ShutterSpeedValue", N_("Shutter speed"), - N_("Shutter speed. The unit is the APEX (Additive System of " - "Photographic Exposure) setting."), - exifId, captureCond, signedRational, 1, print0x9201), - TagInfo(0x9202, "ApertureValue", N_("Aperture"), - N_("The lens aperture. The unit is the APEX value."), - exifId, captureCond, unsignedRational, 1, print0x9202), - TagInfo(0x9203, "BrightnessValue", N_("Brightness"), - N_("The value of brightness. The unit is the APEX value. " - "Ordinarily it is given in the range of -99.99 to 99.99."), - exifId, captureCond, signedRational, 1, printFloat), - TagInfo(0x9204, "ExposureBiasValue", N_("Exposure Bias"), - N_("The exposure bias. The units is the APEX value. Ordinarily " - "it is given in the range of -99.99 to 99.99."), - exifId, captureCond, signedRational, 1, print0x9204), - TagInfo(0x9205, "MaxApertureValue", N_("Max Aperture Value"), - N_("The smallest F number of the lens. The unit is the APEX value. " - "Ordinarily it is given in the range of 00.00 to 99.99, " - "but it is not limited to this range."), - exifId, captureCond, unsignedRational, 1, print0x9202), - TagInfo(0x9206, "SubjectDistance", N_("Subject Distance"), - N_("The distance to the subject, given in meters."), - exifId, captureCond, unsignedRational, 1, print0x9206), - TagInfo(0x9207, "MeteringMode", N_("Metering Mode"), - N_("The metering mode."), - exifId, captureCond, unsignedShort, 1, print0x9207), - TagInfo(0x9208, "LightSource", N_("Light Source"), - N_("The kind of light source."), - exifId, captureCond, unsignedShort, 1, print0x9208), - TagInfo(0x9209, "Flash", N_("Flash"), - N_("This tag is recorded when an image is taken using a strobe light (flash)."), - exifId, captureCond, unsignedShort, 1, EXV_PRINT_TAG(exifFlash)), - TagInfo(0x920a, "FocalLength", N_("Focal Length"), - N_("The actual focal length of the lens, in mm. Conversion is not " - "made to the focal length of a 35 mm film camera."), - exifId, captureCond, unsignedRational, 1, print0x920a), - TagInfo(0x9214, "SubjectArea", N_("Subject Area"), - N_("This tag indicates the location and area of the main subject " - "in the overall scene."), - exifId, captureCond, unsignedShort, -1, printValue), - TagInfo(0x927c, "MakerNote", N_("Maker Note"), - N_("A tag for manufacturers of Exif writers to record any desired " - "information. The contents are up to the manufacturer."), - exifId, userInfo, undefined, 0, printValue), - TagInfo(0x9286, "UserComment", N_("User Comment"), - N_("A tag for Exif users to write keywords or comments on the image " - "besides those in , and without the " - "character code limitations of the tag."), - exifId, userInfo, comment, 0, print0x9286), - TagInfo(0x9290, "SubSecTime", N_("Sub-seconds Time"), - N_("A tag used to record fractions of seconds for the tag."), - exifId, dateTime, asciiString, 0, printValue), - TagInfo(0x9291, "SubSecTimeOriginal", N_("Sub-seconds Time Original"), - N_("A tag used to record fractions of seconds for the tag."), - exifId, dateTime, asciiString, 0, printValue), - TagInfo(0x9292, "SubSecTimeDigitized", N_("Sub-seconds Time Digitized"), - N_("A tag used to record fractions of seconds for the tag."), - exifId, dateTime, asciiString, 0, printValue), - TagInfo(0xa000, "FlashpixVersion", N_("FlashPix Version"), - N_("The FlashPix format version supported by a FPXR file."), - exifId, exifVersion, undefined, 4, printExifVersion), - TagInfo(0xa001, "ColorSpace", N_("Color Space"), - N_("The color space information tag is always " - "recorded as the color space specifier. Normally sRGB " - "is used to define the color space based on the PC monitor " - "conditions and environment. If a color space other than " - "sRGB is used, Uncalibrated is set. Image data " - "recorded as Uncalibrated can be treated as sRGB when it is " - "converted to FlashPix."), - exifId, imgCharacter, unsignedShort, 1, print0xa001), - TagInfo(0xa002, "PixelXDimension", N_("Pixel X Dimension"), - N_("Information specific to compressed data. When a " - "compressed file is recorded, the valid width of the " - "meaningful image must be recorded in this tag, whether or " - "not there is padding data or a restart marker. This tag " - "should not exist in an uncompressed file."), - exifId, imgConfig, unsignedLong, 1, printValue), - TagInfo(0xa003, "PixelYDimension", N_("Pixel Y Dimension"), - N_("Information specific to compressed data. When a compressed " - "file is recorded, the valid height of the meaningful image " - "must be recorded in this tag, whether or not there is padding " - "data or a restart marker. This tag should not exist in an " - "uncompressed file. Since data padding is unnecessary in the vertical " - "direction, the number of lines recorded in this valid image height tag " - "will in fact be the same as that recorded in the SOF."), - exifId, imgConfig, unsignedLong, 1, printValue), - TagInfo(0xa004, "RelatedSoundFile", N_("Related Sound File"), - N_("This tag is used to record the name of an audio file related " - "to the image data. The only relational information " - "recorded here is the Exif audio file name and extension (an " - "ASCII string consisting of 8 characters + '.' + 3 " - "characters). The path is not recorded."), - exifId, relatedFile, asciiString, 13, printValue), - TagInfo(0xa005, "InteroperabilityTag", N_("Interoperability IFD Pointer"), - N_("Interoperability IFD is composed of tags which stores the " - "information to ensure the Interoperability and pointed " - "by the following tag located in Exif IFD. " - "The Interoperability structure of Interoperability IFD is " - "the same as TIFF defined IFD structure but does not contain the " - "image data characteristically compared with normal TIFF IFD."), - exifId, exifFormat, unsignedLong, 1, printValue), - TagInfo(0xa20b, "FlashEnergy", N_("Flash Energy"), - N_("Indicates the strobe energy at the time the image is " - "captured, as measured in Beam Candle Power Seconds (BCPS)."), - exifId, captureCond, unsignedRational, 1, printValue), - TagInfo(0xa20c, "SpatialFrequencyResponse", N_("Spatial Frequency Response"), - N_("This tag records the camera or input device spatial frequency " - "table and SFR values in the direction of image width, " - "image height, and diagonal direction, as specified in ISO 12233."), - exifId, captureCond, undefined, 0, printValue), - TagInfo(0xa20e, "FocalPlaneXResolution", N_("Focal Plane X-Resolution"), - N_("Indicates the number of pixels in the image width (X) direction " - "per on the camera focal plane."), - exifId, captureCond, unsignedRational, 1, printFloat), - TagInfo(0xa20f, "FocalPlaneYResolution", N_("Focal Plane Y-Resolution"), - N_("Indicates the number of pixels in the image height (V) direction " - "per on the camera focal plane."), - exifId, captureCond, unsignedRational, 1, printFloat), - TagInfo(0xa210, "FocalPlaneResolutionUnit", N_("Focal Plane Resolution Unit"), - N_("Indicates the unit for measuring and " - ". This value is the same as the ."), - exifId, captureCond, unsignedShort, 1, printExifUnit), - TagInfo(0xa214, "SubjectLocation", N_("Subject Location"), - N_("Indicates the location of the main subject in the scene. The " - "value of this tag represents the pixel at the center of the " - "main subject relative to the left edge, prior to rotation " - "processing as per the tag. The first value " - "indicates the X column number and second indicates the Y row number."), - exifId, captureCond, unsignedShort, 2, printValue), - TagInfo(0xa215, "ExposureIndex", N_("Exposure index"), - N_("Indicates the exposure index selected on the camera or " - "input device at the time the image is captured."), - exifId, captureCond, unsignedRational, 1, printValue), - TagInfo(0xa217, "SensingMethod", N_("Sensing Method"), - N_("Indicates the image sensor type on the camera or input device."), - exifId, captureCond, unsignedShort, 1, print0xa217), - TagInfo(0xa300, "FileSource", N_("File Source"), - N_("Indicates the image source. If a DSC recorded the image, " - "this tag value of this tag always be set to 3, indicating " - "that the image was recorded on a DSC."), - exifId, captureCond, undefined, 1, print0xa300), - TagInfo(0xa301, "SceneType", N_("Scene Type"), - N_("Indicates the type of scene. If a DSC recorded the image, " - "this tag value must always be set to 1, indicating that the " - "image was directly photographed."), - exifId, captureCond, undefined, 1, print0xa301), - TagInfo(0xa302, "CFAPattern", N_("Color Filter Array Pattern"), - N_("Indicates the color filter array (CFA) geometric pattern of the " - "image sensor when a one-chip color area sensor is used. " - "It does not apply to all sensing methods."), - exifId, captureCond, undefined, 0, printValue), - TagInfo(0xa401, "CustomRendered", N_("Custom Rendered"), - N_("This tag indicates the use of special processing on image " - "data, such as rendering geared to output. When special " - "processing is performed, the reader is expected to disable " - "or minimize any further processing."), - exifId, captureCond, unsignedShort, 1, print0xa401), - TagInfo(0xa402, "ExposureMode", N_("Exposure Mode"), - N_("This tag indicates the exposure mode set when the image was " - "shot. In auto-bracketing mode, the camera shoots a series of " - "frames of the same scene at different exposure settings."), - exifId, captureCond, unsignedShort, 1, print0xa402), - TagInfo(0xa403, "WhiteBalance", N_("White Balance"), - N_("This tag indicates the white balance mode set when the image was shot."), - exifId, captureCond, unsignedShort, 1, print0xa403), - TagInfo(0xa404, "DigitalZoomRatio", N_("Digital Zoom Ratio"), - N_("This tag indicates the digital zoom ratio when the image was " - "shot. If the numerator of the recorded value is 0, this " - "indicates that digital zoom was not used."), - exifId, captureCond, unsignedRational, 1, print0xa404), - TagInfo(0xa405, "FocalLengthIn35mmFilm", N_("Focal Length In 35mm Film"), - N_("This tag indicates the equivalent focal length assuming a " - "35mm film camera, in mm. A value of 0 means the focal " - "length is unknown. Note that this tag differs from the " - " tag."), - exifId, captureCond, unsignedShort, 1, print0xa405), - TagInfo(0xa406, "SceneCaptureType", N_("Scene Capture Type"), - N_("This tag indicates the type of scene that was shot. It can " - "also be used to record the mode in which the image was " - "shot. Note that this differs from the tag."), - exifId, captureCond, unsignedShort, 1, print0xa406), - TagInfo(0xa407, "GainControl", N_("Gain Control"), - N_("This tag indicates the degree of overall image gain adjustment."), - exifId, captureCond, unsignedShort, 1, print0xa407), - TagInfo(0xa408, "Contrast", N_("Contrast"), - N_("This tag indicates the direction of contrast processing " - "applied by the camera when the image was shot."), - exifId, captureCond, unsignedShort, 1, printNormalSoftHard), - TagInfo(0xa409, "Saturation", N_("Saturation"), - N_("This tag indicates the direction of saturation processing " - "applied by the camera when the image was shot."), - exifId, captureCond, unsignedShort, 1, print0xa409), - TagInfo(0xa40a, "Sharpness", N_("Sharpness"), - N_("This tag indicates the direction of sharpness processing " - "applied by the camera when the image was shot."), - exifId, captureCond, unsignedShort, 1, printNormalSoftHard), - TagInfo(0xa40b, "DeviceSettingDescription", N_("Device Setting Description"), - N_("This tag indicates information on the picture-taking " - "conditions of a particular camera model. The tag is used " - "only to indicate the picture-taking conditions in the reader."), - exifId, captureCond, undefined, 0, printValue), - TagInfo(0xa40c, "SubjectDistanceRange", N_("Subject Distance Range"), - N_("This tag indicates the distance to the subject."), - exifId, captureCond, unsignedShort, 1, print0xa40c), - TagInfo(0xa420, "ImageUniqueID", N_("Image Unique ID"), - N_("This tag indicates an identifier assigned uniquely to " - "each image. It is recorded as an ASCII string equivalent " - "to hexadecimal notation and 128-bit fixed length."), - exifId, otherTags, asciiString, 33, printValue), - TagInfo(0xa430, "CameraOwnerName", N_("Camera Owner Name"), - N_("This tag records the owner of a camera used in " - "photography as an ASCII string."), - exifId, otherTags, asciiString, 0, printValue), - TagInfo(0xa431, "BodySerialNumber", N_("Body Serial Number"), - N_("This tag records the serial number of the body of the camera " - "that was used in photography as an ASCII string."), - exifId, otherTags, asciiString, 0, printValue), - TagInfo(0xa432, "LensSpecification", N_("Lens Specification"), - N_("This tag notes minimum focal length, maximum focal length, " - "minimum F number in the minimum focal length, and minimum F number " - "in the maximum focal length, which are specification information " - "for the lens that was used in photography. When the minimum F " - "number is unknown, the notation is 0/0"), - exifId, otherTags, unsignedRational, 4, printValue), - TagInfo(0xa433, "LensMake", N_("Lens Make"), - N_("This tag records the lens manufactor as an ASCII string."), - exifId, otherTags, asciiString, 0, printValue), - TagInfo(0xa434, "LensModel", N_("Lens Model"), - N_("This tag records the lens's model name and model number as an " - "ASCII string."), - exifId, otherTags, asciiString, 0, printValue), - TagInfo(0xa435, "LensSerialNumber", N_("Lens Serial Number"), - N_("This tag records the serial number of the interchangeable lens " - "that was used in photography as an ASCII string."), - exifId, otherTags, asciiString, 0, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownExifTag)", N_("Unknown Exif tag"), - N_("Unknown Exif tag"), - exifId, sectionIdNotSet, asciiString, -1, printValue) - }; - - const TagInfo* exifTagList() - { - return exifTagInfo; - } - - //! GPS latitude reference, tag 0x0001; also GPSDestLatitudeRef, tag 0x0013 - extern const TagDetails exifGPSLatitudeRef[] = { - { 78, N_("North") }, - { 83, N_("South") } - }; - - //! GPS longitude reference, tag 0x0003; also GPSDestLongitudeRef, tag 0x0015 - extern const TagDetails exifGPSLongitudeRef[] = { - { 69, N_("East") }, - { 87, N_("West") } - }; - - //! GPS altitude reference, tag 0x0005 - extern const TagDetails exifGPSAltitudeRef[] = { - { 0, N_("Above sea level") }, - { 1, N_("Below sea level") } - }; - - //! GPS status, tag 0x0009 - extern const TagDetails exifGPSStatus[] = { - { 'A', N_("Measurement in progress") }, - { 'V', N_("Measurement Interoperability") } - }; - - //! GPS measurement mode, tag 0x000a - extern const TagDetails exifGPSMeasureMode[] = { - { '2', N_("Two-dimensional measurement") }, - { '3', N_("Three-dimensional measurement") } - }; - - //! GPS speed reference, tag 0x000c - extern const TagDetails exifGPSSpeedRef[] = { - { 'K', N_("km/h") }, - { 'M', N_("mph") }, - { 'N', N_("knots") } - }; - - //! GPS direction ref, tags 0x000e, 0x0010, 0x0017 - extern const TagDetails exifGPSDirRef[] = { - { 'T', N_("True direction") }, - { 'M', N_("Magnetic direction") } - }; - - //! GPS Destination distance ref, tag 0x0019 - extern const TagDetails exifGPSDestDistanceRef[] = { - { 'K', N_("Kilometers") }, - { 'M', N_("Miles") }, - { 'N', N_("Knots") } - }; - - //! GPS Differential, tag 0x001e - extern const TagDetails exifGPSDifferential[] = { - { 0, N_("Without correction") }, - { 1, N_("Correction applied") } - }; - - // GPS Info Tags - static const TagInfo gpsTagInfo[] = { - TagInfo(0x0000, "GPSVersionID", N_("GPS Version ID"), - N_("Indicates the version of . The version is given " - "as 2.0.0.0. This tag is mandatory when tag is " - "present. (Note: The tag is given in bytes, " - "unlike the tag. When the version is " - "2.0.0.0, the tag value is 02000000.H)."), - gpsId, gpsTags, unsignedByte, 4, print0x0000), - TagInfo(0x0001, "GPSLatitudeRef", N_("GPS Latitude Reference"), - N_("Indicates whether the latitude is north or south latitude. The " - "ASCII value 'N' indicates north latitude, and 'S' is south latitude."), - gpsId, gpsTags, asciiString, 2, EXV_PRINT_TAG(exifGPSLatitudeRef)), - TagInfo(0x0002, "GPSLatitude", N_("GPS Latitude"), - N_("Indicates the latitude. The latitude is expressed as three " - "RATIONAL values giving the degrees, minutes, and seconds, " - "respectively. When degrees, minutes and seconds are expressed, " - "the format is dd/1,mm/1,ss/1. When degrees and minutes are used " - "and, for example, fractions of minutes are given up to two " - "decimal places, the format is dd/1,mmmm/100,0/1."), - gpsId, gpsTags, unsignedRational, 3, printDegrees), - TagInfo(0x0003, "GPSLongitudeRef", N_("GPS Longitude Reference"), - N_("Indicates whether the longitude is east or west longitude. " - "ASCII 'E' indicates east longitude, and 'W' is west longitude."), - gpsId, gpsTags, asciiString, 2, EXV_PRINT_TAG(exifGPSLongitudeRef)), - TagInfo(0x0004, "GPSLongitude", N_("GPS Longitude"), - N_("Indicates the longitude. The longitude is expressed as three " - "RATIONAL values giving the degrees, minutes, and seconds, " - "respectively. When degrees, minutes and seconds are expressed, " - "the format is ddd/1,mm/1,ss/1. When degrees and minutes are " - "used and, for example, fractions of minutes are given up to " - "two decimal places, the format is ddd/1,mmmm/100,0/1."), - gpsId, gpsTags, unsignedRational, 3, printDegrees), - TagInfo(0x0005, "GPSAltitudeRef", N_("GPS Altitude Reference"), - N_("Indicates the altitude used as the reference altitude. If the " - "reference is sea level and the altitude is above sea level, 0 " - "is given. If the altitude is below sea level, a value of 1 is given " - "and the altitude is indicated as an absolute value in the " - "GSPAltitude tag. The reference unit is meters. Note that this tag " - "is BYTE type, unlike other reference tags."), - gpsId, gpsTags, unsignedByte, 1, print0x0005), - TagInfo(0x0006, "GPSAltitude", N_("GPS Altitude"), - N_("Indicates the altitude based on the reference in GPSAltitudeRef. " - "Altitude is expressed as one RATIONAL value. The reference unit is meters."), - gpsId, gpsTags, unsignedRational, 1, print0x0006), - TagInfo(0x0007, "GPSTimeStamp", N_("GPS Time Stamp"), - N_("Indicates the time as UTC (Coordinated Universal Time). " - " is expressed as three RATIONAL values " - "giving the hour, minute, and second (atomic clock)."), - gpsId, gpsTags, unsignedRational, 3, print0x0007), - TagInfo(0x0008, "GPSSatellites", N_("GPS Satellites"), - N_("Indicates the GPS satellites used for measurements. This tag can be used " - "to describe the number of satellites, their ID number, angle of elevation, " - "azimuth, SNR and other information in ASCII notation. The format is not " - "specified. If the GPS receiver is incapable of taking measurements, value " - "of the tag is set to NULL."), - gpsId, gpsTags, asciiString, 0, printValue), - TagInfo(0x0009, "GPSStatus", N_("GPS Status"), - N_("Indicates the status of the GPS receiver when the image is recorded. " - "\"A\" means measurement is in progress, and \"V\" means the measurement " - "is Interoperability."), - gpsId, gpsTags, asciiString, 2, print0x0009), - TagInfo(0x000a, "GPSMeasureMode", N_("GPS Measure Mode"), - N_("Indicates the GPS measurement mode. \"2\" means two-dimensional measurement and \"3\" " - "means three-dimensional measurement is in progress."), - gpsId, gpsTags, asciiString, 2, print0x000a), - TagInfo(0x000b, "GPSDOP", N_("GPS Data Degree of Precision"), - N_("Indicates the GPS DOP (data degree of precision). An HDOP value is written " - "during two-dimensional measurement, and PDOP during three-dimensional measurement."), - gpsId, gpsTags, unsignedRational, 1, printValue), - TagInfo(0x000c, "GPSSpeedRef", N_("GPS Speed Reference"), - N_("Indicates the unit used to express the GPS receiver speed of movement. " - "\"K\" \"M\" and \"N\" represents kilometers per hour, miles per hour, and knots."), - gpsId, gpsTags, asciiString, 2, print0x000c), - TagInfo(0x000d, "GPSSpeed", N_("GPS Speed"), - N_("Indicates the speed of GPS receiver movement."), - gpsId, gpsTags, unsignedRational, 1, printValue), - TagInfo(0x000e, "GPSTrackRef", N_("GPS Track Ref"), - N_("Indicates the reference for giving the direction of GPS receiver movement. " - "\"T\" denotes true direction and \"M\" is magnetic direction."), - gpsId, gpsTags, asciiString, 2, printGPSDirRef), - TagInfo(0x000f, "GPSTrack", N_("GPS Track"), - N_("Indicates the direction of GPS receiver movement. The range of values is " - "from 0.00 to 359.99."), - gpsId, gpsTags, unsignedRational, 1, printValue), - TagInfo(0x0010, "GPSImgDirectionRef", N_("GPS Image Direction Reference"), - N_("Indicates the reference for giving the direction of the image when it is captured. " - "\"T\" denotes true direction and \"M\" is magnetic direction."), - gpsId, gpsTags, asciiString, 2, printGPSDirRef), - TagInfo(0x0011, "GPSImgDirection", N_("GPS Image Direction"), - N_("Indicates the direction of the image when it was captured. The range of values " - "is from 0.00 to 359.99."), - gpsId, gpsTags, unsignedRational, 1, printValue), - TagInfo(0x0012, "GPSMapDatum", N_("GPS Map Datum"), - N_("Indicates the geodetic survey data used by the GPS receiver. If the survey data " - "is restricted to Japan, the value of this tag is \"TOKYO\" or \"WGS-84\"."), - gpsId, gpsTags, asciiString, 0, printValue), - TagInfo(0x0013, "GPSDestLatitudeRef", N_("GPS Destination Latitude Refeference"), - N_("Indicates whether the latitude of the destination point is north or south latitude. " - "The ASCII value \"N\" indicates north latitude, and \"S\" is south latitude."), - gpsId, gpsTags, asciiString, 2, EXV_PRINT_TAG(exifGPSLatitudeRef)), - TagInfo(0x0014, "GPSDestLatitude", N_("GPS Destination Latitude"), - N_("Indicates the latitude of the destination point. The latitude is expressed as " - "three RATIONAL values giving the degrees, minutes, and seconds, respectively. " - "If latitude is expressed as degrees, minutes and seconds, a typical format would " - "be dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, " - "fractions of minutes are given up to two decimal places, the format would be " - "dd/1,mmmm/100,0/1."), - gpsId, gpsTags, unsignedRational, 3, printDegrees), - TagInfo(0x0015, "GPSDestLongitudeRef", N_("GPS Destination Longitude Reference"), - N_("Indicates whether the longitude of the destination point is east or west longitude. " - "ASCII \"E\" indicates east longitude, and \"W\" is west longitude."), - gpsId, gpsTags, asciiString, 2, EXV_PRINT_TAG(exifGPSLongitudeRef)), - TagInfo(0x0016, "GPSDestLongitude", N_("GPS Destination Longitude"), - N_("Indicates the longitude of the destination point. The longitude is expressed " - "as three RATIONAL values giving the degrees, minutes, and seconds, respectively. " - "If longitude is expressed as degrees, minutes and seconds, a typical format would be " - "ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of " - "minutes are given up to two decimal places, the format would be ddd/1,mmmm/100,0/1."), - gpsId, gpsTags, unsignedRational, 3, printDegrees), - TagInfo(0x0017, "GPSDestBearingRef", N_("GPS Destination Bearing Reference"), - N_("Indicates the reference used for giving the bearing to the destination point. " - "\"T\" denotes true direction and \"M\" is magnetic direction."), - gpsId, gpsTags, asciiString, 2, printGPSDirRef), - TagInfo(0x0018, "GPSDestBearing", N_("GPS Destination Bearing"), - N_("Indicates the bearing to the destination point. The range of values is from " - "0.00 to 359.99."), - gpsId, gpsTags, unsignedRational, 1, printValue), - TagInfo(0x0019, "GPSDestDistanceRef", N_("GPS Destination Distance Reference"), - N_("Indicates the unit used to express the distance to the destination point. " - "\"K\", \"M\" and \"N\" represent kilometers, miles and knots."), - gpsId, gpsTags, asciiString, 2, print0x0019), - TagInfo(0x001a, "GPSDestDistance", N_("GPS Destination Distance"), - N_("Indicates the distance to the destination point."), - gpsId, gpsTags, unsignedRational, 1, printValue), - TagInfo(0x001b, "GPSProcessingMethod", N_("GPS Processing Method"), - N_("A character string recording the name of the method used for location finding. " - "The first byte indicates the character code used, and this is followed by the name " - "of the method."), - gpsId, gpsTags, undefined, 0, printValue), - TagInfo(0x001c, "GPSAreaInformation", N_("GPS Area Information"), - N_("A character string recording the name of the GPS area. The first byte indicates " - "the character code used, and this is followed by the name of the GPS area."), - gpsId, gpsTags, undefined, 0, printValue), - TagInfo(0x001d, "GPSDateStamp", N_("GPS Date Stamp"), - N_("A character string recording date and time information relative to UTC " - "(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"."), - gpsId, gpsTags, asciiString, 11, printValue), - TagInfo(0x001e, "GPSDifferential", N_("GPS Differential"), - N_("Indicates whether differential correction is applied to the GPS receiver."), - gpsId, gpsTags, unsignedShort, 1, print0x001e), - // End of list marker - TagInfo(0xffff, "(UnknownGpsTag)", N_("Unknown GPSInfo tag"), - N_("Unknown GPSInfo tag"), - gpsId, gpsTags, asciiString, -1, printValue) - }; - - const TagInfo* gpsTagList() - { - return gpsTagInfo; - } - - // Exif Interoperability IFD Tags - static const TagInfo iopTagInfo[] = { - TagInfo(0x0001, "InteroperabilityIndex", N_("Interoperability Index"), - N_("Indicates the identification of the Interoperability rule. " - "Use \"R98\" for stating ExifR98 Rules. Four bytes used " - "including the termination code (NULL). see the separate " - "volume of Recommended Exif Interoperability Rules (ExifR98) " - "for other tags used for ExifR98."), - iopId, iopTags, asciiString, 0, printValue), - TagInfo(0x0002, "InteroperabilityVersion", N_("Interoperability Version"), - N_("Interoperability version"), - iopId, iopTags, undefined, -1, printExifVersion), - TagInfo(0x1000, "RelatedImageFileFormat", N_("Related Image File Format"), - N_("File format of image file"), - iopId, iopTags, asciiString, 0, printValue), - TagInfo(0x1001, "RelatedImageWidth", N_("Related Image Width"), - N_("Image width"), - iopId, iopTags, unsignedLong, 1, printValue), - TagInfo(0x1002, "RelatedImageLength", N_("Related Image Length"), - N_("Image height"), - iopId, iopTags, unsignedLong, 1, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownIopTag)", N_("Unknown Exif Interoperability tag"), - N_("Unknown Exif Interoperability tag"), - iopId, iopTags, asciiString, -1, printValue) - }; - - const TagInfo* iopTagList() - { - return iopTagInfo; - } - - // Synthesized Exiv2 Makernote info Tags (read-only) - static const TagInfo mnTagInfo[] = { - TagInfo(0x0001, "Offset", N_("Offset"), - N_("Offset of the makernote from the start of the TIFF header."), - mnId, makerTags, unsignedLong, 1, printValue), - TagInfo(0x0002, "ByteOrder", N_("Byte Order"), - N_("Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-endian)."), - mnId, makerTags, asciiString, 0, printValue), - // End of list marker - TagInfo(0xffff, "(UnknownMnTag)", N_("Unknown Exiv2 Makernote info tag"), - N_("Unknown Exiv2 Makernote info tag"), - mnId, makerTags, asciiString, -1, printValue) - }; - - const TagInfo* mnTagList() - { - return mnTagInfo; - } - - // Unknown Tag - static const TagInfo unknownTag(0xffff, "Unknown tag", N_("Unknown tag"), - N_("Unknown tag"), - ifdIdNotSet, sectionIdNotSet, asciiString, -1, printValue); - - std::ostream& printValue(std::ostream& os, const Value& value, const ExifData*) - { - return os << value; - } - - IfdId groupId(const std::string& groupName) - { - IfdId ifdId = ifdIdNotSet; - const GroupInfo* ii = find(groupInfo, GroupInfo::GroupName(groupName)); - if (ii != 0) ifdId = static_cast(ii->ifdId_); - return ifdId; - } - - const char* ifdName(IfdId ifdId) - { - const GroupInfo* ii = find(groupInfo, ifdId); - if (ii == 0) return groupInfo[0].ifdName_; - return ii->ifdName_; - } // ifdName - - const char* groupName(IfdId ifdId) - { - const GroupInfo* ii = find(groupInfo, ifdId); - if (ii == 0) return groupInfo[0].groupName_; - return ii->groupName_; - } // groupName - - bool isMakerIfd(IfdId ifdId) - { - bool rc = false; - const GroupInfo* ii = find(groupInfo, ifdId); - if (ii != 0 && 0 == strcmp(ii->ifdName_, "Makernote")) { - rc = true; - } - return rc; - } // isMakerIfd - - bool isExifIfd(IfdId ifdId) - { - bool rc; - switch (ifdId) { - case ifd0Id: - case exifId: - case gpsId: - case iopId: - case ifd1Id: - case ifd2Id: - case ifd3Id: - case subImage1Id: - case subImage2Id: - case subImage3Id: - case subImage4Id: - case subImage5Id: - case subImage6Id: - case subImage7Id: - case subImage8Id: - case subImage9Id: - case subThumb1Id: - case panaRawId: rc = true; break; - default: rc = false; break; - } - return rc; - } // isExifIfd - - void taglist(std::ostream& os, IfdId ifdId) - { - const TagInfo* ti = Internal::tagList(ifdId); - if (ti != 0) { - for (int k = 0; ti[k].tag_ != 0xffff; ++k) { - os << ti[k] << "\n"; - } - } - } // taglist - - const TagInfo* tagList(IfdId ifdId) - { - const GroupInfo* ii = find(groupInfo, ifdId); - if (ii == 0 || ii->tagList_ == 0) return 0; - return ii->tagList_(); - } // tagList - - const TagInfo* tagInfo(uint16_t tag, IfdId ifdId) - { - const TagInfo* ti = tagList(ifdId); - if (ti == 0) return 0; - int idx = 0; - for (idx = 0; ti[idx].tag_ != 0xffff; ++idx) { - if (ti[idx].tag_ == tag) break; - } - return &ti[idx]; - } // tagInfo - - const TagInfo* tagInfo(const std::string& tagName, IfdId ifdId) - { - const TagInfo* ti = tagList(ifdId); - if (ti == 0) return 0; - const char* tn = tagName.c_str(); - if (tn == 0) return 0; - for (int idx = 0; ti[idx].tag_ != 0xffff; ++idx) { - if (0 == strcmp(ti[idx].name_, tn)) { - return &ti[idx]; - } - } - return 0; - } // tagInfo - - uint16_t tagNumber(const std::string& tagName, IfdId ifdId) - { - const TagInfo* ti = tagInfo(tagName, ifdId); - if (ti != 0 && ti->tag_ != 0xffff) return ti->tag_; - if (!isHex(tagName, 4, "0x")) throw Error(7, tagName, ifdId); - std::istringstream is(tagName); - uint16_t tag; - is >> std::hex >> tag; - return tag; - } // tagNumber - - std::ostream& printLong(std::ostream& os, const Value& value, const ExifData*) - { - Rational r = value.toRational(); - if (r.second != 0) return os << static_cast(r.first) / r.second; - return os << "(" << value << ")"; - } // printLong - - std::ostream& printFloat(std::ostream& os, const Value& value, const ExifData*) - { - Rational r = value.toRational(); - if (r.second != 0) return os << static_cast(r.first) / r.second; - return os << "(" << value << ")"; - } // printFloat - - std::ostream& printDegrees(std::ostream& os, const Value& value, const ExifData*) - { - if (value.count() == 3) { - std::ostringstream oss; - oss.copyfmt(os); - static const char* unit[] = { "deg", "'", "\"" }; - static const int prec[] = { 7, 5, 3 }; - int n; - for (n = 2; n > 0; --n) { - if (value.toRational(n).first != 0) break; - } - for (int i = 0; i < n + 1; ++i) { - const int32_t z = value.toRational(i).first; - const int32_t d = value.toRational(i).second; - if (d == 0) return os << "(" << value << ")"; - // Hack: Need Value::toDouble - double b = static_cast(z)/d; - const int p = z % d == 0 ? 0 : prec[i]; - os << std::fixed << std::setprecision(p) << b - << unit[i] << " "; - } - os.copyfmt(oss); - } - else { - os << value; - } - - return os; - } // printDegrees - - std::ostream& printUcs2(std::ostream& os, const Value& value, const ExifData*) - { - bool cnv = false; - if (value.typeId() == unsignedByte && value.size() > 0) { - DataBuf buf(value.size()); - value.copy(buf.pData_, invalidByteOrder); - // Strip trailing UCS-2 0-character, if there is one - if (buf.pData_[buf.size_ - 1] == 0 && buf.pData_[buf.size_ - 2] == 0) buf.size_ -= 2; - std::string str((const char*)buf.pData_, buf.size_); - cnv = convertStringCharset(str, "UCS-2LE", "UTF-8"); - if (cnv) os << str; - } - if (!cnv) os << value; - return os; - } // printUcs2 - - std::ostream& printExifUnit(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifUnit)(os, value, metadata); - } - - std::ostream& print0x0000(std::ostream& os, const Value& value, const ExifData*) - { - if (value.size() != 4 || value.typeId() != unsignedByte) { - return os << value; - } - - for (int i = 0; i < 3; i++) { - os << value.toLong(i); - os << "."; - } - os << value.toLong(3); - - return os; - } - - std::ostream& print0x0005(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifGPSAltitudeRef)(os, value, metadata); - } - - std::ostream& print0x0006(std::ostream& os, const Value& value, const ExifData*) - { - std::ostringstream oss; - oss.copyfmt(os); - const int32_t d = value.toRational().second; - if (d == 0) return os << "(" << value << ")"; - const int p = d > 1 ? 1 : 0; - os << std::fixed << std::setprecision(p) << value.toFloat() << " m"; - os.copyfmt(oss); - - return os; - } - - std::ostream& print0x0007(std::ostream& os, const Value& value, const ExifData*) - { - if (value.count() == 3) { - for (int i = 0; i < 3; ++i) { - if (value.toRational(i).second == 0) { - return os << "(" << value << ")"; - } - } - std::ostringstream oss; - oss.copyfmt(os); - const float sec = 3600 * value.toFloat(0) - + 60 * value.toFloat(1) - + value.toFloat(2); - int p = 0; - if (sec != static_cast(sec)) p = 1; - - const int hh = static_cast(sec / 3600); - const int mm = static_cast((sec - 3600 * hh) / 60); - const float ss = sec - 3600 * hh - 60 * mm; - - os << std::setw(2) << std::setfill('0') << std::right << hh << ":" - << std::setw(2) << std::setfill('0') << std::right << mm << ":" - << std::setw(2 + p * 2) << std::setfill('0') << std::right - << std::fixed << std::setprecision(p) << ss; - - os.copyfmt(oss); - } - else { - os << value; - } - - return os; - } - - std::ostream& print0x0009(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifGPSStatus)(os, value, metadata); - } - - std::ostream& print0x000a(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifGPSMeasureMode)(os, value, metadata); - } - - std::ostream& print0x000c(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifGPSSpeedRef)(os, value, metadata); - } - - std::ostream& print0x0019(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifGPSDestDistanceRef)(os, value, metadata); - } - - std::ostream& print0x001e(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifGPSDifferential)(os, value, metadata); - } - - std::ostream& print0x0112(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifOrientation)(os, value, metadata); - } - - std::ostream& print0x0213(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifYCbCrPositioning)(os, value, metadata); - } - - std::ostream& print0x8298(std::ostream& os, const Value& value, const ExifData*) - { - // Print the copyright information in the format Photographer, Editor - std::string val = value.toString(); - std::string::size_type pos = val.find('\0'); - if (pos != std::string::npos) { - std::string photographer(val, 0, pos); - if (photographer != " ") os << photographer; - std::string editor(val, pos + 1); - if (editor != "") { - if (photographer != " ") os << ", "; - os << editor; - } - } - else { - os << val; - } - return os; - } - - std::ostream& print0x829a(std::ostream& os, const Value& value, const ExifData*) - { - Rational t = value.toRational(); - if (t.first > 1 && t.second > 1 && t.second >= t.first) { - t.second = static_cast( - static_cast(t.second) / t.first + 0.5); - t.first = 1; - } - if (t.second > 1 && t.second < t.first) { - t.first = static_cast( - static_cast(t.first) / t.second + 0.5); - t.second = 1; - } - if (t.second == 1) { - os << t.first << " s"; - } - else { - os << t.first << "/" << t.second << " s"; - } - return os; - } - - std::ostream& print0x829d(std::ostream& os, const Value& value, const ExifData*) - { - Rational fnumber = value.toRational(); - if (fnumber.second != 0) { - std::ostringstream oss; - oss.copyfmt(os); - os << "F" << std::setprecision(2) - << static_cast(fnumber.first) / fnumber.second; - os.copyfmt(oss); - } - else { - os << "(" << value << ")"; - } - return os; - } - - std::ostream& print0x8822(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifExposureProgram)(os, value, metadata); - } - - std::ostream& print0x8827(std::ostream& os, const Value& value, const ExifData*) - { - return os << value.toLong(); - } - - std::ostream& print0x9101(std::ostream& os, const Value& value, const ExifData*) - { - for (long i = 0; i < value.count(); ++i) { - long l = value.toLong(i); - switch (l) { - case 0: break; - case 1: os << "Y"; break; - case 2: os << "Cb"; break; - case 3: os << "Cr"; break; - case 4: os << "R"; break; - case 5: os << "G"; break; - case 6: os << "B"; break; - default: os << "(" << l << ")"; break; - } - } - return os; - } - - std::ostream& print0x9201(std::ostream& os, const Value& value, const ExifData*) - { - Rational r = value.toRational(); - if (!value.ok() || r.second == 0) return os << "(" << value << ")"; - - URational ur = exposureTime(static_cast(r.first) / r.second); - os << ur.first; - if (ur.second > 1) { - os << "/" << ur.second; - } - return os << " s"; - } - - std::ostream& print0x9202(std::ostream& os, const Value& value, const ExifData*) - { - if ( value.count() == 0 - || value.toRational().second == 0) { - return os << "(" << value << ")"; - } - std::ostringstream oss; - oss.copyfmt(os); - os << "F" << std::setprecision(2) << fnumber(value.toFloat()); - os.copyfmt(oss); - return os; - } - - std::ostream& print0x9204(std::ostream& os, const Value& value, const ExifData*) - { - Rational bias = value.toRational(); - if (bias.second <= 0) { - os << "(" << bias.first << "/" << bias.second << ")"; - } - else if (bias.first == 0) { - os << "0 EV"; - } - else { - int32_t d = gcd(bias.first, bias.second); - int32_t num = std::abs(bias.first) / d; - int32_t den = bias.second / d; - os << (bias.first < 0 ? "-" : "+") << num; - if (den != 1) { - os << "/" << den; - } - os << " EV"; - } - return os; - } - - std::ostream& print0x9206(std::ostream& os, const Value& value, const ExifData*) - { - Rational distance = value.toRational(); - if (distance.first == 0) { - os << _("Unknown"); - } - else if (static_cast(distance.first) == 0xffffffff) { - os << _("Infinity"); - } - else if (distance.second != 0) { - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(2) - << (float)distance.first / distance.second - << " m"; - os.copyfmt(oss); - } - else { - os << "(" << value << ")"; - } - return os; - } - - std::ostream& print0x9207(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifMeteringMode)(os, value, metadata); - } - - std::ostream& print0x9208(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifLightSource)(os, value, metadata); - } - - std::ostream& print0x920a(std::ostream& os, const Value& value, const ExifData*) - { - Rational length = value.toRational(); - if (length.second != 0) { - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(1) - << (float)length.first / length.second - << " mm"; - os.copyfmt(oss); - } - else { - os << "(" << value << ")"; - } - return os; - } - - std::ostream& print0x9286(std::ostream& os, const Value& value, const ExifData*) - { - const CommentValue* pcv = dynamic_cast(&value); - if (pcv) { - os << pcv->comment(); - } - else { - os << value; - } - return os; - } - - std::ostream& print0xa001(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifColorSpace)(os, value, metadata); - } - - std::ostream& print0xa217(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifSensingMethod)(os, value, metadata); - } - - std::ostream& print0xa300(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifFileSource)(os, value, metadata); - } - - std::ostream& print0xa301(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifSceneType)(os, value, metadata); - } - - std::ostream& print0xa401(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifCustomRendered)(os, value, metadata); - } - - std::ostream& print0xa402(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifExposureMode)(os, value, metadata); - } - - std::ostream& print0xa403(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifWhiteBalance)(os, value, metadata); - } - - std::ostream& print0xa404(std::ostream& os, const Value& value, const ExifData*) - { - Rational zoom = value.toRational(); - if (zoom.second == 0) { - os << _("Digital zoom not used"); - } - else { - std::ostringstream oss; - oss.copyfmt(os); - os << std::fixed << std::setprecision(1) - << (float)zoom.first / zoom.second; - os.copyfmt(oss); - } - return os; - } - - std::ostream& print0xa405(std::ostream& os, const Value& value, const ExifData*) - { - long length = value.toLong(); - if (length == 0) { - os << _("Unknown"); - } - else { - os << length << ".0 mm"; - } - return os; - } - - std::ostream& print0xa406(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifSceneCaptureType)(os, value, metadata); - } - - std::ostream& print0xa407(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifGainControl)(os, value, metadata); - } - - std::ostream& print0xa409(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifSaturation)(os, value, metadata); - } - - std::ostream& print0xa40c(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifSubjectDistanceRange)(os, value, metadata); - } - - std::ostream& printGPSDirRef(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifGPSDirRef)(os, value, metadata); - } - - std::ostream& printNormalSoftHard(std::ostream& os, const Value& value, const ExifData* metadata) - { - return EXV_PRINT_TAG(exifNormalSoftHard)(os, value, metadata); - } - - std::ostream& printExifVersion(std::ostream& os, const Value& value, const ExifData*) - { - if (value.size() != 4 || value.typeId() != undefined) { - return os << "(" << value << ")"; - } - - char s[5]; - for (int i = 0; i < 4; ++i) { - s[i] = static_cast(value.toLong(i)); - } - s[4] = '\0'; - - return printVersion(os, s); - } - - std::ostream& printXmpVersion(std::ostream& os, const Value& value, const ExifData*) - { - if (value.size() != 4 || value.typeId() != xmpText) { - return os << "(" << value << ")"; - } - - return printVersion(os, value.toString()); - } - - std::ostream& printXmpDate(std::ostream& os, const Value& value, const ExifData*) - { - if (!(value.size() == 19 || value.size() == 20) || value.typeId() != xmpText) { - return os << value; - } - - std::string stringValue = value.toString(); - if (stringValue[19] == 'Z') { - stringValue = stringValue.substr(0, 19); - } - for (unsigned int i = 0; i < stringValue.length(); ++i) { - if (stringValue[i] == 'T') stringValue[i] = ' '; - if (stringValue[i] == '-') stringValue[i] = ':'; - } - - return os << stringValue; - } - - float fnumber(float apertureValue) - { - return static_cast(std::exp(std::log(2.0) * apertureValue / 2)); - } - - URational exposureTime(float shutterSpeedValue) - { - URational ur(1, 1); - double tmp = std::exp(std::log(2.0) * shutterSpeedValue); - if (tmp > 1) { - ur.second = static_cast(tmp + 0.5); - } - else { - ur.first = static_cast(1/tmp + 0.5); - } - return ur; - } - -}} // namespace Internal, Exiv2 - -namespace Exiv2 { - - //! @cond IGNORE - GroupInfo::GroupName::GroupName(const std::string& groupName) - { - g_ = groupName; - } - //! @endcond - - bool GroupInfo::operator==(int ifdId) const - { - return ifdId_ == ifdId; - } - - bool GroupInfo::operator==(const GroupName& groupName) const - { - return 0 == strcmp(groupName.g_.c_str(), groupName_); - } - - TagInfo::TagInfo( - uint16_t tag, - const char* name, - const char* title, - const char* desc, - int ifdId, - int sectionId, - TypeId typeId, - int16_t count, - PrintFct printFct - ) - : tag_(tag), name_(name), title_(title), desc_(desc), ifdId_(ifdId), - sectionId_(sectionId), typeId_(typeId), count_(count), printFct_(printFct) - { - } - - const GroupInfo* ExifTags::groupList() - { - return groupInfo + 1; // +1 to skip the first (ifdIdNotSet) entry - } - - const TagInfo* ExifTags::tagList(const std::string& groupName) - { - const GroupInfo* ii = find(groupInfo, GroupInfo::GroupName(groupName)); - if (ii == 0 || ii->tagList_ == 0) return 0; - return ii->tagList_(); - } // ExifTags::tagList - - const char* ExifTags::sectionName(const ExifKey& key) - { - const TagInfo* ti = tagInfo(key.tag(), static_cast(key.ifdId())); - if (ti == 0) return sectionInfo[unknownTag.sectionId_].name_; - return sectionInfo[ti->sectionId_].name_; - } - - uint16_t ExifTags::defaultCount(const ExifKey& key) - { - const TagInfo* ti = tagInfo(key.tag(), static_cast(key.ifdId())); - if (ti == 0) return unknownTag.count_; - return ti->count_; - } - - const char* ExifTags::ifdName(const std::string& groupName) - { - IfdId ifdId = Internal::groupId(groupName); - return Internal::ifdName(ifdId); - } - - bool ExifTags::isMakerGroup(const std::string& groupName) - { - IfdId ifdId = Internal::groupId(groupName); - return Internal::isMakerIfd(ifdId); - } - - bool ExifTags::isExifGroup(const std::string& groupName) - { - IfdId ifdId = Internal::groupId(groupName); - return Internal::isExifIfd(ifdId); - } - - void ExifTags::taglist(std::ostream& os) - { - for (int i=0; ifdTagInfo[i].tag_ != 0xffff; ++i) { - os << ifdTagInfo[i] << "\n"; - } - for (int i=0; exifTagInfo[i].tag_ != 0xffff; ++i) { - os << exifTagInfo[i] << "\n"; - } - for (int i=0; iopTagInfo[i].tag_ != 0xffff; ++i) { - os << iopTagInfo[i] << "\n"; - } - for (int i=0; gpsTagInfo[i].tag_ != 0xffff; ++i) { - os << gpsTagInfo[i] << "\n"; - } - } // ExifTags::taglist - - void ExifTags::taglist(std::ostream& os, const std::string& groupName) - { - IfdId ifdId = Internal::groupId(groupName); - Internal::taglist(os, ifdId); - } - - //! %Internal Pimpl structure with private members and data of class ExifKey. - struct ExifKey::Impl { - //! @name Creators - //@{ - Impl(); //!< Default constructor - //@} - - //! @name Manipulators - //@{ - /*! - @brief Set the key corresponding to the \em tag, \em ifdId and \em tagInfo. - The key is of the form 'Exif.groupName.tagName'. - */ - void makeKey(uint16_t tag, IfdId ifdId, const TagInfo* tagInfo); - /*! - @brief Parse and convert the key string into tag and IFD Id. - Updates data members if the string can be decomposed, - or throws \em Error . - - @throw Error if the key cannot be decomposed. - */ - void decomposeKey(const std::string& key); - //@} - - //! @name Accessors - //@{ - //! Return the name of the tag - std::string tagName() const; - //@} - - // DATA - static const char* familyName_; //!< "Exif" - - const TagInfo* tagInfo_; //!< Tag info - uint16_t tag_; //!< Tag value - IfdId ifdId_; //!< The IFD associated with this tag - int idx_; //!< Unique id of the Exif key in the image - std::string groupName_; //!< The group name - std::string key_; //!< %Key - }; - - const char* ExifKey::Impl::familyName_ = "Exif"; - - ExifKey::Impl::Impl() - : tagInfo_(0), tag_(0), ifdId_(ifdIdNotSet), idx_(0) - { - } - - std::string ExifKey::Impl::tagName() const - { - if (tagInfo_ != 0 && tagInfo_->tag_ != 0xffff) { - return tagInfo_->name_; - } - std::ostringstream os; - os << "0x" << std::setw(4) << std::setfill('0') << std::right - << std::hex << tag_; - return os.str(); - } - - void ExifKey::Impl::decomposeKey(const std::string& key) - { - // Get the family name, IFD name and tag name parts of the key - std::string::size_type pos1 = key.find('.'); - if (pos1 == std::string::npos) throw Error(6, key); - std::string familyName = key.substr(0, pos1); - if (0 != strcmp(familyName.c_str(), familyName_)) { - throw Error(6, key); - } - std::string::size_type pos0 = pos1 + 1; - pos1 = key.find('.', pos0); - if (pos1 == std::string::npos) throw Error(6, key); - std::string groupName = key.substr(pos0, pos1 - pos0); - if (groupName.empty()) throw Error(6, key); - std::string tn = key.substr(pos1 + 1); - if (tn.empty()) throw Error(6, key); - - // Find IfdId - IfdId ifdId = groupId(groupName); - if (ifdId == ifdIdNotSet) throw Error(6, key); - if (!Internal::isExifIfd(ifdId) && !Internal::isMakerIfd(ifdId)) { - throw Error(6, key); - } - // Convert tag - uint16_t tag = tagNumber(tn, ifdId); - // Get tag info - tagInfo_ = tagInfo(tag, ifdId); - if (tagInfo_ == 0) throw Error(6, key); - - tag_ = tag; - ifdId_ = ifdId; - groupName_ = groupName; - // tagName() translates hex tag name (0xabcd) to a real tag name if there is one - key_ = familyName + "." + groupName + "." + tagName(); - } - - void ExifKey::Impl::makeKey(uint16_t tag, IfdId ifdId, const TagInfo* tagInfo) - { - assert(tagInfo != 0); - - tagInfo_ = tagInfo; - tag_ = tag; - ifdId_ = ifdId; - key_ = std::string(familyName_) + "." + groupName_ + "." + tagName(); - } - - ExifKey::ExifKey(uint16_t tag, const std::string& groupName) - : p_(new Impl) - { - IfdId ifdId = groupId(groupName); - // Todo: Test if this condition can be removed - if (!Internal::isExifIfd(ifdId) && !Internal::isMakerIfd(ifdId)) { - throw Error(23, ifdId); - } - const TagInfo* ti = tagInfo(tag, ifdId); - if (ti == 0) { - throw Error(23, ifdId); - } - p_->groupName_ = groupName; - p_->makeKey(tag, ifdId, ti); - } - - ExifKey::ExifKey(const TagInfo& ti) - : p_(new Impl) - { - IfdId ifdId = static_cast(ti.ifdId_); - if (!Internal::isExifIfd(ifdId) && !Internal::isMakerIfd(ifdId)) { - throw Error(23, ifdId); - } - p_->groupName_ = Exiv2::groupName(ifdId); - p_->makeKey(ti.tag_, ifdId, &ti); - } - - ExifKey::ExifKey(const std::string& key) - : p_(new Impl) - { - p_->decomposeKey(key); - } - - ExifKey::ExifKey(const ExifKey& rhs) - : Key(rhs), p_(new Impl(*rhs.p_)) - { - } - - ExifKey::~ExifKey() - { - delete p_; - } - - ExifKey& ExifKey::operator=(const ExifKey& rhs) - { - if (this == &rhs) return *this; - Key::operator=(rhs); - *p_ = *rhs.p_; - return *this; - } - - void ExifKey::setIdx(int idx) - { - p_->idx_ = idx; - } - - std::string ExifKey::key() const - { - return p_->key_; - } - - const char* ExifKey::familyName() const - { - return p_->familyName_; - } - - std::string ExifKey::groupName() const - { - return p_->groupName_; - } - - std::string ExifKey::tagName() const - { - return p_->tagName(); - } - - std::string ExifKey::tagLabel() const - { - if (p_->tagInfo_ == 0 || p_->tagInfo_->tag_ == 0xffff) return ""; - return _(p_->tagInfo_->title_); - } - - std::string ExifKey::tagDesc() const - { - if (p_->tagInfo_ == 0 || p_->tagInfo_->tag_ == 0xffff) return ""; - return _(p_->tagInfo_->desc_); - } - - TypeId ExifKey::defaultTypeId() const - { - if (p_->tagInfo_ == 0) return unknownTag.typeId_; - return p_->tagInfo_->typeId_; - } - - uint16_t ExifKey::tag() const - { - return p_->tag_; - } - - ExifKey::AutoPtr ExifKey::clone() const - { - return AutoPtr(clone_()); - } - - ExifKey* ExifKey::clone_() const - { - return new ExifKey(*this); - } - - int ExifKey::ifdId() const - { - return p_->ifdId_; - } - - int ExifKey::idx() const - { - return p_->idx_; - } - - // ************************************************************************* - // free functions - - std::ostream& operator<<(std::ostream& os, const TagInfo& ti) - { - ExifKey exifKey(ti); - return os << exifKey.tagName() << ",\t" - << std::dec << exifKey.tag() << ",\t" - << "0x" << std::setw(4) << std::setfill('0') - << std::right << std::hex << exifKey.tag() << ",\t" - << exifKey.groupName() << ",\t" - << exifKey.key() << ",\t" - << TypeInfo::typeName(exifKey.defaultTypeId()) << ",\t" - << exifKey.tagDesc(); - } - -} // namespace Exiv2 - -namespace { - std::ostream& printVersion(std::ostream& os, const std::string& str) - { - if (str.size() != 4) { - return os << "(" << str << ")"; - } - if (str[0] != '0') os << str[0]; - return os << str[1] << "." << str[2] << str[3]; - } -} diff --git a/platform/win32/msvc/external/exiv2/src/tags.hpp b/platform/win32/msvc/external/exiv2/src/tags.hpp deleted file mode 100644 index 1235a8799fb..00000000000 --- a/platform/win32/msvc/external/exiv2/src/tags.hpp +++ /dev/null @@ -1,238 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file tags.hpp - @brief Exif tag and type information - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 15-Jan-04, ahu: created
- 11-Feb-04, ahu: isolated as a component - */ -#ifndef TAGS_HPP_ -#define TAGS_HPP_ - -// ***************************************************************************** -// included header files -#include "metadatum.hpp" -#include "types.hpp" - -// + standard includes -#include -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class declarations - class ExifData; - class ExifKey; - class Value; - struct TagInfo; - -// ***************************************************************************** -// type definitions - - //! Type for a function pointer for functions interpreting the tag value - typedef std::ostream& (*PrintFct)(std::ostream&, const Value&, const ExifData* pExifData); - //! A function returning a tag list. - typedef const TagInfo* (*TagListFct)(); - -// ***************************************************************************** -// class definitions - - //! The details of an Exif group. Groups include IFDs and binary arrays. - struct EXIV2API GroupInfo { - struct GroupName; - bool operator==(int ifdId) const; //!< Comparison operator for IFD id - bool operator==(const GroupName& groupName) const; //!< Comparison operator for group name - int ifdId_; //!< IFD id - const char* ifdName_; //!< IFD name - const char* groupName_; //!< Group name, unique for each group. - TagListFct tagList_; //!< Tag list - }; - - //! Search key to find a GroupInfo by its group name. - struct EXIV2API GroupInfo::GroupName { - GroupName(const std::string& groupName); //!< Constructor - std::string g_; //!< Group name - }; - - //! Tag information - struct EXIV2API TagInfo { - //! Constructor - TagInfo( - uint16_t tag, - const char* name, - const char* title, - const char* desc, - int ifdId, - int sectionId, - TypeId typeId, - int16_t count, - PrintFct printFct - ); - uint16_t tag_; //!< Tag - const char* name_; //!< One word tag label - const char* title_; //!< Tag title - const char* desc_; //!< Short tag description - int ifdId_; //!< Link to the (preferred) IFD - int sectionId_; //!< Section id - TypeId typeId_; //!< Type id - int16_t count_; //!< The number of values (not bytes!), 0=any, -1=count not known. - PrintFct printFct_; //!< Pointer to tag print function - }; // struct TagInfo - - //! Access to Exif group and tag lists and misc. tag reference methods, implemented as a static class. - class EXIV2API ExifTags { - //! Prevent construction: not implemented. - ExifTags(); - //! Prevent copy-construction: not implemented. - ExifTags(const ExifTags& rhs); - //! Prevent assignment: not implemented. - ExifTags& operator=(const ExifTags& rhs); - - public: - //! Return read-only list of built-in groups - static const GroupInfo* groupList(); - //! Return read-only list of built-in \em groupName tags. - static const TagInfo* tagList(const std::string& groupName); - - //! Print a list of all standard Exif tags to output stream - static void taglist(std::ostream& os); - //! Print the list of tags for \em groupName - static void taglist(std::ostream& os, const std::string& groupName); - - //! Return the name of the section for an Exif \em key. - static const char* sectionName(const ExifKey& key); - //! Return the default number of components (not bytes!) \em key has. (0=any, -1=count not known) - static uint16_t defaultCount(const ExifKey& key); - //! Return the name of the IFD for the group. - static const char* ifdName(const std::string& groupName); - - /*! - @brief Return true if \em groupName is a makernote group. - */ - static bool isMakerGroup(const std::string& groupName); - /*! - @brief Return true if \em groupName is a TIFF or Exif IFD, else false. - This is used to differentiate between standard Exif IFDs - and IFDs associated with the makernote. - */ - static bool isExifGroup(const std::string& groupName); - - }; // class ExifTags - - /*! - @brief Concrete keys for Exif metadata and access to Exif tag reference data. - */ - class EXIV2API ExifKey : public Key { - public: - //! Shortcut for an %ExifKey auto pointer. - typedef std::auto_ptr AutoPtr; - - //! @name Creators - //@{ - /*! - @brief Constructor to create an Exif key from a key string. - - @param key The key string. - @throw Error if the first part of the key is not 'Exif' or - the remainin parts of the key cannot be parsed and - converted to a group name and tag name. - */ - explicit ExifKey(const std::string& key); - /*! - @brief Constructor to create an Exif key from the tag number and - group name. - @param tag The tag value - @param groupName The name of the group, i.e., the second part of - the Exif key. - @throw Error if the key cannot be constructed from the tag number - and group name. - */ - ExifKey(uint16_t tag, const std::string& groupName); - /*! - @brief Constructor to create an Exif key from a TagInfo instance. - @param ti The TagInfo instance - @throw Error if the key cannot be constructed from the tag number - and group name. - */ - ExifKey(const TagInfo& ti); - //! Copy constructor - ExifKey(const ExifKey& rhs); - //! Destructor - virtual ~ExifKey(); - //@} - - //! @name Manipulators - //@{ - /*! - @brief Assignment operator. - */ - ExifKey& operator=(const ExifKey& rhs); - //! Set the index. - void setIdx(int idx); - //@} - - //! @name Accessors - //@{ - virtual std::string key() const; - virtual const char* familyName() const; - virtual std::string groupName() const; - //! Return the IFD id as an integer. (Do not use, this is meant for library internal use.) - int ifdId() const; - virtual std::string tagName() const; - virtual uint16_t tag() const; - virtual std::string tagLabel() const; - //! Return the tag description. - std::string tagDesc() const; // Todo: should be in the base class - //! Return the default type id for this tag. - TypeId defaultTypeId() const; // Todo: should be in the base class - - AutoPtr clone() const; - //! Return the index (unique id of this key within the original Exif data, 0 if not set) - int idx() const; - //@} - - private: - //! Internal virtual copy constructor. - EXV_DLLLOCAL virtual ExifKey* clone_() const; - - private: - // Pimpl idiom - struct Impl; - Impl* p_; - - }; // class ExifKey - -// ***************************************************************************** -// free functions - - //! Output operator for TagInfo - EXIV2API std::ostream& operator<<(std::ostream& os, const TagInfo& ti); - -} // namespace Exiv2 - -#endif // #ifndef TAGS_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/tags_int.hpp b/platform/win32/msvc/external/exiv2/src/tags_int.hpp deleted file mode 100644 index c1ff4ffdae6..00000000000 --- a/platform/win32/msvc/external/exiv2/src/tags_int.hpp +++ /dev/null @@ -1,445 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file tags_int.hpp - @brief Internal Exif tag and type information - @version $Rev: 2696 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 15-Jan-04, ahu: created
- 11-Feb-04, ahu: isolated as a component - */ -#ifndef TAGS_INT_HPP_ -#define TAGS_INT_HPP_ - -// ***************************************************************************** -// included header files -#include "types.hpp" -#include "tags.hpp" -#include "value.hpp" - -// + standard includes -#include -#include -#include - -// ***************************************************************************** -// namespace extensions - -namespace Exiv2 { - class ExifData; - - namespace Internal { - -// ***************************************************************************** -// class definitions - - //! Type to specify the IFD to which a metadata belongs - enum IfdId { - ifdIdNotSet, - ifd0Id, - ifd1Id, - ifd2Id, - ifd3Id, - exifId, - gpsId, - iopId, - subImage1Id, - subImage2Id, - subImage3Id, - subImage4Id, - subImage5Id, - subImage6Id, - subImage7Id, - subImage8Id, - subImage9Id, - subThumb1Id, - panaRawId, - mnId, - canonId, - canonCsId, - canonSiId, - canonCfId, - canonPiId, - canonPaId, - canonFiId, - canonPrId, - fujiId, - minoltaId, - minoltaCs5DId, - minoltaCs7DId, - minoltaCsOldId, - minoltaCsNewId, - nikon1Id, - nikon2Id, - nikon3Id, - nikonPvId, - nikonVrId, - nikonPcId, - nikonWtId, - nikonIiId, - nikonAfId, - nikonAf2Id, - nikonAFTId, - nikonFiId, - nikonMeId, - nikonFl1Id, - nikonFl2Id, - nikonFl3Id, - nikonSi1Id, - nikonSi2Id, - nikonSi3Id, - nikonSi4Id, - nikonSi5Id, - nikonSi6Id, - nikonLd1Id, - nikonLd2Id, - nikonLd3Id, - nikonCb1Id, - nikonCb2Id, - nikonCb2aId, - nikonCb2bId, - nikonCb3Id, - nikonCb4Id, - olympusId, - olympus2Id, - olympusCsId, - olympusEqId, - olympusRdId, - olympusRd2Id, - olympusIpId, - olympusFiId, - olympusFe1Id, - olympusFe2Id, - olympusFe3Id, - olympusFe4Id, - olympusFe5Id, - olympusFe6Id, - olympusFe7Id, - olympusFe8Id, - olympusFe9Id, - olympusRiId, - panasonicId, - pentaxId, - pentaxDngId, - samsung2Id, - samsungPvId, - samsungPwId, - sigmaId, - sony1Id, - sony2Id, - sonyMltId, - sony1CsId, - sony1Cs2Id, - sony2CsId, - sony2Cs2Id, - sony1MltCs7DId, - sony1MltCsOldId, - sony1MltCsNewId, - sony1MltCsA100Id, - lastId, - ignoreId = lastId - }; - - /*! - @brief Section identifiers to logically group tags. A section consists - of nothing more than a name, based on the Exif standard. - */ - enum SectionId { sectionIdNotSet, - imgStruct, recOffset, imgCharacter, otherTags, exifFormat, - exifVersion, imgConfig, userInfo, relatedFile, dateTime, - captureCond, gpsTags, iopTags, makerTags, dngTags, panaRaw, - tiffEp, tiffPm6, adobeOpi, - lastSectionId }; - - //! The details of a section. - struct SectionInfo { - SectionId sectionId_; //!< Section id - const char* name_; //!< Section name (one word) - const char* desc_; //!< Section description - }; - - /*! - @brief Helper structure for lookup tables for translations of numeric - tag values to human readable labels. - */ - struct TagDetails { - long val_; //!< Tag value - const char* label_; //!< Translation of the tag value - - //! Comparison operator for use with the find template - bool operator==(long key) const { return val_ == key; } - }; // struct TagDetails - - /*! - @brief Helper structure for lookup tables for translations of bitmask - values to human readable labels. - */ - struct TagDetailsBitmask { - uint32_t mask_; //!< Bitmask value - const char* label_; //!< Description of the tag value - }; // struct TagDetailsBitmask - - /*! - @brief Helper structure for lookup tables for translations of controlled - vocabulary strings to their descriptions. - */ - struct TagVocabulary { - const char* voc_; //!< Vocabulary string - const char* label_; //!< Description of the vocabulary string - - /*! - @brief Comparison operator for use with the find template - - Compare vocabulary strings like "PR-NON" with keys like - "http://ns.useplus.org/ldf/vocab/PR-NON" and return true if the vocabulary - string matches the end of the key. - */ - bool operator==(const std::string& key) const; - }; // struct TagDetails - - /*! - @brief Generic pretty-print function to translate a long value to a description - by looking up a reference table. - */ - template - std::ostream& printTag(std::ostream& os, const Value& value, const ExifData*) - { - const TagDetails* td = find(array, value.toLong()); - if (td) { - os << exvGettext(td->label_); - } - else { - os << "(" << value << ")"; - } - return os; - } - -//! Shortcut for the printTag template which requires typing the array name only once. -#define EXV_PRINT_TAG(array) printTag - - /*! - @brief Generic print function to translate a long value to a description - by looking up bitmasks in a reference table. - */ - template - std::ostream& printTagBitmask(std::ostream& os, const Value& value, const ExifData*) - { - const uint32_t val = static_cast(value.toLong()); - if (val == 0 && N > 0) { - const TagDetailsBitmask* td = *(&array); - if (td->mask_ == 0) return os << exvGettext(td->label_); - } - bool sep = false; - for (int i = 0; i < N; ++i) { - // *& acrobatics is a workaround for a MSVC 7.1 bug - const TagDetailsBitmask* td = *(&array) + i; - - if (val & td->mask_) { - if (sep) { - os << ", " << exvGettext(td->label_); - } - else { - os << exvGettext(td->label_); - sep = true; - } - } - } - return os; - } - -//! Shortcut for the printTagBitmask template which requires typing the array name only once. -#define EXV_PRINT_TAG_BITMASK(array) printTagBitmask - - /*! - @brief Generic pretty-print function to translate a controlled vocabulary value (string) - to a description by looking up a reference table. - */ - template - std::ostream& printTagVocabulary(std::ostream& os, const Value& value, const ExifData*) - { - const TagVocabulary* td = find(array, value.toString()); - if (td) { - os << exvGettext(td->label_); - } - else { - os << "(" << value << ")"; - } - return os; - } - -//! Shortcut for the printTagVocabulary template which requires typing the array name only once. -#define EXV_PRINT_VOCABULARY(array) printTagVocabulary - -// ***************************************************************************** -// free functions - - //! Return read-only list of built-in IFD0/1 tags - const TagInfo* ifdTagList(); - //! Return read-only list of built-in Exif IFD tags - const TagInfo* exifTagList(); - //! Return read-only list of built-in IOP tags - const TagInfo* iopTagList(); - //! Return read-only list of built-in GPS tags - const TagInfo* gpsTagList(); - //! Return read-only list of built-in Exiv2 Makernote info tags - const TagInfo* mnTagList(); - - //! Return the group id for a group name - IfdId groupId(const std::string& groupName); - //! Return the name of the IFD - const char* ifdName(IfdId ifdId); - //! Return the group name for a group id - const char* groupName(IfdId ifdId); - - //! Return true if \em ifdId is a makernote IFD id. (Note: returns false for makerIfd) - bool isMakerIfd(IfdId ifdId); - //! Return true if \em ifdId is an %Exif IFD id. - bool isExifIfd(IfdId ifdId); - - //! Print the list of tags for \em ifdId to the output stream \em os - void taglist(std::ostream& os, IfdId ifdId); - //! Return the tag list for \em ifdId - const TagInfo* tagList(IfdId ifdId); - //! Return the tag info for \em tag and \em ifdId - const TagInfo* tagInfo(uint16_t tag, IfdId ifdId); - //! Return the tag info for \em tagName and \em ifdId - const TagInfo* tagInfo(const std::string& tagName, IfdId ifdId); - /*! - @brief Return the tag number for one combination of IFD id and tagName. - If the tagName is not known, it expects tag names in the - form "0x01ff" and converts them to unsigned integer. - - @throw Error if the tagname or ifdId is invalid - */ - uint16_t tagNumber(const std::string& tagName, IfdId ifdId); - - //! @name Functions printing interpreted tag values - //@{ - //! Default print function, using the Value output operator - std::ostream& printValue(std::ostream& os, const Value& value, const ExifData*); - //! Print the value converted to a long - std::ostream& printLong(std::ostream& os, const Value& value, const ExifData*); - //! Print a Rational or URational value in floating point format - std::ostream& printFloat(std::ostream& os, const Value& value, const ExifData*); - //! Print a longitude or latitude value - std::ostream& printDegrees(std::ostream& os, const Value& value, const ExifData*); - //! Print function converting from UCS-2LE to UTF-8 - std::ostream& printUcs2(std::ostream& os, const Value& value, const ExifData*); - //! Print function for Exif units - std::ostream& printExifUnit(std::ostream& os, const Value& value, const ExifData*); - //! Print GPS version - std::ostream& print0x0000(std::ostream& os, const Value& value, const ExifData*); - //! Print GPS altitude ref - std::ostream& print0x0005(std::ostream& os, const Value& value, const ExifData*); - //! Print GPS altitude - std::ostream& print0x0006(std::ostream& os, const Value& value, const ExifData*); - //! Print GPS timestamp - std::ostream& print0x0007(std::ostream& os, const Value& value, const ExifData*); - //! Print GPS status - std::ostream& print0x0009(std::ostream& os, const Value& value, const ExifData*); - //! Print GPS measurement mode - std::ostream& print0x000a(std::ostream& os, const Value& value, const ExifData*); - //! Print GPS speed ref - std::ostream& print0x000c(std::ostream& os, const Value& value, const ExifData*); - //! Print GPS destination distance ref - std::ostream& print0x0019(std::ostream& os, const Value& value, const ExifData*); - //! Print GPS differential correction - std::ostream& print0x001e(std::ostream& os, const Value& value, const ExifData*); - //! Print orientation - std::ostream& print0x0112(std::ostream& os, const Value& value, const ExifData*); - //! Print YCbCrPositioning - std::ostream& print0x0213(std::ostream& os, const Value& value, const ExifData*); - //! Print the copyright - std::ostream& print0x8298(std::ostream& os, const Value& value, const ExifData*); - //! Print the exposure time - std::ostream& print0x829a(std::ostream& os, const Value& value, const ExifData*); - //! Print the f-number - std::ostream& print0x829d(std::ostream& os, const Value& value, const ExifData*); - //! Print exposure program - std::ostream& print0x8822(std::ostream& os, const Value& value, const ExifData*); - //! Print ISO speed ratings - std::ostream& print0x8827(std::ostream& os, const Value& value, const ExifData*); - //! Print components configuration specific to compressed data - std::ostream& print0x9101(std::ostream& os, const Value& value, const ExifData*); - //! Print exposure time converted from APEX shutter speed value - std::ostream& print0x9201(std::ostream& os, const Value& value, const ExifData*); - //! Print f-number converted from APEX aperture value - std::ostream& print0x9202(std::ostream& os, const Value& value, const ExifData*); - //! Print the exposure bias value - std::ostream& print0x9204(std::ostream& os, const Value& value, const ExifData*); - //! Print the subject distance - std::ostream& print0x9206(std::ostream& os, const Value& value, const ExifData*); - //! Print metering mode - std::ostream& print0x9207(std::ostream& os, const Value& value, const ExifData*); - //! Print light source - std::ostream& print0x9208(std::ostream& os, const Value& value, const ExifData*); - //! Print the actual focal length of the lens - std::ostream& print0x920a(std::ostream& os, const Value& value, const ExifData*); - //! Print the user comment - std::ostream& print0x9286(std::ostream& os, const Value& value, const ExifData*); - //! Print color space - std::ostream& print0xa001(std::ostream& os, const Value& value, const ExifData*); - //! Print sensing method - std::ostream& print0xa217(std::ostream& os, const Value& value, const ExifData*); - //! Print file source - std::ostream& print0xa300(std::ostream& os, const Value& value, const ExifData*); - //! Print scene type - std::ostream& print0xa301(std::ostream& os, const Value& value, const ExifData*); - //! Print custom rendered - std::ostream& print0xa401(std::ostream& os, const Value& value, const ExifData*); - //! Print exposure mode - std::ostream& print0xa402(std::ostream& os, const Value& value, const ExifData*); - //! Print white balance - std::ostream& print0xa403(std::ostream& os, const Value& value, const ExifData*); - //! Print digital zoom ratio - std::ostream& print0xa404(std::ostream& os, const Value& value, const ExifData*); - //! Print 35mm equivalent focal length - std::ostream& print0xa405(std::ostream& os, const Value& value, const ExifData*); - //! Print scene capture type - std::ostream& print0xa406(std::ostream& os, const Value& value, const ExifData*); - //! Print gain control - std::ostream& print0xa407(std::ostream& os, const Value& value, const ExifData*); - //! Print saturation - std::ostream& print0xa409(std::ostream& os, const Value& value, const ExifData*); - //! Print subject distance range - std::ostream& print0xa40c(std::ostream& os, const Value& value, const ExifData*); - //! Print GPS direction ref - std::ostream& printGPSDirRef(std::ostream& os, const Value& value, const ExifData*); - //! Print contrast, sharpness (normal, soft, hard) - std::ostream& printNormalSoftHard(std::ostream& os, const Value& value, const ExifData*); - //! Print any version packed in 4 Bytes format : major major minor minor - std::ostream& printExifVersion(std::ostream& os, const Value& value, const ExifData*); - //! Print any version encoded in the ASCII string majormajorminorminor - std::ostream& printXmpVersion(std::ostream& os, const Value& value, const ExifData*); - //! Print a date following the format YYYY-MM-DDTHH:MM:SSZ - std::ostream& printXmpDate(std::ostream& os, const Value& value, const ExifData*); - //@} - - //! Calculate F number from an APEX aperture value - float fnumber(float apertureValue); - - //! Calculate the exposure time from an APEX shutter speed value - URational exposureTime(float shutterSpeedValue); - -}} // namespace Internal, Exiv2 - -#endif // #ifndef TAGS_INT_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/tgaimage.cpp b/platform/win32/msvc/external/exiv2/src/tgaimage.cpp deleted file mode 100644 index bff671ec0a0..00000000000 --- a/platform/win32/msvc/external/exiv2/src/tgaimage.cpp +++ /dev/null @@ -1,182 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: tgaimage.cpp - Version: $Rev: 2681 $ - Author(s): Marco Piovanelli, Ovolab (marco) - History: 05-Mar-2007, marco: created - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: tgaimage.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -//#define DEBUG 1 - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif -#include "tgaimage.hpp" -#include "image.hpp" -#include "basicio.hpp" -#include "error.hpp" -#include "futils.hpp" - -// + standard includes -#include -#include -#include - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - TgaImage::TgaImage(BasicIo::AutoPtr io) - : Image(ImageType::tga, mdNone, io) - { - } // TgaImage::TgaImage - - std::string TgaImage::mimeType() const - { - return "image/targa"; - } - - void TgaImage::setExifData(const ExifData& /*exifData*/) - { - // Todo: implement me! - throw(Error(32, "Exif metadata", "TGA")); - } - - void TgaImage::setIptcData(const IptcData& /*iptcData*/) - { - // Todo: implement me! - throw(Error(32, "IPTC metadata", "TGA")); - } - - void TgaImage::setComment(const std::string& /*comment*/) - { - // not supported - throw(Error(32, "Image comment", "TGA")); - } - - void TgaImage::readMetadata() - { -#ifdef DEBUG - std::cerr << "Exiv2::TgaImage::readMetadata: Reading TARGA file " << io_->path() << "\n"; -#endif - if (io_->open() != 0) - { - throw Error(9, io_->path(), strError()); - } - IoCloser closer(*io_); - // Ensure that this is the correct image type - if (!isTgaType(*io_, false)) - { - if (io_->error() || io_->eof()) throw Error(14); - throw Error(3, "TGA"); - } - clearMetadata(); - - /* - The TARGA header goes as follows -- all numbers are in little-endian byte order: - - offset length name description - ====== ======= ======================= =========== - 0 1 byte ID length length of image ID (0 to 255) - 1 1 byte color map type 0 = no color map; 1 = color map included - 2 1 byte image type 0 = no image; - 1 = uncompressed color-mapped; - 2 = uncompressed true-color; - 3 = uncompressed black-and-white; - 9 = RLE-encoded color mapped; - 10 = RLE-encoded true-color; - 11 = RLE-encoded black-and-white - 3 5 bytes color map specification - 8 2 bytes x-origin of image - 10 2 bytes y-origin of image - 12 2 bytes image width - 14 2 bytes image height - 16 1 byte pixel depth - 17 1 byte image descriptor - */ - byte buf[18]; - if (io_->read(buf, sizeof(buf)) == sizeof(buf)) - { - pixelWidth_ = getShort(buf + 12, littleEndian); - pixelHeight_ = getShort(buf + 14, littleEndian); - } - } // TgaImage::readMetadata - - void TgaImage::writeMetadata() - { - // Todo: implement me! - throw(Error(31, "TGA")); - } // TgaImage::writeMetadata - - // ************************************************************************* - // free functions - Image::AutoPtr newTgaInstance(BasicIo::AutoPtr io, bool /*create*/) - { - Image::AutoPtr image(new TgaImage(io)); - if (!image->good()) - { - image.reset(); - } - return image; - } - - bool isTgaType(BasicIo& iIo, bool /*advance*/) - { - // not all TARGA files have a signature string, so first just try to match the file name extension -#ifdef EXV_UNICODE_PATH - std::wstring wpath = iIo.wpath(); - if( wpath.rfind(EXV_WIDEN(".tga")) != std::wstring::npos - || wpath.rfind(EXV_WIDEN(".TGA")) != std::wstring::npos) { - return true; - } -#else - std::string path = iIo.path(); - if( path.rfind(".tga") != std::string::npos - || path.rfind(".TGA") != std::string::npos) { - return true; - } -#endif - byte buf[26]; - long curPos = iIo.tell(); - iIo.seek(-26, BasicIo::end); - if (iIo.error() || iIo.eof()) - { - return false; - } - iIo.read(buf, sizeof(buf)); - if (iIo.error()) - { - return false; - } - // some TARGA files, but not all, have a signature string at the end - bool matched = (memcmp(buf + 8, "TRUEVISION-XFILE", 16) == 0); - iIo.seek(curPos, BasicIo::beg); - return matched; - } -} // namespace Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/tgaimage.hpp b/platform/win32/msvc/external/exiv2/src/tgaimage.hpp deleted file mode 100644 index 887b81f6863..00000000000 --- a/platform/win32/msvc/external/exiv2/src/tgaimage.hpp +++ /dev/null @@ -1,136 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file tgaimage.hpp - @brief Truevision TARGA v2 image, implemented using the following references: - Truevision TGA page on Wikipedia
- TGA(tm) File Format Specification - @version $Rev: 2681 $ - @author Marco Piovanelli, Ovolab (marco) - marco.piovanelli@pobox.com - @date 05-Mar-2007, marco: created - */ -#ifndef TGAIMAGE_HPP_ -#define TGAIMAGE_HPP_ - -// ***************************************************************************** -// included header files -#include "exif.hpp" -#include "iptc.hpp" -#include "image.hpp" -#include "types.hpp" - -// + standard includes -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class definitions - - // Add TARGA to the supported image formats - namespace ImageType { - const int tga = 13; //!< Truevision TARGA (tga) image type (see class TgaImage) - } - - /*! - @brief Class to access raw TARGA images. This is just a stub - we only - read width and height. - */ - class EXIV2API TgaImage : public Image { - //! @name NOT Implemented - //@{ - //! Copy constructor - TgaImage(const TgaImage& rhs); - //! Assignment operator - TgaImage& operator=(const TgaImage& rhs); - //@} - - public: - //! @name Creators - //@{ - /*! - @brief Constructor to open a Targa image. Since the - constructor can not return a result, callers should check the - good() method after object construction to determine success - or failure. - @param io An auto-pointer that owns a BasicIo instance used for - reading and writing image metadata. \b Important: The constructor - takes ownership of the passed in BasicIo instance through the - auto-pointer. Callers should not continue to use the BasicIo - instance after it is passed to this method. Use the Image::io() - method to get a temporary reference. - */ - TgaImage(BasicIo::AutoPtr io); - //@} - - //! @name Manipulators - //@{ - void readMetadata(); - /*! - @brief Todo: Write metadata back to the image. This method is not - yet(?) implemented. Calling it will throw an Error(31). - */ - void writeMetadata(); - /*! - @brief Todo: Not supported yet(?). Calling this function will throw - an instance of Error(32). - */ - void setExifData(const ExifData& exifData); - /*! - @brief Todo: Not supported yet(?). Calling this function will throw - an instance of Error(32). - */ - void setIptcData(const IptcData& iptcData); - /*! - @brief Not supported. Calling this function will throw an instance - of Error(32). - */ - void setComment(const std::string& comment); - //@} - - //! @name Accessors - //@{ - std::string mimeType() const; - //@} - - }; // class TgaImage - -// ***************************************************************************** -// template, inline and free functions - - // These could be static private functions on Image subclasses but then - // ImageFactory needs to be made a friend. - /*! - @brief Create a new TgaImage instance and return an auto-pointer to it. - Caller owns the returned object and the auto-pointer ensures that - it will be deleted. - */ - EXIV2API Image::AutoPtr newTgaInstance(BasicIo::AutoPtr io, bool create); - - //! Check if the file iIo is a Targa v2 image. - EXIV2API bool isTgaType(BasicIo& iIo, bool advance); - -} // namespace Exiv2 - -#endif // #ifndef TGAIMAGE_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/tiff-test.cpp b/platform/win32/msvc/external/exiv2/src/tiff-test.cpp deleted file mode 100644 index 0258207dfce..00000000000 --- a/platform/win32/msvc/external/exiv2/src/tiff-test.cpp +++ /dev/null @@ -1,76 +0,0 @@ -// ***************************************************************** -*- C++ -*- -// tiff-test.cpp, $Rev: 1512 $ -// TIFF writer tests. - -#include "tiffimage.hpp" -#include "exif.hpp" -#include "error.hpp" - -#include -#include - -/* - Tests: - + All types of components - + Makernotes - + Data entries, thumbnails - + Special use-cases - + IFD1 - + Multiple sub-IFDs - + Comment - + Other/unknown TIFF types - - - - */ - -using namespace Exiv2; - -void print(const ExifData& exifData); - -int main() -try { - BasicIo::AutoPtr io(new FileIo("image.tif")); - TiffImage tiffImage(io, false); - ExifData& exifData = tiffImage.exifData(); - exifData["Exif.Image.ImageWidth"] = uint32_t(42); - exifData["Exif.Image.ImageLength"] = 24; - exifData["Exif.Image.Model"] = "Model"; - exifData["Exif.Image.Make"] = "FujiFilm"; - exifData["Exif.Photo.0x0001"] = "Just for fun"; - exifData["Exif.Iop.RelatedImageFileFormat"] = "TIFF"; - exifData["Exif.Photo.InteroperabilityTag"] = uint32_t(132); // for non-intrusive writing - exifData["Exif.Image.ExifTag"] = uint32_t(89); // for non-intrusive writingti - exifData.setJpegThumbnail("exiv2-empty.jpg"); - // The setJpegThumbnail method sets this to 0. - //exifData["Exif.Thumbnail.JPEGInterchangeFormat"] = uint32_t(197); - print(exifData); - tiffImage.writeMetadata(); - return 0; -} -catch (const Error& e) { - std::cerr << e << "\n"; - return 1; -} - -void print(const ExifData& exifData) -{ - if (exifData.empty()) { - std::string error("No Exif data found in the file"); - throw Exiv2::Error(1, error); - } - Exiv2::ExifData::const_iterator end = exifData.end(); - for (Exiv2::ExifData::const_iterator i = exifData.begin(); i != end; ++i) { - std::cout << std::setw(44) << std::setfill(' ') << std::left - << i->key() << " " - << "0x" << std::setw(4) << std::setfill('0') << std::right - << std::hex << i->tag() << " " - << std::setw(9) << std::setfill(' ') << std::left - << i->typeName() << " " - << std::dec << std::setw(3) - << std::setfill(' ') << std::right - << i->count() << " " - << std::dec << i->value() - << "\n"; - } -} diff --git a/platform/win32/msvc/external/exiv2/src/tiffcomposite.cpp b/platform/win32/msvc/external/exiv2/src/tiffcomposite.cpp deleted file mode 100644 index 519b3b21dc4..00000000000 --- a/platform/win32/msvc/external/exiv2/src/tiffcomposite.cpp +++ /dev/null @@ -1,1911 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: tiffcomposite.cpp - Version: $Rev: 2699 $ - Author(s): Andreas Huggel (ahu) - History: 11-Apr-06, ahu: created - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: tiffcomposite.cpp 2699 2012-04-11 16:02:52Z ahuggel $") - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#include "tiffimage_int.hpp" -#include "tiffcomposite_int.hpp" -#include "tiffvisitor_int.hpp" -#include "makernote_int.hpp" -#include "value.hpp" -#include "error.hpp" - -// + standard includes -#include -#include -#include -#include -#include - -// ***************************************************************************** -namespace { - //! Add \em tobe - \em curr 0x00 filler bytes if necessary - uint32_t fillGap(Exiv2::Internal::IoWrapper& ioWrapper, uint32_t curr, uint32_t tobe); -} - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - namespace Internal { - - bool TiffMappingInfo::operator==(const TiffMappingInfo::Key& key) const - { - return ( 0 == strcmp("*", make_) - || 0 == strncmp(make_, key.m_.c_str(), strlen(make_))) - && (Tag::all == extendedTag_ || key.e_ == extendedTag_) - && key.g_ == group_; - } - - IoWrapper::IoWrapper(BasicIo& io, const byte* pHeader, long size, OffsetWriter* pow) - : io_(io), pHeader_(pHeader), size_(size), wroteHeader_(false), pow_(pow) - { - if (pHeader_ == 0 || size_ == 0) wroteHeader_ = true; - } - - long IoWrapper::write(const byte* pData, long wcount) - { - if (!wroteHeader_ && wcount > 0) { - io_.write(pHeader_, size_); - wroteHeader_ = true; - } - return io_.write(pData, wcount); - } - - int IoWrapper::putb(byte data) - { - if (!wroteHeader_) { - io_.write(pHeader_, size_); - wroteHeader_ = true; - } - return io_.putb(data); - } - - void IoWrapper::setTarget(int id, uint32_t target) - { - if (pow_) pow_->setTarget(OffsetWriter::OffsetId(id), target); - } - - TiffComponent::TiffComponent(uint16_t tag, IfdId group) - : tag_(tag), group_(group), pStart_(0) - { - } - - TiffEntryBase::TiffEntryBase(uint16_t tag, IfdId group, TiffType tiffType) - : TiffComponent(tag, group), - tiffType_(tiffType), count_(0), offset_(0), - size_(0), pData_(0), isMalloced_(false), idx_(0), - pValue_(0) - { - } - - TiffSubIfd::TiffSubIfd(uint16_t tag, IfdId group, IfdId newGroup) - : TiffEntryBase(tag, group, ttUnsignedLong), newGroup_(newGroup) - { - } - - TiffMnEntry::TiffMnEntry(uint16_t tag, IfdId group, IfdId mnGroup) - : TiffEntryBase(tag, group, ttUndefined), mnGroup_(mnGroup), mn_(0) - { - } - - TiffIfdMakernote::TiffIfdMakernote(uint16_t tag, - IfdId group, - IfdId mnGroup, - MnHeader* pHeader, - bool hasNext) - : TiffComponent(tag, group), - pHeader_(pHeader), - ifd_(tag, mnGroup, hasNext), - mnOffset_(0), - imageByteOrder_(invalidByteOrder) - { - } - - TiffBinaryArray::TiffBinaryArray(uint16_t tag, - IfdId group, - const ArrayCfg* arrayCfg, - const ArrayDef* arrayDef, - int defSize) - : TiffEntryBase(tag, group, arrayCfg->elTiffType_), - cfgSelFct_(0), - arraySet_(0), - arrayCfg_(arrayCfg), - arrayDef_(arrayDef), - defSize_(defSize), - setSize_(0), - origData_(0), - origSize_(0), - pRoot_(0), - decoded_(false) - { - assert(arrayCfg != 0); - } - - TiffBinaryArray::TiffBinaryArray(uint16_t tag, - IfdId group, - const ArraySet* arraySet, - int setSize, - CfgSelFct cfgSelFct) - : TiffEntryBase(tag, group), // Todo: Does it make a difference that there is no type? - cfgSelFct_(cfgSelFct), - arraySet_(arraySet), - arrayCfg_(0), - arrayDef_(0), - defSize_(0), - setSize_(setSize), - origData_(0), - origSize_(0), - pRoot_(0), - decoded_(false) - { - // We'll figure out the correct cfg later - assert(cfgSelFct != 0); - assert(arraySet_ != 0); - } - - TiffBinaryElement::TiffBinaryElement(uint16_t tag, IfdId group) - : TiffEntryBase(tag, group) - { - } - - TiffComponent::~TiffComponent() - { - } - - TiffDirectory::~TiffDirectory() - { - for (Components::iterator i = components_.begin(); i != components_.end(); ++i) { - delete *i; - } - delete pNext_; - } - - TiffSubIfd::~TiffSubIfd() - { - for (Ifds::iterator i = ifds_.begin(); i != ifds_.end(); ++i) { - delete *i; - } - } - - TiffEntryBase::~TiffEntryBase() - { - if (isMalloced_) { - delete[] pData_; - } - delete pValue_; - } - - TiffEntry::~TiffEntry() - { - } - - TiffDataEntryBase::~TiffDataEntryBase() - { - } - - TiffDataEntry::~TiffDataEntry() - { - } - - TiffImageEntry::~TiffImageEntry() - { - } - - TiffSizeEntry::~TiffSizeEntry() - { - } - - TiffMnEntry::~TiffMnEntry() - { - delete mn_; - } - - TiffIfdMakernote::~TiffIfdMakernote() - { - delete pHeader_; - } - - TiffBinaryArray::~TiffBinaryArray() - { - for (Components::iterator i = elements_.begin(); i != elements_.end(); ++i) { - delete *i; - } - } - - TiffBinaryElement::~TiffBinaryElement() - { - } - - TiffEntryBase::TiffEntryBase(const TiffEntryBase& rhs) - : TiffComponent(rhs), - tiffType_(rhs.tiffType_), - count_(rhs.count_), - offset_(rhs.offset_), - size_(rhs.size_), - pData_(rhs.pData_), - isMalloced_(rhs.isMalloced_), - idx_(rhs.idx_), - pValue_(rhs.pValue_ ? rhs.pValue_->clone().release() : 0) - { - if (rhs.isMalloced_) { - pData_ = new byte[rhs.size_]; - memcpy(pData_, rhs.pData_, rhs.size_); - } - } - - TiffDirectory::TiffDirectory(const TiffDirectory& rhs) - : TiffComponent(rhs), - hasNext_(rhs.hasNext_), - pNext_(0) - { - } - - TiffSubIfd::TiffSubIfd(const TiffSubIfd& rhs) - : TiffEntryBase(rhs), - newGroup_(rhs.newGroup_) - { - } - - TiffBinaryArray::TiffBinaryArray(const TiffBinaryArray& rhs) - : TiffEntryBase(rhs), - cfgSelFct_(rhs.cfgSelFct_), - arraySet_(rhs.arraySet_), - arrayCfg_(rhs.arrayCfg_), - arrayDef_(rhs.arrayDef_), - defSize_(rhs.defSize_), - setSize_(rhs.setSize_), - origData_(rhs.origData_), - origSize_(rhs.origSize_), - pRoot_(rhs.pRoot_), - decoded_(false) - { - } - - TiffComponent::AutoPtr TiffComponent::clone() const - { - return AutoPtr(doClone()); - } - - TiffEntry* TiffEntry::doClone() const - { - return new TiffEntry(*this); - } - - TiffDataEntry* TiffDataEntry::doClone() const - { - return new TiffDataEntry(*this); - } - - TiffImageEntry* TiffImageEntry::doClone() const - { - return new TiffImageEntry(*this); - } - - TiffSizeEntry* TiffSizeEntry::doClone() const - { - return new TiffSizeEntry(*this); - } - - TiffDirectory* TiffDirectory::doClone() const - { - return new TiffDirectory(*this); - } - - TiffSubIfd* TiffSubIfd::doClone() const - { - return new TiffSubIfd(*this); - } - - TiffMnEntry* TiffMnEntry::doClone() const - { - assert(false); // Not implemented - return 0; - } - - TiffIfdMakernote* TiffIfdMakernote::doClone() const - { - assert(false); // Not implemented - return 0; - } - - TiffBinaryArray* TiffBinaryArray::doClone() const - { - return new TiffBinaryArray(*this); - } - - TiffBinaryElement* TiffBinaryElement::doClone() const - { - return new TiffBinaryElement(*this); - } - - int TiffComponent::idx() const - { - return 0; - } - - int TiffEntryBase::idx() const - { - return idx_; - } - - void TiffEntryBase::setData(DataBuf buf) - { - std::pair p = buf.release(); - setData(p.first, p.second); - isMalloced_ = true; - } - - void TiffEntryBase::setData(byte* pData, int32_t size) - { - if (isMalloced_) { - delete[] pData_; - } - pData_ = pData; - size_ = size; - if (pData_ == 0) size_ = 0; - } - - void TiffEntryBase::updateValue(Value::AutoPtr value, ByteOrder byteOrder) - { - if (value.get() == 0) return; - uint32_t newSize = value->size(); - if (newSize > size_) { - setData(DataBuf(newSize)); - } - memset(pData_, 0x0, size_); - size_ = value->copy(pData_, byteOrder); - assert(size_ == newSize); - setValue(value); - } // TiffEntryBase::updateValue - - void TiffEntryBase::setValue(Value::AutoPtr value) - { - if (value.get() == 0) return; - tiffType_ = toTiffType(value->typeId()); - count_ = value->count(); - delete pValue_; - pValue_ = value.release(); - } // TiffEntryBase::setValue - - void TiffDataEntry::setStrips(const Value* pSize, - const byte* pData, - uint32_t sizeData, - uint32_t baseOffset) - { - if (!pValue() || !pSize) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Directory " << groupName(group()) - << ", entry 0x" << std::setw(4) - << std::setfill('0') << std::hex << tag() - << ": Size or data offset value not set, ignoring them.\n"; -#endif - return; - } - if (pValue()->count() == 0) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Directory " << groupName(group()) - << ", entry 0x" << std::setw(4) - << std::setfill('0') << std::hex << tag() - << ": Data offset entry value is empty, ignoring it.\n"; -#endif - return; - } - if (pValue()->count() != pSize->count()) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Directory " << groupName(group()) - << ", entry 0x" << std::setw(4) - << std::setfill('0') << std::hex << tag() - << ": Size and data offset entries have different" - << " number of components, ignoring them.\n"; -#endif - return; - } - uint32_t size = 0; - for (int i = 0; i < pSize->count(); ++i) { - size += static_cast(pSize->toLong(i)); - } - uint32_t offset = static_cast(pValue()->toLong(0)); - // Todo: Remove limitation of JPEG writer: strips must be contiguous - // Until then we check: last offset + last size - first offset == size? - if ( static_cast(pValue()->toLong(pValue()->count()-1)) - + static_cast(pSize->toLong(pSize->count()-1)) - - offset != size) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Directory " << groupName(group()) - << ", entry 0x" << std::setw(4) - << std::setfill('0') << std::hex << tag() - << ": Data area is not contiguous, ignoring it.\n"; -#endif - return; - } - if ( offset > sizeData - || size > sizeData - || baseOffset + offset > sizeData - size) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Directory " << groupName(group()) - << ", entry 0x" << std::setw(4) - << std::setfill('0') << std::hex << tag() - << ": Data area exceeds data buffer, ignoring it.\n"; -#endif - return; - } - pDataArea_ = const_cast(pData) + baseOffset + offset; - sizeDataArea_ = size; - const_cast(pValue())->setDataArea(pDataArea_, sizeDataArea_); - } // TiffDataEntry::setStrips - - void TiffImageEntry::setStrips(const Value* pSize, - const byte* pData, - uint32_t sizeData, - uint32_t baseOffset) - { - if (!pValue() || !pSize) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Directory " << groupName(group()) - << ", entry 0x" << std::setw(4) - << std::setfill('0') << std::hex << tag() - << ": Size or data offset value not set, ignoring them.\n"; -#endif - return; - } - if (pValue()->count() != pSize->count()) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Directory " << groupName(group()) - << ", entry 0x" << std::setw(4) - << std::setfill('0') << std::hex << tag() - << ": Size and data offset entries have different" - << " number of components, ignoring them.\n"; -#endif - return; - } - for (int i = 0; i < pValue()->count(); ++i) { - const uint32_t offset = static_cast(pValue()->toLong(i)); - const byte* pStrip = pData + baseOffset + offset; - const uint32_t size = static_cast(pSize->toLong(i)); - - if ( offset > sizeData - || size > sizeData - || baseOffset + offset > sizeData - size) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Directory " << groupName(group()) - << ", entry 0x" << std::setw(4) - << std::setfill('0') << std::hex << tag() - << ": Strip " << std::dec << i - << " is outside of the data area; ignored.\n"; -#endif - } - else if (size != 0) { - strips_.push_back(std::make_pair(pStrip, size)); - } - } - } // TiffImageEntry::setStrips - - uint32_t TiffIfdMakernote::ifdOffset() const - { - if (!pHeader_) return 0; - return pHeader_->ifdOffset(); - } - - ByteOrder TiffIfdMakernote::byteOrder() const - { - assert(imageByteOrder_ != invalidByteOrder); - if (!pHeader_ || pHeader_->byteOrder() == invalidByteOrder) { - return imageByteOrder_; - } - return pHeader_->byteOrder(); - } - - uint32_t TiffIfdMakernote::mnOffset() const - { - return mnOffset_; - } - - uint32_t TiffIfdMakernote::baseOffset() const - { - if (!pHeader_) return 0; - return pHeader_->baseOffset(mnOffset_); - } - - bool TiffIfdMakernote::readHeader(const byte* pData, - uint32_t size, - ByteOrder byteOrder) - { - if (!pHeader_) return true; - return pHeader_->read(pData, size, byteOrder); - } - - void TiffIfdMakernote::setByteOrder(ByteOrder byteOrder) - { - if (pHeader_) pHeader_->setByteOrder(byteOrder); - } - - uint32_t TiffIfdMakernote::sizeHeader() const - { - if (!pHeader_) return 0; - return pHeader_->size(); - } - - uint32_t TiffIfdMakernote::writeHeader(IoWrapper& ioWrapper, ByteOrder byteOrder) const - { - if (!pHeader_) return 0; - return pHeader_->write(ioWrapper, byteOrder); - } - - uint32_t ArrayDef::size(uint16_t tag, IfdId group) const - { - TypeId typeId = toTypeId(tiffType_, tag, group); - return count_ * TypeInfo::typeSize(typeId); - } - - bool TiffBinaryArray::initialize(IfdId group) - { - if (arrayCfg_ != 0) return true; // Not a complex array or already initialized - - for (int idx = 0; idx < setSize_; ++idx) { - if (arraySet_[idx].cfg_.group_ == group) { - arrayCfg_ = &arraySet_[idx].cfg_; - arrayDef_ = arraySet_[idx].def_; - defSize_ = arraySet_[idx].defSize_; - return true; - } - } - return false; - } - - bool TiffBinaryArray::initialize(TiffComponent* const pRoot) - { - if (cfgSelFct_ == 0) return true; // Not a complex array - - int idx = cfgSelFct_(tag(), pData(), TiffEntryBase::doSize(), pRoot); - if (idx > -1) { - arrayCfg_ = &arraySet_[idx].cfg_; - arrayDef_ = arraySet_[idx].def_; - defSize_ = arraySet_[idx].defSize_; - } - return idx > -1; - } - - void TiffBinaryArray::iniOrigDataBuf() - { - origData_ = const_cast(pData()); - origSize_ = TiffEntryBase::doSize(); - } - - bool TiffBinaryArray::updOrigDataBuf(const byte* pData, uint32_t size) - { - assert(pData != 0); - - if (origSize_ != size) return false; - if (origData_ == pData) return true; - memcpy(origData_, pData, origSize_); - return true; - } - - uint32_t TiffBinaryArray::addElement(uint32_t idx, const ArrayDef& def) - { - uint16_t tag = static_cast(idx / cfg()->tagStep()); - int32_t sz = EXV_MIN(def.size(tag, cfg()->group_), TiffEntryBase::doSize() - idx); - TiffComponent::AutoPtr tc = TiffCreator::create(tag, cfg()->group_); - TiffBinaryElement* tp = dynamic_cast(tc.get()); - // The assertion typically fails if a component is not configured in - // the TIFF structure table (TiffCreator::tiffTreeStruct_) - assert(tp); - tp->setStart(pData() + idx); - tp->setData(const_cast(pData() + idx), sz); - tp->setElDef(def); - tp->setElByteOrder(cfg()->byteOrder_); - addChild(tc); - return sz; - } // TiffBinaryArray::addElement - - TiffComponent* TiffComponent::addPath(uint16_t tag, - TiffPath& tiffPath, - TiffComponent* const pRoot, - TiffComponent::AutoPtr object) - { - return doAddPath(tag, tiffPath, pRoot, object); - } // TiffComponent::addPath - - TiffComponent* TiffComponent::doAddPath(uint16_t /*tag*/, - TiffPath& /*tiffPath*/, - TiffComponent* const /*pRoot*/, - TiffComponent::AutoPtr /*object*/) - { - return this; - } // TiffComponent::doAddPath - - TiffComponent* TiffDirectory::doAddPath(uint16_t tag, - TiffPath& tiffPath, - TiffComponent* const pRoot, - TiffComponent::AutoPtr object) - { - assert(tiffPath.size() > 1); - tiffPath.pop(); - const TiffPathItem tpi = tiffPath.top(); - - TiffComponent* tc = 0; - // Try to use an existing component if there is still at least one - // composite tag on the stack or the tag to add is the MakerNote tag. - // This is used to prevent duplicate entries. Sub-IFDs also, but the > 1 - // condition takes care of them, see below. - if ( tiffPath.size() > 1 - || (tpi.extendedTag() == 0x927c && tpi.group() == exifId)) { - if (tpi.extendedTag() == Tag::next) { - tc = pNext_; - } - else { - for (Components::iterator i = components_.begin(); i != components_.end(); ++i) { - if ((*i)->tag() == tpi.tag() && (*i)->group() == tpi.group()) { - tc = *i; - break; - } - } - } - } - if (tc == 0) { - TiffComponent::AutoPtr atc; - if (tiffPath.size() == 1 && object.get() != 0) { - atc = object; - } - else { - atc = TiffCreator::create(tpi.extendedTag(), tpi.group()); - } - assert(atc.get() != 0); - - // Prevent dangling sub-IFD tags: Do not add a sub-IFD component without children. - // Todo: How to check before creating the component? - if (tiffPath.size() == 1 && dynamic_cast(atc.get()) != 0) return 0; - - if (tpi.extendedTag() == Tag::next) { - tc = this->addNext(atc); - } - else { - tc = this->addChild(atc); - } - } - return tc->addPath(tag, tiffPath, pRoot, object); - } // TiffDirectory::doAddPath - - TiffComponent* TiffSubIfd::doAddPath(uint16_t tag, - TiffPath& tiffPath, - TiffComponent* const pRoot, - TiffComponent::AutoPtr object) - { - assert(!tiffPath.empty()); - const TiffPathItem tpi1 = tiffPath.top(); - tiffPath.pop(); - if (tiffPath.empty()) { - // If the last element in the path is the sub-IFD tag itself we're done. - // But that shouldn't happen - see TiffDirectory::doAddPath - return this; - } - const TiffPathItem tpi2 = tiffPath.top(); - tiffPath.push(tpi1); - TiffComponent* tc = 0; - for (Ifds::iterator i = ifds_.begin(); i != ifds_.end(); ++i) { - if ((*i)->group() == tpi2.group()) { - tc = *i; - break; - } - } - if (tc == 0) { - if (tiffPath.size() == 1 && object.get() != 0) { - tc = addChild(object); - } - else { - TiffComponent::AutoPtr atc(new TiffDirectory(tpi1.tag(), tpi2.group())); - tc = addChild(atc); - } - setCount(static_cast(ifds_.size())); - } - return tc->addPath(tag, tiffPath, pRoot, object); - } // TiffSubIfd::doAddPath - - TiffComponent* TiffMnEntry::doAddPath(uint16_t tag, - TiffPath& tiffPath, - TiffComponent* const pRoot, - TiffComponent::AutoPtr object) - { - assert(!tiffPath.empty()); - const TiffPathItem tpi1 = tiffPath.top(); - tiffPath.pop(); - if (tiffPath.empty()) { - // If the last element in the path is the makernote tag itself we're done - return this; - } - const TiffPathItem tpi2 = tiffPath.top(); - tiffPath.push(tpi1); - if (mn_ == 0) { - mnGroup_ = tpi2.group(); - mn_ = TiffMnCreator::create(tpi1.tag(), tpi1.group(), mnGroup_); - assert(mn_); - } - return mn_->addPath(tag, tiffPath, pRoot, object); - } // TiffMnEntry::doAddPath - - TiffComponent* TiffIfdMakernote::doAddPath(uint16_t tag, - TiffPath& tiffPath, - TiffComponent* const pRoot, - TiffComponent::AutoPtr object) - { - return ifd_.addPath(tag, tiffPath, pRoot, object); - } - - TiffComponent* TiffBinaryArray::doAddPath(uint16_t tag, - TiffPath& tiffPath, - TiffComponent* const pRoot, - TiffComponent::AutoPtr object) - { - pRoot_ = pRoot; - if (tiffPath.size() == 1) { - // An unknown complex binary array has no children and acts like a standard TIFF entry - return this; - } - tiffPath.pop(); - const TiffPathItem tpi = tiffPath.top(); - // Initialize the binary array (if it is a complex array) - initialize(tpi.group()); - TiffComponent* tc = 0; - // Todo: Duplicates are not allowed! - // To allow duplicate entries, we only check if the new component already - // exists if there is still at least one composite tag on the stack - if (tiffPath.size() > 1) { - for (Components::iterator i = elements_.begin(); i != elements_.end(); ++i) { - if ((*i)->tag() == tpi.tag() && (*i)->group() == tpi.group()) { - tc = *i; - break; - } - } - } - if (tc == 0) { - TiffComponent::AutoPtr atc; - if (tiffPath.size() == 1 && object.get() != 0) { - atc = object; - } - else { - atc = TiffCreator::create(tpi.extendedTag(), tpi.group()); - } - assert(atc.get() != 0); - assert(tpi.extendedTag() != Tag::next); - tc = addChild(atc); - setCount(static_cast(elements_.size())); - } - return tc->addPath(tag, tiffPath, pRoot, object); - } // TiffBinaryArray::doAddPath - - TiffComponent* TiffComponent::addChild(TiffComponent::AutoPtr tiffComponent) - { - return doAddChild(tiffComponent); - } // TiffComponent::addChild - - TiffComponent* TiffComponent::doAddChild(AutoPtr /*tiffComponent*/) - { - return 0; - } // TiffComponent::doAddChild - - TiffComponent* TiffDirectory::doAddChild(TiffComponent::AutoPtr tiffComponent) - { - TiffComponent* tc = tiffComponent.release(); - components_.push_back(tc); - return tc; - } // TiffDirectory::doAddChild - - TiffComponent* TiffSubIfd::doAddChild(TiffComponent::AutoPtr tiffComponent) - { - TiffDirectory* d = dynamic_cast(tiffComponent.release()); - assert(d); - ifds_.push_back(d); - return d; - } // TiffSubIfd::doAddChild - - TiffComponent* TiffMnEntry::doAddChild(TiffComponent::AutoPtr tiffComponent) - { - TiffComponent* tc = 0; - if (mn_) { - tc = mn_->addChild(tiffComponent); - } - return tc; - } // TiffMnEntry::doAddChild - - TiffComponent* TiffIfdMakernote::doAddChild(TiffComponent::AutoPtr tiffComponent) - { - return ifd_.addChild(tiffComponent); - } - - TiffComponent* TiffBinaryArray::doAddChild(TiffComponent::AutoPtr tiffComponent) - { - TiffComponent* tc = tiffComponent.release(); - elements_.push_back(tc); - setDecoded(true); - return tc; - } // TiffBinaryArray::doAddChild - - TiffComponent* TiffComponent::addNext(TiffComponent::AutoPtr tiffComponent) - { - return doAddNext(tiffComponent); - } // TiffComponent::addNext - - TiffComponent* TiffComponent::doAddNext(AutoPtr /*tiffComponent*/) - { - return 0; - } // TiffComponent::doAddNext - - TiffComponent* TiffDirectory::doAddNext(TiffComponent::AutoPtr tiffComponent) - { - TiffComponent* tc = 0; - if (hasNext_) { - tc = tiffComponent.release(); - pNext_ = tc; - } - return tc; - } // TiffDirectory::doAddNext - - TiffComponent* TiffMnEntry::doAddNext(TiffComponent::AutoPtr tiffComponent) - { - TiffComponent* tc = 0; - if (mn_) { - tc = mn_->addNext(tiffComponent); - } - return tc; - } // TiffMnEntry::doAddNext - - TiffComponent* TiffIfdMakernote::doAddNext(TiffComponent::AutoPtr tiffComponent) - { - return ifd_.addNext(tiffComponent); - } - - void TiffComponent::accept(TiffVisitor& visitor) - { - if (visitor.go(TiffVisitor::geTraverse)) doAccept(visitor); // one for NVI :) - } // TiffComponent::accept - - void TiffEntry::doAccept(TiffVisitor& visitor) - { - visitor.visitEntry(this); - } // TiffEntry::doAccept - - void TiffDataEntry::doAccept(TiffVisitor& visitor) - { - visitor.visitDataEntry(this); - } // TiffDataEntry::doAccept - - void TiffImageEntry::doAccept(TiffVisitor& visitor) - { - visitor.visitImageEntry(this); - } // TiffImageEntry::doAccept - - void TiffSizeEntry::doAccept(TiffVisitor& visitor) - { - visitor.visitSizeEntry(this); - } // TiffSizeEntry::doAccept - - void TiffDirectory::doAccept(TiffVisitor& visitor) - { - visitor.visitDirectory(this); - for (Components::const_iterator i = components_.begin(); - visitor.go(TiffVisitor::geTraverse) && i != components_.end(); ++i) { - (*i)->accept(visitor); - } - if (visitor.go(TiffVisitor::geTraverse)) visitor.visitDirectoryNext(this); - if (pNext_) pNext_->accept(visitor); - if (visitor.go(TiffVisitor::geTraverse)) visitor.visitDirectoryEnd(this); - } // TiffDirectory::doAccept - - void TiffSubIfd::doAccept(TiffVisitor& visitor) - { - visitor.visitSubIfd(this); - for (Ifds::iterator i = ifds_.begin(); - visitor.go(TiffVisitor::geTraverse) && i != ifds_.end(); ++i) { - (*i)->accept(visitor); - } - } // TiffSubIfd::doAccept - - void TiffMnEntry::doAccept(TiffVisitor& visitor) - { - visitor.visitMnEntry(this); - if (mn_) mn_->accept(visitor); - if (!visitor.go(TiffVisitor::geKnownMakernote)) { - delete mn_; - mn_ = 0; - } - - } // TiffMnEntry::doAccept - - void TiffIfdMakernote::doAccept(TiffVisitor& visitor) - { - if (visitor.go(TiffVisitor::geTraverse)) visitor.visitIfdMakernote(this); - if (visitor.go(TiffVisitor::geKnownMakernote)) ifd_.accept(visitor); - if ( visitor.go(TiffVisitor::geKnownMakernote) - && visitor.go(TiffVisitor::geTraverse)) visitor.visitIfdMakernoteEnd(this); - } - - void TiffBinaryArray::doAccept(TiffVisitor& visitor) - { - visitor.visitBinaryArray(this); - for (Components::const_iterator i = elements_.begin(); - visitor.go(TiffVisitor::geTraverse) && i != elements_.end(); ++i) { - (*i)->accept(visitor); - } - if (visitor.go(TiffVisitor::geTraverse)) visitor.visitBinaryArrayEnd(this); - } // TiffBinaryArray::doAccept - - void TiffBinaryElement::doAccept(TiffVisitor& visitor) - { - visitor.visitBinaryElement(this); - } // TiffBinaryElement::doAccept - - void TiffEntryBase::encode(TiffEncoder& encoder, const Exifdatum* datum) - { - doEncode(encoder, datum); - } // TiffComponent::encode - - void TiffBinaryElement::doEncode(TiffEncoder& encoder, const Exifdatum* datum) - { - encoder.encodeBinaryElement(this, datum); - } // TiffBinaryElement::doEncode - - void TiffBinaryArray::doEncode(TiffEncoder& encoder, const Exifdatum* datum) - { - encoder.encodeBinaryArray(this, datum); - } // TiffBinaryArray::doEncode - - void TiffDataEntry::doEncode(TiffEncoder& encoder, const Exifdatum* datum) - { - encoder.encodeDataEntry(this, datum); - } // TiffDataEntry::doEncode - - void TiffEntry::doEncode(TiffEncoder& encoder, const Exifdatum* datum) - { - encoder.encodeTiffEntry(this, datum); - } // TiffEntry::doEncode - - void TiffImageEntry::doEncode(TiffEncoder& encoder, const Exifdatum* datum) - { - encoder.encodeImageEntry(this, datum); - } // TiffImageEntry::doEncode - - void TiffMnEntry::doEncode(TiffEncoder& encoder, const Exifdatum* datum) - { - encoder.encodeMnEntry(this, datum); - } // TiffMnEntry::doEncode - - void TiffSizeEntry::doEncode(TiffEncoder& encoder, const Exifdatum* datum) - { - encoder.encodeSizeEntry(this, datum); - } // TiffSizeEntry::doEncode - - void TiffSubIfd::doEncode(TiffEncoder& encoder, const Exifdatum* datum) - { - encoder.encodeSubIfd(this, datum); - } // TiffSubIfd::doEncode - - uint32_t TiffComponent::count() const - { - return doCount(); - } - - uint32_t TiffDirectory::doCount() const - { - return static_cast(components_.size()); - } - - uint32_t TiffEntryBase::doCount() const - { - return count_; - } - - uint32_t TiffMnEntry::doCount() const - { - if (!mn_) { - return TiffEntryBase::doCount(); - } - // Count of IFD makernote in tag Exif.Photo.MakerNote is the size of the - // Makernote in bytes - assert(tiffType() == ttUndefined || tiffType() == ttUnsignedByte || tiffType() == ttSignedByte); - return mn_->size(); - } - - uint32_t TiffIfdMakernote::doCount() const - { - return ifd_.count(); - } // TiffIfdMakernote::doCount - - uint32_t TiffBinaryArray::doCount() const - { - if (cfg() == 0 || !decoded()) return TiffEntryBase::doCount(); - - if (elements_.empty()) return 0; - - TypeId typeId = toTypeId(tiffType(), tag(), group()); - long typeSize = TypeInfo::typeSize(typeId); - if (0 == typeSize) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Directory " << groupName(group()) - << ", entry 0x" << std::setw(4) - << std::setfill('0') << std::hex << tag() - << " has unknown Exif (TIFF) type " << std::dec << tiffType() - << "; setting type size 1.\n"; -#endif - typeSize = 1; - } - - return static_cast(static_cast(size()) / typeSize + 0.5); - } - - uint32_t TiffBinaryElement::doCount() const - { - return elDef_.count_; - } - - uint32_t TiffComponent::write(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t valueIdx, - uint32_t dataIdx, - uint32_t& imageIdx) - { - return doWrite(ioWrapper, byteOrder, offset, valueIdx, dataIdx, imageIdx); - } // TiffComponent::write - - uint32_t TiffDirectory::doWrite(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t valueIdx, - uint32_t dataIdx, - uint32_t& imageIdx) - { - bool isRootDir = (imageIdx == uint32_t(-1)); - - // Number of components to write - const uint32_t compCount = count(); - if (compCount > 0xffff) throw Error(49, groupName(group())); - - // Size of next IFD, if any - uint32_t sizeNext = 0; - if (pNext_) sizeNext = pNext_->size(); - - // Nothing to do if there are no entries and the size of the next IFD is 0 - if (compCount == 0 && sizeNext == 0) return 0; - - // Remember the offset of the CR2 RAW IFD - if (group() == ifd3Id) { -#ifdef DEBUG - std::cerr << "Directory " << groupName(group()) << " offset is 0x" - << std::setw(8) << std::setfill('0') << std::hex << offset << std::dec - << "\n"; -#endif - ioWrapper.setTarget(OffsetWriter::cr2RawIfdOffset, offset); - } - // Size of all directory entries, without values and additional data - const uint32_t sizeDir = 2 + 12 * compCount + (hasNext_ ? 4 : 0); - - // TIFF standard requires IFD entries to be sorted in ascending order by tag. - // Not sorting makernote directories sometimes preserves them better. - if (group() < mnId) { - std::sort(components_.begin(), components_.end(), cmpTagLt); - } - // Size of IFD values and additional data - uint32_t sizeValue = 0; - uint32_t sizeData = 0; - for (Components::const_iterator i = components_.begin(); i != components_.end(); ++i) { - uint32_t sv = (*i)->size(); - if (sv > 4) { - sv += sv & 1; // Align value to word boundary - sizeValue += sv; - } - // Also add the size of data, but only if needed - if (isRootDir) { - uint32_t sd = (*i)->sizeData(); - sd += sd & 1; // Align data to word boundary - sizeData += sd; - } - } - - uint32_t idx = 0; // Current IFD index / bytes written - valueIdx = sizeDir; // Offset to the current IFD value - dataIdx = sizeDir + sizeValue; // Offset to the entry's data area - if (isRootDir) { // Absolute offset to the image data - imageIdx = offset + dataIdx + sizeData + sizeNext; - imageIdx += imageIdx & 1; // Align image data to word boundary - } - - // 1st: Write the IFD, a) Number of directory entries - byte buf[4]; - us2Data(buf, static_cast(compCount), byteOrder); - ioWrapper.write(buf, 2); - idx += 2; - // b) Directory entries - may contain pointers to the value or data - for (Components::const_iterator i = components_.begin(); i != components_.end(); ++i) { - idx += writeDirEntry(ioWrapper, byteOrder, offset, *i, valueIdx, dataIdx, imageIdx); - uint32_t sv = (*i)->size(); - if (sv > 4) { - sv += sv & 1; // Align value to word boundary - valueIdx += sv; - } - uint32_t sd = (*i)->sizeData(); - sd += sd & 1; // Align data to word boundary - dataIdx += sd; - } - // c) Pointer to the next IFD - if (hasNext_) { - memset(buf, 0x0, 4); - if (pNext_ && sizeNext) { - l2Data(buf, offset + dataIdx, byteOrder); - } - ioWrapper.write(buf, 4); - idx += 4; - } - assert(idx == sizeDir); - - // 2nd: Write IFD values - may contain pointers to additional data - valueIdx = sizeDir; - dataIdx = sizeDir + sizeValue; - for (Components::const_iterator i = components_.begin(); i != components_.end(); ++i) { - uint32_t sv = (*i)->size(); - if (sv > 4) { - uint32_t d = (*i)->write(ioWrapper, byteOrder, offset, valueIdx, dataIdx, imageIdx); - assert(sv == d); - if ((sv & 1) == 1) { - ioWrapper.putb(0x0); // Align value to word boundary - sv += 1; - } - idx += sv; - valueIdx += sv; - } - uint32_t sd = (*i)->sizeData(); - sd += sd & 1; // Align data to word boundary - dataIdx += sd; - } - assert(idx == sizeDir + sizeValue); - - // 3rd: Write data - may contain offsets too (eg sub-IFD) - dataIdx = sizeDir + sizeValue; - idx += writeData(ioWrapper, byteOrder, offset, dataIdx, imageIdx); - - // 4th: Write next-IFD - if (pNext_ && sizeNext) { - idx += pNext_->write(ioWrapper, byteOrder, offset + idx, uint32_t(-1), uint32_t(-1), imageIdx); - } - - // 5th, at the root directory level only: write image data - if (isRootDir) { - idx += writeImage(ioWrapper, byteOrder); - } - - return idx; - } // TiffDirectory::doWrite - - uint32_t TiffDirectory::writeDirEntry(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - TiffComponent* pTiffComponent, - uint32_t valueIdx, - uint32_t dataIdx, - uint32_t& imageIdx) const - { - assert(pTiffComponent); - TiffEntryBase* pDirEntry = dynamic_cast(pTiffComponent); - assert(pDirEntry); - byte buf[8]; - us2Data(buf, pDirEntry->tag(), byteOrder); - us2Data(buf + 2, pDirEntry->tiffType(), byteOrder); - ul2Data(buf + 4, pDirEntry->count(), byteOrder); - ioWrapper.write(buf, 8); - if (pDirEntry->size() > 4) { - pDirEntry->setOffset(offset + static_cast(valueIdx)); - l2Data(buf, pDirEntry->offset(), byteOrder); - ioWrapper.write(buf, 4); - } - else { - const uint32_t len = pDirEntry->write(ioWrapper, - byteOrder, - offset, - valueIdx, - dataIdx, - imageIdx); - assert(len <= 4); - if (len < 4) { - memset(buf, 0x0, 4); - ioWrapper.write(buf, 4 - len); - } - } - return 12; - } // TiffDirectory::writeDirEntry - - uint32_t TiffEntryBase::doWrite(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t /*offset*/, - uint32_t /*valueIdx*/, - uint32_t /*dataIdx*/, - uint32_t& /*imageIdx*/) - { - if (!pValue_) return 0; - - DataBuf buf(pValue_->size()); - pValue_->copy(buf.pData_, byteOrder); - ioWrapper.write(buf.pData_, buf.size_); - return buf.size_; - } // TiffEntryBase::doWrite - - uint32_t TiffEntryBase::writeOffset(byte* buf, - int32_t offset, - TiffType tiffType, - ByteOrder byteOrder) - { - uint32_t rc = 0; - switch(tiffType) { - case ttUnsignedShort: - case ttSignedShort: - if (static_cast(offset) > 0xffff) throw Error(26); - rc = s2Data(buf, static_cast(offset), byteOrder); - break; - case ttUnsignedLong: - case ttSignedLong: - rc = l2Data(buf, static_cast(offset), byteOrder); - break; - default: - throw Error(27); - break; - } - return rc; - } // TiffEntryBase::writeOffset - - uint32_t TiffDataEntry::doWrite(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t /*valueIdx*/, - uint32_t dataIdx, - uint32_t& /*imageIdx*/) - { - if (!pValue() || pValue()->count() == 0) return 0; - - DataBuf buf(pValue()->size()); - uint32_t idx = 0; - const long prevOffset = pValue()->toLong(0); - for (uint32_t i = 0; i < count(); ++i) { - const long newDataIdx = pValue()->toLong(i) - prevOffset - + static_cast(dataIdx); - idx += writeOffset(buf.pData_ + idx, - offset + newDataIdx, - tiffType(), - byteOrder); - } - ioWrapper.write(buf.pData_, buf.size_); - return buf.size_; - } // TiffDataEntry::doWrite - - uint32_t TiffImageEntry::doWrite(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t /*valueIdx*/, - uint32_t dataIdx, - uint32_t& imageIdx) - { - uint32_t o2 = imageIdx; - // For makernotes, write TIFF image data to the data area - if (group() > mnId) o2 = offset + dataIdx; -#ifdef DEBUG - std::cerr << "TiffImageEntry, Directory " << groupName(group()) - << ", entry 0x" << std::setw(4) - << std::setfill('0') << std::hex << tag() << std::dec - << ": Writing offset " << o2 << "\n"; -#endif - DataBuf buf(static_cast(strips_.size()) * 4); - memset(buf.pData_, 0x0, buf.size_); - uint32_t idx = 0; - for (Strips::const_iterator i = strips_.begin(); i != strips_.end(); ++i) { - idx += writeOffset(buf.pData_ + idx, o2, tiffType(), byteOrder); - o2 += i->second; - o2 += i->second & 1; // Align strip data to word boundary - if (!(group() > mnId)) { // Todo: FIX THIS!! SHOULDN'T USE > - imageIdx += i->second; - imageIdx += i->second & 1; // Align strip data to word boundary - } - } - ioWrapper.write(buf.pData_, buf.size_); - return buf.size_; - } // TiffImageEntry::doWrite - - uint32_t TiffSubIfd::doWrite(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t /*valueIdx*/, - uint32_t dataIdx, - uint32_t& /*imageIdx*/) - { - DataBuf buf(static_cast(ifds_.size()) * 4); - uint32_t idx = 0; - // Sort IFDs by group, needed if image data tags were copied first - std::sort(ifds_.begin(), ifds_.end(), cmpGroupLt); - for (Ifds::const_iterator i = ifds_.begin(); i != ifds_.end(); ++i) { - idx += writeOffset(buf.pData_ + idx, offset + dataIdx, tiffType(), byteOrder); - dataIdx += (*i)->size(); - } - ioWrapper.write(buf.pData_, buf.size_); - return buf.size_; - } // TiffSubIfd::doWrite - - uint32_t TiffMnEntry::doWrite(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t valueIdx, - uint32_t dataIdx, - uint32_t& imageIdx) - { - if (!mn_) { - return TiffEntryBase::doWrite(ioWrapper, byteOrder, offset, valueIdx, dataIdx, imageIdx); - } - return mn_->write(ioWrapper, byteOrder, offset + valueIdx, uint32_t(-1), uint32_t(-1), imageIdx); - } // TiffMnEntry::doWrite - - uint32_t TiffIfdMakernote::doWrite(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t /*valueIdx*/, - uint32_t /*dataIdx*/, - uint32_t& imageIdx) - { - mnOffset_ = offset; - setImageByteOrder(byteOrder); - uint32_t len = writeHeader(ioWrapper, this->byteOrder()); - len += ifd_.write(ioWrapper, this->byteOrder(), - offset - baseOffset() + len, - uint32_t(-1), uint32_t(-1), - imageIdx); - return len; - } // TiffIfdMakernote::doWrite - - uint32_t TiffBinaryArray::doWrite(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t valueIdx, - uint32_t dataIdx, - uint32_t& imageIdx) - { - if (cfg() == 0 || !decoded()) return TiffEntryBase::doWrite(ioWrapper, - byteOrder, - offset, - valueIdx, - dataIdx, - imageIdx); - if (cfg()->byteOrder_ != invalidByteOrder) byteOrder = cfg()->byteOrder_; - // Tags must be sorted in ascending order - std::sort(elements_.begin(), elements_.end(), cmpTagLt); - uint32_t idx = 0; - MemIo mio; - IoWrapper mioWrapper(mio, 0, 0, 0); - // Some array entries need to have the size in the first element - if (cfg()->hasSize_) { - byte buf[4]; - long elSize = TypeInfo::typeSize(toTypeId(cfg()->elTiffType_, 0, cfg()->group_)); - switch (elSize) { - case 2: - idx += us2Data(buf, size(), byteOrder); - break; - case 4: - idx += ul2Data(buf, size(), byteOrder); - break; - default: - assert(false); - } - mioWrapper.write(buf, elSize); - } - // write all tags of the array (Todo: assumes that there are no duplicates, need check) - for (Components::const_iterator i = elements_.begin(); i != elements_.end(); ++i) { - // Skip the manufactured tag, if it exists - if (cfg()->hasSize_ && (*i)->tag() == 0) continue; - uint32_t newIdx = (*i)->tag() * cfg()->tagStep(); - idx += fillGap(mioWrapper, idx, newIdx); - idx += (*i)->write(mioWrapper, byteOrder, offset + newIdx, valueIdx, dataIdx, imageIdx); - } - if (cfg()->hasFillers_ && def()) { - const ArrayDef* lastDef = def() + defSize() - 1; - uint16_t lastTag = static_cast(lastDef->idx_ / cfg()->tagStep()); - idx += fillGap(mioWrapper, idx, lastDef->idx_ + lastDef->size(lastTag, cfg()->group_)); - } - DataBuf buf; - if (cfg()->cryptFct_) { - buf = cfg()->cryptFct_(tag(), mio.mmap(), static_cast(mio.size()), pRoot_); - } - if (buf.size_ > 0) { - ioWrapper.write(buf.pData_, buf.size_); - } - else { - ioWrapper.write(mio.mmap(), static_cast(mio.size())); - } - - return idx; - } // TiffBinaryArray::doWrite - - uint32_t TiffBinaryElement::doWrite(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t /*offset*/, - uint32_t /*valueIdx*/, - uint32_t /*dataIdx*/, - uint32_t& /*imageIdx*/) - { - Value const* pv = pValue(); - if (!pv || pv->count() == 0) return 0; - DataBuf buf(pv->size()); - pv->copy(buf.pData_, byteOrder); - ioWrapper.write(buf.pData_, buf.size_); - return buf.size_; - } // TiffBinaryElement::doWrite - - uint32_t TiffComponent::writeData(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t dataIdx, - uint32_t& imageIdx) const - { - return doWriteData(ioWrapper, byteOrder, offset, dataIdx, imageIdx); - } // TiffComponent::writeData - - uint32_t TiffDirectory::doWriteData(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t dataIdx, - uint32_t& imageIdx) const - { - uint32_t len = 0; - for (Components::const_iterator i = components_.begin(); i != components_.end(); ++i) { - len += (*i)->writeData(ioWrapper, byteOrder, offset, dataIdx + len, imageIdx); - } - return len; - } // TiffDirectory::doWriteData - - uint32_t TiffEntryBase::doWriteData(IoWrapper&/*ioWrapper*/, - ByteOrder /*byteOrder*/, - int32_t /*offset*/, - uint32_t /*dataIdx*/, - uint32_t& /*imageIdx*/) const - { - return 0; - } // TiffEntryBase::doWriteData - - uint32_t TiffImageEntry::doWriteData(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t /*offset*/, - uint32_t /*dataIdx*/, - uint32_t& /*imageIdx*/) const - { - uint32_t len = 0; - // For makernotes, write TIFF image data to the data area - if (group() > mnId) { // Todo: FIX THIS HACK!!! - len = writeImage(ioWrapper, byteOrder); - } - return len; - } // TiffImageEntry::doWriteData - - uint32_t TiffDataEntry::doWriteData(IoWrapper& ioWrapper, - ByteOrder /*byteOrder*/, - int32_t /*offset*/, - uint32_t /*dataIdx*/, - uint32_t& /*imageIdx*/) const - { - if (!pValue()) return 0; - - DataBuf buf = pValue()->dataArea(); - ioWrapper.write(buf.pData_, buf.size_); - // Align data to word boundary - uint32_t align = (buf.size_ & 1); - if (align) ioWrapper.putb(0x0); - - return buf.size_ + align; - } // TiffDataEntry::doWriteData - - uint32_t TiffSubIfd::doWriteData(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t dataIdx, - uint32_t& imageIdx) const - { - uint32_t len = 0; - for (Ifds::const_iterator i = ifds_.begin(); i != ifds_.end(); ++i) { - len += (*i)->write(ioWrapper, byteOrder, offset + dataIdx + len, uint32_t(-1), uint32_t(-1), imageIdx); - } - // Align data to word boundary - uint32_t align = (len & 1); - if (align) ioWrapper.putb(0x0); - - return len + align; - } // TiffSubIfd::doWriteData - - uint32_t TiffIfdMakernote::doWriteData(IoWrapper&/*ioWrapper*/, - ByteOrder /*byteOrder*/, - int32_t /*offset*/, - uint32_t /*dataIdx*/, - uint32_t& /*imageIdx*/) const - { - assert(false); - return 0; - } // TiffIfdMakernote::doWriteData - - uint32_t TiffComponent::writeImage(IoWrapper& ioWrapper, - ByteOrder byteOrder) const - { - return doWriteImage(ioWrapper, byteOrder); - } // TiffComponent::writeImage - - uint32_t TiffDirectory::doWriteImage(IoWrapper& ioWrapper, - ByteOrder byteOrder) const - { - uint32_t len = 0; - TiffComponent* pSubIfd = 0; - for (Components::const_iterator i = components_.begin(); i != components_.end(); ++i) { - if ((*i)->tag() == 0x014a) { - // Hack: delay writing of sub-IFD image data to get the order correct - assert(pSubIfd == 0); - pSubIfd = *i; - continue; - } - len += (*i)->writeImage(ioWrapper, byteOrder); - } - if (pSubIfd) { - len += pSubIfd->writeImage(ioWrapper, byteOrder); - } - if (pNext_) { - len += pNext_->writeImage(ioWrapper, byteOrder); - } - return len; - } // TiffDirectory::doWriteImage - - uint32_t TiffEntryBase::doWriteImage(IoWrapper&/*ioWrapper*/, - ByteOrder /*byteOrder*/) const - { - return 0; - } // TiffEntryBase::doWriteImage - - uint32_t TiffSubIfd::doWriteImage(IoWrapper& ioWrapper, - ByteOrder byteOrder) const - { - uint32_t len = 0; - for (Ifds::const_iterator i = ifds_.begin(); i != ifds_.end(); ++i) { - len += (*i)->writeImage(ioWrapper, byteOrder); - } - return len; - } // TiffSubIfd::doWriteImage - - uint32_t TiffIfdMakernote::doWriteImage(IoWrapper& ioWrapper, - ByteOrder byteOrder) const - { - if (this->byteOrder() != invalidByteOrder) { - byteOrder = this->byteOrder(); - } - uint32_t len = ifd_.writeImage(ioWrapper, byteOrder); - return len; - } // TiffIfdMakernote::doWriteImage - - uint32_t TiffImageEntry::doWriteImage(IoWrapper& ioWrapper, - ByteOrder /*byteOrder*/) const - { - uint32_t len = pValue()->sizeDataArea(); - if (len > 0) { -#ifdef DEBUG - std::cerr << "TiffImageEntry, Directory " << groupName(group()) - << ", entry 0x" << std::setw(4) - << std::setfill('0') << std::hex << tag() << std::dec - << ": Writing data area, size = " << len; -#endif - DataBuf buf = pValue()->dataArea(); - ioWrapper.write(buf.pData_, buf.size_); - uint32_t align = len & 1; // Align image data to word boundary - if (align) ioWrapper.putb(0x0); - len += align; - } - else { -#ifdef DEBUG - std::cerr << "TiffImageEntry, Directory " << groupName(group()) - << ", entry 0x" << std::setw(4) - << std::setfill('0') << std::hex << tag() << std::dec - << ": Writing " << strips_.size() << " strips"; -#endif - len = 0; - for (Strips::const_iterator i = strips_.begin(); i != strips_.end(); ++i) { - ioWrapper.write(i->first, i->second); - len += i->second; - uint32_t align = i->second & 1; // Align strip data to word boundary - if (align) ioWrapper.putb(0x0); - len += align; - } - } -#ifdef DEBUG - std::cerr << ", len = " << len << " bytes\n"; -#endif - return len; - } // TiffImageEntry::doWriteImage - - uint32_t TiffComponent::size() const - { - return doSize(); - } // TiffComponent::size - - uint32_t TiffDirectory::doSize() const - { - uint32_t compCount = count(); - // Size of the directory, without values and additional data - uint32_t len = 2 + 12 * compCount + (hasNext_ ? 4 : 0); - // Size of IFD values and data - for (Components::const_iterator i = components_.begin(); i != components_.end(); ++i) { - uint32_t sv = (*i)->size(); - if (sv > 4) { - sv += sv & 1; // Align value to word boundary - len += sv; - } - uint32_t sd = (*i)->sizeData(); - sd += sd & 1; // Align data to word boundary - len += sd; - } - // Size of next-IFD, if any - uint32_t sizeNext = 0; - if (pNext_) { - sizeNext = pNext_->size(); - len += sizeNext; - } - // Reset size of IFD if it has no entries and no or empty next IFD. - if (compCount == 0 && sizeNext == 0) len = 0; - return len; - } // TiffDirectory::doSize - - uint32_t TiffEntryBase::doSize() const - { - return size_; - } // TiffEntryBase::doSize - - uint32_t TiffImageEntry::doSize() const - { - return static_cast(strips_.size()) * 4; - } // TiffImageEntry::doSize - - uint32_t TiffSubIfd::doSize() const - { - return static_cast(ifds_.size()) * 4; - } // TiffSubIfd::doSize - - uint32_t TiffMnEntry::doSize() const - { - if (!mn_) { - return TiffEntryBase::doSize(); - } - return mn_->size(); - } // TiffMnEntry::doSize - - uint32_t TiffIfdMakernote::doSize() const - { - return sizeHeader() + ifd_.size(); - } // TiffIfdMakernote::doSize - - uint32_t TiffBinaryArray::doSize() const - { - if (cfg() == 0 || !decoded()) return TiffEntryBase::doSize(); - - if (elements_.empty()) return 0; - - // Remaining assumptions: - // - array elements don't "overlap" - // - no duplicate tags in the array - uint32_t idx = 0; - uint32_t sz = cfg()->tagStep(); - for (Components::const_iterator i = elements_.begin(); i != elements_.end(); ++i) { - if ((*i)->tag() > idx) { - idx = (*i)->tag(); - sz = (*i)->size(); - } - } - idx = idx * cfg()->tagStep() + sz; - - if (cfg()->hasFillers_ && def()) { - const ArrayDef* lastDef = def() + defSize() - 1; - uint16_t lastTag = static_cast(lastDef->idx_ / cfg()->tagStep()); - idx = EXV_MAX(idx, lastDef->idx_ + lastDef->size(lastTag, cfg()->group_)); - } - return idx; - - } // TiffBinaryArray::doSize - - uint32_t TiffBinaryElement::doSize() const - { - if (!pValue()) return 0; - return pValue()->size(); - } // TiffBinaryElement::doSize - - uint32_t TiffComponent::sizeData() const - { - return doSizeData(); - } // TiffComponent::sizeData - - uint32_t TiffDirectory::doSizeData() const - { - assert(false); - return 0; - } // TiffDirectory::doSizeData - - uint32_t TiffEntryBase::doSizeData() const - { - return 0; - } // TiffEntryBase::doSizeData - - uint32_t TiffImageEntry::doSizeData() const - { - uint32_t len = 0; - // For makernotes, TIFF image data is written to the data area - if (group() > mnId) { // Todo: Fix this hack!! - len = sizeImage(); - } - return len; - } // TiffImageEntry::doSizeData - - uint32_t TiffDataEntry::doSizeData() const - { - if (!pValue()) return 0; - return pValue()->sizeDataArea(); - } // TiffDataEntry::doSizeData - - uint32_t TiffSubIfd::doSizeData() const - { - uint32_t len = 0; - for (Ifds::const_iterator i = ifds_.begin(); i != ifds_.end(); ++i) { - len += (*i)->size(); - } - return len; - } // TiffSubIfd::doSizeData - - uint32_t TiffIfdMakernote::doSizeData() const - { - assert(false); - return 0; - } // TiffIfdMakernote::doSizeData - - uint32_t TiffComponent::sizeImage() const - { - return doSizeImage(); - } // TiffComponent::sizeImage - - uint32_t TiffDirectory::doSizeImage() const - { - uint32_t len = 0; - for (Components::const_iterator i = components_.begin(); i != components_.end(); ++i) { - len += (*i)->sizeImage(); - } - if (pNext_) { - len += pNext_->sizeImage(); - } - return len; - } // TiffDirectory::doSizeImage - - uint32_t TiffSubIfd::doSizeImage() const - { - uint32_t len = 0; - for (Ifds::const_iterator i = ifds_.begin(); i != ifds_.end(); ++i) { - len += (*i)->sizeImage(); - } - return len; - } // TiffSubIfd::doSizeImage - - uint32_t TiffIfdMakernote::doSizeImage() const - { - return ifd_.sizeImage(); - } // TiffIfdMakernote::doSizeImage - - uint32_t TiffEntryBase::doSizeImage() const - { - return 0; - } // TiffEntryBase::doSizeImage - - uint32_t TiffImageEntry::doSizeImage() const - { - if (!pValue()) return 0; - uint32_t len = pValue()->sizeDataArea(); - if (len == 0) { - for (Strips::const_iterator i = strips_.begin(); i != strips_.end(); ++i) { - len += i->second; - } - } - return len; - } // TiffImageEntry::doSizeImage - - // ************************************************************************* - // free functions - TypeId toTypeId(TiffType tiffType, uint16_t tag, IfdId group) - { - TypeId ti = TypeId(tiffType); - // On the fly type conversion for Exif.Photo.UserComment - if (tag == 0x9286 && group == exifId && ti == undefined) { - ti = comment; - } - return ti; - } - - TiffType toTiffType(TypeId typeId) - { - if (static_cast(typeId) > 0xffff) { -#ifndef SUPPRESS_WARNINGS - EXV_ERROR << "'" << TypeInfo::typeName(typeId) - << "' is not a valid Exif (TIFF) type; using type '" - << TypeInfo::typeName(undefined) << "'.\n"; -#endif - return undefined; - } - return static_cast(typeId); - } - - bool cmpTagLt(TiffComponent const* lhs, TiffComponent const* rhs) - { - assert(lhs != 0); - assert(rhs != 0); - if (lhs->tag() != rhs->tag()) return lhs->tag() < rhs->tag(); - return lhs->idx() < rhs->idx(); - } - - bool cmpGroupLt(TiffComponent const* lhs, TiffComponent const* rhs) - { - assert(lhs != 0); - assert(rhs != 0); - return lhs->group() < rhs->group(); - } - - TiffComponent::AutoPtr newTiffEntry(uint16_t tag, IfdId group) - { - return TiffComponent::AutoPtr(new TiffEntry(tag, group)); - } - - TiffComponent::AutoPtr newTiffMnEntry(uint16_t tag, IfdId group) - { - return TiffComponent::AutoPtr(new TiffMnEntry(tag, group, mnId)); - } - - TiffComponent::AutoPtr newTiffBinaryElement(uint16_t tag, IfdId group) - { - return TiffComponent::AutoPtr(new TiffBinaryElement(tag, group)); - } - -}} // namespace Internal, Exiv2 - -// ***************************************************************************** -// local definitions -namespace { - uint32_t fillGap(Exiv2::Internal::IoWrapper& ioWrapper, uint32_t curr, uint32_t tobe) - { - if (curr < tobe) { - Exiv2::DataBuf buf(tobe - curr); - memset(buf.pData_, 0x0, buf.size_); - ioWrapper.write(buf.pData_, buf.size_); - return tobe - curr; - } - return 0; - - } // fillGap -} diff --git a/platform/win32/msvc/external/exiv2/src/tiffcomposite_int.hpp b/platform/win32/msvc/external/exiv2/src/tiffcomposite_int.hpp deleted file mode 100644 index e21cbb700c7..00000000000 --- a/platform/win32/msvc/external/exiv2/src/tiffcomposite_int.hpp +++ /dev/null @@ -1,1670 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file tiffcomposite_int.hpp - @brief Internal classes used in a TIFF composite structure - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 11-Apr-06, ahu: created - */ -#ifndef TIFFCOMPOSITE_INT_HPP_ -#define TIFFCOMPOSITE_INT_HPP_ - -// ***************************************************************************** -// included header files -#include "value.hpp" -#include "tifffwd_int.hpp" -#include "types.hpp" - -// + standard includes -#include -#include -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - - class BasicIo; - - namespace Internal { - -// ***************************************************************************** -// class definitions - - //! TIFF value type. - typedef uint16_t TiffType; - - const TiffType ttUnsignedByte = 1; //!< Exif BYTE type - const TiffType ttAsciiString = 2; //!< Exif ASCII type - const TiffType ttUnsignedShort = 3; //!< Exif SHORT type - const TiffType ttUnsignedLong = 4; //!< Exif LONG type - const TiffType ttUnsignedRational = 5; //!< Exif RATIONAL type - const TiffType ttSignedByte = 6; //!< Exif SBYTE type - const TiffType ttUndefined = 7; //!< Exif UNDEFINED type - const TiffType ttSignedShort = 8; //!< Exif SSHORT type - const TiffType ttSignedLong = 9; //!< Exif SLONG type - const TiffType ttSignedRational =10; //!< Exif SRATIONAL type - const TiffType ttTiffFloat =11; //!< TIFF FLOAT type - const TiffType ttTiffDouble =12; //!< TIFF DOUBLE type - const TiffType ttTiffIfd =13; //!< TIFF IFD type - - //! Convert the \em tiffType of a \em tag and \em group to an Exiv2 \em typeId. - TypeId toTypeId(TiffType tiffType, uint16_t tag, IfdId group); - //! Convert the %Exiv2 \em typeId to a TIFF value type. - TiffType toTiffType(TypeId typeId); - - /*! - Special TIFF tags for the use in TIFF structures only - */ - namespace Tag { - const uint32_t none = 0x10000; //!< Dummy tag - const uint32_t root = 0x20000; //!< Special tag: root IFD - const uint32_t next = 0x30000; //!< Special tag: next IFD - const uint32_t all = 0x40000; //!< Special tag: all tags in a group - const uint32_t pana = 0x80000; //!< Special tag: root IFD of Panasonic RAW images - } - - /*! - @brief A tupel consisting of extended Tag and group used as an item in - TIFF paths. - */ - class TiffPathItem { - public: - //! @name Creators - //@{ - //! Constructor - TiffPathItem(uint32_t extendedTag, IfdId group) - : extendedTag_(extendedTag), group_(group) {} - //@} - - //! @name Accessors - //@{ - //! Return the tag corresponding to the extended tag - uint16_t tag() const { return static_cast(extendedTag_ & 0xffff); } - //! Return the extended tag (32 bit so that it can contain special tags) - uint32_t extendedTag() const { return extendedTag_; } - //! Return the group - IfdId group() const { return group_; } - //@} - - private: - // DATA - uint32_t extendedTag_; - IfdId group_; - }; // class TiffPathItem - - /*! - @brief Simple IO wrapper to ensure that the header is only written if there is - any other data at all. - - The wrapper is initialized with an IO reference and a pointer to a TIFF header. - Subsequently the wrapper is used by all TIFF write methods. It takes care that - the TIFF header is written to the IO first before any other output and only if - there is any other data. - */ - class IoWrapper { - public: - //! @name Creators - //@{ - /*! - brief Constructor. - - The IO wrapper owns none of the objects passed in so the caller is - responsible to keep them alive. - */ - IoWrapper(BasicIo& io, const byte* pHeader, long size, OffsetWriter* pow); - //@} - - //! @name Manipulators - //@{ - /*! - @brief Wraps the corresponding BasicIo::write() method. - - Writes the TIFF header to the IO, if it hasn't been written yet, followed - by the data passed in the arguments. - */ - long write(const byte* pData, long wcount); - /*! - @brief Wraps the corresponding BasicIo::putb() method. - - Writes the TIFF header to the IO, if it hasn't been written yet, followed - by the data passed in the argument. - */ - int putb(byte data); - //! Wrapper for OffsetWriter::setTarget(), using an int instead of the enum to reduce include deps - void setTarget(int id, uint32_t target); - //@} - - private: - // DATA - BasicIo& io_; //! Reference for the IO instance. - const byte* pHeader_; //! Pointer to the header data. - long size_; //! Size of the header data. - bool wroteHeader_; //! Indicates if the header has been written. - OffsetWriter* pow_; //! Pointer to an offset-writer, if any, or 0 - }; // class IoWrapper - - /*! - @brief Interface class for components of a TIFF directory hierarchy - (Composite pattern). Both TIFF directories as well as entries - implement this interface. A component can be uniquely identified - by a tag, group tupel. This class is implemented as a NVI - (Non-Virtual Interface) and it has an interface for visitors - (Visitor pattern) to perform operations on all components. - */ - class TiffComponent { - public: - //! TiffComponent auto_ptr type - typedef std::auto_ptr AutoPtr; - //! Container type to hold all metadata - typedef std::vector Components; - - //! @name Creators - //@{ - //! Constructor - TiffComponent(uint16_t tag, IfdId group); - //! Virtual destructor. - virtual ~TiffComponent(); - //@} - - //! @name Manipulators - //@{ - /*! - @brief Add a TIFF entry \em tag to the component. Components on - the path to the entry are added if they don't exist yet. - - @param tag The tag of the new entry - @param tiffPath A path from the TIFF root element to a TIFF entry. - @param pRoot Pointer to the root component of the TIFF composite. - @param object TIFF component to add. If 0, the correct entry will be - created. - - @return A pointer to the newly added TIFF entry. - */ - TiffComponent* addPath(uint16_t tag, - TiffPath& tiffPath, - TiffComponent* const pRoot, - AutoPtr object =AutoPtr(0)); - /*! - @brief Add a child to the component. Default is to do nothing. - @param tiffComponent Auto pointer to the component to add. - @return Return a pointer to the newly added child element or 0. - */ - TiffComponent* addChild(AutoPtr tiffComponent); - /*! - @brief Add a "next" component to the component. Default is to do - nothing. - @param tiffComponent Auto pointer to the component to add. - @return Return a pointer to the newly added "next" element or 0. - */ - TiffComponent* addNext(AutoPtr tiffComponent); - /*! - @brief Interface to accept visitors (Visitor pattern). Visitors - can perform operations on all components of the composite. - - @param visitor The visitor. - */ - void accept(TiffVisitor& visitor); - /*! - @brief Set a pointer to the start of the binary representation of the - component in a memory buffer. The buffer must be allocated and - freed outside of this class. - */ - void setStart(const byte* pStart) { pStart_ = const_cast(pStart); } - /*! - @brief Write a TiffComponent to a binary image. - - @param ioWrapper IO wrapper to which the TiffComponent is written. - @param byteOrder Applicable byte order (little or big endian). - @param offset Offset from the start of the image (TIFF header) to - the component. - @param valueIdx Index of the component to be written relative to offset. - @param dataIdx Index of the data area of the component relative to offset. - @param imageIdx Index of the image data area relative to offset. - @return Number of bytes written to the IO wrapper including all - nested components. - @throw Error If the component cannot be written. - */ - uint32_t write(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t valueIdx, - uint32_t dataIdx, - uint32_t& imageIdx); - //@} - - //! @name Accessors - //@{ - //! Return the tag of this entry. - uint16_t tag() const { return tag_; } - //! Return the group id of this component - IfdId group() const { return group_; } - //! Return a pointer to the start of the binary representation of the component - byte* start() const { return pStart_; } - /*! - @brief Return an auto-pointer to a copy of itself (deep copy, but - without any children). The caller owns this copy and the - auto-pointer ensures that it will be deleted. - */ - AutoPtr clone() const; - /*! - @brief Write the IFD data of this component to a binary image. - Return the number of bytes written. Components derived from - TiffEntryBase implement this method if needed. - */ - uint32_t writeData(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t dataIdx, - uint32_t& imageIdx) const; - /*! - @brief Write the image data of this component to a binary image. - Return the number of bytes written. TIFF components implement - this method if needed. - */ - uint32_t writeImage(IoWrapper& ioWrapper, - ByteOrder byteOrder) const; - /*! - @brief Return the size in bytes of the IFD value of this component - when written to a binary image. - */ - uint32_t size() const; - /*! - @brief Return the number of components in this component. - */ - uint32_t count() const; - /*! - @brief Return the size in bytes of the IFD data of this component when - written to a binary image. This is a support function for - write(). Components derived from TiffEntryBase implement this - method corresponding to their implementation of writeData(). - */ - uint32_t sizeData() const; - /*! - @brief Return the size in bytes of the image data of this component - when written to a binary image. This is a support function for - write(). TIFF components implement this method corresponding to - their implementation of writeImage(). - */ - uint32_t sizeImage() const; - /*! - @brief Return the unique id of the entry in the image. - */ - // Todo: This is only implemented in TiffEntryBase. It is needed here so that - // we can sort components by tag and idx. Something is not quite right. - virtual int idx() const; - //@} - - protected: - //! @name Protected Manipulators - //@{ - //! Implements addPath(). The default implementation does nothing. - virtual TiffComponent* doAddPath(uint16_t tag, - TiffPath& tiffPath, - TiffComponent* const pRoot, - TiffComponent::AutoPtr object); - //! Implements addChild(). The default implementation does nothing. - virtual TiffComponent* doAddChild(AutoPtr tiffComponent); - //! Implements addNext(). The default implementation does nothing. - virtual TiffComponent* doAddNext(AutoPtr tiffComponent); - //! Implements accept(). - virtual void doAccept(TiffVisitor& visitor) =0; - //! Implements write(). - virtual uint32_t doWrite(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t valueIdx, - uint32_t dataIdx, - uint32_t& imageIdx) =0; - //@} - - //! @name Protected Accessors - //@{ - //! Internal virtual copy constructor, implements clone(). - virtual TiffComponent* doClone() const =0; - //! Implements writeData(). - virtual uint32_t doWriteData(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t dataIdx, - uint32_t& imageIdx) const =0; - //! Implements writeImage(). - virtual uint32_t doWriteImage(IoWrapper& ioWrapper, - ByteOrder byteOrder) const =0; - //! Implements size(). - virtual uint32_t doSize() const =0; - //! Implements count(). - virtual uint32_t doCount() const =0; - //! Implements sizeData(). - virtual uint32_t doSizeData() const =0; - //! Implements sizeImage(). - virtual uint32_t doSizeImage() const =0; - //@} - - private: - // DATA - uint16_t tag_; //!< Tag that identifies the component - IfdId group_; //!< Group id for this component - /*! - Pointer to the start of the binary representation of the component in - a memory buffer. The buffer is allocated and freed outside of this class. - */ - byte* pStart_; - - }; // class TiffComponent - - //! TIFF mapping table for functions to decode special cases - struct TiffMappingInfo { - struct Key; - /*! - @brief Compare a TiffMappingInfo with a TiffMappingInfo::Key. - The two are equal if TiffMappingInfo::make_ equals a substring - of the key of the same size. E.g., mapping info = "OLYMPUS", - key = "OLYMPUS OPTICAL CO.,LTD" (found in the image) match, - the extendedTag is Tag::all or equal to the extended tag of the - key, and the group is equal to that of the key. - */ - bool operator==(const Key& key) const; - //! Return the tag corresponding to the extended tag - uint16_t tag() const { return static_cast(extendedTag_ & 0xffff); } - - // DATA - const char* make_; //!< Camera make for which these mapping functions apply - uint32_t extendedTag_; //!< Tag (32 bit so that it can contain special tags) - IfdId group_; //!< Group that contains the tag - DecoderFct decoderFct_; //!< Decoder function for matching tags - EncoderFct encoderFct_; //!< Encoder function for matching tags - - }; // struct TiffMappingInfo - - //! Search key for TIFF mapping structures. - struct TiffMappingInfo::Key { - //! Constructor - Key(const std::string& m, uint32_t e, IfdId g) : m_(m), e_(e), g_(g) {} - std::string m_; //!< Camera make - uint32_t e_; //!< Extended tag - IfdId g_; //!< %Group - }; - - /*! - @brief This abstract base class provides the common functionality of an - IFD directory entry and defines an extended interface for derived - concrete entries, which allows access to the attributes of the - entry. - */ - class TiffEntryBase : public TiffComponent { - friend class TiffReader; - friend class TiffEncoder; - friend int selectNikonLd(TiffBinaryArray* const, TiffComponent* const); - public: - //! @name Creators - //@{ - //! Default constructor. - TiffEntryBase(uint16_t tag, IfdId group, TiffType tiffType =ttUndefined); - //! Virtual destructor. - virtual ~TiffEntryBase(); - //@} - - //! @name Manipulators - //@{ - /*! - @brief Encode a TIFF component from the metadatum provided and - information from the \em encoder as needed. - - Implemented as double-dispatch calls back to one of the specific - encoding functions at the \em encoder. - */ - void encode(TiffEncoder& encoder, const Exifdatum* datum); - //! Set the offset - void setOffset(int32_t offset) { offset_ = offset; } - //! Set pointer and size of the entry's data (not taking ownership of the data). - void setData(byte* pData, int32_t size); - //! Set the entry's data buffer, taking ownership of the data buffer passed in. - void setData(DataBuf buf); - /*! - @brief Update the value. Takes ownership of the pointer passed in. - - Update binary value data and call setValue(). - */ - void updateValue(Value::AutoPtr value, ByteOrder byteOrder); - /*! - @brief Set tag value. Takes ownership of the pointer passed in. - - Update type, count and the pointer to the value. - */ - void setValue(Value::AutoPtr value); - //@} - - //! @name Accessors - //@{ - //! Return the TIFF type - TiffType tiffType() const { return tiffType_; } - /*! - @brief Return the offset to the data area relative to the base - for the component (usually the start of the TIFF header) - */ - int32_t offset() const { return offset_; } - /*! - @brief Return the unique id of the entry in the image - */ - virtual int idx() const; - /*! - @brief Return a pointer to the binary representation of the - value of this component. - */ - const byte* pData() const { return pData_; } - //! Return a const pointer to the converted value of this component - const Value* pValue() const { return pValue_; } - //@} - - protected: - //! @name Protected Creators - //@{ - //! Copy constructor (used to implement clone()). - TiffEntryBase(const TiffEntryBase& rhs); - //@} - - //! @name Protected Manipulators - //@{ - //! Implements encode(). - virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum) =0; - //! Set the number of components in this entry - void setCount(uint32_t count) { count_ = count; } - //! Set the unique id of the entry in the image - void setIdx(int idx) { idx_ = idx; } - /*! - @brief Implements write(). Write the value of a standard TIFF entry to - the \em ioWrapper, return the number of bytes written. Only the - \em ioWrapper and \em byteOrder arguments are used. - */ - virtual uint32_t doWrite(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t valueIdx, - uint32_t dataIdx, - uint32_t& imageIdx); - //@} - - //! @name Protected Accessors - //@{ - //! Implements count(). - virtual uint32_t doCount() const; - /*! - @brief Implements writeData(). Standard TIFF entries have no data: - write nothing and return 0. - */ - virtual uint32_t doWriteData(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t dataIdx, - uint32_t& imageIdx) const; - /*! - @brief Implements writeImage(). Standard TIFF entries have no image data: - write nothing and return 0. - */ - virtual uint32_t doWriteImage(IoWrapper& ioWrapper, - ByteOrder byteOrder) const; - //! Implements size(). Return the size of a standard TIFF entry - virtual uint32_t doSize() const; - //! Implements sizeData(). Return 0. - virtual uint32_t doSizeData() const; - //! Implements sizeImage(). Return 0. - virtual uint32_t doSizeImage() const; - //@} - - //! Helper function to write an \em offset to a preallocated binary buffer - static uint32_t writeOffset(byte* buf, - int32_t offset, - TiffType tiffType, - ByteOrder byteOrder); - - private: - //! @name NOT implemented - //@{ - //! Assignment operator. - TiffEntryBase& operator=(const TiffEntryBase& rhs); - //@} - - // DATA - TiffType tiffType_; //!< Field TIFF type - uint32_t count_; //!< The number of values of the indicated type - int32_t offset_; //!< Offset to the data area - /*! - Size of the data buffer holding the value in bytes, there is no - minimum size. - */ - uint32_t size_; - byte* pData_; //!< Pointer to the data area - bool isMalloced_; //!< True if this entry owns the value data - int idx_; //!< Unique id of the entry in the image - Value* pValue_; //!< Converted data value - - }; // class TiffEntryBase - - /*! - @brief A standard TIFF IFD entry. - */ - class TiffEntry : public TiffEntryBase { - public: - //! @name Creators - //@{ - //! Constructor - TiffEntry(uint16_t tag, IfdId group) : TiffEntryBase(tag, group) {} - //! Virtual destructor. - virtual ~TiffEntry(); - //@} - - protected: - //! @name Manipulators - //@{ - virtual void doAccept(TiffVisitor& visitor); - virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum); - //@} - - //! @name Protected Accessors - //@{ - virtual TiffEntry* doClone() const; - //@} - - }; // class TiffEntry - - /*! - @brief Interface for a standard TIFF IFD entry consisting of a value - which is a set of offsets to a data area. The sizes of these "strips" - are provided in a related TiffSizeEntry, tag and group of which are - set in the constructor. The implementations of this interface differ - in whether the data areas are extracted to the higher level metadata - (TiffDataEntry) or not (TiffImageEntry). - */ - class TiffDataEntryBase : public TiffEntryBase { - public: - //! @name Creators - //@{ - //! Constructor - TiffDataEntryBase(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup) - : TiffEntryBase(tag, group), - szTag_(szTag), szGroup_(szGroup) {} - //! Virtual destructor. - virtual ~TiffDataEntryBase(); - //@} - - //! @name Manipulators - //@{ - /*! - @brief Set the data areas ("strips"). - - @param pSize Pointer to the Value holding the sizes corresponding - to this data entry. - @param pData Pointer to the data area. - @param sizeData Size of the data area. - @param baseOffset Base offset into the data area. - */ - virtual void setStrips(const Value* pSize, - const byte* pData, - uint32_t sizeData, - uint32_t baseOffset) =0; - //@} - - //! @name Accessors - //@{ - //! Return the group of the entry which has the size - uint16_t szTag() const { return szTag_; } - //! Return the group of the entry which has the size - IfdId szGroup() const { return szGroup_; } - //@} - - private: - // DATA - const uint16_t szTag_; //!< Tag of the entry with the size - const IfdId szGroup_; //!< Group of the entry with the size - - }; // class TiffDataEntryBase - - /*! - @brief A standard TIFF IFD entry consisting of a value which is an offset - to a data area and the data area. The size of the data area is - provided in a related TiffSizeEntry, tag and group of which are set - in the constructor. - - This component extracts the data areas ("strips") and makes them - available in the higher level metadata. It is used, e.g., for - \em Exif.Thumbnail.JPEGInterchangeFormat for which the size - is provided in \em Exif.Thumbnail.JPEGInterchangeFormatLength. - */ - class TiffDataEntry : public TiffDataEntryBase { - friend class TiffEncoder; - public: - //! @name Creators - //@{ - //! Constructor - TiffDataEntry(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup) - : TiffDataEntryBase(tag, group, szTag, szGroup), - pDataArea_(0), sizeDataArea_(0) {} - //! Virtual destructor. - virtual ~TiffDataEntry(); - //@} - - //! @name Manipulators - //@{ - virtual void setStrips(const Value* pSize, - const byte* pData, - uint32_t sizeData, - uint32_t baseOffset); - //@} - - protected: - //! @name Protected Manipulators - //@{ - virtual void doAccept(TiffVisitor& visitor); - virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum); - /*! - @brief Implements write(). Write pointers into the data area to the - \em ioWrapper, relative to the offsets in the value. Return the - number of bytes written. The \em valueIdx argument is not used. - - The number of components in the value determines how many offsets are - written. Set the first value to 0, the second to the size of the first - data area, etc. when creating a new data entry. Offsets will be adjusted - on write. The type of the value can only be signed or unsigned short or - long. - */ - virtual uint32_t doWrite(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t valueIdx, - uint32_t dataIdx, - uint32_t& imageIdx); - //@} - - //! @name Protected Accessors - //@{ - virtual TiffDataEntry* doClone() const; - /*! - @brief Implements writeData(). Write the data area to the \em ioWrapper. - Return the number of bytes written. - */ - virtual uint32_t doWriteData(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t dataIdx, - uint32_t& imageIdx) const; - // Using doWriteImage from base class - // Using doSize() from base class - //! Implements sizeData(). Return the size of the data area. - virtual uint32_t doSizeData() const; - // Using doSizeImage from base class - //@} - - private: - // DATA - byte* pDataArea_; //!< Pointer to the data area (never alloc'd) - uint32_t sizeDataArea_; //!< Size of the data area - - }; // class TiffDataEntry - - /*! - @brief A standard TIFF IFD entry consisting of a value which is an array - of offsets to image data areas. The sizes of the image data areas are - provided in a related TiffSizeEntry, tag and group of which are set - in the constructor. - - The data is not extracted into the higher level metadata tags, it is - only copied to the target image when the image is written. - This component is used, e.g., for - \em Exif.Image.StripOffsets for which the sizes are provided in - \em Exif.Image.StripByteCounts. - */ - class TiffImageEntry : public TiffDataEntryBase { - friend class TiffEncoder; - public: - //! @name Creators - //@{ - //! Constructor - TiffImageEntry(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup) - : TiffDataEntryBase(tag, group, szTag, szGroup) {} - //! Virtual destructor. - virtual ~TiffImageEntry(); - //@} - - //! @name Manipulators - //@{ - virtual void setStrips(const Value* pSize, - const byte* pData, - uint32_t sizeData, - uint32_t baseOffset); - //@} - - protected: - //! @name Protected Manipulators - //@{ - virtual void doAccept(TiffVisitor& visitor); - virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum); - /*! - @brief Implements write(). Write pointers into the image data area to the - \em ioWrapper. Return the number of bytes written. The \em valueIdx - and \em dataIdx arguments are not used. - */ - virtual uint32_t doWrite(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t valueIdx, - uint32_t dataIdx, - uint32_t& imageIdx); - //@} - - //! @name Protected Accessors - //@{ - virtual TiffImageEntry* doClone() const; - /*! - @brief Implements writeData(). Write the image data area to the \em ioWrapper. - Return the number of bytes written. - - This function writes the image data to the data area of the current - directory. It is used for TIFF image entries in the makernote (large - preview images) so that the image data remains in the makernote IFD. - */ - virtual uint32_t doWriteData(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t dataIdx, - uint32_t& imageIdx) const; - /*! - @brief Implements writeImage(). Write the image data area to the \em ioWrapper. - Return the number of bytes written. - */ - virtual uint32_t doWriteImage(IoWrapper& ioWrapper, - ByteOrder byteOrder) const; - //! Implements size(). Return the size of the strip pointers. - virtual uint32_t doSize() const; - //! Implements sizeData(). Return the size of the image data area. - virtual uint32_t doSizeData() const; - //! Implements sizeImage(). Return the size of the image data area. - virtual uint32_t doSizeImage() const; - //@} - - private: - //! Pointers to the image data (strips) and their sizes. - typedef std::vector > Strips; - - // DATA - Strips strips_; //!< Image strips data (never alloc'd) and sizes - - }; // class TiffImageEntry - - /*! - @brief A TIFF IFD entry containing the size of a data area of a related - TiffDataEntry. This component is used, e.g. for - \em Exif.Thumbnail.JPEGInterchangeFormatLength, which contains the - size of \em Exif.Thumbnail.JPEGInterchangeFormat. - */ - class TiffSizeEntry : public TiffEntryBase { - public: - //! @name Creators - //@{ - //! Constructor - TiffSizeEntry(uint16_t tag, IfdId group, uint16_t dtTag, IfdId dtGroup) - : TiffEntryBase(tag, group), dtTag_(dtTag), dtGroup_(dtGroup) {} - //! Virtual destructor. - virtual ~TiffSizeEntry(); - //@} - - //! @name Accessors - //@{ - //! Return the group of the related entry which has the data area - uint16_t dtTag() const { return dtTag_; } - //! Return the group of the related entry which has the data area - IfdId dtGroup() const { return dtGroup_; } - //@} - - protected: - //! @name Protected Manipulators - //@{ - virtual void doAccept(TiffVisitor& visitor); - virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum); - //@} - - //! @name Protected Accessors - //@{ - virtual TiffSizeEntry* doClone() const; - //@} - - private: - // DATA - const uint16_t dtTag_; //!< Tag of the entry with the data area - const IfdId dtGroup_; //!< Group of the entry with the data area - - }; // class TiffSizeEntry - - /*! - @brief This class models a TIFF directory (%Ifd). It is a composite - component of the TIFF tree. - */ - class TiffDirectory : public TiffComponent { - friend class TiffEncoder; - public: - //! @name Creators - //@{ - //! Default constructor - TiffDirectory(uint16_t tag, IfdId group, bool hasNext =true) - : TiffComponent(tag, group), hasNext_(hasNext), pNext_(0) {} - //! Virtual destructor - virtual ~TiffDirectory(); - //@} - - //! @name Accessors - //@{ - //! Return true if the directory has a next pointer - bool hasNext() const { return hasNext_; } - //@} - - protected: - //! @name Protected Creators - //@{ - //! Copy constructor (used to implement clone()). - TiffDirectory(const TiffDirectory& rhs); - //@} - - //! @name Protected Manipulators - //@{ - virtual TiffComponent* doAddPath(uint16_t tag, - TiffPath& tiffPath, - TiffComponent* const pRoot, - TiffComponent::AutoPtr object); - virtual TiffComponent* doAddChild(TiffComponent::AutoPtr tiffComponent); - virtual TiffComponent* doAddNext(TiffComponent::AutoPtr tiffComponent); - virtual void doAccept(TiffVisitor& visitor); - /*! - @brief Implements write(). Write the TIFF directory, values and - additional data, including the next-IFD, if any, to the - \em ioWrapper, return the number of bytes written. - */ - virtual uint32_t doWrite(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t valueIdx, - uint32_t dataIdx, - uint32_t& imageIdx); - //@} - - //! @name Protected Accessors - //@{ - virtual TiffDirectory* doClone() const; - /*! - @brief This class does not really implement writeData(), it only has - write(). This method must not be called; it commits suicide. - */ - virtual uint32_t doWriteData(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t dataIdx, - uint32_t& imageIdx) const; - /*! - @brief Implements writeImage(). Write the image data of the TIFF - directory to the \em ioWrapper by forwarding the call to each - component as well as the next-IFD, if there is any. Return the - number of bytes written. - */ - virtual uint32_t doWriteImage(IoWrapper& ioWrapper, - ByteOrder byteOrder) const; - /*! - @brief Implements size(). Return the size of the TIFF directory, - values and additional data, including the next-IFD, if any. - */ - virtual uint32_t doSize() const; - /*! - @brief Implements count(). Return the number of entries in the TIFF - directory. Does not count entries which are marked as deleted. - */ - virtual uint32_t doCount() const; - /*! - @brief This class does not really implement sizeData(), it only has - size(). This method must not be called; it commits suicide. - */ - virtual uint32_t doSizeData() const; - /*! - @brief Implements sizeImage(). Return the sum of the image sizes of - all components plus that of the next-IFD, if there is any. - */ - virtual uint32_t doSizeImage() const; - //@} - - private: - //! @name NOT implemented - //@{ - //! Assignment operator. - TiffDirectory& operator=(const TiffDirectory& rhs); - //@} - - //! @name Private Accessors - //@{ - //! Write a binary directory entry for a TIFF component. - uint32_t writeDirEntry(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - TiffComponent* pTiffComponent, - uint32_t valueIdx, - uint32_t dataIdx, - uint32_t& imageIdx) const; - //@} - - private: - // DATA - Components components_; //!< List of components in this directory - const bool hasNext_; //!< True if the directory has a next pointer - TiffComponent* pNext_; //!< Pointer to the next IFD - - }; // class TiffDirectory - - /*! - @brief This class models a TIFF sub-directory (sub-IFD). A sub-IFD - is an entry with one or more values that are pointers to IFD - structures containing an IFD. The TIFF standard defines - some important tags to be sub-IFDs, including the %Exif and - GPS tags. - */ - class TiffSubIfd : public TiffEntryBase { - friend class TiffReader; - public: - //! @name Creators - //@{ - //! Default constructor - TiffSubIfd(uint16_t tag, IfdId group, IfdId newGroup); - //! Virtual destructor - virtual ~TiffSubIfd(); - //@} - - protected: - //! @name Protected Creators - //@{ - //! Copy constructor (used to implement clone()). - TiffSubIfd(const TiffSubIfd& rhs); - //@} - - //! @name Protected Manipulators - //@{ - virtual TiffComponent* doAddPath(uint16_t tag, - TiffPath& tiffPath, - TiffComponent* const pRoot, - TiffComponent::AutoPtr object); - virtual TiffComponent* doAddChild(TiffComponent::AutoPtr tiffComponent); - virtual void doAccept(TiffVisitor& visitor); - virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum); - /*! - @brief Implements write(). Write the sub-IFD pointers to the \em ioWrapper, - return the number of bytes written. The \em valueIdx and - \em imageIdx arguments are not used. - */ - virtual uint32_t doWrite(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t valueIdx, - uint32_t dataIdx, - uint32_t& imageIdx); - //@} - - //! @name Protected Accessors - //@{ - virtual TiffSubIfd* doClone() const; - /*! - @brief Implements writeData(). Write the sub-IFDs to the \em ioWrapper. - Return the number of bytes written. - */ - virtual uint32_t doWriteData(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t dataIdx, - uint32_t& imageIdx) const; - /*! - @brief Implements writeImage(). Write the image data of each sub-IFD to - the \em ioWrapper. Return the number of bytes written. - */ - virtual uint32_t doWriteImage(IoWrapper& ioWrapper, - ByteOrder byteOrder) const; - //! Implements size(). Return the size of the sub-Ifd pointers. - uint32_t doSize() const; - //! Implements sizeData(). Return the sum of the sizes of all sub-IFDs. - virtual uint32_t doSizeData() const; - //! Implements sizeImage(). Return the sum of the image sizes of all sub-IFDs. - virtual uint32_t doSizeImage() const; - //@} - - private: - //! @name NOT implemented - //@{ - //! Assignment operator. - TiffSubIfd& operator=(const TiffSubIfd& rhs); - //@} - - //! A collection of TIFF directories (IFDs) - typedef std::vector Ifds; - - // DATA - IfdId newGroup_; //!< Start of the range of group numbers for the sub-IFDs - Ifds ifds_; //!< The subdirectories - - }; // class TiffSubIfd - - /*! - @brief This class is the basis for Makernote support in TIFF. It contains - a pointer to a concrete Makernote. The TiffReader visitor has the - responsibility to create the correct Make/Model specific Makernote - for a particular TIFF file. Calls to child management methods are - forwarded to the concrete Makernote, if there is one. - */ - class TiffMnEntry : public TiffEntryBase { - friend class TiffReader; - friend class TiffDecoder; - friend class TiffEncoder; - public: - //! @name Creators - //@{ - //! Default constructor - TiffMnEntry(uint16_t tag, IfdId group, IfdId mnGroup); - //! Virtual destructor - virtual ~TiffMnEntry(); - //@} - - protected: - //! @name Protected Manipulators - //@{ - virtual TiffComponent* doAddPath(uint16_t tag, - TiffPath& tiffPath, - TiffComponent* const pRoot, - TiffComponent::AutoPtr object); - virtual TiffComponent* doAddChild(TiffComponent::AutoPtr tiffComponent); - virtual TiffComponent* doAddNext(TiffComponent::AutoPtr tiffComponent); - virtual void doAccept(TiffVisitor& visitor); - virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum); - /*! - @brief Implements write() by forwarding the call to the actual - concrete Makernote, if there is one. - */ - virtual uint32_t doWrite(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t valueIdx, - uint32_t dataIdx, - uint32_t& imageIdx); - //@} - - //! @name Protected Accessors - //@{ - virtual TiffMnEntry* doClone() const; - //! Implements count(). Return number of components in the entry. - virtual uint32_t doCount() const; - // Using doWriteData from base class - // Using doWriteImage from base class - /*! - @brief Implements size() by forwarding the call to the actual - concrete Makernote, if there is one. - */ - virtual uint32_t doSize() const; - // Using doSizeData from base class - // Using doSizeImage from base class - //@} - - private: - //! @name NOT implemented - //@{ - //! Copy constructor. - TiffMnEntry(const TiffMnEntry& rhs); - //! Assignment operator. - TiffMnEntry& operator=(const TiffMnEntry& rhs); - //@} - - // DATA - IfdId mnGroup_; //!< New group for concrete mn - TiffComponent* mn_; //!< The Makernote - - }; // class TiffMnEntry - - /*! - @brief Tiff IFD Makernote. This is a concrete class suitable for all - IFD makernotes. - - Contains a makernote header (which can be 0) and an IFD and - implements child mgmt functions to deal with the IFD entries. The - various makernote weirdnesses are taken care of in the makernote - header (and possibly in special purpose IFD entries). - */ - class TiffIfdMakernote : public TiffComponent { - friend class TiffReader; - public: - //! @name Creators - //@{ - //! Default constructor - TiffIfdMakernote(uint16_t tag, - IfdId group, - IfdId mnGroup, - MnHeader* pHeader, - bool hasNext =true); - //! Virtual destructor - virtual ~TiffIfdMakernote(); - //@} - - //! @name Manipulators - //@{ - /*! - @brief Read the header from a data buffer, return true if successful. - - The default implementation simply returns true. - */ - bool readHeader(const byte* pData, uint32_t size, ByteOrder byteOrder); - /*! - @brief Set the byte order for the makernote. - */ - void setByteOrder(ByteOrder byteOrder); - /*! - @brief Set the byte order used for the image. - */ - void setImageByteOrder(ByteOrder byteOrder) { imageByteOrder_ = byteOrder; } - //@} - - //! @name Accessors - //@{ - //! Return the size of the header in bytes. - uint32_t sizeHeader() const; - //! Write the header to a data buffer, return the number of bytes written. - uint32_t writeHeader(IoWrapper& ioWrapper, ByteOrder byteOrder) const; - /*! - @brief Return the offset to the makernote from the start of the - TIFF header. - */ - uint32_t mnOffset() const; - /*! - @brief Return the offset to the start of the Makernote IFD from - the start of the Makernote. - Returns 0 if there is no header. - */ - uint32_t ifdOffset() const; - /*! - @brief Return the byte order for the makernote. Requires the image - byte order to be set (setImageByteOrder()). Returns the byte - order for the image if there is no header or the byte order for - the header is \c invalidByteOrder. - */ - ByteOrder byteOrder() const; - /*! - @brief Return the byte order used for the image. - */ - ByteOrder imageByteOrder() const { return imageByteOrder_; } - /*! - @brief Return the base offset for use with the makernote IFD entries - relative to the start of the TIFF header. - Returns 0 if there is no header. - */ - uint32_t baseOffset() const; - //@} - - protected: - //! @name Protected Manipulators - //@{ - virtual TiffComponent* doAddPath(uint16_t tag, - TiffPath& tiffPath, - TiffComponent* const pRoot, - TiffComponent::AutoPtr object); - virtual TiffComponent* doAddChild(TiffComponent::AutoPtr tiffComponent); - virtual TiffComponent* doAddNext(TiffComponent::AutoPtr tiffComponent); - virtual void doAccept(TiffVisitor& visitor); - /*! - @brief Implements write(). Write the Makernote header, TIFF directory, - values and additional data to the \em ioWrapper, return the - number of bytes written. - */ - virtual uint32_t doWrite(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t valueIdx, - uint32_t dataIdx, - uint32_t& imageIdx); - //@} - - //! @name Protected Accessors - //@{ - virtual TiffIfdMakernote* doClone() const; - /*! - @brief This class does not really implement writeData(), it only has - write(). This method must not be called; it commits suicide. - */ - virtual uint32_t doWriteData(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t dataIdx, - uint32_t& imageIdx) const; - /*! - @brief Implements writeImage(). Write the image data of the IFD of - the Makernote. Return the number of bytes written. - */ - virtual uint32_t doWriteImage(IoWrapper& ioWrapper, - ByteOrder byteOrder) const; - /*! - @brief Implements size(). Return the size of the Makernote header, - TIFF directory, values and additional data. - */ - virtual uint32_t doSize() const; - /*! - @brief Implements count(). Return the number of entries in the IFD - of the Makernote. Does not count entries which are marked as - deleted. - */ - virtual uint32_t doCount() const; - /*! - @brief This class does not really implement sizeData(), it only has - size(). This method must not be called; it commits suicide. - */ - virtual uint32_t doSizeData() const; - /*! - @brief Implements sizeImage(). Return the total image data size of the - makernote IFD. - */ - virtual uint32_t doSizeImage() const; - //@} - - private: - /*! - @name NOT implemented - - Implementing the copy constructor and assignment operator will require - cloning the header, i.e., clone() functionality on the MnHeader - hierarchy. - */ - //@{ - //! Copy constructor. - TiffIfdMakernote(const TiffIfdMakernote& rhs); - //! Assignment operator. - TiffIfdMakernote& operator=(const TiffIfdMakernote& rhs); - //@} - - // DATA - MnHeader* pHeader_; //!< Makernote header - TiffDirectory ifd_; //!< Makernote IFD - uint32_t mnOffset_; //!< Makernote offset - ByteOrder imageByteOrder_; //!< Byte order for the image - - }; // class TiffIfdMakernote - - /*! - @brief Function pointer type for a function to determine which cfg + def - of a corresponding array set to use. - */ - typedef int (*CfgSelFct)(uint16_t, const byte*, uint32_t, TiffComponent* const); - - //! Function pointer type for a crypt function used for binary arrays. - typedef DataBuf (*CryptFct)(uint16_t, const byte*, uint32_t, TiffComponent* const); - - //! Defines one tag in a binary array - struct ArrayDef { - //! Comparison with idx - bool operator==(uint32_t idx) const { return idx_ == idx; } - //! Get the size in bytes of a tag. - uint32_t size(uint16_t tag, IfdId group) const; - // DATA - uint32_t idx_; //!< Index in bytes from the start - TiffType tiffType_; //!< TIFF type of the element - uint32_t count_; //!< Number of components - }; - - //! Additional configuration for a binary array. - struct ArrayCfg { - /*! - @brief Return the size of the default tag, which is used - to calculate tag numbers as idx/tagStep - */ - uint32_t tagStep() const { return elDefaultDef_.size(0, group_); } - //DATA - IfdId group_; //!< Group for the elements - ByteOrder byteOrder_; //!< Byte order, invalidByteOrder to inherit - TiffType elTiffType_; //!< Type for the array entry and the size element, if any - CryptFct cryptFct_; //!< Crypt function, 0 if not used - bool hasSize_; //!< If true, first tag is the size element - bool hasFillers_; //!< If true, write all defined tags - bool concat_; //!< If true, concatenate gaps between defined tags to single tags - ArrayDef elDefaultDef_; //!< Default element - }; - - //! Combination of array configuration and definition for arrays - struct ArraySet { - const ArrayCfg cfg_; //!< Binary array configuration - const ArrayDef* def_; //!< Binary array definition array - const int defSize_; //!< Size of the array definition array - }; - - /*! - @brief Composite to model an array of different tags. The tag types as well - as other aspects of the array are configurable. The elements of this - component are of type TiffBinaryElement. - */ - class TiffBinaryArray : public TiffEntryBase { - public: - //! @name Creators - //@{ - //! Constructor - TiffBinaryArray(uint16_t tag, - IfdId group, - const ArrayCfg* arrayCfg, - const ArrayDef* arrayDef, - int defSize); - //! Constructor for a complex binary array - TiffBinaryArray(uint16_t tag, - IfdId group, - const ArraySet* arraySet, - int setSize, - CfgSelFct cfgSelFct); - //! Virtual destructor - virtual ~TiffBinaryArray(); - //@} - - //! @name Manipulators - //@{ - //! Add an element to the binary array, return the size of the element - uint32_t addElement(uint32_t idx, const ArrayDef& def); - /*! - @brief Setup cfg and def for the component, in case of a complex binary array. - Else do nothing. Return true if the initialization succeeded, else false. - - This version of initialize() is used during intrusive writing. It determines the - correct settings based on the \em group passed in (which is the group of the first - tag that is added to the array). It doesn't require cfgSelFct_. - - @param group Group to setup the binary array for. - @return true if the initialization succeeded, else false. - */ - bool initialize(IfdId group); - /*! - @brief Setup cfg and def for the component, in case of a complex binary array. - Else do nothing. Return true if the initialization succeeded, else false. - - This version of initialize() is used for reading and non-intrusive writing. It - calls cfgSelFct_ to determine the correct settings. - - @param pRoot Pointer to the root component of the TIFF tree. - @return true if the initialization succeeded, else false. - */ - bool initialize(TiffComponent* const pRoot); - //! Initialize the original data buffer and its size from the base entry. - void iniOrigDataBuf(); - //! Update the original data buffer and its size, return true if successful. - bool updOrigDataBuf(const byte* pData, uint32_t size); - //! Set a flag to indicate if the array was decoded - void setDecoded(bool decoded) { decoded_ = decoded; } - //@} - - //! @name Accessors - //@{ - //! Return a pointer to the configuration - const ArrayCfg* cfg() const { return arrayCfg_; } - //! Return a pointer to the definition - const ArrayDef* def() const { return arrayDef_; } - //! Return the number of elements in the definition - int defSize() const { return defSize_; } - //! Return the flag which indicates if the array was decoded - bool decoded() const { return decoded_; } - //@} - - protected: - //! @name Protected Creators - //@{ - //! Copy constructor (used to implement clone()). - TiffBinaryArray(const TiffBinaryArray& rhs); - //@} - - //! @name Protected Manipulators - //@{ - /*! - @brief Implements addPath(). Todo: Document it! - */ - virtual TiffComponent* doAddPath(uint16_t tag, - TiffPath& tiffPath, - TiffComponent* const pRoot, - TiffComponent::AutoPtr object); - /*! - @brief Implements addChild(). Todo: Document it! - */ - virtual TiffComponent* doAddChild(TiffComponent::AutoPtr tiffComponent); - virtual void doAccept(TiffVisitor& visitor); - virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum); - /*! - @brief Implements write(). Todo: Document it! - */ - virtual uint32_t doWrite(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t valueIdx, - uint32_t dataIdx, - uint32_t& imageIdx); - //@} - - //! @name Protected Accessors - //@{ - virtual TiffBinaryArray* doClone() const; - //! Implements count(). Todo: Document it! - virtual uint32_t doCount() const; - // Using doWriteData from base class - // Using doWriteImage from base class - /*! - @brief Implements size(). Todo: Document it! - */ - virtual uint32_t doSize() const; - // Using doSizeData from base class - // Using doSizeImage from base class - //@} - - private: - //! @name NOT implemented - //@{ - //! Assignment operator. - TiffBinaryArray& operator=(const TiffBinaryArray& rhs); - //@} - - // DATA - const CfgSelFct cfgSelFct_; //!< Pointer to a function to determine which cfg to use (may be 0) - const ArraySet* arraySet_; //!< Pointer to the array set, if any (may be 0) - const ArrayCfg* arrayCfg_; //!< Pointer to the array configuration (must not be 0, except for unrecognized complex binary arrays) - const ArrayDef* arrayDef_; //!< Pointer to the array definition (may be 0) - int defSize_; //!< Size of the array definition array (may be 0) - int setSize_; //!< Size of the array set (may be 0) - Components elements_; //!< List of elements in this composite - byte* origData_; //!< Pointer to the original data buffer (unencrypted) - uint32_t origSize_; //!< Size of the original data buffer - TiffComponent* pRoot_; //!< Pointer to the root component of the TIFF tree. (Only used for intrusive writing.) - bool decoded_; //!< Flag to indicate if the array was decoded - }; // class TiffBinaryArray - - /*! - @brief Element of a TiffBinaryArray. - */ - class TiffBinaryElement : public TiffEntryBase { - public: - //! @name Creators - //@{ - //! Constructor - TiffBinaryElement(uint16_t tag, IfdId group); - //! Virtual destructor. - virtual ~TiffBinaryElement(); - //@} - - //! @name Manipulators - //@{ - /*! - @brief Set the array definition for this element. - */ - void setElDef(const ArrayDef& def) { elDef_ = def; } - /*! - @brief Set the byte order of this element. - */ - void setElByteOrder(ByteOrder byteOrder) { elByteOrder_ = byteOrder; } - //@} - - //! @name Accessors - //@{ - /*! - @brief Return the array definition of this element. - */ - const ArrayDef* elDef() const { return &elDef_; } - /*! - @brief Return the byte order of this element. - */ - ByteOrder elByteOrder() const { return elByteOrder_; } - //@} - - protected: - //! @name Protected Manipulators - //@{ - virtual void doAccept(TiffVisitor& visitor); - virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum); - /*! - @brief Implements write(). Todo: Document it! - */ - virtual uint32_t doWrite(IoWrapper& ioWrapper, - ByteOrder byteOrder, - int32_t offset, - uint32_t valueIdx, - uint32_t dataIdx, - uint32_t& imageIdx); - //@} - - //! @name Protected Accessors - //@{ - virtual TiffBinaryElement* doClone() const; - /*! - @brief Implements count(). Returns the count from the element definition. - */ - virtual uint32_t doCount() const; - // Using doWriteData from base class - // Using doWriteImage from base class - /*! - @brief Implements size(). Returns count * type-size, both taken from - the element definition. - */ - virtual uint32_t doSize() const; - // Using doSizeData from base class - // Using doSizeImage from base class - //@} - - private: - // DATA - ArrayDef elDef_; //!< The array element definition - ByteOrder elByteOrder_; //!< Byte order to read/write the element - - }; // class TiffBinaryElement - -// ***************************************************************************** -// template, inline and free functions - - /*! - @brief Compare two TIFF component pointers by tag. Return true if the tag - of component lhs is less than that of rhs. - */ - bool cmpTagLt(TiffComponent const* lhs, TiffComponent const* rhs); - - /*! - @brief Compare two TIFF component pointers by group. Return true if the - group of component lhs is less than that of rhs. - */ - bool cmpGroupLt(TiffComponent const* lhs, TiffComponent const* rhs); - - //! Function to create and initialize a new TIFF entry - TiffComponent::AutoPtr newTiffEntry(uint16_t tag, IfdId group); - - //! Function to create and initialize a new TIFF makernote entry - TiffComponent::AutoPtr newTiffMnEntry(uint16_t tag, IfdId group); - - //! Function to create and initialize a new binary array element - TiffComponent::AutoPtr newTiffBinaryElement(uint16_t tag, IfdId group); - - //! Function to create and initialize a new TIFF directory - template - TiffComponent::AutoPtr newTiffDirectory(uint16_t tag, IfdId /*group*/) - { - return TiffComponent::AutoPtr(new TiffDirectory(tag, newGroup)); - } - - //! Function to create and initialize a new TIFF sub-directory - template - TiffComponent::AutoPtr newTiffSubIfd(uint16_t tag, IfdId group) - { - return TiffComponent::AutoPtr(new TiffSubIfd(tag, group, newGroup)); - } - - //! Function to create and initialize a new binary array entry - template - TiffComponent::AutoPtr newTiffBinaryArray0(uint16_t tag, IfdId group) - { - // *& acrobatics is a workaround for a MSVC 7.1 bug - return TiffComponent::AutoPtr( - new TiffBinaryArray(tag, group, arrayCfg, *(&arrayDef), N)); - } - - //! Function to create and initialize a new simple binary array entry - template - TiffComponent::AutoPtr newTiffBinaryArray1(uint16_t tag, IfdId group) - { - return TiffComponent::AutoPtr( - new TiffBinaryArray(tag, group, arrayCfg, 0, 0)); - } - - //! Function to create and initialize a new complex binary array entry - template - TiffComponent::AutoPtr newTiffBinaryArray2(uint16_t tag, IfdId group) - { - return TiffComponent::AutoPtr( - new TiffBinaryArray(tag, group, arraySet, N, cfgSelFct)); - } - - //! Function to create and initialize a new TIFF entry for a thumbnail (data) - template - TiffComponent::AutoPtr newTiffThumbData(uint16_t tag, IfdId group) - { - return TiffComponent::AutoPtr( - new TiffDataEntry(tag, group, szTag, szGroup)); - } - - //! Function to create and initialize a new TIFF entry for a thumbnail (size) - template - TiffComponent::AutoPtr newTiffThumbSize(uint16_t tag, IfdId group) - { - return TiffComponent::AutoPtr( - new TiffSizeEntry(tag, group, dtTag, dtGroup)); - } - - //! Function to create and initialize a new TIFF entry for image data - template - TiffComponent::AutoPtr newTiffImageData(uint16_t tag, IfdId group) - { - return TiffComponent::AutoPtr( - new TiffImageEntry(tag, group, szTag, szGroup)); - } - - //! Function to create and initialize a new TIFF entry for image data (size) - template - TiffComponent::AutoPtr newTiffImageSize(uint16_t tag, IfdId group) - { - // Todo: Same as newTiffThumbSize - consolidate (rename)? - return TiffComponent::AutoPtr( - new TiffSizeEntry(tag, group, dtTag, dtGroup)); - } - -}} // namespace Internal, Exiv2 - -#endif // #ifndef TIFFCOMPOSITE_INT_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/tifffwd_int.hpp b/platform/win32/msvc/external/exiv2/src/tifffwd_int.hpp deleted file mode 100644 index b604d86e901..00000000000 --- a/platform/win32/msvc/external/exiv2/src/tifffwd_int.hpp +++ /dev/null @@ -1,120 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file tifffwd_int.hpp - @brief Internal TIFF parser related typedefs and forward definitions. - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 24-Jun-06, ahu: created - */ -#ifndef TIFFFWD_INT_HPP_ -#define TIFFFWD_INT_HPP_ - -// ***************************************************************************** -// included header files -#include "types.hpp" -#include "tags_int.hpp" - -// + standard includes -#include -#include -#include - -// ***************************************************************************** -// Exiv2 namespace extensions -namespace Exiv2 { - - class Exifdatum; - - namespace Internal { - - class TiffHeaderBase; - class TiffComponent; - class TiffEntryBase; - class TiffEntry; - class TiffDataEntry; - class TiffSizeEntry; - class TiffDirectory; - class TiffSubIfd; - class TiffMnEntry; - class TiffBinaryArray; - class TiffBinaryElement; - - class TiffIfdMakernote; - class MnHeader; - - class TiffVisitor; - class TiffFinder; - class TiffDecoder; - class TiffEncoder; - class TiffReader; - - class TiffRwState; - class TiffPathItem; - struct TiffMappingInfo; - - class IoWrapper; - class OffsetWriter; - -// ***************************************************************************** -// type definitions - - /*! - @brief Function pointer type for a TiffDecoder member function - to decode a TIFF component. - */ - typedef void (TiffDecoder::*DecoderFct)(const TiffEntryBase*); - /*! - @brief Function pointer type for a TiffDecoder member function - to decode a TIFF component. - */ - typedef void (TiffEncoder::*EncoderFct)(TiffEntryBase*, const Exifdatum*); - /*! - @brief Type for a function pointer for a function to decode a TIFF component. - */ - typedef DecoderFct (*FindDecoderFct)(const std::string& make, - uint32_t extendedTag, - IfdId group); - /*! - @brief Type for a function pointer for a function to encode a TIFF component. - */ - typedef EncoderFct (*FindEncoderFct)( - const std::string& make, - uint32_t extendedTag, - IfdId group - ); - /*! - @brief Type for a function pointer for a function to create a TIFF component. - Use TiffComponent::AutoPtr, it is not used in this declaration only - to reduce dependencies. - */ - typedef std::auto_ptr (*NewTiffCompFct)(uint16_t tag, IfdId group); - - //! Stack to hold a path from the TIFF root element to a TIFF entry - typedef std::stack TiffPath; - - //! Type for a list of primary image groups - typedef std::vector PrimaryGroups; - -}} // namespace Internal, Exiv2 - -#endif // #ifndef TIFFFWD_INT_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/tiffimage.cpp b/platform/win32/msvc/external/exiv2/src/tiffimage.cpp deleted file mode 100644 index 7458caff8db..00000000000 --- a/platform/win32/msvc/external/exiv2/src/tiffimage.cpp +++ /dev/null @@ -1,2248 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: tiffimage.cpp - Version: $Rev: 2701 $ - Author(s): Andreas Huggel (ahu) - History: 15-Mar-06, ahu: created - - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: tiffimage.cpp 2701 2012-04-13 14:08:56Z ahuggel $") - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#include "tiffimage.hpp" -#include "tiffimage_int.hpp" -#include "tiffcomposite_int.hpp" -#include "tiffvisitor_int.hpp" -#include "makernote_int.hpp" -#include "image.hpp" -#include "error.hpp" -#include "futils.hpp" -#include "types.hpp" -#include "i18n.h" // NLS support. - -// + standard includes -#include -#include -#include -#include -#include - -/* -------------------------------------------------------------------------- - - Todo: - - + CR2 Makernotes don't seem to have a next pointer but Canon Jpeg Makernotes - do. What a mess. (That'll become an issue when it comes to writing to CR2) - + Sony makernotes in RAW files do not seem to have header like those in Jpegs. - And maybe no next pointer either. - - in crwimage.* : - - + Fix CiffHeader according to TiffHeader - + Combine Error(15) and Error(33), add format argument %1 - + Search crwimage for todos, fix writeMetadata comment - + rename loadStack to getPath for consistency - - -------------------------------------------------------------------------- */ - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - using namespace Internal; - - TiffImage::TiffImage(BasicIo::AutoPtr io, bool /*create*/) - : Image(ImageType::tiff, mdExif | mdIptc | mdXmp, io), - pixelWidth_(0), pixelHeight_(0) - { - } // TiffImage::TiffImage - - //! Structure for TIFF compression to MIME type mappings - struct MimeTypeList { - //! Comparison operator for compression - bool operator==(int compression) const { return compression_ == compression; } - int compression_; //!< TIFF compression - const char* mimeType_; //!< MIME type - }; - - //! List of TIFF compression to MIME type mappings - MimeTypeList mimeTypeList[] = { - { 32770, "image/x-samsung-srw" }, - { 34713, "image/x-nikon-nef" }, - { 65535, "image/x-pentax-pef" } - }; - - std::string TiffImage::mimeType() const - { - if (!mimeType_.empty()) return mimeType_; - - mimeType_ = std::string("image/tiff"); - std::string key = "Exif." + primaryGroup() + ".Compression"; - ExifData::const_iterator md = exifData_.findKey(ExifKey(key)); - if (md != exifData_.end() && md->count() > 0) { - const MimeTypeList* i = find(mimeTypeList, static_cast(md->toLong())); - if (i) mimeType_ = std::string(i->mimeType_); - } - return mimeType_; - } - - std::string TiffImage::primaryGroup() const - { - if (!primaryGroup_.empty()) return primaryGroup_; - - static const char* keys[] = { - "Exif.Image.NewSubfileType", - "Exif.SubImage1.NewSubfileType", - "Exif.SubImage2.NewSubfileType", - "Exif.SubImage3.NewSubfileType", - "Exif.SubImage4.NewSubfileType", - "Exif.SubImage5.NewSubfileType", - "Exif.SubImage6.NewSubfileType", - "Exif.SubImage7.NewSubfileType", - "Exif.SubImage8.NewSubfileType", - "Exif.SubImage9.NewSubfileType" - }; - // Find the group of the primary image, default to "Image" - primaryGroup_ = std::string("Image"); - for (unsigned int i = 0; i < EXV_COUNTOF(keys); ++i) { - ExifData::const_iterator md = exifData_.findKey(ExifKey(keys[i])); - // Is it the primary image? - if (md != exifData_.end() && md->count() > 0 && md->toLong() == 0) { - // Sometimes there is a JPEG primary image; that's not our first choice - primaryGroup_ = md->groupName(); - std::string key = "Exif." + primaryGroup_ + ".JPEGInterchangeFormat"; - if (exifData_.findKey(ExifKey(key)) == exifData_.end()) break; - } - } - return primaryGroup_; - } - - int TiffImage::pixelWidth() const - { - if (pixelWidth_ != 0) return pixelWidth_; - - ExifKey key(std::string("Exif.") + primaryGroup() + std::string(".ImageWidth")); - ExifData::const_iterator imageWidth = exifData_.findKey(key); - if (imageWidth != exifData_.end() && imageWidth->count() > 0) { - pixelWidth_ = static_cast(imageWidth->toLong()); - } - return pixelWidth_; - } - - int TiffImage::pixelHeight() const - { - if (pixelHeight_ != 0) return pixelHeight_; - - ExifKey key(std::string("Exif.") + primaryGroup() + std::string(".ImageLength")); - ExifData::const_iterator imageHeight = exifData_.findKey(key); - if (imageHeight != exifData_.end() && imageHeight->count() > 0) { - pixelHeight_ = imageHeight->toLong(); - } - return pixelHeight_; - } - - void TiffImage::setComment(const std::string& /*comment*/) - { - // not supported - throw(Error(32, "Image comment", "TIFF")); - } - - void TiffImage::readMetadata() - { -#ifdef DEBUG - std::cerr << "Reading TIFF file " << io_->path() << "\n"; -#endif - if (io_->open() != 0) throw Error(9, io_->path(), strError()); - IoCloser closer(*io_); - // Ensure that this is the correct image type - if (!isTiffType(*io_, false)) { - if (io_->error() || io_->eof()) throw Error(14); - throw Error(3, "TIFF"); - } - clearMetadata(); - ByteOrder bo = TiffParser::decode(exifData_, - iptcData_, - xmpData_, - io_->mmap(), - io_->size()); - setByteOrder(bo); - } // TiffImage::readMetadata - - void TiffImage::writeMetadata() - { -#ifdef DEBUG - std::cerr << "Writing TIFF file " << io_->path() << "\n"; -#endif - ByteOrder bo = byteOrder(); - byte* pData = 0; - long size = 0; - IoCloser closer(*io_); - if (io_->open() == 0) { - // Ensure that this is the correct image type - if (isTiffType(*io_, false)) { - pData = io_->mmap(true); - size = io_->size(); - TiffHeader tiffHeader; - if (0 == tiffHeader.read(pData, 8)) { - bo = tiffHeader.byteOrder(); - } - } - } - if (bo == invalidByteOrder) { - bo = littleEndian; - } - setByteOrder(bo); - TiffParser::encode(*io_, pData, size, bo, exifData_, iptcData_, xmpData_); // may throw - } // TiffImage::writeMetadata - - ByteOrder TiffParser::decode( - ExifData& exifData, - IptcData& iptcData, - XmpData& xmpData, - const byte* pData, - uint32_t size - ) - { - return TiffParserWorker::decode(exifData, - iptcData, - xmpData, - pData, - size, - Tag::root, - TiffMapping::findDecoder); - } // TiffParser::decode - - WriteMethod TiffParser::encode( - BasicIo& io, - const byte* pData, - uint32_t size, - ByteOrder byteOrder, - const ExifData& exifData, - const IptcData& iptcData, - const XmpData& xmpData - ) - { - // Copy to be able to modify the Exif data - ExifData ed = exifData; - - // Delete IFDs which do not occur in TIFF images - static const IfdId filteredIfds[] = { - panaRawId - }; - for (unsigned int i = 0; i < EXV_COUNTOF(filteredIfds); ++i) { -#ifdef DEBUG - std::cerr << "Warning: Exif IFD " << filteredIfds[i] << " not encoded\n"; -#endif - ed.erase(std::remove_if(ed.begin(), - ed.end(), - FindExifdatum(filteredIfds[i])), - ed.end()); - } - - std::auto_ptr header(new TiffHeader(byteOrder)); - return TiffParserWorker::encode(io, - pData, - size, - ed, - iptcData, - xmpData, - Tag::root, - TiffMapping::findEncoder, - header.get(), - 0); - } // TiffParser::encode - - // ************************************************************************* - // free functions - Image::AutoPtr newTiffInstance(BasicIo::AutoPtr io, bool create) - { - Image::AutoPtr image(new TiffImage(io, create)); - if (!image->good()) { - image.reset(); - } - return image; - } - - bool isTiffType(BasicIo& iIo, bool advance) - { - const int32_t len = 8; - byte buf[len]; - iIo.read(buf, len); - if (iIo.error() || iIo.eof()) { - return false; - } - TiffHeader tiffHeader; - bool rc = tiffHeader.read(buf, len); - if (!advance || !rc) { - iIo.seek(-len, BasicIo::cur); - } - return rc; - } - -} // namespace Exiv2 - -// Shortcuts for the newTiffBinaryArray templates. -#define EXV_BINARY_ARRAY(arrayCfg, arrayDef) (newTiffBinaryArray0<&arrayCfg, EXV_COUNTOF(arrayDef), arrayDef>) -#define EXV_SIMPLE_BINARY_ARRAY(arrayCfg) (newTiffBinaryArray1<&arrayCfg>) -#define EXV_COMPLEX_BINARY_ARRAY(arraySet, cfgSelFct) (newTiffBinaryArray2) - -namespace Exiv2 { - namespace Internal { - - //! Constant for non-encrypted binary arrays - const CryptFct notEncrypted = 0; - - //! Canon Camera Settings binary array - configuration - extern const ArrayCfg canonCsCfg = { - canonCsId, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUnsignedShort, // Type for array entry and size element - notEncrypted, // Not encrypted - true, // With size element - false, // No fillers - false, // Don't concatenate gaps - { 0, ttUnsignedShort, 1 } - }; - //! Canon Camera Settings binary array - definition - extern const ArrayDef canonCsDef[] = { - { 46, ttUnsignedShort, 3 } // Exif.CanonCs.Lens - }; - - //! Canon Shot Info binary array - configuration - extern const ArrayCfg canonSiCfg = { - canonSiId, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUnsignedShort, // Type for array entry and size element - notEncrypted, // Not encrypted - true, // With size element - false, // No fillers - false, // Don't concatenate gaps - { 0, ttUnsignedShort, 1 } - }; - - //! Canon Panorama binary array - configuration - extern const ArrayCfg canonPaCfg = { - canonPaId, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUnsignedShort, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps - { 0, ttUnsignedShort, 1 } - }; - - //! Canon Custom Function binary array - configuration - extern const ArrayCfg canonCfCfg = { - canonCfId, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUnsignedShort, // Type for array entry and size element - notEncrypted, // Not encrypted - true, // With size element - false, // No fillers - false, // Don't concatenate gaps - { 0, ttUnsignedShort, 1 } - }; - - //! Canon Picture Info binary array - configuration - extern const ArrayCfg canonPiCfg = { - canonPiId, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUnsignedShort, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps - { 0, ttUnsignedShort, 1 } - }; - - //! Canon File Info binary array - configuration - extern const ArrayCfg canonFiCfg = { - canonFiId, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUnsignedShort, // Type for array entry and size element - notEncrypted, // Not encrypted - true, // Has a size element - false, // No fillers - false, // Don't concatenate gaps - { 0, ttSignedShort, 1 } - }; - //! Canon File Info binary array - definition - extern const ArrayDef canonFiDef[] = { - { 2, ttUnsignedLong, 1 } - }; - - //! Canon Processing Info binary array - configuration - extern const ArrayCfg canonPrCfg = { - canonPrId, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUnsignedShort, // Type for array entry and size element - notEncrypted, // Not encrypted - true, // Has a size element - false, // No fillers - false, // Don't concatenate gaps - { 0, ttSignedShort, 1 } - }; - - //! Nikon Vibration Reduction binary array - configuration - extern const ArrayCfg nikonVrCfg = { - nikonVrId, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - notEncrypted, // Not encrypted - false, // No size element - true, // Write all tags - true, // Concatenate gaps - { 0, ttUnsignedByte, 1 } - }; - //! Nikon Vibration Reduction binary array - definition - extern const ArrayDef nikonVrDef[] = { - { 0, ttUndefined, 4 }, // Version - { 7, ttUnsignedByte, 1 } // The array contains 8 bytes - }; - - //! Nikon Picture Control binary array - configuration - extern const ArrayCfg nikonPcCfg = { - nikonPcId, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - notEncrypted, // Not encrypted - false, // No size element - true, // Write all tags - true, // Concatenate gaps - { 0, ttUnsignedByte, 1 } - }; - //! Nikon Picture Control binary array - definition - extern const ArrayDef nikonPcDef[] = { - { 0, ttUndefined, 4 }, // Version - { 4, ttAsciiString, 20 }, - { 24, ttAsciiString, 20 }, - { 48, ttUnsignedByte, 1 }, - { 49, ttUnsignedByte, 1 }, - { 50, ttUnsignedByte, 1 }, - { 51, ttUnsignedByte, 1 }, - { 52, ttUnsignedByte, 1 }, - { 53, ttUnsignedByte, 1 }, - { 54, ttUnsignedByte, 1 }, - { 55, ttUnsignedByte, 1 }, - { 56, ttUnsignedByte, 1 }, - { 57, ttUnsignedByte, 1 } // The array contains 58 bytes - }; - - //! Nikon World Time binary array - configuration - extern const ArrayCfg nikonWtCfg = { - nikonWtId, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - notEncrypted, // Not encrypted - false, // No size element - true, // Write all tags - true, // Concatenate gaps - { 0, ttUnsignedByte, 1 } - }; - //! Nikon World Time binary array - definition - extern const ArrayDef nikonWtDef[] = { - { 0, ttSignedShort, 1 }, - { 2, ttUnsignedByte, 1 }, - { 3, ttUnsignedByte, 1 } - }; - - //! Nikon ISO info binary array - configuration - extern const ArrayCfg nikonIiCfg = { - nikonIiId, // Group for the elements - bigEndian, // Byte order - ttUndefined, // Type for array entry - notEncrypted, // Not encrypted - false, // No size element - true, // Write all tags - true, // Concatenate gaps - { 0, ttUnsignedByte, 1 } - }; - //! Nikon ISO info binary array - definition - extern const ArrayDef nikonIiDef[] = { - { 0, ttUnsignedByte, 1 }, - { 4, ttUnsignedShort, 1 }, - { 6, ttUnsignedByte, 1 }, - { 10, ttUnsignedShort, 1 }, - { 13, ttUnsignedByte, 1 } // The array contains 14 bytes - }; - - //! Nikon Auto Focus binary array - configuration - extern const ArrayCfg nikonAfCfg = { - nikonAfId, // Group for the elements - littleEndian, // Byte order - ttUndefined, // Type for array entry - notEncrypted, // Not encrypted - false, // No size element - true, // Write all tags - true, // Concatenate gaps - { 0, ttUnsignedByte, 1 } - }; - //! Nikon Auto Focus binary array - definition - extern const ArrayDef nikonAfDef[] = { - { 0, ttUnsignedByte, 1 }, - { 1, ttUnsignedByte, 1 }, - { 2, ttUnsignedShort, 1 } // The array contains 4 bytes - }; - - //! Nikon Auto Focus 2 binary array - configuration - extern const ArrayCfg nikonAf2Cfg = { - nikonAf2Id, // Group for the elements - littleEndian, // Byte order - ttUndefined, // Type for array entry - notEncrypted, // Not encrypted - false, // No size element - true, // Write all tags - true, // Concatenate gaps - { 0, ttUnsignedByte, 1 } - }; - //! Nikon Auto Focus 2 binary array - definition - extern const ArrayDef nikonAf2Def[] = { - { 0, ttUndefined, 4 }, // Version - { 4, ttUnsignedByte, 1 }, // ContrastDetectAF - { 5, ttUnsignedByte, 1 }, // AFAreaMode - { 6, ttUnsignedByte, 1 }, // PhaseDetectAF - { 7, ttUnsignedByte, 1 }, // PrimaryAFPoint - { 8, ttUnsignedByte, 7 }, // AFPointsUsed - { 16, ttUnsignedShort, 1 }, // AFImageWidth - { 18, ttUnsignedShort, 1 }, // AFImageHeight - { 20, ttUnsignedShort, 1 }, // AFAreaXPosition - { 22, ttUnsignedShort, 1 }, // AFAreaYPosition - { 24, ttUnsignedShort, 1 }, // AFAreaWidth - { 26, ttUnsignedShort, 1 }, // AFAreaHeight - { 28, ttUnsignedShort, 1 }, // ContrastDetectAFInFocus - }; - - //! Nikon AF Fine Tune binary array - configuration - extern const ArrayCfg nikonAFTCfg = { - nikonAFTId, // Group for the elements - littleEndian, // Byte order - ttUndefined, // Type for array entry - notEncrypted, // Not encrypted - false, // No size element - true, // Write all tags - true, // Concatenate gaps - { 0, ttUnsignedByte, 1 } - }; - //! Nikon AF Fine Tune binary array - definition - extern const ArrayDef nikonAFTDef[] = { - { 0, ttUnsignedByte, 1 }, // AF Fine Tune on/off - { 1, ttUnsignedByte, 1 }, // AF Fine Tune index - { 2, ttUnsignedByte, 1 } // AF Fine Tune value - }; - - //! Nikon File Info binary array - configuration - extern const ArrayCfg nikonFiCfg = { - nikonFiId, // Group for the elements - littleEndian, // Byte order - ttUndefined, // Type for array entry - notEncrypted, // Not encrypted - false, // No size element - true, // Write all tags - true, // Concatenate gaps - { 0, ttUnsignedByte, 1 } - }; - //! Nikon File Info binary array - definition - extern const ArrayDef nikonFiDef[] = { - { 0, ttUndefined, 4 }, // Version - { 6, ttUnsignedShort, 1 }, // Directory Number - { 8, ttUnsignedShort, 1 } // File Number - }; - - //! Nikon Multi Exposure binary array - configuration - extern const ArrayCfg nikonMeCfg = { - nikonMeId, // Group for the elements - littleEndian, // Byte order - ttUndefined, // Type for array entry - notEncrypted, // Not encrypted - false, // No size element - true, // Write all tags - true, // Concatenate gaps - { 0, ttUnsignedByte, 1 } - }; - //! Nikon Multi Exposure binary array - definition - extern const ArrayDef nikonMeDef[] = { - { 0, ttUndefined, 4 }, // Version - { 4, ttUnsignedLong, 1 }, // MultiExposureMode - { 8, ttUnsignedLong, 1 }, // MultiExposureShots - { 12, ttUnsignedLong, 1 } // MultiExposureAutoGain - }; - - //! Nikon Flash Info binary array - configuration 1 - extern const ArrayCfg nikonFl1Cfg = { - nikonFl1Id, // Group for the elements - littleEndian, // Byte order - ttUndefined, // Type for array entry - notEncrypted, // Not encrypted - false, // No size element - true, // Write all tags - true, // Concatenate gaps - { 0, ttUnsignedByte, 1 } - }; - //! Nikon Flash Info binary array - definition 1 - extern const ArrayDef nikonFl1Def[] = { - { 0, ttUndefined, 4 }, // Version - { 4, ttUnsignedByte, 1 }, // FlashSource - { 6, ttUnsignedShort, 1 }, // ExternalFlashFirmware - { 8, ttUnsignedByte, 1 }, // ExternalFlashFlags - { 11, ttUnsignedByte, 1 }, // FlashFocalLength - { 12, ttUnsignedByte, 1 }, // RepeatingFlashRate - { 13, ttUnsignedByte, 1 }, // RepeatingFlashCount - { 14, ttUnsignedByte, 1 }, // FlashGNDistance - { 15, ttUnsignedByte, 1 }, // FlashGroupAControlMode - { 16, ttUnsignedByte, 1 } // FlashGroupBControlMode - }; - //! Nikon Flash Info binary array - configuration 2 - extern const ArrayCfg nikonFl2Cfg = { - nikonFl2Id, // Group for the elements - littleEndian, // Byte order - ttUndefined, // Type for array entry - notEncrypted, // Not encrypted - false, // No size element - true, // Write all tags - true, // Concatenate gaps - { 0, ttUnsignedByte, 1 } - }; - //! Nikon Flash Info binary array - definition 2 - extern const ArrayDef nikonFl2Def[] = { - { 0, ttUndefined, 4 }, // Version - { 4, ttUnsignedByte, 1 }, // FlashSource - { 6, ttUnsignedShort, 1 }, // ExternalFlashFirmware - { 8, ttUnsignedByte, 1 }, // ExternalFlashFlags - { 12, ttUnsignedByte, 1 }, // FlashFocalLength - { 13, ttUnsignedByte, 1 }, // RepeatingFlashRate - { 14, ttUnsignedByte, 1 }, // RepeatingFlashCount - { 15, ttUnsignedByte, 1 }, // FlashGNDistance - }; - //! Nikon Flash Info binary array - configuration 3 - extern const ArrayCfg nikonFl3Cfg = { - nikonFl3Id, // Group for the elements - littleEndian, // Byte order - ttUndefined, // Type for array entry - notEncrypted, // Not encrypted - false, // No size element - true, // Write all tags - true, // Concatenate gaps - { 0, ttUnsignedByte, 1 } - }; - //! Nikon Flash Info binary array - definition - extern const ArrayDef nikonFl3Def[] = { - { 0, ttUndefined, 4 }, // Version - { 4, ttUnsignedByte, 1 }, // FlashSource - { 6, ttUnsignedShort, 1 }, // ExternalFlashFirmware - { 8, ttUnsignedByte, 1 }, // ExternalFlashFlags - { 12, ttUnsignedByte, 1 }, // FlashFocalLength - { 13, ttUnsignedByte, 1 }, // RepeatingFlashRate - { 14, ttUnsignedByte, 1 }, // RepeatingFlashCount - { 15, ttUnsignedByte, 1 }, // FlashGNDistance - { 16, ttUnsignedByte, 1 }, // FlashColorFilter - }; - //! Nikon Lens Data configurations and definitions - extern const ArraySet nikonFlSet[] = { - { nikonFl1Cfg, nikonFl1Def, EXV_COUNTOF(nikonFl1Def) }, - { nikonFl2Cfg, nikonFl2Def, EXV_COUNTOF(nikonFl2Def) }, - { nikonFl3Cfg, nikonFl3Def, EXV_COUNTOF(nikonFl3Def) } - }; - - //! Nikon Shot Info binary array - configuration 1 (D80) - extern const ArrayCfg nikonSi1Cfg = { - nikonSi1Id, // Group for the elements - bigEndian, // Use byte order from parent - ttUndefined, // Type for array entry - nikonCrypt, // Encryption function - false, // No size element - true, // Write all tags - true, // Concatenate gaps - { 0, ttUnsignedByte, 1 } - }; - //! Nikon Shot Info binary array - definition 1 (D80) - extern const ArrayDef nikonSi1Def[] = { - { 0, ttUndefined, 4 }, // Version - { 586, ttUnsignedLong, 1 }, // ShutterCount - { 1155, ttUnsignedByte, 1 } // The array contains 1156 bytes - }; - //! Nikon Shot Info binary array - configuration 2 (D40) - extern const ArrayCfg nikonSi2Cfg = { - nikonSi2Id, // Group for the elements - bigEndian, // Use byte order from parent - ttUndefined, // Type for array entry - nikonCrypt, // Encryption function - false, // No size element - true, // Write all tags - true, // Concatenate gaps - { 0, ttUnsignedByte, 1 } - }; - //! Nikon Shot Info binary array - definition 2 (D40) - extern const ArrayDef nikonSi2Def[] = { - { 0, ttUndefined, 4 }, // Version - { 582, ttUnsignedLong, 1 }, // ShutterCount - { 738, ttUnsignedByte, 1 }, - { 1112, ttUnsignedByte, 1 } // The array contains 1113 bytes - }; - //! Nikon Shot Info binary array - configuration 3 (D300a) - extern const ArrayCfg nikonSi3Cfg = { - nikonSi3Id, // Group for the elements - bigEndian, // Use byte order from parent - ttUndefined, // Type for array entry - nikonCrypt, // Encryption function - false, // No size element - true, // Write all tags - true, // Concatenate gaps - { 0, ttUnsignedByte, 1 } - }; - //! Nikon Shot Info binary array - definition 3 (D300a) - extern const ArrayDef nikonSi3Def[] = { - { 0, ttUndefined, 4 }, // Version - { 604, ttUnsignedByte, 1 }, // ISO - { 633, ttUnsignedLong, 1 }, // ShutterCount - { 721, ttUnsignedShort, 1 }, // AFFineTuneAdj - { 814, ttUndefined, 4478 } // The array contains 5291 bytes - }; - //! Nikon Shot Info binary array - configuration 4 (D300b) - extern const ArrayCfg nikonSi4Cfg = { - nikonSi4Id, // Group for the elements - bigEndian, // Use byte order from parent - ttUndefined, // Type for array entry - nikonCrypt, // Encryption function - false, // No size element - true, // Write all tags - true, // Concatenate gaps - { 0, ttUnsignedByte, 1 } - }; - //! Nikon Shot Info binary array - definition 4 (D300b) - extern const ArrayDef nikonSi4Def[] = { - { 0, ttUndefined, 4 }, // Version - { 644, ttUnsignedLong, 1 }, // ShutterCount - { 732, ttUnsignedShort, 1 }, // AFFineTuneAdj - { 826, ttUndefined, 4478 } // The array contains 5303 bytes - }; - //! Nikon Shot Info binary array - configuration 5 (ver 02.xx) - extern const ArrayCfg nikonSi5Cfg = { - nikonSi5Id, // Group for the elements - bigEndian, // Use byte order from parent - ttUndefined, // Type for array entry - nikonCrypt, // Encryption function - false, // No size element - false, // Write all tags (don't know how many) - true, // Concatenate gaps - { 0, ttUnsignedByte, 1 } - }; - //! Nikon Shot Info binary array - definition 5 (ver 01.xx and ver 02.xx) - extern const ArrayDef nikonSi5Def[] = { - { 0, ttUndefined, 4 }, // Version - { 106, ttUnsignedLong, 1 }, // ShutterCount1 - { 110, ttUnsignedLong, 1 }, // DeletedImageCount - { 117, ttUnsignedByte, 1 }, // VibrationReduction - { 130, ttUnsignedByte, 1 }, // VibrationReduction1 - { 343, ttUndefined, 2 }, // ShutterCount - { 430, ttUnsignedByte, 1 }, // VibrationReduction2 - { 598, ttUnsignedByte, 1 }, // ISO - { 630, ttUnsignedLong, 1 } // ShutterCount - }; - //! Nikon Shot Info binary array - configuration 6 (ver 01.xx) - extern const ArrayCfg nikonSi6Cfg = { - nikonSi6Id, // Group for the elements - bigEndian, // Use byte order from parent - ttUndefined, // Type for array entry - notEncrypted, // Encryption function - false, // No size element - false, // Write all tags (don't know how many) - true, // Concatenate gaps - { 0, ttUnsignedByte, 1 } - }; - //! Nikon Lens Data configurations and definitions - extern const ArraySet nikonSiSet[] = { - { nikonSi1Cfg, nikonSi1Def, EXV_COUNTOF(nikonSi1Def) }, - { nikonSi2Cfg, nikonSi2Def, EXV_COUNTOF(nikonSi2Def) }, - { nikonSi3Cfg, nikonSi3Def, EXV_COUNTOF(nikonSi3Def) }, - { nikonSi4Cfg, nikonSi4Def, EXV_COUNTOF(nikonSi4Def) }, - { nikonSi5Cfg, nikonSi5Def, EXV_COUNTOF(nikonSi5Def) }, - { nikonSi6Cfg, nikonSi5Def, EXV_COUNTOF(nikonSi5Def) } // uses nikonSi5Def - }; - - //! Nikon Lens Data binary array - configuration 1 - extern const ArrayCfg nikonLd1Cfg = { - nikonLd1Id, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - notEncrypted, // Encryption function - false, // No size element - true, // Write all tags - false, // Concatenate gaps - { 0, ttUnsignedByte, 1 } - }; - //! Nikon Lens Data binary array - configuration 2 - extern const ArrayCfg nikonLd2Cfg = { - nikonLd2Id, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - nikonCrypt, // Encryption function - false, // No size element - true, // Write all tags - false, // Concatenate gaps - { 0, ttUnsignedByte, 1 } - }; - //! Nikon Lens Data binary array - configuration 3 - extern const ArrayCfg nikonLd3Cfg = { - nikonLd3Id, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - nikonCrypt, // Encryption function - false, // No size element - true, // Write all tags - false, // Don't concatenate gaps - { 0, ttUnsignedByte, 1 } - }; - //! Nikon Lens Data binary array - definition - extern const ArrayDef nikonLdDef[] = { - { 0, ttUndefined, 4 } // Version - }; - //! Nikon Lens Data configurations and definitions - extern const ArraySet nikonLdSet[] = { - { nikonLd1Cfg, nikonLdDef, EXV_COUNTOF(nikonLdDef) }, - { nikonLd2Cfg, nikonLdDef, EXV_COUNTOF(nikonLdDef) }, - { nikonLd3Cfg, nikonLdDef, EXV_COUNTOF(nikonLdDef) } - }; - - //! Nikon Color Balance binary array - configuration 1 - extern const ArrayCfg nikonCb1Cfg = { - nikonCb1Id, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - notEncrypted, // Encryption function - false, // No size element - false, // Write all tags - true, // Concatenate gaps - { 0, ttUnsignedShort, 1 } - }; - //! Nikon Color Balance binary array - configuration 2 - extern const ArrayCfg nikonCb2Cfg = { - nikonCb2Id, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - nikonCrypt, // Encryption function - false, // No size element - false, // Write all tags - true, // Concatenate gaps - { 0, ttUnsignedShort, 1 } - }; - //! Nikon Color Balance binary array - configuration 2a - extern const ArrayCfg nikonCb2aCfg = { - nikonCb2aId, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - nikonCrypt, // Encryption function - false, // No size element - false, // Write all tags - true, // Concatenate gaps - { 0, ttUnsignedShort, 1 } - }; - //! Nikon Color Balance binary array - configuration 2b - extern const ArrayCfg nikonCb2bCfg = { - nikonCb2bId, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - nikonCrypt, // Encryption function - false, // No size element - false, // Write all tags - true, // Concatenate gaps - { 0, ttUnsignedShort, 1 } - }; - //! Nikon Color Balance binary array - configuration 3 - extern const ArrayCfg nikonCb3Cfg = { - nikonCb3Id, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - notEncrypted, // Encryption function - false, // No size element - false, // Write all tags - true, // Concatenate gaps - { 0, ttUnsignedShort, 1 } - }; - //! Nikon Color Balance binary array - configuration 4 - extern const ArrayCfg nikonCb4Cfg = { - nikonCb4Id, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUndefined, // Type for array entry - nikonCrypt, // Encryption function - false, // No size element - false, // Write all tags - true, // Concatenate gaps - { 0, ttUnsignedShort, 1 } - }; - //! Nikon Color Balance binary array - definition 1 (D100) - extern const ArrayDef nikonCb1Def[] = { - { 0, ttUndefined, 4 }, // Version - { 72, ttUnsignedShort, 4 } // Color balance levels - }; - //! Nikon Color Balance binary array - definition 2 (D2H) - extern const ArrayDef nikonCb2Def[] = { - { 0, ttUndefined, 4 }, // Version - { 10, ttUnsignedShort, 4 } // Color balance levels - }; - //! Nikon Color Balance binary array - definition 2a (D50) - extern const ArrayDef nikonCb2aDef[] = { - { 0, ttUndefined, 4 }, // Version - { 18, ttUnsignedShort, 4 } // Color balance levels - }; - //! Nikon Color Balance binary array - definition 2b (D2X=0204,D2Hs=0206,D200=0207,D40=0208) - extern const ArrayDef nikonCb2bDef[] = { - { 0, ttUndefined, 4 }, // Version - { 4, ttUnsignedShort, 140 }, // Unknown - {284, ttUnsignedShort, 3 }, // Unknown (encrypted) - {290, ttUnsignedShort, 4 } // Color balance levels - }; - //! Nikon Color Balance binary array - definition 3 (D70) - extern const ArrayDef nikonCb3Def[] = { - { 0, ttUndefined, 4 }, // Version - { 20, ttUnsignedShort, 4 } // Color balance levels - }; - //! Nikon Color Balance binary array - definition 4 (D3) - extern const ArrayDef nikonCb4Def[] = { - { 0, ttUndefined, 4 }, // Version - { 4, ttUnsignedShort, 140 }, // Unknown - {284, ttUnsignedShort, 5 }, // Unknown (encrypted) - {294, ttUnsignedShort, 4 } // Color balance levels - }; - //! Nikon Color Balance configurations and definitions - extern const ArraySet nikonCbSet[] = { - { nikonCb1Cfg, nikonCb1Def, EXV_COUNTOF(nikonCb1Def) }, - { nikonCb2Cfg, nikonCb2Def, EXV_COUNTOF(nikonCb2Def) }, - { nikonCb2aCfg, nikonCb2aDef, EXV_COUNTOF(nikonCb2aDef) }, - { nikonCb2bCfg, nikonCb2bDef, EXV_COUNTOF(nikonCb2bDef) }, - { nikonCb3Cfg, nikonCb3Def, EXV_COUNTOF(nikonCb3Def) }, - { nikonCb4Cfg, nikonCb4Def, EXV_COUNTOF(nikonCb4Def) } - }; - - //! Minolta Camera Settings (old) binary array - configuration - extern const ArrayCfg minoCsoCfg = { - minoltaCsOldId, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps - { 0, ttUnsignedLong, 1 } - }; - - //! Minolta Camera Settings (new) binary array - configuration - extern const ArrayCfg minoCsnCfg = { - minoltaCsNewId, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps - { 0, ttUnsignedLong, 1 } - }; - - //! Minolta 7D Camera Settings binary array - configuration - extern const ArrayCfg minoCs7Cfg = { - minoltaCs7DId, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps - { 0, ttUnsignedShort, 1 } - }; - //! Minolta 7D Camera Settings binary array - definition - extern const ArrayDef minoCs7Def[] = { - { 60, ttSignedShort, 1 }, // Exif.MinoltaCs7D.ExposureCompensation - { 126, ttSignedShort, 1 } // Exif.MinoltaCs7D.ColorTemperature - }; - - //! Minolta 5D Camera Settings binary array - configuration - extern const ArrayCfg minoCs5Cfg = { - minoltaCs5DId, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps - { 0, ttUnsignedShort, 1 } - }; - //! Minolta 5D Camera Settings binary array - definition - extern const ArrayDef minoCs5Def[] = { - { 146, ttSignedShort, 1 } // Exif.MinoltaCs5D.ColorTemperature - }; - - // Todo: Performance of the handling of Sony Camera Settings can be - // improved by defining all known array elements in the definitions - // sonyCsDef and sonyCs2Def below and enabling the 'concatenate gaps' - // setting in all four configurations. - - //! Sony1 Camera Settings binary array - configuration - extern const ArrayCfg sony1CsCfg = { - sony1CsId, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps - { 0, ttUnsignedShort, 1 } - }; - //! Sony1 Camera Settings 2 binary array - configuration - extern const ArrayCfg sony1Cs2Cfg = { - sony1Cs2Id, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps - { 0, ttUnsignedShort, 1 } - }; - //! Sony[12] Camera Settings binary array - definition - extern const ArrayDef sonyCsDef[] = { - { 12, ttSignedShort, 1 } // Exif.Sony[12]Cs.WhiteBalanceFineTune - }; - //! Sony2 Camera Settings binary array - configuration - extern const ArrayCfg sony2CsCfg = { - sony2CsId, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps - { 0, ttUnsignedShort, 1 } - }; - //! Sony2 Camera Settings 2 binary array - configuration - extern const ArrayCfg sony2Cs2Cfg = { - sony2Cs2Id, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps - { 0, ttUnsignedShort, 1 } - }; - //! Sony[12] Camera Settings 2 binary array - definition - extern const ArrayDef sonyCs2Def[] = { - { 44, ttUnsignedShort, 1 } // Exif.Sony[12]Cs2.FocusMode - }; - //! Sony1 Camera Settings configurations and definitions - extern const ArraySet sony1CsSet[] = { - { sony1CsCfg, sonyCsDef, EXV_COUNTOF(sonyCsDef) }, - { sony1Cs2Cfg, sonyCs2Def, EXV_COUNTOF(sonyCs2Def) } - }; - //! Sony2 Camera Settings configurations and definitions - extern const ArraySet sony2CsSet[] = { - { sony2CsCfg, sonyCsDef, EXV_COUNTOF(sonyCsDef) }, - { sony2Cs2Cfg, sonyCs2Def, EXV_COUNTOF(sonyCs2Def) } - }; - - //! Sony Minolta Camera Settings (old) binary array - configuration - extern const ArrayCfg sony1MCsoCfg = { - sony1MltCsOldId, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps - { 0, ttUnsignedLong, 1 } - }; - - //! Sony Minolta Camera Settings (new) binary array - configuration - extern const ArrayCfg sony1MCsnCfg = { - sony1MltCsNewId, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps - { 0, ttUnsignedLong, 1 } - }; - - //! Sony Minolta 7D Camera Settings binary array - configuration - extern const ArrayCfg sony1MCs7Cfg = { - sony1MltCs7DId, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps - { 0, ttUnsignedShort, 1 } - }; - - //! Sony Minolta A100 Camera Settings binary array - configuration - extern const ArrayCfg sony1MCsA100Cfg = { - sony1MltCsA100Id, // Group for the elements - bigEndian, // Big endian - ttUndefined, // Type for array entry and size element - notEncrypted, // Not encrypted - false, // No size element - false, // No fillers - false, // Don't concatenate gaps - { 0, ttUnsignedShort, 1 } - }; - //! Sony Minolta A100 Camera Settings binary array - definition - extern const ArrayDef sony1MCsA100Def[] = { - { 112, ttSignedShort, 1 }, // Exif.Sony1MltCsA100.WhiteBalanceFineTune - { 116, ttSignedShort, 1 }, // Exif.Sony1MltCsA100.ColorCompensationFilter - { 190, ttSignedShort, 1 } // Exif.Sony1MltCsA100.ColorCompensationFilter2 - }; - - //! Samsung PictureWizard binary array - configuration - extern const ArrayCfg samsungPwCfg = { - samsungPwId, // Group for the elements - invalidByteOrder, // Use byte order from parent - ttUnsignedShort, // Type for array entry - notEncrypted, // Not encrypted - false, // No size element - true, // Write all tags - true, // Concatenate gaps - { 0, ttUnsignedShort, 1 } - }; - //! Samsung PictureWizard binary array - definition - extern const ArrayDef samsungPwDef[] = { - { 0, ttUnsignedShort, 1 }, // Mode - { 2, ttUnsignedShort, 1 }, // Color - { 4, ttUnsignedShort, 1 }, // Saturation - { 6, ttUnsignedShort, 1 }, // Sharpness - { 8, ttUnsignedShort, 1 } // Contrast - }; - - /* - This table lists for each group in a tree, its parent group and tag. - Root identifies the root of a TIFF tree, as there is a need for multiple - trees. Groups are the nodes of a TIFF tree. A group is an IFD or any - other composite component. - - With this table, it is possible, for a given group (and tag) to find a - path, i.e., a list of groups and tags, from the root to that group (tag). - */ - const TiffTreeStruct TiffCreator::tiffTreeStruct_[] = { - // root group parent group parent tag - //--------- ----------------- ----------------- ---------- - { Tag::root, ifdIdNotSet, ifdIdNotSet, Tag::root }, - { Tag::root, ifd0Id, ifdIdNotSet, Tag::root }, - { Tag::root, subImage1Id, ifd0Id, 0x014a }, - { Tag::root, subImage2Id, ifd0Id, 0x014a }, - { Tag::root, subImage3Id, ifd0Id, 0x014a }, - { Tag::root, subImage4Id, ifd0Id, 0x014a }, - { Tag::root, subImage5Id, ifd0Id, 0x014a }, - { Tag::root, subImage6Id, ifd0Id, 0x014a }, - { Tag::root, subImage7Id, ifd0Id, 0x014a }, - { Tag::root, subImage8Id, ifd0Id, 0x014a }, - { Tag::root, subImage9Id, ifd0Id, 0x014a }, - { Tag::root, exifId, ifd0Id, 0x8769 }, - { Tag::root, gpsId, ifd0Id, 0x8825 }, - { Tag::root, iopId, exifId, 0xa005 }, - { Tag::root, ifd1Id, ifd0Id, Tag::next }, - { Tag::root, ifd2Id, ifd1Id, Tag::next }, - { Tag::root, ifd3Id, ifd2Id, Tag::next }, - { Tag::root, olympusId, exifId, 0x927c }, - { Tag::root, olympus2Id, exifId, 0x927c }, - { Tag::root, subThumb1Id, ifd1Id, 0x014a }, - { Tag::root, olympusEqId, olympus2Id, 0x2010 }, - { Tag::root, olympusCsId, olympus2Id, 0x2020 }, - { Tag::root, olympusRdId, olympus2Id, 0x2030 }, - { Tag::root, olympusRd2Id, olympus2Id, 0x2031 }, - { Tag::root, olympusIpId, olympus2Id, 0x2040 }, - { Tag::root, olympusFiId, olympus2Id, 0x2050 }, - { Tag::root, olympusFe1Id, olympus2Id, 0x2100 }, - { Tag::root, olympusFe2Id, olympus2Id, 0x2200 }, - { Tag::root, olympusFe3Id, olympus2Id, 0x2300 }, - { Tag::root, olympusFe4Id, olympus2Id, 0x2400 }, - { Tag::root, olympusFe5Id, olympus2Id, 0x2500 }, - { Tag::root, olympusFe6Id, olympus2Id, 0x2600 }, - { Tag::root, olympusFe7Id, olympus2Id, 0x2700 }, - { Tag::root, olympusFe8Id, olympus2Id, 0x2800 }, - { Tag::root, olympusFe9Id, olympus2Id, 0x2900 }, - { Tag::root, olympusRiId, olympus2Id, 0x3000 }, - { Tag::root, fujiId, exifId, 0x927c }, - { Tag::root, canonId, exifId, 0x927c }, - { Tag::root, canonCsId, canonId, 0x0001 }, - { Tag::root, canonSiId, canonId, 0x0004 }, - { Tag::root, canonPaId, canonId, 0x0005 }, - { Tag::root, canonCfId, canonId, 0x000f }, - { Tag::root, canonPiId, canonId, 0x0012 }, - { Tag::root, canonFiId, canonId, 0x0093 }, - { Tag::root, canonPrId, canonId, 0x00a0 }, - { Tag::root, nikon1Id, exifId, 0x927c }, - { Tag::root, nikon2Id, exifId, 0x927c }, - { Tag::root, nikon3Id, exifId, 0x927c }, - { Tag::root, nikonPvId, nikon3Id, 0x0011 }, - { Tag::root, nikonVrId, nikon3Id, 0x001f }, - { Tag::root, nikonPcId, nikon3Id, 0x0023 }, - { Tag::root, nikonWtId, nikon3Id, 0x0024 }, - { Tag::root, nikonIiId, nikon3Id, 0x0025 }, - { Tag::root, nikonAfId, nikon3Id, 0x0088 }, - { Tag::root, nikonSi1Id, nikon3Id, 0x0091 }, - { Tag::root, nikonSi2Id, nikon3Id, 0x0091 }, - { Tag::root, nikonSi3Id, nikon3Id, 0x0091 }, - { Tag::root, nikonSi4Id, nikon3Id, 0x0091 }, - { Tag::root, nikonSi5Id, nikon3Id, 0x0091 }, - { Tag::root, nikonSi6Id, nikon3Id, 0x0091 }, - { Tag::root, nikonCb1Id, nikon3Id, 0x0097 }, - { Tag::root, nikonCb2Id, nikon3Id, 0x0097 }, - { Tag::root, nikonCb2aId, nikon3Id, 0x0097 }, - { Tag::root, nikonCb2bId, nikon3Id, 0x0097 }, - { Tag::root, nikonCb3Id, nikon3Id, 0x0097 }, - { Tag::root, nikonCb4Id, nikon3Id, 0x0097 }, - { Tag::root, nikonLd1Id, nikon3Id, 0x0098 }, - { Tag::root, nikonLd2Id, nikon3Id, 0x0098 }, - { Tag::root, nikonLd3Id, nikon3Id, 0x0098 }, - { Tag::root, nikonMeId, nikon3Id, 0x00b0 }, - { Tag::root, nikonAf2Id, nikon3Id, 0x00b7 }, - { Tag::root, nikonFiId, nikon3Id, 0x00b8 }, - { Tag::root, nikonAFTId, nikon3Id, 0x00b9 }, - { Tag::root, nikonFl1Id, nikon3Id, 0x00a8 }, - { Tag::root, nikonFl2Id, nikon3Id, 0x00a8 }, - { Tag::root, nikonFl3Id, nikon3Id, 0x00a8 }, - { Tag::root, panasonicId, exifId, 0x927c }, - { Tag::root, pentaxId, exifId, 0x927c }, - { Tag::root, pentaxDngId, ifd0Id, 0xc634 }, - { Tag::root, samsung2Id, exifId, 0x927c }, - { Tag::root, samsungPwId, samsung2Id, 0x0021 }, - { Tag::root, samsungPvId, samsung2Id, 0x0035 }, - { Tag::root, sigmaId, exifId, 0x927c }, - { Tag::root, sony1Id, exifId, 0x927c }, - { Tag::root, sony1CsId, sony1Id, 0x0114 }, - { Tag::root, sony1Cs2Id, sony1Id, 0x0114 }, - { Tag::root, sonyMltId, sony1Id, 0xb028 }, - { Tag::root, sony1MltCsOldId, sonyMltId, 0x0001 }, - { Tag::root, sony1MltCsNewId, sonyMltId, 0x0003 }, - { Tag::root, sony1MltCs7DId, sonyMltId, 0x0004 }, - { Tag::root, sony1MltCsA100Id, sonyMltId, 0x0114 }, - { Tag::root, sony2Id, exifId, 0x927c }, - { Tag::root, sony2CsId, sony2Id, 0x0114 }, - { Tag::root, sony2Cs2Id, sony2Id, 0x0114 }, - { Tag::root, minoltaId, exifId, 0x927c }, - { Tag::root, minoltaCsOldId, minoltaId, 0x0001 }, - { Tag::root, minoltaCsNewId, minoltaId, 0x0003 }, - { Tag::root, minoltaCs7DId, minoltaId, 0x0004 }, - { Tag::root, minoltaCs5DId, minoltaId, 0x0114 }, - // --------------------------------------------------------- - // Panasonic RW2 raw images - { Tag::pana, ifdIdNotSet, ifdIdNotSet, Tag::pana }, - { Tag::pana, panaRawId, ifdIdNotSet, Tag::pana }, - { Tag::pana, exifId, panaRawId, 0x8769 }, - { Tag::pana, gpsId, panaRawId, 0x8825 } - }; - - /* - This table describes the layout of each known TIFF group (including - non-standard structures and IFDs only seen in RAW images). - - The key of the table consists of the first two attributes, (extended) tag - and group. Tag is the TIFF tag or one of a few extended tags, group - identifies the IFD or any other composite component. - - Each entry of the table defines for a particular tag and group combination - the corresponding TIFF component create function. - */ - const TiffGroupStruct TiffCreator::tiffGroupStruct_[] = { - // ext. tag group create function - //--------- ----------------- ----------------------------------------- - // Root directory - { Tag::root, ifdIdNotSet, newTiffDirectory }, - - // IFD0 - { 0x8769, ifd0Id, newTiffSubIfd }, - { 0x8825, ifd0Id, newTiffSubIfd }, - { 0x0111, ifd0Id, newTiffImageData<0x0117, ifd0Id> }, - { 0x0117, ifd0Id, newTiffImageSize<0x0111, ifd0Id> }, - { 0x0144, ifd0Id, newTiffImageData<0x0145, ifd0Id> }, - { 0x0145, ifd0Id, newTiffImageSize<0x0144, ifd0Id> }, - { 0x0201, ifd0Id, newTiffImageData<0x0202, ifd0Id> }, - { 0x0202, ifd0Id, newTiffImageSize<0x0201, ifd0Id> }, - { 0x014a, ifd0Id, newTiffSubIfd }, - { 0xc634, ifd0Id, newTiffMnEntry }, - { Tag::next, ifd0Id, newTiffDirectory }, - { Tag::all, ifd0Id, newTiffEntry }, - - // Subdir subImage1 - { 0x0111, subImage1Id, newTiffImageData<0x0117, subImage1Id> }, - { 0x0117, subImage1Id, newTiffImageSize<0x0111, subImage1Id> }, - { 0x0144, subImage1Id, newTiffImageData<0x0145, subImage1Id> }, - { 0x0145, subImage1Id, newTiffImageSize<0x0144, subImage1Id> }, - { 0x0201, subImage1Id, newTiffImageData<0x0202, subImage1Id> }, - { 0x0202, subImage1Id, newTiffImageSize<0x0201, subImage1Id> }, - { Tag::next, subImage1Id, newTiffDirectory }, - { Tag::all, subImage1Id, newTiffEntry }, - - // Subdir subImage2 - { 0x0111, subImage2Id, newTiffImageData<0x0117, subImage2Id> }, - { 0x0117, subImage2Id, newTiffImageSize<0x0111, subImage2Id> }, - { 0x0144, subImage2Id, newTiffImageData<0x0145, subImage2Id> }, - { 0x0145, subImage2Id, newTiffImageSize<0x0144, subImage2Id> }, - { 0x0201, subImage2Id, newTiffImageData<0x0202, subImage2Id> }, - { 0x0202, subImage2Id, newTiffImageSize<0x0201, subImage2Id> }, - { Tag::next, subImage2Id, newTiffDirectory }, - { Tag::all, subImage2Id, newTiffEntry }, - - // Subdir subImage3 - { 0x0111, subImage3Id, newTiffImageData<0x0117, subImage3Id> }, - { 0x0117, subImage3Id, newTiffImageSize<0x0111, subImage3Id> }, - { 0x0144, subImage3Id, newTiffImageData<0x0145, subImage3Id> }, - { 0x0145, subImage3Id, newTiffImageSize<0x0144, subImage3Id> }, - { 0x0201, subImage3Id, newTiffImageData<0x0202, subImage3Id> }, - { 0x0202, subImage3Id, newTiffImageSize<0x0201, subImage3Id> }, - { Tag::next, subImage3Id, newTiffDirectory }, - { Tag::all, subImage3Id, newTiffEntry }, - - // Subdir subImage4 - { 0x0111, subImage4Id, newTiffImageData<0x0117, subImage4Id> }, - { 0x0117, subImage4Id, newTiffImageSize<0x0111, subImage4Id> }, - { 0x0144, subImage4Id, newTiffImageData<0x0145, subImage4Id> }, - { 0x0145, subImage4Id, newTiffImageSize<0x0144, subImage4Id> }, - { 0x0201, subImage4Id, newTiffImageData<0x0202, subImage4Id> }, - { 0x0202, subImage4Id, newTiffImageSize<0x0201, subImage4Id> }, - { Tag::next, subImage4Id, newTiffDirectory }, - { Tag::all, subImage4Id, newTiffEntry }, - - // Subdir subImage5 - { 0x0111, subImage5Id, newTiffImageData<0x0117, subImage5Id> }, - { 0x0117, subImage5Id, newTiffImageSize<0x0111, subImage5Id> }, - { 0x0144, subImage5Id, newTiffImageData<0x0145, subImage5Id> }, - { 0x0145, subImage5Id, newTiffImageSize<0x0144, subImage5Id> }, - { 0x0201, subImage5Id, newTiffImageData<0x0202, subImage5Id> }, - { 0x0202, subImage5Id, newTiffImageSize<0x0201, subImage5Id> }, - { Tag::next, subImage5Id, newTiffDirectory }, - { Tag::all, subImage5Id, newTiffEntry }, - - // Subdir subImage6 - { 0x0111, subImage6Id, newTiffImageData<0x0117, subImage6Id> }, - { 0x0117, subImage6Id, newTiffImageSize<0x0111, subImage6Id> }, - { 0x0144, subImage6Id, newTiffImageData<0x0145, subImage6Id> }, - { 0x0145, subImage6Id, newTiffImageSize<0x0144, subImage6Id> }, - { 0x0201, subImage6Id, newTiffImageData<0x0202, subImage6Id> }, - { 0x0202, subImage6Id, newTiffImageSize<0x0201, subImage6Id> }, - { Tag::next, subImage6Id, newTiffDirectory }, - { Tag::all, subImage6Id, newTiffEntry }, - - // Subdir subImage7 - { 0x0111, subImage7Id, newTiffImageData<0x0117, subImage7Id> }, - { 0x0117, subImage7Id, newTiffImageSize<0x0111, subImage7Id> }, - { 0x0144, subImage7Id, newTiffImageData<0x0145, subImage7Id> }, - { 0x0145, subImage7Id, newTiffImageSize<0x0144, subImage7Id> }, - { 0x0201, subImage7Id, newTiffImageData<0x0202, subImage7Id> }, - { 0x0202, subImage7Id, newTiffImageSize<0x0201, subImage7Id> }, - { Tag::next, subImage7Id, newTiffDirectory }, - { Tag::all, subImage7Id, newTiffEntry }, - - // Subdir subImage8 - { 0x0111, subImage8Id, newTiffImageData<0x0117, subImage8Id> }, - { 0x0117, subImage8Id, newTiffImageSize<0x0111, subImage8Id> }, - { 0x0144, subImage8Id, newTiffImageData<0x0145, subImage8Id> }, - { 0x0145, subImage8Id, newTiffImageSize<0x0144, subImage8Id> }, - { 0x0201, subImage8Id, newTiffImageData<0x0202, subImage8Id> }, - { 0x0202, subImage8Id, newTiffImageSize<0x0201, subImage8Id> }, - { Tag::next, subImage8Id, newTiffDirectory }, - { Tag::all, subImage8Id, newTiffEntry }, - - // Subdir subImage9 - { 0x0111, subImage9Id, newTiffImageData<0x0117, subImage9Id> }, - { 0x0117, subImage9Id, newTiffImageSize<0x0111, subImage9Id> }, - { 0x0144, subImage9Id, newTiffImageData<0x0145, subImage9Id> }, - { 0x0145, subImage9Id, newTiffImageSize<0x0144, subImage9Id> }, - { 0x0201, subImage9Id, newTiffImageData<0x0202, subImage9Id> }, - { 0x0202, subImage9Id, newTiffImageSize<0x0201, subImage9Id> }, - { Tag::next, subImage9Id, newTiffDirectory }, - { Tag::all, subImage9Id, newTiffEntry }, - - // Exif subdir - { 0xa005, exifId, newTiffSubIfd }, - { 0x927c, exifId, newTiffMnEntry }, - { Tag::next, exifId, newTiffDirectory }, - { Tag::all, exifId, newTiffEntry }, - - // GPS subdir - { Tag::next, gpsId, newTiffDirectory }, - { Tag::all, gpsId, newTiffEntry }, - - // IOP subdir - { Tag::next, iopId, newTiffDirectory }, - { Tag::all, iopId, newTiffEntry }, - - // IFD1 - { 0x0111, ifd1Id, newTiffThumbData<0x0117, ifd1Id> }, - { 0x0117, ifd1Id, newTiffThumbSize<0x0111, ifd1Id> }, - { 0x0144, ifd1Id, newTiffImageData<0x0145, ifd1Id> }, - { 0x0145, ifd1Id, newTiffImageSize<0x0144, ifd1Id> }, - { 0x014a, ifd1Id, newTiffSubIfd }, - { 0x0201, ifd1Id, newTiffThumbData<0x0202, ifd1Id> }, - { 0x0202, ifd1Id, newTiffThumbSize<0x0201, ifd1Id> }, - { Tag::next, ifd1Id, newTiffDirectory }, - { Tag::all, ifd1Id, newTiffEntry }, - - // Subdir subThumb1 - { 0x0111, subThumb1Id, newTiffImageData<0x0117, subThumb1Id> }, - { 0x0117, subThumb1Id, newTiffImageSize<0x0111, subThumb1Id> }, - { 0x0144, subThumb1Id, newTiffImageData<0x0145, subThumb1Id> }, - { 0x0145, subThumb1Id, newTiffImageSize<0x0144, subThumb1Id> }, - { 0x0201, subThumb1Id, newTiffImageData<0x0202, subThumb1Id> }, - { 0x0202, subThumb1Id, newTiffImageSize<0x0201, subThumb1Id> }, - { Tag::next, subThumb1Id, newTiffDirectory }, - { Tag::all, subThumb1Id, newTiffEntry }, - - // IFD2 (eg, in Pentax PEF and Canon CR2 files) - { 0x0111, ifd2Id, newTiffImageData<0x0117, ifd2Id> }, - { 0x0117, ifd2Id, newTiffImageSize<0x0111, ifd2Id> }, - { 0x0144, ifd1Id, newTiffImageData<0x0145, ifd2Id> }, - { 0x0145, ifd1Id, newTiffImageSize<0x0144, ifd2Id> }, - { 0x0201, ifd2Id, newTiffImageData<0x0202, ifd2Id> }, - { 0x0202, ifd2Id, newTiffImageSize<0x0201, ifd2Id> }, - { Tag::next, ifd2Id, newTiffDirectory }, - { Tag::all, ifd2Id, newTiffEntry }, - - // IFD3 (eg, in Canon CR2 files) - { 0x0111, ifd3Id, newTiffImageData<0x0117, ifd3Id> }, - { 0x0117, ifd3Id, newTiffImageSize<0x0111, ifd3Id> }, - { 0x0144, ifd1Id, newTiffImageData<0x0145, ifd3Id> }, - { 0x0145, ifd1Id, newTiffImageSize<0x0144, ifd3Id> }, - { 0x0201, ifd3Id, newTiffImageData<0x0202, ifd3Id> }, - { 0x0202, ifd3Id, newTiffImageSize<0x0201, ifd3Id> }, - { Tag::next, ifd3Id, newTiffDirectory }, - { Tag::all, ifd3Id, newTiffEntry }, - - // Olympus makernote - some Olympus cameras use Minolta structures - // Todo: Adding such tags will not work (maybe result in a Minolta makernote), need separate groups - { 0x0001, olympusId, EXV_SIMPLE_BINARY_ARRAY(minoCsoCfg) }, - { 0x0003, olympusId, EXV_SIMPLE_BINARY_ARRAY(minoCsnCfg) }, - { Tag::next, olympusId, newTiffDirectory }, - { Tag::all, olympusId, newTiffEntry }, - - // Olympus2 makernote - { 0x0001, olympus2Id, EXV_SIMPLE_BINARY_ARRAY(minoCsoCfg) }, - { 0x0003, olympus2Id, EXV_SIMPLE_BINARY_ARRAY(minoCsnCfg) }, - { 0x2010, olympus2Id, newTiffSubIfd }, - { 0x2020, olympus2Id, newTiffSubIfd }, - { 0x2030, olympus2Id, newTiffSubIfd }, - { 0x2031, olympus2Id, newTiffSubIfd }, - { 0x2040, olympus2Id, newTiffSubIfd }, - { 0x2050, olympus2Id, newTiffSubIfd }, - { 0x2100, olympus2Id, newTiffSubIfd }, - { 0x2200, olympus2Id, newTiffSubIfd }, - { 0x2300, olympus2Id, newTiffSubIfd }, - { 0x2400, olympus2Id, newTiffSubIfd }, - { 0x2500, olympus2Id, newTiffSubIfd }, - { 0x2600, olympus2Id, newTiffSubIfd }, - { 0x2700, olympus2Id, newTiffSubIfd }, - { 0x2800, olympus2Id, newTiffSubIfd }, - { 0x2900, olympus2Id, newTiffSubIfd }, - { 0x3000, olympus2Id, newTiffSubIfd }, - { Tag::next, olympus2Id, newTiffDirectory }, - { Tag::all, olympus2Id, newTiffEntry }, - - // Olympus2 equipment subdir - { Tag::all, olympusEqId, newTiffEntry }, - - // Olympus2 camera settings subdir - { 0x0101, olympusCsId, newTiffImageData<0x0102, olympusCsId> }, - { 0x0102, olympusCsId, newTiffImageSize<0x0101, olympusCsId> }, - { Tag::all, olympusCsId, newTiffEntry }, - - // Olympus2 raw development subdir - { Tag::all, olympusRdId, newTiffEntry }, - - // Olympus2 raw development 2 subdir - { Tag::all, olympusRd2Id, newTiffEntry }, - - // Olympus2 image processing subdir - { Tag::all, olympusIpId, newTiffEntry }, - - // Olympus2 focus info subdir - { Tag::all, olympusFiId, newTiffEntry }, - - // Olympus2 FE 1 subdir - { Tag::all, olympusFe1Id, newTiffEntry }, - - // Olympus2 FE 2 subdir - { Tag::all, olympusFe2Id, newTiffEntry }, - - // Olympus2 FE 3 subdir - { Tag::all, olympusFe3Id, newTiffEntry }, - - // Olympus2 FE 4 subdir - { Tag::all, olympusFe4Id, newTiffEntry }, - - // Olympus2 FE 5 subdir - { Tag::all, olympusFe5Id, newTiffEntry }, - - // Olympus2 FE 6 subdir - { Tag::all, olympusFe6Id, newTiffEntry }, - - // Olympus2 FE 7 subdir - { Tag::all, olympusFe7Id, newTiffEntry }, - - // Olympus2 FE 8 subdir - { Tag::all, olympusFe8Id, newTiffEntry }, - - // Olympus2 FE 9 subdir - { Tag::all, olympusFe9Id, newTiffEntry }, - - // Olympus2 Raw Info subdir - { Tag::all, olympusRiId, newTiffEntry }, - - // Fujifilm makernote - { Tag::next, fujiId, newTiffDirectory }, - { Tag::all, fujiId, newTiffEntry }, - - // Canon makernote - { 0x0001, canonId, EXV_BINARY_ARRAY(canonCsCfg, canonCsDef) }, - { 0x0004, canonId, EXV_SIMPLE_BINARY_ARRAY(canonSiCfg) }, - { 0x0005, canonId, EXV_SIMPLE_BINARY_ARRAY(canonPaCfg) }, - { 0x000f, canonId, EXV_SIMPLE_BINARY_ARRAY(canonCfCfg) }, - { 0x0012, canonId, EXV_SIMPLE_BINARY_ARRAY(canonPiCfg) }, - { 0x0093, canonId, EXV_BINARY_ARRAY(canonFiCfg, canonFiDef) }, - { 0x00a0, canonId, EXV_SIMPLE_BINARY_ARRAY(canonPrCfg) }, - { Tag::next, canonId, newTiffDirectory }, - { Tag::all, canonId, newTiffEntry }, - - // Canon makernote composite tags - { Tag::all, canonCsId, newTiffBinaryElement }, - { Tag::all, canonSiId, newTiffBinaryElement }, - { Tag::all, canonPaId, newTiffBinaryElement }, - { Tag::all, canonCfId, newTiffBinaryElement }, - { Tag::all, canonPiId, newTiffBinaryElement }, - { Tag::all, canonFiId, newTiffBinaryElement }, - { Tag::all, canonPrId, newTiffBinaryElement }, - - // Nikon1 makernote - { Tag::next, nikon1Id, newTiffDirectory }, - { Tag::all, nikon1Id, newTiffEntry }, - - // Nikon2 makernote - { Tag::next, nikon2Id, newTiffDirectory }, - { Tag::all, nikon2Id, newTiffEntry }, - - // Nikon3 makernote - { Tag::next, nikon3Id, newTiffDirectory }, - { 0x0011, nikon3Id, newTiffSubIfd }, - { 0x001f, nikon3Id, EXV_BINARY_ARRAY(nikonVrCfg, nikonVrDef) }, - { 0x0023, nikon3Id, EXV_BINARY_ARRAY(nikonPcCfg, nikonPcDef) }, - { 0x0024, nikon3Id, EXV_BINARY_ARRAY(nikonWtCfg, nikonWtDef) }, - { 0x0025, nikon3Id, EXV_BINARY_ARRAY(nikonIiCfg, nikonIiDef) }, - { 0x0088, nikon3Id, EXV_BINARY_ARRAY(nikonAfCfg, nikonAfDef) }, - { 0x0091, nikon3Id, EXV_COMPLEX_BINARY_ARRAY(nikonSiSet, nikonSelector) }, - { 0x0097, nikon3Id, EXV_COMPLEX_BINARY_ARRAY(nikonCbSet, nikonSelector) }, - { 0x0098, nikon3Id, EXV_COMPLEX_BINARY_ARRAY(nikonLdSet, nikonSelector) }, - { 0x00a8, nikon3Id, EXV_COMPLEX_BINARY_ARRAY(nikonFlSet, nikonSelector) }, - { 0x00b0, nikon3Id, EXV_BINARY_ARRAY(nikonMeCfg, nikonMeDef) }, - { 0x00b7, nikon3Id, EXV_BINARY_ARRAY(nikonAf2Cfg, nikonAf2Def)}, - { 0x00b8, nikon3Id, EXV_BINARY_ARRAY(nikonFiCfg, nikonFiDef) }, - { 0x00b9, nikon3Id, EXV_BINARY_ARRAY(nikonAFTCfg, nikonAFTDef) }, - { Tag::all, nikon3Id, newTiffEntry }, - - // Nikon3 makernote preview subdir - { 0x0201, nikonPvId, newTiffThumbData<0x0202, nikonPvId> }, - { 0x0202, nikonPvId, newTiffThumbSize<0x0201, nikonPvId> }, - { Tag::next, nikonPvId, newTiffDirectory }, - { Tag::all, nikonPvId, newTiffEntry }, - - // Nikon3 vibration reduction - { Tag::all, nikonVrId, newTiffBinaryElement }, - - // Nikon3 picture control - { Tag::all, nikonPcId, newTiffBinaryElement }, - - // Nikon3 world time - { Tag::all, nikonWtId, newTiffBinaryElement }, - - // Nikon3 ISO info - { Tag::all, nikonIiId, newTiffBinaryElement }, - - // Nikon3 auto focus - { Tag::all, nikonAfId, newTiffBinaryElement }, - - // Nikon3 auto focus 2 - { Tag::all, nikonAf2Id, newTiffBinaryElement }, - - // Nikon3 AF Fine Tune - { Tag::all, nikonAFTId, newTiffBinaryElement }, - - // Nikon3 file info - { Tag::all, nikonFiId, newTiffBinaryElement }, - - // Nikon3 multi exposure - { Tag::all, nikonMeId, newTiffBinaryElement }, - - // Nikon3 flash info - { Tag::all, nikonFl1Id, newTiffBinaryElement }, - { Tag::all, nikonFl2Id, newTiffBinaryElement }, - { Tag::all, nikonFl3Id, newTiffBinaryElement }, - - // Nikon3 shot info - { Tag::all, nikonSi1Id, newTiffBinaryElement }, - { Tag::all, nikonSi2Id, newTiffBinaryElement }, - { Tag::all, nikonSi3Id, newTiffBinaryElement }, - { Tag::all, nikonSi4Id, newTiffBinaryElement }, - { Tag::all, nikonSi5Id, newTiffBinaryElement }, - { Tag::all, nikonSi6Id, newTiffBinaryElement }, - - // Nikon3 color balance - { Tag::all, nikonCb1Id, newTiffBinaryElement }, - { Tag::all, nikonCb2Id, newTiffBinaryElement }, - { Tag::all, nikonCb2aId, newTiffBinaryElement }, - { Tag::all, nikonCb2bId, newTiffBinaryElement }, - { Tag::all, nikonCb3Id, newTiffBinaryElement }, - { Tag::all, nikonCb4Id, newTiffBinaryElement }, - - // Nikon3 lens data - { Tag::all, nikonLd1Id, newTiffBinaryElement }, - { Tag::all, nikonLd2Id, newTiffBinaryElement }, - { Tag::all, nikonLd3Id, newTiffBinaryElement }, - - // Panasonic makernote - { Tag::next, panasonicId, newTiffDirectory }, - { Tag::all, panasonicId, newTiffEntry }, - - // Pentax DNG makernote - { 0x0003, pentaxDngId, newTiffThumbSize<0x0004, pentaxDngId> }, - { 0x0004, pentaxDngId, newTiffThumbData<0x0003, pentaxDngId> }, - { Tag::next, pentaxDngId, newTiffDirectory }, - { Tag::all, pentaxDngId, newTiffEntry }, - - // Pentax makernote - { 0x0003, pentaxId, newTiffThumbSize<0x0004, pentaxId> }, - { 0x0004, pentaxId, newTiffThumbData<0x0003, pentaxId> }, - { Tag::next, pentaxId, newTiffDirectory }, - { Tag::all, pentaxId, newTiffEntry }, - - // Samsung2 makernote - { 0x0021, samsung2Id, EXV_BINARY_ARRAY(samsungPwCfg, samsungPwDef) }, - { 0x0035, samsung2Id, newTiffSubIfd }, - { Tag::next, samsung2Id, newTiffDirectory }, - { Tag::all, samsung2Id, newTiffEntry }, - - // Samsung PictureWizard binary array - { Tag::all, samsungPwId, newTiffBinaryElement }, - - // Samsung2 makernote preview subdir - { 0x0201, samsungPvId, newTiffThumbData<0x0202, samsungPvId> }, - { 0x0202, samsungPvId, newTiffThumbSize<0x0201, samsungPvId> }, - { Tag::next, samsungPvId, newTiffDirectory }, - { Tag::all, samsungPvId, newTiffEntry }, - - // Sigma/Foveon makernote - { Tag::next, sigmaId, newTiffDirectory }, - { Tag::all, sigmaId, newTiffEntry }, - - // Sony1 makernote - { 0x0114, sony1Id, EXV_COMPLEX_BINARY_ARRAY(sony1CsSet, sonyCsSelector) }, - { 0xb028, sony1Id, newTiffSubIfd }, - { Tag::next, sony1Id, newTiffDirectory }, - { Tag::all, sony1Id, newTiffEntry }, - - // Sony1 camera settings - { Tag::all, sony1CsId, newTiffBinaryElement }, - { Tag::all, sony1Cs2Id, newTiffBinaryElement }, - - // Sony2 makernote - { 0x0114, sony2Id, EXV_COMPLEX_BINARY_ARRAY(sony2CsSet, sonyCsSelector) }, - { Tag::next, sony2Id, newTiffDirectory }, - { Tag::all, sony2Id, newTiffEntry }, - - // Sony2 camera settings - { Tag::all, sony2CsId, newTiffBinaryElement }, - { Tag::all, sony2Cs2Id, newTiffBinaryElement }, - - // Sony1 Minolta makernote - { 0x0001, sonyMltId, EXV_SIMPLE_BINARY_ARRAY(sony1MCsoCfg) }, - { 0x0003, sonyMltId, EXV_SIMPLE_BINARY_ARRAY(sony1MCsnCfg) }, - { 0x0004, sonyMltId, EXV_BINARY_ARRAY(sony1MCs7Cfg, minoCs7Def)}, // minoCs7Def [sic] - { 0x0088, sonyMltId, newTiffThumbData<0x0089, sonyMltId> }, - { 0x0089, sonyMltId, newTiffThumbSize<0x0088, sonyMltId> }, - { 0x0114, sonyMltId, EXV_BINARY_ARRAY(sony1MCsA100Cfg, sony1MCsA100Def)}, - { Tag::next, sonyMltId, newTiffDirectory }, - { Tag::all, sonyMltId, newTiffEntry }, - - // Sony1 Minolta makernote composite tags - { Tag::all, sony1MltCsOldId, newTiffBinaryElement }, - { Tag::all, sony1MltCsNewId, newTiffBinaryElement }, - { Tag::all, sony1MltCs7DId, newTiffBinaryElement }, - { Tag::all, sony1MltCsA100Id, newTiffBinaryElement }, - - // Minolta makernote - { 0x0001, minoltaId, EXV_SIMPLE_BINARY_ARRAY(minoCsoCfg) }, - { 0x0003, minoltaId, EXV_SIMPLE_BINARY_ARRAY(minoCsnCfg) }, - { 0x0004, minoltaId, EXV_BINARY_ARRAY(minoCs7Cfg, minoCs7Def) }, - { 0x0088, minoltaId, newTiffThumbData<0x0089, minoltaId> }, - { 0x0089, minoltaId, newTiffThumbSize<0x0088, minoltaId> }, - { 0x0114, minoltaId, EXV_BINARY_ARRAY(minoCs5Cfg, minoCs5Def) }, - { Tag::next, minoltaId, newTiffDirectory }, - { Tag::all, minoltaId, newTiffEntry }, - - // Minolta makernote composite tags - { Tag::all, minoltaCsOldId, newTiffBinaryElement }, - { Tag::all, minoltaCsNewId, newTiffBinaryElement }, - { Tag::all, minoltaCs7DId, newTiffBinaryElement }, - { Tag::all, minoltaCs5DId, newTiffBinaryElement }, - - // ----------------------------------------------------------------------- - // Root directory of Panasonic RAW images - { Tag::pana, ifdIdNotSet, newTiffDirectory }, - - // IFD0 of Panasonic RAW images - { 0x8769, panaRawId, newTiffSubIfd }, - { 0x8825, panaRawId, newTiffSubIfd }, -// { 0x0111, panaRawId, newTiffImageData<0x0117, panaRawId> }, -// { 0x0117, panaRawId, newTiffImageSize<0x0111, panaRawId> }, - { Tag::next, panaRawId, newTiffDirectory }, - { Tag::all, panaRawId, newTiffEntry }, - - // ----------------------------------------------------------------------- - // Tags which are not de/encoded - { Tag::next, ignoreId, newTiffDirectory }, - { Tag::all, ignoreId, newTiffEntry } - }; - - // TIFF mapping table for special decoding and encoding requirements - const TiffMappingInfo TiffMapping::tiffMappingInfo_[] = { - { "*", Tag::all, ignoreId, 0, 0 }, // Do not decode tags with group == ignoreId - { "*", 0x02bc, ifd0Id, &TiffDecoder::decodeXmp, 0 /*done before the tree is traversed*/ }, - { "*", 0x83bb, ifd0Id, &TiffDecoder::decodeIptc, 0 /*done before the tree is traversed*/ }, - { "*", 0x8649, ifd0Id, &TiffDecoder::decodeIptc, 0 /*done before the tree is traversed*/ } - }; - - DecoderFct TiffMapping::findDecoder(const std::string& make, - uint32_t extendedTag, - IfdId group) - { - DecoderFct decoderFct = &TiffDecoder::decodeStdTiffEntry; - const TiffMappingInfo* td = find(tiffMappingInfo_, - TiffMappingInfo::Key(make, extendedTag, group)); - if (td) { - // This may set decoderFct to 0, meaning that the tag should not be decoded - decoderFct = td->decoderFct_; - } - return decoderFct; - } - - EncoderFct TiffMapping::findEncoder( - const std::string& make, - uint32_t extendedTag, - IfdId group - ) - { - EncoderFct encoderFct = 0; - const TiffMappingInfo* td = find(tiffMappingInfo_, - TiffMappingInfo::Key(make, extendedTag, group)); - if (td) { - // Returns 0 if no special encoder function is found - encoderFct = td->encoderFct_; - } - return encoderFct; - } - - bool TiffTreeStruct::operator==(const TiffTreeStruct::Key& key) const - { - return key.r_ == root_ && key.g_ == group_; - } - - TiffComponent::AutoPtr TiffCreator::create(uint32_t extendedTag, - IfdId group) - { - TiffComponent::AutoPtr tc(0); - uint16_t tag = static_cast(extendedTag & 0xffff); - const TiffGroupStruct* ts = find(tiffGroupStruct_, - TiffGroupStruct::Key(extendedTag, group)); - if (ts && ts->newTiffCompFct_) { - tc = ts->newTiffCompFct_(tag, group); - } -#ifdef DEBUG - else { - if (!ts) { - std::cerr << "Warning: No TIFF structure entry found for "; - } - else { - std::cerr << "Warning: No TIFF component creator found for "; - } - std::cerr << "extended tag 0x" << std::setw(4) << std::setfill('0') - << std::hex << std::right << extendedTag - << ", group " << groupName(group) << "\n"; - } -#endif - return tc; - } // TiffCreator::create - - void TiffCreator::getPath(TiffPath& tiffPath, - uint32_t extendedTag, - IfdId group, - uint32_t root) - { - const TiffTreeStruct* ts = 0; - do { - tiffPath.push(TiffPathItem(extendedTag, group)); - ts = find(tiffTreeStruct_, TiffTreeStruct::Key(root, group)); - assert(ts != 0); - extendedTag = ts->parentExtTag_; - group = ts->parentGroup_; - } while (!(ts->root_ == root && ts->group_ == ifdIdNotSet)); - - } // TiffCreator::getPath - - ByteOrder TiffParserWorker::decode( - ExifData& exifData, - IptcData& iptcData, - XmpData& xmpData, - const byte* pData, - uint32_t size, - uint32_t root, - FindDecoderFct findDecoderFct, - TiffHeaderBase* pHeader - ) - { - // Create standard TIFF header if necessary - std::auto_ptr ph; - if (!pHeader) { - ph = std::auto_ptr(new TiffHeader); - pHeader = ph.get(); - } - TiffComponent::AutoPtr rootDir = parse(pData, size, root, pHeader); - if (0 != rootDir.get()) { - TiffDecoder decoder(exifData, - iptcData, - xmpData, - rootDir.get(), - findDecoderFct); - rootDir->accept(decoder); - } - return pHeader->byteOrder(); - - } // TiffParserWorker::decode - - WriteMethod TiffParserWorker::encode( - BasicIo& io, - const byte* pData, - uint32_t size, - const ExifData& exifData, - const IptcData& iptcData, - const XmpData& xmpData, - uint32_t root, - FindEncoderFct findEncoderFct, - TiffHeaderBase* pHeader, - OffsetWriter* pOffsetWriter - ) - { - /* - 1) parse the binary image, if one is provided, and - 2) attempt updating the parsed tree in-place ("non-intrusive writing") - 3) else, create a new tree and write a new TIFF structure ("intrusive - writing"). If there is a parsed tree, it is only used to access the - image data in this case. - */ - assert(pHeader); - assert(pHeader->byteOrder() != invalidByteOrder); - WriteMethod writeMethod = wmIntrusive; - TiffComponent::AutoPtr parsedTree = parse(pData, size, root, pHeader); - PrimaryGroups primaryGroups; - findPrimaryGroups(primaryGroups, parsedTree.get()); - if (0 != parsedTree.get()) { - // Attempt to update existing TIFF components based on metadata entries - TiffEncoder encoder(exifData, - iptcData, - xmpData, - parsedTree.get(), - false, - &primaryGroups, - pHeader, - findEncoderFct); - parsedTree->accept(encoder); - if (!encoder.dirty()) writeMethod = wmNonIntrusive; - } - if (writeMethod == wmIntrusive) { - TiffComponent::AutoPtr createdTree = TiffCreator::create(root, ifdIdNotSet); - if (0 != parsedTree.get()) { - // Copy image tags from the original image to the composite - TiffCopier copier(createdTree.get(), root, pHeader, &primaryGroups); - parsedTree->accept(copier); - } - // Add entries from metadata to composite - TiffEncoder encoder(exifData, - iptcData, - xmpData, - createdTree.get(), - parsedTree.get() == 0, - &primaryGroups, - pHeader, - findEncoderFct); - encoder.add(createdTree.get(), parsedTree.get(), root); - // Write binary representation from the composite tree - DataBuf header = pHeader->write(); - BasicIo::AutoPtr tempIo(io.temporary()); // may throw - assert(tempIo.get() != 0); - IoWrapper ioWrapper(*tempIo, header.pData_, header.size_, pOffsetWriter); - uint32_t imageIdx(uint32_t(-1)); - createdTree->write(ioWrapper, - pHeader->byteOrder(), - header.size_, - uint32_t(-1), - uint32_t(-1), - imageIdx); - if (pOffsetWriter) pOffsetWriter->writeOffsets(*tempIo); - io.transfer(*tempIo); // may throw -#ifndef SUPPRESS_WARNINGS - EXV_INFO << "Write strategy: Intrusive\n"; -#endif - } -#ifndef SUPPRESS_WARNINGS - else { - EXV_INFO << "Write strategy: Non-intrusive\n"; - } -#endif - return writeMethod; - } // TiffParserWorker::encode - - TiffComponent::AutoPtr TiffParserWorker::parse( - const byte* pData, - uint32_t size, - uint32_t root, - TiffHeaderBase* pHeader - ) - { - if (pData == 0 || size == 0) return TiffComponent::AutoPtr(0); - if (!pHeader->read(pData, size) || pHeader->offset() >= size) { - throw Error(3, "TIFF"); - } - TiffComponent::AutoPtr rootDir = TiffCreator::create(root, ifdIdNotSet); - if (0 != rootDir.get()) { - rootDir->setStart(pData + pHeader->offset()); - TiffRwState::AutoPtr state( - new TiffRwState(pHeader->byteOrder(), 0)); - TiffReader reader(pData, size, rootDir.get(), state); - rootDir->accept(reader); - reader.postProcess(); - } - return rootDir; - - } // TiffParserWorker::parse - - void TiffParserWorker::findPrimaryGroups(PrimaryGroups& primaryGroups, - TiffComponent* pSourceDir) - { - if (0 == pSourceDir) return; - - const IfdId imageGroups[] = { - ifd0Id, - ifd1Id, - ifd2Id, - ifd3Id, - subImage1Id, - subImage2Id, - subImage3Id, - subImage4Id, - subImage5Id, - subImage6Id, - subImage7Id, - subImage8Id, - subImage9Id - }; - - for (unsigned int i = 0; i < EXV_COUNTOF(imageGroups); ++i) { - TiffFinder finder(0x00fe, imageGroups[i]); - pSourceDir->accept(finder); - TiffEntryBase* te = dynamic_cast(finder.result()); - if ( te - && te->pValue()->typeId() == unsignedLong - && te->pValue()->count() == 1 - && (te->pValue()->toLong() & 1) == 0) { - primaryGroups.push_back(te->group()); - } - } - - } // TiffParserWorker::findPrimaryGroups - - TiffHeaderBase::TiffHeaderBase(uint16_t tag, - uint32_t size, - ByteOrder byteOrder, - uint32_t offset) - : tag_(tag), - size_(size), - byteOrder_(byteOrder), - offset_(offset) - { - } - - TiffHeaderBase::~TiffHeaderBase() - { - } - - bool TiffHeaderBase::read(const byte* pData, uint32_t size) - { - if (!pData || size < 8) return false; - - if (pData[0] == 0x49 && pData[1] == 0x49) { - byteOrder_ = littleEndian; - } - else if (pData[0] == 0x4d && pData[1] == 0x4d) { - byteOrder_ = bigEndian; - } - else { - return false; - } - if (tag_ != getUShort(pData + 2, byteOrder_)) return false; - offset_ = getULong(pData + 4, byteOrder_); - - return true; - } // TiffHeaderBase::read - - DataBuf TiffHeaderBase::write() const - { - DataBuf buf(8); - switch (byteOrder_) { - case littleEndian: - buf.pData_[0] = 0x49; - buf.pData_[1] = 0x49; - break; - case bigEndian: - buf.pData_[0] = 0x4d; - buf.pData_[1] = 0x4d; - break; - case invalidByteOrder: - assert(false); - break; - } - us2Data(buf.pData_ + 2, tag_, byteOrder_); - ul2Data(buf.pData_ + 4, 0x00000008, byteOrder_); - return buf; - } - - void TiffHeaderBase::print(std::ostream& os, const std::string& prefix) const - { - os << prefix - << _("TIFF header, offset") << " = 0x" - << std::setw(8) << std::setfill('0') << std::hex << std::right - << offset_; - - switch (byteOrder_) { - case littleEndian: os << ", " << _("little endian encoded"); break; - case bigEndian: os << ", " << _("big endian encoded"); break; - case invalidByteOrder: break; - } - os << "\n"; - } // TiffHeaderBase::print - - ByteOrder TiffHeaderBase::byteOrder() const - { - return byteOrder_; - } - - void TiffHeaderBase::setByteOrder(ByteOrder byteOrder) - { - byteOrder_ = byteOrder; - } - - uint32_t TiffHeaderBase::offset() const - { - return offset_; - } - - void TiffHeaderBase::setOffset(uint32_t offset) - { - offset_ = offset; - } - - uint32_t TiffHeaderBase::size() const - { - return size_; - } - - uint16_t TiffHeaderBase::tag() const - { - return tag_; - } - - bool TiffHeaderBase::isImageTag( uint16_t /*tag*/, - IfdId /*group*/, - const PrimaryGroups* /*primaryGroups*/) const - { - return false; - } - - bool isTiffImageTag(uint16_t tag, IfdId group) - { - //! List of TIFF image tags - static const TiffImgTagStruct tiffImageTags[] = { - { 0x00fe, ifd0Id }, // Exif.Image.NewSubfileType - { 0x00ff, ifd0Id }, // Exif.Image.SubfileType - { 0x0100, ifd0Id }, // Exif.Image.ImageWidth - { 0x0101, ifd0Id }, // Exif.Image.ImageLength - { 0x0102, ifd0Id }, // Exif.Image.BitsPerSample - { 0x0103, ifd0Id }, // Exif.Image.Compression - { 0x0106, ifd0Id }, // Exif.Image.PhotometricInterpretation - { 0x010a, ifd0Id }, // Exif.Image.FillOrder - { 0x0111, ifd0Id }, // Exif.Image.StripOffsets - { 0x0115, ifd0Id }, // Exif.Image.SamplesPerPixel - { 0x0116, ifd0Id }, // Exif.Image.RowsPerStrip - { 0x0117, ifd0Id }, // Exif.Image.StripByteCounts - { 0x011a, ifd0Id }, // Exif.Image.XResolution - { 0x011b, ifd0Id }, // Exif.Image.YResolution - { 0x011c, ifd0Id }, // Exif.Image.PlanarConfiguration - { 0x0122, ifd0Id }, // Exif.Image.GrayResponseUnit - { 0x0123, ifd0Id }, // Exif.Image.GrayResponseCurve - { 0x0124, ifd0Id }, // Exif.Image.T4Options - { 0x0125, ifd0Id }, // Exif.Image.T6Options - { 0x0128, ifd0Id }, // Exif.Image.ResolutionUnit - { 0x012d, ifd0Id }, // Exif.Image.TransferFunction - { 0x013d, ifd0Id }, // Exif.Image.Predictor - { 0x013e, ifd0Id }, // Exif.Image.WhitePoint - { 0x013f, ifd0Id }, // Exif.Image.PrimaryChromaticities - { 0x0140, ifd0Id }, // Exif.Image.ColorMap - { 0x0141, ifd0Id }, // Exif.Image.HalftoneHints - { 0x0142, ifd0Id }, // Exif.Image.TileWidth - { 0x0143, ifd0Id }, // Exif.Image.TileLength - { 0x0144, ifd0Id }, // Exif.Image.TileOffsets - { 0x0145, ifd0Id }, // Exif.Image.TileByteCounts - { 0x014c, ifd0Id }, // Exif.Image.InkSet - { 0x014d, ifd0Id }, // Exif.Image.InkNames - { 0x014e, ifd0Id }, // Exif.Image.NumberOfInks - { 0x0150, ifd0Id }, // Exif.Image.DotRange - { 0x0151, ifd0Id }, // Exif.Image.TargetPrinter - { 0x0152, ifd0Id }, // Exif.Image.ExtraSamples - { 0x0153, ifd0Id }, // Exif.Image.SampleFormat - { 0x0154, ifd0Id }, // Exif.Image.SMinSampleValue - { 0x0155, ifd0Id }, // Exif.Image.SMaxSampleValue - { 0x0156, ifd0Id }, // Exif.Image.TransferRange - { 0x0157, ifd0Id }, // Exif.Image.ClipPath - { 0x0158, ifd0Id }, // Exif.Image.XClipPathUnits - { 0x0159, ifd0Id }, // Exif.Image.YClipPathUnits - { 0x015a, ifd0Id }, // Exif.Image.Indexed - { 0x015b, ifd0Id }, // Exif.Image.JPEGTables - { 0x0200, ifd0Id }, // Exif.Image.JPEGProc - { 0x0201, ifd0Id }, // Exif.Image.JPEGInterchangeFormat - { 0x0202, ifd0Id }, // Exif.Image.JPEGInterchangeFormatLength - { 0x0203, ifd0Id }, // Exif.Image.JPEGRestartInterval - { 0x0205, ifd0Id }, // Exif.Image.JPEGLosslessPredictors - { 0x0206, ifd0Id }, // Exif.Image.JPEGPointTransforms - { 0x0207, ifd0Id }, // Exif.Image.JPEGQTables - { 0x0208, ifd0Id }, // Exif.Image.JPEGDCTables - { 0x0209, ifd0Id }, // Exif.Image.JPEGACTables - { 0x0211, ifd0Id }, // Exif.Image.YCbCrCoefficients - { 0x0212, ifd0Id }, // Exif.Image.YCbCrSubSampling - { 0x0213, ifd0Id }, // Exif.Image.YCbCrPositioning - { 0x0214, ifd0Id }, // Exif.Image.ReferenceBlackWhite - { 0x828d, ifd0Id }, // Exif.Image.CFARepeatPatternDim - { 0x828e, ifd0Id }, // Exif.Image.CFAPattern - { 0x8773, ifd0Id }, // Exif.Image.InterColorProfile - { 0x8824, ifd0Id }, // Exif.Image.SpectralSensitivity - { 0x8828, ifd0Id }, // Exif.Image.OECF - { 0x9102, ifd0Id }, // Exif.Image.CompressedBitsPerPixel - { 0x9217, ifd0Id }, // Exif.Image.SensingMethod - }; - - // If tag, group is one of the image tags listed above -> bingo! - if (find(tiffImageTags, TiffImgTagStruct::Key(tag, group))) { -#ifdef DEBUG - ExifKey key(tag, groupName(group)); - std::cerr << "Image tag: " << key << " (3)\n"; -#endif - return true; - } -#ifdef DEBUG - std::cerr << "Not an image tag: " << key << " (4)\n"; -#endif - return false; - } - - TiffHeader::TiffHeader(ByteOrder byteOrder, uint32_t offset, bool hasImageTags) - : TiffHeaderBase(42, 8, byteOrder, offset), - hasImageTags_(hasImageTags) - { - } - - TiffHeader::~TiffHeader() - { - } - - bool TiffHeader::isImageTag( uint16_t tag, - IfdId group, - const PrimaryGroups* pPrimaryGroups) const - { - if (!hasImageTags_) { -#ifdef DEBUG - std::cerr << "No image tags in this image\n"; -#endif - return false; - } -#ifdef DEBUG - ExifKey key(tag, groupName(group)); -#endif - // If there are primary groups and none matches group, we're done - if ( pPrimaryGroups != 0 - && !pPrimaryGroups->empty() - && std::find(pPrimaryGroups->begin(), pPrimaryGroups->end(), group) - == pPrimaryGroups->end()) { -#ifdef DEBUG - std::cerr << "Not an image tag: " << key << " (1)\n"; -#endif - return false; - } - // All tags of marked primary groups other than IFD0 are considered - // image tags. That should take care of NEFs until we know better. - if ( pPrimaryGroups != 0 - && !pPrimaryGroups->empty() - && group != ifd0Id) { -#ifdef DEBUG - ExifKey key(tag, groupName(group)); - std::cerr << "Image tag: " << key << " (2)\n"; -#endif - return true; - } - // Finally, if tag, group is one of the TIFF image tags -> bingo! - return isTiffImageTag(tag, group); - } // TiffHeader::isImageTag - - void OffsetWriter::setOrigin(OffsetId id, uint32_t origin, ByteOrder byteOrder) - { - offsetList_[id] = OffsetData(origin, byteOrder); - } - - void OffsetWriter::setTarget(OffsetId id, uint32_t target) - { - OffsetList::iterator it = offsetList_.find(id); - if (it != offsetList_.end()) it->second.target_ = target; - } - - void OffsetWriter::writeOffsets(BasicIo& io) const - { - for (OffsetList::const_iterator it = offsetList_.begin(); it != offsetList_.end(); ++it) { - io.seek(it->second.origin_, BasicIo::beg); - byte buf[4] = { 0, 0, 0, 0 }; - l2Data(buf, it->second.target_, it->second.byteOrder_); - io.write(buf, 4); - } - } - -}} // namespace Internal, Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/tiffimage.hpp b/platform/win32/msvc/external/exiv2/src/tiffimage.hpp deleted file mode 100644 index 887879abf25..00000000000 --- a/platform/win32/msvc/external/exiv2/src/tiffimage.hpp +++ /dev/null @@ -1,216 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file tiffimage.hpp - @brief Class TiffImage - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 15-Mar-06, ahu: created - */ -#ifndef TIFFIMAGE_HPP_ -#define TIFFIMAGE_HPP_ - -// ***************************************************************************** -// included header files -#include "image.hpp" -#include "basicio.hpp" -#include "types.hpp" - -// + standard includes -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class definitions - - // Add TIFF to the supported image formats - namespace ImageType { - const int tiff = 4; //!< TIFF image type (see class TiffImage) - const int dng = 4; //!< DNG image type (see class TiffImage) - const int nef = 4; //!< NEF image type (see class TiffImage) - const int pef = 4; //!< PEF image type (see class TiffImage) - const int arw = 4; //!< ARW image type (see class TiffImage) - const int sr2 = 4; //!< SR2 image type (see class TiffImage) - const int srw = 4; //!< SRW image type (see class TiffImage) - } - - /*! - @brief Class to access TIFF images. Exif metadata is - supported directly, IPTC is read from the Exif data, if present. - */ - class EXIV2API TiffImage : public Image { - public: - //! @name Creators - //@{ - /*! - @brief Constructor that can either open an existing TIFF image or create - a new image from scratch. If a new image is to be created, any - existing data is overwritten. Since the constructor can not return - a result, callers should check the good() method after object - construction to determine success or failure. - @param io An auto-pointer that owns a BasicIo instance used for - reading and writing image metadata. \b Important: The constructor - takes ownership of the passed in BasicIo instance through the - auto-pointer. Callers should not continue to use the BasicIo - instance after it is passed to this method. Use the Image::io() - method to get a temporary reference. - @param create Specifies if an existing image should be read (false) - or if a new file should be created (true). - */ - TiffImage(BasicIo::AutoPtr io, bool create); - //@} - - //! @name Manipulators - //@{ - void readMetadata(); - void writeMetadata(); - /*! - @brief Not supported. TIFF format does not contain a comment. - Calling this function will throw an Error(32). - */ - void setComment(const std::string& comment); - //@} - - //! @name Accessors - //@{ - std::string mimeType() const; - int pixelWidth() const; - int pixelHeight() const; - //@} - - private: - //! @name NOT Implemented - //@{ - //! Copy constructor - TiffImage(const TiffImage& rhs); - //! Assignment operator - TiffImage& operator=(const TiffImage& rhs); - //@} - - //! @name Accessors - //@{ - //! Return the group name of the group with the primary image. - std::string primaryGroup() const; - //@} - - private: - // DATA - mutable std::string primaryGroup_; //!< The primary group - mutable std::string mimeType_; //!< The MIME type - mutable int pixelWidth_; //!< Width of the primary image in pixels - mutable int pixelHeight_; //!< Height of the primary image in pixels - - }; // class TiffImage - - /*! - @brief Stateless parser class for data in TIFF format. Images use this - class to decode and encode TIFF data. It is a wrapper of the - internal class Internal::TiffParserWorker. - */ - class EXIV2API TiffParser { - public: - /*! - @brief Decode metadata from a buffer \em pData of length \em size - with data in TIFF format to the provided metadata containers. - - @param exifData Exif metadata container. - @param iptcData IPTC metadata container. - @param xmpData XMP metadata container. - @param pData Pointer to the data buffer. Must point to data in TIFF - format; no checks are performed. - @param size Length of the data buffer. - - @return Byte order in which the data is encoded. - */ - static ByteOrder decode( - ExifData& exifData, - IptcData& iptcData, - XmpData& xmpData, - const byte* pData, - uint32_t size - ); - /*! - @brief Encode metadata from the provided metadata to TIFF format. - - The original binary image in the memory block \em pData, \em size is - parsed and updated in-place if possible ("non-intrusive" writing). - If that is not possible (e.g., if new tags were added), the entire - TIFF structure is re-written to the \em io instance ("intrusive" writing).
- The return value indicates which write method was used. If it is - \c wmNonIntrusive, the original memory \em pData, \em size contains - the result and nothing is written to \em io. If the return value is - \c wmIntrusive, a new TIFF structure was created and written to - \em io. The memory block \em pData, \em size may be partly updated - in this case and should not be used anymore. - - @note If there is no metadata to encode, i.e., all metadata - containers are empty, then the return value is \c wmIntrusive - and nothing is written to \em io, i.e., no TIFF header is written. - - @param io IO instance to write the binary image to in case of - "intrusive" writing. Nothing is written to \em io in - the case of "non-intrusive" writing. - @param pData Pointer to the binary image data buffer. Must - point to data in TIFF format; no checks are - performed. Will be modified if "non-intrusive" - writing is possible. - @param size Length of the data buffer. - @param byteOrder Byte order to use. - @param exifData Exif metadata container. - @param iptcData IPTC metadata container. - @param xmpData XMP metadata container. - - @return Write method used. - */ - static WriteMethod encode( - BasicIo& io, - const byte* pData, - uint32_t size, - ByteOrder byteOrder, - const ExifData& exifData, - const IptcData& iptcData, - const XmpData& xmpData - ); - - }; // class TiffParser - -// ***************************************************************************** -// template, inline and free functions - - // These could be static private functions on Image subclasses but then - // ImageFactory needs to be made a friend. - /*! - @brief Create a new TiffImage instance and return an auto-pointer to it. - Caller owns the returned object and the auto-pointer ensures that - it will be deleted. - */ - EXIV2API Image::AutoPtr newTiffInstance(BasicIo::AutoPtr io, bool create); - - //! Check if the file iIo is a TIFF image. - EXIV2API bool isTiffType(BasicIo& iIo, bool advance); - -} // namespace Exiv2 - -#endif // #ifndef TIFFIMAGE_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/tiffimage_int.hpp b/platform/win32/msvc/external/exiv2/src/tiffimage_int.hpp deleted file mode 100644 index d00afc80125..00000000000 --- a/platform/win32/msvc/external/exiv2/src/tiffimage_int.hpp +++ /dev/null @@ -1,492 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file tiffimage_int.hpp - @brief Internal class TiffParserWorker to parse TIFF data. - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 23-Apr-08, ahu: created - */ -#ifndef TIFFIMAGE_INT_HPP_ -#define TIFFIMAGE_INT_HPP_ - -// ***************************************************************************** -// included header files -#include "tifffwd_int.hpp" -#include "tiffcomposite_int.hpp" -#include "image.hpp" -#include "tags_int.hpp" -#include "types.hpp" - -// + standard includes -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - /*! - @brief Contains internal objects which are not published and are not part - of the libexiv2 API. - */ - namespace Internal { - -// ***************************************************************************** -// class definitions - - /*! - @brief Abstract base class defining the interface of an image header. - Used internally by classes for TIFF-based images. Default - implementation is for the regular TIFF header. - */ - class TiffHeaderBase { - public: - //! @name Creators - //@{ - //! Constructor taking \em tag, \em size and default \em byteOrder and \em offset. - TiffHeaderBase(uint16_t tag, - uint32_t size, - ByteOrder byteOrder, - uint32_t offset); - //! Virtual destructor. - virtual ~TiffHeaderBase() =0; - //@} - - //! @name Manipulators - //@{ - /*! - @brief Read the image header from a data buffer. Return false if the - data buffer does not contain an image header of the expected - format, else true. - - @param pData Pointer to the data buffer. - @param size Number of bytes in the data buffer. - @return True if the TIFF header was read successfully. False if the - data buffer does not contain a valid TIFF header. - */ - virtual bool read(const byte* pData, uint32_t size); - //! Set the byte order. - virtual void setByteOrder(ByteOrder byteOrder); - //! Set the offset to the start of the root directory. - virtual void setOffset(uint32_t offset); - //@} - - //! @name Accessors - //@{ - /*! - @brief Return the image header in binary format. - The caller owns this data and %DataBuf ensures that it will be deleted. - - @return Binary header data. - */ - virtual DataBuf write() const; - /*! - @brief Print debug info for the image header to \em os. - - @param os Output stream to write to. - @param prefix Prefix to be written before each line of output. - */ - virtual void print(std::ostream& os, const std::string& prefix ="") const; - //! Return the byte order (little or big endian). - virtual ByteOrder byteOrder() const; - //! Return the offset to the start of the root directory. - virtual uint32_t offset() const; - //! Return the size (in bytes) of the image header. - virtual uint32_t size() const; - //! Return the tag value (magic number) which identifies the buffer as TIFF data. - virtual uint16_t tag() const; - /*! - @brief Return \c true if the %Exif \em tag from \em group is an image tag. - - Certain tags of TIFF and TIFF-like images are required to correctly - display the primary image. These image tags contain image data rather - than metadata. - - @param tag Tag number. - @param group Group identifier. - @param pPrimaryGroups Pointer to a list of TIFF groups that contain - primary images, empty if none are marked. - - @return The default implementation returns \c false. - */ - virtual bool isImageTag( uint16_t tag, - IfdId group, - const PrimaryGroups* pPrimaryGroups) const; - //@} - - private: - // DATA - const uint16_t tag_; //!< Tag to identify the buffer as TIFF data - const uint32_t size_; //!< Size of the header - ByteOrder byteOrder_; //!< Applicable byte order - uint32_t offset_; //!< Offset to the start of the root dir - - }; // class TiffHeaderBase - - //! Convenience function to check if tag, group is in the list of TIFF image tags. - bool isTiffImageTag(uint16_t tag, IfdId group); - - /*! - @brief Standard TIFF header structure. - */ - class TiffHeader : public TiffHeaderBase { - public: - //! @name Creators - //@{ - //! Default constructor - TiffHeader(ByteOrder byteOrder =littleEndian, - uint32_t offset =0x00000008, - bool hasImageTags =true); - //! Destructor - ~TiffHeader(); - //@} - //@{ - //! @name Accessors - bool isImageTag( uint16_t tag, - IfdId group, - const PrimaryGroups* pPrimaryGroups) const; - //@} - - private: - // DATA - bool hasImageTags_; //!< Indicates if image tags are supported - }; // class TiffHeader - - /*! - @brief Data structure used to list image tags for TIFF and TIFF-like images. - */ - struct TiffImgTagStruct { - //! Search key for TIFF image tag structure. - struct Key { - //! Constructor - Key(uint16_t t, IfdId g) : t_(t), g_(g) {} - uint16_t t_; //!< %Tag - IfdId g_; //!< %Group - }; - - //! Comparison operator to compare a TiffImgTagStruct with a TiffImgTagStruct::Key - bool operator==(const Key& key) const - { - return key.g_ == group_ && key.t_ == tag_; - } - - // DATA - uint16_t tag_; //!< Image tag - IfdId group_; //!< Group that contains the image tag - }; // struct TiffImgTagStruct - - /*! - @brief Data structure used as a row (element) of a table (array) - defining the TIFF component used for each tag in a group. - */ - struct TiffGroupStruct { - //! Search key for TIFF group structure. - struct Key { - //! Constructor - Key(uint32_t e, IfdId g) : e_(e), g_(g) {} - uint32_t e_; //!< Extended tag - IfdId g_; //!< %Group - }; - - //! Comparison operator to compare a TiffGroupStruct with a TiffGroupStruct::Key - bool operator==(const Key& key) const - { - return key.g_ == group_ - && (Tag::all == extendedTag_ || key.e_ == extendedTag_); - } - //! Return the tag corresponding to the extended tag - uint16_t tag() const { return static_cast(extendedTag_ & 0xffff); } - - // DATA - uint32_t extendedTag_; //!< Tag (32 bit so that it can contain special tags) - IfdId group_; //!< Group that contains the tag - NewTiffCompFct newTiffCompFct_; //!< Function to create the correct TIFF component - }; - - /*! - @brief Data structure used as a row of the table which describes TIFF trees. - Multiple trees are needed as TIFF-based RAW image formats do not always - use standard TIFF layout. - */ - struct TiffTreeStruct { - struct Key; - //! Comparison operator to compare a TiffTreeStruct with a TiffTreeStruct::Key - bool operator==(const Key& key) const; - - // DATA - uint32_t root_; //!< Tree root element, identifies a tree - IfdId group_; //!< Each group is a node in the tree - IfdId parentGroup_; //!< Parent group - uint32_t parentExtTag_; //!< Parent tag (32 bit so that it can contain special tags) - }; - - //! Search key for TIFF tree structure. - struct TiffTreeStruct::Key { - //! Constructor - Key(uint32_t r, IfdId g) : r_(r), g_(g) {} - uint32_t r_; //!< Root - IfdId g_; //!< %Group - }; - - /*! - @brief TIFF component factory. - */ - class TiffCreator { - public: - /*! - @brief Create the TiffComponent for TIFF entry \em extendedTag and - \em group. The embedded lookup table is used to find the correct - component creation function. If the pointer that is returned - is 0, then the TIFF entry should be ignored. - */ - static std::auto_ptr create(uint32_t extendedTag, - IfdId group); - /*! - @brief Get the path, i.e., a list of extended tag and group pairs, from - the \em root TIFF element to the TIFF entry \em extendedTag and - \em group. - */ - static void getPath(TiffPath& tiffPath, - uint32_t extendedTag, - IfdId group, - uint32_t root); - - private: - static const TiffTreeStruct tiffTreeStruct_[]; // parse( - const byte* pData, - uint32_t size, - uint32_t root, - TiffHeaderBase* pHeader - ); - /*! - @brief Find primary groups in the source tree provided and populate - the list of primary groups. - - @param primaryGroups List of primary groups which is populated - @param pSourceDir Pointer to the source composite tree to search (may be 0) - */ - static void findPrimaryGroups( - PrimaryGroups& primaryGroups, - TiffComponent* pSourceDir - ); - - }; // class TiffParserWorker - - /*! - @brief Table of TIFF decoding and encoding functions and find functions. - This class is separated from the metadata decoder and encoder - visitors so that the parser can be parametrized with a different - table if needed. This is used, eg., for CR2 format, which uses a - different decoder table. - */ - class TiffMapping { - public: - /*! - @brief Find the decoder function for a key. - - If the returned pointer is 0, the tag should not be decoded, - else the decoder function should be used. - - @param make Camera make - @param extendedTag Extended tag - @param group %Group - - @return Pointer to the decoder function - */ - static DecoderFct findDecoder(const std::string& make, - uint32_t extendedTag, - IfdId group); - /*! - @brief Find special encoder function for a key. - - If the returned pointer is 0, the tag should be encoded with the - encoder function of the TIFF component, else the encoder function - should be used. - - @param make Camera make - @param extendedTag Extended tag - @param group %Group - - @return Pointer to the encoder function - */ - static EncoderFct findEncoder( - const std::string& make, - uint32_t extendedTag, - IfdId group - ); - - private: - static const TiffMappingInfo tiffMappingInfo_[]; // OffsetList; - - // DATA - OffsetList offsetList_; //!< List of the offsets to replace - - }; // class OffsetWriter - - // Todo: Move this class to metadatum_int.hpp or tags_int.hpp - //! Unary predicate that matches an Exifdatum with a given IfdId. - class FindExifdatum { - public: - //! Constructor, initializes the object with the IfdId to look for. - FindExifdatum(Exiv2::Internal::IfdId ifdId) : ifdId_(ifdId) {} - //! Returns true if IFD id matches. - bool operator()(const Exiv2::Exifdatum& md) const { return ifdId_ == md.ifdId(); } - - private: - Exiv2::Internal::IfdId ifdId_; - - }; // class FindExifdatum - -}} // namespace Internal, Exiv2 - -#endif // #ifndef TIFFIMAGE_INT_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/tiffmn-test.cpp b/platform/win32/msvc/external/exiv2/src/tiffmn-test.cpp deleted file mode 100644 index 626c3027cab..00000000000 --- a/platform/win32/msvc/external/exiv2/src/tiffmn-test.cpp +++ /dev/null @@ -1,212 +0,0 @@ -// ***************************************************************** -*- C++ -*- -// tiffmn-test.cpp, $Rev: 1512 $ -// Makernote TIFF writer tests. - -#include "tiffimage.hpp" -#include "exif.hpp" -#include "error.hpp" - -#include -#include -#include - -using namespace Exiv2; - -void canonmn(const std::string& path); -void fujimn(const std::string& path); -void minoltamn(const std::string& path); -void nikon1mn(const std::string& path); -void nikon2mn(const std::string& path); -void nikon3mn(const std::string& path); -void olympusmn(const std::string& path); -void panasonicmn(const std::string& path); -void sigmamn(const std::string& path); -void sony1mn(const std::string& path); -void sony2mn(const std::string& path); - -void print(const ExifData& exifData); - -int main() -try { - canonmn("exiv2-canonmn.tif"); - fujimn("exiv2-fujimn.tif"); - minoltamn("exiv2-minoltamn.tif"); - nikon1mn("exiv2-nikon1mn.tif"); - nikon2mn("exiv2-nikon2mn.tif"); - nikon3mn("exiv2-nikon3mn.tif"); - olympusmn("exiv2-olympusmn.tif"); - panasonicmn("exiv2-panasonicmn.tif"); - sigmamn("exiv2-sigmamn.tif"); - sony1mn("exiv2-sony1mn.tif"); - sony2mn("exiv2-sony2mn.tif"); - - return 0; -} -catch (const Error& e) { - std::cout << e << "\n"; -} - -void canonmn(const std::string& path) -{ - TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); - ExifData& exifData = tiffImage.exifData(); - - exifData["Exif.Image.Make"] = "Canon"; - exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; - exifData["Exif.Canon.OwnerName"] = "Camera Owner"; - - print(exifData); - tiffImage.writeMetadata(); -} - -void fujimn(const std::string& path) -{ - TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); - ExifData& exifData = tiffImage.exifData(); - - exifData["Exif.Image.Make"] = "FUJIFILM"; - exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; - exifData["Exif.Fujifilm.Quality"] = "Very good"; - - print(exifData); - tiffImage.writeMetadata(); -} - -void minoltamn(const std::string& path) -{ - TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); - ExifData& exifData = tiffImage.exifData(); - - exifData["Exif.Image.Make"] = "Minolta"; - exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; - exifData["Exif.Minolta.Quality"] = uint32_t(42); - - print(exifData); - tiffImage.writeMetadata(); -} - -void nikon1mn(const std::string& path) -{ - TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); - ExifData& exifData = tiffImage.exifData(); - - exifData["Exif.Image.Make"] = "NIKON"; - exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; - exifData["Exif.Nikon1.Quality"] = "Excellent"; - - print(exifData); - tiffImage.writeMetadata(); -} - -void nikon2mn(const std::string& path) -{ - TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); - ExifData& exifData = tiffImage.exifData(); - - exifData["Exif.Image.Make"] = "NIKON"; - exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; - exifData["Exif.Nikon2.Quality"] = uint16_t(42); - - print(exifData); - tiffImage.writeMetadata(); -} - -void nikon3mn(const std::string& path) -{ - TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); - ExifData& exifData = tiffImage.exifData(); - - exifData["Exif.Image.Make"] = "NIKON"; - exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; - exifData["Exif.Nikon3.Quality"] = "Nikon3 quality"; - - print(exifData); - tiffImage.writeMetadata(); -} - -void olympusmn(const std::string& path) -{ - TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); - ExifData& exifData = tiffImage.exifData(); - - exifData["Exif.Image.Make"] = "OLYMPUS"; - exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; - exifData["Exif.Olympus.Quality"] = uint16_t(42); - - print(exifData); - tiffImage.writeMetadata(); -} - -void panasonicmn(const std::string& path) -{ - TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); - ExifData& exifData = tiffImage.exifData(); - - exifData["Exif.Image.Make"] = "Panasonic"; - exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; - exifData["Exif.Panasonic.Quality"] = uint16_t(42); - - print(exifData); - tiffImage.writeMetadata(); -} - -void sigmamn(const std::string& path) -{ - TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); - ExifData& exifData = tiffImage.exifData(); - - exifData["Exif.Image.Make"] = "SIGMA"; - exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; - exifData["Exif.Sigma.Quality"] = "Sigma quality"; - - print(exifData); - tiffImage.writeMetadata(); -} - -void sony1mn(const std::string& path) -{ - TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); - ExifData& exifData = tiffImage.exifData(); - - exifData["Exif.Image.Make"] = "SONY"; - exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; - exifData["Exif.Sony.0x2000"] = uint16_t(42); - - print(exifData); - tiffImage.writeMetadata(); -} - -void sony2mn(const std::string& path) -{ - TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); - ExifData& exifData = tiffImage.exifData(); - - exifData["Exif.Image.Make"] = "SONY"; - exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; - exifData["Exif.Sony.0x2001"] = uint16_t(43); - - print(exifData); - tiffImage.writeMetadata(); -} - -void print(const ExifData& exifData) -{ - if (exifData.empty()) { - std::string error("No Exif data found in the file"); - throw Exiv2::Error(1, error); - } - Exiv2::ExifData::const_iterator end = exifData.end(); - for (Exiv2::ExifData::const_iterator i = exifData.begin(); i != end; ++i) { - std::cout << std::setw(44) << std::setfill(' ') << std::left - << i->key() << " " - << "0x" << std::setw(4) << std::setfill('0') << std::right - << std::hex << i->tag() << " " - << std::setw(9) << std::setfill(' ') << std::left - << i->typeName() << " " - << std::dec << std::setw(3) - << std::setfill(' ') << std::right - << i->count() << " " - << std::dec << i->value() - << "\n"; - } -} diff --git a/platform/win32/msvc/external/exiv2/src/tiffvisitor.cpp b/platform/win32/msvc/external/exiv2/src/tiffvisitor.cpp deleted file mode 100644 index bcd57a1375b..00000000000 --- a/platform/win32/msvc/external/exiv2/src/tiffvisitor.cpp +++ /dev/null @@ -1,1640 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: tiffvisitor.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - History: 11-Apr-06, ahu: created - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: tiffvisitor.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#include "tiffcomposite_int.hpp" // Do not change the order of these 2 includes, -#include "tiffvisitor_int.hpp" // see bug #487 -#include "tiffimage_int.hpp" -#include "makernote_int.hpp" -#include "exif.hpp" -#include "iptc.hpp" -#include "value.hpp" -#include "image.hpp" -#include "jpgimage.hpp" -#include "i18n.h" // NLS support. - -// + standard includes -#include -#include -#include -#include - -// ***************************************************************************** -namespace { - //! Unary predicate that matches an Exifdatum with a given group and index. - class FindExifdatum2 { - public: - //! Constructor, initializes the object with the group and index to look for. - FindExifdatum2(Exiv2::Internal::IfdId group, int idx) - : groupName_(Exiv2::Internal::groupName(group)), idx_(idx) {} - //! Returns true if group and index match. - bool operator()(const Exiv2::Exifdatum& md) const - { - return idx_ == md.idx() && 0 == strcmp(md.groupName().c_str(), groupName_); - } - - private: - const char* groupName_; - int idx_; - - }; // class FindExifdatum2 - - Exiv2::ByteOrder stringToByteOrder(const std::string& val) - { - Exiv2::ByteOrder bo = Exiv2::invalidByteOrder; - if (0 == strcmp("II", val.c_str())) bo = Exiv2::littleEndian; - else if (0 == strcmp("MM", val.c_str())) bo = Exiv2::bigEndian; - - return bo; - } -} - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - namespace Internal { - - TiffVisitor::TiffVisitor() - { - for (int i = 0; i < events_; ++i) { - go_[i] = true; - } - } - - TiffVisitor::~TiffVisitor() - { - } - - void TiffVisitor::setGo(GoEvent event, bool go) - { - assert(event >= 0 && event < events_); - go_[event] = go; - } - - bool TiffVisitor::go(GoEvent event) const - { - assert(event >= 0 && event < events_); - return go_[event]; - } - - void TiffVisitor::visitDirectoryNext(TiffDirectory* /*object*/) - { - } - - void TiffVisitor::visitDirectoryEnd(TiffDirectory* /*object*/) - { - } - - void TiffVisitor::visitIfdMakernoteEnd(TiffIfdMakernote* /*object*/) - { - } - - void TiffVisitor::visitBinaryArrayEnd(TiffBinaryArray* /*object*/) - { - } - - void TiffFinder::init(uint16_t tag, IfdId group) - { - tag_ = tag; - group_ = group; - tiffComponent_ = 0; - setGo(geTraverse, true); - } - - TiffFinder::~TiffFinder() - { - } - - void TiffFinder::findObject(TiffComponent* object) - { - if (object->tag() == tag_ && object->group() == group_) { - tiffComponent_ = object; - setGo(geTraverse, false); - } - } - - void TiffFinder::visitEntry(TiffEntry* object) - { - findObject(object); - } - - void TiffFinder::visitDataEntry(TiffDataEntry* object) - { - findObject(object); - } - - void TiffFinder::visitImageEntry(TiffImageEntry* object) - { - findObject(object); - } - - void TiffFinder::visitSizeEntry(TiffSizeEntry* object) - { - findObject(object); - } - - void TiffFinder::visitDirectory(TiffDirectory* object) - { - findObject(object); - } - - void TiffFinder::visitSubIfd(TiffSubIfd* object) - { - findObject(object); - } - - void TiffFinder::visitMnEntry(TiffMnEntry* object) - { - findObject(object); - } - - void TiffFinder::visitIfdMakernote(TiffIfdMakernote* object) - { - findObject(object); - } - - void TiffFinder::visitBinaryArray(TiffBinaryArray* object) - { - findObject(object); - } - - void TiffFinder::visitBinaryElement(TiffBinaryElement* object) - { - findObject(object); - } - - TiffCopier::TiffCopier( TiffComponent* pRoot, - uint32_t root, - const TiffHeaderBase* pHeader, - const PrimaryGroups* pPrimaryGroups) - : pRoot_(pRoot), - root_(root), - pHeader_(pHeader), - pPrimaryGroups_(pPrimaryGroups) - { - assert(pRoot_ != 0); - assert(pHeader_ != 0); - assert(pPrimaryGroups_ != 0); - } - - TiffCopier::~TiffCopier() - { - } - - void TiffCopier::copyObject(TiffComponent* object) - { - assert(object != 0); - - if (pHeader_->isImageTag(object->tag(), object->group(), pPrimaryGroups_)) { - TiffComponent::AutoPtr clone = object->clone(); - // Assumption is that the corresponding TIFF entry doesn't exist - TiffPath tiffPath; - TiffCreator::getPath(tiffPath, object->tag(), object->group(), root_); - pRoot_->addPath(object->tag(), tiffPath, pRoot_, clone); -#ifdef DEBUG - ExifKey key(object->tag(), groupName(object->group())); - std::cerr << "Copied " << key << "\n"; -#endif - } - } - - void TiffCopier::visitEntry(TiffEntry* object) - { - copyObject(object); - } - - void TiffCopier::visitDataEntry(TiffDataEntry* object) - { - copyObject(object); - } - - void TiffCopier::visitImageEntry(TiffImageEntry* object) - { - copyObject(object); - } - - void TiffCopier::visitSizeEntry(TiffSizeEntry* object) - { - copyObject(object); - } - - void TiffCopier::visitDirectory(TiffDirectory* /*object*/) - { - // Do not copy directories (avoids problems with SubIfds) - } - - void TiffCopier::visitSubIfd(TiffSubIfd* object) - { - copyObject(object); - } - - void TiffCopier::visitMnEntry(TiffMnEntry* object) - { - copyObject(object); - } - - void TiffCopier::visitIfdMakernote(TiffIfdMakernote* object) - { - copyObject(object); - } - - void TiffCopier::visitBinaryArray(TiffBinaryArray* object) - { - copyObject(object); - } - - void TiffCopier::visitBinaryElement(TiffBinaryElement* object) - { - copyObject(object); - } - - TiffDecoder::TiffDecoder( - ExifData& exifData, - IptcData& iptcData, - XmpData& xmpData, - TiffComponent* const pRoot, - FindDecoderFct findDecoderFct - ) - : exifData_(exifData), - iptcData_(iptcData), - xmpData_(xmpData), - pRoot_(pRoot), - findDecoderFct_(findDecoderFct), - decodedIptc_(false) - { - assert(pRoot != 0); - - exifData_.clear(); - iptcData_.clear(); - xmpData_.clear(); - - // Find camera make - TiffFinder finder(0x010f, ifd0Id); - pRoot_->accept(finder); - TiffEntryBase* te = dynamic_cast(finder.result()); - if (te && te->pValue()) { - make_ = te->pValue()->toString(); - } - } - - TiffDecoder::~TiffDecoder() - { - } - - void TiffDecoder::visitEntry(TiffEntry* object) - { - decodeTiffEntry(object); - } - - void TiffDecoder::visitDataEntry(TiffDataEntry* object) - { - decodeTiffEntry(object); - } - - void TiffDecoder::visitImageEntry(TiffImageEntry* object) - { - decodeTiffEntry(object); - } - - void TiffDecoder::visitSizeEntry(TiffSizeEntry* object) - { - decodeTiffEntry(object); - } - - void TiffDecoder::visitDirectory(TiffDirectory* /*object*/) - { - // Nothing to do - } - - void TiffDecoder::visitSubIfd(TiffSubIfd* object) - { - decodeTiffEntry(object); - } - - void TiffDecoder::visitMnEntry(TiffMnEntry* object) - { - // Always decode binary makernote tag - decodeTiffEntry(object); - } - - void TiffDecoder::visitIfdMakernote(TiffIfdMakernote* object) - { - assert(object != 0); - - exifData_["Exif.MakerNote.Offset"] = object->mnOffset(); - switch (object->byteOrder()) { - case littleEndian: - exifData_["Exif.MakerNote.ByteOrder"] = "II"; - break; - case bigEndian: - exifData_["Exif.MakerNote.ByteOrder"] = "MM"; - break; - case invalidByteOrder: - assert(object->byteOrder() != invalidByteOrder); - break; - } - } - - void TiffDecoder::getObjData(byte const*& pData, - long& size, - uint16_t tag, - IfdId group, - const TiffEntryBase* object) - { - if (object && object->tag() == tag && object->group() == group) { - pData = object->pData(); - size = object->size(); - return; - } - TiffFinder finder(tag, group); - pRoot_->accept(finder); - TiffEntryBase const* te = dynamic_cast(finder.result()); - if (te) { - pData = te->pData(); - size = te->size(); - return; - } - } - - void TiffDecoder::decodeXmp(const TiffEntryBase* object) - { - // add Exif tag anyway - decodeStdTiffEntry(object); - - byte const* pData = 0; - long size = 0; - getObjData(pData, size, 0x02bc, ifd0Id, object); - if (pData) { - std::string xmpPacket; - xmpPacket.assign(reinterpret_cast(pData), size); - std::string::size_type idx = xmpPacket.find_first_of('<'); - if (idx != std::string::npos && idx > 0) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Removing " << static_cast(idx) - << " characters from the beginning of the XMP packet\n"; -#endif - xmpPacket = xmpPacket.substr(idx); - } - if (XmpParser::decode(xmpData_, xmpPacket)) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to decode XMP metadata.\n"; -#endif - } - } - } // TiffDecoder::decodeXmp - - void TiffDecoder::decodeIptc(const TiffEntryBase* object) - { - // add Exif tag anyway - decodeStdTiffEntry(object); - - // All tags are read at this point, so the first time we come here, - // find the relevant IPTC tag and decode IPTC if found - if (decodedIptc_) { - return; - } - decodedIptc_ = true; - // 1st choice: IPTCNAA - byte const* pData = 0; - long size = 0; - getObjData(pData, size, 0x83bb, ifd0Id, object); - if (pData) { - if (0 == IptcParser::decode(iptcData_, pData, size)) { - return; - } -#ifndef SUPPRESS_WARNINGS - else { - EXV_WARNING << "Failed to decode IPTC block found in " - << "Directory Image, entry 0x83bb\n"; - } -#endif - } - - // 2nd choice if no IPTCNAA record found or failed to decode it: - // ImageResources - pData = 0; - size = 0; - getObjData(pData, size, 0x8649, ifd0Id, object); - if (pData) { - byte const* record = 0; - uint32_t sizeHdr = 0; - uint32_t sizeData = 0; - if (0 != Photoshop::locateIptcIrb(pData, size, - &record, &sizeHdr, &sizeData)) { - return; - } - if (0 == IptcParser::decode(iptcData_, record + sizeHdr, sizeData)) { - return; - } -#ifndef SUPPRESS_WARNINGS - else { - EXV_WARNING << "Failed to decode IPTC block found in " - << "Directory Image, entry 0x8649\n"; - } -#endif - } - } // TiffMetadataDecoder::decodeIptc - - void TiffDecoder::decodeTiffEntry(const TiffEntryBase* object) - { - assert(object != 0); - - // Don't decode the entry if value is not set - if (!object->pValue()) return; - - const DecoderFct decoderFct = findDecoderFct_(make_, - object->tag(), - object->group()); - // skip decoding if decoderFct == 0 - if (decoderFct) { - EXV_CALL_MEMBER_FN(*this, decoderFct)(object); - } - } // TiffDecoder::decodeTiffEntry - - void TiffDecoder::decodeStdTiffEntry(const TiffEntryBase* object) - { - assert(object != 0); - ExifKey key(object->tag(), groupName(object->group())); - key.setIdx(object->idx()); - exifData_.add(key, object->pValue()); - - } // TiffDecoder::decodeTiffEntry - - void TiffDecoder::visitBinaryArray(TiffBinaryArray* object) - { - if (object->cfg() == 0 || !object->decoded()) { - decodeTiffEntry(object); - } - } - - void TiffDecoder::visitBinaryElement(TiffBinaryElement* object) - { - decodeTiffEntry(object); - } - - TiffEncoder::TiffEncoder( - const ExifData& exifData, - const IptcData& iptcData, - const XmpData& xmpData, - TiffComponent* pRoot, - const bool isNewImage, - const PrimaryGroups* pPrimaryGroups, - const TiffHeaderBase* pHeader, - FindEncoderFct findEncoderFct - ) - : exifData_(exifData), - iptcData_(iptcData), - xmpData_(xmpData), - del_(true), - pHeader_(pHeader), - pRoot_(pRoot), - isNewImage_(isNewImage), - pPrimaryGroups_(pPrimaryGroups), - pSourceTree_(0), - findEncoderFct_(findEncoderFct), - dirty_(false), - writeMethod_(wmNonIntrusive) - { - assert(pRoot != 0); - assert(pPrimaryGroups != 0); - assert(pHeader != 0); - - byteOrder_ = pHeader->byteOrder(); - origByteOrder_ = byteOrder_; - - encodeIptc(); - encodeXmp(); - - // Find camera make - ExifKey key("Exif.Image.Make"); - ExifData::const_iterator pos = exifData_.findKey(key); - if (pos != exifData_.end()) { - make_ = pos->toString(); - } - if (make_.empty() && pRoot_) { - TiffFinder finder(0x010f, ifd0Id); - pRoot_->accept(finder); - TiffEntryBase* te = dynamic_cast(finder.result()); - if (te && te->pValue()) { - make_ = te->pValue()->toString(); - } - } - } - - TiffEncoder::~TiffEncoder() - { - } - - void TiffEncoder::encodeIptc() - { - // Update IPTCNAA Exif tag, if it exists. Delete the tag if there - // is no IPTC data anymore. - // If there is new IPTC data and Exif.Image.ImageResources does - // not exist, create a new IPTCNAA Exif tag. - bool del = false; - ExifKey iptcNaaKey("Exif.Image.IPTCNAA"); - ExifData::iterator pos = exifData_.findKey(iptcNaaKey); - if (pos != exifData_.end()) { - iptcNaaKey.setIdx(pos->idx()); - exifData_.erase(pos); - del = true; - } - DataBuf rawIptc = IptcParser::encode(iptcData_); - ExifKey irbKey("Exif.Image.ImageResources"); - pos = exifData_.findKey(irbKey); - if (pos != exifData_.end()) { - irbKey.setIdx(pos->idx()); - } - if (rawIptc.size_ != 0 && (del || pos == exifData_.end())) { - Value::AutoPtr value = Value::create(unsignedLong); - DataBuf buf; - if (rawIptc.size_ % 4 != 0) { - // Pad the last unsignedLong value with 0s - buf.alloc((rawIptc.size_ / 4) * 4 + 4); - memset(buf.pData_, 0x0, buf.size_); - memcpy(buf.pData_, rawIptc.pData_, rawIptc.size_); - } - else { - buf = rawIptc; // Note: This resets rawIptc - } - value->read(buf.pData_, buf.size_, byteOrder_); - Exifdatum iptcDatum(iptcNaaKey, value.get()); - exifData_.add(iptcDatum); - pos = exifData_.findKey(irbKey); // needed after add() - } - // Also update IPTC IRB in Exif.Image.ImageResources if it exists, - // but don't create it if not. - if (pos != exifData_.end()) { - DataBuf irbBuf(pos->value().size()); - pos->value().copy(irbBuf.pData_, invalidByteOrder); - irbBuf = Photoshop::setIptcIrb(irbBuf.pData_, irbBuf.size_, iptcData_); - exifData_.erase(pos); - if (irbBuf.size_ != 0) { - Value::AutoPtr value = Value::create(unsignedByte); - value->read(irbBuf.pData_, irbBuf.size_, invalidByteOrder); - Exifdatum iptcDatum(irbKey, value.get()); - exifData_.add(iptcDatum); - } - } - } // TiffEncoder::encodeIptc - - void TiffEncoder::encodeXmp() - { - ExifKey xmpKey("Exif.Image.XMLPacket"); - // Remove any existing XMP Exif tag - ExifData::iterator pos = exifData_.findKey(xmpKey); - if (pos != exifData_.end()) { - xmpKey.setIdx(pos->idx()); - exifData_.erase(pos); - } - std::string xmpPacket; - if (XmpParser::encode(xmpPacket, xmpData_) > 1) { -#ifndef SUPPRESS_WARNINGS - EXV_ERROR << "Failed to encode XMP metadata.\n"; -#endif - } - if (!xmpPacket.empty()) { - // Set the XMP Exif tag to the new value - Value::AutoPtr value = Value::create(unsignedByte); - value->read(reinterpret_cast(&xmpPacket[0]), - static_cast(xmpPacket.size()), - invalidByteOrder); - Exifdatum xmpDatum(xmpKey, value.get()); - exifData_.add(xmpDatum); - } - } // TiffEncoder::encodeXmp - - void TiffEncoder::setDirty(bool flag) - { - dirty_ = flag; - setGo(geTraverse, !flag); - } - - bool TiffEncoder::dirty() const - { - if (dirty_ || exifData_.count() > 0) return true; - return false; - } - - void TiffEncoder::visitEntry(TiffEntry* object) - { - encodeTiffComponent(object); - } - - void TiffEncoder::visitDataEntry(TiffDataEntry* object) - { - encodeTiffComponent(object); - } - - void TiffEncoder::visitImageEntry(TiffImageEntry* object) - { - encodeTiffComponent(object); - } - - void TiffEncoder::visitSizeEntry(TiffSizeEntry* object) - { - encodeTiffComponent(object); - } - - void TiffEncoder::visitDirectory(TiffDirectory* /*object*/) - { - // Nothing to do - } - - void TiffEncoder::visitDirectoryNext(TiffDirectory* object) - { - // Update type and count in IFD entries, in case they changed - assert(object != 0); - - byte* p = object->start() + 2; - for (TiffDirectory::Components::iterator i = object->components_.begin(); - i != object->components_.end(); ++i) { - p += updateDirEntry(p, byteOrder(), *i); - } - } - - uint32_t TiffEncoder::updateDirEntry(byte* buf, - ByteOrder byteOrder, - TiffComponent* pTiffComponent) const - { - assert(buf); - assert(pTiffComponent); - TiffEntryBase* pTiffEntry = dynamic_cast(pTiffComponent); - assert(pTiffEntry); - us2Data(buf + 2, pTiffEntry->tiffType(), byteOrder); - ul2Data(buf + 4, pTiffEntry->count(), byteOrder); - // Move data to offset field, if it fits and is not yet there. - if (pTiffEntry->size() <= 4 && buf + 8 != pTiffEntry->pData()) { -#ifdef DEBUG - std::cerr << "Copying data for tag " << pTiffEntry->tag() - << " to offset area.\n"; -#endif - memset(buf + 8, 0x0, 4); - memcpy(buf + 8, pTiffEntry->pData(), pTiffEntry->size()); - memset(const_cast(pTiffEntry->pData()), 0x0, pTiffEntry->size()); - } - return 12; - } - - void TiffEncoder::visitSubIfd(TiffSubIfd* object) - { - encodeTiffComponent(object); - } - - void TiffEncoder::visitMnEntry(TiffMnEntry* object) - { - // Test is required here as well as in the callback encoder function - if (!object->mn_) { - encodeTiffComponent(object); - } - else if (del_) { - // The makernote is made up of decoded tags, delete binary tag - ExifKey key(object->tag(), groupName(object->group())); - ExifData::iterator pos = exifData_.findKey(key); - if (pos != exifData_.end()) exifData_.erase(pos); - } - } - - void TiffEncoder::visitIfdMakernote(TiffIfdMakernote* object) - { - assert(object != 0); - - ExifData::iterator pos = exifData_.findKey(ExifKey("Exif.MakerNote.ByteOrder")); - if (pos != exifData_.end()) { - // Set Makernote byte order - ByteOrder bo = stringToByteOrder(pos->toString()); - if (bo != invalidByteOrder && bo != object->byteOrder()) { - object->setByteOrder(bo); - setDirty(); - } - if (del_) exifData_.erase(pos); - } - if (del_) { - // Remove remaining synthesized tags - static const char* synthesizedTags[] = { - "Exif.MakerNote.Offset", - }; - for (unsigned int i = 0; i < EXV_COUNTOF(synthesizedTags); ++i) { - ExifData::iterator pos = exifData_.findKey(ExifKey(synthesizedTags[i])); - if (pos != exifData_.end()) exifData_.erase(pos); - } - } - // Modify encoder for Makernote peculiarities, byte order - byteOrder_ = object->byteOrder(); - - } // TiffEncoder::visitIfdMakernote - - void TiffEncoder::visitIfdMakernoteEnd(TiffIfdMakernote* /*object*/) - { - // Reset byte order back to that from the c'tor - byteOrder_ = origByteOrder_; - - } // TiffEncoder::visitIfdMakernoteEnd - - void TiffEncoder::visitBinaryArray(TiffBinaryArray* object) - { - if (object->cfg() == 0 || !object->decoded()) { - encodeTiffComponent(object); - } - } - - void TiffEncoder::visitBinaryArrayEnd(TiffBinaryArray* object) - { - assert(object != 0); - - if (object->cfg() == 0 || !object->decoded()) return; - int32_t size = object->TiffEntryBase::doSize(); - if (size == 0) return; - if (!object->initialize(pRoot_)) return; - - // Re-encrypt buffer if necessary - const CryptFct cryptFct = object->cfg()->cryptFct_; - if (cryptFct != 0) { - const byte* pData = object->pData(); - DataBuf buf = cryptFct(object->tag(), pData, size, pRoot_); - if (buf.size_ > 0) { - pData = buf.pData_; - size = buf.size_; - } - if (!object->updOrigDataBuf(pData, size)) { - setDirty(); - } - } - } - - void TiffEncoder::visitBinaryElement(TiffBinaryElement* object) - { - // Temporarily overwrite byteorder according to that of the binary element - ByteOrder boOrig = byteOrder_; - if (object->elByteOrder() != invalidByteOrder) byteOrder_ = object->elByteOrder(); - encodeTiffComponent(object); - byteOrder_ = boOrig; - } - - bool TiffEncoder::isImageTag(uint16_t tag, IfdId group) const - { - if (!isNewImage_ && pHeader_->isImageTag(tag, group, pPrimaryGroups_)) { - return true; - } - return false; - } - - void TiffEncoder::encodeTiffComponent( - TiffEntryBase* object, - const Exifdatum* datum - ) - { - assert(object != 0); - - // Skip image tags of existing TIFF image - they were copied earlier - - // but add and encode image tags of new images (creation) - if (isImageTag(object->tag(), object->group())) return; - - ExifData::iterator pos = exifData_.end(); - const Exifdatum* ed = datum; - if (ed == 0) { - // Non-intrusive writing: find matching tag - ExifKey key(object->tag(), groupName(object->group())); - pos = exifData_.findKey(key); - if (pos != exifData_.end()) { - ed = &(*pos); - if (object->idx() != pos->idx()) { - // Try to find exact match (in case of duplicate tags) - ExifData::iterator pos2 = - std::find_if(exifData_.begin(), exifData_.end(), - FindExifdatum2(object->group(), object->idx())); - if (pos2 != exifData_.end() && pos2->key() == key.key()) { - ed = &(*pos2); - pos = pos2; // make sure we delete the correct tag below - } - } - } - else { - setDirty(); -#ifdef DEBUG - std::cerr << "DELETING " << key << ", idx = " << object->idx() << "\n"; -#endif - } - } - else { - // For intrusive writing, the index is used to preserve the order of - // duplicate tags - object->idx_ = ed->idx(); - } - if (ed) { - const EncoderFct fct = findEncoderFct_(make_, object->tag(), object->group()); - if (fct) { - // If an encoding function is registered for the tag, use it - EXV_CALL_MEMBER_FN(*this, fct)(object, ed); - } - else { - // Else use the encode function at the object (results in a double-dispatch - // to the appropriate encoding function of the encoder. - object->encode(*this, ed); - } - } - if (del_ && pos != exifData_.end()) { - exifData_.erase(pos); - } -#ifdef DEBUG - std::cerr << "\n"; -#endif - } // TiffEncoder::encodeTiffComponent - - void TiffEncoder::encodeBinaryArray(TiffBinaryArray* object, const Exifdatum* datum) - { - encodeOffsetEntry(object, datum); - } // TiffEncoder::encodeBinaryArray - - void TiffEncoder::encodeBinaryElement(TiffBinaryElement* object, const Exifdatum* datum) - { - encodeTiffEntryBase(object, datum); - } // TiffEncoder::encodeArrayElement - - void TiffEncoder::encodeDataEntry(TiffDataEntry* object, const Exifdatum* datum) - { - encodeOffsetEntry(object, datum); - - if (!dirty_ && writeMethod() == wmNonIntrusive) { - assert(object); - assert(object->pValue()); - if ( object->sizeDataArea_ - < static_cast(object->pValue()->sizeDataArea())) { -#ifdef DEBUG - ExifKey key(object->tag(), groupName(object->group())); - std::cerr << "DATAAREA GREW " << key << "\n"; -#endif - setDirty(); - } - else { - // Write the new dataarea, fill with 0x0 -#ifdef DEBUG - ExifKey key(object->tag(), groupName(object->group())); - std::cerr << "Writing data area for " << key << "\n"; -#endif - DataBuf buf = object->pValue()->dataArea(); - memcpy(object->pDataArea_, buf.pData_, buf.size_); - if (object->sizeDataArea_ - buf.size_ > 0) { - memset(object->pDataArea_ + buf.size_, - 0x0, object->sizeDataArea_ - buf.size_); - } - } - } - - } // TiffEncoder::encodeDataEntry - - void TiffEncoder::encodeTiffEntry(TiffEntry* object, const Exifdatum* datum) - { - encodeTiffEntryBase(object, datum); - } // TiffEncoder::encodeTiffEntry - - void TiffEncoder::encodeImageEntry(TiffImageEntry* object, const Exifdatum* datum) - { - encodeOffsetEntry(object, datum); - - uint32_t sizeDataArea = object->pValue()->sizeDataArea(); - - if (sizeDataArea > 0 && writeMethod() == wmNonIntrusive) { -#ifdef DEBUG - std::cerr << "\t DATAAREA IS SET (NON-INTRUSIVE WRITING)"; -#endif - setDirty(); - } - - if (sizeDataArea > 0 && writeMethod() == wmIntrusive) { -#ifdef DEBUG - std::cerr << "\t DATAAREA IS SET (INTRUSIVE WRITING)"; -#endif - // Set pseudo strips (without a data pointer) from the size tag - ExifKey key(object->szTag(), groupName(object->szGroup())); - ExifData::const_iterator pos = exifData_.findKey(key); - const byte* zero = 0; - if (pos == exifData_.end()) { -#ifndef SUPPRESS_WARNINGS - EXV_ERROR << "Size tag " << key - << " not found. Writing only one strip.\n"; -#endif - object->strips_.clear(); - object->strips_.push_back(std::make_pair(zero, sizeDataArea)); - } - else { - uint32_t sizeTotal = 0; - object->strips_.clear(); - for (long i = 0; i < pos->count(); ++i) { - uint32_t len = pos->toLong(i); - object->strips_.push_back(std::make_pair(zero, len)); - sizeTotal += len; - } - if (sizeTotal != sizeDataArea) { -#ifndef SUPPRESS_WARNINGS - ExifKey key2(object->tag(), groupName(object->group())); - EXV_ERROR << "Sum of all sizes of " << key - << " != data size of " << key2 << ". " - << "This results in an invalid image.\n"; -#endif - // Todo: How to fix? Write only one strip? - } - } - } - - if (sizeDataArea == 0 && writeMethod() == wmIntrusive) { -#ifdef DEBUG - std::cerr << "\t USE STRIPS FROM SOURCE TREE IMAGE ENTRY"; -#endif - // Set strips from source tree - if (pSourceTree_) { - TiffFinder finder(object->tag(), object->group()); - pSourceTree_->accept(finder); - TiffImageEntry* ti = dynamic_cast(finder.result()); - if (ti) { - object->strips_ = ti->strips_; - } - } -#ifndef SUPPRESS_WARNINGS - else { - ExifKey key2(object->tag(), groupName(object->group())); - EXV_WARNING << "No image data to encode " << key2 << ".\n"; - } -#endif - } - - } // TiffEncoder::encodeImageEntry - - void TiffEncoder::encodeMnEntry(TiffMnEntry* object, const Exifdatum* datum) - { - // Test is required here as well as in the visit function - if (!object->mn_) encodeTiffEntryBase(object, datum); - } // TiffEncoder::encodeMnEntry - - void TiffEncoder::encodeSizeEntry(TiffSizeEntry* object, const Exifdatum* datum) - { - encodeTiffEntryBase(object, datum); - } // TiffEncoder::encodeSizeEntry - - void TiffEncoder::encodeSubIfd(TiffSubIfd* object, const Exifdatum* datum) - { - encodeOffsetEntry(object, datum); - } // TiffEncoder::encodeSubIfd - - void TiffEncoder::encodeTiffEntryBase(TiffEntryBase* object, const Exifdatum* datum) - { - assert(object != 0); - assert(datum != 0); - -#ifdef DEBUG - bool tooLarge = false; -#endif - uint32_t newSize = datum->size(); - if (newSize > object->size_) { // value doesn't fit, encode for intrusive writing - setDirty(); -#ifdef DEBUG - tooLarge = true; -#endif - } - object->updateValue(datum->getValue(), byteOrder()); // clones the value -#ifdef DEBUG - ExifKey key(object->tag(), groupName(object->group())); - std::cerr << "UPDATING DATA " << key; - if (tooLarge) { - std::cerr << "\t\t\t ALLOCATED " << std::dec << object->size_ << " BYTES"; - } -#endif - } // TiffEncoder::encodeTiffEntryBase - - void TiffEncoder::encodeOffsetEntry(TiffEntryBase* object, const Exifdatum* datum) - { - assert(object != 0); - assert(datum != 0); - - uint32_t newSize = datum->size(); - if (newSize > object->size_) { // value doesn't fit, encode for intrusive writing - setDirty(); - object->updateValue(datum->getValue(), byteOrder()); // clones the value -#ifdef DEBUG - ExifKey key(object->tag(), groupName(object->group())); - std::cerr << "UPDATING DATA " << key; - std::cerr << "\t\t\t ALLOCATED " << object->size() << " BYTES"; -#endif - } - else { - object->setValue(datum->getValue()); // clones the value -#ifdef DEBUG - ExifKey key(object->tag(), groupName(object->group())); - std::cerr << "NOT UPDATING " << key; - std::cerr << "\t\t\t PRESERVE VALUE DATA"; -#endif - } - - } // TiffEncoder::encodeOffsetEntry - - void TiffEncoder::add( - TiffComponent* pRootDir, - TiffComponent* pSourceDir, - uint32_t root - ) - { - assert(pRootDir != 0); - - writeMethod_ = wmIntrusive; - pSourceTree_ = pSourceDir; - - // Ensure that the exifData_ entries are not deleted, to be able to - // iterate over all remaining entries. - del_ = false; - - ExifData::const_iterator posBo = exifData_.end(); - for (ExifData::const_iterator i = exifData_.begin(); - i != exifData_.end(); ++i) { - - IfdId group = groupId(i->groupName()); - // Skip synthesized info tags - if (group == mnId) { - if (i->tag() == 0x0002) { - posBo = i; - } - continue; - } - - // Skip image tags of existing TIFF image - they were copied earlier - - // but add and encode image tags of new images (creation) - if (isImageTag(i->tag(), group)) continue; - - // Assumption is that the corresponding TIFF entry doesn't exist - TiffPath tiffPath; - TiffCreator::getPath(tiffPath, i->tag(), group, root); - TiffComponent* tc = pRootDir->addPath(i->tag(), tiffPath, pRootDir); - TiffEntryBase* object = dynamic_cast(tc); -#ifdef DEBUG - if (object == 0) { - std::cerr << "Warning: addPath() didn't add an entry for " - << i->groupName() - << " tag 0x" << std::setw(4) << std::setfill('0') - << std::hex << i->tag() << "\n"; - } -#endif - if (object != 0) { - encodeTiffComponent(object, &(*i)); - } - } - - /* - What follows is a hack. I can't think of a better way to set - the makernote byte order (and other properties maybe) in the - makernote header during intrusive writing. The thing is that - visit/encodeIfdMakernote is not called in this case and there - can't be an Exif tag which corresponds to this component. - */ - if (posBo == exifData_.end()) return; - - TiffFinder finder(0x927c, exifId); - pRootDir->accept(finder); - TiffMnEntry* te = dynamic_cast(finder.result()); - if (te) { - TiffIfdMakernote* tim = dynamic_cast(te->mn_); - if (tim) { - // Set Makernote byte order - ByteOrder bo = stringToByteOrder(posBo->toString()); - if (bo != invalidByteOrder) tim->setByteOrder(bo); - } - } - - } // TiffEncoder::add - - TiffReader::TiffReader(const byte* pData, - uint32_t size, - TiffComponent* pRoot, - TiffRwState::AutoPtr state) - : pData_(pData), - size_(size), - pLast_(pData + size), - pRoot_(pRoot), - pState_(state.release()), - pOrigState_(pState_), - postProc_(false) - { - assert(pData_); - assert(size_ > 0); - - } // TiffReader::TiffReader - - TiffReader::~TiffReader() - { - if (pOrigState_ != pState_) delete pOrigState_; - delete pState_; - } - - void TiffReader::resetState() { - if (pOrigState_ != pState_) delete pState_; - pState_ = pOrigState_; - } - - void TiffReader::changeState(TiffRwState::AutoPtr state) - { - if (state.get() != 0) { - if (pOrigState_ != pState_) delete pState_; - // invalidByteOrder indicates 'no change' - if (state->byteOrder_ == invalidByteOrder) state->byteOrder_ = pState_->byteOrder_; - pState_ = state.release(); - } - } - - ByteOrder TiffReader::byteOrder() const - { - assert(pState_); - return pState_->byteOrder_; - } - - uint32_t TiffReader::baseOffset() const - { - assert(pState_); - return pState_->baseOffset_; - } - - void TiffReader::readDataEntryBase(TiffDataEntryBase* object) - { - assert(object != 0); - - readTiffEntry(object); - TiffFinder finder(object->szTag(), object->szGroup()); - pRoot_->accept(finder); - TiffEntryBase* te = dynamic_cast(finder.result()); - if (te && te->pValue()) { - object->setStrips(te->pValue(), pData_, size_, baseOffset()); - } - } - - void TiffReader::visitEntry(TiffEntry* object) - { - readTiffEntry(object); - } - - void TiffReader::visitDataEntry(TiffDataEntry* object) - { - readDataEntryBase(object); - } - - void TiffReader::visitImageEntry(TiffImageEntry* object) - { - readDataEntryBase(object); - } - - void TiffReader::visitSizeEntry(TiffSizeEntry* object) - { - assert(object != 0); - - readTiffEntry(object); - TiffFinder finder(object->dtTag(), object->dtGroup()); - pRoot_->accept(finder); - TiffDataEntryBase* te = dynamic_cast(finder.result()); - if (te && te->pValue()) { - te->setStrips(object->pValue(), pData_, size_, baseOffset()); - } - } - - bool TiffReader::circularReference(const byte* start, IfdId group) - { - DirList::const_iterator pos = dirList_.find(start); - if (pos != dirList_.end()) { -#ifndef SUPPRESS_WARNINGS - EXV_ERROR << groupName(group) << " pointer references previously read " - << groupName(pos->second) << " directory. Ignored.\n"; -#endif - return true; - } - dirList_[start] = group; - return false; - } - - int TiffReader::nextIdx(IfdId group) - { - return ++idxSeq_[group]; - } - - void TiffReader::postProcess() - { - postProc_ = true; - for (PostList::const_iterator pos = postList_.begin(); pos != postList_.end(); ++pos) { - (*pos)->accept(*this); - } - postProc_ = false; - } - - void TiffReader::visitDirectory(TiffDirectory* object) - { - assert(object != 0); - - const byte* p = object->start(); - assert(p >= pData_); - - if (circularReference(object->start(), object->group())) return; - - if (p + 2 > pLast_) { -#ifndef SUPPRESS_WARNINGS - EXV_ERROR << "Directory " << groupName(object->group()) - << ": IFD exceeds data buffer, cannot read entry count.\n"; -#endif - return; - } - const uint16_t n = getUShort(p, byteOrder()); - p += 2; - // Sanity check with an "unreasonably" large number - if (n > 256) { -#ifndef SUPPRESS_WARNINGS - EXV_ERROR << "Directory " << groupName(object->group()) << " with " - << n << " entries considered invalid; not read.\n"; -#endif - return; - } - for (uint16_t i = 0; i < n; ++i) { - if (p + 12 > pLast_) { -#ifndef SUPPRESS_WARNINGS - EXV_ERROR << "Directory " << groupName(object->group()) - << ": IFD entry " << i - << " lies outside of the data buffer.\n"; -#endif - return; - } - uint16_t tag = getUShort(p, byteOrder()); - TiffComponent::AutoPtr tc = TiffCreator::create(tag, object->group()); - // The assertion typically fails if a component is not configured in - // the TIFF structure table - assert(tc.get()); - tc->setStart(p); - object->addChild(tc); - p += 12; - } - - if (object->hasNext()) { - if (p + 4 > pLast_) { -#ifndef SUPPRESS_WARNINGS - EXV_ERROR << "Directory " << groupName(object->group()) - << ": IFD exceeds data buffer, cannot read next pointer.\n"; -#endif - return; - } - TiffComponent::AutoPtr tc(0); - uint32_t next = getLong(p, byteOrder()); - if (next) { - tc = TiffCreator::create(Tag::next, object->group()); -#ifndef SUPPRESS_WARNINGS - if (tc.get() == 0) { - EXV_WARNING << "Directory " << groupName(object->group()) - << " has an unhandled next pointer.\n"; - } -#endif - } - if (tc.get()) { - if (baseOffset() + next > size_) { -#ifndef SUPPRESS_WARNINGS - EXV_ERROR << "Directory " << groupName(object->group()) - << ": Next pointer is out of bounds; ignored.\n"; -#endif - return; - } - tc->setStart(pData_ + baseOffset() + next); - object->addNext(tc); - } - } // object->hasNext() - - } // TiffReader::visitDirectory - - void TiffReader::visitSubIfd(TiffSubIfd* object) - { - assert(object != 0); - - readTiffEntry(object); - if ( (object->tiffType() == ttUnsignedLong || object->tiffType() == ttSignedLong - || object->tiffType() == ttTiffIfd) - && object->count() >= 1) { - // Todo: Fix hack - uint32_t maxi = 9; - if (object->group() == ifd1Id) maxi = 1; - for (uint32_t i = 0; i < object->count(); ++i) { - int32_t offset = getLong(object->pData() + 4*i, byteOrder()); - if ( baseOffset() + offset > size_ - || static_cast(baseOffset()) + offset < 0) { -#ifndef SUPPRESS_WARNINGS - EXV_ERROR << "Directory " << groupName(object->group()) - << ", entry 0x" << std::setw(4) - << std::setfill('0') << std::hex << object->tag() - << " Sub-IFD pointer " << i - << " is out of bounds; ignoring it.\n"; -#endif - return; - } - if (i >= maxi) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Directory " << groupName(object->group()) - << ", entry 0x" << std::setw(4) - << std::setfill('0') << std::hex << object->tag() - << ": Skipping sub-IFDs beyond the first " << i << ".\n"; -#endif - break; - } - // If there are multiple dirs, group is incremented for each - TiffComponent::AutoPtr td(new TiffDirectory(object->tag(), - static_cast(object->newGroup_ + i))); - td->setStart(pData_ + baseOffset() + offset); - object->addChild(td); - } - } -#ifndef SUPPRESS_WARNINGS - else { - EXV_WARNING << "Directory " << groupName(object->group()) - << ", entry 0x" << std::setw(4) - << std::setfill('0') << std::hex << object->tag() - << " doesn't look like a sub-IFD.\n"; - } -#endif - - } // TiffReader::visitSubIfd - - void TiffReader::visitMnEntry(TiffMnEntry* object) - { - assert(object != 0); - - readTiffEntry(object); - // Find camera make - TiffFinder finder(0x010f, ifd0Id); - pRoot_->accept(finder); - TiffEntryBase* te = dynamic_cast(finder.result()); - std::string make; - if (te && te->pValue()) { - make = te->pValue()->toString(); - // create concrete makernote, based on make and makernote contents - object->mn_ = TiffMnCreator::create(object->tag(), - object->mnGroup_, - make, - object->pData_, - object->size_, - byteOrder()); - } - if (object->mn_) object->mn_->setStart(object->pData()); - - } // TiffReader::visitMnEntry - - void TiffReader::visitIfdMakernote(TiffIfdMakernote* object) - { - assert(object != 0); - - object->setImageByteOrder(byteOrder()); // set the byte order for the image - - if (!object->readHeader(object->start(), - static_cast(pLast_ - object->start()), - byteOrder())) { -#ifndef SUPPRESS_WARNINGS - EXV_ERROR << "Failed to read " - << groupName(object->ifd_.group()) - << " IFD Makernote header.\n"; -#ifdef DEBUG - if (static_cast(pLast_ - object->start()) >= 16) { - hexdump(std::cerr, object->start(), 16); - } -#endif // DEBUG -#endif // SUPPRESS_WARNINGS - setGo(geKnownMakernote, false); - return; - } - - object->ifd_.setStart(object->start() + object->ifdOffset()); - - // Modify reader for Makernote peculiarities, byte order and offset - object->mnOffset_ = static_cast(object->start() - pData_); - TiffRwState::AutoPtr state( - new TiffRwState(object->byteOrder(), object->baseOffset()) - ); - changeState(state); - - } // TiffReader::visitIfdMakernote - - void TiffReader::visitIfdMakernoteEnd(TiffIfdMakernote* /*object*/) - { - // Reset state (byte order, create function, offset) back to that for the image - resetState(); - } // TiffReader::visitIfdMakernoteEnd - - void TiffReader::readTiffEntry(TiffEntryBase* object) - { - assert(object != 0); - - byte* p = object->start(); - assert(p >= pData_); - - if (p + 12 > pLast_) { -#ifndef SUPPRESS_WARNINGS - EXV_ERROR << "Entry in directory " << groupName(object->group()) - << "requests access to memory beyond the data buffer. " - << "Skipping entry.\n"; -#endif - return; - } - // Component already has tag - p += 2; - TiffType tiffType = getUShort(p, byteOrder()); - TypeId typeId = toTypeId(tiffType, object->tag(), object->group()); - long typeSize = TypeInfo::typeSize(typeId); - if (0 == typeSize) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Directory " << groupName(object->group()) - << ", entry 0x" << std::setw(4) - << std::setfill('0') << std::hex << object->tag() - << " has unknown Exif (TIFF) type " << std::dec << tiffType - << "; setting type size 1.\n"; -#endif - typeSize = 1; - } - p += 2; - uint32_t count = getULong(p, byteOrder()); - if (count >= 0x10000000) { -#ifndef SUPPRESS_WARNINGS - EXV_ERROR << "Directory " << groupName(object->group()) - << ", entry 0x" << std::setw(4) - << std::setfill('0') << std::hex << object->tag() - << " has invalid size " - << std::dec << count << "*" << typeSize - << "; skipping entry.\n"; -#endif - return; - } - p += 4; - uint32_t size = typeSize * count; - int32_t offset = getLong(p, byteOrder()); - byte* pData = p; - if ( size > 4 - && ( baseOffset() + offset >= size_ - || static_cast(baseOffset()) + offset <= 0)) { -#ifndef SUPPRESS_WARNINGS - EXV_ERROR << "Offset of directory " << groupName(object->group()) - << ", entry 0x" << std::setw(4) - << std::setfill('0') << std::hex << object->tag() - << " is out of bounds: " - << "Offset = 0x" << std::setw(8) - << std::setfill('0') << std::hex << offset - << "; truncating the entry\n"; -#endif - size = 0; - } - if (size > 4) { - pData = const_cast(pData_) + baseOffset() + offset; - if (size > static_cast(pLast_ - pData)) { -#ifndef SUPPRESS_WARNINGS - EXV_ERROR << "Upper boundary of data for " - << "directory " << groupName(object->group()) - << ", entry 0x" << std::setw(4) - << std::setfill('0') << std::hex << object->tag() - << " is out of bounds: " - << "Offset = 0x" << std::setw(8) - << std::setfill('0') << std::hex << offset - << ", size = " << std::dec << size - << ", exceeds buffer size by " - // cast to make MSVC happy - << static_cast(pData + size - pLast_) - << " Bytes; truncating the entry\n"; -#endif - size = 0; - } - } - Value::AutoPtr v = Value::create(typeId); - assert(v.get()); - v->read(pData, size, byteOrder()); - - object->setValue(v); - object->setData(pData, size); - object->setOffset(offset); - object->setIdx(nextIdx(object->group())); - - } // TiffReader::readTiffEntry - - void TiffReader::visitBinaryArray(TiffBinaryArray* object) - { - assert(object != 0); - - if (!postProc_) { - // Defer reading children until after all other components are read, but - // since state (offset) is not set during post-processing, read entry here - readTiffEntry(object); - object->iniOrigDataBuf(); - postList_.push_back(object); - return; - } - - // Check duplicates - TiffFinder finder(object->tag(), object->group()); - pRoot_->accept(finder); - TiffEntryBase* te = dynamic_cast(finder.result()); - if (te && te->idx() != object->idx()) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Not decoding duplicate binary array tag 0x" - << std::setw(4) << std::setfill('0') << std::hex - << object->tag() << std::dec << ", group " - << groupName(object->group()) << ", idx " << object->idx() - << "\n"; -#endif - object->setDecoded(false); - return; - } - - if (object->TiffEntryBase::doSize() == 0) return; - if (!object->initialize(pRoot_)) return; - const ArrayCfg* cfg = object->cfg(); - if (cfg == 0) return; - - const CryptFct cryptFct = cfg->cryptFct_; - if (cryptFct != 0) { - const byte* pData = object->pData(); - int32_t size = object->TiffEntryBase::doSize(); - DataBuf buf = cryptFct(object->tag(), pData, size, pRoot_); - if (buf.size_ > 0) object->setData(buf); - } - - const ArrayDef* defs = object->def(); - const ArrayDef* defsEnd = defs + object->defSize(); - const ArrayDef* def = &cfg->elDefaultDef_; - ArrayDef gap = *def; - - for (uint32_t idx = 0; idx < object->TiffEntryBase::doSize(); ) { - if (defs) { - def = std::find(defs, defsEnd, idx); - if (def == defsEnd) { - if (cfg->concat_) { - // Determine gap-size - const ArrayDef* xdef = defs; - for (; xdef != defsEnd && xdef->idx_ <= idx; ++xdef) {} - uint32_t gapSize = 0; - if (xdef != defsEnd && xdef->idx_ > idx) { - gapSize = xdef->idx_ - idx; - } - else { - gapSize = object->TiffEntryBase::doSize() - idx; - } - gap.idx_ = idx; - gap.tiffType_ = cfg->elDefaultDef_.tiffType_; - gap.count_ = gapSize / cfg->tagStep(); - if (gap.count_ * cfg->tagStep() != gapSize) { - gap.tiffType_ = ttUndefined; - gap.count_ = gapSize; - } - def = ⪆ - } - else { - def = &cfg->elDefaultDef_; - } - } - } - idx += object->addElement(idx, *def); // idx may be different from def->idx_ - } - - } // TiffReader::visitBinaryArray - - void TiffReader::visitBinaryElement(TiffBinaryElement* object) - { - byte* pData = object->start(); - uint32_t size = object->TiffEntryBase::doSize(); - ByteOrder bo = object->elByteOrder(); - if (bo == invalidByteOrder) bo = byteOrder(); - TypeId typeId = toTypeId(object->elDef()->tiffType_, object->tag(), object->group()); - Value::AutoPtr v = Value::create(typeId); - assert(v.get()); - v->read(pData, size, bo); - - object->setValue(v); - object->setOffset(0); - object->setIdx(nextIdx(object->group())); - - } // TiffReader::visitBinaryElement - -}} // namespace Internal, Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/tiffvisitor_int.hpp b/platform/win32/msvc/external/exiv2/src/tiffvisitor_int.hpp deleted file mode 100644 index ddbf94a5e2e..00000000000 --- a/platform/win32/msvc/external/exiv2/src/tiffvisitor_int.hpp +++ /dev/null @@ -1,734 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file tiffvisitor_int.hpp - @brief Internal operations on a TIFF composite tree, implemented as visitor - classes. - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 11-Apr-06, ahu: created - */ -#ifndef TIFFVISITOR_INT_HPP_ -#define TIFFVISITOR_INT_HPP_ - -// ***************************************************************************** -// included header files -#include "exif.hpp" -#include "tifffwd_int.hpp" -#include "types.hpp" - -// + standard includes -#include -#include -#include -#include -#include -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - - class IptcData; - class XmpData; - - namespace Internal { - -// ***************************************************************************** -// class definitions - - /*! - @brief Abstract base class defining the interface for TIFF composite - vistors (Visitor pattern) - - A concrete visitor class is used as shown in the example below. Accept() - will invoke the member function corresponding to the concrete type of each - component in the composite. - - @code - void visitorExample(Exiv2::TiffComponent* tiffComponent, Exiv2::TiffVisitor& visitor) - { - tiffComponent->accept(visitor); - } - @endcode - */ - class TiffVisitor { - public: - //! Events for the stop/go flag. See setGo(). - enum GoEvent { - //! Signal to control traversing of the composite tree. - geTraverse = 0, - //! Signal used by TiffReader to signal an unknown makernote. - geKnownMakernote = 1 - // Note: If you add more events here, adjust the events_ constant too! - }; - - private: - static const int events_ = 2; //!< The number of stop/go flags. - bool go_[events_]; //!< Array of stop/go flags. See setGo(). - - public: - //! @name Creators - //@{ - //! Default constructor. Initialises all stop/go flags to true. - TiffVisitor(); - //! Virtual destructor - virtual ~TiffVisitor(); - //@} - - //! @name Manipulators - //@{ - /*! - @brief Set the stop/go flag: true for go, false for stop. - - This mechanism is used by visitors and components to signal special - events. Specifically, TiffFinder sets the geTraverse flag as soon as - it finds the correct component to signal to components that the search - should be aborted. TiffReader uses geKnownMakernote to signal problems - reading a makernote to the TiffMnEntry component. There is an array - of flags, one for each defined \em event, so different signals can be - used independent of each other. - */ - void setGo(GoEvent event, bool go); - //! Operation to perform for a TIFF entry - virtual void visitEntry(TiffEntry* object) =0; - //! Operation to perform for a TIFF data entry - virtual void visitDataEntry(TiffDataEntry* object) =0; - //! Operation to perform for a TIFF image entry - virtual void visitImageEntry(TiffImageEntry* object) =0; - //! Operation to perform for a TIFF size entry - virtual void visitSizeEntry(TiffSizeEntry* object) =0; - //! Operation to perform for a TIFF directory - virtual void visitDirectory(TiffDirectory* object) =0; - /*! - @brief Operation to perform for a TIFF directory, after all components - and before the next entry is processed. - */ - virtual void visitDirectoryNext(TiffDirectory* object); - /*! - @brief Operation to perform for a TIFF directory, at the end of the - processing. - */ - virtual void visitDirectoryEnd(TiffDirectory* object); - //! Operation to perform for a TIFF sub-IFD - virtual void visitSubIfd(TiffSubIfd* object) =0; - //! Operation to perform for the makernote component - virtual void visitMnEntry(TiffMnEntry* object) =0; - //! Operation to perform for an IFD makernote - virtual void visitIfdMakernote(TiffIfdMakernote* object) =0; - //! Operation to perform after processing an IFD makernote - virtual void visitIfdMakernoteEnd(TiffIfdMakernote* object); - //! Operation to perform for a binary array - virtual void visitBinaryArray(TiffBinaryArray* object) =0; - /*! - @brief Operation to perform for a TIFF binary array, at the end - of the processing. - */ - virtual void visitBinaryArrayEnd(TiffBinaryArray* object); - //! Operation to perform for an element of a binary array - virtual void visitBinaryElement(TiffBinaryElement* object) =0; - //@} - - //! @name Accessors - //@{ - //! Check if stop flag for \em event is clear, return true if it's clear. - bool go(GoEvent event) const; - //@} - - }; // class TiffVisitor - - /*! - @brief Search the composite for a component with \em tag and \em group. - Return a pointer to the component or 0, if not found. The class - is ready for a first search after construction and can be - re-initialized with init(). - */ - class TiffFinder : public TiffVisitor { - public: - //! @name Creators - //@{ - //! Constructor, taking \em tag and \em group of the component to find. - TiffFinder(uint16_t tag, IfdId group) - : tag_(tag), group_(group), tiffComponent_(0) {} - //! Virtual destructor - virtual ~TiffFinder(); - //@} - - //! @name Manipulators - //@{ - //! Find tag and group in a TIFF entry - virtual void visitEntry(TiffEntry* object); - //! Find tag and group in a TIFF data entry - virtual void visitDataEntry(TiffDataEntry* object); - //! Find tag and group in a TIFF image entry - virtual void visitImageEntry(TiffImageEntry* object); - //! Find tag and group in a TIFF size entry - virtual void visitSizeEntry(TiffSizeEntry* object); - //! Find tag and group in a TIFF directory - virtual void visitDirectory(TiffDirectory* object); - //! Find tag and group in a TIFF sub-IFD - virtual void visitSubIfd(TiffSubIfd* object); - //! Find tag and group in a TIFF makernote - virtual void visitMnEntry(TiffMnEntry* object); - //! Find tag and group in an IFD makernote - virtual void visitIfdMakernote(TiffIfdMakernote* object); - //! Find tag and group in a binary array - virtual void visitBinaryArray(TiffBinaryArray* object); - //! Find tag and group in an element of a binary array - virtual void visitBinaryElement(TiffBinaryElement* object); - - //! Check if \em object matches \em tag and \em group - void findObject(TiffComponent* object); - //! Initialize the Finder for a new search. - void init(uint16_t tag, IfdId group); - //@} - - //! @name Accessors - //@{ - /*! - @brief Return the search result. 0 if no TIFF component was found - for the tag and group combination. - */ - TiffComponent* result() const { return tiffComponent_; } - //@} - - private: - uint16_t tag_; - IfdId group_; - TiffComponent* tiffComponent_; - }; // class TiffFinder - - /*! - @brief Copy all image tags from the source tree (the tree that is traversed) to a - target tree, which is empty except for the root element provided in the - constructor. - */ - class TiffCopier : public TiffVisitor { - public: - //! @name Creators - //@{ - /*! - @brief Constructor - - @param pRoot Pointer to the root element of the (empty) target tree. - @param root - @param pHeader Pointer to the TIFF header of the source image. - @param pPrimaryGroups Pointer to the list of primary groups. - */ - TiffCopier( TiffComponent* pRoot, - uint32_t root, - const TiffHeaderBase* pHeader, - const PrimaryGroups* pPrimaryGroups); - //! Virtual destructor - virtual ~TiffCopier(); - //@} - - //! @name Manipulators - //@{ - //! Copy a TIFF entry if it is an image tag - virtual void visitEntry(TiffEntry* object); - //! Copy a TIFF data entry if it is an image tag - virtual void visitDataEntry(TiffDataEntry* object); - //! Copy a TIFF image entry if it is an image tag - virtual void visitImageEntry(TiffImageEntry* object); - //! Copy a TIFF size entry if it is an image tag - virtual void visitSizeEntry(TiffSizeEntry* object); - //! Copy a TIFF directory if it is an image tag - virtual void visitDirectory(TiffDirectory* object); - //! Copy a TIFF sub-IFD if it is an image tag - virtual void visitSubIfd(TiffSubIfd* object); - //! Copy a TIFF makernote if it is an image tag - virtual void visitMnEntry(TiffMnEntry* object); - //! Copy an IFD makernote if it is an image tag - virtual void visitIfdMakernote(TiffIfdMakernote* object); - //! Copy a binary array if it is an image tag - virtual void visitBinaryArray(TiffBinaryArray* object); - //! Copy an element of a binary array if it is an image tag - virtual void visitBinaryElement(TiffBinaryElement* object); - - //! Check if \em object is an image tag and if so, copy it to the target tree. - void copyObject(TiffComponent* object); - //@} - - private: - TiffComponent* pRoot_; - uint32_t root_; - const TiffHeaderBase* pHeader_; - const PrimaryGroups* pPrimaryGroups_; - }; // class TiffCopier - - /*! - @brief TIFF composite visitor to decode metadata from the TIFF tree and - add it to an Image, which is supplied in the constructor (Visitor - pattern). Used by TiffParser to decode the metadata from a - TIFF composite. - */ - class TiffDecoder : public TiffVisitor { - public: - //! @name Creators - //@{ - /*! - @brief Constructor, taking metadata containers to add the metadata to, - the root element of the composite to decode and a FindDecoderFct - function to get the decoder function for each tag. - */ - TiffDecoder( - ExifData& exifData, - IptcData& iptcData, - XmpData& xmpData, - TiffComponent* const pRoot, - FindDecoderFct findDecoderFct - ); - //! Virtual destructor - virtual ~TiffDecoder(); - //@} - - //! @name Manipulators - //@{ - //! Decode a TIFF entry - virtual void visitEntry(TiffEntry* object); - //! Decode a TIFF data entry - virtual void visitDataEntry(TiffDataEntry* object); - //! Decode a TIFF image entry - virtual void visitImageEntry(TiffImageEntry* object); - //! Decode a TIFF size entry - virtual void visitSizeEntry(TiffSizeEntry* object); - //! Decode a TIFF directory - virtual void visitDirectory(TiffDirectory* object); - //! Decode a TIFF sub-IFD - virtual void visitSubIfd(TiffSubIfd* object); - //! Decode a TIFF makernote - virtual void visitMnEntry(TiffMnEntry* object); - //! Decode an IFD makernote - virtual void visitIfdMakernote(TiffIfdMakernote* object); - //! Decode a binary array - virtual void visitBinaryArray(TiffBinaryArray* object); - //! Decode an element of a binary array - virtual void visitBinaryElement(TiffBinaryElement* object); - - //! Entry function, determines how to decode each tag - void decodeTiffEntry(const TiffEntryBase* object); - //! Decode a standard TIFF entry - void decodeStdTiffEntry(const TiffEntryBase* object); - //! Decode IPTC data from an IPTCNAA tag or Photoshop ImageResources - void decodeIptc(const TiffEntryBase* object); - //! Decode XMP packet from an XMLPacket tag - void decodeXmp(const TiffEntryBase* object); - //@} - - private: - //! @name Manipulators - //@{ - /*! - @brief Get the data for a \em tag and \em group, either from the - \em object provided, if it matches or from the matching element - in the hierarchy. - - Populates \em pData and \em size with the result. If no matching - element is found the function leaves both of these parameters unchanged. - */ - void getObjData(byte const*& pData, - long& size, - uint16_t tag, - IfdId group, - const TiffEntryBase* object); - //@} - - private: - // DATA - ExifData& exifData_; //!< Exif metadata container - IptcData& iptcData_; //!< IPTC metadata container - XmpData& xmpData_; //!< XMP metadata container - TiffComponent* const pRoot_; //!< Root element of the composite - const FindDecoderFct findDecoderFct_; //!< Ptr to the function to find special decoding functions - std::string make_; //!< Camera make, determined from the tags to decode - bool decodedIptc_; //!< Indicates if IPTC has been decoded yet - - }; // class TiffDecoder - - /*! - @brief TIFF composite visitor to encode metadata from an image to the TIFF - tree. The metadata containers and root element of the tree are - supplied in the constructor. Used by TiffParserWorker to encode the - metadata into a TIFF composite. - - For non-intrusive writing, the encoder is used as a visitor (by - passing it to the accept() member of a TiffComponent). The - composite tree is then traversed and metadata from the image is - used to encode each existing component. - - For intrusive writing, add() is called, which loops through the - metadata and creates and populates corresponding TiffComponents - as needed. - */ - class TiffEncoder : public TiffVisitor { - public: - //! @name Creators - //@{ - /*! - @brief Constructor, taking the root element of the composite to encode - to, the image with the metadata to encode and a function to - find special encoders. - */ - TiffEncoder( - const ExifData& exifData, - const IptcData& iptcData, - const XmpData& xmpData, - TiffComponent* pRoot, - const bool isNewImage, - const PrimaryGroups* pPrimaryGroups, - const TiffHeaderBase* pHeader, - FindEncoderFct findEncoderFct - ); - //! Virtual destructor - virtual ~TiffEncoder(); - //@} - - //! @name Manipulators - //@{ - //! Encode a TIFF entry - virtual void visitEntry(TiffEntry* object); - //! Encode a TIFF data entry - virtual void visitDataEntry(TiffDataEntry* object); - //! Encode a TIFF image entry - virtual void visitImageEntry(TiffImageEntry* object); - //! Encode a TIFF size entry - virtual void visitSizeEntry(TiffSizeEntry* object); - //! Encode a TIFF directory - virtual void visitDirectory(TiffDirectory* object); - //! Update directory entries - virtual void visitDirectoryNext(TiffDirectory* object); - //! Encode a TIFF sub-IFD - virtual void visitSubIfd(TiffSubIfd* object); - //! Encode a TIFF makernote - virtual void visitMnEntry(TiffMnEntry* object); - //! Encode an IFD makernote - virtual void visitIfdMakernote(TiffIfdMakernote* object); - //! Reset encoder to its original state, undo makernote specific settings - virtual void visitIfdMakernoteEnd(TiffIfdMakernote* object); - //! Encode a binary array - virtual void visitBinaryArray(TiffBinaryArray* object); - //! Re-encrypt binary array if necessary - virtual void visitBinaryArrayEnd(TiffBinaryArray* object); - //! Encode an element of a binary array - virtual void visitBinaryElement(TiffBinaryElement* object); - - /*! - @brief Top level encoder function. Determines how to encode each TIFF - component. This function is called by the visit methods of the - encoder as well as the add() method. - - If no \em datum is provided, search the metadata based on tag and - group of the \em object. This is the case if the function is called - from a visit method. - - Then check if a special encoder function is registered for the tag, - and if so use it to encode the \em object. Else use the callback - encoder function at the object (which results in a double-dispatch to - the appropriate encoding function of the encoder. - - @param object Object in the TIFF component tree to encode. - @param datum The corresponding metadatum with the updated value. - - @note Encoder functions may use metadata other than \em datum. - */ - void encodeTiffComponent( - TiffEntryBase* object, - const Exifdatum* datum =0 - ); - - //! Callback encoder function for an element of a binary array. - void encodeBinaryElement(TiffBinaryElement* object, const Exifdatum* datum); - //! Callback encoder function for a binary array. - void encodeBinaryArray(TiffBinaryArray* object, const Exifdatum* datum); - //! Callback encoder function for a data entry. - void encodeDataEntry(TiffDataEntry* object, const Exifdatum* datum); - //! Callback encoder function for a standard TIFF entry - void encodeTiffEntry(TiffEntry* object, const Exifdatum* datum); - //! Callback encoder function for an image entry. - void encodeImageEntry(TiffImageEntry* object, const Exifdatum* datum); - //! Callback encoder function for a %Makernote entry. - void encodeMnEntry(TiffMnEntry* object, const Exifdatum* datum); - //! Callback encoder function for a size entry. - void encodeSizeEntry(TiffSizeEntry* object, const Exifdatum* datum); - //! Callback encoder function for a sub-IFD entry. - void encodeSubIfd(TiffSubIfd* object, const Exifdatum* datum); - - //! Special encoder function for the base part of a TIFF entry. - void encodeTiffEntryBase(TiffEntryBase* object, const Exifdatum* datum); - //! Special encoder function for an offset entry. - void encodeOffsetEntry(TiffEntryBase* object, const Exifdatum* datum); - - //! Special encoder function to encode SubIFD contents to Image group if it contains primary image data - // Todo void encodeNikonSubIfd(TiffEntryBase* object, const Exifdatum* datum); - - //! Special encoder function to encode IPTC data to an IPTCNAA or Photoshop ImageResources tag. - void encodeIptc(TiffEntryBase* object, const Exifdatum* datum); - /*! - @brief Add metadata from image to the TIFF composite. - - For each Exif metadatum, the corresponding TiffComponent is created - if necessary and populated using encodeTiffComponent(). The add() function - is used during intrusive writing, to create a new TIFF structure. - - @note For non-intrusive writing, the encoder is used as a visitor (by - passing it to the accept() member of a TiffComponent). The composite - tree is then traversed and metadata from the image is used to encode - each existing component. - */ - void add( - TiffComponent* pRootDir, - TiffComponent* pSourceDir, - uint32_t root - ); - //! Set the dirty flag and end of traversing signal. - void setDirty(bool flag =true); - //@} - - //! @name Accessors - //@{ - /*! - @brief Return the applicable byte order. May be different for - the Makernote and the rest of the TIFF entries. - */ - ByteOrder byteOrder() const { return byteOrder_; } - /*! - @brief True if any tag was deleted or allocated in the process of - visiting a TIFF composite tree. - */ - bool dirty() const; - //! Return the write method used. - WriteMethod writeMethod() const { return writeMethod_; } - //@} - - private: - //! @name Manipulators - //@{ - /*! - Encode IPTC data. Updates or adds tag Exif.Image.IPTCNAA, updates but - never adds tag Exif.Image.ImageResources. - This method is called from the constructor. - */ - void encodeIptc(); - /*! - Encode XMP data. Adds tag Exif.Image.XMLPacket with the XMP packet. - This method is called from the constructor. - */ - void encodeXmp(); - //@} - - //! @name Accessors - //@{ - /*! - @brief Update a directory entry. This is called after all directory - entries are encoded. It takes care of type and count changes - and size shrinkage for non-intrusive writing. - */ - uint32_t updateDirEntry(byte* buf, - ByteOrder byteOrder, - TiffComponent* pTiffComponent) const; - /*! - @brief Check if the tag is an image tag of an existing image. Such - tags are copied from the original image and can't be modifed. - - The condition is true if there is an existing image (as - opposed to a newly created TIFF image) and \em tag, \em group - is considered an image tag of this image - whether or not - it's actually present in the existing image doesn't matter. - */ - bool isImageTag(uint16_t tag, IfdId group) const; - //@} - - private: - // DATA - ExifData exifData_; //!< Copy of the Exif data to encode - const IptcData& iptcData_; //!< IPTC data to encode, just a reference - const XmpData& xmpData_; //!< XMP data to encode, just a reference - bool del_; //!< Indicates if Exif data entries should be deleted after encoding - const TiffHeaderBase* pHeader_; //!< TIFF image header - TiffComponent* pRoot_; //!< Root element of the composite - const bool isNewImage_; //!< True if the TIFF image is created from scratch - const PrimaryGroups* pPrimaryGroups_; //!< List of primary image groups - TiffComponent* pSourceTree_; //!< Parsed source tree for reference - ByteOrder byteOrder_; //!< Byteorder for encoding - ByteOrder origByteOrder_; //!< Byteorder as set in the c'tor - const FindEncoderFct findEncoderFct_; //!< Ptr to the function to find special encoding functions - std::string make_; //!< Camera make, determined from the tags to encode - bool dirty_; //!< Signals if any tag is deleted or allocated - WriteMethod writeMethod_; //!< Write method used. - - }; // class TiffEncoder - - /*! - @brief Simple state class containing relevant state information for - the TIFF reader. This is in a separate class so that the - reader can change state if needed (e.g., to read certain complex - makernotes). - */ - class TiffRwState { - friend class TiffReader; - public: - //! TiffRWState auto_ptr type - typedef std::auto_ptr AutoPtr; - - //! @name Creators - //@{ - //! Constructor. - TiffRwState(ByteOrder byteOrder, - uint32_t baseOffset) - : byteOrder_(byteOrder), - baseOffset_(baseOffset) {} - //@} - - //! @name Accessors - //@{ - /*! - @brief Return the applicable byte order. May be different for - the Makernote and the rest of the TIFF entries. - */ - ByteOrder byteOrder() const { return byteOrder_; } - /*! - @brief Return the base offset. - - TIFF standard format uses byte offsets which are always relative to - the start of the TIFF file, i.e., relative to the start of the TIFF - image header. In this case, the base offset is 0. However, some - camera vendors encode their makernotes in TIFF IFDs using offsets - relative to (somewhere near) the start of the makernote data. In this - case, base offset added to the start of the TIFF image header points - to the basis for such makernote offsets. - */ - uint32_t baseOffset() const { return baseOffset_; } - //@} - - private: - ByteOrder byteOrder_; - const uint32_t baseOffset_; - }; // TiffRwState - - /*! - @brief TIFF composite visitor to read the TIFF structure from a block of - memory and build the composite from it (Visitor pattern). Used by - TiffParser to read the TIFF data from a block of memory. - */ - class TiffReader : public TiffVisitor { - public: - //! @name Creators - //@{ - /*! - @brief Constructor. The data buffer and table describing the TIFF - structure of the data are set in the constructor. - @param pData Pointer to the data buffer, starting with a TIFF header. - @param size Number of bytes in the data buffer. - @param pRoot Root element of the TIFF composite. - @param state State object for creation function, byte order and - base offset. - */ - TiffReader(const byte* pData, - uint32_t size, - TiffComponent* pRoot, - TiffRwState::AutoPtr state); - - //! Virtual destructor - virtual ~TiffReader(); - //@} - - //! @name Manipulators - //@{ - //! Read a TIFF entry from the data buffer - virtual void visitEntry(TiffEntry* object); - //! Read a TIFF data entry from the data buffer - virtual void visitDataEntry(TiffDataEntry* object); - //! Read a TIFF image entry from the data buffer - virtual void visitImageEntry(TiffImageEntry* object); - //! Read a TIFF size entry from the data buffer - virtual void visitSizeEntry(TiffSizeEntry* object); - //! Read a TIFF directory from the data buffer - virtual void visitDirectory(TiffDirectory* object); - //! Read a TIFF sub-IFD from the data buffer - virtual void visitSubIfd(TiffSubIfd* object); - //! Read a TIFF makernote entry from the data buffer - virtual void visitMnEntry(TiffMnEntry* object); - //! Read an IFD makernote from the data buffer - virtual void visitIfdMakernote(TiffIfdMakernote* object); - //! Reset reader to its original state, undo makernote specific settings - virtual void visitIfdMakernoteEnd(TiffIfdMakernote* object); - //! Read a binary array from the data buffer - virtual void visitBinaryArray(TiffBinaryArray* object); - //! Read an element of a binary array from the data buffer - virtual void visitBinaryElement(TiffBinaryElement* object); - - //! Read a standard TIFF entry from the data buffer - void readTiffEntry(TiffEntryBase* object); - //! Read a TiffDataEntryBase from the data buffer - void readDataEntryBase(TiffDataEntryBase* object); - //! Set the \em state class. Assumes ownership of the object passed in. - void changeState(TiffRwState::AutoPtr state); - //! Reset the state to the original state as set in the constructor. - void resetState(); - //! Check IFD directory pointer \em start for circular reference - bool circularReference(const byte* start, IfdId group); - //! Return the next idx sequence number for \em group - int nextIdx(IfdId group); - - /*! - @brief Read deferred components. - - This function is called after the TIFF composite is read by passing a - TiffReader to the accept() function of the root component. It reads - all components for which reading was deferred during that pass. This - is usually done to make sure that all other components are accessible - at the time the deferred components are processed. - */ - void postProcess(); - //@} - - //! @name Accessors - //@{ - //! Return the byte order. - ByteOrder byteOrder() const; - //! Return the base offset. See class TiffRwState for details - uint32_t baseOffset() const; - //@} - - private: - typedef std::map DirList; - typedef std::map IdxSeq; - typedef std::vector PostList; - - // DATA - const byte* pData_; //!< Pointer to the memory buffer - const uint32_t size_; //!< Size of the buffer - const byte* pLast_; //!< Pointer to the last byte - TiffComponent* const pRoot_; //!< Root element of the composite - TiffRwState* pState_; //!< State class - TiffRwState* pOrigState_; //!< State class as set in the c'tor - DirList dirList_; //!< List of IFD pointers and their groups - IdxSeq idxSeq_; //!< Sequences for group, used for the entry's idx - PostList postList_; //!< List of components with deferred reading - bool postProc_; //!< True in postProcessList() - }; // class TiffReader - -}} // namespace Internal, Exiv2 - -#endif // #ifndef TIFFVISITOR_INT_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/timegm.h b/platform/win32/msvc/external/exiv2/src/timegm.h deleted file mode 100644 index f36f1868ecd..00000000000 --- a/platform/win32/msvc/external/exiv2/src/timegm.h +++ /dev/null @@ -1,94 +0,0 @@ -/*! - @file timegm.h - @brief Declaration of timegm(). The implementation is in localtime.c - @version $Rev: 1800 $ -*/ -#ifndef TIMEGM_H_ -#define TIMEGM_H_ - -#include - -/* - The following comments are copied from the Makefile of the tz distribution, - available at ftp://elsie.nci.nih.gov/pub/: - - NIST-PCTS:151-2, Version 1.4, (1993-12-03) is a test suite put - out by the National Institute of Standards and Technology - which claims to test C and Posix conformance. If you want to pass PCTS, add - -DPCTS - to the end of the "CFLAGS=" line. - - If your system has a "zone abbreviation" field in its "struct tm"s - (or if you decide to add such a field in your system's "time.h" file), - add the name to a define such as - -DTM_ZONE=tm_zone - or - -DTM_ZONE=_tm_zone - to the end of the "CFLAGS=" line. - - If you want functions that were inspired by early versions of X3J11's work, - add - -DSTD_INSPIRED - to the end of the "CFLAGS=" line. - - If you want to allocate state structures in localtime, add - -DALL_STATE - to the end of the "CFLAGS=" line. Storage is obtained by calling malloc. - - If you want Source Code Control System ID's left out of object modules, add - -DNOID - - Add the following to the end of the "CFLAGS=" line as needed. - -DTZDEFRULESTRING=\",date/time,date/time\" to default to the specified - DST transitions if the time zone files cannot be accessed - - If you want to use System V compatibility code, add - -DUSG_COMPAT - to the end of the "CFLAGS=" line. This arrange for "timezone" and "daylight" - variables to be kept up-to-date by the time conversion functions. Neither - "timezone" nor "daylight" is described in X3J11's work. - - If you want an "altzone" variable (a la System V Release 3.1), add - -DALTZONE - to the end of the "CFLAGS=" line. - This variable is not described in X3J11's work. - - If your system has a "GMT offset" field in its "struct tm"s - (or if you decide to add such a field in your system's "time.h" file), - add the name to a define such as - -DTM_GMTOFF=tm_gmtoff - or - -DTM_GMTOFF=_tm_gmtoff - to the end of the "CFLAGS=" line. - Neither tm_gmtoff nor _tm_gmtoff is described in X3J11's work; - in its work, use of "tm_gmtoff" is described as non-conforming. - Both Linux and BSD have done the equivalent of defining TM_GMTOFF in - their recent releases. - - If you want a "gtime" function (a la MACH), add - -DCMUCS - to the end of the "CFLAGS=" line - This function is not described in X3J11's work. -*/ - -#define STD_INSPIRED -#define NOID - -#ifdef __cplusplus -extern "C" { -#endif - -// The UTC version of mktime -/* rmills - timegm is replaced with _mkgmtime on VC 2005 and up */ -/* - see localtime.c */ -#if !defined(_MSC_VER) || (_MSC_VER < 1400) -time_t timegm(struct tm * const tmp); -#else -#define timegm _mkgmtime -#endif - -#ifdef __cplusplus -} -#endif - -#endif // #ifndef TIMEGM_H_ diff --git a/platform/win32/msvc/external/exiv2/src/types.cpp b/platform/win32/msvc/external/exiv2/src/types.cpp deleted file mode 100644 index 4cc2a626dba..00000000000 --- a/platform/win32/msvc/external/exiv2/src/types.cpp +++ /dev/null @@ -1,649 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: types.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - History: 26-Jan-04, ahu: created - 11-Feb-04, ahu: isolated as a component - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: types.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#include "types.hpp" -#include "i18n.h" // for _exvGettext - -// + standard includes -#ifdef EXV_UNICODE_PATH -# include // for MultiByteToWideChar etc -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// ***************************************************************************** -namespace { - - //! Information pertaining to the defined %Exiv2 value type identifiers. - struct TypeInfoTable { - Exiv2::TypeId typeId_; //!< Type id - const char* name_; //!< Name of the type - long size_; //!< Bytes per data entry - //! Comparison operator for \em typeId - bool operator==(Exiv2::TypeId typeId) const - { - return typeId_ == typeId; - } - //! Comparison operator for \em name - bool operator==(const std::string& name) const - { - return 0 == strcmp(name_, name.c_str()); - } - }; // struct TypeInfoTable - - //! Lookup list with information of Exiv2 types - const TypeInfoTable typeInfoTable[] = { - { Exiv2::invalidTypeId, "Invalid", 0 }, - { Exiv2::unsignedByte, "Byte", 1 }, - { Exiv2::asciiString, "Ascii", 1 }, - { Exiv2::unsignedShort, "Short", 2 }, - { Exiv2::unsignedLong, "Long", 4 }, - { Exiv2::unsignedRational, "Rational", 8 }, - { Exiv2::signedByte, "SByte", 1 }, - { Exiv2::undefined, "Undefined", 1 }, - { Exiv2::signedShort, "SShort", 2 }, - { Exiv2::signedLong, "SLong", 4 }, - { Exiv2::signedRational, "SRational", 8 }, - { Exiv2::tiffFloat, "Float", 4 }, - { Exiv2::tiffDouble, "Double", 8 }, - { Exiv2::tiffIfd, "Ifd", 4 }, - { Exiv2::string, "String", 1 }, - { Exiv2::date, "Date", 8 }, - { Exiv2::time, "Time", 11 }, - { Exiv2::comment, "Comment", 1 }, - { Exiv2::directory, "Directory", 1 }, - { Exiv2::xmpText, "XmpText", 1 }, - { Exiv2::xmpAlt, "XmpAlt", 1 }, - { Exiv2::xmpBag, "XmpBag", 1 }, - { Exiv2::xmpSeq, "XmpSeq", 1 }, - { Exiv2::langAlt, "LangAlt", 1 } - }; - -} - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - const char* TypeInfo::typeName(TypeId typeId) - { - const TypeInfoTable* tit = find(typeInfoTable, typeId); - if (!tit) return 0; - return tit->name_; - } - - TypeId TypeInfo::typeId(const std::string& typeName) - { - const TypeInfoTable* tit = find(typeInfoTable, typeName); - if (!tit) return invalidTypeId; - return tit->typeId_; - } - - long TypeInfo::typeSize(TypeId typeId) - { - const TypeInfoTable* tit = find(typeInfoTable, typeId); - if (!tit) return 0; - return tit->size_; - } - - DataBuf::DataBuf(DataBuf& rhs) - : pData_(rhs.pData_), size_(rhs.size_) - { - rhs.release(); - } - - DataBuf::DataBuf(const byte* pData, long size) - : pData_(0), size_(0) - { - if (size > 0) { - pData_ = new byte[size]; - std::memcpy(pData_, pData, size); - size_ = size; - } - } - - DataBuf& DataBuf::operator=(DataBuf& rhs) - { - if (this == &rhs) return *this; - reset(rhs.release()); - return *this; - } - - void DataBuf::alloc(long size) - { - if (size > size_) { - delete[] pData_; - pData_ = 0; - size_ = 0; - pData_ = new byte[size]; - size_ = size; - } - } - - std::pair DataBuf::release() - { - std::pair p = std::make_pair(pData_, size_); - pData_ = 0; - size_ = 0; - return p; - } - - void DataBuf::reset(std::pair p) - { - if (pData_ != p.first) { - delete[] pData_; - pData_ = p.first; - } - size_ = p.second; - } - - // ************************************************************************* - // free functions - - std::ostream& operator<<(std::ostream& os, const Rational& r) - { - return os << r.first << "/" << r.second; - } - - std::istream& operator>>(std::istream& is, Rational& r) - { - int32_t nominator; - int32_t denominator; - char c('\0'); - is >> nominator >> c >> denominator; - if (c != '/') is.setstate(std::ios::failbit); - if (is) r = std::make_pair(nominator, denominator); - return is; - } - - std::ostream& operator<<(std::ostream& os, const URational& r) - { - return os << r.first << "/" << r.second; - } - - std::istream& operator>>(std::istream& is, URational& r) - { - uint32_t nominator; - uint32_t denominator; - char c('\0'); - is >> nominator >> c >> denominator; - if (c != '/') is.setstate(std::ios::failbit); - if (is) r = std::make_pair(nominator, denominator); - return is; - } - - uint16_t getUShort(const byte* buf, ByteOrder byteOrder) - { - if (byteOrder == littleEndian) { - return (byte)buf[1] << 8 | (byte)buf[0]; - } - else { - return (byte)buf[0] << 8 | (byte)buf[1]; - } - } - - uint32_t getULong(const byte* buf, ByteOrder byteOrder) - { - if (byteOrder == littleEndian) { - return (byte)buf[3] << 24 | (byte)buf[2] << 16 - | (byte)buf[1] << 8 | (byte)buf[0]; - } - else { - return (byte)buf[0] << 24 | (byte)buf[1] << 16 - | (byte)buf[2] << 8 | (byte)buf[3]; - } - } - - URational getURational(const byte* buf, ByteOrder byteOrder) - { - uint32_t nominator = getULong(buf, byteOrder); - uint32_t denominator = getULong(buf + 4, byteOrder); - return std::make_pair(nominator, denominator); - } - - int16_t getShort(const byte* buf, ByteOrder byteOrder) - { - if (byteOrder == littleEndian) { - return (byte)buf[1] << 8 | (byte)buf[0]; - } - else { - return (byte)buf[0] << 8 | (byte)buf[1]; - } - } - - int32_t getLong(const byte* buf, ByteOrder byteOrder) - { - if (byteOrder == littleEndian) { - return (byte)buf[3] << 24 | (byte)buf[2] << 16 - | (byte)buf[1] << 8 | (byte)buf[0]; - } - else { - return (byte)buf[0] << 24 | (byte)buf[1] << 16 - | (byte)buf[2] << 8 | (byte)buf[3]; - } - } - - Rational getRational(const byte* buf, ByteOrder byteOrder) - { - int32_t nominator = getLong(buf, byteOrder); - int32_t denominator = getLong(buf + 4, byteOrder); - return std::make_pair(nominator, denominator); - } - - float getFloat(const byte* buf, ByteOrder byteOrder) - { - // This algorithm assumes that the internal representation of the float - // type is the 4-byte IEEE 754 binary32 format, which is common but not - // required by the C++ standard. - assert(sizeof(float) == 4); - union { - uint32_t ul_; - float f_; - } u; - u.ul_ = getULong(buf, byteOrder); - return u.f_; - } - - double getDouble(const byte* buf, ByteOrder byteOrder) - { - // This algorithm assumes that the internal representation of the double - // type is the 8-byte IEEE 754 binary64 format, which is common but not - // required by the C++ standard. - assert(sizeof(double) == 8); - union { - uint64_t ull_; - double d_; - } u; - u.ull_ = 0; - if (byteOrder == littleEndian) { - u.ull_ = static_cast(buf[7]) << 56 - | static_cast(buf[6]) << 48 - | static_cast(buf[5]) << 40 - | static_cast(buf[4]) << 32 - | static_cast(buf[3]) << 24 - | static_cast(buf[2]) << 16 - | static_cast(buf[1]) << 8 - | static_cast(buf[0]); - } - else { - u.ull_ = static_cast(buf[0]) << 56 - | static_cast(buf[1]) << 48 - | static_cast(buf[2]) << 40 - | static_cast(buf[3]) << 32 - | static_cast(buf[4]) << 24 - | static_cast(buf[5]) << 16 - | static_cast(buf[6]) << 8 - | static_cast(buf[7]); - } - return u.d_; - } - - long us2Data(byte* buf, uint16_t s, ByteOrder byteOrder) - { - if (byteOrder == littleEndian) { - buf[0] = (byte) (s & 0x00ff); - buf[1] = (byte)((s & 0xff00) >> 8); - } - else { - buf[0] = (byte)((s & 0xff00) >> 8); - buf[1] = (byte) (s & 0x00ff); - } - return 2; - } - - long ul2Data(byte* buf, uint32_t l, ByteOrder byteOrder) - { - if (byteOrder == littleEndian) { - buf[0] = (byte) (l & 0x000000ff); - buf[1] = (byte)((l & 0x0000ff00) >> 8); - buf[2] = (byte)((l & 0x00ff0000) >> 16); - buf[3] = (byte)((l & 0xff000000) >> 24); - } - else { - buf[0] = (byte)((l & 0xff000000) >> 24); - buf[1] = (byte)((l & 0x00ff0000) >> 16); - buf[2] = (byte)((l & 0x0000ff00) >> 8); - buf[3] = (byte) (l & 0x000000ff); - } - return 4; - } - - long ur2Data(byte* buf, URational l, ByteOrder byteOrder) - { - long o = ul2Data(buf, l.first, byteOrder); - o += ul2Data(buf+o, l.second, byteOrder); - return o; - } - - long s2Data(byte* buf, int16_t s, ByteOrder byteOrder) - { - if (byteOrder == littleEndian) { - buf[0] = (byte)(s & 0x00ff); - buf[1] = (byte)((s & 0xff00) >> 8); - } - else { - buf[0] = (byte)((s & 0xff00) >> 8); - buf[1] = (byte)(s & 0x00ff); - } - return 2; - } - - long l2Data(byte* buf, int32_t l, ByteOrder byteOrder) - { - if (byteOrder == littleEndian) { - buf[0] = (byte)(l & 0x000000ff); - buf[1] = (byte)((l & 0x0000ff00) >> 8); - buf[2] = (byte)((l & 0x00ff0000) >> 16); - buf[3] = (byte)((l & 0xff000000) >> 24); - } - else { - buf[0] = (byte)((l & 0xff000000) >> 24); - buf[1] = (byte)((l & 0x00ff0000) >> 16); - buf[2] = (byte)((l & 0x0000ff00) >> 8); - buf[3] = (byte)(l & 0x000000ff); - } - return 4; - } - - long r2Data(byte* buf, Rational l, ByteOrder byteOrder) - { - long o = l2Data(buf, l.first, byteOrder); - o += l2Data(buf+o, l.second, byteOrder); - return o; - } - - long f2Data(byte* buf, float f, ByteOrder byteOrder) - { - // This algorithm assumes that the internal representation of the float - // type is the 4-byte IEEE 754 binary32 format, which is common but not - // required by the C++ standard. - assert(sizeof(float) == 4); - union { - uint32_t ul_; - float f_; - } u; - u.f_ = f; - return ul2Data(buf, u.ul_, byteOrder); - } - - long d2Data(byte* buf, double d, ByteOrder byteOrder) - { - // This algorithm assumes that the internal representation of the double - // type is the 8-byte IEEE 754 binary64 format, which is common but not - // required by the C++ standard. - assert(sizeof(double) == 8); - union { - uint64_t ull_; - double d_; - } u; - u.d_ = d; - uint64_t m = 0xff; - if (byteOrder == littleEndian) { - buf[0] = (byte)(u.ull_ & m); - buf[1] = (byte)((u.ull_ & (m << 8)) >> 8); - buf[2] = (byte)((u.ull_ & (m << 16)) >> 16); - buf[3] = (byte)((u.ull_ & (m << 24)) >> 24); - buf[4] = (byte)((u.ull_ & (m << 32)) >> 32); - buf[5] = (byte)((u.ull_ & (m << 40)) >> 40); - buf[6] = (byte)((u.ull_ & (m << 48)) >> 48); - buf[7] = (byte)((u.ull_ & (m << 56)) >> 56); - } - else { - buf[0] = (byte)((u.ull_ & (m << 56)) >> 56); - buf[1] = (byte)((u.ull_ & (m << 48)) >> 48); - buf[2] = (byte)((u.ull_ & (m << 40)) >> 40); - buf[3] = (byte)((u.ull_ & (m << 32)) >> 32); - buf[4] = (byte)((u.ull_ & (m << 24)) >> 24); - buf[5] = (byte)((u.ull_ & (m << 16)) >> 16); - buf[6] = (byte)((u.ull_ & (m << 8)) >> 8); - buf[7] = (byte)(u.ull_ & m); - } - return 8; - } - - void hexdump(std::ostream& os, const byte* buf, long len, long offset) - { - const std::string::size_type pos = 8 + 16 * 3 + 2; - const std::string align(pos, ' '); - - long i = 0; - while (i < len) { - os << " " - << std::setw(4) << std::setfill('0') << std::hex - << i + offset << " "; - std::ostringstream ss; - do { - byte c = buf[i]; - os << std::setw(2) << std::setfill('0') << std::right - << std::hex << (int)c << " "; - ss << ((int)c >= 31 && (int)c < 127 ? char(buf[i]) : '.'); - } while (++i < len && i%16 != 0); - std::string::size_type width = 9 + ((i-1)%16 + 1) * 3; - os << (width > pos ? "" : align.substr(width)) << ss.str() << "\n"; - } - os << std::dec << std::setfill(' '); - } // hexdump - - bool isHex(const std::string& str, size_t size, const std::string& prefix) - { - if ( str.size() <= prefix.size() - || str.substr(0, prefix.size()) != prefix) return false; - if ( size > 0 - && str.size() != size + prefix.size()) return false; - - for (size_t i = prefix.size(); i < str.size(); ++i) { - if (!isxdigit(str[i])) return false; - } - return true; - } // isHex - - int exifTime(const char* buf, struct tm* tm) - { - assert(buf != 0); - assert(tm != 0); - int rc = 1; - int year, mon, mday, hour, min, sec; - int scanned = std::sscanf(buf, "%4d:%2d:%2d %2d:%2d:%2d", - &year, &mon, &mday, &hour, &min, &sec); - if (scanned == 6) { - tm->tm_year = year - 1900; - tm->tm_mon = mon - 1; - tm->tm_mday = mday; - tm->tm_hour = hour; - tm->tm_min = min; - tm->tm_sec = sec; - rc = 0; - } - return rc; - } // exifTime - - const char* exvGettext(const char* str) - { -#ifdef EXV_ENABLE_NLS - return _exvGettext(str); -#else - return str; -#endif - } - -#ifdef EXV_UNICODE_PATH - std::string ws2s(const std::wstring& s) - { - int len; - int slength = (int)s.length() + 1; - len = WideCharToMultiByte(CP_ACP, 0, s.c_str(), slength, 0, 0, 0, 0); - char* buf = new char[len]; - WideCharToMultiByte(CP_ACP, 0, s.c_str(), slength, buf, len, 0, 0); - std::string r(buf); - delete[] buf; - return r; - } - - std::wstring s2ws(const std::string& s) - { - int len; - int slength = (int)s.length() + 1; - len = MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, 0, 0); - wchar_t* buf = new wchar_t[len]; - MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, buf, len); - std::wstring r(buf); - delete[] buf; - return r; - } - -#endif // EXV_UNICODE_PATH - template<> - bool stringTo(const std::string& s, bool& ok) - { - std::string lcs(s); /* lowercase string */ - for(unsigned i = 0; i < lcs.length(); i++) { - lcs[i] = std::tolower(s[i]); - } - /* handle the same values as xmp sdk */ - if (lcs == "false" || lcs == "f" || lcs == "0") { - ok = true; - return false; - } - if (lcs == "true" || lcs == "t" || lcs == "1") { - ok = true; - return true; - } - ok = false; - return false; - } - - long parseLong(const std::string& s, bool& ok) - { - long ret = stringTo(s, ok); - if (ok) return ret; - - float f = stringTo(s, ok); - if (ok) return static_cast(f); - - Rational r = stringTo(s, ok); - if (ok) { - if (r.second == 0) { - ok = false; - return 0; - } - return static_cast(static_cast(r.first) / r.second); - } - - bool b = stringTo(s, ok); - if (ok) return b ? 1 : 0; - - // everything failed, return from stringTo is probably the best fit - return ret; - } - - float parseFloat(const std::string& s, bool& ok) - { - float ret = stringTo(s, ok); - if (ok) return ret; - - Rational r = stringTo(s, ok); - if (ok) { - if (r.second == 0) { - ok = false; - return 0.0; - } - return static_cast(r.first) / r.second; - } - - bool b = stringTo(s, ok); - if (ok) return b ? 1.0f : 0.0f; - - // everything failed, return from stringTo is probably the best fit - return ret; - } - - Rational parseRational(const std::string& s, bool& ok) - { - Rational ret = stringTo(s, ok); - if (ok) return ret; - - long l = stringTo(s, ok); - if (ok) return Rational(l, 1); - - float f = stringTo(s, ok); - if (ok) return floatToRationalCast(f); - - bool b = stringTo(s, ok); - if (ok) return b ? Rational(1, 1) : Rational(0, 1); - - // everything failed, return from stringTo is probably the best fit - return ret; - } - - Rational floatToRationalCast(float f) - { - // Beware: primitive conversion algorithm - int32_t den = 1000000; - if (std::labs(static_cast(f)) > 2147) den = 10000; - if (std::labs(static_cast(f)) > 214748) den = 100; - if (std::labs(static_cast(f)) > 21474836) den = 1; - const float rnd = f >= 0 ? 0.5f : -0.5f; - const int32_t nom = static_cast(f * den + rnd); - const int32_t g = gcd(nom, den); - - return Rational(nom/g, den/g); - } - -} // namespace Exiv2 - -#ifdef EXV_ENABLE_NLS -// Declaration is in i18n.h -const char* _exvGettext(const char* str) -{ - static bool exvGettextInitialized = false; - - if (!exvGettextInitialized) { - bindtextdomain(EXV_PACKAGE, EXV_LOCALEDIR); -# ifdef EXV_HAVE_BIND_TEXTDOMAIN_CODESET - bind_textdomain_codeset (EXV_PACKAGE, "UTF-8"); -# endif - exvGettextInitialized = true; - } - - return dgettext(EXV_PACKAGE, str); -} -#endif // EXV_ENABLE_NLS diff --git a/platform/win32/msvc/external/exiv2/src/types.hpp b/platform/win32/msvc/external/exiv2/src/types.hpp deleted file mode 100644 index 57c72b19c8d..00000000000 --- a/platform/win32/msvc/external/exiv2/src/types.hpp +++ /dev/null @@ -1,559 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file types.hpp - @brief Type definitions for %Exiv2 and related functionality - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 09-Jan-04, ahu: created
- 11-Feb-04, ahu: isolated as a component
- 31-Jul-04, brad: added Time, Data and String values - */ -#ifndef TYPES_HPP_ -#define TYPES_HPP_ - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#include "version.hpp" - -// + standard includes -#include -#include -#include -#include -#include -#include - -#ifdef EXV_HAVE_STDINT_H -# include -#elif defined(_MSC_VER) -// MSVC (before 2010) doesn't provide C99 types, but it has MS specific variants -typedef unsigned __int8 uint8_t; -typedef unsigned __int16 uint16_t; -typedef unsigned __int32 uint32_t; -typedef unsigned __int64 uint64_t; -typedef __int8 int8_t; -typedef __int16 int16_t; -typedef __int32 int32_t; -typedef __int64 int64_t; -#endif - -// MSVC macro to convert a string to a wide string -#ifdef EXV_UNICODE_PATH -# define EXV_WIDEN(t) L ## t -#endif - -/*! - @brief Macro to make calls to member functions through a pointer more readable. - See the C++ FAQ LITE, item - [33.5] How can I avoid syntax errors when calling a member function using a pointer-to-member-function?. - */ -#define EXV_CALL_MEMBER_FN(object,ptrToMember) ((object).*(ptrToMember)) - -// Simple min and max macros -//! Simple common min macro -#define EXV_MIN(a,b) ((a) < (b) ? (a) : (b)) -//! Simple common max macro -#define EXV_MAX(a,b) ((a) > (b) ? (a) : (b)) - -// ***************************************************************************** -// forward declarations -struct tm; - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// type definitions - - //! 1 byte unsigned integer type. - typedef uint8_t byte; - - //! 8 byte unsigned rational type. - typedef std::pair URational; - //! 8 byte signed rational type. - typedef std::pair Rational; - - //! Type to express the byte order (little or big endian) - enum ByteOrder { invalidByteOrder, littleEndian, bigEndian }; - - //! Type to indicate write method used by TIFF parsers - enum WriteMethod { wmIntrusive, wmNonIntrusive }; - - //! An identifier for each type of metadata - enum MetadataId { mdNone=0, mdExif=1, mdIptc=2, mdComment=4, mdXmp=8 }; - - //! An identifier for each mode of metadata support - enum AccessMode { amNone=0, amRead=1, amWrite=2, amReadWrite=3 }; - - /*! - @brief %Exiv2 value type identifiers. - - Used primarily as identifiers when creating %Exiv2 Value instances. - See Value::create. 0x0000 to 0xffff are reserved for TIFF (Exif) types. - */ - enum TypeId { - unsignedByte = 1, //!< Exif BYTE type, 8-bit unsigned integer. - asciiString = 2, //!< Exif ASCII type, 8-bit byte. - unsignedShort = 3, //!< Exif SHORT type, 16-bit (2-byte) unsigned integer. - unsignedLong = 4, //!< Exif LONG type, 32-bit (4-byte) unsigned integer. - unsignedRational = 5, //!< Exif RATIONAL type, two LONGs: numerator and denumerator of a fraction. - signedByte = 6, //!< Exif SBYTE type, an 8-bit signed (twos-complement) integer. - undefined = 7, //!< Exif UNDEFINED type, an 8-bit byte that may contain anything. - signedShort = 8, //!< Exif SSHORT type, a 16-bit (2-byte) signed (twos-complement) integer. - signedLong = 9, //!< Exif SLONG type, a 32-bit (4-byte) signed (twos-complement) integer. - signedRational =10, //!< Exif SRATIONAL type, two SLONGs: numerator and denumerator of a fraction. - tiffFloat =11, //!< TIFF FLOAT type, single precision (4-byte) IEEE format. - tiffDouble =12, //!< TIFF DOUBLE type, double precision (8-byte) IEEE format. - tiffIfd =13, //!< TIFF IFD type, 32-bit (4-byte) unsigned integer. - string =0x10000, //!< IPTC string type. - date =0x10001, //!< IPTC date type. - time =0x10002, //!< IPTC time type. - comment =0x10003, //!< %Exiv2 type for the Exif user comment. - directory =0x10004, //!< %Exiv2 type for a CIFF directory. - xmpText =0x10005, //!< XMP text type. - xmpAlt =0x10006, //!< XMP alternative type. - xmpBag =0x10007, //!< XMP bag type. - xmpSeq =0x10008, //!< XMP sequence type. - langAlt =0x10009, //!< XMP language alternative type. - invalidTypeId =0x1fffe, //!< Invalid type id. - lastTypeId =0x1ffff //!< Last type id. - }; - - //! Container for binary data - typedef std::vector Blob; - -// ***************************************************************************** -// class definitions - - //! Type information lookup functions. Implemented as a static class. - class EXIV2API TypeInfo { - //! Prevent construction: not implemented. - TypeInfo(); - //! Prevent copy-construction: not implemented. - TypeInfo(const TypeInfo& rhs); - //! Prevent assignment: not implemented. - TypeInfo& operator=(const TypeInfo& rhs); - - public: - //! Return the name of the type, 0 if unknown. - static const char* typeName(TypeId typeId); - //! Return the type id for a type name - static TypeId typeId(const std::string& typeName); - //! Return the size in bytes of one element of this type - static long typeSize(TypeId typeId); - - }; - - /*! - @brief Auxiliary type to enable copies and assignments, similar to - std::auto_ptr_ref. See http://www.josuttis.com/libbook/auto_ptr.html - for a discussion. - */ - struct EXIV2API DataBufRef { - //! Constructor - DataBufRef(std::pair rhs) : p(rhs) {} - //! Pointer to a byte array and its size - std::pair p; - }; - - /*! - @brief Utility class containing a character array. All it does is to take - care of memory allocation and deletion. Its primary use is meant to - be as a stack variable in functions that need a temporary data - buffer. - */ - class EXIV2API DataBuf { - public: - //! @name Creators - //@{ - //! Default constructor - DataBuf() : pData_(0), size_(0) {} - //! Constructor with an initial buffer size - explicit DataBuf(long size) : pData_(new byte[size]), size_(size) {} - //! Constructor, copies an existing buffer - DataBuf(const byte* pData, long size); - /*! - @brief Copy constructor. Transfers the buffer to the newly created - object similar to std::auto_ptr, i.e., the original object is - modified. - */ - DataBuf(DataBuf& rhs); - //! Destructor, deletes the allocated buffer - ~DataBuf() { delete[] pData_; } - //@} - - //! @name Manipulators - //@{ - /*! - @brief Assignment operator. Transfers the buffer and releases the - buffer at the original object similar to std::auto_ptr, i.e., - the original object is modified. - */ - DataBuf& operator=(DataBuf& rhs); - /*! - @brief Allocate a data buffer of at least the given size. Note that if - the requested \em size is less than the current buffer size, no - new memory is allocated and the buffer size doesn't change. - */ - void alloc(long size); - /*! - @brief Release ownership of the buffer to the caller. Returns the - buffer as a data pointer and size pair, resets the internal - buffer. - */ - std::pair release(); - //! Reset value - void reset(std::pair =std::make_pair((byte*)(0),long(0))); - //@} - - /*! - @name Conversions - - Special conversions with auxiliary type to enable copies - and assignments, similar to those used for std::auto_ptr. - See http://www.josuttis.com/libbook/auto_ptr.html for a discussion. - */ - //@{ - DataBuf(DataBufRef rhs) : pData_(rhs.p.first), size_(rhs.p.second) {} - DataBuf& operator=(DataBufRef rhs) { reset(rhs.p); return *this; } - operator DataBufRef() { return DataBufRef(release()); } - //@} - - // DATA - //! Pointer to the buffer, 0 if none has been allocated - byte* pData_; - //! The current size of the buffer - long size_; - }; // class DataBuf - - -// ***************************************************************************** -// free functions - - //! Read a 2 byte unsigned short value from the data buffer - EXIV2API uint16_t getUShort(const byte* buf, ByteOrder byteOrder); - //! Read a 4 byte unsigned long value from the data buffer - EXIV2API uint32_t getULong(const byte* buf, ByteOrder byteOrder); - //! Read an 8 byte unsigned rational value from the data buffer - EXIV2API URational getURational(const byte* buf, ByteOrder byteOrder); - //! Read a 2 byte signed short value from the data buffer - EXIV2API int16_t getShort(const byte* buf, ByteOrder byteOrder); - //! Read a 4 byte signed long value from the data buffer - EXIV2API int32_t getLong(const byte* buf, ByteOrder byteOrder); - //! Read an 8 byte signed rational value from the data buffer - EXIV2API Rational getRational(const byte* buf, ByteOrder byteOrder); - //! Read a 4 byte single precision floating point value (IEEE 754 binary32) from the data buffer - EXIV2API float getFloat(const byte* buf, ByteOrder byteOrder); - //! Read an 8 byte double precision floating point value (IEEE 754 binary64) from the data buffer - EXIV2API double getDouble(const byte* buf, ByteOrder byteOrder); - - //! Output operator for our fake rational - EXIV2API std::ostream& operator<<(std::ostream& os, const Rational& r); - //! Input operator for our fake rational - EXIV2API std::istream& operator>>(std::istream& is, Rational& r); - //! Output operator for our fake unsigned rational - EXIV2API std::ostream& operator<<(std::ostream& os, const URational& r); - //! Input operator for our fake unsigned rational - EXIV2API std::istream& operator>>(std::istream& is, URational& r); - - /*! - @brief Convert an unsigned short to data, write the data to the buffer, - return number of bytes written. - */ - EXIV2API long us2Data(byte* buf, uint16_t s, ByteOrder byteOrder); - /*! - @brief Convert an unsigned long to data, write the data to the buffer, - return number of bytes written. - */ - EXIV2API long ul2Data(byte* buf, uint32_t l, ByteOrder byteOrder); - /*! - @brief Convert an unsigned rational to data, write the data to the buffer, - return number of bytes written. - */ - EXIV2API long ur2Data(byte* buf, URational l, ByteOrder byteOrder); - /*! - @brief Convert a signed short to data, write the data to the buffer, - return number of bytes written. - */ - EXIV2API long s2Data(byte* buf, int16_t s, ByteOrder byteOrder); - /*! - @brief Convert a signed long to data, write the data to the buffer, - return number of bytes written. - */ - EXIV2API long l2Data(byte* buf, int32_t l, ByteOrder byteOrder); - /*! - @brief Convert a signed rational to data, write the data to the buffer, - return number of bytes written. - */ - EXIV2API long r2Data(byte* buf, Rational l, ByteOrder byteOrder); - /*! - @brief Convert a single precision floating point (IEEE 754 binary32) float - to data, write the data to the buffer, return number of bytes written. - */ - EXIV2API long f2Data(byte* buf, float f, ByteOrder byteOrder); - /*! - @brief Convert a double precision floating point (IEEE 754 binary64) double - to data, write the data to the buffer, return number of bytes written. - */ - EXIV2API long d2Data(byte* buf, double d, ByteOrder byteOrder); - - /*! - @brief Print len bytes from buf in hex and ASCII format to the given - stream, prefixed with the position in the buffer adjusted by - offset. - */ - EXIV2API void hexdump(std::ostream& os, const byte* buf, long len, long offset =0); - - /*! - @brief Return true if str is a hex number starting with prefix followed - by size hex digits, false otherwise. If size is 0, any number of - digits is allowed and all are checked. - */ - EXIV2API bool isHex(const std::string& str, - size_t size =0, - const std::string& prefix =""); - - /*! - @brief Converts a string in the form "%Y:%m:%d %H:%M:%S", e.g., - "2007:05:24 12:31:55" to broken down time format, - returns 0 if successful, else 1. - */ - EXIV2API int exifTime(const char* buf, struct tm* tm); - - /*! - @brief Translate a string using the gettext framework. This wrapper hides - all the implementation details from the interface. - */ - EXIV2API const char* exvGettext(const char* str); - -#ifdef EXV_UNICODE_PATH - //! Convert an std::string s to a unicode string returned as a std::wstring. - EXIV2API std::wstring s2ws(const std::string& s); - //! Convert a unicode std::wstring s to an std::string. - EXIV2API std::string ws2s(const std::wstring& s); - -#endif - /*! - @brief Return a \em long set to the value represented by \em s. - - Besides strings that represent \em long values, the function also - handles \em float, \em Rational and boolean - (see also: stringTo(const std::string& s, bool& ok)). - - @param s String to parse - @param ok Output variable indicating the success of the operation. - @return Returns the \em long value represented by \em s and sets \em ok - to \c true if the conversion was successful or \c false if not. - */ - EXIV2API long parseLong(const std::string& s, bool& ok); - - /*! - @brief Return a \em float set to the value represented by \em s. - - Besides strings that represent \em float values, the function also - handles \em long, \em Rational and boolean - (see also: stringTo(const std::string& s, bool& ok)). - - @param s String to parse - @param ok Output variable indicating the success of the operation. - @return Returns the \em float value represented by \em s and sets \em ok - to \c true if the conversion was successful or \c false if not. - */ - EXIV2API float parseFloat(const std::string& s, bool& ok); - - /*! - @brief Return a \em Rational set to the value represented by \em s. - - Besides strings that represent \em Rational values, the function also - handles \em long, \em float and boolean - (see also: stringTo(const std::string& s, bool& ok)). - Uses floatToRationalCast(float f) if the string can be parsed into a - \em float. - - @param s String to parse - @param ok Output variable indicating the success of the operation. - @return Returns the \em Rational value represented by \em s and sets \em ok - to \c true if the conversion was successful or \c false if not. - */ - EXIV2API Rational parseRational(const std::string& s, bool& ok); - - /*! - @brief Very simple conversion of a \em float to a \em Rational. - - Test it with the values that you expect and check the implementation - to see if this is really what you want! - */ - EXIV2API Rational floatToRationalCast(float f); - -// ***************************************************************************** -// template and inline definitions - - /*! - @brief Find an element that matches \em key in the array \em src. - - Designed to be used with lookup tables as shown in the example below. - Requires a %Key structure (ideally in the array) and a comparison operator - to compare a key with an array element. The size of the array is - determined automagically. Thanks to Stephan Broennimann for this nifty - implementation. - - @code - struct Bar { - int i; - int k; - const char* data; - - struct Key; - bool operator==(const Bar::Key& rhs) const; - }; - - struct Bar::Key { - Key(int a, int b) : i(a), k(b) {} - int i; - int k; - }; - - bool Bar::operator==(const Bar::Key& key) const // definition - { - return i == key.i && k == key.k; - } - - const Bar bars[] = { - { 1, 1, "bar data 1" }, - { 1, 2, "bar data 2" }, - { 1, 3, "bar data 3" } - }; - - int main ( void ) { - const Bar* bar = find(bars, Bar::Key(1, 3)); - if (bar) std::cout << bar->data << "\n"; - else std::cout << "Key not found.\n"; - return 0; - } - @endcode - */ - template - const T* find(T (&src)[N], const K& key) - { - const T* rc = std::find(src, src + N, key); - return rc == src + N ? 0 : rc; - } - - //! Template used in the COUNTOF macro to determine the size of an array - template char (&sizer(T (&)[N]))[N]; -//! Macro to determine the size of an array -#define EXV_COUNTOF(a) (sizeof(Exiv2::sizer(a))) - - //! Utility function to convert the argument of any type to a string - template - std::string toString(const T& arg) - { - std::ostringstream os; - os << arg; - return os.str(); - } - - /*! - @brief Utility function to convert a string to a value of type \c T. - - The string representation of the value must match that recognized by - the input operator for \c T for this function to succeed. - - @param s String to convert - @param ok Output variable indicating the success of the operation. - @return Returns the converted value and sets \em ok to \c true if the - conversion was successful or \c false if not. - */ - template - T stringTo(const std::string& s, bool& ok) - { - std::istringstream is(s); - T tmp; - ok = is >> tmp ? true : false; - std::string rest; - is >> std::skipws >> rest; - if (!rest.empty()) ok = false; - return tmp; - } - - /*! - @brief Specialization of stringTo(const std::string& s, bool& ok) for \em bool. - - Handles the same string values as the XMP SDK. Converts the string to lowercase - and returns \c true if it is "true", "t" or "1", and \c false if it is - "false", "f" or "0". - */ - template<> - bool stringTo(const std::string& s, bool& ok); - - /*! - @brief Return the greatest common denominator of n and m. - (Implementation from Boost rational.hpp) - - @note We use n and m as temporaries in this function, so there is no - value in using const IntType& as we would only need to make a copy - anyway... - */ - template - IntType gcd(IntType n, IntType m) - { - // Avoid repeated construction - IntType zero(0); - - // This is abs() - given the existence of broken compilers with Koenig - // lookup issues and other problems, I code this explicitly. (Remember, - // IntType may be a user-defined type). -#ifdef _MSC_VER -#pragma warning( disable : 4146 ) -#endif - if (n < zero) - n = -n; - if (m < zero) - m = -m; -#ifdef _MSC_VER -#pragma warning( default : 4146 ) -#endif - - // As n and m are now positive, we can be sure that %= returns a - // positive value (the standard guarantees this for built-in types, - // and we require it of user-defined types). - for(;;) { - if(m == zero) - return n; - n %= m; - if(n == zero) - return m; - m %= n; - } - } - -} // namespace Exiv2 - -#endif // #ifndef TYPES_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/tzfile.h b/platform/win32/msvc/external/exiv2/src/tzfile.h deleted file mode 100644 index d9c22105d9b..00000000000 --- a/platform/win32/msvc/external/exiv2/src/tzfile.h +++ /dev/null @@ -1,193 +0,0 @@ -/*! - @file tzfile.h - @brief This file is from the tz distribution at ftp://elsie.nci.nih.gov/pub/ - @version $Rev: 392 $ -*/ -#ifndef TZFILE_H - -#define TZFILE_H - -/* -** This file is in the public domain, so clarified as of -** 1996-06-05 by Arthur David Olson (arthur_david_olson@nih.gov). -*/ - -/* -** This header is for use ONLY with the time conversion code. -** There is no guarantee that it will remain unchanged, -** or that it will remain at all. -** Do NOT copy it to any system include directory. -** Thank you! -*/ - -/* -** ID -*/ - -#ifndef lint -#ifndef NOID -static char tzfilehid[] = "@(#)tzfile.h 7.14"; -#endif /* !defined NOID */ -#endif /* !defined lint */ - -/* -** Information about time zone files. -*/ - -#ifndef TZDIR -#define TZDIR "/usr/local/etc/zoneinfo" /* Time zone object file directory */ -#endif /* !defined TZDIR */ - -#ifndef TZDEFAULT -#define TZDEFAULT "localtime" -#endif /* !defined TZDEFAULT */ - -#ifndef TZDEFRULES -#define TZDEFRULES "posixrules" -#endif /* !defined TZDEFRULES */ - -/* -** Each file begins with. . . -*/ - -#define TZ_MAGIC "TZif" - -struct tzhead { - char tzh_magic[4]; /* TZ_MAGIC */ - char tzh_reserved[16]; /* reserved for future use */ - char tzh_ttisgmtcnt[4]; /* coded number of trans. time flags */ - char tzh_ttisstdcnt[4]; /* coded number of trans. time flags */ - char tzh_leapcnt[4]; /* coded number of leap seconds */ - char tzh_timecnt[4]; /* coded number of transition times */ - char tzh_typecnt[4]; /* coded number of local time types */ - char tzh_charcnt[4]; /* coded number of abbr. chars */ -}; - -/* -** . . .followed by. . . -** -** tzh_timecnt (char [4])s coded transition times a la time(2) -** tzh_timecnt (unsigned char)s types of local time starting at above -** tzh_typecnt repetitions of -** one (char [4]) coded UTC offset in seconds -** one (unsigned char) used to set tm_isdst -** one (unsigned char) that's an abbreviation list index -** tzh_charcnt (char)s '\0'-terminated zone abbreviations -** tzh_leapcnt repetitions of -** one (char [4]) coded leap second transition times -** one (char [4]) total correction after above -** tzh_ttisstdcnt (char)s indexed by type; if TRUE, transition -** time is standard time, if FALSE, -** transition time is wall clock time -** if absent, transition times are -** assumed to be wall clock time -** tzh_ttisgmtcnt (char)s indexed by type; if TRUE, transition -** time is UTC, if FALSE, -** transition time is local time -** if absent, transition times are -** assumed to be local time -*/ - -/* -** In the current implementation, "tzset()" refuses to deal with files that -** exceed any of the limits below. -*/ - -#ifndef TZ_MAX_TIMES -/* -** The TZ_MAX_TIMES value below is enough to handle a bit more than a -** year's worth of solar time (corrected daily to the nearest second) or -** 138 years of Pacific Presidential Election time -** (where there are three time zone transitions every fourth year). -*/ -#define TZ_MAX_TIMES 370 -#endif /* !defined TZ_MAX_TIMES */ - -#ifndef TZ_MAX_TYPES -#ifndef NOSOLAR -#define TZ_MAX_TYPES 256 /* Limited by what (unsigned char)'s can hold */ -#endif /* !defined NOSOLAR */ -#ifdef NOSOLAR -/* -** Must be at least 14 for Europe/Riga as of Jan 12 1995, -** as noted by Earl Chew . -*/ -#define TZ_MAX_TYPES 20 /* Maximum number of local time types */ -#endif /* !defined NOSOLAR */ -#endif /* !defined TZ_MAX_TYPES */ - -#ifndef TZ_MAX_CHARS -#define TZ_MAX_CHARS 50 /* Maximum number of abbreviation characters */ - /* (limited by what unsigned chars can hold) */ -#endif /* !defined TZ_MAX_CHARS */ - -#ifndef TZ_MAX_LEAPS -#define TZ_MAX_LEAPS 50 /* Maximum number of leap second corrections */ -#endif /* !defined TZ_MAX_LEAPS */ - -#define SECSPERMIN 60 -#define MINSPERHOUR 60 -#define HOURSPERDAY 24 -#define DAYSPERWEEK 7 -#define DAYSPERNYEAR 365 -#define DAYSPERLYEAR 366 -#define SECSPERHOUR (SECSPERMIN * MINSPERHOUR) -#define SECSPERDAY ((long) SECSPERHOUR * HOURSPERDAY) -#define MONSPERYEAR 12 - -#define TM_SUNDAY 0 -#define TM_MONDAY 1 -#define TM_TUESDAY 2 -#define TM_WEDNESDAY 3 -#define TM_THURSDAY 4 -#define TM_FRIDAY 5 -#define TM_SATURDAY 6 - -#define TM_JANUARY 0 -#define TM_FEBRUARY 1 -#define TM_MARCH 2 -#define TM_APRIL 3 -#define TM_MAY 4 -#define TM_JUNE 5 -#define TM_JULY 6 -#define TM_AUGUST 7 -#define TM_SEPTEMBER 8 -#define TM_OCTOBER 9 -#define TM_NOVEMBER 10 -#define TM_DECEMBER 11 - -#define TM_YEAR_BASE 1900 - -#define EPOCH_YEAR 1970 -#define EPOCH_WDAY TM_THURSDAY - -/* -** Accurate only for the past couple of centuries; -** that will probably do. -*/ - -#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0)) - -#ifndef USG - -/* -** Use of the underscored variants may cause problems if you move your code to -** certain System-V-based systems; for maximum portability, use the -** underscore-free variants. The underscored variants are provided for -** backward compatibility only; they may disappear from future versions of -** this file. -*/ - -#define SECS_PER_MIN SECSPERMIN -#define MINS_PER_HOUR MINSPERHOUR -#define HOURS_PER_DAY HOURSPERDAY -#define DAYS_PER_WEEK DAYSPERWEEK -#define DAYS_PER_NYEAR DAYSPERNYEAR -#define DAYS_PER_LYEAR DAYSPERLYEAR -#define SECS_PER_HOUR SECSPERHOUR -#define SECS_PER_DAY SECSPERDAY -#define MONS_PER_YEAR MONSPERYEAR - -#endif /* !defined USG */ - -#endif /* !defined TZFILE_H */ diff --git a/platform/win32/msvc/external/exiv2/src/utils.cpp b/platform/win32/msvc/external/exiv2/src/utils.cpp deleted file mode 100644 index d316dc54739..00000000000 --- a/platform/win32/msvc/external/exiv2/src/utils.cpp +++ /dev/null @@ -1,166 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: utils.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - History: 08-Dec-03, ahu: created - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: utils.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#include "utils.hpp" - -// + standard includes -#include -#include -#ifdef _MSC_VER -# include "getopt_win32.h" -# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) -#endif -#ifdef EXV_HAVE_UNISTD_H -# include // for getopt(), stat() -#endif - -#include -#include -#include -#include -#include -#include -#include - -namespace Util { - -// ***************************************************************************** -// class Getopt - Getopt::Getopt() - : errcnt_(0) - { - } - - Getopt::~Getopt() - { - } - - int Getopt::getopt(int argc, char* const argv[], const std::string& optstring) - { - progname_ = Util::basename(argv[0]); - - for (;;) { - int c = ::getopt(argc, argv, optstring.c_str()); - if (c == -1) break; - errcnt_ += option(c, ::optarg == 0 ? "" : ::optarg, ::optopt); - } - for (int i = ::optind; i < argc; i++) { - errcnt_ += nonoption(argv[i]); - } - return errcnt_; - } - - int Getopt::nonoption(const std::string& /*argv*/) - { - return 0; - } - -// ***************************************************************************** -// free functions - - std::string dirname(const std::string& path) - { - if (path == "") return "."; - // Strip trailing slashes or backslashes - std::string p = path; - while ( p.length() > 1 - && (p[p.length()-1] == '\\' || p[p.length()-1] == '/')) { - p = p.substr(0, p.length()-1); - } - if (p == "\\" || p == "/") return p; - if (p.length() == 2 && p[1] == ':') return p; // For Windows paths - std::string::size_type idx = p.find_last_of("\\/"); - if (idx == std::string::npos) return "."; - if (idx == 1 && p[0] == '\\' && p[1] == '\\') return p; // For Windows paths - p = p.substr(0, idx == 0 ? 1 : idx); - while ( p.length() > 1 - && (p[p.length()-1] == '\\' || p[p.length()-1] == '/')) { - p = p.substr(0, p.length()-1); - } - return p; - } - - std::string basename(const std::string& path, bool delsuffix) - { - if (path == "") return "."; - // Strip trailing slashes or backslashes - std::string p = path; - while ( p.length() > 1 - && (p[p.length()-1] == '\\' || p[p.length()-1] == '/')) { - p = p.substr(0, p.length()-1); - } - if (p.length() == 2 && p[1] == ':') return ""; // For Windows paths - std::string::size_type idx = p.find_last_of("\\/"); - if (idx == 1 && p[0] == '\\' && p[1] == '\\') return ""; // For Windows paths - if (idx != std::string::npos) p = p.substr(idx+1); - if (delsuffix) p = p.substr(0, p.length() - suffix(p).length()); - return p; - } - - std::string suffix(const std::string& path) - { - std::string b = basename(path); - std::string::size_type idx = b.rfind('.'); - if (idx == std::string::npos || idx == 0 || idx == b.length()-1) { - return ""; - } - return b.substr(idx); - } - - bool strtol(const char* nptr, long& n) - { - if (!nptr || *nptr == '\0') return false; - char* endptr = 0; - long tmp = std::strtol(nptr, &endptr, 10); - if (*endptr != '\0') return false; - if (tmp == LONG_MAX || tmp == LONG_MIN) return false; - n = tmp; - return true; - } - - void replace(std::string& text, const std::string& searchText, const std::string& replaceText) - { - std::string::size_type index = 0; - while ((index = text.find(searchText, index)) != std::string::npos) - { - text.replace(index, searchText.length(), replaceText.c_str(), replaceText.length()); - index++; - } - } - -} // namespace Util diff --git a/platform/win32/msvc/external/exiv2/src/utils.hpp b/platform/win32/msvc/external/exiv2/src/utils.hpp deleted file mode 100644 index 939c015bd6e..00000000000 --- a/platform/win32/msvc/external/exiv2/src/utils.hpp +++ /dev/null @@ -1,171 +0,0 @@ -// ********************************************************* -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file utils.hpp - @brief A collection of utility functions - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 12-Dec-03, ahu: created - */ -#ifndef UTILS_HPP_ -#define UTILS_HPP_ - -// ********************************************************************* -// included header files -// + standard includes -#include - -// ********************************************************************* -// namespace extensions -/*! - @brief Contains utility classes and functions. Most of these are - wrappers for common C functions that do not require pointers - and memory considerations. -*/ -namespace Util { - -// ********************************************************************* -// class definitions - -/*! - @brief Parse the command line options of a program. - - A wrapper around the POSIX %getopt(3) function. Parses the command line - options and passes each option to virtual option(). A derived class - implements this method to handle options as needed. Similarly, - remaining non-option parameters are passed to the virtual nonoption() - method. - */ -class Getopt { -public: - //! Default constructor. - Getopt(); - - //! Destructor. - virtual ~Getopt(); - - /*! - @brief Parse command line arguments. - - Parses the command line arguments. Calls option() with the - character value of the option and its argument (if any) for each - recognized option and with ':' or '?' for unrecognized options. - See the manual pages for %getopt(3) for details. In addition, - nonoption() is invoked for each remaining non-option parameter on - the command line. - - @param argc Argument count as passed to main() on program invocation. - @param argv Argument array as passed to main() on program invocation. - @param optstring String containing the legitimate option characters. - - @return Number of errors (the sum of the return values from option() - and nonoption()). - */ - int getopt(int argc, char* const argv[], const std::string& optstring); - - /*! - @brief Callback used by getopt() to pass on each option and its - argument (if any). - - Implement this method in a derived class to handle the options as - needed. See the manual pages for %getopt(3) for further details, in - particular, the semantics of optarg and optopt. - - @param opt Value of the option character as returned by %getopt(3). - @param optarg The corresponding option argument. - @param optopt The actual option character in case of an unrecognized - option or a missing option argument (opt is '?' or ':'). - - @return 0 if successful, 1 in case of an error. - */ - virtual int option(int opt, const std::string& optarg, int optopt) = 0; - - /*! - @brief Callback used by getopt() to pass on each non-option parameter - found on the command line. - - Implement this method in a derived class to handle the non-option - parameters as needed. The default implementation ignores all non-option - parameters. - - @param argv The non-option parameter from the command line. - - @return 0 if successful, 1 in case of an error. - */ - virtual int nonoption(const std::string& argv); - - //! Program name (argv[0]) - const std::string& progname() const { return progname_; } - - //! Total number of errors returned by calls to option() - int errcnt() const { return errcnt_; } - -private: - std::string progname_; - int errcnt_; -}; - -// ********************************************************************* -// free functions - - /*! - @brief Get the directory component from the \em path string. - See %dirname(3). - - This function can handle Windows paths to some extent: c:\\bar should - be fine, \\\\bigsrv\\foo also, but \\\\bigsrv alone doesn't work. - */ - std::string dirname(const std::string& path); - - /*! - @brief Get the filename component from the \em path string. - See %basename(3). If the \em delsuffix parameter is true, - the suffix will be removed. - - This function can handle Windows paths to some extent: c:\\bar should - be fine, \\\\bigsrv\\foo also, but \\\\bigsrv alone doesn't work. - */ - std::string basename(const std::string& path, bool delsuffix =false); - - /*! - @brief Get the suffix from the path string. Normally, the suffix - is the substring of the basename of path from the last '.' - to the end of the string. - */ - std::string suffix(const std::string& path); - - /*! - @brief Convert a C string to a long value, which is returned in n. - Returns true if the conversion is successful, else false. - n is not modified if the conversion is unsuccessful. See strtol(2). - */ - bool strtol(const char* nptr, long& n); - - /*! - @brief Replaces all occurences of \em searchText in the \em text string - by \em replaceText. - */ - void replace(std::string& text, const std::string& searchText, const std::string& replaceText); - -} // namespace Util - -#endif // #ifndef UTILS_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/utiltest.cpp b/platform/win32/msvc/external/exiv2/src/utiltest.cpp deleted file mode 100644 index 5fb6a6a4a90..00000000000 --- a/platform/win32/msvc/external/exiv2/src/utiltest.cpp +++ /dev/null @@ -1,93 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - AUTHOR(S): Andreas Huggel (ahu) - HISTORY: - 10-Dec-03, ahu: created - - RCS information - $Name: $ - $Revision: 2286 $ - */ - -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: utiltest.cpp 2286 2010-06-27 10:04:39Z ahuggel $"); - -// ***************************************************************************** -// included header files -#include "utils.hpp" - -#include -#include - -void testStrtol(); -void testStrError(); -void testPaths(); -void testPath(const std::string& path); - -// ***************************************************************************** -// Main -int main(int argc, char* const argv[]) -{ - testPaths(); - return 0; -} - -void testStrtol() -{ - bool rc; - long n(0); - std::string s; - - s = "22"; rc = Util::strtol(s.c_str(), n); - std::cout << "s = `" << s << "' rc = " << rc << " n = " << n << "\n"; - s = "1"; rc = Util::strtol(s.c_str(), n); - std::cout << "s = `" << s << "' rc = " << rc << " n = " << n << "\n"; - s = "-22222222222222222"; rc = Util::strtol(s.c_str(), n); - std::cout << "s = `" << s << "' rc = " << rc << " n = " << n << "\n"; - s = "0x0"; rc = Util::strtol(0, n); - std::cout << "s = `" << s << "' rc = " << rc << " n = " << n << "\n"; - s = ""; rc = Util::strtol(s.c_str(), n); - std::cout << "s = `" << s << "' rc = " << rc << " n = " << n << "\n"; - s = "abc"; rc = Util::strtol(s.c_str(), n); - std::cout << "s = `" << s << "' rc = " << rc << " n = " << n << "\n"; - s = "1.2"; rc = Util::strtol(s.c_str(), n); - std::cout << "s = `" << s << "' rc = " << rc << " n = " << n << "\n"; - s = "12p"; rc = Util::strtol(s.c_str(), n); - std::cout << "s = `" << s << "' rc = " << rc << " n = " << n << "\n"; -} - -void testPaths() -{ - std::string path; - path = "/usr/lib"; testPath(path); - path = "/usr/"; testPath(path); - path = "usr"; testPath(path); - path = "/"; testPath(path); - path = "."; testPath(path); - path = ".."; testPath(path); - path = "///"; testPath(path); - path = "/usr/.emacs"; testPath(path); - path = "/usr/.emacs/"; testPath(path); - path = "/usr/.emacs//"; testPath(path); - path = "usr/.emacs"; testPath(path); - path = ".emacs"; testPath(path); - path = ".emacs.gz"; testPath(path); - path = "/tmp/image.jpg"; testPath(path); - path = "/tmp/.image.jpg"; testPath(path); - path = "/image.jpg"; testPath(path); - path = "image.jpg"; testPath(path); - path = "image.jpg//"; testPath(path); - path = "/////image.jpg"; testPath(path); - path = "/foo.bar/image"; testPath(path); - path = "/foo.bar/images.tar.gz"; testPath(path); - path = "d:\\foo.bar\\images.tar.gz"; testPath(path); -} - -void testPath(const std::string& path) -{ - std::cout << std::setw(15) << path << " " - << std::setw(15) << Util::dirname(path) << " " - << std::setw(15) << Util::basename(path) << " " - << std::setw(15) << Util::suffix(path) << "\n"; -} diff --git a/platform/win32/msvc/external/exiv2/src/value.cpp b/platform/win32/msvc/external/exiv2/src/value.cpp deleted file mode 100644 index 5b12f4a9599..00000000000 --- a/platform/win32/msvc/external/exiv2/src/value.cpp +++ /dev/null @@ -1,1216 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: value.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - History: 26-Jan-04, ahu: created - 11-Feb-04, ahu: isolated as a component - 31-Jul-04, brad: added Time, Date and String values - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: value.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#include "value.hpp" -#include "types.hpp" -#include "error.hpp" -#include "convert.hpp" - -// + standard includes -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - Value::Value(TypeId typeId) - : ok_(true), type_(typeId) - { - } - - Value::~Value() - { - } - - Value& Value::operator=(const Value& rhs) - { - if (this == &rhs) return *this; - type_ = rhs.type_; - ok_ = rhs.ok_; - return *this; - } - - Value::AutoPtr Value::create(TypeId typeId) - { - AutoPtr value; - switch (typeId) { - case invalidTypeId: - case signedByte: - case unsignedByte: - value = AutoPtr(new DataValue(typeId)); - break; - case asciiString: - value = AutoPtr(new AsciiValue); - break; - case unsignedShort: - value = AutoPtr(new ValueType); - break; - case unsignedLong: - case tiffIfd: - value = AutoPtr(new ValueType(typeId)); - break; - case unsignedRational: - value = AutoPtr(new ValueType); - break; - case undefined: - value = AutoPtr(new DataValue); - break; - case signedShort: - value = AutoPtr(new ValueType); - break; - case signedLong: - value = AutoPtr(new ValueType); - break; - case signedRational: - value = AutoPtr(new ValueType); - break; - case tiffFloat: - value = AutoPtr(new ValueType); - break; - case tiffDouble: - value = AutoPtr(new ValueType); - break; - case string: - value = AutoPtr(new StringValue); - break; - case date: - value = AutoPtr(new DateValue); - break; - case time: - value = AutoPtr(new TimeValue); - break; - case comment: - value = AutoPtr(new CommentValue); - break; - case xmpText: - value = AutoPtr(new XmpTextValue); - break; - case xmpBag: - case xmpSeq: - case xmpAlt: - value = AutoPtr(new XmpArrayValue(typeId)); - break; - case langAlt: - value = AutoPtr(new LangAltValue); - break; - default: - value = AutoPtr(new DataValue(typeId)); - break; - } - return value; - } // Value::create - - int Value::setDataArea(const byte* /*buf*/, long /*len*/) - { - return -1; - } - - std::string Value::toString() const - { - std::ostringstream os; - write(os); - ok_ = !os.fail(); - return os.str(); - } - - std::string Value::toString(long /*n*/) const - { - return toString(); - } - - long Value::sizeDataArea() const - { - return 0; - } - - DataBuf Value::dataArea() const - { - return DataBuf(0, 0); - } - - DataValue::DataValue(TypeId typeId) : Value(typeId) - { - } - - DataValue::DataValue(const byte* buf, - long len, ByteOrder byteOrder,TypeId typeId) - : Value(typeId) - { - read(buf, len, byteOrder); - } - - DataValue::~DataValue() - { - } - - long DataValue::count() const - { - return size(); - } - - int DataValue::read(const byte* buf, long len, ByteOrder /*byteOrder*/) - { - // byteOrder not needed - value_.assign(buf, buf + len); - return 0; - } - - int DataValue::read(const std::string& buf) - { - std::istringstream is(buf); - int tmp; - ValueType val; - while (!(is.eof())) { - is >> tmp; - if (is.fail()) return 1; - val.push_back(static_cast(tmp)); - } - value_.swap(val); - return 0; - } - - long DataValue::copy(byte* buf, ByteOrder /*byteOrder*/) const - { - // byteOrder not needed - return static_cast( - std::copy(value_.begin(), value_.end(), buf) - buf - ); - } - - long DataValue::size() const - { - return static_cast(value_.size()); - } - - DataValue* DataValue::clone_() const - { - return new DataValue(*this); - } - - std::ostream& DataValue::write(std::ostream& os) const - { - std::vector::size_type end = value_.size(); - for (std::vector::size_type i = 0; i != end; ++i) { - os << static_cast(value_[i]); - if (i < end - 1) os << " "; - } - return os; - } - - std::string DataValue::toString(long n) const - { - std::ostringstream os; - os << static_cast(value_[n]); - ok_ = !os.fail(); - return os.str(); - } - - long DataValue::toLong(long n) const - { - ok_ = true; - return value_[n]; - } - - float DataValue::toFloat(long n) const - { - ok_ = true; - return value_[n]; - } - - Rational DataValue::toRational(long n) const - { - ok_ = true; - return Rational(value_[n], 1); - } - - StringValueBase::StringValueBase(TypeId typeId) - : Value(typeId) - { - } - - StringValueBase::StringValueBase(TypeId typeId, const std::string& buf) - : Value(typeId) - { - read(buf); - } - - StringValueBase::StringValueBase(const StringValueBase& rhs) - : Value(rhs), value_(rhs.value_) - { - } - - StringValueBase::~StringValueBase() - { - } - - StringValueBase& StringValueBase::operator=(const StringValueBase& rhs) - { - if (this == &rhs) return *this; - Value::operator=(rhs); - value_ = rhs.value_; - return *this; - } - - int StringValueBase::read(const std::string& buf) - { - value_ = buf; - return 0; - } - - int StringValueBase::read(const byte* buf, long len, ByteOrder /*byteOrder*/) - { - // byteOrder not needed - if (buf) value_ = std::string(reinterpret_cast(buf), len); - return 0; - } - - long StringValueBase::copy(byte* buf, ByteOrder /*byteOrder*/) const - { - if (value_.size() == 0) return 0; - // byteOrder not needed - assert(buf != 0); - return static_cast( - value_.copy(reinterpret_cast(buf), value_.size()) - ); - } - - long StringValueBase::count() const - { - return size(); - } - - long StringValueBase::size() const - { - return static_cast(value_.size()); - } - - std::ostream& StringValueBase::write(std::ostream& os) const - { - return os << value_; - } - - long StringValueBase::toLong(long n) const - { - ok_ = true; - return value_[n]; - } - - float StringValueBase::toFloat(long n) const - { - ok_ = true; - return value_[n]; - } - - Rational StringValueBase::toRational(long n) const - { - ok_ = true; - return Rational(value_[n], 1); - } - - StringValue::StringValue() - : StringValueBase(string) - { - } - - StringValue::StringValue(const std::string& buf) - : StringValueBase(string, buf) - { - } - - StringValue::~StringValue() - { - } - - StringValue* StringValue::clone_() const - { - return new StringValue(*this); - } - - AsciiValue::AsciiValue() - : StringValueBase(asciiString) - { - } - - AsciiValue::AsciiValue(const std::string& buf) - : StringValueBase(asciiString, buf) - { - } - - AsciiValue::~AsciiValue() - { - } - - int AsciiValue::read(const std::string& buf) - { - value_ = buf; - if (value_.size() > 0 && value_[value_.size()-1] != '\0') value_ += '\0'; - return 0; - } - - AsciiValue* AsciiValue::clone_() const - { - return new AsciiValue(*this); - } - - std::ostream& AsciiValue::write(std::ostream& os) const - { - // Strip all trailing '\0's (if any) - std::string::size_type pos = value_.find_last_not_of('\0'); - return os << value_.substr(0, pos + 1); - } - - CommentValue::CharsetTable::CharsetTable(CharsetId charsetId, - const char* name, - const char* code) - : charsetId_(charsetId), name_(name), code_(code) - { - } - - //! Lookup list of supported IFD type information - const CommentValue::CharsetTable CommentValue::CharsetInfo::charsetTable_[] = { - CharsetTable(ascii, "Ascii", "ASCII\0\0\0"), - CharsetTable(jis, "Jis", "JIS\0\0\0\0\0"), - CharsetTable(unicode, "Unicode", "UNICODE\0"), - CharsetTable(undefined, "Undefined", "\0\0\0\0\0\0\0\0"), - CharsetTable(invalidCharsetId, "InvalidCharsetId", "\0\0\0\0\0\0\0\0"), - CharsetTable(lastCharsetId, "InvalidCharsetId", "\0\0\0\0\0\0\0\0") - }; - - const char* CommentValue::CharsetInfo::name(CharsetId charsetId) - { - return charsetTable_[ charsetId < lastCharsetId ? charsetId : undefined ].name_; - } - - const char* CommentValue::CharsetInfo::code(CharsetId charsetId) - { - return charsetTable_[ charsetId < lastCharsetId ? charsetId : undefined ].code_; - } - - CommentValue::CharsetId CommentValue::CharsetInfo::charsetIdByName( - const std::string& name) - { - int i = 0; - for (; charsetTable_[i].charsetId_ != lastCharsetId - && charsetTable_[i].name_ != name; ++i) {} - return charsetTable_[i].charsetId_ == lastCharsetId ? - invalidCharsetId : charsetTable_[i].charsetId_; - } - - CommentValue::CharsetId CommentValue::CharsetInfo::charsetIdByCode( - const std::string& code) - { - int i = 0; - for (; charsetTable_[i].charsetId_ != lastCharsetId - && std::string(charsetTable_[i].code_, 8) != code; ++i) {} - return charsetTable_[i].charsetId_ == lastCharsetId ? - invalidCharsetId : charsetTable_[i].charsetId_; - } - - CommentValue::CommentValue() - : StringValueBase(Exiv2::undefined), byteOrder_(littleEndian) - { - } - - CommentValue::CommentValue(const std::string& comment) - : StringValueBase(Exiv2::undefined), byteOrder_(littleEndian) - { - read(comment); - } - - CommentValue::~CommentValue() - { - } - - int CommentValue::read(const std::string& comment) - { - std::string c = comment; - CharsetId charsetId = undefined; - if (comment.length() > 8 && comment.substr(0, 8) == "charset=") { - std::string::size_type pos = comment.find_first_of(' '); - std::string name = comment.substr(8, pos-8); - // Strip quotes (so you can also specify the charset without quotes) - if (name[0] == '"') name = name.substr(1); - if (name[name.length()-1] == '"') name = name.substr(0, name.length()-1); - charsetId = CharsetInfo::charsetIdByName(name); - if (charsetId == invalidCharsetId) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << Error(28, name) << "\n"; -#endif - return 1; - } - c.clear(); - if (pos != std::string::npos) c = comment.substr(pos+1); - } - if (charsetId == unicode) { - const char* to = byteOrder_ == littleEndian ? "UCS-2LE" : "UCS-2BE"; - convertStringCharset(c, "UTF-8", to); - } - const std::string code(CharsetInfo::code(charsetId), 8); - return StringValueBase::read(code + c); - } - - int CommentValue::read(const byte* buf, long len, ByteOrder byteOrder) - { - byteOrder_ = byteOrder; - return StringValueBase::read(buf, len, byteOrder); - } - - long CommentValue::copy(byte* buf, ByteOrder byteOrder) const - { - std::string c = value_; - if (charsetId() == unicode) { - c = value_.substr(8); - std::string::size_type sz = c.size(); - if (byteOrder_ == littleEndian && byteOrder == bigEndian) { - convertStringCharset(c, "UCS-2LE", "UCS-2BE"); - assert(c.size() == sz); - } - else if (byteOrder_ == bigEndian && byteOrder == littleEndian) { - convertStringCharset(c, "UCS-2BE", "UCS-2LE"); - assert(c.size() == sz); - } - c = value_.substr(0, 8) + c; - } - if (c.size() == 0) return 0; - assert(buf != 0); - return static_cast(c.copy(reinterpret_cast(buf), c.size())); - } - - std::ostream& CommentValue::write(std::ostream& os) const - { - CharsetId csId = charsetId(); - if (csId != undefined) { - os << "charset=\"" << CharsetInfo::name(csId) << "\" "; - } - return os << comment(); - } - - std::string CommentValue::comment(const char* encoding) const - { - std::string c; - if (value_.length() < 8) { - return c; - } - c = value_.substr(8); - if (charsetId() == unicode) { - const char* from = encoding == 0 || *encoding == '\0' ? detectCharset(c) : encoding; - convertStringCharset(c, from, "UTF-8"); - } - return c; - } - - CommentValue::CharsetId CommentValue::charsetId() const - { - CharsetId charsetId = undefined; - if (value_.length() >= 8) { - const std::string code = value_.substr(0, 8); - charsetId = CharsetInfo::charsetIdByCode(code); - } - return charsetId; - } - - const char* CommentValue::detectCharset(std::string& c) const - { - // Interpret a BOM if there is one - if (0 == strncmp(c.data(), "\xef\xbb\xbf", 3)) { - c = c.substr(3); - return "UTF-8"; - } - if (0 == strncmp(c.data(), "\xff\xfe", 2)) { - c = c.substr(2); - return "UCS-2LE"; - } - if (0 == strncmp(c.data(), "\xfe\xff", 2)) { - c = c.substr(2); - return "UCS-2BE"; - } - - // Todo: Add logic to guess if the comment is encoded in UTF-8 - - return byteOrder_ == littleEndian ? "UCS-2LE" : "UCS-2BE"; - } - - CommentValue* CommentValue::clone_() const - { - return new CommentValue(*this); - } - - XmpValue::XmpValue(TypeId typeId) - : Value(typeId), - xmpArrayType_(xaNone), - xmpStruct_(xsNone) - { - } - - XmpValue& XmpValue::operator=(const XmpValue& rhs) - { - if (this == &rhs) return *this; - xmpArrayType_ = rhs.xmpArrayType_; - xmpStruct_ = rhs.xmpStruct_; - return *this; - } - - void XmpValue::setXmpArrayType(XmpArrayType xmpArrayType) - { - xmpArrayType_ = xmpArrayType; - } - - void XmpValue::setXmpStruct(XmpStruct xmpStruct) - { - xmpStruct_ = xmpStruct; - } - - XmpValue::XmpArrayType XmpValue::xmpArrayType() const - { - return xmpArrayType_; - } - - XmpValue::XmpArrayType XmpValue::xmpArrayType(TypeId typeId) - { - XmpArrayType xa = xaNone; - switch (typeId) { - case xmpAlt: xa = xaAlt; break; - case xmpBag: xa = xaBag; break; - case xmpSeq: xa = xaSeq; break; - default: break; - } - return xa; - } - - XmpValue::XmpStruct XmpValue::xmpStruct() const - { - return xmpStruct_; - } - - long XmpValue::copy(byte* buf, - ByteOrder /*byteOrder*/) const - { - std::ostringstream os; - write(os); - std::string s = os.str(); - if (s.size() > 0) std::memcpy(buf, &s[0], s.size()); - return static_cast(s.size()); - } - - int XmpValue::read(const byte* buf, - long len, - ByteOrder /*byteOrder*/) - { - std::string s(reinterpret_cast(buf), len); - return read(s); - } - - long XmpValue::size() const - { - std::ostringstream os; - write(os); - return static_cast(os.str().size()); - } - - XmpTextValue::XmpTextValue() - : XmpValue(xmpText) - { - } - - XmpTextValue::XmpTextValue(const std::string& buf) - : XmpValue(xmpText) - { - read(buf); - } - - int XmpTextValue::read(const std::string& buf) - { - // support a type=Alt,Bag,Seq,Struct indicator - std::string b = buf; - std::string type; - if (buf.length() > 5 && buf.substr(0, 5) == "type=") { - std::string::size_type pos = buf.find_first_of(' '); - type = buf.substr(5, pos-5); - // Strip quotes (so you can also specify the type without quotes) - if (type[0] == '"') type = type.substr(1); - if (type[type.length()-1] == '"') type = type.substr(0, type.length()-1); - b.clear(); - if (pos != std::string::npos) b = buf.substr(pos+1); - } - if (!type.empty()) { - if (type == "Alt") { - setXmpArrayType(XmpValue::xaAlt); - } - else if (type == "Bag") { - setXmpArrayType(XmpValue::xaBag); - } - else if (type == "Seq") { - setXmpArrayType(XmpValue::xaSeq); - } - else if (type == "Struct") { - setXmpStruct(); - } - else { - throw Error(48, type); - } - } - value_ = b; - return 0; - } - - XmpTextValue::AutoPtr XmpTextValue::clone() const - { - return AutoPtr(clone_()); - } - - long XmpTextValue::size() const - { - return static_cast(value_.size()); - } - - long XmpTextValue::count() const - { - return size(); - } - - std::ostream& XmpTextValue::write(std::ostream& os) const - { - bool del = false; - if (xmpArrayType() != XmpValue::xaNone) { - switch (xmpArrayType()) { - case XmpValue::xaAlt: os << "type=\"Alt\""; break; - case XmpValue::xaBag: os << "type=\"Bag\""; break; - case XmpValue::xaSeq: os << "type=\"Seq\""; break; - case XmpValue::xaNone: break; // just to suppress the warning - } - del = true; - } - else if (xmpStruct() != XmpValue::xsNone) { - switch (xmpStruct()) { - case XmpValue::xsStruct: os << "type=\"Struct\""; break; - case XmpValue::xsNone: break; // just to suppress the warning - } - del = true; - } - if (del && !value_.empty()) os << " "; - return os << value_; - } - - long XmpTextValue::toLong(long /*n*/) const - { - return parseLong(value_, ok_); - } - - float XmpTextValue::toFloat(long /*n*/) const - { - return parseFloat(value_, ok_); - } - - Rational XmpTextValue::toRational(long /*n*/) const - { - return parseRational(value_, ok_); - } - - XmpTextValue* XmpTextValue::clone_() const - { - return new XmpTextValue(*this); - } - - XmpArrayValue::XmpArrayValue(TypeId typeId) - : XmpValue(typeId) - { - setXmpArrayType(xmpArrayType(typeId)); - } - - int XmpArrayValue::read(const std::string& buf) - { - if (!buf.empty()) value_.push_back(buf); - return 0; - } - - XmpArrayValue::AutoPtr XmpArrayValue::clone() const - { - return AutoPtr(clone_()); - } - - long XmpArrayValue::count() const - { - return static_cast(value_.size()); - } - - std::ostream& XmpArrayValue::write(std::ostream& os) const - { - for (std::vector::const_iterator i = value_.begin(); - i != value_.end(); ++i) { - if (i != value_.begin()) os << ", "; - os << *i; - } - return os; - } - - std::string XmpArrayValue::toString(long n) const - { - ok_ = true; - return value_[n]; - } - - long XmpArrayValue::toLong(long n) const - { - return parseLong(value_[n], ok_); - } - - float XmpArrayValue::toFloat(long n) const - { - return parseFloat(value_[n], ok_); - } - - Rational XmpArrayValue::toRational(long n) const - { - return parseRational(value_[n], ok_); - } - - XmpArrayValue* XmpArrayValue::clone_() const - { - return new XmpArrayValue(*this); - } - - LangAltValue::LangAltValue() - : XmpValue(langAlt) - { - } - - LangAltValue::LangAltValue(const std::string& buf) - : XmpValue(langAlt) - { - read(buf); - } - - int LangAltValue::read(const std::string& buf) - { - std::string b = buf; - std::string lang = "x-default"; - if (buf.length() > 5 && buf.substr(0, 5) == "lang=") { - std::string::size_type pos = buf.find_first_of(' '); - lang = buf.substr(5, pos-5); - // Strip quotes (so you can also specify the language without quotes) - if (lang[0] == '"') lang = lang.substr(1); - if (lang[lang.length()-1] == '"') lang = lang.substr(0, lang.length()-1); - b.clear(); - if (pos != std::string::npos) b = buf.substr(pos+1); - } - value_[lang] = b; - return 0; - } - - LangAltValue::AutoPtr LangAltValue::clone() const - { - return AutoPtr(clone_()); - } - - long LangAltValue::count() const - { - return static_cast(value_.size()); - } - - std::ostream& LangAltValue::write(std::ostream& os) const - { - bool first = true; - // Write the default entry first - ValueType::const_iterator i = value_.find("x-default"); - if (i != value_.end()) { - os << "lang=\"" << i->first << "\" " << i->second; - first = false; - } - for (i = value_.begin(); i != value_.end(); ++i) { - if (i->first == "x-default") continue; - if (!first) os << ", "; - os << "lang=\"" << i->first << "\" " << i->second; - first = false; - } - return os; - } - - std::string LangAltValue::toString(long /*n*/) const - { - return toString("x-default"); - } - - std::string LangAltValue::toString(const std::string& qualifier) const - { - ValueType::const_iterator i = value_.find(qualifier); - if (i != value_.end()) { - ok_ = true; - return i->second; - } - ok_ = false; - return ""; - } - - long LangAltValue::toLong(long /*n*/) const - { - ok_ = false; - return 0; - } - - float LangAltValue::toFloat(long /*n*/) const - { - ok_ = false; - return 0.0f; - } - - Rational LangAltValue::toRational(long /*n*/) const - { - ok_ = false; - return Rational(0, 0); - } - - LangAltValue* LangAltValue::clone_() const - { - return new LangAltValue(*this); - } - - DateValue::DateValue() - : Value(date) - { - } - - DateValue::DateValue(int year, int month, int day) - : Value(date) - { - date_.year = year; - date_.month = month; - date_.day = day; - } - - DateValue::~DateValue() - { - } - - int DateValue::read(const byte* buf, long len, ByteOrder /*byteOrder*/) - { - // Hard coded to read Iptc style dates - if (len != 8) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << Error(29) << "\n"; -#endif - return 1; - } - // Make the buffer a 0 terminated C-string for sscanf - char b[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - std::memcpy(b, reinterpret_cast(buf), 8); - int scanned = sscanf(b, "%4d%2d%2d", - &date_.year, &date_.month, &date_.day); - if (scanned != 3) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << Error(29) << "\n"; -#endif - return 1; - } - return 0; - } - - int DateValue::read(const std::string& buf) - { - // Hard coded to read Iptc style dates - if (buf.length() < 8) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << Error(29) << "\n"; -#endif - return 1; - } - int scanned = sscanf(buf.c_str(), "%4d-%d-%d", - &date_.year, &date_.month, &date_.day); - if (scanned != 3) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << Error(29) << "\n"; -#endif - return 1; - } - return 0; - } - - void DateValue::setDate(const Date& src) - { - date_.year = src.year; - date_.month = src.month; - date_.day = src.day; - } - - long DateValue::copy(byte* buf, ByteOrder /*byteOrder*/) const - { - // sprintf wants to add the null terminator, so use oversized buffer - char temp[9]; - - int wrote = sprintf(temp, "%04d%02d%02d", - date_.year, date_.month, date_.day); - assert(wrote == 8); - std::memcpy(buf, temp, 8); - return 8; - } - - const DateValue::Date& DateValue::getDate() const - { - return date_; - } - - long DateValue::count() const - { - return size(); - } - - long DateValue::size() const - { - return 8; - } - - DateValue* DateValue::clone_() const - { - return new DateValue(*this); - } - - std::ostream& DateValue::write(std::ostream& os) const - { - return os << date_.year << '-' << std::right - << std::setw(2) << std::setfill('0') << date_.month << '-' - << std::setw(2) << std::setfill('0') << date_.day; - } - - long DateValue::toLong(long /*n*/) const - { - // Range of tm struct is limited to about 1970 to 2038 - // This will return -1 if outside that range - std::tm tms; - std::memset(&tms, 0, sizeof(tms)); - tms.tm_mday = date_.day; - tms.tm_mon = date_.month - 1; - tms.tm_year = date_.year - 1900; - long l = static_cast(std::mktime(&tms)); - ok_ = (l != -1); - return l; - } - - float DateValue::toFloat(long n) const - { - return static_cast(toLong(n)); - } - - Rational DateValue::toRational(long n) const - { - return Rational(toLong(n), 1); - } - - TimeValue::TimeValue() - : Value(time) - { - } - - TimeValue::TimeValue(int hour, int minute, - int second, int tzHour, - int tzMinute) - : Value(date) - { - time_.hour = hour; - time_.minute = minute; - time_.second = second; - time_.tzHour = tzHour; - time_.tzMinute = tzMinute; - } - - TimeValue::~TimeValue() - { - } - - int TimeValue::read(const byte* buf, long len, ByteOrder /*byteOrder*/) - { - // Make the buffer a 0 terminated C-string for scanTime[36] - char b[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - std::memcpy(b, reinterpret_cast(buf), (len < 12 ? len : 11)); - // Hard coded to read HHMMSS or Iptc style times - int rc = 1; - if (len == 6) { - // Try to read (non-standard) HHMMSS format - rc = scanTime3(b, "%2d%2d%2d"); - } - if (len == 11) { - rc = scanTime6(b, "%2d%2d%2d%1c%2d%2d"); - } - if (rc) { - rc = 1; -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << Error(30) << "\n"; -#endif - } - return rc; - } - - int TimeValue::read(const std::string& buf) - { - // Hard coded to read H:M:S or Iptc style times - int rc = 1; - if (buf.length() < 9) { - // Try to read (non-standard) H:M:S format - rc = scanTime3(buf.c_str(), "%d:%d:%d"); - } - else { - rc = scanTime6(buf.c_str(), "%d:%d:%d%1c%d:%d"); - } - if (rc) { - rc = 1; -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << Error(30) << "\n"; -#endif - } - return rc; - } - - int TimeValue::scanTime3(const char* buf, const char* format) - { - int rc = 1; - Time t; - int scanned = sscanf(buf, format, &t.hour, &t.minute, &t.second); - if ( scanned == 3 - && t.hour >= 0 && t.hour < 24 - && t.minute >= 0 && t.minute < 60 - && t.second >= 0 && t.second < 60) { - time_ = t; - rc = 0; - } - return rc; - } - - int TimeValue::scanTime6(const char* buf, const char* format) - { - int rc = 1; - Time t; - char plusMinus; - int scanned = sscanf(buf, format, &t.hour, &t.minute, &t.second, - &plusMinus, &t.tzHour, &t.tzMinute); - if ( scanned == 6 - && t.hour >= 0 && t.hour < 24 - && t.minute >= 0 && t.minute < 60 - && t.second >= 0 && t.second < 60 - && t.tzHour >= 0 && t.tzHour < 24 - && t.tzMinute >= 0 && t.tzMinute < 60) { - time_ = t; - if (plusMinus == '-') { - time_.tzHour *= -1; - time_.tzMinute *= -1; - } - rc = 0; - } - return rc; - } - - void TimeValue::setTime( const Time& src ) - { - std::memcpy(&time_, &src, sizeof(time_)); - } - - long TimeValue::copy(byte* buf, ByteOrder /*byteOrder*/) const - { - // sprintf wants to add the null terminator, so use oversized buffer - char temp[12]; - char plusMinus = '+'; - if (time_.tzHour < 0 || time_.tzMinute < 0) plusMinus = '-'; - - int wrote = sprintf(temp, - "%02d%02d%02d%1c%02d%02d", - time_.hour, time_.minute, time_.second, - plusMinus, abs(time_.tzHour), abs(time_.tzMinute)); - - assert(wrote == 11); - std::memcpy(buf, temp, 11); - return 11; - } - - const TimeValue::Time& TimeValue::getTime() const - { - return time_; - } - - long TimeValue::count() const - { - return size(); - } - - long TimeValue::size() const - { - return 11; - } - - TimeValue* TimeValue::clone_() const - { - return new TimeValue(*this); - } - - std::ostream& TimeValue::write(std::ostream& os) const - { - char plusMinus = '+'; - if (time_.tzHour < 0 || time_.tzMinute < 0) plusMinus = '-'; - - return os << std::right - << std::setw(2) << std::setfill('0') << time_.hour << ':' - << std::setw(2) << std::setfill('0') << time_.minute << ':' - << std::setw(2) << std::setfill('0') << time_.second << plusMinus - << std::setw(2) << std::setfill('0') << abs(time_.tzHour) << ':' - << std::setw(2) << std::setfill('0') << abs(time_.tzMinute); - } - - long TimeValue::toLong(long /*n*/) const - { - // Returns number of seconds in the day in UTC. - long result = (time_.hour - time_.tzHour) * 60 * 60; - result += (time_.minute - time_.tzMinute) * 60; - result += time_.second; - if (result < 0) { - result += 86400; - } - ok_ = true; - return result; - } - - float TimeValue::toFloat(long n) const - { - return static_cast(toLong(n)); - } - - Rational TimeValue::toRational(long n) const - { - return Rational(toLong(n), 1); - } - -} // namespace Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/value.hpp b/platform/win32/msvc/external/exiv2/src/value.hpp deleted file mode 100644 index bea3bb1b9f8..00000000000 --- a/platform/win32/msvc/external/exiv2/src/value.hpp +++ /dev/null @@ -1,1735 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file value.hpp - @brief Value interface and concrete subclasses - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 09-Jan-04, ahu: created - 11-Feb-04, ahu: isolated as a component - 31-Jul-04, brad: added Time, Data and String values - */ -#ifndef VALUE_HPP_ -#define VALUE_HPP_ - -// ***************************************************************************** -// included header files -#include "types.hpp" - -// + standard includes -#include -#include -#include -#include -#include -#include -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class definitions - - /*! - @brief Common interface for all types of values used with metadata. - - The interface provides a uniform way to access values independent of - their actual C++ type for simple tasks like reading the values from a - string or data buffer. For other tasks, like modifying values you may - need to downcast it to a specific subclass to access its interface. - */ - class EXIV2API Value { - public: - //! Shortcut for a %Value auto pointer. - typedef std::auto_ptr AutoPtr; - - //! @name Creators - //@{ - //! Constructor, taking a type id to initialize the base class with - explicit Value(TypeId typeId); - //! Virtual destructor. - virtual ~Value(); - //@} - //! @name Manipulators - //@{ - /*! - @brief Read the value from a character buffer. - - @param buf Pointer to the data buffer to read from - @param len Number of bytes in the data buffer - @param byteOrder Applicable byte order (little or big endian). - - @return 0 if successful. - */ - virtual int read(const byte* buf, long len, ByteOrder byteOrder) =0; - /*! - @brief Set the value from a string buffer. The format of the string - corresponds to that of the write() method, i.e., a string - obtained through the write() method can be read by this - function. - - @param buf The string to read from. - - @return 0 if successful. - */ - virtual int read(const std::string& buf) =0; - /*! - @brief Set the data area, if the value has one by copying (cloning) - the buffer pointed to by buf. - - Values may have a data area, which can contain additional - information besides the actual value. This method is used to set such - a data area. - - @param buf Pointer to the source data area - @param len Size of the data area - @return Return -1 if the value has no data area, else 0. - */ - virtual int setDataArea(const byte* buf, long len); - //@} - - //! @name Accessors - //@{ - //! Return the type identifier (Exif data format type). - TypeId typeId() const { return type_; } - /*! - @brief Return an auto-pointer to a copy of itself (deep copy). - The caller owns this copy and the auto-pointer ensures that - it will be deleted. - */ - AutoPtr clone() const { return AutoPtr(clone_()); } - /*! - @brief Write value to a data buffer. - - The user must ensure that the buffer has enough memory. Otherwise - the call results in undefined behaviour. - - @param buf Data buffer to write to. - @param byteOrder Applicable byte order (little or big endian). - @return Number of bytes written. - */ - virtual long copy(byte* buf, ByteOrder byteOrder) const =0; - //! Return the number of components of the value - virtual long count() const =0; - //! Return the size of the value in bytes - virtual long size() const =0; - /*! - @brief Write the value to an output stream. You do not usually have - to use this function; it is used for the implementation of - the output operator for %Value, - operator<<(std::ostream &os, const Value &value). - */ - virtual std::ostream& write(std::ostream& os) const =0; - /*! - @brief Return the value as a string. Implemented in terms of - write(std::ostream& os) const of the concrete class. - */ - std::string toString() const; - /*! - @brief Return the n-th component of the value as a string. - The default implementation returns toString(). The behaviour - of this method may be undefined if there is no n-th - component. - */ - virtual std::string toString(long n) const; - /*! - @brief Convert the n-th component of the value to a long. - The behaviour of this method may be undefined if there is no - n-th component. - - @return The converted value. - */ - virtual long toLong(long n =0) const =0; - /*! - @brief Convert the n-th component of the value to a float. - The behaviour of this method may be undefined if there is no - n-th component. - - @return The converted value. - */ - virtual float toFloat(long n =0) const =0; - /*! - @brief Convert the n-th component of the value to a Rational. - The behaviour of this method may be undefined if there is no - n-th component. - - @return The converted value. - */ - virtual Rational toRational(long n =0) const =0; - //! Return the size of the data area, 0 if there is none. - virtual long sizeDataArea() const; - /*! - @brief Return a copy of the data area if the value has one. The - caller owns this copy and DataBuf ensures that it will be - deleted. - - Values may have a data area, which can contain additional - information besides the actual value. This method is used to access - such a data area. - - @return A DataBuf containing a copy of the data area or an empty - DataBuf if the value does not have a data area assigned. - */ - virtual DataBuf dataArea() const; - /*! - @brief Check the \em ok status indicator. After a to conversion, - this indicator shows whether the conversion was successful. - */ - bool ok() const { return ok_; } - //@} - - /*! - @brief A (simple) factory to create a Value type. - - The following Value subclasses are created depending on typeId:

- - - - - - - - - - - - - - - - - - - - - - - - - - -
typeId%Value subclass
invalidTypeId%DataValue(invalidTypeId)
unsignedByte%DataValue(unsignedByte)
asciiString%AsciiValue
string%StringValue
unsignedShort%ValueType < uint16_t >
unsignedLong%ValueType < uint32_t >
unsignedRational%ValueType < URational >
invalid6%DataValue(invalid6)
undefined%DataValue
signedShort%ValueType < int16_t >
signedLong%ValueType < int32_t >
signedRational%ValueType < Rational >
tiffFloat%ValueType < float >
tiffDouble%ValueType < double >
tiffIfd%ValueType < uint32_t >
date%DateValue
time%TimeValue
comment%CommentValue
xmpText%XmpTextValue
xmpBag%XmpArrayValue
xmpSeq%XmpArrayValue
xmpAlt%XmpArrayValue
langAlt%LangAltValue
default:%DataValue(typeId)
- - @param typeId Type of the value. - @return Auto-pointer to the newly created Value. The caller owns this - copy and the auto-pointer ensures that it will be deleted. - */ - static AutoPtr create(TypeId typeId); - - protected: - /*! - @brief Assignment operator. Protected so that it can only be used - by subclasses but not directly. - */ - Value& operator=(const Value& rhs); - // DATA - mutable bool ok_; //!< Indicates the status of the previous to conversion - - private: - //! Internal virtual copy constructor. - virtual Value* clone_() const =0; - // DATA - TypeId type_; //!< Type of the data - - }; // class Value - - //! Output operator for Value types - inline std::ostream& operator<<(std::ostream& os, const Value& value) - { - return value.write(os); - } - - //! %Value for an undefined data type. - class EXIV2API DataValue : public Value { - public: - //! Shortcut for a %DataValue auto pointer. - typedef std::auto_ptr AutoPtr; - - //! @name Creators - //@{ - //! Default constructor. - explicit DataValue(TypeId typeId =undefined); - //! Constructor - DataValue(const byte* buf, - long len, ByteOrder byteOrder =invalidByteOrder, - TypeId typeId =undefined); - //! Virtual destructor. - virtual ~DataValue(); - //@} - - //! @name Manipulators - //@{ - /*! - @brief Read the value from a character buffer. - - @note The byte order is required by the interface but not - used by this method, so just use the default. - - @param buf Pointer to the data buffer to read from - @param len Number of bytes in the data buffer - @param byteOrder Byte order. Not needed. - - @return 0 if successful. - */ - virtual int read(const byte* buf, - long len, - ByteOrder byteOrder =invalidByteOrder); - //! Set the data from a string of integer values (e.g., "0 1 2 3") - virtual int read(const std::string& buf); - //@} - - //! @name Accessors - //@{ - AutoPtr clone() const { return AutoPtr(clone_()); } - /*! - @brief Write value to a character data buffer. - - @note The byte order is required by the interface but not used by this - method, so just use the default. - - The user must ensure that the buffer has enough memory. Otherwise - the call results in undefined behaviour. - - @param buf Data buffer to write to. - @param byteOrder Byte order. Not needed. - @return Number of characters written. - */ - virtual long copy(byte* buf, ByteOrder byteOrder =invalidByteOrder) const; - virtual long count() const; - virtual long size() const; - virtual std::ostream& write(std::ostream& os) const; - /*! - @brief Return the n-th component of the value as a string. - The behaviour of this method may be undefined if there is no - n-th component. - */ - virtual std::string toString(long n) const; - virtual long toLong(long n =0) const; - virtual float toFloat(long n =0) const; - virtual Rational toRational(long n =0) const; - //@} - - private: - //! Internal virtual copy constructor. - EXV_DLLLOCAL virtual DataValue* clone_() const; - - public: - //! Type used to store the data. - typedef std::vector ValueType; - // DATA - ValueType value_; //!< Stores the data value - - }; // class DataValue - - /*! - @brief Abstract base class for a string based %Value type. - - Uses a std::string to store the value and implements defaults for - most operations. - */ - class EXIV2API StringValueBase : public Value { - public: - //! Shortcut for a %StringValueBase auto pointer. - typedef std::auto_ptr AutoPtr; - - //! @name Creators - //@{ - //! Constructor for subclasses - explicit StringValueBase(TypeId typeId); - //! Constructor for subclasses - StringValueBase(TypeId typeId, const std::string& buf); - //! Copy constructor - StringValueBase(const StringValueBase& rhs); - //! Virtual destructor. - virtual ~StringValueBase(); - //@} - - //! @name Manipulators - //@{ - //! Read the value from buf. This default implementation uses buf as it is. - virtual int read(const std::string& buf); - /*! - @brief Read the value from a character buffer. - - @note The byte order is required by the interface but not used by this - method, so just use the default. - - @param buf Pointer to the data buffer to read from - @param len Number of bytes in the data buffer - @param byteOrder Byte order. Not needed. - - @return 0 if successful. - */ - virtual int read(const byte* buf, - long len, - ByteOrder byteOrder =invalidByteOrder); - //@} - - //! @name Accessors - //@{ - AutoPtr clone() const { return AutoPtr(clone_()); } - /*! - @brief Write value to a character data buffer. - - The user must ensure that the buffer has enough memory. Otherwise - the call results in undefined behaviour. - - @note The byte order is required by the interface but not used by this - method, so just use the default. - - @param buf Data buffer to write to. - @param byteOrder Byte order. Not used. - @return Number of characters written. - */ - virtual long copy(byte* buf, ByteOrder byteOrder =invalidByteOrder) const; - virtual long count() const; - virtual long size() const; - virtual long toLong(long n =0) const; - virtual float toFloat(long n =0) const; - virtual Rational toRational(long n =0) const; - virtual std::ostream& write(std::ostream& os) const; - //@} - - protected: - //! Assignment operator. - StringValueBase& operator=(const StringValueBase& rhs); - //! Internal virtual copy constructor. - virtual StringValueBase* clone_() const =0; - - public: - // DATA - std::string value_; //!< Stores the string value. - - }; // class StringValueBase - - /*! - @brief %Value for string type. - - This can be a plain Ascii string or a multipe byte encoded string. It is - left to caller to decode and encode the string to and from readable - text if that is required. - */ - class EXIV2API StringValue : public StringValueBase { - public: - //! Shortcut for a %StringValue auto pointer. - typedef std::auto_ptr AutoPtr; - - //! @name Creators - //@{ - //! Default constructor. - StringValue(); - //! Constructor - explicit StringValue(const std::string& buf); - //! Virtual destructor. - virtual ~StringValue(); - //@} - - //! @name Accessors - //@{ - AutoPtr clone() const { return AutoPtr(clone_()); } - //@} - - private: - //! Internal virtual copy constructor. - EXV_DLLLOCAL virtual StringValue* clone_() const; - - }; // class StringValue - - /*! - @brief %Value for an Ascii string type. - - This class is for null terminated single byte Ascii strings. - This class also ensures that the string is null terminated. - */ - class EXIV2API AsciiValue : public StringValueBase { - public: - //! Shortcut for a %AsciiValue auto pointer. - typedef std::auto_ptr AutoPtr; - - //! @name Creators - //@{ - //! Default constructor. - AsciiValue(); - //! Constructor - explicit AsciiValue(const std::string& buf); - //! Virtual destructor. - virtual ~AsciiValue(); - //@} - - //! @name Manipulators - //@{ - using StringValueBase::read; - /*! - @brief Set the value to that of the string buf. Overrides base class - to append a terminating '\\0' character if buf doesn't end - with '\\0'. - */ - virtual int read(const std::string& buf); - //@} - - //! @name Accessors - //@{ - AutoPtr clone() const { return AutoPtr(clone_()); } - /*! - @brief Write the value to an output stream. Any trailing '\\0' - characters of the ASCII value are stripped and not written to - the output stream. - */ - virtual std::ostream& write(std::ostream& os) const; - //@} - - private: - //! Internal virtual copy constructor. - EXV_DLLLOCAL virtual AsciiValue* clone_() const; - - }; // class AsciiValue - - /*! - @brief %Value for an Exif comment. - - This can be a plain Ascii string or a multipe byte encoded string. The - comment is expected to be encoded in the character set indicated (default - undefined), but this is not checked. It is left to caller to decode and - encode the string to and from readable text if that is required. - */ - class EXIV2API CommentValue : public StringValueBase { - public: - //! Character set identifiers for the character sets defined by %Exif - enum CharsetId { ascii, jis, unicode, undefined, - invalidCharsetId, lastCharsetId }; - //! Information pertaining to the defined character sets - struct CharsetTable { - //! Constructor - CharsetTable(CharsetId charsetId, - const char* name, - const char* code); - CharsetId charsetId_; //!< Charset id - const char* name_; //!< Name of the charset - const char* code_; //!< Code of the charset - }; // struct CharsetTable - //! Charset information lookup functions. Implemented as a static class. - class EXIV2API CharsetInfo { - //! Prevent construction: not implemented. - CharsetInfo() {} - //! Prevent copy-construction: not implemented. - CharsetInfo(const CharsetInfo&); - //! Prevent assignment: not implemented. - CharsetInfo& operator=(const CharsetInfo&); - - public: - //! Return the name for a charset id - static const char* name(CharsetId charsetId); - //! Return the code for a charset id - static const char* code(CharsetId charsetId); - //! Return the charset id for a name - static CharsetId charsetIdByName(const std::string& name); - //! Return the charset id for a code - static CharsetId charsetIdByCode(const std::string& code); - - private: - static const CharsetTable charsetTable_[]; - }; // class CharsetInfo - - //! Shortcut for a %CommentValue auto pointer. - typedef std::auto_ptr AutoPtr; - - //! @name Creators - //@{ - //! Default constructor. - CommentValue(); - //! Constructor, uses read(const std::string& comment) - explicit CommentValue(const std::string& comment); - //! Virtual destructor. - virtual ~CommentValue(); - //@} - - //! @name Manipulators - //@{ - /*! - @brief Read the value from a comment - - The format of \em comment is: -
- [charset=["]Ascii|Jis|Unicode|Undefined["] ]comment -
- The default charset is Undefined. - - @return 0 if successful
- 1 if an invalid character set is encountered - */ - int read(const std::string& comment); - /*! - @brief Read the comment from a byte buffer. - */ - int read(const byte* buf, long len, ByteOrder byteOrder); - //@} - - //! @name Accessors - //@{ - AutoPtr clone() const { return AutoPtr(clone_()); } - long copy(byte* buf, ByteOrder byteOrder) const; - /*! - @brief Write the comment in a format which can be read by - read(const std::string& comment). - */ - std::ostream& write(std::ostream& os) const; - /*! - @brief Return the comment (without a charset="..." prefix) - - The comment is decoded to UTF-8. For Exif UNICODE comments, the - function makes an attempt to correctly determine the character - encoding of the value. Alternatively, the optional \em encoding - parameter can be used to specify it. - - @param encoding Optional argument to specify the character encoding - that the comment is encoded in, as an iconv(3) name. Only used - for Exif UNICODE comments. - - @return A string containing the comment converted to UTF-8. - */ - std::string comment(const char* encoding =0) const; - /*! - @brief Determine the character encoding that was used to encode the - UNICODE comment value as an iconv(3) name. - - If the comment \em c starts with a BOM, the BOM is interpreted and - removed from the string. - - Todo: Implement rules to guess if the comment is UTF-8 encoded. - */ - const char* detectCharset(std::string& c) const; - //! Return the Exif charset id of the comment - CharsetId charsetId() const; - //@} - - private: - //! Internal virtual copy constructor. - EXV_DLLLOCAL virtual CommentValue* clone_() const; - - public: - // DATA - ByteOrder byteOrder_; //!< Byte order of the comment string that was read - - }; // class CommentValue - - /*! - @brief Base class for all Exiv2 values used to store XMP property values. - */ - class EXIV2API XmpValue : public Value { - public: - //! Shortcut for a %XmpValue auto pointer. - typedef std::auto_ptr AutoPtr; - - //! XMP array types. - enum XmpArrayType { xaNone, xaAlt, xaBag, xaSeq }; - //! XMP structure indicator. - enum XmpStruct { xsNone, xsStruct }; - - //! @name Creators - //@{ - explicit XmpValue(TypeId typeId); - //@} - - //! @name Accessors - //@{ - //! Return XMP array type, indicates if an XMP value is an array. - XmpArrayType xmpArrayType() const; - //! Return XMP struct, indicates if an XMP value is a structure. - XmpStruct xmpStruct() const; - virtual long size() const; - /*! - @brief Write value to a character data buffer. - - The user must ensure that the buffer has enough memory. Otherwise - the call results in undefined behaviour. - - @note The byte order is required by the interface but not used by this - method, so just use the default. - - @param buf Data buffer to write to. - @param byteOrder Byte order. Not used. - @return Number of characters written. - */ - virtual long copy(byte* buf, ByteOrder byteOrder =invalidByteOrder) const; - //@} - - //! @name Manipulators - //@{ - //! Set the XMP array type to indicate that an XMP value is an array. - void setXmpArrayType(XmpArrayType xmpArrayType); - //! Set the XMP struct type to indicate that an XMP value is a structure. - void setXmpStruct(XmpStruct xmpStruct =xsStruct); - /*! - @brief Read the value from a character buffer. - - Uses read(const std::string& buf) - - @note The byte order is required by the interface but not used by this - method, so just use the default. - - @param buf Pointer to the data buffer to read from - @param len Number of bytes in the data buffer - @param byteOrder Byte order. Not needed. - - @return 0 if successful. - */ - virtual int read(const byte* buf, - long len, - ByteOrder byteOrder =invalidByteOrder); - virtual int read(const std::string& buf) =0; - //@} - - /*! - @brief Return XMP array type for an array Value TypeId, xaNone if - \em typeId is not an XMP array value type. - */ - static XmpArrayType xmpArrayType(TypeId typeId); - - protected: - /*! - @brief Assignment operator. Protected so that it can only be used - by subclasses but not directly. - */ - XmpValue& operator=(const XmpValue& rhs); - - private: - // DATA - XmpArrayType xmpArrayType_; //!< Type of XMP array - XmpStruct xmpStruct_; //!< XMP structure indicator - - }; // class XmpValue - - /*! - @brief %Value type suitable for simple XMP properties and - XMP nodes of complex types which are not parsed into - specific values. - - Uses a std::string to store the value. - */ - class EXIV2API XmpTextValue : public XmpValue { - public: - //! Shortcut for a %XmpTextValue auto pointer. - typedef std::auto_ptr AutoPtr; - - //! @name Creators - //@{ - //! Constructor. - XmpTextValue(); - //! Constructor, reads the value from a string. - explicit XmpTextValue(const std::string& buf); - //@} - - //! @name Manipulators - //@{ - using XmpValue::read; - /*! - @brief Read a simple property value from \em buf to set the value. - - Sets the value to the contents of \em buf. A optional keyword, - \em type is supported to set the XMP value type. This is useful for - complex value types for which Exiv2 does not have direct support. - - The format of \em buf is: -
- [type=["]Alt|Bag|Seq|Struct["] ]text -
- - @return 0 if successful. - */ - - virtual int read(const std::string& buf); - //@} - - //! @name Accessors - //@{ - AutoPtr clone() const; - long size() const; - virtual long count() const; - /*! - @brief Convert the value to a long. - The optional parameter \em n is not used and is ignored. - - @return The converted value. - */ - virtual long toLong(long n =0) const; - /*! - @brief Convert the value to a float. - The optional parameter \em n is not used and is ignored. - - @return The converted value. - */ - virtual float toFloat(long n =0) const; - /*! - @brief Convert the value to a Rational. - The optional parameter \em n is not used and is ignored. - - @return The converted value. - */ - virtual Rational toRational(long n =0) const; - virtual std::ostream& write(std::ostream& os) const; - //@} - - private: - //! Internal virtual copy constructor. - EXV_DLLLOCAL virtual XmpTextValue* clone_() const; - - public: - // DATA - std::string value_; //!< Stores the string values. - - }; // class XmpTextValue - - /*! - @brief %Value type for simple arrays. Each item in the array is a simple - value, without qualifiers. The array may be an ordered (\em seq), - unordered (\em bag) or alternative array (\em alt). The array - items must not contain qualifiers. For language alternatives use - LangAltValue. - - Uses a vector of std::string to store the value(s). - */ - class EXIV2API XmpArrayValue : public XmpValue { - public: - //! Shortcut for a %XmpArrayValue auto pointer. - typedef std::auto_ptr AutoPtr; - - //! @name Creators - //@{ - //! Constructor. \em typeId can be one of xmpBag, xmpSeq or xmpAlt. - explicit XmpArrayValue(TypeId typeId =xmpBag); - //@} - - //! @name Manipulators - //@{ - using XmpValue::read; - /*! - @brief Read a simple property value from \em buf and append it - to the value. - - Appends \em buf to the value after the last existing array element. - Subsequent calls will therefore populate multiple array elements in - the order they are read. - - @return 0 if successful. - */ - virtual int read(const std::string& buf); - //@} - - //! @name Accessors - //@{ - AutoPtr clone() const; - virtual long count() const; - /*! - @brief Return the n-th component of the value as a string. - The behaviour of this method may be undefined if there is no - n-th component. - */ - virtual std::string toString(long n) const; - virtual long toLong(long n =0) const; - virtual float toFloat(long n =0) const; - virtual Rational toRational(long n =0) const; - /*! - @brief Write all elements of the value to \em os, separated by commas. - - @note The output of this method cannot directly be used as the parameter - for read(). - */ - virtual std::ostream& write(std::ostream& os) const; - //@} - - private: - //! Internal virtual copy constructor. - EXV_DLLLOCAL virtual XmpArrayValue* clone_() const; - - public: - //! Type used to store XMP array elements. - typedef std::vector ValueType; - // DATA - std::vector value_; //!< Stores the string values. - - }; // class XmpArrayValue - - /*! - @brief %Value type for XMP language alternative properties. - - A language alternative is an array consisting of simple text values, - each of which has a language qualifier. - */ - class EXIV2API LangAltValue : public XmpValue { - public: - //! Shortcut for a %LangAltValue auto pointer. - typedef std::auto_ptr AutoPtr; - - //! @name Creators - //@{ - //! Constructor. - LangAltValue(); - //! Constructor, reads the value from a string. - explicit LangAltValue(const std::string& buf); - //@} - - //! @name Manipulators - //@{ - using XmpValue::read; - /*! - @brief Read a simple property value from \em buf and append it - to the value. - - Appends \em buf to the value after the last existing array element. - Subsequent calls will therefore populate multiple array elements in - the order they are read. - - The format of \em buf is: -
- [lang=["]language code["] ]text -
- The XMP default language code x-default is used if - \em buf doesn't start with the keyword lang. - - @return 0 if successful. - */ - virtual int read(const std::string& buf); - //@} - - //! @name Accessors - //@{ - AutoPtr clone() const; - virtual long count() const; - /*! - @brief Return the text value associated with the default language - qualifier \c x-default. The parameter \em n is not used, but - it is suggested that only 0 is passed in. Returns an empty - string and sets the ok-flag to \c false if there is no - default value. - */ - virtual std::string toString(long n) const; - /*! - @brief Return the text value associated with the language qualifier - \em qualifier. Returns an empty string and sets the ok-flag - to \c false if there is no entry for the language qualifier. - */ - std::string toString(const std::string& qualifier) const; - virtual long toLong(long n =0) const; - virtual float toFloat(long n =0) const; - virtual Rational toRational(long n =0) const; - /*! - @brief Write all elements of the value to \em os, separated by commas. - - @note The output of this method cannot directly be used as the parameter - for read(). - */ - virtual std::ostream& write(std::ostream& os) const; - //@} - - private: - //! Internal virtual copy constructor. - EXV_DLLLOCAL virtual LangAltValue* clone_() const; - - public: - //! Type used to store language alternative arrays. - typedef std::map ValueType; - // DATA - /*! - @brief Map to store the language alternative values. The language - qualifier is used as the key for the map entries. - */ - ValueType value_; - - }; // class LangAltValue - - /*! - @brief %Value for simple ISO 8601 dates - - This class is limited to parsing simple date strings in the ISO 8601 - format CCYYMMDD (century, year, month, day). - */ - class EXIV2API DateValue : public Value { - public: - //! Shortcut for a %DateValue auto pointer. - typedef std::auto_ptr AutoPtr; - - //! @name Creators - //@{ - //! Default constructor. - DateValue(); - //! Constructor - DateValue(int year, int month, int day); - //! Virtual destructor. - virtual ~DateValue(); - //@} - - //! Simple Date helper structure - EXIV2API struct Date - { - Date() : year(0), month(0), day(0) {} - int year; //!< Year - int month; //!< Month - int day; //!< Day - }; - - //! @name Manipulators - //@{ - /*! - @brief Read the value from a character buffer. - - @note The byte order is required by the interface but not used by this - method, so just use the default. - - @param buf Pointer to the data buffer to read from - @param len Number of bytes in the data buffer - @param byteOrder Byte order. Not needed. - - @return 0 if successful
- 1 in case of an unsupported date format - */ - virtual int read(const byte* buf, - long len, - ByteOrder byteOrder =invalidByteOrder); - /*! - @brief Set the value to that of the string buf. - - @param buf String containing the date - - @return 0 if successful
- 1 in case of an unsupported date format - */ - virtual int read(const std::string& buf); - //! Set the date - void setDate(const Date& src); - //@} - - //! @name Accessors - //@{ - AutoPtr clone() const { return AutoPtr(clone_()); } - /*! - @brief Write value to a character data buffer. - - The user must ensure that the buffer has enough memory. Otherwise - the call results in undefined behaviour. - - @note The byte order is required by the interface but not used by this - method, so just use the default. - - @param buf Data buffer to write to. - @param byteOrder Byte order. Not used. - @return Number of characters written. - */ - virtual long copy(byte* buf, ByteOrder byteOrder =invalidByteOrder) const; - //! Return date struct containing date information - virtual const Date& getDate() const; - virtual long count() const; - virtual long size() const; - virtual std::ostream& write(std::ostream& os) const; - //! Return the value as a UNIX calender time converted to long. - virtual long toLong(long n =0) const; - //! Return the value as a UNIX calender time converted to float. - virtual float toFloat(long n =0) const; - //! Return the value as a UNIX calender time converted to Rational. - virtual Rational toRational(long n =0) const; - //@} - - private: - //! Internal virtual copy constructor. - EXV_DLLLOCAL virtual DateValue* clone_() const; - - // DATA - Date date_; - - }; // class DateValue - - /*! - @brief %Value for simple ISO 8601 times. - - This class is limited to handling simple time strings in the ISO 8601 - format HHMMSS±HHMM where HHMMSS refers to local hour, minute and - seconds and ±HHMM refers to hours and minutes ahead or behind - Universal Coordinated Time. - */ - class EXIV2API TimeValue : public Value { - public: - //! Shortcut for a %TimeValue auto pointer. - typedef std::auto_ptr AutoPtr; - - //! @name Creators - //@{ - //! Default constructor. - TimeValue(); - //! Constructor - TimeValue(int hour, int minute, int second =0, - int tzHour =0, int tzMinute =0); - - //! Virtual destructor. - virtual ~TimeValue(); - //@} - - //! Simple Time helper structure - struct Time - { - Time() : hour(0), minute(0), second(0), tzHour(0), tzMinute(0) {} - - int hour; //!< Hour - int minute; //!< Minute - int second; //!< Second - int tzHour; //!< Hours ahead or behind UTC - int tzMinute; //!< Minutes ahead or behind UTC - }; - - //! @name Manipulators - //@{ - /*! - @brief Read the value from a character buffer. - - @note The byte order is required by the interface but not used by this - method, so just use the default. - - @param buf Pointer to the data buffer to read from - @param len Number of bytes in the data buffer - @param byteOrder Byte order. Not needed. - - @return 0 if successful
- 1 in case of an unsupported time format - */ - virtual int read(const byte* buf, - long len, - ByteOrder byteOrder =invalidByteOrder); - /*! - @brief Set the value to that of the string buf. - - @param buf String containing the time. - - @return 0 if successful
- 1 in case of an unsupported time format - */ - virtual int read(const std::string& buf); - //! Set the time - void setTime(const Time& src); - //@} - - //! @name Accessors - //@{ - AutoPtr clone() const { return AutoPtr(clone_()); } - /*! - @brief Write value to a character data buffer. - - The user must ensure that the buffer has enough memory. Otherwise - the call results in undefined behaviour. - - @note The byte order is required by the interface but not used by this - method, so just use the default. - - @param buf Data buffer to write to. - @param byteOrder Byte order. Not used. - @return Number of characters written. - */ - virtual long copy(byte* buf, ByteOrder byteOrder =invalidByteOrder) const; - //! Return time struct containing time information - virtual const Time& getTime() const; - virtual long count() const; - virtual long size() const; - virtual std::ostream& write(std::ostream& os) const; - //! Returns number of seconds in the day in UTC. - virtual long toLong(long n =0) const; - //! Returns number of seconds in the day in UTC converted to float. - virtual float toFloat(long n =0) const; - //! Returns number of seconds in the day in UTC converted to Rational. - virtual Rational toRational(long n =0) const; - //@} - - private: - //! @name Manipulators - //@{ - /*! - @brief Set time from \em buf if it conforms to \em format - (3 input items). - - This function only sets the hour, minute and second parts of time_. - - @param buf A 0 terminated C-string containing the time to parse. - @param format Format string for sscanf(). - @return 0 if successful, else 1. - */ - EXV_DLLLOCAL int scanTime3(const char* buf, const char* format); - /*! - @brief Set time from \em buf if it conforms to \em format - (6 input items). - - This function sets all parts of time_. - - @param buf A 0 terminated C-string containing the time to parse. - @param format Format string for sscanf(). - @return 0 if successful, else 1. - */ - EXV_DLLLOCAL int scanTime6(const char* buf, const char* format); - //@} - - //! @name Accessors - //@{ - //! Internal virtual copy constructor. - EXV_DLLLOCAL virtual TimeValue* clone_() const; - //@} - - // DATA - Time time_; - - }; // class TimeValue - - //! Template to determine the TypeId for a type T - template TypeId getType(); - - //! Specialization for an unsigned short - template<> inline TypeId getType() { return unsignedShort; } - //! Specialization for an unsigned long - template<> inline TypeId getType() { return unsignedLong; } - //! Specialization for an unsigned rational - template<> inline TypeId getType() { return unsignedRational; } - //! Specialization for a signed short - template<> inline TypeId getType() { return signedShort; } - //! Specialization for a signed long - template<> inline TypeId getType() { return signedLong; } - //! Specialization for a signed rational - template<> inline TypeId getType() { return signedRational; } - //! Specialization for a float - template<> inline TypeId getType() { return tiffFloat; } - //! Specialization for a double - template<> inline TypeId getType() { return tiffDouble; } - - // No default implementation: let the compiler/linker complain - // template inline TypeId getType() { return invalid; } - - /*! - @brief Template for a %Value of a basic type. This is used for unsigned - and signed short, long and rationals. - */ - template - class ValueType : public Value { - public: - //! Shortcut for a %ValueType\ auto pointer. - typedef std::auto_ptr > AutoPtr; - - //! @name Creators - //@{ - //! Default Constructor. - ValueType(); - //! Constructor. - // The default c'tor and this one can be combined, but that causes MSVC 7.1 to fall on its nose - explicit ValueType(TypeId typeId); - //! Constructor. - ValueType(const byte* buf, long len, ByteOrder byteOrder, TypeId typeId =getType()); - //! Constructor. - explicit ValueType(const T& val, TypeId typeId =getType()); - //! Copy constructor - ValueType(const ValueType& rhs); - //! Virtual destructor. - virtual ~ValueType(); - //@} - - //! @name Manipulators - //@{ - //! Assignment operator. - ValueType& operator=(const ValueType& rhs); - virtual int read(const byte* buf, long len, ByteOrder byteOrder); - /*! - @brief Set the data from a string of values of type T (e.g., - "0 1 2 3" or "1/2 1/3 1/4" depending on what T is). - Generally, the accepted input format is the same as that - produced by the write() method. - */ - virtual int read(const std::string& buf); - /*! - @brief Set the data area. This method copies (clones) the buffer - pointed to by buf. - */ - virtual int setDataArea(const byte* buf, long len); - //@} - - //! @name Accessors - //@{ - AutoPtr clone() const { return AutoPtr(clone_()); } - virtual long copy(byte* buf, ByteOrder byteOrder) const; - virtual long count() const; - virtual long size() const; - virtual std::ostream& write(std::ostream& os) const; - /*! - @brief Return the n-th component of the value as a string. - The behaviour of this method may be undefined if there is no - n-th - component. - */ - virtual std::string toString(long n) const; - virtual long toLong(long n =0) const; - virtual float toFloat(long n =0) const; - virtual Rational toRational(long n =0) const; - //! Return the size of the data area. - virtual long sizeDataArea() const; - /*! - @brief Return a copy of the data area in a DataBuf. The caller owns - this copy and DataBuf ensures that it will be deleted. - */ - virtual DataBuf dataArea() const; - //@} - - //! Container for values - typedef std::vector ValueList; - //! Iterator type defined for convenience. - typedef typename std::vector::iterator iterator; - //! Const iterator type defined for convenience. - typedef typename std::vector::const_iterator const_iterator; - - // DATA - /*! - @brief The container for all values. In your application, if you know - what subclass of Value you're dealing with (and possibly the T) - then you can access this STL container through the usual - standard library functions. - */ - ValueList value_; - - private: - //! Internal virtual copy constructor. - virtual ValueType* clone_() const; - - // DATA - //! Pointer to the buffer, 0 if none has been allocated - byte* pDataArea_; - //! The current size of the buffer - long sizeDataArea_; - }; // class ValueType - - //! Unsigned short value type - typedef ValueType UShortValue; - //! Unsigned long value type - typedef ValueType ULongValue; - //! Unsigned rational value type - typedef ValueType URationalValue; - //! Signed short value type - typedef ValueType ShortValue; - //! Signed long value type - typedef ValueType LongValue; - //! Signed rational value type - typedef ValueType RationalValue; - //! Float value type - typedef ValueType FloatValue; - //! Double value type - typedef ValueType DoubleValue; - -// ***************************************************************************** -// free functions, template and inline definitions - - /*! - @brief Read a value of type T from the data buffer. - - We need this template function for the ValueType template classes. - There are only specializations of this function available; no default - implementation is provided. - - @param buf Pointer to the data buffer to read from. - @param byteOrder Applicable byte order (little or big endian). - @return A value of type T. - */ - template T getValue(const byte* buf, ByteOrder byteOrder); - // Specialization for a 2 byte unsigned short value. - template<> - inline uint16_t getValue(const byte* buf, ByteOrder byteOrder) - { - return getUShort(buf, byteOrder); - } - // Specialization for a 4 byte unsigned long value. - template<> - inline uint32_t getValue(const byte* buf, ByteOrder byteOrder) - { - return getULong(buf, byteOrder); - } - // Specialization for an 8 byte unsigned rational value. - template<> - inline URational getValue(const byte* buf, ByteOrder byteOrder) - { - return getURational(buf, byteOrder); - } - // Specialization for a 2 byte signed short value. - template<> - inline int16_t getValue(const byte* buf, ByteOrder byteOrder) - { - return getShort(buf, byteOrder); - } - // Specialization for a 4 byte signed long value. - template<> - inline int32_t getValue(const byte* buf, ByteOrder byteOrder) - { - return getLong(buf, byteOrder); - } - // Specialization for an 8 byte signed rational value. - template<> - inline Rational getValue(const byte* buf, ByteOrder byteOrder) - { - return getRational(buf, byteOrder); - } - // Specialization for a 4 byte float value. - template<> - inline float getValue(const byte* buf, ByteOrder byteOrder) - { - return getFloat(buf, byteOrder); - } - // Specialization for a 8 byte double value. - template<> - inline double getValue(const byte* buf, ByteOrder byteOrder) - { - return getDouble(buf, byteOrder); - } - - /*! - @brief Convert a value of type T to data, write the data to the data buffer. - - We need this template function for the ValueType template classes. - There are only specializations of this function available; no default - implementation is provided. - - @param buf Pointer to the data buffer to write to. - @param t Value to be converted. - @param byteOrder Applicable byte order (little or big endian). - @return The number of bytes written to the buffer. - */ - template long toData(byte* buf, T t, ByteOrder byteOrder); - /*! - @brief Specialization to write an unsigned short to the data buffer. - Return the number of bytes written. - */ - template<> - inline long toData(byte* buf, uint16_t t, ByteOrder byteOrder) - { - return us2Data(buf, t, byteOrder); - } - /*! - @brief Specialization to write an unsigned long to the data buffer. - Return the number of bytes written. - */ - template<> - inline long toData(byte* buf, uint32_t t, ByteOrder byteOrder) - { - return ul2Data(buf, t, byteOrder); - } - /*! - @brief Specialization to write an unsigned rational to the data buffer. - Return the number of bytes written. - */ - template<> - inline long toData(byte* buf, URational t, ByteOrder byteOrder) - { - return ur2Data(buf, t, byteOrder); - } - /*! - @brief Specialization to write a signed short to the data buffer. - Return the number of bytes written. - */ - template<> - inline long toData(byte* buf, int16_t t, ByteOrder byteOrder) - { - return s2Data(buf, t, byteOrder); - } - /*! - @brief Specialization to write a signed long to the data buffer. - Return the number of bytes written. - */ - template<> - inline long toData(byte* buf, int32_t t, ByteOrder byteOrder) - { - return l2Data(buf, t, byteOrder); - } - /*! - @brief Specialization to write a signed rational to the data buffer. - Return the number of bytes written. - */ - template<> - inline long toData(byte* buf, Rational t, ByteOrder byteOrder) - { - return r2Data(buf, t, byteOrder); - } - /*! - @brief Specialization to write a float to the data buffer. - Return the number of bytes written. - */ - template<> - inline long toData(byte* buf, float t, ByteOrder byteOrder) - { - return f2Data(buf, t, byteOrder); - } - /*! - @brief Specialization to write a double to the data buffer. - Return the number of bytes written. - */ - template<> - inline long toData(byte* buf, double t, ByteOrder byteOrder) - { - return d2Data(buf, t, byteOrder); - } - - template - ValueType::ValueType() - : Value(getType()), pDataArea_(0), sizeDataArea_(0) - { - } - - template - ValueType::ValueType(TypeId typeId) - : Value(typeId), pDataArea_(0), sizeDataArea_(0) - { - } - - template - ValueType::ValueType(const byte* buf, long len, ByteOrder byteOrder, TypeId typeId) - : Value(typeId), pDataArea_(0), sizeDataArea_(0) - { - read(buf, len, byteOrder); - } - - template - ValueType::ValueType(const T& val, TypeId typeId) - : Value(typeId), pDataArea_(0), sizeDataArea_(0) - { - value_.push_back(val); - } - - template - ValueType::ValueType(const ValueType& rhs) - : Value(rhs), value_(rhs.value_), pDataArea_(0), sizeDataArea_(0) - { - if (rhs.sizeDataArea_ > 0) { - pDataArea_ = new byte[rhs.sizeDataArea_]; - std::memcpy(pDataArea_, rhs.pDataArea_, rhs.sizeDataArea_); - sizeDataArea_ = rhs.sizeDataArea_; - } - } - - template - ValueType::~ValueType() - { - delete[] pDataArea_; - } - - template - ValueType& ValueType::operator=(const ValueType& rhs) - { - if (this == &rhs) return *this; - Value::operator=(rhs); - value_ = rhs.value_; - - byte* tmp = 0; - if (rhs.sizeDataArea_ > 0) { - tmp = new byte[rhs.sizeDataArea_]; - std::memcpy(tmp, rhs.pDataArea_, rhs.sizeDataArea_); - } - delete[] pDataArea_; - pDataArea_ = tmp; - sizeDataArea_ = rhs.sizeDataArea_; - - return *this; - } - - template - int ValueType::read(const byte* buf, long len, ByteOrder byteOrder) - { - value_.clear(); - long ts = TypeInfo::typeSize(typeId()); - if (len % ts != 0) len = (len / ts) * ts; - for (long i = 0; i < len; i += ts) { - value_.push_back(getValue(buf + i, byteOrder)); - } - return 0; - } - - template - int ValueType::read(const std::string& buf) - { - std::istringstream is(buf); - T tmp; - ValueList val; - while (!(is.eof())) { - is >> tmp; - if (is.fail()) return 1; - val.push_back(tmp); - } - value_.swap(val); - return 0; - } - - template - long ValueType::copy(byte* buf, ByteOrder byteOrder) const - { - long offset = 0; - typename ValueList::const_iterator end = value_.end(); - for (typename ValueList::const_iterator i = value_.begin(); i != end; ++i) { - offset += toData(buf + offset, *i, byteOrder); - } - return offset; - } - - template - long ValueType::count() const - { - return static_cast(value_.size()); - } - - template - long ValueType::size() const - { - return static_cast(TypeInfo::typeSize(typeId()) * value_.size()); - } - - template - ValueType* ValueType::clone_() const - { - return new ValueType(*this); - } - - template - std::ostream& ValueType::write(std::ostream& os) const - { - typename ValueList::const_iterator end = value_.end(); - typename ValueList::const_iterator i = value_.begin(); - while (i != end) { - os << std::setprecision(15) << *i; - if (++i != end) os << " "; - } - return os; - } - - template - std::string ValueType::toString(long n) const - { - ok_ = true; - return Exiv2::toString(value_[n]); - } - - // Default implementation - template - long ValueType::toLong(long n) const - { - ok_ = true; - return static_cast(value_[n]); - } - // Specialization for rational - template<> - inline long ValueType::toLong(long n) const - { - ok_ = (value_[n].second != 0); - if (!ok_) return 0; - return value_[n].first / value_[n].second; - } - // Specialization for unsigned rational - template<> - inline long ValueType::toLong(long n) const - { - ok_ = (value_[n].second != 0); - if (!ok_) return 0; - return value_[n].first / value_[n].second; - } - // Default implementation - template - float ValueType::toFloat(long n) const - { - ok_ = true; - return static_cast(value_[n]); - } - // Specialization for rational - template<> - inline float ValueType::toFloat(long n) const - { - ok_ = (value_[n].second != 0); - if (!ok_) return 0.0f; - return static_cast(value_[n].first) / value_[n].second; - } - // Specialization for unsigned rational - template<> - inline float ValueType::toFloat(long n) const - { - ok_ = (value_[n].second != 0); - if (!ok_) return 0.0f; - return static_cast(value_[n].first) / value_[n].second; - } - // Default implementation - template - Rational ValueType::toRational(long n) const - { - ok_ = true; - return Rational(value_[n], 1); - } - // Specialization for rational - template<> - inline Rational ValueType::toRational(long n) const - { - ok_ = true; - return Rational(value_[n].first, value_[n].second); - } - // Specialization for unsigned rational - template<> - inline Rational ValueType::toRational(long n) const - { - ok_ = true; - return Rational(value_[n].first, value_[n].second); - } - // Specialization for float. - template<> - inline Rational ValueType::toRational(long n) const - { - ok_ = true; - // Warning: This is a very simple conversion, see floatToRationalCast() - return floatToRationalCast(value_[n]); - } - // Specialization for double. - template<> - inline Rational ValueType::toRational(long n) const - { - ok_ = true; - // Warning: This is a very simple conversion, see floatToRationalCast() - return floatToRationalCast(static_cast(value_[n])); - } - - template - long ValueType::sizeDataArea() const - { - return sizeDataArea_; - } - - template - DataBuf ValueType::dataArea() const - { - return DataBuf(pDataArea_, sizeDataArea_); - } - - template - int ValueType::setDataArea(const byte* buf, long len) - { - byte* tmp = 0; - if (len > 0) { - tmp = new byte[len]; - std::memcpy(tmp, buf, len); - } - delete[] pDataArea_; - pDataArea_ = tmp; - sizeDataArea_ = len; - return 0; - } -} // namespace Exiv2 - -#endif // #ifndef VALUE_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/version.cpp b/platform/win32/msvc/external/exiv2/src/version.cpp deleted file mode 100644 index c88f31309dc..00000000000 --- a/platform/win32/msvc/external/exiv2/src/version.cpp +++ /dev/null @@ -1,68 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: version.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - History: 06-Mar-07, ahu: created - - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: version.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#include "version.hpp" - -// + standard includes -#include -#include - -namespace Exiv2 { - int versionNumber() - { - return EXIV2_MAKE_VERSION(EXIV2_MAJOR_VERSION, EXIV2_MINOR_VERSION, EXIV2_PATCH_VERSION); - } - - std::string versionNumberHexString() - { - std::ostringstream os; - os << std::hex << std::setw(6) << std::setfill('0') << Exiv2::versionNumber(); - return os.str(); - } - - const char* version() - { - return EXV_PACKAGE_VERSION; - } - - bool testVersion(int major, int minor, int patch) - { - return versionNumber() >= EXIV2_MAKE_VERSION(major,minor,patch); - } -} // namespace Exiv2 diff --git a/platform/win32/msvc/external/exiv2/src/version.hpp b/platform/win32/msvc/external/exiv2/src/version.hpp deleted file mode 100644 index 601e7c03246..00000000000 --- a/platform/win32/msvc/external/exiv2/src/version.hpp +++ /dev/null @@ -1,176 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file version.hpp - @brief Precompiler define and a function to test the %Exiv2 version. - References: Similar versioning defines are used in KDE, GTK and other - libraries. See http://apr.apache.org/versioning.html for accompanying - guidelines. - @version $Rev: 2685 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 31-May-06, ahu: created - */ -#ifndef VERSION_HPP_ -#define VERSION_HPP_ - -// ***************************************************************************** -// included header files -// + standard includes -#include - -/*! - @brief %Exiv2 MAJOR version number of the library used at compile-time. - */ -#define EXIV2_MAJOR_VERSION (0) -/*! - @brief %Exiv2 MINOR version number of the library used at compile-time. - */ -#define EXIV2_MINOR_VERSION (23) -/*! - @brief %Exiv2 PATCH version number of the library used at compile-time. - */ -#define EXIV2_PATCH_VERSION (0) -/*! - @brief Make an integer version number for comparison from a major, minor and - a patch version number. - */ -#define EXIV2_MAKE_VERSION(major,minor,patch) \ - (((major) << 16) | ((minor) << 8) | (patch)) -/*! - @brief The %Exiv2 version number of the library used at compile-time as - an integer number for easy comparison. - */ -#define EXIV2_VERSION \ - EXIV2_MAKE_VERSION(EXIV2_MAJOR_VERSION,EXIV2_MINOR_VERSION,EXIV2_PATCH_VERSION) -/*! - @brief Deprecated version check macro. Do not use. - - This macro has flaws and only remains for backward compatibility. - Use EXIV2_TEST_VERSION and testVersion() instead. - */ -#define EXIV2_CHECK_VERSION(major,minor,patch) \ - ( Exiv2::versionNumber() >= EXIV2_MAKE_VERSION(major,minor,patch) ) -/*! - @brief Macro to test the version of the available %Exiv2 library at compile-time. - Return true if it is the same as or newer than the passed-in version. - - Versions are denoted using a triplet of integers: \em MAJOR.MINOR.PATCH . - - @code - // Don't include the file directly, it is included by - // . Early Exiv2 versions didn't have version.hpp and the macros. - - #include - - // Make sure an EXIV2_TEST_VERSION macro exists: - - #ifdef EXIV2_VERSION - # ifndef EXIV2_TEST_VERSION - # define EXIV2_TEST_VERSION(major,minor,patch) \ - ( EXIV2_VERSION >= EXIV2_MAKE_VERSION(major,minor,patch) ) - # endif - #else - # define EXIV2_TEST_VERSION(major,minor,patch) (false) - #endif - - std::cout << "Compiled with Exiv2 version " << EXV_PACKAGE_VERSION << "\n" - << "Runtime Exiv2 version is " << Exiv2::version() << "\n"; - - // Test the Exiv2 version available at runtime but compile the if-clause only if - // the compile-time version is at least 0.15. Earlier versions didn't have a - // testVersion() function: - - #if EXIV2_TEST_VERSION(0,15,0) - if (Exiv2::testVersion(0,13,0)) { - std::cout << "Available Exiv2 version is equal to or greater than 0.13\n"; - } - else { - std::cout << "Installed Exiv2 version is less than 0.13\n"; - } - #else - std::cout << "Compile-time Exiv2 version doesn't have Exiv2::testVersion()\n"; - #endif - @endcode - */ -#define EXIV2_TEST_VERSION(major,minor,patch) \ - ( EXIV2_VERSION >= EXIV2_MAKE_VERSION(major,minor,patch) ) - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - /*! - @brief Return the version of %Exiv2 available at runtime as an integer. - */ - EXIV2API int versionNumber(); - /*! - @brief Return the version of %Exiv2 as hex string of fixed length 6. - */ - EXIV2API std::string versionNumberHexString(); - /*! - @brief Return the version of %Exiv2 available at runtime as a string. - */ - EXIV2API const char* version(); - /*! - @brief Test the version of the available %Exiv2 library at runtime. Return - true if it is the same as or newer than the passed-in version. - - Versions are denoted using a triplet of integers: \em major.minor.patch . - - @code - // Don't include the file directly, it is included by - // . Early Exiv2 versions didn't have version.hpp and the macros. - - #include - - // Make sure an EXIV2_TEST_VERSION macro exists: - - #ifdef EXIV2_VERSION - # ifndef EXIV2_TEST_VERSION - # define EXIV2_TEST_VERSION(major,minor,patch) \ - ( EXIV2_VERSION >= EXIV2_MAKE_VERSION(major,minor,patch) ) - # endif - #else - # define EXIV2_TEST_VERSION(major,minor,patch) (false) - #endif - - std::cout << "Compiled with Exiv2 version " << EXV_PACKAGE_VERSION << "\n" - << "Runtime Exiv2 version is " << Exiv2::version() << "\n"; - - // Test the Exiv2 version available at runtime but compile the if-clause only if - // the compile-time version is at least 0.15. Earlier versions didn't have a - // testVersion() function: - - #if EXIV2_TEST_VERSION(0,15,0) - if (Exiv2::testVersion(0,13,0)) { - std::cout << "Available Exiv2 version is equal to or greater than 0.13\n"; - } - else { - std::cout << "Installed Exiv2 version is less than 0.13\n"; - } - #else - std::cout << "Compile-time Exiv2 version doesn't have Exiv2::testVersion()\n"; - #endif - @endcode - */ - EXIV2API bool testVersion(int major, int minor, int patch); -} // namespace Exiv2 -#endif // VERSION_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/xmp.cpp b/platform/win32/msvc/external/exiv2/src/xmp.cpp deleted file mode 100644 index f88806c0f20..00000000000 --- a/platform/win32/msvc/external/exiv2/src/xmp.cpp +++ /dev/null @@ -1,889 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: xmp.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - History: 13-July-07, ahu: created - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: xmp.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#include "xmp.hpp" -#include "types.hpp" -#include "error.hpp" -#include "value.hpp" -#include "properties.hpp" - -// + standard includes -#include -#include -#include -#include - -// Adobe XMP Toolkit -#ifdef EXV_HAVE_XMP_TOOLKIT -# define TXMP_STRING_TYPE std::string -# include -# include -#endif // EXV_HAVE_XMP_TOOLKIT - -// ***************************************************************************** -// local declarations -namespace { - //! Unary predicate that matches an Xmpdatum by key - class FindXmpdatum { - public: - //! Constructor, initializes the object with key - FindXmpdatum(const Exiv2::XmpKey& key) - : key_(key.key()) {} - /*! - @brief Returns true if prefix and property of the argument - Xmpdatum are equal to that of the object. - */ - bool operator()(const Exiv2::Xmpdatum& xmpdatum) const - { return key_ == xmpdatum.key(); } - - private: - std::string key_; - - }; // class FindXmpdatum - -#ifdef EXV_HAVE_XMP_TOOLKIT - //! Convert XMP Toolkit struct option bit to Value::XmpStruct - Exiv2::XmpValue::XmpStruct xmpStruct(const XMP_OptionBits& opt); - - //! Convert Value::XmpStruct to XMP Toolkit array option bits - XMP_OptionBits xmpArrayOptionBits(Exiv2::XmpValue::XmpStruct xs); - - //! Convert XMP Toolkit array option bits to array TypeId - Exiv2::TypeId arrayValueTypeId(const XMP_OptionBits& opt); - - //! Convert XMP Toolkit array option bits to Value::XmpArrayType - Exiv2::XmpValue::XmpArrayType xmpArrayType(const XMP_OptionBits& opt); - - //! Convert Value::XmpArrayType to XMP Toolkit array option bits - XMP_OptionBits xmpArrayOptionBits(Exiv2::XmpValue::XmpArrayType xat); - - //! Convert XmpFormatFlags to XMP Toolkit format option bits - XMP_OptionBits xmpFormatOptionBits(Exiv2::XmpParser::XmpFormatFlags flags); - -# ifdef DEBUG - //! Print information about a parsed XMP node - void printNode(const std::string& schemaNs, - const std::string& propPath, - const std::string& propValue, - const XMP_OptionBits& opt); -# endif // DEBUG -#endif // EXV_HAVE_XMP_TOOLKIT - - //! Make an XMP key from a schema namespace and property path - Exiv2::XmpKey::AutoPtr makeXmpKey(const std::string& schemaNs, - const std::string& propPath); - - //! Helper class used to serialize critical sections - class AutoLock - { - public: - AutoLock(Exiv2::XmpParser::XmpLockFct xmpLockFct, void* pLockData) - : xmpLockFct_(xmpLockFct), pLockData_(pLockData) - { - if (xmpLockFct_) xmpLockFct_(pLockData_, true); - } - ~AutoLock() - { - if (xmpLockFct_) xmpLockFct_(pLockData_, false); - } - private: - Exiv2::XmpParser::XmpLockFct xmpLockFct_; - void* pLockData_; - }; -} - -// ***************************************************************************** -// class member definitions -namespace Exiv2 { - - //! Internal Pimpl structure of class Xmpdatum. - struct Xmpdatum::Impl { - Impl(const XmpKey& key, const Value* pValue); //!< Constructor - Impl(const Impl& rhs); //!< Copy constructor - Impl& operator=(const Impl& rhs); //!< Assignment - - // DATA - XmpKey::AutoPtr key_; //!< Key - Value::AutoPtr value_; //!< Value - }; - - Xmpdatum::Impl::Impl(const XmpKey& key, const Value* pValue) - : key_(key.clone()) - { - if (pValue) value_ = pValue->clone(); - } - - Xmpdatum::Impl::Impl(const Impl& rhs) - { - if (rhs.key_.get() != 0) key_ = rhs.key_->clone(); // deep copy - if (rhs.value_.get() != 0) value_ = rhs.value_->clone(); // deep copy - } - - Xmpdatum::Impl& Xmpdatum::Impl::operator=(const Impl& rhs) - { - if (this == &rhs) return *this; - key_.reset(); - if (rhs.key_.get() != 0) key_ = rhs.key_->clone(); // deep copy - value_.reset(); - if (rhs.value_.get() != 0) value_ = rhs.value_->clone(); // deep copy - return *this; - } - - Xmpdatum::Xmpdatum(const XmpKey& key, const Value* pValue) - : p_(new Impl(key, pValue)) - { - } - - Xmpdatum::Xmpdatum(const Xmpdatum& rhs) - : Metadatum(rhs), p_(new Impl(*rhs.p_)) - { - } - - Xmpdatum& Xmpdatum::operator=(const Xmpdatum& rhs) - { - if (this == &rhs) return *this; - Metadatum::operator=(rhs); - *p_ = *rhs.p_; - return *this; - } - - Xmpdatum::~Xmpdatum() - { - delete p_; - } - - std::string Xmpdatum::key() const - { - return p_->key_.get() == 0 ? "" : p_->key_->key(); - } - - const char* Xmpdatum::familyName() const - { - return p_->key_.get() == 0 ? "" : p_->key_->familyName(); - } - - std::string Xmpdatum::groupName() const - { - return p_->key_.get() == 0 ? "" : p_->key_->groupName(); - } - - std::string Xmpdatum::tagName() const - { - return p_->key_.get() == 0 ? "" : p_->key_->tagName(); - } - - std::string Xmpdatum::tagLabel() const - { - return p_->key_.get() == 0 ? "" : p_->key_->tagLabel(); - } - - uint16_t Xmpdatum::tag() const - { - return p_->key_.get() == 0 ? 0 : p_->key_->tag(); - } - - TypeId Xmpdatum::typeId() const - { - return p_->value_.get() == 0 ? invalidTypeId : p_->value_->typeId(); - } - - const char* Xmpdatum::typeName() const - { - return TypeInfo::typeName(typeId()); - } - - long Xmpdatum::typeSize() const - { - return 0; - } - - long Xmpdatum::count() const - { - return p_->value_.get() == 0 ? 0 : p_->value_->count(); - } - - long Xmpdatum::size() const - { - return p_->value_.get() == 0 ? 0 : p_->value_->size(); - } - - std::string Xmpdatum::toString() const - { - return p_->value_.get() == 0 ? "" : p_->value_->toString(); - } - - std::string Xmpdatum::toString(long n) const - { - return p_->value_.get() == 0 ? "" : p_->value_->toString(n); - } - - long Xmpdatum::toLong(long n) const - { - return p_->value_.get() == 0 ? -1 : p_->value_->toLong(n); - } - - float Xmpdatum::toFloat(long n) const - { - return p_->value_.get() == 0 ? -1 : p_->value_->toFloat(n); - } - - Rational Xmpdatum::toRational(long n) const - { - return p_->value_.get() == 0 ? Rational(-1, 1) : p_->value_->toRational(n); - } - - Value::AutoPtr Xmpdatum::getValue() const - { - return p_->value_.get() == 0 ? Value::AutoPtr(0) : p_->value_->clone(); - } - - const Value& Xmpdatum::value() const - { - if (p_->value_.get() == 0) throw Error(8); - return *p_->value_; - } - - long Xmpdatum::copy(byte* /*buf*/, ByteOrder /*byteOrder*/) const - { - throw Error(34, "Xmpdatum::copy"); - return 0; - } - - std::ostream& Xmpdatum::write(std::ostream& os, const ExifData*) const - { - return XmpProperties::printProperty(os, key(), value()); - } - - Xmpdatum& Xmpdatum::operator=(const std::string& value) - { - setValue(value); - return *this; - } - - Xmpdatum& Xmpdatum::operator=(const Value& value) - { - setValue(&value); - return *this; - } - - void Xmpdatum::setValue(const Value* pValue) - { - p_->value_.reset(); - if (pValue) p_->value_ = pValue->clone(); - } - - int Xmpdatum::setValue(const std::string& value) - { - if (p_->value_.get() == 0) { - TypeId type = xmpText; - if (0 != p_->key_.get()) { - type = XmpProperties::propertyType(*p_->key_.get()); - } - p_->value_ = Value::create(type); - } - return p_->value_->read(value); - } - - Xmpdatum& XmpData::operator[](const std::string& key) - { - XmpKey xmpKey(key); - iterator pos = findKey(xmpKey); - if (pos == end()) { - add(Xmpdatum(xmpKey)); - pos = findKey(xmpKey); - } - return *pos; - } - - int XmpData::add(const XmpKey& key, const Value* value) - { - return add(Xmpdatum(key, value)); - } - - int XmpData::add(const Xmpdatum& xmpDatum) - { - xmpMetadata_.push_back(xmpDatum); - return 0; - } - - XmpData::const_iterator XmpData::findKey(const XmpKey& key) const - { - return std::find_if(xmpMetadata_.begin(), xmpMetadata_.end(), - FindXmpdatum(key)); - } - - XmpData::iterator XmpData::findKey(const XmpKey& key) - { - return std::find_if(xmpMetadata_.begin(), xmpMetadata_.end(), - FindXmpdatum(key)); - } - - void XmpData::clear() - { - xmpMetadata_.clear(); - } - - void XmpData::sortByKey() - { - std::sort(xmpMetadata_.begin(), xmpMetadata_.end(), cmpMetadataByKey); - } - - XmpData::const_iterator XmpData::begin() const - { - return xmpMetadata_.begin(); - } - - XmpData::const_iterator XmpData::end() const - { - return xmpMetadata_.end(); - } - - bool XmpData::empty() const - { - return count() == 0; - } - - long XmpData::count() const - { - return static_cast(xmpMetadata_.size()); - } - - XmpData::iterator XmpData::begin() - { - return xmpMetadata_.begin(); - } - - XmpData::iterator XmpData::end() - { - return xmpMetadata_.end(); - } - - XmpData::iterator XmpData::erase(XmpData::iterator pos) - { - return xmpMetadata_.erase(pos); - } - - bool XmpParser::initialized_ = false; - XmpParser::XmpLockFct XmpParser::xmpLockFct_ = 0; - void* XmpParser::pLockData_ = 0; - - bool XmpParser::initialize(XmpParser::XmpLockFct xmpLockFct, void* pLockData) - { - if (!initialized_) { -#ifdef EXV_HAVE_XMP_TOOLKIT - xmpLockFct_ = xmpLockFct; - pLockData_ = pLockData; - initialized_ = SXMPMeta::Initialize(); - SXMPMeta::RegisterNamespace("http://www.digikam.org/ns/1.0/", "digiKam"); - SXMPMeta::RegisterNamespace("http://www.digikam.org/ns/kipi/1.0/", "kipi"); - SXMPMeta::RegisterNamespace("http://ns.microsoft.com/photo/1.0/", "MicrosoftPhoto"); - SXMPMeta::RegisterNamespace("http://iptc.org/std/Iptc4xmpExt/2008-02-29/", "iptcExt"); - SXMPMeta::RegisterNamespace("http://ns.useplus.org/ldf/xmp/1.0/", "plus"); - SXMPMeta::RegisterNamespace("http://ns.iview-multimedia.com/mediapro/1.0/", "mediapro"); - SXMPMeta::RegisterNamespace("http://ns.microsoft.com/expressionmedia/1.0/", "expressionmedia"); - SXMPMeta::RegisterNamespace("http://ns.microsoft.com/photo/1.2/", "MP"); - SXMPMeta::RegisterNamespace("http://ns.microsoft.com/photo/1.2/t/RegionInfo#", "MPRI"); - SXMPMeta::RegisterNamespace("http://ns.microsoft.com/photo/1.2/t/Region#", "MPReg"); - SXMPMeta::RegisterNamespace("http://www.metadataworkinggroup.com/schemas/regions/", "mwg-rs"); - SXMPMeta::RegisterNamespace("http://ns.adobe.com/xmp/sType/Area#", "stArea"); -#else - initialized_ = true; -#endif - } - return initialized_; - } - - void XmpParser::terminate() - { - XmpProperties::unregisterNs(); - if (initialized_) { -#ifdef EXV_HAVE_XMP_TOOLKIT - SXMPMeta::Terminate(); -#endif - xmpLockFct_ = 0; - pLockData_ = 0; - initialized_ = false; - } - } - -#ifdef EXV_HAVE_XMP_TOOLKIT - void XmpParser::registerNs(const std::string& ns, - const std::string& prefix) - { - try { - initialize(); - AutoLock autoLock(xmpLockFct_, pLockData_); - SXMPMeta::DeleteNamespace(ns.c_str()); - SXMPMeta::RegisterNamespace(ns.c_str(), prefix.c_str()); - } - catch (const XMP_Error& e) { - throw Error(40, e.GetID(), e.GetErrMsg()); - } - } // XmpParser::registerNs -#else - void XmpParser::registerNs(const std::string& /*ns*/, - const std::string& /*prefix*/) - { - initialize(); - } // XmpParser::registerNs -#endif - - void XmpParser::unregisterNs(const std::string& /*ns*/) - { -#ifdef EXV_HAVE_XMP_TOOLKIT - try { -// Throws XMP Toolkit error 8: Unimplemented method XMPMeta::DeleteNamespace -// SXMPMeta::DeleteNamespace(ns.c_str()); - } - catch (const XMP_Error& e) { - throw Error(40, e.GetID(), e.GetErrMsg()); - } -#endif - } // XmpParser::unregisterNs - -#ifdef EXV_HAVE_XMP_TOOLKIT - int XmpParser::decode( XmpData& xmpData, - const std::string& xmpPacket) - { try { - xmpData.clear(); - if (xmpPacket.empty()) return 0; - - if (!initialize()) { -#ifndef SUPPRESS_WARNINGS - EXV_ERROR << "XMP toolkit initialization failed.\n"; -#endif - return 2; - } - - SXMPMeta meta(xmpPacket.data(), static_cast(xmpPacket.size())); - SXMPIterator iter(meta); - std::string schemaNs, propPath, propValue; - XMP_OptionBits opt; - while (iter.Next(&schemaNs, &propPath, &propValue, &opt)) { -#ifdef DEBUG - printNode(schemaNs, propPath, propValue, opt); -#endif - if (XMP_PropIsAlias(opt)) { - throw Error(47, schemaNs, propPath, propValue); - continue; - } - if (XMP_NodeIsSchema(opt)) { - // Register unknown namespaces with Exiv2 - // (Namespaces are automatically registered with the XMP Toolkit) - if (XmpProperties::prefix(schemaNs).empty()) { - std::string prefix; - bool ret = meta.GetNamespacePrefix(schemaNs.c_str(), &prefix); - if (!ret) throw Error(45, schemaNs); - prefix = prefix.substr(0, prefix.size() - 1); - XmpProperties::registerNs(schemaNs, prefix); - } - continue; - } - XmpKey::AutoPtr key = makeXmpKey(schemaNs, propPath); - if (XMP_ArrayIsAltText(opt)) { - // Read Lang Alt property - LangAltValue::AutoPtr val(new LangAltValue); - XMP_Index count = meta.CountArrayItems(schemaNs.c_str(), propPath.c_str()); - while (count-- > 0) { - // Get the text - bool haveNext = iter.Next(&schemaNs, &propPath, &propValue, &opt); -#ifdef DEBUG - printNode(schemaNs, propPath, propValue, opt); -#endif - if ( !haveNext - || !XMP_PropIsSimple(opt) - || !XMP_PropHasLang(opt)) { - throw Error(41, propPath, opt); - } - const std::string text = propValue; - // Get the language qualifier - haveNext = iter.Next(&schemaNs, &propPath, &propValue, &opt); -#ifdef DEBUG - printNode(schemaNs, propPath, propValue, opt); -#endif - if ( !haveNext - || !XMP_PropIsSimple(opt) - || !XMP_PropIsQualifier(opt) - || propPath.substr(propPath.size() - 8, 8) != "xml:lang") { - throw Error(42, propPath, opt); - } - val->value_[propValue] = text; - } - xmpData.add(*key.get(), val.get()); - continue; - } - if ( XMP_PropIsArray(opt) - && !XMP_PropHasQualifiers(opt) - && !XMP_ArrayIsAltText(opt)) { - // Check if all elements are simple - bool simpleArray = true; - SXMPIterator aIter(meta, schemaNs.c_str(), propPath.c_str()); - std::string aSchemaNs, aPropPath, aPropValue; - XMP_OptionBits aOpt; - while (aIter.Next(&aSchemaNs, &aPropPath, &aPropValue, &aOpt)) { - if (propPath == aPropPath) continue; - if ( !XMP_PropIsSimple(aOpt) - || XMP_PropHasQualifiers(aOpt) - || XMP_PropIsQualifier(aOpt) - || XMP_NodeIsSchema(aOpt) - || XMP_PropIsAlias(aOpt)) { - simpleArray = false; - break; - } - } - if (simpleArray) { - // Read the array into an XmpArrayValue - XmpArrayValue::AutoPtr val(new XmpArrayValue(arrayValueTypeId(opt))); - XMP_Index count = meta.CountArrayItems(schemaNs.c_str(), propPath.c_str()); - while (count-- > 0) { - iter.Next(&schemaNs, &propPath, &propValue, &opt); -#ifdef DEBUG - printNode(schemaNs, propPath, propValue, opt); -#endif - val->read(propValue); - } - xmpData.add(*key.get(), val.get()); - continue; - } - } - XmpTextValue::AutoPtr val(new XmpTextValue); - if ( XMP_PropIsStruct(opt) - || XMP_PropIsArray(opt)) { - // Create a metadatum with only XMP options - val->setXmpArrayType(xmpArrayType(opt)); - val->setXmpStruct(xmpStruct(opt)); - xmpData.add(*key.get(), val.get()); - continue; - } - if ( XMP_PropIsSimple(opt) - || XMP_PropIsQualifier(opt)) { - val->read(propValue); - xmpData.add(*key.get(), val.get()); - continue; - } - // Don't let any node go by unnoticed - throw Error(39, key->key(), opt); - } // iterate through all XMP nodes - - return 0; - } -#ifndef SUPPRESS_WARNINGS - catch (const XMP_Error& e) { - EXV_ERROR << Error(40, e.GetID(), e.GetErrMsg()) << "\n"; - xmpData.clear(); - return 3; - } -#else - catch (const XMP_Error&) { - xmpData.clear(); - return 3; - } -#endif // SUPPRESS_WARNINGS - } // XmpParser::decode -#else - int XmpParser::decode( XmpData& xmpData, - const std::string& xmpPacket) - { - xmpData.clear(); - if (!xmpPacket.empty()) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "XMP toolkit support not compiled in.\n"; -#endif - } - return 1; - } // XmpParser::decode -#endif // !EXV_HAVE_XMP_TOOLKIT - -#ifdef EXV_HAVE_XMP_TOOLKIT - int XmpParser::encode( std::string& xmpPacket, - const XmpData& xmpData, - uint16_t formatFlags, - uint32_t padding) - { try { - if (xmpData.empty()) { - xmpPacket.clear(); - return 0; - } - - if (!initialize()) { -#ifndef SUPPRESS_WARNINGS - EXV_ERROR << "XMP toolkit initialization failed.\n"; -#endif - return 2; - } - // Register custom namespaces with XMP-SDK - for (XmpProperties::NsRegistry::iterator i = XmpProperties::nsRegistry_.begin(); - i != XmpProperties::nsRegistry_.end(); ++i) { -#ifdef DEBUG - std::cerr << "Registering " << i->second.prefix_ << " : " << i->first << "\n"; -#endif - registerNs(i->first, i->second.prefix_); - } - SXMPMeta meta; - for (XmpData::const_iterator i = xmpData.begin(); i != xmpData.end(); ++i) { - const std::string ns = XmpProperties::ns(i->groupName()); - XMP_OptionBits options = 0; - - if (i->typeId() == langAlt) { - // Encode Lang Alt property - const LangAltValue* la = dynamic_cast(&i->value()); - if (la == 0) throw Error(43, i->key()); - int idx = 1; - // write the default first - LangAltValue::ValueType::const_iterator k = la->value_.find("x-default"); - if (k != la->value_.end()) { -#ifdef DEBUG - printNode(ns, i->tagName(), k->second, 0); -#endif - meta.AppendArrayItem(ns.c_str(), i->tagName().c_str(), kXMP_PropArrayIsAlternate, k->second.c_str()); - const std::string item = i->tagName() + "[" + toString(idx++) + "]"; - meta.SetQualifier(ns.c_str(), item.c_str(), kXMP_NS_XML, "lang", k->first.c_str()); - } - for (k = la->value_.begin(); k != la->value_.end(); ++k) { - if (k->first == "x-default") continue; -#ifdef DEBUG - printNode(ns, i->tagName(), k->second, 0); -#endif - meta.AppendArrayItem(ns.c_str(), i->tagName().c_str(), kXMP_PropArrayIsAlternate, k->second.c_str()); - const std::string item = i->tagName() + "[" + toString(idx++) + "]"; - meta.SetQualifier(ns.c_str(), item.c_str(), kXMP_NS_XML, "lang", k->first.c_str()); - } - continue; - } - // Todo: Xmpdatum should have an XmpValue, not a Value - const XmpValue* val = dynamic_cast(&i->value()); - if (val == 0) throw Error(52, i->key(), i->typeName()); - options = xmpArrayOptionBits(val->xmpArrayType()) - | xmpArrayOptionBits(val->xmpStruct()); - if ( i->typeId() == xmpBag - || i->typeId() == xmpSeq - || i->typeId() == xmpAlt) { -#ifdef DEBUG - printNode(ns, i->tagName(), "", options); -#endif - meta.SetProperty(ns.c_str(), i->tagName().c_str(), 0, options); - for (int idx = 0; idx < i->count(); ++idx) { - const std::string item = i->tagName() + "[" + toString(idx + 1) + "]"; -#ifdef DEBUG - printNode(ns, item, i->toString(idx), 0); -#endif - meta.SetProperty(ns.c_str(), item.c_str(), i->toString(idx).c_str()); - } - continue; - } - if (i->typeId() == xmpText) { - if (i->count() == 0) { -#ifdef DEBUG - printNode(ns, i->tagName(), "", options); -#endif - meta.SetProperty(ns.c_str(), i->tagName().c_str(), 0, options); - } - else { -#ifdef DEBUG - printNode(ns, i->tagName(), i->toString(0), options); -#endif - meta.SetProperty(ns.c_str(), i->tagName().c_str(), i->toString(0).c_str(), options); - } - continue; - } - // Don't let any Xmpdatum go by unnoticed - throw Error(38, i->tagName(), i->typeName()); - } - std::string tmpPacket; - meta.SerializeToBuffer(&tmpPacket, xmpFormatOptionBits(static_cast(formatFlags)), padding); // throws - xmpPacket = tmpPacket; - - return 0; - } -#ifndef SUPPRESS_WARNINGS - catch (const XMP_Error& e) { - EXV_ERROR << Error(40, e.GetID(), e.GetErrMsg()) << "\n"; - return 3; - } -#else - catch (const XMP_Error&) { - return 3; - } -#endif // SUPPRESS_WARNINGS - } // XmpParser::decode -#else - int XmpParser::encode( std::string& /*xmpPacket*/, - const XmpData& xmpData, - uint16_t /*formatFlags*/, - uint32_t /*padding*/) - { - if (!xmpData.empty()) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "XMP toolkit support not compiled in.\n"; -#endif - } - return 1; - } // XmpParser::encode -#endif // !EXV_HAVE_XMP_TOOLKIT - -} // namespace Exiv2 - -// ***************************************************************************** -// local definitions -namespace { - -#ifdef EXV_HAVE_XMP_TOOLKIT - Exiv2::XmpValue::XmpStruct xmpStruct(const XMP_OptionBits& opt) - { - Exiv2::XmpValue::XmpStruct var(Exiv2::XmpValue::xsNone); - if (XMP_PropIsStruct(opt)) { - var = Exiv2::XmpValue::xsStruct; - } - return var; - } - - XMP_OptionBits xmpArrayOptionBits(Exiv2::XmpValue::XmpStruct xs) - { - XMP_OptionBits var(0); - switch (xs) { - case Exiv2::XmpValue::xsNone: - break; - case Exiv2::XmpValue::xsStruct: - XMP_SetOption(var, kXMP_PropValueIsStruct); - break; - } - return var; - } - - Exiv2::TypeId arrayValueTypeId(const XMP_OptionBits& opt) - { - Exiv2::TypeId typeId(Exiv2::invalidTypeId); - if (XMP_PropIsArray(opt)) { - if (XMP_ArrayIsAlternate(opt)) typeId = Exiv2::xmpAlt; - else if (XMP_ArrayIsOrdered(opt)) typeId = Exiv2::xmpSeq; - else if (XMP_ArrayIsUnordered(opt)) typeId = Exiv2::xmpBag; - } - return typeId; - } - - Exiv2::XmpValue::XmpArrayType xmpArrayType(const XMP_OptionBits& opt) - { - return Exiv2::XmpValue::xmpArrayType(arrayValueTypeId(opt)); - } - - XMP_OptionBits xmpArrayOptionBits(Exiv2::XmpValue::XmpArrayType xat) - { - XMP_OptionBits var(0); - switch (xat) { - case Exiv2::XmpValue::xaNone: - break; - case Exiv2::XmpValue::xaAlt: - XMP_SetOption(var, kXMP_PropValueIsArray); - XMP_SetOption(var, kXMP_PropArrayIsAlternate); - break; - case Exiv2::XmpValue::xaSeq: - XMP_SetOption(var, kXMP_PropValueIsArray); - XMP_SetOption(var, kXMP_PropArrayIsOrdered); - break; - case Exiv2::XmpValue::xaBag: - XMP_SetOption(var, kXMP_PropValueIsArray); - break; - } - return var; - } - - XMP_OptionBits xmpFormatOptionBits(Exiv2::XmpParser::XmpFormatFlags flags) - { - XMP_OptionBits var(0); - if (flags & Exiv2::XmpParser::omitPacketWrapper) var |= kXMP_OmitPacketWrapper; - if (flags & Exiv2::XmpParser::readOnlyPacket) var |= kXMP_ReadOnlyPacket; - if (flags & Exiv2::XmpParser::useCompactFormat) var |= kXMP_UseCompactFormat; - if (flags & Exiv2::XmpParser::includeThumbnailPad) var |= kXMP_IncludeThumbnailPad; - if (flags & Exiv2::XmpParser::exactPacketLength) var |= kXMP_ExactPacketLength; - if (flags & Exiv2::XmpParser::writeAliasComments) var |= kXMP_WriteAliasComments; - if (flags & Exiv2::XmpParser::omitAllFormatting) var |= kXMP_OmitAllFormatting; - return var; - } - -#ifdef DEBUG - void printNode(const std::string& schemaNs, - const std::string& propPath, - const std::string& propValue, - const XMP_OptionBits& opt) - { - static bool first = true; - if (first) { - first = false; - std::cout << "ashisabsals\n" - << "lcqqtrgqlai\n"; - } - enum { alia=0, sche, hasq, isqu, stru, arra, - abag, aseq, aalt, lang, simp, len }; - - std::string opts(len, '.'); - if (XMP_PropIsAlias(opt)) opts[alia] = 'X'; - if (XMP_NodeIsSchema(opt)) opts[sche] = 'X'; - if (XMP_PropHasQualifiers(opt)) opts[hasq] = 'X'; - if (XMP_PropIsQualifier(opt)) opts[isqu] = 'X'; - if (XMP_PropIsStruct(opt)) opts[stru] = 'X'; - if (XMP_PropIsArray(opt)) opts[arra] = 'X'; - if (XMP_ArrayIsUnordered(opt)) opts[abag] = 'X'; - if (XMP_ArrayIsOrdered(opt)) opts[aseq] = 'X'; - if (XMP_ArrayIsAlternate(opt)) opts[aalt] = 'X'; - if (XMP_ArrayIsAltText(opt)) opts[lang] = 'X'; - if (XMP_PropIsSimple(opt)) opts[simp] = 'X'; - - std::cout << opts << " "; - if (opts[sche] == 'X') { - std::cout << "ns=" << schemaNs; - } - else { - std::cout << propPath << " = " << propValue; - } - std::cout << std::endl; - } -#endif // DEBUG -#endif // EXV_HAVE_XMP_TOOLKIT - - Exiv2::XmpKey::AutoPtr makeXmpKey(const std::string& schemaNs, - const std::string& propPath) - { - std::string property; - std::string::size_type idx = propPath.find(':'); - if (idx == std::string::npos) { - throw Exiv2::Error(44, propPath, schemaNs); - } - // Don't worry about out_of_range, XMP parser takes care of this - property = propPath.substr(idx + 1); - std::string prefix = Exiv2::XmpProperties::prefix(schemaNs); - if (prefix.empty()) { - throw Exiv2::Error(36, propPath, schemaNs); - } - return Exiv2::XmpKey::AutoPtr(new Exiv2::XmpKey(prefix, property)); - } // makeXmpKey - -} diff --git a/platform/win32/msvc/external/exiv2/src/xmp.hpp b/platform/win32/msvc/external/exiv2/src/xmp.hpp deleted file mode 100644 index 0747a2fb75c..00000000000 --- a/platform/win32/msvc/external/exiv2/src/xmp.hpp +++ /dev/null @@ -1,419 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file xmp.hpp - @brief Encoding and decoding of XMP data - @version $Rev: 2681 $ - @author Andreas Huggel (ahu) - ahuggel@gmx.net - @date 13-Jul-07, ahu: created - */ -#ifndef XMP_HPP_ -#define XMP_HPP_ - -// ***************************************************************************** -// included header files -#include "metadatum.hpp" -#include "properties.hpp" -#include "value.hpp" -#include "types.hpp" - -// + standard includes -#include -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class declarations - class ExifData; - -// ***************************************************************************** -// class definitions - - /*! - @brief Information related to an XMP property. An XMP metadatum consists - of an XmpKey and a Value and provides methods to manipulate these. - */ - class EXIV2API Xmpdatum : public Metadatum { - public: - //! @name Creators - //@{ - /*! - @brief Constructor for new tags created by an application. The - %Xmpdatum is created from a key / value pair. %Xmpdatum - copies (clones) the value if one is provided. Alternatively, a - program can create an 'empty' %Xmpdatum with only a key and - set the value using setValue(). - - @param key The key of the %Xmpdatum. - @param pValue Pointer to a %Xmpdatum value. - @throw Error if the key cannot be parsed and converted - to a known schema namespace prefix and property name. - */ - explicit Xmpdatum(const XmpKey& key, - const Value* pValue =0); - //! Copy constructor - Xmpdatum(const Xmpdatum& rhs); - //! Destructor - virtual ~Xmpdatum(); - //@} - - //! @name Manipulators - //@{ - //! Assignment operator - Xmpdatum& operator=(const Xmpdatum& rhs); - /*! - @brief Assign std::string \em value to the %Xmpdatum. - Calls setValue(const std::string&). - */ - Xmpdatum& operator=(const std::string& value); - /*! - @brief Assign const char* \em value to the %Xmpdatum. - Calls operator=(const std::string&). - */ - Xmpdatum& operator=(const char* value); - /*! - @brief Assign a boolean \em value to the %Xmpdatum. - Translates the value to a string "true" or "false". - */ - Xmpdatum& operator=(const bool& value); - /*! - @brief Assign a \em value of any type with an output operator - to the %Xmpdatum. Calls operator=(const std::string&). - */ - template - Xmpdatum& operator=(const T& value); - /*! - @brief Assign Value \em value to the %Xmpdatum. - Calls setValue(const Value*). - */ - Xmpdatum& operator=(const Value& value); - void setValue(const Value* pValue); - /*! - @brief Set the value to the string \em value. Uses Value::read(const - std::string&). If the %Xmpdatum does not have a Value yet, - then a %Value of the correct type for this %Xmpdatum is - created. If the key is unknown, a XmpTextValue is used as - default. Return 0 if the value was read successfully. - */ - int setValue(const std::string& value); - //@} - - //! @name Accessors - //@{ - //! Not implemented. Calling this method will raise an exception. - long copy(byte* buf, ByteOrder byteOrder) const; - std::ostream& write(std::ostream& os, const ExifData* pMetadata =0) const; - /*! - @brief Return the key of the Xmpdatum. The key is of the form - 'Xmp.prefix.property'. Note however that the - key is not necessarily unique, i.e., an XmpData object may - contain multiple metadata with the same key. - */ - std::string key() const; - const char* familyName() const; - //! Return the (preferred) schema namespace prefix. - std::string groupName() const; - //! Return the property name. - std::string tagName() const; - std::string tagLabel() const; - //! Properties don't have a tag number. Return 0. - uint16_t tag() const; - TypeId typeId() const; - const char* typeName() const; - // Todo: Remove this method from the baseclass - //! The Exif typeSize doesn't make sense here. Return 0. - long typeSize() const; - long count() const; - long size() const; - std::string toString() const; - std::string toString(long n) const; - long toLong(long n =0) const; - float toFloat(long n =0) const; - Rational toRational(long n =0) const; - Value::AutoPtr getValue() const; - const Value& value() const; - //@} - - private: - // Pimpl idiom - struct Impl; - Impl* p_; - - }; // class Xmpdatum - - //! Container type to hold all metadata - typedef std::vector XmpMetadata; - - /*! - @brief A container for XMP data. This is a top-level class of - the %Exiv2 library. - - Provide high-level access to the XMP data of an image: - - read XMP information from an XML block - - access metadata through keys and standard C++ iterators - - add, modify and delete metadata - - serialize XMP data to an XML block - */ - class EXIV2API XmpData { - public: - //! XmpMetadata iterator type - typedef XmpMetadata::iterator iterator; - //! XmpMetadata const iterator type - typedef XmpMetadata::const_iterator const_iterator; - - //! @name Manipulators - //@{ - /*! - @brief Returns a reference to the %Xmpdatum that is associated with a - particular \em key. If %XmpData does not already contain such - an %Xmpdatum, operator[] adds object \em Xmpdatum(key). - - @note Since operator[] might insert a new element, it can't be a const - member function. - */ - Xmpdatum& operator[](const std::string& key); - /*! - @brief Add an %Xmpdatum from the supplied key and value pair. This - method copies (clones) the value. - @return 0 if successful. - */ - int add(const XmpKey& key, const Value* value); - /*! - @brief Add a copy of the Xmpdatum to the XMP metadata. - @return 0 if successful. - */ - int add(const Xmpdatum& xmpdatum); - /*! - @brief Delete the Xmpdatum at iterator position pos, return the - position of the next Xmpdatum. - - @note Iterators into the metadata, including pos, are potentially - invalidated by this call. - */ - iterator erase(iterator pos); - //! Delete all Xmpdatum instances resulting in an empty container. - void clear(); - //! Sort metadata by key - void sortByKey(); - //! Begin of the metadata - iterator begin(); - //! End of the metadata - iterator end(); - /*! - @brief Find the first Xmpdatum with the given key, return an iterator - to it. - */ - iterator findKey(const XmpKey& key); - //@} - - //! @name Accessors - //@{ - //! Begin of the metadata - const_iterator begin() const; - //! End of the metadata - const_iterator end() const; - /*! - @brief Find the first Xmpdatum with the given key, return a const - iterator to it. - */ - const_iterator findKey(const XmpKey& key) const; - //! Return true if there is no XMP metadata - bool empty() const; - //! Get the number of metadata entries - long count() const; - //@} - - private: - // DATA - XmpMetadata xmpMetadata_; - }; // class XmpData - - /*! - @brief Stateless parser class for XMP packets. Images use this - class to parse and serialize XMP packets. The parser uses - the XMP toolkit to do the job. - */ - class EXIV2API XmpParser { - public: - //! Options to control the format of the serialized XMP packet. - enum XmpFormatFlags { - omitPacketWrapper = 0x0010UL, //!< Omit the XML packet wrapper. - readOnlyPacket = 0x0020UL, //!< Default is a writeable packet. - useCompactFormat = 0x0040UL, //!< Use a compact form of RDF. - includeThumbnailPad = 0x0100UL, //!< Include a padding allowance for a thumbnail image. - exactPacketLength = 0x0200UL, //!< The padding parameter is the overall packet length. - writeAliasComments = 0x0400UL, //!< Show aliases as XML comments. - omitAllFormatting = 0x0800UL //!< Omit all formatting whitespace. - }; - /*! - @brief Decode XMP metadata from an XMP packet \em xmpPacket into - \em xmpData. The format of the XMP packet must follow the - XMP specification. This method clears any previous contents - of \em xmpData. - - @param xmpData Container for the decoded XMP properties - @param xmpPacket The raw XMP packet to decode - @return 0 if successful;
- 1 if XMP support has not been compiled-in;
- 2 if the XMP toolkit failed to initialize;
- 3 if the XMP toolkit failed and raised an XMP_Error - */ - static int decode( XmpData& xmpData, - const std::string& xmpPacket); - /*! - @brief Encode (serialize) XMP metadata from \em xmpData into a - string xmpPacket. The XMP packet returned in the string - follows the XMP specification. This method only modifies - \em xmpPacket if the operations succeeds (return code 0). - - @param xmpPacket Reference to a string to hold the encoded XMP - packet. - @param xmpData XMP properties to encode. - @param formatFlags Flags that control the format of the XMP packet, - see enum XmpFormatFlags. - @param padding Padding length. - @return 0 if successful;
- 1 if XMP support has not been compiled-in;
- 2 if the XMP toolkit failed to initialize;
- 3 if the XMP toolkit failed and raised an XMP_Error - */ - static int encode( std::string& xmpPacket, - const XmpData& xmpData, - uint16_t formatFlags =useCompactFormat, - uint32_t padding =0); - /*! - @brief Lock/unlock function type - - A function of this type can be passed to initialize() to - make subsequent registration of XMP namespaces thread-safe. - See the initialize() function for more information. - - @param pLockData Pointer to the pLockData passed to initialize() - @param lockUnlock Indicates whether to lock (true) or unlock (false) - */ - typedef void (*XmpLockFct)(void* pLockData, bool lockUnlock); - - /*! - @brief Initialize the XMP Toolkit. - - Calling this method is usually not needed, as encode() and - decode() will initialize the XMP Toolkit if necessary. - - The function takes optional pointers to a callback function - \em xmpLockFct and related data \em pLockData that the parser - uses when XMP namespaces are subsequently registered. - - The initialize() function itself still is not thread-safe and - needs to be called in a thread-safe manner (e.g., on program - startup), but if used with suitable additional locking - parameters, any subsequent registration of namespaces will be - thread-safe. - - Example usage on Windows using a critical section: - - @code - void main() - { - struct XmpLock - { - CRITICAL_SECTION cs; - XmpLock() { InitializeCriticalSection(&cs); } - ~XmpLock() { DeleteCriticalSection(&cs); } - - static void LockUnlock(void* pData, bool fLock) - { - XmpLock* pThis = reinterpret_cast(pData); - if (pThis) - { - (fLock) ? EnterCriticalSection(&pThis->cs) - : LeaveCriticalSection(&pThis->cs); - } - } - } xmpLock; - - // Pass the locking mechanism to the XMP parser on initialization. - // Note however that this call itself is still not thread-safe. - Exiv2::XmpParser::initialize(XmpLock::LockUnlock, &xmpLock); - - // Program continues here, subsequent registrations of XMP - // namespaces are serialized using xmpLock. - - } - @endcode - - @return True if the initialization was successful, else false. - */ - static bool initialize(XmpParser::XmpLockFct xmpLockFct =0, void* pLockData =0); - /*! - @brief Terminate the XMP Toolkit and unregister custom namespaces. - - Call this method when the XmpParser is no longer needed to - allow the XMP Toolkit to cleanly shutdown. - */ - static void terminate(); - - private: - /*! - @brief Register a namespace with the XMP Toolkit. - */ - static void registerNs(const std::string& ns, - const std::string& prefix); - /*! - @brief Delete a namespace from the XMP Toolkit. - - XmpProperties::unregisterNs calls this to synchronize namespaces. - */ - static void unregisterNs(const std::string& ns); - - // DATA - static bool initialized_; //! Indicates if the XMP Toolkit has been initialized - static XmpLockFct xmpLockFct_; - static void* pLockData_; - - }; // class XmpParser - -// ***************************************************************************** -// free functions, template and inline definitions - - inline Xmpdatum& Xmpdatum::operator=(const char* value) - { - return Xmpdatum::operator=(std::string(value)); - } - - inline Xmpdatum& Xmpdatum::operator=(const bool& value) - { - return operator=(value ? "True" : "False"); - } - - template - Xmpdatum& Xmpdatum::operator=(const T& value) - { - setValue(Exiv2::toString(value)); - return *this; - } - -} // namespace Exiv2 - -#endif // #ifndef XMP_HPP_ diff --git a/platform/win32/msvc/external/exiv2/src/xmpdump.cpp b/platform/win32/msvc/external/exiv2/src/xmpdump.cpp deleted file mode 100644 index b6bb12a1652..00000000000 --- a/platform/win32/msvc/external/exiv2/src/xmpdump.cpp +++ /dev/null @@ -1,35 +0,0 @@ -// ***************************************************************** -*- C++ -*- -// xmpdump.cpp, $Rev: 1512 $ -// Sample program to dump the XMP packet of an image - -#include "image.hpp" -#include -#include -#include - -int main(int argc, char* const argv[]) -try { - - if (argc != 2) { - std::cout << "Usage: " << argv[0] << " file\n"; - return 1; - } - - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(argv[1]); - assert(image.get() != 0); - image->readMetadata(); - - const std::string& xmpPacket = image->xmpPacket(); - if (xmpPacket.empty()) { - std::string error(argv[1]); - error += ": No XMP packet found in the file"; - throw Exiv2::Error(1, error); - } - std::cout << xmpPacket << "\n"; - - return 0; -} -catch (Exiv2::AnyError& e) { - std::cout << "Caught Exiv2 exception '" << e << "'\n"; - return -1; -} diff --git a/platform/win32/msvc/external/exiv2/src/xmpsidecar.cpp b/platform/win32/msvc/external/exiv2/src/xmpsidecar.cpp deleted file mode 100644 index 81131dc743e..00000000000 --- a/platform/win32/msvc/external/exiv2/src/xmpsidecar.cpp +++ /dev/null @@ -1,214 +0,0 @@ -// ***************************************************************** -*- C++ -*- -/* - * Copyright (C) 2004-2012 Andreas Huggel - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/* - File: xmpsidecar.cpp - Version: $Rev: 2681 $ - Author(s): Andreas Huggel (ahu) - History: 07-Mar-08, ahu: created - Credits: See header file - */ -// ***************************************************************************** -#include "rcsid_int.hpp" -EXIV2_RCSID("@(#) $Id: xmpsidecar.cpp 2681 2012-03-22 15:19:35Z ahuggel $") - -// ***************************************************************************** -// included header files -#ifdef _MSC_VER -# include "exv_msvc.h" -#else -# include "exv_conf.h" -#endif - -#include "xmpsidecar.hpp" -#include "image.hpp" -#include "basicio.hpp" -#include "error.hpp" -#include "xmp.hpp" -#include "futils.hpp" -#include "convert.hpp" - -// + standard includes -#include -#include -#include - -// ***************************************************************************** -namespace { - const char* xmlHeader = "\n"; - const long xmlHdrCnt = 39; // without the trailing 0-character -} - -// class member definitions -namespace Exiv2 { - - - XmpSidecar::XmpSidecar(BasicIo::AutoPtr io, bool create) - : Image(ImageType::xmp, mdXmp, io) - { - if (create) { - if (io_->open() == 0) { - IoCloser closer(*io_); - io_->write(reinterpret_cast(xmlHeader), xmlHdrCnt); - } - } - } // XmpSidecar::XmpSidecar - - std::string XmpSidecar::mimeType() const - { - return "application/rdf+xml"; - } - - void XmpSidecar::setComment(const std::string& /*comment*/) - { - // not supported - throw(Error(32, "Image comment", "XMP")); - } - - void XmpSidecar::readMetadata() - { -#ifdef DEBUG - std::cerr << "Reading XMP file " << io_->path() << "\n"; -#endif - if (io_->open() != 0) { - throw Error(9, io_->path(), strError()); - } - IoCloser closer(*io_); - // Ensure that this is the correct image type - if (!isXmpType(*io_, false)) { - if (io_->error() || io_->eof()) throw Error(14); - throw Error(3, "XMP"); - } - // Read the XMP packet from the IO stream - std::string xmpPacket; - const long len = 64 * 1024; - byte buf[len]; - long l; - while ((l = io_->read(buf, len)) > 0) { - xmpPacket.append(reinterpret_cast(buf), l); - } - if (io_->error()) throw Error(14); - clearMetadata(); - xmpPacket_ = xmpPacket; - if (xmpPacket_.size() > 0 && XmpParser::decode(xmpData_, xmpPacket_)) { -#ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Failed to decode XMP metadata.\n"; -#endif - } - copyXmpToIptc(xmpData_, iptcData_); - copyXmpToExif(xmpData_, exifData_); - } // XmpSidecar::readMetadata - - void XmpSidecar::writeMetadata() - { - if (io_->open() != 0) { - throw Error(9, io_->path(), strError()); - } - IoCloser closer(*io_); - - if (writeXmpFromPacket() == false) { - copyExifToXmp(exifData_, xmpData_); - copyIptcToXmp(iptcData_, xmpData_); - if (XmpParser::encode(xmpPacket_, xmpData_, - XmpParser::omitPacketWrapper|XmpParser::useCompactFormat) > 1) { -#ifndef SUPPRESS_WARNINGS - EXV_ERROR << "Failed to encode XMP metadata.\n"; -#endif - } - } - if (xmpPacket_.size() > 0) { - if (xmpPacket_.substr(0, 5) != "temporary()); // may throw - assert(tempIo.get() != 0); - // Write XMP packet - if ( tempIo->write(reinterpret_cast(xmpPacket_.data()), - static_cast(xmpPacket_.size())) - != static_cast(xmpPacket_.size())) throw Error(21); - if (tempIo->error()) throw Error(21); - io_->close(); - io_->transfer(*tempIo); // may throw - } - } // XmpSidecar::writeMetadata - - // ************************************************************************* - // free functions - Image::AutoPtr newXmpInstance(BasicIo::AutoPtr io, bool create) - { - Image::AutoPtr image(new XmpSidecar(io, create)); - if (!image->good()) { - image.reset(); - } - return image; - } - - bool isXmpType(BasicIo& iIo, bool advance) - { - /* - Check if the file starts with an optional XML declaration followed by - either an XMP header () or an element. - - In addition, in order for empty XmpSidecar objects as created by - Exiv2 to pass the test, just an XML header is also considered ok. - */ - const int32_t len = 80; - byte buf[len]; - iIo.read(buf, xmlHdrCnt + 1); - if ( iIo.eof() - && 0 == strncmp(reinterpret_cast(buf), xmlHeader, xmlHdrCnt)) { - return true; - } - if (iIo.error() || iIo.eof()) { - return false; - } - iIo.read(buf + xmlHdrCnt + 1, len - xmlHdrCnt - 1); - if (iIo.error() || iIo.eof()) { - return false; - } - // Skip leading BOM - int32_t start = 0; - if (0 == strncmp(reinterpret_cast(buf), "\xef\xbb\xbf", 3)) { - start = 3; - } - bool rc = false; - std::string head(reinterpret_cast(buf + start), len - start); - if (head.substr(0, 5) == " 9 - && ( head.substr(0, 9) == " - * - * This program is part of the Exiv2 distribution. - * - * 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., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. - */ -/*! - @file xmpsidecar.hpp - @brief An Image subclass to support XMP sidecar files - @version $Rev: 2681 $ - @author Andreas Huggel - ahuggel@gmx.net - @date 07-Mar-08, ahu: created - */ -#ifndef XMPSIDECAR_HPP_ -#define XMPSIDECAR_HPP_ - -// ***************************************************************************** -// included header files -#include "image.hpp" -#include "basicio.hpp" -#include "types.hpp" - -// + standard includes -#include - -// ***************************************************************************** -// namespace extensions -namespace Exiv2 { - -// ***************************************************************************** -// class definitions - - // Add XMP to the supported image formats - namespace ImageType { - const int xmp = 10; //!< XMP sidecar files (see class XmpSidecar) - } - - /*! - @brief Class to access XMP sidecar files. They contain only XMP metadata. - */ - class EXIV2API XmpSidecar : public Image { - public: - //! @name Creators - //@{ - /*! - @brief Constructor for an XMP sidecar file. Since the constructor - can not return a result, callers should check the good() method - after object construction to determine success or failure. - @param io An auto-pointer that owns a BasicIo instance used for - reading and writing image metadata. \b Important: The constructor - takes ownership of the passed in BasicIo instance through the - auto-pointer. Callers should not continue to use the BasicIo - instance after it is passed to this method. Use the Image::io() - method to get a temporary reference. - @param create Specifies if an existing image should be read (false) - or if a new image should be created (true). - */ - XmpSidecar(BasicIo::AutoPtr io, bool create); - //@} - - //! @name Manipulators - //@{ - void readMetadata(); - void writeMetadata(); - /*! - @brief Not supported. XMP sidecar files do not contain a comment. - Calling this function will throw an instance of Error(32). - */ - void setComment(const std::string& comment); - //@} - - //! @name Accessors - //@{ - std::string mimeType() const; - //@} - - private: - //! @name NOT Implemented - //@{ - //! Copy constructor - XmpSidecar(const XmpSidecar& rhs); - //! Assignment operator - XmpSidecar& operator=(const XmpSidecar& rhs); - //@} - - }; // class XmpSidecar - -// ***************************************************************************** -// template, inline and free functions - - // These could be static private functions on Image subclasses but then - // ImageFactory needs to be made a friend. - /*! - @brief Create a new XmpSidecar instance and return an auto-pointer to it. - Caller owns the returned object and the auto-pointer ensures that - it will be deleted. - */ - EXIV2API Image::AutoPtr newXmpInstance(BasicIo::AutoPtr io, bool create); - - //! Check if the file iIo is an XMP sidecar file. - EXIV2API bool isXmpType(BasicIo& iIo, bool advance); - -} // namespace Exiv2 - -#endif // #ifndef XMPSIDECAR_HPP_ diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/include/MD5.h b/platform/win32/msvc/external/exiv2/xmpsdk/include/MD5.h deleted file mode 100644 index 00a5e94a5b0..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/include/MD5.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef __MD5_h__ -#define __MD5_h__ - -/* - * This is the header file for the MD5 message-digest algorithm. - * The algorithm is due to Ron Rivest. This code was - * written by Colin Plumb in 1993, no copyright is claimed. - * This code is in the public domain; do with it what you wish. - * - * Equivalent code is available from RSA Data Security, Inc. - * This code has been tested against that, and is equivalent, - * except that you don't need to include two pages of legalese - * with every copy. - * - * To compute the message digest of a chunk of bytes, declare an - * MD5_CTX structure, pass it to MD5Init, call MD5Update as - * needed on buffers full of bytes, and then call MD5Final, which - * will fill a supplied 16-byte array with the digest. - * - * Changed so as no longer to depend on Colin Plumb's `usual.h' - * header definitions; now uses stuff from dpkg's config.h - * - Ian Jackson . - * Still in the public domain. - */ - -#include -#ifdef EXV_HAVE_STDINT_H -# include -#endif - -/* MSVC doesn't provide C99 types, but it has MS specific variants */ -#ifdef _MSC_VER -typedef unsigned __int32 uint32_t; -#endif - -typedef unsigned char md5byte; -typedef uint32_t UWORD32; - -struct MD5_CTX { - UWORD32 buf[4]; - UWORD32 bytes[2]; - UWORD32 in[16]; -}; - -extern void MD5Init(struct MD5_CTX *context); -extern void MD5Update(struct MD5_CTX *context, md5byte const *buf, unsigned len); -extern void MD5Final(unsigned char digest[16], struct MD5_CTX *context); -extern void MD5Transform(UWORD32 buf[4], UWORD32 const in[16]); - -#endif diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/include/TXMPIterator.hpp b/platform/win32/msvc/external/exiv2/xmpsdk/include/TXMPIterator.hpp deleted file mode 100644 index 8c90fce1bc6..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/include/TXMPIterator.hpp +++ /dev/null @@ -1,235 +0,0 @@ -#ifndef __TXMPIterator_hpp__ -#define __TXMPIterator_hpp__ 1 - -#if ( ! __XMP_hpp__ ) - #error "Do not directly include, use XMPSDK.hpp" -#endif - -// ================================================================================================= -// ADOBE SYSTEMS INCORPORATED -// Copyright 2002-2007 Adobe Systems Incorporated -// All Rights Reserved -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -// ================================================================================================= -/// \file TXMPIterator.hpp -/// \brief API for access to the XMP Toolkit iteration services. -/// -/// \c TXMPIterator is the template class providing iteration services for the XMP Toolkit. It must -/// be instantiated with a string class such as \c std::string. See the instructions in XMPSDK.hpp, and -/// the Overview for a discussion of the overall architecture of the XMP API. -// ================================================================================================= - -// ================================================================================================= -/// \class TXMPIterator TXMPIterator.hpp -/// @brief API for access to the XMP Toolkit iteration services. -/// -/// \c TXMPIterator provides a uniform means to iterate over the schema and properties within an XMP -/// object. \c TXMPIterator is a template class which must be instantiated with a string class such -/// as \c std::string. See the instructions in XMPSDK.hpp, and the Overview for a discussion of the -/// overall architecture of the XMP API. Access these functions through the concrete class, -/// \c SXMPIterator. -/// -/// @note Only XMP object iteration is currently available. Future development may include iteration -/// over global tables, such as registered namespaces. -/// -/// To understand how iteration works, you should have a thorough understanding of the XMP data -/// tree, as described in the XMP Specification Part 1. You might also find it helpful to create -/// some complex XMP and examine the output of \c TXMPMeta::DumpObject(). -/// -/// \li The top of the XMP data tree is a single root node. This does not explicitly appear in the -/// dump and is never visited by an iterator; that is, it is never returned from -/// \c TXMPIterator::Next(). -/// -/// \li Beneath the root are schema nodes; these collect the top-level properties in the same -/// namespace. They are created and destroyed implicitly. -/// -/// \li Beneath the schema nodes are the property nodes. The nodes below a property node depend on -/// its type (simple, struct, or array) and whether it has qualifiers. -/// -/// A \c TXMPIterator constructor defines a starting point for the iteration, and options that -/// control how it proceeds. By default, iteration starts at the root and visits all nodes beneath -/// it in a depth-first manner. The root node iteself is not visited; the first visited node is a -/// schema node. You can provide a schema name or property path to select a different starting node. -/// By default, this visits the named root node first then all nodes beneath it in a depth-first -/// manner. -/// -/// The function \c TXMPIterator::Next() delivers the schema URI, path, and option flags for the -/// node being visited. If the node is simple, it also delivers the value. Qualifiers for this node -/// are visited next. The fields of a struct or items of an array are visited after the qualifiers -/// of the parent. -/// -/// You can specify options when contructing the iteration object to control how the iteration is -/// performed. -/// -/// \li \c #kXMP_IterJustChildren - Visit just the immediate children of the root. Skip the root -/// itself and all nodes below the immediate children. This omits the qualifiers of the immediate -/// children, the qualifier nodes being below what they qualify. -/// \li \c #kXMP_IterJustLeafNodes - Visit just the leaf property nodes and their qualifiers. -/// \li \c #kXMP_IterJustLeafName - Return just the leaf component of the node names. The default -/// is to return the full path name. -/// \li \c #kXMP_IterIncludeAliases - Include aliases as part of the iteration. Since aliases are -/// not actual nodes the default iteration does not visit them. -/// \li \c #kXMP_IterOmitQualifiers - Do not visit the qualifiers of a node. -// ================================================================================================= - -#include "client-glue/WXMPIterator.hpp" - -template class TXMPIterator { - -public: - - // --------------------------------------------------------------------------------------------- - /// @brief Assignment operator, assigns the internal ref and increments the ref count. - /// - /// Assigns the internal reference from an existing object and increments the reference count on - /// the underlying internal XMP iterator. - /// - /// @param rhs An existing iteration object. - - void operator= ( const TXMPIterator & rhs ); - - // --------------------------------------------------------------------------------------------- - /// @brief Copy constructor, creates a client object refering to the same internal object. - /// - /// Creates a new client iterator that refers to the same underlying iterator as an existing object. - /// - /// @param original An existing iteration object to copy. - - TXMPIterator ( const TXMPIterator & original ); - - // --------------------------------------------------------------------------------------------- - /// @brief Constructs an iterator for properties within a schema in an XMP object. - /// - /// See the class description for the general operation of an XMP object iterator. - /// Overloaded forms are provided to iterate the entire data tree, - /// a subtree rooted at a specific node, or properties within a specific schema. - /// - /// @param xmpObj The XMP object over which to iterate. - /// - /// @param schemaNS Optional schema namespace URI to restrict the iteration. To visit all of the - /// schema, pass 0 or the empty string "". - /// - /// @param propName Optional property name to restrict the iteration. May be an arbitrary path - /// expression. If provided, a schema URI must also be provided. To visit all properties, pass 0 - /// or the empty string "". - /// - /// @param options Option flags to control the iteration. A logical OR of these bit flag constants: - /// \li \c #kXMP_IterJustChildren - Visit only the immediate children of the root; default visits subtrees. - /// \li \c #kXMP_IterJustLeafNodes - Visit only the leaf nodes; default visits all nodes. - /// \li \c #kXMP_IterJustLeafName - Return just the leaf part of the path; default returns the full path. - /// \li \c #kXMP_IterOmitQualifiers - Omit all qualifiers. - /// - /// @return The new TXMPIterator object. - - TXMPIterator ( const TXMPMeta & xmpObj, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_OptionBits options = 0 ); - - // --------------------------------------------------------------------------------------------- - /// @brief Constructs an iterator for a subtree of properties within an XMP object. - /// - /// See the class description for the general operation of an XMP object iterator. Overloaded - /// forms are provided to iterate the entire data tree, a subtree rooted at a specific node, or - /// properties within a specific schema. - /// - /// @param xmpObj The XMP object over which to iterate. - /// - /// @param schemaNS Optional schema namespace URI to restrict the iteration. To visit all of the - /// schema, pass 0 or the empty string "". - /// - /// @param options Option flags to control the iteration. A logical OR of these bit flag constants: - /// \li \c #kXMP_IterJustChildren - Visit only the immediate children of the root; default visits subtrees. - /// \li \c #kXMP_IterJustLeafNodes - Visit only the leaf nodes; default visits all nodes. - /// \li \c #kXMP_IterJustLeafName - Return just the leaf part of the path; default returns the full path. - /// \li \c #kXMP_IterOmitQualifiers - Omit all qualifiers. - /// - /// @return The new TXMPIterator object. - - TXMPIterator ( const TXMPMeta & xmpObj, - XMP_StringPtr schemaNS, - XMP_OptionBits options = 0 ); - - // --------------------------------------------------------------------------------------------- - /// @brief Constructs an iterator for the entire data tree within an XMP object. - /// - /// See the class description for the general operation of an XMP object iterator. Overloaded - /// forms are provided to iterate the entire data tree, a subtree rooted at a specific node, or - /// properties within a specific schema. - /// - /// @param xmpObj The XMP object over which to iterate. - /// - /// @param options Option flags to control the iteration. A logical OR of these bit flag constants: - /// \li \c #kXMP_IterJustChildren - Visit only the immediate children of the root; default visits subtrees. - /// \li \c #kXMP_IterJustLeafNodes - Visit only the leaf nodes; default visits all nodes. - /// \li \c #kXMP_IterJustLeafName - Return just the leaf part of the path; default returns the full path. - /// \li \c #kXMP_IterOmitQualifiers - Omit all qualifiers. - /// - /// @return The new \c TXMPIterator object. - - TXMPIterator ( const TXMPMeta & xmpObj, - XMP_OptionBits options = 0 ); - - // --------------------------------------------------------------------------------------------- - /// @brief Constructs an iterator for the global tables of the XMP toolkit. Not implemented. - - TXMPIterator ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_OptionBits options ); - - // --------------------------------------------------------------------------------------------- - /// @brief Destructor, typical virtual destructor. - - virtual ~TXMPIterator() throw(); - - // --------------------------------------------------------------------------------------------- - /// @brief \c Next() visits the next node in the iteration. - /// - /// Proceeds to the next node according to the options specified on creation of this object, and - /// delivers the schema URI, path, and option flags for the node being visited. If the node is - /// simple, it also delivers the value. - /// - /// @param schemaNS [out] A string object in which to return the assigned the schema namespace - /// URI of the current property. Can be null if the value is not wanted. - /// - /// @param propPath [out] A string object in which to return the XPath name of the current - /// property. Can be null if the value is not wanted. - /// - /// @param propValue [out] A string object in which to return the value of the current - /// property. Can be null if the value is not wanted. - /// - /// @param options [out] A buffer in which to return the flags describing the current property, - /// which are a logical OR of \c #XMP_OptionBits bit-flag constants. - /// - /// @return True if there was another node to visit, false if the iteration is complete. - - bool Next ( tStringObj * schemaNS = 0, - tStringObj * propPath = 0, - tStringObj * propValue = 0, - XMP_OptionBits * options = 0 ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c Skip() skips some portion of the remaining iterations. - /// - /// @param options Option flags to control the iteration, a logical OR of these bit-flag - /// constants: - /// \li \c #kXMP_IterSkipSubtree - Skip the subtree below the current node. - /// \li \c #kXMP_IterSkipSiblings - Skip the subtree below and remaining siblings of the current node. - - void Skip ( XMP_OptionBits options ); - -private: - - XMPIteratorRef iterRef; - - TXMPIterator(); // ! Hidden, must choose property or table iteration. - -}; // class TXMPIterator - -// ================================================================================================= - -#endif // __TXMPIterator_hpp__ diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/include/TXMPMeta.hpp b/platform/win32/msvc/external/exiv2/xmpsdk/include/TXMPMeta.hpp deleted file mode 100644 index 0bf04e15ac2..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/include/TXMPMeta.hpp +++ /dev/null @@ -1,1803 +0,0 @@ -#ifndef __TXMPMeta_hpp__ -#define __TXMPMeta_hpp__ 1 - -#if ( ! __XMP_hpp__ ) - #error "Do not directly include, use XMPSDK.hpp" -#endif - -// ================================================================================================= -// ADOBE SYSTEMS INCORPORATED -// Copyright 2002-2008 Adobe Systems Incorporated -// All Rights Reserved -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -// ================================================================================================= -/// \file TXMPMeta.hpp -/// \brief API for access to the XMP Toolkit core services. -/// -/// \c TXMPMeta is the template class providing the core services of the XMP Toolkit. It must be -/// instantiated with a string class such as \c std::string. Read the Toolkit Overview for -/// information about the overall architecture of the XMP API, and the documentation for \c XMPSDK.hpp -/// for specific instantiation instructions. -/// -/// Access these functions through the concrete class, \c SXMPMeta. -// ================================================================================================= - -// ================================================================================================= -/// \class TXMPMeta TXMPMeta.hpp -/// \brief API for access to the XMP Toolkit core services. -/// -/// \c TXMPMeta is the template class providing the core services of the XMP Toolkit. It should be -/// instantiated with a string class such as \c std::string. Read the Toolkit Overview for -/// information about the overall architecture of the XMP API, and the documentation for \c XMPSDK.hpp -/// for specific instantiation instructions. -/// -/// Access these functions through the concrete class, \c SXMPMeta. -/// -/// You can create \c TXMPMeta objects (also called XMP objects) from metadata that you construct, -/// or that you obtain from files using the XMP Toolkit's XMPFiles component; see \c TXMPFiles.hpp. -// ================================================================================================= - -template class TXMPIterator; -template class TXMPUtils; - -// ------------------------------------------------------------------------------------------------- - -template class TXMPMeta { - -public: - - // ============================================================================================= - // Initialization and termination - // ============================== - - // --------------------------------------------------------------------------------------------- - /// \name Initialization and termination - /// - /// @{ - - // --------------------------------------------------------------------------------------------- - /// @brief \c GetVersionInfo() retrieves runtime version information. - /// - /// The header \c XMPVersion.hpp defines a static version number for the XMP Toolkit, which - /// describes the version of the API used at client compile time. It is not necessarily the same - /// as the runtime version. Do not base runtime decisions on the static version alone; you can, - /// however, compare the runtime and static versions. - /// - /// This function is static; make the call directly from the concrete class (\c SXMPMeta). The - /// function can be called before calling \c TXMPMeta::Initialize(). - /// - /// @param info [out] A buffer in which to return the version information. - - static void GetVersionInfo ( XMP_VersionInfo * info ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c Initialize() explicitly initializes the XMP Toolkit before use. */ - - /// Initializes the XMP Toolkit. - /// - /// Call this function before making any other calls to the \c TXMPMeta functions, except - /// \c TXMPMeta::GetVersionInfo(). - /// - /// This function is static; make the call directly from the concrete class (\c SXMPMeta). - /// - /// @return True on success. */ - static bool Initialize(); - // --------------------------------------------------------------------------------------------- - /// @brief \c Terminate() explicitly terminates usage of the XMP Toolkit. - /// - /// Frees structures created on initialization. - /// - /// This function is static; make the call directly from the concrete class (\c SXMPMeta). - - static void Terminate(); - - /// @} - - // ============================================================================================= - // Constuctors and destructor - // ========================= - - // --------------------------------------------------------------------------------------------- - /// \name Constructors and destructor - /// @{ - - // --------------------------------------------------------------------------------------------- - /// @brief Default constructor, creates an empty object. - /// - /// The default constructor creates a new empty \c TXMPMeta object. - /// - /// @return The new object. */ - TXMPMeta(); - - // --------------------------------------------------------------------------------------------- - /// @brief Copy constructor, creates a client object refering to the same internal object. - /// - /// The copy constructor creates a new \c TXMPMeta object that refers to the same internal XMP - /// object. as an existing \c TXMPMeta object. - /// - /// @param original The object to copy. - /// - /// @return The new object. */ - - TXMPMeta ( const TXMPMeta & original ); - - // --------------------------------------------------------------------------------------------- - /// @brief Assignment operator, assigns the internal reference and increments the reference count. - /// - /// The assignment operator assigns the internal ref from the rhs object and increments the - /// reference count on the underlying internal XMP object. - - void operator= ( const TXMPMeta & rhs ); - - // --------------------------------------------------------------------------------------------- - /// @brief Reconstructs an XMP object from an internal reference. - /// - /// This constructor creates a new \c TXMPMeta object that refers to the underlying reference object - /// of an existing \c TXMPMeta object. Use to safely pass XMP objects across DLL boundaries. - /// - /// @param xmpRef The underlying reference object, obtained from some other XMP object with - /// \c TXMPMeta::GetInternalRef(). - /// - /// @return The new object. - - TXMPMeta ( XMPMetaRef xmpRef ); - - // --------------------------------------------------------------------------------------------- - /// @brief Constructs an object and parse one buffer of RDF into it. - /// - /// This constructor creates a new \c TXMPMeta object and populates it with metadata from a - /// buffer containing serialized RDF. This buffer must be a complete RDF parse stream. - /// - /// The result of passing serialized data to this function is identical to creating an empty - /// object then calling \c TXMPMeta::ParseFromBuffer(). To use the constructor, however, the RDF - /// must be complete. If you need to parse data from multiple buffers, create an empty object - /// and use \c TXMPMeta::ParseFromBuffer(). - /// - /// @param buffer A pointer to the buffer of RDF to be parsed. Can be null if the length is 0; - /// in this case, the function creates an empty object. - /// - /// @param xmpSize The length in bytes of the buffer. - /// - /// @return The new object. - - TXMPMeta ( XMP_StringPtr buffer, - XMP_StringLen xmpSize ); - - // --------------------------------------------------------------------------------------------- - /// @brief Destructor, typical virtual destructor. */ - virtual ~TXMPMeta() throw(); - - /// @} - - // ============================================================================================= - // Global state functions - // ====================== - - // --------------------------------------------------------------------------------------------- - /// \name Global option flags - /// @{ - /// Global option flags affect the overall behavior of the XMP Toolkit. The available options - /// will be declared in \c XMP_Const.h. There are none in this version of the Toolkit. - - // --------------------------------------------------------------------------------------------- - /// @brief \c GetGlobalOptions() retrieves the set of global option flags. There are none in - /// this version of the Toolkit. - /// - /// This function is static; you can make the call from the class without instantiating it. - /// - /// @return A logical OR of global option bit-flag constants. - - static XMP_OptionBits GetGlobalOptions(); - - // --------------------------------------------------------------------------------------------- - /// @brief \c SetGlobalOptions() updates the set of global option flags. There are none in this - /// version of the Toolkit. - /// - /// The entire set is replaced with the new values. If only one flag is to be modified, use - /// \c TXMPMeta::GetGlobalOptions() to obtain the current set, modify the desired flag, then use - /// this function to reset the value. - /// - /// This function is static; you can make the call from the class without instantiating it. - /// - /// @param options A logical OR of global option bit-flag constants. - - static void SetGlobalOptions ( XMP_OptionBits options ); - - /// @} - - // --------------------------------------------------------------------------------------------- - /// \name Internal data structure dump utilities - /// @{ - /// - /// These are debugging utilities that dump internal data structures, to be handled by - /// client-defined callback described in \c XMP_Const.h. - /// - /// @see Member function \c TXMPMeta::DumpObject() - - // --------------------------------------------------------------------------------------------- - /// @brief \c DumpNamespaces() sends the list of registered namespace URIs and prefixes to a handler. - /// - /// For debugging. Invokes a client-defined callback for each line of output. - /// - /// This function is static; make the call directly from the concrete class (\c SXMPMeta). - /// - /// @param outProc The client-defined procedure to handle each line of output. - /// - /// @param clientData A pointer to client-defined data to pass to the handler. - /// - /// @return A success-fail status value, returned from the handler. Zero is success, failure - /// values are client-defined. - - static XMP_Status DumpNamespaces ( XMP_TextOutputProc outProc, - void * clientData ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c DumpAliases() sends the list of registered aliases and corresponding actuals to a handler. - /// - /// For debugging. Invokes a client-defined callback for each line of output. - /// - /// This function is static; make the call directly from the concrete class (\c SXMPMeta). - /// - /// @param outProc The client-defined procedure to handle each line of output. - /// - /// @param clientData A pointer to client-defined data to pass to the handler. - /// - /// @return A success-fail status value, returned from the handler. Zero is success, failure - /// values are client-defined. - - static XMP_Status DumpAliases ( XMP_TextOutputProc outProc, - void * clientData ); - - /// @} - - // --------------------------------------------------------------------------------------------- - /// \name Namespace Functions - /// @{ - /// - /// Namespaces must be registered before use in namespace URI parameters or path expressions. - /// Within the XMP Toolkit the registered namespace URIs and prefixes must be unique. Additional - /// namespaces encountered when parsing RDF are automatically registered. - /// - /// The namespace URI should always end in an XML name separator such as '/' or '#'. This is - /// because some forms of RDF shorthand catenate a namespace URI with an element name to form a - /// new URI. - - // --------------------------------------------------------------------------------------------- - /// @brief \c RegisterNamespace() registers a namespace URI with a prefix. - /// - /// If the the prefix is in use, the URI of the existing prefix is overwritten. - /// - /// This function is static; make the call directly from the concrete class (\c SXMPMeta). - /// - /// @param namespaceURI The URI for the namespace. Must be a valid XML URI. - /// - /// @param prefix The prefix to be used. Must be a valid XML name. - /// - /// @note No checking is done on either the URI or the prefix. */ - - static void RegisterNamespace ( XMP_StringPtr namespaceURI, - XMP_StringPtr prefix ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c GetNamespacePrefix() obtains the prefix for a registered namespace URI, and - /// reports whether the URI is registered. - /// - /// This function is static; make the call directly from the concrete class (\c SXMPMeta). - /// - /// @param namespaceURI The URI for the namespace. Must not be null or the empty string. It is - /// not an error if the namespace URI is not registered. - /// - /// @param namespacePrefix [out] A string object in which to return the prefix registered for - /// this URI, with a terminating colon character, ':'. If the namespace is not registered, this - /// string is not modified. - /// - /// @return True if the namespace URI is registered. - - static bool GetNamespacePrefix ( XMP_StringPtr namespaceURI, - tStringObj * namespacePrefix ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c GetNamespaceURI() obtains the URI for a registered namespace prefix, and reports - /// whether the prefix is registered. - /// - /// This function is static; make the call directly from the concrete class (\c SXMPMeta). - /// - /// @param namespacePrefix The prefix for the namespace. Must not be null or the empty string. - /// It is not an error if the namespace prefix is not registered. - /// - /// @param namespaceURI [out] A string object in which to return the URI registered for this - /// prefix. If the prefix is not registered, this string is not modified. - /// - /// @return True if the namespace prefix is registered. - - static bool GetNamespaceURI ( XMP_StringPtr namespacePrefix, - tStringObj * namespaceURI ); - - // --------------------------------------------------------------------------------------------- - /// @brief Not implemented. - /// - /// Deletes a namespace from the registry. Does nothing if the URI is not registered, or if the - /// parameter is null or the empty string. - /// - /// This function is static; make the call directly from the concrete class (\c SXMPMeta). - /// - /// @param namespaceURI The URI for the namespace. - - static void DeleteNamespace ( XMP_StringPtr namespaceURI ); - - /// @} - - // --------------------------------------------------------------------------------------------- - /// \name Alias functions - /// @{ - /// - /// Aliases in XMP serve the same purpose as Windows file shortcuts, Mac OS file aliases, or - /// UNIX file symbolic links. The aliases are multiple names for the same property. One - /// distinction of XMP aliases is that they are ordered. An alias name points to an actual name; - /// the primary significance of the actual name is that it is the preferred name for output, - /// generally the most widely recognized name. - /// - /// XMP restricts the names that can be aliased. The alias must be a top-level property name, - /// not a field within a structure or an element within an array. The actual can be a top-level - /// property name, the first element within a top-level array, or the default element in an - /// alt-text array. This does not mean the alias can only be a simple property; you can alias a - /// top-level structure or array to an identical top-level structure or array, or to the first - /// item of an array of structures. - - // --------------------------------------------------------------------------------------------- - /// @brief \c RegisterAlias() associates an alias name with an actual name. - /// - /// Defines an alias mapping from one namespace/property to another. Both property names must be - /// simple names. An alias can be a direct mapping, where the alias and actual have the same - /// data type. It is also possible to map a simple alias to an item in an array. This can either - /// be to the first item in the array, or to the 'x-default' item in an alt-text array. Multiple - /// alias names can map to the same actual, as long as the forms match. It is a no-op to - /// reregister an alias in an identical fashion. - /// - /// This function is static; make the call directly from the concrete class (\c SXMPMeta). - /// - /// @param aliasNS The namespace URI for the alias. Must not be null or the empty string. - /// - /// @param aliasProp The name of the alias. Must be a simple name, not null or the empty string - /// and not a general path expression. - /// - /// @param actualNS The namespace URI for the actual. Must not be null or the empty string. - /// - /// @param actualProp The name of the actual. Must be a simple name, not null or the empty string - /// and not a general path expression. - /// - /// @param arrayForm Provides the array form for simple aliases to an array item. This is needed - /// to know what kind of array to create if set for the first time via the simple alias. Pass - /// \c #kXMP_NoOptions, the default value, for all direct aliases regardless of whether the actual - /// data type is an array or not. One of these constants: - /// - /// \li \c #kXMP_NoOptions - This is a direct mapping. The actual data type does not matter. - /// \li \c #kXMP_PropValueIsArray - The actual is an unordered array, the alias is to the - /// first element of the array. - /// \li \c #kXMP_PropArrayIsOrdered - The actual is an ordered array, the alias is to the - /// first element of the array. - /// \li \c #kXMP_PropArrayIsAlternate - The actual is an alternate array, the alias is to the - /// first element of the array. - /// \li \c #kXMP_PropArrayIsAltText - The actual is an alternate text array, the alias is to - /// the 'x-default' element of the array. */ - - static void RegisterAlias ( XMP_StringPtr aliasNS, - XMP_StringPtr aliasProp, - XMP_StringPtr actualNS, - XMP_StringPtr actualProp, - XMP_OptionBits arrayForm = kXMP_NoOptions ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c ResolveAlias() reports whether a name is an alias, and what it is aliased to. - /// - /// Output strings are not written until return, so you can use this to - /// "reduce" a path to the base form as follows: - ///
-    ///   isAlias = SXMPMeta::ResolveAlias ( ns.c_str(), path.c_str(), &ns, &path, 0 );
-    /// 
- /// This function is static; make the call directly from the concrete class (\c SXMPMeta). - /// - /// @param aliasNS The namespace URI for the alias. Must not be null or the empty string. - /// - /// @param aliasProp The name of the alias. Can be an arbitrary path expression path, must not - /// null or the empty string. - /// - /// @param actualNS [out] A string object in which to return the namespace URI for the actual. - /// Not modified if the given name is not an alias. Can be null if the namespace URI is not wanted. - /// - /// @param actualProp [out] A string object in which to return the path of the actual. - /// Not modified if the given name is not an alias. Can be null if the actual's path is not wanted. - /// - /// @param arrayForm [out] A string object in which to return the array form of the actual. This - /// is 0 (\c #kXMP_NoOptions) if the alias and actual forms match, otherwise it is the options - /// passed to \c TXMPMeta::RegisterAlias(). Not modified if the given name is not an alias. Can - /// be null if the actual's array form is not wanted. - /// - /// @return True if the provided name is an alias. - - static bool ResolveAlias ( XMP_StringPtr aliasNS, - XMP_StringPtr aliasProp, - tStringObj * actualNS, - tStringObj * actualProp, - XMP_OptionBits * arrayForm ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c DeleteAlias() deletes an alias. - /// - /// This deletes only the registration of the alias, it does not delete the actual property. - /// It deletes any view of the property through the alias name. - /// - /// This function is static; make the call directly from the concrete class (\c SXMPMeta). - /// - /// @param aliasNS The namespace URI for the alias. Must not be null or the empty string. - /// - /// @param aliasProp The name of the alias. Must be a simple name, not null or the empty string - /// and not a general path expression. It is not an error to provide - /// a name that has not been registered as an alias. - - static void DeleteAlias ( XMP_StringPtr aliasNS, - XMP_StringPtr aliasProp ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c RegisterStandardAliases() registers all of the built-in aliases for a standard namespace. - /// - /// The built-in aliases are documented in the XMP Specification. This function registers the - /// aliases in the given namespace; that is, it creates the aliases from this namespace to - /// actuals in other namespaces. - /// - /// This function is static; make the call directly from the concrete class (\c SXMPMeta). - /// - /// @param schemaNS The namespace URI for the aliases. Must not be null or the empty string. - - static void RegisterStandardAliases ( XMP_StringPtr schemaNS ); - - /// @} - - // ============================================================================================= - // Basic property manipulation functions - // ===================================== - - // *** Should add discussion of schemaNS and propName prefix usage. - - // --------------------------------------------------------------------------------------------- - /// \name Accessing property values - /// @{ - /// - /// The property value accessors all take a property specification; the top level namespace URI - /// (the "schema" namespace) and the basic name of the property being referenced. See the - /// introductory discussion of path expression usage for more information. - /// - /// The accessor functions return true if the specified property exists. If it does, output - /// parameters return the value (if any) and option flags describing the property. The option - /// bit-flag constants that describe properties are \c kXMP_PropXx and - /// \c kXMP_ArrayIsXx. See \c #kXMP_PropValueIsURI and following, and macros \c #XMP_PropIsSimple - /// and following in \c XMP_Const.h. If the property exists and has a value, it is returned as a - /// Unicode string in UTF-8 encoding. Arrays and the non-leaf levels of structs do not have - /// values. - - // --------------------------------------------------------------------------------------------- - /// @brief \c GetProperty() reports whether a property exists, and retrieves its value. - /// - /// This is the simplest property accessor. Use this to retrieve the values of top-level simple - /// properties, or after using the path composition functions in \c TXMPUtils. - /// - /// When specifying a namespace and path (in this and all other accessors): - /// \li If a namespace URI is specified, it must be for a registered namespace. - /// \li If the namespace is specified only by a prefix in the property name path, - /// it must be a registered prefix. - /// \li If both a URI and path prefix are present, they must be corresponding - /// parts of a registered namespace. - /// - /// @param schemaNS The namespace URI for the property. The URI must be for a registered - /// namespace. Can be null or the empty string if the first component of the \c propName path - /// contains a namespace prefix. - /// - /// @param propName The name of the property. Can be a general path expression, must not be null - /// or the empty string. The first component can be a namespace prefix; if present without a - /// \c schemaNS value, the prefix specifies the namespace. The prefix must be for a registered - /// namespace, and if a namespace URI is specified, must match the registered prefix for that - /// namespace. - /// - /// @param propValue [out] A string object in which to return the value of the property, if the - /// property exists and has a value. Arrays and non-leaf levels of structs do not have values. - /// Can be null if the value is not wanted. - /// - /// @param options A buffer in which to return option flags describing the property. Can be null - /// if the flags are not wanted. - /// - /// @return True if the property exists. - - bool GetProperty ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - tStringObj * propValue, - XMP_OptionBits * options ) const; - - // --------------------------------------------------------------------------------------------- - /// @brief \c GetArrayItem() provides access to items within an array. - /// - /// Reports whether the item exists; if it does, and if it has a value, the function retrieves - /// the value. Items are accessed by an integer index, where the first item has index 1. - /// - /// @param schemaNS The namespace URI for the array; see \c GetProperty(). - /// - /// @param arrayName The name of the array. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param itemIndex The 1-based index of the desired item. Use the macro \c #kXMP_ArrayLastItem - /// to specify the last existing array item. - /// - /// @param itemValue [out] A string object in which to return the value of the array item, if it - /// has a value. Arrays and non-leaf levels of structs do not have values. Can be null if the - /// value is not wanted. - /// - /// @param options [out] A buffer in which to return the option flags describing the array item. - /// Can be null if the flags are not wanted. - /// - /// @return True if the array item exists. - - bool GetArrayItem ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - tStringObj * itemValue, - XMP_OptionBits * options ) const; - - // --------------------------------------------------------------------------------------------- - /// @brief \c GetStructField() provides access to fields within a nested structure. - /// - /// Reports whether the field exists; if it does, and if it has a value, the function retrieves - /// the value. - /// - /// @param schemaNS The namespace URI for the struct; see \c GetProperty(). - /// - /// @param structName The name of the struct. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param fieldNS The namespace URI for the field. Same URI and prefix usage as the \c schemaNS - /// and \c structName parameters. - /// - /// @param fieldName The name of the field. Must be a single XML name, must not be null or the - /// empty string. Same URI and prefix usage as the \c schemaNS and \c structName parameters. - /// - /// @param fieldValue [out] A string object in which to return the value of the field, if the - /// field has a value. Arrays and non-leaf levels of structs do not have values. Can be null if - /// the value is not wanted. - /// - /// @param options [out] A buffer in which to return the option flags describing the field. Can - /// be null if the flags are not wanted. - /// - /// @return True if the field exists. - - bool GetStructField ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - tStringObj * fieldValue, - XMP_OptionBits * options ) const; - - // --------------------------------------------------------------------------------------------- - /// @brief \c GetQualifier() provides access to a qualifier attached to a property. - /// - /// @note In this version of the Toolkit, qualifiers are supported only for simple leaf properties. - /// - /// @param schemaNS The namespace URI; see \c GetProperty(). - /// - /// @param propName The name of the property to which the qualifier is attached. Can be a - /// general path expression, must not be null or the empty string; see \c GetProperty() for - /// namespace prefix usage. - /// - /// @param qualNS The namespace URI for the qualifier. Same URI and prefix usage as the - /// \c schemaNS and \c propName parameters. - /// - /// @param qualName The name of the qualifier. Must be a single XML name, must not be null or - /// the empty string. Same URI and prefix usage as the \c schemaNS and \c propName parameters. - /// - /// @param qualValue [out] A string object in which to return the value of the qualifier, if the - /// qualifier has a value. Arrays and non-leaf levels of structs do not have values. Can be null - /// if the value is not wanted. - /// - /// @param options [out] A buffer in which to return the option flags describing the qualifier. - /// Can be null if the flags are not wanted. - /// - /// @return True if the qualifier exists. - - bool GetQualifier ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - tStringObj * qualValue, - XMP_OptionBits * options ) const; - - /// @} - - // ============================================================================================= - - // --------------------------------------------------------------------------------------------- - /// \name Creating properties and setting their values - /// @{ - /// - /// These functions all take a property specification; the top level namespace URI (the "schema" - /// namespace) and the basic name of the property being referenced. See the introductory - /// discussion of path expression usage for more information. - /// - /// All of the functions take a UTF-8 encoded Unicode string for the property value. Arrays and - /// non-leaf levels of structs do not have values. The value can be passed as an - /// \c #XMP_StringPtr (a pointer to a null-terminated string), or as a string object - /// (\c tStringObj). - - /// Each function takes an options flag that describes the property. You can use these functions - /// to create empty arrays and structs by setting appropriate option flags. When you assign a - /// value, all levels of a struct that are implicit in the assignment are created if necessary. - /// \c TXMPMeta::AppendArrayItem() implicitly creates the named array if necessary. - /// - /// The allowed option bit-flags include: - /// \li \c #kXMP_PropValueIsStruct - Can be used to create an empty struct. - /// A struct is implicitly created when the first field is set. - /// \li \c #kXMP_PropValueIsArray - By default, a general unordered array (bag). - /// \li \c #kXMP_PropArrayIsOrdered - An ordered array. - /// \li \c #kXMP_PropArrayIsAlternate - An alternative array. - /// \li \c #kXMP_PropArrayIsAltText - An alt-text array. Each array element must - /// be a simple property with an \c xml:lang attribute. - - // --------------------------------------------------------------------------------------------- - /// @brief \c SetProperty() creates or sets a property value. - /// - /// This is the simplest property setter. Use it for top-level simple properties, or after using - /// the path composition functions in \c TXMPUtils. - /// - /// @param schemaNS The namespace URI; see \c GetProperty(). - /// - /// @param propName The name of the property. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param propValue The new value, a pointer to a null terminated UTF-8 string. Must be null - /// for arrays and non-leaf levels of structs that do not have values. - /// - /// @param options Option flags describing the property; a logical OR of allowed bit-flag - /// constants; see \c #kXMP_PropValueIsStruct and following. Must match the type of a property - /// that already exists. - - void SetProperty ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr propValue, - XMP_OptionBits options = 0 ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c SetProperty() creates or sets a property value using a string object. - /// - /// Overloads the basic form of the function, allowing you to pass a string object - /// for the item value. It is otherwise identical; see details in the canonical form. - - void SetProperty ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - const tStringObj & propValue, - XMP_OptionBits options = 0 ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c SetArrayItem() creates or sets the value of an item within an array. - /// - /// Items are accessed by an integer index, where the first item has index 1. This function - /// creates the item if necessary, but the array itself must already exist Use - /// \c AppendArrayItem() to create arrays. A new item is automatically appended if the index is the - /// array size plus 1. To insert a new item before or after an existing item, use option flags. - /// - /// Use \c TXMPUtils::ComposeArrayItemPath() to create a complex path. - /// - /// @param schemaNS The namespace URI; see \c GetProperty(). - /// - /// @param arrayName The name of the array. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param itemIndex The 1-based index of the desired item. Use the macro \c #kXMP_ArrayLastItem - /// to specify the last existing array item. - /// - /// @param itemValue The new item value, a null-terminated UTF-8 string, if the array item has a - /// value. - /// - /// @param options Option flags describing the array type and insertion location for a new item; - /// a logical OR of allowed bit-flag constants. The type, if specified, must match the existing - /// array type, \c #kXMP_PropArrayIsOrdered, \c #kXMP_PropArrayIsAlternate, or - /// \c #kXMP_PropArrayIsAltText. Default (0 or \c #kXMP_NoOptions) matches the existing array type. - /// - /// To insert a new item before or after the specified index, set flag \c #kXMP_InsertBeforeItem - /// or \c #kXMP_InsertAfterItem. - - void SetArrayItem ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - XMP_StringPtr itemValue, - XMP_OptionBits options = 0 ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c SetArrayItem() creates or sets the value of an item within an array using a string object. - /// - /// Overloads the basic form of the function, allowing you to pass a string object in which to - /// return the item value. It is otherwise identical; see details in the canonical form. - - void SetArrayItem ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - const tStringObj & itemValue, - XMP_OptionBits options = 0 ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c AppendArrayItem() adds an item to an array, creating the array if necessary. - /// - /// This function simplifies construction of an array by not requiring that you pre-create an - /// empty array. The array that is assigned is created automatically if it does not yet exist. - /// If the array exists, it must have the form specified by the options. Each call appends a new - /// item to the array. - /// - /// Use \c TXMPUtils::ComposeArrayItemPath() to create a complex path. - /// - /// @param schemaNS The namespace URI; see \c GetProperty(). - /// - /// @param arrayName The name of the array. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param arrayOptions Option flags describing the array type to create; a logical OR of - /// allowed bit-flag constants, \c #kXMP_PropArrayIsOrdered, \c #kXMP_PropArrayIsAlternate, or - /// \c #kXMP_PropArrayIsAltText. If the array exists, must match the existing array type or be - /// null (0 or \c #kXMP_NoOptions). - /// - /// @param itemValue The new item value, a null-terminated UTF-8 string, if the array item has a - /// value. - /// - /// @param itemOptions Option flags describing the item type to create; one of the bit-flag - /// constants \c #kXMP_PropValueIsArray or \c #kXMP_PropValueIsStruct to create a complex array - /// item. - - void AppendArrayItem ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_OptionBits arrayOptions, - XMP_StringPtr itemValue, - XMP_OptionBits itemOptions = 0 ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c AppendArrayItem() adds an item to an array using a string object value, creating - /// the array if necessary. - /// - /// Overloads the basic form of the function, allowing you to pass a string object in which to - /// return the item value. It is otherwise identical; see details in the canonical form. - - void AppendArrayItem ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_OptionBits arrayOptions, - const tStringObj & itemValue, - XMP_OptionBits itemOptions = 0 ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c SetStructField() creates or sets the value of a field within a nested structure. - /// - /// Use this to set a value within an existing structure, create a new field within an existing - /// structure, or create an empty structure of any depth. If you set a field in a structure that - /// does not exist, the structure is automatically created. - /// - /// Use \c TXMPUtils::ComposeStructFieldPath() to create a complex path. - /// - /// @param schemaNS The namespace URI; see \c GetProperty(). - /// - /// @param structName The name of the struct. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param fieldNS The namespace URI for the field. Same namespace and prefix usage as - /// \c GetProperty(). - /// - /// @param fieldName The name of the field. Must be a single XML name, must not be null or the - /// empty string. Same namespace and prefix usage as \c GetProperty(). - /// - /// @param fieldValue The new value, a null-terminated UTF-8 string, if the field has a value. - /// Null to create a new, empty struct or empty field in an existing struct. - /// - /// @param options Option flags describing the property, in which the bit-flag - /// \c #kXMP_PropValueIsStruct must be set to create a struct. - - void SetStructField ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - XMP_StringPtr fieldValue, - XMP_OptionBits options = 0 ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c SetStructField() creates or sets the value of a field within a nested structure, - /// using a string object. - /// - /// Overloads the basic form of the function, allowing you to pass a string object in which to - /// return the field value. It is otherwise identical; see details in the canonical form. - - void SetStructField ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - const tStringObj & fieldValue, - XMP_OptionBits options = 0 ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c SetQualifier() creates or sets a qualifier attached to a property. - /// - /// Use this to set a value for an existing qualifier, or create a new qualifier. <> Use - /// \c TXMPUtils::ComposeQualifierPath() to create a complex path. - /// - /// @param schemaNS The namespace URI; see \c GetProperty(). - /// - /// @param propName The name of the property to which the qualifier is attached. Can be a - /// general path expression, must not be null or the empty string; see \c GetProperty() for - /// namespace prefix usage. - /// - /// @param qualNS The namespace URI for the qualifier. Same namespace and prefix usage as - /// \c GetProperty(). - /// - /// @param qualName The name of the qualifier. Must be a single XML name, must not be null or - /// the empty string. Same namespace and prefix usage as \c GetProperty(). - /// - /// @param qualValue The new value, a null-terminated UTF-8 string, if the qualifier has a - /// value. Null to create a new, empty qualifier. - /// - /// @param options Option flags describing the <>, a logical OR - /// of property-type bit-flag constants. Use the macro \c #XMP_PropIsQualifier to create a - /// qualifier. <> - - void SetQualifier ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - XMP_StringPtr qualValue, - XMP_OptionBits options = 0 ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c SetQualifier() creates or sets a qualifier attached to a property using a string object. - /// - /// Overloads the basic form of the function, allowing you to pass a string object - /// for the qualifier value. It is otherwise identical; see details in the canonical form. - - void SetQualifier ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - const tStringObj & qualValue, - XMP_OptionBits options = 0 ); - - /// @} - - // ============================================================================================= - - // --------------------------------------------------------------------------------------------- - /// \name Detecting and deleting properties. - /// @{ - /// - /// The namespace URI and prefix usage for property specifiers in these functions is the same as - /// for \c TXMPMeta::GetProperty(). - - // --------------------------------------------------------------------------------------------- - /// @brief \c DeleteProperty() deletes an XMP subtree rooted at a given property. - /// - /// It is not an error if the property does not exist. - /// - /// @param schemaNS The namespace URI for the property; see \c GetProperty(). - /// - /// @param propName The name of the property; see \c GetProperty(). - - void DeleteProperty ( XMP_StringPtr schemaNS, - XMP_StringPtr propName ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c DeleteArrayItem() deletes an XMP subtree rooted at a given array item. - /// - /// It is not an error if the array item does not exist. Use - /// \c TXMPUtils::ComposeArrayItemPath() to create a complex path. - /// - /// @param schemaNS The namespace URI for the array; see \c GetProperty(). - /// - /// @param arrayName The name of the array. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param itemIndex The 1-based index of the desired item. Use the macro \c #kXMP_ArrayLastItem - /// to specify the last existing array item. - - void DeleteArrayItem ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c DeleteStructField() deletes an XMP subtree rooted at a given struct field. - /// - /// It is not an error if the field does not exist. - /// - /// @param schemaNS The namespace URI for the struct; see \c GetProperty(). - /// - /// @param structName The name of the struct. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param fieldNS The namespace URI for the field. Same namespace and prefix usage as - /// \c GetProperty(). - /// - /// @param fieldName The name of the field. Must be a single XML name, must not be null or the - /// empty string. Same namespace and prefix usage as \c GetProperty(). - - void DeleteStructField ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c DeleteQualifier() deletes an XMP subtree rooted at a given qualifier. - /// - /// It is not an error if the qualifier does not exist. - /// - /// @param schemaNS The namespace URI; see \c GetProperty(). - /// - /// @param propName The name of the property to which the qualifier is attached. Can be a - /// general path expression, must not be null or the empty string; see \c GetProperty() for - /// namespace prefix usage. - /// - /// @param qualNS The namespace URI for the qualifier. Same namespace and prefix usage as - /// \c GetProperty(). - /// - /// @param qualName The name of the qualifier. Must be a single XML name, must not be null or - /// the empty string. Same namespace and prefix usage as \c GetProperty(). - - void DeleteQualifier ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c DoesPropertyExist() reports whether a property currently exists. - /// - /// @param schemaNS The namespace URI for the property; see \c GetProperty(). - /// - /// @param propName The name of the property; see \c GetProperty(). - /// - /// @return True if the property exists. - - bool DoesPropertyExist ( XMP_StringPtr schemaNS, - XMP_StringPtr propName ) const; - - // --------------------------------------------------------------------------------------------- - /// @brief \c DoesArrayItemExist() reports whether an array item currently exists. - /// - /// Use \c TXMPUtils::ComposeArrayItemPath() to create a complex path. - /// - /// @param schemaNS The namespace URI; see \c GetProperty(). - /// - /// @param arrayName The name of the array. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param itemIndex The 1-based index of the desired item. Use the macro \c #kXMP_ArrayLastItem - /// to specify the last existing array item. - /// - /// @return True if the array item exists. - - bool DoesArrayItemExist ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex ) const; - - // --------------------------------------------------------------------------------------------- - /// @brief \c DoesStructFieldExist() reports whether a struct field currently exists. - /// - /// Use \c TXMPUtils::ComposeStructFieldPath() to create a complex path. - /// - /// @param schemaNS The namespace URI; see \c GetProperty(). - /// - /// @param structName The name of the struct. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param fieldNS The namespace URI for the field. Same namespace and prefix usage as - /// \c GetProperty(). - /// - /// @param fieldName The name of the field. Must be a single XML name, must not be null or the - /// empty string. Same namespace and prefix usage as \c GetProperty(). - /// - /// @return True if the field exists. - - bool DoesStructFieldExist ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName ) const; - - // --------------------------------------------------------------------------------------------- - /// @brief \c DoesQualifierExist() reports whether a qualifier currently exists. - /// - /// @param schemaNS The namespace URI; see \c GetProperty(). - /// - /// @param propName The name of the property to which the qualifier is attached. Can be a - /// general path expression, must not be null or the empty string; see \c GetProperty() for - /// namespace prefix usage. - /// - /// @param qualNS The namespace URI for the qualifier. Same namespace and prefix usage as - /// \c GetProperty(). - /// - /// @param qualName The name of the qualifier. Must be a single XML name, must not be null or - /// the empty string. Same namespace and prefix usage as \c GetProperty(). - /// - /// @return True if the qualifier exists. - - bool DoesQualifierExist ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName ) const; - - /// @} - - // ============================================================================================= - // Specialized Get and Set functions - // ============================================================================================= - - // --------------------------------------------------------------------------------------------- - /// \name Accessing properties as binary values. - /// @{ - /// - /// These are very similar to \c TXMPMeta::GetProperty() and \c TXMPMeta::SetProperty(), except - /// that the value is returned or provided in binary form instead of as a UTF-8 string. - /// \c TXMPUtils provides functions for converting between binary and string values. - /// Use the path composition functions in \c TXMPUtils to compose complex path expressions - /// for fields or items in nested structures or arrays, or for qualifiers. - - // --------------------------------------------------------------------------------------------- - /// @brief \c GetProperty_Bool() retrieves the value of a Boolean property as a C++ bool. - /// - /// Reports whether a property exists, and retrieves its binary value and property type information. - /// - /// @param schemaNS The namespace URI; see \c GetProperty(). - /// - /// @param propName The name of the property. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param propValue [out] A buffer in which to return the binary value. Can be null if the - /// value is not wanted. Must be null for arrays and non-leaf levels of structs that do not have - /// values. - /// - /// @param options [out] A buffer in which to return the option flags describing the property, a - /// logical OR of allowed bit-flag constants; see \c #kXMP_PropValueIsStruct and following. Can - /// be null if flags are not wanted. - /// - /// @return True if the property exists. - - bool GetProperty_Bool ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - bool * propValue, - XMP_OptionBits * options ) const; - - // --------------------------------------------------------------------------------------------- - /// @brief \c GetProperty_Int() retrieves the value of an integer property as a C long integer. - /// - /// Reports whether a property exists, and retrieves its binary value and property type information. - /// - /// @param schemaNS The namespace URI; see \c GetProperty(). - /// - /// @param propName The name of the property. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param propValue [out] A buffer in which to return the binary value. Can be null if the - /// value is not wanted. Must be null for arrays and non-leaf levels of structs that do not have - /// values. - /// - /// @param options [out] A buffer in which to return the option flags describing the property, a - /// logical OR of allowed bit-flag constants; see \c #kXMP_PropValueIsStruct and following. Can - /// be null if flags are not wanted. - /// - /// @return True if the property exists. - - bool GetProperty_Int ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - long * propValue, - XMP_OptionBits * options ) const; - - // --------------------------------------------------------------------------------------------- - /// @brief \c GetProperty_Int64() retrieves the value of an integer property as a C long long integer. - /// - /// Reports whether a property exists, and retrieves its binary value and property type information. - /// - /// @param schemaNS The namespace URI; see \c GetProperty(). - /// - /// @param propName The name of the property. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param propValue [out] A buffer in which to return the binary value. Can be null if the - /// value is not wanted. Must be null for arrays and non-leaf levels of structs that do not have - /// values. - /// - /// @param options [out] A buffer in which to return the option flags describing the property, a - /// logical OR of allowed bit-flag constants; see \c #kXMP_PropValueIsStruct and following. Can - /// be null if flags are not wanted. - /// - /// @return True if the property exists. - - bool GetProperty_Int64 ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - long long * propValue, - XMP_OptionBits * options ) const; - - // --------------------------------------------------------------------------------------------- - /// @brief \c GetProperty_Float() retrieves the value of a floating-point property as a C double float. - /// - /// Reports whether a property exists, and retrieves its binary value and property type information. - /// - /// @param schemaNS The namespace URI; see \c GetProperty(). - /// - /// @param propName The name of the property. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param propValue [out] A buffer in which to return the binary value. Can be null if the - /// value is not wanted. Must be null for arrays and non-leaf levels of structs that do not have - /// values. - /// - /// @param options [out] A buffer in which to return the option flags describing the property, a - /// logical OR of allowed bit-flag constants; see \c #kXMP_PropValueIsStruct and following. Can - /// be null if flags are not wanted. - /// - /// @return True if the property exists. - - bool GetProperty_Float ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - double * propValue, - XMP_OptionBits * options ) const; - - // --------------------------------------------------------------------------------------------- - /// @brief \c GetProperty_Date() retrieves the value of a date-time property as an \c #XMP_DateTime structure. - /// - /// Reports whether a property exists, and retrieves its binary value and property type information. - /// - /// @param schemaNS The namespace URI; see \c GetProperty(). - /// - /// @param propName The name of the property. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param propValue [out] A buffer in which to return the binary value. Can be null if the - /// value is not wanted. Must be null for arrays and non-leaf levels of structs that do not have - /// values. - /// - /// @param options [out] A buffer in which to return the option flags describing the property, a - /// logical OR of allowed bit-flag constants; see \c #kXMP_PropValueIsStruct and following. Can - /// be null if flags are not wanted. - /// - /// @return True if the property exists. - - bool GetProperty_Date ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_DateTime * propValue, - XMP_OptionBits * options ) const; - - // --------------------------------------------------------------------------------------------- - /// @brief \c SetProperty_Bool() sets the value of a Boolean property using a C++ bool. - /// - /// Sets a property with a binary value, creating it if necessary. - /// - /// @param schemaNS The namespace URI; see \c GetProperty(). - /// - /// @param propName The name of the property. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param propValue The new binary value. Can be null if creating the property. Must be null - /// for arrays and non-leaf levels of structs that do not have values. - /// - /// @param options Option flags describing the property; a logical OR of allowed bit-flag - /// constants; see \c #kXMP_PropValueIsStruct and following. Must match the type of a property - /// that already exists. - - void SetProperty_Bool ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - bool propValue, - XMP_OptionBits options = 0 ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c SetProperty_Int() sets the value of an integer property using a C long integer. - /// - /// Sets a property with a binary value, creating it if necessary. - /// - /// @param schemaNS The namespace URI; see \c GetProperty(). - /// - /// @param propName The name of the property. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param propValue The new binary value. Can be null if creating the property. Must be null - /// for arrays and non-leaf levels of structs that do not have values. - /// - /// @param options Option flags describing the property; a logical OR of allowed bit-flag - /// constants; see \c #kXMP_PropValueIsStruct and following. Must match the type of a property - /// that already exists. - - void SetProperty_Int ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - long propValue, - XMP_OptionBits options = 0 ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c SetProperty_Int64() sets the value of an integer property using a C long long integer. - /// - /// Sets a property with a binary value, creating it if necessary. - /// - /// @param schemaNS The namespace URI; see \c GetProperty(). - /// - /// @param propName The name of the property. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param propValue The new binary value. Can be null if creating the property. Must be null - /// for arrays and non-leaf levels of structs that do not have values. - /// - /// @param options Option flags describing the property; a logical OR of allowed bit-flag - /// constants; see \c #kXMP_PropValueIsStruct and following. Must match the type of a property - /// that already exists. - - void SetProperty_Int64 ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - long long propValue, - XMP_OptionBits options = 0 ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c SetProperty_Float() sets the value of a floating-point property using a C double float. - /// - /// Sets a property with a binary value, creating it if necessary. - /// - /// @param schemaNS The namespace URI; see \c GetProperty(). - /// - /// @param propName The name of the property. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param propValue The new binary value. Can be null if creating the property. Must be null - /// for arrays and non-leaf levels of structs that do not have values. - /// - /// @param options Option flags describing the property; a logical OR of allowed bit-flag - /// constants; see \c #kXMP_PropValueIsStruct and following. Must match the type of a property - /// that already exists. - - void SetProperty_Float ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - double propValue, - XMP_OptionBits options = 0 ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c SetProperty_Date() sets the value of a date/time property using an \c #XMP_DateTime structure. - /// - /// Sets a property with a binary value, creating it if necessary. - /// - /// @param schemaNS The namespace URI; see \c GetProperty(). - /// - /// @param propName The name of the property. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param propValue The new binary value. Can be null if creating the property. Must be null - /// for arrays and non-leaf levels of structs that do not have values. - /// - /// @param options Option flags describing the property; a logical OR of allowed bit-flag - /// constants; see \c #kXMP_PropValueIsStruct and following. Must match the type of a property - /// that already exists. - - void SetProperty_Date ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - const XMP_DateTime & propValue, - XMP_OptionBits options = 0 ); - - /// @} - // ============================================================================================= - /// \name Accessing localized text (alt-text) properties. - /// @{ - /// - /// Localized text properties are stored in alt-text arrays. They allow multiple concurrent - /// localizations of a property value, for example a document title or copyright in several - /// languages. - /// - /// These functions provide convenient support for localized text properties, including a - /// number of special and obscure aspects. The most important aspect of these functions is that - /// they select an appropriate array item based on one or two RFC 3066 language tags. One of - /// these languages, the "specific" language, is preferred and selected if there is an exact - /// match. For many languages it is also possible to define a "generic" language that can be - /// used if there is no specific language match. The generic language must be a valid RFC 3066 - /// primary subtag, or the empty string. - /// - /// For example, a specific language of "en-US" should be used in the US, and a specific - /// language of "en-UK" should be used in England. It is also appropriate to use "en" as the - /// generic language in each case. If a US document goes to England, the "en-US" title is - /// selected by using the "en" generic language and the "en-UK" specific language. - /// - /// It is considered poor practice, but allowed, to pass a specific language that is just an - /// RFC 3066 primary tag. For example "en" is not a good specific language, it should only be - /// used as a generic language. Passing "i" or "x" as the generic language is also considered - /// poor practice but allowed. - /// - /// Advice from the W3C about the use of RFC 3066 language tags can be found at: - /// \li http://www.w3.org/International/articles/language-tags/ - /// - /// \note RFC 3066 language tags must be treated in a case insensitive manner. The XMP toolkit - /// does this by normalizing their capitalization: - /// \li The primary subtag is lower case, the suggested practice of ISO 639. - /// \li All 2 letter secondary subtags are upper case, the suggested practice of ISO 3166. - /// \li All other subtags are lower case. - /// - /// The XMP specification defines an artificial language, "x-default", that is used to - /// explicitly denote a default item in an alt-text array. The XMP toolkit normalizes alt-text - /// arrays such that the x-default item is the first item. The \c SetLocalizedText() function - /// has several special features related to the x-default item, see its description for details. - - // --------------------------------------------------------------------------------------------- - /// @brief \c GetLocalizedText() retrieves information about a selected item in an alt-text array. - /// - /// The array item is selected according to these rules: - /// \li Look for an exact match with the specific language. - /// \li If a generic language is given, look for a partial match. - /// \li Look for an x-default item. - /// \li Choose the first item. - /// - /// A partial match with the generic language is where the start of the item's language matches - /// the generic string and the next character is '-'. An exact match is also recognized as a - /// degenerate case. - /// - /// You can pass "x-default" as the specific language. In this case, selection of an - /// \c x-default item is an exact match by the first rule, not a selection by the 3rd rule. The - /// last 2 rules are fallbacks used when the specific and generic languages fail to produce a - /// match. - /// - /// The return value reports whether a match was successfully made. - /// - /// @param schemaNS The namespace URI for the alt-text array; see \c GetProperty(). - /// - /// @param altTextName The name of the alt-text array. Can be a general path expression, must - /// not be null or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param genericLang The name of the generic language as an RFC 3066 primary subtag. Can be - /// null or the empty string if no generic language is wanted. - /// - /// @param specificLang The name of the specific language as an RFC 3066 tag, or "x-default". - /// Must not be null or the empty string. - /// - /// @param actualLang [out] A string object in which to return the language of the selected - /// array item, if an appropriate array item is found. Can be null if the language is not wanted. - /// - /// @param itemValue [out] A string object in which to return the value of the array item, if an - /// appropriate array item is found. Can be null if the value is not wanted. - /// - /// @param options A buffer in which to return the option flags that describe the array item, if - /// an appropriate array item is found. Can be null if the flags are not wanted. - /// - /// @return True if an appropriate array item exists. - - bool GetLocalizedText ( XMP_StringPtr schemaNS, - XMP_StringPtr altTextName, - XMP_StringPtr genericLang, - XMP_StringPtr specificLang, - tStringObj * actualLang, - tStringObj * itemValue, - XMP_OptionBits * options ) const; - - // --------------------------------------------------------------------------------------------- - /// @brief \c SetLocalizedText() modifies the value of a selected item in an alt-text array. - /// - /// Creates an appropriate array item if necessary, and handles special cases for the x-default - /// item. - /// - /// The array item is selected according to these rules: - /// \li Look for an exact match with the specific language. - /// \li If a generic language is given, look for a partial match. - /// \li Look for an x-default item. - /// \li Choose the first item. - /// - /// A partial match with the generic language is where the start of the item's language matches - /// the generic string and the next character is '-'. An exact match is also recognized as a - /// degenerate case. - /// - /// You can pass "x-default" as the specific language. In this case, selection of an - /// \c x-default item is an exact match by the first rule, not a selection by the 3rd rule. The - /// last 2 rules are fallbacks used when the specific and generic languages fail to produce a - /// match. - /// - /// Item values are modified according to these rules: - /// - /// \li If the selected item is from a match with the specific language, the value of that - /// item is modified. If the existing value of that item matches the existing value of the - /// x-default item, the x-default item is also modified. If the array only has 1 existing item - /// (which is not x-default), an x-default item is added with the given value. - /// - /// \li If the selected item is from a match with the generic language and there are no other - /// generic matches, the value of that item is modified. If the existing value of that item - /// matches the existing value of the x-default item, the x-default item is also modified. If - /// the array only has 1 existing item (which is not x-default), an x-default item is added - /// with the given value. - /// - /// \li If the selected item is from a partial match with the generic language and there are - /// other partial matches, a new item is created for the specific language. The x-default item - /// is not modified. - /// - /// \li If the selected item is from the last 2 rules then a new item is created for the - /// specific language. If the array only had an x-default item, the x-default item is also - /// modified. If the array was empty, items are created for the specific language and - /// x-default. - /// - /// @param schemaNS The namespace URI for the alt-text array; see \c GetProperty(). - /// - /// @param altTextName The name of the alt-text array. Can be a general path expression, must - /// not be null or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param genericLang The name of the generic language as an RFC 3066 primary subtag. Can be - /// null or the empty string if no generic language is wanted. - /// - /// @param specificLang The name of the specific language as an RFC 3066 tag, or "x-default". - /// Must not be null or the empty string. - /// - /// @param itemValue The new value for the matching array item, specified as a null-terminated - /// UTF-8 string. - /// - /// @param options Option flags, none currently defined. - - void SetLocalizedText ( XMP_StringPtr schemaNS, - XMP_StringPtr altTextName, - XMP_StringPtr genericLang, - XMP_StringPtr specificLang, - XMP_StringPtr itemValue, - XMP_OptionBits options = 0 ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c SetLocalizedText() modifies the value of a selected item in an alt-text array using - /// a string object. - /// - /// Creates an appropriate array item if necessary, and handles special cases for the x-default - /// item. - /// - /// The array item is selected according to these rules: - /// \li Look for an exact match with the specific language. - /// \li If a generic language is given, look for a partial match. - /// \li Look for an x-default item. - /// \li Choose the first item. - /// - /// A partial match with the generic language is where the start of the item's language matches - /// the generic string and the next character is '-'. An exact match is also recognized as a - /// degenerate case. - /// - /// You can pass "x-default" as the specific language. In this case, selection of an \c x-default - /// item is an exact match by the first rule, not a selection by the 3rd rule. The last 2 rules - /// are fallbacks used when the specific and generic languages fail to produce a match. - /// - /// Item values are modified according to these rules: - /// - /// \li If the selected item is from a match with the specific language, the value of that - /// item is modified. If the existing value of that item matches the existing value of the - /// x-default item, the x-default item is also modified. If the array only has 1 existing item - /// (which is not x-default), an x-default item is added with the given value. - /// - /// \li If the selected item is from a match with the generic language and there are no other - /// generic matches, the value of that item is modified. If the existing value of that item - /// matches the existing value of the x-default item, the x-default item is also modified. If - /// the array only has 1 existing item (which is not x-default), an x-default item is added - /// with the given value. - /// - /// \li If the selected item is from a partial match with the generic language and there are - /// other partial matches, a new item is created for the specific language. The x-default item - /// is not modified. - /// - /// \li If the selected item is from the last 2 rules then a new item is created for the - /// specific language. If the array only had an x-default item, the x-default item is also - /// modified. If the array was empty, items are created for the specific language and - /// x-default. - /// - /// @param schemaNS The namespace URI for the alt-text array; see \c GetProperty(). - /// - /// @param altTextName The name of the alt-text array. Can be a general path expression, must - /// not be null or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param genericLang The name of the generic language as an RFC 3066 primary subtag. Can be - /// null or the empty string if no generic language is wanted. - /// - /// @param specificLang The name of the specific language as an RFC 3066 tag, or "x-default". - /// Must not be null or the empty string. - /// - /// @param itemValue The new value for the matching array item, specified as a string object. - /// - /// @param options Option flags, none currently defined. - - void SetLocalizedText ( XMP_StringPtr schemaNS, - XMP_StringPtr altTextName, - XMP_StringPtr genericLang, - XMP_StringPtr specificLang, - const tStringObj & itemValue, - XMP_OptionBits options = 0 ); - - /// @} - - // ============================================================================================= - /// \name Creating and reading serialized RDF. - /// @{ - /// - /// The metadata contained in an XMP object must be serialized as RDF for storage in an XMP - /// packet and output to a file. Similarly, metadata in the form of serialized RDF (such as - /// metadata read from a file using \c TXMPFiles) must be parsed into an XMP object for - /// manipulation with the XMP Toolkit. - /// - /// These functions support parsing serialized RDF into an XMP object, and serializing an XMP - /// object into RDF. The input for parsing can be any valid Unicode encoding. ISO Latin-1 is - /// also recognized, but its use is strongly discouraged. Serialization is always as UTF-8. - - // --------------------------------------------------------------------------------------------- - /// @brief \c ParseFromBuffer() parses RDF from a series of input buffers into this XMP object. - /// - /// Use this to convert metadata from serialized RDF form (as, for example, read from an XMP - /// packet embedded in a file) into an XMP object that you can manipulate with the XMP Toolkit. - /// If this XMP object is empty and the input buffer contains a complete XMP packet, this is the - /// same as creating a new XMP object from that buffer with the constructor. - /// - /// You can use this function to combine multiple buffers into a single metadata tree. To - /// terminate an input loop conveniently, pass the option \c #kXMP_ParseMoreBuffers for all - /// real input, then make a final call with a zero length and \c #kXMP_NoOptions. The buffers - /// can be any length. The buffer boundaries need not respect XML tokens or even Unicode - /// characters. - /// - /// @param buffer A pointer to a buffer of input. Can be null if \c bufferSize is 0. - /// - /// @param bufferSize The length of the input buffer in bytes. Zero is a valid value. - /// - /// @param options An options flag that controls how the parse operation is performed. A logical - /// OR of these bit-flag constants: - /// \li \c #kXMP_ParseMoreBuffers - This is not the last buffer of input, more calls follow. - /// \li \c #kXMP_RequireXMPMeta - The \c x:xmpmeta XML element is required around \c rdf:RDF. - /// - /// @see \c TXMPFiles::GetXMP() - - void ParseFromBuffer ( XMP_StringPtr buffer, - XMP_StringLen bufferSize, - XMP_OptionBits options = 0 ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c SerializeToBuffer() serializes metadata in this XMP object into a string as RDF. - /// - /// Use this to prepare metadata for storage as an XMP packet embedded in a file. See \c TXMPFiles::PutXMP(). - /// - /// @param rdfString [out] A string object in which to return the serialized RDF. Must not be null. - /// - /// @param options An options flag that controls how the serialization operation is performed. - /// The specified options must be logically consistent; an exception is thrown if they are not. - /// A logical OR of these bit-flag constants: - /// \li \c kXMP_OmitPacketWrapper - Do not include an XML packet wrapper. This cannot be - /// specified together with \c #kXMP_ReadOnlyPacket, \c #kXMP_IncludeThumbnailPad, or - /// \c #kXMP_ExactPacketLength. - /// \li \c kXMP_ReadOnlyPacket - Create a read-only XML packet wapper. Cannot be specified - /// together with \c kXMP_OmitPacketWrapper. - /// \li \c kXMP_UseCompactFormat - Use a highly compact RDF syntax and layout. - /// \li \c kXMP_WriteAliasComments - Include XML comments for aliases. - /// \li \c kXMP_IncludeThumbnailPad - Include typical space for a JPEG thumbnail in the - /// padding if no \c xmp:Thumbnails property is present. Cannot be specified together with - /// \c kXMP_OmitPacketWrapper. - /// \li \c kXMP_ExactPacketLength - The padding parameter provides the overall packet length. - /// The actual amount of padding is computed. An exception is thrown if the packet exceeds - /// this length with no padding. Cannot be specified together with - /// \c kXMP_OmitPacketWrapper. - /// - /// In addition to the above options, you can include one of the following encoding options: - /// \li \c #kXMP_EncodeUTF8 - Encode as UTF-8, the default. - /// \li \c #kXMP_EncodeUTF16Big - Encode as big-endian UTF-16. - /// \li \c #kXMP_EncodeUTF16Little - Encode as little-endian UTF-16. - /// \li \c #kXMP_EncodeUTF32Big - Encode as big-endian UTF-32. - /// \li \c #kXMP_EncodeUTF32Little - Encode as little-endian UTF-32. - /// - /// @param padding The amount of padding to be added if a writeable XML packet is created. If - /// zero (the default) an appropriate amount of padding is computed. - /// - /// @param newline The string to be used as a line terminator. If empty, defaults to linefeed, - /// U+000A, the standard XML newline. - /// - /// @param indent The string to be used for each level of indentation in the serialized RDF. If - /// empty, defaults to two ASCII spaces, U+0020. - /// - /// @param baseIndent The number of levels of indentation to be used for the outermost XML - /// element in the serialized RDF. This is convenient when embedding the RDF in other text. - - void SerializeToBuffer ( tStringObj * rdfString, - XMP_OptionBits options, - XMP_StringLen padding, - XMP_StringPtr newline, - XMP_StringPtr indent = "", - XMP_Index baseIndent = 0 ) const; - - // --------------------------------------------------------------------------------------------- - /// @brief \c SerializeToBuffer() serializes metadata in this XMP object into a string as RDF. - /// - /// This simpler form of the function uses default values for the \c newline, \c indent, and - /// \c baseIndent parameters. - /// - /// @param rdfString [out] A string object in which to return the serialized RDF. Must not be null. - /// - /// @param options An options flag that controls how the serialization operation is performed. - /// The specified options must be logically consistent; an exception is thrown if they are not. - /// A logical OR of these bit-flag constants: - /// \li \c kXMP_OmitPacketWrapper - Do not include an XML packet wrapper. This cannot be - /// specified together with \c #kXMP_ReadOnlyPacket, \c #kXMP_IncludeThumbnailPad, or - /// \c #kXMP_ExactPacketLength. - /// \li \c kXMP_ReadOnlyPacket - Create a read-only XML packet wapper. Cannot be specified - /// together with \c kXMP_OmitPacketWrapper. - /// \li \c kXMP_UseCompactFormat - Use a highly compact RDF syntax and layout. - /// \li \c kXMP_WriteAliasComments - Include XML comments for aliases. - /// \li \c kXMP_IncludeThumbnailPad - Include typical space for a JPEG thumbnail in the - /// padding if no \c xmp:Thumbnails property is present. Cannot be specified together with - /// \c kXMP_OmitPacketWrapper. - /// \li \c kXMP_ExactPacketLength - The padding parameter provides the overall packet length. - /// The actual amount of padding is computed. An exception is thrown if the packet exceeds - /// this length with no padding. Cannot be specified together with - /// \c kXMP_OmitPacketWrapper. - /// - /// In addition to the above options, you can include one of the following encoding options: - /// \li \c #kXMP_EncodeUTF8 - Encode as UTF-8, the default. - /// \li \c #kXMP_EncodeUTF16Big - Encode as big-endian UTF-16. - /// \li \c #kXMP_EncodeUTF16Little - Encode as little-endian UTF-16. - /// \li \c #kXMP_EncodeUTF32Big - Encode as big-endian UTF-32. - /// \li \c #kXMP_EncodeUTF32Little - Encode as little-endian UTF-32. - /// - /// @param padding The amount of padding to be added if a writeable XML packet is created. - /// If zero (the default) an appropriate amount of padding is computed. - - void SerializeToBuffer ( tStringObj * rdfString, - XMP_OptionBits options = 0, - XMP_StringLen padding = 0 ) const; - - /// @} - // ============================================================================================= - // Miscellaneous Member Functions - // ============================== - - // --------------------------------------------------------------------------------------------- - /// \name Helper functions. - /// @{ - - // --------------------------------------------------------------------------------------------- - /// @brief Retrieves an internal reference that can be safely passed across DLL boundaries and - /// reconstructed. - /// - /// The \c TXMPMeta class is a normal C++ template, it is instantiated and local to each client - /// executable, as are the other \c TXMP* classes. Different clients might not use the same - /// string type to instantiate \c TXMPMeta. - /// - /// Because of this you should not pass \c SXMPMeta objects, or pointers to \c SXMPMeta objects, - /// across DLL boundaries. Use this function to obtain a safe internal reference that you can - /// pass, then construct a local object on the callee side. This construction does not create a - /// cloned XMP tree, it is the same underlying XMP object safely wrapped in each client's - /// \c SXMPMeta object. - /// - /// Use this function and the associated constructor like this: - /// \li The callee's header contains: - ///
-    /// CalleeMethod ( XMPMetaRef xmpRef );
-    /// 
- /// - /// \li The caller's code contains: - ///
-    /// SXMPMeta callerXMP;
-    /// CalleeMethod ( callerXMP.GetInternalRef() );
-    /// 
- /// - /// \li The callee's code contains: - ///
-    /// SXMPMeta calleeXMP ( xmpRef );
-    /// 
- /// - /// @return The reference object. - - XMPMetaRef GetInternalRef() const; - - // --------------------------------------------------------------------------------------------- - /// @brief \c GetObjectName() retrieves the client-assigned name of this XMP object. - /// - /// Assign this name with \c SetObjectName(). - /// - /// @param name [out] A string object in which to return the name. - - void GetObjectName ( tStringObj * name ) const; - - // --------------------------------------------------------------------------------------------- - /// @brief \c SetObjectName() assigns a name to this XMP object. - /// - /// Retrieve this client-assigned name with \c GetObjectName(). - /// - /// @param name The name as a null-terminated UTF-8 string. - - void SetObjectName ( XMP_StringPtr name ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c SetObjectName() assigns a name to this XMP object. - /// - /// Retrieve this client-assigned name with \c GetObjectName(). - /// - /// @param name The name as a string object. - - void SetObjectName ( tStringObj name ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c Sort() sorts the data model tree of an XMP object. - /// - /// Use this function to sort the data model of an XMP object into a canonical order. This can - /// be convenient when comparing data models, (e.g. by text comparison of DumpObject output). - /// - /// At the top level the namespaces are sorted by their prefixes. Within a namespace, the top - /// level properties are sorted by name. Within a struct, the fields are sorted by their - /// qualified name, i.e. their XML prefix:local form. Unordered arrays of simple items are - /// sorted by value. Language Alternative arrays are sorted by the xml:lang qualifiers, with - /// the "x-default" item placed first. - - void Sort(); - - // --------------------------------------------------------------------------------------------- - /// @brief \c Erase() restores the object to a "just constructed" state. - - void Erase(); - - // --------------------------------------------------------------------------------------------- - /// @brief \c Clone() creates a deep copy of an XMP object. - /// - /// Use this function to copy an entire XMP metadata tree. Assignment and copy constructors only - /// increment a reference count, they do not do a deep copy. This function returns an object, - /// not a pointer. The following shows correct usage: - /// - ///
-    /// SXMPMeta * clone1 = new SXMPMeta ( sourceXMP.Clone() );  // This works.
-    /// SXMPMeta   clone2 ( sourceXMP.Clone );  	// This works also. (Not a pointer.)
-    /// 
- /// The \c clone2 example does not use an explicit pointer. - /// This is good for local usage, protecting against memory leaks. - /// - /// This is an example of incorrect usage: - ///
-    /// SXMPMeta * clone3 = &sourceXMP.Clone();		// ! This does not work!
-    /// 
- /// The assignment to \c clone3 creates a temporary object, initializes it with the clone, - /// assigns the address of the temporary to \c clone3, then deletes the temporary. - /// - /// @param options Option flags, not currently defined.. - /// - /// @return An XMP object cloned from the original. - - TXMPMeta Clone ( XMP_OptionBits options = 0 ) const; - - // --------------------------------------------------------------------------------------------- - /// @brief \c CountArrayItems() reports the number of items currently defined in an array. - /// - /// @param schemaNS The namespace URI; see \c GetProperty(). - /// - /// @param arrayName The name of the array. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @return The number of items. - - XMP_Index CountArrayItems ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName ) const; - - // --------------------------------------------------------------------------------------------- - /// @brief \c DumpObject() outputs the content of an XMP object to a callback handler for debugging. - /// - /// Invokes a client-defined callback for each line of output. - /// - /// @param outProc The client-defined procedure to handle each line of output. - /// - /// @param clientData A pointer to client-defined data to pass to the handler. - /// - /// @return A success-fail status value, returned from the handler. Zero is success, failure - /// values are client-defined. - /// - /// @see Static functions \c DumpNamespaces() and \c DumpAliases() - - XMP_Status DumpObject ( XMP_TextOutputProc outProc, - void * clientData ) const; - - // --------------------------------------------------------------------------------------------- - /// @brief Not implemented - XMP_OptionBits GetObjectOptions() const; - - // --------------------------------------------------------------------------------------------- - /// \brief Not implemented - void SetObjectOptions ( XMP_OptionBits options ); - - /// @} - - // ============================================================================================= - - XMPMetaRef xmpRef; // *** Should be private, see below. - -private: - -#if 0 // *** VS.Net and gcc seem to not handle the friend declarations properly. - friend class TXMPIterator ; - friend class TXMPUtils ; -#endif - -}; // class TXMPMeta - -#endif // __TXMPMeta_hpp__ diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/include/TXMPUtils.hpp b/platform/win32/msvc/external/exiv2/xmpsdk/include/TXMPUtils.hpp deleted file mode 100644 index 433134c7a98..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/include/TXMPUtils.hpp +++ /dev/null @@ -1,965 +0,0 @@ -#ifndef __TXMPUtils_hpp__ -#define __TXMPUtils_hpp__ 1 - -#if ( ! __XMP_hpp__ ) - #error "Do not directly include, use XMPSDK.hpp" -#endif - -// ================================================================================================= -// ADOBE SYSTEMS INCORPORATED -// Copyright 2002-2008 Adobe Systems Incorporated -// All Rights Reserved -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -// ================================================================================================= -/// \file TXMPUtils.hpp -/// \brief API for access to the XMP Toolkit utility services. -/// -/// \c TXMPUtils is the template class providing utility services for the XMP Toolkit. It must be -/// instantiated with a string class such as \c std::string. See the instructions in XMPSDK.hpp, and -/// the Overview for a discussion of the overall architecture of the XMP API. -// ================================================================================================= - -// ================================================================================================= -/// \class TXMPUtils TXMPUtils.hpp -/// @brief API for access to the XMP Toolkit utility services. -/// -/// \c TXMPUtils is a template class which must be instantiated with a string class such as -/// \c std::string. See the instructions in XMPSDK.hpp, and the Overview for a discussion of the overall -/// architecture of the XMP API. -/// -/// This class defines helper functions that support the basic metadata manipulation provided by -/// \c TXMPMeta. All of the functions are static; that is, you call them directly from the concrete -/// class (\c SXMPUtils), which is never itself instantiated. -/// -/// General categories of utilities include: -/// -/// \li Composing complex path expressions, which you can then pass to the property access -/// functions in \c TXMPMeta -/// \li Converting between binary and string forms of property values -/// \li Manipulating date/time values -/// \li Encoding and decoding base-64 strings -/// \li JPEG file handling -/// \li Editing aids for creating a user interface for the XMP Toolkit -// ================================================================================================= - -template class TXMPUtils { - -public: - - // ============================================================================================= - // No constructors or destructor declared or needed - // ================================================ - - // ============================================================================================ - /// \name Path composition - /// @{ - /// - /// These functions provide support for composing path expressions to deeply nested properties. - /// The functions in \c TXMPMeta such as \c TXMPMeta::GetProperty(), - /// \c TXMPMeta::GetArrayItem(), and \c TXMPMeta::GetStructField() provide easy access to top level - /// simple properties, items in top level arrays, and fields of top level structs. They are - /// not as convenient for more complex things, such as fields several levels deep in a complex - /// struct, or fields within an array of structs, or items of an array that is a field of a - /// struct. You can use these utility functions to compose these paths, which you can then pass - /// to the property access functions. You can also compose paths to top-level array items or - /// struct fields so that you can use the binary accessors such as - /// \c TXMPMeta::GetProperty_Int(). - /// - /// You can use these functions is to compose a complete path expression, or all but the last - /// component. For example, suppose you have a property that is an array of integers within a - /// struct. You can access one of the array items like this: - /// - ///
-    ///   SXMPUtils::ComposeStructFieldPath ( schemaNS, "Struct", fieldNS, "Array", &path );
-    ///   SXMPUtils::ComposeArrayItemPath ( schemaNS, path, index, &path );
-    ///   exists = xmpObj.GetProperty_Int ( schemaNS, path, &value, &options );
-    /// 
- /// - /// You could also use this code if you want the string form of the integer: - /// - ///
-    ///   SXMPUtils::ComposeStructFieldPath ( schemaNS, "Struct", fieldNS, "Array", &path );
-    ///   xmpObj.GetArrayItem ( schemaNS, path, index, &value, &options );
-    /// 
- /// - /// \note It might look confusing that the \c schemaNS is passed in all of the calls above. This - /// is because the XMP Toolkit keeps the top-level "schema" namespace separate from the rest of - /// the path expression. - - // --------------------------------------------------------------------------------------------- - /// @brief \c ComposeArrayItemPath() composes the path expression for an item in an array. - /// - /// The returned string is in the form ns:arrayName[i], where "ns" is the prefix for - /// the specified namespace, and "i" is the decimal representation of specified item index. - /// If the last item was specified, the path is ns:arrayName[last()]. - /// - /// @param schemaNS The namespace URI for the array; see \c GetProperty(). - /// - /// @param arrayName The name of the array. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param itemIndex The 1-based index of the desired item. Use the macro - /// \c #kXMP_ArrayLastItem to specify the last existing array item. - /// - /// @param fullPath [out] A string in which to return the composed path. - - static void ComposeArrayItemPath ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - tStringObj * fullPath ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c ComposeStructFieldPath() composes the path expression for a field in a struct. - /// - /// The returned string is in the form ns:structName/fNS:fieldName, where "ns" is the - /// prefix for the schema namespace, and "fNS" is the prefix for field namespace. - /// - /// @param schemaNS The namespace URI for the struct; see \c GetProperty(). - /// - /// @param structName The name of the struct. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param fieldNS The namespace URI for the field. Same URI and prefix usage as the - /// \c schemaNS and \c structName parameters. - /// - /// @param fieldName The name of the field. Must be a single XML name, must not be null or the - /// empty string. Same URI and prefix usage as the \c schemaNS and \c structName parameters. - /// - /// @param fullPath [out] A string in which to return the composed path. - - static void ComposeStructFieldPath ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - tStringObj * fullPath ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c ComposeQualifierPath() composes the path expression for a qualifier. - /// - /// The returned string is in the form ns:propName/?qNS:qualName, where "ns" is the - /// prefix for the schema namespace, and "qNS" is the prefix for the qualifier namespace. - /// - /// @param schemaNS The namespace URI; see \c GetProperty(). - /// - /// @param propName The name of the property to which the qualifier is attached. Can be a - /// general path expression, must not be null or the empty string; see \c GetProperty() for - /// namespace prefix usage. - /// - /// @param qualNS The namespace URI for the qualifier. Same URI and prefix usage as the - /// \c schemaNS and \c propName parameters. - /// - /// @param qualName The name of the qualifier. Must be a single XML name, must not be null or the - /// empty string. Same URI and prefix usage as the \c schemaNS and \c propName parameters. - /// - /// @param fullPath [out] A string in which to return the composed path. - - static void ComposeQualifierPath ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - tStringObj * fullPath ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c ComposeLangSelector() composes the path expression to select an alternate item by language. - /// - /// Path syntax allows two forms of "content addressing" to select an item in an array of - /// alternatives. The form used in this function lets you select an item in an alt-text array - /// based on the value of its \c xml:lang qualifier. The other form of content addressing is - /// shown in \c ComposeFieldSelector(). - /// - /// The returned string is in the form ns:arrayName[\@xml:lang='langName'], where - /// "ns" is the prefix for the schema namespace - /// - /// This function provides a path expression that is explicitly and only for a specific - /// language. In most cases, \c TXMPMeta::SetLocalizedText() and \c TXMPMeta::GetLocalizedText() - /// are preferred, because they provide extra logic to choose the appropriate language and - /// maintain consistency with the 'x-default' value. - /// - /// @param schemaNS The namespace URI for the array; see \c GetProperty(). - /// - /// @param arrayName The name of the array. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param langName The RFC 3066 code for the desired language, as a null-terminated UTF-8 string. - /// - /// @param fullPath [out] A string in which to return the composed path. - - static void ComposeLangSelector ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr langName, - tStringObj * fullPath ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c ComposeLangSelector() composes a path expression to select an alternate item by language. - /// - /// Path syntax allows two forms of "content addressing" to select an item in an array of - /// alternatives. The form used in this function lets you select an item in an alt-text array - /// based on the value of its \c xml:lang qualifier. The other form of content addressing is - /// shown in \c ComposeFieldSelector(). - /// - /// The returned string is in the form ns:arrayName[\@xml:lang='langName'], where - /// "ns" is the prefix for the schema namespace - /// - /// This function provides a path expression that is explicitly and only for a specific - /// language. In most cases, \c TXMPMeta::SetLocalizedText() and \c TXMPMeta::GetLocalizedText() - /// are preferred, because they provide extra logic to choose the appropriate language and - /// maintain consistency with the 'x-default' value. - /// - /// @param schemaNS The namespace URI for the array; see \c GetProperty(). - /// - /// @param arrayName The name of the array. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param langName The RFC 3066 code for the desired language, as a string object. - /// - /// @param fullPath [out] A string in which to return the composed path. - - static void ComposeLangSelector ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - const tStringObj & langName, - tStringObj * fullPath ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c ComposeFieldSelector() composes a path expression to select an alternate item by a field's value. - /// - /// Path syntax allows two forms of "content addressing" to select an item in an array of - /// alternatives. The form used in this function lets you select an item in an array of structs - /// based on the value of one of the fields in the structs. The other form of content addressing - /// is shown in \c ComposeLangSelector(). - /// - /// For example, consider a simple struct that has two fields, the name of a city and the URI of - /// an FTP site in that city. Use this to create an array of download alternatives. You can show - /// the user a popup built from the values of the city fields, then get the corresponding URI as - /// follows: - ///
-    ///   ComposeFieldSelector ( schemaNS, "Downloads", fieldNS, "City", chosenCity, &path );
-    ///   exists = GetStructField ( schemaNS, path, fieldNS, "URI", &uri );
-    /// 
- /// - /// The returned string is in the form ns:arrayName[fNS:fieldName='fieldValue'], where - /// "ns" is the prefix for the schema namespace and "fNS" is the prefix for the field namespace. - /// - /// @param schemaNS The namespace URI for the array; see \c GetProperty(). - /// - /// @param arrayName The name of the array. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param fieldNS The namespace URI for the field used as the selector. Same URI and prefix - /// usage as the \c schemaNS and \c arrayName parameters. - /// - /// @param fieldName The name of the field used as the selector. Must be a single XML name, must - /// not be null or the empty string. It must be the name of a field that is itself simple. - /// - /// @param fieldValue The desired value of the field, specified as a null-terminated UTF-8 string. - /// - /// @param fullPath [out] A string in which to return the composed path. - - static void ComposeFieldSelector ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - XMP_StringPtr fieldValue, - tStringObj * fullPath ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c ComposeFieldSelector() composes a path expression to select an alternate item by a field's value. - /// - /// Path syntax allows two forms of "content addressing" to select an item in an array of - /// alternatives. The form used in this function lets you select an item in an array of structs - /// based on the value of one of the fields in the structs. The other form of content addressing - /// is shown in \c ComposeLangSelector(). - /// - /// For example, consider a simple struct that has two fields, the name of a city and the URI of - /// an FTP site in that city. Use this to create an array of download alternatives. You can show - /// the user a popup built from the values of the city fields, then get the corresponding URI as - /// follows: - ///
-    ///   ComposeFieldSelector ( schemaNS, "Downloads", fieldNS, "City", chosenCity, &path );
-    ///   exists = GetStructField ( schemaNS, path, fieldNS, "URI", &uri );
-    /// 
- /// - /// The returned string is in the form ns:arrayName[fNS:fieldName='fieldValue'], where - /// "ns" is the prefix for the schema namespace and "fNS" is the prefix for the field namespace. - /// - /// @param schemaNS The namespace URI for the array; see \c GetProperty(). - /// - /// @param arrayName The name of the array. Can be a general path expression, must not be null - /// or the empty string; see \c GetProperty() for namespace prefix usage. - /// - /// @param fieldNS The namespace URI for the field used as the selector. Same URI and prefix - /// usage as the \c schemaNS and \c arrayName parameters. - /// - /// @param fieldName The name of the field used as the selector. Must be a single XML name, must - /// not be null or the empty string. It must be the name of a field that is itself simple. - /// - /// @param fieldValue The desired value of the field, specified as a string object. - /// - /// @param fullPath [out] A string in which to return the composed path. - - static void ComposeFieldSelector ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - const tStringObj & fieldValue, - tStringObj * fullPath ); - - /// @} - - // ============================================================================================= - /// \name Conversion between binary types and strings - /// @{ - /// - /// The main accessors in \c TXMPMeta set and retrieve property values as strings. additional - /// functions, such as \c TXMPMeta::SetPropertyInt(), set and retrieve property values as - /// explicit binary data types. Use these functions to convert between binary and string - /// values. - /// - /// Strings can be specified as null-terminated UTF-8 (\c #XMP_StringPtr), or as string - /// objects (\c tStringObj) of the type declared when instantiating the XMP classes; see - /// \c XMPSDK.hpp. Alternate forms of each conversion function allow either type of string. - - // --------------------------------------------------------------------------------------------- - /// @brief \c ConvertFromBool() converts a Boolean value to a string. - /// - /// The string values of Booleans are returned by the macros \c #kXMP_TrueStr and - /// \c #kXMP_FalseStr in \c XMP_Const.h. - /// - /// @param binValue The Boolean value to be converted. - /// - /// @param strValue [out] A buffer in which to return the string representation of the value. - - static void ConvertFromBool ( bool binValue, - tStringObj * strValue ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c ConvertFromInt() converts a 32-bit integer value to a string. - /// - /// @param binValue The integer value to be converted. - /// - /// @param format Optional. A C \c sprintf format for the conversion. Default is "%d". - /// - /// @param strValue [out] A buffer in which to return the string representation of the value. - - static void ConvertFromInt ( long binValue, - XMP_StringPtr format, - tStringObj * strValue ); - // --------------------------------------------------------------------------------------------- - /// @brief \c ConvertFromInt64() converts a 64-bit integer value to a string. - /// - /// @param binValue The integer value to be converted. - /// - /// @param format Optional. A C \c sprintf format for the conversion. Default is "%d". - /// - /// @param strValue [out] A buffer in which to return the string representation of the value. - - static void ConvertFromInt64 ( long long binValue, - XMP_StringPtr format, - tStringObj * strValue ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c ConvertFromFloat() converts a floating-point value to a string. - /// - /// @param binValue The floating-point value to be converted. - /// - /// @param format Optional. A C \c sprintf format for the conversion. Default is "%d". - /// - /// @param strValue [out] A buffer in which to return the string representation of the value. - - static void ConvertFromFloat ( double binValue, - XMP_StringPtr format, - tStringObj * strValue ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c ConvertFromDate() converts a date/time value to a string. - /// - /// Formats a date according to the ISO 8601 profile in http://www.w3.org/TR/NOTE-datetime: - ///
-    ///   YYYY
-    ///   YYYY-MM
-    ///   YYYY-MM-DD
-    ///   YYYY-MM-DDThh:mmTZD
-    ///   YYYY-MM-DDThh:mm:ssTZD
-    ///   YYYY-MM-DDThh:mm:ss.sTZD
-    /// 
- /// - /// \c YYYY = four-digit year, formatted as "%.4d"
- /// \c MM = two-digit month (01=January)
- /// \c DD = two-digit day of month (01 through 31)
- /// \c hh = two digits of hour (00 through 23)
- /// \c mm = two digits of minute (00 through 59)
- /// \c ss = two digits of second (00 through 59)
- /// \c s = one or more digits representing a decimal fraction of a second
- /// \c TZD = time zone designator (Z or +hh:mm or -hh:mm) - /// - /// Time-only input is allowed where the year, month, and day are all zero. This is output as - /// "0000-00-00...". - /// - /// @note ISO 8601 does not allow years less than 1000 or greater than 9999. This API allows - /// any year, even negative ones. - /// - /// @param binValue The date/time value to be converted. - /// - /// @param strValue [out] A buffer in which to return the ISO 8601 string representation of the date/time. - - static void ConvertFromDate ( const XMP_DateTime & binValue, - tStringObj * strValue ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c ConvertToBool() converts a string to a Boolean value. - /// - /// The preferred strings are those returned by the macros \c #kXMP_TrueStr and \c #kXMP_FalseStr. - /// If these do not match, the function does a case insensitive comparison, then simply 't' or 'f', - /// and finally non-zero and zero integer representations. - /// - /// @param strValue The string representation of the value, specified as a null-terminated UTF-8 string. - /// - /// @return The appropriate C++ bool value for the string. - - static bool ConvertToBool ( XMP_StringPtr strValue ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c ConvertToBool() converts a string to a Boolean value. - /// - /// Overloads the basic form of the function, allowing you to pass a string object, - /// rather than a const * char. It is otherwise identical; see details in the canonical form. - /// - /// @param strValue The string representation of the value, specified as a string object. - /// - /// @return The appropriate C++ bool value for the string. - - static bool ConvertToBool ( const tStringObj & strValue ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c ConvertToInt() converts a string to a 32-bit integer value. - /// - /// @param strValue The string representation of the value, specified as a null-terminated UTF-8 string. - /// - /// @return The 32-bit integer value. - - static long ConvertToInt ( XMP_StringPtr strValue ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c ConvertToInt() converts a string to a 32-bit integer value. - /// - /// Overloads the basic form of the function, allowing you to pass a string object, - /// rather than a const * char. It is otherwise identical. - /// - /// @param strValue The string representation of the value, specified as a string object. - /// - /// @return The 32-bit integer value. - - static long ConvertToInt ( const tStringObj & strValue ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c ConvertToInt64() converts a string to a 64-bit integer value. - /// - /// @param strValue The string representation of the value, specified as a null-terminated UTF-8 string. - /// - /// @return The 64-bit integer value. - - static long long ConvertToInt64 ( XMP_StringPtr strValue ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c ConvertToInt64() converts a string to a 64-bit integer value. - /// - /// Overloads the basic form of the function, allowing you to pass a string object, - /// rather than a const * char. It is otherwise identical. - /// - /// @param strValue The string representation of the value, specified as a string object. - /// - /// @return The 64-bit integer value. - - static long long ConvertToInt64 ( const tStringObj & strValue ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c ConvertToFloat() converts a string to a floating-point value. - /// - /// @param strValue The string representation of the value, specified as a null-terminated UTF-8 string. - /// - /// @return The floating-point value. - - static double ConvertToFloat ( XMP_StringPtr strValue ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c ConvertToFloat() converts a string to a floating-point value. - /// - /// Overloads the basic form of the function, allowing you to pass a string object, - /// rather than a const * char. It is otherwise identical. - /// - /// @param strValue The string representation of the value, specified as a string object. - /// - /// @return The floating-point value. - - static double ConvertToFloat ( const tStringObj & strValue ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c ConvertToDate() converts a string to a date/time value. - /// - /// Parses a date according to the ISO 8601 profile in http://www.w3.org/TR/NOTE-datetime: - ///
-    ///   YYYY
-    ///   YYYY-MM
-    ///   YYYY-MM-DD
-    ///   YYYY-MM-DDThh:mmTZD
-    ///   YYYY-MM-DDThh:mm:ssTZD
-    ///   YYYY-MM-DDThh:mm:ss.sTZD
-    /// 
- /// - /// \c YYYY = four-digit year, formatted as "%.4d"
- /// \c MM = two-digit month (01=January)
- /// \c DD = two-digit day of month (01 through 31)
- /// \c hh = two digits of hour (00 through 23)
- /// \c mm = two digits of minute (00 through 59)
- /// \c ss = two digits of second (00 through 59)
- /// \c s = one or more digits representing a decimal fraction of a second
- /// \c TZD = time zone designator (Z or +hh:mm or -hh:mm) - /// - /// A missing date portion or missing TZD are tolerated. A missing date value can begin with - /// "Thh:" or "hh:"; the year, month, and day are all set to zero in the \c #XMP_DateTime value. - /// A missing TZD is assumed to be UTC. - /// - /// @note ISO 8601 does not allow years less than 1000 or greater than 9999. This API allows - /// any year, even negative ones. - /// - /// @param strValue The ISO 8601 string representation of the date/time, specified as a - /// null-terminated UTF-8 string. - /// - /// @param binValue [out] A buffer in which to return the binary date/time value. - - static void ConvertToDate ( XMP_StringPtr strValue, - XMP_DateTime * binValue ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c ConvertToDate() converts a string to a date/time value. - /// - /// Overloads the basic form of the function, allowing you to pass a string object, - /// rather than a const * char. It is otherwise identical. - /// See details for the canonical form. - /// - /// - /// @param strValue The ISO 8601 string representation of the date/time, specified as a string - /// object. - /// - /// @param binValue [out] A buffer in which to return the binary date/time value. - - static void ConvertToDate ( const tStringObj & strValue, - XMP_DateTime * binValue ); - - /// @} - - // ============================================================================================= - /// \name Date-time manipulation - /// @{ - /// - /// In addition to the type-conversion functions that convert between strings and binary - /// date-time values, these functions create, manipulate, and compare date-time values. - - // --------------------------------------------------------------------------------------------- - /// @brief \c CurrentDateTime() obtains the current date and time. - /// - /// Creates and returns a binary \c #XMP_DateTime value. The returned time is UTC, properly - /// adjusted for the local time zone. The resolution of the time is not guaranteed to be finer - /// than seconds. - /// - /// @param time [out] A buffer in which to return the date/time value. - - static void CurrentDateTime ( XMP_DateTime * time ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c SetTimeZone() sets the time zone in a date/time value to the local time zone. - /// - /// Any existing time zone value is replaced. The other date/time fields are not adjusted in any way. - /// - /// @param time A pointer to the date-time value, which is modified in place. - - static void SetTimeZone ( XMP_DateTime * time ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c ConvertToUTCTime() ensures that a time is UTC. - /// - /// If the time zone is not UTC, the time is adjusted and the time zone set to be UTC. If the - /// time zone is already UTC, the value is not modified. - /// - /// @param time A pointer to the date-time value, which is modified in place. - - static void ConvertToUTCTime ( XMP_DateTime * time ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c ConvertToLocalTime() ensures that a time is local. - /// - /// If the time zone is not the local zone, the time is adjusted and the time zone set to be local. - /// If the time zone is already the local zone, the value is not modified. - /// - /// @param time A pointer to the date-time value, which is modified in place. - - static void ConvertToLocalTime ( XMP_DateTime * time ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c CompareDateTime() compares the order of two date/time values. - /// - /// @param left The left-side date/time value. - /// - /// @param right The right-side date/time value. - /// - /// @return An integer indicating the order: - /// \li -1 if left is earlier than right - /// \li 0 if left matches right - /// \li +1 if left is later than right - - static int CompareDateTime ( const XMP_DateTime & left, - const XMP_DateTime & right ); - - /// @} - - // ============================================================================================= - /// \name Base64 encoding and decoding - /// @{ - /// - /// These functions convert between raw data values and Base64-encoded strings. - - // --------------------------------------------------------------------------------------------- - /// @brief \c EncodeToBase64() converts a raw data value to a Base64-encoded string. - /// - /// @param rawStr An \c #XMP_StringPtr (char *) string containing the raw data to be converted. - /// - /// @param rawLen The number of characters of raw data to be converted. - /// - /// @param encodedStr [out] A string object in which to return the encoded string. - - static void EncodeToBase64 ( XMP_StringPtr rawStr, - XMP_StringLen rawLen, - tStringObj * encodedStr ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c EncodeToBase64() converts a raw data value passed in a string object to a Base64-encoded string. - /// - /// Overloads the basic form of the function, allowing you to pass a string object as input. - /// It is otherwise identical. - /// - /// @param rawStr A string object containing the raw data to be converted. - /// - /// @param encodedStr [out] A string object in which to return the encoded string. - - static void EncodeToBase64 ( const tStringObj & rawStr, - tStringObj * encodedStr ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c DecodeFromBase64() Decodes a Base64-encoded string to raw data. - /// - /// @param encodedStr An \c #XMP_StringPtr (char *) string containing the encoded data to be converted. - /// - /// @param encodedLen The number of characters of raw data to be converted. - /// - /// @param rawStr [out] A string object in which to return the decoded data. - - static void DecodeFromBase64 ( XMP_StringPtr encodedStr, - XMP_StringLen encodedLen, - tStringObj * rawStr ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c DecodeFromBase64() Decodes a Base64-encoded string, passed as a string object, to raw data. - /// - /// Overloads the basic form of the function, allowing you to pass a string object as input. - /// It is otherwise identical. - /// - /// @param encodedStr An string object containing the encoded data to be converted. - /// - /// @param rawStr [out] A string object in which to return the decoded data. - - static void DecodeFromBase64 ( const tStringObj & encodedStr, - tStringObj * rawStr ); - - /// @} - - // ============================================================================================= - // ============================================================================================= - /// \name JPEG file handling - /// @{ - /// - /// These functions support the partitioning of XMP in JPEG files into standard and extended - /// portions in order to work around the 64KB size limit of JPEG marker segments. - /// - /// @note (Doc note) Add detail about how to write out and read back extended data - - // --------------------------------------------------------------------------------------------- - /// @brief \c PackageForJPEG() creates XMP serializations appropriate for a JPEG file. - /// - /// The standard XMP in a JPEG file is limited to 64K bytes. This function serializes the XMP - /// metadata in an XMP object into a string of RDF (see \c TXMPMeta::SerializeToBuffer()). If - /// the data does not fit into the 64K byte limit, it creates a second packet string with the - /// extended data. - /// - /// @param xmpObj The XMP object containing the metadata. - /// - /// @param standardXMP [out] A string object in which to return the full standard XMP packet. - /// - /// @param extendedXMP [out] A string object in which to return the serialized extended XMP, - /// empty if not needed. - /// - /// @param extendedDigest [out] A string object in which to return an MD5 digest of the serialized - /// extended XMP, empty if not needed. - /// - /// @see \c MergeFromJPEG() - - static void PackageForJPEG ( const TXMPMeta & xmpObj, - tStringObj * standardXMP, - tStringObj * extendedXMP, - tStringObj * extendedDigest ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c MergeFromJPEG() merges standard and extended XMP retrieved from a JPEG file. - /// - /// When an extended partition stores properties that do not fit into the JPEG file limitation - /// of 64K bytes, this function integrates those properties back into the same XMP object with - /// those from the standard XMP packet. - /// - /// @param fullXMP [in, out] An XMP object which the caller has initialized from the standard - /// XMP packet in a JPEG file. The extended XMP is added to this object. - /// - /// @param extendedXMP An XMP object which the caller has initialized from the extended XMP - /// packet in a JPEG file. - /// - /// @see \c PackageForJPEG() - - static void MergeFromJPEG ( TXMPMeta * fullXMP, - const TXMPMeta & extendedXMP ); - - /// @} - - // ============================================================================================= - /// \name Editing utilities - /// @{ - /// - /// These functions are useful in implementing a user interface for editing XMP. They - /// convert sets of property values to and from displayable and manipulable strings, and perform - /// operations on sets of metadata, such as those available from the File Info dialog box. - - // --------------------------------------------------------------------------------------------- - /// @brief \c CatenateArrayItems() creates a single edit string from a set of array item values. - /// - /// Collects the values of all items in an array into a single string, using a specified - /// separation string. Each item in the specified array must be a simple string value. - /// - /// @param xmpObj The XMP object containing the array to be catenated. - /// - /// @param schemaNS The schema namespace URI for the array. Must not be null or the empty string. - /// - /// @param arrayName The name of the array. May be a general path expression, must not be null - /// or the empty string. - /// - /// @param separator The string with which to separate the items in the catenated string. - /// Defaults to "; ", ASCII semicolon and space (U+003B, U+0020). - /// - /// @param quotes The character or characters to use as quotes around array items that contain a - /// separator. Defaults to the double-quote character ("), ASCII quote (U+0022). - /// - /// @param options Option flags to control the catenation. <> - /// - /// @param catedStr [out] A string object in which to return the catenated array items. - /// - /// @see \c SeparateArrayItems() - - static void CatenateArrayItems ( const TXMPMeta & xmpObj, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr separator, - XMP_StringPtr quotes, - XMP_OptionBits options, - tStringObj * catedStr ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c SeparateArrayItems() updates an array from a concatenated edit string of values. - /// - /// This reverses the action of \c CatenateArrayItems(), separating out individual array items - /// from the edit string and updating the array with the new values. Each item in the array must - /// be a simple string value. - /// - /// @param xmpObj The XMP object containing the array to be updated. - /// - /// @param schemaNS The schema namespace URI for the array. Must not be null or the empty string. - /// - /// @param arrayName The name of the array. May be a general path expression, must not be null - /// or the empty string. - /// - /// @param options Option flags to control the separation. <> - /// - /// @param catedStr The concatenated array items, as created by \c CatenateArrayItems(), - /// specified as a null-terminated UTF-8 string. - - static void SeparateArrayItems ( TXMPMeta * xmpObj, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_OptionBits options, - XMP_StringPtr catedStr ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c SeparateArrayItems() updates an array from a concatenated edit string of values. - /// - /// Overloads the basic form of the function, allowing you to pass a string object in which - /// to return the concatenated string. It is otherwise identical; see details for the canonical form. - /// - - static void SeparateArrayItems ( TXMPMeta * xmpObj, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_OptionBits options, - const tStringObj & catedStr ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c RemoveProperties() removes multiple properties from an XMP object. - /// - /// The operation depends on how the namespace and property are specified: - /// - /// \li Non-empty \c schemaNS and \c propName - The named property is removed if it is an - /// external property, or if the \c #kXMPUtil_DoAllProperties option flag is set. It does not - /// matter whether the named property is an actual property or an alias. - /// - /// \li Non-empty \c schemaNS and empty \c propName - All external properties in the named - /// schema are removed. Internal properties are also removed if the - /// \c #kXMPUtil_DoAllProperties option flag is set. In addition, aliases from the named schema - /// are removed if the \c #kXMPUtil_IncludeAliases option flag is set. - /// - /// \li Empty \c schemaNS and empty \c propName - All external properties in all schemas are - /// removed. Internal properties are also removed if the \c #kXMPUtil_DoAllProperties option - /// flag is set. Aliases are handled implicitly, because the associated actuals are removed or - /// not. - /// - /// \li It is an error to pass an empty \c schemaNS and non-empty \c propName. - /// - /// @param xmpObj The XMP object containing the properties to be removed. - /// - /// @param schemaNS Optional schema namespace URI for the properties to be removed. - /// - /// @param propName Optional path expression for the property to be removed. - /// - /// @param options Option flags to control the deletion operation. A logical OR of these - /// bit-flag constants: - /// \li \c #kXMPUtil_DoAllProperties - Delete internal properties in addition to external properties. - /// \li \c #kXMPUtil_IncludeAliases - Include aliases if the schema is explicitly specified. - - static void RemoveProperties ( TXMPMeta * xmpObj, - XMP_StringPtr schemaNS = 0, - XMP_StringPtr propName = 0, - XMP_OptionBits options = 0 ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c AppendProperties() adds or moves properties from one XMP object to another. - /// - /// The default operation is to append only external properties that do not already exist in the - /// destination. Option flags allow you to add internal properties, and to merge values of - /// properties that exist in both the source and destination. - /// - /// \li \c #kXMPUtil_DoAllProperties: Operate on all top-level properties, external and - /// internal. You can use this flag together with \c #kXMPUtil_ReplaceOldValues to replace the - /// values of existing top-level properties. - /// - /// \li \c #kXMPUtil_ReplaceOldValues: Propogate all top-level properties from the source to - /// the destination, replacing any existing values. The values of properties in the - /// destination that are not in the source are not modified.
- /// The keep-or-replace-old notion also applies within structs and arrays. Top-level - /// properties are added to the destination if they do not already exist. If they do exist but - /// differ in form (simple/struct/array) then the destination is not modified. If the forms - /// match, simple properties are left unchanged, while structs and arrays are merged.
- /// Do not use this option when the processing is more complicated. <> - /// - /// \li \c #kXMPUtil_DeleteEmptyValues: An empty value in the source XMP causes the - /// corresponding destination property to be deleted. By default, empty values are treated in - /// the same way as non-empty values. An empty value is a simple empty string, an array with - /// no items,or a struct with no fields. Qualifiers are ignored. - /// - /// The detailed behavior is defined by the following pseudo-code: - /// - ///
-    /// AppendProperties ( sourceXMP, destXMP, options ):
-    ///    doAll = options & kXMPUtil_DoAllProperties
-    ///    replaceOld = options & kXMPUtil_ReplaceOldValues
-    ///    deleteEmpty = options & kXMPUtil_DeleteEmptyValues
-    ///    for all source schema (top level namespaces):
-    ///    for all top level properties in sourceSchema:
-    ///    if doAll or prop is external:
-    ///       AppendSubtree ( sourceNode, destSchema, replaceOld, deleteEmpty )
-    ///
-    /// AppendSubtree ( sourceNode, destParent, replaceOld, deleteEmpty ):
-    ///    if deleteEmpty and source value is empty:
-    ///       delete the corresponding child from destParent
-    ///    else if sourceNode not in destParent (by name):
-    ///       copy sourceNode's subtree to destParent
-    ///    else if replaceOld:
-    ///       delete subtree from destParent
-    ///       copy sourceNode's subtree to destParent
-    ///    else: // (Already exists in dest and not replacing, merge structs and arrays)
-    ///       if sourceNode and destNode forms differ:
-    ///          return, leave the destNode alone
-    ///       else if form is a struct:
-    ///          for each field in sourceNode:
-    ///             AppendSubtree ( sourceNode.field, destNode, replaceOld )
-    ///       else if form is an alt-text array:
-    ///          copy new items by xml:lang value into the destination
-    ///       else if form is an array:
-    ///          copy new items by value into the destination, ignoring order and duplicates
-    /// 
- /// - /// Array item checking is n-squared; this can be time-intensive if the replace-old options is - /// not specified. Each source item is checked to see if it already exists in the destination, - /// without regard to order or duplicates. Simple items are compared by value and \c xml:lang - /// qualifier; other qualifiers are ignored. Structs are recursively compared by field names, - /// without regard to field order. Arrays are compared by recursively comparing all items. - /// - /// @param source The source XMP object. - /// - /// @param dest The destination XMP object. - /// - /// @param options Option flags to control the copying. A logical OR of these bit-flag constants: - /// \li \c kXMPUtil_DoAllProperties - Operate on internal properties in addition to external properties. - /// \li \c kXMPUtil_ReplaceOldValues - Replace the values of existing properties. - /// \li \c kXMPUtil_DeleteEmptyValues - Delete properties if the new value is empty. - - static void AppendProperties ( const TXMPMeta & source, - TXMPMeta * dest, - XMP_OptionBits options = 0 ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c DuplicateSubtree() replicates a subtree from one XMP object into another. - /// - /// The destination can be a different namespace and root location in the same object, or the - /// same or a different location in another XMP object. - /// - /// @param source The source XMP object. - /// - /// @param dest The destination XMP object. - /// - /// @param sourceNS The schema namespace URI for the source subtree. - /// - /// @param sourceRoot The root location for the source subtree. Can be a general path expression, - /// must not be null or the empty string. - /// - /// @param destNS The schema namespace URI for the destination. Defaults to the source namespace. - /// - /// @param destRoot The root location for the destination. Can be a general path expression. - /// Defaults to the source location. - /// - /// @param options Option flags to control the operation. <> - - static void DuplicateSubtree ( const TXMPMeta & source, - TXMPMeta * dest, - XMP_StringPtr sourceNS, - XMP_StringPtr sourceRoot, - XMP_StringPtr destNS = 0, - XMP_StringPtr destRoot = 0, - XMP_OptionBits options = 0 ); - - /// @} - - // ============================================================================================= - - // ============================================================================================= - -}; // class TXMPUtils - -// ================================================================================================= - -#endif // __TXMPUtils_hpp__ diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/include/XMP.incl_cpp b/platform/win32/msvc/external/exiv2/xmpsdk/include/XMP.incl_cpp deleted file mode 100644 index 6501be9c734..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/include/XMP.incl_cpp +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef __XMP_incl_cpp__ -#define __XMP_incl_cpp__ 1 - -// ================================================================================================= -// ADOBE SYSTEMS INCORPORATED -// Copyright 2002-2007 Adobe Systems Incorporated -// All Rights Reserved -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -// ================================================================================================ -/// \file XMP.incl_cpp -/// \brief Overall client glue file for the XMP toolkit. -/// -/// This is an overall client source file of XMP toolkit glue, the only XMP-specific one that -/// clients should build in projects. This ensures that all of the client-side glue code for the -/// XMP toolkit gets compiled. -/// -/// You cannot compile this file directly, because the template's string type must be declared and -/// only the client can do that. Instead, include this in some other source file. For example, -/// to use std::string you only need these two lines: -/// -/// \code -/// #include -/// #include "XMP.incl_cpp" -/// \endcode - - -#include "XMPSDK.hpp" // ! This must be the first include! - -#define XMP_ClientBuild 1 - -#ifdef _MSC_VER - #if XMP_DebugBuild - #pragma warning ( push, 4 ) - #else - #pragma warning ( push, 3 ) - #endif - #pragma warning ( disable : 4189 ) // local variable is initialized but not referenced - #pragma warning ( disable : 4702 ) // unreachable code - #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) -#endif - -#if defined ( TXMP_STRING_TYPE ) && (! TXMP_EXPAND_INLINE) - - // We're using a single out of line instantiation. Do it here. - - #include "client-glue/TXMPMeta.incl_cpp" - #include "client-glue/TXMPIterator.incl_cpp" - #include "client-glue/TXMPUtils.incl_cpp" - template class TXMPMeta ; - template class TXMPIterator ; - template class TXMPUtils ; - -#endif - -#ifdef _MSC_VER - #pragma warning ( pop ) -#endif - -#endif // __XMP_incl_cpp__ diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/include/XMPSDK.hpp b/platform/win32/msvc/external/exiv2/xmpsdk/include/XMPSDK.hpp deleted file mode 100644 index 229714f8d83..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/include/XMPSDK.hpp +++ /dev/null @@ -1,89 +0,0 @@ -#ifndef __XMP_hpp__ -#define __XMP_hpp__ 1 - -// ================================================================================================= -// Copyright 2002-2007 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -// ================================================================================================ -/// \file XMPSDK.hpp -/// \brief Overall header file for the XMP Toolkit -/// -/// This is an overall header file, the only one that C++ clients should include. -/// -/// The full client API is in the \c TXMPMeta.hpp, \c TXMPIterator.hpp, \c TXMPUtils.hpp headers. -/// Read these for information, but do not include them directly. The \c TXMP... classes are C++ -/// template classes that must be instantiated with a string class such as \c std::string. The -/// string class is used to return text strings for property values, serialized XMP, and so on. -/// Clients must also compile \c XMP.incl_cpp to ensure that all client-side glue code is generated. -/// This should be done by including it in exactly one client source file. -/// -/// There are two C preprocessor macros that simplify use of the templates: -/// -/// \li \c TXMP_STRING_TYPE - Define this as the string class to use with the template. You will get -/// the template headers included and typedefs (\c SXMPMeta, and so on) to use in your code. -/// -/// \li \c TXMP_EXPAND_INLINE - Define this as 1 if you want to have the template functions expanded -/// inline in your code. Leave it undefined, or defined as 0, to use out-of-line instantiations of -/// the template functions. Compiling \c XMP.incl_cpp generates explicit out-of-line -/// instantiations if \c TXMP_EXPAND_INLINE is off. -/// -/// The template parameter, class \c tStringObj, must have the following member functions (which -/// match those for \c std::string): -/// -///
-///  tStringObj& assign ( const char * str, size_t len )
-///  size_t size() const
-///  const char * c_str() const
-/// 
-/// -/// The string class must be suitable for at least UTF-8. This is the encoding used for all general -/// values, and is the default encoding for serialized XMP. The string type must also be suitable -/// for UTF-16 or UTF-32 if those serialization encodings are used. This mainly means tolerating -/// embedded 0 bytes, which \c std::string does. -// ================================================================================================ - -/// /c XMP_Environment.h must be the first included header. -#include "XMP_Environment.h" - -#include "XMP_Version.h" -#include "XMP_Const.h" - -#ifdef _MSC_VER - #if XMP_DebugBuild - #pragma warning ( push, 4 ) - #else - #pragma warning ( push, 3 ) - #endif - #pragma warning ( disable : 4702 ) // unreachable code - #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) -#endif - -#if defined ( TXMP_STRING_TYPE ) - - #include "TXMPMeta.hpp" - #include "TXMPIterator.hpp" - #include "TXMPUtils.hpp" - typedef class TXMPMeta SXMPMeta; // For client convenience. - typedef class TXMPIterator SXMPIterator; - typedef class TXMPUtils SXMPUtils; - #if TXMP_EXPAND_INLINE - #error "TXMP_EXPAND_INLINE is not working at present. Please don't use it." - #include "client-glue/TXMPMeta.incl_cpp" - #include "client-glue/TXMPIterator.incl_cpp" - #include "client-glue/TXMPUtils.incl_cpp" - #endif - -#endif // TXMP_STRING_TYPE - -#ifdef _MSC_VER - #pragma warning ( pop ) -#endif - -// ================================================================================================= - -#endif // __XMP_hpp__ diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/include/XMP_Const.h b/platform/win32/msvc/external/exiv2/xmpsdk/include/XMP_Const.h deleted file mode 100644 index 031618884b9..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/include/XMP_Const.h +++ /dev/null @@ -1,1330 +0,0 @@ -#ifndef __XMP_Const_h__ -#define __XMP_Const_h__ 1 - -// ================================================================================================= -// Copyright 2002-2008 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#include "XMP_Environment.h" - - #include - -#if XMP_MacBuild // ! No stdint.h on Windows and some UNIXes. - #include -#endif - -#if __cplusplus -extern "C" { -#endif - -// ================================================================================================= -/// \file XMP_Const.h -/// \brief Common C/C++ types and constants for the XMP toolkit. -// ================================================================================================= - -// ================================================================================================= -// Basic types and constants -// ========================= - -// The XMP_... types are used on the off chance that the ..._t types present a problem. In that -// case only the declarations of the XMP_... types needs to change, not all of the uses. These -// types are used where fixed sizes are required in order to have a known ABI for a DLL build. - -#if XMP_MacBuild - - typedef int8_t XMP_Int8; - typedef int16_t XMP_Int16; - typedef int32_t XMP_Int32; - typedef int64_t XMP_Int64; - - typedef uint8_t XMP_Uns8; - typedef uint16_t XMP_Uns16; - typedef uint32_t XMP_Uns32; - typedef uint64_t XMP_Uns64; - -#else - - typedef signed char XMP_Int8; - typedef signed short XMP_Int16; - typedef signed long XMP_Int32; - typedef signed long long XMP_Int64; - - typedef unsigned char XMP_Uns8; - typedef unsigned short XMP_Uns16; - typedef unsigned long XMP_Uns32; - typedef unsigned long long XMP_Uns64; - -#endif - -typedef XMP_Uns8 XMP_Bool; - -/// An "ABI safe" pointer to the internal part of an XMP object. Use to pass an XMP object across -/// client DLL boundaries. See \c TXMPMeta::GetInternalRef(). -typedef struct __XMPMeta__ * XMPMetaRef; - -/// An "ABI safe" pointer to the internal part of an XMP iteration object. Use to pass an XMP -/// iteration object across client DLL boundaries. See \c TXMPIterator. -typedef struct __XMPIterator__ * XMPIteratorRef; - -/// An "ABI safe" pointer to the internal part of an XMP document operations object. Use to pass an -/// XMP document operations object across client DLL boundaries. See \c TXMPDocOps. -typedef struct __XMPDocOps__ * XMPDocOpsRef; - -/// An "ABI safe" pointer to the internal part of an XMP file-handling object. Use to pass an XMP -/// file-handling object across client DLL boundaries. See \c TXMPFiles. -typedef struct __XMPFiles__ * XMPFilesRef; - -// ================================================================================================= - -/// \name General scalar types and constants -/// @{ - -/// \typedef XMP_StringPtr -/// \brief The type for input string parameters. A const char *, a null-terminated UTF-8 -/// string. - -/// \typedef XMP_StringLen -/// \brief The type for string length parameters. A 32-bit unsigned integer, as big as will be -/// practically needed. - -/// \typedef XMP_Index -/// \brief The type for offsets and indices. A 32-bit signed integer. It is signed to allow -1 for -/// loop termination. - -/// \typedef XMP_OptionBits -/// \brief The type for a collection of 32 flag bits. Individual flags are defined as enum value bit -/// masks; see \c #kXMP_PropValueIsURI and following. A number of macros provide common set or set -/// operations, such as \c XMP_PropIsSimple. For other tests use an expression like options & -/// kXMP_. When passing multiple option flags use the bitwise-OR operator. '|', -/// not the arithmatic plus, '+'. - -typedef const char * XMP_StringPtr; // Points to a null terminated UTF-8 string. -typedef XMP_Uns32 XMP_StringLen; -typedef XMP_Int32 XMP_Index; // Signed, sometimes -1 is handy. -typedef XMP_Uns32 XMP_OptionBits; // Used as 32 individual bits. - -/// \def kXMP_TrueStr -/// \brief The canonical true string value for Booleans in serialized XMP. -/// -/// Code that converts from string to bool should be case insensitive, and also allow "1". - -/// \def kXMP_FalseStr -/// \brief The canonical false string value for Booleans in serialized XMP. -/// -/// Code that converts from string to bool should be case insensitive, and also allow "0". - -#define kXMP_TrueStr "True" // Serialized XMP spellings, not for the type bool. -#define kXMP_FalseStr "False" - -/// Type for yes/no/maybe answers. The values are picked to allow Boolean-like usage. The yes and -/// values are true (non-zero), the no value is false (zero). -enum { - /// The part or parts have definitely changed. - kXMPTS_Yes = 1, - /// The part or parts have definitely not changed. - kXMPTS_No = 0, - /// The part or parts might, or might not, have changed. - kXMPTS_Maybe = -1 -}; -typedef XMP_Int8 XMP_TriState; - -/// @} - -// ================================================================================================= - -/// \struct XMP_DateTime -/// \brief The expanded type for a date and time. -/// -/// Dates and time in the serialized XMP are ISO 8601 strings. The \c XMP_DateTime struct allows -/// easy conversion with other formats. -/// -/// All of the fields are 32 bit, even though most could be 8 bit. This avoids overflow when doing -/// carries for arithmetic or normalization. All fields have signed values for the same reasons. -/// -/// Date-time values are occasionally used with only a date or only a time component. A date without -/// a time has zeros in the \c XMP_DateTime struct for all time fields. A time without a date has -/// zeros for all date fields (year, month, and day). -/// -/// \c TXMPUtils provides utility functions for manipulating date-time values. -/// -/// @see \c TXMPUtils::ConvertToDate(), \c TXMPUtils::ConvertFromDate(), -/// \c TXMPUtils::CompareDateTime(), \c TXMPUtils::ConvertToLocalTime(), -/// \c TXMPUtils::ConvertToUTCTime(), \c TXMPUtils::CurrentDateTime(), -/// \c TXMPUtils::SetTimeZone() - -struct XMP_DateTime { - - /// The year, can be negative. - XMP_Int32 year; - - /// The month in the range 1..12. - XMP_Int32 month; - - /// The day of the month in the range 1..31. - XMP_Int32 day; - - /// The hour in the range 0..23. - XMP_Int32 hour; - - /// The minute in the range 0..59. - XMP_Int32 minute; - - /// The second in the range 0..59. - XMP_Int32 second; - - /// The "sign" of the time zone, \c #kXMP_TimeIsUTC (0) means UTC, \c #kXMP_TimeWestOfUTC (-1) - /// is west, \c #kXMP_TimeEastOfUTC (+1) is east. - XMP_Int32 tzSign; - - /// The time zone hour in the range 0..23. - XMP_Int32 tzHour; - - /// The time zone minute in the range 0..59. - XMP_Int32 tzMinute; - - /// Nanoseconds within a second, often left as zero. - XMP_Int32 nanoSecond; - -}; - -/// Constant values for \c XMP_DateTime::tzSign field. -enum { - /// Time zone is west of UTC. - kXMP_TimeWestOfUTC = -1, - /// UTC time. - kXMP_TimeIsUTC = 0, - /// Time zone is east of UTC. - kXMP_TimeEastOfUTC = +1 -}; - -// ================================================================================================= -// Standard namespace URI constants -// ================================ - -/// \name XML namespace constants for standard XMP schema. -/// @{ -/// -/// \def kXMP_NS_XMP -/// \brief The XML namespace for the XMP "basic" schema. -/// -/// \def kXMP_NS_XMP_Rights -/// \brief The XML namespace for the XMP copyright schema. -/// -/// \def kXMP_NS_XMP_MM -/// \brief The XML namespace for the XMP digital asset management schema. -/// -/// \def kXMP_NS_XMP_BJ -/// \brief The XML namespace for the job management schema. -/// -/// \def kXMP_NS_XMP_T -/// \brief The XML namespace for the XMP text document schema. -/// -/// \def kXMP_NS_XMP_T_PG -/// \brief The XML namespace for the XMP paged document schema. -/// -/// \def kXMP_NS_PDF -/// \brief The XML namespace for the PDF schema. -/// -/// \def kXMP_NS_Photoshop -/// \brief The XML namespace for the Photoshop custom schema. -/// -/// \def kXMP_NS_EXIF -/// \brief The XML namespace for Adobe's EXIF schema. -/// -/// \def kXMP_NS_TIFF -/// \brief The XML namespace for Adobe's TIFF schema. -/// -/// @} - -#define kXMP_NS_XMP "http://ns.adobe.com/xap/1.0/" - -#define kXMP_NS_XMP_Rights "http://ns.adobe.com/xap/1.0/rights/" -#define kXMP_NS_XMP_MM "http://ns.adobe.com/xap/1.0/mm/" -#define kXMP_NS_XMP_BJ "http://ns.adobe.com/xap/1.0/bj/" - -#define kXMP_NS_PDF "http://ns.adobe.com/pdf/1.3/" -#define kXMP_NS_Photoshop "http://ns.adobe.com/photoshop/1.0/" -#define kXMP_NS_PSAlbum "http://ns.adobe.com/album/1.0/" -#define kXMP_NS_EXIF "http://ns.adobe.com/exif/1.0/" -#define kXMP_NS_EXIF_Aux "http://ns.adobe.com/exif/1.0/aux/" -#define kXMP_NS_TIFF "http://ns.adobe.com/tiff/1.0/" -#define kXMP_NS_PNG "http://ns.adobe.com/png/1.0/" -#define kXMP_NS_SWF "http://ns.adobe.com/swf/1.0/" -#define kXMP_NS_JPEG "http://ns.adobe.com/jpeg/1.0/" -#define kXMP_NS_JP2K "http://ns.adobe.com/jp2k/1.0/" -#define kXMP_NS_CameraRaw "http://ns.adobe.com/camera-raw-settings/1.0/" -#define kXMP_NS_DM "http://ns.adobe.com/xmp/1.0/DynamicMedia/" -#define kXMP_NS_ASF "http://ns.adobe.com/asf/1.0/" -#define kXMP_NS_WAV "http://ns.adobe.com/xmp/wav/1.0/" - -#define kXMP_NS_XMP_Note "http://ns.adobe.com/xmp/note/" - -#define kXMP_NS_AdobeStockPhoto "http://ns.adobe.com/StockPhoto/1.0/" -#define kXMP_NS_CreatorAtom "http://ns.adobe.com/creatorAtom/1.0/" - -/// \name XML namespace constants for qualifiers and structured property fields. -/// @{ -/// -/// \def kXMP_NS_XMP_IdentifierQual -/// \brief The XML namespace for qualifiers of the xmp:Identifier property. -/// -/// \def kXMP_NS_XMP_Dimensions -/// \brief The XML namespace for fields of the Dimensions type. -/// -/// \def kXMP_NS_XMP_Image -/// \brief The XML namespace for fields of a graphical image. Used for the Thumbnail type. -/// -/// \def kXMP_NS_XMP_ResourceEvent -/// \brief The XML namespace for fields of the ResourceEvent type. -/// -/// \def kXMP_NS_XMP_ResourceRef -/// \brief The XML namespace for fields of the ResourceRef type. -/// -/// \def kXMP_NS_XMP_ST_Version -/// \brief The XML namespace for fields of the Version type. -/// -/// \def kXMP_NS_XMP_ST_Job -/// \brief The XML namespace for fields of the JobRef type. -/// -/// @} - -#define kXMP_NS_XMP_IdentifierQual "http://ns.adobe.com/xmp/Identifier/qual/1.0/" -#define kXMP_NS_XMP_Dimensions "http://ns.adobe.com/xap/1.0/sType/Dimensions#" -#define kXMP_NS_XMP_Text "http://ns.adobe.com/xap/1.0/t/" -#define kXMP_NS_XMP_PagedFile "http://ns.adobe.com/xap/1.0/t/pg/" -#define kXMP_NS_XMP_Graphics "http://ns.adobe.com/xap/1.0/g/" -#define kXMP_NS_XMP_Image "http://ns.adobe.com/xap/1.0/g/img/" -#define kXMP_NS_XMP_Font "http://ns.adobe.com/xap/1.0/sType/Font#" -#define kXMP_NS_XMP_ResourceEvent "http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" -#define kXMP_NS_XMP_ResourceRef "http://ns.adobe.com/xap/1.0/sType/ResourceRef#" -#define kXMP_NS_XMP_ST_Version "http://ns.adobe.com/xap/1.0/sType/Version#" -#define kXMP_NS_XMP_ST_Job "http://ns.adobe.com/xap/1.0/sType/Job#" -#define kXMP_NS_XMP_ManifestItem "http://ns.adobe.com/xap/1.0/sType/ManifestItem#" - -// Deprecated XML namespace constants -#define kXMP_NS_XMP_T "http://ns.adobe.com/xap/1.0/t/" -#define kXMP_NS_XMP_T_PG "http://ns.adobe.com/xap/1.0/t/pg/" -#define kXMP_NS_XMP_G_IMG "http://ns.adobe.com/xap/1.0/g/img/" - -/// \name XML namespace constants from outside Adobe. -/// @{ -/// -/// \def kXMP_NS_DC -/// \brief The XML namespace for the Dublin Core schema. -/// -/// \def kXMP_NS_IPTCCore -/// \brief The XML namespace for the IPTC Core schema. -/// -/// \def kXMP_NS_RDF -/// \brief The XML namespace for RDF. -/// -/// \def kXMP_NS_XML -/// \brief The XML namespace for XML. -/// -/// @} - -#define kXMP_NS_DC "http://purl.org/dc/elements/1.1/" - -#define kXMP_NS_IPTCCore "http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/" - -#define kXMP_NS_DICOM "http://ns.adobe.com/DICOM/" - -#define kXMP_NS_PDFA_Schema "http://www.aiim.org/pdfa/ns/schema#" -#define kXMP_NS_PDFA_Property "http://www.aiim.org/pdfa/ns/property#" -#define kXMP_NS_PDFA_Type "http://www.aiim.org/pdfa/ns/type#" -#define kXMP_NS_PDFA_Field "http://www.aiim.org/pdfa/ns/field#" -#define kXMP_NS_PDFA_ID "http://www.aiim.org/pdfa/ns/id/" -#define kXMP_NS_PDFA_Extension "http://www.aiim.org/pdfa/ns/extension/" - -#define kXMP_NS_PDFX "http://ns.adobe.com/pdfx/1.3/" -#define kXMP_NS_PDFX_ID "http://www.npes.org/pdfx/ns/id/" - -#define kXMP_NS_RDF "http://www.w3.org/1999/02/22-rdf-syntax-ns#" -#define kXMP_NS_XML "http://www.w3.org/XML/1998/namespace" - -// ================================================================================================= -// Enums and macros used for option bits -// ===================================== - -/// \name Macros for standard option selections. -/// @{ -/// -/// \def kXMP_ArrayLastItem -/// \brief Options macro accesses last array item. -/// -/// \def kXMP_UseNullTermination -/// \brief Options macro sets string style. -/// -/// \def kXMP_NoOptions -/// \brief Options macro clears all property-type bits. -/// -/// @} - -#define kXMP_ArrayLastItem ((XMP_Index)(-1L)) -#define kXMP_UseNullTermination ((XMP_StringLen)(~0UL)) -#define kXMP_NoOptions ((XMP_OptionBits)0UL) - -/// \name Macros for setting and testing general option bits. -/// @{ -/// -/// \def XMP_SetOption -/// \brief Macro sets an option flag bit. -/// \param var A variable storing an options flag. -/// \param opt The bit-flag constant to set. -/// -/// \def XMP_ClearOption -/// \brief Macro clears an option flag bit. -/// \param var A variable storing an options flag. -/// \param opt The bit-flag constant to clear. -/// -/// \def XMP_TestOption -/// \brief Macro reports whether an option flag bit is set. -/// \param var A variable storing an options flag. -/// \param opt The bit-flag constant to test. -/// \return True if the bit is set. -/// -/// \def XMP_OptionIsSet -/// \brief Macro reports whether an option flag bit is set. -/// \param var A variable storing an options flag. -/// \param opt The bit-flag constant to test. -/// \return True if the bit is set. -/// -/// \def XMP_OptionIsClear -/// \brief Macro reports whether an option flag bit is clear. -/// \param var A variable storing an options flag. -/// \param opt The bit-flag constant to test. -/// \return True if the bit is clear. -/// -/// @} - -#define XMP_SetOption(var,opt) var |= (opt) -#define XMP_ClearOption(var,opt) var &= ~(opt) -#define XMP_TestOption(var,opt) (((var) & (opt)) != 0) -#define XMP_OptionIsSet(var,opt) (((var) & (opt)) != 0) -#define XMP_OptionIsClear(var,opt) (((var) & (opt)) == 0) - -/// \name Macros for setting and testing specific option bits. -/// @{ -/// -/// \def XMP_PropIsSimple -/// \brief Macro reports the property type specified by an options flag. -/// \param opt The options flag to check. -/// -/// \def XMP_PropIsStruct -/// \brief Macro reports the property type specified by an options flag. -/// \param opt The options flag to check. -/// -/// \def XMP_PropIsArray -/// \brief Macro reports the property type specified by an options flag. -/// \param opt The options flag to check. -/// -/// \def XMP_ArrayIsUnordered -/// \brief Macro reports the property type specified by an options flag. -/// \param opt The options flag to check. -/// -/// \def XMP_ArrayIsOrdered -/// \brief Macro reports the property type specified by an options flag. -/// \param opt The options flag to check. -/// -/// \def XMP_ArrayIsAlternate -/// \brief Macro reports the property type specified by an options flag. -/// \param opt The options flag to check. -/// -/// \def XMP_ArrayIsAltText -/// \brief Macro reports the property type specified by an options flag. -/// \param opt The options flag to check. -/// -/// \def XMP_PropHasQualifiers -/// \brief Macro reports the property type specified by an options flag. -/// \param opt The options flag to check. -/// -/// \def XMP_PropIsQualifier -/// \brief Macro reports the property type specified by an options flag. -/// \param opt The options flag to check. -/// -/// \def XMP_PropHasLang -/// \brief Macro reports the property type specified by an options flag. -/// \param opt The options flag to check. -/// -/// \def XMP_NodeIsSchema -/// \brief Macro reports the property type specified by an options flag. -/// \param opt The options flag to check. -/// -/// \def XMP_PropIsAlias -/// \brief Macro reports the property type specified by an options flag. -/// \param opt The options flag to check. -/// -/// @} - -#define XMP_PropIsSimple(opt) (((opt) & kXMP_PropCompositeMask) == 0) -#define XMP_PropIsStruct(opt) (((opt) & kXMP_PropValueIsStruct) != 0) -#define XMP_PropIsArray(opt) (((opt) & kXMP_PropValueIsArray) != 0) - -#define XMP_ArrayIsUnordered(opt) (((opt) & kXMP_PropArrayIsOrdered) == 0) -#define XMP_ArrayIsOrdered(opt) (((opt) & kXMP_PropArrayIsOrdered) != 0) -#define XMP_ArrayIsAlternate(opt) (((opt) & kXMP_PropArrayIsAlternate) != 0) -#define XMP_ArrayIsAltText(opt) (((opt) & kXMP_PropArrayIsAltText) != 0) - -#define XMP_PropHasQualifiers(opt) (((opt) & kXMP_PropHasQualifiers) != 0) -#define XMP_PropIsQualifier(opt) (((opt) & kXMP_PropIsQualifier) != 0) -#define XMP_PropHasLang(opt) (((opt) & kXMP_PropHasLang) != 0) - -#define XMP_NodeIsSchema(opt) (((opt) & kXMP_SchemaNode) != 0) -#define XMP_PropIsAlias(opt) (((opt) & kXMP_PropIsAlias) != 0) - -// ------------------------------------------------------------------------------------------------- - -/// Option bit flags for the \c TXMPMeta property accessor functions. -enum { - - /// The XML string form of the property value is a URI, use rdf:resource attribute. DISCOURAGED - kXMP_PropValueIsURI = 0x00000002UL, - - // ------------------------------------------------------ - // Options relating to qualifiers attached to a property. - - /// The property has qualifiers, includes \c rdf:type and \c xml:lang. - kXMP_PropHasQualifiers = 0x00000010UL, - - /// This is a qualifier for some other property, includes \c rdf:type and \c xml:lang. - /// Qualifiers can have arbitrary structure, and can themselves have qualifiers. If the - /// qualifier itself has a structured value, this flag is only set for the top node of the - /// qualifier's subtree. - kXMP_PropIsQualifier = 0x00000020UL, - - /// Implies \c #kXMP_PropHasQualifiers, property has \c xml:lang. - kXMP_PropHasLang = 0x00000040UL, - - /// Implies \c #kXMP_PropHasQualifiers, property has \c rdf:type. - kXMP_PropHasType = 0x00000080UL, - - // -------------------------------------------- - // Options relating to the data structure form. - - /// The value is a structure with nested fields. - kXMP_PropValueIsStruct = 0x00000100UL, - - /// The value is an array (RDF alt/bag/seq). The "ArrayIs..." flags identify specific types - /// of array; default is a general unordered array, serialized using an \c rdf:Bag container. - kXMP_PropValueIsArray = 0x00000200UL, - - /// The item order does not matter. - kXMP_PropArrayIsUnordered = kXMP_PropValueIsArray, - - /// Implies \c #kXMP_PropValueIsArray, item order matters. It is serialized using an \c rdf:Seq container. - kXMP_PropArrayIsOrdered = 0x00000400UL, - - /// Implies \c #kXMP_PropArrayIsOrdered, items are alternates. It is serialized using an \c rdf:Alt container. - kXMP_PropArrayIsAlternate = 0x00000800UL, - - // ------------------------------------ - // Additional struct and array options. - - /// Implies \c #kXMP_PropArrayIsAlternate, items are localized text. Each array element is a - /// simple property with an \c xml:lang attribute. - kXMP_PropArrayIsAltText = 0x00001000UL, - - // kXMP_InsertBeforeItem = 0x00004000UL, ! Used by SetXyz functions. - // kXMP_InsertAfterItem = 0x00008000UL, ! Used by SetXyz functions. - - // ---------------------------- - // Other miscellaneous options. - - /// This property is an alias name for another property. This is only returned by - /// \c TXMPMeta::GetProperty() and then only if the property name is simple, not an path expression. - kXMP_PropIsAlias = 0x00010000UL, - - /// This property is the base value (actual) for a set of aliases.This is only returned by - /// \c TXMPMeta::GetProperty() and then only if the property name is simple, not an path expression. - kXMP_PropHasAliases = 0x00020000UL, - - /// The value of this property is "owned" by the application, and should not generally be editable in a UI. - kXMP_PropIsInternal = 0x00040000UL, - - /// The value of this property is not derived from the document content. - kXMP_PropIsStable = 0x00100000UL, - - /// The value of this property is derived from the document content. - kXMP_PropIsDerived = 0x00200000UL, - - // kXMPUtil_AllowCommas = 0x10000000UL, ! Used by TXMPUtils::CatenateArrayItems and ::SeparateArrayItems. - // kXMP_DeleteExisting = 0x20000000UL, ! Used by TXMPMeta::SetXyz functions to delete any pre-existing property. - // kXMP_SchemaNode = 0x80000000UL, ! Returned by iterators - #define to avoid warnings - - // ------------------------------ - // Masks that are multiple flags. - - /// Property type bit-flag mask for all array types - kXMP_PropArrayFormMask = kXMP_PropValueIsArray | kXMP_PropArrayIsOrdered | kXMP_PropArrayIsAlternate | kXMP_PropArrayIsAltText, - - /// Property type bit-flag mask for composite types (array and struct) - kXMP_PropCompositeMask = kXMP_PropValueIsStruct | kXMP_PropArrayFormMask, - - /// Mask for bits that are reserved for transient use by the implementation. - kXMP_ImplReservedMask = 0x70000000L - -}; - -#define kXMP_SchemaNode ((XMP_OptionBits)0x80000000UL) - -/// Option bit flags for the \c TXMPMeta property setting functions. These option bits are shared -/// with the accessor functions: -/// \li \c #kXMP_PropValueIsURI -/// \li \c #kXMP_PropValueIsStruct -/// \li \c #kXMP_PropValueIsArray -/// \li \c #kXMP_PropArrayIsOrdered -/// \li \c #kXMP_PropArrayIsAlternate -/// \li \c #kXMP_PropArrayIsAltText -enum { - - /// Option for array item location: Insert a new item before the given index. - kXMP_InsertBeforeItem = 0x00004000UL, - - /// Option for array item location: Insert a new item after the given index. - kXMP_InsertAfterItem = 0x00008000UL, - - /// Delete any pre-existing property. - kXMP_DeleteExisting = 0x20000000UL, - - /// Bit-flag mask for property-value option bits - kXMP_PropValueOptionsMask = kXMP_PropValueIsURI, - - /// Bit-flag mask for array-item location bits - kXMP_PropArrayLocationMask = kXMP_InsertBeforeItem | kXMP_InsertAfterItem - -}; - -// ------------------------------------------------------------------------------------------------- - -/// Option bit flags for \c TXMPMeta::ParseFromBuffer(). -enum { - - /// Require a surrounding \c x:xmpmeta element. - kXMP_RequireXMPMeta = 0x0001UL, - - /// This is the not last input buffer for this parse stream. - kXMP_ParseMoreBuffers = 0x0002UL, - - /// Do not reconcile alias differences, throw an exception. - kXMP_StrictAliasing = 0x0004UL - -}; - -/// Option bit flags for \c TXMPMeta::SerializeToBuffer(). -enum { - - // *** Option to remove empty struct/array, or leaf with empty value? - - /// Omit the XML packet wrapper. - kXMP_OmitPacketWrapper = 0x0010UL, - - /// Default is a writeable packet. - kXMP_ReadOnlyPacket = 0x0020UL, - - /// Use a compact form of RDF. - kXMP_UseCompactFormat = 0x0040UL, - - /// Include a padding allowance for a thumbnail image. - kXMP_IncludeThumbnailPad = 0x0100UL, - - /// The padding parameter is the overall packet length. - kXMP_ExactPacketLength = 0x0200UL, - - /// Show aliases as XML comments. - kXMP_WriteAliasComments = 0x0400UL, - - /// Omit all formatting whitespace. - kXMP_OmitAllFormatting = 0x0800UL, - - /// Omit the x:xmpmeta element surrounding the rdf:RDF element. - kXMP_OmitXMPMetaElement = 0x1000UL, - - _XMP_LittleEndian_Bit = 0x0001UL, // ! Don't use directly, see the combined values below! - _XMP_UTF16_Bit = 0x0002UL, - _XMP_UTF32_Bit = 0x0004UL, - - /// Bit-flag mask for encoding-type bits - kXMP_EncodingMask = 0x0007UL, - - /// Use UTF8 encoding - kXMP_EncodeUTF8 = 0UL, - - /// Use UTF16 big-endian encoding - kXMP_EncodeUTF16Big = _XMP_UTF16_Bit, - - /// Use UTF16 little-endian encoding - kXMP_EncodeUTF16Little = _XMP_UTF16_Bit | _XMP_LittleEndian_Bit, - - /// Use UTF32 big-endian encoding - kXMP_EncodeUTF32Big = _XMP_UTF32_Bit, - - /// Use UTF13 little-endian encoding - kXMP_EncodeUTF32Little = _XMP_UTF32_Bit | _XMP_LittleEndian_Bit - -}; - -// ------------------------------------------------------------------------------------------------- - -/// Option bit flags for \c TXMPIterator construction. -enum { - - /// The low 8 bits are an enum of what data structure to iterate. - kXMP_IterClassMask = 0x00FFUL, - - /// Iterate the property tree of a TXMPMeta object. - kXMP_IterProperties = 0x0000UL, - - /// Iterate the global alias table. - kXMP_IterAliases = 0x0001UL, - - /// Iterate the global namespace table. - kXMP_IterNamespaces = 0x0002UL, - - /// Just do the immediate children of the root, default is subtree. - kXMP_IterJustChildren = 0x0100UL, - - /// Just do the leaf nodes, default is all nodes in the subtree. - kXMP_IterJustLeafNodes = 0x0200UL, - - /// Return just the leaf part of the path, default is the full path. - kXMP_IterJustLeafName = 0x0400UL, - - /// Include aliases, default is just actual properties. - kXMP_IterIncludeAliases = 0x0800UL, - - /// Omit all qualifiers. - kXMP_IterOmitQualifiers = 0x1000UL - -}; - -/// Option bit flags for \c TXMPIterator::Skip(). -enum { - - /// Skip the subtree below the current node. - kXMP_IterSkipSubtree = 0x0001UL, - - /// Skip the subtree below and remaining siblings of the current node. - kXMP_IterSkipSiblings = 0x0002UL - -}; - -// ------------------------------------------------------------------------------------------------- -/// Option bit flags for \c TXMPUtils::CatenateArrayItems() and \c TXMPUtils::SeparateArrayItems(). -/// These option bits are shared with the accessor functions: -/// \li \c #kXMP_PropValueIsArray, -/// \li \c #kXMP_PropArrayIsOrdered, -/// \li \c #kXMP_PropArrayIsAlternate, -/// \li \c #kXMP_PropArrayIsAltText -enum { - - /// Allow commas in item values, default is separator. - kXMPUtil_AllowCommas = 0x10000000UL - -}; - -/// Option bit flags for \c TXMPUtils::RemoveProperties() and \c TXMPUtils::AppendProperties(). -enum { - - /// Do all properties, default is just external properties. - kXMPUtil_DoAllProperties = 0x0001UL, - - /// Replace existing values, default is to leave them. - kXMPUtil_ReplaceOldValues = 0x0002UL, - - /// Delete properties if the new value is empty. - kXMPUtil_DeleteEmptyValues = 0x0004UL, - - /// Include aliases, default is just actual properties. - kXMPUtil_IncludeAliases = 0x0800UL - -}; - -// ================================================================================================= -// Types and Constants for XMPFiles -// ================================ - -/// File format constants for use with XMPFiles. -enum { - - // ! Hex used to avoid gcc warnings. Leave the constants so the text reads big endian. There - // ! seems to be no decent way on UNIX to determine the target endianness at compile time. - // ! Forcing it on the client isn't acceptable. - - // -------------------- - // Public file formats. - - /// Public file format constant: 'PDF ' - kXMP_PDFFile = 0x50444620UL, - /// Public file format constant: 'PS ', general PostScript following DSC conventions - kXMP_PostScriptFile = 0x50532020UL, - /// Public file format constant: 'EPS ', encapsulated PostScript - kXMP_EPSFile = 0x45505320UL, - - /// Public file format constant: 'JPEG' - kXMP_JPEGFile = 0x4A504547UL, - /// Public file format constant: 'JPX ', JPEG 2000, ISO 15444-1 - kXMP_JPEG2KFile = 0x4A505820UL, - /// Public file format constant: 'TIFF' - kXMP_TIFFFile = 0x54494646UL, - /// Public file format constant: 'GIF ' - kXMP_GIFFile = 0x47494620UL, - /// Public file format constant: 'PNG ' - kXMP_PNGFile = 0x504E4720UL, - - /// Public file format constant: 'SWF ' - kXMP_SWFFile = 0x53574620UL, - /// Public file format constant: 'FLA ' - kXMP_FLAFile = 0x464C4120UL, - /// Public file format constant: 'FLV ' - kXMP_FLVFile = 0x464C5620UL, - - /// Public file format constant: 'MOV ', Quicktime - kXMP_MOVFile = 0x4D4F5620UL, - /// Public file format constant: 'AVI ' - kXMP_AVIFile = 0x41564920UL, - /// Public file format constant: 'CIN ', Cineon - kXMP_CINFile = 0x43494E20UL, - /// Public file format constant: 'WAV ' - kXMP_WAVFile = 0x57415620UL, - /// Public file format constant: 'MP3 ' - kXMP_MP3File = 0x4D503320UL, - /// Public file format constant: 'SES ', Audition session - kXMP_SESFile = 0x53455320UL, - /// Public file format constant: 'CEL ', Audition loop - kXMP_CELFile = 0x43454C20UL, - /// Public file format constant: 'MPEG' - kXMP_MPEGFile = 0x4D504547UL, - /// Public file format constant: 'MP2 ' - kXMP_MPEG2File = 0x4D503220UL, - /// Public file format constant: 'MP4 ', ISO 14494-12 and -14 - kXMP_MPEG4File = 0x4D503420UL, - /// Public file format constant: 'WMAV', Windows Media Audio and Video - kXMP_WMAVFile = 0x574D4156UL, - /// Public file format constant: 'AIFF' - kXMP_AIFFFile = 0x41494646UL, - /// Public file format constant: 'P2 ', a collection not really a single file - kXMP_P2File = 0x50322020UL, - /// Public file format constant: 'XDCF', a collection not really a single file - kXMP_XDCAM_FAMFile = 0x58444346UL, - /// Public file format constant: 'XDCS', a collection not really a single file - kXMP_XDCAM_SAMFile = 0x58444353UL, - /// Public file format constant: 'XDCX', a collection not really a single file - kXMP_XDCAM_EXFile = 0x58444358UL, - /// Public file format constant: 'AVHD', a collection not really a single file - kXMP_AVCHDFile = 0x41564844UL, - /// Public file format constant: 'SHDV', a collection not really a single file - kXMP_SonyHDVFile = 0x53484456UL, - - /// Public file format constant: 'HTML' - kXMP_HTMLFile = 0x48544D4CUL, - /// Public file format constant: 'XML ' - kXMP_XMLFile = 0x584D4C20UL, - /// Public file format constant: 'text' - kXMP_TextFile = 0x74657874UL, - - // ------------------------------- - // Adobe application file formats. - - /// Adobe application file format constant: 'PSD ' - kXMP_PhotoshopFile = 0x50534420UL, - /// Adobe application file format constant: 'AI ' - kXMP_IllustratorFile = 0x41492020UL, - /// Adobe application file format constant: 'INDD' - kXMP_InDesignFile = 0x494E4444UL, - /// Adobe application file format constant: 'AEP ' - kXMP_AEProjectFile = 0x41455020UL, - /// Adobe application file format constant: 'AET ', After Effects Project Template - kXMP_AEProjTemplateFile = 0x41455420UL, - /// Adobe application file format constant: 'FFX ' - kXMP_AEFilterPresetFile = 0x46465820UL, - /// Adobe application file format constant: 'NCOR' - kXMP_EncoreProjectFile = 0x4E434F52UL, - /// Adobe application file format constant: 'PRPJ' - kXMP_PremiereProjectFile = 0x5052504AUL, - /// Adobe application file format constant: 'PRTL' - kXMP_PremiereTitleFile = 0x5052544CUL, - /// Adobe application file format constant: 'UCF ', Universal Container Format - kXMP_UCFFile = 0x55434620UL, - - // ------- - // Others. - - /// Unknown file format constant: ' ' - kXMP_UnknownFile = 0x20202020UL - -}; - -/// Type for file format identification constants. See \c #kXMP_PDFFile and following. -typedef XMP_Uns32 XMP_FileFormat; - -// ------------------------------------------------------------------------------------------------- - -/// Byte-order masks, do not use directly -enum { - kXMP_CharLittleEndianMask = 1, - kXMP_Char16BitMask = 2, - kXMP_Char32BitMask = 4 -}; - -/// Constants to allow easy testing for 16/32 bit and big/little endian. -enum { - /// 8-bit - kXMP_Char8Bit = 0, - /// 16-bit big-endian - kXMP_Char16BitBig = kXMP_Char16BitMask, - /// 16-bit little-endian - kXMP_Char16BitLittle = kXMP_Char16BitMask | kXMP_CharLittleEndianMask, - /// 32-bit big-endian - kXMP_Char32BitBig = kXMP_Char32BitMask, - /// 32-bit little-endian - kXMP_Char32BitLittle = kXMP_Char32BitMask | kXMP_CharLittleEndianMask, - /// Variable or not-yet-known cases - kXMP_CharUnknown = 1 -}; - -/// \name Macros to test components of the character form mask -/// @{ -/// -/// \def XMP_CharFormIs16Bit -/// \brief Macro reports the encoding of a character. -/// \param f The character to check. -/// -/// \def XMP_CharFormIs32Bit -/// \brief Macro reports the encoding of a character. -/// \param f The character to check. -/// -/// \def XMP_CharFormIsBigEndian -/// \brief Macro reports the byte-order of a character. -/// \param f The character to check. -/// -/// \def XMP_CharFormIsLittleEndian -/// \brief Macro reports the byte-order of a character. -/// \param f The character to check. -/// -/// \def XMP_GetCharSize -/// \brief Macro reports the byte-size of a character. -/// \param f The character to check. -/// -/// \def XMP_CharToSerializeForm -/// \brief Macro converts \c XMP_Uns8 to \c XMP_OptionBits. -/// \param cf The character to convert. -/// -/// \def XMP_CharFromSerializeForm -/// \brief Macro converts \c XMP_OptionBits to \c XMP_Uns8. -/// \param sf The character to convert. -/// -/// @} - -#define XMP_CharFormIs16Bit(f) ( ((int)(f) & kXMP_Char16BitMask) != 0 ) -#define XMP_CharFormIs32Bit(f) ( ((int)(f) & kXMP_Char32BitMask) != 0 ) -#define XMP_CharFormIsBigEndian(f) ( ((int)(f) & kXMP_CharLittleEndianMask) == 0 ) -#define XMP_CharFormIsLittleEndian(f) ( ((int)(f) & kXMP_CharLittleEndianMask) != 0 ) -#define XMP_GetCharSize(f) ( ((int)(f)&6) == 0 ? 1 : (int)(f)&6 ) -#define XMP_CharToSerializeForm(cf) ( (XMP_OptionBits)(cf) ) -#define XMP_CharFromSerializeForm(sf) ( (XMP_Uns8)(sf) ) - -/// \def kXMPFiles_UnknownOffset -/// \brief Constant for an unknown packet offset within a file. -#define kXMPFiles_UnknownOffset ((XMP_Int64)-1) - -/// \def kXMPFiles_UnknownLength -/// \brief Constant for an unknown packet length within a file. -#define kXMPFiles_UnknownLength ((XMP_Int32)-1) - -/// XMP packet description -struct XMP_PacketInfo { - - /// Packet offset in the file in bytes, -1 if unknown. - XMP_Int64 offset; - /// Packet length in the file in bytes, -1 if unknown. - XMP_Int32 length; - /// Packet padding size in bytes, zero if unknown. - XMP_Int32 padSize; // Zero if unknown. - - /// Character format using the values \c kXMP_Char8Bit, \c kXMP_Char16BitBig, etc. - XMP_Uns8 charForm; - /// True if there is a packet wrapper and the trailer says writeable by dumb packet scanners. - XMP_Bool writeable; - /// True if there is a packet wrapper, the "" XML processing instructions. - XMP_Bool hasWrapper; - - /// Padding to make the struct's size be a multiple 4. - XMP_Uns8 pad; - - /// Default constructor. - XMP_PacketInfo() : offset(kXMPFiles_UnknownOffset), length(kXMPFiles_UnknownLength), - padSize(0), charForm(0), writeable(0), hasWrapper(0), pad(0) {}; - -}; - -/// Version of the XMP_PacketInfo type -enum { - /// Version of the XMP_PacketInfo type - kXMP_PacketInfoVersion = 3 -}; - -// ------------------------------------------------------------------------------------------------- - -/// Values for \c XMP_ThumbnailInfo::tnailFormat. -enum { - /// The thumbnail data has an unknown format. - kXMP_UnknownTNail = 0, - /// The thumbnail data is a JPEG stream, presumably compressed. - kXMP_JPEGTNail = 1, - /// The thumbnail data is a TIFF stream, presumably uncompressed. - kXMP_TIFFTNail = 2, - /// The thumbnail data is in the format of Photoshop Image Resource 1036. - kXMP_PShopTNail = 3 -}; - -/// Thumbnail descriptor -struct XMP_ThumbnailInfo { - - /// The format of the containing file. - XMP_FileFormat fileFormat; - /// Full image size in pixels. - XMP_Uns32 fullWidth, fullHeight; - /// Thumbnail image size in pixels. - XMP_Uns32 tnailWidth, tnailHeight; - /// Orientation of full image and thumbnail, as defined by Exif for tag 274. - - XMP_Uns16 fullOrientation, tnailOrientation; - /// Raw image data from the host file, valid for life of the owning \c XMPFiles object. Do not modify! - const XMP_Uns8 * tnailImage; - /// The size in bytes of the thumbnail image data. - XMP_Uns32 tnailSize; - /// The format of the thumbnail image data. - XMP_Uns8 tnailFormat; - - /// Padding to make the struct's size be a multiple 4. - XMP_Uns8 pad1, pad2, pad3; - - /// Default constructor. - XMP_ThumbnailInfo() : fileFormat(kXMP_UnknownFile), fullWidth(0), fullHeight(0), - tnailWidth(0), tnailHeight(0), fullOrientation(0), tnailOrientation(0), - tnailImage(0), tnailSize(0), tnailFormat(kXMP_UnknownTNail) {}; - -}; - -/// Version of the XMP_ThumbnailInfo type -enum { - /// Version of the XMP_ThumbnailInfo type - kXMP_ThumbnailInfoVersion = 1 -}; - -// ------------------------------------------------------------------------------------------------- - -/// Option bit flags for \c TXMPFiles::Initialize(). -enum { - /// Do not initialize QuickTime, the client will. - kXMPFiles_NoQuickTimeInit = 0x0001 -}; - -/// Option bit flags for \c TXMPFiles::GetFormatInfo(). -enum { - - /// Can inject first-time XMP into an existing file. - kXMPFiles_CanInjectXMP = 0x00000001, - - /// Can expand XMP or other metadata in an existing file. - kXMPFiles_CanExpand = 0x00000002, - - /// Can copy one file to another, writing new metadata. - kXMPFiles_CanRewrite = 0x00000004, - - /// Can expand, but prefers in-place update. - kXMPFiles_PrefersInPlace = 0x00000008, - - /// Supports reconciliation between XMP and other forms. - kXMPFiles_CanReconcile = 0x00000010, - - /// Allows access to just the XMP, ignoring other forms. - kXMPFiles_AllowsOnlyXMP = 0x00000020, - - /// File handler returns raw XMP packet information. - kXMPFiles_ReturnsRawPacket = 0x00000040, - - /// File handler returns native thumbnail. - kXMPFiles_ReturnsTNail = 0x00000080, - - /// The file handler does the file open and close. - kXMPFiles_HandlerOwnsFile = 0x00000100, - - /// The file handler allows crash-safe file updates. - kXMPFiles_AllowsSafeUpdate = 0x00000200, - - /// The file format needs the XMP packet to be read-only. - kXMPFiles_NeedsReadOnlyPacket = 0x00000400, - - /// The file handler uses a "sidecar" file for the XMP. - kXMPFiles_UsesSidecarXMP = 0x00000800, - - /// The format is folder oriented, for example the P2 video format. - kXMPFiles_FolderBasedFormat = 0x00001000 - -}; - -/// Option bit flags for \c TXMPFiles::OpenFile(). -enum { - - /// Open for read-only access. - kXMPFiles_OpenForRead = 0x00000001, - - /// Open for reading and writing. - kXMPFiles_OpenForUpdate = 0x00000002, - - /// Only the XMP is wanted, allows space/time optimizations. - kXMPFiles_OpenOnlyXMP = 0x00000004, - - /// Cache thumbnail if possible, \c TXMPFiles::GetThumbnail() will be called. - kXMPFiles_OpenCacheTNail = 0x00000008, - - /// Be strict about locating XMP and reconciling with other forms. - kXMPFiles_OpenStrictly = 0x00000010, - - /// Require the use of a smart handler. - kXMPFiles_OpenUseSmartHandler = 0x00000020, - - /// Force packet scanning, do not use a smart handler. - kXMPFiles_OpenUsePacketScanning = 0x00000040, - - /// Only packet scan files "known" to need scanning. - kXMPFiles_OpenLimitedScanning = 0x00000080, - - /// Attempt to repair a file opened for update, default is to not open (throw an exception). - kXMPFiles_OpenRepairFile = 0x00000100, - - /// Set if calling from background thread. - kXMPFiles_OpenInBackground = 0x10000000 - -}; - -// A note about kXMPFiles_OpenInBackground. The XMPFiles handler for .mov files currently uses -// QuickTime. On Macintosh, calls to Enter/ExitMovies versus Enter/ExitMoviesOnThread must be made. -// This option is used to signal background use so that the .mov handler can behave appropriately. - -/// Option bit flags for \c TXMPFiles::CloseFile(). -enum { - /// Write into a temporary file and swap for crash safety. - kXMPFiles_UpdateSafely = 0x0001 -}; - -// ================================================================================================= -// Exception codes -// =============== - -/// \name Errors Exception handling -/// @{ -/// -/// XMP Tookit errors result in throwing an \c XMP_Error exception. Any exception thrown within the -/// XMP Toolkit is caught in the toolkit and rethrown as an \c XMP_Error. -/// -/// The \c XMP_Error class contains a numeric code and an English explanation. New numeric codes may -/// be added at any time. There are typically many possible explanations for each numeric code. The -/// explanations try to be precise about the specific circumstances causing the error. -/// -/// \note The explanation string is for debugging use only. It must not be shown to users in a -/// final product. It is written for developers not users, and never localized. -/// - -/// XMP Toolkit error, associates an error code with a descriptive error string. -class XMP_Error { -public: - - /// @brief Constructor for an XMP_Error. - /// - /// @param _id The numeric code. - /// - /// @param _errMsg The descriptive string, for debugging use only. It must not be shown to users - /// in a final product. It is written for developers, not users, and never localized. - XMP_Error ( XMP_Int32 _id, XMP_StringPtr _errMsg ) : id(_id), errMsg(_errMsg) {}; - - /// Retrieves the numeric code from an XMP_Error. - inline XMP_Int32 GetID() const { return id; }; - - /// Retrieves the descriptive string from an XMP_Error. - inline XMP_StringPtr GetErrMsg() const { return errMsg; }; - -private: - /// Exception code. See constants \c #kXMPErr_Unknown and following. - XMP_Int32 id; - /// Descriptive string, for debugging use only. It must not be shown to users in a final - /// product. It is written for developers, not users, and never localized. - XMP_StringPtr errMsg; -}; - -/// Exception code constants -enum { - - // -------------------- - // Generic error codes. - - /// Generic unknown error - kXMPErr_Unknown = 0, - /// Generic undefined error - kXMPErr_TBD = 1, - /// Generic unavailable error - kXMPErr_Unavailable = 2, - /// Generic bad object error - kXMPErr_BadObject = 3, - /// Generic bad parameter error - kXMPErr_BadParam = 4, - /// Generic bad value error - kXMPErr_BadValue = 5, - /// Generic assertion failure - kXMPErr_AssertFailure = 6, - /// Generic enforcement failure - kXMPErr_EnforceFailure = 7, - /// Generic unimplemented error - kXMPErr_Unimplemented = 8, - /// Generic internal failure - kXMPErr_InternalFailure = 9, - /// Generic deprecated error - kXMPErr_Deprecated = 10, - /// Generic external failure - kXMPErr_ExternalFailure = 11, - /// Generic user abort error - kXMPErr_UserAbort = 12, - /// Generic standard exception - kXMPErr_StdException = 13, - /// Generic unknown exception - kXMPErr_UnknownException = 14, - /// Generic out-of-memory error - kXMPErr_NoMemory = 15, - - // ------------------------------------ - // More specific parameter error codes. - - /// Bad schema parameter - kXMPErr_BadSchema = 101, - /// Bad XPath parameter - kXMPErr_BadXPath = 102, - /// Bad options parameter - kXMPErr_BadOptions = 103, - /// Bad index parameter - kXMPErr_BadIndex = 104, - /// Bad iteration position - kXMPErr_BadIterPosition = 105, - /// XML parsing error - kXMPErr_BadParse = 106, - /// Serialization error - kXMPErr_BadSerialize = 107, - /// File format error - kXMPErr_BadFileFormat = 108, - /// No file handler found for format - kXMPErr_NoFileHandler = 109, - /// Data too large for JPEG file format - kXMPErr_TooLargeForJPEG = 110, - - // ----------------------------------------------- - // File format and internal structure error codes. - - /// XML format error - kXMPErr_BadXML = 201, - /// RDF format error - kXMPErr_BadRDF = 202, - /// XMP format error - kXMPErr_BadXMP = 203, - /// Empty iterator - kXMPErr_EmptyIterator = 204, - /// Unicode error - kXMPErr_BadUnicode = 205, - /// TIFF format error - kXMPErr_BadTIFF = 206, - /// JPEG format error - kXMPErr_BadJPEG = 207, - /// PSD format error - kXMPErr_BadPSD = 208, - /// PSIR format error - kXMPErr_BadPSIR = 209, - /// IPTC format error - kXMPErr_BadIPTC = 210, - /// MPEG format error - kXMPErr_BadMPEG = 211 - -}; - -/// @} - -// ================================================================================================= -// Client callbacks -// ================ - -// ------------------------------------------------------------------------------------------------- -/// \name Special purpose callback functions -/// @{ - -/// A signed 32-bit integer used as a status result for the output callback routine, -/// \c XMP_TextOutputProc. Zero means no error, all other values except -1 are private to the callback. -/// The callback is wrapped to prevent exceptions being thrown across DLL boundaries. Any exceptions -/// thrown out of the callback cause a return status of -1. - -typedef XMP_Int32 XMP_Status; - -// ------------------------------------------------------------------------------------------------- -/// The signature of a client-defined callback for text output from XMP Toolkit debugging -/// operations. The callback is invoked one or more times for each line of output. The end of a line -/// is signaled by a '\\n' character at the end of the buffer. Formatting newlines are never present -/// in the middle of a buffer, but values of properties might contain any UTF-8 characters. -/// -/// @param refCon A pointer to client-defined data passed to the TextOutputProc. -/// -/// @param buffer A string containing one line of output. -/// -/// @param bufferSize The number of characters in the output buffer. -/// -/// @return A success/fail status value. Any failure result aborts the output. -/// -/// @see \c TXMPMeta::DumpObject() - -typedef XMP_Status (* XMP_TextOutputProc) ( void * refCon, - XMP_StringPtr buffer, - XMP_StringLen bufferSize ); - -// ------------------------------------------------------------------------------------------------- -/// The signature of a client-defined callback to check for a user request to abort a time-consuming -/// operation within XMPFiles. -/// -/// @param arg A pointer to caller-defined data passed from the registration call. -/// -/// @return True to abort the current operation, which results in an exception being thrown. -/// -/// @see \c TXMPFiles::SetAbortProc() - -typedef bool (* XMP_AbortProc) ( void * arg ); // Used by . - -/// @} - -// ================================================================================================= -// Stuff with no better place to be -// ================================ - -/// XMP Toolkit version information -typedef struct XMP_VersionInfo { - /// The primary release number, the "1" in version "1.2.3". - XMP_Uns8 major; - /// The secondary release number, the "2" in version "1.2.3". - XMP_Uns8 minor; - /// The tertiary release number, the "3" in version "1.2.3". - XMP_Uns8 micro; - /// A 0/1 boolean value, true if this is a debug build. - XMP_Bool isDebug; - /// A rolling build number, monotonically increasing in a release. - XMP_Uns32 build; - /// Individual feature implementation flags. - XMP_Uns32 flags; - /// A comprehensive version information string. - XMP_StringPtr message; -} XMP_VersionInfo; - -// ================================================================================================= - -#if __cplusplus -} // extern "C" -#endif - -#endif // __XMP_Const_h__ diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/include/XMP_Environment.h b/platform/win32/msvc/external/exiv2/xmpsdk/include/XMP_Environment.h deleted file mode 100644 index a6b6c6cb45b..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/include/XMP_Environment.h +++ /dev/null @@ -1,138 +0,0 @@ -#ifndef __XMP_Environment_h__ -#define __XMP_Environment_h__ 1 - -// ================================================================================================= -// XMP_Environment.h - Build environment flags for the XMP toolkit. -// ================================================================ -// -// This header is just C preprocessor macro definitions to set up the XMP toolkit build environment. -// It must be the first #include in any chain since it might affect things in other #includes. -// -// ================================================================================================= - -// ================================================================================================= -// Copyright 2002-2007 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -// ================================================================================================= -// Determine the Platform -// ====================== - -// One of MAC_ENV, WIN_ENV, or UNIX_ENV must be defined by the client. Since some other code -// requires these to be defined without values, they are only used here to define XMP-specific -// macros with 0 or 1 values. - -/* 20-Oct-07, ahu: Determine the platform, set the above defines accordingly. */ -#define _FILE_OFFSET_BITS 64 -#if defined __CYGWIN32__ && !defined __CYGWIN__ - /* For backwards compatibility with Cygwin b19 and - earlier, we define __CYGWIN__ here, so that - we can rely on checking just for that macro. */ -# define __CYGWIN__ __CYGWIN32__ -#endif -#if defined WIN32 && !defined __CYGWIN__ -# define WIN_ENV 1 -/* Todo: How to correctly recognize a Mac platform? */ -#elif defined macintosh || defined MACOS_CLASSIC || defined MACOS_X_UNIX || defined MACOS_X || defined MACOS -# define MAC_ENV 1 -#else -# define UNIX_ENV 1 -#endif - -// ! Tempting though it might be to have a standard macro for big or little endian, there seems to -// ! be no decent way to do that on our own in UNIX. Forcing it on the client isn't acceptable. - -#if defined ( MAC_ENV ) - - #if 0 // ! maybe someday - ! MAC_ENV - #error "MAC_ENV must be defined so that \"#if MAC_ENV\" is true" - #endif - - #if defined ( WIN_ENV ) || defined ( UNIX_ENV ) - #error "XMP environment error - must define only one of MAC_ENV, WIN_ENV, or UNIX_ENV" - #endif - - #define XMP_MacBuild 1 - #define XMP_WinBuild 0 - #define XMP_UNIXBuild 0 - -#elif defined ( WIN_ENV ) - - #if 0 // ! maybe someday - ! WIN_ENV - #error "WIN_ENV must be defined so that \"#if WIN_ENV\" is true" - #endif - - #if defined ( UNIX_ENV ) - #error "XMP environment error - must define only one of MAC_ENV, WIN_ENV, or UNIX_ENV" - #endif - - #define XMP_MacBuild 0 - #define XMP_WinBuild 1 - #define XMP_UNIXBuild 0 - -#elif defined ( UNIX_ENV ) - - #if 0 // ! maybe someday - ! UNIX_ENV - #error "UNIX_ENV must be defined so that \"#if UNIX_ENV\" is true" - #endif - - #define XMP_MacBuild 0 - #define XMP_WinBuild 0 - #define XMP_UNIXBuild 1 - -#else - - #error "XMP environment error - must define one of MAC_ENV, WIN_ENV, or UNIX_ENV" - -#endif - -// ================================================================================================= -// Common Macros -// ============= - -#if defined ( DEBUG ) - #if defined ( NDEBUG ) - #error "XMP environment error - both DEBUG and NDEBUG are defined" - #endif - #define XMP_DebugBuild 1 -#endif - -#if defined ( NDEBUG ) - #define XMP_DebugBuild 0 -#endif - -#ifndef XMP_DebugBuild - #define XMP_DebugBuild 0 -#endif - -#if XMP_DebugBuild - #include // The assert macro needs printf. -#endif - -#ifndef XMP_64 - #if _WIN64 - #define XMP_64 1 - #else - #define XMP_64 0 - #endif -#endif - -// ================================================================================================= -// Macintosh Specific Settings -// =========================== - -// ================================================================================================= -// Windows Specific Settings -// ========================= - -// ================================================================================================= -// UNIX Specific Settings -// ====================== - -// ================================================================================================= - -#endif // __XMP_Environment_h__ diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/include/XMP_Version.h b/platform/win32/msvc/external/exiv2/xmpsdk/include/XMP_Version.h deleted file mode 100644 index f8b0ea8104b..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/include/XMP_Version.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef __XMP_Version_h__ -#define __XMP_Version_h__ 1 - -/* --------------------------------------------------------------------------------------------- */ -/* ** IMPORTANT ** This file must be usable by strict ANSI C compilers. No "//" comments, etc. */ -/* --------------------------------------------------------------------------------------------- */ - -/* -// ================================================================================================= -// Copyright 2002-2008 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= -*/ - -/* ============================================================================================= */ -/** -XMP Toolkit Version Information - -Version information for the XMP toolkit is stored in the executable and available through a runtime -call, SXMPMeta::GetVersionInfo. In addition a static version number is defined in this -header. The information in the executable or returned by SXMPMeta::GetVersionInfo is about -the implementation internals, it is runtime version information. The values defined in this header -describe the version of the API used at client compile time. They do not necessarily relate to the -runtime version. - -Important: Do not display the static values defined here to users as the version of XMP in use. Do -not base runtime decisions on just this static version. It is OK to compare the static and runtime -versions. - -*/ -/* ============================================================================================= */ - -#define XMP_API_VERSION_MAJOR 4 -#define XMP_API_VERSION_MINOR 4 -#define XMP_API_VERSION_MICRO 0 - -#define XMP_API_VERSION 4.4 -#define XMP_API_VERSION_STRING "4.4.0-Exiv2" - -/* ============================================================================================= */ - -#endif /* __XMP_Version_h__ */ diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/TXMPIterator.incl_cpp b/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/TXMPIterator.incl_cpp deleted file mode 100644 index 672203e27e1..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/TXMPIterator.incl_cpp +++ /dev/null @@ -1,226 +0,0 @@ -// ================================================================================================= -// ADOBE SYSTEMS INCORPORATED -// Copyright 2002-2007 Adobe Systems Incorporated -// All Rights Reserved -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -// ================================================================================================ -/// \file TXMPIterator.incl_cpp -/// \brief The implementation of the TXMPIterator template class. - -#include "XMPSDK.hpp" -#include "client-glue/WXMP_Common.hpp" -#include "client-glue/WXMPIterator.hpp" - -// ================================================================================================= -// Implementation Guidelines -// ========================= -// -// The implementations of the template functions are very stylized. The jobs done in this code are: -// -// 1. Set up the xmpIter template data member in the constructors. -// 2. Call through to the appropriate WXMPIterator function. -// 3. Copy returned strings and release the threading lock. -// -// The various kinds of functions follow similar patterns, first assuming no returned string: -// -// Constructors - Use an initializer for the xmpIter data member to call the WXMPIterator constructor. -// Destructor - Let the WXMPIterator destructor be implicitly called for the xmpIter data member. -// Static function - Simply call the corresponding WXMPIterator static function. -// Non-static function - Simply call the corresponding WXMPIterator function using xmpIter. -// -// If a member function has returned strings the code looks roughly like this: -// -// <<>> -// <<>> -// if ( <<>> ) { -// if ( outStr != 0 ) outStr->assign ( outPtr, outLen ); -// <<>> -// } -// return result; -// -// The <<>> is the call to the wrapper, and <<>> is the check and throw -// if the wrapper reports failure. The <<>> check is used to determine if the string -// should actually be assigned. For example, GetProperty can't assign the value if the property -// does not exist. There is no <<>> check if it isn't, well, appropriate. Outputs are -// always passed as explicit pointers, and null can be passed if the string is not wanted. The -// inner implementation holds the threading lock if an output string is returned, regardless of -// whether the client wants it or not (which the implementation does not know). -// -// ================================================================================================= - -#ifndef XMP_TraceCTorDTor - #define XMP_TraceCTorDTor 0 -#endif - -#if XMP_TraceCTorDTor - class XIPeek { // Hack to peek at the client ref count in the internal object. - public: - XIPeek(); - virtual ~XIPeek(); - XMP_Int32 clientRefs; - }; -#endif - -// ------------------------------------------------------------------------------------------------- - -#define PropIterCTor(xmpRef,schemaNS,propName,options) \ - WrapCheckIterRef ( newRef, zXMPIterator_PropCTor_1 ( xmpRef, schemaNS, propName, options ) ); \ - this->iterRef = newRef - -// ------------------------------------------------------------------------------------------------- - -#define TableIterCTor(schemaNS,propName,options) \ - WrapCheckIterRef ( newRef, zXMPIterator_TableCTor_1 ( schemaNS, propName, options ) ); \ - this->iterRef = newRef - -// ------------------------------------------------------------------------------------------------- - -XMP_CTorDTorIntro(TXMPIterator):: -TXMPIterator ( const TXMPIterator & original ) : iterRef(original.iterRef) -{ - WXMPIterator_IncrementRefCount_1 ( this->iterRef ); - #if XMP_TraceCTorDTor - XIPeek* xiPtr = (XIPeek*)this->iterRef; - printf ( "Copy construct TXMPIterator @ %.8X, ref = %.8X, count = %d\n", this, xiPtr, xiPtr->clientRefs ); - #endif -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPIterator,void):: -operator= ( const TXMPIterator & rhs ) -{ - #if XMP_TraceCTorDTor - XIPeek* xiLHS = (XIPeek*)this->iterRef; - XIPeek* xiRHS = (XIPeek*)rhs.iterRef; - printf ( "Assign TXMPIterator, lhs @ %.8X, rhs @ %.8X\n", this, &rhs ); - printf ( " original lhs ref = %.8X, count = %d\n", xiLHS, xiLHS->clientRefs ); - printf ( " original rhs ref = %.8X, count = %d\n", xiRHS, xiRHS->clientRefs ); - #endif - XMPIteratorRef oldRef = this->iterRef; // ! Decrement last so errors leave client object OK. - this->iterRef = rhs.iterRef; - WXMPIterator_IncrementRefCount_1 ( this->iterRef ); - WXMPIterator_DecrementRefCount_1 ( oldRef ); - #if XMP_TraceCTorDTor - printf ( " result lhs ref = %.8X, count = %d\n", xiLHS, xiLHS->clientRefs ); - #endif -} - -// ------------------------------------------------------------------------------------------------- - -XMP_CTorDTorIntro(TXMPIterator):: -TXMPIterator() : iterRef(0) -{ - throw XMP_Error ( kXMPErr_Unavailable, "No default construction for XMP iterators" ); - #if XMP_TraceCTorDTor - XIPeek* xiPtr = (XIPeek*)this->iterRef; - printf ( "Default construct TXMPIterator @ %.8X, ref = %.8X, count = %d\n", this, xiPtr, xiPtr->clientRefs ); - #endif -} - -// ------------------------------------------------------------------------------------------------- - -XMP_CTorDTorIntro(TXMPIterator):: -TXMPIterator ( const TXMPMeta & xmpObj, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_OptionBits options /* = 0 */ ) : iterRef(0) -{ - PropIterCTor ( xmpObj.GetInternalRef(), schemaNS, propName, options ); - #if XMP_TraceCTorDTor - XIPeek* xiPtr = (XIPeek*)this->iterRef; - printf ( "Construct property TXMPIterator @ %.8X, ref = %.8X, count = %d\n", this, xiPtr, xiPtr->clientRefs ); - #endif -} - -// ------------------------------------------------------------------------------------------------- - -XMP_CTorDTorIntro(TXMPIterator):: -TXMPIterator ( const TXMPMeta & xmpObj, - XMP_StringPtr schemaNS, - XMP_OptionBits options /* = 0 */ ) : iterRef(0) -{ - PropIterCTor ( xmpObj.GetInternalRef(), schemaNS, "", options ); - #if XMP_TraceCTorDTor - XIPeek* xiPtr = (XIPeek*)this->iterRef; - printf ( "Construct schema TXMPIterator @ %.8X, ref = %.8X, count = %d\n", this, xiPtr, xiPtr->clientRefs ); - #endif -} - -// ------------------------------------------------------------------------------------------------- - -XMP_CTorDTorIntro(TXMPIterator):: -TXMPIterator ( const TXMPMeta & xmpObj, - XMP_OptionBits options /* = 0 */ ) : iterRef(0) -{ - PropIterCTor ( xmpObj.GetInternalRef(), "", "", options ); - #if XMP_TraceCTorDTor - XIPeek* xiPtr = (XIPeek*)this->iterRef; - printf ( "Construct tree TXMPIterator @ %.8X, ref = %.8X, count = %d\n", this, xiPtr, xiPtr->clientRefs ); - #endif -} - -// ------------------------------------------------------------------------------------------------- - -XMP_CTorDTorIntro(TXMPIterator):: -TXMPIterator ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_OptionBits options ) : iterRef(0) -{ - TableIterCTor ( schemaNS, propName, options ); - #if XMP_TraceCTorDTor - XIPeek* xiPtr = (XIPeek*)this->iterRef; - printf ( "Construct table TXMPIterator @ %.8X, ref = %.8X, count = %d\n", this, xiPtr, xiPtr->clientRefs ); - #endif -} - -// ------------------------------------------------------------------------------------------------- - -XMP_CTorDTorIntro(TXMPIterator):: -~TXMPIterator () throw() -{ - #if XMP_TraceCTorDTor - XIPeek* xiPtr = (XIPeek*)this->iterRef; - printf ( "Destruct TXMPIterator @ %.8X, ref = %.8X, count = %d\n", this, xiPtr, xiPtr->clientRefs ); - #endif - WXMPIterator_DecrementRefCount_1 ( this->iterRef ); - this->iterRef = 0; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPIterator,bool):: -Next ( tStringObj * schemaNS /* = 0 */, - tStringObj * propPath /* = 0 */, - tStringObj * propValue /* = 0 */, - XMP_OptionBits * options /* = 0 */ ) -{ - XMP_StringPtr schemaPtr = 0; - XMP_StringLen schemaLen = 0; - XMP_StringPtr pathPtr = 0; - XMP_StringLen pathLen = 0; - XMP_StringPtr valuePtr = 0; - XMP_StringLen valueLen = 0; - WrapCheckBool ( found, zXMPIterator_Next_1 ( &schemaPtr, &schemaLen, &pathPtr, &pathLen, &valuePtr, &valueLen, options ) ); - if ( found ) { - if ( schemaNS != 0 ) schemaNS->assign ( schemaPtr, schemaLen ); - if ( propPath != 0 ) propPath->assign ( pathPtr, pathLen ); - if ( propValue != 0 ) propValue->assign ( valuePtr, valueLen ); - WXMPUtils_UnlockIter_1 ( this->iterRef, 0 ); - } - return found; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPIterator,void):: -Skip ( XMP_OptionBits options ) -{ - WrapCheckVoid ( zXMPIterator_Skip_1 ( options ) ); -} - -// ================================================================================================= diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/TXMPMeta.incl_cpp b/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/TXMPMeta.incl_cpp deleted file mode 100644 index 0131aa50ef1..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/TXMPMeta.incl_cpp +++ /dev/null @@ -1,935 +0,0 @@ -// ================================================================================================= -// ADOBE SYSTEMS INCORPORATED -// Copyright 2002-2008 Adobe Systems Incorporated -// All Rights Reserved -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -// ================================================================================================ -/// \file TXMPMeta.incl_cpp -/// \brief The implementation of the TXMPMeta template class. - -#include "XMPSDK.hpp" -#include "client-glue/WXMP_Common.hpp" -#include "client-glue/WXMPMeta.hpp" - -// ================================================================================================= -// Implementation Guidelines -// ========================= -// -// The implementations of the template functions are very stylized. ... -// -// ================================================================================================= - -#ifndef XMP_TraceCTorDTor - #define XMP_TraceCTorDTor 0 -#endif - -#if XMP_TraceCTorDTor - class XMPeek { // Hack to peek at the client ref count in the internal object. - public: - XMPeek(); - virtual ~XMPeek(); - XMP_Int32 clientRefs; - }; -#endif - -// ================================================================================================= -// Local utilities -// =============== - -// ------------------------------------------------------------------------------------------------- - -class TOPW_Info { -public: - XMP_TextOutputProc clientProc; - void * clientRefCon; - TOPW_Info ( XMP_TextOutputProc proc, void * refCon ) : clientProc(proc), clientRefCon(refCon) {}; -private: - TOPW_Info() {}; // ! Hide default constructor. -}; - -static XMP_Status TextOutputProcWrapper ( void * refCon, - XMP_StringPtr buffer, - XMP_StringLen bufferSize ) -{ - try { // Don't let client callback exceptions propagate across DLL boundaries. - TOPW_Info * info = (TOPW_Info*)refCon; - return info->clientProc ( info->clientRefCon, buffer, bufferSize ); - } catch ( ... ) { - return -1; - } -} - -// ================================================================================================= -// Initialization and termination -// ============================== - -XMP_MethodIntro(TXMPMeta,void):: -GetVersionInfo ( XMP_VersionInfo * info ) -{ - WrapNoCheckVoid ( zXMPMeta_GetVersionInfo_1 ( info ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,bool):: -Initialize() -{ - WrapCheckBool ( ok, zXMPMeta_Initialize_1() ); - return ok; -} -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -Terminate() -{ - WrapNoCheckVoid ( zXMPMeta_Terminate_1() ); -} - -// ================================================================================================= -// Constuctors, destructor, operators -// ================================== - -static XMPMetaRef DefaultCTor() -{ - WrapCheckMetaRef ( newRef, zXMPMeta_CTor_1() ); - return newRef; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_CTorDTorIntro(TXMPMeta):: -TXMPMeta() : xmpRef(DefaultCTor()) -{ - #if XMP_TraceCTorDTor - XMPeek* xmPtr = (XMPeek*)this->xmpRef; - printf ( "Default construct TXMPMeta @ %.8X, ref = %.8X, count = %d\n", this, xmPtr, xmPtr->clientRefs ); - #endif -} - -// ------------------------------------------------------------------------------------------------- - -XMP_CTorDTorIntro(TXMPMeta):: -TXMPMeta ( const TXMPMeta & original ) : xmpRef(original.xmpRef) -{ - WXMPMeta_IncrementRefCount_1 ( this->xmpRef ); - #if XMP_TraceCTorDTor - XMPeek* xmPtr = (XMPeek*)this->xmpRef; - printf ( "Copy construct TXMPMeta @ %.8X, ref = %.8X, count = %d\n", this, xmPtr, xmPtr->clientRefs ); - #endif -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -operator= ( const TXMPMeta & rhs ) -{ - #if XMP_TraceCTorDTor - XMPeek* xmLHS = (XMPeek*)this->xmpRef; - XMPeek* xmRHS = (XMPeek*)rhs.xmpRef; - printf ( "Assign TXMPMeta, lhs @ %.8X, rhs @ %.8X\n", this, &rhs ); - printf ( " original lhs ref = %.8X, count = %d\n", xmLHS, xmLHS->clientRefs ); - printf ( " original rhs ref = %.8X, count = %d\n", xmRHS, xmRHS->clientRefs ); - #endif - XMPMetaRef oldRef = this->xmpRef; // ! Decrement last so errors leave client object OK. - this->xmpRef = rhs.xmpRef; - WXMPMeta_IncrementRefCount_1 ( this->xmpRef ); // Increment the count on the new ref. - WXMPMeta_DecrementRefCount_1 ( oldRef ); // Decrement the count on the old ref. - #if XMP_TraceCTorDTor - printf ( " result lhs ref = %.8X, count = %d\n", xmLHS, xmLHS->clientRefs ); - #endif -} - -// ------------------------------------------------------------------------------------------------- - -XMP_CTorDTorIntro(TXMPMeta):: -TXMPMeta ( XMPMetaRef _xmpRef ) : xmpRef(_xmpRef) -{ - WXMPMeta_IncrementRefCount_1 ( this->xmpRef ); - #if XMP_TraceCTorDTor - XMPeek* xmPtr = (XMPeek*)this->xmpRef; - printf ( "Ref construct TXMPMeta @ %.8X, ref = %.8X, count = %d\n", this, xmPtr, xmPtr->clientRefs ); - #endif -} - -// ------------------------------------------------------------------------------------------------- - -XMP_CTorDTorIntro(TXMPMeta):: -TXMPMeta ( XMP_StringPtr buffer, - XMP_StringLen xmpSize ) : xmpRef(DefaultCTor()) -{ - #if XMP_TraceCTorDTor - XMPeek* xmPtr = (XMPeek*)this->xmpRef; - printf ( "Parse construct TXMPMeta @ %.8X, ref = %.8X, count = %d\n", this, xmPtr, xmPtr->clientRefs ); - #endif - try { - this->ParseFromBuffer ( buffer, xmpSize ); - } catch ( ... ) { - WXMPMeta_DecrementRefCount_1 ( this->xmpRef ); - this->xmpRef = 0; - throw; - } -} - -// ------------------------------------------------------------------------------------------------- - -XMP_CTorDTorIntro(TXMPMeta):: -~TXMPMeta() throw() -{ - #if XMP_TraceCTorDTor - XMPeek* xmPtr = (XMPeek*)this->xmpRef; - printf ( "Destruct TXMPMeta @ %.8X, ref = %.8X, count = %d\n", this, xmPtr, xmPtr->clientRefs ); - #endif - WXMPMeta_DecrementRefCount_1 ( this->xmpRef ); - this->xmpRef = 0; - -} // ~TXMPMeta () - -// ================================================================================================= -// Global state functions -// ====================== - -XMP_MethodIntro(TXMPMeta,XMP_OptionBits):: -GetGlobalOptions() -{ - WrapCheckOptions ( options, zXMPMeta_GetGlobalOptions_1() ); - return options; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -SetGlobalOptions ( XMP_OptionBits options ) -{ - WrapCheckVoid ( zXMPMeta_SetGlobalOptions_1 ( options ) ); -} - -// ------------------------------------------------------------------------------------------------- - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,XMP_Status):: -DumpNamespaces ( XMP_TextOutputProc outProc, - void * refCon ) -{ - TOPW_Info info ( outProc, refCon ); - WrapCheckStatus ( status, zXMPMeta_DumpNamespaces_1 ( TextOutputProcWrapper, &info ) ); - return status; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,XMP_Status):: -DumpAliases ( XMP_TextOutputProc outProc, - void * refCon ) -{ - TOPW_Info info ( outProc, refCon ); - WrapCheckStatus ( status, zXMPMeta_DumpAliases_1 ( TextOutputProcWrapper, &info ) ); - return status; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -RegisterNamespace ( XMP_StringPtr namespaceURI, - XMP_StringPtr prefix ) -{ - WrapCheckVoid ( zXMPMeta_RegisterNamespace_1 ( namespaceURI, prefix ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,bool):: -GetNamespacePrefix ( XMP_StringPtr namespaceURI, - tStringObj * namespacePrefix ) -{ - XMP_StringPtr resultPtr = 0; - XMP_StringLen resultLen = 0; - WrapCheckBool ( found, zXMPMeta_GetNamespacePrefix_1 ( namespaceURI, &resultPtr, &resultLen ) ); - if ( found ) { - if ( namespacePrefix != 0 ) namespacePrefix->assign ( resultPtr, resultLen ); - WXMPMeta_Unlock_1 ( 0 ); - } - return found; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,bool):: -GetNamespaceURI ( XMP_StringPtr namespacePrefix, - tStringObj * namespaceURI ) -{ - XMP_StringPtr resultPtr = 0; - XMP_StringLen resultLen = 0; - WrapCheckBool ( found, zXMPMeta_GetNamespaceURI_1 ( namespacePrefix, &resultPtr, &resultLen ) ); - if ( found ) { - if ( namespaceURI != 0 ) namespaceURI->assign ( resultPtr, resultLen ); - WXMPMeta_Unlock_1 ( 0 ); - } - return found; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -DeleteNamespace ( XMP_StringPtr namespaceURI ) -{ - WrapCheckVoid ( zXMPMeta_DeleteNamespace_1 ( namespaceURI ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -RegisterAlias ( XMP_StringPtr aliasNS, - XMP_StringPtr aliasProp, - XMP_StringPtr actualNS, - XMP_StringPtr actualProp, - XMP_OptionBits arrayForm ) -{ - WrapCheckVoid ( zXMPMeta_RegisterAlias_1 ( aliasNS, aliasProp, actualNS, actualProp, arrayForm ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,bool):: -ResolveAlias ( XMP_StringPtr aliasNS, - XMP_StringPtr aliasProp, - tStringObj * actualNS, - tStringObj * actualProp, - XMP_OptionBits * arrayForm ) -{ - XMP_StringPtr nsPtr = 0; - XMP_StringLen nsLen = 0; - XMP_StringPtr propPtr = 0; - XMP_StringLen propLen = 0; - WrapCheckBool ( found, zXMPMeta_ResolveAlias_1 ( aliasNS, aliasProp, &nsPtr, &nsLen, &propPtr, &propLen, arrayForm ) ); - if ( found ) { - if ( actualNS != 0 ) actualNS->assign ( nsPtr, nsLen ); - if ( actualProp != 0 ) actualProp->assign ( propPtr, propLen ); - WXMPMeta_Unlock_1 ( 0 ); - } - return found; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -DeleteAlias ( XMP_StringPtr aliasNS, - XMP_StringPtr aliasProp ) -{ - WrapCheckVoid ( zXMPMeta_DeleteAlias_1 ( aliasNS, aliasProp ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -RegisterStandardAliases ( XMP_StringPtr schemaNS ) -{ - WrapCheckVoid ( zXMPMeta_RegisterStandardAliases_1 ( schemaNS ) ); -} - -// ================================================================================================= -// Basic property manipulation functions -// ===================================== - -XMP_MethodIntro(TXMPMeta,bool):: -GetProperty ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - tStringObj * propValue, - XMP_OptionBits * options ) const -{ - XMP_StringPtr resultPtr = 0; - XMP_StringLen resultLen = 0; - WrapCheckBool ( found, zXMPMeta_GetProperty_1 ( schemaNS, propName, &resultPtr, &resultLen, options ) ); - if ( found ) { - if ( propValue != 0 ) propValue->assign ( resultPtr, resultLen ); - WXMPMeta_UnlockObject_1 ( this->xmpRef, 0 ); - } - return found; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,bool):: -GetArrayItem ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - tStringObj * itemValue, - XMP_OptionBits * options ) const -{ - XMP_StringPtr resultPtr = 0; - XMP_StringLen resultLen = 0; - WrapCheckBool ( found, zXMPMeta_GetArrayItem_1 ( schemaNS, arrayName, itemIndex, &resultPtr, &resultLen, options ) ); - if ( found ) { - if ( itemValue != 0 ) itemValue->assign ( resultPtr, resultLen ); - WXMPMeta_UnlockObject_1 ( this->xmpRef, 0 ); - } - return found; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,bool):: -GetStructField ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - tStringObj * fieldValue, - XMP_OptionBits * options ) const -{ - XMP_StringPtr resultPtr = 0; - XMP_StringLen resultLen = 0; - WrapCheckBool ( found, zXMPMeta_GetStructField_1 ( schemaNS, structName, fieldNS, fieldName, &resultPtr, &resultLen, options ) ); - if ( found ) { - if ( fieldValue != 0 ) fieldValue->assign ( resultPtr, resultLen ); - WXMPMeta_UnlockObject_1 ( this->xmpRef, 0 ); - } - return found; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,bool):: -GetQualifier ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - tStringObj * qualValue, - XMP_OptionBits * options ) const -{ - XMP_StringPtr resultPtr = 0; - XMP_StringLen resultLen = 0; - WrapCheckBool ( found, zXMPMeta_GetQualifier_1 ( schemaNS, propName, qualNS, qualName, &resultPtr, &resultLen, options ) ); - if ( found ) { - if ( qualValue != 0 ) qualValue->assign ( resultPtr, resultLen ); - WXMPMeta_UnlockObject_1 ( this->xmpRef, 0 ); - } - return found; -} //GetQualifier () - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -SetProperty ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr propValue, - XMP_OptionBits options /* = 0 */ ) -{ - WrapCheckVoid ( zXMPMeta_SetProperty_1 ( schemaNS, propName, propValue, options ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -SetProperty ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - const tStringObj & propValue, - XMP_OptionBits options /* = 0 */ ) -{ - this->SetProperty ( schemaNS, propName, propValue.c_str(), options ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -SetArrayItem ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - XMP_StringPtr itemValue, - XMP_OptionBits options /* = 0 */ ) -{ - WrapCheckVoid ( zXMPMeta_SetArrayItem_1 ( schemaNS, arrayName, itemIndex, itemValue, options ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -SetArrayItem ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - const tStringObj & itemValue, - XMP_OptionBits options /* = 0 */ ) -{ - this->SetArrayItem ( schemaNS, arrayName, itemIndex, itemValue.c_str(), options ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -AppendArrayItem ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_OptionBits arrayOptions, - XMP_StringPtr itemValue, - XMP_OptionBits options /* = 0 */ ) -{ - WrapCheckVoid ( zXMPMeta_AppendArrayItem_1 ( schemaNS, arrayName, arrayOptions, itemValue, options ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -AppendArrayItem ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_OptionBits arrayOptions, - const tStringObj & itemValue, - XMP_OptionBits options /* = 0 */ ) -{ - this->AppendArrayItem ( schemaNS, arrayName, arrayOptions, itemValue.c_str(), options ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -SetStructField ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - XMP_StringPtr fieldValue, - XMP_OptionBits options /* = 0 */ ) -{ - WrapCheckVoid ( zXMPMeta_SetStructField_1 ( schemaNS, structName, fieldNS, fieldName, fieldValue, options ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -SetStructField ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - const tStringObj & fieldValue, - XMP_OptionBits options /* = 0 */ ) -{ - this->SetStructField ( schemaNS, structName, fieldNS, fieldName, fieldValue.c_str(), options ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -SetQualifier ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - XMP_StringPtr qualValue, - XMP_OptionBits options /* = 0 */ ) -{ - WrapCheckVoid ( zXMPMeta_SetQualifier_1 ( schemaNS, propName, qualNS, qualName, qualValue, options ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -SetQualifier ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - const tStringObj & qualValue, - XMP_OptionBits options /* = 0 */ ) -{ - this->SetQualifier ( schemaNS, propName, qualNS, qualName, qualValue.c_str(), options ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -DeleteProperty ( XMP_StringPtr schemaNS, - XMP_StringPtr propName ) -{ - WrapCheckVoid ( zXMPMeta_DeleteProperty_1 ( schemaNS, propName ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -DeleteArrayItem ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex ) -{ - WrapCheckVoid ( zXMPMeta_DeleteArrayItem_1 ( schemaNS, arrayName, itemIndex ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -DeleteStructField ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName ) -{ - WrapCheckVoid ( zXMPMeta_DeleteStructField_1 ( schemaNS, structName, fieldNS, fieldName ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -DeleteQualifier ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName ) -{ - WrapCheckVoid ( zXMPMeta_DeleteQualifier_1 ( schemaNS, propName, qualNS, qualName ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,bool):: -DoesPropertyExist ( XMP_StringPtr schemaNS, - XMP_StringPtr propName ) const -{ - WrapCheckBool ( exists, zXMPMeta_DoesPropertyExist_1 ( schemaNS, propName ) ); - return exists; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,bool):: -DoesArrayItemExist ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex ) const -{ - WrapCheckBool ( exists, zXMPMeta_DoesArrayItemExist_1 ( schemaNS, arrayName, itemIndex ) ); - return exists; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,bool):: -DoesStructFieldExist ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName ) const -{ - WrapCheckBool ( exists, zXMPMeta_DoesStructFieldExist_1 ( schemaNS, structName, fieldNS, fieldName ) ); - return exists; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,bool):: -DoesQualifierExist ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName ) const -{ - WrapCheckBool ( exists, zXMPMeta_DoesQualifierExist_1 ( schemaNS, propName, qualNS, qualName ) ); - return exists; -} - -// ================================================================================================= -// Specialized Get and Set functions -// ================================= - -XMP_MethodIntro(TXMPMeta,bool):: -GetLocalizedText ( XMP_StringPtr schemaNS, - XMP_StringPtr altTextName, - XMP_StringPtr genericLang, - XMP_StringPtr specificLang, - tStringObj * actualLang, - tStringObj * itemValue, - XMP_OptionBits * options ) const -{ - XMP_StringPtr langPtr = 0; - XMP_StringLen langLen = 0; - XMP_StringPtr itemPtr = 0; - XMP_StringLen itemLen = 0; - WrapCheckBool ( found, zXMPMeta_GetLocalizedText_1 ( schemaNS, altTextName, genericLang, specificLang, - &langPtr, &langLen, &itemPtr, &itemLen, options ) ); - if ( found ) { - if ( actualLang != 0 ) actualLang->assign ( langPtr, langLen ); - if ( itemValue != 0 ) itemValue->assign ( itemPtr, itemLen ); - WXMPMeta_UnlockObject_1 ( this->xmpRef, kXMP_NoOptions ); - } - return found; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -SetLocalizedText ( XMP_StringPtr schemaNS, - XMP_StringPtr altTextName, - XMP_StringPtr genericLang, - XMP_StringPtr specificLang, - XMP_StringPtr itemValue, - XMP_OptionBits options /* = 0 */ ) -{ - WrapCheckVoid ( zXMPMeta_SetLocalizedText_1 ( schemaNS, altTextName, genericLang, specificLang, itemValue, options ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -SetLocalizedText ( XMP_StringPtr schemaNS, - XMP_StringPtr altTextName, - XMP_StringPtr genericLang, - XMP_StringPtr specificLang, - const tStringObj & itemValue, - XMP_OptionBits options /* = 0 */ ) -{ - this->SetLocalizedText ( schemaNS, altTextName, genericLang, specificLang, itemValue.c_str(), options ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,bool):: -GetProperty_Bool ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - bool * propValue, - XMP_OptionBits * options ) const -{ - XMP_Bool binValue; - WrapCheckBool ( found, zXMPMeta_GetProperty_Bool_1 ( schemaNS, propName, &binValue, options ) ); - if ( found && (propValue != 0) ) *propValue = binValue; - return found; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,bool):: -GetProperty_Int ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - long * propValue, - XMP_OptionBits * options ) const -{ - XMP_Int32 abiValue; - WrapCheckBool ( found, zXMPMeta_GetProperty_Int_1 ( schemaNS, propName, &abiValue, options ) ); - if ( found && (propValue != 0) ) *propValue = abiValue; - return found; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,bool):: -GetProperty_Int64 ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - long long * propValue, - XMP_OptionBits * options ) const -{ - XMP_Int64 abiValue; - WrapCheckBool ( found, zXMPMeta_GetProperty_Int64_1 ( schemaNS, propName, &abiValue, options ) ); - if ( found && (propValue != 0) ) *propValue = abiValue; - return found; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,bool):: -GetProperty_Float ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - double * propValue, - XMP_OptionBits * options ) const -{ - WrapCheckBool ( found, zXMPMeta_GetProperty_Float_1 ( schemaNS, propName, propValue, options ) ); - return found; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,bool):: -GetProperty_Date ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_DateTime * propValue, - XMP_OptionBits * options ) const -{ - WrapCheckBool ( found, zXMPMeta_GetProperty_Date_1 ( schemaNS, propName, propValue, options ) ); - return found; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -SetProperty_Bool ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - bool propValue, - XMP_OptionBits options /* = 0 */ ) -{ - WrapCheckVoid ( zXMPMeta_SetProperty_Bool_1 ( schemaNS, propName, propValue, options ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -SetProperty_Int ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - long propValue, - XMP_OptionBits options /* = 0 */ ) -{ - WrapCheckVoid ( zXMPMeta_SetProperty_Int_1 ( schemaNS, propName, propValue, options ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -SetProperty_Int64 ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - long long propValue, - XMP_OptionBits options /* = 0 */ ) -{ - WrapCheckVoid ( zXMPMeta_SetProperty_Int64_1 ( schemaNS, propName, propValue, options ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -SetProperty_Float ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - double propValue, - XMP_OptionBits options /* = 0 */ ) -{ - WrapCheckVoid ( zXMPMeta_SetProperty_Float_1 ( schemaNS, propName, propValue, options ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -SetProperty_Date ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - const XMP_DateTime & propValue, - XMP_OptionBits options /* = 0 */ ) -{ - WrapCheckVoid ( zXMPMeta_SetProperty_Date_1 ( schemaNS, propName, propValue, options ) ); -} - -// ================================================================================================= -// Miscellaneous Member Functions -// ============================== - -XMP_MethodIntro(TXMPMeta,XMPMetaRef):: -GetInternalRef() const -{ - return this->xmpRef; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -GetObjectName ( tStringObj * name ) const -{ - XMP_StringPtr namePtr = 0; - XMP_StringLen nameLen = 0; - WrapCheckVoid ( zXMPMeta_GetObjectName_1 ( &namePtr, &nameLen ) ); - if ( name != 0 ) name->assign ( namePtr, nameLen ); - WXMPMeta_UnlockObject_1 ( this->xmpRef, 0 ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -SetObjectName ( XMP_StringPtr name ) -{ - WrapCheckVoid ( zXMPMeta_SetObjectName_1 ( name ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -SetObjectName ( tStringObj name ) -{ - this->SetObjectName ( name.c_str() ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,XMP_OptionBits):: -GetObjectOptions() const -{ - WrapCheckOptions ( options, zXMPMeta_GetObjectOptions_1() ); - return options; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -SetObjectOptions ( XMP_OptionBits options ) -{ - WrapCheckVoid ( zXMPMeta_SetObjectOptions_1 ( options ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -Sort() -{ - WrapCheckVoid ( zXMPMeta_Sort_1() ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -Erase() -{ - WrapCheckVoid ( zXMPMeta_Erase_1() ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,TXMPMeta):: -Clone ( XMP_OptionBits options ) const -{ - WrapCheckMetaRef ( cloneRef, zXMPMeta_Clone_1 ( options ) ); - return TXMPMeta ( cloneRef ); // Ref construct will increment the clientRefs. -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,XMP_Index):: -CountArrayItems ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName ) const -{ - WrapCheckIndex ( count, zXMPMeta_CountArrayItems_1 ( schemaNS, arrayName ) ); - return count; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,XMP_Status):: -DumpObject ( XMP_TextOutputProc outProc, - void * refCon ) const -{ - TOPW_Info info ( outProc, refCon ); - WrapCheckStatus ( status, zXMPMeta_DumpObject_1 ( TextOutputProcWrapper, &info ) ); - return status; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -ParseFromBuffer ( XMP_StringPtr buffer, - XMP_StringLen bufferSize, - XMP_OptionBits options /* = 0 */ ) -{ - WrapCheckVoid ( zXMPMeta_ParseFromBuffer_1 ( buffer, bufferSize, options ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -SerializeToBuffer ( tStringObj * pktString, - XMP_OptionBits options, - XMP_StringLen padding, - XMP_StringPtr newline, - XMP_StringPtr indent, - XMP_Index baseIndent /* = 0 */ ) const -{ - XMP_StringPtr resultPtr = 0; - XMP_StringLen resultLen = 0; - WrapCheckVoid ( zXMPMeta_SerializeToBuffer_1 ( &resultPtr, &resultLen, options, padding, newline, indent, baseIndent ) ); - if ( pktString != 0 ) pktString->assign ( resultPtr, resultLen ); - WXMPMeta_UnlockObject_1 ( this->xmpRef, 0 ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPMeta,void):: -SerializeToBuffer ( tStringObj * pktString, - XMP_OptionBits options /* = 0 */, - XMP_StringLen padding /* = 0 */ ) const -{ - this->SerializeToBuffer ( pktString, options, padding, "", "", 0 ); -} - -// ------------------------------------------------------------------------------------------------- - -// ================================================================================================= diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/TXMPUtils.incl_cpp b/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/TXMPUtils.incl_cpp deleted file mode 100644 index 6898be73bc2..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/TXMPUtils.incl_cpp +++ /dev/null @@ -1,493 +0,0 @@ -// ================================================================================================= -// ADOBE SYSTEMS INCORPORATED -// Copyright 2002-2008 Adobe Systems Incorporated -// All Rights Reserved -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -// ================================================================================================ -/// \file TXMPUtils.incl_cpp -/// \brief The implementation of the TXMPUtils template class. - -#include "XMPSDK.hpp" -#include "client-glue/WXMP_Common.hpp" -#include "client-glue/WXMPUtils.hpp" - -// ================================================================================================= -// Implementation Guidelines -// ========================= -// -// The implementations of the template functions are very stylized. ... -// -// ================================================================================================= - -XMP_MethodIntro(TXMPUtils,void):: -ComposeArrayItemPath ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - tStringObj * fullPath ) -{ - XMP_StringPtr pathPtr = 0; - XMP_StringLen pathLen = 0; - WrapCheckVoid ( zXMPUtils_ComposeArrayItemPath_1 ( schemaNS, arrayName, itemIndex, &pathPtr, &pathLen ) ); - if ( fullPath != 0 ) fullPath->assign ( pathPtr, pathLen ); - WXMPUtils_Unlock_1 ( 0 ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -ComposeStructFieldPath ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - tStringObj * fullPath ) -{ - XMP_StringPtr pathPtr = 0; - XMP_StringLen pathLen = 0; - WrapCheckVoid ( zXMPUtils_ComposeStructFieldPath_1 ( schemaNS, structName, fieldNS, fieldName, &pathPtr, &pathLen ) ); - if ( fullPath != 0 ) fullPath->assign ( pathPtr, pathLen ); - WXMPUtils_Unlock_1 ( 0 ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -ComposeQualifierPath ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - tStringObj * fullPath ) -{ - XMP_StringPtr pathPtr = 0; - XMP_StringLen pathLen = 0; - WrapCheckVoid ( zXMPUtils_ComposeQualifierPath_1 ( schemaNS, propName, qualNS, qualName, &pathPtr, &pathLen ) ); - if ( fullPath != 0 ) fullPath->assign ( pathPtr, pathLen ); - WXMPUtils_Unlock_1 ( 0 ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -ComposeLangSelector ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr langName, - tStringObj * fullPath ) -{ - XMP_StringPtr pathPtr = 0; - XMP_StringLen pathLen = 0; - WrapCheckVoid ( zXMPUtils_ComposeLangSelector_1 ( schemaNS, arrayName, langName, &pathPtr, &pathLen ) ); - if ( fullPath != 0 ) fullPath->assign ( pathPtr, pathLen ); - WXMPUtils_Unlock_1 ( 0 ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -ComposeLangSelector ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - const tStringObj & langName, - tStringObj * fullPath ) -{ - TXMPUtils::ComposeLangSelector ( schemaNS, arrayName, langName.c_str(), fullPath ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -ComposeFieldSelector ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - XMP_StringPtr fieldValue, - tStringObj * fullPath ) -{ - XMP_StringPtr pathPtr = 0; - XMP_StringLen pathLen = 0; - WrapCheckVoid ( zXMPUtils_ComposeFieldSelector_1 ( schemaNS, arrayName, fieldNS, fieldName, fieldValue, - &pathPtr, &pathLen ) ); - if ( fullPath != 0 ) fullPath->assign ( pathPtr, pathLen ); - WXMPUtils_Unlock_1 ( 0 ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -ComposeFieldSelector ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - const tStringObj & fieldValue, - tStringObj * fullPath ) -{ - TXMPUtils::ComposeFieldSelector ( schemaNS, arrayName, fieldNS, fieldName, fieldValue.c_str(), fullPath ); -} - -// ------------------------------------------------------------------------------------------------- -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -ConvertFromBool ( bool binValue, - tStringObj * strValue ) -{ - XMP_StringPtr strPtr = 0; - XMP_StringLen strLen = 0; - WrapCheckVoid ( zXMPUtils_ConvertFromBool_1 ( binValue, &strPtr, &strLen ) ); - if ( strValue != 0 ) strValue->assign ( strPtr, strLen ); - WXMPUtils_Unlock_1 ( 0 ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -ConvertFromInt ( long binValue, - XMP_StringPtr format, - tStringObj * strValue ) -{ - XMP_StringPtr strPtr = 0; - XMP_StringLen strLen = 0; - WrapCheckVoid ( zXMPUtils_ConvertFromInt_1 ( binValue, format, &strPtr, &strLen ) ); - if ( strValue != 0 ) strValue->assign ( strPtr, strLen ); - WXMPUtils_Unlock_1 ( 0 ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -ConvertFromInt64 ( long long binValue, - XMP_StringPtr format, - tStringObj * strValue ) -{ - XMP_StringPtr strPtr = 0; - XMP_StringLen strLen = 0; - WrapCheckVoid ( zXMPUtils_ConvertFromInt64_1 ( binValue, format, &strPtr, &strLen ) ); - if ( strValue != 0 ) strValue->assign ( strPtr, strLen ); - WXMPUtils_Unlock_1 ( 0 ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -ConvertFromFloat ( double binValue, - XMP_StringPtr format, - tStringObj * strValue ) -{ - XMP_StringPtr strPtr = 0; - XMP_StringLen strLen = 0; - WrapCheckVoid ( zXMPUtils_ConvertFromFloat_1 ( binValue, format, &strPtr, &strLen ) ); - if ( strValue != 0 ) strValue->assign ( strPtr, strLen ); - WXMPUtils_Unlock_1 ( 0 ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -ConvertFromDate ( const XMP_DateTime & binValue, - tStringObj * strValue ) -{ - XMP_StringPtr strPtr = 0; - XMP_StringLen strLen = 0; - WrapCheckVoid ( zXMPUtils_ConvertFromDate_1 ( binValue, &strPtr, &strLen ) ); - if ( strValue != 0 ) strValue->assign ( strPtr, strLen ); - WXMPUtils_Unlock_1 ( 0 ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,bool):: -ConvertToBool ( XMP_StringPtr strValue ) -{ - WrapCheckBool ( value, zXMPUtils_ConvertToBool_1 ( strValue ) ); - return value; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,bool):: -ConvertToBool ( const tStringObj & strValue ) -{ - return TXMPUtils::ConvertToBool ( strValue.c_str() ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,long):: -ConvertToInt ( XMP_StringPtr strValue ) -{ - WrapCheckInt32 ( value, zXMPUtils_ConvertToInt_1 ( strValue ) ); - return value; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,long):: -ConvertToInt ( const tStringObj & strValue ) -{ - return TXMPUtils::ConvertToInt ( strValue.c_str() ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,long long):: -ConvertToInt64 ( XMP_StringPtr strValue ) -{ - WrapCheckInt64 ( value, zXMPUtils_ConvertToInt64_1 ( strValue ) ); - return value; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,long long):: -ConvertToInt64 ( const tStringObj & strValue ) -{ - return TXMPUtils::ConvertToInt64 ( strValue.c_str() ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,double):: -ConvertToFloat ( XMP_StringPtr strValue ) -{ - WrapCheckFloat ( value, zXMPUtils_ConvertToFloat_1 ( strValue ) ); - return value; -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,double):: -ConvertToFloat ( const tStringObj & strValue ) -{ - return TXMPUtils::ConvertToFloat ( strValue.c_str() ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -ConvertToDate ( XMP_StringPtr strValue, - XMP_DateTime * binValue ) -{ - WrapCheckVoid ( zXMPUtils_ConvertToDate_1 ( strValue, binValue ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -ConvertToDate ( const tStringObj & strValue, - XMP_DateTime * binValue ) -{ - TXMPUtils::ConvertToDate ( strValue.c_str(), binValue ); -} - -// ------------------------------------------------------------------------------------------------- -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -CurrentDateTime ( XMP_DateTime * time ) -{ - WrapCheckVoid ( zXMPUtils_CurrentDateTime_1 ( time ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -SetTimeZone ( XMP_DateTime * time ) -{ - WrapCheckVoid ( zXMPUtils_SetTimeZone_1 ( time ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -ConvertToUTCTime ( XMP_DateTime * time ) -{ - WrapCheckVoid ( zXMPUtils_ConvertToUTCTime_1 ( time ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -ConvertToLocalTime ( XMP_DateTime * time ) -{ - WrapCheckVoid ( zXMPUtils_ConvertToLocalTime_1 ( time ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,int):: -CompareDateTime ( const XMP_DateTime & left, - const XMP_DateTime & right ) -{ - WrapCheckInt32 ( result, zXMPUtils_CompareDateTime_1 ( left, right ) ); - return result; -} - -// ------------------------------------------------------------------------------------------------- -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -EncodeToBase64 ( XMP_StringPtr rawStr, - XMP_StringLen rawLen, - tStringObj * encodedStr ) -{ - XMP_StringPtr encPtr = 0; - XMP_StringLen encLen = 0; - WrapCheckVoid ( zXMPUtils_EncodeToBase64_1 ( rawStr, rawLen, &encPtr, &encLen ) ); - if ( encodedStr != 0 ) encodedStr->assign ( encPtr, encLen ); - WXMPUtils_Unlock_1 ( 0 ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -EncodeToBase64 ( const tStringObj & rawStr, - tStringObj * encodedStr ) -{ - TXMPUtils::EncodeToBase64 ( rawStr.c_str(), (XMP_StringLen)rawStr.size(), encodedStr ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -DecodeFromBase64 ( XMP_StringPtr encodedStr, - XMP_StringLen encodedLen, - tStringObj * rawStr ) -{ - XMP_StringPtr rawPtr = 0; - XMP_StringLen rawLen = 0; - WrapCheckVoid ( zXMPUtils_DecodeFromBase64_1 ( encodedStr, encodedLen, &rawPtr, &rawLen ) ); - if ( rawStr != 0 ) rawStr->assign ( rawPtr, rawLen ); - WXMPUtils_Unlock_1 ( 0 ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -DecodeFromBase64 ( const tStringObj & encodedStr, - tStringObj * rawStr ) -{ - TXMPUtils::DecodeFromBase64 ( encodedStr.c_str(), (XMP_StringLen)encodedStr.size(), rawStr ); -} - -// ------------------------------------------------------------------------------------------------- -// ------------------------------------------------------------------------------------------------- - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -PackageForJPEG ( const TXMPMeta & xmpObj, - tStringObj * standardXMP, - tStringObj * extendedXMP, - tStringObj * extendedDigest ) -{ - XMP_StringPtr stdStr = 0; - XMP_StringLen stdLen = 0; - XMP_StringPtr extStr = 0; - XMP_StringLen extLen = 0; - XMP_StringPtr digestStr = 0; - XMP_StringLen digestLen = 0; - WrapCheckVoid ( zXMPUtils_PackageForJPEG_1 ( xmpObj.GetInternalRef(), - &stdStr, &stdLen, &extStr, &extLen, &digestStr, &digestLen ) ); - if ( standardXMP != 0 ) standardXMP->assign ( stdStr, stdLen ); - if ( extendedXMP != 0 ) extendedXMP->assign ( extStr, extLen ); - if ( extendedDigest != 0 ) extendedDigest->assign ( digestStr, digestLen ); - WXMPUtils_Unlock_1 ( 0 ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -MergeFromJPEG ( TXMPMeta * fullXMP, - const TXMPMeta & extendedXMP ) -{ - WrapCheckVoid ( zXMPUtils_MergeFromJPEG_1 ( fullXMP->GetInternalRef(), extendedXMP.GetInternalRef() ) ); -} - -// ------------------------------------------------------------------------------------------------- -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -CatenateArrayItems ( const TXMPMeta & xmpObj, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr separator, - XMP_StringPtr quotes, - XMP_OptionBits options, - tStringObj * catedStr ) -{ - XMP_StringPtr catedPtr = 0; - XMP_StringLen catedLen = 0; - WrapCheckVoid ( zXMPUtils_CatenateArrayItems_1 ( xmpObj.GetInternalRef(), schemaNS, arrayName, - separator, quotes, options, &catedPtr, &catedLen ) ); - if ( catedStr != 0 ) catedStr->assign ( catedPtr, catedLen ); - WXMPUtils_Unlock_1 ( 0 ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -SeparateArrayItems ( TXMPMeta * xmpObj, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_OptionBits options, - XMP_StringPtr catedStr ) -{ - if ( xmpObj == 0 ) throw XMP_Error ( kXMPErr_BadParam, "Null output SXMPMeta pointer" ); - WrapCheckVoid ( zXMPUtils_SeparateArrayItems_1 ( xmpObj->GetInternalRef(), schemaNS, arrayName, options, catedStr ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -SeparateArrayItems ( TXMPMeta * xmpObj, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_OptionBits options, - const tStringObj & catedStr ) -{ - TXMPUtils::SeparateArrayItems ( xmpObj, schemaNS, arrayName, options, catedStr.c_str() ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -RemoveProperties ( TXMPMeta * xmpObj, - XMP_StringPtr schemaNS /* = 0 */, - XMP_StringPtr propName /* = 0 */, - XMP_OptionBits options /* = 0 */ ) -{ - if ( xmpObj == 0 ) throw XMP_Error ( kXMPErr_BadParam, "Null output SXMPMeta pointer" ); - WrapCheckVoid ( zXMPUtils_RemoveProperties_1 ( xmpObj->GetInternalRef(), schemaNS, propName, options ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -AppendProperties ( const TXMPMeta & source, - TXMPMeta * dest, - XMP_OptionBits options /* = 0 */ ) -{ - if ( dest == 0 ) throw XMP_Error ( kXMPErr_BadParam, "Null output SXMPMeta pointer" ); - WrapCheckVoid ( zXMPUtils_AppendProperties_1 ( source.GetInternalRef(), dest->GetInternalRef(), options ) ); -} - -// ------------------------------------------------------------------------------------------------- - -XMP_MethodIntro(TXMPUtils,void):: -DuplicateSubtree ( const TXMPMeta & source, - TXMPMeta * dest, - XMP_StringPtr sourceNS, - XMP_StringPtr sourceRoot, - XMP_StringPtr destNS /*= 0 */, - XMP_StringPtr destRoot /* = 0 */, - XMP_OptionBits options /* = 0 */ ) -{ - if ( dest == 0 ) throw XMP_Error ( kXMPErr_BadParam, "Null output SXMPMeta pointer" ); - WrapCheckVoid ( zXMPUtils_DuplicateSubtree_1 ( source.GetInternalRef(), dest->GetInternalRef(), - sourceNS, sourceRoot, destNS, destRoot, options ) ); -} - -// ================================================================================================= - -// ================================================================================================= diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/WXMPFiles.hpp b/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/WXMPFiles.hpp deleted file mode 100644 index cdc510ce897..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/WXMPFiles.hpp +++ /dev/null @@ -1,167 +0,0 @@ -#ifndef __WXMPFiles_hpp__ -#define __WXMPFiles_hpp__ 1 - -// ================================================================================================= -// ADOBE SYSTEMS INCORPORATED -// Copyright 2002-2007 Adobe Systems Incorporated -// All Rights Reserved -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#include "client-glue/WXMP_Common.hpp" - -#if __cplusplus -extern "C" { -#endif - -// ================================================================================================= -/// \file WXMPFiles.h -/// \brief High level support to access metadata in files of interest to Adobe applications. -/// -/// This header ... -/// -// ================================================================================================= - -// ================================================================================================= - -#define WrapCheckXMPFilesRef(result,WCallProto) \ - WXMP_Result wResult; \ - WCallProto; \ - PropagateException ( wResult ); \ - XMPFilesRef result = XMPFilesRef(wResult.ptrResult) - -// ================================================================================================= - -#define zXMPFiles_GetVersionInfo_1(versionInfo) \ - WXMPFiles_GetVersionInfo_1 ( versionInfo /* no wResult */ ) - -#define zXMPFiles_Initialize_1() \ - WXMPFiles_Initialize_1 ( &wResult ) - -#define zXMPFiles_Initialize_2(options) \ - WXMPFiles_Initialize_2 ( options, &wResult ) - -#define zXMPFiles_Terminate_1() \ - WXMPFiles_Terminate_1 ( /* no wResult */ ) - -#define zXMPFiles_CTor_1() \ - WXMPFiles_CTor_1 ( &wResult ) - -#define zXMPFiles_GetFormatInfo_1(format,flags) \ - WXMPFiles_GetFormatInfo_1 ( format, flags, &wResult ) - -#define zXMPFiles_CheckFileFormat_1(filePath) \ - WXMPFiles_CheckFileFormat_1 ( filePath, &wResult ) - -#define zXMPFiles_CheckPackageFormat_1(folderPath) \ - WXMPFiles_CheckPackageFormat_1 ( folderPath, &wResult ) - -#define zXMPFiles_OpenFile_1(filePath,format,openFlags) \ - WXMPFiles_OpenFile_1 ( this->xmpFilesRef, filePath, format, openFlags, &wResult ) - -#define zXMPFiles_CloseFile_1(closeFlags) \ - WXMPFiles_CloseFile_1 ( this->xmpFilesRef, closeFlags, &wResult ) - -#define zXMPFiles_GetFileInfo_1(filePath,filePathLen,openFlags,format,handlerFlags) \ - WXMPFiles_GetFileInfo_1 ( this->xmpFilesRef, filePath, filePathLen, openFlags, format, handlerFlags, &wResult ) - -#define zXMPFiles_SetAbortProc_1(abortProc,abortArg) \ - WXMPFiles_SetAbortProc_1 ( this->xmpFilesRef, abortProc, abortArg, &wResult ) - -#define zXMPFiles_GetXMP_1(xmpRef,xmpPacket,xmpPacketLen,packetInfo) \ - WXMPFiles_GetXMP_1 ( this->xmpFilesRef, xmpRef, xmpPacket, xmpPacketLen, packetInfo, &wResult ) - -#define zXMPFiles_GetThumbnail_1(tnailInfo) \ - WXMPFiles_GetThumbnail_1 ( this->xmpFilesRef, tnailInfo, &wResult ) - -#define zXMPFiles_PutXMP_1(xmpRef,xmpPacket,xmpPacketLen) \ - WXMPFiles_PutXMP_1 ( this->xmpFilesRef, xmpRef, xmpPacket, xmpPacketLen, &wResult ) - -#define zXMPFiles_CanPutXMP_1(xmpRef,xmpPacket,xmpPacketLen) \ - WXMPFiles_CanPutXMP_1 ( this->xmpFilesRef, xmpRef, xmpPacket, xmpPacketLen, &wResult ) - -// ================================================================================================= - -extern void WXMPFiles_GetVersionInfo_1 ( XMP_VersionInfo * versionInfo ); - -extern void WXMPFiles_Initialize_1 ( WXMP_Result * result ); - -extern void WXMPFiles_Initialize_2 ( XMP_OptionBits options, WXMP_Result * result ); - -extern void WXMPFiles_Terminate_1(); - -extern void WXMPFiles_CTor_1 ( WXMP_Result * result ); - -extern void WXMPFiles_UnlockLib_1(); - -extern void WXMPFiles_UnlockObj_1 ( XMPFilesRef xmpFilesRef ); - -extern void WXMPFiles_IncrementRefCount_1 ( XMPFilesRef xmpFilesRef ); - -extern void WXMPFiles_DecrementRefCount_1 ( XMPFilesRef xmpFilesRef ); - -extern void WXMPFiles_GetFormatInfo_1 ( XMP_FileFormat format, - XMP_OptionBits * flags, // ! Can be null. - WXMP_Result * result ); - -extern void WXMPFiles_CheckFileFormat_1 ( XMP_StringPtr filePath, - WXMP_Result * result ); - -extern void WXMPFiles_CheckPackageFormat_1 ( XMP_StringPtr folderPath, - WXMP_Result * result ); - -extern void WXMPFiles_OpenFile_1 ( XMPFilesRef xmpFilesRef, - XMP_StringPtr filePath, - XMP_FileFormat format, - XMP_OptionBits openFlags, - WXMP_Result * result ); - -extern void WXMPFiles_CloseFile_1 ( XMPFilesRef xmpFilesRef, - XMP_OptionBits closeFlags, - WXMP_Result * result ); - -extern void WXMPFiles_GetFileInfo_1 ( XMPFilesRef xmpFilesRef, - XMP_StringPtr * filePath, - XMP_StringLen * filePathLen, - XMP_OptionBits * openFlags, // ! Can be null. - XMP_FileFormat * format, // ! Can be null. - XMP_OptionBits * handlerFlags, // ! Can be null. - WXMP_Result * result ); - -extern void WXMPFiles_SetAbortProc_1 ( XMPFilesRef xmpFilesRef, - XMP_AbortProc abortProc, - void * abortArg, - WXMP_Result * result ); - -extern void WXMPFiles_GetXMP_1 ( XMPFilesRef xmpFilesRef, - XMPMetaRef xmpRef, // ! Can be null. - XMP_StringPtr * xmpPacket, - XMP_StringLen * xmpPacketLen, - XMP_PacketInfo * packetInfo, // ! Can be null. - WXMP_Result * result ); - -extern void WXMPFiles_GetThumbnail_1 ( XMPFilesRef xmpFilesRef, - XMP_ThumbnailInfo * tnailInfo, // ! Can be null. - WXMP_Result * result ); - -extern void WXMPFiles_PutXMP_1 ( XMPFilesRef xmpFilesRef, - XMPMetaRef xmpRef, // ! Only one of the XMP object or packet are passed. - XMP_StringPtr xmpPacket, - XMP_StringLen xmpPacketLen, - WXMP_Result * result ); - -extern void WXMPFiles_CanPutXMP_1 ( XMPFilesRef xmpFilesRef, - XMPMetaRef xmpRef, // ! Only one of the XMP object or packet are passed. - XMP_StringPtr xmpPacket, - XMP_StringLen xmpPacketLen, - WXMP_Result * result ); - -// ================================================================================================= - -#if __cplusplus -} -#endif - -#endif // __WXMPFiles_hpp__ diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/WXMPIterator.hpp b/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/WXMPIterator.hpp deleted file mode 100644 index c5e9e26d2c7..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/WXMPIterator.hpp +++ /dev/null @@ -1,83 +0,0 @@ -#if ! __WXMPIterator_hpp__ -#define __WXMPIterator_hpp__ 1 - -// ================================================================================================= -// Copyright 2002-2007 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#include "client-glue/WXMP_Common.hpp" - -#if __cplusplus -extern "C" { -#endif - -// ================================================================================================= - -#define zXMPIterator_PropCTor_1(xmpRef,schemaNS,propName,options) \ - WXMPIterator_PropCTor_1 ( xmpRef, schemaNS, propName, options, &wResult ); - -#define zXMPIterator_TableCTor_1(schemaNS,propName,options) \ - WXMPIterator_TableCTor_1 ( schemaNS, propName, options, &wResult ); - - -#define zXMPIterator_Next_1(schemaNS,nsSize,propPath,pathSize,propValue,valueSize,options) \ - WXMPIterator_Next_1 ( this->iterRef, schemaNS, nsSize, propPath, pathSize, propValue, valueSize, options, &wResult ); - -#define zXMPIterator_Skip_1(options) \ - WXMPIterator_Skip_1 ( this->iterRef, options, &wResult ); - -// ------------------------------------------------------------------------------------------------- - -extern void -WXMPIterator_PropCTor_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_OptionBits options, - WXMP_Result * wResult ); - -extern void -WXMPIterator_TableCTor_1 ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_OptionBits options, - WXMP_Result * wResult ); - -extern void -WXMPIterator_IncrementRefCount_1 ( XMPIteratorRef iterRef ); - -extern void -WXMPIterator_DecrementRefCount_1 ( XMPIteratorRef iterRef ); - -extern void -WXMPIterator_Unlock_1 ( XMP_OptionBits options ); - -extern void -WXMPIterator_Next_1 ( XMPIteratorRef iterRef, - XMP_StringPtr * schemaNS, - XMP_StringLen * nsSize, - XMP_StringPtr * propPath, - XMP_StringLen * pathSize, - XMP_StringPtr * propValue, - XMP_StringLen * valueSize, - XMP_OptionBits * options, - WXMP_Result * wResult ); - -extern void -WXMPIterator_Skip_1 ( XMPIteratorRef iterRef, - XMP_OptionBits options, - WXMP_Result * wResult ); - -extern void -WXMPUtils_UnlockIter_1 ( XMPIteratorRef iterRef, - XMP_OptionBits options ); - -// ================================================================================================= - -#if __cplusplus -} /* extern "C" */ -#endif - -#endif // __WXMPIterator_hpp__ diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/WXMPMeta.hpp b/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/WXMPMeta.hpp deleted file mode 100644 index ca943742587..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/WXMPMeta.hpp +++ /dev/null @@ -1,622 +0,0 @@ -#if ! __WXMPMeta_hpp__ -#define __WXMPMeta_hpp__ 1 - -// ================================================================================================= -// Copyright 2002-2008 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#include "client-glue/WXMP_Common.hpp" - -#if __cplusplus -extern "C" { -#endif - -// ================================================================================================= -#define zXMPMeta_GetVersionInfo_1(info) \ - WXMPMeta_GetVersionInfo_1 ( info /* no wResult */ ) - -#define zXMPMeta_Initialize_1() \ - WXMPMeta_Initialize_1 ( &wResult ) -#define zXMPMeta_Terminate_1() \ - WXMPMeta_Terminate_1 ( /* no wResult */ ) - -#define zXMPMeta_CTor_1() \ - WXMPMeta_CTor_1 ( &wResult ) - -#define zXMPMeta_GetGlobalOptions_1() \ - WXMPMeta_GetGlobalOptions_1 ( &wResult ) - -#define zXMPMeta_SetGlobalOptions_1(options) \ - WXMPMeta_SetGlobalOptions_1 ( options, &wResult ) - -#define zXMPMeta_DumpNamespaces_1(outProc,refCon) \ - WXMPMeta_DumpNamespaces_1 ( outProc, refCon, &wResult ) - -#define zXMPMeta_DumpAliases_1(outProc,refCon) \ - WXMPMeta_DumpAliases_1 ( outProc, refCon, &wResult ) - -#define zXMPMeta_RegisterNamespace_1(namespaceURI,prefix) \ - WXMPMeta_RegisterNamespace_1 ( namespaceURI, prefix, &wResult ) - -#define zXMPMeta_GetNamespacePrefix_1(namespaceURI,namespacePrefix,prefixSize) \ - WXMPMeta_GetNamespacePrefix_1 ( namespaceURI, namespacePrefix, prefixSize, &wResult ) - -#define zXMPMeta_GetNamespaceURI_1(namespacePrefix,namespaceURI,uriSize) \ - WXMPMeta_GetNamespaceURI_1 ( namespacePrefix, namespaceURI, uriSize, &wResult ) - -#define zXMPMeta_DeleteNamespace_1(namespaceURI) \ - WXMPMeta_DeleteNamespace_1 ( namespaceURI, &wResult ) - -#define zXMPMeta_RegisterAlias_1(aliasNS,aliasProp,actualNS,actualProp,arrayForm) \ - WXMPMeta_RegisterAlias_1 ( aliasNS, aliasProp, actualNS, actualProp, arrayForm, &wResult ) - -#define zXMPMeta_ResolveAlias_1(aliasNS,aliasProp,actualNS,nsSize,actualProp,propSize,arrayForm) \ - WXMPMeta_ResolveAlias_1 ( aliasNS, aliasProp, actualNS, nsSize, actualProp, propSize, arrayForm, &wResult ) - -#define zXMPMeta_DeleteAlias_1(aliasNS,aliasProp) \ - WXMPMeta_DeleteAlias_1 ( aliasNS, aliasProp, &wResult ) - -#define zXMPMeta_RegisterStandardAliases_1(schemaNS) \ - WXMPMeta_RegisterStandardAliases_1 ( schemaNS, &wResult ) - -#define zXMPMeta_GetProperty_1(schemaNS,propName,propValue,valueSize,options) \ - WXMPMeta_GetProperty_1 ( this->xmpRef, schemaNS, propName, propValue, valueSize, options, &wResult ) - -#define zXMPMeta_GetArrayItem_1(schemaNS,arrayName,itemIndex,itemValue,valueSize,options) \ - WXMPMeta_GetArrayItem_1 ( this->xmpRef, schemaNS, arrayName, itemIndex, itemValue, valueSize, options, &wResult ) - -#define zXMPMeta_GetStructField_1(schemaNS,structName,fieldNS,fieldName,fieldValue,valueSize,options) \ - WXMPMeta_GetStructField_1 ( this->xmpRef, schemaNS, structName, fieldNS, fieldName, fieldValue, valueSize, options, &wResult ) - -#define zXMPMeta_GetQualifier_1(schemaNS,propName,qualNS,qualName,qualValue,valueSize,options) \ - WXMPMeta_GetQualifier_1 ( this->xmpRef, schemaNS, propName, qualNS, qualName, qualValue, valueSize, options, &wResult ) - -#define zXMPMeta_SetProperty_1(schemaNS,propName,propValue,options) \ - WXMPMeta_SetProperty_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult ) - -#define zXMPMeta_SetArrayItem_1(schemaNS,arrayName,itemIndex,itemValue,options) \ - WXMPMeta_SetArrayItem_1 ( this->xmpRef, schemaNS, arrayName, itemIndex, itemValue, options, &wResult ) - -#define zXMPMeta_AppendArrayItem_1(schemaNS,arrayName,arrayOptions,itemValue,options) \ - WXMPMeta_AppendArrayItem_1 ( this->xmpRef, schemaNS, arrayName, arrayOptions, itemValue, options, &wResult ) - -#define zXMPMeta_SetStructField_1(schemaNS,structName,fieldNS,fieldName,fieldValue,options) \ - WXMPMeta_SetStructField_1 ( this->xmpRef, schemaNS, structName, fieldNS, fieldName, fieldValue, options, &wResult ) - -#define zXMPMeta_SetQualifier_1(schemaNS,propName,qualNS,qualName,qualValue,options) \ - WXMPMeta_SetQualifier_1 ( this->xmpRef, schemaNS, propName, qualNS, qualName, qualValue, options, &wResult ) - -#define zXMPMeta_DeleteProperty_1(schemaNS,propName) \ - WXMPMeta_DeleteProperty_1 ( this->xmpRef, schemaNS, propName, &wResult ) - -#define zXMPMeta_DeleteArrayItem_1(schemaNS,arrayName,itemIndex) \ - WXMPMeta_DeleteArrayItem_1 ( this->xmpRef, schemaNS, arrayName, itemIndex, &wResult ) - -#define zXMPMeta_DeleteStructField_1(schemaNS,structName,fieldNS,fieldName) \ - WXMPMeta_DeleteStructField_1 ( this->xmpRef, schemaNS, structName, fieldNS, fieldName, &wResult ) - -#define zXMPMeta_DeleteQualifier_1(schemaNS,propName,qualNS,qualName) \ - WXMPMeta_DeleteQualifier_1 ( this->xmpRef, schemaNS, propName, qualNS, qualName, &wResult ) - -#define zXMPMeta_DoesPropertyExist_1(schemaNS,propName) \ - WXMPMeta_DoesPropertyExist_1 ( this->xmpRef, schemaNS, propName, &wResult ) - -#define zXMPMeta_DoesArrayItemExist_1(schemaNS,arrayName,itemIndex) \ - WXMPMeta_DoesArrayItemExist_1 ( this->xmpRef, schemaNS, arrayName, itemIndex, &wResult ) - -#define zXMPMeta_DoesStructFieldExist_1(schemaNS,structName,fieldNS,fieldName) \ - WXMPMeta_DoesStructFieldExist_1 ( this->xmpRef, schemaNS, structName, fieldNS, fieldName, &wResult ) - -#define zXMPMeta_DoesQualifierExist_1(schemaNS,propName,qualNS,qualName) \ - WXMPMeta_DoesQualifierExist_1 ( this->xmpRef, schemaNS, propName, qualNS, qualName, &wResult ) - -#define zXMPMeta_GetLocalizedText_1(schemaNS,altTextName,genericLang,specificLang,actualLang,langSize,itemValue,valueSize,options) \ - WXMPMeta_GetLocalizedText_1 ( this->xmpRef, schemaNS, altTextName, genericLang, specificLang, actualLang, langSize, itemValue, valueSize, options, &wResult ) - -#define zXMPMeta_SetLocalizedText_1(schemaNS,altTextName,genericLang,specificLang,itemValue,options) \ - WXMPMeta_SetLocalizedText_1 ( this->xmpRef, schemaNS, altTextName, genericLang, specificLang, itemValue, options, &wResult ) - -#define zXMPMeta_GetProperty_Bool_1(schemaNS,propName,propValue,options) \ - WXMPMeta_GetProperty_Bool_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult ) - -#define zXMPMeta_GetProperty_Int_1(schemaNS,propName,propValue,options) \ - WXMPMeta_GetProperty_Int_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult ) - -#define zXMPMeta_GetProperty_Int64_1(schemaNS,propName,propValue,options) \ - WXMPMeta_GetProperty_Int64_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult ) - -#define zXMPMeta_GetProperty_Float_1(schemaNS,propName,propValue,options) \ - WXMPMeta_GetProperty_Float_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult ) - -#define zXMPMeta_GetProperty_Date_1(schemaNS,propName,propValue,options) \ - WXMPMeta_GetProperty_Date_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult ) - -#define zXMPMeta_SetProperty_Bool_1(schemaNS,propName,propValue,options) \ - WXMPMeta_SetProperty_Bool_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult ) - -#define zXMPMeta_SetProperty_Int_1(schemaNS,propName,propValue,options) \ - WXMPMeta_SetProperty_Int_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult ) - -#define zXMPMeta_SetProperty_Int64_1(schemaNS,propName,propValue,options) \ - WXMPMeta_SetProperty_Int64_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult ) - -#define zXMPMeta_SetProperty_Float_1(schemaNS,propName,propValue,options) \ - WXMPMeta_SetProperty_Float_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult ) - -#define zXMPMeta_SetProperty_Date_1(schemaNS,propName,propValue,options) \ - WXMPMeta_SetProperty_Date_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult ) - -#define zXMPMeta_GetObjectName_1(namePtr,nameLen) \ - WXMPMeta_GetObjectName_1 ( this->xmpRef, namePtr, nameLen, &wResult ) - -#define zXMPMeta_SetObjectName_1(name) \ - WXMPMeta_SetObjectName_1 ( this->xmpRef, name, &wResult ) - -#define zXMPMeta_GetObjectOptions_1() \ - WXMPMeta_GetObjectOptions_1 ( this->xmpRef, &wResult ) - -#define zXMPMeta_SetObjectOptions_1(options) \ - WXMPMeta_SetObjectOptions_1 ( this->xmpRef, options, &wResult ) - -#define zXMPMeta_Sort_1() \ - WXMPMeta_Sort_1 ( this->xmpRef, &wResult ) - -#define zXMPMeta_Erase_1() \ - WXMPMeta_Erase_1 ( this->xmpRef, &wResult ) - -#define zXMPMeta_Clone_1(options) \ - WXMPMeta_Clone_1 ( this->xmpRef, options, &wResult ) - -#define zXMPMeta_CountArrayItems_1(schemaNS,arrayName) \ - WXMPMeta_CountArrayItems_1 ( this->xmpRef, schemaNS, arrayName, &wResult ) - -#define zXMPMeta_DumpObject_1(outProc,refCon) \ - WXMPMeta_DumpObject_1 ( this->xmpRef, outProc, refCon, &wResult ) - -#define zXMPMeta_ParseFromBuffer_1(buffer,bufferSize,options) \ - WXMPMeta_ParseFromBuffer_1 ( this->xmpRef, buffer, bufferSize, options, &wResult ) - -#define zXMPMeta_SerializeToBuffer_1(pktString,pktSize,options,padding,newline,indent,baseIndent) \ - WXMPMeta_SerializeToBuffer_1 ( this->xmpRef, pktString, pktSize, options, padding, newline, indent, baseIndent, &wResult ) - -// ================================================================================================= - -extern void -WXMPMeta_GetVersionInfo_1 ( XMP_VersionInfo * info ); - -extern void -WXMPMeta_Initialize_1 ( WXMP_Result * wResult ); -extern void -WXMPMeta_Terminate_1(); - -extern void -WXMPMeta_Unlock_1 ( XMP_OptionBits options ); - -// ------------------------------------------------------------------------------------------------- - -extern void -WXMPMeta_CTor_1 ( WXMP_Result * wResult ); - -extern void -WXMPMeta_IncrementRefCount_1 ( XMPMetaRef xmpRef ); - -extern void -WXMPMeta_DecrementRefCount_1 ( XMPMetaRef xmpRef ); - -// ------------------------------------------------------------------------------------------------- - -extern void -WXMPMeta_GetGlobalOptions_1 ( WXMP_Result * wResult ); - -extern void -WXMPMeta_SetGlobalOptions_1 ( XMP_OptionBits options, - WXMP_Result * wResult ); - -// ------------------------------------------------------------------------------------------------- - -extern void -WXMPMeta_DumpNamespaces_1 ( XMP_TextOutputProc outProc, - void * refCon, - WXMP_Result * wResult ); - -extern void -WXMPMeta_DumpAliases_1 ( XMP_TextOutputProc outProc, - void * refCon, - WXMP_Result * wResult ); - -// ------------------------------------------------------------------------------------------------- - -extern void -WXMPMeta_RegisterNamespace_1 ( XMP_StringPtr namespaceURI, - XMP_StringPtr prefix, - WXMP_Result * wResult ); - -extern void -WXMPMeta_GetNamespacePrefix_1 ( XMP_StringPtr namespaceURI, - XMP_StringPtr * namespacePrefix, - XMP_StringLen * prefixSize, - WXMP_Result * wResult ); - -extern void -WXMPMeta_GetNamespaceURI_1 ( XMP_StringPtr namespacePrefix, - XMP_StringPtr * namespaceURI, - XMP_StringLen * uriSize, - WXMP_Result * wResult ); - -extern void -WXMPMeta_DeleteNamespace_1 ( XMP_StringPtr namespaceURI, - WXMP_Result * wResult ); - -// ------------------------------------------------------------------------------------------------- - -extern void -WXMPMeta_RegisterAlias_1 ( XMP_StringPtr aliasNS, - XMP_StringPtr aliasProp, - XMP_StringPtr actualNS, - XMP_StringPtr actualProp, - XMP_OptionBits arrayForm, - WXMP_Result * wResult ); - -extern void -WXMPMeta_ResolveAlias_1 ( XMP_StringPtr aliasNS, - XMP_StringPtr aliasProp, - XMP_StringPtr * actualNS, - XMP_StringLen * nsSize, - XMP_StringPtr * actualProp, - XMP_StringLen * propSize, - XMP_OptionBits * arrayForm, - WXMP_Result * wResult ); - -extern void -WXMPMeta_DeleteAlias_1 ( XMP_StringPtr aliasNS, - XMP_StringPtr aliasProp, - WXMP_Result * wResult ); - -extern void -WXMPMeta_RegisterStandardAliases_1 ( XMP_StringPtr schemaNS, - WXMP_Result * wResult ); - -// ------------------------------------------------------------------------------------------------- - -extern void -WXMPMeta_UnlockObject_1 ( XMPMetaRef xmpRef, - XMP_OptionBits options ); - -// ------------------------------------------------------------------------------------------------- - -extern void -WXMPMeta_GetProperty_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr * propValue, - XMP_StringLen * valueSize, - XMP_OptionBits * options, - WXMP_Result * wResult ) /* const */ ; - -extern void -WXMPMeta_GetArrayItem_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - XMP_StringPtr * itemValue, - XMP_StringLen * valueSize, - XMP_OptionBits * options, - WXMP_Result * wResult ) /* const */ ; - -extern void -WXMPMeta_GetStructField_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - XMP_StringPtr * fieldValue, - XMP_StringLen * valueSize, - XMP_OptionBits * options, - WXMP_Result * wResult ) /* const */ ; - -extern void -WXMPMeta_GetQualifier_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - XMP_StringPtr * qualValue, - XMP_StringLen * valueSize, - XMP_OptionBits * options, - WXMP_Result * wResult ) /* const */ ; - -// ------------------------------------------------------------------------------------------------- - -extern void -WXMPMeta_SetProperty_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr propValue, - XMP_OptionBits options, - WXMP_Result * wResult ); - -extern void -WXMPMeta_SetArrayItem_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - XMP_StringPtr itemValue, - XMP_OptionBits options, - WXMP_Result * wResult ); - -extern void -WXMPMeta_AppendArrayItem_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_OptionBits arrayOptions, - XMP_StringPtr itemValue, - XMP_OptionBits options, - WXMP_Result * wResult ); - -extern void -WXMPMeta_SetStructField_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - XMP_StringPtr fieldValue, - XMP_OptionBits options, - WXMP_Result * wResult ); - -extern void -WXMPMeta_SetQualifier_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - XMP_StringPtr qualValue, - XMP_OptionBits options, - WXMP_Result * wResult ); - -// ------------------------------------------------------------------------------------------------- - -extern void -WXMPMeta_DeleteProperty_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - WXMP_Result * wResult ); - -extern void -WXMPMeta_DeleteArrayItem_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - WXMP_Result * wResult ); - -extern void -WXMPMeta_DeleteStructField_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - WXMP_Result * wResult ); - -extern void -WXMPMeta_DeleteQualifier_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - WXMP_Result * wResult ); - -// ------------------------------------------------------------------------------------------------- - -extern void -WXMPMeta_DoesPropertyExist_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - WXMP_Result * wResult ) /* const */ ; - -extern void -WXMPMeta_DoesArrayItemExist_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - WXMP_Result * wResult ) /* const */ ; - -extern void -WXMPMeta_DoesStructFieldExist_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - WXMP_Result * wResult ) /* const */ ; - -extern void -WXMPMeta_DoesQualifierExist_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - WXMP_Result * wResult ) /* const */ ; - -// ------------------------------------------------------------------------------------------------- - -extern void -WXMPMeta_GetLocalizedText_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr altTextName, - XMP_StringPtr genericLang, - XMP_StringPtr specificLang, - XMP_StringPtr * actualLang, - XMP_StringLen * langSize, - XMP_StringPtr * itemValue, - XMP_StringLen * valueSize, - XMP_OptionBits * options, - WXMP_Result * wResult ) /* const */ ; - -extern void -WXMPMeta_SetLocalizedText_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr altTextName, - XMP_StringPtr genericLang, - XMP_StringPtr specificLang, - XMP_StringPtr itemValue, - XMP_OptionBits options, - WXMP_Result * wResult ); - -// ------------------------------------------------------------------------------------------------- - -extern void -WXMPMeta_GetProperty_Bool_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_Bool * propValue, - XMP_OptionBits * options, - WXMP_Result * wResult ) /* const */ ; - -extern void -WXMPMeta_GetProperty_Int_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_Int32 * propValue, - XMP_OptionBits * options, - WXMP_Result * wResult ) /* const */ ; - -extern void -WXMPMeta_GetProperty_Int64_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_Int64 * propValue, - XMP_OptionBits * options, - WXMP_Result * wResult ) /* const */ ; - -extern void -WXMPMeta_GetProperty_Float_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - double * propValue, - XMP_OptionBits * options, - WXMP_Result * wResult ) /* const */ ; - -extern void -WXMPMeta_GetProperty_Date_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_DateTime * propValue, - XMP_OptionBits * options, - WXMP_Result * wResult ) /* const */ ; - -extern void -WXMPMeta_SetProperty_Bool_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_Bool propValue, - XMP_OptionBits options, - WXMP_Result * wResult ); - -extern void -WXMPMeta_SetProperty_Int_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_Int32 propValue, - XMP_OptionBits options, - WXMP_Result * wResult ); - -extern void -WXMPMeta_SetProperty_Int64_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_Int64 propValue, - XMP_OptionBits options, - WXMP_Result * wResult ); - -extern void -WXMPMeta_SetProperty_Float_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - double propValue, - XMP_OptionBits options, - WXMP_Result * wResult ); - -extern void -WXMPMeta_SetProperty_Date_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - const XMP_DateTime & propValue, - XMP_OptionBits options, - WXMP_Result * wResult ); - -// ------------------------------------------------------------------------------------------------- - -extern void -WXMPMeta_GetObjectName_1 ( XMPMetaRef xmpRef, - XMP_StringPtr * namePtr, - XMP_StringLen * nameLen, - WXMP_Result * wResult ) /* const */ ; - -extern void -WXMPMeta_SetObjectName_1 ( XMPMetaRef xmpRef, - XMP_StringPtr name, - WXMP_Result * wResult ); - -extern void -WXMPMeta_GetObjectOptions_1 ( XMPMetaRef xmpRef, - WXMP_Result * wResult ) /* const */ ; - -extern void -WXMPMeta_SetObjectOptions_1 ( XMPMetaRef xmpRef, - XMP_OptionBits options, - WXMP_Result * wResult ); - -extern void -WXMPMeta_Sort_1 ( XMPMetaRef xmpRef, - WXMP_Result * wResult ); - -extern void -WXMPMeta_Erase_1 ( XMPMetaRef xmpRef, - WXMP_Result * wResult ); - -extern void -WXMPMeta_Clone_1 ( XMPMetaRef xmpRef, - XMP_OptionBits options, - WXMP_Result * wResult ) /* const */ ; - -extern void -WXMPMeta_CountArrayItems_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - WXMP_Result * wResult ) /* const */ ; - -extern void -WXMPMeta_DumpObject_1 ( XMPMetaRef xmpRef, - XMP_TextOutputProc outProc, - void * refCon, - WXMP_Result * wResult ) /* const */ ; - -// ------------------------------------------------------------------------------------------------- - -extern void -WXMPMeta_ParseFromBuffer_1 ( XMPMetaRef xmpRef, - XMP_StringPtr buffer, - XMP_StringLen bufferSize, - XMP_OptionBits options, - WXMP_Result * wResult ); - -extern void -WXMPMeta_SerializeToBuffer_1 ( XMPMetaRef xmpRef, - XMP_StringPtr * pktString, - XMP_StringLen * pktSize, - XMP_OptionBits options, - XMP_StringLen padding, - XMP_StringPtr newline, - XMP_StringPtr indent, - XMP_Index baseIndent, - WXMP_Result * wResult ) /* const */ ; - -// ================================================================================================= - -#if __cplusplus -} /* extern "C" */ -#endif - -#endif // __WXMPMeta_hpp__ diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/WXMPUtils.hpp b/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/WXMPUtils.hpp deleted file mode 100644 index 55890fc5d86..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/WXMPUtils.hpp +++ /dev/null @@ -1,322 +0,0 @@ -#if ! __WXMPUtils_hpp__ -#define __WXMPUtils_hpp__ 1 - -// ================================================================================================= -// Copyright 2002-2008 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#include "client-glue/WXMP_Common.hpp" - -#if __cplusplus -extern "C" { -#endif - -// ================================================================================================= - -#define zXMPUtils_ComposeArrayItemPath_1(schemaNS,arrayName,itemIndex,fullPath,pathSize) \ - WXMPUtils_ComposeArrayItemPath_1 ( schemaNS, arrayName, itemIndex, fullPath, pathSize, &wResult ); - -#define zXMPUtils_ComposeStructFieldPath_1(schemaNS,structName,fieldNS,fieldName,fullPath,pathSize) \ - WXMPUtils_ComposeStructFieldPath_1 ( schemaNS, structName, fieldNS, fieldName, fullPath, pathSize, &wResult ); - -#define zXMPUtils_ComposeQualifierPath_1(schemaNS,propName,qualNS,qualName,fullPath,pathSize) \ - WXMPUtils_ComposeQualifierPath_1 ( schemaNS, propName, qualNS, qualName, fullPath, pathSize, &wResult ); - -#define zXMPUtils_ComposeLangSelector_1(schemaNS,arrayName,langName,fullPath,pathSize) \ - WXMPUtils_ComposeLangSelector_1 ( schemaNS, arrayName, langName, fullPath, pathSize, &wResult ); - -#define zXMPUtils_ComposeFieldSelector_1(schemaNS,arrayName,fieldNS,fieldName,fieldValue,fullPath,pathSize) \ - WXMPUtils_ComposeFieldSelector_1 ( schemaNS, arrayName, fieldNS, fieldName, fieldValue, fullPath, pathSize, &wResult ); - -#define zXMPUtils_ConvertFromBool_1(binValue,strValue,strSize) \ - WXMPUtils_ConvertFromBool_1 ( binValue, strValue, strSize, &wResult ); - -#define zXMPUtils_ConvertFromInt_1(binValue,format,strValue,strSize) \ - WXMPUtils_ConvertFromInt_1 ( binValue, format, strValue, strSize, &wResult ); - -#define zXMPUtils_ConvertFromInt64_1(binValue,format,strValue,strSize) \ - WXMPUtils_ConvertFromInt64_1 ( binValue, format, strValue, strSize, &wResult ); - -#define zXMPUtils_ConvertFromFloat_1(binValue,format,strValue,strSize) \ - WXMPUtils_ConvertFromFloat_1 ( binValue, format, strValue, strSize, &wResult ); - -#define zXMPUtils_ConvertFromDate_1(binValue,strValue,strSize) \ - WXMPUtils_ConvertFromDate_1 ( binValue, strValue, strSize, &wResult ); - -#define zXMPUtils_ConvertToBool_1(strValue) \ - WXMPUtils_ConvertToBool_1 ( strValue, &wResult ); - -#define zXMPUtils_ConvertToInt_1(strValue) \ - WXMPUtils_ConvertToInt_1 ( strValue, &wResult ); - -#define zXMPUtils_ConvertToInt64_1(strValue) \ - WXMPUtils_ConvertToInt64_1 ( strValue, &wResult ); - -#define zXMPUtils_ConvertToFloat_1(strValue) \ - WXMPUtils_ConvertToFloat_1 ( strValue, &wResult ); - -#define zXMPUtils_ConvertToDate_1(strValue,binValue) \ - WXMPUtils_ConvertToDate_1 ( strValue, binValue, &wResult ); - -#define zXMPUtils_CurrentDateTime_1(time) \ - WXMPUtils_CurrentDateTime_1 ( time, &wResult ); - -#define zXMPUtils_SetTimeZone_1(time) \ - WXMPUtils_SetTimeZone_1 ( time, &wResult ); - -#define zXMPUtils_ConvertToUTCTime_1(time) \ - WXMPUtils_ConvertToUTCTime_1 ( time, &wResult ); - -#define zXMPUtils_ConvertToLocalTime_1(time) \ - WXMPUtils_ConvertToLocalTime_1 ( time, &wResult ); - -#define zXMPUtils_CompareDateTime_1(left,right) \ - WXMPUtils_CompareDateTime_1 ( left, right, &wResult ); - -#define zXMPUtils_EncodeToBase64_1(rawStr,rawLen,encodedStr,encodedLen) \ - WXMPUtils_EncodeToBase64_1 ( rawStr, rawLen, encodedStr, encodedLen, &wResult ); - -#define zXMPUtils_DecodeFromBase64_1(encodedStr,encodedLen,rawStr,rawLen) \ - WXMPUtils_DecodeFromBase64_1 ( encodedStr, encodedLen, rawStr, rawLen, &wResult ); - -#define zXMPUtils_PackageForJPEG_1(xmpObj,stdStr,stdLen,extStr,extLen,digestStr,digestLen) \ - WXMPUtils_PackageForJPEG_1 ( xmpObj, stdStr, stdLen, extStr, extLen, digestStr, digestLen, &wResult ); - -#define zXMPUtils_MergeFromJPEG_1(fullXMP,extendedXMP) \ - WXMPUtils_MergeFromJPEG_1 ( fullXMP, extendedXMP, &wResult ); - -#define zXMPUtils_CatenateArrayItems_1(xmpObj,schemaNS,arrayName,separator,quotes,options,catedPtr,catedLen) \ - WXMPUtils_CatenateArrayItems_1 ( xmpObj, schemaNS, arrayName, separator, quotes, options, catedPtr, catedLen, &wResult ); - -#define zXMPUtils_SeparateArrayItems_1(xmpObj,schemaNS,arrayName,options,catedStr) \ - WXMPUtils_SeparateArrayItems_1 ( xmpObj, schemaNS, arrayName, options, catedStr, &wResult ); - -#define zXMPUtils_RemoveProperties_1(xmpObj,schemaNS,propName,options) \ - WXMPUtils_RemoveProperties_1 ( xmpObj, schemaNS, propName, options, &wResult ); - -#define zXMPUtils_AppendProperties_1(source,dest,options) \ - WXMPUtils_AppendProperties_1 ( source, dest, options, &wResult ); - -#define zXMPUtils_DuplicateSubtree_1(source,dest,sourceNS,sourceRoot,destNS,destRoot,options) \ - WXMPUtils_DuplicateSubtree_1 ( source, dest, sourceNS, sourceRoot, destNS, destRoot, options, &wResult ); - -// ================================================================================================= - -extern void -WXMPUtils_Unlock_1 ( XMP_OptionBits options ); - -// ------------------------------------------------------------------------------------------------- - -extern void -WXMPUtils_ComposeArrayItemPath_1 ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - XMP_StringPtr * fullPath, - XMP_StringLen * pathSize, - WXMP_Result * wResult ); - -extern void -WXMPUtils_ComposeStructFieldPath_1 ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - XMP_StringPtr * fullPath, - XMP_StringLen * pathSize, - WXMP_Result * wResult ); - -extern void -WXMPUtils_ComposeQualifierPath_1 ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - XMP_StringPtr * fullPath, - XMP_StringLen * pathSize, - WXMP_Result * wResult ); - -extern void -WXMPUtils_ComposeLangSelector_1 ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr langName, - XMP_StringPtr * fullPath, - XMP_StringLen * pathSize, - WXMP_Result * wResult ); - -extern void -WXMPUtils_ComposeFieldSelector_1 ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - XMP_StringPtr fieldValue, - XMP_StringPtr * fullPath, - XMP_StringLen * pathSize, - WXMP_Result * wResult ); - -// ------------------------------------------------------------------------------------------------- - -extern void -WXMPUtils_ConvertFromBool_1 ( XMP_Bool binValue, - XMP_StringPtr * strValue, - XMP_StringLen * strSize, - WXMP_Result * wResult ); - -extern void -WXMPUtils_ConvertFromInt_1 ( XMP_Int32 binValue, - XMP_StringPtr format, - XMP_StringPtr * strValue, - XMP_StringLen * strSize, - WXMP_Result * wResult ); - -extern void -WXMPUtils_ConvertFromInt64_1 ( XMP_Int64 binValue, - XMP_StringPtr format, - XMP_StringPtr * strValue, - XMP_StringLen * strSize, - WXMP_Result * wResult ); - -extern void -WXMPUtils_ConvertFromFloat_1 ( double binValue, - XMP_StringPtr format, - XMP_StringPtr * strValue, - XMP_StringLen * strSize, - WXMP_Result * wResult ); - -extern void -WXMPUtils_ConvertFromDate_1 ( const XMP_DateTime & binValue, - XMP_StringPtr * strValue, - XMP_StringLen * strSize, - WXMP_Result * wResult ); - -// ------------------------------------------------------------------------------------------------- - -extern void -WXMPUtils_ConvertToBool_1 ( XMP_StringPtr strValue, - WXMP_Result * wResult ); - -extern void -WXMPUtils_ConvertToInt_1 ( XMP_StringPtr strValue, - WXMP_Result * wResult ); - -extern void -WXMPUtils_ConvertToInt64_1 ( XMP_StringPtr strValue, - WXMP_Result * wResult ); - -extern void -WXMPUtils_ConvertToFloat_1 ( XMP_StringPtr strValue, - WXMP_Result * wResult ); - -extern void -WXMPUtils_ConvertToDate_1 ( XMP_StringPtr strValue, - XMP_DateTime * binValue, - WXMP_Result * wResult ); - -// ------------------------------------------------------------------------------------------------- - -extern void -WXMPUtils_CurrentDateTime_1 ( XMP_DateTime * time, - WXMP_Result * wResult ); - -extern void -WXMPUtils_SetTimeZone_1 ( XMP_DateTime * time, - WXMP_Result * wResult ); - -extern void -WXMPUtils_ConvertToUTCTime_1 ( XMP_DateTime * time, - WXMP_Result * wResult ); - -extern void -WXMPUtils_ConvertToLocalTime_1 ( XMP_DateTime * time, - WXMP_Result * wResult ); - -extern void -WXMPUtils_CompareDateTime_1 ( const XMP_DateTime & left, - const XMP_DateTime & right, - WXMP_Result * wResult ); - -// ------------------------------------------------------------------------------------------------- - -extern void -WXMPUtils_EncodeToBase64_1 ( XMP_StringPtr rawStr, - XMP_StringLen rawLen, - XMP_StringPtr * encodedStr, - XMP_StringLen * encodedLen, - WXMP_Result * wResult ); - -extern void -WXMPUtils_DecodeFromBase64_1 ( XMP_StringPtr encodedStr, - XMP_StringLen encodedLen, - XMP_StringPtr * rawStr, - XMP_StringLen * rawLen, - WXMP_Result * wResult ); - -// ------------------------------------------------------------------------------------------------- - -extern void -WXMPUtils_PackageForJPEG_1 ( XMPMetaRef xmpObj, - XMP_StringPtr * stdStr, - XMP_StringLen * stdLen, - XMP_StringPtr * extStr, - XMP_StringLen * extLen, - XMP_StringPtr * digestStr, - XMP_StringLen * digestLen, - WXMP_Result * wResult ); - -extern void -WXMPUtils_MergeFromJPEG_1 ( XMPMetaRef fullXMP, - XMPMetaRef extendedXMP, - WXMP_Result * wResult ); - -// ------------------------------------------------------------------------------------------------- - -extern void -WXMPUtils_CatenateArrayItems_1 ( XMPMetaRef xmpObj, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr separator, - XMP_StringPtr quotes, - XMP_OptionBits options, - XMP_StringPtr * catedStr, - XMP_StringLen * catedLen, - WXMP_Result * wResult ); - -extern void -WXMPUtils_SeparateArrayItems_1 ( XMPMetaRef xmpObj, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_OptionBits options, - XMP_StringPtr catedStr, - WXMP_Result * wResult ); - -extern void -WXMPUtils_RemoveProperties_1 ( XMPMetaRef xmpObj, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_OptionBits options, - WXMP_Result * wResult ); - -extern void -WXMPUtils_AppendProperties_1 ( XMPMetaRef source, - XMPMetaRef dest, - XMP_OptionBits options, - WXMP_Result * wResult ); - -extern void -WXMPUtils_DuplicateSubtree_1 ( XMPMetaRef source, - XMPMetaRef dest, - XMP_StringPtr sourceNS, - XMP_StringPtr sourceRoot, - XMP_StringPtr destNS, - XMP_StringPtr destRoot, - XMP_OptionBits options, - WXMP_Result * wResult ); - -// ================================================================================================= - -#if __cplusplus -} /* extern "C" */ -#endif - -#endif // __WXMPUtils_hpp__ diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/WXMP_Common.hpp b/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/WXMP_Common.hpp deleted file mode 100644 index 4d6eaab429b..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/include/client-glue/WXMP_Common.hpp +++ /dev/null @@ -1,123 +0,0 @@ -#if ! __WXMP_Common_hpp__ -#define __WXMP_Common_hpp__ 1 - -// ================================================================================================= -// Copyright 2002-2007 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#ifndef XMP_Inline - #if TXMP_EXPAND_INLINE - #define XMP_Inline inline - #else - #define XMP_Inline /* not inline */ - #endif -#endif - -#define XMP_CTorDTorIntro(Class) template XMP_Inline Class -#define XMP_MethodIntro(Class,ResultType) template XMP_Inline ResultType Class - -struct WXMP_Result { - XMP_StringPtr errMessage; - void * ptrResult; - double floatResult; - XMP_Uns64 int64Result; - XMP_Uns32 int32Result; - WXMP_Result() : errMessage(0) {}; -}; - -#if __cplusplus -extern "C" { -#endif - -#define PropagateException(res) \ - if ( res.errMessage != 0 ) throw XMP_Error ( res.int32Result, res.errMessage ); - -#ifndef TraceXMPCalls - #define TraceXMPCalls 0 -#endif - -#if ! TraceXMPCalls - #define InvokeCheck(WCallProto) \ - WXMP_Result wResult; \ - WCallProto; \ - PropagateException ( wResult ) -#else - #define InvokeCheck(WCallProto) \ - WXMP_Result wResult; \ - fprintf ( stderr, "WXMP calling: %s\n", #WCallProto ); fflush ( stderr ); \ - WCallProto; \ - if ( wResult.errMessage == 0 ) { \ - fprintf ( stderr, "WXMP back, no error\n" ); fflush ( stderr ); \ - } else { \ - fprintf ( stderr, "WXMP back, error: %s\n", wResult.errMessage ); fflush ( stderr ); \ - } \ - PropagateException ( wResult ) -#endif - -// ------------------------------------------------------------------------------------------------- - -#define WrapNoCheckVoid(WCallProto) \ - WCallProto; - -#define WrapCheckVoid(WCallProto) \ - InvokeCheck(WCallProto) - -#define WrapCheckMetaRef(result,WCallProto) \ - InvokeCheck(WCallProto); \ - XMPMetaRef result = XMPMetaRef(wResult.ptrResult) - -#define WrapCheckIterRef(result,WCallProto) \ - InvokeCheck(WCallProto); \ - XMPIteratorRef result = XMPIteratorRef(wResult.ptrResult) - -#define WrapCheckDocOpsRef(result,WCallProto) \ - InvokeCheck(WCallProto); \ - XMPDocOpsRef result = XMPDocOpsRef(wResult.ptrResult) - -#define WrapCheckBool(result,WCallProto) \ - InvokeCheck(WCallProto); \ - bool result = bool(wResult.int32Result) - -#define WrapCheckTriState(result,WCallProto) \ - InvokeCheck(WCallProto); \ - XMP_TriState result = XMP_TriState(wResult.int32Result) - -#define WrapCheckOptions(result,WCallProto) \ - InvokeCheck(WCallProto); \ - XMP_OptionBits result = XMP_OptionBits(wResult.int32Result) - -#define WrapCheckStatus(result,WCallProto) \ - InvokeCheck(WCallProto); \ - XMP_Status result = XMP_Status(wResult.int32Result) - -#define WrapCheckIndex(result,WCallProto) \ - InvokeCheck(WCallProto); \ - XMP_Index result = XMP_Index(wResult.int32Result) - -#define WrapCheckInt32(result,WCallProto) \ - InvokeCheck(WCallProto); \ - XMP_Int32 result = wResult.int32Result - -#define WrapCheckInt64(result,WCallProto) \ - InvokeCheck(WCallProto); \ - XMP_Int64 result = wResult.int64Result - -#define WrapCheckFloat(result,WCallProto) \ - InvokeCheck(WCallProto); \ - double result = wResult.floatResult - -#define WrapCheckFormat(result,WCallProto) \ - InvokeCheck(WCallProto); \ - XMP_FileFormat result = wResult.int32Result - -// ================================================================================================= - -#if __cplusplus -} /* extern "C" */ -#endif - -#endif // __WXMP_Common_hpp__ diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/ExpatAdapter.cpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/ExpatAdapter.cpp deleted file mode 100644 index 79669f52226..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/ExpatAdapter.cpp +++ /dev/null @@ -1,504 +0,0 @@ -// ================================================================================================= -// Copyright 2005-2008 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#include "XMP_Environment.h" // ! Must be the first #include! -#include "XMPCore_Impl.hpp" - -#include "ExpatAdapter.hpp" -#include "XMPMeta.hpp" - -#include "expat.h" - -#include - -using namespace std; - -#if XMP_WinBuild -# ifdef _MSC_VER - #pragma warning ( disable : 4996 ) // '...' was declared deprecated -# endif -#endif - -// *** Set memory handlers. - -#ifndef DumpXMLParseEvents - #define DumpXMLParseEvents 0 -#endif - -#define FullNameSeparator '@' - -// ================================================================================================= - -static void StartNamespaceDeclHandler ( void * userData, XMP_StringPtr prefix, XMP_StringPtr uri ); -static void EndNamespaceDeclHandler ( void * userData, XMP_StringPtr prefix ); - -static void StartElementHandler ( void * userData, XMP_StringPtr name, XMP_StringPtr* attrs ); -static void EndElementHandler ( void * userData, XMP_StringPtr name ); - -static void CharacterDataHandler ( void * userData, XMP_StringPtr cData, int len ); -static void StartCdataSectionHandler ( void * userData ); -static void EndCdataSectionHandler ( void * userData ); - -static void ProcessingInstructionHandler ( void * userData, XMP_StringPtr target, XMP_StringPtr data ); -static void CommentHandler ( void * userData, XMP_StringPtr comment ); - -#if BanAllEntityUsage - - // For now we do this by banning DOCTYPE entirely. This is easy and consistent with what is - // available in recent Java XML parsers. Another, somewhat less drastic, approach would be to - // ban all entity declarations. We can't allow declarations and ban references, Expat does not - // call the SkippedEntityHandler for references in attribute values. - - // ! Standard entities (&, <, >, ", ', and numeric character references) are - // ! not banned. Expat handles them transparently no matter what. - - static void StartDoctypeDeclHandler ( void * userData, XMP_StringPtr doctypeName, - XMP_StringPtr sysid, XMP_StringPtr pubid, int has_internal_subset ); - -#endif - -// ================================================================================================= - -extern "C" ExpatAdapter * XMP_NewExpatAdapter() -{ - return new ExpatAdapter; -} // XMP_NewExpatAdapter - -// ================================================================================================= - -ExpatAdapter::ExpatAdapter() : parser(0) -{ - - #if XMP_DebugBuild - this->elemNesting = 0; - #if DumpXMLParseEvents - if ( this->parseLog == 0 ) this->parseLog = stdout; - #endif - #endif - - this->parser = XML_ParserCreateNS ( 0, FullNameSeparator ); - if ( this->parser == 0 ) XMP_Throw ( "Failure creating Expat parser", kXMPErr_ExternalFailure ); - - XML_SetUserData ( this->parser, this ); - - XML_SetNamespaceDeclHandler ( this->parser, StartNamespaceDeclHandler, EndNamespaceDeclHandler ); - XML_SetElementHandler ( this->parser, StartElementHandler, EndElementHandler ); - - XML_SetCharacterDataHandler ( this->parser, CharacterDataHandler ); - XML_SetCdataSectionHandler ( this->parser, StartCdataSectionHandler, EndCdataSectionHandler ); - - XML_SetProcessingInstructionHandler ( this->parser, ProcessingInstructionHandler ); - XML_SetCommentHandler ( this->parser, CommentHandler ); - - #if BanAllEntityUsage - XML_SetStartDoctypeDeclHandler ( this->parser, StartDoctypeDeclHandler ); - isAborted = false; - #endif - - this->parseStack.push_back ( &this->tree ); // Push the XML root node. - -} // ExpatAdapter::ExpatAdapter - -// ================================================================================================= - -ExpatAdapter::~ExpatAdapter() -{ - - if ( this->parser != 0 ) XML_ParserFree ( this->parser ); - this->parser = 0; - -} // ExpatAdapter::~ExpatAdapter - -// ================================================================================================= - -#if XMP_DebugBuild - static XMP_VarString sExpatMessage; -#endif - -static const char * kOneSpace = " "; - -void ExpatAdapter::ParseBuffer ( const void * buffer, size_t length, bool last /* = true */ ) -{ - enum XML_Status status; - - if ( length == 0 ) { // Expat does not like empty buffers. - if ( ! last ) return; - buffer = kOneSpace; - length = 1; - } - - status = XML_Parse ( this->parser, (const char *)buffer, length, last ); - - #if BanAllEntityUsage - if ( this->isAborted ) XMP_Throw ( "DOCTYPE is not allowed", kXMPErr_BadXML ); - #endif - - if ( status != XML_STATUS_OK ) { - - XMP_StringPtr errMsg = "XML parsing failure"; - - #if 0 // XMP_DebugBuild // Disable for now to make test output uniform. Restore later with thread safety. - - // *** This is a good candidate for a callback error notification mechanism. - // *** This code is not thread safe, the sExpatMessage isn't locked. But that's OK for debug usage. - - enum XML_Error expatErr = XML_GetErrorCode ( this->parser ); - const char * expatMsg = XML_ErrorString ( expatErr ); - int errLine = XML_GetCurrentLineNumber ( this->parser ); - - char msgBuffer[1000]; - // AUDIT: Use of sizeof(msgBuffer) for snprintf length is safe. - snprintf ( msgBuffer, sizeof(msgBuffer), "# Expat error %d at line %d, \"%s\"", expatErr, errLine, expatMsg ); - sExpatMessage = msgBuffer; - errMsg = sExpatMessage.c_str(); - - #if DumpXMLParseEvents - if ( this->parseLog != 0 ) fprintf ( this->parseLog, "%s\n", errMsg, expatErr, errLine, expatMsg ); - #endif - - #endif - - XMP_Throw ( errMsg, kXMPErr_BadXML ); - - } - -} // ExpatAdapter::ParseBuffer - -// ================================================================================================= -// ================================================================================================= - -#if XMP_DebugBuild & DumpXMLParseEvents - - static inline void PrintIndent ( FILE * file, size_t count ) - { - for ( ; count > 0; --count ) fprintf ( file, " " ); - } - -#endif - -// ================================================================================================= - -static void SetQualName ( XMP_StringPtr fullName, XML_Node * node ) -{ - // Expat delivers the full name as a catenation of namespace URI, separator, and local name. - - // As a compatibility hack, an "about" or "ID" attribute of an rdf:Description element is - // changed to "rdf:about" or rdf:ID. Easier done here than in the RDF recognizer. - - // As a bug fix hack, change a URI of "http://purl.org/dc/1.1/" to ""http://purl.org/dc/elements/1.1/. - // Early versions of Flash that put XMP in SWF used a bad URI for the dc: namespace. - - // ! This code presumes the RDF namespace prefix is "rdf". - - size_t sepPos = strlen(fullName); - for ( --sepPos; sepPos > 0; --sepPos ) { - if ( fullName[sepPos] == FullNameSeparator ) break; - } - - if ( fullName[sepPos] == FullNameSeparator ) { - - XMP_StringPtr prefix; - XMP_StringLen prefixLen; - XMP_StringPtr localPart = fullName + sepPos + 1; - - node->ns.assign ( fullName, sepPos ); - if ( node->ns == "http://purl.org/dc/1.1/" ) node->ns = "http://purl.org/dc/elements/1.1/"; - - bool found = XMPMeta::GetNamespacePrefix ( node->ns.c_str(), &prefix, &prefixLen ); - if ( ! found ) XMP_Throw ( "Unknown URI in Expat full name", kXMPErr_ExternalFailure ); - node->nsPrefixLen = prefixLen; // ! Includes the ':'. - - node->name = prefix; - node->name += localPart; - - } else { - - node->name = fullName; // The name is not in a namespace. - - if ( node->parent->name == "rdf:Description" ) { - if ( node->name == "about" ) { - node->ns = kXMP_NS_RDF; - node->name = "rdf:about"; - node->nsPrefixLen = 4; // ! Include the ':'. - } else if ( node->name == "ID" ) { - node->ns = kXMP_NS_RDF; - node->name = "rdf:ID"; - node->nsPrefixLen = 4; // ! Include the ':'. - } - } - - } - -} // SetQualName - -// ================================================================================================= - -static void StartNamespaceDeclHandler ( void * userData, XMP_StringPtr prefix, XMP_StringPtr uri ) -{ - IgnoreParam(userData); - - // As a bug fix hack, change a URI of "http://purl.org/dc/1.1/" to ""http://purl.org/dc/elements/1.1/. - // Early versions of Flash that put XMP in SWF used a bad URI for the dc: namespace. - - #if XMP_DebugBuild & DumpXMLParseEvents // Avoid unused variable warning. - ExpatAdapter * thiz = (ExpatAdapter*)userData; - #endif - - if ( prefix == 0 ) prefix = "_dflt_"; // Have default namespace. - if ( uri == 0 ) return; // Ignore, have xmlns:pre="", no URI to register. - - #if XMP_DebugBuild & DumpXMLParseEvents - if ( thiz->parseLog != 0 ) { - PrintIndent ( thiz->parseLog, thiz->elemNesting ); - fprintf ( thiz->parseLog, "StartNamespace: %s - \"%s\"\n", prefix, uri ); - } - #endif - - if ( XMP_LitMatch ( uri, "http://purl.org/dc/1.1/" ) ) uri = "http://purl.org/dc/elements/1.1/"; - XMPMeta::RegisterNamespace ( uri, prefix ); - -} // StartNamespaceDeclHandler - -// ================================================================================================= - -static void EndNamespaceDeclHandler ( void * userData, XMP_StringPtr prefix ) -{ - IgnoreParam(userData); - - #if XMP_DebugBuild & DumpXMLParseEvents // Avoid unused variable warning. - ExpatAdapter * thiz = (ExpatAdapter*)userData; - #endif - - if ( prefix == 0 ) prefix = "_dflt_"; // Have default namespace. - - #if XMP_DebugBuild & DumpXMLParseEvents - if ( thiz->parseLog != 0 ) { - PrintIndent ( thiz->parseLog, thiz->elemNesting ); - fprintf ( thiz->parseLog, "EndNamespace: %s\n", prefix ); - } - #endif - - // ! Nothing to do, Expat has done all of the XML processing. - -} // EndNamespaceDeclHandler - -// ================================================================================================= - -static void StartElementHandler ( void * userData, XMP_StringPtr name, XMP_StringPtr* attrs ) -{ - XMP_Assert ( attrs != 0 ); - ExpatAdapter * thiz = (ExpatAdapter*)userData; - - size_t attrCount = 0; - for ( XMP_StringPtr* a = attrs; *a != 0; ++a ) ++attrCount; - if ( (attrCount & 1) != 0 ) XMP_Throw ( "Expat attribute info has odd length", kXMPErr_ExternalFailure ); - attrCount = attrCount/2; // They are name/value pairs. - - #if XMP_DebugBuild & DumpXMLParseEvents - if ( thiz->parseLog != 0 ) { - PrintIndent ( thiz->parseLog, thiz->elemNesting ); - fprintf ( thiz->parseLog, "StartElement: %s, %d attrs", name, attrCount ); - for ( XMP_StringPtr* attr = attrs; *attr != 0; attr += 2 ) { - XMP_StringPtr attrName = *attr; - XMP_StringPtr attrValue = *(attr+1); - fprintf ( thiz->parseLog, ", %s = \"%s\"", attrName, attrValue ); - } - fprintf ( thiz->parseLog, "\n" ); - } - #endif - - XML_Node * parentNode = thiz->parseStack.back(); - XML_Node * elemNode = new XML_Node ( parentNode, "", kElemNode ); - - SetQualName ( name, elemNode ); - - for ( XMP_StringPtr* attr = attrs; *attr != 0; attr += 2 ) { - - XMP_StringPtr attrName = *attr; - XMP_StringPtr attrValue = *(attr+1); - XML_Node * attrNode = new XML_Node ( elemNode, "", kAttrNode ); - - SetQualName ( attrName, attrNode ); - attrNode->value = attrValue; - if ( attrNode->name == "xml:lang" ) NormalizeLangValue ( &attrNode->value ); - elemNode->attrs.push_back ( attrNode ); - - } - - parentNode->content.push_back ( elemNode ); - thiz->parseStack.push_back ( elemNode ); - - if ( elemNode->name == "rdf:RDF" ) { - thiz->rootNode = elemNode; - ++thiz->rootCount; - } - #if XMP_DebugBuild - ++thiz->elemNesting; - #endif - -} // StartElementHandler - -// ================================================================================================= - -static void EndElementHandler ( void * userData, XMP_StringPtr name ) -{ - IgnoreParam(name); - - ExpatAdapter * thiz = (ExpatAdapter*)userData; - - #if XMP_DebugBuild - --thiz->elemNesting; - #endif - (void) thiz->parseStack.pop_back(); - - #if XMP_DebugBuild & DumpXMLParseEvents - if ( thiz->parseLog != 0 ) { - PrintIndent ( thiz->parseLog, thiz->elemNesting ); - fprintf ( thiz->parseLog, "EndElement: %s\n", name ); - } - #endif - -} // EndElementHandler - -// ================================================================================================= - -static void CharacterDataHandler ( void * userData, XMP_StringPtr cData, int len ) -{ - ExpatAdapter * thiz = (ExpatAdapter*)userData; - - if ( (cData == 0) || (len == 0) ) { cData = ""; len = 0; } - - #if XMP_DebugBuild & DumpXMLParseEvents - if ( thiz->parseLog != 0 ) { - PrintIndent ( thiz->parseLog, thiz->elemNesting ); - fprintf ( thiz->parseLog, "CharContent: \"" ); - for ( int i = 0; i < len; ++i ) fprintf ( thiz->parseLog, "%c", cData[i] ); - fprintf ( thiz->parseLog, "\"\n" ); - } - #endif - - XML_Node * parentNode = thiz->parseStack.back(); - XML_Node * cDataNode = new XML_Node ( parentNode, "", kCDataNode ); - - cDataNode->value.assign ( cData, len ); - parentNode->content.push_back ( cDataNode ); - -} // CharacterDataHandler - -// ================================================================================================= - -static void StartCdataSectionHandler ( void * userData ) -{ - IgnoreParam(userData); - - #if XMP_DebugBuild & DumpXMLParseEvents // Avoid unused variable warning. - ExpatAdapter * thiz = (ExpatAdapter*)userData; - #endif - - #if XMP_DebugBuild & DumpXMLParseEvents - if ( thiz->parseLog != 0 ) { - PrintIndent ( thiz->parseLog, thiz->elemNesting ); - fprintf ( thiz->parseLog, "StartCDATA\n" ); - } - #endif - - // *** Since markup isn't recognized inside CDATA, this affects XMP's double escaping. - -} // StartCdataSectionHandler - -// ================================================================================================= - -static void EndCdataSectionHandler ( void * userData ) -{ - IgnoreParam(userData); - - #if XMP_DebugBuild & DumpXMLParseEvents // Avoid unused variable warning. - ExpatAdapter * thiz = (ExpatAdapter*)userData; - #endif - - #if XMP_DebugBuild & DumpXMLParseEvents - if ( thiz->parseLog != 0 ) { - PrintIndent ( thiz->parseLog, thiz->elemNesting ); - fprintf ( thiz->parseLog, "EndCDATA\n" ); - } - #endif - -} // EndCdataSectionHandler - -// ================================================================================================= - -static void ProcessingInstructionHandler ( void * userData, XMP_StringPtr target, XMP_StringPtr data ) -{ - XMP_Assert ( target != 0 ); - ExpatAdapter * thiz = (ExpatAdapter*)userData; - - if ( ! XMP_LitMatch ( target, "xpacket" ) ) return; // Ignore all PIs except the XMP packet wrapper. - if ( data == 0 ) data = ""; - - #if XMP_DebugBuild & DumpXMLParseEvents - if ( thiz->parseLog != 0 ) { - PrintIndent ( thiz->parseLog, thiz->elemNesting ); - fprintf ( thiz->parseLog, "PI: %s - \"%s\"\n", target, data ); - } - #endif - - XML_Node * parentNode = thiz->parseStack.back(); - XML_Node * piNode = new XML_Node ( parentNode, target, kPINode ); - - piNode->value.assign ( data ); - parentNode->content.push_back ( piNode ); - -} // ProcessingInstructionHandler - -// ================================================================================================= - -static void CommentHandler ( void * userData, XMP_StringPtr comment ) -{ - IgnoreParam(userData); - - #if XMP_DebugBuild & DumpXMLParseEvents // Avoid unused variable warning. - ExpatAdapter * thiz = (ExpatAdapter*)userData; - #endif - - if ( comment == 0 ) comment = ""; - - #if XMP_DebugBuild & DumpXMLParseEvents - if ( thiz->parseLog != 0 ) { - PrintIndent ( thiz->parseLog, thiz->elemNesting ); - fprintf ( thiz->parseLog, "Comment: \"%s\"\n", comment ); - } - #endif - - // ! Comments are ignored. - -} // CommentHandler - -// ================================================================================================= - -#if BanAllEntityUsage -static void StartDoctypeDeclHandler ( void * userData, XMP_StringPtr doctypeName, - XMP_StringPtr sysid, XMP_StringPtr pubid, int has_internal_subset ) -{ - IgnoreParam(userData); - - ExpatAdapter * thiz = (ExpatAdapter*)userData; - - #if XMP_DebugBuild & DumpXMLParseEvents // Avoid unused variable warning. - if ( thiz->parseLog != 0 ) { - PrintIndent ( thiz->parseLog, thiz->elemNesting ); - fprintf ( thiz->parseLog, "DocType: \"%s\"\n", doctypeName ); - } - #endif - - thiz->isAborted = true; // ! Can't throw an exception across the plain C Expat frames. - (void) XML_StopParser ( thiz->parser, XML_FALSE /* not resumable */ ); - -} // StartDoctypeDeclHandler -#endif - -// ================================================================================================= diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/ExpatAdapter.hpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/ExpatAdapter.hpp deleted file mode 100644 index 9d6c9ec4be9..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/ExpatAdapter.hpp +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef __ExpatAdapter_hpp__ -#define __ExpatAdapter_hpp__ - -// ================================================================================================= -// Copyright 2005-2008 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#include "XMP_Environment.h" // ! Must be the first #include! -#include "XMLParserAdapter.hpp" - -// ================================================================================================= -// Derived XML parser adapter for Expat. -// ================================================================================================= - -#ifndef BanAllEntityUsage - #define BanAllEntityUsage 0 -#endif - -struct XML_ParserStruct; // ! Hack to avoid exposing expat.h to all clients. -typedef struct XML_ParserStruct *XML_Parser; - -class ExpatAdapter : public XMLParserAdapter { -public: - - XML_Parser parser; - - #if BanAllEntityUsage - bool isAborted; - #endif - - #if XMP_DebugBuild - size_t elemNesting; - #endif - - ExpatAdapter(); - virtual ~ExpatAdapter(); - - void ParseBuffer ( const void * buffer, size_t length, bool last = true ); - -}; - -extern "C" ExpatAdapter * XMP_NewExpatAdapter(); - -// ================================================================================================= - -#endif // __ExpatAdapter_hpp__ diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/MD5.cpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/MD5.cpp deleted file mode 100644 index a6e2e8223f6..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/MD5.cpp +++ /dev/null @@ -1,235 +0,0 @@ -/* - * This code implements the MD5 message-digest algorithm. - * The algorithm is due to Ron Rivest. This code was - * written by Colin Plumb in 1993, no copyright is claimed. - * This code is in the public domain; do with it what you wish. - * - * Equivalent code is available from RSA Data Security, Inc. - * This code has been tested against that, and is equivalent, - * except that you don't need to include two pages of legalese - * with every copy. - * - * To compute the message digest of a chunk of bytes, declare an - * MD5_CTX structure, pass it to MD5Init, call MD5Update as - * needed on buffers full of bytes, and then call MD5Final, which - * will fill a supplied 16-byte array with the digest. - * - * Changed so as no longer to depend on Colin Plumb's `usual.h' header - * definitions; now uses stuff from dpkg's config.h. - * - Ian Jackson . - * Still in the public domain. - */ - -#include - -#include "MD5.h" - -using namespace std; - -static void -byteSwap(UWORD32 *buf, unsigned words) -{ - const uint32_t byteOrderTest = 0x1; - if (((char *)&byteOrderTest)[0] == 0) { - md5byte *p = (md5byte *)buf; - - do { - *buf++ = (UWORD32)((unsigned)p[3] << 8 | p[2]) << 16 | - ((unsigned)p[1] << 8 | p[0]); - p += 4; - } while (--words); - } -} - -/* - * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious - * initialization constants. - */ -void -MD5Init(struct MD5_CTX *ctx) -{ - ctx->buf[0] = 0x67452301; - ctx->buf[1] = 0xefcdab89; - ctx->buf[2] = 0x98badcfe; - ctx->buf[3] = 0x10325476; - - ctx->bytes[0] = 0; - ctx->bytes[1] = 0; -} - -/* - * Update context to reflect the concatenation of another buffer full - * of bytes. - */ -void -MD5Update(struct MD5_CTX *ctx, md5byte const *buf, unsigned len) -{ - UWORD32 t; - - /* Update byte count */ - - t = ctx->bytes[0]; - if ((ctx->bytes[0] = t + len) < t) - ctx->bytes[1]++; /* Carry from low to high */ - - t = 64 - (t & 0x3f); /* Space available in ctx->in (at least 1) */ - if (t > len) { - memcpy((md5byte *)ctx->in + 64 - t, buf, len); - return; - } - /* First chunk is an odd size */ - memcpy((md5byte *)ctx->in + 64 - t, buf, t); - byteSwap(ctx->in, 16); - MD5Transform(ctx->buf, ctx->in); - buf += t; - len -= t; - - /* Process data in 64-byte chunks */ - while (len >= 64) { - memcpy(ctx->in, buf, 64); - byteSwap(ctx->in, 16); - MD5Transform(ctx->buf, ctx->in); - buf += 64; - len -= 64; - } - - /* Handle any remaining bytes of data. */ - memcpy(ctx->in, buf, len); -} - -/* - * Final wrapup - pad to 64-byte boundary with the bit pattern - * 1 0* (64-bit count of bits processed, MSB-first) - */ -void -MD5Final(md5byte digest[16], struct MD5_CTX *ctx) -{ - int count = ctx->bytes[0] & 0x3f; /* Number of bytes in ctx->in */ - md5byte *p = (md5byte *)ctx->in + count; - - /* Set the first char of padding to 0x80. There is always room. */ - *p++ = 0x80; - - /* Bytes of padding needed to make 56 bytes (-8..55) */ - count = 56 - 1 - count; - - if (count < 0) { /* Padding forces an extra block */ - memset(p, 0, count + 8); - byteSwap(ctx->in, 16); - MD5Transform(ctx->buf, ctx->in); - p = (md5byte *)ctx->in; - count = 56; - } - memset(p, 0, count); - byteSwap(ctx->in, 14); - - /* Append length in bits and transform */ - ctx->in[14] = ctx->bytes[0] << 3; - ctx->in[15] = ctx->bytes[1] << 3 | ctx->bytes[0] >> 29; - MD5Transform(ctx->buf, ctx->in); - - byteSwap(ctx->buf, 4); - memcpy(digest, ctx->buf, 16); - memset(ctx, 0, sizeof(ctx)); /* In case it's sensitive */ -} - -/* The four core functions - F1 is optimized somewhat */ - -/* #define F1(x, y, z) (x & y | ~x & z) */ -#define F1(x, y, z) (z ^ (x & (y ^ z))) -#define F2(x, y, z) F1(z, x, y) -#define F3(x, y, z) (x ^ y ^ z) -#define F4(x, y, z) (y ^ (x | ~z)) - -/* This is the central step in the MD5 algorithm. */ -#define MD5STEP(f,w,x,y,z,in,s) \ - (w += f(x,y,z) + in, w = (w<>(32-s)) + x) - -/* - * The core of the MD5 algorithm, this alters an existing MD5 hash to - * reflect the addition of 16 longwords of new data. MD5Update blocks - * the data and converts bytes into longwords for this routine. - */ -void -MD5Transform(UWORD32 buf[4], UWORD32 const in[16]) -{ - register UWORD32 a, b, c, d; - - a = buf[0]; - b = buf[1]; - c = buf[2]; - d = buf[3]; - - MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7); - MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12); - MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17); - MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22); - MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7); - MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12); - MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17); - MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22); - MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7); - MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12); - MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); - MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22); - MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7); - MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12); - MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17); - MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22); - - MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5); - MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9); - MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14); - MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); - MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5); - MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9); - MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); - MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); - MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5); - MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9); - MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14); - MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20); - MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); - MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); - MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14); - MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); - - MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4); - MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11); - MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); - MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23); - MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4); - MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); - MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); - MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); - MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); - MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11); - MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16); - MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23); - MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4); - MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); - MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); - MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23); - - MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6); - MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10); - MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15); - MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21); - MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6); - MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); - MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15); - MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21); - MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); - MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); - MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15); - MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21); - MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6); - MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10); - MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); - MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21); - - buf[0] += a; - buf[1] += b; - buf[2] += c; - buf[3] += d; -} diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/ParseRDF.cpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/ParseRDF.cpp deleted file mode 100644 index ca23eb3d50e..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/ParseRDF.cpp +++ /dev/null @@ -1,1296 +0,0 @@ -// ================================================================================================= -// Copyright 2002-2008 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#include "XMP_Environment.h" // ! This must be the first include! -#include "XMPCore_Impl.hpp" -#include "ExpatAdapter.hpp" - -#include - -#if DEBUG - #include -#endif - -using namespace std; - -#if XMP_WinBuild -# ifdef _MSC_VER - #pragma warning ( disable : 4189 ) // local variable is initialized but not referenced - #pragma warning ( disable : 4505 ) // unreferenced local function has been removed -# endif -#endif - -// ================================================================================================= - -// *** This might be faster and use less memory as a state machine. A big advantage of building an -// *** XML tree though is easy lookahead during the recursive descent processing. - -// *** It would be nice to give a line number or byte offset in the exception messages. - - -// 7 RDF/XML Grammar (from http://www.w3.org/TR/rdf-syntax-grammar/#section-Infoset-Grammar) -// -// 7.1 Grammar summary -// -// 7.2.2 coreSyntaxTerms -// rdf:RDF | rdf:ID | rdf:about | rdf:parseType | rdf:resource | rdf:nodeID | rdf:datatype -// -// 7.2.3 syntaxTerms -// coreSyntaxTerms | rdf:Description | rdf:li -// -// 7.2.4 oldTerms -// rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID -// -// 7.2.5 nodeElementURIs -// anyURI - ( coreSyntaxTerms | rdf:li | oldTerms ) -// -// 7.2.6 propertyElementURIs -// anyURI - ( coreSyntaxTerms | rdf:Description | oldTerms ) -// -// 7.2.7 propertyAttributeURIs -// anyURI - ( coreSyntaxTerms | rdf:Description | rdf:li | oldTerms ) -// -// 7.2.8 doc -// root ( document-element == RDF, children == list ( RDF ) ) -// -// 7.2.9 RDF -// start-element ( URI == rdf:RDF, attributes == set() ) -// nodeElementList -// end-element() -// -// 7.2.10 nodeElementList -// ws* ( nodeElement ws* )* -// -// 7.2.11 nodeElement -// start-element ( URI == nodeElementURIs, -// attributes == set ( ( idAttr | nodeIdAttr | aboutAttr )?, propertyAttr* ) ) -// propertyEltList -// end-element() -// -// 7.2.12 ws -// A text event matching white space defined by [XML] definition White Space Rule [3] S in section Common Syntactic Constructs. -// -// 7.2.13 propertyEltList -// ws* ( propertyElt ws* )* -// -// 7.2.14 propertyElt -// resourcePropertyElt | literalPropertyElt | parseTypeLiteralPropertyElt | -// parseTypeResourcePropertyElt | parseTypeCollectionPropertyElt | parseTypeOtherPropertyElt | emptyPropertyElt -// -// 7.2.15 resourcePropertyElt -// start-element ( URI == propertyElementURIs, attributes == set ( idAttr? ) ) -// ws* nodeElement ws* -// end-element() -// -// 7.2.16 literalPropertyElt -// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, datatypeAttr?) ) -// text() -// end-element() -// -// 7.2.17 parseTypeLiteralPropertyElt -// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseLiteral ) ) -// literal -// end-element() -// -// 7.2.18 parseTypeResourcePropertyElt -// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseResource ) ) -// propertyEltList -// end-element() -// -// 7.2.19 parseTypeCollectionPropertyElt -// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseCollection ) ) -// nodeElementList -// end-element() -// -// 7.2.20 parseTypeOtherPropertyElt -// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseOther ) ) -// propertyEltList -// end-element() -// -// 7.2.21 emptyPropertyElt -// start-element ( URI == propertyElementURIs, -// attributes == set ( idAttr?, ( resourceAttr | nodeIdAttr )?, propertyAttr* ) ) -// end-element() -// -// 7.2.22 idAttr -// attribute ( URI == rdf:ID, string-value == rdf-id ) -// -// 7.2.23 nodeIdAttr -// attribute ( URI == rdf:nodeID, string-value == rdf-id ) -// -// 7.2.24 aboutAttr -// attribute ( URI == rdf:about, string-value == URI-reference ) -// -// 7.2.25 propertyAttr -// attribute ( URI == propertyAttributeURIs, string-value == anyString ) -// -// 7.2.26 resourceAttr -// attribute ( URI == rdf:resource, string-value == URI-reference ) -// -// 7.2.27 datatypeAttr -// attribute ( URI == rdf:datatype, string-value == URI-reference ) -// -// 7.2.28 parseLiteral -// attribute ( URI == rdf:parseType, string-value == "Literal") -// -// 7.2.29 parseResource -// attribute ( URI == rdf:parseType, string-value == "Resource") -// -// 7.2.30 parseCollection -// attribute ( URI == rdf:parseType, string-value == "Collection") -// -// 7.2.31 parseOther -// attribute ( URI == rdf:parseType, string-value == anyString - ("Resource" | "Literal" | "Collection") ) -// -// 7.2.32 URI-reference -// An RDF URI Reference. -// -// 7.2.33 literal -// Any XML element content that is allowed according to [XML] definition Content of Elements Rule [43] content -// in section 3.1 Start-Tags, End-Tags, and Empty-Element Tags. -// -// 7.2.34 rdf-id -// An attribute string-value matching any legal [XML-NS] token NCName. - - -// ================================================================================================= -// Primary Parsing Functions -// ========================= -// -// Each of these is responsible for recognizing an RDF syntax production and adding the appropriate -// structure to the XMP tree. They simply return for success, failures will throw an exception. - -static void -RDF_RDF ( XMP_Node * xmpTree, const XML_Node & xmlNode ); - -static void -RDF_NodeElementList ( XMP_Node * xmpParent, const XML_Node & xmlParent, bool isTopLevel ); - -static void -RDF_NodeElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ); - -static void -RDF_NodeElementAttrs ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ); - -static void -RDF_PropertyElementList ( XMP_Node * xmpParent, const XML_Node & xmlParent, bool isTopLevel ); -enum { kIsTopLevel = true, kNotTopLevel = false }; - -static void -RDF_PropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ); - -static void -RDF_ResourcePropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ); - -static void -RDF_LiteralPropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ); - -static void -RDF_ParseTypeLiteralPropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ); - -static void -RDF_ParseTypeResourcePropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ); - -static void -RDF_ParseTypeCollectionPropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ); - -static void -RDF_ParseTypeOtherPropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ); - -static void -RDF_EmptyPropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ); - - -// ================================================================================================= - -typedef XMP_Uns8 RDFTermKind; - -// *** Logic might be safer with just masks. - -enum { - kRDFTerm_Other = 0, - kRDFTerm_RDF = 1, // Start of coreSyntaxTerms. - kRDFTerm_ID = 2, - kRDFTerm_about = 3, - kRDFTerm_parseType = 4, - kRDFTerm_resource = 5, - kRDFTerm_nodeID = 6, - kRDFTerm_datatype = 7, // End of coreSyntaxTerms. - kRDFTerm_Description = 8, // Start of additions for syntaxTerms. - kRDFTerm_li = 9, // End of of additions for syntaxTerms. - kRDFTerm_aboutEach = 10, // Start of oldTerms. - kRDFTerm_aboutEachPrefix = 11, - kRDFTerm_bagID = 12, // End of oldTerms. - - kRDFTerm_FirstCore = kRDFTerm_RDF, - kRDFTerm_LastCore = kRDFTerm_datatype, - kRDFTerm_FirstSyntax = kRDFTerm_FirstCore, // ! Yes, the syntax terms include the core terms. - kRDFTerm_LastSyntax = kRDFTerm_li, - kRDFTerm_FirstOld = kRDFTerm_aboutEach, - kRDFTerm_LastOld = kRDFTerm_bagID -}; - -enum { - kRDFMask_Other = 1 << kRDFTerm_Other, - kRDFMask_RDF = 1 << kRDFTerm_RDF, - kRDFMask_ID = 1 << kRDFTerm_ID, - kRDFMask_about = 1 << kRDFTerm_about, - kRDFMask_parseType = 1 << kRDFTerm_parseType, - kRDFMask_resource = 1 << kRDFTerm_resource, - kRDFMask_nodeID = 1 << kRDFTerm_nodeID, - kRDFMask_datatype = 1 << kRDFTerm_datatype, - kRDFMask_Description = 1 << kRDFTerm_Description, - kRDFMask_li = 1 << kRDFTerm_li, - kRDFMask_aboutEach = 1 << kRDFTerm_aboutEach, - kRDFMask_aboutEachPrefix = 1 << kRDFTerm_aboutEachPrefix, - kRDFMask_bagID = 1 << kRDFTerm_bagID -}; - -enum { - kRDF_HasValueElem = 0x10000000UL // ! Contains rdf:value child. Must fit within kXMP_ImplReservedMask! -}; - -// ------------------------------------------------------------------------------------------------- -// GetRDFTermKind -// -------------- - -static RDFTermKind -GetRDFTermKind ( const XMP_VarString & name ) -{ - RDFTermKind term = kRDFTerm_Other; - - // Arranged to hopefully minimize the parse time for large XMP. - - if ( (name.size() > 4) && (strncmp ( name.c_str(), "rdf:", 4 ) == 0) ) { - - if ( name == "rdf:li" ) { - term = kRDFTerm_li; - } else if ( name == "rdf:parseType" ) { - term = kRDFTerm_parseType; - } else if ( name == "rdf:Description" ) { - term = kRDFTerm_Description; - } else if ( name == "rdf:about" ) { - term = kRDFTerm_about; - } else if ( name == "rdf:resource" ) { - term = kRDFTerm_resource; - } else if ( name == "rdf:RDF" ) { - term = kRDFTerm_RDF; - } else if ( name == "rdf:ID" ) { - term = kRDFTerm_ID; - } else if ( name == "rdf:nodeID" ) { - term = kRDFTerm_nodeID; - } else if ( name == "rdf:datatype" ) { - term = kRDFTerm_datatype; - } else if ( name == "rdf:aboutEach" ) { - term = kRDFTerm_aboutEach; - } else if ( name == "rdf:aboutEachPrefix" ) { - term = kRDFTerm_aboutEachPrefix; - } else if ( name == "rdf:bagID" ) { - term = kRDFTerm_bagID; - } - - } - - return term; - -} // GetRDFTermKind - - -// ================================================================================================= - - -// ------------------------------------------------------------------------------------------------- -// IsCoreSyntaxTerm -// ---------------- -// -// 7.2.2 coreSyntaxTerms -// rdf:RDF | rdf:ID | rdf:about | rdf:parseType | rdf:resource | rdf:nodeID | rdf:datatype - -static bool -IsCoreSyntaxTerm ( RDFTermKind term ) -{ - - if ( (kRDFTerm_FirstCore <= term) && (term <= kRDFTerm_LastCore) ) return true; - return false; - -} // IsCoreSyntaxTerm - - -// ------------------------------------------------------------------------------------------------- -// IsOldTerm -// --------- -// -// 7.2.4 oldTerms -// rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID - -static bool -IsOldTerm ( RDFTermKind term ) -{ - - if ( (kRDFTerm_FirstOld <= term) && (term <= kRDFTerm_LastOld) ) return true; - return false; - -} // IsOldTerm - -// ------------------------------------------------------------------------------------------------- -// IsPropertyElementName -// --------------------- -// -// 7.2.6 propertyElementURIs -// anyURI - ( coreSyntaxTerms | rdf:Description | oldTerms ) - -static bool -IsPropertyElementName ( RDFTermKind term ) -{ - - if ( (term == kRDFTerm_Description) || IsOldTerm ( term ) ) return false; - return (! IsCoreSyntaxTerm ( term )); - -} // IsPropertyElementName - -// ================================================================================================= -// AddChildNode -// ============ - -static XMP_Node * -AddChildNode ( XMP_Node * xmpParent, const XML_Node & xmlNode, const XMP_StringPtr value, bool isTopLevel ) -{ - #if 0 - cout << "AddChildNode, parent = " << xmpParent->name << ", child = " << xmlNode.name; - cout << ", value = \"" << value << '"'; - if ( isTopLevel ) cout << ", top level"; - cout << endl; - #endif - - if ( xmlNode.ns.empty() ) { - XMP_Throw ( "XML namespace required for all elements and attributes", kXMPErr_BadRDF ); - } - - XMP_StringPtr childName = xmlNode.name.c_str(); - const bool isArrayItem = (xmlNode.name == "rdf:li"); - const bool isValueNode = (xmlNode.name == "rdf:value"); - XMP_OptionBits childOptions = 0; - - if ( isTopLevel ) { - - // Lookup the schema node, adjust the XMP parent pointer. - XMP_Assert ( xmpParent->parent == 0 ); // Incoming parent must be the tree root. - XMP_Node * schemaNode = FindSchemaNode ( xmpParent, xmlNode.ns.c_str(), kXMP_CreateNodes ); - if ( schemaNode->options & kXMP_NewImplicitNode ) schemaNode->options ^= kXMP_NewImplicitNode; // Clear the implicit node bit. - // *** Should use "opt &= ~flag" (no conditional), need runtime check for proper 32 bit code. - xmpParent = schemaNode; - - // If this is an alias set the isAlias flag in the node and the hasAliases flag in the tree. - if ( sRegisteredAliasMap->find ( xmlNode.name ) != sRegisteredAliasMap->end() ) { - childOptions |= kXMP_PropIsAlias; - schemaNode->parent->options |= kXMP_PropHasAliases; - } - - } - - // Make sure that this is not a duplicate of a named node. - if ( ! (isArrayItem | isValueNode) ) { - if ( FindChildNode ( xmpParent, childName, kXMP_ExistingOnly ) != 0 ) { - XMP_Throw ( "Duplicate property or field node", kXMPErr_BadXMP ); - } - - } - - // Add the new child to the XMP parent node. - XMP_Node * newChild = new XMP_Node ( xmpParent, childName, value, childOptions ); - if ( (! isValueNode) || xmpParent->children.empty() ) { - xmpParent->children.push_back ( newChild ); - } else { - xmpParent->children.insert ( xmpParent->children.begin(), newChild ); - } - if ( isValueNode ) { - if ( isTopLevel || (! (xmpParent->options & kXMP_PropValueIsStruct)) ) XMP_Throw ( "Misplaced rdf:value element", kXMPErr_BadRDF ); - xmpParent->options |= kRDF_HasValueElem; - } - - if ( isArrayItem ) { - if ( ! (xmpParent->options & kXMP_PropValueIsArray) ) XMP_Throw ( "Misplaced rdf:li element", kXMPErr_BadRDF ); - newChild->name = kXMP_ArrayItemName; - #if 0 // *** XMP_DebugBuild - newChild->_namePtr = newChild->name.c_str(); - #endif - } - - return newChild; - -} // AddChildNode - - -// ================================================================================================= -// AddQualifierNode -// ================ - -static XMP_Node * -AddQualifierNode ( XMP_Node * xmpParent, const XMP_VarString & name, const XMP_VarString & value ) -{ - - #if 0 - cout << "AddQualifierNode, parent = " << xmpParent->name << ", name = " << name; - cout << ", value = \"" << value << '"' << endl; - #endif - - const bool isLang = (name == "xml:lang"); - const bool isType = (name == "rdf:type"); - - XMP_Node * newQual = 0; - - newQual = new XMP_Node ( xmpParent, name, value, kXMP_PropIsQualifier ); - - if ( ! (isLang | isType) ) { - xmpParent->qualifiers.push_back ( newQual ); - } else if ( isLang ) { - if ( xmpParent->qualifiers.empty() ) { - xmpParent->qualifiers.push_back ( newQual ); - } else { - xmpParent->qualifiers.insert ( xmpParent->qualifiers.begin(), newQual ); - } - xmpParent->options |= kXMP_PropHasLang; - } else { - XMP_Assert ( isType ); - if ( xmpParent->qualifiers.empty() ) { - xmpParent->qualifiers.push_back ( newQual ); - } else { - size_t offset = 0; - if ( XMP_PropHasLang ( xmpParent->options ) ) offset = 1; - xmpParent->qualifiers.insert ( xmpParent->qualifiers.begin()+offset, newQual ); - } - xmpParent->options |= kXMP_PropHasType; - } - - xmpParent->options |= kXMP_PropHasQualifiers; - - return newQual; - -} // AddQualifierNode - - -// ================================================================================================= -// AddQualifierNode -// ================ - -static XMP_Node * -AddQualifierNode ( XMP_Node * xmpParent, const XML_Node & attr ) -{ - if ( attr.ns.empty() ) { - XMP_Throw ( "XML namespace required for all elements and attributes", kXMPErr_BadRDF ); - } - - return AddQualifierNode ( xmpParent, attr.name, attr.value ); - -} // AddQualifierNode - - -// ================================================================================================= -// FixupQualifiedNode -// ================== -// -// The parent is an RDF pseudo-struct containing an rdf:value field. Fix the XMP data model. The -// rdf:value node must be the first child, the other children are qualifiers. The form, value, and -// children of the rdf:value node are the real ones. The rdf:value node's qualifiers must be added -// to the others. - -static void -FixupQualifiedNode ( XMP_Node * xmpParent ) -{ - size_t qualNum, qualLim; - size_t childNum, childLim; - - XMP_Enforce ( (xmpParent->options & kXMP_PropValueIsStruct) && (! xmpParent->children.empty()) ); - - XMP_Node * valueNode = xmpParent->children[0]; - XMP_Enforce ( valueNode->name == "rdf:value" ); - - xmpParent->qualifiers.reserve ( xmpParent->qualifiers.size() + xmpParent->children.size() + valueNode->qualifiers.size() ); - - // Move the qualifiers on the value node to the parent. Make sure an xml:lang qualifier stays at - // the front. Check for duplicate names between the value node's qualifiers and the parent's - // children. The parent's children are about to become qualifiers. Check here, between the - // groups. Intra-group duplicates are caught by AddChildNode. - - qualNum = 0; - qualLim = valueNode->qualifiers.size(); - - if ( valueNode->options & kXMP_PropHasLang ) { - - if ( xmpParent->options & kXMP_PropHasLang ) XMP_Throw ( "Redundant xml:lang for rdf:value element", kXMPErr_BadXMP ); - - XMP_Node * langQual = valueNode->qualifiers[0]; - - XMP_Assert ( langQual->name == "xml:lang" ); - langQual->parent = xmpParent; - xmpParent->options |= kXMP_PropHasLang; - - if ( xmpParent->qualifiers.empty() ) { - xmpParent->qualifiers.push_back ( langQual ); // *** Should use utilities to add qual & set parent. - } else { - xmpParent->qualifiers.insert ( xmpParent->qualifiers.begin(), langQual ); - } - valueNode->qualifiers[0] = 0; // We just moved it to the parent. - - qualNum = 1; // Start the remaining copy after the xml:lang qualifier. - - } - - for ( ; qualNum != qualLim; ++qualNum ) { - - XMP_Node * currQual = valueNode->qualifiers[qualNum]; - if ( FindChildNode ( xmpParent, currQual->name.c_str(), kXMP_ExistingOnly ) != 0 ) { - XMP_Throw ( "Duplicate qualifier node", kXMPErr_BadXMP ); - } - - currQual->parent = xmpParent; - xmpParent->qualifiers.push_back ( currQual ); - valueNode->qualifiers[qualNum] = 0; // We just moved it to the parent. - - } - - valueNode->qualifiers.clear(); // ! There should be nothing but null pointers. - - // Change the parent's other children into qualifiers. This loop starts at 1, child 0 is the - // rdf:value node. Put xml:lang at the front, append all others. - - for ( childNum = 1, childLim = xmpParent->children.size(); childNum != childLim; ++childNum ) { - - XMP_Node * currQual = xmpParent->children[childNum]; - - bool isLang = (currQual->name == "xml:lang"); - - currQual->options |= kXMP_PropIsQualifier; - currQual->parent = xmpParent; - - if ( isLang ) { - if ( xmpParent->options & kXMP_PropHasLang ) XMP_Throw ( "Duplicate xml:lang qualifier", kXMPErr_BadXMP ); - xmpParent->options |= kXMP_PropHasLang; - } else if ( currQual->name == "rdf:type" ) { - xmpParent->options |= kXMP_PropHasType; - } - - if ( (! isLang) || xmpParent->qualifiers.empty() ) { - xmpParent->qualifiers.push_back ( currQual ); - } else { - xmpParent->qualifiers.insert ( xmpParent->qualifiers.begin(), currQual ); - } - xmpParent->children[childNum] = 0; // We just moved it to the qualifers. - - } - - if ( ! xmpParent->qualifiers.empty() ) xmpParent->options |= kXMP_PropHasQualifiers; - - // Move the options and value last, other checks need the parent's original options. Move the - // value node's children to be the parent's children. Delete the now useless value node. - - XMP_Assert ( xmpParent->options & (kXMP_PropValueIsStruct | kRDF_HasValueElem) ); - xmpParent->options &= ~ (kXMP_PropValueIsStruct | kRDF_HasValueElem); - xmpParent->options |= valueNode->options; - - xmpParent->value.swap ( valueNode->value ); - #if 0 // *** XMP_DebugBuild - xmpParent->_valuePtr = xmpParent->value.c_str(); - #endif - - xmpParent->children[0] = 0; // ! Remove the value node itself before the swap. - xmpParent->children.swap ( valueNode->children ); - - for ( size_t childNum = 0, childLim = xmpParent->children.size(); childNum != childLim; ++childNum ) { - XMP_Node * currChild = xmpParent->children[childNum]; - currChild->parent = xmpParent; - } - - delete valueNode; - -} // FixupQualifiedNode - - -// ================================================================================================= -// ProcessRDF -// ========== -// -// Parse the XML tree of the RDF and build the corresponding XMP tree. - -// *** Throw an exception if no XMP is found? By option? -// *** Do parsing exceptions cause the partial tree to be deleted? - -void ProcessRDF ( XMP_Node * xmpTree, const XML_Node & rdfNode, XMP_OptionBits options ) -{ - IgnoreParam(options); - - RDF_RDF ( xmpTree, rdfNode ); - -} // ProcessRDF - - -// ================================================================================================= -// RDF_RDF -// ======= -// -// 7.2.9 RDF -// start-element ( URI == rdf:RDF, attributes == set() ) -// nodeElementList -// end-element() -// -// The top level rdf:RDF node. It can only have xmlns attributes, which have already been removed -// during construction of the XML tree. - -static void -RDF_RDF ( XMP_Node * xmpTree, const XML_Node & xmlNode ) -{ - - if ( ! xmlNode.attrs.empty() ) XMP_Throw ( "Invalid attributes of rdf:RDF element", kXMPErr_BadRDF ); - RDF_NodeElementList ( xmpTree, xmlNode, kIsTopLevel ); - -} // RDF_RDF - - -// ================================================================================================= -// RDF_NodeElementList -// =================== -// -// 7.2.10 nodeElementList -// ws* ( nodeElement ws* )* - -static void -RDF_NodeElementList ( XMP_Node * xmpParent, const XML_Node & xmlParent, bool isTopLevel ) -{ - XMP_Assert ( isTopLevel ); - - XML_cNodePos currChild = xmlParent.content.begin(); // *** Change these loops to the indexed pattern. - XML_cNodePos endChild = xmlParent.content.end(); - - for ( ; currChild != endChild; ++currChild ) { - if ( (*currChild)->IsWhitespaceNode() ) continue; - RDF_NodeElement ( xmpParent, **currChild, isTopLevel ); - } - -} // RDF_NodeElementList - - -// ================================================================================================= -// RDF_NodeElement -// =============== -// -// 7.2.5 nodeElementURIs -// anyURI - ( coreSyntaxTerms | rdf:li | oldTerms ) -// -// 7.2.11 nodeElement -// start-element ( URI == nodeElementURIs, -// attributes == set ( ( idAttr | nodeIdAttr | aboutAttr )?, propertyAttr* ) ) -// propertyEltList -// end-element() -// -// A node element URI is rdf:Description or anything else that is not an RDF term. - -static void -RDF_NodeElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ) -{ - RDFTermKind nodeTerm = GetRDFTermKind ( xmlNode.name ); - if ( (nodeTerm != kRDFTerm_Description) && (nodeTerm != kRDFTerm_Other) ) { - XMP_Throw ( "Node element must be rdf:Description or typedNode", kXMPErr_BadRDF ); - } - - if ( isTopLevel && (nodeTerm == kRDFTerm_Other) ) { - XMP_Throw ( "Top level typedNode not allowed", kXMPErr_BadXMP ); - } else { - RDF_NodeElementAttrs ( xmpParent, xmlNode, isTopLevel ); - RDF_PropertyElementList ( xmpParent, xmlNode, isTopLevel ); - } - -} // RDF_NodeElement - - -// ================================================================================================= -// RDF_NodeElementAttrs -// ==================== -// -// 7.2.7 propertyAttributeURIs -// anyURI - ( coreSyntaxTerms | rdf:Description | rdf:li | oldTerms ) -// -// 7.2.11 nodeElement -// start-element ( URI == nodeElementURIs, -// attributes == set ( ( idAttr | nodeIdAttr | aboutAttr )?, propertyAttr* ) ) -// propertyEltList -// end-element() -// -// Process the attribute list for an RDF node element. A property attribute URI is anything other -// than an RDF term. The rdf:ID and rdf:nodeID attributes are simply ignored, as are rdf:about -// attributes on inner nodes. - -static const XMP_OptionBits kExclusiveAttrMask = (kRDFMask_ID | kRDFMask_nodeID | kRDFMask_about); - -static void -RDF_NodeElementAttrs ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ) -{ - XMP_OptionBits exclusiveAttrs = 0; // Used to detect attributes that are mutually exclusive. - - XML_cNodePos currAttr = xmlNode.attrs.begin(); - XML_cNodePos endAttr = xmlNode.attrs.end(); - - for ( ; currAttr != endAttr; ++currAttr ) { - - RDFTermKind attrTerm = GetRDFTermKind ( (*currAttr)->name ); - - switch ( attrTerm ) { - - case kRDFTerm_ID : - case kRDFTerm_nodeID : - case kRDFTerm_about : - - if ( exclusiveAttrs & kExclusiveAttrMask ) XMP_Throw ( "Mutally exclusive about, ID, nodeID attributes", kXMPErr_BadRDF ); - exclusiveAttrs |= (1 << attrTerm); - - if ( isTopLevel && (attrTerm == kRDFTerm_about) ) { - // This is the rdf:about attribute on a top level node. Set the XMP tree name if - // it doesn't have a name yet. Make sure this name matches the XMP tree name. - XMP_Assert ( xmpParent->parent == 0 ); // Must be the tree root node. - if ( xmpParent->name.empty() ) { - xmpParent->name = (*currAttr)->value; - } else if ( ! (*currAttr)->value.empty() ) { - if ( xmpParent->name != (*currAttr)->value ) XMP_Throw ( "Mismatched top level rdf:about values", kXMPErr_BadXMP ); - } - } - - break; - - case kRDFTerm_Other : - AddChildNode ( xmpParent, **currAttr, (*currAttr)->value.c_str(), isTopLevel ); - break; - - default : - XMP_Throw ( "Invalid nodeElement attribute", kXMPErr_BadRDF ); - - } - - } - -} // RDF_NodeElementAttrs - - -// ================================================================================================= -// RDF_PropertyElementList -// ======================= -// -// 7.2.13 propertyEltList -// ws* ( propertyElt ws* )* - -static void -RDF_PropertyElementList ( XMP_Node * xmpParent, const XML_Node & xmlParent, bool isTopLevel ) -{ - XML_cNodePos currChild = xmlParent.content.begin(); - XML_cNodePos endChild = xmlParent.content.end(); - - for ( ; currChild != endChild; ++currChild ) { - if ( (*currChild)->IsWhitespaceNode() ) continue; - if ( (*currChild)->kind != kElemNode ) { - XMP_Throw ( "Expected property element node not found", kXMPErr_BadRDF ); - } - RDF_PropertyElement ( xmpParent, **currChild, isTopLevel ); - } - -} // RDF_PropertyElementList - - -// ================================================================================================= -// RDF_PropertyElement -// =================== -// -// 7.2.14 propertyElt -// resourcePropertyElt | literalPropertyElt | parseTypeLiteralPropertyElt | -// parseTypeResourcePropertyElt | parseTypeCollectionPropertyElt | parseTypeOtherPropertyElt | emptyPropertyElt -// -// 7.2.15 resourcePropertyElt -// start-element ( URI == propertyElementURIs, attributes == set ( idAttr? ) ) -// ws* nodeElement ws* -// end-element() -// -// 7.2.16 literalPropertyElt -// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, datatypeAttr?) ) -// text() -// end-element() -// -// 7.2.17 parseTypeLiteralPropertyElt -// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseLiteral ) ) -// literal -// end-element() -// -// 7.2.18 parseTypeResourcePropertyElt -// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseResource ) ) -// propertyEltList -// end-element() -// -// 7.2.19 parseTypeCollectionPropertyElt -// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseCollection ) ) -// nodeElementList -// end-element() -// -// 7.2.20 parseTypeOtherPropertyElt -// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseOther ) ) -// propertyEltList -// end-element() -// -// 7.2.21 emptyPropertyElt -// start-element ( URI == propertyElementURIs, -// attributes == set ( idAttr?, ( resourceAttr | nodeIdAttr )?, propertyAttr* ) ) -// end-element() -// -// The various property element forms are not distinguished by the XML element name, but by their -// attributes for the most part. The exceptions are resourcePropertyElt and literalPropertyElt. They -// are distinguished by their XML element content. -// -// NOTE: The RDF syntax does not explicitly include the xml:lang attribute although it can appear in -// many of these. We have to allow for it in the attibute counts below. - -static void -RDF_PropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ) -{ - RDFTermKind nodeTerm = GetRDFTermKind ( xmlNode.name ); - if ( ! IsPropertyElementName ( nodeTerm ) ) XMP_Throw ( "Invalid property element name", kXMPErr_BadRDF ); - - if ( xmlNode.attrs.size() > 3 ) { - - // Only an emptyPropertyElt can have more than 3 attributes. - RDF_EmptyPropertyElement ( xmpParent, xmlNode, isTopLevel ); - - } else { - - // Look through the attributes for one that isn't rdf:ID or xml:lang, it will usually tell - // what we should be dealing with. The called routines must verify their specific syntax! - - XML_cNodePos currAttr = xmlNode.attrs.begin(); - XML_cNodePos endAttr = xmlNode.attrs.end(); - XMP_VarString * attrName = 0; - - for ( ; currAttr != endAttr; ++currAttr ) { - attrName = &((*currAttr)->name); - if ( (*attrName != "xml:lang") && (*attrName != "rdf:ID") ) break; - } - - if ( currAttr != endAttr ) { - - XMP_Assert ( attrName != 0 ); - XMP_VarString& attrValue = (*currAttr)->value; - - if ( *attrName == "rdf:datatype" ) { - RDF_LiteralPropertyElement ( xmpParent, xmlNode, isTopLevel ); - } else if ( *attrName != "rdf:parseType" ) { - RDF_EmptyPropertyElement ( xmpParent, xmlNode, isTopLevel ); - } else if ( attrValue == "Literal" ) { - RDF_ParseTypeLiteralPropertyElement ( xmpParent, xmlNode, isTopLevel ); - } else if ( attrValue == "Resource" ) { - RDF_ParseTypeResourcePropertyElement ( xmpParent, xmlNode, isTopLevel ); - } else if ( attrValue == "Collection" ) { - RDF_ParseTypeCollectionPropertyElement ( xmpParent, xmlNode, isTopLevel ); - } else { - RDF_ParseTypeOtherPropertyElement ( xmpParent, xmlNode, isTopLevel ); - } - - } else { - - // Only rdf:ID and xml:lang, could be a resourcePropertyElt, a literalPropertyElt, or an. - // emptyPropertyElt. Look at the child XML nodes to decide which. - - if ( xmlNode.content.empty() ) { - - RDF_EmptyPropertyElement ( xmpParent, xmlNode, isTopLevel ); - - } else { - - XML_cNodePos currChild = xmlNode.content.begin(); - XML_cNodePos endChild = xmlNode.content.end(); - - for ( ; currChild != endChild; ++currChild ) { - if ( (*currChild)->kind != kCDataNode ) break; - } - - if ( currChild == endChild ) { - RDF_LiteralPropertyElement ( xmpParent, xmlNode, isTopLevel ); - } else { - RDF_ResourcePropertyElement ( xmpParent, xmlNode, isTopLevel ); - } - - } - - } - - } - -} // RDF_PropertyElement - - -// ================================================================================================= -// RDF_ResourcePropertyElement -// =========================== -// -// 7.2.15 resourcePropertyElt -// start-element ( URI == propertyElementURIs, attributes == set ( idAttr? ) ) -// ws* nodeElement ws* -// end-element() -// -// This handles structs using an rdf:Description node, arrays using rdf:Bag/Seq/Alt, and typedNodes. -// It also catches and cleans up qualified properties written with rdf:Description and rdf:value. - -static void -RDF_ResourcePropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ) -{ - if ( isTopLevel && (xmlNode.name == "iX:changes") ) return; // Strip old "punchcard" chaff. - - XMP_Node * newCompound = AddChildNode ( xmpParent, xmlNode, "", isTopLevel ); - - XML_cNodePos currAttr = xmlNode.attrs.begin(); - XML_cNodePos endAttr = xmlNode.attrs.end(); - - for ( ; currAttr != endAttr; ++currAttr ) { - XMP_VarString & attrName = (*currAttr)->name; - if ( attrName == "xml:lang" ) { - AddQualifierNode ( newCompound, **currAttr ); - } else if ( attrName == "rdf:ID" ) { - continue; // Ignore all rdf:ID attributes. - } else { - XMP_Throw ( "Invalid attribute for resource property element", kXMPErr_BadRDF ); - } - } - - XML_cNodePos currChild = xmlNode.content.begin(); - XML_cNodePos endChild = xmlNode.content.end(); - - for ( ; currChild != endChild; ++currChild ) { - if ( ! (*currChild)->IsWhitespaceNode() ) break; - } - if ( currChild == endChild ) XMP_Throw ( "Missing child of resource property element", kXMPErr_BadRDF ); - if ( (*currChild)->kind != kElemNode ) XMP_Throw ( "Children of resource property element must be XML elements", kXMPErr_BadRDF ); - - if ( (*currChild)->name == "rdf:Bag" ) { - newCompound->options |= kXMP_PropValueIsArray; - } else if ( (*currChild)->name == "rdf:Seq" ) { - newCompound->options |= kXMP_PropValueIsArray | kXMP_PropArrayIsOrdered; - } else if ( (*currChild)->name == "rdf:Alt" ) { - newCompound->options |= kXMP_PropValueIsArray | kXMP_PropArrayIsOrdered | kXMP_PropArrayIsAlternate; - } else { - newCompound->options |= kXMP_PropValueIsStruct; - if ( (*currChild)->name != "rdf:Description" ) { - XMP_VarString typeName ( (*currChild)->ns ); - size_t colonPos = (*currChild)->name.find_first_of(':'); - if ( colonPos == XMP_VarString::npos ) XMP_Throw ( "All XML elements must be in a namespace", kXMPErr_BadXMP ); - typeName.append ( (*currChild)->name, colonPos, XMP_VarString::npos ); - AddQualifierNode ( newCompound, XMP_VarString("rdf:type"), typeName ); - } - } - - RDF_NodeElement ( newCompound, **currChild, kNotTopLevel ); - if ( newCompound->options & kRDF_HasValueElem ) { - FixupQualifiedNode ( newCompound ); - } else if ( newCompound->options & kXMP_PropArrayIsAlternate ) { - DetectAltText ( newCompound ); - } - - for ( ++currChild; currChild != endChild; ++currChild ) { - if ( ! (*currChild)->IsWhitespaceNode() ) XMP_Throw ( "Invalid child of resource property element", kXMPErr_BadRDF ); - } - -} // RDF_ResourcePropertyElement - - -// ================================================================================================= -// RDF_LiteralPropertyElement -// ========================== -// -// 7.2.16 literalPropertyElt -// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, datatypeAttr?) ) -// text() -// end-element() -// -// Add a leaf node with the text value and qualifiers for the attributes. - -static void -RDF_LiteralPropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ) -{ - XMP_Node * newChild = AddChildNode ( xmpParent, xmlNode, "", isTopLevel ); - - XML_cNodePos currAttr = xmlNode.attrs.begin(); - XML_cNodePos endAttr = xmlNode.attrs.end(); - - for ( ; currAttr != endAttr; ++currAttr ) { - XMP_VarString & attrName = (*currAttr)->name; - if ( attrName == "xml:lang" ) { - AddQualifierNode ( newChild, **currAttr ); - } else if ( (attrName == "rdf:ID") || (attrName == "rdf:datatype") ) { - continue; // Ignore all rdf:ID and rdf:datatype attributes. - } else { - XMP_Throw ( "Invalid attribute for literal property element", kXMPErr_BadRDF ); - } - } - - XML_cNodePos currChild = xmlNode.content.begin(); - XML_cNodePos endChild = xmlNode.content.end(); - size_t textSize = 0; - - for ( ; currChild != endChild; ++currChild ) { - if ( (*currChild)->kind != kCDataNode ) XMP_Throw ( "Invalid child of literal property element", kXMPErr_BadRDF ); - textSize += (*currChild)->value.size(); - } - - newChild->value.reserve ( textSize ); - - for ( currChild = xmlNode.content.begin(); currChild != endChild; ++currChild ) { - newChild->value += (*currChild)->value; - } - - #if 0 // *** XMP_DebugBuild - newChild->_valuePtr = newChild->value.c_str(); - #endif - -} // RDF_LiteralPropertyElement - - -// ================================================================================================= -// RDF_ParseTypeLiteralPropertyElement -// =================================== -// -// 7.2.17 parseTypeLiteralPropertyElt -// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseLiteral ) ) -// literal -// end-element() - -static void -RDF_ParseTypeLiteralPropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ) -{ - IgnoreParam(xmpParent); IgnoreParam(xmlNode); IgnoreParam(isTopLevel); - - XMP_Throw ( "ParseTypeLiteral property element not allowed", kXMPErr_BadXMP ); - -} // RDF_ParseTypeLiteralPropertyElement - - -// ================================================================================================= -// RDF_ParseTypeResourcePropertyElement -// ==================================== -// -// 7.2.18 parseTypeResourcePropertyElt -// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseResource ) ) -// propertyEltList -// end-element() -// -// Add a new struct node with a qualifier for the possible rdf:ID attribute. Then process the XML -// child nodes to get the struct fields. - -static void -RDF_ParseTypeResourcePropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ) -{ - - XMP_Node * newStruct = AddChildNode ( xmpParent, xmlNode, "", isTopLevel ); - newStruct->options |= kXMP_PropValueIsStruct; - - XML_cNodePos currAttr = xmlNode.attrs.begin(); - XML_cNodePos endAttr = xmlNode.attrs.end(); - - for ( ; currAttr != endAttr; ++currAttr ) { - XMP_VarString & attrName = (*currAttr)->name; - if ( attrName == "rdf:parseType" ) { - continue; // ! The caller ensured the value is "Resource". - } else if ( attrName == "xml:lang" ) { - AddQualifierNode ( newStruct, **currAttr ); - } else if ( attrName == "rdf:ID" ) { - continue; // Ignore all rdf:ID attributes. - } else { - XMP_Throw ( "Invalid attribute for ParseTypeResource property element", kXMPErr_BadRDF ); - } - } - - RDF_PropertyElementList ( newStruct, xmlNode, kNotTopLevel ); - - if ( newStruct->options & kRDF_HasValueElem ) FixupQualifiedNode ( newStruct ); - - // *** Need to look for arrays using rdf:Description and rdf:type. - -} // RDF_ParseTypeResourcePropertyElement - - -// ================================================================================================= -// RDF_ParseTypeCollectionPropertyElement -// ====================================== -// -// 7.2.19 parseTypeCollectionPropertyElt -// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseCollection ) ) -// nodeElementList -// end-element() - -static void -RDF_ParseTypeCollectionPropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ) -{ - IgnoreParam(xmpParent); IgnoreParam(xmlNode); IgnoreParam(isTopLevel); - - XMP_Throw ( "ParseTypeCollection property element not allowed", kXMPErr_BadXMP ); - -} // RDF_ParseTypeCollectionPropertyElement - - -// ================================================================================================= -// RDF_ParseTypeOtherPropertyElement -// ================================= -// -// 7.2.20 parseTypeOtherPropertyElt -// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseOther ) ) -// propertyEltList -// end-element() - -static void -RDF_ParseTypeOtherPropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ) -{ - IgnoreParam(xmpParent); IgnoreParam(xmlNode); IgnoreParam(isTopLevel); - - XMP_Throw ( "ParseTypeOther property element not allowed", kXMPErr_BadXMP ); - -} // RDF_ParseTypeOtherPropertyElement - - -// ================================================================================================= -// RDF_EmptyPropertyElement -// ======================== -// -// 7.2.21 emptyPropertyElt -// start-element ( URI == propertyElementURIs, -// attributes == set ( idAttr?, ( resourceAttr | nodeIdAttr )?, propertyAttr* ) ) -// end-element() -// -// -// -// -// -// -// An emptyPropertyElt is an element with no contained content, just a possibly empty set of -// attributes. An emptyPropertyElt can represent three special cases of simple XMP properties: a -// simple property with an empty value (ns:Prop1), a simple property whose value is a URI -// (ns:Prop2), or a simple property with simple qualifiers (ns:Prop3). An emptyPropertyElt can also -// represent an XMP struct whose fields are all simple and unqualified (ns:Prop4). -// -// It is an error to use both rdf:value and rdf:resource - that can lead to invalid RDF in the -// verbose form written using a literalPropertyElt. -// -// The XMP mapping for an emptyPropertyElt is a bit different from generic RDF, partly for -// design reasons and partly for historical reasons. The XMP mapping rules are: -// 1. If there is an rdf:value attribute then this is a simple property with a text value. -// All other attributes are qualifiers. -// 2. If there is an rdf:resource attribute then this is a simple property with a URI value. -// All other attributes are qualifiers. -// 3. If there are no attributes other than xml:lang, rdf:ID, or rdf:nodeID then this is a simple -// property with an empty value. -// 4. Otherwise this is a struct, the attributes other than xml:lang, rdf:ID, or rdf:nodeID are fields. - -static void -RDF_EmptyPropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ) -{ - bool hasPropertyAttrs = false; - bool hasResourceAttr = false; - bool hasNodeIDAttr = false; - bool hasValueAttr = false; - - const XML_Node * valueNode = 0; // ! Can come from rdf:value or rdf:resource. - - if ( ! xmlNode.content.empty() ) XMP_Throw ( "Nested content not allowed with rdf:resource or property attributes", kXMPErr_BadRDF ); - - // First figure out what XMP this maps to and remember the XML node for a simple value. - - XML_cNodePos currAttr = xmlNode.attrs.begin(); - XML_cNodePos endAttr = xmlNode.attrs.end(); - - for ( ; currAttr != endAttr; ++currAttr ) { - - RDFTermKind attrTerm = GetRDFTermKind ( (*currAttr)->name ); - - switch ( attrTerm ) { - - case kRDFTerm_ID : - // Nothing to do. - break; - - case kRDFTerm_resource : - if ( hasNodeIDAttr ) XMP_Throw ( "Empty property element can't have both rdf:resource and rdf:nodeID", kXMPErr_BadRDF ); - if ( hasValueAttr ) XMP_Throw ( "Empty property element can't have both rdf:value and rdf:resource", kXMPErr_BadXMP ); - hasResourceAttr = true; - if ( ! hasValueAttr ) valueNode = *currAttr; - break; - - case kRDFTerm_nodeID : - if ( hasResourceAttr ) XMP_Throw ( "Empty property element can't have both rdf:resource and rdf:nodeID", kXMPErr_BadRDF ); - hasNodeIDAttr = true; - break; - - case kRDFTerm_Other : - if ( (*currAttr)->name == "rdf:value" ) { - if ( hasResourceAttr ) XMP_Throw ( "Empty property element can't have both rdf:value and rdf:resource", kXMPErr_BadXMP ); - hasValueAttr = true; - valueNode = *currAttr; - } else if ( (*currAttr)->name != "xml:lang" ) { - hasPropertyAttrs = true; - } - break; - - default : - XMP_Throw ( "Unrecognized attribute of empty property element", kXMPErr_BadRDF ); - break; - - } - - } - - // Create the right kind of child node and visit the attributes again to add the fields or qualifiers. - // ! Because of implementation vagaries, the xmpParent is the tree root for top level properties. - // ! The schema is found, created if necessary, by AddChildNode. - - XMP_Node * childNode = AddChildNode ( xmpParent, xmlNode, "", isTopLevel ); - bool childIsStruct = false; - - if ( hasValueAttr | hasResourceAttr ) { - childNode->value = valueNode->value; - if ( ! hasValueAttr ) childNode->options |= kXMP_PropValueIsURI; // ! Might have both rdf:value and rdf:resource. - } else if ( hasPropertyAttrs ) { - childNode->options |= kXMP_PropValueIsStruct; - childIsStruct = true; - } - - currAttr = xmlNode.attrs.begin(); - endAttr = xmlNode.attrs.end(); - - for ( ; currAttr != endAttr; ++currAttr ) { - - if ( *currAttr == valueNode ) continue; // Skip the rdf:value or rdf:resource attribute holding the value. - RDFTermKind attrTerm = GetRDFTermKind ( (*currAttr)->name ); - - switch ( attrTerm ) { - - case kRDFTerm_ID : - case kRDFTerm_nodeID : - break; // Ignore all rdf:ID and rdf:nodeID attributes.w - - case kRDFTerm_resource : - AddQualifierNode ( childNode, **currAttr ); - break; - - case kRDFTerm_Other : - if ( (! childIsStruct) || (*currAttr)->name == "xml:lang" ) { - AddQualifierNode ( childNode, **currAttr ); - } else { - AddChildNode ( childNode, **currAttr, (*currAttr)->value.c_str(), false ); - } - break; - - default : - XMP_Throw ( "Unrecognized attribute of empty property element", kXMPErr_BadRDF ); - break; - - } - - } - -} // RDF_EmptyPropertyElement - - -// ================================================================================================= diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/UnicodeConversions.cpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/UnicodeConversions.cpp deleted file mode 100644 index 123c502b005..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/UnicodeConversions.cpp +++ /dev/null @@ -1,1665 +0,0 @@ -// ================================================================================================= -// Copyright 2004-2007 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#include "XMP_Const.h" - -#if UnicodeTestBuild - #include - #include - #define UC_Assert assert - #define UC_Throw(m,k) throw std::logic_error ( m ) -#else - #define UC_Assert(cond) /* Nothing for now, should be XMP_Assert. */ - #define UC_Throw(msg,id) throw XMP_Error ( id, msg ) -#endif - -#include "UnicodeConversions.hpp" - -using namespace std; - -// ================================================================================================= - -// *** Look into using asm inlines, e.g. count-leading bits for multi-byte UTF-8. - -CodePoint_to_UTF16_Proc CodePoint_to_UTF16BE = 0; -CodePoint_to_UTF16_Proc CodePoint_to_UTF16LE = 0; - -CodePoint_from_UTF16_Proc CodePoint_from_UTF16BE = 0; -CodePoint_from_UTF16_Proc CodePoint_from_UTF16LE = 0; - -UTF8_to_UTF16_Proc UTF8_to_UTF16BE = 0; -UTF8_to_UTF16_Proc UTF8_to_UTF16LE = 0; -UTF8_to_UTF32_Proc UTF8_to_UTF32BE = 0; -UTF8_to_UTF32_Proc UTF8_to_UTF32LE = 0; - -UTF16_to_UTF8_Proc UTF16BE_to_UTF8 = 0; -UTF16_to_UTF8_Proc UTF16LE_to_UTF8 = 0; -UTF32_to_UTF8_Proc UTF32BE_to_UTF8 = 0; -UTF32_to_UTF8_Proc UTF32LE_to_UTF8 = 0; - -UTF8_to_UTF16_Proc UTF8_to_UTF16Native = 0; -UTF8_to_UTF32_Proc UTF8_to_UTF32Native = 0; -UTF16_to_UTF8_Proc UTF16Native_to_UTF8 = 0; -UTF32_to_UTF8_Proc UTF32Native_to_UTF8 = 0; - -UTF16_to_UTF32_Proc UTF16BE_to_UTF32BE = 0; -UTF16_to_UTF32_Proc UTF16BE_to_UTF32LE = 0; -UTF16_to_UTF32_Proc UTF16LE_to_UTF32BE = 0; -UTF16_to_UTF32_Proc UTF16LE_to_UTF32LE = 0; - -UTF32_to_UTF16_Proc UTF32BE_to_UTF16BE = 0; -UTF32_to_UTF16_Proc UTF32BE_to_UTF16LE = 0; -UTF32_to_UTF16_Proc UTF32LE_to_UTF16BE = 0; -UTF32_to_UTF16_Proc UTF32LE_to_UTF16LE = 0; - -// ------------------------------------------------------------------------------------------------- - -static size_t swap32to16Offset = 0; // Offset to "convert" a swapped UTF32 pointer into a swapped UTF16 pointer. - -// ------------------------------------------------------------------------------------------------- - -static void CodePoint_to_UTF16Nat ( const UTF32Unit cpIn, UTF16Unit * utf16Out, const size_t utf16Len, size_t * utf16Written ); -static void CodePoint_to_UTF16Swp ( const UTF32Unit cpIn, UTF16Unit * utf16Out, const size_t utf16Len, size_t * utf16Written ); - -static void CodePoint_from_UTF16Nat ( const UTF16Unit * utf16In, const size_t utf16Len, UTF32Unit * cpOut, size_t * utf16Read ); -static void CodePoint_from_UTF16Swp ( const UTF16Unit * utf16In, const size_t utf16Len, UTF32Unit * cpOut, size_t * utf16Read ); - -// ------------------------------------------------------------------------------------------------- - -static void UTF8_to_UTF16Nat ( const UTF8Unit * utf8In, const size_t utf8Len, - UTF16Unit * utf16Out, const size_t utf16Len, - size_t * utf8Read, size_t * utf16Written ); - -static void UTF8_to_UTF16Swp ( const UTF8Unit * utf8In, const size_t utf8Len, - UTF16Unit * utf16Out, const size_t utf16Len, - size_t * utf8Read, size_t * utf16Written ); - -static void UTF8_to_UTF32Nat ( const UTF8Unit * utf8In, const size_t utf8Len, - UTF32Unit * utf32Out, const size_t utf32Len, - size_t * utf8Read, size_t * utf32Written ); - -static void UTF8_to_UTF32Swp ( const UTF8Unit * utf8In, const size_t utf8Len, - UTF32Unit * utf32Out, const size_t utf32Len, - size_t * utf8Read, size_t * utf32Written ); - -// ------------------------------------------------------------------------------------------------- - -static void UTF16Nat_to_UTF8 ( const UTF16Unit * utf16In, const size_t utf16Len, - UTF8Unit * utf8Out, const size_t utf8Len, - size_t * utf16Read, size_t * utf8Written ); - -static void UTF16Swp_to_UTF8 ( const UTF16Unit * utf16In, const size_t utf16Len, - UTF8Unit * utf8Out, const size_t utf8Len, - size_t * utf16Read, size_t * utf8Written ); - -static void UTF32Nat_to_UTF8 ( const UTF32Unit * utf32In, const size_t utf32Len, - UTF8Unit * utf8Out, const size_t utf8Len, - size_t * utf32Read, size_t * utf8Written ); - -static void UTF32Swp_to_UTF8 ( const UTF32Unit * utf32In, const size_t utf32Len, - UTF8Unit * utf8Out, const size_t utf8Len, - size_t * utf32Read, size_t * utf8Written ); - -// ------------------------------------------------------------------------------------------------- - -static void UTF16Nat_to_UTF32Nat ( const UTF16Unit * utf16In, const size_t utf16Len, - UTF32Unit * utf32Out, const size_t utf32Len, - size_t * utf16Read, size_t * utf32Written ); - -static void UTF16Nat_to_UTF32Swp ( const UTF16Unit * utf16In, const size_t utf16Len, - UTF32Unit * utf32Out, const size_t utf32Len, - size_t * utf16Read, size_t * utf32Written ); - -static void UTF16Swp_to_UTF32Nat ( const UTF16Unit * utf16In, const size_t utf16Len, - UTF32Unit * utf32Out, const size_t utf32Len, - size_t * utf16Read, size_t * utf32Written ); - -static void UTF16Swp_to_UTF32Swp ( const UTF16Unit * utf16In, const size_t utf16Len, - UTF32Unit * utf32Out, const size_t utf32Len, - size_t * utf16Read, size_t * utf32Written ); - -// ------------------------------------------------------------------------------------------------- - -static void UTF32Nat_to_UTF16Nat ( const UTF32Unit * utf32In, const size_t utf32Len, - UTF16Unit * utf16Out, const size_t utf16Len, - size_t * utf32Read, size_t * utf16Written ); - -static void UTF32Nat_to_UTF16Swp ( const UTF32Unit * utf32In, const size_t utf32Len, - UTF16Unit * utf16Out, const size_t utf16Len, - size_t * utf32Read, size_t * utf16Written ); - -static void UTF32Swp_to_UTF16Nat ( const UTF32Unit * utf32In, const size_t utf32Len, - UTF16Unit * utf16Out, const size_t utf16Len, - size_t * utf32Read, size_t * utf16Written ); - -static void UTF32Swp_to_UTF16Swp ( const UTF32Unit * utf32In, const size_t utf32Len, - UTF16Unit * utf16Out, const size_t utf16Len, - size_t * utf32Read, size_t * utf16Written ); - -// ================================================================================================= - -void InitializeUnicodeConversions() -{ - UC_Assert ( (sizeof(UTF8Unit) == 1) && (sizeof(UTF16Unit) == 2) && (sizeof(UTF32Unit) == 4) ); - - UTF16Unit u16 = 0x00FF; - bool bigEndian = (*((UTF8Unit*)&u16) == 0); - - UTF8_to_UTF16Native = UTF8_to_UTF16Nat; - UTF8_to_UTF32Native = UTF8_to_UTF32Nat; - UTF16Native_to_UTF8 = UTF16Nat_to_UTF8; - UTF32Native_to_UTF8 = UTF32Nat_to_UTF8; - - if ( bigEndian ) { - - swap32to16Offset = 0; - - CodePoint_to_UTF16BE = CodePoint_to_UTF16Nat; - CodePoint_to_UTF16LE = CodePoint_to_UTF16Swp; - - CodePoint_from_UTF16BE = CodePoint_from_UTF16Nat; - CodePoint_from_UTF16LE = CodePoint_from_UTF16Swp; - - UTF8_to_UTF16BE = UTF8_to_UTF16Nat; - UTF8_to_UTF16LE = UTF8_to_UTF16Swp; - UTF8_to_UTF32BE = UTF8_to_UTF32Nat; - UTF8_to_UTF32LE = UTF8_to_UTF32Swp; - - UTF16BE_to_UTF8 = UTF16Nat_to_UTF8; - UTF16LE_to_UTF8 = UTF16Swp_to_UTF8; - UTF32BE_to_UTF8 = UTF32Nat_to_UTF8; - UTF32LE_to_UTF8 = UTF32Swp_to_UTF8; - - UTF16BE_to_UTF32BE = UTF16Nat_to_UTF32Nat; - UTF16BE_to_UTF32LE = UTF16Nat_to_UTF32Swp; - UTF16LE_to_UTF32BE = UTF16Swp_to_UTF32Nat; - UTF16LE_to_UTF32LE = UTF16Swp_to_UTF32Swp; - - UTF32BE_to_UTF16BE = UTF32Nat_to_UTF16Nat; - UTF32BE_to_UTF16LE = UTF32Nat_to_UTF16Swp; - UTF32LE_to_UTF16BE = UTF32Swp_to_UTF16Nat; - UTF32LE_to_UTF16LE = UTF32Swp_to_UTF16Swp; - - } else { - - swap32to16Offset = 1; // ! Offset in UTF16 units! - - CodePoint_to_UTF16BE = CodePoint_to_UTF16Swp; - CodePoint_to_UTF16LE = CodePoint_to_UTF16Nat; - - CodePoint_from_UTF16BE = CodePoint_from_UTF16Swp; - CodePoint_from_UTF16LE = CodePoint_from_UTF16Nat; - - UTF8_to_UTF16BE = UTF8_to_UTF16Swp; - UTF8_to_UTF16LE = UTF8_to_UTF16Nat; - UTF8_to_UTF32BE = UTF8_to_UTF32Swp; - UTF8_to_UTF32LE = UTF8_to_UTF32Nat; - - UTF16BE_to_UTF8 = UTF16Swp_to_UTF8; - UTF16LE_to_UTF8 = UTF16Nat_to_UTF8; - UTF32BE_to_UTF8 = UTF32Swp_to_UTF8; - UTF32LE_to_UTF8 = UTF32Nat_to_UTF8; - - UTF16BE_to_UTF32BE = UTF16Swp_to_UTF32Swp; - UTF16BE_to_UTF32LE = UTF16Swp_to_UTF32Nat; - UTF16LE_to_UTF32BE = UTF16Nat_to_UTF32Swp; - UTF16LE_to_UTF32LE = UTF16Nat_to_UTF32Nat; - - UTF32BE_to_UTF16BE = UTF32Swp_to_UTF16Swp; - UTF32BE_to_UTF16LE = UTF32Swp_to_UTF16Nat; - UTF32LE_to_UTF16BE = UTF32Nat_to_UTF16Swp; - UTF32LE_to_UTF16LE = UTF32Nat_to_UTF16Nat; - - } - -} // InitializeUnicodeConversions - -// ================================================================================================= - -#if XMP_MacBuild && __MWERKS__ - - #define UTF16InSwap(inPtr) UTF16Unit ( __lhbrx ( (void*)(inPtr), 0 ) ) - #define UTF32InSwap(inPtr) UTF32Unit ( __lwbrx ( (void*)(inPtr), 0 ) ) - - #define UTF16OutSwap(outPtr,value) __sthbrx ( value, (void*)(outPtr), 0 ) - #define UTF32OutSwap(outPtr,value) __stwbrx ( value, (void*)(outPtr), 0 ) - -#else - - static inline UTF16Unit UTF16InSwap ( const UTF16Unit * inPtr ) - { - UTF16Unit inUnit = *inPtr; - return (inUnit << 8) | (inUnit >> 8); - } - - static inline UTF32Unit UTF32InSwap ( const UTF32Unit * inPtr ) - { - UTF32Unit inUnit = *inPtr; - return (inUnit << 24) | ((inUnit << 8) & 0x00FF0000) | ((inUnit >> 8) & 0x0000FF00) | (inUnit >> 24); - } - - static inline void UTF16OutSwap ( UTF16Unit * outPtr, const UTF16Unit value ) - { - UTF16Unit outUnit = (value << 8) | (value >> 8); - *outPtr = outUnit; - } - - static inline void UTF32OutSwap ( UTF32Unit * outPtr, const UTF32Unit value ) - { - UTF32Unit outUnit = (value << 24) | ((value << 8) & 0x00FF0000) | ((value >> 8) & 0x0000FF00) | (value >> 24); - *outPtr = outUnit; - } - -#endif - -// ================================================================================================= - -void SwapUTF16 ( const UTF16Unit * utf16In, UTF16Unit * utf16Out, const size_t utf16Len ) -{ - for ( size_t i = 0; i < utf16Len; ++i ) utf16Out[i] = UTF16InSwap(utf16In+i); -} - -void SwapUTF32 ( const UTF32Unit * utf32In, UTF32Unit * utf32Out, const size_t utf32Len ) { - for ( size_t i = 0; i < utf32Len; ++i ) utf32Out[i] = UTF32InSwap(utf32In+i); -} - -// ================================================================================================= - -extern void ToUTF16 ( const UTF8Unit * utf8In, size_t utf8Len, std::string * utf16Str, bool bigEndian ) -{ - UTF8_to_UTF16_Proc Converter = UTF8_to_UTF16LE; - if ( bigEndian ) Converter = UTF8_to_UTF16BE; - - enum { kBufferSize = 8*1024 }; - UTF16Unit u16Buffer[kBufferSize]; // 16K bytes - size_t readCount, writeCount; - - utf16Str->erase(); - utf16Str->reserve ( 2*utf8Len ); // As good a guess as any. - - while ( utf8Len > 0 ) { - Converter ( utf8In, utf8Len, u16Buffer, kBufferSize, &readCount, &writeCount ); - if ( writeCount == 0 ) UC_Throw ( "Incomplete Unicode at end of string", kXMPErr_BadXML ); - utf16Str->append ( (const char *)u16Buffer, writeCount*2 ); - utf8In += readCount; - utf8Len -= readCount; - } - -} // ToUTF16 - -// ================================================================================================= - -extern void ToUTF16Native ( const UTF8Unit * utf8In, size_t utf8Len, std::string * utf16Str ) -{ - enum { kBufferSize = 8*1024 }; - UTF16Unit u16Buffer[kBufferSize]; // 16K bytes - size_t readCount, writeCount; - - utf16Str->erase(); - utf16Str->reserve ( 2*utf8Len ); // As good a guess as any. - - while ( utf8Len > 0 ) { - UTF8_to_UTF16Nat ( utf8In, utf8Len, u16Buffer, kBufferSize, &readCount, &writeCount ); - if ( writeCount == 0 ) UC_Throw ( "Incomplete Unicode at end of string", kXMPErr_BadXML ); - utf16Str->append ( (const char *)u16Buffer, writeCount*2 ); - utf8In += readCount; - utf8Len -= readCount; - } - -} // ToUTF16Native - -// ================================================================================================= - -extern void ToUTF32 ( const UTF8Unit * utf8In, size_t utf8Len, std::string * utf32Str, bool bigEndian ) -{ - UTF8_to_UTF32_Proc Converter = UTF8_to_UTF32LE; - if ( bigEndian ) Converter = UTF8_to_UTF32BE; - - enum { kBufferSize = 4*1024 }; - UTF32Unit u32Buffer[kBufferSize]; // 16K bytes - size_t readCount, writeCount; - - utf32Str->erase(); - utf32Str->reserve ( 4*utf8Len ); // As good a guess as any. - - while ( utf8Len > 0 ) { - Converter ( utf8In, utf8Len, u32Buffer, kBufferSize, &readCount, &writeCount ); - if ( writeCount == 0 ) UC_Throw ( "Incomplete Unicode at end of string", kXMPErr_BadXML ); - utf32Str->append ( (const char *)u32Buffer, writeCount*4 ); - utf8In += readCount; - utf8Len -= readCount; - } - -} // ToUTF32 - -// ================================================================================================= - -extern void ToUTF32Native ( const UTF8Unit * utf8In, size_t utf8Len, std::string * utf32Str ) -{ - enum { kBufferSize = 4*1024 }; - UTF32Unit u32Buffer[kBufferSize]; // 16K bytes - size_t readCount, writeCount; - - utf32Str->erase(); - utf32Str->reserve ( 4*utf8Len ); // As good a guess as any. - - while ( utf8Len > 0 ) { - UTF8_to_UTF32Nat ( utf8In, utf8Len, u32Buffer, kBufferSize, &readCount, &writeCount ); - if ( writeCount == 0 ) UC_Throw ( "Incomplete Unicode at end of string", kXMPErr_BadXML ); - utf32Str->append ( (const char *)u32Buffer, writeCount*4 ); - utf8In += readCount; - utf8Len -= readCount; - } - -} // ToUTF32Native - -// ================================================================================================= - -extern void FromUTF16 ( const UTF16Unit * utf16In, size_t utf16Len, std::string * utf8Str, bool bigEndian ) -{ - UTF16_to_UTF8_Proc Converter = UTF16LE_to_UTF8; - if ( bigEndian ) Converter = UTF16BE_to_UTF8; - - enum { kBufferSize = 16*1024 }; - UTF8Unit u8Buffer[kBufferSize]; - size_t readCount, writeCount; - - utf8Str->erase(); - utf8Str->reserve ( 2*utf16Len ); // As good a guess as any. - - while ( utf16Len > 0 ) { - Converter ( utf16In, utf16Len, u8Buffer, kBufferSize, &readCount, &writeCount ); - if ( writeCount == 0 ) UC_Throw ( "Incomplete Unicode at end of string", kXMPErr_BadXML ); - utf8Str->append ( (const char *)u8Buffer, writeCount ); - utf16In += readCount; - utf16Len -= readCount; - } - -} // FromUTF16 - -// ================================================================================================= - -extern void FromUTF16Native ( const UTF16Unit * utf16In, size_t utf16Len, std::string * utf8Str ) -{ - enum { kBufferSize = 16*1024 }; - UTF8Unit u8Buffer[kBufferSize]; - size_t readCount, writeCount; - - utf8Str->erase(); - utf8Str->reserve ( 2*utf16Len ); // As good a guess as any. - - while ( utf16Len > 0 ) { - UTF16Nat_to_UTF8 ( utf16In, utf16Len, u8Buffer, kBufferSize, &readCount, &writeCount ); - if ( writeCount == 0 ) UC_Throw ( "Incomplete Unicode at end of string", kXMPErr_BadXML ); - utf8Str->append ( (const char *)u8Buffer, writeCount ); - utf16In += readCount; - utf16Len -= readCount; - } - -} // FromUTF16Native - -// ================================================================================================= - -extern void FromUTF32 ( const UTF32Unit * utf32In, size_t utf32Len, std::string * utf8Str, bool bigEndian ) -{ - UTF32_to_UTF8_Proc Converter = UTF32LE_to_UTF8; - if ( bigEndian ) Converter = UTF32BE_to_UTF8; - - enum { kBufferSize = 16*1024 }; - UTF8Unit u8Buffer[kBufferSize]; - size_t readCount, writeCount; - - utf8Str->erase(); - utf8Str->reserve ( 2*utf32Len ); // As good a guess as any. - - while ( utf32Len > 0 ) { - Converter ( utf32In, utf32Len, u8Buffer, kBufferSize, &readCount, &writeCount ); - if ( writeCount == 0 ) UC_Throw ( "Incomplete Unicode at end of string", kXMPErr_BadXML ); - utf8Str->append ( (const char *)u8Buffer, writeCount ); - utf32In += readCount; - utf32Len -= readCount; - } - -} // FromUTF32 - -// ================================================================================================= - -extern void FromUTF32Native ( const UTF32Unit * utf32In, size_t utf32Len, std::string * utf8Str ) -{ - enum { kBufferSize = 16*1024 }; - UTF8Unit u8Buffer[kBufferSize]; - size_t readCount, writeCount; - - utf8Str->erase(); - utf8Str->reserve ( 2*utf32Len ); // As good a guess as any. - - while ( utf32Len > 0 ) { - UTF32Nat_to_UTF8 ( utf32In, utf32Len, u8Buffer, kBufferSize, &readCount, &writeCount ); - if ( writeCount == 0 ) UC_Throw ( "Incomplete Unicode at end of string", kXMPErr_BadXML ); - utf8Str->append ( (const char *)u8Buffer, writeCount ); - utf32In += readCount; - utf32Len -= readCount; - } - -} // FromUTF32Native - -// ================================================================================================= - -static void CodePoint_to_UTF8_Multi ( const UTF32Unit cpIn, UTF8Unit * utf8Out, const size_t utf8Len, size_t * utf8Written ) -{ - size_t unitCount = 0; - - if ( cpIn > 0x10FFFF ) UC_Throw ( "Bad UTF-32 - out of range", kXMPErr_BadParam ); - if ( (0xD800 <= cpIn) && (cpIn <= 0xDFFF) ) UC_Throw ( "Bad UTF-32 - surrogate code point", kXMPErr_BadParam ); - - // Compute the number of bytes using 6 data bits each. Then see if the highest order bits will - // fit into the leading byte. Write the UTF-8 sequence if there is enough room. - - UTF32Unit temp, mask; - size_t bytesNeeded = 0; - for ( temp = cpIn; temp != 0; temp = temp >> 6 ) ++bytesNeeded; - - temp = cpIn >> ((bytesNeeded-1)*6); // The highest order data bits. - mask = (0x80 >> bytesNeeded) - 1; // Available data bits in the leading byte. - if ( temp > mask ) ++bytesNeeded; - - if ( bytesNeeded > utf8Len ) goto Done; // Not enough room for the output. - unitCount = bytesNeeded; - - temp = cpIn; - for ( --bytesNeeded; bytesNeeded > 0; --bytesNeeded ) { - utf8Out[bytesNeeded] = 0x80 | UTF8Unit ( temp & 0x3F ); - temp = temp >> 6; - } - - mask = ~((1 << (8-unitCount)) - 1); - utf8Out[0] = UTF8Unit ( mask | temp ); - -Done: - *utf8Written = unitCount; - return; - -} // CodePoint_to_UTF8_Multi - -// ================================================================================================= - -void CodePoint_to_UTF8 ( const UTF32Unit cpIn, UTF8Unit * utf8Out, const size_t utf8Len, size_t * utf8Written ) -{ - size_t unitCount = 0; - - UC_Assert ( (utf8Out != 0) && (utf8Written != 0) ); - if ( utf8Len == 0 ) goto Done; - if ( cpIn > 0x7F ) goto MultiByte; // ! Force linear execution path for ASCII. - - if ( utf8Len == 0 ) goto Done; - unitCount = 1; - *utf8Out = UTF8Unit(cpIn); - -Done: - *utf8Written = unitCount; - return; - -MultiByte: - CodePoint_to_UTF8_Multi( cpIn, utf8Out, utf8Len, utf8Written ); - return; - -} // CodePoint_to_UTF8 - -// ================================================================================================= - -static void CodePoint_from_UTF8_Multi ( const UTF8Unit * utf8In, const size_t utf8Len, UTF32Unit * cpOut, size_t * utf8Read ) -{ - UTF8Unit inUnit = *utf8In; - size_t unitCount = 0; - UTF32Unit cp; // ! Avoid gcc complaints about declarations after goto's. - const UTF8Unit * utf8Pos; - - // ------------------------------------------------------------------------------------- - // We've got a multibyte UTF-8 character. The first byte has the number of bytes and the - // highest order data bits. The other bytes each add 6 more data bits. - - #if 0 // This might be a more effcient way to count the bytes. - static XMP_Uns8 kByteCounts[16] = { 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 3, 4 }; - size_t bytesNeeded = kByteCounts [ inUnit >> 4 ]; - if ( (bytesNeeded < 2) || ((bytesNeeded == 4) && ((inUnit & 0x08) != 0)) ) { - UC_Throw ( "Invalid UTF-8 sequence length", kXMPErr_BadParam ); - } - #endif - - size_t bytesNeeded = 0; // Count the leading 1 bits in the first byte. - for ( UTF8Unit temp = inUnit; temp > 0x7F; temp = temp << 1 ) ++bytesNeeded; - // *** Consider CPU-specific assembly inline, e.g. cntlzw on PowerPC. - - if ( (bytesNeeded < 2) || (bytesNeeded > 4) ) UC_Throw ( "Invalid UTF-8 sequence length", kXMPErr_BadParam ); - if ( bytesNeeded > utf8Len ) goto Done; // Not enough input in this buffer. - unitCount = bytesNeeded; - - cp = inUnit & ((1 << (7-unitCount)) - 1); // Isolate the initial data bits in the bottom of cp. - - utf8Pos = utf8In + 1; // We've absorbed the first byte. - for ( --bytesNeeded; bytesNeeded > 0; --bytesNeeded, ++utf8Pos ) { - inUnit = *utf8Pos; - if ( (inUnit & UTF8Unit(0xC0)) != UTF8Unit(0x80) ) UC_Throw ( "Invalid UTF-8 data byte", kXMPErr_BadParam ); - cp = (cp << 6) | (inUnit & 0x3F); - } - - if ( cp >= 0xD800 ) { // Skip the next comparisons most of the time. - if ( (0xD800 <= cp) && (cp <= 0xDFFF) ) UC_Throw ( "Bad UTF-8 - surrogate code point", kXMPErr_BadParam ); - if ( cp > 0x10FFFF ) UC_Throw ( "Bad UTF-8 - out of range", kXMPErr_BadParam ); - } - - *cpOut = cp; // ! Don't put after Done, don't write if no input. - -Done: - *utf8Read = unitCount; - return; - -} // CodePoint_from_UTF8_Multi - -// ================================================================================================= - -void CodePoint_from_UTF8 ( const UTF8Unit * utf8In, const size_t utf8Len, UTF32Unit * cpOut, size_t * utf8Read ) -{ - UTF8Unit inUnit; // ! Don't read until we know there is input. - size_t unitCount = 0; - - UC_Assert ( (utf8In != 0) && (cpOut != 0) && (utf8Read != 0) ); - if ( utf8Len == 0 ) goto Done; - inUnit = *utf8In; - if ( inUnit >= 0x80 ) goto MultiByte; // ! Force linear execution path for ASCII. - - unitCount = 1; - *cpOut = inUnit; // ! Don't put after Done, don't write if no input. - -Done: - *utf8Read = unitCount; - return; - -MultiByte: - CodePoint_from_UTF8_Multi ( utf8In, utf8Len, cpOut, utf8Read ); - return; - -} // CodePoint_from_UTF8 - -// ================================================================================================= - -static void CodePoint_to_UTF16Nat_Surrogate ( const UTF32Unit cpIn, UTF16Unit * utf16Out, const size_t utf16Len, size_t * utf16Written ) -{ - size_t unitCount = 0; - UTF32Unit temp; // ! Avoid gcc complaints about declarations after goto's. - - if ( cpIn > 0x10FFFF ) UC_Throw ( "Bad UTF-32 - out of range", kXMPErr_BadParam ); - if ( utf16Len < 2 ) goto Done; // Not enough room for the output. - - unitCount = 2; - temp = cpIn - 0x10000; - utf16Out[0] = 0xD800 | UTF16Unit ( temp >> 10 ); - utf16Out[1] = 0xDC00 | UTF16Unit ( temp & 0x3FF ); - -Done: - *utf16Written = unitCount; - return; - -} // CodePoint_to_UTF16Nat_Surrogate - -// ================================================================================================= - -static void CodePoint_to_UTF16Nat ( const UTF32Unit cpIn, UTF16Unit * utf16Out, const size_t utf16Len, size_t * utf16Written ) -{ - size_t unitCount = 0; - - UC_Assert ( (utf16Out != 0) && (utf16Written != 0) ); - if ( utf16Len == 0 ) goto Done; - if ( cpIn >= 0xD800 ) goto CheckSurrogate; // ! Force linear execution path for the BMP. - -InBMP: - unitCount = 1; - *utf16Out = UTF16Unit(cpIn); - -Done: - *utf16Written = unitCount; - return; - -CheckSurrogate: - if ( cpIn > 0xFFFF ) goto SurrogatePair; - if ( cpIn > 0xDFFF ) goto InBMP; - UC_Throw ( "Bad UTF-32 - surrogate code point", kXMPErr_BadParam ); - -SurrogatePair: - CodePoint_to_UTF16Nat_Surrogate ( cpIn, utf16Out, utf16Len, utf16Written ); - return; - -} // CodePoint_to_UTF16Nat - -// ================================================================================================= - -static void CodePoint_from_UTF16Nat_Surrogate ( const UTF16Unit * utf16In, const size_t utf16Len, UTF32Unit * cpOut, size_t * utf16Read ) -{ - UTF16Unit hiUnit = *utf16In; - size_t unitCount = 0; - UTF16Unit loUnit; // ! Avoid gcc complaints about declarations after goto's. - UTF32Unit cp; - - // ---------------------------------- - // We've got a UTF-16 surrogate pair. - - if ( hiUnit > 0xDBFF ) UC_Throw ( "Bad UTF-16 - leading low surrogate", kXMPErr_BadParam ); - if ( utf16Len < 2 ) goto Done; // Not enough input in this buffer. - - loUnit = *(utf16In+1); - if ( (loUnit < 0xDC00) || (0xDFFF < loUnit) ) UC_Throw ( "Bad UTF-16 - missing low surrogate", kXMPErr_BadParam ); - - unitCount = 2; - cp = (((hiUnit & 0x3FF) << 10) | (loUnit & 0x3FF)) + 0x10000; - - *cpOut = cp; // ! Don't put after Done, don't write if no input. - -Done: - *utf16Read = unitCount; - return; - -} // CodePoint_from_UTF16Nat_Surrogate - -// ================================================================================================= - -static void CodePoint_from_UTF16Nat ( const UTF16Unit * utf16In, const size_t utf16Len, UTF32Unit * cpOut, size_t * utf16Read ) -{ - UTF16Unit inUnit; // ! Don't read until we know there is input. - size_t unitCount = 0; - - UC_Assert ( (utf16In != 0) && (cpOut != 0) && (utf16Read != 0) ); - if ( utf16Len == 0 ) goto Done; - inUnit = *utf16In; - if ( (0xD800 <= inUnit) && (inUnit <= 0xDFFF) ) goto SurrogatePair; // ! Force linear execution path for the BMP. - - unitCount = 1; - *cpOut = inUnit; // ! Don't put after Done, don't write if no input. - -Done: - *utf16Read = unitCount; - return; - -SurrogatePair: - CodePoint_from_UTF16Nat_Surrogate ( utf16In, utf16Len, cpOut, utf16Read ); - return; - -} // CodePoint_from_UTF16Nat - -// ================================================================================================= - -static void UTF8_to_UTF16Nat ( const UTF8Unit * utf8In, const size_t utf8Len, - UTF16Unit * utf16Out, const size_t utf16Len, - size_t * utf8Read, size_t * utf16Written ) -{ - const UTF8Unit * utf8Pos = utf8In; - UTF16Unit * utf16Pos = utf16Out; - - size_t utf8Left = utf8Len; - size_t utf16Left = utf16Len; - - UC_Assert ( (utf8In != 0) && (utf16Out != 0) && (utf8Read != 0) && (utf16Written != 0) ); - - while ( (utf8Left > 0) && (utf16Left > 0) ) { - - // Do a run of ASCII, it copies 1 input unit into 1 output unit. - size_t i, limit = utf8Left; - if ( limit > utf16Left ) limit = utf16Left; - for ( i = 0; i < limit; ++i ) { - UTF8Unit inUnit = *utf8Pos; - if ( inUnit > 0x7F ) break; - *utf16Pos = inUnit; - ++utf8Pos; - ++utf16Pos; - } - utf8Left -= i; - utf16Left -= i; - - // Do a run of non-ASCII, it copies multiple input units into 1 or 2 output units. - while ( (utf8Left > 0) && (utf16Left > 0) ) { - UTF32Unit cp; - size_t len8, len16; - UTF8Unit inUnit = *utf8Pos; - if ( inUnit <= 0x7F ) break; - CodePoint_from_UTF8_Multi ( utf8Pos, utf8Left, &cp, &len8 ); - if ( len8 == 0 ) goto Done; // The input buffer ends in the middle of a character. - if ( cp <= 0xFFFF ) { - *utf16Pos = UTF16Unit(cp); - len16 = 1; - } else { - CodePoint_to_UTF16Nat_Surrogate ( cp, utf16Pos, utf16Left, &len16 ); - if ( len16 == 0 ) goto Done; // Not enough room in the output buffer. - } - utf8Left -= len8; - utf8Pos += len8; - utf16Left -= len16; - utf16Pos += len16; - } - - } - -Done: // Set the output lengths. - *utf8Read = utf8Len - utf8Left; - *utf16Written = utf16Len - utf16Left; - -} // UTF8_to_UTF16Nat - -// ================================================================================================= - -static void UTF8_to_UTF32Nat ( const UTF8Unit * utf8In, const size_t utf8Len, - UTF32Unit * utf32Out, const size_t utf32Len, - size_t * utf8Read, size_t * utf32Written ) -{ - const UTF8Unit * utf8Pos = utf8In; - UTF32Unit * utf32Pos = utf32Out; - - size_t utf8Left = utf8Len; - size_t utf32Left = utf32Len; - - UC_Assert ( (utf8In != 0) && (utf32Out != 0) && (utf8Read != 0) && (utf32Written != 0) ); - - while ( (utf8Left > 0) && (utf32Left > 0) ) { - - // Do a run of ASCII, it copies 1 input unit into 1 output unit. - size_t i, limit = utf8Left; - if ( limit > utf32Left ) limit = utf32Left; - for ( i = 0; i < limit; ++i ) { - UTF8Unit inUnit = *utf8Pos; - if ( inUnit > 0x7F ) break; - *utf32Pos = inUnit; - ++utf8Pos; - ++utf32Pos; - } - utf8Left -= i; - utf32Left -= i; - - // Do a run of non-ASCII, it copies variable input into 1 output unit. - while ( (utf8Left > 0) && (utf32Left > 0) ) { - size_t len; - UTF8Unit inUnit = *utf8Pos; - if ( inUnit <= 0x7F ) break; - CodePoint_from_UTF8_Multi ( utf8Pos, utf8Left, utf32Pos, &len ); - if ( len == 0 ) goto Done; // The input buffer ends in the middle of a character. - utf8Left -= len; - utf8Pos += len; - utf32Left -= 1; - utf32Pos += 1; - } - - } - -Done: // Set the output lengths. - *utf8Read = utf8Len - utf8Left; - *utf32Written = utf32Len - utf32Left; - -} // UTF8_to_UTF32Nat - -// ================================================================================================= - -static void UTF16Nat_to_UTF8 ( const UTF16Unit * utf16In, const size_t utf16Len, - UTF8Unit * utf8Out, const size_t utf8Len, - size_t * utf16Read, size_t * utf8Written ) -{ - const UTF16Unit * utf16Pos = utf16In; - UTF8Unit * utf8Pos = utf8Out; - - size_t utf16Left = utf16Len; - size_t utf8Left = utf8Len; - - UC_Assert ( (utf16In != 0) && (utf8Out != 0) && (utf16Read != 0) && (utf8Written != 0) ); - - while ( (utf16Left > 0) && (utf8Left > 0) ) { - - // Do a run of ASCII, it copies 1 input unit into 1 output unit. - size_t i, limit = utf16Left; - if ( limit > utf8Left ) limit = utf8Left; - for ( i = 0; i < limit; ++i ) { - UTF16Unit inUnit = *utf16Pos; - if ( inUnit > 0x7F ) break; - *utf8Pos = UTF8Unit(inUnit); - ++utf16Pos; - ++utf8Pos; - } - utf16Left -= i; - utf8Left -= i; - - // Do a run of non-ASCII inside the BMP, it copies 1 input unit into multiple output units. - while ( (utf16Left > 0) && (utf8Left > 0) ) { - size_t len8; - UTF16Unit inUnit = *utf16Pos; - if ( inUnit <= 0x7F ) break; - if ( (0xD800 <= inUnit) && (inUnit <= 0xDFFF) ) break; - CodePoint_to_UTF8_Multi ( inUnit, utf8Pos, utf8Left, &len8 ); - if ( len8 == 0 ) goto Done; // Not enough room in the output buffer. - utf16Left -= 1; - utf16Pos += 1; - utf8Left -= len8; - utf8Pos += len8; - } - - // Do a run of surrogate pairs, it copies 2 input units into multiple output units. - while ( (utf16Left > 0) && (utf8Left > 0) ) { - UTF32Unit cp; - size_t len16, len8; - UTF16Unit inUnit = *utf16Pos; - if ( (inUnit < 0xD800) || (0xDFFF < inUnit) ) break; - CodePoint_from_UTF16Nat_Surrogate ( utf16Pos, utf16Left, &cp, &len16 ); - if ( len16 == 0 ) goto Done; // The input buffer ends in the middle of a surrogate pair. - UC_Assert ( len16 == 2 ); - CodePoint_to_UTF8_Multi ( cp, utf8Pos, utf8Left, &len8 ); - if ( len8 == 0 ) goto Done; // Not enough room in the output buffer. - utf16Left -= len16; - utf16Pos += len16; - utf8Left -= len8; - utf8Pos += len8; - } - - } - -Done: // Set the output lengths. - *utf16Read = utf16Len - utf16Left; - *utf8Written = utf8Len - utf8Left; - -} // UTF16Nat_to_UTF8 - -// ================================================================================================= - -static void UTF32Nat_to_UTF8 ( const UTF32Unit * utf32In, const size_t utf32Len, - UTF8Unit * utf8Out, const size_t utf8Len, - size_t * utf32Read, size_t * utf8Written ) -{ - const UTF32Unit * utf32Pos = utf32In; - UTF8Unit * utf8Pos = utf8Out; - - size_t utf32Left = utf32Len; - size_t utf8Left = utf8Len; - - UC_Assert ( (utf32In != 0) && (utf8Out != 0) && (utf32Read != 0) && (utf8Written != 0) ); - - while ( (utf32Left > 0) && (utf8Left > 0) ) { - - // Do a run of ASCII, it copies 1 input unit into 1 output unit. - size_t i, limit = utf32Left; - if ( limit > utf8Left ) limit = utf8Left; - for ( i = 0; i < limit; ++i ) { - UTF32Unit inUnit = *utf32Pos; - if ( inUnit > 0x7F ) break; - *utf8Pos = UTF8Unit(inUnit); - ++utf32Pos; - ++utf8Pos; - } - utf32Left -= i; - utf8Left -= i; - - // Do a run of non-ASCII, it copies 1 input unit into multiple output units. - while ( (utf32Left > 0) && (utf8Left > 0) ) { - size_t len; - UTF32Unit inUnit = *utf32Pos; - if ( inUnit <= 0x7F ) break; - CodePoint_to_UTF8_Multi ( inUnit, utf8Pos, utf8Left, &len ); - if ( len == 0 ) goto Done; // Not enough room in the output buffer. - utf32Left -= 1; - utf32Pos += 1; - utf8Left -= len; - utf8Pos += len; - } - - } - -Done: // Set the output lengths. - *utf32Read = utf32Len - utf32Left; - *utf8Written = utf8Len - utf8Left; - -} // UTF32Nat_to_UTF8 - -// ================================================================================================= - -static void UTF16Nat_to_UTF32Nat ( const UTF16Unit * utf16In, const size_t utf16Len, - UTF32Unit * utf32Out, const size_t utf32Len, - size_t * utf16Read, size_t * utf32Written ) -{ - const UTF16Unit * utf16Pos = utf16In; - UTF32Unit * utf32Pos = utf32Out; - - size_t utf16Left = utf16Len; - size_t utf32Left = utf32Len; - - UC_Assert ( (utf16In != 0) && (utf32Out != 0) && (utf16Read != 0) && (utf32Written != 0) ); - - while ( (utf16Left > 0) && (utf32Left > 0) ) { - - // Do a run of BMP, it copies 1 input unit into 1 output unit. - size_t i, limit = utf16Left; - if ( limit > utf32Left ) limit = utf32Left; - for ( i = 0; i < limit; ++i ) { - UTF16Unit inUnit = *utf16Pos; - if ( (0xD800 <= inUnit) && (inUnit <= 0xDFFF) ) break; - *utf32Pos = inUnit; - ++utf16Pos; - ++utf32Pos; - } - utf16Left -= i; - utf32Left -= i; - - // Do a run of surrogate pairs, it copies 2 input units into 1 output unit. - while ( (utf16Left > 0) && (utf32Left > 0) ) { - size_t len; - UTF16Unit inUnit = *utf16Pos; - if ( (inUnit < 0xD800) || (0xDFFF < inUnit) ) break; - CodePoint_from_UTF16Nat_Surrogate ( utf16Pos, utf16Left, utf32Pos, &len ); - if ( len == 0 ) goto Done; // The input buffer ends in the middle of a surrogate pair. - UC_Assert ( len == 2 ); - utf16Left -= len; - utf16Pos += len; - utf32Left -= 1; - utf32Pos += 1; - } - - } - -Done: // Set the output lengths. - *utf16Read = utf16Len - utf16Left; - *utf32Written = utf32Len - utf32Left; - -} // UTF16Nat_to_UTF32Nat - -// ================================================================================================= - -static void UTF32Nat_to_UTF16Nat ( const UTF32Unit * utf32In, const size_t utf32Len, - UTF16Unit * utf16Out, const size_t utf16Len, - size_t * utf32Read, size_t * utf16Written ) -{ - const UTF32Unit * utf32Pos = utf32In; - UTF16Unit * utf16Pos = utf16Out; - - size_t utf32Left = utf32Len; - size_t utf16Left = utf16Len; - - UC_Assert ( (utf32In != 0) && (utf16Out != 0) && (utf32Read != 0) && (utf16Written != 0) ); - - while ( (utf32Left > 0) && (utf16Left > 0) ) { - - // Do a run of BMP, it copies 1 input unit into 1 output unit. - size_t i, limit = utf32Left; - if ( limit > utf16Left ) limit = utf16Left; - for ( i = 0; i < limit; ++i ) { - UTF32Unit inUnit = *utf32Pos; - if ( inUnit > 0xFFFF ) break; - *utf16Pos = UTF16Unit(inUnit); - ++utf32Pos; - ++utf16Pos; - } - utf32Left -= i; - utf16Left -= i; - - // Do a run of non-BMP, it copies 1 input unit into 2 output units. - while ( (utf32Left > 0) && (utf16Left > 0) ) { - size_t len; - UTF32Unit inUnit = *utf32Pos; - if ( inUnit <= 0xFFFF ) break; - CodePoint_to_UTF16Nat_Surrogate ( inUnit, utf16Pos, utf16Left, &len ); - if ( len == 0 ) goto Done; // Not enough room in the output buffer. - UC_Assert ( len == 2 ); - utf32Left -= 1; - utf32Pos += 1; - utf16Left -= 2; - utf16Pos += 2; - } - - } - -Done: // Set the output lengths. - *utf32Read = utf32Len - utf32Left; - *utf16Written = utf16Len - utf16Left; - -} // UTF32Nat_to_UTF16Nat - -// ================================================================================================= - -static void CodePoint_to_UTF16Swp_Surrogate ( const UTF32Unit cpIn, UTF16Unit * utf16Out, const size_t utf16Len, size_t * utf16Written ) -{ - size_t unitCount = 0; - UTF32Unit temp; // ! Avoid gcc complaints about declarations after goto's. - - if ( cpIn > 0x10FFFF ) UC_Throw ( "Bad UTF-32 - out of range", kXMPErr_BadParam ); - if ( utf16Len < 2 ) goto Done; // Not enough room for the output. - - unitCount = 2; - temp = cpIn - 0x10000; - UTF16OutSwap ( &utf16Out[0], (0xD800 | UTF16Unit ( temp >> 10 )) ); - UTF16OutSwap ( &utf16Out[1], (0xDC00 | UTF16Unit ( temp & 0x3FF)) ); - -Done: - *utf16Written = unitCount; - return; - -} // CodePoint_to_UTF16Swp_Surrogate - -// ================================================================================================= - -static void CodePoint_to_UTF16Swp ( const UTF32Unit cpIn, UTF16Unit * utf16Out, const size_t utf16Len, size_t * utf16Written ) -{ - size_t unitCount = 0; - - UC_Assert ( (utf16Out != 0) && (utf16Written != 0) ); - if ( utf16Len == 0 ) goto Done; - if ( cpIn >= 0xD800 ) goto CheckSurrogate; // ! Force linear execution path for the BMP. - -InBMP: - unitCount = 1; - UTF16OutSwap ( utf16Out, UTF16Unit(cpIn) ); - -Done: - *utf16Written = unitCount; - return; - -CheckSurrogate: - if ( cpIn > 0xFFFF ) goto SurrogatePair; - if ( cpIn > 0xDFFF ) goto InBMP; - UC_Throw ( "Bad UTF-32 - surrogate code point", kXMPErr_BadParam ); - -SurrogatePair: - CodePoint_to_UTF16Swp_Surrogate ( cpIn, utf16Out, utf16Len, utf16Written ); - return; - -} // CodePoint_to_UTF16Swp - -// ================================================================================================= - -static void CodePoint_from_UTF16Swp_Surrogate ( const UTF16Unit * utf16In, const size_t utf16Len, UTF32Unit * cpOut, size_t * utf16Read ) -{ - UTF16Unit hiUnit = UTF16InSwap(utf16In); - size_t unitCount = 0; - UTF16Unit loUnit; // ! Avoid gcc complaints about declarations after goto's. - UTF32Unit cp; - - // ---------------------------------- - // We've got a UTF-16 surrogate pair. - - if ( hiUnit > 0xDBFF ) UC_Throw ( "Bad UTF-16 - leading low surrogate", kXMPErr_BadParam ); - if ( utf16Len < 2 ) goto Done; // Not enough input in this buffer. - - loUnit = UTF16InSwap(utf16In+1); - if ( (loUnit < 0xDC00) || (0xDFFF < loUnit) ) UC_Throw ( "Bad UTF-16 - missing low surrogate", kXMPErr_BadParam ); - - unitCount = 2; - cp = (((hiUnit & 0x3FF) << 10) | (loUnit & 0x3FF)) + 0x10000; - - *cpOut = cp; // ! Don't put after Done, don't write if no input. - -Done: - *utf16Read = unitCount; - return; - -} // CodePoint_from_UTF16Swp_Surrogate - -// ================================================================================================= - -static void CodePoint_from_UTF16Swp ( const UTF16Unit * utf16In, const size_t utf16Len, UTF32Unit * cpOut, size_t * utf16Read ) -{ - UTF16Unit inUnit; // ! Don't read until we know there is input. - size_t unitCount = 0; - - UC_Assert ( (utf16In != 0) && (cpOut != 0) && (utf16Read != 0) ); - if ( utf16Len == 0 ) goto Done; - inUnit = UTF16InSwap(utf16In); - if ( (0xD800 <= inUnit) && (inUnit <= 0xDFFF) ) goto SurrogatePair; // ! Force linear execution path for the BMP. - - unitCount = 1; - *cpOut = inUnit; // ! Don't put after Done, don't write if no input. - -Done: - *utf16Read = unitCount; - return; - -SurrogatePair: - CodePoint_from_UTF16Swp_Surrogate ( utf16In, utf16Len, cpOut, utf16Read ); - return; - -} // CodePoint_from_UTF16Swp - -// ================================================================================================= - -static void UTF8_to_UTF16Swp ( const UTF8Unit * utf8In, const size_t utf8Len, - UTF16Unit * utf16Out, const size_t utf16Len, - size_t * utf8Read, size_t * utf16Written ) -{ - const UTF8Unit * utf8Pos = utf8In; - UTF16Unit * utf16Pos = utf16Out; - - size_t utf8Left = utf8Len; - size_t utf16Left = utf16Len; - - UC_Assert ( (utf8In != 0) && (utf16Out != 0) && (utf8Read != 0) && (utf16Written != 0) ); - - while ( (utf8Left > 0) && (utf16Left > 0) ) { - - // Do a run of ASCII, it copies 1 input unit into 1 output unit. - size_t i, limit = utf8Left; - if ( limit > utf16Left ) limit = utf16Left; - for ( i = 0; i < limit; ++i ) { - UTF8Unit inUnit = *utf8Pos; - if ( inUnit > 0x7F ) break; - *utf16Pos = UTF16Unit(inUnit) << 8; // Better than: UTF16OutSwap ( utf16Pos, inUnit ); - ++utf8Pos; - ++utf16Pos; - } - utf8Left -= i; - utf16Left -= i; - - // Do a run of non-ASCII, it copies multiple input units into 1 or 2 output units. - while ( (utf8Left > 0) && (utf16Left > 0) ) { - UTF32Unit cp; - size_t len8, len16; - UTF8Unit inUnit = *utf8Pos; - if ( inUnit <= 0x7F ) break; - CodePoint_from_UTF8_Multi ( utf8Pos, utf8Left, &cp, &len8 ); - if ( len8 == 0 ) goto Done; // The input buffer ends in the middle of a character. - if ( cp <= 0xFFFF ) { - UTF16OutSwap ( utf16Pos, UTF16Unit(cp) ); - len16 = 1; - } else { - CodePoint_to_UTF16Swp_Surrogate ( cp, utf16Pos, utf16Left, &len16 ); - if ( len16 == 0 ) goto Done; // Not enough room in the output buffer. - } - utf8Left -= len8; - utf8Pos += len8; - utf16Left -= len16; - utf16Pos += len16; - } - - } - -Done: // Set the output lengths. - *utf8Read = utf8Len - utf8Left; - *utf16Written = utf16Len - utf16Left; - -} // UTF8_to_UTF16Swp - -// ================================================================================================= - -static void UTF8_to_UTF32Swp ( const UTF8Unit * utf8In, const size_t utf8Len, - UTF32Unit * utf32Out, const size_t utf32Len, - size_t * utf8Read, size_t * utf32Written ) -{ - const UTF8Unit * utf8Pos = utf8In; - UTF32Unit * utf32Pos = utf32Out; - - size_t utf8Left = utf8Len; - size_t utf32Left = utf32Len; - - UC_Assert ( (utf8In != 0) && (utf32Out != 0) && (utf8Read != 0) && (utf32Written != 0) ); - - while ( (utf8Left > 0) && (utf32Left > 0) ) { - - // Do a run of ASCII, it copies 1 input unit into 1 output unit. - size_t i, limit = utf8Left; - if ( limit > utf32Left ) limit = utf32Left; - for ( i = 0; i < limit; ++i ) { - UTF8Unit inUnit = *utf8Pos; - if ( inUnit > 0x7F ) break; - *utf32Pos = UTF32Unit(inUnit) << 24; // Better than: UTF32OutSwap ( utf32Pos, inUnit ); - ++utf8Pos; - ++utf32Pos; - } - utf8Left -= i; - utf32Left -= i; - - // Do a run of non-ASCII, it copies variable input into 1 output unit. - while ( (utf8Left > 0) && (utf32Left > 0) ) { - size_t len; - UTF32Unit cp; - UTF8Unit inUnit = *utf8Pos; - if ( inUnit <= 0x7F ) break; - CodePoint_from_UTF8_Multi ( utf8Pos, utf8Left, &cp, &len ); - if ( len == 0 ) goto Done; // The input buffer ends in the middle of a character. - UTF32OutSwap ( utf32Pos, cp ); - utf8Left -= len; - utf8Pos += len; - utf32Left -= 1; - utf32Pos += 1; - } - - } - -Done: // Set the output lengths. - *utf8Read = utf8Len - utf8Left; - *utf32Written = utf32Len - utf32Left; - -} // UTF8_to_UTF32Swp - -// ================================================================================================= - -static void UTF16Swp_to_UTF8 ( const UTF16Unit * utf16In, const size_t utf16Len, - UTF8Unit * utf8Out, const size_t utf8Len, - size_t * utf16Read, size_t * utf8Written ) -{ - const UTF16Unit * utf16Pos = utf16In; - UTF8Unit * utf8Pos = utf8Out; - - size_t utf16Left = utf16Len; - size_t utf8Left = utf8Len; - - UC_Assert ( (utf16In != 0) && (utf8Out != 0) && (utf16Read != 0) && (utf8Written != 0) ); - - while ( (utf16Left > 0) && (utf8Left > 0) ) { - - // Do a run of ASCII, it copies 1 input unit into 1 output unit. - size_t i, limit = utf16Left; - if ( limit > utf8Left ) limit = utf8Left; - for ( i = 0; i < limit; ++i ) { - UTF16Unit inUnit = UTF16InSwap(utf16Pos); - if ( inUnit > 0x7F ) break; - *utf8Pos = UTF8Unit(inUnit); - ++utf16Pos; - ++utf8Pos; - } - utf16Left -= i; - utf8Left -= i; - - // Do a run of non-ASCII inside the BMP, it copies 1 input unit into multiple output units. - while ( (utf16Left > 0) && (utf8Left > 0) ) { - size_t len8; - UTF16Unit inUnit = UTF16InSwap(utf16Pos); - if ( inUnit <= 0x7F ) break; - if ( (0xD800 <= inUnit) && (inUnit <= 0xDFFF) ) break; - CodePoint_to_UTF8_Multi ( inUnit, utf8Pos, utf8Left, &len8 ); - if ( len8 == 0 ) goto Done; // Not enough room in the output buffer. - utf16Left -= 1; - utf16Pos += 1; - utf8Left -= len8; - utf8Pos += len8; - } - - // Do a run of surrogate pairs, it copies 2 input units into multiple output units. - while ( (utf16Left > 0) && (utf8Left > 0) ) { - UTF32Unit cp; - size_t len16, len8; - UTF16Unit inUnit = UTF16InSwap(utf16Pos); - if ( (inUnit < 0xD800) || (0xDFFF < inUnit) ) break; - CodePoint_from_UTF16Swp_Surrogate ( utf16Pos, utf16Left, &cp, &len16 ); - if ( len16 == 0 ) goto Done; // The input buffer ends in the middle of a surrogate pair. - UC_Assert ( len16 == 2 ); - CodePoint_to_UTF8_Multi ( cp, utf8Pos, utf8Left, &len8 ); - if ( len8 == 0 ) goto Done; // Not enough room in the output buffer. - utf16Left -= len16; - utf16Pos += len16; - utf8Left -= len8; - utf8Pos += len8; - } - - } - -Done: // Set the output lengths. - *utf16Read = utf16Len - utf16Left; - *utf8Written = utf8Len - utf8Left; - -} // UTF16Swp_to_UTF8 - -// ================================================================================================= - -static void UTF32Swp_to_UTF8 ( const UTF32Unit * utf32In, const size_t utf32Len, - UTF8Unit * utf8Out, const size_t utf8Len, - size_t * utf32Read, size_t * utf8Written ) -{ - const UTF32Unit * utf32Pos = utf32In; - UTF8Unit * utf8Pos = utf8Out; - - size_t utf32Left = utf32Len; - size_t utf8Left = utf8Len; - - UC_Assert ( (utf32In != 0) && (utf8Out != 0) && (utf32Read != 0) && (utf8Written != 0) ); - - while ( (utf32Left > 0) && (utf8Left > 0) ) { - - // Do a run of ASCII, it copies 1 input unit into 1 output unit. - size_t i, limit = utf32Left; - if ( limit > utf8Left ) limit = utf8Left; - for ( i = 0; i < limit; ++i ) { - UTF32Unit cp = UTF32InSwap(utf32Pos); - if ( cp > 0x7F ) break; - *utf8Pos = UTF8Unit(cp); - ++utf32Pos; - ++utf8Pos; - } - utf32Left -= i; - utf8Left -= i; - - // Do a run of non-ASCII, it copies 1 input unit into multiple output units. - while ( (utf32Left > 0) && (utf8Left > 0) ) { - size_t len; - UTF32Unit cp = UTF32InSwap(utf32Pos); - if ( cp <= 0x7F ) break; - CodePoint_to_UTF8_Multi ( cp, utf8Pos, utf8Left, &len ); - if ( len == 0 ) goto Done; // Not enough room in the output buffer. - utf32Left -= 1; - utf32Pos += 1; - utf8Left -= len; - utf8Pos += len; - } - - } - -Done: // Set the output lengths. - *utf32Read = utf32Len - utf32Left; - *utf8Written = utf8Len - utf8Left; - -} // UTF32Swp_to_UTF8 - -// ================================================================================================= - -static void UTF16Swp_to_UTF32Swp ( const UTF16Unit * utf16In, const size_t utf16Len, - UTF32Unit * utf32Out, const size_t utf32Len, - size_t * utf16Read, size_t * utf32Written ) -{ - const UTF16Unit * utf16Pos = utf16In; - UTF32Unit * utf32Pos = utf32Out; - - size_t utf16Left = utf16Len; - size_t utf32Left = utf32Len; - - UC_Assert ( (utf16In != 0) && (utf32Out != 0) && (utf16Read != 0) && (utf32Written != 0) ); - - while ( (utf16Left > 0) && (utf32Left > 0) ) { - - // Do a run of BMP, it copies 1 input unit into 1 output unit. - size_t i, limit = utf16Left; - if ( limit > utf32Left ) limit = utf32Left; - for ( i = 0; i < limit; ++i ) { - UTF16Unit inUnit = UTF16InSwap(utf16Pos); - if ( (0xD800 <= inUnit) && (inUnit <= 0xDFFF) ) break; - *utf32Pos = UTF32Unit(*utf16Pos) << 16; // Better than: UTF32OutSwap ( utf32Pos, inUnit ); - ++utf16Pos; - ++utf32Pos; - } - utf16Left -= i; - utf32Left -= i; - - // Do a run of surrogate pairs, it copies 2 input units into 1 output unit. - while ( (utf16Left > 0) && (utf32Left > 0) ) { - size_t len; - UTF32Unit cp; - UTF16Unit inUnit = UTF16InSwap(utf16Pos); - if ( (inUnit < 0xD800) || (0xDFFF < inUnit) ) break; - CodePoint_from_UTF16Swp_Surrogate ( utf16Pos, utf16Left, &cp, &len ); - if ( len == 0 ) goto Done; // The input buffer ends in the middle of a surrogate pair. - UTF32OutSwap ( utf32Pos, cp ); - UC_Assert ( len == 2 ); - utf16Left -= len; - utf16Pos += len; - utf32Left -= 1; - utf32Pos += 1; - } - - } - -Done: // Set the output lengths. - *utf16Read = utf16Len - utf16Left; - *utf32Written = utf32Len - utf32Left; - -} // UTF16Swp_to_UTF32Swp - -// ================================================================================================= - -static void UTF32Swp_to_UTF16Swp ( const UTF32Unit * utf32In, const size_t utf32Len, - UTF16Unit * utf16Out, const size_t utf16Len, - size_t * utf32Read, size_t * utf16Written ) -{ - const UTF32Unit * utf32Pos = utf32In; - UTF16Unit * utf16Pos = utf16Out; - - size_t utf32Left = utf32Len; - size_t utf16Left = utf16Len; - - const size_t k32to16Offset = swap32to16Offset; // ! Make sure compiler treats as an invariant. - - UC_Assert ( (utf32In != 0) && (utf16Out != 0) && (utf32Read != 0) && (utf16Written != 0) ); - - while ( (utf32Left > 0) && (utf16Left > 0) ) { - - // Do a run of BMP, it copies 1 input unit into 1 output unit. - size_t i, limit = utf32Left; - if ( limit > utf16Left ) limit = utf16Left; - for ( i = 0; i < limit; ++i ) { - UTF32Unit inUnit = UTF32InSwap(utf32Pos); - if ( inUnit > 0xFFFF ) break; - *utf16Pos = *(((UTF16Unit*)utf32Pos) + k32to16Offset); // Better than: UTF16OutSwap ( utf16Pos, UTF16Unit(inUnit) ); - ++utf32Pos; - ++utf16Pos; - } - utf32Left -= i; - utf16Left -= i; - - // Do a run of non-BMP, it copies 1 input unit into 2 output units. - while ( (utf32Left > 0) && (utf16Left > 0) ) { - size_t len; - UTF32Unit inUnit = UTF32InSwap(utf32Pos); - if ( inUnit <= 0xFFFF ) break; - CodePoint_to_UTF16Swp_Surrogate ( inUnit, utf16Pos, utf16Left, &len ); - if ( len == 0 ) goto Done; // Not enough room in the output buffer. - UC_Assert ( len == 2 ); - utf32Left -= 1; - utf32Pos += 1; - utf16Left -= 2; - utf16Pos += 2; - } - - } - -Done: // Set the output lengths. - *utf32Read = utf32Len - utf32Left; - *utf16Written = utf16Len - utf16Left; - -} // UTF32Swp_to_UTF16Swp - -// ================================================================================================= - -static void UTF16Nat_to_UTF32Swp ( const UTF16Unit * utf16In, const size_t utf16Len, - UTF32Unit * utf32Out, const size_t utf32Len, - size_t * utf16Read, size_t * utf32Written ) -{ - const UTF16Unit * utf16Pos = utf16In; - UTF32Unit * utf32Pos = utf32Out; - - size_t utf16Left = utf16Len; - size_t utf32Left = utf32Len; - - UC_Assert ( (utf16In != 0) && (utf32Out != 0) && (utf16Read != 0) && (utf32Written != 0) ); - - while ( (utf16Left > 0) && (utf32Left > 0) ) { - - // Do a run of BMP, it copies 1 input unit into 1 output unit. - size_t i, limit = utf16Left; - if ( limit > utf32Left ) limit = utf32Left; - for ( i = 0; i < limit; ++i ) { - UTF16Unit inUnit = *utf16Pos; - if ( (0xD800 <= inUnit) && (inUnit <= 0xDFFF) ) break; - UTF32OutSwap ( utf32Pos, inUnit ); - ++utf16Pos; - ++utf32Pos; - } - utf16Left -= i; - utf32Left -= i; - - // Do a run of surrogate pairs, it copies 2 input units into 1 output unit. - while ( (utf16Left > 0) && (utf32Left > 0) ) { - size_t len; - UTF32Unit cp; - UTF16Unit inUnit = *utf16Pos; - if ( (inUnit < 0xD800) || (0xDFFF < inUnit) ) break; - CodePoint_from_UTF16Nat_Surrogate ( utf16Pos, utf16Left, &cp, &len ); - if ( len == 0 ) goto Done; // The input buffer ends in the middle of a surrogate pair. - UC_Assert ( len == 2 ); - UTF32OutSwap ( utf32Pos, cp ); - utf16Left -= len; - utf16Pos += len; - utf32Left -= 1; - utf32Pos += 1; - } - - } - -Done: // Set the output lengths. - *utf16Read = utf16Len - utf16Left; - *utf32Written = utf32Len - utf32Left; - -} // UTF16Nat_to_UTF32Swp - -// ================================================================================================= - -static void UTF16Swp_to_UTF32Nat ( const UTF16Unit * utf16In, const size_t utf16Len, - UTF32Unit * utf32Out, const size_t utf32Len, - size_t * utf16Read, size_t * utf32Written ) -{ - const UTF16Unit * utf16Pos = utf16In; - UTF32Unit * utf32Pos = utf32Out; - - size_t utf16Left = utf16Len; - size_t utf32Left = utf32Len; - - UC_Assert ( (utf16In != 0) && (utf32Out != 0) && (utf16Read != 0) && (utf32Written != 0) ); - - while ( (utf16Left > 0) && (utf32Left > 0) ) { - - // Do a run of BMP, it copies 1 input unit into 1 output unit. - size_t i, limit = utf16Left; - if ( limit > utf32Left ) limit = utf32Left; - for ( i = 0; i < limit; ++i ) { - UTF16Unit inUnit = UTF16InSwap(utf16Pos); - if ( (0xD800 <= inUnit) && (inUnit <= 0xDFFF) ) break; - *utf32Pos = inUnit; - ++utf16Pos; - ++utf32Pos; - } - utf16Left -= i; - utf32Left -= i; - - // Do a run of surrogate pairs, it copies 2 input units into 1 output unit. - while ( (utf16Left > 0) && (utf32Left > 0) ) { - size_t len; - UTF16Unit inUnit = UTF16InSwap(utf16Pos); - if ( (inUnit < 0xD800) || (0xDFFF < inUnit) ) break; - CodePoint_from_UTF16Swp_Surrogate ( utf16Pos, utf16Left, utf32Pos, &len ); - if ( len == 0 ) goto Done; // The input buffer ends in the middle of a surrogate pair. - UC_Assert ( len == 2 ); - utf16Left -= len; - utf16Pos += len; - utf32Left -= 1; - utf32Pos += 1; - } - - } - -Done: // Set the output lengths. - *utf16Read = utf16Len - utf16Left; - *utf32Written = utf32Len - utf32Left; - -} // UTF16Swp_to_UTF32Nat - -// ================================================================================================= - -static void UTF32Nat_to_UTF16Swp ( const UTF32Unit * utf32In, const size_t utf32Len, - UTF16Unit * utf16Out, const size_t utf16Len, - size_t * utf32Read, size_t * utf16Written ) -{ - const UTF32Unit * utf32Pos = utf32In; - UTF16Unit * utf16Pos = utf16Out; - - size_t utf32Left = utf32Len; - size_t utf16Left = utf16Len; - - UC_Assert ( (utf32In != 0) && (utf16Out != 0) && (utf32Read != 0) && (utf16Written != 0) ); - - while ( (utf32Left > 0) && (utf16Left > 0) ) { - - // Do a run of BMP, it copies 1 input unit into 1 output unit. - size_t i, limit = utf32Left; - if ( limit > utf16Left ) limit = utf16Left; - for ( i = 0; i < limit; ++i ) { - UTF32Unit inUnit = *utf32Pos; - if ( inUnit > 0xFFFF ) break; - UTF16OutSwap ( utf16Pos, UTF16Unit(inUnit) ); - ++utf32Pos; - ++utf16Pos; - } - utf32Left -= i; - utf16Left -= i; - - // Do a run of non-BMP, it copies 1 input unit into 2 output units. - while ( (utf32Left > 0) && (utf16Left > 0) ) { - size_t len; - UTF32Unit inUnit = *utf32Pos; - if ( inUnit <= 0xFFFF ) break; - CodePoint_to_UTF16Swp_Surrogate ( inUnit, utf16Pos, utf16Left, &len ); - if ( len == 0 ) goto Done; // Not enough room in the output buffer. - UC_Assert ( len == 2 ); - utf32Left -= 1; - utf32Pos += 1; - utf16Left -= 2; - utf16Pos += 2; - } - - } - -Done: // Set the output lengths. - *utf32Read = utf32Len - utf32Left; - *utf16Written = utf16Len - utf16Left; - -} // UTF32Nat_to_UTF16Swp - -// ================================================================================================= - -static void UTF32Swp_to_UTF16Nat ( const UTF32Unit * utf32In, const size_t utf32Len, - UTF16Unit * utf16Out, const size_t utf16Len, - size_t * utf32Read, size_t * utf16Written ) -{ - const UTF32Unit * utf32Pos = utf32In; - UTF16Unit * utf16Pos = utf16Out; - - size_t utf32Left = utf32Len; - size_t utf16Left = utf16Len; - - UC_Assert ( (utf32In != 0) && (utf16Out != 0) && (utf32Read != 0) && (utf16Written != 0) ); - - while ( (utf32Left > 0) && (utf16Left > 0) ) { - - // Do a run of BMP, it copies 1 input unit into 1 output unit. - size_t i, limit = utf32Left; - if ( limit > utf16Left ) limit = utf16Left; - for ( i = 0; i < limit; ++i ) { - UTF32Unit inUnit = UTF32InSwap(utf32Pos); - if ( inUnit > 0xFFFF ) break; - *utf16Pos = UTF16Unit(inUnit); - ++utf32Pos; - ++utf16Pos; - } - utf32Left -= i; - utf16Left -= i; - - // Do a run of non-BMP, it copies 1 input unit into 2 output units. - while ( (utf32Left > 0) && (utf16Left > 0) ) { - size_t len; - UTF32Unit inUnit = UTF32InSwap(utf32Pos); - if ( inUnit <= 0xFFFF ) break; - CodePoint_to_UTF16Nat_Surrogate ( inUnit, utf16Pos, utf16Left, &len ); - if ( len == 0 ) goto Done; // Not enough room in the output buffer. - UC_Assert ( len == 2 ); - utf32Left -= 1; - utf32Pos += 1; - utf16Left -= 2; - utf16Pos += 2; - } - - } - -Done: // Set the output lengths. - *utf32Read = utf32Len - utf32Left; - *utf16Written = utf16Len - utf16Left; - -} // UTF32Swp_to_UTF16Nat - -// ================================================================================================= diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/UnicodeConversions.hpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/UnicodeConversions.hpp deleted file mode 100644 index 08883000bc4..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/UnicodeConversions.hpp +++ /dev/null @@ -1,121 +0,0 @@ -#ifndef __UnicodeConversions_h__ -#define __UnicodeConversions_h__ - -// ================================================================================================= -// Copyright 2004-2007 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#include - -// ================================================================================================= - -#if UnicodeTestBuild - typedef unsigned char UTF8Unit; - typedef unsigned short UTF16Unit; - typedef unsigned long UTF32Unit; -#else - typedef XMP_Uns8 UTF8Unit; - typedef XMP_Uns16 UTF16Unit; - typedef XMP_Uns32 UTF32Unit; -#endif - -// ------------------------------------------------------------------------------------------------- - -// ! The UTF16 and UTF32 counts are in storage units, not bytes! CodePoint values are always native. - -// *** MIght be better to return a status than throw an exception for errors? - -typedef void (*CodePoint_to_UTF16_Proc) ( const UTF32Unit cpIn, UTF16Unit * utf16Out, const size_t utf16Len, size_t * utf16Written ); - -typedef void (*CodePoint_from_UTF16_Proc) ( const UTF16Unit * utf16In, const size_t utf16Len, UTF32Unit * cpOut, size_t * utf16Read ); - -typedef void (*UTF8_to_UTF16_Proc) ( const UTF8Unit * utf8In, const size_t utf8Len, - UTF16Unit * utf16Out, const size_t utf16Len, - size_t * utf8Read, size_t * utf16Written ); - -typedef void (*UTF8_to_UTF32_Proc) ( const UTF8Unit * utf8In, const size_t utf8Len, - UTF32Unit * utf32Out, const size_t utf32Len, - size_t * utf8Read, size_t * utf32Written ); - -typedef void (*UTF16_to_UTF8_Proc) ( const UTF16Unit * utf16In, const size_t utf16Len, - UTF8Unit * utf8Out, const size_t utf8Len, - size_t * utf16Read, size_t * utf8Written ); - -typedef void (*UTF32_to_UTF8_Proc) ( const UTF32Unit * utf32In, const size_t utf32Len, - UTF8Unit * utf8Out, const size_t utf8Len, - size_t * utf32Read, size_t * utf8Written ); - -typedef void (*UTF16_to_UTF32_Proc) ( const UTF16Unit * utf16In, const size_t utf16Len, - UTF32Unit * utf32Out, const size_t utf32Len, - size_t * utf16Read, size_t * utf32Written ); - -typedef void (*UTF32_to_UTF16_Proc) ( const UTF32Unit * utf32In, const size_t utf32Len, - UTF16Unit * utf16Out, const size_t utf16Len, - size_t * utf32Read, size_t * utf16Written ); - -// ------------------------------------------------------------------------------------------------- - -extern void CodePoint_to_UTF8 ( const UTF32Unit cpIn, UTF8Unit * utf8Out, const size_t utf8Len, size_t * utf8Written ); - -extern void CodePoint_from_UTF8 ( const UTF8Unit * utf8In, const size_t utf8Len, UTF32Unit * cpOut, size_t * utf8Read ); - -extern CodePoint_to_UTF16_Proc CodePoint_to_UTF16BE; -extern CodePoint_to_UTF16_Proc CodePoint_to_UTF16LE; - -extern CodePoint_from_UTF16_Proc CodePoint_from_UTF16BE; -extern CodePoint_from_UTF16_Proc CodePoint_from_UTF16LE; - -extern UTF8_to_UTF16_Proc UTF8_to_UTF16BE; -extern UTF8_to_UTF16_Proc UTF8_to_UTF16LE; - -extern UTF8_to_UTF32_Proc UTF8_to_UTF32BE; -extern UTF8_to_UTF32_Proc UTF8_to_UTF32LE; - -extern UTF16_to_UTF8_Proc UTF16BE_to_UTF8; -extern UTF16_to_UTF8_Proc UTF16LE_to_UTF8; - -extern UTF32_to_UTF8_Proc UTF32BE_to_UTF8; -extern UTF32_to_UTF8_Proc UTF32LE_to_UTF8; - -extern UTF8_to_UTF16_Proc UTF8_to_UTF16Native; -extern UTF8_to_UTF32_Proc UTF8_to_UTF32Native; - -extern UTF16_to_UTF8_Proc UTF16Native_to_UTF8; -extern UTF32_to_UTF8_Proc UTF32Native_to_UTF8; - -extern UTF16_to_UTF32_Proc UTF16BE_to_UTF32BE; -extern UTF16_to_UTF32_Proc UTF16BE_to_UTF32LE; - -extern UTF16_to_UTF32_Proc UTF16LE_to_UTF32BE; -extern UTF16_to_UTF32_Proc UTF16LE_to_UTF32LE; - -extern UTF32_to_UTF16_Proc UTF32BE_to_UTF16BE; -extern UTF32_to_UTF16_Proc UTF32BE_to_UTF16LE; - -extern UTF32_to_UTF16_Proc UTF32LE_to_UTF16BE; -extern UTF32_to_UTF16_Proc UTF32LE_to_UTF16LE; - -extern void SwapUTF16 ( const UTF16Unit * utf16In, UTF16Unit * utf16Out, const size_t utf16Len ); -extern void SwapUTF32 ( const UTF32Unit * utf32In, UTF32Unit * utf32Out, const size_t utf32Len ); - -extern void ToUTF16 ( const UTF8Unit * utf8In, size_t utf8Len, std::string * utf16Str, bool bigEndian ); -extern void ToUTF32 ( const UTF8Unit * utf8In, size_t utf8Len, std::string * utf32Str, bool bigEndian ); - -extern void FromUTF16 ( const UTF16Unit * utf16In, size_t utf16Len, std::string * utf8Str, bool bigEndian ); -extern void FromUTF32 ( const UTF32Unit * utf32In, size_t utf32Len, std::string * utf8Str, bool bigEndian ); - -extern void ToUTF16Native ( const UTF8Unit * utf8In, size_t utf8Len, std::string * utf16Str ); -extern void ToUTF32Native ( const UTF8Unit * utf8In, size_t utf8Len, std::string * utf32Str ); - -extern void FromUTF16Native ( const UTF16Unit * utf16In, size_t utf16Len, std::string * utf8Str ); -extern void FromUTF32Native ( const UTF32Unit * utf32In, size_t utf32Len, std::string * utf8Str ); - -extern void InitializeUnicodeConversions(); - -// ================================================================================================= - -#endif // __UnicodeConversions_h__ diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/UnicodeInlines.incl_cpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/UnicodeInlines.incl_cpp deleted file mode 100644 index 8d55bad319b..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/UnicodeInlines.incl_cpp +++ /dev/null @@ -1,129 +0,0 @@ -#ifndef __UnicodeInlines_incl_cpp__ -#define __UnicodeInlines_incl_cpp__ - -// ================================================================================================= -// Copyright 2002-2007 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#include "UnicodeConversions.hpp" - -// ================================================================================================= -// Inner loop utilities that need to be inlined. -// ================================================================================================= - -static inline XMP_Uns32 GetCodePoint ( const XMP_Uns8 ** utf8Str_io ) -{ - const XMP_Uns8 * u8Ptr = *utf8Str_io; - XMP_Uns32 cp; - size_t u8Len; - CodePoint_from_UTF8 ( u8Ptr, 4, &cp, &u8Len ); // Throws an exception for errors. - *utf8Str_io = u8Ptr + u8Len; - return cp; -} - -// ================================================================================================= - -static inline bool IsStartChar_ASCII ( XMP_Uns32 cp ) -{ - // ASCII starting characters for an XML name. - if ( (('a' <= cp) && (cp <= 'z')) || (('A' <= cp) && (cp <= 'Z')) || (cp == '_') ) return true; - return false; -} - -// ------------------------------------------------------------------------------------------------- - -static inline bool IsStartChar_NonASCII ( XMP_Uns32 cp ) -{ - // Non-ASCII starting characters for an XML name. - - if ( ((0xC0 <= cp) && (cp <= 0xD6)) || ((0xD8 <= cp) && (cp <= 0xF6)) ) return true; - if ( ((0xF8 <= cp) && (cp <= 0x2FF)) || ((0x370 <= cp) && (cp <= 0x37D)) ) return true; - - if ( ((0x37F <= cp) && (cp <= 0x1FFF)) || ((0x200C <= cp) && (cp <= 0x200D)) ) return true; - if ( ((0x2070 <= cp) && (cp <= 0x218F)) || ((0x2C00 <= cp) && (cp <= 0x2FEF)) ) return true; - if ( ((0x3001 <= cp) && (cp <= 0xD7FF)) || ((0xF900 <= cp) && (cp <= 0xFDCF)) ) return true; - if ( ((0xFDF0 <= cp) && (cp <= 0xFFFD)) || ((0x10000 <= cp) && (cp <= 0xEFFFF)) ) return true; - - return false; - -} - -// ------------------------------------------------------------------------------------------------- - -static inline bool IsOtherChar_ASCII ( XMP_Uns32 cp ) -{ - // ASCII following characters for an XML name. - if ( (('0' <= cp) && (cp <= '9')) || (cp == '-') || (cp == '.') ) return true; - return false; -} - -// ------------------------------------------------------------------------------------------------- - -static inline bool IsOtherChar_NonASCII ( XMP_Uns32 cp ) -{ - // Non-ASCII following characters for an XML name. - if ( (cp == 0xB7) || ((0x300 <= cp) && (cp <= 0x36F)) || ((0x203F <= cp) && (cp <= 0x2040)) ) return true; - return false; -} - -// ------------------------------------------------------------------------------------------------- - -static inline void VerifyUTF8 ( XMP_StringPtr str ) -{ - const XMP_Uns8 * utf8Str = (XMP_Uns8*)str; - while ( *utf8Str != 0 ) { - while ( (*utf8Str != 0) && (*utf8Str < 0x80) ) ++utf8Str; - if ( *utf8Str >= 0x80 ) (void) GetCodePoint ( &utf8Str ); // Throws for bad UTF-8. - } -} - -// ------------------------------------------------------------------------------------------------- - -static inline void VerifySimpleXMLName ( XMP_StringPtr _nameStart, XMP_StringPtr _nameEnd ) -{ - - const XMP_Uns8 * nameStart = (const XMP_Uns8 *) _nameStart; - const XMP_Uns8 * nameEnd = (const XMP_Uns8 *) _nameEnd; - const XMP_Uns8 * namePos = nameStart; - XMP_Uns32 cp; - - // The first character is more restricted. - - if ( nameStart >= nameEnd ) XMP_Throw ( "Empty XML name", kXMPErr_BadXPath ); - - cp = *namePos; - if ( cp < 0x80 ) { - ++namePos; - if ( ! IsStartChar_ASCII(cp) ) goto NameError; - } else { - cp = GetCodePoint ( &namePos ); - if ( ! IsStartChar_NonASCII(cp) ) goto NameError; - } - - // Check the rest of the name. - - while ( namePos < nameEnd ) { - cp = *namePos; - if ( cp < 0x80 ) { - ++namePos; - if ( (! IsStartChar_ASCII(cp)) && (! IsOtherChar_ASCII(cp)) ) goto NameError; - } else { - cp = GetCodePoint ( &namePos ); - if ( (! IsStartChar_NonASCII(cp)) && (! IsOtherChar_NonASCII(cp)) ) goto NameError; - } - } - - return; - -NameError: - XMP_Throw ( "Bad XML name", kXMPErr_BadXPath ); - -} // VerifySimpleXMLName - -// ================================================================================================= - -#endif // __UnicodeInlines_incl_cpp__ diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/WXMPIterator.cpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/WXMPIterator.cpp deleted file mode 100644 index 4c47b0d31e6..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/WXMPIterator.cpp +++ /dev/null @@ -1,188 +0,0 @@ -// ================================================================================================= -// Copyright 2002-2007 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#include "XMP_Environment.h" // ! This must be the first include! -#include "XMPCore_Impl.hpp" - -#include "XMPIterator.hpp" -#include "client-glue/WXMPIterator.hpp" - -#if XMP_WinBuild -# ifdef _MSC_VER - #pragma warning ( disable : 4101 ) // unreferenced local variable - #pragma warning ( disable : 4189 ) // local variable is initialized but not referenced - #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) - #if XMP_DebugBuild - #pragma warning ( disable : 4297 ) // function assumed not to throw an exception but does -# endif -# endif -#endif - -#if __cplusplus -extern "C" { -#endif - -// ================================================================================================= -// CTor/DTor Wrappers -// ================== - -void -WXMPIterator_PropCTor_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_OptionBits options, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPIterator_PropCTor_1" ) - - if ( schemaNS == 0 ) schemaNS = ""; - if ( propName == 0 ) propName = ""; - - const XMPMeta & xmpObj = WtoXMPMeta_Ref ( xmpRef ); - XMPIterator * iter = new XMPIterator ( xmpObj, schemaNS, propName, options ); - ++iter->clientRefs; - XMP_Assert ( iter->clientRefs == 1 ); - wResult->ptrResult = XMPIteratorRef ( iter ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPIterator_TableCTor_1 ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_OptionBits options, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPIterator_TableCTor_1" ) - - if ( schemaNS == 0 ) schemaNS = ""; - if ( propName == 0 ) propName = ""; - - XMPIterator * iter = new XMPIterator ( schemaNS, propName, options ); - ++iter->clientRefs; - XMP_Assert ( iter->clientRefs == 1 ); - wResult->ptrResult = XMPIteratorRef ( iter ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPIterator_IncrementRefCount_1 ( XMPIteratorRef iterRef ) -{ - WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro. - XMP_ENTER_WRAPPER ( "WXMPIterator_IncrementRefCount_1" ) - - XMPIterator * thiz = (XMPIterator*)iterRef; - - ++thiz->clientRefs; - XMP_Assert ( thiz->clientRefs > 1 ); - - XMP_EXIT_WRAPPER_NO_THROW -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPIterator_DecrementRefCount_1 ( XMPIteratorRef iterRef ) -{ - WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro. - XMP_ENTER_WRAPPER ( "WXMPIterator_DecrementRefCount_1" ) - - XMPIterator * thiz = (XMPIterator*)iterRef; - - XMP_Assert ( thiz->clientRefs > 0 ); - --thiz->clientRefs; - if ( thiz->clientRefs <= 0 ) delete ( thiz ); - - XMP_EXIT_WRAPPER_NO_THROW -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPIterator_Unlock_1 ( XMP_OptionBits options ) -{ - WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro. - XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPIterator_Unlock_1" ) - - XMPIterator::Unlock ( options ); - - XMP_EXIT_WRAPPER_NO_THROW -} - -// ================================================================================================= -// Class Method Wrappers -// ===================== - -void -WXMPIterator_Next_1 ( XMPIteratorRef iterRef, - XMP_StringPtr * schemaNS, - XMP_StringLen * nsSize, - XMP_StringPtr * propPath, - XMP_StringLen * pathSize, - XMP_StringPtr * propValue, - XMP_StringLen * valueSize, - XMP_OptionBits * propOptions, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPIterator_Next_1" ) - - if ( schemaNS == 0 ) schemaNS = &voidStringPtr; - if ( nsSize == 0 ) nsSize = &voidStringLen; - if ( propPath == 0 ) propPath = &voidStringPtr; - if ( pathSize == 0 ) pathSize = &voidStringLen; - if ( propValue == 0 ) propValue = &voidStringPtr; - if ( valueSize == 0 ) valueSize = &voidStringLen; - if ( propOptions == 0 ) propOptions = &voidOptionBits; - - XMPIterator * iter = WtoXMPIterator_Ptr ( iterRef ); - XMP_Bool found = iter->Next ( schemaNS, nsSize, propPath, pathSize, propValue, valueSize, propOptions ); - wResult->int32Result = found; - - XMP_EXIT_WRAPPER_KEEP_LOCK ( found ) -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPIterator_Skip_1 ( XMPIteratorRef iterRef, - XMP_OptionBits options, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPIterator_Skip_1" ) - - XMPIterator * iter = WtoXMPIterator_Ptr ( iterRef ); - iter->Skip ( options ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPUtils_UnlockIter_1 ( XMPIteratorRef iterRef, - XMP_OptionBits options ) -{ - WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro. - XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_UnlockIter_1" ) - - XMPIterator * iter = WtoXMPIterator_Ptr ( iterRef ); - iter->UnlockIter ( options ); - - XMP_EXIT_WRAPPER_NO_THROW -} - -// ================================================================================================= - -#if __cplusplus -} /* extern "C" */ -#endif diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/WXMPMeta.cpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/WXMPMeta.cpp deleted file mode 100644 index 7969233885d..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/WXMPMeta.cpp +++ /dev/null @@ -1,1310 +0,0 @@ -// ================================================================================================= -// Copyright 2002-2008 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#include "XMP_Environment.h" // ! This must be the first include! -#include "XMPCore_Impl.hpp" - -#include "XMPMeta.hpp" -#include "client-glue/WXMPMeta.hpp" - -#if XMP_WinBuild - #ifdef _MSC_VER - #pragma warning ( disable : 4101 ) // unreferenced local variable - #pragma warning ( disable : 4189 ) // local variable is initialized but not referenced - #pragma warning ( disable : 4702 ) // unreachable code - #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) - #if XMP_DebugBuild - #pragma warning ( disable : 4297 ) // function assumed not to throw an exception but does - #endif - #endif -#endif - -#if __cplusplus -extern "C" { -#endif - -// ================================================================================================= -// Init/Term Wrappers -// ================== - -/* class static */ void -WXMPMeta_GetVersionInfo_1 ( XMP_VersionInfo * info ) -{ - WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro. - XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPMeta_GetVersionInfo_1" ) - - XMPMeta::GetVersionInfo ( info ); - - XMP_EXIT_WRAPPER_NO_THROW -} - -// ------------------------------------------------------------------------------------------------- - -/* class static */ void -WXMPMeta_Initialize_1 ( WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPMeta_Initialize_1" ) - - bool ok = XMPMeta::Initialize(); - wResult->int32Result = ok; - - XMP_EXIT_WRAPPER -} -// ------------------------------------------------------------------------------------------------- - -/* class static */ void -WXMPMeta_Terminate_1() -{ - WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro. - XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPMeta_Terminate_1" ) - - XMPMeta::Terminate(); - - XMP_EXIT_WRAPPER_NO_THROW -} - -// ================================================================================================= -// CTor/DTor Wrappers -// ================== - -void -WXMPMeta_CTor_1 ( WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_CTor_1" ) - - XMPMeta * xmpObj = new XMPMeta(); - ++xmpObj->clientRefs; - XMP_Assert ( xmpObj->clientRefs == 1 ); - wResult->ptrResult = XMPMetaRef ( xmpObj ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_IncrementRefCount_1 ( XMPMetaRef xmpRef ) -{ - WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro. - XMP_ENTER_WRAPPER ( "WXMPMeta_IncrementRefCount_1" ) - - XMPMeta * thiz = (XMPMeta*)xmpRef; - - ++thiz->clientRefs; - XMP_Assert ( thiz->clientRefs > 0 ); - - XMP_EXIT_WRAPPER_NO_THROW -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_DecrementRefCount_1 ( XMPMetaRef xmpRef ) -{ - WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro. - XMP_ENTER_WRAPPER ( "WXMPMeta_DecrementRefCount_1" ) - - XMPMeta * thiz = (XMPMeta*)xmpRef; - - XMP_Assert ( thiz->clientRefs > 0 ); - --thiz->clientRefs; - if ( thiz->clientRefs <= 0 ) delete ( thiz ); - - XMP_EXIT_WRAPPER_NO_THROW -} - -// ================================================================================================= -// Class Static Wrappers -// ===================== -// -// These are DLL-entry wrappers for class-static functions. They all follow a simple pattern: -// -// try -// acquire toolbox lock -// validate parameters -// call through to the implementation -// retain toolbox lock if necessary -// catch anything and return an appropriate XMP_Error object -// return null (no error if we get to here) -// -// The toolbox lock is acquired through a local wrapper object that automatically unlocks when the -// try-block is exited. The lock must be retained if the function is returning a string result. The -// output string is owned by the toolkit, the client must copy the string then release the lock. -// The lock used here is the overall toolkit lock. For simplicity at this time the lock is a simple -// mutual exclusion lock, we do not allow multiple concurrent readers. -// -// The one exception to this model is UnlockToolkit. It does not acquire the toolkit lock since this -// is the function the client calls to release the lock after copying an output string! -// -// ================================================================================================= - -/* class static */ void -WXMPMeta_GetGlobalOptions_1 ( WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_GetGlobalOptions_1" ) - - XMP_OptionBits options = XMPMeta::GetGlobalOptions(); - wResult->int32Result = options; - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -/* class static */ void -WXMPMeta_SetGlobalOptions_1 ( XMP_OptionBits options, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_SetGlobalOptions_1" ) - - XMPMeta::SetGlobalOptions ( options ); - - XMP_EXIT_WRAPPER -} -// ------------------------------------------------------------------------------------------------- - -/* class static */ void -WXMPMeta_DumpNamespaces_1 ( XMP_TextOutputProc outProc, - void * refCon, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_DumpNamespaces_1" ) - - if ( outProc == 0 ) XMP_Throw ( "Null client output routine", kXMPErr_BadParam ); - - XMP_Status status = XMPMeta::DumpNamespaces ( outProc, refCon ); - wResult->int32Result = status; - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -/* class static */ void -WXMPMeta_DumpAliases_1 ( XMP_TextOutputProc outProc, - void * refCon, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_DumpAliases_1" ) - - if ( outProc == 0 ) XMP_Throw ( "Null client output routine", kXMPErr_BadParam ); - - XMP_Status status = XMPMeta::DumpAliases ( outProc, refCon ); - wResult->int32Result = status; - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -/* class static */ void -WXMPMeta_Unlock_1 ( XMP_OptionBits options ) -{ - WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro. - XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPMeta_Unlock_1" ) - - XMPMeta::Unlock ( options ); - - XMP_EXIT_WRAPPER_NO_THROW -} - -// ------------------------------------------------------------------------------------------------- - -/* class static */ void -WXMPMeta_RegisterNamespace_1 ( XMP_StringPtr namespaceURI, - XMP_StringPtr prefix, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_RegisterNamespace_1" ) - - if ( (namespaceURI == 0) || (*namespaceURI == 0) ) XMP_Throw ( "Empty namespace URI", kXMPErr_BadSchema ); - if ( (prefix == 0) || (*prefix == 0) ) XMP_Throw ( "Empty prefix", kXMPErr_BadSchema ); - - XMPMeta::RegisterNamespace ( namespaceURI, prefix ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -/* class static */ void -WXMPMeta_GetNamespacePrefix_1 ( XMP_StringPtr namespaceURI, - XMP_StringPtr * namespacePrefix, - XMP_StringLen * prefixSize, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_GetNamespacePrefix_1" ) - - if ( (namespaceURI == 0) || (*namespaceURI == 0) ) XMP_Throw ( "Empty namespace URI", kXMPErr_BadSchema ); - - if ( namespacePrefix == 0 ) namespacePrefix = &voidStringPtr; - if ( prefixSize == 0 ) prefixSize = &voidStringLen; - - bool found = XMPMeta::GetNamespacePrefix ( namespaceURI, namespacePrefix, prefixSize ); - wResult->int32Result = found; - - XMP_EXIT_WRAPPER_KEEP_LOCK ( found ) -} - -// ------------------------------------------------------------------------------------------------- - -/* class static */ void -WXMPMeta_GetNamespaceURI_1 ( XMP_StringPtr namespacePrefix, - XMP_StringPtr * namespaceURI, - XMP_StringLen * uriSize, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_GetNamespaceURI_1" ) - - if ( (namespacePrefix == 0) || (*namespacePrefix == 0) ) XMP_Throw ( "Empty namespace prefix", kXMPErr_BadSchema ); - - if ( namespaceURI == 0 ) namespaceURI = &voidStringPtr; - if ( uriSize == 0 ) uriSize = &voidStringLen; - - bool found = XMPMeta::GetNamespaceURI ( namespacePrefix, namespaceURI, uriSize ); - wResult->int32Result = found; - - XMP_EXIT_WRAPPER_KEEP_LOCK ( found ) -} - -// ------------------------------------------------------------------------------------------------- - -/* class static */ void -WXMPMeta_DeleteNamespace_1 ( XMP_StringPtr namespaceURI, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_DeleteNamespace_1" ) - - if ( (namespaceURI == 0) || (*namespaceURI == 0) ) XMP_Throw ( "Empty namespace URI", kXMPErr_BadSchema ); - - XMPMeta::DeleteNamespace ( namespaceURI ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -/* class static */ void -WXMPMeta_RegisterAlias_1 ( XMP_StringPtr aliasNS, - XMP_StringPtr aliasProp, - XMP_StringPtr actualNS, - XMP_StringPtr actualProp, - XMP_OptionBits arrayForm, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_RegisterAlias_1" ) - - if ( (aliasNS == 0) || (*aliasNS == 0) ) XMP_Throw ( "Empty alias namespace URI", kXMPErr_BadSchema ); - if ( (aliasProp == 0) || (*aliasProp == 0) ) XMP_Throw ( "Empty alias property name", kXMPErr_BadXPath ); - if ( (actualNS == 0) || (*actualNS == 0) ) XMP_Throw ( "Empty actual namespace URI", kXMPErr_BadSchema ); - if ( (actualProp == 0) || (*actualProp == 0) ) XMP_Throw ( "Empty actual property name", kXMPErr_BadXPath ); - - XMPMeta::RegisterAlias ( aliasNS, aliasProp, actualNS, actualProp, arrayForm ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -/* class static */ void -WXMPMeta_ResolveAlias_1 ( XMP_StringPtr aliasNS, - XMP_StringPtr aliasProp, - XMP_StringPtr * actualNS, - XMP_StringLen * nsSize, - XMP_StringPtr * actualProp, - XMP_StringLen * propSize, - XMP_OptionBits * arrayForm, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_ResolveAlias_1" ) - - if ( (aliasNS == 0) || (*aliasNS == 0) ) XMP_Throw ( "Empty alias namespace URI", kXMPErr_BadSchema ); - if ( (aliasProp == 0) || (*aliasProp == 0) ) XMP_Throw ( "Empty alias property name", kXMPErr_BadXPath ); - - if ( actualNS == 0 ) actualNS = &voidStringPtr; - if ( nsSize == 0 ) nsSize = &voidStringLen; - if ( actualProp == 0 ) actualProp = &voidStringPtr; - if ( propSize == 0 ) propSize = &voidStringLen; - if ( arrayForm == 0 ) arrayForm = &voidOptionBits; - - bool found = XMPMeta::ResolveAlias ( aliasNS, aliasProp, actualNS, nsSize, actualProp, propSize, arrayForm ); - wResult->int32Result = found; - - XMP_EXIT_WRAPPER_KEEP_LOCK ( found ) -} - -// ------------------------------------------------------------------------------------------------- - -/* class static */ void -WXMPMeta_DeleteAlias_1 ( XMP_StringPtr aliasNS, - XMP_StringPtr aliasProp, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_DeleteAlias_1" ) - - if ( (aliasNS == 0) || (*aliasNS == 0) ) XMP_Throw ( "Empty alias namespace URI", kXMPErr_BadSchema ); - if ( (aliasProp == 0) || (*aliasProp == 0) ) XMP_Throw ( "Empty alias property name", kXMPErr_BadXPath ); - - XMPMeta::DeleteAlias ( aliasNS, aliasProp ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -/* class static */ void -WXMPMeta_RegisterStandardAliases_1 ( XMP_StringPtr schemaNS, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_RegisterStandardAliases_1" ) - - if ( schemaNS == 0 ) schemaNS = ""; - - XMPMeta::RegisterStandardAliases ( schemaNS ); - - XMP_EXIT_WRAPPER -} - -// ================================================================================================= -// Class Method Wrappers -// ===================== -// -// These are DLL-entry wrappers for the methods. They all follow a simple pattern: -// -// validate parameters -// try -// acquire object lock -// call through to the implementation -// retain object lock if necessary -// catch anything and return an appropriate XMP_Error object -// return null (no error if we get to here) -// -// The object lock is acquired through a local wrapper object that automatically unlocks when the -// try-block is exited. The lock must be retained if the function is returning a string result. The -// output string is owned by the object, the client must copy the string then release the lock. The -// lock used here is the per-object lock. For simplicity at this time the lock is a simple mutual -// exclusion lock, we do not allow multiple concurrent readers. -// -// The one exception to this model is UnlockObject. It does not acquire the object lock since this -// is the function the client calls to release the lock after copying an output string! -// -// ================================================================================================= - -void -WXMPMeta_GetProperty_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr * propValue, - XMP_StringLen * valueSize, - XMP_OptionBits * options, - WXMP_Result * wResult ) /* const */ -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_GetProperty_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); - - if ( propValue == 0 ) propValue = &voidStringPtr; - if ( valueSize == 0 ) valueSize = &voidStringLen; - if ( options == 0 ) options = &voidOptionBits; - - const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); - bool found = meta.GetProperty ( schemaNS, propName, propValue, valueSize, options ); - wResult->int32Result = found; - - XMP_EXIT_WRAPPER_KEEP_LOCK ( found ) -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_GetArrayItem_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - XMP_StringPtr * itemValue, - XMP_StringLen * valueSize, - XMP_OptionBits * options, - WXMP_Result * wResult ) /* const */ -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_GetArrayItem_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); - - if ( itemValue == 0 ) itemValue = &voidStringPtr; - if ( valueSize == 0 ) valueSize = &voidStringLen; - if ( options == 0 ) options = &voidOptionBits; - - const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); - bool found = meta.GetArrayItem ( schemaNS, arrayName, itemIndex, itemValue, valueSize, options ); - wResult->int32Result = found; - - XMP_EXIT_WRAPPER_KEEP_LOCK ( found ) -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_GetStructField_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - XMP_StringPtr * fieldValue, - XMP_StringLen * valueSize, - XMP_OptionBits * options, - WXMP_Result * wResult ) /* const */ -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_GetStructField_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (structName == 0) || (*structName == 0) ) XMP_Throw ( "Empty struct name", kXMPErr_BadXPath ); - if ( (fieldNS == 0) || (*fieldNS == 0) ) XMP_Throw ( "Empty field namespace URI", kXMPErr_BadSchema ); - if ( (fieldName == 0) || (*fieldName == 0) ) XMP_Throw ( "Empty field name", kXMPErr_BadXPath ); - - if ( fieldValue == 0 ) fieldValue = &voidStringPtr; - if ( valueSize == 0 ) valueSize = &voidStringLen; - if ( options == 0 ) options = &voidOptionBits; - - const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); - bool found = meta.GetStructField ( schemaNS, structName, fieldNS, fieldName, fieldValue, valueSize, options ); - wResult->int32Result = found; - - XMP_EXIT_WRAPPER_KEEP_LOCK ( found ) -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_GetQualifier_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - XMP_StringPtr * qualValue, - XMP_StringLen * valueSize, - XMP_OptionBits * options, - WXMP_Result * wResult ) /* const */ -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_GetQualifier_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); - if ( (qualNS == 0) || (*qualNS == 0) ) XMP_Throw ( "Empty qualifier namespace URI", kXMPErr_BadSchema ); - if ( (qualName == 0) || (*qualName == 0) ) XMP_Throw ( "Empty qualifier name", kXMPErr_BadXPath ); - - if ( qualValue == 0 ) qualValue = &voidStringPtr; - if ( valueSize == 0 ) valueSize = &voidStringLen; - if ( options == 0 ) options = &voidOptionBits; - - const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); - bool found = meta.GetQualifier ( schemaNS, propName, qualNS, qualName, qualValue, valueSize, options ); - wResult->int32Result = found; - - XMP_EXIT_WRAPPER_KEEP_LOCK ( found ) -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_SetProperty_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr propValue, - XMP_OptionBits options, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_SetProperty_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); - - XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); - meta->SetProperty ( schemaNS, propName, propValue, options ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_SetArrayItem_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - XMP_StringPtr itemValue, - XMP_OptionBits options, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_SetArrayItem_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); - - XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); - meta->SetArrayItem ( schemaNS, arrayName, itemIndex, itemValue, options ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_AppendArrayItem_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_OptionBits arrayOptions, - XMP_StringPtr itemValue, - XMP_OptionBits options, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_AppendArrayItem_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); - - XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); - meta->AppendArrayItem ( schemaNS, arrayName, arrayOptions, itemValue, options ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_SetStructField_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - XMP_StringPtr fieldValue, - XMP_OptionBits options, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_SetStructField_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (structName == 0) || (*structName == 0) ) XMP_Throw ( "Empty struct name", kXMPErr_BadXPath ); - if ( (fieldNS == 0) || (*fieldNS == 0) ) XMP_Throw ( "Empty field namespace URI", kXMPErr_BadSchema ); - if ( (fieldName == 0) || (*fieldName == 0) ) XMP_Throw ( "Empty field name", kXMPErr_BadXPath ); - - XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); - meta->SetStructField ( schemaNS, structName, fieldNS, fieldName, fieldValue, options ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_SetQualifier_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - XMP_StringPtr qualValue, - XMP_OptionBits options, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_SetQualifier_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); - if ( (qualNS == 0) || (*qualNS == 0) ) XMP_Throw ( "Empty qualifier namespace URI", kXMPErr_BadSchema ); - if ( (qualName == 0) || (*qualName == 0) ) XMP_Throw ( "Empty qualifier name", kXMPErr_BadXPath ); - - XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); - meta->SetQualifier ( schemaNS, propName, qualNS, qualName, qualValue, options ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_DeleteProperty_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_DeleteProperty_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); - - XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); - meta->DeleteProperty ( schemaNS, propName ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_DeleteArrayItem_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_DeleteArrayItem_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); - - XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); - meta->DeleteArrayItem ( schemaNS, arrayName, itemIndex ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_DeleteStructField_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_DeleteStructField_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (structName == 0) || (*structName == 0) ) XMP_Throw ( "Empty struct name", kXMPErr_BadXPath ); - if ( (fieldNS == 0) || (*fieldNS == 0) ) XMP_Throw ( "Empty field namespace URI", kXMPErr_BadSchema ); - if ( (fieldName == 0) || (*fieldName == 0) ) XMP_Throw ( "Empty field name", kXMPErr_BadXPath ); - - XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); - meta->DeleteStructField ( schemaNS, structName, fieldNS, fieldName ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_DeleteQualifier_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_DeleteQualifier_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); - if ( (qualNS == 0) || (*qualNS == 0) ) XMP_Throw ( "Empty qualifier namespace URI", kXMPErr_BadSchema ); - if ( (qualName == 0) || (*qualName == 0) ) XMP_Throw ( "Empty qualifier name", kXMPErr_BadXPath ); - - XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); - meta->DeleteQualifier ( schemaNS, propName, qualNS, qualName ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_DoesPropertyExist_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - WXMP_Result * wResult ) /* const */ -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_DoesPropertyExist_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); - - const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); - bool found = meta.DoesPropertyExist ( schemaNS, propName ); - wResult->int32Result = found; - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_DoesArrayItemExist_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - WXMP_Result * wResult ) /* const */ -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_DoesArrayItemExist_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); - - const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); - bool found = meta.DoesArrayItemExist ( schemaNS, arrayName, itemIndex ); - wResult->int32Result = found; - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_DoesStructFieldExist_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - WXMP_Result * wResult ) /* const */ -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_DoesStructFieldExist_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (structName == 0) || (*structName == 0) ) XMP_Throw ( "Empty struct name", kXMPErr_BadXPath ); - if ( (fieldNS == 0) || (*fieldNS == 0) ) XMP_Throw ( "Empty field namespace URI", kXMPErr_BadSchema ); - if ( (fieldName == 0) || (*fieldName == 0) ) XMP_Throw ( "Empty field name", kXMPErr_BadXPath ); - - const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); - bool found = meta.DoesStructFieldExist ( schemaNS, structName, fieldNS, fieldName ); - wResult->int32Result = found; - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_DoesQualifierExist_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - WXMP_Result * wResult ) /* const */ -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_DoesQualifierExist_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); - if ( (qualNS == 0) || (*qualNS == 0) ) XMP_Throw ( "Empty qualifier namespace URI", kXMPErr_BadSchema ); - if ( (qualName == 0) || (*qualName == 0) ) XMP_Throw ( "Empty qualifier name", kXMPErr_BadXPath ); - - const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); - bool found = meta.DoesQualifierExist ( schemaNS, propName, qualNS, qualName ); - wResult->int32Result = found; - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_GetLocalizedText_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr genericLang, - XMP_StringPtr specificLang, - XMP_StringPtr * actualLang, - XMP_StringLen * langSize, - XMP_StringPtr * itemValue, - XMP_StringLen * valueSize, - XMP_OptionBits * options, - WXMP_Result * wResult ) /* const */ -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_GetLocalizedText_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); - if ( genericLang == 0 ) genericLang = ""; - if ( (specificLang == 0) ||(*specificLang == 0) ) XMP_Throw ( "Empty specific language", kXMPErr_BadParam ); - - if ( actualLang == 0 ) actualLang = &voidStringPtr; - if ( langSize == 0 ) langSize = &voidStringLen; - if ( itemValue == 0 ) itemValue = &voidStringPtr; - if ( valueSize == 0 ) valueSize = &voidStringLen; - if ( options == 0 ) options = &voidOptionBits; - - const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); - bool found = meta.GetLocalizedText ( schemaNS, arrayName, genericLang, specificLang, - actualLang, langSize, itemValue, valueSize, options ); - wResult->int32Result = found; - - XMP_EXIT_WRAPPER_KEEP_LOCK ( found ) -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_SetLocalizedText_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr genericLang, - XMP_StringPtr specificLang, - XMP_StringPtr itemValue, - XMP_OptionBits options, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_SetLocalizedText_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); - if ( genericLang == 0 ) genericLang = ""; - if ( (specificLang == 0) ||(*specificLang == 0) ) XMP_Throw ( "Empty specific language", kXMPErr_BadParam ); - if ( itemValue == 0 ) itemValue = ""; - - XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); - meta->SetLocalizedText ( schemaNS, arrayName, genericLang, specificLang, itemValue, options ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_GetProperty_Bool_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_Bool * propValue, - XMP_OptionBits * options, - WXMP_Result * wResult ) /* const */ -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_GetProperty_Bool_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); - - if ( propValue == 0 ) propValue = &voidByte; - if ( options == 0 ) options = &voidOptionBits; - - const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); - bool value; - bool found = meta.GetProperty_Bool ( schemaNS, propName, &value, options ); - if ( propValue != 0 ) *propValue = value; - wResult->int32Result = found; - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_GetProperty_Int_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_Int32 * propValue, - XMP_OptionBits * options, - WXMP_Result * wResult ) /* const */ -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_GetProperty_Int_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); - - if ( propValue == 0 ) propValue = &voidInt32; - if ( options == 0 ) options = &voidOptionBits; - - const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); - bool found = meta.GetProperty_Int ( schemaNS, propName, propValue, options ); - wResult->int32Result = found; - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_GetProperty_Int64_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_Int64 * propValue, - XMP_OptionBits * options, - WXMP_Result * wResult ) /* const */ -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_GetProperty_Int64_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); - - if ( propValue == 0 ) propValue = &voidInt64; - if ( options == 0 ) options = &voidOptionBits; - - const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); - bool found = meta.GetProperty_Int64 ( schemaNS, propName, propValue, options ); - wResult->int32Result = found; - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_GetProperty_Float_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - double * propValue, - XMP_OptionBits * options, - WXMP_Result * wResult ) /* const */ -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_GetProperty_Float_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); - - if ( propValue == 0 ) propValue = &voidDouble; - if ( options == 0 ) options = &voidOptionBits; - - const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); - bool found = meta.GetProperty_Float ( schemaNS, propName, propValue, options ); - wResult->int32Result = found; - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_GetProperty_Date_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_DateTime * propValue, - XMP_OptionBits * options, - WXMP_Result * wResult ) /* const */ -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_GetProperty_Date_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); - - if ( propValue == 0 ) propValue = &voidDateTime; - if ( options == 0 ) options = &voidOptionBits; - - const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); - bool found = meta.GetProperty_Date ( schemaNS, propName, propValue, options ); - wResult->int32Result = found; - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_SetProperty_Bool_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_Bool propValue, - XMP_OptionBits options, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_SetProperty_Bool_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); - - XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); - meta->SetProperty_Bool ( schemaNS, propName, propValue, options ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_SetProperty_Int_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_Int32 propValue, - XMP_OptionBits options, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_SetProperty_Int_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); - - XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); - meta->SetProperty_Int ( schemaNS, propName, propValue, options ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_SetProperty_Int64_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_Int64 propValue, - XMP_OptionBits options, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_SetProperty_Int64_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); - - XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); - meta->SetProperty_Int64 ( schemaNS, propName, propValue, options ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_SetProperty_Float_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - double propValue, - XMP_OptionBits options, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_SetProperty_Float_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); - - XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); - meta->SetProperty_Float ( schemaNS, propName, propValue, options ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_SetProperty_Date_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - const XMP_DateTime & propValue, - XMP_OptionBits options, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_SetProperty_Date_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); - - XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); - meta->SetProperty_Date ( schemaNS, propName, propValue, options ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_DumpObject_1 ( XMPMetaRef xmpRef, - XMP_TextOutputProc outProc, - void * refCon, - WXMP_Result * wResult ) /* const */ -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_DumpObject_1" ) - - if ( outProc == 0 ) XMP_Throw ( "Null client output routine", kXMPErr_BadParam ); - - const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); - XMP_Status status = meta.DumpObject ( outProc, refCon ); - wResult->int32Result = status; - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_Sort_1 ( XMPMetaRef xmpRef, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_Sort_1" ) - - XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); - meta->Sort(); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_Erase_1 ( XMPMetaRef xmpRef, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_Erase_1" ) - - XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); - meta->Erase(); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_Clone_1 ( XMPMetaRef xmpRef, - XMP_OptionBits options, - WXMP_Result * wResult ) /* const */ -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_Clone_1" ) - - const XMPMeta & xOriginal = WtoXMPMeta_Ref ( xmpRef ); - XMPMeta * xClone = new XMPMeta; - xOriginal.Clone ( xClone, options ); - XMP_Assert ( xClone->clientRefs == 0 ); // ! Gets incremented in TXMPMeta::Clone. - wResult->ptrResult = xClone; - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_CountArrayItems_1 ( XMPMetaRef xmpRef, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - WXMP_Result * wResult ) /* const */ -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_CountArrayItems_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); - - const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); - XMP_Index count = meta.CountArrayItems ( schemaNS, arrayName ); - wResult->int32Result = count; - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_UnlockObject_1 ( XMPMetaRef xmpRef, - XMP_OptionBits options ) /* const */ -{ - WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro. - XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPMeta_UnlockObject_1" ) - - const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); - meta.UnlockObject ( options ); - - XMP_EXIT_WRAPPER_NO_THROW -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_GetObjectName_1 ( XMPMetaRef xmpRef, - XMP_StringPtr * namePtr, - XMP_StringLen * nameLen, - WXMP_Result * wResult ) /* const */ -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_GetObjectName_1" ) - - if ( namePtr == 0 ) namePtr = &voidStringPtr; - if ( nameLen == 0 ) nameLen = &voidStringLen; - - const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); - meta.GetObjectName ( namePtr, nameLen ); - - XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) // ! Always keep the lock, a string is always returned! -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_SetObjectName_1 ( XMPMetaRef xmpRef, - XMP_StringPtr name, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_SetObjectName_1" ) - - if ( name == 0 ) name = ""; - - XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); - meta->SetObjectName ( name ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_GetObjectOptions_1 ( XMPMetaRef xmpRef, - WXMP_Result * wResult ) /* const */ -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_GetObjectOptions_1" ) - - const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); - XMP_OptionBits options = meta.GetObjectOptions(); - wResult->int32Result = options; - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_SetObjectOptions_1 ( XMPMetaRef xmpRef, - XMP_OptionBits options, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_SetObjectOptions_1" ) - - XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); - meta->SetObjectOptions ( options ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_ParseFromBuffer_1 ( XMPMetaRef xmpRef, - XMP_StringPtr buffer, - XMP_StringLen bufferSize, - XMP_OptionBits options, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_ParseFromBuffer_1" ) - - XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); - meta->ParseFromBuffer ( buffer, bufferSize, options ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPMeta_SerializeToBuffer_1 ( XMPMetaRef xmpRef, - XMP_StringPtr * rdfString, - XMP_StringLen * rdfSize, - XMP_OptionBits options, - XMP_StringLen padding, - XMP_StringPtr newline, - XMP_StringPtr indent, - XMP_Index baseIndent, - WXMP_Result * wResult ) /* const */ -{ - XMP_ENTER_WRAPPER ( "WXMPMeta_SerializeToBuffer_1" ) - - if ( rdfString == 0 ) rdfString = &voidStringPtr; - if ( rdfSize == 0 ) rdfSize = &voidStringLen; - - if ( newline == 0 ) newline = ""; - if ( indent == 0 ) indent = ""; - - const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); - meta.SerializeToBuffer ( rdfString, rdfSize, options, padding, newline, indent, baseIndent ); - - XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) // ! Always keep the lock, a string is always returned! -} - -// ================================================================================================= - -#if __cplusplus -} /* extern "C" */ -#endif diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/WXMPUtils.cpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/WXMPUtils.cpp deleted file mode 100644 index e3ce4375ba6..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/WXMPUtils.cpp +++ /dev/null @@ -1,626 +0,0 @@ -// ================================================================================================= -// Copyright 2002-2008 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -// *** Should change "type * inParam" to "type & inParam" - -#include "XMP_Environment.h" // ! This must be the first include! -#include "XMPCore_Impl.hpp" - -#include "XMPUtils.hpp" -#include "client-glue/WXMPUtils.hpp" - -#if XMP_WinBuild - #ifdef _MSC_VER - #pragma warning ( disable : 4101 ) // unreferenced local variable - #pragma warning ( disable : 4189 ) // local variable is initialized but not referenced - #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) - #if XMP_DebugBuild - #pragma warning ( disable : 4297 ) // function assumed not to throw an exception but does - #endif - #endif -#endif - -#if __cplusplus -extern "C" { -#endif - -// ================================================================================================= -// Class Static Wrappers -// ===================== - -void -WXMPUtils_Unlock_1 ( XMP_OptionBits options ) -{ - WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro. - XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_Unlock_1" ) - - XMPUtils::Unlock ( options ); - - XMP_EXIT_WRAPPER_NO_THROW -} - -// ================================================================================================= - -void -WXMPUtils_ComposeArrayItemPath_1 ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - XMP_StringPtr * fullPath, - XMP_StringLen * pathSize, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPUtils_ComposeArrayItemPath_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); - - if ( fullPath == 0 ) fullPath = &voidStringPtr; - if ( pathSize == 0 ) pathSize = &voidStringLen; - - XMPUtils::ComposeArrayItemPath ( schemaNS, arrayName, itemIndex, fullPath, pathSize ); - - XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPUtils_ComposeStructFieldPath_1 ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - XMP_StringPtr * fullPath, - XMP_StringLen * pathSize, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPUtils_ComposeStructFieldPath_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (structName == 0) || (*structName == 0) ) XMP_Throw ( "Empty struct name", kXMPErr_BadXPath ); - if ( (fieldNS == 0) || (*fieldNS == 0) ) XMP_Throw ( "Empty field namespace URI", kXMPErr_BadSchema ); - if ( (fieldName == 0) || (*fieldName == 0) ) XMP_Throw ( "Empty field name", kXMPErr_BadXPath ); - - if ( fullPath == 0 ) fullPath = &voidStringPtr; - if ( pathSize == 0 ) pathSize = &voidStringLen; - - XMPUtils::ComposeStructFieldPath ( schemaNS, structName, fieldNS, fieldName, fullPath, pathSize ); - - XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPUtils_ComposeQualifierPath_1 ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - XMP_StringPtr * fullPath, - XMP_StringLen * pathSize, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPUtils_ComposeQualifierPath_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); - if ( (qualNS == 0) || (*qualNS == 0) ) XMP_Throw ( "Empty qualifier namespace URI", kXMPErr_BadSchema ); - if ( (qualName == 0) || (*qualName == 0) ) XMP_Throw ( "Empty qualifier name", kXMPErr_BadXPath ); - - if ( fullPath == 0 ) fullPath = &voidStringPtr; - if ( pathSize == 0 ) pathSize = &voidStringLen; - - XMPUtils::ComposeQualifierPath ( schemaNS, propName, qualNS, qualName, fullPath, pathSize ); - - XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPUtils_ComposeLangSelector_1 ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr langName, - XMP_StringPtr * fullPath, - XMP_StringLen * pathSize, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPUtils_ComposeLangSelector_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); - if ( (langName == 0) || (*langName == 0) ) XMP_Throw ( "Empty language name", kXMPErr_BadParam ); - - if ( fullPath == 0 ) fullPath = &voidStringPtr; - if ( pathSize == 0 ) pathSize = &voidStringLen; - - XMPUtils::ComposeLangSelector ( schemaNS, arrayName, langName, fullPath, pathSize ); - - XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPUtils_ComposeFieldSelector_1 ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - XMP_StringPtr fieldValue, - XMP_StringPtr * fullPath, - XMP_StringLen * pathSize, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPUtils_ComposeFieldSelector_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); - if ( (fieldNS == 0) || (*fieldNS == 0) ) XMP_Throw ( "Empty field namespace URI", kXMPErr_BadSchema ); - if ( (fieldName == 0) || (*fieldName == 0) ) XMP_Throw ( "Empty field name", kXMPErr_BadXPath ); - if ( fieldValue == 0 ) fieldValue = ""; - - if ( fullPath == 0 ) fullPath = &voidStringPtr; - if ( pathSize == 0 ) pathSize = &voidStringLen; - - XMPUtils::ComposeFieldSelector ( schemaNS, arrayName, fieldNS, fieldName, fieldValue, fullPath, pathSize ); - - XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) -} - -// ================================================================================================= - -void -WXMPUtils_ConvertFromBool_1 ( XMP_Bool binValue, - XMP_StringPtr * strValue, - XMP_StringLen * strSize, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPUtils_ConvertFromBool_1" ) - - if ( strValue == 0 ) strValue = &voidStringPtr; - if ( strSize == 0 ) strSize = &voidStringLen; - - XMPUtils::ConvertFromBool ( binValue, strValue, strSize ); - - XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPUtils_ConvertFromInt_1 ( XMP_Int32 binValue, - XMP_StringPtr format, - XMP_StringPtr * strValue, - XMP_StringLen * strSize, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPUtils_ConvertFromInt_1" ) - - if ( format == 0 ) format = ""; - - if ( strValue == 0 ) strValue = &voidStringPtr; - if ( strSize == 0 ) strSize = &voidStringLen; - - XMPUtils::ConvertFromInt ( binValue, format, strValue, strSize ); - - XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPUtils_ConvertFromInt64_1 ( XMP_Int64 binValue, - XMP_StringPtr format, - XMP_StringPtr * strValue, - XMP_StringLen * strSize, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPUtils_ConvertFromInt64_1" ) - - if ( format == 0 ) format = ""; - - if ( strValue == 0 ) strValue = &voidStringPtr; - if ( strSize == 0 ) strSize = &voidStringLen; - - XMPUtils::ConvertFromInt64 ( binValue, format, strValue, strSize ); - - XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPUtils_ConvertFromFloat_1 ( double binValue, - XMP_StringPtr format, - XMP_StringPtr * strValue, - XMP_StringLen * strSize, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPUtils_ConvertFromFloat_1" ) - - if ( format == 0 ) format = ""; - - if ( strValue == 0 ) strValue = &voidStringPtr; - if ( strSize == 0 ) strSize = &voidStringLen; - - XMPUtils::ConvertFromFloat ( binValue, format, strValue, strSize ); - - XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPUtils_ConvertFromDate_1 ( const XMP_DateTime & binValue, - XMP_StringPtr * strValue, - XMP_StringLen * strSize, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPUtils_ConvertFromDate_1" ) - - if ( strValue == 0 ) strValue = &voidStringPtr; - if ( strSize == 0 ) strSize = &voidStringLen; - - XMPUtils::ConvertFromDate( binValue, strValue, strSize ); - - XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) -} - -// ================================================================================================= - -void -WXMPUtils_ConvertToBool_1 ( XMP_StringPtr strValue, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_ConvertToBool_1" ) - - if ( (strValue == 0) || (*strValue == 0) ) XMP_Throw ( "Empty string value", kXMPErr_BadParam); - XMP_Bool result = XMPUtils::ConvertToBool ( strValue ); - wResult->int32Result = result; - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPUtils_ConvertToInt_1 ( XMP_StringPtr strValue, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_ConvertToInt_1" ) - - if ( (strValue == 0) || (*strValue == 0) ) XMP_Throw ( "Empty string value", kXMPErr_BadParam); - XMP_Int32 result = XMPUtils::ConvertToInt ( strValue ); - wResult->int32Result = result; - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPUtils_ConvertToInt64_1 ( XMP_StringPtr strValue, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_ConvertToInt64_1" ) - - if ( (strValue == 0) || (*strValue == 0) ) XMP_Throw ( "Empty string value", kXMPErr_BadParam); - XMP_Int64 result = XMPUtils::ConvertToInt64 ( strValue ); - wResult->int64Result = result; - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPUtils_ConvertToFloat_1 ( XMP_StringPtr strValue, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_ConvertToFloat_1") - - if ( (strValue == 0) || (*strValue == 0) ) XMP_Throw ( "Empty string value", kXMPErr_BadParam); - double result = XMPUtils::ConvertToFloat ( strValue ); - wResult->floatResult = result; - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPUtils_ConvertToDate_1 ( XMP_StringPtr strValue, - XMP_DateTime * binValue, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_ConvertToDate_1" ) - - if ( binValue == 0 ) XMP_Throw ( "Null output date", kXMPErr_BadParam); // ! Pointer is from the client. - XMPUtils::ConvertToDate ( strValue, binValue ); - - XMP_EXIT_WRAPPER -} - -// ================================================================================================= - -void -WXMPUtils_CurrentDateTime_1 ( XMP_DateTime * time, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_CurrentDateTime_1" ) - - if ( time == 0 ) XMP_Throw ( "Null output date", kXMPErr_BadParam); - XMPUtils::CurrentDateTime ( time ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPUtils_SetTimeZone_1 ( XMP_DateTime * time, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_SetTimeZone_1" ) - - if ( time == 0 ) XMP_Throw ( "Null output date", kXMPErr_BadParam); - XMPUtils::SetTimeZone ( time ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPUtils_ConvertToUTCTime_1 ( XMP_DateTime * time, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_ConvertToUTCTime_1" ) - - if ( time == 0 ) XMP_Throw ( "Null output date", kXMPErr_BadParam); - XMPUtils::ConvertToUTCTime ( time ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPUtils_ConvertToLocalTime_1 ( XMP_DateTime * time, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_ConvertToLocalTime_1" ) - - if ( time == 0 ) XMP_Throw ( "Null output date", kXMPErr_BadParam); - XMPUtils::ConvertToLocalTime ( time ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPUtils_CompareDateTime_1 ( const XMP_DateTime & left, - const XMP_DateTime & right, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_CompareDateTime_1" ) - - int result = XMPUtils::CompareDateTime ( left, right ); - wResult->int32Result = result; - - XMP_EXIT_WRAPPER -} - -// ================================================================================================= - -void -WXMPUtils_EncodeToBase64_1 ( XMP_StringPtr rawStr, - XMP_StringLen rawLen, - XMP_StringPtr * encodedStr, - XMP_StringLen * encodedLen, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPUtils_EncodeToBase64_1" ) - - if ( encodedStr == 0 ) encodedStr = &voidStringPtr; - if ( encodedLen == 0 ) encodedLen = &voidStringLen; - - XMPUtils::EncodeToBase64 ( rawStr, rawLen, encodedStr, encodedLen ); - - XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPUtils_DecodeFromBase64_1 ( XMP_StringPtr encodedStr, - XMP_StringLen encodedLen, - XMP_StringPtr * rawStr, - XMP_StringLen * rawLen, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPUtils_DecodeFromBase64_1" ) - - if ( rawStr == 0 ) rawStr = &voidStringPtr; - if ( rawLen == 0 ) rawLen = &voidStringLen; - - XMPUtils::DecodeFromBase64 ( encodedStr, encodedLen, rawStr, rawLen ); - - XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) -} - -// ================================================================================================= - -void -WXMPUtils_PackageForJPEG_1 ( XMPMetaRef wxmpObj, - XMP_StringPtr * stdStr, - XMP_StringLen * stdLen, - XMP_StringPtr * extStr, - XMP_StringLen * extLen, - XMP_StringPtr * digestStr, - XMP_StringLen * digestLen, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPUtils_PackageForJPEG_1" ) - - if ( stdStr == 0 ) stdStr = &voidStringPtr; - if ( stdLen == 0 ) stdLen = &voidStringLen; - if ( extStr == 0 ) extStr = &voidStringPtr; - if ( extLen == 0 ) extLen = &voidStringLen; - if ( digestStr == 0 ) digestStr = &voidStringPtr; - if ( digestLen == 0 ) digestLen = &voidStringLen; - - const XMPMeta & xmpObj = WtoXMPMeta_Ref ( wxmpObj ); - XMPUtils::PackageForJPEG ( xmpObj, stdStr, stdLen, extStr, extLen, digestStr, digestLen ); - - XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPUtils_MergeFromJPEG_1 ( XMPMetaRef wfullXMP, - XMPMetaRef wextendedXMP, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPUtils_MergeFromJPEG_1" ) - - if ( wfullXMP == 0 ) XMP_Throw ( "Output XMP pointer is null", kXMPErr_BadParam ); - - XMPMeta * fullXMP = WtoXMPMeta_Ptr ( wfullXMP ); - const XMPMeta & extendedXMP = WtoXMPMeta_Ref ( wextendedXMP ); - XMPUtils::MergeFromJPEG ( fullXMP, extendedXMP ); - - XMP_EXIT_WRAPPER -} - -// ================================================================================================= - -void -WXMPUtils_CatenateArrayItems_1 ( XMPMetaRef wxmpObj, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr separator, - XMP_StringPtr quotes, - XMP_OptionBits options, - XMP_StringPtr * catedStr, - XMP_StringLen * catedLen, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPUtils_CatenateArrayItems_1" ) - - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); - - if ( separator == 0 ) separator = "; "; - if ( quotes == 0 ) quotes = "\""; - - if ( catedStr == 0 ) catedStr = &voidStringPtr; - if ( catedLen == 0 ) catedLen = &voidStringLen; - - const XMPMeta & xmpObj = WtoXMPMeta_Ref ( wxmpObj ); - XMPUtils::CatenateArrayItems ( xmpObj, schemaNS, arrayName, separator, quotes, options, catedStr, catedLen ); - - XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPUtils_SeparateArrayItems_1 ( XMPMetaRef wxmpObj, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_OptionBits options, - XMP_StringPtr catedStr, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPUtils_SeparateArrayItems_1" ) - - if ( wxmpObj == 0 ) XMP_Throw ( "Output XMP pointer is null", kXMPErr_BadParam ); - if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); - if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); - if ( catedStr == 0 ) catedStr = ""; - - XMPMeta * xmpObj = WtoXMPMeta_Ptr ( wxmpObj ); - XMPUtils::SeparateArrayItems ( xmpObj, schemaNS, arrayName, options, catedStr ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPUtils_RemoveProperties_1 ( XMPMetaRef wxmpObj, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_OptionBits options, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPUtils_RemoveProperties_1" ) - - if ( wxmpObj == 0 ) XMP_Throw ( "Output XMP pointer is null", kXMPErr_BadParam ); - if ( schemaNS == 0 ) schemaNS = ""; - if ( propName == 0 ) propName = ""; - - XMPMeta * xmpObj = WtoXMPMeta_Ptr ( wxmpObj ); - XMPUtils::RemoveProperties ( xmpObj, schemaNS, propName, options ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPUtils_AppendProperties_1 ( XMPMetaRef wSource, - XMPMetaRef wDest, - XMP_OptionBits options, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPUtils_AppendProperties_1" ) - - if ( wDest == 0 ) XMP_Throw ( "Output XMP pointer is null", kXMPErr_BadParam ); - - const XMPMeta & source = WtoXMPMeta_Ref ( wSource ); - XMPMeta * dest = WtoXMPMeta_Ptr ( wDest ); - XMPUtils::AppendProperties ( source, dest, options ); - - XMP_EXIT_WRAPPER -} - -// ------------------------------------------------------------------------------------------------- - -void -WXMPUtils_DuplicateSubtree_1 ( XMPMetaRef wSource, - XMPMetaRef wDest, - XMP_StringPtr sourceNS, - XMP_StringPtr sourceRoot, - XMP_StringPtr destNS, - XMP_StringPtr destRoot, - XMP_OptionBits options, - WXMP_Result * wResult ) -{ - XMP_ENTER_WRAPPER ( "WXMPUtils_DuplicateSubtree_1" ) - - if ( wDest == 0 ) XMP_Throw ( "Output XMP pointer is null", kXMPErr_BadParam ); - if ( (sourceNS == 0) || (*sourceNS == 0) ) XMP_Throw ( "Empty source schema URI", kXMPErr_BadSchema ); - if ( (sourceRoot == 0) || (*sourceRoot == 0) ) XMP_Throw ( "Empty source root name", kXMPErr_BadXPath ); - if ( destNS == 0 ) destNS = sourceNS; - if ( destRoot == 0 ) destRoot = sourceRoot; - - const XMPMeta & source = WtoXMPMeta_Ref ( wSource ); - XMPMeta * dest = WtoXMPMeta_Ptr ( wDest ); - XMPUtils::DuplicateSubtree ( source, dest, sourceNS, sourceRoot, destNS, destRoot, options ); - - XMP_EXIT_WRAPPER -} - -// ================================================================================================= - -#if __cplusplus -} /* extern "C" */ -#endif diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMLParserAdapter.hpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/XMLParserAdapter.hpp deleted file mode 100644 index 55d53cadbf3..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMLParserAdapter.hpp +++ /dev/null @@ -1,140 +0,0 @@ -#ifndef __XMLParserAdapter_hpp__ -#define __XMLParserAdapter_hpp__ - -// ================================================================================================= -// Copyright 2005-2007 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#include "XMP_Environment.h" // ! Must be the first #include! -#include "XMP_Const.h" - -#include -#include - -// ================================================================================================= -// XML_Node details -// -// The XML_Nodes are used only during the XML/RDF parsing process. This presently uses an XML parser -// to create an XML tree, then a recursive descent RDF recognizer to build the corresponding XMP. -// This makes it easier to swap XML parsers and provides a clean separation of XML and RDF issues. -// The overall parsing would be faster and use less memory if the RDF recognition were done on the -// fly using a state machine. But it was much easier to write the recursive descent version. The -// current implementation is pretty fast in absolute terms, so being faster might not be crucial. -// -// Like the XMP tree, the XML tree contains vectors of pointers for down links, and offspring have -// a pointer to their parent. Unlike the XMP tree, this is an exact XML document tree. There are no -// introduced top level namespace nodes or rearrangement of the nodes.. -// -// The exact state of namespaces can vary during the XML parsing, depending on the parser in use. -// By the time the RDF recognition is done though, the namespaces must be normalized. All of the -// used namespaces must be registered, this is done automatically if necessary. All of the "live" -// namespace prefixes will be unique. The ns field of an XML_Node is the namespace URI, the name -// field contains a qualified name (prefix:local). This includes default namespace mapping, the -// URI and prefix will be missing only for elements and attributes in no namespace. - -class XML_Node; - -typedef XML_Node * XML_NodePtr; // Handy for things like: XML_Node * a, b; - b is XML_Node, not XML_Node*! - -enum { kRootNode = 0, kElemNode = 1, kAttrNode = 2, kCDataNode = 3, kPINode = 4 }; - -#define IsWhitespaceChar(ch) ( ((ch) == ' ') || ((ch) == 0x09) || ((ch) == 0x0A) || ((ch) == 0x0D) ) - -typedef std::vector XML_NodeVector; -typedef XML_NodeVector::iterator XML_NodePos; -typedef XML_NodeVector::const_iterator XML_cNodePos; - -#if 0 // Pattern for iterating over the children or attributes: - for ( size_t xxNum = 0, xxLim = _node_->_offspring_.size(); xxNum < xxLim; ++xxNum ) { - const XML_NodePtr _curr_ = _node_->_offspring_[xxNum]; - } -#endif - -class XML_Node { -public: - - // Intended for lightweight internal use. Clients are expected to use the data directly. - - XMP_Uns8 kind; - std::string ns, name, value; - size_t nsPrefixLen; - XML_NodePtr parent; - XML_NodeVector attrs; - XML_NodeVector content; - - bool IsWhitespaceNode() const; - bool IsLeafContentNode() const; // An empty element or one with a single character data child node. - bool IsEmptyLeafNode() const; - - XMP_StringPtr GetAttrValue ( XMP_StringPtr attrName ) const; - void SetAttrValue ( XMP_StringPtr attrName, XMP_StringPtr attrValue ); - - XMP_StringPtr GetLeafContentValue() const; - void SetLeafContentValue ( XMP_StringPtr value ); - - size_t CountNamedElements ( XMP_StringPtr nsURI, XMP_StringPtr localName ) const; // Number of child elements with this name. - XML_NodePtr GetNamedElement ( XMP_StringPtr nsURI, XMP_StringPtr localName, size_t which = 0 ); - - void Dump ( std::string * buffer ); - void Serialize ( std::string * buffer ); - - void RemoveAttrs(); - void RemoveContent(); - void ClearNode(); - - XML_Node ( XML_NodePtr _parent, XMP_StringPtr _name, XMP_Uns8 _kind ) - : kind(_kind), name(_name), nsPrefixLen(0), parent(_parent) {}; - - XML_Node ( XML_NodePtr _parent, const std::string & _name, XMP_Uns8 _kind ) - : kind(_kind), name(_name), nsPrefixLen(0), parent(_parent) {}; - - virtual ~XML_Node() { RemoveAttrs(); RemoveContent(); }; - -private: - - XML_Node() : kind(0), parent(0) {}; // ! Hidden to make sure parent pointer is always set. - -}; - -// ================================================================================================= -// Abstract base class for XML parser adapters used by the XMP toolkit. - -enum { kXMLPendingInputMax = 16 }; - -class XMLParserAdapter { -public: - - XMLParserAdapter() - : tree(0,"",kRootNode), rootNode(0), rootCount(0), charEncoding(XMP_OptionBits(-1)), pendingCount(0) - { - #if XMP_DebugBuild - parseLog = 0; - #endif - }; - - virtual ~XMLParserAdapter() {}; - - virtual void ParseBuffer ( const void * buffer, size_t length, bool last ) = 0; - - XML_Node tree; - XML_NodeVector parseStack; - XML_NodePtr rootNode; - size_t rootCount; - - XMP_OptionBits charEncoding; - size_t pendingCount; - unsigned char pendingInput[kXMLPendingInputMax]; // Buffered input for character encoding checks. - - #if XMP_DebugBuild - FILE * parseLog; - #endif - -}; - -// ================================================================================================= - -#endif // __XMLParserAdapter_hpp__ diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/XML_Node.cpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/XML_Node.cpp deleted file mode 100644 index 5f20358ec70..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/XML_Node.cpp +++ /dev/null @@ -1,463 +0,0 @@ -// ================================================================================================= -// Copyright 2005-2007 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#include "XMP_Environment.h" // ! Must be the first #include! -#include "XMLParserAdapter.hpp" - -#include -#include -#include - -// ! Can't include XMP..._Impl.hpp - used by both Core and Files. -#define XMP_LitNMatch(s,l,n) (std::strncmp((s),(l),(n)) == 0) - -#if XMP_WinBuild -#ifdef _MSC_VER - #define snprintf _snprintf - #pragma warning ( disable : 4996 ) // snprintf is safe -#endif -#endif - -// ================================================================================================= - -#if 0 // Pattern for iterating over the children or attributes: - for ( size_t xxNum = 0, xxLim = _node_->_offspring_->size(); xxNum < xxLim; ++xxNum ) { - const XML_NodePtr _curr_ = _node_->_offspring_[xxNum]; - } -#endif - -// ================================================================================================= -// XML_Node::IsWhitespaceNode -//=========================== - -bool XML_Node::IsWhitespaceNode() const -{ - if ( this->kind != kCDataNode ) return false; - - for ( size_t i = 0; i < this->value.size(); ++i ) { - unsigned char ch = this->value[i]; - if ( IsWhitespaceChar ( ch ) ) continue; - // *** Add checks for other whitespace characters. - return false; // All the checks failed, this isn't whitespace. - } - - return true; - -} // XML_Node::IsWhitespaceNode - -// ================================================================================================= -// XML_Node::IsLeafContentNode -//============================ - -bool XML_Node::IsLeafContentNode() const -{ - if ( this->kind != kElemNode ) return false; - if ( this->content.size() == 0 ) return true; - if ( this->content.size() > 1 ) return false; - if ( this->content[0]->kind != kCDataNode ) return false; - - return true; - -} // XML_Node::IsLeafContentNode - -// ================================================================================================= -// XML_Node::IsEmptyLeafNode -//========================== - -bool XML_Node::IsEmptyLeafNode() const -{ - - if ( (this->kind != kElemNode) || (this->content.size() != 0) ) return false; - return true; - -} // XML_Node::IsEmptyLeafNode - -// ================================================================================================= -// XML_Node::GetAttrValue -//======================= - -XMP_StringPtr XML_Node::GetAttrValue ( XMP_StringPtr attrName ) const -{ - - for ( size_t i = 0, aLim = this->attrs.size(); i < aLim; ++i ) { - XML_Node * attrPtr = this->attrs[i]; - if ( ! attrPtr->ns.empty() ) continue; // This form of GetAttrValue is for attrs in no namespace. - if ( attrPtr->name == attrName ) return attrPtr->value.c_str(); - } - - return 0; // Not found. - -} // XML_Node::GetAttrValue - -// ================================================================================================= -// XML_Node::SetAttrValue -//======================= - -void XML_Node::SetAttrValue ( XMP_StringPtr attrName, XMP_StringPtr attrValue ) -{ - - for ( size_t i = 0, aLim = this->attrs.size(); i < aLim; ++i ) { - XML_Node * attrPtr = this->attrs[i]; - if ( ! attrPtr->ns.empty() ) continue; // This form of SetAttrValue is for attrs in no namespace. - if ( attrPtr->name == attrName ) { - attrPtr->value = attrValue; - return; - } - } - -} // XML_Node::SetAttrValue - -// ================================================================================================= -// XML_Node::GetLeafContentValue -//============================== - -XMP_StringPtr XML_Node::GetLeafContentValue() const -{ - if ( (! this->IsLeafContentNode()) || this->content.empty() ) return ""; - - return this->content[0]->value.c_str(); - -} // XML_Node::GetLeafContentValue - -// ================================================================================================= -// XML_Node::SetLeafContentValue -//============================== - -void XML_Node::SetLeafContentValue ( XMP_StringPtr newValue ) -{ - XML_Node * valueNode; - - if ( ! this->content.empty() ) { - valueNode = this->content[0]; - } else { - valueNode = new XML_Node ( this, "", kCDataNode ); - this->content.push_back ( valueNode ); - } - - valueNode->value = newValue; - -} // XML_Node::SetLeafContentValue - -// ================================================================================================= -// XML_Node::CountNamedElements -//============================= - -size_t XML_Node::CountNamedElements ( XMP_StringPtr nsURI, XMP_StringPtr localName ) const -{ - size_t count = 0; - - for ( size_t i = 0, vLim = this->content.size(); i < vLim; ++i ) { - const XML_Node & child = *this->content[i]; - if ( child.ns != nsURI ) continue; - if ( strcmp ( localName, child.name.c_str()+child.nsPrefixLen ) != 0 ) continue; - ++count; - } - - return count; - -} // XML_Node::CountNamedElements - -// ================================================================================================= -// XML_Node::GetNamedElement -//========================== - -XML_NodePtr XML_Node::GetNamedElement ( XMP_StringPtr nsURI, XMP_StringPtr localName, size_t which /* = 0 */ ) -{ - - for ( size_t i = 0, vLim = this->content.size(); i < vLim; ++i ) { - XML_Node * childPtr = this->content[i]; - if ( childPtr->ns != nsURI ) continue; - if ( strcmp ( localName, childPtr->name.c_str()+childPtr->nsPrefixLen ) != 0 ) continue; - if ( which == 0 ) return childPtr; - --which; - } - - return 0; /// Not found. - -} // XML_Node::GetNamedElement - -// ================================================================================================= -// DumpNodeList -// ============ - -static const char * kNodeKinds[] = { "root", "elem", "attr", "cdata", "pi" }; - -static void DumpNodeList ( std::string * buffer, const XML_NodeVector & list, int indent ) -{ - - for ( size_t i = 0, limit = list.size(); i < limit; ++i ) { - - const XML_Node * node = list[i]; - - for ( int t = indent; t > 0; --t ) *buffer += " "; - if ( node->IsWhitespaceNode() ) { - *buffer += "-- whitespace --\n"; - continue; - } - - *buffer += node->name; - *buffer += " - "; - *buffer += kNodeKinds[node->kind]; - if ( ! node->value.empty() ) { - *buffer += ", value=\""; - *buffer += node->value; - *buffer += "\""; - } - if ( ! node->ns.empty() ) { - *buffer += ", ns=\""; - *buffer += node->ns; - *buffer += "\""; - } - if ( node->nsPrefixLen != 0 ) { - *buffer += ", prefixLen="; - char numBuf [20]; - snprintf ( numBuf, sizeof(numBuf), "%lu", (unsigned long)node->nsPrefixLen ); - *buffer += numBuf; - } - *buffer += "\n"; - - if ( ! node->attrs.empty() ) { - for ( int t = indent+1; t > 0; --t ) *buffer += " "; - *buffer += "attrs:\n"; - DumpNodeList ( buffer, node->attrs, indent+2 ); - } - - if ( ! node->content.empty() ) { - DumpNodeList ( buffer, node->content, indent+1 ); - } - - } - -} // DumpNodeList - -// ================================================================================================= -// XML_Node::Dump -//=============== - -void XML_Node::Dump ( std::string * buffer ) -{ - - *buffer = "Dump of XML_Node tree\n"; - - *buffer += "Root info: name=\""; - *buffer += this->name; - *buffer += "\", value=\""; - *buffer += this->value; - *buffer += "\", ns=\""; - *buffer += this->ns; - *buffer += "\", kind="; - *buffer += kNodeKinds[this->kind]; - *buffer += "\n"; - - if ( ! this->attrs.empty() ) { - *buffer += " attrs:\n"; - DumpNodeList ( buffer, this->attrs, 2 ); - } - *buffer += "\n"; - - DumpNodeList ( buffer, this->content, 0 ); - -} // XML_Node::Dump - -// ================================================================================================= -// SerializeOneNode -// ================ - -static void SerializeOneNode ( std::string * buffer, const XML_Node & node ) -{ - size_t i, limit; - XMP_StringPtr namePtr = node.name.c_str(); - if ( XMP_LitNMatch ( namePtr, "_dflt_:", 7 ) ) namePtr += 7; // Hack for default namespaces. - - switch ( node.kind ) { - - case kElemNode: - *buffer += '<'; - *buffer += namePtr; - for ( i = 0, limit = node.attrs.size(); i < limit; ++i ) { - SerializeOneNode ( buffer, *node.attrs[i] ); - } - if ( node.content.empty() ) { - *buffer += "/>"; - } else { - *buffer += '>'; - for ( i = 0, limit = node.content.size(); i < limit; ++i ) { - SerializeOneNode ( buffer, *node.content[i] ); - } - *buffer += "'; - } - break; - - case kAttrNode: - *buffer += ' '; - *buffer += namePtr; - *buffer += "=\""; - *buffer += node.value; - *buffer += '"'; - break; - - case kCDataNode: - *buffer += node.value; - break; - - case kPINode: - *buffer += node.value; // *** Note that we're dropping PIs during the Expat parse. - break; - - } - -} // SerializeOneNode - -// ================================================================================================= -// CollectNamespaceDecls -// ===================== - -typedef std::map < std::string, std::string > NamespaceMap; - -static void CollectNamespaceDecls ( NamespaceMap * nsMap, const XML_Node & node ) -{ - size_t i, limit; - - if ( ! node.ns.empty() ) { - size_t nameMid = 0; - while ( node.name[nameMid] != ':' ) ++nameMid; - std::string prefix = node.name.substr ( 0, nameMid ); - (*nsMap)[prefix] = node.ns; - } - - if ( node.kind == kElemNode ) { - - for ( i = 0, limit = node.attrs.size(); i < limit; ++i ) { - CollectNamespaceDecls ( nsMap, *node.attrs[i] ); - } - - for ( i = 0, limit = node.content.size(); i < limit; ++i ) { - const XML_Node & content = *node.content[i]; - if ( content.kind == kElemNode ) CollectNamespaceDecls ( nsMap, content ); - } - - } - -} // CollectNamespaceDecls - -// ================================================================================================= -// XML_Node::Serialize -//==================== - -void XML_Node::Serialize ( std::string * buffer ) -{ - buffer->erase(); - - if ( this->kind != kRootNode ) { - - SerializeOneNode ( buffer, *this ); - - } else { - - // Do the outermost level here, in order to add the XML version and namespace declarations. - - *buffer += "\n"; - - for ( size_t outer = 0, oLimit = this->content.size(); outer < oLimit; ++outer ) { - - const XML_Node & node = *this->content[outer]; - - if ( node.kind != kElemNode ) { - - SerializeOneNode ( buffer, node ); - - } else { - - XMP_StringPtr namePtr = node.name.c_str(); - if ( XMP_LitNMatch ( namePtr, "_dflt_:", 7 ) ) namePtr += 7; // Hack for default namespaces. - - *buffer += '<'; - *buffer += namePtr; - - NamespaceMap nsMap; - CollectNamespaceDecls ( &nsMap, node ); - NamespaceMap::iterator nsDecl = nsMap.begin(); - NamespaceMap::iterator nsEnd = nsMap.end(); - for ( ; nsDecl != nsEnd; ++nsDecl ) { - const std::string & prefix = nsDecl->first; - *buffer += " xmlns"; - if ( prefix != "_dflt_" ) { *buffer += ':'; *buffer += prefix; } - *buffer += "=\""; - *buffer += nsDecl->second; - *buffer += '"'; - } - - for ( size_t attr = 0, aLimit = node.attrs.size(); attr < aLimit; ++attr ) { - SerializeOneNode ( buffer, *node.attrs[attr] ); - } - - if ( node.content.empty() ) { - *buffer += "/>"; - } else { - *buffer += '>'; - for ( size_t child = 0, cLimit = node.content.size(); child < cLimit; ++child ) { - SerializeOneNode ( buffer, *node.content[child] ); - } - *buffer += "'; - } - - } - - } - - } - - -} // XML_Node::Serialize - -// ================================================================================================= -// XML_Node::RemoveAttrs -//====================== - -void XML_Node::RemoveAttrs() -{ - - for ( size_t i = 0, vLim = this->attrs.size(); i < vLim; ++i ) delete this->attrs[i]; - this->attrs.clear(); - -} // XML_Node::RemoveAttrs - -// ================================================================================================= -// XML_Node::RemoveContent -//======================== - -void XML_Node::RemoveContent() -{ - - for ( size_t i = 0, vLim = this->content.size(); i < vLim; ++i ) delete this->content[i]; - this->content.clear(); - -} // XML_Node::RemoveContent - -// ================================================================================================= -// XML_Node::ClearNode -//==================== - -void XML_Node::ClearNode() -{ - - this->kind = 0; - this->ns.erase(); - this->name.erase(); - this->value.erase(); - - this->RemoveAttrs(); - this->RemoveContent(); - -} // XML_Node::ClearNode - -// ================================================================================================= diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPCore_Impl.cpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPCore_Impl.cpp deleted file mode 100644 index 60a7194b413..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPCore_Impl.cpp +++ /dev/null @@ -1,1468 +0,0 @@ -// ================================================================================================= -// Copyright 2002-2007 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#include "XMP_Environment.h" // ! This must be the first include! -#include "XMP_Version.h" -#include "XMPCore_Impl.hpp" -#include "XMPMeta.hpp" // *** For use of GetNamespacePrefix in FindSchemaNode. - -#include "UnicodeInlines.incl_cpp" - -#include - -using namespace std; - -#if XMP_WinBuild - #ifdef _MSC_VER - #pragma warning ( disable : 4290 ) // C++ exception specification ignored except ... not __declspec(nothrow) - #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) - #endif -#endif - -// *** Add debug codegen checks, e.g. that typical masking operations really work -// *** Make option constants 0x...UL. - -// Internal code should be using #if with XMP_MacBuild, XMP_WinBuild, or XMP_UNIXBuild. -// This is a sanity check in case of accidental use of *_ENV. Some clients use the poor -// practice of defining the *_ENV macro with an empty value. -#if defined ( MAC_ENV ) - #if ! MAC_ENV - #error "MAC_ENV must be defined so that \"#if MAC_ENV\" is true" - #endif -#elif defined ( WIN_ENV ) - #if ! WIN_ENV - #error "WIN_ENV must be defined so that \"#if WIN_ENV\" is true" - #endif -#elif defined ( UNIX_ENV ) - #if ! UNIX_ENV - #error "UNIX_ENV must be defined so that \"#if UNIX_ENV\" is true" - #endif -#endif - -// ================================================================================================= -// Static Variables -// ================ - -XMP_Int32 sXMP_InitCount = 0; - -XMP_StringMap * sNamespaceURIToPrefixMap = 0; -XMP_StringMap * sNamespacePrefixToURIMap = 0; - -XMP_AliasMap * sRegisteredAliasMap = 0; // Needed by XMPIterator. - -XMP_VarString * sOutputNS = 0; -XMP_VarString * sOutputStr = 0; -XMP_VarString * sExceptionMessage = 0; - -XMP_Mutex sXMPCoreLock; -int sLockCount = 0; - -#if TraceXMPCalls - FILE * xmpOut = stderr; -#endif - -void * voidVoidPtr = 0; // Used to backfill null output parameters. -XMP_StringPtr voidStringPtr = 0; -XMP_StringLen voidStringLen = 0; -XMP_OptionBits voidOptionBits = 0; -XMP_Uns8 voidByte = 0; -bool voidBool = 0; -XMP_Int32 voidInt32 = 0; -XMP_Int64 voidInt64 = 0; -double voidDouble = 0.0; -XMP_DateTime voidDateTime; -WXMP_Result void_wResult; - -// ================================================================================================= -// Mutex Utilities -// =============== - -// ! Note that the mutex need not be "recursive", allowing the same thread to acquire it multiple -// ! times. There is a single XMP lock which is acquired in the wrapper classes. Internal calls -// ! never go back out to the wrappers. - -#if XMP_WinBuild - - bool XMP_InitMutex ( XMP_Mutex * mutex ) { - InitializeCriticalSection ( mutex ); - return true; - } - - void XMP_TermMutex ( XMP_Mutex & mutex ) { - DeleteCriticalSection ( &mutex ); - } - - void XMP_EnterCriticalRegion ( XMP_Mutex & mutex ) { - EnterCriticalSection ( &mutex ); - } - - void XMP_ExitCriticalRegion ( XMP_Mutex & mutex ) { - LeaveCriticalSection ( &mutex ); - } - -#else - - // Use pthread for both Mac and generic UNIX. - // ! Would be nice to specify PTHREAD_MUTEX_ERRORCHECK, but the POSIX documentation is useless. - // ! Would be OK but overkill to specify PTHREAD_MUTEX_RECURSIVE. - - bool XMP_InitMutex ( XMP_Mutex * mutex ) { - int err = pthread_mutex_init ( mutex, 0 ); - return (err == 0 ); - } - - void XMP_TermMutex ( XMP_Mutex & mutex ) { - (void) pthread_mutex_destroy ( &mutex ); - } - - void XMP_EnterCriticalRegion ( XMP_Mutex & mutex ) { - int err = pthread_mutex_lock ( &mutex ); - if ( err != 0 ) XMP_Throw ( "XMP_EnterCriticalRegion - pthread_mutex_lock failure", kXMPErr_ExternalFailure ); - } - - void XMP_ExitCriticalRegion ( XMP_Mutex & mutex ) { - int err = pthread_mutex_unlock ( &mutex ); - if ( err != 0 ) XMP_Throw ( "XMP_ExitCriticalRegion - pthread_mutex_unlock failure", kXMPErr_ExternalFailure ); - } - -#endif - -// ================================================================================================= -// Local Utilities -// =============== - -// ------------------------------------------------------------------------------------------------- -// VerifyXPathRoot -// --------------- -// -// Set up the first 2 components of the expanded XPath. Normalizes the various cases of using the -// full schema URI and/or a qualified root property name. Returns true for normal processing. If -// allowUnknownSchemaNS is true and the schema namespace is not registered, false is returned. If -// allowUnknownSchemaNS is false and the schema namespace is not registered, an exception is thrown. - -// *** Should someday check the full syntax. - -static void -VerifyXPathRoot ( XMP_StringPtr schemaURI, - XMP_StringPtr propName, - XMP_ExpandedXPath * expandedXPath ) -{ - // Do some basic checks on the URI and name. Try to lookup the URI. See if the name is qualified. - - XMP_Assert ( (schemaURI != 0) && (propName != 0) && (*propName != 0) ); - XMP_Assert ( (expandedXPath != 0) && (expandedXPath->empty()) ); - - if ( *schemaURI == 0 ) XMP_Throw ( "Schema namespace URI is required", kXMPErr_BadSchema ); - - if ( (*propName == '?') || (*propName == '@') ) { - XMP_Throw ( "Top level name must not be a qualifier", kXMPErr_BadXPath ); - } - for ( XMP_StringPtr ch = propName; *ch != 0; ++ch ) { - if ( (*ch == '/') || (*ch == '[') ) { - XMP_Throw ( "Top level name must be simple", kXMPErr_BadXPath ); - } - } - - XMP_StringMapPos uriPos = sNamespaceURIToPrefixMap->find ( XMP_VarString ( schemaURI ) ); - if ( uriPos == sNamespaceURIToPrefixMap->end() ) { - XMP_Throw ( "Unregistered schema namespace URI", kXMPErr_BadSchema ); - } - - XMP_StringPtr colonPos = propName; - while ( (*colonPos != 0) && (*colonPos != ':') ) ++colonPos; - VerifySimpleXMLName ( propName, colonPos ); // Verify the part before any colon. - - // Verify the various URI and prefix combinations. Initialize the expanded XPath. - - if ( *colonPos == 0 ) { - - // The propName is unqualified, use the schemaURI and associated prefix. - - expandedXPath->push_back ( XPathStepInfo ( schemaURI, kXMP_SchemaNode ) ); - expandedXPath->push_back ( XPathStepInfo ( uriPos->second, 0 ) ); - (*expandedXPath)[kRootPropStep].step += propName; - - } else { - - // The propName is qualified. Make sure the prefix is legit. Use the associated URI and qualified name. - - size_t prefixLen = colonPos - propName + 1; // ! Include the colon. - VerifySimpleXMLName ( colonPos+1, colonPos+strlen(colonPos) ); - - XMP_VarString prefix ( propName, prefixLen ); - XMP_StringMapPos prefixPos = sNamespacePrefixToURIMap->find ( prefix ); - if ( prefixPos == sNamespacePrefixToURIMap->end() ) { - XMP_Throw ( "Unknown schema namespace prefix", kXMPErr_BadSchema ); - } - if ( prefix != uriPos->second ) { - XMP_Throw ( "Schema namespace URI and prefix mismatch", kXMPErr_BadSchema ); - } - - expandedXPath->push_back ( XPathStepInfo ( schemaURI, kXMP_SchemaNode ) ); - expandedXPath->push_back ( XPathStepInfo ( propName, 0 ) ); - - } - -} // VerifyXPathRoot - -// ------------------------------------------------------------------------------------------------- -// VerifyQualName -// -------------- - -static void -VerifyQualName ( XMP_StringPtr qualName, XMP_StringPtr nameEnd ) -{ - if ( qualName >= nameEnd ) XMP_Throw ( "Empty qualified name", kXMPErr_BadXPath ); - - XMP_StringPtr colonPos = qualName; - while ( (colonPos < nameEnd) && (*colonPos != ':') ) ++colonPos; - if ( (colonPos == qualName) || (colonPos >= nameEnd) ) XMP_Throw ( "Ill-formed qualified name", kXMPErr_BadXPath ); - - VerifySimpleXMLName ( qualName, colonPos ); - VerifySimpleXMLName ( colonPos+1, nameEnd ); - - size_t prefixLen = colonPos - qualName + 1; // ! Include the colon. - XMP_VarString prefix ( qualName, prefixLen ); - XMP_StringMapPos prefixPos = sNamespacePrefixToURIMap->find ( prefix ); - if ( prefixPos == sNamespacePrefixToURIMap->end() ) { - XMP_Throw ( "Unknown namespace prefix for qualified name", kXMPErr_BadXPath ); - } - -} // VerifyQualName - -// ------------------------------------------------------------------------------------------------- -// FindIndexedItem -// --------------- -// -// [index] An element of an array. -// -// Support the implicit creation of a new last item. - -static XMP_Index -FindIndexedItem ( XMP_Node * arrayNode, const XMP_VarString & indexStep, bool createNodes ) -{ - XMP_Index index = 0; - size_t chLim = indexStep.size() - 1; - - XMP_Assert ( (chLim >= 2) && (indexStep[0] == '[') && (indexStep[chLim] == ']') ); - - for ( size_t chNum = 1; chNum != chLim; ++chNum ) { - XMP_Assert ( ('0' <= indexStep[chNum]) && (indexStep[chNum] <= '9') ); - index = (index * 10) + (indexStep[chNum] - '0'); - if ( index < 0 ) { - XMP_Throw ( "Array index overflow", kXMPErr_BadXPath ); // ! Overflow, not truly negative. - } - } - - --index; // Change to a C-style, zero based index. - if ( index < 0 ) XMP_Throw ( "Array index must be larger than zero", kXMPErr_BadXPath ); - - if ( (index == (XMP_Index)arrayNode->children.size()) && createNodes ) { // Append a new last+1 node. - XMP_Node * newItem = new XMP_Node ( arrayNode, kXMP_ArrayItemName, kXMP_NewImplicitNode ); - arrayNode->children.push_back ( newItem ); - } - - // ! Don't throw here for a too large index. SetProperty will throw, GetProperty will not. - if ( index >= (XMP_Index)arrayNode->children.size() ) index = -1; - return index; - -} // FindIndexedItem - -// ------------------------------------------------------------------------------------------------- -// SplitNameAndValue -// ----------------- -// -// Split the name and value parts for field and qualifier selectors: -// -// [qualName="value"] An element in an array of structs, chosen by a field value. -// [?qualName="value"] An element in an array, chosen by a qualifier value. -// -// The value portion is a string quoted by ''' or '"'. The value may contain any character including -// a doubled quoting character. The value may be empty. - -static void -SplitNameAndValue ( const XMP_VarString & selStep, XMP_VarString * nameStr, XMP_VarString * valueStr ) -{ - XMP_StringPtr partBegin = selStep.c_str(); - XMP_StringPtr partEnd; - - const XMP_StringPtr valueEnd = partBegin + (selStep.size() - 2); - const char quote = *valueEnd; - - XMP_Assert ( (*partBegin == '[') && (*(valueEnd+1) == ']') ); - XMP_Assert ( (selStep.size() >= 6) && ((quote == '"') || (quote == '\'')) ); - - // Extract the name part. - - ++partBegin; // Skip the opening '['. - if ( *partBegin == '?' ) ++partBegin; - for ( partEnd = partBegin+1; *partEnd != '='; ++partEnd ) {}; - - nameStr->assign ( partBegin, (partEnd - partBegin) ); - - // Extract the value part, reducing doubled quotes. - - XMP_Assert ( *(partEnd+1) == quote ); - - partBegin = partEnd + 2; - valueStr->erase(); - valueStr->reserve ( valueEnd - partBegin ); // Maximum length, don't optimize doubled quotes. - - for ( partEnd = partBegin; partEnd < valueEnd; ++partEnd ) { - if ( (*partEnd == quote) && (*(partEnd+1) == quote) ) { - ++partEnd; - valueStr->append ( partBegin, (partEnd - partBegin) ); - partBegin = partEnd+1; // ! Loop will increment partEnd again. - } - } - - valueStr->append ( partBegin, (partEnd - partBegin) ); // ! The loop does not add the last part. - -} // SplitNameAndValue - -// ------------------------------------------------------------------------------------------------- -// LookupQualSelector -// ------------------ -// -// [?qualName="value"] An element in an array, chosen by a qualifier value. -// -// Note that we don't create implicit nodes for qualifier selectors, so no CreateNodes parameter. - -static XMP_Index -LookupQualSelector ( XMP_Node * arrayNode, const XMP_VarString & qualName, XMP_VarString & qualValue ) -{ - XMP_Index index; - - if ( qualName == "xml:lang" ) { - - // *** Should check that the value is legit RFC 1766/3066. - NormalizeLangValue ( &qualValue ); - index = LookupLangItem ( arrayNode, qualValue ) ; - - } else { - - XMP_Index itemLim; - for ( index = 0, itemLim = arrayNode->children.size(); index != itemLim; ++index ) { - - const XMP_Node * currItem = arrayNode->children[index]; - XMP_Assert ( currItem->parent == arrayNode ); - - size_t q, qualLim; - for ( q = 0, qualLim = currItem->qualifiers.size(); q != qualLim; ++q ) { - const XMP_Node * currQual = currItem->qualifiers[q]; - XMP_Assert ( currQual->parent == currItem ); - if ( currQual->name != qualName ) continue; - if ( currQual->value == qualValue ) break; // Exit qual loop. - } - if ( q != qualLim ) break; // Exit child loop, found an item with a matching qualifier. - - } - if ( index == itemLim ) index = -1; - - } - - return index; - -} // LookupQualSelector - -// ------------------------------------------------------------------------------------------------- -// FollowXPathStep -// --------------- -// -// After processing by ExpandXPath, a step can be of these forms: -// qualName A top level property or struct field. -// [index] An element of an array. -// [last()] The last element of an array. -// [qualName="value"] An element in an array of structs, chosen by a field value. -// [?qualName="value"] An element in an array, chosen by a qualifier value. -// ?qualName A general qualifier. -// -// Find the appropriate child node, resolving aliases, and optionally creating nodes. - -static XMP_Node * -FollowXPathStep ( XMP_Node * parentNode, - const XMP_ExpandedXPath & fullPath, - size_t stepNum, - bool createNodes, - XMP_NodePtrPos * ptrPos, - bool aliasedArrayItem = false ) -{ - XMP_Node * nextNode = 0; - const XPathStepInfo & nextStep = fullPath[stepNum]; - XMP_Index index = 0; - XMP_OptionBits stepKind = nextStep.options & kXMP_StepKindMask; - - XMP_Assert ( (kXMP_StructFieldStep <= stepKind) && (stepKind <= kXMP_FieldSelectorStep) ); - - if ( stepKind == kXMP_StructFieldStep ) { - - nextNode = FindChildNode ( parentNode, nextStep.step.c_str(), createNodes, ptrPos ); - - } else if ( stepKind == kXMP_QualifierStep ) { - - XMP_StringPtr qualStep = nextStep.step.c_str(); - XMP_Assert ( *qualStep == '?' ); - ++qualStep; - nextNode = FindQualifierNode ( parentNode, qualStep, createNodes, ptrPos ); - - } else { - - // This is an array indexing step. First get the index, then get the node. - - if ( ! (parentNode->options & kXMP_PropValueIsArray) ) { - XMP_Throw ( "Indexing applied to non-array", kXMPErr_BadXPath ); - } - - if ( stepKind == kXMP_ArrayIndexStep ) { - index = FindIndexedItem ( parentNode, nextStep.step, createNodes ); - } else if ( stepKind == kXMP_ArrayLastStep ) { - index = parentNode->children.size() - 1; - } else if ( stepKind == kXMP_FieldSelectorStep ) { - XMP_VarString fieldName, fieldValue; - SplitNameAndValue ( nextStep.step, &fieldName, &fieldValue ); - index = LookupFieldSelector ( parentNode, fieldName.c_str(), fieldValue.c_str() ); - } else if ( stepKind == kXMP_QualSelectorStep ) { - XMP_VarString qualName, qualValue; - SplitNameAndValue ( nextStep.step, &qualName, &qualValue ); - index = LookupQualSelector ( parentNode, qualName, qualValue ); - } else { - XMP_Throw ( "Unknown array indexing step in FollowXPathStep", kXMPErr_InternalFailure ); - } - - if ( (0 <= index) && (index <= (XMP_Index)parentNode->children.size()) ) nextNode = parentNode->children[index]; - - if ( (index == -1) && createNodes && aliasedArrayItem && (stepKind == kXMP_QualSelectorStep) ) { - - // An ugly special case without an obvious better place to be. We have an alias to the - // x-default item of an alt-text array. A simple reference via SetProperty must create - // the x-default item if it does not yet exist. - - XMP_Assert ( parentNode->options & kXMP_PropArrayIsAltText ); - XMP_Assert ( (stepNum == 2) && (nextStep.step == "[?xml:lang=\"x-default\"]") ); - - nextNode = new XMP_Node ( parentNode, kXMP_ArrayItemName, - (kXMP_PropHasQualifiers | kXMP_PropHasLang | kXMP_NewImplicitNode) ); - - XMP_Node * langQual = new XMP_Node ( nextNode, "xml:lang", "x-default", kXMP_PropIsQualifier ); - nextNode->qualifiers.push_back ( langQual ); - - if ( parentNode->children.empty() ) { - parentNode->children.push_back ( nextNode ); - } else { - parentNode->children.insert ( parentNode->children.begin(), nextNode ); - } - - index = 0; // ! C-style index! The x-default item is always first. - - } - - if ( (nextNode != 0) && (ptrPos != 0) ) *ptrPos = parentNode->children.begin() + index; - - } - - if ( (nextNode != 0) && (nextNode->options & kXMP_NewImplicitNode) ) { - nextNode->options |= (nextStep.options & kXMP_PropArrayFormMask); - } - - XMP_Assert ( (ptrPos == 0) || (nextNode == 0) || (nextNode == **ptrPos) ); - XMP_Assert ( (nextNode != 0) || (! createNodes) ); - return nextNode; - -} // FollowXPathStep - -// ------------------------------------------------------------------------------------------------- -// CheckImplicitStruct -// ------------------- - -static inline void -CheckImplicitStruct ( XMP_Node * node, - const XMP_ExpandedXPath & expandedXPath, - size_t stepNum, - size_t stepLim ) -{ - - if ( (stepNum < stepLim) && - ((node->options & kXMP_PropCompositeMask) == 0) && - (GetStepKind ( expandedXPath[stepNum].options ) == kXMP_StructFieldStep) ) { - - node->options |= kXMP_PropValueIsStruct; - - } - -} // CheckImplicitStruct - -// ------------------------------------------------------------------------------------------------- -// DeleteSubtree -// ------------- - -// *** Might be useful elsewhere? - -static void -DeleteSubtree ( XMP_NodePtrPos rootNodePos ) -{ - XMP_Node * rootNode = *rootNodePos; - XMP_Node * rootParent = rootNode->parent; - - if ( ! (rootNode->options & kXMP_PropIsQualifier) ) { - - rootParent->children.erase ( rootNodePos ); - - } else { - - rootParent->qualifiers.erase ( rootNodePos ); - - XMP_Assert ( rootParent->options & kXMP_PropHasQualifiers); - if ( rootParent->qualifiers.empty() ) rootParent->options ^= kXMP_PropHasQualifiers; - - if ( rootNode->name == "xml:lang" ) { - XMP_Assert ( rootParent->options & kXMP_PropHasLang); - rootParent->options ^= kXMP_PropHasLang; - } else if ( rootNode->name == "rdf:type" ) { - XMP_Assert ( rootParent->options & kXMP_PropHasType); - rootParent->options ^= kXMP_PropHasType; - } - - } - - delete rootNode; - -} // DeleteSubtree - -// ================================================================================================= -// ================================================================================================= - -// ================================================================================================= -// VerifySetOptions -// ================ -// -// Normalize and verify the option flags for SetProperty and similar functions. The allowed options -// here are just those that apply to the property, that would be kept in the XMP_Node. Others that -// affect the selection of the node or other processing must be removed by now. These are: -// kXMP_InsertBeforeItem -// kXMP_InsertAfterItem -// kXMP_KeepQualifiers -// kXMPUtil_AllowCommas - -enum { - kXMP_AllSetOptionsMask = (kXMP_PropValueIsURI | - kXMP_PropValueIsStruct | - kXMP_PropValueIsArray | - kXMP_PropArrayIsOrdered | - kXMP_PropArrayIsAlternate | - kXMP_PropArrayIsAltText | - kXMP_DeleteExisting) -}; - -XMP_OptionBits -VerifySetOptions ( XMP_OptionBits options, XMP_StringPtr propValue ) -{ - - if ( options & kXMP_PropArrayIsAltText ) options |= kXMP_PropArrayIsAlternate; - if ( options & kXMP_PropArrayIsAlternate ) options |= kXMP_PropArrayIsOrdered; - if ( options & kXMP_PropArrayIsOrdered ) options |= kXMP_PropValueIsArray; - - if ( options & ~kXMP_AllSetOptionsMask ) { - XMP_Throw ( "Unrecognized option flags", kXMPErr_BadOptions ); - } - - if ( (options & kXMP_PropValueIsStruct) && (options & kXMP_PropValueIsArray) ) { - XMP_Throw ( "IsStruct and IsArray options are mutually exclusive", kXMPErr_BadOptions ); - } - - if ( (options & kXMP_PropValueOptionsMask) && (options & kXMP_PropCompositeMask) ) { - XMP_Throw ( "Structs and arrays can't have \"value\" options", kXMPErr_BadOptions ); - } - - if ( (propValue != 0) && (options & kXMP_PropCompositeMask) ) { - XMP_Throw ( "Structs and arrays can't have string values", kXMPErr_BadOptions ); - } - - return options; - -} // VerifySetOptions - -// ================================================================================================= -// ComposeXPath -// ============ -// -// Compose the canonical string form of an expanded XPath expression. - -extern void -ComposeXPath ( const XMP_ExpandedXPath & expandedXPath, - XMP_VarString * stringXPath ) -{ - *stringXPath = expandedXPath[kRootPropStep].step; - - for ( size_t index = kRootPropStep+1; index < expandedXPath.size(); ++index ) { - const XPathStepInfo & currStep = expandedXPath[index]; - - switch ( currStep.options & kXMP_StepKindMask ) { - - case kXMP_StructFieldStep : - case kXMP_QualifierStep : - *stringXPath += '/'; - *stringXPath += currStep.step; - break; - - case kXMP_ArrayIndexStep : - case kXMP_ArrayLastStep : - case kXMP_QualSelectorStep : - case kXMP_FieldSelectorStep : - *stringXPath += currStep.step; - break; - - default: - XMP_Throw ( "Unexpected", kXMPErr_InternalFailure ); - - } - - } - -} // ComposeXPath - -// ================================================================================================= -// ExpandXPath -// =========== -// -// Split an XPath expression apart at the conceptual steps, adding the root namespace prefix to the -// first property component. The schema URI is put in the first (0th) slot in the expanded XPath. -// Check if the top level component is an alias, but don't resolve it. -// -// In the most verbose case steps are separated by '/', and each step can be of these forms: -// -// qualName A top level property or struct field. -// *[index] An element of an array. -// *[last()] The last element of an array. -// *[fieldName="value"] An element in an array of structs, chosen by a field value. -// *[@xml:lang="value"] An element in an alt-text array, chosen by the xml:lang qualifier. -// *[?qualName="value"] An element in an array, chosen by a qualifier value. -// @xml:lang An xml:lang qualifier. -// ?qualName A general qualifier. -// -// The logic is complicated though by shorthand for arrays, the separating '/' and leading '*' -// are optional. These are all equivalent: array/*[2] array/[2] array*[2] array[2] -// All of these are broken into the 2 steps "array" and "[2]". -// -// The value portion in the array selector forms is a string quoted by ''' or '"'. The value -// may contain any character including a doubled quoting character. The value may be empty. -// -// The syntax isn't checked, but an XML name begins with a letter or '_', and contains letters, -// digits, '.', '-', '_', and a bunch of special non-ASCII Unicode characters. An XML qualified -// name is a pair of names separated by a colon. - -void -ExpandXPath ( XMP_StringPtr schemaNS, - XMP_StringPtr propPath, - XMP_ExpandedXPath * expandedXPath ) -{ - XMP_Assert ( (schemaNS != 0) && (propPath != 0) && (*propPath != 0) && (expandedXPath != 0) ); - - XMP_StringPtr stepBegin, stepEnd; - XMP_StringPtr qualName, nameEnd; - XMP_VarString currStep; - - qualName = nameEnd = NULL; - size_t resCount = 2; // Guess at the number of steps. At least 2, plus 1 for each '/' or '['. - for ( stepEnd = propPath; *stepEnd != 0; ++stepEnd ) { - if ( (*stepEnd == '/') || (*stepEnd == '[') ) ++resCount; - } - - expandedXPath->clear(); - expandedXPath->reserve ( resCount ); - - // ------------------------------------------------------------------------------------------- - // Pull out the first component and do some special processing on it: add the schema namespace - // prefix and see if it is an alias. The start must be a qualName. - - stepBegin = propPath; - stepEnd = stepBegin; - while ( (*stepEnd != 0) && (*stepEnd != '/') && (*stepEnd != '[') && (*stepEnd != '*') ) ++stepEnd; - if ( stepEnd == stepBegin ) XMP_Throw ( "Empty initial XPath step", kXMPErr_BadXPath ); - currStep.assign ( stepBegin, (stepEnd - stepBegin) ); - - VerifyXPathRoot ( schemaNS, currStep.c_str(), expandedXPath ); - - XMP_OptionBits stepFlags = kXMP_StructFieldStep; - if ( sRegisteredAliasMap->find ( (*expandedXPath)[kRootPropStep].step ) != sRegisteredAliasMap->end() ) { - stepFlags |= kXMP_StepIsAlias; - } - (*expandedXPath)[kRootPropStep].options |= stepFlags; - - // ----------------------------------------------------- - // Now continue to process the rest of the XPath string. - - while ( *stepEnd != 0 ) { - - stepBegin = stepEnd; - if ( *stepBegin == '/' ) ++stepBegin; - if ( *stepBegin == '*' ) { - ++stepBegin; - if ( *stepBegin != '[' ) XMP_Throw ( "Missing '[' after '*'", kXMPErr_BadXPath ); - } - stepEnd = stepBegin; - - if ( *stepBegin != '[' ) { - - // A struct field or qualifier. - qualName = stepBegin; - while ( (*stepEnd != 0) && (*stepEnd != '/') && (*stepEnd != '[') && (*stepEnd != '*') ) ++stepEnd; - nameEnd = stepEnd; - stepFlags = kXMP_StructFieldStep; // ! Touch up later, also changing '@' to '?'. - - } else { - - // One of the array forms. - - ++stepEnd; // Look at the character after the leading '['. - - if ( ('0' <= *stepEnd) && (*stepEnd <= '9') ) { - - // A numeric (decimal integer) array index. - while ( (*stepEnd != 0) && ('0' <= *stepEnd) && (*stepEnd <= '9') ) ++stepEnd; - if ( *stepEnd != ']' ) XMP_Throw ( "Missing ']' for integer array index", kXMPErr_BadXPath ); - stepFlags = kXMP_ArrayIndexStep; - - } else { - - // Could be "[last()]" or one of the selector forms. Find the ']' or '='. - - while ( (*stepEnd != 0) && (*stepEnd != ']') && (*stepEnd != '=') ) ++stepEnd; - if ( *stepEnd == 0 ) XMP_Throw ( "Missing ']' or '=' for array index", kXMPErr_BadXPath ); - - if ( *stepEnd == ']' ) { - - if ( strncmp ( "[last()", stepBegin, (stepEnd - stepBegin) ) != 0 ) { - XMP_Throw ( "Invalid non-numeric array index", kXMPErr_BadXPath ); - } - stepFlags = kXMP_ArrayLastStep; - - } else { - - qualName = stepBegin+1; - nameEnd = stepEnd; - ++stepEnd; // Absorb the '=', remember the quote. - const char quote = *stepEnd; - if ( (quote != '\'') && (quote != '"') ) { - XMP_Throw ( "Invalid quote in array selector", kXMPErr_BadXPath ); - } - - ++stepEnd; // Absorb the leading quote. - while ( *stepEnd != 0 ) { - if ( *stepEnd == quote ) { - if ( *(stepEnd+1) != quote ) break; - ++stepEnd; - } - ++stepEnd; - } - if ( *stepEnd == 0 ) { - XMP_Throw ( "No terminating quote for array selector", kXMPErr_BadXPath ); - } - ++stepEnd; // Absorb the trailing quote. - - stepFlags = kXMP_FieldSelectorStep; // ! Touch up later, also changing '@' to '?'. - - } - - } - - if ( *stepEnd != ']' ) XMP_Throw ( "Missing ']' for array index", kXMPErr_BadXPath ); - ++stepEnd; - - } - - if ( stepEnd == stepBegin ) XMP_Throw ( "Empty XPath step", kXMPErr_BadXPath ); - currStep.assign ( stepBegin, (stepEnd - stepBegin) ); - - if ( GetStepKind ( stepFlags ) == kXMP_StructFieldStep ) { - - if ( currStep[0] == '@' ) { - currStep[0] = '?'; - if ( currStep != "?xml:lang" ) XMP_Throw ( "Only xml:lang allowed with '@'", kXMPErr_BadXPath ); - } - if ( currStep[0] == '?' ) { - ++qualName; - stepFlags = kXMP_QualifierStep; - } - VerifyQualName ( qualName, nameEnd ); - - } else if ( GetStepKind ( stepFlags ) == kXMP_FieldSelectorStep ) { - - if ( currStep[1] == '@' ) { - currStep[1] = '?'; - if ( strncmp ( currStep.c_str(), "[?xml:lang=", 11 ) != 0 ) { - XMP_Throw ( "Only xml:lang allowed with '@'", kXMPErr_BadXPath ); - } - } - if ( currStep[1] == '?' ) { - ++qualName; - stepFlags = kXMP_QualSelectorStep; - } - VerifyQualName ( qualName, nameEnd ); - - } - - expandedXPath->push_back ( XPathStepInfo ( currStep, stepFlags ) ); - - } - -} // ExpandXPath - -// ================================================================================================= -// FindSchemaNode -// ============== -// -// Find or create a schema node. Returns a pointer to the node, and optionally an iterator for the -// node's position in the top level vector of schema nodes. The iterator is unchanged if no schema -// node (null) is returned. - -XMP_Node * -FindSchemaNode ( XMP_Node * xmpTree, - XMP_StringPtr nsURI, - bool createNodes, - XMP_NodePtrPos * ptrPos /* = 0 */ ) -{ - XMP_Node * schemaNode = 0; - - XMP_Assert ( xmpTree->parent == 0 ); - - for ( size_t schemaNum = 0, schemaLim = xmpTree->children.size(); schemaNum != schemaLim; ++schemaNum ) { - XMP_Node * currSchema = xmpTree->children[schemaNum]; - XMP_Assert ( currSchema->parent == xmpTree ); - if ( currSchema->name == nsURI ) { - schemaNode = currSchema; - if ( ptrPos != 0 ) *ptrPos = xmpTree->children.begin() + schemaNum; - break; - } - } - - if ( (schemaNode == 0) && createNodes ) { - - schemaNode = new XMP_Node ( xmpTree, nsURI, (kXMP_SchemaNode | kXMP_NewImplicitNode) ); - XMP_StringPtr prefixPtr; - XMP_StringLen prefixLen; - bool found = false; - found = XMPMeta::GetNamespacePrefix ( nsURI, &prefixPtr, &prefixLen ); // *** Use map directly? - XMP_Assert ( found ); - - schemaNode->value.assign ( prefixPtr, prefixLen ); - xmpTree->children.push_back ( schemaNode ); - if ( ptrPos != 0 ) *ptrPos = xmpTree->children.end() - 1; - - #if 0 // *** XMP_DebugBuild - schemaNode->_valuePtr = schemaNode->value.c_str(); - #endif - - } - - XMP_Assert ( (ptrPos == 0) || (schemaNode == 0) || (schemaNode == **ptrPos) ); - XMP_Assert ( (schemaNode != 0) || (! createNodes) ); - return schemaNode; - -} // FindSchemaNode - -// ================================================================================================= -// FindChildNode -// ============= -// -// Find or create a child node under a given parent node. Returns a pointer to the child node, and -// optionally an iterator for the node's position in the parent's vector of children. The iterator -// is unchanged if no child node (null) is returned. - -XMP_Node * -FindChildNode ( XMP_Node * parent, - XMP_StringPtr childName, - bool createNodes, - XMP_NodePtrPos * ptrPos /* = 0 */ ) -{ - XMP_Node * childNode = 0; - - if ( ! (parent->options & (kXMP_SchemaNode | kXMP_PropValueIsStruct)) ) { - if ( ! (parent->options & kXMP_NewImplicitNode) ) { - XMP_Throw ( "Named children only allowed for schemas and structs", kXMPErr_BadXPath ); - } - if ( parent->options & kXMP_PropValueIsArray ) { - XMP_Throw ( "Named children not allowed for arrays", kXMPErr_BadXPath ); - } - if ( ! createNodes ) { // *** Should be assert? If !createNodes, why is the parent a new implicit node? - XMP_Throw ( "Parent is new implicit node, but createNodes is false", kXMPErr_InternalFailure ); - } - parent->options |= kXMP_PropValueIsStruct; - } - - for ( size_t childNum = 0, childLim = parent->children.size(); childNum != childLim; ++childNum ) { - XMP_Node * currChild = parent->children[childNum]; - XMP_Assert ( currChild->parent == parent ); - if ( currChild->name == childName ) { - childNode = currChild; - if ( ptrPos != 0 ) *ptrPos = parent->children.begin() + childNum; - break; - } - } - - if ( (childNode == 0) && createNodes ) { - childNode = new XMP_Node ( parent, childName, kXMP_NewImplicitNode ); - parent->children.push_back ( childNode ); - if ( ptrPos != 0 ) *ptrPos = parent->children.end() - 1; - } - - XMP_Assert ( (ptrPos == 0) || (childNode == 0) || (childNode == **ptrPos) ); - XMP_Assert ( (childNode != 0) || (! createNodes) ); - return childNode; - -} // FindChildNode - -// ================================================================================================= -// FindQualifierNode -// ================= -// -// Find or create a qualifier node under a given parent node. Returns a pointer to the qualifier node, -// and optionally an iterator for the node's position in the parent's vector of qualifiers. The iterator -// is unchanged if no qualifier node (null) is returned. -// -// ! On entry, the qualName parameter must not have the leading '?' from the XPath step. - -XMP_Node * -FindQualifierNode ( XMP_Node * parent, - XMP_StringPtr qualName, - bool createNodes, - XMP_NodePtrPos * ptrPos /* = 0 */ ) // *** Require ptrPos internally & remove checks? -{ - XMP_Node * qualNode = 0; - - XMP_Assert ( *qualName != '?' ); - - for ( size_t qualNum = 0, qualLim = parent->qualifiers.size(); qualNum != qualLim; ++qualNum ) { - XMP_Node * currQual = parent->qualifiers[qualNum]; - XMP_Assert ( currQual->parent == parent ); - if ( currQual->name == qualName ) { - qualNode = currQual; - if ( ptrPos != 0 ) *ptrPos = parent->qualifiers.begin() + qualNum; - break; - } - } - - if ( (qualNode == 0) && createNodes ) { - - qualNode = new XMP_Node ( parent, qualName, (kXMP_PropIsQualifier | kXMP_NewImplicitNode) ); - parent->options |= kXMP_PropHasQualifiers; - - const bool isLang = XMP_LitMatch ( qualName, "xml:lang" ); - const bool isType = XMP_LitMatch ( qualName, "rdf:type" ); - const bool isSpecial = isLang | isType; - - if ( isLang ) { - parent->options |= kXMP_PropHasLang; - } else if ( isType ) { - parent->options |= kXMP_PropHasType; - } - - if ( parent->qualifiers.empty() || (! isSpecial) ) { - parent->qualifiers.push_back ( qualNode ); - if ( ptrPos != 0 ) *ptrPos = parent->qualifiers.end() - 1; - } else { - XMP_NodePtrPos insertPos = parent->qualifiers.begin(); // ! Lang goes first, type after. - if ( isType && (parent->options & kXMP_PropHasLang) ) ++insertPos; // *** Does insert at end() work? - insertPos = parent->qualifiers.insert ( insertPos, qualNode ); - if ( ptrPos != 0 ) *ptrPos = insertPos; - } - - } - - XMP_Assert ( (ptrPos == 0) || (qualNode == 0) || (qualNode == **ptrPos) ); - XMP_Assert ( (qualNode != 0) || (! createNodes) ); - return qualNode; - -} // FindQualifierNode - -// ================================================================================================= -// LookupFieldSelector -// =================== -// -// [fieldName="value"] An element in an array of structs, chosen by a field value. -// -// Note that we don't create implicit nodes for field selectors, so no CreateNodes parameter. - -XMP_Index -LookupFieldSelector ( const XMP_Node * arrayNode, XMP_StringPtr fieldName, XMP_StringPtr fieldValue ) -{ - XMP_Index index, itemLim; - - for ( index = 0, itemLim = arrayNode->children.size(); index != itemLim; ++index ) { - - const XMP_Node * currItem = arrayNode->children[index]; - XMP_Assert ( currItem->parent == arrayNode ); - - if ( ! (currItem->options & kXMP_PropValueIsStruct) ) { - XMP_Throw ( "Field selector must be used on array of struct", kXMPErr_BadXPath ); - } - - size_t f, fieldLim; - for ( f = 0, fieldLim = currItem->children.size(); f != fieldLim; ++f ) { - const XMP_Node * currField = currItem->children[f]; - XMP_Assert ( currField->parent == currItem ); - if ( currField->name != fieldName ) continue; - if ( currField->value == fieldValue ) break; // Exit qual loop. - } - if ( f != fieldLim ) break; // Exit child loop, found an item with a matching qualifier. - - } - - if ( index == itemLim ) index = -1; - return index; - -} // LookupFieldSelector - -// ================================================================================================= -// LookupLangItem -// ============== -// -// ! Assumes that the language value is already normalized. - -XMP_Index -LookupLangItem ( const XMP_Node * arrayNode, XMP_VarString & lang ) -{ - if ( ! (arrayNode->options & kXMP_PropValueIsArray) ) { // *** Check for alt-text? - XMP_Throw ( "Language item must be used on array", kXMPErr_BadXPath ); - } - - XMP_Index index = 0; - XMP_Index itemLim = arrayNode->children.size(); - - for ( ; index != itemLim; ++index ) { - const XMP_Node * currItem = arrayNode->children[index]; - XMP_Assert ( currItem->parent == arrayNode ); - if ( currItem->qualifiers.empty() || (currItem->qualifiers[0]->name != "xml:lang") ) continue; - if ( currItem->qualifiers[0]->value == lang ) break; - } - - if ( index == itemLim ) index = -1; - return index; - -} // LookupLangItem - -// ================================================================================================= -// FindNode -// ======== -// -// Follow an expanded path expression to find or create a node. Returns a pointer to the node, and -// optionally an iterator for the node's position in the parent's vector of children or qualifiers. -// The iterator is unchanged if no child node (null) is returned. - -XMP_Node * -FindNode ( XMP_Node * xmpTree, - const XMP_ExpandedXPath & expandedXPath, - bool createNodes, - XMP_OptionBits leafOptions /* = 0 */, - XMP_NodePtrPos * ptrPos /* = 0 */ ) -{ - XMP_Node * currNode = 0; - XMP_NodePtrPos currPos; - XMP_NodePtrPos newSubPos; // Root of implicitly created subtree. Valid only if leaf is new. - bool leafIsNew = false; - - XMP_Assert ( (leafOptions == 0) || createNodes ); - - if ( expandedXPath.empty() ) XMP_Throw ( "Empty XPath", kXMPErr_BadXPath ); - - size_t stepNum = 1; // By default start calling FollowXPathStep for the top level property step. - size_t stepLim = expandedXPath.size(); - - // The start of processing deals with the schema node and top level alias. If the top level step - // is not an alias, lookup the expanded path's schema URI. Otherwise, lookup the expanded path - // for the actual. While tempting, don't substitute the actual's path into the local one, don't - // risk messing with the caller's use of that. Also don't call FindNode recursively, we need to - // keep track of the root of the implicitly created subtree as we move down the path. - - if ( ! (expandedXPath[kRootPropStep].options & kXMP_StepIsAlias) ) { - - currNode = FindSchemaNode ( xmpTree, expandedXPath[kSchemaStep].step.c_str(), createNodes, &currPos ); - if ( currNode == 0 ) return 0; - - if ( currNode->options & kXMP_NewImplicitNode ) { - currNode->options ^= kXMP_NewImplicitNode; // Clear the implicit node bit. - if ( ! leafIsNew ) newSubPos = currPos; // Save the top most implicit node. - leafIsNew = true; // If any parent is new, the leaf will be new also. - } - - } else { - - stepNum = 2; // ! Continue processing the original path at the second level step. - - XMP_AliasMapPos aliasPos = sRegisteredAliasMap->find ( expandedXPath[kRootPropStep].step ); - XMP_Assert ( aliasPos != sRegisteredAliasMap->end() ); - - currNode = FindSchemaNode ( xmpTree, aliasPos->second[kSchemaStep].step.c_str(), createNodes, &currPos ); - if ( currNode == 0 ) goto EXIT; - if ( currNode->options & kXMP_NewImplicitNode ) { - currNode->options ^= kXMP_NewImplicitNode; // Clear the implicit node bit. - if ( ! leafIsNew ) newSubPos = currPos; // Save the top most implicit node. - leafIsNew = true; // If any parent is new, the leaf will be new also. - } - - currNode = FollowXPathStep ( currNode, aliasPos->second, 1, createNodes, &currPos ); - if ( currNode == 0 ) goto EXIT; - if ( currNode->options & kXMP_NewImplicitNode ) { - currNode->options ^= kXMP_NewImplicitNode; // Clear the implicit node bit. - CheckImplicitStruct ( currNode, expandedXPath, 2, stepLim ); - if ( ! leafIsNew ) newSubPos = currPos; // Save the top most implicit node. - leafIsNew = true; // If any parent is new, the leaf will be new also. - } - - XMP_OptionBits arrayForm = aliasPos->second[kRootPropStep].options & kXMP_PropArrayFormMask; - XMP_Assert ( (arrayForm == 0) || (arrayForm & kXMP_PropValueIsArray) ); - XMP_Assert ( (arrayForm == 0) ? (aliasPos->second.size() == 2) : (aliasPos->second.size() == 3) ); - - if ( arrayForm != 0 ) { - currNode = FollowXPathStep ( currNode, aliasPos->second, 2, createNodes, &currPos, true ); - if ( currNode == 0 ) goto EXIT; - if ( currNode->options & kXMP_NewImplicitNode ) { - currNode->options ^= kXMP_NewImplicitNode; // Clear the implicit node bit. - CheckImplicitStruct ( currNode, expandedXPath, 2, stepLim ); - if ( ! leafIsNew ) newSubPos = currPos; // Save the top most implicit node. - leafIsNew = true; // If any parent is new, the leaf will be new also. - } - } - - } - - // Now follow the remaining steps of the original XPath. - - // *** ??? Change all the num/lim loops back to numoptions & kXMP_NewImplicitNode ) { - currNode->options ^= kXMP_NewImplicitNode; // Clear the implicit node bit. - CheckImplicitStruct ( currNode, expandedXPath, stepNum+1, stepLim ); - if ( ! leafIsNew ) newSubPos = currPos; // Save the top most implicit node. - leafIsNew = true; // If any parent is new, the leaf will be new also. - } - } - } catch ( ... ) { - if ( leafIsNew ) DeleteSubtree ( newSubPos ); - throw; - } - - // Done. Delete the implicitly created subtree if the eventual node was not found. - -EXIT: - - XMP_Assert ( (currNode == 0) || (currNode == *currPos) ); - XMP_Assert ( (currNode != 0) || (! createNodes) ); - - if ( leafIsNew ) { - if ( currNode != 0 ) { - currNode->options |= leafOptions; - } else { - DeleteSubtree ( newSubPos ); - } - } - - if ( (currNode != 0) && (ptrPos != 0) ) *ptrPos = currPos; - return currNode; - -} // FindNode - -// ================================================================================================= -// CloneOffspring -// ============== - -void -CloneOffspring ( const XMP_Node * origParent, XMP_Node * cloneParent ) -{ - size_t qualCount = origParent->qualifiers.size(); - size_t childCount = origParent->children.size(); - - if ( qualCount > 0 ) { - - cloneParent->qualifiers.reserve ( qualCount ); - - for ( size_t qualNum = 0, qualLim = qualCount; qualNum != qualLim; ++qualNum ) { - const XMP_Node * origQual = origParent->qualifiers[qualNum]; - XMP_Node * cloneQual = new XMP_Node ( cloneParent, origQual->name, origQual->value, origQual->options ); - CloneOffspring ( origQual, cloneQual ); - cloneParent->qualifiers.push_back ( cloneQual ); - } - - } - - if ( childCount > 0 ) { - - cloneParent->children.reserve ( childCount ); - - for ( size_t childNum = 0, childLim = childCount; childNum != childLim; ++childNum ) { - const XMP_Node * origChild = origParent->children[childNum]; - XMP_Node * cloneChild = new XMP_Node ( cloneParent, origChild->name, origChild->value, origChild->options ); - CloneOffspring ( origChild, cloneChild ); - cloneParent->children.push_back ( cloneChild ); - } - - } - -} // CloneOffspring - -// ================================================================================================= -// CloneSubtree -// ============ - -XMP_Node * -CloneSubtree ( const XMP_Node * origRoot, XMP_Node * cloneParent ) -{ - #if XMP_DebugBuild - if ( cloneParent->parent == 0 ) { - XMP_Assert ( origRoot->options & kXMP_SchemaNode ); - XMP_Assert ( FindConstSchema ( cloneParent, origRoot->name.c_str() ) == 0 ); - } else { - XMP_Assert ( ! (origRoot->options & kXMP_SchemaNode) ); - if ( cloneParent->options & kXMP_PropValueIsStruct ) { // Might be an array. - XMP_Assert ( FindConstChild ( cloneParent, origRoot->name.c_str() ) == 0 ); - } - } - #endif - - XMP_Node * cloneRoot = new XMP_Node ( cloneParent, origRoot->name, origRoot->value, origRoot->options ); - CloneOffspring ( origRoot, cloneRoot ) ; - cloneParent->children.push_back ( cloneRoot ); - - return cloneRoot; - -} // CloneSubtree - -// ================================================================================================= -// CompareSubtrees -// =============== -// -// Compare 2 subtrees for semantic equality. The comparison includes value, qualifiers, and form. -// Schemas, top level properties, struct fields, and qualifiers are allowed to have differing order, -// the appropriate right node is found from the left node's name. Alt-text arrays are allowed to be -// in differing language order, other arrays are compared in order. - -// *** Might someday consider sorting unordered arrays. -// *** Should expose this through XMPUtils. - -bool -CompareSubtrees ( const XMP_Node & leftNode, const XMP_Node & rightNode ) -{ - // Don't compare the names here, we want to allow the outermost roots to have different names. - if ( (leftNode.value != rightNode.value) || - (leftNode.options != rightNode.options) || - (leftNode.children.size() != rightNode.children.size()) || - (leftNode.qualifiers.size() != rightNode.qualifiers.size()) ) return false; - - // Compare the qualifiers, allowing them to be out of order. - for ( size_t qualNum = 0, qualLim = leftNode.qualifiers.size(); qualNum != qualLim; ++qualNum ) { - const XMP_Node * leftQual = leftNode.qualifiers[qualNum]; - const XMP_Node * rightQual = FindConstQualifier ( &rightNode, leftQual->name.c_str() ); - if ( (rightQual == 0) || (! CompareSubtrees ( *leftQual, *rightQual )) ) return false; - } - - if ( (leftNode.parent == 0) || (leftNode.options & (kXMP_SchemaNode | kXMP_PropValueIsStruct)) ) { - - // The parent node is a tree root, a schema, or a struct. - for ( size_t childNum = 0, childLim = leftNode.children.size(); childNum != childLim; ++childNum ) { - const XMP_Node * leftChild = leftNode.children[childNum]; - const XMP_Node * rightChild = FindConstChild ( &rightNode, leftChild->name.c_str() ); - if ( (rightChild == 0) || (! CompareSubtrees ( *leftChild, *rightChild )) ) return false; - } - - } else if ( leftNode.options & kXMP_PropArrayIsAltText ) { - - // The parent node is an alt-text array. - for ( size_t childNum = 0, childLim = leftNode.children.size(); childNum != childLim; ++childNum ) { - const XMP_Node * leftChild = leftNode.children[childNum]; - XMP_Assert ( (! leftChild->qualifiers.empty()) && (leftChild->qualifiers[0]->name == "xml:lang") ); - XMP_Index rightIndex = LookupLangItem ( &rightNode, leftChild->qualifiers[0]->value ); - if ( rightIndex == -1 ) return false; - const XMP_Node * rightChild = rightNode.children[rightIndex]; - if ( ! CompareSubtrees ( *leftChild, *rightChild ) ) return false; - } - - } else { - - // The parent must be simple or some other (not alt-text) kind of array. - XMP_Assert ( (! (leftNode.options & kXMP_PropCompositeMask)) || (leftNode.options & kXMP_PropValueIsArray) ); - for ( size_t childNum = 0, childLim = leftNode.children.size(); childNum != childLim; ++childNum ) { - const XMP_Node * leftChild = leftNode.children[childNum]; - const XMP_Node * rightChild = rightNode.children[childNum]; - if ( ! CompareSubtrees ( *leftChild, *rightChild ) ) return false; - } - - } - - return true; - -} // CompareSubtrees - -// ================================================================================================= -// DeleteEmptySchema -// ================= - -void -DeleteEmptySchema ( XMP_Node * schemaNode ) -{ - - if ( XMP_NodeIsSchema ( schemaNode->options ) && schemaNode->children.empty() ) { - - XMP_Node * xmpTree = schemaNode->parent; - - size_t schemaNum = 0; - size_t schemaLim = xmpTree->children.size(); - while ( (schemaNum < schemaLim) && (xmpTree->children[schemaNum] != schemaNode) ) ++schemaNum; - XMP_Assert ( schemaNum < schemaLim ); - - XMP_NodePtrPos schemaPos = xmpTree->children.begin() + schemaNum; - XMP_Assert ( *schemaPos == schemaNode ); - - xmpTree->children.erase ( schemaPos ); - delete schemaNode; - - } - -} // DeleteEmptySchema - -// ================================================================================================= -// NormalizeLangValue -// ================== -// -// Normalize an xml:lang value so that comparisons are effectively case insensitive as required by -// RFC 3066 (which superceeds RFC 1766). The normalization rules: -// -// - The primary subtag is lower case, the suggested practice of ISO 639. -// - All 2 letter secondary subtags are upper case, the suggested practice of ISO 3166. -// - All other subtags are lower case. - -void -NormalizeLangValue ( XMP_VarString * value ) -{ - char * tagStart; - char * tagEnd; - - // Find and process the primary subtag. - - tagStart = (char*) value->c_str(); - for ( tagEnd = tagStart; (*tagEnd != 0) && (*tagEnd != '-'); ++tagEnd ) { - if ( ('A' <= *tagEnd) && (*tagEnd <= 'Z') ) *tagEnd += 0x20; - } - - // Find and process the secondary subtag. - - tagStart = tagEnd; - if ( *tagStart == '-' ) ++tagStart; - for ( tagEnd = tagStart; (*tagEnd != 0) && (*tagEnd != '-'); ++tagEnd ) { - if ( ('A' <= *tagEnd) && (*tagEnd <= 'Z') ) *tagEnd += 0x20; - } - if ( tagEnd == tagStart+2 ) { - if ( ('a' <= *tagStart) && (*tagStart <= 'z') ) *tagStart -= 0x20; - ++tagStart; - if ( ('a' <= *tagStart) && (*tagStart <= 'z') ) *tagStart -= 0x20; - } - - // Find and process the remaining subtags. - - while ( true ) { - tagStart = tagEnd; - if ( *tagStart == '-' ) ++tagStart; - if ( *tagStart == 0 ) break; - for ( tagEnd = tagStart; (*tagEnd != 0) && (*tagEnd != '-'); ++tagEnd ) { - if ( ('A' <= *tagEnd) && (*tagEnd <= 'Z') ) *tagEnd += 0x20; - } - } - -} // NormalizeLangValue - -// ================================================================================================= -// NormalizeLangArray -// ================== -// -// Make sure the x-default item is first. Touch up "single value" arrays that have a default plus -// one real language. This case should have the same value for both items. Older Adobe apps were -// hardwired to only use the 'x-default' item, so we copy that value to the other item. - -void -NormalizeLangArray ( XMP_Node * array ) -{ - XMP_Assert ( XMP_ArrayIsAltText(array->options) ); - - size_t itemNum; - size_t itemLim = array->children.size(); - bool hasDefault = false; - - for ( itemNum = 0; itemNum < itemLim; ++itemNum ) { - - if ( array->children[itemNum]->qualifiers.empty() || - (array->children[itemNum]->qualifiers[0]->name != "xml:lang") ) { - XMP_Throw ( "AltText array items must have an xml:lang qualifier", kXMPErr_BadXMP ); - } - - if ( array->children[itemNum]->qualifiers[0]->value == "x-default" ) { - hasDefault = true; - break; - } - - } - - if ( hasDefault ) { - - if ( itemNum != 0 ) { - XMP_Node * temp = array->children[0]; - array->children[0] = array->children[itemNum]; - array->children[itemNum] = temp; - } - -// 09-Oct-07, ahu: disabled to avoid unexpected behaviour -// if ( itemLim == 2 ) array->children[1]->value = array->children[0]->value; - - } - -} // NormalizeLangArray - -// ================================================================================================= -// DetectAltText -// ============= -// -// See if an array is an alt-text array. If so, make sure the x-default item is first. - -void -DetectAltText ( XMP_Node * xmpParent ) -{ - XMP_Assert ( XMP_ArrayIsAlternate(xmpParent->options) ); - - size_t itemNum, itemLim; - - for ( itemNum = 0, itemLim = xmpParent->children.size(); itemNum < itemLim; ++itemNum ) { - XMP_OptionBits currOptions = xmpParent->children[itemNum]->options; - if ( (currOptions & kXMP_PropCompositeMask) || (! (currOptions & kXMP_PropHasLang)) ) break; - } - - if ( (itemLim != 0) && (itemNum == itemLim) ) { - xmpParent->options |= kXMP_PropArrayIsAltText; - NormalizeLangArray ( xmpParent ); - } - -} // DetectAltText - -// ================================================================================================= -// SortNamedNodes -// ============== -// -// Sort the pointers in an XMP_NodeOffspring vector by name. - -static inline bool Compare ( const XMP_Node * left, const XMP_Node * right ) -{ - return (left->name < right->name); -} - -void -SortNamedNodes ( XMP_NodeOffspring & nodeVector ) -{ - sort ( nodeVector.begin(), nodeVector.end(), Compare ); -} // SortNamedNodes - -// ================================================================================================= diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPCore_Impl.hpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPCore_Impl.hpp deleted file mode 100644 index 7d57de6c5ef..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPCore_Impl.hpp +++ /dev/null @@ -1,534 +0,0 @@ -#ifndef __XMPCore_Impl_hpp__ -#define __XMPCore_Impl_hpp__ - -// ================================================================================================= -// Copyright 2002-2008 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#include "XMP_Environment.h" // ! Must be the first #include! -#include "XMP_Const.h" -#include "XMP_BuildInfo.h" - -#include "client-glue/WXMPMeta.hpp" - -#include -#include -#include - -#include -#include - -#if XMP_WinBuild - #include -#else - // Use pthread for both Mac and generic UNIX. - #include -#endif - -#if XMP_WinBuild -# ifdef _MSC_VER - #pragma warning ( disable : 4244 ) // possible loss of data (temporary for 64 bit builds) - #pragma warning ( disable : 4267 ) // possible loss of data (temporary for 64 bit builds) -# endif -#endif - -// ================================================================================================= -// Primary internal types - -class XMP_Node; -class XML_Node; -class XPathStepInfo; - -typedef XMP_Node * XMP_NodePtr; - -typedef std::vector XMP_NodeOffspring; -typedef XMP_NodeOffspring::iterator XMP_NodePtrPos; - -typedef std::string XMP_VarString; -typedef XMP_VarString::iterator XMP_VarStringPos; -typedef XMP_VarString::const_iterator XMP_cVarStringPos; - -typedef std::pair < XMP_VarString, XMP_VarString > XMP_StringPair; - -typedef std::map < XMP_VarString, XMP_VarString > XMP_StringMap; -typedef XMP_StringMap::iterator XMP_StringMapPos; -typedef XMP_StringMap::const_iterator XMP_cStringMapPos; - -typedef std::vector < XPathStepInfo > XMP_ExpandedXPath; -typedef XMP_ExpandedXPath::iterator XMP_ExpandedXPathPos; -typedef XMP_ExpandedXPath::const_iterator XMP_cExpandedXPathPos; - -typedef std::map < XMP_VarString, XMP_ExpandedXPath > XMP_AliasMap; // Alias name to actual path. -typedef XMP_AliasMap::iterator XMP_AliasMapPos; -typedef XMP_AliasMap::const_iterator XMP_cAliasMapPos; - -// ================================================================================================= -// General global variables and macros - -extern XMP_Int32 sXMP_InitCount; - -extern XMP_AliasMap * sRegisteredAliasMap; - -extern XMP_StringMap * sNamespaceURIToPrefixMap; -extern XMP_StringMap * sNamespacePrefixToURIMap; - -extern XMP_VarString * sOutputNS; -extern XMP_VarString * sOutputStr; - -extern void * voidVoidPtr; // Used to backfill null output parameters. -extern XMP_StringPtr voidStringPtr; -extern XMP_StringLen voidStringLen; -extern XMP_OptionBits voidOptionBits; -extern XMP_Bool voidByte; -extern bool voidBool; -extern XMP_Int32 voidInt32; -extern XMP_Int64 voidInt64; -extern double voidDouble; -extern XMP_DateTime voidDateTime; -extern WXMP_Result void_wResult; - -#define kHexDigits "0123456789ABCDEF" - -#define XMP_LitMatch(s,l) (std::strcmp((s),(l)) == 0) -#define XMP_LitNMatch(s,l,n) (std::strncmp((s),(l),(n)) == 0) - // *** Use the above macros! - -#define kTab ((char)0x09) -#define kLF ((char)0x0A) -#define kCR ((char)0x0D) - -#if XMP_WinBuild - #define snprintf _snprintf -#endif - -#define WtoXMPMeta_Ref(xmpRef) *((const XMPMeta *)(xmpRef)) -#define WtoXMPMeta_Ptr(xmpRef) (((xmpRef) == 0) ? 0 : (XMPMeta *)(xmpRef)) - -#define WtoXMPIterator_Ref(iterRef) *((const XMPIterator *)(iterRef)) -#define WtoXMPIterator_Ptr(iterRef) (((iterRef) == 0) ? 0 : (XMPIterator *)(iterRef)) - -#define WtoXMPDocOps_Ref(docRef) *((const XMPDocOps *)(docRef)) -#define WtoXMPDocOps_Ptr(docRef) (((docRef) == 0) ? 0 : (XMPDocOps *)(docRef)) - -#define IgnoreParam(p) voidVoidPtr = (void*)&p - -// ================================================================================================= -// Version info - -#if XMP_DebugBuild - #define kXMPCore_DebugFlag 1 -#else - #define kXMPCore_DebugFlag 0 -#endif - -#define kXMPCore_VersionNumber ( (kXMPCore_DebugFlag << 31) | \ - (XMP_API_VERSION_MAJOR << 24) | \ - (XMP_API_VERSION_MINOR << 16) | \ - (XMP_API_VERSION_MICRO << 8) ) - - #define kXMPCoreName "XMP Core" - #define kXMPCore_VersionMessage kXMPCoreName " " XMP_API_VERSION_STRING -// ================================================================================================= -// Support for asserts - -#define _MakeStr(p) #p -#define _NotifyMsg(n,c,f,l) #n " failed: " #c " in " f " at line " _MakeStr(l) - -#if ! XMP_DebugBuild - #define XMP_Assert(c) ((void) 0) -#else - #define XMP_Assert(c) assert ( c ) -#endif - - #define XMP_Enforce(c) \ - if ( ! (c) ) { \ - const char * assert_msg = _NotifyMsg ( XMP_Enforce, (c), __FILE__, __LINE__ ); \ - XMP_Throw ( assert_msg , kXMPErr_EnforceFailure ); \ - } -// ================================================================================================= -// Support for exceptions and thread locking - -#ifndef TraceXMPCalls - #define TraceXMPCalls 0 -#endif - -#if ! TraceXMPCalls - - #define AnnounceThrow(msg) /* Do nothing. */ - #define AnnounceCatch(msg) /* Do nothing. */ - - #define AnnounceEntry(proc) /* Do nothing. */ - #define AnnounceNoLock(proc) /* Do nothing. */ - #define AnnounceExit() /* Do nothing. */ - - #define ReportLock() ++sLockCount - #define ReportUnlock() --sLockCount - #define ReportKeepLock() /* Do nothing. */ - -#else - - extern FILE * xmpCoreOut; - - #define AnnounceThrow(msg) \ - fprintf ( xmpCoreOut, "XMP_Throw: %s\n", msg ); fflush ( xmpOut ) - #define AnnounceCatch(msg) \ - fprintf ( xmpCoreOut, "Catch in %s: %s\n", procName, msg ); fflush ( xmpOut ) - - #define AnnounceEntry(proc) \ - const char * procName = proc; \ - fprintf ( xmpCoreOut, "Entering %s\n", procName ); fflush ( xmpOut ) - #define AnnounceNoLock(proc) \ - const char * procName = proc; \ - fprintf ( xmpCoreOut, "Entering %s (no lock)\n", procName ); fflush ( xmpOut ) - #define AnnounceExit() \ - fprintf ( xmpCoreOut, "Exiting %s\n", procName ); fflush ( xmpOut ) - - #define ReportLock() \ - ++sLockCount; fprintf ( xmpCoreOut, " Auto lock, count = %d\n", sLockCount ); fflush ( xmpOut ) - #define ReportUnlock() \ - --sLockCount; fprintf ( xmpCoreOut, " Auto unlock, count = %d\n", sLockCount ); fflush ( xmpOut ) - #define ReportKeepLock() \ - fprintf ( xmpCoreOut, " Keeping lock, count = %d\n", sLockCount ); fflush ( xmpOut ) - -#endif - -#define XMP_Throw(msg,id) { AnnounceThrow ( msg ); throw XMP_Error ( id, msg ); } - -// ------------------------------------------------------------------------------------------------- - -#if XMP_WinBuild - typedef CRITICAL_SECTION XMP_Mutex; -#else - // Use pthread for both Mac and generic UNIX. - typedef pthread_mutex_t XMP_Mutex; -#endif - -extern XMP_Mutex sXMPCoreLock; -extern int sLockCount; // Keep signed to catch unlock errors. -extern XMP_VarString * sExceptionMessage; - -extern bool XMP_InitMutex ( XMP_Mutex * mutex ); -extern void XMP_TermMutex ( XMP_Mutex & mutex ); - -extern void XMP_EnterCriticalRegion ( XMP_Mutex & mutex ); -extern void XMP_ExitCriticalRegion ( XMP_Mutex & mutex ); - -class XMP_AutoMutex { -public: - XMP_AutoMutex() : mutex(&sXMPCoreLock) { XMP_EnterCriticalRegion ( *mutex ); ReportLock(); }; - ~XMP_AutoMutex() { if ( mutex != 0 ) { ReportUnlock(); XMP_ExitCriticalRegion ( *mutex ); mutex = 0; } }; - void KeepLock() { ReportKeepLock(); mutex = 0; }; -private: - XMP_Mutex * mutex; -}; - -// *** Switch to XMPEnterObjectWrapper & XMPEnterStaticWrapper, to allow for per-object locks. - -// ! Don't do the initialization check (sXMP_InitCount > 0) for the no-lock case. That macro is used -// ! by WXMPMeta_Initialize_1. - -#define XMP_ENTER_WRAPPER_NO_LOCK(proc) \ - AnnounceNoLock ( proc ); \ - XMP_Assert ( (0 <= sLockCount) && (sLockCount <= 1) ); \ - try { \ - wResult->errMessage = 0; - -#define XMP_ENTER_WRAPPER(proc) \ - AnnounceEntry ( proc ); \ - XMP_Assert ( sXMP_InitCount > 0 ); \ - XMP_Assert ( (0 <= sLockCount) && (sLockCount <= 1) ); \ - try { \ - XMP_AutoMutex mutex; \ - wResult->errMessage = 0; - -#define XMP_EXIT_WRAPPER \ - XMP_CATCH_EXCEPTIONS \ - AnnounceExit(); - -#define XMP_EXIT_WRAPPER_KEEP_LOCK(keep) \ - if ( keep ) mutex.KeepLock(); \ - XMP_CATCH_EXCEPTIONS \ - AnnounceExit(); - -#define XMP_EXIT_WRAPPER_NO_THROW \ - } catch ( ... ) { \ - AnnounceCatch ( "no-throw catch-all" ); \ - /* Do nothing. */ \ - } \ - AnnounceExit(); - -#define XMP_CATCH_EXCEPTIONS \ - } catch ( XMP_Error & xmpErr ) { \ - wResult->int32Result = xmpErr.GetID(); \ - wResult->ptrResult = (void*)"XMP"; \ - wResult->errMessage = xmpErr.GetErrMsg(); \ - if ( wResult->errMessage == 0 ) wResult->errMessage = ""; \ - AnnounceCatch ( wResult->errMessage ); \ - } catch ( std::exception & stdErr ) { \ - wResult->int32Result = kXMPErr_StdException; \ - wResult->errMessage = stdErr.what(); \ - if ( wResult->errMessage == 0 ) wResult->errMessage = ""; \ - AnnounceCatch ( wResult->errMessage ); \ - } catch ( ... ) { \ - wResult->int32Result = kXMPErr_UnknownException; \ - wResult->errMessage = "Caught unknown exception"; \ - AnnounceCatch ( wResult->errMessage ); \ - } - -#if XMP_DebugBuild - #define RELEASE_NO_THROW /* empty */ -#else - #define RELEASE_NO_THROW throw() -#endif - -// ================================================================================================= -// ExpandXPath, FindNode, and related support - -// *** Normalize the use of "const xx &" for input params - -#define kXMP_ArrayItemName "[]" - -#define kXMP_CreateNodes true -#define kXMP_ExistingOnly false - -#define FindConstSchema(t,u) FindSchemaNode ( const_cast(t), u, kXMP_ExistingOnly, 0 ) -#define FindConstChild(p,c) FindChildNode ( const_cast(p), c, kXMP_ExistingOnly, 0 ) -#define FindConstQualifier(p,c) FindQualifierNode ( const_cast(p), c, kXMP_ExistingOnly, 0 ) -#define FindConstNode(t,p) FindNode ( const_cast(t), p, kXMP_ExistingOnly, 0 ) - -extern XMP_OptionBits -VerifySetOptions ( XMP_OptionBits options, XMP_StringPtr propValue ); - -extern void -ComposeXPath ( const XMP_ExpandedXPath & expandedXPath, - XMP_VarString * stringXPath ); - -extern void -ExpandXPath ( XMP_StringPtr schemaNS, - XMP_StringPtr propPath, - XMP_ExpandedXPath * expandedXPath ); - -extern XMP_Node * -FindSchemaNode ( XMP_Node * xmpTree, - XMP_StringPtr nsURI, - bool createNodes, - XMP_NodePtrPos * ptrPos = 0 ); - -extern XMP_Node * -FindChildNode ( XMP_Node * parent, - XMP_StringPtr childName, - bool createNodes, - XMP_NodePtrPos * ptrPos = 0 ); - -extern XMP_Node * -FindQualifierNode ( XMP_Node * parent, - XMP_StringPtr qualName, - bool createNodes, - XMP_NodePtrPos * ptrPos = 0 ); - -extern XMP_Node * -FindNode ( XMP_Node * xmpTree, - const XMP_ExpandedXPath & expandedXPath, - bool createNodes, - XMP_OptionBits leafOptions = 0, - XMP_NodePtrPos * ptrPos = 0 ); - -extern XMP_Index -LookupLangItem ( const XMP_Node * arrayNode, XMP_VarString & lang ); // ! Lang must be normalized! - -extern XMP_Index -LookupFieldSelector ( const XMP_Node * arrayNode, XMP_StringPtr fieldName, XMP_StringPtr fieldValue ); - -extern void -CloneOffspring ( const XMP_Node * origParent, XMP_Node * cloneParent ); - -extern XMP_Node * -CloneSubtree ( const XMP_Node * origRoot, XMP_Node * cloneParent ); - -extern bool -CompareSubtrees ( const XMP_Node & leftNode, const XMP_Node & rightNode ); - -extern void -DeleteEmptySchema ( XMP_Node * schemaNode ); - -extern void -NormalizeLangValue ( XMP_VarString * value ); - -extern void -NormalizeLangArray ( XMP_Node * array ); - -extern void -DetectAltText ( XMP_Node * xmpParent ); - -extern void -SortNamedNodes ( XMP_NodeOffspring & nodeVector ); - -static inline bool -IsPathPrefix ( XMP_StringPtr fullPath, XMP_StringPtr prefix ) -{ - bool isPrefix = false; - XMP_StringLen prefixLen = std::strlen(prefix); - if ( XMP_LitNMatch ( prefix, fullPath, prefixLen ) ) { - char separator = fullPath[prefixLen]; - if ( (separator == 0) || (separator == '/') || - (separator == '[') || (separator == '*') ) isPrefix = true; - } - return isPrefix; -} - -// ------------------------------------------------------------------------------------------------- - -class XPathStepInfo { -public: - XMP_VarString step; - XMP_OptionBits options; - XPathStepInfo ( XMP_StringPtr _step, XMP_OptionBits _options ) : step(_step), options(_options) {}; - XPathStepInfo ( XMP_VarString _step, XMP_OptionBits _options ) : step(_step), options(_options) {}; -private: - XPathStepInfo() : options(0) {}; // ! Hide the default constructor. -}; - -enum { kSchemaStep = 0, kRootPropStep = 1, kAliasIndexStep = 2 }; - -enum { // Bits for XPathStepInfo options. // *** Add mask check to init code. - kXMP_StepKindMask = 0x0F, // ! The step kinds are mutually exclusive numbers. - kXMP_StructFieldStep = 0x01, // Also for top level nodes (schema "fields"). - kXMP_QualifierStep = 0x02, // ! Order is significant to separate struct/qual from array kinds! - kXMP_ArrayIndexStep = 0x03, // ! The kinds must not overlay array form bits! - kXMP_ArrayLastStep = 0x04, - kXMP_QualSelectorStep = 0x05, - kXMP_FieldSelectorStep = 0x06, - kXMP_StepIsAlias = 0x10 -}; - -#define GetStepKind(f) ((f) & kXMP_StepKindMask) - -#define kXMP_NewImplicitNode kXMP_InsertAfterItem - -// ================================================================================================= -// XMP_Node details - -#if 0 // Pattern for iterating over the children or qualifiers: - for ( size_t xxNum = 0, xxLim = _node_->_offspring_.size(); xxNum < xxLim; ++xxNum ) { - const XMP_Node * _curr_ = _node_->_offspring_[xxNum]; - } -#endif - -class XMP_Node { -public: - - XMP_OptionBits options; - XMP_VarString name, value; - XMP_Node * parent; - XMP_NodeOffspring children; - XMP_NodeOffspring qualifiers; - #if XMP_DebugBuild - // *** XMP_StringPtr _namePtr, _valuePtr; // *** Not working, need operator=? - #endif - - XMP_Node ( XMP_Node * _parent, XMP_StringPtr _name, XMP_OptionBits _options ) - : options(_options), name(_name), parent(_parent) - { - #if XMP_DebugBuild - XMP_Assert ( (name.find ( ':' ) != XMP_VarString::npos) || (name == kXMP_ArrayItemName) || - (options & kXMP_SchemaNode) || (parent == 0) ); - // *** _namePtr = name.c_str(); - // *** _valuePtr = value.c_str(); - #endif - }; - - XMP_Node ( XMP_Node * _parent, const XMP_VarString & _name, XMP_OptionBits _options ) - : options(_options), name(_name), parent(_parent) - { - #if XMP_DebugBuild - XMP_Assert ( (name.find ( ':' ) != XMP_VarString::npos) || (name == kXMP_ArrayItemName) || - (options & kXMP_SchemaNode) || (parent == 0) ); - // *** _namePtr = name.c_str(); - // *** _valuePtr = value.c_str(); - #endif - }; - - XMP_Node ( XMP_Node * _parent, XMP_StringPtr _name, XMP_StringPtr _value, XMP_OptionBits _options ) - : options(_options), name(_name), value(_value), parent(_parent) - { - #if XMP_DebugBuild - XMP_Assert ( (name.find ( ':' ) != XMP_VarString::npos) || (name == kXMP_ArrayItemName) || - (options & kXMP_SchemaNode) || (parent == 0) ); - // *** _namePtr = name.c_str(); - // *** _valuePtr = value.c_str(); - #endif - }; - - XMP_Node ( XMP_Node * _parent, const XMP_VarString & _name, const XMP_VarString & _value, XMP_OptionBits _options ) - : options(_options), name(_name), value(_value), parent(_parent) - { - #if XMP_DebugBuild - XMP_Assert ( (name.find ( ':' ) != XMP_VarString::npos) || (name == kXMP_ArrayItemName) || - (options & kXMP_SchemaNode) || (parent == 0) ); - // *** _namePtr = name.c_str(); - // *** _valuePtr = value.c_str(); - #endif - }; - - void RemoveChildren() - { - for ( size_t i = 0, vLim = children.size(); i < vLim; ++i ) { - if ( children[i] != 0 ) delete children[i]; - } - children.clear(); - } - - void RemoveQualifiers() - { - for ( size_t i = 0, vLim = qualifiers.size(); i < vLim; ++i ) { - if ( qualifiers[i] != 0 ) delete qualifiers[i]; - } - qualifiers.clear(); - } - - void ClearNode() - { - options = 0; - name.erase(); - value.erase(); - this->RemoveChildren(); - this->RemoveQualifiers(); - } - - virtual ~XMP_Node() { RemoveChildren(); RemoveQualifiers(); }; - -private: - XMP_Node() : options(0), parent(0) // ! Make sure parent pointer is always set. - { - #if XMP_DebugBuild - // *** _namePtr = name.c_str(); - // *** _valuePtr = value.c_str(); - #endif - }; - -}; - -class XMP_AutoNode { // Used to hold a child during subtree construction. -public: - XMP_Node * nodePtr; - XMP_AutoNode() : nodePtr(0) {}; - ~XMP_AutoNode() { if ( nodePtr != 0 ) delete ( nodePtr ); nodePtr = 0; }; - XMP_AutoNode ( XMP_Node * _parent, XMP_StringPtr _name, XMP_OptionBits _options ) - : nodePtr ( new XMP_Node ( _parent, _name, _options ) ) {}; - XMP_AutoNode ( XMP_Node * _parent, const XMP_VarString & _name, XMP_OptionBits _options ) - : nodePtr ( new XMP_Node ( _parent, _name, _options ) ) {}; - XMP_AutoNode ( XMP_Node * _parent, XMP_StringPtr _name, XMP_StringPtr _value, XMP_OptionBits _options ) - : nodePtr ( new XMP_Node ( _parent, _name, _value, _options ) ) {}; - XMP_AutoNode ( XMP_Node * _parent, const XMP_VarString & _name, const XMP_VarString & _value, XMP_OptionBits _options ) - : nodePtr ( new XMP_Node ( _parent, _name, _value, _options ) ) {}; -}; - -extern void ProcessRDF ( XMP_Node * xmpTree, const XML_Node & xmlTree, XMP_OptionBits options ); - -// ================================================================================================= - -#endif // __XMPCore_Impl_hpp__ diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPIterator.cpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPIterator.cpp deleted file mode 100644 index 8ae756d8e8b..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPIterator.cpp +++ /dev/null @@ -1,736 +0,0 @@ -// ================================================================================================= -// Copyright 2002-2007 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#include "XMP_Environment.h" // ! This must be the first include! -#include "XMPCore_Impl.hpp" - -#include "XMPIterator.hpp" - -#include -#include // For snprintf. - -#if XMP_WinBuild - #ifdef _MSC_VER - #pragma warning ( disable : 4702 ) // unreachable code - #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) - #pragma warning ( disable : 4996 ) // '...' was declared deprecated - #endif -#endif - -// ================================================================================================= -// Support Routines -// ================================================================================================= - - -#ifndef TraceIterators - #define TraceIterators 0 -#endif - -#if TraceIterators - static const char * sStageNames[] = { "before", "self", "qualifiers", "children" }; -#endif - -static XMP_Node * sDummySchema = 0; // ! Used for some ugliness with aliases. - -// ------------------------------------------------------------------------------------------------- -// AddSchemaProps -// -------------- -// -// Add the top level properties to the IterNode for a schema. - -static void -AddSchemaProps ( IterInfo & info, IterNode & iterSchema, const XMP_Node * xmpSchema ) -{ - info = info; // Avoid unused parameter warning. - #if TraceIterators - printf ( " Adding properties of %s\n", xmpSchema->name.c_str() ); - #endif - - for ( size_t propNum = 0, propLim = xmpSchema->children.size(); propNum != propLim; ++propNum ) { - const XMP_Node * xmpProp = xmpSchema->children[propNum]; - // *** set the has-aliases bit when appropriate - iterSchema.children.push_back ( IterNode ( xmpProp->options, xmpProp->name, 0 ) ); - #if TraceIterators - printf ( " %s\n", xmpProp->name.c_str() ); - #endif - } - -} // AddSchemaProps - -// ------------------------------------------------------------------------------------------------- -// AddSchemaAliases -// ---------------- -// -// Add the aliases to the IterNode for a schema, if the corresponding actual exists. - -static void -AddSchemaAliases ( IterInfo & info, IterNode & iterSchema, XMP_StringPtr schemaURI ) -{ - - // We're showing the aliases also. Look them up by their namespace prefix. Yes, the alias map is - // sorted so we could process just that portion. But that takes more code and the extra speed - // isn't worth it. (Plus this way we avoid a dependence on the map implementation.) Lookup the - // XMP node from the alias, to make sure the actual exists. - - #if TraceIterators - printf ( " Adding aliases\n", schemaURI ); - #endif - - XMP_StringPtr nsPrefix; - XMP_StringLen nsLen; - bool found = XMPMeta::GetNamespacePrefix ( schemaURI, &nsPrefix, &nsLen ); - if ( ! found ) XMP_Throw ( "Unknown iteration namespace", kXMPErr_BadSchema ); - - XMP_AliasMapPos currAlias = sRegisteredAliasMap->begin(); - XMP_AliasMapPos endAlias = sRegisteredAliasMap->end(); - - for ( ; currAlias != endAlias; ++currAlias ) { - if ( XMP_LitNMatch ( currAlias->first.c_str(), nsPrefix, nsLen ) ) { - const XMP_Node * actualProp = FindConstNode ( &info.xmpObj->tree, currAlias->second ); - if ( actualProp != 0 ) { - iterSchema.children.push_back ( IterNode ( (actualProp->options | kXMP_PropIsAlias), currAlias->first, 0 ) ); - #if TraceIterators - printf ( " %s => %s\n", currAlias->first.c_str(), actualProp->name.c_str() ); - #endif - } - } - } - -} // AddSchemaAliases - -// ------------------------------------------------------------------------------------------------- -// AddNodeOffspring -// ---------------- -// -// Add the immediate children and qualifiers to an IterNode. - -static void -AddNodeOffspring ( IterInfo & info, IterNode & iterParent, const XMP_Node * xmpParent ) -{ - XMP_VarString currPath ( iterParent.fullPath ); - size_t leafOffset = iterParent.fullPath.size(); - - if ( (! xmpParent->qualifiers.empty()) && (! (info.options & kXMP_IterOmitQualifiers)) ) { - - #if TraceIterators - printf ( " Adding qualifiers of %s\n", currPath.c_str() ); - #endif - - currPath += "/?"; // All qualifiers are named and use paths like "Prop/?Qual". - leafOffset += 2; - - for ( size_t qualNum = 0, qualLim = xmpParent->qualifiers.size(); qualNum != qualLim; ++qualNum ) { - const XMP_Node * xmpQual = xmpParent->qualifiers[qualNum]; - currPath += xmpQual->name; - iterParent.qualifiers.push_back ( IterNode ( xmpQual->options, currPath, leafOffset ) ); - currPath.erase ( leafOffset ); - #if TraceIterators - printf ( " %s\n", xmpQual->name.c_str() ); - #endif - } - - leafOffset -= 2; - currPath.erase ( leafOffset ); - - } - - if ( ! xmpParent->children.empty() ) { - - #if TraceIterators - printf ( " Adding children of %s\n", currPath.c_str() ); - #endif - - XMP_Assert ( xmpParent->options & kXMP_PropCompositeMask ); - - if ( xmpParent->options & kXMP_PropValueIsStruct ) { - currPath += '/'; - leafOffset += 1; - } - - for ( size_t childNum = 0, childLim = xmpParent->children.size(); childNum != childLim; ++childNum ) { - const XMP_Node * xmpChild = xmpParent->children[childNum]; - if ( ! (xmpParent->options & kXMP_PropValueIsArray) ) { - currPath += xmpChild->name; - } else { - char buffer [32]; // AUDIT: Using sizeof(buffer) below for snprintf length is safe. - snprintf ( buffer, sizeof(buffer), "[%lu]", static_cast(childNum+1) ); // ! XPath indices are one-based. - currPath += buffer; - } - iterParent.children.push_back ( IterNode ( xmpChild->options, currPath, leafOffset ) ); - currPath.erase ( leafOffset ); - #if TraceIterators - printf ( " %s\n", (iterParent.children.back().fullPath.c_str() + leafOffset) ); - #endif - } - - } - -} // AddNodeOffspring - -// ------------------------------------------------------------------------------------------------- -// SetCurrSchema -// ------------- - -static inline void -SetCurrSchema ( IterInfo & info, XMP_StringPtr schemaName ) -{ - - info.currSchema = schemaName; - #if 0 // *** XMP_DebugBuild - info._schemaPtr = info.currSchema.c_str(); - #endif - -} // SetCurrSchema - -static inline void -SetCurrSchema ( IterInfo & info, XMP_VarString & schemaName ) -{ - - info.currSchema = schemaName; - #if 0 // *** XMP_DebugBuild - info._schemaPtr = info.currSchema.c_str(); - #endif - -} // SetCurrSchema - -// ------------------------------------------------------------------------------------------------- -// AdvanceIterPos -// -------------- -// -// Adjust currPos and possibly endPos for the next step in a pre-order depth-first traversal. The -// current node has just been visited, move on to its qualifiers, children, then siblings, or back -// up to an ancestor. AdvanceIterPos either moves to a property or qualifier node that can be -// visited, or to the end of the entire iteration. - -static void -AdvanceIterPos ( IterInfo & info ) -{ - // ------------------------------------------------------------------------------------------- - // Keep looking until we find a node to visit or the end of everything. The first time through - // the current node will exist, we just visited it. But we have to keep looking if the current - // node was the last of its siblings or is an empty schema. - - // ! It is possible that info.currPos == info.endPos on entry. Don't dereference info.currPos yet! - - while ( true ) { - - if ( info.currPos == info.endPos ) { - - // ------------------------------------------------------------------------------------ - // At the end of a set of siblings, move up to an ancestor. We've either just finished - // the qualifiers and will move to the children, or have just finished the children and - // will move on to the next sibling. - - if ( info.ancestors.empty() ) break; // We're at the end of the schema list. - - IterPosPair & parent = info.ancestors.back(); - info.currPos = parent.first; - info.endPos = parent.second; - info.ancestors.pop_back(); - - #if TraceIterators - printf ( " Moved up to %s, stage = %s\n", - info.currPos->fullPath.c_str(), sStageNames[info.currPos->visitStage] ); - #endif - - } else { - - // ------------------------------------------------------------------------------------------- - // Decide what to do with this iteration node based on its state. Don't use a switch statment, - // some of the cases want to break from the loop. A break in a switch just exits the case. - - #if TraceIterators - printf ( " Moving from %s, stage = %s\n", - info.currPos->fullPath.c_str(), sStageNames[info.currPos->visitStage] ); - #endif - - if ( info.currPos->visitStage == kIter_BeforeVisit ) { // Visit this node now. - if ( info.currPos->options & kXMP_SchemaNode ) SetCurrSchema ( info, info.currPos->fullPath ); - break; - } - - if ( info.currPos->visitStage == kIter_VisitSelf ) { // Just finished visiting the value portion. - info.currPos->visitStage = kIter_VisitQualifiers; // Start visiting the qualifiers. - if ( ! info.currPos->qualifiers.empty() ) { - info.ancestors.push_back ( IterPosPair ( info.currPos, info.endPos ) ); - info.endPos = info.currPos->qualifiers.end(); // ! Set the parent's endPos before changing currPos! - info.currPos = info.currPos->qualifiers.begin(); - break; - } - } - - if ( info.currPos->visitStage == kIter_VisitQualifiers ) { // Just finished visiting the qualifiers. - info.currPos->qualifiers.clear(); - info.currPos->visitStage = kIter_VisitChildren; // Start visiting the children. - if ( ! info.currPos->children.empty() ) { - info.ancestors.push_back ( IterPosPair ( info.currPos, info.endPos ) ); - info.endPos = info.currPos->children.end(); // ! Set the parent's endPos before changing currPos! - info.currPos = info.currPos->children.begin(); - break; - } - } - - if ( info.currPos->visitStage == kIter_VisitChildren ) { // Just finished visiting the children. - info.currPos->children.clear(); - ++info.currPos; // Move to the next sibling. - continue; - } - - #if TraceIterators - if ( info.currPos != info.endPos ) { - printf ( " Moved to %s, stage = %s\n", - info.currPos->fullPath.c_str(), sStageNames[info.currPos->visitStage] ); - } - #endif - - } - - } // Loop to find the next node. - - XMP_Assert ( (info.currPos == info.endPos) || (info.currPos->visitStage == kIter_BeforeVisit) ); - -} // AdvanceIterPos - -// ------------------------------------------------------------------------------------------------- -// GetNextXMPNode -// -------------- -// -// Used by XMPIterator::Next to obtain the next XMP node, ignoring the kXMP_IterJustLeafNodes flag. -// This isolates some messy code, allowing a clean loop in Next if kXMP_IterJustLeafNodes is set. - -static const XMP_Node * -GetNextXMPNode ( IterInfo & info ) -{ - const XMP_Node * xmpNode = 0; - - // ---------------------------------------------------------------------------------------------- - // On entry currPos points to an iteration node whose state is either before-visit or visit-self. - // If it is before-visit then we will return that node's value part now. If it is visit-self it - // means the previous iteration returned the value portion of that node, so we can advance to the - // next node in the iteration tree. Then we find the corresponding XMP node, allowing for the XMP - // tree to have been modified since that part of the iteration tree was constructed. - - // ! NOTE: Supporting aliases throws in some nastiness with schemas. There might not be any XMP - // ! node for the schema, but we still have to visit it because of possible aliases. The static - // ! sDummySchema is returned if there is no real schema node. - - if ( info.currPos->visitStage != kIter_BeforeVisit ) AdvanceIterPos ( info ); - - bool isSchemaNode = false; - XMP_ExpandedXPath expPath; // Keep outside the loop to avoid constant construct/destruct. - - while ( info.currPos != info.endPos ) { - - isSchemaNode = XMP_NodeIsSchema ( info.currPos->options ); - if ( isSchemaNode ) { - SetCurrSchema ( info, info.currPos->fullPath ); - xmpNode = FindConstSchema ( &info.xmpObj->tree, info.currPos->fullPath.c_str() ); - if ( xmpNode == 0 ) xmpNode = sDummySchema; - } else { - ExpandXPath ( info.currSchema.c_str(), info.currPos->fullPath.c_str(), &expPath ); - xmpNode = FindConstNode ( &info.xmpObj->tree, expPath ); - } - if ( xmpNode != 0 ) break; // Exit the loop, we found a live XMP node. - - info.currPos->visitStage = kIter_VisitChildren; // Make AdvanceIterPos move to the next sibling. - info.currPos->children.clear(); - info.currPos->qualifiers.clear(); - AdvanceIterPos ( info ); - - } - - if ( info.currPos == info.endPos ) return 0; - - // ------------------------------------------------------------------------------------------- - // Now we've got the iteration node and corresponding XMP node. Add the iteration children for - // structs and arrays. The children of schema were added when the iterator was constructed. - - XMP_Assert ( info.currPos->visitStage == kIter_BeforeVisit ); - - if ( info.currPos->visitStage == kIter_BeforeVisit ) { - if ( (! isSchemaNode) && (! (info.options & kXMP_IterJustChildren)) ) { - AddNodeOffspring ( info, *info.currPos, xmpNode ); - } - info.currPos->visitStage = kIter_VisitSelf; - } - - return xmpNode; - -} // GetNextXMPNode - -// ================================================================================================= -// Init/Term -// ================================================================================================= - -// ------------------------------------------------------------------------------------------------- -// Initialize -// ---------- - -/* class static */ bool -XMPIterator::Initialize() -{ - sDummySchema = new XMP_Node ( 0, "dummy:schema/", kXMP_SchemaNode); - return true; - -} // Initialize - -// ------------------------------------------------------------------------------------------------- -// Terminate -// ---------- - -/* class static */ void -XMPIterator::Terminate() RELEASE_NO_THROW -{ - delete ( sDummySchema ); - sDummySchema = 0; - return; - -} // Terminate - -// ------------------------------------------------------------------------------------------------- -// Unlock -// ------ - -void -XMPIterator::Unlock ( XMP_OptionBits options ) -{ - options = options; // Avoid unused parameter warning. - - XMPMeta::Unlock ( 0 ); - -} // Unlock - -// ================================================================================================= -// Constructors -// ================================================================================================= - -// ------------------------------------------------------------------------------------------------- -// XMPIterator -// ----------- -// -// Constructor for iterations over the nodes in an XMPMeta object. This builds a tree of iteration -// nodes that caches the existing node names of the XMPMeta object. The iteration tree is a partial -// replica of the XMPMeta tree. The initial iteration tree normally has just the root node, all of -// the schema nodes for a full object iteration. Lower level nodes (children and qualifiers) are -// added when the parent is visited. If the kXMP_IterJustChildren option is passed then the initial -// iterator includes the children and the parent is marked as done. The iteration tree nodes are -// pruned when they are no longer needed. - -XMPIterator::XMPIterator ( const XMPMeta & xmpObj, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_OptionBits options ) : clientRefs(0), info(IterInfo(options,&xmpObj)) -{ - if ( (options & kXMP_IterClassMask) != kXMP_IterProperties ) { - XMP_Throw ( "Unsupported iteration kind", kXMPErr_BadOptions ); - } - - // *** Lock the XMPMeta object if we ever stop using a full DLL lock. - - if ( *propName != 0 ) { - - // An iterator rooted at a specific node. - - #if TraceIterators - printf ( "\nNew XMP property iterator for \"%s\", options = %X\n Schema = %s, root = %s\n", - xmpObj.tree.name.c_str(), options, schemaNS, propName ); - #endif - - XMP_ExpandedXPath propPath; - ExpandXPath ( schemaNS, propName, &propPath ); - XMP_Node * propNode = FindConstNode ( &xmpObj.tree, propPath ); // If not found get empty iteration. - - if ( propNode != 0 ) { - - XMP_VarString rootName ( propPath[1].step ); // The schema is [0]. - for ( size_t i = 2; i < propPath.size(); ++i ) { - XMP_OptionBits stepKind = GetStepKind ( propPath[i].options ); - if ( stepKind <= kXMP_QualifierStep ) rootName += '/'; - rootName += propPath[i].step; - } - - propName = rootName.c_str(); - size_t leafOffset = rootName.size(); - while ( (leafOffset > 0) && (propName[leafOffset] != '/') && (propName[leafOffset] != '[') ) --leafOffset; - if ( propName[leafOffset] == '/' ) ++leafOffset; - - info.tree.children.push_back ( IterNode ( propNode->options, propName, leafOffset ) ); - SetCurrSchema ( info, propPath[kSchemaStep].step.c_str() ); - if ( info.options & kXMP_IterJustChildren ) { - AddNodeOffspring ( info, info.tree.children.back(), propNode ); - } - - } - - } else if ( *schemaNS != 0 ) { - - // An iterator for all properties in one schema. - - #if TraceIterators - printf ( "\nNew XMP schema iterator for \"%s\", options = %X\n Schema = %s\n", - xmpObj.tree.name.c_str(), options, schemaNS ); - #endif - - info.tree.children.push_back ( IterNode ( kXMP_SchemaNode, schemaNS, 0 ) ); - IterNode & iterSchema = info.tree.children.back(); - - XMP_Node * xmpSchema = FindConstSchema ( &xmpObj.tree, schemaNS ); - if ( xmpSchema != 0 ) AddSchemaProps ( info, iterSchema, xmpSchema ); - - if ( info.options & kXMP_IterIncludeAliases ) AddSchemaAliases ( info, iterSchema, schemaNS ); - - if ( iterSchema.children.empty() ) { - info.tree.children.pop_back(); // No properties, remove the schema node. - } else { - SetCurrSchema ( info, schemaNS ); - } - - } else { - - // An iterator for all properties in all schema. First add schema that exist (have children), - // adding aliases from them if appropriate. Then add schema that have no actual properties - // but do have aliases to existing properties, if we're including aliases in the iteration. - - #if TraceIterators - printf ( "\nNew XMP tree iterator for \"%s\", options = %X\n", - xmpObj.tree.name.c_str(), options ); - #endif - - // First pick up the schema that exist. - - for ( size_t schemaNum = 0, schemaLim = xmpObj.tree.children.size(); schemaNum != schemaLim; ++schemaNum ) { - - const XMP_Node * xmpSchema = xmpObj.tree.children[schemaNum]; - info.tree.children.push_back ( IterNode ( kXMP_SchemaNode, xmpSchema->name, 0 ) ); - IterNode & iterSchema = info.tree.children.back(); - - if ( ! (info.options & kXMP_IterJustChildren) ) { - AddSchemaProps ( info, iterSchema, xmpSchema ); - if ( info.options & kXMP_IterIncludeAliases ) AddSchemaAliases ( info, iterSchema, xmpSchema->name.c_str() ); - if ( iterSchema.children.empty() ) info.tree.children.pop_back(); // No properties, remove the schema node. - } - - } - - if ( info.options & kXMP_IterIncludeAliases ) { - - // Add the schema that only have aliases. The most convenient, and safest way, is to go - // through the registered namespaces, see if it exists, and let AddSchemaAliases do its - // thing if not. Don't combine with the above loop, it is nicer to have the "real" stuff - // be in storage order (not subject to the namespace map order). - - // ! We don't do the kXMP_IterJustChildren handing in the same way here as above. The - // ! existing schema (presumably) have actual children. We need to call AddSchemaAliases - // ! here to determine if the namespace has any aliases to existing properties. We then - // ! strip the children if necessary. - - XMP_cStringMapPos currNS = sNamespaceURIToPrefixMap->begin(); - XMP_cStringMapPos endNS = sNamespaceURIToPrefixMap->end(); - for ( ; currNS != endNS; ++currNS ) { - XMP_StringPtr schemaName = currNS->first.c_str(); - if ( FindConstSchema ( &xmpObj.tree, schemaName ) != 0 ) continue; - info.tree.children.push_back ( IterNode ( kXMP_SchemaNode, schemaName, 0 ) ); - IterNode & iterSchema = info.tree.children.back(); - AddSchemaAliases ( info, iterSchema, schemaName ); - if ( iterSchema.children.empty() ) { - info.tree.children.pop_back(); // No aliases, remove the schema node. - } else if ( info.options & kXMP_IterJustChildren ) { - iterSchema.children.clear(); // Get rid of the children. - } - } - - } - - } - - // Set the current iteration position to the first node to be visited. - - info.currPos = info.tree.children.begin(); - info.endPos = info.tree.children.end(); - - if ( (info.options & kXMP_IterJustChildren) && (info.currPos != info.endPos) && (*schemaNS != 0) ) { - info.currPos->visitStage = kIter_VisitSelf; - } - - #if TraceIterators - if ( info.currPos == info.endPos ) { - printf ( " ** Empty iteration **\n" ); - } else { - printf ( " Initial node %s, stage = %s, iterator @ %.8X\n", - info.currPos->fullPath.c_str(), sStageNames[info.currPos->visitStage], this ); - } - #endif - -} // XMPIterator for XMPMeta objects - -// ------------------------------------------------------------------------------------------------- -// XMPIterator -// ----------- -// -// Constructor for iterations over global tables such as registered namespaces or aliases. - -XMPIterator::XMPIterator ( XMP_StringPtr /*schemaNS*/, - XMP_StringPtr /*propName*/, - XMP_OptionBits options ) : clientRefs(0), info(IterInfo(options,0)) -{ - - XMP_Throw ( "Unimplemented XMPIterator constructor for global tables", kXMPErr_Unimplemented ); - -} // XMPIterator for global tables - -// ------------------------------------------------------------------------------------------------- -// ~XMPIterator -// ----------- - -XMPIterator::~XMPIterator() RELEASE_NO_THROW -{ - XMP_Assert ( this->clientRefs <= 0 ); - // Let everything else default. - -} // ~XMPIterator - -// ================================================================================================= -// Iteration Methods -// ================================================================================================= - -// ------------------------------------------------------------------------------------------------- -// Next -// ---- -// -// Do a preorder traversal of the cached nodes. - -// *** Need to document the relationships between currPos, endPos, and visitStage. - -bool -XMPIterator::Next ( XMP_StringPtr * schemaNS, - XMP_StringLen * nsSize, - XMP_StringPtr * propPath, - XMP_StringLen * pathSize, - XMP_StringPtr * propValue, - XMP_StringLen * valueSize, - XMP_OptionBits * propOptions ) -{ - // *** Lock the XMPMeta object if we ever stop using a full DLL lock. - - // ! NOTE: Supporting aliases throws in some nastiness with schemas. There might not be any XMP - // ! node for the schema, but we still have to visit it because of possible aliases. - - if ( info.currPos == info.endPos ) return false; // Happens at the start of an empty iteration. - - #if TraceIterators - printf ( "Next iteration from %s, stage = %s, iterator @ %.8X\n", - info.currPos->fullPath.c_str(), sStageNames[info.currPos->visitStage], this ); - #endif - - const XMP_Node * xmpNode = GetNextXMPNode ( info ); - if ( xmpNode == 0 ) return false; - bool isSchemaNode = XMP_NodeIsSchema ( info.currPos->options ); - - if ( info.options & kXMP_IterJustLeafNodes ) { - while ( isSchemaNode || (! xmpNode->children.empty()) ) { - info.currPos->visitStage = kIter_VisitQualifiers; // Skip to this node's children. - xmpNode = GetNextXMPNode ( info ); - if ( xmpNode == 0 ) return false; - isSchemaNode = XMP_NodeIsSchema ( info.currPos->options ); - } - } - - *schemaNS = info.currSchema.c_str(); - *nsSize = info.currSchema.size(); - - *propOptions = info.currPos->options; - - *propPath = ""; - *pathSize = 0; - *propValue = ""; - *valueSize = 0; - - if ( ! (*propOptions & kXMP_SchemaNode) ) { - - *propPath = info.currPos->fullPath.c_str(); - *pathSize = info.currPos->fullPath.size(); - if ( info.options & kXMP_IterJustLeafName ) { - *propPath += info.currPos->leafOffset; - *pathSize -= info.currPos->leafOffset; - } - - if ( ! (*propOptions & kXMP_PropCompositeMask) ) { - *propValue = xmpNode->value.c_str(); - *valueSize = xmpNode->value.size(); - } - - } - - #if TraceIterators - printf ( " Next node %s, stage = %s\n", - info.currPos->fullPath.c_str(), sStageNames[info.currPos->visitStage] ); - #endif - - return true; - -} // Next - -// ------------------------------------------------------------------------------------------------- -// Skip -// ---- -// -// Skip some portion of the traversal related to the last visited node. We skip either that node's -// children, or those children and the previous node's siblings. The implementation might look a bit -// awkward because info.currNode always points to the next node to be visited. We might already have -// moved past the things to skip, e.g. if the previous node was simple and the last of its siblings. - -enum { - kXMP_ValidIterSkipOptions = kXMP_IterSkipSubtree | kXMP_IterSkipSiblings -}; - -void -XMPIterator::Skip ( XMP_OptionBits iterOptions ) -{ -// if ( (info.currPos == kIter_NullPos) ) XMP_Throw ( "No prior postion to skip from", kXMPErr_BadIterPosition ); - if ( iterOptions == 0 ) XMP_Throw ( "Must specify what to skip", kXMPErr_BadOptions ); - if ( (iterOptions & ~kXMP_ValidIterSkipOptions) != 0 ) XMP_Throw ( "Undefined options", kXMPErr_BadOptions ); - - #if TraceIterators - printf ( "Skipping from %s, stage = %s, iterator @ %.8X", - info.currPos->fullPath.c_str(), sStageNames[info.currPos->visitStage], this ); - #endif - - if ( iterOptions & kXMP_IterSkipSubtree ) { - #if TraceIterators - printf ( ", mode = subtree\n" ); - #endif - info.currPos->visitStage = kIter_VisitChildren; - } else if ( iterOptions & kXMP_IterSkipSiblings ) { - #if TraceIterators - printf ( ", mode = siblings\n" ); - #endif - info.currPos = info.endPos; - AdvanceIterPos ( info ); - } - #if TraceIterators - printf ( " Skipped to %s, stage = %s\n", - info.currPos->fullPath.c_str(), sStageNames[info.currPos->visitStage] ); - #endif - - -} // Skip - -// ------------------------------------------------------------------------------------------------- -// UnlockIter -// ---------- - -void -XMPIterator::UnlockIter ( XMP_OptionBits options ) -{ - options = options; // Avoid unused parameter warning. - - XMPMeta::Unlock ( 0 ); - -} // UnlockIter - -// ================================================================================================= diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPIterator.hpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPIterator.hpp deleted file mode 100644 index b72b975350f..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPIterator.hpp +++ /dev/null @@ -1,148 +0,0 @@ -#ifndef __XMPIterator_hpp__ -#define __XMPIterator_hpp__ - -// ================================================================================================= -// Copyright 2002-2007 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#include "XMP_Environment.h" -#include "XMP_Const.h" -#include "XMPMeta.hpp" - -// ================================================================================================= - -struct IterNode; -typedef std::vector < IterNode > IterOffspring; -typedef IterOffspring::iterator IterPos; - -typedef std::pair < IterPos, IterPos > IterPosPair; -typedef std::vector < IterPosPair > IterPosStack; - -enum { // Values for the visitStage field, used to decide how to proceed past a node. - kIter_BeforeVisit = 0, // Have not visited this node at all. - kIter_VisitSelf = 1, // Have visited this node and returned its value/options portion. - kIter_VisitQualifiers = 2, // In the midst of visiting this node's qualifiers. - kIter_VisitChildren = 3 // In the midst of visiting this node's children. -}; - -struct IterNode { - - XMP_OptionBits options; - XMP_VarString fullPath; - size_t leafOffset; - IterOffspring children, qualifiers; - XMP_Uns8 visitStage; - #if 0 // *** XMP_DebugBuild - XMP_StringPtr _pathPtr, _leafPtr; // *** Not working, need operator=? - #endif - - IterNode() : options(0), leafOffset(0), visitStage(kIter_BeforeVisit) - { - #if 0 // *** XMP_DebugBuild - _pathPtr = _leafPtr = 0; - #endif - }; - - IterNode ( XMP_OptionBits _options, const XMP_VarString& _fullPath, size_t _leafOffset ) - : options(_options), fullPath(_fullPath), leafOffset(_leafOffset), visitStage(kIter_BeforeVisit) - { - #if 0 // *** XMP_DebugBuild - _pathPtr = fullPath.c_str(); - _leafPtr = _pathPtr + leafOffset; - #endif - }; - -}; - -struct IterInfo { - - XMP_OptionBits options; - const XMPMeta * xmpObj; - XMP_VarString currSchema; - IterPos currPos, endPos; - IterPosStack ancestors; - IterNode tree; - #if 0 // *** XMP_DebugBuild - XMP_StringPtr _schemaPtr; // *** Not working, need operator=? - #endif - - IterInfo() : options(0), xmpObj(0) - { - #if 0 // *** XMP_DebugBuild - _schemaPtr = 0; - #endif - }; - - IterInfo ( XMP_OptionBits _options, const XMPMeta * _xmpObj ) : options(_options), xmpObj(_xmpObj) - { - #if 0 // *** XMP_DebugBuild - _schemaPtr = 0; - #endif - }; - -}; - -// ================================================================================================= - -class XMPIterator { -public: - - static bool - Initialize(); // ! For internal use only! - - static void - Terminate() RELEASE_NO_THROW; // ! For internal use only! - - static void - Unlock ( XMP_OptionBits options ); - - XMPIterator ( const XMPMeta & xmpObj, // Construct a property iterator. - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_OptionBits options ); - - XMPIterator ( XMP_StringPtr schemaNS, // Construct a table iterator. - XMP_StringPtr propName, - XMP_OptionBits options ); - - virtual ~XMPIterator() RELEASE_NO_THROW; - - bool - Next ( XMP_StringPtr * schemaNS, - XMP_StringLen * nsSize, - XMP_StringPtr * propPath, - XMP_StringLen * pathSize, - XMP_StringPtr * propValue, - XMP_StringLen * valueSize, - XMP_OptionBits * propOptions ); - - void - Skip ( XMP_OptionBits options ); - - void - UnlockIter ( XMP_OptionBits options ); - - // ! Expose so that wrappers and file static functions can see the data. - - XMP_Int32 clientRefs; // ! Must be signed to allow decrement from 0. - IterInfo info; - -private: - - // ! These are hidden on purpose: - XMPIterator() : clientRefs(0) - { XMP_Throw ( "Call to hidden constructor", kXMPErr_InternalFailure ); }; - XMPIterator ( const XMPIterator & /* original */ ) : clientRefs(0) - { XMP_Throw ( "Call to hidden constructor", kXMPErr_InternalFailure ); }; - void operator= ( const XMPIterator & /* rhs */ ) - { XMP_Throw ( "Call to hidden operator=", kXMPErr_InternalFailure ); }; - -}; - -// ================================================================================================= - -#endif // __XMPIterator_hpp__ diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPMeta-GetSet.cpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPMeta-GetSet.cpp deleted file mode 100644 index 992539b805b..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPMeta-GetSet.cpp +++ /dev/null @@ -1,1212 +0,0 @@ -// ================================================================================================= -// Copyright 2002-2008 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// -// Adobe patent application tracking #P435, entitled 'Unique markers to simplify embedding data of -// one format in a file with a different format', inventors: Sean Parent, Greg Gilley. -// ================================================================================================= - -#include "XMP_Environment.h" // ! This must be the first include! -#include "XMPCore_Impl.hpp" - -#include "XMPMeta.hpp" -#include "XMPIterator.hpp" -#include "XMPUtils.hpp" - -#include "XMP_Version.h" -#include "UnicodeInlines.incl_cpp" -#include "UnicodeConversions.hpp" -#include "ExpatAdapter.hpp" - -#if XMP_DebugBuild - #include -#endif - -using namespace std; - -#if XMP_WinBuild - #ifdef _MSC_VER - #pragma warning ( disable : 4533 ) // initialization of '...' is skipped by 'goto ...' - #pragma warning ( disable : 4702 ) // unreachable code - #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) - #endif -#endif - - -// *** Use the XMP_PropIsXyz (Schema, Simple, Struct, Array, ...) macros -// *** Add debug codegen checks, e.g. that typical masking operations really work -// *** Change all uses of strcmp and strncmp to XMP_LitMatch and XMP_LitNMatch - - -// ================================================================================================= -// Local Types and Constants -// ========================= - -typedef unsigned char XMP_CLTMatch; - -enum { // Values for XMP_CLTMatch. - kXMP_CLT_NoValues, - kXMP_CLT_SpecificMatch, - kXMP_CLT_SingleGeneric, - kXMP_CLT_MultipleGeneric, - kXMP_CLT_XDefault, - kXMP_CLT_FirstItem -}; - - -// ================================================================================================= -// Static Variables -// ================ - - -// ================================================================================================= -// Local Utilities -// =============== - - -// ------------------------------------------------------------------------------------------------- -// SetNodeValue -// ------------ - -static inline void -SetNodeValue ( XMP_Node * node, XMP_StringPtr value ) -{ - - #if XMP_DebugBuild // ! Hack to force an assert. - if ( (node->name == "xmp:TestAssertNotify") && XMP_LitMatch ( value, "DoIt!" ) ) { - XMP_Assert ( node->name != "xmp:TestAssertNotify" ); - } - #endif - - node->value = value; - - XMP_Uns8* chPtr = (XMP_Uns8*) node->value.c_str(); // Check for valid UTF-8, replace ASCII controls with a space. - while ( *chPtr != 0 ) { - while ( (*chPtr != 0) && (*chPtr < 0x80) ) { - if ( *chPtr < 0x20 ) { - if ( (*chPtr != kTab) && (*chPtr != kLF) && (*chPtr != kCR) ) *chPtr = 0x20; - } else if (*chPtr == 0x7F ) { - *chPtr = 0x20; - } - ++chPtr; - } - XMP_Assert ( (*chPtr == 0) || (*chPtr >= 0x80) ); - if ( *chPtr != 0 ) (void) GetCodePoint ( (const XMP_Uns8 **) &chPtr ); // Throws for bad UTF-8. - } - - if ( XMP_PropIsQualifier(node->options) && (node->name == "xml:lang") ) NormalizeLangValue ( &node->value ); - - #if 0 // *** XMP_DebugBuild - node->_valuePtr = node->value.c_str(); - #endif - -} // SetNodeValue - - -// ------------------------------------------------------------------------------------------------- -// SetNode -// ------- -// -// The internals for SetProperty and related calls, used after the node is found or created. - -static void -SetNode ( XMP_Node * node, XMP_StringPtr value, XMP_OptionBits options ) -{ - if ( options & kXMP_DeleteExisting ) { - XMP_ClearOption ( options, kXMP_DeleteExisting ); - node->options = options; - node->value.erase(); - node->RemoveChildren(); - node->RemoveQualifiers(); - } - - node->options |= options; // Keep options set by FindNode when creating a new node. - - if ( value != 0 ) { - - // This is setting the value of a leaf node. - if ( node->options & kXMP_PropCompositeMask ) XMP_Throw ( "Composite nodes can't have values", kXMPErr_BadXPath ); - XMP_Assert ( node->children.empty() ); - SetNodeValue ( node, value ); - - } else { - - // This is setting up an array or struct. - if ( ! node->value.empty() ) XMP_Throw ( "Composite nodes can't have values", kXMPErr_BadXPath ); - if ( node->options & kXMP_PropCompositeMask ) { // Can't change an array to a struct, or vice versa. - if ( (options & kXMP_PropCompositeMask) != (node->options & kXMP_PropCompositeMask) ) { - XMP_Throw ( "Requested and existing composite form mismatch", kXMPErr_BadXPath ); - } - } - node->RemoveChildren(); - - } - -} // SetNode - - -// ------------------------------------------------------------------------------------------------- -// DoSetArrayItem -// -------------- - -static void -DoSetArrayItem ( XMP_Node * arrayNode, - XMP_Index itemIndex, - XMP_StringPtr itemValue, - XMP_OptionBits options ) -{ - XMP_OptionBits itemLoc = options & kXMP_PropArrayLocationMask; - XMP_Index arraySize = arrayNode->children.size(); - - options &= ~kXMP_PropArrayLocationMask; - options = VerifySetOptions ( options, itemValue ); - - // Now locate or create the item node and set the value. Note the index parameter is one-based! - // The index can be in the range [0..size+1] or "last", normalize it and check the insert flags. - // The order of the normalization checks is important. If the array is empty we end up with an - // index and location to set item size+1. - - XMP_Node * itemNode = 0; - - if ( itemIndex == kXMP_ArrayLastItem ) itemIndex = arraySize; - if ( (itemIndex == 0) && (itemLoc == kXMP_InsertAfterItem) ) { - itemIndex = 1; - itemLoc = kXMP_InsertBeforeItem; - } - if ( (itemIndex == arraySize) && (itemLoc == kXMP_InsertAfterItem) ) { - itemIndex += 1; - itemLoc = 0; - } - if ( (itemIndex == arraySize+1) && (itemLoc == kXMP_InsertBeforeItem) ) itemLoc = 0; - - if ( itemIndex == arraySize+1 ) { - - if ( itemLoc != 0 ) XMP_Throw ( "Can't insert before or after implicit new item", kXMPErr_BadIndex ); - itemNode = new XMP_Node ( arrayNode, kXMP_ArrayItemName, 0 ); - arrayNode->children.push_back ( itemNode ); - - } else { - - if ( (itemIndex < 1) || (itemIndex > arraySize) ) XMP_Throw ( "Array index out of bounds", kXMPErr_BadIndex ); - --itemIndex; // ! Convert the index to a C zero-based value! - if ( itemLoc == 0 ) { - itemNode = arrayNode->children[itemIndex]; - } else { - XMP_NodePtrPos itemPos = arrayNode->children.begin() + itemIndex; - if ( itemLoc == kXMP_InsertAfterItem ) ++itemPos; - itemNode = new XMP_Node ( arrayNode, kXMP_ArrayItemName, 0 ); - itemPos = arrayNode->children.insert ( itemPos, itemNode ); - } - - } - - SetNode ( itemNode, itemValue, options ); - -} // DoSetArrayItem - - -// ------------------------------------------------------------------------------------------------- -// ChooseLocalizedText -// ------------------- -// -// 1. Look for an exact match with the specific language. -// 2. If a generic language is given, look for partial matches. -// 3. Look for an "x-default" item. -// 4. Choose the first item. - -static XMP_CLTMatch -ChooseLocalizedText ( const XMP_Node * arrayNode, - XMP_StringPtr genericLang, - XMP_StringPtr specificLang, - const XMP_Node * * itemNode ) -{ - const XMP_Node * currItem = 0; - const size_t itemLim = arrayNode->children.size(); - size_t itemNum; - - // See if the array has the right form. Allow empty alt arrays, that is what parsing returns. - // *** Should check alt-text bit when that is reliably maintained. - - if ( ! ( XMP_ArrayIsAltText(arrayNode->options) || - (arrayNode->children.empty() && XMP_ArrayIsAlternate(arrayNode->options)) ) ) { - XMP_Throw ( "Localized text array is not alt-text", kXMPErr_BadXPath ); - } - if ( arrayNode->children.empty() ) { - *itemNode = 0; - return kXMP_CLT_NoValues; - } - - for ( itemNum = 0; itemNum < itemLim; ++itemNum ) { - currItem = arrayNode->children[itemNum]; - if ( currItem->options & kXMP_PropCompositeMask ) { - XMP_Throw ( "Alt-text array item is not simple", kXMPErr_BadXPath ); - } - if ( currItem->qualifiers.empty() || (currItem->qualifiers[0]->name != "xml:lang") ) { - XMP_Throw ( "Alt-text array item has no language qualifier", kXMPErr_BadXPath ); - } - } - - // Look for an exact match with the specific language. - for ( itemNum = 0; itemNum < itemLim; ++itemNum ) { - currItem = arrayNode->children[itemNum]; - if ( currItem->qualifiers[0]->value == specificLang ) { - *itemNode = currItem; - return kXMP_CLT_SpecificMatch; - } - } - - if ( *genericLang != 0 ) { - - // Look for the first partial match with the generic language. - const size_t genericLen = strlen ( genericLang ); - for ( itemNum = 0; itemNum < itemLim; ++itemNum ) { - currItem = arrayNode->children[itemNum]; - XMP_StringPtr currLang = currItem->qualifiers[0]->value.c_str(); - const size_t currLangSize = currItem->qualifiers[0]->value.size(); - if ( (currLangSize >= genericLen) && - XMP_LitNMatch ( currLang, genericLang, genericLen ) && - ((currLangSize == genericLen) || (currLang[genericLen] == '-')) ) { - *itemNode = currItem; - break; // ! Don't return, need to look for other matches. - } - } - - if ( itemNum < itemLim ) { - - // Look for a second partial match with the generic language. - for ( ++itemNum; itemNum < itemLim; ++itemNum ) { - currItem = arrayNode->children[itemNum]; - XMP_StringPtr currLang = currItem->qualifiers[0]->value.c_str(); - const size_t currLangSize = currItem->qualifiers[0]->value.size(); - if ( (currLangSize >= genericLen) && - XMP_LitNMatch ( currLang, genericLang, genericLen ) && - ((currLangSize == genericLen) || (currLang[genericLen] == '-')) ) { - return kXMP_CLT_MultipleGeneric; // ! Leave itemNode with the first partial match. - } - } - return kXMP_CLT_SingleGeneric; // No second partial match was found. - - } - - } - - // Look for an 'x-default' item. - for ( itemNum = 0; itemNum < itemLim; ++itemNum ) { - currItem = arrayNode->children[itemNum]; - if ( currItem->qualifiers[0]->value == "x-default" ) { - *itemNode = currItem; - return kXMP_CLT_XDefault; - } - } - - // Everything failed, choose the first item. - *itemNode = arrayNode->children[0]; - return kXMP_CLT_FirstItem; - -} // ChooseLocalizedText - - -// ------------------------------------------------------------------------------------------------- -// AppendLangItem -// -------------- - -static void -AppendLangItem ( XMP_Node * arrayNode, XMP_StringPtr itemLang, XMP_StringPtr itemValue ) -{ - XMP_Node * newItem = new XMP_Node ( arrayNode, kXMP_ArrayItemName, itemValue, (kXMP_PropHasQualifiers | kXMP_PropHasLang) ); - XMP_Node * langQual = new XMP_Node ( newItem, "xml:lang", itemLang, kXMP_PropIsQualifier ); - newItem->qualifiers.push_back ( langQual ); - - if ( (arrayNode->children.empty()) || (langQual->value != "x-default") ) { - arrayNode->children.push_back ( newItem ); - } else { - arrayNode->children.insert ( arrayNode->children.begin(), newItem ); - } - -} // AppendLangItem - - -// ================================================================================================= -// Class Methods -// ============= -// -// -// ================================================================================================= - - -// ------------------------------------------------------------------------------------------------- -// GetProperty -// ----------- - -bool -XMPMeta::GetProperty ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr * propValue, - XMP_StringLen * valueSize, - XMP_OptionBits * options ) const -{ - XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. - XMP_Assert ( (propValue != 0) && (valueSize != 0) && (options != 0) ); // Enforced by wrapper. - - XMP_ExpandedXPath expPath; - ExpandXPath ( schemaNS, propName, &expPath ); - - XMP_Node * propNode = FindConstNode ( &tree, expPath ); - if ( propNode == 0 ) return false; - - *propValue = propNode->value.c_str(); - *valueSize = propNode->value.size(); - *options = propNode->options; - - return true; - -} // GetProperty - - -// ------------------------------------------------------------------------------------------------- -// GetArrayItem -// ------------ - -bool -XMPMeta::GetArrayItem ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - XMP_StringPtr * itemValue, - XMP_StringLen * valueSize, - XMP_OptionBits * options ) const -{ - XMP_Assert ( (schemaNS != 0) && (arrayName != 0) ); // Enforced by wrapper. - XMP_Assert ( (itemValue != 0) && (valueSize != 0) && (options != 0) ); // Enforced by wrapper. - - XMP_StringPtr itemPath; - XMP_StringLen pathLen; - - XMPUtils::ComposeArrayItemPath ( schemaNS, arrayName, itemIndex, &itemPath, &pathLen ); - return GetProperty ( schemaNS, itemPath, itemValue, valueSize, options ); - -} // GetArrayItem - - -// ------------------------------------------------------------------------------------------------- -// GetStructField -// -------------- - -bool -XMPMeta::GetStructField ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - XMP_StringPtr * fieldValue, - XMP_StringLen * valueSize, - XMP_OptionBits * options ) const -{ - XMP_Assert ( (schemaNS != 0) && (structName != 0) && (fieldNS != 0) && (fieldName != 0) ); // Enforced by wrapper. - XMP_Assert ( (fieldValue != 0) && (valueSize != 0) && (options != 0) ); // Enforced by wrapper. - - XMP_StringPtr fieldPath; - XMP_StringLen pathLen; - - XMPUtils::ComposeStructFieldPath ( schemaNS, structName, fieldNS, fieldName, &fieldPath, &pathLen ); - return GetProperty ( schemaNS, fieldPath, fieldValue, valueSize, options ); - -} // GetStructField - - -// ------------------------------------------------------------------------------------------------- -// GetQualifier -// ------------ - -bool -XMPMeta::GetQualifier ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - XMP_StringPtr * qualValue, - XMP_StringLen * valueSize, - XMP_OptionBits * options ) const -{ - XMP_Assert ( (schemaNS != 0) && (propName != 0) && (qualNS != 0) && (qualName != 0) ); // Enforced by wrapper. - XMP_Assert ( (qualValue != 0) && (valueSize != 0) && (options != 0) ); // Enforced by wrapper. - - XMP_StringPtr qualPath; - XMP_StringLen pathLen; - - XMPUtils::ComposeQualifierPath ( schemaNS, propName, qualNS, qualName, &qualPath, &pathLen ); - return GetProperty ( schemaNS, qualPath, qualValue, valueSize, options ); - -} // GetQualifier - - -// ------------------------------------------------------------------------------------------------- -// SetProperty -// ----------- - -// *** Should handle array items specially, calling SetArrayItem. - -void -XMPMeta::SetProperty ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr propValue, - XMP_OptionBits options ) -{ - XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. - - options = VerifySetOptions ( options, propValue ); - - XMP_ExpandedXPath expPath; - ExpandXPath ( schemaNS, propName, &expPath ); - - XMP_Node * propNode = FindNode ( &tree, expPath, kXMP_CreateNodes, options ); - if ( propNode == 0 ) XMP_Throw ( "Specified property does not exist", kXMPErr_BadXPath ); - - SetNode ( propNode, propValue, options ); - -} // SetProperty - - -// ------------------------------------------------------------------------------------------------- -// SetArrayItem -// ------------ - -void -XMPMeta::SetArrayItem ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - XMP_StringPtr itemValue, - XMP_OptionBits options ) -{ - XMP_Assert ( (schemaNS != 0) && (arrayName != 0) ); // Enforced by wrapper. - - XMP_ExpandedXPath arrayPath; - ExpandXPath ( schemaNS, arrayName, &arrayPath ); - XMP_Node * arrayNode = FindNode ( &tree, arrayPath, kXMP_ExistingOnly ); // Just lookup, don't try to create. - if ( arrayNode == 0 ) XMP_Throw ( "Specified array does not exist", kXMPErr_BadXPath ); - - DoSetArrayItem ( arrayNode, itemIndex, itemValue, options ); - -} // SetArrayItem - - -// ------------------------------------------------------------------------------------------------- -// AppendArrayItem -// --------------- - -void -XMPMeta::AppendArrayItem ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_OptionBits arrayOptions, - XMP_StringPtr itemValue, - XMP_OptionBits options ) -{ - XMP_Assert ( (schemaNS != 0) && (arrayName != 0) ); // Enforced by wrapper. - - arrayOptions = VerifySetOptions ( arrayOptions, 0 ); - if ( (arrayOptions & ~kXMP_PropArrayFormMask) != 0 ) { - XMP_Throw ( "Only array form flags allowed for arrayOptions", kXMPErr_BadOptions ); - } - - // Locate or create the array. If it already exists, make sure the array form from the options - // parameter is compatible with the current state. - - XMP_ExpandedXPath arrayPath; - ExpandXPath ( schemaNS, arrayName, &arrayPath ); - XMP_Node * arrayNode = FindNode ( &tree, arrayPath, kXMP_ExistingOnly ); // Just lookup, don't try to create. - - if ( arrayNode != 0 ) { - // The array exists, make sure the form is compatible. Zero arrayForm means take what exists. - if ( ! (arrayNode->options & kXMP_PropValueIsArray) ) { - XMP_Throw ( "The named property is not an array", kXMPErr_BadXPath ); - } - #if 0 - // *** Disable for now. Need to do some general rethinking of semantic checks. - if ( (arrayOptions != 0) && (arrayOptions != (arrayNode->options & kXMP_PropArrayFormMask)) ) { - XMP_Throw ( "Mismatch of existing and specified array form", kXMPErr_BadOptions ); - } - #endif - } else { - // The array does not exist, try to create it. - if ( arrayOptions == 0 ) XMP_Throw ( "Explicit arrayOptions required to create new array", kXMPErr_BadOptions ); - arrayNode = FindNode ( &tree, arrayPath, kXMP_CreateNodes, arrayOptions ); - if ( arrayNode == 0 ) XMP_Throw ( "Failure creating array node", kXMPErr_BadXPath ); - } - - DoSetArrayItem ( arrayNode, kXMP_ArrayLastItem, itemValue, (options | kXMP_InsertAfterItem) ); - -} // AppendArrayItem - - -// ------------------------------------------------------------------------------------------------- -// SetStructField -// -------------- - -void -XMPMeta::SetStructField ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - XMP_StringPtr fieldValue, - XMP_OptionBits options ) -{ - XMP_Assert ( (schemaNS != 0) && (structName != 0) && (fieldNS != 0) && (fieldName != 0) ); // Enforced by wrapper. - - XMP_StringPtr fieldPath; - XMP_StringLen pathLen; - - XMPUtils::ComposeStructFieldPath ( schemaNS, structName, fieldNS, fieldName, &fieldPath, &pathLen ); - SetProperty ( schemaNS, fieldPath, fieldValue, options ); - -} // SetStructField - - -// ------------------------------------------------------------------------------------------------- -// SetQualifier -// ------------ - -void -XMPMeta::SetQualifier ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - XMP_StringPtr qualValue, - XMP_OptionBits options ) -{ - XMP_Assert ( (schemaNS != 0) && (propName != 0) && (qualNS != 0) && (qualName != 0) ); // Enforced by wrapper. - - XMP_StringPtr qualPath; - XMP_StringLen pathLen; - - XMP_ExpandedXPath expPath; - ExpandXPath ( schemaNS, propName, &expPath ); - XMP_Node * propNode = FindNode ( &tree, expPath, kXMP_ExistingOnly ); - if ( propNode == 0 ) XMP_Throw ( "Specified property does not exist", kXMPErr_BadXPath ); - - XMPUtils::ComposeQualifierPath ( schemaNS, propName, qualNS, qualName, &qualPath, &pathLen ); - SetProperty ( schemaNS, qualPath, qualValue, options ); - -} // SetQualifier - - -// ------------------------------------------------------------------------------------------------- -// DeleteProperty -// -------------- - -void -XMPMeta::DeleteProperty ( XMP_StringPtr schemaNS, - XMP_StringPtr propName ) -{ - XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. - - XMP_ExpandedXPath expPath; - ExpandXPath ( schemaNS, propName, &expPath ); - - XMP_NodePtrPos ptrPos; - XMP_Node * propNode = FindNode ( &tree, expPath, kXMP_ExistingOnly, kXMP_NoOptions, &ptrPos ); - if ( propNode == 0 ) return; - XMP_Node * parentNode = propNode->parent; - - // Erase the pointer from the parent's vector, then delete the node and all below it. - - if ( ! (propNode->options & kXMP_PropIsQualifier) ) { - - parentNode->children.erase ( ptrPos ); - DeleteEmptySchema ( parentNode ); - - } else { - - if ( propNode->name == "xml:lang" ) { - XMP_Assert ( parentNode->options & kXMP_PropHasLang ); // *** &= ~flag would be safer - parentNode->options ^= kXMP_PropHasLang; - } else if ( propNode->name == "rdf:type" ) { - XMP_Assert ( parentNode->options & kXMP_PropHasType ); - parentNode->options ^= kXMP_PropHasType; - } - - parentNode->qualifiers.erase ( ptrPos ); - XMP_Assert ( parentNode->options & kXMP_PropHasQualifiers ); - if ( parentNode->qualifiers.empty() ) parentNode->options ^= kXMP_PropHasQualifiers; - - } - - delete propNode; // ! The destructor takes care of the whole subtree. - -} // DeleteProperty - - -// ------------------------------------------------------------------------------------------------- -// DeleteArrayItem -// --------------- - -void -XMPMeta::DeleteArrayItem ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex ) -{ - XMP_Assert ( (schemaNS != 0) && (arrayName != 0) ); // Enforced by wrapper. - - XMP_StringPtr itemPath; - XMP_StringLen pathLen; - - XMPUtils::ComposeArrayItemPath ( schemaNS, arrayName, itemIndex, &itemPath, &pathLen ); - DeleteProperty ( schemaNS, itemPath ); - -} // DeleteArrayItem - - -// ------------------------------------------------------------------------------------------------- -// DeleteStructField -// ----------------- - -void -XMPMeta::DeleteStructField ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName ) -{ - XMP_Assert ( (schemaNS != 0) && (structName != 0) && (fieldNS != 0) && (fieldName != 0) ); // Enforced by wrapper. - - XMP_StringPtr fieldPath; - XMP_StringLen pathLen; - - XMPUtils::ComposeStructFieldPath ( schemaNS, structName, fieldNS, fieldName, &fieldPath, &pathLen ); - DeleteProperty ( schemaNS, fieldPath ); - -} // DeleteStructField - - -// ------------------------------------------------------------------------------------------------- -// DeleteQualifier -// --------------- - -void -XMPMeta::DeleteQualifier ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName ) -{ - XMP_Assert ( (schemaNS != 0) && (propName != 0) && (qualNS != 0) && (qualName != 0) ); // Enforced by wrapper. - - XMP_StringPtr qualPath; - XMP_StringLen pathLen; - - XMPUtils::ComposeQualifierPath ( schemaNS, propName, qualNS, qualName, &qualPath, &pathLen ); - DeleteProperty ( schemaNS, qualPath ); - -} // DeleteQualifier - - -// ------------------------------------------------------------------------------------------------- -// DoesPropertyExist -// ----------------- - -bool -XMPMeta::DoesPropertyExist ( XMP_StringPtr schemaNS, - XMP_StringPtr propName ) const -{ - XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. - - XMP_ExpandedXPath expPath; - ExpandXPath ( schemaNS, propName, &expPath ); - - XMP_Node * propNode = FindConstNode ( &tree, expPath ); - return (propNode != 0); - -} // DoesPropertyExist - - -// ------------------------------------------------------------------------------------------------- -// DoesArrayItemExist -// ------------------ - -bool -XMPMeta::DoesArrayItemExist ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex ) const -{ - XMP_Assert ( (schemaNS != 0) && (arrayName != 0) ); // Enforced by wrapper. - - XMP_StringPtr itemPath; - XMP_StringLen pathLen; - - XMPUtils::ComposeArrayItemPath ( schemaNS, arrayName, itemIndex, &itemPath, &pathLen ); - return DoesPropertyExist ( schemaNS, itemPath ); - -} // DoesArrayItemExist - - -// ------------------------------------------------------------------------------------------------- -// DoesStructFieldExist -// -------------------- - -bool -XMPMeta::DoesStructFieldExist ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName ) const -{ - XMP_Assert ( (schemaNS != 0) && (structName != 0) && (fieldNS != 0) && (fieldName != 0) ); // Enforced by wrapper. - - XMP_StringPtr fieldPath; - XMP_StringLen pathLen; - - XMPUtils::ComposeStructFieldPath ( schemaNS, structName, fieldNS, fieldName, &fieldPath, &pathLen ); - return DoesPropertyExist ( schemaNS, fieldPath ); - -} // DoesStructFieldExist - - -// ------------------------------------------------------------------------------------------------- -// DoesQualifierExist -// ------------------ - -bool -XMPMeta::DoesQualifierExist ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName ) const -{ - XMP_Assert ( (schemaNS != 0) && (propName != 0) && (qualNS != 0) && (qualName != 0) ); // Enforced by wrapper. - - XMP_StringPtr qualPath; - XMP_StringLen pathLen; - - XMPUtils::ComposeQualifierPath ( schemaNS, propName, qualNS, qualName, &qualPath, &pathLen ); - return DoesPropertyExist ( schemaNS, qualPath ); - -} // DoesQualifierExist - - -// ------------------------------------------------------------------------------------------------- -// GetLocalizedText -// ---------------- - -bool -XMPMeta::GetLocalizedText ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr _genericLang, - XMP_StringPtr _specificLang, - XMP_StringPtr * actualLang, - XMP_StringLen * langSize, - XMP_StringPtr * itemValue, - XMP_StringLen * valueSize, - XMP_OptionBits * options ) const -{ - XMP_Assert ( (schemaNS != 0) && (arrayName != 0) && (_genericLang != 0) && (_specificLang != 0) ); // Enforced by wrapper. - XMP_Assert ( (actualLang != 0) && (langSize != 0) ); // Enforced by wrapper. - XMP_Assert ( (itemValue != 0) && (valueSize != 0) && (options != 0) ); // Enforced by wrapper. - - XMP_VarString zGenericLang ( _genericLang ); - XMP_VarString zSpecificLang ( _specificLang ); - NormalizeLangValue ( &zGenericLang ); - NormalizeLangValue ( &zSpecificLang ); - - XMP_StringPtr genericLang = zGenericLang.c_str(); - XMP_StringPtr specificLang = zSpecificLang.c_str(); - - XMP_ExpandedXPath arrayPath; - ExpandXPath ( schemaNS, arrayName, &arrayPath ); - - const XMP_Node * arrayNode = FindConstNode ( &tree, arrayPath ); // *** This expand/find idiom is used in 3 Getters. - if ( arrayNode == 0 ) return false; // *** Should extract it into a local utility. - - XMP_CLTMatch match; - const XMP_Node * itemNode; - - match = ChooseLocalizedText ( arrayNode, genericLang, specificLang, &itemNode ); - if ( match == kXMP_CLT_NoValues ) return false; - - *actualLang = itemNode->qualifiers[0]->value.c_str(); - *langSize = itemNode->qualifiers[0]->value.size(); - *itemValue = itemNode->value.c_str(); - *valueSize = itemNode->value.size(); - *options = itemNode->options; - - return true; - -} // GetLocalizedText - - -// ------------------------------------------------------------------------------------------------- -// SetLocalizedText -// ---------------- - -void -XMPMeta::SetLocalizedText ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr _genericLang, - XMP_StringPtr _specificLang, - XMP_StringPtr itemValue, - XMP_OptionBits options ) -{ - options = options; // Avoid unused parameter warning. - - XMP_Assert ( (schemaNS != 0) && (arrayName != 0) && (_genericLang != 0) && (_specificLang != 0) ); // Enforced by wrapper. - - XMP_VarString zGenericLang ( _genericLang ); - XMP_VarString zSpecificLang ( _specificLang ); - NormalizeLangValue ( &zGenericLang ); - NormalizeLangValue ( &zSpecificLang ); - - XMP_StringPtr genericLang = zGenericLang.c_str(); - XMP_StringPtr specificLang = zSpecificLang.c_str(); - - XMP_ExpandedXPath arrayPath; - ExpandXPath ( schemaNS, arrayName, &arrayPath ); - - // Find the array node and set the options if it was just created. - XMP_Node * arrayNode = FindNode ( &tree, arrayPath, kXMP_CreateNodes, - (kXMP_PropValueIsArray | kXMP_PropArrayIsOrdered | kXMP_PropArrayIsAlternate) ); - if ( arrayNode == 0 ) XMP_Throw ( "Failed to find or create array node", kXMPErr_BadXPath ); - if ( ! XMP_ArrayIsAltText(arrayNode->options) ) { - if ( arrayNode->children.empty() && XMP_ArrayIsAlternate(arrayNode->options) ) { - arrayNode->options |= kXMP_PropArrayIsAltText; - } else { - XMP_Throw ( "Localized text array is not alt-text", kXMPErr_BadXPath ); - } - } - - // Make sure the x-default item, if any, is first. - - size_t itemNum, itemLim; - XMP_Node * xdItem = 0; - bool haveXDefault = false; - - for ( itemNum = 0, itemLim = arrayNode->children.size(); itemNum < itemLim; ++itemNum ) { - XMP_Node * currItem = arrayNode->children[itemNum]; - XMP_Assert ( XMP_PropHasLang(currItem->options) ); - if ( currItem->qualifiers.empty() || (currItem->qualifiers[0]->name != "xml:lang") ) { - XMP_Throw ( "Language qualifier must be first", kXMPErr_BadXPath ); - } - if ( currItem->qualifiers[0]->value == "x-default" ) { - xdItem = currItem; - haveXDefault = true; - break; - } - } - - if ( haveXDefault && (itemNum != 0) ) { - XMP_Assert ( arrayNode->children[itemNum]->qualifiers[0]->value == "x-default" ); - XMP_Node * temp = arrayNode->children[0]; - arrayNode->children[0] = arrayNode->children[itemNum]; - arrayNode->children[itemNum] = temp; - } - - // Find the appropriate item. ChooseLocalizedText will make sure the array is a language alternative. - - const XMP_Node * cItemNode; // ! ChooseLocalizedText returns a pointer to a const node. - XMP_CLTMatch match = ChooseLocalizedText ( arrayNode, genericLang, specificLang, &cItemNode ); - XMP_Node * itemNode = const_cast ( cItemNode ); - - const bool specificXDefault = XMP_LitMatch ( specificLang, "x-default" ); - - switch ( match ) { - - case kXMP_CLT_NoValues : - - // Create the array items for the specificLang and x-default, with x-default first. - AppendLangItem ( arrayNode, "x-default", itemValue ); - haveXDefault = true; - if ( ! specificXDefault ) AppendLangItem ( arrayNode, specificLang, itemValue ); - break; - - case kXMP_CLT_SpecificMatch : - - if ( ! specificXDefault ) { - // Update the specific item, update x-default if it matches the old value. - if ( haveXDefault && (xdItem != itemNode) && (xdItem->value == itemNode->value) ) { - SetNodeValue ( xdItem, itemValue ); - } - SetNodeValue ( itemNode, itemValue ); // ! Do this after the x-default check! - } else { - // Update all items whose values match the old x-default value. - XMP_Assert ( haveXDefault && (xdItem == itemNode) ); - for ( itemNum = 0, itemLim = arrayNode->children.size(); itemNum < itemLim; ++itemNum ) { - XMP_Node * currItem = arrayNode->children[itemNum]; - if ( (currItem == xdItem) || (currItem->value != xdItem->value) ) continue; - SetNodeValue ( currItem, itemValue ); - } - SetNodeValue ( xdItem, itemValue ); // And finally do the x-default item. - } - break; - - case kXMP_CLT_SingleGeneric : - - // Update the generic item, update x-default if it matches the old value. - if ( haveXDefault && (xdItem != itemNode) && (xdItem->value == itemNode->value) ) { - SetNodeValue ( xdItem, itemValue ); - } - SetNodeValue ( itemNode, itemValue ); // ! Do this after the x-default check! - break; - - case kXMP_CLT_MultipleGeneric : - - // Create the specific language, ignore x-default. - AppendLangItem ( arrayNode, specificLang, itemValue ); - if ( specificXDefault ) haveXDefault = true; - break; - - case kXMP_CLT_XDefault : - - // Create the specific language, update x-default if it was the only item. - if ( arrayNode->children.size() == 1 ) SetNodeValue ( xdItem, itemValue ); - AppendLangItem ( arrayNode, specificLang, itemValue ); - break; - - case kXMP_CLT_FirstItem : - - // Create the specific language, don't add an x-default item. - AppendLangItem ( arrayNode, specificLang, itemValue ); - if ( specificXDefault ) haveXDefault = true; - break; - - default : - XMP_Throw ( "Unexpected result from ChooseLocalizedText", kXMPErr_InternalFailure ); - - } - - // Add an x-default at the front if needed. - if ( (! haveXDefault) && (arrayNode->children.size() == 1) ) { - AppendLangItem ( arrayNode, "x-default", itemValue ); - } - -} // SetLocalizedText - - -// ------------------------------------------------------------------------------------------------- -// GetProperty_Bool -// ---------------- - -bool -XMPMeta::GetProperty_Bool ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - bool * propValue, - XMP_OptionBits * options ) const -{ - XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. - XMP_Assert ( (propValue != 0) && (options != 0) ); // Enforced by wrapper. - - XMP_StringPtr valueStr; - XMP_StringLen valueLen; - - bool found = GetProperty ( schemaNS, propName, &valueStr, &valueLen, options ); - if ( found ) { - if ( ! XMP_PropIsSimple ( *options ) ) XMP_Throw ( "Property must be simple", kXMPErr_BadXPath ); - *propValue = XMPUtils::ConvertToBool ( valueStr ); - } - return found; - -} // GetProperty_Bool - - -// ------------------------------------------------------------------------------------------------- -// GetProperty_Int -// --------------- - -bool -XMPMeta::GetProperty_Int ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_Int32 * propValue, - XMP_OptionBits * options ) const -{ - XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. - XMP_Assert ( (propValue != 0) && (options != 0) ); // Enforced by wrapper. - - XMP_StringPtr valueStr; - XMP_StringLen valueLen; - - bool found = GetProperty ( schemaNS, propName, &valueStr, &valueLen, options ); - if ( found ) { - if ( ! XMP_PropIsSimple ( *options ) ) XMP_Throw ( "Property must be simple", kXMPErr_BadXPath ); - *propValue = XMPUtils::ConvertToInt ( valueStr ); - } - return found; - -} // GetProperty_Int - - -// ------------------------------------------------------------------------------------------------- -// GetProperty_Int64 -// ----------------- - -bool -XMPMeta::GetProperty_Int64 ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_Int64 * propValue, - XMP_OptionBits * options ) const -{ - XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. - XMP_Assert ( (propValue != 0) && (options != 0) ); // Enforced by wrapper. - - XMP_StringPtr valueStr; - XMP_StringLen valueLen; - - bool found = GetProperty ( schemaNS, propName, &valueStr, &valueLen, options ); - if ( found ) { - if ( ! XMP_PropIsSimple ( *options ) ) XMP_Throw ( "Property must be simple", kXMPErr_BadXPath ); - *propValue = XMPUtils::ConvertToInt64 ( valueStr ); - } - return found; - -} // GetProperty_Int64 - - -// ------------------------------------------------------------------------------------------------- -// GetProperty_Float -// ----------------- - -bool -XMPMeta::GetProperty_Float ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - double * propValue, - XMP_OptionBits * options ) const -{ - XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. - XMP_Assert ( (propValue != 0) && (options != 0) ); // Enforced by wrapper. - - XMP_StringPtr valueStr; - XMP_StringLen valueLen; - - bool found = GetProperty ( schemaNS, propName, &valueStr, &valueLen, options ); - if ( found ) { - if ( ! XMP_PropIsSimple ( *options ) ) XMP_Throw ( "Property must be simple", kXMPErr_BadXPath ); - *propValue = XMPUtils::ConvertToFloat ( valueStr ); - } - return found; - -} // GetProperty_Float - - -// ------------------------------------------------------------------------------------------------- -// GetProperty_Date -// ---------------- - -bool -XMPMeta::GetProperty_Date ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_DateTime * propValue, - XMP_OptionBits * options ) const -{ - XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. - XMP_Assert ( (propValue != 0) && (options != 0) ); // Enforced by wrapper. - - XMP_StringPtr valueStr; - XMP_StringLen valueLen; - - bool found = GetProperty ( schemaNS, propName, &valueStr, &valueLen, options ); - if ( found ) { - if ( ! XMP_PropIsSimple ( *options ) ) XMP_Throw ( "Property must be simple", kXMPErr_BadXPath ); - XMPUtils::ConvertToDate ( valueStr, propValue ); - } - return found; - -} // GetProperty_Date - - -// ------------------------------------------------------------------------------------------------- -// SetProperty_Bool -// ---------------- - -void -XMPMeta::SetProperty_Bool ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - bool propValue, - XMP_OptionBits options ) -{ - XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. - - XMP_StringPtr valueStr; - XMP_StringLen valueLen; - - XMPUtils::ConvertFromBool ( propValue, &valueStr, &valueLen ); - SetProperty ( schemaNS, propName, valueStr, options ); - -} // SetProperty_Bool - - -// ------------------------------------------------------------------------------------------------- -// SetProperty_Int -// --------------- - -void -XMPMeta::SetProperty_Int ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_Int32 propValue, - XMP_OptionBits options ) -{ - XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. - - XMP_StringPtr valueStr; - XMP_StringLen valueLen; - - XMPUtils::ConvertFromInt ( propValue, "", &valueStr, &valueLen ); - SetProperty ( schemaNS, propName, valueStr, options ); - -} // SetProperty_Int - - -// ------------------------------------------------------------------------------------------------- -// SetProperty_Int64 -// ----------------- - -void -XMPMeta::SetProperty_Int64 ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_Int64 propValue, - XMP_OptionBits options ) -{ - XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. - - XMP_StringPtr valueStr; - XMP_StringLen valueLen; - - XMPUtils::ConvertFromInt64 ( propValue, "", &valueStr, &valueLen ); - SetProperty ( schemaNS, propName, valueStr, options ); - -} // SetProperty_Int64 - - -// ------------------------------------------------------------------------------------------------- -// SetProperty_Float -// ----------------- - -void -XMPMeta::SetProperty_Float ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - double propValue, - XMP_OptionBits options ) -{ - XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. - - XMP_StringPtr valueStr; - XMP_StringLen valueLen; - - XMPUtils::ConvertFromFloat ( propValue, "", &valueStr, &valueLen ); - SetProperty ( schemaNS, propName, valueStr, options ); - -} // SetProperty_Float - - -// ------------------------------------------------------------------------------------------------- -// SetProperty_Date -// ---------------- - -void -XMPMeta::SetProperty_Date ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - const XMP_DateTime & propValue, - XMP_OptionBits options ) -{ - XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. - - XMP_StringPtr valueStr; - XMP_StringLen valueLen; - - XMPUtils::ConvertFromDate ( propValue, &valueStr, &valueLen ); - SetProperty ( schemaNS, propName, valueStr, options ); - -} // SetProperty_Date - -// ================================================================================================= - diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPMeta-Parse.cpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPMeta-Parse.cpp deleted file mode 100644 index c1f6eb1f3ad..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPMeta-Parse.cpp +++ /dev/null @@ -1,1291 +0,0 @@ -// ================================================================================================= -// Copyright 2002-2008 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// -// Adobe patent application tracking #P435, entitled 'Unique markers to simplify embedding data of -// one format in a file with a different format', inventors: Sean Parent, Greg Gilley. -// ================================================================================================= - -#include "XMP_Environment.h" // ! This must be the first include! -#include "XMPCore_Impl.hpp" - -#include "XMPMeta.hpp" -#include "XMPUtils.hpp" - -#include "UnicodeInlines.incl_cpp" -#include "UnicodeConversions.hpp" -#include "ExpatAdapter.hpp" - -#if XMP_DebugBuild - #include -#endif - -using namespace std; - -#if XMP_WinBuild -#ifdef _MSC_VER - #pragma warning ( disable : 4533 ) // initialization of '...' is skipped by 'goto ...' - #pragma warning ( disable : 4702 ) // unreachable code - #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) - #pragma warning ( disable : 4996 ) // '...' was declared deprecated -#endif -#endif - - -// *** Use the XMP_PropIsXyz (Schema, Simple, Struct, Array, ...) macros -// *** Add debug codegen checks, e.g. that typical masking operations really work -// *** Change all uses of strcmp and strncmp to XMP_LitMatch and XMP_LitNMatch - - -// ================================================================================================= -// Local Types and Constants -// ========================= - - -// ================================================================================================= -// Static Variables -// ================ - -#ifndef Trace_ParsingHackery - #define Trace_ParsingHackery 0 -#endif - -static const char * kReplaceLatin1[128] = - { - - // The 0x80..0x9F range is undefined in Latin-1, but is defined in Windows code page 1252. - // The bytes 0x81, 0x8D, 0x8F, 0x90, and 0x9D are formally undefined by Windows 1252, but - // their conversion API maps them to U+0081, etc. These are in XML's RestrictedChar set, so - // we map them to a space. - - "\xE2\x82\xAC", " ", "\xE2\x80\x9A", "\xC6\x92", // 0x80 .. 0x83 - "\xE2\x80\x9E", "\xE2\x80\xA6", "\xE2\x80\xA0", "\xE2\x80\xA1", // 0x84 .. 0x87 - "\xCB\x86", "\xE2\x80\xB0", "\xC5\xA0", "\xE2\x80\xB9", // 0x88 .. 0x8B - "\xC5\x92", " ", "\xC5\xBD", " ", // 0x8C .. 0x8F - - " ", "\xE2\x80\x98", "\xE2\x80\x99", "\xE2\x80\x9C", // 0x90 .. 0x93 - "\xE2\x80\x9D", "\xE2\x80\xA2", "\xE2\x80\x93", "\xE2\x80\x94", // 0x94 .. 0x97 - "\xCB\x9C", "\xE2\x84\xA2", "\xC5\xA1", "\xE2\x80\xBA", // 0x98 .. 0x9B - "\xC5\x93", " ", "\xC5\xBE", "\xC5\xB8", // 0x9C .. 0x9F - - // These are the UTF-8 forms of the official Latin-1 characters in the range 0xA0..0xFF. Not - // too surprisingly these map to U+00A0, etc. Which is the Unicode Latin Supplement range. - - "\xC2\xA0", "\xC2\xA1", "\xC2\xA2", "\xC2\xA3", "\xC2\xA4", "\xC2\xA5", "\xC2\xA6", "\xC2\xA7", // 0xA0 .. 0xA7 - "\xC2\xA8", "\xC2\xA9", "\xC2\xAA", "\xC2\xAB", "\xC2\xAC", "\xC2\xAD", "\xC2\xAE", "\xC2\xAF", // 0xA8 .. 0xAF - - "\xC2\xB0", "\xC2\xB1", "\xC2\xB2", "\xC2\xB3", "\xC2\xB4", "\xC2\xB5", "\xC2\xB6", "\xC2\xB7", // 0xB0 .. 0xB7 - "\xC2\xB8", "\xC2\xB9", "\xC2\xBA", "\xC2\xBB", "\xC2\xBC", "\xC2\xBD", "\xC2\xBE", "\xC2\xBF", // 0xB8 .. 0xBF - - "\xC3\x80", "\xC3\x81", "\xC3\x82", "\xC3\x83", "\xC3\x84", "\xC3\x85", "\xC3\x86", "\xC3\x87", // 0xC0 .. 0xC7 - "\xC3\x88", "\xC3\x89", "\xC3\x8A", "\xC3\x8B", "\xC3\x8C", "\xC3\x8D", "\xC3\x8E", "\xC3\x8F", // 0xC8 .. 0xCF - - "\xC3\x90", "\xC3\x91", "\xC3\x92", "\xC3\x93", "\xC3\x94", "\xC3\x95", "\xC3\x96", "\xC3\x97", // 0xD0 .. 0xD7 - "\xC3\x98", "\xC3\x99", "\xC3\x9A", "\xC3\x9B", "\xC3\x9C", "\xC3\x9D", "\xC3\x9E", "\xC3\x9F", // 0xD8 .. 0xDF - - "\xC3\xA0", "\xC3\xA1", "\xC3\xA2", "\xC3\xA3", "\xC3\xA4", "\xC3\xA5", "\xC3\xA6", "\xC3\xA7", // 0xE0 .. 0xE7 - "\xC3\xA8", "\xC3\xA9", "\xC3\xAA", "\xC3\xAB", "\xC3\xAC", "\xC3\xAD", "\xC3\xAE", "\xC3\xAF", // 0xE8 .. 0xEF - - "\xC3\xB0", "\xC3\xB1", "\xC3\xB2", "\xC3\xB3", "\xC3\xB4", "\xC3\xB5", "\xC3\xB6", "\xC3\xB7", // 0xF0 .. 0xF7 - "\xC3\xB8", "\xC3\xB9", "\xC3\xBA", "\xC3\xBB", "\xC3\xBC", "\xC3\xBD", "\xC3\xBE", "\xC3\xBF", // 0xF8 .. 0xFF - - }; - - -// ================================================================================================= -// Local Utilities -// =============== - - -#define IsHexDigit(ch) ( (('0' <= (ch)) && ((ch) <= '9')) || (('A' <= (ch)) && ((ch) <= 'F')) ) -#define HexDigitValue(ch) ( (((ch) - '0') < 10) ? ((ch) - '0') : ((ch) - 'A' + 10) ) - - -// ------------------------------------------------------------------------------------------------- -// PickBestRoot -// ------------ -static const XML_Node * PickBestRoot ( const XML_Node & xmlParent, XMP_OptionBits options ) -{ - - // Look among this parent's content for x:xmpmeta. The recursion for x:xmpmeta is broader than - // the strictly defined choice, but gives us smaller code. - for ( size_t childNum = 0, childLim = xmlParent.content.size(); childNum < childLim; ++childNum ) { - const XML_Node * childNode = xmlParent.content[childNum]; - if ( childNode->kind != kElemNode ) continue; - if ( (childNode->name == "x:xmpmeta") || (childNode->name == "x:xapmeta") ) return PickBestRoot ( *childNode, 0 ); - } - // Look among this parent's content for a bare rdf:RDF if that is allowed. - if ( ! (options & kXMP_RequireXMPMeta) ) { - for ( size_t childNum = 0, childLim = xmlParent.content.size(); childNum < childLim; ++childNum ) { - const XML_Node * childNode = xmlParent.content[childNum]; - if ( childNode->kind != kElemNode ) continue; - if ( childNode->name == "rdf:RDF" ) return childNode; - } - } - - // Recurse into the content. - for ( size_t childNum = 0, childLim = xmlParent.content.size(); childNum < childLim; ++childNum ) { - const XML_Node * foundRoot = PickBestRoot ( *xmlParent.content[childNum], options ); - if ( foundRoot != 0 ) return foundRoot; - } - - return 0; - -} // PickBestRoot - -// ------------------------------------------------------------------------------------------------- -// FindRootNode -// ------------ -// -// Find the XML node that is the root of the XMP data tree. Generally this will be an outer node, -// but it could be anywhere if a general XML document is parsed (e.g. SVG). The XML parser counted -// all possible root nodes, and kept a pointer to the last one. If there is more than one possible -// root use PickBestRoot to choose among them. -// -// If there is a root node, try to extract the version of the previous XMP toolkit. - -static const XML_Node * FindRootNode ( XMPMeta * thiz, const XMLParserAdapter & xmlParser, XMP_OptionBits options ) -{ - const XML_Node * rootNode = xmlParser.rootNode; - - if ( xmlParser.rootCount > 1 ) rootNode = PickBestRoot ( xmlParser.tree, options ); - if ( rootNode == 0 ) return 0; - - // We have a root node. Try to extract previous toolkit version number. - - XMP_StringPtr verStr = ""; - - XMP_Assert ( rootNode->name == "rdf:RDF" ); - - if ( (options & kXMP_RequireXMPMeta) && - ((rootNode->parent == 0) || - ((rootNode->parent->name != "x:xmpmeta") && (rootNode->parent->name != "x:xapmeta"))) ) return 0; - - for ( size_t attrNum = 0, attrLim = rootNode->parent->attrs.size(); attrNum < attrLim; ++attrNum ) { - const XML_Node * currAttr =rootNode->parent->attrs[attrNum]; - if ( (currAttr->name == "x:xmptk") || (currAttr->name == "x:xaptk") ) { - verStr = currAttr->value.c_str(); - break; - } - } - - // Decode the version number into MMmmuubbb digits. If any part is too big, peg it at 99 or 999. - - unsigned long part; - while ( (*verStr != 0) && ((*verStr < '0') || (*verStr > '9')) ) ++verStr; - - part = 0; - while ( (*verStr != 0) && ('0' <= *verStr) && (*verStr <= '9') ) { - part = (part * 10) + (*verStr - '0'); - ++verStr; - } - if ( part > 99 ) part = 99; - thiz->prevTkVer = part * 100*100*1000; - - part = 0; - if ( *verStr == '.' ) ++verStr; - while ( (*verStr != 0) && ('0' <= *verStr) && (*verStr <= '9') ) { - part = (part * 10) + (*verStr - '0'); - ++verStr; - } - if ( part > 99 ) part = 99; - thiz->prevTkVer += part * 100*1000; - - part = 0; - if ( *verStr == '.' ) ++verStr; - while ( (*verStr != 0) && ('0' <= *verStr) && (*verStr <= '9') ) { - part = (part * 10) + (*verStr - '0'); - ++verStr; - } - if ( part > 99 ) part = 99; - thiz->prevTkVer += part * 1000; - - part = 0; - if ( *verStr == '-' ) ++verStr; - while ( (*verStr != 0) && ('0' <= *verStr) && (*verStr <= '9') ) { - part = (part * 10) + (*verStr - '0'); - ++verStr; - } - if ( part > 999 ) part = 999; - thiz->prevTkVer += part; - - return rootNode; - -} // FindRootNode - -// ------------------------------------------------------------------------------------------------- -// NormalizeDCArrays -// ----------------- -// -// Undo the denormalization performed by the XMP used in Acrobat 5. If a Dublin Core array had only -// one item, it was serialized as a simple property. The xml:lang attribute was dropped from an -// alt-text item if the language was x-default. - -// *** This depends on the dc: namespace prefix. - -static void -NormalizeDCArrays ( XMP_Node * xmpTree ) -{ - XMP_Node * dcSchema = FindSchemaNode ( xmpTree, kXMP_NS_DC, kXMP_ExistingOnly ); - if ( dcSchema == 0 ) return; - - for ( size_t propNum = 0, propLimit = dcSchema->children.size(); propNum < propLimit; ++propNum ) { - XMP_Node * currProp = dcSchema->children[propNum]; - XMP_OptionBits arrayForm = 0; - - if ( ! XMP_PropIsSimple ( currProp->options ) ) continue; // Nothing to do if not simple. - - if ( (currProp->name == "dc:creator" ) || // See if it is supposed to be an array. - (currProp->name == "dc:date" ) ) { // *** Think about an array of char* and a loop. - arrayForm = kXMP_PropArrayIsOrdered; - } else if ( - (currProp->name == "dc:description" ) || - (currProp->name == "dc:rights" ) || - (currProp->name == "dc:title" ) ) { - arrayForm = kXMP_PropArrayIsAltText; - } else if ( - (currProp->name == "dc:contributor" ) || - (currProp->name == "dc:language" ) || - (currProp->name == "dc:publisher" ) || - (currProp->name == "dc:relation" ) || - (currProp->name == "dc:subject" ) || - (currProp->name == "dc:type" ) ) { - arrayForm = kXMP_PropValueIsArray; - } - if ( arrayForm == 0 ) continue; // Nothing to do if it isn't supposed to be an array. - - arrayForm = VerifySetOptions ( arrayForm, 0 ); // Set the implicit array bits. - XMP_Node * newArray = new XMP_Node ( dcSchema, currProp->name.c_str(), arrayForm ); - dcSchema->children[propNum] = newArray; - newArray->children.push_back ( currProp ); - currProp->parent = newArray; - currProp->name = kXMP_ArrayItemName; - - if ( XMP_ArrayIsAltText ( arrayForm ) && (! (currProp->options & kXMP_PropHasLang)) ) { - XMP_Node * newLang = new XMP_Node ( currProp, "xml:lang", "x-default", kXMP_PropIsQualifier ); - currProp->options |= (kXMP_PropHasQualifiers | kXMP_PropHasLang); - if ( currProp->qualifiers.empty() ) { // *** Need a util? - currProp->qualifiers.push_back ( newLang ); - } else { - currProp->qualifiers.insert ( currProp->qualifiers.begin(), newLang ); - } - } - - } - -} // NormalizeDCArrays - - -// ------------------------------------------------------------------------------------------------- -// CompareAliasedSubtrees -// ---------------------- - -// *** Change to do some alias-specific setup, then use CompareSubtrees. One special case for -// *** aliases is a simple to x-default alias, the options and qualifiers obviously differ. - -static void -CompareAliasedSubtrees ( XMP_Node * aliasNode, XMP_Node * baseNode, bool outerCall = true ) -{ - // ! The outermost call is special. The names almost certainly differ. The qualifiers (and - // ! hence options) will differ for an alias to the x-default item of a langAlt array. - if ( (aliasNode->value != baseNode->value) || - (aliasNode->children.size() != baseNode->children.size()) ) { - XMP_Throw ( "Mismatch between alias and base nodes", kXMPErr_BadXMP ); - } - if ( ! outerCall ) { - if ( (aliasNode->name != baseNode->name) || - (aliasNode->options != baseNode->options) || - (aliasNode->qualifiers.size() != baseNode->qualifiers.size()) ) { - XMP_Throw ( "Mismatch between alias and base nodes", kXMPErr_BadXMP ); - } - } - - for ( size_t childNum = 0, childLim = aliasNode->children.size(); childNum < childLim; ++childNum ) { - XMP_Node * aliasChild = aliasNode->children[childNum]; - XMP_Node * baseChild = baseNode->children[childNum]; - CompareAliasedSubtrees ( aliasChild, baseChild, false ); - } - - for ( size_t qualNum = 0, qualLim = aliasNode->qualifiers.size(); qualNum < qualLim; ++qualNum ) { - XMP_Node * aliasQual = aliasNode->qualifiers[qualNum]; - XMP_Node * baseQual = baseNode->qualifiers[qualNum]; - CompareAliasedSubtrees ( aliasQual, baseQual, false ); - } - -} // CompareAliasedSubtrees - - -// ------------------------------------------------------------------------------------------------- -// TransplantArrayItemAlias -// ------------------------ - -static void -TransplantArrayItemAlias ( XMP_Node * oldParent, size_t oldNum, XMP_Node * newParent ) -{ - XMP_Node * childNode = oldParent->children[oldNum]; - - if ( newParent->options & kXMP_PropArrayIsAltText ) { - if ( childNode->options & kXMP_PropHasLang ) { - XMP_Throw ( "Alias to x-default already has a language qualifier", kXMPErr_BadXMP ); // *** Allow x-default. - } - childNode->options |= (kXMP_PropHasQualifiers | kXMP_PropHasLang); - XMP_Node * langQual = new XMP_Node ( childNode, "xml:lang", "x-default", kXMP_PropIsQualifier ); // *** AddLangQual util? - if ( childNode->qualifiers.empty() ) { - childNode->qualifiers.push_back ( langQual ); - } else { - childNode->qualifiers.insert ( childNode->qualifiers.begin(), langQual ); - } - } - - oldParent->children.erase ( oldParent->children.begin() + oldNum ); - childNode->name = kXMP_ArrayItemName; - childNode->parent = newParent; - if ( newParent->children.empty() ) { - newParent->children.push_back ( childNode ); - } else { - newParent->children.insert ( newParent->children.begin(), childNode ); - } - -} // TransplantArrayItemAlias - - -// ------------------------------------------------------------------------------------------------- -// TransplantNamedAlias -// -------------------- - -static void -TransplantNamedAlias ( XMP_Node * oldParent, size_t oldNum, XMP_Node * newParent, XMP_VarString & newName ) -{ - XMP_Node * childNode = oldParent->children[oldNum]; - - oldParent->children.erase ( oldParent->children.begin() + oldNum ); - childNode->name = newName; - childNode->parent = newParent; - newParent->children.push_back ( childNode ); - -} // TransplantNamedAlias - - -// ------------------------------------------------------------------------------------------------- -// MoveExplicitAliases -// ------------------- - -static void -MoveExplicitAliases ( XMP_Node * tree, XMP_OptionBits parseOptions ) -{ - tree->options ^= kXMP_PropHasAliases; - const bool strictAliasing = ((parseOptions & kXMP_StrictAliasing) != 0); - - // Visit all of the top level nodes looking for aliases. If there is no base, transplant the - // alias subtree. If there is a base and strict aliasing is on, make sure the alias and base - // subtrees match. - - // ! Use "while" loops not "for" loops since both the schema and property loops can remove the - // ! current item from the vector being traversed. And don't increment the counter for a delete. - - size_t schemaNum = 0; - while ( schemaNum < tree->children.size() ) { - XMP_Node * currSchema = tree->children[schemaNum]; - - size_t propNum = 0; - while ( propNum < currSchema->children.size() ) { - XMP_Node * currProp = currSchema->children[propNum]; - if ( ! (currProp->options & kXMP_PropIsAlias) ) { - ++propNum; - continue; - } - currProp->options ^= kXMP_PropIsAlias; - - // Find the base path, look for the base schema and root node. - - XMP_AliasMapPos aliasPos = sRegisteredAliasMap->find ( currProp->name ); - XMP_Assert ( aliasPos != sRegisteredAliasMap->end() ); - XMP_ExpandedXPath & basePath = aliasPos->second; - XMP_OptionBits arrayOptions = (basePath[kRootPropStep].options & kXMP_PropArrayFormMask); - - XMP_Node * baseSchema = FindSchemaNode ( tree, basePath[kSchemaStep].step.c_str(), kXMP_CreateNodes ); - if ( baseSchema->options & kXMP_NewImplicitNode ) baseSchema->options ^= kXMP_NewImplicitNode; - XMP_Node * baseNode = FindChildNode ( baseSchema, basePath[kRootPropStep].step.c_str(), kXMP_ExistingOnly ); - - if ( baseNode == 0 ) { - - if ( basePath.size() == 2 ) { - // A top-to-top alias, transplant the property. - TransplantNamedAlias ( currSchema, propNum, baseSchema, basePath[kRootPropStep].step ); - } else { - // An alias to an array item, create the array and transplant the property. - baseNode = new XMP_Node ( baseSchema, basePath[kRootPropStep].step.c_str(), arrayOptions ); - baseSchema->children.push_back ( baseNode ); - TransplantArrayItemAlias ( currSchema, propNum, baseNode ); - } - - } else if ( basePath.size() == 2 ) { - - // The base node does exist and this is a top-to-top alias. Check for conflicts if - // strict aliasing is on. Remove and delete the alias subtree. - if ( strictAliasing ) CompareAliasedSubtrees ( currProp, baseNode ); - currSchema->children.erase ( currSchema->children.begin() + propNum ); - delete currProp; - - } else { - - // This is an alias to an array item and the array exists. Look for the aliased item. - // Then transplant or check & delete as appropriate. - - XMP_Node * itemNode = 0; - if ( arrayOptions & kXMP_PropArrayIsAltText ) { - XMP_Index xdIndex = LookupLangItem ( baseNode, *xdefaultName ); - if ( xdIndex != -1 ) itemNode = baseNode->children[xdIndex]; - } else if ( ! baseNode->children.empty() ) { - itemNode = baseNode->children[0]; - } - - if ( itemNode == 0 ) { - TransplantArrayItemAlias ( currSchema, propNum, baseNode ); - } else { - if ( strictAliasing ) CompareAliasedSubtrees ( currProp, itemNode ); - currSchema->children.erase ( currSchema->children.begin() + propNum ); - delete currProp; - } - - } - - } // Property loop - - // Increment the counter or remove an empty schema node. - if ( currSchema->children.size() > 0 ) { - ++schemaNum; - } else { - delete tree->children[schemaNum]; // ! Delete the schema node itself. - tree->children.erase ( tree->children.begin() + schemaNum ); - } - - } // Schema loop - -} // MoveExplicitAliases - - -// ------------------------------------------------------------------------------------------------- -// FixGPSTimeStamp -// --------------- - -static void -FixGPSTimeStamp ( XMP_Node * exifSchema, XMP_Node * gpsDateTime ) -{ - XMP_DateTime binGPSStamp; - try { - XMPUtils::ConvertToDate ( gpsDateTime->value.c_str(), &binGPSStamp ); - } catch ( ... ) { - return; // Don't let a bad date stop other things. - } - if ( (binGPSStamp.year != 0) || (binGPSStamp.month != 0) || (binGPSStamp.day != 0) ) return; - - XMP_Node * otherDate = FindChildNode ( exifSchema, "exif:DateTimeOriginal", kXMP_ExistingOnly ); - if ( otherDate == 0 ) otherDate = FindChildNode ( exifSchema, "exif:DateTimeDigitized", kXMP_ExistingOnly ); - if ( otherDate == 0 ) return; - - XMP_DateTime binOtherDate; - try { - XMPUtils::ConvertToDate ( otherDate->value.c_str(), &binOtherDate ); - } catch ( ... ) { - return; // Don't let a bad date stop other things. - } - - binGPSStamp.year = binOtherDate.year; - binGPSStamp.month = binOtherDate.month; - binGPSStamp.day = binOtherDate.day; - - XMP_StringPtr goodStr; - XMP_StringLen goodLen; - XMPUtils::ConvertFromDate ( binGPSStamp, &goodStr, &goodLen ); - - gpsDateTime->value.assign ( goodStr, goodLen ); - -} // FixGPSTimeStamp - - -// ------------------------------------------------------------------------------------------------- -// MigrateAudioCopyright -// --------------------- -// -// The initial support for WAV files mapped a legacy ID3 audio copyright into a new xmpDM:copyright -// property. This is special case code to migrate that into dc:rights['x-default']. The rules: -// -// 1. If there is no dc:rights array, or an empty array - -// Create one with dc:rights['x-default'] set from double linefeed and xmpDM:copyright. -// -// 2. If there is a dc:rights array but it has no x-default item - -// Create an x-default item as a copy of the first item then apply rule #3. -// -// 3. If there is a dc:rights array with an x-default item, look for a double linefeed in the value. -// A. If no double linefeed, compare the x-default value to the xmpDM:copyright value. -// A1. If they match then leave the x-default value alone. -// A2. Otherwise, append a double linefeed and the xmpDM:copyright value to the x-default value. -// B. If there is a double linefeed, compare the trailing text to the xmpDM:copyright value. -// B1. If they match then leave the x-default value alone. -// B2. Otherwise, replace the trailing x-default text with the xmpDM:copyright value. -// -// 4. In all cases, delete the xmpDM:copyright property. - -static void -MigrateAudioCopyright ( XMPMeta * xmp, XMP_Node * dmCopyright ) -{ - - try { - - std::string & dmValue = dmCopyright->value; - static const char * kDoubleLF = "\xA\xA"; - - XMP_Node * dcSchema = FindSchemaNode ( &xmp->tree, kXMP_NS_DC, kXMP_CreateNodes ); - XMP_Node * dcRightsArray = FindChildNode ( dcSchema, "dc:rights", kXMP_ExistingOnly ); - - if ( (dcRightsArray == 0) || dcRightsArray->children.empty() ) { - - // 1. No dc:rights array, create from double linefeed and xmpDM:copyright. - dmValue.insert ( 0, kDoubleLF ); - xmp->SetLocalizedText ( kXMP_NS_DC, "rights", "", "x-default", dmValue.c_str(), 0 ); - - } else { - - std::string xdefaultStr ( "x-default" ); - - XMP_Index xdIndex = LookupLangItem ( dcRightsArray, xdefaultStr ); - - if ( xdIndex < 0 ) { - // 2. No x-default item, create from the first item. - XMP_StringPtr firstValue = dcRightsArray->children[0]->value.c_str(); - xmp->SetLocalizedText ( kXMP_NS_DC, "rights", "", "x-default", firstValue, 0 ); - xdIndex = LookupLangItem ( dcRightsArray, xdefaultStr ); - } - - // 3. Look for a double linefeed in the x-default value. - XMP_Assert ( xdIndex == 0 ); - std::string & defaultValue = dcRightsArray->children[xdIndex]->value; - XMP_Index lfPos = defaultValue.find ( kDoubleLF ); - - if ( lfPos < 0 ) { - - // 3A. No double LF, compare whole values. - if ( dmValue != defaultValue ) { - // 3A2. Append the xmpDM:copyright to the x-default item. - defaultValue += kDoubleLF; - defaultValue += dmValue; - } - - } else { - - // 3B. Has double LF, compare the tail. - if ( defaultValue.compare ( lfPos+2, std::string::npos, dmValue ) != 0 ) { - // 3B2. Replace the x-default tail. - defaultValue.replace ( lfPos+2, std::string::npos, dmValue ); - } - - } - - } - - // 4. Get rid of the xmpDM:copyright. - xmp->DeleteProperty ( kXMP_NS_DM, "copyright" ); - - } catch ( ... ) { - // Don't let failures (like a bad dc:rights form) stop other cleanup. - } - -} // MigrateAudioCopyright - - -// ------------------------------------------------------------------------------------------------- -// RepairAltText -// ------------- -// -// Make sure that the array is well-formed AltText. Each item must be simple and have an xml:lang -// qualifier. If repairs are needed, keep simple non-empty items by adding the xml:lang. - -static void -RepairAltText ( XMP_Node & tree, XMP_StringPtr schemaNS, XMP_StringPtr arrayName ) -{ - XMP_Node * schemaNode = FindSchemaNode ( &tree, schemaNS, kXMP_ExistingOnly ); - if ( schemaNode == 0 ) return; - - XMP_Node * arrayNode = FindChildNode ( schemaNode, arrayName, kXMP_ExistingOnly ); - if ( (arrayNode == 0) || XMP_ArrayIsAltText ( arrayNode->options ) ) return; // Already OK. - - if ( ! XMP_PropIsArray ( arrayNode->options ) ) return; // ! Not even an array, leave it alone. - // *** Should probably change simple values to LangAlt with 'x-default' item. - - arrayNode->options |= (kXMP_PropArrayIsOrdered | kXMP_PropArrayIsAlternate | kXMP_PropArrayIsAltText); - - for ( int i = arrayNode->children.size()-1; i >= 0; --i ) { // ! Need a signed index type. - - XMP_Node * currChild = arrayNode->children[i]; - - if ( ! XMP_PropIsSimple ( currChild->options ) ) { - - // Delete non-simple children. - delete ( currChild ); - arrayNode->children.erase ( arrayNode->children.begin() + i ); - - } else if ( ! XMP_PropHasLang ( currChild->options ) ) { - - if ( currChild->value.empty() ) { - - // Delete empty valued children that have no xml:lang. - delete ( currChild ); - arrayNode->children.erase ( arrayNode->children.begin() + i ); - - } else { - - // Add an xml:lang qualifier with the value "x-repair". - XMP_Node * repairLang = new XMP_Node ( currChild, "xml:lang", "x-repair", kXMP_PropIsQualifier ); - if ( currChild->qualifiers.empty() ) { - currChild->qualifiers.push_back ( repairLang ); - } else { - currChild->qualifiers.insert ( currChild->qualifiers.begin(), repairLang ); - } - currChild->options |= (kXMP_PropHasQualifiers | kXMP_PropHasLang); - - } - - } - - } - -} // RepairAltText - - -// ------------------------------------------------------------------------------------------------- -// TouchUpDataModel -// ---------------- - -static void -TouchUpDataModel ( XMPMeta * xmp ) -{ - XMP_Node & tree = xmp->tree; - - // Do special case touch ups for certain schema. - - XMP_Node * currSchema = 0; - - currSchema = FindSchemaNode ( &tree, kXMP_NS_EXIF, kXMP_ExistingOnly ); - if ( currSchema != 0 ) { - - // Do a special case fix for exif:GPSTimeStamp. - XMP_Node * gpsDateTime = FindChildNode ( currSchema, "exif:GPSTimeStamp", kXMP_ExistingOnly ); - if ( gpsDateTime != 0 ) FixGPSTimeStamp ( currSchema, gpsDateTime ); - - // *** Should probably have RepairAltText change simple values to LangAlt with 'x-default' item. - // *** For now just do this for exif:UserComment, the one case we know about, late in cycle fix. - XMP_Node * userComment = FindChildNode ( currSchema, "exif:UserComment", kXMP_ExistingOnly ); - if ( (userComment != 0) && XMP_PropIsSimple ( userComment->options ) ) { - XMP_Node * newChild = new XMP_Node ( userComment, kXMP_ArrayItemName, - userComment->value.c_str(), userComment->options ); - newChild->qualifiers.swap ( userComment->qualifiers ); - if ( ! XMP_PropHasLang ( newChild->options ) ) { - XMP_Node * langQual = new XMP_Node ( newChild, "xml:lang", "x-default", kXMP_PropIsQualifier ); - newChild->qualifiers.insert ( newChild->qualifiers.begin(), langQual ); - newChild->options |= (kXMP_PropHasQualifiers | kXMP_PropHasLang); - } - userComment->value.erase(); - userComment->options = kXMP_PropArrayFormMask; // ! Happens to have all the right bits. - userComment->children.push_back ( newChild ); - } - - } - - currSchema = FindSchemaNode ( &tree, kXMP_NS_DM, kXMP_ExistingOnly ); - if ( currSchema != 0 ) { - // Do a special case migration of xmpDM:copyright to dc:rights['x-default']. Do this before - // the dc: touch up since it can affect the dc: schema. - XMP_Node * dmCopyright = FindChildNode ( currSchema, "xmpDM:copyright", kXMP_ExistingOnly ); - if ( dmCopyright != 0 ) MigrateAudioCopyright ( xmp, dmCopyright ); - } - - currSchema = FindSchemaNode ( &tree, kXMP_NS_DC, kXMP_ExistingOnly ); - if ( currSchema != 0 ) { - // Do a special case fix for dc:subject, make sure it is an unordered array. - XMP_Node * dcSubject = FindChildNode ( currSchema, "dc:subject", kXMP_ExistingOnly ); - if ( dcSubject != 0 ) { - XMP_OptionBits keepMask = static_cast(~(kXMP_PropArrayIsOrdered | kXMP_PropArrayIsAlternate | kXMP_PropArrayIsAltText)); - dcSubject->options &= keepMask; // Make sure any ordered array bits are clear. - } - } - - // Fix any broken AltText arrays that we know about. - - RepairAltText ( tree, kXMP_NS_DC, "dc:description" ); // ! Note inclusion of prefixes for direct node lookup! - RepairAltText ( tree, kXMP_NS_DC, "dc:rights" ); - RepairAltText ( tree, kXMP_NS_DC, "dc:title" ); - RepairAltText ( tree, kXMP_NS_XMP_Rights, "xmpRights:UsageTerms" ); - RepairAltText ( tree, kXMP_NS_EXIF, "exif:UserComment" ); - - // Tweak old XMP: Move an instance ID from rdf:about to the xmpMM:InstanceID property. An old - // instance ID usually looks like "uuid:bac965c4-9d87-11d9-9a30-000d936b79c4", plus InDesign - // 3.0 wrote them like "bac965c4-9d87-11d9-9a30-000d936b79c4". If the name looks like a UUID - // simply move it to xmpMM:InstanceID, don't worry about any existing xmpMM:InstanceID. Both - // will only be present when a newer file with the xmpMM:InstanceID property is updated by an - // old app that uses rdf:about. - - if ( ! tree.name.empty() ) { - - bool nameIsUUID = false; - XMP_StringPtr nameStr = tree.name.c_str(); - - if ( XMP_LitNMatch ( nameStr, "uuid:", 5 ) ) { - - nameIsUUID = true; - - } else if ( tree.name.size() == 36 ) { - - nameIsUUID = true; // ! Assume true, we'll set it to false below if not. - for ( int i = 0; i < 36; ++i ) { - char ch = nameStr[i]; - if ( ch == '-' ) { - if ( (i == 8) || (i == 13) || (i == 18) || (i == 23) ) continue; - nameIsUUID = false; - break; - } else { - if ( (('0' <= ch) && (ch <= '9')) || (('a' <= ch) && (ch <= 'z')) ) continue; - nameIsUUID = false; - break; - } - } - - } - - if ( nameIsUUID ) { - - XMP_ExpandedXPath expPath; - ExpandXPath ( kXMP_NS_XMP_MM, "InstanceID", &expPath ); - XMP_Node * idNode = FindNode ( &tree, expPath, kXMP_CreateNodes, 0 ); - if ( idNode == 0 ) XMP_Throw ( "Failure creating xmpMM:InstanceID", kXMPErr_InternalFailure ); - - idNode->options = 0; // Clobber any existing xmpMM:InstanceID. - idNode->value = tree.name; - idNode->RemoveChildren(); - idNode->RemoveQualifiers(); - - tree.name.erase(); - - } - - } - -} // TouchUpDataModel - - -// ------------------------------------------------------------------------------------------------- -// DetermineInputEncoding -// ---------------------- -// -// Try to determine the character encoding, making a guess if the input is too short. We make some -// simplifying assumtions: the first character must be U+FEFF or ASCII, U+0000 is not allowed. The -// XML 1.1 spec is even more strict, UTF-16 XML documents must begin with U+FEFF, and the first -// "real" character must be '<'. Ignoring the XML declaration, the first XML character could be '<', -// space, tab, CR, or LF. -// -// The possible input sequences are: -// -// Cases with U+FEFF -// EF BB BF -- - UTF-8 -// FE FF -- -- - Big endian UTF-16 -// 00 00 FE FF - Big endian UTF 32 -// FF FE 00 00 - Little endian UTF-32 -// FF FE -- -- - Little endian UTF-16 -// -// Cases with ASCII -// nn mm -- -- - UTF-8 - -// 00 00 00 nn - Big endian UTF-32 -// 00 nn -- -- - Big endian UTF-16 -// nn 00 00 00 - Little endian UTF-32 -// nn 00 -- -- - Little endian UTF-16 -// -// ! We don't check for full patterns, or for errors. We just check enough to determine what the -// ! only possible (or reasonable) case would be. - -static XMP_OptionBits -DetermineInputEncoding ( const XMP_Uns8 * buffer, size_t length ) -{ - if ( length < 2 ) return kXMP_EncodeUTF8; - - XMP_Uns8 * uniChar = (XMP_Uns8*)buffer; // ! Make sure comparisons are unsigned. - - if ( uniChar[0] == 0 ) { - - // These cases are: - // 00 nn -- -- - Big endian UTF-16 - // 00 00 00 nn - Big endian UTF-32 - // 00 00 FE FF - Big endian UTF 32 - - if ( (length < 4) || (uniChar[1] != 0) ) return kXMP_EncodeUTF16Big; - return kXMP_EncodeUTF32Big; - - } else if ( uniChar[0] < 0x80 ) { - - // These cases are: - // nn mm -- -- - UTF-8, includes EF BB BF case - // nn 00 00 00 - Little endian UTF-32 - // nn 00 -- -- - Little endian UTF-16 - - if ( uniChar[1] != 0 ) return kXMP_EncodeUTF8; - if ( (length < 4) || (uniChar[2] != 0) ) return kXMP_EncodeUTF16Little; - return kXMP_EncodeUTF32Little; - - } else { - - // These cases are: - // EF BB BF -- - UTF-8 - // FE FF -- -- - Big endian UTF-16 - // FF FE 00 00 - Little endian UTF-32 - // FF FE -- -- - Little endian UTF-16 - - if ( uniChar[0] == 0xEF ) return kXMP_EncodeUTF8; - if ( uniChar[0] == 0xFE ) return kXMP_EncodeUTF16Big; - if ( (length < 4) || (uniChar[2] != 0) ) return kXMP_EncodeUTF16Little; - return kXMP_EncodeUTF32Little; - - } - -} // DetermineInputEncoding - - -// ------------------------------------------------------------------------------------------------- -// CountUTF8 -// --------- -// -// Look for a valid multi-byte UTF-8 sequence and return its length. Returns 0 for an invalid UTF-8 -// sequence. Returns a negative value for a partial valid sequence at the end of the buffer. -// -// The checking is not strict. We simply count the number of high order 1 bits in the first byte, -// then look for n-1 following bytes whose high order 2 bits are 1 and 0. We do not check for a -// minimal length representation of the codepoint, or that the codepoint is defined by Unicode. - -static int -CountUTF8 ( const XMP_Uns8 * charStart, const XMP_Uns8 * bufEnd ) -{ - XMP_Assert ( charStart < bufEnd ); // Catch this in debug builds. - if ( charStart >= bufEnd ) return 0; // Don't run-on in release builds. - if ( (*charStart & 0xC0) != 0xC0 ) return 0; // Must have at least 2 high bits set. - - int byteCount = 2; - XMP_Uns8 firstByte = *charStart; - for ( firstByte = firstByte << 2; (firstByte & 0x80) != 0; firstByte = firstByte << 1 ) ++byteCount; - - if ( (charStart + byteCount) > bufEnd ) return -byteCount; - - for ( int i = 1; i < byteCount; ++i ) { - if ( (charStart[i] & 0xC0) != 0x80 ) return 0; - } - - return byteCount; - -} // CountUTF8 - - -// ------------------------------------------------------------------------------------------------- -// CountControlEscape -// ------------------ -// -// Look for a numeric escape sequence for a "prohibited" ASCII control character. These are 0x7F, -// and the range 0x00..0x1F except for tab/LF/CR. Return 0 if this is definitely not a numeric -// escape, the length of the escape if found, or a negative value for a partial escape. - -static int -CountControlEscape ( const XMP_Uns8 * escStart, const XMP_Uns8 * bufEnd ) -{ - XMP_Assert ( escStart < bufEnd ); // Catch this in debug builds. - if ( escStart >= bufEnd ) return 0; // Don't run-on in release builds. - XMP_Assert ( *escStart == '&' ); - - size_t tailLen = bufEnd - escStart; - if ( tailLen < 5 ) return -1; // Don't need a more thorough check, we'll catch it on the next pass. - - if ( strncmp ( (char*)escStart, "&#x", 3 ) != 0 ) return 0; - - XMP_Uns8 escValue = 0; - const XMP_Uns8 * escPos = escStart + 3; - - if ( ('0' <= *escPos) && (*escPos <= '9') ) { - escValue = *escPos - '0'; - ++escPos; - } else if ( ('A' <= *escPos) && (*escPos <= 'F') ) { - escValue = *escPos - 'A' + 10; - ++escPos; - } else if ( ('a' <= *escPos) && (*escPos <= 'f') ) { - escValue = *escPos - 'a' + 10; - ++escPos; - } - - if ( ('0' <= *escPos) && (*escPos <= '9') ) { - escValue = (escValue << 4) + (*escPos - '0'); - ++escPos; - } else if ( ('A' <= *escPos) && (*escPos <= 'F') ) { - escValue = (escValue << 4) + (*escPos - 'A' + 10); - ++escPos; - } else if ( ('a' <= *escPos) && (*escPos <= 'f') ) { - escValue = (escValue << 4) + (*escPos - 'a' + 10); - ++escPos; - } - - if ( escPos == bufEnd ) return -1; // Partial escape. - if ( *escPos != ';' ) return 0; - - size_t escLen = escPos - escStart + 1; - if ( escLen < 5 ) return 0; // ! Catch "&#x;". - - if ( (escValue == kTab) || (escValue == kLF) || (escValue == kCR) ) return 0; // An allowed escape. - - return escLen; // Found a full "prohibited" numeric escape. - -} // CountControlEscape - - -// ------------------------------------------------------------------------------------------------- -// ProcessUTF8Portion -// ------------------ -// -// Early versions of the XMP spec mentioned allowing ISO Latin-1 input. There are also problems with -// some clients placing ASCII control characters within XMP values. This is an XML problem, the XML -// spec only allows tab (0x09), LF (0x0A), and CR (0x0D) from the 0x00..0x1F range. As a concession -// to this we scan 8-bit input for byte sequences that are not valid UTF-8 or in the 0x00..0x1F -// range and replace each byte as follows: -// 0x00..0x1F - Replace with a space, except for tab, CR, and LF. -// 0x7F - Replace with a space. This is ASCII Delete, not allowed by ISO Latin-1. -// 0x80..0x9F - Replace with the UTF-8 for a corresponding Unicode character. -// 0xA0..0XFF - Replace with the UTF-8 for a corresponding Unicode character. -// -// The 0x80..0x9F range is not defined by Latin-1. But the Windows 1252 code page defines these and -// is otherwise the same as Latin-1. -// -// For at least historical compatibility reasons we also find and replace singly escaped ASCII -// control characters. The Expat parser we're using does not allow numeric escapes like "". -// The XML spec is clear that raw controls are not allowed (in the RestrictedChar set), but it isn't -// as clear about numeric escapes for them. At any rate, Expat complains, so we treat the numeric -// escapes like raw characters and replace them with a space. -// -// We check for 1 or 2 hex digits (" " or " ") and upper or lower case (" " or " "). -// The full escape sequence is 5 or 6 bytes. - -static size_t -ProcessUTF8Portion ( XMLParserAdapter * xmlParser, - const XMP_Uns8 * buffer, - size_t length, - bool last ) -{ - const XMP_Uns8 * bufEnd = buffer + length; - - const XMP_Uns8 * spanStart = buffer; - const XMP_Uns8 * spanEnd; - - for ( spanEnd = spanStart; spanEnd < bufEnd; ++spanEnd ) { - - if ( (0x20 <= *spanEnd) && (*spanEnd <= 0x7E) && (*spanEnd != '&') ) continue; // A regular ASCII character. - - if ( *spanEnd >= 0x80 ) { - - // See if this is a multi-byte UTF-8 sequence, or a Latin-1 character to replace. - - int uniLen = CountUTF8 ( spanEnd, bufEnd ); - - if ( uniLen > 0 ) { - - // A valid UTF-8 character, keep it as-is. - spanEnd += uniLen - 1; // ! The loop increment will put back the +1. - - } else if ( (uniLen < 0) && (! last) ) { - - // Have a partial UTF-8 character at the end of the buffer and more input coming. - xmlParser->ParseBuffer ( spanStart, (spanEnd - spanStart), false ); - return (spanEnd - buffer); - - } else { - - // Not a valid UTF-8 sequence. Replace the first byte with the Latin-1 equivalent. - xmlParser->ParseBuffer ( spanStart, (spanEnd - spanStart), false ); - const char * replacement = kReplaceLatin1 [ *spanEnd - 0x80 ]; - xmlParser->ParseBuffer ( replacement, strlen ( replacement ), false ); - spanStart = spanEnd + 1; // ! The loop increment will do "spanEnd = spanStart". - - } - - } else if ( (*spanEnd < 0x20) || (*spanEnd == 0x7F) ) { - - // Replace ASCII controls other than tab, LF, and CR with a space. - - if ( (*spanEnd == kTab) || (*spanEnd == kLF) || (*spanEnd == kCR) ) continue; - - xmlParser->ParseBuffer ( spanStart, (spanEnd - spanStart), false ); - xmlParser->ParseBuffer ( " ", 1, false ); - spanStart = spanEnd + 1; // ! The loop increment will do "spanEnd = spanStart". - - } else { - - // See if this is a numeric escape sequence for a prohibited ASCII control. - - XMP_Assert ( *spanEnd == '&' ); - int escLen = CountControlEscape ( spanEnd, bufEnd ); - - if ( escLen < 0 ) { - - // Have a partial numeric escape in this buffer, wait for more input. - if ( last ) continue; // No more buffers, not an escape, absorb as normal input. - xmlParser->ParseBuffer ( spanStart, (spanEnd - spanStart), false ); - return (spanEnd - buffer); - - } else if ( escLen > 0 ) { - - // Have a complete numeric escape to replace. - xmlParser->ParseBuffer ( spanStart, (spanEnd - spanStart), false ); - xmlParser->ParseBuffer ( " ", 1, false ); - spanStart = spanEnd + escLen; - spanEnd = spanStart - 1; // ! The loop continuation will increment spanEnd! - - } - - } - - } - - XMP_Assert ( spanEnd == bufEnd ); - - if ( spanStart < bufEnd ) xmlParser->ParseBuffer ( spanStart, (spanEnd - spanStart), false ); - if ( last ) xmlParser->ParseBuffer ( " ", 1, true ); - - return length; - -} // ProcessUTF8Portion - - -// ------------------------------------------------------------------------------------------------- -// ParseFromBuffer -// --------------- -// -// Although most clients will probably parse everything in one call, we have a buffered API model -// and need to support even the extreme case of 1 byte at a time parsing. This is considerably -// complicated by some special cases for 8-bit input. Because of this, the first thing we do is -// determine whether the input is 8-bit, UTF-16, or UTF-32. -// -// Both the 8-bit special cases and the encoding determination are easier to do with 8 bytes or more -// of input. The XMLParserAdapter class has a pending-input buffer for this. At the start of parsing -// we (moght) try to fill this buffer before determining the input character encoding. After that, -// we (might) use this buffer with the current input to simplify the logic in Process8BitInput. The -// "(might)" part means that we don't actually use the pending-input buffer unless we have to. In -// particular, the common case of single-buffer parsing won't use it. - -void -XMPMeta::ParseFromBuffer ( XMP_StringPtr buffer, - XMP_StringLen xmpSize, - XMP_OptionBits options ) -{ - if ( (buffer == 0) && (xmpSize != 0) ) XMP_Throw ( "Null parse buffer", kXMPErr_BadParam ); - if ( xmpSize == kXMP_UseNullTermination ) xmpSize = strlen ( buffer ); - - const bool lastClientCall = ((options & kXMP_ParseMoreBuffers) == 0); // *** Could use FlagIsSet & FlagIsClear macros. - - this->tree.ClearNode(); // Make sure the target XMP object is totally empty. - - if ( this->xmlParser == 0 ) { - if ( (xmpSize == 0) && lastClientCall ) return; // Tolerate empty parse. Expat complains if there are no XML elements. - this->xmlParser = XMP_NewExpatAdapter(); - } - - XMLParserAdapter& parser = *this->xmlParser; - - #if 0 // XMP_DebugBuild - if ( parser.parseLog != 0 ) { - char message [200]; // AUDIT: Using sizeof(message) below for snprintf length is safe. - snprintf ( message, sizeof(message), "", // AUDIT: See above. - xmpSize, options, (lastClientCall ? " (last)" : "") ); - fwrite ( message, 1, strlen(message), parser.parseLog ); - fflush ( parser.parseLog ); - } - #endif - - try { // Cleanup the tree and xmlParser if anything fails. - - // Determine the character encoding before doing any real parsing. This is needed to do the - // 8-bit special processing. - - if ( parser.charEncoding == XMP_OptionBits(-1) ) { - - if ( (parser.pendingCount == 0) && (xmpSize >= kXMLPendingInputMax) ) { - - // This ought to be the common case, the first buffer is big enough. - parser.charEncoding = DetermineInputEncoding ( (XMP_Uns8*)buffer, xmpSize ); - - } else { - - // Try to fill the pendingInput buffer before calling DetermineInputEncoding. - - size_t pendingOverlap = kXMLPendingInputMax - parser.pendingCount; - if ( pendingOverlap > xmpSize ) pendingOverlap = xmpSize; - - memcpy ( &parser.pendingInput[parser.pendingCount], buffer, pendingOverlap ); // AUDIT: Count is safe. - buffer += pendingOverlap; - xmpSize -= pendingOverlap; - parser.pendingCount += pendingOverlap; - - if ( (! lastClientCall) && (parser.pendingCount < kXMLPendingInputMax) ) return; - parser.charEncoding = DetermineInputEncoding ( parser.pendingInput, parser.pendingCount ); - - #if Trace_ParsingHackery - fprintf ( stderr, "XMP Character encoding is %d\n", parser.charEncoding ); - #endif - - } - - } - - // We have the character encoding. Process UTF-16 and UTF-32 as is. UTF-8 needs special - // handling to take care of things like ISO Latin-1 or unescaped ASCII controls. - - XMP_Assert ( parser.charEncoding != XMP_OptionBits(-1) ); - - if ( parser.charEncoding != kXMP_EncodeUTF8 ) { - - if ( parser.pendingCount > 0 ) { - // Might have pendingInput from the above portion to determine the character encoding. - parser.ParseBuffer ( parser.pendingInput, parser.pendingCount, false ); - } - parser.ParseBuffer ( buffer, xmpSize, lastClientCall ); - - } else { - - #if Trace_ParsingHackery - fprintf ( stderr, "Parsing %d bytes @ %.8X, %s, %d pending, context: %.8s\n", - xmpSize, buffer, (lastClientCall ? "last" : "not last"), parser.pendingCount, buffer ); - #endif - - // The UTF-8 processing is a bit complex due to the need to tolerate ISO Latin-1 input. - // This is done by scanning the input for byte sequences that are not valid UTF-8, - // assuming they are Latin-1 characters in the range 0x80..0xFF. This requires saving a - // pending input buffer to handle partial UTF-8 sequences at the end of a buffer. - - while ( parser.pendingCount > 0 ) { - - // We've got some leftover input, process it first then continue with the current - // buffer. Try to fill the pendingInput buffer before parsing further. We use a loop - // for wierd edge cases like a 2 byte input buffer, using 1 byte for pendingInput, - // then having a partial UTF-8 end and need to absorb more. - - size_t pendingOverlap = kXMLPendingInputMax - parser.pendingCount; - if ( pendingOverlap > xmpSize ) pendingOverlap = xmpSize; - - memcpy ( &parser.pendingInput[parser.pendingCount], buffer, pendingOverlap ); // AUDIT: Count is safe. - parser.pendingCount += pendingOverlap; - buffer += pendingOverlap; - xmpSize -= pendingOverlap; - - if ( (! lastClientCall) && (parser.pendingCount < kXMLPendingInputMax) ) return; - size_t bytesDone = ProcessUTF8Portion ( &parser, parser.pendingInput, parser.pendingCount, lastClientCall ); - size_t bytesLeft = parser.pendingCount - bytesDone; - - #if Trace_ParsingHackery - fprintf ( stderr, " ProcessUTF8Portion handled %d pending bytes\n", bytesDone ); - #endif - - if ( bytesDone == parser.pendingCount ) { - - // Done with all of the pending input, move on to the current buffer. - parser.pendingCount = 0; - - } else if ( bytesLeft <= pendingOverlap ) { - - // The leftover pending input all came from the current buffer. Exit this loop. - buffer -= bytesLeft; - xmpSize += bytesLeft; - parser.pendingCount = 0; - - } else if ( xmpSize > 0 ) { - - // Pull more of the current buffer into the pending input and try again. - // Backup by this pass's overlap so the loop entry code runs OK. - parser.pendingCount -= pendingOverlap; - buffer -= pendingOverlap; - xmpSize += pendingOverlap; - - } else { - - // There is no more of the current buffer. Wait for more. Partial sequences at - // the end of the last buffer should be treated as Latin-1 by ProcessUTF8Portion. - XMP_Assert ( ! lastClientCall ); - parser.pendingCount = bytesLeft; - memcpy ( &parser.pendingInput[0], &parser.pendingInput[bytesDone], bytesLeft ); // AUDIT: Count is safe. - return; - - } - - } - - // Done with the pending input, process the current buffer. - - size_t bytesDone = ProcessUTF8Portion ( &parser, (XMP_Uns8*)buffer, xmpSize, lastClientCall ); - - #if Trace_ParsingHackery - fprintf ( stderr, " ProcessUTF8Portion handled %d additional bytes\n", bytesDone ); - #endif - - if ( bytesDone < xmpSize ) { - - XMP_Assert ( ! lastClientCall ); - size_t bytesLeft = xmpSize - bytesDone; - if ( bytesLeft > kXMLPendingInputMax ) XMP_Throw ( "Parser bytesLeft too large", kXMPErr_InternalFailure ); - - memcpy ( parser.pendingInput, &buffer[bytesDone], bytesLeft ); // AUDIT: Count is safe. - parser.pendingCount = bytesLeft; - return; // Wait for the next buffer. - - } - - } - - if ( lastClientCall ) { - - #if XMP_DebugBuild && DumpXMLParseTree - if ( parser.parseLog == 0 ) parser.parseLog = stdout; - DumpXMLTree ( parser.parseLog, parser.tree, 0 ); - #endif - - const XML_Node * xmlRoot = FindRootNode ( this, *this->xmlParser, options ); - - if ( xmlRoot != 0 ) { - - ProcessRDF ( &this->tree, *xmlRoot, options ); - NormalizeDCArrays ( &this->tree ); - if ( this->tree.options & kXMP_PropHasAliases ) MoveExplicitAliases ( &this->tree, options ); - TouchUpDataModel ( this ); - - // Delete empty schema nodes. Do this last, other cleanup can make empty schema. - size_t schemaNum = 0; - while ( schemaNum < this->tree.children.size() ) { - XMP_Node * currSchema = this->tree.children[schemaNum]; - if ( currSchema->children.size() > 0 ) { - ++schemaNum; - } else { - delete this->tree.children[schemaNum]; // ! Delete the schema node itself. - this->tree.children.erase ( this->tree.children.begin() + schemaNum ); - } - } - - } - - delete this->xmlParser; - this->xmlParser = 0; - - } - - } catch ( ... ) { - - delete this->xmlParser; - this->xmlParser = 0; - prevTkVer = 0; - this->tree.ClearNode(); - throw; - - } - -} // ParseFromBuffer - -// ================================================================================================= diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPMeta-Serialize.cpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPMeta-Serialize.cpp deleted file mode 100644 index 56dfc297b31..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPMeta-Serialize.cpp +++ /dev/null @@ -1,1343 +0,0 @@ -// ================================================================================================= -// Copyright 2002-2008 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// -// Adobe patent application tracking #P435, entitled 'Unique markers to simplify embedding data of -// one format in a file with a different format', inventors: Sean Parent, Greg Gilley. -// ================================================================================================= - -#include "XMP_Environment.h" // ! This must be the first include! -#include "XMPCore_Impl.hpp" - -#include "XMPMeta.hpp" - -#include "XMP_Version.h" -#include "UnicodeInlines.incl_cpp" -#include "UnicodeConversions.hpp" - -#if XMP_DebugBuild - #include -#endif - -using namespace std; - -#if XMP_WinBuild -#ifdef _MSC_VER - #pragma warning ( disable : 4533 ) // initialization of '...' is skipped by 'goto ...' - #pragma warning ( disable : 4702 ) // unreachable code - #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) -#endif -#endif - -// *** Use the XMP_PropIsXyz (Schema, Simple, Struct, Array, ...) macros -// *** Add debug codegen checks, e.g. that typical masking operations really work -// *** Change all uses of strcmp and strncmp to XMP_LitMatch and XMP_LitNMatch - - -// ================================================================================================= -// Local Types and Constants -// ========================= - -static const char * kPacketHeader = ""; -static const char * kPacketTrailer = ""; // ! The w/r is at [size-4]. - -static const char * kRDF_XMPMetaStart = ""; -static const char * kRDF_RDFEnd = ""; - -static const char * kRDF_SchemaStart = ""; - -static const char * kRDF_StructStart = ""; -static const char * kRDF_StructEnd = ""; - -static const char * kRDF_BagStart = ""; - -static const char * kRDF_ItemStart = ""; - -static const char * kRDF_ValueStart = ""; - - -// ================================================================================================= -// Static Variables -// ================ - - -// ================================================================================================= -// Local Utilities -// =============== - - -// ------------------------------------------------------------------------------------------------- -// EstimateRDFSize -// --------------- - -// *** Pull the strlen(kXyz) calls into constants. - -static size_t -EstimateRDFSize ( const XMP_Node * currNode, XMP_Index indent, size_t indentLen ) -{ - size_t outputLen = 2 * (indent*indentLen + currNode->name.size() + 4); // The property element tags. - - if ( ! currNode->qualifiers.empty() ) { - // This node has qualifiers, assume it is written using rdf:value and estimate the qualifiers. - - indent += 2; // Everything else is indented inside the rdf:Description element. - outputLen += 2 * ((indent-1)*indentLen + strlen(kRDF_StructStart) + 2); // The rdf:Description tags. - outputLen += 2 * (indent*indentLen + strlen(kRDF_ValueStart) + 2); // The rdf:value tags. - - for ( size_t qualNum = 0, qualLim = currNode->qualifiers.size(); qualNum < qualLim; ++qualNum ) { - const XMP_Node * currQual = currNode->qualifiers[qualNum]; - outputLen += EstimateRDFSize ( currQual, indent, indentLen ); - } - - } - - if ( currNode->options & kXMP_PropValueIsStruct ) { - indent += 1; - outputLen += 2 * (indent*indentLen + strlen(kRDF_StructStart) + 2); // The rdf:Description tags. - } else if ( currNode->options & kXMP_PropValueIsArray ) { - indent += 2; - outputLen += 2 * ((indent-1)*indentLen + strlen(kRDF_BagStart) + 2); // The rdf:Bag/Seq/Alt tags. - outputLen += 2 * currNode->children.size() * (strlen(kRDF_ItemStart) + 2); // The rdf:li tags, indent counted in children. - } else if ( ! (currNode->options & kXMP_SchemaNode) ) { - outputLen += currNode->value.size(); // This is a leaf value node. - } - - for ( size_t childNum = 0, childLim = currNode->children.size(); childNum < childLim; ++childNum ) { - const XMP_Node * currChild = currNode->children[childNum]; - outputLen += EstimateRDFSize ( currChild, indent+1, indentLen ); - } - - return outputLen; - -} // EstimateRDFSize - - -// ------------------------------------------------------------------------------------------------- -// DeclareOneNamespace -// ------------------- - -static void -DeclareOneNamespace ( const XMP_VarString & nsPrefix, - const XMP_VarString & nsURI, - XMP_VarString & usedNS, // ! A catenation of the prefixes with colons. - XMP_VarString & outputStr, - XMP_StringPtr newline, - XMP_StringPtr indentStr, - XMP_Index indent ) -{ - size_t nsPos = usedNS.find ( nsPrefix ); - - if ( nsPos == XMP_VarString::npos ) { - - outputStr += newline; - for ( ; indent > 0; --indent ) outputStr += indentStr; - outputStr += "xmlns:"; - outputStr += nsPrefix; - outputStr[outputStr.size()-1] = '='; // Change the colon to =. - outputStr += '"'; - outputStr += nsURI; - outputStr += '"'; - - usedNS += nsPrefix; - - } - -} // DeclareOneNamespace - - -// ------------------------------------------------------------------------------------------------- -// DeclareElemNamespace -// -------------------- - -static void -DeclareElemNamespace ( const XMP_VarString & elemName, - XMP_VarString & usedNS, - XMP_VarString & outputStr, - XMP_StringPtr newline, - XMP_StringPtr indentStr, - XMP_Index indent ) -{ - size_t colonPos = elemName.find ( ':' ); - - if ( colonPos != XMP_VarString::npos ) { - XMP_VarString nsPrefix ( elemName.substr ( 0, colonPos+1 ) ); - XMP_StringMapPos prefixPos = sNamespacePrefixToURIMap->find ( nsPrefix ); - XMP_Enforce ( prefixPos != sNamespacePrefixToURIMap->end() ); - DeclareOneNamespace ( nsPrefix, prefixPos->second, usedNS, outputStr, newline, indentStr, indent ); - } - -} // DeclareElemNamespace - - -// ------------------------------------------------------------------------------------------------- -// DeclareUsedNamespaces -// --------------------- - -// ??? Should iterators be passed by reference to avoid temp copies? - -static void -DeclareUsedNamespaces ( const XMP_Node * currNode, - XMP_VarString & usedNS, - XMP_VarString & outputStr, - XMP_StringPtr newline, - XMP_StringPtr indentStr, - XMP_Index indent ) -{ - - if ( currNode->options & kXMP_SchemaNode ) { - // The schema node name is the URI, the value is the prefix. - DeclareOneNamespace ( currNode->value, currNode->name, usedNS, outputStr, newline, indentStr, indent ); - } else if ( currNode->options & kXMP_PropValueIsStruct ) { - for ( size_t fieldNum = 0, fieldLim = currNode->children.size(); fieldNum < fieldLim; ++fieldNum ) { - const XMP_Node * currField = currNode->children[fieldNum]; - DeclareElemNamespace ( currField->name, usedNS, outputStr, newline, indentStr, indent ); - } - } - - for ( size_t childNum = 0, childLim = currNode->children.size(); childNum < childLim; ++childNum ) { - const XMP_Node * currChild = currNode->children[childNum]; - DeclareUsedNamespaces ( currChild, usedNS, outputStr, newline, indentStr, indent ); - } - - for ( size_t qualNum = 0, qualLim = currNode->qualifiers.size(); qualNum < qualLim; ++qualNum ) { - const XMP_Node * currQual = currNode->qualifiers[qualNum]; - DeclareElemNamespace ( currQual->name, usedNS, outputStr, newline, indentStr, indent ); - DeclareUsedNamespaces ( currQual, usedNS, outputStr, newline, indentStr, indent ); - } - -} // DeclareUsedNamespaces - -// ------------------------------------------------------------------------------------------------- -// EmitRDFArrayTag -// --------------- - -// ??? Should iterators be passed by reference to avoid temp copies? - -enum { - kIsStartTag = true, - kIsEndTag = false -}; - -static void -EmitRDFArrayTag ( XMP_OptionBits arrayForm, - XMP_VarString & outputStr, - XMP_StringPtr newline, - XMP_StringPtr indentStr, - XMP_Index indent, - XMP_Index arraySize, - bool isStartTag ) -{ - if ( (! isStartTag) && (arraySize == 0) ) return; - - for ( XMP_Index level = indent; level > 0; --level ) outputStr += indentStr; - if ( isStartTag ) { - outputStr += "', and ASCII controls (tab, LF, CR). In -// addition, '"' is escaped for attributes. For efficiency, this is done in a double loop. The outer -// loop makes sure the whole value is processed. The inner loop does a contiguous unescaped run -// followed by one escaped character (if we're not at the end). -// -// We depend on parsing and SetProperty logic to make sure there are no invalid ASCII controls in -// the XMP values. The XML spec only allows tab, LF, and CR. Others are not even allowed as -// numeric escape sequences. - -enum { - kForAttribute = true, - kForElement = false -}; - -static void -AppendNodeValue ( XMP_VarString & outputStr, const XMP_VarString & value, bool forAttribute ) -{ - - unsigned char * runStart = (unsigned char *) value.c_str(); - unsigned char * runLimit = runStart + value.size(); - unsigned char * runEnd; - unsigned char ch; - - while ( runStart < runLimit ) { - - for ( runEnd = runStart; runEnd < runLimit; ++runEnd ) { - ch = *runEnd; - if ( forAttribute && (ch == '"') ) break; - if ( (ch < 0x20) || (ch == '&') || (ch == '<') || (ch == '>') ) break; - } - - outputStr.append ( (char *) runStart, (runEnd - runStart) ); - - if ( runEnd < runLimit ) { - - if ( ch < 0x20 ) { - - XMP_Assert ( (ch == kTab) || (ch == kLF) || (ch == kCR) ); - - char hexBuf[16]; - memcpy ( hexBuf, "&#xn;", 10 ); // AUDIT: Length of "&#xn;" is 5, hexBuf size is 16. - hexBuf[3] = kHexDigits[ch&0xF]; - outputStr.append ( hexBuf, 5 ); - - } else { - - if ( ch == '"' ) { - outputStr += """; - } else if ( ch == '<' ) { - outputStr += "<"; - } else if ( ch == '>' ) { - outputStr += ">"; - } else { - XMP_Assert ( ch == '&' ); - outputStr += "&"; - } - - } - - ++runEnd; - - } - - runStart = runEnd; - - } - -} // AppendNodeValue - - -// ------------------------------------------------------------------------------------------------- -// CanBeRDFAttrProp -// ---------------- - -static bool -CanBeRDFAttrProp ( const XMP_Node * propNode ) -{ - - if ( propNode->name[0] == '[' ) return false; - if ( ! propNode->qualifiers.empty() ) return false; - if ( propNode->options & kXMP_PropValueIsURI ) return false; - if ( propNode->options & kXMP_PropCompositeMask ) return false; - - return true; - -} // CanBeRDFAttrProp - - -// ------------------------------------------------------------------------------------------------- -// IsRDFAttrQualifier -// ------------------ - -static XMP_StringPtr sAttrQualifiers[] = { "xml:lang", "rdf:resource", "rdf:ID", "rdf:bagID", "rdf:nodeID", "" }; - -static bool -IsRDFAttrQualifier ( XMP_VarString qualName ) -{ - - for ( size_t i = 0; *sAttrQualifiers[i] != 0; ++i ) { - if ( qualName == sAttrQualifiers[i] ) return true; - } - - return false; - -} // IsRDFAttrQualifier - - -// ------------------------------------------------------------------------------------------------- -// SerializePrettyRDFProperty -// -------------------------- -// -// Recursively handles the "value" for a node. It does not matter if it is a top level property, a -// field of a struct, or an item of an array. The indent is that for the property element. An -// xml:lang qualifier is written as an attribute of the property start tag, not by itself forcing -// the qualified property form. The patterns below mostly ignore attribute qualifiers like xml:lang. -// Except for the one struct case, attribute qualifiers don't affect the output form. -// -// value -// -// (If no rdf:resource qualifier) -// ... Fields, same forms as top level properties -// -// -// -// -// -// or Seq or Alt -// ... Array items as rdf:li elements, same forms as top level properties -// -// -// -// -// ... Property "value" following the unqualified forms ... -// ... Qualifiers looking like named struct fields -// - -static void -SerializePrettyRDFProperty ( const XMP_Node * propNode, - XMP_VarString & outputStr, - XMP_StringPtr newline, - XMP_StringPtr indentStr, - XMP_Index indent, - bool emitAsRDFValue = false ) -{ - XMP_Index level; - bool emitEndTag = true; - bool indentEndTag = true; - - XMP_OptionBits propForm = propNode->options & kXMP_PropCompositeMask; - - // ------------------------------------------------------------------------------------------ - // Determine the XML element name. Open the start tag with the name and attribute qualifiers. - - XMP_StringPtr elemName = propNode->name.c_str(); - if ( emitAsRDFValue ) { - elemName= "rdf:value"; - } else if ( *elemName == '[' ) { - elemName = "rdf:li"; - } - - for ( level = indent; level > 0; --level ) outputStr += indentStr; - outputStr += '<'; - outputStr += elemName; - - #define isCompact false - bool hasGeneralQualifiers = isCompact; // Might also become true later. - bool hasRDFResourceQual = false; - - for ( size_t qualNum = 0, qualLim = propNode->qualifiers.size(); qualNum < qualLim; ++qualNum ) { - const XMP_Node * currQual = propNode->qualifiers[qualNum]; - if ( ! IsRDFAttrQualifier ( currQual->name ) ) { - hasGeneralQualifiers = true; - } else { - if ( currQual->name == "rdf:resource" ) hasRDFResourceQual = true; - if ( ! emitAsRDFValue ) { - outputStr += ' '; - outputStr += currQual->name; - outputStr += "=\""; - AppendNodeValue ( outputStr, currQual->value, kForAttribute ); - outputStr += '"'; - } - } - } - - // -------------------------------------------------------- - // Process the property according to the standard patterns. - - if ( hasGeneralQualifiers && (! emitAsRDFValue) ) { - - // ----------------------------------------------------------------------------------------- - // This node has general, non-attribute, qualifiers. Emit using the qualified property form. - // ! The value is output by a recursive call ON THE SAME NODE with emitAsRDFValue set. - - if ( hasRDFResourceQual ) { - XMP_Throw ( "Can't mix rdf:resource and general qualifiers", kXMPErr_BadRDF ); - } - - outputStr += " rdf:parseType=\"Resource\">"; - outputStr += newline; - - SerializePrettyRDFProperty ( propNode, outputStr, newline, indentStr, indent+1, true ); - - for ( size_t qualNum = 0, qualLim = propNode->qualifiers.size(); qualNum < qualLim; ++qualNum ) { - const XMP_Node * currQual = propNode->qualifiers[qualNum]; - if ( IsRDFAttrQualifier ( currQual->name ) ) continue; - SerializePrettyRDFProperty ( currQual, outputStr, newline, indentStr, indent+1 ); - } - - } else { - - // -------------------------------------------------------------------- - // This node has no general qualifiers. Emit using an unqualified form. - - if ( propForm == 0 ) { - - // -------------------------- - // This is a simple property. - - if ( propNode->options & kXMP_PropValueIsURI ) { - outputStr += " rdf:resource=\""; - AppendNodeValue ( outputStr, propNode->value, kForAttribute ); - outputStr += "\"/>"; - outputStr += newline; - emitEndTag = false; - } else if ( propNode->value.empty() ) { - outputStr += "/>"; - outputStr += newline; - emitEndTag = false; - } else { - outputStr += '>'; - AppendNodeValue ( outputStr, propNode->value, kForElement ); - indentEndTag = false; - } - - } else if ( propForm & kXMP_PropValueIsArray ) { - - // This is an array. - outputStr += '>'; - outputStr += newline; - EmitRDFArrayTag ( propForm, outputStr, newline, indentStr, indent+1, propNode->children.size(), kIsStartTag ); - if ( XMP_ArrayIsAltText(propNode->options) ) NormalizeLangArray ( (XMP_Node*)propNode ); - for ( size_t childNum = 0, childLim = propNode->children.size(); childNum < childLim; ++childNum ) { - const XMP_Node * currChild = propNode->children[childNum]; - SerializePrettyRDFProperty ( currChild, outputStr, newline, indentStr, indent+2 ); - } - EmitRDFArrayTag ( propForm, outputStr, newline, indentStr, indent+1, propNode->children.size(), kIsEndTag ); - - - } else if ( ! hasRDFResourceQual ) { - - // This is a "normal" struct, use the rdf:parseType="Resource" form. - XMP_Assert ( propForm & kXMP_PropValueIsStruct ); - if ( propNode->children.size() == 0 ) { - outputStr += " rdf:parseType=\"Resource\"/>"; - outputStr += newline; - emitEndTag = false; - } else { - outputStr += " rdf:parseType=\"Resource\">"; - outputStr += newline; - for ( size_t childNum = 0, childLim = propNode->children.size(); childNum < childLim; ++childNum ) { - const XMP_Node * currChild = propNode->children[childNum]; - SerializePrettyRDFProperty ( currChild, outputStr, newline, indentStr, indent+1 ); - } - } - - } else { - - // This is a struct with an rdf:resource attribute, use the "empty property element" form. - XMP_Assert ( propForm & kXMP_PropValueIsStruct ); - for ( size_t childNum = 0, childLim = propNode->children.size(); childNum < childLim; ++childNum ) { - const XMP_Node * currChild = propNode->children[childNum]; - if ( ! CanBeRDFAttrProp ( currChild ) ) { - XMP_Throw ( "Can't mix rdf:resource and complex fields", kXMPErr_BadRDF ); - } - outputStr += newline; - for ( level = indent+1; level > 0; --level ) outputStr += indentStr; - outputStr += ' '; - outputStr += currChild->name; - outputStr += "=\""; - outputStr += currChild->value; - outputStr += '"'; - } - outputStr += "/>"; - outputStr += newline; - emitEndTag = false; - - } - - } - - // ---------------------------------- - // Emit the property element end tag. - - if ( emitEndTag ) { - if ( indentEndTag ) for ( level = indent; level > 0; --level ) outputStr += indentStr; - outputStr += "'; - outputStr += newline; - } - -} // SerializePrettyRDFProperty - - -// ------------------------------------------------------------------------------------------------- -// SerializePrettyRDFSchema -// ------------------------ -// -// Each schema's properties are written in a separate rdf:Description element. All of the necessary -// namespaces are declared in the rdf:Description element. The baseIndent is the base level for the -// entire serialization, that of the x:xmpmeta element. An xml:lang qualifier is written as an -// attribute of the property start tag, not by itself forcing the qualified property form. -// -// -// -// ... The actual properties of the schema, see SerializePrettyRDFProperty -// -// ... If alias comments are wanted -// -// - -static void -SerializePrettyRDFSchema ( const XMP_VarString & treeName, - const XMP_Node * schemaNode, - XMP_VarString & outputStr, - XMP_OptionBits options, - XMP_StringPtr newline, - XMP_StringPtr indentStr, - XMP_Index baseIndent ) -{ - XMP_Assert ( schemaNode->options & kXMP_SchemaNode ); - XMP_Assert ( schemaNode->qualifiers.empty() ); - - // Write the rdf:Description start tag with the namespace declarations. - - XMP_Index level; - for ( level = baseIndent+2; level > 0; --level ) outputStr += indentStr; - outputStr += kRDF_SchemaStart; - outputStr += '"'; - outputStr += treeName; - outputStr += '"'; - - size_t totalLen = 8; // Start at 8 for "xml:rdf:". - XMP_cStringMapPos currPos = sNamespacePrefixToURIMap->begin(); - XMP_cStringMapPos endPos = sNamespacePrefixToURIMap->end(); - for ( ; currPos != endPos; ++currPos ) totalLen += currPos->first.size(); - - XMP_VarString usedNS; - usedNS.reserve ( totalLen ); - usedNS = "xml:rdf:"; - DeclareUsedNamespaces ( schemaNode, usedNS, outputStr, newline, indentStr, baseIndent+4 ); - - outputStr += ">"; - outputStr += newline; - - // Write alias comments, if wanted. - - if ( options & kXMP_WriteAliasComments ) { // *** Hoist into a routine, used for Plain XMP also. - - #if 0 // *** Buggy, disable for now. - - XMP_cAliasMapPos aliasPos = sRegisteredAliasMap->begin(); - XMP_cAliasMapPos aliasEnd = sRegisteredAliasMap->end(); - - for ( ; aliasPos != aliasEnd; ++aliasPos ) { - - size_t nsPos = aliasPos->first.find ( schemaNode->value ); - if ( nsPos == XMP_VarString::npos ) continue; - XMP_Assert ( nsPos == 0 ); - - for ( level = baseIndent+3; level > 0; --level ) outputStr += indentStr; - - outputStr += ""; - outputStr += newline; - - } - - #endif - - } - - // Write each of the schema's actual properties. - for ( size_t propNum = 0, propLim = schemaNode->children.size(); propNum < propLim; ++propNum ) { - const XMP_Node * currProp = schemaNode->children[propNum]; - SerializePrettyRDFProperty ( currProp, outputStr, newline, indentStr, baseIndent+3 ); - } - - // Write the rdf:Description end tag. - for ( level = baseIndent+2; level > 0; --level ) outputStr += indentStr; - outputStr += kRDF_SchemaEnd; - outputStr += newline; - -} // SerializePrettyRDFSchema - - -// ------------------------------------------------------------------------------------------------- -// SerializeCompactRDFAttrProps -// ---------------------------- -// -// Write each of the parent's simple unqualified properties as an attribute. Returns true if all -// of the properties are written as attributes. - -static bool -SerializeCompactRDFAttrProps ( const XMP_Node * parentNode, - XMP_VarString & outputStr, - XMP_StringPtr newline, - XMP_StringPtr indentStr, - XMP_Index indent ) -{ - size_t prop, propLim; - bool allAreAttrs = true; - - for ( prop = 0, propLim = parentNode->children.size(); prop != propLim; ++prop ) { - - const XMP_Node * currProp = parentNode->children[prop]; - if ( ! CanBeRDFAttrProp ( currProp ) ) { - allAreAttrs = false; - continue; - } - - outputStr += newline; - for ( XMP_Index level = indent; level > 0; --level ) outputStr += indentStr; - outputStr += currProp->name; - outputStr += "=\""; - AppendNodeValue ( outputStr, currProp->value, kForAttribute ); - outputStr += '"'; - - } - - return allAreAttrs; - -} // SerializeCompactRDFAttrProps - - -// ------------------------------------------------------------------------------------------------- -// SerializeCompactRDFElemProps -// ---------------------------- -// -// Recursively handles the "value" for a node that must be written as an RDF property element. It -// does not matter if it is a top level property, a field of a struct, or an item of an array. The -// indent is that for the property element. The patterns bwlow ignore attribute qualifiers such as -// xml:lang, they don't affect the output form. -// -// -// -// -// ... The fields as elements, if none are simple and unqualified -// -// -// -// -// ... The compound or qualified fields as elements -// -// -// -// -// or Seq or Alt -// ... Array items as rdf:li elements, same forms as top level properties -// -// -// -// -// ... Property "value" following the unqualified forms ... -// ... Qualifiers looking like named struct fields -// - -// *** Consider numbered array items, but has compatibility problems. -// *** Consider qualified form with rdf:Description and attributes. - -static void -SerializeCompactRDFElemProps ( const XMP_Node * parentNode, - XMP_VarString & outputStr, - XMP_StringPtr newline, - XMP_StringPtr indentStr, - XMP_Index indent ) -{ - XMP_Index level; - - for ( size_t prop = 0, propLim = parentNode->children.size(); prop != propLim; ++prop ) { - - const XMP_Node * propNode = parentNode->children[prop]; - if ( CanBeRDFAttrProp ( propNode ) ) continue; - - bool emitEndTag = true; - bool indentEndTag = true; - - XMP_OptionBits propForm = propNode->options & kXMP_PropCompositeMask; - - // ----------------------------------------------------------------------------------- - // Determine the XML element name, write the name part of the start tag. Look over the - // qualifiers to decide on "normal" versus "rdf:value" form. Emit the attribute - // qualifiers at the same time. - - XMP_StringPtr elemName = propNode->name.c_str(); - if ( *elemName == '[' ) elemName = "rdf:li"; - - for ( level = indent; level > 0; --level ) outputStr += indentStr; - outputStr += '<'; - outputStr += elemName; - - #define isCompact false - bool hasGeneralQualifiers = isCompact; // Might also become true later. - bool hasRDFResourceQual = false; - - for ( size_t qualNum = 0, qualLim = propNode->qualifiers.size(); qualNum < qualLim; ++qualNum ) { - const XMP_Node * currQual = propNode->qualifiers[qualNum]; - if ( ! IsRDFAttrQualifier ( currQual->name ) ) { - hasGeneralQualifiers = true; - } else { - if ( currQual->name == "rdf:resource" ) hasRDFResourceQual = true; - outputStr += ' '; - outputStr += currQual->name; - outputStr += "=\""; - AppendNodeValue ( outputStr, currQual->value, kForAttribute ); - outputStr += '"'; - } - } - - // -------------------------------------------------------- - // Process the property according to the standard patterns. - - if ( hasGeneralQualifiers ) { - - // ------------------------------------------------------------------------------------- - // The node has general qualifiers, ones that can't be attributes on a property element. - // Emit using the qualified property pseudo-struct form. The value is output by a call - // to SerializePrettyRDFProperty with emitAsRDFValue set. - - // *** We're losing compactness in the calls to SerializePrettyRDFProperty. - // *** Should refactor to have SerializeCompactRDFProperty that does one node. - - outputStr += " rdf:parseType=\"Resource\">"; - outputStr += newline; - - SerializePrettyRDFProperty ( propNode, outputStr, newline, indentStr, indent+1, true ); - - size_t qualNum = 0; - size_t qualLim = propNode->qualifiers.size(); - if ( propNode->options & kXMP_PropHasLang ) ++qualNum; - - for ( ; qualNum < qualLim; ++qualNum ) { - const XMP_Node * currQual = propNode->qualifiers[qualNum]; - SerializePrettyRDFProperty ( currQual, outputStr, newline, indentStr, indent+1 ); - } - - } else { - - // -------------------------------------------------------------------- - // This node has only attribute qualifiers. Emit as a property element. - - if ( propForm == 0 ) { - - // -------------------------- - // This is a simple property. - - if ( propNode->options & kXMP_PropValueIsURI ) { - outputStr += " rdf:resource=\""; - AppendNodeValue ( outputStr, propNode->value, kForAttribute ); - outputStr += "\"/>"; - outputStr += newline; - emitEndTag = false; - } else if ( propNode->value.empty() ) { - outputStr += "/>"; - outputStr += newline; - emitEndTag = false; - } else { - outputStr += '>'; - AppendNodeValue ( outputStr, propNode->value, kForElement ); - indentEndTag = false; - } - - } else if ( propForm & kXMP_PropValueIsArray ) { - - // ----------------- - // This is an array. - - outputStr += '>'; - outputStr += newline; - EmitRDFArrayTag ( propForm, outputStr, newline, indentStr, indent+1, propNode->children.size(), kIsStartTag ); - - if ( XMP_ArrayIsAltText(propNode->options) ) NormalizeLangArray ( (XMP_Node*)propNode ); - SerializeCompactRDFElemProps ( propNode, outputStr, newline, indentStr, indent+2 ); - - EmitRDFArrayTag ( propForm, outputStr, newline, indentStr, indent+1, propNode->children.size(), kIsEndTag ); - - } else { - - // ---------------------- - // This must be a struct. - - XMP_Assert ( propForm & kXMP_PropValueIsStruct ); - - bool hasAttrFields = false; - bool hasElemFields = false; - - size_t field, fieldLim; - for ( field = 0, fieldLim = propNode->children.size(); field != fieldLim; ++field ) { - XMP_Node * currField = propNode->children[field]; - if ( CanBeRDFAttrProp ( currField ) ) { - hasAttrFields = true; - if ( hasElemFields ) break; // No sense looking further. - } else { - hasElemFields = true; - if ( hasAttrFields ) break; // No sense looking further. - } - } - - if ( hasRDFResourceQual && hasElemFields ) { - XMP_Throw ( "Can't mix rdf:resource qualifier and element fields", kXMPErr_BadRDF ); - } - - if ( propNode->children.size() == 0 ) { - - // Catch an empty struct as a special case. The case below would emit an empty - // XML element, which gets reparsed as a simple property with an empty value. - outputStr += " rdf:parseType=\"Resource\"/>"; - outputStr += newline; - emitEndTag = false; - - } else if ( ! hasElemFields ) { - - // All fields can be attributes, use the emptyPropertyElt form. - SerializeCompactRDFAttrProps ( propNode, outputStr, newline, indentStr, indent+1 ); - outputStr += "/>"; - outputStr += newline; - emitEndTag = false; - - } else if ( ! hasAttrFields ) { - - // All fields must be elements, use the parseTypeResourcePropertyElt form. - outputStr += " rdf:parseType=\"Resource\">"; - outputStr += newline; - SerializeCompactRDFElemProps ( propNode, outputStr, newline, indentStr, indent+1 ); - - } else { - - // Have a mix of attributes and elements, use an inner rdf:Description. - outputStr += '>'; - outputStr += newline; - for ( level = indent+1; level > 0; --level ) outputStr += indentStr; - outputStr += " 0; --level ) outputStr += indentStr; - outputStr += kRDF_StructEnd; - outputStr += newline; - - } - - } - - } - - // ---------------------------------- - // Emit the property element end tag. - - if ( emitEndTag ) { - if ( indentEndTag ) for ( level = indent; level > 0; --level ) outputStr += indentStr; - outputStr += "'; - outputStr += newline; - } - - } - -} // SerializeCompactRDFElemProps - - -// ------------------------------------------------------------------------------------------------- -// SerializeCompactRDFSchemas -// -------------------------- -// -// All properties from all schema are written in a single rdf:Description element, as are all of the -// necessary namespace declarations. The baseIndent is the base level for the entire serialization, -// that of the x:xmpmeta element. The x:xmpmeta and rdf:RDF elements have already been written. -// -// Top level simple unqualified properties are written as attributes of the (only) rdf:Description -// element. Structs, arrays, and qualified properties are written by SerializeCompactRDFElemProp. An -// xml:lang qualifier on a simple property prevents the attribute form. -// -// -// ... The remaining properties of the schema, see SerializeCompactRDFElemProps -// - -static void -SerializeCompactRDFSchemas ( const XMP_Node & xmpTree, - XMP_VarString & outputStr, - XMP_StringPtr newline, - XMP_StringPtr indentStr, - XMP_Index baseIndent ) -{ - XMP_Index level; - size_t schema, schemaLim; - - // Begin the rdf:Description start tag. - for ( level = baseIndent+2; level > 0; --level ) outputStr += indentStr; - outputStr += kRDF_SchemaStart; - outputStr += '"'; - outputStr += xmpTree.name; - outputStr += '"'; - - // Write all necessary xmlns attributes. - - size_t totalLen = 8; // Start at 8 for "xml:rdf:". - XMP_cStringMapPos currPos = sNamespacePrefixToURIMap->begin(); - XMP_cStringMapPos endPos = sNamespacePrefixToURIMap->end(); - for ( ; currPos != endPos; ++currPos ) totalLen += currPos->first.size(); - - XMP_VarString usedNS; - usedNS.reserve ( totalLen ); - usedNS = "xml:rdf:"; - - for ( schema = 0, schemaLim = xmpTree.children.size(); schema != schemaLim; ++schema ) { - const XMP_Node * currSchema = xmpTree.children[schema]; - DeclareUsedNamespaces ( currSchema, usedNS, outputStr, newline, indentStr, baseIndent+4 ); - } - - // Write the top level "attrProps" and close the rdf:Description start tag. - bool allAreAttrs = true; - for ( schema = 0, schemaLim = xmpTree.children.size(); schema != schemaLim; ++schema ) { - const XMP_Node * currSchema = xmpTree.children[schema]; - allAreAttrs &= SerializeCompactRDFAttrProps ( currSchema, outputStr, newline, indentStr, baseIndent+3 ); - } - if ( ! allAreAttrs ) { - outputStr += ">"; - outputStr += newline; - } else { - outputStr += "/>"; - outputStr += newline; - return; // ! Done if all properties in all schema are written as attributes. - } - - // Write the remaining properties for each schema. - for ( schema = 0, schemaLim = xmpTree.children.size(); schema != schemaLim; ++schema ) { - const XMP_Node * currSchema = xmpTree.children[schema]; - SerializeCompactRDFElemProps ( currSchema, outputStr, newline, indentStr, baseIndent+3 ); - } - - // Write the rdf:Description end tag. - // *** Elide the end tag if everything (all props in all schema) is an attr. - for ( level = baseIndent+2; level > 0; --level ) outputStr += indentStr; - outputStr += kRDF_SchemaEnd; - outputStr += newline; - -} // SerializeCompactRDFSchemas - - -// ------------------------------------------------------------------------------------------------- -// SerializeAsRDF -// -------------- -// -// -// -// -// -// ... The properties, see SerializePrettyRDFSchema or SerializeCompactRDFSchemas -// -// -// -// - -// *** Need to strip empty arrays? -// *** Option to strip/keep empty structs? -// *** Need to verify handling of rdf:type qualifiers in pretty and compact. -// *** Need to verify round tripping of rdf:ID and similar qualifiers, see RDF 7.2.21. -// *** Check cases of rdf:resource plus explicit attr qualifiers (like xml:lang). - -static void -SerializeAsRDF ( const XMPMeta & xmpObj, - XMP_VarString & headStr, // Everything up to the padding. - XMP_VarString & tailStr, // Everything after the padding. - XMP_OptionBits options, - XMP_StringPtr newline, - XMP_StringPtr indentStr, - XMP_Index baseIndent ) -{ - const size_t treeNameLen = xmpObj.tree.name.size(); - const size_t indentLen = strlen ( indentStr ); - - // First estimate the worst case space and reserve room in the output string. This optimization - // avoids reallocating and copying the output as it grows. The initial count does not look at - // the values of properties, so it does not account for character entities, e.g. for newline. - // Since there can be a lot of these in things like the base 64 encoding of a large thumbnail, - // inflate the count by 1/4 (easy to do) to accommodate. - - // *** Need to include estimate for alias comments. - - size_t outputLen = 2 * (strlen(kPacketHeader) + strlen(kRDF_XMPMetaStart) + strlen(kRDF_RDFStart) + 3*baseIndent*indentLen); - - for ( size_t schemaNum = 0, schemaLim = xmpObj.tree.children.size(); schemaNum < schemaLim; ++schemaNum ) { - const XMP_Node * currSchema = xmpObj.tree.children[schemaNum]; - outputLen += 2*(baseIndent+2)*indentLen + strlen(kRDF_SchemaStart) + treeNameLen + strlen(kRDF_SchemaEnd) + 2; - outputLen += EstimateRDFSize ( currSchema, baseIndent+2, indentLen ); - } - - outputLen += (outputLen >> 2); // Inflate by 1/4, an empirical fudge factor. - - // Now generate the RDF into the head string as UTF-8. - - XMP_Index level; - - headStr.erase(); - headStr.reserve ( outputLen ); - - // Write the packet header PI. - if ( ! (options & kXMP_OmitPacketWrapper) ) { - for ( level = baseIndent; level > 0; --level ) headStr += indentStr; - headStr += kPacketHeader; - headStr += newline; - } - - // Write the xmpmeta element's start tag. - if ( ! (options & kXMP_OmitXMPMetaElement) ) { - for ( level = baseIndent; level > 0; --level ) headStr += indentStr; - headStr += kRDF_XMPMetaStart; - headStr += kXMPCore_VersionMessage "\">"; - headStr += newline; - } - - // Write the rdf:RDF start tag. - for ( level = baseIndent+1; level > 0; --level ) headStr += indentStr; - headStr += kRDF_RDFStart; - headStr += newline; - - // Write all of the properties. - if ( options & kXMP_UseCompactFormat ) { - SerializeCompactRDFSchemas ( xmpObj.tree, headStr, newline, indentStr, baseIndent ); - } else { - if ( xmpObj.tree.children.size() > 0 ) { - for ( size_t schemaNum = 0, schemaLim = xmpObj.tree.children.size(); schemaNum < schemaLim; ++schemaNum ) { - const XMP_Node * currSchema = xmpObj.tree.children[schemaNum]; - SerializePrettyRDFSchema ( xmpObj.tree.name, currSchema, headStr, options, newline, indentStr, baseIndent ); - } - } else { - for ( XMP_Index level = baseIndent+2; level > 0; --level ) headStr += indentStr; - headStr += kRDF_SchemaStart; // Special case an empty XMP object. - headStr += '"'; - headStr += xmpObj.tree.name; - headStr += "\"/>"; - headStr += newline; - } - } - - // Write the rdf:RDF end tag. - for ( level = baseIndent+1; level > 0; --level ) headStr += indentStr; - headStr += kRDF_RDFEnd; - headStr += newline; - - // Write the xmpmeta end tag. - if ( ! (options & kXMP_OmitXMPMetaElement) ) { - for ( level = baseIndent; level > 0; --level ) headStr += indentStr; - headStr += kRDF_XMPMetaEnd; - headStr += newline; - } - - // Write the packet trailer PI into the tail string as UTF-8. - tailStr.erase(); - if ( ! (options & kXMP_OmitPacketWrapper) ) { - tailStr.reserve ( strlen(kPacketTrailer) + (strlen(indentStr) * baseIndent) ); - for ( level = baseIndent; level > 0; --level ) tailStr += indentStr; - tailStr += kPacketTrailer; - if ( options & kXMP_ReadOnlyPacket ) tailStr[tailStr.size()-4] = 'r'; - } - - // ! This assert is just a performance check, to see if the reserve was enough. - // *** XMP_Assert ( headStr.size() <= outputLen ); - // *** Don't use an assert. Think of some way to track this without risk of aborting the client. - -} // SerializeAsRDF - -// ------------------------------------------------------------------------------------------------- -// SerializeToBuffer -// ----------------- - -void -XMPMeta::SerializeToBuffer ( XMP_StringPtr * rdfString, - XMP_StringLen * rdfSize, - XMP_OptionBits options, - XMP_StringLen padding, - XMP_StringPtr newline, - XMP_StringPtr indentStr, - XMP_Index baseIndent ) const -{ - XMP_Assert ( (rdfString != 0) && (rdfSize != 0) && (newline != 0) && (indentStr != 0) ); - - // Fix up some default parameters. - - enum { kDefaultPad = 2048 }; - size_t unicodeUnitSize = 1; - XMP_OptionBits charEncoding = options & kXMP_EncodingMask; - - if ( charEncoding != kXMP_EncodeUTF8 ) { - if ( options & _XMP_UTF16_Bit ) { - if ( options & _XMP_UTF32_Bit ) XMP_Throw ( "Can't use both _XMP_UTF16_Bit and _XMP_UTF32_Bit", kXMPErr_BadOptions ); - unicodeUnitSize = 2; - } else if ( options & _XMP_UTF32_Bit ) { - unicodeUnitSize = 4; - } else { - XMP_Throw ( "Can't use _XMP_LittleEndian_Bit by itself", kXMPErr_BadOptions ); - } - } - - if ( options & kXMP_OmitAllFormatting ) { - newline = " "; // ! Yes, a space for "newline". This ensures token separation. - indentStr = ""; - } else { - if ( *newline == 0 ) newline = "\xA"; // Linefeed - if ( *indentStr == 0 ) { - indentStr = " "; - if ( ! (options & kXMP_UseCompactFormat) ) indentStr = " "; - } - } - - if ( options & kXMP_ExactPacketLength ) { - if ( options & (kXMP_OmitPacketWrapper | kXMP_IncludeThumbnailPad) ) { - XMP_Throw ( "Inconsistent options for exact size serialize", kXMPErr_BadOptions ); - } - if ( (padding & (unicodeUnitSize-1)) != 0 ) { - XMP_Throw ( "Exact size must be a multiple of the Unicode element", kXMPErr_BadOptions ); - } - } else if ( options & kXMP_ReadOnlyPacket ) { - if ( options & (kXMP_OmitPacketWrapper | kXMP_IncludeThumbnailPad) ) { - XMP_Throw ( "Inconsistent options for read-only packet", kXMPErr_BadOptions ); - } - padding = 0; - } else if ( options & kXMP_OmitPacketWrapper ) { - if ( options & kXMP_IncludeThumbnailPad ) { - XMP_Throw ( "Inconsistent options for non-packet serialize", kXMPErr_BadOptions ); - } - padding = 0; - } else { - if ( padding == 0 ) padding = kDefaultPad * unicodeUnitSize; - if ( options & kXMP_IncludeThumbnailPad ) { - if ( ! this->DoesPropertyExist ( kXMP_NS_XMP, "Thumbnails" ) ) padding += (10000 * unicodeUnitSize); // *** Need a better estimate. - } - } - - // Serialize as UTF-8, then convert to UTF-16 or UTF-32 if necessary, and assemble with the padding and tail. - - std::string tailStr; - - SerializeAsRDF ( *this, *sOutputStr, tailStr, options, newline, indentStr, baseIndent ); - if ( charEncoding == kXMP_EncodeUTF8 ) { - - if ( options & kXMP_ExactPacketLength ) { - size_t minSize = sOutputStr->size() + tailStr.size(); - if ( minSize > padding ) XMP_Throw ( "Can't fit into specified packet size", kXMPErr_BadSerialize ); - padding -= minSize; // Now the actual amount of padding to add. - } - - size_t newlineLen = strlen ( newline ); - - if ( padding < newlineLen ) { - sOutputStr->append ( padding, ' ' ); - } else { - padding -= newlineLen; // Write this newline last. - while ( padding >= (100 + newlineLen) ) { - sOutputStr->append ( 100, ' ' ); - *sOutputStr += newline; - padding -= (100 + newlineLen); - } - sOutputStr->append ( padding, ' ' ); - *sOutputStr += newline; - } - - *sOutputStr += tailStr; - - } else { - - // Need to convert the encoding. Swap the UTF-8 into a local string and convert back. Assemble everything. - - XMP_VarString utf8Str, newlineStr; - bool bigEndian = ((charEncoding & _XMP_LittleEndian_Bit) == 0); - - if ( charEncoding & _XMP_UTF16_Bit ) { - - std::string padStr ( " " ); padStr[0] = 0; // Assume big endian. - - utf8Str.swap ( *sOutputStr ); - ToUTF16 ( (UTF8Unit*)utf8Str.c_str(), utf8Str.size(), sOutputStr, bigEndian ); - utf8Str.swap ( tailStr ); - ToUTF16 ( (UTF8Unit*)utf8Str.c_str(), utf8Str.size(), &tailStr, bigEndian ); - - if ( options & kXMP_ExactPacketLength ) { - size_t minSize = sOutputStr->size() + tailStr.size(); - if ( minSize > padding ) XMP_Throw ( "Can't fit into specified packet size", kXMPErr_BadSerialize ); - padding -= minSize; // Now the actual amount of padding to add (in bytes). - } - - utf8Str.assign ( newline ); - ToUTF16 ( (UTF8Unit*)utf8Str.c_str(), utf8Str.size(), &newlineStr, bigEndian ); - size_t newlineLen = newlineStr.size(); - - if ( padding < newlineLen ) { - for ( int i = padding/2; i > 0; --i ) *sOutputStr += padStr; - } else { - padding -= newlineLen; // Write this newline last. - while ( padding >= (200 + newlineLen) ) { - for ( int i = 100; i > 0; --i ) *sOutputStr += padStr; - *sOutputStr += newlineStr; - padding -= (200 + newlineLen); - } - for ( int i = padding/2; i > 0; --i ) *sOutputStr += padStr; - *sOutputStr += newlineStr; - } - - *sOutputStr += tailStr; - - } else { - - std::string padStr ( " " ); padStr[0] = padStr[1] = padStr[2] = 0; // Assume big endian. -// UTF8_to_UTF32_Proc Converter = UTF8_to_UTF32BE; - - if ( charEncoding & _XMP_LittleEndian_Bit ) { - padStr[0] = ' '; padStr[1] = padStr[2] = padStr[3] = 0; -// Converter = UTF8_to_UTF32LE; - } - - utf8Str.swap ( *sOutputStr ); - ToUTF32 ( (UTF8Unit*)utf8Str.c_str(), utf8Str.size(), sOutputStr, bigEndian ); - utf8Str.swap ( tailStr ); - ToUTF32 ( (UTF8Unit*)utf8Str.c_str(), utf8Str.size(), &tailStr, bigEndian ); - - if ( options & kXMP_ExactPacketLength ) { - size_t minSize = sOutputStr->size() + tailStr.size(); - if ( minSize > padding ) XMP_Throw ( "Can't fit into specified packet size", kXMPErr_BadSerialize ); - padding -= minSize; // Now the actual amount of padding to add (in bytes). - } - - utf8Str.assign ( newline ); - ToUTF32 ( (UTF8Unit*)utf8Str.c_str(), utf8Str.size(), &newlineStr, bigEndian ); - size_t newlineLen = newlineStr.size(); - - if ( padding < newlineLen ) { - for ( int i = padding/4; i > 0; --i ) *sOutputStr += padStr; - } else { - padding -= newlineLen; // Write this newline last. - while ( padding >= (400 + newlineLen) ) { - for ( int i = 100; i > 0; --i ) *sOutputStr += padStr; - *sOutputStr += newlineStr; - padding -= (400 + newlineLen); - } - for ( int i = padding/4; i > 0; --i ) *sOutputStr += padStr; - *sOutputStr += newlineStr; - } - - *sOutputStr += tailStr; - - } - - } - - // Return the finished string. - - *rdfString = sOutputStr->c_str(); - *rdfSize = sOutputStr->size(); - -} // SerializeToBuffer - -// ================================================================================================= diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPMeta.cpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPMeta.cpp deleted file mode 100644 index f55a3b98a68..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPMeta.cpp +++ /dev/null @@ -1,1649 +0,0 @@ -// ================================================================================================= -// Copyright 2002-2008 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// -// Adobe patent application tracking #P435, entitled 'Unique markers to simplify embedding data of -// one format in a file with a different format', inventors: Sean Parent, Greg Gilley. -// ================================================================================================= - -#include "XMP_Environment.h" // ! This must be the first include! -#include "XMPCore_Impl.hpp" - -#include - -#include "XMPMeta.hpp" -#include "XMPIterator.hpp" -#include "XMPUtils.hpp" -#include "XMP_Version.h" -#include "UnicodeInlines.incl_cpp" -#include "UnicodeConversions.hpp" - -#include // For sort and stable_sort. - -#if XMP_DebugBuild - #include -#endif - -using namespace std; - -#if XMP_WinBuild -#ifdef _MSC_VER - #pragma warning ( disable : 4533 ) // initialization of '...' is skipped by 'goto ...' - #pragma warning ( disable : 4702 ) // unreachable code - #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) - #pragma warning ( disable : 4996 ) // '...' was declared deprecated -#endif -#endif - - -// *** Use the XMP_PropIsXyz (Schema, Simple, Struct, Array, ...) macros -// *** Add debug codegen checks, e.g. that typical masking operations really work -// *** Change all uses of strcmp and strncmp to XMP_LitMatch and XMP_LitNMatch - - -// ================================================================================================= -// Local Types and Constants -// ========================= - - -// ================================================================================================= -// Static Variables -// ================ - -XMP_VarString * xdefaultName = 0; - -// These are embedded version strings. - -const char * kXMPCore_EmbeddedVersion = kXMPCore_VersionMessage; -const char * kXMPCore_EmbeddedCopyright = kXMPCoreName " " kXMP_CopyrightStr; - -// ================================================================================================= -// Local Utilities -// =============== - -#define IsHexDigit(ch) ( (('0' <= (ch)) && ((ch) <= '9')) || (('A' <= (ch)) && ((ch) <= 'F')) ) -#define HexDigitValue(ch) ( (((ch) - '0') < 10) ? ((ch) - '0') : ((ch) - 'A' + 10) ) - -static const char * kTenSpaces = " "; -#define OutProcPadding(pad) { size_t padLen = (pad); \ - for ( ; padLen >= 10; padLen -= 10 ) OutProcNChars ( kTenSpaces, 10 ); \ - for ( ; padLen > 0; padLen -= 1 ) OutProcNChars ( " ", 1 ); } - - -#define OutProcNewline() { status = (*outProc) ( refCon, "\n", 1 ); if ( status != 0 ) goto EXIT; } - -#define OutProcNChars(p,n) { status = (*outProc) ( refCon, (p), (n) ); if ( status != 0 ) goto EXIT; } - -#define OutProcLiteral(lit) { status = (*outProc) ( refCon, (lit), strlen(lit) ); if ( status != 0 ) goto EXIT; } - -#define OutProcString(str) { status = (*outProc) ( refCon, (str).c_str(), (str).size() ); if ( status != 0 ) goto EXIT; } - -#define OutProcULong(num) { snprintf ( buffer, sizeof(buffer), "%lu", (num) ); /* AUDIT: Using sizeof for snprintf length is safe */ \ - status = (*outProc) ( refCon, buffer, strlen(buffer) ); if ( status != 0 ) goto EXIT; } - -#define OutProcHexInt(num) { snprintf ( buffer, sizeof(buffer), "%lX", (num) ); /* AUDIT: Using sizeof for snprintf length is safe */ \ - status = (*outProc) ( refCon, buffer, strlen(buffer) ); if ( status != 0 ) goto EXIT; } - -#define OutProcHexByte(num) { snprintf ( buffer, sizeof(buffer), "%.2X", (num) ); /* AUDIT: Using sizeof for snprintf length is safe */ \ - status = (*outProc) ( refCon, buffer, strlen(buffer) ); if ( status != 0 ) goto EXIT; } - -static const char * kIndent = " "; -#define OutProcIndent(lev) { for ( size_t i = 0; i < (lev); ++i ) OutProcNChars ( kIndent, 3 ); } - - -// ------------------------------------------------------------------------------------------------- -// DumpClearString -// --------------- - -static XMP_Status -DumpClearString ( const XMP_VarString & value, XMP_TextOutputProc outProc, void * refCon ) -{ - - char buffer [20]; - bool prevNormal; - XMP_Status status = 0; - - XMP_StringPtr spanStart, spanEnd; - XMP_StringPtr valueEnd = &value[0] + value.size(); - - spanStart = &value[0]; - while ( spanStart < valueEnd ) { - - // Output the next span of regular characters. - for ( spanEnd = spanStart; spanEnd < valueEnd; ++spanEnd ) { - if ( (unsigned char)(*spanEnd) > 0x7F ) break; - if ( (*spanEnd < 0x20) && (*spanEnd != kTab) && (*spanEnd != kLF) ) break; - } - if ( spanStart != spanEnd ) status = (*outProc) ( refCon, spanStart, (spanEnd-spanStart) ); - if ( status != 0 ) break; - spanStart = spanEnd; - - // Output the next span of irregular characters. - prevNormal = true; - for ( spanEnd = spanStart; spanEnd < valueEnd; ++spanEnd ) { - if ( ((0x20 <= *spanEnd) && ((unsigned char)(*spanEnd) <= 0x7F)) || (*spanEnd == kTab) || (*spanEnd == kLF) ) break; - char space = ' '; - if ( prevNormal ) space = '<'; - status = (*outProc) ( refCon, &space, 1 ); - if ( status != 0 ) break; - OutProcHexByte ( *spanEnd ); - prevNormal = false; - } - if ( ! prevNormal ) { - status = (*outProc) ( refCon, ">", 1 ); - if ( status != 0 ) return status; - } - spanStart = spanEnd; - - } - -EXIT: - return status; - -} // DumpClearString - - -// ------------------------------------------------------------------------------------------------- -// DumpStringMap -// ------------- - -static XMP_Status -DumpStringMap ( const XMP_StringMap & map, XMP_StringPtr label, XMP_TextOutputProc outProc, void * refCon ) -{ - XMP_Status status; - XMP_cStringMapPos currPos; - XMP_cStringMapPos endPos = map.end(); - - size_t maxLen = 0; - for ( currPos = map.begin(); currPos != endPos; ++currPos ) { - size_t currLen = currPos->first.size(); - if ( currLen > maxLen ) maxLen = currLen; - } - - OutProcNewline(); - OutProcLiteral ( label ); - OutProcNewline(); - - for ( currPos = map.begin(); currPos != endPos; ++currPos ) { - OutProcNChars ( " ", 2 ); - DumpClearString ( currPos->first, outProc, refCon ); - OutProcPadding ( maxLen - currPos->first.size() ); - OutProcNChars ( " => ", 4 ); - DumpClearString ( currPos->second, outProc, refCon ); - OutProcNewline(); - } - -EXIT: - return status; - -} // DumpStringMap - - -// ------------------------------------------------------------------------------------------------- -// DumpNodeOptions -// --------------- - -static XMP_Status -DumpNodeOptions ( XMP_OptionBits options, - XMP_TextOutputProc outProc, - void * refCon ) -{ - XMP_Status status; - char buffer [32]; // Decimal of a 64 bit int is at most about 20 digits. - - static const char * optNames[] = { " schema", // 0x8000_0000 - " ?30", - " ?29", - " -COMMAS-", - " ?27", // 0x0800_0000 - " ?26", - " ?25", - " ?24", - " ?23", // 0x0080_0000 - " isStale", - " isDerived", - " isStable", - " ?19", // 0x0008_0000 - " isInternal", - " hasAliases", - " isAlias", - " -AFTER-", // 0x0000_8000 - " -BEFORE-", - " isCompact", - " isLangAlt", - " isAlt", // 0x0000_0800 - " isOrdered", - " isArray", - " isStruct", - " hasType", // 0x0000_0080 - " hasLang", - " isQual", - " hasQual", - " ?3", // 0x0000_0008 - " ?2", - " URI", - " ?0" }; - - if ( options == 0 ) { - - OutProcNChars ( "(0x0)", 5 ); - - } else { - - OutProcNChars ( "(0x", 3 ); - OutProcHexInt ( options ); - OutProcNChars ( " :", 2 ); - - XMP_OptionBits mask = 0x80000000; - for ( int b = 0; b < 32; ++b ) { - if ( options & mask ) OutProcLiteral ( optNames[b] ); - mask = mask >> 1; - } - OutProcNChars ( ")", 1 ); - - } - -EXIT: - return status; - -} // DumpNodeOptions - - -// ------------------------------------------------------------------------------------------------- -// DumpPropertyTree -// ---------------- - -// *** Extract the validation code into a separate routine to call on exit in debug builds. - -static XMP_Status -DumpPropertyTree ( const XMP_Node * currNode, - int indent, - size_t itemIndex, - XMP_TextOutputProc outProc, - void * refCon ) -{ - XMP_Status status; - char buffer [32]; // Decimal of a 64 bit int is at most about 20 digits. - - OutProcIndent ( (size_t)indent ); - if ( itemIndex == 0 ) { - if ( currNode->options & kXMP_PropIsQualifier ) OutProcNChars ( "? ", 2 ); - DumpClearString ( currNode->name, outProc, refCon ); - } else { - OutProcNChars ( "[", 1 ); - OutProcULong ( static_cast(itemIndex) ); - OutProcNChars ( "]", 1 ); - } - - if ( ! (currNode->options & kXMP_PropCompositeMask) ) { - OutProcNChars ( " = \"", 4 ); - DumpClearString ( currNode->value, outProc, refCon ); - OutProcNChars ( "\"", 1 ); - } - - if ( currNode->options != 0 ) { - OutProcNChars ( " ", 2 ); - status = DumpNodeOptions ( currNode->options, outProc, refCon ); - if ( status != 0 ) goto EXIT; - } - - if ( currNode->options & kXMP_PropHasLang ) { - if ( currNode->qualifiers.empty() || (currNode->qualifiers[0]->name != "xml:lang") ) { - OutProcLiteral ( " ** bad lang flag **" ); - } - } - // *** Check rdf:type also. - - if ( ! (currNode->options & kXMP_PropCompositeMask) ) { - if ( ! currNode->children.empty() ) OutProcLiteral ( " ** bad children **" ); - } else if ( currNode->options & kXMP_PropValueIsArray ) { - if ( currNode->options & kXMP_PropValueIsStruct ) OutProcLiteral ( " ** bad comp flags **" ); - } else if ( (currNode->options & kXMP_PropCompositeMask) != kXMP_PropValueIsStruct ) { - OutProcLiteral ( " ** bad comp flags **" ); - } - - #if 0 // *** XMP_DebugBuild - if ( (currNode->_namePtr != currNode->name.c_str()) || - (currNode->_valuePtr != currNode->value.c_str()) ) OutProcLiteral ( " ** bad debug string **" ); - #endif - - OutProcNewline(); - - for ( size_t qualNum = 0, qualLim = currNode->qualifiers.size(); qualNum < qualLim; ++qualNum ) { - - const XMP_Node * currQual = currNode->qualifiers[qualNum]; - - if ( currQual->parent != currNode ) OutProcLiteral ( "** bad parent link => " ); - if ( currQual->name == kXMP_ArrayItemName ) OutProcLiteral ( "** bad qual name => " ); - if ( ! (currQual->options & kXMP_PropIsQualifier) ) OutProcLiteral ( "** bad qual flag => " ); - if ( currQual->name == "xml:lang" ) { - if ( (qualNum != 0) || (! (currNode->options & kXMP_PropHasLang)) ) OutProcLiteral ( "** bad lang qual => " ); - } - - status = DumpPropertyTree ( currQual, indent+2, 0, outProc, refCon ); - if ( status != 0 ) goto EXIT; - - } - - for ( size_t childNum = 0, childLim = currNode->children.size(); childNum < childLim; ++childNum ) { - - const XMP_Node * currChild = currNode->children[childNum]; - - if ( currChild->parent != currNode ) OutProcLiteral ( "** bad parent link => " ); - if ( currChild->options & kXMP_PropIsQualifier ) OutProcLiteral ( "** bad qual flag => " ); - - if ( currNode->options & kXMP_PropValueIsArray ) { - itemIndex = childNum+1; - if ( currChild->name != kXMP_ArrayItemName ) OutProcLiteral ( "** bad item name => " ); - } else { - itemIndex = 0; - if ( currChild->name == kXMP_ArrayItemName ) OutProcLiteral ( "** bad field name => " ); - } - - status = DumpPropertyTree ( currChild, indent+1, itemIndex, outProc, refCon ); - if ( status != 0 ) goto EXIT; - - } - -EXIT: - return status; - -} // DumpPropertyTree - - -// ------------------------------------------------------------------------------------------------- -// DumpXMLTree -// ----------- - -#if DumpXMLParseTree - -static inline void PutHexByte ( FILE * log, unsigned char ch ) -{ - - fprintf ( log, "\\x" ); - if ( ch < 0x10 ) { - fprintf ( log, "%c", kHexDigits[ch] ); - } else { - fprintf ( log, "%c%c", kHexDigits[ch>>4], kHexDigits[ch&0xF] ); - } - -} // PutHexByte - -// ------------------------------------------------------------------------------------------------- - -static void PutClearString ( FILE * log, const std::string & str ) -{ - - for ( size_t i = 0; i != str.size(); ++i ) { - unsigned char ch = str[i]; - if ( (0x20 <= ch) && (ch <= 0x7F) ) { - fprintf ( log, "%c", ch ); - } else { - PutHexByte ( log, ch ); - } - } - -} // PutClearString - -// ------------------------------------------------------------------------------------------------- - -static void DumpXMLTree ( FILE * log, const XML_Node & node, int indent ) -{ - size_t i; - - #if 0 // *** XMP_DebugBuild - if ( (node._namePtr != node.name.c_str()) || - (node._valuePtr != node.value.c_str()) ) fprintf ( log, "*** bad debug string ***\n" ); - #endif - - for ( i = 0; i != (size_t)indent; ++i ) fprintf ( log, " " ); - - switch ( node.kind ) { - - case kRootNode : - fprintf ( log, "\nStart of XML tree dump\n\n" ); - if ( (indent != 0) || (! node.attrs.empty()) || - (! node.ns.empty()) || (! node.name.empty()) || (!node.value.empty()) ) fprintf ( log, " ** invalid root ** \n" ); - for ( i = 0; i < node.children.size(); ++i ) { - XMP_Uns8 kind = node.children[i]->kind; - if ( (kind == kRootNode) || (kind == kAttrNode) ) fprintf ( log, " ** invalid child ** \n" ); - DumpXMLTree ( log, *node.children[i], indent+1 ); - } - fprintf ( log, "\nEnd of XML tree dump\n" ); - break; - - case kElemNode : - fprintf ( log, "Elem %s", node.name.c_str() ); - if ( indent == 0 ) fprintf ( log, " ** invalid elem ** " ); - if ( ! node.ns.empty() ) fprintf ( log, " @ %s", node.ns.c_str() ); - fprintf ( log, "\n" ); - for ( i = 0; i < node.attrs.size(); ++i ) { - XMP_Uns8 kind = node.attrs[i]->kind; - if ( kind != kAttrNode ) fprintf ( log, " ** invalid attr ** \n" ); - DumpXMLTree ( log, *node.attrs[i], indent+2 ); - } - for ( i = 0; i < node.children.size(); ++i ) { - XMP_Uns8 kind = node.children[i]->kind; - if ( (kind == kRootNode) || (kind == kAttrNode) ) fprintf ( log, " ** invalid child ** \n" ); - DumpXMLTree ( log, *node.children[i], indent+1 ); - } - break; - - case kAttrNode : - fprintf ( log, "Attr %s", node.name.c_str() ); - if ( (indent == 0) || node.name.empty() || (! node.attrs.empty()) || (! node.children.empty()) ) fprintf ( log, " ** invalid attr ** " ); - fprintf ( log, " = \"" ); - PutClearString ( log, node.value ); - fprintf ( log, "\"" ); - if ( ! node.ns.empty() ) fprintf ( log, " @ %s", node.ns.c_str() ); - fprintf ( log, "\n" ); - break; - - case kCDataNode : - if ( (indent == 0) || (! node.ns.empty()) || (! node.name.empty()) || - (! node.attrs.empty()) || (! node.children.empty()) ) fprintf ( log, " ** invalid cdata ** \n" ); - fprintf ( log, "\"" ); - PutClearString ( log, node.value ); - fprintf ( log, "\"\n" ); - break; - - case kPINode : - fprintf ( log, "PI %s", node.name.c_str() ); - if ( (indent == 0) || node.name.empty() || (! node.children.empty()) ) fprintf ( log, " ** invalid pi ** \n" ); - if ( ! node.value.empty() ) { - fprintf ( log, " " ); - } - fprintf ( log, "\n" ); - break; - - } - -} // DumpXMLTree - -#endif // DumpXMLParseTree - - -// ------------------------------------------------------------------------------------------------- -// CompareNodeNames -// ---------------- -// -// Comparison routine for sorting XMP nodes by name. The name "xml:lang" is less than anything else, -// and "rdf:type" is less than anything except "xml:lang". This preserves special rules for qualifiers. - -static bool -CompareNodeNames ( XMP_Node * left, XMP_Node * right ) -{ - - if ( left->name == "xml:lang" ) return true; - if ( right->name == "xml:lang" ) return false; - - if ( left->name == "rdf:type" ) return true; - if ( right->name == "rdf:type" ) return false; - - return ( left->name < right->name ); - -} // CompareNodeNames - - -// ------------------------------------------------------------------------------------------------- -// CompareNodeValues -// ----------------- -// -// Comparison routine for sorting XMP nodes by value. - -static bool -CompareNodeValues ( XMP_Node * left, XMP_Node * right ) -{ - - if ( XMP_PropIsSimple ( left->options ) && XMP_PropIsSimple ( right->options ) ) { - return ( left->value < right->value ); - } - - XMP_OptionBits leftForm = left->options & kXMP_PropCompositeMask; - XMP_OptionBits rightForm = right->options & kXMP_PropCompositeMask; - - return ( leftForm < rightForm ); - -} // CompareNodeValues - - -// ------------------------------------------------------------------------------------------------- -// CompareNodeLangs -// ---------------- -// -// Comparison routine for sorting XMP nodes by xml:lang qualifier. An "x-default" value is less than -// any other language. - -static bool -CompareNodeLangs ( XMP_Node * left, XMP_Node * right ) -{ - - if ( left->qualifiers.empty() || (left->qualifiers[0]->name != "xml:lang") ) return false; - if ( right->qualifiers.empty() || (right->qualifiers[0]->name != "xml:lang") ) return false; - - if ( left->qualifiers[0]->value == "x-default" ) return true; - if ( right->qualifiers[0]->value == "x-default" ) return false; - - return ( left->qualifiers[0]->value < right->qualifiers[0]->value ); - -} // CompareNodeLangs - - -// ------------------------------------------------------------------------------------------------- -// SortWithinOffspring -// ------------------- -// -// Sort one level down, within the elements of a node vector. This sorts the qualifiers of each -// node. If the node is a struct it sorts the fields by names. If the node is an unordered array it -// sorts the elements by value. If the node is an AltText array it sorts the elements by language. - -static void -SortWithinOffspring ( XMP_NodeOffspring & nodeVec ) -{ - - for ( size_t i = 0, limit = nodeVec.size(); i < limit; ++i ) { - - XMP_Node * currPos = nodeVec[i]; - - if ( ! currPos->qualifiers.empty() ) { - sort ( currPos->qualifiers.begin(), currPos->qualifiers.end(), CompareNodeNames ); - SortWithinOffspring ( currPos->qualifiers ); - } - - if ( ! currPos->children.empty() ) { - - if ( XMP_PropIsStruct ( currPos->options ) || XMP_NodeIsSchema ( currPos->options ) ) { - sort ( currPos->children.begin(), currPos->children.end(), CompareNodeNames ); - } else if ( XMP_PropIsArray ( currPos->options ) ) { - if ( XMP_ArrayIsUnordered ( currPos->options ) ) { - stable_sort ( currPos->children.begin(), currPos->children.end(), CompareNodeValues ); - } else if ( XMP_ArrayIsAltText ( currPos->options ) ) { - sort ( currPos->children.begin(), currPos->children.end(), CompareNodeLangs ); - } - } - - SortWithinOffspring ( currPos->children ); - - } - - } - -} // SortWithinOffspring - - -// ================================================================================================= -// Constructors -// ============ - - -XMPMeta::XMPMeta() : clientRefs(0), prevTkVer(0), tree(XMP_Node(0,"",0)), xmlParser(0) -{ - // Nothing more to do, clientRefs is incremented in wrapper. - #if XMP_TraceCTorDTor - printf ( "Default construct XMPMeta @ %.8X\n", this ); - #endif -} // XMPMeta - -// ------------------------------------------------------------------------------------------------- - -XMPMeta::~XMPMeta() RELEASE_NO_THROW -{ - #if XMP_TraceCTorDTor - printf ( "Destruct XMPMeta @ %.8X\n", this ); - #endif - - XMP_Assert ( this->clientRefs <= 0 ); - if ( xmlParser != 0 ) delete ( xmlParser ); - xmlParser = 0; - -} // ~XMPMeta - - -// ================================================================================================= -// Class Static Functions -// ====================== -// -// -// ================================================================================================= - -// ------------------------------------------------------------------------------------------------- -// GetVersionInfo -// -------------- - -/* class-static */ void -XMPMeta::GetVersionInfo ( XMP_VersionInfo * info ) -{ - - memset ( info, 0, sizeof(*info) ); // AUDIT: Safe, using sizeof the destination. - XMP_Assert ( sizeof(*info) == sizeof(XMP_VersionInfo) ); - - info->major = XMP_API_VERSION_MAJOR; - info->minor = XMP_API_VERSION_MINOR; - info->micro = XMP_API_VERSION_MICRO; - info->isDebug = kXMPCore_DebugFlag; - info->flags = 0; // ! None defined yet. - info->message = kXMPCore_VersionMessage; - -} // GetVersionInfo - -// ------------------------------------------------------------------------------------------------- -// Initialize -// ---------- - -/* class-static */ bool -XMPMeta::Initialize() -{ - // Allocate and initialize static objects. - - ++sXMP_InitCount; - if ( sXMP_InitCount > 1 ) return true; - - #if TraceXMPCalls - // xmpOut = fopen ( "xmp.out", "w" ); // Coordinate with client glue in WXMP_Common.hpp - fprintf ( xmpOut, "XMP initializing\n" ); fflush ( xmpOut ); - #endif - - sExceptionMessage = new XMP_VarString(); - XMP_InitMutex ( &sXMPCoreLock ); - sOutputNS = new XMP_VarString; - sOutputStr = new XMP_VarString; - - xdefaultName = new XMP_VarString ( "x-default" ); - - sNamespaceURIToPrefixMap = new XMP_StringMap; - sNamespacePrefixToURIMap = new XMP_StringMap; - sRegisteredAliasMap = new XMP_AliasMap; - - InitializeUnicodeConversions(); - - // Register standard namespaces and aliases. - RegisterNamespace ( kXMP_NS_XML, "xml" ); - RegisterNamespace ( kXMP_NS_RDF, "rdf" ); - RegisterNamespace ( kXMP_NS_DC, "dc" ); - - RegisterNamespace ( kXMP_NS_XMP, "xmp" ); - RegisterNamespace ( kXMP_NS_PDF, "pdf" ); - RegisterNamespace ( kXMP_NS_Photoshop, "photoshop" ); - RegisterNamespace ( kXMP_NS_PSAlbum, "album" ); - RegisterNamespace ( kXMP_NS_EXIF, "exif" ); - RegisterNamespace ( kXMP_NS_EXIF_Aux, "aux" ); - RegisterNamespace ( kXMP_NS_TIFF, "tiff" ); - RegisterNamespace ( kXMP_NS_PNG, "png" ); - RegisterNamespace ( kXMP_NS_JPEG, "jpeg" ); - RegisterNamespace ( kXMP_NS_JP2K, "jp2k" ); - RegisterNamespace ( kXMP_NS_CameraRaw, "crs" ); - RegisterNamespace ( kXMP_NS_ASF, "asf" ); - RegisterNamespace ( kXMP_NS_WAV, "wav" ); - - RegisterNamespace ( kXMP_NS_AdobeStockPhoto, "bmsp" ); - RegisterNamespace ( kXMP_NS_CreatorAtom, "creatorAtom" ); - - RegisterNamespace ( kXMP_NS_XMP_Rights, "xmpRights" ); - RegisterNamespace ( kXMP_NS_XMP_MM, "xmpMM" ); - RegisterNamespace ( kXMP_NS_XMP_BJ, "xmpBJ" ); - RegisterNamespace ( kXMP_NS_XMP_Note, "xmpNote" ); - - RegisterNamespace ( kXMP_NS_DM, "xmpDM" ); - RegisterNamespace ( kXMP_NS_XMP_Text, "xmpT" ); - RegisterNamespace ( kXMP_NS_XMP_PagedFile, "xmpTPg" ); - RegisterNamespace ( kXMP_NS_XMP_Graphics, "xmpG" ); - RegisterNamespace ( kXMP_NS_XMP_Image, "xmpGImg" ); - - RegisterNamespace ( kXMP_NS_XMP_Font, "stFnt" ); - RegisterNamespace ( kXMP_NS_XMP_Dimensions, "stDim" ); - RegisterNamespace ( kXMP_NS_XMP_ResourceEvent, "stEvt" ); - RegisterNamespace ( kXMP_NS_XMP_ResourceRef, "stRef" ); - RegisterNamespace ( kXMP_NS_XMP_ST_Version, "stVer" ); - RegisterNamespace ( kXMP_NS_XMP_ST_Job, "stJob" ); - RegisterNamespace ( kXMP_NS_XMP_ManifestItem, "stMfs" ); - - RegisterNamespace ( kXMP_NS_XMP_IdentifierQual, "xmpidq" ); - - RegisterNamespace ( kXMP_NS_IPTCCore, "Iptc4xmpCore" ); - RegisterNamespace ( kXMP_NS_DICOM, "DICOM" ); - - RegisterNamespace ( kXMP_NS_PDFA_Schema, "pdfaSchema" ); - RegisterNamespace ( kXMP_NS_PDFA_Property, "pdfaProperty" ); - RegisterNamespace ( kXMP_NS_PDFA_Type, "pdfaType" ); - RegisterNamespace ( kXMP_NS_PDFA_Field, "pdfaField" ); - RegisterNamespace ( kXMP_NS_PDFA_ID, "pdfaid" ); - RegisterNamespace ( kXMP_NS_PDFA_Extension, "pdfaExtension" ); - - RegisterNamespace ( kXMP_NS_PDFX, "pdfx" ); - RegisterNamespace ( kXMP_NS_PDFX_ID, "pdfxid" ); - - RegisterNamespace ( "adobe:ns:meta/", "x" ); - RegisterNamespace ( "http://ns.adobe.com/iX/1.0/", "iX" ); - -// 06-Oct-07, ahu: Do not use aliases. They result in unexpected behaviour. -// XMPMeta::RegisterStandardAliases ( "" ); - - // Initialize the other core classes. - - if ( ! XMPIterator::Initialize() ) XMP_Throw ( "Failure from XMPIterator::Initialize", kXMPErr_InternalFailure ); - if ( ! XMPUtils::Initialize() ) XMP_Throw ( "Failure from XMPUtils::Initialize", kXMPErr_InternalFailure ); - // Do miscelaneous semantic checks of types and arithmetic. - - XMP_Assert ( sizeof(XMP_Int8) == 1 ); - XMP_Assert ( sizeof(XMP_Int16) == 2 ); - XMP_Assert ( sizeof(XMP_Int32) == 4 ); - XMP_Assert ( sizeof(XMP_Int64) == 8 ); - XMP_Assert ( sizeof(XMP_Uns8) == 1 ); - XMP_Assert ( sizeof(XMP_Uns16) == 2 ); - XMP_Assert ( sizeof(XMP_Uns32) == 4 ); - XMP_Assert ( sizeof(XMP_Uns64) == 8 ); - - XMP_Assert ( sizeof(XMP_OptionBits) == 4 ); // Check that option masking work on all 32 bits. - XMP_OptionBits flag; - flag = ~0UL; - XMP_Assert ( flag == (XMP_OptionBits)(-1L) ); - XMP_Assert ( (flag ^ kXMP_PropHasLang) == 0xFFFFFFBFUL ); - XMP_Assert ( (flag & ~kXMP_PropHasLang) == 0xFFFFFFBFUL ); - - XMP_OptionBits opt1 = 0; // Check the general option bit macros. - XMP_OptionBits opt2 = ~0UL; - XMP_SetOption ( opt1, kXMP_PropValueIsArray ); - XMP_ClearOption ( opt2, kXMP_PropValueIsArray ); - XMP_Assert ( opt1 == ~opt2 ); - XMP_Assert ( XMP_TestOption ( opt1, kXMP_PropValueIsArray ) ); - XMP_Assert ( ! XMP_TestOption ( opt2, kXMP_PropValueIsArray ) ); - - XMP_Assert ( XMP_PropIsSimple ( ~kXMP_PropCompositeMask ) ); // Check the special option bit macros. - XMP_Assert ( ! XMP_PropIsSimple ( kXMP_PropValueIsStruct ) ); - XMP_Assert ( ! XMP_PropIsSimple ( kXMP_PropValueIsArray ) ); - - XMP_Assert ( XMP_PropIsStruct ( kXMP_PropValueIsStruct ) ); - XMP_Assert ( XMP_PropIsArray ( kXMP_PropValueIsArray ) ); - XMP_Assert ( ! XMP_PropIsStruct ( ~kXMP_PropValueIsStruct ) ); - XMP_Assert ( ! XMP_PropIsArray ( ~kXMP_PropValueIsArray ) ); - - XMP_Assert ( XMP_ArrayIsUnordered ( ~kXMP_PropArrayIsOrdered ) ); - XMP_Assert ( XMP_ArrayIsOrdered ( kXMP_PropArrayIsOrdered ) ); - XMP_Assert ( XMP_ArrayIsAlternate ( kXMP_PropArrayIsAlternate ) ); - XMP_Assert ( XMP_ArrayIsAltText ( kXMP_PropArrayIsAltText ) ); - XMP_Assert ( ! XMP_ArrayIsUnordered ( kXMP_PropArrayIsOrdered ) ); - XMP_Assert ( ! XMP_ArrayIsOrdered ( ~kXMP_PropArrayIsOrdered ) ); - XMP_Assert ( ! XMP_ArrayIsAlternate ( ~kXMP_PropArrayIsAlternate ) ); - XMP_Assert ( ! XMP_ArrayIsAltText ( ~kXMP_PropArrayIsAltText ) ); - - XMP_Assert ( XMP_PropHasQualifiers ( kXMP_PropHasQualifiers ) ); - XMP_Assert ( XMP_PropIsQualifier ( kXMP_PropIsQualifier ) ); - XMP_Assert ( XMP_PropHasLang ( kXMP_PropHasLang ) ); - XMP_Assert ( ! XMP_PropHasQualifiers ( ~kXMP_PropHasQualifiers ) ); - XMP_Assert ( ! XMP_PropIsQualifier ( ~kXMP_PropIsQualifier ) ); - XMP_Assert ( ! XMP_PropHasLang ( ~kXMP_PropHasLang ) ); - - XMP_Assert ( XMP_NodeIsSchema ( kXMP_SchemaNode ) ); - XMP_Assert ( XMP_PropIsAlias ( kXMP_PropIsAlias ) ); - XMP_Assert ( ! XMP_NodeIsSchema ( ~kXMP_SchemaNode ) ); - XMP_Assert ( ! XMP_PropIsAlias ( ~kXMP_PropIsAlias ) ); - - #if 0 // Generally off, enable to hand check generated code. - extern XMP_OptionBits opt3, opt4; - if ( XMP_TestOption ( opt3, kXMP_PropValueIsArray ) ) opt4 = opt3; - if ( ! XMP_TestOption ( opt3, kXMP_PropValueIsStruct ) ) opt4 = opt3; - static bool ok1 = XMP_TestOption ( opt4, kXMP_PropValueIsArray ); - static bool ok2 = ! XMP_TestOption ( opt4, kXMP_PropValueIsStruct ); - #endif - - // Make sure the embedded info strings are referenced and kept. - if ( (kXMPCore_EmbeddedVersion[0] == 0) || (kXMPCore_EmbeddedCopyright[0] == 0) ) return false; - return true; - -} // Initialize - - -// ------------------------------------------------------------------------------------------------- -// Terminate -// --------- - -#define EliminateGlobal(g) delete ( g ); g = 0 - -/* class-static */ void -XMPMeta::Terminate() RELEASE_NO_THROW -{ - --sXMP_InitCount; - if ( sXMP_InitCount > 0 ) return; - - #if TraceXMPCalls - fprintf ( xmpOut, "XMP terminating\n" ); fflush ( xmpOut ); - // fclose ( xmpOut ); // Coordinate with fopen in XMPMeta::Initialize. - #endif - - XMPIterator::Terminate(); - XMPUtils::Terminate(); - EliminateGlobal ( sNamespaceURIToPrefixMap ); - EliminateGlobal ( sNamespacePrefixToURIMap ); - EliminateGlobal ( sRegisteredAliasMap ); - - EliminateGlobal ( xdefaultName ); - EliminateGlobal ( sOutputNS ); - EliminateGlobal ( sOutputStr ); - EliminateGlobal ( sExceptionMessage ); - - XMP_TermMutex ( sXMPCoreLock ); - -} // Terminate - - -// ------------------------------------------------------------------------------------------------- -// Unlock -// ------ - -/* class-static */ void -XMPMeta::Unlock ( XMP_OptionBits options ) -{ - options = options; // Avoid unused parameter warning. // *** Need IgnoreParam macro. - - #if TraceXMPLocking - fprintf ( xmpOut, " Unlocking XMP toolkit, count = %d\n", sLockCount ); fflush ( xmpOut ); - #endif - --sLockCount; - XMP_Assert ( sLockCount == 0 ); - XMP_ExitCriticalRegion ( sXMPCoreLock ); - -} // Unlock - - -// ------------------------------------------------------------------------------------------------- -// UnlockObject -// ------------ - -void -XMPMeta::UnlockObject ( XMP_OptionBits options ) const -{ - options = options; // Avoid unused parameter warning. - - XMPMeta::Unlock ( 0 ); - -} // UnlockObject - - -// ------------------------------------------------------------------------------------------------- -// DumpNamespaces -// -------------- -// -// Dump the prefix to URI map (easier to read) and verify that both are consistent and legit. - -// *** Should put checks in a separate routine for regular calling in debug builds. - -/* class-static */ XMP_Status -XMPMeta::DumpNamespaces ( XMP_TextOutputProc outProc, - void * refCon ) -{ - XMP_Assert ( outProc != 0 ); // ! Enforced by wrapper. - XMP_Status status = 0; - - XMP_StringMapPos p2uEnd = sNamespacePrefixToURIMap->end(); // ! Move up to avoid gcc complaints. - XMP_StringMapPos u2pEnd = sNamespaceURIToPrefixMap->end(); - - status = DumpStringMap ( *sNamespacePrefixToURIMap, "Dumping namespace prefix to URI map", outProc, refCon ); - if ( status != 0 ) goto EXIT; - - if ( sNamespacePrefixToURIMap->size() != sNamespaceURIToPrefixMap->size() ) { - OutProcLiteral ( "** bad namespace map sizes **" ); - XMP_Throw ( "Fatal namespace map problem", kXMPErr_InternalFailure ); - } - - for ( XMP_StringMapPos nsLeft = sNamespacePrefixToURIMap->begin(); nsLeft != p2uEnd; ++nsLeft ) { - - XMP_StringMapPos nsOther = sNamespaceURIToPrefixMap->find ( nsLeft->second ); - if ( (nsOther == u2pEnd) || (nsLeft != sNamespacePrefixToURIMap->find ( nsOther->second )) ) { - OutProcLiteral ( " ** bad namespace URI ** " ); - DumpClearString ( nsLeft->second, outProc, refCon ); - goto FAILURE; - } - - for ( XMP_StringMapPos nsRight = nsLeft; nsRight != p2uEnd; ++nsRight ) { - if ( nsRight == nsLeft ) continue; // ! Can't start at nsLeft+1, no operator+! - if ( nsLeft->second == nsRight->second ) { - OutProcLiteral ( " ** duplicate namespace URI ** " ); - DumpClearString ( nsLeft->second, outProc, refCon ); - goto FAILURE; - } - } - - } - - for ( XMP_StringMapPos nsLeft = sNamespaceURIToPrefixMap->begin(); nsLeft != u2pEnd; ++nsLeft ) { - - XMP_StringMapPos nsOther = sNamespacePrefixToURIMap->find ( nsLeft->second ); - if ( (nsOther == p2uEnd) || (nsLeft != sNamespaceURIToPrefixMap->find ( nsOther->second )) ) { - OutProcLiteral ( " ** bad namespace prefix ** " ); - DumpClearString ( nsLeft->second, outProc, refCon ); - goto FAILURE; - } - - for ( XMP_StringMapPos nsRight = nsLeft; nsRight != u2pEnd; ++nsRight ) { - if ( nsRight == nsLeft ) continue; // ! Can't start at nsLeft+1, no operator+! - if ( nsLeft->second == nsRight->second ) { - OutProcLiteral ( " ** duplicate namespace prefix ** " ); - DumpClearString ( nsLeft->second, outProc, refCon ); - goto FAILURE; - } - } - - } - -EXIT: - return status; - -FAILURE: - OutProcNewline(); - (void) DumpStringMap ( *sNamespaceURIToPrefixMap, "Dumping namespace URI to prefix map", outProc, refCon ); - XMP_Throw ( "Fatal namespace map problem", kXMPErr_InternalFailure ); - return 0; - -} // DumpNamespaces - - -// ------------------------------------------------------------------------------------------------- -// DumpAliases -// ----------- - -/* class-static */ XMP_Status -XMPMeta::DumpAliases ( XMP_TextOutputProc outProc, - void * refCon ) -{ - XMP_Assert ( outProc != 0 ); // ! Enforced by wrapper. - XMP_Status status = 0; - - XMP_Assert ( sRegisteredAliasMap != 0 ); - - XMP_cAliasMapPos aliasPos; - XMP_cAliasMapPos aliasEnd = sRegisteredAliasMap->end(); - - size_t maxLen = 0; - for ( aliasPos = sRegisteredAliasMap->begin(); aliasPos != aliasEnd; ++aliasPos ) { - size_t currLen = aliasPos->first.size(); - if ( currLen > maxLen ) maxLen = currLen; - } - - OutProcLiteral ( "Dumping alias name to actual path map" ); - OutProcNewline(); - - for ( aliasPos = sRegisteredAliasMap->begin(); aliasPos != aliasEnd; ++aliasPos ) { - - OutProcNChars ( " ", 3 ); - DumpClearString ( aliasPos->first, outProc, refCon ); - OutProcPadding ( maxLen - aliasPos->first.size() ); - OutProcNChars ( " => ", 4 ); - - size_t actualPathSize = aliasPos->second.size(); - for ( size_t stepNum = 1; stepNum < actualPathSize; ++stepNum ) OutProcString ( aliasPos->second[stepNum].step ); - - XMP_OptionBits arrayForm = aliasPos->second[1].options & kXMP_PropArrayFormMask; - - if ( arrayForm == 0 ) { - if ( actualPathSize != 2 ) OutProcLiteral ( " ** bad actual path **" ); - } else { - OutProcNChars ( " ", 2 ); - DumpNodeOptions ( arrayForm, outProc, refCon ); - if ( ! (arrayForm & kXMP_PropValueIsArray) ) OutProcLiteral ( " ** bad array form **" ); - if ( actualPathSize != 3 ) OutProcLiteral ( " ** bad actual path **" ); - } - - if ( aliasPos->second[0].options != kXMP_SchemaNode ) OutProcLiteral ( " ** bad schema form **" ); - - OutProcNewline(); - - } - -EXIT: - return status; - -} // DumpAliases - - -// ------------------------------------------------------------------------------------------------- -// GetGlobalOptions -// ---------------- - -/* class-static */ XMP_OptionBits -XMPMeta::GetGlobalOptions() -{ - XMP_OptionBits options = 0; - - return options; - -} // GetGlobalOptions - - -// ------------------------------------------------------------------------------------------------- -// SetGlobalOptions -// ---------------- - -/* class-static */ void -XMPMeta::SetGlobalOptions ( XMP_OptionBits /*options*/ ) -{ - - XMP_Throw ( "Unimplemented method XMPMeta::SetGlobalOptions", kXMPErr_Unimplemented ); - -} // SetGlobalOptions - - -// ------------------------------------------------------------------------------------------------- -// RegisterNamespace -// ----------------- - -/* class-static */ void -XMPMeta::RegisterNamespace ( XMP_StringPtr namespaceURI, - XMP_StringPtr prefix ) -{ - if ( (*namespaceURI == 0) || (*prefix == 0) ) { - XMP_Throw ( "Empty namespace URI or prefix", kXMPErr_BadParam ); - } - - XMP_VarString nsURI ( namespaceURI ); - XMP_VarString prfix ( prefix ); - if ( prfix[prfix.size()-1] != ':' ) prfix += ':'; - VerifySimpleXMLName ( prefix, prefix+prfix.size()-1 ); // Exclude the colon. - - // Set the new namespace in both maps. - (*sNamespaceURIToPrefixMap)[nsURI] = prfix; - (*sNamespacePrefixToURIMap)[prfix] = nsURI; - -} // RegisterNamespace - - -// ------------------------------------------------------------------------------------------------- -// GetNamespacePrefix -// ------------------ - -/* class-static */ bool -XMPMeta::GetNamespacePrefix ( XMP_StringPtr namespaceURI, - XMP_StringPtr * namespacePrefix, - XMP_StringLen * prefixSize ) -{ - bool found = false; - - XMP_Assert ( *namespaceURI != 0 ); // ! Enforced by wrapper. - XMP_Assert ( (namespacePrefix != 0) && (prefixSize != 0) ); // ! Enforced by wrapper. - - XMP_VarString nsURI ( namespaceURI ); - XMP_StringMapPos uriPos = sNamespaceURIToPrefixMap->find ( nsURI ); - - if ( uriPos != sNamespaceURIToPrefixMap->end() ) { - *namespacePrefix = uriPos->second.c_str(); - *prefixSize = uriPos->second.size(); - found = true; - } - - return found; - -} // GetNamespacePrefix - - -// ------------------------------------------------------------------------------------------------- -// GetNamespaceURI -// --------------- - -/* class-static */ bool -XMPMeta::GetNamespaceURI ( XMP_StringPtr namespacePrefix, - XMP_StringPtr * namespaceURI, - XMP_StringLen * uriSize ) -{ - bool found = false; - - XMP_Assert ( *namespacePrefix != 0 ); // ! Enforced by wrapper. - XMP_Assert ( (namespacePrefix != 0) && (namespaceURI != 0) ); // ! Enforced by wrapper. - - XMP_VarString nsPrefix ( namespacePrefix ); - if ( nsPrefix[nsPrefix.size()-1] != ':' ) nsPrefix += ':'; - - XMP_StringMapPos prefixPos = sNamespacePrefixToURIMap->find ( nsPrefix ); - - if ( prefixPos != sNamespacePrefixToURIMap->end() ) { - *namespaceURI = prefixPos->second.c_str(); - *uriSize = prefixPos->second.size(); - found = true; - } - - return found; - -} // GetNamespaceURI - - -// ------------------------------------------------------------------------------------------------- -// DeleteNamespace -// --------------- - -// *** Don't allow standard namespaces to be deleted. -// *** We would be better off not having this. Instead, have local namespaces from parsing be -// *** restricted to the object that introduced them. - -/* class-static */ void -XMPMeta::DeleteNamespace ( XMP_StringPtr namespaceURI ) -{ - XMP_StringMapPos uriPos = sNamespaceURIToPrefixMap->find ( namespaceURI ); - if ( uriPos == sNamespaceURIToPrefixMap->end() ) return; - - XMP_StringMapPos prefixPos = sNamespacePrefixToURIMap->find ( uriPos->second ); - XMP_Assert ( prefixPos != sNamespacePrefixToURIMap->end() ); - - sNamespaceURIToPrefixMap->erase ( uriPos ); - sNamespacePrefixToURIMap->erase ( prefixPos ); - -} // DeleteNamespace - - -// ------------------------------------------------------------------------------------------------- -// RegisterAlias -// ------------- -// -// Allow 3 kinds of alias: -// TopProp => TopProp -// TopProp => TopArray[1] -// TopProp => TopArray[@xml:lang='x-default'] -// -// A new alias can be made to something that is already aliased, as long as the net result is one of -// the legitimate forms. The new alias can already have aliases to it, also as long as result of -// adjusting all of the exiting aliases leaves them legal. -// -// ! The caller assumes all risk that new aliases do not invalidate existing XMPMeta objects. Any -// ! conflicts will result in later references throwing bad XPath exceptions. - -/* class-static */ void -XMPMeta::RegisterAlias ( XMP_StringPtr aliasNS, - XMP_StringPtr aliasProp, - XMP_StringPtr actualNS, - XMP_StringPtr actualProp, - XMP_OptionBits arrayForm ) -{ - XMP_ExpandedXPath expAlias, expActual; - XMP_AliasMapPos mapPos; - XMP_ExpandedXPath * regActual = 0; - - XMP_Assert ( (aliasNS != 0) && (aliasProp != 0) && (actualNS != 0) && (actualProp != 0) ); // Enforced by wrapper. - - // Expand the alias and actual names, make sure they are one of the basic 3 forms. When counting - // the expanded XPath size remember that the schema URI is the first component. We don't have to - // compare the schema URIs though, the (unique) prefix is part of the top property name. - - ExpandXPath ( aliasNS, aliasProp, &expAlias ); - ExpandXPath ( actualNS, actualProp, &expActual ); - if ( (expAlias.size() != 2) || (expActual.size() != 2) ) { - XMP_Throw ( "Alias and actual property names must be simple", kXMPErr_BadXPath ); - } - - arrayForm = VerifySetOptions ( arrayForm, 0 ); - if ( arrayForm != 0 ) { - if ( (arrayForm & ~kXMP_PropArrayFormMask) != 0 ) XMP_Throw ( "Only array form flags are allowed", kXMPErr_BadOptions ); - expActual[1].options |= arrayForm; // Set the array form for the top level step. - if ( ! (arrayForm & kXMP_PropArrayIsAltText) ) { - expActual.push_back ( XPathStepInfo ( "[1]", kXMP_ArrayIndexStep ) ); - } else { - expActual.push_back ( XPathStepInfo ( "[?xml:lang=\"x-default\"]", kXMP_QualSelectorStep ) ); - } - } - - // See if there are any conflicts with existing aliases. A couple of the checks are easy. If the - // alias is already aliased it is only OK to reregister an identical alias. If the actual is - // already aliased to something else and the new chain is legal, just swap in the old base. - - mapPos = sRegisteredAliasMap->find ( expAlias[kRootPropStep].step ); - if ( mapPos != sRegisteredAliasMap->end() ) { - - // This alias is already registered to something, make sure it is the same something. - - regActual = &mapPos->second; - if ( arrayForm != (mapPos->second[1].options & kXMP_PropArrayFormMask) ) { - XMP_Throw ( "Mismatch with existing alias array form", kXMPErr_BadParam ); - } - if ( expActual.size() != regActual->size() ) { - XMP_Throw ( "Mismatch with existing actual path", kXMPErr_BadParam ); - } - if ( expActual[kRootPropStep].step != (*regActual)[kRootPropStep].step ) { - XMP_Throw ( "Mismatch with existing actual name", kXMPErr_BadParam ); - } - if ( (expActual.size() == 3) && (expActual[kAliasIndexStep].step != (*regActual)[kAliasIndexStep].step) ) { - XMP_Throw ( "Mismatch with existing actual array item", kXMPErr_BadParam ); - } - return; - - } - - mapPos = sRegisteredAliasMap->find ( expActual[kRootPropStep].step ); - if ( mapPos != sRegisteredAliasMap->end() ) { - - // The actual is already aliased to something else. - - regActual = &mapPos->second; - if ( expActual.size() == 2 ) { - expActual = *regActual; // TopProp => TopProp => anything : substitute the entire old base. - } else if ( regActual->size() != 2 ) { - XMP_Throw ( "Can't alias an array item to an array item", kXMPErr_BadParam ); // TopProp => TopArray[] => TopArray[] : nope. - } else { - expActual[kSchemaStep].step = (*regActual)[kSchemaStep].step; // TopProp => TopArray[] => TopProp : - expActual[kRootPropStep].step = (*regActual)[kRootPropStep].step; // substitute the old base name. - } - - } - - // Checking for existing aliases to this one is touchier. This involves updating the alias map, - // which must not be done unless all of the changes are legal. So we need 2 loops, one to verify - // that everything is OK, and one to make the changes. The bad case is: - // TopProp => TopArray[] => TopArray[] - // In the valid cases we back substitute the new base. - - for ( mapPos = sRegisteredAliasMap->begin(); mapPos != sRegisteredAliasMap->end(); ++mapPos ) { - regActual = &mapPos->second; - if ( expAlias[kRootPropStep].step == (*regActual)[kRootPropStep].step ) { - if ( (regActual->size() == 2) && (expAlias.size() == 2) ) { - XMP_Throw ( "Can't alias an array item to an array item", kXMPErr_BadParam ); - } - } - } - - for ( mapPos = sRegisteredAliasMap->begin(); mapPos != sRegisteredAliasMap->end(); ++mapPos ) { - regActual = &mapPos->second; - if ( expAlias[kRootPropStep].step == (*regActual)[kRootPropStep].step ) { - - if ( regActual->size() == 1 ) { - *regActual = expActual; // TopProp => TopProp => anything : substitute the entire new base. - } else { - (*regActual)[kSchemaStep].step = expActual[kSchemaStep].step; // TopProp => TopArray[] => TopProp : - (*regActual)[kRootPropStep].step = expActual[kRootPropStep].step; // substitute the new base name. - } - - } - } - - // Finally, all is OK to register the new alias. - - (void) sRegisteredAliasMap->insert ( XMP_AliasMap::value_type ( expAlias[kRootPropStep].step, expActual ) ); - -} // RegisterAlias - - -// ------------------------------------------------------------------------------------------------- -// ResolveAlias -// ------------ - -/* class-static */ bool -XMPMeta::ResolveAlias ( XMP_StringPtr aliasNS, - XMP_StringPtr aliasProp, - XMP_StringPtr * actualNS, - XMP_StringLen * nsSize, - XMP_StringPtr * actualProp, - XMP_StringLen * propSize, - XMP_OptionBits * arrayForm ) -{ - XMP_Assert ( (aliasNS != 0) && (aliasProp != 0) ); // Enforced by wrapper. - XMP_Assert ( (actualNS != 0) && (nsSize != 0) && (actualProp != 0) && (propSize != 0) && (arrayForm != 0) ); // Enforced by wrapper. - - // Expand the input path and look up the first component in the alias table. Return if not an alias. - - XMP_ExpandedXPath fullPath, minPath; - ExpandXPath ( aliasNS, aliasProp, &fullPath ); - XMP_Assert ( fullPath.size() >= 2 ); - - minPath.push_back ( fullPath[kSchemaStep] ); - minPath.push_back ( fullPath[kRootPropStep] ); - XMP_AliasMapPos mapPos = sRegisteredAliasMap->find ( minPath[kRootPropStep].step ); - if ( mapPos == sRegisteredAliasMap->end() ) return false; - - // Replace the alias portion of the full expanded path. Compose the output path string. - - const XMP_ExpandedXPath & actualPath = mapPos->second; - - fullPath[kSchemaStep] = actualPath[kSchemaStep]; - fullPath[kRootPropStep] = actualPath[kRootPropStep]; - if ( actualPath.size() > 2 ) { // This is an alias to an array item. - XMP_ExpandedXPathPos insertPos = fullPath.begin() + kAliasIndexStep; - fullPath.insert ( insertPos, actualPath[kAliasIndexStep] ); - } - - *sOutputNS = fullPath[kSchemaStep].step; - *actualNS = sOutputNS->c_str(); - *nsSize = sOutputNS->size(); - - ComposeXPath ( fullPath, sOutputStr ); - *actualProp = sOutputStr->c_str(); - *propSize = sOutputStr->size(); - - *arrayForm = actualPath[kRootPropStep].options & kXMP_PropArrayFormMask; - - #if XMP_DebugBuild // Test that the output string is valid and unchanged by round trip expand/compose. - XMP_ExpandedXPath rtPath; - ExpandXPath ( *actualNS, *actualProp, &rtPath ); - std::string rtString; - ComposeXPath ( rtPath, &rtString ); - XMP_Assert ( rtString == *sOutputStr ); - #endif - - return true; - -} // ResolveAlias - - -// ------------------------------------------------------------------------------------------------- -// DeleteAlias -// ----------- - -/* class-static */ void -XMPMeta::DeleteAlias ( XMP_StringPtr /*aliasNS*/, - XMP_StringPtr /*aliasProp*/ ) -{ - -// Todo: XMP_Assert ( (aliasNS != 0) && (aliasProp != 0) ); / / Enforced by wrapper. - XMP_Throw ( "Unimplemented method XMPMeta::DeleteAlias", kXMPErr_Unimplemented ); // *** #error "write me" - -} // DeleteAlias - - -// ------------------------------------------------------------------------------------------------- -// RegisterStandardAliases -// ----------------------- - -/* class-static */ void -XMPMeta::RegisterStandardAliases ( XMP_StringPtr schemaNS ) -{ - XMP_Assert ( schemaNS != 0 ); // Enforced by wrapper. - - const bool doAll = (*schemaNS == 0); - - if ( doAll || XMP_LitMatch ( schemaNS, kXMP_NS_XMP ) ) { - // Aliases from XMP to DC. - XMPMeta::RegisterAlias ( kXMP_NS_XMP, "Author", kXMP_NS_DC, "creator", kXMP_PropArrayIsOrdered ); - XMPMeta::RegisterAlias ( kXMP_NS_XMP, "Authors", kXMP_NS_DC, "creator", 0 ); - XMPMeta::RegisterAlias ( kXMP_NS_XMP, "Description", kXMP_NS_DC, "description", 0 ); - XMPMeta::RegisterAlias ( kXMP_NS_XMP, "Format", kXMP_NS_DC, "format", 0 ); - XMPMeta::RegisterAlias ( kXMP_NS_XMP, "Keywords", kXMP_NS_DC, "subject", 0 ); - XMPMeta::RegisterAlias ( kXMP_NS_XMP, "Locale", kXMP_NS_DC, "language", 0 ); - XMPMeta::RegisterAlias ( kXMP_NS_XMP, "Title", kXMP_NS_DC, "title", 0 ); - XMPMeta::RegisterAlias ( kXMP_NS_XMP_Rights, "Copyright", kXMP_NS_DC, "rights", 0 ); - } - - if ( doAll || XMP_LitMatch ( schemaNS, kXMP_NS_PDF ) ) { - // Aliases from PDF to DC and XMP. - XMPMeta::RegisterAlias ( kXMP_NS_PDF, "Author", kXMP_NS_DC, "creator", kXMP_PropArrayIsOrdered ); - XMPMeta::RegisterAlias ( kXMP_NS_PDF, "BaseURL", kXMP_NS_XMP, "BaseURL", 0 ); - XMPMeta::RegisterAlias ( kXMP_NS_PDF, "CreationDate", kXMP_NS_XMP, "CreateDate", 0 ); - XMPMeta::RegisterAlias ( kXMP_NS_PDF, "Creator", kXMP_NS_XMP, "CreatorTool", 0 ); - XMPMeta::RegisterAlias ( kXMP_NS_PDF, "ModDate", kXMP_NS_XMP, "ModifyDate", 0 ); - XMPMeta::RegisterAlias ( kXMP_NS_PDF, "Subject", kXMP_NS_DC, "description", kXMP_PropArrayIsAltText ); - XMPMeta::RegisterAlias ( kXMP_NS_PDF, "Title", kXMP_NS_DC, "title", kXMP_PropArrayIsAltText ); - } - - if ( doAll || XMP_LitMatch ( schemaNS, kXMP_NS_Photoshop ) ) { - // Aliases from PHOTOSHOP to DC and XMP. - XMPMeta::RegisterAlias ( kXMP_NS_Photoshop, "Author", kXMP_NS_DC, "creator", kXMP_PropArrayIsOrdered ); - XMPMeta::RegisterAlias ( kXMP_NS_Photoshop, "Caption", kXMP_NS_DC, "description", kXMP_PropArrayIsAltText ); - XMPMeta::RegisterAlias ( kXMP_NS_Photoshop, "Copyright", kXMP_NS_DC, "rights", kXMP_PropArrayIsAltText ); - XMPMeta::RegisterAlias ( kXMP_NS_Photoshop, "Keywords", kXMP_NS_DC, "subject", 0 ); - XMPMeta::RegisterAlias ( kXMP_NS_Photoshop, "Marked", kXMP_NS_XMP_Rights, "Marked", 0 ); - XMPMeta::RegisterAlias ( kXMP_NS_Photoshop, "Title", kXMP_NS_DC, "title", kXMP_PropArrayIsAltText ); - XMPMeta::RegisterAlias ( kXMP_NS_Photoshop, "WebStatement", kXMP_NS_XMP_Rights, "WebStatement", 0 ); - } - - if ( doAll || XMP_LitMatch ( schemaNS, kXMP_NS_TIFF ) || XMP_LitMatch ( schemaNS, kXMP_NS_EXIF ) ) { - // Aliases from TIFF and EXIF to DC and XMP. - XMPMeta::RegisterAlias ( kXMP_NS_TIFF, "Artist", kXMP_NS_DC, "creator", kXMP_PropArrayIsOrdered); - XMPMeta::RegisterAlias ( kXMP_NS_TIFF, "Copyright", kXMP_NS_DC, "rights", 0 ); - XMPMeta::RegisterAlias ( kXMP_NS_TIFF, "DateTime", kXMP_NS_XMP, "ModifyDate", 0 ); - XMPMeta::RegisterAlias ( kXMP_NS_TIFF, "ImageDescription", kXMP_NS_DC, "description", 0 ); - XMPMeta::RegisterAlias ( kXMP_NS_TIFF, "Software", kXMP_NS_XMP, "CreatorTool", 0 ); - } - - if ( doAll || XMP_LitMatch ( schemaNS, kXMP_NS_PNG ) ) { // ! From Acrobat ImageCapture: - XMPMeta::RegisterAlias ( kXMP_NS_PNG, "Author", kXMP_NS_DC, "creator", kXMP_PropArrayIsOrdered); - XMPMeta::RegisterAlias ( kXMP_NS_PNG, "Copyright", kXMP_NS_DC, "rights", kXMP_PropArrayIsAltText); - XMPMeta::RegisterAlias ( kXMP_NS_PNG, "CreationTime", kXMP_NS_XMP, "CreateDate", 0 ); - XMPMeta::RegisterAlias ( kXMP_NS_PNG, "Description", kXMP_NS_DC, "description", kXMP_PropArrayIsAltText); - XMPMeta::RegisterAlias ( kXMP_NS_PNG, "ModificationTime", kXMP_NS_XMP, "ModifyDate", 0 ); - XMPMeta::RegisterAlias ( kXMP_NS_PNG, "Software", kXMP_NS_XMP, "CreatorTool", 0 ); - XMPMeta::RegisterAlias ( kXMP_NS_PNG, "Title", kXMP_NS_DC, "title", kXMP_PropArrayIsAltText); - } - -} // RegisterStandardAliases - - -// ================================================================================================= -// Class Methods -// ============= -// -// -// ================================================================================================= - - -// ------------------------------------------------------------------------------------------------- -// DumpObject -// ---------- - -XMP_Status -XMPMeta::DumpObject ( XMP_TextOutputProc outProc, - void * refCon ) const -{ - XMP_Assert ( outProc != 0 ); // ! Enforced by wrapper. - XMP_Status status = 0; - - OutProcLiteral ( "Dumping XMPMeta object \"" ); - DumpClearString ( tree.name, outProc, refCon ); - OutProcNChars ( "\" ", 3 ); - status = DumpNodeOptions ( tree.options, outProc, refCon ); - if ( status != 0 ) goto EXIT; - #if 0 // *** XMP_DebugBuild - if ( (tree._namePtr != tree.name.c_str()) || - (tree._valuePtr != tree.value.c_str()) ) OutProcLiteral ( " ** bad debug string **" ); - #endif - OutProcNewline(); - - if ( ! tree.value.empty() ) { - OutProcLiteral ( "** bad root value ** \"" ); - DumpClearString ( tree.value, outProc, refCon ); - OutProcNChars ( "\"", 1 ); - OutProcNewline(); - } - - if ( ! tree.qualifiers.empty() ) { - OutProcLiteral ( "** bad root qualifiers **" ); - OutProcNewline(); - for ( size_t qualNum = 0, qualLim = tree.qualifiers.size(); qualNum < qualLim; ++qualNum ) { - status = DumpPropertyTree ( tree.qualifiers[qualNum], 3, 0, outProc, refCon ); - } - } - - if ( ! tree.children.empty() ) { - - for ( size_t childNum = 0, childLim = tree.children.size(); childNum < childLim; ++childNum ) { - - const XMP_Node * currSchema = tree.children[childNum]; - - OutProcNewline(); - OutProcIndent ( 1 ); - DumpClearString ( currSchema->value, outProc, refCon ); - OutProcNChars ( " ", 2 ); - DumpClearString ( currSchema->name, outProc, refCon ); - OutProcNChars ( " ", 2 ); - status = DumpNodeOptions ( currSchema->options, outProc, refCon ); - if ( status != 0 ) goto EXIT; - #if 0 // *** XMP_DebugBuild - if ( (currSchema->_namePtr != currSchema->name.c_str()) || - (currSchema->_valuePtr != currSchema->value.c_str()) ) OutProcLiteral ( " ** bad debug string **" ); - #endif - OutProcNewline(); - - if ( ! (currSchema->options & kXMP_SchemaNode) ) { - OutProcLiteral ( "** bad schema options **" ); - OutProcNewline(); - } - - if ( ! currSchema->qualifiers.empty() ) { - OutProcLiteral ( "** bad schema qualifiers **" ); - OutProcNewline(); - for ( size_t qualNum = 0, qualLim = currSchema->qualifiers.size(); qualNum < qualLim; ++qualNum ) { - DumpPropertyTree ( currSchema->qualifiers[qualNum], 3, 0, outProc, refCon ); - } - } - - for ( size_t childNum = 0, childLim = currSchema->children.size(); childNum < childLim; ++childNum ) { - DumpPropertyTree ( currSchema->children[childNum], 2, 0, outProc, refCon ); - } - - } - - } - -EXIT: - return status; - -} // DumpObject - - -// ------------------------------------------------------------------------------------------------- -// CountArrayItems -// --------------- - -XMP_Index -XMPMeta::CountArrayItems ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName ) const -{ - XMP_Assert ( (schemaNS != 0) && (arrayName != 0) ); // Enforced by wrapper. - - XMP_ExpandedXPath expPath; - ExpandXPath ( schemaNS, arrayName, &expPath ); - - const XMP_Node * arrayNode = FindConstNode ( &tree, expPath ); - - if ( arrayNode == 0 ) return 0; - if ( ! (arrayNode->options & kXMP_PropValueIsArray) ) XMP_Throw ( "The named property is not an array", kXMPErr_BadXPath ); - return arrayNode->children.size(); - -} // CountArrayItems - - -// ------------------------------------------------------------------------------------------------- -// GetObjectName -// ------------- - -void -XMPMeta::GetObjectName ( XMP_StringPtr * namePtr, - XMP_StringLen * nameLen ) const -{ - - *namePtr = tree.name.c_str(); - *nameLen = tree.name.size(); - -} // GetObjectName - - -// ------------------------------------------------------------------------------------------------- -// SetObjectName -// ------------- - -void -XMPMeta::SetObjectName ( XMP_StringPtr name ) -{ - VerifyUTF8 ( name ); // Throws if the string is not legit UTF-8. - tree.name = name; - -} // SetObjectName - - -// ------------------------------------------------------------------------------------------------- -// GetObjectOptions -// ---------------- - -XMP_OptionBits -XMPMeta::GetObjectOptions() const -{ - XMP_OptionBits options = 0; - - return options; - -} // GetObjectOptions - - -// ------------------------------------------------------------------------------------------------- -// SetObjectOptions -// ---------------- - -void -XMPMeta::SetObjectOptions ( XMP_OptionBits /*options*/ ) -{ - - XMP_Throw ( "Unimplemented method XMPMeta::SetObjectOptions", kXMPErr_Unimplemented ); - -} // SetObjectOptions - - -// ------------------------------------------------------------------------------------------------- -// Sort -// ---- -// -// At the top level the namespaces are sorted by their prefixes. Within a namespace, the top level -// properties are sorted by name. Within a struct, the fields are sorted by their qualified name, -// i.e. their XML prefix:local form. Unordered arrays of simple items are sorted by value. Language -// Alternative arrays are sorted by the xml:lang qualifiers, with the "x-default" item placed first. - -void -XMPMeta::Sort() -{ - - if ( ! this->tree.qualifiers.empty() ) { - sort ( this->tree.qualifiers.begin(), this->tree.qualifiers.end(), CompareNodeNames ); - SortWithinOffspring ( this->tree.qualifiers ); - } - - if ( ! this->tree.children.empty() ) { - // The schema prefixes are the node's value, the name is the URI, so we sort schemas by value. - sort ( this->tree.children.begin(), this->tree.children.end(), CompareNodeValues ); - SortWithinOffspring ( this->tree.children ); - } - -} // Sort - - -// ------------------------------------------------------------------------------------------------- -// Erase -// ----- -// -// Clear everything except for clientRefs. - -void -XMPMeta::Erase() -{ - - this->prevTkVer = 0; - if ( this->xmlParser != 0 ) { - delete ( this->xmlParser ); - this->xmlParser = 0; - } - this->tree.ClearNode(); - -} // Erase - - -// ------------------------------------------------------------------------------------------------- -// Clone -// ----- - -void -XMPMeta::Clone ( XMPMeta * clone, XMP_OptionBits options ) const -{ - if ( clone == 0 ) XMP_Throw ( "Null clone pointer", kXMPErr_BadParam ); - if ( options != 0 ) XMP_Throw ( "No options are defined yet", kXMPErr_BadOptions ); - XMP_Assert ( this->tree.parent == 0 ); - - clone->tree.ClearNode(); - - clone->tree.options = this->tree.options; - clone->tree.name = this->tree.name; - clone->tree.value = this->tree.value; - - #if 0 // *** XMP_DebugBuild - clone->tree._namePtr = clone->tree.name.c_str(); - clone->tree._valuePtr = clone->tree.value.c_str(); - #endif - - CloneOffspring ( &this->tree, &clone->tree ); - -} // Clone - -// ================================================================================================= diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPMeta.hpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPMeta.hpp deleted file mode 100644 index 68462dce644..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPMeta.hpp +++ /dev/null @@ -1,418 +0,0 @@ -#ifndef __XMPMeta_hpp__ -#define __XMPMeta_hpp__ - -// ================================================================================================= -// Copyright 2002-2008 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#include "XMP_Environment.h" -#include "XMP_Const.h" -#include "XMPCore_Impl.hpp" -#include "XMLParserAdapter.hpp" - -// ------------------------------------------------------------------------------------------------- - -#ifndef DumpXMLParseTree - #define DumpXMLParseTree 0 -#endif - -extern XMP_VarString * xdefaultName; - -class XMPIterator; -class XMPUtils; - -// ------------------------------------------------------------------------------------------------- - -class XMPMeta { -public: - - static void - GetVersionInfo ( XMP_VersionInfo * info ); - - static bool - Initialize(); - static void - Terminate() RELEASE_NO_THROW; - - static void - Unlock ( XMP_OptionBits options ); - - // --------------------------------------------------------------------------------------------- - - XMPMeta(); - - virtual ~XMPMeta() RELEASE_NO_THROW; - - // --------------------------------------------------------------------------------------------- - - static XMP_OptionBits - GetGlobalOptions(); - - static void - SetGlobalOptions ( XMP_OptionBits options ); - - // --------------------------------------------------------------------------------------------- - - static XMP_Status - DumpNamespaces ( XMP_TextOutputProc outProc, - void * refCon ); - - static XMP_Status - DumpAliases ( XMP_TextOutputProc outProc, - void * refCon ); - - // --------------------------------------------------------------------------------------------- - - static void - RegisterNamespace ( XMP_StringPtr namespaceURI, - XMP_StringPtr prefix ); - - static bool - GetNamespacePrefix ( XMP_StringPtr namespaceURI, - XMP_StringPtr * namespacePrefix, - XMP_StringLen * prefixSize ); - - static bool - GetNamespaceURI ( XMP_StringPtr namespacePrefix, - XMP_StringPtr * namespaceURI, - XMP_StringLen * uriSize ); - - static void - DeleteNamespace ( XMP_StringPtr namespaceURI ); - - // --------------------------------------------------------------------------------------------- - - static void - RegisterAlias ( XMP_StringPtr aliasNS, - XMP_StringPtr aliasProp, - XMP_StringPtr actualNS, - XMP_StringPtr actualProp, - XMP_OptionBits arrayForm ); - - static bool - ResolveAlias ( XMP_StringPtr aliasNS, - XMP_StringPtr aliasProp, - XMP_StringPtr * actualNS, - XMP_StringLen * nsSize, - XMP_StringPtr * actualProp, - XMP_StringLen * propSize, - XMP_OptionBits * arrayForm ); - - static void - DeleteAlias ( XMP_StringPtr aliasNS, - XMP_StringPtr aliasProp ); - - static void - RegisterStandardAliases ( XMP_StringPtr schemaNS ); - - // --------------------------------------------------------------------------------------------- - - void - UnlockObject ( XMP_OptionBits options ) const; - - // --------------------------------------------------------------------------------------------- - - bool - GetProperty ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr * propValue, - XMP_StringLen * valueSize, - XMP_OptionBits * options ) const; - - bool - GetArrayItem ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - XMP_StringPtr * itemValue, - XMP_StringLen * valueSize, - XMP_OptionBits * options ) const; - - bool - GetStructField ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - XMP_StringPtr * fieldValue, - XMP_StringLen * valueSize, - XMP_OptionBits * options ) const; - - bool - GetQualifier ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - XMP_StringPtr * qualValue, - XMP_StringLen * valueSize, - XMP_OptionBits * options ) const; - - // --------------------------------------------------------------------------------------------- - - void - SetProperty ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr propValue, - XMP_OptionBits options ); - - void - SetArrayItem ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - XMP_StringPtr itemValue, - XMP_OptionBits options ); - - void - AppendArrayItem ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_OptionBits arrayOptions, - XMP_StringPtr itemValue, - XMP_OptionBits options ); - - void - SetStructField ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - XMP_StringPtr fieldValue, - XMP_OptionBits options ); - - void - SetQualifier ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - XMP_StringPtr qualValue, - XMP_OptionBits options ); - - // --------------------------------------------------------------------------------------------- - - void - DeleteProperty ( XMP_StringPtr schemaNS, - XMP_StringPtr propName ); - - void - DeleteArrayItem ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex ); - - void - DeleteStructField ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName ); - - void - DeleteQualifier ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName ); - - // --------------------------------------------------------------------------------------------- - - bool - DoesPropertyExist ( XMP_StringPtr schemaNS, - XMP_StringPtr propName ) const; - - bool - DoesArrayItemExist ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex ) const; - - bool - DoesStructFieldExist ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName ) const; - - bool - DoesQualifierExist ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName ) const; - - // --------------------------------------------------------------------------------------------- - - bool - GetLocalizedText ( XMP_StringPtr schemaNS, - XMP_StringPtr altTextName, - XMP_StringPtr genericLang, - XMP_StringPtr specificLang, - XMP_StringPtr * actualLang, - XMP_StringLen * langSize, - XMP_StringPtr * itemValue, - XMP_StringLen * valueSize, - XMP_OptionBits * options ) const; - - void - SetLocalizedText ( XMP_StringPtr schemaNS, - XMP_StringPtr altTextName, - XMP_StringPtr genericLang, - XMP_StringPtr specificLang, - XMP_StringPtr itemValue, - XMP_OptionBits options ); - - // --------------------------------------------------------------------------------------------- - - bool - GetProperty_Bool ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - bool * propValue, - XMP_OptionBits * options ) const; - - bool - GetProperty_Int ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_Int32 * propValue, - XMP_OptionBits * options ) const; - - bool - GetProperty_Int64 ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_Int64 * propValue, - XMP_OptionBits * options ) const; - - bool - GetProperty_Float ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - double * propValue, - XMP_OptionBits * options ) const; - - bool - GetProperty_Date ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_DateTime * propValue, - XMP_OptionBits * options ) const; - - // --------------------------------------------------------------------------------------------- - - void - SetProperty_Bool ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - bool propValue, - XMP_OptionBits options ); - - void - SetProperty_Int ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_Int32 propValue, - XMP_OptionBits options ); - - void - SetProperty_Int64 ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_Int64 propValue, - XMP_OptionBits options ); - - void - SetProperty_Float ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - double propValue, - XMP_OptionBits options ); - - void - SetProperty_Date ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - const XMP_DateTime & propValue, - XMP_OptionBits options ); - - // --------------------------------------------------------------------------------------------- - - void - GetObjectName ( XMP_StringPtr * namePtr, - XMP_StringLen * nameLen ) const; - - void - SetObjectName ( XMP_StringPtr name ); - - XMP_OptionBits - GetObjectOptions() const; - - void - SetObjectOptions ( XMP_OptionBits options ); - - void - Sort(); - - void - Erase(); - - void - Clone ( XMPMeta * clone, XMP_OptionBits options ) const; - - XMP_Index - CountArrayItems ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName ) const; - - XMP_Status - DumpObject ( XMP_TextOutputProc outProc, - void * refCon ) const; - - // --------------------------------------------------------------------------------------------- - - void - ParseFromBuffer ( XMP_StringPtr buffer, - XMP_StringLen bufferSize, - XMP_OptionBits options ); - - void - SerializeToBuffer ( XMP_StringPtr * rdfString, - XMP_StringLen * rdfSize, - XMP_OptionBits options, - XMP_StringLen padding, - XMP_StringPtr newline, - XMP_StringPtr indent, - XMP_Index baseIndent ) const; - - // ============================================================================================= - - // --------------------------------------------------------------------------------------------- - // - Everything is built out of standard nodes. Each node has a name, value, option flags, a - // vector of child nodes, and a vector of qualifier nodes. - // - // - The option flags are those passed to SetProperty and returned from GetProperty. They tell - // if the node is simple, a struct or an array; whether it has qualifiers, etc. - // - // - The name of the node is an XML qualified name, of the form "prefix:simple-name". Since we - // force all namespaces to be known and to have unique prefixes, this is semantically equivalent - // to using a URI and simple name pair. - // - // - Although the value part is only for leaf properties and the children part is only for - // structs and arrays, it is easier to simply have them in every node. This keeps things visible - // so that debugging is easier - // - // - The top level node children are the namespaces that contain properties, the next level are - // the top level properties, lower levels are the fields of structs or items of arrays. The name - // of the top level nodes is just the namespace prefix, with the colon terminator. The name of - // top level properties includes the namespace prefix. - // - // - Any property node, at any level, can have qualifiers. These are themselves general property - // nodes. And could in fact themselves have qualifiers! - - // ! Expose the implementation so that file static functions can see the data. - - XMP_Int32 clientRefs; // ! Must be signed to allow decrement from 0. - XMP_Int32 prevTkVer; // Previous toolkit version as MMmmuubbb (major, minor, micro, build). - XMP_Node tree; - - XMLParserAdapter * xmlParser; - - friend class XMPIterator; - friend class XMPUtils; - -private: - - // ! These are hidden on purpose: - XMPMeta ( const XMPMeta & /* original */ ) : clientRefs(0), prevTkVer(0), tree(XMP_Node(0,"",0)), xmlParser(0) - { XMP_Throw ( "Call to hidden constructor", kXMPErr_InternalFailure ); }; - void operator= ( const XMPMeta & /* rhs */ ) - { XMP_Throw ( "Call to hidden operator=", kXMPErr_InternalFailure ); }; - -}; // class XMPMeta - - -// ================================================================================================= - -#endif // __XMPMeta_hpp__ diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPUtils-FileInfo.cpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPUtils-FileInfo.cpp deleted file mode 100644 index 159b542ee34..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPUtils-FileInfo.cpp +++ /dev/null @@ -1,1346 +0,0 @@ -// ================================================================================================= -// Copyright 2002-2008 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#include "XMP_Environment.h" // ! This must be the first include! -#include "XMPCore_Impl.hpp" - -#include "XMPUtils.hpp" - -#include -#include -#include -#include -#include - -#include // For snprintf. - -#if XMP_WinBuild -#ifdef _MSC_VER - #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) -#endif -#endif - -// ================================================================================================= -// Local Types and Constants -// ========================= - -typedef unsigned long UniCodePoint; - -enum UniCharKind { - UCK_normal, - UCK_space, - UCK_comma, - UCK_semicolon, - UCK_quote, - UCK_control -}; -typedef enum UniCharKind UniCharKind; - -#define UnsByte(c) ((unsigned char)(c)) -#define UCP(u) ((UniCodePoint)(u)) - // ! Needed on Windows (& PC Linux?) for inequalities with literals ito avoid sign extension. - -#ifndef TraceMultiFile - #define TraceMultiFile 0 -#endif - -// ================================================================================================= -// Static Variables -// ================ - -// ================================================================================================= -// Local Utilities -// =============== - -// ------------------------------------------------------------------------------------------------- -// ClassifyCharacter -// ----------------- - -static void -ClassifyCharacter ( XMP_StringPtr fullString, size_t offset, - UniCharKind * charKind, size_t * charSize, UniCodePoint * uniChar ) -{ - *charKind = UCK_normal; // Assume typical case. - - unsigned char currByte = UnsByte ( fullString[offset] ); - - if ( currByte < UnsByte(0x80) ) { - - // ---------------------------------------- - // We've got a single byte ASCII character. - - *charSize = 1; - *uniChar = currByte; - - if ( currByte > UnsByte(0x22) ) { - - if ( currByte == UnsByte(0x2C) ) { - *charKind = UCK_comma; - } else if ( currByte == UnsByte(0x3B) ) { - *charKind = UCK_semicolon; - } else if ( (currByte == UnsByte(0x5B)) || (currByte == UnsByte(0x5D)) ) { - *charKind = UCK_quote; // ! ASCII '[' and ']' are used as quotes in Chinese and Korean. - } - - } else { // currByte <= 0x22 - - if ( currByte == UnsByte(0x22) ) { - *charKind = UCK_quote; - } else if ( currByte == UnsByte(0x21) ) { - *charKind = UCK_normal; - } else if ( currByte == UnsByte(0x20) ) { - *charKind = UCK_space; - } else { - *charKind = UCK_control; - } - - } - - } else { // currByte >= 0x80 - - // --------------------------------------------------------------------------------------- - // We've got a multibyte Unicode character. The first byte has the number of bytes and the - // highest order bits. The other bytes each add 6 more bits. Compose the UTF-32 form so we - // can classify directly with the Unicode code points. Order the upperBits tests to be - // fastest for Japan, probably the most common non-ASCII usage. - - *charSize = 0; - *uniChar = currByte; - while ( (*uniChar & 0x80) != 0 ) { // Count the leading 1 bits in the byte. - ++(*charSize); - *uniChar = *uniChar << 1; - } - XMP_Assert ( (offset + *charSize) <= strlen(fullString) ); - - *uniChar = *uniChar & 0x7F; // Put the character bits in the bottom of uniChar. - *uniChar = *uniChar >> *charSize; - - for ( size_t i = (offset + 1); i < (offset + *charSize); ++i ) { - *uniChar = (*uniChar << 6) | (UnsByte(fullString[i]) & 0x3F); - } - - XMP_Uns32 upperBits = *uniChar >> 8; // First filter on just the high order 24 bits. - - if ( upperBits == 0xFF ) { // U+FFxx - - if ( *uniChar == UCP(0xFF0C) ) { - *charKind = UCK_comma; // U+FF0C, full width comma. - } else if ( *uniChar == UCP(0xFF1B) ) { - *charKind = UCK_semicolon; // U+FF1B, full width semicolon. - } else if ( *uniChar == UCP(0xFF64) ) { - *charKind = UCK_comma; // U+FF64, half width ideographic comma. - } - - } else if ( upperBits == 0xFE ) { // U+FE-- - - if ( *uniChar == UCP(0xFE50) ) { - *charKind = UCK_comma; // U+FE50, small comma. - } else if ( *uniChar == UCP(0xFE51) ) { - *charKind = UCK_comma; // U+FE51, small ideographic comma. - } else if ( *uniChar == UCP(0xFE54) ) { - *charKind = UCK_semicolon; // U+FE54, small semicolon. - } - - } else if ( upperBits == 0x30 ) { // U+30-- - - if ( *uniChar == UCP(0x3000) ) { - *charKind = UCK_space; // U+3000, ideographic space. - } else if ( *uniChar == UCP(0x3001) ) { - *charKind = UCK_comma; // U+3001, ideographic comma. - } else if ( (UCP(0x3008) <= *uniChar) && (*uniChar <= UCP(0x300F)) ) { - *charKind = UCK_quote; // U+3008..U+300F, various quotes. - } else if ( *uniChar == UCP(0x303F) ) { - *charKind = UCK_space; // U+303F, ideographic half fill space. - } else if ( (UCP(0x301D) <= *uniChar) && (*uniChar <= UCP(0x301F)) ) { - *charKind = UCK_quote; // U+301D..U+301F, double prime quotes. - } - - } else if ( upperBits == 0x20 ) { // U+20-- - - if ( (UCP(0x2000) <= *uniChar) && (*uniChar <= UCP(0x200B)) ) { - *charKind = UCK_space; // U+2000..U+200B, en quad through zero width space. - } else if ( *uniChar == UCP(0x2015) ) { - *charKind = UCK_quote; // U+2015, dash quote. - } else if ( (UCP(0x2018) <= *uniChar) && (*uniChar <= UCP(0x201F)) ) { - *charKind = UCK_quote; // U+2018..U+201F, various quotes. - } else if ( *uniChar == UCP(0x2028) ) { - *charKind = UCK_control; // U+2028, line separator. - } else if ( *uniChar == UCP(0x2029) ) { - *charKind = UCK_control; // U+2029, paragraph separator. - } else if ( (*uniChar == UCP(0x2039)) || (*uniChar == UCP(0x203A)) ) { - *charKind = UCK_quote; // U+2039 and U+203A, guillemet quotes. - } - - } else if ( upperBits == 0x06 ) { // U+06-- - - if ( *uniChar == UCP(0x060C) ) { - *charKind = UCK_comma; // U+060C, Arabic comma. - } else if ( *uniChar == UCP(0x061B) ) { - *charKind = UCK_semicolon; // U+061B, Arabic semicolon. - } - - } else if ( upperBits == 0x05 ) { // U+05-- - - if ( *uniChar == UCP(0x055D) ) { - *charKind = UCK_comma; // U+055D, Armenian comma. - } - - } else if ( upperBits == 0x03 ) { // U+03-- - - if ( *uniChar == UCP(0x037E) ) { - *charKind = UCK_semicolon; // U+037E, Greek "semicolon" (really a question mark). - } - - } else if ( upperBits == 0x00 ) { // U+00-- - - if ( (*uniChar == UCP(0x00AB)) || (*uniChar == UCP(0x00BB)) ) { - *charKind = UCK_quote; // U+00AB and U+00BB, guillemet quotes. - } - - } - - } - -} // ClassifyCharacter - - -// ------------------------------------------------------------------------------------------------- -// IsClosingingQuote -// ----------------- - -static inline bool -IsClosingingQuote ( UniCodePoint uniChar, UniCodePoint openQuote, UniCodePoint closeQuote ) -{ - - if ( (uniChar == closeQuote) || - ( (openQuote == UCP(0x301D)) && ((uniChar == UCP(0x301E)) || (uniChar == UCP(0x301F))) ) ) { - return true; - } else { - return false; - } - -} // IsClosingingQuote - - -// ------------------------------------------------------------------------------------------------- -// IsSurroundingQuote -// ------------------ - -static inline bool -IsSurroundingQuote ( UniCodePoint uniChar, UniCodePoint openQuote, UniCodePoint closeQuote ) -{ - - if ( (uniChar == openQuote) || IsClosingingQuote ( uniChar, openQuote, closeQuote ) ) { - return true; - } else { - return false; - } - -} // IsSurroundingQuote - - -// ------------------------------------------------------------------------------------------------- -// GetClosingQuote -// --------------- - -static UniCodePoint -GetClosingQuote ( UniCodePoint openQuote ) -{ - UniCodePoint closeQuote; - - switch ( openQuote ) { - - case UCP(0x0022) : closeQuote = UCP(0x0022); // ! U+0022 is both opening and closing. - break; - case UCP(0x005B) : closeQuote = UCP(0x005D); - break; - case UCP(0x00AB) : closeQuote = UCP(0x00BB); // ! U+00AB and U+00BB are reversible. - break; - case UCP(0x00BB) : closeQuote = UCP(0x00AB); - break; - case UCP(0x2015) : closeQuote = UCP(0x2015); // ! U+2015 is both opening and closing. - break; - case UCP(0x2018) : closeQuote = UCP(0x2019); - break; - case UCP(0x201A) : closeQuote = UCP(0x201B); - break; - case UCP(0x201C) : closeQuote = UCP(0x201D); - break; - case UCP(0x201E) : closeQuote = UCP(0x201F); - break; - case UCP(0x2039) : closeQuote = UCP(0x203A); // ! U+2039 and U+203A are reversible. - break; - case UCP(0x203A) : closeQuote = UCP(0x2039); - break; - case UCP(0x3008) : closeQuote = UCP(0x3009); - break; - case UCP(0x300A) : closeQuote = UCP(0x300B); - break; - case UCP(0x300C) : closeQuote = UCP(0x300D); - break; - case UCP(0x300E) : closeQuote = UCP(0x300F); - break; - case UCP(0x301D) : closeQuote = UCP(0x301F); // ! U+301E also closes U+301D. - break; - default : closeQuote = 0; - break; - - } - - return closeQuote; - -} // GetClosingQuote - - -// ------------------------------------------------------------------------------------------------- -// CodePointToUTF8 -// --------------- - -static void -CodePointToUTF8 ( UniCodePoint uniChar, XMP_VarString & utf8Str ) -{ - size_t i, byteCount; - XMP_Uns8 buffer [8]; - UniCodePoint cpTemp; - - if ( uniChar <= 0x7F ) { - - i = 7; - byteCount = 1; - buffer[7] = char(uniChar); - - } else { - - // --------------------------------------------------------------------------------------- - // Copy the data bits from the low order end to the high order end, include the 0x80 mask. - - i = 8; - cpTemp = uniChar; - while ( cpTemp != 0 ) { - -- i; // Exit with i pointing to the last byte stored. - buffer[i] = UnsByte(0x80) | (UnsByte(cpTemp) & 0x3F); - cpTemp = cpTemp >> 6; - } - byteCount = 8 - i; // The total number of bytes needed. - XMP_Assert ( (2 <= byteCount) && (byteCount <= 6) ); - - // ------------------------------------------------------------------------------------- - // Make sure the high order byte can hold the byte count mask, compute and set the mask. - - size_t bitCount = 0; // The number of data bits in the first byte. - for ( cpTemp = (buffer[i] & UnsByte(0x3F)); cpTemp != 0; cpTemp = cpTemp >> 1 ) bitCount += 1; - if ( bitCount > (8 - (byteCount + 1)) ) byteCount += 1; - - i = 8 - byteCount; // First byte index and mask shift count. - XMP_Assert ( (0 <= i) && (i <= 6) ); - buffer[i] |= (UnsByte(0xFF) << i) & UnsByte(0xFF); // AUDIT: Safe, i is between 0 and 6. - - } - - utf8Str.assign ( (char*)(&buffer[i]), byteCount ); - -} // CodePointToUTF8 - - -// ------------------------------------------------------------------------------------------------- -// ApplyQuotes -// ----------- - -static void -ApplyQuotes ( XMP_VarString * item, UniCodePoint openQuote, UniCodePoint closeQuote, bool allowCommas ) -{ - bool prevSpace = false; - size_t charOffset, charLen; - UniCharKind charKind; - UniCodePoint uniChar; - - // ----------------------------------------------------------------------------------------- - // See if there are any separators in the value. Stop at the first occurrance. This is a bit - // tricky in order to make typical typing work conveniently. The purpose of applying quotes - // is to preserve the values when splitting them back apart. That is CatenateContainerItems - // and SeparateContainerItems must round trip properly. For the most part we only look for - // separators here. Internal quotes, as in -- Irving "Bud" Jones -- won't cause problems in - // the separation. An initial quote will though, it will make the value look quoted. - - charOffset = 0; - ClassifyCharacter ( item->c_str(), charOffset, &charKind, &charLen, &uniChar ); - - if ( charKind != UCK_quote ) { - - for ( charOffset = 0; size_t(charOffset) < item->size(); charOffset += charLen ) { - - ClassifyCharacter ( item->c_str(), charOffset, &charKind, &charLen, &uniChar ); - - if ( charKind == UCK_space ) { - if ( prevSpace ) break; // Multiple spaces are a separator. - prevSpace = true; - } else { - prevSpace = false; - if ( (charKind == UCK_semicolon) || (charKind == UCK_control) ) break; - if ( (charKind == UCK_comma) && (! allowCommas) ) break; - } - - } - - } - - if ( size_t(charOffset) < item->size() ) { - - // -------------------------------------------------------------------------------------- - // Create a quoted copy, doubling any internal quotes that match the outer ones. Internal - // quotes did not stop the "needs quoting" search, but they do need doubling. So we have - // to rescan the front of the string for quotes. Handle the special case of U+301D being - // closed by either U+301E or U+301F. - - XMP_VarString newItem; - size_t splitPoint; - - for ( splitPoint = 0; splitPoint <= charOffset; ++splitPoint ) { - ClassifyCharacter ( item->c_str(), splitPoint, &charKind, &charLen, &uniChar ); - if ( charKind == UCK_quote ) break; - } - - CodePointToUTF8 ( openQuote, newItem ); - newItem.append ( *item, 0, splitPoint ); // Copy the leading "normal" portion. - - for ( charOffset = splitPoint; size_t(charOffset) < item->size(); charOffset += charLen ) { - ClassifyCharacter ( item->c_str(), charOffset, &charKind, &charLen, &uniChar ); - newItem.append ( *item, charOffset, charLen ); - if ( (charKind == UCK_quote) && IsSurroundingQuote ( uniChar, openQuote, closeQuote ) ) { - newItem.append ( *item, charOffset, charLen ); - } - } - - XMP_VarString closeStr; - CodePointToUTF8 ( closeQuote, closeStr ); - newItem.append ( closeStr ); - - *item = newItem; - - } - -} // ApplyQuotes - - -// ------------------------------------------------------------------------------------------------- -// IsInternalProperty -// ------------------ - -// *** Need static checks of the schema prefixes! - -#define IsExternalProperty(s,p) (! IsInternalProperty ( s, p )) - -static bool -IsInternalProperty ( const XMP_VarString & schema, const XMP_VarString & prop ) -{ - bool isInternal = false; - - if ( schema == kXMP_NS_DC ) { - - if ( (prop == "dc:format") || - (prop == "dc:language") ) { - isInternal = true; - } - - } else if ( schema == kXMP_NS_XMP ) { - - if ( (prop == "xmp:BaseURL") || - (prop == "xmp:CreatorTool") || - (prop == "xmp:Format") || - (prop == "xmp:Locale") || - (prop == "xmp:MetadataDate") || - (prop == "xmp:ModifyDate") ) { - isInternal = true; - } - - } else if ( schema == kXMP_NS_PDF ) { - - if ( (prop == "pdf:BaseURL") || - (prop == "pdf:Creator") || - (prop == "pdf:ModDate") || - (prop == "pdf:PDFVersion") || - (prop == "pdf:Producer") ) { - isInternal = true; - } - - } else if ( schema == kXMP_NS_TIFF ) { - - isInternal = true; // ! The TIFF properties are internal by default. - if ( (prop == "tiff:ImageDescription") || // ! ImageDescription, Artist, and Copyright are aliased. - (prop == "tiff:Artist") || - (prop == "tiff:Copyright") ) { - isInternal = false; - } - - } else if ( schema == kXMP_NS_EXIF ) { - - isInternal = true; // ! The EXIF properties are internal by default. - if ( prop == "exif:UserComment" ) isInternal = false; - - } else if ( schema == kXMP_NS_EXIF_Aux ) { - - isInternal = true; // ! The EXIF Aux properties are internal by default. - - } else if ( schema == kXMP_NS_Photoshop ) { - - if ( prop == "photoshop:ICCProfile" ) isInternal = true; - - } else if ( schema == kXMP_NS_CameraRaw ) { - - if ( (prop == "crs:Version") || - (prop == "crs:RawFileName") || - (prop == "crs:ToneCurveName") ) { - isInternal = true; - } - - } else if ( schema == kXMP_NS_AdobeStockPhoto ) { - - isInternal = true; // ! The bmsp schema has only internal properties. - - } else if ( schema == kXMP_NS_XMP_MM ) { - - isInternal = true; // ! The xmpMM schema has only internal properties. - - } else if ( schema == kXMP_NS_XMP_Text ) { - - isInternal = true; // ! The xmpT schema has only internal properties. - - } else if ( schema == kXMP_NS_XMP_PagedFile ) { - - isInternal = true; // ! The xmpTPg schema has only internal properties. - - } else if ( schema == kXMP_NS_XMP_Graphics ) { - - isInternal = true; // ! The xmpG schema has only internal properties. - - } else if ( schema == kXMP_NS_XMP_Image ) { - - isInternal = true; // ! The xmpGImg schema has only internal properties. - - } else if ( schema == kXMP_NS_XMP_Font ) { - - isInternal = true; // ! The stFNT schema has only internal properties. - - } - - return isInternal; - -} // IsInternalProperty - - -// ------------------------------------------------------------------------------------------------- -// RemoveSchemaChildren -// -------------------- - -static void -RemoveSchemaChildren ( XMP_NodePtrPos schemaPos, bool doAll ) -{ - XMP_Node * schemaNode = *schemaPos; - XMP_Assert ( XMP_NodeIsSchema ( schemaNode->options ) ); - - // ! Iterate backwards to reduce shuffling as children are erased and to simplify the logic for - // ! denoting the current child. (Erasing child n makes the old n+1 now be n.) - - size_t propCount = schemaNode->children.size(); - XMP_NodePtrPos beginPos = schemaNode->children.begin(); - - for ( size_t propNum = propCount-1, propLim = (size_t)(-1); propNum != propLim; --propNum ) { - XMP_NodePtrPos currProp = beginPos + propNum; - if ( doAll || IsExternalProperty ( schemaNode->name, (*currProp)->name ) ) { - delete *currProp; // ! Both delete the node and erase the pointer from the parent. - schemaNode->children.erase ( currProp ); - } - } - - if ( schemaNode->children.empty() ) { - XMP_Node * tree = schemaNode->parent; - tree->children.erase ( schemaPos ); - delete schemaNode; - } - -} // RemoveSchemaChildren - - -// ------------------------------------------------------------------------------------------------- -// ItemValuesMatch -// --------------- -// -// Does the value comparisons for array merging as part of XMPUtils::AppendProperties. - -static bool -ItemValuesMatch ( const XMP_Node * leftNode, const XMP_Node * rightNode ) -{ - const XMP_OptionBits leftForm = leftNode->options & kXMP_PropCompositeMask; - const XMP_OptionBits rightForm = leftNode->options & kXMP_PropCompositeMask; - - if ( leftForm != rightForm ) return false; - - if ( leftForm == 0 ) { - - // Simple nodes, check the values and xml:lang qualifiers. - - if ( leftNode->value != rightNode->value ) return false; - if ( (leftNode->options & kXMP_PropHasLang) != (rightNode->options & kXMP_PropHasLang) ) return false; - if ( leftNode->options & kXMP_PropHasLang ) { - if ( leftNode->qualifiers[0]->value != rightNode->qualifiers[0]->value ) return false; - } - - } else if ( leftForm == kXMP_PropValueIsStruct ) { - - // Struct nodes, see if all fields match, ignoring order. - - if ( leftNode->children.size() != rightNode->children.size() ) return false; - - for ( size_t leftNum = 0, leftLim = leftNode->children.size(); leftNum != leftLim; ++leftNum ) { - const XMP_Node * leftField = leftNode->children[leftNum]; - const XMP_Node * rightField = FindConstChild ( rightNode, leftField->name.c_str() ); - if ( (rightField == 0) || (! ItemValuesMatch ( leftField, rightField )) ) return false; - } - - } else { - - // Array nodes, see if the "leftNode" values are present in the "rightNode", ignoring order, duplicates, - // and extra values in the rightNode-> The rightNode is the destination for AppendProperties. - - XMP_Assert ( leftForm & kXMP_PropValueIsArray ); - - for ( size_t leftNum = 0, leftLim = leftNode->children.size(); leftNum != leftLim; ++leftNum ) { - - const XMP_Node * leftItem = leftNode->children[leftNum]; - - size_t rightNum, rightLim; - for ( rightNum = 0, rightLim = rightNode->children.size(); rightNum != rightLim; ++rightNum ) { - const XMP_Node * rightItem = rightNode->children[rightNum]; - if ( ItemValuesMatch ( leftItem, rightItem ) ) break; - } - if ( rightNum == rightLim ) return false; - - } - - } - - return true; // All of the checks passed. - -} // ItemValuesMatch - - -// ------------------------------------------------------------------------------------------------- -// AppendSubtree -// ------------- -// -// The main implementation of XMPUtils::AppendProperties. See the description in TXMPMeta.hpp. - -static void -AppendSubtree ( const XMP_Node * sourceNode, XMP_Node * destParent, const bool replaceOld, const bool deleteEmpty ) -{ - XMP_NodePtrPos destPos; - XMP_Node * destNode = FindChildNode ( destParent, sourceNode->name.c_str(), kXMP_ExistingOnly, &destPos ); - - bool valueIsEmpty = false; - if ( deleteEmpty ) { - if ( XMP_PropIsSimple ( sourceNode->options ) ) { - valueIsEmpty = sourceNode->value.empty(); - } else { - valueIsEmpty = sourceNode->children.empty(); - } - } - - if ( deleteEmpty & valueIsEmpty ) { - - if ( destNode != 0 ) { - delete ( destNode ); - destParent->children.erase ( destPos ); - } - - } else if ( destNode == 0 ) { - - // The one easy case, the destination does not exist. - CloneSubtree ( sourceNode, destParent ); - - } else if ( replaceOld ) { - - // The destination exists and should be replaced. - - destNode->value = sourceNode->value; // *** Should use SetNode. - destNode->options = sourceNode->options; - destNode->RemoveChildren(); - destNode->RemoveQualifiers(); - CloneOffspring ( sourceNode, destNode ); - - #if 0 // *** XMP_DebugBuild - destNode->_valuePtr = destNode->value.c_str(); - #endif - - } else { - - // The destination exists and is not totally replaced. Structs and arrays are merged. - - XMP_OptionBits sourceForm = sourceNode->options & kXMP_PropCompositeMask; - XMP_OptionBits destForm = destNode->options & kXMP_PropCompositeMask; - if ( sourceForm != destForm ) return; - - if ( sourceForm == kXMP_PropValueIsStruct ) { - - // To merge a struct process the fields recursively. E.g. add simple missing fields. The - // recursive call to AppendSubtree will handle deletion for fields with empty values. - - for ( size_t sourceNum = 0, sourceLim = sourceNode->children.size(); sourceNum != sourceLim; ++sourceNum ) { - const XMP_Node * sourceField = sourceNode->children[sourceNum]; - AppendSubtree ( sourceField, destNode, replaceOld, deleteEmpty ); - if ( deleteEmpty && destNode->children.empty() ) { - delete ( destNode ); - destParent->children.erase ( destPos ); - } - } - - } else if ( sourceForm & kXMP_PropArrayIsAltText ) { - - // Merge AltText arrays by the xml:lang qualifiers. Make sure x-default is first. Make a - // special check for deletion of empty values. Meaningful in AltText arrays because the - // xml:lang qualifier provides unambiguous source/dest correspondence. - - for ( size_t sourceNum = 0, sourceLim = sourceNode->children.size(); sourceNum != sourceLim; ++sourceNum ) { - - const XMP_Node * sourceItem = sourceNode->children[sourceNum]; - if ( sourceItem->qualifiers.empty() || (sourceItem->qualifiers[0]->name != "xml:lang") ) continue; - - XMP_Index destIndex = LookupLangItem ( destNode, sourceItem->qualifiers[0]->value ); - - if ( deleteEmpty && sourceItem->value.empty() ) { - - if ( destIndex != -1 ) { - delete ( destNode->children[destIndex] ); - destNode->children.erase ( destNode->children.begin() + destIndex ); - if ( destNode->children.empty() ) { - delete ( destNode ); - destParent->children.erase ( destPos ); - } - } - - } else { - - if ( destIndex != -1 ) continue; // Not replacing, keep the existing item. - - if ( (sourceItem->qualifiers[0]->value != "x-default") || destNode->children.empty() ) { - CloneSubtree ( sourceItem, destNode ); - } else { - XMP_Node * destItem = new XMP_Node ( destNode, sourceItem->name, sourceItem->value, sourceItem->options ); - CloneOffspring ( sourceItem, destItem ); - destNode->children.insert ( destNode->children.begin(), destItem ); - } - - } - - } - - } else if ( sourceForm & kXMP_PropValueIsArray ) { - - // Merge other arrays by item values. Don't worry about order or duplicates. Source - // items with empty values do not cause deletion, that conflicts horribly with merging. - - for ( size_t sourceNum = 0, sourceLim = sourceNode->children.size(); sourceNum != sourceLim; ++sourceNum ) { - const XMP_Node * sourceItem = sourceNode->children[sourceNum]; - - size_t destNum, destLim; - for ( destNum = 0, destLim = destNode->children.size(); destNum != destLim; ++destNum ) { - const XMP_Node * destItem = destNode->children[destNum]; - if ( ItemValuesMatch ( sourceItem, destItem ) ) break; - } - if ( destNum == destLim ) CloneSubtree ( sourceItem, destNode ); - - } - - } - - } - -} // AppendSubtree - - -// ================================================================================================= -// Class Static Functions -// ====================== - -// ------------------------------------------------------------------------------------------------- -// CatenateArrayItems -// ------------------ - -/* class static */ void -XMPUtils::CatenateArrayItems ( const XMPMeta & xmpObj, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr separator, - XMP_StringPtr quotes, - XMP_OptionBits options, - XMP_StringPtr * catedStr, - XMP_StringLen * catedLen ) -{ - XMP_Assert ( (schemaNS != 0) && (arrayName != 0) ); // ! Enforced by wrapper. - XMP_Assert ( (separator != 0) && (quotes != 0) && (catedStr != 0) && (catedLen != 0) ); // ! Enforced by wrapper. - - size_t strLen, strPos, charLen; - UniCharKind charKind; - UniCodePoint currUCP, openQuote, closeQuote; - - const bool allowCommas = ((options & kXMPUtil_AllowCommas) != 0); - - const XMP_Node * arrayNode = 0; // ! Move up to avoid gcc complaints. - XMP_OptionBits arrayForm = 0; - const XMP_Node * currItem = 0; - - // Make sure the separator is OK. It must be one semicolon surrounded by zero or more spaces. - // Any of the recognized semicolons or spaces are allowed. - - strPos = 0; - strLen = strlen ( separator ); - bool haveSemicolon = false; - - while ( strPos < strLen ) { - ClassifyCharacter ( separator, strPos, &charKind, &charLen, &currUCP ); - strPos += charLen; - if ( charKind == UCK_semicolon ) { - if ( haveSemicolon ) XMP_Throw ( "Separator can have only one semicolon", kXMPErr_BadParam ); - haveSemicolon = true; - } else if ( charKind != UCK_space ) { - XMP_Throw ( "Separator can have only spaces and one semicolon", kXMPErr_BadParam ); - } - }; - if ( ! haveSemicolon ) XMP_Throw ( "Separator must have one semicolon", kXMPErr_BadParam ); - - // Make sure the open and close quotes are a legitimate pair. - - strLen = strlen ( quotes ); - ClassifyCharacter ( quotes, 0, &charKind, &charLen, &openQuote ); - if ( charKind != UCK_quote ) XMP_Throw ( "Invalid quoting character", kXMPErr_BadParam ); - - if ( charLen == strLen ) { - closeQuote = openQuote; - } else { - strPos = charLen; - ClassifyCharacter ( quotes, strPos, &charKind, &charLen, &closeQuote ); - if ( charKind != UCK_quote ) XMP_Throw ( "Invalid quoting character", kXMPErr_BadParam ); - if ( (strPos + charLen) != strLen ) XMP_Throw ( "Quoting string too long", kXMPErr_BadParam ); - } - if ( closeQuote != GetClosingQuote ( openQuote ) ) XMP_Throw ( "Mismatched quote pair", kXMPErr_BadParam ); - - // Return an empty result if the array does not exist, hurl if it isn't the right form. - - sCatenatedItems->erase(); - - XMP_ExpandedXPath arrayPath; - ExpandXPath ( schemaNS, arrayName, &arrayPath ); - - arrayNode = FindConstNode ( &xmpObj.tree, arrayPath ); - if ( arrayNode == 0 ) goto EXIT; // ! Need to set the output pointer and length. - - arrayForm = arrayNode->options & kXMP_PropCompositeMask; - if ( (! (arrayForm & kXMP_PropValueIsArray)) || (arrayForm & kXMP_PropArrayIsAlternate) ) { - XMP_Throw ( "Named property must be non-alternate array", kXMPErr_BadParam ); - } - if ( arrayNode->children.empty() ) goto EXIT; // ! Need to set the output pointer and length. - - // Build the result, quoting the array items, adding separators. Hurl if any item isn't simple. - // Start the result with the first value, then add the rest with a preceeding separator. - - currItem = arrayNode->children[0]; - - if ( (currItem->options & kXMP_PropCompositeMask) != 0 ) XMP_Throw ( "Array items must be simple", kXMPErr_BadParam ); - *sCatenatedItems = currItem->value; - ApplyQuotes ( sCatenatedItems, openQuote, closeQuote, allowCommas ); - - for ( size_t itemNum = 1, itemLim = arrayNode->children.size(); itemNum != itemLim; ++itemNum ) { - const XMP_Node * currItem = arrayNode->children[itemNum]; - if ( (currItem->options & kXMP_PropCompositeMask) != 0 ) XMP_Throw ( "Array items must be simple", kXMPErr_BadParam ); - XMP_VarString tempStr ( currItem->value ); - ApplyQuotes ( &tempStr, openQuote, closeQuote, allowCommas ); - *sCatenatedItems += separator; - *sCatenatedItems += tempStr; - } - -EXIT: - *catedStr = sCatenatedItems->c_str(); - *catedLen = sCatenatedItems->size(); - -} // CatenateArrayItems - - -// ------------------------------------------------------------------------------------------------- -// SeparateArrayItems -// ------------------ - -/* class static */ void -XMPUtils::SeparateArrayItems ( XMPMeta * xmpObj, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_OptionBits options, - XMP_StringPtr catedStr ) -{ - XMP_Assert ( (schemaNS != 0) && (arrayName != 0) && (catedStr != 0) ); // ! Enforced by wrapper. - - XMP_VarString itemValue; - size_t itemStart, itemEnd; - size_t nextSize, charSize = 0; // Avoid VS uninit var warnings. - UniCharKind nextKind, charKind = UCK_normal; - UniCodePoint nextChar, uniChar = 0; - - // Extract "special" option bits, verify and normalize the others. - - bool preserveCommas = false; - if ( options & kXMPUtil_AllowCommas ) { - preserveCommas = true; - options ^= kXMPUtil_AllowCommas; - } - - options = VerifySetOptions ( options, 0 ); // Keep a zero value, has special meaning below. - if ( options & ~kXMP_PropArrayFormMask ) XMP_Throw ( "Options can only provide array form", kXMPErr_BadOptions ); - - // Find the array node, make sure it is OK. Move the current children aside, to be readded later if kept. - - XMP_ExpandedXPath arrayPath; - ExpandXPath ( schemaNS, arrayName, &arrayPath ); - XMP_Node * arrayNode = FindNode ( &xmpObj->tree, arrayPath, kXMP_ExistingOnly ); - - if ( arrayNode != 0 ) { - // The array exists, make sure the form is compatible. Zero arrayForm means take what exists. - XMP_OptionBits arrayForm = arrayNode->options & kXMP_PropArrayFormMask; - if ( (arrayForm == 0) || (arrayForm & kXMP_PropArrayIsAlternate) ) { - XMP_Throw ( "Named property must be non-alternate array", kXMPErr_BadXPath ); - } - if ( (options != 0) && (options != arrayForm) ) XMP_Throw ( "Mismatch of specified and existing array form", kXMPErr_BadXPath ); // *** Right error? - } else { - // The array does not exist, try to create it. - arrayNode = FindNode ( &xmpObj->tree, arrayPath, kXMP_CreateNodes, (options | kXMP_PropValueIsArray) ); - if ( arrayNode == 0 ) XMP_Throw ( "Failed to create named array", kXMPErr_BadXPath ); - } - - XMP_NodeOffspring oldChildren ( arrayNode->children ); - size_t oldChildCount = oldChildren.size(); - arrayNode->children.clear(); - - // Extract the item values one at a time, until the whole input string is done. Be very careful - // in the extraction about the string positions. They are essentially byte pointers, while the - // contents are UTF-8. Adding or subtracting 1 does not necessarily move 1 Unicode character! - - size_t endPos = strlen ( catedStr ); - - itemEnd = 0; - while ( itemEnd < endPos ) { - - // Skip any leading spaces and separation characters. Always skip commas here. They can be - // kept when within a value, but not when alone between values. - - for ( itemStart = itemEnd; itemStart < endPos; itemStart += charSize ) { - ClassifyCharacter ( catedStr, itemStart, &charKind, &charSize, &uniChar ); - if ( (charKind == UCK_normal) || (charKind == UCK_quote) ) break; - } - if ( itemStart >= endPos ) break; - - if ( charKind != UCK_quote ) { - - // This is not a quoted value. Scan for the end, create an array item from the substring. - - for ( itemEnd = itemStart; itemEnd < endPos; itemEnd += charSize ) { - - ClassifyCharacter ( catedStr, itemEnd, &charKind, &charSize, &uniChar ); - - if ( (charKind == UCK_normal) || (charKind == UCK_quote) ) continue; - if ( (charKind == UCK_comma) && preserveCommas ) continue; - if ( charKind != UCK_space ) break; - - if ( (itemEnd + charSize) >= endPos ) break; // Anything left? - ClassifyCharacter ( catedStr, (itemEnd+charSize), &nextKind, &nextSize, &nextChar ); - if ( (nextKind == UCK_normal) || (nextKind == UCK_quote) ) continue; - if ( (nextKind == UCK_comma) && preserveCommas ) continue; - break; // Have multiple spaces, or a space followed by a separator. - - } - - itemValue.assign ( catedStr, itemStart, (itemEnd - itemStart) ); - - } else { - - // Accumulate quoted values into a local string, undoubling internal quotes that - // match the surrounding quotes. Do not undouble "unmatching" quotes. - - UniCodePoint openQuote = uniChar; - UniCodePoint closeQuote = GetClosingQuote ( openQuote ); - - itemStart += charSize; // Skip the opening quote; - itemValue.erase(); - - for ( itemEnd = itemStart; itemEnd < endPos; itemEnd += charSize ) { - - ClassifyCharacter ( catedStr, itemEnd, &charKind, &charSize, &uniChar ); - - if ( (charKind != UCK_quote) || (! IsSurroundingQuote ( uniChar, openQuote, closeQuote)) ) { - - // This is not a matching quote, just append it to the item value. - itemValue.append ( catedStr, itemEnd, charSize ); - - } else { - - // This is a "matching" quote. Is it doubled, or the final closing quote? Tolerate - // various edge cases like undoubled opening (non-closing) quotes, or end of input. - - if ( (itemEnd + charSize) < endPos ) { - ClassifyCharacter ( catedStr, itemEnd+charSize, &nextKind, &nextSize, &nextChar ); - } else { - nextKind = UCK_semicolon; nextSize = 0; nextChar = 0x3B; - } - - if ( uniChar == nextChar ) { - // This is doubled, copy it and skip the double. - itemValue.append ( catedStr, itemEnd, charSize ); - itemEnd += nextSize; // Loop will add in charSize. - } else if ( ! IsClosingingQuote ( uniChar, openQuote, closeQuote ) ) { - // This is an undoubled, non-closing quote, copy it. - itemValue.append ( catedStr, itemEnd, charSize ); - } else { - // This is an undoubled closing quote, skip it and exit the loop. - itemEnd += charSize; - break; - } - - } - - } // Loop to accumulate the quoted value. - - } - - // Add the separated item to the array. Keep a matching old value in case it had separators. - - size_t oldChild; - for ( oldChild = 0; oldChild < oldChildCount; ++oldChild ) { - if ( (oldChildren[oldChild] != 0) && (itemValue == oldChildren[oldChild]->value) ) break; - } - - XMP_Node * newItem = 0; - if ( oldChild == oldChildCount ) { - newItem = new XMP_Node ( arrayNode, kXMP_ArrayItemName, itemValue.c_str(), 0 ); - } else { - newItem = oldChildren[oldChild]; - oldChildren[oldChild] = 0; // ! Don't match again, let duplicates be seen. - } - arrayNode->children.push_back ( newItem ); - - } // Loop through all of the returned items. - - // Delete any of the old children that were not kept. - for ( size_t i = 0; i < oldChildCount; ++i ) { - if ( oldChildren[i] != 0 ) delete oldChildren[i]; - } - -} // SeparateArrayItems - - -// ------------------------------------------------------------------------------------------------- -// RemoveProperties -// ---------------- - -/* class static */ void -XMPUtils::RemoveProperties ( XMPMeta * xmpObj, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_OptionBits options ) -{ - XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // ! Enforced by wrapper. - - const bool doAll = XMP_TestOption (options, kXMPUtil_DoAllProperties ); - const bool includeAliases = XMP_TestOption ( options, kXMPUtil_IncludeAliases ); - - if ( *propName != 0 ) { - - // Remove just the one indicated property. This might be an alias, the named schema might - // not actually exist. So don't lookup the schema node. - - if ( *schemaNS == 0 ) XMP_Throw ( "Property name requires schema namespace", kXMPErr_BadParam ); - - XMP_ExpandedXPath expPath; - ExpandXPath ( schemaNS, propName, &expPath ); - - XMP_NodePtrPos propPos; - XMP_Node * propNode = FindNode ( &(xmpObj->tree), expPath, kXMP_ExistingOnly, kXMP_NoOptions, &propPos ); - if ( propNode != 0 ) { - if ( doAll || IsExternalProperty ( expPath[kSchemaStep].step, expPath[kRootPropStep].step ) ) { - XMP_Node * parent = propNode->parent; // *** Should have XMP_Node::RemoveChild(pos). - delete propNode; // ! Both delete the node and erase the pointer from the parent. - parent->children.erase ( propPos ); - DeleteEmptySchema ( parent ); - } - } - - } else if ( *schemaNS != 0 ) { - - // Remove all properties from the named schema. Optionally include aliases, in which case - // there might not be an actual schema node. - - XMP_NodePtrPos schemaPos; - XMP_Node * schemaNode = FindSchemaNode ( &xmpObj->tree, schemaNS, kXMP_ExistingOnly, &schemaPos ); - if ( schemaNode != 0 ) RemoveSchemaChildren ( schemaPos, doAll ); - - if ( includeAliases ) { - - // We're removing the aliases also. Look them up by their namespace prefix. Yes, the - // alias map is sorted so we could process just that portion. But that takes more code - // and the extra speed isn't worth it. (Plus this way we avoid a dependence on the map - // implementation.) Lookup the XMP node from the alias, to make sure the actual exists. - - XMP_StringPtr nsPrefix; - XMP_StringLen nsLen; - (void) XMPMeta::GetNamespacePrefix ( schemaNS, &nsPrefix, &nsLen ); - - XMP_AliasMapPos currAlias = sRegisteredAliasMap->begin(); - XMP_AliasMapPos endAlias = sRegisteredAliasMap->end(); - - for ( ; currAlias != endAlias; ++currAlias ) { - if ( strncmp ( currAlias->first.c_str(), nsPrefix, nsLen ) == 0 ) { - XMP_NodePtrPos actualPos; - XMP_Node * actualProp = FindNode ( &xmpObj->tree, currAlias->second, kXMP_ExistingOnly, kXMP_NoOptions, &actualPos ); - if ( actualProp != 0 ) { - XMP_Node * rootProp = actualProp; - while ( ! XMP_NodeIsSchema ( rootProp->parent->options ) ) rootProp = rootProp->parent; - if ( doAll || IsExternalProperty ( rootProp->parent->name, rootProp->name ) ) { - XMP_Node * parent = actualProp->parent; - delete actualProp; // ! Both delete the node and erase the pointer from the parent. - parent->children.erase ( actualPos ); - DeleteEmptySchema ( parent ); - } - } - } - } - - } - - } else { - - // Remove all appropriate properties from all schema. In this case we don't have to be - // concerned with aliases, they are handled implicitly from the actual properties. - - // ! Iterate backwards to reduce shuffling if schema are erased and to simplify the logic - // ! for denoting the current schema. (Erasing schema n makes the old n+1 now be n.) - - size_t schemaCount = xmpObj->tree.children.size(); - XMP_NodePtrPos beginPos = xmpObj->tree.children.begin(); - - for ( size_t schemaNum = schemaCount-1, schemaLim = (size_t)(-1); schemaNum != schemaLim; --schemaNum ) { - XMP_NodePtrPos currSchema = beginPos + schemaNum; - RemoveSchemaChildren ( currSchema, doAll ); - } - - } - -} // RemoveProperties - - -// ------------------------------------------------------------------------------------------------- -// AppendProperties -// ---------------- - -/* class static */ void -XMPUtils::AppendProperties ( const XMPMeta & source, - XMPMeta * dest, - XMP_OptionBits options ) -{ - XMP_Assert ( dest != 0 ); // ! Enforced by wrapper. - - const bool doAll = ((options & kXMPUtil_DoAllProperties) != 0); - const bool replaceOld = ((options & kXMPUtil_ReplaceOldValues) != 0); - const bool deleteEmpty = ((options & kXMPUtil_DeleteEmptyValues) != 0); - - for ( size_t schemaNum = 0, schemaLim = source.tree.children.size(); schemaNum != schemaLim; ++schemaNum ) { - - const XMP_Node * sourceSchema = source.tree.children[schemaNum]; - - // Make sure we have a destination schema node. Remember if it is newly created. - - XMP_Node * destSchema = FindSchemaNode ( &dest->tree, sourceSchema->name.c_str(), kXMP_ExistingOnly ); - const bool newDestSchema = (destSchema == 0); - if ( newDestSchema ) { - destSchema = new XMP_Node ( &dest->tree, sourceSchema->name, sourceSchema->value, kXMP_SchemaNode ); - dest->tree.children.push_back ( destSchema ); - } - - // Process the source schema's children. Do this backwards in case deleteEmpty is set. - - for ( long propNum = ((long)sourceSchema->children.size() - 1); propNum >= 0; --propNum ) { - const XMP_Node * sourceProp = sourceSchema->children[propNum]; - if ( doAll || IsExternalProperty ( sourceSchema->name, sourceProp->name ) ) { - AppendSubtree ( sourceProp, destSchema, replaceOld, deleteEmpty ); -// *** RemoveMultiValueInfo ( dest, sourceSchema->name.c_str(), sourceProp->name.c_str() ); - } - } - - if ( destSchema->children.empty() ) { - if ( newDestSchema ) { - delete ( destSchema ); - dest->tree.children.pop_back(); - } else if ( deleteEmpty ) { - DeleteEmptySchema ( destSchema ); - } - } - - } - -} // AppendProperties - - -// ------------------------------------------------------------------------------------------------- -// DuplicateSubtree -// ---------------- - -/* class static */ void -XMPUtils::DuplicateSubtree ( const XMPMeta & source, - XMPMeta * dest, - XMP_StringPtr sourceNS, - XMP_StringPtr sourceRoot, - XMP_StringPtr destNS, - XMP_StringPtr destRoot, - XMP_OptionBits options ) -{ - options = options; // Avoid unused parameter warning. - - bool fullSourceTree = false; - bool fullDestTree = false; - - XMP_ExpandedXPath sourcePath, destPath; - - const XMP_Node * sourceNode = 0; - XMP_Node * destNode = 0; - - XMP_Assert ( (sourceNS != 0) && (*sourceNS != 0) ); - XMP_Assert ( (sourceRoot != 0) && (*sourceRoot != 0) ); - XMP_Assert ( (dest != 0) && (destNS != 0) && (destRoot != 0) ); - - if ( *destNS == 0 ) destNS = sourceNS; - if ( *destRoot == 0 ) destRoot = sourceRoot; - - if ( XMP_LitMatch ( sourceNS, "*" ) ) fullSourceTree = true; - if ( XMP_LitMatch ( destNS, "*" ) ) fullDestTree = true; - - if ( (&source == dest) && (fullSourceTree | fullDestTree) ) { - XMP_Throw ( "Can't duplicate tree onto itself", kXMPErr_BadParam ); - } - - if ( fullSourceTree & fullDestTree ) XMP_Throw ( "Use Clone for full tree to full tree", kXMPErr_BadParam ); - - if ( fullSourceTree ) { - - // The destination must be an existing empty struct, copy all of the source top level as fields. - - ExpandXPath ( destNS, destRoot, &destPath ); - destNode = FindNode ( &dest->tree, destPath, kXMP_ExistingOnly ); - - if ( (destNode == 0) || (! XMP_PropIsStruct ( destNode->options )) ) { - XMP_Throw ( "Destination must be an existing struct", kXMPErr_BadXPath ); - } - - if ( ! destNode->children.empty() ) { - if ( options & kXMP_DeleteExisting ) { - destNode->RemoveChildren(); - } else { - XMP_Throw ( "Destination must be an empty struct", kXMPErr_BadXPath ); - } - } - - for ( size_t schemaNum = 0, schemaLim = source.tree.children.size(); schemaNum < schemaLim; ++schemaNum ) { - - const XMP_Node * currSchema = source.tree.children[schemaNum]; - - for ( size_t propNum = 0, propLim = currSchema->children.size(); propNum < propLim; ++propNum ) { - sourceNode = currSchema->children[propNum]; - XMP_Node * copyNode = new XMP_Node ( destNode, sourceNode->name, sourceNode->value, sourceNode->options ); - destNode->children.push_back ( copyNode ); - CloneOffspring ( sourceNode, copyNode ); - } - - } - - } else if ( fullDestTree ) { - - // The source node must be an existing struct, copy all of the fields to the dest top level. - - XMP_ExpandedXPath sourcePath; - ExpandXPath ( sourceNS, sourceRoot, &sourcePath ); - sourceNode = FindConstNode ( &source.tree, sourcePath ); - - if ( (sourceNode == 0) || (! XMP_PropIsStruct ( sourceNode->options )) ) { - XMP_Throw ( "Source must be an existing struct", kXMPErr_BadXPath ); - } - - destNode = &dest->tree; - - if ( ! destNode->children.empty() ) { - if ( options & kXMP_DeleteExisting ) { - destNode->RemoveChildren(); - } else { - XMP_Throw ( "Destination tree must be empty", kXMPErr_BadXPath ); - } - } - - std::string nsPrefix; - XMP_StringPtr nsURI; - XMP_StringLen nsLen; - - for ( size_t fieldNum = 0, fieldLim = sourceNode->children.size(); fieldNum < fieldLim; ++fieldNum ) { - - const XMP_Node * currField = sourceNode->children[fieldNum]; - - size_t colonPos = currField->name.find ( ':' ); - nsPrefix.assign ( currField->name.c_str(), colonPos ); - bool nsOK = XMPMeta::GetNamespaceURI ( nsPrefix.c_str(), &nsURI, &nsLen ); - if ( ! nsOK ) XMP_Throw ( "Source field namespace is not global", kXMPErr_BadSchema ); - - XMP_Node * destSchema = FindSchemaNode ( &dest->tree, nsURI, kXMP_CreateNodes ); - if ( destSchema == 0 ) XMP_Throw ( "Failed to find destination schema", kXMPErr_BadSchema ); - - XMP_Node * copyNode = new XMP_Node ( destSchema, currField->name, currField->value, currField->options ); - destSchema->children.push_back ( copyNode ); - CloneOffspring ( currField, copyNode ); - - } - - } else { - - // Find the root nodes for the source and destination subtrees. - - ExpandXPath ( sourceNS, sourceRoot, &sourcePath ); - ExpandXPath ( destNS, destRoot, &destPath ); - - sourceNode = FindConstNode ( &source.tree, sourcePath ); - if ( sourceNode == 0 ) XMP_Throw ( "Can't find source subtree", kXMPErr_BadXPath ); - - destNode = FindNode ( &dest->tree, destPath, kXMP_ExistingOnly ); // Dest must not yet exist. - if ( destNode != 0 ) XMP_Throw ( "Destination subtree must not exist", kXMPErr_BadXPath ); - - destNode = FindNode ( &dest->tree, destPath, kXMP_CreateNodes ); // Now create the dest. - if ( destNode == 0 ) XMP_Throw ( "Can't create destination root node", kXMPErr_BadXPath ); - - // Make sure the destination is not within the source! The source can't be inside the destination - // because the source already existed and the destination was just created. - - if ( &source == dest ) { - for ( XMP_Node * testNode = destNode; testNode != 0; testNode = testNode->parent ) { - if ( testNode == sourceNode ) { - // *** delete the just-created dest root node - XMP_Throw ( "Destination subtree is within the source subtree", kXMPErr_BadXPath ); - } - } - } - - // *** Could use a CloneTree util here and maybe elsewhere. - - destNode->value = sourceNode->value; // *** Should use SetNode. - destNode->options = sourceNode->options; - CloneOffspring ( sourceNode, destNode ); - - } - -} // DuplicateSubtree - - -// ================================================================================================= diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPUtils.cpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPUtils.cpp deleted file mode 100644 index 2458b3b9e9f..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPUtils.cpp +++ /dev/null @@ -1,2132 +0,0 @@ -// ================================================================================================= -// Copyright 2002-2007 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#include "XMP_Environment.h" // ! This must be the first include! -#include "XMPCore_Impl.hpp" - -#include "XMPUtils.hpp" - -#include "MD5.h" - -#include - -#include -#include -#include -#include -#include - -#include // For snprintf. - -#if XMP_WinBuild -#ifdef _MSC_VER - #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) - #pragma warning ( disable : 4996 ) // '...' was declared deprecated -#endif -#endif - - -// ================================================================================================= -// Local Types and Constants -// ========================= - -static const char * sBase64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - -// ================================================================================================= -// Static Variables -// ================ - -XMP_VarString * sComposedPath = 0; // *** Only really need 1 string. Shrink periodically? -XMP_VarString * sConvertedValue = 0; -XMP_VarString * sBase64Str = 0; -XMP_VarString * sCatenatedItems = 0; -XMP_VarString * sStandardXMP = 0; -XMP_VarString * sExtendedXMP = 0; -XMP_VarString * sExtendedDigest = 0; - -// ================================================================================================= -// Local Utilities -// =============== - - -// ------------------------------------------------------------------------------------------------- -// ANSI Time Functions -// ------------------- -// -// A bit of hackery to use the best available time functions. Mac and UNIX have thread safe versions -// of gmtime and localtime. On Mac the CodeWarrior functions are buggy, use Apple's. - -#if XMP_UNIXBuild - - typedef time_t ansi_tt; - typedef struct tm ansi_tm; - - #define ansi_time time - #define ansi_mktime mktime - #define ansi_difftime difftime - - #define ansi_gmtime gmtime_r - #define ansi_localtime localtime_r - -#elif XMP_WinBuild - - // ! VS.Net 2003 (VC7) does not provide thread safe versions of gmtime and localtime. - // ! VS.Net 2005 (VC8) inverts the parameters for the safe versions of gmtime and localtime. - - typedef time_t ansi_tt; - typedef struct tm ansi_tm; - - #define ansi_time time - #define ansi_mktime mktime - #define ansi_difftime difftime - - #if defined(_MSC_VER) && (_MSC_VER >= 1400) - #define ansi_gmtime(tt,tm) gmtime_s ( tm, tt ) - #define ansi_localtime(tt,tm) localtime_s ( tm, tt ) - #else - static inline void ansi_gmtime ( const ansi_tt * ttTime, ansi_tm * tmTime ) - { - ansi_tm * tmx = gmtime ( ttTime ); // ! Hope that there is no race! - if ( tmx == 0 ) XMP_Throw ( "Failure from ANSI C gmtime function", kXMPErr_ExternalFailure ); - *tmTime = *tmx; - } - static inline void ansi_localtime ( const ansi_tt * ttTime, ansi_tm * tmTime ) - { - ansi_tm * tmx = localtime ( ttTime ); // ! Hope that there is no race! - if ( tmx == 0 ) XMP_Throw ( "Failure from ANSI C localtime function", kXMPErr_ExternalFailure ); - *tmTime = *tmx; - } - #endif - -#elif XMP_MacBuild - - #if ! __MWERKS__ - - typedef time_t ansi_tt; - typedef struct tm ansi_tm; - - #define ansi_time time - #define ansi_mktime mktime - #define ansi_difftime difftime - - #define ansi_gmtime gmtime_r - #define ansi_localtime localtime_r - - #else - - // ! The CW versions are buggy. Use Apple's code, time_t, and "struct tm". - - #include - - typedef _BSD_TIME_T_ ansi_tt; - - typedef struct apple_tm { - int tm_sec; /* seconds after the minute [0-60] */ - int tm_min; /* minutes after the hour [0-59] */ - int tm_hour; /* hours since midnight [0-23] */ - int tm_mday; /* day of the month [1-31] */ - int tm_mon; /* months since January [0-11] */ - int tm_year; /* years since 1900 */ - int tm_wday; /* days since Sunday [0-6] */ - int tm_yday; /* days since January 1 [0-365] */ - int tm_isdst; /* Daylight Savings Time flag */ - long tm_gmtoff; /* offset from CUT in seconds */ - char *tm_zone; /* timezone abbreviation */ - } ansi_tm; - - - typedef ansi_tt (* GetTimeProc) ( ansi_tt * ttTime ); - typedef ansi_tt (* MakeTimeProc) ( ansi_tm * tmTime ); - typedef double (* DiffTimeProc) ( ansi_tt t1, ansi_tt t0 ); - - typedef void (* ConvertTimeProc) ( const ansi_tt * ttTime, ansi_tm * tmTime ); - - static GetTimeProc ansi_time = 0; - static MakeTimeProc ansi_mktime = 0; - static DiffTimeProc ansi_difftime = 0; - - static ConvertTimeProc ansi_gmtime = 0; - static ConvertTimeProc ansi_localtime = 0; - - static void LookupTimeProcs() - { - _dyld_lookup_and_bind_with_hint ( "_time", "libSystem", (XMP_Uns32*)&ansi_time, 0 ); - _dyld_lookup_and_bind_with_hint ( "_mktime", "libSystem", (XMP_Uns32*)&ansi_mktime, 0 ); - _dyld_lookup_and_bind_with_hint ( "_difftime", "libSystem", (XMP_Uns32*)&ansi_difftime, 0 ); - _dyld_lookup_and_bind_with_hint ( "_gmtime_r", "libSystem", (XMP_Uns32*)&ansi_gmtime, 0 ); - _dyld_lookup_and_bind_with_hint ( "_localtime_r", "libSystem", (XMP_Uns32*)&ansi_localtime, 0 ); - } - - #endif - -#endif - - -// ------------------------------------------------------------------------------------------------- -// IsLeapYear -// ---------- - -static bool -IsLeapYear ( long year ) -{ - - if ( year < 0 ) year = -year + 1; // Fold the negative years, assuming there is a year 0. - - if ( (year % 4) != 0 ) return false; // Not a multiple of 4. - if ( (year % 100) != 0 ) return true; // A multiple of 4 but not a multiple of 100. - if ( (year % 400) == 0 ) return true; // A multiple of 400. - - return false; // A multiple of 100 but not a multiple of 400. - -} // IsLeapYear - - -// ------------------------------------------------------------------------------------------------- -// DaysInMonth -// ----------- - -static int -DaysInMonth ( XMP_Int32 year, XMP_Int32 month ) -{ - - static short daysInMonth[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; - // Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec - - int days = daysInMonth [ month ]; - if ( (month == 2) && IsLeapYear ( year ) ) days += 1; - - return days; - -} // DaysInMonth - - -// ------------------------------------------------------------------------------------------------- -// AdjustTimeOverflow -// ------------------ - -static void -AdjustTimeOverflow ( XMP_DateTime * time ) -{ - enum { kBillion = 1000*1000*1000L }; - - // ---------------------------------------------------------------------------------------------- - // To be safe against pathalogical overflow we first adjust from month to second, then from - // nanosecond back up to month. This leaves each value closer to zero before propagating into it. - // For example if the hour and minute are both near max, adjusting minutes first can cause the - // hour to overflow. - - // ! Photoshop 8 creates "time only" values with zeros for year, month, and day. - - if ( (time->year != 0) || (time->month != 0) || (time->day != 0) ) { - - while ( time->month < 1 ) { - time->year -= 1; - time->month += 12; - } - - while ( time->month > 12 ) { - time->year += 1; - time->month -= 12; - } - - while ( time->day < 1 ) { - time->month -= 1; - if ( time->month < 1 ) { // ! Keep the months in range for indexing daysInMonth! - time->year -= 1; - time->month += 12; - } - time->day += DaysInMonth ( time->year, time->month ); // ! Decrement month before so index here is right! - } - - while ( time->day > DaysInMonth ( time->year, time->month ) ) { - time->day -= DaysInMonth ( time->year, time->month ); // ! Increment month after so index here is right! - time->month += 1; - if ( time->month > 12 ) { - time->year += 1; - time->month -= 12; - } - } - - } - - while ( time->hour < 0 ) { - time->day -= 1; - time->hour += 24; - } - - while ( time->hour >= 24 ) { - time->day += 1; - time->hour -= 24; - } - - while ( time->minute < 0 ) { - time->hour -= 1; - time->minute += 60; - } - - while ( time->minute >= 60 ) { - time->hour += 1; - time->minute -= 60; - } - - while ( time->second < 0 ) { - time->minute -= 1; - time->second += 60; - } - - while ( time->second >= 60 ) { - time->minute += 1; - time->second -= 60; - } - - while ( time->nanoSecond < 0 ) { - time->second -= 1; - time->nanoSecond += kBillion; - } - - while ( time->nanoSecond >= kBillion ) { - time->second += 1; - time->nanoSecond -= kBillion; - } - - while ( time->second < 0 ) { - time->minute -= 1; - time->second += 60; - } - - while ( time->second >= 60 ) { - time->minute += 1; - time->second -= 60; - } - - while ( time->minute < 0 ) { - time->hour -= 1; - time->minute += 60; - } - - while ( time->minute >= 60 ) { - time->hour += 1; - time->minute -= 60; - } - - while ( time->hour < 0 ) { - time->day -= 1; - time->hour += 24; - } - - while ( time->hour >= 24 ) { - time->day += 1; - time->hour -= 24; - } - - if ( (time->year != 0) || (time->month != 0) || (time->day != 0) ) { - - while ( time->month < 1 ) { // Make sure the months are OK first, for DaysInMonth. - time->year -= 1; - time->month += 12; - } - - while ( time->month > 12 ) { - time->year += 1; - time->month -= 12; - } - - while ( time->day < 1 ) { - time->month -= 1; - if ( time->month < 1 ) { - time->year -= 1; - time->month += 12; - } - time->day += DaysInMonth ( time->year, time->month ); - } - - while ( time->day > DaysInMonth ( time->year, time->month ) ) { - time->day -= DaysInMonth ( time->year, time->month ); - time->month += 1; - if ( time->month > 12 ) { - time->year += 1; - time->month -= 12; - } - } - - } - -} // AdjustTimeOverflow - - -// ------------------------------------------------------------------------------------------------- -// GatherInt -// --------- - -static XMP_Int32 -GatherInt ( XMP_StringPtr strValue, size_t * _pos, const char * errMsg ) -{ - size_t pos = *_pos; - XMP_Int32 value = 0; - - for ( char ch = strValue[pos]; ('0' <= ch) && (ch <= '9'); ++pos, ch = strValue[pos] ) { - value = (value * 10) + (ch - '0'); - } - - if ( pos == *_pos ) XMP_Throw ( errMsg, kXMPErr_BadParam ); - *_pos = pos; - return value; - -} // GatherInt - - -// ------------------------------------------------------------------------------------------------- - -static void FormatFullDateTime ( XMP_DateTime & tempDate, char * buffer, size_t bufferLen ) -{ - - AdjustTimeOverflow ( &tempDate ); // Make sure all time parts are in range. - - if ( (tempDate.second == 0) && (tempDate.nanoSecond == 0) ) { - - // Output YYYY-MM-DDThh:mmTZD. - snprintf ( buffer, bufferLen, "%.4d-%02d-%02dT%02d:%02d", // AUDIT: Callers pass sizeof(buffer). - static_cast(tempDate.year), static_cast(tempDate.month), static_cast(tempDate.day), static_cast(tempDate.hour), static_cast(tempDate.minute) ); - - } else if ( tempDate.nanoSecond == 0 ) { - - // Output YYYY-MM-DDThh:mm:ssTZD. - snprintf ( buffer, bufferLen, "%.4d-%02d-%02dT%02d:%02d:%02d", // AUDIT: Callers pass sizeof(buffer). - static_cast(tempDate.year), static_cast(tempDate.month), static_cast(tempDate.day), - static_cast(tempDate.hour), static_cast(tempDate.minute), static_cast(tempDate.second) ); - - } else { - - // Output YYYY-MM-DDThh:mm:ss.sTZD. - snprintf ( buffer, bufferLen, "%.4d-%02d-%02dT%02d:%02d:%02d.%09d", // AUDIT: Callers pass sizeof(buffer). - static_cast(tempDate.year), static_cast(tempDate.month), static_cast(tempDate.day), - static_cast(tempDate.hour), static_cast(tempDate.minute), static_cast(tempDate.second), static_cast(tempDate.nanoSecond) ); - for ( size_t i = strlen(buffer)-1; buffer[i] == '0'; --i ) buffer[i] = 0; // Trim excess digits. - - } - -} // FormatFullDateTime - - -// ------------------------------------------------------------------------------------------------- -// DecodeBase64Char -// ---------------- - -// The decode mapping: -// -// encoded encoded raw -// char value value -// ------- ------- ----- -// A .. Z 0x41 .. 0x5A 0 .. 25 -// a .. z 0x61 .. 0x7A 26 .. 51 -// 0 .. 9 0x30 .. 0x39 52 .. 61 -// + 0x2B 62 -// / 0x2F 63 - -static unsigned char -DecodeBase64Char ( XMP_Uns8 ch ) -{ - - if ( ('A' <= ch) && (ch <= 'Z') ) { - ch = ch - 'A'; - } else if ( ('a' <= ch) && (ch <= 'z') ) { - ch = ch - 'a' + 26; - } else if ( ('0' <= ch) && (ch <= '9') ) { - ch = ch - '0' + 52; - } else if ( ch == '+' ) { - ch = 62; - } else if ( ch == '/' ) { - ch = 63; - } else if ( (ch == ' ') || (ch == kTab) || (ch == kLF) || (ch == kCR) ) { - ch = 0xFF; // Will be ignored by the caller. - } else { - XMP_Throw ( "Invalid base-64 encoded character", kXMPErr_BadParam ); - } - - return ch; - -} // DecodeBase64Char (); - - -// ------------------------------------------------------------------------------------------------- -// EstimateSizeForJPEG -// ------------------- -// -// Estimate the serialized size for the subtree of an XMP_Node. Support for PackageForJPEG. - -static size_t -EstimateSizeForJPEG ( const XMP_Node * xmpNode ) -{ - - size_t estSize = 0; - size_t nameSize = xmpNode->name.size(); - bool includeName = (! XMP_PropIsArray ( xmpNode->parent->options )); - - if ( XMP_PropIsSimple ( xmpNode->options ) ) { - - if ( includeName ) estSize += (nameSize + 3); // Assume attribute form. - estSize += xmpNode->value.size(); - - } else if ( XMP_PropIsArray ( xmpNode->options ) ) { - - // The form of the value portion is: ...... - if ( includeName ) estSize += (2*nameSize + 5); - size_t arraySize = xmpNode->children.size(); - estSize += 9 + 10; // The rdf:Xyz tags. - estSize += arraySize * (8 + 9); // The rdf:li tags. - for ( size_t i = 0; i < arraySize; ++i ) { - estSize += EstimateSizeForJPEG ( xmpNode->children[i] ); - } - - } else { - - // The form is: ...fields... - if ( includeName ) estSize += (2*nameSize + 5); - estSize += 25; // The rdf:parseType="Resource" attribute. - size_t fieldCount = xmpNode->children.size(); - for ( size_t i = 0; i < fieldCount; ++i ) { - estSize += EstimateSizeForJPEG ( xmpNode->children[i] ); - } - - } - - return estSize; - -} // EstimateSizeForJPEG - - -// ------------------------------------------------------------------------------------------------- -// MoveOneProperty -// --------------- - -static bool MoveOneProperty ( XMPMeta & stdXMP, XMPMeta * extXMP, - XMP_StringPtr schemaURI, XMP_StringPtr propName ) -{ - - XMP_Node * propNode = 0; - XMP_NodePtrPos stdPropPos; - - XMP_Node * stdSchema = FindSchemaNode ( &stdXMP.tree, schemaURI, kXMP_ExistingOnly, 0 ); - if ( stdSchema != 0 ) { - propNode = FindChildNode ( stdSchema, propName, kXMP_ExistingOnly, &stdPropPos ); - } - if ( propNode == 0 ) return false; - - XMP_Node * extSchema = FindSchemaNode ( &extXMP->tree, schemaURI, kXMP_CreateNodes ); - - propNode->parent = extSchema; - - extSchema->options &= ~kXMP_NewImplicitNode; - extSchema->children.push_back ( propNode ); - - stdSchema->children.erase ( stdPropPos ); - DeleteEmptySchema ( stdSchema ); - - return true; - -} // MoveOneProperty - - -// ------------------------------------------------------------------------------------------------- -// CreateEstimatedSizeMap -// ---------------------- - -#ifndef Trace_PackageForJPEG - #define Trace_PackageForJPEG 0 -#endif - -typedef std::pair < XMP_VarString*, XMP_VarString* > StringPtrPair; -typedef std::multimap < size_t, StringPtrPair > PropSizeMap; - -static void CreateEstimatedSizeMap ( XMPMeta & stdXMP, PropSizeMap * propSizes ) -{ - #if Trace_PackageForJPEG - printf ( " Creating top level property map:\n" ); - #endif - - for ( size_t s = stdXMP.tree.children.size(); s > 0; --s ) { - - XMP_Node * stdSchema = stdXMP.tree.children[s-1]; - - for ( size_t p = stdSchema->children.size(); p > 0; --p ) { - - XMP_Node * stdProp = stdSchema->children[p-1]; - if ( (stdSchema->name == kXMP_NS_XMP_Note) && - (stdProp->name == "xmpNote:HasExtendedXMP") ) continue; // ! Don't move xmpNote:HasExtendedXMP. - - size_t propSize = EstimateSizeForJPEG ( stdProp ); - StringPtrPair namePair ( &stdSchema->name, &stdProp->name ); - PropSizeMap::value_type mapValue ( propSize, namePair ); - - (void) propSizes->insert ( propSizes->upper_bound ( propSize ), mapValue ); - #if Trace_PackageForJPEG - printf ( " %d bytes, %s in %s\n", propSize, stdProp->name.c_str(), stdSchema->name.c_str() ); - #endif - - } - - } - -} // CreateEstimatedSizeMap - - -// ------------------------------------------------------------------------------------------------- -// MoveLargestProperty -// ------------------- - -static size_t MoveLargestProperty ( XMPMeta & stdXMP, XMPMeta * extXMP, PropSizeMap & propSizes ) -{ - XMP_Assert ( ! propSizes.empty() ); - - #if 0 - // *** Xocde 2.3 on Mac OS X 10.4.7 seems to have a bug where this does not pick the last - // *** item in the map. We'll just avoid it on all platforms until thoroughly tested. - PropSizeMap::iterator lastPos = propSizes.end(); - --lastPos; // Move to the actual last item. - #else - PropSizeMap::iterator lastPos = propSizes.begin(); - PropSizeMap::iterator nextPos = lastPos; - for ( ++nextPos; nextPos != propSizes.end(); ++nextPos ) lastPos = nextPos; - #endif - - size_t propSize = lastPos->first; - const char * schemaURI = lastPos->second.first->c_str(); - const char * propName = lastPos->second.second->c_str(); - - #if Trace_PackageForJPEG - printf ( " Move %s, %d bytes\n", propName, propSize ); - #endif - - bool moved = false; - moved = MoveOneProperty ( stdXMP, extXMP, schemaURI, propName ); - XMP_Assert ( moved ); - - propSizes.erase ( lastPos ); - return propSize; - -} // MoveLargestProperty - - -// ================================================================================================= -// Class Static Functions -// ====================== - - -// ------------------------------------------------------------------------------------------------- -// Initialize -// ---------- - -/* class static */ bool -XMPUtils::Initialize() -{ - sComposedPath = new XMP_VarString(); - sConvertedValue = new XMP_VarString(); - sBase64Str = new XMP_VarString(); - sCatenatedItems = new XMP_VarString(); - sStandardXMP = new XMP_VarString(); - sExtendedXMP = new XMP_VarString(); - sExtendedDigest = new XMP_VarString(); - - #if XMP_MacBuild && __MWERKS__ - LookupTimeProcs(); - #endif - - return true; - -} // Initialize - - -// ------------------------------------------------------------------------------------------------- -// Terminate -// --------- - -#define EliminateGlobal(g) delete ( g ); g = 0 - -/* class static */ void -XMPUtils::Terminate() RELEASE_NO_THROW -{ - EliminateGlobal ( sComposedPath ); - EliminateGlobal ( sConvertedValue ); - EliminateGlobal ( sBase64Str ); - EliminateGlobal ( sCatenatedItems ); - EliminateGlobal ( sStandardXMP ); - EliminateGlobal ( sExtendedXMP ); - EliminateGlobal ( sExtendedDigest ); - - return; - -} // Terminate - - -// ------------------------------------------------------------------------------------------------- -// Unlock -// ------ - -/* class static */ void -XMPUtils::Unlock ( XMP_OptionBits options ) -{ - options = options; // Avoid unused parameter warning. - - XMPMeta::Unlock ( 0 ); - -} // Unlock - -// ------------------------------------------------------------------------------------------------- -// ComposeArrayItemPath -// -------------------- -// -// Return "arrayName[index]". - -/* class static */ void -XMPUtils::ComposeArrayItemPath ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - XMP_StringPtr * fullPath, - XMP_StringLen * pathSize ) -{ - XMP_Assert ( schemaNS != 0 ); // Enforced by wrapper. - XMP_Assert ( *arrayName != 0 ); // Enforced by wrapper. - XMP_Assert ( (fullPath != 0) && (pathSize != 0) ); // Enforced by wrapper. - - XMP_ExpandedXPath expPath; // Just for side effects to check namespace and basic path. - ExpandXPath ( schemaNS, arrayName, &expPath ); - - if ( (itemIndex < 0) && (itemIndex != kXMP_ArrayLastItem) ) XMP_Throw ( "Array index out of bounds", kXMPErr_BadParam ); - - XMP_StringLen reserveLen = strlen(arrayName) + 2 + 32; // Room plus padding. - - sComposedPath->erase(); - sComposedPath->reserve ( reserveLen ); - sComposedPath->append ( reserveLen, ' ' ); - - if ( itemIndex != kXMP_ArrayLastItem ) { - // AUDIT: Using string->size() for the snprintf length is safe. - snprintf ( const_cast(sComposedPath->c_str()), sComposedPath->size(), "%s[%d]", arrayName, static_cast(itemIndex) ); - } else { - *sComposedPath = arrayName; - *sComposedPath += "[last()] "; - (*sComposedPath)[sComposedPath->size()-1] = 0; // ! Final null is for the strlen at exit. - } - - *fullPath = sComposedPath->c_str(); - *pathSize = strlen ( *fullPath ); // ! Don't use sComposedPath->size()! - - XMP_Enforce ( *pathSize < sComposedPath->size() ); // Rather late, but complain about buffer overflow. - -} // ComposeArrayItemPath - - -// ------------------------------------------------------------------------------------------------- -// ComposeStructFieldPath -// ---------------------- -// -// Return "structName/ns:fieldName". - -/* class static */ void -XMPUtils::ComposeStructFieldPath ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - XMP_StringPtr * fullPath, - XMP_StringLen * pathSize ) -{ - XMP_Assert ( (schemaNS != 0) && (fieldNS != 0) ); // Enforced by wrapper. - XMP_Assert ( (*structName != 0) && (*fieldName != 0) ); // Enforced by wrapper. - XMP_Assert ( (fullPath != 0) && (pathSize != 0) ); // Enforced by wrapper. - - XMP_ExpandedXPath expPath; // Just for side effects to check namespace and basic path. - ExpandXPath ( schemaNS, structName, &expPath ); - - XMP_ExpandedXPath fieldPath; - ExpandXPath ( fieldNS, fieldName, &fieldPath ); - if ( fieldPath.size() != 2 ) XMP_Throw ( "The fieldName must be simple", kXMPErr_BadXPath ); - - XMP_StringLen reserveLen = strlen(structName) + fieldPath[kRootPropStep].step.size() + 1; - - sComposedPath->erase(); - sComposedPath->reserve ( reserveLen ); - *sComposedPath = structName; - *sComposedPath += '/'; - *sComposedPath += fieldPath[kRootPropStep].step; - - *fullPath = sComposedPath->c_str(); - *pathSize = sComposedPath->size(); - -} // ComposeStructFieldPath - - -// ------------------------------------------------------------------------------------------------- -// ComposeQualifierPath -// -------------------- -// -// Return "propName/?ns:qualName". - -/* class static */ void -XMPUtils::ComposeQualifierPath ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - XMP_StringPtr * fullPath, - XMP_StringLen * pathSize ) -{ - XMP_Assert ( (schemaNS != 0) && (qualNS != 0) ); // Enforced by wrapper. - XMP_Assert ( (*propName != 0) && (*qualName != 0) ); // Enforced by wrapper. - XMP_Assert ( (fullPath != 0) && (pathSize != 0) ); // Enforced by wrapper. - - XMP_ExpandedXPath expPath; // Just for side effects to check namespace and basic path. - ExpandXPath ( schemaNS, propName, &expPath ); - - XMP_ExpandedXPath qualPath; - ExpandXPath ( qualNS, qualName, &qualPath ); - if ( qualPath.size() != 2 ) XMP_Throw ( "The qualifier name must be simple", kXMPErr_BadXPath ); - - XMP_StringLen reserveLen = strlen(propName) + qualPath[kRootPropStep].step.size() + 2; - - sComposedPath->erase(); - sComposedPath->reserve ( reserveLen ); - *sComposedPath = propName; - *sComposedPath += "/?"; - *sComposedPath += qualPath[kRootPropStep].step; - - *fullPath = sComposedPath->c_str(); - *pathSize = sComposedPath->size(); - -} // ComposeQualifierPath - - -// ------------------------------------------------------------------------------------------------- -// ComposeLangSelector -// ------------------- -// -// Return "arrayName[?xml:lang="lang"]". - -// *** #error "handle quotes in the lang - or verify format" - -/* class static */ void -XMPUtils::ComposeLangSelector ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr _langName, - XMP_StringPtr * fullPath, - XMP_StringLen * pathSize ) -{ - XMP_Assert ( schemaNS != 0 ); // Enforced by wrapper. - XMP_Assert ( (*arrayName != 0) && (*_langName != 0) ); // Enforced by wrapper. - XMP_Assert ( (fullPath != 0) && (pathSize != 0) ); // Enforced by wrapper. - - XMP_ExpandedXPath expPath; // Just for side effects to check namespace and basic path. - ExpandXPath ( schemaNS, arrayName, &expPath ); - - XMP_VarString langName ( _langName ); - NormalizeLangValue ( &langName ); - - XMP_StringLen reserveLen = strlen(arrayName) + langName.size() + 14; - - sComposedPath->erase(); - sComposedPath->reserve ( reserveLen ); - *sComposedPath = arrayName; - *sComposedPath += "[?xml:lang=\""; - *sComposedPath += langName; - *sComposedPath += "\"]"; - - *fullPath = sComposedPath->c_str(); - *pathSize = sComposedPath->size(); - -} // ComposeLangSelector - - -// ------------------------------------------------------------------------------------------------- -// ComposeFieldSelector -// -------------------- -// -// Return "arrayName[ns:fieldName="fieldValue"]". - -// *** #error "handle quotes in the value" - -/* class static */ void -XMPUtils::ComposeFieldSelector ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - XMP_StringPtr fieldValue, - XMP_StringPtr * fullPath, - XMP_StringLen * pathSize ) -{ - XMP_Assert ( (schemaNS != 0) && (fieldNS != 0) && (fieldValue != 0) ); // Enforced by wrapper. - XMP_Assert ( (*arrayName != 0) && (*fieldName != 0) ); // Enforced by wrapper. - XMP_Assert ( (fullPath != 0) && (pathSize != 0) ); // Enforced by wrapper. - - XMP_ExpandedXPath expPath; // Just for side effects to check namespace and basic path. - ExpandXPath ( schemaNS, arrayName, &expPath ); - - XMP_ExpandedXPath fieldPath; - ExpandXPath ( fieldNS, fieldName, &fieldPath ); - if ( fieldPath.size() != 2 ) XMP_Throw ( "The fieldName must be simple", kXMPErr_BadXPath ); - - XMP_StringLen reserveLen = strlen(arrayName) + fieldPath[kRootPropStep].step.size() + strlen(fieldValue) + 5; - - sComposedPath->erase(); - sComposedPath->reserve ( reserveLen ); - *sComposedPath = arrayName; - *sComposedPath += '['; - *sComposedPath += fieldPath[kRootPropStep].step; - *sComposedPath += "=\""; - *sComposedPath += fieldValue; - *sComposedPath += "\"]"; - - *fullPath = sComposedPath->c_str(); - *pathSize = sComposedPath->size(); - -} // ComposeFieldSelector - - -// ------------------------------------------------------------------------------------------------- -// ConvertFromBool -// --------------- - -/* class static */ void -XMPUtils::ConvertFromBool ( bool binValue, - XMP_StringPtr * strValue, - XMP_StringLen * strSize ) -{ - XMP_Assert ( (strValue != 0) && (strSize != 0) ); // Enforced by wrapper. - - if ( binValue ) { - *strValue = kXMP_TrueStr; - *strSize = strlen ( kXMP_TrueStr ); - } else { - *strValue = kXMP_FalseStr; - *strSize = strlen ( kXMP_FalseStr ); - } - -} // ConvertFromBool - - -// ------------------------------------------------------------------------------------------------- -// ConvertFromInt -// -------------- - -/* class static */ void -XMPUtils::ConvertFromInt ( XMP_Int32 binValue, - XMP_StringPtr format, - XMP_StringPtr * strValue, - XMP_StringLen * strSize ) -{ - XMP_Assert ( (format != 0) && (strValue != 0) && (strSize != 0) ); // Enforced by wrapper. - - if ( *format == 0 ) format = "%d"; - - sConvertedValue->erase(); - sConvertedValue->reserve ( 100 ); // More than enough for any reasonable format and value. - sConvertedValue->append ( 100, ' ' ); - - // AUDIT: Using string->size() for the snprintf length is safe. - snprintf ( const_cast(sConvertedValue->c_str()), sConvertedValue->size(), format, binValue ); - - *strValue = sConvertedValue->c_str(); - *strSize = strlen ( *strValue ); // ! Don't use sConvertedValue->size()! - - XMP_Enforce ( *strSize < sConvertedValue->size() ); // Rather late, but complain about buffer overflow. - -} // ConvertFromInt - - -// ------------------------------------------------------------------------------------------------- -// ConvertFromInt64 -// ---------------- - -/* class static */ void -XMPUtils::ConvertFromInt64 ( XMP_Int64 binValue, - XMP_StringPtr format, - XMP_StringPtr * strValue, - XMP_StringLen * strSize ) -{ - XMP_Assert ( (format != 0) && (strValue != 0) && (strSize != 0) ); // Enforced by wrapper. - - if ( *format == 0 ) format = "%lld"; - - sConvertedValue->erase(); - sConvertedValue->reserve ( 100 ); // More than enough for any reasonable format and value. - sConvertedValue->append ( 100, ' ' ); - - // AUDIT: Using string->size() for the snprintf length is safe. - snprintf ( const_cast(sConvertedValue->c_str()), sConvertedValue->size(), format, binValue ); - - *strValue = sConvertedValue->c_str(); - *strSize = strlen ( *strValue ); // ! Don't use sConvertedValue->size()! - - XMP_Enforce ( *strSize < sConvertedValue->size() ); // Rather late, but complain about buffer overflow. - -} // ConvertFromInt64 - - -// ------------------------------------------------------------------------------------------------- -// ConvertFromFloat -// ---------------- - -/* class static */ void -XMPUtils::ConvertFromFloat ( double binValue, - XMP_StringPtr format, - XMP_StringPtr * strValue, - XMP_StringLen * strSize ) -{ - XMP_Assert ( (format != 0) && (strValue != 0) && (strSize != 0) ); // Enforced by wrapper. - - if ( *format == 0 ) format = "%f"; - - sConvertedValue->erase(); - sConvertedValue->reserve ( 1000 ); // More than enough for any reasonable format and value. - sConvertedValue->append ( 1000, ' ' ); - - // AUDIT: Using string->size() for the snprintf length is safe. - snprintf ( const_cast(sConvertedValue->c_str()), sConvertedValue->size(), format, binValue ); - - *strValue = sConvertedValue->c_str(); - *strSize = strlen ( *strValue ); // ! Don't use sConvertedValue->size()! - - XMP_Enforce ( *strSize < sConvertedValue->size() ); // Rather late, but complain about buffer overflow. - -} // ConvertFromFloat - - -// ------------------------------------------------------------------------------------------------- -// ConvertFromDate -// --------------- -// -// Format a date according to ISO 8601 and http://www.w3.org/TR/NOTE-datetime: -// YYYY -// YYYY-MM -// YYYY-MM-DD -// YYYY-MM-DDThh:mmTZD -// YYYY-MM-DDThh:mm:ssTZD -// YYYY-MM-DDThh:mm:ss.sTZD -// -// YYYY = four-digit year -// MM = two-digit month (01=January, etc.) -// DD = two-digit day of month (01 through 31) -// hh = two digits of hour (00 through 23) -// mm = two digits of minute (00 through 59) -// ss = two digits of second (00 through 59) -// s = one or more digits representing a decimal fraction of a second -// TZD = time zone designator (Z or +hh:mm or -hh:mm) -// -// Note that ISO 8601 does not seem to allow years less than 1000 or greater than 9999. We allow -// any year, even negative ones. The year is formatted as "%.4d". - -// *** Need to check backward compatibility for partial forms! - -/* class static */ void -XMPUtils::ConvertFromDate ( const XMP_DateTime & binValue, - XMP_StringPtr * strValue, - XMP_StringLen * strSize ) -{ - XMP_Assert ( (strValue != 0) && (strSize != 0) ); // Enforced by wrapper. - - bool addTimeZone = false; - char buffer [100]; // Plenty long enough. - - // Pick the format, use snprintf to format into a local buffer, assign to static output string. - // Don't use AdjustTimeOverflow at the start, that will wipe out zero month or day values. - - // ! Photoshop 8 creates "time only" values with zeros for year, month, and day. - - XMP_DateTime tempDate = binValue; - - // Temporary fix for bug 1269463, silently fix out of range month or day. - - bool haveDay = (tempDate.day != 0); - bool haveTime = ( (tempDate.hour != 0) || (tempDate.minute != 0) || - (tempDate.second != 0) || (tempDate.nanoSecond != 0) || - (tempDate.tzSign != 0) || (tempDate.tzHour != 0) || (tempDate.tzMinute != 0) ); - - if ( tempDate.month == 0 ) { - if ( haveDay || haveTime ) tempDate.month = 1; - } else { - if ( tempDate.month < 1 ) tempDate.month = 1; - if ( tempDate.month > 12 ) tempDate.month = 12; - } - - if ( tempDate.day == 0 ) { - if ( haveTime ) tempDate.day = 1; - } else { - if ( tempDate.day < 1 ) tempDate.day = 1; - if ( tempDate.day > 31 ) tempDate.day = 31; - } - - // Now carry on with the original logic. - - if ( tempDate.month == 0 ) { - - // Output YYYY if all else is zero, otherwise output a full string for the quasi-bogus - // "time only" values from Photoshop CS. - if ( (tempDate.day == 0) && (tempDate.hour == 0) && (tempDate.minute == 0) && - (tempDate.second == 0) && (tempDate.nanoSecond == 0) && - (tempDate.tzSign == 0) && (tempDate.tzHour == 0) && (tempDate.tzMinute == 0) ) { - snprintf ( buffer, sizeof(buffer), "%.4d", static_cast(tempDate.year) ); // AUDIT: Using sizeof for snprintf length is safe. - } else if ( (tempDate.year == 0) && (tempDate.day == 0) ) { - FormatFullDateTime ( tempDate, buffer, sizeof(buffer) ); - addTimeZone = true; - } else { - XMP_Throw ( "Invalid partial date", kXMPErr_BadParam); - } - - } else if ( tempDate.day == 0 ) { - - // Output YYYY-MM. - if ( (tempDate.month < 1) || (tempDate.month > 12) ) XMP_Throw ( "Month is out of range", kXMPErr_BadParam); - if ( (tempDate.hour != 0) || (tempDate.minute != 0) || - (tempDate.second != 0) || (tempDate.nanoSecond != 0) || - (tempDate.tzSign != 0) || (tempDate.tzHour != 0) || (tempDate.tzMinute != 0) ) { - XMP_Throw ( "Invalid partial date, non-zeros after zero month and day", kXMPErr_BadParam); - } - snprintf ( buffer, sizeof(buffer), "%.4d-%02d", static_cast(tempDate.year), static_cast(tempDate.month) ); // AUDIT: Using sizeof for snprintf length is safe. - - } else if ( (tempDate.hour == 0) && (tempDate.minute == 0) && - (tempDate.second == 0) && (tempDate.nanoSecond == 0) && - (tempDate.tzSign == 0) && (tempDate.tzHour == 0) && (tempDate.tzMinute == 0) ) { - - // Output YYYY-MM-DD. - if ( (tempDate.month < 1) || (tempDate.month > 12) ) XMP_Throw ( "Month is out of range", kXMPErr_BadParam); - if ( (tempDate.day < 1) || (tempDate.day > 31) ) XMP_Throw ( "Day is out of range", kXMPErr_BadParam); - snprintf ( buffer, sizeof(buffer), "%.4d-%02d-%02d", static_cast(tempDate.year), static_cast(tempDate.month), static_cast(tempDate.day) ); // AUDIT: Using sizeof for snprintf length is safe. - - } else { - - FormatFullDateTime ( tempDate, buffer, sizeof(buffer) ); - addTimeZone = true; - - } - - sConvertedValue->assign ( buffer ); - - if ( addTimeZone ) { - - if ( (tempDate.tzHour < 0) || (tempDate.tzHour > 23) || - (tempDate.tzMinute < 0 ) || (tempDate.tzMinute > 59) || - (tempDate.tzSign < -1) || (tempDate.tzSign > +1) || - ((tempDate.tzSign != 0) && (tempDate.tzHour == 0) && (tempDate.tzMinute == 0)) || - ((tempDate.tzSign == 0) && ((tempDate.tzHour != 0) || (tempDate.tzMinute != 0))) ) { - XMP_Throw ( "Invalid time zone values", kXMPErr_BadParam ); - } - - if ( tempDate.tzSign == 0 ) { - *sConvertedValue += 'Z'; - } else { - snprintf ( buffer, sizeof(buffer), "+%02d:%02d", static_cast(tempDate.tzHour), static_cast(tempDate.tzMinute) ); // AUDIT: Using sizeof for snprintf length is safe. - if ( tempDate.tzSign < 0 ) buffer[0] = '-'; - *sConvertedValue += buffer; - } - - } - - *strValue = sConvertedValue->c_str(); - *strSize = sConvertedValue->size(); - -} // ConvertFromDate - - -// ------------------------------------------------------------------------------------------------- -// ConvertToBool -// ------------- -// -// Formally the string value should be "True" or "False", but we should be more flexible here. Map -// the string to lower case. Allow any of "true", "false", "t", "f", "1", or "0". - -/* class static */ bool -XMPUtils::ConvertToBool ( XMP_StringPtr strValue ) -{ - if ( (strValue == 0) || (*strValue == 0) ) XMP_Throw ( "Empty convert-from string", kXMPErr_BadValue ); - - bool result = false; - XMP_VarString strObj ( strValue ); - - for ( XMP_VarStringPos ch = strObj.begin(); ch != strObj.end(); ++ch ) { - if ( ('A' <= *ch) && (*ch <= 'Z') ) *ch += 0x20; - } - - if ( (strObj == "true") || (strObj == "t") || (strObj == "1") ) { - result = true; - } else if ( (strObj == "false") || (strObj == "f") || (strObj == "0") ) { - result = false; - } else { - XMP_Throw ( "Invalid Boolean string", kXMPErr_BadParam ); - } - - return result; - -} // ConvertToBool - - -// ------------------------------------------------------------------------------------------------- -// ConvertToInt -// ------------ - -/* class static */ XMP_Int32 -XMPUtils::ConvertToInt ( XMP_StringPtr strValue ) -{ - if ( (strValue == 0) || (*strValue == 0) ) XMP_Throw ( "Empty convert-from string", kXMPErr_BadValue ); - - int count; - char nextCh; - XMP_Int32 result; - - if ( ! XMP_LitNMatch ( strValue, "0x", 2 ) ) { - count = sscanf ( strValue, "%d%c", (int*)&result, &nextCh ); - } else { - count = sscanf ( strValue, "%x%c", (unsigned int*)&result, &nextCh ); - } - - if ( count != 1 ) XMP_Throw ( "Invalid integer string", kXMPErr_BadParam ); - - return result; - -} // ConvertToInt - - -// ------------------------------------------------------------------------------------------------- -// ConvertToInt64 -// -------------- - -/* class static */ XMP_Int64 -XMPUtils::ConvertToInt64 ( XMP_StringPtr strValue ) -{ - if ( (strValue == 0) || (*strValue == 0) ) XMP_Throw ( "Empty convert-from string", kXMPErr_BadValue ); - - int count; - char nextCh; - XMP_Int64 result; - - if ( ! XMP_LitNMatch ( strValue, "0x", 2 ) ) { - count = sscanf ( strValue, "%lld%c", &result, &nextCh ); - } else { - count = sscanf ( strValue, "%llx%c", &result, &nextCh ); - } - - if ( count != 1 ) XMP_Throw ( "Invalid integer string", kXMPErr_BadParam ); - - return result; - -} // ConvertToInt64 - - -// ------------------------------------------------------------------------------------------------- -// ConvertToFloat -// -------------- - -/* class static */ double -XMPUtils::ConvertToFloat ( XMP_StringPtr strValue ) -{ - if ( (strValue == 0) || (*strValue == 0) ) XMP_Throw ( "Empty convert-from string", kXMPErr_BadValue ); - - XMP_VarString oldLocale; // Try to make sure number conversion uses '.' as the decimal point. - XMP_StringPtr oldLocalePtr = setlocale ( LC_ALL, 0 ); - if ( oldLocalePtr != 0 ) { - oldLocale.assign ( oldLocalePtr ); - setlocale ( LC_ALL, "C" ); - } - - errno = 0; - char * numEnd; - double result = strtod ( strValue, &numEnd ); - - if ( oldLocalePtr != 0 ) setlocale ( LC_ALL, oldLocalePtr ); // ! Reset locale before possible throw! - if ( (errno != 0) || (*numEnd != 0) ) XMP_Throw ( "Invalid float string", kXMPErr_BadParam ); - - return result; - -} // ConvertToFloat - - -// ------------------------------------------------------------------------------------------------- -// ConvertToDate -// ------------- -// -// Parse a date according to ISO 8601 and http://www.w3.org/TR/NOTE-datetime: -// YYYY -// YYYY-MM -// YYYY-MM-DD -// YYYY-MM-DDThh:mmTZD -// YYYY-MM-DDThh:mm:ssTZD -// YYYY-MM-DDThh:mm:ss.sTZD -// -// YYYY = four-digit year -// MM = two-digit month (01=January, etc.) -// DD = two-digit day of month (01 through 31) -// hh = two digits of hour (00 through 23) -// mm = two digits of minute (00 through 59) -// ss = two digits of second (00 through 59) -// s = one or more digits representing a decimal fraction of a second -// TZD = time zone designator (Z or +hh:mm or -hh:mm) -// -// Note that ISO 8601 does not seem to allow years less than 1000 or greater than 9999. We allow -// any year, even negative ones. The year is formatted as "%.4d". - -// ! Tolerate missing TZD, assume the time is in local time -// ! Tolerate missing date portion, in case someone foolishly writes a time-only value that way. - -// *** Put the ISO format comments in the header documentation. - -/* class static */ void -XMPUtils::ConvertToDate ( XMP_StringPtr strValue, - XMP_DateTime * binValue ) -{ - if ( (strValue == 0) || (*strValue == 0) ) XMP_Throw ( "Empty convert-from string", kXMPErr_BadValue); - - size_t pos = 0; - XMP_Int32 temp; - - XMP_Assert ( sizeof(*binValue) == sizeof(XMP_DateTime) ); - (void) memset ( binValue, 0, sizeof(*binValue) ); // AUDIT: Safe, using sizeof destination. - - bool timeOnly = ( (strValue[0] == 'T') || - ((strlen(strValue) >= 2) && (strValue[1] == ':')) || - ((strlen(strValue) >= 3) && (strValue[2] == ':')) ); - - if ( ! timeOnly ) { - - if ( strValue[0] == '-' ) pos = 1; - - temp = GatherInt ( strValue, &pos, "Invalid year in date string" ); // Extract the year. - if ( (strValue[pos] != 0) && (strValue[pos] != '-') ) XMP_Throw ( "Invalid date string, after year", kXMPErr_BadParam ); - if ( strValue[0] == '-' ) temp = -temp; - binValue->year = temp; - if ( strValue[pos] == 0 ) return; - - ++pos; - temp = GatherInt ( strValue, &pos, "Invalid month in date string" ); // Extract the month. - if ( (strValue[pos] != 0) && (strValue[pos] != '-') ) XMP_Throw ( "Invalid date string, after month", kXMPErr_BadParam ); - binValue->month = temp; - if ( strValue[pos] == 0 ) return; - - ++pos; - temp = GatherInt ( strValue, &pos, "Invalid day in date string" ); // Extract the day. - if ( (strValue[pos] != 0) && (strValue[pos] != 'T') ) XMP_Throw ( "Invalid date string, after day", kXMPErr_BadParam ); - binValue->day = temp; - if ( strValue[pos] == 0 ) return; - - // Allow year, month, and day to all be zero; implies the date portion is missing. - if ( (binValue->year != 0) || (binValue->month != 0) || (binValue->day != 0) ) { - // Temporary fix for bug 1269463, silently fix out of range month or day. - // if ( (binValue->month < 1) || (binValue->month > 12) ) XMP_Throw ( "Month is out of range", kXMPErr_BadParam ); - // if ( (binValue->day < 1) || (binValue->day > 31) ) XMP_Throw ( "Day is out of range", kXMPErr_BadParam ); - if ( binValue->month < 1 ) binValue->month = 1; - if ( binValue->month > 12 ) binValue->month = 12; - if ( binValue->day < 1 ) binValue->day = 1; - if ( binValue->day > 31 ) binValue->day = 31; - } - - } - - if ( strValue[pos] == 'T' ) { - ++pos; - } else if ( ! timeOnly ) { - XMP_Throw ( "Invalid date string, missing 'T' after date", kXMPErr_BadParam ); - } - - temp = GatherInt ( strValue, &pos, "Invalid hour in date string" ); // Extract the hour. - if ( strValue[pos] != ':' ) XMP_Throw ( "Invalid date string, after hour", kXMPErr_BadParam ); - if ( temp > 23 ) temp = 23; // *** 1269463: XMP_Throw ( "Hour is out of range", kXMPErr_BadParam ); - binValue->hour = temp; - // Don't check for done, we have to work up to the time zone. - - ++pos; - temp = GatherInt ( strValue, &pos, "Invalid minute in date string" ); // And the minute. - if ( (strValue[pos] != ':') && (strValue[pos] != 'Z') && - (strValue[pos] != '+') && (strValue[pos] != '-') && (strValue[pos] != 0) ) XMP_Throw ( "Invalid date string, after minute", kXMPErr_BadParam ); - if ( temp > 59 ) temp = 59; // *** 1269463: XMP_Throw ( "Minute is out of range", kXMPErr_BadParam ); - binValue->minute = temp; - // Don't check for done, we have to work up to the time zone. - - if ( strValue[pos] == ':' ) { - - ++pos; - temp = GatherInt ( strValue, &pos, "Invalid whole seconds in date string" ); // Extract the whole seconds. - if ( (strValue[pos] != '.') && (strValue[pos] != 'Z') && - (strValue[pos] != '+') && (strValue[pos] != '-') && (strValue[pos] != 0) ) { - XMP_Throw ( "Invalid date string, after whole seconds", kXMPErr_BadParam ); - } - if ( temp > 59 ) temp = 59; // *** 1269463: XMP_Throw ( "Whole second is out of range", kXMPErr_BadParam ); - binValue->second = temp; - // Don't check for done, we have to work up to the time zone. - - if ( strValue[pos] == '.' ) { - - ++pos; - size_t digits = pos; // Will be the number of digits later. - - temp = GatherInt ( strValue, &pos, "Invalid fractional seconds in date string" ); // Extract the fractional seconds. - if ( (strValue[pos] != 'Z') && (strValue[pos] != '+') && (strValue[pos] != '-') && (strValue[pos] != 0) ) { - XMP_Throw ( "Invalid date string, after fractional second", kXMPErr_BadParam ); - } - - digits = pos - digits; - for ( ; digits > 9; --digits ) temp = temp / 10; - for ( ; digits < 9; ++digits ) temp = temp * 10; - - if ( temp >= 1000*1000*1000 ) XMP_Throw ( "Fractional second is out of range", kXMPErr_BadParam ); - binValue->nanoSecond = temp; - // Don't check for done, we have to work up to the time zone. - - } - - } - - if ( strValue[pos] == 'Z' ) { - - ++pos; - - } else if ( strValue[pos] != 0 ) { - - if ( strValue[pos] == '+' ) { - binValue->tzSign = kXMP_TimeEastOfUTC; - } else if ( strValue[pos] == '-' ) { - binValue->tzSign = kXMP_TimeWestOfUTC; - } else { - XMP_Throw ( "Time zone must begin with 'Z', '+', or '-'", kXMPErr_BadParam ); - } - - ++pos; - temp = GatherInt ( strValue, &pos, "Invalid time zone hour in date string" ); // Extract the time zone hour. - if ( strValue[pos] != ':' ) XMP_Throw ( "Invalid date string, after time zone hour", kXMPErr_BadParam ); - if ( temp > 23 ) XMP_Throw ( "Time zone hour is out of range", kXMPErr_BadParam ); - binValue->tzHour = temp; - - ++pos; - temp = GatherInt ( strValue, &pos, "Invalid time zone minute in date string" ); // Extract the time zone minute. - if ( temp > 59 ) XMP_Throw ( "Time zone minute is out of range", kXMPErr_BadParam ); - binValue->tzMinute = temp; - - } else { - - XMPUtils::SetTimeZone( binValue ); - - } - - if ( strValue[pos] != 0 ) XMP_Throw ( "Invalid date string, extra chars at end", kXMPErr_BadParam ); - -} // ConvertToDate - - -// ------------------------------------------------------------------------------------------------- -// EncodeToBase64 -// -------------- -// -// Encode a string of raw data bytes in base 64 according to RFC 2045. For the encoding definition -// see section 6.8 in . Although it isn't needed for RDF, we -// do insert a linefeed character as a newline for every 76 characters of encoded output. - -/* class static */ void -XMPUtils::EncodeToBase64 ( XMP_StringPtr rawStr, - XMP_StringLen rawLen, - XMP_StringPtr * encodedStr, - XMP_StringLen * encodedLen ) -{ - if ( (rawStr == 0) && (rawLen != 0) ) XMP_Throw ( "Null raw data buffer", kXMPErr_BadParam ); - if ( rawLen == 0 ) { - *encodedStr = 0; - *encodedLen = 0; - return; - } - - char encChunk[4]; - - unsigned long in, out; - unsigned char c1, c2, c3; - unsigned long merge; - - const size_t outputSize = (rawLen / 3) * 4; // Approximate, might be small. - - sBase64Str->erase(); - sBase64Str->reserve ( outputSize ); - - // ---------------------------------------------------------------------------------------- - // Each 6 bits of input produces 8 bits of output, so 3 input bytes become 4 output bytes. - // Process the whole chunks of 3 bytes first, then deal with any remainder. Be careful with - // the loop comparison, size-2 could be negative! - - for ( in = 0, out = 0; (in+2) < rawLen; in += 3, out += 4 ) { - - c1 = rawStr[in]; - c2 = rawStr[in+1]; - c3 = rawStr[in+2]; - - merge = (c1 << 16) + (c2 << 8) + c3; - - encChunk[0] = sBase64Chars [ merge >> 18 ]; - encChunk[1] = sBase64Chars [ (merge >> 12) & 0x3F ]; - encChunk[2] = sBase64Chars [ (merge >> 6) & 0x3F ]; - encChunk[3] = sBase64Chars [ merge & 0x3F ]; - - if ( out >= 76 ) { - sBase64Str->append ( 1, kLF ); - out = 0; - } - sBase64Str->append ( encChunk, 4 ); - - } - - // ------------------------------------------------------------------------------------------ - // The output must always be a multiple of 4 bytes. If there is a 1 or 2 byte input remainder - // we need to create another chunk. Zero pad with bits to a 6 bit multiple, then add one or - // two '=' characters to pad out to 4 bytes. - - switch ( rawLen - in ) { - - case 0: // Done, no remainder. - break; - - case 1: // One input byte remains. - - c1 = rawStr[in]; - merge = c1 << 16; - - encChunk[0] = sBase64Chars [ merge >> 18 ]; - encChunk[1] = sBase64Chars [ (merge >> 12) & 0x3F ]; - encChunk[2] = encChunk[3] = '='; - - if ( out >= 76 ) sBase64Str->append ( 1, kLF ); - sBase64Str->append ( encChunk, 4 ); - break; - - case 2: // Two input bytes remain. - - c1 = rawStr[in]; - c2 = rawStr[in+1]; - merge = (c1 << 16) + (c2 << 8); - - encChunk[0] = sBase64Chars [ merge >> 18 ]; - encChunk[1] = sBase64Chars [ (merge >> 12) & 0x3F ]; - encChunk[2] = sBase64Chars [ (merge >> 6) & 0x3F ]; - encChunk[3] = '='; - - if ( out >= 76 ) sBase64Str->append ( 1, kLF ); - sBase64Str->append ( encChunk, 4 ); - break; - - } - - // ------------------------- - // Assign the output values. - - *encodedStr = sBase64Str->c_str(); - *encodedLen = sBase64Str->size(); - -} // EncodeToBase64 - - -// ------------------------------------------------------------------------------------------------- -// DecodeFromBase64 -// ---------------- -// -// Decode a string of raw data bytes from base 64 according to RFC 2045. For the encoding definition -// see section 6.8 in . RFC 2045 talks about ignoring all "bad" -// input but warning about non-whitespace. For XMP use we ignore space, tab, LF, and CR. Any other -// bad input is rejected. - -/* class static */ void -XMPUtils::DecodeFromBase64 ( XMP_StringPtr encodedStr, - XMP_StringLen encodedLen, - XMP_StringPtr * rawStr, - XMP_StringLen * rawLen ) -{ - if ( (encodedStr == 0) && (encodedLen != 0) ) XMP_Throw ( "Null encoded data buffer", kXMPErr_BadParam ); - if ( encodedLen == 0 ) { - *rawStr = 0; - *rawLen = 0; - return; - } - - unsigned char ch, rawChunk[3]; - unsigned long inStr, inChunk, inLimit, merge, padding; - - XMP_StringLen outputSize = (encodedLen / 4) * 3; // Only a close approximation. - - sBase64Str->erase(); - sBase64Str->reserve ( outputSize ); - - - // ---------------------------------------------------------------------------------------- - // Each 8 bits of input produces 6 bits of output, so 4 input bytes become 3 output bytes. - // Process all but the last 4 data bytes first, then deal with the final chunk. Whitespace - // in the input must be ignored. The first loop finds where the last 4 data bytes start and - // counts the number of padding equal signs. - - padding = 0; - for ( inStr = 0, inLimit = encodedLen; (inStr < 4) && (inLimit > 0); ) { - inLimit -= 1; // ! Don't do in the loop control, the decr/test order is wrong. - ch = encodedStr[inLimit]; - if ( ch == '=' ) { - padding += 1; // The equal sign padding is a data byte. - } else if ( DecodeBase64Char(ch) == 0xFF ) { - continue; // Ignore whitespace, don't increment inStr. - } else { - inStr += 1; - } - } - - // ! Be careful to count whitespace that is immediately before the final data. Otherwise - // ! middle portion will absorb the final data and mess up the final chunk processing. - - while ( (inLimit > 0) && (DecodeBase64Char(encodedStr[inLimit-1]) == 0xFF) ) --inLimit; - - if ( inStr == 0 ) return; // Nothing but whitespace. - if ( padding > 2 ) XMP_Throw ( "Invalid encoded string", kXMPErr_BadParam ); - - // ------------------------------------------------------------------------------------------- - // Now process all but the last chunk. The limit ensures that we have at least 4 data bytes - // left when entering the output loop, so the inner loop will succeed without overrunning the - // end of the data. At the end of the outer loop we might be past inLimit though. - - inStr = 0; - while ( inStr < inLimit ) { - - merge = 0; - for ( inChunk = 0; inChunk < 4; ++inStr ) { // ! Yes, increment inStr on each pass. - ch = DecodeBase64Char ( encodedStr [inStr] ); - if ( ch == 0xFF ) continue; // Ignore whitespace. - merge = (merge << 6) + ch; - inChunk += 1; - } - - rawChunk[0] = (unsigned char) (merge >> 16); - rawChunk[1] = (unsigned char) ((merge >> 8) & 0xFF); - rawChunk[2] = (unsigned char) (merge & 0xFF); - - sBase64Str->append ( (char*)rawChunk, 3 ); - - } - - // ------------------------------------------------------------------------------------------- - // Process the final, possibly partial, chunk of data. The input is always a multiple 4 bytes, - // but the raw data can be any length. The number of padding '=' characters determines if the - // final chunk has 1, 2, or 3 raw data bytes. - - XMP_Assert ( inStr < encodedLen ); - - merge = 0; - for ( inChunk = 0; inChunk < 4-padding; ++inStr ) { // ! Yes, increment inStr on each pass. - ch = DecodeBase64Char ( encodedStr[inStr] ); - if ( ch == 0xFF ) continue; // Ignore whitespace. - merge = (merge << 6) + ch; - inChunk += 1; - } - - if ( padding == 2 ) { - - rawChunk[0] = (unsigned char) (merge >> 4); - sBase64Str->append ( (char*)rawChunk, 1 ); - - } else if ( padding == 1 ) { - - rawChunk[0] = (unsigned char) (merge >> 10); - rawChunk[1] = (unsigned char) ((merge >> 2) & 0xFF); - sBase64Str->append ( (char*)rawChunk, 2 ); - - } else { - - rawChunk[0] = (unsigned char) (merge >> 16); - rawChunk[1] = (unsigned char) ((merge >> 8) & 0xFF); - rawChunk[2] = (unsigned char) (merge & 0xFF); - sBase64Str->append ( (char*)rawChunk, 3 ); - - } - - // ------------------------- - // Assign the output values. - - *rawStr = sBase64Str->c_str(); - *rawLen = sBase64Str->size(); - -} // DecodeFromBase64 - - -// ------------------------------------------------------------------------------------------------- -// PackageForJPEG -// -------------- - -/* class static */ void -XMPUtils::PackageForJPEG ( const XMPMeta & origXMP, - XMP_StringPtr * stdStr, - XMP_StringLen * stdLen, - XMP_StringPtr * extStr, - XMP_StringLen * extLen, - XMP_StringPtr * digestStr, - XMP_StringLen * digestLen ) -{ - enum { kStdXMPLimit = 65000 }; - static const char * kPacketTrailer = ""; - static size_t kTrailerLen = strlen ( kPacketTrailer ); - - XMP_StringPtr tempStr; - XMP_StringLen tempLen; - - XMPMeta stdXMP, extXMP; - - sStandardXMP->clear(); // Clear the static strings that get returned to the client. - sExtendedXMP->clear(); - sExtendedDigest->clear(); - - XMP_OptionBits keepItSmall = kXMP_UseCompactFormat | kXMP_OmitAllFormatting; - - // Try to serialize everything. Note that we're making internal calls to SerializeToBuffer, so - // we'll be getting back the pointer and length for its internal string. - - origXMP.SerializeToBuffer ( &tempStr, &tempLen, keepItSmall, 1, "", "", 0 ); - #if Trace_PackageForJPEG - printf ( "\nXMPUtils::PackageForJPEG - Full serialize %d bytes\n", tempLen ); - #endif - - if ( tempLen > kStdXMPLimit ) { - - // Couldn't fit everything, make a copy of the input XMP and make sure there is no xmp:Thumbnails property. - - stdXMP.tree.options = origXMP.tree.options; - stdXMP.tree.name = origXMP.tree.name; - stdXMP.tree.value = origXMP.tree.value; - CloneOffspring ( &origXMP.tree, &stdXMP.tree ); - - if ( stdXMP.DoesPropertyExist ( kXMP_NS_XMP, "Thumbnails" ) ) { - stdXMP.DeleteProperty ( kXMP_NS_XMP, "Thumbnails" ); - stdXMP.SerializeToBuffer ( &tempStr, &tempLen, keepItSmall, 1, "", "", 0 ); - #if Trace_PackageForJPEG - printf ( " Delete xmp:Thumbnails, %d bytes left\n", tempLen ); - #endif - } - - } - - if ( tempLen > kStdXMPLimit ) { - - // Still doesn't fit, move all of the Camera Raw namespace. Add a dummy value for xmpNote:HasExtendedXMP. - - stdXMP.SetProperty ( kXMP_NS_XMP_Note, "HasExtendedXMP", "123456789-123456789-123456789-12", 0 ); - - XMP_NodePtrPos crSchemaPos; - XMP_Node * crSchema = FindSchemaNode ( &stdXMP.tree, kXMP_NS_CameraRaw, kXMP_ExistingOnly, &crSchemaPos ); - - if ( crSchema != 0 ) { - crSchema->parent = &extXMP.tree; - extXMP.tree.children.push_back ( crSchema ); - stdXMP.tree.children.erase ( crSchemaPos ); - stdXMP.SerializeToBuffer ( &tempStr, &tempLen, keepItSmall, 1, "", "", 0 ); - #if Trace_PackageForJPEG - printf ( " Move Camera Raw schema, %d bytes left\n", tempLen ); - #endif - } - - } - - if ( tempLen > kStdXMPLimit ) { - - // Still doesn't fit, move photoshop:History. - - bool moved = MoveOneProperty ( stdXMP, &extXMP, kXMP_NS_Photoshop, "photoshop:History" ); - - if ( moved ) { - stdXMP.SerializeToBuffer ( &tempStr, &tempLen, keepItSmall, 1, "", "", 0 ); - #if Trace_PackageForJPEG - printf ( " Move photoshop:History, %d bytes left\n", tempLen ); - #endif - } - - } - - if ( tempLen > kStdXMPLimit ) { - - // Still doesn't fit, move top level properties in order of estimated size. This is done by - // creating a multi-map that maps the serialized size to the string pair for the schema URI - // and top level property name. Since maps are inherently ordered, a reverse iteration of - // the map can be done to move the largest things first. We use a double loop to keep going - // until the serialization actually fits, in case the estimates are off. - - PropSizeMap propSizes; - CreateEstimatedSizeMap ( stdXMP, &propSizes ); - - #if Trace_PackageForJPEG - if ( ! propSizes.empty() ) { - printf ( " Top level property map, smallest to largest:\n" ); - PropSizeMap::iterator mapPos = propSizes.begin(); - PropSizeMap::iterator mapEnd = propSizes.end(); - for ( ; mapPos != mapEnd; ++mapPos ) { - size_t propSize = mapPos->first; - const char * schemaName = mapPos->second.first->c_str(); - const char * propName = mapPos->second.second->c_str(); - printf ( " %d bytes, %s in %s\n", propSize, propName, schemaName ); - } - } - #endif - - #if 0 // Trace_PackageForJPEG *** Xcode 2.3 on 10.4.7 has bugs in backwards iteration - if ( ! propSizes.empty() ) { - printf ( " Top level property map, largest to smallest:\n" ); - PropSizeMap::iterator mapPos = propSizes.end(); - PropSizeMap::iterator mapBegin = propSizes.begin(); - for ( --mapPos; true; --mapPos ) { - size_t propSize = mapPos->first; - const char * schemaName = mapPos->second.first->c_str(); - const char * propName = mapPos->second.second->c_str(); - printf ( " %d bytes, %s in %s\n", propSize, propName, schemaName ); - if ( mapPos == mapBegin ) break; - } - } - #endif - - // Outer loop to make sure enough is actually moved. - - while ( (tempLen > kStdXMPLimit) && (! propSizes.empty()) ) { - - // Inner loop, move what seems to be enough according to the estimates. - - while ( (tempLen > kStdXMPLimit) && (! propSizes.empty()) ) { - - size_t propSize = MoveLargestProperty ( stdXMP, &extXMP, propSizes ); - XMP_Assert ( propSize > 0 ); - - if ( propSize > tempLen ) propSize = tempLen; // ! Don't go negative. - tempLen -= propSize; - - } - - // Reserialize the remaining standard XMP. - - stdXMP.SerializeToBuffer ( &tempStr, &tempLen, keepItSmall, 1, "", "", 0 ); - - } - - } - - if ( tempLen > kStdXMPLimit ) { - // Still doesn't fit, throw an exception and let the client decide what to do. - // ! This should never happen with the policy of moving any and all top level properties. - XMP_Throw ( "Can't reduce XMP enough for JPEG file", kXMPErr_TooLargeForJPEG ); - } - - // Set the static output strings. - - if ( extXMP.tree.children.empty() ) { - - // Just have the standard XMP. - sStandardXMP->assign ( tempStr, tempLen ); - - } else { - - // Have extended XMP. Serialize it, compute the digest, reset xmpNote:HasExtendedXMP, and - // reserialize the standard XMP. - - extXMP.SerializeToBuffer ( &tempStr, &tempLen, (keepItSmall | kXMP_OmitPacketWrapper), 0, "", "", 0 ); - sExtendedXMP->assign ( tempStr, tempLen ); - - MD5_CTX context; - XMP_Uns8 digest [16]; - MD5Init ( &context ); - MD5Update ( &context, (XMP_Uns8*)tempStr, tempLen ); - MD5Final ( digest, &context ); - - sExtendedDigest->reserve ( 32 ); - for ( size_t i = 0; i < 16; ++i ) { - XMP_Uns8 byte = digest[i]; - sExtendedDigest->push_back ( kHexDigits [ byte>>4 ] ); - sExtendedDigest->push_back ( kHexDigits [ byte&0xF ] ); - } - - stdXMP.SetProperty ( kXMP_NS_XMP_Note, "HasExtendedXMP", sExtendedDigest->c_str(), 0 ); - stdXMP.SerializeToBuffer ( &tempStr, &tempLen, keepItSmall, 1, "", "", 0 ); - sStandardXMP->assign ( tempStr, tempLen ); - - } - - // Adjust the standard XMP padding to be up to 2KB. - - XMP_Assert ( (sStandardXMP->size() > kTrailerLen) && (sStandardXMP->size() <= kStdXMPLimit) ); - const char * packetEnd = 0; - packetEnd = sStandardXMP->c_str() + sStandardXMP->size() - kTrailerLen; - XMP_Assert ( XMP_LitMatch ( packetEnd, kPacketTrailer ) ); - - size_t extraPadding = kStdXMPLimit - sStandardXMP->size(); // ! Do this before erasing the trailer. - if ( extraPadding > 2047 ) extraPadding = 2047; - sStandardXMP->erase ( sStandardXMP->size() - kTrailerLen ); - sStandardXMP->append ( extraPadding, ' ' ); - sStandardXMP->append ( kPacketTrailer ); - - // Assign the output pointer and sizes. - - *stdStr = sStandardXMP->c_str(); - *stdLen = sStandardXMP->size(); - *extStr = sExtendedXMP->c_str(); - *extLen = sExtendedXMP->size(); - *digestStr = sExtendedDigest->c_str(); - *digestLen = sExtendedDigest->size(); - -} // PackageForJPEG - - -// ------------------------------------------------------------------------------------------------- -// MergeFromJPEG -// ------------- -// -// Copy all of the top level properties from extendedXMP to fullXMP, replacing any duplicates. -// Delete the xmpNote:HasExtendedXMP property from fullXMP. - -/* class static */ void -XMPUtils::MergeFromJPEG ( XMPMeta * fullXMP, - const XMPMeta & extendedXMP ) -{ - - XMPUtils::AppendProperties ( extendedXMP, fullXMP, kXMPUtil_DoAllProperties ); - fullXMP->DeleteProperty ( kXMP_NS_XMP_Note, "HasExtendedXMP" ); - -} // MergeFromJPEG - - -// ------------------------------------------------------------------------------------------------- -// CurrentDateTime -// --------------- - -/* class static */ void -XMPUtils::CurrentDateTime ( XMP_DateTime * xmpTime ) -{ - XMP_Assert ( xmpTime != 0 ); // ! Enforced by wrapper. - - ansi_tt binTime = ansi_time(0); - if ( binTime == -1 ) XMP_Throw ( "Failure from ANSI C time function", kXMPErr_ExternalFailure ); - ansi_tm currTime; - ansi_localtime ( &binTime, &currTime ); - - xmpTime->year = currTime.tm_year + 1900; - xmpTime->month = currTime.tm_mon + 1; - xmpTime->day = currTime.tm_mday; - xmpTime->hour = currTime.tm_hour; - xmpTime->minute = currTime.tm_min; - xmpTime->second = currTime.tm_sec; - - xmpTime->nanoSecond = 0; - xmpTime->tzSign = 0; - xmpTime->tzHour = 0; - xmpTime->tzMinute = 0; - - XMPUtils::SetTimeZone ( xmpTime ); - -} // CurrentDateTime - - -// ------------------------------------------------------------------------------------------------- -// SetTimeZone -// ----------- -// -// Sets just the time zone part of the time. Useful for determining the local time zone or for -// converting a "zone-less" time to a proper local time. The ANSI C time functions are smart enough -// to do all the right stuff, as long as we call them properly! - -/* class static */ void -XMPUtils::SetTimeZone ( XMP_DateTime * xmpTime ) -{ - XMP_Assert ( xmpTime != 0 ); // ! Enforced by wrapper. - - if ( (xmpTime->tzSign != 0) || (xmpTime->tzHour != 0) || (xmpTime->tzMinute != 0) ) { - XMP_Throw ( "SetTimeZone can only be used on \"zoneless\" times", kXMPErr_BadParam ); - } - - // Create ansi_tt form of the input time. Need the ansi_tm form to make the ansi_tt form. - - ansi_tt ttTime; - ansi_tm tmLocal, tmUTC; - - if ( (xmpTime->year == 0) && (xmpTime->month == 0) && (xmpTime->day == 0) ) { - ansi_tt now = ansi_time(0); - if ( now == -1 ) XMP_Throw ( "Failure from ANSI C time function", kXMPErr_ExternalFailure ); - ansi_localtime ( &now, &tmLocal ); - } else { - tmLocal.tm_year = xmpTime->year - 1900; - while ( tmLocal.tm_year < 70 ) tmLocal.tm_year += 4; // ! Some versions of mktime barf on years before 1970. - tmLocal.tm_mon = xmpTime->month - 1; - tmLocal.tm_mday = xmpTime->day; - } - - tmLocal.tm_hour = xmpTime->hour; - tmLocal.tm_min = xmpTime->minute; - tmLocal.tm_sec = xmpTime->second; - tmLocal.tm_isdst = -1; // Don't know if daylight time is in effect. - - ttTime = ansi_mktime ( &tmLocal ); - if ( ttTime == -1 ) XMP_Throw ( "Failure from ANSI C mktime function", kXMPErr_ExternalFailure ); - - // Convert back to a localized ansi_tm time and get the corresponding UTC ansi_tm time. - - ansi_localtime ( &ttTime, &tmLocal ); - ansi_gmtime ( &ttTime, &tmUTC ); - - // Get the offset direction and amount. - - ansi_tm tmx = tmLocal; // ! Note that mktime updates the ansi_tm parameter, messing up difftime! - ansi_tm tmy = tmUTC; - tmx.tm_isdst = tmy.tm_isdst = 0; - ansi_tt ttx = ansi_mktime ( &tmx ); - ansi_tt tty = ansi_mktime ( &tmy ); - double diffSecs; - - if ( (ttx != -1) && (tty != -1) ) { - diffSecs = ansi_difftime ( ttx, tty ); - } else { - #if XMP_MacBuild - // Looks like Apple's mktime is buggy - see W1140533. But the offset is visible. - diffSecs = tmLocal.tm_gmtoff; - #else - // Win and UNIX don't have a visible offset. Make sure we know about the failure, - // then try using the current date/time as a close fallback. - ttTime = ansi_time(0); - if ( ttTime == -1 ) XMP_Throw ( "Failure from ANSI C time function", kXMPErr_ExternalFailure ); - ansi_localtime ( &ttTime, &tmx ); - ansi_gmtime ( &ttTime, &tmy ); - tmx.tm_isdst = tmy.tm_isdst = 0; - ttx = ansi_mktime ( &tmx ); - tty = ansi_mktime ( &tmy ); - if ( (ttx == -1) || (tty == -1) ) XMP_Throw ( "Failure from ANSI C mktime function", kXMPErr_ExternalFailure ); - diffSecs = ansi_difftime ( ttx, tty ); - #endif - } - - if ( diffSecs > 0.0 ) { - xmpTime->tzSign = kXMP_TimeEastOfUTC; - } else if ( diffSecs == 0.0 ) { - xmpTime->tzSign = kXMP_TimeIsUTC; - } else { - xmpTime->tzSign = kXMP_TimeWestOfUTC; - diffSecs = -diffSecs; - } - xmpTime->tzHour = XMP_Int32 ( diffSecs / 3600.0 ); - xmpTime->tzMinute = XMP_Int32 ( (diffSecs / 60.0) - (xmpTime->tzHour * 60.0) ); - - // *** Save the tm_isdst flag in a qualifier? - - XMP_Assert ( (0 <= xmpTime->tzHour) && (xmpTime->tzHour <= 23) ); - XMP_Assert ( (0 <= xmpTime->tzMinute) && (xmpTime->tzMinute <= 59) ); - XMP_Assert ( (-1 <= xmpTime->tzSign) && (xmpTime->tzSign <= +1) ); - XMP_Assert ( (xmpTime->tzSign == 0) ? ((xmpTime->tzHour == 0) && (xmpTime->tzMinute == 0)) : - ((xmpTime->tzHour != 0) || (xmpTime->tzMinute != 0)) ); - -} // SetTimeZone - - -// ------------------------------------------------------------------------------------------------- -// ConvertToUTCTime -// ---------------- - -/* class static */ void -XMPUtils::ConvertToUTCTime ( XMP_DateTime * time ) -{ - XMP_Assert ( time != 0 ); // ! Enforced by wrapper. - - XMP_Assert ( (0 <= time->tzHour) && (time->tzHour <= 23) ); - XMP_Assert ( (0 <= time->tzMinute) && (time->tzMinute <= 59) ); - XMP_Assert ( (-1 <= time->tzSign) && (time->tzSign <= +1) ); - XMP_Assert ( (time->tzSign == 0) ? ((time->tzHour == 0) && (time->tzMinute == 0)) : - ((time->tzHour != 0) || (time->tzMinute != 0)) ); - - if ( time->tzSign == kXMP_TimeEastOfUTC ) { - // We are before (east of) GMT, subtract the offset from the time. - time->hour -= time->tzHour; - time->minute -= time->tzMinute; - } else if ( time->tzSign == kXMP_TimeWestOfUTC ) { - // We are behind (west of) GMT, add the offset to the time. - time->hour += time->tzHour; - time->minute += time->tzMinute; - } - - AdjustTimeOverflow ( time ); - time->tzSign = time->tzHour = time->tzMinute = 0; - -} // ConvertToUTCTime - - -// ------------------------------------------------------------------------------------------------- -// ConvertToLocalTime -// ------------------ - -/* class static */ void -XMPUtils::ConvertToLocalTime ( XMP_DateTime * time ) -{ - XMP_Assert ( time != 0 ); // ! Enforced by wrapper. - - XMP_Assert ( (0 <= time->tzHour) && (time->tzHour <= 23) ); - XMP_Assert ( (0 <= time->tzMinute) && (time->tzMinute <= 59) ); - XMP_Assert ( (-1 <= time->tzSign) && (time->tzSign <= +1) ); - XMP_Assert ( (time->tzSign == 0) ? ((time->tzHour == 0) && (time->tzMinute == 0)) : - ((time->tzHour != 0) || (time->tzMinute != 0)) ); - - ConvertToUTCTime ( time ); // The existing time zone might not be the local one. - SetTimeZone ( time ); // Fill in the local timezone offset, then adjust the time. - - if ( time->tzSign > 0 ) { - // We are before (east of) GMT, add the offset to the time. - time->hour += time->tzHour; - time->minute += time->tzMinute; - } else if ( time->tzSign < 0 ) { - // We are behind (west of) GMT, subtract the offset from the time. - time->hour -= time->tzHour; - time->minute -= time->tzMinute; - } - - AdjustTimeOverflow ( time ); - -} // ConvertToLocalTime - - -// ------------------------------------------------------------------------------------------------- -// CompareDateTime -// --------------- - -/* class static */ int -XMPUtils::CompareDateTime ( const XMP_DateTime & _in_left, - const XMP_DateTime & _in_right ) -{ - int result; - - XMP_DateTime left = _in_left; - XMP_DateTime right = _in_right; - - ConvertToUTCTime ( &left ); - ConvertToUTCTime ( &right ); - - // *** We could use memcmp if the XMP_DateTime stuct has no holes. - - if ( left.year < right.year ) { - result = -1; - } else if ( left.year > right.year ) { - result = +1; - } else if ( left.month < right.month ) { - result = -1; - } else if ( left.month > right.month ) { - result = +1; - } else if ( left.day < right.day ) { - result = -1; - } else if ( left.day > right.day ) { - result = +1; - } else if ( left.hour < right.hour ) { - result = -1; - } else if ( left.hour > right.hour ) { - result = +1; - } else if ( left.minute < right.minute ) { - result = -1; - } else if ( left.minute > right.minute ) { - result = +1; - } else if ( left.second < right.second ) { - result = -1; - } else if ( left.second > right.second ) { - result = +1; - } else if ( left.nanoSecond < right.nanoSecond ) { - result = -1; - } else if ( left.nanoSecond > right.nanoSecond ) { - result = +1; - } else { - result = 0; - } - - return result; - -} // CompareDateTime - -// ================================================================================================= diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPUtils.hpp b/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPUtils.hpp deleted file mode 100644 index e1c7e78d01d..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMPUtils.hpp +++ /dev/null @@ -1,221 +0,0 @@ -#ifndef __XMPUtils_hpp__ -#define __XMPUtils_hpp__ - -// ================================================================================================= -// Copyright 2002-2007 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= - -#include "XMP_Environment.h" -#include "XMP_Const.h" - -#include "XMPMeta.hpp" -#include "XMPCore_Impl.hpp" -#include "client-glue/WXMPUtils.hpp" - -// ------------------------------------------------------------------------------------------------- - -extern XMP_VarString * sComposedPath; // *** Only really need 1 string. Shrink periodically? -extern XMP_VarString * sConvertedValue; -extern XMP_VarString * sBase64Str; -extern XMP_VarString * sCatenatedItems; -extern XMP_VarString * sStandardXMP; -extern XMP_VarString * sExtendedXMP; -extern XMP_VarString * sExtendedDigest; - -// ------------------------------------------------------------------------------------------------- - -class XMPUtils { -public: - - static bool - Initialize(); // ! For internal use only! - - static void - Terminate() RELEASE_NO_THROW; // ! For internal use only! - - static void - Unlock ( XMP_OptionBits options ); - - // --------------------------------------------------------------------------------------------- - - static void - ComposeArrayItemPath ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_Index itemIndex, - XMP_StringPtr * fullPath, - XMP_StringLen * pathSize ); - - static void - ComposeStructFieldPath ( XMP_StringPtr schemaNS, - XMP_StringPtr structName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - XMP_StringPtr * fullPath, - XMP_StringLen * pathSize ); - - static void - ComposeQualifierPath ( XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_StringPtr qualNS, - XMP_StringPtr qualName, - XMP_StringPtr * fullPath, - XMP_StringLen * pathSize ); - - static void - ComposeLangSelector ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr langName, - XMP_StringPtr * fullPath, - XMP_StringLen * pathSize ); - - static void - ComposeFieldSelector ( XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr fieldNS, - XMP_StringPtr fieldName, - XMP_StringPtr fieldValue, - XMP_StringPtr * fullPath, - XMP_StringLen * pathSize ); - - // --------------------------------------------------------------------------------------------- - - static void - ConvertFromBool ( bool binValue, - XMP_StringPtr * strValue, - XMP_StringLen * strSize ); - - static void - ConvertFromInt ( XMP_Int32 binValue, - XMP_StringPtr format, - XMP_StringPtr * strValue, - XMP_StringLen * strSize ); - - static void - ConvertFromInt64 ( XMP_Int64 binValue, - XMP_StringPtr format, - XMP_StringPtr * strValue, - XMP_StringLen * strSize ); - - static void - ConvertFromFloat ( double binValue, - XMP_StringPtr format, - XMP_StringPtr * strValue, - XMP_StringLen * strSize ); - - static void - ConvertFromDate ( const XMP_DateTime & binValue, - XMP_StringPtr * strValue, - XMP_StringLen * strSize ); - - // --------------------------------------------------------------------------------------------- - - static bool - ConvertToBool ( XMP_StringPtr strValue ); - - static XMP_Int32 - ConvertToInt ( XMP_StringPtr strValue ); - - static XMP_Int64 - ConvertToInt64 ( XMP_StringPtr strValue ); - - static double - ConvertToFloat ( XMP_StringPtr strValue ); - - static void - ConvertToDate ( XMP_StringPtr strValue, - XMP_DateTime * binValue ); - - // --------------------------------------------------------------------------------------------- - - static void - CurrentDateTime ( XMP_DateTime * time ); - - static void - SetTimeZone ( XMP_DateTime * time ); - - static void - ConvertToUTCTime ( XMP_DateTime * time ); - - static void - ConvertToLocalTime ( XMP_DateTime * time ); - - static int - CompareDateTime ( const XMP_DateTime & left, - const XMP_DateTime & right ); - // --------------------------------------------------------------------------------------------- - - static void - EncodeToBase64 ( XMP_StringPtr rawStr, - XMP_StringLen rawLen, - XMP_StringPtr * encodedStr, - XMP_StringLen * encodedLen ); - - static void - DecodeFromBase64 ( XMP_StringPtr encodedStr, - XMP_StringLen encodedLen, - XMP_StringPtr * rawStr, - XMP_StringLen * rawLen ); - - // --------------------------------------------------------------------------------------------- - - static void - PackageForJPEG ( const XMPMeta & xmpObj, - XMP_StringPtr * stdStr, - XMP_StringLen * stdLen, - XMP_StringPtr * extStr, - XMP_StringLen * extLen, - XMP_StringPtr * digestStr, - XMP_StringLen * digestLen ); - - static void - MergeFromJPEG ( XMPMeta * fullXMP, - const XMPMeta & extendedXMP ); - - // --------------------------------------------------------------------------------------------- - - static void - CatenateArrayItems ( const XMPMeta & xmpObj, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_StringPtr separator, - XMP_StringPtr quotes, - XMP_OptionBits options, - XMP_StringPtr * catedStr, - XMP_StringLen * catedLen ); - - static void - SeparateArrayItems ( XMPMeta * xmpObj, - XMP_StringPtr schemaNS, - XMP_StringPtr arrayName, - XMP_OptionBits options, - XMP_StringPtr catedStr ); - - static void - RemoveProperties ( XMPMeta * xmpObj, - XMP_StringPtr schemaNS, - XMP_StringPtr propName, - XMP_OptionBits options ); - - static void - AppendProperties ( const XMPMeta & source, - XMPMeta * dest, - XMP_OptionBits options ); - - static void - DuplicateSubtree ( const XMPMeta & source, - XMPMeta * dest, - XMP_StringPtr sourceNS, - XMP_StringPtr sourceRoot, - XMP_StringPtr destNS, - XMP_StringPtr destRoot, - XMP_OptionBits options ); - -}; // XMPUtils - -// ================================================================================================= - -#endif // __XMPUtils_hpp__ diff --git a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMP_BuildInfo.h b/platform/win32/msvc/external/exiv2/xmpsdk/src/XMP_BuildInfo.h deleted file mode 100644 index 2b387c86fa5..00000000000 --- a/platform/win32/msvc/external/exiv2/xmpsdk/src/XMP_BuildInfo.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef __XMP_BuildInfo_h__ -#define __XMP_BuildInfo_h__ 1 - -/* --------------------------------------------------------------------------------------------- */ -/* ** IMPORTANT ** This file must be usable by strict ANSI C compilers. No "//" comments, etc. */ -/* --------------------------------------------------------------------------------------------- */ - -/* -// ================================================================================================= -// Copyright 2002-2008 Adobe Systems Incorporated -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms -// of the Adobe license agreement accompanying it. -// ================================================================================================= -*/ - -#define kXMP_Copyright Copyright (c) 2002-2008, Adobe Systems Incorporated -#define kXMP_CopyrightStr "Copyright (c) 2002-2008, Adobe Systems Incorporated" -#define kXMP_AdobeIPStr "" - -#endif /* __XMP_BuildInfo_h__ */ diff --git a/platform/win32/msvc/external/expat/.gitignore b/platform/win32/msvc/external/expat/.gitignore deleted file mode 100644 index 5f3fc226857..00000000000 --- a/platform/win32/msvc/external/expat/.gitignore +++ /dev/null @@ -1 +0,0 @@ -!*.vcxproj diff --git a/platform/win32/msvc/external/expat/COPYING b/platform/win32/msvc/external/expat/COPYING deleted file mode 100644 index dcb45064296..00000000000 --- a/platform/win32/msvc/external/expat/COPYING +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd - and Clark Cooper -Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/platform/win32/msvc/external/expat/Changes b/platform/win32/msvc/external/expat/Changes deleted file mode 100644 index 08897b9f9ed..00000000000 --- a/platform/win32/msvc/external/expat/Changes +++ /dev/null @@ -1,205 +0,0 @@ -Release 2.1.0 Sat March 24 2012 - - Bug Fixes: - #1742315: Harmful XML_ParserCreateNS suggestion. - #2895533: CVE-2012-1147 - Resource leak in readfilemap.c. - #1785430: Expat build fails on linux-amd64 with gcc version>=4.1 -O3. - #1983953, 2517952, 2517962, 2649838: - Build modifications using autoreconf instead of buildconf.sh. - #2815947, #2884086: OBJEXT and EXEEXT support while building. - #1990430: CVE-2009-3720 - Parser crash with special UTF-8 sequences. - #2517938: xmlwf should return non-zero exit status if not well-formed. - #2517946: Wrong statement about XMLDecl in xmlwf.1 and xmlwf.sgml. - #2855609: Dangling positionPtr after error. - #2894085: CVE-2009-3560 - Buffer over-read and crash in big2_toUtf8(). - #2958794: CVE-2012-1148 - Memory leak in poolGrow. - #2990652: CMake support. - #3010819: UNEXPECTED_STATE with a trailing "%" in entity value. - #3206497: Unitialized memory returned from XML_Parse. - #3287849: make check fails on mingw-w64. - #3496608: CVE-2012-0876 - Hash DOS attack. - - Patches: - #1749198: pkg-config support. - #3010222: Fix for bug #3010819. - #3312568: CMake support. - #3446384: Report byte offsets for attr names and values. - - New Features / API changes: - Added new API member XML_SetHashSalt() that allows setting an intial - value (salt) for hash calculations. This is part of the fix for - bug #3496608 to randomize hash parameters. - When compiled with XML_ATTR_INFO defined, adds new API member - XML_GetAttributeInfo() that allows retrieving the byte - offsets for attribute names and values (patch #3446384). - Added CMake build system. - See bug #2990652 and patch #3312568. - Added run-benchmark target to Makefile.in - relies on testdata module - present in the same relative location as in the repository. - -Release 2.0.1 Tue June 5 2007 - - Fixed bugs #1515266, #1515600: The character data handler's calling - of XML_StopParser() was not handled properly; if the parser was - stopped and the handler set to NULL, the parser would segfault. - - Fixed bug #1690883: Expat failed on EBCDIC systems as it assumed - some character constants to be ASCII encoded. - - Minor cleanups of the test harness. - - Fixed xmlwf bug #1513566: "out of memory" error on file size zero. - - Fixed outline.c bug #1543233: missing a final XML_ParserFree() call. - - Fixes and improvements for Windows platform: - bugs #1409451, #1476160, #1548182, #1602769, #1717322. - - Build fixes for various platforms: - HP-UX, Tru64, Solaris 9: patch #1437840, bug #1196180. - All Unix: #1554618 (refreshed config.sub/config.guess). - #1490371, #1613457: support both, DESTDIR and INSTALL_ROOT, - without relying on GNU-Make specific features. - #1647805: Patched configure.in to work better with Intel compiler. - - Fixes to Makefile.in to have make check work correctly: - bugs #1408143, #1535603, #1536684. - - Added Open Watcom support: patch #1523242. - -Release 2.0.0 Wed Jan 11 2006 - - We no longer use the "check" library for C unit testing; we - always use the (partial) internal implementation of the API. - - Report XML_NS setting via XML_GetFeatureList(). - - Fixed headers for use from C++. - - XML_GetCurrentLineNumber() and XML_GetCurrentColumnNumber() - now return unsigned integers. - - Added XML_LARGE_SIZE switch to enable 64-bit integers for - byte indexes and line/column numbers. - - Updated to use libtool 1.5.22 (the most recent). - - Added support for AmigaOS. - - Some mostly minor bug fixes. SF issues include: #1006708, - #1021776, #1023646, #1114960, #1156398, #1221160, #1271642. - -Release 1.95.8 Fri Jul 23 2004 - - Major new feature: suspend/resume. Handlers can now request - that a parse be suspended for later resumption or aborted - altogether. See "Temporarily Stopping Parsing" in the - documentation for more details. - - Some mostly minor bug fixes, but compilation should no - longer generate warnings on most platforms. SF issues - include: #827319, #840173, #846309, #888329, #896188, #923913, - #928113, #961698, #985192. - -Release 1.95.7 Mon Oct 20 2003 - - Fixed enum XML_Status issue (reported on SourceForge many - times), so compilers that are properly picky will be happy. - - Introduced an XMLCALL macro to control the calling - convention used by the Expat API; this macro should be used - to annotate prototypes and definitions of callback - implementations in code compiled with a calling convention - other than the default convention for the host platform. - - Improved ability to build without the configure-generated - expat_config.h header. This is useful for applications - which embed Expat rather than linking in the library. - - Fixed a variety of bugs: see SF issues #458907, #609603, - #676844, #679754, #692878, #692964, #695401, #699323, #699487, - #820946. - - Improved hash table lookups. - - Added more regression tests and improved documentation. - -Release 1.95.6 Tue Jan 28 2003 - - Added XML_FreeContentModel(). - - Added XML_MemMalloc(), XML_MemRealloc(), XML_MemFree(). - - Fixed a variety of bugs: see SF issues #615606, #616863, - #618199, #653180, #673791. - - Enhanced the regression test suite. - - Man page improvements: includes SF issue #632146. - -Release 1.95.5 Fri Sep 6 2002 - - Added XML_UseForeignDTD() for improved SAX2 support. - - Added XML_GetFeatureList(). - - Defined XML_Bool type and the values XML_TRUE and XML_FALSE. - - Use an incomplete struct instead of a void* for the parser - (may not retain). - - Fixed UTF-8 decoding bug that caused legal UTF-8 to be rejected. - - Finally fixed bug where default handler would report DTD - events that were already handled by another handler. - Initial patch contributed by Darryl Miles. - - Removed unnecessary DllMain() function that caused static - linking into a DLL to be difficult. - - Added VC++ projects for building static libraries. - - Reduced line-length for all source code and headers to be - no longer than 80 characters, to help with AS/400 support. - - Reduced memory copying during parsing (SF patch #600964). - - Fixed a variety of bugs: see SF issues #580793, #434664, - #483514, #580503, #581069, #584041, #584183, #584832, #585537, - #596555, #596678, #598352, #598944, #599715, #600479, #600971. - -Release 1.95.4 Fri Jul 12 2002 - - Added support for VMS, contributed by Craig Berry. See - vms/README.vms for more information. - - Added Mac OS (classic) support, with a makefile for MPW, - contributed by Thomas Wegner and Daryle Walker. - - Added Borland C++ Builder 5 / BCC 5.5 support, contributed - by Patrick McConnell (SF patch #538032). - - Fixed a variety of bugs: see SF issues #441449, #563184, - #564342, #566334, #566901, #569461, #570263, #575168, #579196. - - Made skippedEntityHandler conform to SAX2 (see source comment) - - Re-implemented WFC: Entity Declared from XML 1.0 spec and - added a new error "entity declared in parameter entity": - see SF bug report #569461 and SF patch #578161 - - Re-implemented section 5.1 from XML 1.0 spec: - see SF bug report #570263 and SF patch #578161 - -Release 1.95.3 Mon Jun 3 2002 - - Added a project to the MSVC workspace to create a wchar_t - version of the library; the DLLs are named libexpatw.dll. - - Changed the name of the Windows DLLs from expat.dll to - libexpat.dll; this fixes SF bug #432456. - - Added the XML_ParserReset() API function. - - Fixed XML_SetReturnNSTriplet() to work for element names. - - Made the XML_UNICODE builds usable (thanks, Karl!). - - Allow xmlwf to read from standard input. - - Install a man page for xmlwf on Unix systems. - - Fixed many bugs; see SF bug reports #231864, #461380, #464837, - #466885, #469226, #477667, #484419, #487840, #494749, #496505, - #547350. Other bugs which we can't test as easily may also - have been fixed, especially in the area of build support. - -Release 1.95.2 Fri Jul 27 2001 - - More changes to make MSVC happy with the build; add a single - workspace to support both the library and xmlwf application. - - Added a Windows installer for Windows users; includes - xmlwf.exe. - - Added compile-time constants that can be used to determine the - Expat version - - Removed a lot of GNU-specific dependencies to aide portability - among the various Unix flavors. - - Fix the UTF-8 BOM bug. - - Cleaned up warning messages for several compilers. - - Added the -Wall, -Wstrict-prototypes options for GCC. - -Release 1.95.1 Sun Oct 22 15:11:36 EDT 2000 - - Changes to get expat to build under Microsoft compiler - - Removed all aborts and instead return an UNEXPECTED_STATE error. - - Fixed a bug where a stray '%' in an entity value would cause an - abort. - - Defined XML_SetEndNamespaceDeclHandler. Thanks to Darryl Miles for - finding this oversight. - - Changed default patterns in lib/Makefile.in to fit non-GNU makes - Thanks to robin@unrated.net for reporting and providing an - account to test on. - - The reference had the wrong label for XML_SetStartNamespaceDecl. - Reported by an anonymous user. - -Release 1.95.0 Fri Sep 29 2000 - - XML_ParserCreate_MM - Allows you to set a memory management suite to replace the - standard malloc,realloc, and free. - - XML_SetReturnNSTriplet - If you turn this feature on when namespace processing is in - effect, then qualified, prefixed element and attribute names - are returned as "uri|name|prefix" where '|' is whatever - separator character is used in namespace processing. - - Merged in features from perl-expat - o XML_SetElementDeclHandler - o XML_SetAttlistDeclHandler - o XML_SetXmlDeclHandler - o XML_SetEntityDeclHandler - o StartDoctypeDeclHandler takes 3 additional parameters: - sysid, pubid, has_internal_subset - o Many paired handler setters (like XML_SetElementHandler) - now have corresponding individual handler setters - o XML_GetInputContext for getting the input context of - the current parse position. - - Added reference material - - Packaged into a distribution that builds a sharable library diff --git a/platform/win32/msvc/external/expat/MANIFEST b/platform/win32/msvc/external/expat/MANIFEST deleted file mode 100644 index 7a020dc05b0..00000000000 --- a/platform/win32/msvc/external/expat/MANIFEST +++ /dev/null @@ -1,141 +0,0 @@ -amiga/launch.c -amiga/expat_68k.c -amiga/expat_68k.h -amiga/expat_68k_handler_stubs.c -amiga/expat_base.h -amiga/expat_vectors.c -amiga/expat_lib.c -amiga/expat.xml -amiga/README.txt -amiga/Makefile -amiga/include/proto/expat.h -amiga/include/libraries/expat.h -amiga/include/interfaces/expat.h -amiga/include/inline4/expat.h -bcb5/README.txt -bcb5/all_projects.bpg -bcb5/elements.bpf -bcb5/elements.bpr -bcb5/elements.mak -bcb5/expat.bpf -bcb5/expat.bpr -bcb5/expat.mak -bcb5/expat_static.bpf -bcb5/expat_static.bpr -bcb5/expat_static.mak -bcb5/expatw.bpf -bcb5/expatw.bpr -bcb5/expatw.mak -bcb5/expatw_static.bpf -bcb5/expatw_static.bpr -bcb5/expatw_static.mak -bcb5/libexpat_mtd.def -bcb5/libexpatw_mtd.def -bcb5/makefile.mak -bcb5/outline.bpf -bcb5/outline.bpr -bcb5/outline.mak -bcb5/setup.bat -bcb5/xmlwf.bpf -bcb5/xmlwf.bpr -bcb5/xmlwf.mak -doc/expat.png -doc/reference.html -doc/style.css -doc/valid-xhtml10.png -doc/xmlwf.1 -doc/xmlwf.sgml -CMakeLists.txt -CMake.README -COPYING -Changes -ConfigureChecks.cmake -MANIFEST -Makefile.in -README -configure -configure.in -expat_config.h.in -expat_config.h.cmake -expat.pc.in -expat.dsw -aclocal.m4 -conftools/PrintPath -conftools/ac_c_bigendian_cross.m4 -conftools/expat.m4 -conftools/get-version.sh -conftools/mkinstalldirs -conftools/config.guess -conftools/config.sub -conftools/install-sh -conftools/ltmain.sh -m4/libtool.m4 -m4/ltversion.m4 -m4/ltoptions.m4 -m4/ltsugar.m4 -m4/lt~obsolete.m4 -examples/elements.c -examples/elements.dsp -examples/outline.c -examples/outline.dsp -lib/Makefile.MPW -lib/amigaconfig.h -lib/ascii.h -lib/asciitab.h -lib/expat.dsp -lib/expat.h -lib/expat_external.h -lib/expat_static.dsp -lib/expatw.dsp -lib/expatw_static.dsp -lib/iasciitab.h -lib/internal.h -lib/latin1tab.h -lib/libexpat.def -lib/libexpatw.def -lib/macconfig.h -lib/nametab.h -lib/utf8tab.h -lib/winconfig.h -lib/xmlparse.c -lib/xmlrole.c -lib/xmlrole.h -lib/xmltok.c -lib/xmltok.h -lib/xmltok_impl.c -lib/xmltok_impl.h -lib/xmltok_ns.c -tests/benchmark/README.txt -tests/benchmark/benchmark.c -tests/benchmark/benchmark.dsp -tests/benchmark/benchmark.dsw -tests/README.txt -tests/chardata.c -tests/chardata.h -tests/minicheck.c -tests/minicheck.h -tests/runtests.c -tests/runtestspp.cpp -tests/xmltest.sh -vms/README.vms -vms/descrip.mms -vms/expat_config.h -win32/MANIFEST.txt -win32/README.txt -win32/expat.iss -xmlwf/codepage.c -xmlwf/codepage.h -xmlwf/ct.c -xmlwf/filemap.h -xmlwf/readfilemap.c -xmlwf/unixfilemap.c -xmlwf/win32filemap.c -xmlwf/xmlfile.c -xmlwf/xmlfile.h -xmlwf/xmlmime.c -xmlwf/xmlmime.h -xmlwf/xmltchar.h -xmlwf/xmlurl.h -xmlwf/xmlwf.c -xmlwf/xmlwf.dsp -xmlwf/xmlwin32url.cxx diff --git a/platform/win32/msvc/external/expat/README b/platform/win32/msvc/external/expat/README deleted file mode 100644 index 1f88467d1b0..00000000000 --- a/platform/win32/msvc/external/expat/README +++ /dev/null @@ -1,139 +0,0 @@ - - Expat, Release 2.1.0 - -This is Expat, a C library for parsing XML, written by James Clark. -Expat is a stream-oriented XML parser. This means that you register -handlers with the parser before starting the parse. These handlers -are called when the parser discovers the associated structures in the -document being parsed. A start tag is an example of the kind of -structures for which you may register handlers. - -Windows users should use the expat_win32bin package, which includes -both precompiled libraries and executables, and source code for -developers. - -Expat is free software. You may copy, distribute, and modify it under -the terms of the License contained in the file COPYING distributed -with this package. This license is the same as the MIT/X Consortium -license. - -Versions of Expat that have an odd minor version (the middle number in -the release above), are development releases and should be considered -as beta software. Releases with even minor version numbers are -intended to be production grade software. - -If you are building Expat from a check-out from the CVS repository, -you need to run a script that generates the configure script using the -GNU autoconf and libtool tools. To do this, you need to have -autoconf 2.58 or newer. Run the script like this: - - ./buildconf.sh - -Once this has been done, follow the same instructions as for building -from a source distribution. - -To build Expat from a source distribution, you first run the -configuration shell script in the top level distribution directory: - - ./configure - -There are many options which you may provide to configure (which you -can discover by running configure with the --help option). But the -one of most interest is the one that sets the installation directory. -By default, the configure script will set things up to install -libexpat into /usr/local/lib, expat.h into /usr/local/include, and -xmlwf into /usr/local/bin. If, for example, you'd prefer to install -into /home/me/mystuff/lib, /home/me/mystuff/include, and -/home/me/mystuff/bin, you can tell configure about that with: - - ./configure --prefix=/home/me/mystuff - -Another interesting option is to enable 64-bit integer support for -line and column numbers and the over-all byte index: - - ./configure CPPFLAGS=-DXML_LARGE_SIZE - -However, such a modification would be a breaking change to the ABI -and is therefore not recommended for general use - e.g. as part of -a Linux distribution - but rather for builds with special requirements. - -After running the configure script, the "make" command will build -things and "make install" will install things into their proper -location. Have a look at the "Makefile" to learn about additional -"make" options. Note that you need to have write permission into -the directories into which things will be installed. - -If you are interested in building Expat to provide document -information in UTF-16 encoding rather than the default UTF-8, follow -these instructions (after having run "make distclean"): - - 1. For UTF-16 output as unsigned short (and version/error - strings as char), run: - - ./configure CPPFLAGS=-DXML_UNICODE - - For UTF-16 output as wchar_t (incl. version/error strings), - run: - - ./configure CFLAGS="-g -O2 -fshort-wchar" \ - CPPFLAGS=-DXML_UNICODE_WCHAR_T - - 2. Edit the MakeFile, changing: - - LIBRARY = libexpat.la - - to: - - LIBRARY = libexpatw.la - - (Note the additional "w" in the library name.) - - 3. Run "make buildlib" (which builds the library only). - Or, to save step 2, run "make buildlib LIBRARY=libexpatw.la". - - 4. Run "make installlib" (which installs the library only). - Or, if step 2 was omitted, run "make installlib LIBRARY=libexpatw.la". - -Using DESTDIR or INSTALL_ROOT is enabled, with INSTALL_ROOT being the default -value for DESTDIR, and the rest of the make file using only DESTDIR. -It works as follows: - $ make install DESTDIR=/path/to/image -overrides the in-makefile set DESTDIR, while both - $ INSTALL_ROOT=/path/to/image make install - $ make install INSTALL_ROOT=/path/to/image -use DESTDIR=$(INSTALL_ROOT), even if DESTDIR eventually is defined in the -environment, because variable-setting priority is -1) commandline -2) in-makefile -3) environment - -Note: This only applies to the Expat library itself, building UTF-16 versions -of xmlwf and the tests is currently not supported. - -Note for Solaris users: The "ar" command is usually located in -"/usr/ccs/bin", which is not in the default PATH. You will need to -add this to your path for the "make" command, and probably also switch -to GNU make (the "make" found in /usr/ccs/bin does not seem to work -properly -- appearantly it does not understand .PHONY directives). If -you're using ksh or bash, use this command to build: - - PATH=/usr/ccs/bin:$PATH make - -When using Expat with a project using autoconf for configuration, you -can use the probing macro in conftools/expat.m4 to determine how to -include Expat. See the comments at the top of that file for more -information. - -A reference manual is available in the file doc/reference.html in this -distribution. - -The homepage for this project is http://www.libexpat.org/. There -are links there to connect you to the bug reports page. If you need -to report a bug when you don't have access to a browser, you may also -send a bug report by email to expat-bugs@mail.libexpat.org. - -Discussion related to the direction of future expat development takes -place on expat-discuss@mail.libexpat.org. Archives of this list and -other Expat-related lists may be found at: - - http://mail.libexpat.org/mailman/listinfo/ diff --git a/platform/win32/msvc/external/expat/lib/ascii.h b/platform/win32/msvc/external/expat/lib/ascii.h deleted file mode 100644 index d10530b09bd..00000000000 --- a/platform/win32/msvc/external/expat/lib/ascii.h +++ /dev/null @@ -1,92 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#define ASCII_A 0x41 -#define ASCII_B 0x42 -#define ASCII_C 0x43 -#define ASCII_D 0x44 -#define ASCII_E 0x45 -#define ASCII_F 0x46 -#define ASCII_G 0x47 -#define ASCII_H 0x48 -#define ASCII_I 0x49 -#define ASCII_J 0x4A -#define ASCII_K 0x4B -#define ASCII_L 0x4C -#define ASCII_M 0x4D -#define ASCII_N 0x4E -#define ASCII_O 0x4F -#define ASCII_P 0x50 -#define ASCII_Q 0x51 -#define ASCII_R 0x52 -#define ASCII_S 0x53 -#define ASCII_T 0x54 -#define ASCII_U 0x55 -#define ASCII_V 0x56 -#define ASCII_W 0x57 -#define ASCII_X 0x58 -#define ASCII_Y 0x59 -#define ASCII_Z 0x5A - -#define ASCII_a 0x61 -#define ASCII_b 0x62 -#define ASCII_c 0x63 -#define ASCII_d 0x64 -#define ASCII_e 0x65 -#define ASCII_f 0x66 -#define ASCII_g 0x67 -#define ASCII_h 0x68 -#define ASCII_i 0x69 -#define ASCII_j 0x6A -#define ASCII_k 0x6B -#define ASCII_l 0x6C -#define ASCII_m 0x6D -#define ASCII_n 0x6E -#define ASCII_o 0x6F -#define ASCII_p 0x70 -#define ASCII_q 0x71 -#define ASCII_r 0x72 -#define ASCII_s 0x73 -#define ASCII_t 0x74 -#define ASCII_u 0x75 -#define ASCII_v 0x76 -#define ASCII_w 0x77 -#define ASCII_x 0x78 -#define ASCII_y 0x79 -#define ASCII_z 0x7A - -#define ASCII_0 0x30 -#define ASCII_1 0x31 -#define ASCII_2 0x32 -#define ASCII_3 0x33 -#define ASCII_4 0x34 -#define ASCII_5 0x35 -#define ASCII_6 0x36 -#define ASCII_7 0x37 -#define ASCII_8 0x38 -#define ASCII_9 0x39 - -#define ASCII_TAB 0x09 -#define ASCII_SPACE 0x20 -#define ASCII_EXCL 0x21 -#define ASCII_QUOT 0x22 -#define ASCII_AMP 0x26 -#define ASCII_APOS 0x27 -#define ASCII_MINUS 0x2D -#define ASCII_PERIOD 0x2E -#define ASCII_COLON 0x3A -#define ASCII_SEMI 0x3B -#define ASCII_LT 0x3C -#define ASCII_EQUALS 0x3D -#define ASCII_GT 0x3E -#define ASCII_LSQB 0x5B -#define ASCII_RSQB 0x5D -#define ASCII_UNDERSCORE 0x5F -#define ASCII_LPAREN 0x28 -#define ASCII_RPAREN 0x29 -#define ASCII_FF 0x0C -#define ASCII_SLASH 0x2F -#define ASCII_HASH 0x23 -#define ASCII_PIPE 0x7C -#define ASCII_COMMA 0x2C diff --git a/platform/win32/msvc/external/expat/lib/asciitab.h b/platform/win32/msvc/external/expat/lib/asciitab.h deleted file mode 100644 index 79a15c28ca1..00000000000 --- a/platform/win32/msvc/external/expat/lib/asciitab.h +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML, -/* 0x0C */ BT_NONXML, BT_CR, BT_NONXML, BT_NONXML, -/* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM, -/* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS, -/* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS, -/* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL, -/* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, -/* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, -/* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI, -/* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST, -/* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, -/* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, -/* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB, -/* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT, -/* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, -/* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, -/* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, -/* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER, diff --git a/platform/win32/msvc/external/expat/lib/expat.dsp b/platform/win32/msvc/external/expat/lib/expat.dsp deleted file mode 100644 index 6440d37f5bb..00000000000 --- a/platform/win32/msvc/external/expat/lib/expat.dsp +++ /dev/null @@ -1,185 +0,0 @@ -# Microsoft Developer Studio Project File - Name="expat" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=expat - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "expat.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "expat.mak" CFG="expat - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "expat - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "expat - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "expat - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "..\win32\bin\Release" -# PROP Intermediate_Dir "..\win32\tmp\Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COMPILED_FROM_DSP" /FD /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 /nologo /dll /machine:I386 -# ADD LINK32 /nologo /dll /pdb:none /machine:I386 /out:"..\win32\bin\Release\libexpat.dll" - -!ELSEIF "$(CFG)" == "expat - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "..\win32\bin\Debug" -# PROP Intermediate_Dir "..\win32\tmp\Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "_DEBUG" /D "COMPILED_FROM_DSP" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FR /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 /nologo /dll /pdb:none /debug /machine:I386 /out:"..\win32\bin\Debug\libexpat.dll" - -!ENDIF - -# Begin Target - -# Name "expat - Win32 Release" -# Name "expat - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\libexpat.def -# End Source File -# Begin Source File - -SOURCE=.\xmlparse.c - -!IF "$(CFG)" == "expat - Win32 Release" - -!ELSEIF "$(CFG)" == "expat - Win32 Debug" - -# ADD CPP /GX- /Od - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\xmlrole.c -# End Source File -# Begin Source File - -SOURCE=.\xmltok.c -# End Source File -# Begin Source File - -SOURCE=.\xmltok_impl.c -# End Source File -# Begin Source File - -SOURCE=.\xmltok_ns.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\ascii.h -# End Source File -# Begin Source File - -SOURCE=.\asciitab.h -# End Source File -# Begin Source File - -SOURCE=.\expat.h -# End Source File -# Begin Source File - -SOURCE=.\expat_external.h -# End Source File -# Begin Source File - -SOURCE=.\iasciitab.h -# End Source File -# Begin Source File - -SOURCE=.\internal.h -# End Source File -# Begin Source File - -SOURCE=.\latin1tab.h -# End Source File -# Begin Source File - -SOURCE=.\nametab.h -# End Source File -# Begin Source File - -SOURCE=.\utf8tab.h -# End Source File -# Begin Source File - -SOURCE=.\xmlrole.h -# End Source File -# Begin Source File - -SOURCE=.\xmltok.h -# End Source File -# Begin Source File - -SOURCE=.\xmltok_impl.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/platform/win32/msvc/external/expat/lib/expat.h b/platform/win32/msvc/external/expat/lib/expat.h deleted file mode 100644 index 9a21680be46..00000000000 --- a/platform/win32/msvc/external/expat/lib/expat.h +++ /dev/null @@ -1,1047 +0,0 @@ -/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#ifndef Expat_INCLUDED -#define Expat_INCLUDED 1 - -#ifdef __VMS -/* 0 1 2 3 0 1 2 3 - 1234567890123456789012345678901 1234567890123456789012345678901 */ -#define XML_SetProcessingInstructionHandler XML_SetProcessingInstrHandler -#define XML_SetUnparsedEntityDeclHandler XML_SetUnparsedEntDeclHandler -#define XML_SetStartNamespaceDeclHandler XML_SetStartNamespcDeclHandler -#define XML_SetExternalEntityRefHandlerArg XML_SetExternalEntRefHandlerArg -#endif - -#include -#include "expat_external.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct XML_ParserStruct; -typedef struct XML_ParserStruct *XML_Parser; - -/* Should this be defined using stdbool.h when C99 is available? */ -typedef unsigned char XML_Bool; -#define XML_TRUE ((XML_Bool) 1) -#define XML_FALSE ((XML_Bool) 0) - -/* The XML_Status enum gives the possible return values for several - API functions. The preprocessor #defines are included so this - stanza can be added to code that still needs to support older - versions of Expat 1.95.x: - - #ifndef XML_STATUS_OK - #define XML_STATUS_OK 1 - #define XML_STATUS_ERROR 0 - #endif - - Otherwise, the #define hackery is quite ugly and would have been - dropped. -*/ -enum XML_Status { - XML_STATUS_ERROR = 0, -#define XML_STATUS_ERROR XML_STATUS_ERROR - XML_STATUS_OK = 1, -#define XML_STATUS_OK XML_STATUS_OK - XML_STATUS_SUSPENDED = 2 -#define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED -}; - -enum XML_Error { - XML_ERROR_NONE, - XML_ERROR_NO_MEMORY, - XML_ERROR_SYNTAX, - XML_ERROR_NO_ELEMENTS, - XML_ERROR_INVALID_TOKEN, - XML_ERROR_UNCLOSED_TOKEN, - XML_ERROR_PARTIAL_CHAR, - XML_ERROR_TAG_MISMATCH, - XML_ERROR_DUPLICATE_ATTRIBUTE, - XML_ERROR_JUNK_AFTER_DOC_ELEMENT, - XML_ERROR_PARAM_ENTITY_REF, - XML_ERROR_UNDEFINED_ENTITY, - XML_ERROR_RECURSIVE_ENTITY_REF, - XML_ERROR_ASYNC_ENTITY, - XML_ERROR_BAD_CHAR_REF, - XML_ERROR_BINARY_ENTITY_REF, - XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF, - XML_ERROR_MISPLACED_XML_PI, - XML_ERROR_UNKNOWN_ENCODING, - XML_ERROR_INCORRECT_ENCODING, - XML_ERROR_UNCLOSED_CDATA_SECTION, - XML_ERROR_EXTERNAL_ENTITY_HANDLING, - XML_ERROR_NOT_STANDALONE, - XML_ERROR_UNEXPECTED_STATE, - XML_ERROR_ENTITY_DECLARED_IN_PE, - XML_ERROR_FEATURE_REQUIRES_XML_DTD, - XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING, - /* Added in 1.95.7. */ - XML_ERROR_UNBOUND_PREFIX, - /* Added in 1.95.8. */ - XML_ERROR_UNDECLARING_PREFIX, - XML_ERROR_INCOMPLETE_PE, - XML_ERROR_XML_DECL, - XML_ERROR_TEXT_DECL, - XML_ERROR_PUBLICID, - XML_ERROR_SUSPENDED, - XML_ERROR_NOT_SUSPENDED, - XML_ERROR_ABORTED, - XML_ERROR_FINISHED, - XML_ERROR_SUSPEND_PE, - /* Added in 2.0. */ - XML_ERROR_RESERVED_PREFIX_XML, - XML_ERROR_RESERVED_PREFIX_XMLNS, - XML_ERROR_RESERVED_NAMESPACE_URI -}; - -enum XML_Content_Type { - XML_CTYPE_EMPTY = 1, - XML_CTYPE_ANY, - XML_CTYPE_MIXED, - XML_CTYPE_NAME, - XML_CTYPE_CHOICE, - XML_CTYPE_SEQ -}; - -enum XML_Content_Quant { - XML_CQUANT_NONE, - XML_CQUANT_OPT, - XML_CQUANT_REP, - XML_CQUANT_PLUS -}; - -/* If type == XML_CTYPE_EMPTY or XML_CTYPE_ANY, then quant will be - XML_CQUANT_NONE, and the other fields will be zero or NULL. - If type == XML_CTYPE_MIXED, then quant will be NONE or REP and - numchildren will contain number of elements that may be mixed in - and children point to an array of XML_Content cells that will be - all of XML_CTYPE_NAME type with no quantification. - - If type == XML_CTYPE_NAME, then the name points to the name, and - the numchildren field will be zero and children will be NULL. The - quant fields indicates any quantifiers placed on the name. - - CHOICE and SEQ will have name NULL, the number of children in - numchildren and children will point, recursively, to an array - of XML_Content cells. - - The EMPTY, ANY, and MIXED types will only occur at top level. -*/ - -typedef struct XML_cp XML_Content; - -struct XML_cp { - enum XML_Content_Type type; - enum XML_Content_Quant quant; - XML_Char * name; - unsigned int numchildren; - XML_Content * children; -}; - - -/* This is called for an element declaration. See above for - description of the model argument. It's the caller's responsibility - to free model when finished with it. -*/ -typedef void (XMLCALL *XML_ElementDeclHandler) (void *userData, - const XML_Char *name, - XML_Content *model); - -XMLPARSEAPI(void) -XML_SetElementDeclHandler(XML_Parser parser, - XML_ElementDeclHandler eldecl); - -/* The Attlist declaration handler is called for *each* attribute. So - a single Attlist declaration with multiple attributes declared will - generate multiple calls to this handler. The "default" parameter - may be NULL in the case of the "#IMPLIED" or "#REQUIRED" - keyword. The "isrequired" parameter will be true and the default - value will be NULL in the case of "#REQUIRED". If "isrequired" is - true and default is non-NULL, then this is a "#FIXED" default. -*/ -typedef void (XMLCALL *XML_AttlistDeclHandler) ( - void *userData, - const XML_Char *elname, - const XML_Char *attname, - const XML_Char *att_type, - const XML_Char *dflt, - int isrequired); - -XMLPARSEAPI(void) -XML_SetAttlistDeclHandler(XML_Parser parser, - XML_AttlistDeclHandler attdecl); - -/* The XML declaration handler is called for *both* XML declarations - and text declarations. The way to distinguish is that the version - parameter will be NULL for text declarations. The encoding - parameter may be NULL for XML declarations. The standalone - parameter will be -1, 0, or 1 indicating respectively that there - was no standalone parameter in the declaration, that it was given - as no, or that it was given as yes. -*/ -typedef void (XMLCALL *XML_XmlDeclHandler) (void *userData, - const XML_Char *version, - const XML_Char *encoding, - int standalone); - -XMLPARSEAPI(void) -XML_SetXmlDeclHandler(XML_Parser parser, - XML_XmlDeclHandler xmldecl); - - -typedef struct { - void *(*malloc_fcn)(size_t size); - void *(*realloc_fcn)(void *ptr, size_t size); - void (*free_fcn)(void *ptr); -} XML_Memory_Handling_Suite; - -/* Constructs a new parser; encoding is the encoding specified by the - external protocol or NULL if there is none specified. -*/ -XMLPARSEAPI(XML_Parser) -XML_ParserCreate(const XML_Char *encoding); - -/* Constructs a new parser and namespace processor. Element type - names and attribute names that belong to a namespace will be - expanded; unprefixed attribute names are never expanded; unprefixed - element type names are expanded only if there is a default - namespace. The expanded name is the concatenation of the namespace - URI, the namespace separator character, and the local part of the - name. If the namespace separator is '\0' then the namespace URI - and the local part will be concatenated without any separator. - It is a programming error to use the separator '\0' with namespace - triplets (see XML_SetReturnNSTriplet). -*/ -XMLPARSEAPI(XML_Parser) -XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator); - - -/* Constructs a new parser using the memory management suite referred to - by memsuite. If memsuite is NULL, then use the standard library memory - suite. If namespaceSeparator is non-NULL it creates a parser with - namespace processing as described above. The character pointed at - will serve as the namespace separator. - - All further memory operations used for the created parser will come from - the given suite. -*/ -XMLPARSEAPI(XML_Parser) -XML_ParserCreate_MM(const XML_Char *encoding, - const XML_Memory_Handling_Suite *memsuite, - const XML_Char *namespaceSeparator); - -/* Prepare a parser object to be re-used. This is particularly - valuable when memory allocation overhead is disproportionatly high, - such as when a large number of small documnents need to be parsed. - All handlers are cleared from the parser, except for the - unknownEncodingHandler. The parser's external state is re-initialized - except for the values of ns and ns_triplets. - - Added in Expat 1.95.3. -*/ -XMLPARSEAPI(XML_Bool) -XML_ParserReset(XML_Parser parser, const XML_Char *encoding); - -/* atts is array of name/value pairs, terminated by 0; - names and values are 0 terminated. -*/ -typedef void (XMLCALL *XML_StartElementHandler) (void *userData, - const XML_Char *name, - const XML_Char **atts); - -typedef void (XMLCALL *XML_EndElementHandler) (void *userData, - const XML_Char *name); - - -/* s is not 0 terminated. */ -typedef void (XMLCALL *XML_CharacterDataHandler) (void *userData, - const XML_Char *s, - int len); - -/* target and data are 0 terminated */ -typedef void (XMLCALL *XML_ProcessingInstructionHandler) ( - void *userData, - const XML_Char *target, - const XML_Char *data); - -/* data is 0 terminated */ -typedef void (XMLCALL *XML_CommentHandler) (void *userData, - const XML_Char *data); - -typedef void (XMLCALL *XML_StartCdataSectionHandler) (void *userData); -typedef void (XMLCALL *XML_EndCdataSectionHandler) (void *userData); - -/* This is called for any characters in the XML document for which - there is no applicable handler. This includes both characters that - are part of markup which is of a kind that is not reported - (comments, markup declarations), or characters that are part of a - construct which could be reported but for which no handler has been - supplied. The characters are passed exactly as they were in the XML - document except that they will be encoded in UTF-8 or UTF-16. - Line boundaries are not normalized. Note that a byte order mark - character is not passed to the default handler. There are no - guarantees about how characters are divided between calls to the - default handler: for example, a comment might be split between - multiple calls. -*/ -typedef void (XMLCALL *XML_DefaultHandler) (void *userData, - const XML_Char *s, - int len); - -/* This is called for the start of the DOCTYPE declaration, before - any DTD or internal subset is parsed. -*/ -typedef void (XMLCALL *XML_StartDoctypeDeclHandler) ( - void *userData, - const XML_Char *doctypeName, - const XML_Char *sysid, - const XML_Char *pubid, - int has_internal_subset); - -/* This is called for the start of the DOCTYPE declaration when the - closing > is encountered, but after processing any external - subset. -*/ -typedef void (XMLCALL *XML_EndDoctypeDeclHandler)(void *userData); - -/* This is called for entity declarations. The is_parameter_entity - argument will be non-zero if the entity is a parameter entity, zero - otherwise. - - For internal entities (), value will - be non-NULL and systemId, publicID, and notationName will be NULL. - The value string is NOT nul-terminated; the length is provided in - the value_length argument. Since it is legal to have zero-length - values, do not use this argument to test for internal entities. - - For external entities, value will be NULL and systemId will be - non-NULL. The publicId argument will be NULL unless a public - identifier was provided. The notationName argument will have a - non-NULL value only for unparsed entity declarations. - - Note that is_parameter_entity can't be changed to XML_Bool, since - that would break binary compatibility. -*/ -typedef void (XMLCALL *XML_EntityDeclHandler) ( - void *userData, - const XML_Char *entityName, - int is_parameter_entity, - const XML_Char *value, - int value_length, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId, - const XML_Char *notationName); - -XMLPARSEAPI(void) -XML_SetEntityDeclHandler(XML_Parser parser, - XML_EntityDeclHandler handler); - -/* OBSOLETE -- OBSOLETE -- OBSOLETE - This handler has been superceded by the EntityDeclHandler above. - It is provided here for backward compatibility. - - This is called for a declaration of an unparsed (NDATA) entity. - The base argument is whatever was set by XML_SetBase. The - entityName, systemId and notationName arguments will never be - NULL. The other arguments may be. -*/ -typedef void (XMLCALL *XML_UnparsedEntityDeclHandler) ( - void *userData, - const XML_Char *entityName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId, - const XML_Char *notationName); - -/* This is called for a declaration of notation. The base argument is - whatever was set by XML_SetBase. The notationName will never be - NULL. The other arguments can be. -*/ -typedef void (XMLCALL *XML_NotationDeclHandler) ( - void *userData, - const XML_Char *notationName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId); - -/* When namespace processing is enabled, these are called once for - each namespace declaration. The call to the start and end element - handlers occur between the calls to the start and end namespace - declaration handlers. For an xmlns attribute, prefix will be - NULL. For an xmlns="" attribute, uri will be NULL. -*/ -typedef void (XMLCALL *XML_StartNamespaceDeclHandler) ( - void *userData, - const XML_Char *prefix, - const XML_Char *uri); - -typedef void (XMLCALL *XML_EndNamespaceDeclHandler) ( - void *userData, - const XML_Char *prefix); - -/* This is called if the document is not standalone, that is, it has an - external subset or a reference to a parameter entity, but does not - have standalone="yes". If this handler returns XML_STATUS_ERROR, - then processing will not continue, and the parser will return a - XML_ERROR_NOT_STANDALONE error. - If parameter entity parsing is enabled, then in addition to the - conditions above this handler will only be called if the referenced - entity was actually read. -*/ -typedef int (XMLCALL *XML_NotStandaloneHandler) (void *userData); - -/* This is called for a reference to an external parsed general - entity. The referenced entity is not automatically parsed. The - application can parse it immediately or later using - XML_ExternalEntityParserCreate. - - The parser argument is the parser parsing the entity containing the - reference; it can be passed as the parser argument to - XML_ExternalEntityParserCreate. The systemId argument is the - system identifier as specified in the entity declaration; it will - not be NULL. - - The base argument is the system identifier that should be used as - the base for resolving systemId if systemId was relative; this is - set by XML_SetBase; it may be NULL. - - The publicId argument is the public identifier as specified in the - entity declaration, or NULL if none was specified; the whitespace - in the public identifier will have been normalized as required by - the XML spec. - - The context argument specifies the parsing context in the format - expected by the context argument to XML_ExternalEntityParserCreate; - context is valid only until the handler returns, so if the - referenced entity is to be parsed later, it must be copied. - context is NULL only when the entity is a parameter entity. - - The handler should return XML_STATUS_ERROR if processing should not - continue because of a fatal error in the handling of the external - entity. In this case the calling parser will return an - XML_ERROR_EXTERNAL_ENTITY_HANDLING error. - - Note that unlike other handlers the first argument is the parser, - not userData. -*/ -typedef int (XMLCALL *XML_ExternalEntityRefHandler) ( - XML_Parser parser, - const XML_Char *context, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId); - -/* This is called in two situations: - 1) An entity reference is encountered for which no declaration - has been read *and* this is not an error. - 2) An internal entity reference is read, but not expanded, because - XML_SetDefaultHandler has been called. - Note: skipped parameter entities in declarations and skipped general - entities in attribute values cannot be reported, because - the event would be out of sync with the reporting of the - declarations or attribute values -*/ -typedef void (XMLCALL *XML_SkippedEntityHandler) ( - void *userData, - const XML_Char *entityName, - int is_parameter_entity); - -/* This structure is filled in by the XML_UnknownEncodingHandler to - provide information to the parser about encodings that are unknown - to the parser. - - The map[b] member gives information about byte sequences whose - first byte is b. - - If map[b] is c where c is >= 0, then b by itself encodes the - Unicode scalar value c. - - If map[b] is -1, then the byte sequence is malformed. - - If map[b] is -n, where n >= 2, then b is the first byte of an - n-byte sequence that encodes a single Unicode scalar value. - - The data member will be passed as the first argument to the convert - function. - - The convert function is used to convert multibyte sequences; s will - point to a n-byte sequence where map[(unsigned char)*s] == -n. The - convert function must return the Unicode scalar value represented - by this byte sequence or -1 if the byte sequence is malformed. - - The convert function may be NULL if the encoding is a single-byte - encoding, that is if map[b] >= -1 for all bytes b. - - When the parser is finished with the encoding, then if release is - not NULL, it will call release passing it the data member; once - release has been called, the convert function will not be called - again. - - Expat places certain restrictions on the encodings that are supported - using this mechanism. - - 1. Every ASCII character that can appear in a well-formed XML document, - other than the characters - - $@\^`{}~ - - must be represented by a single byte, and that byte must be the - same byte that represents that character in ASCII. - - 2. No character may require more than 4 bytes to encode. - - 3. All characters encoded must have Unicode scalar values <= - 0xFFFF, (i.e., characters that would be encoded by surrogates in - UTF-16 are not allowed). Note that this restriction doesn't - apply to the built-in support for UTF-8 and UTF-16. - - 4. No Unicode character may be encoded by more than one distinct - sequence of bytes. -*/ -typedef struct { - int map[256]; - void *data; - int (XMLCALL *convert)(void *data, const char *s); - void (XMLCALL *release)(void *data); -} XML_Encoding; - -/* This is called for an encoding that is unknown to the parser. - - The encodingHandlerData argument is that which was passed as the - second argument to XML_SetUnknownEncodingHandler. - - The name argument gives the name of the encoding as specified in - the encoding declaration. - - If the callback can provide information about the encoding, it must - fill in the XML_Encoding structure, and return XML_STATUS_OK. - Otherwise it must return XML_STATUS_ERROR. - - If info does not describe a suitable encoding, then the parser will - return an XML_UNKNOWN_ENCODING error. -*/ -typedef int (XMLCALL *XML_UnknownEncodingHandler) ( - void *encodingHandlerData, - const XML_Char *name, - XML_Encoding *info); - -XMLPARSEAPI(void) -XML_SetElementHandler(XML_Parser parser, - XML_StartElementHandler start, - XML_EndElementHandler end); - -XMLPARSEAPI(void) -XML_SetStartElementHandler(XML_Parser parser, - XML_StartElementHandler handler); - -XMLPARSEAPI(void) -XML_SetEndElementHandler(XML_Parser parser, - XML_EndElementHandler handler); - -XMLPARSEAPI(void) -XML_SetCharacterDataHandler(XML_Parser parser, - XML_CharacterDataHandler handler); - -XMLPARSEAPI(void) -XML_SetProcessingInstructionHandler(XML_Parser parser, - XML_ProcessingInstructionHandler handler); -XMLPARSEAPI(void) -XML_SetCommentHandler(XML_Parser parser, - XML_CommentHandler handler); - -XMLPARSEAPI(void) -XML_SetCdataSectionHandler(XML_Parser parser, - XML_StartCdataSectionHandler start, - XML_EndCdataSectionHandler end); - -XMLPARSEAPI(void) -XML_SetStartCdataSectionHandler(XML_Parser parser, - XML_StartCdataSectionHandler start); - -XMLPARSEAPI(void) -XML_SetEndCdataSectionHandler(XML_Parser parser, - XML_EndCdataSectionHandler end); - -/* This sets the default handler and also inhibits expansion of - internal entities. These entity references will be passed to the - default handler, or to the skipped entity handler, if one is set. -*/ -XMLPARSEAPI(void) -XML_SetDefaultHandler(XML_Parser parser, - XML_DefaultHandler handler); - -/* This sets the default handler but does not inhibit expansion of - internal entities. The entity reference will not be passed to the - default handler. -*/ -XMLPARSEAPI(void) -XML_SetDefaultHandlerExpand(XML_Parser parser, - XML_DefaultHandler handler); - -XMLPARSEAPI(void) -XML_SetDoctypeDeclHandler(XML_Parser parser, - XML_StartDoctypeDeclHandler start, - XML_EndDoctypeDeclHandler end); - -XMLPARSEAPI(void) -XML_SetStartDoctypeDeclHandler(XML_Parser parser, - XML_StartDoctypeDeclHandler start); - -XMLPARSEAPI(void) -XML_SetEndDoctypeDeclHandler(XML_Parser parser, - XML_EndDoctypeDeclHandler end); - -XMLPARSEAPI(void) -XML_SetUnparsedEntityDeclHandler(XML_Parser parser, - XML_UnparsedEntityDeclHandler handler); - -XMLPARSEAPI(void) -XML_SetNotationDeclHandler(XML_Parser parser, - XML_NotationDeclHandler handler); - -XMLPARSEAPI(void) -XML_SetNamespaceDeclHandler(XML_Parser parser, - XML_StartNamespaceDeclHandler start, - XML_EndNamespaceDeclHandler end); - -XMLPARSEAPI(void) -XML_SetStartNamespaceDeclHandler(XML_Parser parser, - XML_StartNamespaceDeclHandler start); - -XMLPARSEAPI(void) -XML_SetEndNamespaceDeclHandler(XML_Parser parser, - XML_EndNamespaceDeclHandler end); - -XMLPARSEAPI(void) -XML_SetNotStandaloneHandler(XML_Parser parser, - XML_NotStandaloneHandler handler); - -XMLPARSEAPI(void) -XML_SetExternalEntityRefHandler(XML_Parser parser, - XML_ExternalEntityRefHandler handler); - -/* If a non-NULL value for arg is specified here, then it will be - passed as the first argument to the external entity ref handler - instead of the parser object. -*/ -XMLPARSEAPI(void) -XML_SetExternalEntityRefHandlerArg(XML_Parser parser, - void *arg); - -XMLPARSEAPI(void) -XML_SetSkippedEntityHandler(XML_Parser parser, - XML_SkippedEntityHandler handler); - -XMLPARSEAPI(void) -XML_SetUnknownEncodingHandler(XML_Parser parser, - XML_UnknownEncodingHandler handler, - void *encodingHandlerData); - -/* This can be called within a handler for a start element, end - element, processing instruction or character data. It causes the - corresponding markup to be passed to the default handler. -*/ -XMLPARSEAPI(void) -XML_DefaultCurrent(XML_Parser parser); - -/* If do_nst is non-zero, and namespace processing is in effect, and - a name has a prefix (i.e. an explicit namespace qualifier) then - that name is returned as a triplet in a single string separated by - the separator character specified when the parser was created: URI - + sep + local_name + sep + prefix. - - If do_nst is zero, then namespace information is returned in the - default manner (URI + sep + local_name) whether or not the name - has a prefix. - - Note: Calling XML_SetReturnNSTriplet after XML_Parse or - XML_ParseBuffer has no effect. -*/ - -XMLPARSEAPI(void) -XML_SetReturnNSTriplet(XML_Parser parser, int do_nst); - -/* This value is passed as the userData argument to callbacks. */ -XMLPARSEAPI(void) -XML_SetUserData(XML_Parser parser, void *userData); - -/* Returns the last value set by XML_SetUserData or NULL. */ -#define XML_GetUserData(parser) (*(void **)(parser)) - -/* This is equivalent to supplying an encoding argument to - XML_ParserCreate. On success XML_SetEncoding returns non-zero, - zero otherwise. - Note: Calling XML_SetEncoding after XML_Parse or XML_ParseBuffer - has no effect and returns XML_STATUS_ERROR. -*/ -XMLPARSEAPI(enum XML_Status) -XML_SetEncoding(XML_Parser parser, const XML_Char *encoding); - -/* If this function is called, then the parser will be passed as the - first argument to callbacks instead of userData. The userData will - still be accessible using XML_GetUserData. -*/ -XMLPARSEAPI(void) -XML_UseParserAsHandlerArg(XML_Parser parser); - -/* If useDTD == XML_TRUE is passed to this function, then the parser - will assume that there is an external subset, even if none is - specified in the document. In such a case the parser will call the - externalEntityRefHandler with a value of NULL for the systemId - argument (the publicId and context arguments will be NULL as well). - Note: For the purpose of checking WFC: Entity Declared, passing - useDTD == XML_TRUE will make the parser behave as if the document - had a DTD with an external subset. - Note: If this function is called, then this must be done before - the first call to XML_Parse or XML_ParseBuffer, since it will - have no effect after that. Returns - XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING. - Note: If the document does not have a DOCTYPE declaration at all, - then startDoctypeDeclHandler and endDoctypeDeclHandler will not - be called, despite an external subset being parsed. - Note: If XML_DTD is not defined when Expat is compiled, returns - XML_ERROR_FEATURE_REQUIRES_XML_DTD. -*/ -XMLPARSEAPI(enum XML_Error) -XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD); - - -/* Sets the base to be used for resolving relative URIs in system - identifiers in declarations. Resolving relative identifiers is - left to the application: this value will be passed through as the - base argument to the XML_ExternalEntityRefHandler, - XML_NotationDeclHandler and XML_UnparsedEntityDeclHandler. The base - argument will be copied. Returns XML_STATUS_ERROR if out of memory, - XML_STATUS_OK otherwise. -*/ -XMLPARSEAPI(enum XML_Status) -XML_SetBase(XML_Parser parser, const XML_Char *base); - -XMLPARSEAPI(const XML_Char *) -XML_GetBase(XML_Parser parser); - -/* Returns the number of the attribute/value pairs passed in last call - to the XML_StartElementHandler that were specified in the start-tag - rather than defaulted. Each attribute/value pair counts as 2; thus - this correspondds to an index into the atts array passed to the - XML_StartElementHandler. -*/ -XMLPARSEAPI(int) -XML_GetSpecifiedAttributeCount(XML_Parser parser); - -/* Returns the index of the ID attribute passed in the last call to - XML_StartElementHandler, or -1 if there is no ID attribute. Each - attribute/value pair counts as 2; thus this correspondds to an - index into the atts array passed to the XML_StartElementHandler. -*/ -XMLPARSEAPI(int) -XML_GetIdAttributeIndex(XML_Parser parser); - -#ifdef XML_ATTR_INFO -/* Source file byte offsets for the start and end of attribute names and values. - The value indices are exclusive of surrounding quotes; thus in a UTF-8 source - file an attribute value of "blah" will yield: - info->valueEnd - info->valueStart = 4 bytes. -*/ -typedef struct { - XML_Index nameStart; /* Offset to beginning of the attribute name. */ - XML_Index nameEnd; /* Offset after the attribute name's last byte. */ - XML_Index valueStart; /* Offset to beginning of the attribute value. */ - XML_Index valueEnd; /* Offset after the attribute value's last byte. */ -} XML_AttrInfo; - -/* Returns an array of XML_AttrInfo structures for the attribute/value pairs - passed in last call to the XML_StartElementHandler that were specified - in the start-tag rather than defaulted. Each attribute/value pair counts - as 1; thus the number of entries in the array is - XML_GetSpecifiedAttributeCount(parser) / 2. -*/ -XMLPARSEAPI(const XML_AttrInfo *) -XML_GetAttributeInfo(XML_Parser parser); -#endif - -/* Parses some input. Returns XML_STATUS_ERROR if a fatal error is - detected. The last call to XML_Parse must have isFinal true; len - may be zero for this call (or any other). - - Though the return values for these functions has always been - described as a Boolean value, the implementation, at least for the - 1.95.x series, has always returned exactly one of the XML_Status - values. -*/ -XMLPARSEAPI(enum XML_Status) -XML_Parse(XML_Parser parser, const char *s, int len, int isFinal); - -XMLPARSEAPI(void *) -XML_GetBuffer(XML_Parser parser, int len); - -XMLPARSEAPI(enum XML_Status) -XML_ParseBuffer(XML_Parser parser, int len, int isFinal); - -/* Stops parsing, causing XML_Parse() or XML_ParseBuffer() to return. - Must be called from within a call-back handler, except when aborting - (resumable = 0) an already suspended parser. Some call-backs may - still follow because they would otherwise get lost. Examples: - - endElementHandler() for empty elements when stopped in - startElementHandler(), - - endNameSpaceDeclHandler() when stopped in endElementHandler(), - and possibly others. - - Can be called from most handlers, including DTD related call-backs, - except when parsing an external parameter entity and resumable != 0. - Returns XML_STATUS_OK when successful, XML_STATUS_ERROR otherwise. - Possible error codes: - - XML_ERROR_SUSPENDED: when suspending an already suspended parser. - - XML_ERROR_FINISHED: when the parser has already finished. - - XML_ERROR_SUSPEND_PE: when suspending while parsing an external PE. - - When resumable != 0 (true) then parsing is suspended, that is, - XML_Parse() and XML_ParseBuffer() return XML_STATUS_SUSPENDED. - Otherwise, parsing is aborted, that is, XML_Parse() and XML_ParseBuffer() - return XML_STATUS_ERROR with error code XML_ERROR_ABORTED. - - *Note*: - This will be applied to the current parser instance only, that is, if - there is a parent parser then it will continue parsing when the - externalEntityRefHandler() returns. It is up to the implementation of - the externalEntityRefHandler() to call XML_StopParser() on the parent - parser (recursively), if one wants to stop parsing altogether. - - When suspended, parsing can be resumed by calling XML_ResumeParser(). -*/ -XMLPARSEAPI(enum XML_Status) -XML_StopParser(XML_Parser parser, XML_Bool resumable); - -/* Resumes parsing after it has been suspended with XML_StopParser(). - Must not be called from within a handler call-back. Returns same - status codes as XML_Parse() or XML_ParseBuffer(). - Additional error code XML_ERROR_NOT_SUSPENDED possible. - - *Note*: - This must be called on the most deeply nested child parser instance - first, and on its parent parser only after the child parser has finished, - to be applied recursively until the document entity's parser is restarted. - That is, the parent parser will not resume by itself and it is up to the - application to call XML_ResumeParser() on it at the appropriate moment. -*/ -XMLPARSEAPI(enum XML_Status) -XML_ResumeParser(XML_Parser parser); - -enum XML_Parsing { - XML_INITIALIZED, - XML_PARSING, - XML_FINISHED, - XML_SUSPENDED -}; - -typedef struct { - enum XML_Parsing parsing; - XML_Bool finalBuffer; -} XML_ParsingStatus; - -/* Returns status of parser with respect to being initialized, parsing, - finished, or suspended and processing the final buffer. - XXX XML_Parse() and XML_ParseBuffer() should return XML_ParsingStatus, - XXX with XML_FINISHED_OK or XML_FINISHED_ERROR replacing XML_FINISHED -*/ -XMLPARSEAPI(void) -XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status); - -/* Creates an XML_Parser object that can parse an external general - entity; context is a '\0'-terminated string specifying the parse - context; encoding is a '\0'-terminated string giving the name of - the externally specified encoding, or NULL if there is no - externally specified encoding. The context string consists of a - sequence of tokens separated by formfeeds (\f); a token consisting - of a name specifies that the general entity of the name is open; a - token of the form prefix=uri specifies the namespace for a - particular prefix; a token of the form =uri specifies the default - namespace. This can be called at any point after the first call to - an ExternalEntityRefHandler so longer as the parser has not yet - been freed. The new parser is completely independent and may - safely be used in a separate thread. The handlers and userData are - initialized from the parser argument. Returns NULL if out of memory. - Otherwise returns a new XML_Parser object. -*/ -XMLPARSEAPI(XML_Parser) -XML_ExternalEntityParserCreate(XML_Parser parser, - const XML_Char *context, - const XML_Char *encoding); - -enum XML_ParamEntityParsing { - XML_PARAM_ENTITY_PARSING_NEVER, - XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE, - XML_PARAM_ENTITY_PARSING_ALWAYS -}; - -/* Controls parsing of parameter entities (including the external DTD - subset). If parsing of parameter entities is enabled, then - references to external parameter entities (including the external - DTD subset) will be passed to the handler set with - XML_SetExternalEntityRefHandler. The context passed will be 0. - - Unlike external general entities, external parameter entities can - only be parsed synchronously. If the external parameter entity is - to be parsed, it must be parsed during the call to the external - entity ref handler: the complete sequence of - XML_ExternalEntityParserCreate, XML_Parse/XML_ParseBuffer and - XML_ParserFree calls must be made during this call. After - XML_ExternalEntityParserCreate has been called to create the parser - for the external parameter entity (context must be 0 for this - call), it is illegal to make any calls on the old parser until - XML_ParserFree has been called on the newly created parser. - If the library has been compiled without support for parameter - entity parsing (ie without XML_DTD being defined), then - XML_SetParamEntityParsing will return 0 if parsing of parameter - entities is requested; otherwise it will return non-zero. - Note: If XML_SetParamEntityParsing is called after XML_Parse or - XML_ParseBuffer, then it has no effect and will always return 0. -*/ -XMLPARSEAPI(int) -XML_SetParamEntityParsing(XML_Parser parser, - enum XML_ParamEntityParsing parsing); - -/* Sets the hash salt to use for internal hash calculations. - Helps in preventing DoS attacks based on predicting hash - function behavior. This must be called before parsing is started. - Returns 1 if successful, 0 when called after parsing has started. -*/ -XMLPARSEAPI(int) -XML_SetHashSalt(XML_Parser parser, - unsigned long hash_salt); - -/* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then - XML_GetErrorCode returns information about the error. -*/ -XMLPARSEAPI(enum XML_Error) -XML_GetErrorCode(XML_Parser parser); - -/* These functions return information about the current parse - location. They may be called from any callback called to report - some parse event; in this case the location is the location of the - first of the sequence of characters that generated the event. When - called from callbacks generated by declarations in the document - prologue, the location identified isn't as neatly defined, but will - be within the relevant markup. When called outside of the callback - functions, the position indicated will be just past the last parse - event (regardless of whether there was an associated callback). - - They may also be called after returning from a call to XML_Parse - or XML_ParseBuffer. If the return value is XML_STATUS_ERROR then - the location is the location of the character at which the error - was detected; otherwise the location is the location of the last - parse event, as described above. -*/ -XMLPARSEAPI(XML_Size) XML_GetCurrentLineNumber(XML_Parser parser); -XMLPARSEAPI(XML_Size) XML_GetCurrentColumnNumber(XML_Parser parser); -XMLPARSEAPI(XML_Index) XML_GetCurrentByteIndex(XML_Parser parser); - -/* Return the number of bytes in the current event. - Returns 0 if the event is in an internal entity. -*/ -XMLPARSEAPI(int) -XML_GetCurrentByteCount(XML_Parser parser); - -/* If XML_CONTEXT_BYTES is defined, returns the input buffer, sets - the integer pointed to by offset to the offset within this buffer - of the current parse position, and sets the integer pointed to by size - to the size of this buffer (the number of input bytes). Otherwise - returns a NULL pointer. Also returns a NULL pointer if a parse isn't - active. - - NOTE: The character pointer returned should not be used outside - the handler that makes the call. -*/ -XMLPARSEAPI(const char *) -XML_GetInputContext(XML_Parser parser, - int *offset, - int *size); - -/* For backwards compatibility with previous versions. */ -#define XML_GetErrorLineNumber XML_GetCurrentLineNumber -#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber -#define XML_GetErrorByteIndex XML_GetCurrentByteIndex - -/* Frees the content model passed to the element declaration handler */ -XMLPARSEAPI(void) -XML_FreeContentModel(XML_Parser parser, XML_Content *model); - -/* Exposing the memory handling functions used in Expat */ -XMLPARSEAPI(void *) -XML_MemMalloc(XML_Parser parser, size_t size); - -XMLPARSEAPI(void *) -XML_MemRealloc(XML_Parser parser, void *ptr, size_t size); - -XMLPARSEAPI(void) -XML_MemFree(XML_Parser parser, void *ptr); - -/* Frees memory used by the parser. */ -XMLPARSEAPI(void) -XML_ParserFree(XML_Parser parser); - -/* Returns a string describing the error. */ -XMLPARSEAPI(const XML_LChar *) -XML_ErrorString(enum XML_Error code); - -/* Return a string containing the version number of this expat */ -XMLPARSEAPI(const XML_LChar *) -XML_ExpatVersion(void); - -typedef struct { - int major; - int minor; - int micro; -} XML_Expat_Version; - -/* Return an XML_Expat_Version structure containing numeric version - number information for this version of expat. -*/ -XMLPARSEAPI(XML_Expat_Version) -XML_ExpatVersionInfo(void); - -/* Added in Expat 1.95.5. */ -enum XML_FeatureEnum { - XML_FEATURE_END = 0, - XML_FEATURE_UNICODE, - XML_FEATURE_UNICODE_WCHAR_T, - XML_FEATURE_DTD, - XML_FEATURE_CONTEXT_BYTES, - XML_FEATURE_MIN_SIZE, - XML_FEATURE_SIZEOF_XML_CHAR, - XML_FEATURE_SIZEOF_XML_LCHAR, - XML_FEATURE_NS, - XML_FEATURE_LARGE_SIZE, - XML_FEATURE_ATTR_INFO - /* Additional features must be added to the end of this enum. */ -}; - -typedef struct { - enum XML_FeatureEnum feature; - const XML_LChar *name; - long int value; -} XML_Feature; - -XMLPARSEAPI(const XML_Feature *) -XML_GetFeatureList(void); - - -/* Expat follows the GNU/Linux convention of odd number minor version for - beta/development releases and even number minor version for stable - releases. Micro is bumped with each release, and set to 0 with each - change to major or minor version. -*/ -#define XML_MAJOR_VERSION 2 -#define XML_MINOR_VERSION 1 -#define XML_MICRO_VERSION 0 - -#ifdef __cplusplus -} -#endif - -#endif /* not Expat_INCLUDED */ diff --git a/platform/win32/msvc/external/expat/lib/expat.vcxproj b/platform/win32/msvc/external/expat/lib/expat.vcxproj deleted file mode 100644 index 9ac35efd1de..00000000000 --- a/platform/win32/msvc/external/expat/lib/expat.vcxproj +++ /dev/null @@ -1,285 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - - - {4A0A1BB8-B5C5-4CB8-B748-DC029F5F854F} - 8.1 - - - - DynamicLibrary - v140 - false - MultiByte - - - DynamicLibrary - v140 - false - MultiByte - - - DynamicLibrary - v140 - false - MultiByte - - - DynamicLibrary - v140 - false - MultiByte - - - - - - - - - - - - - - - - - - - - - - - .\..\win32\bin\Debug\ - .\..\win32\tmp\Debug\ - true - - - true - libexpat - $(SolutionDir)..\$(Platform)\$(Configuration)\ - - - .\..\win32\bin\Release\ - .\..\win32\tmp\Release\ - false - - - false - - - - MultiThreadedDebug - Default - false - Disabled - true - Level3 - EditAndContinue - _DEBUG;COMPILED_FROM_DSP;WIN32;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - .\..\win32\tmp\Debug\ - true - .\..\win32\tmp\Debug\expat.pch - .\..\win32\tmp\Debug\ - .\..\win32\tmp\Debug\ - EnableFastChecks - - - true - _DEBUG;%(PreprocessorDefinitions) - .\..\win32\bin\Debug\expat.tlb - true - Win32 - - - 0x0409 - _DEBUG;%(PreprocessorDefinitions) - - - true - .\..\win32\bin\Debug\expat.bsc - - - true - true - true - Console - ..\win32\bin\Debug\libexpat.dll - .\..\win32\bin\Debug\libexpat.lib - .\libexpat.def - - - - - MultiThreadedDebug - Default - false - Disabled - true - Level3 - ProgramDatabase - _DEBUG;COMPILED_FROM_DSP;WIN32;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - .\..\win32\tmp\Debug\ - true - .\..\win32\tmp\Debug\expat.pch - .\..\win32\tmp\Debug\ - .\..\win32\tmp\Debug\ - EnableFastChecks - - - true - _DEBUG;%(PreprocessorDefinitions) - .\..\win32\bin\Debug\expat.tlb - true - - - 0x0409 - _DEBUG;%(PreprocessorDefinitions) - - - true - .\..\win32\bin\Debug\expat.bsc - - - true - true - true - Console - $(SolutionDir)..\$(Platform)\$(Configuration)\libexpat.dll - $(SolutionDir)..\$(Platform)\$(Configuration)\libexpat.lib - .\libexpat.def - - - - - MultiThreaded - Default - true - true - MaxSpeed - true - Level3 - NDEBUG;WIN32;_WINDOWS;_USRDLL;COMPILED_FROM_DSP;%(PreprocessorDefinitions) - .\..\win32\tmp\Release\ - .\..\win32\tmp\Release\expat.pch - - .\..\win32\tmp\Release\ - .\..\win32\tmp\Release\ - - - true - NDEBUG;%(PreprocessorDefinitions) - .\..\win32\bin\Release\expat.tlb - true - Win32 - - - 0x0409 - NDEBUG;%(PreprocessorDefinitions) - - - true - .\..\win32\bin\Release\expat.bsc - - - true - true - Console - ..\win32\bin\Release\libexpat.dll - .\..\win32\bin\Release\libexpat.lib - .\libexpat.def - - - - - MultiThreaded - Default - true - true - MaxSpeed - true - Level3 - NDEBUG;WIN32;_WINDOWS;_USRDLL;COMPILED_FROM_DSP;%(PreprocessorDefinitions) - .\..\win32\tmp\Release\ - .\..\win32\tmp\Release\expat.pch - - - .\..\win32\tmp\Release\ - .\..\win32\tmp\Release\ - - - true - NDEBUG;%(PreprocessorDefinitions) - .\..\win32\bin\Release\expat.tlb - true - - - 0x0409 - NDEBUG;%(PreprocessorDefinitions) - - - true - .\..\win32\bin\Release\expat.bsc - - - true - true - Console - ..\win32\bin\Release\libexpat.dll - .\..\win32\bin\Release\libexpat.lib - .\libexpat.def - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/platform/win32/msvc/external/expat/lib/expat_external.h b/platform/win32/msvc/external/expat/lib/expat_external.h deleted file mode 100644 index 2c03284ea26..00000000000 --- a/platform/win32/msvc/external/expat/lib/expat_external.h +++ /dev/null @@ -1,115 +0,0 @@ -/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#ifndef Expat_External_INCLUDED -#define Expat_External_INCLUDED 1 - -/* External API definitions */ - -#if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) && !defined(__CYGWIN__) -#define XML_USE_MSC_EXTENSIONS 1 -#endif - -/* Expat tries very hard to make the API boundary very specifically - defined. There are two macros defined to control this boundary; - each of these can be defined before including this header to - achieve some different behavior, but doing so it not recommended or - tested frequently. - - XMLCALL - The calling convention to use for all calls across the - "library boundary." This will default to cdecl, and - try really hard to tell the compiler that's what we - want. - - XMLIMPORT - Whatever magic is needed to note that a function is - to be imported from a dynamically loaded library - (.dll, .so, or .sl, depending on your platform). - - The XMLCALL macro was added in Expat 1.95.7. The only one which is - expected to be directly useful in client code is XMLCALL. - - Note that on at least some Unix versions, the Expat library must be - compiled with the cdecl calling convention as the default since - system headers may assume the cdecl convention. -*/ -#ifndef XMLCALL -#if defined(_MSC_VER) -#define XMLCALL __cdecl -#elif defined(__GNUC__) && defined(__i386) && !defined(__INTEL_COMPILER) -#define XMLCALL __attribute__((cdecl)) -#else -/* For any platform which uses this definition and supports more than - one calling convention, we need to extend this definition to - declare the convention used on that platform, if it's possible to - do so. - - If this is the case for your platform, please file a bug report - with information on how to identify your platform via the C - pre-processor and how to specify the same calling convention as the - platform's malloc() implementation. -*/ -#define XMLCALL -#endif -#endif /* not defined XMLCALL */ - - -#if !defined(XML_STATIC) && !defined(XMLIMPORT) -#ifndef XML_BUILDING_EXPAT -/* using Expat from an application */ - -#ifdef XML_USE_MSC_EXTENSIONS -#define XMLIMPORT __declspec(dllimport) -#endif - -#endif -#endif /* not defined XML_STATIC */ - - -/* If we didn't define it above, define it away: */ -#ifndef XMLIMPORT -#define XMLIMPORT -#endif - - -#define XMLPARSEAPI(type) XMLIMPORT type XMLCALL - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef XML_UNICODE_WCHAR_T -#define XML_UNICODE -#endif - -#ifdef XML_UNICODE /* Information is UTF-16 encoded. */ -#ifdef XML_UNICODE_WCHAR_T -typedef wchar_t XML_Char; -typedef wchar_t XML_LChar; -#else -typedef unsigned short XML_Char; -typedef char XML_LChar; -#endif /* XML_UNICODE_WCHAR_T */ -#else /* Information is UTF-8 encoded. */ -typedef char XML_Char; -typedef char XML_LChar; -#endif /* XML_UNICODE */ - -#ifdef XML_LARGE_SIZE /* Use large integers for file/stream positions. */ -#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400 -typedef __int64 XML_Index; -typedef unsigned __int64 XML_Size; -#else -typedef long long XML_Index; -typedef unsigned long long XML_Size; -#endif -#else -typedef long XML_Index; -typedef unsigned long XML_Size; -#endif /* XML_LARGE_SIZE */ - -#ifdef __cplusplus -} -#endif - -#endif /* not Expat_External_INCLUDED */ diff --git a/platform/win32/msvc/external/expat/lib/iasciitab.h b/platform/win32/msvc/external/expat/lib/iasciitab.h deleted file mode 100644 index 24a1d5ccc9a..00000000000 --- a/platform/win32/msvc/external/expat/lib/iasciitab.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -/* Like asciitab.h, except that 0xD has code BT_S rather than BT_CR */ -/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML, -/* 0x0C */ BT_NONXML, BT_S, BT_NONXML, BT_NONXML, -/* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM, -/* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS, -/* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS, -/* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL, -/* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, -/* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, -/* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI, -/* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST, -/* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, -/* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, -/* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB, -/* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT, -/* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, -/* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, -/* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, -/* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER, diff --git a/platform/win32/msvc/external/expat/lib/internal.h b/platform/win32/msvc/external/expat/lib/internal.h deleted file mode 100644 index dd5454831da..00000000000 --- a/platform/win32/msvc/external/expat/lib/internal.h +++ /dev/null @@ -1,73 +0,0 @@ -/* internal.h - - Internal definitions used by Expat. This is not needed to compile - client code. - - The following calling convention macros are defined for frequently - called functions: - - FASTCALL - Used for those internal functions that have a simple - body and a low number of arguments and local variables. - - PTRCALL - Used for functions called though function pointers. - - PTRFASTCALL - Like PTRCALL, but for low number of arguments. - - inline - Used for selected internal functions for which inlining - may improve performance on some platforms. - - Note: Use of these macros is based on judgement, not hard rules, - and therefore subject to change. -*/ - -#if defined(__GNUC__) && defined(__i386__) && !defined(__MINGW32__) -/* We'll use this version by default only where we know it helps. - - regparm() generates warnings on Solaris boxes. See SF bug #692878. - - Instability reported with egcs on a RedHat Linux 7.3. - Let's comment out: - #define FASTCALL __attribute__((stdcall, regparm(3))) - and let's try this: -*/ -#define FASTCALL __attribute__((regparm(3))) -#define PTRFASTCALL __attribute__((regparm(3))) -#endif - -/* Using __fastcall seems to have an unexpected negative effect under - MS VC++, especially for function pointers, so we won't use it for - now on that platform. It may be reconsidered for a future release - if it can be made more effective. - Likely reason: __fastcall on Windows is like stdcall, therefore - the compiler cannot perform stack optimizations for call clusters. -*/ - -/* Make sure all of these are defined if they aren't already. */ - -#ifndef FASTCALL -#define FASTCALL -#endif - -#ifndef PTRCALL -#define PTRCALL -#endif - -#ifndef PTRFASTCALL -#define PTRFASTCALL -#endif - -#ifndef XML_MIN_SIZE -#if !defined(__cplusplus) && !defined(inline) -#ifdef __GNUC__ -#define inline __inline -#endif /* __GNUC__ */ -#endif -#endif /* XML_MIN_SIZE */ - -#ifdef __cplusplus -#define inline inline -#else -#ifndef inline -#define inline -#endif -#endif diff --git a/platform/win32/msvc/external/expat/lib/latin1tab.h b/platform/win32/msvc/external/expat/lib/latin1tab.h deleted file mode 100644 index 53c25d76b26..00000000000 --- a/platform/win32/msvc/external/expat/lib/latin1tab.h +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -/* 0x80 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x84 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x88 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x8C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x90 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x94 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x98 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x9C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xA0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xA4 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xA8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER, -/* 0xAC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xB0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xB4 */ BT_OTHER, BT_NMSTRT, BT_OTHER, BT_NAME, -/* 0xB8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER, -/* 0xBC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xC0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xC4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xC8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xCC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xD0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xD4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, -/* 0xD8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xDC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xE0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xE4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xE8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xEC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xF0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xF4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, -/* 0xF8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xFC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, diff --git a/platform/win32/msvc/external/expat/lib/libexpat.def b/platform/win32/msvc/external/expat/lib/libexpat.def deleted file mode 100644 index 3920bbcf901..00000000000 --- a/platform/win32/msvc/external/expat/lib/libexpat.def +++ /dev/null @@ -1,73 +0,0 @@ -; DEF file for MS VC++ - -LIBRARY -EXPORTS - XML_DefaultCurrent @1 - XML_ErrorString @2 - XML_ExpatVersion @3 - XML_ExpatVersionInfo @4 - XML_ExternalEntityParserCreate @5 - XML_GetBase @6 - XML_GetBuffer @7 - XML_GetCurrentByteCount @8 - XML_GetCurrentByteIndex @9 - XML_GetCurrentColumnNumber @10 - XML_GetCurrentLineNumber @11 - XML_GetErrorCode @12 - XML_GetIdAttributeIndex @13 - XML_GetInputContext @14 - XML_GetSpecifiedAttributeCount @15 - XML_Parse @16 - XML_ParseBuffer @17 - XML_ParserCreate @18 - XML_ParserCreateNS @19 - XML_ParserCreate_MM @20 - XML_ParserFree @21 - XML_SetAttlistDeclHandler @22 - XML_SetBase @23 - XML_SetCdataSectionHandler @24 - XML_SetCharacterDataHandler @25 - XML_SetCommentHandler @26 - XML_SetDefaultHandler @27 - XML_SetDefaultHandlerExpand @28 - XML_SetDoctypeDeclHandler @29 - XML_SetElementDeclHandler @30 - XML_SetElementHandler @31 - XML_SetEncoding @32 - XML_SetEndCdataSectionHandler @33 - XML_SetEndDoctypeDeclHandler @34 - XML_SetEndElementHandler @35 - XML_SetEndNamespaceDeclHandler @36 - XML_SetEntityDeclHandler @37 - XML_SetExternalEntityRefHandler @38 - XML_SetExternalEntityRefHandlerArg @39 - XML_SetNamespaceDeclHandler @40 - XML_SetNotStandaloneHandler @41 - XML_SetNotationDeclHandler @42 - XML_SetParamEntityParsing @43 - XML_SetProcessingInstructionHandler @44 - XML_SetReturnNSTriplet @45 - XML_SetStartCdataSectionHandler @46 - XML_SetStartDoctypeDeclHandler @47 - XML_SetStartElementHandler @48 - XML_SetStartNamespaceDeclHandler @49 - XML_SetUnknownEncodingHandler @50 - XML_SetUnparsedEntityDeclHandler @51 - XML_SetUserData @52 - XML_SetXmlDeclHandler @53 - XML_UseParserAsHandlerArg @54 -; added with version 1.95.3 - XML_ParserReset @55 - XML_SetSkippedEntityHandler @56 -; added with version 1.95.5 - XML_GetFeatureList @57 - XML_UseForeignDTD @58 -; added with version 1.95.6 - XML_FreeContentModel @59 - XML_MemMalloc @60 - XML_MemRealloc @61 - XML_MemFree @62 -; added with version 1.95.8 - XML_StopParser @63 - XML_ResumeParser @64 - XML_GetParsingStatus @65 diff --git a/platform/win32/msvc/external/expat/lib/nametab.h b/platform/win32/msvc/external/expat/lib/nametab.h deleted file mode 100644 index b05e62c77a6..00000000000 --- a/platform/win32/msvc/external/expat/lib/nametab.h +++ /dev/null @@ -1,150 +0,0 @@ -static const unsigned namingBitmap[] = { -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -0x00000000, 0x04000000, 0x87FFFFFE, 0x07FFFFFE, -0x00000000, 0x00000000, 0xFF7FFFFF, 0xFF7FFFFF, -0xFFFFFFFF, 0x7FF3FFFF, 0xFFFFFDFE, 0x7FFFFFFF, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE00F, 0xFC31FFFF, -0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF, -0xFFFFFFFF, 0xF80001FF, 0x00000003, 0x00000000, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0xFFFFD740, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD, -0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF, -0xFFFF0003, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF, -0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE, -0x0000007F, 0x00000000, 0xFFFF0000, 0x000707FF, -0x00000000, 0x07FFFFFE, 0x000007FE, 0xFFFE0000, -0xFFFFFFFF, 0x7CFFFFFF, 0x002F7FFF, 0x00000060, -0xFFFFFFE0, 0x23FFFFFF, 0xFF000000, 0x00000003, -0xFFF99FE0, 0x03C5FDFF, 0xB0000000, 0x00030003, -0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000, -0xFFFBAFE0, 0x23EDFDFF, 0x00000000, 0x00000001, -0xFFF99FE0, 0x23CDFDFF, 0xB0000000, 0x00000003, -0xD63DC7E0, 0x03BFC718, 0x00000000, 0x00000000, -0xFFFDDFE0, 0x03EFFDFF, 0x00000000, 0x00000003, -0xFFFDDFE0, 0x03EFFDFF, 0x40000000, 0x00000003, -0xFFFDDFE0, 0x03FFFDFF, 0x00000000, 0x00000003, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0xFFFFFFFE, 0x000D7FFF, 0x0000003F, 0x00000000, -0xFEF02596, 0x200D6CAE, 0x0000001F, 0x00000000, -0x00000000, 0x00000000, 0xFFFFFEFF, 0x000003FF, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0x00000000, 0xFFFFFFFF, 0xFFFF003F, 0x007FFFFF, -0x0007DAED, 0x50000000, 0x82315001, 0x002C62AB, -0x40000000, 0xF580C900, 0x00000007, 0x02010800, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -0x0FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF, -0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF, -0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF, -0x00000000, 0x00004C40, 0x00000000, 0x00000000, -0x00000007, 0x00000000, 0x00000000, 0x00000000, -0x00000080, 0x000003FE, 0xFFFFFFFE, 0xFFFFFFFF, -0x001FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x07FFFFFF, -0xFFFFFFE0, 0x00001FFF, 0x00000000, 0x00000000, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000, -0x00000000, 0x07FF6000, 0x87FFFFFE, 0x07FFFFFE, -0x00000000, 0x00800000, 0xFF7FFFFF, 0xFF7FFFFF, -0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF, -0xFFFFFFFF, 0xF80001FF, 0x00030003, 0x00000000, -0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000003, -0xFFFFD7C0, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD, -0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF, -0xFFFF007B, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF, -0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE, -0xFFFE007F, 0xBBFFFFFB, 0xFFFF0016, 0x000707FF, -0x00000000, 0x07FFFFFE, 0x0007FFFF, 0xFFFF03FF, -0xFFFFFFFF, 0x7CFFFFFF, 0xFFEF7FFF, 0x03FF3DFF, -0xFFFFFFEE, 0xF3FFFFFF, 0xFF1E3FFF, 0x0000FFCF, -0xFFF99FEE, 0xD3C5FDFF, 0xB080399F, 0x0003FFCF, -0xFFF987E4, 0xD36DFDFF, 0x5E003987, 0x001FFFC0, -0xFFFBAFEE, 0xF3EDFDFF, 0x00003BBF, 0x0000FFC1, -0xFFF99FEE, 0xF3CDFDFF, 0xB0C0398F, 0x0000FFC3, -0xD63DC7EC, 0xC3BFC718, 0x00803DC7, 0x0000FF80, -0xFFFDDFEE, 0xC3EFFDFF, 0x00603DDF, 0x0000FFC3, -0xFFFDDFEC, 0xC3EFFDFF, 0x40603DDF, 0x0000FFC3, -0xFFFDDFEC, 0xC3FFFDFF, 0x00803DCF, 0x0000FFC3, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FFF, 0x00000000, -0xFEF02596, 0x3BFF6CAE, 0x03FF3F5F, 0x00000000, -0x03000000, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE03FF, -0xFEBF0FDF, 0x02FE3FFF, 0x00000000, 0x00000000, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0x00000000, 0x00000000, 0x1FFF0000, 0x00000002, -0x000000A0, 0x003EFFFE, 0xFFFFFFFE, 0xFFFFFFFF, -0x661FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x77FFFFFF, -}; -static const unsigned char nmstrtPages[] = { -0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00, -0x00, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, -0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13, -0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x15, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -static const unsigned char namePages[] = { -0x19, 0x03, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x00, -0x00, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, -0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13, -0x26, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x27, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; diff --git a/platform/win32/msvc/external/expat/lib/utf8tab.h b/platform/win32/msvc/external/expat/lib/utf8tab.h deleted file mode 100644 index 7bb3e77603f..00000000000 --- a/platform/win32/msvc/external/expat/lib/utf8tab.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - - -/* 0x80 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x84 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x88 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x8C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x90 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x94 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x98 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x9C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xA0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xA4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xA8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xAC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xB0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xB4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xB8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xBC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xC0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xC4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xC8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xCC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xD0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xD4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xD8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xDC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xE0 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, -/* 0xE4 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, -/* 0xE8 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, -/* 0xEC */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, -/* 0xF0 */ BT_LEAD4, BT_LEAD4, BT_LEAD4, BT_LEAD4, -/* 0xF4 */ BT_LEAD4, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0xF8 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0xFC */ BT_NONXML, BT_NONXML, BT_MALFORM, BT_MALFORM, diff --git a/platform/win32/msvc/external/expat/lib/winconfig.h b/platform/win32/msvc/external/expat/lib/winconfig.h deleted file mode 100644 index c1b791d62d0..00000000000 --- a/platform/win32/msvc/external/expat/lib/winconfig.h +++ /dev/null @@ -1,30 +0,0 @@ -/*================================================================ -** Copyright 2000, Clark Cooper -** All rights reserved. -** -** This is free software. You are permitted to copy, distribute, or modify -** it under the terms of the MIT/X license (contained in the COPYING file -** with this distribution.) -*/ - -#ifndef WINCONFIG_H -#define WINCONFIG_H - -#define WIN32_LEAN_AND_MEAN -#include -#undef WIN32_LEAN_AND_MEAN - -#include -#include - -#define XML_NS 1 -#define XML_DTD 1 -#define XML_CONTEXT_BYTES 1024 - -/* we will assume all Windows platforms are little endian */ -#define BYTEORDER 1234 - -/* Windows has memmove() available. */ -#define HAVE_MEMMOVE - -#endif /* ndef WINCONFIG_H */ diff --git a/platform/win32/msvc/external/expat/lib/xmlparse.c b/platform/win32/msvc/external/expat/lib/xmlparse.c deleted file mode 100644 index f35aa36ba8a..00000000000 --- a/platform/win32/msvc/external/expat/lib/xmlparse.c +++ /dev/null @@ -1,6403 +0,0 @@ -/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#include -#include /* memset(), memcpy() */ -#include -#include /* UINT_MAX */ -#include /* time() */ - -#define XML_BUILDING_EXPAT 1 - -#ifdef COMPILED_FROM_DSP -#include "winconfig.h" -#elif defined(MACOS_CLASSIC) -#include "macconfig.h" -#elif defined(__amigaos__) -#include "amigaconfig.h" -#elif defined(__WATCOMC__) -#include "watcomconfig.h" -#elif defined(HAVE_EXPAT_CONFIG_H) -#include -#endif /* ndef COMPILED_FROM_DSP */ - -#include "ascii.h" -#include "expat.h" - -#ifdef XML_UNICODE -#define XML_ENCODE_MAX XML_UTF16_ENCODE_MAX -#define XmlConvert XmlUtf16Convert -#define XmlGetInternalEncoding XmlGetUtf16InternalEncoding -#define XmlGetInternalEncodingNS XmlGetUtf16InternalEncodingNS -#define XmlEncode XmlUtf16Encode -/* Using pointer subtraction to convert to integer type. */ -#define MUST_CONVERT(enc, s) (!(enc)->isUtf16 || (((char *)(s) - (char *)NULL) & 1)) -typedef unsigned short ICHAR; -#else -#define XML_ENCODE_MAX XML_UTF8_ENCODE_MAX -#define XmlConvert XmlUtf8Convert -#define XmlGetInternalEncoding XmlGetUtf8InternalEncoding -#define XmlGetInternalEncodingNS XmlGetUtf8InternalEncodingNS -#define XmlEncode XmlUtf8Encode -#define MUST_CONVERT(enc, s) (!(enc)->isUtf8) -typedef char ICHAR; -#endif - - -#ifndef XML_NS - -#define XmlInitEncodingNS XmlInitEncoding -#define XmlInitUnknownEncodingNS XmlInitUnknownEncoding -#undef XmlGetInternalEncodingNS -#define XmlGetInternalEncodingNS XmlGetInternalEncoding -#define XmlParseXmlDeclNS XmlParseXmlDecl - -#endif - -#ifdef XML_UNICODE - -#ifdef XML_UNICODE_WCHAR_T -#define XML_T(x) (const wchar_t)x -#define XML_L(x) L ## x -#else -#define XML_T(x) (const unsigned short)x -#define XML_L(x) x -#endif - -#else - -#define XML_T(x) x -#define XML_L(x) x - -#endif - -/* Round up n to be a multiple of sz, where sz is a power of 2. */ -#define ROUND_UP(n, sz) (((n) + ((sz) - 1)) & ~((sz) - 1)) - -/* Handle the case where memmove() doesn't exist. */ -#ifndef HAVE_MEMMOVE -#ifdef HAVE_BCOPY -#define memmove(d,s,l) bcopy((s),(d),(l)) -#else -#error memmove does not exist on this platform, nor is a substitute available -#endif /* HAVE_BCOPY */ -#endif /* HAVE_MEMMOVE */ - -#include "internal.h" -#include "xmltok.h" -#include "xmlrole.h" - -typedef const XML_Char *KEY; - -typedef struct { - KEY name; -} NAMED; - -typedef struct { - NAMED **v; - unsigned char power; - size_t size; - size_t used; - const XML_Memory_Handling_Suite *mem; -} HASH_TABLE; - -/* Basic character hash algorithm, taken from Python's string hash: - h = h * 1000003 ^ character, the constant being a prime number. - -*/ -#ifdef XML_UNICODE -#define CHAR_HASH(h, c) \ - (((h) * 0xF4243) ^ (unsigned short)(c)) -#else -#define CHAR_HASH(h, c) \ - (((h) * 0xF4243) ^ (unsigned char)(c)) -#endif - -/* For probing (after a collision) we need a step size relative prime - to the hash table size, which is a power of 2. We use double-hashing, - since we can calculate a second hash value cheaply by taking those bits - of the first hash value that were discarded (masked out) when the table - index was calculated: index = hash & mask, where mask = table->size - 1. - We limit the maximum step size to table->size / 4 (mask >> 2) and make - it odd, since odd numbers are always relative prime to a power of 2. -*/ -#define SECOND_HASH(hash, mask, power) \ - ((((hash) & ~(mask)) >> ((power) - 1)) & ((mask) >> 2)) -#define PROBE_STEP(hash, mask, power) \ - ((unsigned char)((SECOND_HASH(hash, mask, power)) | 1)) - -typedef struct { - NAMED **p; - NAMED **end; -} HASH_TABLE_ITER; - -#define INIT_TAG_BUF_SIZE 32 /* must be a multiple of sizeof(XML_Char) */ -#define INIT_DATA_BUF_SIZE 1024 -#define INIT_ATTS_SIZE 16 -#define INIT_ATTS_VERSION 0xFFFFFFFF -#define INIT_BLOCK_SIZE 1024 -#define INIT_BUFFER_SIZE 1024 - -#define EXPAND_SPARE 24 - -typedef struct binding { - struct prefix *prefix; - struct binding *nextTagBinding; - struct binding *prevPrefixBinding; - const struct attribute_id *attId; - XML_Char *uri; - int uriLen; - int uriAlloc; -} BINDING; - -typedef struct prefix { - const XML_Char *name; - BINDING *binding; -} PREFIX; - -typedef struct { - const XML_Char *str; - const XML_Char *localPart; - const XML_Char *prefix; - int strLen; - int uriLen; - int prefixLen; -} TAG_NAME; - -/* TAG represents an open element. - The name of the element is stored in both the document and API - encodings. The memory buffer 'buf' is a separately-allocated - memory area which stores the name. During the XML_Parse()/ - XMLParseBuffer() when the element is open, the memory for the 'raw' - version of the name (in the document encoding) is shared with the - document buffer. If the element is open across calls to - XML_Parse()/XML_ParseBuffer(), the buffer is re-allocated to - contain the 'raw' name as well. - - A parser re-uses these structures, maintaining a list of allocated - TAG objects in a free list. -*/ -typedef struct tag { - struct tag *parent; /* parent of this element */ - const char *rawName; /* tagName in the original encoding */ - int rawNameLength; - TAG_NAME name; /* tagName in the API encoding */ - char *buf; /* buffer for name components */ - char *bufEnd; /* end of the buffer */ - BINDING *bindings; -} TAG; - -typedef struct { - const XML_Char *name; - const XML_Char *textPtr; - int textLen; /* length in XML_Chars */ - int processed; /* # of processed bytes - when suspended */ - const XML_Char *systemId; - const XML_Char *base; - const XML_Char *publicId; - const XML_Char *notation; - XML_Bool open; - XML_Bool is_param; - XML_Bool is_internal; /* true if declared in internal subset outside PE */ -} ENTITY; - -typedef struct { - enum XML_Content_Type type; - enum XML_Content_Quant quant; - const XML_Char * name; - int firstchild; - int lastchild; - int childcnt; - int nextsib; -} CONTENT_SCAFFOLD; - -#define INIT_SCAFFOLD_ELEMENTS 32 - -typedef struct block { - struct block *next; - int size; - XML_Char s[1]; -} BLOCK; - -typedef struct { - BLOCK *blocks; - BLOCK *freeBlocks; - const XML_Char *end; - XML_Char *ptr; - XML_Char *start; - const XML_Memory_Handling_Suite *mem; -} STRING_POOL; - -/* The XML_Char before the name is used to determine whether - an attribute has been specified. */ -typedef struct attribute_id { - XML_Char *name; - PREFIX *prefix; - XML_Bool maybeTokenized; - XML_Bool xmlns; -} ATTRIBUTE_ID; - -typedef struct { - const ATTRIBUTE_ID *id; - XML_Bool isCdata; - const XML_Char *value; -} DEFAULT_ATTRIBUTE; - -typedef struct { - unsigned long version; - unsigned long hash; - const XML_Char *uriName; -} NS_ATT; - -typedef struct { - const XML_Char *name; - PREFIX *prefix; - const ATTRIBUTE_ID *idAtt; - int nDefaultAtts; - int allocDefaultAtts; - DEFAULT_ATTRIBUTE *defaultAtts; -} ELEMENT_TYPE; - -typedef struct { - HASH_TABLE generalEntities; - HASH_TABLE elementTypes; - HASH_TABLE attributeIds; - HASH_TABLE prefixes; - STRING_POOL pool; - STRING_POOL entityValuePool; - /* false once a parameter entity reference has been skipped */ - XML_Bool keepProcessing; - /* true once an internal or external PE reference has been encountered; - this includes the reference to an external subset */ - XML_Bool hasParamEntityRefs; - XML_Bool standalone; -#ifdef XML_DTD - /* indicates if external PE has been read */ - XML_Bool paramEntityRead; - HASH_TABLE paramEntities; -#endif /* XML_DTD */ - PREFIX defaultPrefix; - /* === scaffolding for building content model === */ - XML_Bool in_eldecl; - CONTENT_SCAFFOLD *scaffold; - unsigned contentStringLen; - unsigned scaffSize; - unsigned scaffCount; - int scaffLevel; - int *scaffIndex; -} DTD; - -typedef struct open_internal_entity { - const char *internalEventPtr; - const char *internalEventEndPtr; - struct open_internal_entity *next; - ENTITY *entity; - int startTagLevel; - XML_Bool betweenDecl; /* WFC: PE Between Declarations */ -} OPEN_INTERNAL_ENTITY; - -typedef enum XML_Error PTRCALL Processor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr); - -static Processor prologProcessor; -static Processor prologInitProcessor; -static Processor contentProcessor; -static Processor cdataSectionProcessor; -#ifdef XML_DTD -static Processor ignoreSectionProcessor; -static Processor externalParEntProcessor; -static Processor externalParEntInitProcessor; -static Processor entityValueProcessor; -static Processor entityValueInitProcessor; -#endif /* XML_DTD */ -static Processor epilogProcessor; -static Processor errorProcessor; -static Processor externalEntityInitProcessor; -static Processor externalEntityInitProcessor2; -static Processor externalEntityInitProcessor3; -static Processor externalEntityContentProcessor; -static Processor internalEntityProcessor; - -static enum XML_Error -handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName); -static enum XML_Error -processXmlDecl(XML_Parser parser, int isGeneralTextEntity, - const char *s, const char *next); -static enum XML_Error -initializeEncoding(XML_Parser parser); -static enum XML_Error -doProlog(XML_Parser parser, const ENCODING *enc, const char *s, - const char *end, int tok, const char *next, const char **nextPtr, - XML_Bool haveMore); -static enum XML_Error -processInternalEntity(XML_Parser parser, ENTITY *entity, - XML_Bool betweenDecl); -static enum XML_Error -doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc, - const char *start, const char *end, const char **endPtr, - XML_Bool haveMore); -static enum XML_Error -doCdataSection(XML_Parser parser, const ENCODING *, const char **startPtr, - const char *end, const char **nextPtr, XML_Bool haveMore); -#ifdef XML_DTD -static enum XML_Error -doIgnoreSection(XML_Parser parser, const ENCODING *, const char **startPtr, - const char *end, const char **nextPtr, XML_Bool haveMore); -#endif /* XML_DTD */ - -static enum XML_Error -storeAtts(XML_Parser parser, const ENCODING *, const char *s, - TAG_NAME *tagNamePtr, BINDING **bindingsPtr); -static enum XML_Error -addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, - const XML_Char *uri, BINDING **bindingsPtr); -static int -defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *, XML_Bool isCdata, - XML_Bool isId, const XML_Char *dfltValue, XML_Parser parser); -static enum XML_Error -storeAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata, - const char *, const char *, STRING_POOL *); -static enum XML_Error -appendAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata, - const char *, const char *, STRING_POOL *); -static ATTRIBUTE_ID * -getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start, - const char *end); -static int -setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *); -static enum XML_Error -storeEntityValue(XML_Parser parser, const ENCODING *enc, const char *start, - const char *end); -static int -reportProcessingInstruction(XML_Parser parser, const ENCODING *enc, - const char *start, const char *end); -static int -reportComment(XML_Parser parser, const ENCODING *enc, const char *start, - const char *end); -static void -reportDefault(XML_Parser parser, const ENCODING *enc, const char *start, - const char *end); - -static const XML_Char * getContext(XML_Parser parser); -static XML_Bool -setContext(XML_Parser parser, const XML_Char *context); - -static void FASTCALL normalizePublicId(XML_Char *s); - -static DTD * dtdCreate(const XML_Memory_Handling_Suite *ms); -/* do not call if parentParser != NULL */ -static void dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms); -static void -dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms); -static int -dtdCopy(XML_Parser oldParser, - DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms); -static int -copyEntityTable(XML_Parser oldParser, - HASH_TABLE *, STRING_POOL *, const HASH_TABLE *); -static NAMED * -lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize); -static void FASTCALL -hashTableInit(HASH_TABLE *, const XML_Memory_Handling_Suite *ms); -static void FASTCALL hashTableClear(HASH_TABLE *); -static void FASTCALL hashTableDestroy(HASH_TABLE *); -static void FASTCALL -hashTableIterInit(HASH_TABLE_ITER *, const HASH_TABLE *); -static NAMED * FASTCALL hashTableIterNext(HASH_TABLE_ITER *); - -static void FASTCALL -poolInit(STRING_POOL *, const XML_Memory_Handling_Suite *ms); -static void FASTCALL poolClear(STRING_POOL *); -static void FASTCALL poolDestroy(STRING_POOL *); -static XML_Char * -poolAppend(STRING_POOL *pool, const ENCODING *enc, - const char *ptr, const char *end); -static XML_Char * -poolStoreString(STRING_POOL *pool, const ENCODING *enc, - const char *ptr, const char *end); -static XML_Bool FASTCALL poolGrow(STRING_POOL *pool); -static const XML_Char * FASTCALL -poolCopyString(STRING_POOL *pool, const XML_Char *s); -static const XML_Char * -poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n); -static const XML_Char * FASTCALL -poolAppendString(STRING_POOL *pool, const XML_Char *s); - -static int FASTCALL nextScaffoldPart(XML_Parser parser); -static XML_Content * build_model(XML_Parser parser); -static ELEMENT_TYPE * -getElementType(XML_Parser parser, const ENCODING *enc, - const char *ptr, const char *end); - -static unsigned long generate_hash_secret_salt(void); -static XML_Bool startParsing(XML_Parser parser); - -static XML_Parser -parserCreate(const XML_Char *encodingName, - const XML_Memory_Handling_Suite *memsuite, - const XML_Char *nameSep, - DTD *dtd); - -static void -parserInit(XML_Parser parser, const XML_Char *encodingName); - -#define poolStart(pool) ((pool)->start) -#define poolEnd(pool) ((pool)->ptr) -#define poolLength(pool) ((pool)->ptr - (pool)->start) -#define poolChop(pool) ((void)--(pool->ptr)) -#define poolLastChar(pool) (((pool)->ptr)[-1]) -#define poolDiscard(pool) ((pool)->ptr = (pool)->start) -#define poolFinish(pool) ((pool)->start = (pool)->ptr) -#define poolAppendChar(pool, c) \ - (((pool)->ptr == (pool)->end && !poolGrow(pool)) \ - ? 0 \ - : ((*((pool)->ptr)++ = c), 1)) - -struct XML_ParserStruct { - /* The first member must be userData so that the XML_GetUserData - macro works. */ - void *m_userData; - void *m_handlerArg; - char *m_buffer; - const XML_Memory_Handling_Suite m_mem; - /* first character to be parsed */ - const char *m_bufferPtr; - /* past last character to be parsed */ - char *m_bufferEnd; - /* allocated end of buffer */ - const char *m_bufferLim; - XML_Index m_parseEndByteIndex; - const char *m_parseEndPtr; - XML_Char *m_dataBuf; - XML_Char *m_dataBufEnd; - XML_StartElementHandler m_startElementHandler; - XML_EndElementHandler m_endElementHandler; - XML_CharacterDataHandler m_characterDataHandler; - XML_ProcessingInstructionHandler m_processingInstructionHandler; - XML_CommentHandler m_commentHandler; - XML_StartCdataSectionHandler m_startCdataSectionHandler; - XML_EndCdataSectionHandler m_endCdataSectionHandler; - XML_DefaultHandler m_defaultHandler; - XML_StartDoctypeDeclHandler m_startDoctypeDeclHandler; - XML_EndDoctypeDeclHandler m_endDoctypeDeclHandler; - XML_UnparsedEntityDeclHandler m_unparsedEntityDeclHandler; - XML_NotationDeclHandler m_notationDeclHandler; - XML_StartNamespaceDeclHandler m_startNamespaceDeclHandler; - XML_EndNamespaceDeclHandler m_endNamespaceDeclHandler; - XML_NotStandaloneHandler m_notStandaloneHandler; - XML_ExternalEntityRefHandler m_externalEntityRefHandler; - XML_Parser m_externalEntityRefHandlerArg; - XML_SkippedEntityHandler m_skippedEntityHandler; - XML_UnknownEncodingHandler m_unknownEncodingHandler; - XML_ElementDeclHandler m_elementDeclHandler; - XML_AttlistDeclHandler m_attlistDeclHandler; - XML_EntityDeclHandler m_entityDeclHandler; - XML_XmlDeclHandler m_xmlDeclHandler; - const ENCODING *m_encoding; - INIT_ENCODING m_initEncoding; - const ENCODING *m_internalEncoding; - const XML_Char *m_protocolEncodingName; - XML_Bool m_ns; - XML_Bool m_ns_triplets; - void *m_unknownEncodingMem; - void *m_unknownEncodingData; - void *m_unknownEncodingHandlerData; - void (XMLCALL *m_unknownEncodingRelease)(void *); - PROLOG_STATE m_prologState; - Processor *m_processor; - enum XML_Error m_errorCode; - const char *m_eventPtr; - const char *m_eventEndPtr; - const char *m_positionPtr; - OPEN_INTERNAL_ENTITY *m_openInternalEntities; - OPEN_INTERNAL_ENTITY *m_freeInternalEntities; - XML_Bool m_defaultExpandInternalEntities; - int m_tagLevel; - ENTITY *m_declEntity; - const XML_Char *m_doctypeName; - const XML_Char *m_doctypeSysid; - const XML_Char *m_doctypePubid; - const XML_Char *m_declAttributeType; - const XML_Char *m_declNotationName; - const XML_Char *m_declNotationPublicId; - ELEMENT_TYPE *m_declElementType; - ATTRIBUTE_ID *m_declAttributeId; - XML_Bool m_declAttributeIsCdata; - XML_Bool m_declAttributeIsId; - DTD *m_dtd; - const XML_Char *m_curBase; - TAG *m_tagStack; - TAG *m_freeTagList; - BINDING *m_inheritedBindings; - BINDING *m_freeBindingList; - int m_attsSize; - int m_nSpecifiedAtts; - int m_idAttIndex; - ATTRIBUTE *m_atts; - NS_ATT *m_nsAtts; - unsigned long m_nsAttsVersion; - unsigned char m_nsAttsPower; -#ifdef XML_ATTR_INFO - XML_AttrInfo *m_attInfo; -#endif - POSITION m_position; - STRING_POOL m_tempPool; - STRING_POOL m_temp2Pool; - char *m_groupConnector; - unsigned int m_groupSize; - XML_Char m_namespaceSeparator; - XML_Parser m_parentParser; - XML_ParsingStatus m_parsingStatus; -#ifdef XML_DTD - XML_Bool m_isParamEntity; - XML_Bool m_useForeignDTD; - enum XML_ParamEntityParsing m_paramEntityParsing; -#endif - unsigned long m_hash_secret_salt; -}; - -#define MALLOC(s) (parser->m_mem.malloc_fcn((s))) -#define REALLOC(p,s) (parser->m_mem.realloc_fcn((p),(s))) -#define FREE(p) (parser->m_mem.free_fcn((p))) - -#define userData (parser->m_userData) -#define handlerArg (parser->m_handlerArg) -#define startElementHandler (parser->m_startElementHandler) -#define endElementHandler (parser->m_endElementHandler) -#define characterDataHandler (parser->m_characterDataHandler) -#define processingInstructionHandler \ - (parser->m_processingInstructionHandler) -#define commentHandler (parser->m_commentHandler) -#define startCdataSectionHandler \ - (parser->m_startCdataSectionHandler) -#define endCdataSectionHandler (parser->m_endCdataSectionHandler) -#define defaultHandler (parser->m_defaultHandler) -#define startDoctypeDeclHandler (parser->m_startDoctypeDeclHandler) -#define endDoctypeDeclHandler (parser->m_endDoctypeDeclHandler) -#define unparsedEntityDeclHandler \ - (parser->m_unparsedEntityDeclHandler) -#define notationDeclHandler (parser->m_notationDeclHandler) -#define startNamespaceDeclHandler \ - (parser->m_startNamespaceDeclHandler) -#define endNamespaceDeclHandler (parser->m_endNamespaceDeclHandler) -#define notStandaloneHandler (parser->m_notStandaloneHandler) -#define externalEntityRefHandler \ - (parser->m_externalEntityRefHandler) -#define externalEntityRefHandlerArg \ - (parser->m_externalEntityRefHandlerArg) -#define internalEntityRefHandler \ - (parser->m_internalEntityRefHandler) -#define skippedEntityHandler (parser->m_skippedEntityHandler) -#define unknownEncodingHandler (parser->m_unknownEncodingHandler) -#define elementDeclHandler (parser->m_elementDeclHandler) -#define attlistDeclHandler (parser->m_attlistDeclHandler) -#define entityDeclHandler (parser->m_entityDeclHandler) -#define xmlDeclHandler (parser->m_xmlDeclHandler) -#define encoding (parser->m_encoding) -#define initEncoding (parser->m_initEncoding) -#define internalEncoding (parser->m_internalEncoding) -#define unknownEncodingMem (parser->m_unknownEncodingMem) -#define unknownEncodingData (parser->m_unknownEncodingData) -#define unknownEncodingHandlerData \ - (parser->m_unknownEncodingHandlerData) -#define unknownEncodingRelease (parser->m_unknownEncodingRelease) -#define protocolEncodingName (parser->m_protocolEncodingName) -#define ns (parser->m_ns) -#define ns_triplets (parser->m_ns_triplets) -#define prologState (parser->m_prologState) -#define processor (parser->m_processor) -#define errorCode (parser->m_errorCode) -#define eventPtr (parser->m_eventPtr) -#define eventEndPtr (parser->m_eventEndPtr) -#define positionPtr (parser->m_positionPtr) -#define position (parser->m_position) -#define openInternalEntities (parser->m_openInternalEntities) -#define freeInternalEntities (parser->m_freeInternalEntities) -#define defaultExpandInternalEntities \ - (parser->m_defaultExpandInternalEntities) -#define tagLevel (parser->m_tagLevel) -#define buffer (parser->m_buffer) -#define bufferPtr (parser->m_bufferPtr) -#define bufferEnd (parser->m_bufferEnd) -#define parseEndByteIndex (parser->m_parseEndByteIndex) -#define parseEndPtr (parser->m_parseEndPtr) -#define bufferLim (parser->m_bufferLim) -#define dataBuf (parser->m_dataBuf) -#define dataBufEnd (parser->m_dataBufEnd) -#define _dtd (parser->m_dtd) -#define curBase (parser->m_curBase) -#define declEntity (parser->m_declEntity) -#define doctypeName (parser->m_doctypeName) -#define doctypeSysid (parser->m_doctypeSysid) -#define doctypePubid (parser->m_doctypePubid) -#define declAttributeType (parser->m_declAttributeType) -#define declNotationName (parser->m_declNotationName) -#define declNotationPublicId (parser->m_declNotationPublicId) -#define declElementType (parser->m_declElementType) -#define declAttributeId (parser->m_declAttributeId) -#define declAttributeIsCdata (parser->m_declAttributeIsCdata) -#define declAttributeIsId (parser->m_declAttributeIsId) -#define freeTagList (parser->m_freeTagList) -#define freeBindingList (parser->m_freeBindingList) -#define inheritedBindings (parser->m_inheritedBindings) -#define tagStack (parser->m_tagStack) -#define atts (parser->m_atts) -#define attsSize (parser->m_attsSize) -#define nSpecifiedAtts (parser->m_nSpecifiedAtts) -#define idAttIndex (parser->m_idAttIndex) -#define nsAtts (parser->m_nsAtts) -#define nsAttsVersion (parser->m_nsAttsVersion) -#define nsAttsPower (parser->m_nsAttsPower) -#define attInfo (parser->m_attInfo) -#define tempPool (parser->m_tempPool) -#define temp2Pool (parser->m_temp2Pool) -#define groupConnector (parser->m_groupConnector) -#define groupSize (parser->m_groupSize) -#define namespaceSeparator (parser->m_namespaceSeparator) -#define parentParser (parser->m_parentParser) -#define ps_parsing (parser->m_parsingStatus.parsing) -#define ps_finalBuffer (parser->m_parsingStatus.finalBuffer) -#ifdef XML_DTD -#define isParamEntity (parser->m_isParamEntity) -#define useForeignDTD (parser->m_useForeignDTD) -#define paramEntityParsing (parser->m_paramEntityParsing) -#endif /* XML_DTD */ -#define hash_secret_salt (parser->m_hash_secret_salt) - -XML_Parser XMLCALL -XML_ParserCreate(const XML_Char *encodingName) -{ - return XML_ParserCreate_MM(encodingName, NULL, NULL); -} - -XML_Parser XMLCALL -XML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep) -{ - XML_Char tmp[2]; - *tmp = nsSep; - return XML_ParserCreate_MM(encodingName, NULL, tmp); -} - -static const XML_Char implicitContext[] = { - ASCII_x, ASCII_m, ASCII_l, ASCII_EQUALS, ASCII_h, ASCII_t, ASCII_t, ASCII_p, - ASCII_COLON, ASCII_SLASH, ASCII_SLASH, ASCII_w, ASCII_w, ASCII_w, - ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, ASCII_o, ASCII_r, ASCII_g, - ASCII_SLASH, ASCII_X, ASCII_M, ASCII_L, ASCII_SLASH, ASCII_1, ASCII_9, - ASCII_9, ASCII_8, ASCII_SLASH, ASCII_n, ASCII_a, ASCII_m, ASCII_e, - ASCII_s, ASCII_p, ASCII_a, ASCII_c, ASCII_e, '\0' -}; - -static unsigned long -generate_hash_secret_salt(void) -{ - unsigned int seed = time(NULL) % UINT_MAX; - srand(seed); - return rand(); -} - -static XML_Bool /* only valid for root parser */ -startParsing(XML_Parser parser) -{ - /* hash functions must be initialized before setContext() is called */ - if (hash_secret_salt == 0) - hash_secret_salt = generate_hash_secret_salt(); - if (ns) { - /* implicit context only set for root parser, since child - parsers (i.e. external entity parsers) will inherit it - */ - return setContext(parser, implicitContext); - } - return XML_TRUE; -} - -XML_Parser XMLCALL -XML_ParserCreate_MM(const XML_Char *encodingName, - const XML_Memory_Handling_Suite *memsuite, - const XML_Char *nameSep) -{ - return parserCreate(encodingName, memsuite, nameSep, NULL); -} - -static XML_Parser -parserCreate(const XML_Char *encodingName, - const XML_Memory_Handling_Suite *memsuite, - const XML_Char *nameSep, - DTD *dtd) -{ - XML_Parser parser; - - if (memsuite) { - XML_Memory_Handling_Suite *mtemp; - parser = (XML_Parser) - memsuite->malloc_fcn(sizeof(struct XML_ParserStruct)); - if (parser != NULL) { - mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem); - mtemp->malloc_fcn = memsuite->malloc_fcn; - mtemp->realloc_fcn = memsuite->realloc_fcn; - mtemp->free_fcn = memsuite->free_fcn; - } - } - else { - XML_Memory_Handling_Suite *mtemp; - parser = (XML_Parser)malloc(sizeof(struct XML_ParserStruct)); - if (parser != NULL) { - mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem); - mtemp->malloc_fcn = malloc; - mtemp->realloc_fcn = realloc; - mtemp->free_fcn = free; - } - } - - if (!parser) - return parser; - - buffer = NULL; - bufferLim = NULL; - - attsSize = INIT_ATTS_SIZE; - atts = (ATTRIBUTE *)MALLOC(attsSize * sizeof(ATTRIBUTE)); - if (atts == NULL) { - FREE(parser); - return NULL; - } -#ifdef XML_ATTR_INFO - attInfo = (XML_AttrInfo*)MALLOC(attsSize * sizeof(XML_AttrInfo)); - if (attInfo == NULL) { - FREE(atts); - FREE(parser); - return NULL; - } -#endif - dataBuf = (XML_Char *)MALLOC(INIT_DATA_BUF_SIZE * sizeof(XML_Char)); - if (dataBuf == NULL) { - FREE(atts); -#ifdef XML_ATTR_INFO - FREE(attInfo); -#endif - FREE(parser); - return NULL; - } - dataBufEnd = dataBuf + INIT_DATA_BUF_SIZE; - - if (dtd) - _dtd = dtd; - else { - _dtd = dtdCreate(&parser->m_mem); - if (_dtd == NULL) { - FREE(dataBuf); - FREE(atts); -#ifdef XML_ATTR_INFO - FREE(attInfo); -#endif - FREE(parser); - return NULL; - } - } - - freeBindingList = NULL; - freeTagList = NULL; - freeInternalEntities = NULL; - - groupSize = 0; - groupConnector = NULL; - - unknownEncodingHandler = NULL; - unknownEncodingHandlerData = NULL; - - namespaceSeparator = ASCII_EXCL; - ns = XML_FALSE; - ns_triplets = XML_FALSE; - - nsAtts = NULL; - nsAttsVersion = 0; - nsAttsPower = 0; - - poolInit(&tempPool, &(parser->m_mem)); - poolInit(&temp2Pool, &(parser->m_mem)); - parserInit(parser, encodingName); - - if (encodingName && !protocolEncodingName) { - XML_ParserFree(parser); - return NULL; - } - - if (nameSep) { - ns = XML_TRUE; - internalEncoding = XmlGetInternalEncodingNS(); - namespaceSeparator = *nameSep; - } - else { - internalEncoding = XmlGetInternalEncoding(); - } - - return parser; -} - -static void -parserInit(XML_Parser parser, const XML_Char *encodingName) -{ - processor = prologInitProcessor; - XmlPrologStateInit(&prologState); - protocolEncodingName = (encodingName != NULL - ? poolCopyString(&tempPool, encodingName) - : NULL); - curBase = NULL; - XmlInitEncoding(&initEncoding, &encoding, 0); - userData = NULL; - handlerArg = NULL; - startElementHandler = NULL; - endElementHandler = NULL; - characterDataHandler = NULL; - processingInstructionHandler = NULL; - commentHandler = NULL; - startCdataSectionHandler = NULL; - endCdataSectionHandler = NULL; - defaultHandler = NULL; - startDoctypeDeclHandler = NULL; - endDoctypeDeclHandler = NULL; - unparsedEntityDeclHandler = NULL; - notationDeclHandler = NULL; - startNamespaceDeclHandler = NULL; - endNamespaceDeclHandler = NULL; - notStandaloneHandler = NULL; - externalEntityRefHandler = NULL; - externalEntityRefHandlerArg = parser; - skippedEntityHandler = NULL; - elementDeclHandler = NULL; - attlistDeclHandler = NULL; - entityDeclHandler = NULL; - xmlDeclHandler = NULL; - bufferPtr = buffer; - bufferEnd = buffer; - parseEndByteIndex = 0; - parseEndPtr = NULL; - declElementType = NULL; - declAttributeId = NULL; - declEntity = NULL; - doctypeName = NULL; - doctypeSysid = NULL; - doctypePubid = NULL; - declAttributeType = NULL; - declNotationName = NULL; - declNotationPublicId = NULL; - declAttributeIsCdata = XML_FALSE; - declAttributeIsId = XML_FALSE; - memset(&position, 0, sizeof(POSITION)); - errorCode = XML_ERROR_NONE; - eventPtr = NULL; - eventEndPtr = NULL; - positionPtr = NULL; - openInternalEntities = NULL; - defaultExpandInternalEntities = XML_TRUE; - tagLevel = 0; - tagStack = NULL; - inheritedBindings = NULL; - nSpecifiedAtts = 0; - unknownEncodingMem = NULL; - unknownEncodingRelease = NULL; - unknownEncodingData = NULL; - parentParser = NULL; - ps_parsing = XML_INITIALIZED; -#ifdef XML_DTD - isParamEntity = XML_FALSE; - useForeignDTD = XML_FALSE; - paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; -#endif - hash_secret_salt = 0; -} - -/* moves list of bindings to freeBindingList */ -static void FASTCALL -moveToFreeBindingList(XML_Parser parser, BINDING *bindings) -{ - while (bindings) { - BINDING *b = bindings; - bindings = bindings->nextTagBinding; - b->nextTagBinding = freeBindingList; - freeBindingList = b; - } -} - -XML_Bool XMLCALL -XML_ParserReset(XML_Parser parser, const XML_Char *encodingName) -{ - TAG *tStk; - OPEN_INTERNAL_ENTITY *openEntityList; - if (parentParser) - return XML_FALSE; - /* move tagStack to freeTagList */ - tStk = tagStack; - while (tStk) { - TAG *tag = tStk; - tStk = tStk->parent; - tag->parent = freeTagList; - moveToFreeBindingList(parser, tag->bindings); - tag->bindings = NULL; - freeTagList = tag; - } - /* move openInternalEntities to freeInternalEntities */ - openEntityList = openInternalEntities; - while (openEntityList) { - OPEN_INTERNAL_ENTITY *openEntity = openEntityList; - openEntityList = openEntity->next; - openEntity->next = freeInternalEntities; - freeInternalEntities = openEntity; - } - moveToFreeBindingList(parser, inheritedBindings); - FREE(unknownEncodingMem); - if (unknownEncodingRelease) - unknownEncodingRelease(unknownEncodingData); - poolClear(&tempPool); - poolClear(&temp2Pool); - parserInit(parser, encodingName); - dtdReset(_dtd, &parser->m_mem); - return XML_TRUE; -} - -enum XML_Status XMLCALL -XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName) -{ - /* Block after XML_Parse()/XML_ParseBuffer() has been called. - XXX There's no way for the caller to determine which of the - XXX possible error cases caused the XML_STATUS_ERROR return. - */ - if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) - return XML_STATUS_ERROR; - if (encodingName == NULL) - protocolEncodingName = NULL; - else { - protocolEncodingName = poolCopyString(&tempPool, encodingName); - if (!protocolEncodingName) - return XML_STATUS_ERROR; - } - return XML_STATUS_OK; -} - -XML_Parser XMLCALL -XML_ExternalEntityParserCreate(XML_Parser oldParser, - const XML_Char *context, - const XML_Char *encodingName) -{ - XML_Parser parser = oldParser; - DTD *newDtd = NULL; - DTD *oldDtd = _dtd; - XML_StartElementHandler oldStartElementHandler = startElementHandler; - XML_EndElementHandler oldEndElementHandler = endElementHandler; - XML_CharacterDataHandler oldCharacterDataHandler = characterDataHandler; - XML_ProcessingInstructionHandler oldProcessingInstructionHandler - = processingInstructionHandler; - XML_CommentHandler oldCommentHandler = commentHandler; - XML_StartCdataSectionHandler oldStartCdataSectionHandler - = startCdataSectionHandler; - XML_EndCdataSectionHandler oldEndCdataSectionHandler - = endCdataSectionHandler; - XML_DefaultHandler oldDefaultHandler = defaultHandler; - XML_UnparsedEntityDeclHandler oldUnparsedEntityDeclHandler - = unparsedEntityDeclHandler; - XML_NotationDeclHandler oldNotationDeclHandler = notationDeclHandler; - XML_StartNamespaceDeclHandler oldStartNamespaceDeclHandler - = startNamespaceDeclHandler; - XML_EndNamespaceDeclHandler oldEndNamespaceDeclHandler - = endNamespaceDeclHandler; - XML_NotStandaloneHandler oldNotStandaloneHandler = notStandaloneHandler; - XML_ExternalEntityRefHandler oldExternalEntityRefHandler - = externalEntityRefHandler; - XML_SkippedEntityHandler oldSkippedEntityHandler = skippedEntityHandler; - XML_UnknownEncodingHandler oldUnknownEncodingHandler - = unknownEncodingHandler; - XML_ElementDeclHandler oldElementDeclHandler = elementDeclHandler; - XML_AttlistDeclHandler oldAttlistDeclHandler = attlistDeclHandler; - XML_EntityDeclHandler oldEntityDeclHandler = entityDeclHandler; - XML_XmlDeclHandler oldXmlDeclHandler = xmlDeclHandler; - ELEMENT_TYPE * oldDeclElementType = declElementType; - - void *oldUserData = userData; - void *oldHandlerArg = handlerArg; - XML_Bool oldDefaultExpandInternalEntities = defaultExpandInternalEntities; - XML_Parser oldExternalEntityRefHandlerArg = externalEntityRefHandlerArg; -#ifdef XML_DTD - enum XML_ParamEntityParsing oldParamEntityParsing = paramEntityParsing; - int oldInEntityValue = prologState.inEntityValue; -#endif - XML_Bool oldns_triplets = ns_triplets; - /* Note that the new parser shares the same hash secret as the old - parser, so that dtdCopy and copyEntityTable can lookup values - from hash tables associated with either parser without us having - to worry which hash secrets each table has. - */ - unsigned long oldhash_secret_salt = hash_secret_salt; - -#ifdef XML_DTD - if (!context) - newDtd = oldDtd; -#endif /* XML_DTD */ - - /* Note that the magical uses of the pre-processor to make field - access look more like C++ require that `parser' be overwritten - here. This makes this function more painful to follow than it - would be otherwise. - */ - if (ns) { - XML_Char tmp[2]; - *tmp = namespaceSeparator; - parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd); - } - else { - parser = parserCreate(encodingName, &parser->m_mem, NULL, newDtd); - } - - if (!parser) - return NULL; - - startElementHandler = oldStartElementHandler; - endElementHandler = oldEndElementHandler; - characterDataHandler = oldCharacterDataHandler; - processingInstructionHandler = oldProcessingInstructionHandler; - commentHandler = oldCommentHandler; - startCdataSectionHandler = oldStartCdataSectionHandler; - endCdataSectionHandler = oldEndCdataSectionHandler; - defaultHandler = oldDefaultHandler; - unparsedEntityDeclHandler = oldUnparsedEntityDeclHandler; - notationDeclHandler = oldNotationDeclHandler; - startNamespaceDeclHandler = oldStartNamespaceDeclHandler; - endNamespaceDeclHandler = oldEndNamespaceDeclHandler; - notStandaloneHandler = oldNotStandaloneHandler; - externalEntityRefHandler = oldExternalEntityRefHandler; - skippedEntityHandler = oldSkippedEntityHandler; - unknownEncodingHandler = oldUnknownEncodingHandler; - elementDeclHandler = oldElementDeclHandler; - attlistDeclHandler = oldAttlistDeclHandler; - entityDeclHandler = oldEntityDeclHandler; - xmlDeclHandler = oldXmlDeclHandler; - declElementType = oldDeclElementType; - userData = oldUserData; - if (oldUserData == oldHandlerArg) - handlerArg = userData; - else - handlerArg = parser; - if (oldExternalEntityRefHandlerArg != oldParser) - externalEntityRefHandlerArg = oldExternalEntityRefHandlerArg; - defaultExpandInternalEntities = oldDefaultExpandInternalEntities; - ns_triplets = oldns_triplets; - hash_secret_salt = oldhash_secret_salt; - parentParser = oldParser; -#ifdef XML_DTD - paramEntityParsing = oldParamEntityParsing; - prologState.inEntityValue = oldInEntityValue; - if (context) { -#endif /* XML_DTD */ - if (!dtdCopy(oldParser, _dtd, oldDtd, &parser->m_mem) - || !setContext(parser, context)) { - XML_ParserFree(parser); - return NULL; - } - processor = externalEntityInitProcessor; -#ifdef XML_DTD - } - else { - /* The DTD instance referenced by _dtd is shared between the document's - root parser and external PE parsers, therefore one does not need to - call setContext. In addition, one also *must* not call setContext, - because this would overwrite existing prefix->binding pointers in - _dtd with ones that get destroyed with the external PE parser. - This would leave those prefixes with dangling pointers. - */ - isParamEntity = XML_TRUE; - XmlPrologStateInitExternalEntity(&prologState); - processor = externalParEntInitProcessor; - } -#endif /* XML_DTD */ - return parser; -} - -static void FASTCALL -destroyBindings(BINDING *bindings, XML_Parser parser) -{ - for (;;) { - BINDING *b = bindings; - if (!b) - break; - bindings = b->nextTagBinding; - FREE(b->uri); - FREE(b); - } -} - -void XMLCALL -XML_ParserFree(XML_Parser parser) -{ - TAG *tagList; - OPEN_INTERNAL_ENTITY *entityList; - if (parser == NULL) - return; - /* free tagStack and freeTagList */ - tagList = tagStack; - for (;;) { - TAG *p; - if (tagList == NULL) { - if (freeTagList == NULL) - break; - tagList = freeTagList; - freeTagList = NULL; - } - p = tagList; - tagList = tagList->parent; - FREE(p->buf); - destroyBindings(p->bindings, parser); - FREE(p); - } - /* free openInternalEntities and freeInternalEntities */ - entityList = openInternalEntities; - for (;;) { - OPEN_INTERNAL_ENTITY *openEntity; - if (entityList == NULL) { - if (freeInternalEntities == NULL) - break; - entityList = freeInternalEntities; - freeInternalEntities = NULL; - } - openEntity = entityList; - entityList = entityList->next; - FREE(openEntity); - } - - destroyBindings(freeBindingList, parser); - destroyBindings(inheritedBindings, parser); - poolDestroy(&tempPool); - poolDestroy(&temp2Pool); -#ifdef XML_DTD - /* external parameter entity parsers share the DTD structure - parser->m_dtd with the root parser, so we must not destroy it - */ - if (!isParamEntity && _dtd) -#else - if (_dtd) -#endif /* XML_DTD */ - dtdDestroy(_dtd, (XML_Bool)!parentParser, &parser->m_mem); - FREE((void *)atts); -#ifdef XML_ATTR_INFO - FREE((void *)attInfo); -#endif - FREE(groupConnector); - FREE(buffer); - FREE(dataBuf); - FREE(nsAtts); - FREE(unknownEncodingMem); - if (unknownEncodingRelease) - unknownEncodingRelease(unknownEncodingData); - FREE(parser); -} - -void XMLCALL -XML_UseParserAsHandlerArg(XML_Parser parser) -{ - handlerArg = parser; -} - -enum XML_Error XMLCALL -XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD) -{ -#ifdef XML_DTD - /* block after XML_Parse()/XML_ParseBuffer() has been called */ - if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) - return XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING; - useForeignDTD = useDTD; - return XML_ERROR_NONE; -#else - return XML_ERROR_FEATURE_REQUIRES_XML_DTD; -#endif -} - -void XMLCALL -XML_SetReturnNSTriplet(XML_Parser parser, int do_nst) -{ - /* block after XML_Parse()/XML_ParseBuffer() has been called */ - if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) - return; - ns_triplets = do_nst ? XML_TRUE : XML_FALSE; -} - -void XMLCALL -XML_SetUserData(XML_Parser parser, void *p) -{ - if (handlerArg == userData) - handlerArg = userData = p; - else - userData = p; -} - -enum XML_Status XMLCALL -XML_SetBase(XML_Parser parser, const XML_Char *p) -{ - if (p) { - p = poolCopyString(&_dtd->pool, p); - if (!p) - return XML_STATUS_ERROR; - curBase = p; - } - else - curBase = NULL; - return XML_STATUS_OK; -} - -const XML_Char * XMLCALL -XML_GetBase(XML_Parser parser) -{ - return curBase; -} - -int XMLCALL -XML_GetSpecifiedAttributeCount(XML_Parser parser) -{ - return nSpecifiedAtts; -} - -int XMLCALL -XML_GetIdAttributeIndex(XML_Parser parser) -{ - return idAttIndex; -} - -#ifdef XML_ATTR_INFO -const XML_AttrInfo * XMLCALL -XML_GetAttributeInfo(XML_Parser parser) -{ - return attInfo; -} -#endif - -void XMLCALL -XML_SetElementHandler(XML_Parser parser, - XML_StartElementHandler start, - XML_EndElementHandler end) -{ - startElementHandler = start; - endElementHandler = end; -} - -void XMLCALL -XML_SetStartElementHandler(XML_Parser parser, - XML_StartElementHandler start) { - startElementHandler = start; -} - -void XMLCALL -XML_SetEndElementHandler(XML_Parser parser, - XML_EndElementHandler end) { - endElementHandler = end; -} - -void XMLCALL -XML_SetCharacterDataHandler(XML_Parser parser, - XML_CharacterDataHandler handler) -{ - characterDataHandler = handler; -} - -void XMLCALL -XML_SetProcessingInstructionHandler(XML_Parser parser, - XML_ProcessingInstructionHandler handler) -{ - processingInstructionHandler = handler; -} - -void XMLCALL -XML_SetCommentHandler(XML_Parser parser, - XML_CommentHandler handler) -{ - commentHandler = handler; -} - -void XMLCALL -XML_SetCdataSectionHandler(XML_Parser parser, - XML_StartCdataSectionHandler start, - XML_EndCdataSectionHandler end) -{ - startCdataSectionHandler = start; - endCdataSectionHandler = end; -} - -void XMLCALL -XML_SetStartCdataSectionHandler(XML_Parser parser, - XML_StartCdataSectionHandler start) { - startCdataSectionHandler = start; -} - -void XMLCALL -XML_SetEndCdataSectionHandler(XML_Parser parser, - XML_EndCdataSectionHandler end) { - endCdataSectionHandler = end; -} - -void XMLCALL -XML_SetDefaultHandler(XML_Parser parser, - XML_DefaultHandler handler) -{ - defaultHandler = handler; - defaultExpandInternalEntities = XML_FALSE; -} - -void XMLCALL -XML_SetDefaultHandlerExpand(XML_Parser parser, - XML_DefaultHandler handler) -{ - defaultHandler = handler; - defaultExpandInternalEntities = XML_TRUE; -} - -void XMLCALL -XML_SetDoctypeDeclHandler(XML_Parser parser, - XML_StartDoctypeDeclHandler start, - XML_EndDoctypeDeclHandler end) -{ - startDoctypeDeclHandler = start; - endDoctypeDeclHandler = end; -} - -void XMLCALL -XML_SetStartDoctypeDeclHandler(XML_Parser parser, - XML_StartDoctypeDeclHandler start) { - startDoctypeDeclHandler = start; -} - -void XMLCALL -XML_SetEndDoctypeDeclHandler(XML_Parser parser, - XML_EndDoctypeDeclHandler end) { - endDoctypeDeclHandler = end; -} - -void XMLCALL -XML_SetUnparsedEntityDeclHandler(XML_Parser parser, - XML_UnparsedEntityDeclHandler handler) -{ - unparsedEntityDeclHandler = handler; -} - -void XMLCALL -XML_SetNotationDeclHandler(XML_Parser parser, - XML_NotationDeclHandler handler) -{ - notationDeclHandler = handler; -} - -void XMLCALL -XML_SetNamespaceDeclHandler(XML_Parser parser, - XML_StartNamespaceDeclHandler start, - XML_EndNamespaceDeclHandler end) -{ - startNamespaceDeclHandler = start; - endNamespaceDeclHandler = end; -} - -void XMLCALL -XML_SetStartNamespaceDeclHandler(XML_Parser parser, - XML_StartNamespaceDeclHandler start) { - startNamespaceDeclHandler = start; -} - -void XMLCALL -XML_SetEndNamespaceDeclHandler(XML_Parser parser, - XML_EndNamespaceDeclHandler end) { - endNamespaceDeclHandler = end; -} - -void XMLCALL -XML_SetNotStandaloneHandler(XML_Parser parser, - XML_NotStandaloneHandler handler) -{ - notStandaloneHandler = handler; -} - -void XMLCALL -XML_SetExternalEntityRefHandler(XML_Parser parser, - XML_ExternalEntityRefHandler handler) -{ - externalEntityRefHandler = handler; -} - -void XMLCALL -XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg) -{ - if (arg) - externalEntityRefHandlerArg = (XML_Parser)arg; - else - externalEntityRefHandlerArg = parser; -} - -void XMLCALL -XML_SetSkippedEntityHandler(XML_Parser parser, - XML_SkippedEntityHandler handler) -{ - skippedEntityHandler = handler; -} - -void XMLCALL -XML_SetUnknownEncodingHandler(XML_Parser parser, - XML_UnknownEncodingHandler handler, - void *data) -{ - unknownEncodingHandler = handler; - unknownEncodingHandlerData = data; -} - -void XMLCALL -XML_SetElementDeclHandler(XML_Parser parser, - XML_ElementDeclHandler eldecl) -{ - elementDeclHandler = eldecl; -} - -void XMLCALL -XML_SetAttlistDeclHandler(XML_Parser parser, - XML_AttlistDeclHandler attdecl) -{ - attlistDeclHandler = attdecl; -} - -void XMLCALL -XML_SetEntityDeclHandler(XML_Parser parser, - XML_EntityDeclHandler handler) -{ - entityDeclHandler = handler; -} - -void XMLCALL -XML_SetXmlDeclHandler(XML_Parser parser, - XML_XmlDeclHandler handler) { - xmlDeclHandler = handler; -} - -int XMLCALL -XML_SetParamEntityParsing(XML_Parser parser, - enum XML_ParamEntityParsing peParsing) -{ - /* block after XML_Parse()/XML_ParseBuffer() has been called */ - if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) - return 0; -#ifdef XML_DTD - paramEntityParsing = peParsing; - return 1; -#else - return peParsing == XML_PARAM_ENTITY_PARSING_NEVER; -#endif -} - -int XMLCALL -XML_SetHashSalt(XML_Parser parser, - unsigned long hash_salt) -{ - /* block after XML_Parse()/XML_ParseBuffer() has been called */ - if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) - return 0; - hash_secret_salt = hash_salt; - return 1; -} - -enum XML_Status XMLCALL -XML_Parse(XML_Parser parser, const char *s, int len, int isFinal) -{ - switch (ps_parsing) { - case XML_SUSPENDED: - errorCode = XML_ERROR_SUSPENDED; - return XML_STATUS_ERROR; - case XML_FINISHED: - errorCode = XML_ERROR_FINISHED; - return XML_STATUS_ERROR; - case XML_INITIALIZED: - if (parentParser == NULL && !startParsing(parser)) { - errorCode = XML_ERROR_NO_MEMORY; - return XML_STATUS_ERROR; - } - default: - ps_parsing = XML_PARSING; - } - - if (len == 0) { - ps_finalBuffer = (XML_Bool)isFinal; - if (!isFinal) - return XML_STATUS_OK; - positionPtr = bufferPtr; - parseEndPtr = bufferEnd; - - /* If data are left over from last buffer, and we now know that these - data are the final chunk of input, then we have to check them again - to detect errors based on that fact. - */ - errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr); - - if (errorCode == XML_ERROR_NONE) { - switch (ps_parsing) { - case XML_SUSPENDED: - XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); - positionPtr = bufferPtr; - return XML_STATUS_SUSPENDED; - case XML_INITIALIZED: - case XML_PARSING: - ps_parsing = XML_FINISHED; - /* fall through */ - default: - return XML_STATUS_OK; - } - } - eventEndPtr = eventPtr; - processor = errorProcessor; - return XML_STATUS_ERROR; - } -#ifndef XML_CONTEXT_BYTES - else if (bufferPtr == bufferEnd) { - const char *end; - int nLeftOver; - enum XML_Error result; - parseEndByteIndex += len; - positionPtr = s; - ps_finalBuffer = (XML_Bool)isFinal; - - errorCode = processor(parser, s, parseEndPtr = s + len, &end); - - if (errorCode != XML_ERROR_NONE) { - eventEndPtr = eventPtr; - processor = errorProcessor; - return XML_STATUS_ERROR; - } - else { - switch (ps_parsing) { - case XML_SUSPENDED: - result = XML_STATUS_SUSPENDED; - break; - case XML_INITIALIZED: - case XML_PARSING: - if (isFinal) { - ps_parsing = XML_FINISHED; - return XML_STATUS_OK; - } - /* fall through */ - default: - result = XML_STATUS_OK; - } - } - - XmlUpdatePosition(encoding, positionPtr, end, &position); - nLeftOver = s + len - end; - if (nLeftOver) { - if (buffer == NULL || nLeftOver > bufferLim - buffer) { - /* FIXME avoid integer overflow */ - char *temp; - temp = (buffer == NULL - ? (char *)MALLOC(len * 2) - : (char *)REALLOC(buffer, len * 2)); - if (temp == NULL) { - errorCode = XML_ERROR_NO_MEMORY; - eventPtr = eventEndPtr = NULL; - processor = errorProcessor; - return XML_STATUS_ERROR; - } - buffer = temp; - bufferLim = buffer + len * 2; - } - memcpy(buffer, end, nLeftOver); - } - bufferPtr = buffer; - bufferEnd = buffer + nLeftOver; - positionPtr = bufferPtr; - parseEndPtr = bufferEnd; - eventPtr = bufferPtr; - eventEndPtr = bufferPtr; - return result; - } -#endif /* not defined XML_CONTEXT_BYTES */ - else { - void *buff = XML_GetBuffer(parser, len); - if (buff == NULL) - return XML_STATUS_ERROR; - else { - memcpy(buff, s, len); - return XML_ParseBuffer(parser, len, isFinal); - } - } -} - -enum XML_Status XMLCALL -XML_ParseBuffer(XML_Parser parser, int len, int isFinal) -{ - const char *start; - enum XML_Status result = XML_STATUS_OK; - - switch (ps_parsing) { - case XML_SUSPENDED: - errorCode = XML_ERROR_SUSPENDED; - return XML_STATUS_ERROR; - case XML_FINISHED: - errorCode = XML_ERROR_FINISHED; - return XML_STATUS_ERROR; - case XML_INITIALIZED: - if (parentParser == NULL && !startParsing(parser)) { - errorCode = XML_ERROR_NO_MEMORY; - return XML_STATUS_ERROR; - } - default: - ps_parsing = XML_PARSING; - } - - start = bufferPtr; - positionPtr = start; - bufferEnd += len; - parseEndPtr = bufferEnd; - parseEndByteIndex += len; - ps_finalBuffer = (XML_Bool)isFinal; - - errorCode = processor(parser, start, parseEndPtr, &bufferPtr); - - if (errorCode != XML_ERROR_NONE) { - eventEndPtr = eventPtr; - processor = errorProcessor; - return XML_STATUS_ERROR; - } - else { - switch (ps_parsing) { - case XML_SUSPENDED: - result = XML_STATUS_SUSPENDED; - break; - case XML_INITIALIZED: - case XML_PARSING: - if (isFinal) { - ps_parsing = XML_FINISHED; - return result; - } - default: ; /* should not happen */ - } - } - - XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); - positionPtr = bufferPtr; - return result; -} - -void * XMLCALL -XML_GetBuffer(XML_Parser parser, int len) -{ - switch (ps_parsing) { - case XML_SUSPENDED: - errorCode = XML_ERROR_SUSPENDED; - return NULL; - case XML_FINISHED: - errorCode = XML_ERROR_FINISHED; - return NULL; - default: ; - } - - if (len > bufferLim - bufferEnd) { - /* FIXME avoid integer overflow */ - int neededSize = len + (int)(bufferEnd - bufferPtr); -#ifdef XML_CONTEXT_BYTES - int keep = (int)(bufferPtr - buffer); - - if (keep > XML_CONTEXT_BYTES) - keep = XML_CONTEXT_BYTES; - neededSize += keep; -#endif /* defined XML_CONTEXT_BYTES */ - if (neededSize <= bufferLim - buffer) { -#ifdef XML_CONTEXT_BYTES - if (keep < bufferPtr - buffer) { - int offset = (int)(bufferPtr - buffer) - keep; - memmove(buffer, &buffer[offset], bufferEnd - bufferPtr + keep); - bufferEnd -= offset; - bufferPtr -= offset; - } -#else - memmove(buffer, bufferPtr, bufferEnd - bufferPtr); - bufferEnd = buffer + (bufferEnd - bufferPtr); - bufferPtr = buffer; -#endif /* not defined XML_CONTEXT_BYTES */ - } - else { - char *newBuf; - int bufferSize = (int)(bufferLim - bufferPtr); - if (bufferSize == 0) - bufferSize = INIT_BUFFER_SIZE; - do { - bufferSize *= 2; - } while (bufferSize < neededSize); - newBuf = (char *)MALLOC(bufferSize); - if (newBuf == 0) { - errorCode = XML_ERROR_NO_MEMORY; - return NULL; - } - bufferLim = newBuf + bufferSize; -#ifdef XML_CONTEXT_BYTES - if (bufferPtr) { - int keep = (int)(bufferPtr - buffer); - if (keep > XML_CONTEXT_BYTES) - keep = XML_CONTEXT_BYTES; - memcpy(newBuf, &bufferPtr[-keep], bufferEnd - bufferPtr + keep); - FREE(buffer); - buffer = newBuf; - bufferEnd = buffer + (bufferEnd - bufferPtr) + keep; - bufferPtr = buffer + keep; - } - else { - bufferEnd = newBuf + (bufferEnd - bufferPtr); - bufferPtr = buffer = newBuf; - } -#else - if (bufferPtr) { - memcpy(newBuf, bufferPtr, bufferEnd - bufferPtr); - FREE(buffer); - } - bufferEnd = newBuf + (bufferEnd - bufferPtr); - bufferPtr = buffer = newBuf; -#endif /* not defined XML_CONTEXT_BYTES */ - } - eventPtr = eventEndPtr = NULL; - positionPtr = NULL; - } - return bufferEnd; -} - -enum XML_Status XMLCALL -XML_StopParser(XML_Parser parser, XML_Bool resumable) -{ - switch (ps_parsing) { - case XML_SUSPENDED: - if (resumable) { - errorCode = XML_ERROR_SUSPENDED; - return XML_STATUS_ERROR; - } - ps_parsing = XML_FINISHED; - break; - case XML_FINISHED: - errorCode = XML_ERROR_FINISHED; - return XML_STATUS_ERROR; - default: - if (resumable) { -#ifdef XML_DTD - if (isParamEntity) { - errorCode = XML_ERROR_SUSPEND_PE; - return XML_STATUS_ERROR; - } -#endif - ps_parsing = XML_SUSPENDED; - } - else - ps_parsing = XML_FINISHED; - } - return XML_STATUS_OK; -} - -enum XML_Status XMLCALL -XML_ResumeParser(XML_Parser parser) -{ - enum XML_Status result = XML_STATUS_OK; - - if (ps_parsing != XML_SUSPENDED) { - errorCode = XML_ERROR_NOT_SUSPENDED; - return XML_STATUS_ERROR; - } - ps_parsing = XML_PARSING; - - errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr); - - if (errorCode != XML_ERROR_NONE) { - eventEndPtr = eventPtr; - processor = errorProcessor; - return XML_STATUS_ERROR; - } - else { - switch (ps_parsing) { - case XML_SUSPENDED: - result = XML_STATUS_SUSPENDED; - break; - case XML_INITIALIZED: - case XML_PARSING: - if (ps_finalBuffer) { - ps_parsing = XML_FINISHED; - return result; - } - default: ; - } - } - - XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); - positionPtr = bufferPtr; - return result; -} - -void XMLCALL -XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status) -{ - assert(status != NULL); - *status = parser->m_parsingStatus; -} - -enum XML_Error XMLCALL -XML_GetErrorCode(XML_Parser parser) -{ - return errorCode; -} - -XML_Index XMLCALL -XML_GetCurrentByteIndex(XML_Parser parser) -{ - if (eventPtr) - return parseEndByteIndex - (parseEndPtr - eventPtr); - return -1; -} - -int XMLCALL -XML_GetCurrentByteCount(XML_Parser parser) -{ - if (eventEndPtr && eventPtr) - return (int)(eventEndPtr - eventPtr); - return 0; -} - -const char * XMLCALL -XML_GetInputContext(XML_Parser parser, int *offset, int *size) -{ -#ifdef XML_CONTEXT_BYTES - if (eventPtr && buffer) { - *offset = (int)(eventPtr - buffer); - *size = (int)(bufferEnd - buffer); - return buffer; - } -#endif /* defined XML_CONTEXT_BYTES */ - return (char *) 0; -} - -XML_Size XMLCALL -XML_GetCurrentLineNumber(XML_Parser parser) -{ - if (eventPtr && eventPtr >= positionPtr) { - XmlUpdatePosition(encoding, positionPtr, eventPtr, &position); - positionPtr = eventPtr; - } - return position.lineNumber + 1; -} - -XML_Size XMLCALL -XML_GetCurrentColumnNumber(XML_Parser parser) -{ - if (eventPtr && eventPtr >= positionPtr) { - XmlUpdatePosition(encoding, positionPtr, eventPtr, &position); - positionPtr = eventPtr; - } - return position.columnNumber; -} - -void XMLCALL -XML_FreeContentModel(XML_Parser parser, XML_Content *model) -{ - FREE(model); -} - -void * XMLCALL -XML_MemMalloc(XML_Parser parser, size_t size) -{ - return MALLOC(size); -} - -void * XMLCALL -XML_MemRealloc(XML_Parser parser, void *ptr, size_t size) -{ - return REALLOC(ptr, size); -} - -void XMLCALL -XML_MemFree(XML_Parser parser, void *ptr) -{ - FREE(ptr); -} - -void XMLCALL -XML_DefaultCurrent(XML_Parser parser) -{ - if (defaultHandler) { - if (openInternalEntities) - reportDefault(parser, - internalEncoding, - openInternalEntities->internalEventPtr, - openInternalEntities->internalEventEndPtr); - else - reportDefault(parser, encoding, eventPtr, eventEndPtr); - } -} - -const XML_LChar * XMLCALL -XML_ErrorString(enum XML_Error code) -{ - static const XML_LChar* const message[] = { - 0, - XML_L("out of memory"), - XML_L("syntax error"), - XML_L("no element found"), - XML_L("not well-formed (invalid token)"), - XML_L("unclosed token"), - XML_L("partial character"), - XML_L("mismatched tag"), - XML_L("duplicate attribute"), - XML_L("junk after document element"), - XML_L("illegal parameter entity reference"), - XML_L("undefined entity"), - XML_L("recursive entity reference"), - XML_L("asynchronous entity"), - XML_L("reference to invalid character number"), - XML_L("reference to binary entity"), - XML_L("reference to external entity in attribute"), - XML_L("XML or text declaration not at start of entity"), - XML_L("unknown encoding"), - XML_L("encoding specified in XML declaration is incorrect"), - XML_L("unclosed CDATA section"), - XML_L("error in processing external entity reference"), - XML_L("document is not standalone"), - XML_L("unexpected parser state - please send a bug report"), - XML_L("entity declared in parameter entity"), - XML_L("requested feature requires XML_DTD support in Expat"), - XML_L("cannot change setting once parsing has begun"), - XML_L("unbound prefix"), - XML_L("must not undeclare prefix"), - XML_L("incomplete markup in parameter entity"), - XML_L("XML declaration not well-formed"), - XML_L("text declaration not well-formed"), - XML_L("illegal character(s) in public id"), - XML_L("parser suspended"), - XML_L("parser not suspended"), - XML_L("parsing aborted"), - XML_L("parsing finished"), - XML_L("cannot suspend in external parameter entity"), - XML_L("reserved prefix (xml) must not be undeclared or bound to another namespace name"), - XML_L("reserved prefix (xmlns) must not be declared or undeclared"), - XML_L("prefix must not be bound to one of the reserved namespace names") - }; - if (code > 0 && code < sizeof(message)/sizeof(message[0])) - return message[code]; - return NULL; -} - -const XML_LChar * XMLCALL -XML_ExpatVersion(void) { - - /* V1 is used to string-ize the version number. However, it would - string-ize the actual version macro *names* unless we get them - substituted before being passed to V1. CPP is defined to expand - a macro, then rescan for more expansions. Thus, we use V2 to expand - the version macros, then CPP will expand the resulting V1() macro - with the correct numerals. */ - /* ### I'm assuming cpp is portable in this respect... */ - -#define V1(a,b,c) XML_L(#a)XML_L(".")XML_L(#b)XML_L(".")XML_L(#c) -#define V2(a,b,c) XML_L("expat_")V1(a,b,c) - - return V2(XML_MAJOR_VERSION, XML_MINOR_VERSION, XML_MICRO_VERSION); - -#undef V1 -#undef V2 -} - -XML_Expat_Version XMLCALL -XML_ExpatVersionInfo(void) -{ - XML_Expat_Version version; - - version.major = XML_MAJOR_VERSION; - version.minor = XML_MINOR_VERSION; - version.micro = XML_MICRO_VERSION; - - return version; -} - -const XML_Feature * XMLCALL -XML_GetFeatureList(void) -{ - static const XML_Feature features[] = { - {XML_FEATURE_SIZEOF_XML_CHAR, XML_L("sizeof(XML_Char)"), - sizeof(XML_Char)}, - {XML_FEATURE_SIZEOF_XML_LCHAR, XML_L("sizeof(XML_LChar)"), - sizeof(XML_LChar)}, -#ifdef XML_UNICODE - {XML_FEATURE_UNICODE, XML_L("XML_UNICODE"), 0}, -#endif -#ifdef XML_UNICODE_WCHAR_T - {XML_FEATURE_UNICODE_WCHAR_T, XML_L("XML_UNICODE_WCHAR_T"), 0}, -#endif -#ifdef XML_DTD - {XML_FEATURE_DTD, XML_L("XML_DTD"), 0}, -#endif -#ifdef XML_CONTEXT_BYTES - {XML_FEATURE_CONTEXT_BYTES, XML_L("XML_CONTEXT_BYTES"), - XML_CONTEXT_BYTES}, -#endif -#ifdef XML_MIN_SIZE - {XML_FEATURE_MIN_SIZE, XML_L("XML_MIN_SIZE"), 0}, -#endif -#ifdef XML_NS - {XML_FEATURE_NS, XML_L("XML_NS"), 0}, -#endif -#ifdef XML_LARGE_SIZE - {XML_FEATURE_LARGE_SIZE, XML_L("XML_LARGE_SIZE"), 0}, -#endif -#ifdef XML_ATTR_INFO - {XML_FEATURE_ATTR_INFO, XML_L("XML_ATTR_INFO"), 0}, -#endif - {XML_FEATURE_END, NULL, 0} - }; - - return features; -} - -/* Initially tag->rawName always points into the parse buffer; - for those TAG instances opened while the current parse buffer was - processed, and not yet closed, we need to store tag->rawName in a more - permanent location, since the parse buffer is about to be discarded. -*/ -static XML_Bool -storeRawNames(XML_Parser parser) -{ - TAG *tag = tagStack; - while (tag) { - int bufSize; - int nameLen = sizeof(XML_Char) * (tag->name.strLen + 1); - char *rawNameBuf = tag->buf + nameLen; - /* Stop if already stored. Since tagStack is a stack, we can stop - at the first entry that has already been copied; everything - below it in the stack is already been accounted for in a - previous call to this function. - */ - if (tag->rawName == rawNameBuf) - break; - /* For re-use purposes we need to ensure that the - size of tag->buf is a multiple of sizeof(XML_Char). - */ - bufSize = nameLen + ROUND_UP(tag->rawNameLength, sizeof(XML_Char)); - if (bufSize > tag->bufEnd - tag->buf) { - char *temp = (char *)REALLOC(tag->buf, bufSize); - if (temp == NULL) - return XML_FALSE; - /* if tag->name.str points to tag->buf (only when namespace - processing is off) then we have to update it - */ - if (tag->name.str == (XML_Char *)tag->buf) - tag->name.str = (XML_Char *)temp; - /* if tag->name.localPart is set (when namespace processing is on) - then update it as well, since it will always point into tag->buf - */ - if (tag->name.localPart) - tag->name.localPart = (XML_Char *)temp + (tag->name.localPart - - (XML_Char *)tag->buf); - tag->buf = temp; - tag->bufEnd = temp + bufSize; - rawNameBuf = temp + nameLen; - } - memcpy(rawNameBuf, tag->rawName, tag->rawNameLength); - tag->rawName = rawNameBuf; - tag = tag->parent; - } - return XML_TRUE; -} - -static enum XML_Error PTRCALL -contentProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - enum XML_Error result = doContent(parser, 0, encoding, start, end, - endPtr, (XML_Bool)!ps_finalBuffer); - if (result == XML_ERROR_NONE) { - if (!storeRawNames(parser)) - return XML_ERROR_NO_MEMORY; - } - return result; -} - -static enum XML_Error PTRCALL -externalEntityInitProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - enum XML_Error result = initializeEncoding(parser); - if (result != XML_ERROR_NONE) - return result; - processor = externalEntityInitProcessor2; - return externalEntityInitProcessor2(parser, start, end, endPtr); -} - -static enum XML_Error PTRCALL -externalEntityInitProcessor2(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - const char *next = start; /* XmlContentTok doesn't always set the last arg */ - int tok = XmlContentTok(encoding, start, end, &next); - switch (tok) { - case XML_TOK_BOM: - /* If we are at the end of the buffer, this would cause the next stage, - i.e. externalEntityInitProcessor3, to pass control directly to - doContent (by detecting XML_TOK_NONE) without processing any xml text - declaration - causing the error XML_ERROR_MISPLACED_XML_PI in doContent. - */ - if (next == end && !ps_finalBuffer) { - *endPtr = next; - return XML_ERROR_NONE; - } - start = next; - break; - case XML_TOK_PARTIAL: - if (!ps_finalBuffer) { - *endPtr = start; - return XML_ERROR_NONE; - } - eventPtr = start; - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (!ps_finalBuffer) { - *endPtr = start; - return XML_ERROR_NONE; - } - eventPtr = start; - return XML_ERROR_PARTIAL_CHAR; - } - processor = externalEntityInitProcessor3; - return externalEntityInitProcessor3(parser, start, end, endPtr); -} - -static enum XML_Error PTRCALL -externalEntityInitProcessor3(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - int tok; - const char *next = start; /* XmlContentTok doesn't always set the last arg */ - eventPtr = start; - tok = XmlContentTok(encoding, start, end, &next); - eventEndPtr = next; - - switch (tok) { - case XML_TOK_XML_DECL: - { - enum XML_Error result; - result = processXmlDecl(parser, 1, start, next); - if (result != XML_ERROR_NONE) - return result; - switch (ps_parsing) { - case XML_SUSPENDED: - *endPtr = next; - return XML_ERROR_NONE; - case XML_FINISHED: - return XML_ERROR_ABORTED; - default: - start = next; - } - } - break; - case XML_TOK_PARTIAL: - if (!ps_finalBuffer) { - *endPtr = start; - return XML_ERROR_NONE; - } - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (!ps_finalBuffer) { - *endPtr = start; - return XML_ERROR_NONE; - } - return XML_ERROR_PARTIAL_CHAR; - } - processor = externalEntityContentProcessor; - tagLevel = 1; - return externalEntityContentProcessor(parser, start, end, endPtr); -} - -static enum XML_Error PTRCALL -externalEntityContentProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - enum XML_Error result = doContent(parser, 1, encoding, start, end, - endPtr, (XML_Bool)!ps_finalBuffer); - if (result == XML_ERROR_NONE) { - if (!storeRawNames(parser)) - return XML_ERROR_NO_MEMORY; - } - return result; -} - -static enum XML_Error -doContent(XML_Parser parser, - int startTagLevel, - const ENCODING *enc, - const char *s, - const char *end, - const char **nextPtr, - XML_Bool haveMore) -{ - /* save one level of indirection */ - DTD * const dtd = _dtd; - - const char **eventPP; - const char **eventEndPP; - if (enc == encoding) { - eventPP = &eventPtr; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); - } - *eventPP = s; - - for (;;) { - const char *next = s; /* XmlContentTok doesn't always set the last arg */ - int tok = XmlContentTok(enc, s, end, &next); - *eventEndPP = next; - switch (tok) { - case XML_TOK_TRAILING_CR: - if (haveMore) { - *nextPtr = s; - return XML_ERROR_NONE; - } - *eventEndPP = end; - if (characterDataHandler) { - XML_Char c = 0xA; - characterDataHandler(handlerArg, &c, 1); - } - else if (defaultHandler) - reportDefault(parser, enc, s, end); - /* We are at the end of the final buffer, should we check for - XML_SUSPENDED, XML_FINISHED? - */ - if (startTagLevel == 0) - return XML_ERROR_NO_ELEMENTS; - if (tagLevel != startTagLevel) - return XML_ERROR_ASYNC_ENTITY; - *nextPtr = end; - return XML_ERROR_NONE; - case XML_TOK_NONE: - if (haveMore) { - *nextPtr = s; - return XML_ERROR_NONE; - } - if (startTagLevel > 0) { - if (tagLevel != startTagLevel) - return XML_ERROR_ASYNC_ENTITY; - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_NO_ELEMENTS; - case XML_TOK_INVALID: - *eventPP = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL: - if (haveMore) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (haveMore) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_ENTITY_REF: - { - const XML_Char *name; - ENTITY *entity; - XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (ch) { - if (characterDataHandler) - characterDataHandler(handlerArg, &ch, 1); - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - } - name = poolStoreString(&dtd->pool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!name) - return XML_ERROR_NO_MEMORY; - entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0); - poolDiscard(&dtd->pool); - /* First, determine if a check for an existing declaration is needed; - if yes, check that the entity exists, and that it is internal, - otherwise call the skipped entity or default handler. - */ - if (!dtd->hasParamEntityRefs || dtd->standalone) { - if (!entity) - return XML_ERROR_UNDEFINED_ENTITY; - else if (!entity->is_internal) - return XML_ERROR_ENTITY_DECLARED_IN_PE; - } - else if (!entity) { - if (skippedEntityHandler) - skippedEntityHandler(handlerArg, name, 0); - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - } - if (entity->open) - return XML_ERROR_RECURSIVE_ENTITY_REF; - if (entity->notation) - return XML_ERROR_BINARY_ENTITY_REF; - if (entity->textPtr) { - enum XML_Error result; - if (!defaultExpandInternalEntities) { - if (skippedEntityHandler) - skippedEntityHandler(handlerArg, entity->name, 0); - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - } - result = processInternalEntity(parser, entity, XML_FALSE); - if (result != XML_ERROR_NONE) - return result; - } - else if (externalEntityRefHandler) { - const XML_Char *context; - entity->open = XML_TRUE; - context = getContext(parser); - entity->open = XML_FALSE; - if (!context) - return XML_ERROR_NO_MEMORY; - if (!externalEntityRefHandler(externalEntityRefHandlerArg, - context, - entity->base, - entity->systemId, - entity->publicId)) - return XML_ERROR_EXTERNAL_ENTITY_HANDLING; - poolDiscard(&tempPool); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - } - case XML_TOK_START_TAG_NO_ATTS: - /* fall through */ - case XML_TOK_START_TAG_WITH_ATTS: - { - TAG *tag; - enum XML_Error result; - XML_Char *toPtr; - if (freeTagList) { - tag = freeTagList; - freeTagList = freeTagList->parent; - } - else { - tag = (TAG *)MALLOC(sizeof(TAG)); - if (!tag) - return XML_ERROR_NO_MEMORY; - tag->buf = (char *)MALLOC(INIT_TAG_BUF_SIZE); - if (!tag->buf) { - FREE(tag); - return XML_ERROR_NO_MEMORY; - } - tag->bufEnd = tag->buf + INIT_TAG_BUF_SIZE; - } - tag->bindings = NULL; - tag->parent = tagStack; - tagStack = tag; - tag->name.localPart = NULL; - tag->name.prefix = NULL; - tag->rawName = s + enc->minBytesPerChar; - tag->rawNameLength = XmlNameLength(enc, tag->rawName); - ++tagLevel; - { - const char *rawNameEnd = tag->rawName + tag->rawNameLength; - const char *fromPtr = tag->rawName; - toPtr = (XML_Char *)tag->buf; - for (;;) { - int bufSize; - int convLen; - XmlConvert(enc, - &fromPtr, rawNameEnd, - (ICHAR **)&toPtr, (ICHAR *)tag->bufEnd - 1); - convLen = (int)(toPtr - (XML_Char *)tag->buf); - if (fromPtr == rawNameEnd) { - tag->name.strLen = convLen; - break; - } - bufSize = (int)(tag->bufEnd - tag->buf) << 1; - { - char *temp = (char *)REALLOC(tag->buf, bufSize); - if (temp == NULL) - return XML_ERROR_NO_MEMORY; - tag->buf = temp; - tag->bufEnd = temp + bufSize; - toPtr = (XML_Char *)temp + convLen; - } - } - } - tag->name.str = (XML_Char *)tag->buf; - *toPtr = XML_T('\0'); - result = storeAtts(parser, enc, s, &(tag->name), &(tag->bindings)); - if (result) - return result; - if (startElementHandler) - startElementHandler(handlerArg, tag->name.str, - (const XML_Char **)atts); - else if (defaultHandler) - reportDefault(parser, enc, s, next); - poolClear(&tempPool); - break; - } - case XML_TOK_EMPTY_ELEMENT_NO_ATTS: - /* fall through */ - case XML_TOK_EMPTY_ELEMENT_WITH_ATTS: - { - const char *rawName = s + enc->minBytesPerChar; - enum XML_Error result; - BINDING *bindings = NULL; - XML_Bool noElmHandlers = XML_TRUE; - TAG_NAME name; - name.str = poolStoreString(&tempPool, enc, rawName, - rawName + XmlNameLength(enc, rawName)); - if (!name.str) - return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - result = storeAtts(parser, enc, s, &name, &bindings); - if (result) - return result; - poolFinish(&tempPool); - if (startElementHandler) { - startElementHandler(handlerArg, name.str, (const XML_Char **)atts); - noElmHandlers = XML_FALSE; - } - if (endElementHandler) { - if (startElementHandler) - *eventPP = *eventEndPP; - endElementHandler(handlerArg, name.str); - noElmHandlers = XML_FALSE; - } - if (noElmHandlers && defaultHandler) - reportDefault(parser, enc, s, next); - poolClear(&tempPool); - while (bindings) { - BINDING *b = bindings; - if (endNamespaceDeclHandler) - endNamespaceDeclHandler(handlerArg, b->prefix->name); - bindings = bindings->nextTagBinding; - b->nextTagBinding = freeBindingList; - freeBindingList = b; - b->prefix->binding = b->prevPrefixBinding; - } - } - if (tagLevel == 0) - return epilogProcessor(parser, next, end, nextPtr); - break; - case XML_TOK_END_TAG: - if (tagLevel == startTagLevel) - return XML_ERROR_ASYNC_ENTITY; - else { - int len; - const char *rawName; - TAG *tag = tagStack; - tagStack = tag->parent; - tag->parent = freeTagList; - freeTagList = tag; - rawName = s + enc->minBytesPerChar*2; - len = XmlNameLength(enc, rawName); - if (len != tag->rawNameLength - || memcmp(tag->rawName, rawName, len) != 0) { - *eventPP = rawName; - return XML_ERROR_TAG_MISMATCH; - } - --tagLevel; - if (endElementHandler) { - const XML_Char *localPart; - const XML_Char *prefix; - XML_Char *uri; - localPart = tag->name.localPart; - if (ns && localPart) { - /* localPart and prefix may have been overwritten in - tag->name.str, since this points to the binding->uri - buffer which gets re-used; so we have to add them again - */ - uri = (XML_Char *)tag->name.str + tag->name.uriLen; - /* don't need to check for space - already done in storeAtts() */ - while (*localPart) *uri++ = *localPart++; - prefix = (XML_Char *)tag->name.prefix; - if (ns_triplets && prefix) { - *uri++ = namespaceSeparator; - while (*prefix) *uri++ = *prefix++; - } - *uri = XML_T('\0'); - } - endElementHandler(handlerArg, tag->name.str); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - while (tag->bindings) { - BINDING *b = tag->bindings; - if (endNamespaceDeclHandler) - endNamespaceDeclHandler(handlerArg, b->prefix->name); - tag->bindings = tag->bindings->nextTagBinding; - b->nextTagBinding = freeBindingList; - freeBindingList = b; - b->prefix->binding = b->prevPrefixBinding; - } - if (tagLevel == 0) - return epilogProcessor(parser, next, end, nextPtr); - } - break; - case XML_TOK_CHAR_REF: - { - int n = XmlCharRefNumber(enc, s); - if (n < 0) - return XML_ERROR_BAD_CHAR_REF; - if (characterDataHandler) { - XML_Char buf[XML_ENCODE_MAX]; - characterDataHandler(handlerArg, buf, XmlEncode(n, (ICHAR *)buf)); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - } - break; - case XML_TOK_XML_DECL: - return XML_ERROR_MISPLACED_XML_PI; - case XML_TOK_DATA_NEWLINE: - if (characterDataHandler) { - XML_Char c = 0xA; - characterDataHandler(handlerArg, &c, 1); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - case XML_TOK_CDATA_SECT_OPEN: - { - enum XML_Error result; - if (startCdataSectionHandler) - startCdataSectionHandler(handlerArg); -#if 0 - /* Suppose you doing a transformation on a document that involves - changing only the character data. You set up a defaultHandler - and a characterDataHandler. The defaultHandler simply copies - characters through. The characterDataHandler does the - transformation and writes the characters out escaping them as - necessary. This case will fail to work if we leave out the - following two lines (because & and < inside CDATA sections will - be incorrectly escaped). - - However, now we have a start/endCdataSectionHandler, so it seems - easier to let the user deal with this. - */ - else if (characterDataHandler) - characterDataHandler(handlerArg, dataBuf, 0); -#endif - else if (defaultHandler) - reportDefault(parser, enc, s, next); - result = doCdataSection(parser, enc, &next, end, nextPtr, haveMore); - if (result != XML_ERROR_NONE) - return result; - else if (!next) { - processor = cdataSectionProcessor; - return result; - } - } - break; - case XML_TOK_TRAILING_RSQB: - if (haveMore) { - *nextPtr = s; - return XML_ERROR_NONE; - } - if (characterDataHandler) { - if (MUST_CONVERT(enc, s)) { - ICHAR *dataPtr = (ICHAR *)dataBuf; - XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd); - characterDataHandler(handlerArg, dataBuf, - (int)(dataPtr - (ICHAR *)dataBuf)); - } - else - characterDataHandler(handlerArg, - (XML_Char *)s, - (int)((XML_Char *)end - (XML_Char *)s)); - } - else if (defaultHandler) - reportDefault(parser, enc, s, end); - /* We are at the end of the final buffer, should we check for - XML_SUSPENDED, XML_FINISHED? - */ - if (startTagLevel == 0) { - *eventPP = end; - return XML_ERROR_NO_ELEMENTS; - } - if (tagLevel != startTagLevel) { - *eventPP = end; - return XML_ERROR_ASYNC_ENTITY; - } - *nextPtr = end; - return XML_ERROR_NONE; - case XML_TOK_DATA_CHARS: - { - XML_CharacterDataHandler charDataHandler = characterDataHandler; - if (charDataHandler) { - if (MUST_CONVERT(enc, s)) { - for (;;) { - ICHAR *dataPtr = (ICHAR *)dataBuf; - XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd); - *eventEndPP = s; - charDataHandler(handlerArg, dataBuf, - (int)(dataPtr - (ICHAR *)dataBuf)); - if (s == next) - break; - *eventPP = s; - } - } - else - charDataHandler(handlerArg, - (XML_Char *)s, - (int)((XML_Char *)next - (XML_Char *)s)); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - } - break; - case XML_TOK_PI: - if (!reportProcessingInstruction(parser, enc, s, next)) - return XML_ERROR_NO_MEMORY; - break; - case XML_TOK_COMMENT: - if (!reportComment(parser, enc, s, next)) - return XML_ERROR_NO_MEMORY; - break; - default: - if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - } - *eventPP = s = next; - switch (ps_parsing) { - case XML_SUSPENDED: - *nextPtr = next; - return XML_ERROR_NONE; - case XML_FINISHED: - return XML_ERROR_ABORTED; - default: ; - } - } - /* not reached */ -} - -/* Precondition: all arguments must be non-NULL; - Purpose: - - normalize attributes - - check attributes for well-formedness - - generate namespace aware attribute names (URI, prefix) - - build list of attributes for startElementHandler - - default attributes - - process namespace declarations (check and report them) - - generate namespace aware element name (URI, prefix) -*/ -static enum XML_Error -storeAtts(XML_Parser parser, const ENCODING *enc, - const char *attStr, TAG_NAME *tagNamePtr, - BINDING **bindingsPtr) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - ELEMENT_TYPE *elementType; - int nDefaultAtts; - const XML_Char **appAtts; /* the attribute list for the application */ - int attIndex = 0; - int prefixLen; - int i; - int n; - XML_Char *uri; - int nPrefixes = 0; - BINDING *binding; - const XML_Char *localPart; - - /* lookup the element type name */ - elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, tagNamePtr->str,0); - if (!elementType) { - const XML_Char *name = poolCopyString(&dtd->pool, tagNamePtr->str); - if (!name) - return XML_ERROR_NO_MEMORY; - elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, name, - sizeof(ELEMENT_TYPE)); - if (!elementType) - return XML_ERROR_NO_MEMORY; - if (ns && !setElementTypePrefix(parser, elementType)) - return XML_ERROR_NO_MEMORY; - } - nDefaultAtts = elementType->nDefaultAtts; - - /* get the attributes from the tokenizer */ - n = XmlGetAttributes(enc, attStr, attsSize, atts); - if (n + nDefaultAtts > attsSize) { - int oldAttsSize = attsSize; - ATTRIBUTE *temp; -#ifdef XML_ATTR_INFO - XML_AttrInfo *temp2; -#endif - attsSize = n + nDefaultAtts + INIT_ATTS_SIZE; - temp = (ATTRIBUTE *)REALLOC((void *)atts, attsSize * sizeof(ATTRIBUTE)); - if (temp == NULL) - return XML_ERROR_NO_MEMORY; - atts = temp; -#ifdef XML_ATTR_INFO - temp2 = (XML_AttrInfo *)REALLOC((void *)attInfo, attsSize * sizeof(XML_AttrInfo)); - if (temp2 == NULL) - return XML_ERROR_NO_MEMORY; - attInfo = temp2; -#endif - if (n > oldAttsSize) - XmlGetAttributes(enc, attStr, n, atts); - } - - appAtts = (const XML_Char **)atts; - for (i = 0; i < n; i++) { - ATTRIBUTE *currAtt = &atts[i]; -#ifdef XML_ATTR_INFO - XML_AttrInfo *currAttInfo = &attInfo[i]; -#endif - /* add the name and value to the attribute list */ - ATTRIBUTE_ID *attId = getAttributeId(parser, enc, currAtt->name, - currAtt->name - + XmlNameLength(enc, currAtt->name)); - if (!attId) - return XML_ERROR_NO_MEMORY; -#ifdef XML_ATTR_INFO - currAttInfo->nameStart = parseEndByteIndex - (parseEndPtr - currAtt->name); - currAttInfo->nameEnd = currAttInfo->nameStart + - XmlNameLength(enc, currAtt->name); - currAttInfo->valueStart = parseEndByteIndex - - (parseEndPtr - currAtt->valuePtr); - currAttInfo->valueEnd = parseEndByteIndex - (parseEndPtr - currAtt->valueEnd); -#endif - /* Detect duplicate attributes by their QNames. This does not work when - namespace processing is turned on and different prefixes for the same - namespace are used. For this case we have a check further down. - */ - if ((attId->name)[-1]) { - if (enc == encoding) - eventPtr = atts[i].name; - return XML_ERROR_DUPLICATE_ATTRIBUTE; - } - (attId->name)[-1] = 1; - appAtts[attIndex++] = attId->name; - if (!atts[i].normalized) { - enum XML_Error result; - XML_Bool isCdata = XML_TRUE; - - /* figure out whether declared as other than CDATA */ - if (attId->maybeTokenized) { - int j; - for (j = 0; j < nDefaultAtts; j++) { - if (attId == elementType->defaultAtts[j].id) { - isCdata = elementType->defaultAtts[j].isCdata; - break; - } - } - } - - /* normalize the attribute value */ - result = storeAttributeValue(parser, enc, isCdata, - atts[i].valuePtr, atts[i].valueEnd, - &tempPool); - if (result) - return result; - appAtts[attIndex] = poolStart(&tempPool); - poolFinish(&tempPool); - } - else { - /* the value did not need normalizing */ - appAtts[attIndex] = poolStoreString(&tempPool, enc, atts[i].valuePtr, - atts[i].valueEnd); - if (appAtts[attIndex] == 0) - return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - } - /* handle prefixed attribute names */ - if (attId->prefix) { - if (attId->xmlns) { - /* deal with namespace declarations here */ - enum XML_Error result = addBinding(parser, attId->prefix, attId, - appAtts[attIndex], bindingsPtr); - if (result) - return result; - --attIndex; - } - else { - /* deal with other prefixed names later */ - attIndex++; - nPrefixes++; - (attId->name)[-1] = 2; - } - } - else - attIndex++; - } - - /* set-up for XML_GetSpecifiedAttributeCount and XML_GetIdAttributeIndex */ - nSpecifiedAtts = attIndex; - if (elementType->idAtt && (elementType->idAtt->name)[-1]) { - for (i = 0; i < attIndex; i += 2) - if (appAtts[i] == elementType->idAtt->name) { - idAttIndex = i; - break; - } - } - else - idAttIndex = -1; - - /* do attribute defaulting */ - for (i = 0; i < nDefaultAtts; i++) { - const DEFAULT_ATTRIBUTE *da = elementType->defaultAtts + i; - if (!(da->id->name)[-1] && da->value) { - if (da->id->prefix) { - if (da->id->xmlns) { - enum XML_Error result = addBinding(parser, da->id->prefix, da->id, - da->value, bindingsPtr); - if (result) - return result; - } - else { - (da->id->name)[-1] = 2; - nPrefixes++; - appAtts[attIndex++] = da->id->name; - appAtts[attIndex++] = da->value; - } - } - else { - (da->id->name)[-1] = 1; - appAtts[attIndex++] = da->id->name; - appAtts[attIndex++] = da->value; - } - } - } - appAtts[attIndex] = 0; - - /* expand prefixed attribute names, check for duplicates, - and clear flags that say whether attributes were specified */ - i = 0; - if (nPrefixes) { - int j; /* hash table index */ - unsigned long version = nsAttsVersion; - int nsAttsSize = (int)1 << nsAttsPower; - /* size of hash table must be at least 2 * (# of prefixed attributes) */ - if ((nPrefixes << 1) >> nsAttsPower) { /* true for nsAttsPower = 0 */ - NS_ATT *temp; - /* hash table size must also be a power of 2 and >= 8 */ - while (nPrefixes >> nsAttsPower++); - if (nsAttsPower < 3) - nsAttsPower = 3; - nsAttsSize = (int)1 << nsAttsPower; - temp = (NS_ATT *)REALLOC(nsAtts, nsAttsSize * sizeof(NS_ATT)); - if (!temp) - return XML_ERROR_NO_MEMORY; - nsAtts = temp; - version = 0; /* force re-initialization of nsAtts hash table */ - } - /* using a version flag saves us from initializing nsAtts every time */ - if (!version) { /* initialize version flags when version wraps around */ - version = INIT_ATTS_VERSION; - for (j = nsAttsSize; j != 0; ) - nsAtts[--j].version = version; - } - nsAttsVersion = --version; - - /* expand prefixed names and check for duplicates */ - for (; i < attIndex; i += 2) { - const XML_Char *s = appAtts[i]; - if (s[-1] == 2) { /* prefixed */ - ATTRIBUTE_ID *id; - const BINDING *b; - unsigned long uriHash = hash_secret_salt; - ((XML_Char *)s)[-1] = 0; /* clear flag */ - id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, s, 0); - b = id->prefix->binding; - if (!b) - return XML_ERROR_UNBOUND_PREFIX; - - /* as we expand the name we also calculate its hash value */ - for (j = 0; j < b->uriLen; j++) { - const XML_Char c = b->uri[j]; - if (!poolAppendChar(&tempPool, c)) - return XML_ERROR_NO_MEMORY; - uriHash = CHAR_HASH(uriHash, c); - } - while (*s++ != XML_T(ASCII_COLON)) - ; - do { /* copies null terminator */ - const XML_Char c = *s; - if (!poolAppendChar(&tempPool, *s)) - return XML_ERROR_NO_MEMORY; - uriHash = CHAR_HASH(uriHash, c); - } while (*s++); - - { /* Check hash table for duplicate of expanded name (uriName). - Derived from code in lookup(parser, HASH_TABLE *table, ...). - */ - unsigned char step = 0; - unsigned long mask = nsAttsSize - 1; - j = uriHash & mask; /* index into hash table */ - while (nsAtts[j].version == version) { - /* for speed we compare stored hash values first */ - if (uriHash == nsAtts[j].hash) { - const XML_Char *s1 = poolStart(&tempPool); - const XML_Char *s2 = nsAtts[j].uriName; - /* s1 is null terminated, but not s2 */ - for (; *s1 == *s2 && *s1 != 0; s1++, s2++); - if (*s1 == 0) - return XML_ERROR_DUPLICATE_ATTRIBUTE; - } - if (!step) - step = PROBE_STEP(uriHash, mask, nsAttsPower); - j < step ? (j += nsAttsSize - step) : (j -= step); - } - } - - if (ns_triplets) { /* append namespace separator and prefix */ - tempPool.ptr[-1] = namespaceSeparator; - s = b->prefix->name; - do { - if (!poolAppendChar(&tempPool, *s)) - return XML_ERROR_NO_MEMORY; - } while (*s++); - } - - /* store expanded name in attribute list */ - s = poolStart(&tempPool); - poolFinish(&tempPool); - appAtts[i] = s; - - /* fill empty slot with new version, uriName and hash value */ - nsAtts[j].version = version; - nsAtts[j].hash = uriHash; - nsAtts[j].uriName = s; - - if (!--nPrefixes) { - i += 2; - break; - } - } - else /* not prefixed */ - ((XML_Char *)s)[-1] = 0; /* clear flag */ - } - } - /* clear flags for the remaining attributes */ - for (; i < attIndex; i += 2) - ((XML_Char *)(appAtts[i]))[-1] = 0; - for (binding = *bindingsPtr; binding; binding = binding->nextTagBinding) - binding->attId->name[-1] = 0; - - if (!ns) - return XML_ERROR_NONE; - - /* expand the element type name */ - if (elementType->prefix) { - binding = elementType->prefix->binding; - if (!binding) - return XML_ERROR_UNBOUND_PREFIX; - localPart = tagNamePtr->str; - while (*localPart++ != XML_T(ASCII_COLON)) - ; - } - else if (dtd->defaultPrefix.binding) { - binding = dtd->defaultPrefix.binding; - localPart = tagNamePtr->str; - } - else - return XML_ERROR_NONE; - prefixLen = 0; - if (ns_triplets && binding->prefix->name) { - for (; binding->prefix->name[prefixLen++];) - ; /* prefixLen includes null terminator */ - } - tagNamePtr->localPart = localPart; - tagNamePtr->uriLen = binding->uriLen; - tagNamePtr->prefix = binding->prefix->name; - tagNamePtr->prefixLen = prefixLen; - for (i = 0; localPart[i++];) - ; /* i includes null terminator */ - n = i + binding->uriLen + prefixLen; - if (n > binding->uriAlloc) { - TAG *p; - uri = (XML_Char *)MALLOC((n + EXPAND_SPARE) * sizeof(XML_Char)); - if (!uri) - return XML_ERROR_NO_MEMORY; - binding->uriAlloc = n + EXPAND_SPARE; - memcpy(uri, binding->uri, binding->uriLen * sizeof(XML_Char)); - for (p = tagStack; p; p = p->parent) - if (p->name.str == binding->uri) - p->name.str = uri; - FREE(binding->uri); - binding->uri = uri; - } - /* if namespaceSeparator != '\0' then uri includes it already */ - uri = binding->uri + binding->uriLen; - memcpy(uri, localPart, i * sizeof(XML_Char)); - /* we always have a namespace separator between localPart and prefix */ - if (prefixLen) { - uri += i - 1; - *uri = namespaceSeparator; /* replace null terminator */ - memcpy(uri + 1, binding->prefix->name, prefixLen * sizeof(XML_Char)); - } - tagNamePtr->str = binding->uri; - return XML_ERROR_NONE; -} - -/* addBinding() overwrites the value of prefix->binding without checking. - Therefore one must keep track of the old value outside of addBinding(). -*/ -static enum XML_Error -addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, - const XML_Char *uri, BINDING **bindingsPtr) -{ - static const XML_Char xmlNamespace[] = { - ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, ASCII_SLASH, - ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, - ASCII_o, ASCII_r, ASCII_g, ASCII_SLASH, ASCII_X, ASCII_M, ASCII_L, - ASCII_SLASH, ASCII_1, ASCII_9, ASCII_9, ASCII_8, ASCII_SLASH, - ASCII_n, ASCII_a, ASCII_m, ASCII_e, ASCII_s, ASCII_p, ASCII_a, ASCII_c, - ASCII_e, '\0' - }; - static const int xmlLen = - (int)sizeof(xmlNamespace)/sizeof(XML_Char) - 1; - static const XML_Char xmlnsNamespace[] = { - ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, ASCII_SLASH, - ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, - ASCII_o, ASCII_r, ASCII_g, ASCII_SLASH, ASCII_2, ASCII_0, ASCII_0, - ASCII_0, ASCII_SLASH, ASCII_x, ASCII_m, ASCII_l, ASCII_n, ASCII_s, - ASCII_SLASH, '\0' - }; - static const int xmlnsLen = - (int)sizeof(xmlnsNamespace)/sizeof(XML_Char) - 1; - - XML_Bool mustBeXML = XML_FALSE; - XML_Bool isXML = XML_TRUE; - XML_Bool isXMLNS = XML_TRUE; - - BINDING *b; - int len; - - /* empty URI is only valid for default namespace per XML NS 1.0 (not 1.1) */ - if (*uri == XML_T('\0') && prefix->name) - return XML_ERROR_UNDECLARING_PREFIX; - - if (prefix->name - && prefix->name[0] == XML_T(ASCII_x) - && prefix->name[1] == XML_T(ASCII_m) - && prefix->name[2] == XML_T(ASCII_l)) { - - /* Not allowed to bind xmlns */ - if (prefix->name[3] == XML_T(ASCII_n) - && prefix->name[4] == XML_T(ASCII_s) - && prefix->name[5] == XML_T('\0')) - return XML_ERROR_RESERVED_PREFIX_XMLNS; - - if (prefix->name[3] == XML_T('\0')) - mustBeXML = XML_TRUE; - } - - for (len = 0; uri[len]; len++) { - if (isXML && (len > xmlLen || uri[len] != xmlNamespace[len])) - isXML = XML_FALSE; - - if (!mustBeXML && isXMLNS - && (len > xmlnsLen || uri[len] != xmlnsNamespace[len])) - isXMLNS = XML_FALSE; - } - isXML = isXML && len == xmlLen; - isXMLNS = isXMLNS && len == xmlnsLen; - - if (mustBeXML != isXML) - return mustBeXML ? XML_ERROR_RESERVED_PREFIX_XML - : XML_ERROR_RESERVED_NAMESPACE_URI; - - if (isXMLNS) - return XML_ERROR_RESERVED_NAMESPACE_URI; - - if (namespaceSeparator) - len++; - if (freeBindingList) { - b = freeBindingList; - if (len > b->uriAlloc) { - XML_Char *temp = (XML_Char *)REALLOC(b->uri, - sizeof(XML_Char) * (len + EXPAND_SPARE)); - if (temp == NULL) - return XML_ERROR_NO_MEMORY; - b->uri = temp; - b->uriAlloc = len + EXPAND_SPARE; - } - freeBindingList = b->nextTagBinding; - } - else { - b = (BINDING *)MALLOC(sizeof(BINDING)); - if (!b) - return XML_ERROR_NO_MEMORY; - b->uri = (XML_Char *)MALLOC(sizeof(XML_Char) * (len + EXPAND_SPARE)); - if (!b->uri) { - FREE(b); - return XML_ERROR_NO_MEMORY; - } - b->uriAlloc = len + EXPAND_SPARE; - } - b->uriLen = len; - memcpy(b->uri, uri, len * sizeof(XML_Char)); - if (namespaceSeparator) - b->uri[len - 1] = namespaceSeparator; - b->prefix = prefix; - b->attId = attId; - b->prevPrefixBinding = prefix->binding; - /* NULL binding when default namespace undeclared */ - if (*uri == XML_T('\0') && prefix == &_dtd->defaultPrefix) - prefix->binding = NULL; - else - prefix->binding = b; - b->nextTagBinding = *bindingsPtr; - *bindingsPtr = b; - /* if attId == NULL then we are not starting a namespace scope */ - if (attId && startNamespaceDeclHandler) - startNamespaceDeclHandler(handlerArg, prefix->name, - prefix->binding ? uri : 0); - return XML_ERROR_NONE; -} - -/* The idea here is to avoid using stack for each CDATA section when - the whole file is parsed with one call. -*/ -static enum XML_Error PTRCALL -cdataSectionProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - enum XML_Error result = doCdataSection(parser, encoding, &start, end, - endPtr, (XML_Bool)!ps_finalBuffer); - if (result != XML_ERROR_NONE) - return result; - if (start) { - if (parentParser) { /* we are parsing an external entity */ - processor = externalEntityContentProcessor; - return externalEntityContentProcessor(parser, start, end, endPtr); - } - else { - processor = contentProcessor; - return contentProcessor(parser, start, end, endPtr); - } - } - return result; -} - -/* startPtr gets set to non-null if the section is closed, and to null if - the section is not yet closed. -*/ -static enum XML_Error -doCdataSection(XML_Parser parser, - const ENCODING *enc, - const char **startPtr, - const char *end, - const char **nextPtr, - XML_Bool haveMore) -{ - const char *s = *startPtr; - const char **eventPP; - const char **eventEndPP; - if (enc == encoding) { - eventPP = &eventPtr; - *eventPP = s; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); - } - *eventPP = s; - *startPtr = NULL; - - for (;;) { - const char *next; - int tok = XmlCdataSectionTok(enc, s, end, &next); - *eventEndPP = next; - switch (tok) { - case XML_TOK_CDATA_SECT_CLOSE: - if (endCdataSectionHandler) - endCdataSectionHandler(handlerArg); -#if 0 - /* see comment under XML_TOK_CDATA_SECT_OPEN */ - else if (characterDataHandler) - characterDataHandler(handlerArg, dataBuf, 0); -#endif - else if (defaultHandler) - reportDefault(parser, enc, s, next); - *startPtr = next; - *nextPtr = next; - if (ps_parsing == XML_FINISHED) - return XML_ERROR_ABORTED; - else - return XML_ERROR_NONE; - case XML_TOK_DATA_NEWLINE: - if (characterDataHandler) { - XML_Char c = 0xA; - characterDataHandler(handlerArg, &c, 1); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - case XML_TOK_DATA_CHARS: - { - XML_CharacterDataHandler charDataHandler = characterDataHandler; - if (charDataHandler) { - if (MUST_CONVERT(enc, s)) { - for (;;) { - ICHAR *dataPtr = (ICHAR *)dataBuf; - XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd); - *eventEndPP = next; - charDataHandler(handlerArg, dataBuf, - (int)(dataPtr - (ICHAR *)dataBuf)); - if (s == next) - break; - *eventPP = s; - } - } - else - charDataHandler(handlerArg, - (XML_Char *)s, - (int)((XML_Char *)next - (XML_Char *)s)); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - } - break; - case XML_TOK_INVALID: - *eventPP = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (haveMore) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_PARTIAL: - case XML_TOK_NONE: - if (haveMore) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_UNCLOSED_CDATA_SECTION; - default: - *eventPP = next; - return XML_ERROR_UNEXPECTED_STATE; - } - - *eventPP = s = next; - switch (ps_parsing) { - case XML_SUSPENDED: - *nextPtr = next; - return XML_ERROR_NONE; - case XML_FINISHED: - return XML_ERROR_ABORTED; - default: ; - } - } - /* not reached */ -} - -#ifdef XML_DTD - -/* The idea here is to avoid using stack for each IGNORE section when - the whole file is parsed with one call. -*/ -static enum XML_Error PTRCALL -ignoreSectionProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - enum XML_Error result = doIgnoreSection(parser, encoding, &start, end, - endPtr, (XML_Bool)!ps_finalBuffer); - if (result != XML_ERROR_NONE) - return result; - if (start) { - processor = prologProcessor; - return prologProcessor(parser, start, end, endPtr); - } - return result; -} - -/* startPtr gets set to non-null is the section is closed, and to null - if the section is not yet closed. -*/ -static enum XML_Error -doIgnoreSection(XML_Parser parser, - const ENCODING *enc, - const char **startPtr, - const char *end, - const char **nextPtr, - XML_Bool haveMore) -{ - const char *next; - int tok; - const char *s = *startPtr; - const char **eventPP; - const char **eventEndPP; - if (enc == encoding) { - eventPP = &eventPtr; - *eventPP = s; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); - } - *eventPP = s; - *startPtr = NULL; - tok = XmlIgnoreSectionTok(enc, s, end, &next); - *eventEndPP = next; - switch (tok) { - case XML_TOK_IGNORE_SECT: - if (defaultHandler) - reportDefault(parser, enc, s, next); - *startPtr = next; - *nextPtr = next; - if (ps_parsing == XML_FINISHED) - return XML_ERROR_ABORTED; - else - return XML_ERROR_NONE; - case XML_TOK_INVALID: - *eventPP = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (haveMore) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_PARTIAL: - case XML_TOK_NONE: - if (haveMore) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_SYNTAX; /* XML_ERROR_UNCLOSED_IGNORE_SECTION */ - default: - *eventPP = next; - return XML_ERROR_UNEXPECTED_STATE; - } - /* not reached */ -} - -#endif /* XML_DTD */ - -static enum XML_Error -initializeEncoding(XML_Parser parser) -{ - const char *s; -#ifdef XML_UNICODE - char encodingBuf[128]; - if (!protocolEncodingName) - s = NULL; - else { - int i; - for (i = 0; protocolEncodingName[i]; i++) { - if (i == sizeof(encodingBuf) - 1 - || (protocolEncodingName[i] & ~0x7f) != 0) { - encodingBuf[0] = '\0'; - break; - } - encodingBuf[i] = (char)protocolEncodingName[i]; - } - encodingBuf[i] = '\0'; - s = encodingBuf; - } -#else - s = protocolEncodingName; -#endif - if ((ns ? XmlInitEncodingNS : XmlInitEncoding)(&initEncoding, &encoding, s)) - return XML_ERROR_NONE; - return handleUnknownEncoding(parser, protocolEncodingName); -} - -static enum XML_Error -processXmlDecl(XML_Parser parser, int isGeneralTextEntity, - const char *s, const char *next) -{ - const char *encodingName = NULL; - const XML_Char *storedEncName = NULL; - const ENCODING *newEncoding = NULL; - const char *version = NULL; - const char *versionend; - const XML_Char *storedversion = NULL; - int standalone = -1; - if (!(ns - ? XmlParseXmlDeclNS - : XmlParseXmlDecl)(isGeneralTextEntity, - encoding, - s, - next, - &eventPtr, - &version, - &versionend, - &encodingName, - &newEncoding, - &standalone)) { - if (isGeneralTextEntity) - return XML_ERROR_TEXT_DECL; - else - return XML_ERROR_XML_DECL; - } - if (!isGeneralTextEntity && standalone == 1) { - _dtd->standalone = XML_TRUE; -#ifdef XML_DTD - if (paramEntityParsing == XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE) - paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; -#endif /* XML_DTD */ - } - if (xmlDeclHandler) { - if (encodingName != NULL) { - storedEncName = poolStoreString(&temp2Pool, - encoding, - encodingName, - encodingName - + XmlNameLength(encoding, encodingName)); - if (!storedEncName) - return XML_ERROR_NO_MEMORY; - poolFinish(&temp2Pool); - } - if (version) { - storedversion = poolStoreString(&temp2Pool, - encoding, - version, - versionend - encoding->minBytesPerChar); - if (!storedversion) - return XML_ERROR_NO_MEMORY; - } - xmlDeclHandler(handlerArg, storedversion, storedEncName, standalone); - } - else if (defaultHandler) - reportDefault(parser, encoding, s, next); - if (protocolEncodingName == NULL) { - if (newEncoding) { - if (newEncoding->minBytesPerChar != encoding->minBytesPerChar) { - eventPtr = encodingName; - return XML_ERROR_INCORRECT_ENCODING; - } - encoding = newEncoding; - } - else if (encodingName) { - enum XML_Error result; - if (!storedEncName) { - storedEncName = poolStoreString( - &temp2Pool, encoding, encodingName, - encodingName + XmlNameLength(encoding, encodingName)); - if (!storedEncName) - return XML_ERROR_NO_MEMORY; - } - result = handleUnknownEncoding(parser, storedEncName); - poolClear(&temp2Pool); - if (result == XML_ERROR_UNKNOWN_ENCODING) - eventPtr = encodingName; - return result; - } - } - - if (storedEncName || storedversion) - poolClear(&temp2Pool); - - return XML_ERROR_NONE; -} - -static enum XML_Error -handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName) -{ - if (unknownEncodingHandler) { - XML_Encoding info; - int i; - for (i = 0; i < 256; i++) - info.map[i] = -1; - info.convert = NULL; - info.data = NULL; - info.release = NULL; - if (unknownEncodingHandler(unknownEncodingHandlerData, encodingName, - &info)) { - ENCODING *enc; - unknownEncodingMem = MALLOC(XmlSizeOfUnknownEncoding()); - if (!unknownEncodingMem) { - if (info.release) - info.release(info.data); - return XML_ERROR_NO_MEMORY; - } - enc = (ns - ? XmlInitUnknownEncodingNS - : XmlInitUnknownEncoding)(unknownEncodingMem, - info.map, - info.convert, - info.data); - if (enc) { - unknownEncodingData = info.data; - unknownEncodingRelease = info.release; - encoding = enc; - return XML_ERROR_NONE; - } - } - if (info.release != NULL) - info.release(info.data); - } - return XML_ERROR_UNKNOWN_ENCODING; -} - -static enum XML_Error PTRCALL -prologInitProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - enum XML_Error result = initializeEncoding(parser); - if (result != XML_ERROR_NONE) - return result; - processor = prologProcessor; - return prologProcessor(parser, s, end, nextPtr); -} - -#ifdef XML_DTD - -static enum XML_Error PTRCALL -externalParEntInitProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - enum XML_Error result = initializeEncoding(parser); - if (result != XML_ERROR_NONE) - return result; - - /* we know now that XML_Parse(Buffer) has been called, - so we consider the external parameter entity read */ - _dtd->paramEntityRead = XML_TRUE; - - if (prologState.inEntityValue) { - processor = entityValueInitProcessor; - return entityValueInitProcessor(parser, s, end, nextPtr); - } - else { - processor = externalParEntProcessor; - return externalParEntProcessor(parser, s, end, nextPtr); - } -} - -static enum XML_Error PTRCALL -entityValueInitProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - int tok; - const char *start = s; - const char *next = start; - eventPtr = start; - - for (;;) { - tok = XmlPrologTok(encoding, start, end, &next); - eventEndPtr = next; - if (tok <= 0) { - if (!ps_finalBuffer && tok != XML_TOK_INVALID) { - *nextPtr = s; - return XML_ERROR_NONE; - } - switch (tok) { - case XML_TOK_INVALID: - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL: - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_NONE: /* start == end */ - default: - break; - } - /* found end of entity value - can store it now */ - return storeEntityValue(parser, encoding, s, end); - } - else if (tok == XML_TOK_XML_DECL) { - enum XML_Error result; - result = processXmlDecl(parser, 0, start, next); - if (result != XML_ERROR_NONE) - return result; - switch (ps_parsing) { - case XML_SUSPENDED: - *nextPtr = next; - return XML_ERROR_NONE; - case XML_FINISHED: - return XML_ERROR_ABORTED; - default: - *nextPtr = next; - } - /* stop scanning for text declaration - we found one */ - processor = entityValueProcessor; - return entityValueProcessor(parser, next, end, nextPtr); - } - /* If we are at the end of the buffer, this would cause XmlPrologTok to - return XML_TOK_NONE on the next call, which would then cause the - function to exit with *nextPtr set to s - that is what we want for other - tokens, but not for the BOM - we would rather like to skip it; - then, when this routine is entered the next time, XmlPrologTok will - return XML_TOK_INVALID, since the BOM is still in the buffer - */ - else if (tok == XML_TOK_BOM && next == end && !ps_finalBuffer) { - *nextPtr = next; - return XML_ERROR_NONE; - } - start = next; - eventPtr = start; - } -} - -static enum XML_Error PTRCALL -externalParEntProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - const char *next = s; - int tok; - - tok = XmlPrologTok(encoding, s, end, &next); - if (tok <= 0) { - if (!ps_finalBuffer && tok != XML_TOK_INVALID) { - *nextPtr = s; - return XML_ERROR_NONE; - } - switch (tok) { - case XML_TOK_INVALID: - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL: - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_NONE: /* start == end */ - default: - break; - } - } - /* This would cause the next stage, i.e. doProlog to be passed XML_TOK_BOM. - However, when parsing an external subset, doProlog will not accept a BOM - as valid, and report a syntax error, so we have to skip the BOM - */ - else if (tok == XML_TOK_BOM) { - s = next; - tok = XmlPrologTok(encoding, s, end, &next); - } - - processor = prologProcessor; - return doProlog(parser, encoding, s, end, tok, next, - nextPtr, (XML_Bool)!ps_finalBuffer); -} - -static enum XML_Error PTRCALL -entityValueProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - const char *start = s; - const char *next = s; - const ENCODING *enc = encoding; - int tok; - - for (;;) { - tok = XmlPrologTok(enc, start, end, &next); - if (tok <= 0) { - if (!ps_finalBuffer && tok != XML_TOK_INVALID) { - *nextPtr = s; - return XML_ERROR_NONE; - } - switch (tok) { - case XML_TOK_INVALID: - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL: - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_NONE: /* start == end */ - default: - break; - } - /* found end of entity value - can store it now */ - return storeEntityValue(parser, enc, s, end); - } - start = next; - } -} - -#endif /* XML_DTD */ - -static enum XML_Error PTRCALL -prologProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - const char *next = s; - int tok = XmlPrologTok(encoding, s, end, &next); - return doProlog(parser, encoding, s, end, tok, next, - nextPtr, (XML_Bool)!ps_finalBuffer); -} - -static enum XML_Error -doProlog(XML_Parser parser, - const ENCODING *enc, - const char *s, - const char *end, - int tok, - const char *next, - const char **nextPtr, - XML_Bool haveMore) -{ -#ifdef XML_DTD - static const XML_Char externalSubsetName[] = { ASCII_HASH , '\0' }; -#endif /* XML_DTD */ - static const XML_Char atypeCDATA[] = - { ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; - static const XML_Char atypeID[] = { ASCII_I, ASCII_D, '\0' }; - static const XML_Char atypeIDREF[] = - { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' }; - static const XML_Char atypeIDREFS[] = - { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' }; - static const XML_Char atypeENTITY[] = - { ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' }; - static const XML_Char atypeENTITIES[] = { ASCII_E, ASCII_N, - ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S, '\0' }; - static const XML_Char atypeNMTOKEN[] = { - ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' }; - static const XML_Char atypeNMTOKENS[] = { ASCII_N, ASCII_M, ASCII_T, - ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S, '\0' }; - static const XML_Char notationPrefix[] = { ASCII_N, ASCII_O, ASCII_T, - ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N, ASCII_LPAREN, '\0' }; - static const XML_Char enumValueSep[] = { ASCII_PIPE, '\0' }; - static const XML_Char enumValueStart[] = { ASCII_LPAREN, '\0' }; - - /* save one level of indirection */ - DTD * const dtd = _dtd; - - const char **eventPP; - const char **eventEndPP; - enum XML_Content_Quant quant; - - if (enc == encoding) { - eventPP = &eventPtr; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); - } - - for (;;) { - int role; - XML_Bool handleDefault = XML_TRUE; - *eventPP = s; - *eventEndPP = next; - if (tok <= 0) { - if (haveMore && tok != XML_TOK_INVALID) { - *nextPtr = s; - return XML_ERROR_NONE; - } - switch (tok) { - case XML_TOK_INVALID: - *eventPP = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL: - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - return XML_ERROR_PARTIAL_CHAR; - case -XML_TOK_PROLOG_S: - tok = -tok; - break; - case XML_TOK_NONE: -#ifdef XML_DTD - /* for internal PE NOT referenced between declarations */ - if (enc != encoding && !openInternalEntities->betweenDecl) { - *nextPtr = s; - return XML_ERROR_NONE; - } - /* WFC: PE Between Declarations - must check that PE contains - complete markup, not only for external PEs, but also for - internal PEs if the reference occurs between declarations. - */ - if (isParamEntity || enc != encoding) { - if (XmlTokenRole(&prologState, XML_TOK_NONE, end, end, enc) - == XML_ROLE_ERROR) - return XML_ERROR_INCOMPLETE_PE; - *nextPtr = s; - return XML_ERROR_NONE; - } -#endif /* XML_DTD */ - return XML_ERROR_NO_ELEMENTS; - default: - tok = -tok; - next = end; - break; - } - } - role = XmlTokenRole(&prologState, tok, s, next, enc); - switch (role) { - case XML_ROLE_XML_DECL: - { - enum XML_Error result = processXmlDecl(parser, 0, s, next); - if (result != XML_ERROR_NONE) - return result; - enc = encoding; - handleDefault = XML_FALSE; - } - break; - case XML_ROLE_DOCTYPE_NAME: - if (startDoctypeDeclHandler) { - doctypeName = poolStoreString(&tempPool, enc, s, next); - if (!doctypeName) - return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - doctypePubid = NULL; - handleDefault = XML_FALSE; - } - doctypeSysid = NULL; /* always initialize to NULL */ - break; - case XML_ROLE_DOCTYPE_INTERNAL_SUBSET: - if (startDoctypeDeclHandler) { - startDoctypeDeclHandler(handlerArg, doctypeName, doctypeSysid, - doctypePubid, 1); - doctypeName = NULL; - poolClear(&tempPool); - handleDefault = XML_FALSE; - } - break; -#ifdef XML_DTD - case XML_ROLE_TEXT_DECL: - { - enum XML_Error result = processXmlDecl(parser, 1, s, next); - if (result != XML_ERROR_NONE) - return result; - enc = encoding; - handleDefault = XML_FALSE; - } - break; -#endif /* XML_DTD */ - case XML_ROLE_DOCTYPE_PUBLIC_ID: -#ifdef XML_DTD - useForeignDTD = XML_FALSE; - declEntity = (ENTITY *)lookup(parser, - &dtd->paramEntities, - externalSubsetName, - sizeof(ENTITY)); - if (!declEntity) - return XML_ERROR_NO_MEMORY; -#endif /* XML_DTD */ - dtd->hasParamEntityRefs = XML_TRUE; - if (startDoctypeDeclHandler) { - XML_Char *pubId; - if (!XmlIsPublicId(enc, s, next, eventPP)) - return XML_ERROR_PUBLICID; - pubId = poolStoreString(&tempPool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!pubId) - return XML_ERROR_NO_MEMORY; - normalizePublicId(pubId); - poolFinish(&tempPool); - doctypePubid = pubId; - handleDefault = XML_FALSE; - goto alreadyChecked; - } - /* fall through */ - case XML_ROLE_ENTITY_PUBLIC_ID: - if (!XmlIsPublicId(enc, s, next, eventPP)) - return XML_ERROR_PUBLICID; - alreadyChecked: - if (dtd->keepProcessing && declEntity) { - XML_Char *tem = poolStoreString(&dtd->pool, - enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!tem) - return XML_ERROR_NO_MEMORY; - normalizePublicId(tem); - declEntity->publicId = tem; - poolFinish(&dtd->pool); - if (entityDeclHandler) - handleDefault = XML_FALSE; - } - break; - case XML_ROLE_DOCTYPE_CLOSE: - if (doctypeName) { - startDoctypeDeclHandler(handlerArg, doctypeName, - doctypeSysid, doctypePubid, 0); - poolClear(&tempPool); - handleDefault = XML_FALSE; - } - /* doctypeSysid will be non-NULL in the case of a previous - XML_ROLE_DOCTYPE_SYSTEM_ID, even if startDoctypeDeclHandler - was not set, indicating an external subset - */ -#ifdef XML_DTD - if (doctypeSysid || useForeignDTD) { - XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs; - dtd->hasParamEntityRefs = XML_TRUE; - if (paramEntityParsing && externalEntityRefHandler) { - ENTITY *entity = (ENTITY *)lookup(parser, - &dtd->paramEntities, - externalSubsetName, - sizeof(ENTITY)); - if (!entity) - return XML_ERROR_NO_MEMORY; - if (useForeignDTD) - entity->base = curBase; - dtd->paramEntityRead = XML_FALSE; - if (!externalEntityRefHandler(externalEntityRefHandlerArg, - 0, - entity->base, - entity->systemId, - entity->publicId)) - return XML_ERROR_EXTERNAL_ENTITY_HANDLING; - if (dtd->paramEntityRead) { - if (!dtd->standalone && - notStandaloneHandler && - !notStandaloneHandler(handlerArg)) - return XML_ERROR_NOT_STANDALONE; - } - /* if we didn't read the foreign DTD then this means that there - is no external subset and we must reset dtd->hasParamEntityRefs - */ - else if (!doctypeSysid) - dtd->hasParamEntityRefs = hadParamEntityRefs; - /* end of DTD - no need to update dtd->keepProcessing */ - } - useForeignDTD = XML_FALSE; - } -#endif /* XML_DTD */ - if (endDoctypeDeclHandler) { - endDoctypeDeclHandler(handlerArg); - handleDefault = XML_FALSE; - } - break; - case XML_ROLE_INSTANCE_START: -#ifdef XML_DTD - /* if there is no DOCTYPE declaration then now is the - last chance to read the foreign DTD - */ - if (useForeignDTD) { - XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs; - dtd->hasParamEntityRefs = XML_TRUE; - if (paramEntityParsing && externalEntityRefHandler) { - ENTITY *entity = (ENTITY *)lookup(parser, &dtd->paramEntities, - externalSubsetName, - sizeof(ENTITY)); - if (!entity) - return XML_ERROR_NO_MEMORY; - entity->base = curBase; - dtd->paramEntityRead = XML_FALSE; - if (!externalEntityRefHandler(externalEntityRefHandlerArg, - 0, - entity->base, - entity->systemId, - entity->publicId)) - return XML_ERROR_EXTERNAL_ENTITY_HANDLING; - if (dtd->paramEntityRead) { - if (!dtd->standalone && - notStandaloneHandler && - !notStandaloneHandler(handlerArg)) - return XML_ERROR_NOT_STANDALONE; - } - /* if we didn't read the foreign DTD then this means that there - is no external subset and we must reset dtd->hasParamEntityRefs - */ - else - dtd->hasParamEntityRefs = hadParamEntityRefs; - /* end of DTD - no need to update dtd->keepProcessing */ - } - } -#endif /* XML_DTD */ - processor = contentProcessor; - return contentProcessor(parser, s, end, nextPtr); - case XML_ROLE_ATTLIST_ELEMENT_NAME: - declElementType = getElementType(parser, enc, s, next); - if (!declElementType) - return XML_ERROR_NO_MEMORY; - goto checkAttListDeclHandler; - case XML_ROLE_ATTRIBUTE_NAME: - declAttributeId = getAttributeId(parser, enc, s, next); - if (!declAttributeId) - return XML_ERROR_NO_MEMORY; - declAttributeIsCdata = XML_FALSE; - declAttributeType = NULL; - declAttributeIsId = XML_FALSE; - goto checkAttListDeclHandler; - case XML_ROLE_ATTRIBUTE_TYPE_CDATA: - declAttributeIsCdata = XML_TRUE; - declAttributeType = atypeCDATA; - goto checkAttListDeclHandler; - case XML_ROLE_ATTRIBUTE_TYPE_ID: - declAttributeIsId = XML_TRUE; - declAttributeType = atypeID; - goto checkAttListDeclHandler; - case XML_ROLE_ATTRIBUTE_TYPE_IDREF: - declAttributeType = atypeIDREF; - goto checkAttListDeclHandler; - case XML_ROLE_ATTRIBUTE_TYPE_IDREFS: - declAttributeType = atypeIDREFS; - goto checkAttListDeclHandler; - case XML_ROLE_ATTRIBUTE_TYPE_ENTITY: - declAttributeType = atypeENTITY; - goto checkAttListDeclHandler; - case XML_ROLE_ATTRIBUTE_TYPE_ENTITIES: - declAttributeType = atypeENTITIES; - goto checkAttListDeclHandler; - case XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN: - declAttributeType = atypeNMTOKEN; - goto checkAttListDeclHandler; - case XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS: - declAttributeType = atypeNMTOKENS; - checkAttListDeclHandler: - if (dtd->keepProcessing && attlistDeclHandler) - handleDefault = XML_FALSE; - break; - case XML_ROLE_ATTRIBUTE_ENUM_VALUE: - case XML_ROLE_ATTRIBUTE_NOTATION_VALUE: - if (dtd->keepProcessing && attlistDeclHandler) { - const XML_Char *prefix; - if (declAttributeType) { - prefix = enumValueSep; - } - else { - prefix = (role == XML_ROLE_ATTRIBUTE_NOTATION_VALUE - ? notationPrefix - : enumValueStart); - } - if (!poolAppendString(&tempPool, prefix)) - return XML_ERROR_NO_MEMORY; - if (!poolAppend(&tempPool, enc, s, next)) - return XML_ERROR_NO_MEMORY; - declAttributeType = tempPool.start; - handleDefault = XML_FALSE; - } - break; - case XML_ROLE_IMPLIED_ATTRIBUTE_VALUE: - case XML_ROLE_REQUIRED_ATTRIBUTE_VALUE: - if (dtd->keepProcessing) { - if (!defineAttribute(declElementType, declAttributeId, - declAttributeIsCdata, declAttributeIsId, - 0, parser)) - return XML_ERROR_NO_MEMORY; - if (attlistDeclHandler && declAttributeType) { - if (*declAttributeType == XML_T(ASCII_LPAREN) - || (*declAttributeType == XML_T(ASCII_N) - && declAttributeType[1] == XML_T(ASCII_O))) { - /* Enumerated or Notation type */ - if (!poolAppendChar(&tempPool, XML_T(ASCII_RPAREN)) - || !poolAppendChar(&tempPool, XML_T('\0'))) - return XML_ERROR_NO_MEMORY; - declAttributeType = tempPool.start; - poolFinish(&tempPool); - } - *eventEndPP = s; - attlistDeclHandler(handlerArg, declElementType->name, - declAttributeId->name, declAttributeType, - 0, role == XML_ROLE_REQUIRED_ATTRIBUTE_VALUE); - poolClear(&tempPool); - handleDefault = XML_FALSE; - } - } - break; - case XML_ROLE_DEFAULT_ATTRIBUTE_VALUE: - case XML_ROLE_FIXED_ATTRIBUTE_VALUE: - if (dtd->keepProcessing) { - const XML_Char *attVal; - enum XML_Error result = - storeAttributeValue(parser, enc, declAttributeIsCdata, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar, - &dtd->pool); - if (result) - return result; - attVal = poolStart(&dtd->pool); - poolFinish(&dtd->pool); - /* ID attributes aren't allowed to have a default */ - if (!defineAttribute(declElementType, declAttributeId, - declAttributeIsCdata, XML_FALSE, attVal, parser)) - return XML_ERROR_NO_MEMORY; - if (attlistDeclHandler && declAttributeType) { - if (*declAttributeType == XML_T(ASCII_LPAREN) - || (*declAttributeType == XML_T(ASCII_N) - && declAttributeType[1] == XML_T(ASCII_O))) { - /* Enumerated or Notation type */ - if (!poolAppendChar(&tempPool, XML_T(ASCII_RPAREN)) - || !poolAppendChar(&tempPool, XML_T('\0'))) - return XML_ERROR_NO_MEMORY; - declAttributeType = tempPool.start; - poolFinish(&tempPool); - } - *eventEndPP = s; - attlistDeclHandler(handlerArg, declElementType->name, - declAttributeId->name, declAttributeType, - attVal, - role == XML_ROLE_FIXED_ATTRIBUTE_VALUE); - poolClear(&tempPool); - handleDefault = XML_FALSE; - } - } - break; - case XML_ROLE_ENTITY_VALUE: - if (dtd->keepProcessing) { - enum XML_Error result = storeEntityValue(parser, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (declEntity) { - declEntity->textPtr = poolStart(&dtd->entityValuePool); - declEntity->textLen = (int)(poolLength(&dtd->entityValuePool)); - poolFinish(&dtd->entityValuePool); - if (entityDeclHandler) { - *eventEndPP = s; - entityDeclHandler(handlerArg, - declEntity->name, - declEntity->is_param, - declEntity->textPtr, - declEntity->textLen, - curBase, 0, 0, 0); - handleDefault = XML_FALSE; - } - } - else - poolDiscard(&dtd->entityValuePool); - if (result != XML_ERROR_NONE) - return result; - } - break; - case XML_ROLE_DOCTYPE_SYSTEM_ID: -#ifdef XML_DTD - useForeignDTD = XML_FALSE; -#endif /* XML_DTD */ - dtd->hasParamEntityRefs = XML_TRUE; - if (startDoctypeDeclHandler) { - doctypeSysid = poolStoreString(&tempPool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (doctypeSysid == NULL) - return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - handleDefault = XML_FALSE; - } -#ifdef XML_DTD - else - /* use externalSubsetName to make doctypeSysid non-NULL - for the case where no startDoctypeDeclHandler is set */ - doctypeSysid = externalSubsetName; -#endif /* XML_DTD */ - if (!dtd->standalone -#ifdef XML_DTD - && !paramEntityParsing -#endif /* XML_DTD */ - && notStandaloneHandler - && !notStandaloneHandler(handlerArg)) - return XML_ERROR_NOT_STANDALONE; -#ifndef XML_DTD - break; -#else /* XML_DTD */ - if (!declEntity) { - declEntity = (ENTITY *)lookup(parser, - &dtd->paramEntities, - externalSubsetName, - sizeof(ENTITY)); - if (!declEntity) - return XML_ERROR_NO_MEMORY; - declEntity->publicId = NULL; - } - /* fall through */ -#endif /* XML_DTD */ - case XML_ROLE_ENTITY_SYSTEM_ID: - if (dtd->keepProcessing && declEntity) { - declEntity->systemId = poolStoreString(&dtd->pool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!declEntity->systemId) - return XML_ERROR_NO_MEMORY; - declEntity->base = curBase; - poolFinish(&dtd->pool); - if (entityDeclHandler) - handleDefault = XML_FALSE; - } - break; - case XML_ROLE_ENTITY_COMPLETE: - if (dtd->keepProcessing && declEntity && entityDeclHandler) { - *eventEndPP = s; - entityDeclHandler(handlerArg, - declEntity->name, - declEntity->is_param, - 0,0, - declEntity->base, - declEntity->systemId, - declEntity->publicId, - 0); - handleDefault = XML_FALSE; - } - break; - case XML_ROLE_ENTITY_NOTATION_NAME: - if (dtd->keepProcessing && declEntity) { - declEntity->notation = poolStoreString(&dtd->pool, enc, s, next); - if (!declEntity->notation) - return XML_ERROR_NO_MEMORY; - poolFinish(&dtd->pool); - if (unparsedEntityDeclHandler) { - *eventEndPP = s; - unparsedEntityDeclHandler(handlerArg, - declEntity->name, - declEntity->base, - declEntity->systemId, - declEntity->publicId, - declEntity->notation); - handleDefault = XML_FALSE; - } - else if (entityDeclHandler) { - *eventEndPP = s; - entityDeclHandler(handlerArg, - declEntity->name, - 0,0,0, - declEntity->base, - declEntity->systemId, - declEntity->publicId, - declEntity->notation); - handleDefault = XML_FALSE; - } - } - break; - case XML_ROLE_GENERAL_ENTITY_NAME: - { - if (XmlPredefinedEntityName(enc, s, next)) { - declEntity = NULL; - break; - } - if (dtd->keepProcessing) { - const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next); - if (!name) - return XML_ERROR_NO_MEMORY; - declEntity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, - sizeof(ENTITY)); - if (!declEntity) - return XML_ERROR_NO_MEMORY; - if (declEntity->name != name) { - poolDiscard(&dtd->pool); - declEntity = NULL; - } - else { - poolFinish(&dtd->pool); - declEntity->publicId = NULL; - declEntity->is_param = XML_FALSE; - /* if we have a parent parser or are reading an internal parameter - entity, then the entity declaration is not considered "internal" - */ - declEntity->is_internal = !(parentParser || openInternalEntities); - if (entityDeclHandler) - handleDefault = XML_FALSE; - } - } - else { - poolDiscard(&dtd->pool); - declEntity = NULL; - } - } - break; - case XML_ROLE_PARAM_ENTITY_NAME: -#ifdef XML_DTD - if (dtd->keepProcessing) { - const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next); - if (!name) - return XML_ERROR_NO_MEMORY; - declEntity = (ENTITY *)lookup(parser, &dtd->paramEntities, - name, sizeof(ENTITY)); - if (!declEntity) - return XML_ERROR_NO_MEMORY; - if (declEntity->name != name) { - poolDiscard(&dtd->pool); - declEntity = NULL; - } - else { - poolFinish(&dtd->pool); - declEntity->publicId = NULL; - declEntity->is_param = XML_TRUE; - /* if we have a parent parser or are reading an internal parameter - entity, then the entity declaration is not considered "internal" - */ - declEntity->is_internal = !(parentParser || openInternalEntities); - if (entityDeclHandler) - handleDefault = XML_FALSE; - } - } - else { - poolDiscard(&dtd->pool); - declEntity = NULL; - } -#else /* not XML_DTD */ - declEntity = NULL; -#endif /* XML_DTD */ - break; - case XML_ROLE_NOTATION_NAME: - declNotationPublicId = NULL; - declNotationName = NULL; - if (notationDeclHandler) { - declNotationName = poolStoreString(&tempPool, enc, s, next); - if (!declNotationName) - return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - handleDefault = XML_FALSE; - } - break; - case XML_ROLE_NOTATION_PUBLIC_ID: - if (!XmlIsPublicId(enc, s, next, eventPP)) - return XML_ERROR_PUBLICID; - if (declNotationName) { /* means notationDeclHandler != NULL */ - XML_Char *tem = poolStoreString(&tempPool, - enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!tem) - return XML_ERROR_NO_MEMORY; - normalizePublicId(tem); - declNotationPublicId = tem; - poolFinish(&tempPool); - handleDefault = XML_FALSE; - } - break; - case XML_ROLE_NOTATION_SYSTEM_ID: - if (declNotationName && notationDeclHandler) { - const XML_Char *systemId - = poolStoreString(&tempPool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!systemId) - return XML_ERROR_NO_MEMORY; - *eventEndPP = s; - notationDeclHandler(handlerArg, - declNotationName, - curBase, - systemId, - declNotationPublicId); - handleDefault = XML_FALSE; - } - poolClear(&tempPool); - break; - case XML_ROLE_NOTATION_NO_SYSTEM_ID: - if (declNotationPublicId && notationDeclHandler) { - *eventEndPP = s; - notationDeclHandler(handlerArg, - declNotationName, - curBase, - 0, - declNotationPublicId); - handleDefault = XML_FALSE; - } - poolClear(&tempPool); - break; - case XML_ROLE_ERROR: - switch (tok) { - case XML_TOK_PARAM_ENTITY_REF: - /* PE references in internal subset are - not allowed within declarations. */ - return XML_ERROR_PARAM_ENTITY_REF; - case XML_TOK_XML_DECL: - return XML_ERROR_MISPLACED_XML_PI; - default: - return XML_ERROR_SYNTAX; - } -#ifdef XML_DTD - case XML_ROLE_IGNORE_SECT: - { - enum XML_Error result; - if (defaultHandler) - reportDefault(parser, enc, s, next); - handleDefault = XML_FALSE; - result = doIgnoreSection(parser, enc, &next, end, nextPtr, haveMore); - if (result != XML_ERROR_NONE) - return result; - else if (!next) { - processor = ignoreSectionProcessor; - return result; - } - } - break; -#endif /* XML_DTD */ - case XML_ROLE_GROUP_OPEN: - if (prologState.level >= groupSize) { - if (groupSize) { - char *temp = (char *)REALLOC(groupConnector, groupSize *= 2); - if (temp == NULL) - return XML_ERROR_NO_MEMORY; - groupConnector = temp; - if (dtd->scaffIndex) { - int *temp = (int *)REALLOC(dtd->scaffIndex, - groupSize * sizeof(int)); - if (temp == NULL) - return XML_ERROR_NO_MEMORY; - dtd->scaffIndex = temp; - } - } - else { - groupConnector = (char *)MALLOC(groupSize = 32); - if (!groupConnector) - return XML_ERROR_NO_MEMORY; - } - } - groupConnector[prologState.level] = 0; - if (dtd->in_eldecl) { - int myindex = nextScaffoldPart(parser); - if (myindex < 0) - return XML_ERROR_NO_MEMORY; - dtd->scaffIndex[dtd->scaffLevel] = myindex; - dtd->scaffLevel++; - dtd->scaffold[myindex].type = XML_CTYPE_SEQ; - if (elementDeclHandler) - handleDefault = XML_FALSE; - } - break; - case XML_ROLE_GROUP_SEQUENCE: - if (groupConnector[prologState.level] == ASCII_PIPE) - return XML_ERROR_SYNTAX; - groupConnector[prologState.level] = ASCII_COMMA; - if (dtd->in_eldecl && elementDeclHandler) - handleDefault = XML_FALSE; - break; - case XML_ROLE_GROUP_CHOICE: - if (groupConnector[prologState.level] == ASCII_COMMA) - return XML_ERROR_SYNTAX; - if (dtd->in_eldecl - && !groupConnector[prologState.level] - && (dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type - != XML_CTYPE_MIXED) - ) { - dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type - = XML_CTYPE_CHOICE; - if (elementDeclHandler) - handleDefault = XML_FALSE; - } - groupConnector[prologState.level] = ASCII_PIPE; - break; - case XML_ROLE_PARAM_ENTITY_REF: -#ifdef XML_DTD - case XML_ROLE_INNER_PARAM_ENTITY_REF: - dtd->hasParamEntityRefs = XML_TRUE; - if (!paramEntityParsing) - dtd->keepProcessing = dtd->standalone; - else { - const XML_Char *name; - ENTITY *entity; - name = poolStoreString(&dtd->pool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!name) - return XML_ERROR_NO_MEMORY; - entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0); - poolDiscard(&dtd->pool); - /* first, determine if a check for an existing declaration is needed; - if yes, check that the entity exists, and that it is internal, - otherwise call the skipped entity handler - */ - if (prologState.documentEntity && - (dtd->standalone - ? !openInternalEntities - : !dtd->hasParamEntityRefs)) { - if (!entity) - return XML_ERROR_UNDEFINED_ENTITY; - else if (!entity->is_internal) - return XML_ERROR_ENTITY_DECLARED_IN_PE; - } - else if (!entity) { - dtd->keepProcessing = dtd->standalone; - /* cannot report skipped entities in declarations */ - if ((role == XML_ROLE_PARAM_ENTITY_REF) && skippedEntityHandler) { - skippedEntityHandler(handlerArg, name, 1); - handleDefault = XML_FALSE; - } - break; - } - if (entity->open) - return XML_ERROR_RECURSIVE_ENTITY_REF; - if (entity->textPtr) { - enum XML_Error result; - XML_Bool betweenDecl = - (role == XML_ROLE_PARAM_ENTITY_REF ? XML_TRUE : XML_FALSE); - result = processInternalEntity(parser, entity, betweenDecl); - if (result != XML_ERROR_NONE) - return result; - handleDefault = XML_FALSE; - break; - } - if (externalEntityRefHandler) { - dtd->paramEntityRead = XML_FALSE; - entity->open = XML_TRUE; - if (!externalEntityRefHandler(externalEntityRefHandlerArg, - 0, - entity->base, - entity->systemId, - entity->publicId)) { - entity->open = XML_FALSE; - return XML_ERROR_EXTERNAL_ENTITY_HANDLING; - } - entity->open = XML_FALSE; - handleDefault = XML_FALSE; - if (!dtd->paramEntityRead) { - dtd->keepProcessing = dtd->standalone; - break; - } - } - else { - dtd->keepProcessing = dtd->standalone; - break; - } - } -#endif /* XML_DTD */ - if (!dtd->standalone && - notStandaloneHandler && - !notStandaloneHandler(handlerArg)) - return XML_ERROR_NOT_STANDALONE; - break; - - /* Element declaration stuff */ - - case XML_ROLE_ELEMENT_NAME: - if (elementDeclHandler) { - declElementType = getElementType(parser, enc, s, next); - if (!declElementType) - return XML_ERROR_NO_MEMORY; - dtd->scaffLevel = 0; - dtd->scaffCount = 0; - dtd->in_eldecl = XML_TRUE; - handleDefault = XML_FALSE; - } - break; - - case XML_ROLE_CONTENT_ANY: - case XML_ROLE_CONTENT_EMPTY: - if (dtd->in_eldecl) { - if (elementDeclHandler) { - XML_Content * content = (XML_Content *) MALLOC(sizeof(XML_Content)); - if (!content) - return XML_ERROR_NO_MEMORY; - content->quant = XML_CQUANT_NONE; - content->name = NULL; - content->numchildren = 0; - content->children = NULL; - content->type = ((role == XML_ROLE_CONTENT_ANY) ? - XML_CTYPE_ANY : - XML_CTYPE_EMPTY); - *eventEndPP = s; - elementDeclHandler(handlerArg, declElementType->name, content); - handleDefault = XML_FALSE; - } - dtd->in_eldecl = XML_FALSE; - } - break; - - case XML_ROLE_CONTENT_PCDATA: - if (dtd->in_eldecl) { - dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type - = XML_CTYPE_MIXED; - if (elementDeclHandler) - handleDefault = XML_FALSE; - } - break; - - case XML_ROLE_CONTENT_ELEMENT: - quant = XML_CQUANT_NONE; - goto elementContent; - case XML_ROLE_CONTENT_ELEMENT_OPT: - quant = XML_CQUANT_OPT; - goto elementContent; - case XML_ROLE_CONTENT_ELEMENT_REP: - quant = XML_CQUANT_REP; - goto elementContent; - case XML_ROLE_CONTENT_ELEMENT_PLUS: - quant = XML_CQUANT_PLUS; - elementContent: - if (dtd->in_eldecl) { - ELEMENT_TYPE *el; - const XML_Char *name; - int nameLen; - const char *nxt = (quant == XML_CQUANT_NONE - ? next - : next - enc->minBytesPerChar); - int myindex = nextScaffoldPart(parser); - if (myindex < 0) - return XML_ERROR_NO_MEMORY; - dtd->scaffold[myindex].type = XML_CTYPE_NAME; - dtd->scaffold[myindex].quant = quant; - el = getElementType(parser, enc, s, nxt); - if (!el) - return XML_ERROR_NO_MEMORY; - name = el->name; - dtd->scaffold[myindex].name = name; - nameLen = 0; - for (; name[nameLen++]; ); - dtd->contentStringLen += nameLen; - if (elementDeclHandler) - handleDefault = XML_FALSE; - } - break; - - case XML_ROLE_GROUP_CLOSE: - quant = XML_CQUANT_NONE; - goto closeGroup; - case XML_ROLE_GROUP_CLOSE_OPT: - quant = XML_CQUANT_OPT; - goto closeGroup; - case XML_ROLE_GROUP_CLOSE_REP: - quant = XML_CQUANT_REP; - goto closeGroup; - case XML_ROLE_GROUP_CLOSE_PLUS: - quant = XML_CQUANT_PLUS; - closeGroup: - if (dtd->in_eldecl) { - if (elementDeclHandler) - handleDefault = XML_FALSE; - dtd->scaffLevel--; - dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel]].quant = quant; - if (dtd->scaffLevel == 0) { - if (!handleDefault) { - XML_Content *model = build_model(parser); - if (!model) - return XML_ERROR_NO_MEMORY; - *eventEndPP = s; - elementDeclHandler(handlerArg, declElementType->name, model); - } - dtd->in_eldecl = XML_FALSE; - dtd->contentStringLen = 0; - } - } - break; - /* End element declaration stuff */ - - case XML_ROLE_PI: - if (!reportProcessingInstruction(parser, enc, s, next)) - return XML_ERROR_NO_MEMORY; - handleDefault = XML_FALSE; - break; - case XML_ROLE_COMMENT: - if (!reportComment(parser, enc, s, next)) - return XML_ERROR_NO_MEMORY; - handleDefault = XML_FALSE; - break; - case XML_ROLE_NONE: - switch (tok) { - case XML_TOK_BOM: - handleDefault = XML_FALSE; - break; - } - break; - case XML_ROLE_DOCTYPE_NONE: - if (startDoctypeDeclHandler) - handleDefault = XML_FALSE; - break; - case XML_ROLE_ENTITY_NONE: - if (dtd->keepProcessing && entityDeclHandler) - handleDefault = XML_FALSE; - break; - case XML_ROLE_NOTATION_NONE: - if (notationDeclHandler) - handleDefault = XML_FALSE; - break; - case XML_ROLE_ATTLIST_NONE: - if (dtd->keepProcessing && attlistDeclHandler) - handleDefault = XML_FALSE; - break; - case XML_ROLE_ELEMENT_NONE: - if (elementDeclHandler) - handleDefault = XML_FALSE; - break; - } /* end of big switch */ - - if (handleDefault && defaultHandler) - reportDefault(parser, enc, s, next); - - switch (ps_parsing) { - case XML_SUSPENDED: - *nextPtr = next; - return XML_ERROR_NONE; - case XML_FINISHED: - return XML_ERROR_ABORTED; - default: - s = next; - tok = XmlPrologTok(enc, s, end, &next); - } - } - /* not reached */ -} - -static enum XML_Error PTRCALL -epilogProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - processor = epilogProcessor; - eventPtr = s; - for (;;) { - const char *next = NULL; - int tok = XmlPrologTok(encoding, s, end, &next); - eventEndPtr = next; - switch (tok) { - /* report partial linebreak - it might be the last token */ - case -XML_TOK_PROLOG_S: - if (defaultHandler) { - reportDefault(parser, encoding, s, next); - if (ps_parsing == XML_FINISHED) - return XML_ERROR_ABORTED; - } - *nextPtr = next; - return XML_ERROR_NONE; - case XML_TOK_NONE: - *nextPtr = s; - return XML_ERROR_NONE; - case XML_TOK_PROLOG_S: - if (defaultHandler) - reportDefault(parser, encoding, s, next); - break; - case XML_TOK_PI: - if (!reportProcessingInstruction(parser, encoding, s, next)) - return XML_ERROR_NO_MEMORY; - break; - case XML_TOK_COMMENT: - if (!reportComment(parser, encoding, s, next)) - return XML_ERROR_NO_MEMORY; - break; - case XML_TOK_INVALID: - eventPtr = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL: - if (!ps_finalBuffer) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (!ps_finalBuffer) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_PARTIAL_CHAR; - default: - return XML_ERROR_JUNK_AFTER_DOC_ELEMENT; - } - eventPtr = s = next; - switch (ps_parsing) { - case XML_SUSPENDED: - *nextPtr = next; - return XML_ERROR_NONE; - case XML_FINISHED: - return XML_ERROR_ABORTED; - default: ; - } - } -} - -static enum XML_Error -processInternalEntity(XML_Parser parser, ENTITY *entity, - XML_Bool betweenDecl) -{ - const char *textStart, *textEnd; - const char *next; - enum XML_Error result; - OPEN_INTERNAL_ENTITY *openEntity; - - if (freeInternalEntities) { - openEntity = freeInternalEntities; - freeInternalEntities = openEntity->next; - } - else { - openEntity = (OPEN_INTERNAL_ENTITY *)MALLOC(sizeof(OPEN_INTERNAL_ENTITY)); - if (!openEntity) - return XML_ERROR_NO_MEMORY; - } - entity->open = XML_TRUE; - entity->processed = 0; - openEntity->next = openInternalEntities; - openInternalEntities = openEntity; - openEntity->entity = entity; - openEntity->startTagLevel = tagLevel; - openEntity->betweenDecl = betweenDecl; - openEntity->internalEventPtr = NULL; - openEntity->internalEventEndPtr = NULL; - textStart = (char *)entity->textPtr; - textEnd = (char *)(entity->textPtr + entity->textLen); - -#ifdef XML_DTD - if (entity->is_param) { - int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next); - result = doProlog(parser, internalEncoding, textStart, textEnd, tok, - next, &next, XML_FALSE); - } - else -#endif /* XML_DTD */ - result = doContent(parser, tagLevel, internalEncoding, textStart, - textEnd, &next, XML_FALSE); - - if (result == XML_ERROR_NONE) { - if (textEnd != next && ps_parsing == XML_SUSPENDED) { - entity->processed = (int)(next - textStart); - processor = internalEntityProcessor; - } - else { - entity->open = XML_FALSE; - openInternalEntities = openEntity->next; - /* put openEntity back in list of free instances */ - openEntity->next = freeInternalEntities; - freeInternalEntities = openEntity; - } - } - return result; -} - -static enum XML_Error PTRCALL -internalEntityProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - ENTITY *entity; - const char *textStart, *textEnd; - const char *next; - enum XML_Error result; - OPEN_INTERNAL_ENTITY *openEntity = openInternalEntities; - if (!openEntity) - return XML_ERROR_UNEXPECTED_STATE; - - entity = openEntity->entity; - textStart = ((char *)entity->textPtr) + entity->processed; - textEnd = (char *)(entity->textPtr + entity->textLen); - -#ifdef XML_DTD - if (entity->is_param) { - int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next); - result = doProlog(parser, internalEncoding, textStart, textEnd, tok, - next, &next, XML_FALSE); - } - else -#endif /* XML_DTD */ - result = doContent(parser, openEntity->startTagLevel, internalEncoding, - textStart, textEnd, &next, XML_FALSE); - - if (result != XML_ERROR_NONE) - return result; - else if (textEnd != next && ps_parsing == XML_SUSPENDED) { - entity->processed = (int)(next - (char *)entity->textPtr); - return result; - } - else { - entity->open = XML_FALSE; - openInternalEntities = openEntity->next; - /* put openEntity back in list of free instances */ - openEntity->next = freeInternalEntities; - freeInternalEntities = openEntity; - } - -#ifdef XML_DTD - if (entity->is_param) { - int tok; - processor = prologProcessor; - tok = XmlPrologTok(encoding, s, end, &next); - return doProlog(parser, encoding, s, end, tok, next, nextPtr, - (XML_Bool)!ps_finalBuffer); - } - else -#endif /* XML_DTD */ - { - processor = contentProcessor; - /* see externalEntityContentProcessor vs contentProcessor */ - return doContent(parser, parentParser ? 1 : 0, encoding, s, end, - nextPtr, (XML_Bool)!ps_finalBuffer); - } -} - -static enum XML_Error PTRCALL -errorProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - return errorCode; -} - -static enum XML_Error -storeAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, - const char *ptr, const char *end, - STRING_POOL *pool) -{ - enum XML_Error result = appendAttributeValue(parser, enc, isCdata, ptr, - end, pool); - if (result) - return result; - if (!isCdata && poolLength(pool) && poolLastChar(pool) == 0x20) - poolChop(pool); - if (!poolAppendChar(pool, XML_T('\0'))) - return XML_ERROR_NO_MEMORY; - return XML_ERROR_NONE; -} - -static enum XML_Error -appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, - const char *ptr, const char *end, - STRING_POOL *pool) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - for (;;) { - const char *next; - int tok = XmlAttributeValueTok(enc, ptr, end, &next); - switch (tok) { - case XML_TOK_NONE: - return XML_ERROR_NONE; - case XML_TOK_INVALID: - if (enc == encoding) - eventPtr = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL: - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_CHAR_REF: - { - XML_Char buf[XML_ENCODE_MAX]; - int i; - int n = XmlCharRefNumber(enc, ptr); - if (n < 0) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_BAD_CHAR_REF; - } - if (!isCdata - && n == 0x20 /* space */ - && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20)) - break; - n = XmlEncode(n, (ICHAR *)buf); - if (!n) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_BAD_CHAR_REF; - } - for (i = 0; i < n; i++) { - if (!poolAppendChar(pool, buf[i])) - return XML_ERROR_NO_MEMORY; - } - } - break; - case XML_TOK_DATA_CHARS: - if (!poolAppend(pool, enc, ptr, next)) - return XML_ERROR_NO_MEMORY; - break; - case XML_TOK_TRAILING_CR: - next = ptr + enc->minBytesPerChar; - /* fall through */ - case XML_TOK_ATTRIBUTE_VALUE_S: - case XML_TOK_DATA_NEWLINE: - if (!isCdata && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20)) - break; - if (!poolAppendChar(pool, 0x20)) - return XML_ERROR_NO_MEMORY; - break; - case XML_TOK_ENTITY_REF: - { - const XML_Char *name; - ENTITY *entity; - char checkEntityDecl; - XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc, - ptr + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (ch) { - if (!poolAppendChar(pool, ch)) - return XML_ERROR_NO_MEMORY; - break; - } - name = poolStoreString(&temp2Pool, enc, - ptr + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!name) - return XML_ERROR_NO_MEMORY; - entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0); - poolDiscard(&temp2Pool); - /* First, determine if a check for an existing declaration is needed; - if yes, check that the entity exists, and that it is internal. - */ - if (pool == &dtd->pool) /* are we called from prolog? */ - checkEntityDecl = -#ifdef XML_DTD - prologState.documentEntity && -#endif /* XML_DTD */ - (dtd->standalone - ? !openInternalEntities - : !dtd->hasParamEntityRefs); - else /* if (pool == &tempPool): we are called from content */ - checkEntityDecl = !dtd->hasParamEntityRefs || dtd->standalone; - if (checkEntityDecl) { - if (!entity) - return XML_ERROR_UNDEFINED_ENTITY; - else if (!entity->is_internal) - return XML_ERROR_ENTITY_DECLARED_IN_PE; - } - else if (!entity) { - /* Cannot report skipped entity here - see comments on - skippedEntityHandler. - if (skippedEntityHandler) - skippedEntityHandler(handlerArg, name, 0); - */ - /* Cannot call the default handler because this would be - out of sync with the call to the startElementHandler. - if ((pool == &tempPool) && defaultHandler) - reportDefault(parser, enc, ptr, next); - */ - break; - } - if (entity->open) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_RECURSIVE_ENTITY_REF; - } - if (entity->notation) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_BINARY_ENTITY_REF; - } - if (!entity->textPtr) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF; - } - else { - enum XML_Error result; - const XML_Char *textEnd = entity->textPtr + entity->textLen; - entity->open = XML_TRUE; - result = appendAttributeValue(parser, internalEncoding, isCdata, - (char *)entity->textPtr, - (char *)textEnd, pool); - entity->open = XML_FALSE; - if (result) - return result; - } - } - break; - default: - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_UNEXPECTED_STATE; - } - ptr = next; - } - /* not reached */ -} - -static enum XML_Error -storeEntityValue(XML_Parser parser, - const ENCODING *enc, - const char *entityTextPtr, - const char *entityTextEnd) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - STRING_POOL *pool = &(dtd->entityValuePool); - enum XML_Error result = XML_ERROR_NONE; -#ifdef XML_DTD - int oldInEntityValue = prologState.inEntityValue; - prologState.inEntityValue = 1; -#endif /* XML_DTD */ - /* never return Null for the value argument in EntityDeclHandler, - since this would indicate an external entity; therefore we - have to make sure that entityValuePool.start is not null */ - if (!pool->blocks) { - if (!poolGrow(pool)) - return XML_ERROR_NO_MEMORY; - } - - for (;;) { - const char *next; - int tok = XmlEntityValueTok(enc, entityTextPtr, entityTextEnd, &next); - switch (tok) { - case XML_TOK_PARAM_ENTITY_REF: -#ifdef XML_DTD - if (isParamEntity || enc != encoding) { - const XML_Char *name; - ENTITY *entity; - name = poolStoreString(&tempPool, enc, - entityTextPtr + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!name) { - result = XML_ERROR_NO_MEMORY; - goto endEntityValue; - } - entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0); - poolDiscard(&tempPool); - if (!entity) { - /* not a well-formedness error - see XML 1.0: WFC Entity Declared */ - /* cannot report skipped entity here - see comments on - skippedEntityHandler - if (skippedEntityHandler) - skippedEntityHandler(handlerArg, name, 0); - */ - dtd->keepProcessing = dtd->standalone; - goto endEntityValue; - } - if (entity->open) { - if (enc == encoding) - eventPtr = entityTextPtr; - result = XML_ERROR_RECURSIVE_ENTITY_REF; - goto endEntityValue; - } - if (entity->systemId) { - if (externalEntityRefHandler) { - dtd->paramEntityRead = XML_FALSE; - entity->open = XML_TRUE; - if (!externalEntityRefHandler(externalEntityRefHandlerArg, - 0, - entity->base, - entity->systemId, - entity->publicId)) { - entity->open = XML_FALSE; - result = XML_ERROR_EXTERNAL_ENTITY_HANDLING; - goto endEntityValue; - } - entity->open = XML_FALSE; - if (!dtd->paramEntityRead) - dtd->keepProcessing = dtd->standalone; - } - else - dtd->keepProcessing = dtd->standalone; - } - else { - entity->open = XML_TRUE; - result = storeEntityValue(parser, - internalEncoding, - (char *)entity->textPtr, - (char *)(entity->textPtr - + entity->textLen)); - entity->open = XML_FALSE; - if (result) - goto endEntityValue; - } - break; - } -#endif /* XML_DTD */ - /* In the internal subset, PE references are not legal - within markup declarations, e.g entity values in this case. */ - eventPtr = entityTextPtr; - result = XML_ERROR_PARAM_ENTITY_REF; - goto endEntityValue; - case XML_TOK_NONE: - result = XML_ERROR_NONE; - goto endEntityValue; - case XML_TOK_ENTITY_REF: - case XML_TOK_DATA_CHARS: - if (!poolAppend(pool, enc, entityTextPtr, next)) { - result = XML_ERROR_NO_MEMORY; - goto endEntityValue; - } - break; - case XML_TOK_TRAILING_CR: - next = entityTextPtr + enc->minBytesPerChar; - /* fall through */ - case XML_TOK_DATA_NEWLINE: - if (pool->end == pool->ptr && !poolGrow(pool)) { - result = XML_ERROR_NO_MEMORY; - goto endEntityValue; - } - *(pool->ptr)++ = 0xA; - break; - case XML_TOK_CHAR_REF: - { - XML_Char buf[XML_ENCODE_MAX]; - int i; - int n = XmlCharRefNumber(enc, entityTextPtr); - if (n < 0) { - if (enc == encoding) - eventPtr = entityTextPtr; - result = XML_ERROR_BAD_CHAR_REF; - goto endEntityValue; - } - n = XmlEncode(n, (ICHAR *)buf); - if (!n) { - if (enc == encoding) - eventPtr = entityTextPtr; - result = XML_ERROR_BAD_CHAR_REF; - goto endEntityValue; - } - for (i = 0; i < n; i++) { - if (pool->end == pool->ptr && !poolGrow(pool)) { - result = XML_ERROR_NO_MEMORY; - goto endEntityValue; - } - *(pool->ptr)++ = buf[i]; - } - } - break; - case XML_TOK_PARTIAL: - if (enc == encoding) - eventPtr = entityTextPtr; - result = XML_ERROR_INVALID_TOKEN; - goto endEntityValue; - case XML_TOK_INVALID: - if (enc == encoding) - eventPtr = next; - result = XML_ERROR_INVALID_TOKEN; - goto endEntityValue; - default: - if (enc == encoding) - eventPtr = entityTextPtr; - result = XML_ERROR_UNEXPECTED_STATE; - goto endEntityValue; - } - entityTextPtr = next; - } -endEntityValue: -#ifdef XML_DTD - prologState.inEntityValue = oldInEntityValue; -#endif /* XML_DTD */ - return result; -} - -static void FASTCALL -normalizeLines(XML_Char *s) -{ - XML_Char *p; - for (;; s++) { - if (*s == XML_T('\0')) - return; - if (*s == 0xD) - break; - } - p = s; - do { - if (*s == 0xD) { - *p++ = 0xA; - if (*++s == 0xA) - s++; - } - else - *p++ = *s++; - } while (*s); - *p = XML_T('\0'); -} - -static int -reportProcessingInstruction(XML_Parser parser, const ENCODING *enc, - const char *start, const char *end) -{ - const XML_Char *target; - XML_Char *data; - const char *tem; - if (!processingInstructionHandler) { - if (defaultHandler) - reportDefault(parser, enc, start, end); - return 1; - } - start += enc->minBytesPerChar * 2; - tem = start + XmlNameLength(enc, start); - target = poolStoreString(&tempPool, enc, start, tem); - if (!target) - return 0; - poolFinish(&tempPool); - data = poolStoreString(&tempPool, enc, - XmlSkipS(enc, tem), - end - enc->minBytesPerChar*2); - if (!data) - return 0; - normalizeLines(data); - processingInstructionHandler(handlerArg, target, data); - poolClear(&tempPool); - return 1; -} - -static int -reportComment(XML_Parser parser, const ENCODING *enc, - const char *start, const char *end) -{ - XML_Char *data; - if (!commentHandler) { - if (defaultHandler) - reportDefault(parser, enc, start, end); - return 1; - } - data = poolStoreString(&tempPool, - enc, - start + enc->minBytesPerChar * 4, - end - enc->minBytesPerChar * 3); - if (!data) - return 0; - normalizeLines(data); - commentHandler(handlerArg, data); - poolClear(&tempPool); - return 1; -} - -static void -reportDefault(XML_Parser parser, const ENCODING *enc, - const char *s, const char *end) -{ - if (MUST_CONVERT(enc, s)) { - const char **eventPP; - const char **eventEndPP; - if (enc == encoding) { - eventPP = &eventPtr; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); - } - do { - ICHAR *dataPtr = (ICHAR *)dataBuf; - XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd); - *eventEndPP = s; - defaultHandler(handlerArg, dataBuf, (int)(dataPtr - (ICHAR *)dataBuf)); - *eventPP = s; - } while (s != end); - } - else - defaultHandler(handlerArg, (XML_Char *)s, (int)((XML_Char *)end - (XML_Char *)s)); -} - - -static int -defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata, - XML_Bool isId, const XML_Char *value, XML_Parser parser) -{ - DEFAULT_ATTRIBUTE *att; - if (value || isId) { - /* The handling of default attributes gets messed up if we have - a default which duplicates a non-default. */ - int i; - for (i = 0; i < type->nDefaultAtts; i++) - if (attId == type->defaultAtts[i].id) - return 1; - if (isId && !type->idAtt && !attId->xmlns) - type->idAtt = attId; - } - if (type->nDefaultAtts == type->allocDefaultAtts) { - if (type->allocDefaultAtts == 0) { - type->allocDefaultAtts = 8; - type->defaultAtts = (DEFAULT_ATTRIBUTE *)MALLOC(type->allocDefaultAtts - * sizeof(DEFAULT_ATTRIBUTE)); - if (!type->defaultAtts) - return 0; - } - else { - DEFAULT_ATTRIBUTE *temp; - int count = type->allocDefaultAtts * 2; - temp = (DEFAULT_ATTRIBUTE *) - REALLOC(type->defaultAtts, (count * sizeof(DEFAULT_ATTRIBUTE))); - if (temp == NULL) - return 0; - type->allocDefaultAtts = count; - type->defaultAtts = temp; - } - } - att = type->defaultAtts + type->nDefaultAtts; - att->id = attId; - att->value = value; - att->isCdata = isCdata; - if (!isCdata) - attId->maybeTokenized = XML_TRUE; - type->nDefaultAtts += 1; - return 1; -} - -static int -setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - const XML_Char *name; - for (name = elementType->name; *name; name++) { - if (*name == XML_T(ASCII_COLON)) { - PREFIX *prefix; - const XML_Char *s; - for (s = elementType->name; s != name; s++) { - if (!poolAppendChar(&dtd->pool, *s)) - return 0; - } - if (!poolAppendChar(&dtd->pool, XML_T('\0'))) - return 0; - prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&dtd->pool), - sizeof(PREFIX)); - if (!prefix) - return 0; - if (prefix->name == poolStart(&dtd->pool)) - poolFinish(&dtd->pool); - else - poolDiscard(&dtd->pool); - elementType->prefix = prefix; - - } - } - return 1; -} - -static ATTRIBUTE_ID * -getAttributeId(XML_Parser parser, const ENCODING *enc, - const char *start, const char *end) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - ATTRIBUTE_ID *id; - const XML_Char *name; - if (!poolAppendChar(&dtd->pool, XML_T('\0'))) - return NULL; - name = poolStoreString(&dtd->pool, enc, start, end); - if (!name) - return NULL; - /* skip quotation mark - its storage will be re-used (like in name[-1]) */ - ++name; - id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, name, sizeof(ATTRIBUTE_ID)); - if (!id) - return NULL; - if (id->name != name) - poolDiscard(&dtd->pool); - else { - poolFinish(&dtd->pool); - if (!ns) - ; - else if (name[0] == XML_T(ASCII_x) - && name[1] == XML_T(ASCII_m) - && name[2] == XML_T(ASCII_l) - && name[3] == XML_T(ASCII_n) - && name[4] == XML_T(ASCII_s) - && (name[5] == XML_T('\0') || name[5] == XML_T(ASCII_COLON))) { - if (name[5] == XML_T('\0')) - id->prefix = &dtd->defaultPrefix; - else - id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, name + 6, sizeof(PREFIX)); - id->xmlns = XML_TRUE; - } - else { - int i; - for (i = 0; name[i]; i++) { - /* attributes without prefix are *not* in the default namespace */ - if (name[i] == XML_T(ASCII_COLON)) { - int j; - for (j = 0; j < i; j++) { - if (!poolAppendChar(&dtd->pool, name[j])) - return NULL; - } - if (!poolAppendChar(&dtd->pool, XML_T('\0'))) - return NULL; - id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&dtd->pool), - sizeof(PREFIX)); - if (id->prefix->name == poolStart(&dtd->pool)) - poolFinish(&dtd->pool); - else - poolDiscard(&dtd->pool); - break; - } - } - } - } - return id; -} - -#define CONTEXT_SEP XML_T(ASCII_FF) - -static const XML_Char * -getContext(XML_Parser parser) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - HASH_TABLE_ITER iter; - XML_Bool needSep = XML_FALSE; - - if (dtd->defaultPrefix.binding) { - int i; - int len; - if (!poolAppendChar(&tempPool, XML_T(ASCII_EQUALS))) - return NULL; - len = dtd->defaultPrefix.binding->uriLen; - if (namespaceSeparator) - len--; - for (i = 0; i < len; i++) - if (!poolAppendChar(&tempPool, dtd->defaultPrefix.binding->uri[i])) - return NULL; - needSep = XML_TRUE; - } - - hashTableIterInit(&iter, &(dtd->prefixes)); - for (;;) { - int i; - int len; - const XML_Char *s; - PREFIX *prefix = (PREFIX *)hashTableIterNext(&iter); - if (!prefix) - break; - if (!prefix->binding) - continue; - if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP)) - return NULL; - for (s = prefix->name; *s; s++) - if (!poolAppendChar(&tempPool, *s)) - return NULL; - if (!poolAppendChar(&tempPool, XML_T(ASCII_EQUALS))) - return NULL; - len = prefix->binding->uriLen; - if (namespaceSeparator) - len--; - for (i = 0; i < len; i++) - if (!poolAppendChar(&tempPool, prefix->binding->uri[i])) - return NULL; - needSep = XML_TRUE; - } - - - hashTableIterInit(&iter, &(dtd->generalEntities)); - for (;;) { - const XML_Char *s; - ENTITY *e = (ENTITY *)hashTableIterNext(&iter); - if (!e) - break; - if (!e->open) - continue; - if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP)) - return NULL; - for (s = e->name; *s; s++) - if (!poolAppendChar(&tempPool, *s)) - return 0; - needSep = XML_TRUE; - } - - if (!poolAppendChar(&tempPool, XML_T('\0'))) - return NULL; - return tempPool.start; -} - -static XML_Bool -setContext(XML_Parser parser, const XML_Char *context) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - const XML_Char *s = context; - - while (*context != XML_T('\0')) { - if (*s == CONTEXT_SEP || *s == XML_T('\0')) { - ENTITY *e; - if (!poolAppendChar(&tempPool, XML_T('\0'))) - return XML_FALSE; - e = (ENTITY *)lookup(parser, &dtd->generalEntities, poolStart(&tempPool), 0); - if (e) - e->open = XML_TRUE; - if (*s != XML_T('\0')) - s++; - context = s; - poolDiscard(&tempPool); - } - else if (*s == XML_T(ASCII_EQUALS)) { - PREFIX *prefix; - if (poolLength(&tempPool) == 0) - prefix = &dtd->defaultPrefix; - else { - if (!poolAppendChar(&tempPool, XML_T('\0'))) - return XML_FALSE; - prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&tempPool), - sizeof(PREFIX)); - if (!prefix) - return XML_FALSE; - if (prefix->name == poolStart(&tempPool)) { - prefix->name = poolCopyString(&dtd->pool, prefix->name); - if (!prefix->name) - return XML_FALSE; - } - poolDiscard(&tempPool); - } - for (context = s + 1; - *context != CONTEXT_SEP && *context != XML_T('\0'); - context++) - if (!poolAppendChar(&tempPool, *context)) - return XML_FALSE; - if (!poolAppendChar(&tempPool, XML_T('\0'))) - return XML_FALSE; - if (addBinding(parser, prefix, NULL, poolStart(&tempPool), - &inheritedBindings) != XML_ERROR_NONE) - return XML_FALSE; - poolDiscard(&tempPool); - if (*context != XML_T('\0')) - ++context; - s = context; - } - else { - if (!poolAppendChar(&tempPool, *s)) - return XML_FALSE; - s++; - } - } - return XML_TRUE; -} - -static void FASTCALL -normalizePublicId(XML_Char *publicId) -{ - XML_Char *p = publicId; - XML_Char *s; - for (s = publicId; *s; s++) { - switch (*s) { - case 0x20: - case 0xD: - case 0xA: - if (p != publicId && p[-1] != 0x20) - *p++ = 0x20; - break; - default: - *p++ = *s; - } - } - if (p != publicId && p[-1] == 0x20) - --p; - *p = XML_T('\0'); -} - -static DTD * -dtdCreate(const XML_Memory_Handling_Suite *ms) -{ - DTD *p = (DTD *)ms->malloc_fcn(sizeof(DTD)); - if (p == NULL) - return p; - poolInit(&(p->pool), ms); - poolInit(&(p->entityValuePool), ms); - hashTableInit(&(p->generalEntities), ms); - hashTableInit(&(p->elementTypes), ms); - hashTableInit(&(p->attributeIds), ms); - hashTableInit(&(p->prefixes), ms); -#ifdef XML_DTD - p->paramEntityRead = XML_FALSE; - hashTableInit(&(p->paramEntities), ms); -#endif /* XML_DTD */ - p->defaultPrefix.name = NULL; - p->defaultPrefix.binding = NULL; - - p->in_eldecl = XML_FALSE; - p->scaffIndex = NULL; - p->scaffold = NULL; - p->scaffLevel = 0; - p->scaffSize = 0; - p->scaffCount = 0; - p->contentStringLen = 0; - - p->keepProcessing = XML_TRUE; - p->hasParamEntityRefs = XML_FALSE; - p->standalone = XML_FALSE; - return p; -} - -static void -dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms) -{ - HASH_TABLE_ITER iter; - hashTableIterInit(&iter, &(p->elementTypes)); - for (;;) { - ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter); - if (!e) - break; - if (e->allocDefaultAtts != 0) - ms->free_fcn(e->defaultAtts); - } - hashTableClear(&(p->generalEntities)); -#ifdef XML_DTD - p->paramEntityRead = XML_FALSE; - hashTableClear(&(p->paramEntities)); -#endif /* XML_DTD */ - hashTableClear(&(p->elementTypes)); - hashTableClear(&(p->attributeIds)); - hashTableClear(&(p->prefixes)); - poolClear(&(p->pool)); - poolClear(&(p->entityValuePool)); - p->defaultPrefix.name = NULL; - p->defaultPrefix.binding = NULL; - - p->in_eldecl = XML_FALSE; - - ms->free_fcn(p->scaffIndex); - p->scaffIndex = NULL; - ms->free_fcn(p->scaffold); - p->scaffold = NULL; - - p->scaffLevel = 0; - p->scaffSize = 0; - p->scaffCount = 0; - p->contentStringLen = 0; - - p->keepProcessing = XML_TRUE; - p->hasParamEntityRefs = XML_FALSE; - p->standalone = XML_FALSE; -} - -static void -dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms) -{ - HASH_TABLE_ITER iter; - hashTableIterInit(&iter, &(p->elementTypes)); - for (;;) { - ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter); - if (!e) - break; - if (e->allocDefaultAtts != 0) - ms->free_fcn(e->defaultAtts); - } - hashTableDestroy(&(p->generalEntities)); -#ifdef XML_DTD - hashTableDestroy(&(p->paramEntities)); -#endif /* XML_DTD */ - hashTableDestroy(&(p->elementTypes)); - hashTableDestroy(&(p->attributeIds)); - hashTableDestroy(&(p->prefixes)); - poolDestroy(&(p->pool)); - poolDestroy(&(p->entityValuePool)); - if (isDocEntity) { - ms->free_fcn(p->scaffIndex); - ms->free_fcn(p->scaffold); - } - ms->free_fcn(p); -} - -/* Do a deep copy of the DTD. Return 0 for out of memory, non-zero otherwise. - The new DTD has already been initialized. -*/ -static int -dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms) -{ - HASH_TABLE_ITER iter; - - /* Copy the prefix table. */ - - hashTableIterInit(&iter, &(oldDtd->prefixes)); - for (;;) { - const XML_Char *name; - const PREFIX *oldP = (PREFIX *)hashTableIterNext(&iter); - if (!oldP) - break; - name = poolCopyString(&(newDtd->pool), oldP->name); - if (!name) - return 0; - if (!lookup(oldParser, &(newDtd->prefixes), name, sizeof(PREFIX))) - return 0; - } - - hashTableIterInit(&iter, &(oldDtd->attributeIds)); - - /* Copy the attribute id table. */ - - for (;;) { - ATTRIBUTE_ID *newA; - const XML_Char *name; - const ATTRIBUTE_ID *oldA = (ATTRIBUTE_ID *)hashTableIterNext(&iter); - - if (!oldA) - break; - /* Remember to allocate the scratch byte before the name. */ - if (!poolAppendChar(&(newDtd->pool), XML_T('\0'))) - return 0; - name = poolCopyString(&(newDtd->pool), oldA->name); - if (!name) - return 0; - ++name; - newA = (ATTRIBUTE_ID *)lookup(oldParser, &(newDtd->attributeIds), name, - sizeof(ATTRIBUTE_ID)); - if (!newA) - return 0; - newA->maybeTokenized = oldA->maybeTokenized; - if (oldA->prefix) { - newA->xmlns = oldA->xmlns; - if (oldA->prefix == &oldDtd->defaultPrefix) - newA->prefix = &newDtd->defaultPrefix; - else - newA->prefix = (PREFIX *)lookup(oldParser, &(newDtd->prefixes), - oldA->prefix->name, 0); - } - } - - /* Copy the element type table. */ - - hashTableIterInit(&iter, &(oldDtd->elementTypes)); - - for (;;) { - int i; - ELEMENT_TYPE *newE; - const XML_Char *name; - const ELEMENT_TYPE *oldE = (ELEMENT_TYPE *)hashTableIterNext(&iter); - if (!oldE) - break; - name = poolCopyString(&(newDtd->pool), oldE->name); - if (!name) - return 0; - newE = (ELEMENT_TYPE *)lookup(oldParser, &(newDtd->elementTypes), name, - sizeof(ELEMENT_TYPE)); - if (!newE) - return 0; - if (oldE->nDefaultAtts) { - newE->defaultAtts = (DEFAULT_ATTRIBUTE *) - ms->malloc_fcn(oldE->nDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); - if (!newE->defaultAtts) { - ms->free_fcn(newE); - return 0; - } - } - if (oldE->idAtt) - newE->idAtt = (ATTRIBUTE_ID *) - lookup(oldParser, &(newDtd->attributeIds), oldE->idAtt->name, 0); - newE->allocDefaultAtts = newE->nDefaultAtts = oldE->nDefaultAtts; - if (oldE->prefix) - newE->prefix = (PREFIX *)lookup(oldParser, &(newDtd->prefixes), - oldE->prefix->name, 0); - for (i = 0; i < newE->nDefaultAtts; i++) { - newE->defaultAtts[i].id = (ATTRIBUTE_ID *) - lookup(oldParser, &(newDtd->attributeIds), oldE->defaultAtts[i].id->name, 0); - newE->defaultAtts[i].isCdata = oldE->defaultAtts[i].isCdata; - if (oldE->defaultAtts[i].value) { - newE->defaultAtts[i].value - = poolCopyString(&(newDtd->pool), oldE->defaultAtts[i].value); - if (!newE->defaultAtts[i].value) - return 0; - } - else - newE->defaultAtts[i].value = NULL; - } - } - - /* Copy the entity tables. */ - if (!copyEntityTable(oldParser, - &(newDtd->generalEntities), - &(newDtd->pool), - &(oldDtd->generalEntities))) - return 0; - -#ifdef XML_DTD - if (!copyEntityTable(oldParser, - &(newDtd->paramEntities), - &(newDtd->pool), - &(oldDtd->paramEntities))) - return 0; - newDtd->paramEntityRead = oldDtd->paramEntityRead; -#endif /* XML_DTD */ - - newDtd->keepProcessing = oldDtd->keepProcessing; - newDtd->hasParamEntityRefs = oldDtd->hasParamEntityRefs; - newDtd->standalone = oldDtd->standalone; - - /* Don't want deep copying for scaffolding */ - newDtd->in_eldecl = oldDtd->in_eldecl; - newDtd->scaffold = oldDtd->scaffold; - newDtd->contentStringLen = oldDtd->contentStringLen; - newDtd->scaffSize = oldDtd->scaffSize; - newDtd->scaffLevel = oldDtd->scaffLevel; - newDtd->scaffIndex = oldDtd->scaffIndex; - - return 1; -} /* End dtdCopy */ - -static int -copyEntityTable(XML_Parser oldParser, - HASH_TABLE *newTable, - STRING_POOL *newPool, - const HASH_TABLE *oldTable) -{ - HASH_TABLE_ITER iter; - const XML_Char *cachedOldBase = NULL; - const XML_Char *cachedNewBase = NULL; - - hashTableIterInit(&iter, oldTable); - - for (;;) { - ENTITY *newE; - const XML_Char *name; - const ENTITY *oldE = (ENTITY *)hashTableIterNext(&iter); - if (!oldE) - break; - name = poolCopyString(newPool, oldE->name); - if (!name) - return 0; - newE = (ENTITY *)lookup(oldParser, newTable, name, sizeof(ENTITY)); - if (!newE) - return 0; - if (oldE->systemId) { - const XML_Char *tem = poolCopyString(newPool, oldE->systemId); - if (!tem) - return 0; - newE->systemId = tem; - if (oldE->base) { - if (oldE->base == cachedOldBase) - newE->base = cachedNewBase; - else { - cachedOldBase = oldE->base; - tem = poolCopyString(newPool, cachedOldBase); - if (!tem) - return 0; - cachedNewBase = newE->base = tem; - } - } - if (oldE->publicId) { - tem = poolCopyString(newPool, oldE->publicId); - if (!tem) - return 0; - newE->publicId = tem; - } - } - else { - const XML_Char *tem = poolCopyStringN(newPool, oldE->textPtr, - oldE->textLen); - if (!tem) - return 0; - newE->textPtr = tem; - newE->textLen = oldE->textLen; - } - if (oldE->notation) { - const XML_Char *tem = poolCopyString(newPool, oldE->notation); - if (!tem) - return 0; - newE->notation = tem; - } - newE->is_param = oldE->is_param; - newE->is_internal = oldE->is_internal; - } - return 1; -} - -#define INIT_POWER 6 - -static XML_Bool FASTCALL -keyeq(KEY s1, KEY s2) -{ - for (; *s1 == *s2; s1++, s2++) - if (*s1 == 0) - return XML_TRUE; - return XML_FALSE; -} - -static unsigned long FASTCALL -hash(XML_Parser parser, KEY s) -{ - unsigned long h = hash_secret_salt; - while (*s) - h = CHAR_HASH(h, *s++); - return h; -} - -static NAMED * -lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize) -{ - size_t i; - if (table->size == 0) { - size_t tsize; - if (!createSize) - return NULL; - table->power = INIT_POWER; - /* table->size is a power of 2 */ - table->size = (size_t)1 << INIT_POWER; - tsize = table->size * sizeof(NAMED *); - table->v = (NAMED **)table->mem->malloc_fcn(tsize); - if (!table->v) { - table->size = 0; - return NULL; - } - memset(table->v, 0, tsize); - i = hash(parser, name) & ((unsigned long)table->size - 1); - } - else { - unsigned long h = hash(parser, name); - unsigned long mask = (unsigned long)table->size - 1; - unsigned char step = 0; - i = h & mask; - while (table->v[i]) { - if (keyeq(name, table->v[i]->name)) - return table->v[i]; - if (!step) - step = PROBE_STEP(h, mask, table->power); - i < step ? (i += table->size - step) : (i -= step); - } - if (!createSize) - return NULL; - - /* check for overflow (table is half full) */ - if (table->used >> (table->power - 1)) { - unsigned char newPower = table->power + 1; - size_t newSize = (size_t)1 << newPower; - unsigned long newMask = (unsigned long)newSize - 1; - size_t tsize = newSize * sizeof(NAMED *); - NAMED **newV = (NAMED **)table->mem->malloc_fcn(tsize); - if (!newV) - return NULL; - memset(newV, 0, tsize); - for (i = 0; i < table->size; i++) - if (table->v[i]) { - unsigned long newHash = hash(parser, table->v[i]->name); - size_t j = newHash & newMask; - step = 0; - while (newV[j]) { - if (!step) - step = PROBE_STEP(newHash, newMask, newPower); - j < step ? (j += newSize - step) : (j -= step); - } - newV[j] = table->v[i]; - } - table->mem->free_fcn(table->v); - table->v = newV; - table->power = newPower; - table->size = newSize; - i = h & newMask; - step = 0; - while (table->v[i]) { - if (!step) - step = PROBE_STEP(h, newMask, newPower); - i < step ? (i += newSize - step) : (i -= step); - } - } - } - table->v[i] = (NAMED *)table->mem->malloc_fcn(createSize); - if (!table->v[i]) - return NULL; - memset(table->v[i], 0, createSize); - table->v[i]->name = name; - (table->used)++; - return table->v[i]; -} - -static void FASTCALL -hashTableClear(HASH_TABLE *table) -{ - size_t i; - for (i = 0; i < table->size; i++) { - table->mem->free_fcn(table->v[i]); - table->v[i] = NULL; - } - table->used = 0; -} - -static void FASTCALL -hashTableDestroy(HASH_TABLE *table) -{ - size_t i; - for (i = 0; i < table->size; i++) - table->mem->free_fcn(table->v[i]); - table->mem->free_fcn(table->v); -} - -static void FASTCALL -hashTableInit(HASH_TABLE *p, const XML_Memory_Handling_Suite *ms) -{ - p->power = 0; - p->size = 0; - p->used = 0; - p->v = NULL; - p->mem = ms; -} - -static void FASTCALL -hashTableIterInit(HASH_TABLE_ITER *iter, const HASH_TABLE *table) -{ - iter->p = table->v; - iter->end = iter->p + table->size; -} - -static NAMED * FASTCALL -hashTableIterNext(HASH_TABLE_ITER *iter) -{ - while (iter->p != iter->end) { - NAMED *tem = *(iter->p)++; - if (tem) - return tem; - } - return NULL; -} - -static void FASTCALL -poolInit(STRING_POOL *pool, const XML_Memory_Handling_Suite *ms) -{ - pool->blocks = NULL; - pool->freeBlocks = NULL; - pool->start = NULL; - pool->ptr = NULL; - pool->end = NULL; - pool->mem = ms; -} - -static void FASTCALL -poolClear(STRING_POOL *pool) -{ - if (!pool->freeBlocks) - pool->freeBlocks = pool->blocks; - else { - BLOCK *p = pool->blocks; - while (p) { - BLOCK *tem = p->next; - p->next = pool->freeBlocks; - pool->freeBlocks = p; - p = tem; - } - } - pool->blocks = NULL; - pool->start = NULL; - pool->ptr = NULL; - pool->end = NULL; -} - -static void FASTCALL -poolDestroy(STRING_POOL *pool) -{ - BLOCK *p = pool->blocks; - while (p) { - BLOCK *tem = p->next; - pool->mem->free_fcn(p); - p = tem; - } - p = pool->freeBlocks; - while (p) { - BLOCK *tem = p->next; - pool->mem->free_fcn(p); - p = tem; - } -} - -static XML_Char * -poolAppend(STRING_POOL *pool, const ENCODING *enc, - const char *ptr, const char *end) -{ - if (!pool->ptr && !poolGrow(pool)) - return NULL; - for (;;) { - XmlConvert(enc, &ptr, end, (ICHAR **)&(pool->ptr), (ICHAR *)pool->end); - if (ptr == end) - break; - if (!poolGrow(pool)) - return NULL; - } - return pool->start; -} - -static const XML_Char * FASTCALL -poolCopyString(STRING_POOL *pool, const XML_Char *s) -{ - do { - if (!poolAppendChar(pool, *s)) - return NULL; - } while (*s++); - s = pool->start; - poolFinish(pool); - return s; -} - -static const XML_Char * -poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n) -{ - if (!pool->ptr && !poolGrow(pool)) - return NULL; - for (; n > 0; --n, s++) { - if (!poolAppendChar(pool, *s)) - return NULL; - } - s = pool->start; - poolFinish(pool); - return s; -} - -static const XML_Char * FASTCALL -poolAppendString(STRING_POOL *pool, const XML_Char *s) -{ - while (*s) { - if (!poolAppendChar(pool, *s)) - return NULL; - s++; - } - return pool->start; -} - -static XML_Char * -poolStoreString(STRING_POOL *pool, const ENCODING *enc, - const char *ptr, const char *end) -{ - if (!poolAppend(pool, enc, ptr, end)) - return NULL; - if (pool->ptr == pool->end && !poolGrow(pool)) - return NULL; - *(pool->ptr)++ = 0; - return pool->start; -} - -static XML_Bool FASTCALL -poolGrow(STRING_POOL *pool) -{ - if (pool->freeBlocks) { - if (pool->start == 0) { - pool->blocks = pool->freeBlocks; - pool->freeBlocks = pool->freeBlocks->next; - pool->blocks->next = NULL; - pool->start = pool->blocks->s; - pool->end = pool->start + pool->blocks->size; - pool->ptr = pool->start; - return XML_TRUE; - } - if (pool->end - pool->start < pool->freeBlocks->size) { - BLOCK *tem = pool->freeBlocks->next; - pool->freeBlocks->next = pool->blocks; - pool->blocks = pool->freeBlocks; - pool->freeBlocks = tem; - memcpy(pool->blocks->s, pool->start, - (pool->end - pool->start) * sizeof(XML_Char)); - pool->ptr = pool->blocks->s + (pool->ptr - pool->start); - pool->start = pool->blocks->s; - pool->end = pool->start + pool->blocks->size; - return XML_TRUE; - } - } - if (pool->blocks && pool->start == pool->blocks->s) { - int blockSize = (int)(pool->end - pool->start)*2; - BLOCK *temp = (BLOCK *) - pool->mem->realloc_fcn(pool->blocks, - (offsetof(BLOCK, s) - + blockSize * sizeof(XML_Char))); - if (temp == NULL) - return XML_FALSE; - pool->blocks = temp; - pool->blocks->size = blockSize; - pool->ptr = pool->blocks->s + (pool->ptr - pool->start); - pool->start = pool->blocks->s; - pool->end = pool->start + blockSize; - } - else { - BLOCK *tem; - int blockSize = (int)(pool->end - pool->start); - if (blockSize < INIT_BLOCK_SIZE) - blockSize = INIT_BLOCK_SIZE; - else - blockSize *= 2; - tem = (BLOCK *)pool->mem->malloc_fcn(offsetof(BLOCK, s) - + blockSize * sizeof(XML_Char)); - if (!tem) - return XML_FALSE; - tem->size = blockSize; - tem->next = pool->blocks; - pool->blocks = tem; - if (pool->ptr != pool->start) - memcpy(tem->s, pool->start, - (pool->ptr - pool->start) * sizeof(XML_Char)); - pool->ptr = tem->s + (pool->ptr - pool->start); - pool->start = tem->s; - pool->end = tem->s + blockSize; - } - return XML_TRUE; -} - -static int FASTCALL -nextScaffoldPart(XML_Parser parser) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - CONTENT_SCAFFOLD * me; - int next; - - if (!dtd->scaffIndex) { - dtd->scaffIndex = (int *)MALLOC(groupSize * sizeof(int)); - if (!dtd->scaffIndex) - return -1; - dtd->scaffIndex[0] = 0; - } - - if (dtd->scaffCount >= dtd->scaffSize) { - CONTENT_SCAFFOLD *temp; - if (dtd->scaffold) { - temp = (CONTENT_SCAFFOLD *) - REALLOC(dtd->scaffold, dtd->scaffSize * 2 * sizeof(CONTENT_SCAFFOLD)); - if (temp == NULL) - return -1; - dtd->scaffSize *= 2; - } - else { - temp = (CONTENT_SCAFFOLD *)MALLOC(INIT_SCAFFOLD_ELEMENTS - * sizeof(CONTENT_SCAFFOLD)); - if (temp == NULL) - return -1; - dtd->scaffSize = INIT_SCAFFOLD_ELEMENTS; - } - dtd->scaffold = temp; - } - next = dtd->scaffCount++; - me = &dtd->scaffold[next]; - if (dtd->scaffLevel) { - CONTENT_SCAFFOLD *parent = &dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel-1]]; - if (parent->lastchild) { - dtd->scaffold[parent->lastchild].nextsib = next; - } - if (!parent->childcnt) - parent->firstchild = next; - parent->lastchild = next; - parent->childcnt++; - } - me->firstchild = me->lastchild = me->childcnt = me->nextsib = 0; - return next; -} - -static void -build_node(XML_Parser parser, - int src_node, - XML_Content *dest, - XML_Content **contpos, - XML_Char **strpos) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - dest->type = dtd->scaffold[src_node].type; - dest->quant = dtd->scaffold[src_node].quant; - if (dest->type == XML_CTYPE_NAME) { - const XML_Char *src; - dest->name = *strpos; - src = dtd->scaffold[src_node].name; - for (;;) { - *(*strpos)++ = *src; - if (!*src) - break; - src++; - } - dest->numchildren = 0; - dest->children = NULL; - } - else { - unsigned int i; - int cn; - dest->numchildren = dtd->scaffold[src_node].childcnt; - dest->children = *contpos; - *contpos += dest->numchildren; - for (i = 0, cn = dtd->scaffold[src_node].firstchild; - i < dest->numchildren; - i++, cn = dtd->scaffold[cn].nextsib) { - build_node(parser, cn, &(dest->children[i]), contpos, strpos); - } - dest->name = NULL; - } -} - -static XML_Content * -build_model (XML_Parser parser) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - XML_Content *ret; - XML_Content *cpos; - XML_Char * str; - int allocsize = (dtd->scaffCount * sizeof(XML_Content) - + (dtd->contentStringLen * sizeof(XML_Char))); - - ret = (XML_Content *)MALLOC(allocsize); - if (!ret) - return NULL; - - str = (XML_Char *) (&ret[dtd->scaffCount]); - cpos = &ret[1]; - - build_node(parser, 0, ret, &cpos, &str); - return ret; -} - -static ELEMENT_TYPE * -getElementType(XML_Parser parser, - const ENCODING *enc, - const char *ptr, - const char *end) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - const XML_Char *name = poolStoreString(&dtd->pool, enc, ptr, end); - ELEMENT_TYPE *ret; - - if (!name) - return NULL; - ret = (ELEMENT_TYPE *) lookup(parser, &dtd->elementTypes, name, sizeof(ELEMENT_TYPE)); - if (!ret) - return NULL; - if (ret->name != name) - poolDiscard(&dtd->pool); - else { - poolFinish(&dtd->pool); - if (!setElementTypePrefix(parser, ret)) - return NULL; - } - return ret; -} diff --git a/platform/win32/msvc/external/expat/lib/xmlrole.c b/platform/win32/msvc/external/expat/lib/xmlrole.c deleted file mode 100644 index 44772e21dd3..00000000000 --- a/platform/win32/msvc/external/expat/lib/xmlrole.c +++ /dev/null @@ -1,1336 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#include - -#ifdef COMPILED_FROM_DSP -#include "winconfig.h" -#elif defined(MACOS_CLASSIC) -#include "macconfig.h" -#elif defined(__amigaos__) -#include "amigaconfig.h" -#elif defined(__WATCOMC__) -#include "watcomconfig.h" -#else -#ifdef HAVE_EXPAT_CONFIG_H -#include -#endif -#endif /* ndef COMPILED_FROM_DSP */ - -#include "expat_external.h" -#include "internal.h" -#include "xmlrole.h" -#include "ascii.h" - -/* Doesn't check: - - that ,| are not mixed in a model group - content of literals - -*/ - -static const char KW_ANY[] = { - ASCII_A, ASCII_N, ASCII_Y, '\0' }; -static const char KW_ATTLIST[] = { - ASCII_A, ASCII_T, ASCII_T, ASCII_L, ASCII_I, ASCII_S, ASCII_T, '\0' }; -static const char KW_CDATA[] = { - ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; -static const char KW_DOCTYPE[] = { - ASCII_D, ASCII_O, ASCII_C, ASCII_T, ASCII_Y, ASCII_P, ASCII_E, '\0' }; -static const char KW_ELEMENT[] = { - ASCII_E, ASCII_L, ASCII_E, ASCII_M, ASCII_E, ASCII_N, ASCII_T, '\0' }; -static const char KW_EMPTY[] = { - ASCII_E, ASCII_M, ASCII_P, ASCII_T, ASCII_Y, '\0' }; -static const char KW_ENTITIES[] = { - ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S, - '\0' }; -static const char KW_ENTITY[] = { - ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' }; -static const char KW_FIXED[] = { - ASCII_F, ASCII_I, ASCII_X, ASCII_E, ASCII_D, '\0' }; -static const char KW_ID[] = { - ASCII_I, ASCII_D, '\0' }; -static const char KW_IDREF[] = { - ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' }; -static const char KW_IDREFS[] = { - ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' }; -#ifdef XML_DTD -static const char KW_IGNORE[] = { - ASCII_I, ASCII_G, ASCII_N, ASCII_O, ASCII_R, ASCII_E, '\0' }; -#endif -static const char KW_IMPLIED[] = { - ASCII_I, ASCII_M, ASCII_P, ASCII_L, ASCII_I, ASCII_E, ASCII_D, '\0' }; -#ifdef XML_DTD -static const char KW_INCLUDE[] = { - ASCII_I, ASCII_N, ASCII_C, ASCII_L, ASCII_U, ASCII_D, ASCII_E, '\0' }; -#endif -static const char KW_NDATA[] = { - ASCII_N, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; -static const char KW_NMTOKEN[] = { - ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' }; -static const char KW_NMTOKENS[] = { - ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S, - '\0' }; -static const char KW_NOTATION[] = - { ASCII_N, ASCII_O, ASCII_T, ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N, - '\0' }; -static const char KW_PCDATA[] = { - ASCII_P, ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; -static const char KW_PUBLIC[] = { - ASCII_P, ASCII_U, ASCII_B, ASCII_L, ASCII_I, ASCII_C, '\0' }; -static const char KW_REQUIRED[] = { - ASCII_R, ASCII_E, ASCII_Q, ASCII_U, ASCII_I, ASCII_R, ASCII_E, ASCII_D, - '\0' }; -static const char KW_SYSTEM[] = { - ASCII_S, ASCII_Y, ASCII_S, ASCII_T, ASCII_E, ASCII_M, '\0' }; - -#ifndef MIN_BYTES_PER_CHAR -#define MIN_BYTES_PER_CHAR(enc) ((enc)->minBytesPerChar) -#endif - -#ifdef XML_DTD -#define setTopLevel(state) \ - ((state)->handler = ((state)->documentEntity \ - ? internalSubset \ - : externalSubset1)) -#else /* not XML_DTD */ -#define setTopLevel(state) ((state)->handler = internalSubset) -#endif /* not XML_DTD */ - -typedef int PTRCALL PROLOG_HANDLER(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc); - -static PROLOG_HANDLER - prolog0, prolog1, prolog2, - doctype0, doctype1, doctype2, doctype3, doctype4, doctype5, - internalSubset, - entity0, entity1, entity2, entity3, entity4, entity5, entity6, - entity7, entity8, entity9, entity10, - notation0, notation1, notation2, notation3, notation4, - attlist0, attlist1, attlist2, attlist3, attlist4, attlist5, attlist6, - attlist7, attlist8, attlist9, - element0, element1, element2, element3, element4, element5, element6, - element7, -#ifdef XML_DTD - externalSubset0, externalSubset1, - condSect0, condSect1, condSect2, -#endif /* XML_DTD */ - declClose, - error; - -static int FASTCALL common(PROLOG_STATE *state, int tok); - -static int PTRCALL -prolog0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - state->handler = prolog1; - return XML_ROLE_NONE; - case XML_TOK_XML_DECL: - state->handler = prolog1; - return XML_ROLE_XML_DECL; - case XML_TOK_PI: - state->handler = prolog1; - return XML_ROLE_PI; - case XML_TOK_COMMENT: - state->handler = prolog1; - return XML_ROLE_COMMENT; - case XML_TOK_BOM: - return XML_ROLE_NONE; - case XML_TOK_DECL_OPEN: - if (!XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, - KW_DOCTYPE)) - break; - state->handler = doctype0; - return XML_ROLE_DOCTYPE_NONE; - case XML_TOK_INSTANCE_START: - state->handler = error; - return XML_ROLE_INSTANCE_START; - } - return common(state, tok); -} - -static int PTRCALL -prolog1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_PI: - return XML_ROLE_PI; - case XML_TOK_COMMENT: - return XML_ROLE_COMMENT; - case XML_TOK_BOM: - return XML_ROLE_NONE; - case XML_TOK_DECL_OPEN: - if (!XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, - KW_DOCTYPE)) - break; - state->handler = doctype0; - return XML_ROLE_DOCTYPE_NONE; - case XML_TOK_INSTANCE_START: - state->handler = error; - return XML_ROLE_INSTANCE_START; - } - return common(state, tok); -} - -static int PTRCALL -prolog2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_PI: - return XML_ROLE_PI; - case XML_TOK_COMMENT: - return XML_ROLE_COMMENT; - case XML_TOK_INSTANCE_START: - state->handler = error; - return XML_ROLE_INSTANCE_START; - } - return common(state, tok); -} - -static int PTRCALL -doctype0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_DOCTYPE_NONE; - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = doctype1; - return XML_ROLE_DOCTYPE_NAME; - } - return common(state, tok); -} - -static int PTRCALL -doctype1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_DOCTYPE_NONE; - case XML_TOK_OPEN_BRACKET: - state->handler = internalSubset; - return XML_ROLE_DOCTYPE_INTERNAL_SUBSET; - case XML_TOK_DECL_CLOSE: - state->handler = prolog2; - return XML_ROLE_DOCTYPE_CLOSE; - case XML_TOK_NAME: - if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { - state->handler = doctype3; - return XML_ROLE_DOCTYPE_NONE; - } - if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { - state->handler = doctype2; - return XML_ROLE_DOCTYPE_NONE; - } - break; - } - return common(state, tok); -} - -static int PTRCALL -doctype2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_DOCTYPE_NONE; - case XML_TOK_LITERAL: - state->handler = doctype3; - return XML_ROLE_DOCTYPE_PUBLIC_ID; - } - return common(state, tok); -} - -static int PTRCALL -doctype3(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_DOCTYPE_NONE; - case XML_TOK_LITERAL: - state->handler = doctype4; - return XML_ROLE_DOCTYPE_SYSTEM_ID; - } - return common(state, tok); -} - -static int PTRCALL -doctype4(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_DOCTYPE_NONE; - case XML_TOK_OPEN_BRACKET: - state->handler = internalSubset; - return XML_ROLE_DOCTYPE_INTERNAL_SUBSET; - case XML_TOK_DECL_CLOSE: - state->handler = prolog2; - return XML_ROLE_DOCTYPE_CLOSE; - } - return common(state, tok); -} - -static int PTRCALL -doctype5(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_DOCTYPE_NONE; - case XML_TOK_DECL_CLOSE: - state->handler = prolog2; - return XML_ROLE_DOCTYPE_CLOSE; - } - return common(state, tok); -} - -static int PTRCALL -internalSubset(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_DECL_OPEN: - if (XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, - KW_ENTITY)) { - state->handler = entity0; - return XML_ROLE_ENTITY_NONE; - } - if (XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, - KW_ATTLIST)) { - state->handler = attlist0; - return XML_ROLE_ATTLIST_NONE; - } - if (XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, - KW_ELEMENT)) { - state->handler = element0; - return XML_ROLE_ELEMENT_NONE; - } - if (XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, - KW_NOTATION)) { - state->handler = notation0; - return XML_ROLE_NOTATION_NONE; - } - break; - case XML_TOK_PI: - return XML_ROLE_PI; - case XML_TOK_COMMENT: - return XML_ROLE_COMMENT; - case XML_TOK_PARAM_ENTITY_REF: - return XML_ROLE_PARAM_ENTITY_REF; - case XML_TOK_CLOSE_BRACKET: - state->handler = doctype5; - return XML_ROLE_DOCTYPE_NONE; - case XML_TOK_NONE: - return XML_ROLE_NONE; - } - return common(state, tok); -} - -#ifdef XML_DTD - -static int PTRCALL -externalSubset0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - state->handler = externalSubset1; - if (tok == XML_TOK_XML_DECL) - return XML_ROLE_TEXT_DECL; - return externalSubset1(state, tok, ptr, end, enc); -} - -static int PTRCALL -externalSubset1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_COND_SECT_OPEN: - state->handler = condSect0; - return XML_ROLE_NONE; - case XML_TOK_COND_SECT_CLOSE: - if (state->includeLevel == 0) - break; - state->includeLevel -= 1; - return XML_ROLE_NONE; - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_CLOSE_BRACKET: - break; - case XML_TOK_NONE: - if (state->includeLevel) - break; - return XML_ROLE_NONE; - default: - return internalSubset(state, tok, ptr, end, enc); - } - return common(state, tok); -} - -#endif /* XML_DTD */ - -static int PTRCALL -entity0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ENTITY_NONE; - case XML_TOK_PERCENT: - state->handler = entity1; - return XML_ROLE_ENTITY_NONE; - case XML_TOK_NAME: - state->handler = entity2; - return XML_ROLE_GENERAL_ENTITY_NAME; - } - return common(state, tok); -} - -static int PTRCALL -entity1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ENTITY_NONE; - case XML_TOK_NAME: - state->handler = entity7; - return XML_ROLE_PARAM_ENTITY_NAME; - } - return common(state, tok); -} - -static int PTRCALL -entity2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ENTITY_NONE; - case XML_TOK_NAME: - if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { - state->handler = entity4; - return XML_ROLE_ENTITY_NONE; - } - if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { - state->handler = entity3; - return XML_ROLE_ENTITY_NONE; - } - break; - case XML_TOK_LITERAL: - state->handler = declClose; - state->role_none = XML_ROLE_ENTITY_NONE; - return XML_ROLE_ENTITY_VALUE; - } - return common(state, tok); -} - -static int PTRCALL -entity3(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ENTITY_NONE; - case XML_TOK_LITERAL: - state->handler = entity4; - return XML_ROLE_ENTITY_PUBLIC_ID; - } - return common(state, tok); -} - -static int PTRCALL -entity4(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ENTITY_NONE; - case XML_TOK_LITERAL: - state->handler = entity5; - return XML_ROLE_ENTITY_SYSTEM_ID; - } - return common(state, tok); -} - -static int PTRCALL -entity5(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ENTITY_NONE; - case XML_TOK_DECL_CLOSE: - setTopLevel(state); - return XML_ROLE_ENTITY_COMPLETE; - case XML_TOK_NAME: - if (XmlNameMatchesAscii(enc, ptr, end, KW_NDATA)) { - state->handler = entity6; - return XML_ROLE_ENTITY_NONE; - } - break; - } - return common(state, tok); -} - -static int PTRCALL -entity6(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ENTITY_NONE; - case XML_TOK_NAME: - state->handler = declClose; - state->role_none = XML_ROLE_ENTITY_NONE; - return XML_ROLE_ENTITY_NOTATION_NAME; - } - return common(state, tok); -} - -static int PTRCALL -entity7(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ENTITY_NONE; - case XML_TOK_NAME: - if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { - state->handler = entity9; - return XML_ROLE_ENTITY_NONE; - } - if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { - state->handler = entity8; - return XML_ROLE_ENTITY_NONE; - } - break; - case XML_TOK_LITERAL: - state->handler = declClose; - state->role_none = XML_ROLE_ENTITY_NONE; - return XML_ROLE_ENTITY_VALUE; - } - return common(state, tok); -} - -static int PTRCALL -entity8(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ENTITY_NONE; - case XML_TOK_LITERAL: - state->handler = entity9; - return XML_ROLE_ENTITY_PUBLIC_ID; - } - return common(state, tok); -} - -static int PTRCALL -entity9(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ENTITY_NONE; - case XML_TOK_LITERAL: - state->handler = entity10; - return XML_ROLE_ENTITY_SYSTEM_ID; - } - return common(state, tok); -} - -static int PTRCALL -entity10(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ENTITY_NONE; - case XML_TOK_DECL_CLOSE: - setTopLevel(state); - return XML_ROLE_ENTITY_COMPLETE; - } - return common(state, tok); -} - -static int PTRCALL -notation0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NOTATION_NONE; - case XML_TOK_NAME: - state->handler = notation1; - return XML_ROLE_NOTATION_NAME; - } - return common(state, tok); -} - -static int PTRCALL -notation1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NOTATION_NONE; - case XML_TOK_NAME: - if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { - state->handler = notation3; - return XML_ROLE_NOTATION_NONE; - } - if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { - state->handler = notation2; - return XML_ROLE_NOTATION_NONE; - } - break; - } - return common(state, tok); -} - -static int PTRCALL -notation2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NOTATION_NONE; - case XML_TOK_LITERAL: - state->handler = notation4; - return XML_ROLE_NOTATION_PUBLIC_ID; - } - return common(state, tok); -} - -static int PTRCALL -notation3(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NOTATION_NONE; - case XML_TOK_LITERAL: - state->handler = declClose; - state->role_none = XML_ROLE_NOTATION_NONE; - return XML_ROLE_NOTATION_SYSTEM_ID; - } - return common(state, tok); -} - -static int PTRCALL -notation4(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NOTATION_NONE; - case XML_TOK_LITERAL: - state->handler = declClose; - state->role_none = XML_ROLE_NOTATION_NONE; - return XML_ROLE_NOTATION_SYSTEM_ID; - case XML_TOK_DECL_CLOSE: - setTopLevel(state); - return XML_ROLE_NOTATION_NO_SYSTEM_ID; - } - return common(state, tok); -} - -static int PTRCALL -attlist0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = attlist1; - return XML_ROLE_ATTLIST_ELEMENT_NAME; - } - return common(state, tok); -} - -static int PTRCALL -attlist1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_DECL_CLOSE: - setTopLevel(state); - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = attlist2; - return XML_ROLE_ATTRIBUTE_NAME; - } - return common(state, tok); -} - -static int PTRCALL -attlist2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_NAME: - { - static const char * const types[] = { - KW_CDATA, - KW_ID, - KW_IDREF, - KW_IDREFS, - KW_ENTITY, - KW_ENTITIES, - KW_NMTOKEN, - KW_NMTOKENS, - }; - int i; - for (i = 0; i < (int)(sizeof(types)/sizeof(types[0])); i++) - if (XmlNameMatchesAscii(enc, ptr, end, types[i])) { - state->handler = attlist8; - return XML_ROLE_ATTRIBUTE_TYPE_CDATA + i; - } - } - if (XmlNameMatchesAscii(enc, ptr, end, KW_NOTATION)) { - state->handler = attlist5; - return XML_ROLE_ATTLIST_NONE; - } - break; - case XML_TOK_OPEN_PAREN: - state->handler = attlist3; - return XML_ROLE_ATTLIST_NONE; - } - return common(state, tok); -} - -static int PTRCALL -attlist3(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_NMTOKEN: - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = attlist4; - return XML_ROLE_ATTRIBUTE_ENUM_VALUE; - } - return common(state, tok); -} - -static int PTRCALL -attlist4(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_CLOSE_PAREN: - state->handler = attlist8; - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_OR: - state->handler = attlist3; - return XML_ROLE_ATTLIST_NONE; - } - return common(state, tok); -} - -static int PTRCALL -attlist5(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_OPEN_PAREN: - state->handler = attlist6; - return XML_ROLE_ATTLIST_NONE; - } - return common(state, tok); -} - -static int PTRCALL -attlist6(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_NAME: - state->handler = attlist7; - return XML_ROLE_ATTRIBUTE_NOTATION_VALUE; - } - return common(state, tok); -} - -static int PTRCALL -attlist7(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_CLOSE_PAREN: - state->handler = attlist8; - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_OR: - state->handler = attlist6; - return XML_ROLE_ATTLIST_NONE; - } - return common(state, tok); -} - -/* default value */ -static int PTRCALL -attlist8(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_POUND_NAME: - if (XmlNameMatchesAscii(enc, - ptr + MIN_BYTES_PER_CHAR(enc), - end, - KW_IMPLIED)) { - state->handler = attlist1; - return XML_ROLE_IMPLIED_ATTRIBUTE_VALUE; - } - if (XmlNameMatchesAscii(enc, - ptr + MIN_BYTES_PER_CHAR(enc), - end, - KW_REQUIRED)) { - state->handler = attlist1; - return XML_ROLE_REQUIRED_ATTRIBUTE_VALUE; - } - if (XmlNameMatchesAscii(enc, - ptr + MIN_BYTES_PER_CHAR(enc), - end, - KW_FIXED)) { - state->handler = attlist9; - return XML_ROLE_ATTLIST_NONE; - } - break; - case XML_TOK_LITERAL: - state->handler = attlist1; - return XML_ROLE_DEFAULT_ATTRIBUTE_VALUE; - } - return common(state, tok); -} - -static int PTRCALL -attlist9(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_LITERAL: - state->handler = attlist1; - return XML_ROLE_FIXED_ATTRIBUTE_VALUE; - } - return common(state, tok); -} - -static int PTRCALL -element0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ELEMENT_NONE; - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = element1; - return XML_ROLE_ELEMENT_NAME; - } - return common(state, tok); -} - -static int PTRCALL -element1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ELEMENT_NONE; - case XML_TOK_NAME: - if (XmlNameMatchesAscii(enc, ptr, end, KW_EMPTY)) { - state->handler = declClose; - state->role_none = XML_ROLE_ELEMENT_NONE; - return XML_ROLE_CONTENT_EMPTY; - } - if (XmlNameMatchesAscii(enc, ptr, end, KW_ANY)) { - state->handler = declClose; - state->role_none = XML_ROLE_ELEMENT_NONE; - return XML_ROLE_CONTENT_ANY; - } - break; - case XML_TOK_OPEN_PAREN: - state->handler = element2; - state->level = 1; - return XML_ROLE_GROUP_OPEN; - } - return common(state, tok); -} - -static int PTRCALL -element2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ELEMENT_NONE; - case XML_TOK_POUND_NAME: - if (XmlNameMatchesAscii(enc, - ptr + MIN_BYTES_PER_CHAR(enc), - end, - KW_PCDATA)) { - state->handler = element3; - return XML_ROLE_CONTENT_PCDATA; - } - break; - case XML_TOK_OPEN_PAREN: - state->level = 2; - state->handler = element6; - return XML_ROLE_GROUP_OPEN; - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT; - case XML_TOK_NAME_QUESTION: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT_OPT; - case XML_TOK_NAME_ASTERISK: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT_REP; - case XML_TOK_NAME_PLUS: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT_PLUS; - } - return common(state, tok); -} - -static int PTRCALL -element3(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ELEMENT_NONE; - case XML_TOK_CLOSE_PAREN: - state->handler = declClose; - state->role_none = XML_ROLE_ELEMENT_NONE; - return XML_ROLE_GROUP_CLOSE; - case XML_TOK_CLOSE_PAREN_ASTERISK: - state->handler = declClose; - state->role_none = XML_ROLE_ELEMENT_NONE; - return XML_ROLE_GROUP_CLOSE_REP; - case XML_TOK_OR: - state->handler = element4; - return XML_ROLE_ELEMENT_NONE; - } - return common(state, tok); -} - -static int PTRCALL -element4(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ELEMENT_NONE; - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = element5; - return XML_ROLE_CONTENT_ELEMENT; - } - return common(state, tok); -} - -static int PTRCALL -element5(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ELEMENT_NONE; - case XML_TOK_CLOSE_PAREN_ASTERISK: - state->handler = declClose; - state->role_none = XML_ROLE_ELEMENT_NONE; - return XML_ROLE_GROUP_CLOSE_REP; - case XML_TOK_OR: - state->handler = element4; - return XML_ROLE_ELEMENT_NONE; - } - return common(state, tok); -} - -static int PTRCALL -element6(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ELEMENT_NONE; - case XML_TOK_OPEN_PAREN: - state->level += 1; - return XML_ROLE_GROUP_OPEN; - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT; - case XML_TOK_NAME_QUESTION: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT_OPT; - case XML_TOK_NAME_ASTERISK: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT_REP; - case XML_TOK_NAME_PLUS: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT_PLUS; - } - return common(state, tok); -} - -static int PTRCALL -element7(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ELEMENT_NONE; - case XML_TOK_CLOSE_PAREN: - state->level -= 1; - if (state->level == 0) { - state->handler = declClose; - state->role_none = XML_ROLE_ELEMENT_NONE; - } - return XML_ROLE_GROUP_CLOSE; - case XML_TOK_CLOSE_PAREN_ASTERISK: - state->level -= 1; - if (state->level == 0) { - state->handler = declClose; - state->role_none = XML_ROLE_ELEMENT_NONE; - } - return XML_ROLE_GROUP_CLOSE_REP; - case XML_TOK_CLOSE_PAREN_QUESTION: - state->level -= 1; - if (state->level == 0) { - state->handler = declClose; - state->role_none = XML_ROLE_ELEMENT_NONE; - } - return XML_ROLE_GROUP_CLOSE_OPT; - case XML_TOK_CLOSE_PAREN_PLUS: - state->level -= 1; - if (state->level == 0) { - state->handler = declClose; - state->role_none = XML_ROLE_ELEMENT_NONE; - } - return XML_ROLE_GROUP_CLOSE_PLUS; - case XML_TOK_COMMA: - state->handler = element6; - return XML_ROLE_GROUP_SEQUENCE; - case XML_TOK_OR: - state->handler = element6; - return XML_ROLE_GROUP_CHOICE; - } - return common(state, tok); -} - -#ifdef XML_DTD - -static int PTRCALL -condSect0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_NAME: - if (XmlNameMatchesAscii(enc, ptr, end, KW_INCLUDE)) { - state->handler = condSect1; - return XML_ROLE_NONE; - } - if (XmlNameMatchesAscii(enc, ptr, end, KW_IGNORE)) { - state->handler = condSect2; - return XML_ROLE_NONE; - } - break; - } - return common(state, tok); -} - -static int PTRCALL -condSect1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_OPEN_BRACKET: - state->handler = externalSubset1; - state->includeLevel += 1; - return XML_ROLE_NONE; - } - return common(state, tok); -} - -static int PTRCALL -condSect2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_OPEN_BRACKET: - state->handler = externalSubset1; - return XML_ROLE_IGNORE_SECT; - } - return common(state, tok); -} - -#endif /* XML_DTD */ - -static int PTRCALL -declClose(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return state->role_none; - case XML_TOK_DECL_CLOSE: - setTopLevel(state); - return state->role_none; - } - return common(state, tok); -} - -static int PTRCALL -error(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - return XML_ROLE_NONE; -} - -static int FASTCALL -common(PROLOG_STATE *state, int tok) -{ -#ifdef XML_DTD - if (!state->documentEntity && tok == XML_TOK_PARAM_ENTITY_REF) - return XML_ROLE_INNER_PARAM_ENTITY_REF; -#endif - state->handler = error; - return XML_ROLE_ERROR; -} - -void -XmlPrologStateInit(PROLOG_STATE *state) -{ - state->handler = prolog0; -#ifdef XML_DTD - state->documentEntity = 1; - state->includeLevel = 0; - state->inEntityValue = 0; -#endif /* XML_DTD */ -} - -#ifdef XML_DTD - -void -XmlPrologStateInitExternalEntity(PROLOG_STATE *state) -{ - state->handler = externalSubset0; - state->documentEntity = 0; - state->includeLevel = 0; -} - -#endif /* XML_DTD */ diff --git a/platform/win32/msvc/external/expat/lib/xmlrole.h b/platform/win32/msvc/external/expat/lib/xmlrole.h deleted file mode 100644 index 4dd9f06f976..00000000000 --- a/platform/win32/msvc/external/expat/lib/xmlrole.h +++ /dev/null @@ -1,114 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#ifndef XmlRole_INCLUDED -#define XmlRole_INCLUDED 1 - -#ifdef __VMS -/* 0 1 2 3 0 1 2 3 - 1234567890123456789012345678901 1234567890123456789012345678901 */ -#define XmlPrologStateInitExternalEntity XmlPrologStateInitExternalEnt -#endif - -#include "xmltok.h" - -#ifdef __cplusplus -extern "C" { -#endif - -enum { - XML_ROLE_ERROR = -1, - XML_ROLE_NONE = 0, - XML_ROLE_XML_DECL, - XML_ROLE_INSTANCE_START, - XML_ROLE_DOCTYPE_NONE, - XML_ROLE_DOCTYPE_NAME, - XML_ROLE_DOCTYPE_SYSTEM_ID, - XML_ROLE_DOCTYPE_PUBLIC_ID, - XML_ROLE_DOCTYPE_INTERNAL_SUBSET, - XML_ROLE_DOCTYPE_CLOSE, - XML_ROLE_GENERAL_ENTITY_NAME, - XML_ROLE_PARAM_ENTITY_NAME, - XML_ROLE_ENTITY_NONE, - XML_ROLE_ENTITY_VALUE, - XML_ROLE_ENTITY_SYSTEM_ID, - XML_ROLE_ENTITY_PUBLIC_ID, - XML_ROLE_ENTITY_COMPLETE, - XML_ROLE_ENTITY_NOTATION_NAME, - XML_ROLE_NOTATION_NONE, - XML_ROLE_NOTATION_NAME, - XML_ROLE_NOTATION_SYSTEM_ID, - XML_ROLE_NOTATION_NO_SYSTEM_ID, - XML_ROLE_NOTATION_PUBLIC_ID, - XML_ROLE_ATTRIBUTE_NAME, - XML_ROLE_ATTRIBUTE_TYPE_CDATA, - XML_ROLE_ATTRIBUTE_TYPE_ID, - XML_ROLE_ATTRIBUTE_TYPE_IDREF, - XML_ROLE_ATTRIBUTE_TYPE_IDREFS, - XML_ROLE_ATTRIBUTE_TYPE_ENTITY, - XML_ROLE_ATTRIBUTE_TYPE_ENTITIES, - XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN, - XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS, - XML_ROLE_ATTRIBUTE_ENUM_VALUE, - XML_ROLE_ATTRIBUTE_NOTATION_VALUE, - XML_ROLE_ATTLIST_NONE, - XML_ROLE_ATTLIST_ELEMENT_NAME, - XML_ROLE_IMPLIED_ATTRIBUTE_VALUE, - XML_ROLE_REQUIRED_ATTRIBUTE_VALUE, - XML_ROLE_DEFAULT_ATTRIBUTE_VALUE, - XML_ROLE_FIXED_ATTRIBUTE_VALUE, - XML_ROLE_ELEMENT_NONE, - XML_ROLE_ELEMENT_NAME, - XML_ROLE_CONTENT_ANY, - XML_ROLE_CONTENT_EMPTY, - XML_ROLE_CONTENT_PCDATA, - XML_ROLE_GROUP_OPEN, - XML_ROLE_GROUP_CLOSE, - XML_ROLE_GROUP_CLOSE_REP, - XML_ROLE_GROUP_CLOSE_OPT, - XML_ROLE_GROUP_CLOSE_PLUS, - XML_ROLE_GROUP_CHOICE, - XML_ROLE_GROUP_SEQUENCE, - XML_ROLE_CONTENT_ELEMENT, - XML_ROLE_CONTENT_ELEMENT_REP, - XML_ROLE_CONTENT_ELEMENT_OPT, - XML_ROLE_CONTENT_ELEMENT_PLUS, - XML_ROLE_PI, - XML_ROLE_COMMENT, -#ifdef XML_DTD - XML_ROLE_TEXT_DECL, - XML_ROLE_IGNORE_SECT, - XML_ROLE_INNER_PARAM_ENTITY_REF, -#endif /* XML_DTD */ - XML_ROLE_PARAM_ENTITY_REF -}; - -typedef struct prolog_state { - int (PTRCALL *handler) (struct prolog_state *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc); - unsigned level; - int role_none; -#ifdef XML_DTD - unsigned includeLevel; - int documentEntity; - int inEntityValue; -#endif /* XML_DTD */ -} PROLOG_STATE; - -void XmlPrologStateInit(PROLOG_STATE *); -#ifdef XML_DTD -void XmlPrologStateInitExternalEntity(PROLOG_STATE *); -#endif /* XML_DTD */ - -#define XmlTokenRole(state, tok, ptr, end, enc) \ - (((state)->handler)(state, tok, ptr, end, enc)) - -#ifdef __cplusplus -} -#endif - -#endif /* not XmlRole_INCLUDED */ diff --git a/platform/win32/msvc/external/expat/lib/xmltok.c b/platform/win32/msvc/external/expat/lib/xmltok.c deleted file mode 100644 index bf09dfc72b9..00000000000 --- a/platform/win32/msvc/external/expat/lib/xmltok.c +++ /dev/null @@ -1,1651 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#include - -#ifdef COMPILED_FROM_DSP -#include "winconfig.h" -#elif defined(MACOS_CLASSIC) -#include "macconfig.h" -#elif defined(__amigaos__) -#include "amigaconfig.h" -#elif defined(__WATCOMC__) -#include "watcomconfig.h" -#else -#ifdef HAVE_EXPAT_CONFIG_H -#include -#endif -#endif /* ndef COMPILED_FROM_DSP */ - -#include "expat_external.h" -#include "internal.h" -#include "xmltok.h" -#include "nametab.h" - -#ifdef XML_DTD -#define IGNORE_SECTION_TOK_VTABLE , PREFIX(ignoreSectionTok) -#else -#define IGNORE_SECTION_TOK_VTABLE /* as nothing */ -#endif - -#define VTABLE1 \ - { PREFIX(prologTok), PREFIX(contentTok), \ - PREFIX(cdataSectionTok) IGNORE_SECTION_TOK_VTABLE }, \ - { PREFIX(attributeValueTok), PREFIX(entityValueTok) }, \ - PREFIX(sameName), \ - PREFIX(nameMatchesAscii), \ - PREFIX(nameLength), \ - PREFIX(skipS), \ - PREFIX(getAtts), \ - PREFIX(charRefNumber), \ - PREFIX(predefinedEntityName), \ - PREFIX(updatePosition), \ - PREFIX(isPublicId) - -#define VTABLE VTABLE1, PREFIX(toUtf8), PREFIX(toUtf16) - -#define UCS2_GET_NAMING(pages, hi, lo) \ - (namingBitmap[(pages[hi] << 3) + ((lo) >> 5)] & (1 << ((lo) & 0x1F))) - -/* A 2 byte UTF-8 representation splits the characters 11 bits between - the bottom 5 and 6 bits of the bytes. We need 8 bits to index into - pages, 3 bits to add to that index and 5 bits to generate the mask. -*/ -#define UTF8_GET_NAMING2(pages, byte) \ - (namingBitmap[((pages)[(((byte)[0]) >> 2) & 7] << 3) \ - + ((((byte)[0]) & 3) << 1) \ - + ((((byte)[1]) >> 5) & 1)] \ - & (1 << (((byte)[1]) & 0x1F))) - -/* A 3 byte UTF-8 representation splits the characters 16 bits between - the bottom 4, 6 and 6 bits of the bytes. We need 8 bits to index - into pages, 3 bits to add to that index and 5 bits to generate the - mask. -*/ -#define UTF8_GET_NAMING3(pages, byte) \ - (namingBitmap[((pages)[((((byte)[0]) & 0xF) << 4) \ - + ((((byte)[1]) >> 2) & 0xF)] \ - << 3) \ - + ((((byte)[1]) & 3) << 1) \ - + ((((byte)[2]) >> 5) & 1)] \ - & (1 << (((byte)[2]) & 0x1F))) - -#define UTF8_GET_NAMING(pages, p, n) \ - ((n) == 2 \ - ? UTF8_GET_NAMING2(pages, (const unsigned char *)(p)) \ - : ((n) == 3 \ - ? UTF8_GET_NAMING3(pages, (const unsigned char *)(p)) \ - : 0)) - -/* Detection of invalid UTF-8 sequences is based on Table 3.1B - of Unicode 3.2: http://www.unicode.org/unicode/reports/tr28/ - with the additional restriction of not allowing the Unicode - code points 0xFFFF and 0xFFFE (sequences EF,BF,BF and EF,BF,BE). - Implementation details: - (A & 0x80) == 0 means A < 0x80 - and - (A & 0xC0) == 0xC0 means A > 0xBF -*/ - -#define UTF8_INVALID2(p) \ - ((*p) < 0xC2 || ((p)[1] & 0x80) == 0 || ((p)[1] & 0xC0) == 0xC0) - -#define UTF8_INVALID3(p) \ - (((p)[2] & 0x80) == 0 \ - || \ - ((*p) == 0xEF && (p)[1] == 0xBF \ - ? \ - (p)[2] > 0xBD \ - : \ - ((p)[2] & 0xC0) == 0xC0) \ - || \ - ((*p) == 0xE0 \ - ? \ - (p)[1] < 0xA0 || ((p)[1] & 0xC0) == 0xC0 \ - : \ - ((p)[1] & 0x80) == 0 \ - || \ - ((*p) == 0xED ? (p)[1] > 0x9F : ((p)[1] & 0xC0) == 0xC0))) - -#define UTF8_INVALID4(p) \ - (((p)[3] & 0x80) == 0 || ((p)[3] & 0xC0) == 0xC0 \ - || \ - ((p)[2] & 0x80) == 0 || ((p)[2] & 0xC0) == 0xC0 \ - || \ - ((*p) == 0xF0 \ - ? \ - (p)[1] < 0x90 || ((p)[1] & 0xC0) == 0xC0 \ - : \ - ((p)[1] & 0x80) == 0 \ - || \ - ((*p) == 0xF4 ? (p)[1] > 0x8F : ((p)[1] & 0xC0) == 0xC0))) - -static int PTRFASTCALL -isNever(const ENCODING *enc, const char *p) -{ - return 0; -} - -static int PTRFASTCALL -utf8_isName2(const ENCODING *enc, const char *p) -{ - return UTF8_GET_NAMING2(namePages, (const unsigned char *)p); -} - -static int PTRFASTCALL -utf8_isName3(const ENCODING *enc, const char *p) -{ - return UTF8_GET_NAMING3(namePages, (const unsigned char *)p); -} - -#define utf8_isName4 isNever - -static int PTRFASTCALL -utf8_isNmstrt2(const ENCODING *enc, const char *p) -{ - return UTF8_GET_NAMING2(nmstrtPages, (const unsigned char *)p); -} - -static int PTRFASTCALL -utf8_isNmstrt3(const ENCODING *enc, const char *p) -{ - return UTF8_GET_NAMING3(nmstrtPages, (const unsigned char *)p); -} - -#define utf8_isNmstrt4 isNever - -static int PTRFASTCALL -utf8_isInvalid2(const ENCODING *enc, const char *p) -{ - return UTF8_INVALID2((const unsigned char *)p); -} - -static int PTRFASTCALL -utf8_isInvalid3(const ENCODING *enc, const char *p) -{ - return UTF8_INVALID3((const unsigned char *)p); -} - -static int PTRFASTCALL -utf8_isInvalid4(const ENCODING *enc, const char *p) -{ - return UTF8_INVALID4((const unsigned char *)p); -} - -struct normal_encoding { - ENCODING enc; - unsigned char type[256]; -#ifdef XML_MIN_SIZE - int (PTRFASTCALL *byteType)(const ENCODING *, const char *); - int (PTRFASTCALL *isNameMin)(const ENCODING *, const char *); - int (PTRFASTCALL *isNmstrtMin)(const ENCODING *, const char *); - int (PTRFASTCALL *byteToAscii)(const ENCODING *, const char *); - int (PTRCALL *charMatches)(const ENCODING *, const char *, int); -#endif /* XML_MIN_SIZE */ - int (PTRFASTCALL *isName2)(const ENCODING *, const char *); - int (PTRFASTCALL *isName3)(const ENCODING *, const char *); - int (PTRFASTCALL *isName4)(const ENCODING *, const char *); - int (PTRFASTCALL *isNmstrt2)(const ENCODING *, const char *); - int (PTRFASTCALL *isNmstrt3)(const ENCODING *, const char *); - int (PTRFASTCALL *isNmstrt4)(const ENCODING *, const char *); - int (PTRFASTCALL *isInvalid2)(const ENCODING *, const char *); - int (PTRFASTCALL *isInvalid3)(const ENCODING *, const char *); - int (PTRFASTCALL *isInvalid4)(const ENCODING *, const char *); -}; - -#define AS_NORMAL_ENCODING(enc) ((const struct normal_encoding *) (enc)) - -#ifdef XML_MIN_SIZE - -#define STANDARD_VTABLE(E) \ - E ## byteType, \ - E ## isNameMin, \ - E ## isNmstrtMin, \ - E ## byteToAscii, \ - E ## charMatches, - -#else - -#define STANDARD_VTABLE(E) /* as nothing */ - -#endif - -#define NORMAL_VTABLE(E) \ - E ## isName2, \ - E ## isName3, \ - E ## isName4, \ - E ## isNmstrt2, \ - E ## isNmstrt3, \ - E ## isNmstrt4, \ - E ## isInvalid2, \ - E ## isInvalid3, \ - E ## isInvalid4 - -static int FASTCALL checkCharRefNumber(int); - -#include "xmltok_impl.h" -#include "ascii.h" - -#ifdef XML_MIN_SIZE -#define sb_isNameMin isNever -#define sb_isNmstrtMin isNever -#endif - -#ifdef XML_MIN_SIZE -#define MINBPC(enc) ((enc)->minBytesPerChar) -#else -/* minimum bytes per character */ -#define MINBPC(enc) 1 -#endif - -#define SB_BYTE_TYPE(enc, p) \ - (((struct normal_encoding *)(enc))->type[(unsigned char)*(p)]) - -#ifdef XML_MIN_SIZE -static int PTRFASTCALL -sb_byteType(const ENCODING *enc, const char *p) -{ - return SB_BYTE_TYPE(enc, p); -} -#define BYTE_TYPE(enc, p) \ - (AS_NORMAL_ENCODING(enc)->byteType(enc, p)) -#else -#define BYTE_TYPE(enc, p) SB_BYTE_TYPE(enc, p) -#endif - -#ifdef XML_MIN_SIZE -#define BYTE_TO_ASCII(enc, p) \ - (AS_NORMAL_ENCODING(enc)->byteToAscii(enc, p)) -static int PTRFASTCALL -sb_byteToAscii(const ENCODING *enc, const char *p) -{ - return *p; -} -#else -#define BYTE_TO_ASCII(enc, p) (*(p)) -#endif - -#define IS_NAME_CHAR(enc, p, n) \ - (AS_NORMAL_ENCODING(enc)->isName ## n(enc, p)) -#define IS_NMSTRT_CHAR(enc, p, n) \ - (AS_NORMAL_ENCODING(enc)->isNmstrt ## n(enc, p)) -#define IS_INVALID_CHAR(enc, p, n) \ - (AS_NORMAL_ENCODING(enc)->isInvalid ## n(enc, p)) - -#ifdef XML_MIN_SIZE -#define IS_NAME_CHAR_MINBPC(enc, p) \ - (AS_NORMAL_ENCODING(enc)->isNameMin(enc, p)) -#define IS_NMSTRT_CHAR_MINBPC(enc, p) \ - (AS_NORMAL_ENCODING(enc)->isNmstrtMin(enc, p)) -#else -#define IS_NAME_CHAR_MINBPC(enc, p) (0) -#define IS_NMSTRT_CHAR_MINBPC(enc, p) (0) -#endif - -#ifdef XML_MIN_SIZE -#define CHAR_MATCHES(enc, p, c) \ - (AS_NORMAL_ENCODING(enc)->charMatches(enc, p, c)) -static int PTRCALL -sb_charMatches(const ENCODING *enc, const char *p, int c) -{ - return *p == c; -} -#else -/* c is an ASCII character */ -#define CHAR_MATCHES(enc, p, c) (*(p) == c) -#endif - -#define PREFIX(ident) normal_ ## ident -#define XML_TOK_IMPL_C -#include "xmltok_impl.c" -#undef XML_TOK_IMPL_C - -#undef MINBPC -#undef BYTE_TYPE -#undef BYTE_TO_ASCII -#undef CHAR_MATCHES -#undef IS_NAME_CHAR -#undef IS_NAME_CHAR_MINBPC -#undef IS_NMSTRT_CHAR -#undef IS_NMSTRT_CHAR_MINBPC -#undef IS_INVALID_CHAR - -enum { /* UTF8_cvalN is value of masked first byte of N byte sequence */ - UTF8_cval1 = 0x00, - UTF8_cval2 = 0xc0, - UTF8_cval3 = 0xe0, - UTF8_cval4 = 0xf0 -}; - -static void PTRCALL -utf8_toUtf8(const ENCODING *enc, - const char **fromP, const char *fromLim, - char **toP, const char *toLim) -{ - char *to; - const char *from; - if (fromLim - *fromP > toLim - *toP) { - /* Avoid copying partial characters. */ - for (fromLim = *fromP + (toLim - *toP); fromLim > *fromP; fromLim--) - if (((unsigned char)fromLim[-1] & 0xc0) != 0x80) - break; - } - for (to = *toP, from = *fromP; from != fromLim; from++, to++) - *to = *from; - *fromP = from; - *toP = to; -} - -static void PTRCALL -utf8_toUtf16(const ENCODING *enc, - const char **fromP, const char *fromLim, - unsigned short **toP, const unsigned short *toLim) -{ - unsigned short *to = *toP; - const char *from = *fromP; - while (from != fromLim && to != toLim) { - switch (((struct normal_encoding *)enc)->type[(unsigned char)*from]) { - case BT_LEAD2: - *to++ = (unsigned short)(((from[0] & 0x1f) << 6) | (from[1] & 0x3f)); - from += 2; - break; - case BT_LEAD3: - *to++ = (unsigned short)(((from[0] & 0xf) << 12) - | ((from[1] & 0x3f) << 6) | (from[2] & 0x3f)); - from += 3; - break; - case BT_LEAD4: - { - unsigned long n; - if (to + 1 == toLim) - goto after; - n = ((from[0] & 0x7) << 18) | ((from[1] & 0x3f) << 12) - | ((from[2] & 0x3f) << 6) | (from[3] & 0x3f); - n -= 0x10000; - to[0] = (unsigned short)((n >> 10) | 0xD800); - to[1] = (unsigned short)((n & 0x3FF) | 0xDC00); - to += 2; - from += 4; - } - break; - default: - *to++ = *from++; - break; - } - } -after: - *fromP = from; - *toP = to; -} - -#ifdef XML_NS -static const struct normal_encoding utf8_encoding_ns = { - { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, - { -#include "asciitab.h" -#include "utf8tab.h" - }, - STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) -}; -#endif - -static const struct normal_encoding utf8_encoding = { - { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, - { -#define BT_COLON BT_NMSTRT -#include "asciitab.h" -#undef BT_COLON -#include "utf8tab.h" - }, - STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) -}; - -#ifdef XML_NS - -static const struct normal_encoding internal_utf8_encoding_ns = { - { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, - { -#include "iasciitab.h" -#include "utf8tab.h" - }, - STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) -}; - -#endif - -static const struct normal_encoding internal_utf8_encoding = { - { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, - { -#define BT_COLON BT_NMSTRT -#include "iasciitab.h" -#undef BT_COLON -#include "utf8tab.h" - }, - STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) -}; - -static void PTRCALL -latin1_toUtf8(const ENCODING *enc, - const char **fromP, const char *fromLim, - char **toP, const char *toLim) -{ - for (;;) { - unsigned char c; - if (*fromP == fromLim) - break; - c = (unsigned char)**fromP; - if (c & 0x80) { - if (toLim - *toP < 2) - break; - *(*toP)++ = (char)((c >> 6) | UTF8_cval2); - *(*toP)++ = (char)((c & 0x3f) | 0x80); - (*fromP)++; - } - else { - if (*toP == toLim) - break; - *(*toP)++ = *(*fromP)++; - } - } -} - -static void PTRCALL -latin1_toUtf16(const ENCODING *enc, - const char **fromP, const char *fromLim, - unsigned short **toP, const unsigned short *toLim) -{ - while (*fromP != fromLim && *toP != toLim) - *(*toP)++ = (unsigned char)*(*fromP)++; -} - -#ifdef XML_NS - -static const struct normal_encoding latin1_encoding_ns = { - { VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 }, - { -#include "asciitab.h" -#include "latin1tab.h" - }, - STANDARD_VTABLE(sb_) -}; - -#endif - -static const struct normal_encoding latin1_encoding = { - { VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 }, - { -#define BT_COLON BT_NMSTRT -#include "asciitab.h" -#undef BT_COLON -#include "latin1tab.h" - }, - STANDARD_VTABLE(sb_) -}; - -static void PTRCALL -ascii_toUtf8(const ENCODING *enc, - const char **fromP, const char *fromLim, - char **toP, const char *toLim) -{ - while (*fromP != fromLim && *toP != toLim) - *(*toP)++ = *(*fromP)++; -} - -#ifdef XML_NS - -static const struct normal_encoding ascii_encoding_ns = { - { VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 }, - { -#include "asciitab.h" -/* BT_NONXML == 0 */ - }, - STANDARD_VTABLE(sb_) -}; - -#endif - -static const struct normal_encoding ascii_encoding = { - { VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 }, - { -#define BT_COLON BT_NMSTRT -#include "asciitab.h" -#undef BT_COLON -/* BT_NONXML == 0 */ - }, - STANDARD_VTABLE(sb_) -}; - -static int PTRFASTCALL -unicode_byte_type(char hi, char lo) -{ - switch ((unsigned char)hi) { - case 0xD8: case 0xD9: case 0xDA: case 0xDB: - return BT_LEAD4; - case 0xDC: case 0xDD: case 0xDE: case 0xDF: - return BT_TRAIL; - case 0xFF: - switch ((unsigned char)lo) { - case 0xFF: - case 0xFE: - return BT_NONXML; - } - break; - } - return BT_NONASCII; -} - -#define DEFINE_UTF16_TO_UTF8(E) \ -static void PTRCALL \ -E ## toUtf8(const ENCODING *enc, \ - const char **fromP, const char *fromLim, \ - char **toP, const char *toLim) \ -{ \ - const char *from; \ - for (from = *fromP; from != fromLim; from += 2) { \ - int plane; \ - unsigned char lo2; \ - unsigned char lo = GET_LO(from); \ - unsigned char hi = GET_HI(from); \ - switch (hi) { \ - case 0: \ - if (lo < 0x80) { \ - if (*toP == toLim) { \ - *fromP = from; \ - return; \ - } \ - *(*toP)++ = lo; \ - break; \ - } \ - /* fall through */ \ - case 0x1: case 0x2: case 0x3: \ - case 0x4: case 0x5: case 0x6: case 0x7: \ - if (toLim - *toP < 2) { \ - *fromP = from; \ - return; \ - } \ - *(*toP)++ = ((lo >> 6) | (hi << 2) | UTF8_cval2); \ - *(*toP)++ = ((lo & 0x3f) | 0x80); \ - break; \ - default: \ - if (toLim - *toP < 3) { \ - *fromP = from; \ - return; \ - } \ - /* 16 bits divided 4, 6, 6 amongst 3 bytes */ \ - *(*toP)++ = ((hi >> 4) | UTF8_cval3); \ - *(*toP)++ = (((hi & 0xf) << 2) | (lo >> 6) | 0x80); \ - *(*toP)++ = ((lo & 0x3f) | 0x80); \ - break; \ - case 0xD8: case 0xD9: case 0xDA: case 0xDB: \ - if (toLim - *toP < 4) { \ - *fromP = from; \ - return; \ - } \ - plane = (((hi & 0x3) << 2) | ((lo >> 6) & 0x3)) + 1; \ - *(*toP)++ = ((plane >> 2) | UTF8_cval4); \ - *(*toP)++ = (((lo >> 2) & 0xF) | ((plane & 0x3) << 4) | 0x80); \ - from += 2; \ - lo2 = GET_LO(from); \ - *(*toP)++ = (((lo & 0x3) << 4) \ - | ((GET_HI(from) & 0x3) << 2) \ - | (lo2 >> 6) \ - | 0x80); \ - *(*toP)++ = ((lo2 & 0x3f) | 0x80); \ - break; \ - } \ - } \ - *fromP = from; \ -} - -#define DEFINE_UTF16_TO_UTF16(E) \ -static void PTRCALL \ -E ## toUtf16(const ENCODING *enc, \ - const char **fromP, const char *fromLim, \ - unsigned short **toP, const unsigned short *toLim) \ -{ \ - /* Avoid copying first half only of surrogate */ \ - if (fromLim - *fromP > ((toLim - *toP) << 1) \ - && (GET_HI(fromLim - 2) & 0xF8) == 0xD8) \ - fromLim -= 2; \ - for (; *fromP != fromLim && *toP != toLim; *fromP += 2) \ - *(*toP)++ = (GET_HI(*fromP) << 8) | GET_LO(*fromP); \ -} - -#define SET2(ptr, ch) \ - (((ptr)[0] = ((ch) & 0xff)), ((ptr)[1] = ((ch) >> 8))) -#define GET_LO(ptr) ((unsigned char)(ptr)[0]) -#define GET_HI(ptr) ((unsigned char)(ptr)[1]) - -DEFINE_UTF16_TO_UTF8(little2_) -DEFINE_UTF16_TO_UTF16(little2_) - -#undef SET2 -#undef GET_LO -#undef GET_HI - -#define SET2(ptr, ch) \ - (((ptr)[0] = ((ch) >> 8)), ((ptr)[1] = ((ch) & 0xFF))) -#define GET_LO(ptr) ((unsigned char)(ptr)[1]) -#define GET_HI(ptr) ((unsigned char)(ptr)[0]) - -DEFINE_UTF16_TO_UTF8(big2_) -DEFINE_UTF16_TO_UTF16(big2_) - -#undef SET2 -#undef GET_LO -#undef GET_HI - -#define LITTLE2_BYTE_TYPE(enc, p) \ - ((p)[1] == 0 \ - ? ((struct normal_encoding *)(enc))->type[(unsigned char)*(p)] \ - : unicode_byte_type((p)[1], (p)[0])) -#define LITTLE2_BYTE_TO_ASCII(enc, p) ((p)[1] == 0 ? (p)[0] : -1) -#define LITTLE2_CHAR_MATCHES(enc, p, c) ((p)[1] == 0 && (p)[0] == c) -#define LITTLE2_IS_NAME_CHAR_MINBPC(enc, p) \ - UCS2_GET_NAMING(namePages, (unsigned char)p[1], (unsigned char)p[0]) -#define LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p) \ - UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[1], (unsigned char)p[0]) - -#ifdef XML_MIN_SIZE - -static int PTRFASTCALL -little2_byteType(const ENCODING *enc, const char *p) -{ - return LITTLE2_BYTE_TYPE(enc, p); -} - -static int PTRFASTCALL -little2_byteToAscii(const ENCODING *enc, const char *p) -{ - return LITTLE2_BYTE_TO_ASCII(enc, p); -} - -static int PTRCALL -little2_charMatches(const ENCODING *enc, const char *p, int c) -{ - return LITTLE2_CHAR_MATCHES(enc, p, c); -} - -static int PTRFASTCALL -little2_isNameMin(const ENCODING *enc, const char *p) -{ - return LITTLE2_IS_NAME_CHAR_MINBPC(enc, p); -} - -static int PTRFASTCALL -little2_isNmstrtMin(const ENCODING *enc, const char *p) -{ - return LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p); -} - -#undef VTABLE -#define VTABLE VTABLE1, little2_toUtf8, little2_toUtf16 - -#else /* not XML_MIN_SIZE */ - -#undef PREFIX -#define PREFIX(ident) little2_ ## ident -#define MINBPC(enc) 2 -/* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */ -#define BYTE_TYPE(enc, p) LITTLE2_BYTE_TYPE(enc, p) -#define BYTE_TO_ASCII(enc, p) LITTLE2_BYTE_TO_ASCII(enc, p) -#define CHAR_MATCHES(enc, p, c) LITTLE2_CHAR_MATCHES(enc, p, c) -#define IS_NAME_CHAR(enc, p, n) 0 -#define IS_NAME_CHAR_MINBPC(enc, p) LITTLE2_IS_NAME_CHAR_MINBPC(enc, p) -#define IS_NMSTRT_CHAR(enc, p, n) (0) -#define IS_NMSTRT_CHAR_MINBPC(enc, p) LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p) - -#define XML_TOK_IMPL_C -#include "xmltok_impl.c" -#undef XML_TOK_IMPL_C - -#undef MINBPC -#undef BYTE_TYPE -#undef BYTE_TO_ASCII -#undef CHAR_MATCHES -#undef IS_NAME_CHAR -#undef IS_NAME_CHAR_MINBPC -#undef IS_NMSTRT_CHAR -#undef IS_NMSTRT_CHAR_MINBPC -#undef IS_INVALID_CHAR - -#endif /* not XML_MIN_SIZE */ - -#ifdef XML_NS - -static const struct normal_encoding little2_encoding_ns = { - { VTABLE, 2, 0, -#if BYTEORDER == 1234 - 1 -#else - 0 -#endif - }, - { -#include "asciitab.h" -#include "latin1tab.h" - }, - STANDARD_VTABLE(little2_) -}; - -#endif - -static const struct normal_encoding little2_encoding = { - { VTABLE, 2, 0, -#if BYTEORDER == 1234 - 1 -#else - 0 -#endif - }, - { -#define BT_COLON BT_NMSTRT -#include "asciitab.h" -#undef BT_COLON -#include "latin1tab.h" - }, - STANDARD_VTABLE(little2_) -}; - -#if BYTEORDER != 4321 - -#ifdef XML_NS - -static const struct normal_encoding internal_little2_encoding_ns = { - { VTABLE, 2, 0, 1 }, - { -#include "iasciitab.h" -#include "latin1tab.h" - }, - STANDARD_VTABLE(little2_) -}; - -#endif - -static const struct normal_encoding internal_little2_encoding = { - { VTABLE, 2, 0, 1 }, - { -#define BT_COLON BT_NMSTRT -#include "iasciitab.h" -#undef BT_COLON -#include "latin1tab.h" - }, - STANDARD_VTABLE(little2_) -}; - -#endif - - -#define BIG2_BYTE_TYPE(enc, p) \ - ((p)[0] == 0 \ - ? ((struct normal_encoding *)(enc))->type[(unsigned char)(p)[1]] \ - : unicode_byte_type((p)[0], (p)[1])) -#define BIG2_BYTE_TO_ASCII(enc, p) ((p)[0] == 0 ? (p)[1] : -1) -#define BIG2_CHAR_MATCHES(enc, p, c) ((p)[0] == 0 && (p)[1] == c) -#define BIG2_IS_NAME_CHAR_MINBPC(enc, p) \ - UCS2_GET_NAMING(namePages, (unsigned char)p[0], (unsigned char)p[1]) -#define BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p) \ - UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[0], (unsigned char)p[1]) - -#ifdef XML_MIN_SIZE - -static int PTRFASTCALL -big2_byteType(const ENCODING *enc, const char *p) -{ - return BIG2_BYTE_TYPE(enc, p); -} - -static int PTRFASTCALL -big2_byteToAscii(const ENCODING *enc, const char *p) -{ - return BIG2_BYTE_TO_ASCII(enc, p); -} - -static int PTRCALL -big2_charMatches(const ENCODING *enc, const char *p, int c) -{ - return BIG2_CHAR_MATCHES(enc, p, c); -} - -static int PTRFASTCALL -big2_isNameMin(const ENCODING *enc, const char *p) -{ - return BIG2_IS_NAME_CHAR_MINBPC(enc, p); -} - -static int PTRFASTCALL -big2_isNmstrtMin(const ENCODING *enc, const char *p) -{ - return BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p); -} - -#undef VTABLE -#define VTABLE VTABLE1, big2_toUtf8, big2_toUtf16 - -#else /* not XML_MIN_SIZE */ - -#undef PREFIX -#define PREFIX(ident) big2_ ## ident -#define MINBPC(enc) 2 -/* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */ -#define BYTE_TYPE(enc, p) BIG2_BYTE_TYPE(enc, p) -#define BYTE_TO_ASCII(enc, p) BIG2_BYTE_TO_ASCII(enc, p) -#define CHAR_MATCHES(enc, p, c) BIG2_CHAR_MATCHES(enc, p, c) -#define IS_NAME_CHAR(enc, p, n) 0 -#define IS_NAME_CHAR_MINBPC(enc, p) BIG2_IS_NAME_CHAR_MINBPC(enc, p) -#define IS_NMSTRT_CHAR(enc, p, n) (0) -#define IS_NMSTRT_CHAR_MINBPC(enc, p) BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p) - -#define XML_TOK_IMPL_C -#include "xmltok_impl.c" -#undef XML_TOK_IMPL_C - -#undef MINBPC -#undef BYTE_TYPE -#undef BYTE_TO_ASCII -#undef CHAR_MATCHES -#undef IS_NAME_CHAR -#undef IS_NAME_CHAR_MINBPC -#undef IS_NMSTRT_CHAR -#undef IS_NMSTRT_CHAR_MINBPC -#undef IS_INVALID_CHAR - -#endif /* not XML_MIN_SIZE */ - -#ifdef XML_NS - -static const struct normal_encoding big2_encoding_ns = { - { VTABLE, 2, 0, -#if BYTEORDER == 4321 - 1 -#else - 0 -#endif - }, - { -#include "asciitab.h" -#include "latin1tab.h" - }, - STANDARD_VTABLE(big2_) -}; - -#endif - -static const struct normal_encoding big2_encoding = { - { VTABLE, 2, 0, -#if BYTEORDER == 4321 - 1 -#else - 0 -#endif - }, - { -#define BT_COLON BT_NMSTRT -#include "asciitab.h" -#undef BT_COLON -#include "latin1tab.h" - }, - STANDARD_VTABLE(big2_) -}; - -#if BYTEORDER != 1234 - -#ifdef XML_NS - -static const struct normal_encoding internal_big2_encoding_ns = { - { VTABLE, 2, 0, 1 }, - { -#include "iasciitab.h" -#include "latin1tab.h" - }, - STANDARD_VTABLE(big2_) -}; - -#endif - -static const struct normal_encoding internal_big2_encoding = { - { VTABLE, 2, 0, 1 }, - { -#define BT_COLON BT_NMSTRT -#include "iasciitab.h" -#undef BT_COLON -#include "latin1tab.h" - }, - STANDARD_VTABLE(big2_) -}; - -#endif - -#undef PREFIX - -static int FASTCALL -streqci(const char *s1, const char *s2) -{ - for (;;) { - char c1 = *s1++; - char c2 = *s2++; - if (ASCII_a <= c1 && c1 <= ASCII_z) - c1 += ASCII_A - ASCII_a; - if (ASCII_a <= c2 && c2 <= ASCII_z) - c2 += ASCII_A - ASCII_a; - if (c1 != c2) - return 0; - if (!c1) - break; - } - return 1; -} - -static void PTRCALL -initUpdatePosition(const ENCODING *enc, const char *ptr, - const char *end, POSITION *pos) -{ - normal_updatePosition(&utf8_encoding.enc, ptr, end, pos); -} - -static int -toAscii(const ENCODING *enc, const char *ptr, const char *end) -{ - char buf[1]; - char *p = buf; - XmlUtf8Convert(enc, &ptr, end, &p, p + 1); - if (p == buf) - return -1; - else - return buf[0]; -} - -static int FASTCALL -isSpace(int c) -{ - switch (c) { - case 0x20: - case 0xD: - case 0xA: - case 0x9: - return 1; - } - return 0; -} - -/* Return 1 if there's just optional white space or there's an S - followed by name=val. -*/ -static int -parsePseudoAttribute(const ENCODING *enc, - const char *ptr, - const char *end, - const char **namePtr, - const char **nameEndPtr, - const char **valPtr, - const char **nextTokPtr) -{ - int c; - char open; - if (ptr == end) { - *namePtr = NULL; - return 1; - } - if (!isSpace(toAscii(enc, ptr, end))) { - *nextTokPtr = ptr; - return 0; - } - do { - ptr += enc->minBytesPerChar; - } while (isSpace(toAscii(enc, ptr, end))); - if (ptr == end) { - *namePtr = NULL; - return 1; - } - *namePtr = ptr; - for (;;) { - c = toAscii(enc, ptr, end); - if (c == -1) { - *nextTokPtr = ptr; - return 0; - } - if (c == ASCII_EQUALS) { - *nameEndPtr = ptr; - break; - } - if (isSpace(c)) { - *nameEndPtr = ptr; - do { - ptr += enc->minBytesPerChar; - } while (isSpace(c = toAscii(enc, ptr, end))); - if (c != ASCII_EQUALS) { - *nextTokPtr = ptr; - return 0; - } - break; - } - ptr += enc->minBytesPerChar; - } - if (ptr == *namePtr) { - *nextTokPtr = ptr; - return 0; - } - ptr += enc->minBytesPerChar; - c = toAscii(enc, ptr, end); - while (isSpace(c)) { - ptr += enc->minBytesPerChar; - c = toAscii(enc, ptr, end); - } - if (c != ASCII_QUOT && c != ASCII_APOS) { - *nextTokPtr = ptr; - return 0; - } - open = (char)c; - ptr += enc->minBytesPerChar; - *valPtr = ptr; - for (;; ptr += enc->minBytesPerChar) { - c = toAscii(enc, ptr, end); - if (c == open) - break; - if (!(ASCII_a <= c && c <= ASCII_z) - && !(ASCII_A <= c && c <= ASCII_Z) - && !(ASCII_0 <= c && c <= ASCII_9) - && c != ASCII_PERIOD - && c != ASCII_MINUS - && c != ASCII_UNDERSCORE) { - *nextTokPtr = ptr; - return 0; - } - } - *nextTokPtr = ptr + enc->minBytesPerChar; - return 1; -} - -static const char KW_version[] = { - ASCII_v, ASCII_e, ASCII_r, ASCII_s, ASCII_i, ASCII_o, ASCII_n, '\0' -}; - -static const char KW_encoding[] = { - ASCII_e, ASCII_n, ASCII_c, ASCII_o, ASCII_d, ASCII_i, ASCII_n, ASCII_g, '\0' -}; - -static const char KW_standalone[] = { - ASCII_s, ASCII_t, ASCII_a, ASCII_n, ASCII_d, ASCII_a, ASCII_l, ASCII_o, - ASCII_n, ASCII_e, '\0' -}; - -static const char KW_yes[] = { - ASCII_y, ASCII_e, ASCII_s, '\0' -}; - -static const char KW_no[] = { - ASCII_n, ASCII_o, '\0' -}; - -static int -doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *, - const char *, - const char *), - int isGeneralTextEntity, - const ENCODING *enc, - const char *ptr, - const char *end, - const char **badPtr, - const char **versionPtr, - const char **versionEndPtr, - const char **encodingName, - const ENCODING **encoding, - int *standalone) -{ - const char *val = NULL; - const char *name = NULL; - const char *nameEnd = NULL; - ptr += 5 * enc->minBytesPerChar; - end -= 2 * enc->minBytesPerChar; - if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr) - || !name) { - *badPtr = ptr; - return 0; - } - if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_version)) { - if (!isGeneralTextEntity) { - *badPtr = name; - return 0; - } - } - else { - if (versionPtr) - *versionPtr = val; - if (versionEndPtr) - *versionEndPtr = ptr; - if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) { - *badPtr = ptr; - return 0; - } - if (!name) { - if (isGeneralTextEntity) { - /* a TextDecl must have an EncodingDecl */ - *badPtr = ptr; - return 0; - } - return 1; - } - } - if (XmlNameMatchesAscii(enc, name, nameEnd, KW_encoding)) { - int c = toAscii(enc, val, end); - if (!(ASCII_a <= c && c <= ASCII_z) && !(ASCII_A <= c && c <= ASCII_Z)) { - *badPtr = val; - return 0; - } - if (encodingName) - *encodingName = val; - if (encoding) - *encoding = encodingFinder(enc, val, ptr - enc->minBytesPerChar); - if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) { - *badPtr = ptr; - return 0; - } - if (!name) - return 1; - } - if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_standalone) - || isGeneralTextEntity) { - *badPtr = name; - return 0; - } - if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_yes)) { - if (standalone) - *standalone = 1; - } - else if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_no)) { - if (standalone) - *standalone = 0; - } - else { - *badPtr = val; - return 0; - } - while (isSpace(toAscii(enc, ptr, end))) - ptr += enc->minBytesPerChar; - if (ptr != end) { - *badPtr = ptr; - return 0; - } - return 1; -} - -static int FASTCALL -checkCharRefNumber(int result) -{ - switch (result >> 8) { - case 0xD8: case 0xD9: case 0xDA: case 0xDB: - case 0xDC: case 0xDD: case 0xDE: case 0xDF: - return -1; - case 0: - if (latin1_encoding.type[result] == BT_NONXML) - return -1; - break; - case 0xFF: - if (result == 0xFFFE || result == 0xFFFF) - return -1; - break; - } - return result; -} - -int FASTCALL -XmlUtf8Encode(int c, char *buf) -{ - enum { - /* minN is minimum legal resulting value for N byte sequence */ - min2 = 0x80, - min3 = 0x800, - min4 = 0x10000 - }; - - if (c < 0) - return 0; - if (c < min2) { - buf[0] = (char)(c | UTF8_cval1); - return 1; - } - if (c < min3) { - buf[0] = (char)((c >> 6) | UTF8_cval2); - buf[1] = (char)((c & 0x3f) | 0x80); - return 2; - } - if (c < min4) { - buf[0] = (char)((c >> 12) | UTF8_cval3); - buf[1] = (char)(((c >> 6) & 0x3f) | 0x80); - buf[2] = (char)((c & 0x3f) | 0x80); - return 3; - } - if (c < 0x110000) { - buf[0] = (char)((c >> 18) | UTF8_cval4); - buf[1] = (char)(((c >> 12) & 0x3f) | 0x80); - buf[2] = (char)(((c >> 6) & 0x3f) | 0x80); - buf[3] = (char)((c & 0x3f) | 0x80); - return 4; - } - return 0; -} - -int FASTCALL -XmlUtf16Encode(int charNum, unsigned short *buf) -{ - if (charNum < 0) - return 0; - if (charNum < 0x10000) { - buf[0] = (unsigned short)charNum; - return 1; - } - if (charNum < 0x110000) { - charNum -= 0x10000; - buf[0] = (unsigned short)((charNum >> 10) + 0xD800); - buf[1] = (unsigned short)((charNum & 0x3FF) + 0xDC00); - return 2; - } - return 0; -} - -struct unknown_encoding { - struct normal_encoding normal; - CONVERTER convert; - void *userData; - unsigned short utf16[256]; - char utf8[256][4]; -}; - -#define AS_UNKNOWN_ENCODING(enc) ((const struct unknown_encoding *) (enc)) - -int -XmlSizeOfUnknownEncoding(void) -{ - return sizeof(struct unknown_encoding); -} - -static int PTRFASTCALL -unknown_isName(const ENCODING *enc, const char *p) -{ - const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); - int c = uenc->convert(uenc->userData, p); - if (c & ~0xFFFF) - return 0; - return UCS2_GET_NAMING(namePages, c >> 8, c & 0xFF); -} - -static int PTRFASTCALL -unknown_isNmstrt(const ENCODING *enc, const char *p) -{ - const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); - int c = uenc->convert(uenc->userData, p); - if (c & ~0xFFFF) - return 0; - return UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xFF); -} - -static int PTRFASTCALL -unknown_isInvalid(const ENCODING *enc, const char *p) -{ - const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); - int c = uenc->convert(uenc->userData, p); - return (c & ~0xFFFF) || checkCharRefNumber(c) < 0; -} - -static void PTRCALL -unknown_toUtf8(const ENCODING *enc, - const char **fromP, const char *fromLim, - char **toP, const char *toLim) -{ - const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); - char buf[XML_UTF8_ENCODE_MAX]; - for (;;) { - const char *utf8; - int n; - if (*fromP == fromLim) - break; - utf8 = uenc->utf8[(unsigned char)**fromP]; - n = *utf8++; - if (n == 0) { - int c = uenc->convert(uenc->userData, *fromP); - n = XmlUtf8Encode(c, buf); - if (n > toLim - *toP) - break; - utf8 = buf; - *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP] - - (BT_LEAD2 - 2)); - } - else { - if (n > toLim - *toP) - break; - (*fromP)++; - } - do { - *(*toP)++ = *utf8++; - } while (--n != 0); - } -} - -static void PTRCALL -unknown_toUtf16(const ENCODING *enc, - const char **fromP, const char *fromLim, - unsigned short **toP, const unsigned short *toLim) -{ - const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); - while (*fromP != fromLim && *toP != toLim) { - unsigned short c = uenc->utf16[(unsigned char)**fromP]; - if (c == 0) { - c = (unsigned short) - uenc->convert(uenc->userData, *fromP); - *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP] - - (BT_LEAD2 - 2)); - } - else - (*fromP)++; - *(*toP)++ = c; - } -} - -ENCODING * -XmlInitUnknownEncoding(void *mem, - int *table, - CONVERTER convert, - void *userData) -{ - int i; - struct unknown_encoding *e = (struct unknown_encoding *)mem; - for (i = 0; i < (int)sizeof(struct normal_encoding); i++) - ((char *)mem)[i] = ((char *)&latin1_encoding)[i]; - for (i = 0; i < 128; i++) - if (latin1_encoding.type[i] != BT_OTHER - && latin1_encoding.type[i] != BT_NONXML - && table[i] != i) - return 0; - for (i = 0; i < 256; i++) { - int c = table[i]; - if (c == -1) { - e->normal.type[i] = BT_MALFORM; - /* This shouldn't really get used. */ - e->utf16[i] = 0xFFFF; - e->utf8[i][0] = 1; - e->utf8[i][1] = 0; - } - else if (c < 0) { - if (c < -4) - return 0; - e->normal.type[i] = (unsigned char)(BT_LEAD2 - (c + 2)); - e->utf8[i][0] = 0; - e->utf16[i] = 0; - } - else if (c < 0x80) { - if (latin1_encoding.type[c] != BT_OTHER - && latin1_encoding.type[c] != BT_NONXML - && c != i) - return 0; - e->normal.type[i] = latin1_encoding.type[c]; - e->utf8[i][0] = 1; - e->utf8[i][1] = (char)c; - e->utf16[i] = (unsigned short)(c == 0 ? 0xFFFF : c); - } - else if (checkCharRefNumber(c) < 0) { - e->normal.type[i] = BT_NONXML; - /* This shouldn't really get used. */ - e->utf16[i] = 0xFFFF; - e->utf8[i][0] = 1; - e->utf8[i][1] = 0; - } - else { - if (c > 0xFFFF) - return 0; - if (UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xff)) - e->normal.type[i] = BT_NMSTRT; - else if (UCS2_GET_NAMING(namePages, c >> 8, c & 0xff)) - e->normal.type[i] = BT_NAME; - else - e->normal.type[i] = BT_OTHER; - e->utf8[i][0] = (char)XmlUtf8Encode(c, e->utf8[i] + 1); - e->utf16[i] = (unsigned short)c; - } - } - e->userData = userData; - e->convert = convert; - if (convert) { - e->normal.isName2 = unknown_isName; - e->normal.isName3 = unknown_isName; - e->normal.isName4 = unknown_isName; - e->normal.isNmstrt2 = unknown_isNmstrt; - e->normal.isNmstrt3 = unknown_isNmstrt; - e->normal.isNmstrt4 = unknown_isNmstrt; - e->normal.isInvalid2 = unknown_isInvalid; - e->normal.isInvalid3 = unknown_isInvalid; - e->normal.isInvalid4 = unknown_isInvalid; - } - e->normal.enc.utf8Convert = unknown_toUtf8; - e->normal.enc.utf16Convert = unknown_toUtf16; - return &(e->normal.enc); -} - -/* If this enumeration is changed, getEncodingIndex and encodings -must also be changed. */ -enum { - UNKNOWN_ENC = -1, - ISO_8859_1_ENC = 0, - US_ASCII_ENC, - UTF_8_ENC, - UTF_16_ENC, - UTF_16BE_ENC, - UTF_16LE_ENC, - /* must match encodingNames up to here */ - NO_ENC -}; - -static const char KW_ISO_8859_1[] = { - ASCII_I, ASCII_S, ASCII_O, ASCII_MINUS, ASCII_8, ASCII_8, ASCII_5, ASCII_9, - ASCII_MINUS, ASCII_1, '\0' -}; -static const char KW_US_ASCII[] = { - ASCII_U, ASCII_S, ASCII_MINUS, ASCII_A, ASCII_S, ASCII_C, ASCII_I, ASCII_I, - '\0' -}; -static const char KW_UTF_8[] = { - ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_8, '\0' -}; -static const char KW_UTF_16[] = { - ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, '\0' -}; -static const char KW_UTF_16BE[] = { - ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_B, ASCII_E, - '\0' -}; -static const char KW_UTF_16LE[] = { - ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_L, ASCII_E, - '\0' -}; - -static int FASTCALL -getEncodingIndex(const char *name) -{ - static const char * const encodingNames[] = { - KW_ISO_8859_1, - KW_US_ASCII, - KW_UTF_8, - KW_UTF_16, - KW_UTF_16BE, - KW_UTF_16LE, - }; - int i; - if (name == NULL) - return NO_ENC; - for (i = 0; i < (int)(sizeof(encodingNames)/sizeof(encodingNames[0])); i++) - if (streqci(name, encodingNames[i])) - return i; - return UNKNOWN_ENC; -} - -/* For binary compatibility, we store the index of the encoding - specified at initialization in the isUtf16 member. -*/ - -#define INIT_ENC_INDEX(enc) ((int)(enc)->initEnc.isUtf16) -#define SET_INIT_ENC_INDEX(enc, i) ((enc)->initEnc.isUtf16 = (char)i) - -/* This is what detects the encoding. encodingTable maps from - encoding indices to encodings; INIT_ENC_INDEX(enc) is the index of - the external (protocol) specified encoding; state is - XML_CONTENT_STATE if we're parsing an external text entity, and - XML_PROLOG_STATE otherwise. -*/ - - -static int -initScan(const ENCODING * const *encodingTable, - const INIT_ENCODING *enc, - int state, - const char *ptr, - const char *end, - const char **nextTokPtr) -{ - const ENCODING **encPtr; - - if (ptr == end) - return XML_TOK_NONE; - encPtr = enc->encPtr; - if (ptr + 1 == end) { - /* only a single byte available for auto-detection */ -#ifndef XML_DTD /* FIXME */ - /* a well-formed document entity must have more than one byte */ - if (state != XML_CONTENT_STATE) - return XML_TOK_PARTIAL; -#endif - /* so we're parsing an external text entity... */ - /* if UTF-16 was externally specified, then we need at least 2 bytes */ - switch (INIT_ENC_INDEX(enc)) { - case UTF_16_ENC: - case UTF_16LE_ENC: - case UTF_16BE_ENC: - return XML_TOK_PARTIAL; - } - switch ((unsigned char)*ptr) { - case 0xFE: - case 0xFF: - case 0xEF: /* possibly first byte of UTF-8 BOM */ - if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC - && state == XML_CONTENT_STATE) - break; - /* fall through */ - case 0x00: - case 0x3C: - return XML_TOK_PARTIAL; - } - } - else { - switch (((unsigned char)ptr[0] << 8) | (unsigned char)ptr[1]) { - case 0xFEFF: - if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC - && state == XML_CONTENT_STATE) - break; - *nextTokPtr = ptr + 2; - *encPtr = encodingTable[UTF_16BE_ENC]; - return XML_TOK_BOM; - /* 00 3C is handled in the default case */ - case 0x3C00: - if ((INIT_ENC_INDEX(enc) == UTF_16BE_ENC - || INIT_ENC_INDEX(enc) == UTF_16_ENC) - && state == XML_CONTENT_STATE) - break; - *encPtr = encodingTable[UTF_16LE_ENC]; - return XmlTok(*encPtr, state, ptr, end, nextTokPtr); - case 0xFFFE: - if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC - && state == XML_CONTENT_STATE) - break; - *nextTokPtr = ptr + 2; - *encPtr = encodingTable[UTF_16LE_ENC]; - return XML_TOK_BOM; - case 0xEFBB: - /* Maybe a UTF-8 BOM (EF BB BF) */ - /* If there's an explicitly specified (external) encoding - of ISO-8859-1 or some flavour of UTF-16 - and this is an external text entity, - don't look for the BOM, - because it might be a legal data. - */ - if (state == XML_CONTENT_STATE) { - int e = INIT_ENC_INDEX(enc); - if (e == ISO_8859_1_ENC || e == UTF_16BE_ENC - || e == UTF_16LE_ENC || e == UTF_16_ENC) - break; - } - if (ptr + 2 == end) - return XML_TOK_PARTIAL; - if ((unsigned char)ptr[2] == 0xBF) { - *nextTokPtr = ptr + 3; - *encPtr = encodingTable[UTF_8_ENC]; - return XML_TOK_BOM; - } - break; - default: - if (ptr[0] == '\0') { - /* 0 isn't a legal data character. Furthermore a document - entity can only start with ASCII characters. So the only - way this can fail to be big-endian UTF-16 if it it's an - external parsed general entity that's labelled as - UTF-16LE. - */ - if (state == XML_CONTENT_STATE && INIT_ENC_INDEX(enc) == UTF_16LE_ENC) - break; - *encPtr = encodingTable[UTF_16BE_ENC]; - return XmlTok(*encPtr, state, ptr, end, nextTokPtr); - } - else if (ptr[1] == '\0') { - /* We could recover here in the case: - - parsing an external entity - - second byte is 0 - - no externally specified encoding - - no encoding declaration - by assuming UTF-16LE. But we don't, because this would mean when - presented just with a single byte, we couldn't reliably determine - whether we needed further bytes. - */ - if (state == XML_CONTENT_STATE) - break; - *encPtr = encodingTable[UTF_16LE_ENC]; - return XmlTok(*encPtr, state, ptr, end, nextTokPtr); - } - break; - } - } - *encPtr = encodingTable[INIT_ENC_INDEX(enc)]; - return XmlTok(*encPtr, state, ptr, end, nextTokPtr); -} - - -#define NS(x) x -#define ns(x) x -#define XML_TOK_NS_C -#include "xmltok_ns.c" -#undef XML_TOK_NS_C -#undef NS -#undef ns - -#ifdef XML_NS - -#define NS(x) x ## NS -#define ns(x) x ## _ns - -#define XML_TOK_NS_C -#include "xmltok_ns.c" -#undef XML_TOK_NS_C - -#undef NS -#undef ns - -ENCODING * -XmlInitUnknownEncodingNS(void *mem, - int *table, - CONVERTER convert, - void *userData) -{ - ENCODING *enc = XmlInitUnknownEncoding(mem, table, convert, userData); - if (enc) - ((struct normal_encoding *)enc)->type[ASCII_COLON] = BT_COLON; - return enc; -} - -#endif /* XML_NS */ diff --git a/platform/win32/msvc/external/expat/lib/xmltok.h b/platform/win32/msvc/external/expat/lib/xmltok.h deleted file mode 100644 index ca867aa6b42..00000000000 --- a/platform/win32/msvc/external/expat/lib/xmltok.h +++ /dev/null @@ -1,316 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#ifndef XmlTok_INCLUDED -#define XmlTok_INCLUDED 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/* The following token may be returned by XmlContentTok */ -#define XML_TOK_TRAILING_RSQB -5 /* ] or ]] at the end of the scan; might be - start of illegal ]]> sequence */ -/* The following tokens may be returned by both XmlPrologTok and - XmlContentTok. -*/ -#define XML_TOK_NONE -4 /* The string to be scanned is empty */ -#define XML_TOK_TRAILING_CR -3 /* A CR at the end of the scan; - might be part of CRLF sequence */ -#define XML_TOK_PARTIAL_CHAR -2 /* only part of a multibyte sequence */ -#define XML_TOK_PARTIAL -1 /* only part of a token */ -#define XML_TOK_INVALID 0 - -/* The following tokens are returned by XmlContentTok; some are also - returned by XmlAttributeValueTok, XmlEntityTok, XmlCdataSectionTok. -*/ -#define XML_TOK_START_TAG_WITH_ATTS 1 -#define XML_TOK_START_TAG_NO_ATTS 2 -#define XML_TOK_EMPTY_ELEMENT_WITH_ATTS 3 /* empty element tag */ -#define XML_TOK_EMPTY_ELEMENT_NO_ATTS 4 -#define XML_TOK_END_TAG 5 -#define XML_TOK_DATA_CHARS 6 -#define XML_TOK_DATA_NEWLINE 7 -#define XML_TOK_CDATA_SECT_OPEN 8 -#define XML_TOK_ENTITY_REF 9 -#define XML_TOK_CHAR_REF 10 /* numeric character reference */ - -/* The following tokens may be returned by both XmlPrologTok and - XmlContentTok. -*/ -#define XML_TOK_PI 11 /* processing instruction */ -#define XML_TOK_XML_DECL 12 /* XML decl or text decl */ -#define XML_TOK_COMMENT 13 -#define XML_TOK_BOM 14 /* Byte order mark */ - -/* The following tokens are returned only by XmlPrologTok */ -#define XML_TOK_PROLOG_S 15 -#define XML_TOK_DECL_OPEN 16 /* */ -#define XML_TOK_NAME 18 -#define XML_TOK_NMTOKEN 19 -#define XML_TOK_POUND_NAME 20 /* #name */ -#define XML_TOK_OR 21 /* | */ -#define XML_TOK_PERCENT 22 -#define XML_TOK_OPEN_PAREN 23 -#define XML_TOK_CLOSE_PAREN 24 -#define XML_TOK_OPEN_BRACKET 25 -#define XML_TOK_CLOSE_BRACKET 26 -#define XML_TOK_LITERAL 27 -#define XML_TOK_PARAM_ENTITY_REF 28 -#define XML_TOK_INSTANCE_START 29 - -/* The following occur only in element type declarations */ -#define XML_TOK_NAME_QUESTION 30 /* name? */ -#define XML_TOK_NAME_ASTERISK 31 /* name* */ -#define XML_TOK_NAME_PLUS 32 /* name+ */ -#define XML_TOK_COND_SECT_OPEN 33 /* */ -#define XML_TOK_CLOSE_PAREN_QUESTION 35 /* )? */ -#define XML_TOK_CLOSE_PAREN_ASTERISK 36 /* )* */ -#define XML_TOK_CLOSE_PAREN_PLUS 37 /* )+ */ -#define XML_TOK_COMMA 38 - -/* The following token is returned only by XmlAttributeValueTok */ -#define XML_TOK_ATTRIBUTE_VALUE_S 39 - -/* The following token is returned only by XmlCdataSectionTok */ -#define XML_TOK_CDATA_SECT_CLOSE 40 - -/* With namespace processing this is returned by XmlPrologTok for a - name with a colon. -*/ -#define XML_TOK_PREFIXED_NAME 41 - -#ifdef XML_DTD -#define XML_TOK_IGNORE_SECT 42 -#endif /* XML_DTD */ - -#ifdef XML_DTD -#define XML_N_STATES 4 -#else /* not XML_DTD */ -#define XML_N_STATES 3 -#endif /* not XML_DTD */ - -#define XML_PROLOG_STATE 0 -#define XML_CONTENT_STATE 1 -#define XML_CDATA_SECTION_STATE 2 -#ifdef XML_DTD -#define XML_IGNORE_SECTION_STATE 3 -#endif /* XML_DTD */ - -#define XML_N_LITERAL_TYPES 2 -#define XML_ATTRIBUTE_VALUE_LITERAL 0 -#define XML_ENTITY_VALUE_LITERAL 1 - -/* The size of the buffer passed to XmlUtf8Encode must be at least this. */ -#define XML_UTF8_ENCODE_MAX 4 -/* The size of the buffer passed to XmlUtf16Encode must be at least this. */ -#define XML_UTF16_ENCODE_MAX 2 - -typedef struct position { - /* first line and first column are 0 not 1 */ - XML_Size lineNumber; - XML_Size columnNumber; -} POSITION; - -typedef struct { - const char *name; - const char *valuePtr; - const char *valueEnd; - char normalized; -} ATTRIBUTE; - -struct encoding; -typedef struct encoding ENCODING; - -typedef int (PTRCALL *SCANNER)(const ENCODING *, - const char *, - const char *, - const char **); - -struct encoding { - SCANNER scanners[XML_N_STATES]; - SCANNER literalScanners[XML_N_LITERAL_TYPES]; - int (PTRCALL *sameName)(const ENCODING *, - const char *, - const char *); - int (PTRCALL *nameMatchesAscii)(const ENCODING *, - const char *, - const char *, - const char *); - int (PTRFASTCALL *nameLength)(const ENCODING *, const char *); - const char *(PTRFASTCALL *skipS)(const ENCODING *, const char *); - int (PTRCALL *getAtts)(const ENCODING *enc, - const char *ptr, - int attsMax, - ATTRIBUTE *atts); - int (PTRFASTCALL *charRefNumber)(const ENCODING *enc, const char *ptr); - int (PTRCALL *predefinedEntityName)(const ENCODING *, - const char *, - const char *); - void (PTRCALL *updatePosition)(const ENCODING *, - const char *ptr, - const char *end, - POSITION *); - int (PTRCALL *isPublicId)(const ENCODING *enc, - const char *ptr, - const char *end, - const char **badPtr); - void (PTRCALL *utf8Convert)(const ENCODING *enc, - const char **fromP, - const char *fromLim, - char **toP, - const char *toLim); - void (PTRCALL *utf16Convert)(const ENCODING *enc, - const char **fromP, - const char *fromLim, - unsigned short **toP, - const unsigned short *toLim); - int minBytesPerChar; - char isUtf8; - char isUtf16; -}; - -/* Scan the string starting at ptr until the end of the next complete - token, but do not scan past eptr. Return an integer giving the - type of token. - - Return XML_TOK_NONE when ptr == eptr; nextTokPtr will not be set. - - Return XML_TOK_PARTIAL when the string does not contain a complete - token; nextTokPtr will not be set. - - Return XML_TOK_INVALID when the string does not start a valid - token; nextTokPtr will be set to point to the character which made - the token invalid. - - Otherwise the string starts with a valid token; nextTokPtr will be - set to point to the character following the end of that token. - - Each data character counts as a single token, but adjacent data - characters may be returned together. Similarly for characters in - the prolog outside literals, comments and processing instructions. -*/ - - -#define XmlTok(enc, state, ptr, end, nextTokPtr) \ - (((enc)->scanners[state])(enc, ptr, end, nextTokPtr)) - -#define XmlPrologTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr) - -#define XmlContentTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr) - -#define XmlCdataSectionTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr) - -#ifdef XML_DTD - -#define XmlIgnoreSectionTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_IGNORE_SECTION_STATE, ptr, end, nextTokPtr) - -#endif /* XML_DTD */ - -/* This is used for performing a 2nd-level tokenization on the content - of a literal that has already been returned by XmlTok. -*/ -#define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr) \ - (((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr)) - -#define XmlAttributeValueTok(enc, ptr, end, nextTokPtr) \ - XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr) - -#define XmlEntityValueTok(enc, ptr, end, nextTokPtr) \ - XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr) - -#define XmlSameName(enc, ptr1, ptr2) (((enc)->sameName)(enc, ptr1, ptr2)) - -#define XmlNameMatchesAscii(enc, ptr1, end1, ptr2) \ - (((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2)) - -#define XmlNameLength(enc, ptr) \ - (((enc)->nameLength)(enc, ptr)) - -#define XmlSkipS(enc, ptr) \ - (((enc)->skipS)(enc, ptr)) - -#define XmlGetAttributes(enc, ptr, attsMax, atts) \ - (((enc)->getAtts)(enc, ptr, attsMax, atts)) - -#define XmlCharRefNumber(enc, ptr) \ - (((enc)->charRefNumber)(enc, ptr)) - -#define XmlPredefinedEntityName(enc, ptr, end) \ - (((enc)->predefinedEntityName)(enc, ptr, end)) - -#define XmlUpdatePosition(enc, ptr, end, pos) \ - (((enc)->updatePosition)(enc, ptr, end, pos)) - -#define XmlIsPublicId(enc, ptr, end, badPtr) \ - (((enc)->isPublicId)(enc, ptr, end, badPtr)) - -#define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim) \ - (((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim)) - -#define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim) \ - (((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim)) - -typedef struct { - ENCODING initEnc; - const ENCODING **encPtr; -} INIT_ENCODING; - -int XmlParseXmlDecl(int isGeneralTextEntity, - const ENCODING *enc, - const char *ptr, - const char *end, - const char **badPtr, - const char **versionPtr, - const char **versionEndPtr, - const char **encodingNamePtr, - const ENCODING **namedEncodingPtr, - int *standalonePtr); - -int XmlInitEncoding(INIT_ENCODING *, const ENCODING **, const char *name); -const ENCODING *XmlGetUtf8InternalEncoding(void); -const ENCODING *XmlGetUtf16InternalEncoding(void); -int FASTCALL XmlUtf8Encode(int charNumber, char *buf); -int FASTCALL XmlUtf16Encode(int charNumber, unsigned short *buf); -int XmlSizeOfUnknownEncoding(void); - - -typedef int (XMLCALL *CONVERTER) (void *userData, const char *p); - -ENCODING * -XmlInitUnknownEncoding(void *mem, - int *table, - CONVERTER convert, - void *userData); - -int XmlParseXmlDeclNS(int isGeneralTextEntity, - const ENCODING *enc, - const char *ptr, - const char *end, - const char **badPtr, - const char **versionPtr, - const char **versionEndPtr, - const char **encodingNamePtr, - const ENCODING **namedEncodingPtr, - int *standalonePtr); - -int XmlInitEncodingNS(INIT_ENCODING *, const ENCODING **, const char *name); -const ENCODING *XmlGetUtf8InternalEncodingNS(void); -const ENCODING *XmlGetUtf16InternalEncodingNS(void); -ENCODING * -XmlInitUnknownEncodingNS(void *mem, - int *table, - CONVERTER convert, - void *userData); -#ifdef __cplusplus -} -#endif - -#endif /* not XmlTok_INCLUDED */ diff --git a/platform/win32/msvc/external/expat/lib/xmltok_impl.c b/platform/win32/msvc/external/expat/lib/xmltok_impl.c deleted file mode 100644 index 9c2895b8773..00000000000 --- a/platform/win32/msvc/external/expat/lib/xmltok_impl.c +++ /dev/null @@ -1,1783 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -/* This file is included! */ -#ifdef XML_TOK_IMPL_C - -#ifndef IS_INVALID_CHAR -#define IS_INVALID_CHAR(enc, ptr, n) (0) -#endif - -#define INVALID_LEAD_CASE(n, ptr, nextTokPtr) \ - case BT_LEAD ## n: \ - if (end - ptr < n) \ - return XML_TOK_PARTIAL_CHAR; \ - if (IS_INVALID_CHAR(enc, ptr, n)) { \ - *(nextTokPtr) = (ptr); \ - return XML_TOK_INVALID; \ - } \ - ptr += n; \ - break; - -#define INVALID_CASES(ptr, nextTokPtr) \ - INVALID_LEAD_CASE(2, ptr, nextTokPtr) \ - INVALID_LEAD_CASE(3, ptr, nextTokPtr) \ - INVALID_LEAD_CASE(4, ptr, nextTokPtr) \ - case BT_NONXML: \ - case BT_MALFORM: \ - case BT_TRAIL: \ - *(nextTokPtr) = (ptr); \ - return XML_TOK_INVALID; - -#define CHECK_NAME_CASE(n, enc, ptr, end, nextTokPtr) \ - case BT_LEAD ## n: \ - if (end - ptr < n) \ - return XML_TOK_PARTIAL_CHAR; \ - if (!IS_NAME_CHAR(enc, ptr, n)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_INVALID; \ - } \ - ptr += n; \ - break; - -#define CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) \ - case BT_NONASCII: \ - if (!IS_NAME_CHAR_MINBPC(enc, ptr)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_INVALID; \ - } \ - case BT_NMSTRT: \ - case BT_HEX: \ - case BT_DIGIT: \ - case BT_NAME: \ - case BT_MINUS: \ - ptr += MINBPC(enc); \ - break; \ - CHECK_NAME_CASE(2, enc, ptr, end, nextTokPtr) \ - CHECK_NAME_CASE(3, enc, ptr, end, nextTokPtr) \ - CHECK_NAME_CASE(4, enc, ptr, end, nextTokPtr) - -#define CHECK_NMSTRT_CASE(n, enc, ptr, end, nextTokPtr) \ - case BT_LEAD ## n: \ - if (end - ptr < n) \ - return XML_TOK_PARTIAL_CHAR; \ - if (!IS_NMSTRT_CHAR(enc, ptr, n)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_INVALID; \ - } \ - ptr += n; \ - break; - -#define CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) \ - case BT_NONASCII: \ - if (!IS_NMSTRT_CHAR_MINBPC(enc, ptr)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_INVALID; \ - } \ - case BT_NMSTRT: \ - case BT_HEX: \ - ptr += MINBPC(enc); \ - break; \ - CHECK_NMSTRT_CASE(2, enc, ptr, end, nextTokPtr) \ - CHECK_NMSTRT_CASE(3, enc, ptr, end, nextTokPtr) \ - CHECK_NMSTRT_CASE(4, enc, ptr, end, nextTokPtr) - -#ifndef PREFIX -#define PREFIX(ident) ident -#endif - -/* ptr points to character following " */ - switch (BYTE_TYPE(enc, ptr + MINBPC(enc))) { - case BT_S: case BT_CR: case BT_LF: case BT_PERCNT: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - /* fall through */ - case BT_S: case BT_CR: case BT_LF: - *nextTokPtr = ptr; - return XML_TOK_DECL_OPEN; - case BT_NMSTRT: - case BT_HEX: - ptr += MINBPC(enc); - break; - default: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - } - return XML_TOK_PARTIAL; -} - -static int PTRCALL -PREFIX(checkPiTarget)(const ENCODING *enc, const char *ptr, - const char *end, int *tokPtr) -{ - int upper = 0; - *tokPtr = XML_TOK_PI; - if (end - ptr != MINBPC(enc)*3) - return 1; - switch (BYTE_TO_ASCII(enc, ptr)) { - case ASCII_x: - break; - case ASCII_X: - upper = 1; - break; - default: - return 1; - } - ptr += MINBPC(enc); - switch (BYTE_TO_ASCII(enc, ptr)) { - case ASCII_m: - break; - case ASCII_M: - upper = 1; - break; - default: - return 1; - } - ptr += MINBPC(enc); - switch (BYTE_TO_ASCII(enc, ptr)) { - case ASCII_l: - break; - case ASCII_L: - upper = 1; - break; - default: - return 1; - } - if (upper) - return 0; - *tokPtr = XML_TOK_XML_DECL; - return 1; -} - -/* ptr points to character following " 1) { - size_t n = end - ptr; - if (n & (MINBPC(enc) - 1)) { - n &= ~(MINBPC(enc) - 1); - if (n == 0) - return XML_TOK_PARTIAL; - end = ptr + n; - } - } - switch (BYTE_TYPE(enc, ptr)) { - case BT_RSQB: - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_PARTIAL; - if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB)) - break; - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_PARTIAL; - if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) { - ptr -= MINBPC(enc); - break; - } - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_CDATA_SECT_CLOSE; - case BT_CR: - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_PARTIAL; - if (BYTE_TYPE(enc, ptr) == BT_LF) - ptr += MINBPC(enc); - *nextTokPtr = ptr; - return XML_TOK_DATA_NEWLINE; - case BT_LF: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_DATA_NEWLINE; - INVALID_CASES(ptr, nextTokPtr) - default: - ptr += MINBPC(enc); - break; - } - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: \ - if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_DATA_CHARS; \ - } \ - ptr += n; \ - break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_NONXML: - case BT_MALFORM: - case BT_TRAIL: - case BT_CR: - case BT_LF: - case BT_RSQB: - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - default: - ptr += MINBPC(enc); - break; - } - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; -} - -/* ptr points to character following " 1) { - size_t n = end - ptr; - if (n & (MINBPC(enc) - 1)) { - n &= ~(MINBPC(enc) - 1); - if (n == 0) - return XML_TOK_PARTIAL; - end = ptr + n; - } - } - switch (BYTE_TYPE(enc, ptr)) { - case BT_LT: - return PREFIX(scanLt)(enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_AMP: - return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_CR: - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_TRAILING_CR; - if (BYTE_TYPE(enc, ptr) == BT_LF) - ptr += MINBPC(enc); - *nextTokPtr = ptr; - return XML_TOK_DATA_NEWLINE; - case BT_LF: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_DATA_NEWLINE; - case BT_RSQB: - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_TRAILING_RSQB; - if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB)) - break; - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_TRAILING_RSQB; - if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) { - ptr -= MINBPC(enc); - break; - } - *nextTokPtr = ptr; - return XML_TOK_INVALID; - INVALID_CASES(ptr, nextTokPtr) - default: - ptr += MINBPC(enc); - break; - } - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: \ - if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_DATA_CHARS; \ - } \ - ptr += n; \ - break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_RSQB: - if (ptr + MINBPC(enc) != end) { - if (!CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_RSQB)) { - ptr += MINBPC(enc); - break; - } - if (ptr + 2*MINBPC(enc) != end) { - if (!CHAR_MATCHES(enc, ptr + 2*MINBPC(enc), ASCII_GT)) { - ptr += MINBPC(enc); - break; - } - *nextTokPtr = ptr + 2*MINBPC(enc); - return XML_TOK_INVALID; - } - } - /* fall through */ - case BT_AMP: - case BT_LT: - case BT_NONXML: - case BT_MALFORM: - case BT_TRAIL: - case BT_CR: - case BT_LF: - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - default: - ptr += MINBPC(enc); - break; - } - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; -} - -/* ptr points to character following "%" */ - -static int PTRCALL -PREFIX(scanPercent)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ - if (ptr == end) - return XML_TOK_PARTIAL; - switch (BYTE_TYPE(enc, ptr)) { - CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) - case BT_S: case BT_LF: case BT_CR: case BT_PERCNT: - *nextTokPtr = ptr; - return XML_TOK_PERCENT; - default: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { - CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) - case BT_SEMI: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_PARAM_ENTITY_REF; - default: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - } - return XML_TOK_PARTIAL; -} - -static int PTRCALL -PREFIX(scanPoundName)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ - if (ptr == end) - return XML_TOK_PARTIAL; - switch (BYTE_TYPE(enc, ptr)) { - CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) - default: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { - CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) - case BT_CR: case BT_LF: case BT_S: - case BT_RPAR: case BT_GT: case BT_PERCNT: case BT_VERBAR: - *nextTokPtr = ptr; - return XML_TOK_POUND_NAME; - default: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - } - return -XML_TOK_POUND_NAME; -} - -static int PTRCALL -PREFIX(scanLit)(int open, const ENCODING *enc, - const char *ptr, const char *end, - const char **nextTokPtr) -{ - while (ptr != end) { - int t = BYTE_TYPE(enc, ptr); - switch (t) { - INVALID_CASES(ptr, nextTokPtr) - case BT_QUOT: - case BT_APOS: - ptr += MINBPC(enc); - if (t != open) - break; - if (ptr == end) - return -XML_TOK_LITERAL; - *nextTokPtr = ptr; - switch (BYTE_TYPE(enc, ptr)) { - case BT_S: case BT_CR: case BT_LF: - case BT_GT: case BT_PERCNT: case BT_LSQB: - return XML_TOK_LITERAL; - default: - return XML_TOK_INVALID; - } - default: - ptr += MINBPC(enc); - break; - } - } - return XML_TOK_PARTIAL; -} - -static int PTRCALL -PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ - int tok; - if (ptr == end) - return XML_TOK_NONE; - if (MINBPC(enc) > 1) { - size_t n = end - ptr; - if (n & (MINBPC(enc) - 1)) { - n &= ~(MINBPC(enc) - 1); - if (n == 0) - return XML_TOK_PARTIAL; - end = ptr + n; - } - } - switch (BYTE_TYPE(enc, ptr)) { - case BT_QUOT: - return PREFIX(scanLit)(BT_QUOT, enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_APOS: - return PREFIX(scanLit)(BT_APOS, enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_LT: - { - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_PARTIAL; - switch (BYTE_TYPE(enc, ptr)) { - case BT_EXCL: - return PREFIX(scanDecl)(enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_QUEST: - return PREFIX(scanPi)(enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_NMSTRT: - case BT_HEX: - case BT_NONASCII: - case BT_LEAD2: - case BT_LEAD3: - case BT_LEAD4: - *nextTokPtr = ptr - MINBPC(enc); - return XML_TOK_INSTANCE_START; - } - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - case BT_CR: - if (ptr + MINBPC(enc) == end) { - *nextTokPtr = end; - /* indicate that this might be part of a CR/LF pair */ - return -XML_TOK_PROLOG_S; - } - /* fall through */ - case BT_S: case BT_LF: - for (;;) { - ptr += MINBPC(enc); - if (ptr == end) - break; - switch (BYTE_TYPE(enc, ptr)) { - case BT_S: case BT_LF: - break; - case BT_CR: - /* don't split CR/LF pair */ - if (ptr + MINBPC(enc) != end) - break; - /* fall through */ - default: - *nextTokPtr = ptr; - return XML_TOK_PROLOG_S; - } - } - *nextTokPtr = ptr; - return XML_TOK_PROLOG_S; - case BT_PERCNT: - return PREFIX(scanPercent)(enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_COMMA: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_COMMA; - case BT_LSQB: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_OPEN_BRACKET; - case BT_RSQB: - ptr += MINBPC(enc); - if (ptr == end) - return -XML_TOK_CLOSE_BRACKET; - if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) { - if (ptr + MINBPC(enc) == end) - return XML_TOK_PARTIAL; - if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_GT)) { - *nextTokPtr = ptr + 2*MINBPC(enc); - return XML_TOK_COND_SECT_CLOSE; - } - } - *nextTokPtr = ptr; - return XML_TOK_CLOSE_BRACKET; - case BT_LPAR: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_OPEN_PAREN; - case BT_RPAR: - ptr += MINBPC(enc); - if (ptr == end) - return -XML_TOK_CLOSE_PAREN; - switch (BYTE_TYPE(enc, ptr)) { - case BT_AST: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_CLOSE_PAREN_ASTERISK; - case BT_QUEST: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_CLOSE_PAREN_QUESTION; - case BT_PLUS: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_CLOSE_PAREN_PLUS; - case BT_CR: case BT_LF: case BT_S: - case BT_GT: case BT_COMMA: case BT_VERBAR: - case BT_RPAR: - *nextTokPtr = ptr; - return XML_TOK_CLOSE_PAREN; - } - *nextTokPtr = ptr; - return XML_TOK_INVALID; - case BT_VERBAR: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_OR; - case BT_GT: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_DECL_CLOSE; - case BT_NUM: - return PREFIX(scanPoundName)(enc, ptr + MINBPC(enc), end, nextTokPtr); -#define LEAD_CASE(n) \ - case BT_LEAD ## n: \ - if (end - ptr < n) \ - return XML_TOK_PARTIAL_CHAR; \ - if (IS_NMSTRT_CHAR(enc, ptr, n)) { \ - ptr += n; \ - tok = XML_TOK_NAME; \ - break; \ - } \ - if (IS_NAME_CHAR(enc, ptr, n)) { \ - ptr += n; \ - tok = XML_TOK_NMTOKEN; \ - break; \ - } \ - *nextTokPtr = ptr; \ - return XML_TOK_INVALID; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_NMSTRT: - case BT_HEX: - tok = XML_TOK_NAME; - ptr += MINBPC(enc); - break; - case BT_DIGIT: - case BT_NAME: - case BT_MINUS: -#ifdef XML_NS - case BT_COLON: -#endif - tok = XML_TOK_NMTOKEN; - ptr += MINBPC(enc); - break; - case BT_NONASCII: - if (IS_NMSTRT_CHAR_MINBPC(enc, ptr)) { - ptr += MINBPC(enc); - tok = XML_TOK_NAME; - break; - } - if (IS_NAME_CHAR_MINBPC(enc, ptr)) { - ptr += MINBPC(enc); - tok = XML_TOK_NMTOKEN; - break; - } - /* fall through */ - default: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { - CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) - case BT_GT: case BT_RPAR: case BT_COMMA: - case BT_VERBAR: case BT_LSQB: case BT_PERCNT: - case BT_S: case BT_CR: case BT_LF: - *nextTokPtr = ptr; - return tok; -#ifdef XML_NS - case BT_COLON: - ptr += MINBPC(enc); - switch (tok) { - case XML_TOK_NAME: - if (ptr == end) - return XML_TOK_PARTIAL; - tok = XML_TOK_PREFIXED_NAME; - switch (BYTE_TYPE(enc, ptr)) { - CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) - default: - tok = XML_TOK_NMTOKEN; - break; - } - break; - case XML_TOK_PREFIXED_NAME: - tok = XML_TOK_NMTOKEN; - break; - } - break; -#endif - case BT_PLUS: - if (tok == XML_TOK_NMTOKEN) { - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_NAME_PLUS; - case BT_AST: - if (tok == XML_TOK_NMTOKEN) { - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_NAME_ASTERISK; - case BT_QUEST: - if (tok == XML_TOK_NMTOKEN) { - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_NAME_QUESTION; - default: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - } - return -tok; -} - -static int PTRCALL -PREFIX(attributeValueTok)(const ENCODING *enc, const char *ptr, - const char *end, const char **nextTokPtr) -{ - const char *start; - if (ptr == end) - return XML_TOK_NONE; - start = ptr; - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: ptr += n; break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_AMP: - if (ptr == start) - return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - case BT_LT: - /* this is for inside entity references */ - *nextTokPtr = ptr; - return XML_TOK_INVALID; - case BT_LF: - if (ptr == start) { - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_DATA_NEWLINE; - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - case BT_CR: - if (ptr == start) { - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_TRAILING_CR; - if (BYTE_TYPE(enc, ptr) == BT_LF) - ptr += MINBPC(enc); - *nextTokPtr = ptr; - return XML_TOK_DATA_NEWLINE; - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - case BT_S: - if (ptr == start) { - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_ATTRIBUTE_VALUE_S; - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - default: - ptr += MINBPC(enc); - break; - } - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; -} - -static int PTRCALL -PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr, - const char *end, const char **nextTokPtr) -{ - const char *start; - if (ptr == end) - return XML_TOK_NONE; - start = ptr; - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: ptr += n; break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_AMP: - if (ptr == start) - return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - case BT_PERCNT: - if (ptr == start) { - int tok = PREFIX(scanPercent)(enc, ptr + MINBPC(enc), - end, nextTokPtr); - return (tok == XML_TOK_PERCENT) ? XML_TOK_INVALID : tok; - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - case BT_LF: - if (ptr == start) { - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_DATA_NEWLINE; - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - case BT_CR: - if (ptr == start) { - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_TRAILING_CR; - if (BYTE_TYPE(enc, ptr) == BT_LF) - ptr += MINBPC(enc); - *nextTokPtr = ptr; - return XML_TOK_DATA_NEWLINE; - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - default: - ptr += MINBPC(enc); - break; - } - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; -} - -#ifdef XML_DTD - -static int PTRCALL -PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr, - const char *end, const char **nextTokPtr) -{ - int level = 0; - if (MINBPC(enc) > 1) { - size_t n = end - ptr; - if (n & (MINBPC(enc) - 1)) { - n &= ~(MINBPC(enc) - 1); - end = ptr + n; - } - } - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { - INVALID_CASES(ptr, nextTokPtr) - case BT_LT: - if ((ptr += MINBPC(enc)) == end) - return XML_TOK_PARTIAL; - if (CHAR_MATCHES(enc, ptr, ASCII_EXCL)) { - if ((ptr += MINBPC(enc)) == end) - return XML_TOK_PARTIAL; - if (CHAR_MATCHES(enc, ptr, ASCII_LSQB)) { - ++level; - ptr += MINBPC(enc); - } - } - break; - case BT_RSQB: - if ((ptr += MINBPC(enc)) == end) - return XML_TOK_PARTIAL; - if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) { - if ((ptr += MINBPC(enc)) == end) - return XML_TOK_PARTIAL; - if (CHAR_MATCHES(enc, ptr, ASCII_GT)) { - ptr += MINBPC(enc); - if (level == 0) { - *nextTokPtr = ptr; - return XML_TOK_IGNORE_SECT; - } - --level; - } - } - break; - default: - ptr += MINBPC(enc); - break; - } - } - return XML_TOK_PARTIAL; -} - -#endif /* XML_DTD */ - -static int PTRCALL -PREFIX(isPublicId)(const ENCODING *enc, const char *ptr, const char *end, - const char **badPtr) -{ - ptr += MINBPC(enc); - end -= MINBPC(enc); - for (; ptr != end; ptr += MINBPC(enc)) { - switch (BYTE_TYPE(enc, ptr)) { - case BT_DIGIT: - case BT_HEX: - case BT_MINUS: - case BT_APOS: - case BT_LPAR: - case BT_RPAR: - case BT_PLUS: - case BT_COMMA: - case BT_SOL: - case BT_EQUALS: - case BT_QUEST: - case BT_CR: - case BT_LF: - case BT_SEMI: - case BT_EXCL: - case BT_AST: - case BT_PERCNT: - case BT_NUM: -#ifdef XML_NS - case BT_COLON: -#endif - break; - case BT_S: - if (CHAR_MATCHES(enc, ptr, ASCII_TAB)) { - *badPtr = ptr; - return 0; - } - break; - case BT_NAME: - case BT_NMSTRT: - if (!(BYTE_TO_ASCII(enc, ptr) & ~0x7f)) - break; - default: - switch (BYTE_TO_ASCII(enc, ptr)) { - case 0x24: /* $ */ - case 0x40: /* @ */ - break; - default: - *badPtr = ptr; - return 0; - } - break; - } - } - return 1; -} - -/* This must only be called for a well-formed start-tag or empty - element tag. Returns the number of attributes. Pointers to the - first attsMax attributes are stored in atts. -*/ - -static int PTRCALL -PREFIX(getAtts)(const ENCODING *enc, const char *ptr, - int attsMax, ATTRIBUTE *atts) -{ - enum { other, inName, inValue } state = inName; - int nAtts = 0; - int open = 0; /* defined when state == inValue; - initialization just to shut up compilers */ - - for (ptr += MINBPC(enc);; ptr += MINBPC(enc)) { - switch (BYTE_TYPE(enc, ptr)) { -#define START_NAME \ - if (state == other) { \ - if (nAtts < attsMax) { \ - atts[nAtts].name = ptr; \ - atts[nAtts].normalized = 1; \ - } \ - state = inName; \ - } -#define LEAD_CASE(n) \ - case BT_LEAD ## n: START_NAME ptr += (n - MINBPC(enc)); break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_NONASCII: - case BT_NMSTRT: - case BT_HEX: - START_NAME - break; -#undef START_NAME - case BT_QUOT: - if (state != inValue) { - if (nAtts < attsMax) - atts[nAtts].valuePtr = ptr + MINBPC(enc); - state = inValue; - open = BT_QUOT; - } - else if (open == BT_QUOT) { - state = other; - if (nAtts < attsMax) - atts[nAtts].valueEnd = ptr; - nAtts++; - } - break; - case BT_APOS: - if (state != inValue) { - if (nAtts < attsMax) - atts[nAtts].valuePtr = ptr + MINBPC(enc); - state = inValue; - open = BT_APOS; - } - else if (open == BT_APOS) { - state = other; - if (nAtts < attsMax) - atts[nAtts].valueEnd = ptr; - nAtts++; - } - break; - case BT_AMP: - if (nAtts < attsMax) - atts[nAtts].normalized = 0; - break; - case BT_S: - if (state == inName) - state = other; - else if (state == inValue - && nAtts < attsMax - && atts[nAtts].normalized - && (ptr == atts[nAtts].valuePtr - || BYTE_TO_ASCII(enc, ptr) != ASCII_SPACE - || BYTE_TO_ASCII(enc, ptr + MINBPC(enc)) == ASCII_SPACE - || BYTE_TYPE(enc, ptr + MINBPC(enc)) == open)) - atts[nAtts].normalized = 0; - break; - case BT_CR: case BT_LF: - /* This case ensures that the first attribute name is counted - Apart from that we could just change state on the quote. */ - if (state == inName) - state = other; - else if (state == inValue && nAtts < attsMax) - atts[nAtts].normalized = 0; - break; - case BT_GT: - case BT_SOL: - if (state != inValue) - return nAtts; - break; - default: - break; - } - } - /* not reached */ -} - -static int PTRFASTCALL -PREFIX(charRefNumber)(const ENCODING *enc, const char *ptr) -{ - int result = 0; - /* skip &# */ - ptr += 2*MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_x)) { - for (ptr += MINBPC(enc); - !CHAR_MATCHES(enc, ptr, ASCII_SEMI); - ptr += MINBPC(enc)) { - int c = BYTE_TO_ASCII(enc, ptr); - switch (c) { - case ASCII_0: case ASCII_1: case ASCII_2: case ASCII_3: case ASCII_4: - case ASCII_5: case ASCII_6: case ASCII_7: case ASCII_8: case ASCII_9: - result <<= 4; - result |= (c - ASCII_0); - break; - case ASCII_A: case ASCII_B: case ASCII_C: - case ASCII_D: case ASCII_E: case ASCII_F: - result <<= 4; - result += 10 + (c - ASCII_A); - break; - case ASCII_a: case ASCII_b: case ASCII_c: - case ASCII_d: case ASCII_e: case ASCII_f: - result <<= 4; - result += 10 + (c - ASCII_a); - break; - } - if (result >= 0x110000) - return -1; - } - } - else { - for (; !CHAR_MATCHES(enc, ptr, ASCII_SEMI); ptr += MINBPC(enc)) { - int c = BYTE_TO_ASCII(enc, ptr); - result *= 10; - result += (c - ASCII_0); - if (result >= 0x110000) - return -1; - } - } - return checkCharRefNumber(result); -} - -static int PTRCALL -PREFIX(predefinedEntityName)(const ENCODING *enc, const char *ptr, - const char *end) -{ - switch ((end - ptr)/MINBPC(enc)) { - case 2: - if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_t)) { - switch (BYTE_TO_ASCII(enc, ptr)) { - case ASCII_l: - return ASCII_LT; - case ASCII_g: - return ASCII_GT; - } - } - break; - case 3: - if (CHAR_MATCHES(enc, ptr, ASCII_a)) { - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_m)) { - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_p)) - return ASCII_AMP; - } - } - break; - case 4: - switch (BYTE_TO_ASCII(enc, ptr)) { - case ASCII_q: - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_u)) { - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_o)) { - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_t)) - return ASCII_QUOT; - } - } - break; - case ASCII_a: - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_p)) { - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_o)) { - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_s)) - return ASCII_APOS; - } - } - break; - } - } - return 0; -} - -static int PTRCALL -PREFIX(sameName)(const ENCODING *enc, const char *ptr1, const char *ptr2) -{ - for (;;) { - switch (BYTE_TYPE(enc, ptr1)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: \ - if (*ptr1++ != *ptr2++) \ - return 0; - LEAD_CASE(4) LEAD_CASE(3) LEAD_CASE(2) -#undef LEAD_CASE - /* fall through */ - if (*ptr1++ != *ptr2++) - return 0; - break; - case BT_NONASCII: - case BT_NMSTRT: -#ifdef XML_NS - case BT_COLON: -#endif - case BT_HEX: - case BT_DIGIT: - case BT_NAME: - case BT_MINUS: - if (*ptr2++ != *ptr1++) - return 0; - if (MINBPC(enc) > 1) { - if (*ptr2++ != *ptr1++) - return 0; - if (MINBPC(enc) > 2) { - if (*ptr2++ != *ptr1++) - return 0; - if (MINBPC(enc) > 3) { - if (*ptr2++ != *ptr1++) - return 0; - } - } - } - break; - default: - if (MINBPC(enc) == 1 && *ptr1 == *ptr2) - return 1; - switch (BYTE_TYPE(enc, ptr2)) { - case BT_LEAD2: - case BT_LEAD3: - case BT_LEAD4: - case BT_NONASCII: - case BT_NMSTRT: -#ifdef XML_NS - case BT_COLON: -#endif - case BT_HEX: - case BT_DIGIT: - case BT_NAME: - case BT_MINUS: - return 0; - default: - return 1; - } - } - } - /* not reached */ -} - -static int PTRCALL -PREFIX(nameMatchesAscii)(const ENCODING *enc, const char *ptr1, - const char *end1, const char *ptr2) -{ - for (; *ptr2; ptr1 += MINBPC(enc), ptr2++) { - if (ptr1 == end1) - return 0; - if (!CHAR_MATCHES(enc, ptr1, *ptr2)) - return 0; - } - return ptr1 == end1; -} - -static int PTRFASTCALL -PREFIX(nameLength)(const ENCODING *enc, const char *ptr) -{ - const char *start = ptr; - for (;;) { - switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: ptr += n; break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_NONASCII: - case BT_NMSTRT: -#ifdef XML_NS - case BT_COLON: -#endif - case BT_HEX: - case BT_DIGIT: - case BT_NAME: - case BT_MINUS: - ptr += MINBPC(enc); - break; - default: - return (int)(ptr - start); - } - } -} - -static const char * PTRFASTCALL -PREFIX(skipS)(const ENCODING *enc, const char *ptr) -{ - for (;;) { - switch (BYTE_TYPE(enc, ptr)) { - case BT_LF: - case BT_CR: - case BT_S: - ptr += MINBPC(enc); - break; - default: - return ptr; - } - } -} - -static void PTRCALL -PREFIX(updatePosition)(const ENCODING *enc, - const char *ptr, - const char *end, - POSITION *pos) -{ - while (ptr < end) { - switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: \ - ptr += n; \ - break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_LF: - pos->columnNumber = (XML_Size)-1; - pos->lineNumber++; - ptr += MINBPC(enc); - break; - case BT_CR: - pos->lineNumber++; - ptr += MINBPC(enc); - if (ptr != end && BYTE_TYPE(enc, ptr) == BT_LF) - ptr += MINBPC(enc); - pos->columnNumber = (XML_Size)-1; - break; - default: - ptr += MINBPC(enc); - break; - } - pos->columnNumber++; - } -} - -#undef DO_LEAD_CASE -#undef MULTIBYTE_CASES -#undef INVALID_CASES -#undef CHECK_NAME_CASE -#undef CHECK_NAME_CASES -#undef CHECK_NMSTRT_CASE -#undef CHECK_NMSTRT_CASES - -#endif /* XML_TOK_IMPL_C */ diff --git a/platform/win32/msvc/external/expat/lib/xmltok_impl.h b/platform/win32/msvc/external/expat/lib/xmltok_impl.h deleted file mode 100644 index da0ea60a657..00000000000 --- a/platform/win32/msvc/external/expat/lib/xmltok_impl.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. -*/ - -enum { - BT_NONXML, - BT_MALFORM, - BT_LT, - BT_AMP, - BT_RSQB, - BT_LEAD2, - BT_LEAD3, - BT_LEAD4, - BT_TRAIL, - BT_CR, - BT_LF, - BT_GT, - BT_QUOT, - BT_APOS, - BT_EQUALS, - BT_QUEST, - BT_EXCL, - BT_SOL, - BT_SEMI, - BT_NUM, - BT_LSQB, - BT_S, - BT_NMSTRT, - BT_COLON, - BT_HEX, - BT_DIGIT, - BT_NAME, - BT_MINUS, - BT_OTHER, /* known not to be a name or name start character */ - BT_NONASCII, /* might be a name or name start character */ - BT_PERCNT, - BT_LPAR, - BT_RPAR, - BT_AST, - BT_PLUS, - BT_COMMA, - BT_VERBAR -}; - -#include diff --git a/platform/win32/msvc/external/expat/lib/xmltok_ns.c b/platform/win32/msvc/external/expat/lib/xmltok_ns.c deleted file mode 100644 index c3b88fdf4e3..00000000000 --- a/platform/win32/msvc/external/expat/lib/xmltok_ns.c +++ /dev/null @@ -1,115 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -/* This file is included! */ -#ifdef XML_TOK_NS_C - -const ENCODING * -NS(XmlGetUtf8InternalEncoding)(void) -{ - return &ns(internal_utf8_encoding).enc; -} - -const ENCODING * -NS(XmlGetUtf16InternalEncoding)(void) -{ -#if BYTEORDER == 1234 - return &ns(internal_little2_encoding).enc; -#elif BYTEORDER == 4321 - return &ns(internal_big2_encoding).enc; -#else - const short n = 1; - return (*(const char *)&n - ? &ns(internal_little2_encoding).enc - : &ns(internal_big2_encoding).enc); -#endif -} - -static const ENCODING * const NS(encodings)[] = { - &ns(latin1_encoding).enc, - &ns(ascii_encoding).enc, - &ns(utf8_encoding).enc, - &ns(big2_encoding).enc, - &ns(big2_encoding).enc, - &ns(little2_encoding).enc, - &ns(utf8_encoding).enc /* NO_ENC */ -}; - -static int PTRCALL -NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ - return initScan(NS(encodings), (const INIT_ENCODING *)enc, - XML_PROLOG_STATE, ptr, end, nextTokPtr); -} - -static int PTRCALL -NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ - return initScan(NS(encodings), (const INIT_ENCODING *)enc, - XML_CONTENT_STATE, ptr, end, nextTokPtr); -} - -int -NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr, - const char *name) -{ - int i = getEncodingIndex(name); - if (i == UNKNOWN_ENC) - return 0; - SET_INIT_ENC_INDEX(p, i); - p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog); - p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent); - p->initEnc.updatePosition = initUpdatePosition; - p->encPtr = encPtr; - *encPtr = &(p->initEnc); - return 1; -} - -static const ENCODING * -NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end) -{ -#define ENCODING_MAX 128 - char buf[ENCODING_MAX]; - char *p = buf; - int i; - XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1); - if (ptr != end) - return 0; - *p = 0; - if (streqci(buf, KW_UTF_16) && enc->minBytesPerChar == 2) - return enc; - i = getEncodingIndex(buf); - if (i == UNKNOWN_ENC) - return 0; - return NS(encodings)[i]; -} - -int -NS(XmlParseXmlDecl)(int isGeneralTextEntity, - const ENCODING *enc, - const char *ptr, - const char *end, - const char **badPtr, - const char **versionPtr, - const char **versionEndPtr, - const char **encodingName, - const ENCODING **encoding, - int *standalone) -{ - return doParseXmlDecl(NS(findEncoding), - isGeneralTextEntity, - enc, - ptr, - end, - badPtr, - versionPtr, - versionEndPtr, - encodingName, - encoding, - standalone); -} - -#endif /* XML_TOK_NS_C */ diff --git a/platform/win32/msvc/external/lame/.gitignore b/platform/win32/msvc/external/lame/.gitignore deleted file mode 100644 index f1a21101e3a..00000000000 --- a/platform/win32/msvc/external/lame/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -config.h -lame.h \ No newline at end of file diff --git a/platform/win32/msvc/external/lame/ACM/ACM.cpp b/platform/win32/msvc/external/lame/ACM/ACM.cpp deleted file mode 100644 index 2af2c40a4b9..00000000000 --- a/platform/win32/msvc/external/lame/ACM/ACM.cpp +++ /dev/null @@ -1,1405 +0,0 @@ -/** - * - * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows - * - * Copyright (c) 2002 Steve Lhomme - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -/*! - \author Steve Lhomme - \version \$Id: ACM.cpp,v 1.20 2007/05/17 22:25:40 robert Exp $ -*/ - -#if !defined(STRICT) -#define STRICT -#endif // STRICT - -#include - -#include -#include -#include - -#include -#include -#include - -#include - -#include - -#include "adebug.h" -#include "resource.h" -#include "ACMStream.h" - -#ifdef ENABLE_DECODING -#include "DecodeStream.h" -#endif // ENABLE_DECODING - -#include "ACM.h" - -#ifndef IDC_HAND -#define IDC_HAND MAKEINTRESOURCE(32649) -#endif // IDC_HAND - -char ACM::VersionString[120]; - -const char ACM_VERSION[] = "0.9.2"; - -#ifdef WIN32 -// -// 32-bit versions -// -#if (WINVER >= 0x0400) - #define VERSION_ACM_DRIVER MAKE_ACM_VERSION(4, 0, 0) -#else -#define VERSION_ACM_DRIVER MAKE_ACM_VERSION(3, 51, 0) -#endif -#define VERSION_MSACM MAKE_ACM_VERSION(3, 50, 0) - -#else -// -// 16-bit versions -// -#define VERSION_ACM_DRIVER MAKE_ACM_VERSION(1, 0, 0) -#define VERSION_MSACM MAKE_ACM_VERSION(2, 1, 0) - -#endif - -#define PERSONAL_FORMAT WAVE_FORMAT_MPEGLAYER3 -#define SIZE_FORMAT_STRUCT sizeof(MPEGLAYER3WAVEFORMAT) -//#define SIZE_FORMAT_STRUCT 0 - -//static const char channel_mode[][13] = {"mono","stereo","joint stereo","dual channel"}; -static const char channel_mode[][13] = {"mono","stereo"}; -static const unsigned int mpeg1_freq[] = {48000,44100,32000}; -static const unsigned int mpeg2_freq[] = {24000,22050,16000,12000,11025,8000}; -static const unsigned int mpeg1_bitrate[] = {320, 256, 224, 192, 160, 128, 112, 96, 80, 64, 56, 48, 40, 32}; -static const unsigned int mpeg2_bitrate[] = {160, 144, 128, 112, 96, 80, 64, 56, 48, 40, 32, 24, 16, 8}; - -#define SIZE_CHANNEL_MODE (sizeof(channel_mode) / (sizeof(char) * 13)) -#define SIZE_FREQ_MPEG1 (sizeof(mpeg1_freq) / sizeof(unsigned int)) -#define SIZE_FREQ_MPEG2 (sizeof(mpeg2_freq) / sizeof(unsigned int)) -#define SIZE_BITRATE_MPEG1 (sizeof(mpeg1_bitrate) / sizeof(unsigned int)) -#define SIZE_BITRATE_MPEG2 (sizeof(mpeg2_bitrate) / sizeof(unsigned int)) - -static const int FORMAT_TAG_MAX_NB = 2; // PCM and PERSONAL (mandatory to have at least PCM and your format) -static const int FILTER_TAG_MAX_NB = 0; // this is a codec, not a filter - -// number of supported PCM formats -static const int FORMAT_MAX_NB_PCM = - 2 * // number of PCM channel mode (stereo/mono) - (SIZE_FREQ_MPEG1 + // number of MPEG 1 sampling freq - SIZE_FREQ_MPEG2); // number of MPEG 2 sampling freq - -////////////////////////////////////////////////////////////////////// -// -////////////////////////////////////////////////////////////////////// -bool bitrate_item::operator<(const bitrate_item & other_bitrate) const -{ - return (other_bitrate.frequency < frequency || - (other_bitrate.frequency == frequency && - (other_bitrate.bitrate < bitrate || - (other_bitrate.bitrate == bitrate && - (other_bitrate.channels < channels))))); -} - -////////////////////////////////////////////////////////////////////// -// Configuration Dialog -////////////////////////////////////////////////////////////////////// -/* -static CALLBACK ConfigProc( - HWND hwndDlg, // handle to dialog box -UINT uMsg, // message -WPARAM wParam, // first message parameter -LPARAM lParam // second message parameter -) -{ - BOOL bResult; - - switch (uMsg) { - case WM_COMMAND: - UINT command; - command = GET_WM_COMMAND_ID(wParam, lParam); - if (IDOK == command) - { - EndDialog(hwndDlg, (IDOK == command)); - } else if (IDCANCEL == command) - { - EndDialog(hwndDlg, (IDOK == command)); - } - bResult = FALSE; - break; - default: - bResult = FALSE; // will be treated by DefWindowProc -} - return bResult; -} - - -inline DWORD ACM::Configure(HWND hParentWindow, LPDRVCONFIGINFO pConfig) -{ - my_debug.OutPut(DEBUG_LEVEL_FUNC_START, "ACM : Configure (Parent Window = 0x%08X)",hParentWindow); - - DialogBoxParam( my_hModule, MAKEINTRESOURCE(IDD_CONFIG), hParentWindow, ::ConfigProc , (LPARAM)this); - - return DRVCNF_OK; // Can also return - // DRVCNF_CANCEL - // and DRVCNF_RESTART -} -*/ -////////////////////////////////////////////////////////////////////// -// About Dialog -////////////////////////////////////////////////////////////////////// - -static BOOL CALLBACK AboutProc( - HWND hwndDlg, // handle to dialog box -UINT uMsg, // message -WPARAM wParam, // first message parameter -LPARAM lParam // second message parameter -) -{ - static HBRUSH hBrushStatic = NULL; -// static LOGFONT lf; // structure for font information -// static HFONT hfnt; - static HCURSOR hcOverCursor = NULL; - BOOL bResult; - - switch (uMsg) { - case WM_INITDIALOG: - char tmp[150]; - wsprintf(tmp,"LAME MP3 codec v%s", ACM::GetVersionString()); - ::SetWindowText(GetDlgItem( hwndDlg, IDC_STATIC_ABOUT_TITLE), tmp); - -/* - ::GetObject(::GetStockObject(DEFAULT_GUI_FONT), sizeof(LOGFONT), &lf); - lf.lfUnderline = TRUE; - - hfnt = ::CreateFontIndirect(&lf); - - ::SendMessage(::GetDlgItem(hwndDlg,IDC_STATIC_ABOUT_URL), WM_SETFONT, (WPARAM) hfnt, TRUE); -* / - hBrushStatic = ::CreateSolidBrush(::GetSysColor (COLOR_BTNFACE)); -*/ hcOverCursor = ::LoadCursor(NULL,(LPCTSTR)IDC_HAND); - if (hcOverCursor == NULL) - hcOverCursor = ::LoadCursor(NULL,(LPCTSTR)IDC_CROSS); - - bResult = TRUE; - break; -/* - case WM_CTLCOLORSTATIC: - /// \todo only if there are URLs - if ((HWND)lParam == ::GetDlgItem(hwndDlg,IDC_STATIC_ABOUT_URL)) - { - ::SetTextColor((HDC)wParam, ::GetSysColor (COLOR_HIGHLIGHT)); - ::SetBkColor((HDC)wParam, ::GetSysColor (COLOR_BTNFACE)); - - return (LRESULT) hBrushStatic; - } - else - return (LRESULT) NULL; -*/ - case WM_MOUSEMOVE: - { - POINT pnt; - ::GetCursorPos(&pnt); - - RECT rect; - ::GetWindowRect( ::GetDlgItem(hwndDlg,IDC_STATIC_ABOUT_URL), &rect); - - if ( ::PtInRect(&rect,pnt) ) - { - ::SetCursor(hcOverCursor); - } - - - } - break; - - case WM_LBUTTONUP: - { - POINT pnt; - ::GetCursorPos(&pnt); - - RECT rect; - ::GetWindowRect( ::GetDlgItem(hwndDlg,IDC_STATIC_ABOUT_URL), &rect); - - TCHAR Url[200]; - bool bUrl = false; - if (::PtInRect(&rect,pnt)) - { - wsprintf(Url,get_lame_url()); - bUrl = true; - } - - if (bUrl) - { - LPSTR tmpStr; - HRESULT hresult = ::TranslateURL(Url, TRANSLATEURL_FL_GUESS_PROTOCOL|TRANSLATEURL_FL_GUESS_PROTOCOL, &tmpStr); - if (hresult == S_OK) - ::ShellExecute(hwndDlg,"open",tmpStr,NULL,"",SW_SHOWMAXIMIZED ); - else if (hresult == S_FALSE) - ::ShellExecute(hwndDlg,"open",Url,NULL,"",SW_SHOWMAXIMIZED ); - } - - } - break; - - case WM_COMMAND: - UINT command; - command = GET_WM_COMMAND_ID(wParam, lParam); - if (IDOK == command) - { - EndDialog(hwndDlg, TRUE); - } - bResult = FALSE; - break; - - case IDC_STATIC_ABOUT_URL: - break; - default: - bResult = FALSE; // will be treated by DefWindowProc -} - return bResult; -} - -inline DWORD ACM::About(HWND hParentWindow) -{ - my_debug.OutPut(DEBUG_LEVEL_FUNC_START, "ACM : About (Parent Window = 0x%08X)",hParentWindow); - - DialogBoxParam( my_hModule, MAKEINTRESOURCE(IDD_ABOUT), hParentWindow, ::AboutProc , (LPARAM)this); - - return DRVCNF_OK; // Can also return -// DRVCNF_CANCEL -// and DRVCNF_RESTART -} - - -////////////////////////////////////////////////////////////////////// -// Construction/Destruction -////////////////////////////////////////////////////////////////////// - -ACM::ACM( HMODULE hModule ) - :my_hModule(hModule), - my_hIcon(NULL), - my_debug(ADbg(DEBUG_LEVEL_CREATION)), - my_EncodingProperties(hModule) -{ - my_EncodingProperties.ParamsRestore(); - - /// \todo get the debug level from the registry - unsigned char DebugFileName[512]; - - char tmp[128]; - wsprintf(tmp,"LAMEacm 0x%08X",this); - my_debug.setPrefix(tmp); /// \todo get it from the registry - my_debug.setIncludeTime(true); /// \todo get it from the registry - - // Check in the registry if we have to Output Debug information - DebugFileName[0] = '\0'; - - HKEY OssKey; - if (RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SOFTWARE\\MUKOLI", 0, KEY_READ , &OssKey ) == ERROR_SUCCESS) { - DWORD DataType; - DWORD DebugFileNameSize = 512; - if (RegQueryValueEx( OssKey, "DebugFile", NULL, &DataType, DebugFileName, &DebugFileNameSize ) == ERROR_SUCCESS) { - if (DataType == REG_SZ) { - my_debug.setUseFile(true); - my_debug.setDebugFile((char *)DebugFileName); - my_debug.OutPut("Debug file is %s",(char *)DebugFileName); - } - } - } - wsprintf(VersionString,"%s - %s", ACM_VERSION, get_lame_version() ); - BuildBitrateTable(); - - my_debug.OutPut(DEBUG_LEVEL_FUNC_START, "New ACM Creation (0x%08X)",this); -} - -ACM::~ACM() -{ -// not used, it's done automatically when closing the driver if (my_hIcon != NULL) -// CloseHandle(my_hIcon); - - bitrate_table.clear(); - - my_debug.OutPut(DEBUG_LEVEL_FUNC_START, "ACM Deleted (0x%08X)",this); -} - -////////////////////////////////////////////////////////////////////// -// Main message handler -////////////////////////////////////////////////////////////////////// - -LONG ACM::DriverProcedure(const HDRVR hdrvr, const UINT msg, LONG lParam1, LONG lParam2) -{ - DWORD dwRes = 0L; - -//my_debug.OutPut(DEBUG_LEVEL_MSG, "message 0x%08X for ThisACM 0x%08X", msg, this); - -switch (msg) { - case DRV_INSTALL: - my_debug.OutPut(DEBUG_LEVEL_MSG, "DRV_INSTALL"); - // Sent when the driver is installed. - dwRes = DRVCNF_OK; // Can also return - break; // DRVCNF_CANCEL - // and DRV_RESTART - - case DRV_REMOVE: - // Sent when the driver is removed. - my_debug.OutPut(DEBUG_LEVEL_MSG, "DRV_REMOVE"); - dwRes = 1L; // return value ignored - break; - - case DRV_QUERYCONFIGURE: - my_debug.OutPut(DEBUG_LEVEL_MSG, "DRV_QUERYCONFIGURE"); - // Sent to determine if the driver can be - // configured. - dwRes = 1L; // Zero indicates configuration - break; // NOT supported - - case DRV_CONFIGURE: - my_debug.OutPut(DEBUG_LEVEL_MSG, "DRV_CONFIGURE"); - // Sent to display the configuration - // dialog box for the driver. -// dwRes = Configure( (HWND) lParam1, (LPDRVCONFIGINFO) lParam2 ); - if (my_EncodingProperties.Config(my_hModule, (HWND) lParam1)) - { - dwRes = DRVCNF_OK; // Can also return - // DRVCNF_CANCEL - // and DRVCNF_RESTART - } else { - dwRes = DRVCNF_CANCEL; - } - break; - - /************************************** - // ACM additional messages - ***************************************/ - - case ACMDM_DRIVER_ABOUT: - my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_DRIVER_ABOUT"); - - dwRes = About( (HWND) lParam1 ); - - break; - - case ACMDM_DRIVER_DETAILS: // acmDriverDetails - // Fill-in general informations about the driver/codec - my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_DRIVER_DETAILS"); - - dwRes = OnDriverDetails(hdrvr, (LPACMDRIVERDETAILS) lParam1); - - break; - - case ACMDM_FORMATTAG_DETAILS: // acmFormatTagDetails - my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_FORMATTAG_DETAILS"); - - dwRes = OnFormatTagDetails((LPACMFORMATTAGDETAILS) lParam1, lParam2); - - break; - - case ACMDM_FORMAT_DETAILS: // acmFormatDetails - my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_FORMAT_DETAILS"); - - dwRes = OnFormatDetails((LPACMFORMATDETAILS) lParam1, lParam2); - - break; - - case ACMDM_FORMAT_SUGGEST: // acmFormatSuggest - // Sent to determine if the driver can be - // configured. - my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_FORMAT_SUGGEST"); - dwRes = OnFormatSuggest((LPACMDRVFORMATSUGGEST) lParam1); - break; - - /************************************** - // ACM stream messages - ***************************************/ - - case ACMDM_STREAM_OPEN: - // Sent to determine if the driver can be - // configured. - my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_OPEN"); - dwRes = OnStreamOpen((LPACMDRVSTREAMINSTANCE) lParam1); - break; - - case ACMDM_STREAM_SIZE: - // returns a recommended size for a source - // or destination buffer on an ACM stream - my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_SIZE"); - dwRes = OnStreamSize((LPACMDRVSTREAMINSTANCE)lParam1, (LPACMDRVSTREAMSIZE)lParam2); - break; - - case ACMDM_STREAM_PREPARE: - // prepares an ACMSTREAMHEADER structure for - // an ACM stream conversion - my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_PREPARE"); - dwRes = OnStreamPrepareHeader((LPACMDRVSTREAMINSTANCE)lParam1, (LPACMSTREAMHEADER) lParam2); - break; - - case ACMDM_STREAM_UNPREPARE: - // cleans up the preparation performed by - // the ACMDM_STREAM_PREPARE message for an ACM stream - my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_UNPREPARE"); - dwRes = OnStreamUnPrepareHeader((LPACMDRVSTREAMINSTANCE)lParam1, (LPACMSTREAMHEADER) lParam2); - break; - - case ACMDM_STREAM_CONVERT: - // perform a conversion on the specified conversion stream - my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_CONVERT"); - dwRes = OnStreamConvert((LPACMDRVSTREAMINSTANCE)lParam1, (LPACMDRVSTREAMHEADER) lParam2); - - break; - - case ACMDM_STREAM_CLOSE: - // closes an ACM conversion stream - my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_CLOSE"); - dwRes = OnStreamClose((LPACMDRVSTREAMINSTANCE)lParam1); - break; - - /************************************** - // Unknown message - ***************************************/ - - default: - // Process any other messages. - my_debug.OutPut(DEBUG_LEVEL_MSG, "ACM::DriverProc unknown message (0x%08X), lParam1 = 0x%08X, lParam2 = 0x%08X", msg, lParam1, lParam2); - return DefDriverProc ((DWORD)this, hdrvr, msg, lParam1, lParam2); - } - - return dwRes; -} - -////////////////////////////////////////////////////////////////////// -// Special message handlers -////////////////////////////////////////////////////////////////////// -/*! - Retreive the config details of this ACM driver - The index represent the specified format - - \param a_FormatDetails will be filled with all the corresponding data -*/ -inline DWORD ACM::OnFormatDetails(LPACMFORMATDETAILS a_FormatDetails, const LPARAM a_Query) -{ - DWORD Result = ACMERR_NOTPOSSIBLE; - - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACM_FORMATDETAILS a_Query = 0x%08X",a_Query); - switch (a_Query & ACM_FORMATDETAILSF_QUERYMASK) { - - // Fill-in the informations corresponding to the FormatDetails->dwFormatTagIndex - case ACM_FORMATDETAILSF_INDEX : - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "enter ACM_FORMATDETAILSF_INDEX for index 0x%04X:%03d",a_FormatDetails->dwFormatTag,a_FormatDetails->dwFormatIndex); - if (a_FormatDetails->dwFormatTag == PERSONAL_FORMAT) { - if (a_FormatDetails->dwFormatIndex < GetNumberEncodingFormats()) { - LPWAVEFORMATEX WaveExt; - WaveExt = a_FormatDetails->pwfx; - - WaveExt->wFormatTag = PERSONAL_FORMAT; - - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "format in : channels %d, sample rate %d", WaveExt->nChannels, WaveExt->nSamplesPerSec); - GetMP3FormatForIndex(a_FormatDetails->dwFormatIndex, *WaveExt, a_FormatDetails->szFormat); - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "format out : channels %d, sample rate %d", WaveExt->nChannels, WaveExt->nSamplesPerSec); - Result = MMSYSERR_NOERROR; - } - else - { - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACM_FORMATDETAILSF_INDEX unknown index 0x%04X:%03d",a_FormatDetails->dwFormatTag,a_FormatDetails->dwFormatIndex); - } - } - else if (a_FormatDetails->dwFormatTag == WAVE_FORMAT_PCM) { - if (a_FormatDetails->dwFormatIndex < FORMAT_MAX_NB_PCM) { - LPWAVEFORMATEX WaveExt; - WaveExt = a_FormatDetails->pwfx; - - WaveExt->wFormatTag = WAVE_FORMAT_PCM; - - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "format in : channels %d, sample rate %d", WaveExt->nChannels, WaveExt->nSamplesPerSec); - GetPCMFormatForIndex(a_FormatDetails->dwFormatIndex, *WaveExt, a_FormatDetails->szFormat); - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "format out : channels %d, sample rate %d", WaveExt->nChannels, WaveExt->nSamplesPerSec); - Result = MMSYSERR_NOERROR; - } - else - { - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACM_FORMATDETAILSF_INDEX unknown index 0x%04X:%03d",a_FormatDetails->dwFormatTag,a_FormatDetails->dwFormatIndex); - } - } - else - { - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Unknown a_FormatDetails->dwFormatTag = 0x%08X",a_FormatDetails->dwFormatTag); - } - - case ACM_FORMATDETAILSF_FORMAT : - /// \todo we may output the corresponding strong (only for personal format) - LPWAVEFORMATEX WaveExt; - WaveExt = a_FormatDetails->pwfx; - - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "enter ACM_FORMATDETAILSF_FORMAT : 0x%04X:%03d, format in : channels %d, sample rate %d",a_FormatDetails->dwFormatTag,a_FormatDetails->dwFormatIndex, WaveExt->nChannels, WaveExt->nSamplesPerSec); - - Result = MMSYSERR_NOERROR; - break; - - default: - Result = ACMERR_NOTPOSSIBLE; - break; - } - - a_FormatDetails->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC; - - return Result; -} - -/*! - Retreive the details of each known format by this ACM driver - The index represent the specified format (0 = MP3 / 1 = PCM) - - \param a_FormatTagDetails will be filled with all the corresponding data -*/ -inline DWORD ACM::OnFormatTagDetails(LPACMFORMATTAGDETAILS a_FormatTagDetails, const LPARAM a_Query) -{ - DWORD Result; - DWORD the_format = WAVE_FORMAT_UNKNOWN; // the format to give details - - if (a_FormatTagDetails->cbStruct >= sizeof(*a_FormatTagDetails)) { - - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACMDM_FORMATTAG_DETAILS, a_Query = 0x%08X",a_Query); - switch(a_Query & ACM_FORMATTAGDETAILSF_QUERYMASK) { - - case ACM_FORMATTAGDETAILSF_INDEX: - // Fill-in the informations corresponding to the a_FormatDetails->dwFormatTagIndex - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "get ACM_FORMATTAGDETAILSF_INDEX for index %03d",a_FormatTagDetails->dwFormatTagIndex); - - if (a_FormatTagDetails->dwFormatTagIndex < FORMAT_TAG_MAX_NB) { - switch (a_FormatTagDetails->dwFormatTagIndex) - { - case 0: - the_format = PERSONAL_FORMAT; - break; - default : - the_format = WAVE_FORMAT_PCM; - break; - } - } - else - { - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACM_FORMATTAGDETAILSF_INDEX for unsupported index %03d",a_FormatTagDetails->dwFormatTagIndex); - Result = ACMERR_NOTPOSSIBLE; - } - break; - - case ACM_FORMATTAGDETAILSF_FORMATTAG: - // Fill-in the informations corresponding to the a_FormatDetails->dwFormatTagIndex and hdrvr given - switch (a_FormatTagDetails->dwFormatTag) - { - case WAVE_FORMAT_PCM: - the_format = WAVE_FORMAT_PCM; - break; - case PERSONAL_FORMAT: - the_format = PERSONAL_FORMAT; - break; - default: - return (ACMERR_NOTPOSSIBLE); - } - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "get ACM_FORMATTAGDETAILSF_FORMATTAG for index 0x%02X, cStandardFormats = %d",a_FormatTagDetails->dwFormatTagIndex,a_FormatTagDetails->cStandardFormats); - break; - case ACM_FORMATTAGDETAILSF_LARGESTSIZE: - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACM_FORMATTAGDETAILSF_LARGESTSIZE not used"); - Result = 0L; - break; - default: - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnFormatTagDetails Unknown Format tag query"); - Result = MMSYSERR_NOTSUPPORTED; - break; - } - - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnFormatTagDetails the_format = 0x%08X",the_format); - switch(the_format) - { - case WAVE_FORMAT_PCM: - a_FormatTagDetails->dwFormatTag = WAVE_FORMAT_PCM; - a_FormatTagDetails->dwFormatTagIndex = 0; - a_FormatTagDetails->cbFormatSize = sizeof(PCMWAVEFORMAT); - /// \note 0 may mean we don't know how to decode - a_FormatTagDetails->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC; - a_FormatTagDetails->cStandardFormats = FORMAT_MAX_NB_PCM; - // should be filled by Windows a_FormatTagDetails->szFormatTag[0] = '\0'; - Result = MMSYSERR_NOERROR; - break; - case PERSONAL_FORMAT: - a_FormatTagDetails->dwFormatTag = PERSONAL_FORMAT; - a_FormatTagDetails->dwFormatTagIndex = 1; - a_FormatTagDetails->cbFormatSize = SIZE_FORMAT_STRUCT; - a_FormatTagDetails->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC; - a_FormatTagDetails->cStandardFormats = GetNumberEncodingFormats(); - lstrcpyW( a_FormatTagDetails->szFormatTag, L"Lame MP3" ); - Result = MMSYSERR_NOERROR; - break; - default: - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnFormatTagDetails Unknown format 0x%08X",the_format); - return (ACMERR_NOTPOSSIBLE); - } - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnFormatTagDetails %d possibilities for format 0x%08X",a_FormatTagDetails->cStandardFormats,the_format); - } - else - { - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "a_FormatTagDetails->cbStruct < sizeof(*a_FormatDetails)"); - Result = ACMERR_NOTPOSSIBLE; - } - - return Result; -} - -/*! - Retreive the global details of this ACM driver - - \param a_DriverDetail will be filled with all the corresponding data -*/ -inline DWORD ACM::OnDriverDetails(const HDRVR hdrvr, LPACMDRIVERDETAILS a_DriverDetail) -{ - if (my_hIcon == NULL) - my_hIcon = LoadIcon(GetDriverModuleHandle(hdrvr), MAKEINTRESOURCE(IDI_ICON)); - a_DriverDetail->hicon = my_hIcon; - - a_DriverDetail->fccType = ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC; - a_DriverDetail->fccComp = ACMDRIVERDETAILS_FCCCOMP_UNDEFINED; - - /// \note this is an explicit hack of the FhG values - /// \note later it could be a new value when the decoding is done - a_DriverDetail->wMid = MM_FRAUNHOFER_IIS; - a_DriverDetail->wPid = MM_FHGIIS_MPEGLAYER3; - - a_DriverDetail->vdwACM = VERSION_MSACM; - a_DriverDetail->vdwDriver = VERSION_ACM_DRIVER; - a_DriverDetail->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC; - a_DriverDetail->cFormatTags = FORMAT_TAG_MAX_NB; // 2 : MP3 and PCM -// a_DriverDetail->cFormatTags = 1; // 2 : MP3 and PCM - a_DriverDetail->cFilterTags = FILTER_TAG_MAX_NB; - - lstrcpyW( a_DriverDetail->szShortName, L"LAME MP3" ); - char tmpStr[128]; - wsprintf(tmpStr, "LAME MP3 Codec v%s", GetVersionString()); - int u = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, tmpStr, -1, a_DriverDetail->szLongName, 0); - MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, tmpStr, -1, a_DriverDetail->szLongName, u); - lstrcpyW( a_DriverDetail->szCopyright, L"2002 Steve Lhomme" ); - lstrcpyW( a_DriverDetail->szLicensing, L"LGPL (see gnu.org)" ); - /// \todo update this part when the code changes - lstrcpyW( a_DriverDetail->szFeatures , L"only CBR implementation" ); - - return MMSYSERR_NOERROR; // Can also return DRVCNF_CANCEL -} - -/*! - Suggest an output format for the specified input format - - \param a_FormatSuggest will be filled with all the corresponding data -*/ -inline DWORD ACM::OnFormatSuggest(LPACMDRVFORMATSUGGEST a_FormatSuggest) -{ - DWORD Result = MMSYSERR_NOTSUPPORTED; - DWORD fdwSuggest = (ACM_FORMATSUGGESTF_TYPEMASK & a_FormatSuggest->fdwSuggest); - -my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest %s%s%s%s (0x%08X)", - (fdwSuggest & ACM_FORMATSUGGESTF_NCHANNELS) ? "channels, ":"", - (fdwSuggest & ACM_FORMATSUGGESTF_NSAMPLESPERSEC) ? "samples/sec, ":"", - (fdwSuggest & ACM_FORMATSUGGESTF_WBITSPERSAMPLE) ? "bits/sample, ":"", - (fdwSuggest & ACM_FORMATSUGGESTF_WFORMATTAG) ? "format, ":"", - fdwSuggest); - -my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest for source format = 0x%04X, channels = %d, Samples/s = %d, AvgB/s = %d, BlockAlign = %d, b/sample = %d", - a_FormatSuggest->pwfxSrc->wFormatTag, - a_FormatSuggest->pwfxSrc->nChannels, - a_FormatSuggest->pwfxSrc->nSamplesPerSec, - a_FormatSuggest->pwfxSrc->nAvgBytesPerSec, - a_FormatSuggest->pwfxSrc->nBlockAlign, - a_FormatSuggest->pwfxSrc->wBitsPerSample); - -my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggested destination format = 0x%04X, channels = %d, Samples/s = %d, AvgB/s = %d, BlockAlign = %d, b/sample = %d", - a_FormatSuggest->pwfxDst->wFormatTag, - a_FormatSuggest->pwfxDst->nChannels, - a_FormatSuggest->pwfxDst->nSamplesPerSec, - a_FormatSuggest->pwfxDst->nAvgBytesPerSec, - a_FormatSuggest->pwfxDst->nBlockAlign, - a_FormatSuggest->pwfxDst->wBitsPerSample); - - switch (a_FormatSuggest->pwfxSrc->wFormatTag) - { - case WAVE_FORMAT_PCM: - /// \todo handle here the decoding ? - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest for PCM source"); - // - // if the destination format tag is restricted, verify that - // it is within our capabilities... - // - // this driver is able to decode to PCM - // - if (ACM_FORMATSUGGESTF_WFORMATTAG & fdwSuggest) - { - if (PERSONAL_FORMAT != a_FormatSuggest->pwfxDst->wFormatTag) - return (ACMERR_NOTPOSSIBLE); - } - else - { - a_FormatSuggest->pwfxDst->wFormatTag = PERSONAL_FORMAT; - } - - -my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest succeed A"); - // - // if the destination channel count is restricted, verify that - // it is within our capabilities... - // - // this driver is not able to change the number of channels - // - if (ACM_FORMATSUGGESTF_NCHANNELS & fdwSuggest) - { - if (a_FormatSuggest->pwfxSrc->nChannels != a_FormatSuggest->pwfxDst->nChannels) - return (ACMERR_NOTPOSSIBLE); - } - else - { - a_FormatSuggest->pwfxDst->nChannels = a_FormatSuggest->pwfxSrc->nChannels; - } - - if (a_FormatSuggest->pwfxSrc->nChannels != 1 && a_FormatSuggest->pwfxSrc->nChannels != 2) - return MMSYSERR_INVALPARAM; - - -my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest succeed B"); - // - // if the destination samples per second is restricted, verify - // that it is within our capabilities... - // - // this driver is not able to change the sample rate - // - if (ACM_FORMATSUGGESTF_NSAMPLESPERSEC & fdwSuggest) - { - if (a_FormatSuggest->pwfxSrc->nSamplesPerSec != a_FormatSuggest->pwfxDst->nSamplesPerSec) - return (ACMERR_NOTPOSSIBLE); - } - else - { - a_FormatSuggest->pwfxDst->nSamplesPerSec = a_FormatSuggest->pwfxSrc->nSamplesPerSec; - } - - -my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest succeed C"); - // - // if the destination bits per sample is restricted, verify - // that it is within our capabilities... - // - // We prefer decoding to 16-bit PCM. - // - if (ACM_FORMATSUGGESTF_WBITSPERSAMPLE & fdwSuggest) - { - if ( (16 != a_FormatSuggest->pwfxDst->wBitsPerSample) && (8 != a_FormatSuggest->pwfxDst->wBitsPerSample) ) - return (ACMERR_NOTPOSSIBLE); - } - else - { - a_FormatSuggest->pwfxDst->wBitsPerSample = 16; - } - - // a_FormatSuggest->pwfxDst->nBlockAlign = FORMAT_BLOCK_ALIGN; - a_FormatSuggest->pwfxDst->nBlockAlign = a_FormatSuggest->pwfxDst->nChannels * a_FormatSuggest->pwfxDst->wBitsPerSample / 8; - - a_FormatSuggest->pwfxDst->nAvgBytesPerSec = a_FormatSuggest->pwfxDst->nChannels * 64000 / 8; - - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest succeed"); - Result = MMSYSERR_NOERROR; - - - break; - case PERSONAL_FORMAT: - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest for PERSONAL source"); - // - // if the destination format tag is restricted, verify that - // it is within our capabilities... - // - // this driver is able to decode to PCM - // - if (ACM_FORMATSUGGESTF_WFORMATTAG & fdwSuggest) - { - if (WAVE_FORMAT_PCM != a_FormatSuggest->pwfxDst->wFormatTag) - return (ACMERR_NOTPOSSIBLE); - } - else - { - a_FormatSuggest->pwfxDst->wFormatTag = WAVE_FORMAT_PCM; - } - - - // - // if the destination channel count is restricted, verify that - // it is within our capabilities... - // - // this driver is not able to change the number of channels - // - if (ACM_FORMATSUGGESTF_NCHANNELS & fdwSuggest) - { - if (a_FormatSuggest->pwfxSrc->nChannels != a_FormatSuggest->pwfxDst->nChannels) - return (ACMERR_NOTPOSSIBLE); - } - else - { - a_FormatSuggest->pwfxDst->nChannels = a_FormatSuggest->pwfxSrc->nChannels; - } - - - // - // if the destination samples per second is restricted, verify - // that it is within our capabilities... - // - // this driver is not able to change the sample rate - // - if (ACM_FORMATSUGGESTF_NSAMPLESPERSEC & fdwSuggest) - { - if (a_FormatSuggest->pwfxSrc->nSamplesPerSec != a_FormatSuggest->pwfxDst->nSamplesPerSec) - return (ACMERR_NOTPOSSIBLE); - } - else - { - a_FormatSuggest->pwfxDst->nSamplesPerSec = a_FormatSuggest->pwfxSrc->nSamplesPerSec; - } - - - // - // if the destination bits per sample is restricted, verify - // that it is within our capabilities... - // - // We prefer decoding to 16-bit PCM. - // - if (ACM_FORMATSUGGESTF_WBITSPERSAMPLE & fdwSuggest) - { - if ( (16 != a_FormatSuggest->pwfxDst->wBitsPerSample) && (8 != a_FormatSuggest->pwfxDst->wBitsPerSample) ) - return (ACMERR_NOTPOSSIBLE); - } - else - { - a_FormatSuggest->pwfxDst->wBitsPerSample = 16; - } - - // a_FormatSuggest->pwfxDst->nBlockAlign = FORMAT_BLOCK_ALIGN; - a_FormatSuggest->pwfxDst->nBlockAlign = a_FormatSuggest->pwfxDst->nChannels * a_FormatSuggest->pwfxDst->wBitsPerSample / 8; - - /// \todo this value must be a correct one ! - a_FormatSuggest->pwfxDst->nAvgBytesPerSec = a_FormatSuggest->pwfxDst->nSamplesPerSec * a_FormatSuggest->pwfxDst->nChannels * a_FormatSuggest->pwfxDst->wBitsPerSample / 8; - - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest succeed"); - Result = MMSYSERR_NOERROR; - - - break; - } - - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggested destination format = 0x%04X, channels = %d, Samples/s = %d, AvgB/s = %d, BlockAlign = %d, b/sample = %d", - a_FormatSuggest->pwfxDst->wFormatTag, - a_FormatSuggest->pwfxDst->nChannels, - a_FormatSuggest->pwfxDst->nSamplesPerSec, - a_FormatSuggest->pwfxDst->nAvgBytesPerSec, - a_FormatSuggest->pwfxDst->nBlockAlign, - a_FormatSuggest->pwfxDst->wBitsPerSample); - - return Result; -} - -/*! - Create a stream instance for decoding/encoding - - \param a_StreamInstance contain information about the stream desired -*/ -inline DWORD ACM::OnStreamOpen(LPACMDRVSTREAMINSTANCE a_StreamInstance) -{ - DWORD Result = ACMERR_NOTPOSSIBLE; - - // - // the most important condition to check before doing anything else - // is that this ACM driver can actually perform the conversion we are - // being opened for. this check should fail as quickly as possible - // if the conversion is not possible by this driver. - // - // it is VERY important to fail quickly so the ACM can attempt to - // find a driver that is suitable for the conversion. also note that - // the ACM may call this driver several times with slightly different - // format specifications before giving up. - // - // this driver first verifies that the source and destination formats - // are acceptable... - // - switch (a_StreamInstance->pwfxSrc->wFormatTag) - { - case WAVE_FORMAT_PCM: - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream for PCM source (%05d samples %d channels %d bits/sample)",a_StreamInstance->pwfxSrc->nSamplesPerSec,a_StreamInstance->pwfxSrc->nChannels,a_StreamInstance->pwfxSrc->wBitsPerSample); - if (a_StreamInstance->pwfxDst->wFormatTag == PERSONAL_FORMAT) - { - unsigned int OutputFrequency; - - /// \todo Smart mode - if (my_EncodingProperties.GetSmartOutputMode()) - OutputFrequency = ACMStream::GetOutputSampleRate(a_StreamInstance->pwfxSrc->nSamplesPerSec,a_StreamInstance->pwfxDst->nAvgBytesPerSec,a_StreamInstance->pwfxDst->nChannels); - else - OutputFrequency = a_StreamInstance->pwfxSrc->nSamplesPerSec; - - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream for PERSONAL output (%05d samples %d channels %d bits/sample %d kbps)",a_StreamInstance->pwfxDst->nSamplesPerSec,a_StreamInstance->pwfxDst->nChannels,a_StreamInstance->pwfxDst->wBitsPerSample,8 * a_StreamInstance->pwfxDst->nAvgBytesPerSec); - - /// \todo add the possibility to have channel resampling (mono to stereo / stereo to mono) - /// \todo support resampling ? - /// \todo only do the test on OutputFrequency in "Smart Output" mode - if (a_StreamInstance->pwfxDst->nSamplesPerSec != OutputFrequency || -// a_StreamInstance->pwfxSrc->nSamplesPerSec != a_StreamInstance->pwfxDst->nSamplesPerSec || - a_StreamInstance->pwfxSrc->nChannels != a_StreamInstance->pwfxDst->nChannels || - a_StreamInstance->pwfxSrc->wBitsPerSample != 16) - { - Result = ACMERR_NOTPOSSIBLE; - } else { - if ((a_StreamInstance->fdwOpen & ACM_STREAMOPENF_QUERY) == 0) - { - ACMStream * the_stream = ACMStream::Create(); - a_StreamInstance->dwInstance = (DWORD) the_stream; - - if (the_stream != NULL) - { - MPEGLAYER3WAVEFORMAT * casted = (MPEGLAYER3WAVEFORMAT *) a_StreamInstance->pwfxDst; - vbr_mode a_mode = (casted->fdwFlags-2 == 0)?vbr_abr:vbr_off; - if (the_stream->init(a_StreamInstance->pwfxDst->nSamplesPerSec, - OutputFrequency, - a_StreamInstance->pwfxDst->nChannels, - a_StreamInstance->pwfxDst->nAvgBytesPerSec, - a_mode)) - Result = MMSYSERR_NOERROR; - else - ACMStream::Erase( the_stream ); - } - } - else - { - Result = MMSYSERR_NOERROR; - } - } - } - break; - case PERSONAL_FORMAT: - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream for PERSONAL source (%05d samples %d channels %d bits/sample %d kbps)",a_StreamInstance->pwfxSrc->nSamplesPerSec,a_StreamInstance->pwfxSrc->nChannels,a_StreamInstance->pwfxSrc->wBitsPerSample,8 * a_StreamInstance->pwfxSrc->nAvgBytesPerSec); - if (a_StreamInstance->pwfxDst->wFormatTag == WAVE_FORMAT_PCM) - { -#ifdef ENABLE_DECODING - if ((a_StreamInstance->fdwOpen & ACM_STREAMOPENF_QUERY) == 0) - { - /// \todo create the decoding stream - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream for PCM output (%05d samples %d channels %d bits/sample %d B/s)",a_StreamInstance->pwfxDst->nSamplesPerSec,a_StreamInstance->pwfxDst->nChannels,a_StreamInstance->pwfxDst->wBitsPerSample,a_StreamInstance->pwfxDst->nAvgBytesPerSec); - - DecodeStream * the_stream = DecodeStream::Create(); - a_StreamInstance->dwInstance = (DWORD) the_stream; - - if (the_stream != NULL) - { - if (the_stream->init(a_StreamInstance->pwfxDst->nSamplesPerSec, - a_StreamInstance->pwfxDst->nChannels, - a_StreamInstance->pwfxDst->nAvgBytesPerSec, - a_StreamInstance->pwfxSrc->nAvgBytesPerSec)) - Result = MMSYSERR_NOERROR; - else - DecodeStream::Erase( the_stream ); - } - } - else - { - /// \todo decoding verification - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream is valid"); - Result = MMSYSERR_NOERROR; - } -#endif // ENABLE_DECODING - } - break; - } - - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream Result = %d",Result); - return Result; -} - -inline DWORD ACM::OnStreamSize(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMDRVSTREAMSIZE the_StreamSize) -{ - DWORD Result = ACMERR_NOTPOSSIBLE; - - switch (ACM_STREAMSIZEF_QUERYMASK & the_StreamSize->fdwSize) - { - case ACM_STREAMSIZEF_DESTINATION: - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Get source buffer size for destination size = %d",the_StreamSize->cbDstLength); - break; - case ACM_STREAMSIZEF_SOURCE: - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Get destination buffer size for source size = %d",the_StreamSize->cbSrcLength); - if (WAVE_FORMAT_PCM == a_StreamInstance->pwfxSrc->wFormatTag && - PERSONAL_FORMAT == a_StreamInstance->pwfxDst->wFormatTag) - { - ACMStream * the_stream = (ACMStream *) a_StreamInstance->dwInstance; - if (the_stream != NULL) - { - the_StreamSize->cbDstLength = the_stream->GetOutputSizeForInput(the_StreamSize->cbSrcLength); - Result = MMSYSERR_NOERROR; - } - } - else if (PERSONAL_FORMAT == a_StreamInstance->pwfxSrc->wFormatTag && - WAVE_FORMAT_PCM== a_StreamInstance->pwfxDst->wFormatTag) - { -#ifdef ENABLE_DECODING - DecodeStream * the_stream = (DecodeStream *) a_StreamInstance->dwInstance; - if (the_stream != NULL) - { - the_StreamSize->cbDstLength = the_stream->GetOutputSizeForInput(the_StreamSize->cbSrcLength); - Result = MMSYSERR_NOERROR; - } -#endif // ENABLE_DECODING - } - break; - default: - Result = MMSYSERR_INVALFLAG; - break; - } - - return Result; -} - -inline DWORD ACM::OnStreamClose(LPACMDRVSTREAMINSTANCE a_StreamInstance) -{ - DWORD Result = ACMERR_NOTPOSSIBLE; - - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnStreamClose the stream 0x%X",a_StreamInstance->dwInstance); - if (WAVE_FORMAT_PCM == a_StreamInstance->pwfxSrc->wFormatTag && - PERSONAL_FORMAT == a_StreamInstance->pwfxDst->wFormatTag) - { - ACMStream::Erase( (ACMStream *) a_StreamInstance->dwInstance ); - } - else if (PERSONAL_FORMAT == a_StreamInstance->pwfxSrc->wFormatTag && - WAVE_FORMAT_PCM== a_StreamInstance->pwfxDst->wFormatTag) - { -#ifdef ENABLE_DECODING - DecodeStream::Erase( (DecodeStream *) a_StreamInstance->dwInstance ); -#endif // ENABLE_DECODING - } - - // nothing to do yet - Result = MMSYSERR_NOERROR; - - return Result; -} - -inline DWORD ACM::OnStreamPrepareHeader(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMSTREAMHEADER a_StreamHeader) -{ - DWORD Result = ACMERR_NOTPOSSIBLE; - - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, " prepare : Src : %d (0x%08X) / %d - Dst : %d (0x%08X) / %d" - , a_StreamHeader->cbSrcLength - , a_StreamHeader->pbSrc - , a_StreamHeader->cbSrcLengthUsed - , a_StreamHeader->cbDstLength - , a_StreamHeader->pbDst - , a_StreamHeader->cbDstLengthUsed - ); - - if (WAVE_FORMAT_PCM == a_StreamInstance->pwfxSrc->wFormatTag && - PERSONAL_FORMAT == a_StreamInstance->pwfxDst->wFormatTag) - { - ACMStream * the_stream = (ACMStream *)a_StreamInstance->dwInstance; - - if (the_stream->open(my_EncodingProperties)) - Result = MMSYSERR_NOERROR; - } - else if (PERSONAL_FORMAT == a_StreamInstance->pwfxSrc->wFormatTag && - WAVE_FORMAT_PCM == a_StreamInstance->pwfxDst->wFormatTag) - { -#ifdef ENABLE_DECODING - DecodeStream * the_stream = (DecodeStream *)a_StreamInstance->dwInstance; - - if (the_stream->open()) - Result = MMSYSERR_NOERROR; -#endif // ENABLE_DECODING - } - - return Result; -} - -inline DWORD ACM::OnStreamUnPrepareHeader(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMSTREAMHEADER a_StreamHeader) -{ - DWORD Result = ACMERR_NOTPOSSIBLE; - - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "unprepare : Src : %d / %d - Dst : %d / %d" - , a_StreamHeader->cbSrcLength - , a_StreamHeader->cbSrcLengthUsed - , a_StreamHeader->cbDstLength - , a_StreamHeader->cbDstLengthUsed - ); - if (WAVE_FORMAT_PCM == a_StreamInstance->pwfxSrc->wFormatTag && - PERSONAL_FORMAT == a_StreamInstance->pwfxDst->wFormatTag) - { - ACMStream * the_stream = (ACMStream *)a_StreamInstance->dwInstance; - DWORD OutputSize = a_StreamHeader->cbDstLength; - - if (the_stream->close(a_StreamHeader->pbDst, &OutputSize) && (OutputSize <= a_StreamHeader->cbDstLength)) - { - a_StreamHeader->cbDstLengthUsed = OutputSize; - Result = MMSYSERR_NOERROR; - } - } - else if (PERSONAL_FORMAT == a_StreamInstance->pwfxSrc->wFormatTag && - WAVE_FORMAT_PCM== a_StreamInstance->pwfxDst->wFormatTag) - { -#ifdef ENABLE_DECODING - DecodeStream * the_stream = (DecodeStream *)a_StreamInstance->dwInstance; - DWORD OutputSize = a_StreamHeader->cbDstLength; - - if (the_stream->close(a_StreamHeader->pbDst, &OutputSize) && (OutputSize <= a_StreamHeader->cbDstLength)) - { - a_StreamHeader->cbDstLengthUsed = OutputSize; - Result = MMSYSERR_NOERROR; - } -#endif // ENABLE_DECODING - } - - return Result; -} - -inline DWORD ACM::OnStreamConvert(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMDRVSTREAMHEADER a_StreamHeader) -{ - DWORD Result = ACMERR_NOTPOSSIBLE; - - if (WAVE_FORMAT_PCM == a_StreamInstance->pwfxSrc->wFormatTag && - PERSONAL_FORMAT == a_StreamInstance->pwfxDst->wFormatTag) - { - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnStreamConvert SRC = PCM (encode)"); - - ACMStream * the_stream = (ACMStream *) a_StreamInstance->dwInstance; - if (the_stream != NULL) - { - if (the_stream->ConvertBuffer( a_StreamHeader )) - Result = MMSYSERR_NOERROR; - } - } - else if (PERSONAL_FORMAT == a_StreamInstance->pwfxSrc->wFormatTag && - WAVE_FORMAT_PCM == a_StreamInstance->pwfxDst->wFormatTag) - { - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnStreamConvert SRC = MP3 (decode)"); - -#ifdef ENABLE_DECODING - DecodeStream * the_stream = (DecodeStream *) a_StreamInstance->dwInstance; - if (the_stream != NULL) - { - if (the_stream->ConvertBuffer( a_StreamHeader )) - Result = MMSYSERR_NOERROR; - } -#endif // ENABLE_DECODING - } - else - my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnStreamConvert unsupported conversion"); - - return Result; -} - - -void ACM::GetMP3FormatForIndex(const DWORD the_Index, WAVEFORMATEX & the_Format, unsigned short the_String[ACMFORMATDETAILS_FORMAT_CHARS]) const -{ - int Block_size; - char temp[ACMFORMATDETAILS_FORMAT_CHARS]; - - - if (the_Index < bitrate_table.size()) - { - // the_Format.wBitsPerSample = 16; - the_Format.wBitsPerSample = 0; - - /// \todo handle more channel modes (mono, stereo, joint-stereo, dual-channel) - // the_Format.nChannels = SIZE_CHANNEL_MODE - int(the_Index % SIZE_CHANNEL_MODE); - - the_Format.nBlockAlign = 1; - - the_Format.nSamplesPerSec = bitrate_table[the_Index].frequency; - the_Format.nAvgBytesPerSec = bitrate_table[the_Index].bitrate * 1000 / 8; - if (bitrate_table[the_Index].frequency >= mpeg1_freq[SIZE_FREQ_MPEG1-1]) - Block_size = 1152; - else - Block_size = 576; - - the_Format.nChannels = bitrate_table[the_Index].channels; - - the_Format.cbSize = sizeof(MPEGLAYER3WAVEFORMAT) - sizeof(WAVEFORMATEX); - MPEGLAYER3WAVEFORMAT * tmpFormat = (MPEGLAYER3WAVEFORMAT *) &the_Format; - tmpFormat->wID = 1; - // this is the only way I found to know if we do CBR or ABR - tmpFormat->fdwFlags = 2 + ((bitrate_table[the_Index].mode == vbr_abr)?0:2); - tmpFormat->nBlockSize = Block_size * the_Format.nAvgBytesPerSec / the_Format.nSamplesPerSec; - tmpFormat->nFramesPerBlock = 1; - tmpFormat->nCodecDelay = 0; // 0x0571 on FHG - - /// \todo : generate the string with the appropriate stereo mode - if (bitrate_table[the_Index].mode == vbr_abr) - wsprintfA( temp, "%d Hz, %d kbps ABR, %s", the_Format.nSamplesPerSec, the_Format.nAvgBytesPerSec * 8 / 1000, (the_Format.nChannels == 1)?"Mono":"Stereo"); - else - wsprintfA( temp, "%d Hz, %d kbps CBR, %s", the_Format.nSamplesPerSec, the_Format.nAvgBytesPerSec * 8 / 1000, (the_Format.nChannels == 1)?"Mono":"Stereo"); - - MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, temp, -1, the_String, ACMFORMATDETAILS_FORMAT_CHARS); - } - } - -void ACM::GetPCMFormatForIndex(const DWORD the_Index, WAVEFORMATEX & the_Format, unsigned short the_String[ACMFORMATDETAILS_FORMAT_CHARS]) const -{ - the_Format.nChannels = SIZE_CHANNEL_MODE - int(the_Index % SIZE_CHANNEL_MODE); - the_Format.wBitsPerSample = 16; - the_Format.nBlockAlign = the_Format.nChannels * the_Format.wBitsPerSample / 8; - - - DWORD a_Channel_Independent = the_Index / SIZE_CHANNEL_MODE; - - // first MPEG1 frequencies - if (a_Channel_Independent < SIZE_FREQ_MPEG1) - { - the_Format.nSamplesPerSec = mpeg1_freq[a_Channel_Independent]; - } - else - { - a_Channel_Independent -= SIZE_FREQ_MPEG1; - the_Format.nSamplesPerSec = mpeg2_freq[a_Channel_Independent]; - } - - the_Format.nAvgBytesPerSec = the_Format.nSamplesPerSec * the_Format.nChannels * the_Format.wBitsPerSample / 8; -} - -DWORD ACM::GetNumberEncodingFormats() const -{ - return bitrate_table.size(); -} - -bool ACM::IsSmartOutput(const int frequency, const int bitrate, const int channels) const -{ - double compression_ratio = double(frequency * 2 * channels) / double(bitrate * 100); - -//my_debug.OutPut(DEBUG_LEVEL_FUNC_DEBUG, "compression_ratio %f, freq %d, bitrate %d, channels %d", compression_ratio, frequency, bitrate, channels); - - if(my_EncodingProperties.GetSmartOutputMode()) - return (compression_ratio <= my_EncodingProperties.GetSmartRatio()); - else return true; -} - -void ACM::BuildBitrateTable() -{ - my_debug.OutPut("entering BuildBitrateTable"); - - // fill the table - unsigned int channel,bitrate,freq; - - bitrate_table.clear(); - - // CBR bitrates - for (channel = 0;channel < SIZE_CHANNEL_MODE;channel++) - { - // MPEG I - for (freq = 0;freq < SIZE_FREQ_MPEG1;freq++) - { - for (bitrate = 0;bitrate < SIZE_BITRATE_MPEG1;bitrate++) - { - - if (!my_EncodingProperties.GetSmartOutputMode() || IsSmartOutput(mpeg1_freq[freq], mpeg1_bitrate[bitrate], channel+1)) - { - bitrate_item bitrate_table_tmp; - - bitrate_table_tmp.frequency = mpeg1_freq[freq]; - bitrate_table_tmp.bitrate = mpeg1_bitrate[bitrate]; - bitrate_table_tmp.channels = channel+1; - bitrate_table_tmp.mode = vbr_off; - bitrate_table.push_back(bitrate_table_tmp); - } - } - } - // MPEG II / II.5 - for (freq = 0;freq < SIZE_FREQ_MPEG2;freq++) - { - for (bitrate = 0;bitrate < SIZE_BITRATE_MPEG2;bitrate++) - { - if (!my_EncodingProperties.GetSmartOutputMode() || IsSmartOutput(mpeg2_freq[freq], mpeg2_bitrate[bitrate], channel+1)) - { - bitrate_item bitrate_table_tmp; - - bitrate_table_tmp.frequency = mpeg2_freq[freq]; - bitrate_table_tmp.bitrate = mpeg2_bitrate[bitrate]; - bitrate_table_tmp.channels = channel+1; - bitrate_table_tmp.mode = vbr_abr; - bitrate_table.push_back(bitrate_table_tmp); - } - } - } - } - - if (my_EncodingProperties.GetAbrOutputMode()) - // ABR bitrates - { - for (channel = 0;channel < SIZE_CHANNEL_MODE;channel++) - { - // MPEG I - for (freq = 0;freq < SIZE_FREQ_MPEG1;freq++) - { - for (bitrate = my_EncodingProperties.GetAbrBitrateMax(); - bitrate >= my_EncodingProperties.GetAbrBitrateMin(); - bitrate -= my_EncodingProperties.GetAbrBitrateStep()) - { - if (bitrate >= mpeg1_bitrate[SIZE_BITRATE_MPEG1-1] && (!my_EncodingProperties.GetSmartOutputMode() || IsSmartOutput(mpeg1_freq[freq], bitrate, channel+1))) - { - bitrate_item bitrate_table_tmp; - - bitrate_table_tmp.frequency = mpeg1_freq[freq]; - bitrate_table_tmp.bitrate = bitrate; - bitrate_table_tmp.channels = channel+1; - bitrate_table_tmp.mode = vbr_abr; - bitrate_table.push_back(bitrate_table_tmp); - } - } - } - // MPEG II / II.5 - for (freq = 0;freq < SIZE_FREQ_MPEG2;freq++) - { - for (bitrate = my_EncodingProperties.GetAbrBitrateMax(); - bitrate >= my_EncodingProperties.GetAbrBitrateMin(); - bitrate -= my_EncodingProperties.GetAbrBitrateStep()) - { - if (bitrate >= mpeg2_bitrate[SIZE_BITRATE_MPEG2-1] && (!my_EncodingProperties.GetSmartOutputMode() || IsSmartOutput(mpeg2_freq[freq], bitrate, channel+1))) - { - bitrate_item bitrate_table_tmp; - - bitrate_table_tmp.frequency = mpeg2_freq[freq]; - bitrate_table_tmp.bitrate = bitrate; - bitrate_table_tmp.channels = channel+1; - bitrate_table_tmp.mode = vbr_abr; - bitrate_table.push_back(bitrate_table_tmp); - } - } - } - } - } - - // sorting by frequency/bitrate/channel - std::sort(bitrate_table.begin(), bitrate_table.end()); - -/* { - // display test - int i=0; - for (i=0; i - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -/*! - \author Steve Lhomme - \version \$Id: ACM.h,v 1.8 2006/12/25 21:37:34 robert Exp $ -*/ - -#if !defined(_ACM_H__INCLUDED_) -#define _ACM_H__INCLUDED_ - -#if _MSC_VER >= 1000 -#pragma once -#endif // _MSC_VER >= 1000 - -#include - -#include -#include -#include -#include -#include - - -#include "ADbg/ADbg.h" - -class AEncodeProperties; - -typedef enum vbr_mode_e vbr_mode; - -class bitrate_item { - public: - unsigned int frequency; - unsigned int bitrate; - unsigned int channels; - vbr_mode mode; - - bool operator<(const bitrate_item & bitrate) const; -}; - -class ACM -{ -public: - ACM( HMODULE hModule ); - virtual ~ACM(); - - LONG DriverProcedure(const HDRVR hdrvr, const UINT msg, LONG lParam1, LONG lParam2); - - static const char * GetVersionString(void) {return VersionString;} - -protected: -// inline DWORD Configure( HWND hParentWindow, LPDRVCONFIGINFO pConfig ); - inline DWORD About( HWND hParentWindow ); - - inline DWORD OnDriverDetails(const HDRVR hdrvr, LPACMDRIVERDETAILS a_DriverDetail); - inline DWORD OnFormatTagDetails(LPACMFORMATTAGDETAILS a_FormatTagDetails, const LPARAM a_Query); - inline DWORD OnFormatDetails(LPACMFORMATDETAILS a_FormatDetails, const LPARAM a_Query); - inline DWORD OnFormatSuggest(LPACMDRVFORMATSUGGEST a_FormatSuggest); - inline DWORD OnStreamOpen(LPACMDRVSTREAMINSTANCE a_StreamInstance); - inline DWORD OnStreamClose(LPACMDRVSTREAMINSTANCE a_StreamInstance); - inline DWORD OnStreamSize(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMDRVSTREAMSIZE the_StreamSize); - inline DWORD OnStreamPrepareHeader(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMSTREAMHEADER a_StreamHeader); - inline DWORD OnStreamUnPrepareHeader(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMSTREAMHEADER a_StreamHeader); - inline DWORD OnStreamConvert(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMDRVSTREAMHEADER a_StreamHeader); - - void GetMP3FormatForIndex(const DWORD the_Index, WAVEFORMATEX & the_Format, unsigned short the_String[ACMFORMATDETAILS_FORMAT_CHARS]) const; - void GetPCMFormatForIndex(const DWORD the_Index, WAVEFORMATEX & the_Format, unsigned short the_String[ACMFORMATDETAILS_FORMAT_CHARS]) const; - DWORD GetNumberEncodingFormats() const; - bool IsSmartOutput(const int frequency, const int bitrate, const int channels) const; - void BuildBitrateTable(); - - HMODULE my_hModule; - HICON my_hIcon; - ADbg my_debug; - AEncodeProperties my_EncodingProperties; - std::vector bitrate_table; - - static char VersionString[120]; -}; - -#endif // !defined(_ACM_H__INCLUDED_) - diff --git a/platform/win32/msvc/external/lame/ACM/ACMStream.cpp b/platform/win32/msvc/external/lame/ACM/ACMStream.cpp deleted file mode 100644 index fbf1e84e082..00000000000 --- a/platform/win32/msvc/external/lame/ACM/ACMStream.cpp +++ /dev/null @@ -1,397 +0,0 @@ -/** - * - * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows - * - * Copyright (c) 2002 Steve Lhomme - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -/*! - \author Steve Lhomme - \version \$Id: ACMStream.cpp,v 1.12 2007/12/26 22:04:08 robert Exp $ -*/ - -#if !defined(STRICT) -#define STRICT -#endif // STRICT - -#include -#include - -#include "adebug.h" - -#include "ACMStream.h" - -#include - -// static methods - -ACMStream * ACMStream::Create() -{ - ACMStream * Result; - - Result = new ACMStream; - - return Result; -} - -const bool ACMStream::Erase(const ACMStream * a_ACMStream) -{ - delete a_ACMStream; - return true; -} - -// class methods - -ACMStream::ACMStream() : - m_WorkingBufferUseSize(0), - gfp(NULL) -{ - /// \todo get the debug level from the registry -my_debug = new ADbg(DEBUG_LEVEL_CREATION); - if (my_debug != NULL) { - unsigned char DebugFileName[512]; - - my_debug->setPrefix("LAMEstream"); /// \todo get it from the registry -my_debug->setIncludeTime(true); /// \todo get it from the registry - -// Check in the registry if we have to Output Debug information -DebugFileName[0] = '\0'; - - HKEY OssKey; - if (RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SOFTWARE\\MUKOLI", 0, KEY_READ , &OssKey ) == ERROR_SUCCESS) { - DWORD DataType; - DWORD DebugFileNameSize = 512; - if (RegQueryValueEx( OssKey, "DebugFile", NULL, &DataType, DebugFileName, &DebugFileNameSize ) == ERROR_SUCCESS) { - if (DataType == REG_SZ) { - my_debug->setUseFile(true); - my_debug->setDebugFile((char *)DebugFileName); - my_debug->OutPut("Debug file is %s",(char *)DebugFileName); - } - } - } - my_debug->OutPut(DEBUG_LEVEL_FUNC_START, "ACMStream Creation (0X%08X)",this); - } - else { - ADbg debug; - debug.OutPut("ACMStream::ACMACMStream : Impossible to create my_debug"); - } - -} - -ACMStream::~ACMStream() -{ - // release memory - encoding is finished - if (gfp) lame_close( gfp ); - - if (my_debug != NULL) - { - my_debug->OutPut(DEBUG_LEVEL_FUNC_START, "ACMStream Deletion (0X%08X)",this); - delete my_debug; - } -} - -bool ACMStream::init(const int nSamplesPerSec, const int nOutputSamplesPerSec, const int nChannels, const int nAvgBytesPerSec, const vbr_mode mode) -{ - bool bResult = false; - - my_SamplesPerSec = nSamplesPerSec; - my_OutBytesPerSec = nOutputSamplesPerSec; - my_Channels = nChannels; - my_AvgBytesPerSec = nAvgBytesPerSec; - my_VBRMode = mode; - - bResult = true; - - return bResult; - -} - -bool ACMStream::open(const AEncodeProperties & the_Properties) -{ - bool bResult = false; - - // Init the MP3 Stream - // Init the global flags structure - gfp = lame_init(); - - // Set input sample frequency - lame_set_in_samplerate( gfp, my_SamplesPerSec ); - - // Set output sample frequency - lame_set_out_samplerate( gfp, my_OutBytesPerSec ); - - lame_set_num_channels( gfp, my_Channels ); - if (my_Channels == 1) - lame_set_mode( gfp, MONO ); - else - lame_set_mode( gfp, (MPEG_mode_e)the_Properties.GetChannelModeValue()) ; /// \todo Get the mode from the default configuration - -// lame_set_VBR( gfp, vbr_off ); /// \note VBR not supported for the moment - lame_set_VBR( gfp, my_VBRMode ); /// \note VBR not supported for the moment - - if (my_VBRMode == vbr_abr) - { - lame_set_VBR_q( gfp, 1 ); - - lame_set_VBR_mean_bitrate_kbps( gfp, (my_AvgBytesPerSec * 8 + 500) / 1000 ); - - if (24000 > lame_get_in_samplerate( gfp )) - { - // For MPEG-II - lame_set_VBR_min_bitrate_kbps( gfp, 8); - - lame_set_VBR_max_bitrate_kbps( gfp, 160); - } - else - { - // For MPEG-I - lame_set_VBR_min_bitrate_kbps( gfp, 32); - - lame_set_VBR_max_bitrate_kbps( gfp, 320); - } - } - - // Set bitrate - lame_set_brate( gfp, my_AvgBytesPerSec * 8 / 1000 ); - - /// \todo Get the mode from the default configuration - // Set copyright flag? - lame_set_copyright( gfp, the_Properties.GetCopyrightMode()?1:0 ); - // Do we have to tag it as non original - lame_set_original( gfp, the_Properties.GetOriginalMode()?1:0 ); - // Add CRC? - lame_set_error_protection( gfp, the_Properties.GetCRCMode()?1:0 ); - // Set private bit? - lame_set_extension( gfp, the_Properties.GetPrivateMode()?1:0 ); - // INFO tag support not possible in ACM - it requires rewinding - // output stream to the beginning after encoding is finished. - lame_set_bWriteVbrTag( gfp, 0 ); - - if (0 == lame_init_params( gfp )) - { - //LAME encoding call will accept any number of samples. - if ( 0 == lame_get_version( gfp ) ) - { - // For MPEG-II, only 576 samples per frame per channel - my_SamplesPerBlock = 576 * lame_get_num_channels( gfp ); - } - else - { - // For MPEG-I, 1152 samples per frame per channel - my_SamplesPerBlock = 1152 * lame_get_num_channels( gfp ); - } - } - - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "version =%d",lame_get_version( gfp ) ); - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Layer =3"); - switch ( lame_get_mode( gfp ) ) - { - case STEREO: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "mode =Stereo" ); break; - case JOINT_STEREO: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "mode =Joint-Stereo" ); break; - case DUAL_CHANNEL: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "mode =Forced Stereo" ); break; - case MONO: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "mode =Mono" ); break; - case NOT_SET: /* FALLTROUGH */ - default: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "mode =Error (unknown)" ); break; - } - - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "sampling frequency =%.1f kHz", lame_get_in_samplerate( gfp ) /1000.0 ); - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "bitrate =%d kbps", lame_get_brate( gfp ) ); - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Vbr Min bitrate =%d kbps", lame_get_VBR_min_bitrate_kbps( gfp ) ); - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Vbr Max bitrate =%d kbps", lame_get_VBR_max_bitrate_kbps( gfp ) ); - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Quality Setting =%d", lame_get_quality( gfp ) ); - - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Low pass frequency =%d", lame_get_lowpassfreq( gfp ) ); - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Low pass width =%d", lame_get_lowpasswidth( gfp ) ); - - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "High pass frequency =%d", lame_get_highpassfreq( gfp ) ); - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "High pass width =%d", lame_get_highpasswidth( gfp ) ); - - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "No Short Blocks =%d", lame_get_no_short_blocks( gfp ) ); - - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "de-emphasis =%d", lame_get_emphasis( gfp ) ); - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "private flag =%d", lame_get_extension( gfp ) ); - - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "copyright flag =%d", lame_get_copyright( gfp ) ); - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "original flag =%d", lame_get_original( gfp ) ); - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "CRC =%s", lame_get_error_protection( gfp ) ? "on" : "off" ); - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Fast mode =%s", ( lame_get_quality( gfp ) )? "enabled" : "disabled" ); - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Force mid/side stereo =%s", ( lame_get_force_ms( gfp ) )?"enabled":"disabled" ); - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Disable Resorvoir =%d", lame_get_disable_reservoir( gfp ) ); - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "VBR =%s, VBR_q =%d, VBR method =", - ( lame_get_VBR( gfp ) !=vbr_off ) ? "enabled": "disabled", - lame_get_VBR_q( gfp ) ); - - switch ( lame_get_VBR( gfp ) ) - { - case vbr_off: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "vbr_off" ); break; - case vbr_mt : my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "vbr_mt" ); break; - case vbr_rh : my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "vbr_rh" ); break; - case vbr_mtrh: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "vbr_mtrh" ); break; - case vbr_abr: - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "vbr_abr (average bitrate %d kbps)", lame_get_VBR_mean_bitrate_kbps( gfp ) ); - break; - default: - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "error, unknown VBR setting"); - break; - } - - my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Write VBR Header =%s\n", ( lame_get_bWriteVbrTag( gfp ) ) ?"Yes":"No"); - -#ifdef FROM_DLL -beConfig.format.LHV1.dwReSampleRate = my_OutBytesPerSec; // force the user resampling -#endif // FROM_DLL - - bResult = true; - - return bResult; -} - -bool ACMStream::close(LPBYTE pOutputBuffer, DWORD *pOutputSize) -{ - -bool bResult = false; - - int nOutputSamples = 0; - - nOutputSamples = lame_encode_flush( gfp, pOutputBuffer, 0 ); - - if ( nOutputSamples < 0 ) - { - // BUFFER_TOO_SMALL -*pOutputSize = 0; - } - else -{ - *pOutputSize = nOutputSamples; - - bResult = true; - } - - // lame will be closed in destructor - //lame_close( gfp ); - - return bResult; -} - -DWORD ACMStream::GetOutputSizeForInput(const DWORD the_SrcLength) const -{ -/* double OutputInputRatio; - - if (my_VBRMode == vbr_off) - OutputInputRatio = double(my_AvgBytesPerSec) / double(my_OutBytesPerSec * 2); - else // reserve the space for 320 kbps - OutputInputRatio = 40000.0 / double(my_OutBytesPerSec * 2); - - OutputInputRatio *= 1.15; // allow 15% more*/ - - DWORD Result; - -// Result = DWORD(double(the_SrcLength) * OutputInputRatio); - Result = DWORD(1.25*the_SrcLength + 7200); - -my_debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "Result = %d",Result); - - return Result; -} - -bool ACMStream::ConvertBuffer(LPACMDRVSTREAMHEADER a_StreamHeader) -{ - bool result; - -if (my_debug != NULL) -{ -my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "enter ACMStream::ConvertBuffer"); -} - - DWORD InSize = a_StreamHeader->cbSrcLength / 2, OutSize = a_StreamHeader->cbDstLength; // 2 for 8<->16 bits - -// Encode it -int dwSamples; - int nOutputSamples = 0; - - dwSamples = InSize / lame_get_num_channels( gfp ); - - if ( 1 == lame_get_num_channels( gfp ) ) - { - nOutputSamples = lame_encode_buffer(gfp,(PSHORT)a_StreamHeader->pbSrc,(PSHORT)a_StreamHeader->pbSrc,dwSamples,a_StreamHeader->pbDst,a_StreamHeader->cbDstLength); - } - else - { - nOutputSamples = lame_encode_buffer_interleaved(gfp,(PSHORT)a_StreamHeader->pbSrc,dwSamples,a_StreamHeader->pbDst,a_StreamHeader->cbDstLength); - } - - a_StreamHeader->cbSrcLengthUsed = a_StreamHeader->cbSrcLength; - a_StreamHeader->cbDstLengthUsed = nOutputSamples; - - result = a_StreamHeader->cbDstLengthUsed <= a_StreamHeader->cbDstLength; - - my_debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "UsedSize = %d / EncodedSize = %d, result = %d (%d <= %d)", InSize, OutSize, result, a_StreamHeader->cbDstLengthUsed, a_StreamHeader->cbDstLength); - -if (my_debug != NULL) -{ -my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "ACMStream::ConvertBuffer result = %d (0x%02X 0x%02X)",result,a_StreamHeader->pbDst[0],a_StreamHeader->pbDst[1]); -} - - return result; -} - -/* map frequency to a valid MP3 sample frequency - * - * Robert Hegemann 2000-07-01 - */ -static int -map2MP3Frequency(int freq) -{ - if (freq <= 8000) - return 8000; - if (freq <= 11025) - return 11025; - if (freq <= 12000) - return 12000; - if (freq <= 16000) - return 16000; - if (freq <= 22050) - return 22050; - if (freq <= 24000) - return 24000; - if (freq <= 32000) - return 32000; - if (freq <= 44100) - return 44100; - - return 48000; -} - - -unsigned int ACMStream::GetOutputSampleRate(int samples_per_sec, int bitrate, int channels) -{ - if (bitrate==0) - bitrate = (64000*channels)/8; - - /// \todo pass through the same LAME routine - unsigned int OutputFrequency; - double compression_ratio = double(samples_per_sec * 16 * channels / (bitrate * 8)); - if (compression_ratio > 13.) - OutputFrequency = map2MP3Frequency( (10. * bitrate * 8) / (16 * channels)); - else - OutputFrequency = map2MP3Frequency( 0.97 * samples_per_sec ); - - return OutputFrequency; - -} - diff --git a/platform/win32/msvc/external/lame/ACM/ACMStream.h b/platform/win32/msvc/external/lame/ACM/ACMStream.h deleted file mode 100644 index 9cba5286ba4..00000000000 --- a/platform/win32/msvc/external/lame/ACM/ACMStream.h +++ /dev/null @@ -1,85 +0,0 @@ -/** - * - * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows - * - * Copyright (c) 2002 Steve Lhomme - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -/*! - \author Steve Lhomme - \version \$Id: ACMStream.h,v 1.5 2006/12/25 21:37:34 robert Exp $ -*/ - -#if !defined(_ACMSTREAM_H__INCLUDED_) -#define _ACMSTREAM_H__INCLUDED_ - -#if _MSC_VER >= 1000 -#pragma once -#endif // _MSC_VER >= 1000 - -#include -#include -#include - -#include "ADbg/ADbg.h" - -#include "AEncodeProperties.h" - - -typedef enum vbr_mode_e vbr_mode; -typedef struct lame_global_struct lame_global_flags; - - -class ACMStream -{ -public: - ACMStream( ); - virtual ~ACMStream( ); - - static ACMStream * Create(); - static const bool Erase(const ACMStream * a_ACMStream); - - bool init(const int nSamplesPerSec, const int nOutputSamplesPerSec, const int nChannels, const int nAvgBytesPerSec, const vbr_mode mode); - bool open(const AEncodeProperties & the_Properties); - bool close(LPBYTE pOutputBuffer, DWORD *pOutputSize); - - DWORD GetOutputSizeForInput(const DWORD the_SrcLength) const; - bool ConvertBuffer(LPACMDRVSTREAMHEADER a_StreamHeader); - - static unsigned int GetOutputSampleRate(int samples_per_sec, int bitrate, int channels); - -protected: - lame_global_flags * gfp; - - ADbg * my_debug; - int my_SamplesPerSec; - int my_Channels; - int my_AvgBytesPerSec; - int my_OutBytesPerSec; - vbr_mode my_VBRMode; - DWORD my_SamplesPerBlock; - -unsigned int m_WorkingBufferUseSize; - char m_WorkingBuffer[2304*2]; // should be at least twice my_SamplesPerBlock - -inline int GetBytesPerBlock(DWORD bytes_per_sec, DWORD samples_per_sec, int BlockAlign) const; - -}; - -#endif // !defined(_ACMSTREAM_H__INCLUDED_) - diff --git a/platform/win32/msvc/external/lame/ACM/ADbg/ADbg.cpp b/platform/win32/msvc/external/lame/ACM/ADbg/ADbg.cpp deleted file mode 100644 index 80dc92f0123..00000000000 --- a/platform/win32/msvc/external/lame/ACM/ADbg/ADbg.cpp +++ /dev/null @@ -1,181 +0,0 @@ -/************************************************************************ -Project : C++ debugging class -File version : 0.4 - -BSD License post 1999 : - -Copyright (c) 2001, Steve Lhomme -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -- Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -- Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. - -- The name of the author may not be used to endorse or promote products derived -from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT -OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING -IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGE. -************************************************************************/ - -#include -#include -#include - -#include "ADbg.h" - -#if !defined(NDEBUG) - -////////////////////////////////////////////////////////////////////// -// Construction/Destruction -////////////////////////////////////////////////////////////////////// - -ADbg::ADbg(int level) -:my_level(level) -,my_time_included(false) -,my_use_file(false) -,my_debug_output(true) -,hFile(NULL) -{ - prefix[0] = '\0'; - OutPut(-1,"ADbg Creation at debug level = %d (0x%08X)",my_level,this); -} - -ADbg::~ADbg() -{ - unsetDebugFile(); - OutPut(-1,"ADbg Deletion (0x%08X)",this); -} - -inline int ADbg::_OutPut(const char * format,va_list params) const -{ - int result; - - char tst[1000]; - char myformat[256]; - - if (my_time_included) { - SYSTEMTIME time; - GetSystemTime(&time); - if (prefix[0] == '\0') - wsprintf(myformat,"%04d/%02d/%02d %02d:%02d:%02d.%03d UTC : %s\r\n", - time.wYear, - time.wMonth, - time.wDay, - time.wHour, - time.wMinute, - time.wSecond, - time.wMilliseconds, - format); - else - wsprintf(myformat,"%04d/%02d/%02d %02d:%02d:%02d.%03d UTC : %s - %s\r\n", - time.wYear, - time.wMonth, - time.wDay, - time.wHour, - time.wMinute, - time.wSecond, - time.wMilliseconds, - prefix, - format); - } else { - if (prefix[0] == '\0') - wsprintf( myformat, "%s\r\n", format); - else - wsprintf( myformat, "%s - %s\r\n", prefix, format); - } - - result = vsprintf(tst,myformat,params); - - if (my_debug_output) - OutputDebugString(tst); - - if (my_use_file && (hFile != NULL)) { - SetFilePointer( hFile, 0, 0, FILE_END ); - DWORD written; - WriteFile( hFile, tst, lstrlen(tst), &written, NULL ); - } - - return result; -} - -int ADbg::OutPut(int forLevel, const char * format,...) const -{ - int result=0; - - if (forLevel >= my_level) { - va_list tstlist; - int result; - - va_start(tstlist, format); - - result = _OutPut(format,tstlist); - - } - - return result; -} - -int ADbg::OutPut(const char * format,...) const -{ - va_list tstlist; - - va_start(tstlist, format); - - return _OutPut(format,tstlist); -} - -bool ADbg::setDebugFile(const char * NewFilename) { - bool result; - result = unsetDebugFile(); - - if (result) { - result = false; - - hFile = CreateFile(NewFilename, GENERIC_WRITE, FILE_SHARE_WRITE|FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ); - - if (hFile != INVALID_HANDLE_VALUE) { - SetFilePointer( hFile, 0, 0, FILE_END ); - - result = true; - - OutPut(-1,"Debug file Opening succeeded"); - - } - else - OutPut(-1,"Debug file %s Opening failed",NewFilename); - } - - return result; -} - -bool ADbg::unsetDebugFile() { - bool result = (hFile == NULL); - - if (hFile != NULL) { - result = (CloseHandle(hFile) != 0); - - if (result) { - OutPut(-1,"Debug file Closing succeeded"); - hFile = NULL; - } - } - - return result; -} - -#endif // !defined(NDEBUG) diff --git a/platform/win32/msvc/external/lame/ACM/ADbg/ADbg.h b/platform/win32/msvc/external/lame/ACM/ADbg/ADbg.h deleted file mode 100644 index 9cb40b8d0a0..00000000000 --- a/platform/win32/msvc/external/lame/ACM/ADbg/ADbg.h +++ /dev/null @@ -1,133 +0,0 @@ -/************************************************************************ -Project : C++ debugging class -File version : 0.4 - -BSD License post 1999 : - -Copyright (c) 2001, Steve Lhomme -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -- Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -- Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. - -- The name of the author may not be used to endorse or promote products derived -from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT -OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING -IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGE. -************************************************************************/ - -#if !defined(_DBG_H__INCLUDED_) -#define _DBG_H__INCLUDED_ - -#include - -static const int MAX_PREFIX_LENGTH = 128; - -#if !defined(NDEBUG) -// define the working debugging class - -class ADbg -{ -public: - ADbg(int level = 0); - virtual ~ADbg(); - - /// \todo make an inline function to test the level first and the process - int OutPut(int level, const char * format,...) const; - - int OutPut(const char * format,...) const; - - inline int setLevel(const int level) { - return my_level = level; - } - - inline bool setIncludeTime(const bool included = true) { - return my_time_included = included; - } - - bool setDebugFile(const char * NewFilename); - bool unsetDebugFile(); - - inline bool setUseFile(const bool usefile = true) { - return my_use_file = usefile; - } - - inline const char * setPrefix(const char * string) { - return strncpy(prefix, string, MAX_PREFIX_LENGTH); - } - -private: - int my_level; - bool my_time_included; - bool my_use_file; - bool my_debug_output; - - int _OutPut(const char * format,va_list params) const; - - char prefix[MAX_PREFIX_LENGTH]; - - HANDLE hFile; -}; - -#else // !defined(NDEBUG) - -// define a class that does nothing (no output) - -class ADbg -{ -public: - ADbg(int level = 0){} - virtual ~ADbg() {} - - inline int OutPut(int level, const char * format,...) const { - return 0; - } - - inline int OutPut(const char * format,...) const { - return 0; - } - - inline int setLevel(const int level) { - return level; - } - - inline bool setIncludeTime(const bool included = true) { - return true; - } - - inline bool setDebugFile(const char * NewFilename) { - return true; - } - - inline bool unsetDebugFile() { - return true; - } - - inline bool setUseFile(const bool usefile = true) { - return true; - } - - inline const char * setPrefix(const char * string) { - return string; - } -}; - -#endif // !defined(NDEBUG) - -#endif // !defined(_DBG_H__INCLUDED_) diff --git a/platform/win32/msvc/external/lame/ACM/ADbg/Makefile.am b/platform/win32/msvc/external/lame/ACM/ADbg/Makefile.am deleted file mode 100644 index 0b660396f6a..00000000000 --- a/platform/win32/msvc/external/lame/ACM/ADbg/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -## $Id: Makefile.am,v 1.3 2008/11/09 13:50:16 aleidinger Exp $ - -include $(top_srcdir)/Makefile.am.global - -EXTRA_DIST = \ - ADbg.cpp \ - ADbg.h - diff --git a/platform/win32/msvc/external/lame/ACM/ADbg/Makefile.in b/platform/win32/msvc/external/lame/ACM/ADbg/Makefile.in deleted file mode 100644 index 10f24936525..00000000000 --- a/platform/win32/msvc/external/lame/ACM/ADbg/Makefile.in +++ /dev/null @@ -1,389 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# global section for every Makefile.am -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/Makefile.am.global -subdir = ACM/ADbg -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CONFIG_DEFS = @CONFIG_DEFS@ -CONFIG_MATH_LIB = @CONFIG_MATH_LIB@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CPUCCODE = @CPUCCODE@ -CPUTYPE = @CPUTYPE@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ -FRONTEND_LDADD = @FRONTEND_LDADD@ -FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ -GREP = @GREP@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_CONFIG = @GTK_CONFIG@ -GTK_LIBS = @GTK_LIBS@ -INCLUDES = @INCLUDES@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDADD = @LDADD@ -LDFLAGS = @LDFLAGS@ -LIBICONV = @LIBICONV@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ -LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBICONV = @LTLIBICONV@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEDEP = @MAKEDEP@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NASM = @NASM@ -NASM_FORMAT = @NASM_FORMAT@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -RM_F = @RM_F@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ -SNDFILE_LIBS = @SNDFILE_LIBS@ -STRIP = @STRIP@ -U = @U@ -VERSION = @VERSION@ -WITH_FRONTEND = @WITH_FRONTEND@ -WITH_MP3RTP = @WITH_MP3RTP@ -WITH_MP3X = @WITH_MP3X@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = 1.11 foreign $(top_srcdir)/ansi2knr -EXTRA_DIST = \ - ADbg.cpp \ - ADbg.h - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ACM/ADbg/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign ACM/ADbg/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am - - -# end global section - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/platform/win32/msvc/external/lame/ACM/AEncodeProperties.cpp b/platform/win32/msvc/external/lame/ACM/AEncodeProperties.cpp deleted file mode 100644 index 2430369b517..00000000000 --- a/platform/win32/msvc/external/lame/ACM/AEncodeProperties.cpp +++ /dev/null @@ -1,2027 +0,0 @@ -/** - * - * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows - * - * Copyright (c) 2002 Steve Lhomme - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -/*! - \author Steve Lhomme - \version \$Id: AEncodeProperties.cpp,v 1.9 2006/12/25 21:37:34 robert Exp $ -*/ - -#if !defined(STRICT) -#define STRICT -#endif // !defined(STRICT) - -#include -#include -#include -#include - -#ifdef _MSC_VER -// no problem with unknown pragmas -#pragma warning(disable: 4068) -#endif - -#include "resource.h" -#include -#include "adebug.h" -#include "AEncodeProperties.h" -#include "ACM.h" -//#include "AParameters/AParameters.h" - -#ifndef TTS_BALLOON -#define TTS_BALLOON 0x40 -#endif // TTS_BALLOON - -const unsigned int AEncodeProperties::the_Bitrates[18] = {320, 256, 224, 192, 160, 144, 128, 112, 96, 80, 64, 56, 48, 40, 32, 24, 16, 8 }; -const unsigned int AEncodeProperties::the_MPEG1_Bitrates[14] = {320, 256, 224, 192, 160, 128, 112, 96, 80, 64, 56, 48, 40, 32 }; -const unsigned int AEncodeProperties::the_MPEG2_Bitrates[14] = {160, 144, 128, 112, 96, 80, 64, 56, 48, 40, 32, 24, 16, 8}; -const unsigned int AEncodeProperties::the_ChannelModes[3] = { STEREO, JOINT_STEREO, DUAL_CHANNEL }; -//const char AEncodeProperties::the_Presets[][13] = {"None", "CD", "Studio", "Hi-Fi", "Phone", "Voice", "Radio", "Tape", "FM", "AM", "SW"}; -//const LAME_QUALTIY_PRESET AEncodeProperties::the_Presets[] = {LQP_NOPRESET, LQP_R3MIX_QUALITY, LQP_NORMAL_QUALITY, LQP_LOW_QUALITY, LQP_HIGH_QUALITY, LQP_VERYHIGH_QUALITY, LQP_VOICE_QUALITY, LQP_PHONE, LQP_SW, LQP_AM, LQP_FM, LQP_VOICE, LQP_RADIO, LQP_TAPE, LQP_HIFI, LQP_CD, LQP_STUDIO}; -//const unsigned int AEncodeProperties::the_SamplingFreqs[9] = { 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000 }; - -ToolTipItem AEncodeProperties::Tooltips[13]={ - { IDC_CHECK_ENC_ABR, "Allow encoding with an average bitrate\r\ninstead of a constant one.\r\n\r\nIt can improve the quality for the same bitrate." }, - { IDC_CHECK_COPYRIGHT, "Mark the encoded data as copyrighted." }, - { IDC_CHECK_CHECKSUM, "Put a checksum in the encoded data.\r\n\r\nThis can make the file less sensitive to data loss." }, - { IDC_CHECK_ORIGINAL, "Mark the encoded data as an original file." }, - { IDC_CHECK_PRIVATE, "Mark the encoded data as private." }, - { IDC_COMBO_ENC_STEREO, "Select the type of stereo mode used for encoding:\r\n\r\n- Stereo : the usual one\r\n- Joint-Stereo : mix both channel to achieve better compression\r\n- Dual Channel : treat both channel as separate" }, - { IDC_STATIC_DECODING, "Decoding not supported for the moment by the codec." }, - { IDC_CHECK_ENC_SMART, "Disable bitrate when there is too much compression.\r\n(default 1:15 ratio)" }, - { IDC_STATIC_CONFIG_VERSION, "Version of this codec.\r\n\r\nvX.X.X is the version of the codec interface.\r\nX.XX is the version of the encoding engine." }, - { IDC_SLIDER_AVERAGE_MIN, "Select the minimum Average Bitrate allowed." }, - { IDC_SLIDER_AVERAGE_MAX, "Select the maximum Average Bitrate allowed." }, - { IDC_SLIDER_AVERAGE_STEP, "Select the step of Average Bitrate between the min and max.\r\n\r\nA step of 5 between 152 and 165 means you have :\r\n165, 160 and 155" }, - { IDC_SLIDER_AVERAGE_SAMPLE, "Check the resulting values of the (min,max,step) combination.\r\n\r\nUse the keyboard to navigate (right -> left)." }, -}; -//int AEncodeProperties::tst = 0; - -/* -#pragma argsused -static UINT CALLBACK DLLFindCallback( - HWND hdlg, // handle to child dialog box - UINT uiMsg, // message identifier - WPARAM wParam, // message parameter - LPARAM lParam // message parameter - ) -{ - UINT result = 0; - - switch (uiMsg) - { - case WM_NOTIFY: - OFNOTIFY * info = (OFNOTIFY *)lParam; - if (info->hdr.code == CDN_FILEOK) - { - result = 1; // by default we don't accept the file - - // Check if the selected file is a valid DLL with all the required functions - ALameDLL * tstFile = new ALameDLL; - if (tstFile != NULL) - { - if (tstFile->Load(info->lpOFN->lpstrFile)) - { - result = 0; - } - - delete tstFile; - } - - if (result == 1) - { - TCHAR output[250]; - ::LoadString(AOut::GetInstance(),IDS_STRING_DLL_UNRECOGNIZED,output,250); - AOut::MyMessageBox( output, MB_OK|MB_ICONEXCLAMATION, hdlg); - SetWindowLong(hdlg, DWL_MSGRESULT , -100); - } - } - } - - return result; -} - -#pragma argsused -static int CALLBACK BrowseFolderCallbackroc( - HWND hwnd, - UINT uMsg, - LPARAM lParam, - LPARAM lpData - ) -{ - AEncodeProperties * the_prop; - the_prop = (AEncodeProperties *) lpData; - - - if (uMsg == BFFM_INITIALIZED) - { -// char FolderName[MAX_PATH]; -// SHGetPathFromIDList((LPITEMIDLIST) lParam,FolderName); -//ADbg tst; -//tst.OutPut("init folder to %s ",the_prop->GetOutputDirectory()); -// CreateFile(); - ::SendMessage(hwnd, BFFM_SETSELECTION, (WPARAM)TRUE, (LPARAM)the_prop->GetOutputDirectory()); - }/* else if (uMsg == BFFM_SELCHANGED) - { - // verify that the folder is writable -// ::SendMessage(hwnd, BFFM_ENABLEOK, 0, (LPARAM)0); // disable - char FolderName[MAX_PATH]; - SHGetPathFromIDList((LPITEMIDLIST) lParam, FolderName); - -// if (CreateFile(FolderName,STANDARD_RIGHTS_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL) == INVALID_HANDLE_VALUE) - if ((GetFileAttributes(FolderName) & FILE_ATTRIBUTE_DIRECTORY) != 0) - ::SendMessage(hwnd, BFFM_ENABLEOK, 0, (LPARAM)1); // enable - else - ::SendMessage(hwnd, BFFM_ENABLEOK, 0, (LPARAM)0); // disable -//ADbg tst; -//tst.OutPut("change folder to %s ",FolderName); - }* / - - return 0; -} -*/ -#pragma argsused -static BOOL CALLBACK ConfigProc( - HWND hwndDlg, // handle to dialog box - UINT uMsg, // message - WPARAM wParam, // first message parameter - LPARAM lParam // second message parameter - ) -{ - BOOL bResult; - AEncodeProperties * the_prop; - the_prop = (AEncodeProperties *) GetProp(hwndDlg, "AEncodeProperties-Config"); - - switch (uMsg) { - case WM_COMMAND: - if (the_prop != NULL) - { - bResult = the_prop->HandleDialogCommand( hwndDlg, wParam, lParam); - } - break; - case WM_INITDIALOG: - assert(the_prop == NULL); - - the_prop = (AEncodeProperties *) lParam; - the_prop->my_debug.OutPut("there hwnd = 0x%08X",hwndDlg); - - assert(the_prop != NULL); - - SetProp(hwndDlg, "AEncodeProperties-Config", the_prop); - - the_prop->InitConfigDlg(hwndDlg); - - bResult = TRUE; - break; - - case WM_HSCROLL: - // check if it's the ABR sliders - if ((HWND)lParam == GetDlgItem(hwndDlg,IDC_SLIDER_AVERAGE_MIN)) - { - the_prop->UpdateDlgFromSlides(hwndDlg); - } - else if ((HWND)lParam == GetDlgItem(hwndDlg,IDC_SLIDER_AVERAGE_MAX)) - { - the_prop->UpdateDlgFromSlides(hwndDlg); - } - else if ((HWND)lParam == GetDlgItem(hwndDlg,IDC_SLIDER_AVERAGE_STEP)) - { - the_prop->UpdateDlgFromSlides(hwndDlg); - } - else if ((HWND)lParam == GetDlgItem(hwndDlg,IDC_SLIDER_AVERAGE_SAMPLE)) - { - the_prop->UpdateDlgFromSlides(hwndDlg); - } - break; - - case WM_NOTIFY: - if (TTN_GETDISPINFO == ((LPNMHDR)lParam)->code) { - NMTTDISPINFO *lphdr = (NMTTDISPINFO *)lParam; - UINT id = (lphdr->uFlags & TTF_IDISHWND) ? GetWindowLong((HWND)lphdr->hdr.idFrom, GWL_ID) : lphdr->hdr.idFrom; - - *lphdr->lpszText = 0; - - SendMessage(lphdr->hdr.hwndFrom, TTM_SETMAXTIPWIDTH, 0, 5000); - - for(int i=0; ilpszText = const_cast(AEncodeProperties::Tooltips[i].tip); - } - - return TRUE; - } - break; - - default: - bResult = FALSE; // will be treated by DefWindowProc - } - return bResult; -} - -////////////////////////////////////////////////////////////////////// -// Construction/Destruction -////////////////////////////////////////////////////////////////////// -/** - \class AEncodeProperties -*/ - - -const char * AEncodeProperties::GetChannelModeString(int a_channelID) const -{ - assert(a_channelID < sizeof(the_ChannelModes)); - - switch (a_channelID) { - case 0: - return "Stereo"; - case 1: - return "Joint-stereo"; - case 2: - return "Dual Channel"; - default: - assert(a_channelID); - return NULL; - } -} - -const int AEncodeProperties::GetBitrateString(char * string, int string_size, int a_bitrateID) const -{ - assert(a_bitrateID < sizeof(the_Bitrates)); - assert(string != NULL); - - if (string_size >= 4) - return wsprintf(string,"%d",the_Bitrates[a_bitrateID]); - else - return -1; -} - -const unsigned int AEncodeProperties::GetChannelModeValue() const -{ - assert(nChannelIndex < sizeof(the_ChannelModes)); - - return the_ChannelModes[nChannelIndex]; -} - -const unsigned int AEncodeProperties::GetBitrateValue() const -{ - assert(nMinBitrateIndex < sizeof(the_Bitrates)); - - return the_Bitrates[nMinBitrateIndex]; -} - -inline const int AEncodeProperties::GetBitrateValueMPEG2(DWORD & bitrate) const -{ - int i; - - for (i=0;i=0;i--) - { - if (the_MPEG1_Bitrates[i] == the_Bitrates[nMinBitrateIndex]) - { - bitrate = the_MPEG1_Bitrates[i]; - return 0; - } - else if (the_MPEG1_Bitrates[i] > the_Bitrates[nMinBitrateIndex]) - { - bitrate = the_MPEG1_Bitrates[i]; - return 1; - } - } - - bitrate = 32; - return 1; -} -/* -const int AEncodeProperties::GetBitrateValue(DWORD & bitrate, const DWORD MPEG_Version) const -{ - assert((MPEG_Version == MPEG1) || (MPEG_Version == MPEG2)); - assert(nMinBitrateIndex < sizeof(the_Bitrates)); - - if (MPEG_Version == MPEG2) - return GetBitrateValueMPEG2(bitrate); - else - return GetBitrateValueMPEG1(bitrate); -} -/* -const char * AEncodeProperties::GetPresetModeString(const int a_presetID) const -{ - assert(a_presetID < sizeof(the_Presets)); - - switch (a_presetID) { - case 1: - return "r3mix"; - case 2: - return "Normal"; - case 3: - return "Low"; - case 4: - return "High"; - case 5: - return "Very High"; - case 6: - return "Voice"; - case 7: - return "Phone"; - case 8: - return "SW"; - case 9: - return "AM"; - case 10: - return "FM"; - case 11: - return "Voice"; - case 12: - return "Radio"; - case 13: - return "Tape"; - case 14: - return "Hi-Fi"; - case 15: - return "CD"; - case 16: - return "Studio"; - default: - return "None"; - } -} - -const LAME_QUALTIY_PRESET AEncodeProperties::GetPresetModeValue() const -{ - assert(nPresetIndex < sizeof(the_Presets)); - - return the_Presets[nPresetIndex]; -} -*/ -bool AEncodeProperties::Config(const HINSTANCE Hinstance, const HWND HwndParent) -{ - //WM_INITDIALOG ? - - // remember the instance to retreive strings -// hDllInstance = Hinstance; - - my_debug.OutPut("here"); - int ret = ::DialogBoxParam(Hinstance, MAKEINTRESOURCE(IDD_CONFIG), HwndParent, ::ConfigProc, (LPARAM) this); -/* if (ret == -1) - { - LPVOID lpMsgBuf; - FormatMessage( - FORMAT_MESSAGE_ALLOCATE_BUFFER | - FORMAT_MESSAGE_FROM_SYSTEM | - FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, - GetLastError(), - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language - (LPTSTR) &lpMsgBuf, - 0, - NULL - ); - // Process any inserts in lpMsgBuf. - // ... - // Display the string. - AOut::MyMessageBox( (LPCTSTR)lpMsgBuf, MB_OK | MB_ICONINFORMATION ); - // Free the buffer. - LocalFree( lpMsgBuf ); - return false; - } -*/ - return true; -} - -bool AEncodeProperties::InitConfigDlg(HWND HwndDlg) -{ - // get all the required strings -// TCHAR Version[5]; -// LoadString(hDllInstance, IDS_STRING_VERSION, Version, 5); - - int i; - - // Add required channel modes - SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_ENC_STEREO), CB_RESETCONTENT , NULL, NULL); - for (i=0;i 320) - AverageBitrate = 320; -*/ - return true; -} -/* -VBRMETHOD AEncodeProperties::GetVBRValue(DWORD & MaxBitrate, int & Quality, DWORD & AbrBitrate, BOOL & VBRHeader, const DWORD MPEG_Version) const -{ - assert((MPEG_Version == MPEG1) || (MPEG_Version == MPEG2)); - assert(nMaxBitrateIndex < sizeof(the_Bitrates)); - - if (mBRmode == BR_VBR) - { - MaxBitrate = the_Bitrates[nMaxBitrateIndex]; - - if (MPEG_Version == MPEG1) - MaxBitrate = MaxBitrate>the_MPEG1_Bitrates[sizeof(the_MPEG1_Bitrates)/sizeof(unsigned int)-1]?MaxBitrate:the_MPEG1_Bitrates[sizeof(the_MPEG1_Bitrates)/sizeof(unsigned int)-1]; - else - MaxBitrate = MaxBitratethe_MPEG1_Bitrates[sizeof(the_MPEG1_Bitrates)/sizeof(unsigned int)-1]?MaxBitrate:the_MPEG1_Bitrates[sizeof(the_MPEG1_Bitrates)/sizeof(unsigned int)-1]; - else - MaxBitrate = MaxBitrateFirstChildElement("encodings"); - - std::string CurrentConfig = ""; - - if (CurrentNode->Attribute("default") != NULL) - { - CurrentConfig = *CurrentNode->Attribute("default"); - } - -/* // output parameters - TiXmlElement* iterateElmt = node->FirstChildElement("DLL"); - if (iterateElmt != NULL) - { - const std::string * tmpname = iterateElmt->Attribute("location"); - if (tmpname != NULL) - { - DllLocation = *tmpname; - } - } -*/ - GetValuesFromKey(CurrentConfig, *CurrentNode); - } - else - { - /** - \todo save the data in the file ! - */ - } -} - -void AEncodeProperties::ParamsSave() -{ -/* - - - save the current parameters in the corresponding subkey - - - - - HKEY OssKey; - - if (RegCreateKeyEx ( HKEY_LOCAL_MACHINE, "SOFTWARE\\MUKOLI\\out_lame", 0, "", REG_OPTION_NON_VOLATILE, KEY_WRITE , NULL, &OssKey, NULL ) == ERROR_SUCCESS) { - - if (RegSetValueEx(OssKey, "DLL Location", 0, REG_EXPAND_SZ, (CONST BYTE *)DllLocation, strlen(DllLocation)+1 ) != ERROR_SUCCESS) - return; - - RegCloseKey(OssKey); - } -*/ -} -/* -void AEncodeProperties::DisplayVbrOptions(const HWND hDialog, const BRMode the_mode) -{ - bool bVBR = false; - bool bABR = false; - - switch ( the_mode ) - { - case BR_CBR: - ::CheckRadioButton(hDialog, IDC_RADIO_BITRATE_CBR, IDC_RADIO_BITRATE_ABR, IDC_RADIO_BITRATE_CBR); - break; - case BR_VBR: - ::CheckRadioButton(hDialog, IDC_RADIO_BITRATE_CBR, IDC_RADIO_BITRATE_ABR, IDC_RADIO_BITRATE_VBR); - bVBR = true; - break; - case BR_ABR: - ::CheckRadioButton(hDialog, IDC_RADIO_BITRATE_CBR, IDC_RADIO_BITRATE_ABR, IDC_RADIO_BITRATE_ABR); - bABR = true; - break; - - } - - if(bVBR|bABR) - { - ::SetWindowText(::GetDlgItem(hDialog,IDC_STATIC_MINBITRATE), "Min Bitrate"); - } - else - { - ::SetWindowText(::GetDlgItem(hDialog,IDC_STATIC_MINBITRATE), "Bitrate"); - } - - ::EnableWindow(::GetDlgItem( hDialog, IDC_CHECK_XINGVBR), bVBR|bABR); - - ::EnableWindow(::GetDlgItem( hDialog, IDC_COMBO_MAXBITRATE), bVBR|bABR); - - ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_MAXBITRATE), bVBR|bABR); - - ::EnableWindow(::GetDlgItem( hDialog, IDC_SLIDER_QUALITY), bVBR); - - ::EnableWindow(::GetDlgItem( hDialog, IDC_CONFIG_QUALITY), bVBR); - - ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_VBRQUALITY), bVBR); - - ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_VBRQUALITY_LOW), bVBR); - - ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_VBRQUALITY_HIGH), bVBR); - - ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_ABR), bABR); - - ::EnableWindow(::GetDlgItem( hDialog, IDC_EDIT_AVERAGE), bABR); -} -*/ -AEncodeProperties::AEncodeProperties(HMODULE hModule) - :my_debug(ADbg(DEBUG_LEVEL_CREATION)), - my_hModule(hModule) -{ - std::string path = ""; -// HMODULE htmp = LoadLibrary("out_lame.dll"); - if (hModule != NULL) - { - char output[MAX_PATH]; - ::GetModuleFileName(hModule, output, MAX_PATH); -// ::FreeLibrary(htmp); - - path = output; - } - my_store_location = path.substr(0,path.find_last_of('\\')+1); - my_store_location += "lame_acm.xml"; - - my_debug.OutPut("store path = %s",my_store_location.c_str()); -//#ifdef OLD -// ::OutputDebugString(my_store_location.c_str()); - - // make sure the XML file is present - HANDLE hFile = ::CreateFile(my_store_location.c_str(), 0, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_ARCHIVE, NULL ); - ::CloseHandle(hFile); -//#endif // OLD - my_debug.OutPut("AEncodeProperties creation completed (0x%08X)",this); -} - -// Save the values to the right XML saved config -void AEncodeProperties::SaveValuesToStringKey(const std::string & config_name) -{ - // get the current data in the file to keep them - if (my_stored_data.LoadFile(my_store_location)) - { - // check if the Node corresponding to the config_name already exist. - TiXmlNode* node = my_stored_data.FirstChild("lame_acm"); - - if (node != NULL) - { - TiXmlElement* ConfigNode = node->FirstChildElement("encodings"); - - if (ConfigNode != NULL) - { - // look all the tags - TiXmlElement* tmpNode = ConfigNode->FirstChildElement("config"); - while (tmpNode != NULL) - { - const std::string * tmpname = tmpNode->Attribute("name"); - if (tmpname->compare(config_name) == 0) - { - break; - } - tmpNode = tmpNode->NextSiblingElement("config"); - } - - if (tmpNode == NULL) - { - // Create the node - tmpNode = new TiXmlElement("config"); - tmpNode->SetAttribute("name",config_name); - - // save data in the node - SaveValuesToElement(tmpNode); - - ConfigNode->InsertEndChild(*tmpNode); - } - else - { - // save data in the node - SaveValuesToElement(tmpNode); - } - - - // and save the file - my_stored_data.SaveFile(my_store_location); - } - } - } -} - -void AEncodeProperties::GetValuesFromKey(const std::string & config_name, const TiXmlNode & parentNode) -{ - TiXmlElement* tmpElt; - TiXmlElement* iterateElmt; - - // find the config that correspond to CurrentConfig - iterateElmt = parentNode.FirstChildElement("config"); - while (iterateElmt != NULL) - { - const std::string * tmpname = iterateElmt->Attribute("name"); - if ((tmpname != NULL) && (tmpname->compare(config_name) == 0)) - { - break; - } - iterateElmt = iterateElmt->NextSiblingElement("config"); - } - - if (iterateElmt != NULL) - { - // get all the parameters saved in this Element - const std::string * tmpname; - - // Smart output parameter - tmpElt = iterateElmt->FirstChildElement("Smart"); - if (tmpElt != NULL) - { - tmpname = tmpElt->Attribute("use"); - if (tmpname != NULL) - bSmartOutput = (tmpname->compare("true") == 0); - - tmpname = tmpElt->Attribute("ratio"); - if (tmpname != NULL) - SmartRatioMax = atof(tmpname->c_str()); - } - - // Smart output parameter - tmpElt = iterateElmt->FirstChildElement("ABR"); - if (tmpElt != NULL) - { - tmpname = tmpElt->Attribute("use"); - if (tmpname != NULL) - bAbrOutput = (tmpname->compare("true") == 0); - - tmpname = tmpElt->Attribute("min"); - if (tmpname != NULL) - AverageBitrate_Min = atoi(tmpname->c_str()); - - tmpname = tmpElt->Attribute("max"); - if (tmpname != NULL) - AverageBitrate_Max = atoi(tmpname->c_str()); - - tmpname = tmpElt->Attribute("step"); - if (tmpname != NULL) - AverageBitrate_Step = atoi(tmpname->c_str()); - } - - // Copyright parameter - tmpElt = iterateElmt->FirstChildElement("Copyright"); - if (tmpElt != NULL) - { - tmpname = tmpElt->Attribute("use"); - if (tmpname != NULL) - bCopyright = (tmpname->compare("true") == 0); - } - - // Copyright parameter - tmpElt = iterateElmt->FirstChildElement("CRC"); - if (tmpElt != NULL) - { - tmpname = tmpElt->Attribute("use"); - if (tmpname != NULL) - bCRC = (tmpname->compare("true") == 0); - } - - // Copyright parameter - tmpElt = iterateElmt->FirstChildElement("Original"); - if (tmpElt != NULL) - { - tmpname = tmpElt->Attribute("use"); - if (tmpname != NULL) - bOriginal = (tmpname->compare("true") == 0); - } - - // Copyright parameter - tmpElt = iterateElmt->FirstChildElement("Private"); - if (tmpElt != NULL) - { - tmpname = tmpElt->Attribute("use"); - if (tmpname != NULL) - bPrivate = (tmpname->compare("true") == 0); - } -/* - // Copyright parameter - tmpElt = iterateElmt->FirstChildElement("Bit_reservoir"); - if (tmpElt != NULL) - { - tmpname = tmpElt->Attribute("use"); - if (tmpname != NULL) - bNoBitRes = !(tmpname->compare("true") == 0); - } - - // bitrates - tmpElt = iterateElmt->FirstChildElement("bitrate"); - tmpname = tmpElt->Attribute("min"); - if (tmpname != NULL) - { - unsigned int uitmp = atoi(tmpname->c_str()); - for (int i=0;iAttribute("max"); - if (tmpname != NULL) - { - unsigned int uitmp = atoi(tmpname->c_str()); - for (int i=0;iFirstChildElement("resampling"); - if (tmpElt != NULL) - { - tmpname = tmpElt->Attribute("use"); - if (tmpname != NULL) - bResample = (tmpname->compare("true") == 0); - - unsigned int uitmp = atoi(tmpElt->Attribute("freq")->c_str()); - for (int i=0;iFirstChildElement("VBR"); - if (tmpElt != NULL) - { - tmpname = tmpElt->Attribute("use"); - if (tmpname != NULL) - { - if (tmpname->compare("ABR") == 0) - mBRmode = BR_ABR; - else if (tmpname->compare("true") == 0) - mBRmode = BR_VBR; - else - mBRmode = BR_CBR; - } - - tmpname = tmpElt->Attribute("header"); - if (tmpname != NULL) - bXingFrame = (tmpname->compare("true") == 0); - - tmpname = tmpElt->Attribute("quality"); - if (tmpname != NULL) - { - VbrQuality = atoi(tmpname->c_str()); - } - - tmpname = tmpElt->Attribute("average"); - if (tmpname != NULL) - { - AverageBitrate = atoi(tmpname->c_str()); - } - else - { - } - } - - // output parameters - tmpElt = iterateElmt->FirstChildElement("output"); - if (tmpElt != NULL) - { - OutputDir = *tmpElt->Attribute("path"); - } -*/ -//#ifdef OLD - // Channel mode parameter - tmpElt = iterateElmt->FirstChildElement("Channel"); - if (tmpElt != NULL) - { - const std::string * tmpStr = tmpElt->Attribute("mode"); - if (tmpStr != NULL) - { - for (int i=0;icompare(GetChannelModeString(i)) == 0) - { - nChannelIndex = i; - break; - } - } - } -/* - tmpname = tmpElt->Attribute("force"); - if (tmpname != NULL) - bForceChannel = (tmpname->compare("true") == 0); -*/ - } -//#endif // OLD - - // Preset parameter -/* - tmpElt = iterateElmt->FirstChildElement("Preset"); - if (tmpElt != NULL) - { - const std::string * tmpStr = tmpElt->Attribute("type"); - for (int i=0;icompare(GetPresetModeString(i)) == 0) - { - nPresetIndex = i; - break; - } - } - - } -*/ - } -} - -/** - \todo save the parameters -* / -void AEncodeProperties::SaveParams(const HWND hParentWnd) -{ - char string[MAX_PATH]; -/* int nIdx = SendMessage(::GetDlgItem( hParentWnd ,IDC_COMBO_SETTINGS ), CB_GETCURSEL, NULL, NULL); - ::SendMessage(::GetDlgItem( hParentWnd ,IDC_COMBO_SETTINGS ), CB_GETLBTEXT , nIdx, (LPARAM) string); -* / -}*/ - -bool AEncodeProperties::operator !=(const AEncodeProperties & the_instance) const -{ -/* - ::OutputDebugString(bCopyright != the_instance.bCopyright?"1":"-"); - ::OutputDebugString(bCRC != the_instance.bCRC ?"2":"-"); - ::OutputDebugString(bOriginal != the_instance.bOriginal ?"3":"-"); - ::OutputDebugString(bPrivate != the_instance.bPrivate ?"4":"-"); - ::OutputDebugString(bNoBitRes != the_instance.bNoBitRes ?"5":"-"); - ::OutputDebugString(mBRmode != the_instance.mBRmode ?"6":"-"); - ::OutputDebugString(bXingFrame != the_instance.bXingFrame?"7":"-"); - ::OutputDebugString(bForceChannel != the_instance.bForceChannel?"8":"-"); - ::OutputDebugString(bResample != the_instance.bResample ?"9":"-"); - ::OutputDebugString(nChannelIndex != the_instance.nChannelIndex?"10":"-"); - ::OutputDebugString(nMinBitrateIndex != the_instance.nMinBitrateIndex?"11":"-"); - ::OutputDebugString(nMaxBitrateIndex != the_instance.nMaxBitrateIndex?"12":"-"); - ::OutputDebugString(nPresetIndex != the_instance.nPresetIndex?"13":"-"); - ::OutputDebugString(VbrQuality != the_instance.VbrQuality?"14":"-"); - ::OutputDebugString(AverageBitrate != the_instance.AverageBitrate?"15":"-"); - ::OutputDebugString(nSamplingFreqIndex != the_instance.nSamplingFreqIndex?"16":"-"); - ::OutputDebugString(OutputDir.compare(the_instance.OutputDir) != 0?"17":"-"); - - std::string tmp = ""; - char tmpI[10]; - _itoa(AverageBitrate,tmpI,10); - tmp += tmpI; - tmp += " != "; - _itoa(the_instance.AverageBitrate,tmpI,10); - tmp += tmpI; - ::OutputDebugString(tmp.c_str()); -*/ - return ((bCopyright != the_instance.bCopyright) - || (bCRC != the_instance.bCRC) - || (bOriginal != the_instance.bOriginal) - || (bPrivate != the_instance.bPrivate) - || (bSmartOutput != the_instance.bSmartOutput) - || (SmartRatioMax != the_instance.SmartRatioMax) - || (bAbrOutput != the_instance.bAbrOutput) - || (AverageBitrate_Min != the_instance.AverageBitrate_Min) - || (AverageBitrate_Max != the_instance.AverageBitrate_Max) - || (AverageBitrate_Step != the_instance.AverageBitrate_Step) - || (bNoBitRes != the_instance.bNoBitRes) - || (mBRmode != the_instance.mBRmode) - || (bXingFrame != the_instance.bXingFrame) - || (bForceChannel != the_instance.bForceChannel) - || (bResample != the_instance.bResample) - || (nChannelIndex != the_instance.nChannelIndex) - || (nMinBitrateIndex != the_instance.nMinBitrateIndex) - || (nMaxBitrateIndex != the_instance.nMaxBitrateIndex) - || (nPresetIndex != the_instance.nPresetIndex) - || (VbrQuality != the_instance.VbrQuality) -// || (AverageBitrate != the_instance.AverageBitrate) - || (nSamplingFreqIndex != the_instance.nSamplingFreqIndex) -// || (OutputDir.compare(the_instance.OutputDir) != 0) - ); -} - -void AEncodeProperties::SelectSavedParams(const std::string the_string) -{ - // get the values from the saved file if possible - if (my_stored_data.LoadFile(my_store_location)) - { - TiXmlNode* node; - - node = my_stored_data.FirstChild("lame_acm"); - - TiXmlElement* CurrentNode = node->FirstChildElement("encodings"); - - if (CurrentNode != NULL) - { - CurrentNode->SetAttribute("default",the_string); - GetValuesFromKey(the_string, *CurrentNode); - my_stored_data.SaveFile(my_store_location); - } - } -} - -inline void AEncodeProperties::SetAttributeBool(TiXmlElement * the_elt,const std::string & the_string, const bool the_value) const -{ - if (the_value == false) - the_elt->SetAttribute(the_string, "false"); - else - the_elt->SetAttribute(the_string, "true"); -} - -void AEncodeProperties::SaveValuesToElement(TiXmlElement * the_element) const -{ - // get all the parameters saved in this Element - TiXmlElement * tmpElt; - - // Bit Reservoir parameter -/* - tmpElt = the_element->FirstChildElement("Bit_reservoir"); - if (tmpElt == NULL) - { - tmpElt = new TiXmlElement("Bit_reservoir"); - SetAttributeBool(tmpElt, "use", !bNoBitRes); - the_element->InsertEndChild(*tmpElt); - } - else - { - SetAttributeBool(tmpElt, "use", !bNoBitRes); - } -*/ - // Copyright parameter - tmpElt = the_element->FirstChildElement("Copyright"); - if (tmpElt == NULL) - { - tmpElt = new TiXmlElement("Copyright"); - SetAttributeBool( tmpElt, "use", bCopyright); - the_element->InsertEndChild(*tmpElt); - } - else - { - SetAttributeBool( tmpElt, "use", bCopyright); - } - - // Smart Output parameter - tmpElt = the_element->FirstChildElement("Smart"); - if (tmpElt == NULL) - { - tmpElt = new TiXmlElement("Smart"); - SetAttributeBool( tmpElt, "use", bSmartOutput); - tmpElt->SetAttribute("ratio", SmartRatioMax); - the_element->InsertEndChild(*tmpElt); - } - else - { - SetAttributeBool( tmpElt, "use", bSmartOutput); - tmpElt->SetAttribute("ratio", SmartRatioMax); - } - - // Smart Output parameter - tmpElt = the_element->FirstChildElement("ABR"); - if (tmpElt == NULL) - { - tmpElt = new TiXmlElement("ABR"); - SetAttributeBool( tmpElt, "use", bAbrOutput); - tmpElt->SetAttribute("min", AverageBitrate_Min); - tmpElt->SetAttribute("max", AverageBitrate_Max); - tmpElt->SetAttribute("step", AverageBitrate_Step); - the_element->InsertEndChild(*tmpElt); - } - else - { - SetAttributeBool( tmpElt, "use", bAbrOutput); - tmpElt->SetAttribute("min", AverageBitrate_Min); - tmpElt->SetAttribute("max", AverageBitrate_Max); - tmpElt->SetAttribute("step", AverageBitrate_Step); - } - - // CRC parameter - tmpElt = the_element->FirstChildElement("CRC"); - if (tmpElt == NULL) - { - tmpElt = new TiXmlElement("CRC"); - SetAttributeBool( tmpElt, "use", bCRC); - the_element->InsertEndChild(*tmpElt); - } - else - { - SetAttributeBool( tmpElt, "use", bCRC); - } - - // Original parameter - tmpElt = the_element->FirstChildElement("Original"); - if (tmpElt == NULL) - { - tmpElt = new TiXmlElement("Original"); - SetAttributeBool( tmpElt, "use", bOriginal); - the_element->InsertEndChild(*tmpElt); - } - else - { - SetAttributeBool( tmpElt, "use", bOriginal); - } - - // Private parameter - tmpElt = the_element->FirstChildElement("Private"); - if (tmpElt == NULL) - { - tmpElt = new TiXmlElement("Private"); - SetAttributeBool( tmpElt, "use", bPrivate); - the_element->InsertEndChild(*tmpElt); - } - else - { - SetAttributeBool( tmpElt, "use", bPrivate); - } - - // Channel Mode parameter - tmpElt = the_element->FirstChildElement("Channel"); - if (tmpElt == NULL) - { - tmpElt = new TiXmlElement("Channel"); - tmpElt->SetAttribute("mode", GetChannelModeString(nChannelIndex)); -// SetAttributeBool( tmpElt, "force", bForceChannel); - the_element->InsertEndChild(*tmpElt); - } - else - { - tmpElt->SetAttribute("mode", GetChannelModeString(nChannelIndex)); -// SetAttributeBool( tmpElt, "force", bForceChannel); - } -/* - // Preset parameter - tmpElt = the_element->FirstChildElement("Preset"); - if (tmpElt == NULL) - { - tmpElt = new TiXmlElement("Preset"); - tmpElt->SetAttribute("type", GetPresetModeString(nPresetIndex)); - the_element->InsertEndChild(*tmpElt); - } - else - { - tmpElt->SetAttribute("type", GetPresetModeString(nPresetIndex)); - } - - // Bitrate parameter - tmpElt = the_element->FirstChildElement("bitrate"); - if (tmpElt == NULL) - { - tmpElt = new TiXmlElement("bitrate"); - tmpElt->SetAttribute("min", the_Bitrates[nMinBitrateIndex]); - tmpElt->SetAttribute("max", the_Bitrates[nMaxBitrateIndex]); - the_element->InsertEndChild(*tmpElt); - } - else - { - tmpElt->SetAttribute("min", the_Bitrates[nMinBitrateIndex]); - tmpElt->SetAttribute("max", the_Bitrates[nMaxBitrateIndex]); - } - - // Output Directory parameter - tmpElt = the_element->FirstChildElement("output"); - if (tmpElt == NULL) - { - tmpElt = new TiXmlElement("output"); - tmpElt->SetAttribute("path", OutputDir); - the_element->InsertEndChild(*tmpElt); - } - else - { - tmpElt->SetAttribute("path", OutputDir); - } -*/ -/* - // Resampling parameter - tmpElt = the_element->FirstChildElement("resampling"); - if (tmpElt == NULL) - { - tmpElt = new TiXmlElement("resampling"); - SetAttributeBool( tmpElt, "use", bResample); - tmpElt->SetAttribute("freq", the_SamplingFreqs[nSamplingFreqIndex]); - the_element->InsertEndChild(*tmpElt); - } - else - { - SetAttributeBool( tmpElt, "use", bResample); - tmpElt->SetAttribute("freq", the_SamplingFreqs[nSamplingFreqIndex]); - } - - // VBR parameter - tmpElt = the_element->FirstChildElement("VBR"); - if (tmpElt == NULL) - { - tmpElt = new TiXmlElement("VBR"); - - if (mBRmode == BR_ABR) - tmpElt->SetAttribute("use", "ABR"); - else - SetAttributeBool( tmpElt, "use", (mBRmode != BR_CBR)); - - SetAttributeBool( tmpElt, "header", bXingFrame); - tmpElt->SetAttribute("quality", VbrQuality); - tmpElt->SetAttribute("average", AverageBitrate); - the_element->InsertEndChild(*tmpElt); - } - else - { - if (mBRmode == BR_ABR) - tmpElt->SetAttribute("use", "ABR"); - else - SetAttributeBool( tmpElt, "use", (mBRmode != BR_CBR)); - - SetAttributeBool( tmpElt, "header", bXingFrame); - tmpElt->SetAttribute("quality", VbrQuality); - tmpElt->SetAttribute("average", AverageBitrate); - } -*/ -} - -bool AEncodeProperties::HandleDialogCommand(const HWND parentWnd, const WPARAM wParam, const LPARAM lParam) -{ - UINT command; - command = GET_WM_COMMAND_ID(wParam, lParam); - - switch (command) - { - case IDOK : - { - bool bShouldEnd = true; - - // save parameters - char string[MAX_PATH]; -// ::GetWindowText(::GetDlgItem( parentWnd, IDC_COMBO_SETTINGS), string, MAX_PATH); - - wsprintf(string,"Current"); // only the Current config is supported at the moment - - my_debug.OutPut("my_hModule = 0x%08X",my_hModule); -/* - AEncodeProperties tmpDlgProps(my_hModule); - AEncodeProperties tmpSavedProps(my_hModule); -//#ifdef OLD - tmpDlgProps.UpdateValueFromDlg(parentWnd); - tmpSavedProps.SelectSavedParams(string); - tmpSavedProps.ParamsRestore(); - // check if the values from the DLG are the same as the one saved in the config file - // if yes, just do nothing -/* - if (tmpDlgProps != tmpSavedProps) - { - int save; - - if (strcmp(string,"Current") == 0) - { - // otherwise, prompt the user if he wants to overwrite the settings - TCHAR tmpStr[250]; - ::LoadString(AOut::GetInstance(),IDS_STRING_PROMPT_REPLACE_CURRENT,tmpStr,250); - - save = AOut::MyMessageBox( tmpStr, MB_OKCANCEL|MB_ICONQUESTION, parentWnd); - } - else - { - // otherwise, prompt the user if he wants to overwrite the settings - TCHAR tmpStr[250]; - ::LoadString(AOut::GetInstance(),IDS_STRING_PROMPT_REPLACE_SETING,tmpStr,250); - TCHAR tmpDsp[500]; - wsprintf(tmpDsp,tmpStr,string); - - save = AOut::MyMessageBox( tmpDsp, MB_YESNOCANCEL|MB_ICONQUESTION, parentWnd); - } - - if (save == IDCANCEL) - bShouldEnd = false; - else if (save == IDNO) - { - // save the values in 'current' - UpdateValueFromDlg(parentWnd); - SaveValuesToStringKey("Current"); - SelectSavedParams("Current"); - } - else - { - // do so and save in XML - UpdateValueFromDlg(parentWnd); - SaveValuesToStringKey(string); - } - } -*/ -//#endif // OLD -my_debug.OutPut("before : nChannelIndex %d, bCRC %d, bCopyright %d, bOriginal %d, bPrivate %d",nChannelIndex, bCRC, bCopyright, bOriginal, bPrivate); - -my_debug.OutPut("call UpdateValueFromDlg"); - - UpdateValueFromDlg(parentWnd); - -my_debug.OutPut("call SaveValuesToStringKey"); - - SaveValuesToStringKey("Current"); // only Current config is supported now - -// SaveParams(parentWnd); - -//my_debug.OutPut("call SelectSavedParams"); - -// SelectSavedParams(string); -// UpdateDlgFromValue(parentWnd); - -my_debug.OutPut("finished saving"); - - if (bShouldEnd) - { - RemoveProp(parentWnd, "AEncodeProperties-Config"); - - EndDialog(parentWnd, true); - } - } - break; - - case IDCANCEL: - RemoveProp(parentWnd, "AEncodeProperties-Config"); - EndDialog(parentWnd, false); - break; - -/* case IDC_FIND_DLL: - { - OPENFILENAME file; - char DllLocation[512]; - wsprintf(DllLocation,"%s",GetDllLocation()); - - memset(&file, 0, sizeof(file)); - file.lStructSize = sizeof(file); - file.hwndOwner = parentWnd; - file.Flags = OFN_FILEMUSTEXIST | OFN_NODEREFERENCELINKS | OFN_ENABLEHOOK | OFN_EXPLORER ; -/// file.lpstrFile = AOut::the_AOut->DllLocation; - file.lpstrFile = DllLocation; - file.lpstrFilter = "Lame DLL (lame_enc.dll)\0LAME_ENC.DLL\0DLL (*.dll)\0*.DLL\0All (*.*)\0*.*\0"; - file.nFilterIndex = 1; - file.nMaxFile = sizeof(DllLocation); - file.lpfnHook = DLLFindCallback; // use to validate the DLL chosen - - GetOpenFileName(&file); - - SetDllLocation(DllLocation); - // use this filename if necessary - } - break; -*/ -/* case IDC_BUTTON_OUTPUT: - { -#ifndef SIMPLE_FOLDER - BROWSEINFO info; - memset(&info,0,sizeof(info)); - - char FolderName[MAX_PATH]; - - info.hwndOwner = parentWnd; - info.pszDisplayName = FolderName; - info.lpfn = BrowseFolderCallbackroc; - info.lParam = (LPARAM) this; - - // get the localised window title - TCHAR output[250]; - ::LoadString(AOut::GetInstance(),IDS_STRING_DIR_SELECT,output,250); - info.lpszTitle = output; - -#ifdef BIF_EDITBOX - info.ulFlags |= BIF_EDITBOX; -#else // BIF_EDITBOX - info.ulFlags |= 0x0010; -#endif // BIF_EDITBOX - -#ifdef BIF_VALIDATE - info.ulFlags |= BIF_VALIDATE; -#else // BIF_VALIDATE - info.ulFlags |= 0x0020; -#endif // BIF_VALIDATE - -#ifdef BIF_NEWDIALOGSTYLE - info.ulFlags |= BIF_NEWDIALOGSTYLE; -#else // BIF_NEWDIALOGSTYLE - info.ulFlags |= 0x0040; -#endif // BIF_NEWDIALOGSTYLE - - ITEMIDLIST *item = SHBrowseForFolder(&info); - - if (item != NULL) - { - char tmpOutputDir[MAX_PATH]; - wsprintf(tmpOutputDir,"%s",GetOutputDirectory()); - - SHGetPathFromIDList( item,tmpOutputDir ); - SetOutputDirectory( tmpOutputDir ); - ::SetWindowText(GetDlgItem( parentWnd, IDC_EDIT_OUTPUTDIR), tmpOutputDir); -// wsprintf(OutputDir,FolderName); - } -#else // SIMPLE_FOLDER - OPENFILENAME file; - - memset(&file, 0, sizeof(file)); - file.lStructSize = sizeof(file); - file.hwndOwner = parentWnd; - file.Flags = OFN_FILEMUSTEXIST | OFN_NODEREFERENCELINKS | OFN_ENABLEHOOK | OFN_EXPLORER ; -// file.lpstrFile = GetDllLocation(); -// file.lpstrFile = GetOutputDirectory(); - file.lpstrInitialDir = GetOutputDirectory(); - file.lpstrFilter = "A Directory\0.*\0"; -// file.nFilterIndex = 1; - file.nMaxFile = MAX_PATH; -// file.lpfnHook = DLLFindCallback; // use to validate the DLL chosen -// file.Flags = OFN_ENABLESIZING | OFN_NOREADONLYRETURN | OFN_HIDEREADONLY; - file.Flags = OFN_NOREADONLYRETURN | OFN_HIDEREADONLY | OFN_EXPLORER; - - TCHAR output[250]; - ::LoadString(AOut::GetInstance(),IDS_STRING_DIR_SELECT,output,250); - file.lpstrTitle = output; - - GetSaveFileName(&file); -#endif // SIMPLE_FOLDER - } - break; -*/ - case IDC_CHECK_ENC_ABR: - EnableAbrOptions(parentWnd, ::IsDlgButtonChecked( parentWnd, IDC_CHECK_ENC_ABR) == BST_CHECKED); - break; -/* case IDC_RADIO_BITRATE_CBR: - AEncodeProperties::DisplayVbrOptions(parentWnd, AEncodeProperties::BR_CBR); - break; - - case IDC_RADIO_BITRATE_VBR: - AEncodeProperties::DisplayVbrOptions(parentWnd, AEncodeProperties::BR_VBR); - break; - - case IDC_RADIO_BITRATE_ABR: - AEncodeProperties::DisplayVbrOptions(parentWnd, AEncodeProperties::BR_ABR); - break; - - case IDC_CHECK_RESAMPLE: - { - bool tmp_bResampleUsed = (::IsDlgButtonChecked( parentWnd, IDC_CHECK_RESAMPLE) == BST_CHECKED); - if (tmp_bResampleUsed) - { - ::EnableWindow(::GetDlgItem(parentWnd,IDC_COMBO_SAMPLEFREQ), TRUE); - } - else - { - ::EnableWindow(::GetDlgItem(parentWnd,IDC_COMBO_SAMPLEFREQ), FALSE); - } - } - break; -*/ -/* case IDC_COMBO_SETTINGS: -// if (CBN_SELCHANGE == GET_WM_COMMAND_CMD(wParam, lParam)) - if (CBN_SELENDOK == GET_WM_COMMAND_CMD(wParam, lParam)) - { - char string[MAX_PATH]; - int nIdx = SendMessage(HWND(lParam), CB_GETCURSEL, NULL, NULL); - SendMessage(HWND(lParam), CB_GETLBTEXT , nIdx, (LPARAM) string); - - // get the info corresponding to the new selected item - SelectSavedParams(string); - UpdateDlgFromValue(parentWnd); - } - break; -*/ -/* case IDC_BUTTON_CONFIG_SAVE: - { - // save the data in the current config - char string[MAX_PATH]; - ::GetWindowText(::GetDlgItem( parentWnd, IDC_COMBO_SETTINGS), string, MAX_PATH); - - UpdateValueFromDlg(parentWnd); - SaveValuesToStringKey(string); - SelectSavedParams(string); - UpdateConfigs(parentWnd); - UpdateDlgFromValue(parentWnd); - } - break; - - case IDC_BUTTON_CONFIG_RENAME: - { - char string[MAX_PATH]; - ::GetWindowText(::GetDlgItem( parentWnd, IDC_COMBO_SETTINGS), string, MAX_PATH); - - if (RenameCurrentTo(string)) - { - // Update the names displayed - UpdateConfigs(parentWnd); - } - - } - break; - - case IDC_BUTTON_CONFIG_DELETE: - { - char string[MAX_PATH]; - ::GetWindowText(::GetDlgItem( parentWnd, IDC_COMBO_SETTINGS), string, MAX_PATH); - - if (DeleteConfig(string)) - { - // Update the names displayed - UpdateConfigs(parentWnd); - UpdateDlgFromValue(parentWnd); - } - } - break; -*/ - } - - return FALSE; -} - -bool AEncodeProperties::RenameCurrentTo(const std::string & new_config_name) -{ - bool bResult = false; - - // display all the names of the saved configs - // get the values from the saved file if possible - if (my_stored_data.LoadFile(my_store_location)) - { - TiXmlNode* node; - - node = my_stored_data.FirstChild("lame_acm"); - - TiXmlElement* CurrentNode = node->FirstChildElement("encodings"); - - if (CurrentNode->Attribute("default") != NULL) - { - std::string CurrentConfigName = *CurrentNode->Attribute("default"); - - // no rename possible for Current - if (CurrentConfigName == "") - { - bResult = true; - } - else if (CurrentConfigName != "Current") - { - // find the config that correspond to CurrentConfig - TiXmlElement* iterateElmt = CurrentNode->FirstChildElement("config"); -// int Idx = 0; - while (iterateElmt != NULL) - { - const std::string * tmpname = iterateElmt->Attribute("name"); - /** - \todo support language names - */ - if (tmpname != NULL) - { - if (tmpname->compare(CurrentConfigName) == 0) - { - iterateElmt->SetAttribute("name",new_config_name); - bResult = true; - break; - } - } -// Idx++; - iterateElmt = iterateElmt->NextSiblingElement("config"); - } - } - - if (bResult) - { - CurrentNode->SetAttribute("default",new_config_name); - - my_stored_data.SaveFile(my_store_location); - } - } - } - - return bResult; -} - -bool AEncodeProperties::DeleteConfig(const std::string & config_name) -{ - bool bResult = false; - - if (config_name != "Current") - { - // display all the names of the saved configs - // get the values from the saved file if possible - if (my_stored_data.LoadFile(my_store_location)) - { - TiXmlNode* node; - - node = my_stored_data.FirstChild("lame_acm"); - - TiXmlElement* CurrentNode = node->FirstChildElement("encodings"); - - TiXmlElement* iterateElmt = CurrentNode->FirstChildElement("config"); -// int Idx = 0; - while (iterateElmt != NULL) - { - const std::string * tmpname = iterateElmt->Attribute("name"); - /** - \todo support language names - */ - if (tmpname != NULL) - { - if (tmpname->compare(config_name) == 0) - { - CurrentNode->RemoveChild(iterateElmt); - bResult = true; - break; - } - } -// Idx++; - iterateElmt = iterateElmt->NextSiblingElement("config"); - } - } - - if (bResult) - { - my_stored_data.SaveFile(my_store_location); - - // select a new default config : "Current" - SelectSavedParams("Current"); - - } - } - - return bResult; -} - -void AEncodeProperties::UpdateConfigs(const HWND HwndDlg) -{ - // Add User configs -// SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_SETTINGS), CB_RESETCONTENT , NULL, NULL); - - // display all the names of the saved configs - // get the values from the saved file if possible - if (my_stored_data.LoadFile(my_store_location)) - { - TiXmlNode* node; - - node = my_stored_data.FirstChild("lame_acm"); - - TiXmlElement* CurrentNode = node->FirstChildElement("encodings"); - - std::string CurrentConfig = ""; - - if (CurrentNode->Attribute("default") != NULL) - { - CurrentConfig = *CurrentNode->Attribute("default"); - } - - TiXmlElement* iterateElmt; - -my_debug.OutPut("are we here ?"); - - // find the config that correspond to CurrentConfig - iterateElmt = CurrentNode->FirstChildElement("config"); - int Idx = 0; - while (iterateElmt != NULL) - { - const std::string * tmpname = iterateElmt->Attribute("name"); - /** - \todo support language names - */ - if (tmpname != NULL) - { -// SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_SETTINGS), CB_ADDSTRING, NULL, (LPARAM) tmpname->c_str()); - if (tmpname->compare(CurrentConfig) == 0) - { -// SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_SETTINGS), CB_SETCURSEL, Idx, NULL); - SelectSavedParams(*tmpname); - UpdateDlgFromValue(HwndDlg); - } - } -my_debug.OutPut("Idx = %d",Idx); - - Idx++; - // only Current config supported now -// iterateElmt = iterateElmt->NextSiblingElement("config"); - iterateElmt = NULL; -my_debug.OutPut("iterateElmt = 0x%08X",iterateElmt); - - } - } -} -/* -void AEncodeProperties::UpdateAbrSteps(unsigned int min, unsigned int max, unsigned int step) const -{ -} -*/ -void AEncodeProperties::UpdateDlgFromSlides(HWND hwndDlg) const -{ - UINT value_min, value_max, value_step, value; - char tmp[4]; - - value_min = SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_MIN), TBM_GETPOS, NULL, NULL); - value_max = SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_MAX), TBM_GETPOS, NULL, NULL); - - if (value_min>value_max) - { - SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_MIN), TBM_SETPOS, TRUE, value_max); - UpdateDlgFromSlides(hwndDlg); - return; - } - - if (value_max=value_min;i-=value_step) - { - SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_SAMPLE), TBM_SETTIC, 0, i); - } - SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_SAMPLE), TBM_SETLINESIZE, 0, value_step); - SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_SAMPLE), TBM_SETPAGESIZE, 0, value_step); - - value = SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_SAMPLE), TBM_GETPOS, NULL, NULL); - wsprintf(tmp,"%3d",value); - ::SetWindowText(GetDlgItem( hwndDlg, IDC_STATIC_AVERAGE_SAMPLE_VALUE), tmp); -} - -void AEncodeProperties::EnableAbrOptions(HWND hDialog, bool enable) -{ - ::EnableWindow(::GetDlgItem( hDialog, IDC_SLIDER_AVERAGE_MIN), enable); - ::EnableWindow(::GetDlgItem( hDialog, IDC_SLIDER_AVERAGE_MAX), enable); - ::EnableWindow(::GetDlgItem( hDialog, IDC_SLIDER_AVERAGE_STEP), enable); - ::EnableWindow(::GetDlgItem( hDialog, IDC_SLIDER_AVERAGE_SAMPLE), enable); - ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_MIN), enable); - ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_MAX), enable); - ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_STEP), enable); - ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_SAMPLE), enable); - ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_MIN_VALUE), enable); - ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_MAX_VALUE), enable); - ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_STEP_VALUE), enable); - ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_SAMPLE_VALUE), enable); -} - diff --git a/platform/win32/msvc/external/lame/ACM/AEncodeProperties.h b/platform/win32/msvc/external/lame/ACM/AEncodeProperties.h deleted file mode 100644 index 4d2e1db7895..00000000000 --- a/platform/win32/msvc/external/lame/ACM/AEncodeProperties.h +++ /dev/null @@ -1,448 +0,0 @@ -/** - * - * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows - * - * Copyright (c) 2002 Steve Lhomme - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -/*! - \author Steve Lhomme - \version \$Id: AEncodeProperties.h,v 1.5 2002/04/07 13:31:35 robux4 Exp $ -*/ - -#if !defined(_AENCODEPROPERTIES_H__INCLUDED_) -#define _AENCODEPROPERTIES_H__INCLUDED_ - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - -#include -#include - -#include "ADbg/ADbg.h" -//#include "BladeMP3EncDLL.h" -#include "tinyxml/tinyxml.h" -//#include "AParameters/AParameters.h" - -typedef const struct { - UINT id; - const char *tip; -} ToolTipItem; -/** - \class AEncodeProperties - \brief the AEncodeProperties class is responsible for handling all the encoding properties -*/ -class AEncodeProperties -{ -public: - /** - \brief default constructor - - \param the windows module with which you can retrieve many informations - */ - AEncodeProperties(HMODULE hModule); - - /** - \brief default destructor - */ - virtual ~AEncodeProperties() {} - - /** - \enum BRMode - \brief A bitrate mode (CBR, VBR, ABR) - */ - enum BRMode { BR_CBR, BR_VBR, BR_ABR }; - - /** - \brief Handle all the commands that occur in the Config dialog box - */ - bool HandleDialogCommand(const HWND parentWnd, const WPARAM wParam, const LPARAM lParam); - /** - \brief check wether 2 instances are equal, ie have the same encoding parameters - */ - bool operator != (const AEncodeProperties & the_instance) const; - - /** - \brief Check wether the Encode process should use the Copyright bit - */ - inline const bool GetCopyrightMode() const { return bCopyright; } - /** - \brief Check wether the Encode process should use the CRC bit - */ - inline const bool GetCRCMode() const { return bCRC; } - /** - \brief Check wether the Encode process should use the Original bit - */ - inline const bool GetOriginalMode() const { return bOriginal; } - /** - \brief Check wether the Encode process should use the Private bit - */ - inline const bool GetPrivateMode() const { return bPrivate; } - /** - \brief Check wether the Encode process should use the Smart Bitrate output - */ - inline const bool GetSmartOutputMode() const { return bSmartOutput; } - /** - \brief Check wether the Encode process should allow Average Bitrate output - */ - inline const bool GetAbrOutputMode() const { return bAbrOutput; } - - /** - \brief Check wether the Encode process shouldn't use the Bit Reservoir - */ - inline const bool GetNoBiResMode() const { return bNoBitRes; } - - /** - \brief Check wether the Encode process should force the channel mode (stereo or mono resampling) - */ - inline const bool GetForceChannelMode() const { return bForceChannel; } - - /** - \brief Check wether the Encode process should use the VBR mode - */ - inline const BRMode GetVBRUseMode() const { return mBRmode; } - /** - \brief Check wether the Encode process should use the Xing frame in the VBR mode - \note the Xing frame is a silent frame at the beginning that contain VBR statistics about the file. - */ - inline const bool GetXingFrameMode() const { return bXingFrame; } - - /** - \brief Check wether the Encode process should resample before encoding - */ - inline const bool GetResampleMode() const { return bResample; } - - /** - \brief Set wether the Encode process should use the Copyright bit - */ - inline void SetCopyrightMode(const bool bMode) { bCopyright = bMode; } - /** - \brief Set wether the Encode process should use the CRC bit - */ - inline void SetCRCMode(const bool bMode) { bCRC = bMode; } - /** - \brief Set wether the Encode process should use the Original bit - */ - inline void SetOriginalMode(const bool bMode) { bOriginal = bMode; } - /** - \brief Set wether the Encode process should use the Private bit - */ - inline void SetPrivateMode(const bool bMode) { bPrivate = bMode; } - - /** - \brief Set wether the Encode process should use the Smart Bitrate output - */ - inline void SetSmartOutputMode(const bool bMode) { bSmartOutput = bMode; } - /** - \brief Set wether the Encode process should use the Average Bitrate output - */ - inline void SetAbrOutputMode(const bool bMode) { bAbrOutput = bMode; } - - - /** - \brief Set wether the Encode process shouldn't use the Bit Reservoir - */ - inline void SetNoBiResMode(const bool bMode) { bNoBitRes = bMode; } - - /** - \brief Set wether the Encode process should force the channel mode (stereo or mono resampling) - */ - inline void SetForceChannelMode(const bool bMode) { bForceChannel = bMode; } - - /** - \brief Set wether the Encode process should use the VBR mode - */ - inline void SetVBRUseMode(const BRMode mode) { mBRmode = mode; } - - /** - \brief Set wether the Encode process should use the Xing frame in the VBR mode - \note the Xing frame is a silent frame at the beginning that contain VBR statistics about the file. - */ - inline void SetXingFrameMode(const bool bMode) { bXingFrame = bMode; } - - /** - \brief CBR : Get the bitrate to use / - VBR : Get the minimum bitrate value - */ - const unsigned int GetBitrateValue() const; - - /** - \brief Get the current (VBR:min) bitrate for the specified MPEG version - - \param bitrate the data that will be filled with the bitrate - \param MPEG_Version The MPEG version (MPEG1 or MPEG2) - - \return 0 if the bitrate is not found, 1 if the bitrate is found - */ - const int GetBitrateValue(DWORD & bitrate, const DWORD MPEG_Version) const; - /** - \brief Get the current (VBR:min) bitrate for MPEG I - - \param bitrate the data that will be filled with the bitrate - - \return 0 if the bitrate is not found, 1 if the bitrate is found - */ - const int GetBitrateValueMPEG1(DWORD & bitrate) const; - /** - \brief Get the current (VBR:min) bitrate for MPEG II - - \param bitrate the data that will be filled with the bitrate - - \return 0 if the bitrate is not found, 1 if the bitrate is found - */ - const int GetBitrateValueMPEG2(DWORD & bitrate) const; - - /** - \brief Get the current (VBR:min) bitrate in the form of a string - - \param string the string that will be filled - \param string_size the size of the string - - \return -1 if the bitrate is not found, and the number of char copied otherwise - */ - inline const int GetBitrateString(char * string, int string_size) const {return GetBitrateString(string,string_size,nMinBitrateIndex); } - - /** - \brief Get the (VBR:min) bitrate corresponding to the specified index in the form of a string - - \param string the string that will be filled - \param string_size the size of the string - \param a_bitrateID the index in the Bitrate table - - \return -1 if the bitrate is not found, and the number of char copied otherwise - */ - const int GetBitrateString(char * string, int string_size, int a_bitrateID) const; - - /** - \brief Get the number of possible bitrates - */ - inline const int GetBitrateLentgh() const { return sizeof(the_Bitrates) / sizeof(unsigned int); } - /** - \brief Get the number of possible sampling frequencies - */ - inline const unsigned int GetResampleFreq() const { return the_SamplingFreqs[nSamplingFreqIndex]; } - /** - \brief Get the max compression ratio allowed (1:15 default) - */ - inline double GetSmartRatio() const { return SmartRatioMax;} - /** - \brief Get the min ABR bitrate possible - */ - inline unsigned int GetAbrBitrateMin() const { return AverageBitrate_Min;} - /** - \brief Get the max ABR bitrate possible - */ - inline unsigned int GetAbrBitrateMax() const { return AverageBitrate_Max;} - /** - \brief Get the step between ABR bitrates - */ - inline unsigned int GetAbrBitrateStep() const { return AverageBitrate_Step;} - - /** - \brief Get the VBR attributes for a specified MPEG version - - \param MaxBitrate receive the maximum bitrate possible in the VBR mode - \param Quality receive the quality value (0 to 9 see Lame doc for more info) - \param VBRHeader receive the value that indicates wether the VBR/Xing header should be filled - \param MPEG_Version The MPEG version (MPEG1 or MPEG2) - - \return the VBR mode (Old, New, ABR, MTRH, Default or None) - */ -// VBRMETHOD GetVBRValue(DWORD & MaxBitrate, int & Quality, DWORD & AbrBitrate, BOOL & VBRHeader, const DWORD MPEG_Version) const; - - /** - \brief Get the Lame DLL Location - */ -// const char * GetDllLocation() const { return DllLocation.c_str(); } - /** - \brief Set the Lame DLL Location - */ -// void SetDllLocation( const char * the_string ) { DllLocation = the_string; } - - /** - \brief Get the output directory for encoding - */ -// const char * GetOutputDirectory() const { return OutputDir.c_str(); } - /** - \brief Set the output directory for encoding - */ -// void SetOutputDirectory( const char * the_string ) { OutputDir = the_string; } - - /** - \brief Get the current channel mode to use - */ - const unsigned int GetChannelModeValue() const; - /** - \brief Get the current channel mode in the form of a string - */ - inline const char * GetChannelModeString() const {return GetChannelModeString(nChannelIndex); } - /** - \brief Get the channel mode in the form of a string for the specified Channel mode index - - \param a_channelID the Channel mode index (see GetChannelLentgh()) - */ - const char * GetChannelModeString(const int a_channelID) const; - /** - \brief Get the number of possible channel mode - */ - inline const int GetChannelLentgh() const { return 3; } - - /** - \brief Get the current preset to use, see lame documentation/code for more info on the possible presets - */ -// const LAME_QUALTIY_PRESET GetPresetModeValue() const; - /** - \brief Get the preset in the form of a string for the specified Channel mode index - - \param a_presetID the preset index (see GetPresetLentgh()) - */ - const char * GetPresetModeString(const int a_presetID) const; - /** - \brief Get the number of possible presets - */ -// inline const int GetPresetLentgh() const { return sizeof(the_Presets) / sizeof(LAME_QUALTIY_PRESET); } - - /** - \brief Start the user configuration process (called by AOut::config()) - */ - bool Config(const HINSTANCE hInstance, const HWND HwndParent); - - /** - \brief Init the config dialog box with the right texts and choices - */ - bool InitConfigDlg(HWND hDialog); - - /** - \brief Update the instance parameters from the config dialog box - */ - bool UpdateValueFromDlg(HWND hDialog); - /** - \brief Update the config dialog box from the instance parameters - */ - bool UpdateDlgFromValue(HWND hDialog); - - /** - \brief Update the config dialog box with the BitRate mode - */ - static void DisplayVbrOptions(const HWND hDialog, const BRMode the_mode); - - /** - \brief Handle the saving of parameters when something has changed in the config dialog box - */ - void SaveParams(const HWND hDialog); - - /** - \brief Save the current parameters (current config in use) - */ - void ParamsSave(void); - /** - \brief Load the parameters (current config in use) - */ - void ParamsRestore(void); - - /** - \brief Select the specified config name as the new default one - */ - void SelectSavedParams(const std::string config_name); - /** - \brief Save the current parameters to the specified config name - */ - void SaveValuesToStringKey(const std::string & config_name); - /** - \brief Rename the current config name to something else - */ - bool RenameCurrentTo(const std::string & new_config_name); - /** - \brief Delete the config name from the saved configs - */ - bool DeleteConfig(const std::string & config_name); - - ADbg my_debug; - - /** - \brief Update the slides value (on scroll) - */ - void UpdateDlgFromSlides(HWND parent_window) const; - - static ToolTipItem Tooltips[13]; -private: - - bool bCopyright; - bool bCRC; - bool bOriginal; - bool bPrivate; - bool bNoBitRes; - BRMode mBRmode; - bool bXingFrame; - bool bForceChannel; - bool bResample; - bool bSmartOutput; - bool bAbrOutput; - - int VbrQuality; - unsigned int AverageBitrate_Min; - unsigned int AverageBitrate_Max; - unsigned int AverageBitrate_Step; - - double SmartRatioMax; - - static const unsigned int the_ChannelModes[3]; - int nChannelIndex; - - static const unsigned int the_Bitrates[18]; - static const unsigned int the_MPEG1_Bitrates[14]; - static const unsigned int the_MPEG2_Bitrates[14]; - int nMinBitrateIndex; // CBR and VBR - int nMaxBitrateIndex; // only used in VBR mode - - static const unsigned int the_SamplingFreqs[9]; - int nSamplingFreqIndex; - -// static const LAME_QUALTIY_PRESET the_Presets[17]; - int nPresetIndex; - -// char DllLocation[512]; -// std::string DllLocation; -// char OutputDir[MAX_PATH]; -// std::string OutputDir; - -// AParameters my_base_parameters; - TiXmlDocument my_stored_data; - std::string my_store_location; - std::string my_current_config; - -// HINSTANCE hDllInstance; - - void SaveValuesToElement(TiXmlElement * the_element) const; - inline void SetAttributeBool(TiXmlElement * the_elt,const std::string & the_string, const bool the_value) const; - void UpdateConfigs(const HWND HwndDlg); - void EnableAbrOptions(HWND hDialog, bool enable); - - HMODULE my_hModule; - - /** - \brief - - \param config_name - \param parentNode - */ - void GetValuesFromKey(const std::string & config_name, const TiXmlNode & parentNode); -}; - -#endif // !defined(_AENCODEPROPERTIES_H__INCLUDED_) diff --git a/platform/win32/msvc/external/lame/ACM/DecodeStream.cpp b/platform/win32/msvc/external/lame/ACM/DecodeStream.cpp deleted file mode 100644 index c2c753c0660..00000000000 --- a/platform/win32/msvc/external/lame/ACM/DecodeStream.cpp +++ /dev/null @@ -1,242 +0,0 @@ -/** - * - * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows - * - * Copyright (c) 2002 Steve Lhomme - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -/*! - \author Steve Lhomme - \version \$Id: DecodeStream.cpp,v 1.3 2002/01/25 17:51:42 robux4 Exp $ -*/ - -#if !defined(STRICT) -#define STRICT -#endif // STRICT - -#include -#include - -#ifdef ENABLE_DECODING - -#include "adebug.h" - -#include "DecodeStream.h" - -// static methods - -DecodeStream * DecodeStream::Create() -{ - DecodeStream * Result; - - Result = new DecodeStream; - - return Result; -} - -const bool DecodeStream::Erase(const DecodeStream * a_ACMStream) -{ - delete a_ACMStream; - return true; -} - -// class methods - -DecodeStream::DecodeStream() : - m_WorkingBufferUseSize(0), - gfp(NULL) -{ - /// \todo get the debug level from the registry -my_debug = new ADbg(DEBUG_LEVEL_CREATION); - if (my_debug != NULL) { - unsigned char DebugFileName[512]; - - my_debug->setPrefix("MPG123stream"); /// \todo get it from the registry -my_debug->setIncludeTime(true); /// \todo get it from the registry - -// Check in the registry if we have to Output Debug information -DebugFileName[0] = '\0'; - - HKEY OssKey; - if (RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SOFTWARE\\MUKOLI", 0, KEY_READ , &OssKey ) == ERROR_SUCCESS) { - DWORD DataType; - DWORD DebugFileNameSize = 512; - if (RegQueryValueEx( OssKey, "DebugFile", NULL, &DataType, DebugFileName, &DebugFileNameSize ) == ERROR_SUCCESS) { - if (DataType == REG_SZ) { - my_debug->setUseFile(true); - my_debug->setDebugFile((char *)DebugFileName); - my_debug->OutPut("Debug file is %s",(char *)DebugFileName); - } - } - } - my_debug->OutPut(DEBUG_LEVEL_FUNC_START, "DecodeStream Creation (0X%08X)",this); - } - else { - ADbg debug; - debug.OutPut("DecodeStream::ACMACMStream : Impossible to create my_debug"); - } - -} - -DecodeStream::~DecodeStream() -{ -// lame_close( gfp ); - - if (my_debug != NULL) - { - my_debug->OutPut(DEBUG_LEVEL_FUNC_START, "DecodeStream Deletion (0X%08X)",this); - delete my_debug; - } -} - -bool DecodeStream::init(const int nSamplesPerSec, const int nChannels, const int nAvgBytesPerSec, const int nSourceBitrate) -{ - bool bResult = false; - - my_SamplesPerSec = nSamplesPerSec; - my_Channels = nChannels; - my_AvgBytesPerSec = nAvgBytesPerSec; - my_SourceBitrate = nSourceBitrate; - - bResult = true; - - return bResult; -} - -bool DecodeStream::open() -{ - bool bResult = false; - - bResult = bool(InitMP3(&my_DecodeData) != 0); - - return bResult; -} - -bool DecodeStream::close(LPBYTE pOutputBuffer, DWORD *pOutputSize) -{ - - bool bResult = false; -/* - int nOutputSamples = 0; - - nOutputSamples = lame_encode_flush( gfp, pOutputBuffer, 0 ); - - if ( nOutputSamples < 0 ) - { - // BUFFER_TOO_SMALL - *pOutputSize = 0; - } - else - { - *pOutputSize = nOutputSamples; - - bResult = true; - } -/* - // lame will be close in VbrWriteTag function - if ( !lame_get_bWriteVbrTag( gfp ) ) - { - // clean up of allocated memory - lame_close( gfp ); - } -*/ - - ExitMP3(&my_DecodeData); - - bResult = true; - - return bResult; -} - -DWORD DecodeStream::GetOutputSizeForInput(const DWORD the_SrcLength) const -{ - DWORD Result; - - double OutputInputRatio = double(my_SamplesPerSec * 2 * my_Channels) / double(my_SourceBitrate); - - OutputInputRatio *= 1.15; // allow 15% more - - Result = DWORD(double(the_SrcLength) * OutputInputRatio); - - my_debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "Result = %d (OutputInputRatio = %f)",Result,OutputInputRatio); - - return Result; -} - -bool DecodeStream::ConvertBuffer(LPACMDRVSTREAMHEADER a_StreamHeader) -{ - bool result = false; - -if (my_debug != NULL) -{ -my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "enter DecodeStream::ConvertBuffer"); -} - - int ProcessedBytes; - - int ret = decodeMP3(&my_DecodeData, a_StreamHeader->pbSrc, a_StreamHeader->cbSrcLength, (char *)a_StreamHeader->pbDst, a_StreamHeader->cbDstLength, &ProcessedBytes); - - switch (ret) - { - case MP3_OK: - a_StreamHeader->cbSrcLengthUsed = a_StreamHeader->cbSrcLength; - a_StreamHeader->cbDstLengthUsed = ProcessedBytes; - result = true; - break; - case MP3_NEED_MORE: - a_StreamHeader->cbSrcLengthUsed = 0; - a_StreamHeader->cbDstLengthUsed = 0; - break; - case MP3_ERR: - break; - } - -/* - DWORD InSize = a_StreamHeader->cbSrcLength / 2, OutSize = a_StreamHeader->cbDstLength; // 2 for 8<->16 bits - -// Encode it -int dwSamples; - int nOutputSamples = 0; - - dwSamples = InSize / lame_get_num_channels( gfp ); - - if ( 1 == lame_get_num_channels( gfp ) ) - { - nOutputSamples = lame_encode_buffer(gfp,(PSHORT)a_StreamHeader->pbSrc,(PSHORT)a_StreamHeader->pbSrc,dwSamples,a_StreamHeader->pbDst,a_StreamHeader->cbDstLength); - } - else - { - nOutputSamples = lame_encode_buffer_interleaved(gfp,(PSHORT)a_StreamHeader->pbSrc,dwSamples,a_StreamHeader->pbDst,a_StreamHeader->cbDstLength); - } - - a_StreamHeader->cbSrcLengthUsed = a_StreamHeader->cbSrcLength; - a_StreamHeader->cbDstLengthUsed = nOutputSamples; - - result = a_StreamHeader->cbDstLengthUsed <= a_StreamHeader->cbDstLength; -*/ - my_debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "UsedSize = %d / EncodedSize = %d, result = %d, ret = %s", a_StreamHeader->cbSrcLengthUsed, a_StreamHeader->cbDstLengthUsed, result, - (ret == MP3_OK)?"MP3_OK":(ret == MP3_NEED_MORE)?"MP3_NEED_MORE":"error"); - -if (my_debug != NULL) -{ -my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "DecodeStream::ConvertBuffer result = %d",result); -} - - return result; -} -#endif // ENABLE_DECODING diff --git a/platform/win32/msvc/external/lame/ACM/DecodeStream.h b/platform/win32/msvc/external/lame/ACM/DecodeStream.h deleted file mode 100644 index 135ce216c38..00000000000 --- a/platform/win32/msvc/external/lame/ACM/DecodeStream.h +++ /dev/null @@ -1,83 +0,0 @@ -/** - * - * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows - * - * Copyright (c) 2002 Steve Lhomme - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -/*! - \author Steve Lhomme - \version \$Id: DecodeStream.h,v 1.2 2006/12/25 21:37:34 robert Exp $ -*/ - -#if !defined(_DECODESTREAM_H__INCLUDED_) -#define _DECODESTREAM_H__INCLUDED_ - -#if _MSC_VER >= 1000 -#pragma once -#endif // _MSC_VER >= 1000 - -#include -#include -#include - -#include "ADbg/ADbg.h" - - -struct lame_global_flags; - - -class DecodeStream -{ -public: - DecodeStream( ); - virtual ~DecodeStream( ); - - static DecodeStream * Create(); - static const bool Erase(const DecodeStream * a_ACMStream); - - bool init(const int nSamplesPerSec, const int nChannels, const int nAvgBytesPerSec, const int nSourceBitrate); - bool open(); - bool close(LPBYTE pOutputBuffer, DWORD *pOutputSize); - - DWORD GetOutputSizeForInput(const DWORD the_SrcLength) const; - bool ConvertBuffer(LPACMDRVSTREAMHEADER a_StreamHeader); - - static unsigned int GetOutputSampleRate(int samples_per_sec, int bitrate, int channels); - -protected: - lame_global_flags * gfp; - - ADbg * my_debug; - int my_SamplesPerSec; - int my_Channels; - int my_AvgBytesPerSec; - DWORD my_SamplesPerBlock; - int my_SourceBitrate; - - MPSTR my_DecodeData; - - unsigned int m_WorkingBufferUseSize; - char m_WorkingBuffer[2304*2]; // should be at least twice my_SamplesPerBlock - - inline int GetBytesPerBlock(DWORD bytes_per_sec, DWORD samples_per_sec, int BlockAlign) const; - -}; - -#endif // !defined(_DECODESTREAM_H__INCLUDED_) - diff --git a/platform/win32/msvc/external/lame/ACM/LameACM.inf b/platform/win32/msvc/external/lame/ACM/LameACM.inf deleted file mode 100644 index be704304f51..00000000000 --- a/platform/win32/msvc/external/lame/ACM/LameACM.inf +++ /dev/null @@ -1,91 +0,0 @@ -; Lame codec -; enable MP3 compression in Windows - -; Usage : right-click on this file and choose "Install" in the pop up menu - -[Version] -Signature = "$CHICAGO$" -Class = MEDIA - -[SourceDisksNames] -1="Lame MP3 Install Disk",, 0001 - -[SourceDisksFiles] -LameACM.inf=1 -LameACM.acm=1 -lame_acm.xml=1 - -[Installable.Drivers] -lameacm = 1:LameACM.acm, "msacm.lameacm", %DisplayNameWin% , , , - -[DefaultInstall] -CopyFiles = LameACM.Copy,LameACM.Copy.Inf -Updateinis = LameACM.Updateini -;addreg = LameACM.AddReg,LameACM.AddReg9x,LameACM.DoReg -addreg = LameACM.AddReg,LameACM.AddReg9x -MediaType = SOFTWARE - -[DefaultInstall.ntx86] -CopyFiles = LameACM.Copy,LameACM.Copy.Inf -;addreg = LameACM.AddReg,LameACM.AddRegNT,LameACM.DoReg -addreg = LameACM.AddReg,LameACM.AddRegNT -MediaType = SOFTWARE - -[Remove_LameMP3] -;AddReg = LameACM.Unregister -DelReg = LameACM.DelReg -DelFiles = LameACM.Copy,LameACM.Copy.Inf -UpdateInis = LameACM.UpdateIni - -[LameACM.Copy] -LameACM.acm -lame_acm.xml - -[LameACM.Copy.Inf] -LameACM.inf - -[LameACM.UpdateIni] -system.ini, drivers32,,"msacm.lameacm=LameACM.acm" - -[LameACM.AddReg] -HKLM, "Software\Microsoft\Windows NT\CurrentVersion\Drivers32","msacm.lameacm",,"LameACM.acm" -HKLM, "Software\Microsoft\Windows NT\CurrentVersion\Drivers.desc","LameACM.acm",,%DisplayNameWin% - - -[LameACM.AddReg9x] -HKLM,SYSTEM\CurrentControlSet\Control\MediaResources\msacm\msacm.lameacm,Description,,%DisplayNameWin% -HKLM,SYSTEM\CurrentControlSet\Control\MediaResources\msacm\msacm.lameacm,Driver,,LameACM.acm -HKLM,SYSTEM\CurrentControlSet\Control\MediaResources\msacm\msacm.lameacm,FriendlyName,,%DisplayNameWin% -HKLM,%UnInstallPath%,DisplayName,,%DisplayNameWin% -HKLM,%UnInstallPath%,UninstallString,,"%10%\rundll.exe setupx.dll,InstallHinfSection Remove_LameMP3 132 %17%\%InfFile%" - -[LameACM.AddRegNT] -HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers32","msacm.lameacm",,"LameACM.acm" -HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers.desc","LameACM.acm",,%DisplayNameWin% -HKLM,%UnInstallPath%,DisplayName,,%DisplayNameWin% -HKLM,%UnInstallPath%,UninstallString,,"%11%\rundll32.exe setupapi,InstallHinfSection Remove_LameMP3 132 %17%\%InfFile%" - -;[LameACM.DoReg] -;HKLM,Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup,"Lame ACM MP3 Codec",,"%11%\regsvr32.exe /s %11%\LameCom.acm" - -[LameACM.DelReg] -HKLM,"SYSTEM\CurrentControlSet\Control\MediaResources\msacm\msacm.lameacm" -HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers.desc","LameACM.acm",,"" -HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers32","msacm.lameacm",,"" -HKLM,%UnInstallPath% - -;[LameACM.Unregister] -;HKLM,"Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup","Lame ACM MP3 Codec",,"%11%\regsvr32.exe /s /u %11%\LameCom.acm" - -[DestinationDirs] -DefaultDestDir = 11 ; LDID_SYS -LameACM.Copy = 11 -LameACM.Copy.Inf = 17 - -[Strings] -InfFile="LameACM.inf" -DisplayNameWin="Lame ACM MP3 Codec" -UnInstallPath="Software\Microsoft\Windows\CurrentVersion\Uninstall\LameACM" -MediaClassName="Media Devices" -mfgname="Steve Lhomme" - diff --git a/platform/win32/msvc/external/lame/ACM/Makefile.am b/platform/win32/msvc/external/lame/ACM/Makefile.am deleted file mode 100644 index be13e080eb3..00000000000 --- a/platform/win32/msvc/external/lame/ACM/Makefile.am +++ /dev/null @@ -1,26 +0,0 @@ -## $Id: Makefile.am,v 1.7 2008/11/09 13:50:16 aleidinger Exp $ - -include $(top_srcdir)/Makefile.am.global - -SUBDIRS = ADbg ddk tinyxml - -EXTRA_DIST = \ - ACM.cpp \ - ACM.h \ - ACMStream.cpp \ - ACMStream.h \ - AEncodeProperties.cpp \ - AEncodeProperties.h \ - DecodeStream.cpp \ - DecodeStream.h \ - LameACM.inf \ - TODO \ - acm.rc \ - adebug.h \ - lame.ico \ - lameACM.def \ - lame_acm.xml \ - main.cpp \ - readme.txt \ - resource.h - diff --git a/platform/win32/msvc/external/lame/ACM/Makefile.in b/platform/win32/msvc/external/lame/ACM/Makefile.in deleted file mode 100644 index 440f2276a9c..00000000000 --- a/platform/win32/msvc/external/lame/ACM/Makefile.in +++ /dev/null @@ -1,608 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# global section for every Makefile.am -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/Makefile.am.global TODO -subdir = ACM -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CONFIG_DEFS = @CONFIG_DEFS@ -CONFIG_MATH_LIB = @CONFIG_MATH_LIB@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CPUCCODE = @CPUCCODE@ -CPUTYPE = @CPUTYPE@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ -FRONTEND_LDADD = @FRONTEND_LDADD@ -FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ -GREP = @GREP@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_CONFIG = @GTK_CONFIG@ -GTK_LIBS = @GTK_LIBS@ -INCLUDES = @INCLUDES@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDADD = @LDADD@ -LDFLAGS = @LDFLAGS@ -LIBICONV = @LIBICONV@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ -LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBICONV = @LTLIBICONV@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEDEP = @MAKEDEP@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NASM = @NASM@ -NASM_FORMAT = @NASM_FORMAT@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -RM_F = @RM_F@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ -SNDFILE_LIBS = @SNDFILE_LIBS@ -STRIP = @STRIP@ -U = @U@ -VERSION = @VERSION@ -WITH_FRONTEND = @WITH_FRONTEND@ -WITH_MP3RTP = @WITH_MP3RTP@ -WITH_MP3X = @WITH_MP3X@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = 1.11 foreign $(top_srcdir)/ansi2knr -SUBDIRS = ADbg ddk tinyxml -EXTRA_DIST = \ - ACM.cpp \ - ACM.h \ - ACMStream.cpp \ - ACMStream.h \ - AEncodeProperties.cpp \ - AEncodeProperties.h \ - DecodeStream.cpp \ - DecodeStream.h \ - LameACM.inf \ - TODO \ - acm.rc \ - adebug.h \ - lame.ico \ - lameACM.def \ - lame_acm.xml \ - main.cpp \ - readme.txt \ - resource.h - -all: all-recursive - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ACM/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign ACM/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-recursive -all-am: Makefile -installdirs: installdirs-recursive -installdirs-am: -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ - install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic clean-libtool \ - ctags ctags-recursive distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am - - -# end global section - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/platform/win32/msvc/external/lame/ACM/TODO b/platform/win32/msvc/external/lame/ACM/TODO deleted file mode 100644 index c88aba2f2fd..00000000000 --- a/platform/win32/msvc/external/lame/ACM/TODO +++ /dev/null @@ -1,9 +0,0 @@ -- known bug : when recording, converting, and recording a lame_close() call fail -- allow decompression the same way as in the command-line -- allow VBR mode -- allow channel resampling (mono to stereo / stereo to mono) -- allow internal resampling (difference in the format suggestion) -- use global pointers for string -- use the bitrate/freq tables from LAME - -/ add the decoding engine diff --git a/platform/win32/msvc/external/lame/ACM/acm.rc b/platform/win32/msvc/external/lame/ACM/acm.rc deleted file mode 100644 index 117a5d79d77..00000000000 --- a/platform/win32/msvc/external/lame/ACM/acm.rc +++ /dev/null @@ -1,219 +0,0 @@ -//Microsoft Developer Studio generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Französisch (Frankreich) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA) -#ifdef _WIN32 -LANGUAGE LANG_FRENCH, SUBLANG_FRENCH -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE DISCARDABLE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE DISCARDABLE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE DISCARDABLE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -#ifndef _MAC -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 0,9,1,0 - PRODUCTVERSION 0,9,1,0 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x3L - FILESUBTYPE 0x8L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Comments", "This is an ACM driver for Win32 using Lame to encode\0" - VALUE "CompanyName", "http://www.mp3dev.org/\0" - VALUE "FileDescription", "Lame MP3 codec engine\0" - VALUE "FileVersion", "0.9.2\0" - VALUE "InternalName", "lameACM\0" - VALUE "LegalCopyright", "Copyright © 2002 Steve Lhomme, Copyright © 2002-2007 The LAME Project\0" - VALUE "LegalTrademarks", "LGPL (see gnu.org)\0" - VALUE "OriginalFilename", "lameACM.acm\0" - VALUE "PrivateBuild", "\0" - VALUE "ProductName", "Lame MP3 codec\0" - VALUE "ProductVersion", "0.9.2\0" - VALUE "SpecialBuild", "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END - -#endif // !_MAC - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_ICON ICON DISCARDABLE "lame.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_CONFIG DIALOGEX 0, 0, 231, 204 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Lame MP3 codec : About" -FONT 8, "MS Sans Serif", 0, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,65,183,50,14 - PUSHBUTTON "Cancel",IDCANCEL,125,183,50,14 - GROUPBOX "Encoding",IDC_STATIC,7,7,142,166 - GROUPBOX "Decoding",IDC_STATIC_DECODING,154,7,70,113,WS_DISABLED - GROUPBOX "Bits",IDC_STATIC,16,121,124,42 - CONTROL "Copyright",IDC_CHECK_COPYRIGHT,"Button",BS_AUTOCHECKBOX | - BS_FLAT | WS_GROUP | WS_TABSTOP,23,132,45,10 - CONTROL "Checksum",IDC_CHECK_CHECKSUM,"Button",BS_AUTOCHECKBOX | - BS_FLAT | WS_GROUP | WS_TABSTOP,84,132,49,10 - CONTROL "Original",IDC_CHECK_ORIGINAL,"Button",BS_AUTOCHECKBOX | - BS_FLAT | WS_GROUP | WS_TABSTOP,23,148,39,10 - CONTROL "Private",IDC_CHECK_PRIVATE,"Button",BS_AUTOCHECKBOX | - BS_FLAT | WS_GROUP | WS_TABSTOP,84,148,38,10 - COMBOBOX IDC_COMBO_ENC_STEREO,70,21,60,53,CBS_DROPDOWNLIST | - WS_VSCROLL | WS_GROUP | WS_TABSTOP - LTEXT "Stereo mode",IDC_STATIC,23,24,41,8 - CONTROL "Smart Encode",IDC_CHECK_ENC_SMART,"Button", - BS_AUTOCHECKBOX | BS_FLAT | WS_GROUP | WS_TABSTOP,49,39, - 61,10 - ICON IDI_ICON,IDC_STATIC_ENC_ICON,179,129,20,20 - CTEXT "v0.0.0 - 0.00",IDC_STATIC_CONFIG_VERSION,168,155,43,17 - CONTROL "Average BitRate",IDC_CHECK_ENC_ABR,"Button", - BS_AUTOCHECKBOX | BS_FLAT | WS_GROUP | WS_TABSTOP,49,53, - 68,10 - LTEXT "Min",IDC_STATIC_AVERAGE_MIN,19,67,12,8 - LTEXT "Max",IDC_STATIC_AVERAGE_MAX,17,79,14,8 - LTEXT "Step",IDC_STATIC_AVERAGE_STEP,15,91,16,8 - LTEXT "test",IDC_STATIC_AVERAGE_SAMPLE,19,105,12,8 - CONTROL "Slider2",IDC_SLIDER_AVERAGE_MIN,"msctls_trackbar32", - TBS_AUTOTICKS | TBS_BOTH | TBS_NOTICKS | WS_GROUP | - WS_TABSTOP,33,67,92,11 - CONTROL "Slider3",IDC_SLIDER_AVERAGE_MAX,"msctls_trackbar32", - TBS_AUTOTICKS | TBS_BOTH | TBS_NOTICKS | WS_GROUP | - WS_TABSTOP,33,79,92,11 - CONTROL "Slider1",IDC_SLIDER_AVERAGE_STEP,"msctls_trackbar32", - TBS_AUTOTICKS | TBS_BOTH | TBS_NOTICKS | WS_GROUP | - WS_TABSTOP,33,91,92,11 - CONTROL "Slider4",IDC_SLIDER_AVERAGE_SAMPLE,"msctls_trackbar32", - WS_TABSTOP,33,104,92,12 - CTEXT "000",IDC_STATIC_AVERAGE_SAMPLE_VALUE,125,105,15,9,0, - WS_EX_STATICEDGE - CTEXT "000",IDC_STATIC_AVERAGE_STEP_VALUE,125,92,15,9,0, - WS_EX_STATICEDGE - CTEXT "000",IDC_STATIC_AVERAGE_MAX_VALUE,125,80,15,9,0, - WS_EX_STATICEDGE - CTEXT "000",IDC_STATIC_AVERAGE_MIN_VALUE,125,67,15,9,0, - WS_EX_STATICEDGE -END - -IDD_ABOUT DIALOG DISCARDABLE 0, 0, 187, 77 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Lame MP3 codec : About" -FONT 8, "MS Sans Serif" -BEGIN - DEFPUSHBUTTON "OK",IDOK,130,56,50,14 - LTEXT "Steve Lhomme + LAME developers",IDC_STATIC,7,33,112,8 - LTEXT "LGPL license",IDC_STATIC,7,20,43,8 - ICON IDI_ICON,IDC_STATIC,145,16,20,20 - LTEXT "Static",IDC_STATIC_ABOUT_TITLE,7,7,173,8 - LTEXT "http://www.mp3dev.org/",IDC_STATIC_ABOUT_URL,7,47,80,8 - LTEXT "icon : Lucas Granito",IDC_STATIC,7,61,64,8 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO DISCARDABLE -BEGIN - IDD_CONFIG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 224 - TOPMARGIN, 7 - BOTTOMMARGIN, 197 - END - - IDD_ABOUT, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 180 - TOPMARGIN, 7 - BOTTOMMARGIN, 70 - END -END -#endif // APSTUDIO_INVOKED - -#endif // Französisch (Frankreich) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/platform/win32/msvc/external/lame/ACM/adebug.h b/platform/win32/msvc/external/lame/ACM/adebug.h deleted file mode 100644 index 32ec1922383..00000000000 --- a/platform/win32/msvc/external/lame/ACM/adebug.h +++ /dev/null @@ -1,39 +0,0 @@ -/** - * - * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows - * - * Copyright (c) 2002 Steve Lhomme - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -/*! - \author Steve Lhomme - \version \$Id: adebug.h,v 1.2 2002/01/22 19:45:02 robux4 Exp $ -*/ - -#if !defined(_DEBUG_H__INCLUDED_) -#define _DEBUG_H__INCLUDED_ - -#define DEBUG_LEVEL_CREATION 0 - -#define DEBUG_LEVEL_MSG 0 -#define DEBUG_LEVEL_FUNC_START 1 -#define DEBUG_LEVEL_FUNC_DEBUG 2 -#define DEBUG_LEVEL_FUNC_CODE 3 - -#endif /* !defined(_DEBUG_H__INCLUDED_) */ - diff --git a/platform/win32/msvc/external/lame/ACM/ddk/Makefile.am b/platform/win32/msvc/external/lame/ACM/ddk/Makefile.am deleted file mode 100644 index 49889974027..00000000000 --- a/platform/win32/msvc/external/lame/ACM/ddk/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -## $Id: Makefile.am,v 1.1 2003/12/09 15:48:37 aleidinger Exp $ - -include $(top_srcdir)/Makefile.am.global - -EXTRA_DIST = \ - msacmdrv.h diff --git a/platform/win32/msvc/external/lame/ACM/ddk/Makefile.in b/platform/win32/msvc/external/lame/ACM/ddk/Makefile.in deleted file mode 100644 index 3f6712d56b9..00000000000 --- a/platform/win32/msvc/external/lame/ACM/ddk/Makefile.in +++ /dev/null @@ -1,388 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# global section for every Makefile.am -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/Makefile.am.global -subdir = ACM/ddk -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CONFIG_DEFS = @CONFIG_DEFS@ -CONFIG_MATH_LIB = @CONFIG_MATH_LIB@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CPUCCODE = @CPUCCODE@ -CPUTYPE = @CPUTYPE@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ -FRONTEND_LDADD = @FRONTEND_LDADD@ -FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ -GREP = @GREP@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_CONFIG = @GTK_CONFIG@ -GTK_LIBS = @GTK_LIBS@ -INCLUDES = @INCLUDES@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDADD = @LDADD@ -LDFLAGS = @LDFLAGS@ -LIBICONV = @LIBICONV@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ -LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBICONV = @LTLIBICONV@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEDEP = @MAKEDEP@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NASM = @NASM@ -NASM_FORMAT = @NASM_FORMAT@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -RM_F = @RM_F@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ -SNDFILE_LIBS = @SNDFILE_LIBS@ -STRIP = @STRIP@ -U = @U@ -VERSION = @VERSION@ -WITH_FRONTEND = @WITH_FRONTEND@ -WITH_MP3RTP = @WITH_MP3RTP@ -WITH_MP3X = @WITH_MP3X@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = 1.11 foreign $(top_srcdir)/ansi2knr -EXTRA_DIST = \ - msacmdrv.h - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ACM/ddk/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign ACM/ddk/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am - - -# end global section - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/platform/win32/msvc/external/lame/ACM/ddk/msacmdrv.h b/platform/win32/msvc/external/lame/ACM/ddk/msacmdrv.h deleted file mode 100644 index aa3c20073c5..00000000000 --- a/platform/win32/msvc/external/lame/ACM/ddk/msacmdrv.h +++ /dev/null @@ -1,185 +0,0 @@ -/** - * - * Alternative msacmdrv.h file, for use in the Lame project. - * File from the FFDshow project, released under LGPL by permission - * from Milan Cutka. - * Modified by Gabriel Bouvigne to allow compilation of Lame. - * - * Copyright (c) 2003 Milan Cutka - * Copyright (c) 2003 Gabriel Bouvigne - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -#ifndef _MSACMDRV_H_ -#define _MSACMDRV_H_ - - -#include -#include - - - -typedef unsigned long ULONG_PTR, *PULONG_PTR; - - - -typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR; - - -#undef ACMDRIVERDETAILS -#undef PACMDRIVERDETAILS -#undef LPACMDRIVERDETAILS - -#define ACMDRIVERDETAILS ACMDRIVERDETAILSW -#define PACMDRIVERDETAILS PACMDRIVERDETAILSW -#define LPACMDRIVERDETAILS LPACMDRIVERDETAILSW - -#undef ACMFORMATTAGDETAILS -#undef PACMFORMATTAGDETAILS -#undef LPACMFORMATTAGDETAILS - -#define ACMFORMATTAGDETAILS ACMFORMATTAGDETAILSW -#define PACMFORMATTAGDETAILS PACMFORMATTAGDETAILSW -#define LPACMFORMATTAGDETAILS LPACMFORMATTAGDETAILSW - -#undef ACMFORMATDETAILS -#undef PACMFORMATDETAILS -#undef LPACMFORMATDETAILS - -#define ACMFORMATDETAILS ACMFORMATDETAILSW -#define PACMFORMATDETAILS PACMFORMATDETAILSW -#define LPACMFORMATDETAILS LPACMFORMATDETAILSW - - -#define MAKE_ACM_VERSION(mjr, mnr, bld) (((long)(mjr)<<24)| \ - ((long)(mnr)<<16)| \ - ((long)bld)) - -#define VERSION_MSACM MAKE_ACM_VERSION(3, 50, 0) -#define VERSION_ACM_DRIVER MAKE_ACM_VERSION(4, 0, 0) - - -#define ACMDM_DRIVER_NOTIFY (ACMDM_BASE + 1) -#define ACMDM_DRIVER_DETAILS (ACMDM_BASE + 10) - -#define ACMDM_HARDWARE_WAVE_CAPS_INPUT (ACMDM_BASE + 20) -#define ACMDM_HARDWARE_WAVE_CAPS_OUTPUT (ACMDM_BASE + 21) - -#define ACMDM_FORMATTAG_DETAILS (ACMDM_BASE + 25) -#define ACMDM_FORMAT_DETAILS (ACMDM_BASE + 26) -#define ACMDM_FORMAT_SUGGEST (ACMDM_BASE + 27) - -#define ACMDM_FILTERTAG_DETAILS (ACMDM_BASE + 50) -#define ACMDM_FILTER_DETAILS (ACMDM_BASE + 51) - -#define ACMDM_STREAM_OPEN (ACMDM_BASE + 76) -#define ACMDM_STREAM_CLOSE (ACMDM_BASE + 77) -#define ACMDM_STREAM_SIZE (ACMDM_BASE + 78) -#define ACMDM_STREAM_CONVERT (ACMDM_BASE + 79) -#define ACMDM_STREAM_RESET (ACMDM_BASE + 80) -#define ACMDM_STREAM_PREPARE (ACMDM_BASE + 81) -#define ACMDM_STREAM_UNPREPARE (ACMDM_BASE + 82) - -typedef struct tACMDRVFORMATSUGGEST -{ - DWORD cbStruct; // sizeof(ACMDRVFORMATSUGGEST) - DWORD fdwSuggest; // Suggest flags - LPWAVEFORMATEX pwfxSrc; // Source Format - DWORD cbwfxSrc; // Source Size - LPWAVEFORMATEX pwfxDst; // Dest format - DWORD cbwfxDst; // Dest Size - -} ACMDRVFORMATSUGGEST, *PACMDRVFORMATSUGGEST, FAR *LPACMDRVFORMATSUGGEST; - - - - -typedef struct tACMDRVOPENDESC -{ - DWORD cbStruct; // sizeof(ACMDRVOPENDESC) - FOURCC fccType; // 'audc' - FOURCC fccComp; // sub-type (not used--must be 0) - DWORD dwVersion; // current version of ACM opening you - DWORD dwFlags; // - DWORD dwError; // result from DRV_OPEN request - LPCWSTR pszSectionName; // see DRVCONFIGINFO.lpszDCISectionName - LPCWSTR pszAliasName; // see DRVCONFIGINFO.lpszDCIAliasName - DWORD dnDevNode; // devnode id for pnp drivers. - -} ACMDRVOPENDESC, *PACMDRVOPENDESC, FAR *LPACMDRVOPENDESC; - - -typedef struct tACMDRVSTREAMINSTANCE -{ - DWORD cbStruct; - LPWAVEFORMATEX pwfxSrc; - LPWAVEFORMATEX pwfxDst; - LPWAVEFILTER pwfltr; - DWORD_PTR dwCallback; - DWORD_PTR dwInstance; - DWORD fdwOpen; - DWORD fdwDriver; - DWORD_PTR dwDriver; - HACMSTREAM has; - -} ACMDRVSTREAMINSTANCE, *PACMDRVSTREAMINSTANCE, FAR *LPACMDRVSTREAMINSTANCE; - -typedef struct tACMDRVSTREAMSIZE -{ - DWORD cbStruct; - DWORD fdwSize; - DWORD cbSrcLength; - DWORD cbDstLength; - -} ACMDRVSTREAMSIZE, *PACMDRVSTREAMSIZE, FAR *LPACMDRVSTREAMSIZE; - -typedef struct tACMDRVSTREAMHEADER FAR *LPACMDRVSTREAMHEADER; -typedef struct tACMDRVSTREAMHEADER -{ - DWORD cbStruct; - DWORD fdwStatus; - DWORD_PTR dwUser; - LPBYTE pbSrc; - DWORD cbSrcLength; - DWORD cbSrcLengthUsed; - DWORD_PTR dwSrcUser; - LPBYTE pbDst; - DWORD cbDstLength; - DWORD cbDstLengthUsed; - DWORD_PTR dwDstUser; - - DWORD fdwConvert; // flags passed from convert func - LPACMDRVSTREAMHEADER padshNext; // for async driver queueing - DWORD fdwDriver; // driver instance flags - DWORD_PTR dwDriver; // driver instance data - - // - // all remaining fields are used by the ACM for bookkeeping purposes. - // an ACM driver should never use these fields (though than can be - // helpful for debugging)--note that the meaning of these fields - // may change, so do NOT rely on them in shipping code. - // - DWORD fdwPrepared; - DWORD_PTR dwPrepared; - LPBYTE pbPreparedSrc; - DWORD cbPreparedSrcLength; - LPBYTE pbPreparedDst; - DWORD cbPreparedDstLength; - -} ACMDRVSTREAMHEADER, *PACMDRVSTREAMHEADER; - -#endif diff --git a/platform/win32/msvc/external/lame/ACM/lame.ico b/platform/win32/msvc/external/lame/ACM/lame.ico deleted file mode 100644 index 5610b8cfb45..00000000000 Binary files a/platform/win32/msvc/external/lame/ACM/lame.ico and /dev/null differ diff --git a/platform/win32/msvc/external/lame/ACM/lame_acm.xml b/platform/win32/msvc/external/lame/ACM/lame_acm.xml deleted file mode 100644 index 0fc51865143..00000000000 --- a/platform/win32/msvc/external/lame/ACM/lame_acm.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/lame/ACM/main.cpp b/platform/win32/msvc/external/lame/ACM/main.cpp deleted file mode 100644 index 84e47739b60..00000000000 --- a/platform/win32/msvc/external/lame/ACM/main.cpp +++ /dev/null @@ -1,216 +0,0 @@ -/** - * - * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows - * - * Copyright (c) 2002 Steve Lhomme - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -/*! - \author Steve Lhomme - \version \$Id: main.cpp,v 1.5 2006/12/25 21:37:34 robert Exp $ -*/ - -#if !defined(STRICT) -#define STRICT -#endif // STRICT - -#include - -/// The ACM is considered as a driver and run in Kernel-Mode -/// So the new/delete operators have to be overriden in order to use memory -/// readable out of the calling process - -void * operator new( unsigned int cb ) -{ - return LocalAlloc(LPTR, cb); // VirtualAlloc -} - -void operator delete(void *block) { - LocalFree(block); -} - -extern "C" { - - void *acm_Calloc( size_t num, size_t size ) - { - return LocalAlloc(LPTR, num * size); // VirtualAlloc - } - - void *acm_Malloc( size_t size ) - { - return LocalAlloc(LPTR, size); // VirtualAlloc - } - - void acm_Free( void * mem) - { - LocalFree(mem); - } -}; - -////// End of memory instrumentation - -#include -#include -#include - -#include - -#include "AEncodeProperties.h" -#include "ACM.h" -#include "resource.h" -#include "adebug.h" - - -ADbg * debug = NULL; - -LONG WINAPI DriverProc(DWORD dwDriverId, HDRVR hdrvr, UINT msg, LONG lParam1, LONG lParam2) -{ - - switch (msg) - { - case DRV_OPEN: // acmDriverOpen - { - if (debug == NULL) { - debug = new ADbg(DEBUG_LEVEL_CREATION); - debug->setPrefix("LAMEdrv"); - } - - if (debug != NULL) - { - // Sent when the driver is opened. - if (lParam2 != NULL) - debug->OutPut(DEBUG_LEVEL_MSG, "DRV_OPEN (ID 0x%08X), pDesc = 0x%08X",dwDriverId,lParam2); - else - debug->OutPut(DEBUG_LEVEL_MSG, "DRV_OPEN (ID 0x%08X), pDesc = NULL",dwDriverId); - } - - if (lParam2 != NULL) { - LPACMDRVOPENDESC pDesc = (LPACMDRVOPENDESC)lParam2; - - if (pDesc->fccType != ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC) { - if (debug != NULL) - { - debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "wrong pDesc->fccType (0x%08X)",pDesc->fccType); - } - return NULL; - } - } else { - if (debug != NULL) - { - debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "pDesc == NULL"); - } - } - - ACM * ThisACM = new ACM(GetDriverModuleHandle(hdrvr)); - - if (debug != NULL) - { - debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "OPENED instance 0x%08X",ThisACM); - } - - return (LONG)ThisACM;// returns 0L to fail - // value subsequently used - // for dwDriverId. - } - break; - - case DRV_CLOSE: // acmDriverClose - { - if (debug != NULL) - { - // Sent when the driver is closed. Drivers are - // unloaded when the open count reaches zero. - debug->OutPut(DEBUG_LEVEL_MSG, "DRV_CLOSE"); - } - - ACM * ThisACM = (ACM *)dwDriverId; - delete ThisACM; - if (debug != NULL) - { - debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "CLOSED instance 0x%08X",ThisACM); - delete debug; - debug = NULL; - } - return 1L; // returns 0L to fail - } - break; - - case DRV_LOAD: - { - // nothing to do - if (debug != NULL) - { -// debug->OutPut(DEBUG_LEVEL_MSG, "DRV_LOAD, version %s %s %s", ACM_VERSION, __DATE__, __TIME__); - debug->OutPut(DEBUG_LEVEL_MSG, "DRV_LOAD, %s %s", __DATE__, __TIME__); - } - return 1L; - } - break; - - case DRV_ENABLE: - { - // nothing to do - if (debug != NULL) - { - debug->OutPut(DEBUG_LEVEL_MSG, "DRV_ENABLE"); - } - return 1L; - } - break; - - case DRV_DISABLE: - { - // nothing to do - if (debug != NULL) - { - debug->OutPut(DEBUG_LEVEL_MSG, "DRV_DISABLE"); - } - return 1L; - } - break; - - case DRV_FREE: - { - if (debug != NULL) - { - debug->OutPut(DEBUG_LEVEL_MSG, "DRV_FREE"); - } - return 1L; - } - break; - - default: - { - ACM * ThisACM = (ACM *)dwDriverId; - - if (ThisACM != NULL) - return ThisACM->DriverProcedure(hdrvr, msg, lParam1, lParam2); - else - { - if (debug != NULL) - { - debug->OutPut(DEBUG_LEVEL_MSG, "Driver not opened, unknown message (0x%08X), lParam1 = 0x%08X, lParam2 = 0x%08X", msg, lParam1, lParam2); - } - - return DefDriverProc (dwDriverId, hdrvr, msg, lParam1, lParam2); - } - } - break; - } -} - diff --git a/platform/win32/msvc/external/lame/ACM/readme.txt b/platform/win32/msvc/external/lame/ACM/readme.txt deleted file mode 100644 index 92a64222c7b..00000000000 --- a/platform/win32/msvc/external/lame/ACM/readme.txt +++ /dev/null @@ -1,29 +0,0 @@ -In order to build this codec, you need the Windows98 DDK from Microsoft. It can also work -with the Windows2000/ME/XP/2003 DDK: - -http://www.microsoft.com/ddk/ - -Alternatively, the required headers are also available in CYGWIN+w32api, MINGW32 or Wine : - -http://www.cygwin.com/ -http://www.mingw.org/ -http://www.winehq.com/ - - -If you do not have a ddk, you should be able to use the alternative msacmdrv.h provided -with this ACM codec. It is not used by default because it would probably broke any real -DDK already installed. - - - ---------------- - -Define ENABLE_DECODING if you want to use the decoding (alpha state, doesn't decode at the - moment, so use it only if you plan to develop) - ---------------- - -To release this codec you will need : -- lameACM.acm (result of the build process) -- lameACM.inf -- lame_acm.xml (where the initial configuration is stored) diff --git a/platform/win32/msvc/external/lame/ACM/resource.h b/platform/win32/msvc/external/lame/ACM/resource.h deleted file mode 100644 index 905203294ae..00000000000 --- a/platform/win32/msvc/external/lame/ACM/resource.h +++ /dev/null @@ -1,42 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Developer Studio generated include file. -// Used by acm.rc -// -#define IDI_ICON 101 -#define IDD_CONFIG 102 -#define IDD_ABOUT 103 -#define IDC_STATIC_DECODING 1000 -#define IDC_CHECK_COPYRIGHT 1001 -#define IDC_CHECK_CHECKSUM 1002 -#define IDC_CHECK_ORIGINAL 1003 -#define IDC_CHECK_PRIVATE 1004 -#define IDC_COMBO_ENC_STEREO 1005 -#define IDC_CHECK_ENC_SMART 1006 -#define IDC_STATIC_ENC_ICON 1007 -#define IDC_STATIC_ABOUT_TITLE 1008 -#define IDC_STATIC_ABOUT_URL 1009 -#define IDC_STATIC_CONFIG_VERSION 1010 -#define IDC_CHECK_ENC_ABR 1011 -#define IDC_SLIDER_AVERAGE_MIN 1012 -#define IDC_SLIDER_AVERAGE_MAX 1013 -#define IDC_SLIDER_AVERAGE_STEP 1014 -#define IDC_SLIDER_AVERAGE_SAMPLE 1015 -#define IDC_STATIC_AVERAGE_MIN 1016 -#define IDC_STATIC_AVERAGE_MAX 1017 -#define IDC_STATIC_AVERAGE_STEP 1018 -#define IDC_STATIC_AVERAGE_SAMPLE 1019 -#define IDC_STATIC_AVERAGE_MIN_VALUE 1020 -#define IDC_STATIC_AVERAGE_MAX_VALUE 1021 -#define IDC_STATIC_AVERAGE_STEP_VALUE 1022 -#define IDC_STATIC_AVERAGE_SAMPLE_VALUE 1023 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 105 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1024 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/platform/win32/msvc/external/lame/ACM/tinyxml/Makefile.am b/platform/win32/msvc/external/lame/ACM/tinyxml/Makefile.am deleted file mode 100644 index 56ade3b3bf0..00000000000 --- a/platform/win32/msvc/external/lame/ACM/tinyxml/Makefile.am +++ /dev/null @@ -1,16 +0,0 @@ -## $Id: Makefile.am,v 1.3 2008/11/09 13:50:16 aleidinger Exp $ - -include $(top_srcdir)/Makefile.am.global - -EXTRA_DIST = \ - Makefile.tinyxml \ - changes.txt \ - dox \ - makedistlinux \ - makedistwin.bat \ - readme.txt \ - tinyxml.cpp \ - tinyxml.h \ - tinyxmlerror.cpp \ - tinyxmlparser.cpp \ - xmltest.cpp diff --git a/platform/win32/msvc/external/lame/ACM/tinyxml/Makefile.in b/platform/win32/msvc/external/lame/ACM/tinyxml/Makefile.in deleted file mode 100644 index 1ba321a308f..00000000000 --- a/platform/win32/msvc/external/lame/ACM/tinyxml/Makefile.in +++ /dev/null @@ -1,398 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# global section for every Makefile.am -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/Makefile.am.global -subdir = ACM/tinyxml -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CONFIG_DEFS = @CONFIG_DEFS@ -CONFIG_MATH_LIB = @CONFIG_MATH_LIB@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CPUCCODE = @CPUCCODE@ -CPUTYPE = @CPUTYPE@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ -FRONTEND_LDADD = @FRONTEND_LDADD@ -FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ -GREP = @GREP@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_CONFIG = @GTK_CONFIG@ -GTK_LIBS = @GTK_LIBS@ -INCLUDES = @INCLUDES@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDADD = @LDADD@ -LDFLAGS = @LDFLAGS@ -LIBICONV = @LIBICONV@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ -LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBICONV = @LTLIBICONV@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEDEP = @MAKEDEP@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NASM = @NASM@ -NASM_FORMAT = @NASM_FORMAT@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -RM_F = @RM_F@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ -SNDFILE_LIBS = @SNDFILE_LIBS@ -STRIP = @STRIP@ -U = @U@ -VERSION = @VERSION@ -WITH_FRONTEND = @WITH_FRONTEND@ -WITH_MP3RTP = @WITH_MP3RTP@ -WITH_MP3X = @WITH_MP3X@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = 1.11 foreign $(top_srcdir)/ansi2knr -EXTRA_DIST = \ - Makefile.tinyxml \ - changes.txt \ - dox \ - makedistlinux \ - makedistwin.bat \ - readme.txt \ - tinyxml.cpp \ - tinyxml.h \ - tinyxmlerror.cpp \ - tinyxmlparser.cpp \ - xmltest.cpp - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ACM/tinyxml/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign ACM/tinyxml/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am - - -# end global section - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/platform/win32/msvc/external/lame/ACM/tinyxml/Makefile.tinyxml b/platform/win32/msvc/external/lame/ACM/tinyxml/Makefile.tinyxml deleted file mode 100644 index 58f4693b378..00000000000 --- a/platform/win32/msvc/external/lame/ACM/tinyxml/Makefile.tinyxml +++ /dev/null @@ -1,150 +0,0 @@ -#**************************************************************************** -# -# Makefil for TinyXml test. -# Lee Thomason -# www.grinninglizard.com -# -# This is a GNU make (gmake) makefile -#**************************************************************************** - -# DEBUG can be set to YES to include debugging info, or NO otherwise -DEBUG := YES - -# PROFILE can be set to YES to include profiling info, or NO otherwise -PROFILE := NO - -#**************************************************************************** - -CC := gcc -CXX := g++ -LD := g++ -AR := ar rc -RANLIB := ranlib - -DEBUG_CFLAGS := -Wall -Wno-unknown-pragmas -Wno-format -g -DDEBUG -RELEASE_CFLAGS := -Wall -Wno-unknown-pragmas -Wno-format -O2 - -LIBS := - -DEBUG_CXXFLAGS := ${DEBUG_CFLAGS} -RELEASE_CXXFLAGS := ${RELEASE_CFLAGS} - -DEBUG_LDFLAGS := -g -RELEASE_LDFLAGS := - -ifeq (YES, ${DEBUG}) - CFLAGS := ${DEBUG_CFLAGS} - CXXFLAGS := ${DEBUG_CXXFLAGS} - LDFLAGS := ${DEBUG_LDFLAGS} -else - CFLAGS := ${RELEASE_CFLAGS} - CXXFLAGS := ${RELEASE_CXXFLAGS} - LDFLAGS := ${RELEASE_LDFLAGS} -endif - -ifeq (YES, ${PROFILE}) - CFLAGS := ${CFLAGS} -pg - CXXFLAGS := ${CXXFLAGS} -pg - LDFLAGS := ${LDFLAGS} -pg -endif - -#**************************************************************************** -# Preprocessor directives -#**************************************************************************** - -ifeq (YES, ${PROFILE}) - DEFS := -else - DEFS := -endif - -#**************************************************************************** -# Include paths -#**************************************************************************** - -#INCS := -I/usr/include/g++-2 -I/usr/local/include -INCS := - - -#**************************************************************************** -# Makefile code common to all platforms -#**************************************************************************** - -CFLAGS := ${CFLAGS} ${DEFS} -CXXFLAGS := ${CXXFLAGS} ${DEFS} - -#**************************************************************************** -# Targets of the build -#**************************************************************************** - -OUTPUT := xmltest - -all: ${OUTPUT} - - -#**************************************************************************** -# Source files -#**************************************************************************** - -SRCS := tinyxml.cpp tinyxmlparser.cpp xmltest.cpp tinyxmlerror.cpp - -# Add on the sources for libraries -SRCS := ${SRCS} - -OBJS := $(addsuffix .o,$(basename ${SRCS})) - -#**************************************************************************** -# Output -#**************************************************************************** - -${OUTPUT}: ${OBJS} - ${LD} -o $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA_LIBS} - -#**************************************************************************** -# common rules -#**************************************************************************** - -# Rules for compiling source files to object files -%.o : %.cpp - ${CXX} -c ${CXXFLAGS} ${INCS} $< -o $@ - -%.o : %.c - ${CC} -c ${CFLAGS} ${INCS} $< -o $@ - -clean: - -rm -f core ${OBJS} ${OUTPUT} - -depend: - makedepend ${INCS} ${SRCS} -# DO NOT DELETE - -tinyxml.o: tinyxml.h /usr/include/stdio.h /usr/include/features.h -tinyxml.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -tinyxml.o: /usr/include/bits/types.h /usr/include/bits/pthreadtypes.h -tinyxml.o: /usr/include/bits/sched.h /usr/include/libio.h -tinyxml.o: /usr/include/_G_config.h /usr/include/wchar.h -tinyxml.o: /usr/include/bits/wchar.h /usr/include/gconv.h -tinyxml.o: /usr/include/bits/stdio_lim.h /usr/include/assert.h -tinyxmlparser.o: tinyxml.h /usr/include/stdio.h /usr/include/features.h -tinyxmlparser.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -tinyxmlparser.o: /usr/include/bits/types.h /usr/include/bits/pthreadtypes.h -tinyxmlparser.o: /usr/include/bits/sched.h /usr/include/libio.h -tinyxmlparser.o: /usr/include/_G_config.h /usr/include/wchar.h -tinyxmlparser.o: /usr/include/bits/wchar.h /usr/include/gconv.h -tinyxmlparser.o: /usr/include/bits/stdio_lim.h /usr/include/assert.h -tinyxmlparser.o: /usr/include/ctype.h /usr/include/endian.h -tinyxmlparser.o: /usr/include/bits/endian.h -xmltest.o: tinyxml.h /usr/include/stdio.h /usr/include/features.h -xmltest.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -xmltest.o: /usr/include/bits/types.h /usr/include/bits/pthreadtypes.h -xmltest.o: /usr/include/bits/sched.h /usr/include/libio.h -xmltest.o: /usr/include/_G_config.h /usr/include/wchar.h -xmltest.o: /usr/include/bits/wchar.h /usr/include/gconv.h -xmltest.o: /usr/include/bits/stdio_lim.h /usr/include/assert.h -tinyxmlerror.o: tinyxml.h /usr/include/stdio.h /usr/include/features.h -tinyxmlerror.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -tinyxmlerror.o: /usr/include/bits/types.h /usr/include/bits/pthreadtypes.h -tinyxmlerror.o: /usr/include/bits/sched.h /usr/include/libio.h -tinyxmlerror.o: /usr/include/_G_config.h /usr/include/wchar.h -tinyxmlerror.o: /usr/include/bits/wchar.h /usr/include/gconv.h -tinyxmlerror.o: /usr/include/bits/stdio_lim.h /usr/include/assert.h diff --git a/platform/win32/msvc/external/lame/ACM/tinyxml/changes.txt b/platform/win32/msvc/external/lame/ACM/tinyxml/changes.txt deleted file mode 100644 index c0b4cf7c6c0..00000000000 --- a/platform/win32/msvc/external/lame/ACM/tinyxml/changes.txt +++ /dev/null @@ -1,81 +0,0 @@ -Changes in version 1.0.1: -- Fixed comment tags which were outputing as ' include. Thanks - to Steve Lhomme for that. - -Changes in version 2.0.0 -- Made the ToXXX() casts safe if 'this' is null. - When "LoadFile" is called with a filename, the value will correctly get set. - Thanks to Brian Yoder. -- Fixed bug where isalpha() and isalnum() would get called with a negative value for - high ascii numbers. Thanks to Alesky Aksenov. -- Fixed some errors codes that were not getting set. -- Made methods "const" that were not. -- Added a switch to enable or disable the ignoring of white space. ( TiXmlDocument::SetIgnoreWhiteSpace() ) -- Greater standardization and code re-use in the parser. -- Added a stream out operator. -- Added a stream in operator. -- Entity support. - -TODO -CDATA. -Support for "generic entity" #xxx thing. - diff --git a/platform/win32/msvc/external/lame/ACM/tinyxml/dox b/platform/win32/msvc/external/lame/ACM/tinyxml/dox deleted file mode 100644 index f431877df95..00000000000 --- a/platform/win32/msvc/external/lame/ACM/tinyxml/dox +++ /dev/null @@ -1,708 +0,0 @@ -# Doxyfile 1.2.2 - -# This file describes the settings to be used by doxygen for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# General configuration options -#--------------------------------------------------------------------------- - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = TinyXml - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = ./docs - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, -# Korean, Hungarian, Spanish, Romanian, Russian, Croatian, Polish, and -# Portuguese. - -OUTPUT_LANGUAGE = English - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = YES - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these class will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = YES - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = NO - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. It is allowed to use relative paths in the argument list. - -STRIP_FROM_PATH = - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a class diagram (in Html and LaTeX) for classes with base or -# super classes. Setting the tag to NO turns the diagrams off. - -CLASS_DIAGRAMS = YES - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower case letters. If set to YES upper case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# users are adviced to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the JAVADOC_AUTOBRIEF tag is set to YES (the default) then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the Javadoc-style will -# behave just like the Qt-style comments. - -JAVADOC_AUTOBRIEF = YES - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# reimplements. - -INHERIT_DOCS = YES - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 4 - -# The ENABLE_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. - -WARN_FORMAT = "$file:$line: $text" - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = . "readme.txt" - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -FILE_PATTERNS = *.h - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = NO - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. - -EXCLUDE_PATTERNS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. - -INPUT_FILTER = - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = NO - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = . - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet - -HTML_STYLESHEET = - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4wide - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = NO - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = NO - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimised for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using a WORD or other. -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assigments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. Warning: This feature -# is still experimental and very incomplete. - -GENERATE_XML = NO - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = NO - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_PREDEFINED tags. - -EXPAND_ONLY_PREDEF = NO - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. - -PREDEFINED = - -# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - -EXPAND_AS_DEFINED = - -#--------------------------------------------------------------------------- -# Configuration::addtions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES tag can be used to specify one or more tagfiles. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = NO - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to -# YES then doxygen will generate a graph for each documented file showing -# the direct and indirect include dependencies of the file with other -# documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, INCLUDED_BY_GRAPH, and HAVE_DOT tags are set to -# YES then doxygen will generate a graph for each documented header file showing -# the documented files that directly or indirectly include this file - -INCLUDED_BY_GRAPH = YES - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found on the path. - -DOT_PATH = - -# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_WIDTH = 1024 - -# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_HEIGHT = 1024 - -#--------------------------------------------------------------------------- -# Configuration::addtions related to the search engine -#--------------------------------------------------------------------------- - -# The SEARCHENGINE tag specifies whether or not a search engine should be -# used. If set to NO the values of all tags below this one will be ignored. - -SEARCHENGINE = NO - -# The CGI_NAME tag should be the name of the CGI script that -# starts the search engine (doxysearch) with the correct parameters. -# A script with this name will be generated by doxygen. - -CGI_NAME = search.cgi - -# The CGI_URL tag should be the absolute URL to the directory where the -# cgi binaries are located. See the documentation of your http daemon for -# details. - -CGI_URL = - -# The DOC_URL tag should be the absolute URL to the directory where the -# documentation is located. If left blank the absolute path to the -# documentation, with file:// prepended to it, will be used. - -DOC_URL = - -# The DOC_ABSPATH tag should be the absolute path to the directory where the -# documentation is located. If left blank the directory on the local machine -# will be used. - -DOC_ABSPATH = - -# The BIN_ABSPATH tag must point to the directory where the doxysearch binary -# is installed. - -BIN_ABSPATH = /usr/local/bin/ - -# The EXT_DOC_PATHS tag can be used to specify one or more paths to -# documentation generated for other projects. This allows doxysearch to search -# the documentation for these projects as well. - -EXT_DOC_PATHS = diff --git a/platform/win32/msvc/external/lame/ACM/tinyxml/makedistlinux b/platform/win32/msvc/external/lame/ACM/tinyxml/makedistlinux deleted file mode 100644 index eaff1506ffb..00000000000 --- a/platform/win32/msvc/external/lame/ACM/tinyxml/makedistlinux +++ /dev/null @@ -1,34 +0,0 @@ -echo "Making version: " -echo $1 -echo $2 -echo $3 - -rm ./docs/* - -doxygen dox -rm -rf ./tinyxml/* - -rm tinyxml_$1_$2_$3.zip -rm tinyxml_$1_$2_$3.tar.gz - -rmdir tinyxml -mkdir tinyxml - -cp readme.txt ./tinyxml -cp changes.txt ./tinyxml -cp Makefile ./tinyxml - -cp tinyxml.cpp tinyxml -cp tinyxmlerror.cpp tinyxml -cp tinyxmlparser.cpp tinyxml -cp xmltest.cpp tinyxml - -cp tinyxml.h tinyxml -cp tinyxml.dsp tinyxml - -mkdir ./tinyxml/docs -cp ./docs/* ./tinyxml/docs - -tar -zcf tinyxml_$1_$2_$3.tar.gz tinyxml -zip -r -q -9 tinyxml_$1_$2_$3.zip tinyxml - diff --git a/platform/win32/msvc/external/lame/ACM/tinyxml/makedistwin.bat b/platform/win32/msvc/external/lame/ACM/tinyxml/makedistwin.bat deleted file mode 100644 index 99a7b1169a3..00000000000 --- a/platform/win32/msvc/external/lame/ACM/tinyxml/makedistwin.bat +++ /dev/null @@ -1,19 +0,0 @@ -del .\tinyxml_win\*.* -del .\docs\*.* - -doxygen dox -mkdir tinyxml_win - -copy readme.txt tinyxml_win -copy changes.txt tinyxml_win - -copy *.cpp tinyxml_win -copy *.h tinyxml_win -copy *.dsp tinyxml_win -copy test0.xml tinyxml_win -copy test1.xml tinyxml_win -copy test2.xml tinyxml_win - -mkdir .\tinyxml_win\docs -copy docs .\tinyxml_win\docs - diff --git a/platform/win32/msvc/external/lame/ACM/tinyxml/readme.txt b/platform/win32/msvc/external/lame/ACM/tinyxml/readme.txt deleted file mode 100644 index c98c0f37f6d..00000000000 --- a/platform/win32/msvc/external/lame/ACM/tinyxml/readme.txt +++ /dev/null @@ -1,309 +0,0 @@ -/** @mainpage - -

TinyXml

- -TinyXml is a simple, small, C++ XML parser that can be easily -integrating into other programs. - - -

What it does.

- -In brief, TinyXml parses an XML document, and builds from that a -Document Object Model that can be read, modified, and saved. - -XML stands for "eXtensible Markup Language." It allows you to create -your own document markups. Where HTML does a very good job of marking -documents for browsers, XML allows you to define any kind of document -markup, for example a document that describes a "to do" list for an -organizer application. XML is a very structured and convenient format. -All those random file formats created to store application data can -all be replaced with XML. One parser for everything. - -There are different ways to access and interact with XML data. -TinyXml uses a Document Object Model, meaning the XML data is parsed -into a tree objects that can be browsed and manipulated, and then -written back to disk. You can also construct an XML document from -scratch with C++ objects and write this to disk. - -TinyXml is designed to be easy and fast. It is one header and three cpp -files. Simply add these to your project and off you go. There is an -example to get you started. It is released under the ZLib license, -so you can use it in open source or commercial code. - -It attempts to be a flexible parser, but with truly correct and -compliant XML output (with the exception of the character set, -below.) TinyXml should compile on any reasonably C++ -system. It does not rely on exceptions or RTTI, and only uses the STL -string class. - - -

What it doesn't do.

- -It doesn’t parse or use DTDs (Document Type Definitions) or XSL’s -(eXtensible Stylesheet Language.) It is limited to the ASCII -character set. There are other parsers out there (check out -www.sourceforge.org, search for XML) that are much more fully -featured. But they are also much bigger, take longer to set up in -your project, have a higher learning curve, and often have a more -restrictive license. If you are working with browsers or have more -complete XML needs, TinyXml is not the parser for you. - - -

Code Status.

- -Currently in use, TinyXml is looking pretty stable. If you find -bugs, send them in and we'll get them straightened out as soon as possible. - -There are some areas of improvement; please check sourceforge if you are -interested in working on TinxXml. - - -

Changes between version 1 and 2

- - -

Entities

-TinyXml recognizes the pre-defined "entity references", meaning special -characters. Namely: - -@verbatim - & & - < < - > > - " " - ' ‘ -@endverbatim - -These are recognized when the XML document is read, and translated to there -ASCII equivalents. For instance, text with the XML of: - -@verbatim - Far & Away -@endverbatim - -will have the Value() of "Far & Away" when queried from the TiXmlText object, -but will be written back to the XML stream/file as an entitity. - -TiXml will ignore unknown entities and the -@verbatim -"&#x" -@endverbatim -entities, and leave them unprocessed. - - -

Streams

-TiXml has been modified to support both C (FILE) and C++ (operator <<,>>) -streams. There are some differences that you may need to be aware of. - -C style output: - - based on FILE* - - the Print() and SaveFile() methods - - Generates formatted output, with plenty of white space, intended to be as - human-readable as possible. They are very fast, and tolerant of ill formed - XML documents. For example, an XML document that contains 2 root elements - and 2 declarations, will print. - -C style input: - - based on FILE* - - the Parse() and LoadFile() methods - - A fast, tolerant read. Use whenever you don't need the C++ streams. - -C++ style ouput: - - based on std::ostream - - operator<< - - Generates condensed output, intended for network transmission rather than - readability. Depending on your system's implementation of the ostream class, - these may be somewhat slower. (Or may not.) Not tolerant of ill formed XML: - a document should contain the correct one root element. Additional root level - elements will not be streamed out. - -C++ style input: - - based on std::istream - - operator>> - - Reads XML from a stream, making it useful for network transmission. The tricky - part is knowing when the XML document is complete, since there will almost - certainly be other data in the stream. TinyXml will assume the XML data is - complete after it reads the root element. Also not that operator>> is somewhat - slower than Parse, due to both implementation of the STL and limitations of - TinyXml. - -

White space

-The world simply does not agree on whether white space should be kept, or condensed. -For example, pretend the '_' is a space, and look at "Hello____world". HTML, and -at least some XML parsers, will interpret this as "Hello_world". They condense white -space. Some XML parsers do not, and will leave it as "Hello____world". (Remember -to keep pretending the _ is a space.) - -It's an issue that hasn't been resolved to my satisfaction. TinyXml supports both -motifs. Call TiXmlBase::SetCondenseWhiteSpace( bool ) to set the desired behavior. -The default is to condense white space. - -If you change the default, you should call TiXmlBase::SetCondenseWhiteSpace( bool ) -before making any calls to Parse XML data, and I don't recommend changing it after -it has been set. - - -

Using and Installing

- -To Compile and Run xmltest: - -A Linux Makefile and a Windows Visual C++ .dsp file is provided. -Simply compile and run. It will write the file demotest.xml to your -disk and generate output on the screen. It also tests walking the -DOM by printing out the number of nodes found using different -techniques. - -The Linux makefile is very generic and will -probably run on other systems, but is only tested on Linux. You no -longer need to run 'make depend'. The dependecies have been -hard coded. - - -To Use in an Application: - -Add tinyxml.cpp, tinyxml.h, tinyxmlerror.cpp, and tinyxmlparser.cpp to your -project or make file. That's it! It should compile on any reasonably -compliant C++ system. You do not need to enable exceptions or -RTTI for TinyXml. - - -

Where it may go.

- -At this point, I'm focusing on tightening up remaining issues. -Bug fixes (though comfortably rare) and minor interface -corrections. - -There are some "it would be nice if..." items. I'll keep those -posted as tasks on SourceForge. (www.sourceforge.net/projects/tinyxml) - - -

How TinyXml works.

- -An example is probably the best way to go. Take: -@verbatim - - - - Go to the Toy store! - Do bills - -@endverbatim - -It’s not much of a To Do list, but it will do. To read this file -(say "demo.xml") you would create a document, and parse it in: -@verbatim - TiXmlDocument doc( "demo.xml" ); - doc.LoadFile(); -@endverbatim - -And it’s ready to go. Now let’s look at some lines and how they -relate to the DOM. - - - - The first line is a declaration, and gets turned into the - TiXmlDeclaration class. It will be the first child of the - document node. - - This is the only directive/special tag parsed by by TinyXml. - Generally directive targs are stored in TiXmlUnknown so the - commands won’t be lost when it is saved back to disk. - - - - A comment. Will become a TiXmlComment object. - - - - The ToDo tag defines a TiXmlElement object. This one does not have - any attributes, but will contain 2 other elements, both of which - are items. - - - - Creates another TiXmlElement which is a child of the "ToDo" element. - This element has 1 attribute, with the name ‘priority’ and the value - ‘1’. - -Go to the - - A TiXmlText. This is a leaf node and cannot contain other nodes. - It is a child of the ‘Item" Element. - - - - Another TiXmlElement, this one a child of the "Item" element. - -Etc. - -Looking at the entire object tree, you end up with: -@verbatim -TiXmlDocument "demo.xml" - TiXmlDeclaration "version='1.0'" "standalone=‘no’" - TiXmlComment " Our to do list data" - TiXmlElement "ToDo" - TiXmlElement "Item" Attribtutes: priority = 1 - TiXmlText "Go to the " - TiXmlElement "bold" - TiXmlText "Toy store!" - TiXmlElement "Item" Attributes: priority=2 - TiXmlText "bills" -@endverbatim - -

Contributors

- -Thanks very much to everyone who sends suggestions, bugs, ideas, and -encouragement. It all helps, and makes this project fun. A special thanks -to the contributors on the web pages that keep it lively. - -So many people have sent in bugs and ideas, that rather than list here I -try to give credit due in the "changes.txt" file. - -

Documentation

- -The documentation is build with Doxygen, using the 'dox' -configuration file. - -

License

- -TinyXml is released under the zlib license: - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any -damages arising from the use of this software. - -Permission is granted to anyone to use this software for any -purpose, including commercial applications, and to alter it and -redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must -not claim that you wrote the original software. If you use this -software in a product, an acknowledgment in the product documentation -would be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and -must not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source -distribution. - -

References

- -The World Wide Web Consortium is the definitive standard body for -XML, and there web pages contain huge amounts of information. I also -recommend "XML Pocket Reference" by Robert Eckstein and published by -O’Reilly. - -

Contact Me:

- -I’d appreciates your suggestions, and would love to know if you -use TinyXml. I hope you enjoy it and find it useful. Please post -questions, comments, file bugs, or contact me at: - -www.sourceforge.net/projects/tinyxml - -Lee Thomason -*/ diff --git a/platform/win32/msvc/external/lame/ACM/tinyxml/tinyxml.cpp b/platform/win32/msvc/external/lame/ACM/tinyxml/tinyxml.cpp deleted file mode 100644 index 981131e2a94..00000000000 --- a/platform/win32/msvc/external/lame/ACM/tinyxml/tinyxml.cpp +++ /dev/null @@ -1,1007 +0,0 @@ -/* -Copyright (c) 2000 Lee Thomason (www.grinninglizard.com) - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any -damages arising from the use of this software. - -Permission is granted to anyone to use this software for any -purpose, including commercial applications, and to alter it and -redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must -not claim that you wrote the original software. If you use this -software in a product, an acknowledgment in the product documentation -would be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and -must not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source -distribution. -*/ - -#include -#include -#include -#include "tinyxml.h" -using namespace std; - - -bool TiXmlBase::condenseWhiteSpace = true; - - -void TiXmlBase::PutString( const std::string& str, std::ostream* stream ) -{ - // Scan for the all important '&' - unsigned int i=0, j=0; - - while ( i < str.length() ) - { - unsigned next = str.find( '&', i ); - - if ( next == string::npos ) - { - stream->write( &str.at( i ), str.length() - i ); - return; - } - - // We found an entity. - if ( next - i > 0 ) - stream->write( &str.at( i ), next - i ); - i = next; - - // Check for the special "&#x" entitity - if ( i < str.length() - 2 - && str[i] == '&' - && str[i+1] == '#' - && str[i+2] == 'x' ) - { - stream->put( str[i] ); - } - else - { - for ( j=0; jwrite( entity[j].str, entity[j].strLength ); - break; - } - } - if ( j == NUM_ENTITY ) - { - stream->put( str[i] ); - } - } - ++i; - } -} - - -TiXmlNode::TiXmlNode( NodeType _type ) -{ - parent = 0; - type = _type; - firstChild = 0; - lastChild = 0; - prev = 0; - next = 0; -} - - -TiXmlNode::~TiXmlNode() -{ - TiXmlNode* node = firstChild; - TiXmlNode* temp = 0; - - while ( node ) - { - temp = node; - node = node->next; - delete temp; - } -} - - -void TiXmlNode::Clear() -{ - TiXmlNode* node = firstChild; - TiXmlNode* temp = 0; - - while ( node ) - { - temp = node; - node = node->next; - delete temp; - } - - firstChild = 0; - lastChild = 0; -} - - -TiXmlNode* TiXmlNode::LinkEndChild( TiXmlNode* node ) -{ - node->parent = this; - - node->prev = lastChild; - node->next = 0; - - if ( lastChild ) - lastChild->next = node; - else - firstChild = node; // it was an empty list. - - lastChild = node; - return node; -} - - -TiXmlNode* TiXmlNode::InsertEndChild( const TiXmlNode& addThis ) -{ - TiXmlNode* node = addThis.Clone(); - if ( !node ) - return 0; - - return LinkEndChild( node ); -} - - -TiXmlNode* TiXmlNode::InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis ) -{ - if ( beforeThis->parent != this ) - return 0; - - TiXmlNode* node = addThis.Clone(); - if ( !node ) - return 0; - node->parent = this; - - node->next = beforeThis; - node->prev = beforeThis->prev; - beforeThis->prev->next = node; - beforeThis->prev = node; - return node; -} - - -TiXmlNode* TiXmlNode::InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis ) -{ - if ( afterThis->parent != this ) - return 0; - - TiXmlNode* node = addThis.Clone(); - if ( !node ) - return 0; - node->parent = this; - - node->prev = afterThis; - node->next = afterThis->next; - afterThis->next->prev = node; - afterThis->next = node; - return node; -} - - -TiXmlNode* TiXmlNode::ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis ) -{ - if ( replaceThis->parent != this ) - return 0; - - TiXmlNode* node = withThis.Clone(); - if ( !node ) - return 0; - - node->next = replaceThis->next; - node->prev = replaceThis->prev; - - if ( replaceThis->next ) - replaceThis->next->prev = node; - else - lastChild = node; - - if ( replaceThis->prev ) - replaceThis->prev->next = node; - else - firstChild = node; - - delete replaceThis; - node->parent = this; - return node; -} - - -bool TiXmlNode::RemoveChild( TiXmlNode* removeThis ) -{ - if ( removeThis->parent != this ) - { - assert( 0 ); - return false; - } - - if ( removeThis->next ) - removeThis->next->prev = removeThis->prev; - else - lastChild = removeThis->prev; - - if ( removeThis->prev ) - removeThis->prev->next = removeThis->next; - else - firstChild = removeThis->next; - - delete removeThis; - return true; -} - - -TiXmlNode* TiXmlNode::FirstChild( const std::string& value ) const -{ - TiXmlNode* node; - for ( node = firstChild; node; node = node->next ) - { - if ( node->Value() == value ) - return node; - } - return 0; -} - - -TiXmlNode* TiXmlNode::LastChild( const std::string& value ) const -{ - TiXmlNode* node; - for ( node = lastChild; node; node = node->prev ) - { - if ( node->Value() == value ) - return node; - } - return 0; -} - - -TiXmlNode* TiXmlNode::IterateChildren( TiXmlNode* previous ) const -{ - if ( !previous ) - { - return FirstChild(); - } - else - { - assert( previous->parent == this ); - return previous->NextSibling(); - } -} - - -TiXmlNode* TiXmlNode::IterateChildren( const std::string& val, TiXmlNode* previous ) const -{ - if ( !previous ) - { - return FirstChild( val ); - } - else - { - assert( previous->parent == this ); - return previous->NextSibling( val ); - } -} - - -TiXmlNode* TiXmlNode::NextSibling( const std::string& value ) const -{ - TiXmlNode* node; - for ( node = next; node; node = node->next ) - { - if ( node->Value() == value ) - return node; - } - return 0; -} - - -TiXmlNode* TiXmlNode::PreviousSibling( const std::string& value ) const -{ - TiXmlNode* node; - for ( node = prev; node; node = node->prev ) - { - if ( node->Value() == value ) - return node; - } - return 0; -} - - -void TiXmlElement::RemoveAttribute( const std::string& name ) -{ - TiXmlAttribute* node = attributeSet.Find( name ); - if ( node ) - { - attributeSet.Remove( node ); - delete node; - } -} - - -TiXmlElement* TiXmlNode::FirstChildElement() const -{ - TiXmlNode* node; - - for ( node = FirstChild(); - node; - node = node->NextSibling() ) - { - if ( node->ToElement() ) - return node->ToElement(); - } - return 0; -} - - -TiXmlElement* TiXmlNode::FirstChildElement( const std::string& value ) const -{ - TiXmlNode* node; - - for ( node = FirstChild( value ); - node; - node = node->NextSibling( value ) ) - { - if ( node->ToElement() ) - return node->ToElement(); - } - return 0; -} - - -TiXmlElement* TiXmlNode::NextSiblingElement() const -{ - TiXmlNode* node; - - for ( node = NextSibling(); - node; - node = node->NextSibling() ) - { - if ( node->ToElement() ) - return node->ToElement(); - } - return 0; -} - - -TiXmlElement* TiXmlNode::NextSiblingElement( const std::string& value ) const -{ - TiXmlNode* node; - - for ( node = NextSibling( value ); - node; - node = node->NextSibling( value ) ) - { - if ( node->ToElement() ) - return node->ToElement(); - } - return 0; -} - - - -TiXmlDocument* TiXmlNode::GetDocument() const -{ - const TiXmlNode* node; - - for( node = this; node; node = node->parent ) - { - if ( node->ToDocument() ) - return node->ToDocument(); - } - return 0; -} - - -// TiXmlElement::TiXmlElement() -// : TiXmlNode( TiXmlNode::ELEMENT ) -// { -// } - -TiXmlElement::TiXmlElement( const std::string& _value ) - : TiXmlNode( TiXmlNode::ELEMENT ) -{ - firstChild = lastChild = 0; - value = _value; -} - -TiXmlElement::~TiXmlElement() -{ - while( attributeSet.First() ) - { - TiXmlAttribute* node = attributeSet.First(); - attributeSet.Remove( node ); - delete node; - } -} - -const std::string* TiXmlElement::Attribute( const std::string& name ) const -{ - TiXmlAttribute* node = attributeSet.Find( name ); - - if ( node ) - return &(node->Value() ); - - return 0; -} - - -const std::string* TiXmlElement::Attribute( const std::string& name, int* i ) const -{ - const std::string* s = Attribute( name ); - if ( s ) - *i = atoi( s->c_str() ); - else - *i = 0; - return s; -} - - -void TiXmlElement::SetAttribute( const std::string& name, int val ) -{ - char buf[64]; - sprintf( buf, "%d", val ); - - std::string v = buf; - - SetAttribute( name, v ); -} - - -void TiXmlElement::SetAttribute( const std::string& name, const std::string& value ) -{ - TiXmlAttribute* node = attributeSet.Find( name ); - if ( node ) - { - node->SetValue( value ); - return; - } - - TiXmlAttribute* attrib = new TiXmlAttribute( name, value ); - if ( attrib ) - { - attributeSet.Add( attrib ); - } - else - { - TiXmlDocument* document = GetDocument(); - if ( document ) document->SetError( TIXML_ERROR_OUT_OF_MEMORY ); - } -} - - -void TiXmlElement::Print( FILE* cfile, int depth ) const -{ - int i; - for ( i=0; iNext() ) - { - fprintf( cfile, " " ); - attrib->Print( cfile, depth ); - } - - // There are 3 different formatting approaches: - // 1) An element without children is printed as a node - // 2) An element with only a text child is printed as text - // 3) An element with children is printed on multiple lines. - TiXmlNode* node; - if ( !firstChild ) - { - fprintf( cfile, " />" ); - } - else if ( firstChild == lastChild && firstChild->ToText() ) - { - fprintf( cfile, ">" ); - firstChild->Print( cfile, depth + 1 ); - fprintf( cfile, "", value.c_str() ); - } - else - { - fprintf( cfile, ">" ); - - for ( node = firstChild; node; node=node->NextSibling() ) - { - if ( !node->ToText() ) - { - fprintf( cfile, "\n" ); - } - node->Print( cfile, depth+1 ); - } - fprintf( cfile, "\n" ); - for( i=0; i", value.c_str() ); - } -} - - -void TiXmlElement::StreamOut( std::ostream* stream ) const -{ - (*stream) << "<" << value; - - TiXmlAttribute* attrib; - for ( attrib = attributeSet.First(); attrib; attrib = attrib->Next() ) - { - (*stream) << " "; - attrib->StreamOut( stream ); - } - - // If this node has children, give it a closing tag. Else - // make it an empty tag. - TiXmlNode* node; - if ( firstChild ) - { - (*stream) << ">"; - - for ( node = firstChild; node; node=node->NextSibling() ) - { - node->StreamOut( stream ); - } - (*stream) << ""; - } - else - { - (*stream) << " />"; - } -} - - -TiXmlNode* TiXmlElement::Clone() const -{ - TiXmlElement* clone = new TiXmlElement( Value() ); - - if ( !clone ) - return 0; - - CopyToClone( clone ); - - // Clone the attributes, then clone the children. - TiXmlAttribute* attribute = 0; - for( attribute = attributeSet.First(); - attribute; - attribute = attribute->Next() ) - { - clone->SetAttribute( attribute->Name(), attribute->Value() ); - } - - TiXmlNode* node = 0; - for ( node = firstChild; node; node = node->NextSibling() ) - { - clone->LinkEndChild( node->Clone() ); - } - return clone; -} - - -TiXmlDocument::TiXmlDocument() : TiXmlNode( TiXmlNode::DOCUMENT ) -{ - error = false; -// ignoreWhiteSpace = true; -} - - -TiXmlDocument::TiXmlDocument( const std::string& documentName ) : TiXmlNode( TiXmlNode::DOCUMENT ) -{ -// ignoreWhiteSpace = true; - value = documentName; - error = false; -} - - -bool TiXmlDocument::LoadFile() -{ - return LoadFile( value ); -} - - -bool TiXmlDocument::SaveFile() const -{ - return SaveFile( value ); -} - - -bool TiXmlDocument::LoadFile( const std::string& filename ) -{ - // Delete the existing data: - Clear(); - value = filename; - - FILE* file = fopen( filename.c_str(), "r" ); - - if ( file ) - { - // Get the file size, so we can pre-allocate the string. HUGE speed impact. - long length = 0; - fseek( file, 0, SEEK_END ); - length = ftell( file ); - fseek( file, 0, SEEK_SET ); - - // If we have a file, assume it is all one big XML file, and read it in. - // The document parser may decide the document ends sooner than the entire file, however. - std::string data; - data.reserve( length ); - - const int BUF_SIZE = 2048; - char buf[BUF_SIZE]; - - while( fgets( buf, BUF_SIZE, file ) ) - { - data += buf; - } - fclose( file ); - - Parse( data.c_str() ); - if ( !Error() ) - { - return true; - } - } - SetError( TIXML_ERROR_OPENING_FILE ); - return false; -} - - -bool TiXmlDocument::SaveFile( const std::string& filename ) const -{ - // The old c stuff lives on... - FILE* fp = fopen( filename.c_str(), "w" ); - if ( fp ) - { - Print( fp, 0 ); - fclose( fp ); - return true; - } - return false; -} - - -TiXmlNode* TiXmlDocument::Clone() const -{ - TiXmlDocument* clone = new TiXmlDocument(); - if ( !clone ) - return 0; - - CopyToClone( clone ); - clone->error = error; - clone->errorDesc = errorDesc; - - TiXmlNode* node = 0; - for ( node = firstChild; node; node = node->NextSibling() ) - { - clone->LinkEndChild( node->Clone() ); - } - return clone; -} - - -void TiXmlDocument::Print( FILE* cfile, int depth ) const -{ - TiXmlNode* node; - for ( node=FirstChild(); node; node=node->NextSibling() ) - { - node->Print( cfile, depth ); - fprintf( cfile, "\n" ); - } -} - - -void TiXmlDocument::StreamOut( std::ostream* out ) const -{ - TiXmlNode* node; - for ( node=FirstChild(); node; node=node->NextSibling() ) - { - node->StreamOut( out ); - - // Special rule for streams: stop after the root element. - // The stream in code will only read one element, so don't - // write more than one. - if ( node->ToElement() ) - break; - } -} - - -TiXmlAttribute* TiXmlAttribute::Next() const -{ - // We are using knowledge of the sentinel. The sentinel - // have a value or name. - if ( next->value.empty() && next->name.empty() ) - return 0; - return next; -} - - -TiXmlAttribute* TiXmlAttribute::Previous() const -{ - // We are using knowledge of the sentinel. The sentinel - // have a value or name. - if ( prev->value.empty() && prev->name.empty() ) - return 0; - return prev; -} - - -void TiXmlAttribute::Print( FILE* cfile, int /*depth*/ ) const -{ - ostringstream stream( ostringstream::out ); - stream.str().reserve( 500 ); - - StreamOut( &stream ); - fprintf( cfile, "%s", stream.str().c_str() ); -} - - -void TiXmlAttribute::StreamOut( std::ostream* stream ) const -{ - if ( value.find( '\"' ) != std::string::npos ) - { - PutString( name, stream ); - (*stream) << "=" << "'"; - PutString( value, stream ); - (*stream) << "'"; - } - else - { - PutString( name, stream ); - (*stream) << "=" << "\""; - PutString( value, stream ); - (*stream) << "\""; - } -} - - -void TiXmlAttribute::SetIntValue( int value ) -{ - std::string s; - std::ostringstream stream( s ); - stream << value; - SetValue( stream.str() ); -} - - -void TiXmlAttribute::SetDoubleValue( double value ) -{ - std::string s; - std::ostringstream stream( s ); - stream << value; - SetValue( stream.str() ); -} - - -const int TiXmlAttribute::IntValue() const -{ - int v; - std::istringstream string( value ); - string >> v; - return v; -} - - -const double TiXmlAttribute::DoubleValue() const -{ - double v; - std::istringstream string( value ); - string >> v; - return v; -} - - -void TiXmlComment::Print( FILE* cfile, int depth ) const -{ - ostringstream stream( ostringstream::out ); - stream.str().reserve( 1000 ); - - for ( int i=0; i"; -} - - -TiXmlNode* TiXmlComment::Clone() const -{ - TiXmlComment* clone = new TiXmlComment(); - - if ( !clone ) - return 0; - - CopyToClone( clone ); - return clone; -} - - -void TiXmlText::Print( FILE* cfile, int depth ) const -{ - ostringstream stream( ostringstream::out ); - stream.str().reserve( 1000 ); - StreamOut( &stream ); - fprintf( cfile, "%s", stream.str().c_str() ); -} - - -void TiXmlText::StreamOut( std::ostream* stream ) const -{ - PutString( value, stream ); -} - - -TiXmlNode* TiXmlText::Clone() const -{ - TiXmlText* clone = 0; - clone = new TiXmlText( "" ); - - if ( !clone ) - return 0; - - CopyToClone( clone ); - return clone; -} - - -TiXmlDeclaration::TiXmlDeclaration( const std::string& _version, - const std::string& _encoding, - const std::string& _standalone ) - : TiXmlNode( TiXmlNode::DECLARATION ) -{ - version = _version; - encoding = _encoding; - standalone = _standalone; -} - - -void TiXmlDeclaration::Print( FILE* cfile, int depth ) const -{ - ostringstream stream( ostringstream::out ); - stream.str().reserve( 200 ); - StreamOut( &stream ); - fprintf( cfile, "%s", stream.str().c_str() ); -} - - -void TiXmlDeclaration::StreamOut( std::ostream* stream ) const -{ - (*stream) << ""; -} - - -TiXmlNode* TiXmlDeclaration::Clone() const -{ - TiXmlDeclaration* clone = new TiXmlDeclaration(); - - if ( !clone ) - return 0; - - CopyToClone( clone ); - clone->version = version; - clone->encoding = encoding; - clone->standalone = standalone; - return clone; -} - - -void TiXmlUnknown::Print( FILE* cfile, int depth ) const -{ - ostringstream stream( ostringstream::out ); - stream.str().reserve( 200 ); - StreamOut( &stream ); - - for ( int i=0; i"; // Don't use entities hear! It is unknown. -} - - -TiXmlNode* TiXmlUnknown::Clone() const -{ - TiXmlUnknown* clone = new TiXmlUnknown(); - - if ( !clone ) - return 0; - - CopyToClone( clone ); - return clone; -} - - -TiXmlAttributeSet::TiXmlAttributeSet() -{ - sentinel.next = &sentinel; - sentinel.prev = &sentinel; -} - - -TiXmlAttributeSet::~TiXmlAttributeSet() -{ - assert( sentinel.next == &sentinel ); - assert( sentinel.prev == &sentinel ); -} - - -void TiXmlAttributeSet::Add( TiXmlAttribute* addMe ) -{ - assert( !Find( addMe->Name() ) ); // Shouldn't be multiply adding to the set. - - addMe->next = &sentinel; - addMe->prev = sentinel.prev; - - sentinel.prev->next = addMe; - sentinel.prev = addMe; -} - -void TiXmlAttributeSet::Remove( TiXmlAttribute* removeMe ) -{ - TiXmlAttribute* node; - - for( node = sentinel.next; node != &sentinel; node = node->next ) - { - if ( node == removeMe ) - { - node->prev->next = node->next; - node->next->prev = node->prev; - node->next = 0; - node->prev = 0; - return; - } - } - assert( 0 ); // we tried to remove a non-linked attribute. -} - - -TiXmlAttribute* TiXmlAttributeSet::Find( const std::string& name ) const -{ - TiXmlAttribute* node; - - for( node = sentinel.next; node != &sentinel; node = node->next ) - { - if ( node->Name() == name ) - return node; - } - return 0; -} - diff --git a/platform/win32/msvc/external/lame/ACM/tinyxml/tinyxml.h b/platform/win32/msvc/external/lame/ACM/tinyxml/tinyxml.h deleted file mode 100644 index b9f1205c91d..00000000000 --- a/platform/win32/msvc/external/lame/ACM/tinyxml/tinyxml.h +++ /dev/null @@ -1,804 +0,0 @@ -/* -Copyright (c) 2000 Lee Thomason (www.grinninglizard.com) - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any -damages arising from the use of this software. - -Permission is granted to anyone to use this software for any -purpose, including commercial applications, and to alter it and -redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must -not claim that you wrote the original software. If you use this -software in a product, an acknowledgment in the product documentation -would be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and -must not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source -distribution. -*/ - - -#ifndef TINYXML_INCLUDED -#define TINYXML_INCLUDED - -#pragma warning( disable : 4530 ) -#pragma warning( disable : 4786 ) - -#include -#include -#include - -class TiXmlDocument; -class TiXmlElement; -class TiXmlComment; -class TiXmlUnknown; -class TiXmlAttribute; -class TiXmlText; -class TiXmlDeclaration; - - -// Help out windows: -#if defined( _DEBUG ) && !defined( DEBUG ) - #define DEBUG -#endif - -#if defined( DEBUG ) && defined( _MSC_VER ) - #include - #define TIXML_LOG OutputDebugString -#else - #define TIXML_LOG printf -#endif - - -/** TiXmlBase is a base class for every class in TinyXml. - It does little except to establish that TinyXml classes - can be printed and provide some utility functions. - - In XML, the document and elements can contain - other elements and other types of nodes. - - @verbatim - A Document can contain: Element (container or leaf) - Comment (leaf) - Unknown (leaf) - Declaration( leaf ) - - An Element can contain: Element (container or leaf) - Text (leaf) - Attributes (not on tree) - Comment (leaf) - Unknown (leaf) - - A Decleration contains: Attributes (not on tree) - @endverbatim -*/ -class TiXmlBase -{ - friend class TiXmlNode; - friend class TiXmlElement; - friend class TiXmlDocument; - - public: - TiXmlBase() {} - virtual ~TiXmlBase() {} - - /** All TinyXml classes can print themselves to a filestream. - This is a formatted print, and will insert tabs and newlines. - - (For an unformatted stream, use the << operator.) - */ - virtual void Print( FILE* cfile, int depth ) const = 0; - - // [internal] Underlying implementation of the operator << - virtual void StreamOut ( std::ostream* out ) const = 0; - - /** The world does not agree on whether white space should be kept or - not. In order to make everyone happy, these global, static functions - are provided to set whether or not TinyXml will condense all white space - into a single space or not. The default is to condense. Note changing these - values is not thread safe. - */ - static void SetCondenseWhiteSpace( bool condense ) { condenseWhiteSpace = condense; } - - /// Return the current white space setting. - static bool IsWhiteSpaceCondensed() { return condenseWhiteSpace; } - - protected: - static const char* SkipWhiteSpace( const char* ); - static bool StreamWhiteSpace( std::istream* in, std::string* tag ); - static bool IsWhiteSpace( int c ) { return ( isspace( c ) || c == '\n' || c == '\r' ); } - - /* Read to the specified character. - Returns true if the character found and no error. - */ - static bool StreamTo( std::istream* in, int character, std::string* tag ); - - /* Reads an XML name into the string provided. Returns - a pointer just past the last character of the name, - or 0 if the function has an error. - */ - static const char* ReadName( const char*, std::string* name ); - - /* Reads text. Returns a pointer past the given end tag. - Wickedly complex options, but it keeps the (sensitive) code in one place. - */ - static const char* ReadText( const char* in, // where to start - std::string* text, // the string read - bool ignoreWhiteSpace, // whether to keep the white space - const char* endTag, // what ends this text - bool ignoreCase ); // whether to ignore case in the end tag - - virtual const char* Parse( const char* p ) = 0; - - // If an entity has been found, transform it into a character. - static const char* GetEntity( const char* in, char* value ); - - // Get a character, while interpreting entities. - inline static const char* GetChar( const char* p, char* value ) - { - assert( p ); - if ( *p == '&' ) - { - return GetEntity( p, value ); - } - else - { - *value = *p; - return p+1; - } - } - - // Puts a string to a stream, expanding entities as it goes. - // Note this should not contian the '<', '>', etc, or they will be transformed into entities! - static void PutString( const std::string& str, std::ostream* stream ); - - // Return true if the next characters in the stream are any of the endTag sequences. - bool static StringEqual( const char* p, - const char* endTag, - bool ignoreCase ); - - - enum - { - TIXML_NO_ERROR = 0, - TIXML_ERROR, - TIXML_ERROR_OPENING_FILE, - TIXML_ERROR_OUT_OF_MEMORY, - TIXML_ERROR_PARSING_ELEMENT, - TIXML_ERROR_FAILED_TO_READ_ELEMENT_NAME, - TIXML_ERROR_READING_ELEMENT_VALUE, - TIXML_ERROR_READING_ATTRIBUTES, - TIXML_ERROR_PARSING_EMPTY, - TIXML_ERROR_READING_END_TAG, - TIXML_ERROR_PARSING_UNKNOWN, - TIXML_ERROR_PARSING_COMMENT, - TIXML_ERROR_PARSING_DECLARATION, - TIXML_ERROR_DOCUMENT_EMPTY, - - TIXML_ERROR_STRING_COUNT - }; - static const char* errorString[ TIXML_ERROR_STRING_COUNT ]; - - private: - struct Entity - { - const char* str; - unsigned int strLength; - int chr; - }; - enum - { - NUM_ENTITY = 5, - MAX_ENTITY_LENGTH = 6 - - }; - static Entity entity[ NUM_ENTITY ]; - static bool condenseWhiteSpace; -}; - - -/** The parent class for everything in the Document Object Model. - (Except for attributes, which are contained in elements.) - Nodes have siblings, a parent, and children. A node can be - in a document, or stand on its own. The type of a TiXmlNode - can be queried, and it can be cast to its more defined type. -*/ -class TiXmlNode : public TiXmlBase -{ - public: - - /** An output stream operator, for every class. Note that this outputs - without any newlines or formatting, as opposed to Print(), which - includes tabs and new lines. - - The operator<< and operator>> are not completely symmetric. Writing - a node to a stream is very well defined. You'll get a nice stream - of output, without any extra whitespace or newlines. - - But reading is not as well defined. (As it always is.) If you create - a TiXmlElement (for example) and read that from an input stream, - the text needs to define an element or junk will result. This is - true of all input streams, but it's worth keeping in mind. - - A TiXmlDocument will read nodes until it reads a root element. - */ - friend std::ostream& operator<< ( std::ostream& out, const TiXmlNode& base ) - { - base.StreamOut( &out ); - return out; - } - - /** An input stream operator, for every class. Tolerant of newlines and - formatting, but doesn't expect them. - */ - friend std::istream& operator>> ( std::istream& in, TiXmlNode& base ) - { - std::string tag; - tag.reserve( 8 * 1000 ); - base.StreamIn( &in, &tag ); - - base.Parse( tag.c_str() ); - return in; - } - - /** The types of XML nodes supported by TinyXml. (All the - unsupported types are picked up by UNKNOWN.) - */ - enum NodeType - { - DOCUMENT, - ELEMENT, - COMMENT, - UNKNOWN, - TEXT, - DECLARATION, - TYPECOUNT - }; - - virtual ~TiXmlNode(); - - /** The meaning of 'value' changes for the specific type of - TiXmlNode. - @verbatim - Document: filename of the xml file - Element: name of the element - Comment: the comment text - Unknown: the tag contents - Text: the text string - @endverbatim - - The subclasses will wrap this function. - */ - const std::string& Value() const { return value; } - - /** Changes the value of the node. Defined as: - @verbatim - Document: filename of the xml file - Element: name of the element - Comment: the comment text - Unknown: the tag contents - Text: the text string - @endverbatim - */ - void SetValue( const std::string& _value ) { value = _value; } - - /// Delete all the children of this node. Does not affect 'this'. - void Clear(); - - /// One step up the DOM. - TiXmlNode* Parent() const { return parent; } - - TiXmlNode* FirstChild() const { return firstChild; } ///< The first child of this node. Will be null if there are no children. - TiXmlNode* FirstChild( const std::string& value ) const; ///< The first child of this node with the matching 'value'. Will be null if none found. - - TiXmlNode* LastChild() const { return lastChild; } /// The last child of this node. Will be null if there are no children. - TiXmlNode* LastChild( const std::string& value ) const; /// The last child of this node matching 'value'. Will be null if there are no children. - - /** An alternate way to walk the children of a node. - One way to iterate over nodes is: - @verbatim - for( child = parent->FirstChild(); child; child = child->NextSibling() ) - @endverbatim - - IterateChildren does the same thing with the syntax: - @verbatim - child = 0; - while( child = parent->IterateChildren( child ) ) - @endverbatim - - IterateChildren takes the previous child as input and finds - the next one. If the previous child is null, it returns the - first. IterateChildren will return null when done. - */ - TiXmlNode* IterateChildren( TiXmlNode* previous ) const; - - /// This flavor of IterateChildren searches for children with a particular 'value' - TiXmlNode* IterateChildren( const std::string& value, TiXmlNode* previous ) const; - - /** Add a new node related to this. Adds a child past the LastChild. - Returns a pointer to the new object or NULL if an error occured. - */ - TiXmlNode* InsertEndChild( const TiXmlNode& addThis ); - - /** Add a new node related to this. Adds a child before the specified child. - Returns a pointer to the new object or NULL if an error occured. - */ - TiXmlNode* InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis ); - - /** Add a new node related to this. Adds a child after the specified child. - Returns a pointer to the new object or NULL if an error occured. - */ - TiXmlNode* InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis ); - - /** Replace a child of this node. - Returns a pointer to the new object or NULL if an error occured. - */ - TiXmlNode* ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis ); - - /// Delete a child of this node. - bool RemoveChild( TiXmlNode* removeThis ); - - /// Navigate to a sibling node. - TiXmlNode* PreviousSibling() const { return prev; } - - /// Navigate to a sibling node. - TiXmlNode* PreviousSibling( const std::string& ) const; - - /// Navigate to a sibling node. - TiXmlNode* NextSibling() const { return next; } - - /// Navigate to a sibling node with the given 'value'. - TiXmlNode* NextSibling( const std::string& ) const; - - /** Convenience function to get through elements. - Calls NextSibling and ToElement. Will skip all non-Element - nodes. Returns 0 if there is not another element. - */ - TiXmlElement* NextSiblingElement() const; - - /** Convenience function to get through elements. - Calls NextSibling and ToElement. Will skip all non-Element - nodes. Returns 0 if there is not another element. - */ - TiXmlElement* NextSiblingElement( const std::string& ) const; - - /// Convenience function to get through elements. - TiXmlElement* FirstChildElement() const; - - /// Convenience function to get through elements. - TiXmlElement* FirstChildElement( const std::string& value ) const; - - /// Query the type (as an enumerated value, above) of this node. - virtual int Type() const { return type; } - - /** Return a pointer to the Document this node lives in. - Returns null if not in a document. - */ - TiXmlDocument* GetDocument() const; - - /// Returns true if this node has no children. - bool NoChildren() const { return !firstChild; } - - TiXmlDocument* ToDocument() const { return ( this && type == DOCUMENT ) ? (TiXmlDocument*) this : 0; } ///< Cast to a more defined type. Will return null not of the requested type. - TiXmlElement* ToElement() const { return ( this && type == ELEMENT ) ? (TiXmlElement*) this : 0; } ///< Cast to a more defined type. Will return null not of the requested type. - TiXmlComment* ToComment() const { return ( this && type == COMMENT ) ? (TiXmlComment*) this : 0; } ///< Cast to a more defined type. Will return null not of the requested type. - TiXmlUnknown* ToUnknown() const { return ( this && type == UNKNOWN ) ? (TiXmlUnknown*) this : 0; } ///< Cast to a more defined type. Will return null not of the requested type. - TiXmlText* ToText() const { return ( this && type == TEXT ) ? (TiXmlText*) this : 0; } ///< Cast to a more defined type. Will return null not of the requested type. - TiXmlDeclaration* ToDeclaration() const { return ( this && type == DECLARATION ) ? (TiXmlDeclaration*) this : 0; } ///< Cast to a more defined type. Will return null not of the requested type. - - virtual TiXmlNode* Clone() const = 0; - - // The real work of the input operator. - virtual void StreamIn( std::istream* in, std::string* tag ) = 0; - - protected: - TiXmlNode( NodeType type ); - - // The node is passed in by ownership. This object will delete it. - TiXmlNode* LinkEndChild( TiXmlNode* addThis ); - - // Figure out what is at *p, and parse it. Returns null if it is not an xml node. - TiXmlNode* Identify( const char* start ); - - void CopyToClone( TiXmlNode* target ) const { target->value = value; } - - TiXmlNode* parent; - NodeType type; - - TiXmlNode* firstChild; - TiXmlNode* lastChild; - - std::string value; - - TiXmlNode* prev; - TiXmlNode* next; -}; - - -/** An attribute is a name-value pair. Elements have an arbitrary - number of attributes, each with a unique name. - - @note The attributes are not TiXmlNodes, since they are not - part of the tinyXML document object model. There are other - suggested ways to look at this problem. - - @note Attributes have a parent -*/ -class TiXmlAttribute : public TiXmlBase -{ - friend class TiXmlAttributeSet; - - public: - /// Construct an empty attribute. - TiXmlAttribute() : prev( 0 ), next( 0 ) {} - - /// Construct an attribute with a name and value. - TiXmlAttribute( const std::string& _name, const std::string& _value ) : name( _name ), value( _value ), prev( 0 ), next( 0 ) {} - - const std::string& Name() const { return name; } ///< Return the name of this attribute. - - const std::string& Value() const { return value; } ///< Return the value of this attribute. - const int IntValue() const; ///< Return the value of this attribute, converted to an integer. - const double DoubleValue() const; ///< Return the value of this attribute, converted to a double. - - void SetName( const std::string& _name ) { name = _name; } ///< Set the name of this attribute. - void SetValue( const std::string& _value ) { value = _value; } ///< Set the value. - void SetIntValue( int value ); ///< Set the value from an integer. - void SetDoubleValue( double value ); ///< Set the value from a double. - - /// Get the next sibling attribute in the DOM. Returns null at end. - TiXmlAttribute* Next() const; - /// Get the previous sibling attribute in the DOM. Returns null at beginning. - TiXmlAttribute* Previous() const; - - bool operator==( const TiXmlAttribute& rhs ) const { return rhs.name == name; } - bool operator<( const TiXmlAttribute& rhs ) const { return name < rhs.name; } - bool operator>( const TiXmlAttribute& rhs ) const { return name > rhs.name; } - - /* [internal use] - Attribtue parsing starts: first letter of the name - returns: the next char after the value end quote - */ - virtual const char* Parse( const char* p ); - - // [internal use] - virtual void Print( FILE* cfile, int depth ) const; - - // [internal use] - virtual void StreamOut( std::ostream* out ) const; - - // [internal use] - // Set the document pointer so the attribute can report errors. - void SetDocument( TiXmlDocument* doc ) { document = doc; } - - private: - TiXmlDocument* document; // A pointer back to a document, for error reporting. - std::string name; - std::string value; - - TiXmlAttribute* prev; - TiXmlAttribute* next; -}; - - -/* A class used to manage a group of attributes. - It is only used internally, both by the ELEMENT and the DECLARATION. - - The set can be changed transparent to the Element and Declaration - classes that use it, but NOT transparent to the Attribute - which has to implement a next() and previous() method. Which makes - it a bit problematic and prevents the use of STL. - - This version is implemented with circular lists because: - - I like circular lists - - it demonstrates some independence from the (typical) doubly linked list. -*/ -class TiXmlAttributeSet -{ - public: - TiXmlAttributeSet(); - ~TiXmlAttributeSet(); - - void Add( TiXmlAttribute* attribute ); - void Remove( TiXmlAttribute* attribute ); - - TiXmlAttribute* First() const { return ( sentinel.next == &sentinel ) ? 0 : sentinel.next; } - TiXmlAttribute* Last() const { return ( sentinel.prev == &sentinel ) ? 0 : sentinel.prev; } - - TiXmlAttribute* Find( const std::string& name ) const; - - private: - TiXmlAttribute sentinel; -}; - - -/** The element is a container class. It has a value, the element name, - and can contain other elements, text, comments, and unknowns. - Elements also contain an arbitrary number of attributes. -*/ -class TiXmlElement : public TiXmlNode -{ - public: - /// Construct an element. - TiXmlElement( const std::string& value ); - - virtual ~TiXmlElement(); - - /** Given an attribute name, attribute returns the value - for the attribute of that name, or null if none exists. - */ - const std::string* Attribute( const std::string& name ) const; - - /** Given an attribute name, attribute returns the value - for the attribute of that name, or null if none exists. - */ - const std::string* Attribute( const std::string& name, int* i ) const; - - /** Sets an attribute of name to a given value. The attribute - will be created if it does not exist, or changed if it does. - */ - void SetAttribute( const std::string& name, - const std::string& value ); - - /** Sets an attribute of name to a given value. The attribute - will be created if it does not exist, or changed if it does. - */ - void SetAttribute( const std::string& name, - int value ); - - /** Deletes an attribute with the given name. - */ - void RemoveAttribute( const std::string& name ); - - TiXmlAttribute* FirstAttribute() const { return attributeSet.First(); } ///< Access the first attribute in this element. - TiXmlAttribute* LastAttribute() const { return attributeSet.Last(); } ///< Access the last attribute in this element. - - // [internal use] Creates a new Element and returs it. - virtual TiXmlNode* Clone() const; - // [internal use] - virtual void Print( FILE* cfile, int depth ) const; - // [internal use] - virtual void StreamOut ( std::ostream* out ) const; - // [internal use] - virtual void StreamIn( std::istream* in, std::string* tag ); - - protected: - /* [internal use] - Attribtue parsing starts: next char past '<' - returns: next char past '>' - */ - virtual const char* Parse( const char* p ); - - /* [internal use] - Reads the "value" of the element -- another element, or text. - This should terminate with the current end tag. - */ - const char* ReadValue( const char* in ); - bool ReadValue( std::istream* in ); - - private: - TiXmlAttributeSet attributeSet; -}; - - -/** An XML comment. -*/ -class TiXmlComment : public TiXmlNode -{ - public: - /// Constructs an empty comment. - TiXmlComment() : TiXmlNode( TiXmlNode::COMMENT ) {} - virtual ~TiXmlComment() {} - - // [internal use] Creates a new Element and returs it. - virtual TiXmlNode* Clone() const; - // [internal use] - virtual void Print( FILE* cfile, int depth ) const; - // [internal use] - virtual void StreamOut ( std::ostream* out ) const; - // [internal use] - virtual void StreamIn( std::istream* in, std::string* tag ); - - protected: - /* [internal use] - Attribtue parsing starts: at the ! of the !-- - returns: next char past '>' - */ - virtual const char* Parse( const char* p ); -}; - - -/** XML text. Contained in an element. -*/ -class TiXmlText : public TiXmlNode -{ - public: - TiXmlText( const std::string& initValue ) : TiXmlNode( TiXmlNode::TEXT ) { SetValue( initValue ); } - virtual ~TiXmlText() {} - - - // [internal use] Creates a new Element and returns it. - virtual TiXmlNode* Clone() const; - // [internal use] - virtual void Print( FILE* cfile, int depth ) const; - // [internal use] - virtual void StreamOut ( std::ostream* out ) const; - // [internal use] - bool Blank() const; // returns true if all white space and new lines - /* [internal use] - Attribtue parsing starts: First char of the text - returns: next char past '>' - */ - virtual const char* Parse( const char* p ); - // [internal use] - virtual void StreamIn( std::istream* in, std::string* tag ); -}; - - -/** In correct XML the declaration is the first entry in the file. - @verbatim - - @endverbatim - - TinyXml will happily read or write files without a declaration, - however. There are 3 possible attributes to the declaration: - version, encoding, and standalone. - - Note: In this version of the code, the attributes are - handled as special cases, not generic attributes, simply - because there can only be at most 3 and they are always the same. -*/ -class TiXmlDeclaration : public TiXmlNode -{ - public: - /// Construct an empty declaration. - TiXmlDeclaration() : TiXmlNode( TiXmlNode::DECLARATION ) {} - - /// Construct. - TiXmlDeclaration( const std::string& version, - const std::string& encoding, - const std::string& standalone ); - - virtual ~TiXmlDeclaration() {} - - /// Version. Will return empty if none was found. - const std::string& Version() const { return version; } - /// Encoding. Will return empty if none was found. - const std::string& Encoding() const { return encoding; } - /// Is this a standalone document? - const std::string& Standalone() const { return standalone; } - - // [internal use] Creates a new Element and returs it. - virtual TiXmlNode* Clone() const; - // [internal use] - virtual void Print( FILE* cfile, int depth ) const; - // [internal use] - virtual void StreamOut ( std::ostream* out ) const; - // [internal use] - virtual void StreamIn( std::istream* in, std::string* tag ); - - protected: - // [internal use] - // Attribtue parsing starts: next char past '<' - // returns: next char past '>' - - virtual const char* Parse( const char* p ); - - private: - std::string version; - std::string encoding; - std::string standalone; -}; - - -/** Any tag that tinyXml doesn't recognize is save as an - unknown. It is a tag of text, but should not be modified. - It will be written back to the XML, unchanged, when the file - is saved. -*/ -class TiXmlUnknown : public TiXmlNode -{ - public: - TiXmlUnknown() : TiXmlNode( TiXmlNode::UNKNOWN ) {} - virtual ~TiXmlUnknown() {} - - // [internal use] - virtual TiXmlNode* Clone() const; - // [internal use] - virtual void Print( FILE* cfile, int depth ) const; - // [internal use] - virtual void StreamOut ( std::ostream* out ) const; - // [internal use] - virtual void StreamIn( std::istream* in, std::string* tag ); - - protected: - /* [internal use] - Attribute parsing starts: First char of the text - returns: next char past '>' - */ - virtual const char* Parse( const char* p ); -}; - - -/** Always the top level node. A document binds together all the - XML pieces. It can be saved, loaded, and printed to the screen. - The 'value' of a document node is the xml file name. -*/ -class TiXmlDocument : public TiXmlNode -{ - public: - /// Create an empty document, that has no name. - TiXmlDocument(); - /// Create a document with a name. The name of the document is also the filename of the xml. - TiXmlDocument( const std::string& documentName ); - - virtual ~TiXmlDocument() {} - - /** Load a file using the current document value. - Returns true if successful. Will delete any existing - document data before loading. - */ - bool LoadFile(); - /// Save a file using the current document value. Returns true if successful. - bool SaveFile() const; - /// Load a file using the given filename. Returns true if successful. - bool LoadFile( const std::string& filename ); - /// Save a file using the given filename. Returns true if successful. - bool SaveFile( const std::string& filename ) const; - - /// Parse the given null terminated block of xml data. - virtual const char* Parse( const char* p ); - - /** Get the root element -- the only top level element -- of the document. - In well formed XML, there should only be one. TinyXml is tolerant of - multiple elements at the document level. - */ - TiXmlElement* RootElement() const { return FirstChildElement(); } - - /// If, during parsing, a error occurs, Error will be set to true. - bool Error() const { return error; } - - /// Contains a textual (english) description of the error if one occurs. - const std::string& ErrorDesc() const { return errorDesc; } - - /** Generally, you probably want the error string ( ErrorDesc() ). But if you - prefer the ErrorId, this function will fetch it. - */ - const int ErrorId() const { return errorId; } - - /// If you have handled the error, it can be reset with this call. - void ClearError() { error = false; errorId = 0; errorDesc = ""; } - - /** Dump the document to standard out. */ - void Print() const { Print( stdout, 0 ); } - - // [internal use] - virtual void Print( FILE* cfile, int depth = 0 ) const; - // [internal use] - virtual void StreamOut ( std::ostream* out ) const; - // [internal use] - virtual TiXmlNode* Clone() const; - // [internal use] - void SetError( int err ) { assert( err > 0 && err < TIXML_ERROR_STRING_COUNT ); - error = true; - errorId = err; - errorDesc = errorString[ errorId ]; } - // [internal use] - virtual void StreamIn( std::istream* in, std::string* tag ); - - protected: - - private: - bool error; - int errorId; - std::string errorDesc; -}; - - - -#endif - diff --git a/platform/win32/msvc/external/lame/ACM/tinyxml/tinyxmlerror.cpp b/platform/win32/msvc/external/lame/ACM/tinyxml/tinyxmlerror.cpp deleted file mode 100644 index 11b9486b010..00000000000 --- a/platform/win32/msvc/external/lame/ACM/tinyxml/tinyxmlerror.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include "tinyxml.h" - -// The goal of the seperate error file is to make the first -// step towards localization. tinyxml (currently) only supports -// latin-1, but at least the error messages could now be translated. -// -// It also cleans up the code a bit. -// - -const char* TiXmlBase::errorString[ TIXML_ERROR_STRING_COUNT ] = -{ - "No error", - "Error", - "Failed to open file", - "Memory allocation failed.", - "Error parsing Element.", - "Failed to read Element name", - "Error reading Element value.", - "Error reading Attributes.", - "Error: empty tag.", - "Error reading end tag.", - "Error parsing Unknown.", - "Error parsing Comment.", - "Error parsing Declaration.", - "Error document empty." -}; diff --git a/platform/win32/msvc/external/lame/ACM/tinyxml/tinyxmlparser.cpp b/platform/win32/msvc/external/lame/ACM/tinyxml/tinyxmlparser.cpp deleted file mode 100644 index ef9b0c124bb..00000000000 --- a/platform/win32/msvc/external/lame/ACM/tinyxml/tinyxmlparser.cpp +++ /dev/null @@ -1,928 +0,0 @@ -/* -Copyright (c) 2000-2002 Lee Thomason (www.grinninglizard.com) - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any -damages arising from the use of this software. - -Permission is granted to anyone to use this software for any -purpose, including commercial applications, and to alter it and -redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must -not claim that you wrote the original software. If you use this -software in a product, an acknowledgment in the product documentation -would be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and -must not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source -distribution. -*/ - -#include "tinyxml.h" -#include -#include -using namespace std; - -//#define DEBUG_PARSER - -TiXmlBase::Entity TiXmlBase::entity[ NUM_ENTITY ] = -{ - { "&", 5, '&' }, - { "<", 4, '<' }, - { ">", 4, '>' }, - { """, 6, '\"' }, - { "'", 6, '\'' } -}; - - -const char* TiXmlBase::SkipWhiteSpace( const char* p ) -{ - if ( !p || !*p ) - { - return 0; - } - while ( p && *p ) - { - if ( isspace( *p ) || *p == '\n' || *p =='\r' ) // Still using old rules for white space. - ++p; - else - break; - } - - return p; -} - - -/*static*/ bool TiXmlBase::StreamWhiteSpace( std::istream* in, std::string* tag ) -{ - for( ;; ) - { - if ( !in->good() ) return false; - - int c = in->peek(); - if ( !IsWhiteSpace( c ) ) - return true; - *tag += in->get(); - } -} - - -/*static*/ bool TiXmlBase::StreamTo( std::istream* in, int character, std::string* tag ) -{ - while ( in->good() ) - { - int c = in->peek(); - if ( c == character ) - return true; - - in->get(); - *tag += c; - } - return false; -} - - -const char* TiXmlBase::ReadName( const char* p, string* name ) -{ - *name = ""; - assert( p ); - - // Names start with letters or underscores. - // After that, they can be letters, underscores, numbers, - // hyphens, or colons. (Colons are valid ony for namespaces, - // but tinyxml can't tell namespaces from names.) - if ( p && *p - && ( isalpha( (unsigned char) *p ) || *p == '_' ) ) - { - while( p && *p - && ( isalnum( (unsigned char ) *p ) - || *p == '_' - || *p == '-' - || *p == ':' ) ) - { - (*name) += *p; - ++p; - } - return p; - } - return 0; -} - - -const char* TiXmlBase::GetEntity( const char* p, char* value ) -{ - // Presume an entity, and pull it out. - string ent; - int i; - - // Ignore the &#x entities. - if ( strncmp( "&#x", p, 3 ) == 0 ) - { - *value = *p; - return p+1; - } - - // Now try to match it. - for( i=0; iappend( &c, 1 ); - } - } - else - { - bool whitespace = false; - - // Remove leading white space: - p = SkipWhiteSpace( p ); - while ( p && *p - && !StringEqual( p, endTag, caseInsensitive ) ) - { - if ( *p == '\r' || *p == '\n' ) - { - whitespace = true; - ++p; - } - else if ( isspace( *p ) ) - { - whitespace = true; - ++p; - } - else - { - // If we've found whitespace, add it before the - // new character. Any whitespace just becomes a space. - if ( whitespace ) - { - text->append( " ", 1 ); - whitespace = false; - } - char c; - p = GetChar( p, &c ); - text->append( &c, 1 ); - } - } - } - return p + strlen( endTag ); -} - - -void TiXmlDocument::StreamIn( std::istream* in, std::string* tag ) -{ - // The basic issue with a document is that we don't know what we're - // streaming. Read something presumed to be a tag (and hope), then - // identify it, and call the appropriate stream method on the tag. - // - // This "pre-streaming" will never read the closing ">" so the - // sub-tag can orient itself. - - if ( !StreamTo( in, '<', tag ) ) - { - SetError( TIXML_ERROR_PARSING_EMPTY ); - return; - } - - while ( in->good() ) - { - int tagIndex = tag->length(); - while ( in->good() && in->peek() != '>' ) - { - int c = in->get(); - (*tag) += (char) c; - } - - if ( in->good() ) - { - // We now have something we presume to be a node of - // some sort. Identify it, and call the node to - // continue streaming. - TiXmlNode* node = Identify( tag->c_str() + tagIndex ); - - if ( node ) - { - node->StreamIn( in, tag ); - bool isElement = node->ToElement() != 0; - delete node; - node = 0; - - // If this is the root element, we're done. Parsing will be - // done by the >> operator. - if ( isElement ) - { - return; - } - } - else - { - SetError( TIXML_ERROR ); - return; - } - } - } - // We should have returned sooner. - SetError( TIXML_ERROR ); -} - - -const char* TiXmlDocument::Parse( const char* p ) -{ - // Parse away, at the document level. Since a document - // contains nothing but other tags, most of what happens - // here is skipping white space. - // - // In this variant (as opposed to stream and Parse) we - // read everything we can. - - - if ( !p || !*p || !( p = SkipWhiteSpace( p ) ) ) - { - SetError( TIXML_ERROR_DOCUMENT_EMPTY ); - return false; - } - - while ( p && *p ) - { - TiXmlNode* node = Identify( p ); - if ( node ) - { - p = node->Parse( p ); - LinkEndChild( node ); - } - else - { - break; - } - p = SkipWhiteSpace( p ); - } - // All is well. - return p; -} - - -TiXmlNode* TiXmlNode::Identify( const char* p ) -{ - TiXmlNode* returnNode = 0; - - p = SkipWhiteSpace( p ); - if( !p || !*p || *p != '<' ) - { - return 0; - } - - TiXmlDocument* doc = GetDocument(); - p = SkipWhiteSpace( p ); - - if ( !p || !*p ) - { - return 0; - } - - // What is this thing? - // - Elements start with a letter or underscore, but xml is reserved. - // - Comments: "; - - if ( !StringEqual( p, startTag, false ) ) - { - document->SetError( TIXML_ERROR_PARSING_COMMENT ); - return 0; - } - p += strlen( startTag ); - p = ReadText( p, &value, false, endTag, false ); - return p; -} - - -const char* TiXmlAttribute::Parse( const char* p ) -{ - p = SkipWhiteSpace( p ); - if ( !p || !*p ) return 0; - - // Read the name, the '=' and the value. - p = ReadName( p, &name ); - if ( !p || !*p ) - { - if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES ); - return 0; - } - p = SkipWhiteSpace( p ); - if ( !p || !*p || *p != '=' ) - { - if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES ); - return 0; - } - - ++p; // skip '=' - p = SkipWhiteSpace( p ); - if ( !p || !*p ) - { - if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES ); - return 0; - } - - const char* end; - - if ( *p == '\'' ) - { - ++p; - end = "\'"; - p = ReadText( p, &value, false, end, false ); - } - else if ( *p == '"' ) - { - ++p; - end = "\""; - p = ReadText( p, &value, false, end, false ); - } - else - { - // All attribute values should be in single or double quotes. - // But this is such a common error that the parser will try - // its best, even without them. - value = ""; - while ( p && *p // existence - && !isspace( *p ) && *p != '\n' && *p != '\r' // whitespace - && *p != '/' && *p != '>' ) // tag end - { - value += *p; - ++p; - } - } - return p; -} - - -void TiXmlText::StreamIn( std::istream* in, std::string* tag ) -{ - while ( in->good() ) - { - int c = in->peek(); - if ( c == '<' ) - return; - - (*tag) += c; - in->get(); - } -} - - - -const char* TiXmlText::Parse( const char* p ) -{ - value = ""; - - //TiXmlDocument* doc = GetDocument(); - bool ignoreWhite = true; -// if ( doc && !doc->IgnoreWhiteSpace() ) ignoreWhite = false; - - const char* end = "<"; - p = ReadText( p, &value, ignoreWhite, end, false ); - if ( p ) - return p-1; // don't truncate the '<' - return 0; -} - - -void TiXmlDeclaration::StreamIn( std::istream* in, std::string* tag ) -{ - while ( in->good() ) - { - int c = in->get(); - (*tag) += c; - - if ( c == '>' ) - { - // All is well. - return; - } - } -} - -const char* TiXmlDeclaration::Parse( const char* p ) -{ - p = SkipWhiteSpace( p ); - // Find the beginning, find the end, and look for - // the stuff in-between. - TiXmlDocument* document = GetDocument(); - if ( !p || !*p || !StringEqual( p, "SetError( TIXML_ERROR_PARSING_DECLARATION ); - return 0; - } - - p += 5; -// const char* start = p+5; -// const char* end = strstr( start, "?>" ); - - version = ""; - encoding = ""; - standalone = ""; - - while ( p && *p ) - { - if ( *p == '>' ) - { - ++p; - return p; - } - - p = SkipWhiteSpace( p ); - if ( StringEqual( p, "version", true ) ) - { -// p += 7; - TiXmlAttribute attrib; - p = attrib.Parse( p ); - version = attrib.Value(); - } - else if ( StringEqual( p, "encoding", true ) ) - { -// p += 8; - TiXmlAttribute attrib; - p = attrib.Parse( p ); - encoding = attrib.Value(); - } - else if ( StringEqual( p, "standalone", true ) ) - { -// p += 10; - TiXmlAttribute attrib; - p = attrib.Parse( p ); - standalone = attrib.Value(); - } - else - { - // Read over whatever it is. - while( p && *p && *p != '>' && !isspace( *p ) ) - ++p; - } - } - return 0; -} - -bool TiXmlText::Blank() const -{ - for ( unsigned i=0; i -#include -#include -using namespace std; - -int gPass = 0; -int gFail = 0; - -// Utility functions: -template< class T > -bool XmlTest( const char* testString, T expected, T found, bool noEcho = false ) -{ - if ( expected == found ) - cout << "[pass]"; - else - cout << "[fail]"; - - if ( noEcho ) - cout << " " << testString; - else - cout << " " << testString << " [" << expected << "][" << found << "]"; - cout << "\n"; - - bool pass = ( expected == found ); - if ( pass ) - ++gPass; - else - ++gFail; - return pass; -} - - -// -// This file demonstrates some basic functionality of TinyXml. -// Note that the example is very contrived. It presumes you know -// what is in the XML file. But it does test the basic operations, -// and show how to add and remove nodes. -// - -int main() -{ - // - // We start with the 'demoStart' todo list. Process it. And - // should hopefully end up with the todo list as illustrated. - // - const char* demoStart = - "\n" - "" - "\n" - "\n" - " Go to the Toy store!" - " Do bills " - " Look for Evil Dinosaurs! " - ""; - - /* What the todo list should look like after processing. - In stream (no formatting) representation. */ - const char* demoEnd = - "" - "" - "" - "" - "Go to the" - "Toy store!" - "" - "" - "Talk to:" - "" - "" - "" - "" - "" - "" - "Do bills" - "" - ""; - - // The example parses from the character string (above): - - { - // Write to a file and read it back, to check file I/O. - - TiXmlDocument doc( "demotest.xml" ); - doc.Parse( demoStart ); - - if ( doc.Error() ) - { - printf( "Error in %s: %s\n", doc.Value().c_str(), doc.ErrorDesc().c_str() ); - exit( 1 ); - } - doc.SaveFile(); - } - - TiXmlDocument doc( "demotest.xml" ); - bool loadOkay = doc.LoadFile(); - - if ( !loadOkay ) - { - printf( "Could not load test file 'demotest.xml'. Error='%s'. Exiting.\n", doc.ErrorDesc().c_str() ); - exit( 1 ); - } - - printf( "** Demo doc read from disk: ** \n\n" ); - doc.Print( stdout ); - - TiXmlNode* node = 0; - TiXmlElement* todoElement = 0; - TiXmlElement* itemElement = 0; - - - // -------------------------------------------------------- - // An example of changing existing attributes, and removing - // an element from the document. - // -------------------------------------------------------- - - // Get the "ToDo" element. - // It is a child of the document, and can be selected by name. - node = doc.FirstChild( "ToDo" ); - assert( node ); - todoElement = node->ToElement(); - assert( todoElement ); - - // Going to the toy store is now our second priority... - // So set the "priority" attribute of the first item in the list. - node = todoElement->FirstChildElement(); // This skips the "PDA" comment. - assert( node ); - itemElement = node->ToElement(); - assert( itemElement ); - itemElement->SetAttribute( "priority", 2 ); - - // Change the distance to "doing bills" from - // "none" to "here". It's the next sibling element. - itemElement = itemElement->NextSiblingElement(); - assert( itemElement ); - itemElement->SetAttribute( "distance", "here" ); - - // Remove the "Look for Evil Dinosours!" item. - // It is 1 more sibling away. We ask the parent to remove - // a particular child. - itemElement = itemElement->NextSiblingElement(); - todoElement->RemoveChild( itemElement ); - - itemElement = 0; - - // -------------------------------------------------------- - // What follows is an example of created elements and text - // nodes and adding them to the document. - // -------------------------------------------------------- - - // Add some meetings. - TiXmlElement item( "Item" ); - item.SetAttribute( "priority", "1" ); - item.SetAttribute( "distance", "far" ); - - TiXmlText text( "Talk to:" ); - - TiXmlElement meeting1( "Meeting" ); - meeting1.SetAttribute( "where", "School" ); - - TiXmlElement meeting2( "Meeting" ); - meeting2.SetAttribute( "where", "Lunch" ); - - TiXmlElement attendee1( "Attendee" ); - attendee1.SetAttribute( "name", "Marple" ); - attendee1.SetAttribute( "position", "teacher" ); - - TiXmlElement attendee2( "Attendee" ); - attendee2.SetAttribute( "name", "Vo‚" ); - attendee2.SetAttribute( "position", "counselor" ); - - // Assemble the nodes we've created: - meeting1.InsertEndChild( attendee1 ); - meeting1.InsertEndChild( attendee2 ); - - item.InsertEndChild( text ); - item.InsertEndChild( meeting1 ); - item.InsertEndChild( meeting2 ); - - // And add the node to the existing list after the first child. - node = todoElement->FirstChild( "Item" ); - assert( node ); - itemElement = node->ToElement(); - assert( itemElement ); - - todoElement->InsertAfterChild( itemElement, item ); - - printf( "\n** Demo doc processed: ** \n\n" ); - doc.Print( stdout ); - - printf( "** Demo doc processed to stream: ** \n\n" ); - cout << doc << endl << endl; - - // -------------------------------------------------------- - // Different tests...do we have what we expect? - // -------------------------------------------------------- - - int count = 0; - TiXmlElement* element; - - ////////////////////////////////////////////////////// - cout << "** Basic structure. **\n"; - ostringstream outputStream( ostringstream::out ); - outputStream << doc; - - XmlTest( "Output stream correct.", string( demoEnd ), outputStream.str(), true ); - - node = doc.RootElement(); - XmlTest( "Root element exists.", true, ( node != 0 && node->ToElement() ) ); - XmlTest( "Root element value is 'ToDo'.", string( "ToDo" ), node->Value() ); - node = node->FirstChild(); - XmlTest( "First child exists & is a comment.", true, ( node != 0 && node->ToComment() ) ); - node = node->NextSibling(); - XmlTest( "Sibling element exists & is an element.", true, ( node != 0 && node->ToElement() ) ); - XmlTest( "Value is 'Item'.", string( "Item" ), node->Value() ); - node = node->FirstChild(); - XmlTest( "First child exists.", true, ( node != 0 && node->ToText() ) ); - XmlTest( "Value is 'Go to the'.", string( "Go to the" ), node->Value() ); - - - ////////////////////////////////////////////////////// - cout << "\n** Iterators. **" << "\n"; - // Walk all the top level nodes of the document. - count = 0; - for( node = doc.FirstChild(); - node; - node = node->NextSibling() ) - { - count++; - } - XmlTest( "Top level nodes, using First / Next.", 3, count ); - - count = 0; - for( node = doc.LastChild(); - node; - node = node->PreviousSibling() ) - { - count++; - } - XmlTest( "Top level nodes, using Last / Previous.", 3, count ); - - // Walk all the top level nodes of the document, - // using a different sytax. - count = 0; - for( node = doc.IterateChildren( 0 ); - node; - node = doc.IterateChildren( node ) ) - { - count++; - } - XmlTest( "Top level nodes, using IterateChildren.", 3, count ); - - // Walk all the elements in a node. - count = 0; - for( element = todoElement->FirstChildElement(); - element; - element = element->NextSiblingElement() ) - { - count++; - } - XmlTest( "Children of the 'ToDo' element, using First / Next.", - 3, count ); - - // Walk all the elements in a node by value. - count = 0; - for( node = todoElement->FirstChild( "Item" ); - node; - node = node->NextSibling( "Item" ) ) - { - count++; - } - XmlTest( "'Item' children of the 'ToDo' element, using First/Next.", 3, count ); - - count = 0; - for( node = todoElement->LastChild( "Item" ); - node; - node = node->PreviousSibling( "Item" ) ) - { - count++; - } - XmlTest( "'Item' children of the 'ToDo' element, using Last/Previous.", 3, count ); - - - ////////////////////////////////////////////////////// - cout << "\n** Parsing. **\n"; - istringstream parse0( "" ); - TiXmlElement element0( "default" ); - parse0 >> element0; - - XmlTest( "Element parsed, value is 'Element0'.", string( "Element0" ), element0.Value() ); - XmlTest( "Reads attribute 'attribute0=\"foo0\"'.", string( "foo0" ), *( element0.Attribute( "attribute0" ) ) ); - XmlTest( "Reads incorrectly formatted 'attribute1=noquotes'.", string( "noquotes" ), *( element0.Attribute( "attribute1" ) ) ); - XmlTest( "Read attribute with entity value '>'.", string( ">" ), *( element0.Attribute( "attribute2" ) ) ); - - ////////////////////////////////////////////////////// - cout << "\n** Streaming. **\n"; - - // Round trip check: stream in, then stream back out to verify. The stream - // out has already been checked, above. We use the output - - istringstream inputStringStream( outputStream.str() ); - TiXmlDocument document0; - - inputStringStream >> document0; - - ostringstream outputStream0( ostringstream::out ); - outputStream0 << document0; - - XmlTest( "Stream round trip correct.", string( demoEnd ), outputStream0.str(), true ); - - ////////////////////////////////////////////////////// - cout << "\n** Parsing, no Condense Whitespace **\n"; - TiXmlBase::SetCondenseWhiteSpace( false ); - - istringstream parse1( "This is \ntext" ); - TiXmlElement text1( "text" ); - parse1 >> text1; - - XmlTest( "Condense white space OFF.", string( "This is \ntext" ), - text1.FirstChild()->Value(), - true ); - - cout << endl << "Pass " << gPass << ", Fail " << gFail << endl; - return 0; -} - diff --git a/platform/win32/msvc/external/lame/API b/platform/win32/msvc/external/lame/API deleted file mode 100644 index c850df53111..00000000000 --- a/platform/win32/msvc/external/lame/API +++ /dev/null @@ -1,107 +0,0 @@ -The LAME API - -This is the simple interface to the encoding part of libmp3lame.so. -The library also contains routines for adding id3 tags and -mp3 decoding. These routines are not fully documented, -but you can figure them out by looking at "include/lame.h" and the -example frontend encoder/decoder source code in frontend/main.c - -All of these steps should be done for every MP3 to be encoded. - - -========================================================================= - -1. (optional) Get the version number of the encoder, if you are interested. - void get_lame_version(char *strbuf, size_t buflen, const char *prefix); - - -2. Error messages. By default, LAME will write error messages to -stderr using vfprintf(). For GUI applications, this is often a problem -and you need to set your own error message handlers: - - lame_set_errorf(gfp,error_handler_function); - lame_set_debugf(gfp,error_handler_function); - lame_set_msgf(gfp,error_handler_function); - -See lame.h for details. - - -3. Initialize the encoder. sets default for all encoder parameters. - - #include "lame.h" - lame_global_flags *gfp; - gfp = lame_init(); - -The default (if you set nothing) is a J-Stereo, 44.1khz -128kbps CBR mp3 file at quality 5. Override various default settings -as necessary, for example: - - lame_set_num_channels(gfp,2); - lame_set_in_samplerate(gfp,44100); - lame_set_brate(gfp,128); - lame_set_mode(gfp,1); - lame_set_quality(gfp,2); /* 2=high 5 = medium 7=low */ - - -See lame.h for the complete list of options. Note that there are -some lame_set_*() calls not documented in lame.h. These functions -are experimental and for testing only. They may be removed in -the future. - - - -4. Set more internal configuration based on data provided above, - as well as checking for problems. Check that ret_code >= 0. - - ret_code = lame_init_params(gfp); - - - -5. Encode some data. input pcm data, output (maybe) mp3 frames. -This routine handles all buffering, resampling and filtering for you. -The required mp3buffer_size can be computed from num_samples, -samplerate and encoding rate, but here is a worst case estimate: -mp3buffer_size (in bytes) = 1.25*num_samples + 7200. -num_samples = the number of PCM samples in each channel. It is -not the sum of the number of samples in the L and R channels. - -The return code = number of bytes output in mp3buffer. This can be 0. -If it is <0, an error occured. - - int lame_encode_buffer(lame_global_flags *gfp, - short int leftpcm[], short int rightpcm[], - int num_samples,char *mp3buffer,int mp3buffer_size); - - -There are also routines for various types of input -(float, long, interleaved, etc). See lame.h for details. - - -6. lame_encode_flush will flush the buffers and may return a -final few mp3 frames. mp3buffer should be at least 7200 bytes. -return code = number of bytes output to mp3buffer. This can be 0. - -int lame_encode_flush(lame_global_flags *,char *mp3buffer, int mp3buffer_size); - - -7. Write the Xing VBR/INFO tag to mp3 file. - -void lame_mp3_tags_fid(lame_global_flags *,FILE* fid); - -This adds a valid mp3 frame which contains information about the -bitstream some players may find usefull. It is used for CBR,ABR and -VBR. The routine will attempt to rewind the output stream to the -beginning. If this is not possible, (for example, you are encoding to -stdout) you should specifically disable the tag by calling -lame_set_bWriteVbrTag(gfp,0) in step 3 above, and call -lame_mp3_tags_fid() with fid=NULL. If the rewind fails and -the tag was not disabled, the first mp3 frame in the bitstream -will be all 0's. - - - -8. free the internal data structures. - -void lame_close(lame_global_flags *); - - diff --git a/platform/win32/msvc/external/lame/COPYING b/platform/win32/msvc/external/lame/COPYING deleted file mode 100644 index f5030495bf6..00000000000 --- a/platform/win32/msvc/external/lame/COPYING +++ /dev/null @@ -1,481 +0,0 @@ - GNU LIBRARY GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 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. - -[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 - - 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. - - - Copyright (C) - - 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 - -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. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/platform/win32/msvc/external/lame/ChangeLog b/platform/win32/msvc/external/lame/ChangeLog deleted file mode 100644 index 498baeb62b3..00000000000 --- a/platform/win32/msvc/external/lame/ChangeLog +++ /dev/null @@ -1,39814 +0,0 @@ - - ChangeLog for LAME --==================- - - - All dates/times are in GMT. - - This file contains the complete changelog, even commit logs of - non official branches. An entry of the form "filename (branchname):" - may not apply to the source you get with this package. - - Generated from cvs log entries - (cvs2cl --gmt -S --branches --no-wrap --header ChangeLog.header) - --- - -2012-02-19 00:02 robert - - * libmp3lame/: gain_analysis.c, machine.h: - - rearranging gain analysis kernel table and calc loops to allow better code vectorization - -2012-02-18 13:08 robert - - * frontend/get_audio.c, frontend/lame_main.c, frontend/main.c, - frontend/parse.c, libmp3lame/mpglib_interface.c, mpglib/layer2.c: - - removing VC11 x86-64 compiler warnings - -2012-02-14 14:24 robert - - * libmp3lame/: VbrTag.c, bitstream.c, encoder.c, id3tag.c, lame.c, - machine.h, mpglib_interface.c, psymodel.c, util.c, util.h: - - some code refactorings - -2012-02-14 11:06 robert - - * ChangeLog, doc/html/history.html (lame3_99), ChangeLog, - doc/html/history.html: - - updating history/changelog - -2012-02-11 12:11 robert - - * frontend/get_audio.c: - - Bug fix for tracker item ID: 3486753 Artifacts at the beginning of decoded file - -2012-02-11 12:10 robert - - * mpglib/layer3.c: - - some hidden global temporary variable removed, could have been some multi threading issue - -2012-02-11 12:00 robert - - * frontend/get_audio.c (lame3_99): - - Bug fix for tracker item ID: 3486753 Artifacts at the beginning of decoded file - -2012-02-11 11:03 robert - - * mpglib/layer3.c (lame3_99): - - some hidden global temporary variable removed, could have been some multi threading issue - -2012-02-10 18:13 rbrito - - * config.h.in, configure.in: - - autotools: Fix compilation on alpha using proper ifdef guards. - - Thanks to Andres Mejia for the patch (with minor - whitespace adjustments). - -2012-02-10 18:11 rbrito - - * doc/html/history.html: - - doc: Correctly spell Fabian Greffrath's name to give proper credit. - -2012-02-10 18:06 rbrito - - * config.h.in, configure.in (lame3_99): - - autotools: Fix compilation on alpha using proper ifdef guards. - - Thanks to Andres Mejia for the patch (with minor - whitespace adjustments). - -2012-02-10 18:05 rbrito - - * doc/html/history.html (lame3_99): - - doc: Correctly spell Fabian Greffrath's name to give proper credit. - -2012-02-07 13:52 robert - - * configMS.h (lame3_99), configMS.h: - - reduce compiler warnings for SSE2 build with VC 11 - -2012-02-07 13:40 robert - - * configMS.h, frontend/parse.c, libmp3lame/l3side.h, - libmp3lame/machine.h, libmp3lame/quantize_pvt.c, - libmp3lame/vbrquantize.c, libmp3lame/version.h (lame3_99): - - - workaround for cygwin build problem - - fix "fast floating point math" problem (possible bitrate bloat on quiet pieces) - -2012-02-07 13:36 robert - - * configMS.h, libmp3lame/l3side.h, libmp3lame/machine.h, - libmp3lame/quantize_pvt.c, libmp3lame/vbrquantize.c: - - - workaround for cygwin build problem - - fix "fast floating point math" problem (possible bitrate bloat on quiet pieces) - -2012-01-25 13:01 robert - - * ChangeLog, doc/html/history.html: - - updating Changelog and History - -2012-01-25 12:47 robert - - * configure, configure.in, testcase.mp3 (lame3_99): - - Bug-fix release 3.99.4 - -2012-01-25 12:33 robert - - * ChangeLog, testcase.mp3, doc/html/history.html (lame3_99): - - updating history and changelog - -2012-01-19 14:27 robert - - * frontend/parse.c (lame3_99): - - fix for tracker item ID: 3475581 - lame crashes at .w64 input file - -2012-01-19 12:15 robert - - * frontend/parse.c: - - fix for tracker item ID: 3475581 - lame crashes at .w64 input file - -2012-01-08 23:49 robert - - * include/lame.h, libmp3lame/id3tag.c, libmp3lame/id3tag.h, - libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, - libmp3lame/util.c, libmp3lame/version.h (lame3_99), - include/lame.h, libmp3lame/id3tag.c, libmp3lame/id3tag.h, - libmp3lame/quantize_pvt.c, libmp3lame/util.c: - - Addressing things brought to attention by tracker item ID: 3463197: 3.99.x problem WFED and PCST frames - - + WFED and PCST frames can now be added, to tag podcasts iTunes recognizes - + USER frames are now supported - + COMM frames can now have a description, when passed via --tv "COMM==" - - - possible divide-by-zero exception should be fixed - - adding malformed user-defined-frames could result in abnormal program termination, fixed - -2011-12-04 12:35 robert - - * libmp3lame/: lame.rc (lame3_99), lame.rc: - - re tracker ID: 3449748 Incomplete resource definition file - A translation value seems to be mandatory by convention. - -2011-11-26 19:49 robert - - * ChangeLog, configure, configure.in (lame3_99): - - releasing 3.99.3 - -2011-11-26 18:26 robert - - * doc/html/history.html, libmp3lame/id3tag.c: - - bug fix for tracker item ID: 3441349: --tg does not handle genre number when adding unicode tag - -2011-11-26 18:15 robert - - * doc/html/history.html, libmp3lame/id3tag.c, libmp3lame/version.h - (lame3_99): - - bug fix for tracker item ID: 3441349: --tg does not handle genre number when adding unicode tag - -2011-11-18 09:51 robert - - * doc/html/history.html, libmp3lame/VbrTag.c, libmp3lame/version.c: - - merge with 3.99 branch modifications - -2011-11-18 09:39 robert - - * ChangeLog (lame3_99): - - releasing 3.99.2 - -2011-11-18 09:30 robert - - * configure, configure.in (lame3_99): - - releasing 3.99.2 stable - -2011-11-18 09:18 robert - - * testcase.mp3, doc/html/history.html, libmp3lame/VbrTag.c, - libmp3lame/version.c, libmp3lame/version.h (lame3_99): - - Due to some bugs in 3rd party HW/SW decoders, those were not - be able to make use of LAME's extended info tag anymore, - resulting in problems with things like gapless playback. - -2011-11-18 08:38 robert - - * frontend/: get_audio.c, get_audio.h, lame_main.c (lame3_99): - - copy old id3v2 tag - -2011-11-10 21:39 robert - - * libmp3lame/version.c (lame3_99): - - small fix - -2011-11-10 18:46 robert - - * libmp3lame/version.c: - - small fix - -2011-11-10 13:19 robert - - * frontend/: get_audio.c, get_audio.h, lame_main.c: - - when transcoding, copy old id3v2 tag. feature requests: - ID: 1985551 lame --pass-ID3-tags-unscathed - ID: 977304 ID3 tags lost when transcoding - -2011-11-09 00:15 robert - - * libmp3lame/: quantize.c, quantize_pvt.c: - - aiming for a more balanced bit reservoir usage - -2011-11-08 19:36 robert - - * libmp3lame/quantize_pvt.c: - - at lower sample rates, make a cut at last usable scalefactor band - -2011-11-08 18:19 robert - - * libmp3lame/quantize.c: - - 8kHz mpeg2.5 uses fewer scale factor bands. - -2011-11-06 18:34 robert - - * libmp3lame/encoder.c: - - use same meaning of PE in cbr and vbr modes - -2011-11-05 17:53 robert - - * configure, configure.in, doc/html/history.html, - libmp3lame/version.h: - - main-branch open for next development cycle - -2011-11-05 17:33 robert - - * ChangeLog, configure, configure.in (lame3_99): - - releasing 3.99.1 - -2011-11-05 17:00 robert - - * doc/html/history.html, libmp3lame/version.h (lame3_99): - - releasing 3.99.1 stable - -2011-11-05 16:32 robert - - * misc/: Makefile.am, Makefile.in: - - adding mk_mp3.sh to dist files - -2011-11-02 00:20 robert - - * Makefile.MSVC, libmp3lame/machine.h: - - fixing vc6 compile problem, VC6 seems to miss exporting some inline functions from math.h. - -2011-11-01 19:50 robert - - * libmp3lame/id3tag.c: - - oops, fixing writing unicode strings in id3tags - -2011-11-01 16:59 robert - - * doc/html/history.html, frontend/parse.c, libmp3lame/id3tag.c: - - Fixes for several issues with ID3v2 unicode tags, using Big-Endian text - encodings. Because of several other software (like Windows Media Player), - LAME writes Little-Endian unicode tags only. - Thanks to Taihei Monma, for reporting these issues. - Tracker items: [ 3431203, 3431222, 3431241 ] - -2011-10-18 21:54 robert - - * Dll/BladeMP3EncDLL.h: - - Fixing typedef HBE_STREAM, has to be a pointer type. - -2011-10-18 21:51 robert - - * libmp3lame/: lame.c, util.c: - - Fixing a small display problem for x64 platform - -2011-10-17 23:15 robert - - * libmp3lame/id3tag.c: - - bug fix: ID3 tags are always added - -2011-10-16 13:09 robert - - * frontend/: Makefile.am, Makefile.in: - - file rtp.h was missing in distribution list - -2011-10-15 15:46 robert - - * doc/html/history.html: - - Updating history - -2011-10-15 14:37 robert - - * ChangeLog: - - updating Changelog - -2011-10-15 14:31 robert - - * testcase.mp3, debian/Makefile.am, debian/Makefile.in, - doc/html/detailed.html, libmp3lame/version.h: - - preparing release - -2011-10-15 12:38 robert - - * misc/mk_mp3.sh: - - updating script for building mp3 collection from lossless archive - -2011-10-06 23:12 robert - - * ChangeLog: - - updating changelog - -2011-10-06 23:07 robert - - * frontend/: get_audio.c, parse.c: - - let iconv use transliteration - -2011-10-04 15:37 robert - - * frontend/parse.c: - - fixing compiler warning - -2011-10-04 11:42 robert - - * frontend/: get_audio.c, lame_main.c, main.h, parse.c: - - using our input file reading functions when reading from stdin - allow -s to overwrite input samplerate for non RAW input files too - -2011-10-03 13:28 robert - - * doc/html/history.html, frontend/lame_main.c: - - fix for tracker item ID: 3034259 Fix for confusing fatal error: can't update LAME-tag frame! - -2011-10-03 13:22 robert - - * libmp3lame/id3tag.c, frontend/parse.c: - - making sure, the id3v1 tags get filled - -2011-10-02 21:45 robert - - * doc/html/history.html, frontend/get_audio.c: - - Bug fix for tracker item ID: 3368977 Wave Parser doesn't pad chunks - -2011-10-02 18:39 robert - - * frontend/: portableio.c, portableio.h: - - removing portableio.[ch] files, not needed anymore - -2011-10-02 18:24 robert - - * frontend/parse.c, libmp3lame/id3tag.c: - - fixing some compiler warnings - -2011-10-02 17:13 robert - - * Makefile.MSVC, frontend/Makefile.am, frontend/Makefile.in, - frontend/get_audio.c, frontend/mp3rtp.c, Makefile.unix, - vc_solution/vc9_lame_lame.vcproj, - vc_solution/vc9_lame_mp3rtp.vcproj, - vc_solution/vc9_lame_mp3x.vcproj: - - replacing "portableio" by own code in get_audio.c - -2011-10-02 14:52 robert - - * doc/html/detailed.html, doc/man/lame.1, libmp3lame/id3tag.c, - frontend/main.c, frontend/main.h, frontend/parse.c, - include/lame.def, include/lame.h: - - clearify, unicode tags are utf-16 - -2011-09-28 19:11 robert - - * doc/html/history.html, libmp3lame/id3tag.c, frontend/parse.c, - vc_solution/vc9_lame.sln, vc_solution/vc9_lame_lame.vcproj, - vc_solution/vc9_lame_mp3rtp.vcproj, - vc_solution/vc9_lame_mp3x.vcproj, - vc_solution/vc9_libmp3lame.vcproj, - vc_solution/vc9_libmp3lame_dll.vcproj, - vc_solution/vc9_mpglib.vcproj: - - bug fix for tracker item 3395813: id3tag_set_fieldvalue for URL link frames Broken - - now one can add URL link frames to the ID3v2 tag, like: - --tv "WOAR=www.mypage.com" --tv "WXXX=get remixes here=www.dj.org" - -2011-09-25 17:08 robert - - * libmp3lame/version.h: - - increasing patch level - -2011-07-26 11:48 rbrito - - * frontend/parse.c: - - frontend: Update licensing message. - - Patch supplied by Andres Mejia according to previous - discussions in the mailing lists `lame-dev` and `pkg-multimedia-maintainers`. - - http://lists.alioth.debian.org/pipermail/pkg-multimedia-maintainers/2011-July/020417.html - -2011-06-17 06:22 aleidinger - - * Makefile.am.global: - - Remove ansi2knr part. It will be deprecated and subsequently removed from - automake. - - Notified by: Stefano Lattarini - -2011-05-24 20:45 robert - - * Makefile.unix, libmp3lame/psymodel.c, libmp3lame/quantize_pvt.c: - - small change in addition of simultaneous maskings - -2011-05-24 20:40 robert - - * mpglib/layer2.c: - - workaround for tracker item 3301963:"assertion failed in layer 2 decoding" - -2011-05-07 16:05 rbrito - - * README, Dll/BladeMP3EncDLL.c, Dll/BladeMP3EncDLL.h, - Dll/Example.cpp, debian/copyright, frontend/brhist.c, - frontend/brhist.h, frontend/get_audio.c, frontend/get_audio.h, - frontend/gpkplotting.c, frontend/gpkplotting.h, - frontend/gtkanal.c, frontend/gtkanal.h, frontend/lame_main.c, - frontend/lametime.c, frontend/lametime.h, frontend/main.c, - frontend/main.h, frontend/mp3rtp.c, frontend/parse.c, - frontend/rtp.c, frontend/rtp.h, frontend/timestatus.c, - frontend/timestatus.h, include/lame.h, libmp3lame/VbrTag.c, - libmp3lame/VbrTag.h, libmp3lame/bitstream.c, - libmp3lame/bitstream.h, libmp3lame/encoder.c, - libmp3lame/encoder.h, libmp3lame/fft.h, libmp3lame/id3tag.c, - libmp3lame/l3side.h, libmp3lame/lame-analysis.h, - libmp3lame/lame.c, libmp3lame/machine.h, - libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, - libmp3lame/newmdct.h, libmp3lame/presets.c, - libmp3lame/psymodel.c, libmp3lame/psymodel.h, - libmp3lame/quantize.c, libmp3lame/quantize.h, - libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, - libmp3lame/reservoir.c, libmp3lame/reservoir.h, - libmp3lame/set_get.c, libmp3lame/set_get.h, libmp3lame/tables.c, - libmp3lame/tables.h, libmp3lame/takehiro.c, libmp3lame/util.c, - libmp3lame/util.h, libmp3lame/vbrquantize.c, - libmp3lame/vbrquantize.h, libmp3lame/version.c, - libmp3lame/version.h, libmp3lame/vector/lame_intrin.h, - libmp3lame/vector/xmm_quantize_sub.c, test/lame_test.cpp: - - Make explicit that the licence is the Library GPLv2. - - According to Jonas Smedegaard, there is no Lesser GPLv2, only Lesser GPLv2.1. - - Thanks to Andres. - -2011-05-07 15:56 rbrito - - * frontend/parse.c: - - Fix some warnings in 64-bit arches. Changing s/size_t/unsigned int/ - - This should not be a problem with the variables in question, as they can't - be much larger than what an unsigned int is able to hold. - - Patch from: - - http://git.debian.org/?p=pkg-multimedia/lame.git;a=blob;f=debian/patches/07-field-width-fix.patch - - Sent by Andres. - -2011-05-07 15:44 rbrito - - * configure.in: - - Work round buggy softfloat optimization in ARM EABI compilers. - - A bug present in gcc-4.[123] up to 4.3.3 makes a buggy optimization - for single-precision floats when -ffinite-math-only (enabled by -ffast-math) - Refer to the following. - - https://sourceforge.net/tracker/index.php?func=detail&aid=2681646&group_id=290&atid=100290 - https://trac.xiph.org/ticket/1526 - http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39501 - - Thanks to Andres Mejia. This fixes SF bug 2681646. - -2011-05-07 15:35 rbrito - - * libmp3lame/i386/nasm.h: - - Disable executable patch. - - Patch from Russell Coker to disable executable stack from Christian - Marillat's packaging. Sent by Andres Mejia. - -2011-05-07 01:23 rbrito - - * README: - - Tweak slightly the disclaimer of patents from the README file. - - This change was proposed by me with suggestions made by Andres Mejia. - -2011-05-06 20:14 rbrito - - * libmp3lame/lame.c: - - libmp3lame: lame: Put some parentheses to shut up some static analysis tools. - - The statement - - frames_left -= ((frame_num != gfc->ov_enc.frame_number) ? 1 : 0); - - could probably be written as - - frames_left -= (frame_num != gfc->ov_enc.frame_number); - - unless we know of some platform where a boolean evaluation does not result - in a 1 in case of it being true. - -2011-05-06 19:59 rbrito - - * README: - - Remove problematic restriction to the LGPL, to make it legally OK. - - Also update the copyright years of the LAME team. - -2011-04-20 13:03 aleidinger - - * config.rpath: - - looks like this is needed now - -2011-04-20 12:52 aleidinger - - * aclocal.m4, Makefile.in, configure, ACM/Makefile.in, - ACM/ADbg/Makefile.in, ACM/ddk/Makefile.in, - ACM/tinyxml/Makefile.in, Dll/Makefile.in, debian/Makefile.in, - doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, - dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, - libmp3lame/vector/Makefile.in, mac/Makefile.in, - macosx/Makefile.in, macosx/English.lproj/Makefile.in, - macosx/LAME.xcodeproj/Makefile.in, misc/Makefile.in, - mpglib/Makefile.in, vc_solution/Makefile.in, config.h.in: - - regen - -2011-04-20 12:51 aleidinger - - * configure.in: - - - correct the VBR check message to something more correct (curses) - - check for libiconv and use it in the frontend - -2011-04-19 15:36 robert - - * doc/man/lame.1, frontend/parse.c: - - lame(1) manpage patch - ID: 3161674 - Typo in --longhelp - ID: 3288886 - replaced strnicmp, isn't portable - -2011-04-15 20:17 robert - - * libmp3lame/lame.c: - - Bug fix: when aborting an encode before any samples were fed into the encoder, an assert was falsely triggered. - -2011-04-14 20:48 robert - - * frontend/parse.c: - - Allow -Z switch in none alpha builds (for now) - -2011-04-14 19:36 robert - - * doc/html/history.html, frontend/parse.c, libmp3lame/presets.c, - libmp3lame/version.h: - - 3.99 beta phase - -2011-04-08 23:50 robert - - * misc/mk_mp3.sh: - - mk_mp3.sh - script to encode and tag CDs - -2011-04-08 22:55 robert - - * libmp3lame/psymodel.c: - - some code cleanup: unused vars, defines, etc. - -2011-04-08 19:26 robert - - * frontend/: lame_main.c, main.c, main.h: - - Unicode support for extra options passed via environment varialbe LAMEOPT - -2011-04-07 23:03 robert - - * frontend/get_audio.c: - - quick fix for tracker item 3277412: Segmentation fault at layer2.c:105 with - --decode - (problem sample contains multiple ID3v2 tags) - -2011-04-07 23:01 robert - - * libmp3lame/: psymodel.c, util.h: - - - some code cleanup - - calculate short block thm from long blocks, in case we eventually - may need it for pre-echo control of the next granule - -2011-04-05 19:17 jaz001 - - * doc/html/detailed.html: - - corrected spelling. - -2011-04-04 19:40 robert - - * libmp3lame/psymodel.c: - - small update for the pre-echo control - -2011-04-04 11:49 aleidinger - - * ChangeLog: - - Update upto now. - -2011-04-04 11:48 aleidinger - - * make_changelog.sh: - - Add the script to generate the changelog, not added to Makefile.am as it - does not make sense to distribute it. - - I keep the "cvs log" output in '../log_output', the script expects it there. - -2011-04-04 09:54 aleidinger - - * Makefile.in, config.h.in, configure, ACM/Makefile.in, - ACM/ADbg/Makefile.in, ACM/ddk/Makefile.in, - ACM/tinyxml/Makefile.in, Dll/Makefile.in, debian/Makefile.in, - doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, - dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, - libmp3lame/vector/Makefile.in, mac/Makefile.in, - macosx/Makefile.in, macosx/English.lproj/Makefile.in, - macosx/LAME.xcodeproj/Makefile.in, misc/Makefile.in, - mpglib/Makefile.in, vc_solution/Makefile.in: - - regen - -2011-04-04 09:51 aleidinger - - * aclocal.m4: - - regen - -2011-04-04 09:49 aleidinger - - * configure.in: - - - depend upon at least autoconf 2.68, this should fix the variable type - size check in configure on Windows (mingw) - - readd check for termcap lib (needed for brhist) - - remove float8 (requested by Robert Hegemann) - - my gcc moans about -march=generic not being supported (anymore), use - 'native' instead of 'generic' in one place - -2011-04-04 09:45 aleidinger - - * Makefile.am.global: - - Depend upon automake 1.11. - -2011-04-04 09:42 aleidinger - - * libmp3lame/i386/Makefile.am: - - Create the directory in any case, seems to prevent a race condition. - -2011-04-04 09:41 aleidinger - - * configMS.h: - - Remove superflous brhist define. - -2011-04-04 09:40 aleidinger - - * INSTALL: - - Remove superflous explication about brhist switch. - -2011-04-04 09:36 aleidinger - - * depcomp, install-sh, ltmain.sh, missing, frontend/depcomp, - libmp3lame/depcomp, misc/depcomp, mpglib/depcomp: - - Update files from automake 1.11 and libtool 2.2.10. - -2011-04-03 22:26 robert - - * libmp3lame/: psymodel.c, version.h: - - pre-echo control for short blocks is dependent on previous frame. - maybe we can relax it later, to speed-up things again. - -2011-03-25 19:57 robert - - * frontend/parse.c: - - dropping note about mpglib being GPL, because we use HIP for decoding. - -2011-03-24 20:19 robert - - * doc/html/detailed.html, doc/man/lame.1, frontend/parse.c, - libmp3lame/id3tag.c: - - new switches controlling the string encoding mode for ID3v2 tags: - --id3v2-latin1 turns on ID3v2 tags, text encoding ISO-8859-1 - --id3v2-ucs2 turns on ID3v2 only tags, text encoding UCS-2 - - Similar experimental switches removed. - -2011-03-24 10:25 robert - - * doc/html/history.html: - - fixing glitch in Joseph's name - -2011-03-24 10:21 robert - - * doc/html/history.html: - - updating history with info about latest changes - -2011-03-22 20:35 robert - - * ChangeLog, libmp3lame/version.h: - - updating ChangeLog - -2011-03-05 20:05 robert - - * libmp3lame/: presets.c, quantize_pvt.c: - - adapting some parameters for vbr-old/cbr/abr, because of the now used psy model - -2011-03-05 18:54 robert - - * libmp3lame/: encoder.c, presets.c, psymodel.c, quantize_pvt.c: - - now all modes use the same (latest) psy model - - code cleanup - -2011-03-05 14:06 robert - - * mpglib/layer3.c: - - fix for a possible out of bounds array access - - re ID: 3091776 crash at III_dequantize_sample - This bug may be fixed now, don't have original problem sample to be sure. - -2011-03-02 16:56 rbrito - - * debian/changelog: - - debian: Update changelog. - -2011-03-02 16:56 rbrito - - * debian/changelog: - - Put my SF email or we get warnings from lintian. - -2011-03-02 16:54 rbrito - - * debian/control: - - Verified that the packaging conforms to the Policy version 3.9.1 - -2011-03-02 16:54 rbrito - - * debian/control: - - Verified that the packaging conforms to the Policy version 3.9.0 - -2011-03-02 16:54 rbrito - - * debian/control: - - Remove unused Conflicts: and Replaces: fields. - - They were never part of any stable release and 3rd party sites were, - perhaps, faster than us in providing changed packages (when the packaging - was not up-to-date). - -2011-03-02 16:53 rbrito - - * debian/control: - - Verified that the packaging conforms to the Policy version 3.8.4 - -2011-03-02 16:53 rbrito - - * debian/control: - - Verified that the packaging conforms to the Policy version 3.8.3 - -2011-03-02 16:52 rbrito - - * debian/control: - - Verified that the packaging conforms to the Policy version 3.8.2 - -2011-03-02 16:52 rbrito - - * debian/control: - - Verified that the packaging conforms to the Policy version 3.8.1.0 - -2011-03-02 16:52 rbrito - - * debian/control: - - Fix lintian's debhelper-but-no-misc-depends from the binary packages. - -2011-03-02 16:51 rbrito - - * debian/changelog: - - Update debian/changelog. - -2011-03-02 16:50 rbrito - - * debian/control: - - debian/control: Change B-D on nasm to allow any i386 platform (no amd64, though). - -2011-03-02 16:50 rbrito - - * debian/control: - - debian/control: Rewrap the Build-Depends field for legibility. - - This also buys us some diff-friendliness. - -2011-03-02 16:48 rbrito - - * debian/: changelog, rules: - - debian: Transition to the debhelper 7 format. - - This format is easier to manage and other people should find it easy to - adapt to downstream necessities. - -2011-03-01 00:34 robert - - * testcase.mp3, libmp3lame/lame.c, libmp3lame/vbrquantize.c: - - - new VBR: mpeg2.5 at 8 kHz doesn't use some scalefactor bands - -2011-02-27 21:08 robert - - * libmp3lame/lame.c: - - small update for q_map - -2011-02-27 01:52 robert - - * libmp3lame/: lame.c, presets.c: - - last patch made manual lowpass setting impossable (for VBR) - -2011-02-27 00:52 robert - - * Makefile.unix, libmp3lame/lame.c, libmp3lame/presets.c, - libmp3lame/psymodel.c, libmp3lame/version.h: - - make use of resampling at lower VBR quality levels - -2011-02-22 19:00 robert - - * libmp3lame/: bitstream.c, encoder.c, lame.c, psymodel.c, - quantize.c, quantize_pvt.c, version.h: - - Starting to use newer VBR psy-model for CBR and ABR encoding too - - bug tracker ID: 3187397 - Strange compression behavior - -2011-02-22 17:58 robert - - * libmp3lame/: bitstream.c, lame.c, presets.c, psymodel.c, - quantize_pvt.c, version.c: - - some code cleanup - -2011-02-13 22:54 rbrito - - * frontend/brhist.c: - - frontend: remove unused variable and computation from brhist.c - -2011-02-13 16:36 robert - - * libmp3lame/: lame.c, quantize.c, quantize_pvt.c, version.h: - - make vbr_mt the default vbr mode - -2011-02-13 13:50 robert - - * frontend/parse.c, include/lame.h, libmp3lame/lame.c, - libmp3lame/presets.c, libmp3lame/set_get.c: - - new mono encoding switches: - -ml encodes left channel only - -mr encodes right channel only - -2011-02-12 16:16 robert - - * frontend/main.h, libmp3lame/presets.c, libmp3lame/vbrquantize.c: - - small fixes for compiler warnings - (vbrquantize.c) bug fix, out of bounds memory write - -2011-02-11 20:17 robert - - * libmp3lame/: lame.c, presets.c, psymodel.c, quantize.c, - vbrquantize.c, version.h: - - - reintroduction of fast encoding mode (-q7 / -f) (vbr_mt / vbr_mtrh) - - minor fix for sfb21 encoding (vbr_mt / vbr_mrth) - - small tunings - -2010-12-08 15:28 robert - - * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: - - fixing some compile issues when compiling as C++ code - - bug tracker ID: 3125235: make -f Makefile.mingw32 fails - -2010-12-05 12:25 robert - - * Dll/BladeMP3EncDLL.c: - - fixing some compile issues when compiling as C++ code - - bug tracker ID: 3125235: make -f Makefile.mingw32 fails - -2010-12-04 20:43 jaz001 - - * doc/html/detailed.html: - - spelling and better description on -b, -F and -t settings - -2010-12-04 13:30 robert - - * libmp3lame/gain_analysis.h: - - fixing some compile issues with strict compiler settings. - - bug tracker ID: 3025801: gain_analysis.h needs int constants - -2010-12-04 12:55 robert - - * Dll/BladeMP3EncDLL.c: - - fixing some compile issues with strict compiler settings. - - bug tracker ID: 3125235: make -f Makefile.mingw32 fails - -2010-12-03 19:46 jaz001 - - * doc/html/about.html: - - fixed listening tests URL. - -2010-11-21 20:45 jaz001 - - * doc/html/: detailed.html, usage.html: - - yet more small detail changes. - -2010-11-21 20:31 jaz001 - - * doc/html/detailed.html: - - more details about the q switch and the vbr-new/old - some formating changes - -2010-11-21 20:07 jaz001 - - * doc/html/: abr.html, cbr.html, detailed.html, usage.html: - - updates/fixes to the documentation. - -2010-10-30 13:21 robert - - * Makefile.am, Makefile.in, lame_vc8.sln, Dll/LameDll_vc8.vcproj, - Dll/Makefile.am, Dll/Makefile.in, frontend/Makefile.am, - frontend/Makefile.in, frontend/lame_vc8.vcproj, - frontend/mp3x_vc8.vcproj, libmp3lame/Makefile.am, - libmp3lame/Makefile.in, libmp3lame/libmp3lame_vc8.vcproj, - mpglib/Makefile.am, mpglib/Makefile.in, mpglib/mpglib_vc8.vcproj, - vc_solution/vc9_libmp3lame_dll.vcproj: - - VC8 no more - -2010-09-30 20:58 jaz001 - - * doc/html/: Makefile.am, Makefile.in: - - fixed the erroneous naming of files. (fixes: 3078255) - -2010-08-29 05:45 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - reduce table size by merging escHB[512](short) and escLen[512](char) into - escHBL[512](unsigned short). - -2010-08-29 05:16 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - move code to update bitstream position out of loop. - -2010-08-17 23:39 rbrito - - * README: - - Put a notice that Mark Taylor is not the current maintainer, but The - LAME team is. - -2010-08-17 23:36 rbrito - - * README: - - Update the URL to point to the Sourceforge webpage. - -2010-08-17 23:35 rbrito - - * README: - - Update the date of the README file. - -2010-08-17 23:34 rbrito - - * README: - - Cosmetic: delete trailing whitespaces. - -2010-08-17 23:32 rbrito - - * README: - - Remove duplicate copyright entry for Mark Taylor. - -2010-08-17 23:32 rbrito - - * README: - - Update copyright years of the LAME Project. - -2010-07-09 18:59 jaz001 - - * doc/html/: basic.html, examples.html, id3.html, lame.css, - modes.html, node6.html, switchs.html: - - delete old documentation - -2010-07-09 18:58 jaz001 - - * doc/html/detailed.html: - - added anchors to the descriptions, so that one can link to them with an URL. - Corrected a few errors. - -2010-06-11 17:44 jaz001 - - * doc/html/: Makefile.am, about.html, abr.html, cbr.html, - contact.html, contributors.html, detailed.html, index.html, - introduction.html, links.html, list.html, ms_stereo.html, - usage.html, vbr.html, images/logo.gif, images/valid-css.png, - images/valid-xhtml10.png, styles/lame.css: - - Initial commit of the new documentation. Makefile.in should be regenerated. - -2010-06-07 00:18 robert - - * libmp3lame/: presets.c, psymodel.c: - - something to try later - -2010-06-06 19:20 robert - - * frontend/rtp.c: - - fix compile problem on Linux system - -2010-06-06 01:04 robert - - * libmp3lame/: encoder.c, lame.c, lame_global_flags.h, presets.c, - psymodel.c, quantize.c, quantize_pvt.c, set_get.c, util.h, - version.h: - - some further tweaking of vbr new - -2010-06-01 21:55 robert - - * libmp3lame/: lame.c, presets.c, quantize.c, quantize_pvt.c, - quantize_pvt.h, util.h, version.h: - - more tuning on vbr_mt - -2010-06-01 18:51 robert - - * libmp3lame/: bitstream.c, lame.c: - - changing default buffer constraint for vbr_mt - -2010-06-01 16:21 robert - - * libmp3lame/lame.c: - - fixing some compiler warnings - -2010-06-01 15:59 robert - - * frontend/get_audio.c, frontend/get_audio.h, frontend/lametime.c, - frontend/lametime.h, libmp3lame/lame.c, libmp3lame/presets.c, - libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, - libmp3lame/util.c, libmp3lame/util.h, libmp3lame/version.h: - - some work on VBR scale tuning, accessible with --vbr-new - -2010-05-02 20:29 robert - - * frontend/get_audio.c, frontend/get_audio.h, frontend/gtkanal.c, - libmp3lame/lame.c, libmp3lame/presets.c, libmp3lame/util.c, - libmp3lame/version.h: - - work-in-progress: VBR scale tuning - -2010-04-29 00:29 robert - - * libmp3lame/lame.c, libmp3lame/presets.c, libmp3lame/psymodel.c, - libmp3lame/quantize.c, frontend/parse.c, - libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, - libmp3lame/util.h, libmp3lame/version.h: - - some work on VBR scale tuning, accessible with --vbr-new - -2010-04-15 10:44 robert - - * libmp3lame/: lame.c, VbrTag.c, util.h: - - - calculate input transform matrix once on initialization - - calculate clip detect even when scaling was set; else one doesn't notice that clipping still might happen. - -2010-04-14 09:38 robert - - * libmp3lame/i386/: Makefile.in (lame3_98), Makefile.in: - - Bug fix for tracker item ID: 2986823: Error when building Lame with NASM support -still exists - -2010-04-11 15:46 robert - - * Makefile.MSVC, libmp3lame/lame.rc, libmp3lame/set_get.h: - - adding version/icon resource to VC6 binary builds - -2010-04-11 13:07 robert - - * libmp3lame/lame.c, include/lame.def, include/lame.h: - - add encoding functions passing double precision pcm values ( +/- 1 fulll scale) - -2010-04-09 21:51 robert - - * doc/html/switchs.html, doc/man/lame.1, frontend/get_audio.c, - frontend/main.h, frontend/parse.c: - - - unicode filenames now working with libsndfile on MS-Windows - - presets use the default VBR engine, no need for extra parameter "fast" - -2010-04-08 11:07 robert - - * frontend/get_audio.c, frontend/get_audio.h, frontend/lame_main.c, - frontend/mp3rtp.c, frontend/mp3x.c, frontend/parse.c, - libmp3lame/id3tag.c, libmp3lame/version.h: - - enabling to read OGG Vorbis files via libsndfile - -2010-04-06 11:13 robert - - * libmp3lame/id3tag.c, frontend/lame_main.c, libmp3lame/lame.c, - frontend/get_audio.h, frontend/parse.c, include/lame.def, - include/lame.h: - - - preparing to use ieee float [-1,+1] as internal pcm sample representation in LAME frontend - - removing id3v2 picture size limit - - fixing id3v2 TXXX frame storage - -2010-03-23 11:22 robert - - * include/lame.h: - - small typo - -2010-03-22 23:12 robert - - * libmp3lame/: quantize.c, version.h: - - vbrnew: pad frame to build up bitrservoir - -2010-03-22 20:48 robert - - * ChangeLog (lame3_98): - - updating Changelog - -2010-03-22 20:28 robert - - * doc/html/: history.html (lame3_98), history.html: - - updating latest changes - -2010-03-22 20:25 robert - - * configure, configure.in (lame3_98): - - Update version number in preparation for release. - -2010-03-22 20:19 robert - - * doc/html/: history.html (lame3_98), history.html: - - updating latest changes - -2010-03-22 20:08 robert - - * dshow/: Mpegac.cpp, Mpegac.h, Property.rc, README (lame3_98): - - Joseph Flynn's direct show improvements - -2010-03-22 19:44 robert - - * vc_solution/vc9_mpglib.vcproj: - - adding header file to project - -2010-03-22 14:43 robert - - * mpglib/: README (lame3_98), AUTHORS, README: - - update licence information/header in decoder files - -2010-03-22 14:30 robert - - * mpglib/common.c (lame3_98), LICENSE, mpglib/Makefile.am, - mpglib/Makefile.in, mpglib/common.c, mpglib/common.h, - mpglib/dct64_i386.c, mpglib/dct64_i386.h, mpglib/decode_i386.c, - mpglib/decode_i386.h, mpglib/huffman.h, mpglib/interface.c, - mpglib/interface.h, mpglib/l2tables.h, mpglib/layer1.c, - mpglib/layer1.h, mpglib/layer2.c, mpglib/layer2.h, - mpglib/layer3.c, mpglib/layer3.h, mpglib/mpg123.h, - mpglib/mpglib.h, mpglib/tabinit.c, mpglib/tabinit.h: - - update licence information/header in decoder files - -2010-03-22 14:17 robert - - * mpglib/AUTHORS, mpglib/Makefile.am, mpglib/Makefile.in, - mpglib/common.c, mpglib/common.h, mpglib/dct64_i386.c, - mpglib/dct64_i386.h, mpglib/decode_i386.c, mpglib/decode_i386.h, - mpglib/huffman.h, mpglib/interface.c, mpglib/interface.h, - mpglib/l2tables.h, mpglib/layer1.c, mpglib/layer1.h, - mpglib/layer2.c, mpglib/layer2.h, mpglib/layer3.c, - mpglib/layer3.h, mpglib/mpg123.h, mpglib/mpglib.h, - mpglib/tabinit.c, mpglib/tabinit.h, LICENSE (lame3_98): - - update licence information/header in decoder files - -2010-03-22 11:49 robert - - * vc_solution/vc9_mpglib.vcproj (lame3_98): - - adding header file to project - -2010-03-21 22:22 robert - - * frontend/parse.c, libmp3lame/set_get.c, mpglib/common.c, - mpglib/layer3.c: - - minor changes - -2010-03-21 22:18 robert - - * libmp3lame/reservoir.c: - - Bug fix for tracker item ID: 2973877: A problem regarding the new drain code - -2010-03-21 12:34 robert - - * libmp3lame/version.h (lame3_98): - - Update version number in preparation for release. - -2010-03-21 12:28 robert - - * debian/: Makefile.am, Makefile.in (lame3_98): - - Bug fix for tracker item ID: 2964898: Missing debian/compat - -2010-03-21 12:15 robert - - * libmp3lame/util.c (lame3_98): - - Bug fix for tracker item ID 2963080: Missing #ifdef/#endif in util.c ? - -2010-03-21 12:11 robert - - * libmp3lame/reservoir.c (lame3_98): - - Bug fix for tracker item ID: 2973877: A problem regarding the new drain code - -2010-03-15 01:32 robert - - * frontend/gtkanal.c, vc_solution/vc9_lame.sln, - vc_solution/vc9_lame_mp3x.vcproj: - - it makes no sense, to link mp3x against libmp3lame.dll, because of strong dependencies between them. (pinfo struct) - -2010-03-15 01:07 robert - - * libmp3lame/bitstream.c, libmp3lame/lame.c, frontend/parse.c, - include/lame.def, include/lame.h, libmp3lame/VbrTag.c, - libmp3lame/tables.c, libmp3lame/tables.h, libmp3lame/util.c: - - access functions for bitrate and samplerate tables. exporting of global vars doesn't work well with DLLs. - -2010-03-14 22:47 robert - - * frontend/get_audio.c, frontend/lame_main.c, frontend/main.c, - frontend/main.h, frontend/parse.c, frontend/timestatus.c, - libmp3lame/set_get.h, vc_solution/vc9_lame.sln: - - some code refactorings - -2010-03-14 19:48 robert - - * frontend/timestatus.c, libmp3lame/lame.rc, - vc_solution/vc9_lame_mp3x.vcproj: - - adding resource file containing version and program icon to MP3x project - -2010-03-14 17:23 robert - - * Makefile.MSVC, Makefile.unix, configure.in, frontend/Makefile.am, - frontend/Makefile.in, frontend/brhist.c, frontend/lame_main.c, - frontend/timestatus.c, include/Makefile.am, - include/libmp3lame.sym, vc_solution/Makefile.am: - - BRHIST is mandatory - Layer1 and Layer2 decoding is mandatory - adding libmp3lame.sym file, to use with libtool, declares exported symbols - -2010-03-14 16:15 robert - - * frontend/mp3rtp.c, libmp3lame/set_get.c: - - fixing some compiler warnings - -2010-03-14 15:39 robert - - * testcase.mp3, frontend/main.c, frontend/timestatus.c, - libmp3lame/encoder.c, libmp3lame/psymodel.c, - libmp3lame/quantize.c, libmp3lame/set_get.c, libmp3lame/util.h: - - trying to get rid of remaining GCC compiler warnings - -2010-03-13 21:10 robert - - * Makefile.MSVC: - - additional target mp3rtp - -2010-03-13 20:45 robert - - * frontend/Makefile.am, frontend/lame_main.c, frontend/main.c, - Makefile.MSVC, Makefile.unix, frontend/Makefile.in, - frontend/lame_vc8.vcproj, frontend/mp3rtp.c, frontend/mp3x.c, - frontend/mp3x_vc8.vcproj, vc_solution/vc9_lame.sln, - vc_solution/vc9_lame_lame.vcproj, - vc_solution/vc9_lame_mp3rtp.vcproj, - vc_solution/vc9_lame_mp3x.vcproj: - - main.c is now entry point for all frontend programs - similar to mp3x and mp3rtp, there is now lame_main.c for lame - -2010-03-13 01:49 robert - - * doc/html/history.html: - - support for WAVE_FORMAT_IEEE_FLOAT - -2010-03-13 01:17 robert - - * frontend/get_audio.c: - - support for WAVE_FORMAT_IEEE_FLOAT (for reading via libsndfile) - -2010-03-12 14:00 robert - - * frontend/get_audio.c: - - support for WAVE_FORMAT_IEEE_FLOAT (for reading) - -2010-03-11 00:59 robert - - * frontend/console.c, frontend/get_audio.c, frontend/main.c, - frontend/main.h, frontend/mp3rtp.c, frontend/parse.c, - frontend/rtp.c, frontend/timestatus.c, include/lame.def, - include/lame.h, libmp3lame/id3tag.h: - - experimental unicode support on Windows OS - -2010-03-10 01:41 robert - - * frontend/: main.c, timestatus.c: - - Starting with Unicode support for LAME on Windows - -2010-03-10 00:43 robert - - * frontend/timestatus.c: - - small fix for time status display during encoding - -2010-03-10 00:35 robert - - * frontend/: get_audio.c, main.c, timestatus.c, timestatus.h: - - display of estimated number of frames should be more accurate now, even when re-encoding mp3->mp3 - -2010-03-09 00:03 robert - - * libmp3lame/set_get.c: - - calculation of totalframes more in line with current enc-delay+padding - -2010-03-08 00:17 robert - - * frontend/get_audio.c, frontend/main.c, frontend/timestatus.c, - libmp3lame/bitstream.c, libmp3lame/util.h: - - - reducing some warnings - - lame_get_totalframes still returns wrong estimate when re-encoding - -2010-03-07 21:14 robert - - * frontend/: get_audio.c, get_audio.h, main.c, mp3rtp.c, mp3x.c, - timestatus.c: - - some more code refactoring to clean up encoder/decoder loops - -2010-03-06 21:34 robert - - * doc/html/history.html: - - Bug fix for tracker item ID: 2962223: Encoder delay and padding values ignored when transcoding - -2010-03-06 21:30 robert - - * frontend/: get_audio.c, main.c: - - Bug fix for tracker item ID: 2962223: Encoder delay and padding values ignored when transcoding - -2010-03-06 02:15 robert - - * frontend/: get_audio.c, get_audio.h, main.c, parse.c: - - some code refactorings - -2010-03-05 02:01 robert - - * doc/html/history.html: - - updating history text - -2010-03-04 21:37 robert - - * frontend/rtp.c: - - cleanup some pre-processor code - -2010-03-04 20:03 robert - - * frontend/rtp.c: - - more work on mp3rtp - -2010-03-04 19:42 robert - - * frontend/: mp3rtp.c, rtp.c, rtp.h: - - more work on mp3rtp - should compile with VC9 and GCC now - -2010-03-04 16:38 robert - - * frontend/mp3rtp.c, include/lame.def, frontend/rtp.c, - frontend/rtp.h, vc_solution/vc9_lame.sln, - vc_solution/vc9_lame_mp3rtp.vcproj: - - mp3rtp compiles with VC9 now - -2010-03-04 09:32 robert - - * vc_solution/vc9_lame_mp3rtp.vcproj: - - adding mp3rtp project to VC solution - -2010-03-04 09:23 robert - - * vc_solution/vc9_lame.sln: - - adding mp3rtp project to VC solution - -2010-03-03 00:32 robert - - * mpglib/: layer3.c, mpglib.h: - - Eliminated some remaining global variable in layer3 decoder code. - -2010-03-02 01:21 robert - - * frontend/: brhist.h, console.h, get_audio.c, gtkanal.c, - lametime.h, main.c, main.h, mp3rtp.c, parse.c, parse.h, - portableio.h, timestatus.c, timestatus.h: - - some code refactoring - -2010-02-28 17:22 robert - - * ChangeLog: - - updating Changelog - -2010-02-28 16:52 robert - - * libmp3lame/bitstream.c: - - For free format mp3 above 320 kbps, the maximum allowed bits was limited too far. - -2010-02-27 03:57 robert - - * dshow/: dshow.dsp, dshow.dsw (lame3_98): - - Fixing line ending problem in VC project files, when checked out via make dist. - -2010-02-27 03:18 robert - - * doc/html/history.html: - - updating history text - -2010-02-27 02:58 robert - - * ChangeLog (lame3_98): - - updating Changelog - -2010-02-27 02:51 robert - - * doc/html/history.html (lame3_98): - - updating history text - -2010-02-26 23:23 robert - - * Dll/: Example_vc6.dsp, LameDll_vc6.dsp (lame3_98): - - Bug fix for tracker ID: 2688413 - lib name problem in VS6 - -2010-02-26 22:59 robert - - * dshow/dshow.dsw (lame3_98): - - seems dshow workspace got messed up some time ago - -2010-02-26 22:33 robert - - * Makefile.am, Makefile.in (lame3_98): - - add some missing files used by "make dist" to the configure magic - -2010-02-26 22:24 robert - - * libmp3lame/: Makefile.in, Makefile.am (lame3_98): - - add some missing files used by "make dist" to the configure magic - -2010-02-26 03:40 robert - - * include/Makefile.am, include/Makefile.in, libmp3lame/Makefile.am, - libmp3lame/Makefile.in, libmp3lame/lame.rc (lame3_98): - - adding some files missing after "make dist" - -2010-02-26 03:04 robert - - * Makefile.in (lame3_98): - - adding vc_solution path to configure magic - -2010-02-26 02:49 robert - - * configure, mpglib/Makefile.in (lame3_98): - - adding vc_solution path to configure magic - -2010-02-26 01:59 robert - - * Makefile.am, configure.in (lame3_98): - - adding vc_solution dir, used for "make dist" - -2010-02-26 01:56 robert - - * vc_solution/: Makefile.am, Makefile.in (lame3_98): - - initial check in, used by "make dist" - -2010-02-26 00:55 robert - - * libmp3lame/i386/: Makefile.am (lame3_98), Makefile.am: - - Tracker item ID: 2807676: - Error when building Lame with NASM support - - Patch reported by Bernhard Doebler. - -2010-02-25 23:33 robert - - * testcase.mp3 (lame3_98): - - updating testcase for 3.98.3 - -2010-02-24 08:54 rbrito - - * debian/: changelog, control, copyright, rules (lame3_98): - - Update the debian packaging for the new release. - -2010-02-20 21:19 robert - - * test/lame_test.cpp, vc_solution/vc9_lame_clients.sln, - vc_solution/vc9_lame_test.vcproj: - - adding some small LAME test project. - -2010-02-20 21:08 robert - - * libmp3lame/: lame.c (lame3_98), lame.c: - - Bug fix for tracker ID: 2824296 - wrong enc_padding value in LAME 3.99a & 3.98.3 (from CVS) - -2010-02-20 21:01 robert - - * libmp3lame/VbrTag.c (lame3_98): - - Bug fix for tracker ID: 2872590 - LameTAG: "Music length" missmatch in Lame3.98 - -2010-02-20 20:58 robert - - * libmp3lame/VbrTag.c: - - Bug fix for tracker ID: 2872590 - LameTAG: "Music length" missmatch in Lame3.98 - -2010-02-19 00:44 robert - - * libmp3lame/: id3tag.c (lame3_98), id3tag.c: - - Bug fix for tracker ID: 2887359 - Wrong length in ID3v2 tag when num_samples isn't set - -2010-02-19 00:30 robert - - * Dll/: BladeMP3EncDLL.c (lame3_98), BladeMP3EncDLL.c: - - Bug fix for tracker ID: 2893101 - Access Violation in BladeMP3EncDLL if UNICODE was defined. - -2010-02-19 00:03 robert - - * doc/man/: lame.1 (lame3_98), lame.1: - - Bug fix for tracker ID: 2928684 - Error in man page about "fast insane" - -2010-02-18 22:42 robert - - * libmp3lame/reservoir.c (lame3_98): - - Revisiting the FhG decoder problem (FhG V1.5 build 50, ships with MS Windows): - enabling the new drain code seems to solve that issue better, than restricting the buffer size. - -2010-02-13 23:21 robert - - * frontend/brhist.c, frontend/console.h, frontend/get_audio.c, - frontend/parse.c, frontend/timestatus.c, include/lame.h, - libmp3lame/bitstream.c, libmp3lame/bitstream.h, - libmp3lame/lame.c, libmp3lame/reservoir.c, libmp3lame/version.h: - - Revisiting the FhG decoder problem (FhG V1.5 build 50, ships with MS Windows): - enabling the new drain code seems to solve that issue better, than restricting the buffer size. - -2010-02-06 23:01 robert - - * frontend/parse.c, include/lame.h, libmp3lame/lame.c, - libmp3lame/reservoir.c, libmp3lame/set_get.c, libmp3lame/util.h: - - added new switch for control buffer constraint - -2009-12-12 15:28 robert - - * frontend/console.c: - - increasing size of term_buff array, it might have become too small by now - -2009-12-11 23:19 robert - - * libmp3lame/util.c: - - small issue,: if-def out hip functions, when not using decode-on-the-fly - -2009-12-11 22:44 robert - - * frontend/parse.c (lame3_98): - - Tracker ID: 2891879 - Because of Windows API change, there was a problem with prority switch. Should work again. - -2009-12-11 22:30 robert - - * frontend/parse.c: - - Tracker ID: 2891879 - Because of Windows API change, there was a problem with prority switch. Should work again. - -2009-11-22 22:29 rbrito - - * debian/rules: - - Enable the frontend to be dynamically linked to libmp3lame. - -2009-11-22 22:09 rbrito - - * debian/lame.doc-base: - - Fix correct section of doc-base. - -2009-11-22 21:27 rbrito - - * debian/changelog: - - Consolidate changelog entries. - -2009-11-22 21:18 rbrito - - * debian/source/format: - - Part of migration to new format (3.0 quilt) of Debian packages. - -2009-09-17 06:42 rbrito - - * debian/lame.doc-base: - - Update the section field. - -2009-09-17 05:54 rbrito - - * debian/lame.doc-base: - - Include Debian's doc-base configuration. - -2009-05-16 10:20 rbrito - - * debian/rules: - - Revert cleaning of files in the debian/rules file. - -2009-05-16 10:19 rbrito - - * debian/: Makefile.am, rules: - - Update the list of files in Makefile.am - -2009-05-15 23:09 robert - - * mpglib/: interface.c, layer1.c, layer1.h, layer2.c, layer2.h, - layer3.c, layer3.h: - - trying to handle the case, when audio data exceeds frame size - -2009-05-15 23:05 robert - - * libmp3lame/: bitstream.c, lame.c: - - starting to demangle bitstream buffer handling from postprocessing features like "clip detect" and "replaygain". - -2009-05-10 22:08 jwflynn1 - - * dshow/Mpegac.h: - - minor correction - -2009-05-10 22:06 jwflynn1 - - * dshow/Mpegac.cpp: - - Allocator buffer count on the output pin had been hardcoded to 1. This was changed so that it will now attempt to use the buffer count suggested by the downstream filter or default to 1 if none is specified. - -2009-05-02 13:45 rbrito - - * debian/: lame.files, libmp3lame0-dev.docs, libmp3lame0-dev.files, - libmp3lame0.files: - - Remove obsolete files. We need to fix the auto* files to use the new files. - -2009-05-02 13:44 rbrito - - * debian/: changelog, compat, control, lame.install, - libmp3lame-dev.install, libmp3lame0.install, rules: - - Update Debian/Ubuntu packaging. Add new files. - -2009-04-20 21:47 robert - - * frontend/parse.c, frontend/portableio.c, mpglib/common.c, - mpglib/common.h, mpglib/layer1.c, mpglib/layer2.c, - vc_solution/vc9_lame_config.vsprops, frontend/console.c, - frontend/get_audio.c, frontend/main.c, libmp3lame/fft.c: - - fixing some more compiler warnings - -2009-04-20 05:39 rbrito - - * debian/: changelog, control, copyright, rules, watch: - - Updating the Debian packaging and doing some investigation regarding symbols. - -2009-04-19 22:17 robert - - * libmp3lame/id3tag.c, libmp3lame/takehiro.c, mpglib/layer1.c: - - reducing compiler warnings - -2009-04-19 18:10 robert - - * mpglib/: interface.c, layer2.c: - - Starting to fix decoding bugs. - -2009-04-18 18:33 robert - - * libmp3lame/lame.rc, mpglib/interface.c, mpglib/layer1.c, - mpglib/layer2.c, mpglib/mpg123.h: - - Starting to fix decoding bugs. - -2009-04-17 22:21 robert - - * frontend/console.c, frontend/console.h, frontend/get_audio.c, - frontend/main.c, frontend/parse.c, frontend/timestatus.c, - libmp3lame/lame.c, libmp3lame/util.c, libmp3lame/util.h, - mpglib/interface.c, mpglib/mpglib.h: - - commandline option 'quiet' should suppress any message now - -2009-04-17 11:24 robert - - * frontend/get_audio.c, include/lame.h, libmp3lame/lame.c, - libmp3lame/mpglib_interface.c, libmp3lame/util.c, - libmp3lame/util.h, mpglib/common.c, mpglib/common.h, - mpglib/interface.c, mpglib/layer3.c, mpglib/mpglib.h: - - replaced fprintf calls by lame reporting function calls. this allows to silence decoder. (it used to spit out error messages to stderr) - -2009-04-11 16:04 jwflynn1 - - * dshow/README: - - [no log message] - -2009-04-11 15:59 jwflynn1 - - * dshow/Mpegac.cpp: - - - Added support for the DirectShow IAMStreamConfig Interface to the LAME encoder filter output pin. - - - Modified the DirectShow filter registration section so that the LAME Encoder filter is correctly registered in the Audio Compressors filter category. This will allow third-party encoding applications using the DirectShow System Device Enumerator Interface to correctly detect the LAME encoder when querying the Audio Compressors filter group. - - - Modified the filter registration information so that the MP3 audio subtype is correctly reported as being supported on the encoder output pin. This will allow third-party encoding applications using the DirectShow IFilterMapper2 Interface to recognize that the LAME encoder supports MP3 output. - - - Altered the Filter Merit Value that was being used when the filter was registered so that it is now using the standard DirectShow compressor filter merit value of MERIT_DO_NOT_USE (0x200000). Previously, the filter was being registered using a value of MERIT_SW_COMPRESSOR (0x100000), which was at a lower priority (i.e. worse priority) than MERIT_DO_NOT_USE. This prevented the LAME Encoder filter from being selected for use by some third-party encoding applications. - - - Added code to calculate the frame length of the audio frames used for the nBlockSize element of the WAVEFORMATEX output structure. Previously this value was simply hard-coded to 1. - -2009-04-11 15:51 jwflynn1 - - * dshow/Mpegac.h: - - Added support for the DirectShow IAMStreamConfig Interface - -2009-04-11 15:47 jwflynn1 - - * dshow/Property.rc: - - Updated the embedded "FileVersion" and "ProductVersion" fields - -2009-03-31 22:37 robert - - * libmp3lame/: util.c, util.h (lame3_98), util.c, util.h: - - fix for tracker item 2723518: resampling in 3.98 and 3.99alpha - -2009-03-30 19:48 robert - - * libmp3lame/lame.c (lame3_98): - - ensure we padd at least 288 samples - -2009-03-30 14:38 robert - - * libmp3lame/lame.c: - - ensure we pad with 288 samples at least - -2009-03-30 13:42 robert - - * frontend/: main.c, main.h, parse.c: - - commandline option "--swap-channel" added, as requested. see item: 1118412 - -2009-03-29 18:28 robert - - * libmp3lame/psymodel.c: - - take away sandpaper safety margin for lower samplerates. - It seems samplerates which have convolution bands containing single lines are affected only (at least I don't have any testcase for lower samplerates to justify the safety margin right now) - -2009-03-29 17:35 robert - - * libmp3lame/: lame.c, util.c, util.h: - - workaround for FFMPEG bug, which uses to call lame_encode_flush more than once in loop - -2009-03-29 14:43 robert - - * libmp3lame/lame.c (lame3_98): - - workaround for FFMPEG bug, which uses to call lame_encode_flush more than once in loop - -2009-03-28 22:09 robert - - * libmp3lame/lame.c (lame3_98): - - avoid extra frame at end - -2009-03-02 23:27 robert - - * libmp3lame/VbrTag.c: - - GetVbrTag only works for Layer3, so ignore it when Layer1 or 2. - -2009-02-14 21:59 robert - - * Makefile.unix: - - adding CFG=RH_INTEL for Intel C(++) compiler setup - -2009-02-13 15:03 robert - - * libmp3lame/fft.c, libmp3lame/vector/xmm_quantize_sub.c, - vc_solution/vc9_libmp3lame.vcproj: - - fix crash in VC9 Release Build - -2009-02-13 03:47 robert - - * libmp3lame/takehiro.c, vc_solution/arch_sse2.vsprops, - libmp3lame/fft.c, libmp3lame/quantize.c: - - small changes - -2009-02-12 14:31 robert - - * libmp3lame/: quantize.c, takehiro.c, vector/xmm_quantize_sub.c: - - some tiny changes - -2009-02-12 11:35 robert - - * libmp3lame/fft.c, libmp3lame/vector/lame_intrin.h, - libmp3lame/vector/xmm_quantize_sub.c, - vc_solution/arch_sse2.vsprops: - - first try to add fht using SSE intrinsics - -2009-02-11 00:22 robert - - * vc_solution/vc9_lame_config.vsprops: - - adding configuration for SSE2 target architectures - -2009-02-07 11:18 robert - - * Dll/: Makefile.mingw32 (lame3_98), Makefile.mingw32: - - applying patch from item tracker: [ 2406420 ] compile lame_enc.dll under cygwin - -2009-02-07 00:44 robert - - * libmp3lame/: id3tag.c, vector/xmm_quantize_sub.c: - - small changes - -2009-02-06 23:27 robert - - * libmp3lame/id3tag.c: - - silence some GCC compiler warning - -2009-02-06 23:26 robert - - * libmp3lame/: VbrTag.c, lame.c: - - bug-fix: low bitrate CBR incorrectly tried to write LAME-Tag; var inconsistency - -2009-02-06 23:22 robert - - * libmp3lame/vector/xmm_quantize_sub.c: - - - fix compiler warning about strict-aliasing problem - - fix possible use of uninitialized vars - -2009-02-06 23:20 robert - - * Makefile.unix: - - adding work-configuration for SSE2 optimization under SuSE 32bit - -2009-02-06 00:21 robert - - * vc_solution/: arch_nasm.vsprops, arch_sse2.vsprops, - arch_x87.vsprops, vc9_lame_lame.vcproj, vc9_lame_mp3x.vcproj, - vc9_libmp3lame.vcproj, vc9_libmp3lame_dll.vcproj, - vc9_mpglib.vcproj: - - adding configuration for SSE2 target architectures - -2009-02-06 00:16 robert - - * configMS.h, libmp3lame/vbrquantize.c, vc_solution/vc9_lame.sln, - vc_solution/vc9_lame_lame.vcproj, - vc_solution/vc9_lame_mp3x.vcproj, - vc_solution/vc9_libmp3lame.vcproj, - vc_solution/vc9_libmp3lame_dll.vcproj, - vc_solution/vc9_mpglib.vcproj: - - adding configuration for SSE2 target architectures - -2009-01-18 15:57 robert - - * frontend/get_audio.c, frontend/gtkanal.c, frontend/lametime.c, - frontend/main.c, libmp3lame/bitstream.c, libmp3lame/lame.c, - libmp3lame/psymodel.c, libmp3lame/quantize_pvt.c, - libmp3lame/vector/xmm_quantize_sub.c, mpglib/interface.c, - mpglib/mpglib.h: - - replacing C++ style comments by C style comments - -2009-01-18 15:44 robert - - * libmp3lame/bitstream.c, libmp3lame/lame.c, libmp3lame/psymodel.c, - frontend/get_audio.c, frontend/gtkanal.c, frontend/lametime.c, - frontend/main.c, include/lame.h, libmp3lame/quantize_pvt.c, - libmp3lame/vector/xmm_quantize_sub.c, mpglib/interface.c, - mpglib/mpglib.h (lame3_98): - - replacing C++ style comments by C style comments - -2009-01-18 13:59 robert - - * doc/: html/switchs.html, man/lame.1 (lame3_98), - html/switchs.html, man/lame.1: - - fix for bug tracker item [ 2051870 ] documentation clarifications - -2009-01-18 13:10 robert - - * doc/man/: lame.1 (lame3_98), lame.1: - - fix for bug tracker item 2423650 - -2008-12-26 11:58 robert - - * libmp3lame/: presets.c, psymodel.c: - - disabling testcode - -2008-12-02 03:23 robert - - * libmp3lame/: presets.c, psymodel.c: - - testing some low quality tuning (VBR-new only) - -2008-11-30 00:20 robert - - * Makefile.unix, libmp3lame/presets.c, libmp3lame/psymodel.c: - - testing some different short block switching and change in masking tonal - samples (VBR-NEW only) - -2008-11-09 14:14 robert - - * vc_solution/Makefile.in (lame3_98): - - file Makefile.in was added on branch lame3_98 on 2010-02-26 01:56:52 +0000 - -2008-11-09 14:13 aleidinger - - * ACM/Makefile.in, ACM/ADbg/Makefile.in, ACM/ddk/Makefile.in, - ACM/tinyxml/Makefile.in, Dll/Makefile.in, debian/Makefile.in, - doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, - dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, - libmp3lame/i386/Makefile.in, libmp3lame/vector/Makefile.in, - mac/Makefile.in, macosx/English.lproj/Makefile.in, Makefile.in, - libmp3lame/Makefile.in, macosx/LAME.xcodeproj/Makefile.in, - misc/Makefile.in, mpglib/Makefile.in, vc_solution/Makefile.in, - macosx/Makefile.in: - - regen - -2008-11-09 14:11 aleidinger - - * config.h.in, aclocal.m4, configure: - - regen (with autoconf 2.62) - -2008-11-09 14:10 aleidinger - - * libmp3lame/Makefile.am: - - Add missing files, remove deleted ones. - -2008-11-09 14:06 robert - - * vc_solution/Makefile.am (lame3_98): - - file Makefile.am was added on branch lame3_98 on 2010-02-26 01:56:52 +0000 - -2008-11-09 14:06 aleidinger - - * vc_solution/Makefile.am: - - Add missing automake Makefile. - -2008-11-09 14:05 aleidinger - - * configure.in: - - Add possibility to build frontends with dynamic libmp3lame. - -2008-11-09 14:00 aleidinger - - * frontend/Makefile.am: - - Remove -static in preparation for corresponding configure option. - -2008-11-09 13:56 aleidinger - - * ltmain.sh: - - Update to version from libtool 1.5.26. - -2008-11-09 13:50 aleidinger - - * Makefile.am, ACM/Makefile.am, ACM/ADbg/Makefile.am, - ACM/tinyxml/Makefile.am, Dll/Makefile.am, debian/Makefile.am, - dshow/Makefile.am, frontend/Makefile.am, include/Makefile.am, - libmp3lame/i386/Makefile.am, mpglib/Makefile.am: - - Add files which are new, and remove deleted ones. - -2008-11-06 07:10 rbrito - - * doc/html/history.html: - - Update history file with my changes. - -2008-11-06 06:56 rbrito - - * debian/rules: - - Actually remove the rpath issue part. - -2008-11-06 06:55 rbrito - - * debian/: changelog, control: - - Include suggestions of Fabian on the packaging. - Clean up the packaging a bit. - Update the mainline version package. - -2008-11-02 15:26 robert - - * libmp3lame/: quantize_pvt.c, version.h: - - start of 3.99 development cycle: - - demangling "calc_xmin" - -2008-11-01 21:39 robert - - * ACM/lameACM_vc7.vcproj, ACM/ADbg/ADbg_vc7.vcproj, - ACM/tinyxml/tinyxml_vc7.vcproj, dshow/Mpegac.cpp, dshow/REG.CPP, - dshow/REG.H, dshow/aboutprp.cpp: - - - Name clash with our CRegKey class and ATL::CRegKey class solved by putting ours in namespace Lame. - -2008-11-01 21:21 robert - - * vc_solution/: vc9_lame_acm.vcproj, vc9_lame_acm_adbg.vcproj, - vc9_lame_acm_tinyxml.vcproj, vc9_lame_dll.vcproj, - vc9_lame_dll_example.vcproj, vc9_lame_dshow.vcproj, - vc9_lame_lame.vcproj, vc9_lame_mp3x.vcproj, - vc9_libmp3lame.vcproj, vc9_libmp3lame_dll.vcproj, - vc9_mpglib.vcproj: - - moving common VS projects settings into own property page - -2008-11-01 20:41 robert - - * ACM/ACM.cpp, ACM/ACMStream.cpp, ACM/AEncodeProperties.cpp, - ACM/lameACM.def, dshow/Mpegac.cpp, dshow/aboutprp.cpp, - vc_solution/vc9_lame_acm.vcproj, - vc_solution/vc9_lame_acm_adbg.vcproj, - vc_solution/vc9_lame_acm_tinyxml.vcproj, - vc_solution/vc9_lame_config.vsprops, - vc_solution/vc9_lame_dll.vcproj, - vc_solution/vc9_lame_dll_example.vcproj, - vc_solution/vc9_lame_dshow.vcproj, - vc_solution/vc9_lame_lame.vcproj, - vc_solution/vc9_lame_mp3x.vcproj, - vc_solution/vc9_libmp3lame.vcproj, - vc_solution/vc9_libmp3lame_dll.vcproj, - vc_solution/vc9_mpglib.vcproj (lame3_98): - - moving common VS projects settings into own property page - -2008-11-01 13:32 robert - - * dshow/Mpegac.cpp, dshow/REG.CPP, dshow/REG.H, - vc_solution/vc9_lame_acm.vcproj, - vc_solution/vc9_lame_acm_adbg.vcproj, - vc_solution/vc9_lame_acm_tinyxml.vcproj, - vc_solution/vc9_lame_dll.vcproj, - vc_solution/vc9_lame_dll_example.vcproj, - vc_solution/vc9_lame_dshow.vcproj (lame3_98): - - - VC6 upgrade property pages removed, not needed - - Name clash with our CRegKey class and ATL::CRegKey class solved by putting ours in namespace Lame. - -2008-10-23 23:35 robert - - * mpglib/: README, TODO, common.c, common.h, dct64_i386.c, - dct64_i386.h, decode_i386.c, decode_i386.h, huffman.h, - interface.c, interface.h, l2tables.h, layer1.c, layer1.h, - layer2.c, layer2.h, layer3.c, layer3.h, mpg123.h, mpglib.h, - tabinit.c, tabinit.h (lame3_98): - - exchanging mpglib by libhip from main-branch - -2008-10-23 23:26 robert - - * mpglib/: common.c, common.h, dct64_i386.c, dct64_i386.h, - decode_i386.c, decode_i386.h, huffman.h, interface.c, - interface.h, l2tables.h, layer1.c, layer1.h, layer2.c, layer2.h, - layer3.c, layer3.h, mpg123.h, mpglib.h, tabinit.c, tabinit.h: - - fixing indentation - -2008-10-23 23:17 robert - - * frontend/brhist.h, frontend/get_audio.c, frontend/get_audio.h, - frontend/main.c, frontend/main.h, frontend/portableio.c, - frontend/portableio.h, mpglib/common.c, mpglib/common.h, - mpglib/dct64_i386.c, mpglib/dct64_i386.h, mpglib/decode_i386.c, - mpglib/decode_i386.h, mpglib/huffman.h, mpglib/interface.c, - mpglib/interface.h, mpglib/layer1.h, mpglib/layer2.c, - mpglib/layer2.h, mpglib/layer3.c, mpglib/layer3.h, - mpglib/mpg123.h, mpglib/tabinit.c, mpglib/tabinit.h: - - removing some tabs - preparing for indent - -2008-10-21 23:09 robert - - * mpglib/: TODO, interface.c, layer3.c, mpg123.h, mpglib.h: - - re-applying some of our changes to decoding lib - -2008-10-21 22:35 robert - - * mpglib/: README, common.c, common.h, dct64_i386.c, dct64_i386.h, - decode_i386.c, decode_i386.h, huffman.h, interface.c, - interface.h, l2tables.h, layer1.c, layer1.h, layer2.c, layer2.h, - layer3.c, layer3.h, mpg123.h, mpglib.h, tabinit.c, tabinit.h: - - replacing mpglib by libhip - -2008-10-21 22:34 robert - - * include/lame.h: - - fix small issues with C99 - -2008-10-21 22:06 robert - - * include/lame.h (lame3_98): - - fix small issues with C99 - -2008-10-12 19:46 robert - - * libmp3lame/version.h (lame3_98), libmp3lame/lame.rc, - libmp3lame/logoe.ico, libmp3lame/version.c, libmp3lame/version.h, - vc_solution/vc9_lame_lame.vcproj, - vc_solution/vc9_libmp3lame_dll.vcproj: - - Adding resources to EXE and DLL - -2008-10-12 19:33 robert - - * libmp3lame/lame.rc, libmp3lame/logoe.ico, libmp3lame/version.c, - libmp3lame/version.h, vc_solution/vc9_lame_lame.vcproj, - vc_solution/vc9_libmp3lame_dll.vcproj (lame3_98): - - Adding resources to EXE and DLL - -2008-10-11 19:12 robert - - * ChangeLog (lame3_98): - - updating Changelog - -2008-10-11 19:08 robert - - * frontend/gtkanal.c, libmp3lame/mpglib_interface.c, - libmp3lame/util.h (lame3_98): - - fixing mp3x build - -2008-10-11 18:58 robert - - * frontend/gtkanal.c, libmp3lame/mpglib_interface.c, - libmp3lame/util.h: - - fixing mp3x build - -2008-10-11 18:04 robert - - * doc/html/history.html, frontend/get_audio.c, frontend/gtkanal.c, - frontend/parse.c, libmp3lame/bitstream.c, libmp3lame/id3tag.c, - libmp3lame/lame.c, libmp3lame/mpglib_interface.c, - libmp3lame/util.c, libmp3lame/util.h, mpglib/.cvsignore, - mpglib/common.c, mpglib/interface.c, mpglib/layer3.c, - mpglib/mpg123.h, mpglib/mpglib.h, include/lame.def, - include/lame.h, vc_solution/vc9_libmp3lame.vcproj, - vc_solution/vc9_libmp3lame_dll.vcproj (lame3_98), - doc/html/history.html, frontend/gtkanal.c, include/lame.def, - include/lame.h, libmp3lame/id3tag.c, - libmp3lame/mpglib_interface.c, mpglib/layer3.c, mpglib/mpglib.h, - vc_solution/vc9_libmp3lame.vcproj, - vc_solution/vc9_libmp3lame_dll.vcproj: - - Library API change: lame_decode functions are now obsolete but still present, please use hip_decode instead. - - The reason for this change is: lame_decode functions use a single global variable within the library to store decoder setup, hip_decode functions don't. - - The encoder now uses hip_decode internally and it is now possible to use clipdetect feature while reencoding mp3 to mp3. - -2008-10-07 21:57 robert - - * doc/html/history.html, frontend/parse.c: - - - let ignore-tag-errors effect albumart option too - - updating history - -2008-10-07 20:24 robert - - * doc/html/history.html, frontend/parse.c, libmp3lame/version.h - (lame3_98): - - - let ignore-tag-errors effect albumart option too - - updating history - -2008-09-22 20:21 robert - - * libmp3lame/: takehiro.c, version.h (lame3_98): - - source merging resultet in bug: loop var was incremented twice - now fixed - -2008-09-21 15:53 robert - - * testcase.mp3 (lame3_98): - - updating testcase.mp3 to current version - -2008-09-21 15:51 robert - - * ChangeLog (lame3_98): - - updating Changelog of branch lame3_98 - -2008-09-21 15:29 robert - - * doc/man/lame.1: - - fixing Rogerios patch - -2008-09-19 07:30 rbrito - - * debian/: changelog, control, rules (lame3_98): - - Various improvements to the packaging. Thanks to Fabian. - -2008-09-19 07:08 rbrito - - * doc/man/lame.1 (lame3_98): - - Remove warnings from nroff while processing the manpage. - -2008-09-19 07:02 rbrito - - * doc/man/lame.1: - - Fixing warnings generated by nroff. - -2008-09-14 15:21 robert - - * frontend/parse.c: - - replacing stricmp by local_strcasecmp - -2008-09-14 11:54 robert - - * doc/html/history.html, doc/html/id3.html, doc/man/lame.1, - frontend/parse.c, libmp3lame/id3tag.c, USAGE: - - Fixing some ID3 tagging issues: - - some sloppier search for genre names - - new switch --pad-id3v2-size which allows some user defined padding - -2008-09-14 11:51 robert - - * doc/html/history.html, doc/html/id3.html, doc/man/lame.1, - frontend/parse.c, include/lame.def, include/lame.h, - libmp3lame/id3tag.c, libmp3lame/id3tag.h, USAGE (lame3_98): - - Fixing some ID3 tagging issues: - - some sloppier search for genre names - - new switch --pad-id3v2-size which allows some user defined padding - -2008-09-13 21:44 robert - - * doc/html/id3.html, libmp3lame/id3tag.c (lame3_98): - - fixing typo - -2008-09-12 19:41 robert - - * libmp3lame/id3tag.c, libmp3lame/id3tag.h, frontend/parse.c, - include/lame.def, include/lame.h: - - new frontend switch "--pad-id3v2-size ": - allow id3v2 padding of 0 to 128000 bytes - -2008-09-11 00:49 robert - - * frontend/parse.c: - - replace common suffixes by MP3/WAV when no output filename was given - -2008-09-08 22:46 robert - - * frontend/main.c, frontend/parse.c, include/lame.h, - libmp3lame/mpglib_interface.c: - - eleminating some compiler warnings - -2008-08-31 19:35 robert - - * libmp3lame/i386/nasm.h (lame3_98): - - fixing the fix to get it assemble for ELF again - -2008-08-31 19:31 robert - - * include/lame.h, libmp3lame/i386/nasm.h: - - fixing the fix to get it assembling for ELF again - -2008-08-31 17:52 robert - - * include/lame.h: - - remove some debugging noise - -2008-08-31 16:14 robert - - * frontend/get_audio.c, libmp3lame/bitstream.c, libmp3lame/lame.c, - libmp3lame/mpglib_interface.c, libmp3lame/util.c, - libmp3lame/util.h, frontend/gtkanal.c, frontend/parse.c, - include/lame.def, include/lame.h, mpglib/layer3.c, - mpglib/mpglib.h: - - Fix for API problem: - lame decoding functionality used one global data structure in libmp3lame for all decoding ativities. This is a big problem with dynamic linking! - New API functions added, which use handles to work with. - Old API functions are still there, but are deprecated. - -2008-08-31 12:26 robert - - * libmp3lame/i386/: choose_table.nas, fft3dn.nas, fftsse.nas, - nasm.h (lame3_98), choose_table.nas, fft3dn.nas, fftsse.nas, - nasm.h: - - fixing none PIC assembling problem - -2008-08-27 10:27 rbrito - - * libmp3lame/i386/: Makefile.am, choose_table.nas, fft3dn.nas, - fftsse.nas, nasm.h: - - Committing the changes from Gentoo and PaX Team to the HEAD. - -2008-08-25 12:57 rbrito - - * debian/changelog, libmp3lame/i386/choose_table.nas, - libmp3lame/i386/fft3dn.nas, libmp3lame/i386/fftsse.nas - (lame3_98): - - Fix text relocations and update debian changelog. - Thanks to the PaX Team and Gentoo people. - -2008-08-25 12:43 rbrito - - * libmp3lame/i386/nasm.h (lame3_98): - - Fix to executable stack (thanks to Gentoo people) - -2008-08-25 12:38 rbrito - - * libmp3lame/i386/Makefile.am (lame3_98): - - Fixes building of asm with libtool 2.2 (thanks to Gentoo people) - -2008-08-16 12:48 robert - - * doc/man/: lame.1 (lame3_98), lame.1: - - adding MPEG-2.5 bitrate table - -2008-08-13 21:01 robert - - * libmp3lame/tables.h: - - revert - -2008-08-13 20:38 robert - - * libmp3lame/: tables.c, tables.h: - - fix compilation via configure/make - -2008-08-11 20:55 robert - - * libmp3lame/: takehiro.c (lame3_98), takehiro.c: - - loop rewritten; result of discussion with Michael Stoner - -2008-08-08 20:34 robert - - * libmp3lame/takehiro.c: - - tiny speed-up - -2008-08-07 20:55 robert - - * Makefile.unix, doc/html/switchs.html, doc/man/lame.1, - frontend/parse.c, libmp3lame/lame.c: - - making some switches developer only switches - -2008-08-07 14:53 robert - - * mpglib/: .cvsignore, common.c, dct64_i386.h, huffman.h, - interface.c, l2tables.h, layer1.h, mpg123.h, mpglib.h, tabinit.h: - - sync with HIP development - -2008-08-07 14:52 robert - - * libmp3lame/lame.c: - - we did init bitstream (Xing header) before final decisions were made - -2008-08-06 17:12 robert - - * frontend/parse.c (lame3_98): - - add proper file closing - -2008-08-06 17:12 robert - - * doc/html/history.html, frontend/parse.c: - - fix for tracker item [ 2039648 ] potential memory leak in parse_args() function in parse.c - -2008-08-06 17:06 robert - - * doc/html/history.html, frontend/parse.c (lame3_98): - - fix for tracker item [ 2039648 ] potential memory leak in parse_args() function in parse.c - -2008-08-06 16:14 robert - - * frontend/parse.c: - - internal switches are available only when compiled with - preprocessor symbol _ALLOW_INTERNAL_OPTIONS - defined. - -2008-08-06 16:10 robert - - * USAGE, doc/html/switchs.html, frontend/parse.c, doc/man/lame.1: - - removing some obsolete switches - -2008-08-06 15:57 robert - - * USAGE (lame3_98): - - removing some obsolete switches - -2008-08-06 15:52 robert - - * doc/man/lame.1 (lame3_98): - - removing some obsolete switches - -2008-08-06 15:35 robert - - * frontend/parse.c (lame3_98): - - removing some obsolete switches - -2008-08-06 15:24 robert - - * doc/html/switchs.html (lame3_98): - - removing internal switches - -2008-08-06 11:55 robert - - * libmp3lame/presets.c (lame3_98): - - keeping "sfb21mod" as in 3.98 release - -2008-08-05 17:45 robert - - * doc/html/history.html, frontend/parse.c, libmp3lame/lame.c: - - fix for bugtracker item [ 2029282 ] Frequency filtering API broken in 3.98 - -2008-08-05 17:26 robert - - * doc/html/history.html, frontend/parse.c, libmp3lame/lame.c - (lame3_98): - - bug fix for tracker item [ 2029282 ] Frequency filtering API broken in 3.98 - -2008-08-05 14:19 robert - - * doc/html/history.html: - - updating history - -2008-08-05 14:16 robert - - * HACKING, Makefile.unix, configure.in, debian/changelog, - debian/rules, doc/html/history.html, doc/man/lame.1, - frontend/mp3rtp.c, frontend/rtp.c, libmp3lame/VbrTag.c, - libmp3lame/bitstream.c, libmp3lame/encoder.c, - libmp3lame/gain_analysis.c, libmp3lame/id3tag.c, - libmp3lame/lame.c, libmp3lame/presets.c, libmp3lame/psymodel.c, - libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, - libmp3lame/quantize_pvt.h, libmp3lame/util.c, - libmp3lame/vbrquantize.c, libmp3lame/version.h, misc/abx.c - (lame3_98): - - bug fixes from main branch - -2008-08-05 12:33 robert - - * libmp3lame/id3tag.c: - - fix for bug: LAME writes ID3v2 tag when some ID3v1 field length is too short to hold the text, even in case ID3v1 only is specified. - -2008-08-05 12:32 robert - - * libmp3lame/: bitstream.c, util.h, vbrquantize.c: - - changes after doing some linting - -2008-08-04 19:53 robert - - * libmp3lame/: bitstream.c, VbrTag.c, encoder.c, encoder.h, fft.c, - fft.h, gain_analysis.c, gain_analysis.h, id3tag.c, id3tag.h, - lame-analysis.h, lame.c, machine.h, mpglib_interface.c, - presets.c, psymodel.c, psymodel.h, quantize.c, quantize.h, - quantize_pvt.c, quantize_pvt.h, set_get.c, tables.c, tables.h, - takehiro.c, util.c, util.h, vbrquantize.c, vbrquantize.h, - VbrTag.h: - - changes after doing some linting - -2008-07-28 17:18 robert - - * libmp3lame/lame.c, misc/abx.c: - - fixing swapped parameters on calloc call - -2008-07-28 16:57 robert - - * libmp3lame/psymodel.c: - - fixing small typo - -2008-07-28 16:38 robert - - * include/lame.h, libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, - libmp3lame/bitstream.c, libmp3lame/bitstream.h, - libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/id3tag.c, - libmp3lame/id3tag.h, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/machine.h, - libmp3lame/newmdct.c, libmp3lame/psymodel.c, - libmp3lame/psymodel.h, libmp3lame/quantize.c, - libmp3lame/quantize.h, libmp3lame/quantize_pvt.c, - libmp3lame/quantize_pvt.h, libmp3lame/reservoir.c, - libmp3lame/reservoir.h, libmp3lame/set_get.c, - libmp3lame/takehiro.c, libmp3lame/util.c, libmp3lame/util.h, - libmp3lame/vbrquantize.c: - - reorganizing the huge lame_internal_flags structure - -2008-07-23 14:59 robert - - * libmp3lame/util.c: - - removed extra line. - tracker item: [ 2022101 ] tiny bug(?) in fill_buffer_resample() - -2008-07-23 14:46 robert - - * libmp3lame/lame.c: - - fix for tracker item: [ 2022035 ] encoder_padding value and resampling - -2008-07-19 13:34 rbrito - - * HACKING: - - Fixed HACKING documentation. - -2008-07-19 13:09 rbrito - - * HACKING: - - Fix documentation for set_get/get_set confusion. - -2008-07-19 12:54 rbrito - - * doc/html/history.html, frontend/mp3rtp.c, frontend/rtp.c: - - Fixed compilation of mp3rtp and closed bug on sourceforge tracker. - -2008-07-18 22:43 robert - - * libmp3lame/: VbrTag.c, quantize_pvt.h, encoder.c, - gain_analysis.c, id3tag.c, psymodel.c, quantize.c, - quantize_pvt.c, vbrquantize.c, bitstream.c: - - - removing some unused variables - - fix a possible 'divide by zero' in vbrpsy_mask_add - -2008-07-12 15:59 rbrito - - * Makefile.unix: - - Tidying up the Makefile.unix file. Possibly more to come. - -2008-07-12 14:32 rbrito - - * debian/changelog: - - Mention changes to the build system on debian/ubuntu/whatever systems. - -2008-07-12 14:28 rbrito - - * debian/rules: - - Include changes so that the linker only includes libraries directly needed. - -2008-07-12 14:26 rbrito - - * Makefile.unix: - - Include a clue for emacs to know that this is a makefile. - -2008-07-08 07:14 rbrito - - * doc/man/lame.1: - - Small updates to the manpage - -2008-07-07 23:50 robert - - * doc/html/history.html, libmp3lame/presets.c: - - linear interpolate preset param sf21mod - -2008-07-07 10:20 rbrito - - * Makefile.unix: - - Fixed typo in one option. - -2008-07-07 09:32 rbrito - - * Makefile.unix: - - Include flags for compilation for newer machines running Linux. - Comment the use of gtk1.2 for Linux at least (don't know about *BSD). - -2008-07-07 02:18 rbrito - - * doc/html/history.html: - - Many fixes to the HTML file (too numerous to mention here). Now, it - validates at w3.org (and let us keep it this way, please). - -2008-07-07 00:17 rbrito - - * misc/abx.c: - - Finally fix the endianness issue and be able to close the reported bug. - -2008-07-07 00:16 rbrito - - * misc/abx.c: - - Fix a memory leak (detected by running valgrind). - -2008-07-07 00:14 rbrito - - * misc/abx.c: - - Remove inactive/commented coded that doesn't seem to be necessary. - -2008-07-05 11:51 robert - - * lame_clients_vc6.dsw, lame_projects_vc6.dsp, lame_vc6.dsw: - - we don't support VC6 anymore - -2008-07-05 07:50 robert - - * ACM/lameACM_vc6.dsp, ACM/ADbg/ADbg.dsp, ACM/tinyxml/test.dsp, - ACM/tinyxml/test.dsw, ACM/tinyxml/tinyxml.dsp, - Dll/Example_vc6.dsp, Dll/Example_vc6.dsw, Dll/LameDll_vc6.dsp, - dshow/dshow.dsp, dshow/dshow.dsw, frontend/lame_vc6.dsp, - frontend/mp3x_vc6.dsp, libmp3lame/libmp3lame_dll_vc6.dsp, - libmp3lame/libmp3lame_vc6.dsp, mpglib/mpglib_vc6.dsp: - - we don't support VC6 anymore - -2008-07-05 07:38 robert - - * libmp3lame/version.h, configure.in: - - Main branch at 3.99 alpha - -2008-07-03 22:04 robert - - * libmp3lame/version.h (lame3_98): - - preparing release - -2008-06-30 23:31 robert - - * configMS.h, dshow/Property.rc, dshow/aboutprp.cpp: - - updating LAME version property - -2008-06-29 21:40 rbrito - - * configure, configure.in, debian/changelog: - - New updated options for compiling with expopt (to be cleaned up latter). - Fixes to the Debian packaging for the pending release. - -2008-06-29 03:25 rbrito - - * doc/html/history.html: - - Fixed my name on an older entry of the history. - -2008-06-28 22:36 robert - - * doc/html/: Makefile.am, Makefile.in: - - removing presets.html, it is not in repository anymore - -2008-06-27 20:47 robert - - * Makefile.unix, testcase.mp3: - - updating testcase for 3.98 stable release - -2008-06-26 21:26 robert - - * vc_solution/: vc9_lame.sln, vc9_lame_acm.vcproj, - vc9_lame_acm_adbg.vcproj, vc9_lame_acm_tinyxml.vcproj, - vc9_lame_dll.vcproj, vc9_lame_dll_example.vcproj, - vc9_lame_dshow.vcproj, vc9_lame_lame.vcproj, - vc9_lame_mp3x.vcproj, vc9_libmp3lame.vcproj, - vc9_libmp3lame_dll.vcproj, vc9_mpglib.vcproj: - - removing blanks from configuration and project names (because of NASM rule) - -2008-06-26 10:26 bouvigne - - * doc/html/index.html, doc/html/presets.html, doc/man/lame.1, - frontend/parse.c: - - simplified --preset docs - -2008-06-26 10:09 bouvigne - - * doc/html/: history.html, index.html: - - updated the html docs for 3.98 - -2008-06-26 08:57 bouvigne - - * libmp3lame/psymodel.c: - - revert my calc_energy changes - -2008-06-25 21:59 robert - - * mpglib/: layer2.c, layer3.c, mpg123.h: - - cosmetic changes, some more compiler (gcc) warnings eliminated - -2008-06-25 12:45 aleidinger - - * ChangeLog: - - recent changes - -2008-06-25 12:43 aleidinger - - * doc/html/history.html: - - a little bit of history - -2008-06-25 12:40 aleidinger - - * configure: - - regen - -2008-06-25 12:37 aleidinger - - * configure.in: - - fix --diable-cpml switch - -2008-06-25 12:17 aleidinger - - * mpglib/Makefile.in, Makefile.in, ACM/Makefile.in, - ACM/ADbg/Makefile.in, ACM/ddk/Makefile.in, - ACM/tinyxml/Makefile.in, Dll/Makefile.in, debian/Makefile.in, - doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, - dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, - libmp3lame/vector/Makefile.in, mac/Makefile.in, - macosx/Makefile.in, macosx/English.lproj/Makefile.in, - macosx/LAME.xcodeproj/Makefile.in, misc/Makefile.in: - - regen (math lib change) - -2008-06-25 12:13 aleidinger - - * configure.in: - - export the math lib, allow to disable the use of the alpha optimized math lib - -2008-06-25 12:12 aleidinger - - * libmp3lame/Makefile.am: - - add the math lib explicitely to the build of the lib - -2008-06-25 08:20 robert - - * frontend/parse.c, mpglib/decode_i386.c, mpglib/interface.c, - mpglib/interface.h, mpglib/layer1.c, mpglib/layer2.c, - mpglib/mpglib.h: - - Some cosmetic changes, now the vc9 compiles the workspace vc9_lame without any warning - -2008-06-24 19:07 rbrito - - * doc/html/history.html: - - Add some modifications of mine to the history - -2008-06-24 18:39 rbrito - - * debian/: changelog, control, rules: - - Updates to the Debian packaging. - -2008-06-24 17:06 rbrito - - * misc/abx.c: - - Quick and dirty fix for some memory leak (detected via Valgrind). - -2008-06-22 18:39 robert - - * doc/html/: history.html, contributors.html: - - tracker item [ lame-Patches-1990643 ] DShow direct file writer output - patch by Anton Sergunov (setosha) - -2008-06-22 18:31 robert - - * dshow/: Encoder.cpp, Encoder.h, Mpegac.cpp, Mpegac.h: - - tracker item [ lame-Patches-1990643 ] DShow direct file writer output - patch by Anton Sergunov (setosha) - -2008-06-22 18:29 robert - - * vc_solution/: vc9_lame_acm.vcproj, vc9_lame_acm_adbg.vcproj, - vc9_lame_acm_tinyxml.vcproj, vc9_lame_dll_example.vcproj, - vc9_lame_dshow.vcproj: - - linking against multithreaded (debug) DLL - -2008-06-17 20:57 robert - - * frontend/parse.c, libmp3lame/presets.c: - - bug fix: preset INSANE wasn't a CBR preset anymore, but preset help said it should be - -2008-06-10 19:24 rbrito - - * misc/abx.c: - - Fixes for consistency (lack of PATH on some commands) - -2008-06-10 19:14 rbrito - - * misc/abx.c: - - Removing spurious whitespaces at the end of lines. - -2008-06-10 16:10 rbrito - - * misc/abx.c: - - Corrected the abx.c file to work on Linux x86-64 (it should work on ia32 too). - - I think that I can remove latter the commented lines. They were prejudicial - to playing the file on Linux (i.e., a 1min file was played in less than 5s, - which is not exactly something that useful for doing an abx test). - -2008-05-24 08:40 aleidinger - - * ChangeLog: - - Add nearly a year of history. - -2008-05-24 08:37 aleidinger - - * Makefile.in, configure: - - regen - -2008-05-24 08:31 aleidinger - - * macosx/: Makefile.in, English.lproj/Makefile.in, - LAME.xcodeproj/Makefile.in: - - regen - -2008-05-24 08:28 aleidinger - - * configure.in, macosx/Makefile.am, - macosx/English.lproj/Makefile.am, - macosx/LAME.xcodeproj/Makefile.am: - - Add some more macosx stuff - -2008-05-22 17:32 audiofileeng - - * macosx/: English.lproj/InfoPlist.strings, - LAME.xcodeproj/project.pbxproj: - - adding files in subdirectories in macosx - -2008-05-22 06:26 aleidinger - - * Makefile.am, configure.in, macosx/Makefile.am: - - add the new macosx directory - -2008-05-21 03:05 audiofileeng - - * macosx/: Info.plist, LAME_Prefix.pch: - - added XCode framework project for Mac OS X - -2008-05-19 07:41 bouvigne - - * libmp3lame/: psymodel.c, util.h: - - faster calc_energy: don't loop if there is a single line within the band - -2008-05-18 17:49 bouvigne - - * libmp3lame/psymodel.c: - - faster calc_energy: dont' loop if there is a single line within the band - -2008-05-14 07:43 rbrito - - * debian/watch: - - New file for detecting new versions of the package. - -2008-05-14 07:42 rbrito - - * debian/: changelog, control, copyright, lame.docs, - libmp3lame0-dev.docs, libmp3lame0-dev.files, rules: - - Updates to the Debian packaging. - -2008-04-28 20:32 robert - - * frontend/get_audio.c: - - fixing LIBSNDFILE compile problem found by Rogério Brito - -2008-04-23 01:50 robert - - * frontend/main.c, frontend/parse.h, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/machine.h, - libmp3lame/psymodel.c: - - fix for bug-tracker item:[ 1948101 ] Memory not freed (lame-3.97, lame-3.98b8) - plus, we didn't call lame_close in decode-only case - -2008-04-22 23:01 robert - - * libmp3lame/machine.h, libmp3lame/newmdct.c, - libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, - mpglib/interface.c, mpglib/layer1.c: - - fixing a problem if you are using --fast-math compiler switch - -2008-04-13 22:03 robert - - * doc/html/history.html, libmp3lame/version.h: - - updating history, we are now at 3.98 beta 8 - -2008-04-13 21:27 robert - - * frontend/get_audio.c, frontend/main.h, frontend/parse.c, - libmp3lame/psymodel.c: - - found some problem in Naoki's additive masking code and fixed it for VBR_NEW - -2008-04-13 13:45 robert - - * testcase.mp3, frontend/get_audio.c: - - changed compile-time test for machine byte order into run-time test, - this should solve issues PPC users seem to have - -2008-04-13 02:52 robert - - * libmp3lame/psymodel.c: - - some SNR testcode to try with -Z3 - -2008-04-12 18:18 robert - - * frontend/parse.c, frontend/timestatus.c, include/lame.def, - include/lame.h, libmp3lame/VbrTag.c, libmp3lame/bitstream.c, - libmp3lame/encoder.c, libmp3lame/fft.c, - libmp3lame/gain_analysis.c, libmp3lame/id3tag.c, - libmp3lame/lame.c, libmp3lame/lame_global_flags.h, - libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, - libmp3lame/presets.c, libmp3lame/psymodel.c, - libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, - libmp3lame/reservoir.c, libmp3lame/set_get.c, - libmp3lame/tables.c, libmp3lame/takehiro.c, libmp3lame/util.c, - libmp3lame/vbrquantize.c: - - extended VBR quality scale: 0, ..., 9.999 as floating point value - -2008-04-06 15:07 robert - - * doc/html/history.html, frontend/main.c: - - updating history.html - -2008-04-06 02:38 robert - - * libmp3lame/lame_global_flags.h, libmp3lame/presets.c, - libmp3lame/psymodel.c, libmp3lame/set_get.c, - libmp3lame/version.h, mpglib/layer3.c: - - some simpler spreading function for VBR NEW - -2008-04-05 17:38 robert - - * Makefile.unix, frontend/brhist.c, frontend/brhist.h, - frontend/main.c, frontend/parse.c, frontend/timestatus.c: - - removing "#ifdef/#endif" from code bocks, which were always compiled in - -2008-04-05 17:13 robert - - * lame.spec.in, debian/copyright, libmp3lame/id3tag.c, misc/abx.c, - misc/lameGUI.html: - - changing some links from "www.mp3dev.org/mp3" to "www.mp3dev.org" - and from "www.sulaco.org/mp3" to "www.mp3dev.org" - -2008-03-20 22:28 robert - - * include/lame.h: - - keep 'lame_mp3_tags_fid' alive at least for next stable release - -2008-03-12 11:23 robert - - * libmp3lame/psymodel.c, vc_solution/vc9_libmp3lame.vcproj, - vc_solution/vc9_libmp3lame_dll.vcproj, - vc_solution/vc9_mpglib.vcproj: - - bug fix: stack corruption in vbrpsy_compute_masking_s - -2008-03-11 21:57 robert - - * libmp3lame/: set_get.c, vbrquantize.c: - - fixing some more compiler warnings - -2008-03-11 21:17 robert - - * libmp3lame/VbrTag.c, libmp3lame/fft.c, libmp3lame/id3tag.c, - libmp3lame/lame.c, libmp3lame/mpglib_interface.c, - libmp3lame/quantize.c, libmp3lame/takehiro.c, libmp3lame/util.c, - libmp3lame/vbrquantize.c, vc_solution/vc9_libmp3lame.vcproj, - vc_solution/vc9_libmp3lame_dll.vcproj: - - fixing some more compiler warnings - -2008-03-11 00:56 robert - - * libmp3lame/set_get.c: - - fixing some more compiler warnings - -2008-03-11 00:21 robert - - * vc_solution/vc9_libmp3lame.vcproj: - - update for nasm file config - -2008-03-10 23:47 robert - - * libmp3lame/: bitstream.c, encoder.c, gain_analysis.c, id3tag.c, - lame.c, machine.h, mpglib_interface.c, newmdct.c, psymodel.c, - quantize.c, quantize.h, quantize_pvt.c, quantize_pvt.h, - set_get.c, util.h, vbrquantize.c, vbrquantize.h: - - fixing some compiler warnings - -2008-03-09 22:37 robert - - * frontend/parse.c: - - for now, keep old ID3 tag switches passing raw character encoded strings - some experimental switches for Linux systems: - - (ID3v1/ID3v2) - --lTtitle - --lArtist - --lAlbum - --lGenre - --lComment - --lFieldvalue - - (ID3v2) - --uTitle - --uArtist - --uAlbum - --uGenre - --uComment - -2008-03-09 22:29 robert - - * include/lame.h: - - under Linux we need some C-library includes here (why not on Win32?) - -2008-03-09 19:31 robert - - * libmp3lame/: takehiro.c, vbrquantize.c: - - fixing some compiler warnings about: - - integer constant overflow - - signed/unsigned mismatch - -2008-03-09 17:13 robert - - * Dll/BladeMP3EncDLL.c, dshow/aboutprp.cpp, frontend/brhist.c, - frontend/mp3x.c, frontend/parse.c, include/lame.h: - - removing unneccessary stdlib includes from lame.h - -2008-03-09 16:33 robert - - * vc_solution/: vc9_lame_lame.vcproj, vc9_libmp3lame.vcproj, - vc9_libmp3lame_dll.vcproj, vc9_nasm.rules: - - adding NASM build rule - -2008-02-23 20:58 robert - - * frontend/parse.c, libmp3lame/id3tag.c: - - adding ICONV character conversion (NOT for WIN32), because ID3 tags have to - be in ISO Latin-1 or UCS-2 text encoding. Previously we wrote bytes into ID3 - tags, as we got them from the commandline, in locale text encoding. - - There are some experimental switches to store UCS-2 encoded ID3 tags: - --uArtist, --uAlbum, --uTitle, --uGenre and --uComment - -2008-02-23 12:58 robert - - * libmp3lame/: id3tag.c, id3tag.h, util.c: - - locate and replace {TXXX,COMM} field if LANGUAGE and DESCRIPTION match new one - -2008-02-22 02:48 robert - - * libmp3lame/: id3tag.c, id3tag.h, util.c: - - preparing unicode id3v2 tags - -2008-02-22 02:38 robert - - * libmp3lame/: lame.c, vbrquantize.c, version.c: - - fixing some compiler warnings - -2008-02-20 03:04 robert - - * vc_solution/vc9_lame_dll_example.vcproj: - - VC9 Solution files - -2008-02-20 02:40 robert - - * vc_solution/vc9_lame_dshow.vcproj: - - VC9 Solution files - -2008-02-20 01:53 robert - - * vc_solution/vc9_lame_acm.vcproj: - - VC9 Solution files - -2008-02-20 00:38 robert - - * vc_solution/: .cvsignore, vc9_lame.sln, vc9_lame_acm.vcproj, - vc9_lame_acm_adbg.vcproj, vc9_lame_acm_tinyxml.vcproj, - vc9_lame_clients.sln, vc9_lame_dll.vcproj, - vc9_lame_dll_example.vcproj, vc9_lame_dshow.vcproj, - vc9_lame_lame.vcproj, vc9_lame_mp3x.vcproj, - vc9_libmp3lame.vcproj, vc9_libmp3lame_dll.vcproj, - vc9_mpglib.vcproj: - - VC9 Solution files - -2008-02-15 01:27 robert - - * Dll/BladeMP3EncDLL.c: - - use new API function for LAME-tag frame update - -2008-02-15 00:23 robert - - * libmp3lame/VbrTag.c: - - let the dummy Xing frame have a valid mp3 sync word - -2008-02-10 18:38 robert - - * libmp3lame/id3tag.c, include/lame.def, include/lame.h: - - fixes: - id3tag.c - some block scope missing - lame.h, lame.def: - some exported function was missing - -2008-02-10 17:35 robert - - * frontend/main.c, include/lame.def, include/lame.h, - libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, libmp3lame/id3tag.c, - libmp3lame/lame.c, libmp3lame/lame_global_flags.h, - libmp3lame/set_get.c, libmp3lame/version.h: - - Adding some new API functions - - to en-/dis- able automatic ID3 tag writing into audio stream (default on): - - void CDECL lame_set_write_id3tag_automatic(lame_global_flags * gfp, int); - int CDECL lame_get_write_id3tag_automatic(lame_global_flags const* gfp); - - - to query ID3 tags into a buffer: - - size_t CDECL lame_get_id3v1_tag( - lame_global_flags * gfp, unsigned char* buffer, size_t size); - size_t CDECL lame_get_id3v2_tag( - lame_global_flags * gfp, unsigned char* buffer, size_t size); - - - to query the final Xing/LAME tag frame into a buffer: - size_t CDECL lame_get_lametag_frame( - const lame_global_flags *, unsigned char* buffer, size_t size); - - Those new functions allow to encode a complete input file into RAM first, - before writing it into a file/socket/whatever... - -2008-02-03 14:28 robert - - * libmp3lame/psymodel.c: - - VBRPSY: don't use ATH in 'additive masking' function - -2008-01-09 20:46 rbrito - - * debian/: changelog, compat, control, rules: - - Updated the Debian packaging. - -2008-01-06 16:46 robert - - * libmp3lame/: lame.c, quantize.c: - - VBR-NEW can be mixed with free format now. The result will be a free format - stream using VBR-NEW quantization routine. - - note: following free format bitrates are maximum bitrates which make sense: - samplerate: 8 11 12 16 22 24 32 44 48 - kbps 109 151 164 218 301 327 435 600 640(652) - - Using the maximum bitrate one may look and see how the VBR code behaves - when the bitrate pressure is lowered to the theoretical minimum, like: - lame -V0 -b600 --freeformat x.wav x.mp3 - -2008-01-03 00:03 aleidinger - - * configure: - - regenerate with autoconf 2.61 - -2008-01-03 00:02 aleidinger - - * Makefile.in, ACM/Makefile.in, ACM/ADbg/Makefile.in, - ACM/ddk/Makefile.in, ACM/tinyxml/Makefile.in, Dll/Makefile.in, - debian/Makefile.in, doc/Makefile.in, doc/html/Makefile.in, - doc/man/Makefile.in, dshow/Makefile.in, frontend/Makefile.in, - include/Makefile.in, libmp3lame/Makefile.in, - libmp3lame/i386/Makefile.in, libmp3lame/vector/Makefile.in, - mac/Makefile.in, misc/Makefile.in, mpglib/Makefile.in: - - regenerate with automake 1.10 - -2008-01-03 00:01 aleidinger - - * aclocal.m4: - - update with stuff from more recent autotools - -2008-01-03 00:00 aleidinger - - * ltmain.sh: - - update to a libtool 1.5.24 version - -2008-01-02 23:58 aleidinger - - * configure.in: - - After installing sndfile: - - fix SNDFILE_xxx - - Give a better failure description for some errors (sizeof check). - - If there are intXX_t but no uintXX_t, use the intXX_t with "unsigned" instead - of trying to find the right K&R-C integral type. - - Use macho as the format type for NASM on OSX, but disable the nasm use by - default there, as there seems to be a problem with the nasm code on OSX. - -2008-01-02 22:00 aleidinger - - * configure.in: - - - If SNDFILE_xxx are defined and the fileio is sndfile, then assume the - user is knowing what he does (some systems don't have pkg-config but - have sndfile). - - Fix the problem case where SNDFILE_CFLAGS has spaces at the beginning. - -2008-01-02 20:30 robert - - * libmp3lame/id3tag.c: - - fix for tracker item: [ 1861450 ] TLEN tag fixed on encode from stdin with ID3v2 tags - -2007-12-26 22:04 robert - - * ACM/ACMStream.cpp, Dll/BladeMP3EncDLL.c: - - removing obsolete function calls - -2007-12-26 13:12 robert - - * Makefile.MSVC, frontend/parse.c, include/lame.h, - libmp3lame/encoder.c, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/presets.c, - libmp3lame/psymodel.c, libmp3lame/psymodel.h, - libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, - libmp3lame/set_get.c, libmp3lame/set_get.h, libmp3lame/util.h: - - removing dead code - -2007-12-25 16:15 robert - - * libmp3lame/vbrquantize.c: - - some small code simplification - -2007-12-25 00:16 robert - - * libmp3lame/: presets.c, psymodel.c: - - clean code from obsolete branches - -2007-12-24 16:00 robert - - * frontend/parse.c, libmp3lame/lame.c, libmp3lame/psymodel.c, - libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, - libmp3lame/set_get.c, libmp3lame/takehiro.c, libmp3lame/util.h, - libmp3lame/vbrquantize.c: - - - removing legacy ISO quantization code - - vbr-new now has only two -qx settings left: q0 and q5 - - vbr-new can't use legacy GPSYCHO anymore - - TODO: - + remove legacy GPSYCHO code, as we don't use it anymore - + remove superflouos psy-model selection switches - + remove superflouos psy-model configuration switches like --cwlimit - -2007-12-20 14:44 robert - - * libmp3lame/vbrquantize.c: - - in rare cases, where one channel is completely zero, some illegal "scalefactor - selection info" might be used in VBR-NEW. fixed - -2007-12-17 20:54 robert - - * doc/html/history.html: - - fixing typo - -2007-12-17 00:08 robert - - * libmp3lame/vbrquantize.c: - - fixing typo - -2007-12-16 17:56 robert - - * doc/html/history.html, libmp3lame/psymodel.c: - - disabling the use of the "interchannel masking feature" in dual-channel case - -2007-12-16 17:18 robert - - * libmp3lame/: psymodel.c, vbrquantize.c: - - VBR-NEW: - -quantization: another "out of bits" strategy - -psymodel: dropped "inter channel effect", because the effect doesn't save - many bits, but raises the chance of annoying artefacts a lot. - -2007-12-14 02:52 robert - - * libmp3lame/psymodel.c: - - found new test sample SNAPS which needs some more short blocks - -2007-12-09 22:47 robert - - * libmp3lame/: encoder.c, lame.c, presets.c, psymodel.c, - psymodel.h, quantize_pvt.c, util.h: - - merger from test branch: - - features a new psy model, a modification from NSPSY - - VBR NEW uses the new psy model, unless you call lame with --nspsytune, or - the developer only switch --psymodel x, with x in {1,2} - - features of the new psy model: - - speed: it does determine the resulting block type before doing the fft - and other psy stuff and will calc long/short blocks only as necessary - - interchannel masking effect: it will be calculated after the mid-side fix - and it's working on convolution bands, instead of scalefactor bands - - mid-side fix: calculated on convolution bands, instead of sf bands - - mask_adjust feature: it's now used earlier in the convolution calculation - -2007-12-09 17:06 robert - - * libmp3lame/psymodel.c (rh0710_test): - - some fixes, ie. the short block pre-echo control was applied twice - -2007-12-08 23:27 robert - - * libmp3lame/: encoder.c, lame.c, presets.c, psymodel.c, - psymodel.h, quantize_pvt.c, util.h (rh0710_test): - - modified psy model for vbr-new - -2007-11-26 00:14 robert - - * Makefile.unix, frontend/get_audio.c, frontend/parse.c, - libmp3lame/psymodel.c, libmp3lame/vbrquantize.c: - - psymodel.c: - - bug fix in init_numlines: it returned sometimes a too large npart_[sl] - - fixing some more compiler warnings - get_audio.c: - - some fix in error-report in case of unsupported input format - -2007-11-25 23:38 robert - - * Makefile.unix, libmp3lame/presets.c, libmp3lame/psymodel.c, - libmp3lame/quantize.c, libmp3lame/quantize_pvt.h, - libmp3lame/util.h, libmp3lame/vbrquantize.c (rh0710_test): - - re-tuning - -2007-11-21 21:30 robert - - * libmp3lame/: quantize.c, quantize_pvt.h: - - bug fix for bin_search_StepSize. It returned illegal values, leading to - assertion failures in fast encoding mode, which only adjusts global step size. - -2007-11-12 10:46 robert - - * libmp3lame/: psymodel.c, util.h, vbrquantize.c (rh0710_test): - - - inter channel masking now on convolution bands - - mid/side fix now on convolution bands - -2007-11-08 01:13 robert - - * Makefile.unix, frontend/parse.c, libmp3lame/psymodel.c, - libmp3lame/quantize_pvt.c (rh0710_test): - - moving masking_lower adjustment into psymodel.c (for vbr-new) - -2007-11-03 14:04 robert - - * frontend/get_audio.c, libmp3lame/presets.c, libmp3lame/psymodel.c - (rh0710_test): - - limiting the sandpaper-noise hack to the minval range (ca. 1.2 kHz) - -2007-11-01 20:28 robert - - * doc/man/lame.1, frontend/get_audio.c, frontend/parse.c - (rh0710_test): - - adding main branch fixes - -2007-11-01 19:52 robert - - * frontend/get_audio.c: - - enabling --signed / --unsigned switches for 8 bit raw pcm input data - -2007-11-01 19:25 robert - - * frontend/: get_audio.c, parse.c: - - [ 1823881 ] lame 3.97 produces complete garbage - now invalid WAV/AIFF files are rejected, instead of trying to encode them as - raw pcm files. - -2007-11-01 19:23 robert - - * doc/man/lame.1: - - [ 1158193 ] Man page doesn't tell about stereo format in raw - [ 1158253 ] Data format is not described in the manpage - added some info to manpage - -2007-11-01 19:16 robert - - * libmp3lame/lame.c: - - bitrate_index may have been uninitialized under some rare circumstances - -2007-10-25 01:59 robert - - * libmp3lame/lame.c (rh0710_test): - - fixing some bad initialed value gfc->bitrate_index - -2007-10-24 02:04 robert - - * libmp3lame/psymodel.c: - - back to the roots. Maybe I'll branch from here - -2007-10-23 23:23 robert - - * libmp3lame/vbrquantize.c: - - turn of scalefac scale feature - -2007-10-23 02:46 robert - - * libmp3lame/psymodel.c: - - yeah, ok it's C and not C++ - open block scope for local variable - -2007-10-23 02:31 robert - - * libmp3lame/: psymodel.c, vbrquantize.c: - - dropping Naoki's idea of "simultaneous masking addition" for the newer VBR code - for now - -2007-10-22 12:00 robert - - * libmp3lame/: presets.c, psymodel.c: - - re-establishing previous mask adjustments - -2007-10-21 00:45 robert - - * libmp3lame/: lame.c, presets.c, psymodel.c, quantize.c, - version.h: - - recalibration of VBR new's compression level settings, because of recent bug fixes - -2007-10-19 00:10 robert - - * Makefile.unix: - - moving GTK config script to MP3x target compilation, it's not needed outside MP3x - -2007-10-18 02:54 robert - - * frontend/get_audio.c: - - seems, VC compiler doesn't like redundant semicolon, fixed - -2007-10-18 02:09 robert - - * libmp3lame/: machine.h, psymodel.c, quantize.c, set_get.c: - - PSY: the newer vbr code uses tonalality estimation from long blocks for short blocks - -2007-10-16 01:07 robert - - * doc/html/history.html, frontend/get_audio.c: - - Fix for bugtracker item: [ 1813496 ] AIFF parsing bug - -2007-10-14 20:18 robert - - * frontend/get_audio.c, libmp3lame/id3tag.h, libmp3lame/util.c: - - some more compiler and compiler-warning fixes - -2007-10-14 19:54 robert - - * frontend/get_audio.c, frontend/get_audio.h, frontend/mp3x.c, - frontend/parse.c, frontend/portableio.c, include/lame.h, - libmp3lame/bitstream.c, libmp3lame/id3tag.c, libmp3lame/lame.c, - libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, - libmp3lame/set_get.c, libmp3lame/takehiro.c, libmp3lame/util.c, - libmp3lame/vector/xmm_quantize_sub.c: - - eliminating some of the several hundred compiler warnings - -2007-10-14 14:16 robert - - * doc/html/history.html: - - updating history to latest changes: - - bug fix scalefactor selection in vbr new code - - feature added: WAVE_FORMAT_EXTENSIBLE - -2007-10-14 13:33 robert - - * frontend/get_audio.c: - - feature request [ 1811483 ] WAVE_FORMAT_EXTENSIBLE support - - We still support PCM wave files only with our little wave reader, - it is just that we now accept them when written in wave format extensible. - -2007-10-13 20:34 robert - - * libmp3lame/vbrquantize.c: - - Bug-fix: the quantization-find-routine could under some circumstances return - some way too large quantization step size. For example, the song Piku from - The Chemical Brothers had almost 550 scalefactors wrong. For most songs this - fix makes no difference. - -2007-10-08 20:59 robert - - * frontend/brhist.c: - - replaced variable 'lines' by 'lines_used', because term.h has some macro - definition for 'lines'. - -2007-09-29 19:17 robert - - * libmp3lame/vbrquantize.c: - - - Removing dead code. - - Avoiding unnecessary search for quantization step sizes. This speeds-up lower quality encodings. - If energy is below masking threshold, the resulting step size will be at 255. So no need to search what we already know. - -2007-08-29 13:44 aleidinger - - * configure: - - regen - -2007-08-29 13:43 aleidinger - - * configure.in: - - Don't change the include/library path, if there's no corresponding soundfile - path set. - - This is supposed to fix the compile problem with soundfile Rogério sees on - Debian. - -2007-08-20 21:54 robert - - * Makefile.MSVC: - - removing duplicate target_dir references - -2007-08-12 18:30 robert - - * Makefile.MSVC: - - let targets link against multi threaded C-library - -2007-08-12 00:07 robert - - * doc/html/history.html, libmp3lame/vbrquantize.c, - libmp3lame/version.h: - - small speedup in VBR NEW - - we are now at 3.98 beta 5, a release candidate for 3.98 stable? - -2007-08-11 23:06 robert - - * testcase.mp3: - - updating "testcase.mp3" for LAME 3.98 beta 5 - -2007-08-11 21:44 robert - - * libmp3lame/psymodel.c: - - Short block masking: the CBR/ABR code seems to rely on the old masking definition. The VBR NEW code on the other hand needs the lowered masking. - -2007-07-30 06:51 aleidinger - - * ChangeLog: - - Add the changelog for the last ~10 months. - -2007-07-30 06:39 aleidinger - - * configure: - - regen with autoconf 2.61 - -2007-07-30 06:37 aleidinger - - * configure.in: - - oops, previous fix for the gcc version pattern matching was wrong... - -2007-07-30 06:30 aleidinger - - * configure.in: - - - fix the pattern matching for the gcc version check - - improve the optimization stuff for gcc 4.x - -2007-07-30 06:28 aleidinger - - * config.h.in: - - regen with autoconf 2.61 - -2007-07-30 06:28 aleidinger - - * Makefile.in, aclocal.m4, ACM/Makefile.in, ACM/ADbg/Makefile.in, - ACM/ddk/Makefile.in, ACM/tinyxml/Makefile.in, Dll/Makefile.in, - debian/Makefile.in, doc/Makefile.in, doc/html/Makefile.in, - doc/man/Makefile.in, dshow/Makefile.in, frontend/Makefile.in, - include/Makefile.in, libmp3lame/Makefile.in, - libmp3lame/i386/Makefile.in, libmp3lame/vector/Makefile.in, - mac/Makefile.in, misc/Makefile.in, mpglib/Makefile.in: - - regen with automake 1.10 - -2007-07-29 22:46 robert - - * doc/html/history.html: - - adding latest bug fixes to history - -2007-07-29 22:07 robert - - * ACM/ADbg/ADbg.dsp, frontend/lame_vc6.dsp, dshow/dshow.dsp, - include/lame.def, lame_vc6.dsw, ACM/lameACM_vc6.dsp, - Dll/LameDll_vc6.dsp, ACM/tinyxml/tinyxml.dsp, - frontend/mp3x_vc6.dsp, libmp3lame/libmp3lame_dll_vc6.dsp, - libmp3lame/libmp3lame_vc6.dsp, mpglib/mpglib_vc6.dsp: - - updating VC6 project files - - from MSDN: DLLs should be linking against multi-threaded MS VC rountime library - -2007-07-29 16:02 robert - - * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: - - Fixing a possible resource leak - -2007-07-28 12:48 aleidinger - - * configure: - - regen (new LAME version) - -2007-07-28 00:41 robert - - * frontend/get_audio.c: - - task tracker item [ 1445175 ] Input being stdin fails in Windows on WAV files - and item [ 1576370 ] Fix for piping in a non PCM file via stdin under Windows - - The workaround tests the actual file descriptor being a pipe or not. - In case being a pipe, the number of bytes to skip are simply read. - -2007-07-27 08:49 bouvigne - - * README: - - 3.98 - -2007-07-24 17:46 bouvigne - - * frontend/brhist.c, frontend/brhist.h, frontend/get_audio.c, - frontend/get_audio.h, frontend/gpkplotting.c, - frontend/gpkplotting.h, frontend/gtkanal.c, frontend/gtkanal.h, - frontend/lametime.c, frontend/lametime.h, frontend/main.c, - frontend/main.h, frontend/parse.c, frontend/timestatus.c, - frontend/timestatus.h, include/lame.h, libmp3lame/VbrTag.c, - libmp3lame/VbrTag.h, libmp3lame/bitstream.c, - libmp3lame/bitstream.h, libmp3lame/encoder.c, - libmp3lame/encoder.h, libmp3lame/fft.h, libmp3lame/id3tag.c, - libmp3lame/l3side.h, libmp3lame/lame-analysis.h, - libmp3lame/lame.c, libmp3lame/machine.h, - libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, - libmp3lame/newmdct.h, libmp3lame/presets.c, - libmp3lame/psymodel.c, libmp3lame/psymodel.h, - libmp3lame/quantize.c, libmp3lame/quantize.h, - libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, - libmp3lame/reservoir.c, libmp3lame/reservoir.h, - libmp3lame/set_get.c, libmp3lame/set_get.h, libmp3lame/tables.c, - libmp3lame/tables.h, libmp3lame/takehiro.c, libmp3lame/util.c, - libmp3lame/util.h, libmp3lame/vbrquantize.c, - libmp3lame/vbrquantize.h, libmp3lame/version.c, - libmp3lame/version.h, libmp3lame/vector/lame_intrin.h, - libmp3lame/vector/xmm_quantize_sub.c: - - Library GPL -> Lesser GPL - -2007-07-24 15:26 robert - - * frontend/: get_audio.c, parse.c: - - bug item [ 1160757 ] --big-endian and --little-endian don't work with -m s -a - and item [ 1160741 ] --big-endian and --little-endian are swapped - - the --big-endian/--little-endian switches do now work with our minimal - wave and pcm reader too. - - The problems reported in the above bug tracker items should be solved now - -2007-07-22 18:49 robert - - * libmp3lame/lame.c: - - bug fix: [ 1746336 ] Incorrect Bitrate with ABR und --resample, LAME 3.98b4 - - There was a typo in patch Revision 1.294 "restrict mpeg 2.5 to 64kbps" - which set the average bitrate up to the maximum allowed bitrate. - -2007-07-20 23:23 robert - - * libmp3lame/bitstream.c: - - fixing task tracker item: [ 1755981 ] Percent signs in print format not escaped - -2007-07-16 20:06 bouvigne - - * include/lame.h: - - gpl -> lgpl (we forgot about it a long time ago) - -2007-07-10 21:05 robert - - * dshow/Property.rc: - - updating version info - -2007-07-01 20:05 robert - - * mpglib/: common.c, common.h, interface.c, layer1.c, layer2.c, - layer2.h, mpg123.h: - - we will always use Layer1 and 2 decoding - -2007-07-01 16:17 robert - - * doc/html/history.html: - - word wrapping fixed - -2007-07-01 16:16 robert - - * doc/html/history.html: - - adding latest changes for Task tracker item [ 1719593 ] and [ 1742623 ] - -2007-07-01 14:39 robert - - * frontend/: get_audio.c, get_audio.h, gtkanal.c, main.c, parse.c: - - trying to fix Bugs item #1742623 - -2007-06-30 17:14 robert - - * USAGE, frontend/parse.c, include/lame.h, libmp3lame/id3tag.c: - - bug fix: [ 1719593 ] Track numbers > 255 not allowed even with --id3v2-only - -2007-06-27 21:23 robert - - * configMS.h, configure.in: - - changing version number 3.97 to 3.98 - -2007-06-27 21:22 robert - - * include/lame.def: - - adding newly id3tag functions to DLL export definition - -2007-06-26 01:33 robert - - * libmp3lame/VbrTag.c: - - I missed the swapped arguments in the patch by Jonathan Stott, now fixed. - -2007-06-26 00:57 robert - - * doc/html/contributors.html, doc/html/history.html, - libmp3lame/VbrTag.c, libmp3lame/lame.c: - - Patch by Jonathan Stott: - - Bug tracker items: [ 1590693 ] ID3v2 tag not writing, [ 1636267 ] ID3v2 tags overwritten - If the output file is opened 'write-only', then LAME can't update the LAME tag. - In this case LAME silently overwrote the first bytes of the file and an - optional ID3v2 tag disappeared. Now an error message will be printed and - no data is written in this case. - -2007-06-23 18:43 robert - - * libmp3lame/: id3tag.c, util.c, util.h: - - fixing another possible memory leak - -2007-06-23 17:39 robert - - * frontend/main.c, frontend/parse.c, libmp3lame/id3tag.c, - libmp3lame/id3tag.h, libmp3lame/util.c, libmp3lame/version.h: - - Some simplifications on ID3 tag usage: - - specifying an unlisted ID3v1 genre does not count as an error anymore, it is mapped to "Other" and passed as-is to an ID3v2 genre tag - - an ID3 track argument is passed directly to an ID3v2 TRCK tag, allowing for example "002/012" - -2007-06-23 15:16 robert - - * libmp3lame/: id3tag.c, util.c: - - Now ID3 tag are local copies of given parameters. This allows to pass strings located on the program stack and you don't have to think about the lifetime of your strings you pass as arguments. - -2007-06-23 13:27 robert - - * libmp3lame/util.c: - - Bug fix: Nyaochi's "ID3v2 extension" patches introduced some memory leaks - -2007-06-04 22:31 robert - - * doc/html/history.html: - - ups: moved history entry "TLEN bug" up into correct list - -2007-06-04 22:25 robert - - * doc/html/history.html: - - added: bugfix TLEN computation - -2007-06-04 22:04 robert - - * libmp3lame/id3tag.c: - - bug fix: [ 1730875 ] TLEN calculation wrong - fixing the calculation of "playlength in ms" written into the ID3v2 tag TLEN - -2007-05-25 03:38 robert - - * libmp3lame/vbrquantize.c: - - VBR_NEW: more tuned 'out of bits' strategy - -2007-05-24 13:26 bouvigne - - * doc/html/contributors.html, doc/html/history.html, - doc/html/id3.html, doc/man/lame.1, frontend/parse.c: - - support for total tracks count in the frontend (id3 tags) - -2007-05-24 13:10 bouvigne - - * libmp3lame/id3tag.c: - - adding a total track count should add an id3 V2 tag - -2007-05-24 12:58 bouvigne - - * doc/html/history.html, doc/html/id3.html, frontend/main.c, - frontend/parse.c, frontend/parse.h, include/lame.h, - libmp3lame/id3tag.c, libmp3lame/id3tag.h: - - Albumart (APIC ID3v2.3 frame) patch by Nyaochi - -2007-05-24 12:29 bouvigne - - * doc/html/contributors.html, doc/html/history.html, - doc/html/id3.html, frontend/parse.c, include/lame.h, - libmp3lame/id3tag.c, libmp3lame/id3tag.h: - - Ability to set user-defined ID3v2.3 frame (patch from Nyaochi) - -2007-05-23 14:44 bouvigne - - * doc/html/: contributors.html, history.html, index.html: - - Updated history - -2007-05-22 10:10 robert - - * libmp3lame/: quantize.c, quantize_pvt.c, version.h: - - ok, now the real bug fix, forget the last commit: - the ABR routine did not apply format specific bitrate constrains when allocating bits; now it does - -2007-05-22 08:39 robert - - * libmp3lame/: quantize.c, quantize_pvt.c: - - bug fix: reduce side was given a too large 'max bits' parameter, resulting in assertion aborts - -2007-05-21 22:20 robert - - * libmp3lame/: lame.c, util.c, util.h: - - bug fix for feature request: - "adjust user min/max bitrate if outside of allowed range (ex: -V9 -B320) - Requested by Benski" - - Some input files with unusual sample frequencies couldn't be encoded at CBR anymore, no matter what resample/bitrate options where passed to LAME. - (Testsample: FX319.WAV) - -2007-05-20 18:07 robert - - * libmp3lame/: quantize.c, quantize_pvt.c, util.h, vbrquantize.c, - version.h: - - VBR_NEW: 'out of bits' situation improved - -2007-05-17 22:25 robert - - * ACM/ACM.cpp, libmp3lame/VbrTag.c: - - Bugs item #1693461: fixing memory leaks in LAME ACM - -2007-05-16 02:43 robert - - * libmp3lame/version.h: - - we are now at 3.98 beta 1 (of many more to come) - -2007-05-16 01:30 robert - - * frontend/parse.c, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, - libmp3lame/quantize_pvt.c, libmp3lame/set_get.c, - libmp3lame/util.h, libmp3lame/vbrquantize.c: - - - some code clean-up - - bug fix: in rare cases 'on_pe' returned target bits violating the 4095 bit - maximum constrain for a granule - - VBR-NEW: modified strategy to handle 'out of bits' cases - -2007-05-13 18:31 robert - - * libmp3lame/: VbrTag.c, bitstream.c, bitstream.h, encoder.c, - id3tag.c, lame_global_flags.h, util.h, version.h: - - bug fix: [ 1711980 ] LAME writes invalid Xing header when ID3 tags exist - -2007-03-12 21:56 bouvigne - - * libmp3lame/util.c: - - adjust user min/max bitrate if outside of allowed range (ex: -V9 -B320) - - Requested by Benski - -2007-01-13 18:02 robert - - * libmp3lame/util.h: - - bug fix. - bug tracker entry: [ 1634092 ] encoder.c doesn't compile with --disable-brhist - -2007-01-13 17:58 robert - - * libmp3lame/: encoder.c, lame.c: - - bug fix. - bug tracker entry: [ 1634092 ] encoder.c doesn't compile with --disable-brhist - -2007-01-09 23:10 robert - - * Makefile.unix: - - adding vector/xmm_quantize_sub.c - -2007-01-09 22:24 bouvigne - - * libmp3lame/libmp3lame_vc8.vcproj: - - directory x86_64 -> vector - -2007-01-09 12:02 aleidinger - - * libmp3lame/: lame.c, mpglib_interface.c, psymodel.c: - - fix the easy warnings - -2007-01-09 10:31 aleidinger - - * libmp3lame/quantize.c: - - include the right intrinsics header and only if we need it - -2007-01-09 10:29 aleidinger - - * Makefile.MSVC: - - use the code in the vector directory - -2007-01-09 10:25 aleidinger - - * Makefile.in, ACM/Makefile.in, ACM/ADbg/Makefile.in, - ACM/ddk/Makefile.in, ACM/tinyxml/Makefile.in, Dll/Makefile.in, - debian/Makefile.in, doc/Makefile.in, doc/html/Makefile.in, - doc/man/Makefile.in, dshow/Makefile.in, frontend/Makefile.in, - include/Makefile.in, libmp3lame/Makefile.in, - libmp3lame/i386/Makefile.in, mac/Makefile.in, misc/Makefile.in, - mpglib/Makefile.in, configure: - - regen - -2007-01-09 10:23 aleidinger - - * libmp3lame/i386/Makefile.am: - - the quoting does not work out as expected, remove it - -2007-01-09 10:22 aleidinger - - * libmp3lame/: lame.c, quantize.c: - - remove the CPUCCODE check, it is not needed anymore - -2007-01-09 10:21 aleidinger - - * config.h.in: - - regen - -2007-01-09 10:20 aleidinger - - * configure.in: - - Use the vector lib on amd64 and x86. - - This only works with gcc when -msse is specified in CFLAGS at configure - time. Currently I get a sigbus with gcc 3.4.6 with the vector lib. - - Remove the HAVE_GTK define, it is not used anymore. - -2007-01-09 10:18 aleidinger - - * libmp3lame/Makefile.am: - - add the vector lib and remove the x86_64 part - -2007-01-09 10:15 aleidinger - - * libmp3lame/vector/: Makefile.am, Makefile.in, lame_intrin.h, - xmm_quantize_sub.c: - - this is a copy of the x86_64 parts with modified automake stuff - -2007-01-07 21:28 robert - - * Makefile.MSVC: - - do not build legacy BLame DLL on make target all - -2007-01-07 20:00 aleidinger - - * libmp3lame/i386/Makefile.in: - - regen - -2007-01-07 20:00 aleidinger - - * libmp3lame/i386/Makefile.am: - - fftsse.nas is used now. - -2007-01-07 18:03 robert - - * lame_vc6.dsw, frontend/lame_vc6.dsp, frontend/mp3x_vc6.dsp, - libmp3lame/libmp3lame_dll_vc6.dsp, libmp3lame/libmp3lame_vc6.dsp, - mpglib/mpglib_vc6.dsp: - - VC6 project files updated, added project to generate Libmp3lame-dynamic.lib/dll - -2007-01-07 14:51 robert - - * Makefile.MSVC: - - Makefile with some basic Libmp3lame-dynamic.lib generation ability - -2007-01-07 14:31 robert - - * include/lame.def: - - export definition for Libmp3lame-dynamic.lib - -2007-01-07 14:30 robert - - * libmp3lame/fft.c, Makefile.unix, frontend/parse.c, - include/lame.h, libmp3lame/lame.c, mpglib/mpg123.h: - - adding FFTSSE assembler code to the HAVE_NASM conditional code - -2007-01-07 14:28 robert - - * .cvsignore, lame_clients_vc6.dsw, frontend/.cvsignore: - - collecting all LAME client projects in lame_clients_vc6.dsw workspace. - -2007-01-07 14:24 robert - - * dshow/: dshow.dsp, README: - - DirectShow Filter links against Libmp3lame-dynamic.lib now - -2007-01-07 14:23 robert - - * Dll/LameDll_vc6.dsp: - - BLAME DLL links against Libmp3lame-dynamic.lib now - -2007-01-07 14:21 robert - - * ACM/: lameACM_vc6.dsp, ADbg/ADbg.dsp, tinyxml/tinyxml.dsp: - - ACM links against Libmp3lame-dynamic.lib now - -2006-12-28 21:56 robert - - * Dll/BladeMP3EncDLL.c: - - we are now at 3.98a11 - -2006-12-28 21:49 robert - - * dshow/dshow.dsp: - - we are now at 3.98a11 - -2006-12-28 21:44 robert - - * libmp3lame/version.h: - - we are now at 3.98a11 - -2006-12-28 21:41 robert - - * doc/html/history.html: - - update history - -2006-12-28 20:41 robert - - * dshow/: Encoder.cpp, Encoder.h, Property.rc, dshow.dsp, - dshow.dsw: - - DirectShow filter uses LAME Library API now - -2006-12-27 22:19 robert - - * libmp3lame/reservoir.c: - - small change in the bitreservoir handling, enable the old - --strictly-enforce-ISO switch again - -2006-12-27 22:09 robert - - * doc/html/history.html: - - updating history entries - -2006-12-25 21:37 robert - - * ACM/: ACM.cpp, ACM.h, ACMStream.cpp, ACMStream.h, - AEncodeProperties.cpp, DecodeStream.h, acm.rc, lameACM_vc6.dsp, - main.cpp: - - some changes, now I can compile the ACM stuff at least - -2006-12-25 16:15 robert - - * libmp3lame/reservoir.c: - - relaxing the FhG bitreservoir restriction a little bit: - at 320 kbps it seems to be possible to use the reservoir if we limit it to almost the size of bits used for sideinfo - -2006-12-21 09:15 aleidinger - - * Makefile.in, ACM/Makefile.in, Dll/Makefile.in, - debian/Makefile.in, doc/Makefile.in, dshow/Makefile.in, - frontend/Makefile.in, ACM/ADbg/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.in, mac/Makefile.in, misc/Makefile.in, - mpglib/Makefile.in, ACM/ddk/Makefile.in, ACM/tinyxml/Makefile.in, - doc/html/Makefile.in, doc/man/Makefile.in, - libmp3lame/i386/Makefile.in, configure: - - regen - -2006-12-21 09:14 aleidinger - - * libmp3lame/Makefile.am: - - Handle CPU specific C code in a generic way. - -2006-12-21 09:09 aleidinger - - * libmp3lame/i386/Makefile.am: - - Quote some parts in case directory names contain spaces. - -2006-12-21 09:07 aleidinger - - * aclocal.m4, config.h.in: - - regen - -2006-12-21 09:04 aleidinger - - * configure.in: - - Additional stuff for x86_64. First cut... - -2006-12-21 09:03 aleidinger - - * acinclude.m4: - - Properly quote some parts according to the new rules auf aclocal. - -2006-12-21 09:00 aleidinger - - * libmp3lame/: lame.c, quantize.c: - - On x86 we also have the xmmintrin header, but we don't use such code there. - So not only check for the header, but also for a CPUCCODE define. This may - be refined later depending on further inline C code showing up or not. - -2006-12-21 02:18 robert - - * libmp3lame/: machine.h, version.h: - - we are now at patch level 10 - -2006-12-21 02:17 robert - - * libmp3lame/psymodel.c: - - fixing some divide by zero error - -2006-12-20 00:17 robert - - * frontend/: get_audio.c, parse.c: - - let LAME be more strict when it comes to unrecognized program options or unsupported input file formats - -2006-12-19 18:50 bouvigne - - * libmp3lame/libmp3lame_vc8.vcproj: - - include paths - -2006-12-19 01:23 robert - - * frontend/parse.c: - - add some help text entries - -2006-12-19 01:23 robert - - * libmp3lame/lame.c: - - disabling temporal masking effect by default for vbr-mtrh, it works against other tunings in this mode - -2006-12-18 23:11 robert - - * libmp3lame/psymodel.c: - - fixing some index problems in convolution loops - -2006-12-17 23:21 robert - - * libmp3lame/version.h: - - we are at 3.98 alpha 9 - -2006-12-17 21:16 robert - - * libmp3lame/psymodel.c: - - fixing two possible out of range index errors accessing fftenergy array - for GPSYCHO too - -2006-12-17 20:53 robert - - * libmp3lame/: psymodel.c, util.h: - - fixing two possible out of range index errors accessing fftenergy array - - convert partition to scalefac: - as we replaced ISO tables with own calculations we forgot to add proper - weightening for the convolution band where the transition from one scalefactor - to th next scalefactor happens. Now added. - -2006-12-17 20:49 robert - - * libmp3lame/bitstream.c: - - assert didn't match valid input range: bitrate 8 - 640 kbps - -2006-12-15 22:16 robert - - * libmp3lame/version.h: - - we are now at 3.98 alpha 8 - -2006-12-15 22:15 robert - - * libmp3lame/psymodel.c: - - 2 bug fixes - a) in some cases we did access uninitialized data in conversion from partition bands to scalefac bands - b) in nsspy-code the conversion from partition to scalefac bands for short blocks did not match the long block case, nor gpsycho. - -2006-12-07 10:50 robert - - * frontend/main.c, libmp3lame/util.c: - - disabling the "process affinity kludge" - -2006-11-27 20:28 robert - - * libmp3lame/lame.c: - - - removed unused function parameter nVbrScale in function PutVbrTag - -2006-11-20 20:02 robert - - * libmp3lame/: VbrTag.c, VbrTag.h: - - - removed unused function parameter nVbrScale in function PutVbrTag - - reduced compilation warnings - -2006-11-15 02:25 robert - - * libmp3lame/lame.c: - - bug fix: [ 1596306 ] lame 3.97: "fatal error during initialization" with this wav - - an invalid MPEG samplerate was returned by optimum_samplefreq function - -2006-11-15 02:21 robert - - * Makefile.MSVC, libmp3lame/quantize.c: - - fixing compile problem with quantize_sub.c - -2006-11-12 11:44 bouvigne - - * doc/html/history.html: - - history - -2006-11-11 17:58 bouvigne - - * libmp3lame/: libmp3lame_vc8.vcproj, quantize.c: - - intrinsics functions are now in a separate directory (as in v4) - -2006-11-11 17:32 bouvigne - - * frontend/mp3x_vc8.vcproj: - - bring back mp3x to life (vc8) - -2006-11-11 17:14 bouvigne - - * README.WINGTK, lame_vc8.sln, Dll/LameDll_vc8.vcproj, - frontend/lame_vc8.vcproj, libmp3lame/libmp3lame_vc8.vcproj, - mpglib/mpglib_vc8.vcproj: - - bring back mp3x to life (vc8) - -2006-11-08 01:53 robert - - * frontend/: get_audio.c, main.c, main.h, parse.c: - - feature request: [ 1588283 ] Flushing output stream in lame.exe - - 'flush' option added - -2006-11-07 01:35 robert - - * libmp3lame/: gain_analysis.c, id3tag.c, lame_global_flags.h, - util.c: - - fixing some compiler warnings, removing some unused lame_global_flags elements - -2006-11-07 00:36 robert - - * libmp3lame/lame.c, libmp3lame/lame_global_flags.h, - libmp3lame/quantize.c, frontend/parse.c, libmp3lame/VbrTag.c, - libmp3lame/set_get.c, libmp3lame/util.h: - - removing dead code: - side channel sparsing didn't work as hoped - -2006-11-06 22:39 robert - - * frontend/: brhist.c, get_audio.c, parse.c: - - eliminating some compiler warnings - -2006-11-05 18:54 robert - - * frontend/console.c: - - bug tracker item: - [ 1585942 ] lame not --silent when TERM not set - - in case LAME was build with TERMCAP defined and no TERM environment is - defined, now we do not issue an error message and silently fallback to the default - behaviour as if LAME was compiled without TERMCAP defined. - -2006-11-05 17:49 robert - - * frontend/timestatus.c: - - include string header file added - unused variable removed in encoder_progress_end - -2006-11-05 16:08 robert - - * frontend/: main.c, timestatus.c, timestatus.h: - - refactoring progress display code out of encoding loop - it's located in timestatus.c now - - Windows specific: - fixed parameter type for SetProcessAffinityMask - Gabriel: do we need similar things for Win64 too? - -2006-11-05 13:37 robert - - * frontend/console.c: - - dead code removed - -2006-11-05 02:30 robert - - * libmp3lame/libmp3lame_vc8.vcproj: - - using fftsse.nas - -2006-11-05 01:55 robert - - * Makefile.MSVC: - - using fftsse.nas - -2006-11-04 18:59 robert - - * Makefile.MSVC, Makefile.unix, frontend/parse.c, libmp3lame/fft.c, - libmp3lame/lame.c, libmp3lame/version.h, - libmp3lame/i386/fft3dn.nas, libmp3lame/i386/fftsse.nas, - libmp3lame/i386/nasm.h: - - we are now at patch level 7 - - changes in lame frontend switches - -k removed, - call lowpass and highpass if you need to change them - --short/noshort/allshort - degraded into DEVELOPER ONLY switches - normal users shouldn't use them - -X -Z degraded to DEVELOPER ONLY switches - -X is too tough to communicate to end users - -Z isn't used actualy - - fft3dnow and fftsse nasm code taken from LAME4 branch - but not added to the configure stuff/VC project files - -2006-10-18 20:29 bouvigne - - * Dll/LameDll_vc8.vcproj: - - added back the .def config - -2006-10-05 21:07 bouvigne - - * libmp3lame/lame.c: - - error in a test (noticed by Robert) - -2006-09-30 19:55 kylev - - * lame.spec.in: - - we distribute a .gz, not a .bz2, and there really isn't a public URL for the file - -2006-09-30 15:35 aleidinger - - * configure.in: - - Only check for sndfile if it is requested. - -2006-09-30 15:35 aleidinger - - * Makefile.in, Dll/Makefile.in, frontend/Makefile.in, - libmp3lame/Makefile.in, mpglib/Makefile.in, configure: - - regen - -2006-09-30 09:17 bouvigne - - * Makefile.am, Dll/Makefile.am, frontend/Makefile.am, - libmp3lame/Makefile.am, mpglib/Makefile.am: - - updated the .am files to change vc7 to vc8 - -2006-09-24 16:17 bouvigne - - * doc/html/history.html: - - updated history - -2006-09-23 22:02 bouvigne - - * libmp3lame/version.h (lame3_97): - - 3.97 release - -2006-09-23 21:46 bouvigne - - * doc/html/history.html: - - release 3.97 - -2006-09-23 19:30 aleidinger - - * configure: - - regen - -2006-09-23 19:29 aleidinger - - * config.h.in, configure.in: - - check for xmmintrin.h - -2006-09-23 08:42 bouvigne - - * configMS.h (lame3_97): - - borland config (from main branch) - -2006-09-23 08:25 bouvigne - - * Dll/: BladeMP3EncDLL.c (lame3_97), BladeMP3EncDLL.c: - - fix in boolean comparison for Delphi progs (bug #1536751) - -2006-09-23 08:01 bouvigne - - * doc/html/: history.html, index.html (lame3_97): - - 3.97 - -2006-09-22 19:18 aleidinger - - * ChangeLog: - - update from CVS history - -2006-09-22 18:51 aleidinger - - * configMS.h: - - Borland C seems to follow the lead of MSC. - - Bug ID: 1563522 - -2006-09-10 14:25 bouvigne - - * frontend/parse.c, libmp3lame/lame.c, libmp3lame/tables.c, - libmp3lame/util.c: - - restrict mpeg 2.5 to 64kbps - -2006-09-03 15:07 bouvigne - - * lame_vc7.sln, Dll/LameDll_vc7.vcproj, frontend/lame_vc7.vcproj, - frontend/mp3x_vc7.vcproj, libmp3lame/libmp3lame_vc7.vcproj, - mpglib/mpglib_vc7.vcproj: - - removed unmaintained VC7 project files - -2006-08-18 18:22 bouvigne - - * doc/html/history.html, libmp3lame/psymodel.c, - libmp3lame/version.h (lame3_97): - - backported the workaround against short block detection issue - -2006-08-06 16:44 takehiro - - * libmp3lame/: psymodel.c, tables.c - (takehiro-2002_05_07-experimental): - - update ATH adjustment algorithm. - - if the block type is short, do not use ATH adjustment with equal pressure - curve, because the curve is not exact for impulse-like signal. - -2006-07-30 13:53 bouvigne - - * configMS.h, libmp3lame/util.c: - - enable SSE code when using x64 - -2006-07-30 09:51 bouvigne - - * lame_vc8.sln, Dll/LameDll_vc8.vcproj, frontend/lame_vc8.vcproj, - libmp3lame/libmp3lame_vc8.vcproj, mpglib/mpglib_vc8.vcproj: - - x64 builds - -2006-07-30 09:32 bouvigne - - * Dll/LameDll_vc8.vcproj: - - updated project - -2006-07-30 09:11 bouvigne - - * lame_vc8.sln, Dll/LameDll_vc8.vcproj: - - added lame DLL VC8 project - -2006-07-14 16:06 bouvigne - - * lame_vc8.sln, frontend/lame_vc8.vcproj, - libmp3lame/libmp3lame_vc8.vcproj, mpglib/mpglib_vc8.vcproj: - - VC8 projects - -2006-07-14 15:58 bouvigne - - * libmp3lame/psymodel.c: - - slight change in the short block detection safety threshold - -2006-06-28 23:05 robert - - * libmp3lame/lame.c: - - full outer loop search disabled because of audible distortions it may generate - -2006-06-28 21:05 robert - - * libmp3lame/psymodel.c: - - normalizing the spreading function (vbr-new) - -2006-06-24 15:19 robert - - * libmp3lame/: lame.c, quantize_pvt.c, version.h: - - enabling the conditional RH_ATHAA_FIX code for vbr-new - we are now at patch level 6 - -2006-06-24 01:57 robert - - * libmp3lame/: lame.c, quantize_pvt.c: - - tuning ATHAA_FIX for high quality VBR new presets - -2006-06-23 23:40 robert - - * libmp3lame/: lame.c, quantize.c, quantize_pvt.c, vbrquantize.c: - - tuning ATHAA_FIX for midrange VBR new presets - -2006-06-23 23:09 robert - - * libmp3lame/machine.h: - - always compile in assertions for alpha builds - -2006-06-23 23:06 robert - - * Makefile.MSVC: - - updating LibSndFile support, it's used by default now - -2006-06-23 20:52 aleidinger - - * libmp3lame/version.h: - - bump the patchlevel for the updated sndfile support - -2006-06-23 20:49 aleidinger - - * doc/html/history.html: - - document the updated libsndfile support - -2006-06-23 20:46 aleidinger - - * Makefile.in, aclocal.m4, configure, ACM/Makefile.in, - ACM/ADbg/Makefile.in, ACM/ddk/Makefile.in, - ACM/tinyxml/Makefile.in, Dll/Makefile.in, debian/Makefile.in, - doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, - dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, - mac/Makefile.in, misc/Makefile.in, mpglib/Makefile.in: - - regen - -2006-06-23 20:40 aleidinger - - * frontend/get_audio.c, configure.in, frontend/Makefile.am: - - Add support for a recent sndfile library. - - Submitted by: Erik de Castro Lopo (sndfile author) - -2006-06-18 23:02 robert - - * libmp3lame/lame.c: - - developer only switch "--tune x" mow modifies current mask_adjust settings - instead of assigning x to it - -2006-06-18 21:32 robert - - * Makefile.unix, libmp3lame/quantize.h: - - adding RH_TEST_ATHAA_FIX to the Makefile config RH - matching declaration and implementation of trancate_smallsspectrums - -2006-06-18 20:49 robert - - * libmp3lame/bitstream.c: - - fixing asserts - -2006-06-18 20:48 robert - - * libmp3lame/psymodel.c: - - bugfix: in NSPSY highpass filter, out of bounds access in fircoef - bugfix: loss of fraction in equal loudness weighting - -2006-06-18 19:20 robert - - * libmp3lame/quantize_pvt.c: - - small update to the ATHAA problem fix - -2006-06-18 18:16 robert - - * Makefile.MSVC, libmp3lame/machine.h, libmp3lame/quantize.h, - libmp3lame/quantize_pvt.c, libmp3lame/reservoir.c: - - trying to fix ATHAA problem for low volume files - to enable the code, one has to define RH_TEST_ATHAA_FIX at compile time - -2006-06-18 16:45 robert - - * frontend/gtkanal.c: - - needs console.h - -2006-06-18 16:44 robert - - * libmp3lame/bitstream.c: - - fixed assertion - -2006-06-16 00:16 robert - - * libmp3lame/quantize.c, libmp3lame/util.h, mpglib/interface.c: - - few more include dependencies sorted - -2006-06-15 23:51 robert - - * frontend/gtkanal.c, frontend/mp3x.c, libmp3lame/VbrTag.c, - libmp3lame/VbrTag.h, libmp3lame/bitstream.c, - libmp3lame/bitstream.h, libmp3lame/encoder.c, - libmp3lame/encoder.h, libmp3lame/fft.c, libmp3lame/fft.h, - libmp3lame/gain_analysis.c, libmp3lame/gain_analysis.h, - libmp3lame/id3tag.c, libmp3lame/id3tag.h, libmp3lame/l3side.h, - libmp3lame/lame-analysis.h, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/lameerror.h, - libmp3lame/machine.h, libmp3lame/mpglib_interface.c, - libmp3lame/newmdct.c, libmp3lame/newmdct.h, libmp3lame/presets.c, - libmp3lame/psymodel.c, libmp3lame/psymodel.h, - libmp3lame/quantize.c, libmp3lame/quantize.h, - libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, - libmp3lame/reservoir.c, libmp3lame/reservoir.h, - libmp3lame/set_get.c, libmp3lame/set_get.h, libmp3lame/tables.c, - libmp3lame/tables.h, libmp3lame/takehiro.c, libmp3lame/util.c, - libmp3lame/util.h, libmp3lame/vbrquantize.c, - libmp3lame/version.c, libmp3lame/version.h, mpglib/interface.c, - mpglib/layer3.c, mpglib/mpglib.h: - - some more header dependencies, indentation - -2006-06-15 23:07 robert - - * libmp3lame/: VbrTag.h, bitstream.c, bitstream.h, encoder.c, - encoder.h, fft.c, fft.h, gain_analysis.c, gain_analysis.h, - lame.c, libmp3lame_vc6.dsp, machine.h, mpglib_interface.c, - newmdct.c, presets.c, psymodel.c, psymodel.h, quantize.c, - quantize.h, quantize_pvt.c, quantize_pvt.h, reservoir.c, - reservoir.h, tables.c, takehiro.c, util.c, util.h, vbrquantize.c, - vbrquantize.h, version.c, version.h: - - making arguments and variables const where possible - -2006-06-15 16:03 robert - - * libmp3lame/: VbrTag.c, VbrTag.h, bitstream.c, bitstream.h, - encoder.c, encoder.h, fft.c, fft.h, gain_analysis.h, id3tag.c, - id3tag.h, l3side.h, lame-analysis.h, lame.c, lame_global_flags.h, - machine.h, mpglib_interface.c, newmdct.c, presets.c, psymodel.c, - psymodel.h, quantize.c, quantize.h, quantize_pvt.c, - quantize_pvt.h, reservoir.c, set_get.c, set_get.h, tables.c, - tables.h, takehiro.c, util.c, util.h, vbrquantize.c, version.c: - - tried to avoid includes within include headers to make dependencies more obvious - -2006-06-03 13:34 aleidinger - - * ChangeLog: - - Add nearly a year of history. - -2006-06-03 13:14 aleidinger - - * doc/html/history.html: - - add todays history - -2006-06-03 13:12 aleidinger - - * ltconfig, mkinstalldirs, stamp-h.in: - - Remove obsolete files (at least after the use of the new autotools, - they are not created anymore). - -2006-06-03 13:11 aleidinger - - * configure, config.h.in: - - Update to: - - libtool 1.5.22 - - automake 1.9 - - autoconf 2.59 - -2006-06-03 13:07 aleidinger - - * libmp3lame/i386/Makefile.am, Makefile.am.global, configure.in, - aclocal.m4, ltmain.sh, Makefile.in, ACM/Makefile.in, - ACM/ADbg/Makefile.in, ACM/ddk/Makefile.in, - ACM/tinyxml/Makefile.in, Dll/Makefile.in, debian/Makefile.in, - doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, - dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, - mac/Makefile.in, misc/Makefile.in, mpglib/Makefile.in: - - Update to: - - libtool 1.5.22 - - automake 1.9 - - autoconf 2.59 - -2006-06-03 13:03 aleidinger - - * libmp3lame/lame.c: - - - Fix bug introduced in last revision. - - Don't segfault in lame_close() in case of an error on initialisation. - -2006-06-03 11:41 aleidinger - - * libmp3lame/lame.c: - - Plug some memory leaks in the error case. - - Noticed by: Christophe Fergeau - SF-Bug: 1443630 - -2006-06-03 11:05 aleidinger - - * lame.spec.in: - - - Remove requirements for specific gcc versions, since modern ones "just work". - - Remove out-dated hyper-optimizations (some of which weren't valid compiler - flags anymore). - - Update to current RPM techniques and macros (inspired by freshrpms.net spec). - - Submitted by: Kyle VanderBeek - SF-Patch: 1488468 - -2006-05-04 19:50 bouvigne - - * libmp3lame/: reservoir.c, version.h: - - restrict max mp3 buf to solve compatibility issue with FhG directshow filter - -2006-05-04 19:43 bouvigne - - * libmp3lame/psymodel.c: - - attack detection: workaround against "low freq" periodic signals (like trumpet) - -2006-04-16 12:18 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen - -2006-04-16 09:02 takehiro - - * configure.in: - - better socket library configuration. - -2006-04-16 08:23 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - better socket function configuration. - -2006-04-16 07:06 takehiro - - * config.h.in, configure.in: - - remove winsock check. It seems we do not need it anymore. - -2006-04-09 16:12 takehiro - - * libmp3lame/.cvsignore (takehiro-2002_05_07-experimental): - - ignore pkgconfig file. - -2006-04-09 16:11 takehiro - - * Makefile.in, configure, configure.in, testcase.mp3, - ACM/Makefile.in, ACM/ADbg/Makefile.in, ACM/ddk/Makefile.in, - ACM/tinyxml/Makefile.in, Dll/Makefile.in, debian/Makefile.in, - doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, - dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/libmp3lame.pc.in, - libmp3lame/i386/Makefile.in, mac/Makefile.in, misc/Makefile.in, - mpglib/Makefile.in (takehiro-2002_05_07-experimental): - - prepare for pkgconfig support - -2006-04-08 11:57 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - tirivial hack of huffman coding with ESC code. - -2006-04-08 11:54 takehiro - - * libmp3lame/: machine.h, psymodel.c - (takehiro-2002_05_07-experimental): - - add alignment macro for not gcc environment - -2006-04-08 09:08 takehiro - - * libmp3lame/tags.c (takehiro-2002_05_07-experimental): - - supress magic numbers - -2006-04-08 07:46 takehiro - - * mpglib/: common.c, interface.c - (takehiro-2002_05_07-experimental): - - suppress warnings - -2006-04-08 07:46 takehiro - - * libmp3lame/: lame.c, set_get.c, set_get.h, tags.c - (takehiro-2002_05_07-experimental): - - supress warnings - -2006-04-08 07:45 takehiro - - * frontend/: gtkanal.c, mp3x.c (takehiro-2002_05_07-experimental): - - supress singed/unsigned warnings with gcc4.x - -2006-04-08 07:45 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - add one more warning option - -2006-04-08 07:44 takehiro - - * doc/html/id3.html (takehiro-2002_05_07-experimental): - - fix typos - -2006-04-08 07:16 takehiro - - * libmp3lame/: bitstream.c, gain_analysis.c, quantize.c, util.c, - util.h (takehiro-2002_05_07-experimental): - - fix singed/unsigned warning with gcc4.x - -2006-04-08 07:14 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix alignment error when gcc4.x with SSE enabled build - -2006-04-08 07:13 takehiro - - * libmp3lame/tags.c (takehiro-2002_05_07-experimental): - - fix typos in genre list. - suppress signed/unsigned warining with gcc4.x - -2006-04-08 07:12 takehiro - - * libmp3lame/id3tag.c: - - fix genre tag spelling as reported by CrazySoul - -2006-04-08 07:08 takehiro - - * doc/html/id3.html: - - fix spelling as reported by CrazySoul - -2006-02-18 16:35 takehiro - - * frontend/get_audio.c: - - remove redundant description. - -2006-02-18 16:35 takehiro - - * frontend/main.c: - - fix decoding problem when the output is stdout, reported by john.edwards33 - (sf.net bugid #1430719) - -2006-02-03 06:52 vitaly-ivanov - - * dshow/README: - - typo fix - -2006-02-02 21:04 robert - - * frontend/parse.c (lame3_97): - - "console_printf" replaced by "printf" - -2006-01-30 15:41 takehiro - - * frontend/get_audio.c: - - fix error message when unsupported format AIFF file. - (related bugid #1414515, - http://sourceforge.net/tracker/index.php?func=detail&aid=1414515&group_id=290&atid=100290 - ) - -2006-01-22 17:52 robert - - * include/lame.h, libmp3lame/encoder.c, libmp3lame/lame-analysis.h, - libmp3lame/lame.c, libmp3lame/psymodel.c, libmp3lame/quantize.c, - libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, - libmp3lame/reservoir.c, libmp3lame/util.h, libmp3lame/version.h: - - bug fixes: psy code used long block ATH in short block case - workaround: quantization routines of new vbr code failed on strong tonal - samples, due to over optimistic masking promises from psy model - -2006-01-21 16:39 takehiro - - * frontend/: get_audio.c, get_audio.h, main.c, parse.c - (takehiro-2002_05_07-experimental): - - prepare for RIFF-wave MP3 file. - -2006-01-21 16:29 takehiro - - * libmp3lame/id3tag.c (lame3_97): - - backport of rev 1.28 - - patch #1379187, "id3tag_write_v2 doesn't allocate enough memory for track" - -2006-01-21 13:10 takehiro - - * libmp3lame/id3tag.c: - - patch #1379187, "id3tag_write_v2 doesn't allocate enough memory for track" - -2005-12-21 21:40 robert - - * frontend/: parse.c (lame3_97), parse.c: - - bug fix: implementation of the priority commandline switch did not what - the documentation says (windows only) - -2005-12-18 18:49 robert - - * frontend/: brhist.c, main.c (lame3_97): - - fixing some display glitch for very long input files - -2005-12-18 18:39 robert - - * Makefile.unix, configMS.h (lame3_97): - - fixing some gcc 4.0.2 compiler issues to get LAME compiled again - -2005-12-18 18:26 robert - - * frontend/brhist.c: - - fixing display glitch with very long files - -2005-12-05 15:57 takehiro - - * libmp3lame/id3tag.c: - - fix id3v2 genre tag problem, reported by wylda@volny. - now LAME won't crash with "--id3v2-only --tg 14". - -2005-11-29 21:21 robert - - * frontend/: mp3rtp.c, mp3x.c: - - commit was pending, needed for John33's decoding patch - -2005-11-29 19:49 robert - - * doc/html/history.html: - - updating history - -2005-11-28 10:09 vitaly-ivanov - - * dshow/: Encoder.h, Mpegac.cpp, Mpegac.h, PropPage.cpp, - PropPage.h, PropPage_adv.cpp, PropPage_adv.h, Property.rc, - README, iaudioprops.h, resource.h: - - Property page update - moved "set duration" check box to the advanced page, added "allow sample overlap" check box (uncheck it if downstream filter is Avi Mux, otherwise use it for better video/audio synchronization - especially when capturing). Copying terms update (README file) - -2005-11-27 15:02 bouvigne - - * libmp3lame/bitstream.c, libmp3lame/encoder.c, libmp3lame/fft.c, - libmp3lame/lame.c, doc/html/history.html, libmp3lame/VbrTag.c, - libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, - libmp3lame/presets.c, libmp3lame/psymodel.c, - libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, - libmp3lame/reservoir.c, libmp3lame/set_get.c, - libmp3lame/takehiro.c, libmp3lame/util.c, - libmp3lame/vbrquantize.c, doc/man/lame.1, frontend/parse.c: - - merge from 3.97 branch - -2005-11-27 14:47 bouvigne - - * doc/html/history.html, libmp3lame/gain_analysis.c (lame3_97): - - hack against replayGain slowness on silent parts - -2005-11-27 10:20 bouvigne - - * libmp3lame/VbrTag.c (lame3_97): - - fixed Xing/Info tag parsing - -2005-11-26 18:43 bouvigne - - * libmp3lame/version.h (lame3_97): - - 3.97b2 - -2005-11-26 18:43 bouvigne - - * doc/html/history.html (lame3_97): - - history - -2005-11-26 18:37 bouvigne - - * libmp3lame/: reservoir.c, set_get.c (lame3_97): - - reinstated bit reservoir for 320kbps - -2005-11-26 14:21 bouvigne - - * libmp3lame/presets.c (lame3_97): - - slight change of athaa in V5 - -2005-11-26 14:19 bouvigne - - * frontend/parse.c (lame3_97): - - restored availability of athaa-sensitivity in command line frontend, - as it was available in 3.96 release - -2005-11-22 22:15 robert - - * frontend/: console.c, console.h, get_audio.c, get_audio.h, - gtkanal.c, lametime.c, main.c, main.h, parse.c, rtp.c: - - John33's lame decoding fix - -2005-11-20 14:25 takehiro - - * libmp3lame/gain_analysis.c (takehiro-2002_05_07-experimental): - - fix built problem on Sun Studio 10, reported by Moinak Ghosh - -2005-11-20 14:24 takehiro - - * libmp3lame/gain_analysis.c: - - fix built problem with Sun Studio 10, reported by Moinak Ghosh - -2005-11-20 14:08 bouvigne - - * libmp3lame/: VbrTag.c, bitstream.c, encoder.c, fft.c, lame.c, - mpglib_interface.c, newmdct.c, presets.c, psymodel.c, quantize.c, - quantize_pvt.c, reservoir.c, set_get.c, takehiro.c, util.c, - vbrquantize.c (lame3_97): - - updated copyrights - -2005-11-12 18:52 bouvigne - - * libmp3lame/gain_analysis.c: - - speedup of silent parts analysis - -2005-11-12 18:33 bouvigne - - * doc/html/history.html: - - history from 3.97 branch - -2005-11-12 18:21 bouvigne - - * Makefile.MSVC: - - added console.c - -2005-11-09 18:56 aleidinger - - * frontend/rtp.c: - - Fix bug #1349332 - -2005-11-09 18:40 aleidinger - - * libmp3lame/id3tag.c: - - Fix bug #1351021. - -2005-11-06 17:41 bouvigne - - * doc/html/history.html, libmp3lame/lame.c, libmp3lame/quantize.c - (lame3_97): - - fixes from main branch - -2005-11-05 16:35 aleidinger - - * doc/html/history.html: - - add todays work - -2005-11-05 16:20 aleidinger - - * libmp3lame/: id3tag.c, id3tag.h: - - Add support for total number of tracks per album. - - Submitted by: Kyle VanderBeek - - While I'm here add some abort() calls in case we overflow some arrays - (this is only compile tested, so pass me the pointy hat if it fails). - -2005-11-05 15:54 aleidinger - - * libmp3lame/id3tag.c: - - Add id3v2 TLEN support. - - Submitted by: Linus Walleij - -2005-11-05 15:52 aleidinger - - * frontend/console.c: - - some compilers really want the void nowadays... - -2005-11-05 15:51 aleidinger - - * frontend/Makefile.in: - - regen - -2005-11-05 15:49 aleidinger - - * frontend/console.h: - - make some pseudo prototypes to real prototypes (fixes gcc warnings) - -2005-11-05 15:48 aleidinger - - * frontend/Makefile.am: - - console.[ch] is now mandatory, so build it - -2005-11-05 15:47 aleidinger - - * include/lame.h: - - remove redundant function prototypes (we need only one prototype) - -2005-11-01 20:17 robert - - * frontend/console.c: - - bug fix: FILE pointer may be NULL for DEBUGF - -2005-11-01 13:54 robert - - * frontend/: mp3rtp.c, rtp.c: - - getting mp3rtp working again - -2005-11-01 13:10 robert - - * frontend/mp3x.c: - - replacing (f)printf by console_printf, error_printf and report_printf. fixes the problem that some messages would be send to stdout instead of stderr. added internal switch '--debug-file ', allows to debug the code more comfortably by writing DEBUGF(xyz) at code hot spots. - -2005-11-01 13:01 robert - - * frontend/: .indent.pro, amiga_mpega.c, brhist.c, brhist.h, - console.c, console.h, get_audio.c, get_audio.h, gpkplotting.c, - gpkplotting.h, gtkanal.c, gtkanal.h, lame_vc6.dsp, - lame_vc7.vcproj, lametime.c, lametime.h, main.c, main.h, - mp3rtp.c, mp3x.c, mp3x_vc6.dsp, mp3x_vc7.vcproj, parse.c, - parse.h, portableio.c, portableio.h, rtp.c, rtp.h, timestatus.c, - timestatus.h: - - replacing (f)printf by console_printf, error_printf and report_printf. fixes the problem that some messages would be send to stdout instead of stderr. added internal switch '--debug-file ', allows to debug the code more comfortably by writing DEBUGF(xyz) at code hot spots. - -2005-11-01 12:51 robert - - * Makefile.unix, configMS.h: - - [no log message] - -2005-10-31 13:02 bouvigne - - * libmp3lame/quantize.c: - - fixed bug 1227632 - -2005-10-31 13:01 bouvigne - - * libmp3lame/lame.c: - - fixed bug 1337556 - -2005-10-31 13:00 bouvigne - - * frontend/main.c: - - spelling of Takehiro's name - -2005-10-10 07:05 rbrito - - * COPYING, debian/changelog, debian/copyright, debian/rules, - doc/man/lame.1: - - Updated manpage to include accented characters; - Updated debian packaging; - Updated documentation to include the new FSF address. - -2005-10-01 09:03 takehiro - - * lame.spec.in (takehiro-2002_05_07-experimental): - - update configure options - -2005-09-29 21:21 robert - - * libmp3lame/i386/: fft3dn.nas (lame3_97), fft3dn.nas: - - taken from lame4 branch: - fix possible link problem on cygwin - -2005-09-25 22:09 glessard - - * libmp3lame/quantize.c: - - GCC 4 on OS X was choking on line 615. - Given the assignment on line 630, clearly 'work' isn't a pointer to an array - of constants anyway. - -2005-09-24 10:20 takehiro - - * libmp3lame/i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - suppress warnings for YASM. - -2005-09-24 10:20 takehiro - - * libmp3lame/i386/nasm.h (takehiro-2002_05_07-experimental): - - added LINUX detection for non-executable stack suuport. - -2005-09-24 09:34 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - simplify drain_into_ancillary() - -2005-09-24 08:45 takehiro - - * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): - - small optimization - -2005-09-24 08:28 takehiro - - * libmp3lame/newmdct.c (takehiro-2002_05_07-experimental): - - fixed window shape when mixed_block_flag is enabled. - -2005-09-24 08:01 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - Now LAME4 does not use MMX when SSE2 is available. - -2005-09-24 07:54 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - added TODO as comments - -2005-09-22 16:00 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen - -2005-09-22 15:48 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - fix when without nasm - -2005-09-22 14:03 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - i*86-linux detection for NASM code not to mark "exectable stack" - -2005-09-22 13:50 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - cache gfc->bitidx value. - -2005-09-20 19:51 robert - - * libmp3lame/util.c: - - fix wrong typing - -2005-09-20 19:41 robert - - * libmp3lame/: quantize.c, vbrquantize.c, vbrquantize.h: - - moved loop from quantize.c to vbrquantize.c - -2005-09-20 19:38 robert - - * libmp3lame/: util.h, util.c: - - malloc with n-bytes alignment - -2005-09-20 09:19 robert - - * frontend/parse.c, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: - - added internal developer switch to select between ISO and x^3/4 quantization - - --quantization-type n n=0: no change, n=1: ISO, n=2: x^3/4 - -2005-09-18 22:57 robert - - * libmp3lame/: vbrquantize.c, vbrquantize.h, version.h: - - vbr new noise shaping: let lame abort in exceptional cases - - now on alpha 2 - -2005-09-18 21:38 robert - - * libmp3lame/: encoder.c, lame.c, quantize.c, quantize.h, util.h, - vbrquantize.c: - - vbr-new: bug fix for "searchGlobalStepSizeMax" - - demangling vbr_old and vbr_new code - -2005-09-14 17:24 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - clean up assembler code support. - - nasmw support on cygwin. - - clean up yasm support, as I decided not to use yasm on x86-64. - - do not set "not exectable stack" flag not on linux environment. - -2005-09-13 15:38 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - code clean up - -2005-09-12 15:51 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - better region division point for lossless coding. - -2005-09-12 01:38 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - code clean up. - -2005-09-11 17:12 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - fix assertion failure at lossless coding. - -2005-09-11 17:07 takehiro - - * libmp3lame/: encoder.h, tables.c, takehiro.c - (takehiro-2002_05_07-experimental): - - more efficient lossless coding when without brute force search. - And it makes little speed improvement when with brute force search. - -2005-09-11 10:20 bouvigne - - * libmp3lame/version.h: - - welcome to 3.98 - -2005-09-11 09:57 bouvigne - - * lame_vc7.sln: - - missing file - -2005-09-11 09:14 bouvigne - - * libmp3lame/version.h: - - 3.97b - -2005-09-11 07:35 takehiro - - * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): - - experimental SSE2 support for calc_sfb_noise_fast. - but because it slows down the VBR encoding on Celeron-M, it is not enabled by - default. - -2005-09-10 17:08 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - more efficient lossless coding, especially for low bitrate. - -2005-09-08 22:57 takehiro - - * doc/html/history.html: - - fixed style. - -2005-09-08 22:57 takehiro - - * doc/html/history.html: - - added my changes for 3.97. - -2005-09-08 02:44 rbrito - - * doc/man/lame.1: - - Fixed typo. - -2005-09-07 21:15 bouvigne - - * testcase.mp3: - - updated testcase for 3.97b1 - -2005-09-06 18:24 bouvigne - - * doc/html/history.html: - - typo - -2005-09-06 15:34 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - fix assertion failure in lossless coding. - -2005-09-05 21:24 bouvigne - - * doc/html/: history.html, index.html: - - updated history for 3.97b - -2005-09-05 20:49 bouvigne - - * frontend/parse.c: - - -Vx short help - -2005-09-05 04:29 rbrito - - * debian/: changelog, rules: - - Update generation of package with full optimization, now that compilation with GCC 4 works. - -2005-09-05 01:55 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - always use adaptive cutoff - -2005-09-05 01:52 takehiro - - * libmp3lame/: quantize.c, i386/quantSSE.nas - (takehiro-2002_05_07-experimental): - - optimized calc_sfb_noise_fast(). - Exit the loop as soon as it detect the audible noise. - -2005-09-04 19:52 aleidinger - - * ChangeLog: - - Update with recent history. - -2005-09-04 19:45 aleidinger - - * configure: - - Regen. - -2005-09-04 19:35 aleidinger - - * config.h.in: - - Add the bits for largefile support. - - Submitted by: Diego "Flameeyes" Pettenò - Bug ID: 1271744 - -2005-09-04 19:11 aleidinger - - * configure.in: - - Remove some flags which gcc 4.x doesn't understand anymore. - - Noticed by: Rogério Brito - -2005-09-04 19:05 aleidinger - - * aclocal.m4, config.h.in, Makefile.in, ACM/Makefile.in, - ACM/ADbg/Makefile.in, ACM/ddk/Makefile.in, - ACM/tinyxml/Makefile.in, Dll/Makefile.in, debian/Makefile.in, - doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, - dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, - mac/Makefile.in, misc/Makefile.in, mpglib/Makefile.in: - - Regen. - -2005-09-04 19:05 aleidinger - - * depcomp, install-sh, ltmain.sh, missing, mkinstalldirs, - frontend/depcomp, libmp3lame/depcomp, misc/depcomp, - mpglib/depcomp: - - Update to recent autotools. - -2005-09-04 19:02 aleidinger - - * frontend/Makefile.am: - - Play catchup with the autotools. - -2005-09-04 18:54 aleidinger - - * configure.in: - - Initialize autoconf correctly (with lame mailinglist address). - -2005-09-04 16:19 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix adptive threshold calculation. - -2005-09-04 12:03 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - little bit better lossless coding - -2005-09-04 11:52 rbrito - - * doc/man/lame.1: - - Fixed typo in manpage. - -2005-09-04 07:15 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - better skip method for not audible scalefactor band. - -2005-09-04 06:56 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - do not calculate not audible scalefactor band. - -2005-09-04 06:16 takehiro - - * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): - - forgot to commit when adding sfb energy caching. sorry. - -2005-09-04 03:10 takehiro - - * libmp3lame/: quantize.c, i386/quantSSE.nas - (takehiro-2002_05_07-experimental): - - caching sfb energy = sum of xr^2 - -2005-09-04 03:09 takehiro - - * libmp3lame/i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - suppress conditional jump - -2005-09-04 02:21 takehiro - - * libmp3lame/i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - better pipelining and use of pshufd in ix_max_SSE2 - -2005-09-04 02:09 takehiro - - * libmp3lame/: tables.c, i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - SSE2 version of ix_max() - -2005-09-04 02:08 takehiro - - * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): - - trivial optimization - -2005-09-03 15:38 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - clean up coding. - -2005-09-03 14:49 takehiro - - * libmp3lame/: quantize.c, i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - changed parameter of xrmax_MMX() - -2005-09-03 13:38 takehiro - - * libmp3lame/i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - trivial optimization - -2005-09-03 13:31 takehiro - - * libmp3lame/: quantize.c, i386/quantSSE.nas - (takehiro-2002_05_07-experimental): - - added sumofsqr_SSE() for ia32 - -2005-09-03 13:10 takehiro - - * libmp3lame/i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - use aligned memory access - -2005-09-03 12:45 takehiro - - * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): - - use SSE register for data backup. - -2005-09-03 12:28 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - xrmax_SSE() support on x86_64 - -2005-09-03 11:16 takehiro - - * libmp3lame/: quantize.c, i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - SSE version of xrmax() - -2005-09-02 18:09 bouvigne - - * frontend/parse.c: - - fixed a stupid bug with --preset medium/standard/extreme - -2005-09-02 17:16 takehiro - - * frontend/parse.c (takehiro-2002_05_07-experimental): - - changed default setting of replaygain analysis, "enable fast" -> "disable all". - -2005-09-01 18:12 bouvigne - - * libmp3lame/VbrTag.c: - - 320kbps cbr was flagged as "non optimal" in the info header - -2005-08-31 16:21 takehiro - - * libmp3lame/quantize.c, libmp3lame/lame-analysis.h, - frontend/gtkanal.c (takehiro-2002_05_07-experimental): - - display how many bits used in the "large value" region and count1 region. - -2005-08-28 17:30 bouvigne - - * frontend/parse.c, libmp3lame/version.h: - - Changed the way "--preset xxx" is handled, - as I've seen many users passing "--preset standard --vbr-new". - Presets are now evaluated during initialisation, so this kind of command - line now properly works. - -2005-08-28 17:02 bouvigne - - * libmp3lame/lame.c, Makefile.MSVC, libmp3lame/version.c, - libmp3lame/version.h, frontend/parse.c: - - 64bits build from within win64 platform sdk - -2005-08-28 12:19 takehiro - - * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): - - use 128bit constants - -2005-08-28 12:11 takehiro - - * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): - - better pipelining - -2005-08-27 12:03 takehiro - - * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): - - use cos(2x) = cos(x)*cos(x) - sin(x)*sin(x) = 1 - 2*sin(x)*sin(x) - -2005-08-27 08:25 takehiro - - * configure, configure.in: - - fix for configure problem reported by Steven P. Ulrick. - -2005-08-27 08:10 takehiro - - * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): - - clean up. - -2005-08-27 07:58 takehiro - - * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): - - clean up counter register usage - -2005-08-25 16:28 takehiro - - * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): - - suppress table size - -2005-08-25 12:14 takehiro - - * debian/: Makefile.am, Makefile.in: - - follow the file name change. - -2005-08-23 15:50 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - new tonality -> masking ratio conversion method and masking ratio limitation - in the lower frequency region. - -2005-08-23 14:15 takehiro - - * libmp3lame/: encoder.h, lame.c, newmdct.c, psymodel.c, tables.c - (takehiro-2002_05_07-experimental): - - rename internal variable name, start_sfb_* -> max_sfb_* - update verbose print of internal setting. - -2005-08-22 16:20 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - do not call best_scalefac_store() when no noise shaping, becase in such case - all the scalefac values are always zero. - -2005-08-22 15:21 takehiro - - * libmp3lame/newmdct.c (takehiro-2002_05_07-experimental): - - do not calculate MDCT beyond cutoff even when adaptive cutoff is enabled. - -2005-08-22 13:47 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - display internal setting for "adaptive lowpass cutoff" - -2005-08-22 13:46 takehiro - - * libmp3lame/tags.c (takehiro-2002_05_07-experimental): - - fix "optimal setting" flag is always cleared when the input file is below 32kH - -2005-08-22 13:11 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - do not process filtering when no filter enabled. - -2005-08-21 17:32 bouvigne - - * Makefile.am, ACM/Makefile.am, ACM/lameACM_vc7.vcproj, - ACM/ADbg/ADbg_vc7.vcproj, ACM/ADbg/Makefile.am, - ACM/tinyxml/Makefile.am, ACM/tinyxml/tinyxml_vc7.vcproj, - Dll/LameDll_vc7.vcproj, Dll/Makefile.am, frontend/Makefile.am, - frontend/lame_vc7.vcproj, frontend/mp3x_vc7.vcproj, - libmp3lame/Makefile.am, libmp3lame/libmp3lame_vc7.vcproj, - mpglib/Makefile.am, mpglib/mpglib_vc7.vcproj: - - added project files for VC7 - -2005-08-21 17:00 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - use adaptive cutoff when no lowpass filter setting ("-k" option) - -2005-08-21 15:25 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix default cutoff setting when adaptive cutoff. - -2005-08-21 14:15 takehiro - - * libmp3lame/: encoder.h, lame.c, psymodel.c, quantize.c, tables.c - (takehiro-2002_05_07-experimental): - - adaptive cutoff frequency calculation. - very experimental and not works correctly (of course is not enabled by default) - -2005-08-21 08:40 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - revive -q settings for VBR/ABR - -2005-08-21 08:05 takehiro - - * libmp3lame/i386/: fftsse.nas, quantSSE.nas - (takehiro-2002_05_07-experimental): - - clean up - -2005-08-21 06:38 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - clean up x86_64 code. - -2005-08-21 06:09 takehiro - - * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): - - use loopalign instead of align - -2005-08-21 05:54 takehiro - - * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): - - use movlps instead of movups - -2005-08-21 05:42 takehiro - - * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): - - trivial - -2005-08-21 04:50 takehiro - - * libmp3lame/i386/: choose_table.nas, quantSSE.nas - (takehiro-2002_05_07-experimental): - - small asm-coding hack. - -2005-08-21 03:32 takehiro - - * libmp3lame/: encoder.h, tags.c - (takehiro-2002_05_07-experimental): - - Support generic genre name like "MyOriginalGenre" (bugid #1265218 @ sf.net) - -2005-08-20 18:34 takehiro - - * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): - - clean up. - -2005-08-20 18:05 takehiro - - * libmp3lame/: util.c, util.h (takehiro-2002_05_07-experimental): - - one more support for SSE on x86_64 - -2005-08-20 18:01 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - ASM code support for x86_64 environment (only tested with FedoraCore3@cf.sf.net) - -2005-08-20 17:48 bouvigne - - * doc/html/switchs.html: - - typo - -2005-08-20 16:47 takehiro - - * configure, configure.in, libmp3lame/Makefile.am, - libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): - - auto* things for x86_64 related files. - -2005-08-20 14:21 takehiro - - * libmp3lame/i386/ssesub.c (takehiro-2002_05_07-experimental): - - remove unused files/dirs - -2005-08-20 13:42 takehiro - - * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): - - remove redundant operation and fix comments. - -2005-08-20 11:32 takehiro - - * libmp3lame/: lame.c, psymodel.c, util.h - (takehiro-2002_05_07-experimental): - - modification related to asm version of lr2ms (forgot to commit. oops) - -2005-08-20 09:25 takehiro - - * libmp3lame/: util.c, i386/quantSSE.nas - (takehiro-2002_05_07-experimental): - - SSE version of LR -> MS. gains 1% speed. - -2005-08-20 08:49 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - trivial optimization - -2005-08-16 07:56 rbrito - - * debian/: changelog, control: - - Make libmp3lame0 provide and replace liblame0, not conflict with it. - -2005-08-16 07:11 rbrito - - * debian/: changelog, control, libmp3lame0-dev.files: - - Fixed development package to not include shared libraries. - Other misc fixes. - - Yet more to come. - -2005-08-16 01:42 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - optimized pow075() for generic CPU. - remove C++ style comments. - -2005-08-15 04:25 rbrito - - * debian/: changelog, control, liblame0-dev.docs, - liblame0-dev.files, liblame0.files, libmp3lame0-dev.docs, - libmp3lame0-dev.files, libmp3lame0.files, rules: - - Update Debian packaging so that the library packages follow the SONAME - rules. - - Also incorporate some changes from Christian Marillat's packages in the - basic lame package. - - More changes to come soon. - -2005-08-14 07:05 takehiro - - * libmp3lame/: bitstream.c, i386/quantSSE.nas - (takehiro-2002_05_07-experimental): - - trivial optimization - -2005-08-13 14:12 takehiro - - * libmp3lame/: bitstream.c, tables.c, tables.h - (takehiro-2002_05_07-experimental): - - optimize quad-code writing routine. - -2005-08-13 12:09 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - move the comments at more suitable place. - -2005-08-13 12:08 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - trivial optimizations. - -2005-08-13 09:17 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - faster count bits for quad-code region. - -2005-08-11 14:43 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - reduce memory access by caching data to be written. - -2005-08-10 15:22 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - caching huffman code to be written to reduce bitwise operation. - -2005-08-10 14:55 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - more pruning at lossless coding. same result, faster calculation. - -2005-08-08 17:22 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - one more pruning of lossless coding. - -2005-08-08 16:33 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - optimize speed of lossless coding with better pruning. - -2005-08-07 14:07 takehiro - - * doc/man/lame.1: - - when the input is raw, the input file will be treated as native endian. - (bugid 1158189) - -2005-08-07 13:24 bouvigne - - * doc/html/switchs.html: - - update of stereo modes description - -2005-08-07 12:34 takehiro - - * configure, aclocal.m4 (takehiro-2002_05_07-experimental): - - regen - -2005-08-07 10:44 takehiro - - * libmp3lame/: quantize.c, takehiro.c - (takehiro-2002_05_07-experimental): - - surpress memcpy - -2005-08-07 09:37 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - fix debug build - -2005-08-06 17:29 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - reduce table size. - -2005-08-06 17:20 takehiro - - * libmp3lame/tags.c (takehiro-2002_05_07-experimental): - - surpress warnings - -2005-08-06 17:14 takehiro - - * libmp3lame/tables.h (takehiro-2002_05_07-experimental): - - fix comments - -2005-08-06 14:51 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix typo. - -2005-08-06 06:37 takehiro - - * libmp3lame/: psymodel.c, i386/ssesub.c - (takehiro-2002_05_07-experimental): - - trivial - -2005-08-06 06:09 takehiro - - * libmp3lame/: machine.h, tables.c, tables.h - (takehiro-2002_05_07-experimental): - - cleanup and suppress memory usage when SMALL_CACHE and IEEE754 - -2005-08-06 04:46 takehiro - - * frontend/timestatus.c (takehiro-2002_05_07-experimental): - - fix --nohist switch. - -2005-08-05 15:22 takehiro - - * doc/man/lame.1: - - added "per sample" for the description of --bitwidth option. (bugid #1158196) - -2005-08-05 09:22 vitaly-ivanov - - * dshow/: Mpegac.cpp, Mpegac.h: - - Another timestamp fix. Added additional resynchronization points (now there are 4 resynch points) in order to implement absolutely accurate in-out synchronization - -2005-08-04 15:15 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix MPEG2 Layer3 VBR encoding (correct form of rev.1.178.2.223). - -2005-08-04 14:56 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix short block encoding. It may select the subblock gain which makes quantized - values larger than the IXMAX. - -2005-08-04 14:01 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - revert last (rev.1.178.2.223) changes. - -2005-08-04 14:00 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - do not use preflag when MPEG2 - -2005-08-04 11:27 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix for MPEG2 VBR coding. Still MPEG2-VBR needs many tweaking. - -2005-08-04 06:15 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - trivial simplification. - -2005-08-04 02:30 takehiro - - * libmp3lame/: encoder.h, lame.c - (takehiro-2002_05_07-experimental): - - fix bitrate histgram display when mono. - -2005-08-04 01:42 rbrito - - * debian/: changelog, control, rules: - - Updates for Debian packaging. - -2005-08-04 01:40 rbrito - - * doc/man/lame.1: - - Documentation of switches: --{un,}signed and --{big,little}-endian. - -2005-08-03 14:40 takehiro - - * libmp3lame/tags.c (takehiro-2002_05_07-experimental): - - supress warnings on 64bit environment. - -2005-08-03 14:04 takehiro - - * frontend/main.c (takehiro-2002_05_07-experimental): - - more clean up when with --nohist or --silent. - -2005-08-03 07:11 takehiro - - * libmp3lame/i386/nasm.h (takehiro-2002_05_07-experimental): - - Add magic words from libflac to tell LAME does not need exectable stack. - -2005-08-02 13:30 takehiro - - * frontend/main.c, libmp3lame/lame.c - (takehiro-2002_05_07-experimental): - - fix brhist display when CBR - -2005-08-01 17:16 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - update comments - -2005-08-01 15:51 takehiro - - * libmp3lame/: quantize.c, tables.c - (takehiro-2002_05_07-experimental): - - more MAX_BITS off-by-one fixes, including comments. - -2005-08-01 13:10 vitaly-ivanov - - * dshow/: Mpegac.cpp, Property.rc: - - Output timestamps fix. There was a serious bug when input audio samples had time gaps between each other - DirectShow timestamps for output samples were calculated wrong in this case - -2005-08-01 07:06 takehiro - - * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): - - fix off by one of MAX_BITS. - -2005-08-01 06:30 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - supress table size. - -2005-07-30 16:30 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - do not use 4096 bits/granule limits when not strict ISO mode. - -2005-07-28 13:05 rbrito - - * doc/html/: basic.html, contributors.html, examples.html, - history.html, id3.html, switchs.html: - - Minor spelling corrections and other fixes to documentation. - -2005-07-28 13:02 rbrito - - * debian/rules: - - Safe version for compilation with GCC 4. - -2005-07-27 21:49 rbrito - - * doc/html/: presets.html, switchs.html: - - Spelling fixes for documentation. - -2005-07-27 21:38 rbrito - - * doc/man/lame.1: - - Include description of the "medium" preset in the manpage. - - Fix some spelling errors on the manpage. - -2005-07-27 08:43 rbrito - - * debian/changelog, debian/control, debian/lame.manpages, - debian/rules, doc/man/lame.1: - - Small fixes for lame manpage to make lintian happy. More updates to come. - -2005-07-27 07:41 rbrito - - * debian/changelog: - - Preparation for the new beta release. More changes to come. - -2005-07-26 23:31 takehiro - - * config.h.in, configure.in, frontend/main.c - (takehiro-2002_05_07-experimental): - - experimental patch to autodetect UTF-8 ID3v2 tag by Edmund GRIMLEY EVANS. - -2005-07-26 13:59 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix 4096bits limits for one _granule_ when VBR. - old code mistook it for one _channel and granule_. - -2005-07-24 16:54 takehiro - - * libmp3lame/: lame.c, psymodel.c, util.h - (takehiro-2002_05_07-experimental): - - suppress warnings - -2005-07-24 16:52 takehiro - - * libmp3lame/: lame.c, psymodel.c, util.c - (takehiro-2002_05_07-experimental): - - added lr2ms() function and use it. This is the preparation for future asm-optimizations. - -2005-07-24 16:51 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - fixed reservoir limitation setup. - -2005-07-24 16:49 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - added some comments arround the bit reservoir. - -2005-07-24 16:28 takehiro - - * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): - - [no log message] - -2005-07-24 16:11 takehiro - - * libmp3lame/: lame.c, quantize.c, i386/quantSSE.nas - (takehiro-2002_05_07-experimental): - - SSE2 version of quntize_ISO (from gogo) - -2005-07-24 13:02 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - fix bit/byte confusion. - -2005-07-20 14:30 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fixed compilation problem on some OS which has a "trancate" - -2005-07-20 14:22 takehiro - - * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): - - update comments. - -2005-07-16 08:30 takehiro - - * libmp3lame/tags.c (takehiro-2002_05_07-experimental): - - fixed tarck tag ID. - -2005-07-16 08:04 takehiro - - * frontend/parse.c, include/lame.h, libmp3lame/encoder.h, - libmp3lame/tags.c (takehiro-2002_05_07-experimental): - - ID3 tag update. - - merged UTF-8 patch from egrimleyevans - (http://sourceforge.net/tracker/index.php?func=detail&aid=1192706&group_id=290&atid=300290) - - - Fixed ID3v1 track number tag. When the track number is larger than 255, it was recoded as "track number % 256" in the ID3v1. - - - Changed internal track number representation to char* from int. It may allow - to use "leading zero" track number in ID3v2 tag, like "01/23". - -2005-07-16 07:30 takehiro - - * frontend/parse.c (takehiro-2002_05_07-experimental): - - added "--ignore-tag-errors" to the usage message - -2005-07-10 16:13 bouvigne - - * libmp3lame/: presets.c, version.h: - - alpha 11: update of abr/cbr 160-320 - -2005-06-29 12:26 vitaly-ivanov - - * dshow/: Encoder.cpp, PropPage.cpp, PropPage_adv.cpp, Property.rc: - - Joint / Standard stereo selection fix. Got rid of automatic joint stereo encoding when the bit rate is relatively low, now it's up to the user - -2005-06-25 08:14 vitaly-ivanov - - * dshow/: Encoder.h, Property.rc, aboutprp.cpp, .cvsignore: - - [no log message] - -2005-06-24 10:03 vitaly-ivanov - - * dshow/: .cvsignore, Encoder.cpp, Encoder.h, Mpegac.cpp, - Mpegac.def, Mpegac.h, PropPage.cpp, PropPage.h, PropPage_adv.cpp, - PropPage_adv.h, Property.rc, README, REG.CPP, UIDS.H, - aboutprp.cpp, aboutprp.h, dshow.dsp, dshow.dsw, iaudioprops.h, - resource.h: - - [no log message] - -2005-06-24 09:37 vitaly-ivanov - - * dshow/REG.H: - - [no log message] - -2005-06-04 16:06 takehiro - - * libmp3lame/i386/: Makefile.am, Makefile.in - (takehiro-2002_05_07-experimental): - - fix for configure with --disable-shared. - -2005-05-29 16:41 takehiro - - * Makefile.in, aclocal.m4, configure, ltmain.sh, ACM/Makefile.in, - ACM/ADbg/Makefile.in, ACM/ddk/Makefile.in, - ACM/tinyxml/Makefile.in, Dll/Makefile.in, debian/Makefile.in, - doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, - dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, - mac/Makefile.in, misc/Makefile.in, mpglib/Makefile.in - (takehiro-2002_05_07-experimental): - - regen with automake1.9.5 - -2005-05-29 16:40 takehiro - - * libmp3lame/: tables.c, psymodel.c - (takehiro-2002_05_07-experimental): - - psymodel parameter tuning (1) - -2005-05-29 16:10 takehiro - - * debian/: changelog, control: - - fixed version number (upstream -> downstream) - - patch from Jack, from - http://sourceforge.net/tracker/index.php?func=detail&aid=1201172&group_id=290&atid=100290 - -2005-05-29 15:59 takehiro - - * debian/rules (takehiro-2002_05_07-experimental): - - added files to remove when clean. - -2005-05-29 14:43 takehiro - - * libmp3lame/: tables.c, takehiro.c, i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - fix sing handling. - It somtime makes assertion failure on MMX2 supported machines. - -2005-05-29 14:40 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - optimized init_global_gain(), by initializing gi->count1, gi->big_values - only when it is "really" needed. - -2005-05-25 14:17 takehiro - - * frontend/: get_audio.c, parse.c: - - fixed output message even when "--silent" - (bug #1145932) - -2005-05-25 13:56 takehiro - - * libmp3lame/lame.c: - - fix format strings to print out the "float" value. - (bug #1207470) - -2005-05-25 13:47 takehiro - - * frontend/parse.c: - - removed -Z option description, which has no effects currently. - -2005-05-21 09:07 takehiro - - * libmp3lame/: psymodel.c, psymodel.h, tables.c - (takehiro-2002_05_07-experimental): - - suppress magic number. - -2005-05-20 14:46 takehiro - - * libmp3lame/: psymodel.c, tables.c - (takehiro-2002_05_07-experimental): - - clean up the new workarround for the frequency resolution - in the lower frequency. - -2005-05-17 15:46 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - Do not calculate the simultaneous masking in the lower frequency, where the - frequency resolution is not sufficient. - - This is a temporaly code. This should be done by changing the spread function. - -2005-05-14 17:45 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - dirty hack arround truncate() - -2005-05-14 16:28 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - reduce division by changing log(x/y) -> log(x) - log(y), part 2. - supress magic numbers. - -2005-05-14 16:27 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - fix assertion failure when a quantized value exceeds IXMAX(8206) - -2005-05-14 13:47 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen - -2005-05-14 13:16 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - remove some optimization options which is not supported by gcc4. - -2005-05-14 12:31 takehiro - - * libmp3lame/machine.h (takehiro-2002_05_07-experimental): - - fix debug built problem on the machine without memset() - -2005-05-14 08:00 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - changed log(x/y) as log(x)-log(y), when FAST_LOG. - -2005-05-14 06:53 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix built problem when USE_IEEE754_HACK but not USE_FAST_LOG. - -2005-05-14 03:43 takehiro - - * debian/: changelog, control (takehiro-2002_05_07-experimental): - - patch from Jack (jablko), including the bug report #1201172 - -2005-05-12 17:40 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - supress magic numbers - -2005-05-11 15:51 takehiro - - * libmp3lame/: psymodel.c, quantize.c - (takehiro-2002_05_07-experimental): - - for better portability, do not use "long long", use uint64_t instead. - -2005-05-11 15:50 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - remove unused portion of window coefs. - -2005-05-11 15:14 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - optimizing mask_add(), part 2. - - faster log() -> trncate() calculation for IEEE754 HACK. - -2005-05-11 14:59 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - optimizing mask_add() (part 1) - -2005-05-10 17:24 takehiro - - * libmp3lame/: psymodel.c, machine.h - (takehiro-2002_05_07-experimental): - - optimizing PE calculation. - -2005-05-10 17:10 takehiro - - * libmp3lame/: tables.c, machine.h - (takehiro-2002_05_07-experimental): - - use integer calculation @ fast_log2(). - This is a preparation for farther speed optimizations. - -2005-05-06 01:06 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix typo. - -2005-05-04 17:21 takehiro - - * libmp3lame/tables.h (takehiro-2002_05_07-experimental): - - fix typo - -2005-05-04 17:01 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen by hand. - -2005-05-04 17:00 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - - do not use "-march" option for the case of cross build. - - added comments about SPARC + IEEE754 hack - -2005-05-04 16:58 takehiro - - * libmp3lame/: quantize.c, i386/quantSSE.nas - (takehiro-2002_05_07-experimental): - - update x^(3/4) hack. - - use IEEE754 HACK version of fabs() - - better "digital silent" detection. not use sum, but use maximum. - -2005-05-04 16:57 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - common expression reduction. - -2005-04-26 16:08 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix selection of the band to increase the scalefactor, when all the band have no - audible noise. - -2005-04-25 16:35 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix handling of SCALEFAC_ANYTHING_GOES in calc_noise(). - This sometimes makes assertion failure when with --substep option. - -2005-04-24 10:28 takehiro - - * frontend/main.c (takehiro-2002_05_07-experimental): - - fix it skips clipping when with --decode option. - -2005-04-23 18:25 takehiro - - * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): - - clean up. - -2005-04-23 18:20 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - Handmade aprox. code to calculate x^(3/4) for IEEE754 machines. - On MacOSX + G4, the speed gain is arround 14% ! - -2005-04-23 15:31 takehiro - - * libmp3lame/gain_analysis.c (takehiro-2002_05_07-experimental): - - supress warnings - -2005-04-23 15:11 takehiro - - * testcase.mp3, frontend/get_audio.c, frontend/get_audio.h, - frontend/gtkanal.c, frontend/main.c, include/lame.h, - libmp3lame/lame.c, libmp3lame/mpglib_interface.c - (takehiro-2002_05_07-experimental): - - use floating values for the data between frontend and encoding core. - -2005-04-23 10:10 takehiro - - * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): - - prevent to re-initialization. - -2005-04-23 10:08 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - add error check for lame_decoe_init() - fix comment. - -2005-04-23 09:57 takehiro - - * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): - - clean up - -2005-04-23 09:56 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - clean up endianness. - fix mp3 decoding. - -2005-04-23 08:42 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - tuning masking parameter balance for long/short blocks. - -2005-04-23 08:11 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix memory copy size in CBR_2nd_iteration(). - This bug causes assertion failure when CBR with -h option. - -2005-04-23 08:07 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - reduce memory copy size. - -2005-04-23 07:57 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - little bit better initial value for quantization factor search. - -2005-04-23 07:55 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.h - (takehiro-2002_05_07-experimental): - - reduce memory copy size. - -2005-04-22 17:39 takehiro - - * mpglib/interface.c (takehiro-2002_05_07-experimental): - - supress warnings with GCC4.0 - -2005-04-21 16:36 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - oops, stupid bug in loop counter... sorry. - -2005-04-21 15:42 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - improve the spreading function for the lower frequency, - where the resolution of frequency is not sufficient for phsycho-analysis. - -2005-04-21 15:36 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - clean up. - -2005-04-21 15:03 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - verbose the configuration message. - -2005-04-17 17:28 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - clean up arround lame_print_internals() - -2005-04-17 16:16 takehiro - - * frontend/: get_audio.c, get_audio.h, main.c, main.h, parse.c - (takehiro-2002_05_07-experimental): - - clean up endianness detection and configuration. - -2005-04-17 15:49 takehiro - - * frontend/: get_audio.c, get_audio.h - (takehiro-2002_05_07-experimental): - - clean up MAX_U_32_NUM definition - -2005-04-17 15:42 takehiro - - * frontend/parse.c (takehiro-2002_05_07-experimental): - - general clean up. - -2005-04-17 15:35 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - fix assertion failure when CBR encoding. - -2005-04-17 12:49 takehiro - - * frontend/parse.c (takehiro-2002_05_07-experimental): - - clean up options. - - make some options as experimental. - - fix floating point/integer argument. - -2005-04-17 11:01 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - optimized best_huffman_divide(), by removing needless call of choose_table(). - -2005-04-16 15:58 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - general clean up. - - supress magic numbers - - use putbits16() instead of putbits24(), where it can. - - trivial loop counter optimization - -2005-04-16 13:55 takehiro - - * testcase.mp3, libmp3lame/psymodel.c - (takehiro-2002_05_07-experimental): - - ATH value adjustment for M/S channels. - -2005-04-16 13:53 takehiro - - * libmp3lame/bitstream.c, frontend/brhist.c, frontend/main.c - (takehiro-2002_05_07-experimental): - - supress warnings - -2005-04-16 10:42 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - reduce conditional jumps - -2005-04-16 10:42 takehiro - - * libmp3lame/machine.h (takehiro-2002_05_07-experimental): - - added (FLOAT) cast in fast_log() macros. - -2005-04-13 14:12 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - oops, I disabled the new code... - -2005-04-13 14:11 takehiro - - * frontend/gtkanal.c (takehiro-2002_05_07-experimental): - - one more fix for the delay. - -2005-04-13 13:50 takehiro - - * frontend/gtkanal.c (takehiro-2002_05_07-experimental): - - fix frame delay - -2005-04-13 13:41 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - optimize lossless coding efficiency and speed (mainly for low bitrate). - -2005-04-09 17:50 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - optimized bitstream copy code. - -2005-04-09 17:29 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - one more reduction of needless divide point search in best_huffman_divide() - -2005-04-09 09:58 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - prevent needless search of best_huffman_divide(). - -2005-04-04 01:20 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - optimize best_scalefac_store() - - only call noquant_count_bits() when it is really needed. - - skip the band with the SCALEFAC_ANYTHING_GOES. - -2005-04-03 18:28 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - little bit better lossless coding. - -2005-04-03 18:27 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - make assertion condition strictly. - -2005-04-03 17:42 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - one more off by one... oops. - -2005-04-03 17:24 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - fix off-by-one bug. - -2005-04-03 12:25 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.h - (takehiro-2002_05_07-experimental): - - use the theoretical minimum value of xr34. - -2005-04-03 11:57 takehiro - - * frontend/: gtkanal.c, mp3x.c (takehiro-2002_05_07-experimental): - - fix (part of) mp3x display delay problem - -2005-04-03 11:32 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - fix table selection - -2005-04-03 05:50 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - reduce calling ixmax() and simplify count_bits() - -2005-04-02 18:32 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - potential fix for floating point exception when analysing MPEG2 Layer3 encoding by mp3x. - -2005-04-02 17:06 takehiro - - * frontend/timestatus.c (takehiro-2002_05_07-experimental): - - reduce calling GetRealTime() - -2005-04-02 16:45 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - Try to find the better quantization factor in the higher frequncy band, - even when it fails to encode without the noise in the lower frequency band. - -2005-04-02 16:21 takehiro - - * libmp3lame/i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - simplify the loop condition. - -2005-04-02 14:54 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - do not use putbits24(), where the length to write is lesser than 18. - -2005-04-02 14:02 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - fix off-by-one bug in best_huffman_divide() - -2005-04-02 12:21 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - fix comments and reduce the table size. - -2005-04-02 12:13 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - simplify cont_bit_noESC_from4() and add comments. - -2005-04-02 11:56 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - remove needless memory clear. - -2005-04-02 07:28 takehiro - - * libmp3lame/version.h (takehiro-2002_05_07-experimental): - - Now alpha 14. - - Dramatical VBR speed improvement. - 10-20% on typical archtecture (i86, Alpha, Sparc), and 95% on G4. - CBR also gains but it is little (2% on the typical arch, 30% on G4). - - New and improved ATH level autoadjustment. - - Use subblock gain more (CBR and VBR). - - Fix quantization bug in count1 region, which causes annoying noise in high-freq. - -2005-04-02 07:16 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - supress magic numbers. - -2005-03-29 15:07 takehiro - - * libmp3lame/: machine.h, quantize.c, tables.c, takehiro.c - (takehiro-2002_05_07-experimental): - - supress magic numbers. - -2005-03-28 17:26 takehiro - - * libmp3lame/machine.h (takehiro-2002_05_07-experimental): - - it seems thmath.h decreases spped very much on Alpha system. - -2005-03-28 16:58 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix debug/release build is reverted and warnings - -2005-03-28 16:57 takehiro - - * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): - - fix built on 64bit machines (I checked it on Alpha and AMD64) - -2005-03-28 09:44 takehiro - - * frontend/parse.c (takehiro-2002_05_07-experimental): - - adjust message width - -2005-03-28 03:51 takehiro - - * libmp3lame/: quantize.c, takehiro.c - (takehiro-2002_05_07-experimental): - - fix SCALEFAC_ANYTHING_GOES bug finally! now it gains speed improvement arround 15%. - - and fix count1 region quantization. - -2005-03-28 03:50 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - added alignment check when debug build. - -2005-03-27 17:48 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix treatment of scale factor band with "anything goes". - But it seems there're still bugs arround it. - -2005-03-27 16:45 takehiro - - * libmp3lame/: machine.h, quantize.c, quantize_pvt.h, tables.c, - tables.h, takehiro.c (takehiro-2002_05_07-experimental): - - fix it may use preflag on short blocks. - use integer value of quantization adjustments. - -2005-03-27 15:22 takehiro - - * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): - - fix comments one more. - -2005-03-27 11:57 takehiro - - * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): - - fixed comments - -2005-03-27 09:32 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - code clean up. - -2005-03-26 19:58 takehiro - - * libmp3lame/i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - fix comment - -2005-03-26 19:54 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - do not call scale_bitcounter() to check the scalefac values is valid or not. - (spped up arround 1.5%) - -2005-03-26 19:37 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix it recognize (scalefac=SCALEFAC_ANYTHING_GOES) + (subblock gain = 2) as - not an amplified band. - -2005-03-26 10:39 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.h - (takehiro-2002_05_07-experimental): - - suppress magic numbers - -2005-03-26 09:48 takehiro - - * frontend/: main.c, timestatus.c - (takehiro-2002_05_07-experimental): - - reduce calling lame_get_frameNum() - -2005-03-23 03:08 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - use subblock_gain more when VBR. - -2005-03-23 03:06 takehiro - - * libmp3lame/: machine.h, tables.c - (takehiro-2002_05_07-experimental): - - cleanup - -2005-03-22 16:58 takehiro - - * libmp3lame/: tables.c, takehiro.c, tables.h - (takehiro-2002_05_07-experimental): - - make scfsi_band[] as static variable. - -2005-03-22 13:42 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - remove gabages. - oops... - -2005-03-22 13:40 takehiro - - * libmp3lame/: quantize_pvt.h, tables.c - (takehiro-2002_05_07-experimental): - - more precise ROUNDFAC definition. - -2005-03-22 07:13 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix built problem on old (not C99) compilers. - -2005-03-21 16:24 takehiro - - * libmp3lame/: encoder.h, quantize.c, quantize_pvt.h, takehiro.c - (takehiro-2002_05_07-experimental): - - reduce memory copy size. - -2005-03-21 14:38 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - Fix loop variable initialization. - This will fix decreasing bitrate too much on VBR. - - Zerofy "not audible" region at first to increase the speed. - -2005-03-20 17:28 bouvigne - - * libmp3lame/: encoder.c, lame.c, presets.c, quantize.c, - quantize.h: - - allow masking adjustements in ABR/CBR - -2005-03-19 18:34 bouvigne - - * libmp3lame/version.h: - - alpha 10 - -2005-03-19 17:51 bouvigne - - * libmp3lame/presets.c: - - updated vbr 0/1/2/3 presets - -2005-03-19 16:09 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - fix MPEG2/Layer3 encoding. - -2005-03-19 16:05 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - trivial clean up - -2005-03-19 16:04 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - try to use "preflag" more often. - -2005-03-19 15:04 bouvigne - - * libmp3lame/quantize_pvt.c: - - also use nssfb21 in short blocks - -2005-03-19 15:03 bouvigne - - * libmp3lame/quantize.c: - - typo - -2005-03-19 14:44 bouvigne - - * libmp3lame/quantize.c: - - updated psfb21 analog silence detection - -2005-03-19 10:41 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - improve (lossless) scalefactor compression - -2005-03-19 09:43 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - supress magic numbers - -2005-03-19 08:48 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - reduce table size. - -2005-03-19 08:21 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen - -2005-03-19 08:08 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - fix CPU specific optimization option. - -2005-03-19 07:33 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - trivial optimization - -2005-03-18 16:31 takehiro - - * libmp3lame/: bitstream.c, machine.h, psymodel.c, quantize.c - (takehiro-2002_05_07-experimental): - - sign bit hack for IEEE754 - -2005-03-18 16:03 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - simplify - -2005-03-18 13:24 takehiro - - * debian/: control, rules (takehiro-2002_05_07-experimental): - - sync with the HEAD. - -2005-03-18 05:26 rbrito - - * debian/changelog, debian/control, debian/rules, doc/man/lame.1: - - Slight modifications to debian packaging (with more to come). - Minor changes to the frontend manpage. - -2005-03-17 16:46 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - added (FLOAT) cast (I hope this is last). - -2005-03-17 16:41 takehiro - - * libmp3lame/: gain_analysis.c, lame.c, psymodel.c, quantize.c, - tags.c (takehiro-2002_05_07-experimental): - - added "(FLOAT)" cast - remove redundant #include - -2005-03-17 15:03 takehiro - - * frontend/rtp.c (takehiro-2002_05_07-experimental): - - fix build problem on cygwin. - -2005-03-17 14:34 takehiro - - * config.h.in, configure (takehiro-2002_05_07-experimental): - - regen - -2005-03-17 14:28 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - do not check the winsocket. - this is the preparation for fixing bugid #1164417 - -2005-03-16 16:07 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - IEEE754 hack for quantizing 0/1 region. - -2005-03-16 14:53 takehiro - - * config.h.in, configure (takehiro-2002_05_07-experimental): - - regen - -2005-03-16 14:52 takehiro - - * configure.in, libmp3lame/machine.h - (takehiro-2002_05_07-experimental): - - check tgmath.h and use it. - -2005-03-15 16:31 takehiro - - * frontend/brhist.c (takehiro-2002_05_07-experimental): - - do not output error message when with --silent. - -2005-03-15 15:49 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen. - -2005-03-15 15:48 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - play with compiler options on G4. I've got 14% gain from it. - -2005-03-15 15:37 takehiro - - * mpglib/interface.c (takehiro-2002_05_07-experimental): - - supress warning. - -2005-03-15 00:26 robert - - * libmp3lame/vbrquantize.c: - - yet another -Y thing: calc_xmin does not compute upto max_nonzero_coeff - in the -Y case. - -2005-03-14 22:32 robert - - * libmp3lame/vbrquantize.c: - - bugfix for vbr-new when sub block gain violates IXMAXVAL constrain in -Y case - -2005-03-14 21:53 robert - - * libmp3lame/quantize_pvt.c: - - removed an assert in calc_noise_core_c - cod_info->count1 == 0 seems to be a common case - -2005-03-14 15:18 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - trivial clean up. - -2005-03-14 14:53 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c - (takehiro-2002_05_07-experimental): - - Separate preflag check from scale bit counting. - It changes preflag, but it is undesirable for VBR encoding. - -2005-03-14 14:38 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - IEEE754 hack for quantization in count1 region. - -2005-03-14 13:31 takehiro - - * frontend/brhist.c (takehiro-2002_05_07-experimental): - - display 'LR+i' as '%' character. - -2005-03-13 17:20 robert - - * libmp3lame/presets.c: - - removing placebo -bx from fast presets - it's a placebo with vbr-old too, but keep it that way a little bit longer - -2005-03-13 17:14 takehiro - - * configure.in, configure (takehiro-2002_05_07-experimental): - - yasm needs -m amd64 to output the elf64 objects. - -2005-03-13 17:11 takehiro - - * libmp3lame/i386/: cpua.nas, nasm.h - (takehiro-2002_05_07-experimental): - - now it can be compiled on x86-64 linux (FC3). but still remains lot of work... - -2005-03-13 17:01 robert - - * frontend/mp3x.c: - - forgot to commit this one, removed unused parameter from usage parameter list - -2005-03-13 14:46 robert - - * libmp3lame/: encoder.c, set_get.c, version.c, version.h: - - removing unused ATH auto adjust types. JDs is now the only one - -2005-03-13 14:43 robert - - * ACM/ACM.cpp: - - version - -2005-03-13 14:42 robert - - * frontend/: main.c, parse.c, parse.h: - - print helptext for internal switches only when internal switches are available - -2005-03-13 12:58 takehiro - - * libmp3lame/i386/: Makefile.am, Makefile.in - (takehiro-2002_05_07-experimental): - - changed include path option, -i -> -I - -2005-03-13 12:31 takehiro - - * libmp3lame/: lame.c, i386/Makefile.am, i386/Makefile.in, - i386/cpu_feat.nas, i386/cpua.nas - (takehiro-2002_05_07-experimental): - - changed CPU feature detection code (which is from GOGO3), - because the old one uses pushad/popad which is not supported on x86-64. - -2005-03-13 10:16 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen - -2005-03-13 10:15 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - added yasm check, to prepare for asm code on i86_64. - -2005-03-12 23:01 robert - - * libmp3lame/vbrquantize.c: - - vbr-new: fixing the -Y bug, that sfb21 wasn't quantized at all - -2005-03-12 20:41 takehiro - - * libmp3lame/: bitstream.c, encoder.h, takehiro.c - (takehiro-2002_05_07-experimental): - - simplify scfsi[] flag. - -2005-03-12 20:41 takehiro - - * libmp3lame/: machine.h, psymodel.c, quantize.c - (takehiro-2002_05_07-experimental): - - clean up "(double)" cast. - -2005-03-12 18:12 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - oops. too much optimized... gi->scalefac[0] may be lesser than 0. - -2005-03-12 17:39 bouvigne - - * libmp3lame/lame.c: - - fix: q2 and higher were NOT enabling substep shaping 2 - -2005-03-12 17:38 bouvigne - - * mpglib/mpg123.h: - - fix for replaygain-accurate - -2005-03-12 17:17 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - fix "stupid" message when -S - (bugid #1145932) - -2005-03-12 13:58 takehiro - - * frontend/gtkanal.c (takehiro-2002_05_07-experimental): - - follow variable type change - -2005-03-12 13:54 takehiro - - * configure, configure.in, libmp3lame/Makefile.am, - libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): - - added ppc directory - -2005-03-12 12:35 takehiro - - * libmp3lame/: bitstream.c, encoder.h, quantize_pvt.h, tables.c, - tables.h, takehiro.c (takehiro-2002_05_07-experimental): - - reduce variable size and changed these order, to archive better cache performance. - -2005-03-11 19:26 takehiro - - * libmp3lame/: psymodel.c, psymodel.h, quantize.c, quantize_pvt.h - (takehiro-2002_05_07-experimental): - - added "(FLOAT)" cast. - -2005-03-11 17:45 takehiro - - * mpglib/Makefile.in (takehiro-2002_05_07-experimental): - - regen - -2005-03-11 17:44 takehiro - - * mpglib/Makefile.am (takehiro-2002_05_07-experimental): - - added layer[123].h to the distribution. - -2005-03-11 17:18 takehiro - - * Makefile.in, aclocal.m4, ACM/Makefile.in, ACM/ADbg/Makefile.in, - ACM/ddk/Makefile.in, ACM/tinyxml/Makefile.in, Dll/Makefile.in, - debian/Makefile.in, doc/Makefile.in, doc/html/Makefile.in, - doc/man/Makefile.in, dshow/Makefile.in, frontend/Makefile.in, - include/Makefile.in, libmp3lame/Makefile.in, - libmp3lame/i386/Makefile.in, mac/Makefile.in, misc/Makefile.in, - mpglib/Makefile.in (takehiro-2002_05_07-experimental): - - regen with the latest gtk.m4 - -2005-03-11 16:49 takehiro - - * libmp3lame/: psymodel.c, tables.c - (takehiro-2002_05_07-experimental): - - use max value of loudness. - -2005-03-11 16:06 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix a comment - -2005-03-11 15:31 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - ATH value should be always same value whatever the value of ATHAdjustLimit is. - -2005-03-11 15:29 takehiro - - * libmp3lame/: psymodel.c, version.h - (takehiro-2002_05_07-experimental): - - implement tonality-aware ATH adjustment. - -2005-03-11 15:28 takehiro - - * libmp3lame/psymodel.h (takehiro-2002_05_07-experimental): - - enlarge ATH adjustment range to clarify the flaw of ATH adjustment algorithm. - -2005-03-11 13:58 takehiro - - * debian/Makefile.in (takehiro-2002_05_07-experimental): - - regen... soryy I made it on cygwin... - -2005-03-11 11:14 takehiro - - * libmp3lame/: bitstream.c, newmdct.c, takehiro.c - (takehiro-2002_05_07-experimental): - - added "(FLOAT)" cast. - -2005-03-11 10:27 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - remove C++ style comments - -2005-03-11 10:18 takehiro - - * libmp3lame/tables.h (takehiro-2002_05_07-experimental): - - make sfBandIndex[] as static. - -2005-03-11 10:11 takehiro - - * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): - - fix build problem when without decoder (--disable-decoder) - -2005-03-11 09:41 takehiro - - * configMS.h (takehiro-2002_05_07-experimental): - - fix build problem with Makefile.unix - -2005-03-11 09:40 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - supress warnings when without decoder (--disable-decoder) - -2005-03-11 09:40 takehiro - - * frontend/: brhist.c, brhist.h (takehiro-2002_05_07-experimental): - - make Console_IO as static. - -2005-03-11 09:38 takehiro - - * Makefile.unix (takehiro-2002_05_07-experimental): - - TAKEHIRO_IEEE754_HACK -> USE_IEEE754_HACK - -2005-03-11 09:29 takehiro - - * libmp3lame/gain_analysis.c (takehiro-2002_05_07-experimental): - - remove redundant pragma. this one is declared in configMS.h - -2005-03-11 03:06 takehiro - - * Makefile.in, ACM/Makefile.in (takehiro-2002_05_07-experimental): - - regen - -2005-03-11 03:05 takehiro - - * ACM/Makefile.am (takehiro-2002_05_07-experimental): - - remove unused file - -2005-03-08 23:07 robert - - * Makefile.unix, frontend/parse.c, libmp3lame/VbrTag.c, - libmp3lame/bitstream.c, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/presets.c, - libmp3lame/set_get.c, libmp3lame/util.h: - - removing some unused member of lame_internal_flags structure - -2005-03-06 18:59 bouvigne - - * libmp3lame/takehiro.c: - - faster noquant_count_bits - -2005-03-06 16:56 bouvigne - - * doc/html/history.html: - - history - -2005-03-06 16:17 bouvigne - - * libmp3lame/: presets.c, version.h: - - updated V3 and V2 presets - -2005-03-06 13:17 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - changed 2.0f -> (FLOAT)2.0, for --enable-all-double - -2005-03-05 18:26 bouvigne - - * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c, - vbrquantize.c: - - slightly faster quantization (not totally sure if it is really faster) - - Also fixed a severe bug in ISO quantization when not using the IEEE hack - -2005-03-05 13:45 bouvigne - - * configMS.h, libmp3lame/lame.c, libmp3lame/quantize.c, - libmp3lame/util.h: - - update of the intrinsics coding style - -2005-03-05 12:40 bouvigne - - * libmp3lame/quantize_pvt.c: - - minor speed increase in calc_noise - -2005-03-03 17:01 takehiro - - * frontend/brhist.c (takehiro-2002_05_07-experimental): - - fix IS ratio display. - -2005-03-03 16:59 takehiro - - * frontend/: main.c, timestatus.c - (takehiro-2002_05_07-experimental): - - print out histgram even when CBR encoding. - -2005-03-02 17:50 takehiro - - * config.h.in (takehiro-2002_05_07-experimental): - - regen - -2005-03-02 17:46 takehiro - - * configure, configure.in (takehiro-2002_05_07-experimental): - - fix --enable-double-float does not work at all. - -2005-03-02 17:01 takehiro - - * config.h.in (takehiro-2002_05_07-experimental): - - the previous one contains gabages... regen. - -2005-03-02 16:59 takehiro - - * libmp3lame/util.c (takehiro-2002_05_07-experimental): - - fix debug build on some non-x86 linux machines. - -2005-03-02 16:58 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix for some 64bit machines (ie. Alpha) - -2005-03-02 15:35 takehiro - - * configure, config.h.in (takehiro-2002_05_07-experimental): - - regen - -2005-03-01 16:59 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - add check for vecLib/vDSP.h, to prepare for Altivec optimization. - -2005-02-28 22:45 bouvigne - - * libmp3lame/: quantize_pvt.c, quantize_pvt.h, util.h: - - calc_noise is back to the C version - -2005-02-28 16:52 takehiro - - * libmp3lame/machine.h (takehiro-2002_05_07-experimental): - - some IEEE754 hack for the CPU with small cache. - -2005-02-27 22:03 bouvigne - - * libmp3lame/quantize_pvt.c: - - calc_noise: - fixed an assertion failure in frames with no big_values - -2005-02-27 20:43 bouvigne - - * libmp3lame/: quantize_pvt.c, quantize_pvt.h, util.h: - - sse version of calc_noise (speedup is very small) - -2005-02-27 17:40 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix it sometimes fail to encode the short block. - -2005-02-27 15:08 bouvigne - - * configMS.h, libmp3lame/quantize.c, libmp3lame/util.h: - - slightly faster init_xrpow_core_sse - -2005-02-27 14:25 takehiro - - * libmp3lame/version.h (takehiro-2002_05_07-experimental): - - now alpha13 - - - replaygain radio/accurate is implemented. - * including replaygain support even when the input is mp3 file. - this is not supported on the current LAME3.x - - - support "TLEN" ID3v2 tag. - - - fix frame # estimation when the input is mp3. - - - fix VBR tag infomation leakage. - - - fix mpeg1 layer1,2 decoder bug. - - - Robert's new eye candy for the frontend. - - - one more reentrant work for the MP3 decoder - - - SSE version of FFT, done by Gilad Raichshtain - - - small optimizations. but replaygain makes it slow down much, - the optimizations are hidden by it... - - - some PPC code added from Robert Stiles and Hans-Peter Dusel. - But not work at all, at least currently. - -2005-02-27 14:16 takehiro - - * frontend/brhist.c (takehiro-2002_05_07-experimental): - - sync with the main branch. - - Robert's new eye candy. - -2005-02-26 14:06 takehiro - - * frontend/: brhist.c, main.c, main.h, parse.c, timestatus.c - (takehiro-2002_05_07-experimental): - - fix duplicated variable of "brhist" - -2005-02-26 09:38 takehiro - - * libmp3lame/tags.c (takehiro-2002_05_07-experimental): - - added TLEN tag when id3v2 tag is used. - (RFE #1064076) - -2005-02-26 06:21 takehiro - - * frontend/get_audio.c: - - fix mp3 frame # estimation (bugid #934072). - -2005-02-26 05:41 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - fix # of mp3 frames estimation (bugid #934072). - -2005-02-25 19:01 bouvigne - - * configMS.h: - - intrinsics support for ICL - -2005-02-25 01:21 robert - - * frontend/: brhist.c, timestatus.c: - - RH_HIST: don't print unused channel modes and block types - -2005-02-24 00:27 robert - - * frontend/brhist.c: - - fix scrolling problem I introduced with the last commit - -2005-02-23 17:58 bouvigne - - * libmp3lame/quantize_pvt.c: - - slightly faster calc_noise - -2005-02-22 02:06 robert - - * libmp3lame/psymodel.c: - - Compile time option to enable GPSYCHO like block type switching in NSPSYTUNE. - Due to differences in convolution, the switching does not happen exactly - as in GPSYCHO. (disabled by default, edit psymodel.c to activate) - -2005-02-19 22:47 robert - - * frontend/: brhist.c, brhist.h, main.c: - - some statistics about block type distribution - -2005-02-19 18:48 bouvigne - - * configMS.h: - - conditionnal intrinsics support for MSVC (probably also works for ICL) - -2005-02-19 15:32 bouvigne - - * libmp3lame/: lame.c, quantize.c, quantize_pvt.c, quantize_pvt.h, - util.h: - - SSE intrinsic version of init_xrpow - It is now using 1% of total time (using 4% in the standard version) - -2005-02-15 06:39 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - fix for old compilers. - -2005-02-14 17:01 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - added MP3 transcoding TODO. - -2005-02-14 15:46 takehiro - - * libmp3lame/tags.c, testcase.mp3 - (takehiro-2002_05_07-experimental): - - fix information leakage when VBR tag write out. - -2005-02-14 15:14 takehiro - - * Makefile.am, Makefile.in, testcase.mp3 - (takehiro-2002_05_07-experimental): - - added tag itself to test when "make test" - -2005-02-14 13:15 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - fix it crashes with floating point exception when without --clipdetect option. - -2005-02-14 13:12 takehiro - - * libmp3lame/: bitstream.c, encoder.h, tags.c - (takehiro-2002_05_07-experimental): - - make the clip detection work. - -2005-02-14 13:11 takehiro - - * libmp3lame/gain_analysis.c (takehiro-2002_05_07-experimental): - - do not use "double" - -2005-02-14 12:58 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - updated - -2005-02-14 12:54 takehiro - - * libmp3lame/gain_analysis.c (takehiro-2002_05_07-experimental): - - clean up. - - remove duplicated pragma. - - do not unroll manually. - -2005-02-13 16:35 takehiro - - * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): - - make it reentrant. - -2005-02-13 14:42 bouvigne - - * libmp3lame/psymodel.c: - - minor speedup - -2005-02-12 16:51 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - oops, enbugged... - now --replaygain-accurate runs (at least it does not crash). - -2005-02-12 16:31 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix decoder initialization when --replaygain-accurate. - -2005-02-12 16:30 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - cleanup - -2005-02-12 15:59 takehiro - - * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): - - prepare for --replaygain-accurate. only preparation. not works. - -2005-02-12 15:58 takehiro - - * include/lame.h (takehiro-2002_05_07-experimental): - - added/cleaned up the replaygain related APIs. - -2005-02-12 08:32 takehiro - - * frontend/main.c, frontend/main.h, frontend/parse.c, - libmp3lame/bitstream.c, libmp3lame/encoder.h, - libmp3lame/gain_analysis.c, libmp3lame/lame.c, - libmp3lame/mpglib_interface.c, libmp3lame/set_get.c - (takehiro-2002_05_07-experimental): - - replaygain support (1) - - fast replaygain now works. - -2005-02-09 01:45 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - code simplification - -2005-02-08 11:06 takehiro - - * libmp3lame/: Makefile.am, Makefile.in - (takehiro-2002_05_07-experimental): - - fix mingw build problem, as is done on the main branch by Robert. - -2005-02-07 22:02 robert - - * configure.in, libmp3lame/Makefile.am, libmp3lame/Makefile.in: - - fixing mingw32 configure problems - -2005-02-07 13:45 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - added (FLOAT) cast to the floating point constants.(one more) - -2005-02-07 12:28 takehiro - - * libmp3lame/: encoder.h, lame.c - (takehiro-2002_05_07-experimental): - - reduce malloc/free as is done in the main branch by Robert. - -2005-02-06 23:05 robert - - * libmp3lame/: quantize.c, vbrquantize.c, vbrquantize.h: - - some MSVC warning level 4 issues resolved - -2005-02-06 20:23 robert - - * libmp3lame/: quantize.c, takehiro.c, vbrquantize.c: - - resolved compiler warnings - -2005-02-06 19:49 robert - - * libmp3lame/: lame.c, machine.h, quantize_pvt.c, util.c, util.h, - vbrquantize.c: - - lame.c: fixed lost break in lame_init_parms - reduced calloc/free calls (where called once per frame, now once per run) - machine.h: removed IIPOW20 - util.c, util.h: removed VBR_t, added in_buffer_[0/1] to lame_internal_flags - vbrquantize.c: fixed some small rounding problem in quantize routines - -2005-02-05 14:14 robert - - * libmp3lame/vbrquantize.c: - - eleminating dead code - expanding preprocessor defines - works probably not with GPsycho anymore, but NSPSYTUNE only (G.not tested) - doesn't try to use 126 bits at minimum per granule anymore, less bloating - on mono like signals where the difference signal is almost zero. - -2005-02-05 13:32 bouvigne - - * libmp3lame/version.h: - - bumped alpha - -2005-02-05 13:31 bouvigne - - * libmp3lame/lame.c: - - enabled ath adjustment for abr/cbr - -2005-02-04 18:34 bouvigne - - * libmp3lame/lame.c: - - sorry, I shouldn't have commited this one - -2005-02-02 04:35 takehiro - - * include/lame.h (takehiro-2002_05_07-experimental): - - remove comma, which is not allowed in C++ (but allowed in C) - -2005-02-02 04:11 takehiro - - * libmp3lame/: psymodel.c, set_get.c - (takehiro-2002_05_07-experimental): - - reduce warning when with "-W" option. - -2005-02-01 10:29 bouvigne - - * libmp3lame/: bitstream.c, lame.c, takehiro.c: - - reduced warnings - -2005-01-30 22:31 robert - - * Makefile.unix, libmp3lame/vbrquantize.c: - - scalefactor allocation should work now as expected - -2005-01-30 22:27 robert - - * libmp3lame/: machine.h, quantize_pvt.c, quantize_pvt.h: - - off by one bug: - we do access iipow20 by values in [0,Q_MAX2] inclusive, - that makes Q_MAX2+1 entries in total - -2005-01-30 19:34 takehiro - - * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): - - there's no GPSYCHO. - -2005-01-30 19:13 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen - -2005-01-30 19:13 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - fix automatic CPU specific optimization on cygwin. - -2005-01-30 18:01 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen. - -2005-01-30 18:00 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - hope this will fix the build failure on MinGW + NASM - -2005-01-30 16:00 takehiro - - * libmp3lame/: encoder.h, lame.c, tables.c - (takehiro-2002_05_07-experimental): - - optimize the layout of the coefficients for resampling. - -2005-01-30 15:51 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - fix it outputs message even when with --silent. - -2005-01-30 14:49 takehiro - - * libmp3lame/: psymodel.c, quantize.c - (takehiro-2002_05_07-experimental): - - added cast to the floating point constants (one more) - -2005-01-30 14:42 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - added cast to floating point constants. - -2005-01-30 12:31 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - use bit-consumption to estimate the "goodness" of quantization, - as is done in LAME 3.x. - -2005-01-29 19:40 bouvigne - - * libmp3lame/presets.c: - - updated vbr presets 9 to 4 - -2005-01-29 18:42 bouvigne - - * libmp3lame/takehiro.c: - - fixed a crash - -2005-01-29 18:11 bouvigne - - * libmp3lame/: quantize_pvt.c, quantize_pvt.h, takehiro.c: - - quantize_xrpow: also re-use previously computed data in short blocks - -2005-01-25 21:47 bouvigne - - * libmp3lame/quantize.c: - - X9: more bits into reservoir - -2005-01-23 18:07 takehiro - - * frontend/parse.c, include/lame.h, libmp3lame/encoder.h, - libmp3lame/set_get.c (takehiro-2002_05_07-experimental): - - added replaygain/nogap API - added replaygain commandline option. - -2005-01-23 18:07 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - cosmetic - -2005-01-23 18:06 takehiro - - * HACKING (takehiro-2002_05_07-experimental): - - update current state. - -2005-01-23 16:25 bouvigne - - * libmp3lame/takehiro.c: - - oops, quantize_xrpow optimization has been accidentally disabled in november - -2005-01-23 14:27 bouvigne - - * libmp3lame/lame.c: - - reinstated old q1 (increase only 1 sf per iteration) - -2005-01-22 18:15 bouvigne - - * libmp3lame/quantize_pvt.c: - - problem with q1 and q0 finally found. - I am unable to trace it prior to "the big 3.94 merge". - -2005-01-22 09:19 takehiro - - * libmp3lame/: tags.c, tags.h (takehiro-2002_05_07-experimental): - - fix for unsigned/singed comparison warning. - -2005-01-20 17:10 takehiro - - * libmp3lame/libmp3lame_vc6.dsp (takehiro-2002_05_07-experimental): - - added fftsse.nas support - /\\ - \\/ - -2005-01-20 17:07 takehiro - - * Makefile.MSVC, Makefile.unix (takehiro-2002_05_07-experimental): - - support SSE version of FFT. - -2005-01-20 16:38 takehiro - - * libmp3lame/quantize.c: - - to clarify the relationship of "if-then-else" and suppress warnings from gcc, - added braces. - -2005-01-20 16:35 takehiro - - * libmp3lame/i386/: Makefile.am, Makefile.in, choose_table.nas, - fftsse.nas, ffttbl.nas (takehiro-2002_05_07-experimental): - - clean up. remove unused code and tables, and update comments. - -2005-01-20 16:28 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - cosmetic - -2005-01-20 16:28 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - trivial optimization - -2005-01-19 16:08 takehiro - - * libmp3lame/: tables.c, i386/Makefile.am, i386/Makefile.in, - i386/fftsse.nas, i386/ffttbl.nas - (takehiro-2002_05_07-experimental): - - patched version of FHT_SSE (by Gilad Raichshtain). - and support code for it (by me). - -2005-01-18 07:04 takehiro - - * libmp3lame/bitstream.c, frontend/get_audio.c - (takehiro-2002_05_07-experimental): - - suppress warnings on MSVC6 - -2005-01-16 18:19 takehiro - - * libmp3lame/bitstream.c, libmp3lame/lame.c, mpglib/interface.h - (takehiro-2002_05_07-experimental): - - fix for when --disable-decoder - -2005-01-16 18:12 takehiro - - * mpglib/interface.h (takehiro-2002_05_07-experimental): - - added prototype declaration of decode_init_for_replaygain() - -2005-01-16 18:08 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix memory leak when RG used. This is enbugged by the previos commit. - -2005-01-16 18:00 takehiro - - * libmp3lame/: bitstream.c, lame.c, mpglib_interface.c - (takehiro-2002_05_07-experimental): - - prepare for ReplayGain merge. - -2005-01-15 18:12 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - to prevent a floating point exception, add a limit to retry. - -2005-01-15 18:10 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - trivial optimization - -2005-01-15 17:15 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - use libsndfile when input is unknown RIFF-wave format - -2005-01-15 14:15 takehiro - - * libmp3lame/libmp3lame_vc6.dsp (takehiro-2002_05_07-experimental): - - libmp3lame/version.c was removed. - -2005-01-15 14:08 takehiro - - * .cvsignore (takehiro-2002_05_07-experimental): - - added configure-stamp - -2005-01-15 14:07 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - update frontend TODO. - -2005-01-15 14:02 takehiro - - * Makefile.MSVC, Makefile.unix (takehiro-2002_05_07-experimental): - - libmp3lame/version.c was removed. - -2005-01-15 12:56 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen - -2005-01-15 12:56 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - always use libsndfile if it is found. - -2005-01-15 12:30 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - fix mp3 input....oops. - -2005-01-15 12:27 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - fix endianness of RIFF wave PCM. - -2005-01-15 12:05 takehiro - - * frontend/: get_audio.c, get_audio.h, gtkanal.c, main.c, main.h, - parse.c (takehiro-2002_05_07-experimental): - - cleaning up LIBSNDFILE, part 3. - - use libsndfile only when the frontend does not know how to handle the - input file format. - -2005-01-15 10:54 takehiro - - * frontend/rtp.h (takehiro-2002_05_07-experimental): - - make them static - -2005-01-15 10:53 takehiro - - * frontend/mp3rtp.c (takehiro-2002_05_07-experimental): - - make those which can be static as static. - -2005-01-15 09:43 takehiro - - * frontend/: get_audio.c, parse.c - (takehiro-2002_05_07-experimental): - - clean up arround libsndfile, part 2. - -2005-01-15 09:30 takehiro - - * frontend/: get_audio.c, get_audio.h - (takehiro-2002_05_07-experimental): - - part of cleaning up LIBSNDFILE - -2005-01-15 07:25 takehiro - - * frontend/: get_audio.c, get_audio.h, gtkanal.c, parse.c - (takehiro-2002_05_07-experimental): - - clean up MPEG Layer 1,2,3 input - -2005-01-13 19:18 bouvigne - - * libmp3lame/version.h: - - bump alpha - -2005-01-13 19:17 bouvigne - - * libmp3lame/: quantize.c, quantize_pvt.h: - - use bits in quant_comp - -2005-01-13 18:54 bouvigne - - * libmp3lame/presets.c: - - updated ath values for abr/cbr - -2005-01-13 18:20 bouvigne - - * frontend/gtkanal.c, libmp3lame/lame-analysis.h, - libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, - libmp3lame/quantize_pvt.h: - - Replaced X9 by the former X10 (ssd). - The abr/cbr modes are using this comparison - -2005-01-13 16:28 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix rounding of bitrate calculation - -2005-01-12 18:24 takehiro - - * mpglib/: common.c, layer1.c, layer2.c - (takehiro-2002_05_07-experimental): - - patches from the latest debian package, including some boundary check code. - -2005-01-10 17:38 takehiro - - * libmp3lame/: lame.c, quantize.c, quantize.h - (takehiro-2002_05_07-experimental): - - changed one function name, iteration_loop -> CBR_iteration_loop - -2005-01-10 17:11 takehiro - - * frontend/main.c (takehiro-2002_05_07-experimental): - - fix it always output the banner even when with --silent/--quiet. - -2005-01-10 14:48 takehiro - - * testcase.mp3 (takehiro-2002_05_07-experimental): - - testcase for alpha12 - -2005-01-10 13:17 takehiro - - * libmp3lame/quantize_pvt.h (takehiro-2002_05_07-experimental): - - remove outdated comments - -2005-01-10 13:16 takehiro - - * libmp3lame/version.h (takehiro-2002_05_07-experimental): - - update alpha version and psymodel version - - fix too much slow down with higher VBR quality (like -V0) - - changed long/short block switching code. - -2005-01-10 13:13 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - changed VBR strategy to prevent "slow down" when the higher quality (like -V0) - is selected. - - When we cannot encode the frame without noticible distortion with the allowed - bitrate, simply encode the frame with the highest allowed bitrate. - -2005-01-10 13:10 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix it abort when higher VBR. enbug at the previous comit. sorry. - -2005-01-10 12:38 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - for better error message - -2005-01-10 12:21 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c - (takehiro-2002_05_07-experimental): - - better use of "anything goes" scalefactor band when VBR. - faster and smaller bitrate without any quality regression (theoretically) - -2005-01-10 10:06 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - changed block switching to use "sum" of energy in subblocks, - instead of their "max". - - and improve comments. - -2005-01-10 09:23 takehiro - - * libmp3lame/quantize_pvt.c: - - seems it cannot build on Linux and some Unix. - to fix this, I changed max() -> Max(). - -2005-01-09 17:31 bouvigne - - * frontend/gtkanal.c, libmp3lame/lame-analysis.h: - - display SSD in mp3x - -2005-01-09 17:31 bouvigne - - * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h: - - do not compute noise if best quant has no distorted band and current quant - is bigger than the best one - -2005-01-09 09:19 takehiro - - * frontend/: get_audio.h, gtkanal.c, mp3x.c - (takehiro-2002_05_07-experimental): - - cosmetic changes (fix comments and so on) - -2005-01-09 09:14 takehiro - - * frontend/mp3rtp.c (takehiro-2002_05_07-experimental): - - clean up, mainly fixing comments - -2005-01-09 09:06 takehiro - - * libmp3lame/: Makefile.am, Makefile.in, set_get.c, version.c - (takehiro-2002_05_07-experimental): - - merged version.c into set_get.c and fixed comments (there's no GPSYCHO support) - -2005-01-08 11:47 bouvigne - - * libmp3lame/version.h: - - bumped alpha - -2005-01-08 11:46 bouvigne - - * libmp3lame/psymodel.c: - - limited ATH effect in short blocks. - This is fundamentally wrong, but otherwise it produces bad quality - -2005-01-08 10:58 bouvigne - - * libmp3lame/: lame.c, presets.c, quantize.c, quantize_pvt.c, - quantize_pvt.h: - - updated VBR presets to match the cbr/abr changes - (also corrected the --cbr behavior) - -2005-01-08 10:56 bouvigne - - * doc/html/history.html: - - history - -2005-01-05 14:23 takehiro - - * frontend/: main.c, main.h, mp3x.c, parse.c - (takehiro-2002_05_07-experimental): - - remove "lame_XXX" function to separate name space - -2005-01-05 11:08 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - updated. BTW, it seems plusv site is vanished... - -2005-01-01 18:19 takehiro - - * configure, configure.in (takehiro-2002_05_07-experimental): - - adjust spacing - -2004-12-31 14:42 takehiro - - * frontend/: get_audio.c, main.c, main.h, parse.c - (takehiro-2002_05_07-experimental): - - one more clean up arround get_audio - -2004-12-31 14:33 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - simplify - -2004-12-31 12:22 takehiro - - * frontend/.cvsignore (takehiro-2002_05_07-experimental): - - added mp3rtp to ignore - -2004-12-31 12:07 takehiro - - * frontend/main.c: - - merge 1.73.2.34 -> 1.73.2.35 - fix it outputs CR even when --silent/--quiet - (bug #973302) - -2004-12-31 11:56 takehiro - - * frontend/main.c (takehiro-2002_05_07-experimental): - - fix it outputs CR even when --silent/--quiet - (bug #973302) - -2004-12-31 11:26 takehiro - - * frontend/mp3rtp.c: - - fix buffer overrun(same in my experimental branch). - -2004-12-31 11:23 takehiro - - * frontend/mp3rtp.c (takehiro-2002_05_07-experimental): - - fix buffer overrun(related to bug #1036590) - - # but still it does not work correctly - -2004-12-31 07:37 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - adjust ABR quality/bitrate control - -2004-12-27 16:13 bouvigne - - * libmp3lame/lame.c: - - cbr/abr: adjusted lowpass - -2004-12-27 15:32 bouvigne - - * libmp3lame/presets.c: - - abr/cbr: adjusted m/s and short/long - -2004-12-27 10:03 takehiro - - * config.h.in (takehiro-2002_05_07-experimental): - - added for large(>2GB) file support. - -2004-12-19 18:20 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix scalefactor band region... oops. - -2004-12-19 18:14 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix the calculation of scalefactor value when VBR. - - In the band whose allowed noise threshold is very high, we do not need to - encode the quantized values. Now LAME uses it properly. - -2004-12-19 17:16 takehiro - - * libmp3lame/quantize_pvt.h (takehiro-2002_05_07-experimental): - - added parenthis to avoid some side effects. - -2004-12-13 18:16 takehiro - - * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): - - changed the order of members to localize the write access of memory. - -2004-12-13 18:15 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - added hard limits of threshold for ABR, to prevent too much degration - -2004-12-13 17:45 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix it sometimes slows down too much. - -2004-12-13 17:16 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - change threshold for short blocks same as that of long blocks. - -2004-12-13 17:04 takehiro - - * config.h.in (takehiro-2002_05_07-experimental): - - TAKEHIRO_IEEE754 -> USE_IEEE754 - -2004-12-13 15:09 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen - -2004-12-13 14:01 takehiro - - * DEFINES, Makefile.MSVC, configMS.h, configure.in, - libmp3lame/bitstream.c, libmp3lame/machine.h, - libmp3lame/psymodel.c, libmp3lame/quantize.c, - libmp3lame/tables.c, libmp3lame/tables.h, libmp3lame/takehiro.c - (takehiro-2002_05_07-experimental): - - TAKEHIRO_IEEE754_HACK -> USE_IEEE754_HACK - -2004-12-13 14:01 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - changed a commet. - -2004-12-13 12:40 takehiro - - * mpglib/layer3.c (takehiro-2002_05_07-experimental): - - fix MPEG2 decoding, from foobar2k - -2004-12-12 18:08 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - use MDCT filter in -q5 and the better. - -2004-12-12 17:52 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix typo - -2004-12-12 17:52 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - fix table value initialization. - -2004-12-12 17:51 takehiro - - * libmp3lame/newmdct.c (takehiro-2002_05_07-experimental): - - fix filtering not working completely... oops. - -2004-12-12 10:57 takehiro - - * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): - - fix comment - -2004-12-12 10:47 takehiro - - * libmp3lame/: encoder.h, lame.c, newmdct.c, tables.c - (takehiro-2002_05_07-experimental): - - new filtering algorithm. Better resolution (110Hz @ fs=44.1kHz) - and "not" slow much. - - but not enabled by default. - -2004-12-12 08:26 takehiro - - * libmp3lame/i386/ssesub.c (takehiro-2002_05_07-experimental): - - test implementation of SSE support with imtrinsic. - - TODO: - - how to build it and configure support ? - - need more functions to implement. - -2004-12-10 17:56 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - trivial optimization in lossless coding. - -2004-12-10 02:35 takehiro - - * libmp3lame/: encoder.h, lame.c, tables.c, i386/choose_table.nas, - i386/cpu_feat.nas (takehiro-2002_05_07-experimental): - - MMX2 support - -2004-12-10 00:21 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen - -2004-12-09 17:36 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - cosmetic changes & reduce warnings. - -2004-12-09 17:29 takehiro - - * libmp3lame/: quantize.c, i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - MMX version of xr_max() - make VBR/ABR 1% faster. - -2004-12-09 17:05 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - merge from main branch. - - changed words; "default: foobar" -> "default=foobar" - - enable bitrate histogram by default - -2004-12-05 18:10 takehiro - - * libmp3lame/: bitstream.c, takehiro.c - (takehiro-2002_05_07-experimental): - - fix encoding failure of velvet.wav with CBR 128 - -2004-12-05 18:09 takehiro - - * libmp3lame/tags.c (takehiro-2002_05_07-experimental): - - cosmetic change - -2004-12-05 17:59 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - considering the shape of window function when long/short block switching. - -2004-12-05 12:18 takehiro - - * testcase.mp3 (takehiro-2002_05_07-experimental): - - regen with "tag fixed" version. - -2004-12-05 12:16 takehiro - - * libmp3lame/tags.c (takehiro-2002_05_07-experimental): - - fix VBR(LAME) tag contains a gabage. - -2004-12-02 16:29 takehiro - - * frontend/.indent.pro, libmp3lame/.indent.pro, misc/.indent.pro - (takehiro-2002_05_07-experimental): - - I think no one uses .indent.pro - so I remove them. - -2004-12-02 16:27 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - better threshold controll for ABR. - -2004-11-30 19:00 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix it may overflow - -2004-11-30 18:57 takehiro - - * libmp3lame/: psymodel.c, quantize.c - (takehiro-2002_05_07-experimental): - - VBR speed optimization - -2004-11-30 18:55 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - fix assertion - -2004-11-30 18:54 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - optimization by changing table values. - -2004-11-30 10:19 takehiro - - * configMS.h (takehiro-2002_05_07-experimental): - - fix for MSVC "inline" keyword - -2004-11-30 09:39 takehiro - - * libmp3lame/: encoder.h, lame.c - (takehiro-2002_05_07-experimental): - - precalculate width information - -2004-11-30 08:58 takehiro - - * libmp3lame/: encoder.h, lame.c, quantize.c, quantize_pvt.h, - takehiro.c (takehiro-2002_05_07-experimental): - - table size reduction - -2004-11-30 08:55 takehiro - - * libmp3lame/newmdct.c (takehiro-2002_05_07-experimental): - - clean up. - -2004-11-30 07:59 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - generalized signbits encoding hack for IEEE754 - -2004-11-30 07:52 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - IEEE754 hack for sign bit. - -2004-11-30 07:41 takehiro - - * frontend/main.c (takehiro-2002_05_07-experimental): - - fix decoding... oops... - -2004-11-30 01:07 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - cleanup - -2004-11-30 01:05 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - tuning VBR scalefactor prediction and fix treatment of almost silent scalefactor. - -2004-11-29 23:41 takehiro - - * libmp3lame/psymodel.c: - - fix ATHlower is always "0". - -2004-11-29 18:01 takehiro - - * libmp3lame/i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - fix comments - -2004-11-29 18:01 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - changed VBR scalefactor prediction method. - use "previous" scalefactor's values as predicted value. - -2004-11-29 16:46 takehiro - - * frontend/main.c (takehiro-2002_05_07-experimental): - - fix for out of memory. - -2004-11-29 04:51 takehiro - - * frontend/parse.c (takehiro-2002_05_07-experimental): - - remove unused definitions - -2004-11-29 04:51 takehiro - - * frontend/main.c (takehiro-2002_05_07-experimental): - - remove console.h - -2004-11-28 19:10 bouvigne - - * libmp3lame/: quantize_pvt.c, quantize_pvt.h, takehiro.c: - - some FLOAT -> int - -2004-11-28 19:09 takehiro - - * frontend/: Makefile.am, Makefile.in, console.c, console.h - (takehiro-2002_05_07-experimental): - - remove unused files. - -2004-11-28 18:21 takehiro - - * Dll/BladeMP3EncDLL.c: - - added brancket to fix bugid#1003342 on sf.net - -2004-11-28 17:15 takehiro - - * frontend/get_audio.c, frontend/parse.c, libmp3lame/lame.c - (takehiro-2002_05_07-experimental): - - "-s" option is now prior to the frequency data in .wav file header. - -2004-11-28 15:21 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - changed double constants into FLOAT type - -2004-11-28 14:47 takehiro - - * libmp3lame/: lame.c, mpglib_interface.c, quantize.c, takehiro.c - (takehiro-2002_05_07-experimental): - - To optimize more, changed sign of gfc->width[] (now they are minus value) - -2004-11-28 14:24 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - trivial optimization - -2004-11-28 14:09 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - trivial optimization - -2004-11-28 14:01 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - now ABR is based on VBR, so the -q setting has no meaning. - -2004-11-28 13:58 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - changed table type int -> char, to avoid cache line conflict. - -2004-11-28 13:40 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - little bit optimizing - -2004-11-28 12:58 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen - -2004-11-28 12:57 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - oops... use "-mcpu" and "-mtune" by checking gcc version. - -2004-11-28 11:38 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - use calculation instead of table. - (encoding results may be different from previous versions, but that's "lossless" difference) - -2004-11-28 11:06 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - make them static - -2004-11-28 10:33 takehiro - - * configure, configure.in (takehiro-2002_05_07-experimental): - - changed -mcpu -> -mtune, because newer gcc doesn't like -mcpu. - -2004-11-28 08:47 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen - -2004-11-28 08:47 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - changed optimization option - -2004-11-27 19:43 takehiro - - * Makefile.MSVC, Makefile.in, Makefile.unix, aclocal.m4, configure, - ACM/Makefile.in, ACM/ADbg/Makefile.in, ACM/ddk/Makefile.in, - ACM/tinyxml/Makefile.in, Dll/Makefile.in, debian/Makefile.in, - doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, - dshow/Makefile.in, frontend/Makefile.am, frontend/Makefile.in, - frontend/get_audio.c, frontend/get_audio.h, - frontend/lame_vc6.dsp, frontend/main.c, frontend/mp3rtp.c, - frontend/mp3x_vc6.dsp, frontend/portableio.c, - frontend/portableio.h, include/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, - mac/Makefile.in, misc/Makefile.in, mpglib/Makefile.in - (takehiro-2002_05_07-experimental): - - remove portableio.[ch] - use automake 1.9.2 to regen the auto* stuffs. - -2004-11-27 17:28 takehiro - - * frontend/: get_audio.c, portableio.c, portableio.h - (takehiro-2002_05_07-experimental): - - remove Read32BitsHighLow() - -2004-11-27 17:21 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - fix file size reading - -2004-11-27 17:21 takehiro - - * frontend/: portableio.c, portableio.h - (takehiro-2002_05_07-experimental): - - remove unused functions. - -2004-11-27 09:57 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - remove AIFF support from LAME standard input code. - if you need an AIFF support, use libsndfile instead. - -2004-11-23 18:38 takehiro - - * configure, configure.in, frontend/get_audio.c - (takehiro-2002_05_07-experimental): - - support libsndfile 1.0.x - (and remove support that of 0.x) - -2004-11-23 15:18 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - trivial optimization. - -2004-11-23 15:18 takehiro - - * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): - - - ABR quality adjustment. - (oops, I forget to commit in the previous one) - -2004-11-23 15:17 takehiro - - * libmp3lame/: quantize.c, encoder.h - (takehiro-2002_05_07-experimental): - - - ABR quality adjustment (little bit). - - manually inlining finish_VBR_coding() - -2004-11-23 09:46 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - supress magic numbers - -2004-11-23 08:27 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - trivial optimization by reducing branch. - -2004-11-21 18:45 takehiro - - * libmp3lame/version.h (takehiro-2002_05_07-experimental): - - now alpha 11, including new ABR - -2004-11-21 18:45 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - clean up - -2004-11-21 18:41 takehiro - - * libmp3lame/: encoder.h, quantize.c - (takehiro-2002_05_07-experimental): - - brand new ABR algorith. - - simply adjust the psycho-threshold by checking (target bitrate) vs. - (current bitrate) - -2004-11-21 18:32 takehiro - - * libmp3lame/tags.c (takehiro-2002_05_07-experimental): - - fix VBR tag is completely messed up! - -2004-11-21 12:28 takehiro - - * libmp3lame/: bitstream.c, encoder.h, lame.c, psymodel.c, - quantize.c, quantize_pvt.h, tables.c - (takehiro-2002_05_07-experimental): - - simplify the initialization of gr_info[][] - -2004-11-21 12:26 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - cosmetic change - -2004-11-21 12:25 takehiro - - * libmp3lame/tables.h (takehiro-2002_05_07-experimental): - - changed comments - -2004-11-21 12:23 takehiro - - * libmp3lame/i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - optimize in the case of width = 2. - -2004-11-21 10:45 takehiro - - * frontend/: get_audio.c, get_audio.h, main.c - (takehiro-2002_05_07-experimental): - - use 32bit input even when MP3 decoding, to prepare better precision mp3 decoder. - remove "get_audio16()" function, because now it is not needed at all. - -2004-11-20 18:43 takehiro - - * frontend/: gtkanal.c, main.c (takehiro-2002_05_07-experimental): - - To make mp3x use 32bit integer encoding interface. - Because it has used 16bit interface, it could not analyze the 32bit input data. - Now it is fixed. - -2004-11-20 11:49 takehiro - - * frontend/gpkplotting.c (takehiro-2002_05_07-experimental): - - merge from main branch. - - more explicit display of noise values - -2004-11-17 19:54 bouvigne - - * libmp3lame/: quantize.c, util.h: - - noise shaping type 3: - amplify bands within 50% of distortion, - then refine by amplifying the most distorted band - -2004-10-24 14:26 bouvigne - - * libmp3lame/version.h: - - bump alpha - -2004-10-24 14:25 bouvigne - - * libmp3lame/lame.c: - - reworked -q values: - noise_shaping_amp 2 removed - full Huffman search removed in q0 - full outer loop search enabled in q0 - -2004-10-24 14:21 bouvigne - - * libmp3lame/: quantize.c, util.h: - - full outer loop search: - allows to search for better quantization until global_gain==255 - -2004-09-18 10:20 takehiro - - * ACM/ACM.cpp (takehiro-2002_05_07-experimental): - - sync with main branch (r1.17) - - fix by Dmitriy Startsev - -2004-09-18 10:09 takehiro - - * Dll/BladeMP3EncDLL.c (takehiro-2002_05_07-experimental): - - fix bug item #1003342 - -2004-08-19 19:49 bouvigne - - * doc/html/history.html: - - added 3.96.1 - -2004-08-19 19:36 bouvigne - - * doc/html/modes.html: - - spelling, clarifications - -2004-07-28 20:33 robert - - * configure, configure.in (RELEASE__3_96-bugfix-branch): - - updating configure to version number 3.96.1 - -2004-07-21 18:59 bouvigne - - * doc/html/: history.html, index.html - (RELEASE__3_96-bugfix-branch): - - updated for 3.96.1 - -2004-07-21 18:52 bouvigne - - * ACM/: ACM.cpp, ACMStream.cpp, acm.rc - (RELEASE__3_96-bugfix-branch): - - sync fixes from main branch - -2004-07-21 18:46 bouvigne - - * ACM/ACM.cpp: - - fix by Dmitriy Startsev - -2004-07-11 18:12 bouvigne - - * ACM/acm.rc: - - updated version number because of recent fixes - -2004-07-11 18:11 bouvigne - - * ACM/ACMStream.cpp: - - fixed a potential crash - -2004-07-11 18:05 bouvigne - - * ACM/ACM.cpp: - - Should fix the display issue under win95 - -2004-07-11 17:11 bouvigne - - * ACM/ACM.cpp: - - fix crash when used through directshow. - It still does not work in this configuration, but at least it does not crash anymore. - -2004-06-27 19:32 robert - - * libmp3lame/psymodel.c (RELEASE__3_96-bugfix-branch): - - fixed short block detection using mid and side channels - -2004-06-27 13:02 bouvigne - - * libmp3lame/psymodel.c: - - fixed short block detection using mid and side channels - -2004-06-26 17:08 robert - - * Makefile.unix, ACM/ACM.cpp, libmp3lame/gain_analysis.c, - libmp3lame/gain_analysis.h, libmp3lame/lame.c, - libmp3lame/psymodel.c, libmp3lame/vbrquantize.c, - libmp3lame/version.c, libmp3lame/version.h - (RELEASE__3_96-bugfix-branch): - - back porting some bug fixes into 3.96 stable branch - - patch by takehiro: - - fix bug id 921798 - http://sourceforge.net/tracker/index.php?func=detail&aid=921798&group_id=290&atid=100290 - - This is reported as bug for "BCC", but it may happen for every compiler. - - patch by olcios: - - A better fix for the FP x86 problem. Provided by Andrew Church. Modified by olcios. - - patch by bouvigne: - - restored use of padding when not using bit reservoir - - patch by robert: - - bug fix for lame crashing occasionally when using --vbr-new - -2004-06-26 15:35 bouvigne - - * libmp3lame/encoder.c: - - lame_encode_frame_init - -2004-06-20 17:28 bouvigne - - * doc/html/history.html, libmp3lame/lame.c: - - restored use of padding when not using bit reservoir - -2004-06-18 19:15 bouvigne - - * libmp3lame/: bitstream.c, encoder.c, l3side.h, lame.c, - mpglib_interface.c, newmdct.c, psymodel.c, quantize.c, - quantize_pvt.c, quantize_pvt.h, reservoir.c, takehiro.c, util.c, - VbrTag.c, util.h, vbrquantize.c, vbrquantize.h, version.h: - - FLOAT8 -> FLOAT - -2004-06-06 15:31 bouvigne - - * frontend/: gpkplotting.c, gtkanal.c: - - more explicit display of noise values - -2004-06-06 14:15 bouvigne - - * frontend/gtkanal.c: - - display more scalefactor band splitting lines. - (as in exp branch) - -2004-06-06 09:48 bouvigne - - * doc/html/history.html: - - history - -2004-06-05 15:46 bouvigne - - * libmp3lame/quantize.c: - - small speedup: init_xrpow only up to max non-zero coeff - -2004-05-31 17:35 bouvigne - - * libmp3lame/takehiro.c: - - reduced the number of calls to quantization function - -2004-05-27 23:55 robert - - * libmp3lame/version.h: - - now at 3.97 alpha 2 - -2004-05-27 23:52 robert - - * libmp3lame/: takehiro.c, vbrquantize.c: - - bug fix for lame crashing occasionally when using --vbr-new - PS: scalefactor allocation is still not optimal - -2004-05-26 21:37 bouvigne - - * libmp3lame/takehiro.c: - - fixed a stupid bug - -2004-05-26 21:04 bouvigne - - * libmp3lame/takehiro.c: - - fixed a bug in quantize_xrpow, but it is still crashing - Oddly, cbr/abr are working fine, and low vbr settings are also working fine. - -V2 is not working - -2004-05-23 13:16 bouvigne - - * libmp3lame/: quantize_pvt.c, quantize_pvt.h, takehiro.c, util.h: - - Use function pointer to select between quantization methods. - This should ease plugin of vectorized versions - -2004-05-23 12:47 bouvigne - - * libmp3lame/takehiro.c: - - factorized code which is selecting which lines to quantize - -2004-05-23 12:43 bouvigne - - * configMS.h: - - version - -2004-05-23 06:23 takehiro - - * libmp3lame/: tables.c, tables.h, takehiro.c - (takehiro-2002_05_07-experimental): - - make some tables as static - -2004-05-23 04:23 takehiro - - * libmp3lame/i386/: choose_table.nas, fft3dn.nas, quantSSE.nas - (takehiro-2002_05_07-experimental): - - fix possible link problem on cygwin - -2004-05-22 16:18 takehiro - - * libmp3lame/i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - fix cygwin build - -2004-05-22 14:26 takehiro - - * libmp3lame/: encoder.h, quantize_pvt.h, tables.c, takehiro.c, - i386/choose_table.nas (takehiro-2002_05_07-experimental): - - reduce MMX code, because C code is faster than asm one :p - and trivial coding tweaks. - -2004-05-22 14:02 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - optimization by reducing conditional jumps - -2004-05-22 13:53 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - optimization by changing multiply -> shift - -2004-05-22 10:54 takehiro - - * libmp3lame/: takehiro.c, i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - faster choose_table_*() implimentation. use cached value of ix_max(). - -2004-05-22 09:14 takehiro - - * libmp3lame/: takehiro.c, i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - changed choose_table_*() API, for further optimizations. - -2004-05-16 16:57 takehiro - - * libmp3lame/i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - choose_from2 is only used when table=1 or 3. - -2004-05-16 16:54 takehiro - - * libmp3lame/tags.c (takehiro-2002_05_07-experimental): - - added ReplayGain tag output. - -2004-05-16 16:49 takehiro - - * include/lame.h, libmp3lame/encoder.h, libmp3lame/lame.c, - libmp3lame/tags.c (takehiro-2002_05_07-experimental): - - Changed API of tag-output function making it possible to return the error code. - and clean up arround tag output code. - -2004-05-16 16:47 takehiro - - * libmp3lame/gain_analysis.c (takehiro-2002_05_07-experimental): - - cosmetic - -2004-05-16 16:46 takehiro - - * frontend/: get_audio.c, main.c, portableio.c, portableio.h - (takehiro-2002_05_07-experimental): - - trivial - -2004-05-16 12:48 takehiro - - * Makefile.unix (takehiro-2002_05_07-experimental): - - to follow that amiga_mpega.c is removed. - -2004-05-16 12:47 takehiro - - * frontend/Makefile.in (takehiro-2002_05_07-experimental): - - regen - -2004-05-15 13:06 takehiro - - * Makefile.MSVC, libmp3lame/libmp3lame_vc6.dsp - (takehiro-2002_05_07-experimental): - - added gain_analysis.[ch] - -2004-05-15 13:04 takehiro - - * ACM/LameACM.inf (takehiro-2002_05_07-experimental): - - (very experimental thing) added "register/unregister program" - -2004-05-15 13:03 takehiro - - * ACM/TODO (takehiro-2002_05_07-experimental): - - it always "preset" so the itmes are removed. - -2004-05-15 12:58 takehiro - - * Makefile.unix (takehiro-2002_05_07-experimental): - - fix testcase - added gain_analysis - -2004-05-15 10:37 takehiro - - * frontend/gtkanal.c (takehiro-2002_05_07-experimental): - - cosmetic - -2004-05-15 10:09 takehiro - - * frontend/: Makefile.am, amiga_mpega.c - (takehiro-2002_05_07-experimental): - - do not use amiga_mpega.c. use mpg123 instead. - -2004-05-15 08:56 takehiro - - * libmp3lame/: bitstream.c, encoder.h, gain_analysis.c - (takehiro-2002_05_07-experimental): - - added replaygain calculation code. - (but not enabled yet) - -2004-05-14 19:29 aleidinger - - * Makefile.in, ACM/Makefile.in, ACM/ADbg/Makefile.in, - ACM/ddk/Makefile.in, ACM/tinyxml/Makefile.in, Dll/Makefile.in, - debian/Makefile.in, doc/Makefile.in, doc/html/Makefile.in, - doc/man/Makefile.in, dshow/Makefile.in, frontend/Makefile.in, - include/Makefile.in, libmp3lame/Makefile.in, - libmp3lame/i386/Makefile.in, mac/Makefile.in, misc/Makefile.in, - mpglib/Makefile.in: - - regen with new auto* version - -2004-05-14 19:26 aleidinger - - * configure: - - regen with new auto* version - -2004-05-14 19:22 aleidinger - - * aclocal.m4: - - regen with new auto* version - -2004-05-14 19:20 aleidinger - - * frontend/depcomp, libmp3lame/depcomp, mpglib/depcomp, depcomp, - install-sh, missing: - - update to a new version - -2004-05-14 19:12 aleidinger - - * testcase.mp3: - - update it to have a more sane number - -2004-05-14 19:11 aleidinger - - * Makefile.am: - - Tell the users that they do not have to care about the output of make test. - -2004-05-14 17:29 takehiro - - * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): - - regen - -2004-05-14 17:11 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - reduce warning - -2004-05-14 16:55 takehiro - - * libmp3lame/Makefile.am (takehiro-2002_05_07-experimental): - - added gain_analysis.[ch] - -2004-05-05 06:34 takehiro - - * libmp3lame/: lame.c, mpglib_interface.c - (takehiro-2002_05_07-experimental): - - free the decoding work area of replaygain analysis. - -2004-05-05 06:29 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix memory leakage when it uses decoding functions. - -2004-05-05 06:29 takehiro - - * libmp3lame/: gain_analysis.c, gain_analysis.h - (takehiro-2002_05_07-experimental): - - sync with the latest version - -2004-05-05 06:27 takehiro - - * libmp3lame/machine.h (takehiro-2002_05_07-experimental): - - fix for the machine without memset() - -2004-05-05 06:23 takehiro - - * frontend/main.c (takehiro-2002_05_07-experimental): - - fix for the machine without memset() - -2004-05-05 06:22 takehiro - - * frontend/: get_audio.c, main.c - (takehiro-2002_05_07-experimental): - - one more AIFF cleanup - -2004-05-05 06:18 takehiro - - * frontend/: get_audio.c, get_audio.h, portableio.h - (takehiro-2002_05_07-experimental): - - clean up AIFF related code. but still it cannot read AIFF file... - -2004-05-05 06:02 takehiro - - * frontend/: get_audio.c, get_audio.h, main.c, mp3rtp.c - (takehiro-2002_05_07-experimental): - - reduce warning - -2004-05-05 05:55 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - remove AMIGA_MPEG support. - use mpg123 instead. - -2004-04-25 13:08 takehiro - - * frontend/gtkanal.c (takehiro-2002_05_07-experimental): - - fix "stop/plot" button working. - Thanx reporting, Gaby. - -2004-04-25 12:42 takehiro - - * frontend/main.c (takehiro-2002_05_07-experimental): - - fix obvious bugs... - -2004-04-25 12:33 bouvigne - - * frontend/gtkanal.c: - - fixed mp3x monopolizing processor in its idle loop - -2004-04-25 10:18 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - merged into lame.c - -2004-04-25 10:07 takehiro - - * libmp3lame/: Makefile.in, libmp3lame_vc6.dsp - (takehiro-2002_05_07-experimental): - - regen - -2004-04-25 09:47 takehiro - - * Makefile.MSVC, Makefile.unix, frontend/brhist.c, include/lame.h, - libmp3lame/Makefile.am, libmp3lame/Makefile.in, - libmp3lame/encoder.h, libmp3lame/lame.c - (takehiro-2002_05_07-experimental): - - merged encoder.c into lame.c. - - remove lame_bitrate_kpbs(). use bitrate_table[][] directly instead of it. - -2004-04-25 09:06 takehiro - - * libmp3lame/: encoder.h, quantize.c - (takehiro-2002_05_07-experimental): - - reduce memory usage by moving maxXR[] from gi to gfc. - -2004-04-25 06:13 takehiro - - * libmp3lame/psymodel.c: - - fix bug id 921798 - http://sourceforge.net/tracker/index.php?func=detail&aid=921798&group_id=290&atid=100290 - - This is reported as bug for "BCC", but it may happen for every compiler. - -2004-04-24 18:29 olcios - - * libmp3lame/gain_analysis.h: - - changed some constants' types to long - -2004-04-24 17:47 olcios - - * libmp3lame/: gain_analysis.c, gain_analysis.h: - - A better fix for the FP x86 problem. Provided by Andrew Church. Modified by olcios. - -2004-04-24 17:02 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - fix it access to the log2tab[LARGE_BITS] - -2004-04-24 16:58 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix it always use the bit pressure algorith for short blocks on long blocks. - -2004-04-24 16:42 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - remove one mp3x TODO item (but still many TODOs about mp3x...) - -2004-04-24 16:33 takehiro - - * testcase.mp3, include/lame.h, libmp3lame/bitstream.c, - libmp3lame/encoder.c, libmp3lame/lame.c, libmp3lame/tags.c - (takehiro-2002_05_07-experimental): - - one more error code clean up. - -2004-04-24 16:31 takehiro - - * mpglib/: interface.c, layer3.c - (takehiro-2002_05_07-experimental): - - cosmetic change and comment style fix. - -2004-04-24 16:30 takehiro - - * mpglib/mpglib.h (takehiro-2002_05_07-experimental): - - patch from Dmitriy Startsev. - (yes, this is from Dmitriy... sorry) - -2004-04-24 16:27 takehiro - - * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): - - to check the "free-ed memory access" - -2004-04-24 16:26 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - fix mp3x cannot displays short mp3 file (it segfaults). - -2004-04-24 13:36 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix flush code - -2004-04-24 13:09 takehiro - - * include/lame.h, libmp3lame/lame.c - (takehiro-2002_05_07-experimental): - - update error code. - -2004-04-24 11:09 takehiro - - * libmp3lame/: bitstream.c, encoder.h, quantize.c - (takehiro-2002_05_07-experimental): - - fix comments and cosmetic change - -2004-04-24 10:44 takehiro - - * libmp3lame/: bitstream.c, lame.c, tags.c, tags.h, util.c - (takehiro-2002_05_07-experimental): - - fix CRC calculation - remove redundant include - added some comments about flushing - -2004-04-24 10:40 takehiro - - * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): - - remove commnts, which are the same as in lame.h - -2004-04-24 10:39 takehiro - - * libmp3lame/psymodel.c, libmp3lame/quantize.c, include/lame.h, - libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - cosmetic - -2004-04-18 18:11 takehiro - - * libmp3lame/: lame.c, tables.c, tags.c, util.c, util.h - (takehiro-2002_05_07-experimental): - - clean up arround VBR Tag frame size. - clean up arround "POSTDELAY" - -2004-04-18 17:30 takehiro - - * Makefile.MSVC, Makefile.unix (takehiro-2002_05_07-experimental): - - follow the filename changes - -2004-04-18 17:24 takehiro - - * libmp3lame/: util.c, util.h (takehiro-2002_05_07-experimental): - - fix build problem on Linux - -2004-04-18 17:16 takehiro - - * libmp3lame/libmp3lame_vc6.dsp (takehiro-2002_05_07-experimental): - - follow the file name change. - -2004-04-18 17:10 takehiro - - * mpglib/interface.c (takehiro-2002_05_07-experimental): - - remove redundant include - -2004-04-18 17:10 takehiro - - * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): - - regen - -2004-04-18 17:09 takehiro - - * libmp3lame/: Makefile.am, VbrTag.c, VbrTag.h, bitstream.c, - bitstream.h, encoder.c, id3tag.c, id3tag.h, lame.c, tags.c, - tags.h, util.c, util.h (takehiro-2002_05_07-experimental): - - merged "VbrTag.c" and "id3tag.c" into one (tags.c) - merged "VbrTag.h" and "id3tag.h" into one (tags.h) - simplify the CRC related code. - -2004-04-18 12:59 takehiro - - * mpglib/interface.c (takehiro-2002_05_07-experimental): - - fix mpglib problem. The patch is from Kristian Hermansen. - (forwarded by Dmitriy Startsev) - -2004-04-18 12:43 takehiro - - * libmp3lame/: VbrTag.c, bitstream.c, bitstream.h, encoder.c, - encoder.h, id3tag.c, id3tag.h, lame.c, newmdct.c, psymodel.c, - quantize_pvt.h, tables.c, tables.h - (takehiro-2002_05_07-experimental): - - * large clean up arround Tags and Header. - - directly output the Tags/Headers instead of using add_dummy_byte() - - reduce memory usage by using "union" - -2004-04-18 11:42 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - added MP3X bug as TODO. - -2004-04-18 11:11 takehiro - - * libmp3lame/: VbrTag.c, bitstream.c, encoder.c, encoder.h, lame.c, - newmdct.c, psymodel.c, quantize.c, tables.c, takehiro.c, util.h - (takehiro-2002_05_07-experimental): - - clean up lame_t structure. - -2004-04-18 10:32 takehiro - - * frontend/gtkanal.c (takehiro-2002_05_07-experimental): - - fix MP3X monopolizing the processor in its idle loop. - -2004-04-14 22:15 robert - - * frontend/get_audio.c, mpglib/common.c, mpglib/common.h, - mpglib/dct64_i386.c, mpglib/decode_i386.c, mpglib/interface.c, - mpglib/layer1.c, mpglib/layer2.c, mpglib/layer2.h, - mpglib/layer3.c, mpglib/layer3.h, mpglib/mpg123.h, - mpglib/mpglib.h, mpglib/tabinit.c: - - fixing the decoding issue with the reported "Christmas" song. - I've taken Takehiro's modifications and getting the same output - as he does on his 4.0 branch. Imho this is not the best solution - to the given problem, but it works for now. - -2004-04-14 16:48 takehiro - - * Dll/BladeMP3EncDLL.c (takehiro-2002_05_07-experimental): - - fix build problem reported by PAN-san. - -2004-04-13 17:21 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - fix fatal bug in scalefactor value lossless coding. - -2004-04-12 12:29 aleidinger - - * debian/lame.docs: - - PRESETS.draft does not exists anymore. - -2004-04-11 18:16 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - adjust ATH adjustment. - -2004-04-11 18:15 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix "1 sample" delay - -2004-04-11 17:24 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix mp3x FFT energy display. - -2004-04-11 15:39 glessard - - * frontend/main.c, include/lame.h, libmp3lame/set_get.c: - - Added two sets of set/get functions to the API. They modify and read the - nogap_total and nogap_current variables of the internal_flags struct. - Added calls to these functions to the gapless-encoding loop of the frontend. - -2004-04-11 15:06 aleidinger - - * ChangeLog: - - update - -2004-04-11 15:04 aleidinger - - * configure: - - regen - -2004-04-11 15:00 aleidinger - - * config.h.in: - - Add some missing LARGEFILE pieces. This patch is also in the generated - lame-3.96 tarball, it just enters the CVS repository for 3.97 for - organizational reasons. - -2004-04-11 14:58 aleidinger - - * configure.in: - - Welcome to lame 3.97. - -2004-04-11 14:27 takehiro - - * libmp3lame/: encoder.c, encoder.h, lame.c, set_get.c, tables.c - (takehiro-2002_05_07-experimental): - - merged gfc->num_channels & gfc->channels_in - some trivial clean up. - -2004-04-11 13:54 takehiro - - * libmp3lame/VbrTag.c, libmp3lame/encoder.h, libmp3lame/lame.c, - libmp3lame/set_get.c, libmp3lame/tables.c, libmp3lame/util.c, - libmp3lame/util.h, include/lame.h - (takehiro-2002_05_07-experimental): - - changed error/debug/normal message output code. - -2004-04-11 13:10 takehiro - - * debian/: changelog, lame.docs, rules - (takehiro-2002_05_07-experimental): - - updated for lame4 - -2004-04-11 13:09 takehiro - - * libmp3lame/: encoder.c, encoder.h, lame.c, mpglib_interface.c, - tables.c (takehiro-2002_05_07-experimental): - - clean up the members of structure lame_t. - -2004-04-11 13:08 takehiro - - * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): - - fix build problem when --disable-analysis-hook - -2004-04-11 13:05 bouvigne - - * libmp3lame/version.h: - - 3.97a1 - -2004-04-11 13:03 bouvigne - - * libmp3lame/version.h: - - release 3.96 - -2004-04-11 13:03 bouvigne - - * doc/html/history.html: - - history - -2004-04-11 13:02 bouvigne - - * debian/changelog: - - updated debian changelog - -2004-04-11 13:01 bouvigne - - * libmp3lame/presets.c: - - use X9 to select abr/cbr quantization, - use sfscale up to 160kbps - -2004-04-11 12:50 bouvigne - - * Makefile.in: - - manually updated Makefile.in - -2004-04-11 12:12 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen (by hand) - -2004-04-11 12:10 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - fix confusion arround "decoder" and "decode" - -2004-04-11 11:58 takehiro - - * libmp3lame/lame-analysis.h, frontend/gtkanal.c - (takehiro-2002_05_07-experimental): - - trivial - -2004-04-11 11:57 takehiro - - * libmp3lame/: encoder.c, encoder.h, lame.c - (takehiro-2002_05_07-experimental): - - one more fix for "very the beginig samples" - -2004-04-11 11:55 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix it sometimes goes into infinite loop when with i-stereo. - -2004-04-10 16:58 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix mp3x display delay. - -2004-04-10 16:56 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - remove redandunt code. - -2004-04-10 16:48 takehiro - - * libmp3lame/: encoder.c, encoder.h, lame.c, newmdct.c, psymodel.c, - quantize.c, set_get.c (takehiro-2002_05_07-experimental): - - fix "start" delay and reduce buffer size. - still there's known bugs in mp3x and the tail part encoding. - -2004-04-10 16:15 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - fix trivial bug when stereo input - -2004-04-10 15:43 takehiro - - * frontend/: get_audio.c, get_audio.h, gtkanal.c, lametime.c, - lametime.h, main.c, mp3rtp.c (takehiro-2002_05_07-experimental): - - frontend code fix and clean up. - - fix it cut the beginning 17 samples when input is .wav file. - - fix function names. remove "lame_" prefix from the functions which is not - LAME API. - - and some trivial clean up. - -2004-04-10 13:23 takehiro - - * frontend/gpkplotting.c (takehiro-2002_05_07-experimental): - - remove unused definition - -2004-04-10 12:08 takehiro - - * frontend/main.c (takehiro-2002_05_07-experimental): - - clarify the comment - -2004-04-04 15:13 takehiro - - * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): - - reduce POSTDELAY when MPEG2 layer3 - -2004-04-04 12:49 takehiro - - * frontend/parse.c, include/lame.h, libmp3lame/encoder.h, - libmp3lame/lame.c, libmp3lame/set_get.c, libmp3lame/tables.c - (takehiro-2002_05_07-experimental): - - rename ns-(bass|alto|treble) options and their implementation. - -2004-04-04 12:45 takehiro - - * mpglib/layer3.c (takehiro-2002_05_07-experimental): - - always support MPEG1. - -2004-04-04 12:33 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - trivial - -2004-04-04 11:55 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - trivial optimization - -2004-04-04 11:54 takehiro - - * libmp3lame/: util.c, machine.h - (takehiro-2002_05_07-experimental): - - include file clean up. - -2004-04-04 11:52 takehiro - - * libmp3lame/id3tag.c (takehiro-2002_05_07-experimental): - - replace snprintf() with strncat() and so on, for some old systems. - -2004-04-03 19:30 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - work arround for short blocks with i-stereo bug. - and some simplification of i-stereo code. - -2004-04-03 19:25 takehiro - - * frontend/gtkanal.c (takehiro-2002_05_07-experimental): - - display more scalefactor band splitting lines. - -2004-04-03 17:35 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix uninitialized memory access (found by valgrind). - -2004-04-03 17:28 bouvigne - - * frontend/gtkanal.c, libmp3lame/lame-analysis.h, - libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, - libmp3lame/quantize_pvt.h: - - Add X9 quantization selection method. - It increases applaud.wav substancially. - Not enabled by default - -2004-04-03 17:14 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - try to find better scalefactor combination when i-stereo. - -2004-04-03 17:07 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - remove one condition which is always stisfied. - -2004-04-03 13:17 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - better bit allocation when substep noise shaping. - -2004-04-02 16:37 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - fix "all even" hack. - -2004-04-02 15:54 takehiro - - * libmp3lame/: psymodel.c, quantize.c - (takehiro-2002_05_07-experimental): - - better bit allocation for CBR. - - increase bit allocation on start/end blocks, where the effect of - best_huffman_divide() is very weak. - - increase bit allocation when --substep is enabled. - - some trivial clean up. - -2004-03-30 15:49 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - fix it sometimes crashes with -q0 or -q1 + CBR - -2004-03-28 16:14 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - trivial simplification - -2004-03-28 13:11 bouvigne - - * libmp3lame/version.h: - - 3.96 beta 2 - -2004-03-28 13:10 bouvigne - - * doc/html/history.html: - - history - -2004-03-28 13:10 bouvigne - - * libmp3lame/presets.c: - - updated minimal bitrate for V1 and V2 - -2004-03-28 12:41 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - reduce array size - -2004-03-28 12:16 takehiro - - * libmp3lame/: bitstream.c, encoder.c, encoder.h, lame.c, - quantize.c, tables.c, tables.h, takehiro.c - (takehiro-2002_05_07-experimental): - - warning fix, cleanup, and cosmetic change. - -2004-03-28 12:16 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - there is already VC6 project file. We (maybe) need .net project/solution file. - -2004-03-28 11:29 takehiro - - * frontend/mp3x.c, include/lame.h, libmp3lame/lame.c, - libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - remove lame_encode_finish() API - -2004-03-28 11:28 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - fixed mixed block statics - trivial optimization/clean up - -2004-03-27 17:08 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - - use calc_sfb_noise() and calc_sfb_noise_fast() do not return minus value. - - little better CBR_2nd_bitalloc() - -2004-03-27 14:50 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - reduce table size. - -2004-03-27 14:49 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - fix warnings - -2004-03-27 12:38 takehiro - - * libmp3lame/: bitstream.c, quantize.c - (takehiro-2002_05_07-experimental): - - cosmetic - -2004-03-27 11:18 takehiro - - * libmp3lame/: bitstream.c, tables.c, tables.h - (takehiro-2002_05_07-experimental): - - simplification arround huffman code output - -2004-03-27 09:47 takehiro - - * libmp3lame/: bitstream.c, quantize.c, quantize_pvt.h, tables.c, - takehiro.c (takehiro-2002_05_07-experimental): - - clean up. fix warning and trivial optimizations. - -2004-03-27 08:31 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - updated - -2004-03-27 07:48 takehiro - - * libmp3lame/: bitstream.c, tables.c, tables.h, takehiro.c - (takehiro-2002_05_07-experimental): - - simplify the code arround huffman coding with the escape sequence. - -2004-03-23 22:17 robert - - * libmp3lame/vbrquantize.c, Makefile.unix: - - rewritten vbr-new - - the scalefactor allocation functions take into account now, that some - minimal scalefactor has to be used (the less IXMAX_VAL case) - - the output of vbr-new is not bit identical to previous ones, but the - code is much more straight forward now. - -2004-03-23 22:11 robert - - * libmp3lame/util.c: - - patch for resampling code, found by Takehiro - - this patch removes some unneccessary integer rounding - resulting mp3s where bit identical, but resampling is faster now - -2004-03-23 03:07 olcios - - * frontend/parse.c: - - fixed a compile-time issue in --longhelp - -2004-03-23 01:57 olcios - - * USAGE, doc/html/switchs.html, doc/man/lame.1, frontend/main.c, - frontend/parse.c, include/lame.h, libmp3lame/VbrTag.c, - libmp3lame/bitstream.c, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/set_get.c, - libmp3lame/util.h: - - 1. added --noreplaygain switch that disables RG 2. added --replaygain-fast switch that complements --replaygain-accurate. The new switch is enabled by default in the frontend. 3. Made RG analysis no longer default in libmp3lib. RG can still be fully controlled via the libmp3lib interface, but for other interfaces, like DLL or ACM, that provide no RG control, RG analysis is now _disabled_. 4. updated documentation - -2004-03-21 17:53 takehiro - - * frontend/parse.c, libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, - libmp3lame/bitstream.c, libmp3lame/bitstream.h, - libmp3lame/lame.c, libmp3lame/version.c, mpglib/interface.c - (takehiro-2002_05_07-experimental): - - more API clean up and cosmetic changes. - -2004-03-21 17:51 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - faster float comparison when FLOAT is float. - some cosmetic changes - -2004-03-21 17:14 takehiro - - * libmp3lame/VbrTag.c, libmp3lame/bitstream.c, - libmp3lame/bitstream.h, libmp3lame/encoder.c, - libmp3lame/encoder.h, libmp3lame/id3tag.c, - libmp3lame/lame-analysis.h, libmp3lame/lame.c, - libmp3lame/machine.h, libmp3lame/newmdct.c, - libmp3lame/psymodel.c, libmp3lame/psymodel.h, - libmp3lame/quantize.c, libmp3lame/quantize.h, - libmp3lame/quantize_pvt.h, libmp3lame/tables.c, - libmp3lame/tables.h, libmp3lame/takehiro.c, mpglib/interface.c - (takehiro-2002_05_07-experimental): - - clean up APIs and variable names (to fix warnings when -Wshadow) - -2004-03-21 16:27 takehiro - - * include/lame.h, libmp3lame/VbrTag.c, libmp3lame/id3tag.c, - libmp3lame/lame-analysis.h, libmp3lame/machine.h, - libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, - libmp3lame/quantize.c, libmp3lame/set_get.c, - libmp3lame/takehiro.c, libmp3lame/version.h - (takehiro-2002_05_07-experimental): - - cosmetic - -2004-03-21 15:51 takehiro - - * libmp3lame/: machine.h, psymodel.c, quantize_pvt.h - (takehiro-2002_05_07-experimental): - - clean up arround IEEE754 hack. - -2004-03-21 15:47 takehiro - - * libmp3lame/: VbrTag.c, encoder.h - (takehiro-2002_05_07-experimental): - - remove unused "nogap" related variables. - -2004-03-21 15:41 takehiro - - * libmp3lame/: VbrTag.c, encoder.c, encoder.h - (takehiro-2002_05_07-experimental): - - fix invalid vbr header output when ABR. - merge gfc->frameNum and gfc->nVbrNumFrames. - -2004-03-21 14:51 takehiro - - * libmp3lame/: encoder.h, psymodel.c, psymodel.h, quantize.c - (takehiro-2002_05_07-experimental): - - remove magic numbers - -2004-03-21 14:32 takehiro - - * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): - - header file style/comment fix. - -2004-03-21 14:32 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - trivial - -2004-03-21 14:31 takehiro - - * mpglib/: layer3.c, mpg123.h (takehiro-2002_05_07-experimental): - - trivial optimization - -2004-03-21 14:31 takehiro - - * include/lame.h (takehiro-2002_05_07-experimental): - - remove obsolete API. - -2004-03-21 13:51 takehiro - - * ACM/DecodeStream.h, frontend/gtkanal.c, frontend/mp3x.c, - frontend/parse.c, libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, - libmp3lame/bitstream.c, libmp3lame/bitstream.h, - libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/id3tag.c, - libmp3lame/lame-analysis.h, libmp3lame/lame.c, - libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, - libmp3lame/psymodel.c, libmp3lame/quantize.c, - libmp3lame/quantize.h, libmp3lame/set_get.c, libmp3lame/tables.c, - libmp3lame/tables.h, libmp3lame/takehiro.c, libmp3lame/util.c, - libmp3lame/util.h, libmp3lame/version.c, mpglib/layer3.c, - mpglib/mpglib.h (takehiro-2002_05_07-experimental): - - clean up header files. - -2004-03-21 13:00 takehiro - - * testcase.mp3 (takehiro-2002_05_07-experimental): - - new testcase - -2004-03-21 12:37 takehiro - - * libmp3lame/: encoder.c, quantize.c, quantize.h - (takehiro-2002_05_07-experimental): - - clean up APIs of set_frame_pinfo() - -2004-03-21 12:34 takehiro - - * libmp3lame/: lame.c, set_get.c, util.h - (takehiro-2002_05_07-experimental): - - clean up arround buffer flush. - and remove "mf_samples_to_encode" from lame_t. - -2004-03-21 12:33 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - trivial clean up - -2004-03-21 11:55 takehiro - - * libmp3lame/: encoder.c, lame.c, quantize.c, tables.c, util.h - (takehiro-2002_05_07-experimental): - - clean up and "possible" bug of resampling code. - - calculate resampling value with "sample_t" instead of "int". - - moved resampling initialization code into tables.c - -2004-03-21 10:37 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - oops, remove gabage... - -2004-03-21 10:34 takehiro - - * libmp3lame/: encoder.c, psymodel.c, psymodel.h - (takehiro-2002_05_07-experimental): - - clean up internal APIs - -2004-03-21 10:33 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix prototype declaration, to clarify all the ASM code cannot run when FLOAT!=float - -2004-03-21 07:12 takehiro - - * libmp3lame/: lame.c, util.c (takehiro-2002_05_07-experimental): - - header file clean up (I hope it works...) - -2004-03-21 07:10 takehiro - - * libmp3lame/: encoder.c, lame.c, util.h - (takehiro-2002_05_07-experimental): - - do not use calloc in lame_encode_* functions. - and moved some functions for better conjunctions. - -2004-03-21 07:09 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - trivial - -2004-03-21 05:08 takehiro - - * ACM/main.cpp (takehiro-2002_05_07-experimental): - - fix build problem on mingw - -2004-03-20 17:28 takehiro - - * libmp3lame/: lame.c, util.c, util.h - (takehiro-2002_05_07-experimental): - - move fill_buffer() function and make it static and bit optimizing. - -2004-03-20 16:04 takehiro - - * libmp3lame/: quantize.c, util.h, i386/quantSSE.nas - (takehiro-2002_05_07-experimental): - - Faster quantization code, based on the ideas from the main line (done by Gaby). - about 2% faster on VBR. The same algorithm can be applied to the CBR, but - currently is not. - -2004-03-19 22:09 olcios - - * libmp3lame/gain_analysis.c: - - changed the pre-processor condition related to the x86's extended FP bug when compiled by GCC with optimizations - -2004-03-19 18:18 olcios - - * libmp3lame/gain_analysis.c: - - improved comment - -2004-03-19 13:17 olcios - - * libmp3lame/gain_analysis.c: - - workaround for the gcc ceil() bug when compiled with optimizations - -2004-03-18 22:00 olcios - - * libmp3lame/gain_analysis.h: - - fixed compile-time problem with uint32_t on gcc - -2004-03-18 16:11 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix uninitialized memory access. - -2004-03-18 14:27 aleidinger - - * libmp3lame/: gain_analysis.c, gain_analysis.h: - - Replace Uint32_t and Int32_t with uint32_t and int32_t. There are only few - instances of them used, so there's no need to typedef new types for them. - - I hope this fixes problems on OSX reported on lame-dev. - - While I'm here, fix a cast (rgData->sampleWindow is long, not int). - -2004-03-17 18:56 aleidinger - - * libmp3lame/: bitstream.c, gain_analysis.c, gain_analysis.h, - lame.c: - - - remove config.h (prerequisite) include from gain_analysis.h - - make sure prerequisites get included in every file before gain_analysis.h - -2004-03-14 18:22 bouvigne - - * libmp3lame/gain_analysis.h: - - solved the potential data type problem - -2004-03-14 17:13 takehiro - - * frontend/parse.c, include/lame.h, libmp3lame/VbrTag.c, - libmp3lame/VbrTag.h, libmp3lame/bitstream.c, - libmp3lame/encoder.c, libmp3lame/id3tag.c, libmp3lame/lame.c, - libmp3lame/mpglib_interface.c, libmp3lame/psymodel.c, - libmp3lame/quantize.c, libmp3lame/quantize_pvt.h, - libmp3lame/set_get.c, libmp3lame/set_get.h, libmp3lame/tables.c, - libmp3lame/takehiro.c, libmp3lame/util.c, libmp3lame/util.h, - mpglib/layer3.c, mpglib/mpg123.h, mpglib/tabinit.c - (takehiro-2002_05_07-experimental): - - cosmetic changes. - -2004-03-14 16:19 takehiro - - * ACM/readme.txt (takehiro-2002_05_07-experimental): - - sync main branch - -2004-03-14 16:18 takehiro - - * ACM/ACMStream.cpp (takehiro-2002_05_07-experimental): - - sync main branch. - -2004-03-14 16:15 takehiro - - * libmp3lame/libmp3lame_vc6.dsp (takehiro-2002_05_07-experimental): - - fix MSVC6+NASM compilation - -2004-03-14 16:00 takehiro - - * ACM/main.cpp (takehiro-2002_05_07-experimental): - - oops, I removed too much. - -2004-03-14 13:47 takehiro - - * frontend/brhist.h, libmp3lame/bitstream.c, libmp3lame/encoder.c, - libmp3lame/tables.c, libmp3lame/takehiro.c, libmp3lame/util.c - (takehiro-2002_05_07-experimental): - - cosmetic and reduce warnings - -2004-03-14 12:46 takehiro - - * libmp3lame/: bitstream.h, machine.h, psymodel.c, quantize_pvt.h, - tables.c, util.h (takehiro-2002_05_07-experimental): - - fix build problem on vanilla(without ICC) VC6. - better ATH handling for psymodel - and some minor cosmetic change - -2004-03-14 12:44 takehiro - - * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): - - cosmetic - -2004-03-14 12:43 takehiro - - * libmp3lame/: gain_analysis.c, gain_analysis.h - (takehiro-2002_05_07-experimental): - - backport from the main branch. - (only copied. not working currently). - -2004-03-14 11:50 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - better 8kHz/128kbps bit allocation. - -2004-03-14 06:17 takehiro - - * mpglib/interface.c (takehiro-2002_05_07-experimental): - - sync main branch (fix freeformat decoding bug done by Robert Hegemann) - -2004-03-13 14:06 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix a warning. - -2004-03-13 13:00 takehiro - - * Dll/BladeMP3EncDLL.c (takehiro-2002_05_07-experimental): - - fix build problem on VC6+debug mode - -2004-03-13 12:59 takehiro - - * libmp3lame/libmp3lame_vc6.dsp (takehiro-2002_05_07-experimental): - - fix build problem on VC6 - -2004-03-11 23:43 olcios - - * libmp3lame/bitstream.c: - - fixed a bug related to the usage of mpglib when decoding on the fly - -2004-03-11 19:35 olcios - - * libmp3lame/lame.c: - - fixed compile-time problem when mpglib is disabled - -2004-03-10 20:49 robert - - * doc/html/: contributors.html, history.html: - - history - -2004-03-10 00:50 robert - - * mpglib/interface.c: - - patch for freeformat decoding bug - -2004-03-09 19:04 bouvigne - - * libmp3lame/lame.c: - - typo - -2004-03-09 00:35 robert - - * libmp3lame/vbrquantize.c: - - found a sample which did not give bit identical result with the previous - patch. found out why and corrected it, so now the results for - find_scalefac_ave_[x34|ISO] are identical to the original code, - but --preset fast standard is ~7 percent faster now. - -2004-03-08 04:13 takehiro - - * mpglib/layer1.c (takehiro-2002_05_07-experimental): - - fix layer1 compilation problem. - -2004-03-08 04:12 takehiro - - * libmp3lame/i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - remove unused label - -2004-03-08 04:04 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix alignment work and build problem with icl(MS-Windows) - -2004-03-08 00:54 robert - - * libmp3lame/vbrquantize.c: - - faster "find_scalefac_ave_[x34|ISO]": - this patch gave bit identical results on all tested samples compared to - previous version, so I'm pretty much confident that I don't introduce - a new bug here. - the speeding up of this functions results in an overall speed increase of - almost 7 percent for --preset fast standard - -2004-03-07 23:55 robert - - * Makefile.unix, Makefile.MSVC: - - in case of single precision (FLOAT8==float) we have to make sure that - the mpglib uses REAL==float too. otherwise the decoder will moan about - too small buffers - -2004-03-07 14:18 takehiro - - * mpglib/interface.c (takehiro-2002_05_07-experimental): - - no Xing-VBR header except layer 3 - -2004-03-06 17:52 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix it ignores --scale option. - -2004-03-06 17:37 takehiro - - * libmp3lame/i386/fft3dn.nas (takehiro-2002_05_07-experimental): - - remove Japanese comments. - -2004-03-06 16:32 takehiro - - * libmp3lame/: psymodel.h, tables.c - (takehiro-2002_05_07-experimental): - - revert the last psymodel change, and implement the better way to archive - more precise frequency analysis in the lower frequency region. This is - done by changing frequency -> bark conversion equation. - -2004-03-06 16:02 takehiro - - * libmp3lame/i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - remove Jananese comments. - -2004-03-06 15:36 bouvigne - - * libmp3lame/version.h: - - entering beta stage - -2004-03-06 15:34 bouvigne - - * doc/html/history.html: - - history - -2004-03-01 22:21 robert - - * configMS.h, libmp3lame/version.h: - - we are now at 3.96 alpha 4 - -2004-03-01 22:20 robert - - * libmp3lame/psymodel.c: - - bug fix: the highly optimized loops did an off by one access resulting - in often invalid energy and threshold calculations. (both psy models - affected). added a workaround and some assertions. - -2004-03-01 15:11 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix for testcase... (oops, simple mistake) - -2004-02-29 19:55 robert - - * libmp3lame/: bitstream.c, takehiro.c: - - fixing the "huffman decode overrun" and "mp3x problem" - -2004-02-29 18:20 bouvigne - - * doc/html/: contributors.html, history.html: - - no message - -2004-02-29 18:12 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix for 8kHz with 128kbps. - -2004-02-29 17:58 takehiro - - * libmp3lame/: psymodel.c, psymodel.h, tables.c, util.h - (takehiro-2002_05_07-experimental): - - better partitioning for psymodel calculation (very much experimental!) - -2004-02-29 17:17 takehiro - - * mpglib/layer1.c: - - fix layer1 decoding bug - -2004-02-29 17:16 takehiro - - * mpglib/layer1.c (takehiro-2002_05_07-experimental): - - fix monural file decoding bug in layer1, reported by Goran Markovic. - -2004-02-26 17:20 takehiro - - * frontend/get_audio.c: - - fixed Layer2 decoding bug reported by Goran Markovic - -2004-02-26 16:31 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - fixed Layer2 decoding issue, reported by Goran Markovic. - -2004-02-25 22:10 robert - - * libmp3lame/util.c: - - fixing some aliasing problem in fastlog2 calculation - -2004-02-25 21:46 robert - - * libmp3lame/vbrquantize.c: - - getting rid of a warning about a function being defined but not used - -2004-02-25 21:46 robert - - * libmp3lame/gain_analysis.c: - - fixing code relying on compiler implementation details - -2004-02-25 21:41 robert - - * frontend/parse.c, libmp3lame/lame.c, libmp3lame/psymodel.c, - libmp3lame/quantize.c, libmp3lame/VbrTag.c, libmp3lame/set_get.c, - libmp3lame/util.c: - - getting rid of some compiler warnings: - - about too long string constants - - about C++ stylish comments - there is still a warning about the use of a C99 hexadecimal floating - constant in portableio.c. will this compile on older C-compilers? - -2004-02-24 02:18 takehiro - - * testcase.mp3 (takehiro-2002_05_07-experimental): - - testcase with new huffman coding. - -2004-02-24 01:57 olcios - - * libmp3lame/lame.c: - - fixed a bug with --resample and ReplayGain analysis of input data. With certain parameters the data sent to analysis was mangled (some samples missing, some doubled, some in the wrong order). With most natural music the error wasn't vast (below 1dB), but with e.g. a sine wave the gain error was audible. - -2004-02-23 19:48 bouvigne - - * libmp3lame/gain_analysis.h: - - now works under gcc, but I am not sure about the typedefs on different platforms. - -2004-02-23 18:53 bouvigne - - * libmp3lame/: gain_analysis.h, util.h: - - moved replaygain_t to gain_analysis.h - -2004-02-23 14:50 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - improve lossless coding when all the quantized values in the same scalefactor band are even number. - -2004-02-22 21:17 bouvigne - - * libmp3lame/: bitstream.c, gain_analysis.c, gain_analysis.h, - lame.c, util.c, util.h: - - made ReplayGain reentrant - -2004-02-22 21:16 bouvigne - - * libmp3lame/quantize_pvt.c: - - yet another "usefullsize" bug (found by passing the python tests) - -2004-02-22 21:14 bouvigne - - * test/: CBRABR.op, VBR.op, misc.op, shortCBRABR.op, shortVBR.op: - - Updated test files. - As the cbr/abr and vbr ones are quite long, I also added some short ones. - -2004-02-17 00:37 robert - - * libmp3lame/lame.c: - - bug fix: in mono mode all block type where of short type due to forced - block type coupling - -2004-02-16 21:51 robert - - * libmp3lame/gain_analysis.c: - - bug fix by John Edwards (48 kHz replay gain segmentation fault) - -2004-02-15 21:39 robert - - * libmp3lame/: lame.c, vbrquantize.c: - - standard ISO quantization for vbr-mtrh - -2004-02-15 19:05 robert - - * libmp3lame/: lame.c, takehiro.c: - - bug fix: usefullsize may become negativ due to some optimizations - -2004-02-15 13:09 takehiro - - * libmp3lame/id3tag.c (takehiro-2002_05_07-experimental): - - sprintf -> snprintf and some trivial clean up. - -2004-02-15 01:20 robert - - * libmp3lame/takehiro.c: - - a simple -V9 -f line lets LAME crash, - there seems to be something wrong with scalefactor width - at least my inserted assertions indicate this - -2004-02-10 02:04 robert - - * libmp3lame/vbrquantize.c: - - try to make some use of max_nonzero_coeff in vbr-mtrh - -2004-02-08 21:58 takehiro - - * frontend/: brhist.c, get_audio.c, get_audio.h, gtkanal.c, - lame.dsp, main.c, mp3rtp.c, parse.c, timestatus.c, timestatus.h - (takehiro-2002_05_07-experimental): - - misc clean ups. - - gfp/gfc things - - mp3 decoding patch from Dmitriy Startsev - - remove an old file - -2004-02-08 21:57 takehiro - - * mpglib/interface.c (takehiro-2002_05_07-experimental): - - mp3 decoding patch from Dmitriy Startsev - -2004-02-08 19:00 bouvigne - - * libmp3lame/presets.c: - - reduced the number of short blocks - -2004-02-08 14:08 bouvigne - - * Makefile.am, lame.dsw: - - removed old workspace - -2004-02-08 12:44 bouvigne - - * libmp3lame/: quantize_pvt.c, takehiro.c: - - inverted a while statement, some int ->unsigned. - I hope that they will be safe this time. - -2004-02-08 03:10 robert - - * libmp3lame/takehiro.c: - - sorry Gabriel, reverting your signed->unsigned patch due to exceptions - while encoding awe32_20sec.wav using --preset standard - -2004-02-08 03:06 robert - - * libmp3lame/quantize_pvt.c: - - sorry Gabriel, reverting your signed->unsigned patch because of - exceptions in awe32_20sec.wav using --preset standard - -2004-02-08 03:01 robert - - * libmp3lame/vbrquantize.c: - - bug fix: scalefactors may have been read from uninitialized memory - -2004-02-08 02:12 robert - - * libmp3lame/: takehiro.c, vbrquantize.c: - - calculating xrpow_max for vbr_mtrh too - -2004-02-07 19:38 bouvigne - - * libmp3lame/: quantize_pvt.c, takehiro.c: - - some int -> unsigned int - -2004-02-06 16:56 takehiro - - * frontend/get_audio.c, mpglib/interface.c: - - mp3 decoding patch from Dmitriy Startsev - -2004-02-04 20:17 bouvigne - - * libmp3lame/version.h: - - bump alpha because of the fixed crash - -2004-02-04 20:16 bouvigne - - * libmp3lame/takehiro.c: - - fixed a crash in quantize_xrpow occuring when using low bitrates (32kbps) - -2004-02-02 15:20 olcios - - * USAGE, doc/html/switchs.html: - - reworded the RG part. Discussed with: Alexander Leidinger - -2004-02-02 14:17 olcios - - * testcase.mp3: - - oops, committed an experimental file, reverting back to 1.80 - -2004-02-02 13:28 aleidinger - - * configure: - - regen - -2004-02-02 13:25 aleidinger - - * configure.in: - - Add a check for 64 bit off_t's ("LARGEFILE" support). - - This may not be enough as lame uses ints and longs where other types - may be more correct, but it may work in some cases. - - HOWTO provided by: Dan Nelson - -2004-02-02 13:02 aleidinger - - * doc/man/lame.1: - - - reformatted the replaygain part (less than 80 characters per line) - - reworded some parts - - add a note about the decoder requierement for the --decode, - --replaygain-accurate and --clipdetect options - - Discussed with: Aleksander Korzynski - -2004-02-02 12:58 aleidinger - - * config.h.in, configure: - - regen - -2004-02-02 12:57 aleidinger - - * configMS.h: - - Add the DECODE_ON_THE_FLY define in the HAVE_MPGLIB case. - -2004-02-02 12:57 aleidinger - - * configure.in, include/lame.h: - - - enable bitrate histogram by default - discussed with Gabriel in Sept. 03 - - - define DECODE_ON_THE_FLY for the replaygain feature in the HAVE_MPGLIB - case too (moved from include/lame.h, I think it's cleaner this way) - discussed with Aleksander Korzynski - -2004-02-02 12:38 aleidinger - - * libmp3lame/id3tag.c: - - Patch from Ti Kan : - ---snip--- - Below is a patch to make Lame 3.95.1 compile and run on AIX, HP-UX, - IRIX, Solaris, UnixWare, SCO Open Server and SunOS 4.1.x. - - The change involves the call to snprintf() in libmp3lame/id3tag.c., - but snprintf() is not available on many of these platforms. I know - that in general replacing snprintf() with sprintf() removes a layer - of string buffer overflow protection, but in this case it should - be safe because the size of string is bounded. - ---snip--- - -2004-01-31 20:05 olcios - - * testcase.mp3, frontend/main.c, libmp3lame/lame.c: - - disabled peak sample detection when LAME tag is not written into the file - -2004-01-29 16:39 bouvigne - - * doc/html/history.html: - - history - -2004-01-29 16:31 bouvigne - - * libmp3lame/version.h: - - bump alpha because of the fixed crashes - -2004-01-29 16:26 bouvigne - - * libmp3lame/takehiro.c: - - fixed bug #886989 - -2004-01-26 14:00 olcios - - * USAGE, doc/html/switchs.html, doc/man/lame.1, frontend/parse.c: - - updated documentation and --longhelp on RG - -2004-01-26 12:05 olcios - - * frontend/main.c, frontend/main.h, frontend/parse.c, - include/lame.h, libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, - libmp3lame/bitstream.c, libmp3lame/lame.c, libmp3lame/set_get.c, - libmp3lame/util.h: - - removed ReportLameTagProgress (it is not LAME API). Fixed --replaygain-accurate and --clipdetect. - -2004-01-25 10:12 takehiro - - * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): - - fix a bug when the malloc is failed. - -2004-01-25 10:06 takehiro - - * libmp3lame/: lame.c, VbrTag.c (takehiro-2002_05_07-experimental): - - fix id3v2 tag output - -2004-01-25 10:05 takehiro - - * libmp3lame/: VbrTag.h, id3tag.c, id3tag.h, quantize.h - (takehiro-2002_05_07-experimental): - - trivial - -2004-01-25 08:44 takehiro - - * libmp3lame/id3tag.c (takehiro-2002_05_07-experimental): - - fix total track number buffer overrun bug. - -2004-01-25 08:34 takehiro - - * libmp3lame/id3tag.c (takehiro-2002_05_07-experimental): - - remove unused prototype - -2004-01-25 08:33 takehiro - - * frontend/parse.c, libmp3lame/id3tag.c, libmp3lame/util.h - (takehiro-2002_05_07-experimental): - - total track ID3 tag, requested at sf.net (Request ID #630803) - http://sourceforge.net/tracker/index.php?func=detail&aid=630803&group_id=290&atid=350290 - -2004-01-25 08:30 takehiro - - * lame_vc6.dsw (takehiro-2002_05_07-experimental): - - sync with the main branch.(related mp3x projects) - -2004-01-25 08:28 takehiro - - * frontend/lame.dsw (takehiro-2002_05_07-experimental): - - remove old files. - -2004-01-25 05:45 takehiro - - * frontend/parse.c (takehiro-2002_05_07-experimental): - - added message about "--preset medium" - -2004-01-24 17:37 takehiro - - * ACM/: ACM.cpp, ACM.h, ACMStream.cpp, ACMStream.h, - AEncodeProperties.cpp, DecodeStream.cpp, main.cpp - (takehiro-2002_05_07-experimental): - - fix build problem(I hope...) - -2004-01-24 17:31 takehiro - - * frontend/main.h (takehiro-2002_05_07-experimental): - - sync the main branch. - - include limits.h only when there's the header. - -2004-01-24 17:28 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - sync with the main branch. - - remove message output during reading AIFF file. - -2004-01-21 13:50 aleidinger - - * Makefile.in, ACM/Makefile.in, Dll/Makefile.in, - frontend/Makefile.in, libmp3lame/Makefile.in, mpglib/Makefile.in: - - regen - -2004-01-21 13:48 aleidinger - - * frontend/main.h: - - only include limits.h if it is present on the system - -2004-01-21 10:17 bouvigne - - * libmp3lame/quantize.c: - - missing {} in last fix - -2004-01-21 09:41 bouvigne - - * ACM/ACM.dsw, ACM/Makefile.am, ACM/lameACM.dsp, Makefile.B32, - Makefile.DJGPP, Makefile.am, PRESETS.draft, README.B32, - README.DJGPP, Dll/Example.dsp, Dll/Example.dsw, - Dll/MP3EncDll.dsp, Dll/MP3EncDll.dsw, Dll/Makefile.am, - frontend/Makefile.am, frontend/lame.dsp, frontend/lame.dsw, - frontend/mp3x.dsp, frontend/mp3x.dsw, libmp3lame/Makefile.am, - libmp3lame/libmp3lame.dsp, mpglib/Makefile.am, mpglib/mpglib.dsp: - - removed old unmaintained files - -2004-01-20 18:41 bouvigne - - * libmp3lame/quantize.c: - - fixed a crash: - sometimes quantization could overflow because of big xr_pow values - -2004-01-20 17:04 takehiro - - * Dll/Makefile.mingw32 (takehiro-2002_05_07-experimental): - - remove unused include path - -2004-01-20 16:24 takehiro - - * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h, Example.cpp, - Makefile.mingw32 (takehiro-2002_05_07-experimental): - - DLL build and minor message fix. but we may need API fix, too... - -2004-01-20 06:22 takehiro - - * frontend/main.c (takehiro-2002_05_07-experimental): - - do not include "internal" header file. - -2004-01-18 15:54 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen - -2004-01-18 15:52 takehiro - - * config.h.in, configure.in, mac/Precompile_Common.h - (takehiro-2002_05_07-experimental): - - remove ieee754_float64_t - -2004-01-18 13:51 takehiro - - * frontend/gtkanal.c, libmp3lame/quantize.c - (takehiro-2002_05_07-experimental): - - mp3x: fix mean bits display when mono or mpeg2 - -2004-01-18 13:48 takehiro - - * frontend/parse.c (takehiro-2002_05_07-experimental): - - make it sure not to call "experimental" switches when it is not DEBUG mode or ALPHA version. - -2004-01-18 13:21 takehiro - - * frontend/gtkanal.c (takehiro-2002_05_07-experimental): - - fix typo - -2004-01-18 12:52 takehiro - - * Makefile.am, Makefile.in, PRESETS.draft, lame.dsw, ACM/ACM.dsw, - ACM/Makefile.am, ACM/Makefile.in, ACM/lameACM.dsp, - Dll/Example.dsp, Dll/Example.dsw, Dll/MP3EncDll.dsp, - Dll/MP3EncDll.dsw, Dll/Makefile.am, Dll/Makefile.in, - frontend/Makefile.am, frontend/Makefile.in, frontend/mp3x.dsp, - frontend/mp3x.dsw, frontend/mp3x_vc6.dsp, libmp3lame/Makefile.am, - libmp3lame/Makefile.in, libmp3lame/libmp3lame.dsp, - mpglib/Makefile.am, mpglib/Makefile.in, mpglib/mpglib.dsp - (takehiro-2002_05_07-experimental): - - remove all the outdated files. - copied mp3x_vc6.dsp from main branch. - -2004-01-18 12:51 takehiro - - * libmp3lame/: quantize.c, lame.c - (takehiro-2002_05_07-experimental): - - cosmetic - -2004-01-18 12:47 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen - -2004-01-18 12:47 takehiro - - * config.h.in, configure.in, libmp3lame/tables.c, - libmp3lame/tables.h, libmp3lame/takehiro.c - (takehiro-2002_05_07-experimental): - - replace "unsigned long long" -> "uint64_t" - -2004-01-18 12:46 takehiro - - * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): - - cosmetic - -2004-01-17 18:33 takehiro - - * include/lame.h, libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, - libmp3lame/bitstream.c, mpglib/interface.c - (takehiro-2002_05_07-experimental): - - moved VBR header related code. now the vbr header structure is in lame.h. - This means applications can use the VBR header information via it. - -2004-01-17 18:21 takehiro - - * libmp3lame/lame-analysis.h (takehiro-2002_05_07-experimental): - - remove unused definition - -2004-01-17 18:19 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - cosmetic - -2004-01-17 18:14 takehiro - - * libmp3lame/: bitstream.c, lame.c - (takehiro-2002_05_07-experimental): - - fix assert() condition. - remove unused function. - -2004-01-17 18:08 takehiro - - * frontend/main.c, libmp3lame/VbrTag.c, libmp3lame/VbrTag.h - (takehiro-2002_05_07-experimental): - - remove ReportLameTagProgress(). it is not LAME API at all... - -2004-01-17 18:07 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - cosmetic - -2004-01-17 17:56 takehiro - - * libmp3lame/: encoder.h, lame.c, machine.h, util.h - (takehiro-2002_05_07-experimental): - - include file clean up. - -2004-01-17 17:44 takehiro - - * libmp3lame/mpglib_interface.c, mpglib/interface.c, - mpglib/interface.h, mpglib/mpglib.h - (takehiro-2002_05_07-experimental): - - changed InitMP3() and ExitMP3() API. - -2004-01-17 17:37 takehiro - - * libmp3lame/util.h (takehiro-2002_05_07-experimental): - - remove freegfc() prototype - -2004-01-17 17:35 takehiro - - * libmp3lame/: util.c, lame.c (takehiro-2002_05_07-experimental): - - simplify freegfc() - -2004-01-17 17:04 takehiro - - * frontend/brhist.c, frontend/console.c, frontend/get_audio.c, - frontend/gpkplotting.c, frontend/gtkanal.c, frontend/main.c, - frontend/mp3rtp.c, frontend/rtp.c, include/lame.h, - libmp3lame/lame-analysis.h, libmp3lame/machine.h, - libmp3lame/mpglib_interface.c, mpglib/common.c, - mpglib/decode_i386.c, mpglib/interface.c, mpglib/layer1.c, - mpglib/layer2.c, mpglib/layer3.c, mpglib/mpg123.h - (takehiro-2002_05_07-experimental): - - renamed "stereo" -> "channels" to make things more clear. - remove unused definitions. - -2004-01-17 14:25 takehiro - - * README.B32, README.DJGPP (takehiro-2002_05_07-experimental): - - too much old. removed. - -2004-01-17 14:23 takehiro - - * API, HACKING, ACM/ACMStream.h, ACM/DecodeStream.h, - Dll/BladeMP3EncDLL.c, Dll/Makefile.mingw32, dshow/Encoder.h, - frontend/brhist.c, frontend/brhist.h, frontend/get_audio.c, - frontend/get_audio.h, frontend/gtkanal.c, frontend/gtkanal.h, - frontend/main.c, frontend/mp3rtp.c, frontend/mp3x.c, - frontend/parse.c, frontend/parse.h, frontend/timestatus.c, - frontend/timestatus.h, include/lame.h, libmp3lame/Makefile.am, - libmp3lame/Makefile.in, libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, - libmp3lame/bitstream.c, libmp3lame/bitstream.h, - libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/id3tag.c, - libmp3lame/id3tag.h, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/libmp3lame_vc6.dsp, - libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, - libmp3lame/newmdct.h, libmp3lame/psymodel.c, - libmp3lame/psymodel.h, libmp3lame/quantize.c, - libmp3lame/quantize.h, libmp3lame/quantize_pvt.h, - libmp3lame/set_get.c, libmp3lame/set_get.h, libmp3lame/tables.c, - libmp3lame/takehiro.c, libmp3lame/util.c, libmp3lame/util.h, - mpglib/Makefile.am, mpglib/Makefile.in, mpglib/common.c, - mpglib/common.h, mpglib/dct64_i386.c, mpglib/decode_i386.c, - mpglib/interface.c, mpglib/interface.h, mpglib/layer1.c, - mpglib/layer1.h, mpglib/layer2.c, mpglib/layer2.h, - mpglib/layer3.c, mpglib/layer3.h, mpglib/mpg123.h, - mpglib/mpglib.h (takehiro-2002_05_07-experimental): - - Large API clean up. - To make MP3 decoding function reentrant, we need to replace the all API... - - all the variables are now marked as "INTERNAL" and applications cannot - access them directly. - - "lame_global_flags" structure is removed. Use "lame_t" instead. - -2004-01-17 14:11 takehiro - - * Makefile.B32, Makefile.DJGPP (takehiro-2002_05_07-experimental): - - They are too much outdated. removed. - -2004-01-17 11:34 takehiro - - * config.h.in, configure.in, frontend/brhist.c, - frontend/get_audio.c, frontend/get_audio.h, - frontend/gpkplotting.c, frontend/gtkanal.c, frontend/main.c, - frontend/main.h, frontend/parse.c, frontend/portableio.c, - libmp3lame/mpglib_interface.c, mac/Precompile_Common.h, - mpglib/common.c, mpglib/interface.c, mpglib/layer2.c, - mpglib/layer3.c, mpglib/mpg123.h - (takehiro-2002_05_07-experimental): - - cleanup. remove unused functions/definitions. - -2004-01-17 10:51 takehiro - - * frontend/parse.h (takehiro-2002_05_07-experimental): - - fix warning - -2004-01-17 10:45 takehiro - - * frontend/parse.c (takehiro-2002_05_07-experimental): - - fix usage message of --priority - -2004-01-17 10:17 takehiro - - * frontend/get_audio.c, frontend/main.c, frontend/parse.c, - frontend/portableio.c, frontend/portableio.h, include/lame.h, - libmp3lame/VbrTag.c, libmp3lame/lame.c, libmp3lame/tables.c, - mpglib/common.c, mpglib/common.h, mpglib/tabinit.c - (takehiro-2002_05_07-experimental): - - remove unused code and old APIs. - make some functions/arrays static. - -2004-01-17 09:35 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix it does not write id3v2 at all. - make bitrate table static. - -2004-01-15 19:05 aleidinger - - * frontend/parse.c: - - We should not need errno... introduced in the last commit, remove it. - -2004-01-15 19:04 aleidinger - - * frontend/parse.c: - - Different fix for the priority parsing bug, uses less code. - - Tested by: Gabriel - -2004-01-15 13:54 bouvigne - - * doc/html/history.html, ACM/TODO, doc/html/index.html, - doc/html/switchs.html: - - doc, history - -2004-01-15 11:15 bouvigne - - * include/lame.h, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: - - made lame.h identical with or without DECODE_ON_THE_FLY. - made gfp identical with or without DECODE_ON_THE_FLY. - -2004-01-15 01:24 olcios - - * USAGE, frontend/parse.c, libmp3lame/lame.c: - - changed the behaviour of --clipdetect to force RG analysis on decoded data (not input data). Updated --longhelp and documentation - -2004-01-14 14:38 bouvigne - - * libmp3lame/psymodel.c: - - minor code change in mask_add - -2004-01-14 14:16 bouvigne - - * libmp3lame/psymodel.c: - - minor code change in mask_add - -2004-01-13 19:23 bouvigne - - * frontend/parse.c: - - isnumber ->is_number - -2004-01-13 18:35 glessard - - * frontend/get_audio.c: - - Removed a spurious fprintf that occurred during AIFF-C decoding. - -2004-01-13 17:36 bouvigne - - * USAGE: - - ReplayGain ->89dB - -2004-01-13 17:30 takehiro - - * frontend/get_audio.c: - - fix mp3 decoding... - -2004-01-13 13:30 bouvigne - - * frontend/parse.c: - - fixed issue when --priority is not followed by a number but by another - argument. - - Btw, the situation is the same with a lot of other settings. - -2004-01-13 12:36 bouvigne - - * libmp3lame/version.h: - - 3.96a1 - -2004-01-12 18:09 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - bit better diveding point of huffman coding. - -2004-01-12 17:23 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - updated - -2004-01-12 16:54 takehiro - - * libmp3lame/: lame.c, quantize.c, set_get.c, util.h - (takehiro-2002_05_07-experimental): - - implement lame_set_maskingadjust() and lame_set_maskingadjust_short() as is in LAME3.x branch. - - get_XX functions are not yet coded. - -2004-01-12 16:50 takehiro - - * libmp3lame/: lame.c, set_get.c, tables.c - (takehiro-2002_05_07-experimental): - - fix it ignores --athlower and --athcurve option (always use default setting) - and clean up ATH related functions. - -2004-01-12 14:49 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - better mp3 file header analysis (and bugfix). - -2004-01-12 13:44 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - consider subblock position when calculating the PE value - (usually, subblock 3 needs more bits than subblock 1) - -2004-01-12 13:40 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - cosmetic - -2004-01-12 09:03 bouvigne - - * doc/html/history.html: - - history - -2004-01-12 08:59 bouvigne - - * libmp3lame/gain_analysis.c: - - changed RG level to 89dB - -2004-01-12 08:42 bouvigne - - * libmp3lame/version.h: - - back into 3.95 because of the fixed crash - -2004-01-12 08:41 bouvigne - - * libmp3lame/takehiro.c: - - fixed a potential crash with fast vbr (introduced by myself) - -2004-01-12 07:17 takehiro - - * frontend/parse.c, include/lame.h, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, - libmp3lame/set_get.c (takehiro-2002_05_07-experimental): - - added "--sameblock" option, to help the playback problems on some buggy decoders.(like some DVD/CD-R mp3 player) - -2004-01-12 06:50 takehiro - - * frontend/parse.c, libmp3lame/set_get.c - (takehiro-2002_05_07-experimental): - - clean up quality setting. - -2004-01-11 15:39 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix for short block i-stereo band mis-selection. - -2004-01-11 15:01 bouvigne - - * libmp3lame/lame.c: - - small cleanup in the lowpass/samplefreq selection code - -2004-01-11 14:39 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - quick fix for i-stereo. it accidentially uses i-stereo on the scalefactor - where we do not want to use (and where we do not set the direction). - -2004-01-11 14:04 takehiro - - * config.h.in, configure (takehiro-2002_05_07-experimental): - - regen - -2004-01-11 13:37 takehiro - - * configure.in, mac/Precompile_Common.h - (takehiro-2002_05_07-experimental): - - remove IEEE854_float80 - -2004-01-11 12:46 takehiro - - * testcase.mp3 (takehiro-2002_05_07-experimental): - - regen - -2004-01-11 12:45 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - fix the fatal reservoir usage bug. - - meaning of "--nores" was opposite. - - it does not use reservoir at all when VBR. - -2004-01-11 12:02 takehiro - - * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): - - fix Tag problem when CBR. - -2004-01-11 12:01 takehiro - - * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): - - cosmetic - -2004-01-11 11:56 takehiro - - * frontend/mp3rtp.c (takehiro-2002_05_07-experimental): - - rtp cannot send vbr header. - -2004-01-11 11:37 takehiro - - * libmp3lame/: VbrTag.c, VbrTag.h - (takehiro-2002_05_07-experimental): - - make PutLameVBR() as static - -2004-01-11 11:22 aleidinger - - * configure: - - regen - -2004-01-11 11:20 aleidinger - - * configure.in: - - Welcome to 3.96. - -2004-01-11 10:21 bouvigne - - * libmp3lame/version.h: - - We are now in 3.96 - -2004-01-11 10:03 takehiro - - * frontend/: get_audio.c, get_audio.h - (takehiro-2002_05_07-experimental): - - ignore the MPEG header whose layer is not same as the filename. - -2004-01-11 09:56 takehiro - - * frontend/get_audio.h (takehiro-2002_05_07-experimental): - - fix build problem with libsndfile. - -2004-01-11 02:21 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - remove unused tables. - -2004-01-11 01:19 takehiro - - * testcase.mp3, libmp3lame/tables.c, libmp3lame/tables.h, - libmp3lame/takehiro.c, libmp3lame/i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - choose from 4 code table when ixmax = 2, 3, ..., 7 - -2004-01-10 22:47 takehiro - - * libmp3lame/i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - cosmetic - -2004-01-10 21:20 olcios - - * doc/html/history.html: - - cosmetic - -2004-01-10 20:38 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix mp3x sometimes crashes. - -2004-01-10 20:31 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen by hand - -2004-01-10 20:29 takehiro - - * Makefile.B32, Makefile.unix, config.h.in, configure.in, - frontend/mp3x.dsp (takehiro-2002_05_07-experimental): - - remove symbol HAVE_GTK - -2004-01-10 20:20 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - trivial - -2004-01-10 20:16 takehiro - - * frontend/mp3x.c, libmp3lame/lame.c, libmp3lame/set_get.c, - libmp3lame/set_get.h, mpglib/layer3.c - (takehiro-2002_05_07-experimental): - - clean up and fix analyzer hook related code. - -2004-01-10 20:15 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - trivial - -2004-01-10 19:34 takehiro - - * libmp3lame/: bitstream.c, tables.c, tables.h, takehiro.c, - i386/choose_table.nas (takehiro-2002_05_07-experimental): - - clean up huffman coding tables. - -2004-01-10 19:24 takehiro - - * testcase.mp3, libmp3lame/bitstream.c, libmp3lame/tables.c, - libmp3lame/takehiro.c, libmp3lame/i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - little bit better huffman coding when ix_max = 2 - -2004-01-10 18:25 takehiro - - * testcase.mp3, libmp3lame/tables.c, libmp3lame/tables.h, - libmp3lame/takehiro.c, libmp3lame/i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - little bit better huffman coding when ix_max is 1. - -2004-01-10 17:28 olcios - - * USAGE: - - cosmetic change - -2004-01-10 16:14 takehiro - - * libmp3lame/lame.c: - - fix the display of lowpass fileter config. - -2004-01-10 16:01 takehiro - - * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): - - main line merge. - - Gaby's VBRtag fix (do not include the vbr header into the vbr seek table as it breaks a player). - -2004-01-10 15:57 takehiro - - * ACM/ACMStream.cpp (takehiro-2002_05_07-experimental): - - main line merge - - Gaby's buffer size fix. - -2004-01-10 12:59 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - added one more error check. - -2004-01-10 12:31 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - update - -2004-01-10 12:29 aleidinger - - * testcase.mp3: - - testcase for 3.95 - -2004-01-10 12:29 takehiro - - * doc/html/history.html: - - added mpglib fix - -2004-01-10 12:18 aleidinger - - * ChangeLog: - - update CVS history - -2004-01-10 12:13 aleidinger - - * libmp3lame/version.h: - - Preperation for 3.95 RELEASE. - - Please notify me and Gabriel in case you change something from this - point in time upto the 3.96 version bump. - -2004-01-10 12:10 aleidinger - - * doc/html/history.html: - - faster on PPC - -2004-01-10 12:03 aleidinger - - * libmp3lame/util.h: - - do not use FastLog implicitely - -2004-01-10 12:02 aleidinger - - * configMS.h: - - explicit use of FastLog - -2004-01-10 11:42 aleidinger - - * configure: - - regen - -2004-01-10 11:35 aleidinger - - * configure.in: - - - use the IEEE 754 hack and FastLog on x86 and PPC only - - make the use of FastLog explicit - - PPC performance: - 1GHz G4 - "Standard" : 396 s (100%) - FastLog : 371 s ( 93%) - FastLog, 754 : 365 s ( 92%) - 754 : 388 s ( 98%) - - 2GHz G5 (dual), cbr, vbr - "Standard" : 166 s (100%), 328 s (100%) - FastLog : 169 s (102%), 338 s (102%) - FastLog, 754 : 148 s ( 90%), 288 s ( 88%) - 754 : 145 s ( 87%), 279 s ( 85%) - - On a G5 we shouldn't use FastLog (I assume highly optimized for G5 log*() - routines in the standard math library), but configure doesn't know ATM how - do check for a G5. - -2004-01-10 10:38 takehiro - - * frontend/get_audio.c: - - backport from my experimental branch to fix the crash when invalid input. - -2004-01-10 10:27 takehiro - - * mpglib/: common.c, interface.c, layer1.c, layer3.c: - - backport from my experimenhtal branch, to fix the crash when invalid input. - -2004-01-10 09:55 takehiro - - * doc/html/history.html: - - effetc->affect reported at sf.net (BugID #867502) - -2004-01-08 19:55 olcios - - * libmp3lame/gain_analysis.c: - - comment update (clarification) - -2004-01-08 19:14 olcios - - * USAGE: - - Removed --replaygain from USAGE, because it had been defaulted and the option removed from LAME. Updated information on --replaygain-accurate. - -2004-01-08 15:58 bouvigne - - * configMS.h, doc/html/history.html, doc/html/index.html: - - predicted release date: January 11th - -2004-01-07 17:58 aleidinger - - * frontend/Makefile.in: - - regen - -2004-01-07 17:57 aleidinger - - * frontend/Makefile.am: - - Add mp3x_vc6.dsp. - - Requested by: Gabriel - -2004-01-07 17:35 bouvigne - - * README.WINGTK, lame_vc6.dsw, frontend/lame_vc6.dsp, - frontend/mp3x_vc6.dsp, libmp3lame/libmp3lame_vc6.dsp, - mpglib/mpglib_vc6.dsp: - - added back mp3x to the VC6 projects - -2004-01-07 15:57 aleidinger - - * configure: - - regen - -2004-01-07 15:51 aleidinger - - * configure.in: - - - bump version to 3.95 - - disable layer1 decoding by default - - reword the layer options and some option descriptions - - enable the use of the fast log function on every CPU (for x86 this - is implicit by the ieee hack) - -2004-01-07 15:26 aleidinger - - * config.h.in: - - add the fast log option - -2004-01-07 13:26 bouvigne - - * mpglib/mpglib_vc6.dsp: - - disable layer I - -2004-01-06 14:38 bouvigne - - * libmp3lame/version.h: - - bump alpha - -2004-01-06 13:53 bouvigne - - * libmp3lame/VbrTag.c: - - do not include the vbr header into the vbr seek table as it breaks a player - -2004-01-05 18:58 takehiro - - * libmp3lame/: lame.c, quantize.c, tables.c - (takehiro-2002_05_07-experimental): - - fix ABR bitrate - changed VBR quality <-> compression ratio mapping. - changed gfc->masking_lower setting - -2004-01-05 17:51 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - fix a warning. - reduce prefetch length. - -2004-01-05 16:25 bouvigne - - * doc/html/history.html: - - history - -2004-01-05 16:19 bouvigne - - * ACM/ACMStream.cpp: - - fixed a buffer requirement error - -2004-01-05 09:45 bouvigne - - * libmp3lame/: l3side.h, quantize.c, takehiro.c: - - faster count_bits - -2004-01-05 07:35 takehiro - - * mpglib/common.c (takehiro-2002_05_07-experimental): - - one more fix for seg.fault - -2004-01-05 07:30 takehiro - - * mpglib/common.c (takehiro-2002_05_07-experimental): - - fix seg.fault (not good way, indeed) - -2004-01-05 07:16 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - fix typo and disable LAYER1 decoding by default. - -2004-01-05 07:15 takehiro - - * libmp3lame/i386/Makefile.in, configure - (takehiro-2002_05_07-experimental): - - regen - -2004-01-05 07:14 takehiro - - * libmp3lame/i386/Makefile.am (takehiro-2002_05_07-experimental): - - fix build problem - -2004-01-05 06:47 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - more strict syncword check when no LAYER1/2 support. - -2004-01-04 19:45 takehiro - - * libmp3lame/: lame.c, tables.c, util.h - (takehiro-2002_05_07-experimental): - - finished fixing mono encoding (initialization problem of inter-channel masking value) - remove useless code in stereo->mono mix down. - fix ATH adjustment code initialization. - -2004-01-04 17:35 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix mono-mode bitrate selection. - -2004-01-04 15:39 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix the condition to use freeformat or not. - -2004-01-04 11:04 bouvigne - - * libmp3lame/lame.c: - - corrected -k - -2004-01-03 17:08 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - trivial clean up and fix comments. - -2004-01-03 16:47 bouvigne - - * doc/html/history.html: - - history - -2004-01-03 16:22 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix possible highpass filter display problem. - -2004-01-03 16:17 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - changed short block switching threshold for 8/16 kbps. - -2004-01-03 04:11 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix "FATAL" typo. - some code clean up. - -2004-01-03 04:10 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix for mono encoding. - -2004-01-02 19:53 bouvigne - - * libmp3lame/lame.c: - - changed quality mapping - -2004-01-02 19:51 bouvigne - - * libmp3lame/takehiro.c: - - faster count_bits - -2004-01-02 19:49 bouvigne - - * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c, - vbrquantize.c: - - Faster quantizations - Only 5% speedup when using Takehiro's ieee754 hack, but about 60% - speedup otherwise. (Should please Mac users) - -2004-01-02 09:02 takehiro - - * mpglib/common.c (takehiro-2002_05_07-experimental): - - check emphasis bits in mpeg header. - -2004-01-01 17:52 takehiro - - * libmp3lame/machine.h (takehiro-2002_05_07-experimental): - - fix warning on mingw (and probabry VC) - -2004-01-01 17:51 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - changed function name, lame_decode_fromfile -> decode_fromfile because it is not LAME standard API. - -2004-01-01 17:23 takehiro - - * mpglib/layer1.c (takehiro-2002_05_07-experimental): - - fix stereo value handling. - -2004-01-01 15:22 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - fix location where emphasis is recorded. - -2004-01-01 15:21 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - prepare for better MP3 header detection. - -2003-12-31 19:07 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix assertion condition. - fix i-stereo bit usage counting. - -2003-12-31 04:27 takehiro - - * libmp3lame/: encoder.c, lame.c, psymodel.c, quantize.c - (takehiro-2002_05_07-experimental): - - trivial clean up - -2003-12-30 19:10 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - trivial clean up.(code to check the MAX_BITS is moved) - -2003-12-30 18:52 takehiro - - * libmp3lame/version.h (takehiro-2002_05_07-experimental): - - ok, new years present. - here goes alpha10! - -2003-12-30 18:47 takehiro - - * ACM/ddk/.cvsignore (takehiro-2002_05_07-experimental): - - added to ignore Makefile - -2003-12-30 18:46 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix it makes invalid mp3 file when 320kbps. - -2003-12-30 18:45 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - added one more check. - trivial coding clean up. - -2003-12-30 17:12 takehiro - - * Makefile.in, aclocal.m4, configure, ACM/Makefile.in, - ACM/ADbg/Makefile.in, ACM/ddk/Makefile.in, - ACM/tinyxml/Makefile.in, Dll/Makefile.in, debian/Makefile.in, - doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, - dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, - mac/Makefile.in, misc/Makefile.in, mpglib/Makefile.in - (takehiro-2002_05_07-experimental): - - regen with automake1.7.9, autoconf 2.59 on cygwin. - -2003-12-30 13:03 takehiro - - * testcase.mp3, libmp3lame/lame.c, libmp3lame/psymodel.c, - libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - trivial clean up. - -2003-12-30 12:28 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix masking_lower hadling - -2003-12-30 12:26 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - do not store FFT value when not using analyzer - -2003-12-30 10:23 takehiro - - * configure, ACM/Makefile.in, ACM/ddk/Makefile.in - (takehiro-2002_05_07-experimental): - - regen - -2003-12-30 10:19 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - trivial optimization - -2003-12-29 18:45 takehiro - - * libmp3lame/: lame.c, psymodel.c, quantize.c, tables.c, util.h - (takehiro-2002_05_07-experimental): - - hadling masking_lower is moved to quantize.c from psymodel.c - fix bug in threshold calculation of short block last sfb. - better intensity stereo band selection.(do not use IS at lower frequency) - fix comments - -2003-12-29 18:09 takehiro - - * libmp3lame/newmdct.c (takehiro-2002_05_07-experimental): - - omit MDCT calculation beyond cutoff. - The gain(for MDCT) is arround 15% when 18kHz cutoff. - -2003-12-29 08:05 takehiro - - * libmp3lame/: set_get.c, tables.c - (takehiro-2002_05_07-experimental): - - reservoir size fix for 320kbps over. - -2003-12-29 08:05 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - added one error check. - -2003-12-28 15:41 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - fix reservoir max size configuration. - -2003-12-28 13:57 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - fix free format detection. 320kbps is not always free format. - -2003-12-28 12:48 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - fix MPEG2 scalefactor output. - -2003-12-28 12:47 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - better error detection for debug mode. - -2003-12-28 12:11 takehiro - - * frontend/parse.c, libmp3lame/lame.c - (takehiro-2002_05_07-experimental): - - fix -k option. - -2003-12-28 11:49 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix warning - -2003-12-28 11:48 takehiro - - * libmp3lame/: psymodel.c, psymodel.h, quantize.c, tables.c - (takehiro-2002_05_07-experimental): - - many cosmetic change and clean up. - -2003-12-27 17:45 takehiro - - * libmp3lame/: psymodel.c, tables.c, util.h - (takehiro-2002_05_07-experimental): - - use more fine resolution infomation for block switching. - -2003-12-27 14:55 takehiro - - * testcase.mp3, libmp3lame/psymodel.c - (takehiro-2002_05_07-experimental): - - update testcase - clean up psymodel.c - -2003-12-27 14:24 takehiro - - * frontend/gtkanal.c, libmp3lame/encoder.c, - libmp3lame/lame-analysis.h, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, - libmp3lame/psymodel.h, libmp3lame/quantize.c, - libmp3lame/set_get.c, libmp3lame/tables.c, libmp3lame/util.h, - libmp3lame/version.h (takehiro-2002_05_07-experimental): - - now psymodel version 0.91-3 - - new ATH adjustment. - * ATH adjustment per channel, not per granule. - - display ATH adjustment value in mp3x. - - new long/short block switching code. - * now it is aware of post masking. - * switch to short block when post echo may happen. - - better long->short masking (threshold/energy) conversion. - -2003-12-23 10:29 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - added one comment. - -2003-12-23 10:22 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - trivial clean up. - -2003-12-23 10:13 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - tuning/fixing norm[] values of the spreading function. - -2003-12-22 16:36 bouvigne - - * doc/html/history.html: - - history - -2003-12-22 09:44 bouvigne - - * libmp3lame/quantize_pvt.c: - - reduced warnings - -2003-12-21 18:41 bouvigne - - * frontend/: get_audio.c, main.c, parse.c: - - reduced warnings - -2003-12-21 18:14 bouvigne - - * libmp3lame/: encoder.c, psymodel.c, psymodel.h, quantize.c, - quantize_pvt.c, quantize_pvt.h, util.h: - - FLOAT8 -> FLOAT - -2003-12-21 16:09 takehiro - - * libmp3lame/: psymodel.c, psymodel.h, tables.c - (takehiro-2002_05_07-experimental): - - safer threshold calculation arround attack detected position. - -2003-12-21 15:12 takehiro - - * configure.in, ACM/Makefile.am (takehiro-2002_05_07-experimental): - - added ACM/ddk directory - -2003-12-21 15:06 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - update comment as is done in main line. - -2003-12-21 15:03 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - fix short block ATH scaling and masking threshold. - -2003-12-21 13:30 takehiro - - * libmp3lame/: psymodel.c, lame.c, tables.c - (takehiro-2002_05_07-experimental): - - - temporal masking aware short/long block switching. - - tuning reduce side value. - - fixed long->short block threshold conversion factor. - - fixed array declaration bug in short block threshold calculation. - -2003-12-21 12:46 bouvigne - - * libmp3lame/: encoder.c, lame.c, presets.c, psymodel.c, - psymodel.h, quantize.c, quantize.h, quantize_pvt.c, - quantize_pvt.h, util.h: - - FLOAT8 -> FLOAT - -2003-12-21 12:30 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - remove bval_width[] related code. - -2003-12-21 12:25 takehiro - - * mpglib/layer3.c (takehiro-2002_05_07-experimental): - - fix 8kbps decode bug (backport from main line) - -2003-12-21 10:16 bouvigne - - * libmp3lame/: VbrTag.c, lame.c, psymodel.c, util.c, util.h: - - FLOAT8 -> FLOAT - -2003-12-20 14:48 bouvigne - - * libmp3lame/psymodel.c: - - fixed calc_interchannel_masking when encoding to mono - -2003-12-20 14:33 bouvigne - - * libmp3lame/lame.c: - - fixed lowpass value for high bitrate vbr profiles - -2003-12-20 14:31 bouvigne - - * libmp3lame/version.h: - - Using 3.95 as version number. - We will decide latter what to choose about version numbers - -2003-12-19 13:55 bouvigne - - * libmp3lame/version.h: - - Moved back to 3.94b in order to not have some 3.95b spreading on the web. - We now have to decide if we should go in the 3.94release direction or in the 3.95b direction - -2003-12-18 18:47 bouvigne - - * libmp3lame/version.h: - - welcome in 3.95 - -2003-12-18 17:13 aleidinger - - * ChangeLog: - - ChangeLog for 3.94b. - -2003-12-18 15:46 bouvigne - - * libmp3lame/version.h: - - 3.94b - -2003-12-18 12:54 aleidinger - - * frontend/get_audio.c: - - Takehiro noticed a bug in the pipe fix, it results in a click sound at - the end of the encoding of BlackBirds.wav. - - This fix is a merge from the experimental branch and doesn't seem to be - harmful while encoding over a pipe, but I'm not sure if I was able to - reproduce the situation where the original fix was needed. - - I've tested: - mkfifo pipetest - lame -preset 96 pipetest pipetest.mp3 - other shell: cat wav >pipetest - -2003-12-17 18:45 bouvigne - - * frontend/parse.c: - - help - -2003-12-17 11:52 bouvigne - - * libmp3lame/psymodel.c: - - updated comment regarding spreading function - -2003-12-15 17:07 bouvigne - - * mpglib/layer3.c: - - fixed 8kHz decoding - -2003-12-15 11:48 takehiro - - * ACM/ddk/: Makefile.am, Makefile.in - (takehiro-2002_05_07-experimental): - - sync with main line - -2003-12-14 17:56 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - added some new items. - - highpass filter for psycho-analysis. - - temporal-masking-aware block switching. - -2003-12-14 17:52 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - clean up s3_func() (no results difference) - remove normalization and bark width consideration. - # hehe, it's now obvious to see which frequency makes strong masking :p - -2003-12-12 18:22 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - coding style update. - check the INFO sub-chunk in LIST chunk. - -2003-12-12 18:21 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - fix it treat the chunk after data chunk as part of data chunk. - -2003-12-12 17:24 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - trivial style update (including comment style, etc). - -2003-12-12 16:52 takehiro - - * libmp3lame/: psymodel.c, tables.c, util.h - (takehiro-2002_05_07-experimental): - - remove nb_1 from gfc. - -2003-12-12 16:15 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix last change (oops, I checked-in the wrong version...) - -2003-12-12 16:12 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - fix bit reservoir handling when looooooooow bit rate. - -2003-12-12 14:31 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - trivial clean up - -2003-12-12 14:31 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - added error check code. - -2003-12-12 13:29 takehiro - - * frontend/main.c, frontend/main.h, frontend/parse.c, - include/lame.h, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, - libmp3lame/set_get.c, libmp3lame/util.h - (takehiro-2002_05_07-experimental): - - clean up variables in gfc and gfp. - -2003-12-09 17:22 olcios - - * frontend/parse.c: - - Fixed typo. - -2003-12-09 17:19 olcios - - * frontend/parse.c: - - Fixed an error message. - -2003-12-09 16:08 aleidinger - - * ACM/Makefile.in: - - regen - -2003-12-09 16:01 aleidinger - - * configure: - - regen - -2003-12-09 15:51 aleidinger - - * ACM/ddk/Makefile.in: - - Add the autoconf Makefile. - -2003-12-09 15:49 aleidinger - - * configure.in: - - Add the ACM/ddk subdirectory. - -2003-12-09 15:49 aleidinger - - * ACM/Makefile.am: - - Add the ddk subdirectory. - -2003-12-09 15:48 aleidinger - - * ACM/ddk/Makefile.am: - - Add an automake Makefile. - -2003-12-09 15:06 bouvigne - - * libmp3lame/version.h: - - Bump alpha - -2003-12-09 15:05 bouvigne - - * frontend/parse.c: - - do not display --r3mix in help - -2003-12-09 15:03 bouvigne - - * doc/html/history.html: - - 3.94 release date? - -2003-12-09 14:59 bouvigne - - * doc/html/: basic.html, examples.html, history.html, index.html, - modes.html, presets.html, switchs.html: - - 3.94 documentation - -2003-12-08 16:52 bouvigne - - * libmp3lame/VbrTag.c: - - Use integer format for ReplayGain peak value - -2003-12-06 20:54 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - trivial optimization. - -2003-12-06 20:10 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c - (takehiro-2002_05_07-experimental): - - make best_huffman_divide() as static. - make it do not call best_huffman_divide() twice when vbr. - -2003-12-06 19:00 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c - (takehiro-2002_05_07-experimental): - - fix warning of quantize_sfb_3DN() prototype declaration. - fix pseudo half step bug on 3DNow!/SSE machines. - -2003-12-06 17:17 takehiro - - * frontend/parse.c, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/set_get.c - (takehiro-2002_05_07-experimental): - - remove experimental switches from context structure. - -2003-12-06 13:37 takehiro - - * libmp3lame/: psymodel.c, quantize.c, quantize_pvt.h - (takehiro-2002_05_07-experimental): - - trivial clean up - -2003-12-06 11:10 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - reduce subblock gain value. - -2003-12-06 07:01 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - VBR code update. - - fixed sf value range limit(not fatal, but possible quality degrade in higher VBR quality mode). - - adjust the initiail value of scalefactor search for speed up(arround 1 or 2%).CVS: ---------------------------------------------------------------------- - -2003-12-05 12:49 aleidinger - - * libmp3lame/i386/Makefile.in: - - add missing " - -2003-12-04 12:26 aleidinger - - * libmp3lame/i386/Makefile.in: - - nasm -> NASM fix - -2003-12-03 16:35 takehiro - - * testcase.mp3, libmp3lame/quantize.c - (takehiro-2002_05_07-experimental): - - changed short block noise estimation (max noise -> sum noise). - -2003-12-03 15:32 takehiro - - * frontend/rtp.c (takehiro-2002_05_07-experimental): - - sync with main line. - -2003-12-03 03:09 olcios - - * include/lame.h: - - comments / doc - -2003-12-03 02:18 olcios - - * frontend/get_audio.c, libmp3lame/lame.c, - libmp3lame/mpglib_interface.c: - - Brought back the possibility to run lame_decode_init() more than once - -2003-12-03 01:44 olcios - - * frontend/get_audio.c, frontend/parse.c, include/lame.h, - libmp3lame/lame.c, libmp3lame/mpglib_interface.c, - libmp3lame/set_get.c: - - Made it impossible to simultaneously use mp3 input and decoding on the fly. - -2003-12-01 17:45 takehiro - - * configure, Dll/Makefile.in, frontend/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, - misc/Makefile.in, mpglib/Makefile.in - (takehiro-2002_05_07-experimental): - - regen - -2003-12-01 17:44 takehiro - - * libmp3lame/i386/Makefile.am (takehiro-2002_05_07-experimental): - - backport Alex's dirty hack, which is less dirty than mine :) - -2003-12-01 17:43 takehiro - - * ltmain.sh (takehiro-2002_05_07-experimental): - - replaced the one from libtool 1.5 - -2003-12-01 15:45 takehiro - - * frontend/depcomp, libmp3lame/depcomp, misc/depcomp, - mpglib/depcomp (takehiro-2002_05_07-experimental): - - removed unused file (build system uses ../depcomp) - -2003-11-29 12:14 aleidinger - - * ChangeLog: - - update - -2003-11-29 12:10 aleidinger - - * test/cvscheck.sh: - - add the automated test script which mt used to run every day - -2003-11-29 12:09 aleidinger - - * configure: - - regen with autoconf 2.57 - -2003-11-29 12:06 aleidinger - - * ACM/Makefile.in, ACM/ADbg/Makefile.in, ACM/tinyxml/Makefile.in, - Dll/Makefile.in, Makefile.in, debian/Makefile.in, - doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, - dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, - mac/Makefile.in, misc/Makefile.in, mpglib/Makefile.in: - - regen with automake 1.7 - -2003-11-29 12:05 aleidinger - - * configure.in: - - - Check for some features a little bit earlier. - - Fix a AC_DEFINE so the newer tools don't moan. - -2003-11-29 12:03 aleidinger - - * libmp3lame/i386/Makefile.am: - - HACK HACK HACK, UGLY UGLY HACK! - - make this work with libtool 1.5 - - If anybody knows how do this in a more sane way, please teach me how to - do it. - -2003-11-29 12:01 aleidinger - - * ltmain.sh: - - update with libtool 1.5 version - -2003-11-29 12:00 aleidinger - - * aclocal.m4: - - update with newer autotools - -2003-11-29 11:59 aleidinger - - * config.h.in: - - add some missing undefs - -2003-11-29 11:16 aleidinger - - * frontend/rtp.c: - - fix some errors which are new with gcc 3.x - -2003-11-29 09:49 aleidinger - - * frontend/depcomp, libmp3lame/depcomp, mpglib/depcomp: - - use the ones provided by automake 1.7 - -2003-11-29 09:45 aleidinger - - * missing, mkinstalldirs, depcomp, install-sh: - - use the ones provided by automake 1.7 - -2003-11-29 09:44 aleidinger - - * config.guess, config.sub: - - use the ones provided with libtool 1.5 - -2003-11-28 18:23 takehiro - - * frontend/brhist.c, include/lame.h, libmp3lame/encoder.c, - libmp3lame/encoder.h, libmp3lame/lame.c, libmp3lame/tables.c, - libmp3lame/util.h (takehiro-2002_05_07-experimental): - - clean up bitrate histgram code. - -2003-11-28 17:53 takehiro - - * libmp3lame/: bitstream.c, lame.c, quantize.c, util.h - (takehiro-2002_05_07-experimental): - - remove unused definition (resample_t) - rename Bit_stream_struct -> bit_stream_t - -2003-11-28 17:30 takehiro - - * libmp3lame/: VbrTag.c, lame.c, lame_global_flags.h, set_get.c, - tables.c, util.h (takehiro-2002_05_07-experimental): - - move and rename "gfp->exp_nspsytune" => "gfc->nsPsy.tune" - -2003-11-28 17:20 takehiro - - * libmp3lame/: psymodel.c, quantize.c, util.h - (takehiro-2002_05_07-experimental): - - remove "ath_over" from III_psy_ratio - -2003-11-28 17:17 takehiro - - * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): - - make lame_decode1_headersB_clipchoice() as static - -2003-11-28 16:48 takehiro - - * libmp3lame/util.c (takehiro-2002_05_07-experimental): - - remove unused code - -2003-11-28 16:46 takehiro - - * libmp3lame/: util.c, util.h, i386/cpu_feat.nas - (takehiro-2002_05_07-experimental): - - simplify the CPU feature detection code. - -2003-11-28 16:42 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - divide TODO item about encoding quality problem into 2 piece. - -2003-11-28 16:38 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - fix comments. - -2003-11-28 16:24 takehiro - - * libmp3lame/: encoder.c, lame.c - (takehiro-2002_05_07-experimental): - - trivial - -2003-11-28 16:24 takehiro - - * libmp3lame/: quantize.c, quantize.h - (takehiro-2002_05_07-experimental): - - fix warning - simplify the code. - -2003-11-28 16:11 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - sync main branch (lowpass adjustment when mono) - and trivial clean up. - -2003-11-28 16:04 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - remove unused definition - -2003-11-28 16:03 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - do not use reservoir when -q 9 - -2003-11-28 15:58 takehiro - - * USAGE (takehiro-2002_05_07-experimental): - - remove documents about removed options - -2003-11-28 15:53 takehiro - - * frontend/parse.c, include/lame.h, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/quantize.c, - libmp3lame/set_get.c (takehiro-2002_05_07-experimental): - - clean up VBR finish code and remove "-F" option. - LAME always use VBR_hard_min now. - - The option is quite "FAQ"ed and hacky/dirty work arround to conceal - the psymodel flaw. - -2003-11-28 15:34 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - changed ResvFrameBegin() arguments. - -2003-11-28 15:29 takehiro - - * libmp3lame/: VbrTag.c, encoder.c, quantize.c, quantize.h - (takehiro-2002_05_07-experimental): - - clean up pinfo setting code (for analyzer) - -2003-11-28 15:16 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - trivial simplification. - -2003-11-28 15:16 takehiro - - * libmp3lame/util.c (takehiro-2002_05_07-experimental): - - make gcd() as static. - -2003-11-28 15:02 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - resampling code bug is fixed. - -2003-11-28 15:01 takehiro - - * libmp3lame/: lame.c, util.c, util.h - (takehiro-2002_05_07-experimental): - - make fill_buffer_resample as static function. - fix the bug in resampling (like from 44099 to 44100) and remove work arround code. - -2003-11-28 14:27 bouvigne - - * libmp3lame/set_get.c: - - Disabled replaygain decode because it crashes when using mp3 input - -2003-11-28 12:22 takehiro - - * libmp3lame/: psymodel.c, tables.c, util.h - (takehiro-2002_05_07-experimental): - - simplify the loudness approx code. - -2003-11-27 12:27 takehiro - - * ACM/ddk/msacmdrv.h (takehiro-2002_05_07-experimental): - - sync with mainline - -2003-11-27 12:20 takehiro - - * libmp3lame/: VbrTag.c, bitstream.c, bitstream.h, tables.c, - takehiro.c (takehiro-2002_05_07-experimental): - - simplify the function interfaces. - remove unused definitions. - trivial style update. - -2003-11-27 08:24 bouvigne - - * ACM/: readme.txt, ddk/msacmdrv.h: - - Allow compilation of ACM codec without Microsoft platform DDK - -2003-11-26 13:06 bouvigne - - * lame_vc6.dsw: - - Updated ACM dependencies - -2003-11-25 17:32 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - trivial - -2003-11-25 17:22 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - loop hoisting: loop for writing sideinfo and loop for writing part2/part2_3 is now integrated. - -2003-11-25 17:14 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - trivial - -2003-11-25 17:13 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix byte/bit confusion. - -2003-11-25 16:53 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - do not write magic strings in the post drain part. - -2003-11-25 16:48 takehiro - - * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix, - config.h.in, configure, configure.in - (takehiro-2002_05_07-experimental): - - update build-system related files for new asm code. - (I hope they runs correctly) - -2003-11-25 16:43 takehiro - - * frontend/gtkanal.c, libmp3lame/encoder.c, libmp3lame/encoder.h, - libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix mp3x block-type display - -2003-11-25 15:55 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - psymodel.h is not system header file. - -2003-11-25 15:52 takehiro - - * frontend/main.c (takehiro-2002_05_07-experimental): - - remove priority setting code. - we already have a --priority switch on Windows environment, so we do not - need it. - -2003-11-25 15:43 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - one more... - -2003-11-25 15:20 takehiro - - * libmp3lame/: bitstream.c, bitstream.h, quantize.c, tables.c, - util.h (takehiro-2002_05_07-experimental): - - more simplification arround bit stream write out code. - -2003-11-24 18:26 takehiro - - * libmp3lame/: bitstream.c, tables.c, util.h - (takehiro-2002_05_07-experimental): - - clean up bitstream write out code. - - header(side info) output code is now very simplified. - - variable length bitstream output code is now simple and fast. - -2003-11-24 17:05 bouvigne - - * libmp3lame/lame.c: - - Do not compute ReplayGain when not using vbr header - -2003-11-24 16:13 takehiro - - * libmp3lame/: bitstream.c, tables.c, util.h - (takehiro-2002_05_07-experimental): - - simplify the bitstream output code. - -2003-11-24 14:42 takehiro - - * libmp3lame/: quantize.c, i386/quantSSE.nas - (takehiro-2002_05_07-experimental): - - added SSE version of quantize_ISO() - -2003-11-24 13:52 bouvigne - - * libmp3lame/lame.c: - - Reduced bandwith when encoding in mono - -2003-11-24 13:39 bouvigne - - * libmp3lame/lame.c: - - Fixed low bitrates lowpass and sampling rate values - (I probably broke it recently) - -2003-11-23 20:13 takehiro - - * frontend/gtkanal.c, libmp3lame/encoder.c, - libmp3lame/lame-analysis.h (takehiro-2002_05_07-experimental): - - update mp3x display (arround block switching parameter). - -2003-11-23 20:05 takehiro - - * frontend/parse.c, libmp3lame/VbrTag.c, libmp3lame/encoder.c, - libmp3lame/lame.c, libmp3lame/lame_global_flags.h, - libmp3lame/set_get.c, libmp3lame/set_get.h, libmp3lame/tables.c, - libmp3lame/util.h (takehiro-2002_05_07-experimental): - - remvoe unused features and variables - - ms_sparsing() - - tune() - -2003-11-23 19:47 takehiro - - * frontend/parse.c, libmp3lame/lame.c, libmp3lame/psymodel.c, - libmp3lame/psymodel.h, libmp3lame/set_get.c, - libmp3lame/set_get.h, libmp3lame/util.h - (takehiro-2002_05_07-experimental): - - now it always uses same short block switching threshold for L/R/M channel and S channel. - -2003-11-23 19:41 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - trivial clean up - -2003-11-23 19:31 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - short block threshold tuning. - (of course, need more...) - -2003-11-23 11:22 takehiro - - * libmp3lame/: encoder.c, psymodel.c - (takehiro-2002_05_07-experimental): - - clean up mode extension update code. - -2003-11-23 10:45 takehiro - - * libmp3lame/: bitstream.c, tables.c, util.h - (takehiro-2002_05_07-experimental): - - simplify bitstream writing code. - -2003-11-23 10:27 takehiro - - * libmp3lame/: bitstream.c, psymodel.c - (takehiro-2002_05_07-experimental): - - trivial clean up. - -2003-11-23 10:04 takehiro - - * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): - - fix comments and comment out the unused definitions. - -2003-11-23 10:03 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - trivial clean up - -2003-11-23 10:03 takehiro - - * frontend/parse.c (takehiro-2002_05_07-experimental): - - fix and simplify the usage message. - -2003-11-23 09:47 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - clean up block type update code - -2003-11-23 09:46 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - trivial clean up - -2003-11-23 09:14 takehiro - - * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): - - fix for MPEG2.5 (for the case band width = 2) - -2003-11-23 09:09 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - clean up writing table-id code. - -2003-11-23 09:08 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - trivial clean up - -2003-11-23 08:36 takehiro - - * libmp3lame/i386/fft3dn.nas (takehiro-2002_05_07-experimental): - - remove unused code. - -2003-11-22 19:41 takehiro - - * libmp3lame/: bitstream.c, util.h - (takehiro-2002_05_07-experimental): - - optimize bitstream output code. - -2003-11-22 19:14 takehiro - - * libmp3lame/i386/: fft.nas, ffttbl.nas - (takehiro-2002_05_07-experimental): - - remove unused files - -2003-11-22 19:14 takehiro - - * libmp3lame/i386/: Makefile.am, Makefile.in - (takehiro-2002_05_07-experimental): - - remove unused extra-dist files - -2003-11-22 18:58 takehiro - - * libmp3lame/: bitstream.c, util.h - (takehiro-2002_05_07-experimental): - - optimize writeheader() - -2003-11-22 18:39 takehiro - - * ACM/TODO (takehiro-2002_05_07-experimental): - - update - -2003-11-22 18:39 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.h, i386/quantSSE.nas - (takehiro-2002_05_07-experimental): - - 3DNow! version of count1 region quantization - -2003-11-22 18:12 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix message. - -2003-11-22 18:11 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - trivial clean up - -2003-11-22 18:09 takehiro - - * libmp3lame/version.c (takehiro-2002_05_07-experimental): - - added version string to SSE and E3DNow. - -2003-11-22 17:43 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix ABR mode sometimes uses 640kbps (!) - -2003-11-22 17:40 takehiro - - * libmp3lame/: lame.c, tables.c, i386/fft3dn.nas - (takehiro-2002_05_07-experimental): - - E3DNow! version of fht() - -2003-11-22 17:39 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - trivial cleanup - -2003-11-22 13:30 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - clean up and merge CBR/ABR code. - -2003-11-22 13:19 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.h, i386/quantSSE.nas - (takehiro-2002_05_07-experimental): - - 3DNow! version of quantize_ISO() - -2003-11-22 13:03 takehiro - - * Dll/Example_vc6.dsw (takehiro-2002_05_07-experimental): - - sync main branch - - Corrected the dll example project - -2003-11-22 09:03 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - updated - -2003-11-22 08:45 takehiro - - * libmp3lame/: quantize_pvt.h, takehiro.c - (takehiro-2002_05_07-experimental): - - fix warning and build problem - -2003-11-22 07:57 takehiro - - * Dll/MP3export.pas (takehiro-2002_05_07-experimental): - - sync main branch. - - fix calling convention - -2003-11-22 07:56 takehiro - - * Dll/BladeMP3EncDLL.def (takehiro-2002_05_07-experimental): - - added some interface. - -2003-11-22 07:55 takehiro - - * Dll/BladeMP3EncDLL.c (takehiro-2002_05_07-experimental): - - sync main branch - - display issue fix. - -2003-11-22 07:51 takehiro - - * Dll/Makefile.am (takehiro-2002_05_07-experimental): - - sync main branch. - - added files for vc6 and mingw. - -2003-11-21 17:07 bouvigne - - * Dll/BladeMP3EncDLL.c: - - Display issues - -2003-11-21 17:03 takehiro - - * libmp3lame/: quantize.c, takehiro.c, i386/quantSSE.nas - (takehiro-2002_05_07-experimental): - - 3DNow! version of quantization. - and some asm code optimization/clean up. - -2003-11-21 16:50 bouvigne - - * Dll/BladeMP3EncDLL.c: - - Minor corrections - -2003-11-20 16:04 bouvigne - - * Dll/MP3export.pas: - - Fixed calling convention - -2003-11-20 13:30 bouvigne - - * Dll/Example_vc6.dsw: - - Corrected the dll example project - -2003-11-20 11:16 bouvigne - - * frontend/get_audio.c, frontend/main.c, frontend/parse.c, - include/lame.h, libmp3lame/set_get.c: - - Changed some Vorbis messages - -2003-11-20 11:08 bouvigne - - * frontend/parse.c, include/lame.h, libmp3lame/VbrTag.c, - libmp3lame/encoder.c, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: - - Removed mode_automs - -2003-11-20 10:57 bouvigne - - * libmp3lame/: fft.c, lame.c, util.c, util.h: - - Removed CPU_features.i387 - -2003-11-20 10:46 bouvigne - - * libmp3lame/presets.c: - - Aliased r3mix to vbr-mtrh V3 - -2003-11-19 13:00 bouvigne - - * frontend/parse.c, include/lame.h, libmp3lame/presets.c: - - anihilated streaming/radio/portable named presets, leaving only the -Vx - -2003-11-18 16:18 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix warning - -2003-11-18 16:11 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - new reservoir handling code for ABR. - -2003-11-18 15:37 takehiro - - * testcase.mp3, libmp3lame/bitstream.c - (takehiro-2002_05_07-experimental): - - simplify the sign hadling code. - -2003-11-18 15:29 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - simplify the error check code. - -2003-11-18 15:21 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - optimize self check code. - -2003-11-18 14:03 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - For better/faster encoding, narrowen the frequency region when lower -q. - -2003-11-18 13:59 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - updated - -2003-11-18 13:57 takehiro - - * libmp3lame/: bitstream.c, quantize.c, quantize_pvt.h, takehiro.c - (takehiro-2002_05_07-experimental): - - fix bit overflow when i-stereo - tuning CBR bit allocation (on_pe() function) - clean up finish_iteratio_one(). - -2003-11-18 13:20 bouvigne - - * libmp3lame/presets.c: - - low vbr-mtrh presets - -2003-11-18 12:52 takehiro - - * testcase.mp3 (takehiro-2002_05_07-experimental): - - regen - -2003-11-18 12:51 takehiro - - * libmp3lame/: lame.c, quantize.c, util.h - (takehiro-2002_05_07-experimental): - - fix CBR_2nd_bitalloc() (it may makes invalid mp3 frame). - remapping -q setting. old -q2 is now -q1 - enable CBR_2nd_bitalloc() when -q 0,1 and 2 - -2003-11-18 12:22 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - trivial clean up - -2003-11-18 12:18 takehiro - - * libmp3lame/: psymodel.c, quantize.c - (takehiro-2002_05_07-experimental): - - new CBR bit allocation/reservoir handling code. - still need tuning (there remains some killer samples), - but usually brings better result. - -2003-11-17 02:31 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix substep noise shaping. - -2003-11-16 18:07 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix possible bit counting bug when CBR and higher -q option. - -2003-11-16 18:05 takehiro - - * libmp3lame/: lame.c, util.c, util.h - (takehiro-2002_05_07-experimental): - - do not display the CPU have i387. - -2003-11-16 17:57 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix typo - -2003-11-16 17:02 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix mp3x display. - -2003-11-16 16:11 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - fix ID3v2 tag length when --keeptag. - -2003-11-16 12:43 takehiro - - * frontend/: get_audio.c, get_audio.h, main.c - (takehiro-2002_05_07-experimental): - - now --keeptag keeps ID3v2 tag when transcoding. - -2003-11-16 11:04 takehiro - - * libmp3lame/: lame.c, machine.h, psymodel.c, set_get.c, tables.c, - util.c, util.h, version.c (takehiro-2002_05_07-experimental): - - update comment style (// -> /* */) - -2003-11-16 11:04 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - trivial optimization. - -2003-11-16 10:47 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix one more l3_enc initialization - -2003-11-16 10:31 takehiro - - * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): - - fix segmentation fault especially when higher VBR quality like -V0. - -2003-11-16 10:12 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix trivial(but fatal) bug in short block threshold calculation loop... - -2003-11-16 10:08 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix count1 bit-counting (we must zered all zero region because we use 4-stride in count1 region). - -2003-11-16 09:55 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix i-stereo+VBR fails to encode (internal buffer inconsistency). - -2003-11-15 18:15 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - optimize Huffmancode() by dividing it into tableindex > 15 or not. - -2003-11-15 18:14 takehiro - - * testcase.mp3 (takehiro-2002_05_07-experimental): - - regen - -2003-11-15 17:07 takehiro - - * libmp3lame/util.h (takehiro-2002_05_07-experimental): - - fix warning - -2003-11-15 17:05 takehiro - - * libmp3lame/: lame.c, quantize.c, quantize_pvt.h, takehiro.c, - util.h (takehiro-2002_05_07-experimental): - - always use quantize_best() except init_globalgain(). - and some code clean up. - -2003-11-15 11:21 takehiro - - * configure: - - regen - -2003-11-15 11:14 takehiro - - * configure.in: - - fix migw build(as is done in the experimental branch) - -2003-11-15 10:50 takehiro - - * frontend/get_audio.c: - - fix ambiguous message (Bug ID #830035) - -2003-11-14 16:13 bouvigne - - * libmp3lame/lame.c: - - use presets by default when using vbr-mtrh - -2003-11-14 13:24 bouvigne - - * libmp3lame/presets.c: - - vbr-mtrh high vbr presets - -2003-11-12 17:12 takehiro - - * libmp3lame/: lame.c, util.c, util.h - (takehiro-2002_05_07-experimental): - - check and display if the CPU supports Extended 3DNow! - (no E3DNow! code available yet.) - -2003-11-12 15:47 takehiro - - * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): - - fix build problem for newer NASM ... - -2003-11-12 06:43 takehiro - - * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): - - fix build problem (on some old nasm) - -2003-11-12 06:43 takehiro - - * libmp3lame/i386/cpu_feat.nas (takehiro-2002_05_07-experimental): - - fix build problem - -2003-11-11 04:27 takehiro - - * libmp3lame/i386/cpu_feat.nas (takehiro-2002_05_07-experimental): - - added Extended 3DNow! check code. - -2003-11-11 04:26 takehiro - - * libmp3lame/: lame.c, quantize.c, util.c, util.h, - i386/cpu_feat.nas (takehiro-2002_05_07-experimental): - - sync main branch (SIMD->SSE change) - -2003-11-10 15:41 bouvigne - - * libmp3lame/: fft.c, lame.c, util.c, util.h, i386/cpu_feat.nas: - - SIMD->SSE - -2003-11-10 15:31 bouvigne - - * libmp3lame/: lame.c, presets.c: - - Add missing values for vbr_rh -Vx scale - -2003-11-10 15:27 takehiro - - * libmp3lame/i386/fft3dn.nas: - - fix cygwin build (with nasm) - -2003-11-10 15:27 takehiro - - * libmp3lame/i386/fft3dn.nas (takehiro-2002_05_07-experimental): - - fix cygwin build with nasm - -2003-11-10 14:58 bouvigne - - * libmp3lame/: lame.c, presets.c: - - fix lowpass values for low vbr presets - -2003-11-10 12:06 bouvigne - - * libmp3lame/: lame.c, presets.c, set_get.c: - - Use presets by default when using vbr_rh - -2003-11-09 17:40 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix warning - -2003-11-09 17:38 takehiro - - * libmp3lame/: quantize.c, tables.c, tables.h, i386/quantSSE.nas - (takehiro-2002_05_07-experimental): - - 3DNow! version of calc_sfb_noise() (for CBR/VBR/ABR) - and simplify the look up table structure. - -2003-11-09 15:28 takehiro - - * libmp3lame/: quantize.c, i386/quantSSE.nas - (takehiro-2002_05_07-experimental): - - 3DNow! version of calc_sfb_noise_fast() (for VBR) - -2003-11-09 14:35 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - do not call CBR_2nd_bitalloc() when -q >= 6. - sometimes it results in an invalid mp3 file. - -2003-11-09 14:34 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - revert some part of 1.110.2.190->1.110.2.191. - -2003-11-09 09:43 takehiro - - * libmp3lame/: quantize.c, i386/quantSSE.nas - (takehiro-2002_05_07-experimental): - - 3DNow! version of calc_noise() - -2003-11-09 09:11 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - trivial clean up - -2003-11-09 07:54 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - remove fftsse, fftfpu related code. - -2003-11-09 06:24 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - always use -q 5 when VBR because VBR mode needs -q 5 - (higher -q setting makes no output change and lower -q setting sometimes makes it to encode invalid mp3 file) - -2003-11-08 17:51 takehiro - - * libmp3lame/: takehiro.c, i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - revert part of last change, because it may seg-faults when -q 6,7,8,9 - -2003-11-08 17:45 takehiro - - * libmp3lame/: quantize.c, takehiro.c, i386/choose_table.nas - (takehiro-2002_05_07-experimental): - - changed quantization code. Now it quantizes >8191+15 values into 8191+15. - -2003-11-08 17:44 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - fix precision problem. - -2003-11-08 16:38 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - VBR code cleanup and fix minor bug - - when there's not enough bits, it may decrease bitrate too much. - -2003-11-08 07:00 takehiro - - * libmp3lame/i386/: fftfpu.nas, fftsse.nas - (takehiro-2002_05_07-experimental): - - I cannot make it work and run faster than compiler output. so I removed. - -2003-11-07 16:52 takehiro - - * libmp3lame/: encoder.c, takehiro.c - (takehiro-2002_05_07-experimental): - - trivial code clean up - -2003-11-07 16:46 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - optimization - - precalc adjusted ATH and use them when mask_add() - -2003-11-07 14:54 takehiro - - * libmp3lame/: quantize.c, i386/quantSSE.nas - (takehiro-2002_05_07-experimental): - - optimize asm code by dirty hack - -2003-11-07 14:53 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - trivial optimization(loop hoist) - -2003-11-07 14:37 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix VBR mode... - -2003-11-06 17:37 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix trivial bug when non-nasm case - -2003-11-06 17:18 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix substep shaping. - -2003-11-06 17:13 takehiro - - * libmp3lame/: psymodel.c, quantize.c, i386/quantSSE.nas - (takehiro-2002_05_07-experimental): - - - prevent "double ATH handling" problem. - - new xr^(3/4) code for 3DNow! (From the latest gogo) - - added multiplication function to sumofsqr_3DN() - -2003-11-05 17:13 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - optimize calc_noise() at "0 or 1" region - -2003-11-05 14:03 bouvigne - - * libmp3lame/: presets.c, psymodel.c: - - Use Vx scale for presets - -2003-11-03 23:15 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix subblock_gain is not used(it ignores the switch). - added ugly optimization arround calc_sfb_noise() and calc_sfb_noise_fast(). - -2003-11-03 22:54 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - clean up substep shaping code bit. - -2003-11-03 18:41 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - use 3DNow! more. - -2003-11-03 18:16 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - trivial bug fix... - -2003-11-03 18:14 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix it always uses substep noise shaping (it ignore the option) when VBR. - -2003-11-03 18:09 takehiro - - * libmp3lame/: quantize.c, i386/quantSSE.nas - (takehiro-2002_05_07-experimental): - - added pow075_3DN (3DNow! version of calculating xr^(3/4)) - added "sum x^2" code for 3DNow! and use it. - -2003-11-03 17:44 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - considering the Fourier analysis limitation, it should estimate loudness - of lower frequency region when ATH adjustment. - -2003-11-03 15:00 bouvigne - - * libmp3lame/: lame.c, presets.c: - - allow vbr presets to not be enforced (preparative work before defaulting) - -2003-11-03 14:04 takehiro - - * testcase.mp3, libmp3lame/quantize.c - (takehiro-2002_05_07-experimental): - - fix infinite loop when short blocks. (oops, trivial bug...) - -2003-11-02 12:10 takehiro - - * libmp3lame/: machine.h, quantize.c, quantize_pvt.h, takehiro.c, - util.h, i386/quantSSE.nas (takehiro-2002_05_07-experimental): - - Precalculate the fabs(xr). - moved xr34[] and absxr[](=fabs(xr)) into gfc. - better alignment work for the compiler not support "align". - -2003-11-01 20:06 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - more comments update and clean up - -2003-11-01 19:50 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - optimize substep noise shaping (trancate_smallspectrums()) - and count_bits() related code. - -2003-11-01 19:30 takehiro - - * libmp3lame/: quantize.c, util.h - (takehiro-2002_05_07-experimental): - - clean up(fix comments and misleading variable names). - -2003-11-01 19:14 takehiro - - * libmp3lame/: quantize.c, takehiro.c - (takehiro-2002_05_07-experimental): - - more clean up. - -2003-11-01 18:47 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - clean up the comments - -2003-11-01 18:33 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c - (takehiro-2002_05_07-experimental): - - more coding style and comment clean up. - do not quantize all the band in CBR_2nd_bitalloc(). this increase the speed and fix bug when -q6,7,8 - -2003-11-01 18:16 takehiro - - * libmp3lame/: bitstream.c, quantize.c, tables.c, tables.h, - takehiro.c (takehiro-2002_05_07-experimental): - - general code clean up - reduce division in calc_noise() - -2003-11-01 14:20 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix bug in sfb21 handling code(it mistook dB scale and real scale). - -2003-11-01 12:44 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - coding clean up - -2003-10-30 15:29 takehiro - - * libmp3lame/: quantize.c, takehiro.c - (takehiro-2002_05_07-experimental): - - optimize quantization of "must be quantized to 0 or 1" region. - -2003-10-30 15:28 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - added new setting, "-q 6" - -2003-10-30 14:57 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix small quantization bug in VBR. - -2003-10-30 14:17 takehiro - - * libmp3lame/: encoder.c, quantize.c - (takehiro-2002_05_07-experimental): - - fix low bitrate and intensity stereo. - -2003-10-30 13:09 bouvigne - - * libmp3lame/lame.c: - - Moved replaygain analysis after resampling. It was causing problems when - used with non standard sampling frequencies. - -2003-10-27 15:57 takehiro - - * configure.in, configure (takehiro-2002_05_07-experimental): - - added to use TAKEHIRO_IEEE754_HACK on AMD64 machines. - -2003-10-26 17:58 takehiro - - * testcase.mp3 (takehiro-2002_05_07-experimental): - - regen - -2003-10-26 16:50 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - update -q mapping and comment. - now -q0/-q1 is same as -q2 (-h) - -2003-10-26 16:26 takehiro - - * libmp3lame/: lame.c, util.c, util.h - (takehiro-2002_05_07-experimental): - - more alignment work. - -2003-10-26 16:26 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - optimize calc_noise(). as in main branch, it re-uses the previous - calc_noise result where its scalefactor value is not changed - -2003-10-26 15:22 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - added "SIMD (asm used)" message - -2003-10-26 15:22 takehiro - - * libmp3lame/: quantize.c, machine.h - (takehiro-2002_05_07-experimental): - - more alignment work. - -2003-10-26 14:54 takehiro - - * libmp3lame/: machine.h, util.h - (takehiro-2002_05_07-experimental): - - alignment work - -2003-10-26 14:48 takehiro - - * libmp3lame/: quantize.c, takehiro.c, util.h, i386/Makefile.am, - i386/Makefile.in, i386/nasm.h, i386/quantSSE.nas - (takehiro-2002_05_07-experimental): - - SSE version of calculate xr^(3/4), from gogo-no-coda. - -2003-10-26 14:46 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - trivial optimization. - -2003-10-26 12:44 takehiro - - * frontend/parse.c, libmp3lame/lame.c, libmp3lame/quantize.c, - libmp3lame/tables.c, libmp3lame/takehiro.c - (takehiro-2002_05_07-experimental): - - update substep noise shaping. - - pseudo half step is now default when -q 0 to 4. - - in VBR mode, use substep noise shaping if 320kbps is not enough. - - changed behaivior of --substep option (see the usage message) - -2003-10-26 11:52 takehiro - - * libmp3lame/: encoder.c, quantize.c - (takehiro-2002_05_07-experimental): - - more generalized optimization by using gfc->xrMaxNum. - - we can also use it now with VBR. - -2003-10-26 11:27 takehiro - - * frontend/mp3x.c, include/lame.h - (takehiro-2002_05_07-experimental): - - fix build problem... - -2003-10-26 07:43 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - use adjust_global_gain() function when pseudohalf step noise shaping. - fix it sometimes exceed the global_gain limit. - -2003-10-26 07:38 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix build problem when with DECODE_ON_THE_FLY - -2003-10-26 07:14 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix when subblock_gain or scalefactor_scale is used. - -2003-10-25 20:53 takehiro - - * libmp3lame/: quantize.c, takehiro.c - (takehiro-2002_05_07-experimental): - - re-quantizing only on the sfb where "distortion" is found. (faster !) - - revert "double"->"FLOAT" conversion. - - it makes some problems on the machine of which FLOAT is REALLY FLOAT - (only 32it precision) - -2003-10-25 19:54 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - optimize/debug gi->xrNumMax usage. - -2003-10-25 19:45 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - added loop break code by looking the noise in sfb21 because there's no sfb value and we can do nothing with it. - -2003-10-25 19:30 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - off by one of max bitrate in VBR. - -2003-10-25 19:28 takehiro - - * libmp3lame/: bitstream.c, bitstream.h, encoder.c, lame.c, - set_get.c (takehiro-2002_05_07-experimental): - - clean up - -2003-10-25 19:28 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix VBR/ABR with --nores encode. - - and clean up reservoir code. - -2003-10-25 19:27 takehiro - - * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): - - fix VbrInit code. - -2003-10-25 18:12 takehiro - - * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix - (takehiro-2002_05_07-experimental): - - fix dependency (remove reservoir.c) - -2003-10-25 18:10 takehiro - - * libmp3lame/: encoder.c, lame.c, lame_global_flags.h, - mpglib_interface.c, psymodel.c, quantize.c, quantize.h, - set_get.c, util.h (takehiro-2002_05_07-experimental): - - analysis hook code clean up. - -2003-10-25 18:10 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - added decoder thread unsafe problem. - -2003-10-25 18:02 takehiro - - * libmp3lame/machine.h (takehiro-2002_05_07-experimental): - - fix build problem - -2003-10-25 15:52 takehiro - - * configure, configure.in, libmp3lame/machine.h - (takehiro-2002_05_07-experimental): - - remove --enable-all-float option from configure, and make --enable-double-float instead. - -2003-10-25 07:31 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - faster calc_noise() by using max number of xr. - -2003-10-25 07:15 takehiro - - * libmp3lame/: encoder.c, quantize.c, tables.c, takehiro.c, util.h - (takehiro-2002_05_07-experimental): - - precise number of max xr for long blocks. (faster CBR/ABR) - code clean up. - -2003-10-25 06:31 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - added mp3x bug. - -2003-10-23 12:09 bouvigne - - * frontend/parse.c, include/lame.h, libmp3lame/presets.c: - - presets - -2003-10-22 16:22 takehiro - - * libmp3lame/: encoder.c, quantize.c, takehiro.c, util.h - (takehiro-2002_05_07-experimental): - - count bits/quantization optimization. - - do not quantize/search all zero region where obviously all zero region. - (use previous quantization result to determine the region) - -2003-10-22 13:55 takehiro - - * libmp3lame/machine.h (takehiro-2002_05_07-experimental): - - remove unused definition - -2003-10-22 10:21 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - changed "double" -> "FLOAT" - -2003-10-22 10:17 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - fix sometimes preflag does not decrease the bitrate. - -2003-10-22 10:16 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - trivial clean up - -2003-10-22 08:26 takehiro - - * libmp3lame/takehiro.c: - - fix assertion failure reported by Gabriel. - -2003-10-22 07:33 takehiro - - * libmp3lame/bitstream.c: - - better debug message - -2003-10-22 07:11 takehiro - - * libmp3lame/: libmp3lame.dsp, libmp3lame_vc6.dsp - (takehiro-2002_05_07-experimental): - - update for reservoir code clean up. - -2003-10-21 16:31 takehiro - - * libmp3lame/: bitstream.c, bitstream.h, id3tag.c - (takehiro-2002_05_07-experimental): - - one more clean up - -2003-10-21 16:31 takehiro - - * DEFINES, TODO (takehiro-2002_05_07-experimental): - - NEW_DRAIN is now defaulted and it solves wmp6.4 problem - -2003-10-21 16:22 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - remove duplicated error check - make NEW_DRAIN as default - code clean up. - -2003-10-21 09:05 bouvigne - - * libmp3lame/: set_get.c, set_get.h, vbrquantize.c: - - cleanup - -2003-10-20 16:10 olcios - - * doc/html/history.html: - - Added the word "Radio" to the description of the ReplayGain contribution, as it is actually the "Radio" ReplayGain that is computed. - -2003-10-20 15:02 takehiro - - * libmp3lame/: VbrTag.c, VbrTag.h, encoder.c - (takehiro-2002_05_07-experimental): - - clean up VBRTAG related code. - - now the tag is same when --freeformat 128 and when -b 128 - - do not make seek table when CBR - -2003-10-20 13:19 takehiro - - * libmp3lame/: Makefile.am, Makefile.in, VbrTag.c, bitstream.c, - quantize.c, quantize_pvt.h, reservoir.c, reservoir.h, tables.c, - util.h (takehiro-2002_05_07-experimental): - - large clean up arround reservoir related code - -2003-10-20 12:30 bouvigne - - * doc/html/history.html: - - history - -2003-10-20 11:08 bouvigne - - * libmp3lame/version.h: - - bump alpha - -2003-10-20 07:20 bouvigne - - * libmp3lame/quantize_pvt.c: - - fixed build problem - -2003-10-19 23:26 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix comments. - -2003-10-19 17:19 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - updated - -2003-10-19 17:12 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - simplify the short block noise calculation. - -2003-10-19 16:58 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix VBR when i-stereo and completely mono. - -2003-10-19 14:14 takehiro - - * testcase.mp3 (takehiro-2002_05_07-experimental): - - update - -2003-10-19 14:05 takehiro - - * libmp3lame/: machine.h, mpglib_interface.c, newmdct.c, - quantize.c, tables.c, util.c (takehiro-2002_05_07-experimental): - - remove FLOAT8 at all. - -2003-10-19 14:04 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - "floating" scalefactor optimization when preflag is enabled. - -2003-10-19 13:42 takehiro - - * libmp3lame/: bitstream.c, quantize.c, tables.c, takehiro.c - (takehiro-2002_05_07-experimental): - - fix MPEG2 Layer3 scalefactor store code. - - fix i-stereo mode. - - fix preflag usage. - -2003-10-19 13:13 takehiro - - * libmp3lame/util.h (takehiro-2002_05_07-experimental): - - remove unused member - -2003-10-19 12:50 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - Fix subband filtering initialization code. - I hope this solves "very the 1st frame" problem. - -2003-10-19 12:20 takehiro - - * libmp3lame/: bitstream.c, takehiro.c - (takehiro-2002_05_07-experimental): - - use preflag when MPEG2 - added istereo bitstream output code when MPEG2 - (only output code. not support at the bit-allocation). - -2003-10-19 11:41 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - oops, I checked in the wrong version ... - -2003-10-19 11:39 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - update - -2003-10-19 11:37 takehiro - - * libmp3lame/: encoder.c, lame.c, newmdct.c, psymodel.c, psymodel.h - (takehiro-2002_05_07-experimental): - - fix very the 1st frame encoding. - at least MPEG2 Layer3 works, but still there's problem... - -2003-10-19 06:24 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix warning when not HAVE_GTK - -2003-10-19 04:45 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - updated and renumbered. - -2003-10-19 04:42 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix max sfb value when preflag+IS - -2003-10-19 04:41 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - update comment - -2003-10-18 18:05 takehiro - - * libmp3lame/: encoder.c, quantize.c, tables.c, util.c, util.h - (takehiro-2002_05_07-experimental): - - small clean ups and remove outdated comments. - -2003-10-18 17:19 takehiro - - * frontend/parse.c, libmp3lame/lame.c, libmp3lame/quantize.c, - libmp3lame/quantize_pvt.h, libmp3lame/set_get.c, - libmp3lame/util.h (takehiro-2002_05_07-experimental): - - use always max_noise as the noise estimation and remove the "quantcomp" selection - -2003-10-18 16:54 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - clean up and simplify bin_search_StepSize(). - -2003-10-18 16:46 takehiro - - * libmp3lame/: bitstream.c, quantize.c, reservoir.c, reservoir.h - (takehiro-2002_05_07-experimental): - - fix for NEW_DRAIN - fix for target bitrate display in mp3x - and code clean up. - -2003-10-18 16:17 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - small clean up - -2003-10-18 16:14 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - widen the scalefactor search range when VBR. - and use previous frame information to find the scalefactor. - -2003-10-18 13:44 takehiro - - * libmp3lame/: VbrTag.c, VbrTag.h, bitstream.c, lame.c, psymodel.c, - quantize.c, util.c, util.h (takehiro-2002_05_07-experimental): - - fix warnings - -2003-10-18 13:43 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - short block threshold tuning. - -2003-10-18 12:38 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix it sometimes drains too much bits into the ancillary. - -2003-10-18 10:42 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - added quality problem. - -2003-10-17 14:39 bouvigne - - * libmp3lame/: quantize_pvt.c, quantize_pvt.h: - - One more speedup in calc_noise, but the function is now a little messy - -2003-10-17 13:50 bouvigne - - * configMS.h: - - updated version number - -2003-10-17 11:49 bouvigne - - * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h: - - Speedup calc_noise (about 5-10%) by re-using noise values per sfb between - successive calls - -2003-10-16 15:36 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - tuning short block masking threshold calculation. - -2003-10-16 15:12 takehiro - - * libmp3lame/: bitstream.c, encoder.h, newmdct.c, psymodel.c - (takehiro-2002_05_07-experimental): - - simplify the block type update code. - -2003-10-16 15:10 takehiro - - * libmp3lame/: lame.c, quantize.c, tables.c - (takehiro-2002_05_07-experimental): - - trivial coding clean up. - -2003-10-16 13:26 bouvigne - - * libmp3lame/: VbrTag.c, presets.c: - - Put preset used in tag even when just using -b or --abr - -2003-10-16 12:55 bouvigne - - * libmp3lame/VbrTag.c: - - fixed a Lame header bug: - -b xxx --preset yyy was putting xxx as minimum bitrate value in the - tag instead of the value defined in the preset yyy - -2003-10-16 01:32 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - fix warning when not DEBUG mode - -2003-10-16 01:30 takehiro - - * libmp3lame/: encoder.c, lame.c, psymodel.c, tables.c, util.h - (takehiro-2002_05_07-experimental): - - one more cleanup - -2003-10-14 17:56 takehiro - - * libmp3lame/: encoder.c, lame-analysis.h, psymodel.c, util.h - (takehiro-2002_05_07-experimental): - - one more general code clean up. - -2003-10-14 17:37 takehiro - - * testcase.mp3, libmp3lame/VbrTag.c, libmp3lame/bitstream.c, - libmp3lame/quantize.c, libmp3lame/reservoir.c, - libmp3lame/reservoir.h, libmp3lame/tables.c, libmp3lame/util.h - (takehiro-2002_05_07-experimental): - - general clean up. - -2003-10-14 16:57 takehiro - - * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): - - write down "i-stereo used or not" to LAME tag. - -2003-10-14 16:56 takehiro - - * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): - - remove automs code - -2003-10-14 16:54 takehiro - - * testcase.mp3, frontend/parse.c, include/lame.h, - libmp3lame/encoder.c, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/set_get.c, - libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - remove lame_(set|get)_automs - remove "-m a" option - - simplify when no psymodel case (but it has bug in reservoir handling.) - -2003-10-14 16:46 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - compress "floating" scalefactors - -2003-10-14 12:56 takehiro - - * frontend/brhist.c (takehiro-2002_05_07-experimental): - - treat "LR-i" as same as "LR" when display LR/MS history bar. - -2003-10-14 12:23 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix MS_MD_LR_LR will never be selected ... - -2003-10-14 12:21 takehiro - - * libmp3lame/: lame.c, psymodel.c - (takehiro-2002_05_07-experimental): - - update mode/block type selection (mode_ext) code. - - now it uses "START-STOP" block type transition. - - istereo selection code is now simplified. - - and small general code clean ups. - -2003-10-13 17:56 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - clean up istereo related code. - -2003-10-13 17:52 takehiro - - * Makefile.am, Makefile.in (takehiro-2002_05_07-experimental): - - fix testcase failure when not HAVE_GTK - -2003-10-13 17:27 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix mp3x sometime assertion failure. - -2003-10-13 17:21 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix it forgot to reset the istereo usage sfb when LR_I -> LR_MS - -2003-10-13 15:57 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - widen the sf search range on short block. - some code clean up. - -2003-10-13 15:56 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - tuning tonality estimation of "middle" frequency area. - -2003-10-13 15:25 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - clean up VBR code. - -2003-10-13 13:50 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - update with alpha 9 - -2003-10-13 13:48 takehiro - - * frontend/main.c (takehiro-2002_05_07-experimental): - - nuke ".raw" from output filename. - fix possible buffer overrun. - -2003-10-13 13:26 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - use substep noise shaping even when short block. - do not substep noise shaping on digital silent channel. - -2003-10-13 13:20 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - init code optimization (do not calculate xr^(3/4) beyond cutoff). - -2003-10-13 13:19 takehiro - - * libmp3lame/: lame.c, tables.c (takehiro-2002_05_07-experimental): - - use same ath adjustment code for VBR/CBR/ABR - -2003-10-13 11:05 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix LR-i stereo selection on short blocks. (I forgot to commit this in alpha9) - -2003-10-13 11:02 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - fix comment. - -2003-10-13 10:20 takehiro - - * testcase.mp3, libmp3lame/version.h - (takehiro-2002_05_07-experimental): - - here goes alpha9 - -2003-10-13 10:19 takehiro - - * libmp3lame/: encoder.c, lame.c, quantize.c, quantize_pvt.h, - takehiro.c (takehiro-2002_05_07-experimental): - - clean up preflag/istereo code. - -2003-10-13 10:17 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - one more fix about i-stereo aging bug. - -2003-10-13 09:53 takehiro - - * frontend/parse.c (takehiro-2002_05_07-experimental): - - fix --allshort and --shortthreshold - -2003-10-11 20:17 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - changed variable name, cod_info_w -> gi_w - -2003-10-11 20:11 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - use best_scalefac when istereo. - -2003-10-11 19:45 takehiro - - * libmp3lame/: lame.c, tables.c, util.h - (takehiro-2002_05_07-experimental): - - clean up ATH adjustment code. - -2003-10-11 19:45 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - do not use athAdjust() - -2003-10-11 19:36 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - prepare for "START-STOP" sequence. - -2003-10-11 15:11 takehiro - - * libmp3lame/: encoder.c, psymodel.c, tables.c, util.h - (takehiro-2002_05_07-experimental): - - fix i-stereo aging bug. - -2003-10-11 14:11 takehiro - - * libmp3lame/: encoder.c, psymodel.c, psymodel.h, quantize.c, - quantize.h, util.h (takehiro-2002_05_07-experimental): - - trivial optimization (more and more) - -2003-10-11 13:42 takehiro - - * libmp3lame/: psymodel.c, tables.c - (takehiro-2002_05_07-experimental): - - trivial optimization - -2003-10-11 13:39 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - trivial clean up - -2003-10-11 13:19 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - use subblock_gain and scalefac_scale when i-stereo and CBR/ABR. - -2003-10-11 13:13 takehiro - - * libmp3lame/: quantize.c, tables.c - (takehiro-2002_05_07-experimental): - - i-stereo with VBR. - -2003-10-11 11:21 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - work arround for mono-input problem when istereo. - -2003-10-11 11:09 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix cutoff when i-stereo enabled but not using istereo frame. - -2003-10-11 11:05 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - make check_istereo() to be aware of the cutoff. - -2003-10-11 10:34 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix off by one bug in loop_break() - -2003-10-11 10:29 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix off by one bug in PE calculation (and some code clean up). - -2003-10-06 05:09 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - istereo selection code optimization - -2003-10-06 04:20 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix scalefactor breakage when istereo case - -2003-10-05 18:08 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - reduce istereo usage ratio. - -2003-10-05 18:04 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - small clean up - -2003-10-05 17:59 takehiro - - * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): - - sync with main branch - - Gaby's freeformat vbrtag fix(rev 1.67->1.68). - -2003-10-05 17:48 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix LR-i mode selection. - -2003-10-05 17:05 takehiro - - * testcase.mp3, frontend/gtkanal.c, libmp3lame/encoder.c, - libmp3lame/quantize.c, libmp3lame/quantize.h - (takehiro-2002_05_07-experimental): - - general mp3x cleanup. - -2003-10-05 16:36 takehiro - - * frontend/gtkanal.c (takehiro-2002_05_07-experimental): - - remove magic numbers - -2003-10-05 14:17 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - pe -> bit-allocation update.(revert old one) - -2003-10-05 13:59 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix when almost mono input. - -2003-10-05 13:29 takehiro - - * libmp3lame/: quantize.c, tables.c - (takehiro-2002_05_07-experimental): - - one more --athonly hack. - -2003-10-05 13:21 takehiro - - * libmp3lame/: quantize.c, tables.c - (takehiro-2002_05_07-experimental): - - simplify calc_xmin when "ATH only". - -2003-10-05 12:15 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - fix sfb buffer overrun when i-stereo. - -2003-10-05 11:54 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - update the algorithm to select the sfb where it uses i-stereo. - -2003-10-05 10:37 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - fix short block cutoff sfb calculation. - -2003-10-04 18:27 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - small optimization - - noise calculation in "all zero" region. - - sfb21 shaping aware loop_break() - -2003-10-04 18:26 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - small clean up - -2003-10-04 16:57 takehiro - - * frontend/parse.c, libmp3lame/lame.c, libmp3lame/set_get.c - (takehiro-2002_05_07-experimental): - - VBR quality over 9 (not tuned yet at all). - -2003-10-04 16:52 takehiro - - * libmp3lame/: tables.c, util.h, encoder.c, psymodel.c - (takehiro-2002_05_07-experimental): - - make it default to do noise shaping in sfb21. - cutoff-aware PE(perceptual entropy) calculation. - -2003-10-02 09:25 takehiro - - * frontend/parse.c: - - fix build problem.(I made a mistake when back porting ...) - -2003-10-01 16:13 takehiro - - * mpglib/layer3.c (takehiro-2002_05_07-experimental): - - fix build problem - -2003-09-29 17:47 takehiro - - * libmp3lame/: psymodel.c, tables.c - (takehiro-2002_05_07-experimental): - - tonality estimation tuning ... still need more. - -2003-09-29 14:00 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen - -2003-09-29 00:35 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - fix typo - -2003-09-28 16:44 takehiro - - * configMS.h (takehiro-2002_05_07-experimental): - - fix version - -2003-09-28 16:42 takehiro - - * USAGE (takehiro-2002_05_07-experimental): - - small update. - -2003-09-28 16:32 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - re-enable scfsi usage. - -2003-09-28 16:30 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c - (takehiro-2002_05_07-experimental): - - use scalefactor() macro more. - -2003-09-28 16:19 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - tonality estimation fix #1 - - safer tonality estimation at lower frequency. - - tuned sine wave (arround 20Hz) with the option "-v --substep 1" - - - we still need tuning sine wave arround 1kHz. - -2003-09-27 18:39 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - "smoothing" the istereo/narrow-stereo/reduce-side values for default setting. - and code clean up. - -2003-09-27 18:11 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - many small clean up. - - and mp3x update. - - display number of scalefactor bands with a distortion. - - display total noise. - -2003-09-27 17:15 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix display of istereo-ratio and reduce-side factor - -2003-09-27 17:14 takehiro - - * libmp3lame/lame-analysis.h (takehiro-2002_05_07-experimental): - - remove unused definition - -2003-09-27 17:14 takehiro - - * INSTALL (takehiro-2002_05_07-experimental): - - updated for LAME4 - - remove outdated compile time options including configure option. - -2003-09-27 15:50 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix narrow stereo default setting bug. - -2003-09-27 13:13 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - It assumes the noise is monotonic function of the scalefactor, but it is not true. - To fix it, I added CBR_2nd_bitalloc() function. - -2003-09-27 13:05 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - fix "%" display. - -2003-09-27 09:58 takehiro - - * frontend/parse.c, libmp3lame/lame.c - (takehiro-2002_05_07-experimental): - - added --reduce-side option - - added to display side-channel pe reduction factor and narrowen stereo factor, - when --verbose. - -2003-09-27 08:24 takehiro - - * libmp3lame/: lame.c, psymodel.c, quantize.c, set_get.c, - set_get.h, util.h (takehiro-2002_05_07-experimental): - - reduce_ratio option to control MS/LR ratio. - need more tuning. - -2003-09-27 06:16 takehiro - - * frontend/parse.c: - - added priority control on WIN32, backport from experimental branch. - -2003-09-26 13:52 takehiro - - * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): - - remove outdated comment. - -2003-09-26 03:50 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - updated - -2003-09-25 16:27 takehiro - - * frontend/parse.c, libmp3lame/encoder.c, libmp3lame/lame.c, - libmp3lame/quantize.c, libmp3lame/set_get.c, - libmp3lame/set_get.h, libmp3lame/util.h - (takehiro-2002_05_07-experimental): - - - added --narrowen-stereo option - - use narrowen stereo default when lower than 90kbps. - -2003-09-25 15:54 takehiro - - * frontend/parse.c (takehiro-2002_05_07-experimental): - - added priority control option on MS-Windows. - (request #649324 @ sf.net) - -2003-09-25 13:21 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen by hand. - -2003-09-25 13:21 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - fix typo - -2003-09-25 13:15 takehiro - - * libmp3lame/i386/Makefile.in (takehiro-2002_05_07-experimental): - - fix automake bug by hand (work arround) - -2003-09-24 23:18 takehiro - - * Makefile.in, aclocal.m4, config.guess, config.sub, configure, - depcomp, install-sh, missing, mkinstalldirs, ACM/Makefile.in, - ACM/ADbg/Makefile.in, ACM/tinyxml/Makefile.in, Dll/Makefile.in, - debian/Makefile.in, doc/Makefile.in, doc/html/Makefile.in, - doc/man/Makefile.in, dshow/Makefile.in, frontend/Makefile.in, - frontend/rtp.c, include/Makefile.in, libmp3lame/Makefile.in, - libmp3lame/i386/Makefile.in, mac/Makefile.in, misc/Makefile.in, - mpglib/Makefile.in (takehiro-2002_05_07-experimental): - - regen with aclocl-1.7, automake-1.7, autoconf-2.57 - -2003-09-24 23:15 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - fixed mingw build. - - socket patch from leighsmith, patch ID #809315 @ sf.net - - socket function is not mandatory when mp3rtp is not built. - - bug report from gadibergman, Bug ID #809678 @ sf.net - -2003-09-23 18:29 takehiro - - * DEFINES (takehiro-2002_05_07-experimental): - - updated - -2003-09-23 18:04 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - it sometime goes into infinite loop when imcomplete wave file... - -2003-09-23 17:28 takehiro - - * libmp3lame/: encoder.c, quantize.c - (takehiro-2002_05_07-experimental): - - added "narrow stereo image" function. - I will add new "right" switch to enable it, but till then, - use -X n (0 - -2003-08-10 12:48 bouvigne - - * include/lame.h, libmp3lame/lame.c, libmp3lame/presets.c, - libmp3lame/psymodel.h, libmp3lame/set_get.c, - libmp3lame/set_get.h: - - use presets by default for abr/cbr - -2003-08-10 10:11 takehiro - - * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): - - regen - -2003-08-10 10:09 takehiro - - * libmp3lame/: libmp3lame.dsp, libmp3lame_vc6.dsp - (takehiro-2002_05_07-experimental): - - new interface to change internal flags - -2003-08-10 10:06 takehiro - - * libmp3lame/Makefile.am (takehiro-2002_05_07-experimental): - - new interface to change internal flags. - -2003-08-10 10:05 takehiro - - * libmp3lame/lame.c, libmp3lame/set_get.c, frontend/parse.c, - include/lame.h, libmp3lame/set_get.h - (takehiro-2002_05_07-experimental): - - sync with main branch and fix comments. - - changed API name - - hidden "internal" flags when stable release (when it will be...) - -2003-08-10 10:03 takehiro - - * frontend/brhist.c (takehiro-2002_05_07-experimental): - - fix comment. - -2003-08-10 10:03 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - fix it may use i-stereo at sfb21. - -2003-08-10 10:00 takehiro - - * debian/: control, copyright, lame.docs, lame.files, rules - (takehiro-2002_05_07-experimental): - - sync with main branch, except changelog itself. - -2003-08-09 18:55 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - fix for when there's no LIST chunk. - -2003-08-09 12:54 takehiro - - * libmp3lame/util.h (takehiro-2002_05_07-experimental): - - fix warning one more. - -2003-08-09 12:00 takehiro - - * libmp3lame/util.h (takehiro-2002_05_07-experimental): - - fix aliasing warning - -2003-08-09 11:30 takehiro - - * libmp3lame/id3tag.c (takehiro-2002_05_07-experimental): - - added definition for MSVC (as Gabriel did in main branch) - -2003-07-16 01:29 rbrito - - * debian/: changelog, control, copyright, lame.docs, lame.files, - rules: - - Updated debian packaging. - -2003-07-13 10:11 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - RIFF->ID3Tag conversion patch from Charlie Lenahan - -2003-07-11 16:35 aleidinger - - * doc/html/id3.html, doc/man/lame.1, frontend/parse.c: - - Add --ignore-tag-errors, mostly submitted by Adam Luter - . - -2003-06-29 15:43 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - revert the latest psymodel update... - -2003-06-15 16:52 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - trivial coding style update (comment style change, // ... -> /* ... */ ) - -2003-06-15 16:48 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - do not output unused information to avoid any confusion. - -2003-06-15 15:28 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix almost all the VBR infinite loop problem (I hope) - - general code simplification - -2003-06-14 17:52 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - simplified VBR code. - -2003-06-14 17:36 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - simplify the VBR code. - - fix more infinite loop in VBR, but still .... - -2003-06-14 14:34 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix method 2 of substep shaping. - added VBR_3rd_bitalloc() to reduce bitrate little bit. - -2003-06-14 14:33 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - one more safer tonality estimation in lower frequency, especially for human voice. - -2003-06-14 14:32 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - trivial simplification - -2003-06-14 09:32 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix compilation problem on MSVC reported by Yaroslav Efimov - -2003-06-14 07:40 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix possible VBR infinite loop... but there are still problems. - -2003-06-08 18:19 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix VBR code assumes noise<->scalefactor is a monotonic function. - - some trivial style update - -2003-06-08 17:05 takehiro - - * include/lame.h, frontend/parse.c, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, - libmp3lame/set_get.c, libmp3lame/util.h - (takehiro-2002_05_07-experimental): - - remove nspsytune2 - -2003-06-08 16:58 takehiro - - * include/lame.h, frontend/parse.c, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, - libmp3lame/set_get.c (takehiro-2002_05_07-experimental): - - always use ATH adaptive adjustment - -2003-06-08 16:56 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - trivial clean up - -2003-06-08 16:40 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - experimental LR-i check code (not enabled yet) - -2003-06-04 17:47 takehiro - - * Dll/BladeMP3EncDLL.c (takehiro-2002_05_07-experimental): - - sync main branch - -2003-06-04 17:42 takehiro - - * Dll/BladeMP3EncDLL.c: - - fix quality setting API(patch for BugID 746439 at sf.net, reported by mikokong). - -2003-06-01 18:22 aleidinger - - * libmp3lame/Makefile.in: - - regen - -2003-06-01 18:22 aleidinger - - * libmp3lame/Makefile.am: - - add new private header - -2003-06-01 17:20 bouvigne - - * frontend/parse.c, include/lame.h, libmp3lame/libmp3lame_vc6.dsp, - libmp3lame/presets.c, libmp3lame/set_get.c, libmp3lame/set_get.h: - - private header for internal set/get interfaces - -2003-06-01 16:12 bouvigne - - * libmp3lame/id3tag.c: - - let's use snprintf, with a define for msvc - -2003-06-01 12:34 takehiro - - * libmp3lame/: lame.c, takehiro.c - (takehiro-2002_05_07-experimental): - - trivial simplification - -2003-06-01 12:25 takehiro - - * frontend/parse.c (takehiro-2002_05_07-experimental): - - added --is-ratio switches to set the is-ratio. - - remove descriptions about -X,-Y and -Z. - -2003-06-01 12:24 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - added istereo-ratio to display. - -2003-06-01 12:19 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - update TODOs and categorize them. - -2003-06-01 09:16 takehiro - - * libmp3lame/: lame.c, quantize.c - (takehiro-2002_05_07-experimental): - - tuning lower bitrate (arround 64kbps). - - improve pe -> bit allocation - - changed cutoff, short-threshold. - -2003-06-01 09:14 bouvigne - - * libmp3lame/VbrTag.c: - - fix seek table for freeformat - - There is still something strange because with - -b128 and - -b128 --freeformat - I do not get the same seek table - -2003-06-01 09:06 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - scfsi debug. - - it forgot to initialize scfsi flag when it changes "not istereo" frame to "istereo" frame. - - when scfsi is not used at all, do not re-calculate the how many bits are needed to store the scalefactors. - -2003-05-31 18:28 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - initialize gfc->l3_side.is_start_sfb_l/s in case not using istereo. - -2003-05-31 18:19 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - do not do the istereo related processes when dual stereo mode. - -2003-05-31 14:05 bouvigne - - * libmp3lame/id3tag.c: - - ID3 TAG of "Encoder name", backported from experimental branch. - Btw snprintf does not exist under msvc, so I used sprintf. - -2003-05-31 13:52 takehiro - - * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): - - sync with the main branch (fix VBR tag when freeformat by Gabriel) - -2003-05-31 13:30 takehiro - - * libmp3lame/id3tag.c (takehiro-2002_05_07-experimental): - - ID3 TAG of "Encoder name". - This is based on the patch from danchr, at http://www.hydrogenaudio.org/index.php?act=ST&f=15&t=9858& - -2003-05-31 13:16 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - do not use istereo when "analog-monaural". - -2003-05-25 17:00 takehiro - - * libmp3lame/: encoder.c, psymodel.c, tables.c, util.h - (takehiro-2002_05_07-experimental): - - fix i-stereo frame timing delay. - - do not use i-stereo when completely mono. - -2003-05-25 15:34 bouvigne - - * libmp3lame/VbrTag.c: - - corrected the bitrate index of LAME tag in case of freeformat, - but the seek table is still wrong - -2003-05-25 13:21 takehiro - - * Makefile.in, debian/Makefile.in - (takehiro-2002_05_07-experimental): - - regen - -2003-05-25 13:14 takehiro - - * Makefile.am, debian/Makefile.am - (takehiro-2002_05_07-experimental): - - moved dist-hook, as is in the head branch. - -2003-05-25 13:09 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - fix initialization of "istereo used band" when istereo is not used at all. - -2003-05-25 13:04 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix istereo stereo image bug when mono. - -2003-05-25 12:28 takehiro - - * include/lame.h, libmp3lame/lame.c, libmp3lame/psymodel.c, - libmp3lame/set_get.c, libmp3lame/tables.c, libmp3lame/util.h - (takehiro-2002_05_07-experimental): - - psymodel for i-stereo. - determine which sfb to use i-stereo by checking similarity of the masking/energy ratios. - -2003-05-25 07:31 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - optimize CBR/VBR mode pe<->bit allocation - - trivial simplification arround VBR. - -2003-05-25 03:25 takehiro - - * libmp3lame/: encoder.c, psymodel.c - (takehiro-2002_05_07-experimental): - - i-stereo improvement. - - auto switching LR-i <=> MS-i - - i-stereo aware pe calculation - -2003-05-25 01:19 takehiro - - * frontend/brhist.c (takehiro-2002_05_07-experimental): - - added i-stereo frame count display. - -2003-05-25 00:59 takehiro - - * TODO (takehiro-2002_05_07-experimental): - - slightly updated about i-stereo. - -2003-05-20 12:19 aleidinger - - * debian/Makefile.in, configure: - - regen - -2003-05-20 12:17 aleidinger - - * aclocal.m4: - - remove gtk12-config - -2003-05-20 12:14 aleidinger - - * Makefile.am, debian/Makefile.am: - - move the dist-hook into the directory where the action happens - -2003-05-20 12:13 aleidinger - - * configure.in: - - some enhancements for compiler problems and detection of the right size of some types - -2003-05-19 04:20 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen - -2003-05-19 04:19 takehiro - - * Makefile.in, aclocal.m4, config.guess, config.sub, ltmain.sh, - ACM/Makefile.in, ACM/ADbg/Makefile.in, ACM/tinyxml/Makefile.in, - Dll/Makefile.in, debian/Makefile.in, doc/Makefile.in, - doc/html/Makefile.in, doc/man/Makefile.in, dshow/Makefile.in, - frontend/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, - mac/Makefile.in, misc/Makefile.in, mpglib/Makefile.in - (takehiro-2002_05_07-experimental): - - regen with libtool-1.4.2/automake-1.5 to fix nasm enabled build - -2003-05-19 04:17 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - fix compilation problem on "old" compilers - -2003-05-19 04:09 takehiro - - * .cvsignore (takehiro-2002_05_07-experimental): - - added stamp-h?, remove stamp-h1 - -2003-05-18 17:20 takehiro - - * libmp3lame/: bitstream.c, encoder.c, lame.c, lame_global_flags.h, - psymodel.c, quantize.c, tables.c, takehiro.c, util.h, version.h - (takehiro-2002_05_07-experimental): - - initial support of intensity stereo for lower bitrate - it will be enabled when 64-112kbps by default. - - now bump up the alpha7. - -2003-05-18 16:13 takehiro - - * libmp3lame/version.c (takehiro-2002_05_07-experimental): - - when NASM is not enabled, do not print message about "MMX" or "3dNow!" - -2003-05-18 15:05 takehiro - - * Makefile.am: - - added chmod +x debian/rules when make dist. - -2003-05-18 15:03 takehiro - - * Makefile.am, Makefile.in, misc/Makefile.am, misc/Makefile.in - (takehiro-2002_05_07-experimental): - - moved lame.bat - added "chmod +x debian/rules" when "make dist" to resolve BugID #578129 - -2003-05-18 14:15 takehiro - - * Dll/BladeMP3EncDLL.h: - - patch from sf.net, Dll compile with gcc. - -2003-05-18 07:04 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix for the environment which "long" is 64bit. - -2003-05-18 03:45 takehiro - - * frontend/parse.c, libmp3lame/lame.c - (takehiro-2002_05_07-experimental): - - simplify the opening message - -2003-05-18 02:35 takehiro - - * frontend/: main.h, parse.c (takehiro-2002_05_07-experimental): - - trivial change and fix warnings - -2003-05-18 02:34 takehiro - - * config.guess (takehiro-2002_05_07-experimental): - - oops, I overwrote the older file. revert. - -2003-05-18 02:31 takehiro - - * config.sub (takehiro-2002_05_07-experimental): - - oops, I overwrite the older file. - -2003-05-18 02:27 takehiro - - * stamp-h.in (takehiro-2002_05_07-experimental): - - removed - -2003-05-18 02:21 takehiro - - * USAGE (takehiro-2002_05_07-experimental): - - remove -d and --voice - changed recommended setting - -2003-05-17 18:49 takehiro - - * frontend/: main.c, mp3x.c, parse.c - (takehiro-2002_05_07-experimental): - - simplify the startup messages - fix typo in warning mesage - -2003-05-17 18:35 takehiro - - * frontend/parse.c, include/lame.h, libmp3lame/set_get.c - (takehiro-2002_05_07-experimental): - - remove all the presets - -2003-05-17 17:55 takehiro - - * acconfig.h, ltconfig (takehiro-2002_05_07-experimental): - - removed - -2003-05-17 17:51 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen - -2003-05-17 17:50 takehiro - - * Makefile.in, aclocal.m4, config.guess, config.h.in, config.sub, - configure.in, ltmain.sh, ACM/Makefile.in, Dll/Makefile.in, - debian/Makefile.in, doc/Makefile.in, dshow/Makefile.in, - frontend/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.in, ACM/ADbg/Makefile.in, - ACM/tinyxml/Makefile.in, mac/Makefile.in, misc/Makefile.in, - mpglib/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, - libmp3lame/i386/Makefile.in (takehiro-2002_05_07-experimental): - - regen with autoconf-2.54, automake-1.6, libtool-1.4 - -2003-05-17 17:22 takehiro - - * Dll/BladeMP3EncDLL.h (takehiro-2002_05_07-experimental): - - BladeMP3EncDLL.h patch for GCC from sf.net - -2003-05-15 17:04 takehiro - - * frontend/lametime.c (takehiro-2002_05_07-experimental): - - Fix for SunOS 4, reported by Ti Kan. - -2003-05-15 17:02 takehiro - - * frontend/main.c (takehiro-2002_05_07-experimental): - - fix for sunos 4.x, reported by Ti Kan. - -2003-05-15 16:57 takehiro - - * configure.in, frontend/brhist.c - (takehiro-2002_05_07-experimental): - - fix for BSDI, which does not have term.h (reported by Ti Kan) - -2003-05-15 16:55 takehiro - - * lame.bat, misc/lame.bat (takehiro-2002_05_07-experimental): - - moved lame.bat into misc directory - -2003-05-15 15:09 takehiro - - * libmp3lame/: psymodel.c, psymodel.h, tables.c - (takehiro-2002_05_07-experimental): - - trivial clean up. - -2003-05-15 15:08 takehiro - - * include/lame.h, libmp3lame/set_get.c - (takehiro-2002_05_07-experimental): - - remove set_preset_* functions public. - -2003-05-15 15:07 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - new pseudo sfb21 ath handling code (of course, experimental) - -2003-05-15 14:58 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - Partial fix of VBR code assuming the qunatizing noise always increase - when the scalefactor increase. This makes reduce bitrate arround 40kbps - with bloat_test.wav. - - This fix is not perfect, because it still assumes the qunatizing noise always - decrease when the scalefactor decrease. - -2003-05-15 12:48 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - update default short block threshold - -2003-05-15 12:04 takehiro - - * libmp3lame/: psymodel.c, psymodel.h - (takehiro-2002_05_07-experimental): - - tuning MSFIX value with creaking.wav - simplified and ATH aware msfix() routine. - -2003-05-11 15:03 bouvigne - - * libmp3lame/presets.c: - - updated low bitrate presets. - Considering quality, we have: - ns1 comp1 > ns1 comp3 >ns2 comp3 >ns2 comp1 - -2003-05-11 13:15 bouvigne - - * libmp3lame/lame.c, frontend/parse.c, include/lame.h, - libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: - - --sfscale, inhibited -Z - -2003-05-11 11:33 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.h, lame.c - (takehiro-2002_05_07-experimental): - - simplified calc_noise() and better_quant(). - - update comments. - - tuning ABR/CBR 64/80/192/224 kbps. - -2003-05-11 10:18 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - added comments on vbr code (from main branch). - - trivial simplification in find_scalefac() - - prepare for fixing VBR code assumes "quantize noise always decrease when - scalefactor decrease". - -2003-05-11 09:49 bouvigne - - * libmp3lame/lame.c, libmp3lame/quantize.c, libmp3lame/set_get.c, - frontend/parse.c, include/lame.h, libmp3lame/util.h: - - --sbgain - -2003-05-10 17:56 takehiro - - * testcase.mp3, frontend/parse.c, libmp3lame/lame.c - (takehiro-2002_05_07-experimental): - - fix for -k option (reported by Robert. thanx) - -2003-05-09 14:06 aleidinger - - * frontend/: main.c, lametime.c: - - Fix on SunOs 4, Submitted by: Ti Kan - -2003-05-09 13:44 aleidinger - - * frontend/brhist.c: - - fix on BSD/OS 3.x, Submitted by: Ti Kan - -2003-05-09 13:14 bouvigne - - * libmp3lame/quantize.c: - - re-enabling the psfb12 analog silence detection. This time, the coeffs should - be correct. - However, the coding gain is now quite small - -2003-05-08 12:58 bouvigne - - * libmp3lame/quantize.c: - - I am disabling the code for psfb12 analog - silence detection, as it produces some kind of - dropouts. It probably means that there is a bug - somewhere inside. - -2003-05-04 15:36 bouvigne - - * libmp3lame/version.h: - - bump alpha - -2003-05-04 15:35 bouvigne - - * frontend/parse.c, include/lame.h, libmp3lame/presets.c: - - working on presets - -2003-05-03 14:34 bouvigne - - * frontend/parse.c, include/lame.h, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: - - ability to set vbr smooth (for vbr-mtrh) - -2003-05-02 17:38 bouvigne - - * frontend/parse.c: - - internal command line options only available in debug or in alpha. - - This way we should not be worried again by users using non docummented options: - they will not be available for them - -2003-05-02 16:18 bouvigne - - * libmp3lame/vbrquantize.c: - - comments based on some mails exchanged with Robert - -2003-05-01 15:23 bouvigne - - * libmp3lame/lame.c: - - maskingadjust/maskingadjust_short available for vbr-mtrh - -2003-04-27 15:18 bouvigne - - * libmp3lame/: encoder.h, l3side.h, lame.c, quantize.c, - quantize_pvt.c, util.h: - - Analog silence detection in partitionned sfb21 or sfb12 for short blocks - -2003-04-20 17:32 bouvigne - - * libmp3lame/presets.c: - - changed short block quantization comparison to method 0 - for abr/cbr on medium bitrates (because of spahm, fatboy and the likes) , - as suggested by Takehiro. - -2003-04-20 17:03 bouvigne - - * libmp3lame/version.h: - - bump alpha - -2003-04-20 16:56 bouvigne - - * libmp3lame/quantize.c: - - trivial coding change in psfb21_analogsilence - -2003-04-20 16:25 takehiro - - * libmp3lame/version.h (takehiro-2002_05_07-experimental): - - bump up alpha version - -2003-04-20 16:25 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - safer tonality estimation for lower frequency, for better human voice encoding. - - prevent frequent much MS/LR switching. - -2003-04-20 16:22 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - tuning ATH scaling. - -2003-04-20 15:57 bouvigne - - * include/lame.h, frontend/parse.c, libmp3lame/presets.c: - - presets (testing) - -2003-04-20 13:28 bouvigne - - * libmp3lame/: lame.c, util.c, util.h: - - simplified prototype of FindNearestBitrate - -2003-04-20 12:58 bouvigne - - * libmp3lame/presets.c: - - preset insane is now aliased to preset 320 - -2003-04-20 12:53 bouvigne - - * include/lame.h, frontend/parse.c, libmp3lame/presets.c: - - removed some old experimental presets - -2003-04-20 12:33 bouvigne - - * libmp3lame/encoder.c, libmp3lame/lame.c, libmp3lame/presets.c, - frontend/parse.c, libmp3lame/psymodel.c, libmp3lame/quantize.c, - libmp3lame/set_get.c, libmp3lame/util.h, - libmp3lame/vbrquantize.c: - - removed presetTune struct - -2003-04-19 16:34 bouvigne - - * libmp3lame/presets.c: - - fixed medium bitrates cbr/abr presets - -2003-04-19 10:19 bouvigne - - * TODO: - - updated the TODO file - -2003-04-12 13:47 bouvigne - - * doc/html/: contributors.html, history.html: - - history - -2003-04-12 10:20 bouvigne - - * libmp3lame/lame.c, include/lame.h, frontend/parse.c: - - enable fast replaygain analysis by default - define DECODE_ON_THE_FLY if compiled with mpglib - -2003-04-07 10:14 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - fix build problem - -2003-04-07 00:57 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - trivial simplification - -2003-04-06 12:03 takehiro - - * libmp3lame/: lame.c, set_get.c - (takehiro-2002_05_07-experimental): - - fix higher bitrate CBR/ABR preset - first attempt of tuning VBR preset - - fix athaa_sensitivity display and code (there was some confusion arround dB/power) - fix warning of some compare. - -2003-04-06 12:00 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix masking handling code for pre-echo prevention works too much aggressively. - -2003-04-06 11:59 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - tuning ATH value of MDCT region. - -2003-04-05 17:56 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - added ATHlower to display when verbose mode. - -2003-04-05 17:20 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - improve short block "pre-surge" masking control. - and simplify the code. - -2003-04-05 17:19 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - fix 1st frame psycho analysis. - -2003-04-05 16:03 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - update lower bitrate ABR/CBR preset. - remove outdated comments - -2003-03-31 16:32 takehiro - - * libmp3lame/: psymodel.c, tables.c, util.h - (takehiro-2002_05_07-experimental): - - - remove long block pre-echo handling code (we don't need it when nspsytune). - - fix the lowpass filter index to determine L/R channnel long/short block switching. - - lower the lowpass filter index to determine long/short block. - -2003-03-30 15:11 bouvigne - - * include/lame.h, frontend/parse.c, libmp3lame/presets.c: - - presets portable/portable1 - -2003-03-24 21:21 bouvigne - - * libmp3lame/version.h: - - bump alpha - -2003-03-24 21:19 bouvigne - - * include/lame.h, frontend/parse.c, libmp3lame/presets.c: - - presets - -2003-03-24 20:32 bouvigne - - * libmp3lame/lame.c, libmp3lame/lame_global_flags.h, - libmp3lame/quantize.c, libmp3lame/set_get.c, libmp3lame/util.h, - include/lame.h, frontend/parse.c: - - maskingadjust/maskingadjustshort for vbr-rh - -2003-03-18 15:56 takehiro - - * libmp3lame/: VbrTag.c, encoder.c, util.c - (takehiro-2002_05_07-experimental): - - trivial coding change - -2003-03-16 18:02 takehiro - - * libmp3lame/util.h (takehiro-2002_05_07-experimental): - - update comments and clean up. - -2003-03-16 17:53 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - new bs.totbit overflow handling strategy - -2003-03-16 17:53 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - remove quantize cmpare method 3 and 10. - update comments of over_noise and tot_noise. - -2003-03-16 17:51 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - trivial coding style update - -2003-03-08 13:56 takehiro - - * libmp3lame/: util.c, lame.c (takehiro-2002_05_07-experimental): - - - fix to work --quantcomp/--shortthreshold(it was ignored and LAME uses always the default) - - bit clean up resample. - -2003-03-08 10:28 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - simplify the inc_subblock_gain() by using table. - -2003-03-04 18:00 takehiro - - * libmp3lame/: bitstream.c, encoder.c, tables.c, tables.h, - takehiro.c, util.h (takehiro-2002_05_07-experimental): - - large clean up arround bit stream code. much simple, faster and small. - - fix and optimize MPEG2/2.5 scalefactor value recoding code - there's still some problem using table 1 and sometime makes invalid bitstream... - -2003-03-03 18:54 takehiro - - * libmp3lame/: bitstream.c, tables.c, tables.h, takehiro.c - (takehiro-2002_05_07-experimental): - - MPEG2/2.5 scalefactor bit recording optimization. - - now it try to use table 1 - - much simplified code. - -2003-03-03 18:01 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - fix gr_info initilization when MPEG2/2.5, short blocks. - -2003-03-03 17:59 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - fix best_huffman_divide() sometime fails the assertion. - do not use "extra" preflag when MPEG2/2.5 (it fails to record scalefactors) - simplify the scale_bitcount_lsf() - -2003-03-03 17:13 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - large clean up and simplification.(result is not changed) - -2003-03-03 17:08 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - general clean up and simplification. - -2003-03-03 17:04 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - trivial optimization (use shift instead of division) - -2003-03-03 10:02 takehiro - - * libmp3lame/: util.h, tables.c, psymodel.c - (takehiro-2002_05_07-experimental): - - first attempt of block switching for not 44.1kHz. - - use "variable" lowpass index for "constant" lowpass frequency. - -2003-03-03 04:14 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - tuning long/short threshold for arround 128kbps. - clean up scaling related code. - -2003-03-03 04:12 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - trivial optimization - -2003-03-03 02:48 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - revert substep=2 tuning. - -2003-03-02 18:08 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - comment style update. - some code simplification - -2003-03-02 17:56 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - trivial style change - -2003-03-02 17:53 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - all "cod_info" are changed "gi" - precisely change the scalefactor when substep = 2 - simplify the pinfo calculation(for mp3x) - -2003-03-02 17:50 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - all "cod_info" is changed to "gi" - optimized best_huffman_divide() little. - update comments. - -2003-03-02 16:40 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - comment update - -2003-03-02 16:40 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - tuning trancation threshold used in pseudo half step method. - more simplication and comment updation. - -2003-03-02 16:03 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c - (takehiro-2002_05_07-experimental): - - update comments and simplification. - teration_finish_one() is moved from quantize.c to takehiro.c for better conjunction. - -2003-03-02 16:01 takehiro - - * libmp3lame/: tables.c, machine.h, tables.h - (takehiro-2002_05_07-experimental): - - remove IIPOW20() related macro/arrays, all of which are not used. - -2003-03-02 15:08 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - more clean up and simplification. - -2003-03-02 15:06 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - fix warning. - -2003-03-02 15:05 takehiro - - * libmp3lame/util.h (takehiro-2002_05_07-experimental): - - fix prototype. - -2003-03-02 14:53 takehiro - - * libmp3lame/: lame.c, quantize.c, quantize_pvt.h, takehiro.c, - util.h (takehiro-2002_05_07-experimental): - - large simplification mainly arround scale_bitcount() - -2003-03-02 11:39 takehiro - - * libmp3lame/: reservoir.c, reservoir.h - (takehiro-2002_05_07-experimental): - - changed ResvAdjust() as macro. - -2003-03-02 11:35 takehiro - - * libmp3lame/: VbrTag.c, id3tag.h, util.h - (takehiro-2002_05_07-experimental): - - simplify the tag related header files. - -2003-03-02 11:20 takehiro - - * libmp3lame/: tables.c, takehiro.c, version.c - (takehiro-2002_05_07-experimental): - - build problem fix when NASM is not enabled - -2003-03-02 11:19 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - one more initialization simplification. - -2003-03-02 11:13 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - simplify the default setting choosing method. - - use optimum_samplefreq() to determine the output sampling rate, as suggested - by Gabriel. - - use MMX_choose_table always if it uses NASM. - -2003-02-27 17:57 bouvigne - - * libmp3lame/libmp3lame_vc6.dsp: - - fix MSVC build (replay gain) - -2003-02-27 17:46 bouvigne - - * libmp3lame/: encoder.h, l3side.h, lame.c, quantize.c, - quantize_pvt.c, quantize_pvt.h, util.c, util.h: - - analog silence detection in partitionned sfb21 - -2003-02-27 03:55 takehiro - - * libmp3lame/: lame.c, quantize.c - (takehiro-2002_05_07-experimental): - - some substep=2 optimization. - - only do substep-shaping in the last quantization step. - -2003-02-27 03:45 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix amp_scalefac_bands loop exit condition. - -2003-02-27 03:38 takehiro - - * libmp3lame/: psymodel.c, util.h, tables.c, takehiro.c - (takehiro-2002_05_07-experimental): - - optimized little on the case not NASM enabled. - -2003-02-24 03:21 takehiro - - * include/lame.h, libmp3lame/lame.c, libmp3lame/set_get.c - (takehiro-2002_05_07-experimental): - - more ABR/CBR default mode setting (use ABR/CBR preset) - -2003-02-23 18:32 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - sync with the mainline (average compression ratio of VBR mode). - -2003-02-23 18:30 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - fix quantize_xrpow_ISO() as same as in quantize_xrpow() - -2003-02-23 18:22 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - fix short block window ID initialization. - -2003-02-23 17:16 takehiro - - * libmp3lame/: set_get.c, lame.c - (takehiro-2002_05_07-experimental): - - always uses abr/cbr preset, when abr/cbr coding. - The cutoff frequency is changed as is in the main branch. - -2003-02-23 16:30 olcios - - * libmp3lame/lame.c: - - fixed bug with --resample and --replaygain (input data analysis) - -2003-02-23 16:27 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - simplify amp_scalefac_bands() - -2003-02-23 16:14 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - simplify inc_subblock_gain() - -2003-02-23 16:07 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - fix sfb21 does not quantize if some case. - -2003-02-23 10:29 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - general clean up and optimization. - - amplify band selection cleanup - - skip amplify-method 1 when the max_noise is already lesser than 1.0 - - clean up substep shaping in VBR mode - -2003-02-22 19:06 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - new optimized noise shaping strategy. - start with "sparse" noise_shaping_amp method and retry with the finer method, - when we continuously failed. - - This makes CBR/ABR coding quite faster. - - comment style update.(// -> /* */) - -2003-02-22 19:03 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - clean up init_gr_info - -2003-02-22 17:20 takehiro - - * config.guess, config.sub (takehiro-2002_05_07-experimental): - - sync with the mainline. - - update config files (by CISC) - -2003-02-22 17:01 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix VBR code for new quantize strategy. - -2003-02-22 02:21 olcios - - * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix, - USAGE, configMS.h, frontend/parse.c, include/lame.h, - libmp3lame/Makefile.am, libmp3lame/Makefile.in, - libmp3lame/VbrTag.c, libmp3lame/bitstream.c, - libmp3lame/gain_analysis.c, libmp3lame/gain_analysis.h, - libmp3lame/lame.c, libmp3lame/lame_global_flags.h, - libmp3lame/set_get.c, libmp3lame/util.h: - - ReplayGain analysis of a single file (RadioGain) - -2003-02-21 15:54 cisc - - * config.guess, config.sub: - - Update to latest config files to support more hosts/targets. - -2003-02-21 04:53 takehiro - - * libmp3lame/: machine.h, quantize.c, tables.c, tables.h, - takehiro.c (takehiro-2002_05_07-experimental): - - new quantization strategy. - - the code handling quantization factor moved to quantize_xrpow() and - quantize_xrpow_ISO(). This is preparing for "quantizing only the scalefactor - band whose q-factor is changed" and so on. - - now xrpow[] is constant. - -2003-02-21 04:50 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - clean up initialization - -2003-02-21 01:36 takehiro - - * libmp3lame/: mpglib_interface.c, util.h - (takehiro-2002_05_07-experimental): - - sync mainline. - - changed comment style (// -> /* */) by Robert. - - Extending mpglib by the option to return unclipped floating-point values of samples by olcios. - -2003-02-20 23:13 takehiro - - * libmp3lame/: takehiro.c, quantize_pvt.h - (takehiro-2002_05_07-experimental): - - optimized quantization - - remove QUANTFAC() macro. - - check the max value in quantization routine (loop hoisting) - -2003-02-20 22:43 takehiro - - * mpglib/: common.c, decode_i386.c, decode_i386.h, huffman.h, - interface.c, interface.h, l2tables.h, layer1.c, layer2.c, - layer2.h, layer3.c, layer3.h (takehiro-2002_05_07-experimental): - - sync mainline. - - changed comment style (// -> /* */) by Robert. - - Extending mpglib by the option to return unclipped floating-point values of samples by olcios. - -2003-02-19 19:46 olcios - - * libmp3lame/mpglib_interface.c, libmp3lame/util.h, - mpglib/decode_i386.c, mpglib/decode_i386.h, mpglib/interface.c, - mpglib/interface.h, mpglib/layer3.c, mpglib/layer3.h: - - Extending mpglib by the option to return unclipped floating-point values of samples. - -2003-02-19 16:40 takehiro - - * libmp3lame/: quantize.c, set_get.c - (takehiro-2002_05_07-experimental): - - ATH related tuning for ABR/CBR preset. - - ABR bit-allocation tuning on short blocks - -2003-02-19 12:14 takehiro - - * libmp3lame/presets.c: - - fix comment style. ( // -> /* */ ) - -2003-02-19 12:10 takehiro - - * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): - - cleanup and ABR 128-160kbps shortthreshold change. - -2003-02-19 10:05 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - fix comments - -2003-02-19 09:48 takehiro - - * libmp3lame/: encoder.c, tables.c, util.h - (takehiro-2002_05_07-experimental): - - remove PE FIR filter. It does not work now. - -2003-02-18 14:49 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - on short blocks, use subblock gain first, instead of scalefac_scale - -2003-02-18 14:46 takehiro - - * libmp3lame/: psymodel.c, quantize.c - (takehiro-2002_05_07-experimental): - - update PE calculation and pe based bit allocation(CBR,ABR) - do not spend too much on short blocks. - -2003-02-18 14:41 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - remove SNR parameter (attack position aware masking calculation code will replace this). - -2003-02-18 01:11 olcios - - * Makefile.DJGPP: - - Workaround for a problem with make clean, regarding long filenames on some systems. - -2003-02-17 01:02 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix threshold at [SBMAX_s-1] of short blocks - -2003-02-16 19:07 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - one and one more brand-new S(L-R) channel short block switching strategy - -2003-02-16 18:53 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - trivial clean up in bitpressure_strategy() - -2003-02-16 18:53 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix overflow in pulse-like signal detection. - -2003-02-16 18:46 bouvigne - - * libmp3lame/presets.c: - - cbr/abr presets (still not finished?) - -2003-02-16 18:40 takehiro - - * libmp3lame/: psymodel.c, tables.c - (takehiro-2002_05_07-experimental): - - ATH value scaling clean up and one more revert short block strategy... - -2003-02-16 18:07 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - clean up arround initialization of short blocks. - -2003-02-16 18:06 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - trivial clean up in inc_scalefac_scale() - -2003-02-16 18:05 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - better verbose mode printing - -2003-02-16 13:23 takehiro - - * libmp3lame/version.h (takehiro-2002_05_07-experimental): - - bump up alpha5 - -2003-02-16 13:22 takehiro - - * testcase.mp3 (takehiro-2002_05_07-experimental): - - update testcase - -2003-02-16 13:20 takehiro - - * frontend/parse.c, include/lame.h, libmp3lame/VbrTag.c, - libmp3lame/lame.c, libmp3lame/lame_global_flags.h, - libmp3lame/psymodel.c, libmp3lame/set_get.c, libmp3lame/tables.c - (takehiro-2002_05_07-experimental): - - ATH related code clean up (always use ATH type 4). - -2003-02-16 13:15 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - better noise estimation - -2003-02-16 13:14 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - optimized calc_xmin() - -2003-02-16 08:38 takehiro - - * libmp3lame/psymodel.c: - - PE calculation improvement (backported from experimental branch). - Better pe calculation for nspsytune. This brings - - better MS/LR switching - - better reservoir handling (brings better ABR/CBR result) - - I hope the trouble on "SeriousTrouble.wav" is partially fixed (not perfect ?). - -2003-02-16 08:25 takehiro - - * libmp3lame/quantize_pvt.h: - - fix build problem (calc_xmin() prototype fix) - -2003-02-16 08:22 takehiro - - * libmp3lame/quantize.c: - - fix one more subblock_gain handling code. - -2003-02-15 14:07 bouvigne - - * libmp3lame/quantize.c: - - init max_nonzero_coeff to 575 instead of 0 - -2003-02-14 17:41 bouvigne - - * libmp3lame/: l3side.h, quantize.c, quantize_pvt.c, takehiro.c: - - do not calc noise in upper 0 part - -2003-02-10 03:26 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix long->short masking threshold conversion (still experimental). - revert S(L-R) channel blocktype switching strategy. - 1st attempt of short block pre-echo prevention code(lessen masking before the surge on shortblocks, for preecho prevention). - -2003-02-10 03:21 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - verbose mode:added if it uses subblock gain or not. - -2003-02-09 18:01 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - one more tuning short block noise calculation - - max_noise handling fix. - - changed quantcomp_s and quamtcomp - - use quantcomp_s only for short blocks. (do not use for start/end) - -2003-02-09 17:43 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - reduce memory copy in best_huffman_divide() - -2003-02-09 16:46 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - oops, fix short block noise calculation... - -2003-02-09 16:41 takehiro - - * frontend/gtkanal.c, libmp3lame/lame-analysis.h, - libmp3lame/psymodel.c, libmp3lame/util.h - (takehiro-2002_05_07-experimental): - - changed mp3x "surge intensity" display. - - fix psymodel mis-enables the short blocks when MS stereo. - - changed short blcok setting strategy on the S(L-R) channel. - Although this brings better LR/MS handling for fatboy.wav et.al., this is not true idea but work arround. we should get better ns_msfix(). - - simplify the surge detection in psymodel.c - - added comments on psymodel.c for mp3x display and the window position. - -2003-02-09 16:36 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - trivial simplification - -2003-02-09 16:35 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - new calc noise for short blocks. - it calculates the sum of noise in 3 subblocks at same frequency region. - - I hope this makes --quantcomp hack obsolete. - -2003-02-09 15:19 takehiro - - * include/lame.h (takehiro-2002_05_07-experimental): - - sync main: comments update by Mark. - -2003-02-09 12:36 bouvigne - - * libmp3lame/quantize_pvt.c: - - revert speedup - -2003-02-09 01:25 markt - - * include/lame.h: - - added a comment about reading the file API - -2003-02-08 17:46 bouvigne - - * libmp3lame/: presets.c, version.h: - - presets - -2003-02-08 13:53 bouvigne - - * libmp3lame/quantize_pvt.c: - - small speedup - -2003-02-08 09:51 takehiro - - * frontend/main.c: - - trivial simplification - -2003-02-08 07:22 takehiro - - * include/lame.h (takehiro-2002_05_07-experimental): - - sync main line: comments about lame_init() - -2003-02-07 18:17 bouvigne - - * DEFINES: - - KLEMM_44 - -2003-02-06 20:04 markt - - * include/lame.h: - - updated comments about lame_init() from Kendrick Hamilton - -2003-02-06 06:29 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix analog silence detection - -2003-02-05 09:27 takehiro - - * testcase.mp3 (takehiro-2002_05_07-experimental): - - regen - -2003-02-05 09:26 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - fix subband filtering (always mono...) - -2003-02-04 18:27 takehiro - - * frontend/main.c (takehiro-2002_05_07-experimental): - - fix --keeptag option - -2003-02-04 17:16 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - oops, trivial mistake... - -2003-02-04 17:11 takehiro - - * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): - - some tuning arround attack threshold. not so far from good... - -2003-02-04 17:10 takehiro - - * libmp3lame/: psymodel.c, psymodel.h - (takehiro-2002_05_07-experimental): - - update comment and remove unused lines. - -2003-02-04 17:01 takehiro - - * testcase.mp3, libmp3lame/psymodel.c, libmp3lame/psymodel.h, - libmp3lame/tables.c, libmp3lame/util.h - (takehiro-2002_05_07-experimental): - - use subband filter sample to determine block type. - it still remains parameter tuning, but it works. - -2003-02-04 16:11 takehiro - - * libmp3lame/: encoder.c, newmdct.c, newmdct.h, psymodel.c, - psymodel.h, tables.c, tables.h, util.h - (takehiro-2002_05_07-experimental): - - prepare for using subband filtered samples to determine block switching. - This will archive faster, and better block switching. - - And using this, we can get more precise short block threshold calculation, I hope. - -2003-02-04 16:00 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix comment and trivial optimization. - -2003-02-04 15:59 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - regen - -2003-02-04 15:59 takehiro - - * configure (takehiro-2002_05_07-experimental): - - to avoid confusion, make version 4.00 - -2003-02-04 15:01 takehiro - - * frontend/: brhist.c, console.c, gtkanal.c, main.c, parse.c, - rtp.c, timestatus.c (takehiro-2002_05_07-experimental): - - sync with main - - comment fix // -> /* */ - - nogap related updates - -2003-02-04 13:18 takehiro - - * libmp3lame/lame.c, libmp3lame/util.h, include/lame.h - (takehiro-2002_05_07-experimental): - - sync main. - - remove coding_t - - update comment - -2003-02-03 18:41 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - remove unused code - -2003-02-03 18:40 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - sync with the head. - -2003-02-03 18:29 takehiro - - * frontend/: get_audio.c, main.h, parse.c - (takehiro-2002_05_07-experimental): - - added --keeptag option and clean up tag copy code. - currently it works only with ID3v1. - -2003-02-02 18:51 bouvigne - - * libmp3lame/version.h: - - bump alpha - -2003-02-02 18:50 bouvigne - - * libmp3lame/lame.c, libmp3lame/lame_global_flags.h, - include/lame.h, libmp3lame/presets.c, libmp3lame/set_get.c, - frontend/parse.c: - - preset medium - -2003-02-02 17:30 takehiro - - * frontend/main.c (takehiro-2002_05_07-experimental): - - keep id3tag when reencoding mp3(experimental). - 1. it sometimes mis-recognize the tag. (but this is the same behavior of madplay) - 2. we should add some option to enable/disable this function. - - after 2 is solved, I will backport it to the head branch. - -2003-02-02 17:15 takehiro - - * frontend/: get_audio.c, gtkanal.c - (takehiro-2002_05_07-experimental): - - trivial comment/style update - -2003-02-02 17:10 bouvigne - - * libmp3lame/: lame.c, util.c, util.h: - - removed KLEMM_44 - -2003-02-02 15:50 bouvigne - - * libmp3lame/: lame.c, util.h: - - removed useless structure (coding_t) - -2003-02-02 14:45 bouvigne - - * frontend/parse.c, include/lame.h, libmp3lame/presets.c: - - presets: standard should be fine, working on medium - -2003-02-02 10:15 bouvigne - - * libmp3lame/psymodel.c: - - comments regarding TMN and NMT (thank you Takehiro) - -2003-02-01 21:59 takehiro - - * libmp3lame/: encoder.c, lame.c, newmdct.c, util.h - (takehiro-2002_05_07-experimental): - - prepare for subband filter output to determine long/short block switching. - - subband filtering in next frame. - - encode delay setting - -2003-02-01 20:06 takehiro - - * frontend/parse.c (takehiro-2002_05_07-experimental): - - precise error message about nspsytune2 - -2003-02-01 11:49 takehiro - - * libmp3lame/newmdct.c (takehiro-2002_05_07-experimental): - - clean up and optimization. - -2003-01-30 12:13 takehiro - - * frontend/get_audio.c: - - bit better mp3 input file sync. but we need one more for Chris.mp3.... - -2003-01-30 08:48 markt - - * libmp3lame/: encoder.c, lame.c: - - - - Formula for the amount of data that had to be in the buffer - before it could be encoded was incorrect. Old formula - (for the polyphase filterbank) was: - - old formula: 286+576*(1+gfc->mode_gr) = 2014 (MPEG1) - - Correct formula is: 512+framesize -32 = 1632 - - Best way to see this is to go through window_subband() in newmdct.c - It access samples x[32*i] through x[510+32*i] for i=0..17. - - So our old condition was too conservative. - - However, the FFT still requires 1904 samples, so the - net change is just to lower the requirement from 2014 to 1904. - -2003-01-28 03:12 takehiro - - * libmp3lame/lame-analysis.h (takehiro-2002_05_07-experimental): - - fix build problem on not HAVE_GTK environment - -2003-01-28 00:29 markt - - * libmp3lame/lame.c: - - short blocks are coupled, even in regular stereo mode. - This is to fix bugs reported in several different hardware decoders. - see comments in lame.c - -2003-01-27 12:22 takehiro - - * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): - - added comments ... - -2003-01-27 11:39 takehiro - - * libmp3lame/VbrTag.c: - - fix warning(added return value) - -2003-01-26 17:37 takehiro - - * frontend/get_audio.c: - - added ID3tag v2 skipping function. - -2003-01-26 12:37 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - tuned long block PE calculation parameter. - -2003-01-26 12:09 bouvigne - - * libmp3lame/version.h: - - bumped alpha - -2003-01-26 12:08 bouvigne - - * frontend/parse.c, include/lame.h, libmp3lame/presets.c: - - presets (under testing) - -2003-01-26 12:02 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - tuned short block PE calculation parameter. - -2003-01-26 11:31 bouvigne - - * libmp3lame/lame.c: - - verbose - -2003-01-26 10:04 takehiro - - * libmp3lame/: takehiro.c, quantize_pvt.h - (takehiro-2002_05_07-experimental): - - fix wrong "const" declaration. - -2003-01-25 11:02 bouvigne - - * libmp3lame/: lame.c, quantize.c: - - changed -q mapping - -2003-01-24 19:26 bouvigne - - * doc/html/history.html: - - history - -2003-01-22 17:15 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - fix best_huffman_divide MPEG2 short block treatment. - This is the same bug in count_bits(). - -2003-01-22 15:38 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - remove inner loop iteration limit (age) and some simple optimization. - -2003-01-21 02:45 takehiro - - * frontend/: parse.c (takehiro-2002_05_07-experimental), parse.c: - - added \n in --preset help - -2003-01-20 18:09 bouvigne - - * frontend/parse.c, include/lame.h, libmp3lame/presets.c: - - presets (under testing) - -2003-01-19 15:55 bouvigne - - * frontend/parse.c, include/lame.h, libmp3lame/presets.c: - - presets (under testing) - -2003-01-19 09:13 takehiro - - * libmp3lame/: encoder.c, quantize_pvt.h, takehiro.c - (takehiro-2002_05_07-experimental): - - fix fatal bit-counting bug in MPEG2/2.5 short block. - -2003-01-19 06:30 takehiro - - * frontend/parse.c (takehiro-2002_05_07-experimental): - - oops, type mismatch... - -2003-01-18 14:44 takehiro - - * include/lame.h (takehiro-2002_05_07-experimental): - - added new API, lame_set_use_subblockgain() to set if it uses subblock gain or not. - -2003-01-18 14:42 takehiro - - * frontend/parse.c, libmp3lame/quantize.c, libmp3lame/set_get.c, - libmp3lame/util.h (takehiro-2002_05_07-experimental): - - added "--sfscale" and "--sbgain" options. - This is replacement of old ambiguous "-Z" option. - -2003-01-13 16:34 takehiro - - * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): - - use --preset insane when --preset 320 - -2003-01-13 13:19 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - 10th quantcomp method, based on 3rd method, but uses over_noise instead of tot_noise. - -2003-01-13 13:11 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix fatal bug which happens when the last partition is wider than the last scalefactor band. - -2003-01-13 11:46 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - fix "off by one" in short block masking calculation. - -2003-01-13 11:45 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - use automatic resample even when ABR. - -2003-01-13 11:34 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - changed DEBUGF -> printf (to fix debug build). - vorbis removing related fix. - -2003-01-13 08:53 takehiro - - * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): - - oops... fix auto short block switching threshold adjustment. - -2003-01-13 08:43 takehiro - - * frontend/parse.c (takehiro-2002_05_07-experimental): - - oops... fix --quantcomp option. - -2003-01-13 00:49 glessard - - * frontend/: get_audio.c, main.c, main.h, parse.c: - - NOGAP-related changes. - - added '-T' option to force VBR/INFO tag inclusion. - - moved a VBR/INFO tag inclusion decision to parse.c, eliminating the use - of a global variable across modules. - - fixed reading of multiple little-endian AIFF-C files in get_audio.c. For - those files, 'swapbytes' was getting toggled for each file opened in the - sequence, so only every other output file was correct. - -2003-01-12 15:18 takehiro - - * frontend/parse.c, include/lame.h, libmp3lame/set_get.c - (takehiro-2002_05_07-experimental): - - added --quantcomp option. - -2003-01-12 12:37 takehiro - - * libmp3lame/: VbrTag.c, lame_global_flags.h, util.c - (takehiro-2002_05_07-experimental): - - sync with the head arround VbrTag. - -2003-01-12 12:35 takehiro - - * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): - - ABR/CBR preset sync with the head branch. - -2003-01-12 12:33 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - trivial cleanup - -2003-01-11 18:40 bouvigne - - * libmp3lame/presets.c: - - low bitrates presets - -2003-01-11 17:56 markt - - * libmp3lame/: VbrTag.c, lame_global_flags.h, util.c: - - reorganized VBR tag initialization code so that it - could be reset/initialized several times - (for use when encoding in nogap mode) - -2003-01-11 17:42 markt - - * libmp3lame/lame_global_flags.h: - - removed comment within comment delimiter - -2003-01-11 17:41 markt - - * include/lame.h, libmp3lame/VbrTag.c, - libmp3lame/lame_global_flags.h: - - cleaned up some comments about VBR tags being written - to the mp3 file after internal data structures are free - (this has not been true for a long time) - - na - -2003-01-11 15:43 bouvigne - - * libmp3lame/presets.c: - - low bitrates presets - -2003-01-11 13:05 takehiro - - * libmp3lame/: encoder.c, quantize.c, quantize.h - (takehiro-2002_05_07-experimental): - - remove an unused argument of VBR_iteration() - -2003-01-11 12:55 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix mono ABR/VBR encoding - -2003-01-11 12:46 takehiro - - * libmp3lame/lame.c: - - fix ath curve initialization. - -2003-01-11 12:25 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix config print code - -2003-01-11 11:10 takehiro - - * frontend/rtp.c (takehiro-2002_05_07-experimental): - - sync with the head branch - - Include alloca.h if neccessary. (by Alex) - -2003-01-11 11:09 takehiro - - * frontend/parse.c, include/lame.h, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/set_get.c, - libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - sync with the head branch - - GB's Ability to change ath4 shape independantly from vbr_q - -2003-01-11 11:08 takehiro - - * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): - - sync with the head branch (GB's change, "Add the Info frame to the number of frames reported by the Info/vbr tag") - -2003-01-11 11:07 takehiro - - * USAGE (takehiro-2002_05_07-experimental): - - update bit. - -2003-01-11 11:06 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - use "safe" way of short block long->short threshold conversion - better ns_msfix by using the fatc that noise in sfb couldn't exceed its energy. - do not use ns_msfix when we used msfix. - do not long block msfix when the block IS short. - -2003-01-11 04:16 markt - - * frontend/main.c, libmp3lame/VbrTag.c: - - in nogap mode, with VBR tags, we were calling init_bitstream() - (which resets VBR tag data) before writing the VBR tag data. - This is now fixed, but there is still a bug when initializing the - VBR data for the 2nd (or more) encoding in the nogap series. - -2003-01-10 21:22 markt - - * frontend/parse.c: - - forgot a \n in the --longhelp documentation - -2003-01-10 20:18 markt - - * USAGE: - - note that --voice option is obsolete - -2003-01-10 20:12 markt - - * frontend/: main.c, main.h, parse.c: - - added the "--nogaptags" option. - - this will allow VBR tags even for gapless encoding. - The default behavoir is to disable tags for gapless encoding. - -2003-01-10 20:07 markt - - * frontend/parse.c, libmp3lame/VbrTag.c: - - Updated the TOC calculation in the VBR tag to also count - the size of the VBR tag itself. - - This is to make the VBR tag consistent with the recent change - in the VBR frame count (changed so that it also counts the - VBR tag as a frame) - -2003-01-10 19:06 takehiro - - * frontend/parse.c (takehiro-2002_05_07-experimental): - - fix usage message arround ns(-bass|-alto|-treble|-sfb21|msfix). - -2003-01-10 18:58 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - trivial cleanup (when JOINT_STEREO and no-psymodel, it is always MS stereo) - -2003-01-10 18:57 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix some initilization when ABR. - (It seems ATH-adjust type 3 does not works fine with ABR mode ...) - -2003-01-05 16:49 takehiro - - * libmp3lame/version.c (takehiro-2002_05_07-experimental): - - fix compiling error(oops, trivial mistake...) - -2003-01-05 16:36 takehiro - - * libmp3lame/: lame.c, psymodel.c, quantize.c, tables.c, util.h - (takehiro-2002_05_07-experimental): - - - use ns-(bass|alto|treble|sfb21) in psymodel. And now ATH values are not - affected by these values. - - - sfb21 aware pe(perceptual entropy) calculation. I hope it brings - better LR/MS switching, but CBR/ABR is now not good as it was because of this. - I'm afraid it needs overhaul.... - - - analog silence detection code is moved to pecalc_[ls] functions. - -2003-01-05 14:56 takehiro - - * libmp3lame/version.c (takehiro-2002_05_07-experimental): - - removed unused code - -2003-01-05 08:15 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - one more fix for inc_subblock_gain(). - and some clean up. - -2003-01-05 08:14 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - pe calculation of over 16kHz region. - -2003-01-05 07:22 takehiro - - * libmp3lame/: lame-analysis.h, quantize.h - (takehiro-2002_05_07-experimental): - - move set_frame_pinfo() definition to fix mp3x built - -2003-01-05 07:21 takehiro - - * frontend/gtkanal.c (takehiro-2002_05_07-experimental): - - remove unused code to fix mp3x built - -2003-01-05 04:28 takehiro - - * DEFINES (takehiro-2002_05_07-experimental): - - completely updated (from Alex's comment). - -2003-01-05 04:11 takehiro - - * libmp3lame/: bitstream.c, encoder.c, quantize.c, reservoir.c, - reservoir.h (takehiro-2002_05_07-experimental): - - - general clean up mainly arround reservoir. - - use faster and not exact quantizing method for the 1st step of VBR. - (It estimates scalefactor step roughly and not needed exactness) - -2003-01-05 03:36 takehiro - - * libmp3lame/machine.h (takehiro-2002_05_07-experimental): - - remove u_char definition (sync head branch) - -2003-01-02 18:42 bouvigne - - * libmp3lame/psymodel.c: - - In psymodel_init set blocktype_old to NORM_TYPE because the VBR header is long blocks. This might be the problem encountered in some WMP 6.4 - -2003-01-02 18:37 bouvigne - - * libmp3lame/VbrTag.c: - - Add the Info frame to the number of frames reported by the Info/vbr tag - -2003-01-02 18:30 bouvigne - - * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h, - vbrquantize.c: - - reduced 63 warnings to 55 under visual c++. Those were mainly differences between function prototypes in declarations and implementations. - -2003-01-02 18:27 bouvigne - - * libmp3lame/encoder.c, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/set_get.c, - libmp3lame/util.c, libmp3lame/util.h, frontend/parse.c, - include/lame.h: - - Ability to change ath4 shape independantly from vbr_q - -2003-01-01 16:14 aleidinger - - * libmp3lame/machine.h: - - Removed u_char typedefs, u_char is not used in the tree (according to grep -r u_char). - -2003-01-01 16:12 aleidinger - - * frontend/rtp.c: - - Include alloca.h if neccessary. - - Noticed by: Tomi Vainio - -2002-12-31 14:00 takehiro - - * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix, - libmp3lame/Makefile.am, libmp3lame/Makefile.in, - libmp3lame/libmp3lame.dsp, libmp3lame/libmp3lame_vc6.dsp - (takehiro-2002_05_07-experimental): - - vbrquantize.[ch] and quantize_pvt.c is merged into quantize.c - -2002-12-31 13:58 takehiro - - * libmp3lame/: bitstream.c, encoder.c, lame.c, lame_global_flags.h, - reservoir.c, tables.c, util.c, util.h, version.h - (takehiro-2002_05_07-experimental): - - general cleanup - gfp->VBR_mean_bitrate_kbps and gfp->brate is merged. - - init_bit_stream_w is moved to lame.c from bitstream.c - - FindNearestBitrate(), map2MP3Frequency(), SmpFrqIndex() - are moved to lame.c from util.c - - fix VBR lowest/highest bitrate in mono-mode - - now alpha 4 - -2002-12-31 13:56 takehiro - - * libmp3lame/: quantize.c, vbrquantize.c, vbrquantize.h, - quantize.h, quantize_pvt.c, quantize_pvt.h - (takehiro-2002_05_07-experimental): - - removed analog silence related code in calc_xmin(). - - ABR/CBR code integration. - caller of init_outer_loop() and calc_xmin() is moved to outer_loop() - - off by one fix of global_gain (from the mainline), in outer_loop() - - new vbr code. but still needs more fix. - remove unused code in VBR_prepare() - - vbrquantize.[ch] and quantize_pvt.c is merged into quantize.c - - one more inc_subblock_gain() fix. - -2002-12-31 13:53 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - some cleanup arround pointer. - - analog silence detection in psymodel.c. - - skip short block FFT calculation of joint stereo, if it is not needed. - -2002-12-29 16:48 takehiro - - * frontend/main.c, include/lame.h, libmp3lame/VbrTag.c, - libmp3lame/bitstream.c, libmp3lame/bitstream.h, - libmp3lame/encoder.c, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, - libmp3lame/quantize.c, libmp3lame/reservoir.c, - libmp3lame/set_get.c, libmp3lame/tables.c - (takehiro-2002_05_07-experimental): - - cleanups - - all vbr modes are into one. - - more initilization code organization - - experimental tuning of short block switching threshold in ABR presets. - -2002-12-29 16:44 takehiro - - * testcase.mp3 (takehiro-2002_05_07-experimental): - - update mainly due to long->short threshold convertion - -2002-12-29 09:09 takehiro - - * include/lame.h (takehiro-2002_05_07-experimental): - - follow new APIs - -2002-12-29 08:57 takehiro - - * libmp3lame/: VbrTag.c, bitstream.c, encoder.c, lame.c, - lame_global_flags.h, machine.h, psymodel.c, psymodel.h, tables.c, - tables.h, util.c, util.h, version.h - (takehiro-2002_05_07-experimental): - - general cleanups - - removed KLEMM_44 (I plan to replace the resampling code with ssrc) - - VBR/CBR/ABR related initialization cleanup - - moved initialization related code in lame.c/util.c -> tables.c - - most of "preset" settings are defaulted. - - experimenal tuning - - substep method and use_scalefac_scale setting are removed - from -q option mapping - -2002-12-29 08:51 takehiro - - * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): - - - simplify/removed not needed VBR code. - *** There is still problem which it assumes the quantization noise is - *** monotone function of the scalefactor(quantization factor). - -2002-12-29 08:49 takehiro - - * libmp3lame/: lame-analysis.h, quantize.c, quantize_pvt.c, - quantize_pvt.h, takehiro.c (takehiro-2002_05_07-experimental): - - - use athAdjust() always (in quantize.c) - - removed unused quantcomp_method - -2002-12-29 08:43 takehiro - - * frontend/parse.c (takehiro-2002_05_07-experimental): - - * follow API changes. - * clean up options. - added options - --shortthreshold - removed options - --r3mix, --phone, --voice, --radio, --tape, --cd, --studio, - --cwlimit, --nspsytune, - --vbr-old, --vbr-new, --vbr-mrth - --short - changed options - --allshort, --noshort (implemented by shortthreshold API) - -2002-12-29 08:40 takehiro - - * libmp3lame/Makefile.am, libmp3lame/Makefile.in, - libmp3lame/libmp3lame_vc6.dsp, libmp3lame/presets.c, - libmp3lame/set_get.c, Makefile.DJGPP, Makefile.MSVC, - Makefile.unix (takehiro-2002_05_07-experimental): - - presets.c is merged into set_get.c - API change - - CHANGED: expX -> "quantocomp_method" - - CHANGED: expZ -> "use_large_scalefac" - - REMOVED: cwlimit related APIs - - REMOVED: short blocks on/off/forced APIs - - NEW: short blocks switching threshold API - -2002-12-27 04:42 takehiro - - * libmp3lame/psymodel.c: - - use ATH value as short block masking lower limit. - -2002-12-27 04:21 takehiro - - * frontend/parse.c, include/lame.h, libmp3lame/set_get.c, - libmp3lame/version.h: - - new option --shortthreshold and bump up version number(alpha 8) - and new psymodel version(0.90) for ATHadjust aware psymodel - -2002-12-27 04:17 takehiro - - * libmp3lame/psymodel.c: - - fix assertion failure (oops, my mistake in ATH handling change) - -2002-12-26 05:43 takehiro - - * libmp3lame/: lame.c, psymodel.c, psymodel.h: - - cleanup psymodel initialization preparing for --shortthreshold option. - -2002-12-25 12:13 takehiro - - * libmp3lame/: psymodel.c, quantize.c, set_get.c, util.h, - vbrquantize.c: - - ATH handling fix and simplification. - - use ATH adjust in ns_msfix(), mask_add(), and masking lower limit calculation. - - all ATH adjust related thresholding(ns_msfix, quantcompare and scalefac_scale) is removed. - -2002-12-21 07:12 takehiro - - * libmp3lame/: psymodel.c, quantize.c, quantize_pvt.c, tables.c - (takehiro-2002_05_07-experimental): - - masking_lower related fix for shortblock ATH handling and clean up. - -2002-12-21 07:10 takehiro - - * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): - - trivial style change - -2002-12-21 05:52 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - trivial optimization (when joint stereo, it is always STEREO and channels_out = 2) - -2002-12-21 05:51 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix it uses LR threshold for MS when -m f - -2002-12-21 05:45 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - zero prevention (adding 1e-37) is not needed. - -2002-12-21 04:55 takehiro - - * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix - (takehiro-2002_05_07-experimental): - - fix for removing vorbis support - -2002-12-21 04:53 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - short block ATH scaling fix. - -2002-12-18 16:29 takehiro - - * libmp3lame/libmp3lame_vc6.dsp: - - removed tools.h - -2002-12-18 16:27 takehiro - - * libmp3lame/: Makefile.am, Makefile.in, debugscalefac.c, tools.c, - tools.h: - - remove unused files and regen Makefile - -2002-12-16 19:02 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix inc_subblock_gain() to properly handle sfb12 (16kHz over region) MDCT coefs. - -2002-12-16 18:46 takehiro - - * libmp3lame/quantize.c: - - oops, I checked in the wrong version... - -2002-12-16 18:45 takehiro - - * libmp3lame/quantize.c: - - fix inc_subblock_gain() to properly handle sfb12 (16kHz over region) MDCT coefs. - -2002-12-16 18:14 takehiro - - * libmp3lame/: psymodel.c, tables.c, util.h - (takehiro-2002_05_07-experimental): - - initial attempt to long->short masking threshold conversion - fix FFT routine selection code. - - adjust masking threshold scaling for VBR. - - fix ATH handling for long block masking threshold. - -2002-12-16 18:10 takehiro - - * libmp3lame/: encoder.c, lame-analysis.h - (takehiro-2002_05_07-experimental): - - mp3x displays MS/LR masking pe difference - -2002-12-15 17:46 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - cleanup related removing vbr-old - -2002-12-15 17:39 takehiro - - * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): - - cleanup related removing vbr-old - -2002-12-15 17:37 takehiro - - * libmp3lame/lame_global_flags.h - (takehiro-2002_05_07-experimental): - - remove an unused variable - -2002-12-15 17:36 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix short block scaling for ATH handling - -2002-12-15 16:25 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix fatal short block ATH handling... - -2002-12-15 12:56 bouvigne - - * libmp3lame/lame.c, frontend/parse.c: - - warning about alpha versions - -2002-12-15 11:59 takehiro - - * ACM/ACMStream.cpp: - - fix access violation when LAME failed to initilize. - I hope this fixes BUG ID 646894 (at sf.net). - -2002-12-15 11:11 takehiro - - * libmp3lame/lame.c: - - fix warning (reported at sf.net by krick.) - -2002-12-15 11:10 takehiro - - * libmp3lame/: util.h, takehiro.c: - - fix warning (reported at sf.net by krick. - -2002-12-15 10:07 takehiro - - * libmp3lame/: presets.c, quantize.c - (takehiro-2002_05_07-experimental): - - remove vbr-old and its presets - -2002-12-15 09:47 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - adjust masking threshold for new mask_add() strategy. - -2002-12-15 09:11 takehiro - - * libmp3lame/lame.c: - - fix -q0 convined with --substep x option. - -2002-12-15 08:56 takehiro - - * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix: - - fix for vorbis support remove (I hope) - -2002-12-14 19:19 robert - - * ChangeLog, Makefile.MSVC, lame.bat, libmp3lame/encoder.c, - libmp3lame/lame.c, libmp3lame/quantize.c, libmp3lame/util.c, - misc/lame4dos.bat, misc/mlame: - - removed my email address - -2002-12-14 18:56 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix for ATH handling and short block VBR threshold. - -2002-12-14 17:38 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - more fix for msfix and its comment. - -2002-12-14 11:08 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix better ns_msfix (and better MS/LR switching). - -2002-12-14 08:01 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix msfix for symmetric L/R treatment. - -2002-12-13 17:48 takehiro - - * libmp3lame/quantize.c: - - off by one fix for global_gain. - -2002-12-13 17:42 takehiro - - * libmp3lame/: encoder.h, psymodel.c, quantize.c, set_get.c, - tables.c, util.h, vbrquantize.c - (takehiro-2002_05_07-experimental): - - ATH adjustment related code cleanup (for mostly preset). - and possible fix for "global_gain > 255" (backport from mainline). - -2002-12-13 16:58 takehiro - - * configure, frontend/main.h, libmp3lame/Makefile.in: - - remove vorbis support and regen. - -2002-12-13 16:54 takehiro - - * configure.in, config.h.in, frontend/get_audio.c, frontend/main.c, - frontend/parse.c, libmp3lame/Makefile.am, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/set_get.c, - libmp3lame/vorbis_interface.c: - - remove vorbis support. - -2002-12-13 14:34 takehiro - - * libmp3lame/lame.c: - - fix for 64bit environment, reported by Tomi Vainio - -2002-12-09 19:00 bouvigne - - * libmp3lame/: quantize.c, version.h: - - fixed the quant_comp problem (probably introduced by me) - so bump the alpha version number - -2002-12-08 17:40 takehiro - - * libmp3lame/version.h: - - now 3.94 alpha 6 - - changed default block switching threshold - - fixed mpglib crash. - -2002-12-08 17:35 takehiro - - * libmp3lame/psymodel.c: - - changed long/short block switching threshold. - -2002-12-08 17:23 takehiro - - * testcase.mp3: - - new testcase for the new default cutoff frequency. - -2002-12-08 17:07 takehiro - - * mpglib/interface.c: - - null pointer check patch from Peter Pawlowski , to prevent the random crash. - -2002-12-08 17:02 takehiro - - * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.am, - Makefile.in, Makefile.unix, configMS.h, configure, configure.in, - testcase.mp3, frontend/brhist.c, frontend/brhist.h, - frontend/console.c, frontend/console.h, frontend/get_audio.c, - frontend/get_audio.h, frontend/gpkplotting.h, frontend/gtkanal.c, - frontend/gtkanal.h, frontend/lametime.c, frontend/lametime.h, - frontend/main.c, frontend/main.h, frontend/parse.c, - frontend/parse.h, frontend/portableio.h, frontend/rtp.c, - frontend/rtp.h, frontend/timestatus.c, frontend/timestatus.h, - include/lame.h, libmp3lame/Makefile.am, libmp3lame/Makefile.in, - libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, libmp3lame/bitstream.c, - libmp3lame/bitstream.h, libmp3lame/encoder.c, - libmp3lame/encoder.h, libmp3lame/fft.c, libmp3lame/fft.h, - libmp3lame/gain_analysis.c, libmp3lame/gain_analysis.h, - libmp3lame/id3tag.h, libmp3lame/l3side.h, - libmp3lame/lame-analysis.h, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/libmp3lame.dsp, - libmp3lame/machine.h, libmp3lame/mpglib_interface.c, - libmp3lame/newmdct.c, libmp3lame/newmdct.h, libmp3lame/presets.c, - libmp3lame/psymodel.c, libmp3lame/psymodel.h, - libmp3lame/quantize.c, libmp3lame/quantize.h, - libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, - libmp3lame/reservoir.c, libmp3lame/reservoir.h, - libmp3lame/set_get.c, libmp3lame/tables.c, libmp3lame/tables.h, - libmp3lame/takehiro.c, libmp3lame/util.c, libmp3lame/util.h, - libmp3lame/vbrquantize.c, libmp3lame/vbrquantize.h, - libmp3lame/version.c, libmp3lame/version.h, - libmp3lame/vorbis_interface.c, libmp3lame/i386/Makefile.am, - libmp3lame/i386/Makefile.in, mpglib/common.c, mpglib/common.h, - mpglib/dct64_i386.h, mpglib/decode_i386.h, mpglib/huffman.h, - mpglib/interface.c, mpglib/interface.h, mpglib/l2tables.h, - mpglib/layer1.c, mpglib/layer1.h, mpglib/layer2.c, - mpglib/layer2.h, mpglib/layer3.c, mpglib/layer3.h, - mpglib/mpg123.h, mpglib/mpglib.h, mpglib/tabinit.h: - - overwrite by takehiro_stable branch. - -2002-12-08 16:59 takehiro - - * mac/.cvsignore: - - added - -2002-12-02 20:26 bouvigne - - * libmp3lame/lame.c, libmp3lame/lame_global_flags.h, - libmp3lame/presets.c, libmp3lame/quantize.c, - libmp3lame/set_get.c, libmp3lame/util.h, - libmp3lame/vbrquantize.c, include/lame.h, frontend/parse.c - (takehiro-stable-2002_10_15): - - quant_comp and quant_comp_short - -2002-12-01 17:47 takehiro - - * libmp3lame/version.h (takehiro-stable-2002_10_15): - - now alpha4 - - fix -q0 and -q1 - - -X and -Z option update - - I think we should "-X1,0" as default for ABR/CBR/VBR-old, including all presets. (except fast presets) - please test and tell your result. - -2002-12-01 17:43 takehiro - - * frontend/parse.c, libmp3lame/lame.c, libmp3lame/quantize.c - (takehiro-stable-2002_10_15): - - added "-Z -1" to enable scalefactor scale only(disable subblock gain) - -2002-12-01 16:32 aleidinger - - * ChangeLog: - - update for 3.93.1 - -2002-12-01 16:18 aleidinger - - * configure: - - regen - -2002-12-01 16:15 aleidinger - - * configure.in: - - change version to 3.93.1 - -2002-12-01 16:12 aleidinger - - * configure: - - regen - -2002-12-01 16:10 aleidinger - - * doc/html/history.html: - - sync with webpages - -2002-12-01 16:06 aleidinger - - * configure.in: - - Check for socket() in libsocket if it isn't in libc so rtp can get compiled - on Solaris. - - Noticed by: "Niki W. Waibel" - - While I'm here, bail out if some other functions aren't there. - -2002-12-01 15:42 takehiro - - * libmp3lame/lame.c (takehiro-stable-2002_10_15): - - fix -q0 and -q1. This makes -q0 very very slow. - -2002-12-01 15:36 takehiro - - * frontend/parse.c, include/lame.h, libmp3lame/quantize.c, - libmp3lame/set_get.c, libmp3lame/vbrquantize.c - (takehiro-stable-2002_10_15): - - now you can specify the method how to compare the quantization - for long/short block independently by -X option.(-X n,m) - -2002-12-01 13:18 takehiro - - * libmp3lame/set_get.c (takehiro-stable-2002_10_15): - - fix comment - -2002-11-30 18:18 bouvigne - - * libmp3lame/version.h: - - version - -2002-11-29 17:07 bouvigne - - * Dll/BladeMP3EncDLL.def: - - dll exports - -2002-11-28 21:05 bouvigne - - * doc/html/: history.html, index.html: - - docs - -2002-11-28 18:06 bouvigne - - * libmp3lame/version.h: - - go back to 3.93 - -2002-11-28 18:04 bouvigne - - * libmp3lame/lame.c: - - revert back q0 to q1 state (due to reports about quality problems) - -2002-11-26 15:45 takehiro - - * libmp3lame/version.h (takehiro-stable-2002_10_15): - - alpha4 solves the fatal error in outer_loop(). it should not select the - data whose global_gain is greater than 255. - -2002-11-25 18:00 bouvigne - - * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: - - sync presets with the executable front-end and libmp3lame - -2002-11-25 01:36 takehiro - - * libmp3lame/: Makefile.am, Makefile.in - (takehiro-stable-2002_10_15): - - fix build problem - -2002-11-24 18:37 takehiro - - * libmp3lame/quantize.c (takehiro-stable-2002_10_15): - - Fix not to select the data whose global_gain is greater than 255. - and inner_loop() manual inlining. - This fix is based on the R.A.F.'s bug report at HA. Thanx R.A.F. - -2002-11-23 18:54 bouvigne - - * libmp3lame/psymodel.c: - - quick fix of nspsytune - -2002-11-17 16:39 takehiro - - * libmp3lame/.indent.pro (takehiro-stable-2002_10_15): - - I forgot to sync this with the head branch. - -2002-11-17 16:34 takehiro - - * Makefile.in, configure, Dll/Makefile.in, libmp3lame/Makefile.in - (takehiro-stable-2002_10_15): - - regen (by hand :p) - -2002-11-17 16:33 takehiro - - * ChangeLog, ChangeLog.header, Makefile.am, configure.in, - Dll/Makefile.am, libmp3lame/Makefile.am - (takehiro-stable-2002_10_15): - - sync with head branch (releasing 3.93 related things). - -2002-11-17 15:59 takehiro - - * doc/html/history.html (takehiro-stable-2002_10_15): - - copy from webpage/history.html - -2002-11-17 11:11 aleidinger - - * configure.in, libmp3lame/version.h: - - We are now at 3.94alpha... - -2002-11-17 10:41 aleidinger - - * doc/html/history.html: - - Copy history from webpage. - -2002-11-17 10:29 aleidinger - - * ChangeLog: - - ChangeLog for 3.93. - -2002-11-17 10:25 aleidinger - - * Dll/Makefile.in, Makefile.in: - - regen - -2002-11-17 10:24 aleidinger - - * Makefile.am: - - Add lame.dsw. - -2002-11-17 10:23 aleidinger - - * Dll/Makefile.am: - - Oops... add missing backslash. - -2002-11-17 10:18 aleidinger - - * Dll/Makefile.in, libmp3lame/Makefile.in: - - regen - -2002-11-17 10:16 aleidinger - - * libmp3lame/Makefile.am: - - Add gain_analysis.[ch] to the distributed files. - -2002-11-17 10:11 aleidinger - - * Dll/Makefile.am: - - Add some missing files. - -2002-11-17 10:09 aleidinger - - * configure: - - gtk12-config -> gtk-config - -2002-11-17 10:05 aleidinger - - * testcase.mp3: - - "Official" testcase.mp3 for this release. - -2002-11-17 09:51 aleidinger - - * ChangeLog.header: - - Add some information about branches. - -2002-11-17 09:46 aleidinger - - * libmp3lame/version.h: - - We are at 3.93-RELEASE now... - -2002-11-17 09:45 aleidinger - - * doc/man/lame.1, frontend/parse.c: - - Warn about fast presets. - -2002-11-16 13:07 takehiro - - * configure (takehiro-2002_05_07-experimental): - - remove vorbis related things - -2002-11-16 12:44 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - removed vorbis related thing - -2002-11-16 10:07 bouvigne - - * doc/html/presets.html: - - warning about fast presets - -2002-11-13 20:56 bouvigne - - * libmp3lame/: lame.c, presets.c, util.c, util.h - (takehiro-stable-2002_10_15): - - change of the default lowpass values (will break testcases) - -2002-11-13 20:24 bouvigne - - * libmp3lame/: lame.c, presets.c: - - rollback of lowpass change before release - -2002-11-10 12:41 takehiro - - * libmp3lame/: encoder.c, psymodel.c, quantize.c - (takehiro-2002_05_07-experimental): - - prepare for intensity-stereo. - -2002-11-10 12:40 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - some trivial optimizations and make some functions static. - -2002-11-10 12:39 takehiro - - * libmp3lame/machine.h (takehiro-2002_05_07-experimental): - - trivial macro fix - -2002-11-10 12:38 takehiro - - * libmp3lame/newmdct.c (takehiro-2002_05_07-experimental): - - optimize subband filter (lowpass/highpass). - -2002-11-10 12:36 takehiro - - * libmp3lame/i386/: choose_table.nas, fft3dn.nas - (takehiro-2002_05_07-experimental): - - align -> loopalign - better labeling - -2002-11-10 08:24 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - - more db2pow() macro use - - remove traditional code(which do nothing) - -2002-11-10 08:23 takehiro - - * libmp3lame/psymodel.h (takehiro-2002_05_07-experimental): - - fix warning - -2002-11-10 07:55 takehiro - - * frontend/main.c, frontend/parse.c, libmp3lame/Makefile.am, - libmp3lame/Makefile.in, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/set_get.c, - libmp3lame/util.h, libmp3lame/vorbis_interface.c - (takehiro-2002_05_07-experimental): - - remove vorbis support, which is too much outdated. - -2002-11-10 07:53 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - trivial optimization - -2002-11-09 18:45 takehiro - - * libmp3lame/: psymodel.c, tables.c - (takehiro-2002_05_07-experimental): - - - optimize ATH handling in mask_add() by changing ATH.cb[] scaling. - - more faster long block masking threshold calculation. - -2002-11-09 18:43 takehiro - - * libmp3lame/: encoder.c, takehiro.c - (takehiro-2002_05_07-experimental): - - cleanup START/STOP type bit calculation - -2002-11-09 18:42 takehiro - - * libmp3lame/i386/: choose_table.nas, nasm.h - (takehiro-2002_05_07-experimental): - - some sync with GOGO. - -2002-11-09 12:34 takehiro - - * libmp3lame/: encoder.c, machine.h, quantize.c, set_get.c, - tables.c (takehiro-2002_05_07-experimental): - - clean up decibel -> power conversion - -2002-11-09 12:33 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - clean up FFT related code. - more acculate condition check whether we need short block masking calculation. - FIR filter loop unrolling - -2002-11-07 18:47 bouvigne - - * libmp3lame/: lame.c, presets.c, util.c, util.h: - - change of the default lowpass values (will break testcases) - -2002-11-04 16:59 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - optimize long block masking ratio calculation (partition -> scalefactor band transformation) - -2002-11-04 16:49 takehiro - - * testcase.mp3, libmp3lame/psymodel.c - (takehiro-2002_05_07-experimental): - - fix short block masking calcultion(patition to scalefactor band transformation) - and trivial cleanups, as is always :) - -2002-11-04 16:00 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix mp3x FFT display. - -2002-11-04 15:56 takehiro - - * testcase.mp3, libmp3lame/encoder.c, libmp3lame/psymodel.c, - libmp3lame/reservoir.c, libmp3lame/version.h - (takehiro-2002_05_07-experimental): - - now here goes alpha 2. - - some trivial optimizaions and cleanups on psymodel. - - cleanup mp3x arround - -2002-11-04 13:53 takehiro - - * libmp3lame/: VbrTag.h, encoder.c, lame-analysis.h, machine.h, - psymodel.c, psymodel.h, quantize.c, quantize.h, quantize_pvt.c, - quantize_pvt.h, set_get.c, tables.c, takehiro.c, util.h - (takehiro-2002_05_07-experimental): - - large cleanup mainly arround psymodel (continue) - - removed all temporary masking related code, because now I found all the - temporal masking code is completely messed up. - - - do not calculate short block masking ratio when it is not needed. - - - mp3x FFT energy display fix. - - - better perceptual entropy calculation, by using ATH. - - - some include file clean up. - - - some trivial code cleanup arround quantize/bit counting. - -2002-11-04 13:49 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix -q 4 setting. - -2002-11-04 13:48 takehiro - - * frontend/gtkanal.c (takehiro-2002_05_07-experimental): - - fix FFT energy display. - -2002-11-03 17:56 takehiro - - * testcase.mp3 (takehiro-2002_05_07-experimental): - - regen with new psymodel, which increases encode delay. - -2002-11-03 17:30 takehiro - - * libmp3lame/: Makefile.am, Makefile.in, encoder.c, encoder.h, - l3side.h, lame-analysis.h, lame.c, lame_global_flags.h, - newmdct.c, psymodel.c, psymodel.h, quantize.c, quantize_pvt.h, - set_get.c, tables.c, takehiro.c, util.c, util.h, vbrquantize.c - (takehiro-2002_05_07-experimental): - - large cleanup, mainly on PSYMODEL calculation. - - it calculates masking ratio/pe/tot_energy/block_type/frame_type next FRAME, - not next GRANULE. it increases the encoding delay, but code is very simple. - - - "allow different block_type in each channel (L/R)" could be archived even - when joint stereo. - - - l3side.h is merged into util.h - - - MPEG2/2.5, mp3x's display may corrupt (not tested much). - -2002-11-03 17:23 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - trivial - -2002-11-03 17:22 takehiro - - * frontend/: gpkplotting.c, gpkplotting.h, gtkanal.c - (takehiro-2002_05_07-experimental): - - fix for mp3x MDCT original value display - -2002-11-03 17:00 takehiro - - * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): - - fix abr preset - -2002-11-03 16:55 takehiro - - * libmp3lame/util.c (takehiro-2002_05_07-experimental): - - fix for not --enable-all-float - -2002-11-02 17:47 takehiro - - * libmp3lame/: lame.c, util.h (takehiro-2002_05_07-experimental): - - trivial cleanup - -2002-11-02 17:30 takehiro - - * libmp3lame/: encoder.c, lame.c, presets.c, psymodel.c, - quantize.c, quantize_pvt.h, set_get.c, tables.c, util.h, - vbrquantize.c (takehiro-2002_05_07-experimental): - - cleanup arround preset. - - merged adaptive ATH and msfix parameter into "normal" setting. - - simplified how to compare the quantization/scalefactor. - -2002-11-02 17:26 takehiro - - * frontend/parse.c (takehiro-2002_05_07-experimental): - - remove unused prototype. - -2002-11-02 15:50 takehiro - - * libmp3lame/: encoder.c, set_get.c, util.h, vbrquantize.c - (takehiro-2002_05_07-experimental): - - remove meaningless variables in preset modes. - -2002-11-02 12:26 takehiro - - * libmp3lame/: VbrTag.c, lame.c, presets.c, quantize.c, tables.c, - util.c, util.h, vbrquantize.c (takehiro-2002_05_07-experimental): - - - -q option remapping. - new very old(-3.92) old(3.93) - 9 8,9 8,9 - 8 7 7 - 7 5,6 5,6 - 5,6 2,3,4 3,4 - 4 2 + --substep 5 3 + --substep 5 - 3 2 + --substep 7 3 + --substep 7 - 2 cannot emulate 2 + --substep 7 - 1 cannot emulate 1 + --substep 7 - 0 cannot emulate 0 + --substep 7 - - - fast_log2() optimization and cleanup. - -2002-11-02 12:18 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - ATH adjustment aware masking calculation in mask_add() and ms_fix(). - -2002-10-31 14:56 takehiro - - * libmp3lame/tables.c (takehiro-2002_05_07-experimental): - - trivial cleanup - -2002-10-31 14:27 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - some precision fix(maybe) - -2002-10-31 14:26 takehiro - - * doc/html/presets.html (takehiro-2002_05_07-experimental): - - sync with mainline and added some DM presets. - -2002-10-28 11:25 takehiro - - * libmp3lame/: encoder.c, psymodel.h, psymodel.c - (takehiro-2002_05_07-experimental): - - now psymodel never return error. - -2002-10-28 11:15 takehiro - - * testcase.mp3, libmp3lame/bitstream.c, libmp3lame/encoder.c, - libmp3lame/l3side.h, libmp3lame/lame.c, libmp3lame/machine.h, - libmp3lame/newmdct.c, libmp3lame/psymodel.c, - libmp3lame/psymodel.h, libmp3lame/quantize.c, - libmp3lame/quantize.h, libmp3lame/quantize_pvt.c, - libmp3lame/quantize_pvt.h, libmp3lame/reservoir.c, - libmp3lame/tables.c, libmp3lame/tables.h, libmp3lame/takehiro.c, - libmp3lame/util.h, libmp3lame/vbrquantize.c, - libmp3lame/vbrquantize.h (takehiro-2002_05_07-experimental): - - changed FLOAT8 -> FLOAT (except one subband filter coefs, which is defined - as "double" in spec). - -2002-10-28 11:12 takehiro - - * mpglib/layer3.c (takehiro-2002_05_07-experimental): - - fix mpglib crash bug, from Mathew Hendry. - -2002-10-28 11:09 takehiro - - * frontend/portableio.h (takehiro-2002_05_07-experimental): - - remove cvs log. - -2002-10-28 10:43 takehiro - - * libmp3lame/: encoder.c, psymodel.c, psymodel.h, tables.c, util.h - (takehiro-2002_05_07-experimental): - - remove unused variables - -2002-10-28 10:01 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix long/short typo. - -2002-10-28 10:00 takehiro - - * include/lame.h (takehiro-2002_05_07-experimental): - - added new preset definition - -2002-10-27 14:37 aleidinger - - * configure: - - regen - -2002-10-27 14:36 aleidinger - - * configure.in: - - Forced commit: last commit was - remove -funroll-loops as suggested in the nearby comment Noticed by: takehiro - -2002-10-27 14:32 aleidinger - - * configure.in: - - remove options as suggested in the nearby comment; Noticed by: takehiro - -2002-10-27 13:38 takehiro - - * libmp3lame/: encoder.c, lame.c, lame_global_flags.h, machine.h, - newmdct.c, newmdct.h, presets.c, psymodel.c, psymodel.h, - quantize.c, set_get.c, tables.c, util.h - (takehiro-2002_05_07-experimental): - - large update. - - sync mainline, - * side channel sparsing - * new presets, dm-radio and so on. - * blocktype histgram - * fix arround FLOAT_MAX - * tuning substep noise shaping start frequency - - - large code simplification - * cod_info initialization code is moved to encoder.c - * faster psymodel calculation. - -2002-10-27 13:33 takehiro - - * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): - - sync mainline - - fix arround sfb21 and smoothing method 2 - -2002-10-27 13:32 takehiro - - * libmp3lame/version.h (takehiro-2002_05_07-experimental): - - To avoid confusing, named it as lame4.0 - -2002-10-27 13:30 takehiro - - * frontend/: get_audio.c, get_audio.h, main.c, main.h, mp3rtp.c, - mp3x.c, parse.c, parse.h, timestatus.h - (takehiro-2002_05_07-experimental): - - sync mainline - - fix arround PATHNAMELEN - - new presets - - fix warnings - - fix --silent option - - new option "side channel sparsing" - -2002-10-27 13:29 takehiro - - * frontend/brhist.c (takehiro-2002_05_07-experimental): - - - sync mainline (block type histgram, build fix for cygwin) - -2002-10-27 13:26 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen - -2002-10-27 13:26 takehiro - - * configure.in, doc/html/Makefile.am, doc/html/Makefile.in, - doc/html/contributors.html, doc/html/index.html, doc/man/lame.1 - (takehiro-2002_05_07-experimental): - - sync mainline - -2002-10-27 12:19 robert - - * frontend/portableio.h (takehiro-stable-2002_10_15): - - do we need logging of cvs commits in source files? - small fixes in comments due to cvs log entries - -2002-10-27 08:17 takehiro - - * libmp3lame/version.h (takehiro-stable-2002_10_15): - - bump up version number. alpha3 contains - - tuning substep noise shpaing (by me, Takehiro) - - added side channel sparsing (by Robert) - -2002-10-26 20:41 robert - - * configMS.h, frontend/amiga_mpega.c, frontend/brhist.c, - frontend/brhist.h, frontend/console.c, frontend/console.h, - frontend/get_audio.c, frontend/get_audio.h, - frontend/gpkplotting.c, frontend/gpkplotting.h, - frontend/gtkanal.c, frontend/gtkanal.h, frontend/lametime.c, - frontend/lametime.h, frontend/main.c, frontend/main.h, - frontend/mp3rtp.c, frontend/mp3x.c, frontend/parse.c, - frontend/parse.h, frontend/portableio.c, frontend/portableio.h, - frontend/rtp.c, frontend/rtp.h, frontend/timestatus.c, - frontend/timestatus.h, include/lame.h, libmp3lame/VbrTag.c, - libmp3lame/VbrTag.h, libmp3lame/bitstream.c, - libmp3lame/bitstream.h, libmp3lame/debugscalefac.c, - libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/fft.c, - libmp3lame/fft.h, libmp3lame/gain_analysis.c, - libmp3lame/gain_analysis.h, libmp3lame/id3tag.c, - libmp3lame/id3tag.h, libmp3lame/l3side.h, - libmp3lame/lame-analysis.h, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/machine.h, - libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, - libmp3lame/newmdct.h, libmp3lame/presets.c, - libmp3lame/psymodel.c, libmp3lame/psymodel.h, - libmp3lame/quantize.c, libmp3lame/quantize.h, - libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, - libmp3lame/reservoir.c, libmp3lame/reservoir.h, - libmp3lame/set_get.c, libmp3lame/tables.c, libmp3lame/tables.h, - libmp3lame/takehiro.c, libmp3lame/util.c, libmp3lame/util.h, - libmp3lame/vbrquantize.c, libmp3lame/vbrquantize.h, - libmp3lame/version.c, libmp3lame/version.h, - libmp3lame/vorbis_interface.c, mpglib/common.c, mpglib/common.h, - mpglib/dct64_i386.c, mpglib/dct64_i386.h, mpglib/decode_i386.c, - mpglib/decode_i386.h, mpglib/huffman.h, mpglib/interface.c, - mpglib/interface.h, mpglib/l2tables.h, mpglib/layer1.c, - mpglib/layer1.h, mpglib/layer2.c, mpglib/layer2.h, - mpglib/layer3.c, mpglib/layer3.h, mpglib/mpg123.h, - mpglib/mpglib.h, mpglib/tabinit.c, mpglib/tabinit.h - (takehiro-stable-2002_10_15): - - changed C++ comments into C style comments for - configMS.h - include/*.h - frontend/*.[ch] - mpglib/*.[ch] - libmp3lame/*.[ch] - -2002-10-26 18:53 takehiro - - * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): - - regen - -2002-10-26 18:52 takehiro - - * libmp3lame/: Makefile.am, debugscalefac.c - (takehiro-2002_05_07-experimental): - - remove unused debugscalefac.c - -2002-10-26 18:51 takehiro - - * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): - - fix build problem - -2002-10-26 16:48 takehiro - - * libmp3lame/presets.c (takehiro-stable-2002_10_15): - - added interchannel masking to dm-radio-fast preset, too. - -2002-10-26 16:47 takehiro - - * libmp3lame/presets.c (takehiro-stable-2002_10_15): - - lower bitrate adjustment and added inter-channel masking for dm-radio preset. - -2002-10-26 16:32 takehiro - - * libmp3lame/quantize.c (takehiro-stable-2002_10_15): - - tuned substep-noise-shaping start frequency of short block (--substep 5). - -2002-10-26 12:31 takehiro - - * libmp3lame/quantize.c (takehiro-stable-2002_10_15): - - fix for not C99 C compiler - -2002-10-26 12:29 takehiro - - * configure (takehiro-stable-2002_10_15): - - regen - -2002-10-26 12:29 takehiro - - * configure.in (takehiro-stable-2002_10_15): - - sync with mainline and added fix for "-funroll-loops" bug on gcc3.0.* - -2002-10-26 12:20 takehiro - - * frontend/parse.c (takehiro-stable-2002_10_15): - - sync mainline... --silent + input from stdin fix. - -2002-10-24 00:04 robert - - * libmp3lame/: vbrquantize.c (takehiro-stable-2002_10_15), - vbrquantize.c: - - bug fix in vbr-new - possible division by zero - -2002-10-23 23:43 robert - - * frontend/parse.c, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/quantize.c, - libmp3lame/set_get.c, libmp3lame/util.h - (takehiro-stable-2002_10_15): - - added mid/side channel sparsing - --ms-sparsing n | n=0 disable / n=1 mode 1 / n=2 mode 2 - --ms-sparse_low x | default 9 dB - --ms-sparse_high x | default 3 dB - -2002-10-21 01:27 markt - - * frontend/parse.c: - - truely silent when input is stdin patch committed - -2002-10-20 15:38 takehiro - - * libmp3lame/psymodel.c (takehiro-stable-2002_10_15): - - fix possible float exception - -2002-10-20 15:36 takehiro - - * libmp3lame/version.h (takehiro-stable-2002_10_15): - - bump up the alpha2 - -2002-10-20 15:35 takehiro - - * libmp3lame/psymodel.c (takehiro-stable-2002_10_15): - - fix minor boundary check and remove unused variable. - -2002-10-20 13:42 takehiro - - * doc/: html/Makefile.am, html/Makefile.in, html/contributors.html, - html/index.html, html/presets.html, man/lame.1 - (takehiro-stable-2002_10_15): - - sync with mainline - -2002-10-20 13:31 takehiro - - * libmp3lame/quantize.c (takehiro-stable-2002_10_15): - - work arround of --substep for Tom's Diner. - -2002-10-20 13:09 takehiro - - * libmp3lame/psymodel.c (takehiro-stable-2002_10_15): - - faster mask_add() - -2002-10-20 12:31 takehiro - - * libmp3lame/: psymodel.c, quantize_pvt.c, util.h - (takehiro-stable-2002_10_15): - - more optimized usage of FAST_LOG(). - -2002-10-20 11:39 takehiro - - * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, - libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, - libmp3lame/set_get.c (takehiro-stable-2002_10_15): - - removed mixed block related switches, which is "not" as stable as releasing. - fix block type decision code when LR/MS change occurs. - -2002-10-20 08:41 takehiro - - * libmp3lame/machine.h (takehiro-stable-2002_10_15): - - float max should be arround 1e38 or so. - -2002-10-20 08:39 takehiro - - * include/lame.h, libmp3lame/set_get.c - (takehiro-stable-2002_10_15): - - re-introduce the padding related functions/definitions for backward compatibility. - -2002-10-20 08:38 takehiro - - * frontend/: get_audio.c, get_audio.h, main.c, main.h, mp3rtp.c, - mp3x.c, parse.c, parse.h, timestatus.h - (takehiro-stable-2002_10_15): - - sync mainline. - - PATHLEN related fix. - - reduce warning. - -2002-10-20 08:37 takehiro - - * frontend/brhist.c (takehiro-stable-2002_10_15): - - fix for cygwin build. - -2002-10-20 07:34 takehiro - - * libmp3lame/psymodel.c (takehiro-stable-2002_10_15): - - improve attack detection and added release detection for L/S switching. - -2002-10-20 07:27 takehiro - - * libmp3lame/psymodel.c (takehiro-stable-2002_10_15): - - fix warning. - -2002-10-20 07:21 takehiro - - * frontend/parse.c, include/lame.h, libmp3lame/presets.c - (takehiro-stable-2002_10_15): - - added some presetes for syncing DM series. - fix --preset medium to use -q3, not -q2. - -2002-10-20 07:18 takehiro - - * libmp3lame/vbrquantize.c (takehiro-stable-2002_10_15): - - sync mainline. XXL is defaulted. - -2002-10-19 02:11 robert - - * frontend/brhist.c: - - little bit prettier printing of block types stats - -2002-10-19 02:10 robert - - * frontend/brhist.c (takehiro-stable-2002_10_15): - - little bit prettier printing of block type stats - -2002-10-18 23:54 robert - - * frontend/brhist.c, frontend/parse.c, include/lame.h, - libmp3lame/encoder.c, libmp3lame/lame.c, libmp3lame/util.h - (takehiro-stable-2002_10_15): - - merger from main branch: - simple statistics of block types used (seeing with --brief / --verbose) - -2002-10-18 22:54 robert - - * frontend/brhist.c, frontend/parse.c, include/lame.h, - libmp3lame/lame.c, libmp3lame/util.c, libmp3lame/util.h: - - added some simple statistics about block types used: - added lame_block_type_hist() and lame_bitrate_block_type_hist() to API - using new switch --brief will show one line of percentage types used - using switch --verbose will show in more detail used block types - -2002-10-17 17:05 bouvigne - - * frontend/parse.c: - - removed some unused functions - -2002-10-17 13:03 aleidinger - - * include/lame.h: - - correct comment about *_bWriteVbrTag() - -2002-10-16 21:13 robert - - * libmp3lame/vbrquantize.c: - - fixing compiler warnings (unused code removed), some clean up - -2002-10-16 18:01 bouvigne - - * frontend/get_audio.c, frontend/get_audio.h, frontend/parse.c, - frontend/parse.h, frontend/timestatus.h, include/lame.h, - libmp3lame/set_get.c, libmp3lame/takehiro.c: - - minor code cleanups in order to reduce warnings - -2002-10-15 22:45 robert - - * frontend/main.h, libmp3lame/machine.h - (takehiro-stable-2002_10_15): - - fixing Win32 issues - -2002-10-15 22:02 robert - - * libmp3lame/: encoder.c, version.h (takehiro-stable-2002_10_15): - - Takehiro I hope you don't mind, but I bump the version to 94 alpha 1 - to avoid confusions if binaries are shown up at HA - -2002-10-15 21:29 robert - - * libmp3lame/vbrquantize.c (takehiro-stable-2002_10_15): - - fix for --vbr-new -Y crash - we have to calc xr34 for the whole range, for sfb21 too - -2002-10-15 19:16 robert - - * Makefile.unix, libmp3lame/psymodel.c, libmp3lame/util.h: - - reenentrant fix for loudness approx. - -2002-10-15 17:07 takehiro - - * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): - - fix short block with -X 0(vbr smooth method 1), especially for --r3mix. - -2002-10-15 16:35 takehiro - - * libmp3lame/vbrquantize.c (takehiro-stable-2002_10_15): - - fix short block with -X 0(vbr smooth method 1), especially for --r3mix. - -2002-10-15 15:39 takehiro - - * frontend/main.h, libmp3lame/lame.c - (takehiro-2002_05_07-experimental): - - fix for no-GTK, and on windows (same as what I've done mainline). - -2002-10-15 15:37 takehiro - - * frontend/main.h (takehiro-stable-2002_10_15): - - ooops, I missed "n". - -2002-10-15 15:35 takehiro - - * libmp3lame/lame.c (takehiro-stable-2002_10_15): - - fix for no-GTK environment. - -2002-10-15 15:30 takehiro - - * libmp3lame/machine.h (takehiro-2002_05_07-experimental): - - fix arround FLT_MAX/FLOAT_MAX (I hope) - -2002-10-15 15:24 aleidinger - - * configure.in: - - different way of specifying the gcc version in the sparc section, the did not worked because autoconf does some nasty things with [ and ] - -2002-10-15 11:30 aleidinger - - * doc/man/lame.1: - - catch up with HTML docs - -2002-10-15 09:54 aleidinger - - * doc/html/Makefile.in: - - regen - -2002-10-15 09:54 aleidinger - - * doc/html/Makefile.am: - - add presets.html - -2002-10-15 09:53 aleidinger - - * doc/html/presets.html: - - typo fix - -2002-10-15 09:50 aleidinger - - * configure: - - regen - -2002-10-15 09:49 aleidinger - - * configure.in: - - Use sparc optimization on gcc 3.[123456]. - - Submitted by: "Spud McDuck" - -2002-10-15 09:33 aleidinger - - * frontend/: brhist.c, main.c, main.h, mp3rtp.c, mp3x.c, parse.c: - - PATH_MAX is in POSIX.1 (does not include the trailing NUL, so add +1), not MAXPATHLEN - -2002-10-14 20:06 bouvigne - - * doc/html/: contributors.html, index.html, presets.html: - - html docs - -2002-10-14 16:28 takehiro - - * testcase.mp3 (takehiro-stable-2002_10_15): - - update testcase. - -2002-10-14 16:25 takehiro - - * libmp3lame/: psymodel.c, util.h (takehiro-stable-2002_10_15): - - reenentrant fix for loudness approx. - -2002-10-14 16:06 takehiro - - * Makefile.B32, Makefile.DJGPP, libmp3lame/libmp3lame.dsp - (takehiro-stable-2002_10_15): - - build environment related file update. - I could not test them, but I hope it works. - -2002-10-14 15:53 takehiro - - * frontend/parse.c (takehiro-2002_05_07-experimental): - - obsoleted --cwlimit option. - -2002-10-14 15:53 takehiro - - * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix - (takehiro-2002_05_07-experimental): - - update Makefiles sync with Makefile.am - -2002-10-13 20:35 takehiro - - * libmp3lame/: Makefile.am, Makefile.in, encoder.c, fft.c, fft.h, - lame.c, lame_global_flags.h, libmp3lame.dsp, libmp3lame_vc6.dsp, - psymodel.c, psymodel.h, quantize.c, quantize_pvt.c, - quantize_pvt.h, set_get.c, tables.c, tables.h, takehiro.c, - util.c, util.h, vbrquantize.c (takehiro-2002_05_07-experimental): - - bunch of cleanup for next generation LAME :) - - goodbye gpsycho. only nspsy is supported. - - functions related the initilization are moved to tables.c - - some functions in quantize_pvt.c are moved to quantize.c - - functions in fft.c moved to psymodel.c and fft.[ch] are removed - - fix ATH-adjust to reentrant. - -2002-10-13 17:30 takehiro - - * libmp3lame/: VbrTag.c, lame.c, lame_global_flags.h, set_get.c - (takehiro-2002_05_07-experimental): - - sync the head. record preset parameter in LAME tag. - -2002-10-13 15:52 takehiro - - * frontend/main.h (takehiro-2002_05_07-experimental): - - sync with the head branch. - -2002-10-13 15:48 takehiro - - * libmp3lame/: lame.c, psymodel.c, quantize_pvt.c, set_get.c, - util.h (takehiro-2002_05_07-experimental): - - - tuned impulse like signal detection of threshold calculation. - - - block switching tuning, for impulse like signal by using maximum of filtered - signal, not by sum of its energy. - - - MP3X: print block switching factor(attack_intensity) instead of mx, - for nspsytune mode. - - - small optimization for ns_firfilter - - - prepare for faster nspsy. calculate the blocktype first, and after it, - only calculate the threshold for that blocktype. - - - clean up nspsy variables (remove unused variables). - - - calc_noise optimization for nspsy. - -2002-10-13 11:36 robert - - * Makefile.MSVC, Makefile.unix (takehiro-2002_05_07-experimental): - - removed scalar.obj from targets - -2002-10-13 08:10 takehiro - - * libmp3lame/: encoder.c, lame.c - (takehiro-2002_05_07-experimental): - - oops, I mis-check in th one older version ;( - -2002-10-13 07:58 takehiro - - * libmp3lame/: encoder.c, lame.c, quantize.c, quantize_pvt.c, - quantize_pvt.h, tables.h (takehiro-2002_05_07-experimental): - - trivial changes. - - cleanup initilization code. - - better conjunctions of functions. - -2002-10-09 17:27 takehiro - - * libmp3lame/encoder.c, libmp3lame/lame.c, frontend/parse.c, - include/lame.h, libmp3lame/lame_global_flags.h, - libmp3lame/set_get.c (takehiro-2002_05_07-experimental): - - large cleanup arround padding - - padding mode is always set by suitable one. - - gfp->padding_type and the functions to set/get it are removed. - - unused function optimum_samplefreq() is removed. - -2002-10-09 17:24 takehiro - - * libmp3lame/i386/: Makefile.am, Makefile.in, scalar.nas - (takehiro-2002_05_07-experimental): - - remove scalar.nas - -2002-10-09 17:22 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen - -2002-10-09 17:22 takehiro - - * configure.in (takehiro-2002_05_07-experimental): - - fix extopt for gcc 3.1/3.2 - -2002-10-08 19:30 bouvigne - - * libmp3lame/: VbrTag.c, lame.c, lame_global_flags.h, set_get.c: - - preset info stored into Info tag - -2002-10-08 17:43 bouvigne - - * frontend/main.h: - - win32 build fix - -2002-10-08 13:59 takehiro - - * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): - - regen - -2002-10-08 13:59 takehiro - - * libmp3lame/: Makefile.am, tools.c, tools.h, util.c - (takehiro-2002_05_07-experimental): - - removed unused tools.[hc] - -2002-10-08 13:38 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen once more :( - -2002-10-08 13:35 takehiro - - * configure (takehiro-2002_05_07-experimental): - - regen - -2002-10-08 13:34 takehiro - - * ltconfig, acinclude.m4, configure.in - (takehiro-2002_05_07-experimental): - - sync the head branch. - fix gcc options for gcc3.1 after and 3.0.x - -2002-10-08 13:30 takehiro - - * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): - - regen - -2002-10-08 13:19 takehiro - - * frontend/: main.c, main.h, mp3rtp.c, mp3x.c, parse.c - (takehiro-2002_05_07-experimental): - - sync the head branch. - - MAXPATHLEN related fix. - - sizeof(short) related fix. - -2002-10-08 13:18 takehiro - - * libmp3lame/lameerror.h, include/lame.h, libmp3lame/Makefile.am - (takehiro-2002_05_07-experimental): - - moved error code definitions into lame.h - -2002-10-08 12:58 takehiro - - * frontend/main.c: - - sync my branch: fix warning of ReportLameTagProgress() definition - -2002-10-08 12:51 takehiro - - * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): - - remove unneeded include - -2002-10-08 12:50 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - fix NO_PAD - -2002-10-08 09:09 aleidinger - - * configure: - - regen - -2002-10-08 08:59 aleidinger - - * ChangeLog: - - update with uptodate data - -2002-10-08 08:57 aleidinger - - * ChangeLog.header: - - add info how to show the branches in the ChangeLog - -2002-10-08 08:53 aleidinger - - * libmp3lame/version.h: - - bump alpha version - -2002-10-08 08:51 aleidinger - - * configure.in: - - replace the -pipe hack for mips-sgi-irix with a test for GNU ld - (sorry, I forgot who submitted it) - -2002-10-08 08:50 aleidinger - - * acinclude.m4: - - actually commit the generated file with the alignment fix for 64 bit architectures - -2002-10-08 08:50 aleidinger - - * ltconfig: - - improved "deplibs_check_method" for freebsd-elf - -2002-10-08 08:44 aleidinger - - * frontend/: main.c, main.h, mp3rtp.c, mp3x.c, parse.c: - - - spell MAX_NAME_LEN the POSIX way (MAXPATHLEN) and make sure we have - a fallback if it doesn't get defined (please test this on Windows) - - fix for sizeof(short int) != sizeof(int) in mp3rtp.c - - Patches based upon bugreport from Greg Lehey and fixes - in the FreeBSD ports collection from Mikhail Teterin . - -2002-10-07 16:47 takehiro - - * libmp3lame/: encoder.c, lame.c, psymodel.c - (takehiro-2002_05_07-experimental): - - fix warnings - -2002-10-07 16:46 takehiro - - * frontend/main.c (takehiro-2002_05_07-experimental): - - fix warning - -2002-10-07 14:24 takehiro - - * libmp3lame/: lame.c, psymodel.c, set_get.c, util.h - (takehiro-2002_05_07-experimental): - - more nspsytune optimization. - - - use FAST_LOG10 instead of log. this may change the result little bit, - but I think that is rare case and no problem about the quality. - - - presetTune.athadjust_msfix is moved to nsPsy.athadjust_msfix - - - nsPsy.safejoint is removed. - -2002-10-07 13:41 takehiro - - * libmp3lame/: psymodel.c, util.h - (takehiro-2002_05_07-experimental): - - more cleanup of perceptual entropy calculation. - - it calculates only one of the long/short block pe, - after the block type is detemined. - -2002-10-07 13:38 takehiro - - * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): - - fix warning - -2002-10-07 12:49 takehiro - - * libmp3lame/: psymodel.c, quantize_pvt.c, set_get.c, util.h - (takehiro-2002_05_07-experimental): - - trivial code optimizations, no result changes. - - gfp->ATHlower is now stored the number multiplied by -0.1. - - - nspsytune optimization - * precalculate the 1.0/numlines_l[] - * cleanup perceptual entropy storing method and loop hoisting. - * unrolling tonality calculation loop. - -2002-10-07 09:13 takehiro - - * frontend/brhist.c (takehiro-2002_05_07-experimental): - - oops, fix build when BRHIST is enabled. - -2002-10-07 09:11 takehiro - - * frontend/brhist.c, libmp3lame/encoder.c, libmp3lame/lame.c, - libmp3lame/util.h (takehiro-2002_05_07-experimental): - - clean up bitrate histgram. - And do not compile the brhist-related code when "./configure --without-brhist" - -2002-10-07 09:09 takehiro - - * frontend/get_audio.c (takehiro-2002_05_07-experimental): - - fix warning - -2002-10-07 08:57 takehiro - - * libmp3lame/: encoder.c, fft.c, presets.c, psymodel.c, set_get.c, - util.c, util.h, vbrquantize.c (takehiro-2002_05_07-experimental): - - small code cleanups. all of them does not change the result. - - better conjunctions. - * updateStats() is moved from util.c to encoder.c - * select_kth_int() is moved from util.c to vbrquantize.c - - fft window function table is moved from gfc to static variable in fft.c. - once apon a time, the window function is differed from nspsy/gpsy, so the - table should be stored separetedly for each encoding entity. but now, it - is unified and we can unify the table function. - - presetTune.attackthre and presetTune.attackthre_s are moved to nsPsy. - -2002-10-06 18:14 takehiro - - * libmp3lame/: psymodel.c, quantize.c, util.h, vbrquantize.c - (takehiro-2002_05_07-experimental): - - preset clean up. - - use the current block_type itself to determine the quantization result - comparing method. - - remove presetTune.quantcomp_current. - - changed presetTune.attackthresh and presetTune.attackthresh_s type (int -> FLOAT). - - I think the 1st one is BUG of preset, affected all preset modes. - It determines how to compare the quantized spectrums by the blocktype of 1st - granule of the next frames, last channel (R or S), for all the channel and - all the granule. - -2002-10-06 18:06 takehiro - - * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): - - due to the nspsy long/short switching mode fix, attack threshold should be - tuned again.I used awe32, fatboy, DEATH2, and other "normal" samples to - determine the threshold. - - now awe32 is not killer sample of --preset standard, I think. - # but the bitrate is increased, of course. - - and it seems vangelis1.wav needs some more tuning, but I am so sleeeeeeepy. - -2002-10-06 16:46 takehiro - - * libmp3lame/: encoder.c, psymodel.c - (takehiro-2002_05_07-experimental): - - - make adjust_ATH() static and cleanup - (include Gabriel's clean up in the head branch) - - padding code clean up - - block type code cleanup - - ATH related initialization code is moved to psymodel.c - -2002-10-06 16:43 takehiro - - * libmp3lame/util.c (takehiro-2002_05_07-experimental): - - sync with the head branch (Gabriel's code cleanup... remove "historical" code) - -2002-10-06 16:40 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - sync with head.(code cleanup by Gabriel) - -2002-09-30 16:58 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - moved substep shaping position. bit slower but better quality for higher bitrate (especially for the case 320kbps is not enough). - -2002-09-30 16:57 takehiro - - * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): - - fix substep 2, 3, 6, and 7. (working area allocation) - -2002-09-30 16:49 bouvigne - - * libmp3lame/: encoder.c, quantize.c, util.c: - - some code cleanups - -2002-09-30 16:28 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix mdct filter coefs, for -k option(thanx reporting, Robert). - -2002-09-29 15:38 takehiro - - * frontend/brhist.c (takehiro-2002_05_07-experimental): - - fix cygwin build - -2002-09-29 06:02 takehiro - - * libmp3lame/reservoir.c (takehiro-2002_05_07-experimental): - - sync with the head branch. - - bit reservoir handling of freeformat. - -2002-09-28 16:12 takehiro - - * libmp3lame/: util.h, vbrquantize.c - (takehiro-2002_05_07-experimental): - - small optimizations for --vbr-new - - gfc->VBR->scratch is moved to the local variable. - - remove quality mapping(directly switch statement) - - code clean up. - -2002-09-28 13:27 takehiro - - * libmp3lame/: quantize.c, vbrquantize.c - (takehiro-2002_05_07-experimental): - - - sync --vbr-new with the head branch. - - better substep shaping for --vbr-new. - - the meaning of best huffman coding with --vbr-new is bit different from - that of head tree. - -2002-09-28 10:36 takehiro - - * frontend/get_audio.c, frontend/parse.c, include/lame.h - (takehiro-2002_05_07-experimental): - - fix warnings. - -2002-09-28 10:36 takehiro - - * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): - - make select_kth() static function. - -2002-09-28 10:26 takehiro - - * Makefile.DJGPP, Makefile.MSVC, Makefile.am, Makefile.in, - README.DJGPP, configure, configure.in, testcase.mp3, - ACM/ACMStream.cpp, ACM/Makefile.in, ACM/ADbg/Makefile.in, - ACM/tinyxml/Makefile.in, Dll/BladeMP3EncDLL.c, - Dll/BladeMP3EncDLL.def, Dll/BladeMP3EncDLL.h, Dll/Example.cpp, - Dll/Example_vc6.dsp, Dll/Example_vc6.dsw, - Dll/LameDLLInterface.htm, Dll/LameDll_vc6.dsp, Dll/Makefile.in, - debian/Makefile.in, debian/changelog, debian/rules, - doc/Makefile.in, doc/html/Makefile.in, - doc/html/contributors.html, doc/html/history.html, - doc/html/index.html, doc/html/switchs.html, doc/man/Makefile.in, - doc/man/lame.1, dshow/Encoder.cpp, dshow/Makefile.in, - frontend/get_audio.c, frontend/parse.c, include/Makefile.in, - include/lame.h, libmp3lame/Makefile.am, libmp3lame/Makefile.in, - libmp3lame/encoder.c, libmp3lame/lame.c, libmp3lame/presets.c, - libmp3lame/set_get.c, libmp3lame/util.h, - libmp3lame/i386/Makefile.in, misc/Makefile.in, mpglib/Makefile.in - (takehiro-2002_05_07-experimental): - - large sync with the head branch. almost all the code is now synced with the head. - -2002-09-28 09:30 takehiro - - * libmp3lame/VbrTag.c: - - remove some #include (these header files are included from VbrTag.h.) - -2002-09-28 09:23 takehiro - - * libmp3lame/: encoder.c, lame.c, psymodel.c - (takehiro-2002_05_07-experimental): - - fix all known problems on my tree (I hope). - - fix mishandling of long/short block type when storing pe[]. - - fix psymodel initialization (array index initialization), which fixes - floating exception in psymodel.c. - - one more preecho prevention code fix. - - sync with my psymodel patch in the head branch - - and small improvement. - - implement better block type restriction - (when MS, both channels should be same block type, but when LR, it is not needed). - - faster FIR filter for pe[] adjustment in encoder.c. - -2002-09-28 09:16 takehiro - - * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): - - zeroed all ancillary area, when the debug mode. - -2002-09-23 07:00 bouvigne - - * include/lame.h: - - presets (sorry, this part was missing) - -2002-09-22 16:53 bouvigne - - * frontend/parse.c, libmp3lame/presets.c: - - presets - -2002-09-21 00:31 markt - - * libmp3lame/quantize_pvt.c: - - fixed bug which was causing the calc_noise assert failure. - -2002-09-19 20:39 robert - - * libmp3lame/: encoder.c, lame.c, quantize.c, util.h - (takehiro-2002_05_07-experimental): - - merger from mainline: - undo of broken VBR min fill patch - padding code clean up - -2002-09-16 16:28 takehiro - - * configure, configure.in: - - we don't want to run the X :) - -2002-09-16 07:43 takehiro - - * frontend/: brhist.c, console.c - (takehiro-2002_05_07-experimental): - - sync with head branch. - - Mark's compilation fix. - - Alex's warning fix on 64bit environment. - -2002-09-16 07:25 takehiro - - * aclocal.m4 (takehiro-2002_05_07-experimental): - - sync with the head branch. - - prevent unaligned access on some 64 bit arches, by Alexander (and Ti.) - -2002-09-15 17:47 bouvigne - - * libmp3lame/: reservoir.c, set_get.c: - - Relax of freeformat reservoir after discussion with Robert - -2002-09-13 20:04 markt - - * frontend/brhist.c: - - This code: - - #if defined(HAVE_TERMCAP_H) - # include - #elif defined(HAVE_NCURSES_TERMCAP_H) - # include - #endif - - changed to: - - #if defined(HAVE_NCURSES_TERMCAP_H) - # include - #elif defined(HAVE_TERMCAP_H) - # include - #endif - - because on my system, both TERMCAP and NCURSES_TERMCAP were - defined by configure, but term.h and termcap.h have conflicts, - whileterm.h and ncurses/termcap.h works fine. - -2002-09-09 21:43 robert - - * frontend/parse.c, libmp3lame/encoder.c, libmp3lame/lame.c, - libmp3lame/psymodel.c: - - lame.c, encoder.c: fix padding oddities - psymodel.c: fix nspsy code for all/no short blocks - parse.c: -d now obsolete - -2002-09-08 06:36 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - one more sync with head branch (ms energy ratio). - -2002-09-07 12:39 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - sync with the head branch psymodel fix. - -2002-09-06 11:11 aleidinger - - * configure: - - regen - -2002-09-06 10:53 aleidinger - - * configure.in: - - - no opts if non empty cflags and no expopt - - accumulate-outgoing-args is x86 only - Noticed by: Atro Tossavainen - - IRIX-gcc doesn't like '-pipe' - Noticed by: Atro Tossavainen - -2002-09-06 09:24 aleidinger - - * frontend/: brhist.c, console.c: - - try to include the right headers for the tgetstr prototype; - should fix problems on 64bit arches - Noticed by: Atro Tossavainen - Ti Kan - Tested by: Ti Kan - -2002-09-06 09:22 aleidinger - - * aclocal.m4: - - prevent unaligned access on some 64 bit arches - Noticed by: Ti Kan - Tested by: Ti Kan - -2002-09-05 16:53 bouvigne - - * libmp3lame/: reservoir.c, set_get.c: - - free format fix - -2002-09-03 11:34 aleidinger - - * frontend/parse.c: - - 1 argument too much for fprintf - -2002-09-03 11:18 aleidinger - - * doc/man/lame.1: - - add --noasm - -2002-09-02 12:02 takehiro - - * doc/html/history.html: - - added my psymodel change, and so on. - -2002-09-02 11:56 takehiro - - * testcase.mp3: - - regen with the latest LAME after psymodel was fixed. - This is produced by the LAME with ./configure --enable-nasm --enable-debug --enable-mp3x, compiled gcc 3.1.1, on linux2.4.19, glibc2.2.2, Duron 1GHz(3DNow! is enabled). - -2002-09-02 11:51 takehiro - - * libmp3lame/lame.c: - - fix for Tru64 UNIX build, reported by Ti Kan. - -2002-09-01 16:08 bouvigne - - * doc/html/contributors.html, doc/html/history.html, - doc/html/index.html, doc/html/switchs.html, frontend/parse.c: - - docs - -2002-09-01 16:03 takehiro - - * libmp3lame/psymodel.c: - - fix small psymodel bugs since long time ago(some of them are since 3.70 era...) - - highpass filter of MS energy calculation to neglect the DC. - - always do the Robert's short block pre-echo prevention and - fix its initialization (the fix is only for nspsy). - - fix energy and threshold of DC and the highest freq. element are halven. - - fix nspsytune FIR filter length - -2002-08-30 20:52 robert - - * Makefile.MSVC: - - MSVC: fix "-GX" typo - ICL: allow special compiles for PII and PIII - -2002-08-27 22:43 rbrito - - * debian/: changelog, rules: - - Update Debian packaging. More changes to come. - -2002-08-26 20:38 robert - - * libmp3lame/: lame.c, quantize.c, util.h: - - undo of VBR bitres min fill patch - -2002-08-25 20:17 bouvigne - - * frontend/parse.c: - - merge of alt presets - -2002-08-25 15:09 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - do substep noise shaping in ABR mode, including bitrate compensation. - -2002-08-25 15:08 takehiro - - * libmp3lame/util.c (takehiro-2002_05_07-experimental): - - trivial coding optimization of fast_log2 - -2002-08-25 15:08 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - revert some FAST_LOG usage. It sometime happens SIGFPE(overflow). - -2002-08-25 10:54 takehiro - - * libmp3lame/: quantize.c, reservoir.c - (takehiro-2002_05_07-experimental): - - Tuning the bit reservoir filling rate when substep noise shaping method 1, - and do not substep noise shaping if the bit reservoir is almost full. - -2002-08-24 19:20 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - minor fix for global_gain limitation. - -2002-08-24 17:28 takehiro - - * libmp3lame/: VbrTag.c, lame.c (takehiro-2002_05_07-experimental): - - sync main tree. - - portability fix for sunos 4.x by Alexander Leidinger. - -2002-08-24 17:25 takehiro - - * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): - - quick fix of warning. - -2002-08-24 17:23 takehiro - - * libmp3lame/: quantize.c, set_get.c - (takehiro-2002_05_07-experimental): - - do not do the substep noise shaping when the block type is SHORT, - because it seems short block threshold calculation is very buggy - (both of ns/gpsycho). - - new option: --substep 4,5,6,7 - force substep shaping even on the SHORT block. - -2002-08-24 17:12 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - use FAST_LOG() more. - minimize the ns_hpfsmpl[] array. - better ns_hpfsmpl[] calculation. - -2002-08-24 17:10 takehiro - - * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): - - use of FAST_LOG() more for faster encoding - -2002-08-24 17:09 takehiro - - * libmp3lame/presets.c (takehiro-2002_05_07-experimental): - - I forgot to change the default quality setting of abr mode, - when I remap the quality <-> actual setting. - -2002-08-24 16:08 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - revert some GTK change to fix the mp3x spectrum display of short block. - -2002-08-20 16:59 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - fix mp3x spectrum display - -2002-08-20 16:51 takehiro - - * libmp3lame/: psymodel.c, util.h - (takehiro-2002_05_07-experimental): - - fix mp3x pe[] display. - -2002-08-20 16:28 takehiro - - * libmp3lame/encoder.c: - - fix mp3x spectrum display - -2002-08-20 16:09 takehiro - - * libmp3lame/lame.c (takehiro-2002_05_07-experimental): - - fix SIGFPE (divided by 0) of filter init. - -2002-08-20 13:03 takehiro - - * libmp3lame/: lame.c, newmdct.c, util.h - (takehiro-2002_05_07-experimental): - - cleanup polyphase filtering. - - highpass/lowpass coefs. are integrated into one array. - - reordered gfc members to get better cache performance. - - remove gfc->is_mpeg1 - -2002-08-20 12:59 takehiro - - * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): - - remove gfc->is_mpeg1 - -2002-08-20 12:58 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - cleanup arround cw_lower_index - -2002-08-20 12:58 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - remove some debug code. - remove gfc->is_mpeg1 - -2002-08-20 12:45 takehiro - - * libmp3lame/: bitstream.c, tables.c, tables.h - (takehiro-2002_05_07-experimental): - - moved scfsi_band[] into tables.c - -2002-08-19 15:09 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - better preflag use by using "all zero" band. - this breaks testcase little bit(make test). - -2002-08-19 04:57 takehiro - - * libmp3lame/: psymodel.c, util.h - (takehiro-2002_05_07-experimental): - - psymodel.c cleanup (2) - - remove some constants (bu_?, npart_?_orig, SNR_s, w1_?, w2_?) from gfc. - - do always short block preecho prevention. this makes some breaks for - testcase(make test). - - do always normalize the s3_ss by SNR_s[] for faster calculation for gpsycho. - - optimize tonality computation for gpsycho. - - FFT/energy computation code of [g|ns]psy are integrated. - - GTK code cleanup - - make a new constants bm_?, band middle position table in gfc. - - cleranup table initialization code. - -2002-08-19 04:47 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - trivial cleanup arround joint stereo/GTK code - -2002-08-17 16:41 takehiro - - * libmp3lame/: psymodel.c, util.h - (takehiro-2002_05_07-experimental): - - more psymodel cleanup. - - GTK compilation fix - - fix mistake of wsamp_l and wsamp_L - - little block_type_set() cleanup - - gfc->energy[] and energy_s[] are removed. - -2002-08-17 16:37 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - trivial - -2002-08-17 07:09 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - divide psymodel.c into manageable pieces (1) - and some optimization/simplification. - -2002-08-14 04:02 takehiro - - * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): - - small fixes. - - variable type change of PE calculation. - - make it allow the mixed block limitation of MP3 - - cleanup the block type code. - -2002-08-14 03:59 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - ci to avoid losing works. - - short block detection cleanup and bug fix, for nspsytune (1st attempt) - - preliminal mixed block detection code. - -2002-08-14 03:57 takehiro - - * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): - - optimize calc_xmin() and changed ATH normalization for it. - -2002-08-08 09:03 aleidinger - - * Makefile.in: - - regen - -2002-08-08 09:00 aleidinger - - * Makefile.am: - - Add lame.spec to the distribution tarball, as suggested in bug #580586 - -2002-08-08 08:48 aleidinger - - * README.DJGPP, Makefile.DJGPP: - - Fix from Peder Hedlund, see bug #590981. - -2002-08-05 18:04 afaber - - * Dll/BladeMP3EncDLL.c: - - Fixed crashing problem when the INFO TAG was written while it should not - -2002-08-02 20:53 afaber - - * Dll/BladeMP3EncDLL.c: - - Some code clarifications (remarks from Martin Ruckert) - -2002-08-02 20:52 afaber - - * Dll/LameDLLInterface.htm: - - Small textual changes (remarks from Martin Ruckert) - -2002-07-30 20:24 aleidinger - - * frontend/get_audio.c, libmp3lame/VbrTag.c, libmp3lame/lame.c: - - Portability fixes for SunOS 4.x. - -2002-07-30 08:28 takehiro - - * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): - - merge short/long block code (preparing mixed block support) - -2002-07-28 09:56 takehiro - - * Makefile.am, Makefile.in, aclocal.m4, config.h.in, configure, - configure.in, libmp3lame/VbrTag.h - (takehiro-2002_05_07-experimental): - - more sync. arround configure stuff. - -2002-07-28 09:52 takehiro - - * mac/.cvsignore (takehiro-2002_05_07-experimental): - - ignore Makefile et al. - -2002-07-28 09:24 takehiro - - * frontend/get_audio.c, include/lame.h, - libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): - - syncing. - - fix mpeg decoding memory leak. - - lame.h comment fix. - -2002-07-28 09:18 takehiro - - * include/lame.h: - - fix unclosed comment - fix typo - -2002-07-28 09:08 takehiro - - * libmp3lame/: presets.c, set_get.c - (takehiro-2002_05_07-experimental): - - more sync with main tree about preset API. - -2002-07-28 09:07 takehiro - - * include/lame.h (takehiro-2002_05_07-experimental): - - fix warning - -2002-07-28 09:06 takehiro - - * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): - - simplify the code. - disabled substep method 2 and 3 for vbr-new (forced to change method 1) - -2002-07-28 06:59 rbrito - - * debian/changelog: - - Updating debian/changelog's reported version. - -2002-07-27 10:35 afaber - - * Dll/: Example.cpp, Example_vc6.dsp, Example_vc6.dsw: - - Added example VC6 project files, updated Example.cpp file - -2002-07-27 07:41 takehiro - - * API, DEFINES, INSTALL, Makefile.am, Makefile.unix, lame.spec.in, - ltmain.sh (takehiro-2002_05_07-experimental): - - sync with main tree. no effects the quality. - -2002-07-27 07:39 takehiro - - * frontend/: Makefile.in, timestatus.c - (takehiro-2002_05_07-experimental): - - sync with main tree. time status rollback and newly regened Makefile.in - -2002-07-27 07:03 takehiro - - * include/lame.h (takehiro-2002_05_07-experimental): - - sync with main tree. changed comment style, // to /* */ - -2002-07-27 06:59 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - fix cygwin/vc compilation problem. - some speed improvement for --substep. - -2002-07-27 06:54 takehiro - - * libmp3lame/presets.c (takehiro-2002_05_07-experimental): - - sync with main tree. - -2002-07-26 22:27 afaber - - * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.def, BladeMP3EncDLL.h: - - changes to support encoding of multiple streams - -2002-07-26 18:56 markt - - * frontend/get_audio.c, include/lame.h, - libmp3lame/mpglib_interface.c: - - memory leak in multiple decodes fixed. - -2002-07-26 08:18 takehiro - - * mac/: LAME Carbon Debug.pch, LAME Carbon Final.pch, LAME Classic - Debug.pch, LAME Classic Final.pch, LAME_Carbon_Debug.pch, - LAME_Carbon_Final.pch, LAME_Classic_Debug.pch, - LAME_Classic_Final.pch, Makefile.am - (takehiro-2002_05_07-experimental): - - sync with main tree. (changed file name) - -2002-07-21 22:11 takehiro - - * libmp3lame/: Makefile.am, quantize.c - (takehiro-2002_05_07-experimental): - - fix and cleanup of "pseudo substep" method 1 and 3. - revert Robert's change of VBR bitresevoir handling code. - -2002-07-21 15:15 aleidinger - - * include/lame.h: - - ANSIfy comments. Requested by Ti Kan for xmcd - -2002-07-21 12:17 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.h, set_get.c, takehiro.c - (takehiro-2002_05_07-experimental): - - implement pseudo substep noise shaping method 1 and 3. - - it reduces about 3% of bitrate without losing any quality (theoretically), - for vbr mode. - - fix "off by one" bug of IPOW[] - - fix comment and substep method range check in set_get.c - - WARNING:there's some bug in the combination of --vbr-new and --substep. - -2002-07-21 12:11 takehiro - - * libmp3lame/: lame.c, util.c (takehiro-2002_05_07-experimental): - - sync with main tree: scaling bug fix. - -2002-07-21 12:10 takehiro - - * mac/: Makefile.am, Makefile.in - (takehiro-2002_05_07-experimental): - - sync with main tree: added Makefile.* - -2002-07-21 12:09 takehiro - - * libmp3lame/util.h (takehiro-2002_05_07-experimental): - - sync with main tree: use FASTLOG as defaulted. - -2002-07-19 17:20 afaber - - * Dll/LameDll_vc6.dsp: - - added ,HAVE_NASM,MMX_choose_table defines to project file, - since beGetBersion did not report that the DLL was compiled with - MMX enabled - -2002-07-15 21:22 markt - - * libmp3lame/: util.c, util.h: - - enabled domd's fast_log code - -2002-07-15 00:52 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - one more fix for pe[] calculation of nspsytune. - -2002-07-14 10:41 takehiro - - * frontend/gtkanal.c (takehiro-2002_05_07-experimental): - - fix mp3x "bit assumption(of frame)" display imcompatibility of main tree. - -2002-07-14 10:36 takehiro - - * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): - - fix mp3x "bit assumption" display imcompatibility of main tree. - -2002-07-14 10:19 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - fix enbug of pe[] calculation for nspsytune. - prepare for nspsytune cleanup. - -2002-07-13 08:10 aleidinger - - * configure, libmp3lame/Makefile.in: - - regen - -2002-07-13 08:09 aleidinger - - * configure.in: - - Some fixes in the compiler options, removed superfluous BeOS section. - -2002-07-13 08:08 aleidinger - - * libmp3lame/Makefile.am: - - Fixes for BeOS (and perhaps other arches) to allow the build of a - shared lib. - - Submitted by: Andrew Bachmann - -2002-07-05 15:17 afaber - - * Dll/LameDLLInterface.htm: - - fixe a couple of typos' - -2002-07-03 22:28 afaber - - * Dll/BladeMP3EncDLL.c: - - fixed minor problems with the ALT-PRESET CBR/ABR modes - -2002-07-03 21:14 afaber - - * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: - - avoid crash in beWriteVbrTag when gfp is not allocated, fixed return value of beWriteVbrTag in *.h file - -2002-06-29 12:29 aleidinger - - * libmp3lame/: lame.c, util.c: - - Patch from Simon Blandford : - ---snip--- - The problem: - When in MONO mode, LAME merges the two channels before the left/right - scaling. The left scale acts on the remaining signal and the right scale - is ignored. - - The solution: - The scaling operation is simply moved before the channel merge - operation. Also, all these operations are moved before the re-sample - operation otherwise the signal would have be re-sampled on two channels - even in MONO mode which would be a waste of CPU time. - ---snip--- - -2002-06-23 16:07 takehiro - - * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): - - fix mp3x display of threshold level (blue/green bar in FFT window). - use FAST_LOG10 in klemm's penalties() function. - trivial fix of max_noise initialization (do not effect anything but for the consistency of comment). - -2002-06-23 16:04 takehiro - - * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): - - regen - -2002-06-23 14:40 takehiro - - * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): - - fix max_noise initilization - and trivial coding style change - -2002-06-23 12:56 takehiro - - * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): - - fix mp3x display of max_noise, tot_noise, over_noise - -2002-06-23 12:56 takehiro - - * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): - - trivial - -2002-06-23 08:30 takehiro - - * libmp3lame/: lame.c, psymodel.c, quantize_pvt.c, util.c, util.h - (takehiro-2002_05_07-experimental): - - more faster pe[] calculation on nspsy. - - sync with main tree: - - domd's faster LOG and psymodel_ns optimization - -2002-06-23 06:19 takehiro - - * include/lame.h, libmp3lame/set_get.c - (takehiro-2002_05_07-experimental): - - sync with main tree. - - fixed return type of lame_get_interChRation() - -2002-06-23 05:53 takehiro - - * libmp3lame/: Makefile.am, Makefile.in, libmp3lame_vc6.dsp, pcm.c, - pcm.h (takehiro-2002_05_07-experimental): - - sync with main tree. - - remove pcm.[ch] - -2002-06-17 17:19 domd - - * DEFINES: - - added USE_FAST_LOG define - -2002-06-16 20:16 domd - - * libmp3lame/psymodel.c: - - optimizations on mask_add and L3psycho_anal_ns - -2002-06-16 20:14 domd - - * libmp3lame/quantize_pvt.c: - - optimization : use of FAST_LOG10 macro in calc_noise - -2002-06-16 20:13 domd - - * libmp3lame/: lame.c, util.c, util.h: - - added the FAST_LOG10 and FAST_LOG macros - -2002-06-15 17:56 markt - - * Dll/BladeMP3EncDLL.c: - - added missing ")" - -2002-06-12 18:41 markt - - * dshow/Encoder.cpp: - - directshow, like ACM, cannot support INFO tag. - INFO tag disabled in dshow code. - -2002-06-12 18:36 markt - - * ACM/ACMStream.cpp: - - added note about INFO tag not possible when using ACM codec, - since ACM has no mechanism to rewind output stream when - encoding is finished. - -2002-06-12 18:27 markt - - * API, Dll/BladeMP3EncDLL.c, Dll/Example.cpp, - Dll/LameDLLInterface.htm: - - updated documentation (API and DLL) - to clarify that INFO tag must be written - unless explicitly disabled. - -2002-06-11 09:21 aleidinger - - * configure: - - gtk-config fix (oops... sorry) - -2002-06-09 16:01 takehiro - - * include/lame.h, libmp3lame/set_get.c: - - fix return type of lame_get_interChRatio() - -2002-06-04 19:16 bouvigne - - * libmp3lame/psymodel.c: - - merged little part of Dom's speed optimization - -2002-06-04 15:04 aleidinger - - * configure: - - regen - -2002-06-04 15:03 aleidinger - - * configure.in: - - -maccumulate-outgoing-args is x86 only - - Reported by: "Spud McDuck" - -2002-06-02 19:09 aleidinger - - * configure: - - regen - -2002-06-02 19:08 aleidinger - - * config.h.in, configure.in: - - damn autoconf, hopefully this version works as intended - -2002-06-02 17:02 aleidinger - - * configure: - - regen - -2002-06-02 17:00 aleidinger - - * configure.in: - - use "else if ... fi" instead of "elif ..." - -2002-06-02 17:00 aleidinger - - * libmp3lame/Makefile.in: - - regen (removal of pcm.[ch]) - -2002-06-02 14:50 robert - - * libmp3lame/: Makefile.in, libmp3lame_vc6.dsp: - - moved unused code pcm.[ch] into the Attic - interested parties will find it there - -2002-06-02 14:45 robert - - * libmp3lame/: Makefile.am, pcm.c, pcm.h: - - moved unused code pcm.[ch] into the Attic - interested parties will find it there - -2002-06-02 14:20 aleidinger - - * configure: - - regen + perl -pi -e 's:--no-verify::' configure - - Does anyone know how to do this with autoconf directly? - -2002-06-02 14:17 aleidinger - - * aclocal.m4: - - undo last commit, wrong file and wrong commit message - -2002-06-02 14:16 aleidinger - - * acconfig.h: - - not needed anymore - -2002-06-02 14:15 aleidinger - - * Makefile.in: - - regen after removal of aclocal.m4 - -2002-06-02 14:13 aleidinger - - * config.h.in: - - regen - -2002-06-02 14:13 aleidinger - - * configure.in: - - - redo {,u}int{8,16,32,64}_t stuff with new autoconf 2.53 macros - - fix code which sets experimental options - Thanks to: Akos Maroy - - fix GCC_version for 3.1 - Thanks to: Akos Maroy - - further autoconf 2.53 updates - - minor fixes - -2002-06-02 14:10 aleidinger - - * aclocal.m4: - - is not needed anymore - -2002-06-02 12:21 aleidinger - - * aclocal.m4: - - update to autoconf 2.53 - -2002-06-02 12:17 aleidinger - - * libmp3lame/: VbrTag.c, VbrTag.h, pcm.c, pcm.h, util.h: - - add some includes - -2002-05-28 08:28 aleidinger - - * configure: - - regen - -2002-05-28 08:24 aleidinger - - * ACM/Makefile.in, Dll/Makefile.in, debian/Makefile.in, - doc/Makefile.in, dshow/Makefile.in, frontend/Makefile.in, - include/Makefile.in, libmp3lame/Makefile.in, misc/Makefile.in, - mpglib/Makefile.in, ACM/ADbg/Makefile.in, - ACM/tinyxml/Makefile.in, doc/html/Makefile.in, - doc/man/Makefile.in, libmp3lame/i386/Makefile.in: - - regen - -2002-05-28 08:07 aleidinger - - * configure.in: - - - update to autoconf 2.53 - - add ultrasparc detection and compiler switches in case of gcc 3.1 - -2002-05-28 08:04 aleidinger - - * Makefile.in: - - regen - -2002-05-28 08:04 aleidinger - - * Makefile.am: - - add mac subdir - -2002-05-28 08:03 aleidinger - - * mac/Makefile.in: - - generated Makefile.in - -2002-05-28 07:52 aleidinger - - * mac/Makefile.am: - - add automake clue - -2002-05-28 07:48 aleidinger - - * mac/: LAME Carbon Debug.pch, LAME Carbon Final.pch, LAME Classic - Debug.pch, LAME Classic Final.pch, LAME_Carbon_Debug.pch, - LAME_Carbon_Final.pch, LAME_Classic_Debug.pch, - LAME_Classic_Final.pch: - - rename files because of automake (space to underscore conversation) - -2002-05-26 15:52 takehiro - - * libmp3lame/: lame.c, quantize.c, takehiro.c, util.h - (takehiro-2002_05_07-experimental): - - sync with main tree, except arround vbrquantize.c. - - it calls best_huffman_divide() twice. - - *_block_sf() are out of sync. - -2002-05-25 23:30 markt - - * libmp3lame/lame.c: - - fixed a mono encoding bug found by Justin Schoeman - - For single channel input, the 2nd channel was still required - to exit and have as much data as the 1st channel becaus of - memcpy's (even though this data was never used) - -2002-05-24 17:28 markt - - * Dll/BladeMP3EncDLL.c, libmp3lame/lame.c: - - removed all references to "sample_t" from the DLL. - - someone put in a call to lame_encode_buffer_sample_t - (not a public interface to libmp3lame) - when they should have used lame_encode_buffer_float(), - since they were assuming 'sample_t' was a float. - -2002-05-20 22:21 robert - - * libmp3lame/: lame.c, quantize.c, util.h: - - VBR bitreservoir minimum filling depending on back pointer from largest frame allowed - -2002-05-20 18:22 robert - - * Makefile.unix, libmp3lame/lame.c, libmp3lame/quantize.c, - libmp3lame/vbrquantize.c: - - Makefile.unix: - -malign-double enabled, helps memcpy - - lame.c: - new experimental -X{5,9} settings for --vbr-new - - quantize.c: - build up bit reservoir for VBR, allows to limit max frame size with -Bxxx - without a too large quality impact - - vbrquantize.c: - fixing sfb21 issues: -Y did not show the wanted effect - xxx_block_xr34: replaced copy loop by memcpy, not faster but makes things - more obvious - some very minor speed ups - -2002-05-19 22:11 markt - - * frontend/timestatus.c: - - initialize ellapsed time counter to 0. - -2002-05-19 22:03 robert - - * libmp3lame/: quantize.c, vbrquantize.c: - - avoid calling best_huffman_divide twice for vbr-new - -2002-05-19 16:43 takehiro - - * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, - libmp3lame/lame_global_flags.h, libmp3lame/presets.c, - libmp3lame/set_get.c (takehiro-2002_05_07-experimental): - - experimental mixed block support. - "--mixedblock" option to use it. - - currently, it uses mixed blocks on all short/start/end blocks. - - this is very bad idea. we need a proper psymodel. - till we make it, this option is used only for the testing purpose. - -2002-05-19 16:38 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - trivial optimization arround nspsytune - -2002-05-19 15:13 takehiro - - * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): - - merged little part of Dom's speed optimization. - -2002-05-18 17:39 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - preparing for mixed block of bitpressure_strategy() - -2002-05-18 17:33 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - remove magic numbers and prepare for mixed block. - -2002-05-18 16:54 takehiro - - * libmp3lame/: machine.h, newmdct.c, vbrquantize.c - (takehiro-2002_05_07-experimental): - - fully cosmetic... changed INLINE -> inline - -2002-05-18 16:53 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - prepare for the substep noise shaping method 1 and 3. - -2002-05-18 16:15 takehiro - - * libmp3lame/: quantize.c, takehiro.c - (takehiro-2002_05_07-experimental): - - trivial optimizations - -2002-05-18 16:08 takehiro - - * libmp3lame/: machine.h, quantize_pvt.c, quantize_pvt.h - (takehiro-2002_05_07-experimental): - - clean up table initialization and bit size optimization. - - remove magic number "128". (and changed 116) - - we don't need to prepare the both of adj43[] and adj43asm[]. - prepare only one of them, if we use asm code or not. - -2002-05-18 16:00 takehiro - - * libmp3lame/: bitstream.c, takehiro.c - (takehiro-2002_05_07-experimental): - - use scfsi more. - if all quantized value is 0, we can use scalefactor with not only 0 but - also any number and in such a situation, we can use the scfsi. - -2002-05-18 15:09 takehiro - - * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): - - don't compile some code if analyzer is not needed. - -2002-05-18 15:07 takehiro - - * libmp3lame/: machine.h, quantize_pvt.c, quantize_pvt.h, - vbrquantize.c (takehiro-2002_05_07-experimental): - - optimization arround vbr_new with the new data structure. - - merged short_block_xr34() and long_block_xr34() into block_xr34() and clean up - - changed IIPOW20[] and remove some condition code. - -2002-05-18 13:59 takehiro - - * libmp3lame/: quantize.c, set_get.c, util.h - (takehiro-2002_05_07-experimental): - - arroud substep noise shaping. - - prepare for "method 3". - - start with "pseudo half shaped" state, if we use the method 2 or 3. - -2002-05-18 13:50 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.c, set_get.c - (takehiro-2002_05_07-experimental): - - simple calc_noise() optimization (remove one log()) - fix quatn_compare() when alt-preset. - -2002-05-18 12:11 takehiro - - * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): - - oops, fix calc_noise() bugfix :) - -2002-05-18 12:10 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h - (takehiro-2002_05_07-experimental): - - trivial optimization by loop unrolling - -2002-05-18 11:38 takehiro - - * libmp3lame/: machine.h, quantize.c, quantize_pvt.c, - quantize_pvt.h (takehiro-2002_05_07-experimental): - - quick fix for "calc_noise_bug" reported by Mark. - -2002-05-18 11:09 takehiro - - * libmp3lame/: lame.c, presets.c, set_get.c - (takehiro-2002_05_07-experimental): - - changed alt-preset-* and comments to follow the change of quality setting. - -2002-05-18 11:07 takehiro - - * libmp3lame/: machine.h, quantize.c - (takehiro-2002_05_07-experimental): - - fix floating exception when global_gain > 255u. - it frequently happens when best_huffman == 2 - -2002-05-18 10:25 takehiro - - * libmp3lame/: lame-analysis.h, lame.c, quantize.c, util.h - (takehiro-2002_05_07-experimental): - - sync with main tree. - - uped READ_AHEAD from 10 to 40 for the frame analyzer (By Mark) - - removed warning when using -Y (By Robert) - - removed unused bitpressure strategie 2 (VBR) (By Robert) - -2002-05-14 21:32 robert - - * libmp3lame/: lame.c, quantize.c, util.h, vbrquantize.c, - vbrquantize.h: - - removed warning when using -Y - removed unused bitpressure strategie 2 (VBR) - -2002-05-14 21:02 robert - - * libmp3lame/.indent.pro: - - changing max line length from 80 to 100 chars - -2002-05-14 16:23 markt - - * frontend/timestatus.c: - - added comment about clock rollover check - -2002-05-14 16:19 markt - - * frontend/: lametime.c, timestatus.c: - - put in rollover check in frontend cpu/wall clock timing routines. - - didn't we used to have this? - - user reported (on a 35min encode) that the output of clock() - (of type clock_t) was rolling over and becoming negative. - On his system, clock_t is a signed 32 bit int. - -2002-05-12 18:47 markt - - * INSTALL: - - removed info about vorbis encoding from INSTALL - -2002-05-12 18:01 markt - - * ltmain.sh: - - applied patch to ltmain.sh - from sourceforge.net bug report. it passes LDFLAGS on to the - linker? - - *** ltmain.sh.org Sun Oct 22 14:06:32 2000 - --- ltmain.sh Sun Apr 28 11:56:54 2002 - *************** - *** 818,824 **** - convenience= - old_convenience= - deplibs= - ! linkopts= - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - --- 818,824 ---- - convenience= - old_convenience= - deplibs= - ! linkopts="$LDFLAGS" - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - -2002-05-12 17:20 markt - - * include/lame.h, libmp3lame/lame-analysis.h: - - added documentation to lame.h for lame_decode* functions - - uped READ_AHEAD from 10 to 40 for the frame analyzer - -2002-05-12 13:52 takehiro - - * libmp3lame/: bitstream.c, l3side.h, quantize.c, quantize_pvt.c, - quantize_pvt.h, takehiro.c, util.h, vbrquantize.c, vbrquantize.h - (takehiro-2002_05_07-experimental): - - big data structure update (2) - - this is very alpha. check is not done yet, but I should have sleep tonight :p - - "make test" runs fine. but mp3x, vbr-new needs more test. abr mode aborts floating exception. - - almost all the structured data, like l3_xmin, scalefac, distort, ... are now simple FLOAT8/integer array. - - calc_noise() and so on is very simple code and very fast, because we can handle the long/short block by same code, - - new member "window" and "width" are added to gr_info. - -2002-05-12 09:30 takehiro - - * libmp3lame/quantize.c: - - fix inc_scalefac_scale() ignoring preflag. - -2002-05-12 08:29 takehiro - - * Makefile.in (takehiro-2002_05_07-experimental): - - regen(forgot to check in) - -2002-05-12 08:02 takehiro - - * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): - - trivial cleanup - -2002-05-12 08:02 takehiro - - * libmp3lame/reservoir.c (takehiro-2002_05_07-experimental): - - because #define NORES is not working as it was, I remove it. - -2002-05-12 07:48 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h - (takehiro-2002_05_07-experimental): - - fix mp3x scalefactor display when scfsi used and cleanup on set_pinfo(). - fix warning arround calc_klemm_noise(). - -2002-05-12 07:30 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h - (takehiro-2002_05_07-experimental): - - noise calculation cleanup. - - delayed calculation of klemm_noise and it is shared to store in max_noise. - - max_noise, tot_noise and over_noise are now "B" order, not "dB". - -2002-05-11 18:49 markt - - * lame.spec.in: - - new lame.spec.in file from Yosi. - -2002-05-11 18:29 markt - - * libmp3lame/: quantize.c, quantize_pvt.c: - - applied Takehiro's bug fix for single channel bit reservoir usage - for pre-echo control. - -2002-05-11 18:28 takehiro - - * Makefile.am, libmp3lame/bitstream.c, libmp3lame/lame.c, - libmp3lame/quantize.c, libmp3lame/reservoir.c, - libmp3lame/takehiro.c, libmp3lame/vbrquantize.c - (takehiro-2002_05_07-experimental): - - not testing much, but I think now best_huffman_divide==2 works. - - default quality setting is changed to 3, and "make test" is done with that. - - quality setting 0,1, and 2 with CBR/ABR/VBR-old mode uses best_huffman_divide==2. - - best_scalefac_store() is not called in inner loop. - - "lame -q 2 foo.wav foo.mp3" runs about half or more slower speed than that of "lame -q 3 ..." - -2002-05-11 17:26 takehiro - - * libmp3lame/: quantize_pvt.c, quantize_pvt.h, takehiro.c - (takehiro-2002_05_07-experimental): - - combination of small patches mainly to get more tight coupling/inlining - optimization. - - in quantize_pvt.c, some functions are now static. - - some "char" type table is now "int" - - quantize_xrpow*() are moved from quantize_pvt.c to takehiro.c, and they are static function. - - slen1_tab[] and slen2_tab[] are moved to takehiro.c - -2002-05-11 16:42 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - oops, checked in the older one. fix CBR bit allocation. - -2002-05-11 16:28 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h, - reservoir.c, reservoir.h (takehiro-2002_05_07-experimental): - - fix --vbr-old for newer resovoir handling code. - now it produces bit-by-bit identical from the main branch with my "limited test". - -2002-05-11 14:39 takehiro - - * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): - - sync with main tree - - Robert's modification, 'more time consuming strategy to handle the case when more bits used than available' - -2002-05-11 14:12 takehiro - - * libmp3lame/: quantize.c, vbrquantize.c - (takehiro-2002_05_07-experimental): - - fix vbr-new arround bin_search_stepsize(). - it ignores part2_length to calculate cod_info->part2_3_length. - - consider part2_length inside of bin_search_stepsize(), not caller side. - -2002-05-11 13:49 takehiro - - * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): - - fix for vbr-new to work with new bin_search_stepsize() - -2002-05-09 23:25 robert - - * libmp3lame/vbrquantize.c: - - vbr-new: - more time consuming strategy to handle the case when more bits used than available - -2002-05-08 22:28 takehiro - - * libmp3lame/quantize_pvt.h (takehiro-2002_05_07-experimental): - - oops I missed the merging. - -2002-05-08 22:27 takehiro - - * libmp3lame/: lame.c, quantize.c, quantize_pvt.h, util.h - (takehiro-2002_05_07-experimental): - - bin_stepsearch() hack. - separete stepsize for each channel that we will use next frame - little bit faster. - -2002-05-08 21:30 takehiro - - * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): - - fix warning - -2002-05-08 21:07 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.c, vbrquantize.c - (takehiro-2002_05_07-experimental): - - sync with robert's latest patch on mainline. - - allow best huffman divide to be used in vbr-new - - moved ms_convert() - -2002-05-08 21:00 takehiro - - * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): - - monoraul bitallocation patch. - - thanx Robert to revert. and sorry for the trouble. - I made my own branch and check the code on this. - if I get the "bit-by-bit identical" output, I will merge the branch. - I will follow the main line changes as possible. - - till then, bye for now. see you later, at the merging time. - -2002-05-07 23:08 robert - - * libmp3lame/: quantize_pvt.h, vbrquantize.c: - - allow best huffman divide to be used in vbr-new - -2002-05-07 21:24 robert - - * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h: - - moved the tiny function ms_convert from quantize_pvt.c to quantize.c--the - only client for it--giving a little speed increase - -2002-05-07 21:11 robert - - * libmp3lame/: quantize.c, quantize_pvt.h, vbrquantize.c: - - better decoupling of vbrquantize.c and quantice.c - -2002-05-07 20:21 robert - - * libmp3lame/: bitstream.h, quantize_pvt.h, reservoir.h, util.h: - - sorry Takehiro, we are back to the last known working version from Sunday - 13:35 UTC now - -2002-05-07 20:15 robert - - * libmp3lame/: bitstream.c, encoder.c, quantize.c, quantize_pvt.c, - reservoir.c, takehiro.c, util.c, vbrquantize.c: - - sorry Takehiro, we are back to the last known working version from Sunday - 13:35 UTC now - -2002-05-06 16:03 takehiro - - * libmp3lame/quantize.c: - - fix for new reservoir handling code with my ABR patch. - we don't need the totbits, because the reservoir size is reduced in - ResvAdjust() in gr/ch loop and reservoir handler uses it. - -2002-05-06 15:49 takehiro - - * ACM/: .cvsignore, ADbg/.cvsignore, tinyxml/.cvsignore: - - added cvsignore to ignore Makefile, etc. - -2002-05-06 15:30 takehiro - - * include/lame.h, libmp3lame/bitstream.c, libmp3lame/encoder.c, - libmp3lame/quantize.c, libmp3lame/reservoir.c: - - cleanup. remove a compiling problem and some warnings. - -2002-05-05 18:34 takehiro - - * libmp3lame/quantize.c: - - one more outer_loop() fix for VBR. - -2002-05-05 18:18 takehiro - - * libmp3lame/quantize.c: - - outer_loop() fix for vbr_rh and vbr_mtrh - -2002-05-05 17:37 takehiro - - * libmp3lame/quantize_pvt.c: - - update comment - -2002-05-05 17:17 takehiro - - * libmp3lame/: bitstream.c, bitstream.h, encoder.c, quantize.c, - reservoir.c, util.c, util.h: - - cleanup arround getframebits(). - -2002-05-05 16:50 takehiro - - * libmp3lame/: quantize.c, reservoir.c: - - fix NORES_TEST. and works not only for CBR (don't tell me that's useful :p) - -2002-05-05 16:40 takehiro - - * libmp3lame/: quantize.c, reservoir.c, reservoir.h: - - oops, I mis-checked in the old files. this is real one. - -2002-05-05 16:29 takehiro - - * libmp3lame/: quantize_pvt.c, reservoir.c, reservoir.h: - - clean up arround reservoir. - -2002-05-05 15:47 takehiro - - * libmp3lame/: quantize.c, reservoir.c, reservoir.h: - - trivial cleanup of arround resvoir. - -2002-05-05 15:34 takehiro - - * libmp3lame/quantize.c: - - cleanup arround inc_scalefac_scale() with new cod_info strcture. - -2002-05-05 14:35 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h: - - cleanup arround calc_noise() with new cod_info strcture. - -2002-05-05 13:59 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c, - vbrquantize.c: - - more cleanup of new cod_info structure, arround count_bits() - -2002-05-05 13:48 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.h: - - inner_loop() is now static function. - -2002-05-05 13:43 takehiro - - * libmp3lame/: quantize.c, vbrquantize.c: - - changed outer_loop() algorithm. it needs lesser copy and runs faster. - - try with new scalefactor combination on work area, and if we get the better result, copy it to the returning area. - - make bin_search_StepSize() return the global_gain which assures targ_bits > found_bits. - -2002-05-05 13:33 robert - - * libmp3lame/: quantize.c, vbrquantize.c, vbrquantize.h: - - some clean-up in parameter passings due to recent change in cod_info structure - -2002-05-05 13:01 robert - - * libmp3lame/: encoder.c, quantize.c, quantize.h, vbrquantize.c, - vbrquantize.h: - - removed again some unused code I thought that was removed some long time ago - -2002-05-05 11:58 takehiro - - * libmp3lame/: bitstream.c, encoder.c, l3side.h, quantize.c: - - bit cleanup. removed window_switching_flag in l3side. - -2002-05-05 11:53 takehiro - - * libmp3lame/: quantize.c, quantize.h, vbrquantize.c: - - To fix it does not call the "freorder" and to support for mixed block, - the vbrquantize.c uses init_outer_loop()/init_xrpow() in quantize.c to - initializatoin. this may fix the MPEG2 problem (but not tested). - -2002-05-04 22:49 markt - - * configure, testcase.mp3: - - updated testcase.mp3 - -2002-05-04 15:48 takehiro - - * libmp3lame/: encoder.c, quantize.c, util.c, util.h: - - clean up and speed up (optimize for new data structure). - - devided init_outer_loop() into init_outer_loop() and init_xrpow(). This makes it easy to use GOGO-no-coda's xrpow calculation routine. - # thanx Robert, your fix makes me aware my mistake in VBR mode. - - - restoring duplicated data of VBR loop are removed. - - more mixed_block prepare. freorder() in util.c and its caller in encoder.c are moved into init_outer_loop() in quantize_pvt.c - -2002-05-04 15:36 takehiro - - * libmp3lame/quantize.c: - - trivial optimization - -2002-05-04 14:54 takehiro - - * libmp3lame/: bitstream.c, quantize.c, quantize_pvt.c, - vbrquantize.c: - - the signess process of l3_enc[] are moved from quantize*.c to bistream.c. bit faster, much simpler. - -2002-05-04 13:58 takehiro - - * libmp3lame/quantize_pvt.c: - - removed unused variables. - -2002-05-04 13:55 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.c: - - removed log calculation of klemm_noise in main loop - -2002-05-04 09:30 afaber - - * ChangeLog, Dll/BladeMP3EncDLL.c, Dll/BladeMP3EncDLL.h: - - Added quality setting to lame_enc.dll interface - -2002-04-30 22:20 robert - - * libmp3lame/version.h: - - 3.93 alpha 1 -> 3.93 alpha 2 - -2002-04-30 22:00 robert - - * libmp3lame/: quantize.c, quantize_pvt.c: - - fixing latest floating point exceptions I got for some days - within the calc noise routine - -2002-04-28 08:15 takehiro - - * libmp3lame/quantize_pvt.c: - - Mark, because max_noise is initialized with 1E-20 and refreshes Max(max_noise, sfb_noise), so it will never lesser than 1e-20. - -2002-04-27 21:15 takehiro - - * libmp3lame/takehiro.c: - - bit faster best_huffman_divide(). - - use the pointer to the structure, not structure itself. - -2002-04-27 20:58 takehiro - - * configure, libmp3lame/bitstream.c, libmp3lame/bitstream.h, - libmp3lame/encoder.c, libmp3lame/l3side.h, libmp3lame/newmdct.c, - libmp3lame/newmdct.h, libmp3lame/quantize.c, - libmp3lame/quantize.h, libmp3lame/quantize_pvt.c, - libmp3lame/quantize_pvt.h, libmp3lame/takehiro.c, - libmp3lame/vbrquantize.c, libmp3lame/vbrquantize.h: - - large data structure update (1) - - mdct values (xr), encoded values (l3_enc), and scalefactors (scalefac) are in the gr_info structure. - - it runs faster. - - reduce stack size but require large III_side_info_t and lame_global_flags. - -2002-04-27 20:41 takehiro - - * libmp3lame/machine.h: - - fix --enable-all-float. when it enabled, FLOAT8_MAX should be FLT_MAX about 1e37, not 1e99. - -2002-04-27 18:24 takehiro - - * libmp3lame/bitstream.c: - - trivial - -2002-04-24 11:10 aleidinger - - * Makefile.unix: - - add a mingw comment from Hubert Hanghofer - -2002-04-22 17:51 markt - - * libmp3lame/quantize_pvt.c: - - Takehiro, when you changed this code: - - res->max_noise = 10.*log10(Max(1e-20,max_noise )); - res->klemm_noise = 10.*log10(Max(1e-20,klemm_noise)); - - to: - - res->max_noise = 10.*log10(max_noise); - res->klemm_noise = 10.*log10(klemm_noise); - - I started getting FPE (I always compile with --enable-debug - which aborts on FPE). I went ahead and changed it back- it should - have little effect. - -2002-04-21 20:31 afaber - - * Dll/BladeMP3EncDLL.c: - - Added additional debug flags - -2002-04-21 18:10 takehiro - - * libmp3lame/l3side.h: - - remove unused definition - -2002-04-21 18:05 takehiro - - * libmp3lame/lame.c: - - fix typo - -2002-04-21 17:33 takehiro - - * libmp3lame/lame.c: - - trivial(reduce magic number) - -2002-04-21 17:03 afaber - - * Dll/BladeMP3EncDLL.c: - - Avoid the VBR Tag space was written when VBR method was disabled - (caused empty frame in fornt of MPEG stream for certain CBR settings) - -2002-04-21 16:56 takehiro - - * frontend/parse.c, include/lame.h, libmp3lame/bitstream.c, - libmp3lame/quantize.c, libmp3lame/set_get.c, - libmp3lame/takehiro.c, libmp3lame/util.h: - - new option, --substep, pseudo substep noise shaping now works. - - new set_get function, lame_set_substep(), lame_get_substep() - - final fix of "do substep" region of selected scalefactor. - - noise_shaping_amp == 3 is removed and the method of how to use substep is selecte by the new member "substep" in structure "lame_internal_flags". - -2002-04-21 13:57 takehiro - - * libmp3lame/bitstream.c: - - trivial optimization: gfp/gfc cleanup - -2002-04-20 22:31 robert - - * Makefile.unix: - - [no log message] - -2002-04-20 20:40 takehiro - - * libmp3lame/: bitstream.c, encoder.c, l3side.h, newmdct.c, - quantize.c, quantize_pvt.c, takehiro.c, vbrquantize.c: - - simplify the structure. - l3_side->gr[gr].ch[ch].tt is now known as l3_side->tt[gr][ch]. - -2002-04-20 20:31 takehiro - - * libmp3lame/l3side.h: - - fix misleading indent - -2002-04-20 20:28 takehiro - - * libmp3lame/takehiro.c: - - prepare for mixed block support: count_bits() and best_scalefac_store(). - fix bug of noise_shaping_amp==3 on a long block. - -2002-04-20 20:17 takehiro - - * libmp3lame/quantize.c: - - more mixed_block preparation: inc_scalefac_scale(), amp_scalefac_bands() - -2002-04-20 20:16 takehiro - - * libmp3lame/quantize_pvt.c: - - for better mixed_blcok support, make calc_xmin() use cod_info->sfb_lmax, etc. - -2002-04-20 19:54 takehiro - - * libmp3lame/quantize.c: - - fix mixed mode (long block max sfb) - -2002-04-20 19:50 takehiro - - * libmp3lame/: l3side.h, quantize.c, quantize_pvt.c: - - more generalized mixed_block support and considering in MPEG2/2.5 - - added new members to cod_info. psy_lmax and psy_smax. - -2002-04-20 19:39 takehiro - - * libmp3lame/quantize.c: - - we don't need two elements of l3_xmin. - -2002-04-20 19:34 takehiro - - * libmp3lame/quantize_pvt.c: - - - calc_xmin() supports mixed_block noise calculation. - - mixed_block parameter(long block end point and short block start point) fix for calc_noise() - -2002-04-20 18:51 takehiro - - * libmp3lame/quantize_pvt.c: - - calc_noise() supports mixed_block noise calculation. - -2002-04-20 18:40 takehiro - - * libmp3lame/quantize_pvt.c: - - remove out-of-date comments - -2002-04-20 18:37 takehiro - - * libmp3lame/: machine.h, quantize_pvt.c: - - first step of clean up calc_noise() for preparing mixed block support. - - removed unused variables - - make the two loops (long and short) same structure. - -2002-04-20 11:49 robux4 - - * ACM/lameACM.dsp: - - Added the preset to compile the project (not used... yet) - -2002-04-19 14:51 bouvigne - - * Dll/BladeMP3EncDLL.c: - - Now the dll should properly applying mono and resampling settings even if presets are used - -2002-04-19 11:23 bouvigne - - * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: - - alt-presets now used from inside libmp3lame - -2002-04-17 22:13 robert - - * Makefile.unix: - - missing presets.c added - -2002-04-17 08:11 aleidinger - - * configure: - - regen - -2002-04-17 08:08 aleidinger - - * configure.in: - - bump version - -2002-04-16 19:47 markt - - * testcase.mp3: - - updated testcases (just because CVS version bumped up to 3.93alpha) - -2002-04-15 18:36 markt - - * libmp3lame/version.h: - - updated version to 3.93 alpha 1 - -2002-04-15 16:42 bouvigne - - * frontend/parse.c, libmp3lame/presets.c: - - abr presets now into libmp3lame - -2002-04-15 11:51 bouvigne - - * frontend/parse.c: - - --cbr - -2002-04-15 11:42 bouvigne - - * libmp3lame/lame.c: - - 3dnow identification - -2002-04-15 08:16 aleidinger - - * Makefile.in, configure: - - regen - -2002-04-15 06:58 markt - - * Makefile.in, configure, debian/Makefile.in: - - got automake 1.5 and ran it: - -2002-04-15 06:57 markt - - * debian/Makefile.am: - - updated debian/Makefile.am but my version of automake - is too old: - - debian/Makefile.am:5: require version 1.5, but have 1.4-p5 - -2002-04-15 06:47 markt - - * testcase.mp3, doc/html/history.html, libmp3lame/version.h: - - bumped up version number to 3.92 for release - -2002-04-15 06:46 markt - - * ChangeLog: - - ran cvs2cl.pl - -2002-04-14 12:21 afaber - - * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.def, BladeMP3EncDLL.h: - - Added strict-iso option to the interface, added output samplerate parameter to the debug log file - -2002-04-12 19:44 markt - - * libmp3lame/bitstream.c: - - added message regarding "internal buffer inconsistency error" to printout: - - ERRORF(gfc,"This is a fatal error. It has several possible causes:"); - ERRORF(gfc,"90% LAME compiled with buggy version of gcc using advanced optimizations"); - ERRORF(gfc," 9% Your system is overclocked"); - ERRORF(gfc," 1% bug in LAME encoding library"); - -2002-04-10 12:55 bouvigne - - * frontend/parse.c, include/lame.h, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: - - --noasm option - -2002-04-10 06:37 bouvigne - - * Makefile.MSVC: - - presets.c - -2002-04-09 15:43 bouvigne - - * Dll/BladeMP3EncDLL.c: - - dm presets in the dll are now used from initialized from inside libmp3lame - -2002-04-09 15:28 aleidinger - - * libmp3lame/Makefile.in: - - regen - -2002-04-09 14:46 bouvigne - - * frontend/parse.c, include/lame.h, libmp3lame/Makefile.am, - libmp3lame/libmp3lame_vc6.dsp, libmp3lame/presets.c, - libmp3lame/set_get.c: - - vbr presets are now part of libmp3lame - -2002-04-09 11:56 bouvigne - - * frontend/parse.c: - - --cbr switch - -2002-04-08 20:30 robux4 - - * ACM/acm.rc: - - minor change on the DLL versioning - -2002-04-08 18:43 robux4 - - * ACM/: ACM.cpp, AEncodeProperties.cpp: - - Added some new defines that might not be in all platform DDKs - (just in case) - -2002-04-08 18:41 aleidinger - - * Makefile.in, ACM/Makefile.in: - - regen - -2002-04-08 18:41 aleidinger - - * Makefile.am, ACM/Makefile.am: - - add new vc6 file - -2002-04-08 12:43 bouvigne - - * lame_vc6.dsw, ACM/lameACM_vc6.dsp: - - added ACM codec to vc6 workspace - -2002-04-08 09:56 bouvigne - - * lame_projects_vc6.dsp, lame_vc6.dsw: - - dummy project to generate all lame projects (select lame_projects in the workspace) - -2002-04-07 14:09 robux4 - - * ACM/TODO: - - Removed the things already done - -2002-04-07 14:07 robux4 - - * ACM/: ACM.cpp, AEncodeProperties.cpp, lameACM.dsp: - - Clicking on the LAME URL will open the default browser - -2002-04-07 13:31 robux4 - - * ACM/: AEncodeProperties.cpp, AEncodeProperties.h: - - Added tool-tips to the configuration dialog - -2002-04-07 12:28 robux4 - - * ACM/: ACM.cpp, acm.rc: - - Improved LAME version display - -2002-04-07 10:17 robux4 - - * ACM/: AEncodeProperties.cpp, AEncodeProperties.h, acm.rc, - lame_acm.xml, resource.h: - - ABR support now complete - -2002-04-06 14:12 aleidinger - - * lame.bat: - - bugfix, sorry, lost the mail for it - -2002-04-06 14:10 aleidinger - - * Makefile.in, ACM/Makefile.in, ACM/tinyxml/Makefile.in, - Dll/Makefile.in, frontend/Makefile.in, libmp3lame/Makefile.in, - mpglib/Makefile.in, configure: - - regen - -2002-04-06 14:09 aleidinger - - * configure.in: - - add tinyxml directory - -2002-04-06 14:08 aleidinger - - * Makefile.am, ACM/Makefile.am, ACM/tinyxml/Makefile.am, - Dll/Makefile.am, frontend/Makefile.am, libmp3lame/Makefile.am, - mpglib/Makefile.am: - - add new files - -2002-04-06 14:01 robux4 - - * ACM/: ACM.cpp, ACM.h, ACMStream.cpp, ACMStream.h: - - Encoding in ABR is starting to work - the different format strings are sorted correctly - -2002-04-06 11:34 robux4 - - * ACM/: ACM.cpp, ACM.h, AEncodeProperties.cpp, AEncodeProperties.h, - acm.rc, resource.h: - - First part of the ABR support - (missing use ABR settings on encoding when applied, configuration of ABR params) - -2002-04-06 11:32 robux4 - - * ACM/tinyxml/: readme.txt, tinyxml.cpp, tinyxml.dsp, tinyxml.h, - tinyxmlparser.cpp, xmltest.cpp: - - Updated with version 2.0 beta - -2002-04-04 13:35 bouvigne - - * lame_vc6.dsw, Dll/LameDll_vc6.dsp, frontend/lame_vc6.dsp, - libmp3lame/libmp3lame_vc6.dsp, mpglib/mpglib_vc6.dsp: - - I was annoyed to not be able to open the VC projects in vc6, so I added vc6 ones - -2002-03-22 18:29 afaber - - * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: - - Added lame presets to DLL interface - -2002-03-16 00:26 robert - - * Makefile.MSVC: - - no fast float to int conversion (Intel compiler) - -2002-03-16 00:21 robert - - * Makefile.MSVC, frontend/parse.c: - - fix for Win2k path seperator issue - found by Peter Hartley - -2002-03-15 23:16 robert - - * libmp3lame/quantize.c: - - bugfix, confusion about sideinfo length - found by "Kei Ishida" - -2002-03-06 00:02 robert - - * lame.dsw: - - VC Workspace for all(?) targets - -2002-03-03 18:57 aleidinger - - * libmp3lame/psymodel.c: - - remove /* withhin comment - -2002-03-03 18:38 markt - - * TODO: - - msvc6 notes - -2002-02-22 11:53 shibatch - - * libmp3lame/quantize_pvt.c: - - mp3x now displays quantization noise correctly when using nspsytune. - -2002-02-21 00:54 rbrito - - * debian/: changelog, control, copyright, lame-dev.docs, - lame-dev.files, lame-extras.files, lame.docs, liblame0-dev.docs, - liblame0-dev.files, liblame0.files, rules: - - Reorganization of the lame/debian directory for generating packages closer - to what the Debian Policy specifies. Still not there (the liblame0 package - still has a dreaded -rpath and thus, is not lintian clean). - -2002-02-17 15:24 takehiro - - * doc/html/: history.html, switchs.html: - - fix option description, and changed & to & - -2002-02-17 14:22 takehiro - - * libmp3lame/psymodel.c: - - now inter-channel masking works even when without --nspsytune or with -m s - -2002-02-17 13:59 takehiro - - * libmp3lame/psymodel.c: - - fix for --enable-all-float. - -2002-02-17 13:55 takehiro - - * frontend/parse.c, include/lame.h, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, - libmp3lame/set_get.c, libmp3lame/util.h: - - added inter channel masking effect. - gfp->interChRatio is the ratio of inter-channel masking effect, which could - be indicated by --interch X option. - The default value is 0.0, which means there's no inter-channel masking effect. - - I think ratio = 0.01 is OK for lower bitrates (like under 128kbps), - for like old days songs by the Beatles. - -2002-02-17 13:30 bouvigne - - * frontend/parse.c: - - presets down to 8kbps - -2002-02-17 08:12 takehiro - - * libmp3lame/util.h: - - prepare for the interchannel masking and substep noise shaping. - -2002-02-16 17:19 robux4 - - * ACM/tinyxml/: Makefile.tinyxml, changes.txt, dox, makedistlinux, - makedistwin.bat, readme.txt, tinyxml.cpp, tinyxml.dsp, tinyxml.h, - tinyxmlerror.cpp, tinyxmlparser.cpp, xmltest.cpp: - - Update with newer version of TinyXML - -2002-02-15 11:42 shibatch - - * frontend/parse.c, libmp3lame/psymodel.c: - - Now, nspsytune2 should work, maybe... - -2002-02-14 15:38 shibatch - - * libmp3lame/: lame.c, psymodel.c, util.h: - - Preparation work for nspsytune2. - -2002-02-13 16:30 aleidinger - - * frontend/rtp.h: - - compile fix for gcc 3.x from Len Walter - -2002-02-09 18:51 markt - - * frontend/gtkanal.c: - - added preflag count to statics window in mp3x - -2002-02-07 11:58 shibatch - - * libmp3lame/lame.c, libmp3lame/lame_global_flags.h, - frontend/parse.c, include/lame.h, libmp3lame/set_get.c: - - preparation work for nspsytune2 - -2002-02-04 17:10 markt - - * TODO, libmp3lame/util.c: - - temporary fix for resampling code. downsampling from 44101 to 44100 causes - a seg fault. Workaround in place for now: resampling disabled - if input/output samplerates agree to 4 digits. - -2002-02-01 18:58 markt - - * INSTALL, TODO: - - minor edits - -2002-02-01 17:41 markt - - * TODO: - - added notes about building a working, all encompasing MSVC6 - workspace to TODO list - -2002-02-01 17:37 markt - - * INSTALL: - - added nots about the ACM codec and directshow filter - to INSTALL - -2002-02-01 17:08 robux4 - - * ACM/ACM.cpp: - - Correct a problem when more than 2 channels are involved - -2002-01-31 21:17 robux4 - - * libmp3lame/lame.c: - - Less memory copying on interleaved buffer - -2002-01-31 21:03 uid32249 - - * ACM/tinyxml/: Makefile, Makefile.tinyxml: - - replace Makefile with Makefile.tinyxml - -2002-01-30 23:25 robux4 - - * ACM/: ACM.cpp, acm.rc: - - resolved FhG incompatibility, first beta version (can go public), no decoding yet - -2002-01-29 21:20 robux4 - - * ACM/: ACM.cpp, TODO, acm.rc: - - update version and removed unused buffers - -2002-01-29 20:51 robux4 - - * ACM/lameACM.dsp: - - build with special dynamic memory handling for ACM - -2002-01-29 20:37 robux4 - - * configMS.h, ACM/ACM.cpp, ACM/ACMStream.cpp, ACM/main.cpp: - - More debugging, special dynamic memory handling for ACM - -2002-01-28 22:33 ivanski - - * mac/LAME.mcp: - - CW6 Project File - -2002-01-28 22:13 ivanski - - * mac/: .DS_Store, LAME Carbon Debug.pch, LAME Carbon Final.pch, - LAME Classic Debug.pch, LAME Classic Final.pch, MacDLLMain.c, - Precompile_Common.h: - - Initial revision - -2002-01-28 22:13 ivanski - - * mac/: .DS_Store, LAME Carbon Debug.pch, LAME Carbon Final.pch, - LAME Classic Debug.pch, LAME Classic Final.pch, MacDLLMain.c, - Precompile_Common.h: - - Mac support - -2002-01-28 20:12 robux4 - - * ACM/: TODO, acm.rc: - - more TODO, added icon credit - -2002-01-28 18:18 markt - - * libmp3lame/lame.c, test/CBRABR.op: - - set devault qval to 2 for CBR and ABR. - -2002-01-25 18:18 robux4 - - * ACM/: TODO, lame.ico: - - new icon, more to do - -2002-01-25 17:51 robux4 - - * ACM/: ACM.cpp, ACM.h, AEncodeProperties.cpp, DecodeStream.cpp, - acm.rc: - - version 0.7.6, improved the smart output mode, corrected a config saving bug - -2002-01-25 17:47 robux4 - - * ACM/ADbg/: ADbg.cpp, ADbg.h: - - more explicit cast - -2002-01-25 11:27 aleidinger - - * misc/Makefile.in: - - regen - -2002-01-25 11:23 aleidinger - - * misc/Makefile.am: - - add lameid3.pl - -2002-01-25 11:22 aleidinger - - * doc/man/lame.1: - - some fixes - -2002-01-24 19:38 robux4 - - * ACM/: ACM.cpp, ACM.h, ACMStream.cpp, AEncodeProperties.cpp, - AEncodeProperties.h, TODO, acm.rc, lameACM.dsp, lame_acm.xml, - main.cpp, resource.h: - - introducing smart output mode, clean dialog boxes, config saving/loading now works - -2002-01-23 20:51 robux4 - - * ACM/DecodeStream.cpp: - - correct a build problem when ENABLE_DECODING is not defined - -2002-01-23 20:45 robux4 - - * ACM/readme.txt: - - More doc on the release files - -2002-01-23 20:40 robux4 - - * ACM/ADbg/ADbg.dsp: - - removed a minor build problem - -2002-01-23 20:39 robux4 - - * ACM/: ACM.cpp, ACM.dsw, ACM.h, ACMStream.cpp, ACMStream.h, - AEncodeProperties.cpp, AEncodeProperties.h, DecodeStream.cpp, - DecodeStream.h, LameACM.inf, TODO, acm.rc, lameACM.dsp, - lame_acm.xml, readme.txt, resource.h, tinyxml/Makefile, - tinyxml/changes.txt, tinyxml/readme.txt, tinyxml/test.dsp, - tinyxml/test.dsw, tinyxml/tinyxml.cpp, tinyxml/tinyxml.dsp, - tinyxml/tinyxml.h, tinyxml/tinyxmlerror.cpp, - tinyxml/tinyxmlparser.cpp, tinyxml/xmltest.cpp: - - Initial configuration dialog and XML config saving, initial decoding support (not working yet) - -2002-01-23 20:32 robux4 - - * mpglib/interface.h: - - better handling of C++ include - -2002-01-23 01:23 markt - - * lame.spec.in: - - commiting Yosi's new lame.spec.in file - -2002-01-22 19:45 robux4 - - * ACM/: ACM.cpp, ACM.dsw, ACM.h, ACMStream.cpp, ACMStream.h, - LameACM.inf, TODO, acm.rc, adebug.h, lameACM.def, lameACM.dsp, - main.cpp, readme.txt: - - clean the code, put LGPL license, add mpglib to the build - -2002-01-21 21:33 markt - - * TODO, configure, configure.in: - - added MAX OSX patch from sf bugtrack page - -2002-01-21 20:24 markt - - * USAGE, misc/lameid3.pl: - - added lameid3.pl script to misc directory. - (use to reencode mp3's and preserve id3 tags) - -2002-01-20 19:29 robux4 - - * libmp3lame/util.h: - - Better C++ handling - -2002-01-20 19:25 robux4 - - * Dll/BladeMP3EncDLL.h: - - Better C++ handling - -2002-01-20 15:05 aleidinger - - * configure: - - regen (ACM) - -2002-01-20 15:05 aleidinger - - * configure.in: - - Add ACM directory - -2002-01-20 15:04 aleidinger - - * ACM/Makefile.in: - - Add generated autoconf glue - -2002-01-20 14:59 aleidinger - - * ACM/ADbg/Makefile.in: - - Add generated autoconf glueACM/Makefile.in - -2002-01-20 14:58 aleidinger - - * ACM/: Makefile.am, ADbg/Makefile.am: - - Add automake clue (for make dist) - -2002-01-20 14:56 robux4 - - * ACM/lameACM.dsp: - - Eanble correct nasm support - -2002-01-20 14:03 robux4 - - * ACM/: ADbg/ADbg.cpp, ADbg/ADbg.dsp, ADbg/ADbg.h, ACM.cpp, - ACM.dsw, ACM.h, ACMStream.cpp, ACMStream.h, LameACM.inf, acm.rc, - adebug.h, lame.ico, lameACM.def, lameACM.dsp, main.cpp, - readme.txt, resource.h: - - Initial ACM support - -2002-01-19 11:52 bouvigne - - * README, TODO: - - updated TODO - -2002-01-17 16:43 aleidinger - - * Makefile.unix: - - NASM for Windows fixes (Hubert Hanghofer) - -2002-01-17 13:42 aleidinger - - * configure: - - regen - -2002-01-17 13:42 aleidinger - - * configure.in: - - - Update gcc 3.x and --enable-expopt=full flags based upon suggestions - and benchmarks from Hubert Hanghofer and - Craig Okruhlica . - - Remove gcc flags which are marked 'experimental' in the gcc 3.0.3 - documentation (noticed by Hubert Hanghofer). - - Add comment what "expopt" means, and what it doesn't mean. - -2002-01-17 13:42 aleidinger - - * Makefile.unix: - - - Update MINGW part pased upon patches and comments from - Hubert Hanghofer . - - Some minor changes for consistency. - - Note: this file is superseded by configure, except for systems where - configure didn't work, so if something is broken you have to send - patches. - -2002-01-17 05:08 takehiro - - * libmp3lame/i386/.cvsignore: - - added *.lo - -2002-01-09 12:09 takehiro - - * debian/.cvsignore, dshow/.cvsignore: - - added autogen Makefile to ignore - -2002-01-09 12:09 takehiro - - * frontend/.cvsignore, libmp3lame/.cvsignore, mpglib/.cvsignore: - - added *.il, for the intel compiler with ipo option - -2002-01-07 15:51 aleidinger - - * configure: - - oops, forgot to s/gtk12-config/gtk-config/ - -2002-01-07 15:48 aleidinger - - * configure: - - regen - -2002-01-07 15:48 aleidinger - - * configure.in: - - add gcc 3 specific optimizations, based upon suggestions by Sébastien FORESTIER - -2002-01-07 10:35 aleidinger - - * configure, frontend/Makefile.in: - - regen: Fix Cygwin and HPUX problems. - -2002-01-07 10:34 aleidinger - - * configure.in, frontend/Makefile.am: - - Fix Cygwin and HPUX problems. - -2002-01-01 16:55 robert - - * misc/lame4dos.bat: - - modified some remark - -2001-12-30 23:54 markt - - * doc/html/history.html: - - updated hostory.html from master copy in webpages project - -2001-12-29 17:36 takehiro - - * doc/html/history.html: - - fix option for pseudo-half step quantization - -2001-12-29 16:23 aleidinger - - * configure: - - regen: Welcome to 3.92 - -2001-12-29 16:21 aleidinger - - * configMS.h, configure.in, libmp3lame/version.h: - - Welcome to 3.92 - -2001-12-29 15:45 aleidinger - - * doc/html/history.html: - - sync with webpages/history.html - -2001-12-28 18:55 takehiro - - * .cvsignore: - - added stamp-h1 - -2001-12-28 12:47 aleidinger - - * Dll/Example.dsp, Dll/MP3EncDll.dsp, dshow/dshow.dsp, - frontend/lame.dsp, libmp3lame/libmp3lame.dsp, dshow/dshow.dsw, - mpglib/mpglib.dsp: - - unix->dos - -2001-12-27 16:12 aleidinger - - * doc/man/lame.1: - - add --alt-preset - -2001-12-27 12:50 aleidinger - - * misc/Makefile.in: - - regen: add missing files to the distribution - -2001-12-27 12:49 aleidinger - - * misc/Makefile.am: - - add missing files to the distribution - -2001-12-23 20:19 dibrom - - * libmp3lame/set_get.c: - - disable noise shaping 2 for "fast" extreme mode also - -2001-12-23 20:11 dibrom - - * libmp3lame/: set_get.c, vbrquantize.c: - - fix small bug and completely disable noise_shaping 2 with "fast" mode until a better solution can be found. - -2001-12-23 12:25 aleidinger - - * misc/Makefile.in: - - regen: add some files to the distribution - -2001-12-23 12:22 aleidinger - - * misc/Makefile.am: - - add auenc, mugeco,sh and mlame to distrib - -2001-12-22 13:32 aleidinger - - * DEFINES: - - document NON_LINEAR_PSYMODEL, remove KLEMM_43 - -2001-12-22 13:29 aleidinger - - * libmp3lame/psymodel.c: - - non linear psymodel (disabled by default) for GPSYCHO (nspsytune is untouched) - -2001-12-22 13:27 aleidinger - - * configure: - - regen: Welcome to v3.91 - -2001-12-22 13:26 aleidinger - - * configMS.h, configure.in, libmp3lame/version.h: - - Welcome to v3.91 - -2001-12-21 15:09 aleidinger - - * libmp3lame/machine.h: - - add icc check - -2001-12-21 15:05 aleidinger - - * libmp3lame/Makefile.in: - - regen: (add vbrquantize.h) - -2001-12-21 15:05 aleidinger - - * libmp3lame/Makefile.am: - - add vbrquantize.h - -2001-12-21 11:58 jd- - - * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.def, BladeMP3EncDLL.h: - - Added DLL interface function beEncodeChunkFloatS16NI for floating point audio - Samples are input within the range +/- 32768, in non-interleaved channels - -2001-12-21 03:29 markt - - * testcase.mp3: - - updated testcase - -2001-12-21 03:29 markt - - * libmp3lame/: version.c, version.h: - - updated version to lame 3.90 - -2001-12-20 23:11 markt - - * ChangeLog: - - update changelog - -2001-12-20 08:44 dibrom - - * libmp3lame/encoder.c: - - no message - -2001-12-20 08:33 dibrom - - * libmp3lame/: encoder.c, set_get.c, util.h, vbrquantize.c: - - improved quality of "fast" modes in certain situations - -2001-12-18 17:44 dibrom - - * frontend/parse.c: - - removed bitrate compensation stuff for the abr bitrates since it appears no longer necessary - -2001-12-18 17:28 dibrom - - * doc/html/switchs.html: - - added --alt-preset to the list of switches - -2001-12-18 17:13 dibrom - - * doc/html/history.html: - - documented many changes which have been made over 3.90 - -2001-12-18 16:27 dibrom - - * frontend/parse.c: - - small tweak to "standard" preset - -2001-12-18 16:14 dibrom - - * libmp3lame/: psymodel.c, quantize.c, set_get.c, util.h, - vbrquantize.c: - - small quality improvement for "extreme" and "insane", more bitrate tunings for "extreme" -- should average to 256kbps more often - -2001-12-18 11:16 aleidinger - - * configure: - - regen: vorbis changes - -2001-12-18 11:14 aleidinger - - * configure.in: - - - Change vorbis default to disabled - - Added -logg in the vorbis case (seems to be needed, I haven't tested it) - -2001-12-18 11:13 aleidinger - - * libmp3lame/vorbis_interface.c: - - Try to unbreak vorbis support (it can't get worser). - You may need the vorbis source and add -I/path/to/vorbis_src/includes/ to - CFLAGS prior to running configure - - Tested by: Jonathan Ryshpan on RedHat 7.2 - Submitted by: Cyrille Lefevre via FreeBSD problem report - -2001-12-17 04:40 markt - - * libmp3lame/quantize.c: - - Minor changes to Gabriel's adjustment for ABR bitrate. - Updated testcases. - - Added the following comments: - - /* - res_factor is the percentage of the target bitrate that should - be used on average. the remaining bits are added to the - bitreservoir and used for difficult to encode frames. - - Since we are tracking the average bitrate, we should adjust - res_factor "on the fly", increasing it if the average bitrate - is greater than the requested bitrate, and decreasing it - otherwise. Reasonable ranges are from .9 to 1.0 - - Until we get the above suggestion working, we use the following - tuning: - compression ratio res_factor - 5.5 (256kbps) 1.0 no need for bitreservoir - 11 (128kbps) .93 7% held for reservoir - - with linear interpolation for other values. - - */ - res_factor = .93 + .07 * (11.0 - gfp->compression_ratio) / (11.0 - 5.5); - -2001-12-16 16:00 bouvigne - - * libmp3lame/quantize.c: - - better abr bitrate approximation (will break abr testcases) - -2001-12-15 07:31 dibrom - - * libmp3lame/: psymodel.c, set_get.c, util.h, vbrquantize.c: - - More tunings for "fast" options for "standard" and "extreme" modes. - -2001-12-14 16:27 dibrom - - * libmp3lame/set_get.c: - - small tweak to "extreme" mode - -2001-12-14 07:00 dibrom - - * frontend/parse.c, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, - libmp3lame/quantize.c, libmp3lame/set_get.c, libmp3lame/util.h, - libmp3lame/vbrquantize.c: - - - changed --dm-presets to --alt-presets - - modified preset system - - applied tunings to vbr and psymodel, especially with --alt-preset standard, improves many difficult clips over the default vbr modes/presets (even those such as --r3mix) such as impulse cases (fatboy, spahm, them, gbtinc, ravebase, etc), pre-echo cases (castanets, death2, florida_seq, etc), tonality/js cases (2nd_vent, serioustrouble, bloodline, etc), low volume clips (piano, rach_original), many clips with problems with noise shaping 2, and much much more. Practically all cases should be equal or improved in quality. - - added --no-preset-tune to disable tunings for --alt-preset "modes" - -2001-12-03 18:15 markt - - * USAGE, frontend/parse.c: - - updated descriptions of some command line options, as per Dmitry - -2001-11-30 18:35 markt - - * lame.spec.in: - - patch from lassauge@mail.dotcom.fr for lame.spec.in file. - -2001-11-30 18:05 markt - - * include/lame.h, libmp3lame/lame.c: - - added lame_encode_buffer_long2(), since lame_encode_buffer_long() had - a scaling which restricted the precision of the input to the same - as if the input was 'short int' - - decided to leave the original routine, on the off chance there - is some program out there which uses it. - -2001-11-28 12:30 aleidinger - - * Makefile.in: - - regen - -2001-11-28 12:29 aleidinger - - * Makefile.am: - - change description of make test - -2001-11-26 15:21 takehiro - - * libmp3lame/takehiro.c: - - tuning of "pseudo half step noise shaping" with listening test. - and it works now even when scalefac_scale == 1 - -2001-11-26 15:19 takehiro - - * libmp3lame/: psymodel.c, VbrTag.c: - - fix warning - -2001-11-26 11:00 aleidinger - - * libmp3lame/version.h: - - Bump alpha version. - -2001-11-25 15:24 takehiro - - * libmp3lame/: lame.c, quantize.c, quantize_pvt.c, takehiro.c, - util.h: - - new noise shaping algorithm(pseudo half step noise shaping) - it brings slow but more accurate noise shaping. - enables with -q0 when CBR - -2001-11-19 21:26 markt - - * frontend/parse.c, libmp3lame/encoder.c, - libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: - - Reverted CVS back to before "gglower" option was added. - - --scale is a better way to do this, and contrary to Hans' claims, - --scale is also lossless. - -2001-11-18 22:44 robert - - * frontend/parse.c, libmp3lame/encoder.c, - libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: - - patch by Hans van der Heijden, original email: - - Datum: Sun, 18 Nov 2001 20:13:11 +0100 - Von: "Hans van der Heijden" - An: - - Hi Robert, - - For the first time, I compiled Lame, being a non-programmer (well, my work - involves programming, but that's a world apart with logic symbols, not C - language). - Because sometimes I have the urge to try something with the sourcecode. - - I'd like to add a switch to avoid the use of --scale for preventing - clipping. It manipulates global_gain, similar as the mp3gain tool does, but - this would be much more convenient of course (and better quality-wise, being - 'lossless'). - - Since I have no programming experience, can you take a look if I implemented - it correctly? The switch is called --gglower x, where each x-step stands for - 1,5 dB. gg is short for global gain. So for example, --gglower 1 will - decrease the output volume with 1,5 dB (0,841). I would probably use this by - default, it will be enough to prevent clipping for all but the oddest - samples/settings. - - I did a lot of copy/pasting from the --athlower switch, otherwise I probably - couldn't figure it all out! - Files involved are parse.c, lame_global_flags.h, set_get.c, lame.h and - bitstream.c. - I attached these files, if you search in each for 'gglower' you'll find the - added code. - Files came from the 11 Nov CVS. - - Also attached is a cygwin lame.exe if you like to play with it. - - Let's add it to CVS if it's OK (don't know how to do that myself, have to - tell Mark?). - - Bye, - Hans - -2001-11-17 11:17 aleidinger - - * Dll/Example.cpp, Makefile.unix, Dll/Makefile.mingw32: - - some mingw fixes from Vladislav Naumov - -2001-11-14 16:25 aleidinger - - * include/lame.h: - - fixes in comments - -2001-11-12 21:58 robert - - * libmp3lame/lame.c: - - [no log message] - -2001-11-12 17:36 aleidinger - - * include/lame.h: - - spelling fixes in comments - -2001-11-11 22:13 afaber - - * Dll/BladeMP3EncDLL.c: - - fixed bugs: 451879 and 438835 - -2001-11-11 15:08 aleidinger - - * doc/man/Makefile.in, configure: - - regen - -2001-11-11 15:06 aleidinger - - * libmp3lame/bitstream.c: - - add CVS Id - -2001-11-11 14:57 aleidinger - - * Makefile.in, Dll/Makefile.in, debian/Makefile.in, - doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, - dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, - misc/Makefile.in, mpglib/Makefile.in: - - regen - -2001-11-11 14:53 aleidinger - - * configure.in, frontend/Makefile.am: - - bugfix: --disable-{mp3x,mp3rtp} had build them - add: --disable-fontend - -2001-11-11 14:48 aleidinger - - * include/lame.h, libmp3lame/version.c, libmp3lame/version.h: - - remove mp3x version, it doesn't belong into the lib - (this breaks every app which uses the function, but mp3x should - be the only app which uses it, so this is ok because I moved it - into gtkanal.c) - -2001-11-11 14:47 aleidinger - - * frontend/gtkanal.c: - - move mp3x version here (from libmp3lame/version.[ch]) - -2001-11-11 11:31 aleidinger - - * libmp3lame/Makefile.in: - - regen - -2001-11-11 11:30 aleidinger - - * libmp3lame/Makefile.am: - - add missing headers - -2001-11-10 14:25 aleidinger - - * libmp3lame/VbrTag.c: - - at least fix the bus error on SPARC until Roel or someone else decides if we should fix it in another way - -2001-11-06 14:43 aleidinger - - * doc/html/switchs.html: - - resample only for encoding - -2001-11-06 12:41 aleidinger - - * doc/man/lame.1: - - athaa fixes, resample only for encoding - -2001-11-06 01:31 jd- - - * frontend/parse.c: - - Cleaned up preset help; send explicitly requested help to stdout, not stderr. - Modularized original presets, with aliases to preserve the original behavior. - -2001-11-05 15:26 dibrom - - * frontend/parse.c: - - modify lowpass values for dm-preset abr mode - -2001-11-05 05:46 dibrom - - * frontend/parse.c: - - Updated dm-presets - -2001-11-05 05:20 markt - - * testcase.mp3, libmp3lame/encoder.h: - - updated padding at end of MP3 to be 1152 samples. - So the last frame containing real data will always be followed - by a frame containing silence. (since most decoders will only - decode the second to last frame) - -2001-11-04 23:42 robert - - * Makefile.MSVC: - - lost i added - -2001-11-04 23:39 robert - - * Makefile.MSVC: - - optimizing some intel compile flags - -2001-11-04 18:51 robert - - * configMS.h: - - moved MSVC specific #pragma into MSVC section - -2001-11-04 18:50 robert - - * libmp3lame/quantize.h, DEFINES: - - removed MAXQUANTERROR precompiler define - -2001-11-04 18:48 robert - - * frontend/parse.c, include/lame.h: - - we don't want to make Naoki's msfix part of the API at this time, removed - from lame.h again. - parse.c compilation was broken by JD's presets_alias function. - -2001-11-04 18:31 robert - - * libmp3lame/: encoder.c, quantize.c, vbrquantize.c, vbrquantize.h: - - removed MAXQUANTERROR precompiler define - -2001-11-04 18:20 dibrom - - * frontend/parse.c: - - update dm-presets.. more to come shortly - -2001-11-04 18:19 dibrom - - * include/lame.h: - - added msfix - -2001-11-04 17:28 robert - - * include/lame.h, libmp3lame/lame.c: - - --vbr-mtrh is now known as --vbr-new - -2001-11-04 17:22 robert - - * Dll/BladeMP3EncDLL.c: - - --vbr-mtrh is now known as --vbr-new - -2001-11-04 13:39 aleidinger - - * libmp3lame/set_get.c: - - some fixes in the comments - -2001-11-04 13:39 aleidinger - - * frontend/parse.c: - - mark --{voice,radio,cd,studio,phone} as deprecated - -2001-11-04 13:33 aleidinger - - * doc/man/lame.1: - - remove --voice (deprecated) - -2001-11-04 13:01 jd- - - * frontend/parse.c: - - Moved "--dm-preset *" preset profiles to "--preset dm-*". - Added code for aliasing presets to multiple broad or narrow purpose labels. - -2001-11-04 08:37 jd- - - * frontend/parse.c: - - Allow specifying the r3mix preset with "--preset r3mix" for consistency - -2001-11-03 10:51 jd- - - * frontend/parse.c, include/lame.h, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: - - Renamed experimental switch "--ath-adjust" to "--athaa-type" for consistency. - All switches directly affecting ATH auto-adjustment begin with "--athaa-*". - -2001-11-03 09:31 jd- - - * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, - libmp3lame/lame.c, libmp3lame/lame_global_flags.h, - libmp3lame/psymodel.c, libmp3lame/set_get.c, libmp3lame/util.h: - - Added a bit of documentation to the long help. - To better reflect purpose, renamed adapt-thres-type and adapt-thres-level - to athaa-loudapprox and athaa-sensitivity, respectively. - -2001-10-30 20:31 markt - - * libmp3lame/VbrTag.c: - - When determining enc_delay and enc_padding from VBR header, check - for reasonable values. - -2001-10-29 22:00 markt - - * frontend/get_audio.c, frontend/main.c, frontend/main.h, - frontend/parse.c, include/lame.h, libmp3lame/VbrTag.c, - libmp3lame/VbrTag.h, libmp3lame/lame.c, - libmp3lame/mpglib_interface.c, mpglib/interface.c, - mpglib/mpglib.h: - - VbrTag.c: GetVBRTag() updated to parse enc_delay, enc_padding fields - enc_delay is used by 'lame --decode' to determine how many samples - to skip at the beginning during decoding. - -2001-10-29 20:01 markt - - * frontend/main.c: - - for --nogap option, do not allow Xing VBR tag. - - We should also not allow id3 tags and --nogap, but the are not turned on by - default, and it is more than a 3 line fix :-) - -2001-10-29 08:41 bouvigne - - * libmp3lame/: gain_analysis.c, gain_analysis.h: - - adding gain analysis files - -2001-10-29 06:08 markt - - * frontend/main.c, libmp3lame/VbrTag.c, - libmp3lame/lame_global_flags.h, mpglib/interface.c: - - --nogap and --nogapout fixed in frontend. didn't check - if output is really gapless - hopefully no bugs have crept into - that while --nogap was broken. - -2001-10-28 22:24 markt - - * libmp3lame/VbrTag.c, libmp3lame/bitstream.c, - libmp3lame/lame_global_flags.h, libmp3lame/tables.c, - libmp3lame/util.c, mpglib/interface.c: - - Fixed bug in VbrTag.c which is why Xing tag was broken for MPEG2 - files. - - This code: - - if( h_id == 0 ) - pTagData->samprate >>= 1; - - was, for unknown reasons, cutting the samplrate down by - a factor of two for MPEG2, causing the framesize of the Xing - header to be too large, causing it to overwrite the first - valid MP3 frame. - -2001-10-25 11:54 roelvdb - - * libmp3lame/VbrTag.c: - - undo previous edit, misunderstanding - -2001-10-24 23:59 roelvdb - - * libmp3lame/VbrTag.c: - - if ABR, {store bitrate <=255} else { use 4 low bits to store bitrateindex so "-b" for VBR(/CBR) is known. 0F for freeformat} - -2001-10-24 20:45 markt - - * testcase.mp3: - - updated testcases - -2001-10-24 16:33 aleidinger - - * doc/man/lame.1: - - sync with HTML - -2001-10-24 12:44 bouvigne - - * doc/html/: basic.html, examples.html, history.html, node6.html, - switchs.html: - - doc fixes - -2001-10-24 12:32 bouvigne - - * doc/html/switchs.html: - - a small athtype doc modif - -2001-10-23 16:35 bouvigne - - * doc/html/switchs.html: - - fixes from Dmitry - -2001-10-23 16:17 bouvigne - - * doc/html/switchs.html: - - fixes from Alexander - -2001-10-23 14:06 aleidinger - - * doc/man/lame.1: - - add line breaks, expand examples section, add ID3 section, fixes - -2001-10-23 14:06 aleidinger - - * frontend/main.c: - - fix for cygwin/mingw from egor duda - -2001-10-22 21:31 roelvdb - - * libmp3lame/VbrTag.c: - - no message - -2001-10-22 13:25 aleidinger - - * doc/man/lame.1: - - update based on HTML version - -2001-10-21 17:00 bouvigne - - * doc/html/: basic.html, switchs.html: - - doc - -2001-10-20 16:32 aleidinger - - * Makefile.unix: - - Submitted by: "Vladislav Naumov" - - I canged number 2 of his fixes to be equal to configure.in - (-O3 is the highest official supportes optimization option, some of - the options are superfluous (because they are included in -O3), some may - perhaps change the ABI (ABI, not API!), e.g. -malign-*). - - Quote: - 1. NOUNIXCMD = YES (don't use shell & sed) - 2. CC_OPTS are set to produce optimized code. Somewhat faster. - 3. frontend_sources & lib_sources are now fixed. - GNU Make version 3.79.1 croaked about recursive variable. - 4. ASFLAGS are correctly set, 'make -fMakefile.unix UNAME=MSDOS HAVE_NASM=YES' - works smoothly (if you have nasm.exe, of course :)) - -2001-10-20 16:28 aleidinger - - * Dll/Makefile.mingw32: - - Submitted by: "Vladislav Naumov" - - Quote: - This makefile compiles lame_enc.dll with mingw32 (and possibly cygwin) - Of course, you must first build ../libmp3lame/libmp3lame.a. - liblame_enc.a can be used to link the lame_enc.dll to your programs. - Tested with EAC 0.9pb9 (my own favorite, http://www.exactaudiocopy.de/). - -2001-10-19 17:39 bouvigne - - * libmp3lame/VbrTag.c: - - headering... - -2001-10-18 19:55 bouvigne - - * doc/html/switchs.html, frontend/parse.c: - - documenting...hopefully nearly finished - -2001-10-17 19:29 robert - - * frontend/main.c: - - patch by Gian-Carlo Pascutto - - I saw someone reported a problem with my --nogapout - switch on the mailinglist. I have done a quick attempt - to fix the problems (and address another potential one). - - I haven't actually tested the fixes, but I'm reasonably - sure they are correct, or at least they show how to - address the problem. - -2001-10-17 13:23 roelvdb - - * libmp3lame/VbrTag.c: - - after discussing with Gabriel added some more AQ flag refinements (--athonly,--noath,--scale-*, free format) - - and - - made #define MAXFRAMESIZE 2880, because LAME used to fill the freeformat 640 LAME Tag with junk at the end. - -2001-10-17 11:31 aleidinger - - * configMS.h: - - fix VERSION after last commit - -2001-10-17 01:41 roelvdb - - * libmp3lame/VbrTag.c: - - added overflow protection to that lowpass field in the LAME Tag, just in case someone enters a very high lowpass value. - -2001-10-17 01:18 roelvdb - - * libmp3lame/lame.c: - - 44.1kHz: - instead of "transition band: 22228 Hz - 22761 Hz" lowpass filter, - "-b320 -a" (mono) will now give "transition band: 21517 Hz - 22050 Hz" - (as in the stereo case) - - likewise on other samplerates. I can imagine this can be done in a much more intelligent fashion. - - also commented out a bit of similar code that seems obsolete now? - -2001-10-16 18:49 bouvigne - - * doc/html/switchs.html: - - documenting - not finished - -2001-10-16 18:07 afaber - - * configMS.h, include/lame.h, libmp3lame/VbrTag.h, - libmp3lame/bitstream.c, libmp3lame/fft.c, libmp3lame/fft.h, - libmp3lame/lame.c, libmp3lame/psymodel.c, libmp3lame/quantize.h, - libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, - libmp3lame/util.h: - - Fixed some compiler warnings (mainly differences between function declaration and definition) - -2001-10-16 15:00 roelvdb - - * libmp3lame/VbrTag.c: - - added the needed "else", fixed lowpass, added -V0/V1, --nores, -k, ... - -2001-10-16 10:35 bouvigne - - * doc/html/history.html: - - history - -2001-10-15 13:44 roelvdb - - * libmp3lame/VbrTag.c: - - fixed a wrong bracket causing >=256 CBR not to be AQ - added ABR>=256 S as AQ, consistent with CBR >=256S - -2001-10-13 19:00 markt - - * testcase.mp3: - - updated testcases - -2001-10-13 14:02 aleidinger - - * include/lame.h, frontend/parse.c, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/set_get.c, - libmp3lame/util.c: - - add --scale-l and --scale-r options - - Requested by: fasttimes@mochamail.com - Written by: mp3gain@hotmail.com - -2001-10-13 14:00 aleidinger - - * doc/man/lame.1: - - update from "lame --longhelp" - -2001-10-13 14:00 aleidinger - - * USAGE, doc/html/switchs.html: - - add --scale-l, --scale-r - -2001-10-12 18:39 bouvigne - - * doc/html/: index.html, switchs.html: - - a few doc updates - not yet finished - -2001-10-11 20:06 bouvigne - - * USAGE, doc/html/basic.html, doc/html/examples.html, - doc/html/history.html, doc/html/id3.html, doc/html/modes.html, - doc/html/node6.html, doc/html/switchs.html: - - [no log message] - -2001-10-11 12:21 aleidinger - - * libmp3lame/: encoder.c, util.h: - - fix misunderstanding of gfc->padding - -2001-10-10 02:17 roelvdb - - * libmp3lame/: VbrTag.c, lame.c: - - consequence, it's "LAME Tag", longhelp said Xing header - -2001-10-10 02:15 roelvdb - - * frontend/parse.c: - - consequence, it's "LAME Tag" - -2001-10-10 02:00 roelvdb - - * frontend/main.c: - - added 13 " if (silent < 10) "s to make "lame --decode --quiet" really silent. there's still a LF I can't locate though... - -2001-10-10 01:42 roelvdb - - * Dll/BladeMP3EncDLL.c: - - removed experimental X from --r3mix - -2001-10-09 23:09 roelvdb - - * libmp3lame/VbrTag.c: - - adds delays/padding to tag, no range check and tested exclusively on windows - -2001-10-09 22:34 roelvdb - - * frontend/parse.c: - - test commit CVS to fix --r3mix size increase (robert identified is as -X being used) - -2001-10-09 14:30 aleidinger - - * libmp3lame/version.h: - - bump alpha version - -2001-10-09 14:26 aleidinger - - * Dll/BladeMP3EncDLL.c, frontend/parse.c, libmp3lame/VbrTag.c, - libmp3lame/encoder.c, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/util.h: - - Use the official enum names from lame.h instead of numbers or defines. - -2001-10-08 12:54 bouvigne - - * libmp3lame/util.c: - - athtype fix - -2001-10-06 19:25 markt - - * include/lame.h: - - added notes about scaling. there are some inconsistencies in - the API: - - lame_encode_buffer() takes short int as input, range +/- 32768 - lame_encode_float() takes float, but data must be in the range - +/- 32768 - lame_encode_double() takes double, but data must be in the range - +/- 32768 - - lame_encode_int() takes int, but data must be in the range of 'int' - for 32bit ints, this is +/- 2147483684 - -2001-10-06 19:17 markt - - * frontend/get_audio.c: - - updated error messages we now support 8,16,24 and 32 bit input - -2001-10-06 19:05 markt - - * frontend/get_audio.c, frontend/gtkanal.c, frontend/parse.c, - include/lame.h, libmp3lame/lame.c: - - added support for 24 and 32 bit when not using libsndfile. - jd had already added the code to do this, just had to make - the libsndfile --bitwidth option available when not using - libsndfile. Also updated unpack_read_samples to support 32bit. - - Could not test this since I dont have any 24 bit files, and - sox cant seem to create them. - -2001-10-05 22:43 robert - - * libmp3lame/: lame.c, machine.h, quantize_pvt.c, quantize_pvt.h, - vbrquantize.c: - - using -Xn similar to the old code to select different noise measurings with - the newer VBR code. the actual mapping is not final yet. - -2001-10-05 13:00 bouvigne - - * libmp3lame/util.c: - - ath 4 switches to ath 2 in cbr mode - -2001-10-05 12:59 bouvigne - - * libmp3lame/lame.c: - - made NsPsytune stopping using ath0 as default, as everyone is overriding the athwhen using nspsytune - -2001-10-05 12:20 bouvigne - - * Makefile.MSVC, libmp3lame/libmp3lame.dsp: - - makefile.msvc and projects on par? - -2001-10-04 10:01 aleidinger - - * libmp3lame/: VbrTag.c, VbrTag.h: - - fixes for Solaris 8 / add missing include - -2001-10-02 16:02 markt - - * frontend/: main.c, parse.c: - - added nogap patch from Gian-Carlo Pascutto. - - lame --nogapout --nogap file1.wav file2.wav file3.wav ... - - untested. - -2001-10-02 03:54 markt - - * configure: - - ran autoconf to make a new configure script - -2001-10-02 03:53 markt - - * INSTALL, configure.in, frontend/main.c, frontend/parse.c, - libmp3lame/lame.c, libmp3lame/vorbis_interface.c: - - split Vorbis support into two pieces: - - 1. - HAVE_VORBIS (decoding support). This code still works! - (at least it compiles - I have't actually run it). - Can be enabled with ./configure --with-vorbis. Changed the - default in configure.in to define HAVE_VORBIS - - 2. - HAVE_VORBIS_ENCODER - This is the code which hasn't compiled since Vorbis beta1. - Mainly because how you specify varous encoding "modes" has been - changed. It's probably not to much work to get this working, - but there is no reason for this to be in LAME. - -2001-10-02 00:00 markt - - * libmp3lame/: VbrTag.c, bitstream.c, bitstream.h, encoder.c, - lame.c: - - Music CRC computed on the fly. Code stubs in place for - decoding on the fly. - -2001-10-01 23:02 markt - - * libmp3lame/: VbrTag.c, bitstream.c, bitstream.h, encoder.c, - lame.c, util.h: - - started work to put in the ability to compute MusicCRC on - the fly, as well as decoding on the fly. - -2001-09-30 20:36 robert - - * frontend/parse.c, libmp3lame/bitstream.c, libmp3lame/bitstream.h, - libmp3lame/lame.c, libmp3lame/quantize.c, - libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, - libmp3lame/set_get.c, libmp3lame/util.c, libmp3lame/util.h, - libmp3lame/vbrquantize.c: - - removed some unused variable - -2001-09-28 21:29 markt - - * frontend/main.c: - - cpu affinity back to #define _WIN32 - -2001-09-28 21:13 markt - - * frontend/main.c: - - process affinity patch is back - -2001-09-28 20:46 markt - - * USAGE: - - more small updated to USAGE - -2001-09-28 20:38 markt - - * USAGE: - - updated USAGE to reflect Dmitry's -B comments - -2001-09-28 12:04 bouvigne - - * Makefile.MSVC: - - harmonization between makefile and project - -2001-09-27 13:33 bouvigne - - * libmp3lame/libmp3lame.dsp: - - 3dnow fft assembly - -2001-09-21 04:50 markt - - * testcase.mp3, frontend/main.c: - - updated testcases (lowpass added to Info tag?) - -2001-09-21 04:03 markt - - * frontend/main.c: - - disabled CPU affinity code. - should only be in a #ifdef NT-system, but I dont know what - the ifdef should be. - -2001-09-20 08:38 bouvigne - - * libmp3lame/libmp3lame.dsp, mpglib/mpglib.dsp: - - corrected dsp files for VC++. Should work also under VC5, but not tested. Please report success/error - -2001-09-20 07:15 bouvigne - - * libmp3lame/: VbrTag.c, lame.c: - - default lowpass stored in info tag - -2001-09-19 14:32 markt - - * testcase.mp3: - - updated testcase.mp3 - -2001-09-18 13:37 aleidinger - - * libmp3lame/util.c: - - Fix memory hole (allocation from psymodel_init()). - Found by: Michael Fink - -2001-09-17 23:54 markt - - * libmp3lame/: VbrTag.c, util.c: - - moved a 1M array from stack to heap in VbrTag.c - - Some OS, when launching LAME on a seperate thread, - allocate a tine (128K?) stack. moving this to the heap - is an ugly solution (requires a malloc() and free()) - but lets see if it fixes the reported segfaults. - -2001-09-17 21:17 markt - - * frontend/main.c, include/lame.h, libmp3lame/VbrTag.c, - libmp3lame/lame.c, libmp3lame/util.c: - - more code related to putting encoder padding into VBR tag - -2001-09-17 20:05 markt - - * include/lame.h, libmp3lame/VbrTag.c, libmp3lame/encoder.h, - libmp3lame/lame.c, libmp3lame/lame_global_flags.h, - libmp3lame/set_get.c: - - added new call to API, - lame_get_encoder_padding() - which returns the amount of padding appended to the input - during encoding. - -2001-09-17 19:15 markt - - * libmp3lame/util.c: - - moved MSVC cpu affinity code to the top of disable_FPE() - -2001-09-15 09:57 aleidinger - - * configure: - - regen - -2001-09-15 09:49 aleidinger - - * configure.in: - - Bugfix for libffm (Alpha architecture). - Submitted by: Simon Burge - -2001-09-14 17:37 markt - - * HACKING, README: - - added a note about LAME being threadsave to the HACKING file. - -2001-09-14 17:18 markt - - * libmp3lame/util.c: - - put Todd Richmond's EAC/lame SMP fix in util.c, - with all the messy code for setting floating point exceptions. - I put this in the - #if defined(_MSC_VER) - block, so it should only affect people using MSVC. - -2001-09-11 07:47 potsticker - - * libmp3lame/VbrTag.c: - - Changed id string from 'Xing' to 'Info' for CBR files only - -2001-09-08 18:39 potsticker - - * libmp3lame/VbrTag.h, frontend/main.c: - - Don't write Lame Tag status message if --quiet - -2001-09-08 18:35 potsticker - - * libmp3lame/VbrTag.c: - - Don't write Lame Tag status message if --quiet - -2001-09-08 18:27 potsticker - - * libmp3lame/: VbrTag.c, VbrTag.h: - - Don't write Lame Tag status message if --quiet - -2001-09-07 23:42 potsticker - - * libmp3lame/VbrTag.c, libmp3lame/lame.c, frontend/parse.c: - - Write Lame Tag for all files (unless -t switch used) - -2001-09-04 00:06 potsticker - - * libmp3lame/VbrTag.c: - - Implemented most of Lame Tag rev 0 (but no 'replay gain' yet) - -2001-09-03 23:45 potsticker - - * libmp3lame/: VbrTag.c, VbrTag.h: - - Implemented most of Lame Tag rev 0 (but no 'replay gain' yet) - -2001-09-03 23:43 potsticker - - * libmp3lame/id3tag.h: - - Moved some macro definitions into id3tag.h (referenced in VbrTag.c) - -2001-09-03 20:56 robert - - * libmp3lame/id3tag.c: - - cr/lf patch - -2001-09-02 20:07 potsticker - - * libmp3lame/: id3tag.h, id3tag.c: - - Moved some macro definitions into id3tag.h (referenced in VbrTag.c) - -2001-08-31 18:41 markt - - * libmp3lame/util.c: - - lowered tolerence in an assert() in the lowpass filtering - routine. - -2001-08-31 08:17 bouvigne - - * libmp3lame/: VbrTag.c, util.h: - - I hope it's fixed now - -2001-08-29 20:08 bouvigne - - * Dll/BladeMP3EncDLL.c, include/lame.h, libmp3lame/VbrTag.c, - libmp3lame/VbrTag.h, libmp3lame/version.c: - - first implementation of lame Xvbr tag from J Dee - -2001-08-28 18:51 markt - - * API, HACKING, frontend/parse.c, libmp3lame/lame_global_flags.h, - libmp3lame/psymodel.c, libmp3lame/set_get.c: - - msfix changes. forgot to commit them yesterday - -2001-08-28 17:06 aleidinger - - * Makefile.unix: - - OS/2 mods from slaughter@malaconet.org (in principle, I had to apply them by hand and modified it a little bit) - -2001-08-28 15:41 aleidinger - - * configure: - - oops... wrong gtk-config - -2001-08-27 21:06 aleidinger - - * configure: - - regen (+update to automake 1.5) - -2001-08-27 21:04 aleidinger - - * aclocal.m4, Makefile.in, Dll/Makefile.in, debian/Makefile.in, - doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, - dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, - misc/Makefile.in, mpglib/Makefile.am, mpglib/Makefile.in: - - update to automake 1.5 - -2001-08-27 21:04 aleidinger - - * Makefile.unix: - - USE_FFT3DN died some time ago - -2001-08-27 21:03 aleidinger - - * Makefile.am: - - fixes for the update and diff target if you build in a seperate directory - -2001-08-27 21:01 aleidinger - - * frontend/main.c: - - Bump MAX_NOGAP from 20 to 40, I wanted to make 34 gapless mp3s. - -2001-08-27 20:59 aleidinger - - * Makefile.am.global, config.guess, config.sub, depcomp, missing, - mkinstalldirs, misc/depcomp, mpglib/depcomp: - - update to automake 1.5 - -2001-08-27 20:56 aleidinger - - * DEFINES, Makefile.B32, Makefile.MSVC, Dll/MP3EncDll.dsp, - libmp3lame/libmp3lame.dsp, libmp3lame/vorbis_interface.c: - - remove USE_FFT3DN, this define died some time ago - -2001-08-27 20:55 aleidinger - - * configure.in: - - remove --malign-double completely - -2001-08-27 20:52 aleidinger - - * libmp3lame/fft.c: - - USE_FFT3DN -> HAVE_NASM - -2001-08-27 20:50 aleidinger - - * lame.spec.in: - - - Build and include docs and libs correctly - - Build extra programs - - Submitted by: Markus Linnala - - Note: - I didn't have a rpm based system, if this breaks feel free - to revert my commit, I'm at a "commit what isn't obviously - broken and seems to be a good idea" run at the moment. - -2001-08-27 20:49 aleidinger - - * doc/html/switchs.html, frontend/parse.c, USAGE: - - - OS/2 priority control - Submitted by: "DoC" (with minor changes by me) - -2001-08-27 16:40 markt - - * doc/man/lame.1, misc/Lame.vbs: - - typo in man page fixed, new Lame.vbs from - "Ralf Kempkens" - -2001-08-26 19:01 markt - - * configure.in: - - removed -malign-double, based on Klemm's email. - -2001-08-26 18:59 markt - - * configure.in: - - some missing quotes for AmigaOS section of configure.in, - submitted by Fredrik Mellstrom - - (I cant beieve there are still people out there using - an amiga :-) - -2001-08-26 18:38 markt - - * mpglib/: interface.c, mpglib.h: - - replaced "look_for_xing" variable with more descriptive name - "sync_bitstream". - -2001-08-21 19:48 bouvigne - - * frontend/parse.c: - - switching --vbr-new to mtrh - -2001-08-21 08:57 viral - - * debian/: changelog, control, lame-dev.docs, lame.docs, rules: - - Debian packaging modifications. - -2001-08-20 22:26 afaber - - * Dll/: BladeMP3EncDLL.c, MP3EncDll.dsp: - - Updated new R3Mix settings, use lame get/set function and version info - so I got rid of the version.h and lame_global_flag.h include files - -2001-08-20 20:54 robert - - * doc/html/contributors.html: - - adding Darin Morrison (author of dm presets) - -2001-08-16 08:21 robert - - * misc/abx.c: - - update of abx.c by Frank Klemm - -2001-08-15 21:58 robert - - * frontend/parse.c, libmp3lame/lame.c: - - making -Z a truely toggling switch - reordering the longhelp options list - dropping --extrahelp - -2001-08-15 00:37 robert - - * libmp3lame/lame.c: - - dropped a nagging message for --vbr-mtrh (nspsytune tuned for ...) - -2001-08-15 00:12 robert - - * frontend/parse.c, libmp3lame/util.c: - - update for --r3mix by Roel - -2001-08-14 21:46 robert - - * frontend/parse.c, libmp3lame/lame.c, libmp3lame/quantize_pvt.c, - libmp3lame/util.h, libmp3lame/version.h: - - some good presets tuned by Dibrom after die hard listening tests - --dm-preset {standard,xtreme,insane,metal} - and a switch to modify the --ns-treble setting for sfb21 by - --ns-sfb21 x - -2001-08-08 10:52 aleidinger - - * configure: - - regen - -2001-08-08 10:51 aleidinger - - * configure.in: - - - remove optimizations which get already switched on by -O2 or better - - new experimental optimizations - - bump version to 3.90 - -2001-08-08 10:50 aleidinger - - * configMS.h: - - bump version to 3.90 - -2001-08-07 20:41 afaber - - * libmp3lame/libmp3lame.dsp: - - Added NASM release build option - -2001-08-02 18:42 afaber - - * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h, Example.cpp, - MP3EncDll.dsp: - - Added NASM build option, added Very High Quality option - -2001-08-01 21:45 robert - - * frontend/parse.c, libmp3lame/lame.c, - libmp3lame/lame_global_flags.h, libmp3lame/quantize_pvt.c, - libmp3lame/set_get.c, libmp3lame/version.h: - - BUG fix in "on_pe", was allocating often more than the absolute limit of 4095 bits per granule - attention: testcases are most likely broken now! - -2001-07-26 23:05 robert - - * libmp3lame/: lame.c, psymodel.c, vbrquantize.c, version.h: - - VBR mtrh related, bring --remix near to --r3mix bitrate wise - -2001-07-25 20:19 robert - - * frontend/main.c: - - Michel SUCH, wildcard expansion for nogap using the OS/2 shell - -2001-07-24 12:13 aleidinger - - * configure: - - regen - -2001-07-24 12:12 aleidinger - - * configure.in: - - gcc 3.0 fix from Daniel T. Chen - -2001-07-23 08:11 aleidinger - - * aclocal.m4, configure: - - update to automake 1.4-p5 - -2001-07-23 08:08 aleidinger - - * Makefile.in, Dll/Makefile.in, debian/Makefile.in, - doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, - dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, - misc/Makefile.in, mpglib/Makefile.in, config.guess, config.sub: - - update to automake 1.4-p5 - -2001-07-23 08:05 aleidinger - - * Makefile.am.global: - - update to automake 1.4-p5 - -2001-07-22 19:24 robert - - * libmp3lame/: quantize.c, vbrquantize.c: - - small fixes - -2001-07-22 06:37 jd- - - * libmp3lame/encoder.c: - - Pushed the maximum auto-level adjustment of the ATH from 20 dB to 32 dB - -2001-07-20 23:56 robert - - * libmp3lame/quantize.c: - - small speed up for --vbr-old - -2001-07-20 01:01 robert - - * libmp3lame/: lame.c, quantize.c, quantize_pvt.c, vbrquantize.c, - version.h: - - 1) defaulted the old -Y code for --vbr-old - 2) new behaviour of -Y: turns off sfb21 noise shaping (VBR) - 3) some more tunings for --vbr-old - -2001-07-19 11:36 aleidinger - - * configure: - - regen - -2001-07-19 11:35 aleidinger - - * configure.in: - - - removed useless (because already handled by Cygwin) MS-DOS case - - bug fixes for alpha*-dec-osf*, *sgi-irix* and sparc*-sunos4* - - print a "please contact us" message for sparc*-sunos4* and *beos - (theses parts of configure.in are perhaps not neccessary) - -2001-07-18 20:16 robert - - * frontend/parse.c, libmp3lame/vbrquantize.c: - - vbr-mtrh related: encode sfb21, may bloat on heavy metal music - -2001-07-18 20:14 robert - - * misc/abx.c: - - update by Frank - -2001-07-16 19:35 robert - - * Dll/BladeMP3EncDLL.c, frontend/parse.c, include/lame.h, - libmp3lame/lame.c, libmp3lame/lame_global_flags.h, - libmp3lame/psymodel.c, libmp3lame/set_get.c, libmp3lame/util.h, - libmp3lame/version.h: - - adding a new switch --allshort - this one forces LAME to use short blocks on every granule - useful for testing the short block masking abilities - -2001-07-13 22:37 robert - - * libmp3lame/: psymodel.c, quantize.c, util.h, version.h: - - first try to fix the short block threshold calculation BUG - this patch tries to resolve the shortcommings for the short block - threshold calculation using VBR. Applying this patch for CBR/ABR - would break the testcases. It should not affect the vanilla --nspsy... - too, maybe later. - -2001-07-07 19:54 bouvigne - - * libmp3lame/reservoir.c: - - maxmp3buf was beeing ignored - -2001-07-05 21:25 robert - - * libmp3lame/quantize.c: - - fixing the assertion failures mentioned by Albert Faber - -2001-07-05 15:56 markt - - * configure: - - regenerated configure - -2001-07-05 15:55 markt - - * configure.in: - - updated gcc 2.96 check to use -O instead of -O1 - -2001-07-05 15:55 markt - - * configure: - - [no log message] - -2001-07-05 15:54 markt - - * configure.in: - - gcc 2.96 check - -2001-07-05 15:53 markt - - * libmp3lame/version.h: - - updated repository to 3.90alpha - -2001-07-05 15:35 markt - - * doc/html/history.html: - - updateded history file from web page cvs repository - -2001-07-05 15:32 markt - - * ChangeLog: - - update - -2001-07-05 15:27 markt - - * libmp3lame/version.h: - - updated to 3.89beta - -2001-07-02 21:45 robert - - * libmp3lame/quantize.c: - - bug fix for --nspsytune - minimum bits allocated was too low, resulting in assertion failures - -2001-07-02 21:08 robert - - * libmp3lame/lame.c: - - changing --vbr-new noise measuring back to its usual one - -2001-07-01 20:36 markt - - * libmp3lame/psymodel.c: - - unbreak CBR testcases. - -2001-07-01 20:04 markt - - * frontend/: get_audio.c, main.h, parse.c: - - patch from Nick Duffek - for signed/unsigned and bitwidth options. - -2001-07-01 16:48 robert - - * libmp3lame/lame.c: - - defaulting --vbr-mtrh to -q2 = -h - -2001-07-01 13:11 robert - - * libmp3lame/lame.c: - - allow --vbr-{old,new} to select between different ATH autoadjust types too - -2001-07-01 11:50 robert - - * libmp3lame/: lame.c, set_get.c: - - nspsytune related: - now it is possible to turn the scalefac_feature off again giving - --nspsytune -Z - the change was necessary, because of the hard coded -Z - -2001-07-01 05:24 jd- - - * libmp3lame/: encoder.c, lame.c, psymodel.c, util.h: - - Restructured ATH auto-leveling code to fix bug for "--adapt-thres-type 1"; - relaxed tuning for "--adapt-thres-type 2" for compromise with "--athtype 3" - (the previous bit rate is still available with "--adapt-thres-level -1.25") - -2001-06-30 16:45 robert - - * Makefile.MSVC: - - fix for compiling mp3x on windows using Makefile.MSVC - -2001-06-30 16:40 robert - - * frontend/parse.c: - - fix for compiling mp3x on windows using Makefile.MSVC - -2001-06-30 00:26 robert - - * frontend/parse.c, libmp3lame/lame.c, libmp3lame/psymodel.c, - libmp3lame/util.h, libmp3lame/vbrquantize.c: - - 2 new modes for --vbr-mtrh available by different -q n selections: - -q0 truely max noise - -q1 almost max noise - -2001-06-29 20:58 robert - - * libmp3lame/set_get.c: - - revive --nssafejoint --ns-{alto,treble,bass} - lame_set_exp_nspsytune is *not an on/off switch* - -2001-06-29 15:23 markt - - * configure, configure.in, libmp3lame/lame.c: - - patch for configure.in, replaced a bash specific loop, - from Oswald Buddenhagen - -2001-06-27 15:47 aleidinger - - * configure: - - regen - -2001-06-27 15:46 aleidinger - - * configure.in: - - some hardware specific optimization options for gcc - -2001-06-27 14:53 aleidinger - - * libmp3lame/i386/Makefile.in: - - regen - -2001-06-27 14:53 aleidinger - - * libmp3lame/i386/Makefile.am: - - this is nasty, I want native nasm support in libtool, at least it works for me (sort of) - -2001-06-27 14:11 aleidinger - - * libmp3lame/: Makefile.in, i386/Makefile.in: - - regen - -2001-06-27 14:11 aleidinger - - * libmp3lame/: Makefile.am, i386/Makefile.am: - - go back to let libtool compile liblameasmroutines, the static case was broken, now the libtool v1.4 case may be broken - -2001-06-26 11:38 aleidinger - - * configure: - - regen - -2001-06-26 11:36 aleidinger - - * configure.in: - - make the use of nasm a configure option - -2001-06-25 02:14 cisc - - * frontend/main.c: - - Include portableio.h for the WriteBytes() and WriteBytesSwapped() functions. - -2001-06-24 21:01 robert - - * lame.bat: - - some comments updated - -2001-06-24 16:47 robert - - * doc/html/contributors.html, libmp3lame/version.h: - - adding two more contributors - -2001-06-24 15:58 robert - - * Makefile.MSVC: - - FLOAT8=float for IC - -2001-06-24 15:57 robert - - * Makefile.B32: - - let it work again - -2001-06-24 02:04 robert - - * libmp3lame/: quantize.c, quantize.h, quantize_pvt.h, takehiro.c, - vbrquantize.c: - - BUG fix in inc_subblock gain, was amplifying at the wrong place - this fix may break the testcases - some unused parameters removed - -2001-06-23 18:26 robert - - * Dll/MP3EncDll.dsp: - - patch for DLL Project file by Dmitry - -2001-06-23 17:56 robert - - * frontend/lametime.c, frontend/parse.c, mpglib/common.c, - Makefile.MSVC: - - some fixes needed by the Borland Compiler BCC, first attempt to support BCC with Makefile.MSVC, DLL not supported yet, MP1 MP2 reencoding does not work with BCCcd lame (why?) - -2001-06-23 12:19 robert - - * libmp3lame/quantize_pvt.c: - - fix letting Borland C++ compiler getting thru' again, Makefile.B32 is *not uptodate* - -2001-06-23 12:15 robert - - * frontend/get_audio.c: - - BUG fix for mp1 and mp2 input, fixes problem introduced in Revision 1.63 - -2001-06-22 08:55 aleidinger - - * ChangeLog: - - update changelog - -2001-06-22 08:49 aleidinger - - * Makefile.am: - - regen - -2001-06-22 08:48 aleidinger - - * Makefile.in: - - we have a test subdir in cvs, force the test target to be out of date at every invocation of make - -2001-06-21 20:40 bouvigne - - * libmp3lame/reservoir.c: - - change of the max frame size - -2001-06-19 04:46 markt - - * misc/: Lame.vbs, lameGUI.html: - - updates from "Ralf Kempkens" - -2001-06-18 18:51 markt - - * TODO, frontend/get_audio.c, frontend/get_audio.h, - frontend/main.c, frontend/main.h, frontend/parse.c, - include/lame.h, libmp3lame/bitstream.c, libmp3lame/bitstream.h, - libmp3lame/set_get.c, mpglib/interface.c, mpglib/mpglib.h: - - added two new functions to return number of PCM samples buffererd - but not encoded, and the number of bytes of mp3 data buffered but - not output. also added some comments to mpglib/interface.c to - make it easier to tell it to look for Xing headers in the middle - of a bitstream. - -2001-06-16 00:40 robert - - * Makefile.MSVC, Makefile.unix: - - CPU feature detection for fft routines - -2001-06-16 00:39 robert - - * libmp3lame/: fft.c, util.h: - - CPU feature autodetection for fft routines - -2001-06-15 22:23 markt - - * TODO, frontend/main.c, include/lame.h, libmp3lame/lame.c: - - Robert's fix to init histgram data with --nogap. - - lame_reinit_bitstream() renamed lame_init_bitstream(), and - it is called by lame_init_params(). It can also be called - after a call to lame_encode_flush_nogap(). - -2001-06-15 21:25 markt - - * TODO, frontend/main.c, include/lame.h, libmp3lame/lame.c: - - some fixes for VBR tags with --nogap option. - -2001-06-14 23:09 robert - - * frontend/parse.c: - - fixed stdin - -2001-06-14 00:58 robert - - * libmp3lame/version.h: - - bumped version to alpha 7 - -2001-06-14 00:43 robert - - * libmp3lame/: lame.c, psymodel.c: - - added JD's loudness approximation to Naoki's duplicated psy routine - as I defaulted JD's adapt stuff I was under the impression that he - added his code to both ones, so... - -2001-06-14 00:19 markt - - * frontend/main.c: - - fix for nogap truncation call. When processing the last - of the .wav files, we need to call lame_encode_flush() - instead of lame_encode_flush_nogap(). - -2001-06-13 22:46 robert - - * frontend/parse.c: - - LFN support for Win32: realized that it would be a good idea to release the search file handle after searching the filename - -2001-06-13 08:44 aleidinger - - * Makefile.DJGPP: - - nasm fix - -2001-06-12 21:58 robert - - * frontend/parse.c: - - long file name support for Win32 systems - works under Win95 using Intel compiler 4.5 / MSVC 4.2 - not tested under NT, and not much tested anyway ;-) - -2001-06-12 21:03 robert - - * Makefile.unix: - - seems to be forgotten by the last committ - -2001-06-12 20:32 markt - - * libmp3lame/bitstream.c: - - old crc code removed from bitstream.c. - I had added this in when looking for the xing/crc bug - -2001-06-12 12:47 aleidinger - - * frontend/lametime.c: - - fix cygwin build, sort some includes - -2001-06-12 12:45 aleidinger - - * libmp3lame/: Makefile.in, i386/Makefile.in: - - regen - -2001-06-12 12:45 aleidinger - - * libmp3lame/: Makefile.am, i386/Makefile.am: - - do not use libtool for the asm lib, libtool did not know about nasm - -2001-06-12 12:42 aleidinger - - * configure, frontend/Makefile.in: - - regen - -2001-06-12 12:42 aleidinger - - * configure.in: - - - enable shared lib - - disable asm routines - - fix build of asm routines in the win32 case - -2001-06-12 12:41 aleidinger - - * frontend/Makefile.am: - - statically link libmp3lame to the frondends - -2001-06-12 05:27 markt - - * libmp3lame/lame.c: - - removed CRC error message - -2001-06-12 05:27 markt - - * libmp3lame/VbrTag.c: - - fix for Xing/CRC problem. - - Xing toc data must start directly after sideinfo data, assuming - no CRC. If CRC is set, then the Xing toc data must *still* start - in the same location (since original Xing demo code does not - check for CRC and modify the toc offset). - -2001-06-12 04:51 markt - - * libmp3lame/: bitstream.c, lame.c: - - put old CRC routine back in (but disabled) - -2001-06-12 03:35 markt - - * Dll/BladeMP3EncDLL.c: - - added some comments about the DLL's non-standard use of libmp3lame.a - -2001-06-12 03:31 markt - - * libmp3lame/Makefile.am: - - Robert created lame_global_flags.h, - so I'm adding it to Makefile.am, in the "noinst" section. - -2001-06-12 00:48 robert - - * Dll/BladeMP3EncDLL.c, libmp3lame/lame_global_flags.h, - libmp3lame/quantize.c, libmp3lame/util.h: - - - fixed Makefile.unix to let mp3rtp compile again (does it still work?) - - had to move lame_global_flags structure into a file of its own, - because the Dll compiled but did not link anymore. - Now it works again, tested on Win95 using Makefile.MSVC - -2001-06-11 23:42 markt - - * Dll/BladeMP3EncDLL.c, include/lame.h, libmp3lame/set_get.c, - libmp3lame/util.h: - - committed Robert's patch. lame_global_flags is gone :-) - -2001-06-11 22:07 robert - - * frontend/main.c: - - some more new API things - -2001-06-11 18:49 markt - - * frontend/: gtkanal.c, parse.c: - - converted rest of frontend code over to "new api" - -2001-06-11 16:35 markt - - * frontend/get_audio.c, frontend/get_audio.h, frontend/gtkanal.c, - libmp3lame/mpglib_interface.c, mpglib/interface.c: - - Tracked down a bug in lame_decoder. It was not correctly - flushing the internal mpglib buffers when it hit EOF. - - Problem was most severe with low bitrate example. It the frame size - was 32 bytes, only the first 1/3 of the file would be decoded - and the reamining 2/3 of the entire file would be buffered - inside mpglib. - -2001-06-10 20:35 robert - - * Dll/BladeMP3EncDLL.c, include/lame.h: - - making the old VBR default in preparation for the next release - -2001-06-10 19:19 markt - - * API, USAGE, misc/Lame.vbs, misc/lameGUI.html: - - added new version of Lame.vbs from "Ralf Kempkens" - including a GUI/HTML interface. - -2001-06-08 21:40 markt - - * frontend/: get_audio.c, gtkanal.c, main.c, main.h: - - updated some comments related to restructering main.c - for the --nogap option - -2001-06-08 21:29 markt - - * API, TODO, frontend/get_audio.c, frontend/gtkanal.c, - frontend/main.c, frontend/mp3rtp.c, frontend/mp3x.c, - frontend/parse.c, frontend/parse.h, frontend/timestatus.c, - include/lame.h, libmp3lame/lame.c, libmp3lame/set_get.c: - - preliminary --nogap option added. - - --nogap file1 file2 file3 - - and it produces file1.mp3 file2.mp3 file3.mp3 - - problems: no id3tags, no vbr tags. - -2001-06-08 18:59 markt - - * test/lametest.py: - - fix so lametest.py doesn't crash if lame does not create an - output file. - -2001-06-08 00:00 markt - - * frontend/main.c, libmp3lame/bitstream.c: - - fixed bug with lame_encode_flush_nogap routine - -2001-06-07 22:12 robert - - * DEFINES, TODO: - - [no log message] - -2001-06-07 22:06 robert - - * frontend/parse.c, libmp3lame/encoder.c: - - --ath-adjust 1 (Gaby's original code) was disabled, any reasons for that JD? - -2001-06-07 19:14 markt - - * HACKING, frontend/get_audio.c, frontend/gtkanal.c, - frontend/parse.c, frontend/timestatus.c, libmp3lame/lame.c: - - started updating frontend code to use the new API. - -2001-06-07 14:02 aleidinger - - * libmp3lame/fft.c: - - unbreak (at least it compiles), more work needed - -2001-06-07 10:11 jd- - - * libmp3lame/encoder.c: - - Allow ATH auto-adjust code to begin at the minimum value on the leading frame - -2001-06-07 08:40 jd- - - * libmp3lame/encoder.c: - - Restored some ATH auto-adjust indentation and comments (altered since 3.88 - in a code clean up) - -2001-06-07 06:06 pgubanov - - * libmp3lame/fft.c: - - Choose asm-optimized FHT version if ARCH_X86 defined in fft.c - -2001-06-05 22:13 afaber - - * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: - - Added R3Mix quality setting - -2001-06-05 19:19 aleidinger - - * doc/html/history.html: - - sync my entry with the one at the webpages - -2001-06-05 00:39 markt - - * INSTALL, TODO: - - added note about mpglib i-stereo bug in TODO list. - fixed typo in INSTALL file - -2001-06-04 23:57 markt - - * TODO, libmp3lame/reservoir.c: - - documented some variables in reservoir.c. - - Current status is: - - maxframesize = no restrictions - - if strict_ISO is defined, we use Gaby's less restrictive - interpretation of the standard. - - see TODO version 1.30 for a user who has a hardware player which - cannot handle 320kbps frames if the bit reservoir is used. - - I guess the final verdict is tough luck :-) - -2001-06-04 23:29 markt - - * API, HACKING, frontend/parse.c, libmp3lame/lame.c: - - - print error message and fail if user selects error_protection - (since this is currently broken) - - added some comments to HACKING on how to add a new option. - - updated API to reflect that all lame_set/get functions are now - working. - -2001-06-04 23:10 markt - - * include/lame.h, libmp3lame/lame.c: - - updated comments about lame_encode_flush_nogap() - -2001-06-04 23:08 markt - - * include/lame.h, libmp3lame/bitstream.c, libmp3lame/lame.c: - - added lame_encode_flush_nogap(). - - This routine will flush all internal mp3 buffers, and pad the - last frame with ancillary data so it is a complete mp3 frame. - - It will then set ResvSize to 0, so we can continue encoding. - - after a call to lame_encode_flush_nogap(), if we close - the mp3 file and open a new one for the future data, - then the two mp3 files should play back 'gapless' - if they are first concatenated together. - -2001-06-04 19:59 robert - - * frontend/parse.c, libmp3lame/lame.c, libmp3lame/quantize.c, - libmp3lame/version.h: - - tweaks to VBR - -2001-06-04 10:02 afaber - - * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: - - Extended interface with VBR method selection - -2001-06-04 10:01 afaber - - * mpglib/layer3.c: - - Removed exit call(s) in error conditions, since these errors seems to be good recoverable - -2001-06-04 01:54 robert - - * libmp3lame/: lame.c, psymodel.c, quantize.c, util.h: - - small tweaks to the VBR codes - -2001-06-02 20:22 robert - - * libmp3lame/: lame.c, quantize.c, util.h, version.h: - - started different bit-pressure strategies (VBR) - -2001-06-02 15:26 aleidinger - - * configure: - - regen - -2001-06-02 15:25 aleidinger - - * configure.in: - - force cygwin users to use "CC=gcc ./configure" - -2001-06-01 19:40 glessard - - * frontend/get_audio.c: - - Added support for non-compressed AIFF-C files in parse_aiff_header(). - -2001-05-30 01:38 markt - - * configure, configure.in: - - removed -pedantic gcc option. - From the gcc man page: "There is no reason to use this - option; it exists only to satisfy pedants". - - And there is a reason not to use it: It causes people to - send me email asking if all the warning messages about c++ comments are ok. - -2001-05-29 22:14 robert - - * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, - libmp3lame/lame.c, libmp3lame/set_get.c: - - quick fix for a typo that turned off auto adjust code by accident, sorry - -2001-05-27 18:58 robert - - * frontend/parse.c, libmp3lame/lame.c, libmp3lame/psymodel.c, - libmp3lame/quantize.c, libmp3lame/version.h: - - made JD's ATH adapt stuff default for --vbr-mtrh - some typings - changed bitpressure strategy for VBR a bit - -2001-05-26 21:31 jd- - - * libmp3lame/util.c: - - use more digestible code in ATHformula_jd for a pre-release compiler bundled - with a popular Linux distribution - -2001-05-26 16:17 robert - - * libmp3lame/lame.c: - - let the user select -qx for --vbr-mtrh, just to avoid useless e-mails - -2001-05-24 22:25 robert - - * libmp3lame/: lame.c, quantize_pvt.c: - - just 5 minutes to add some more on the --verbose printing side - -2001-05-21 18:55 bouvigne - - * doc/html/history.html: - - history - -2001-05-21 18:19 bouvigne - - * libmp3lame/lame.c: - - update of the default lowpass value. Will probably break some testcases - -2001-05-20 20:45 robert - - * libmp3lame/: encoder.c, lame.c, util.h: - - some more --verbose output - -2001-05-19 16:16 robert - - * libmp3lame/psymodel.c: - - typo fixed - -2001-05-19 16:13 robert - - * frontend/get_audio.c, frontend/main.c, frontend/parse.c, - frontend/timestatus.c, include/lame.h, libmp3lame/lame.c, - libmp3lame/psymodel.c, libmp3lame/util.h: - - starting a very verbose print function about all internal - settings, aiming more transparency for the experienced users - -2001-05-15 01:24 robert - - * libmp3lame/: psymodel.c, quantize_pvt.c, vbrquantize.c: - - some tunings - still problems with fatboy.wav and ns.wav - -2001-05-13 20:59 bouvigne - - * libmp3lame/util.c: - - comments in the ath functions - -2001-05-13 11:33 robert - - * libmp3lame/: lame.c, psymodel.c, util.c, util.h: - - fixing tonality problem for --vbr-mtrh - -2001-05-11 23:33 robert - - * libmp3lame/quantize_pvt.c: - - trying to point out the real difference in l3xmin calculation with nspsytune and without it - -2001-05-11 22:14 robert - - * libmp3lame/lame.c: - - nspsytune & newer vbr - -2001-05-11 01:30 robert - - * frontend/get_audio.c, frontend/main.h, include/lame.h, - libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, - libmp3lame/version.h, test/VBR.op: - - compile fixes for Intel Compiler, dropped sfb21 early stopping for vbr-old (found differences) - -2001-05-10 19:01 aleidinger - - * include/lame.h, libmp3lame/set_get.c: - - - Make the last few set/get functions functional. - (TODO: use them in the frontend). - - Converted padding_type to an enum. - - Correct some typos. - - Adjust some lines to conform to the style of the majority of the file. - - TODO: - - Search for XXX and do appropriate actions. - - Search for typos (because of alot of cut&paste programming). - -2001-05-08 15:00 bouvigne - - * frontend/parse.c, libmp3lame/util.c: - - update of --r3mix - -2001-05-06 15:11 robert - - * libmp3lame/: lame.c, quantize.c, vbrquantize.c: - - some desperate values for the fast mtrh VBR mode - -2001-05-04 01:07 jd- - - * libmp3lame/: tools.h, util.c: - - Added "--athtype 5" to better represent higher frequencies (14 - 19 kHz). - Included supporting functions for quadratic interpolation. - -2001-05-03 20:13 robert - - * libmp3lame/: lame.c, quantize.c, util.c, util.h, vbrquantize.c: - - some VBR-codeclean-up - -2001-05-02 21:02 robert - - * misc/lame4dos.bat: - - patch by Alexander Stumpf: - - now works both with drag & drop (SFN) and from the 4DOS-Commandline (LFN) - - Using wildcards when prozessing from mp3 to mp3 caused a loop - fixed - - removed the mp3-extention test since LAME recognizes the input file fomat - correctly for several versions now (i.e. no --mp3input neccessary anymore) - -2001-05-01 22:55 robert - - * libmp3lame/version.h: - - bumped version number - -2001-05-01 22:18 robert - - * libmp3lame/: quantize.c, vbrquantize.c: - - new -q2 mode for --vbr-mtrh - -2001-05-01 20:37 bouvigne - - * libmp3lame/reservoir.c: - - change of max frame size - -2001-04-28 15:37 robert - - * libmp3lame/: encoder.c, quantize_pvt.c, util.c, vbrquantize.c: - - --vbr-mtrh uses now -Y by default, some tweaks - -2001-04-27 23:19 robert - - * libmp3lame/: psymodel.c, quantize_pvt.c, util.c, util.h: - - --experimentalY selects a different ATH adjustment - - keeps original noise floor - - affects high freqs more than low ones - -2001-04-26 23:06 cisc - - * config.guess, config.sub: - - Added MorphOS recognition to configure script. - -2001-04-26 04:38 markt - - * README.B32, TODO: - - removed mmx notes from README.B32 - -2001-04-25 16:21 aleidinger - - * configure, libmp3lame/i386/Makefile.in: - - regen - -2001-04-25 16:20 aleidinger - - * configure.in: - - bugfix for gcc version detection - -2001-04-25 16:19 aleidinger - - * libmp3lame/i386/Makefile.am: - - bugfix for non x86 architectures with installed nasm, tested by Karl Pauls on Darwin - -2001-04-25 06:59 markt - - * TODO, frontend/get_audio.c, frontend/main.h, frontend/parse.c, - include/lame.h, libmp3lame/set_get.c: - - removed 'disable_wave_header' variable from encoding library. - It is in the frontend code only. - -2001-04-24 01:38 markt - - * TODO, frontend/get_audio.c: - - added something to the TODO list. - - changed: - - "buffer[1]+i" code to "&buffer[1][i]" - - in get_audio.c. buffer[1]+i is clever, but it confused the - maintainer of EAC enough to cause him to submit it as a bug - report. - -2001-04-23 19:47 bouvigne - - * libmp3lame/: lame.c, util.c: - - [no log message] - -2001-04-22 22:57 bouvigne - - * libmp3lame/util.c: - - update of the ath functions - -2001-04-22 01:34 jd- - - * frontend/get_audio.c: - - Fixed trailing data bug introduced with the 24 bit input code - -2001-04-21 22:23 jd- - - * frontend/get_audio.c, frontend/get_audio.h, frontend/gtkanal.c, - frontend/main.c, frontend/mp3rtp.c, include/lame.h, - libmp3lame/lame.c: - - Add 24-bit PCM waveform input capability (with or without libsndfile), - and glue code to preserve the functionality of routines that only handle - up to 16-bit data. The changes support both little and big endian - architectures. - -2001-04-17 20:04 afaber - - * libmp3lame/libmp3lame.dsp, Dll/BladeMP3EncDLL.c, - mpglib/mpglib.dsp, frontend/lame.dsp: - - Added MMX compile option - -2001-04-17 19:22 bouvigne - - * libmp3lame/util.c: - - auto adjusting ath shape for vbr on ath type 4 - -2001-04-16 21:26 bouvigne - - * libmp3lame/: encoder.c, lame.c, psymodel.c: - - wrapped a few things inside of ifdef HAVE_GTK - -2001-04-16 11:50 takehiro - - * libmp3lame/: psymodel.c, util.h: - - spread function is now packed into linear array. - it reduces memory assumption and improves cache efficienty. - -2001-04-16 08:27 takehiro - - * include/lame.h, libmp3lame/VbrTag.c: - - now try to calculate the CRC of VBR header. - -2001-04-16 07:58 takehiro - - * libmp3lame/: bitstream.c, bitstream.h: - - cleaned and improved CRC calculation method - -2001-04-13 15:13 aleidinger - - * libmp3lame/set_get.c: - - add some comments about converting int->enum - -2001-04-13 15:12 aleidinger - - * frontend/parse.c: - - use some of Marks set-functions, also without error checking (yet) - -2001-04-12 17:40 bouvigne - - * libmp3lame/: encoder.c, lame.c: - - [no log message] - -2001-04-08 07:52 takehiro - - * libmp3lame/: machine.h, quantize_pvt.c: - - portability enchancement(from sourceforge's LAME open discussion forum). - - quantize_pvt.c: changed 1e99 into FLOAT8_MAX - machine.h: defined FLOAT8_MAX - -2001-04-04 21:58 bouvigne - - * libmp3lame/lame.c: - - update of the lowpass values for vbr rh - -2001-04-04 18:11 bouvigne - - * libmp3lame/psymodel.c: - - update of -d for joint stereo - -2001-04-01 03:22 jd- - - * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, - libmp3lame/lame.c, libmp3lame/set_get.c, libmp3lame/util.h: - - added an --adapt-thres-level option to allow adding an offset (in dB) - to the point below which adaptive ATH level adjustment occurs - -2001-04-01 02:11 jd- - - * include/lame.h: - - added set/get functions to include/lame.h for option --adapt-thres-type - -2001-03-31 23:44 jd- - - * frontend/parse.c, libmp3lame/set_get.c: - - added set/get functions to libmp3lame/set_get.c for option - --adapt-thres-type, and used the set function in frontend - -2001-03-30 18:43 markt - - * testcase.mp3, frontend/get_audio.c, test/lametest.py: - - updated testcase.mp3 - removed some unused code from get_audio.c - -2001-03-30 17:16 markt - - * test/lametest.py: - - delete output mp3 file before running lame. - (before, if lame crashes and does not write any output, the - script would use the old output mp3 file, and if it hadn't changed, - all tests would pass.) - -2001-03-29 18:31 cisc - - * libmp3lame/: version.c, version.h: - - Moved inclusion of lame.h to version.h for lame_version_t in prototype. - -2001-03-27 12:26 jd- - - * libmp3lame/psymodel.c: - - added --adapt-thres-type 2 (auto-level adjustment of the ATH, - with a frequency-based loudness approximation). - -2001-03-27 12:04 jd- - - * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, - libmp3lame/lame.c, libmp3lame/psymodel.c, libmp3lame/util.h: - - added option, --adapt-thres-type 2 (auto-level adjustment of the ATH - with a frequency-based loudness approximation). - -2001-03-27 10:56 aleidinger - - * configure: - - regen (do not enable vorbis by default) - -2001-03-27 10:56 aleidinger - - * configure.in: - - do not enable vorbis by default - -2001-03-26 23:02 markt - - * libmp3lame/set_get.c: - - added code to more of the lame_set/lame_get functions- - but without any error checking :-( - - Only 47 more to go! - -2001-03-26 20:46 markt - - * TODO, libmp3lame/util.c: - - dont scale the input if scale=1.0. - -2001-03-26 18:38 markt - - * TODO: - - updated TODO list with some filtering stuff - -2001-03-26 17:42 markt - - * libmp3lame/encoder.c: - - another MPEG2 bug found by: "Jiri Hajek" - - This code: - - > int sum_pe_MS = pe_MS[0][0] + pe_MS[0][1] + pe_MS[1][0] + pe_MS[1][1]; - > int sum_pe_LR = pe [0][0] + pe [0][1] + pe [1][0] + pe [1][1]; - - does not work for MPEG2. now fixed. - -2001-03-26 16:05 aleidinger - - * configure: - - regen (version bump) - -2001-03-26 16:04 aleidinger - - * configure.in: - - Welcome to 3.89 - -2001-03-26 00:38 markt - - * frontend/brhist.c: - - bug in brhist_disp_total() - - for --freeformat bmode, br_frames = 0 (why?) - so sum / br_frames would segfault. - - if br_frames == 0 , routine now just returns without printing - anything. - -2001-03-26 00:12 markt - - * TODO: - - minor editing of TODO file - -2001-03-25 23:18 markt - - * libmp3lame/version.h: - - updated version to 3.89 alpha 1 - -2001-03-25 23:16 markt - - * libmp3lame/version.h: - - updated version to 3.88beta - -2001-03-25 23:14 markt - - * API, README, TODO, libmp3lame/lame.c, libmp3lame/libmp3lame.dsp: - - made ath type 2 the default. - updated test cases - added set_get.c to libmp3lame.dsp - -2001-03-25 21:37 shibatch - - * libmp3lame/psymodel.c: - - Fixed nspsytune. - -2001-03-25 18:43 afaber - - * Dll/BladeMP3EncDLL.def, Dll/MP3EncDll.dsp, - libmp3lame/bitstream.h, libmp3lame/encoder.h, - libmp3lame/psymodel.c, libmp3lame/tables.h: - - Removed the last remainings of KLEMM_43 in order to complet the Windows DLL compilation - -2001-03-20 00:42 markt - - * libmp3lame/util.c: - - added a few more minor comments to resampling code - -2001-03-20 00:28 markt - - * libmp3lame/util.c: - - removed some cruft from blackman() filtering routine - -2001-03-19 21:26 markt - - * frontend/get_audio.c, libmp3lame/util.c, test/lametest.py: - - - Tested fixed resampling code. It seemed to work. - Added a few comments. - - Also added documentation for "-w" for the usage function in lametest.py - -2001-03-18 14:31 aleidinger - - * libmp3lame/vorbis_interface.c: - - use the new MSGF API in Vorbis - -2001-03-18 14:25 aleidinger - - * libmp3lame/vorbis_interface.c, frontend/get_audio.c: - - use the new ERRORF API in Vorbis encoding (+fixes for needed API change to lame_decode_ogg_{initfile,fromfile}()) - -2001-03-15 19:40 markt - - * libmp3lame/util.c: - - Put in fix for resampling bug in fill_buffer_resample. - - Code assumed it would be fed at least BLACKSIZE samples. - For each input buffer, the code would save the last BLACKSIZE - samples for use for the next call to fill_buffer_resample. - - If the code recieves less than blacksize samples, it will - now shift in just as many new samples as are available into - the save buffer. - - Not tested :-( - -2001-03-14 14:38 aleidinger - - * Dll/BladeMP3EncDLL.c, dshow/Encoder.cpp, dshow/Mpegac.cpp, - dshow/PropPage_adv.cpp: - - regexp: MPG_MD_(.*) -> $1 - -2001-03-14 14:38 aleidinger - - * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix: - - add set_get.c to the build - -2001-03-14 10:57 aleidinger - - * Makefile.in: - - regen - -2001-03-14 10:56 aleidinger - - * Makefile.am: - - do not forget Makfile.am.global at "make dist" - -2001-03-14 10:49 aleidinger - - * ChangeLog: - - update - -2001-03-14 10:40 aleidinger - - * doc/html/Makefile.in, doc/man/Makefile.in, - libmp3lame/i386/Makefile.in: - - regen with automake 1.4d instead of 1.4 - -2001-03-13 06:15 markt - - * libmp3lame/util.c: - - added assert() to resampling code - -2001-03-12 20:58 markt - - * libmp3lame/psymodel.c: - - a few more comments added to psymodel.c - -2001-03-12 20:40 markt - - * libmp3lame/: psymodel.c, tables.c: - - removed ISO TABLE reading code from psymodel.c, - and ISO psy data from tables.c - -2001-03-12 20:31 markt - - * libmp3lame/psymodel.c: - - removed shortlived MINTHMM experiment - -2001-03-12 18:52 markt - - * USAGE, configure: - - updated USAGE. - ran configuer with --enable-maintainer-mode which seems to - have touched all this .in files, sorry about that... - -2001-03-12 07:26 markt - - * API, libmp3lame/vbrquantize.c: - - a few updates to API - -2001-03-12 04:38 markt - - * frontend/get_audio.c, include/lame.h, libmp3lame/bitstream.c, - libmp3lame/bitstream.h, libmp3lame/encoder.c, - libmp3lame/encoder.h, libmp3lame/lame.c, libmp3lame/set_get.c: - - fixed a few compiler warnings and the assert in lame_get_mode(). - added NOT_SET value to MPEG_mode_e - -2001-03-11 11:25 aleidinger - - * DEFINES: - - - remove outdated entries - - add OLD_ATH_AUTO_ADJUST - -2001-03-11 11:24 aleidinger - - * Makefile.in: - - - regen from Makefile.am (testupdate target) - -2001-03-11 11:24 aleidinger - - * frontend/: depcomp, get_audio.c, gtkanal.c, main.c, mp3x.c, - parse.c, timestatus.c: - - *.c: - - use set/get functions - *** lame_set_quality(): should it check for <0 and >9 itself? (parse.c) - - depcomp: - - update (autotools) - -2001-03-11 11:23 aleidinger - - * libmp3lame/: depcomp, encoder.c, lame.c, psymodel.c, util.c, - util.h: - - libmp3lame/encoder.c: - - MPEG_mode (JOINT_STEREO) change (related to set/get functions change) - - J.D.s improvements to Gabriels ath auto adjust code (VBR) - - move ath auto adjust code into seperate function - - libmp3lame/lame.c: - - errorf/msgf/debugf changes - - MPEG_mode (JOINT_STEREO/...) change (related to set/get functions change) - - remove prototypes of set/get functions - - libmp3lame/psymodel.c: - - MPEG_mode (JOINT_STEREO/...) change (related to set/get functions change) - - libmp3lame/util.[ch]: - - new errorf/msgf/debugf implementation - - libmp3lame/depcomp: - - update (autotools) - -2001-03-11 11:22 aleidinger - - * include/lame.h: - - - set/get functions related cleanup - - errorf/msgf/debugf - -2001-03-11 11:21 aleidinger - - * libmp3lame/Makefile.in: - - regen - -2001-03-11 11:21 aleidinger - - * libmp3lame/Makefile.am: - - - add set_get.c - -2001-03-11 11:20 aleidinger - - * libmp3lame/set_get.c: - - - set and get functions for the gfp - -2001-03-10 19:15 markt - - * libmp3lame/encoder.c: - - a little more tuning of tot_energy for ATH adjust - -2001-03-10 19:06 markt - - * libmp3lame/encoder.c: - - modified ATH adjustment code to use tot_ener returned by psy model - and not the maximum of the PCM sample values. - - We need to replace this with JD's formula. We need to decide - if this is really worth while. My preference is to take the - most conservative ATH possible, but this seems to produce too - high bitrates for VBR modes. (this may no longer be true - not that masings are computed in all scalefactor bands) - -2001-03-10 18:33 markt - - * frontend/get_audio.c: - - added 127 also, on recommendation of JD, to 8bit -> 16bit - conversion routine - -2001-03-10 18:29 markt - - * frontend/get_audio.c: - - fix from "J.D." for - 8 bit input support. - -2001-03-09 17:56 markt - - * test/lametest.py: - - 'os.pathsep' changed to 'os.sep' - - For example, on unix: - - os.pathsep = ":" - the character that seperaters search paths in - the PATH environment variable - - os.sep = "/" - the charcter that seperates directories - -2001-03-07 12:32 aleidinger - - * test/lametest.py: - - - use OS independent path seperator - -2001-03-07 12:31 aleidinger - - * DEFINES: - - - NOTABELS is now the default - -2001-03-05 20:29 markt - - * libmp3lame/: lame.c, psymodel.c, quantize_pvt.c: - - code (disabled) to use minimum value when going from partition - bands to scalefactor bands (instead of average value) - -2001-03-05 18:21 markt - - * testcase.mp3, libmp3lame/psymodel.c, libmp3lame/quantize_pvt.c: - - Noise calculation: had to switch calculation of tot_noise and - over_noise back to being done in db units. Multiply (to save - the 22 log10() function calls) was overflowing. - - updated testcases to reflect changes - -2001-03-05 01:44 markt - - * testcase.mp3: - - updated testcase.mp3 for NOTABLES code - -2001-03-05 01:26 markt - - * libmp3lame/psymodel.c: - - NOTABLES enabled by default. - - Psycho acoustics computed in *all* scalefactor bands. - - cvs tag before this change: before_notables - cvs tag after this change: notables - -2001-03-05 01:25 markt - - * libmp3lame/psymodel.c: - - The last commit before NOTABLES becomes the default. - tagged with "before.notables" - -2001-03-04 20:03 markt - - * libmp3lame/: encoder.c, psymodel.c, psymodel.h, util.h: - - More prep work for enabling NOTABLES. - Will now compute masking for all scalefactor bands - -2001-03-04 15:30 markt - - * testcase.mp3, libmp3lame/psymodel.c, libmp3lame/util.c: - - Finished proper normalization of spreading function. - - updated testcases - -2001-03-04 06:56 markt - - * libmp3lame/psymodel.c: - - more tweaking of s3 normalization - -2001-03-04 06:48 markt - - * libmp3lame/psymodel.c: - - spreading function moved into seperate routine, s3_func(). - s3 normalized so that: - - +inf - / - | s3 [ bark ] d(bark) = 1 - / - -inf - - which resulted in dividing the result by 0.66. - - This is the first step in fixing the long outstanding bug - mentioned by Takehiro: s3[i][j] is normalized improperly for - values of i near the partition band boundaries. For these values, - the computed 'norm' is much too small since a lot of the data is - missing, resulting in artificially increasing the spreading function - (and thus the masking) - - --nspsytune: s3_l function is used with a normalization of .5 - (instead of computing the norm). So I changed this to a .5*.66 - to compensate for the above change. - - Next step: - - 1. - s3[i][j] will be multiplied by the width (in barks) of the - j'th partition band (about .35). Once this is done, we will not need to - compute and divide by 'norm' later. - - 2. - Make NOTABLES the default - - 3. - compute psymodel all the way up to 22khz. - -2001-03-04 05:51 markt - - * API, libmp3lame/lame.c, libmp3lame/util.c, libmp3lame/util.h: - - added prototypes to lame.c (but functions not yet written) - -2001-03-04 05:13 markt - - * include/lame.h: - - finished last of the prototypes - -2001-03-04 05:02 markt - - * frontend/get_audio.c: - - changed to: - - gfp->num_samples = data_length / (channels * ((bits_per_sample+7) / 8)); - - thanks J.D.! - -2001-03-04 00:20 markt - - * include/lame.h, libmp3lame/lame.c: - - added: - lame_encode_buffer_sample_t, which is called by the following functions - in the API: - - lame_encode_buffer (original, short int interface) - lame_encode_buffer_float - lame_encode_buffer_long - -2001-03-02 22:39 markt - - * frontend/get_audio.c, test/lametest.py: - - get_audio.c: fixed num_samples computation for case when - bits_per_sample < 8. (althouth this case is already trapped for - earlier) - - lametest.py: slight change to reference mp3 filename generation - so lametest.py can be run from another directory. - -2001-03-02 18:28 markt - - * Makefile.am, testcase.mp3, doc/html/Makefile.in, - doc/man/Makefile.in, frontend/get_audio.c, - libmp3lame/i386/Makefile.in: - - error message about non-PCM wave files from - "J.D." - - Added "make testupdate" to Makefile.am, which updates - the test file in the CVS repository - -2001-02-27 11:54 robert - - * include/lame.h, libmp3lame/lame.c: - - lame.h typo - lame.c fix for possibility of calling lame_init_parms twice - -2001-02-27 11:39 aleidinger - - * DEFINES: - - remove KLEMM_42 - -2001-02-27 11:38 aleidinger - - * configure, Makefile.in, frontend/Makefile.in, misc/Makefile.in: - - regen - -2001-02-27 11:37 aleidinger - - * frontend/Makefile.am, misc/Makefile.am: - - remove EXTRA_PROGRAMS on make clean - -2001-02-27 11:36 aleidinger - - * Makefile.am: - - remove testcase.new.mp3 on error - -2001-02-27 11:36 aleidinger - - * configure.in: - - display version of gcc - -2001-02-27 11:35 aleidinger - - * include/lame.h: - - fix typo in comment - -2001-02-27 11:33 aleidinger - - * libmp3lame/util.c: - - include machine/floatingpoint.h on FreeBSD - -2001-02-27 09:59 robert - - * libmp3lame/: VbrTag.c, bitstream.c, lame.c, quantize_pvt.h, - takehiro.c, util.c, util.h: - - VbrTag.c fixed gfp/gfc typo - lame.c made data flow analysis happier: there was a possible path to use channels before definition. Even though it would be an error following this path, but the compiler doesn't know it - util.hc message functions are not intended to change gfc?!? - takehiro.c fixed a warning - bitstream.c fixed a warning - -2001-02-27 06:14 markt - - * frontend/gtkanal.c, include/lame.h, libmp3lame/VbrTag.c, - libmp3lame/bitstream.c, libmp3lame/lame.c, libmp3lame/psymodel.c, - libmp3lame/quantize.c, libmp3lame/quantize_pvt.h, - libmp3lame/takehiro.c, libmp3lame/util.c, libmp3lame/util.h, - libmp3lame/vbrquantize.c: - - - Implmented Frank's excellent idea about error messages: - - gfc->errorf, gfc->msgf and gfc->debugf are all FILE *. - default is stderr. If you want to disable all internal library - messages, set these to NULL with lame_set_errorf(), lame_set_msgf() etc... - - For a GUI, you can set these to regular files, and then read - the files and display the messages in an pop up window. - - Maybe the default should be NULL? - -2001-02-27 05:17 markt - - * include/lame.h: - - plugging away at a few more prototypes - -2001-02-26 22:45 robert - - * frontend/parse.c, libmp3lame/util.c: - - little change to Roel's --r3mix setting, on request by Roel - -2001-02-26 19:08 markt - - * libmp3lame/VbrTag.c: - - non RH_SEEKTABLE code removed from VbrTag.c - -2001-02-26 18:57 markt - - * frontend/lametime.c: - - removed to //include lines - -2001-02-26 18:52 markt - - * frontend/: get_audio.c, lametime.c: - - - incomprehensible gobbledygook replaced by call to standard - 'stat' function for file size. - -2001-02-26 08:06 markt - - * include/lame.h: - - more prototypes added to lame.h - -2001-02-26 07:38 markt - - * USAGE, frontend/parse.c, libmp3lame/lame.c: - - useTemporal turned on by default - --notemp option added. - -2001-02-26 07:26 markt - - * include/lame.h: - - added more of the lame_get/lame_set prototypes to lame.h - - also added this: - - // I give up. Klemm has worn me down on this one... - typedef lame_global_flags lame_t; - -2001-02-26 06:34 markt - - * misc/Lame.vbs: - - lame.vbs changes submitted by "Paul Reedy" - -2001-02-25 22:47 markt - - * libmp3lame/vorbis_interface.c: - - removed a klemm_42 from vorbis_interface.c - -2001-02-25 22:47 markt - - * INSTALL, libmp3lame/lame.c, libmp3lame/vorbis_interface.c: - - klemm_42 enabled by default. - - This code uses a different formula to choose the lowpass - filter. It takes into account stereo vs. jstereo - (jstereo gets 25% more bandwidth). This has the effect - of stereo 128kbps using a 14khz lowpass filter, which some - people may not like. - -2001-02-25 22:02 markt - - * libmp3lame/lame.c, test/CBRABR.op: - - made allow_diff_short the default if mode=stereo and - allow_diff_short has not been set to 0 or 1 by the calling - program. - - addes these notes to lame_init_params() : - * - * We first have some complex code to determine bitrate, - * output samplerate and mode. It is complicated by the fact - * that we allow the user to set some or all of these parameters, - * and need to determine best possible values for the rest of them: - * - * set some CPU related flags - * check if we are mono->mono, stereo->mono or stereo->stereo - * compute bitrate and output samplerate: - * user may have set compression ratio - * user may have set a bitrate - * user may have set a output samplerate - * set some options which depend on output samplerate - * compute the actual compression ratio - * set mode based on compression ratio - * - * The remaining code is much simpler - it just sets options - * based on the mode & compression ratio: - * - * set allow_diff_short based on mode - * select lowpass filter based on compression ratio & mode - * set the bitrate index, and min/max bitrates for VBR modes - * disable VBR tag if it is not appropriate - * initialize the bitstream - * initialize scalefac_band data - * set sideinfo_len (based on channels, CRC, out_samplerate) - * write an id3v2 tag into the bitstream - * write VBR tag into the bitstream - * set mpeg1/2 flag - * estimate the number of frames (based on a lot of data) - * - * now we set more flags: - * nspsytune: - * see code - * VBR modes - * see code - * CBR/ABR - * see code - -2001-02-25 21:28 markt - - * frontend/parse.c: - - removed VBR warning - -2001-02-25 20:24 markt - - * libmp3lame/psymodel.c: - - edited a few comments in psymodel.c - -2001-02-25 20:17 markt - - * libmp3lame/encoder.c, libmp3lame/psymodel.c, - libmp3lame/psymodel.h, libmp3lame/util.h, test/nores.op: - - Started some re-originization of psymodel.c - created: - - psymodel_init() function, called by both psymodel and psymodel_ns. - - I was carefull to make sure no binary changes were introduced - with --nspsytune. - - Modified both psymodel and psymodel_ns to return the - energy in each channel. I'm going to request that the - ATH level adjust be based on the energy comptuted by the - psymodel, rather than computing a magnitude in encoder.c - -2001-02-25 17:37 markt - - * Dll/BladeMP3EncDLL.c, frontend/parse.c, include/lame.h, - libmp3lame/lame.c, libmp3lame/util.c, libmp3lame/util.h: - - removed mode_fixed variable. If calling program selects a mode - (mono, stereo, jstereo) then that mode is used, otherwise - lame picks best mode to use. - -2001-02-25 01:58 markt - - * include/lame.h: - - started adding more prototypes into lame.h: - - int lame_set_variable_name(lame_global_flags *, int) - int lame_get_variable_name(lame_global_flags *) - - _get will return the value (instead of an error code) - as suggested. - - _set will return an error code. But right now, the way lame - works there is no error checking until lame_init_params() is - called. This is because, for example, bitrate=135 - is not an error if free_format=1, but it is an error - for CBR. So many errors cannot be detected until all options - are set. - -2001-02-24 19:35 markt - - * include/lame.h, libmp3lame/util.h: - - commented out a uint_64_t field in util.h to get lame to - compile. Do we really need these types of variables? - - removed some stuff from lame.h. Note that many decisions have - already been made about the library interface, so if you are - planning on changing this, you need to check with me - (mark taylor) first. In particular, - there is going to be no file I/O, and all data is in - machine order. (no endian stuff in the library). - -2001-02-24 13:55 robert - - * Makefile.unix, configMS.h: - - get Makefile.unix working again (tested for Linux, not for OS/2 etc.) - -2001-02-21 21:17 robert - - * libmp3lame/lame.c: - - --vbr-mtrh related - -2001-02-21 17:07 robert - - * libmp3lame/vbrquantize.c: - - take sfb21 into consideration for median search - -2001-02-21 17:06 robert - - * libmp3lame/util.c: - - index transformation in select_kth_int() - -2001-02-21 14:59 aleidinger - - * test/lametest.py: - - do not print the passed/failed statistic in the makeref case - -2001-02-21 13:49 robert - - * frontend/parse.c, libmp3lame/lame.c: - - default quality handling fix - -2001-02-21 12:39 aleidinger - - * Dll/BladeMP3EncDLL.c: - - lame.h has to be included before version.h - -2001-02-20 18:34 aleidinger - - * Makefile.in, config.h.in, configure, configure.in, - frontend/brhist.c: - - - Patch (#103821) from guy_hutchison: - Fixes compilation problem on systems with ncurses dir - - add ChangeLog to Makefile.in - -2001-02-20 18:23 aleidinger - - * libmp3lame/: encoder.h, version.h: - - [no log message] - -2001-02-20 18:20 aleidinger - - * doc/html/: Makefile.am, Makefile.in: - - - add basic.html - -2001-02-20 18:20 aleidinger - - * configMS.h: - - - add LAME_LIBRARY_BUILD - -2001-02-20 18:20 aleidinger - - * libmp3lame/util.h: - - - more documentation, seems to be partially truncated (Frank) - - CPU_features is now a struct - -2001-02-20 18:19 aleidinger - - * libmp3lame/takehiro.c: - - - CPU_features is now a struct - -2001-02-20 18:19 aleidinger - - * libmp3lame/lame.c: - - - CPU_features is now a struct, no need to waste space for those - bolean values (Frank) - - introduce some KLEMM_44 protected code - -2001-02-20 18:18 aleidinger - - * libmp3lame/util.c: - - - fixes + docu for ATHformula_Frank() (Frank) - - don't compile old resampling in KLEMM_44 case - -2001-02-20 18:17 aleidinger - - * libmp3lame/version.c: - - - doxygen parseable documentation - - better lclint flags - - enable get_lame_version_numerical() - -2001-02-20 18:17 aleidinger - - * include/lame.h: - - - delete prototype of already removed get_lame_about() - - add get_lame_version_numerical() and lame_version_t - (now dshow didn't needs to include version.h to get the numerical - version of lame (dshow not changed, I let pgubanov do this)) - - introduce some KLEMM_44 protected code (Frank) - - rework formatting and documentation to be more (IMO much more) readable - (no lines longer than 80 chars, consistent formatting, looks alot cleaner) - -2001-02-20 10:41 aleidinger - - * DEFINES: - - Remove KLEMM_04, there was a previous commit which handled it, see - ChangeLog. - -2001-02-20 01:56 markt - - * DEFINES, frontend/brhist.c, frontend/get_audio.c, - frontend/timestatus.c: - - KLEMM 5,6,7 made the default & removed - -2001-02-20 00:40 markt - - * libmp3lame/lame.c: - - simplified lame_encoder_buffer_interleaved: it now always calls - lame_encoder_buffer() - -2001-02-20 00:30 markt - - * libmp3lame/: encoder.c, lame.c, util.c, util.h: - - fix for --scale problem? - - made a new routine: fill_buffer() - - This is the generic routine used to copy data from the input buffer - into lame's internal buffer, 'mfbuf[]'. - - It also calls the resample code if necessary, and the user selected - rescaling code if necessary. - -2001-02-20 00:26 markt - - * frontend/parse.c: - - added comment to vbr warning message - -2001-02-20 00:24 markt - - * frontend/parse.c: - - re-added the warning about VBR modes. It seems to have been deleted - at some point. - - This is because this website: - - http://www.kuro5hin.org/?op=displaystory;sid=2001/1/25/164540/759 - - is comparing Vorbis with lame -V4. - - While many people like the high bitrate VBR modes, - lame -V4 is *often* of lower quality than CBR. - -2001-02-19 18:29 aleidinger - - * test/VBR.op: - - - remove "--silent", lametest.py now handles this - - Aproved by: robert - -2001-02-19 18:28 aleidinger - - * test/lametest.py: - - - allow relative paths in a more portable manner - - should be more OS independand now - - more file checks (readable/executable) - - internally adds new option "--quiet" to the options - - This works on my system, it also should work on systems where the - previous version worked. It's not as portable as it could be, - search for XXX in the source. - -2001-02-18 21:18 robert - - * frontend/main.c, frontend/parse.c, libmp3lame/lame.c, - libmp3lame/version.h, test/VBR.op: - - new options --silent and --quiet to be really quiet - new option --verbose (default) to turn -S/--silent off again - --vbr-mtrh and --vbr-new use now ATH type 2 - for VBR modes it is allowed to use different block types in stereo mode (not yet joint stereo) - bumped version to 3.88 alpha 10 - -2001-02-18 12:11 aleidinger - - * dshow/: Makefile.am, Makefile.in: - - Add recently added files to the makefile. - -2001-02-17 15:45 pgubanov - - * dshow/Encoder.cpp: - - gfp is sometimes zero in CEncoder::Encode() - why??? - -2001-02-17 14:30 aleidinger - - * libmp3lame/: pcm.c, pcm.h: - - New code from Frank, some needed parts in different files aren't commited - yet, they produce huge differences with lametest.py even if KLEMM_44 isn't - defined. -> KLEMM_44 (new API + resampling) isn't usable yet - -2001-02-17 14:27 aleidinger - - * test/lametest.py: - - - use "/usr/bin/env python" instead of "/usr/bin/python" in shebang line - (portability) - - use "-l" instead of "--lines" for wc - (portability, has to run on every IEEE 1003.2 ("POSIX.2") compliant - system) - - bugfix, check for lame2 instead for lame1 in the lame2 part - (Note: the entire test didn't work for me if I use e.g. - ./lametest.py XXX.op ../../testcases/XXX ../../build.org/frontend/lame ...) - -2001-02-17 14:17 pgubanov - - * dshow/: aboutprp.cpp, aboutprp.h: - - Elecard copyrigth added (executives need it for some reason) - -2001-02-17 13:58 pgubanov - - * dshow/: Mpegac.cpp, Property.rc, UIDS.H, dshow.dsp, dshow.dsw, - elogo.ico, resource.h: - - Some stability improvements + Elecard copyrigth added (executives need it for some reason) - -2001-02-16 17:23 markt - - * doc/html/basic.html: - - added basic.html to cvs - -2001-02-16 10:35 pgubanov - - * dshow/dshow.dsp: - - STDC_HEADERS defined in project settings - -2001-02-16 10:33 pgubanov - - * libmp3lame/lame.c: - - mono handling in encode_buffer_interleaved caused access violation - fixed - -2001-02-14 22:22 aleidinger - - * ChangeLog: - - Now we have a ChangeLog, generated from the output of "cvs log" - -2001-02-14 22:21 aleidinger - - * ChangeLog.header: - - Header for the ChangeLog, not included at "make dist" - -2001-02-14 22:20 aleidinger - - * TODO: - - remove Makefile.MSVC, robert seems to keep it up to date - -2001-02-14 22:20 aleidinger - - * Makefile.B32: - - try to unbreak it, add configMS.h -> config.h (untested) - -2001-02-14 22:20 aleidinger - - * DEFINES: - - add USE_FFT3DN - -2001-02-14 22:19 aleidinger - - * INSTALL: - - * add some more info how to use some advanced features of our - configure script - * add some info for Cygwin users (use configure) - * add some info about faster code with nasm - -2001-02-14 20:50 robert - - * frontend/parse.c: - - added -V1 to Roel's --remix preset, I assume it was missing by accident - -2001-02-14 16:38 aleidinger - - * Makefile.am.global, Makefile.in, aclocal.m4, configure, - configure.in, Dll/Makefile.in, debian/Makefile.in, - doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, - dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, - misc/Makefile.in, mpglib/Makefile.in: - - use new automake 1.4d (bugfixes) - -2001-02-14 14:43 robert - - * libmp3lame/: encoder.c, util.h: - - tuning of the auto ath adjustment for --vbr-mtrh mode - -2001-02-14 14:24 robert - - * libmp3lame/util.c: - - patch by Roel: - tweaking his ATH modification (--athtype 3) - -2001-02-13 18:27 markt - - * frontend/parse.c: - - fixed typo in parse.c - -2001-02-13 18:24 markt - - * libmp3lame/psymodel.c: - - added a lot of documentation on the psycho acoustics - to the top of psymodel.c - -2001-02-13 18:22 markt - - * mpglib/: common.c, common.h, interface.c: - - improved head_check() function: When resyncing data stream, - only look for headers of the same layer of the previous - frames. i.e. dont allow layer 2 and layer 3 frames in the - same stream. - -2001-02-13 18:21 markt - - * frontend/: get_audio.c, parse.c: - - added the --r3mix option - fixed bug with --decoder-mp3delay option - added error message for non-8 and 16 bit input - -2001-02-13 16:58 robert - - * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, - libmp3lame/lame.c, libmp3lame/psymodel.c, - libmp3lame/quantize_pvt.c, libmp3lame/util.c, libmp3lame/util.h: - - first of all: this patch shows no difference in the CBR/ABR test - - - made athtype 3 default for VBR modes, 1 still default for CBR/ABR modes - - made athadjust default for VBR modes, CBR/ABR modes don't need it - - removed --athadjust switch, was only temporally solution - - collected all spreaded ATH settings into ATH_t struct - if someone needs a new ATH related variable, please add it here - -2001-02-12 18:24 markt - - * doc/html/: contributors.html, history.html, index.html, - node6.html, switchs.html: - - new html docs from Gabriel - -2001-02-12 17:47 markt - - * test/lametest.py: - - print total pass/fail message at end - -2001-02-09 16:47 robert - - * libmp3lame/quantize_pvt.c: - - patch by Gaby: - allow ATH adjust for the ATH only modes too - -2001-02-08 22:19 robert - - * test/VBR.op: - - update to the VBR python options file - -2001-02-07 15:51 robert - - * libmp3lame/: encoder.c, vbrquantize.c: - - all patches --vbr-mtrh related - - encoder.c: - - made a variant of Gaby's auto ATH adjust the default - - vbrquantize.c: - - some small code moves - - added some safety margin to the global gain - -2001-02-06 21:43 robert - - * libmp3lame/: psymodel.c, vbrquantize.c: - - we should not try to hard to get high freqs thru' - so I will let --vbr-mtrh as is. It seems to give - reasonable file sizes again, even with Frank's ATH. - -2001-02-05 10:18 robert - - * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, - libmp3lame/quantize_pvt.c: - - re-check-in of Gaby's ATH auto adjustment code. - You need to specify --athadjust to get this - SUBSTANTIALLY QUALITY IMPROVEMENT - - quote: - "Also, we already have gfc->ath_lower (specified in db). - No reason to add another variable which does the same thing, - and does not even use the same units." - - That is not true, there is actually no gfc->ath_lower in dB. - We have a gfp->ATHlower in dB. But this is of a totally - different meaning. - gfp->ATHlower will lower the ATH for the whole file by a fixed - amount of x dB. - gfc->ath_auto_adjust will lower the ATH on a frame by frame basis - depending on the peak volume. - -2001-02-05 04:58 markt - - * frontend/parse.c: - - Added warning about using VBR modes. - This is because this website: - - http://www.kuro5hin.org/?op=displaystory;sid=2001/1/25/164540/759 - - is comparing Vorbis with lame -V4. - - While many people like the high bitrate VBR modes, - lame -V4 is *often* of lower quality than CBR. - -2001-02-05 02:36 shibatch - - * libmp3lame/psymodel.c: - - Reverted part of last tweaks of nspsytune. - -2001-02-05 02:27 markt - - * HACKING: - - updated HACKING with directions on how to run the - lametest.py python script - -2001-02-05 02:24 markt - - * test/: CBRABR.op, VBR.op, lametest.py, nores.op: - - Adding a python script used for testing, along with - some sample options files. - -2001-02-05 02:23 markt - - * HACKING, libmp3lame/encoder.c, libmp3lame/quantize_pvt.c: - - reverted encoder.c and quantize_pvt.c back to 13:00 3 Feb 2001. - These modifications broke my test cases. Any such changes need - aproval first. - - Also, we already have gfc->ath_lower (specified in db). - No reason to add another variable which does the same thing, - and does not even use the same units. - -2001-02-05 00:34 cisc - - * frontend/amiga_mpega.c: - - MPG_MD_LR_LR define was moved, set mode_ext to 0 instead (since we don't get that info anyway). - -2001-02-04 23:56 robert - - * frontend/parse.c, libmp3lame/lame.c, libmp3lame/vbrquantize.c: - - parse.c: small change in default behaviour for --vbr-mtrh - lame.c: it makes no sense for a sfb21 extra at sample frequencies below 44.1 kHz - vbrquantize.c: oops, last commit was a merger from a wrong branch of mine - -2001-02-04 23:28 shibatch - - * libmp3lame/quantize_pvt.c: - - Enabled auto-adjust ATH for nspsytune. - -2001-02-04 23:14 shibatch - - * libmp3lame/psymodel.c: - - Tweaked nspsytune. - -2001-02-03 23:20 robert - - * libmp3lame/: quantize_pvt.c, version.h: - - bumped version to alpha 9 - some clean-up - -2001-02-03 20:10 robert - - * libmp3lame/: encoder.c, quantize_pvt.c, util.c, util.h, - vbrquantize.c: - - patch by Gabriel Bouvigne: - auto adjust of ATH for low volume tracks - a big improvement in quality! - therefore on by default - - patch by Robert Hegemann: - further improvement of --vbr-mtrh mode - -2001-02-02 01:04 robert - - * libmp3lame/: quantize.c, quantize_pvt.c: - - --vbr-mtrh tweaks - -2001-01-31 19:44 aleidinger - - * configure, configure.in: - - bugfix - -2001-01-31 15:34 robert - - * libmp3lame/quantize.c: - - fix a typo I introduced by my last commit - -2001-01-31 12:53 aleidinger - - * Makefile.am.global, Makefile.in, acconfig.h, acinclude.m4, - aclocal.m4, config.h.in, configMS.h, configure, configure.in, - depcomp, Dll/Makefile.in, debian/Makefile.in, doc/Makefile.in, - doc/html/Makefile.in, doc/man/Makefile.in, dshow/Makefile.in, - frontend/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.am, libmp3lame/Makefile.in, - libmp3lame/i386/Makefile.in, misc/Makefile.in, - mpglib/Makefile.in: - - - config*/Makefile*/ac*: - * tests for *int*_t - * test for 80 bit floats (for speed optimizations) - * add pcm.* to the makefile - * removed resample.[ch] from the makefile - * depend upon automake 1.4b - * fix in check for ccc - (submitted by nold via the sourceforge patch page at - the lame project page, patch id #103507) - * something I may have forgotten - - Note: - Please don't commit any Makefile.in if you didn't have - changed the corresponding Makefile.am. CVS didn't stores - the time stamps of the files at commit time, it stores - the time stamps of the commit time, so we have to commit - the files in the correct order, but I'm to lazy to do so - and I assume I'm not the only one. - The same applies to config*. - - - depcomp: - missing file, the dependancy tracking should work again - -2001-01-30 20:53 robert - - * libmp3lame/quantize.c: - - fixed a design flaw in VBR_iteration_loop() I'm responsible for. - affects quality! - -2001-01-30 20:52 robert - - * libmp3lame/: lame.c, quantize_pvt.c, vbrquantize.c: - - tuning of --vbr-mtrh mode - -2001-01-30 20:51 robert - - * frontend/parse.c, include/lame.h: - - patch by Gaby: - changed --athlower to accept floats - -2001-01-30 11:02 robert - - * libmp3lame/: psymodel.c, util.c: - - psymodel.c: fixing compile problem (was: M_LN10 undefined) - util.c: Roel's modification to Gaby's ATH, new: --athtype 3 - -2001-01-29 14:46 robert - - * libmp3lame/vbrquantize.c: - - --vbr-mtrh and --vbr-new use now the faster and sloppier - scalefactor-band noise calculation with quality settings - -q 3...9 - -2001-01-28 12:51 takehiro - - * libmp3lame/: quantize.h, util.h: - - oops, compile problem fix - -2001-01-28 12:39 takehiro - - * libmp3lame/: quantize.c, quantize.h, quantize_pvt.c, - vbrquantize.c: - - magic number 4095 and 4096 is removed - -2001-01-27 18:00 takehiro - - * libmp3lame/psymodel.c: - - make temporal masking effect strong. - -2001-01-27 17:52 takehiro - - * libmp3lame/quantize_pvt.c: - - debug message is removed :) - -2001-01-27 17:39 takehiro - - * frontend/parse.c, include/lame.h, libmp3lame/psymodel.c, - libmp3lame/quantize_pvt.c, libmp3lame/util.h: - - experimental temporal masking support. - "--temporal" option to use this. - -2001-01-26 22:47 robert - - * frontend/parse.c, libmp3lame/psymodel.c, libmp3lame/quantize.c, - libmp3lame/quantize_pvt.c, libmp3lame/vbrquantize.c: - - tuning of --vbr-mtrh VBR mode - -2001-01-25 20:57 robert - - * misc/abx.c: - - update by Frank: - some further endings and audio formats - -2001-01-24 23:59 robert - - * libmp3lame/quantize_pvt.c: - - found and fixed another BUG caused by the "bit optimization." patch - -2001-01-24 23:02 robert - - * libmp3lame/: pcm.c, pcm.h: - - updates by Frank - -2001-01-24 22:33 robert - - * Makefile.DJGPP, Makefile.unix: - - small config.h related tunings - -2001-01-24 21:33 robert - - * libmp3lame/vbrquantize.c: - - quick-fix for code that was broken by Takehiro's last - "bit optimization." in function calc_xmin(), quantize_pvt.c - -2001-01-23 12:50 takehiro - - * libmp3lame/quantize_pvt.c: - - bit optimization. - -2001-01-23 07:12 shibatch - - * libmp3lame/quantize.c: - - Bugfix of nspsytune. - -2001-01-22 23:00 afaber - - * Dll/BladeMP3EncDLL.c: - - VBR was always enabled, even when the client did not ask for it - -2001-01-22 19:54 aleidinger - - * libmp3lame/vorbis_interface.c: - - remove trailing garbage - -2001-01-22 09:31 shibatch - - * libmp3lame/: psymodel.c, quantize.c: - - Tweaked nspsytune. - -2001-01-22 04:35 markt - - * Makefile.in, configure, Dll/Makefile.in, debian/Makefile.in, - doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, - dshow/Makefile.in, frontend/Makefile.in, frontend/parse.c, - include/Makefile.in, libmp3lame/Makefile.in, - libmp3lame/psymodel.c, libmp3lame/i386/Makefile.in, - misc/Makefile.in, mpglib/Makefile.in: - - fixed bug preventing -m a mode from working. - - ran autoconf which changed all the Makefile.in's - -2001-01-22 01:07 robert - - * libmp3lame/: pcm.c, pcm.h, vorbis_interface.c: - - patches by Frank: - - vorbis_interface: was/is broken since a long time - pcm.[ch]: fixing some transfer errors (email) - -2001-01-21 21:14 afaber - - * Dll/BladeMP3EncDLL.c: - - Fixed problems with writing the Xing MP3 header (gfc->internal_flags structure was already freed, while it was needed to write the Xing MP3 tag) - -2001-01-21 19:13 robert - - * libmp3lame/: pcm.c, pcm.h: - - patches by Frank: - - scalar.nas - new SIMD assembler routines - resample.[ch] - removed - pcm.[ch] - new, containing resampling routines and more - version.c - some clean up - -2001-01-21 19:06 robert - - * libmp3lame/: i386/scalar.nas, resample.c, resample.h, version.c: - - patches by Frank: - - scalar.nas - new SIMD assembler routines - resample.[ch] - removed - pcm.[ch] - new, containing resampling routines and more - version.c - some clean up - -2001-01-21 19:03 robert - - * frontend/lametime.c: - - it's always a good idea to include its own header file - -2001-01-20 09:51 robert - - * libmp3lame/util.c: - - patch by Gaby: - - I changed a file from the 19/01 cvs (I added an ath balanced between the - original one and Frank's one on the option --athtype 2) - -2001-01-19 09:08 shibatch - - * libmp3lame/: encoder.c, psymodel.c, quantize_pvt.c: - - Improved reservoir handling(nspsytune). - -2001-01-18 22:18 robert - - * libmp3lame/quantize_pvt.c: - - allow "--athlower n" to modify the ATH for sfb21 - -2001-01-18 13:04 aleidinger - - * Makefile.DJGPP: - - add config.h to the clean target - -2001-01-18 13:03 aleidinger - - * Makefile.DJGPP: - - bugfix (please report if it's broken, I can't test the config.h target) - -2001-01-17 21:32 robert - - * Makefile.unix: - - additional fixes - -2001-01-17 20:35 robert - - * libmp3lame/: VbrTag.c, util.c, util.h: - - RH_SEEK_TABLE enables a different method of generating TOC entries - in Xing VBR header. now enabled! - - PLEASE TEST TRY IT - - It should fix the problem poeple reported who encode radio shows or - alike which last a few hours. - Another advantage is, it will not steadily increase LAME's memory footprint - while running. - -2001-01-17 16:05 shibatch - - * libmp3lame/psymodel.c: - - Reverted the final change. - It degraded encoded quality of gspi*.wav. - -2001-01-17 13:26 shibatch - - * libmp3lame/psymodel.c: - - Tweaked nspsytune. - -2001-01-17 09:55 robert - - * Makefile.unix: - - try to fix the broken Makefile after latest configurification - -2001-01-17 09:54 robert - - * libmp3lame/newmdct.c: - - + replaced M_SQRT2 by SQRT2 which is defined in util.h - + replaced "=-" by "= -" to avoid confusion with the - old K&R "=-" operator, an equivalent to "-=". Even - though new compilers seem to handle it as an - assignement and unary minus sequence, but some - buggy compiler could be trapped here (as I). - -2001-01-16 13:08 robert - - * configMS.h: - - turned some defines for system include files on - -2001-01-16 09:04 robert - - * Makefile.MSVC: - - fixed typo, sorry - -2001-01-15 15:16 aleidinger - - * Makefile.am, Makefile.am.global, Makefile.in, config.h.in, - configMS.h, configure, configure.in, Dll/Makefile.am, - Dll/Makefile.in, debian/Makefile.am, debian/Makefile.in, - doc/Makefile.am, doc/Makefile.in, dshow/Makefile.am, - dshow/Makefile.in, frontend/Makefile.am, frontend/Makefile.in, - frontend/brhist.c, frontend/console.c, frontend/get_audio.c, - frontend/gpkplotting.c, frontend/main.c, frontend/mp3rtp.c, - frontend/parse.c, frontend/rtp.c, include/Makefile.am, - include/Makefile.in, libmp3lame/Makefile.am, - libmp3lame/Makefile.in, libmp3lame/id3tag.c, - libmp3lame/machine.h, misc/Makefile.am, misc/Makefile.in, - mpglib/Makefile.am, mpglib/Makefile.in, mpglib/common.c, - mpglib/decode_i386.c, mpglib/mpg123.h: - - automake/autoconf cleanup and enhancement - -2001-01-15 14:19 shibatch - - * libmp3lame/: encoder.c, psymodel.c, util.h: - - More cleanups and bugfixes of --nspsytune. - -2001-01-15 09:38 aleidinger - - * doc/html/Makefile.am: - - remove node[57].html - -2001-01-15 09:14 gramps - - * USAGE: - - Raised track limit from 99 to 255 per user requests. - -2001-01-15 09:10 robert - - * Makefile.B32, Makefile.MSVC, Makefile.unix: - - more RH_AMP clean up - -2001-01-15 08:58 gramps - - * frontend/parse.c, doc/html/id3.html: - - Raised track limit from 99 to 255 per user requests. - -2001-01-15 08:48 gramps - - * libmp3lame/id3tag.c: - - - Simplified prologue of all public functions, removing intermediate "spec" - variable, and assuming (like the rest of LAME) that gfp is never null. - - Fixed a stupid sizeof bug (mine) in "id3tag_init". - - Raised track limit from 99 to 255 per user requests. - - No longer write full text of genre in version 2 tag. Now write more - cannonical "(num)" format where "num" is the text version of the genre - number, more closely following the updated ID3v2.3 spec and usage in id3lib. - This also makes the tag smaller. - - Now use id3lib-compatible bogus language descriptor "XXX" in version 2 - comment frames instead of just null bytes. - - Changed order of frames written in version 2 tag to match version 1 tag. - - Restored some of Frank's optimizations. - - Fixed LAME URL. - - Reworded some comments and fixed misspellings. - - Moved "local_strcasecmp" back into its original position. - - Some small reformatting to match original file. - -2001-01-14 23:29 gramps - - * USAGE: - - - Changed "highest" to "higher" to describe recommended quality setting in - constant bit rate example. - - - Changed "CBR" to "VBR" to correct misspelling in variable bit rate - description. - -2001-01-14 22:40 gramps - - * doc/html/Makefile.in: - - Removed dependency on obsolete node5.html and node7.html. - -2001-01-14 22:35 markt - - * USAGE, frontend/parse.c: - - documentation of -q parameter in USAGE and lame --longhelp - -2001-01-14 22:13 markt - - * doc/html/: node5.html, node7.html: - - removed as per Gaby - -2001-01-14 22:12 markt - - * libmp3lame/: lame.c, quantize.c: - - created new routine lame_init_qval() which does all the - gfp->quality related settings. Cleaned up some more RH_AMP code: - The only way to enable scalefac_scale right now is with - -Z or --nspsytune. - -2001-01-14 21:01 markt - - * testcase.mp3: - - updated test case - (Takehiro fixed a bug which I introduced, which changes test cases). - -2001-01-14 17:25 aleidinger - - * DEFINES, Makefile.in, aclocal.m4, config.guess, config.sub, - configure, configure.in, missing, mkinstalldirs, Dll/Makefile.am, - Dll/Makefile.in, debian/Makefile.in, doc/Makefile.in, - doc/html/Makefile.in, doc/man/Makefile.in, dshow/Makefile.in, - frontend/Makefile.in, frontend/depcomp, include/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/depcomp, - libmp3lame/i386/Makefile.in, misc/Makefile.in, misc/depcomp, - mpglib/Makefile.in, mpglib/depcomp: - - DEFINES: - remove obsolete defines - - configure*: - minor cleanup - - Makefile*: - - minor cleanup - - use automake 2.14b - - Added files: - needed for new automake - - rest: - updated automake files - -2001-01-14 15:40 aleidinger - - * misc/abx.c: - - there are encoders with different delays on different channels (Frank) - -2001-01-14 12:21 shibatch - - * libmp3lame/lame.c: - - Enabled scalefac_scale if --nspsytune is specified. - -2001-01-14 12:02 takehiro - - * testcase.mp3: - - fixed new amp_scalefac_bands - (it may use "trigger" variable without any initialization) - -2001-01-14 09:42 takehiro - - * libmp3lame/quantize.c: - - minor bug fix. - when subblock gain=1 and scalefactor is -1(means no need to calculate), - LAME will try to check the quantization with meanless scalefactor combination. - -2001-01-14 09:39 takehiro - - * libmp3lame/quantize.c: - - subblock_gain is 3-bit and its limit is 7, not 8. - -2001-01-14 09:35 takehiro - - * libmp3lame/quantize.c: - - oops, conflicts are removed - -2001-01-14 09:31 takehiro - - * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h: - - to store the distortion into III_psy_xmin structure, not simple array. - this may make array pointer calculation easier and bring some speed up. - -2001-01-14 09:26 shibatch - - * libmp3lame/: encoder.c, psymodel.c, psymodel.h: - - Cleanup and small speed optimization of --nspsytune. - -2001-01-14 08:17 markt - - * API: - - one minor update to the API file - -2001-01-14 08:13 markt - - * testcase.mp3, libmp3lame/lame.c, libmp3lame/quantize.c: - - made a new, simpler unified amp_scalefac_bands(): - - * distort[] = noise/masking - * distort[] > 1 ==> noise is not masked - * distort[] < 1 ==> noise is masked - * max_dist = maximum value of distort[] - * - * Three algorithms: - * noise_shaping_amp - * 0 Amplify all bands with distort[]>1. - * - * 1 Amplify all bands with distort[] >= max_dist^(.5); - * ( 50% in the db scale) - * - * 2 Amplify first band with distort[] >= max_dist; - * - * - * For algorithms 0 and 1, if max_dist < 1, then amplify all bands - * with distort[] >= .95*max_dist. This is to make sure we always - * amplify at least one band. - * - - noise_shaping_amp=0 -q3 .. -q9 - noise_shaping_amp=1 -q2 - noise_shaping_amp=2 -q1, -q0 - - --nspsytune was using what is now noise_shaping_amp=2, but the only - way to get this now is to use --nspsytune -q1. - Naoki: is this a problem? - - I also defaulted the clever RH_AMP stoping criterion in - outer_loop. - -2001-01-14 05:36 markt - - * libmp3lame/: lame.c, psymodel.c, quantize.c, quantize_pvt.c, - util.h, vbrquantize.c: - - some tuning of VBR masking_lower because of new ATH function. - Disabled VBR_q based lowering of ATH. Is this still needed? - You can always achieve the same effect with --athlower option. - -2001-01-13 18:01 aleidinger - - * Makefile.am, Makefile.in, configure, configure.in, - Dll/Makefile.in, debian/Makefile.am, debian/Makefile.in, - doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, - dshow/Makefile.am, dshow/Makefile.in, frontend/Makefile.am, - frontend/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.am, libmp3lame/Makefile.in, - libmp3lame/i386/Makefile.am, libmp3lame/i386/Makefile.in, - misc/Makefile.in, mpglib/Makefile.am, mpglib/Makefile.in: - - "make dist" related: - - add debian subdir - - add missing files - - different builddir related: - - change argument to -l option for nasm - -2001-01-13 17:40 aleidinger - - * libmp3lame/Makefile.in.old: - - obsolete - -2001-01-13 17:36 aleidinger - - * frontend/Makefile.in.old: - - obsolete - -2001-01-13 13:45 takehiro - - * libmp3lame/newmdct.c: - - bit coding hack and cleanup - -2001-01-13 12:55 takehiro - - * Makefile.in, Dll/Makefile.in, doc/Makefile.in, - doc/html/Makefile.in, doc/man/Makefile.in, dshow/Makefile.in, - frontend/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, - misc/Makefile.in, mpglib/Makefile.in: - - automake generated - -2001-01-13 12:54 takehiro - - * libmp3lame/: fft.c, i386/Makefile.am, i386/fft3dn.nas: - - now LAME supports 3dnow! fft - -2001-01-13 10:37 pgubanov - - * dshow/Encoder.cpp: - - Removed (char*) cast in lame_encode_buffer() call - -2001-01-12 19:20 markt - - * debian/: changelog, control, copyright, lame-dev.docs, - lame-dev.files, lame-extras.files, lame.docs, lame.files, rules: - - added debian files from Ingo Saitz - -2001-01-12 19:17 markt - - * debian/: cron.d.ex, dirs, docs, emacsen-install.ex, - emacsen-remove.ex, emacsen-startup.ex, ex.doc-base.package, - files, init.d.ex, manpage.1.ex, manpage.sgml.ex, menu.ex, - postinst.debhelper, postinst.ex, postrm.ex, preinst.ex, - prerm.debhelper, prerm.ex, substvars, watch.ex: - - New Debian package from Ingo Saitz - -2001-01-12 19:11 markt - - * README.Debian: - - removed README.Debian - -2001-01-12 11:13 aleidinger - - * misc/abx.c: - - further improvements, e.g. reduced latency (Frank) - -2001-01-11 22:37 markt - - * HACKING, frontend/mp3rtp.c, frontend/mp3x.c: - - updated mp3rtp.c and mp3x.c to use lame_global_flags *lame_init() - (lame allocates storage for lame_global_flags) - rather than lame_init_old(&gf) which required calling - program to instantiate gf. - - Now we need to start writing one routine for every parameter: - - lame_set_bitrate - lame_set_num_channels - etc... - -2001-01-10 16:03 aleidinger - - * frontend/lame.dsp, frontend/mp3x.dsp, libmp3lame/libmp3lame.dsp, - mpglib/mpglib.dsp: - - work around for a bug in VC (Todd Richmond) - -2001-01-09 15:15 aleidinger - - * misc/abx.c: - - bugfixes - -2001-01-08 18:15 aleidinger - - * DEFINES: - - removed KLEMM_12, on by default - -2001-01-08 18:07 aleidinger - - * libmp3lame/vbrquantize.c: - - Roberts VBR code: speed improvement for vbr-mtrh (ping pong patch, OKed by Mark) - -2001-01-07 23:47 markt - - * frontend/: portableio.c, timestatus.c: - - chage to KLEMM-36 from Frank - -2001-01-07 22:53 markt - - * frontend/timestatus.c, libmp3lame/psymodel.c: - - undefined variable (last = 0, line 214) in timestatis.c - commented out. - - fixed some dimensions in the funtion prototype of l3para_read - -2001-01-07 22:35 markt - - * frontend/timestatus.c: - - Applied Frank's patch (from mp3encoder) to timestatus.c - with -R. I hope I didn't undo this by mistake! - -2001-01-07 22:33 markt - - * frontend/timestatus.c: - - added a brhist_jump_back() to timestatus_klemm(). - sent to me by Magnus Holmgren. - -2001-01-07 22:28 markt - - * USAGE, frontend/parse.c, include/lame.h, libmp3lame/encoder.c, - libmp3lame/lame.c, libmp3lame/psymodel.c: - - added the "-ma" option. - Ultimate goal: - 8 kbps Mono - 16- 96 kbps Intensity Stereo (if available, otherwise Joint Stereo) - 112-128 kbps Joint Stereo -mj - 160-192 kbps something between -mj and -ms - 224-320 kbps Independent Stereo -ms - - currently enables KLEMM_12. KLEMM_12 is gone. - -2001-01-07 16:17 aleidinger - - * libmp3lame/lame.c: - - Don\'t change floatingpoint mask for FreeBSD on Alpha hardware, obtained from FreeBSD-Ports - -2001-01-07 14:48 aleidinger - - * misc/abx.c: - - cleanup, no functional change - -2001-01-07 14:47 aleidinger - - * Dll/Example.dsw, Dll/MP3EncDll.dsw, dshow/dshow.dsw, - frontend/lame.dsw, frontend/mp3x.dsw, misc/abx.c: - - fix *.dsw - new version of abc.c (Frank) - -2001-01-07 09:14 markt - - * frontend/: mp3rtp.c, mp3x.c: - - global variables used by frontend code are now instantiated - in parse.c. - - Before, the were defined external in main.h, and instantiated - in the frontend, meaning they had to appear in mp3x.c, main.c - and mp3rtp.c - - we need to get rid of these! - -2001-01-07 09:11 markt - - * frontend/main.c, frontend/main.h, frontend/parse.c, - libmp3lame/lame.c: - - more tweaks to the --decode-mp3delay option - -2001-01-07 08:28 markt - - * libmp3lame/: lame.c, quantize.c, util.h: - - added a variable, noise_shaping_amp. It does nothing right now. - -2001-01-07 08:24 markt - - * frontend/: main.c, main.h, parse.c: - - added a undocumented option --decode-mp3delay - to allow someone to adjust the number of samples - lame --decode will truncate. David Robinson requirested this - since he didn't like that lame --decode would truncate 1106 samples - (assuming a encoder delay of 576) since BladeEnc has an encoder delay - of only 528.) - -2001-01-07 05:25 markt - - * frontend/main.c, libmp3lame/util.c: - - main.c: uses lame_init() instead of lame_init_old(). - util.c: added frank's changes: 32 point filter instead of 19. - prep work for frank's new resampling/filtering code. - updated test cases. - -2001-01-06 23:12 markt - - * libmp3lame/: lame.c, psymodel.c, quantize_pvt.c, util.c: - - ATHformula modifed to work in Hz instead of Khz. - - Minor change to a bunch of routines + regeneration of - test cases. - -2001-01-06 22:57 markt - - * testcase.mp3: - - updated testcase - -2001-01-06 22:55 markt - - * libmp3lame/fft.c: - - Switched to the Blackman window for the FFT energy estimator. - This is just to merge some nspsytune code into default - -2001-01-06 07:40 gramps - - * libmp3lame/id3tag.c: - - Backed out some large changes done in November which introduced at least two bugs. Also fixed other older bug in id3tag_write_v2. - -2001-01-06 01:11 markt - - * include/lame.h, libmp3lame/lame.c, libmp3lame/psymodel.c: - - more prep work to remove all psycho acoustic tables - -2001-01-06 01:00 markt - - * libmp3lame/: VbrTag.h, lame.c, mpglib_interface.c, psymodel.c: - - added formulas to replace the last of the table data. - some changes to reflect that Xing VBR header parsing code - has been moved into mpglib - -2001-01-05 22:15 markt - - * mpglib/: interface.c, mpglib.h: - - added XingVBR header parsing code - -2001-01-05 22:13 markt - - * frontend/: get_audio.c, gtkanal.c: - - fixed bug in frame analyzer when analyzing mp3 files. - frame counter incremented too soon. This was introduced - when someone (maybe me, but I dont remember!) replaced the - use of gfp->frameNum with a global variable limited in scope to - just gtkanal.c - - get_audio.c: removed VBR Xing header checking code. - this has been moved into mpglib. - -2001-01-05 15:26 aleidinger - - * Makefile.in.old, configure.in.old: - - obsolete - -2001-01-05 15:20 aleidinger - - * Makefile.B32, Makefile.unix, frontend/brhist.c, - frontend/get_audio.c, frontend/gpkplotting.c, frontend/gtkanal.c, - frontend/lame.dsp, frontend/lametime.c, frontend/main.c, - frontend/mp3rtp.c, frontend/mp3x.c, frontend/mp3x.dsp, - frontend/parse.c, frontend/portableio.c, frontend/rtp.c, - frontend/timestatus.c, libmp3lame/VbrTag.c, - libmp3lame/bitstream.c, libmp3lame/debugscalefac.c, - libmp3lame/encoder.c, libmp3lame/fft.c, libmp3lame/id3tag.c, - libmp3lame/lame.c, libmp3lame/libmp3lame.dsp, - libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, - libmp3lame/psymodel.c, libmp3lame/quantize.c, - libmp3lame/quantize_pvt.c, libmp3lame/resample.c, - libmp3lame/reservoir.c, libmp3lame/tables.c, - libmp3lame/takehiro.c, libmp3lame/util.c, - libmp3lame/vbrquantize.c, libmp3lame/version.c, - libmp3lame/vorbis_interface.c, misc/abx.c, mpglib/common.c, - mpglib/dct64_i386.c, mpglib/decode_i386.c, mpglib/interface.c, - mpglib/layer1.c, mpglib/layer2.c, mpglib/layer3.c, - mpglib/mpglib.dsp, mpglib/tabinit.c: - - misc/abx.c: (Frank Klemm) - - level adjustment - - clean up - - A-B repeat ("chunks") - - Makefile.*: - - nuke NOTERMCAP, it's HAVE_TERMCAP now - (defined where neccessary, please report slipped in breakage) - - (frontend|mp3x|libmp3lame|mpglib).dsp: - - copy configMS.h config.h (Todd Richmond) - - unbreak (Todd Richmond) - - nuke NOTERMCAP - - change HAVE([A-Z]*) to HAVE_$1 - - *.c: - - get rid of configMS.h, we finally have support in *.dsp - -2001-01-03 13:06 aleidinger - - * Makefile.DJGPP, Makefile.am, Makefile.in, Makefile.unix, - aclocal.m4, config.h.in, configure, configure.in, - frontend/Makefile.am, frontend/Makefile.in, frontend/brhist.c, - frontend/console.c, frontend/get_audio.c, frontend/gpkplotting.c, - frontend/gtkanal.c, frontend/lametime.c, frontend/main.c, - frontend/mp3rtp.c, frontend/mp3x.c, frontend/parse.c, - frontend/portableio.c, frontend/rtp.c, frontend/timestatus.c, - libmp3lame/VbrTag.c, libmp3lame/bitstream.c, - libmp3lame/debugscalefac.c, libmp3lame/encoder.c, - libmp3lame/fft.c, libmp3lame/id3tag.c, libmp3lame/lame.c, - libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, - libmp3lame/psymodel.c, libmp3lame/quantize.c, - libmp3lame/quantize_pvt.c, libmp3lame/resample.c, - libmp3lame/reservoir.c, libmp3lame/tables.c, - libmp3lame/takehiro.c, libmp3lame/util.c, - libmp3lame/vbrquantize.c, libmp3lame/version.c, - libmp3lame/vorbis_interface.c, misc/Makefile.am, - misc/Makefile.in, mpglib/common.c, mpglib/dct64_i386.c, - mpglib/decode_i386.c, mpglib/interface.c, mpglib/layer1.c, - mpglib/layer2.c, mpglib/layer3.c, mpglib/tabinit.c: - - Makefile.{unix,DJGPP}: Bugfixes (Includes) - Makefile.am: follow the move of some scripts to misc - *: add dmalloc support (configure --with-dmalloc) - (it seems we have a memleak somewhere, I will have a closer look soon) - -2001-01-03 11:51 shibatch - - * libmp3lame/: psymodel.c, encoder.c: - - Tweaking and bugfix of --nspsytune. - -2001-01-02 06:02 markt - - * frontend/get_audio.c, libmp3lame/encoder.c: - - typo in read_samples_pcm fixed - -2001-01-01 17:35 markt - - * API, HACKING: - - minor edits to API and HACKING - -2001-01-01 17:26 markt - - * Lame.vbs, README.WINGTK, TODO, USAGE, lame4dos.bat, - misc/Lame.vbs, misc/lame4dos.bat: - - moved some more scripts into 'misc' directory - -2001-01-01 17:12 markt - - * INSTALL, README.WINGTK, USAGE, auenc, mlame, - frontend/README.Win32, misc/auenc, misc/mlame: - - moved scripts into misc directory - moved README.Win32 (which described compiling mp3x under windows) - back to its original name, README.WINGTK - minor updates to INSTALL and USAGE - -2000-12-27 13:13 aleidinger - - * misc/abx.c: - - - listen to the difference of both signals - - highlighting of "errors" - - DC canceling - - support for monaural signals - - cleanup - - bugfixes - - correct shell quoting - -2000-12-25 10:49 shibatch - - * frontend/parse.c, libmp3lame/lame.c, libmp3lame/quantize_pvt.c, - libmp3lame/util.h: - - Tweaked --nspsytune. - -2000-12-22 15:36 aleidinger - - * misc/abx.c: - - now with cross correlation (Frank) - -2000-12-20 22:55 aleidinger - - * misc/abx.c: - - - files to test have to have the same samplerate (Frank) - - check for correct number of arguments (Alexander) - -2000-12-20 15:14 aleidinger - - * DEFINES, libmp3lame/psymodel.c, libmp3lame/tables.c, - libmp3lame/tables.h: - - Patches for KLEMM_43 protected code - -2000-12-19 13:09 aleidinger - - * DEFINES, libmp3lame/lame.c, libmp3lame/psymodel.c, - libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, - libmp3lame/reservoir.c, libmp3lame/tables.c, - libmp3lame/vbrquantize.c: - - Ping pong #3, OKed by Mark. - -2000-12-19 08:16 markt - - * LICENSE: - - simplifed the LICENSE file describing how to use - LAME in commercial software - -2000-12-19 07:51 markt - - * INSTALL, README, README.B32: - - updated README files with new configure information. - debuging statement added to interface.c, then removed. - -2000-12-19 07:46 markt - - * frontend/: brhist.c, get_audio.c: - - more size_t's removed - -2000-12-19 07:43 markt - - * frontend/: main.c, mp3rtp.c, parse.c, rtp.c, rtp.h: - - removed some size_t's. - Added some windows code to rtp.c/mp3rtp.c: It is supposed to - be much improved: - - LAME is really great project. - - However, RTP code for multicasting isn't very good. - - I've attached some modification, and tested it on Win NT4 and Win2K with - FreeAmp on ordinary 10 and 100 Mbit Ethernet with encoding in neverending - loop. It was running one week w/o any probs. - - I would like to please you to not include my name anywhere (there are - several reason why, at the moment). - - However, code is very MSVC specific, so it is commented out - with #if 0. Most of the code was added to the end of rtp.c. - -2000-12-19 07:00 markt - - * frontend/main.c: - - deleted stupid C++ typecasts. LAME is written in C. - integer arguments to fwrite() do not need typecasts. - -2000-12-16 05:43 shibatch - - * libmp3lame/: lame.c, psymodel.c: - - 1. Old ATH formula is now default for --nspsytune. - 2. Tweaked a parameter of --nspsytune. - 3. Minor code cleanup. - -2000-12-14 13:32 aleidinger - - * Makefile.in, configure, Dll/Makefile.in, doc/Makefile.in, - doc/html/Makefile.in, doc/man/Makefile.in, dshow/Makefile.in, - frontend/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, - misc/Makefile.in, mpglib/Makefile.in: - - regen - -2000-12-14 13:31 aleidinger - - * configure.in, libmp3lame/i386/Makefile.am: - - force nasm to generate coff output when building under cygwin (Egor Duga) - -2000-12-14 10:05 aleidinger - - * Makefile.in, config.h.in, configure, Dll/Makefile.in, - doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, - dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, - misc/Makefile.in, mpglib/Makefile.in: - - regen - -2000-12-14 10:04 aleidinger - - * Makefile.DJGPP, Makefile.am, Makefile.unix, configMS.h, - configure.in, frontend/Makefile.am, libmp3lame/Makefile.am, - libmp3lame/i386/Makefile.am, mpglib/Makefile.am: - - configure.in: - - determine the size of various types at configure time - - add --enable-debug=anoying - - configMS.h: - - add SIZEOF_... defines, see configure.in - - Makefile.unix: - - bugfix from Robert (shame on me) - - Makefile.DJGPP: - - add cpu_feat.nas and scalar.nas to the build with NASM - - Submitted by Egor Duda (thank you, works great): - * Makefile.am: add $(EXEEXT) to executables for cygwin build - * Makefile.am: take source .wav file from srcdir - * configure.in: require autoconf 2.13 - * configure.in: check for executable files extension - * frontend/Makefile.am: use builddir to get autogenerated headers - and libraries from, in case we're doing build in separate directory; - take normal headers from srcdir instead of current. - * libmp3lame/Makefile.am: ditto - * libmp3lame/i386/Makefile.am: ditto - * mpglib/Makefile.am: ditto - -2000-12-13 02:28 shibatch - - * libmp3lame/lame.c: - - Minor bugfix. - -2000-12-13 02:21 shibatch - - * libmp3lame/psymodel.c: - - Minor bugfix of --nspsytune. - (forgot to merge.) - -2000-12-12 04:50 shibatch - - * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, - libmp3lame/lame.c, libmp3lame/psymodel.c, libmp3lame/quantize.c, - libmp3lame/quantize_pvt.c, libmp3lame/util.c, libmp3lame/util.h: - - Added option --athtype which selects ATH formula. - - Some major changes to --nspsytune. - 1. --nspsytune doesn't use pe. - 2. MS psymodel is modified. Added new option --nssafejoint. - 3. some more tunings of short block preecho control. - -2000-12-12 01:11 markt - - * libmp3lame/: lame.c, util.c: - - - Latest checkin from Alex include an rewritten 'Bitrate()' routine. - - This breaks the --abr code, since new routine considers a bitrate of 0 - invalid. Now fixed. - -2000-12-11 22:15 markt - - * misc/Makefile.am: - - added mlame_corr.c to the - EXTRA_DIST line of Makefile.am - -2000-12-11 16:03 aleidinger - - * DEFINES, Makefile.in, frontend/main.c, include/lame.h, - libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/fft.c, - libmp3lame/fft.h, libmp3lame/lame.c, - libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, - libmp3lame/newmdct.h, libmp3lame/psymodel.c, - libmp3lame/psymodel.h, libmp3lame/quantize_pvt.h, - libmp3lame/util.c, libmp3lame/util.h, libmp3lame/vbrquantize.c, - libmp3lame/vorbis_interface.c, mpglib/interface.c, - mpglib/interface.h: - - tries to include every change before the CVS rollback which didn't changes output - -2000-12-11 14:48 aleidinger - - * frontend/gtkanal.c, libmp3lame/bitstream.c, libmp3lame/encoder.c, - libmp3lame/lame.c, libmp3lame/newmdct.c, libmp3lame/psymodel.c, - libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, - libmp3lame/reservoir.c, libmp3lame/util.c, libmp3lame/util.h, - libmp3lame/vbrquantize.c, libmp3lame/vorbis_interface.c: - - redo gfc->stereo -> gfc->channels_out conversation - -2000-12-11 01:32 markt - - * USAGE: - - updated info regarding the MAD decoder - -2000-12-11 00:34 markt - - * Makefile.am, libmp3lame/lame.c: - - applied patch for cygwin FPE stuff - -2000-12-11 00:01 markt - - * USAGE, configure, configure.in, mlame_corr.c, - frontend/get_audio.c, frontend/get_audio.h, include/lame.h, - libmp3lame/mpglib_interface.c, misc/mlame_corr.c: - - configure: removed all the debug warning flags. it was impossible - to find real problems when compiling in debug mode. - - moved mlame_corr.c into 'misc' directory - - removed some 'size_t' and 'unsigned' from get_audio.c - - made mp3buffer 'unsigned char*' for the mpglib interface routines. - -2000-12-08 13:47 aleidinger - - * auenc, misc/mugeco.sh: - - more portability fixes from Fredrik Mellstrom - -2000-12-07 18:58 aleidinger - - * mlame: - - use sh instead of bash - -2000-12-07 18:55 aleidinger - - * auenc: - - portability patch from Fredrik Mellstrom - -2000-12-05 15:48 aleidinger - - * DEFINES: - - update - -2000-12-05 15:46 aleidinger - - * Makefile.MSVC: - - add scalar.nas - -2000-12-05 15:40 aleidinger - - * configure, Dll/Makefile.in, doc/Makefile.in, - doc/html/Makefile.in, doc/man/Makefile.in, frontend/Makefile.in, - include/Makefile.in, libmp3lame/Makefile.in, - libmp3lame/i386/Makefile.in, mpglib/Makefile.in: - - regen - -2000-12-05 15:37 aleidinger - - * Makefile.B32, Makefile.MSVC, Makefile.in, config.h.in, - configMS.h, configure.in, frontend/Makefile.am, - frontend/get_audio.c, frontend/get_audio.h, - frontend/portableio.c, libmp3lame/Makefile.am, - libmp3lame/i386/Makefile.in, libmp3lame/i386/cpu_feat.nas, - misc/ath.c, mpglib/Makefile.am: - - play ping-pong with some files (we're now at 2000-12-03 again), ok'ed by Mark - -2000-12-05 01:17 markt - - * DEFINES: - - restored DEFINES. - - Sorry Alexendar - I tried to only revert the *.c and *.h files - to their Nov 21 values (because of test case problems) but - I was unable to get this to work. I was lazy and reverted - entire repository back to Nov 21. - -2000-12-05 01:15 markt - - * DEFINES: - - trying to restore DEFINES - -2000-12-04 14:36 aleidinger - - * Makefile.unix: - - add scalar.nas to build - -2000-12-04 06:31 pgubanov - - * dshow/: PropPage.cpp, PropPage.h: - - Target bitrate fix - -2000-12-04 06:30 pgubanov - - * dshow/: Mpegac.cpp, Mpegac.def, Mpegac.h, PropPage_adv.cpp, - PropPage_adv.h, Property.rc, README, REG.CPP, REG.H, UIDS.H, - dshow.dsp, iaudioprops.h, resource.h: - - CR/LF fix - -2000-12-03 23:27 markt - - * testcase.mp3, libmp3lame/util.c: - - KLEMM_01 defaulted. - - This enables the new ATH formula. - -2000-12-03 23:03 markt - - * libmp3lame/: tables.c, tables.h: - - huffmantab: int changed back to short. - -2000-12-03 23:00 markt - - * DEFINES, Makefile.B32, Makefile.MSVC, Makefile.in, config.h.in, - configMS.h, configure, configure.in, Dll/Makefile.in, - doc/Makefile.in, doc/html/Makefile.in, - doc/html/contributors.html, doc/html/examples.html, - doc/html/history.html, doc/html/id3.html, doc/html/index.html, - doc/html/lame.css, doc/html/modes.html, doc/html/node6.html, - doc/html/switchs.html, doc/man/Makefile.in, frontend/Makefile.am, - frontend/Makefile.in, frontend/get_audio.c, frontend/get_audio.h, - frontend/gtkanal.c, frontend/main.c, frontend/parse.c, - frontend/portableio.c, include/Makefile.in, include/lame.h, - libmp3lame/Makefile.am, libmp3lame/Makefile.in, - libmp3lame/bitstream.c, libmp3lame/bitstream.h, - libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/fft.c, - libmp3lame/fft.h, libmp3lame/lame.c, - libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, - libmp3lame/newmdct.h, libmp3lame/pcm.c, libmp3lame/pcm.h, - libmp3lame/psymodel.c, libmp3lame/psymodel.h, - libmp3lame/quantize.c, libmp3lame/quantize.h, - libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, - libmp3lame/reservoir.c, libmp3lame/tables.c, libmp3lame/tables.h, - libmp3lame/util.c, libmp3lame/util.h, libmp3lame/vbrquantize.c, - libmp3lame/version.h, libmp3lame/vorbis_interface.c, - libmp3lame/i386/Makefile.am, libmp3lame/i386/Makefile.in, - libmp3lame/i386/cpu_feat.nas, mpglib/Makefile.am, - mpglib/Makefile.in, mpglib/interface.c, mpglib/interface.h: - - - Reverted back to Nov 21 version. - - Added HTML doc from GB - -2000-12-03 17:38 aleidinger - - * configure: - - regen - -2000-12-03 17:37 aleidinger - - * configure.in: - - fix in debugging options - -2000-12-03 14:16 aleidinger - - * DEFINES: - - add KLEMM_36 - -2000-12-03 14:14 aleidinger - - * frontend/portableio.c: - - Portability fix from Frank, you need to define KLEMM_36 to enable it - (no functional change if you leave it disabled): - ---snip--- - It is a hoax to call this code portable-IO: - - - It doesn't work on machines with CHAR_BIT != 8 - - it also don't test this error condition - - otherwise it tries to handle CHAR_BIT != 8 by things like - masking 'putc(i&0xff,fp)' - - It doesn't handle EOF in any way - - it only works with ints with 32 or more bits - - It is a collection of initial buggy code with patching the known errors - instead of CORRECTING them! - For that see comments on the old Read16BitsHighLow() - ---snip--- - -2000-12-03 13:14 aleidinger - - * misc/abx.c: - - Improvements from Frank: - - more input formats (detected by filename) - Improvements by me: - - sanity checks - - works on FreeBSD - -2000-12-01 17:42 aleidinger - - * libmp3lame/: psymodel.c, tables.c, tables.h: - - Patches from Frank: - ---snip--- - defined 4 new types for holding psydata information - psydata is divided into 25 normal tables (the 24 tables + 1 master table) - access via "normal" index instead of scanning through the data - tables are now sparsable, i.e. it is possible to remove unneeded parts - but this is not yet done to avoid to do to much things at once - tables are now smaller - ---snip--- - Hi also did some tests to verify this didn't changes the output. - - I also verified it with "make test" and some regular encoding. - -2000-11-30 10:23 aleidinger - - * DEFINES: - - add description of some compile time defines - -2000-11-30 10:20 aleidinger - - * Makefile.B32: - - sync with recent changes in the other Makefiles: - - HAVExxx -> HAVE_xxx - - HAVE_CONFIG_MS_H - -2000-11-30 10:17 aleidinger - - * frontend/: get_audio.c, get_audio.h: - - - remove check for CHAR_BITS, was a typo from Frank (confirmed by Frank) - - add optimization for unknown SIZEOF_UNSIGNED_LONG (submitted by Frank) - in optimized version of SwapBytesInWords() - - make the optimized version of SwapBytesInWords() the default - (OKed by Mark) - - remove DetermineByteOrder(), we have compile time support for it - -2000-11-30 10:14 aleidinger - - * configure, Makefile.in, libmp3lame/Makefile.in, - libmp3lame/i386/Makefile.in, mpglib/Makefile.in, - dshow/Makefile.in, doc/man/Makefile.in, doc/html/Makefile.in, - doc/Makefile.in, Dll/Makefile.in, frontend/Makefile.in, - include/Makefile.in: - - regen - -2000-11-30 10:11 aleidinger - - * libmp3lame/pcm.c: - - - some modifications from Frank - -2000-11-30 10:08 aleidinger - - * configure.in: - - - compile time check for sizeof(int) - - more compiler warnings for debugging - -2000-11-30 10:07 aleidinger - - * config.h.in, configMS.h: - - - compile time value for sizeof(int) - -2000-11-30 10:07 aleidinger - - * libmp3lame/Makefile.am, frontend/Makefile.am, mpglib/Makefile.am: - - - additional options for lclint - -2000-11-30 10:06 aleidinger - - * libmp3lame/i386/Makefile.am: - - - *.lst instead of specifying every file in "CLEANFILES" - -2000-11-27 16:39 aleidinger - - * libmp3lame/: pcm.c, pcm.h: - - submitted by Frank, first revision of a new lame API, not connected to the build yet - -2000-11-26 20:58 robert - - * libmp3lame/: lame.c, util.c, util.h, i386/cpu_feat.nas: - - Part2 of Frank's Patch - - His List of Changes (part 1 + 2): - - - changed the type of the MP3 byte stream from 'char' to 'unsigned char' - - added some 'const' attributes - - added to lame_internal_flags: gfp, frame_size, coding, frame_count - - one code move inside lame.c (mode_ext), one remove (channels_out) - - two new types in util.c - - some bug fixes with Ogg - - SIMD2 detection - -2000-11-26 10:49 robert - - * frontend/get_audio.c, frontend/main.c, include/lame.h, - libmp3lame/bitstream.c, libmp3lame/bitstream.h, - libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/fft.c, - libmp3lame/fft.h, libmp3lame/lame.c, - libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, - libmp3lame/newmdct.h, libmp3lame/psymodel.c, - libmp3lame/psymodel.h, libmp3lame/util.h, - libmp3lame/vorbis_interface.c, mpglib/interface.c, - mpglib/interface.h: - - Patch by Frank: - changes from char to unsigned char - -2000-11-25 22:59 robert - - * libmp3lame/quantize.c: - - bug fix for -X6, could result in clicking noises - -2000-11-25 20:40 robert - - * libmp3lame/quantize.c: - - typo "powf()" lend to crashes under windows, fixed - -2000-11-25 18:56 robert - - * libmp3lame/: quantize.c, quantize.h, vbrquantize.c: - - small fix for vbr-mtrh mode - -2000-11-25 18:18 robert - - * libmp3lame/: lame.c, quantize.c, quantize_pvt.c, quantize_pvt.h, - util.h, vbrquantize.c: - - removed superfluous memset in vbr_noise_shaping2() - some veryminor speed up for cbr - amp_scalefac cleanup - -2000-11-24 17:28 robert - - * frontend/gtkanal.c: - - Patches by Frank: - - - documentation - - introduced gfc->channels_in - - renamed gfc->stereo into gfc->channels_out - (note by me: stereo would imply a boolean type stereo ? yes/no - what's really annoying and confusing is that we didn't used it that way, - but instead stereo=1 -> mono/1-channel, stereo=2 -> stereo/2-channels) - - minor bug fixes for BitrateIndex search - -2000-11-24 17:06 robert - - * include/lame.h, libmp3lame/bitstream.c, libmp3lame/encoder.c, - libmp3lame/lame.c, libmp3lame/newmdct.c, libmp3lame/psymodel.c, - libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, - libmp3lame/reservoir.c, libmp3lame/util.c, libmp3lame/util.h, - libmp3lame/vbrquantize.c: - - Patches by Frank: - - - documentation - - introduced gfc->channels_in - - renamed gfc->stereo into gfc->channels_out - (note by me: stereo would imply a boolean type stereo ? yes/no - what's really annoying and confusing is that we didn't used it that way, - but instead stereo=1 -> mono/1-channel, stereo=2 -> stereo/2-channels) - - minor bug fixes for BitrateIndex search - -2000-11-23 23:19 robert - - * libmp3lame/vbrquantize.c: - - some loops manually unrolled into "Duff's Device" - speed improvement for --vbr-mtrh GCC compiled ca. 5 % overall - speed improvement for --vbr-mtrh Intel 4.5 compiled ca. 1-2 % - looks like the intel compiler does a better job on loops - compared to GCC. - -2000-11-23 15:14 robert - - * Makefile.MSVC: - - compromise between size/speed/multi CPU, thanks to Dmitry - -2000-11-23 13:06 aleidinger - - * misc/ath.c: - - readd support for other systems than linux (at least FreeBSD) - -2000-11-22 21:03 robert - - * Makefile.MSVC: - - added little howto into Makefile.MSVC - think MS C compiler works now again - -2000-11-22 01:09 robert - - * frontend/parse.c: - - cosmetics - -2000-11-22 00:30 robert - - * libmp3lame/lame.c, libmp3lame/psymodel.c, - libmp3lame/quantize_pvt.c, libmp3lame/tables.c, - libmp3lame/tables.h, libmp3lame/util.c, libmp3lame/version.h, - misc/ath.c: - - some patches by Frank - - - replace ath.c (has with Lame nothing to do) - - lame.c: A line in my new code exchange (see ATHformula problems) - - util.c: ATHformula changed over from kHz to cycles per second (last util formula with kHz been) - - ATHformula below 20 cycles per second (instead of 10 cycles per second) limits (< 20 cycles per second are Infraschall, - additionally the function becomes there completely useless) - - quantize_pvt.c: Effects of ATHformula - - tables.c: - - something documents - - -number of entries over one increases - (20=>21, 11=>12, etc..) - - SNR_s converted and to the obvious values - 0.15/0.18/0.20/0.25/0.30/0.35/0.40 rounded. - - w1 and w2 with 576 multiply (error is < - 0.91*10^-3, it seems in the tables both to have been rounded off as well as with - minimum error have been rounded) - end to OF DATA marker to the integrity test - inserted - a reading in of the table revises: psymodel.c - fewer error-prone code (fewer - * p++) - meaningful error messages for problem localization - Peeeeeeps in the case of - error - removing from loop (now j, is used only farther back; and adapted by k2) - - ATHformula - util.c - some amusing " while" Konstrukte, which originate still from the - ISO code, transformed into the appropriate " for" Konstrukte (with it first some amusing - things are noticeable, so e.g. why starting from index 0 instead of 1 are looked up?) - -2000-11-21 22:15 robert - - * Makefile.MSVC, frontend/gtkanal.c: - - some reorganization in Makefile.MSVC - it's now more commandline configurable - -2000-11-20 20:45 robert - - * frontend/: mp3x.c, parse.c: - - fix for mp3x.c: showed usage twice - fix for parse.c: lame_version_print() - in some situations the text is longer than 80 characters - now the url will be wrapped into the next line, right aligned - if 80 character aren't enough - -2000-11-20 15:08 robert - - * Makefile.MSVC, Makefile.unix, frontend/parse.c, - libmp3lame/lame.c, libmp3lame/quantize.c: - - overhauled Makefile.MSVC for easier configuration - design bug in parse.c fixed (should not include files from engine) - -2000-11-20 01:48 robert - - * Makefile.MSVC, Dll/BladeMP3EncDLL.c: - - it's now possible to compile lame_enc.dll with Makefile.MSVC - tried the DLL with CD-ex, seems to work - -2000-11-20 00:16 robert - - * Makefile.MSVC: - - updated Compile Flags due to crashes - added rule to generate config.h out of configMS.h - first try to let the dll compile, still does not work - -2000-11-19 14:12 robert - - * Makefile.MSVC, Makefile.unix, frontend/gtkanal.c, - libmp3lame/lame.c: - - Some bugs fixed introduced due to configure stuff and others - -2000-11-19 11:26 aleidinger - - * Makefile.MSVC: - - bugfix for decoder define - -2000-11-18 12:13 aleidinger - - * frontend/Makefile.in: - - regen (unbreak build) - -2000-11-18 12:12 aleidinger - - * frontend/Makefile.am: - - bugfix after removing ieeefloat.* - -2000-11-18 10:50 aleidinger - - * frontend/brhist.c, frontend/get_audio.c, frontend/gpkplotting.c, - frontend/gtkanal.c, frontend/lame.dsp, frontend/lametime.c, - frontend/main.c, frontend/mp3rtp.c, frontend/mp3x.c, - frontend/parse.c, frontend/portableio.c, frontend/rtp.c, - frontend/timestatus.c, libmp3lame/VbrTag.c, - libmp3lame/bitstream.c, libmp3lame/debugscalefac.c, - libmp3lame/encoder.c, libmp3lame/fft.c, libmp3lame/id3tag.c, - libmp3lame/lame.c, libmp3lame/libmp3lame.dsp, - libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, - libmp3lame/psymodel.c, libmp3lame/quantize.c, - libmp3lame/quantize_pvt.c, libmp3lame/reservoir.c, - libmp3lame/tables.c, libmp3lame/takehiro.c, libmp3lame/util.c, - libmp3lame/vbrquantize.c, libmp3lame/version.c, - libmp3lame/vorbis_interface.c, misc/abx.c, misc/ath.c, - mpglib/common.c, mpglib/dct64_i386.c, mpglib/decode_i386.c, - mpglib/interface.c, mpglib/layer1.c, mpglib/layer2.c, - mpglib/layer3.c, mpglib/mpglib.dsp, mpglib/tabinit.c: - - include configMS.h on Windows - -2000-11-18 10:49 aleidinger - - * Makefile.MSVC, Makefile.DJGPP: - - define HAVE_CONFIG_MS_H for Windows - -2000-11-18 10:49 aleidinger - - * Makefile.in: - - regen (configMS.h) - -2000-11-18 10:48 aleidinger - - * Makefile.am, configMS.h: - - introduce configMS.h for Windows - -2000-11-18 05:40 markt - - * README.Debian, debian/changelog, debian/control, - debian/copyright, debian/cron.d.ex, debian/dirs, debian/docs, - debian/emacsen-install.ex, debian/emacsen-remove.ex, - debian/emacsen-startup.ex, debian/ex.doc-base.package, - debian/files, debian/init.d.ex, debian/manpage.1.ex, - debian/manpage.sgml.ex, debian/menu.ex, - debian/postinst.debhelper, debian/postinst.ex, debian/postrm.ex, - debian/preinst.ex, debian/prerm.debhelper, debian/prerm.ex, - debian/rules, debian/substvars, debian/watch.ex, - frontend/brhist.c, frontend/get_audio.c, frontend/main.c: - - added debian stuff. Make one of the KLEMM's the default - -2000-11-18 04:30 markt - - * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.in, - Makefile.unix, Dll/Makefile.in, doc/Makefile.in, - doc/html/Makefile.in, doc/man/Makefile.in, dshow/Makefile.in, - frontend/get_audio.c, frontend/portableio.c, include/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, - mpglib/Makefile.in: - - Makefiles: removed ieeefloat.* from makefiles. - get_audio.c: replaced DetermineByteOrder with original routine. - -2000-11-18 04:24 markt - - * frontend/: Makefile.am, Makefile.in, get_audio.c, get_audio.h, - ieeefloat.c, ieeefloat.h, portableio.c, portableio.h: - - Removed ieeefloat.* - -2000-11-15 18:52 aleidinger - - * frontend/get_audio.c: - - only allow fast SwapBytesInWords if SIZEOF_UNSIGNED_LONG is defined - -2000-11-14 12:25 aleidinger - - * libmp3lame/resample.h: - - remove define of INLINE - -2000-11-14 12:24 aleidinger - - * frontend/ieeefloat.c: - - let configure handle little/big endianess - -2000-11-14 12:20 aleidinger - - * libmp3lame/: bitstream.c, fft.c, newmdct.c, psymodel.c, - quantize.c, takehiro.c, util.c: - - INLINE -> inline - -2000-11-14 12:19 aleidinger - - * libmp3lame/machine.h: - - As discussed on the mailinglist: - - correct when to define INLINE/inline - - INLINE -> inline, configure already does something similar - -2000-11-14 12:18 aleidinger - - * libmp3lame/encoder.c: - - compile time resolvable assertions switched to compile time errors - -2000-11-14 12:18 aleidinger - - * libmp3lame/lame.c: - - - compile time resolvable assertions switched to compile time errors - - adjust version string - -2000-11-14 12:17 aleidinger - - * frontend/parse.c: - - - adjust version string - - sort system includes - -2000-11-14 12:16 aleidinger - - * include/lame.h: - - - quiet 4 lclint "errors" - - disable get_lame_about() - -2000-11-14 12:15 aleidinger - - * libmp3lame/version.c: - - - switched from run time generated version strings to compile time - generated ones - - implement void get_lame_version_numerical(lame_version_t *const) - (#ifdef'ed out) - - disable get_lame_about(), snprintf isn't available in Win32 - -2000-11-13 14:11 aleidinger - - * dshow/Makefile.in: - - regen (add dshow.dsw) - -2000-11-13 14:10 aleidinger - - * dshow/Makefile.am: - - add dshow.dsw - -2000-11-13 14:10 aleidinger - - * misc/mugeco.sh: - - shell math instead of awk math (no leading zeros needed) - -2000-11-13 13:42 pgubanov - - * include/lame.h: - - Explicit CDECL for API - -2000-11-13 13:31 pgubanov - - * dshow/: Encoder.h, Encoder.cpp, dshow.dsp: - - Synchronized with current LAME code - -2000-11-13 10:57 aleidinger - - * libmp3lame/i386/Makefile.am: - - support for CONFIG_DEFS - -2000-11-13 10:57 aleidinger - - * libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, - frontend/Makefile.in: - - regen - -2000-11-13 10:56 aleidinger - - * libmp3lame/Makefile.am, frontend/Makefile.am: - - - support for CONFIG_DEFS - - possibility to exclude code to lint - -2000-11-13 10:53 aleidinger - - * frontend/ieeefloat.c: - - remove CVS log tag/information, we have "cvs log" for this - -2000-11-13 10:50 aleidinger - - * frontend/get_audio.c: - - - sort includes - - compile time resolvable assertions switched to compile time errors - - we didn't need to determine the size of "unsigned long" at runtime - (KLEMM_10 case), we're able to do it at compile time (with the help - of configure) - -2000-11-13 10:48 aleidinger - - * libmp3lame/vbrquantize.c: - - - move define of TAKEHIRO_IEEE754_HACK into configure.in - - commented out code -> ifdef'ed out code - (I'm on a anti-warning rampage) - -2000-11-13 10:47 aleidinger - - * libmp3lame/quantize_pvt.c: - - move define of TAKEHIRO_IEEE754_HACK into configure.in - -2000-11-13 10:45 aleidinger - - * misc/: abx.c, ath.c: - - - include config.h - - include correct soundcard.h (with support from configure) - -2000-11-13 10:42 aleidinger - - * configure, config.h.in, Makefile.in: - - regen - -2000-11-13 10:41 aleidinger - - * configure.in: - - - handle TAKEHIRO_IEEE754_HACK - - support for 'CONFIG_DEFS="-Dxxx" ./configure' - - handle endianess - - check for soundcard.h - -2000-11-13 10:39 aleidinger - - * mpglib/Makefile.in: - - regen (add possibility to exclude code for linting) - -2000-11-13 10:38 aleidinger - - * mpglib/Makefile.am: - - add possibility to exclude code for linting - -2000-11-13 10:35 aleidinger - - * misc/mugeco.sh: - - add start and stop date/time - -2000-11-13 09:30 pgubanov - - * dshow/dshow.dsw: - - Initial release - -2000-11-12 22:18 aleidinger - - * misc/mugeco.sh: - - add id - -2000-11-12 22:17 aleidinger - - * misc/mugeco.sh: - - bugfix - -2000-11-12 20:45 aleidinger - - * misc/Makefile.in: - - regen (add mugeco.sh) - -2000-11-12 20:45 aleidinger - - * misc/Makefile.am: - - add mugeco.sh - -2000-11-12 20:43 aleidinger - - * misc/mugeco.sh: - - first version of the multi generation encoder script - -2000-11-12 10:57 aleidinger - - * Makefile.in, configure: - - regen (readd dshow) - -2000-11-12 10:56 aleidinger - - * Makefile.am, configure.in: - - readd dshow - -2000-11-11 23:20 pfk - - * Makefile.DJGPP, Makefile.am, Makefile.in, Makefile.in.old, - Makefile.unix, USAGE, configure, configure.in, - frontend/get_audio.c, frontend/get_audio.h, frontend/main.c, - frontend/parse.c, libmp3lame/bitstream.c, libmp3lame/encoder.h, - libmp3lame/lame.c, libmp3lame/resample.c, libmp3lame/resample.h, - libmp3lame/reservoir.c, libmp3lame/tables.c, libmp3lame/tables.h, - libmp3lame/i386/scalar.nas, misc/abx.c: - - - - A lot of very small changes. Most important is prparing of a more - sofisticated method to determine the bandwidth and the MP3 sampling - frequency. - -2000-11-11 17:26 aleidinger - - * configure, Makefile.in: - - regen (add dshow) - -2000-11-11 17:26 aleidinger - - * configure.in, Makefile.am: - - add dshow - -2000-11-11 17:25 aleidinger - - * dshow/: Makefile.am, Makefile.in: - - initial version - -2000-11-11 05:56 markt - - * testcase.mp3, libmp3lame/encoder.c, libmp3lame/machine.h, - libmp3lame/util.c: - - updated testcases after changing some default settings - -2000-11-11 05:47 markt - - * libmp3lame/encoder.c: - - make RH_VALIDATE_MS the default - -2000-11-11 04:40 markt - - * frontend/parse.c, libmp3lame/lame.c, libmp3lame/util.c: - - undid some of Frank's changes to the resample code. - -2000-11-11 01:55 markt - - * dshow/Encoder.cpp: - - [no log message] - -2000-11-11 01:53 markt - - * dshow/: Encoder.cpp, Encoder.h, Mpegac.cpp, Mpegac.def, Mpegac.h, - PropPage.cpp, PropPage.h, PropPage_adv.cpp, PropPage_adv.h, - Property.rc, README, REG.CPP, REG.H, UIDS.H, dshow.dsp, - iaudioprops.h, resource.h: - - directshow filter for LAME from Peter Gubanov - -2000-11-10 23:18 pfk - - * frontend/get_audio.c, libmp3lame/lame.c, libmp3lame/machine.h, - libmp3lame/resample.c, libmp3lame/resample.h, libmp3lame/util.c, - libmp3lame/util.h, libmp3lame/i386/scalar.nas, misc/scalartest.c: - - - - Resample continued. - - The old code now uses a 31 Tap FIR for HQ coding and a 7 Tap FIR for MQ and - LQ coding. - -2000-11-10 14:42 aleidinger - - * frontend/.cvsignore, libmp3lame/.cvsignore, mpglib/.cvsignore: - - add lclint.txt - -2000-11-10 14:41 aleidinger - - * frontend/Makefile.in, libmp3lame/Makefile.in, mpglib/Makefile.in: - - regen (lclint target) - -2000-11-10 14:40 aleidinger - - * config.h.in: - - regen (HAVE_EFENCE) - -2000-11-10 14:39 aleidinger - - * configure: - - regen (disalbe-shared/HAVE_EFENCE) - -2000-11-10 14:36 aleidinger - - * configure.in: - - - new default: no shared lib - - define HAVE_EFENCE if apropriate - -2000-11-10 14:33 aleidinger - - * mpglib/Makefile.am: - - add lclint target (564 code "errors" found so far) - -2000-11-10 14:33 aleidinger - - * frontend/Makefile.am: - - add lclint target (471 code "errors" found so far) - -2000-11-10 14:32 aleidinger - - * libmp3lame/Makefile.am: - - add lclint target (1505 code "errors" found so far) - -2000-11-10 14:31 aleidinger - - * libmp3lame/quantize.c: - - fix RH_AMP (gfc = gfp->internal_flags) - -2000-11-09 22:01 pfk - - * include/lame.h, libmp3lame/bitstream.c, libmp3lame/resample.c, - libmp3lame/resample.h, libmp3lame/i386/scalar.nas, misc/ath.c, - misc/scalartest.c: - - - - Start of resampling. - -2000-11-09 00:29 pfk - - * testcase.mp3, libmp3lame/bitstream.c, libmp3lame/id3tag.c, - libmp3lame/machine.h, libmp3lame/version.h, misc/ath.c: - - - - Small changes. - - - removed an old function strcasecmp (replaced by fuzzy_strcmp) - - optimized region 2 bitcoder - - remark about version.h (stringification) - - INLINE = inline + static - -2000-11-08 19:59 aleidinger - - * libmp3lame/resample.c, mpglib/layer1.c: - - include assert.h, seems to be forgotten in last commit (how could this - compile?) - -2000-11-07 23:06 pfk - - * frontend/get_audio.c, frontend/parse.c, frontend/timestatus.c, - include/lame.h, libmp3lame/VbrTag.c, libmp3lame/bitstream.c, - libmp3lame/id3tag.c, libmp3lame/lame.c, - libmp3lame/mpglib_interface.c, libmp3lame/version.c, - libmp3lame/version.h, misc/ath.c, mpglib/layer1.c: - - - - Changed back to old report interface until we've discussed all possible - versions and make a decision. - - Some bugfixes. Some remarks. - -2000-11-07 15:36 aleidinger - - * configure: - - regen after: - - HAVE{MPGLIB,VORBIS,GTK} -> HAVE_$1 - - --disable-analyzer-hooks - - --enable-efence - -2000-11-07 15:36 aleidinger - - * config.h.in: - - HAVE{MPGLIB,VORBIS,GTK} -> HAVE_$1 - -2000-11-07 15:35 aleidinger - - * configure.in: - - - HAVE{MPGLIB,VORBIS,GTK} -> HAVE_$1 - - --disable-analyzer-hooks - - --enable-efence (use the ElectricFence malloc debugging library) - -2000-11-07 15:31 aleidinger - - * frontend/get_audio.c, frontend/main.c, frontend/parse.c, - libmp3lame/lame.c, libmp3lame/mpglib_interface.c, - libmp3lame/vorbis_interface.c: - - HAVE{MPGLIB,VORBIS,GTK} -> HAVE_$1 - -2000-11-07 12:42 aleidinger - - * frontend/Makefile.in, libmp3lame/Makefile.in: - - regen after amiga_mpega.c move - -2000-11-07 12:41 aleidinger - - * frontend/Makefile.am, libmp3lame/Makefile.am: - - follow the move of amiga_mpega.c from libmp3lame to frontend - -2000-11-07 01:59 pfk - - * frontend/brhist.c, frontend/get_audio.c, frontend/get_audio.h, - frontend/main.c, libmp3lame/bitstream.c, libmp3lame/version.h: - - - - minor changes. - - some options can be passed via "export LAMEOPT=..." - -2000-11-07 00:58 cisc - - * Makefile.unix, frontend/amiga_mpega.c, libmp3lame/amiga_mpega.c: - - Moved amiga_mpega.c to frontend where it belongs, and added it to Makefile.unix - -2000-11-07 00:14 markt - - * libmp3lame/: bitstream.c, encoder.c, lame.c, psymodel.c, - psymodel.h, quantize.c, quantize.h, quantize_pvt.c, - quantize_pvt.h, reservoir.c, reservoir.h, util.c, util.h, - vbrquantize.c: - - removed lame_global_flags pointer from lame_internal_flags. - -2000-11-06 23:19 markt - - * libmp3lame/: lame.c, quantize_pvt.c, util.c, util.h: - - fixed resample bug when resampling by integer amounts. - -2000-11-06 19:26 cisc - - * API: - - Improved get_lame_xxx() API a little bit more - -2000-11-06 19:22 cisc - - * frontend/gtkanal.c, frontend/parse.c, include/lame.h, - libmp3lame/VbrTag.c, libmp3lame/bitstream.c, libmp3lame/lame.c, - libmp3lame/version.c, libmp3lame/version.h: - - Improved get_lame_xxx() API a little bit more - -2000-11-06 17:29 robert - - * libmp3lame/: quantize.c, quantize_pvt.c: - - fixed segmentation fault in Frank's noise calculation - implemented Todd Richmond's idea to speed up the outer_loop() - -2000-11-06 12:31 aleidinger - - * libmp3lame/i386/.cvsignore: - - add .lst files - -2000-11-06 08:22 markt - - * Makefile.am, configure.in, frontend/.indent.pro, - frontend/brhist.c, libmp3lame/.indent.pro: - - went back to frame counts in VBR display - -2000-11-06 04:24 markt - - * frontend/get_audio.c, mpglib/interface.c, mpglib/mpglib.h: - - cleaned up mpeg header search code in get_audio.c - modified mpglib so we can move VBR header code into mpglib - and out of the frontend code. a little more work is still needed. - -2000-11-06 01:13 pfk - - * libmp3lame/: bitstream.c, bitstream.h, id3tag.c, util.o: - - - - Small changes for fuzzy ID3 tag compare. - -2000-11-06 00:58 cisc - - * frontend/gtkanal.c, frontend/parse.c, include/lame.h, - libmp3lame/VbrTag.c, libmp3lame/bitstream.c, libmp3lame/lame.c, - libmp3lame/version.c, libmp3lame/version.h: - - Modified get_lame_xxx() API so it's more re-entrance friendly (returning a const pointer from a static var that's changed every time the function is called is really dirty!). - -2000-11-05 22:27 pfk - - * testcase.mp3, frontend/parse.c, frontend/rtp.h, - frontend/timestatus.c, libmp3lame/lame.c, libmp3lame/quantize.c, - libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h: - - - - Minor changes. - Added -X8. - -2000-11-05 18:29 pfk - - * frontend/get_audio.c, include/lame.h, libmp3lame/lame.c, - libmp3lame/quantize.c, libmp3lame/util.h, libmp3lame/util.o: - - - - Changed lame_init_???_init to Class_ID. - On initialization this variable gets the value LAME_ID. - Advantages documented. - - Some little Bugs fixed. - -2000-11-05 17:13 takehiro - - * Makefile.in, configure, configure.in, Dll/Makefile.in, - doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, - frontend/Makefile.in, frontend/main.c, frontend/parse.c, - include/Makefile.in, libmp3lame/Makefile.in, - libmp3lame/newmdct.c, libmp3lame/quantize.c, - libmp3lame/quantize_pvt.c, libmp3lame/i386/Makefile.in, - misc/Makefile.in, mpglib/Makefile.in: - - configure.in: typo fix - newmdct.c: precision fix(?) - -2000-11-05 14:52 aleidinger - - * libmp3lame/i386/Makefile.in: - - regen (clean of generated .lst files) - -2000-11-05 14:52 aleidinger - - * libmp3lame/i386/Makefile.am: - - add generated .lst files to files to clean - -2000-11-05 14:41 aleidinger - - * misc/Makefile.in: - - regen after adding scalartest.c - -2000-11-05 14:40 aleidinger - - * misc/Makefile.am: - - add scalartest.c - -2000-11-05 14:34 aleidinger - - * libmp3lame/: util.c~, util.d, util.o: - - remove generated/backup files, seems they are commited by accident - -2000-11-05 13:15 pfk - - * libmp3lame/: tools.c, tools.h: - - - - add file for generic tools. - -2000-11-05 13:09 pfk - - * testcase.mp3, libmp3lame/bitstream.c, libmp3lame/bitstream.h, - libmp3lame/lame.c, libmp3lame/lameerror.h, libmp3lame/psymodel.c, - libmp3lame/resample.c, libmp3lame/resample.h, - libmp3lame/tables.c, libmp3lame/tables.h, libmp3lame/util.c, - libmp3lame/util.c~, libmp3lame/util.d, libmp3lame/util.h, - libmp3lame/util.o, libmp3lame/version.h, - libmp3lame/i386/scalar.nas, misc/scalartest.c: - - - - * Changed psy_data from double to float (this ssem not to change any bit in - MP3, but saves 20 KB). - - * Other, but small modifications - -2000-11-05 00:19 pfk - - * frontend/brhist.c: - - - - bugfix. Sorry - -2000-11-04 18:15 pfk - - * frontend/brhist.c, frontend/brhist.h, frontend/mp3rtp.c, - frontend/rtp.c, frontend/rtp.h, frontend/timestatus.c, - include/lame.h, libmp3lame/resample.c, libmp3lame/resample.h, - libmp3lame/tables.c, libmp3lame/version.c, - libmp3lame/i386/Makefile.am, libmp3lame/i386/Makefile.in, - libmp3lame/i386/scalar.nas, misc/ath.c: - - - - small changes in brhist. - some tests and modifications for streaming MP3. - other unremarkable stuff - -2000-11-04 02:18 pfk - - * doc/html/switchs.html, frontend/get_audio.c, - frontend/timestatus.c: - - - - Unimportant changes. - -2000-11-03 14:21 aleidinger - - * libmp3lame/id3tag.c: - - more 'const'nes, also saves some bytes in the generated .o - -2000-11-03 14:13 aleidinger - - * libmp3lame/i386/Makefile.in: - - regen after change in Makefile.am - -2000-11-03 14:13 aleidinger - - * libmp3lame/i386/Makefile.am: - - remove trailing backslash in last line of EXTRA_DIST - -2000-11-03 14:08 aleidinger - - * doc/html/contributors.html: - - add myself to contributors - -2000-11-03 14:07 aleidinger - - * configure: - - NOTERMCAP/TERMCAP_AVAILABLE -> HAVE_TERMCAP - -2000-11-03 14:04 aleidinger - - * frontend/brhist.c, configure.in, config.h.in: - - NOTERMCAP/TERMCAP_AVAILABLE -> HAVE_TERMCAP - -2000-11-03 14:00 aleidinger - - * frontend/parse.c: - - add missing include - -2000-11-03 00:47 pfk - - * frontend/brhist.c, frontend/console.c, frontend/console.h, - frontend/mp3rtp.c, frontend/parse.c, frontend/timestatus.c, - include/lame.h, libmp3lame/bitstream.c, libmp3lame/lame.c, - libmp3lame/mpglib_interface.c, libmp3lame/resample.h, - libmp3lame/util.c, libmp3lame/version.c, libmp3lame/version.h, - libmp3lame/i386/Makefile.am, libmp3lame/i386/Makefile.in, - libmp3lame/i386/scalar.nas: - - - - Minor changes. Biggest ist in bitstream.c, but triggered by KLEMM_14. - -2000-11-02 17:16 pfk - - * TODO, frontend/brhist.c, frontend/console.c, frontend/console.h, - libmp3lame/resample.c, libmp3lame/resample.h, - libmp3lame/version.c, libmp3lame/i386/scalar.nas: - - - - These are minor changes to a version which fails on my computer. - - * MMX reporting added to get_lame_version(9 as requested by TODO. - * Added 5 files for resampling and console IO. - -2000-11-02 12:57 aleidinger - - * mpglib/: common.c, common.h: - - bugfix for --disable-decoder-layer1 case - -2000-11-01 21:56 markt - - * LICENSE, frontend/parse.c, include/lame.h: - - updated LICENSE to remove comments about libsndfile, - since libsndfile no longer included in library - -2000-11-01 21:54 markt - - * libmp3lame/: .indent.pro, bitstream.c, version.h: - - added indent.pro back to CVS - -2000-11-01 18:25 markt - - * STYLEGUIDE, libmp3lame/encoder.c: - - some more context fixes - -2000-11-01 18:22 markt - - * libmp3lame/: newmdct.c, psymodel.c, quantize.c, quantize_pvt.c, - reservoir.c, reservoir.h, takehiro.c, util.c, vbrquantize.c: - - removed more 'context'. - - lame now segfaults. - -2000-11-01 18:06 markt - - * libmp3lame/: .indent.pro, VbrTag.c, fft.c, fft.h, id3tag.c, - lame.c, newmdct.h, psymodel.h, quantize.h, quantize_pvt.h: - - removing 'context' - -2000-11-01 17:56 markt - - * libmp3lame/: bitstream.c, bitstream.h, util.h: - - restored bitstream.c to original. - drain_into_ancillary_data was written the way it is - on purpose. dont change it without checking with me first - -2000-11-01 17:46 markt - - * libmp3lame/util.h: - - [no log message] - -2000-11-01 17:40 markt - - * libmp3lame/util.h: - - removed 'context' - why was lame_internal_flags renamed context? - This is under the catagory of cosmetic. - -2000-11-01 17:32 markt - - * STYLEGUIDE, frontend/get_audio.c, frontend/parse.c, - libmp3lame/lame.c, libmp3lame/mpglib_interface.c, - libmp3lame/quantize.c, libmp3lame/quantize_pvt.c: - - removed some cosmetic changes. - -2000-11-01 16:09 robert - - * frontend/: mp3rtp.c, rtp.c: - - mp3rtp was broken, does now compile again - -2000-11-01 14:35 robert - - * libmp3lame/: quantize.c, quantize_pvt.h: - - only cosmetic changes, done by indent - -2000-11-01 14:31 robert - - * frontend/.indent.pro, libmp3lame/.indent.pro, misc/.indent.pro: - - these files are used by the indent program to pretty format sources - -2000-11-01 00:01 robert - - * frontend/: brhist.c, brhist.h, main.c, timestatus.c: - - some more brhist pretty print - -2000-10-31 13:58 aleidinger - - * frontend/Makefile.in: - - regen after bugfix in Makefile.am - -2000-10-31 13:57 aleidinger - - * frontend/Makefile.am: - - fix build of mp3x - -2000-10-31 13:18 robert - - * Makefile.MSVC, frontend/brhist.c, frontend/lametime.h: - - fixes for bitrate histogram and MS compilation - -2000-10-31 12:18 robert - - * frontend/: lametime.c, parse.c, timestatus.c: - - quick fixes for Console_IO stuff - Console_IO is declared in brhist.c, but when compiling - without bitrate histogram capabilities the code would - not compile anymore - -2000-10-30 23:58 robert - - * Makefile.MSVC, Makefile.unix: - - analyzer stuff was moved to frontend - because of automake/configure - -2000-10-30 22:34 robert - - * libmp3lame/vbrquantize.c: - - Takehiro's IEEE754 hack for VBR modes new and mtrh - -2000-10-30 11:28 aleidinger - - * Makefile.in: - - we didn't need acconfig.h, so don't depend on it - -2000-10-30 10:51 robert - - * libmp3lame/util.c: - - BUG fix for debug code for BUG fix for fill_buffer_resample() ;-( - -2000-10-30 10:48 robert - - * libmp3lame/util.c: - - BUG fix for fill_buffer_resample() - -2000-10-29 22:26 robert - - * libmp3lame/util.c: - - small fix for fill_buffer_resample() - some buffers where too small allocated, but this will - not really help, the routine has some ugly looking points - left that need to be fixed. - -2000-10-29 21:11 robert - - * libmp3lame/: VbrTag.c, bitstream.c, bitstream.h, encoder.c, - id3tag.c, lame.c, quantize.c, quantize_pvt.c, reservoir.c, - reservoir.h, util.c, util.h, vbrquantize.c: - - gfp gfc stuff FINISHED for now - -2000-10-29 20:03 robert - - * libmp3lame/: encoder.c, fft.c, fft.h, newmdct.c, newmdct.h, - psymodel.c, psymodel.h, quantize_pvt.h, takehiro.c: - - a step further with this gfp gfc stuff - -2000-10-29 19:15 robert - - * libmp3lame/: quantize_pvt.h, takehiro.c, util.h: - - some more gfc stuff - -2000-10-29 18:12 robert - - * libmp3lame/: encoder.c, quantize.c, quantize.h, quantize_pvt.c, - quantize_pvt.h, takehiro.c, vbrquantize.c: - - more on gfp gfc reorganization - -2000-10-29 16:37 robert - - * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h, - takehiro.c, vbrquantize.c: - - gfp gfc reorganization - -2000-10-29 13:58 robert - - * libmp3lame/: fft.c, lame.c, psymodel.c, quantize.c, - quantize_pvt.c, util.h: - - data encapsulating Naoki's psymode - -2000-10-29 12:52 aleidinger - - * .cvsignore: - - add some config.h related files - -2000-10-29 12:51 aleidinger - - * configure: - - now with support for config.h - -2000-10-29 12:50 aleidinger - - * Makefile.in, Dll/Makefile.in, doc/Makefile.in, - doc/html/Makefile.in, doc/man/Makefile.in, frontend/Makefile.in, - include/Makefile.in, libmp3lame/Makefile.in, - libmp3lame/i386/Makefile.in, misc/Makefile.in, - mpglib/Makefile.in: - - regenerated after adding support for config.h - -2000-10-29 12:49 aleidinger - - * frontend/Makefile.am, libmp3lame/Makefile.am, mpglib/Makefile.am: - - support for config.h - -2000-10-29 12:47 aleidinger - - * config.h.in, stamp-h.in: - - config.h support - -2000-10-29 12:45 aleidinger - - * frontend/brhist.c, frontend/get_audio.c, frontend/gpkplotting.c, - frontend/gtkanal.c, frontend/ieeefloat.c, frontend/lametime.c, - frontend/main.c, frontend/mp3rtp.c, frontend/mp3x.c, - frontend/parse.c, frontend/portableio.c, frontend/rtp.c, - frontend/timestatus.c, configure.in, aclocal.m4: - - support for config.h - -2000-10-29 12:41 aleidinger - - * mpglib/common.c, mpglib/dct64_i386.c, mpglib/decode_i386.c, - mpglib/interface.c, mpglib/layer1.c, mpglib/layer2.c, - mpglib/layer3.c, mpglib/tabinit.c, libmp3lame/VbrTag.c, - libmp3lame/amiga_mpega.c, libmp3lame/bitstream.c, - libmp3lame/debugscalefac.c, libmp3lame/encoder.c, - libmp3lame/fft.c, libmp3lame/id3tag.c, libmp3lame/lame.c, - libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, - libmp3lame/psymodel.c, libmp3lame/quantize.c, - libmp3lame/quantize_pvt.c, libmp3lame/reservoir.c, - libmp3lame/tables.c, libmp3lame/takehiro.c, libmp3lame/util.c, - libmp3lame/vbrquantize.c, libmp3lame/version.c, - libmp3lame/vorbis_interface.c: - - support for config.h - -2000-10-28 21:57 pfk - - * configure, libmp3lame/bitstream.c, libmp3lame/bitstream.h, - libmp3lame/lame.c: - - - - CRC table based code removed - - Ease CRC header calculation - -2000-10-28 14:23 pfk - - * frontend/get_audio.c, frontend/lametime.c, frontend/lametime.h, - frontend/main.c, frontend/mp3x.c, frontend/parse.c, - include/lame.h, libmp3lame/bitstream.c, libmp3lame/lame.c, - libmp3lame/util.c, libmp3lame/util.h: - - - - Moved 2 functions from util.c to lametime.c - - Fixed a memory leak caused by an early return - - bitstream: Local crc moved to gfp->crcvalue, next step can be to remove a - function parameter - - minor changes - -2000-10-28 12:31 robert - - * include/lame.h, libmp3lame/VbrTag.c, libmp3lame/bitstream.c, - libmp3lame/lame.c, libmp3lame/util.c, libmp3lame/util.h: - - hunting some BUGs, but still not found - encoding a mono VBR resampled to 11 kHz shows some strange behaviour - -2000-10-28 10:47 aleidinger - - * Dll/Makefile.in, doc/Makefile.in, doc/html/Makefile.in, - doc/man/Makefile.in, frontend/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, - misc/Makefile.in, mpglib/Makefile.in: - - don't use gtar instead of tar - -2000-10-28 10:42 aleidinger - - * lame.spec: - - lame.spec gets now generated at configure time from lame.spec.in - -2000-10-28 10:40 aleidinger - - * Makefile.am, Makefile.in: - - - add lame.spec.in to distribution - - remove lame.spec from distribution - - show how long lame needs for the testcase - -2000-10-28 10:35 aleidinger - - * configure.in, configure: - - - generate lame.spec from lame.spec.in - - CPU specific optimizations (x86, gcc 2.7.3.x or better) - -2000-10-28 10:32 aleidinger - - * lame.spec.in: - - template for configure to generate lame.spec - -2000-10-28 01:29 pfk - - * include/lame.h, libmp3lame/lame.c, libmp3lame/util.c, - libmp3lame/util.h, libmp3lame/version.h: - - - - short => sample_t in lame_encode_buffer and all the related stuff - - some essential but simple speedups in resampling code - - resulting MP3 will be different from previous - - code modification not finished, this is only half of the work - -2000-10-27 23:04 robert - - * libmp3lame/vbrquantize.c: - - max_range tables - -2000-10-27 21:50 pfk - - * frontend/main.c, libmp3lame/lame.c, libmp3lame/psymodel.c, - libmp3lame/util.c, libmp3lame/util.h: - - - - KLEMM_04(old) removed, scalar routines introduced. - -2000-10-27 21:34 robert - - * libmp3lame/vbrquantize.c: - - LSF needs some different max_range tables - I plugged some in and it seems to work - they are designed after max_sfac_tab[6][4] - you may look into scale_bitcount_lsf() - -2000-10-27 16:30 robert - - * libmp3lame/: quantize.c, vbrquantize.c: - - LSF hack for vbr-mtrh VBR mode - -2000-10-27 15:48 takehiro - - * libmp3lame/newmdct.c: - - bit optimization - -2000-10-27 11:27 robert - - * libmp3lame/quantize_pvt.c, mpglib/layer3.c: - - BUG in frame analyzer fixed, there was some wild pointer used - in layer3.c in preflag condition - -2000-10-27 11:19 takehiro - - * libmp3lame/: machine.h, tables.c, tables.h, - i386/choose_table.nas: - - 64bit int lookup table moved from C code to asm code. - -2000-10-26 19:07 pfk - - * frontend/brhist.c, frontend/get_audio.c, frontend/mp3rtp.c, - frontend/timestatus.c, include/lame.h, libmp3lame/bitstream.c, - libmp3lame/psymodel.c, libmp3lame/util.c, misc/ath.c: - - - - Make some modifications active. - - No Termcap terms are now handled in the same way like termcap terms. - -2000-10-25 22:18 robert - - * libmp3lame/: quantize.c, quantize.h, quantize_pvt.h, - vbrquantize.c: - - improved vbr_mtrh VBR mode - -2000-10-25 14:03 aleidinger - - * frontend/Makefile.am: - - prevent the CVS Id from being integrated into Makefile.in - -2000-10-24 22:47 robert - - * Makefile.MSVC, Makefile.unix, libmp3lame/quantize.c: - - improved RH_AMP - -2000-10-24 22:17 pfk - - * frontend/get_audio.c, libmp3lame/mpglib_interface.c, - libmp3lame/psymodel.c: - - - - Better syncword recognization - -2000-10-24 18:11 takehiro - - * configure, configure.in, frontend/Makefile.in, - libmp3lame/machine.h: - - configure/configure.in - added "--enable-all-float", which make FLOAT8 as float - - machine.h - FLOAT (and FLOAT8) typedef fix for alpha processor - -2000-10-24 17:44 takehiro - - * libmp3lame/newmdct.c: - - loop integration. - "make test" may find some difference caused by some rounding problem - -2000-10-24 15:01 robert - - * libmp3lame/quantize.c: - - fix for -q7 mode - -2000-10-24 13:54 robert - - * libmp3lame/quantize.c: - - typo - -2000-10-24 13:28 robert - - * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h: - - some simplifications - -2000-10-24 11:40 robert - - * Makefile.MSVC, Makefile.unix, libmp3lame/quantize.c: - - improvements, need some compile time defines, look into Makefile.unix - -2000-10-23 18:59 robert - - * libmp3lame/machine.h: - - FLOAT is float, FLOAT8 is double again ;-) - -2000-10-23 15:50 takehiro - - * Makefile.am, Makefile.in, frontend/Makefile.in: - - more make test update - -2000-10-23 15:44 takehiro - - * libmp3lame/machine.h: - - sorry, mistaken check in.... - -2000-10-23 15:40 takehiro - - * Makefile.am, Makefile.in, lame.spec, Dll/Makefile.in, - doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, - frontend/Makefile.in, include/Makefile.in, - libmp3lame/Makefile.in, libmp3lame/machine.h, - libmp3lame/i386/Makefile.in, misc/Makefile.in, - mpglib/Makefile.in: - - "make test" update - -2000-10-23 15:40 takehiro - - * libmp3lame/bitstream.c: - - cosmetic change - -2000-10-23 10:16 aleidinger - - * Makefile.in: - - update after change to Makefile.am - -2000-10-23 10:16 aleidinger - - * Makefile.am: - - let test targetbuild frontend/lame if it isn't already build - - didn't work with "make -j 4 test" - - IMHO the previous version was a feature - (requested by Takehiro-san) - - splittet test target into more subtargets - - corrected testg target - - added CVS_RSH=ssh to update/diff target - -2000-10-22 22:50 robert - - * libmp3lame/psymodel.c: - - fix for short block I introduced 2000-10-19 - -2000-10-22 18:20 pfk - - * Makefile.unix, frontend/brhist.c, frontend/brhist.h, - frontend/get_audio.c, frontend/main.c, frontend/parse.c, - frontend/parse.h, include/lame.h, libmp3lame/bitstream.c, - libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/lame.c, - libmp3lame/reservoir.c, libmp3lame/util.c, libmp3lame/util.h, - libmp3lame/version.c, libmp3lame/version.h, misc/ath.c: - - - - A lot of small changes, most of them must be switched on via compile time - defines. - - vbr displays shows MS and LR frames different. - - vbr displays depends on the current display width. - -2000-10-22 15:36 takehiro - - * Makefile.am: - - do "make test" with one step - -2000-10-22 15:28 takehiro - - * .cvsignore, Dll/.cvsignore, doc/.cvsignore, doc/html/.cvsignore, - doc/man/.cvsignore, frontend/.cvsignore, include/.cvsignore, - libmp3lame/.cvsignore, libmp3lame/i386/.cvsignore, - misc/.cvsignore, mpglib/.cvsignore: - - igonore Makefile.am things (.libs, .deps, and so on) - -2000-10-22 15:17 takehiro - - * libmp3lame/.cvsignore, mpglib/.cvsignore: - - added *.lo - -2000-10-22 12:06 aleidinger - - * ltconfig, ltmain.sh, missing, mkinstalldirs: - - generated by automake/libtool - -2000-10-22 12:02 aleidinger - - * frontend/Makefile.in, libmp3lame/Makefile.in, mpglib/Makefile.in: - - generated by automake - -2000-10-22 12:01 aleidinger - - * configure: - - now with automake/libtool support - -2000-10-22 12:00 aleidinger - - * confdefs.h: - - seems to get generated at configure time - -2000-10-22 11:58 aleidinger - - * aclocal.m4: - - generated by aclocal - -2000-10-22 11:58 aleidinger - - * configure.in: - - - add asm support if nasm is found - (if we support this, see ASM_FOR_ARCH) - - added automake support - - added libtool support - (a Dll user should look into "AC_LIBTOOL_WIN32_DLL" of the libtool - documentation and send apropriate patches) - - --enable-{mp3x,mp3rtp} - - only build analyzer if GTK is present - - set CPUTYPE (to use asm routines where supported) - - --enable-decoder* -> --disable-decoder* - -2000-10-22 11:57 aleidinger - - * acinclude.m4: - - remove GTK entry, "aclocal" takes care of it in aclocal.m4 - -2000-10-22 11:53 aleidinger - - * misc/Makefile.am: - - Initial automake support - -2000-10-22 11:52 aleidinger - - * Dll/Makefile.in, doc/Makefile.in, doc/html/Makefile.in, - doc/man/Makefile.in, include/Makefile.in, - libmp3lame/i386/Makefile.in, misc/Makefile.in, Makefile.in: - - generated by automake - -2000-10-22 11:50 aleidinger - - * frontend/: README.Win32, gpkplotting.c, gpkplotting.h, gtkanal.c, - gtkanal.h, mp3x.c, mp3x.dsp, mp3x.dsw: - - moved from analyzer/... because automake didn't allows sources for one - program/library to be in more than one directory (at least without - hacks) - -2000-10-22 11:46 aleidinger - - * Makefile.am: - - - initial automake support - - delete testcase.new.mp3 on "clean" - - added "update" target, does a cvs update - - added "diff" target, does a cvs diff -u - -2000-10-22 11:44 aleidinger - - * frontend/Makefile.am: - - - initial automake support - - conditionally build mp3x/mp3rtp - -2000-10-22 11:43 aleidinger - - * libmp3lame/: Makefile.am, i386/Makefile.am: - - Initial automake/libtool support: - - if nasm is detected and we have asm for this @CPUTYPE@: - * include asm support - - didn't build without decoder: "undefined reference to `mpg123_pinfo'" - -2000-10-22 11:41 aleidinger - - * mpglib/Makefile.am: - - Initial automake/libtool support: - - mpglib gets linked to libmp3lame.{a,so} - - isn't installed on it's own - -2000-10-22 11:39 aleidinger - - * Dll/Makefile.am, doc/Makefile.am, doc/html/Makefile.am, - doc/man/Makefile.am, include/Makefile.am: - - Initial automake support. - -2000-10-22 10:19 takehiro - - * libmp3lame/: l3side.h, newmdct.c, quantize.c, quantize_pvt.c, - quantize_pvt.h, takehiro.c, vbrquantize.c: - - 1. changed sfb_smax to sfb_smin. it is really minimum number, and so confusing. - 2. prepare for mixed block - 3. prepare for asm quantize code - -2000-10-22 09:41 takehiro - - * libmp3lame/: fft.c, util.h: - - no need to be in internal flag for constants - -2000-10-22 09:27 takehiro - - * libmp3lame/: Makefile.in, encoder.c, newmdct.c, newmdct.h, - util.h: - - 1 (util.h) deleted unused flag from internal flags - 2 (newmdct) in place code of mdct_short - 3 some cosmetic change - -2000-10-22 08:25 takehiro - - * libmp3lame/newmdct.c: - - code clean up - -2000-10-22 06:56 takehiro - - * libmp3lame/machine.h: - - deleted old remark about asm routine - -2000-10-22 06:56 takehiro - - * libmp3lame/newmdct.c: - - code cleanup - -2000-10-21 19:28 takehiro - - * libmp3lame/: quantize_pvt.c, i386/choose_table.nas: - - reduce memory assumption little and bit faster choose_table - -2000-10-21 19:11 takehiro - - * libmp3lame/newmdct.c: - - add coment and remove unused code - -2000-10-21 19:01 takehiro - - * libmp3lame/newmdct.c: - - bit optimization and now thread safe, I think. - -2000-10-21 17:24 takehiro - - * libmp3lame/newmdct.c: - - brute force loop unrolling and some elimination of multiple. - bit faster. - -2000-10-21 13:05 robert - - * libmp3lame/: encoder.c, quantize.c, quantize_pvt.c, - quantize_pvt.h, vbrquantize.c: - - frame analyzer info will now be set up in main encoding - routine only, for the whole frame. problem with SCFSI fixed - -2000-10-20 21:46 afaber - - * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: - - Added lame alpha, beta version and if MMX is enabled to the version interface, - should be backward compatible - -2000-10-20 21:43 afaber - - * frontend/brhist.c: - - Fixed histgramming display for Win32, added fflush - -2000-10-20 20:50 afaber - - * frontend/: brhist.c, brhist.h: - - Resolved const mistach beween BRHIST function declartions - -2000-10-20 20:49 afaber - - * libmp3lame/libmp3lame.dsp: - - Added MPGLIB define - -2000-10-20 19:28 robert - - * misc/: abx.c, ath.c: - - initial checkin - -2000-10-20 13:04 robert - - * libmp3lame/: quantize.c, vbrquantize.c: - - I think I fixed a BUG in subblock gain code - -2000-10-19 21:10 robert - - * frontend/parse.c, include/lame.h, libmp3lame/lame.c, - libmp3lame/psymodel.c, libmp3lame/quantize.c: - - fixed BUG in atQ table, removed --raise-smr stuff - -2000-10-18 17:34 robert - - * libmp3lame/lame-analysis.h: - - no way to disable analysis for lame-lib - -2000-10-18 16:47 robert - - * libmp3lame/lame-analysis.h, mpglib/layer3.c, mpglib/mpglib.h: - - fixed some ambiguities - define NOANALYSIS as suggested in INSTALL if you don't want - to collect some analysis data - -2000-10-18 11:18 robert - - * frontend/brhist.c, include/lame.h, libmp3lame/lame.c: - - some tweaks - -2000-10-18 11:02 shibatch - - * libmp3lame/psymodel.c: - - Rewrote double to FLOAT8. - -2000-10-18 10:55 shibatch - - * libmp3lame/psymodel.c: - - Added short block pre-echo control to --nspsytune. - This improves castanets.wav. - -2000-10-17 22:59 pfk - - * STYLEGUIDE, frontend/brhist.c, frontend/brhist.h, - frontend/get_audio.h, frontend/main.c, frontend/parse.c, - frontend/parse.h, frontend/timestatus.c, include/lame.h, - libmp3lame/lame.c, libmp3lame/mpglib_interface.c, - libmp3lame/psymodel.c, libmp3lame/util.h: - - - - * small changes to prepare to add a lame float interface - * other stuff - -2000-10-17 00:13 pfk - - * Makefile.unix, frontend/brhist.c, frontend/brhist.h, - frontend/get_audio.c, frontend/timestatus.c, include/lame.h, - libmp3lame/VbrTag.c, libmp3lame/bitstream.c, libmp3lame/fft.c, - libmp3lame/lame.c, libmp3lame/mpglib_interface.c, - libmp3lame/quantize_pvt.c, libmp3lame/version.c, - libmp3lame/version.h: - - - - removed some shorts. - two version of version report - some minor changes - -2000-10-16 22:19 robert - - * frontend/: brhist.c, main.c: - - cosmetics - -2000-10-16 19:55 florian - - * Makefile.in, configure, configure.in, libmp3lame/Makefile.in, - libmp3lame/lame.c, mpglib/Makefile.in: - - integrated Alexanders patch, minor bug fixes - -2000-10-16 19:29 robert - - * libmp3lame/: tables.c, tables.h, takehiro.c: - - takehiro.c now thread safer - -2000-10-16 19:27 robert - - * frontend/brhist.h: - - missing include files - -2000-10-16 10:03 robert - - * Makefile.unix: - - some convenience - -2000-10-16 02:40 markt - - * include/lame.h, libmp3lame/VbrTag.c: - - [no log message] - -2000-10-16 02:29 markt - - * include/lame.h: - - added some prototypes. no code yet - -2000-10-16 02:29 markt - - * API: - - added some lame_set_variable prototypes in lame.h - -2000-10-16 02:17 markt - - * frontend/mp3rtp.c, include/lame.h, libmp3lame/fft.h, - libmp3lame/lame.c: - - fixed fft.h defines - -2000-10-16 02:12 markt - - * API, Makefile.in, configure, configure.in: - - broken frame analyzer fixed - -DANALYSIS was missing from default - library build - -2000-10-16 01:38 markt - - * frontend/: get_audio.c, main.c, mp3rtp.c: - - fixed broken fskip() - -2000-10-16 01:37 markt - - * STYLEGUIDE, Dll/BladeMP3EncDLL.c: - - fixed Frank's broken fskip() - -2000-10-16 00:44 markt - - * libmp3lame/: Makefile.in, mpglib_interface.c, util.c, util.h: - - made data for resampling dynamically allocated - -2000-10-16 00:28 pfk - - * STYLEGUIDE, frontend/brhist.c, frontend/brhist.h, - frontend/get_audio.c, frontend/parse.c, frontend/timestatus.c, - frontend/timestatus.h: - - - - Most changes must be switched on via KLEMM_0[0-9]. - Also some minor changes. - Start of short documenation of the source code. - - _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ - - **************** - *** #defines *** - **************** - - KLEMM_01: Use my experimental data to calculate ATH - But masking for >16 kHz seems to be buggy. - KLEMM_02: lame_set_stream_binary_mode() and lame_get_file_size() as - lib function, still searching a better place for that - KLEMM_03: not more used - KLEMM_04: faster FIR filter with less rounding errors - KLEMM_05: sparse VBR bitrate display - KLEMM_06: fskip() uses fseek() if possible - KLEMM_07: use of timestatus_klemm.c which only uses timestatus.c functions, - some code clarification and documentation - -2000-10-15 22:46 markt - - * libmp3lame/: util.c, util.h: - - lowpass filtering data structurs made dynamic - -2000-10-15 21:23 markt - - * USAGE: - - [no log message] - -2000-10-15 21:17 markt - - * frontend/get_audio.c, libmp3lame/VbrTag.c: - - Fixed bug parsing Xing VBR header: lame will now compute - correct number of frames when decoding - -2000-10-15 20:54 markt - - * Makefile.unix, frontend/get_audio.c, frontend/main.c: - - playback bugfix - -2000-10-15 20:12 markt - - * Dll/BladeMP3EncDLL.c: - - msv6 dll project files updated - -2000-10-15 20:11 markt - - * Dll/: MP3EncDll.dsp, MP3EncDll.dsw (MSVC6): - - msvc6 update - -2000-10-15 20:05 markt - - * Dll/: MP3EncDll.dsp, MP3EncDll.dsw: - - reverted back to MSVC5 project files. - accidently changed them to my MSVC6 versions. - - Albert, when are you goint to upgrade!!!! - -2000-10-15 20:02 markt - - * Dll/: MP3EncDll.dsp, MP3EncDll.dsw: - - msv6 dll project files updated - -2000-10-15 19:51 markt - - * libmp3lame/lame.c: - - fixed typo - -2000-10-15 19:33 markt - - * USAGE, include/lame.h, libmp3lame/lame.c: - - updated USAGE - -2000-10-15 19:10 markt - - * API, USAGE, Dll/BladeMP3EncDLL.c: - - edited API, USAGE - -2000-10-14 19:18 robert - - * libmp3lame/i386/cpu_feat.nas: - - BUG in 3DNow detection fixed, was my faulty porting to NASM - -2000-10-14 11:42 robert - - * libmp3lame/: takehiro.c, util.h: - - takehiro.c now thread safe ? - -2000-10-14 10:08 pfk - - * frontend/brhist.c, libmp3lame/psymodel.c: - - - - psymodel: FIR filter changed, trigger with KLEMM_04 - brhist: display changed back to the old display, new display must be - triggered by KLEMM_05 - -2000-10-13 22:58 pfk - - * frontend/brhist.c, frontend/brhist.h, frontend/main.c, - frontend/timestatus.c, include/lame.h, libmp3lame/util.c: - - - - Changes are commented in brhist.c or must be enabled with KLEMM_xx. - -2000-10-13 16:43 robert - - * frontend/brhist.c, frontend/brhist.h, frontend/main.c, - include/lame.h, libmp3lame/lame.c: - - bitrate histogram is working again - -2000-10-13 15:24 robert - - * Makefile.unix: - - small fixes - -2000-10-13 05:37 florian - - * frontend/Makefile.in, frontend/Makefile.in.old, - libmp3lame/Makefile.in, libmp3lame/Makefile.in.old: - - prepare for automake: new vars, system dependent checks to configure.in - -2000-10-13 05:17 florian - - * Makefile.in, Makefile.in.old, configure, configure.in, - configure.in.old: - - prepare for automake: new vars, system dependent checks to configure.in - -2000-10-12 19:19 florian - - * acinclude.m4, aclocal.m4, configure.in: - - Preparing for automake - -2000-10-12 17:48 robert - - * Makefile.MSVC, Makefile.unix: - - NASM specific fixes - -2000-10-12 17:19 robert - - * libmp3lame/i386/cpu_feat.nas: - - CPU feature code using NASM - -2000-10-12 17:18 robert - - * Makefile.MSVC, libmp3lame/Makefile.in, libmp3lame/util.c: - - CPU feature detection code now using NASM - -2000-10-12 08:59 shibatch - - * libmp3lame/: psymodel.c, quantize.c, quantize_pvt.c, util.h: - - Add two new features to --nspsytune. - 1. New block type selecting algorithm. - 2. Improved noise shaping at high bitrate CBR. Turned on by -q1 --nspsytune. - -2000-10-12 00:50 robert - - * Makefile.MSVC: - - it's getting better :-) - -2000-10-12 00:49 robert - - * frontend/parse.c: - - BUG fix in case LAME compiled without GTK, then called with -g - -2000-10-11 23:08 robert - - * libmp3lame/: Makefile.in, quantize_pvt.c, util.c: - - fixes for Frank's ATH - -2000-10-11 18:45 robert - - * include/lame.h, libmp3lame/lame.c: - - added alternative to lame_encode_finish: - - lame_encode_flush, does the same as lame_encode_finish - but will not free lame internal buffers - - lame_close, will free lame internal buffers - - So the following is equivalent to lame_encode_finish - lame_encode_flush() - - lame_close() - - But this adds the possibility to get some more - analyzing after all frames are encoded. - - Suggested to use with - lame_bitrate_hist() - lame_stereo_mode_hist() - -2000-10-11 17:54 robert - - * libmp3lame/: encoder.c, lame.c, util.c, util.h: - - simple statistics (histogram) added, - problem: lame_encode_finish() also frees internal buffer - solution: two new functions splitting lame_encode_finish() - into lame_encode_flush() and lame_close() - -2000-10-10 23:18 pfk - - * libmp3lame/util.c: - - - - Additional ATH calculation (enabled by KLEMM_01). - -2000-10-10 20:26 robert - - * libmp3lame/: lame.c, takehiro.c: - - use of MMX should be safe on non MMX CPUs now, - but this will not work on Microsoft platforms. - We will have to adapt the assembler routines - for the MS assembler or for NASM. - -2000-10-10 19:36 robert - - * Makefile.MSVC, libmp3lame/util.c: - - Makefile work - -2000-10-10 18:34 robert - - * libmp3lame/lame.c: - - cut'n'paste devil :( - -2000-10-10 18:28 robert - - * libmp3lame/: lame.c, util.c, util.h: - - Frank's CPU feature detection code added - -2000-10-10 17:59 afaber - - * Dll/BladeMP3EncDLL.c, Dll/BladeMP3EncDLL.h, frontend/brhist.c, - libmp3lame/VbrTag.c, libmp3lame/libmp3lame.dsp: - - MSVC Win32 updates, added Alpha Beta version numbers to DLL version structure - (should be backward compatible) - -2000-10-10 05:31 markt - - * TODO: - - notes about what needs to be done for configure - -2000-10-09 19:55 markt - - * libmp3lame/: encoder.h, lame-analysis.h: - - [no log message] - -2000-10-09 19:55 markt - - * TODO, frontend/timestatus.c, include/lame.h: - - generic cleanup - -2000-10-09 19:42 markt - - * TODO: - - frame analyzer now works with ./configure, at least for linux - -2000-10-09 19:29 markt - - * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, TODO, configure, - configure.in, frontend/get_audio.c, frontend/get_audio.h: - - attept to fix Makefiles.B32, DJGPP, MSVC. - -2000-10-09 16:27 markt - - * libmp3lame/lame-analysis.h: - - [no log message] - -2000-10-09 16:23 markt - - * Makefile.in, Makefile.unix, aclocal.m4, configure, configure.in, - frontend/Makefile.in, frontend/main.h, - libmp3lame/lame-analysis.h: - - moved mp3x -> analyzer (name was clashing with executable name) - work on configure to get mp3x to compile (not yet done) - but gtk stuff in configure.in now working - -2000-10-09 14:38 markt - - * libmp3lame/lame.c: - - added a comment about downsampling - -2000-10-08 20:08 markt - - * frontend/main.c, frontend/timestatus.c, include/lame.h, - libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, libmp3lame/encoder.c, - libmp3lame/lame.c: - - cleaned up VBR tag stuff - -2000-10-08 19:43 markt - - * frontend/get_audio.c, frontend/get_audio.h, frontend/main.c, - frontend/main.h, frontend/mp3rtp.c, frontend/parse.c, - frontend/parse.h, frontend/timestatus.c, frontend/timestatus.h, - include/lame.h, libmp3lame/lame.c, libmp3lame/version.c, - libmp3lame/version.h: - - lots of changes, just trying to get things to compile. - -2000-10-08 17:48 markt - - * libmp3lame/id3tag.h: - - Trying to add id3tag.h again. - -2000-10-07 08:25 robert - - * lame4dos.bat: - - bug fixes by Alexander Stumpf - -2000-10-07 05:04 markt - - * libmp3lame/: id3tag.c, util.h: - - missing id3tag.h include files for util.h, id3tag.c - -2000-10-07 05:00 markt - - * INSTALL, Makefile.unix, Dll/LameDLLInterface.htm, - frontend/main.c, frontend/main.h, include/lame.h, - libmp3lame/id3tag.c, libmp3lame/lame.c, libmp3lame/util.c, - libmp3lame/util.h: - - id3tag_spec made it back into lame.h. deleted. - - frameNum has to be in the library - the front end has no way - of correctly counting frames unless it parses the mp3 output - headers. totalframes should also probably be in the library. - -2000-10-06 21:16 florian - - * Makefile.in, configure, configure.in, frontend/Makefile.in, - libmp3lame/Makefile.in: - - minor changes for install and uninstall - -2000-10-06 13:19 takehiro - - * libmp3lame/: id3tag.c, lame.c, util.h: - - quick fix, maybe work but not checked hard - -2000-10-06 13:19 takehiro - - * frontend/main.c, include/lame.h: - - quick fix, I don't check this - -2000-10-06 00:55 markt - - * libmp3lame/: id3tag.c, lame.c, util.h: - - id3tag cleanup - -2000-10-06 00:54 markt - - * frontend/parse.c, include/lame.h: - - id3 stuff cleaned up. id3 related strucs made internal to the - library - -2000-10-05 19:53 cisc - - * frontend/: get_audio.c, get_audio.h: - - small correction - -2000-10-05 05:18 markt - - * TODO, frontend/Makefile.in: - - [no log message] - -2000-10-05 05:13 markt - - * Makefile.in, configure, configure.in, libmp3lame/Makefile.in: - - more configure work. - -2000-10-05 04:50 markt - - * testcase.mp3: - - updated testcase - -2000-10-05 04:49 markt - - * Makefile.in, libmp3lame/psymodel.c: - - added comment about Naoki's blocktype bug fix. - also, for JSTEREO but with the '-d' option, L and R channels - can have different block types, so we cant just look at the - block type for channel 0 - -2000-10-05 04:31 markt - - * Makefile.in, frontend/Makefile.in: - - forgot to add Makefile.in - -2000-10-04 22:37 robert - - * Lame.vbs: - - needs Windows Script >= 5.1, donated by Ralf Kempkens - -2000-10-04 17:13 afaber - - * Dll/Example.dsw, Dll/MP3EncDll.dsp, libmp3lame/libmp3lame.dsp, - mpglib/mpglib.dsp: - - MSVC project update(s) to new layout of the libmp3lame files - -2000-10-04 12:48 shibatch - - * libmp3lame/psymodel.c: - - Bugfix of long block pre-echo control. - -2000-10-04 12:13 takehiro - - * libmp3lame/i386/: choose_table.nas, fft.nas, fft3dn.nas, - fftfpu.nas, fftsse.nas, ffttbl.nas, nasm.h: - - moved i386 directory - -2000-10-04 04:26 markt - - * libmp3lame/Makefile.in: - - [no log message] - -2000-10-04 04:23 markt - - * configure, configure.in: - - make still does not work. some kind of infinite loop - -2000-10-04 04:00 markt - - * Makefile.unix: - - more configure work - -2000-10-04 03:54 markt - - * Makefile.in, Makefile.unix, VbrTag.c, VbrTag.h, amiga_mpega.c, - bitstream.c, bitstream.h, configure, configure.in, - debugscalefac.c, encoder.c, encoder.h, fft.c, fft.h, id3tag.c, - l3side.h, lame-analysis.h, lame.c, machine.h, mpglib_interface.c, - newmdct.c, newmdct.h, psymodel.c, psymodel.h, quantize.c, - quantize.h, quantize_pvt.c, quantize_pvt.h, reservoir.c, - reservoir.h, tables.c, tables.h, takehiro.c, util.c, util.h, - vbrquantize.c, version.c, version.h, vorbis_interface.c, - libmp3lame/Makefile.am, libmp3lame/Makefile.in, - libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, - libmp3lame/amiga_mpega.c, libmp3lame/bitstream.c, - libmp3lame/bitstream.h, libmp3lame/debugscalefac.c, - libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/fft.c, - libmp3lame/fft.h, libmp3lame/id3tag.c, libmp3lame/l3side.h, - libmp3lame/lame-analysis.h, libmp3lame/lame.c, - libmp3lame/machine.h, libmp3lame/mpglib_interface.c, - libmp3lame/newmdct.c, libmp3lame/newmdct.h, - libmp3lame/psymodel.c, libmp3lame/psymodel.h, - libmp3lame/quantize.c, libmp3lame/quantize.h, - libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, - libmp3lame/reservoir.c, libmp3lame/reservoir.h, - libmp3lame/tables.c, libmp3lame/tables.h, libmp3lame/takehiro.c, - libmp3lame/util.c, libmp3lame/util.h, libmp3lame/vbrquantize.c, - libmp3lame/version.c, libmp3lame/version.h, - libmp3lame/vorbis_interface.c: - - - Moved everything to libmp3lame. worked on configure, but - not quite working. - -2000-10-04 03:01 markt - - * frontend/aclocal.m4, frontend/configure, frontend/configure.in, - mpglib/configure, mpglib/configure.in: - - removed more configure files in subdirectories. - There should only be one ./configure, in the main directory - -2000-10-04 02:57 markt - - * configure, configure.in, frontend/get_audio.c, - frontend/get_audio.h, frontend/timestatus.c, - frontend/timestatus.h: - - more configure work - -2000-10-04 01:07 markt - - * configure, configure.in, frontend/Makefile.in: - - more configure patches for frontend. - -2000-10-04 01:02 markt - - * TODO, configure, configure.in, frontend/configure: - - new configure that doesn't run configure in all the subdirectories! - -2000-10-03 22:08 afaber - - * README.WINGTK, lamelib.dsp, frontend/lame.dsp, frontend/lame.dsw, - libmp3lame/libmp3lame.dsp, mpglib/mpglib.dsp: - - Re-organized some of the MSVC project files, fixes to compile mp3x again on Win32 platform - -2000-10-03 17:56 robert - - * fft.c: - - removed unused includes - -2000-10-03 10:32 robert - - * fft.c, fft.h, lame.c, psymodel.c, quantize.c, quantize_pvt.c, - util.h: - - fft.c now thread safe !? - -2000-10-03 09:44 robert - - * encoder.c, newmdct.c, newmdct.h: - - removed redundancies - -2000-10-03 09:43 robert - - * testcase.mp3: - - updated testcase for LAME 3.88 alpha 1 - -2000-10-03 04:07 markt - - * INSTALL: - - Some configure options are for the library, some are for - the front end. How do we pass front end options to - frontend/configure? - -2000-10-03 03:57 markt - - * Makefile.in: - - [no log message] - -2000-10-02 10:15 markt - - * Makefile.in: - - make -> $(MAKE) - -2000-10-02 09:00 markt - - * quantize_pvt.h: - - Fix for winamp bug. (commented out for now) - -2000-10-02 06:20 markt - - * aclocal.m4, configure, configure.in, frontend/configure, - frontend/configure.in: - - configure updates - -2000-10-01 19:05 afaber - - * lamelib.dsp, frontend/lame.dsp, mpglib/mpglib.dsp: - - Adapted project file in order to compile it again with the MSVC compiler - -2000-10-01 18:34 markt - - * Makefile.in: - - [no log message] - -2000-10-01 18:25 markt - - * INSTALL, Makefile.in, id3tag.c, lame-analysis.h, lame.c, - frontend/Makefile.in, frontend/configure, frontend/configure.in, - frontend/main.c, frontend/parse.c, include/lame-analysis.h, - include/lame-id3tag.h, include/lame.h: - - trying to move decoding back into library - -2000-10-01 17:58 afaber - - * frontend/get_audio.c: - - Make it compile again with MSVC compiler - -2000-10-01 17:17 markt - - * frontend/: gpkplotting.c, gpkplotting.h, gtkanal.c, main.c, - mp3x.c: - - moved GTK frame analyzer stuff into mp3x - -2000-10-01 15:29 takehiro - - * Makefile.in, aclocal.m4, configure, configure.in, - mpglib_interface.c, vorbis_interface.c, frontend/Makefile.in, - frontend/get_audio.c, frontend/main.c, - frontend/vorbis_interface.c, mpglib/Makefile.in, - mpglib/configure, mpglib/configure.in, mpglib/main.c: - - more modularization work. - VORBIS and mpglib interface is now in the libmp3lame library. - functions in these files are wrapper of mpglib/libvorbis. - I think it is ok to include them in libmp3lame. - -2000-10-01 15:19 takehiro - - * VbrTag.c: - - merged VbrTag.h into lame.h - -2000-10-01 15:03 takehiro - - * encoder.c, lame.c, util.h, Dll/BladeMP3EncDLL.c, - frontend/get_audio.c, include/lame.h: - - merged VbrTag.h into lame.h - -2000-10-01 11:28 afaber - - * mpglib/: common.c, common.h, dct64_i386.c, decode_i386.c, - interface.c, interface.h, layer1.c, layer1.h, layer2.c, layer2.h, - layer3.c, layer3.h, main.c, mpg123.h, mpglib.dsp, mpglib.h, - dct64_i386.h, decode_i386.h: - - More MPGLIB cleanup, got rid of the global mpstr struct gmp (in order to make lib thread safe) - -2000-10-01 10:40 afaber - - * mpglib/: common.c, common.h, decode_i386.c, interface.c, - layer3.c, mpg123.h: - - Cleanup of mpg123.h file (still need to get rid of the dirty extern gmp hack) - -2000-10-01 10:05 afaber - - * mpglib/: layer1.c, mpg123.h: - - Removed unused stuff in MPG123.h file, removed stuff that was commented out in Layer1.c - -2000-10-01 10:00 afaber - - * mpglib/: mpg123.h, tabinit.c: - - Removed some double/float warnings, removed disable warnings pragma for MSVC compiler - -2000-10-01 09:52 takehiro - - * lame.c, frontend/main.c: - - moved main_crc_init from frontend to library - -2000-10-01 09:51 afaber - - * mpglib/: common.c, common.h, dct64_i386.c, decode_i386.c, - interface.c, layer2.c, layer3.h, mpg123.h, mpglib.dsp, tabinit.c, - tabinit.h: - - Reorganized some of the function prototypes, removed non existing function prototypes from common.h - -2000-10-01 09:32 takehiro - - * libmp3lame/.cvsignore: - - initial check in for libmp3lame - -2000-10-01 09:29 takehiro - - * libmp3lame/Makefile.am: - - check in for the feauture... - -2000-10-01 09:09 afaber - - * bitstream.h, frontend/main.c: - - Added void main_CRC_init (void) function prototype in bitstream.h - -2000-10-01 06:24 takehiro - - * frontend/: Makefile.in, mp3x.c: - - making frameanalyzer problem fixed - -2000-10-01 04:56 markt - - * util.c: - - added Frank's normalization of Blackman filter coefficients. - This had no effect on any of my resample test cases. - -2000-09-30 15:32 markt - - * STYLEGUIDE: - - more notes on identation and int in STYLEGUIDE - -2000-09-30 15:09 afaber - - * id3tag.c: - - fixed signed/unsigned mismatch - -2000-09-30 14:50 markt - - * HACKING, bitstream.c, bitstream.h, util.c, util.h: - - added stuff in HACKING on how to handle global data - moved freegfc() into util.c - -2000-09-30 14:28 markt - - * util.c: - - number of pre-computed convolution windows determined dynamically. - (storage still needs to malloc'd and free'd in lame_encode_finish). - -2000-09-30 14:17 robert - - * Makefile.in: - - small fix - -2000-09-30 13:14 afaber - - * Dll/: BladeMP3EncDLL.c, MP3EncDll.dsp: - - Changes in order to get it compile on a Win32 platform - -2000-09-30 12:49 afaber - - * lamelib.dsp, VbrTag.h, lame.dsp, lame.dsw, frontend/brhist.c, - frontend/get_audio.c, frontend/lame.dsp, frontend/lame.dsw, - frontend/timestatus.c, mpglib/mpglib.dsp: - - Changes in order to get it compile on a Win32 platform - -2000-09-30 08:29 takehiro - - * frontend/parse.c: - - renamed some functions - -2000-09-30 08:21 takehiro - - * doc/html/: contributors.html, examples.html, history.html, - id3.html, index.html, lame.css, modes.html, node6.html, - switchs.html: - - new document for 3.87 from Gaby. - -2000-09-30 08:15 takehiro - - * frontend/: configure, configure.in: - - debug about gtk detection - -2000-09-30 07:54 takehiro - - * lame.c, frontend/get_audio.c, frontend/main.c, frontend/main.h, - frontend/mp3rtp.c, frontend/parse.c, include/lame.h: - - removed outpath from library. - -2000-09-30 06:58 takehiro - - * bitstream.c, bitstream.h, util.c, util.h: - - moved some code from util to bitstream - -2000-09-30 04:40 markt - - * VbrTag.c, lame.c, frontend/vorbis_interface.c: - - re-enabled id3v2 tag and Xing vbr header - -2000-09-29 18:16 takehiro - - * lame.c, frontend/get_audio.c, frontend/main.c, frontend/main.h, - frontend/parse.c, frontend/timestatus.c, include/lame.h: - - "silent" and "brhist" is moved to frontend - -2000-09-29 18:07 takehiro - - * lame.c, frontend/main.c, frontend/main.h, frontend/parse.c, - frontend/timestatus.c, include/lame.h: - - "update_interval" is moved to frontend - -2000-09-29 17:49 takehiro - - * encoder.c, lame.c, psymodel.c, quantize.c, vbrquantize.c, - frontend/main.c, frontend/parse.c, include/lame-analysis.h, - include/lame.h, frontend/mp3x.c: - - changed from "gtkflag" to "analysis", because it is not only for gtk. - -2000-09-29 17:48 takehiro - - * frontend/timestatus.c: - - oops, timestatus not correctly displayed - -2000-09-29 17:43 takehiro - - * id3tag.c, lame.c, quantize.c, quantize_pvt.c, util.h, - vbrquantize.c, frontend/gtkanal.c, frontend/main.c, - frontend/mp3x.c, frontend/parse.c, include/analysis.h, - include/id3tag.h, include/lame-analysis.h, include/lame-id3tag.h, - include/lame.h, mpglib/layer3.c, mpglib/mpglib.h: - - OK, Florian, I renamed include file avoid confusing. - (it's so generic and not likely to be unique) - -2000-09-29 17:31 takehiro - - * Makefile.in, encoder.c, lame.c, parse.c, psymodel.c, util.c, - util.h, vbrquantize.c, frontend/Makefile.in, frontend/brhist.c, - frontend/get_audio.c, frontend/get_audio.h, frontend/gtkanal.c, - frontend/main.c, frontend/main.h, frontend/parse.c, - frontend/parse.h, frontend/timestatus.c, - frontend/vorbis_interface.c: - - 1. timestatus things are moved to frontend(maybe complete ?) - 2. input file handling is moved to frontend(so the file input API is removed) - -2000-09-29 04:51 markt - - * frontend/brhist.c, frontend/get_audio.c, frontend/get_audio.h, - mpglib/main.c: - - removed analysis.h from get_audio.c - typo in brhist.c - -2000-09-28 23:31 robert - - * lame4dos.bat: - - improved lame.bat for 4DOS users, donated by Alexander Stumpf - -2000-09-28 16:36 takehiro - - * Makefile.in, VbrTag.c, brhist.c, brhist.h, configure, - configure.in, encoder.c, get_audio.c, get_audio.h, gpkplotting.c, - gpkplotting.h, gtkanal.c, id3tag.h, ieeefloat.c, ieeefloat.h, - lame.c, lametime.c, lametime.h, main.c, mp3rtp.c, mp3x.c, - parse.c, portableio.c, portableio.h, psymodel.c, quantize.c, - quantize_pvt.c, rtp.c, rtp.h, tables.c, timestatus.c, - timestatus.h, util.c, util.h, vbrquantize.c, version.c, - version.h, vorbis_interface.c, frontend/.cvsignore, - frontend/Makefile.in, frontend/aclocal.m4, frontend/brhist.c, - frontend/brhist.h, frontend/configure, frontend/configure.in, - frontend/get_audio.c, frontend/get_audio.h, - frontend/gpkplotting.c, frontend/gpkplotting.h, - frontend/gtkanal.c, frontend/ieeefloat.c, frontend/ieeefloat.h, - frontend/lametime.c, frontend/lametime.h, frontend/main.c, - frontend/mp3rtp.c, frontend/mp3x.c, frontend/parse.c, - frontend/portableio.c, frontend/portableio.h, frontend/rtp.c, - frontend/rtp.h, frontend/timestatus.c, frontend/timestatus.h, - frontend/vorbis_interface.c, include/id3tag.h, include/lame.h, - mpglib/Makefile.in, mpglib/layer3.c, mpglib/mpglib.h: - - moved frontend staffs into frontend/ - Need to debug vorbis/mpglib/analyzer/bitrate histgram. - still long way to go... - - HAVEGTK is changed ANALYSIS(library side) and HAVEGTK(frontend side) - - BRHIST is deleted from library. all the bitrate histogram works are - now in frontend(but not works properly, yet). - - timestatus things are also moved to frontend. - - parse.c is now out of library. - -2000-09-27 12:05 takehiro - - * include/analysis.h, gtkanal.h: - - moved gtkanal.h to include/analysis.h - -2000-09-27 04:17 florian - - * Makefile.in: - - fixed make install -> move of lame.h broke it. - -2000-09-26 17:47 takehiro - - * Makefile.in, gtkanal.h: - - more clean up and debug "make clean" - -2000-09-26 17:35 takehiro - - * Makefile.in: - - moved more staff out of libmp3lame - -2000-09-26 17:28 takehiro - - * Makefile.in: - - removed brhist.o etc from library - -2000-09-26 17:25 takehiro - - * include/lame.h: - - lame.h moved to include - -2000-09-26 17:24 takehiro - - * timestatus.c: - - little clean up - -2000-09-26 17:03 takehiro - - * Makefile.in, configure, configure.in, lame.h: - - 1 moved lame.h into include/ - 2 modularized work with mpglib - -2000-09-26 16:59 cisc - - * amiga_mpega.c: - - Mark, you broke lame_decode_initfile(), what were you thinking? ;) .. anyways, fixed, and added new mp3data struct variables... - -2000-09-26 15:48 takehiro - - * mpglib/: .cvsignore, Makefile.in, common.c, configure, - configure.in, dct64_i386.c, decode_i386.c, interface.c, layer3.c, - main.c, tabinit.c: - - configure support and more modularized work - -2000-09-26 15:47 takehiro - - * mpglib/Makefile: - - now this is generated by configure - -2000-09-26 05:22 markt - - * version.h: - - CVS is now 3.88 alpha 1 - -2000-09-26 04:49 markt - - * version.h: - - updated to 3.87 beta - -2000-09-26 04:48 markt - - * get_audio.c, get_audio.h, gtkanal.c, timestatus.c, mpglib/main.c: - - removed all references to gfc-> from get_audio.c - this was needed if we are going to move get_audio.c out of - libmp3lame and into the front end code. - -2000-09-26 01:00 markt - - * HACKING, STYLEGUIDE: - - [no log message] - -2000-09-26 00:55 markt - - * CodingStyle.c, lametype.h: - - Removed two files - -2000-09-26 00:09 markt - - * amiga_mpega.c, get_audio.c, lame.c, lame.h, timestatus.c, - timestatus.h, util.h: - - when input file was a mp3, it was trashing a bunch of - variables (mode, bitrate, etc..) - -2000-09-25 21:37 robert - - * Makefile.MSVC: - - MMX choose table support, needs NASM (can be disabled) - -2000-09-25 21:23 florian - - * configure, configure.in: - - changed default installation prefix to /usr (/usr/local/lib doesn't seem to be in default linker path) - -2000-09-25 20:58 florian - - * Makefile.in: - - fixed shared lib (runtime linker information) - -2000-09-25 15:20 markt - - * Makefile.in: - - removed ?= from makefile - -2000-09-25 14:36 shibatch - - * psymodel.c: - - A small bugfix of --nspsytune. - -2000-09-25 02:13 florian - - * configure, Makefile.in, configure.in: - - cleaner version handling of libmp3lame.so, uninstall target in Makefile - -2000-09-25 00:30 markt - - * id3tag.c: - - fixed genre bug in id3tag.c - -2000-09-24 22:59 markt - - * id3tag.c, vbrquantize.c: - - removed yet another unsigned loop counter - -2000-09-24 21:53 robert - - * Makefile.MSVC: - - enabled Takehiro's IEEE hack - -2000-09-24 14:59 robert - - * configure, configure.in: - - BUG fixed, which prevented using Layer1/2 decoding abilities - -2000-09-24 14:34 robert - - * encoder.c, lame.c, quantize.c, quantize_pvt.c, quantize_pvt.h, - util.h, vbrquantize.c: - - code cleanup and very little speedup - -2000-09-24 12:38 robert - - * quantize.c: - - minor RH_AMP tweak, and once again, do not use tabulator within this file - -2000-09-24 12:29 robert - - * quantize.c: - - please do not use tabulators within this file (better in no files) - -2000-09-24 12:22 robert - - * VbrTag.c: - - minor BUG fix for MPEG-2(.5) - -2000-09-24 11:39 takehiro - - * quantize.c: - - sorry, scalefac_scale did not have a bug. that was my compiler bug... - -2000-09-24 10:38 afaber - - * mpglib/interface.c: - - Fixed MP1/2 decoding problem, for files that were encoded with a CRC - -2000-09-24 01:32 markt - - * get_audio.c: - - minor fix to mp3 header parsing - -2000-09-23 23:36 afaber - - * bitstream.c: - - removed unused variable bits - -2000-09-23 23:36 afaber - - * id3tag.c: - - fixed signed/unsigned mismatch, added bitstream.h include file - -2000-09-23 22:31 markt - - * VbrTag.c, bitstream.c, bitstream.h, id3tag.c, id3tag.h, lame.c, - lame.h, main.c, parse.c: - - id3v1 and id3v2 tags now get written directly into - the bitstream instead of into the output file. - - The only file I/O left in libmp3lame will be the VBR tag. - -2000-09-23 21:13 markt - - * get_audio.c, lame.h, mpglib/main.c: - - removed lame_decode_fromfile() calls from the API, - moved them into get_audio.c - -2000-09-23 20:08 markt - - * lame.h, mpglib/main.c: - - some mpglib restructering. - All mp3 routines which work with files now only make - calls to lame_decode_* that are in the API. - -2000-09-23 14:48 markt - - * VbrTag.c: - - bug in Xing header for MPEG2.5 fixed - -2000-09-23 09:07 takehiro - - * quantize.c, quantize_pvt.c, util.c, util.h: - - workaround for subblock_gain and scalefac_scale artifact. - I hope this will fix -q1 problems. - -2000-09-23 02:11 markt - - * version.c: - - [no log message] - -2000-09-23 01:23 markt - - * mpglib/main.c: - - [no log message] - -2000-09-23 01:23 markt - - * VbrTag.c, VbrTag.h, lame.h, parse.c, util.c, util.h: - - bug fixed in decoding: if syncword found in Xing VBR header toc, - it would confuse things. - - Also fixed overflow in vbrtag.c, and changed size of xing vbr - header to 128kbs. This will make non-vbr aware players - give a more reasonable playing time estimate. - -2000-09-23 00:51 robert - - * psymodel.c: - - minor fix - -2000-09-22 22:54 shibatch - - * quantize.c, quantize_pvt.c: - - Minor bugfixes of --nspsytune. Frame analyzer works correctly with --nspsytune. - -2000-09-21 23:55 shibatch - - * parse.c, psymodel.c, quantize.c: - - Tweaks to --nspsytune. This improves CBR quality. - -2000-09-21 16:50 afaber - - * Dll/LameDLLInterface.htm: - - Updated lame_enc.dll documentation file - -2000-09-20 22:56 takehiro - - * Makefile.in, configure, configure.in, encoder.c, lame.c, - timestatus.c: - - more configure updates. - not compiling/linking BRHIST routine when it is disabled. - -2000-09-20 20:50 afaber - - * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h, Example.cpp: - - Added bNoRes option in LHV1 structure, updated example to have default settings as in testcase.wav test case - -2000-09-20 19:08 afaber - - * brhist.c, lame.h: - - Changed BRHST un-signed variables to signed variables - -2000-09-20 18:50 afaber - - * Dll/BladeMP3EncDLL.c: - - High quality was not enabled - -2000-09-20 18:49 afaber - - * Dll/MP3EncDll.dsp: - - Added TAKEHIRO_IEEE754_HACK define to project file - -2000-09-20 18:41 afaber - - * lame.dsp: - - Added TAKEHIRO_IEEE754_HACK define to project file - -2000-09-20 16:40 robert - - * quantize.c: - - VBR old quality tuning for --raise-smr - -2000-09-19 14:40 takehiro - - * Makefile.in: - - update glibc inline math error detection - -2000-09-19 14:32 takehiro - - * configure, configure.in: - - oops, needless gabage removed - -2000-09-19 14:26 takehiro - - * configure: - - newer configure script made by configure.in - -2000-09-19 14:12 takehiro - - * Makefile.in, configure.in: - - not compiling/linking mpglib code when it disabled. - not compiling/linking gtk related code when it disabled. - - control LAYER1 and LAYER2 decoding function with --enable-decode-layer1 and - --enable-decode-layer2 - - autodetect math inline bug of glibc < 2.1.3 - -2000-09-19 14:11 robert - - * quantize_pvt.c: - - modified --ATHlower to not touch sfb21 - -2000-09-19 14:06 takehiro - - * .cvsignore: - - ignore files related configure script and library itself - -2000-09-19 05:33 markt - - * mpglib/main.c: - - got rid of a size_t in main.c - -2000-09-19 05:19 markt - - * lame.dsp (MSVC6), Dll/MP3EncDll.dsp: - - updated msvc6 project files - -2000-09-19 04:54 markt - - * mpglib/main.c: - - removed unsigned int being used as a loop counter. - -2000-09-19 04:18 markt - - * encoder.h, lame.c, util.c, util.h: - - updated filter settings - -2000-09-18 22:29 afaber - - * Dll/Example.cpp: - - Bug fixes in example file - -2000-09-18 21:57 markt - - * testcase.mp3, util.c, util.h: - - changed BPC to 160 on Frank's advice. - This means pre-compute 160 filter-sinc-windows, instead of just 16. - Should also fix the aliasing problem shown in mp3.com bulliten - board - -2000-09-18 21:30 markt - - * Makefile.B32, Makefile.DJGPP, Makefile.in, Makefile.unix: - - Makefiles updated to reflect that all the ASM code has been - removed and replaced with IEEE754_HACK. I'm glad to see - it gone - but I didn't remove it! - -2000-09-18 21:28 markt - - * STYLEGUIDE, VbrTag.c, brhist.c, get_audio.c, machine.h, - quantize.c, quantize_pvt.c, takehiro.c, vorbis_interface.c: - - minor code cleanup. - -2000-09-18 20:53 afaber - - * lame.dsp: - - Fixed library problem in ReleaseGTK mode - -2000-09-18 20:09 markt - - * config.log: - - removed config.log from repository - -2000-09-18 19:43 afaber - - * brhist.c: - - Fixes for Cygwin compiler - -2000-09-18 18:52 markt - - * INSTALL, Makefile.in, Makefile.unix, config.log: - - more configure updates - -2000-09-18 18:34 markt - - * INSTALL, INSTALL.configure, Makefile, Makefile.in, Makefile.unix, - aclocal.m4, confdefs.h, config.guess, config.log, config.sub, - configure, configure.in, install-sh: - - added configure stuff from Florian! - - original Makefile is now in Makefile.unix - -2000-09-18 01:48 cisc - - * util.c, vbrquantize.c, version.h: - - warning fixes & bumped alpha version - -2000-09-17 23:25 markt - - * Makefile, lame.h: - - added note about shared library - -2000-09-17 22:25 markt - - * USAGE, encoder.c, lame.c, lame.h, parse.c: - - --scale option added - -2000-09-17 21:47 afaber - - * bitstream.c, get_audio.c, quantize.c: - - removed unecessary (int) casts - -2000-09-17 21:21 markt - - * HACKING, STYLEGUIDE, lame.h: - - some editing - -2000-09-17 21:04 afaber - - * encoder.c, lame.dsp: - - Enabled BRHIST in MSVC project file, and changed calls to brhist functions in encoder.c - -2000-09-17 20:55 markt - - * encoder.c, takehiro.c: - - forgot to add encoder.c to cvs - -2000-09-17 20:53 markt - - * bitstream.c, machine.h, util.c, util.h: - - more 'unsigned's removed - -2000-09-17 20:52 afaber - - * brhist.c, brhist.h, lame.c, lame.h, timestatus.c: - - Moved BRHIST variables to lame_global_flags structure, so a library (like lame_enc.dll) can have access to the histogramming data - -2000-09-17 20:20 markt - - * lame.c, testcase.mp3, version.c: - - resampling nolonger needs to quantize back to integers - since internal representation of PCM samples is now floating point - -2000-09-17 19:50 markt - - * Makefile, fft.c, gtkanal.c, lame.c, machine.h, newmdct.c, - newmdct.h, psymodel.c, psymodel.h, testcase.mp3, util.c, util.h, - mpglib/main.c: - - sample_t changes updated, sample_t = FLOAT - -2000-09-17 18:52 markt - - * INSTALL, Makefile, Makefile.B32, Makefile.DJGPP, Makefile.MSVC, - encoder.h, lame.c, lame.dsp, lametime.h, main.c, timestatus.h, - Dll/MP3EncDll.dsp: - - added encoder.c which has the core encoding function. - fixed sample_t stuff - -2000-09-17 17:55 robert - - * Makefile, l3side.h, quantize.c, quantize_pvt.c, takehiro.c: - - not everyone has access to Vorbis in Mark's home directory ;-) - -2000-09-17 17:54 afaber - - * mpglib/main.c: - - Changed return value from zero to -1 when EOF has been reached - -2000-09-17 16:19 takehiro - - * quantize.c: - - added #include - -2000-09-17 10:07 takehiro - - * get_audio.c: - - trivial warning fix - -2000-09-17 09:32 takehiro - - * quantize_pvt.c: - - removed old assembler code - -2000-09-17 09:30 takehiro - - * main.c: - - quick hack for "sample_t is not defined" - -2000-09-17 05:00 cisc - - * get_audio.h, version.c: - - updated some libsndfile related stuff - -2000-09-17 04:19 cisc - - * VbrTag.h, bitstream.h, brhist.h, encoder.h, fft.h, get_audio.h, - gpkplotting.h, gtkanal.h, id3tag.h, ieeefloat.h, l3side.h, - lame.h, lametime.h, lametype.h, machine.h, newmdct.h, - portableio.h, psymodel.h, quantize.h, quantize_pvt.h, - reservoir.h, rtp.h, tables.h, timestatus.h, util.h, version.h: - - conformed all this-is-included-defines to match 'project_file_name' style - -2000-09-16 22:52 afaber - - * lame.dsp, reservoir.c, reservoir.h, tables.c, tables.h, - timestatus.c, timestatus.h, util.c, util.h, vbrquantize.c: - - Changed lame header/source to LGPL license where necessary, added LGPL header to files when applicable - -2000-09-16 22:39 afaber - - * encoder.h, fft.h, get_audio.c, get_audio.h, gpkplotting.c, - gpkplotting.h, gtkanal.c, gtkanal.h, l3side.h, lametime.c, - lametime.h, newmdct.h, parse.c, psymodel.h, quantize.c, - quantize.h, quantize_pvt.c, quantize_pvt.h, Dll/MP3EncDll.dsp: - - Changed lame header/source to LGPL license where necessary, added LGPL header to files when applicable - -2000-09-16 22:16 afaber - - * fft.c, machine.h, psymodel.c: - - Removed the float/double compiler warnings - -2000-09-16 22:08 afaber - - * Dll/: BladeMP3EncDLL.h, MP3EncDll.dsp: - - Small changes to the lame_enc project settings - -2000-09-16 21:52 afaber - - * brhist.c, brhist.h, get_audio.c, gtkanal.c, lametime.h, main.c, - psymodel.c, quantize.c, takehiro.c, timestatus.c, vbrquantize.c, - mpglib/layer2.c, mpglib/layer3.c, mpglib/main.c: - - Removed a bunch of signed/unsigned compiler warnings - and removed const/no const assignements compiler warnings - welcome to const hell Frank! - -2000-09-16 21:07 markt - - * Makefile, quantize_pvt.c: - - shared lib support, IEEE stuff the default on i386 - -2000-09-16 21:07 cisc - - * amiga_mpega.c: - - added mode & mode_ext support to mp3data struct, like mpglib/main.c - -2000-09-16 21:06 afaber - - * lame.dsp: - - Added lametime.c and lametime.h files to project - -2000-09-16 19:03 markt - - * HACKING, STYLEGUIDE: - - style updates - -2000-09-16 18:54 markt - - * STYLEGUIDE: - - adding STYLEGUIDE - -2000-09-16 18:54 markt - - * CodingStyle.c, LICENSE, USAGE, bitstream.c, get_audio.c, - gtkanal.c, id3tag.c, l3side.h, lame.c, lame.h, lametime.c, - machine.h, parse.c, quantize.c, quantize_pvt.c, quantize_pvt.h, - tables.c, tables.h, takehiro.c, testcase.mp3, timestatus.c, - util.h, vbrquantize.c, version.c, mpglib/common.h, - mpglib/interface.h, mpglib/main.c: - - got rid of a bunch of unsigned variables. - -2000-09-16 13:59 afaber - - * brhist.c, psymodel.c, quantize_pvt.c, takehiro.c, vbrquantize.c: - - Removed the signed/unsigned mismatch compiler warnings - -2000-09-16 13:30 afaber - - * bitstream.c: - - Removed the signed/unsigned mismatch compiler warnings - -2000-09-16 12:53 afaber - - * mpglib/layer1.c: - - Switched include from mpg123.h to common.h to avoid compiler warnings - -2000-09-16 00:43 cisc - - * psymodel.c, timestatus.c: - - warning fixes - -2000-09-15 16:36 shibatch - - * psymodel.c: - - Tweaks to --nspsytune. - -2000-09-15 15:01 takehiro - - * quantize_pvt.c: - - oops, foolish bug ... - -2000-09-15 13:03 takehiro - - * quantize_pvt.c: - - TAKEHIRO_IEEE754_HACK now C99 aliasing rule compliant. - it runs correctly with "-fstrict-aliasing" (GCC) - -2000-09-14 03:32 markt - - * brhist.c, mpglib/mpg123.h: - - fixed VBR display - -2000-09-13 23:31 markt - - * Makefile, quantize.c, reservoir.c: - - NORES_TEST turned back of - -2000-09-13 18:46 afaber - - * Dll/BladeMP3EncDLL.c: - - Fixed bug in lame_enc.dll when using preset option, and return proper frame size when using MPEG-2 - -2000-09-13 18:24 afaber - - * mpglib/: common.c, common.h, interface.c, interface.h, layer2.c, - layer3.c, main.c, mpg123.h, mpglib.dsp, mpglib.h: - - Added common.h and interface.h, and added the functions prototypes that should be in these files, instead of mpg123.h - -2000-09-13 18:22 markt - - * util.c: - - precompute for filter turned back on - -2000-09-13 18:19 markt - - * lame.c, util.c, util.h: - - replaced upsampling filter with 19 point blackman filter - -2000-09-13 11:18 markt - - * parse.c: - - typo in documentation - -2000-09-13 11:03 markt - - * Makefile, parse.c, testcase.mp3, vorbis_interface.c: - - fixed vorbis_interface.c so it would compile - -2000-09-13 10:59 markt - - * Makefile, bitstream.c, fft.c, get_audio.c, lame.c, lame.h, - psymodel.c: - - fixed some bugs introduced by frank. - get_audio.c must count samples for .wav files. - lame.c: disabling ATH is not the way to solve the problem Frank - wants to solve - -2000-09-13 09:23 robert - - * quantize.c: - - quality adjustment for VBR old to better use --raise-smr - -2000-09-12 22:36 pfk - - * brhist.c, gtkanal.c, id3tag.c, lame.c, lametype.h, main.c, - psymodel.c, quantize.c, quantize_pvt.c, tables.c, tables.h, - takehiro.c, util.c, util.h, vbrquantize.c, vorbis_interface.c, - mpglib/common.c, mpglib/huffman.h, mpglib/l2tables.h, - mpglib/layer2.c, mpglib/layer3.c, mpglib/main.c, mpglib/mpg123.h, - mpglib/tabinit.c: - - - - added const to all constant tables, so that they are placed in write - protected RAM or in ROM (standalone DSP version). - - The SEGFAULT be with you (instead of debugging for hours). - - Also some remarks instead of changes instead of code changes. - - Remove them if they are fully useless. - -2000-09-12 20:47 robert - - * Makefile, lame.c, lame.h, parse.c, psymodel.c, quantize_pvt.c: - - added --raise-smr <0..1> a new toy to control quality - -2000-09-12 18:20 pfk - - * Makefile, Makefile.B32, Makefile.DJGPP, Makefile.MSVC, - bitstream.c, get_audio.c, lame.c, lame.h, lametype.h, parse.c, - util.h, version.h, vorbis_interface.c, mpglib/main.c: - - - - Some bug fixes - Activated lametime.c - Two types of display update now possible (old and new, depends on Makefile) - -2000-09-12 06:26 pfk - - * brhist.c, lame.c, lametype.h, version.c: - - - - brhist.c Changed display of percentages between 0.1 and 1 % - - lame.c: ??? - version.h: include as less as possible - - lametype.h: First try to disentangle the #include jungle of lame - (this style would be the immediate death for larger - projects) - -2000-09-12 00:47 markt - - * main.c, mpglib/l2tables.h, mpglib/layer2.h: - - al_table struct renamed al_table2 - -2000-09-11 20:33 shibatch - - * psymodel.c: - - --nspsytune uses additive masking. - -2000-09-11 20:05 robert - - * psymodel.c: - - disabled "additive masking" in subband calculation - -2000-09-11 20:04 robert - - * lame.c, lame.h, parse.c, quantize.c, quantize.h, quantize_pvt.c: - - experimental mix of VBR new and old available with --vbr-mtrh - -2000-09-10 23:24 markt - - * HACKING: - - added rule #1 LAME style guide - -2000-09-10 22:13 markt - - * doc/html/modes.html: - - modes.html was not in the repository - -2000-09-10 21:45 markt - - * testcase.mp3, testcase.wav: - - made the test case a little longer - (100k .wav file) - -2000-09-10 21:27 markt - - * lame.h, parse.c, mpglib/huffman.h, mpglib/l2tables.h, - mpglib/layer2.h: - - reverted mpglib routines back to original. - please keep mpglib as close as possible to the mpg123/mpglib - code that it is based on. - - Went back to display every 100 frames, which I prefer. - -2000-09-10 20:54 markt - - * Makefile, lame.c, timestatus.c: - - went back to display every 100 frames. - -2000-09-10 19:54 cisc - - * brhist.c: - - small adjustment - -2000-09-10 19:52 cisc - - * version.c: - - correct includes for libsndfile prototypes - -2000-09-10 18:05 pfk - - * Makefile, USAGE, brhist.c, brhist.h, fft.c, fft.h, lame.c, - lame.h, version.h, mpglib/huffman.h: - - - - some minor changes. Start to introduce sample_t. - - Changed VBR display. - -2000-09-10 13:11 pfk - - * fft.c, parse.c, psymodel.c, version.h, mpglib/l2tables.h, - mpglib/layer2.h: - - - - fft.c: loop variables short => size_t/int - layer2.h - l2tables.h: formated, structure definition changed for (possible) - speedup - parse.c optimized sfb21 usage for presets - -2000-09-09 23:00 pfk - - * get_audio.c, gtkanal.c, lametime.c, lametime.h, mpglib/common.c, - mpglib/l2tables.h, mpglib/layer2.c, mpglib/layer2.h, - mpglib/mpg123.h: - - - - struct al_table {} <=> - typedef struct {} al_table conflict removed - - lame/gtkanal.c: typecast of functions ptr's - -2000-09-09 21:11 pfk - - * CodingStyle.c, Makefile, USAGE, lametime.c, lametime.h, mlame, - mlame_corr.c, quantize_pvt.c, quantize_pvt.h, vbrquantize.c, - version.c, version.h, mpglib/layer1.c, mpglib/layer2.c: - - - - Makefile: added option -pedantic - USAGE: updated some remarks, - added some remarks, - kbs => kbps, HZ/hz => Hz, space between number and unit - mlame: -mf => -mj - uses mlame_corr - mlame_corr: First try of a program which analyzes the total file - and recommend flags - quantize_pvt.*: made some arrays const - asm => __asm__ - version.* copied vom pfk1 tree - mpglib/*.c added newline at the end of the file - - CodingStyle.c start of an CodingStyle Guide, pre-alpha - lametime.* heavy system specific code should moved to this - file, should not mixed with other code - -2000-09-09 21:04 cisc - - * amiga_mpega.c: - - warning fix - -2000-09-09 14:41 robert - - * bitstream.c: - - fixed debugging code - -2000-09-09 11:40 takehiro - - * newmdct.c: - - sorry, back to old... - -2000-09-09 11:22 robert - - * quantize.c: - - BUG fix for possible endless loop in RH_AMP code - -2000-09-09 10:59 takehiro - - * newmdct.c: - - bit faster mdct. - there's some difference caused by rounding problem, but i think this is OK. - -2000-09-09 10:34 takehiro - - * bitstream.c: - - bit faster putbits - -2000-09-09 10:28 takehiro - - * bitstream.c: - - small fix of debugging code - -2000-09-08 19:28 robert - - * quantize.c: - - to combine VBR_rh with VBR_mt define RH_VBR_MTRH at compile time - -2000-09-08 16:05 robert - - * quantize.c, quantize_pvt.c, quantize_pvt.h: - - merging branches pfk1 with main - -2000-09-08 14:55 robert - - * gtkanal.h, quantize.c, quantize_pvt.c, quantize_pvt.h, - vbrquantize.c: - - set_pinfo calcs noise and masking of its own - -2000-09-08 12:17 robert - - * parse.c, quantize.c, quantize_pvt.c, quantize_pvt.h, takehiro.c, - vbrquantize.c: - - substitution of lame_global_flags with lame_internal_flags - -2000-09-08 11:22 robert - - * parse.c: - - Bug fix for automatic file type recognition back into MAIN branch - -2000-09-08 10:04 shibatch - - * psymodel.c: - - A minor bugfix of mask_add(). - -2000-09-07 23:37 pfk - - * mlame_corr.c: - - - - file to use with mlame to select different modes by pre analysing wav files. - -2000-09-07 18:06 afaber - - * mpglib/mpglib.dsp: - - Cleanup project file a bit - -2000-09-07 18:05 afaber - - * README.WINGTK: - - Small modification to the instruction, in order to compile/link with latest GTK/GDK libs - -2000-09-07 18:04 afaber - - * lame.dsp: - - Changed project file to work with latest GTK/GDK libs - -2000-09-07 17:40 afaber - - * Dll/BladeMP3EncDLL.c: - - Fixed problem in VBR WriteTag function (it did not compile, MP3 file stream was not closed properly, wrong file name was used) - -2000-09-07 12:26 shibatch - - * psymodel.c, quantize_pvt.c: - - Tweaks to --nspsytune. - -2000-09-06 23:19 robert - - * quantize.c (pfk1): - - modularization and clean-up finished - -2000-09-06 18:02 markt - - * Makefile (pfk1): - - [no log message] - -2000-09-06 07:50 shibatch - - * psymodel.c, quantize_pvt.c: - - updated --nspsytune. - -2000-09-06 07:15 markt - - * Makefile, amiga_mpega.c, bitstream.c, brhist.c, fft.c, fft.h, - get_audio.c, get_audio.h, gtkanal.c, gtkanal.h, lame.c, lame.h, - main.c, mp3rtp.c, newmdct.c, newmdct.h, parse.c, psymodel.c, - psymodel.h, quantize.c, quantize_pvt.c, quantize_pvt.h, - reservoir.c, tables.c, tables.h, takehiro.c, timestatus.c, - util.c, util.h, vbrquantize.c, version.c, version.h, - vorbis_interface.c, mpglib/common.c, mpglib/decode_i386.c, - mpglib/huffman.h, mpglib/interface.c, mpglib/l2tables.h, - mpglib/layer1.c, mpglib/layer2.c, mpglib/layer3.c, mpglib/main.c, - mpglib/mpg123.h: - - LAME CVS reverted back to Aug 30 version. - - code before this can be checked out with: - cvs update -r pfk1 - -2000-09-05 23:55 pfk - - * HACKING, Makefile, TODO, get_audio.c, lame.c, lame.h, mlame, - parse.c, version.h, mpglib/README, mpglib/huffman.h, - mpglib/layer1.c, mpglib/layer2.c: - - - HACKING: add type proposals - Makefile: layer 1 enabled - mlame: flaw removed - get_audio: C-Linkage problem solved - layer1.c: bug fixed - disabled decoding enabled, works for C/C++ - huffman.c: read protect/scope protect tables using 'const'/'static' - lame.h: Starting RPC support, 3 macros IN/OUT/INOUT defined - Starting supported for szip compressed wave/aiff - parse.c: detection of raw/wav/aiff input (proposal of RH) - boolean bug fixed !=||!=||!= - layer2.c: common layer1/layer2 buffer moved from layer2.c to layer1.c - lame.c: bug fixed: -V9 switched to mono - Auto switch to mono reported wrong compression ratio - report of forced joint stereo usage - - *: Some spelling errors removed - -2000-09-05 22:20 robert - - * quantize.c: - - more modularization and clean-up, some few more to come - -2000-09-05 20:39 shibatch - - * psymodel.c: - - Tweaks to --nspsytune(table optimization). - -2000-09-05 16:36 cisc - - * parse.c, mpglib/common.c, mpglib/interface.c, mpglib/l2tables.h, - mpglib/layer1.c, mpglib/layer2.c, mpglib/layer3.c: - - quick fix to make mpglib compile, prolly still broken though. fixed mono bug in layer1.c? - -2000-09-04 23:17 shibatch - - * psymodel.c: - - Tweaks to --nspsytune. - -2000-09-04 19:56 robert - - * quantize.c: - - more cleanup in VBR_rh - -2000-09-04 16:05 robert - - * quantize.c: - - more modularization work - - it is now possible to combine VBR_RH with VBR_MT - -2000-09-03 22:33 cisc - - * brhist.c: - - small change - -2000-09-03 19:10 robert - - * quantize.c: - - updated remarks - -2000-09-03 17:21 pfk - - * get_audio.c, gtkanal.c, lame.h, main.c, mp3rtp.c, parse.c, - util.c, util.h, version.h: - - - - some bugfixes, move some functionality to two simple functions. - - Added support of 24 and 32 bit BE and LE AIFF and WAV files - (simple support, only using upper 16 bit) - - marking 3 areas which seems to be buggy. - -2000-09-03 17:19 robert - - * quantize.c, quantize_pvt.c, quantize_pvt.h, takehiro.c, - vbrquantize.c: - - code cleanup in quantize_pvt.c - -2000-09-03 15:06 robert - - * lame.c, quantize.c, quantize_pvt.c, quantize_pvt.h, takehiro.c, - vbrquantize.c: - - takehiro.c now free of lame_global_flags - -2000-09-03 14:05 robert - - * quantize.c, quantize_pvt.c, quantize_pvt.h: - - code clean up - -2000-09-03 13:06 pfk - - * Makefile, brhist.c, get_audio.c, get_audio.h, gtkanal.c, lame.c, - lame.h, main.c, version.c, version.h: - - - - minor fixes - - get_audio: (simple) support of 24 bit PCM - Replaced the different types of tabs by 3, 4 or 8 spaces - -2000-09-03 12:42 shibatch - - * psymodel.c: - - Tweaks to --nspsytune. - -2000-09-03 11:47 shibatch - - * psymodel.c, quantize_pvt.c: - - Tweaks to --nspsytune. Noise calculation using tonality is canceled. - -2000-09-03 09:54 robert - - * tables.c: - - fix for i386/choose_table.nas, could not be linked - -2000-09-03 06:50 cisc - - * lame.c: - - removed *extremely* annoying debug. fixed related bug? should be checked if mono encoding still works! - -2000-09-03 06:48 cisc - - * get_audio.c: - - fixed conflicting prototype when LIBSNDFILE is defined - -2000-09-02 18:06 robert - - * quantize_pvt.c: - - small fix to previous check in - -2000-09-02 18:03 robert - - * gtkanal.h, quantize.c, quantize_pvt.c, quantize_pvt.h, - vbrquantize.c: - - set_pinfo does now the noise calculation for the frame analyzer - code cleanup - -2000-09-02 15:36 pfk - - * mlame: - - - - extended functionality and feature fix - -2000-09-02 13:36 pfk - - * main.c: - - - - bug fix. - -2000-09-02 13:28 pfk - - * get_audio.c, main.c: - - - - Bug fix in final fwrite(). - -2000-09-02 06:38 cisc - - * util.h: - - warning and error fixes - -2000-09-02 05:42 cisc - - * mpglib/mpg123.h: - - It's important to remember the PARENT_IS_SLASH define when including files from previous dir. - -2000-09-02 05:29 cisc - - * amiga_mpega.c, lame.c, util.c: - - warning and error fixes - -2000-09-02 03:13 pfk - - * Makefile, get_audio.c, gtkanal.c, lame.c, lame.spec, psymodel.h, - timestatus.c, util.c, util.h, vbrquantize.c, version.c, - version.h, mpglib/l2tables.h, mpglib/layer2.c, mpglib/mpg123.h: - - - - Quick and Dirty: Now compilable with g++. - - Layer 1 and 2 decoding makes problems. - - structs and typedef structs with the same name. - Must be patched. - -2000-09-02 01:03 cisc - - * psymodel.c, quantize_pvt.c, timestatus.c: - - warning fixes - -2000-09-01 23:28 pfk - - * Makefile, lame.c, lame.h, util.c, util.h, mpglib/layer1.c, - mpglib/layer2.c: - - - - Bugfix for 9 kbps error - -2000-09-01 23:28 robert - - * get_audio.c: - - small typo in remark - -2000-09-01 20:21 pfk - - * bitstream.c, get_audio.c, gtkanal.c, gtkanal.h, lame.c, lame.h, - newmdct.c, psymodel.c, quantize.c, quantize_pvt.c, reservoir.c, - tables.c, tables.h, util.c, util.h, vbrquantize.c, version.h, - mpglib/common.c, mpglib/interface.c, mpglib/layer1.c, - mpglib/layer2.c, mpglib/layer3.c, mpglib/main.c, mpglib/mpg123.h: - - - - * A lot of minor changes - - * Changed the name of structure element from 'stereo' to 'channels' - if it has the meaning of 'channels'. This is so confusing, so that - there are some bugs in lame. - - Rest read in 'Bad and worse programming styles' and 'job security' - - -- - Frank Klemm - -2000-09-01 16:19 robert - - * lame.c: - - small fix, lame -v x.wav did not work anymore - -2000-09-01 04:04 cisc - - * amiga_mpega.c: - - some warning and error fixes - -2000-09-01 04:03 cisc - - * LICENSE: - - libsndfile is now LGPL - -2000-09-01 00:05 pfk - - * brhist.c, lame.c, parse.c, quantize.c, util.c, util.h, version.c: - - - - presets modified - changed name of bitrate_table to index_to_bitrate - added table bitrate_to_index, speedup of functions using it. - -2000-08-31 21:33 pfk - - * Makefile, amiga_mpega.c, fft.c, fft.h, get_audio.c, get_audio.h, - gtkanal.c, lame.c, lame.h, main.c, mp3rtp.c, newmdct.c, - newmdct.h, psymodel.c, psymodel.h, quantize_pvt.c, util.c, - util.h, version.c, version.h, vorbis_interface.c, - mpglib/decode_i386.c, mpglib/main.c: - - - - Introduction of the type sample_t for PCM samples. - 'short' should not be used in the future. - -2000-08-31 11:06 shibatch - - * psymodel.c: - - minor bugfix of mask_add(). - -2000-08-30 23:29 pfk - - * LICENSE, PRESETS.draft, bitstream.c, lame.c, parse.c, - timestatus.c, util.h, version.c, version.h: - - [no log message] - -2000-08-30 07:18 shibatch - - * quantize_pvt.c: - - Tweaks to --nspsytune. - -2000-08-29 22:35 pfk - - * debugscalefac.c, get_audio.c, id3tag.c, lame.c, lame.h, parse.c, - util.c, util.h, version.c, version.h, doc/html/switchs.html: - - [no log message] - -2000-08-29 10:14 shibatch - - * psymodel.c, quantize_pvt.c: - - Tweakings to --nspsytune. - Tonality table is optimized a little. - Noise calculation now uses tonality. - NSATHSCALE is decreased from 103 to 100. - -2000-08-28 20:18 robert - - * lame.c: - - small tweak to RH_VALIDATE_MS - -2000-08-28 19:55 robert - - * lame.h, parse.c, psymodel.c: - - small fixes - -2000-08-28 19:27 shibatch - - * psymodel.c: - - Tweaks to the tonality table. vbrtest.wav is now encoded correctly with --nspsytune. - -2000-08-28 18:37 pfk - - * lame.h, parse.c, version.c, version.h: - - - - parse.c: presets are taken from a table - version.c: version incremented (should be done more often) - -2000-08-28 10:04 shibatch - - * parse.c, quantize_pvt.c, psymodel.c: - - - Changes to --nspsytune. - -2000-08-27 11:51 robert - - * lame.c: - - tweak to validate MS switching criterion (to be enabled with RH_VALIDATE_MS) - -2000-08-27 04:34 markt - - * parse.c: - - look for .mp3 or .MP3 when parsing input filename - -2000-08-26 04:07 markt - - * Makefile: - - openBSD tweak - -2000-08-26 04:06 markt - - * Makefile (debug): - - tweak for Open BSD - -2000-08-26 04:03 markt - - * Dll/BladeMP3EncDLL.h: - - added include sys/types to BlaceMP3EncDLL.h - Borland compiler needs definitions for BOOL and DWORD. - -2000-08-24 20:34 robert - - * quantize.c: - - little tweak to VBR-old, side channel gets now a little lower bit skeleton - -2000-08-23 23:08 robert - - * Makefile, lame.c, quantize.c, quantize_pvt.c: - - sfb21 kludge, only VBR tries to get an undistorted sfb21 - at lower sample frequencies it makes more trouble than - we can gain from that, so now sfb21 will be ignored in - VBR mode for MPEG-2 LSF. - - first tweak (not enabled) for M/S switching criterion - -2000-08-23 00:02 markt - - * lame.c, vorbis_interface.c: - - messages about filters, vorbis modes - -2000-08-22 18:29 markt - - * lame.c, util.h: - - moved last_time into lame_internal_flags struct - -2000-08-22 16:30 markt - - * get_audio.c: - - byte swapping code now only used for 16 bit input files. - -2000-08-22 03:19 markt - - * lame.c: - - minor gtkflag changes - -2000-08-22 00:08 pfk - - * get_audio.c, parse.c: - - - - get_audio.c: - Support of reporting all supported input file types. - -2000-08-21 20:16 robert - - * lame.c: - - pe_MS was not initialized in case we don't use our psychoacoustic model - -2000-08-21 16:02 robert - - * lame.c, mpglib/main.c: - - LayerI+II LSF corrections - -2000-08-21 15:47 markt - - * doc/html/: contributors.html, history.html, id3.html, index.html, - switchs.html: - - updated docs from Gabriel - -2000-08-21 05:32 markt - - * Makefile (debug), USAGE, vorbis_interface.c: - - added support for the four new vorbis modes. (higher bitrates) - use with the -b option. - -2000-08-21 04:52 markt - - * main.c, mp3rtp.c, Dll/BladeMP3EncDLL.c: - - Fixed problem with writing VBR tag if user renames mp3 output - file during the encoding. - -2000-08-21 00:40 markt - - * lame.c, lame.h, main.c, mp3rtp.c: - - more prep work for vbr tag problem - -2000-08-21 00:28 markt - - * VbrTag.c, VbrTag.h, lame.c: - - prep work to fix Vbrtag when user renames mp3 file during encodiing. - -2000-08-21 00:05 markt - - * main.c, testcase.mp3: - - fixes to main.c: it is supposed to be example code for how to - use the LAME library - it should only include lame.h, all other - .h files are supposed to be private to the encoding library. - -2000-08-21 00:00 markt - - * INSTALL, Makefile, Makefile.B32, Makefile.DJGPP, Makefile.MSVC, - README.B32, TODO, bitstream.c, gtkanal.c, lame.c, lame.dsp, - quantize-pvt.c, quantize-pvt.h, quantize.c, quantize_pvt.c, - quantize_pvt.h, takehiro.c, vbrquantize.c, Dll/MP3EncDll.dsp: - - changed quantize-pvt.c to quantize_pvt.c - Added Boland stuff_ - -2000-08-20 23:21 markt - - * Makefile, version.h: - - Amiga stuff for Makefile, updated version.h to 3.87alpha - -2000-08-20 21:22 afaber - - * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: - - enhanced lame_enc dll debugging - -2000-08-20 20:50 robert - - * lame.c: - - fixed bug for LSF, - ms_ratio will not be calculated for the second granule - because at lower sample rates there is no second granule - but the M/S switching criterion relies ms_ratio on it - -2000-08-19 10:54 robert - - * lame.c, parse.c, mpglib/main.c: - - total frames of LayerI files was not correctly estimated for decoding - -2000-08-18 18:07 robert - - * USAGE, get_audio.c, gtkanal.c, lame.c, lame.h, parse.c, - mpglib/main.c: - - LayerI+II decoding patches - -2000-08-18 01:40 pfk - - * bitstream.c, brhist.c, lame.c, main.c, parse.c, timestatus.c, - timestatus.h: - - - - bitstream.c: Table based CRC calculation code added (must be enabled to use) - brhist.c: Enlighted design of the bit rate history output - main.c: init of CRC Table in bitstream.c - parse.c: Some parameters can be name in Hz/bps and in kHz/kbps - timestatus.c: Enlighted design of the time counters - lame.c: Changed screen update frequency from 50/100 frames to 2 seconds - -2000-08-17 14:34 robert - - * Makefile, Makefile.DJGPP, Makefile.MSVC, mpglib/common.c: - - Layer1/2 related update - -2000-08-16 17:05 robert - - * Makefile.MSVC: - - added GTK support (frame analyzer) - -2000-08-16 01:22 afaber - - * parse.c, mpglib/common.c, mpglib/interface.c, mpglib/l2tables.h, - mpglib/layer1.c, mpglib/layer1.h, mpglib/layer2.c, - mpglib/layer2.h, mpglib/mpg123.h, mpglib/mpglib.dsp: - - Added support for Layer 1 and Layer 2 decoding - -2000-08-15 19:31 robert - - * Makefile, lame.c, takehiro.c, util.h: - - patch to prevent core dump in case big value = 576 in count_bits_long() - -2000-08-13 13:44 afaber - - * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h, Example.cpp, - LameDLLInterface.htm: - - Added Lame presets to the DLL interface + added HTM document how to use the lame_enc.dll interface - -2000-08-13 02:50 afaber - - * Dll/: Example.cpp, Example.dsp, Example.dsw, MP3EncDll.dsp: - - Added DLL Example - -2000-08-12 15:42 robert - - * quantize.c: - - major speed increase for vbr-old - -2000-08-11 20:53 robert - - * psymodel.c: - - RH_AMP tweak, improves vbrtest.wav - -2000-08-08 21:08 afaber - - * Dll/BladeMP3EncDLL.c: - - Add new RecordItem array, not completely finsihed yet, but it compiles - -2000-08-08 20:11 cisc - - * psymodel.c, takehiro.c: - - code cleanup - -2000-08-08 04:01 markt - - * Makefile: - - Dec Alpha makefile fix - -2000-08-07 18:24 robert - - * Makefile, lame.c, quantize-pvt.c, quantize.c: - - code cleanup - -2000-08-07 05:53 markt - - * takehiro.c: - - code cleanup in count_bits_long() - -2000-08-07 00:00 markt - - * Makefile (debug), doc/html/history.html, mpglib/interface.c, - mpglib/layer3.c: - - bug fixed in mpglib error recovery from corrupt frames - -2000-08-06 22:58 markt - - * get_audio.c, testcase.mp3: - - oops, one bug in 3.86beta. try and change this before - anyone downloads source from the web site :-) - -2000-08-06 22:34 markt - - * get_audio.c, version.h, doc/html/history.html: - - lame 3.86 beta release - -2000-08-06 21:34 markt - - * lame.c, lame.h, testcase.mp3: - - disabled scalefac_scale (except if -q1 is used) - and make old vbr mode the default - -2000-08-06 20:58 markt - - * quantize-pvt.c, testcase.mp3: - - Reverted back to original definition of over_noise and tot_noise: - - tot_noise = is really the average over each sfb of: - [noise(db) - allowed_noise(db)] - - and over_noise is the same average, only over only the - bands with noise > allowed_noise. - -2000-08-06 20:32 markt - - * mpglib/main.c: - - Album ID tag reading bug fixes - -2000-08-06 20:21 markt - - * INSTALL, USAGE, lame.c, lame.h, parse.c, quantize-pvt.c, - takehiro.c, timestatus.c, timestatus.h, util.h, vbrquantize.c, - Dll/MP3export.pas, Dll/README: - - added the "--athlower n" option which lowers the ATH by n db. - - Added possible fix for region0_count and region1_count getting - set to illegal negative values. - -2000-08-03 20:07 robert - - * Makefile, lame.c, lame.spec, quantize-pvt.c, quantize.c: - - don't worry Mark! my noise calculation wrapped by RH_NOISE_CALC - define RH_NOISE_CALC at compile time to get my version of noise - calculation - - special: - -Y amp_scalefac_bands will amplify only the maximum distorted band - -2000-08-01 06:36 markt - - * INSTALL, bitstream.c: - - added a few assert's - -2000-08-01 04:53 markt - - * quantize.c: - - Fixed amp_scalefac_bands (RH found this) - -2000-08-01 04:38 markt - - * get_audio.c, util.c, util.h, mpglib/main.c: - - updated lame --decode to read Roel's AID stuff - -2000-07-31 19:17 markt - - * Makefile (debug), INSTALL, Makefile.DJGPP, lame.spec: - - updated debug makefile - -2000-07-31 19:00 markt - - * Makefile, TODO, USAGE: - - open bsd updates to makefile - -2000-07-31 18:46 markt - - * quantize.c, takehiro.c, testcase.mp3: - - Takehiro's best_huffman_divide turned back on - for MPEG1 only - -2000-07-31 18:38 markt - - * quantize-pvt.c, quantize-pvt.h, quantize.c, takehiro.c: - - many commits were made over the weekend. But: - - 1. MPEG2 encoding was broken - 2. all my test cases failed. - - #11 is bad. #2 can be caused be general improvements, but - coupled with #1 is a bad sign. - - I spent all of sunday tracking down the many changes, and trying - to find what what the cause of what. I finally ran out of time - and am going to revert some changes back to last working copy. - - Here is a summary: - - takehiro.c: newest version, except: - count_bits_long uses old code (new code commented out). - This code was breaking MPEG2 - - scfsi: uses old slen1_n, slen2_n. I will change this - with the next commit. (in about 10min) - - best_huffman_divide: short block code breaks MPEG2. - short block code is still there, but disabled. - - quantize-pvt.c: Newest version, except: - - all noice calculations reverted back to db. - tot_noise, over_noise, ave_noise, etc. are given in db - and will always be given in db. - - distort[], is left in units of energy, since this saves - many log10() function calls. - - quantize.c : Reverted back to last working version, except - have newest version of VBR_iteration_loop(). - -2000-07-31 00:36 robert - - * psymodel.c: - - revert back to previous version, - it creept in by accident - -2000-07-30 23:48 robert - - * lame.c, psymodel.c, quantize.c: - - minor tweaks - -2000-07-29 22:37 robert - - * lame.bat: - - long file names on in for, thanks to Ihárosi Wiktor - -2000-07-27 16:42 takehiro - - * bitstream.c: - - minor change - -2000-07-27 16:41 takehiro - - * quantize.c, vbrquantize.c: - - make the short block huffman coding more efficient - -2000-07-27 16:39 takehiro - - * machine.h: - - oops MMX code couldn't compile... - -2000-07-27 16:38 takehiro - - * fft.c: - - removed unused code - -2000-07-27 16:38 takehiro - - * takehiro.c: - - restore old algorithm temporary... - -2000-07-26 13:56 takehiro - - * newmdct.c: - - minor coding hack and prepare for GOGO's subband filtering code - -2000-07-26 13:47 takehiro - - * quantize-pvt.c, quantize-pvt.h, takehiro.c, util.h: - - debug for region0/1 which kzmi reported - -2000-07-26 13:25 takehiro - - * machine.h, quantize-pvt.h, takehiro.c: - - i hope this fix make intel native asm code available on VC - -2000-07-25 22:28 robert - - * quantize.c: - - possible endless loop for different -X modes fixed, - some modes do not minimize "over" and would never - reach over == 0 in some rare cases - -2000-07-25 20:39 robert - - * quantize.c: - - small "fast encode" fix - -2000-07-25 20:09 robert - - * Makefile: - - fixed typo - -2000-07-25 19:24 robert - - * quantize-pvt.c, quantize-pvt.h, quantize.c: - - fixed somehow messed up noise calculation - -2000-07-25 15:42 robert - - * quantize.c: - - small bug fix - -2000-07-24 23:50 cisc - - * get_audio.c: - - small fix - -2000-07-24 23:32 cisc - - * USAGE, get_audio.c: - - Changed lame_decoder() to write native endian format when not writing WAV header (-x will byteswap). - -2000-07-24 20:31 markt - - * quantize.c: - - removed some print statements - -2000-07-24 20:30 markt - - * quantize-pvt.c, quantize.c, takehiro.c: - - fixed rare bug with -X0 getting stuck in a loop when over>0 and - over and over_noise didn't change from one iteration to the next. - -2000-07-24 05:51 markt - - * parse.c: - - updated docs - -2000-07-24 05:42 markt - - * USAGE, get_audio.c, gtkanal.c, lame.h, parse.c: - - -t: disables Xing header for encoding, - disables WAV header for decoding - -2000-07-21 17:39 markt - - * Makefile, vorbis_interface.c: - - vorbis interface fixes - -2000-07-21 17:09 markt - - * INSTALL, Makefile.DJGPP, README.DJGPP: - - updated some DJGPP stuff - -2000-07-21 16:50 markt - - * VbrTag.c, encoder.h, get_audio.c: - - added some comments about decoder/encoder delay, - -2000-07-20 04:29 kzmi - - * machine.h: - - add mingw32 support. using windows.h. - -2000-07-20 04:28 kzmi - - * Makefile: - - add non-UNIX environment support. (NOUNIXCMD) - specifying UNAME,ARCH,PGM on command line is available. - -2000-07-19 23:19 robert - - * vbrquantize.c: - - oops, fixed typo - -2000-07-19 22:42 robert - - * vbrquantize.c: - - fixed problem with Roel's clips.wav file, - "pseudo endless loop" problem now gone - maybe the annoying spikes too? - -2000-07-18 22:57 robert - - * vbrquantize.c: - - moved calc_xmin out of VBR_noise_shaping - moved xr34 calculation out of VBR_noise_shaping - changed analog silence detection from granule based to frame based - hacked in a first digital silence treatment per granule (can be optimized) - - round about 8 percent faster on my Pentium 200 machine - -2000-07-18 00:09 markt - - * lame.c: - - moved some stuff into lame_init() - -2000-07-17 23:36 robert - - * vbrquantize.c: - - to make someone happy ;) - -2000-07-17 23:28 markt - - * lame.c: - - Changes from Kimmo: split lame_init_params() into 3 smaller - routines. This somehow fixes some crashes on PPC (which OS?). - -2000-07-17 23:10 markt - - * USAGE, lame.c, machine.h, main.c, quantize.c, util.c, - mpglib/common.c, mpglib/mpg123.h: - - Mac patches. (in an #ifdef macintosh) - -2000-07-17 15:38 robert - - * vbrquantize.c: - - analog silence treatment like in old VBR - -2000-07-16 02:16 robert - - * quantize.c: - - minor tweaks - -2000-07-15 19:20 robert - - * quantize.c: - - OK found what was wrong, should work now - -2000-07-15 17:55 markt - - * Makefile, lame.c, quantize.c: - - Reverted back to older version of quantize.c becuase - version 1.137 broke some of my CBR test cases. - - made scalefac_scale always on for all vbr modes - -2000-07-15 16:49 robert - - * lame.c, quantize.c: - - Takehiro's scalefac_scale now default for old-VBR, no more -q1 necessary - -2000-07-15 04:55 markt - - * Makefile: - - updated makefile for Dec Alpha Linux - -2000-07-14 20:06 markt - - * USAGE, lame.h: - - c++ name mangling fix, type in USAGE - -2000-07-12 18:03 robert - - * util.c, util.h: - - critical band width formula added - -2000-07-11 02:25 markt - - * vbrquantize.c: - - tuning for vbr_mt to fix chirp from John Dalton - -2000-07-11 00:47 markt - - * quantize.c: - - better tuning for ABR mode - -2000-07-11 00:31 markt - - * gtkanal.c, quantize-pvt.c, quantize.c, vbrquantize.c, - mpglib/main.c: - - bug in frame analyzer (causes hangs near eof) fixed - better resyncing during mp3 file initialization in mpglib - -2000-07-10 23:03 markt - - * lame.c, main.c, parse.c, reservoir.c, testcase.mp3, - vbrquantize.c: - - tuned new VBR so Roel will be happy :-) - -2000-07-10 00:24 markt - - * timestatus.c: - - timestatus overflow fix - -2000-07-09 20:05 markt - - * Makefile.DJGPP, README.DJGPP, quantize-pvt.c, quantize.c: - - more updated for DJGPP - -2000-07-09 13:19 shibatch - - * fft.h: - - I forgot to commit fft.h. (by Naoki Shibata) - -2000-07-09 13:16 shibatch - - * fft.c, lame.c, lame.h, parse.c, psymodel.c, quantize-pvt.c: - - Added --nspsytune command line option. This should solve vbrtest problem. (By Naoki Shibata) - -2000-07-09 03:22 gramps - - * parse.c: - - additional help for ID3-style comments in Ogg Vorbis output from a patch by Ralph Giles - -2000-07-09 03:20 gramps - - * lame.c: - - don't add ID3 tags to Ogg Vorbis output - -2000-07-09 03:18 gramps - - * vorbis_interface.c: - - partial support for ID3-style comments from a patch by Ralph Giles - -2000-07-08 15:08 robert - - * quantize.c: - - long time BUG in old VBR fixed, preventing LAME from using more than 2500 bits per channel - -2000-07-08 00:39 markt - - * README.DJGPP, get_audio.c: - - 8bit .wav files supported. - -2000-07-07 22:44 markt - - * Makefile: - - Updateted Makefile for alpha/linux - -2000-07-07 21:42 robert - - * quantize-pvt.h, quantize.c: - - little VBR-old speed up (upto 10%) - -2000-07-07 20:09 markt - - * Makefile.DJGPP, README.DJGPP: - - updated DJGPP stuff from Chris Wise - -2000-07-07 00:34 robert - - * quantize.c: - - more "old-VBR" tuning - -2000-07-06 22:20 cisc - - * amiga_mpega.c: - - Should now work for GCC. - -2000-07-06 16:54 robert - - * Dll/BladeMP3EncDLL.c: - - DLL uses now the same VBR routine by default as the EXE - -2000-07-05 04:57 markt - - * quantize-pvt.c, timestatus.c: - - minor changes - -2000-07-04 23:52 cisc - - * brhist.c, quantize-pvt.c, takehiro.c: - - code cleanup - -2000-07-04 23:52 gramps - - * id3tag.h, lame.h: - - make id3tag.h dependent on lame.h instead of the other way around - -2000-07-04 22:16 markt - - * lame.h, testcase.mp3, util.h, version.h: - - updated version to 3.86 alpha - -2000-07-04 15:40 robert - - * lame.c, quantize.c: - - old VBR silence bug fixed - -2000-07-04 14:46 robert - - * VbrTag.c: - - oops, 1 bit forgotten - -2000-07-04 03:32 kzmi - - * quantize-pvt.c, quantize-pvt.h, quantize.c, vbrquantize.c: - - old tot_noise and over_noise are obsolete. - tot_avg_noise and over_avg_noise were renamed as tot_noise - and over_noise. - -2000-07-04 03:28 gramps - - * USAGE, VbrTag.c, id3tag.c, id3tag.h, lame.c, lame.h, main.c, - mp3rtp.c, parse.c, doc/html/id3.html: - - ID3 version 2 tag support - -2000-07-03 17:10 robert - - * VbrTag.c: - - keep CRC bit for additional Xing-VBR frame - -2000-07-03 16:21 markt - - * doc/html/history.html: - - [no log message] - -2000-07-03 16:20 markt - - * README.DJGPP, lame.h, psymodel.c, quantize-pvt.c, vbrquantize.c, - version.h: - - lame 3.85 beta release - (old VBR mode back to being the default) - -2000-07-03 00:58 markt - - * Makefile, machine.h, psymodel.c: - - added note about FLOAT8 = float breaking certain features - -2000-07-03 00:57 markt - - * Makefile: - - [no log message] - -2000-07-03 00:48 markt - - * psymodel.c, testcase.mp3: - - updated mid/side demasking thresholds with takehiro's formula - -2000-07-03 00:25 markt - - * psymodel.c, vbrquantize.c: - - more tweakes to ATH/PE calculation. psymodel.c uses additive masking - so ATH needed a *= numlines. - -2000-07-02 23:51 markt - - * psymodel.c: - - added ATH threshold to PE calculation. - -2000-07-02 23:39 markt - - * psymodel.c, quantize-pvt.c, quantize-pvt.h, util.c, util.h, - vbrquantize.c: - - code so that ATH can be used for PE formula - -2000-07-02 21:44 markt - - * Makefile: - - Makefile updated so float8 = double - -2000-07-02 18:40 markt - - * lame.c, quantize-pvt.c, quantize-pvt.h, quantize.c, takehiro.c, - util.c, vbrquantize.c: - - short block re-ording complete! - all routines updated, but not cleaned up: it is now possible - to merge most short block and long block loops - -2000-07-01 22:12 robert - - * lame.c: - - code cleanup - -2000-07-01 21:48 robert - - * util.c: - - integer based padding routine - -2000-07-01 20:37 cisc - - * lame.c, quantize-pvt.h, util.h: - - code cleanup - -2000-07-01 18:12 markt - - * bitstream.c, lame.c, quantize-pvt.c, quantize-pvt.h, quantize.c, - takehiro.c, testcase.mp3, util.c, util.h, vbrquantize.c: - - re-order short blocks data storage. in preperation for takehiro's - asm routines - -2000-07-01 15:23 robert - - * lame.c, quantize-pvt.c, quantize.c: - - old VBR no ATH bug fixed - -2000-07-01 13:51 robert - - * lame.c, quantize-pvt.h, quantize.c, util.c, util.h: - - code cleanup - -2000-07-01 11:26 robert - - * lame.c, lame.h, parse.c, quantize-pvt.c, quantize.c: - - made switch between default VBR modes easier, look into lame.h - -2000-07-01 02:35 markt - - * lame.c, parse.c, version.h: - - 3.85 alpha (CVS) version: new vbr mode is the default - -2000-07-01 02:32 markt - - * parse.c: - - still bugs trying to make 3.84beta release - -2000-07-01 02:16 markt - - * lame.c, parse.c, quantize-pvt.c: - - i screwed up the 3.84 beta release, lets try again. - making old vbr mode the defailt, temporarily - -2000-07-01 02:11 markt - - * Makefile, version.h: - - [no log message] - -2000-06-30 23:32 markt - - * Makefile: - - makefile: -DFLOAT8 is float - -2000-06-30 23:30 markt - - * lame.c, parse.c, version.h: - - ok, back to new vbr mode = default - -2000-06-30 23:28 markt - - * doc/html/history.html: - - [no log message] - -2000-06-30 23:27 markt - - * Makefile, lame.c, parse.c, version.h: - - old vbr mode made the default. --vbr-old and --vbr-new options - can specify which mode. This is just for the next 10min - while I put out lame 3.84. CVS will then revert back to - default = new vbr mode - -2000-06-30 23:15 markt - - * get_audio.c: - - 8 bit input support (maybe works?) - -2000-06-30 14:25 kzmi - - * VbrTag.c, bitstream.c, brhist.c, debugscalefac.c, gtkanal.c, - psymodel.c, quantize-pvt.c, vbrquantize.c, vorbis_interface.c: - - replaced fprintf/printf/exit() functions with macro - -2000-06-27 13:58 kzmi - - * get_audio.c, lame.c, main.c, timestatus.c, timestatus.h: - - replace printf/fprintf/exit() with macro. - decode_progress() and decode_progress_finish() are added - in timestatus.c. these functions are used in lame_decode(). - -2000-06-27 02:23 markt - - * INSTALL, Makefile, TODO: - - minor updates - -2000-06-27 01:18 markt - - * mpglib/layer3.c: - - Sergey's bug fix for layer3.c MPEG2 tables - -2000-06-26 20:47 afaber - - * Dll/MP3EncDll.dsp: - - Version 1.30 beta 1 - -2000-06-26 16:08 markt - - * quantize.c: - - put Roberts ABR -V n settings back in. - -2000-06-26 05:56 markt - - * TODO, lame.c, quantize.c, vbrquantize.c: - - fixed one bug in VBR handling of vbrquantize.c - changed ABR mode: it should not be adjusting masking thresholds - based on quality settings. It doesn't make sense to change the - maskings if the number of bits is fixed. - -2000-06-25 19:07 robert - - * quantize-pvt.h, quantize.c: - - little improvements for experimentalX modes - -2000-06-24 07:49 kzmi - - * parse.c, util.h: - - replace printf/fprintf and exit() in parse.c with macro - -2000-06-24 06:00 kzmi - - * util.h: - - abolished LAME_ASSERT(). - -2000-06-24 05:57 kzmi - - * util.c: - - LAME_ASSERT() macro was removed. It was replaced assert(). - -2000-06-23 14:45 kzmi - - * util.h: - - FLUSH_ERR() --> FLUSH_ERROR() - -2000-06-23 13:59 kzmi - - * util.h: - - new macros used instead of fprintf(), assert(), and exit(). - -2000-06-23 13:53 kzmi - - * util.c: - - Alternative printing function lame_errorf() was added. - It will be called instead of fprintf() by using new macro "ERRORF" - -2000-06-22 20:41 robert - - * lame.c, parse.c: - - minor bugs - -2000-06-22 18:42 robert - - * USAGE, lame.c, parse.c, quantize.c: - - Marks new VBR now the default, old still under there, use --vbr-old - -2000-06-22 17:16 robert - - * lame.c, util.h: - - padding as in "MPEG-Layer3/Bitstream Syntax and Decoding" - -2000-06-22 16:06 robert - - * mpglib/layer3.c: - - table correction, thanks to Sergey Sapelin - -2000-06-21 15:38 afaber - - * machine.h: - - Update project file (added FLOAT8_is_float define) - -2000-06-21 05:04 markt - - * lame.c, lame.h, psymodel.c, psymodel.h, quantize-pvt.c, util.h, - vorbis_interface.c: - - added some return codes, removed some exits - -2000-06-21 01:14 markt - - * brhist.c: - - added brhist display for windows, from mremondini@racine.ra.it - -2000-06-21 00:05 markt - - * machine.h: - - added default settings for FLOAT8 - -2000-06-20 23:34 markt - - * psymodel.c, quantize-pvt.c, util.h: - - added code to compute numlines and bo,bu arrays instead of using - table data - -2000-06-20 13:28 takehiro - - * Makefile, machine.h: - - prepare for architecture depending optimization - -2000-06-19 05:08 markt - - * main.c, parse.c, vorbis_interface.c: - - more vorbis bugs fixed - -2000-06-19 01:10 markt - - * lame.c: - - oops, if (gfc->filter_type=0) statement fixed - -2000-06-18 14:39 markt - - * mpglib/interface.c: - - mpglib: better resyncing code - -2000-06-18 04:34 cisc - - * version.c: - - minor change - -2000-06-18 04:15 cisc - - * takehiro.c: - - Removed redundant return. - -2000-06-18 04:13 markt - - * vorbis_interface.c: - - more ogg updates - -2000-06-18 04:09 markt - - * main.c (ogg), lame.c: - - ogg stuff - -2000-06-18 04:08 cisc - - * version.c: - - Included get_audio.h for prototypes... - -2000-06-18 03:59 cisc - - * version.c: - - Added version-check for libsndfile... - -2000-06-18 03:43 markt - - * Makefile, main.c (ogg), lame.c, version.c: - - ogg updates - -2000-06-17 14:00 robert - - * parse.c, quantize-pvt.c: - - typo in parse.c was disabling -Xn settings - -2000-06-17 04:57 takehiro - - * TODO: - - something added - -2000-06-17 00:35 markt - - * lame.c, psymodel.c, util.h: - - code to compute numlines_[] mostly debugged, but not in use. - only remaining psycho acoustic table data: minval (for long - blocks) and SNR for short blocks. - -2000-06-16 18:17 markt - - * encoder.h, psymodel.c, testcase.mp3, util.h: - - psymodel cleanup, bval[] table lookup replaced with - formulas. Next step: replace numlines with formulas - -2000-06-16 18:03 robert - - * TODO: - - point added - -2000-06-16 17:31 markt - - * psymodel.c, quantize-pvt.c, vbrquantize.c: - - code re-arrangment in psymode.c. In preperation to replace - bval[] from table lookup with formulas. - -2000-06-15 16:45 markt - - * vbrquantize.c: - - bug fix for -Y VBR mode: needed to check for return code - for count_bits for errors. - -2000-06-15 15:56 markt - - * parse.c, vbrquantize.c, vorbis_interface.c, mpglib/interface.c: - - mpglib bug fix from Naoki - -2000-06-15 00:06 markt - - * lame.c: - - scalefac_scale disabled for VBR modes. - -2000-06-14 21:13 markt - - * quantize-pvt.c, quantize-pvt.h, quantize.c, vbrquantize.c: - - A new noise moded(-X 7) and a new structure to keep track - of all the different noise measures, from Iwasa Kazmi - -2000-06-14 21:04 markt - - * lame.c, lame.h, main.c, parse.c, util.c, util.h: - - new FindNearestBitrate routine, return codes for lame_init_params. - -2000-06-14 20:03 markt - - * USAGE, gpkplotting.c: - - font in frame analyzer, updates to USAGE - -2000-06-14 03:15 markt - - * Makefile.MSVC, vorbis_interface.c: - - updated vorbis support (mono, different samplerates) - -2000-06-13 12:42 takehiro - - * bitstream.c, tables.h, takehiro.c: - - minor optimization and debug - -2000-06-13 11:27 takehiro - - * tables.c, takehiro.c: - - completely MMXed choose table routine. faster! - -2000-06-12 05:29 markt - - * psymodel.c, quantize-pvt.c, quantize-pvt.h, quantize.c, - vbrquantize.c: - - added a different FFT->MDCT normalization, disabled. - -2000-06-10 09:38 robert - - * Makefile.MSVC, machine.h: - - vorbis support - -2000-06-10 03:39 cisc - - * quantize-pvt.c, vbrquantize.c: - - Aaargh, and now it suddenly doesn't work anymore, just gives me tons and tons of bitreservoir errors. :P - -2000-06-10 02:43 cisc - - * vbrquantize.c: - - Ooops, fixed redefinition... - -2000-06-10 01:56 cisc - - * quantize-pvt.c, vbrquantize.c: - - TAKEHIRO_IEEE754_HACK works great now, let's put it as default. - -2000-06-10 00:26 markt - - * Makefile, quantize-pvt.c: - - Mat's ROUNDFAC fix. If #define TAKEHIRO_IEEE754_HACK is - used, ROUNDFAC should be set to -0.0946 - -2000-06-10 00:10 markt - - * Makefile, README, USAGE, lame.c, parse.c, quantize.c: - - trivial changes - -2000-06-09 22:54 robert - - * USAGE: - - average bitrate coding (--abr) usage added - -2000-06-09 22:18 robert - - * get_audio.c, lame.c, lame.h, parse.c, quantize.c, quantize.h: - - Safe VBR mode available as --abr x, targetting x kbits - you can use -b and -B switches as usual with VBR - -2000-06-09 20:34 markt - - * get_audio.c, get_audio.h, quantize-pvt.c: - - minor changes - -2000-06-09 01:00 markt - - * tables.c: - - fixed bug in tables.c - -2000-06-09 00:30 markt - - * Makefile: - - [no log message] - -2000-06-09 00:28 markt - - * Makefile, lame.c: - - fix for when compiling without #define HAVEVORBIS - -2000-06-09 00:22 markt - - * INSTALL, Makefile, Dll/MP3EncDll.dsp: - - updated makefiles for VORBIS option - -2000-06-08 23:19 markt - - * USAGE, lame.c, parse.c, vorbis_interface.c: - - .ogg encoding now works. - -2000-06-08 21:15 markt - - * lame.c, vorbis_interface.c: - - more .ogg encoding stuff. still not working - -2000-06-08 20:46 markt - - * Makefile, get_audio.c, gtkanal.c, lame.c, lame.h, parse.c, - vorbis_interface.c: - - --ogg option to produce .ogg files. not yet working - -2000-06-08 06:04 markt - - * API: - - updated API to include HAVEVORBIS info - -2000-06-08 05:59 markt - - * Makefile: - - makefile for libvorbis support - -2000-06-08 05:58 markt - - * Makefile, USAGE, get_audio.c, lame.h, parse.c, - vorbis_interface.c, mpglib/main.c: - - added .ogg file decoding. - Re-encode all your Vorbis files to MP3 !!! - - (or, lame --decode input.ogg output.wav might be usefull) - -2000-06-07 23:36 markt - - * INSTALL, get_audio.c, lame.h, reservoir.c: - - started to add .ogg decoding - -2000-06-07 22:56 sbellon - - * VbrTag.c, get_audio.c, ieeefloat.c, ieeefloat.h, machine.h, - portableio.c, reservoir.c, mpglib/decode_i386.c, mpglib/mpg123.h: - - added support for FPA10 hardware (RISC OS only) - -2000-06-07 22:54 sbellon - - * main.c: - - changed RISC OS file typing code - -2000-06-07 13:26 takehiro - - * lame.spec: - - spec file for RPM. contributed by ramsy@linux.or.jp - -2000-06-05 18:44 markt - - * gpkplotting.c, gtkanal.c: - - updated X windows font selection (thanks Iwasa) - -2000-06-05 17:38 markt - - * testcase.mp3: - - updated testcase - -2000-06-03 05:39 takehiro - - * takehiro.c: - - more aggressive scfsi using and little bit memory optimization - -2000-06-03 02:46 cisc - - * get_audio.c: - - code cleanup - -2000-06-01 18:30 cisc - - * amiga_mpega.c: - - code cleanup - -2000-05-31 21:00 markt - - * quantize.c: - - SAFE_VBR mode fixes - -2000-05-31 20:40 markt - - * USAGE, lame.c, parse.c, psymodel.c, quantize.c: - - SAFE_VBR mode added. not enabled yet - -2000-05-31 19:52 cisc - - * vbrquantize.c: - - code cleanup - -2000-05-31 03:37 cisc - - * timestatus.c: - - code cleanup - -2000-05-31 00:25 robert - - * Makefile: - - [no log message] - -2000-05-31 00:24 robert - - * mpglib/: interface.c, layer3.c, main.c, mpg123.h: - - code cleanup - -2000-05-30 23:47 markt - - * lame.c: - - -f "fast mode" is now a little slower. - - It now *will* compute psycho acoustics, used for total bits - and pre-echo detection. But it will not spend any time - trying to find optimal scalefactors. - -2000-05-30 23:37 markt - - * TODO, bitstream.c, lame.c, takehiro.c, vbrquantize.c: - - fixed scfsi bug in vbrquantize.c - -2000-05-30 22:29 cisc - - * VbrTag.c, bitstream.c, get_audio.c, l3side.h, main.c, - quantize-pvt.c, quantize-pvt.h, util.c: - - code cleanup - -2000-05-30 22:01 cisc - - * takehiro.c, timestatus.c: - - code cleanup - -2000-05-30 20:01 robert - - * VbrTag.c, gtkanal.c, lame.c, newmdct.c, psymodel.c, - quantize-pvt.c, reservoir.c, takehiro.c, timestatus.c, util.c, - util.h, vbrquantize.c, Makefile: - - code cleanup - -2000-05-30 16:01 robert - - * fft.c, get_audio.c, main.c: - - code cleanup - -2000-05-30 15:16 robert - - * bitstream.c, l3side.h, quantize.c, quantize.h, util.h: - - signed/unsigned fixes - -2000-05-30 00:20 markt - - * Makefile: - - updated Makefile comment about Sun OS - -2000-05-30 00:12 markt - - * bitstream.c, psymodel.c, reservoir.c, takehiro.c, vbrquantize.c: - - psymodel.c: yet another loop check added - - vbrquantize.c: best_scalefac_store can change scalefac values. - scalefactors must be saved and restored before each call. - - bitstream.c: added part2_length assert check - -2000-05-29 22:11 cisc - - * get_audio.c: - - Included portableio.h for prototypes. - -2000-05-29 21:49 cisc - - * amiga_mpega.c: - - Skip bad frames. - -2000-05-29 19:59 robert - - * VbrTag.c, get_audio.c, quantize.c, vbrquantize.c: - - compiler warnings fixed - -2000-05-29 17:15 afaber - - * VbrTag.c: - - Private bit was not retained in VBR header, changes masking bit from 0x0c to 0x0d - -2000-05-29 17:14 afaber - - * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: - - Some minor fixes to the DLL inteface, added Write VBR tag prototype - Added LGPL header to *.h file - -2000-05-29 17:12 afaber - - * lame.dsp: - - Set proper defines in the debug mode - -2000-05-29 16:50 markt - - * mpglib/: layer3.c, main.c, mpglib.h: - - parent_is_slash #define, for the Amiga - -2000-05-29 14:39 markt - - * brhist.c, machine.h, psymodel.c, mpglib/interface.c: - - fixed loop problems with large --cwlimit - -2000-05-28 23:48 markt - - * Makefile: - - makefile debug branch - -2000-05-28 23:47 markt - - * Makefile: - - makefile now -O3 (linux) by default - -2000-05-28 23:46 markt - - * Makefile, USAGE, psymodel.c, quantize.c, reservoir.c, - vbrquantize.c, mpglib/interface.c: - - code cleanup - -2000-05-28 06:56 takehiro - - * quantize-pvt.c: - - restored old GCC asm routine - -2000-05-28 05:01 takehiro - - * Makefile, takehiro.c: - - initial MMX implementation attempt.. - use MMX to huffman coding. - -2000-05-27 07:41 takehiro - - * takehiro.c: - - more pseudo SIMD code - -2000-05-27 07:23 takehiro - - * testcase.mp3: - - testcase update for new scalefac_scale - -2000-05-27 07:22 takehiro - - * quantize-pvt.c, quantize-pvt.h, takehiro.c: - - pseude SIMD countbit routine preparing for MMX - -2000-05-27 07:21 takehiro - - * quantize.c: - - oops, foolish typemiss... - -2000-05-27 03:22 takehiro - - * lame.c, quantize.c, version.h: - - scalefac_scale debug and use it as default - new subblock_gain algorithm - (initial release, -Z to enable it, but not works fine) - -2000-05-27 03:08 takehiro - - * newmdct.c: - - minor changing - -2000-05-27 03:06 takehiro - - * quantize-pvt.c, quantize.c, quantize-pvt.h: - - scalefac_scale debug and use it as default - new subblock_gain algorithm - (initial release, -Z to enable it, but not works fine) - -2000-05-26 19:03 markt - - * gtkanal.c, lame.c, vbrquantize.c: - - vbrquantize.c work - -2000-05-26 01:49 cisc - - * amiga_mpega.c, get_audio.c, lame.h: - - Fixed a bunch of errors that must have been committed whilst sleepwalking. ;) - -2000-05-26 00:49 markt - - * get_audio.c, lame.h, main.c: - - moved WAV writing routines and lame_decoder() into get_audio.c - -2000-05-26 00:31 markt - - * main.c: - - another bug in WriteWav - -2000-05-26 00:02 markt - - * main.c, quantize-pvt.c: - - tweaked .wav file output. Fixed small bug in short block bit - allocation (thanks Iwasa!) - -2000-05-25 23:02 markt - - * lame.dsp (MSVC6): - - updated project files MSVC6 tag - -2000-05-25 15:27 markt - - * amiga_mpega.c, get_audio.c, gtkanal.c, lame.h, main.c, - vbrquantize.c, mpglib/interface.c, mpglib/main.c: - - updated frame analyzer to show difference between original/decoded - updated --decode to return bitrate, samplerate, numchannels. - if samplerate or numchannels changes in mp3 stream, --decode will - quite with an error message - -2000-05-24 16:53 markt - - * gtkanal.c, gtkanal.h, quantize-pvt.c, vbrquantize.c, - mpglib/layer3.c: - - tweeks to frame analyzer: added preflag display - -2000-05-24 00:24 cisc - - * get_audio.c: - - Fixed silly bug preventing mp3input working together with libsndfile. - -2000-05-23 04:12 markt - - * bitstream.c, gtkanal.c, quantize-pvt.c, quantize.c, - vbrquantize.c: - - fixed a bug in the frame analyzer: was rescaling axis between plotting - energy, masking and noise - -2000-05-22 18:20 shibatch - - * mpglib/tabinit.c: - - Changed decwin to more precise one. - -2000-05-22 17:11 markt - - * quantize-pvt.c: - - make IEEE stuff the default on GNU i386 - -2000-05-22 13:14 cisc - - * main.c: - - fwrite() returns number of objects actually written - -2000-05-22 05:39 markt - - * main.c: - - fixed bug for mono .wav headers for lame --decode - -2000-05-22 05:27 markt - - * quantize-pvt.c: - - GNU C ASM code is temporarily disabled. - - It looks like Takehiro's changes to 1.107 have broken this code. - -2000-05-22 05:07 markt - - * mpglib/: common.c, interface.c: - - more robust frame resyncing - -2000-05-22 05:07 markt - - * quantize.c, vbrquantize.c: - - more robust mpglib decoding (frame re-syncing) - -2000-05-21 20:54 cisc - - * quantize-pvt.c: - - TAKEHIRO_IEEE754_HACK should not be default - -2000-05-21 20:31 robert - - * parse.c: - - PRESET tunings: - + after we dropped the ISO 7680 bit buffer limit - allow more often 320 kbits frames - + for MPEG2.5 allow more often short blocks - only 8 kHz streams have now problems with - short blocks, so don't use them then - - dropped all highpass filters, cos the - results did not satisfy me - (in my opinion they actually do more harm than good) - - tuned some lowpass filters cos of the sfb21 - noise calculation in VBR - -2000-05-21 19:33 markt - - * l3side.h, parse.c, psymodel.c, quantize-pvt.c, quantize-pvt.h, - quantize.c, quantize.h, reservoir.c, reservoir.h: - - comments and other code cleanup - -2000-05-21 16:42 takehiro - - * quantize.c: - - new scalefac_scale algorithm option changed -Y -> -Z - -2000-05-21 16:25 takehiro - - * quantize.c: - - new scalefac_scale algorithm - -2000-05-21 16:19 takehiro - - * quantize-pvt.h, quantize.c: - - new scalefac_scale algorithm. enables with -Y option. - -2000-05-21 13:15 takehiro - - * quantize-pvt.h: - - VBR bug related sfb22 fixed - -2000-05-21 12:52 takehiro - - * quantize-pvt.c: - - VBR bug related sfb22 fixed - -2000-05-20 23:49 robert - - * quantize-pvt.c, quantize.c: - - minor tweaks - -2000-05-20 23:33 robert - - * quantize.c: - - VBR hack - -2000-05-20 21:05 markt - - * bitstream.c, main.c, mpglib/main.c: - - totbit buffer overflow fix - -2000-05-20 20:57 cisc - - * takehiro.c: - - choose_table() argument is int *, not unsigned * - -2000-05-20 20:36 markt - - * bitstream.c, main.c, util.h, mpglib/main.c: - - mpglib will not decode Xing VBR header. - write_timing changed to unsigned long to allow encoding more - than 4 hours at 128kbs. - -2000-05-20 15:13 markt - - * main.c, takehiro.c: - - .wav output with --decode was putting wrong filesize in - .wav header. - -2000-05-19 23:01 markt - - * quantize-pvt.c, testcase.mp3, version.h: - - updated version.h lame 3.84 alpha (CVS version) - -2000-05-19 20:07 markt - - * doc/html/history.html: - - updated history for 3.83beta - -2000-05-19 20:06 markt - - * version.h: - - lame 3.83beta - -2000-05-19 18:43 markt - - * encoder.h, lame.c: - - possible serious buffering problem fixed. LAME buffers input data until - it has at least 1904 samples. It then starts processing them. - - The old MDCT routines processed 1728 samples and had a delay of 528. - (introduced in 3.54) But the new MDCT routines, because the delay is - so small (48 samples) actually need 2014 samples to be in the buffer! - - If you use the lame input routines, for MPEG1, this bug would - not be found because the buffer always has well over 2014 samples - in it. But it was possible to trigger it in MPEG2 encodings. - It would also be possible to trigger this bug in programs - that use lame_enc.dll and pass LAME data that is not in - chunks of 1152 samples. - -2000-05-19 17:23 markt - - * bitstream.c, lame.c, lame.h, parse.c, psymodel.c, testcase.mp3, - vbrquantize.c: - - tweaks to psymodel initialization - more work on vbrquantize.c - -2000-05-19 01:38 markt - - * bitstream.c, gtkanal.c, l3side.h, lame.c, main.c, psymodel.c, - quantize-pvt.c, takehiro.c, testcase.mp3, vbrquantize.c: - - more work on vbrquantize.c - -2000-05-18 18:50 markt - - * main.c: - - updated decoder to remove initial delay - -2000-05-18 05:38 markt - - * main.c, parse.c: - - lame --decode now outputs .wav files - file length in header is set to 2^32-1, since we dont - really know ahead of time how many samples are in the mp3 file. - -2000-05-17 22:25 markt - - * quantize.c: - - ath lower bug in quantize.c fixed - -2000-05-17 22:08 markt - - * quantize-pvt.c: - - calc_noise1 will compute noise (and related info) for - last scalefactor band - -2000-05-17 21:33 markt - - * quantize-pvt.c, takehiro.c: - - frame analyzer displays more data in scalefactor band 22 - -2000-05-17 19:50 markt - - * gtkanal.h, quantize-pvt.c, quantize-pvt.h, quantize.c, - vbrquantize.c: - - modified frame analyzer to show last scalefactor band, - energy and masking (from the ATH). distortion is not yet - calculated in this band. - -2000-05-17 18:08 markt - - * gtkanal.c, l3side.h, quantize-pvt.c, quantize.c, util.h: - - Possible fix for recent VBR/sweep bug: - min bitrate not strictly enforced with -F, and - analog silence was only being computed up th 16khz. - -2000-05-17 17:16 markt - - * USAGE, brhist.c, get_audio.c, lame.c, lame.h, main.c, quantize.c, - reservoir.c, util.c, util.h, vbrquantize.c: - - moved framenum, totalframes into lame.h (so programs which - use libmp3lame can compute statis info.) - -2000-05-15 14:34 takehiro - - * newmdct.c: - - more coding hack. - -2000-05-14 23:38 cisc - - * newmdct.c: - - Changed M_PI to PI - -2000-05-14 08:12 takehiro - - * newmdct.c: - - Naoki's short block mdct - and more my coding hack for mdct - -2000-05-14 05:51 takehiro - - * newmdct.c, util.h: - - mdct_long coding hack - -2000-05-12 11:59 robert - - * util.h, lame.c, newmdct.c: - - code cleanup - -2000-05-12 09:51 takehiro - - * newmdct.c, doc/html/history.html: - - more work in mdct_long and window_filtering - -2000-05-12 05:03 markt - - * testcase.mp3: - - updated testcase.mp3 - -2000-05-12 05:02 markt - - * version.h: - - updated version to 3.83 alpha - -2000-05-12 05:01 markt - - * API, README, version.h, doc/html/history.html: - - version 3.83 - -2000-05-10 13:55 takehiro - - * quantize-pvt.c: - - dirty hack for IEEE 754 FPU - -2000-05-09 16:31 afaber - - * Dll/BladeMP3EncDLL.c: - - Fixed problem with build date string, temp string was not initialized properly (was missing a terminator character) - -2000-05-09 11:30 takehiro - - * newmdct.c: - - Naoki's mdct_long with my coding hack. - -2000-05-09 02:45 cisc - - * API, brhist.c: - - Added NOTERMCAP define and changed brhist.c accordingly. - -2000-05-08 22:48 markt - - * testcase.mp3: - - [no log message] - -2000-05-08 22:41 markt - - * quantize-pvt.c, doc/html/history.html: - - updated side channel 320kbs fix - -2000-05-08 22:30 robert - - * Makefile, quantize-pvt.c: - - M/S reduce_side bug fixed, - nonISO buffer mode should work now for - 320 kbits MS streams too - -2000-05-08 19:55 afaber - - * Dll/BladeMP3EncDLL.c: - - Bumped up version number of DLL version library, fixed some of the debugging code - -2000-05-08 17:46 markt - - * doc/html/: contributors.html, examples.html, id3.html, - index.html, lame.css, node5.html, node6.html, switchs.html: - - updated docs from Gaby - -2000-05-08 17:40 markt - - * version.h: - - 3.82 alpha(CVS) version - -2000-05-08 17:38 markt - - * version.h, doc/html/history.html: - - 3.81beta release - -2000-05-08 17:31 markt - - * Makefile, USAGE, VbrTag.c, brhist.c, lame.h, parse.c, - reservoir.c, util.c: - - removed ISO buffer limitation, added --strictly-enforce-ISO option - -2000-05-08 00:06 markt - - * quantize-pvt.c, reservoir.c, vbrquantize.c: - - started work on vbrquantize.c - -2000-05-07 11:09 robert - - * Makefile, Makefile.MSVC, lame.c, parse.c: - - -F option now working, - updated Makefile for DOS - -2000-05-07 03:59 takehiro - - * newmdct.c, util.h: - - new IDCT32 routine from Naoki and optimized by me. - and more thread safe coding. - -2000-05-06 22:20 markt - - * testcase.mp3: - - updated testcases - -2000-05-06 22:20 markt - - * l3bitstream-pvt.h, lame.dsp, Dll/MP3EncDll.dsp: - - updated project files (for removal of ISO code) - -2000-05-06 22:18 markt - - * Makefile, VbrTag.c, VbrTag.h, formatBitstream.c, - formatBitstream.h, l3bitstream.c, l3bitstream.h, lame.c, - quantize.c, util.c, util.h, vbrquantize.c: - - removed all ISO code - -2000-05-06 22:09 markt - - * version.h: - - updated version to 3.81 alpha 1 (CVS version) - -2000-05-06 22:07 markt - - * Makefile: - - updated makefile for beta release - -2000-05-06 22:05 markt - - * version.h, doc/html/history.html: - - updated version for 3.80 beta release - -2000-05-06 22:04 markt - - * USAGE, lame.c, lame.h, main.c, parse.c, quantize.c, - vbrquantize.c: - - added -F option and compression ratio options - -2000-05-06 19:16 markt - - * USAGE, lame.c, lame.h, parse.c, util.c: - - --freeformat option added. Allows lame to write free format - bitstreams - -2000-05-06 18:45 markt - - * bitstream.c, gtkanal.c, lame.c, parse.c, psymodel.c, quantize.c, - util.h, mpglib/interface.c, mpglib/main.c: - - fixed buffer overflow in bitstream.c, - some improvements to mpglib mp3 playback - -2000-05-06 09:27 afaber - - * Dll/MP3EncDll.dsp: - - Update workspaces - -2000-05-05 20:48 markt - - * get_audio.c, mpglib/common.c, mpglib/interface.c, mpglib/main.c, - mpglib/mpg123.h, mpglib/mpglib.h: - - free format mp3 decoding now supported, not fully tested - -2000-05-04 00:07 takehiro - - * takehiro.c: - - new count bits routine, speed up by coding hack. - -2000-05-03 07:23 markt - - * psymodel.c: - - updated comments - -2000-05-03 07:21 markt - - * psymodel.c, testcase.mp3: - - minor change to long block pre-echo control - -2000-05-03 07:18 markt - - * psymodel.c, testcase.mp3: - - minor improvement to long block pre-echo control - -2000-05-03 03:03 markt - - * mpglib/interface.c: - - one last tweak to interface.c - -2000-05-03 02:37 markt - - * bitstream.c, mpglib/common.c, mpglib/interface.c, - mpglib/layer3.c, mpglib/mpg123.h, mpglib/mpglib.h: - - worked on mpglib/interface.c to make it handle free format - bitstreams. (not yet working) - -2000-05-02 18:31 afaber - - * Dll/: BladeMP3EncDLL.c, MP3EncDll.dsp: - - Update lame version, bug fixes to play list file generation - -2000-05-02 02:53 markt - - * reservoir.c: - - for CBR encoding, 320kbs, dont allow main_data_begin > 0 - -2000-05-02 01:24 markt - - * gtkanal.c, lame.c, psymodel.c, quantize-pvt.c, quantize.c, - testcase.mp3: - - tweaked a bunch of bit allocation on PE settings, - based on tunings of testsignal2.wav and castanets.wav - -2000-05-01 18:18 markt - - * bitstream.c, brhist.c, brhist.h, lame.c, lame.dsp, lame.h, - parse.c, quantize-pvt.c, reservoir.c, util.h, Dll/MP3EncDll.dsp: - - bunch of vbr histogram tweaks, and added --athshort option for - internal testing only - -2000-04-30 17:54 robert - - * lame.bat: - - DOS batch file to put on Win9x Desktop - you can drag and drop waves on it and - lame will encode them to mp3 - -2000-04-29 23:41 markt - - * bitstream.c, reservoir.c, testcase.mp3: - - moved where main_data_begin was corrected when - padding into ancillary data - -2000-04-26 18:14 markt - - * USAGE, lame.h, main.c, parse.c: - - added the '--decode' option - -2000-04-26 00:54 markt - - * machine.h, main.c, mpglib/decode_i386.c, mpglib/layer3.c: - - moved calls to open the output file until after all - arguments and other conditions are checked. - -2000-04-24 22:22 markt - - * reservoir.c, testcase.mp3: - - disabled acillary drain (pre-frame) because of bugs at 320kbs - Could be player or encoder bug - have to investigate - -2000-04-19 21:35 robert - - * psymodel.c: - - MPEG2.5 related bug fixed - -2000-04-19 19:35 markt - - * lame.c, lame.h, parse.c, quantize-pvt.c: - - fixed bug allowing more than 4096 bits in a granule - -2000-04-18 22:57 markt - - * lame.c, lame.h, psymodel.c, reservoir.c, takehiro.c, util.h: - - lame is now (*maybe*) thread safe! - -2000-04-18 08:35 markt - - * VbrTag.c, VbrTag.h, bitstream.c, brhist.c, get_audio.c, - get_audio.h, id3tag.c, id3tag.h, l3bitstream.c, lame.c, lame.h, - parse.c, psymodel.c, quantize-pvt.c, quantize.c, reservoir.c, - reservoir.h, testcase.mp3, util.c, util.h, vbrquantize.c, - Dll/BladeMP3EncDLL.c: - - more thread-safe work, and id3/vbr tag bug discovered by - Iwasa Kasmi - -2000-04-17 23:29 markt - - * lame.c, psymodel.c, quantize-pvt.c, quantize.c, util.h, - vbrquantize.c: - - tweaks to vbrquantize.c - -2000-04-17 06:12 markt - - * lame.c, testcase.mp3, vbrquantize.c: - - updated test cases - -2000-04-17 05:16 markt - - * bitstream.c, l3bitstream.c, l3side.h, lame.c, quantize-pvt.c, - reservoir.c, mpglib/main.c: - - fixed VBR stuffing bits problem. - if VBR uses a large frame, then ResvMax may become small, and - we have to make sure that main_data_begin doesn't create a buffer - which violates this condition. - - The old code wouldn't check the above, but it would pad the current - frame with 0's (wasting bits) to make sure the *next* frame didn't - violate the ResvMax condition. But this results in wasted bits - because in VBR there is a change the *next* frame will be at - a lower bitrate and thus have a larger ResvMax. - -2000-04-17 02:25 markt - - * API, Makefile, get_audio.c, gtkanal.c, lame.c, lame.h, main.c, - mp3x.c, parse.c, psymodel.c, quantize-pvt.c, quantize.c, - reservoir.c, util.h, vbrquantize.c, mpglib/layer3.c, - mpglib/main.c, mpglib/mpglib.h: - - Removed gtk specific code from libmp3lame.a: libmp3lame.a can now - be compiled to support the mp3 frame analyzer but does not require - gtk to be installed. (and thus, HAVEGTK does not occure in any - of the library routines). To compile the frame analyzer (mp3x) you - of course still need gtk installed. - -2000-04-17 00:38 markt - - * VbrTag.c, mpglib/main.c: - - another attempt at fixing mpeg2.5 xing header - -2000-04-16 20:56 markt - - * VbrTag.c: - - VBR header for MPEG2.5 fixed. - -2000-04-14 00:37 markt - - * lame.c, main.c, parse.c, quantize-pvt.c, reservoir.c, - reservoir.h, vbrquantize.c: - - tweaks to vbrquantize.c - -2000-04-13 01:57 markt - - * version.h (lame3_70): - - fixed version - -2000-04-13 01:19 markt - - * lame.c, quantize-pvt.c, quantize-pvt.h, quantize.c, util.h, - vbrquantize.c: - - vrbquantize bounds checking - -2000-04-12 18:44 markt - - * lame.c, psymodel.c, quantize.c, testcase.mp3, util.h, - vbrquantize.c: - - removed gfc->masking_lower - -2000-04-12 18:29 markt - - * Makefile, quantize-pvt.c, quantize.c: - - Robert's VBR quality control mode now the default! - -2000-04-12 18:19 markt - - * lame.c, quantize-pvt.c, quantize-pvt.h, quantize.c, util.h, - vbrquantize.c: - - removed static masking_lower - -2000-04-12 18:10 markt - - * quantize-pvt.c, quantize.c: - - removed reduce_sidechannel static - -2000-04-12 18:08 markt - - * quantize-pvt.c, quantize.c, vbrquantize.c: - - removed convert_mdct static variable - -2000-04-12 18:06 markt - - * quantize-pvt.c, util.h: - - removed static variables ATH_l, ATH_s - -2000-04-12 15:47 markt - - * lame.c, psymodel.c, quantize.c, vbrquantize.c, doc/man/lame.1: - - removed qthr_l, qthr_s from psymodel.c - fixed man pages. - enabled new VBR code with -Y - disabled -Z option: it was broken since subblock gains were not - scaled into xrpow - -2000-04-12 01:37 markt - - * mpglib/layer3.c: - - gtk changes - -2000-04-12 01:36 markt - - * gtkanal.c, lame.c, psymodel.c, quantize-pvt.c, quantize-pvt.h, - quantize.h, testcase.mp3, vbrquantize.c: - - new vbr quantize code mostly done! - -2000-04-11 18:24 markt - - * Makefile, get_audio.c, get_audio.h, gtkanal.c, gtkanal.h, lame.c, - lame.h, quantize.c, util.h, vbrquantize.c: - - removed all static variables from get_audio.c - -2000-04-11 15:59 markt - - * HACKING: - - updated HACKING - -2000-04-11 15:55 markt - - * API, l3side.h, lame.c, quantize-pvt.c, quantize-pvt.h, util.h, - vbrquantize.c: - - updated API - -2000-04-11 00:33 markt - - * lame.c, vbrquantize.c: - - work on vbrquattize.c - -2000-04-10 20:24 markt - - * lame.c, main.c, quantize-pvt.c, quantize.c, util.c, util.h: - - bug fixed: mfbuf overflow, and check for overflow was - being done, but after the overflow and in this case - the overflow was causing the check to pass. - -2000-04-10 16:41 markt - - * lame.c, quantize.h, util.c, util.h, vbrquantize.c: - - precompute 16 windows for downsampling. much faster. - -2000-04-09 21:53 markt - - * bitstream.c, quantize-pvt.c, quantize.c, reservoir.c, util.c, - mpglib/layer3.c, mpglib/main.c: - - MPEG2.5 8khz sampling rate fixes - -2000-04-09 02:08 markt - - * encoder.h, lame.c, quantize-pvt.c, quantize-pvt.h, quantize.c, - reservoir.c, testcase.mp3: - - tweaked bit reservoir growth, bits on pe allocation - -2000-04-08 23:33 markt - - * lame.c, quantize-pvt.c, takehiro.c, testcase.mp3: - - tweaks to on_pe, side channel bit allocation - -2000-04-08 20:33 markt - - * encoder.h, testcase.mp3: - - switched to encoder delay of 576 - -2000-04-08 20:31 markt - - * bitstream.c, tables.c: - - [no log message] - -2000-04-08 20:22 markt - - * bitstream.c, quantize.c, takehiro.c, testcase.mp3, util.c, - util.h: - - Takehiro's more efficient short block huffman coding. - -2000-04-08 18:08 markt - - * lame.c: - - VBR compression ratio calculation - -2000-04-08 01:26 cisc - - * bitstream.c: - - Use INLINE dammit! ;) - -2000-04-07 00:11 markt - - * util.c: - - fixed M_PI problem - -2000-04-06 21:08 robert - - * bitstream.c: - - scalefac_band compile fix - -2000-04-06 19:26 markt - - * doc/html/history.html (lame3_70): - - [no log message] - -2000-04-06 19:17 markt - - * Makefile, version.h (lame3_70): - - [no log message] - -2000-04-06 18:49 markt - - * Makefile (lame3_70): - - [no log message] - -2000-04-06 18:48 markt - - * version.h, doc/html/history.html (lame3_70): - - version 3.70 - -2000-04-06 18:30 markt - - * gtkanal.c, l3bitstream-pvt.h, l3bitstream.c, l3side.h, lame.c, - quantize-pvt.c, quantize-pvt.h, quantize.c, takehiro.c, - testcase.mp3, util.h, vbrquantize.c: - - made scalefac_band non-local - -2000-04-06 18:23 markt - - * bitstream.c: - - [no log message] - -2000-04-06 18:19 markt - - * bitstream.h: - - [no log message] - -2000-04-06 18:18 markt - - * bitstream.c: - - opps, forgot to add this... - -2000-04-06 17:31 markt - - * Makefile.MSVC, lame.dsp, Dll/MP3EncDll.dsp: - - MSVC project files updated - -2000-04-06 17:29 markt - - * VbrTag.c, VbrTag.h, lame.c, util.c, util.h: - - takehiro bitstream.c now on by default! - -2000-04-06 16:32 markt - - * takehiro.c, mpglib/layer3.c: - - takehiro bitstream.c now working for CBR, disabled by default - -2000-04-05 08:54 markt - - * Makefile, l3bitstream.c, lame.c, quantize-pvt.c, quantize-pvt.h, - tables.c, tables.h, takehiro.c, util.c, util.h: - - takehiro's bitstream.c package close to being interface - into lame. - -2000-04-05 01:38 markt - - * lame.c, util.c: - - mode_fixed bug - -2000-04-05 01:38 markt - - * lame.c (lame3_70): - - mode_fixed bug fixed - -2000-04-04 22:49 markt - - * version.h, doc/html/history.html (lame3_70): - - updated version - -2000-04-04 21:36 robert - - * parse.c: - - [no log message] - -2000-04-04 20:37 cisc - - * amiga_mpega.c (lame3_70): - - Fixed nsamp overflow problem. - -2000-04-04 19:51 markt - - * lame.c, util.c, util.h: - - upsampling uses old interpolation code - downsampling uses good, FIR/blackman window code - -2000-04-04 19:27 markt - - * version.h (lame3_70): - - updated version - -2000-04-04 19:05 markt - - * Makefile.MSVC: - - loopold removed from makefile.msvc - -2000-04-04 17:45 markt - - * parse.c (lame3_70), parse.c: - - cwlimit parsing fixed - -2000-04-04 16:05 markt - - * lame.c (lame3_70), lame.c: - - default mode will use jstereo - -2000-04-04 03:20 markt - - * Dll/BladeMP3EncDLL.c (lame3_70): - - [no log message] - -2000-04-04 03:20 markt - - * Dll/BladeMP3EncDLL.c: - - more fixes - -2000-04-03 19:50 markt - - * quantize-pvt.c: - - more gfc changes - -2000-04-03 19:19 markt - - * HACKING, lame.c, newmdct.c, quantize-pvt.c, quantize.c, util.c, - util.h: - - more thread-safe work. (moving all static variables into - gfc-> struct) - -2000-04-03 18:24 markt - - * brhist.c, get_audio.c, gtkanal.c, l3bitstream.c, l3bitstream.h, - lame.c, lame.h, newmdct.c, parse.c, psymodel.c, quantize-pvt.c, - quantize.c, quantize.h, reservoir.c, takehiro.c, util.c, util.h, - vbrquantize.c: - - more massive internal changes in the goal of making - lame thread safe. - - gfp-> user controlled varialbes - gfc-> all other internal parameters. eventually all global variables - which very from encode to encode need to go in here. - -2000-04-03 16:00 markt - - * Dll/BladeMP3EncDLL.c: - - dll finally fixed! - -2000-04-03 15:59 markt - - * Dll/BladeMP3EncDLL.c (lame3_70): - - dll fixes - -2000-04-03 15:39 markt - - * lame.c, Dll/BladeMP3EncDLL.c (lame3_70): - - bug in lame_enc dll fixed? - -2000-04-03 15:38 markt - - * Dll/BladeMP3EncDLL.c: - - bug in lame_enc.dll finally fixed? - -2000-04-03 01:19 markt - - * lame.c: - - tweaked output display - -2000-04-03 01:07 markt - - * lame.c, Dll/BladeMP3EncDLL.c: - - new resample routine. very slow, but much higher - quality. - -2000-04-02 19:38 robert - - * parse.c: - - overhauled presets: - + redesign of help page - + phone uses now MPEG2.5 8kHz - + sw new, for short wave radio @ 11.025 kHz 24kbits - + am new, for am radio @ 16 kHz 32 kbits - + fm changed, 22.05 kHz 64 kbits - + radio new, the old fm at 112 kbits - rest minor tunings - -2000-04-02 02:57 markt - - * Dll/BladeMP3EncDLL.c (lame3_70): - - [no log message] - -2000-04-02 02:44 markt - - * Dll/: BladeMP3EncDLL.c (lame3_70), BladeMP3EncDLL.c: - - [no log message] - -2000-04-02 01:56 markt - - * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h (lame3_70): - - Dll updates - -2000-04-02 01:55 markt - - * Dll/BladeMP3EncDLL.c: - - more DLL updates - -2000-04-02 01:39 markt - - * parse.c, util.c: - - MPEG2.5 docs - -2000-04-02 01:35 markt - - * l3bitstream.c, lame.c, lame.h, psymodel.c, quantize-pvt.c, - quantize-pvt.h, util.c, util.h, Dll/BladeMP3EncDLL.c, - Dll/BladeMP3EncDLL.h: - - MPEG2.5 support - -2000-04-01 11:47 robert - - * lame.c, parse.c: - - + added --version and --license switch - + changed --help to give only most important options - so that it fits on a 80x24 terminal display - + added --longhelp switch to get the full options list - + changed -v and -Vx, now they switch quality to 2 - you can go down below 2 by adding -f or -q5 - + changed presets: - turned off highpass filters except for "phone" - voice sample freq now 22.05 kHz, due to mpg123 bug - -2000-04-01 01:09 markt - - * Dll/BladeMP3EncDLL.c (lame3_70): - - more dll bug fixes (mono) - -2000-04-01 00:04 markt - - * version.h (lame3_70): - - updated version to 3.68 alpha 1 - -2000-03-31 23:56 markt - - * Dll/BladeMP3EncDLL.c (lame3_70): - - fixed mono bug - -2000-03-31 23:53 markt - - * lame.c, vbrquantize.c, Dll/BladeMP3EncDLL.c: - - mono encoding bug in DLL fixed - -2000-03-31 22:47 robert - - * Makefile, quantize-pvt.c, quantize-pvt.h: - - removed RH_ATH/RH_SIDE_CBR code - -2000-03-31 22:45 robert - - * quantize.c: - - minor frame analyzer fix for VBR, removed RH_ATH/RH_SIDE_CBR code - -2000-03-30 23:39 markt - - * lame.c, parse.c (lame3_70): - - undocumented -q option for internal testing - -2000-03-30 23:38 markt - - * get_audio.c, gtkanal.c, lame.c, main.c, parse.c, quantize.c: - - added -q option for internal testing. sets value of gfp->quality - -2000-03-30 19:51 markt - - * testcase.mp3: - - updated test case for new CVS version - -2000-03-30 09:37 markt - - * INSTALL: - - wingtk doc - -2000-03-30 09:36 markt - - * INSTALL: - - [no log message] - -2000-03-30 08:24 markt - - * INSTALL, README: - - updated docs - -2000-03-30 08:04 markt - - * README.WINGTK, lame.dsp, Dll/MP3EncDll.dsp: - - new directions for compiling mp3x under windows - -2000-03-30 07:54 markt - - * lame.dsp (MSVC6), README.WINGTK: - - updated project files - -2000-03-30 07:00 markt - - * lame.dsp (MSVC6), Dll/MP3EncDll.dsp: - - updated project files - -2000-03-30 05:39 markt - - * VbrTag.c, gtkanal.c, gtkanal.h, l3bitstream.c, lame.c, machine.h, - psymodel.c, quantize.c, takehiro.c, mpglib/layer3.c: - - added big_values display to mp3x - -2000-03-30 05:38 markt - - * VbrTag.c, l3bitstream.c, lame.c, machine.h, quantize.c, - takehiro.c, vbrquantize.c: - - fixed 2 bugs: - - l3bitstream.c: - 1. The quadruples were encoded with the wrong sign: Any non-zero - coefficient in the count1 block was marked as negative! - - takehiro.c: - 2. short blocks were using a cod_info->big_values=288 - (which should be 576, because big_values was multiplied by 2 - in the new version of takehiro.c) - -2000-03-29 20:49 markt - - * doc/html/: contributors.html, examples.html, history.html, - id3.html, index.html, lame.css, node6.html, switchs.html: - - new docs from Gabriel - -2000-03-29 02:00 markt - - * l3bitstream.c, psymodel.c, quantize-pvt.c, quantize.c, - reservoir.c, takehiro.c, util.c, vbrquantize.c, brhist.c, fft.c, - get_audio.c, globalflags.h, gtkanal.c, gtkanal.h, lame.c, - newmdct.c, parse.c: - - removed globalflags.h - -2000-03-29 01:55 markt - - * globalflags.h (lame3_70), brhist.c, fft.c, get_audio.c, - gtkanal.c, gtkanal.h, lame.c, newmdct.c, parse.c, vbrquantize.c: - - removed "globalflags.h" - -2000-03-29 01:06 markt - - * lame.c: - - missing free() calls in lame_encode_buffer_interleave - -2000-03-28 16:41 takehiro - - * takehiro.c: - - oops, this may remove any seg.fault bug... - -2000-03-28 15:39 takehiro - - * takehiro.c: - - Oops, I mistake count1 for big_values - -2000-03-28 13:08 cisc - - * amiga_mpega.c: - - Fixed overflow problem with nsamp calculation. - -2000-03-27 22:09 markt - - * lame.c: - - fixes to lame_encode_buffer_interleave - -2000-03-27 22:09 markt - - * lame.c: - - fixes to lame_encode_buffer_interleave() - -2000-03-27 21:46 robert - - * takehiro.c: - - added assertion, cos here is a bug - -2000-03-27 21:34 markt - - * doc/html/history.html: - - updated history.html - -2000-03-27 21:33 markt - - * version.h: - - [no log message] - -2000-03-27 21:09 markt - - * lame.c: - - minor change with ms_ener_ratio_ave - -2000-03-27 21:06 markt - - * lame.c: - - ms_ener_ratio_ave M/S override switch turned off - -2000-03-27 20:58 markt - - * version.h: - - changed version number. 3.80 is the next beta version, - 3.70 is the stable version - -2000-03-27 19:42 markt - - * version.h (lame3_80): - - updated version in the lame3_80 branch - -2000-03-27 19:42 markt - - * version.h: - - this is new the future version 3.81beta - -2000-03-27 19:39 markt - - * l3bitstream.c, quantize.c, tables.c, takehiro.c (lame3_80): - - The next "official" stable release, lame3.80. - lame3_80 is a branch. - - This will not include Takehiro's latest lossless encoding stuff. - (l3bitstream.c, quantize.c, tables.c, takehiro.c) - -2000-03-27 19:26 markt - - * takehiro.c: - - gfp->use_scfsi replaced by mode_gr==2 - -2000-03-27 17:53 markt - - * get_audio.c, lame.c, main.c, util.c, version.h: - - Ingo -f fast-math rounding problem fix - -2000-03-27 15:59 takehiro - - * takehiro.c: - - debugged seg.fault when count1 is 576 - -2000-03-26 21:21 markt - - * quantize.c: - - opps, i screwed up quantize.c! fixed version - -2000-03-26 10:05 markt - - * Makefile, gtkanal.c, gtkanal.h, lame.c, quantize.c, - mpglib/layer3.c: - - disabled noise_shaping_stop=1, fixed jstereo default mode problem, - updated frame analyzer - -2000-03-25 18:16 cisc - - * takehiro.c: - - Use INLINE define instead of inline. - -2000-03-25 16:18 takehiro - - * lame.c: - - enable noise_shaping==1 when high quality mode even without -X - -2000-03-25 16:17 takehiro - - * takehiro.c: - - debug seg.fault when big_values==0 - -2000-03-25 15:01 takehiro - - * l3bitstream.c, quantize-pvt.c, quantize-pvt.h, quantize.c, - tables.c, takehiro.c: - - best huffman divide now "more best" huffman coding. - -2000-03-25 03:35 takehiro - - * Makefile, l3bitstream.c, l3side.h, lame.c, psymodel.c, - quantize-pvt.c, tables.c, takehiro.c: - - new faster lossless coding routine(especially with -h) - -2000-03-25 00:06 markt - - * get_audio.c, main.c, quantize-pvt.h, quantize.c, takehiro.c, - testcase.mp3: - - added some code to best_scalefac_store: - if ix=0 in a scalefactor band, set the scalefactor to 0 also, - to save a few bits. - -2000-03-24 23:06 markt - - * lame.dsp (MSVC6), Dll/MP3EncDll.dsp: - - updated project files - -2000-03-24 23:02 markt - - * get_audio.c, machine.h: - - _setmode stuff for windows - -2000-03-24 22:37 markt - - * lame.h, quantize-pvt.c, mpglib/layer3.c: - - fixed MPEG2 tables in mpglib, - added more accurate mp3buffer size bound in lame.h - -2000-03-24 18:21 markt - - * quantize-pvt.c, quantize-pvt.h, quantize.c: - - [no log message] - -2000-03-24 18:08 markt - - * lame.dsp, loopold.c, Dll/MP3EncDll.dsp: - - removed loopold.c - -2000-03-24 18:07 markt - - * Makefile, gtkanal.c, lame.c, lame.h, psymodel.c, psymodel.h, - quantize-pvt.c, quantize.c: - - Removed old M/S stereo mode which uses L/R masking functions. - removed loopold.c and all that other "dual channel" stuff - -2000-03-24 02:00 markt - - * VbrTag.c, lame.c: - - MPEG2 VBR tag should now work - -2000-03-24 01:38 markt - - * VbrTag.c, VbrTag.h, lame.c, Dll/BladeMP3EncDLL.c: - - Xing MPEG2 headers work - -2000-03-23 22:13 markt - - * Makefile: - - uncommented options in makefile - -2000-03-23 22:12 markt - - * API, Makefile, lame.c, lame.h, util.c, mpglib/common.c: - - strange bug with -f fast-math option under gcc: it would compute - the mp3 framesize wrong, due to incorrect integer truncation. - Replaced implicit integer truncation with floor() to fix this. - -2000-03-23 20:30 markt - - * Makefile, get_audio.c, lame.c, lame.h: - - autoconvert moved into lame_encode_buffer - -2000-03-23 20:02 markt - - * Makefile, lame.c, lame.h: - - lame_encode_buffer_interleaved added to API - -2000-03-22 17:14 markt - - * vbrquantize.c: - - minor fixes - -2000-03-22 04:15 markt - - * version.h, doc/html/history.html: - - lame 3.66 - -2000-03-22 02:03 markt - - * USAGE, gtkanal.c, lame.c, machine.h, main.c, parse.c, - quantize-pvt.c: - - float/double version of ASM quantize routines - -2000-03-21 23:02 markt - - * brhist.c, brhist.h, gtkanal.c, gtkanal.h, l3bitstream-pvt.h, - l3bitstream.c, l3bitstream.h, lame.c, loopold.c, newmdct.c, - newmdct.h, psymodel.c, psymodel.h, quantize-pvt.c, - quantize-pvt.h, quantize.c, quantize.h, reservoir.c, reservoir.h, - takehiro.c, util.c, util.h, vbrquantize.c, mpglib/layer3.c: - - replaced all "gf." by gfp-> - -2000-03-21 20:58 markt - - * lame.c: - - fixed bug in lame_encode_finish: if user informs - lame that mp3buffer has size 0, lame will not check to make - sure the mp3buffer is big enough to store the encoded data - -2000-03-19 22:29 afaber - - * lame.c, Dll/BladeMP3EncDLL.c: - - Fixes to the lame DLL encoder: - If last frame is too short, set number of output bits to 0 instead of -1 - Don't disable the bWriteVBRTag flag if input file is null - -2000-03-19 20:07 cisc - - * get_audio.c: - - Byteswapping (-x) didn't work when using LIBSNDFILE - -2000-03-18 00:33 cisc - - * parse.c: - - Fixed typo in define. - -2000-03-18 00:32 cisc - - * amiga_mpega.c: - - Erk, didn't spot the array/pointer relation, restored to previous version. - -2000-03-17 22:09 cisc - - * amiga_mpega.c: - - b[] is a pointer, so supply addresses of pcm_l&r. - -2000-03-17 19:29 markt - - * lame.c: - - VBR was displaying MPEG2 bitrates - fixed. - -2000-03-17 04:31 markt - - * machine.h: - - added note to machine.h - -2000-03-17 04:30 markt - - * version.h, doc/html/history.html: - - uncommented gcc ASM code - -2000-03-17 04:27 markt - - * quantize-pvt.c: - - uncommended the GCC ASM code for quantize_xrpow() - -2000-03-17 00:07 markt - - * doc/html/history.html: - - updated history - -2000-03-17 00:05 markt - - * amiga_mpega.c, get_audio.c, lame.h, version.h, mpglib/main.c, - mpglib/mpglib.dsp: - - some tweaks to API for lame_decode_fromfile - -2000-03-16 23:59 markt - - * lame.dsp, mpglib/mpglib.dsp (MSVC6), Dll/BladeMP3EncDLL.c: - - project file tweaks - -2000-03-16 23:36 markt - - * get_audio.c, lame.dsp, lame.h, parse.c: - - updated project files MSVC5 - -2000-03-16 23:19 markt - - * lame.dsp, mpglib/mpglib.dsp (MSVC6), main.c: - - updated MSVC6 branch project files - -2000-03-16 19:42 markt - - * Dll/BladeMP3EncDLL.c: - - update to bladedll - -2000-03-16 19:38 markt - - * gtkanal.c, lame.h, mpglib/main.c: - - one last change to lame_decode()... - -2000-03-16 19:05 markt - - * get_audio.c, get_audio.h, gtkanal.c, gtkanal.h, lame.c, lame.h, - main.c, mp3rtp.c, mp3x.c, parse.c, util.c, util.h: - - more and these really should be the last changes to the API - 'gf' is no substantiated by the calling program, and passed - to all lame_routines(). This is so lame can eventually be - made re-entrant by putting all static vars in the gf struct. - -2000-03-16 16:44 markt - - * VbrTag.c, loopold.c, machine.h, takehiro.c, timestatus.c, util.h: - - strict ansi patches from Heiko.Eissfeld - -2000-03-16 05:33 markt - - * USAGE, main.c: - - updated USAGE - -2000-03-16 05:28 markt - - * mpglib/mpglib.dsp: - - revert back to MSVC5 - -2000-03-16 05:26 markt - - * lame.dsp, lame.dsw (MSVC6), main.c, mpglib/mpglib.dsp: - - MSVC changes to compile lame.exe - -2000-03-16 00:24 markt - - * timestatus.c: - - fixed CPU/playing time display bug - -2000-03-15 20:37 markt - - * encoder.h, l3bitstream.c, lame.h, parse.c, psymodel.c, - takehiro.c: - - minor changes - -2000-03-15 01:34 markt - - * filters.c, filters.h: - - removed filters.c, filters.h - -2000-03-15 01:30 markt - - * Dll/MP3EncDll.dsp: - - updated MSVC6 project files - (in MSVC6 branch) - -2000-03-15 01:20 markt - - * Dll/: MP3EncDll.dsp, MP3EncDll.dsw: - - reverting back to MSVC5 - -2000-03-15 01:14 markt - - * parse.c, Dll/BladeMP3EncDLL.c, Dll/MP3EncDll.dsp, - Dll/MP3EncDll.dsw: - - updated bladeenc dll - -2000-03-14 21:01 markt - - * lame.c, loopold.c, quantize-pvt.c, quantize-pvt.h, quantize.c, - quantize.h, reservoir.c, reservoir.h, util.c, util.h, - vbrquantize.c: - - removed fr_ps struct - -2000-03-14 20:45 markt - - * brhist.c, brhist.h, l3bitstream.c, l3bitstream.h, lame.c, lame.h, - psymodel.c, psymodel.h, quantize-pvt.c, quantize-pvt.h, - quantize.c, reservoir.c, timestatus.h, util.c, util.h, - vbrquantize.c: - - removed "info" sturct. Removing fr_ps struct - -2000-03-14 07:21 markt - - * brhist.c, l3bitstream.c, lame.c, lame.h, loopold.c, psymodel.c, - quantize-pvt.c, quantize.c, reservoir.c, timestatus.c, - timestatus.h, util.c, util.h: - - removed more info-> variables - -2000-03-14 06:36 markt - - * lame.c, lame.h: - - removing some of the info-> variables - -2000-03-10 23:21 cisc - - * amiga_mpega.c: - - Had to make a dummy break-function to make atexit() work. - -2000-03-10 23:18 markt - - * loopold.c: - - segfault fixed in loopold.c when count[] was zero for one channel - and non-zero for the other - -2000-03-10 20:56 markt - - * API, Makefile, gtkanal.c, lame.c, lame.h, version.c: - - added lame_version to the API - -2000-03-10 20:13 markt - - * Dll/BladeMP3EncDLL.c: - - removed some unnecessary #includes - -2000-03-10 19:48 markt - - * Dll/MP3EncDll.dsp: - - added #define LAMEPARSE to Blade project files - -2000-03-10 19:38 markt - - * Dll/: BladeMP3EncDLL.c, MP3EncDll.dsp: - - Blade dll updated to handle new interface - Albert: Sorry if I broke anything, the old version is still in CVS :-) - -2000-03-10 18:55 markt - - * Dll/BladeMP3EncDLL.c (test): - - testing... - -2000-03-10 16:01 markt - - * Dll/BladeMP3EncDLL.c: - - BladeMP3 changes - -2000-03-10 01:41 markt - - * Dll/BladeMP3EncDLL.c: - - some changes to update BaldeMP3encdll - -2000-03-09 19:42 markt - - * quantize-pvt.c, takehiro.c: - - quantize_xrpow_ISO also uses tablelookup, so it also needed the - "xr too big" check - -2000-03-09 18:05 markt - - * HACKING, get_audio.c, gtkanal.c, lame.c, lame.h, main.c, parse.c: - - [no log message] - -2000-03-08 00:16 markt - - * Makefile, parse.c: - - Robert's presets restored. polyphase filters now except filterwidth - arguments. - -2000-03-08 00:05 markt - - * lame.c, lame.h, newmdct.c: - - polyphase filter now supports lowpasswidth and highpasswidth option - -2000-03-07 23:10 cisc - - * API: - - Added AMIGA_MPEGA #define, and fixed a few minor spelling errors... ;) - -2000-03-07 22:56 cisc - - * amiga_mpega.c: - - Made sure lame_decode_fromfile() won't return an empty frame (unless there's an error). - -2000-03-07 18:33 markt - - * API, Makefile, get_audio.c, lame.c, main.c, parse.c: - - minor tweeks to compile w/o decoding library - -2000-03-07 08:01 sbellon - - * lame.c: - - fixed RISC OS FPE support - -2000-03-06 23:28 markt - - * API: - - API description - -2000-03-06 19:55 markt - - * lame.dsp: - - [no log message] - -2000-03-06 19:53 markt - - * Makefile, Makefile.MSVC, get_audio.c, get_audio.h, id3tag.h, - lame.c, lame.dsp, lame.h, parse.c, Dll/MP3EncDll.dsp, - mpglib/common.c, mpglib/dct64_i386.c, mpglib/decode_i386.c, - mpglib/interface.c, mpglib/layer3.c, mpglib/main.c, - mpglib/tabinit.c: - - More library work. - Sorry to all the non-unix developers out there, but this will - break all project files. (but we are very close to the end of - the modularization work). - - New code needs the following #defines set somewhere: - - #define HAVEMPGLIB to use mpglib's mp3 *decoding* capibility - (or AMEGA_MPEGA on amiga systems, and dont define HAVEMPGLIB) - #define BRHIST to allow the display of the VBR historgram - #define LIBSNDFILE to use Erik de Castro Lopo's libsndfile - #define LIBSNDLAME to use LAME's minimial internal sndfile I/O - #define LAMEPARSE to use LAME's command line parsing/option setting routines - #define HAVEGTK to compile in support for the GTK mp3 frame analyzer - -2000-03-06 15:16 markt - - * filters.c, lame.c, lame.h, newmdct.c, parse.c, testcase.mp3: - - polyphase filters are now working! - some tuning of polyphase fiters. - removed MDCT filters, sfb21 cutoff. - -2000-03-06 03:59 markt - - * gtkanal.c, lame.c, newmdct.c, psymodel.c: - - new polyphase filters - -2000-03-05 19:07 markt - - * psymodel.c: - - Gabriel: L/R block matching fix - -2000-03-05 18:37 markt - - * id3tag.c, id3tag.h, lame.c, lame.h, newmdct.c, parse.c, - doc/html/id3.html: - - id3v1.1 tags from Don Melton - -2000-03-04 17:19 markt - - * get_audio.c, lame.c: - - resampling moved to fill_buffer_resample() in lame.c, - which has linear and 3rd order resampling - -2000-03-04 15:31 markt - - * amiga_mpega.c, get_audio.c, lame.c, main.c, quantize-pvt.c, - quantize.c, vbrquantize.c: - - patch from kimmo to remove more c++ comments, - fill_buffer_linear_resample code - -2000-03-04 05:13 markt - - * lame.c: - - fill_buffer routines - -2000-03-03 19:25 markt - - * encoder.h, mp3rtp.c: - - mp3rtp uses new, simplified lame_encode_buffer interface - -2000-03-03 19:01 markt - - * encoder.h, lame.c, lame.h, main.c, testcase.mp3: - - added lame_encode_buffer, the new, prefered encoding interface - -2000-02-29 21:19 robert - - * parse.c: - - minor change, exit if wrong preset type was given - -2000-02-29 19:54 robert - - * fft.c: - - minor speed up (at least for gcc) - -2000-02-29 18:00 sbellon - - * lame.c: - - moved RISC OS floating point exception part into debugging area - -2000-02-27 19:11 robert - - * quantize-pvt.c, quantize-pvt.h, quantize.c: - - removed unused parameter - -2000-02-27 18:36 robert - - * psymodel.c: - - code clean up, giving an overall speed up of 3-4% - -2000-02-25 07:00 markt - - * lame.c: - - minor cleanup - -2000-02-24 15:30 robert - - * loopold.c, quantize-pvt.c, quantize-pvt.h, quantize.c: - - code cleanup, removed unused parameter - -2000-02-23 02:40 cisc - - * amiga_mpega.c: - - Fixed up the cleanup function. - -2000-02-22 23:21 robert - - * quantize-pvt.c, testcase.mp3: - - switched back to original bin_search_stepsize routine - -2000-02-22 03:14 markt - - * quantize-pvt.c, testcase.mp3: - - RH bin_search_stepsize now the default - -2000-02-22 00:54 cisc - - * amiga_mpega.c: - - Oh, nevermind, wasn't very efficient here, proper place would be in sndfile.lib - -2000-02-22 00:15 cisc - - * lame.h, main.c: - - Minor fixes. - -2000-02-21 23:58 cisc - - * amiga_mpega.c: - - Make sure input-file is closed when CTRL-C is received. - -2000-02-21 23:05 markt - - * Makefile, get_audio.c, gtkanal.c, ieeefloat.c, l3bitstream.c, - main.c, util.c, doc/html/history.html, mpglib/main.c: - - some 64bit DEC Alpha patches - -2000-02-21 22:40 robert - - * quantize-pvt.c: - - speed up of bin_search_stepsize, the bin_search is about 20% faster, resulting in an average speed up of 2-3%, disabled by default as it breaks the testcase - -2000-02-21 22:39 sbellon - - * main.c: - - - further RISC OS support added - -2000-02-21 00:21 markt - - * lame.c: - - minor - -2000-02-20 23:36 markt - - * get_audio.c, lame.c, lame.h, main.c, mp3rtp.c, parse.c: - - num_samples /eof fix, ABORTFP fix, stdout mode setting fix - -2000-02-20 20:31 markt - - * mpglib/common.c: - - better error message - -2000-02-20 20:03 robert - - * get_audio.c: - - removed warning about fill up with zeros again, it is common at the end of an input file - -2000-02-20 19:26 robert - - * Makefile, quantize-pvt.c, quantize-pvt.h, quantize.c: - - code cleanup - -2000-02-20 18:45 robert - - * psymodel.c: - - code cleanup - -2000-02-20 14:09 robert - - * formatBitstream.c: - - fixed assertion failure while flushing bitstream at end of encoding - -2000-02-20 14:08 robert - - * get_audio.c: - - applied patch from Jeremy Hall to fix stdin problem - -2000-02-19 13:32 afaber - - * fft.c, formatBitstream.c, formatBitstream.h, get_audio.c, - ieeefloat.c, l3bitstream.c, machine.h, quantize-pvt.c, - quantize.c, takehiro.c, mpglib/mpg123.h: - - Fixed many warning messages when compiling with MSVC - -2000-02-19 12:15 afaber - - * VbrTag.c: - - Applied patch from Mathew Hendry to avoid divide by zero - -2000-02-18 16:21 robert - - * quantize-pvt.c: - - Mathew Hendry: line 813 should read "#define USE_MSC_ASM" and not "#define USE_MSC_AMS" - -2000-02-18 16:20 robert - - * Makefile.MSVC: - - Mathew Hendry: "stray space character following the \" patched - -2000-02-18 16:07 robert - - * lame.c: - - Mathew Hendry's CYGWIN gcc FPU control patch - -2000-02-18 06:16 markt - - * Makefile, gtkanal.c, lame.c, testcase.mp3: - - changed sizeof frame analyzer so it fits on a 800x600 screen. - make --nores also set info->padding = 0. Avoids problem with - small changes in frac_SpF causing different padding patterns and - mp3 file differences. - -2000-02-17 20:12 robert - - * loopold.c, quantize-pvt.h, quantize.c: - - code clean-up, it seems the SIGFPE exceptions are gone - -2000-02-16 22:42 cisc - - * machine.h: - - Fixed INLINE define for SAS/C. - -2000-02-16 21:18 cisc - - * main.c: - - Include machine.h so that needed prototypes get added. - -2000-02-16 07:06 markt - - * quantize-pvt.c, quantize-pvt.h, quantize.c: - - new quantize xrpow for PowerPC - -2000-02-16 03:56 markt - - * lame.c, quantize-pvt.c: - - patches for risc_os - -2000-02-15 22:16 robert - - * quantize.c: - - forgot to save plotting data for best quantization in VBR_iteration_loop - -2000-02-15 17:12 robert - - * quantize-pvt.h, quantize.c: - - VBR_iteration_loop speedup, removed extra quantizations - -2000-02-15 14:51 markt - - * Makefile: - - [no log message] - -2000-02-15 14:40 markt - - * lame.c: - - some non-initilized memory patches - -2000-02-15 02:01 robert - - * quantize-pvt.c: - - bug in ms_convert fixed when source and target are the same - -2000-02-14 21:48 robert - - * quantize-pvt.c: - - Mathew Hendry's quantize-xrpow gcc asm patch - -2000-02-14 21:47 robert - - * quantize.c: - - missing line added - -2000-02-14 21:01 afaber - - * lame.c: - - Intialize float arrays to avoid floating point errors when ABORTFP is set - Added floating point trapping code for MSVC compiler - -2000-02-14 20:53 afaber - - * psymodel.c: - - Intialize tot_ener to avoid floating point errors - -2000-02-14 05:50 markt - - * Makefile, loopold.c, parse.c, quantize-pvt.c, quantize-pvt.h, - quantize.c: - - merged takehiro2 branch back into main branch. - there is still a floating point exception which I cannot track down. - -2000-02-14 04:53 markt - - * psymodel.c, takehiro.c, doc/html/contributors.html, - doc/html/examples.html, doc/html/id3.html, doc/html/index.html, - doc/html/switchs.html: - - updated html from Gabriel - -2000-02-13 18:52 robert - - * fft.c, fft.h, psymodel.c: - - modified energy calculation, fast MS fft patch should work now - -2000-02-11 17:21 markt - - * Makefile, quantize.c, reservoir.c: - - fixed scalefac not-initialized problem. This would happen when - xr = 0 and outer_loop() was skipped. - -2000-02-11 16:34 markt - - * psymodel.c: - - m/s fft patch was not working. - -2000-02-10 19:00 robert - - * parse.c: - - added help info for --preset option and shuffled help text to bring it more in line - -2000-02-10 16:33 robert - - * fft.c, fft.h, psymodel.c: - - applied Takehiro Tominaga's fast MS fft patch - -2000-02-10 14:22 markt - - * doc/html/history.html: - - updated history file from web page - -2000-02-10 06:43 markt - - * version.h: - - updated version - -2000-02-10 06:15 markt - - * lame.c, parse.c, version.c, version.h: - - added version info to help output - -2000-02-10 05:42 markt - - * psymodel.c, testcase.mp3: - - fixed bug in s3_s spreading function calculation. - -2000-02-10 05:35 markt - - * loopold.c, quantize-pvt.h, quantize.c: - - undo some of takehiro's speedup improvements until we can track - down floating point exceptions - -2000-02-10 05:23 markt - - * Makefile, brhist.c, brhist.h, lame.c, loopold.c, psymodel.c, - quantize-pvt.c, quantize-pvt.h, quantize.c: - - some bug fixes: - - psymodel partition band calculations done *before* - the spreading function need to use npart_l_orig. After spreading function, - use npart_s_orig. - - 3 cases of scalefac->l[i][sfb] which should be scalefac->l[sbf][i] - - VBR min & max bitrate index setting problem fixed - -2000-02-08 17:20 afaber - - * lame.c: - - Guarded disp_brhist with #ifdef BRHIST, in order to compile with MSVC - -2000-02-06 10:57 takehiro - - * loopold.c, quantize-pvt.c, quantize-pvt.h, quantize.c, - psymodel.c: - - new spread matrix calculation is now default(faster!) - -2000-02-06 05:59 markt - - * gtkanal.c: - - Iwasa's changes to gtkanal.c - -2000-02-05 12:32 robert - - * lame.c, lame.h, parse.c, util.c, util.h: - - applied Ingo Saitz command line usage patch - -2000-02-05 05:16 markt - - * Makefile.MSVC, brhist.c, lame.c, loopold.c, machine.h, parse.c, - quantize.c: - - minor code cleanup - -2000-02-04 23:49 robert - - * parse.c: - - added "--preset type" option to offer users some usefull presettings - that should shorten the commandline for most cases - -2000-02-04 21:42 afaber - - * lame.c, lame.dsp: - - Fixed WIN32 compiler errors - -2000-02-04 21:26 robert - - * parse.c: - - added '--help' option to allow DOS users to scroll thru the usage page with "lame --help | more" - -2000-02-04 13:57 takehiro - - * loopold.c, quantize-pvt.c, quantize-pvt.h, quantize.c, - takehiro.c: - - speed up hack on the array index. - -2000-02-04 13:49 takehiro - - * psymodel.c: - - and more faster calculation - -2000-02-04 02:29 markt - - * lame.h, quantize-pvt.c: - - minor editing - -2000-02-03 15:43 takehiro - - * psymodel.c: - - some assertion bug(?) has removed - -2000-02-03 15:31 takehiro - - * psymodel.c: - - more faster calculation - -2000-02-02 22:30 afaber - - * mpglib/main.c: - - Added MPGLIB library - -2000-02-02 22:25 takehiro - - * psymodel.c: - - faster spread function calculation - -2000-02-02 17:12 markt - - * get_audio.h, quantize-pvt.c, quantize-pvt.h, quantize.c, - takehiro.c, vbrquantize.c: - - minor code cleanup - -2000-02-02 10:31 markt - - * Makefile: - - testcase update - -2000-02-02 10:25 markt - - * Makefile, filters.c, lame.c, quantize-pvt.c, quantize.c: - - fixed some minor bugs in new scalefac data structure code - -2000-02-02 10:17 markt - - * Makefile, fft.c, filters.c, filters.h, gtkanal.c, - l3bitstream-pvt.h, l3bitstream.c, l3bitstream.h, l3side.h, - lame.c, loopold.c, psymodel.c, psymodel.h, quantize-pvt.c, - quantize-pvt.h, quantize.c, quantize.h, tables.c, tables.h, - takehiro.c, vbrquantize.c (takehiro0): - - The pre-takehiro1 scalefac datastructure code - -2000-02-02 09:19 markt - - * Makefile, filters.c, lame.c, quantize-pvt.c, quantize.c - (takehiro1): - - some bugs fixed with new scalefac struct - -2000-02-01 14:09 takehiro - - * l3side.h, lame.c, loopold.c, psymodel.c, psymodel.h, - quantize-pvt.c, quantize-pvt.h, quantize.c, quantize.h, - vbrquantize.c: - - code clean up. changed definition of structure to optimize array index calculation - -2000-02-01 11:26 takehiro - - * Makefile, fft.c, filters.c, filters.h, gtkanal.c, - l3bitstream-pvt.h, l3bitstream.c, l3bitstream.h, l3side.h, - lame.c, loopold.c, quantize-pvt.c, quantize-pvt.h, quantize.c, - quantize.h, tables.c, tables.h, takehiro.c, vbrquantize.c: - - scalefactor's structure changed - -2000-01-31 22:21 robert - - * quantize-pvt.c, quantize.c: - - little VBR tweaks - -2000-01-31 18:56 markt - - * get_audio.c, lame.c, lame.h, main.c, mp3rtp.c, mp3x.c, version.h: - - updated comments, added lame_close_infile() - -2000-01-31 18:22 markt - - * lame.c, lame.h, main.c, mp3rtp.c, mp3x.c: - - more modularizaton, fixes to mp3rtp - -2000-01-31 05:49 markt - - * mlame: - - spelling error - -2000-01-30 23:00 cisc - - * fft.c: - - Use INLINE define instead of inline. - -2000-01-30 22:19 markt - - * get_audio.c, lame.c, lame.h, parse.c: - - renamed highq quality - -2000-01-30 22:01 markt - - * mp3rtp.c: - - added Felix's email to mp3rtp.c code :-) - -2000-01-30 20:44 markt - - * lame.h: - - minor editing - -2000-01-30 20:27 markt - - * lame.c, lame.h, loopold.c, parse.c, psymodel.c, quantize-pvt.c, - quantize.c, takehiro.c: - - cleaned up highq option. - highq=0 (best quality)... 9(worst quality) - values supported so far: - highq=9 (turned on with -f) - highq=5 (default) - highq=2 (turned on with -h) - -2000-01-30 19:34 markt - - * lame.c, lame.h, machine.h, parse.c, quantize-pvt.c, takehiro.c: - - fixed bug in overflow check in count_bits - -2000-01-30 16:19 robert - - * Makefile, quantize-pvt.c, quantize-pvt.h, quantize.c: - - introduced new RH_ATH compile switch and splitted - RH_masking into RH_SIDE_VBR, RH_SIDE_CBR and - RH_QUALITY_CONTROL=n (n=1,2) - - RH_SIDE_CBR turns off side channel reduction for CBR - RH_SIDE_VBR turns off side channel reduction for VBR - RH_QUALITY_CONTROL=1 plus above switches equals RH_masking - RH_QUALITY_CONTROL=2 is tuned to be used with RH_ATH - RH_ATH changes the definition of distortion a bit: - a)PSY: noise over the PSY model threshold as average - quantization noise over PSY model threshold - b)ATH: max quantization noise of a single freq line over - the ATH threshold of that freq line - the resulting distortion is the min of a) and b) - -2000-01-30 10:54 markt - - * parse.c: - - parse_args and related code moved to parse.c - -2000-01-30 10:53 markt - - * brhist.c, brhist.h: - - vbr histogram code in seperate file - -2000-01-30 10:50 markt - - * Makefile, TODO, get_audio.c, gtkanal.c, id3tag.c, id3tag.h, - lame.c, lame.h, main.c, mp3rtp.c, mp3x.c, util.c, util.h, - Dll/BladeMP3EncDLL.c, Dll/MP3EncDll.dsp, mpglib/main.c: - - more modularization work. Calling program is now responsible for - mp3 file output - -2000-01-30 07:41 markt - - * l3side.h, loopold.c, machine.h, psymodel.c, quantize-pvt.c, - quantize-pvt.h, quantize.c, takehiro.c, vbrquantize.c: - - #ifdef NOPOW removed, replaced by table lookup. You can still - go back to pow() function or exp() by changing the POW20 and IPOW20 - macros in machine.h - -2000-01-30 06:17 takehiro - - * l3side.h, loopold.c, psymodel.c, quantize-pvt.c, quantize-pvt.h, - quantize.c, takehiro.c: - - use lookup table to calculate pow(2.0, xx).(when not defined NOPOW) - -2000-01-30 06:09 takehiro - - * fft.c: - - faster FFT implementation - -2000-01-28 00:57 cisc - - * lame.c: - - Fixed -m bug when bitrate>=160 (gf.mode_fixed was not set). - -2000-01-27 17:16 markt - - * lame.h: - - comments about varius quality options - -2000-01-27 08:27 markt - - * quantize-pvt.c: - - Fixed bug in scale_bitcount_lsf which was severely limiting the - possible scalefacters used by MPEG2. (Lionel Bonnet) - -2000-01-27 07:49 markt - - * Makefile, get_audio.c, get_audio.h, gtkanal.c, machine.h: - - minor changes - -2000-01-27 05:05 markt - - * fft.c, fft.h, psymodel.c, testcase.mp3: - - Takehiro's fft_short and fft_long now the defaults. - -2000-01-27 04:35 markt - - * rtp.c: - - more updates from Felix - -2000-01-27 03:52 cisc - - * loopold.c, psymodel.c, quantize-pvt.c, quantize.c, takehiro.c, - util.h, vbrquantize.c: - - Added NOPOW define, will replace certain pow()s with optimized variant. - -2000-01-27 02:06 cisc - - * get_audio.c: - - Removed faulty undef of bitwidth. - -2000-01-26 12:37 takehiro - - * fft.c: - - window[] and window_s[]'s buffer overrun is corrected - -2000-01-26 10:27 markt - - * filters.c, lame.c, lame.h: - - more bugs in specifigy a lowpass filter fixed. --voice mode - recast in terms of lowpass filter and other options - -2000-01-26 08:39 markt - - * psymodel.c: - - removed two c++ commends (by request) - -2000-01-26 08:00 markt - - * lame.c: - - moved frameNum=0 from lame_init to lame_init_params - -2000-01-26 07:44 markt - - * HACKING, get_audio.c, get_audio.h, globalflags.h, gtkanal.c, - lame.c, lame.h, main.c, mp3rtp.c, mp3x.c, Dll/BladeMP3EncDLL.c, - Dll/MP3EncDll.dsp: - - more modularizatin work. LAME can now be used as a true library, - without the need to construct simulated argument lists. - See HACKING for some details, and mp3rtp.c for an example. - -2000-01-25 17:50 markt - - * get_audio.c, get_audio.h, globalflags.h, lame.c: - - major work down towards libmp3lame.a: split out parse_args and - parameter setting routines. might have broken some things... - -2000-01-25 17:48 markt - - * rtp.h: - - bug fix from Felix - -2000-01-20 23:21 robert - - * lame.c: - - sfb21 parameter messages added - -2000-01-20 08:03 markt - - * lame.c: - - tweaked filter and other encoding parameter messages - -2000-01-20 07:21 markt - - * gtkanal.c, gtkanal.h, mpglib/layer3.c: - - fixed gtk scfsi printout - mpglib/layer3.c seems correct now. - -2000-01-20 06:09 markt - - * Makefile, TODO, mpglib/layer3.c: - - scfsi fixes to mpglib from Iwasa Kazmi - -2000-01-19 22:11 takehiro - - * mpglib/layer3.c: - - scalefactor for short block last sfb(12) was wrong. - -2000-01-18 18:51 afaber - - * l3bitstream.c: - - Made my bug fixes against version 1.9 instead of a previous version - -2000-01-17 22:31 afaber - - * l3bitstream.c: - - Guarded BF_FlushBitstream function call if PartHoldersInitialized equals zero. - This to avoid GPF when III_Flushbitstream is called when no data is encoder - -2000-01-16 06:49 markt - - * lame.c, lame.h, main.c: - - cleaned up main.c - -2000-01-15 20:33 markt - - * loopold.c, takehiro.c, testcase.mp3: - - added best_scalefac_store to non -h code also - -2000-01-15 14:35 takehiro - - * psymodel.c: - - little bit optimization - -2000-01-14 13:05 takehiro - - * takehiro.c: - - debug message is removed... - -2000-01-14 12:56 takehiro - - * l3bitstream.c, loopold.c, quantize-pvt.c, quantize.c, psymodel.h, - takehiro.c: - - to make it use scfsi - -2000-01-14 07:47 markt - - * doc/html/history.html: - - [no log message] - -2000-01-14 07:34 markt - - * version.h: - - version 3.61 - -2000-01-14 06:35 markt - - * lame.c, quantize.c: - - filters were incorrectly being used under VBR - -2000-01-14 05:54 markt - - * USAGE, lame.c: - - more on the -k option - -2000-01-14 05:46 markt - - * USAGE, lame.c, mpglib/main.c: - - -k option will disable *all* filtering and frequency cutoffs - -2000-01-13 20:41 robert - - * Makefile, quantize.c: - - more VBR (RH_masking) finetuning - now -V3 should give the same result as -V6 before - -2000-01-13 17:21 markt - - * lame.c, psymodel.h: - - fixed noshort option, fixed l3psycho_anal.h - -2000-01-13 16:26 takehiro - - * filters.c, get_audio.c, l3bitstream.c, lame.c, loopold.c, - newmdct.c, newmdct.h, psymodel.c, quantize-pvt.c, quantize-pvt.h, - quantize.c, reservoir.c, reservoir.h, takehiro.c, util.c, util.h, - vbrquantize.c: - - moved info.stereo into gf.stereo - -2000-01-13 07:43 markt - - * loopold.c, quantize.c: - - got rid of old, no longer used preemph code - -2000-01-13 02:07 markt - - * filters.c, get_audio.c, globalflags.h, gtkanal.c, lame.c, - psymodel.c, quantize-pvt.c, quantize-pvt.h, quantize.c, - takehiro.c, vbrquantize.c, mpglib/main.c: - - moved the rest of the global variables into gf struct - -2000-01-13 00:37 markt - - * quantize.c (debug-mat): - - some debug code - -2000-01-12 22:38 afaber - - * .cvsignore, VbrTag.c, lame.dsp: - - fixed a few casting warnings - Updated .cvsignore to ignore output of testcase - -2000-01-12 14:30 takehiro - - * filters.c, globalflags.h, l3bitstream.c, lame.c, newmdct.c, - newmdct.h, quantize-pvt.c, quantize-pvt.h, reservoir.c, - takehiro.c, util.c, vbrquantize.c: - - more simple & fast scalefac_scale use - and mode_gr is moved into gf structure. - -2000-01-11 20:23 cisc - - * amiga_mpega.c: - - Fixed timestatus bug (forgot nsamp variable). - -2000-01-11 05:46 markt - - * quantize.c (debug-mat), gtkanal.c, lame.c: - - changed axis in gtk flag - -2000-01-10 16:37 cisc - - * VbrTag.h, get_audio.c, machine.h, util.c: - - Removed AMIGA_ASYNCIO, custom modified libsndfile worked better. - -2000-01-10 09:34 takehiro - - * mpglib/layer3.c: - - debug for scalefactor reading with scfsi. - -2000-01-10 03:44 cisc - - * get_audio.c: - - Disabled open/close of mp3 when AMIGA_MPEGA and LIBSNDFILE is enabled. - -2000-01-10 02:44 cisc - - * amiga_mpega.c: - - MPGLIB replacement using mpega.library. (AmigaOS) - -2000-01-10 02:40 cisc - - * get_audio.c, mpglib/main.c: - - Removed AMIGA_ASYNCIO stuff for mpglib now that we got AMIGA_MPEGA. - -2000-01-10 02:07 cisc - - * get_audio.c, lame.h: - - Added mpega.library support for decoding mpeg audio, enable with AMIGA_MPEGA. (AmigaOS) - -2000-01-10 00:45 markt - - * loopold.c, quantize.c: - - fixed bug in loopold: scalesave loop was using SBMAX instead of SBPSY, - and exceeding bounds. - -2000-01-09 23:11 markt - - * Dll/BladeMP3EncDLL.c, doc/html/examples.html, doc/html/id3.html, - mpglib/layer3.c: - - globalflags update - -2000-01-09 23:10 markt - - * get_audio.c, globalflags.h, gtkanal.c, gtkanal.h, lame.c, - loopold.c, main.c, mp3x.c, psymodel.c, quantize-pvt.c, - quantize.c, reservoir.c, vbrquantize.c: - - moved more globalflags into the gf. struct - -2000-01-09 22:56 cisc - - * VbrTag.h, get_audio.c, machine.h, util.c, mpglib/main.c: - - Added usage of asyncio.library for improved I/O, enable with AMIGA_ASYNCIO. (AmigaOS) - -2000-01-09 22:26 markt - - * quantize.c, testcase.mp3, doc/html/history.html: - - updated validation testcase. - -2000-01-09 20:59 markt - - * Makefile, version.h: - - release 3.60beta - -2000-01-09 20:55 markt - - * testcase.mp3, testcase.wav: - - new test case: testcase.wav and 'official' output testcase.mp3 - 'make test' will perform a comparison. see makefile for details - -2000-01-09 20:52 markt - - * Makefile: - - new validation procedure - -2000-01-09 20:21 markt - - * doc/html/: history.html, index.html, switchs.html: - - updated web pages from Gabriel - -2000-01-09 16:08 cisc - - * mpglib/main.c: - - VbrTag.h wasn't included on Amiga - -2000-01-09 16:07 cisc - - * fft.c: - - Removed INLINE from fht (will get inlined as a local function anyway) - -2000-01-09 10:54 takehiro - - * l3bitstream.c, l3side.h, loopold.c, quantize-pvt.c, - quantize-pvt.h, quantize.c, takehiro.c: - - All Huffman code search algorithm is implemented. - (-h option to enable this) - more slower, but better quality. - -2000-01-09 07:51 markt - - * Makefile, psymodel.c, quantize.c: - - AAC masking function now the default. This represents less - masking then the old masking function. - -2000-01-09 07:34 markt - - * gtkanal.c, gtkanal.h, lame.c, psymodel.c, psymodel.h, quantize.c: - - compute mid/side energy rations in addition to masking ratios. - in the future we might use this for side channel bit allocation. - it is not used at all right now. - -2000-01-09 04:11 markt - - * Makefile, psymodel.c, quantize.c: - - someone mistakenly uncommented the call to preemphasis(). - this routine should *not* be used. preemph is now taken care of - in scale_bitcount. - -2000-01-08 17:57 robert - - * psymodel.c: - - define AAC_TMN_NMT at compile time to activate AAC tone masking noise - and noise masking tone values - -2000-01-08 17:56 robert - - * quantize.c: - - tuned VBR code, inactive until you define RH_masking at compile time - -2000-01-08 17:54 robert - - * Makefile: - - added suggested compiler options for gcc 2.95.2, uncomment them to activate them - -2000-01-08 17:52 robert - - * PRESETS.draft: - - changed frequencies to Lames format - -2000-01-07 06:40 markt - - * HACKING, Makefile: - - updated HACKING notes - -2000-01-07 06:13 markt - - * get_audio.c, globalflags.h, lame.c, loopold.c, psymodel.c, - quantize-pvt.c, quantize.c, reservoir.c: - - Robert's cw_lower_limit, upper_limit code back in. Default is compute - cw[] up to 8.9Khz. set with --cwlimit - - started putting global variables into global_flags struct. - -2000-01-06 05:12 markt - - * mp3rtp.c: - - more rtp updates - -2000-01-06 04:58 markt - - * lame.c, mp3rtp.c, rtp.c: - - more rtp updates - -2000-01-05 23:52 robert - - * quantize.c: - - VBR: masking lower was not set correctly - it was only set for sloppy mode, fixed now - -2000-01-05 17:40 afaber - - * mpglib/mpglib.h: - - Fixed BOOL definition conflict for Win32 systems - -2000-01-05 16:47 markt - - * Makefile, mp3rtp.c, rtp.c, rtp.h: - - added mp3rtp code. uses lame library, but not part of normal lame - encoder - -2000-01-05 10:04 markt - - * VbrTag.c, VbrTag.h, get_audio.c, l3side.h, lame.h, mpglib/main.c: - - Check for Xing header in mp3 input files - -2000-01-05 06:29 markt - - * version.h: - - updated version - -2000-01-05 06:20 markt - - * Makefile, psymodel.c: - - norm_l, norm_s table data replaced by formulas. - -2000-01-03 05:15 markt - - * INSTALL, Makefile, encoder.h, gtkanal.c, lame.c, main.c, - doc/html/contributors.html, doc/html/index.html, - doc/html/lame.css, doc/html/node6.html, doc/html/node7.html, - doc/html/switchs.html: - - new html from Gabriel. Fixed but that was causing the first frame to - always be zero. changed encoder delay to 800 to fix some other problems - and remove the buffering of the first frame in lame_encode(). - -1999-12-29 15:34 takehiro - - * doc/html/: contributors.html, history.html, index.html, - node6.html, node7.html, switchs.html: - - updated html doc written by Gabriel Bouvigne. - -1999-12-28 22:02 afaber - - * lame.dsp, Dll/BladeMP3EncDLL.c, Dll/BladeMP3EncDLL.h, - Dll/MP3EncDll.dsp, mpglib/mpglib.dsp: - - Some fixes to the Encoder DLL: - use -h instead of -k flag for high qualtiy - The voice option was set in HQ mode, which is obviously not correct - -1999-12-26 14:48 takehiro - - * l3bitstream.c, lame.c: - - some foolish bug is removed :) - -1999-12-26 09:51 takehiro - - * globalflags.h, lame.c, quantize-pvt.c: - - new option "--noath" to disable the ATH masking - -1999-12-26 09:50 takehiro - - * .cvsignore: - - ignore mp3x binary exe. - -1999-12-23 12:27 takehiro - - * quantize-pvt.c: - - guess wiser initial StepSize for bin_search_stepsize - -1999-12-22 17:38 markt - - * Makefile, psymodel.c: - - AAC NMT/TMN values (commented out) - -1999-12-22 08:03 markt - - * quantize-pvt.c: - - back to oringal (ave_noise < ATH) definition of analog silence for - VBR mode. - -1999-12-22 07:39 markt - - * psymodel.c: - - added AAC spreading function (disabled by default) - -1999-12-21 08:18 markt - - * Makefile, fft.c, l3side.h, lame.c, psymodel.c, psymodel.h, - quantize-pvt.c, quantize.c: - - Bug fix in Mid/Side masking thresholds - -1999-12-19 21:33 afaber - - * Dll/BladeMP3EncDLL.c: - - Set home page link to Lame home page - -1999-12-19 01:47 markt - - * Makefile, globalflags.h, lame.c, psymodel.c: - - went back to ISO layer III recommended cw formulas - -1999-12-19 01:15 robert - - * globalflags.h, lame.c, psymodel.c: - - patched GPSYCHO, enable with --psy-model 0 - -1999-12-17 04:24 markt - - * USAGE, globalflags.h, lame.c, reservoir.c: - - added the --nores option to disable the bitreservoir. only usefull - in special circumstances - -1999-12-16 05:24 markt - - * quantize-pvt.c: - - changed analog silence switch to use max_ener rather than ave_ener. - only affects VBR mode: when analog silence is detected, the min bitrate - is allowed to drop to 32kbs even if set higher with -b - -1999-12-14 23:51 cisc - - * fft.c: - - Changed M_PI to PI. (Not everyone has M_PI, but PI is always defined in util.h) - -1999-12-14 22:44 robert - - * PRESETS.draft: - - first sketch of what could become PRESETS for LAME - -1999-12-14 22:40 robert - - * lame.c, quantize.c: - - added new experimentalX quant_compare -X6 mode - -1999-12-14 04:38 markt - - * Makefile, fft.c, fft.h, psymodel.c: - - Takehiro's fft's back in. fft_short2(), fft_long2() will call original - fft's (with one minor change: 0 protection for ax[] and bx[] was not - needed and has been removed). Takehiro's routines are fft_short() and - fft_long(). They dont give bit-for-bit identical answers, and I still - want to track this down before making them the defaults. . - -1999-12-14 00:19 robert - - * lame.c: - - changed filter options - -1999-12-13 21:56 markt - - * version.h: - - updated version to 3.58 - -1999-12-12 21:14 robert - - * lame.c: - - grrr, mist some filter comandline combinations :( - -1999-12-12 19:22 robert - - * lame.c: - - fixed filter commandline parameter inconsistencies - -1999-12-12 19:02 markt - - * filters.c, newmdct.c, util.h: - - removed extra #define's related to PI - -1999-12-12 03:53 cisc - - * filters.c, loopold.c, newmdct.c, quantize.c, util.h: - - Added new PI and LOG predefined variants, and stuck them in at respective places. - -1999-12-11 23:37 robert - - * lame.c: - - added low/highpass filter switches - -1999-12-11 23:36 robert - - * filters.c, globalflags.h: - - added highpass filter similar to lowpass filter - fixed lowpass filter to avoid endless loops - -1999-12-11 20:13 robert - - * mlame: - - fix for filenames containing spaces - -1999-12-11 00:57 takehiro - - * .cvsignore: - - added lame binary executable itself - -1999-12-10 01:57 takehiro - - * lame.c, loopold.c, quantize.c, util.c, util.h: - - little bit good subblock_gain calculation. - and nint2 is removed. - -1999-12-09 15:17 takehiro - - * loopold.c: - - little bit clean up. some variable restoring is removed. - -1999-12-09 07:07 markt - - * quantize-pvt.c, quantize-pvt.h, quantize.c, takehiro.c: - - PRECALC_SIZE bug? - PRECALC_SIZE should be 8191+15+1, since max value of xr/ix is 8191+15. - -1999-12-09 06:29 markt - - * loopold.c: - - cod_info-> should be cod_info[ch]-> - -1999-12-09 02:34 takehiro - - * loopold.c, quantize.c: - - Oops, stepsize history was not recorded. - -1999-12-09 02:28 takehiro - - * loopold.c, quantize-pvt.c, quantize-pvt.h, quantize.c: - - initial value of binary search is separeted by channels. - maybe faster bin_search_stepsize - -1999-12-09 00:44 cisc - - * l3bitstream-pvt.h: - - Removed write_ancillary_data() prototype. (No longer used) - -1999-12-09 00:38 cisc - - * takehiro.c: - - Included the correct quantize header. (quantize-pvt.h instead of quantize.h) - -1999-12-08 19:39 cisc - - * util.h: - - Adjusted PI/SQRT2 precision. (SQRT2 deviated from standard math.h value) - -1999-12-08 19:37 cisc - - * mpglib/mpg123.h: - - Fixed M_PI/M_SQRT2 to work on all platforms. Removed unused INLINE. - -1999-12-08 13:45 takehiro - - * mpglib/layer3.c: - - debug about scfsi treatment - -1999-12-08 06:27 markt - - * Makefile, lame.c: - - fixed display bug for VBR histogram under ncurses. Now termcap - is replaced by the more modern ncurses. - -1999-12-08 05:46 markt - - * psymodel.c, takehiro.c: - - avoid bounds check on xr[] for non-hq mode, from Mat. - spelling error in psymodel.c fixed :-) - -1999-12-08 05:24 markt - - * TODO: - - [no log message] - -1999-12-08 03:49 takehiro - - * psymodel.c: - - debugged possible buffer overrun. - -1999-12-07 22:58 cisc - - * mpglib/layer3.c: - - No GTK on Amiga. :( - -1999-12-07 22:56 cisc - - * main.c: - - Removed redundant __buffsize (SAS/C (AmigaOS)) - -1999-12-07 05:11 markt - - * Makefile, TODO, quantize-pvt.c: - - removed -.5 from quantize_xrpow - -1999-12-07 02:04 markt - - * fft.c, fft.h, lame.c, psymodel.c, quantize-pvt.c: - - backed out takehiro's fft changes for now - added latest quantize_xrpow asm from Acy and Mat - -1999-12-06 22:45 takehiro - - * fft.c: - - lookup table integration - -1999-12-06 20:38 afaber - - * fft.c, lame.h, machine.h, psymodel.c: - - Fixed compiler errors - -1999-12-03 10:13 takehiro - - * fft.c, fft.h, psymodel.c: - - maybe faster FFT coding - -1999-12-03 10:11 takehiro - - * l3bitstream.c: - - foolish mistake has removed :) - -1999-12-03 09:45 takehiro - - * l3bitstream.c, l3bitstream.h, lame.c: - - little bit cleanup - -1999-12-02 17:01 takehiro - - * loopold.c, quantize-pvt.c, quantize-pvt.h, quantize.c, - takehiro.c: - - correct adj43 overrun(maybe) - -1999-11-30 19:30 afaber - - * Dll/.cvsignore, mpglib/.cvsignore: - - Added .cvsignore files in sub projects - -1999-11-30 19:27 afaber - - * .cvsignore, gtkanal.c, lame.dsp, util.c, mpglib/mpglib.dsp: - - Added Win32 specific output files to .cvsignore - updated project files to set proper output directory and fixed alignment - problem between mpglib project and lame project, now all modules - have 8 byte alignment in all configurations - -1999-11-29 19:54 takehiro - - * .cvsignore: - - configure ignoring *.d file - -1999-11-29 19:48 takehiro - - * quantize.c: - - And more cleanup. needless variable store/restores are removed. - -1999-11-29 19:39 takehiro - - * quantize.c: - - little bit code cleanup(deleted needless call of scale_bitcount) - sorry, it is not bugfix of "TOO LARGE quantizerStepSize" ;p - -1999-11-29 16:34 markt - - * loopold.c, quantize-pvt.h, quantize.c: - - removed unused VBRbits from non-VBR quant routines - -1999-11-29 03:13 markt - - * loopold.c, quantize-pvt.c, quantize.c: - - scalefactor preemph *correctly* turned back on - -1999-11-29 02:55 markt - - * loopold.c, quantize-pvt.c: - - scalefac pre-emph turned back on in loopold.c - -1999-11-29 02:45 markt - - * encoder.h, gtkanal.h, l3side.h, lame.c, newmdct.c, psymodel.c, - psymodel.h, quantize.c, util.c: - - MS stereo switch slightly improved: old formula was based on the average - of ms_ratio of both granules. New formula uses ms_ratio from both - granules and the previous and next granule. This will help avoid toggleing - MS stereo off for a single frame. Long runs of MS stereo or regular - stereo will not be affected. - - also fixed a bug in frame analyzer - it was accessing l3_xmin in the last - scalefactor (l3_xmin and maskings are not computed for last scalefactor) - -1999-11-28 23:00 afaber - - * lame.c, lame.dsp, Dll/MP3EncDll.dsp: - - More fixes in order to compile under Win32 - -1999-11-28 22:42 afaber - - * lame.dsp, quantize-pvt.c: - - Fixes to compile under Win32 - -1999-11-28 22:21 afaber - - * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.def, BladeMP3EncDLL.h, - MP3EncDll.dsp, MP3EncDll.dsw: - - Update of Blade DLL interface in order to support new lame features - -1999-11-28 06:45 markt - - * quantize-pvt.c: - - updated comments - -1999-11-28 06:36 markt - - * USAGE, quantize-pvt.c, quantize-pvt.h, vbrquantize.c: - - ASM routines (gcc & MSVC) for quantize_xrpow - -1999-11-28 01:01 markt - - * Makefile, TODO, lame.c, quantize-pvt.c, quantize-pvt.h, - quantize.c: - - If analog silence is detected, allow VBR code to over ride the VBR_min_bitrate - setting and encode at 32kbs. - -1999-11-27 23:39 markt - - * Makefile, formatBitstream.c, l3bitstream.c, lame.c, - quantize-pvt.c, quantize-pvt.h, quantize.c, util.c, - vbrquantize.c: - - More accurate quantization from Segher Boessenkool - -1999-11-25 19:27 markt - - * util.c: - - fixed allowable bitrate displays - -1999-11-24 08:43 markt - - * loopold.c, main.c, mlame, mp3x.c, timestatus.c, portableio.c, - portableio.h, reservoir.c, reservoir.h, tables.h, timestatus.h, - version.c, newmdct.h, quantize.h, takehiro.c, debugscalefac.c, - encoder.h, machine.h, filters.c, quantize-pvt.h, HACKING, - filters.h, vbrquantize.c, Dll/MP3EncDll.dsp, - Dll/BladeMP3EncDLL.c, Dll/BladeMP3EncDLL.def, - Dll/BladeMP3EncDLL.h, Dll/MP3EncDll.dsw, doc/html/index.html, - doc/html/lame.css, doc/html/node7.html, doc/html/node5.html, - doc/html/contributors.html, doc/html/node6.html, - doc/html/history.html, doc/html/switchs.html, doc/man/lame.1, - mpglib/Makefile, mpglib/README, mpglib/TODO, mpglib/common.c, - mpglib/dct64_i386.c, mpglib/decode_i386.c, mpglib/huffman.h, - mpglib/interface.c, mpglib/layer3.c, mpglib/main.c, - mpglib/mpglib.dsp, mpglib/mpg123.h, mpglib/mpglib.h, - mpglib/tabinit.c: - - Initial revision - -1999-11-24 08:43 markt - - * loopold.c, main.c, mlame, mp3x.c, timestatus.c, portableio.c, - portableio.h, reservoir.c, reservoir.h, tables.h, timestatus.h, - version.c, newmdct.h, quantize.h, takehiro.c, debugscalefac.c, - encoder.h, machine.h, filters.c, quantize-pvt.h, HACKING, - filters.h, vbrquantize.c, Dll/MP3EncDll.dsp, - Dll/BladeMP3EncDLL.c, Dll/BladeMP3EncDLL.def, - Dll/BladeMP3EncDLL.h, Dll/MP3EncDll.dsw, doc/html/index.html, - doc/html/lame.css, doc/html/node7.html, doc/html/node5.html, - doc/html/contributors.html, doc/html/node6.html, - doc/html/history.html, doc/html/switchs.html, doc/man/lame.1, - mpglib/Makefile, mpglib/README, mpglib/TODO, mpglib/common.c, - mpglib/dct64_i386.c, mpglib/decode_i386.c, mpglib/huffman.h, - mpglib/interface.c, mpglib/layer3.c, mpglib/main.c, - mpglib/mpglib.dsp, mpglib/mpg123.h, mpglib/mpglib.h, - mpglib/tabinit.c: - - initial checkin of LAME - Starting with LAME 3.57beta with some modifications - -1999-11-24 08:40 markt - - * COPYING, INSTALL, Makefile, Makefile.MSVC, tables.c, util.c, - README, README.WINGTK, TODO, USAGE, fft.c, VbrTag.c, VbrTag.h, - auenc, fft.h, psymodel.c, lame.dsp, util.h, formatBitstream.c, - formatBitstream.h, get_audio.c, lame.c, get_audio.h, - globalflags.h, gpkplotting.c, gpkplotting.h, gtkanal.c, - gtkanal.h, quantize.c, version.h, newmdct.c, id3tag.c, id3tag.h, - ieeefloat.c, ieeefloat.h, l3bitstream-pvt.h, l3bitstream.c, - l3bitstream.h, LICENSE, l3side.h, lame.dsw, quantize-pvt.c, - lame.h, psymodel.h: - - Initial revision - -1999-11-24 08:40 markt - - * COPYING, INSTALL, Makefile, Makefile.MSVC, tables.c, util.c, - README, README.WINGTK, TODO, USAGE, fft.c, VbrTag.c, VbrTag.h, - auenc, fft.h, psymodel.c, lame.dsp, util.h, formatBitstream.c, - formatBitstream.h, get_audio.c, lame.c, get_audio.h, - globalflags.h, gpkplotting.c, gpkplotting.h, gtkanal.c, - gtkanal.h, quantize.c, version.h, newmdct.c, id3tag.c, id3tag.h, - ieeefloat.c, ieeefloat.h, l3bitstream-pvt.h, l3bitstream.c, - l3bitstream.h, LICENSE, l3side.h, lame.dsw, quantize-pvt.c, - lame.h, psymodel.h: - - initial checkin of LAME - Starting with LAME 3.57beta with some modifications - diff --git a/platform/win32/msvc/external/lame/DEFINES b/platform/win32/msvc/external/lame/DEFINES deleted file mode 100644 index b4fab79d682..00000000000 --- a/platform/win32/msvc/external/lame/DEFINES +++ /dev/null @@ -1,45 +0,0 @@ -$Id: DEFINES,v 1.23 2003/02/07 18:17:41 bouvigne Exp $ - -USE_FAST_LOG: - - use of log/log10 approximation (uses IEEE754 float format) - (absolute precision of log10 is then around 1e-6) - -KLEMM_36: - - portability fixes in the IO code - -NON_LINEAR_PSYMODEL - - use a non linear psymodel in the GPSYCHO case - -USE_GOGO_SUBBAND: - ? - -NOTABLES (default): - ? - -NEWS3: - ? - -NORES_TEST (allways on): - - don't let the 2nd granule use bits saved by the 1st granule - - useful for testing only - -NEW_DRAIN (theres a define above: NEW_DRAINXX): - ? - comment: - mdb_bytes = x/8; m ?= n ?= o ?= 8* mdb_bytes; p ?= mdb_bytes - ( ? == [+-] ) - - optimization should handle this, but it looks ugly - - do we lose precision here? - -LAME_STD_PRINT: - - more verbose output? - -PRECOMPUTE (always on, multiple defines): - - precomputes blackman window? - -USE_GNUC_ASM: - - speed optimization - (should move into configure.in) - -... alot of #if 0 / #if 1 not evaluated ... - diff --git a/platform/win32/msvc/external/lame/Dll/BladeMP3EncDLL.c b/platform/win32/msvc/external/lame/Dll/BladeMP3EncDLL.c deleted file mode 100644 index 045f1da6102..00000000000 --- a/platform/win32/msvc/external/lame/Dll/BladeMP3EncDLL.c +++ /dev/null @@ -1,1028 +0,0 @@ -/* -* Blade DLL Interface for LAME. -* -* Copyright (c) 1999 - 2002 A.L. Faber -* -* 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 -#include -#include "BladeMP3EncDLL.h" -#include -#include - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define Min(A, B) ((A) < (B) ? (A) : (B)) -#define Max(A, B) ((A) > (B) ? (A) : (B)) - -#define _RELEASEDEBUG 0 - -// lame_enc DLL version number -const BYTE MAJORVERSION = 1; -const BYTE MINORVERSION = 32; - - -// Local variables -static DWORD dwSampleBufferSize=0; -static HMODULE gs_hModule=NULL; -static BOOL gs_bLogFile=FALSE; -static lame_global_flags* gfp_save = NULL; - -// Local function prototypes -static void dump_config( lame_global_flags* gfp ); -static void DebugPrintf( const char* pzFormat, ... ); -static void DispErr( char const* strErr ); -static void PresetOptions( lame_global_flags *gfp, LONG myPreset ); - - -static void DebugPrintf(const char* pzFormat, ...) -{ - char szBuffer[1024]={'\0',}; - char szFileName[MAX_PATH+1]={'\0',}; - va_list ap; - - // Get the full module (DLL) file name - GetModuleFileNameA( gs_hModule, - szFileName, - sizeof( szFileName ) ); - - // change file name extention - szFileName[ strlen(szFileName) - 3 ] = 't'; - szFileName[ strlen(szFileName) - 2 ] = 'x'; - szFileName[ strlen(szFileName) - 1 ] = 't'; - - // start at beginning of the list - va_start(ap, pzFormat); - - // copy it to the string buffer - _vsnprintf(szBuffer, sizeof(szBuffer), pzFormat, ap); - - // log it to the file? - if ( gs_bLogFile ) - { - FILE* fp = NULL; - - // try to open the log file - fp=fopen( szFileName, "a+" ); - - // check file open result - if (fp) - { - // write string to the file - fputs(szBuffer,fp); - - // close the file - fclose(fp); - } - } - -#if defined _DEBUG || defined _RELEASEDEBUG - OutputDebugStringA( szBuffer ); -#endif - - va_end(ap); -} - - -static void PresetOptions( lame_global_flags *gfp, LONG myPreset ) -{ - switch (myPreset) - { - /*-1*/case LQP_NOPRESET: - break; - - /*0*/case LQP_NORMAL_QUALITY: - /* lame_set_quality( gfp, 5 );*/ - break; - - /*1*/case LQP_LOW_QUALITY: - lame_set_quality( gfp, 9 ); - break; - - /*2*/case LQP_HIGH_QUALITY: - lame_set_quality( gfp, 2 ); - break; - - /*3*/case LQP_VOICE_QUALITY: // --voice flag for experimental voice mode - lame_set_mode( gfp, MONO ); - lame_set_preset( gfp, 56); - break; - - /*4*/case LQP_R3MIX: // --R3MIX - lame_set_preset( gfp, R3MIX); - break; - - /*5*/case LQP_VERYHIGH_QUALITY: - lame_set_quality( gfp, 0 ); - break; - - /*6*/case LQP_STANDARD: // --PRESET STANDARD - lame_set_preset( gfp, STANDARD); - break; - - /*7*/case LQP_FAST_STANDARD: // --PRESET FAST STANDARD - lame_set_preset( gfp, STANDARD_FAST); - break; - - /*8*/case LQP_EXTREME: // --PRESET EXTREME - lame_set_preset( gfp, EXTREME); - break; - - /*9*/case LQP_FAST_EXTREME: // --PRESET FAST EXTREME: - lame_set_preset( gfp, EXTREME_FAST); - break; - - /*10*/case LQP_INSANE: // --PRESET INSANE - lame_set_preset( gfp, INSANE); - break; - - /*11*/case LQP_ABR: // --PRESET ABR - // handled in beInitStream - break; - - /*12*/case LQP_CBR: // --PRESET CBR - // handled in beInitStream - break; - - /*13*/case LQP_MEDIUM: // --PRESET MEDIUM - lame_set_preset( gfp, MEDIUM); - break; - - /*14*/case LQP_FAST_MEDIUM: // --PRESET FAST MEDIUM - lame_set_preset( gfp, MEDIUM_FAST); - break; - - /*1000*/case LQP_PHONE: - lame_set_mode( gfp, MONO ); - lame_set_preset( gfp, 16); - break; - - /*2000*/case LQP_SW: - lame_set_mode( gfp, MONO ); - lame_set_preset( gfp, 24); - break; - - /*3000*/case LQP_AM: - lame_set_mode( gfp, MONO ); - lame_set_preset( gfp, 40); - break; - - /*4000*/case LQP_FM: - lame_set_preset( gfp, 112); - break; - - /*5000*/case LQP_VOICE: - lame_set_mode( gfp, MONO ); - lame_set_preset( gfp, 56); - break; - - /*6000*/case LQP_RADIO: - lame_set_preset( gfp, 112); - break; - - /*7000*/case LQP_TAPE: - lame_set_preset( gfp, 112); - break; - - /*8000*/case LQP_HIFI: - lame_set_preset( gfp, 160); - break; - - /*9000*/case LQP_CD: - lame_set_preset( gfp, 192); - break; - - /*10000*/case LQP_STUDIO: - lame_set_preset( gfp, 256); - break; - - } -} - - -__declspec(dllexport) BE_ERR beInitStream(PBE_CONFIG pbeConfig, PDWORD dwSamples, PDWORD dwBufferSize, PHBE_STREAM phbeStream) -{ - int actual_bitrate; - //2001-12-18 - BE_CONFIG lameConfig = { 0, }; - int nInitReturn = 0; - lame_global_flags* gfp = NULL; - - // Init the global flags structure - gfp = lame_init(); - *phbeStream = (HBE_STREAM)gfp; - - // clear out structure - memset(&lameConfig,0x00,CURRENT_STRUCT_SIZE); - - // Check if this is a regular BLADE_ENCODER header - if (pbeConfig->dwConfig!=BE_CONFIG_LAME) - { - int nCRC=pbeConfig->format.mp3.bCRC; - int nVBR=(nCRC>>12)&0x0F; - - // Copy parameter from old Blade structure - lameConfig.format.LHV1.dwSampleRate =pbeConfig->format.mp3.dwSampleRate; - //for low bitrates, LAME will automatically downsample for better - //sound quality. Forcing output samplerate = input samplerate is not a good idea - //unless the user specifically requests it: - //lameConfig.format.LHV1.dwReSampleRate=pbeConfig->format.mp3.dwSampleRate; - lameConfig.format.LHV1.nMode =(pbeConfig->format.mp3.byMode&0x0F); - lameConfig.format.LHV1.dwBitrate =pbeConfig->format.mp3.wBitrate; - lameConfig.format.LHV1.bPrivate =pbeConfig->format.mp3.bPrivate; - lameConfig.format.LHV1.bOriginal =pbeConfig->format.mp3.bOriginal; - lameConfig.format.LHV1.bCRC =nCRC&0x01; - lameConfig.format.LHV1.bCopyright =pbeConfig->format.mp3.bCopyright; - - // Fill out the unknowns - lameConfig.format.LHV1.dwStructSize=CURRENT_STRUCT_SIZE; - lameConfig.format.LHV1.dwStructVersion=CURRENT_STRUCT_VERSION; - - // Get VBR setting from fourth nibble - if ( nVBR>0 ) - { - lameConfig.format.LHV1.bWriteVBRHeader = TRUE; - lameConfig.format.LHV1.bEnableVBR = TRUE; - lameConfig.format.LHV1.nVBRQuality = nVBR-1; - } - - // Get Quality from third nibble - lameConfig.format.LHV1.nPreset=((nCRC>>8)&0x0F); - - } - else - { - // Copy the parameters - memcpy(&lameConfig,pbeConfig,pbeConfig->format.LHV1.dwStructSize); - } - - // --------------- Set arguments to LAME encoder ------------------------- - - // Set input sample frequency - lame_set_in_samplerate( gfp, lameConfig.format.LHV1.dwSampleRate ); - - // disable INFO/VBR tag by default. - // if this tag is used, the calling program must call beWriteVBRTag() - // after encoding. But the original DLL documentation does not - // require the - // app to call beWriteVBRTag() unless they have specifically - // set LHV1.bWriteVBRHeader=TRUE. Thus the default setting should - // be disabled. - lame_set_bWriteVbrTag( gfp, 0 ); - - //2001-12-18 Dibrom's ABR preset stuff - - if(lameConfig.format.LHV1.nPreset == LQP_ABR) // --ALT-PRESET ABR - { - actual_bitrate = lameConfig.format.LHV1.dwVbrAbr_bps / 1000; - - // limit range - if( actual_bitrate > 320) - { - actual_bitrate = 320; - } - - if( actual_bitrate < 8 ) - { - actual_bitrate = 8; - } - - lame_set_preset( gfp, actual_bitrate ); - } - - // end Dibrom's ABR preset 2001-12-18 ****** START OF CBR - - if(lameConfig.format.LHV1.nPreset == LQP_CBR) // --ALT-PRESET CBR - { - actual_bitrate = lameConfig.format.LHV1.dwBitrate; - lame_set_preset(gfp, actual_bitrate); - lame_set_VBR(gfp, vbr_off); - } - - // end Dibrom's CBR preset 2001-12-18 - - // The following settings only used when preset is not one of the LAME QUALITY Presets - if ( (int)lameConfig.format.LHV1.nPreset < (int) LQP_STANDARD ) - { - switch ( lameConfig.format.LHV1.nMode ) - { - case BE_MP3_MODE_STEREO: - lame_set_mode( gfp, STEREO ); - lame_set_num_channels( gfp, 2 ); - break; - case BE_MP3_MODE_JSTEREO: - lame_set_mode( gfp, JOINT_STEREO ); - lame_set_num_channels( gfp, 2 ); - break; - case BE_MP3_MODE_MONO: - lame_set_mode( gfp, MONO ); - lame_set_num_channels( gfp, 1 ); - break; - case BE_MP3_MODE_DUALCHANNEL: //warning: there is NO dual channel option working in Lame - lame_set_force_ms( gfp, 1 ); - lame_set_mode( gfp, STEREO ); - lame_set_num_channels( gfp, 2 ); - break; - default: - { - DebugPrintf("Invalid lameConfig.format.LHV1.nMode, value is %d\n",lameConfig.format.LHV1.nMode); - return BE_ERR_INVALID_FORMAT_PARAMETERS; - } - } - - if ( lameConfig.format.LHV1.bEnableVBR ) - { - /* set VBR quality */ - lame_set_VBR_q( gfp, lameConfig.format.LHV1.nVBRQuality ); - - /* select proper VBR method */ - switch ( lameConfig.format.LHV1.nVbrMethod) - { - case VBR_METHOD_NONE: - lame_set_VBR( gfp, vbr_off ); - break; - - case VBR_METHOD_DEFAULT: - lame_set_VBR( gfp, vbr_default ); - break; - - case VBR_METHOD_OLD: - lame_set_VBR( gfp, vbr_rh ); - break; - - case VBR_METHOD_MTRH: - case VBR_METHOD_NEW: - /* - * the --vbr-mtrh commandline switch is obsolete. - * now --vbr-mtrh is known as --vbr-new - */ - lame_set_VBR( gfp, vbr_mtrh ); - break; - - case VBR_METHOD_ABR: - lame_set_VBR( gfp, vbr_abr ); - break; - - default: - /* unsupported VBR method */ - assert( FALSE ); - } - } - else - { - /* use CBR encoding method, so turn off VBR */ - lame_set_VBR( gfp, vbr_off ); - } - - /* Set bitrate. (CDex users always specify bitrate=Min bitrate when using VBR) */ - lame_set_brate( gfp, lameConfig.format.LHV1.dwBitrate ); - - /* check if we have to use ABR, in order to backwards compatible, this - * condition should still be checked indepedent of the nVbrMethod method - */ - if (lameConfig.format.LHV1.dwVbrAbr_bps > 0 ) - { - /* set VBR method to ABR */ - lame_set_VBR( gfp, vbr_abr ); - - /* calculate to kbps, round to nearest kbps */ - lame_set_VBR_mean_bitrate_kbps( gfp, ( lameConfig.format.LHV1.dwVbrAbr_bps + 500 ) / 1000 ); - - /* limit range */ - if( lame_get_VBR_mean_bitrate_kbps( gfp ) > 320) - { - lame_set_VBR_mean_bitrate_kbps( gfp, 320 ); - } - - if( lame_get_VBR_mean_bitrate_kbps( gfp ) < 8 ) - { - lame_set_VBR_mean_bitrate_kbps( gfp, 8 ); - } - } - - } - - // First set all the preset options - if ( LQP_NOPRESET != lameConfig.format.LHV1.nPreset ) - { - PresetOptions( gfp, lameConfig.format.LHV1.nPreset ); - } - - - // Set frequency resampling rate, if specified - if ( lameConfig.format.LHV1.dwReSampleRate > 0 ) - { - lame_set_out_samplerate( gfp, lameConfig.format.LHV1.dwReSampleRate ); - } - - - switch ( lameConfig.format.LHV1.nMode ) - { - case BE_MP3_MODE_MONO: - lame_set_mode( gfp, MONO ); - lame_set_num_channels( gfp, 1 ); - break; - - default: - break; - } - - - // Use strict ISO encoding? - lame_set_strict_ISO( gfp, ( lameConfig.format.LHV1.bStrictIso ) ? 1 : 0 ); - - // Set copyright flag? - if ( lameConfig.format.LHV1.bCopyright ) - { - lame_set_copyright( gfp, 1 ); - } - - // Do we have to tag it as non original - if ( !lameConfig.format.LHV1.bOriginal ) - { - lame_set_original( gfp, 0 ); - } - else - { - lame_set_original( gfp, 1 ); - } - - // Add CRC? - if ( lameConfig.format.LHV1.bCRC ) - { - lame_set_error_protection( gfp, 1 ); - } - else - { - lame_set_error_protection( gfp, 0 ); - } - - // Set private bit? - if ( lameConfig.format.LHV1.bPrivate ) - { - lame_set_extension( gfp, 1 ); - } - else - { - lame_set_extension( gfp, 0 ); - } - - - // Set VBR min bitrate, if specified - if ( lameConfig.format.LHV1.dwBitrate > 0 ) - { - lame_set_VBR_min_bitrate_kbps( gfp, lameConfig.format.LHV1.dwBitrate ); - } - - // Set Maxbitrate, if specified - if ( lameConfig.format.LHV1.dwMaxBitrate > 0 ) - { - lame_set_VBR_max_bitrate_kbps( gfp, lameConfig.format.LHV1.dwMaxBitrate ); - } - // Set bit resovoir option - if ( lameConfig.format.LHV1.bNoRes ) - { - lame_set_disable_reservoir( gfp,1 ); - } - - // check if the VBR tag is required - if ( lameConfig.format.LHV1.bWriteVBRHeader ) - { - lame_set_bWriteVbrTag( gfp, 1 ); - } - else - { - lame_set_bWriteVbrTag( gfp, 0 ); - } - - // Override Quality setting, use HIGHBYTE = NOT LOWBYTE to be backwards compatible - if ( ( lameConfig.format.LHV1.nQuality & 0xFF ) == - ((~( lameConfig.format.LHV1.nQuality >> 8 )) & 0xFF) ) - { - lame_set_quality( gfp, lameConfig.format.LHV1.nQuality & 0xFF ); - } - - if ( 0 != ( nInitReturn = lame_init_params( gfp ) ) ) - { - return nInitReturn; - } - - //LAME encoding call will accept any number of samples. - if ( 0 == lame_get_version( gfp ) ) - { - // For MPEG-II, only 576 samples per frame per channel - *dwSamples= 576 * lame_get_num_channels( gfp ); - } - else - { - // For MPEG-I, 1152 samples per frame per channel - *dwSamples= 1152 * lame_get_num_channels( gfp ); - } - - // Set the input sample buffer size, so we know what we can expect - dwSampleBufferSize = *dwSamples; - - // Set MP3 buffer size, conservative estimate - *dwBufferSize=(DWORD)( 1.25 * ( *dwSamples / lame_get_num_channels( gfp ) ) + 7200 ); - - // For debugging purposes - dump_config( gfp ); - - // Everything went OK, thus return SUCCESSFUL - return BE_ERR_SUCCESSFUL; -} - - - -__declspec(dllexport) BE_ERR beFlushNoGap(HBE_STREAM hbeStream, PBYTE pOutput, PDWORD pdwOutput) -{ - int nOutputSamples = 0; - - lame_global_flags* gfp = (lame_global_flags*)hbeStream; - - // Init the global flags structure - nOutputSamples = lame_encode_flush_nogap( gfp, pOutput, LAME_MAXMP3BUFFER ); - - if ( nOutputSamples < 0 ) - { - *pdwOutput = 0; - return BE_ERR_BUFFER_TOO_SMALL; - } - else - { - *pdwOutput = nOutputSamples; - } - - return BE_ERR_SUCCESSFUL; -} - -__declspec(dllexport) BE_ERR beDeinitStream(HBE_STREAM hbeStream, PBYTE pOutput, PDWORD pdwOutput) -{ - int nOutputSamples = 0; - - lame_global_flags* gfp = (lame_global_flags*)hbeStream; - - nOutputSamples = lame_encode_flush( gfp, pOutput, 0 ); - - if ( nOutputSamples < 0 ) - { - *pdwOutput = 0; - return BE_ERR_BUFFER_TOO_SMALL; - } - else - { - *pdwOutput = nOutputSamples; - } - - return BE_ERR_SUCCESSFUL; -} - - -__declspec(dllexport) BE_ERR beCloseStream(HBE_STREAM hbeStream) -{ - lame_global_flags* gfp = (lame_global_flags*)hbeStream; - - // lame will be close in VbrWriteTag function - if ( !lame_get_bWriteVbrTag( gfp ) ) - { - // clean up of allocated memory - lame_close( gfp ); - - gfp_save = NULL; - } - else - { - gfp_save = (lame_global_flags*)hbeStream; - } - - // DeInit encoder - return BE_ERR_SUCCESSFUL; -} - - - -__declspec(dllexport) VOID beVersion(PBE_VERSION pbeVersion) -{ - // DLL Release date - char lpszDate[20] = { '\0', }; - char lpszTemp[5] = { '\0', }; - lame_version_t lv = { 0, }; - - - // Set DLL interface version - pbeVersion->byDLLMajorVersion=MAJORVERSION; - pbeVersion->byDLLMinorVersion=MINORVERSION; - - get_lame_version_numerical ( &lv ); - - // Set Engine version number (Same as Lame version) - pbeVersion->byMajorVersion = (BYTE)lv.major; - pbeVersion->byMinorVersion = (BYTE)lv.minor; - pbeVersion->byAlphaLevel = (BYTE)lv.alpha; - pbeVersion->byBetaLevel = (BYTE)lv.beta; - -#ifdef MMX_choose_table - pbeVersion->byMMXEnabled=1; -#else - pbeVersion->byMMXEnabled=0; -#endif - - memset( pbeVersion->btReserved, 0, sizeof( pbeVersion->btReserved ) ); - - // Get compilation date - strcpy(lpszDate,__DATE__); - - // Get the first three character, which is the month - strncpy(lpszTemp,lpszDate,3); - lpszTemp[3] = '\0'; - pbeVersion->byMonth=1; - - // Set month - if (strcmp(lpszTemp,"Jan")==0) pbeVersion->byMonth = 1; - if (strcmp(lpszTemp,"Feb")==0) pbeVersion->byMonth = 2; - if (strcmp(lpszTemp,"Mar")==0) pbeVersion->byMonth = 3; - if (strcmp(lpszTemp,"Apr")==0) pbeVersion->byMonth = 4; - if (strcmp(lpszTemp,"May")==0) pbeVersion->byMonth = 5; - if (strcmp(lpszTemp,"Jun")==0) pbeVersion->byMonth = 6; - if (strcmp(lpszTemp,"Jul")==0) pbeVersion->byMonth = 7; - if (strcmp(lpszTemp,"Aug")==0) pbeVersion->byMonth = 8; - if (strcmp(lpszTemp,"Sep")==0) pbeVersion->byMonth = 9; - if (strcmp(lpszTemp,"Oct")==0) pbeVersion->byMonth = 10; - if (strcmp(lpszTemp,"Nov")==0) pbeVersion->byMonth = 11; - if (strcmp(lpszTemp,"Dec")==0) pbeVersion->byMonth = 12; - - // Get day of month string (char [4..5]) - pbeVersion->byDay = (BYTE) atoi( lpszDate + 4 ); - - // Get year of compilation date (char [7..10]) - pbeVersion->wYear = (WORD) atoi( lpszDate + 7 ); - - memset( pbeVersion->zHomepage, 0x00, BE_MAX_HOMEPAGE ); - - strcpy( pbeVersion->zHomepage, "http://www.mp3dev.org/" ); -} - -__declspec(dllexport) BE_ERR beEncodeChunk(HBE_STREAM hbeStream, DWORD nSamples, - PSHORT pSamples, PBYTE pOutput, PDWORD pdwOutput) -{ - // Encode it - int dwSamples; - int nOutputSamples = 0; - lame_global_flags* gfp = (lame_global_flags*)hbeStream; - - dwSamples = nSamples / lame_get_num_channels( gfp ); - - // old versions of lame_enc.dll required exactly 1152 samples - // and worked even if nSamples accidently set to 2304 - // simulate this behavoir: - if ( 1 == lame_get_num_channels( gfp ) && nSamples == 2304) - { - dwSamples/= 2; - } - - - if ( 1 == lame_get_num_channels( gfp ) ) - { - nOutputSamples = lame_encode_buffer(gfp,pSamples,pSamples,dwSamples,pOutput,0); - } - else - { - nOutputSamples = lame_encode_buffer_interleaved(gfp,pSamples,dwSamples,pOutput,0); - } - - - if ( nOutputSamples < 0 ) - { - *pdwOutput=0; - return BE_ERR_BUFFER_TOO_SMALL; - } - else - { - *pdwOutput = (DWORD)nOutputSamples; - } - - return BE_ERR_SUCCESSFUL; -} - - -// accept floating point audio samples, scaled to the range of a signed 16-bit -// integer (within +/- 32768), in non-interleaved channels -- DSPguru, jd -__declspec(dllexport) BE_ERR beEncodeChunkFloatS16NI(HBE_STREAM hbeStream, DWORD nSamples, - PFLOAT buffer_l, PFLOAT buffer_r, PBYTE pOutput, PDWORD pdwOutput) -{ - int nOutputSamples; - lame_global_flags* gfp = (lame_global_flags*)hbeStream; - - nOutputSamples = lame_encode_buffer_float(gfp,buffer_l,buffer_r,nSamples,pOutput,0); - - if ( nOutputSamples >= 0 ) - { - *pdwOutput = (DWORD) nOutputSamples; - } - else - { - *pdwOutput=0; - return BE_ERR_BUFFER_TOO_SMALL; - } - - return BE_ERR_SUCCESSFUL; -} - -static int -maybeSyncWord(FILE* fpStream) -{ - unsigned char mp3_frame_header[4]; - size_t nbytes = fread(mp3_frame_header, 1, sizeof(mp3_frame_header), fpStream); - if ( nbytes != sizeof(mp3_frame_header) ) { - return -1; - } - if ( mp3_frame_header[0] != 0xffu ) { - return -1; /* doesn't look like a sync word */ - } - if ( (mp3_frame_header[1] & 0xE0u) != 0xE0u ) { - return -1; /* doesn't look like a sync word */ - } - return 0; -} - -static int -skipId3v2(FILE * fpStream, size_t lametag_frame_size) -{ - size_t nbytes; - size_t id3v2TagSize = 0; - unsigned char id3v2Header[10]; - - /* seek to the beginning of the stream */ - if (fseek(fpStream, 0, SEEK_SET) != 0) { - return -2; /* not seekable, abort */ - } - /* read 10 bytes in case there's an ID3 version 2 header here */ - nbytes = fread(id3v2Header, 1, sizeof(id3v2Header), fpStream); - if (nbytes != sizeof(id3v2Header)) { - return -3; /* not readable, maybe opened Write-Only */ - } - /* does the stream begin with the ID3 version 2 file identifier? */ - if (!strncmp((char *) id3v2Header, "ID3", 3)) { - /* the tag size (minus the 10-byte header) is encoded into four - * bytes where the most significant bit is clear in each byte - */ - id3v2TagSize = (((id3v2Header[6] & 0x7f) << 21) - | ((id3v2Header[7] & 0x7f) << 14) - | ((id3v2Header[8] & 0x7f) << 7) - | (id3v2Header[9] & 0x7f)) - + sizeof id3v2Header; - } - /* Seek to the beginning of the audio stream */ - if ( fseek(fpStream, id3v2TagSize, SEEK_SET) != 0 ) { - return -2; - } - if ( maybeSyncWord(fpStream) != 0) { - return -1; - } - if ( fseek(fpStream, id3v2TagSize+lametag_frame_size, SEEK_SET) != 0 ) { - return -2; - } - if ( maybeSyncWord(fpStream) != 0) { - return -1; - } - /* OK, it seems we found our LAME-Tag/Xing frame again */ - /* Seek to the beginning of the audio stream */ - if ( fseek(fpStream, id3v2TagSize, SEEK_SET) != 0 ) { - return -2; - } - return 0; -} - -static BE_ERR -updateLameTagFrame(lame_global_flags* gfp, FILE* fpStream) -{ - size_t n = lame_get_lametag_frame( gfp, 0, 0 ); /* ask for bufer size */ - - if ( n > 0 ) - { - unsigned char* buffer = 0; - size_t m = 1; - - if ( 0 != skipId3v2(fpStream, n) ) - { - DispErr( "Error updating LAME-tag frame:\n\n" - "can't locate old frame\n" ); - return BE_ERR_INVALID_FORMAT_PARAMETERS; - } - - buffer = (unsigned char*)malloc( n ); - - if ( buffer == 0 ) - { - DispErr( "Error updating LAME-tag frame:\n\n" - "can't allocate frame buffer\n" ); - return BE_ERR_INVALID_FORMAT_PARAMETERS; - } - - /* Put it all to disk again */ - n = lame_get_lametag_frame( gfp, buffer, n ); - if ( n > 0 ) - { - m = fwrite( buffer, n, 1, fpStream ); - } - free( buffer ); - - if ( m != 1 ) - { - DispErr( "Error updating LAME-tag frame:\n\n" - "couldn't write frame into file\n" ); - return BE_ERR_INVALID_FORMAT_PARAMETERS; - } - } - return BE_ERR_SUCCESSFUL; -} - -__declspec(dllexport) BE_ERR beWriteInfoTag( HBE_STREAM hbeStream, - LPCSTR lpszFileName ) -{ - FILE* fpStream = NULL; - BE_ERR beResult = BE_ERR_SUCCESSFUL; - - lame_global_flags* gfp = (lame_global_flags*)hbeStream; - - if ( NULL != gfp ) - { - // Do we have to write the VBR tag? - if ( lame_get_bWriteVbrTag( gfp ) ) - { - // Try to open the file - fpStream=fopen( lpszFileName, "rb+" ); - - // Check file open result - if ( NULL == fpStream ) - { - beResult = BE_ERR_INVALID_FORMAT_PARAMETERS; - DispErr( "Error updating LAME-tag frame:\n\n" - "can't open file for reading and writing\n" ); - } - else - { - beResult = updateLameTagFrame( gfp, fpStream ); - - // Close the file stream - fclose( fpStream ); - } - } - - // clean up of allocated memory - lame_close( gfp ); - } - else - { - beResult = BE_ERR_INVALID_FORMAT_PARAMETERS; - } - - // return result - return beResult; -} - -// for backwards compatiblity -__declspec(dllexport) BE_ERR beWriteVBRHeader(LPCSTR lpszFileName) -{ - return beWriteInfoTag( (HBE_STREAM)gfp_save, lpszFileName ); -} - - -BOOL APIENTRY DllMain(HANDLE hModule, - DWORD ul_reason_for_call, - LPVOID lpReserved) -{ - (void) lpReserved; - gs_hModule = (HMODULE) hModule; - - switch( ul_reason_for_call ) - { - case DLL_PROCESS_ATTACH: - // Enable debug/logging? - gs_bLogFile = GetPrivateProfileIntA("Debug","WriteLogFile",gs_bLogFile,"lame_enc.ini"); - break; - case DLL_THREAD_ATTACH: - break; - case DLL_THREAD_DETACH: - break; - case DLL_PROCESS_DETACH: - break; - } - return TRUE; -} - - -static void dump_config( lame_global_flags* gfp ) -{ - DebugPrintf("\n\nLame_enc configuration options:\n"); - DebugPrintf("==========================================================\n"); - - DebugPrintf("version =%d\n",lame_get_version( gfp ) ); - DebugPrintf("Layer =3\n"); - DebugPrintf("mode ="); - switch ( lame_get_mode( gfp ) ) - { - case STEREO: DebugPrintf( "Stereo\n" ); break; - case JOINT_STEREO: DebugPrintf( "Joint-Stereo\n" ); break; - case DUAL_CHANNEL: DebugPrintf( "Forced Stereo\n" ); break; - case MONO: DebugPrintf( "Mono\n" ); break; - case NOT_SET: /* FALLTROUGH */ - default: DebugPrintf( "Error (unknown)\n" ); break; - } - - DebugPrintf("Input sample rate =%.1f kHz\n", lame_get_in_samplerate( gfp ) /1000.0 ); - DebugPrintf("Output sample rate =%.1f kHz\n", lame_get_out_samplerate( gfp ) /1000.0 ); - - DebugPrintf("bitrate =%d kbps\n", lame_get_brate( gfp ) ); - DebugPrintf("Quality Setting =%d\n", lame_get_quality( gfp ) ); - - DebugPrintf("Low pass frequency =%d\n", lame_get_lowpassfreq( gfp ) ); - DebugPrintf("Low pass width =%d\n", lame_get_lowpasswidth( gfp ) ); - - DebugPrintf("High pass frequency =%d\n", lame_get_highpassfreq( gfp ) ); - DebugPrintf("High pass width =%d\n", lame_get_highpasswidth( gfp ) ); - - DebugPrintf("No short blocks =%d\n", lame_get_no_short_blocks( gfp ) ); - DebugPrintf("Force short blocks =%d\n", lame_get_force_short_blocks( gfp ) ); - - DebugPrintf("de-emphasis =%d\n", lame_get_emphasis( gfp ) ); - DebugPrintf("private flag =%d\n", lame_get_extension( gfp ) ); - - DebugPrintf("copyright flag =%d\n", lame_get_copyright( gfp ) ); - DebugPrintf("original flag =%d\n", lame_get_original( gfp ) ); - DebugPrintf("CRC =%s\n", lame_get_error_protection( gfp ) ? "on" : "off" ); - DebugPrintf("Fast mode =%s\n", ( lame_get_quality( gfp ) )? "enabled" : "disabled" ); - DebugPrintf("Force mid/side stereo =%s\n", ( lame_get_force_ms( gfp ) )?"enabled":"disabled" ); - DebugPrintf("Disable Reservoir =%d\n", lame_get_disable_reservoir( gfp ) ); - DebugPrintf("Allow diff-short =%d\n", lame_get_allow_diff_short( gfp ) ); - DebugPrintf("Interchannel masking =%f\n", lame_get_interChRatio( gfp ) ); - DebugPrintf("Strict ISO Encoding =%s\n", ( lame_get_strict_ISO( gfp ) ) ?"Yes":"No"); - DebugPrintf("Scale =%5.2f\n", lame_get_scale( gfp ) ); - - DebugPrintf("VBR =%s, VBR_q =%d, VBR method =", - ( lame_get_VBR( gfp ) !=vbr_off ) ? "enabled": "disabled", - lame_get_VBR_q( gfp ) ); - - switch ( lame_get_VBR( gfp ) ) - { - case vbr_off: DebugPrintf( "vbr_off\n" ); break; - case vbr_mt : DebugPrintf( "vbr_mt \n" ); break; - case vbr_rh : DebugPrintf( "vbr_rh \n" ); break; - case vbr_mtrh: DebugPrintf( "vbr_mtrh \n" ); break; - case vbr_abr: - DebugPrintf( "vbr_abr (average bitrate %d kbps)\n", lame_get_VBR_mean_bitrate_kbps( gfp ) ); - break; - default: - DebugPrintf("error, unknown VBR setting\n"); - break; - } - - DebugPrintf("Vbr Min bitrate =%d kbps\n", lame_get_VBR_min_bitrate_kbps( gfp ) ); - DebugPrintf("Vbr Max bitrate =%d kbps\n", lame_get_VBR_max_bitrate_kbps( gfp ) ); - - DebugPrintf("Write VBR Header =%s\n", ( lame_get_bWriteVbrTag( gfp ) ) ?"Yes":"No"); - DebugPrintf("VBR Hard min =%d\n", lame_get_VBR_hard_min( gfp ) ); - - DebugPrintf("ATH Only =%d\n", lame_get_ATHonly( gfp ) ); - DebugPrintf("ATH short =%d\n", lame_get_ATHshort( gfp ) ); - DebugPrintf("ATH no =%d\n", lame_get_noATH( gfp ) ); - DebugPrintf("ATH type =%d\n", lame_get_ATHtype( gfp ) ); - DebugPrintf("ATH lower =%f\n", lame_get_ATHlower( gfp ) ); - DebugPrintf("ATH aa =%d\n", lame_get_athaa_type( gfp ) ); - //DebugPrintf("ATH aa loudapprox =%d\n", lame_get_athaa_loudapprox( gfp ) ); - DebugPrintf("ATH aa sensitivity =%f\n", lame_get_athaa_sensitivity( gfp ) ); - - DebugPrintf("Experimental nspsytune =%d\n", lame_get_exp_nspsytune( gfp ) ); - DebugPrintf("Experimental X =%d\n", lame_get_experimentalX( gfp ) ); - DebugPrintf("Experimental Y =%d\n", lame_get_experimentalY( gfp ) ); - DebugPrintf("Experimental Z =%d\n", lame_get_experimentalZ( gfp ) ); -} - - -static void DispErr(char const* strErr) -{ - MessageBoxA(NULL,strErr,"LAME_ENC.DLL",MB_OK|MB_ICONHAND); -} - -#ifdef __cplusplus -} -#endif diff --git a/platform/win32/msvc/external/lame/Dll/BladeMP3EncDLL.h b/platform/win32/msvc/external/lame/Dll/BladeMP3EncDLL.h deleted file mode 100644 index 1b45a4debdd..00000000000 --- a/platform/win32/msvc/external/lame/Dll/BladeMP3EncDLL.h +++ /dev/null @@ -1,280 +0,0 @@ -/* - * Blade Type of DLL Interface for Lame encoder - * - * Copyright (c) 1999-2002 A.L. Faber - * Based on bladedll.h version 1.0 written by Jukka Poikolainen - * - * 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 ___BLADEDLL_H_INCLUDED___ -#define ___BLADEDLL_H_INCLUDED___ - -#ifdef __GNUC__ -#define ATTRIBUTE_PACKED __attribute__((packed)) -#else -#define ATTRIBUTE_PACKED -#pragma pack(push) -#pragma pack(1) -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* encoding formats */ - -#define BE_CONFIG_MP3 0 -#define BE_CONFIG_LAME 256 - -/* type definitions */ - -typedef void* HBE_STREAM; -typedef HBE_STREAM *PHBE_STREAM; -typedef unsigned long BE_ERR; - -/* error codes */ - -#define BE_ERR_SUCCESSFUL 0x00000000 -#define BE_ERR_INVALID_FORMAT 0x00000001 -#define BE_ERR_INVALID_FORMAT_PARAMETERS 0x00000002 -#define BE_ERR_NO_MORE_HANDLES 0x00000003 -#define BE_ERR_INVALID_HANDLE 0x00000004 -#define BE_ERR_BUFFER_TOO_SMALL 0x00000005 - -/* other constants */ - -#define BE_MAX_HOMEPAGE 128 - -/* format specific variables */ - -#define BE_MP3_MODE_STEREO 0 -#define BE_MP3_MODE_JSTEREO 1 -#define BE_MP3_MODE_DUALCHANNEL 2 -#define BE_MP3_MODE_MONO 3 - - - -#define MPEG1 1 -#define MPEG2 0 - -#ifdef _BLADEDLL -#undef FLOAT - #include -#endif - -#define CURRENT_STRUCT_VERSION 1 -#define CURRENT_STRUCT_SIZE sizeof(BE_CONFIG) // is currently 331 bytes - - -typedef enum -{ - VBR_METHOD_NONE = -1, - VBR_METHOD_DEFAULT = 0, - VBR_METHOD_OLD = 1, - VBR_METHOD_NEW = 2, - VBR_METHOD_MTRH = 3, - VBR_METHOD_ABR = 4 -} VBRMETHOD; - -typedef enum -{ - LQP_NOPRESET =-1, - - // QUALITY PRESETS - LQP_NORMAL_QUALITY = 0, - LQP_LOW_QUALITY = 1, - LQP_HIGH_QUALITY = 2, - LQP_VOICE_QUALITY = 3, - LQP_R3MIX = 4, - LQP_VERYHIGH_QUALITY = 5, - LQP_STANDARD = 6, - LQP_FAST_STANDARD = 7, - LQP_EXTREME = 8, - LQP_FAST_EXTREME = 9, - LQP_INSANE = 10, - LQP_ABR = 11, - LQP_CBR = 12, - LQP_MEDIUM = 13, - LQP_FAST_MEDIUM = 14, - - // NEW PRESET VALUES - LQP_PHONE =1000, - LQP_SW =2000, - LQP_AM =3000, - LQP_FM =4000, - LQP_VOICE =5000, - LQP_RADIO =6000, - LQP_TAPE =7000, - LQP_HIFI =8000, - LQP_CD =9000, - LQP_STUDIO =10000 - -} LAME_QUALITY_PRESET; - - - -typedef struct { - DWORD dwConfig; // BE_CONFIG_XXXXX - // Currently only BE_CONFIG_MP3 is supported - union { - - struct { - - DWORD dwSampleRate; // 48000, 44100 and 32000 allowed - BYTE byMode; // BE_MP3_MODE_STEREO, BE_MP3_MODE_DUALCHANNEL, BE_MP3_MODE_MONO - WORD wBitrate; // 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256 and 320 allowed - BOOL bPrivate; - BOOL bCRC; - BOOL bCopyright; - BOOL bOriginal; - - } mp3; // BE_CONFIG_MP3 - - struct - { - // STRUCTURE INFORMATION - DWORD dwStructVersion; - DWORD dwStructSize; - - // BASIC ENCODER SETTINGS - DWORD dwSampleRate; // SAMPLERATE OF INPUT FILE - DWORD dwReSampleRate; // DOWNSAMPLERATE, 0=ENCODER DECIDES - LONG nMode; // BE_MP3_MODE_STEREO, BE_MP3_MODE_DUALCHANNEL, BE_MP3_MODE_MONO - DWORD dwBitrate; // CBR bitrate, VBR min bitrate - DWORD dwMaxBitrate; // CBR ignored, VBR Max bitrate - LONG nPreset; // Quality preset, use one of the settings of the LAME_QUALITY_PRESET enum - DWORD dwMpegVersion; // FUTURE USE, MPEG-1 OR MPEG-2 - DWORD dwPsyModel; // FUTURE USE, SET TO 0 - DWORD dwEmphasis; // FUTURE USE, SET TO 0 - - // BIT STREAM SETTINGS - BOOL bPrivate; // Set Private Bit (TRUE/FALSE) - BOOL bCRC; // Insert CRC (TRUE/FALSE) - BOOL bCopyright; // Set Copyright Bit (TRUE/FALSE) - BOOL bOriginal; // Set Original Bit (TRUE/FALSE) - - // VBR STUFF - BOOL bWriteVBRHeader; // WRITE XING VBR HEADER (TRUE/FALSE) - BOOL bEnableVBR; // USE VBR ENCODING (TRUE/FALSE) - INT nVBRQuality; // VBR QUALITY 0..9 - DWORD dwVbrAbr_bps; // Use ABR in stead of nVBRQuality - VBRMETHOD nVbrMethod; - BOOL bNoRes; // Disable Bit resorvoir (TRUE/FALSE) - - // MISC SETTINGS - BOOL bStrictIso; // Use strict ISO encoding rules (TRUE/FALSE) - WORD nQuality; // Quality Setting, HIGH BYTE should be NOT LOW byte, otherwhise quality=5 - - // FUTURE USE, SET TO 0, align strucutre to 331 bytes - BYTE btReserved[255-4*sizeof(DWORD) - sizeof( WORD )]; - - } LHV1; // LAME header version 1 - - struct { - - DWORD dwSampleRate; - BYTE byMode; - WORD wBitrate; - BYTE byEncodingMethod; - - } aac; - - } format; - -} BE_CONFIG, *PBE_CONFIG ATTRIBUTE_PACKED; - - -typedef struct { - - // BladeEnc DLL Version number - - BYTE byDLLMajorVersion; - BYTE byDLLMinorVersion; - - // BladeEnc Engine Version Number - - BYTE byMajorVersion; - BYTE byMinorVersion; - - // DLL Release date - - BYTE byDay; - BYTE byMonth; - WORD wYear; - - // BladeEnc Homepage URL - - CHAR zHomepage[BE_MAX_HOMEPAGE + 1]; - - BYTE byAlphaLevel; - BYTE byBetaLevel; - BYTE byMMXEnabled; - - BYTE btReserved[125]; - - -} BE_VERSION, *PBE_VERSION ATTRIBUTE_PACKED; - -#ifndef _BLADEDLL - -typedef BE_ERR (*BEINITSTREAM) (PBE_CONFIG, PDWORD, PDWORD, PHBE_STREAM); -typedef BE_ERR (*BEENCODECHUNK) (HBE_STREAM, DWORD, PSHORT, PBYTE, PDWORD); - -// added for floating point audio -- DSPguru, jd -typedef BE_ERR (*BEENCODECHUNKFLOATS16NI) (HBE_STREAM, DWORD, PFLOAT, PFLOAT, PBYTE, PDWORD); -typedef BE_ERR (*BEDEINITSTREAM) (HBE_STREAM, PBYTE, PDWORD); -typedef BE_ERR (*BECLOSESTREAM) (HBE_STREAM); -typedef VOID (*BEVERSION) (PBE_VERSION); -typedef BE_ERR (*BEWRITEVBRHEADER) (LPCSTR); -typedef BE_ERR (*BEWRITEINFOTAG) (HBE_STREAM, LPCSTR ); - -#define TEXT_BEINITSTREAM "beInitStream" -#define TEXT_BEENCODECHUNK "beEncodeChunk" -#define TEXT_BEENCODECHUNKFLOATS16NI "beEncodeChunkFloatS16NI" -#define TEXT_BEDEINITSTREAM "beDeinitStream" -#define TEXT_BECLOSESTREAM "beCloseStream" -#define TEXT_BEVERSION "beVersion" -#define TEXT_BEWRITEVBRHEADER "beWriteVBRHeader" -#define TEXT_BEFLUSHNOGAP "beFlushNoGap" -#define TEXT_BEWRITEINFOTAG "beWriteInfoTag" - - -#else - -__declspec(dllexport) BE_ERR beInitStream(PBE_CONFIG pbeConfig, PDWORD dwSamples, PDWORD dwBufferSize, PHBE_STREAM phbeStream); -__declspec(dllexport) BE_ERR beEncodeChunk(HBE_STREAM hbeStream, DWORD nSamples, PSHORT pSamples, PBYTE pOutput, PDWORD pdwOutput); - -// added for floating point audio -- DSPguru, jd -__declspec(dllexport) BE_ERR beEncodeChunkFloatS16NI(HBE_STREAM hbeStream, DWORD nSamples, PFLOAT buffer_l, PFLOAT buffer_r, PBYTE pOutput, PDWORD pdwOutput); -__declspec(dllexport) BE_ERR beDeinitStream(HBE_STREAM hbeStream, PBYTE pOutput, PDWORD pdwOutput); -__declspec(dllexport) BE_ERR beCloseStream(HBE_STREAM hbeStream); -__declspec(dllexport) VOID beVersion(PBE_VERSION pbeVersion); -__declspec(dllexport) BE_ERR beWriteVBRHeader(LPCSTR lpszFileName); -__declspec(dllexport) BE_ERR beFlushNoGap(HBE_STREAM hbeStream, PBYTE pOutput, PDWORD pdwOutput); -__declspec(dllexport) BE_ERR beWriteInfoTag( HBE_STREAM hbeStream, LPCSTR lpszFileName ); - -#endif - -#ifdef __cplusplus -} -#endif - -#ifndef __GNUC__ -#pragma pack(pop) -#endif - -#endif diff --git a/platform/win32/msvc/external/lame/Dll/Example.cpp b/platform/win32/msvc/external/lame/Dll/Example.cpp deleted file mode 100644 index b153d48c949..00000000000 --- a/platform/win32/msvc/external/lame/Dll/Example.cpp +++ /dev/null @@ -1,288 +0,0 @@ -/* - * LAME DLL Sample Code. - * - * Copyright (c) 2000 A.L. Faber - * - * 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 -#include -#include -#include -#include -#include "BladeMP3EncDLL.h" - -BEINITSTREAM beInitStream=NULL; -BEENCODECHUNK beEncodeChunk=NULL; -BEDEINITSTREAM beDeinitStream=NULL; -BECLOSESTREAM beCloseStream=NULL; -BEVERSION beVersion=NULL; -BEWRITEVBRHEADER beWriteVBRHeader=NULL; -BEWRITEINFOTAG beWriteInfoTag=NULL; - - -// Main program -int main(int argc, char *argv[]) -{ - HINSTANCE hDLL =NULL; - FILE* pFileIn =NULL; - FILE* pFileOut =NULL; - BE_VERSION Version ={0,}; - BE_CONFIG beConfig ={0,}; - - CHAR strFileIn[255] ={'0',}; - CHAR strFileOut[255] ={'0',}; - - DWORD dwSamples =0; - DWORD dwMP3Buffer =0; - HBE_STREAM hbeStream =0; - BE_ERR err =0; - - PBYTE pMP3Buffer =NULL; - PSHORT pWAVBuffer =NULL; - - // check number of arguments - if(argc != 2) - { - fprintf(stderr,"Usage: %s \n", argv[0]); - fprintf(stderr,"Descr: Short demo to show how to use the lame_enc.dll library file\n"); - fprintf(stderr,"Note : WAV file is assumed to to have the following parameters\n"); - fprintf(stderr," : 44100 Hz, stereo, 16 Bits per sample\n"); - return -1; - } - - // Setup the file names - strcpy(strFileIn ,argv[1]); - strcpy(strFileOut,argv[1]); - - // Add mp3 extention - strcat(strFileOut,".mp3"); - - // Load lame_enc.dll library (Make sure though that you set the - // project/settings/debug Working Directory correctly, otherwhise the DLL can't be loaded - - hDLL = LoadLibrary("lame_enc.dll"); - - if ( NULL == hDLL ) - { - hDLL = LoadLibrary("..\\..\\output\\lame_enc.dll"); - } - - if( NULL == hDLL ) - { - fprintf(stderr,"Error loading lame_enc.DLL"); - return -1; - } - - // Get Interface functions from the DLL - beInitStream = (BEINITSTREAM) GetProcAddress(hDLL, TEXT_BEINITSTREAM); - beEncodeChunk = (BEENCODECHUNK) GetProcAddress(hDLL, TEXT_BEENCODECHUNK); - beDeinitStream = (BEDEINITSTREAM) GetProcAddress(hDLL, TEXT_BEDEINITSTREAM); - beCloseStream = (BECLOSESTREAM) GetProcAddress(hDLL, TEXT_BECLOSESTREAM); - beVersion = (BEVERSION) GetProcAddress(hDLL, TEXT_BEVERSION); - beWriteVBRHeader= (BEWRITEVBRHEADER) GetProcAddress(hDLL,TEXT_BEWRITEVBRHEADER); - beWriteInfoTag = (BEWRITEINFOTAG) GetProcAddress(hDLL,TEXT_BEWRITEINFOTAG); - - // Check if all interfaces are present - if(!beInitStream || !beEncodeChunk || !beDeinitStream || !beCloseStream || !beVersion || !beWriteVBRHeader) - { - printf("Unable to get LAME interfaces"); - return -1; - } - - // Get the version number - beVersion( &Version ); - - printf( - "lame_enc.dll version %u.%02u (%u/%u/%u)\n" - "lame_enc Engine %u.%02u\n" - "lame_enc homepage at %s\n\n", - Version.byDLLMajorVersion, Version.byDLLMinorVersion, - Version.byDay, Version.byMonth, Version.wYear, - Version.byMajorVersion, Version.byMinorVersion, - Version.zHomepage); - - // Try to open the WAV file, be sure to open it as a binary file! - pFileIn = fopen( strFileIn, "rb" ); - - // Check file open result - if(pFileIn == NULL) - { - fprintf(stderr,"Error opening %s", argv[1]); - return -1; - } - - // Open MP3 file - pFileOut= fopen(strFileOut,"wb+"); - - // Check file open result - if(pFileOut == NULL) - { - fprintf(stderr,"Error creating file %s", strFileOut); - return -1; - } - - memset(&beConfig,0,sizeof(beConfig)); // clear all fields - - // use the LAME config structure - beConfig.dwConfig = BE_CONFIG_LAME; - - // this are the default settings for testcase.wav - beConfig.format.LHV1.dwStructVersion = 1; - beConfig.format.LHV1.dwStructSize = sizeof(beConfig); - beConfig.format.LHV1.dwSampleRate = 44100; // INPUT FREQUENCY - beConfig.format.LHV1.dwReSampleRate = 0; // DON"T RESAMPLE - beConfig.format.LHV1.nMode = BE_MP3_MODE_JSTEREO; // OUTPUT IN STREO - beConfig.format.LHV1.dwBitrate = 128; // MINIMUM BIT RATE - beConfig.format.LHV1.nPreset = LQP_R3MIX; // QUALITY PRESET SETTING - beConfig.format.LHV1.dwMpegVersion = MPEG1; // MPEG VERSION (I or II) - beConfig.format.LHV1.dwPsyModel = 0; // USE DEFAULT PSYCHOACOUSTIC MODEL - beConfig.format.LHV1.dwEmphasis = 0; // NO EMPHASIS TURNED ON - beConfig.format.LHV1.bOriginal = TRUE; // SET ORIGINAL FLAG - beConfig.format.LHV1.bWriteVBRHeader = TRUE; // Write INFO tag - -// beConfig.format.LHV1.dwMaxBitrate = 320; // MAXIMUM BIT RATE -// beConfig.format.LHV1.bCRC = TRUE; // INSERT CRC -// beConfig.format.LHV1.bCopyright = TRUE; // SET COPYRIGHT FLAG -// beConfig.format.LHV1.bPrivate = TRUE; // SET PRIVATE FLAG -// beConfig.format.LHV1.bWriteVBRHeader = TRUE; // YES, WRITE THE XING VBR HEADER -// beConfig.format.LHV1.bEnableVBR = TRUE; // USE VBR -// beConfig.format.LHV1.nVBRQuality = 5; // SET VBR QUALITY - beConfig.format.LHV1.bNoRes = TRUE; // No Bit resorvoir - -// Preset Test -// beConfig.format.LHV1.nPreset = LQP_PHONE; - - // Init the MP3 Stream - err = beInitStream(&beConfig, &dwSamples, &dwMP3Buffer, &hbeStream); - - // Check result - if(err != BE_ERR_SUCCESSFUL) - { - fprintf(stderr,"Error opening encoding stream (%lu)", err); - return -1; - } - - - // Allocate MP3 buffer - pMP3Buffer = new BYTE[dwMP3Buffer]; - - // Allocate WAV buffer - pWAVBuffer = new SHORT[dwSamples]; - - // Check if Buffer are allocated properly - if(!pMP3Buffer || !pWAVBuffer) - { - printf("Out of memory"); - return -1; - } - - DWORD dwRead=0; - DWORD dwWrite=0; - DWORD dwDone=0; - DWORD dwFileSize=0; - - // Seek to end of file - fseek(pFileIn,0,SEEK_END); - - // Get the file size - dwFileSize=ftell(pFileIn); - - // Seek back to start of WAV file, - // but skip the first 44 bytes, since that's the WAV header - fseek(pFileIn,44,SEEK_SET); - - - // Convert All PCM samples - while ( (dwRead=fread(pWAVBuffer,sizeof(SHORT),dwSamples,pFileIn)) >0 ) - { - // Encode samples - err = beEncodeChunk(hbeStream, dwRead, pWAVBuffer, pMP3Buffer, &dwWrite); - - // Check result - if(err != BE_ERR_SUCCESSFUL) - { - beCloseStream(hbeStream); - fprintf(stderr,"beEncodeChunk() failed (%lu)", err); - return -1; - } - - // write dwWrite bytes that are returned in tehe pMP3Buffer to disk - if(fwrite(pMP3Buffer,1,dwWrite,pFileOut) != dwWrite) - { - fprintf(stderr,"Output file write error"); - return -1; - } - - dwDone += dwRead*sizeof(SHORT); - - printf("Done: %0.2f%% \r", 100 * (float)dwDone/(float)(dwFileSize)); - } - - // Deinit the stream - err = beDeinitStream(hbeStream, pMP3Buffer, &dwWrite); - - // Check result - if(err != BE_ERR_SUCCESSFUL) - { - - beCloseStream(hbeStream); - fprintf(stderr,"beExitStream failed (%lu)", err); - return -1; - } - - // Are there any bytes returned from the DeInit call? - // If so, write them to disk - if( dwWrite ) - { - if( fwrite( pMP3Buffer, 1, dwWrite, pFileOut ) != dwWrite ) - { - fprintf(stderr,"Output file write error"); - return -1; - } - } - - // close the MP3 Stream - beCloseStream( hbeStream ); - - // Delete WAV buffer - delete [] pWAVBuffer; - - // Delete MP3 Buffer - delete [] pMP3Buffer; - - // Close input file - fclose( pFileIn ); - - // Close output file - fclose( pFileOut ); - - if ( beWriteInfoTag ) - { - // Write the INFO Tag - beWriteInfoTag( hbeStream, strFileOut ); - } - else - { - beWriteVBRHeader( strFileOut ); - } - - // Were done, return OK result - return 0; -} - diff --git a/platform/win32/msvc/external/lame/Dll/LameDLLInterface.htm b/platform/win32/msvc/external/lame/Dll/LameDLLInterface.htm deleted file mode 100644 index a9f2add3084..00000000000 --- a/platform/win32/msvc/external/lame/Dll/LameDLLInterface.htm +++ /dev/null @@ -1,742 +0,0 @@ - - - - - -Lame- - - - - -

 

- -

Lame-enc DLL
-Interface version 1.32 (and above)
-(Lame engine version: 3.93 or higher)
-Programmers Manual

- -

The lame_enc.dll and this manual is -copyright by Albert L Faber
-Originally the the DLL interface is modeled after the BladeEnc -DLL interface
-which is copyrighted by Tord Jansson and Jukka Poikolainen
-This document and the DLL interface may be distributed freely
-
-as long as modifications are released under the LGPL license. -

- -

 

- -

Homepage: http://www.cdex.n3.net
-E-mail: mailto: afaber@users.sourceforge.net -

- -


-
-
-
-

- -

Distribution

- -

People and companies  who wants to distribute -lame_enc.dll with their commercial products are free to do so as -far as I'm concerned (LGPL license), but should be aware that -lame_enc.dll might infringe certain MP3 related software patents -held by Fraunhofer IIS in certain countries.

- -


- -

Disclaimer

- -

lame_enc.dll and this manual is distributed 'as is' with no -warranty of any kind. The Author is not to be held responsible -for the result of any use or misuse of this product.

- -

Current Bugs and Limitations

- -

Although the interface is designed to be able to handle -multiple parallel streams it can't be done yet due to limitations -in the engine, only one stream is allowed.

- -

Future Compatibility

- -

This interface should be compatible with all future versions -of lame_enc.DLL without any need to recompile your programs. You -should therefore not check the version number upon start -and prevent users from running your program with a later version -of lame_enc.DLL.

- -
- -

How to use the DLL

- -

1. Fill in a BE_CONFIG structure -and send it to beInitStream(). Make -sure that BE_ERR_SUCCESSFUL is returned.

- -

2. Reserve at least the amount of memory returned in -dwBufferSize as your output buffer.

- -

3. Call beEncodeChunk() until -you've encoded everything you want.

- -

4. Call beDeinitStream() to -make sure that all encoded data is flushed out before closing the -stream.

- -

5. Close the stream using beCloseStream() -

- -

6. Finally, call the beWriteVBRHeader() -functions, to insert the INFO tag MP3 Header. This is an -extension of the Xing VBR tag which is also used for CBR -encodings. This call can only be omitted if the INFO tag was -explicilty disabled in the BE_CONFIG Structure.

- -

A handy feature is the available Lame_enc.dll debug option, -which will dump the important lame internal settings to a text -file.

- -

 

- -

Return Values

- -

See the header-file for a complete list of function return -values. All functions should return BE_ERR_SUCCESSFUL unless -something went wrong.

- -
- -

Type definitions

- -

The DLL is by default compiled with the MS Visual C/C++ -compiler, which has the following type definitions:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Type Description
CHARsigned char (8 bits)
BYTEunsigned char (8 bits)
SHORTsigned short (16 bits)
WORDunsigned short (16 bits)
INTsigned long (32 bits)
LONGsigned long (32 bits)
BOOLsigned long (32 bits) (YES, 32 bits for a one bit - value)
- TRUE = 0
- FALSE=-1
DWORDunsigned long (32 bits)
FLOATfloating point (32 bits)
DOUBLEfloat point (64 bits)
LPCSTRconst char* (32 bits pointer to zero terminated - character string)
- -

Within the lame_enc.dll All the structure elements are one -byte alligned (due to backwards compatibility with BladEnc.DLL!

- -

 

- -
- -

The -BE_CONFIG Structure

- -

Currently there the BE_CONFIG structure has to -varians, the old MP3 config structure that is truly compatible -with the old BladeEnc interface, and the new defined LHV1 -structure, which can set far more options in the lame encoder

- -

 

- -

The MP3 BE_CONFIG - structure (OBSOLETE)

- -

This is the old structure as it was originally defined by the -BladeEnc.DLL interface. However, I do highly recommend to use the -new Lame specific config structure, since it gives you more -control over the Lame encoder settings.

- -

These are the members of the BE_CONFIG structure you need to -fill in before you call beInitStream():

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
dwConfigSpecifies what kind of output you want. Since only - MP3 currently is supported you must set this to BE_CONFIG_MP3
format.mp3.dwSampleRate     Samplerate in Hz for MP3 file. This can be set to - either 32000, 44100 or 48000.
format.mp3.byModeStereomode for MP3 file. This can be either BE_MP3_MODE_STEREO, - BE_MP3_MODE_DUALCHANNEL or BE_MP3_MODE_MONO.
format.mp3.bitrateBitrate (i.e. size) of MP3 file in kBit/s. Allowed - bitrates are: 32, 40, 48, 56, 64, 80, 96, 112, 128, - 160, 192, 224, 256 and 320.
format.mp3.bCopyrightIf this is set to TRUE the Copyright bit in the MP3 - stream will be set.
format.mp3.bCRCSet this to TRUE in order to enable CRC-checksum in - the bitstream.
format.mp3.bOriginalIf this is set to TRUE the Original bit in the MP3 - stream will be set.
format.mp3.bPrivateIf this is set to TRUE the Private bit in the MP3 - stream will be set.
- -

 

- -

The LHV1 BE_CONFIG - structure (recommended)

- -

These are the members of the LHV1 BE_CONFIG structure, you -need to fill in before you call beInitStream():
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
dwConfigSpecifies what kind of output you want. Since only - MP3 currently is supported you must set this to BE_CONFIG_LAME
  
format.LHV1.dwStructVersionIndicates the version number of the structure, - current version number is 1
format.LHV1.dwStructSizeSpecifies the size of the BE_CONFIG structure - (currently 331 bytes)
  
format.LHV1.dwSampleRate Samplerate in Hz for MP3 file. This can be set to - either:
- 32000, 44100 or 48000 for MPEG-I
- 16000, 22050 or 24000 for MPEG-I
- 8000, 11025 or 12000 for MPEG-II.5
format.LHV1.dwReSampleRateSpecifies to which sample rate the input stream has - to be resampled, if set to 0, the encoder will decide - which ReSample rate to use
format.LHV1.nModeStereomode for MP3 file. This can be either BE_MP3_MODE_STEREO, - BE_MP3_MODE_JSTEREO, BE_MP3_MODE_DUALCHANNEL or BE_MP3_MODE_MONO.
format.LHV1.dwBitrateFor CBR, this specifies the actual bitrate, for VBR, - it specifies the minimum bitrate
- Allowed bitrates are: 32, 40, 48, 56, 64, 80, 96, 112, - 128, 160, 192, 224, 256 and 320.for MPEG-I
- Allowed bitrates are: 8, 16, 24, 32, 40, 48, 56, 64, - 80, 96, 112, 128, 144 and 160.for MPEG-II

Note: - dwBitrate is used as the minimum bitrate in the case of - using a VBR mode.

-
format.LHV1.dwMaxBitrateWhen VBR mode is enabled, it specifies the maximum - allowed bitrate (see also dwBitrate to specify the minium - bitrate), for CBR mode this setting is ignored.
format.LHV1.nPresetKeep in mind that the presets can overwrite some of - the other settings, since it is called right before the - encoder is initialized
- - - - -
The nPreset option can be set to one of the - following presets values::
-

LQP_NOPRESET (don't use any presets)
- LQP_NORMAL_QUALITY (quality is set to 5)
- LQP_LOW_QUALITY (quality is set to 9)
- LQP_HIGH_QUALITY (quality is set to 2)
- LQP_VOICE_QUALITY (use for voice encoding)
- LQP_R3MIX (r3mix preset option)
- LQP_VERYHIGH_QUALITY (quality is set to 0)
- LQP_STANDARD (lame command line alt-preset standard)
- LQP_FAST_STANDARD (lame command line alt-preset fast - standard)
- LQP_EXTREME (lame command line alt-preset extreme)
- LQP_FAST_EXTREME (lame command line alt-preset fast - extreme)
- LQP_INSANE (lame command line alt-preset insane)
- LQP_ABR (lame command line alt-preset abr)
- LQP_CBR(lame command line alt-preset cbr)
-
- (old lame preset options)
- LQP_PHONE
- LQP_SW
- LQP_AM
- LQP_FM
- LQP_VOICE
- LQP_RADIO
- LQP_TAPE
- LQP_HIFI
- LQP_CD
- LQP_STUDIO

-
 
format.LHV1.bCopyrightIf this is set to TRUE the Copyright bit in the MP3 - stream will be set.
format.LHV1.bCRCSet this to TRUE in order to enable CRC-checksum in - the bitstream.
format.LHV1.bOriginalIf this is set to TRUE the Original bit in the MP3 - stream will be set.
format.LHV1.bPrivateIf this is set to TRUE the Private bit in the MP3 - stream will be set.
  
format.LHV1.nVbrMethodSepecifes if the VBR method to use, currently the - following settings are supported:

VBR_METHOD_NONE - (don't use VBR, use CBR encoding instead),
- VBR_METHOD_DEFAULT (default VBR method)
- VBR_METHOD_OLD (old VBR method, proven to be reliable)
- VBR_METHOD_NEW (new VBR method, faster than - VBR_METHOD_OLD)
- VBR_METHOD_MTRH (depreciated, same as VBR_METHOD_NEW)
- VBR_METHOD_ABR (Average Bitrate Encoding, see also
format.LHV1.dwVbrAbr_bps)

-
format.LHV1.bWriteVBRHeaderSepecifes if the a XING VBR header should be written - or not. When this option is enabled, you have to call the - beWriteVBRHeader function when encoding - has been completed. Keep in mind that the VBR info tag - can also be written for CBR encoded files, the TAG info - can be useful for additional info like encoder delay and - the like.
format.LHV1.bEnableVBRSpecifies if VBR encoding option shall be used or - not, possible values are TRUE/FALSE
format.LHV1.nVBRQualityQuality option if VBR is enabled (0=highest quality, - 9 is lowest quality)
format.LHV1.dwVbrAbr_bpsIf the Average Bit Rate is specified, the lame - encoder ignores the nVBRQuality settings (However, bEnableVBR - must be set to TRUE and the format.LHV1.nVbrMethod - parameter should be set to VBR_METHOD_ABR). The allowed - range for the format.LHV1.dwVbrAbr_bps parameter - any integer value between:

MPEG-I: - 32000 .. 320000 bps
-
MPEG-II: 8000 .. 160000 bps

-
  
format.LHV1.bNoBitResDisables the bit-resorvoir and disables the insertion - of padded frames
format.LHV1.nQualityQuality Setting, HIGH BYTE should be NOT LOW byte, - otherwhise quality is set to 5. This is done to be - backward compatible. So to set quality to 3, you have to - set the nQuality parameter to 0xFC03.
format.mp3.btReservedFor future use, set all elements to zero
- -

 

- -

 

- -
- -

beInitStream() -

- - - - - - - - - - - - - - -
Synopsis:BE_ERR beInitStream( - PBE_CONFIG pbeConfig, PDWORD dwSamples, - PDWORD dwBufferSize, PHBE_STREAM phbeStream - )
Parameters: - - - - - - - - - - - - - - - - -
pbeConfigPointer at the struct containing encoder - settings.
dwSamplesPointer at double word where number of - samples to send to each beEncodeChunk() is - returned.
dwBufferSizePointer at double word where minimum size in - bytes of output buffer is returned.
phbeStreamPointer at integer where Stream handle is - returned.
-
Description:This function is the first - to call before starting an encoding stream.
- -
- -

beEncodeChunk() -

- - - - - - - - - - - - - - -
Synopsis:BE_ERR beEncodeChunk( - HBE_STREAM hbeStream, DWORD nSamples, - PSHORT pSamples, PBYTE pOutput, PDWORD pdwOutput - )
Parameters: - - - - - - - - - - - - - - - - - - - - -
hbeStreamHandle of the stream.
nSamplesNumber of samples to be encoded for this - call. This should be identical to what is - returned by beInitStream(), unless you are - encoding the last chunk, which might be smaller.
pSamplesPointer at the 16-bit signed samples to be - encoded. These should be in stereo when encoding - a stereo MP3 and mono when encoding a mono MP3.
pOutputWhere to write the encoded data. This buffer - should be at least of the minimum size returned - by beInitStream().
pdwOutputWhere to return number of bytes of encoded - data written. The amount of data written might - vary from chunk to chunk.
-
Description:Encodes a chunk of samples. Please - note that if you have set the output to generate mono MP3 - files you must feed beEncodeChunk() with mono samples!
- -
- -

beDeinitStream() -

- - - - - - - - - - - - - - -
Synopsis:BE_ERR beDeinitStream( - HBE_STREAM hbeStream, PBYTE pOutput, PDWORD - pdwOutput )
Parameters: - - - - - - - - - - - - -
hbeStreamHandle of the stream.
pOutputWhere to write the encoded data. This buffer - should be at least of the minimum size returned - by beInitStream().
pdwOutputWhere to return number of bytes of encoded - data written.
-
Description:This function should be called after - encoding the last chunk in order to flush the encoder. It - writes any encoded data that still might be left inside - the encoder to the output buffer. This function should - NOT be called unless you have encoded all of the chunks - in your stream.
- -
- -

beCloseStream() -

- - - - - - - - - - - - - - -
Synopsis:BE_ERR beCloseStream( HBE_STREAM hbeStream - )
Parameters: - - - - -
hbeStreamHandle of the stream.
-
Description:Last function to be called when finished - encoding a stream. Should unlike beDeinitStream() - also be called if the encoding is canceled.
- -
- -

beVersion()

- - - - - - - - - - - - - - -
Synopsis:VOID beVersion( PBE_VERSION pbeVersion - )
Parameters: - - - - -
pbeVersionPointer at struct where version number, - release date and URL for homepage is returned.
-
Description:Returns information like version numbers - (both of the DLL and encoding engine), release date and - URL for lame_enc's homepage. All this information should - be made available to the user of your product through a - dialog box or something similar.
- -

 

- -
- -

 

- -

beWriteVBRHeader() -

- - - - - - - - - - - - - - -
Synopsis:VOID beWriteVBRHeader( LPCSTR pszMP3FileName - )
Parameters: - - - - -
pszMP3FileNameConst Pointer zero terminated string, that - contains the MP3 file name.
-
Description:Writes a Xing Header in front of the MP3 - file. Make sure that the MP3 file is closed, and the the - beConfig.format.LHV1.bWriteVBRHeader has been set to - TRUE. In addition, it is always save to call - beWriteVBRHeader after the encoding has been finished, - even when the beConfig.format.LHV1.bWriteVBRHeader is not - set to TRUE
- -

 

- -

 

- -
- -

 

- -

Lame_enc.dll debug option

- -

The lame_enc.dll has a built-in debug option, that dumps all -the important internal settings to a text file. To enable this -feature, create a text file in the Windows directory which is -named lame_enc.ini, and should contain the following two lines

- -

[debug]
-WriteLogFile=1

- -

Save this text file, and each time you encode a file, the -settings are added to a file name lame_enc.txt, that is located -in the same directory as the lame_enc.dll

- -

 

- -


- - diff --git a/platform/win32/msvc/external/lame/Dll/MP3export.pas b/platform/win32/msvc/external/lame/Dll/MP3export.pas deleted file mode 100644 index ab55bba0130..00000000000 --- a/platform/win32/msvc/external/lame/Dll/MP3export.pas +++ /dev/null @@ -1,303 +0,0 @@ -unit MP3export; - -interface - -Uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, -Forms, Dialogs, StdCtrls; - -type -//type definitions -//typedef unsigned long HBE_STREAM; -//typedef HBE_STREAM *PHBE_STREAM; -//typedef unsigned long BE_ERR; - THBE_STREAM = LongWord; - PHBE_STREAM = ^PHBE_STREAM; - BE_ERR = LongWord; - -const -// encoding formats -//#define BE_CONFIG_MP3 0 -//#define BE_CONFIG_LAME 256 - BE_CONFIG_MP3 = 0; - BE_CONFIG_LAME = 256; - - -// error codes -//#define BE_ERR_SUCCESSFUL 0x00000000 -//#define BE_ERR_INVALID_FORMAT 0x00000001 -//#define BE_ERR_INVALID_FORMAT_PARAMETERS 0x00000002 -//#define BE_ERR_NO_MORE_HANDLES 0x00000003 -//#define BE_ERR_INVALID_HANDLE 0x00000004 -BE_ERR_SUCCESSFUL: LongWord = 0; -BE_ERR_INVALID_FORMAT: LongWord = 1; -BE_ERR_INVALID_FORMAT_PARAMETERS: LongWord = 2; -BE_ERR_NO_MORE_HANDLES: LongWord = 3; -BE_ERR_INVALID_HANDLE: LongWord = 4; - -// other constants - -BE_MAX_HOMEPAGE = 256; - -// format specific variables - -BE_MP3_MODE_STEREO = 0; -BE_MP3_MODE_DUALCHANNEL = 2; -BE_MP3_MODE_MONO = 3; - -type - - TMP3 = packed record - dwSampleRate : LongWord; - byMode : Byte; - wBitRate : Word; - bPrivate : LongWord; - bCRC : LongWord; - bCopyright : LongWord; - bOriginal : LongWord; - end; - - TLHV1 = packed record - // STRUCTURE INFORMATION - dwStructVersion: DWORD; - dwStructSize: DWORD; - - // BASIC ENCODER SETTINGS - dwSampleRate: DWORD; // ALLOWED SAMPLERATE VALUES DEPENDS ON dwMPEGVersion - dwReSampleRate: DWORD; // DOWNSAMPLERATE, 0=ENCODER DECIDES - nMode: Integer; // BE_MP3_MODE_STEREO, BE_MP3_MODE_DUALCHANNEL, BE_MP3_MODE_MONO - dwBitrate: DWORD; // CBR bitrate, VBR min bitrate - dwMaxBitrate: DWORD; // CBR ignored, VBR Max bitrate - nQuality: Integer; // Quality setting (NORMAL,HIGH,LOW,VOICE) - dwMpegVersion: DWORD; // MPEG-1 OR MPEG-2 - dwPsyModel: DWORD; // FUTURE USE, SET TO 0 - dwEmphasis: DWORD; // FUTURE USE, SET TO 0 - - // BIT STREAM SETTINGS - bPrivate: LONGBOOL; // Set Private Bit (TRUE/FALSE) - bCRC: LONGBOOL; // Insert CRC (TRUE/FALSE) - bCopyright: LONGBOOL; // Set Copyright Bit (TRUE/FALSE) - bOriginal: LONGBOOL; // Set Original Bit (TRUE/FALSE_ - - // VBR STUFF - bWriteVBRHeader: LONGBOOL; // WRITE XING VBR HEADER (TRUE/FALSE) - bEnableVBR: LONGBOOL; // USE VBR ENCODING (TRUE/FALSE) - nVBRQuality: Integer; // VBR QUALITY 0..9 - - btReserved: array[0..255] of Byte; // FUTURE USE, SET TO 0 - end; - - TAAC = packed record - dwSampleRate : LongWord; - byMode : Byte; - wBitRate : Word; - byEncodingMethod : Byte; - end; - - TFormat = packed record - case byte of - 1 : (mp3 : TMP3); - 2 : (lhv1 : TLHV1); - 3 : (aac : TAAC); - end; - - TBE_Config = packed record - dwConfig : LongWord; - format : TFormat; - end; - - - PBE_Config = ^TBE_Config; - -//typedef struct { -// // BladeEnc DLL Version number -// -// BYTE byDLLMajorVersion; -// BYTE byDLLMinorVersion; -// -// // BladeEnc Engine Version Number -// -// BYTE byMajorVersion; -// BYTE byMinorVersion; -// -// // DLL Release date -// -// BYTE byDay; -// BYTE byMonth; -// WORD wYear; -// -// // BladeEnc Homepage URL -// -// CHAR zHomepage[BE_MAX_HOMEPAGE + 1]; -// -//} BE_VERSION, *PBE_VERSION; - - TBE_Version = record - byDLLMajorVersion : Byte; - byDLLMinorVersion : Byte; - - byMajorVersion : Byte; - byMinorVersion : Byte; - - byDay : Byte; - byMonth : Byte; - wYear : Word; - - zHomePage : Array[0..BE_MAX_HOMEPAGE + 1] of Char; - end; - - PBE_Version = ^TBE_Version; - -//__declspec(dllexport) BE_ERR beInitStream(PBE_CONFIG pbeConfig, PDWORD dwSamples, PDWORD dwBufferSize, PHBE_STREAM phbeStream); -//__declspec(dllexport) BE_ERR beEncodeChunk(HBE_STREAM hbeStream, DWORD nSamples, PSHORT pSamples, PBYTE pOutput, PDWORD pdwOutput); -//__declspec(dllexport) BE_ERR beDeinitStream(HBE_STREAM hbeStream, PBYTE pOutput, PDWORD pdwOutput); -//__declspec(dllexport) BE_ERR beCloseStream(HBE_STREAM hbeStream); -//__declspec(dllexport) VOID beVersion(PBE_VERSION pbeVersion); - -{ -Function beInitStream(var pbeConfig: TBE_CONFIG; var dwSample: LongWord; var dwBufferSize: LongWord; var phbeStream: THBE_STREAM ): BE_Err; cdecl; external 'Bladeenc.dll'; -//Function beEncodeChunk(hbeStream: THBE_STREAM; nSamples: LongWord; pSample: PSmallInt;pOutput: PByte; var pdwOutput: LongWord): BE_Err; cdecl; external 'Bladeenc.dll'; -Function beEncodeChunk(hbeStream: THBE_STREAM; nSamples: LongWord; var pSample;var pOutput; var pdwOutput: LongWord): BE_Err; stdcall; cdecl 'Bladeenc.dll'; -Function beDeinitStream(hbeStream: THBE_STREAM; var pOutput; var pdwOutput: LongWord): BE_Err; cdecl; external 'Bladeenc.dll'; -Function beCloseStream(hbeStream: THBE_STREAM): BE_Err; cdecl; external 'Bladeenc.dll'; -Procedure beVersion(var pbeVersion: TBE_VERSION); cdecl; external 'Bladeenc.dll'; -} - -Function beInitStream(var pbeConfig: TBE_CONFIG; var dwSample: LongWord; var dwBufferSize: LongWord; var phbeStream: THBE_STREAM ): BE_Err; cdecl; external 'Lame_enc.dll'; -//Function beEncodeChunk(hbeStream: THBE_STREAM; nSamples: LongWord; pSample: PSmallInt;pOutput: PByte; var pdwOutput: LongWord): BE_Err; cdecl; external 'Lame_enc.dll'; -Function beEncodeChunk(hbeStream: THBE_STREAM; nSamples: LongWord; var pSample;var pOutput; var pdwOutput: LongWord): BE_Err; cdecl; external 'Lame_enc.dll'; -Function beDeinitStream(hbeStream: THBE_STREAM; var pOutput; var pdwOutput: LongWord): BE_Err; cdecl; external 'Lame_enc.dll'; -Function beCloseStream(hbeStream: THBE_STREAM): BE_Err; cdecl; external 'Lame_enc.dll'; -Procedure beVersion(var pbeVersion: TBE_VERSION); cdecl; external 'Lame_enc.dll'; - -Procedure EncodeWavToMP3(fs, fd: Integer); -implementation - -Uses InternetSnd, TraiteWav; - -{----------------------------------------} -Procedure EncodeWavToMP3(fs, fd: Integer); -var - err: Integer; - beConfig: TBE_Config; - dwSamples, dwSamplesMP3 : LongWord; - hbeStream : THBE_STREAM; - error: BE_ERR; - pBuffer: PSmallInt; - pMP3Buffer: PByte; - Marque:PChar; - - done: LongWord; - dwWrite: LongWord; - ToRead: LongWord; - ToWrite: LongWord; - i:Integer; - -begin - beConfig.dwConfig := BE_CONFIG_LAME; - -{ - beConfig.Format.mp3.dwSampleRate := WavInfo.SamplesPerSec; - beConfig.Format.mp3.byMode := BE_MP3_MODE_STEREO; - beConfig.Format.mp3.wBitrate := strToInt(MainFrm.Mp3BitRate.Text); - beConfig.Format.mp3.bCopyright := 0; - beConfig.Format.mp3.bCRC := $00000000; - beConfig.Format.mp3.bOriginal := 0; - beConfig.Format.mp3.bPrivate := 0; -} -//Structure information - beConfig.Format.lhv1.dwStructVersion := 1; - beConfig.Format.lhv1.dwStructSize := SizeOf(beConfig); -//Basic encoder setting - beConfig.Format.lhv1.dwSampleRate := WavInfo.SamplesPerSec; - beConfig.Format.lhv1.dwReSampleRate := 44100; - beConfig.Format.lhv1.nMode := BE_MP3_MODE_STEREO; - beConfig.Format.lhv1.dwBitrate := strToInt(MainFrm.Mp3BitRate.Text); - beConfig.Format.lhv1.dwMaxBitrate := strToInt(MainFrm.Mp3BitRate.Text); - beConfig.Format.lhv1.nQuality := 2; - beConfig.Format.lhv1.dwMPegVersion := 1; //MPEG1 - beConfig.Format.lhv1.dwPsyModel := 0; - beConfig.Format.lhv1.dwEmphasis := 0; -//Bit Stream Settings - beConfig.Format.lhv1.bPrivate := False; - beConfig.Format.lhv1.bCRC := False; - beConfig.Format.lhv1.bCopyright := True; - beConfig.Format.lhv1.bOriginal := True; -//VBR Stuff - beConfig.Format.lhv1.bWriteVBRHeader := false; - beConfig.Format.lhv1.bEnableVBR := false; - beConfig.Format.lhv1.nVBRQuality := 0; - - i := 0; - error := beInitStream(beConfig, dwSamples, dwSamplesMP3, hbeStream); - if error = BE_ERR_SUCCESSFUL - then begin - pBuffer := AllocMem(dwSamples*2); - pMP3Buffer := AllocMem(dwSamplesMP3); - try - done := 0; - - error := FileSeek(fs, 0, 0); - While (done < TotalSize) do - begin - if (done + dwSamples*2 < TotalSize) - then ToRead := dwSamples*2 - else begin - ToRead := TotalSize-done; - //FillChar(buf[0],dwSamples*2,0); - FillChar(pbuffer^,dwSamples,0); - end; - - //if FileRead(fs, buf[0], toread) = -1 - if FileRead(fs, pbuffer^, toread) = -1 - then raise Exception.Create('Erreur de lecture'); - - //error := beEncodeChunk(hbeStream, toRead div 2, Buf[0], TmpBuf[0], toWrite); - error := beEncodeChunk(hbeStream, toRead div 2, pBuffer^, pMP3Buffer^, toWrite); - - if error <> BE_ERR_SUCCESSFUL - then begin - beCloseStream(hbeStream); - raise Exception.Create('Echec de l''encodage'); - end; - - //if FileWrite(fd, TmpBuf[0], toWrite) = -1 - if FileWrite(fd, pMP3Buffer^, toWrite) = -1 - then raise Exception.Create('Erreur d''écriture'); - - done := done + toread; - inc(i); - if i mod 64 = 0 - then begin - MainFrm.ProgressBar1.Position := round(100*done/Totalsize); - Application.ProcessMessages; - end; - end; - - error := beDeInitStream(hbeStream, pMP3Buffer^, dwWrite); - //error := beDeInitStream(hbeStream, TmpBuf[0], dwWrite); - - if error <> BE_ERR_SUCCESSFUL - then begin - beCloseStream(hbeStream); - raise Exception.Create('Echec à la sortie'); - end; - - if dwWrite <> 0 - then begin - //if FileWrite(fd, TmpBuf[0], dwWrite) = -1 - if FileWrite(fd, pMP3Buffer^, dwWrite) = -1 - then raise Exception.Create('Erreur à la dernière écriture'); - end; - - beCloseStream(hbeStream); - finally - FreeMem(pBuffer); - FreeMem(pMP3Buffer); - end; - end - else begin - - end; -end; - -end. diff --git a/platform/win32/msvc/external/lame/Dll/Makefile.am b/platform/win32/msvc/external/lame/Dll/Makefile.am deleted file mode 100644 index 92f58c0fbe1..00000000000 --- a/platform/win32/msvc/external/lame/Dll/Makefile.am +++ /dev/null @@ -1,11 +0,0 @@ -## $Id: Makefile.am,v 1.11 2010/10/30 13:21:02 robert Exp $ - -include $(top_srcdir)/Makefile.am.global - -EXTRA_DIST = BladeMP3EncDLL.c \ - BladeMP3EncDLL.def \ - BladeMP3EncDLL.h \ - Example.cpp \ - LameDLLInterface.htm \ - MP3export.pas \ - Makefile.mingw32 diff --git a/platform/win32/msvc/external/lame/Dll/Makefile.in b/platform/win32/msvc/external/lame/Dll/Makefile.in deleted file mode 100644 index 51b90b64c76..00000000000 --- a/platform/win32/msvc/external/lame/Dll/Makefile.in +++ /dev/null @@ -1,393 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# global section for every Makefile.am -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/Makefile.am.global -subdir = Dll -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CONFIG_DEFS = @CONFIG_DEFS@ -CONFIG_MATH_LIB = @CONFIG_MATH_LIB@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CPUCCODE = @CPUCCODE@ -CPUTYPE = @CPUTYPE@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ -FRONTEND_LDADD = @FRONTEND_LDADD@ -FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ -GREP = @GREP@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_CONFIG = @GTK_CONFIG@ -GTK_LIBS = @GTK_LIBS@ -INCLUDES = @INCLUDES@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDADD = @LDADD@ -LDFLAGS = @LDFLAGS@ -LIBICONV = @LIBICONV@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ -LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBICONV = @LTLIBICONV@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEDEP = @MAKEDEP@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NASM = @NASM@ -NASM_FORMAT = @NASM_FORMAT@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -RM_F = @RM_F@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ -SNDFILE_LIBS = @SNDFILE_LIBS@ -STRIP = @STRIP@ -U = @U@ -VERSION = @VERSION@ -WITH_FRONTEND = @WITH_FRONTEND@ -WITH_MP3RTP = @WITH_MP3RTP@ -WITH_MP3X = @WITH_MP3X@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = 1.11 foreign $(top_srcdir)/ansi2knr -EXTRA_DIST = BladeMP3EncDLL.c \ - BladeMP3EncDLL.def \ - BladeMP3EncDLL.h \ - Example.cpp \ - LameDLLInterface.htm \ - MP3export.pas \ - Makefile.mingw32 - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Dll/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign Dll/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am - - -# end global section - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/platform/win32/msvc/external/lame/Dll/Makefile.mingw32 b/platform/win32/msvc/external/lame/Dll/Makefile.mingw32 deleted file mode 100644 index 6070f297fff..00000000000 --- a/platform/win32/msvc/external/lame/Dll/Makefile.mingw32 +++ /dev/null @@ -1,39 +0,0 @@ -# This makefile compiles lame_enc.dll with mingw32 (and possibly cygwin) -# Of course, you must first build ../libmp3lame/libmp3lame.a. -# liblame_enc.a can be used to link the lame_enc.dll to your programs. -# Tested with EAC 0.9pb9 (my own favorite, http://www.exactaudiocopy.de/) -# example.exe compiles and works, too. -# Vladislav Naumov, -# -# PS: to 'make clean' you need rm. MS's del is unusable. -# PPS: quick build: -# make -fMakefile.mingw32 - -DLL_NAME = lame_enc -LAME_SRC_ROOT = .. -OFILES = BladeMP3EncDLL.o $(DLL_NAME)_exp.o -CFLAGS = -I$(LAME_SRC_ROOT)/include -I$(LAME_SRC_ROOT)/libmp3lame -CC = g++ -LD = g++ -LFLAGS = -L$(LAME_SRC_ROOT)/libmp3lame -o $(DLL_NAME).dll -mdll -s -LIBS = -lmp3lame - -all: $(DLL_NAME).dll example.exe - -BladeMP3EncDLL.o: BladeMP3EncDLL.c BladeMP3EncDLL.h ../include/lame.h \ - ../libmp3lame/lame_global_flags.h ../libmp3lame/version.h - -$(DLL_NAME).dll : $(OFILES) - $(LD) $(LFLAGS) $(OFILES) $(LIBS) - -$(DLL_NAME)_exp.o : BladeMP3EncDLL.o - dlltool --input-def BladeMP3EncDLL.def --output-lib lib$(DLL_NAME).a --output-exp $(DLL_NAME)_exp.o --dllname $(DLL_NAME) BladeMP3EncDLL.o - -%.o : %.c - $(CC) $(CFLAGS) -c $< -o $@ - -example.exe : Example.cpp BladeMP3EncDLL.h - $(CC) Example.cpp -o example.exe - -clean : - rm -f $(DLL_NAME).dll $(OFILES) example.exe diff --git a/platform/win32/msvc/external/lame/Dll/README b/platform/win32/msvc/external/lame/Dll/README deleted file mode 100644 index ed8467a6f56..00000000000 --- a/platform/win32/msvc/external/lame/Dll/README +++ /dev/null @@ -1,21 +0,0 @@ - -This directory contains a Windows DLL interface to the LAME -encoding engine. - -This DLL is compatible with the BladeEnc.dll. -See BladeMP3EncDLL.c for details of the calling -sequence, and BladeMP3EncDLL.h for details of the -data that must be passed to the DLL. - -As of yet, there is no other documentation. - -To use this DLL as a replacement for BladeEnc.dll, you -need to populate the 'mp3' struct. - -To use more advanced features of LAME, you need to -populate the LHV1 struct instead. - -Delphi 4 Users: Gabriel Gélin has -contributed a .PAS file, do you can access the DLL from -Delphi. See MP3export.pas. - diff --git a/platform/win32/msvc/external/lame/HACKING b/platform/win32/msvc/external/lame/HACKING deleted file mode 100644 index c3bdce0e793..00000000000 --- a/platform/win32/msvc/external/lame/HACKING +++ /dev/null @@ -1,124 +0,0 @@ -First, see the file STYLEGUIDE - -************************************************************************ -TESTING -======= -If you make changes, please test. There is a python -script in the test/ directory which will compare two versions -of lame using a bunch of CBR and ABR options. To run this -script, copy your favorite (and short!) wav file to the -lame/test directory, and run: - -% cd lame/test -% ./lametest.py [-w] CBRABR.op castanets.wav lame_orig lame_new - - - - - - -************************************************************************ -LAME API - -For a general outline of the code, see the file API. -Also, frontend/main.c is a simple front end to libmp3lame.a - -The guts of the code are called from lame_encode_buffer(). - -lame_encode_buffer() handles buffering and resampling, and -then calls lame_encode_frame() for each frame. lame_encode_frame() -looks like this: - -lame_encode_frame_mp3(): - l3psycho_anal() compute masking thresholds - mdct_sub() compute MDCT coefficients - iteration_loop() choose scalefactors (via iteration) - which determine noise shapping, and - choose best huffman tables for lossless compression - - format_bitstream format the bitstream. when data+headers are complete, - output to internal bit buffer. - copy_buffer() copy internal bit buffer into user's mp3 buffer - -************************************************************************ -ADDING NEW OPTIONS - -control variable goes in lame_global_flags sturct. -Assume the variable is called 'new_variable'. - -You also need to write (in set_get.c): - -lame_set_new_variable() -lame_get_new_variable() - -And then document the variable in the file USAGE as well as the -output of "lame --longhelp" - -And add a "--option" style command line option to enable this variable -in parse.c - -Note: for experimental features that you need to call from the frontend -but that should not be part of the official API, see the section at -the end of set_get.c. These functions should *NOT* be prototyped in -lame.h (since that would indicate to the world that they are part -of the API). - - -************************************************************************ - -THREADSAFE: - -Lame should now be thread safe and re-entrant. -The only problem seems to be some OS's allocate small -stacks (< 128K) to threads launched by applictions, and this -is not enough for LAME. Fix is to increase the stack space, -or move some of our automatic variables onto the heap with -by using bug-prove malloc()'s and free(). - - - -************************************************************************ -Global Variables: - -There are two types of global variables. All data in -both strucs is initialized to zero. - -1. lame_global_flags *gfp - -These are input paramters which are set by the calling program, -and some information which the calling program may be interested in. - -This struct instantiated by the call to lame_init(). - - -2. lame_internal_flags *gfc - -Most global variables go here. - -All internal data not set by the user. All 'static' data from -old non-reentrant code should be moved here. - -Defined in util.h. Data for which the size is known -in advace should be explicitly declaired (for example, -float xr[576]); Data which needs to be malloc'd is -handled by: - -1. in lame_init_params(), malloc the data -2. be sure to free the data in freegfc() - - -If the data to be malloc'd is large and only used in -certain conditions (like resampling), use the following: -this has the disadvantage that it is hard to catch and return error -flags all the way back up the call stack. - -1. Add an initialization variable to the gfc struct: lame_init_resample -2. In the resample routine, there should be some code like this: - - if (0==gfc->lame_init_resample) { - gfc->lame_init_resample=1; - /* initialization code: malloc() data, etc */ - } - -3. The data should be free'd in the routine freegfc(). - diff --git a/platform/win32/msvc/external/lame/INSTALL b/platform/win32/msvc/external/lame/INSTALL deleted file mode 100644 index f0077aef498..00000000000 --- a/platform/win32/msvc/external/lame/INSTALL +++ /dev/null @@ -1,206 +0,0 @@ -LAME 3.xx January 2001 Mark Taylor (http://www.mp3dev.org) - - -======================================================================= -Compile time options -======================================================================= -There are serveral targets which can be built from this -source code: - -lame, lame.exe The command line encoder - -mp3x A GTK based graphical MP3 frame analyzer. For debugging, - development, and studing MP3 frames produced by any - encoder. - -lame_enc.dll a Windows DLL used by many GUIs which support lame. - (Can only be compiled by MSVC???) - - -lame.acm a Windows ACM codec which can be used by - many windows programs, and any directshow program. - See MSVC project files in ACM directory. - Right click on lame.inf to install. - -lame_enc.dshow a Windows direct show filter for lame. Potentially has - more flexability than the ACM codec, but code needs some - work. See MSVC project files in dshow directory - - -libmp3lame.a the static encoding library used by all platforms, required - by all the above targets. - -libmp3lame.so shared version of libmp3lame.a for *NIX platforms - - - -The following compile time options can be used. For libmp3lame.a -and lame_enc.dll, none are required. On non-unix systems, -these options must be set in config.h or in the IDE. -On unix systems, they are set via ./configure. - - -#define HAVE_MPGLIB compile in mpglib's mp3 *decoding* capibility -#define HAVE_VORBIS compile in Vorbis decoding capibility - (you need libvorbis already built) -#define NOANALYSIS do not compile in hooks used by the - MP3 frame analyzer. - - -Options for the command line encoder: -#define LIBSNDFILE to use Erik de Castro Lopo's libsndfile - for input. - - - -======================================================================= -Building the software on *NIX platforms using configure: -======================================================================= -Run the following commands: - -% ./configure -% make -% make install - -For a complete list of options, try "./configure --help" -Some of the more usefull options: - -For the encoding library: - - --enable-mp3x Build the mp3 frame analyzer, 'mp3x' - - --enable-mp3rtp Build the encode-to-RTP program, 'mp3rtp' - (broken as of August 2001) - - -For the LAME front end encoder: - - --with-fileio=lame Use lame's internal file io routines [default] - =sndfile Use Erik de Castro Lopo's libsndfile - (Supports many more input formats, but no stdin possible currently) - - --with-sndfile-prefix=DIR Alternate location for libsndfile - (if --with-fileio=sndfile) - - -Other usefull configure options: - - --enable-debug Build a debug version - - --enable-expopt Enable some more optimizations flags for - the compiler, may or may not produce - faster code - - --prefix = PATH default is /usr/local - (LAME currently installs: - /usr/local/bin/lame - /usr/local/lib/libmp3lame.a - /usr/local/lib/libmp3lame.so - /usr/local/include/lame.h - - - --with-vorbis Enable Ogg Vorbis decoding support - --with-vorbis-prefix = PATH specify where to find Vorbis libs - - -Some more advanced ways to influence the build procedure -(experienced users only, use it at your own risk): - - - If you want to use some custom defines for building (e.g. some out - of the file "DEFINES") use: - - * bourne shell or compatible (ash, bash, zsh, ...): - CONFIG_DEFS="-Dmy_define" ./configure - - * C shell or compatible (csh, tcsh, ...): - setenv CONFIG_DEFS "-Dmy_define" - ./configure - - - If you want to use some additional options for the compiler: - - * bourne shell or compatible (ash, bash, zsh, ...): - CFLAGS="--my_flag" ./configure - - * C shell or compatible (csh, tcsh, ...): - setenv CFLAGS "--my_flag" - ./configure - - Or some combination of the above. - - Note: - If configure detects the presents of "nasm" some additional speed - improvements get compiled in (additional assembler code to detect - and use multimedia extensions of the used processor). - - -======================================================================= -Building the software on *NIX platforms without configure: -======================================================================= -% make -f Makefile.unix - - - -======================================================================= -Building the software on Windows with MSVC: -(or MSVC + 3rd party C compiler) -======================================================================= -There are MSVC project files, and a Makefile.MSVC included -with the project. For production use, be sure to compile -a "Release" target, with the "maximum speed" compile -option, and #define NDEBUG. - -It is possible to compile the GTK frame analyzer under windows, see -README.WINGTK - -Various build options can be set in configMS.h - -Note: project files for building lame.exe seem to be broken or not -quite compatable with MSVC6. The most reliable way to build lame and -lame_enc.dll is to run the .bat script (comes with MSVC6) which sets -up your VC environment to work from the command line, and then: - -copy configMS.h config.h -nmake -f Makefile.MSVC comp=msvc asm=no - -Project files for the dll, ACM codec and directshow filter -seem to be in better sahpe. - - - - - - -======================================================================= -Building the software on Windows with free compilers: -======================================================================= -LAME can be compiled with various Windows MSDOS ports (all free) -of GCC (DJGPP, Mingw32). See README.DJGPP. - -For Mingw32, you should now be able to use the Unix Makefile that -comes with LAME. Try: "make -f Makefile.unix UNAME=MSDOS" -You may need to remove these lines from brhist.c: - -#ifdef _WIN32 -COORD Pos; -HANDLE CH; -CONSOLE_SCREEN_BUFFER_INFO CSBI; -#endif - -Mingw32 users may also try to use the unix configure script (explained -above), it has _untested_ support for Mingw32. - -Cygwin users should use the unix configure script (explained above). If -you have problems with the configure script try: - CC=gcc ./configure -Patches to enable the build of the lame_enc.dll with Cygwin and autoconf / -automake / libtool are welcome! - -To use the Borland C compiler (now free!) see README.B32 and Makefile.B32. -Borland can also compile the lame_enc.dll, but this is untested. - -Can DJGPP or Mingw32 produce lame_enc.dll? - -Various build options can be set in configMS.h - - - diff --git a/platform/win32/msvc/external/lame/INSTALL.configure b/platform/win32/msvc/external/lame/INSTALL.configure deleted file mode 100644 index 50dbe439d09..00000000000 --- a/platform/win32/msvc/external/lame/INSTALL.configure +++ /dev/null @@ -1,183 +0,0 @@ -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, a file -`config.cache' that saves the results of its tests to speed up -reconfiguring, and a file `config.log' containing compiler output -(useful mainly for debugging `configure'). - - 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 at some point `config.cache' -contains results you don't want to keep, you may remove or edit it. - - The file `configure.in' is used to create `configure' by a program -called `autoconf'. You only need `configure.in' 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. You can give `configure' -initial values for variables by setting them in the environment. Using -a Bourne-compatible shell, you can do that on the command line like -this: - CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure - -Or on systems that have the `env' program, you can do it like this: - env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure - -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 supports the `VPATH' -variable, you have to compile the package for one architecture at a time -in the source code directory. After you have installed the package for -one architecture, use `make distclean' before reconfiguring for another -architecture. - -Installation Names -================== - - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=PATH' 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' can not figure out -automatically, but needs to determine by the type of host the package -will run on. Usually `configure' can figure that out, but if it prints -a message saying it can not guess the host type, give it the -`--host=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name with three fields: - CPU-COMPANY-SYSTEM - -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 host type. - - If you are building compiler tools for cross-compiling, you can also -use the `--target=TYPE' option to select the type of system they will -produce code for and the `--build=TYPE' option to select the type of -system on which you are compiling the package. - -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. - -Operation Controls -================== - - `configure' recognizes the following options to control how it -operates. - -`--cache-file=FILE' - Use and save the results of the tests in FILE instead of - `./config.cache'. Set FILE to `/dev/null' to disable caching, for - debugging `configure'. - -`--help' - Print a summary of the options to `configure', and exit. - -`--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. - -`--version' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`configure' also accepts some other, not widely useful, options. - diff --git a/platform/win32/msvc/external/lame/LICENSE b/platform/win32/msvc/external/lame/LICENSE deleted file mode 100644 index 15d7730ee59..00000000000 --- a/platform/win32/msvc/external/lame/LICENSE +++ /dev/null @@ -1,13 +0,0 @@ -Can I use LAME in my commercial program? - -Yes, you can, under the restrictions of the LGPL. The easiest -way to do this is to: - -1. Link to LAME as separate library (libmp3lame.a on unix or - lame_enc.dll or libmp3lame.dll on windows) - -2. Fully acknowledge that you are using LAME, and give a link - to our web site, www.mp3dev.org - -3. If you make modifications to LAME, you *must* release these - these modifications back to the LAME project, under the LGPL. diff --git a/platform/win32/msvc/external/lame/Makefile.MSVC b/platform/win32/msvc/external/lame/Makefile.MSVC deleted file mode 100644 index d49aba456c9..00000000000 --- a/platform/win32/msvc/external/lame/Makefile.MSVC +++ /dev/null @@ -1,703 +0,0 @@ -# Makefile.MSVC: MSVC Makefile for LAME -# -# 2000-2010 Robert Hegemann -# dedicated to the LAME project http://www.mp3dev.org -############################################################################### - - - -#__ readme ____________________________________________________________________ -# nmake -f Makefile.MSVC -# -> build lame, but not mp3x -# -> use Robert's code modifications -# -> assume MSVC 6.0 compiler available -# -> assume NASM available -# -> assemble MMX code with NASM -# -> no compiler warnings -# -> use single precision float -# -# passing arguments, one can modify the default behaviour: -# COMP= -> use MS compiler -# WARN= -> give verbose compiler warnings -# ASM= -> no NASM nor MMX -# MMX= -> do not assemble MMX code -# CFG= -> disable Robert's modifications -# CPU=P1 -> optimize for Pentium instead of P II/III -# CPU=P2 -> optimize for Pentium II/III, you need a PII or better -# CPU=P3 -> optimize for Pentium III, you need a PIII or better -# GTK=YES -> have GTK, adds mp3x to default targets -# PREC= -> use double instead of single float -# SNDFILE= -> do not use LibSndfile for reading input files -# -# Example: -# nmake -f Makefile.MSVC CPU=P1 GTK=YES -#____________________________________________________________________ readme __ - - - -# targets <-> DOS filenames - -T_LAME = lame.exe -T_MP3X = mp3x.exe -T_MP3RTP = mp3rtp.exe -T_DLL = libmp3lame.dll -T_LIB_DYNAMIC = libmp3lame.lib -T_LIB_STATIC = libmp3lame-static.lib -T_LEGACY_DLL = lame_enc.dll - -TARGET_DIR = .\output\ - -# default targets - -PGM = $(T_LAME) - -# some default settings - -! IF "$(MSVCVER)" != "" -COMP = MS -! IF "$(MSVCVER)" == "Win64" -! IF "$(ASM)" == "" -ASM = NO # or it could be ML64 if we want to use it... -GTK = NO -! ENDIF -! ENDIF -! ELSE -! IF "$(COMP)" == "" -COMP = MSVC -! ENDIF -! ENDIF - -! IF "$(ASM)" == "" -ASM = YES -! ENDIF - -! IF "$(MMX)" == "" -MMX = YES -! ENDIF - -! IF "$(CFG)" == "" -CFG = RH -! ENDIF - -! IF "$(CPU)" == "" -CPU = P2auto -!if "$(PROCESSOR_LEVEL)"=="6" -CPU = P6 -!endif -! ENDIF - -! IF "$(WARN)" == "" -WARN = OFF -! ENDIF - -! IF "$(PREC)" == "" -PREC = SINGLE -! ENDIF - -! IF "$(SNDFILE)" == "" -SNDFILE = NO -! ENDIF - -OFF = win32 -MACHINE = /machine:I386 -LIB_OPTS = /nologo $(MACHINE) - -! MESSAGE ---------------------------------------------------------------------- -! IF "$(CFG)" == "" -! MESSAGE building LAME -! ELSE -! MESSAGE building LAME featuring $(CFG) -! ENDIF -! IF "$(ASM)" == "YES" -! MESSAGE + ASM -! IF "$(MMX)" == "YES" -! MESSAGE + MMX -! ENDIF -! ENDIF -! IF "$(GTK)" == "YES" -! MESSAGE + GTK -! ENDIF -! IF "$(COMP)" == "INTEL" -! MESSAGE using INTEL COMPILER -! IF "$(CPU)" == "P1" -! MESSAGE + optimizing for Pentium (MMX) -! ELSE -! IF "$(CPU)" == "P2" -! MESSAGE + you need a Pentium II or better -! ELSE -! IF "$(CPU)" == "P3" -! MESSAGE + you need a Pentium III or better -! ELSE -! MESSAGE + optimizing for Pentium II/III -! ENDIF -! ENDIF -! ENDIF -! ELSE -! IF "$(MSVCVER)" == "6.0" -! MESSAGE + using MSVC 6.0 32-Bit Compiler -! IF "$(CPU)" == "P1" -! MESSAGE + optimizing for Pentium (MMX) (may slow down PIII a few percent) -! ELSE -! MESSAGE + optimizing for Pentium II/III -! ENDIF -! ELSEIF "$(MSVCVER)" == "8.0" -! MESSAGE + using MSVC 8.0 32-Bit Compiler -! IF "$(CPU)" == "P1" -! MESSAGE + optimizing for Pentium (MMX) (may slow down PIII a few percent) -! ELSE -! MESSAGE + optimizing for Pentium II/III -! ENDIF -! ELSE -! IF "$(MSVCVER)" == "Win64" -! MESSAGE + using MS 64-Bit Compiler -! ELSE -! MESSAGE using MS COMPILER -! IF "$(CPU)" == "P1" -! MESSAGE + optimizing for Pentium (MMX) (may slow down PIII a few percent) -! ELSE -! MESSAGE + optimizing for Pentium II/III -! ENDIF -! ENDIF -! ENDIF -! ENDIF -! IF "$(PREC)" == "SINGLE" -! MESSAGE + using Single precision -! ENDIF -! IF "$(SNDFILE)" == "YES" -! MESSAGE + using LibSndfile reading input files -! ENDIF -! MESSAGE ---------------------------------------------------------------------- - -! IF "$(COMP)" != "INTEL" -! IF "$(COMP)" != "BCC" - -#__ Microsoft C options _______________________________________________________ -# -# /O2 maximize speed -# /Ob inline expansion -# /Og enable global optimizations -# /Oi enable intrinsic functions -# /Ot favor code speed -# /Oy enable frame pointer omission -# /G5 Pentium optimization -# /G6 Pentium II/III optimization -# /GA optimize for Windows Application -# /GF enable read-only string pooling -# /Gf enable string spooling -# /Gs disable stack checking calls -# /Gy separate functions for linker -# /QIfdiv generate code for Pentium FDIV fix -# /QI0f generate code for Pentium 0x0f erratum fix -# -# remarks: -# - aliasing options seem to break code -# - try to get the Intel compiler demonstration code! -# ICL produces faster code. - -# debugging options -# CC_OPTS = /nologo /Zi /Ge /GZ -# LN_OPTS = /nologo /debug:full /debugtype:cv /fixed:no - -# profiling options -# CC_OPTS = /nologo /Zi /O2b2gity /G6As /DNDEBUG -# LN_OPTS = /nologo /debug:full /debugtype:cv /fixed:no /profile - -# release options -! IF "$(MSVCVER)" == "Win64" -CC_OPTS = /nologo /DWin64 /O2b2ity /GAy /Gs1024 /Zp8 /GL /GS- /Zi -! ELSEIF "$(MSVCVER)" == "8.0" -CC_OPTS = /nologo /O2 /Wp64 /Oi /GL /arch:SSE /fp:precise -! ELSEif "$(CPU)"=="P6" -CC_OPTS = /nologo /O2 /Ob2 /GAy /Gs1024 /Zp8 /Zi -!else -CC_OPTS = /nologo /O2 /Ob2 /GAy /Gs1024 /QIfdiv /QI0f /YX -! ENDIF - -! IF "$(MSVCVER)" == "6.0" -! IF "$(CPU)" == "P1" -CC_OPTS = $(CC_OPTS) /G5 -! ELSE -CC_OPTS = $(CC_OPTS) /G6 -! ENDIF -! ENDIF - -! IF "$(WARN)" == "OFF" -CC_OPTS = $(CC_OPTS) /w -! ELSE -CC_OPTS = $(CC_OPTS) /W$(WARN) -! ENDIF - -! IF "$(PREC)" == "SINGLE" -CC_OPTS = $(CC_OPTS) /DFLOAT8=float /DREAL_IS_FLOAT=1 -! ENDIF - -CC_OPTS = $(CC_OPTS) /DNDEBUG /MT - -LN_OPTS = /nologo /opt:NOWIN98 /pdb:none -LN_DLL = /nologo /DLL /opt:NOWIN98 - -CC_OUT = /Fo -LN_OUT = /OUT: - -CC = cl -LN = link - -#_______________________________________________________ Microsoft C options __ - - -! ELSE - -#__ Borland BCC options _______________________________________________________ -# -# first draft, DLL not working, generates very slow code! -BCCINST = C:/Borland/BCC55 - -CC_OPTS = -pc -q -ff -fp -jb -j1 -tWC -tWM -O2 -OS -I$(BCCINST)/include -DNDEBUG -DWIN32 -# dll >> -tWD -LN_OPTS = -lGn -lGi -lap -lx -L$(BCCINST)/lib -# dll >> -Tpd -! IF "$(CPU)" == "P1" -CC_OPTS = $(CC_OPTS) -5 -! ELSE -CC_OPTS = $(CC_OPTS) -6 -! ENDIF - -! IF "$(WARN)" == "OFF" -CC_OPTS = $(CC_OPTS) -w- -! ELSE -CC_OPTS = $(CC_OPTS) -! ENDIF - -LN_DLL = -#$(CCINST)/lib/cw32R.lib -LN_OUT = -e -CC_OUT = -o - -CC = bcc32 -LN = bcc32 - -OFF = obj - -! ENDIF -#_______________________________________________________ Borland BCC options __ - - -! ELSE - -#__ Intel 4.5 options _________________________________________________________ -# -# /YX enable automatic precompiled header file creation/usage -# /Ox maximum optimization same as /O2 without /Gfy -# /O2 same as /Gfsy /Ob1gyti -# /Gd 1) make cdecl the default calling convention -# /G5 2) optimized for Pentium -# /G6 3) optimized for Pentium II/III -# /GA assume single threaded -# /Gs[n] disable stack checks for functions with /dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done - -test -n "$(am__skip_mode_fix)" \ - || find "$(distdir)" -type d ! -perm -755 \ - -exec chmod u+rwx,go+rx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r "$(distdir)" -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 - $(am__remove_distdir) - -dist-lzma: distdir - tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma - $(am__remove_distdir) - -dist-xz: distdir - tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz - $(am__remove_distdir) - -dist-tarZ: distdir - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__remove_distdir) - -dist-shar: distdir - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__remove_distdir) - -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__remove_distdir) - -dist dist-all: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lzma*) \ - lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ - *.tar.xz*) \ - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - esac - chmod -R a-w $(distdir); chmod a+w $(distdir) - mkdir $(distdir)/_build - mkdir $(distdir)/_inst - chmod a-w $(distdir) - test -d $(distdir)/_build || exit 0; \ - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ - distuninstallcheck \ - && chmod -R a-w "$$dc_install_base" \ - && ({ \ - (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ - && cd "$$am__cwd" \ - || exit 1 - $(am__remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -distuninstallcheck: - @$(am__cd) '$(distuninstallcheck_dir)' \ - && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 -distcleancheck: distclean - @if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am -check: check-recursive -all-am: Makefile config.h -installdirs: installdirs-recursive -installdirs-am: -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-hdr \ - distclean-libtool distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ - ctags-recursive install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am am--refresh check check-am clean clean-generic \ - clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ - dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \ - distcheck distclean distclean-generic distclean-hdr \ - distclean-libtool distclean-tags distcleancheck distdir \ - distuninstallcheck dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - installdirs-am maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ - ps ps-am tags tags-recursive uninstall uninstall-am - - -# end global section - -.PHONY: test - -# -# The differences depend on the used processor architecture, the used -# compiler and the used options for the compiler, so make test may -# show some differences. You should only be concerned if you are a -# LAME developer and the number of differences change after you -# modified the source. -# -testcase.new.mp3: testcase.wav frontend/lame$(EXEEXT) - time frontend/lame$(EXEEXT) --nores $(top_srcdir)/testcase.wav testcase.new.mp3 || $(RM_F) testcase.new.mp3 - -test: testcase.mp3 testcase.new.mp3 - @echo - @echo "The following output has value only for a LAME-developer, do not make _any_" - @echo "assumptions about what this number means. You do not need to care about it." - @cmp -l testcase.new.mp3 $(top_srcdir)/testcase.mp3 | wc -l - -testupdate: testcase.mp3 testcase.new.mp3 - cp testcase.new.mp3 $(top_srcdir)/testcase.mp3 - -testg: frontend/mp3x$(EXEEXT) $(top_srcdir)/../test/castanets.wav - frontend/mp3x$(EXEEXT) -h $(top_srcdir)/../test/castanets.wav - -update: - cd $(top_srcdir) && CVS_RSH=ssh cvs -z3 -q update -dAP || true - -diff: - cd $(top_srcdir) && CVS_RSH=ssh cvs -z3 diff -u || true - -frontend/lame$(EXEEXT): - $(MAKE) $(MAKEFLAGS) - -frontend/mp3x$(EXEEXT): frontend/lame$(EXEEXT) - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/platform/win32/msvc/external/lame/Makefile.unix b/platform/win32/msvc/external/lame/Makefile.unix deleted file mode 100644 index 3fd561d2292..00000000000 --- a/platform/win32/msvc/external/lame/Makefile.unix +++ /dev/null @@ -1,666 +0,0 @@ -# Makefile for LAME 3.xx -*- makefile -*- -# -# LAME is reported to work under: -# Linux (i86), NetBSD 1.3.2 (StrongARM), FreeBSD (i86) -# Compaq Alpha(OSF, Linux, Tru64 Unix), Sun Solaris, SGI IRIX, -# OS2 Warp, Macintosh PPC, BeOS, Amiga and even VC++ -# - -# these variables are available on command line: -# -# make UNAME=xxxxx ARCH=xxxxx - specify a type of host -# make PGM=lame_exp - specify a name of an executable file -# -# if you have mingw32-gcc, try: -# make -fMakefile.unix UNAME=MSDOS -# or if you get the error -# "process_begin: CreateProcess((null), copy configMS.h config.h, ...)": -# make -fMakefile.unix UNAME=MSDOS NOUNIXCMD=NO -# or if you have NASM: -# make -fMakefile.unix UNAME=MSDOS HAVE_NASM=YES -# - -ifeq ($(UNAME),MSDOS) - UNAME ?= UNKNOWN - ARCH = x86 - NOUNIXCMD = YES -else - UNAME = $(shell uname) - ARCH = $(shell uname -m) - iARCH = $(patsubst i%86,x86,$(ARCH)) -endif - -HAVE_NASM = NO -HAVE_NEWER_GLIBC = NO -NASM_FLAGS=elf - -# generic defaults. OS specific options go in versious sections below -PGM = lame -CC = gcc -CC_OPTS = -O -CPP_OPTS = -Iinclude -Impglib -Ifrontend -Ilibmp3lame -AR = ar -RANLIB = ranlib -GTK = -GTKLIBS = -LIBSNDFILE = -LIBS = -lm -MP3LIB = libmp3lame/libmp3lame.a -MP3LIB_SHARED = libmp3lame/libmp3lame.so -MAKEDEP = -M -BRHIST_SWITCH = -LIBTERMCAP = -RM = rm -f - -CPP_OPTS += -DHAVE_CONFIG_H -I. - -########################################################################## -# -DHAVEMPGLIB compiles the mpglib *decoding* library into libmp3lame -########################################################################## -CPP_OPTS += -DHAVE_MPGLIB - -########################################################################## -# -DTAKEHIRO_IEEE754_HACK enables Takehiro's IEEE hack -########################################################################## -ifeq ($(iARCH),x86) - ifeq ($(CFG),RH_SSE) -# SSE and IEEE754 HACK don't work together - else - CPP_OPTS += -DTAKEHIRO_IEEE754_HACK - endif -endif - -########################################################################## -# Define these in the OS specific sections below to compile in code -# for the optional VBR bitrate histogram. -# Requires ncurses, but libtermcap also works. -# If you have any trouble, just dont define these -# -# BRHIST_SWITCH = -DBRHIST -DHAVE_TERMCAP -DHAVE_{NCURSES_}TERMCAP_H -# LIBTERMCAP = -lncurses -# LIBTERMCAP = -ltermcap -# -# or, to try and simulate TERMCAP (ANSI), use: -# BRHIST_SWITCH = -DBRHIST -# -########################################################################## - - -########################################################################## -# Define these in the OS specific sections below to compile in code for: -# -# SNDLIB = -DLIBSNDFILE to use Erik de Castro Lopo's libsndfile -# http://www.zip.com.au/~erikd/libsndfile/ instead of LAME's internal -# routines. Also set: -# -# LIBSNDFILE = -lsndfile -# or -# LIBSNDFILE = -L/location_of_libsndfile -lsndfile -# -########################################################################## - - -########################################################################## -# Define these in the OS specific sections below to compile in code for -# the GTK mp3 frame analyzer -# -# Requires -DHAVE_MPGLIB -# -# GTK = -DHAVE_GTK `gtk-config --cflags` -# GTKLIBS = `gtk-config --libs` -# -########################################################################## - - - - -########################################################################## -# LINUX -########################################################################## -ifeq ($(UNAME),Linux) -# The frame analyzer depends on gtk1.2. Uncomment the next 2 lines to get it -# GTK = -DHAVE_GTK `gtk-config --cflags` -# GTKLIBS = `gtk-config --libs` -# Comment out next 2 lines if you want to remove VBR histogram capability - BRHIST_SWITCH = -DHAVE_TERMCAP -DHAVE_TERMCAP_H - LIBTERMCAP = -lncurses -# uncomment to use LIBSNDFILE -# SNDLIB = -DLIBSNDFILE -# LIBSNDFILE=-lsndfile - -# suggested for gcc-2.7.x -# CC_OPTS = -O3 -fomit-frame-pointer -funroll-loops -ffast-math -finline-functions -Wall -pedantic -# CC_OPTS = -O9 -fomit-frame-pointer -fno-strength-reduce -mpentiumpro -ffast-math -finline-functions -funroll-loops -Wall -malign-double -g -march=pentiumpro -mfancy-math-387 -pipe -pedantic - -# Suggested for GCC 4.* & machines with sse+sse2+sse3: -Os might reduce -# the use of the instruction cache and, thus, get better performance, -# but this should be experimented by the user. Customize at your own -# convenience. -# -#CC_OPTS = -pipe -O3 \ -# -Wall -Wextra -pedantic \ -# -Wmissing-declarations -Wfloat-equal -Wshadow \ -# -Wcast-qual -Wcast-align -Wdisabled-optimization \ -# -ffast-math -ftree-vectorize -ftree-vect-loop-version \ -# -mtune=nocona -march=nocona -mfpmath=sse -msse -msse2 -msse3 \ -# -malign-double -maccumulate-outgoing-args - -# for debugging: - CC_OPTS = -UNDEBUG -O -Wall -pedantic -ggdb -DABORTFP - -# for lots of debugging: -# CC_OPTS = -DDEBUG -UNDEBUG -O -Wall -pedantic -g -DABORTFP - - -ifeq ($(CFG),RH) - GTK = -DHAVE_GTK `gtk-config --cflags` - GTKLIBS = `gtk-config --libs` - CPP_OPTS += -DFLOAT8=float -DREAL_IS_FLOAT=1 -DHAVE_ICONV -DHAVE_XMMINTRIN_H -D_ALLOW_INTERNAL_OPTIONS -# these options for gcc-3.2 & AthlonXP - CC_OPTS = \ - -pipe -O3 \ - -Wall -W -Wmissing-declarations -Wfloat-equal -Wformat \ - -Wcast-qual -Wcast-align -Wdisabled-optimization -Wshadow \ - -march=athlon-xp \ - -malign-double \ - -maccumulate-outgoing-args -# -Wconversion -Wunreachable-code \ - - HAVE_NEWER_GLIBC = YES - HAVE_NASM = YES -endif - -ifeq ($(CFG),RH_SSE) - GTK = -DHAVE_GTK `gtk-config --cflags` - GTKLIBS = `gtk-config --libs` - CPP_OPTS += -DFLOAT8=float -DREAL_IS_FLOAT=1 -DHAVE_ICONV -DHAVE_XMMINTRIN_H -DMIN_ARCH_SSE -D_ALLOW_INTERNAL_OPTIONS -# these options for gcc-3.2 & AthlonXP - CC_OPTS = \ - -std=c99 -pipe -O3 -fstrict-aliasing \ - -Wall -W -Wmissing-declarations -Wfloat-equal -Wformat \ - -Wcast-qual -Wcast-align -Wdisabled-optimization -Wshadow \ - -Wunsafe-loop-optimizations \ - -march=k8 \ - -ffast-math \ - -mfpmath=sse -msse -msse2 \ - -malign-double \ - -funsafe-math-optimizations \ - -funsafe-loop-optimizations \ - -maccumulate-outgoing-args -# -Dpowf=pow -Dfabsf=fabs -Dlog10f=log10 -# -fsingle-precision-constant \ -# -Wconversion -Wunreachable-code \ -# -ftree-vectorizer-verbose=10 \ - - HAVE_NEWER_GLIBC = YES -# HAVE_NASM = YES - NASM_FLAGS = elf64 -endif - -ifeq ($(CFG),RH_INTEL) - CC=icc - GTK = -DHAVE_GTK `gtk-config --cflags` - GTKLIBS = `gtk-config --libs` - CPP_OPTS += -DFLOAT8=float -DREAL_IS_FLOAT=1 -DHAVE_ICONV -DHAVE_XMMINTRIN_H -DMIN_ARCH_SSE -D_ALLOW_INTERNAL_OPTIONS - - CC_OPTS = \ - -cxxlib-nostd \ - -O3 -fno-alias -ip -finline-limit=400 \ - -scalar-rep -# -vec_report5 -opt-report -# -parallel - -endif - -ifeq ($(CFG),PFK) - CPP_OPTS += -DKLEMM -DKLEMM_00 -DKLEMM_01 -DKLEMM_02 -DKLEMM_03 -DKLEMM_04 -DKLEMM_05 -DKLEMM_06 -DKLEMM_07 -DKLEMM_08 -DKLEMM_09 -DKLEMM_10 -DKLEMM_11 -DKLEMM_12 -DKLEMM_13 -DKLEMM_14 -DKLEMM_15 -DKLEMM_16 -DKLEMM_17 -DKLEMM_18 -DKLEMM_19 -DKLEMM_20 -DKLEMM_21 -DKLEMM_22 -DKLEMM_23 -DKLEMM_24 -DKLEMM_25 -DKLEMM_26 -DKLEMM_27 -DKLEMM_28 -DKLEMM_29 -DKLEMM_30 -DKLEMM_31 -DKLEMM_32 -DKLEMM_33 -DKLEMM_34 -DKLEMM_35 -DKLEMM_36 -DKLEMM_37 -DKLEMM_38 -DKLEMM_39 -DKLEMM_40 -DKLEMM_41 -DKLEMM_42 -DKLEMM_43 -DKLEMM_44 -DKLEMM_45 -DKLEMM_46 -DKLEMM_47 -DKLEMM_48 -DKLEMM_49 -DKLEMM_50 - CC_OPTS = \ - -Wall -O9 -fomit-frame-pointer -march=pentium \ - -finline-functions -fexpensive-optimizations \ - -funroll-loops -funroll-all-loops -pipe -fschedule-insns2 \ - -fstrength-reduce \ - -malign-double -mfancy-math-387 -ffast-math - - HAVE_NEWER_GLIBC = YES - HAVE_NASM = YES -endif - -########################################################################## -# LINUX on Digital/Compaq Alpha CPUs -########################################################################## -ifeq ($(ARCH),alpha) - -################################################################ -#### Check if 'ccc' is in our path -#### if not, use 'gcc' -################################################################ -ifeq ($(shell which ccc 2>/dev/null | grep -c ccc),0) - -# double is faster than float on Alpha -CC_OPTS = -O4 -pedantic -Wall -fomit-frame-pointer -ffast-math -funroll-loops \ - -mfp-regs -fschedule-insns -fschedule-insns2 \ - -finline-functions \ -# -DFLOAT=double -# add "-mcpu=21164a -Wa,-m21164a" to optimize for 21164a (ev56) CPU - -################################################################ -#### else, use 'ccc' -################################################################ -else - -# Compaq's C Compiler -CC = ccc - -################################################################ -#### set 'CC_OPTS = -arch host -tune host' to generate/tune instructions for this machine -#### 'CC_OPTS += -migrate -fast -inline speed -unroll 0' tweak to run as fast as possible :) -#### 'CC_OPTS += -w0 -pedantic -Wall' set warning and linking flags -################################################################ -CC_OPTS = -arch host -tune host -CC_OPTS += -migrate -fast -inline speed -unroll 0 -CC_OPTS += -w0 -pedantic -Wall - - -################################################################ -#### to debug, uncomment -################################################################ -# For Debugging -#CC_OPTS += -g3 - -################################################################ -#### define __DECALPHA__ (i was getting re-declaration warnings -#### in machine.h -################################################################ -# Define DEC Alpha -CPP_OPTS += -D__DECALPHA__ - -# standard Linux libm -#LIBS = -lm -# optimized libffm (free fast math library) -#LIBS = -lffm -# Compaq's fast math library -LIBS = -lcpml -endif # gcc or ccc? -endif # alpha -endif # linux - - - -########################################################################## -# FreeBSD -########################################################################## -ifeq ($(UNAME),FreeBSD) -# remove if you do not have GTK or do not want the GTK frame analyzer - GTK = -DHAVE_GTK `gtk12-config --cflags` - GTKLIBS = `gtk12-config --libs` -# Comment out next 2 lines if you want to remove VBR histogram capability - BRHIST_SWITCH = -DHAVE_TERMCAP -DHAVE_TERMCAP_H - LIBTERMCAP = -lncurses - -endif - - - -########################################################################## -# OpenBSD -########################################################################## -ifeq ($(UNAME),OpenBSD) -# remove if you do not have GTK or do not want the GTK frame analyzer - GTK = -DHAVE_GTK `gtk-config --cflags` - GTKLIBS = `gtk-config --libs` -# Comment out next 2 lines if you want to remove VBR histogram capability - BRHIST_SWITCH = -DHAVE_TERMCAP -DHAVE_TERMCAP_H - LIBTERMCAP = -lcurses -endif - - - - -########################################################################## -# SunOS -########################################################################## -ifeq ($(UNAME),SunOS) - CC = cc - CC_OPTS = -O -xCC - MAKEDEP = -xM -# for gcc, use instead: -# CC = gcc -# CC_OPTS = -O -# MAKEDEP = -M -endif - - - -########################################################################## -# SGI -########################################################################## -ifeq ($(UNAME),IRIX64) - CC = cc - CC_OPTS = -O3 -woff all - -#optonal: -# GTK = -DHAVE_GTK `gtk-config --cflags` -# GTKLIBS = `gtk-config --libs` -# BRHIST_SWITCH = -DBRHIST -DHAVE_TERMCAP -DHAVE_TERMCAP_H -# LIBTERMCAP = -lncurses - -endif -ifeq ($(UNAME),IRIX) - CC = cc - CC_OPTS = -O3 -woff all -endif - - - -########################################################################## -# Compaq Alpha running Dec Unix (OSF) -########################################################################## -ifeq ($(UNAME),OSF1) - CC = cc - CC_OPTS = -fast -O3 -std -g3 -non_shared -endif - -########################################################################## -# BeOS -########################################################################## -ifeq ($(UNAME),BeOS) - CC = $(BE_C_COMPILER) - LIBS = -ifeq ($(ARCH),BePC) - CC_OPTS = -O9 -fomit-frame-pointer -march=pentium \ - -mcpu=pentium -ffast-math -funroll-loops \ - -fprofile-arcs -fbranch-probabilities -else - CC_OPTS = -opt all - MAKEDEP = -make -endif -endif - -########################################################################### -# MOSXS (Rhapsody PPC) -########################################################################### -ifeq ($(UNAME),Rhapsody) - CC = cc - LIBS = - CC_OPTS = -O9 -ffast-math -funroll-loops -fomit-frame-pointer - MAKEDEP = -make - -endif -########################################################################## -# OS/2 -########################################################################## -# Properly installed EMX runtime & development package is a prerequisite. -# tools I used: make 3.76.1, uname 1.12, sed 2.05, PD-ksh 5.2.13 -# -########################################################################## -ifeq ($(UNAME),OS/2) - SHELL=sh - CC = gcc - CC_OPTS = -O3 -D__OS2__ - PGM = lame.exe - LIBS = - RANLIB = touch - -# I use the following for slightly better performance on my Pentium-II -# using pgcc-2.91.66: -# CC_OPTS = -O6 -ffast-math -funroll-loops -mpentiumpro -march=pentiumpro -D__OS2__ -# for the unfortunates with a regular pentium (using pgcc): -# CC_OPTS = -O6 -ffast-math -funroll-loops -mpentium -march=pentium -D__OS2__ - -# Comment out next 2 lines if you want to remove VBR histogram capability - BRHIST_SWITCH = -DHAVE_TERMCAP -DHAVE_{NCURSES_}TERMCAP_H - LIBTERMCAP = -lncurses - -# Uncomment & inspect the 2 GTK lines to use MP3x GTK frame analyzer. -# Properly installed XFree86/devlibs & GTK+ is a prerequisite. -# The following works for me using Xfree86/OS2 3.3.5 and GTK+ 1.2.3: -# GTK = -DHAVE_GTK -IC:/XFree86/include/gtk12 -Zmt -D__ST_MT_ERRNO__ -IC:/XFree86/include/glib12 -IC:/XFree86/include -# GTKLIBS = -LC:/XFree86/lib -Zmtd -Zsysv-signals -Zbin-files -lgtk12 -lgdk12 -lgmodule -lglib12 -lXext -lX11 -lshm -lbsd -lsocket -lm -endif - - - -########################################################################### -# MSDOS/Windows -########################################################################### -ifeq ($(UNAME),MSDOS) - RM = - CC_OPTS = \ - -Wall -pipe -O3 -fomit-frame-pointer -ffast-math -funroll-loops \ - -fschedule-insns2 -fmove-all-movables -freduce-all-givs \ - -mcpu=pentium -march=pentium -mfancy-math-387 - CC_OPTS += -D_cdecl=__cdecl - PGM = lame.exe -endif - - - -########################################################################### -# AmigaOS -########################################################################### -# Type 'Make ARCH=PPC' for PowerUP and 'Make ARCH=WOS' for WarpOS -# -########################################################################### -ifeq ($(UNAME),AmigaOS) - CC = gcc -noixemul - CC_OPTS = -O3 -ffast-math -funroll-loops -m68020-60 -m68881 - BRHIST_SWITCH = -DBRHIST - MAKEDEP = -MM - ifeq ($(ARCH),WOS) - CC = ppc-amigaos-gcc -warpup - CC_OPTS = -O3 -ffast-math -fomit-frame-pointer -funroll-loops \ - -mmultiple -mcpu=603e - AR = ppc-amigaos-ar - RANLIB = ppc-amigaos-ranlib - LIBS = - endif - ifeq ($(ARCH),PPC) - CC = ppc-amigaos-gcc - CC_OPTS = -O3 -ffast-math -fomit-frame-pointer -funroll-loops \ - -mmultiple -mcpu=603e - AR = ppc-amigaos-ar - RANLIB = ppc-amigaos-ranlib - LIBS = - endif -endif - - -# 10/99 added -D__NO_MATH_INLINES to fix a bug in *all* versions of -# gcc 2.8+ as of 10/99. - -ifeq ($(HAVE_NEWER_GLIBC),YES) -CC_SWITCHES = -else -CC_SWITCHES = -D__NO_MATH_INLINES # only needed by some older glibc -endif - -CC_SWITCHES += -DNDEBUG $(CC_OPTS) $(SNDLIB) $(BRHIST_SWITCH) -frontend_sources = \ - frontend/main.c \ - frontend/amiga_mpega.c \ - frontend/brhist.c \ - frontend/get_audio.c \ - frontend/lametime.c \ - frontend/parse.c \ - frontend/timestatus.c \ - frontend/console.c \ - -lib_sources = \ - libmp3lame/bitstream.c \ - libmp3lame/encoder.c \ - libmp3lame/fft.c \ - libmp3lame/gain_analysis.c \ - libmp3lame/id3tag.c \ - libmp3lame/lame.c \ - libmp3lame/newmdct.c \ - libmp3lame/psymodel.c \ - libmp3lame/quantize.c \ - libmp3lame/quantize_pvt.c \ - libmp3lame/set_get.c \ - libmp3lame/vbrquantize.c \ - libmp3lame/reservoir.c \ - libmp3lame/tables.c \ - libmp3lame/takehiro.c \ - libmp3lame/util.c \ - libmp3lame/mpglib_interface.c \ - libmp3lame/VbrTag.c \ - libmp3lame/version.c \ - libmp3lame/presets.c \ - libmp3lame/vector/xmm_quantize_sub.c \ - mpglib/common.c \ - mpglib/dct64_i386.c \ - mpglib/decode_i386.c \ - mpglib/layer1.c \ - mpglib/layer2.c \ - mpglib/layer3.c \ - mpglib/tabinit.c \ - mpglib/interface.c - - -#ifeq ($(UNAME),MSDOS) -# frontend_sources := $(subst /,\,$(frontend_sources)) -# lib_sources := $(subst /,\,$(lib_sources)) -#endif - -frontend_obj = $(frontend_sources:.c=.o) -lib_obj = $(lib_sources:.c=.o) - -DEP = $(frontend_sources:.c=.d) $(lib_sources:.c=.d ) - -gtk_sources = frontend/gtkanal.c frontend/gpkplotting.c frontend/mp3x.c -gtk_obj = $(gtk_sources:.c=.gtk.o) -gtk_dep = $(gtk_sources:.c=.d) - - - -NASM = nasm -ASFLAGS=-f $(NASM_FLAGS) -i libmp3lame/i386/ - -# for people with nasmw -ifeq ($(UNAME),MSDOS) - NASM = nasmw - ASFLAGS=-f win32 -DWIN32 -i libmp3lame/i386/ -endif - -%.o: %.nas - $(NASM) $(ASFLAGS) $< -o $@ -%.o: %.s - gcc -c $< -o $@ - - -#HAVE_NASM = YES - -ifeq ($(HAVE_NASM),YES) -## have NASM -CC_SWITCHES += -DHAVE_NASM -lib_obj += libmp3lame/i386/cpu_feat.o - -## use MMX extension. you need nasm and MMX supported CPU. -CC_SWITCHES += -DMMX_choose_table -lib_obj += libmp3lame/i386/choose_table.o - -## use 3DNow! extension. you need nasm and 3DNow! supported CPU. -lib_obj += libmp3lame/i386/fft3dn.o - -## use SSE extension. you need nasm and SSE supported CPU. -lib_obj += libmp3lame/i386/fftsse.o - -## not yet coded -#CC_SWITCHES += -DUSE_FFTFPU -#lib_obj += libmp3lame/i386/fftfpu.o -endif - - - -# -# Makefile rules---you probably won't have to modify below this line -# -%.o: %.c - $(CC) $(CPP_OPTS) $(CC_SWITCHES) -c $< -o $@ - -%.d: %.c - ifeq ($(NOUNIXCMD),YES) - $(CC) $(MAKEDEP) $(CPP_OPTS) $(CC_SWITCHES) $< > $@ - else - $(SHELL) -ec '$(CC) $(MAKEDEP) $(CPP_OPTS) $(CC_SWITCHES) $< | sed '\''s;$*.o;& $@;g'\'' > $@' - endif - -%.gtk.o: %.c - $(CC) $(CPP_OPTS) $(CC_SWITCHES) $(GTK) -c $< -o $@ - -all: frontend/$(PGM) - - -$(lib_sources) $(frontend_sources) $(gtk_sources) : config.h - -config.h: configMS.h - ifeq ($(NOUNIXCMD),YES) - copy configMS.h config.h - else - cp configMS.h config.h - endif - -frontend/$(PGM): frontend/lame_main.o $(frontend_obj) $(MP3LIB) - $(CC) $(CC_OPTS) -o frontend/$(PGM) frontend/lame_main.o $(frontend_obj) \ - $(MP3LIB) $(LIBS) $(LIBSNDFILE) $(LIBTERMCAP) - -mp3x: $(frontend_obj) $(gtk_obj) $(MP3LIB) - $(CC) $(CC_OPTS) -o frontend/mp3x $(frontend_obj) $(gtk_obj) \ - $(MP3LIB) $(LIBS) $(LIBSNDFILE) $(LIBTERMCAP) $(GTKLIBS) - -mp3rtp: frontend/rtp.o frontend/mp3rtp.o $(frontend_obj) $(MP3LIB) - $(CC) $(CC_OPTS) -o frontend/mp3rtp frontend/mp3rtp.o frontend/rtp.o $(frontend_obj) $(MP3LIB) \ - $(LIBS) $(LIBSNDFILE) $(LIBTERMCAP) - -libmp3lame/libmp3lame.a: $(lib_obj) - echo $(lib_obj) - $(AR) cr libmp3lame/libmp3lame.a $(lib_obj) - $(RANLIB) libmp3lame/libmp3lame.a - -#shared library. GNU specific? -libmp3lame/libmp3lame.so: $(lib_obj) - gcc -shared -Wl,-soname,libmp3lame/libmp3lame.so -o libmp3lame/libmp3lame.so $(lib_obj) - -install: frontend/$(PGM) #libmp3lame.a - cp frontend/$(PGM) /usr/bin - #cp libmp3lame.a /usr/lib - #cp lame.h /usr/lib - -clean: - ifeq ($(UNAME),MSDOS) - -del $(subst /,\,$(frontend_obj)) - -del $(subst /,\,$(lib_obj)) - -del $(subst /,\,$(gtk_obj)) - -del $(subst /,\,$(DEP)) - -del frontend\$(PGM) - -del frontend\main.o - -del libmp3lame\libmp3lame.a - else - -$(RM) $(gtk_obj) $(frontend_obj) $(lib_obj) $(DEP) frontend/$(PGM) \ - frontend/main.o frontend/lame libmp3lame/libmp3lame.a \ - frontend/mp3x.o frontend/mp3x - endif - - -tags: TAGS - -TAGS: ${c_sources} - etags -T ${c_sources} - -ifneq ($(MAKECMDGOALS),clean) - -include $(DEP) -endif - - -# -# testcase.mp3 is a 2926 byte file. The first number output by -# wc is the number of bytes which differ between new output -# and 'official' results. -# -# Because of compiler options and effects of roundoff, the -# number of bytes which are different may not be zero, but -# should be at most 30. -# -test: frontend/$(PGM) - frontend/$(PGM) --nores testcase.wav testcase.new.mp3 - cmp -l testcase.new.mp3 testcase.mp3 | wc -l diff --git a/platform/win32/msvc/external/lame/README b/platform/win32/msvc/external/lame/README deleted file mode 100644 index bd3ea8fb24f..00000000000 --- a/platform/win32/msvc/external/lame/README +++ /dev/null @@ -1,44 +0,0 @@ - LAME 3.xx - LAME Ain't an MP3 Encoder - http://lame.sf.net - May 2011 - -Originally developed by Mike Cheng (www.uq.net.au/~zzmcheng) and was -latter developed by Mark Taylor (www.mp3dev.org). Currently maintained -by The LAME Project. - -This code is distributed under the GNU LIBRARY GENERAL PUBLIC LICENSE -(LGPL, see www.gnu.org), version 2. - -As LAME may contain software for which some companies may claim software -patents, if you are in a location where software patents are recognized, it is -suggested that you seek legal advice before deploying and/or redistributing -LAME. - -In particular, it is suggested to visit - - http://www.mp3licensing.com/ - -if it applies to your jurisdiction. - -============================================================================ - -see the file "INSTALL" for installation (compiling) instructions. -see the file "USAGE" for the most up-to-date guide to the command line options. -see the file "LICENSE" for details on how to use LAME in non-GPL programs. -see the file "HACKING" if you are interested in working on LAME -see the file "API" for details of the LAME encoding library API - -There is HTML documentation and a man page in the doc directory. - -============================================================================ - -LAME uses the MPGLIB decoding engine, from the MPG123 package, written -by: Michael Hipp (www.mpg123.de) MPGLIB is released under the GPL. - -Copyrights (c) 1999-2011 by The LAME Project -Copyrights (c) 1999,2000,2001 by Mark Taylor -Copyrights (c) 1998 by Michael Cheng -Copyrights (c) 1995,1996,1997 by Michael Hipp: mpglib - -As well as additional copyrights as documented in the source code. diff --git a/platform/win32/msvc/external/lame/README.WINGTK b/platform/win32/msvc/external/lame/README.WINGTK deleted file mode 100644 index 1ec1cc77df9..00000000000 --- a/platform/win32/msvc/external/lame/README.WINGTK +++ /dev/null @@ -1,67 +0,0 @@ - Installation notes on MP3X (the LAME frame analyzer) for WIN32 - -=========================================================================== -Document History: -=========================================================================== - -Initial version by Albert Faber, March 30, 2000 - -Update by Albert Faber (Sept 07 2000), changed instructions -to compile with latest glib/gtk libraries. - -Update by Albert Faber (Sept 07 2000), changed instructions -to compile with latest glib/gtk libraries. - -Update by Albert Faber (Oct 20 2000), small adaptions to be conform -the new lame directory structure. - -Update by Gabriel Bouvigne (Jan 07 2004), changes to be conform to the -VC6 worspace structure. - -Update by Gabriel Bouvigne (Nov 11 2006), changes to be conform to the -VC8 worspace structure. Tested with gtk+-dev-1.3.0-20030115 and glib-dev-2.12.4 - - -=========================================================================== -How to compile the MP3 frame analyzer (MP3x): -=========================================================================== - -You first need to get hold of the latest GTK and GLIB include files and lib -files. You can download them freely from the WINGTK project WEB site. -(see http://www.gtk.org, and click on the WINGTK link.) - -Download: glib-dev-VERSION.zip, gtk+-dev-VERSION.zip and extralibs-dev-VERSION.zip -where VERSION indicates the release data, so it will look something like 20000805 - -unzip all three zip files in a WinGTK subdirectory, which is created from the lame -analyzer directory (for example, D:\CVS\lame\WinGtk) - -You will end up with the following directory tree - D:\CVS\lame\analyzer\WinGtk\src\glib - D:\CVS\lame\analyzer\WinGtk\src\gtk+\glib - D:\CVS\lame\analyzer\WinGtk\src\gtk+ - -Set Mp3x as your current active project, recompile everything, and you're done. - - -=========================================================================== -How to run and use the MP3 Frame analyzer -=========================================================================== - -To run MP3x.exe, you need -the GTK DLL files: Either instal them on your system, -or put them in the same directory as mp3x.exe resides. - - - -Example: -mp3x.exe myfile - -myfile can be a mp3 file, or a wav file. - - - - === End of Document === - - - diff --git a/platform/win32/msvc/external/lame/STYLEGUIDE b/platform/win32/msvc/external/lame/STYLEGUIDE deleted file mode 100644 index e955dc55533..00000000000 --- a/platform/win32/msvc/external/lame/STYLEGUIDE +++ /dev/null @@ -1,187 +0,0 @@ -* The LAME API is frozen. Poorly designed as it is, don't change it, - and add to it sparingly. - -* Don't take it upon yourself to go through LAME with the sole purpose - of updating everything to match this guide. Especially important: - don't change the spacing, indentation, curly braces, etc, - in routines you did not write. - -* If you want to make a change which effects many many functions, - please check with the maintainer first. - -* Respect the indentation of the author of the original function. - If the indentation is not consistent, use 4. - -* Don't use tabulators (the character with the value '\t') in source code, - especially these with a width of unequal 8. Lame sources are using - different sizes for tabulators. - -* Don't set the macro NDEBUG in alpha versons. - NDEBUG should be set for beta versions. - -* check important assumptions with an assert() - -* use int for all integer quantities. - LAME requires 32 bit ints, so you can assume int is at least 32 bits. - Don't use 'long'. Don't use 'unsigned' unless ABSOLUTELY necessary. - Don't use 'char' just to save bytes. If 64 bits is required, use int64. - - Annnotation: - ISO C calls the 64 bit int type not int64 but int64_t. - -* Avoid using float or double, and instead use: (defined in machine.h). - - FLOAT for variables which require at least 32bits - FLOAT8 for variables which require at least 64bits - - On some machines, 64bit will be faster than 32bit. Also, some math - routines require 64bit float, so setting FLOAT=float will result in a - lot of conversions. - - Annotation (pfk): - The new ISO C standard passed in autumn 1999 has defined new types for - exactly this reason. There are called float_least32_t and float_least64_t - and have at least the advantage that you not need to explain their - meaning. - - Annotation (mt): - we will adopt this convention in Jan 1, 2003. - - -* The internal representation of PCM samples in type 'sample_t', - currently this is a FLOAT. - -* Use SI base units. Lame mixes Hz, kHz, kbps, bps. This is mess. - - Example: - float wavelength_green = 555.e-9; - unsigned data_rate = 128000; - float lowpass_freq = 12500.; - - Converting between user input and internal representation should be done - near the user interface, not in the most inner loop of an utility - function. - ----------------------------------------------------------------------------------- -Edited version of the Linux Kernel Style Guide: ----------------------------------------------------------------------------------- - - Chapter 1: Indentation - -Respect the indentation of the author of the original function. -If the indentation is not consistent, don't change it. If -you are so anal-retentive about these things and you can't -bare to even look at code with poor indentation, change it to 4. - - - Chapter 2: Placing Braces - -The other issue that always comes up in C styling is the placement of -braces. Unlike the indent size, there are few technical reasons to -choose one placement strategy over the other, but the preferred way, as -shown to us by the prophets Kernighan and Ritchie, is to put the opening -brace last on the line, and put the closing brace first, thusly: - - if (x is true) { - we do y - } - -However, there is one special case, namely functions: they have the -opening brace at the beginning of the next line, thus: - - int function(int x) - { - body of function - } - -Heretic people all over the world have claimed that this inconsistency -is ... well ... inconsistent, but all right-thinking people know that -(a) K&R are _right_ and (b) K&R are right. Besides, functions are -special anyway (you can't nest them in C). - -Note that the closing brace is empty on a line of its own, _except_ in -the cases where it is followed by a continuation of the same statement, -ie a "while" in a do-statement or an "else" in an if-statement, like -this: - - do { - body of do-loop - } while (condition); - -and - - if (x == y) { - .. - } else if (x > y) { - ... - } else { - .... - } - -Rationale: K&R. - -Also, note that this brace-placement also minimizes the number of empty -(or almost empty) lines, without any loss of readability. Thus, as the -supply of new-lines on your screen is not a renewable resource (think -25-line terminal screens here), you have more empty lines to put -comments on. - - - Chapter 3: Naming - -C is a Spartan language, and so should your naming be. Unlike Modula-2 -and Pascal programmers, C programmers do not use cute names like -ThisVariableIsATemporaryCounter. A C programmer would call that -variable "tmp", which is much easier to write, and not the least more -difficult to understand. - -HOWEVER, while mixed-case names are frowned upon, descriptive names for -global variables are a must. To call a global function "foo" is a -shooting offense. - -GLOBAL variables (to be used only if you _really_ need them) need to -have descriptive names, as do global functions. If you have a function -that counts the number of active users, you should call that -"count_active_users()" or similar, you should _not_ call it "cntusr()". - -Encoding the type of a function into the name (so-called Hungarian -notation) is brain damaged - the compiler knows the types anyway and can -check those, and it only confuses the programmer. No wonder MicroSoft -makes buggy programs. - -LOCAL variable names should be short, and to the point. If you have -some random integer loop counter, it should probably be called "i". -Calling it "loop_counter" is non-productive, if there is no chance of it -being mis-understood. Similarly, "tmp" can be just about any type of -variable that is used to hold a temporary value. - - - - Chapter 4: Functions - -Document functions. - -Keep functions as modular as possible. But don't adhere to artificial -line number limitations. For example, lame_encode_frame() encodes a -single MP3 frame and is a long sequence of function calls. It makes -no sense to break this into two or more routines. - - - - Chapter 5: Commenting - -Comments are good, but there is also a danger of over-commenting. NEVER -try to explain HOW your code works in a comment: it's much better to -write the code so that the _working_ is obvious, and it's a waste of -time to explain badly written code. - -Generally, you want your comments to tell WHAT your code does, not HOW. -Also, try to avoid putting comments inside a function body: if the -function is so complex that you need to separately comment parts of it, -you should probably go back to chapter 4 for a while. You can make -small comments to note or warn about something particularly clever (or -ugly), but try to avoid excess. Instead, put the comments at the head -of the function, telling people what it does, and possibly WHY it does -it. - - diff --git a/platform/win32/msvc/external/lame/TODO b/platform/win32/msvc/external/lame/TODO deleted file mode 100644 index 33d95751e9c..00000000000 --- a/platform/win32/msvc/external/lame/TODO +++ /dev/null @@ -1,162 +0,0 @@ -1. bug in resample code: downsampling from 44101 to 44100 causes - a seg fault. Workaround in place for now: resampling disabled - if input/output samplerates agree to 4 digits. - - - -2. high bitrate encodings have trouble on some hardware players. -Track this down. Probably caused by --strictly-enforce-ISO and -IXMAX_VAL. Try setting IXMAX_VAL back to 8191 and/or -maxmp3buf=8*960 to see if there is a working combination. - -note: one of the decoder bugs was identified. It is caused by using -different block sizes on both channels. A parameter need to be -added to Lame to handle workarounds. - - -3 frontend: code is a complete mess. But it has so many debugged - features it will be a lot of work to re-write. - - -4. MSVC project files. It would be nice to create a working - MSVC6 workspace, which included all the projects as possible - targets: - lame.exe - mp3x.exe (require GTK libs) - lame_enc.dll - ACM codec - directshow codec - - I think the only MSVC5 project that we need to preserve is - for lame_enc.dll, since Albert Faber (still?) doesn't use VC6? - But no reason we cant have VC5 and VC6 project files for the dll. - - - - - - -5. -NOGAP encoding: - --nogap: more testing, fix options, test id3 tags? -Can we change id3 tags without reseting the encoder?? -At the end of encoding 1.wav, call lame_get_mf_samples_to_encode() -to find the number of non encoded buffered PCM samples. Then -encode samples from 2.wav until these PCM samples have been -encoded, *THEN* call lame_encode_flush_nogap() and close -out file 1.mp3. - - -NOGAP decoding: -lame --decode --nogap file1.mp3 file2.mp3 file3.mp3 -should also work. What needs to be done: -get_audio.c: We need a way to open a second mp3 file, without - calling lame_decode_init() and reinitializing mpglib. - And the mpglib needs to know to look for new Xing - tags at the beginning of file2.mp3 and file3.mp3. - - - -6. -Does stdin work when LAME is compiled to use libsndfile? -(new version of libsndfile will support this - try this out) - - -7. -LAME has problems with pure DC input. i.e. a square wave with -a frequency well below 20 Hz. Not very important, but it should -be fixed. - - -8. -mgplib has bugs with i-stereo. flag denoting invalid -i-stereo value (= frame is m/s stereo) is not correct. - -9. -lowpass filter: for M/S stereo, use more filtering for the side -channel, less filtering for mid channel. We need to first replace -the polyphase filter with an FIR lowpass filter with finer frequency -resolution before implementing this. - -10. -LAME has a 31 point FIR filter used for resampling, which -can also be used as a lowpass. When resampling is done, -use that filter to also lowpass instead of the polyphase filter. - -11. -Even when resampling is not needed, should we use an FIR filter -for the lowpass? If it is not too much slower, yes. If it -is slower, then it should be an option since it will produce -higher quality. - -12. -We should consider moving the experts options from the *long -help* text into an *experts only* help text. The average Joe gets -knocked down by the huge number of possibilities to setup lame. - - - - -50. -Better tonality estimation. -Gpsycho uses predictability, and so needs a delay to detect the tonality -of a sound. -Nspsytune seems to miss tonals when several of them are too narrow. -We would probably need the best of both. - - - - -60. -Different ATH handling for sfb21. We are using the minimum value of ath -in each whole sfb. in sfb21 this leads to very high bitrates. -We could perhaps use 2 or 3 ath partitions in sfb21 - -note: partially done - - - -70. -Use mixed blocks. - - - - -90. -Use intensity stereo. This is a must-have for low bitrates, but if the -algorythm is very good it could also be used in every case. -Note: mpg123 (and all derivatives, like xmms and lame/mpglib) -have bugs in the intensity stereo decoding. Bugs have been there -for years since there are very few intensity stereo mp3's out there. - - - - - -998. -Merge GOGO's fast assembler routines. - - - - -999. -It would be nice to save some information whilst encoding -a: wave -> mp3 - a RIFF/wave can contain LIST chunks with information - about author, title, etc. - ==> could go into TAG fields of resulting mp3 -b: mp3 -> mp3 - ==> we could copy the TAG directly -c: mp3 -> wave - ==> copy TAG into LIST chunk - - - -1500. -Integrate plusV extensions - - - -2000. -To be able to encode as fast as FastEnc \ No newline at end of file diff --git a/platform/win32/msvc/external/lame/USAGE b/platform/win32/msvc/external/lame/USAGE deleted file mode 100644 index 4c1bf32a6b7..00000000000 --- a/platform/win32/msvc/external/lame/USAGE +++ /dev/null @@ -1,779 +0,0 @@ - -% lame [options] inputfile [outputfile] - -For more options, just type: -% lame --help - - -======================================================================= -Constant Bitrate Examples: -======================================================================= -fixed bit rate jstereo 128 kbps encoding: -% lame sample.wav sample.mp3 - -fixed bit rate jstereo 128 kbps encoding, higher quality: (recommended) -% lame -h sample.wav sample.mp3 - -Fast encode, low quality (no noise shaping) -% lame -f sample.wav sample.mp3 - -======================================================================= -Variable Bitrate Examples: -======================================================================= -LAME has two types of variable bitrate: ABR and VBR. - -ABR is the type of variable bitrate encoding usually found in other -MP3 encoders, Vorbis and AAC. The number of bits is determined by -some metric (like perceptual entropy, or just the number of bits -needed for a certain set of encoding tables), and it is not based on -computing the actual encoding/quantization error. ABR should always -give results equal or better than CBR: - -ABR: (--abr means encode with an average bitrate of around x kbps) -lame -h --abr 128 sample.wav sample.mp3 - - -VBR is a true variable bitrate mode which bases the number of bits for -each frame on the measured quantization error relative to the -estimated allowed masking. There are 10 compression levels defined, -ranging from 0=lowest compression to 9 highest compression. The resulting -filesizes depend on the input material. On typical music you can expect --V5 resulting in files averaging 132 kbps, -V2 averaging 200 kbps. - -Variable Bitrate (VBR): (use -V n to adjust quality/filesize) -% lame -V2 sample.wav sample.mp3 - - - -======================================================================= -LOW BITRATES -======================================================================= -At lower bitrates, (like 24 kbps per channel), it is recommended that -you use a 16 kHz sampling rate combined with lowpass filtering. LAME, -as well as commercial encoders (FhG, Xing) will do this automatically. -However, if you feel there is too much (or not enough) lowpass -filtering, you may need to try different values of the lowpass cutoff -and passband width (--resample, --lowpass and --lowpass-width options). - - -======================================================================= -STREAMING EXAMPLES -======================================================================= - -% cat inputfile | lame [options] - - > output - - - - -======================================================================= -Scripts are included (in the 'misc' subdirectory) -to run lame on multiple files: - -bach script: mlame Run "mlame -?" for instructions. -sh script: auenc Run auenc for instructions -sh script: mugeco.sh - -Pearl script which will re-encode mp3 files and preserve id3 tags: -lameid3.pl - -Windows scripts: -lame4dos.bat -Lame.vbs (and an HTML frontend: LameGUI.html) - - -======================================================================= -options guide: -======================================================================= -These options are explained in detail below. - - -Quality related: - --m m/s/j/f/a mode selection --q n Internal algorithm quality setting 0..9. - 0 = slowest algorithms, but potentially highest quality - 9 = faster algorithms, very poor quality --h same as -q2 --f same as -q7 - - -Constant Bit Rate (CBR) --b n set bitrate (8, 16, 24, ..., 320) ---freeformat produce a free format bitstream. User must also specify - a bitrate with -b, between 8 and 640 kbps. - -Variable Bit Rate (VBR) --v VBR ---vbr-old use old variable bitrate (VBR) routine ---vbr-new use new variable bitrate (VBR) routine (default) --V n VBR quality setting (0=highest quality, 9=lowest) --b n specify a minimum allowed bitrate (8,16,24,...,320) --B n specify a maximum allowed bitrate (8,16,24,...,320) --F strictly enforce minimum bitrate --t disable VBR informational tag ---nohist disable display of VBR bitrate histogram - ---abr n specify average bitrate desired - - -Operational: - --r assume input file is raw PCM --s n input sampling frequency in kHz (for raw PCM input files) ---resample n output sampling frequency ---mp3input input file is an MP3 file. decode using mpglib/mpg123 ---ogginput input file is an Ogg Vorbis file. decode using libvorbis --x swap bytes of input file ---scale multiply PCM input by ---scale-l scale channel 0 (left) input (multiply PCM data) by ---scale-r scale channel 1 (right) input (multiply PCM data) by --a downmix stereo input file to mono .mp3 --e n/5/c de-emphasis --p add CRC error protection --c mark the encoded file as copyrighted --o mark the encoded file as a copy --S don't print progress report, VBR histogram ---strictly-enforce-ISO comply as much as possible to ISO MPEG spec ---replaygain-fast compute RG fast but slightly inaccurately (default) ---replaygain-accurate compute RG more accurately and find the peak sample ---noreplaygain disable ReplayGain analysis ---clipdetect enable --replaygain-accurate and print a message whether - clipping occurs and how far the waveform is from full scale - ---decode assume input file is an mp3 file, and decode to wav. --t disable writing of WAV header when using --decode - (decode to raw pcm, native endian format (use -x to swap)) - - - -ID3 tagging: - ---tt audio/song title (max 30 chars for version 1 tag) ---ta <artist> audio/song artist (max 30 chars for version 1 tag) ---tl <album> audio/song album (max 30 chars for version 1 tag) ---ty <year> audio/song year of issue (1 to 9999) ---tc <comment> user-defined text (max 30 chars for v1 tag, 28 for v1.1) ---tn <track> audio/song track number (1 to 255, creates v1.1 tag) ---tg <genre> audio/song genre (name or number in list) ---add-id3v2 force addition of version 2 tag ---id3v1-only add only a version 1 tag ---id3v2-only add only a version 2 tag ---space-id3v1 pad version 1 tag with spaces instead of nulls ---pad-id3v2 same as '--pad-id3v2-size 128' ---pad-id3v2-size <num> adds version 2 tag, pad with extra <num> bytes ---genre-list print alphabetically sorted ID3 genre list and exit - -Note: A version 2 tag will NOT be added unless one of the input fields -won't fit in a version 1 tag (e.g. the title string is longer than 30 -characters), or the '--add-id3v2' or '--id3v2-only' options are used, -or output is redirected to stdout. - -Windows and OS/2-specific options: - --priority <type> sets the process priority - - -options not yet described: ---nores disable bit reservoir ---disptime - ---lowpass ---lowpass-width ---highpass ---highpass-width - - - - - -======================================================================= -Detailed description of all options in alphabetical order -======================================================================= - - -======================================================================= -downmix -======================================================================= --a - -mix the stereo input file to mono and encode as mono. - -This option is only needed in the case of raw PCM stereo input -(because LAME cannot determine the number of channels in the input file). -To encode a stereo PCM input file as mono, use "lame -m s -a" - -For WAV and AIFF input files, using "-m m" will always produce a -mono .mp3 file from both mono and stereo input. - - -======================================================================= -average bitrate encoding (aka Safe VBR) -======================================================================= ---abr n - -turns on encoding with a targeted average bitrate of n kbps, allowing -to use frames of different sizes. The allowed range of n is 8...320 -kbps, you can use any integer value within that range. - - - - - -======================================================================= -bitrate -======================================================================= --b n - -For MPEG-1 (sampling frequencies of 32, 44.1 and 48 kHz) -n = 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 - -For MPEG-2 (sampling frequencies of 16, 22.05 and 24 kHz) -n = 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160 - -For MPEG-2.5 (sampling frequencies of 8, 11.025 and 12 kHz) -n = 8, 16, 24, 32, 40, 48, 56, 64 - - -The bitrate to be used. Default is 128 kbps MPEG1, 80 kbps MPEG2. - -When used with variable bitrate encodings (VBR), -b specifies the -minimum bitrate to use. This is useful only if you need to circumvent -a buggy hardware device with strange bitrate constrains. - - -======================================================================= -max bitrate -======================================================================= --B n - -see also option "-b" for allowed bitrates. - -Maximum allowed bitrate when using VBR/ABR. - -Using -B is NOT RECOMMENDED. A 128 kbps CBR bitstream, because of the -bit reservoir, can actually have frames which use as many bits as a -320 kbps frame. ABR/VBR modes minimize the use of the bit reservoir, and -thus need to allow 320 kbps frames to get the same flexability as CBR -streams. This is useful only if you need to circumvent a buggy hardware -device with strange bitrate constrains. - - - - -======================================================================= -copyright -======================================================================= --c - -mark the encoded file as copyrighted - - - -======================================================================= -clipping detection -======================================================================= ---clipdetect - -Enable --replaygain-accurate and print a message whether clipping -occurs and how far in dB the waveform is from full scale. - -This option is not usable if the MP3 decoder was _explicitly_ disabled -in the build of LAME. - -See also: --replaygain-accurate - - - -======================================================================= -mpglib decode capability -======================================================================= ---decode - -This just uses LAME's mpg123/mpglib interface to decode an MP3 file to -a wav file. The input file can be any input type supported by -encoding, including .mp3 (layers 1, 2 and 3) and .ogg. - -If -t is used (disable wav header), LAME will output -raw pcm in native endian format (use -x to swap bytes). - -This option is not usable if the MP3 decoder was _explicitly_ disabled -in the build of LAME. - - -======================================================================= -de-emphasis -======================================================================= --e n/5/c - - n = (none, default) - 5 = 0/15 microseconds - c = citt j.17 - -All this does is set a flag in the bitstream. If you have a PCM -input file where one of the above types of (obsolete) emphasis has -been applied, you can set this flag in LAME. Then the mp3 decoder -should de-emphasize the output during playback, although most -decoders ignore this flag. - -A better solution would be to apply the de-emphasis with a standalone -utility before encoding, and then encode without -e. - - - -======================================================================= -fast mode -======================================================================= --f - -Same as -q 7. - -NOT RECOMMENDED. Use when encoding speed is critical and encoding -quality does not matter. Disable noise shaping. Psycho acoustics are -used only for bit allocation and pre-echo detection. - -======================================================================= -strictly enforce VBR minimum bitrate -======================================================================= --F - -strictly enforce VBR minimum bitrate. With out this optioni, the minimum -bitrate will be ignored for passages of analog silence. - - - -======================================================================= -free format bitstreams -======================================================================= ---freeformat - -LAME will produce a fixed bitrate, free format bitstream. -User must specify the desired bitrate in kbps, which can -be any integer between 8 and 640. - -Not supported by most decoders. Complient decoders (of which there -are few) are only required to support up to 320 kbps. - -Decoders which can handle free format: - - supports up to -MAD 640 kbps -"lame --decode" 550 kbps -Freeamp: 440 kbps -l3dec: 310 kbps - - - - - -======================================================================= -high quality -======================================================================= --h - -use some quality improvements. The same as -q 2. - - - -======================================================================= -Modes: -======================================================================= - --m m mono --m s stereo --m j joint stereo --m f forced mid/side stereo --m d dual (independent) channels --m i intensity stereo --m a auto - -MONO is the default mode for mono input files. If "-m m" is specified -for a stereo input file, the two channels will be averaged into a mono -signal. - -STEREO - -JOINT STEREO is the default mode for stereo files with fixed bitrates of -128 kbps or less. At higher fixed bitrates, the default is stereo. -For VBR encoding, jstereo is the default for VBR_q >4, and stereo -is the default for VBR_q <=4. You can override all of these defaults -by specifing the mode on the command line. - -jstereo means the encoder can use (on a frame by frame bases) either -regular stereo (just encode left and right channels independently) -or mid/side stereo. In mid/side stereo, the mid (L+R) and side (L-R) -channels are encoded, and more bits are allocated to the mid channel -than the side channel. This will effectively increase the bandwidth -if the signal does not have too much stereo separation. - -Mid/side stereo is basically a trick to increase bandwidth. At 128 kbps, -it is clearly worth while. At higher bitrates it is less useful. - -For truly mono content, use -m m, which will automatically down -sample your input file to mono. This will produce 30% better results -over -m j. - -Using mid/side stereo inappropriately can result in audible -compression artifacts. To much switching between mid/side and regular -stereo can also sound bad. To determine when to switch to mid/side -stereo, LAME uses a much more sophisticated algorithm than that -described in the ISO documentation. - -FORCED MID/SIDE STEREO forces all frames to be encoded mid/side stereo. It -should only be used if you are sure every frame of the input file -has very little stereo seperation. - -DUAL CHANNELS Not supported. - -INTENSITY STEREO - -AUTO - -Auto select should select (if input is stereo) - 8 kbps Mono - 16- 96 kbps Intensity Stereo (if available, otherwise Joint Stereo) - 112-128 kbps Joint Stereo -mj - 160-192 kbps -mj with variable mid/side threshold - 224-320 kbps Independent Stereo -ms - - - -======================================================================= -MP3 input file -======================================================================= ---mp3input - -Assume the input file is a MP3 file. LAME will decode the input file -before re-encoding it. Since MP3 is a lossy format, this is -not recommended in general. But it is useful for creating low bitrate -mp3s from high bitrate mp3s. If the filename ends in ".mp3" LAME will assume -it is an MP3. For stdin or MP3 files which dont end in .mp3 you need -to use this switch. - - -======================================================================= -disable historgram display -======================================================================= ---nohist - -By default, LAME will display a bitrate histogram while producing -VBR mp3 files. This will disable that feature. - - -======================================================================= -disable ReplayGain analysis -======================================================================= ---noreplaygain - -By default ReplayGain analysis is enabled. This switch disables it. - -See also: --replaygain-accurate, --replaygain-fast - - -======================================================================= -non-original -======================================================================= --o - -mark the encoded file as a copy - - - -======================================================================= -CRC error protection -======================================================================= --p - -turn on CRC error protection. -Yes this really does work correctly in LAME. However, it takes -16 bits per frame that would otherwise be used for encoding. - - -======================================================================= -algorithm quality selection -======================================================================= --q n - -Bitrate is of course the main influence on quality. The higher the -bitrate, the higher the quality. But for a given bitrate, -we have a choice of algorithms to determine the best -scalefactors and huffman encoding (noise shaping). - --q 0: use slowest & best possible version of all algorithms. - --q 2: recommended. Same as -h. -q 0 and -q 1 are slow and may not produce - significantly higher quality. - --q 5: default value. Good speed, reasonable quality - --q 7: same as -f. Very fast, ok quality. (psycho acoustics are - used for pre-echo & M/S, but no noise shaping is done. - --q 9: disables almost all algorithms including psy-model. poor quality. - - - -======================================================================= -input file is raw pcm -======================================================================= --r - -Assume the input file is raw pcm. Sampling rate and mono/stereo/jstereo -must be specified on the command line. Without -r, LAME will perform -several fseek()'s on the input file looking for WAV and AIFF headers. - -Not supported if LAME is compiled to use LIBSNDFILE. - - - -======================================================================= -slightly more accurate ReplayGain analysis and finding the peak sample -======================================================================= ---replaygain-accurate - -Enable decoding on the fly. Compute "Radio" ReplayGain on the decoded -data stream. Find the peak sample of the decoded data stream and store -it in the file. - - -ReplayGain analysis does _not_ affect the content of a compressed data -stream itself, it is a value stored in the header of a sound file. -Information on the purpose of ReplayGain and the algorithms used is -available from http://www.replaygain.org/ - -By default, LAME performs ReplayGain analysis on the input data (after -the user-specified volume scaling). This behaviour might give slightly -inaccurate results because the data on the output of a lossy -compression/decompression sequence differs from the initial input data. -When --replaygain-accurate is specified the mp3 stream gets decoded on -the fly and the analysis is performed on the decoded data stream. -Although theoretically this method gives more accurate results, it has -several disadvantages: - * tests have shown that the difference between the ReplayGain values - computed on the input data and decoded data is usually no greater - than 0.5dB, although the minimum volume difference the human ear - can perceive is about 1.0dB - * decoding on the fly significantly slows down the encoding process -The apparent advantage is that: - * with --replaygain-accurate the peak sample is determined and - stored in the file. The knowledge of the peak sample can be useful - to decoders (players) to prevent a negative effect called 'clipping' - that introduces distortion into sound. - - -Only the "Radio" ReplayGain value is computed. It is stored in the LAME tag. -The analysis is performed with the reference volume equal to 89dB. -Note: the reference volume has been changed from 83dB on transition -from version 3.95 to 3.95.1. - -This option is not usable if the MP3 decoder was _explicitly_ disabled -in the build of LAME. (Note: if LAME is compiled without the MP3 decoder, -ReplayGain analysis is performed on the input data after user-specified -volume scaling). - -See also: --replaygain-fast, --noreplaygain, --clipdetect - - -======================================================================= -fast ReplayGain analysis -======================================================================= ---replaygain-fast - -Compute "Radio" ReplayGain of the input data stream after user-specified -volume scaling and/or resampling. - -ReplayGain analysis does _not_ affect the content of a compressed data -stream itself, it is a value stored in the header of a sound file. -Information on the purpose of ReplayGain and the algorithms used is -available from http://www.replaygain.org/ - -Only the "Radio" ReplayGain value is computed. It is stored in the LAME tag. -The analysis is performed with the reference volume equal to 89dB. -Note: the reference volume has been changed from 83dB on transition -from version 3.95 to 3.95.1. - -This switch is enabled by default. - -See also: --replaygain-accurate, --noreplaygain - - - -======================================================================= -output sampling frequency in kHz -======================================================================= ---resample n - -where n = 8, 11.025, 12, 16, 22.05, 24, 32, 44.1, 48 - -Output sampling frequency. Resample the input if necessary. - -If not specified, LAME may sometimes resample automatically -when faced with extreme compression conditions (like encoding -a 44.1 kHz input file at 32 kbps). To disable this automatic -resampling, you have to use --resamle to set the output samplerate -equal to the inptu samplerate. In that case, LAME will not -perform any extra computations. - - - -======================================================================= -sampling frequency in kHz -======================================================================= --s n - -where n = sampling rate in kHz. - -Required for raw PCM input files. Otherwise it will be determined -from the header information in the input file. - -LAME will automatically resample the input file to one of the -supported MP3 samplerates if necessary. - - -======================================================================= -silent operation -======================================================================= --S - -don't print progress report - -======================================================================= -scale -======================================================================= ---scale <arg> - -Scales input by <arg>. This just multiplies the PCM data -(after it has been converted to floating point) by <arg>. - -<arg> > 1: increase volume -<arg> = 1: no effect -<arg> < 1: reduce volume - -Use with care, since most MP3 decoders will truncate data -which decodes to values greater than 32768. - - -======================================================================= -strict ISO complience -======================================================================= ---strictly-enforce-ISO - -With this option, LAME will enforce the 7680 bit limitation on -total frame size. This results in many wasted bits for -high bitrate encodings. - - -======================================================================= -disable VBR tag -======================================================================= --t - -Disable writing of the VBR Tag (only valid if -v flag is -specified) This tag in embedded in frame 0 of the MP3 file. It lets -VBR aware players correctly seek and compute playing times of VBR -files. - -When '--decode' is specified (decode mp3 to wav), this flag will -disable writing the WAV header. The output will be raw pcm, -native endian format. Use -x to swap bytes. - - - -======================================================================= -variable bit rate (VBR) -======================================================================= --v - -Turn on VBR. There are several ways you can use VBR. I personally -like using VBR to get files slightly bigger than 128 kbps files, where -the extra bits are used for the occasional difficult-to-encode frame. -For this, try specifying a minimum bitrate to use with VBR: - -lame -v -b 112 input.wav output.mp3 - -If the file is too big, use -V n, where n = 0...9 - -lame -v -V n -b 112 input.wav output.mp3 - - -If you want to use VBR to get the maximum compression possible, -and for this, you can try: - -lame -v input.wav output.mp3 -lame -v -V n input.wav output.mp3 (to vary quality/filesize) - - - - - - -======================================================================= -VBR quality setting -======================================================================= --V n - -n = 0...9. Specifies the value of VBR_q. -default = 4, highest quality = 0, smallest files = 9 - -Using -V 6 or higher (lower quality) is NOT RECOMMENDED. -ABR will produce better results. - - -How is VBR_q used? - -The value of VBR_q influences two basic parameters of LAME's psycho -acoustics: - a) the absolute threshold of hearing - b) the sample to noise ratio -The lower the VBR_q value the lower the injected quantization noise -will be. - -*NOTE* No psy-model is perfect, so there can often be distortion which -is audible even though the psy-model claims it is not! Thus using a -small minimum bitrate can result in some aggressive compression and -audible distortion even with -V 0. Thus using -V 0 does not sound -better than a fixed 256 kbps encoding. For example: suppose in the 1 kHz -frequency band the psy-model claims 20 dB of distortion will not be -detectable by the human ear, so LAME VBR-0 will compress that -frequency band as much as possible and introduce at most 20 dB of -distortion. Using a fixed 256 kbps framesize, LAME could end up -introducing only 2 dB of distortion. If the psy-model was correct, -they will both sound the same. If the psy-model was wrong, the VBR-0 -result can sound worse. - - -======================================================================= -swapbytes -======================================================================= --x - -swap bytes in the input file (and output file when using --decode). -For sorting out little endian/big endian type problems. If your -encodings sound like static, try this first. - -======================================================================= -Window and OS/2 process priority control -======================================================================= ---priority <type> - -(Windows and OS/2 only) - -Sets the process priority for LAME while running under IBM OS/2. -This can be very useful to avoid the system becoming slow and/or -unresponsive. By setting LAME to run in a lower priority, you leave -more time for the system to update basic processing (drawing windows, -polling keyboard/mouse, etc). The impact in LAME's performance is -minimal if you use priority 0 to 2. - -The valid parameters are: - - 0 = Low priority (IDLE, delta = 0) - 1 = Medium priority (IDLE, delta = +31) - 2 = Regular priority (REGULAR, delta = -31) - 3 = High priority (REGULAR, delta = 0) - 4 = Maximum priority (REGULAR, delta = +31) - -Note that if you call '--priority' without a parameter, then -priority 0 will be assumed. - - - - diff --git a/platform/win32/msvc/external/lame/acinclude.m4 b/platform/win32/msvc/external/lame/acinclude.m4 deleted file mode 100644 index 0b8f869608f..00000000000 --- a/platform/win32/msvc/external/lame/acinclude.m4 +++ /dev/null @@ -1,88 +0,0 @@ -dnl acinclude.m4. Change *this* file to add new or change macros. -dnl When changes have been made, delete aclocal.m4 and run -dnl "aclocal". -dnl -dnl DO NOT change aclocal.m4 ! -dnl - -dnl * LA_SEARCH_FILE(variable, filename, PATH) -dnl * Search "filename" in the specified "PATH", "variable" will -dnl * contain the full pathname or the empty string -dnl * PATH is space-separated list of directories. -dnl * by Florian Bomers - -AC_DEFUN([LA_SEARCH_FILE],[ - $1= - dnl hack: eliminate line feeds in $2 - for FILE in $2; do - for DIR in $3; do - dnl use PATH in order - if test ".$1"="." && test -f "$DIR/$FILE"; then - $1=$DIR - fi - done - done -]) - -dnl * LA_SEARCH_LIB(lib-variable, include-variable, lib-filename, header-filename, prefix) -dnl * looks for "lib-filename" and "header-filename" in the area of "prefix". -dnl * if found, "lib-variable" and "include-variable" are set to the -dnl * respective paths. -dnl * prefix is a single path -dnl * libs are searched in prefix, prefix/lib, prefix/.., prefix/../lib -dnl * headers are searched in prefix, prefix/include, prefix/.., prefix/../include -dnl * -dnl * If one of them is not found, both "lib-variable", "include-variable" are -dnl * set to the empty string. -dnl * -dnl * TODO: assert function call to verify lib -dnl * -dnl * by Florian Bomers - -AC_DEFUN([LA_SEARCH_LIB],[ - dnl look for lib - LA_SEARCH_FILE($1, $3, $5 $5/lib $5/.. $5/../lib) - dnl look for header. - LA_SEARCH_FILE($2, $4, $5 $5/include $5/.. $5/../include) - if test ".$1" = "." || test ".$2" = "."; then - $1= - $2= - fi -]) - - - - -# alex_IEEE854_FLOAT80 -# ------------ -AC_DEFUN([alex_IEEE854_FLOAT80], -[AC_CACHE_CHECK(for IEEE854 compliant 80 bit floats, alex_cv_ieee854_float80, -[AC_TRY_RUN([ -int float2long_IEEE_compliance ( void ) -{ - struct { - long padding; /* to prevent unaligned access */ - float f; - } s; - s.f = 12582912.; if ( *(long*)(&s.f) != 1262485504l ) return 0; - s.f = 12615679.; if ( *(long*)(&s.f) != 1262518271l ) return 0; - s.f = 13582912.; if ( *(long*)(&s.f) != 1263485504l ) return 0; - s.f = 12550145.; if ( *(long*)(&s.f) != 1262452737l ) return 0; - s.f = 11582912.; if ( *(long*)(&s.f) != 1261485504l ) return 0; - return 1; -} - -int main(void) -{ - int retval; - - retval = float2long_IEEE_compliance(); - - /* no error return -> success */ - return !retval; -} -], alex_cv_ieee854_float80=yes, alex_cv_ieee854_float80=no, -[AC_MSG_WARN(can't check for IEEE854 compliant 80 bit floats)] -)])]) # alex_IEEE854_FLOAT80 - - diff --git a/platform/win32/msvc/external/lame/aclocal.m4 b/platform/win32/msvc/external/lame/aclocal.m4 deleted file mode 100644 index 9e06e69d684..00000000000 --- a/platform/win32/msvc/external/lame/aclocal.m4 +++ /dev/null @@ -1,10758 +0,0 @@ -# generated automatically by aclocal 1.11.1 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],, -[m4_warning([this file was generated for autoconf 2.68. -You have another version of autoconf. It may work, but is not guaranteed to. -If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically `autoreconf'.])]) - -# Configure paths for GTK+ -# Owen Taylor 97-11-3 - -dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) -dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS -dnl -AC_DEFUN([AM_PATH_GTK], -[dnl -dnl Get the cflags and libraries from the gtk-config script -dnl -AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)], - gtk_config_prefix="$withval", gtk_config_prefix="") -AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)], - gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="") -AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program], - , enable_gtktest=yes) - - for module in . $4 - do - case "$module" in - gthread) - gtk_config_args="$gtk_config_args gthread" - ;; - esac - done - - if test x$gtk_config_exec_prefix != x ; then - gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" - if test x${GTK_CONFIG+set} != xset ; then - GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config - fi - fi - if test x$gtk_config_prefix != x ; then - gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix" - if test x${GTK_CONFIG+set} != xset ; then - GTK_CONFIG=$gtk_config_prefix/bin/gtk-config - fi - fi - - AC_PATH_PROG(GTK_CONFIG, gtk-config, no) - min_gtk_version=ifelse([$1], ,0.99.7,$1) - AC_MSG_CHECKING(for GTK - version >= $min_gtk_version) - no_gtk="" - if test "$GTK_CONFIG" = "no" ; then - no_gtk=yes - else - GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags` - GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs` - gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - if test "x$enable_gtktest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$GTK_LIBS $LIBS" -dnl -dnl Now check if the installed GTK is sufficiently new. (Also sanity -dnl checks the results of gtk-config to some extent -dnl - rm -f conf.gtktest - AC_TRY_RUN([ -#include <gtk/gtk.h> -#include <stdio.h> -#include <stdlib.h> - -int -main () -{ - int major, minor, micro; - char *tmp_version; - - system ("touch conf.gtktest"); - - /* HP/UX 9 (%@#!) writes to sscanf strings */ - tmp_version = g_strdup("$min_gtk_version"); - if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { - printf("%s, bad version string\n", "$min_gtk_version"); - exit(1); - } - - if ((gtk_major_version != $gtk_config_major_version) || - (gtk_minor_version != $gtk_config_minor_version) || - (gtk_micro_version != $gtk_config_micro_version)) - { - printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", - $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, - gtk_major_version, gtk_minor_version, gtk_micro_version); - printf ("*** was found! If gtk-config was correct, then it is best\n"); - printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); - printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); - printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); - printf("*** required on your system.\n"); - printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n"); - printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n"); - printf("*** before re-running configure\n"); - } -#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION) - else if ((gtk_major_version != GTK_MAJOR_VERSION) || - (gtk_minor_version != GTK_MINOR_VERSION) || - (gtk_micro_version != GTK_MICRO_VERSION)) - { - printf("*** GTK+ header files (version %d.%d.%d) do not match\n", - GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); - printf("*** library (version %d.%d.%d)\n", - gtk_major_version, gtk_minor_version, gtk_micro_version); - } -#endif /* defined (GTK_MAJOR_VERSION) ... */ - else - { - if ((gtk_major_version > major) || - ((gtk_major_version == major) && (gtk_minor_version > minor)) || - ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) - { - return 0; - } - else - { - printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", - gtk_major_version, gtk_minor_version, gtk_micro_version); - printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", - major, minor, micro); - printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); - printf("***\n"); - printf("*** If you have already installed a sufficiently new version, this error\n"); - printf("*** probably means that the wrong copy of the gtk-config shell script is\n"); - printf("*** being found. The easiest way to fix this is to remove the old version\n"); - printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n"); - printf("*** correct copy of gtk-config. (In this case, you will have to\n"); - printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); - printf("*** so that the correct libraries are found at run-time))\n"); - } - } - return 1; -} -],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - if test "x$no_gtk" = x ; then - AC_MSG_RESULT(yes) - ifelse([$2], , :, [$2]) - else - AC_MSG_RESULT(no) - if test "$GTK_CONFIG" = "no" ; then - echo "*** The gtk-config script installed by GTK could not be found" - echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the GTK_CONFIG environment variable to the" - echo "*** full path to gtk-config." - else - if test -f conf.gtktest ; then - : - else - echo "*** Could not run GTK test program, checking why..." - CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$LIBS $GTK_LIBS" - AC_TRY_LINK([ -#include <gtk/gtk.h> -#include <stdio.h> -], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ], - [ echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding GTK or finding the wrong" - echo "*** version of GTK. If it is not finding GTK, you'll need to set your" - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" - echo "*** to the installed location Also, make sure you have run ldconfig if that" - echo "*** is required on your system" - echo "***" - echo "*** If you have an old version installed, it is best to remove it, although" - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" - echo "***" - echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that" - echo "*** came with the system with the command" - echo "***" - echo "*** rpm --erase --nodeps gtk gtk-devel" ], - [ echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means GTK was incorrectly installed" - echo "*** or that you have moved GTK since it was installed. In the latter case, you" - echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - GTK_CFLAGS="" - GTK_LIBS="" - ifelse([$3], , :, [$3]) - fi - AC_SUBST(GTK_CFLAGS) - AC_SUBST(GTK_LIBS) - rm -f conf.gtktest -]) - -# iconv.m4 serial 11 (gettext-0.18.1) -dnl Copyright (C) 2000-2002, 2007-2010 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Bruno Haible. - -AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], -[ - dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - - dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV - dnl accordingly. - AC_LIB_LINKFLAGS_BODY([iconv]) -]) - -AC_DEFUN([AM_ICONV_LINK], -[ - dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and - dnl those with the standalone portable GNU libiconv installed). - AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles - - dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV - dnl accordingly. - AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) - - dnl Add $INCICONV to CPPFLAGS before performing the following checks, - dnl because if the user has installed libiconv and not disabled its use - dnl via --without-libiconv-prefix, he wants to use it. The first - dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. - am_save_CPPFLAGS="$CPPFLAGS" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) - - AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [ - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - AC_TRY_LINK([#include <stdlib.h> -#include <iconv.h>], - [iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);], - [am_cv_func_iconv=yes]) - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" - AC_TRY_LINK([#include <stdlib.h> -#include <iconv.h>], - [iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);], - [am_cv_lib_iconv=yes] - [am_cv_func_iconv=yes]) - LIBS="$am_save_LIBS" - fi - ]) - if test "$am_cv_func_iconv" = yes; then - AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ - dnl This tests against bugs in AIX 5.1, HP-UX 11.11, Solaris 10. - am_save_LIBS="$LIBS" - if test $am_cv_lib_iconv = yes; then - LIBS="$LIBS $LIBICONV" - fi - AC_TRY_RUN([ -#include <iconv.h> -#include <string.h> -int main () -{ - /* Test against AIX 5.1 bug: Failures are not distinguishable from successful - returns. */ - { - iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); - if (cd_utf8_to_88591 != (iconv_t)(-1)) - { - static const char input[] = "\342\202\254"; /* EURO SIGN */ - char buf[10]; - const char *inptr = input; - size_t inbytesleft = strlen (input); - char *outptr = buf; - size_t outbytesleft = sizeof (buf); - size_t res = iconv (cd_utf8_to_88591, - (char **) &inptr, &inbytesleft, - &outptr, &outbytesleft); - if (res == 0) - return 1; - } - } - /* Test against Solaris 10 bug: Failures are not distinguishable from - successful returns. */ - { - iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); - if (cd_ascii_to_88591 != (iconv_t)(-1)) - { - static const char input[] = "\263"; - char buf[10]; - const char *inptr = input; - size_t inbytesleft = strlen (input); - char *outptr = buf; - size_t outbytesleft = sizeof (buf); - size_t res = iconv (cd_ascii_to_88591, - (char **) &inptr, &inbytesleft, - &outptr, &outbytesleft); - if (res == 0) - return 1; - } - } -#if 0 /* This bug could be worked around by the caller. */ - /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ - { - iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); - if (cd_88591_to_utf8 != (iconv_t)(-1)) - { - static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; - char buf[50]; - const char *inptr = input; - size_t inbytesleft = strlen (input); - char *outptr = buf; - size_t outbytesleft = sizeof (buf); - size_t res = iconv (cd_88591_to_utf8, - (char **) &inptr, &inbytesleft, - &outptr, &outbytesleft); - if ((int)res > 0) - return 1; - } - } -#endif - /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is - provided. */ - if (/* Try standardized names. */ - iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) - /* Try IRIX, OSF/1 names. */ - && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) - /* Try AIX names. */ - && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) - /* Try HP-UX names. */ - && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) - return 1; - return 0; -}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no], - [case "$host_os" in - aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; - *) am_cv_func_iconv_works="guessing yes" ;; - esac]) - LIBS="$am_save_LIBS" - ]) - case "$am_cv_func_iconv_works" in - *no) am_func_iconv=no am_cv_lib_iconv=no ;; - *) am_func_iconv=yes ;; - esac - else - am_func_iconv=no am_cv_lib_iconv=no - fi - if test "$am_func_iconv" = yes; then - AC_DEFINE([HAVE_ICONV], [1], - [Define if you have the iconv() function and it works.]) - fi - if test "$am_cv_lib_iconv" = yes; then - AC_MSG_CHECKING([how to link with libiconv]) - AC_MSG_RESULT([$LIBICONV]) - else - dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV - dnl either. - CPPFLAGS="$am_save_CPPFLAGS" - LIBICONV= - LTLIBICONV= - fi - AC_SUBST([LIBICONV]) - AC_SUBST([LTLIBICONV]) -]) - -dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to -dnl avoid warnings like -dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". -dnl This is tricky because of the way 'aclocal' is implemented: -dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN. -dnl Otherwise aclocal's initial scan pass would miss the macro definition. -dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions. -dnl Otherwise aclocal would emit many "Use of uninitialized value $1" -dnl warnings. -m4_define([gl_iconv_AC_DEFUN], - m4_version_prereq([2.64], - [[AC_DEFUN_ONCE( - [$1], [$2])]], - [[AC_DEFUN( - [$1], [$2])]])) -gl_iconv_AC_DEFUN([AM_ICONV], -[ - AM_ICONV_LINK - if test "$am_cv_func_iconv" = yes; then - AC_MSG_CHECKING([for iconv declaration]) - AC_CACHE_VAL([am_cv_proto_iconv], [ - AC_TRY_COMPILE([ -#include <stdlib.h> -#include <iconv.h> -extern -#ifdef __cplusplus -"C" -#endif -#if defined(__STDC__) || defined(__cplusplus) -size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); -#else -size_t iconv(); -#endif -], [], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"]) - am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) - am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` - AC_MSG_RESULT([ - $am_cv_proto_iconv]) - AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], - [Define as const if the declaration of iconv() needs const.]) - fi -]) - -# lib-ld.m4 serial 4 (gettext-0.18) -dnl Copyright (C) 1996-2003, 2009-2010 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl Subroutines of libtool.m4, -dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision -dnl with libtool.m4. - -dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. -AC_DEFUN([AC_LIB_PROG_LD_GNU], -[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], -[# I'd rather use --version here, but apparently some GNU ld's only accept -v. -case `$LD -v 2>&1 </dev/null` in -*GNU* | *'with BFD'*) - acl_cv_prog_gnu_ld=yes ;; -*) - acl_cv_prog_gnu_ld=no ;; -esac]) -with_gnu_ld=$acl_cv_prog_gnu_ld -]) - -dnl From libtool-1.4. Sets the variable LD. -AC_DEFUN([AC_LIB_PROG_LD], -[AC_ARG_WITH([gnu-ld], -[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], -test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by GCC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]* | [A-Za-z]:[\\/]*)] - [re_direlt='/[^/][^/]*/\.\./'] - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL([acl_cv_path_LD], -[if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - acl_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break ;; - *) - test "$with_gnu_ld" != yes && break ;; - esac - fi - done - IFS="$ac_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. -fi]) -LD="$acl_cv_path_LD" -if test -n "$LD"; then - AC_MSG_RESULT([$LD]) -else - AC_MSG_RESULT([no]) -fi -test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) -AC_LIB_PROG_LD_GNU -]) - -# lib-link.m4 serial 21 (gettext-0.18) -dnl Copyright (C) 2001-2010 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Bruno Haible. - -AC_PREREQ([2.54]) - -dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and -dnl the libraries corresponding to explicit and implicit dependencies. -dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and -dnl augments the CPPFLAGS variable. -dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname -dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. -AC_DEFUN([AC_LIB_LINKFLAGS], -[ - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - pushdef([Name],[translit([$1],[./-], [___])]) - pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ - AC_LIB_LINKFLAGS_BODY([$1], [$2]) - ac_cv_lib[]Name[]_libs="$LIB[]NAME" - ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" - ac_cv_lib[]Name[]_cppflags="$INC[]NAME" - ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX" - ]) - LIB[]NAME="$ac_cv_lib[]Name[]_libs" - LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" - INC[]NAME="$ac_cv_lib[]Name[]_cppflags" - LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - AC_SUBST([LIB]NAME) - AC_SUBST([LTLIB]NAME) - AC_SUBST([LIB]NAME[_PREFIX]) - dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the - dnl results of this search when this library appears as a dependency. - HAVE_LIB[]NAME=yes - popdef([NAME]) - popdef([Name]) -]) - -dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message]) -dnl searches for libname and the libraries corresponding to explicit and -dnl implicit dependencies, together with the specified include files and -dnl the ability to compile and link the specified testcode. The missing-message -dnl defaults to 'no' and may contain additional hints for the user. -dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} -dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and -dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs -dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. -dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname -dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. -AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], -[ - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - pushdef([Name],[translit([$1],[./-], [___])]) - pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - - dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME - dnl accordingly. - AC_LIB_LINKFLAGS_BODY([$1], [$2]) - - dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, - dnl because if the user has installed lib[]Name and not disabled its use - dnl via --without-lib[]Name-prefix, he wants to use it. - ac_save_CPPFLAGS="$CPPFLAGS" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - - AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ - ac_save_LIBS="$LIBS" - dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS, - dnl because these -l options might require -L options that are present in - dnl LIBS. -l options benefit only from the -L options listed before it. - dnl Otherwise, add it to the front of LIBS, because it may be a static - dnl library that depends on another static library that is present in LIBS. - dnl Static libraries benefit only from the static libraries listed after - dnl it. - case " $LIB[]NAME" in - *" -l"*) LIBS="$LIBS $LIB[]NAME" ;; - *) LIBS="$LIB[]NAME $LIBS" ;; - esac - AC_TRY_LINK([$3], [$4], - [ac_cv_lib[]Name=yes], - [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])']) - LIBS="$ac_save_LIBS" - ]) - if test "$ac_cv_lib[]Name" = yes; then - HAVE_LIB[]NAME=yes - AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.]) - AC_MSG_CHECKING([how to link with lib[]$1]) - AC_MSG_RESULT([$LIB[]NAME]) - else - HAVE_LIB[]NAME=no - dnl If $LIB[]NAME didn't lead to a usable library, we don't need - dnl $INC[]NAME either. - CPPFLAGS="$ac_save_CPPFLAGS" - LIB[]NAME= - LTLIB[]NAME= - LIB[]NAME[]_PREFIX= - fi - AC_SUBST([HAVE_LIB]NAME) - AC_SUBST([LIB]NAME) - AC_SUBST([LTLIB]NAME) - AC_SUBST([LIB]NAME[_PREFIX]) - popdef([NAME]) - popdef([Name]) -]) - -dnl Determine the platform dependent parameters needed to use rpath: -dnl acl_libext, -dnl acl_shlibext, -dnl acl_hardcode_libdir_flag_spec, -dnl acl_hardcode_libdir_separator, -dnl acl_hardcode_direct, -dnl acl_hardcode_minus_L. -AC_DEFUN([AC_LIB_RPATH], -[ - dnl Tell automake >= 1.10 to complain if config.rpath is missing. - m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) - AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS - AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld - AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host - AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir - AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [ - CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ - ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh - . ./conftest.sh - rm -f ./conftest.sh - acl_cv_rpath=done - ]) - wl="$acl_cv_wl" - acl_libext="$acl_cv_libext" - acl_shlibext="$acl_cv_shlibext" - acl_libname_spec="$acl_cv_libname_spec" - acl_library_names_spec="$acl_cv_library_names_spec" - acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" - acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - acl_hardcode_direct="$acl_cv_hardcode_direct" - acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" - dnl Determine whether the user wants rpath handling at all. - AC_ARG_ENABLE([rpath], - [ --disable-rpath do not hardcode runtime library paths], - :, enable_rpath=yes) -]) - -dnl AC_LIB_FROMPACKAGE(name, package) -dnl declares that libname comes from the given package. The configure file -dnl will then not have a --with-libname-prefix option but a -dnl --with-package-prefix option. Several libraries can come from the same -dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar -dnl macro call that searches for libname. -AC_DEFUN([AC_LIB_FROMPACKAGE], -[ - pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - define([acl_frompackage_]NAME, [$2]) - popdef([NAME]) - pushdef([PACK],[$2]) - pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - define([acl_libsinpackage_]PACKUP, - m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1]) - popdef([PACKUP]) - popdef([PACK]) -]) - -dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and -dnl the libraries corresponding to explicit and implicit dependencies. -dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. -dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found -dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. -AC_DEFUN([AC_LIB_LINKFLAGS_BODY], -[ - AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) - pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) - pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) - dnl Autoconf >= 2.61 supports dots in --with options. - pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_ARG_WITH(P_A_C_K[-prefix], -[[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib - --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi - fi - fi -]) - dnl Search the library and its dependencies in $additional_libdir and - dnl $LDFLAGS. Using breadth-first-seach. - LIB[]NAME= - LTLIB[]NAME= - INC[]NAME= - LIB[]NAME[]_PREFIX= - dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been - dnl computed. So it has to be reset here. - HAVE_LIB[]NAME= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='$1 $2' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - dnl See if it was already located by an earlier AC_LIB_LINKFLAGS - dnl or AC_LIB_HAVE_LINKFLAGS call. - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" - else - dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined - dnl that this library doesn't exist. So just drop it. - : - fi - else - dnl Search the library lib$name in $additional_libdir and $LDFLAGS - dnl and the already constructed $LIBNAME/$LTLIBNAME. - found_dir= - found_la= - found_so= - found_a= - eval libname=\"$acl_libname_spec\" # typically: libname=lib$name - if test -n "$acl_shlibext"; then - shrext=".$acl_shlibext" # typically: shrext=.so - else - shrext= - fi - if test $use_additional = yes; then - dir="$additional_libdir" - dnl The same code as in the loop below: - dnl First look for a shared library. - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - dnl Then look for a static library. - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - dnl First look for a shared library. - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - dnl Then look for a static library. - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - dnl Found the library. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - dnl Linking with a shared library. We attempt to hardcode its - dnl directory into the executable's runpath, unless it's the - dnl standard /usr/lib. - if test "$enable_rpath" = no \ - || test "X$found_dir" = "X/usr/$acl_libdirstem" \ - || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then - dnl No hardcoding is needed. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - dnl Potentially add DIR to ltrpathdirs. - dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - dnl The hardcoding into $LIBNAME is system dependent. - if test "$acl_hardcode_direct" = yes; then - dnl Using DIR/libNAME.so during linking hardcodes DIR into the - dnl resulting binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - dnl Potentially add DIR to rpathdirs. - dnl The rpathdirs will be appended to $LIBNAME at the end. - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - dnl Rely on "-L$found_dir". - dnl But don't add it if it's already contained in the LDFLAGS - dnl or the already constructed $LIBNAME - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" - fi - if test "$acl_hardcode_minus_L" != no; then - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH - dnl here, because this doesn't fit in flags passed to the - dnl compiler. So give up. No hardcoding. This affects only - dnl very old systems. - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - dnl Linking with a static library. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" - else - dnl We shouldn't come here, but anyway it's good to have a - dnl fallback. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" - fi - fi - dnl Assume the include files are nearby. - additional_includedir= - case "$found_dir" in - */$acl_libdirstem | */$acl_libdirstem/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` - if test "$name" = '$1'; then - LIB[]NAME[]_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - */$acl_libdirstem2 | */$acl_libdirstem2/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` - if test "$name" = '$1'; then - LIB[]NAME[]_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - dnl Potentially add $additional_includedir to $INCNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's /usr/local/include and we are using GCC on Linux, - dnl 3. if it's already present in $CPPFLAGS or the already - dnl constructed $INCNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INC[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $INCNAME. - INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - dnl Look for dependencies. - if test -n "$found_la"; then - dnl Read the .la file. It defines the variables - dnl dlname, library_names, old_library, dependency_libs, current, - dnl age, revision, installed, dlopen, dlpreopen, libdir. - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - dnl We use only dependency_libs. - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's /usr/local/lib and we are using GCC on Linux, - dnl 3. if it's already present in $LDFLAGS or the already - dnl constructed $LIBNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ - && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ - || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LIBNAME. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LTLIBNAME. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - dnl Potentially add DIR to rpathdirs. - dnl The rpathdirs will be appended to $LIBNAME at the end. - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - dnl Potentially add DIR to ltrpathdirs. - dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - dnl Handle this in the next round. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - dnl Handle this in the next round. Throw away the .la's - dnl directory; it is already contained in a preceding -L - dnl option. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - dnl Most likely an immediate library name. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" - ;; - esac - done - fi - else - dnl Didn't find the library; assume it is in the system directories - dnl known to the linker and runtime loader. (All the system - dnl directories known to the linker should also be known to the - dnl runtime loader, otherwise the system is severely misconfigured.) - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$acl_hardcode_libdir_separator"; then - dnl Weird platform: only the last -rpath option counts, the user must - dnl pass all path elements in one option. We can arrange that for a - dnl single library, but not when more than one $LIBNAMEs are used. - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" - done - dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - else - dnl The -rpath options are cumulative. - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - dnl When using libtool, the option that works for both libraries and - dnl executables is -R. The -R options are cumulative. - for found_dir in $ltrpathdirs; do - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" - done - fi - popdef([P_A_C_K]) - popdef([PACKLIBS]) - popdef([PACKUP]) - popdef([PACK]) - popdef([NAME]) -]) - -dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, -dnl unless already present in VAR. -dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes -dnl contains two or three consecutive elements that belong together. -AC_DEFUN([AC_LIB_APPENDTOVAR], -[ - for element in [$2]; do - haveit= - for x in $[$1]; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - [$1]="${[$1]}${[$1]:+ }$element" - fi - done -]) - -dnl For those cases where a variable contains several -L and -l options -dnl referring to unknown libraries and directories, this macro determines the -dnl necessary additional linker options for the runtime path. -dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) -dnl sets LDADDVAR to linker options needed together with LIBSVALUE. -dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, -dnl otherwise linking without libtool is assumed. -AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], -[ - AC_REQUIRE([AC_LIB_RPATH]) - AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) - $1= - if test "$enable_rpath" != no; then - if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then - dnl Use an explicit option to hardcode directories into the resulting - dnl binary. - rpathdirs= - next= - for opt in $2; do - if test -n "$next"; then - dir="$next" - dnl No need to hardcode the standard /usr/lib. - if test "X$dir" != "X/usr/$acl_libdirstem" \ - && test "X$dir" != "X/usr/$acl_libdirstem2"; then - rpathdirs="$rpathdirs $dir" - fi - next= - else - case $opt in - -L) next=yes ;; - -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` - dnl No need to hardcode the standard /usr/lib. - if test "X$dir" != "X/usr/$acl_libdirstem" \ - && test "X$dir" != "X/usr/$acl_libdirstem2"; then - rpathdirs="$rpathdirs $dir" - fi - next= ;; - *) next= ;; - esac - fi - done - if test "X$rpathdirs" != "X"; then - if test -n ""$3""; then - dnl libtool is used for linking. Use -R options. - for dir in $rpathdirs; do - $1="${$1}${$1:+ }-R$dir" - done - else - dnl The linker is used for linking directly. - if test -n "$acl_hardcode_libdir_separator"; then - dnl Weird platform: only the last -rpath option counts, the user - dnl must pass all path elements in one option. - alldirs= - for dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - $1="$flag" - else - dnl The -rpath options are cumulative. - for dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$dir" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - $1="${$1}${$1:+ }$flag" - done - fi - fi - fi - fi - fi - AC_SUBST([$1]) -]) - -# lib-prefix.m4 serial 7 (gettext-0.18) -dnl Copyright (C) 2001-2005, 2008-2010 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Bruno Haible. - -dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and -dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't -dnl require excessive bracketing. -ifdef([AC_HELP_STRING], -[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], -[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) - -dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed -dnl to access previously installed libraries. The basic assumption is that -dnl a user will want packages to use other packages he previously installed -dnl with the same --prefix option. -dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate -dnl libraries, but is otherwise very convenient. -AC_DEFUN([AC_LIB_PREFIX], -[ - AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) - AC_REQUIRE([AC_PROG_CC]) - AC_REQUIRE([AC_CANONICAL_HOST]) - AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_LIB_ARG_WITH([lib-prefix], -[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib - --without-lib-prefix don't search for libraries in includedir and libdir], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/$acl_libdirstem" - fi - fi -]) - if test $use_additional = yes; then - dnl Potentially add $additional_includedir to $CPPFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's already present in $CPPFLAGS, - dnl 3. if it's /usr/local/include and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - for x in $CPPFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $CPPFLAGS. - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" - fi - fi - fi - fi - dnl Potentially add $additional_libdir to $LDFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's already present in $LDFLAGS, - dnl 3. if it's /usr/local/lib and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then - haveit= - for x in $LDFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LDFLAGS. - LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" - fi - fi - fi - fi - fi -]) - -dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, -dnl acl_final_exec_prefix, containing the values to which $prefix and -dnl $exec_prefix will expand at the end of the configure script. -AC_DEFUN([AC_LIB_PREPARE_PREFIX], -[ - dnl Unfortunately, prefix and exec_prefix get only finally determined - dnl at the end of configure. - if test "X$prefix" = "XNONE"; then - acl_final_prefix="$ac_default_prefix" - else - acl_final_prefix="$prefix" - fi - if test "X$exec_prefix" = "XNONE"; then - acl_final_exec_prefix='${prefix}' - else - acl_final_exec_prefix="$exec_prefix" - fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" - prefix="$acl_save_prefix" -]) - -dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the -dnl variables prefix and exec_prefix bound to the values they will have -dnl at the end of the configure script. -AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], -[ - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - $1 - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" -]) - -dnl AC_LIB_PREPARE_MULTILIB creates -dnl - a variable acl_libdirstem, containing the basename of the libdir, either -dnl "lib" or "lib64" or "lib/64", -dnl - a variable acl_libdirstem2, as a secondary possible value for -dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or -dnl "lib/amd64". -AC_DEFUN([AC_LIB_PREPARE_MULTILIB], -[ - dnl There is no formal standard regarding lib and lib64. - dnl On glibc systems, the current practice is that on a system supporting - dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under - dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine - dnl the compiler's default mode by looking at the compiler's library search - dnl path. If at least one of its elements ends in /lib64 or points to a - dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI. - dnl Otherwise we use the default, namely "lib". - dnl On Solaris systems, the current practice is that on a system supporting - dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under - dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or - dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. - AC_REQUIRE([AC_CANONICAL_HOST]) - acl_libdirstem=lib - acl_libdirstem2= - case "$host_os" in - solaris*) - dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment - dnl <http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view>. - dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." - dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the - dnl symlink is missing, so we set acl_libdirstem2 too. - AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit], - [AC_EGREP_CPP([sixtyfour bits], [ -#ifdef _LP64 -sixtyfour bits -#endif - ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no]) - ]) - if test $gl_cv_solaris_64bit = yes; then - acl_libdirstem=lib/64 - case "$host_cpu" in - sparc*) acl_libdirstem2=lib/sparcv9 ;; - i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; - esac - fi - ;; - *) - searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` - if test -n "$searchpath"; then - acl_save_IFS="${IFS= }"; IFS=":" - for searchdir in $searchpath; do - if test -d "$searchdir"; then - case "$searchdir" in - */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; - */../ | */.. ) - # Better ignore directories of this form. They are misleading. - ;; - *) searchdir=`cd "$searchdir" && pwd` - case "$searchdir" in - */lib64 ) acl_libdirstem=lib64 ;; - esac ;; - esac - fi - done - IFS="$acl_save_IFS" - fi - ;; - esac - test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" -]) - -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -m4_define([_LT_COPYING], [dnl -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool 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. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -]) - -# serial 57 LT_INIT - - -# LT_PREREQ(VERSION) -# ------------------ -# Complain and exit if this libtool version is less that VERSION. -m4_defun([LT_PREREQ], -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], - [m4_fatal([Libtool version $1 or higher is required], - 63)])], - [$2])]) - - -# _LT_CHECK_BUILDDIR -# ------------------ -# Complain if the absolute build directory name contains unusual characters -m4_defun([_LT_CHECK_BUILDDIR], -[case `pwd` in - *\ * | *\ *) - AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; -esac -]) - - -# LT_INIT([OPTIONS]) -# ------------------ -AC_DEFUN([LT_INIT], -[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT -AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -AC_BEFORE([$0], [LT_LANG])dnl -AC_BEFORE([$0], [LT_OUTPUT])dnl -AC_BEFORE([$0], [LTDL_INIT])dnl -m4_require([_LT_CHECK_BUILDDIR])dnl - -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -AC_REQUIRE([LTVERSION_VERSION])dnl -AC_REQUIRE([LTOBSOLETE_VERSION])dnl -m4_require([_LT_PROG_LTMAIN])dnl - -_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) - -dnl Parse OPTIONS -_LT_SET_OPTIONS([$0], [$1]) - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -_LT_SETUP - -# Only expand once: -m4_define([LT_INIT]) -])# LT_INIT - -# Old names: -AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) -AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PROG_LIBTOOL], []) -dnl AC_DEFUN([AM_PROG_LIBTOOL], []) - - -# _LT_CC_BASENAME(CC) -# ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -m4_defun([_LT_CC_BASENAME], -[for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -]) - - -# _LT_FILEUTILS_DEFAULTS -# ---------------------- -# It is okay to use these file commands and assume they have been set -# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. -m4_defun([_LT_FILEUTILS_DEFAULTS], -[: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} -])# _LT_FILEUTILS_DEFAULTS - - -# _LT_SETUP -# --------- -m4_defun([_LT_SETUP], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl - -_LT_DECL([], [host_alias], [0], [The host system])dnl -_LT_DECL([], [host], [0])dnl -_LT_DECL([], [host_os], [0])dnl -dnl -_LT_DECL([], [build_alias], [0], [The build system])dnl -_LT_DECL([], [build], [0])dnl -_LT_DECL([], [build_os], [0])dnl -dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -test -z "$LN_S" && LN_S="ln -s" -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -dnl -AC_REQUIRE([LT_CMD_MAX_LEN])dnl -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl -dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_CMD_RELOAD])dnl -m4_require([_LT_CHECK_MAGIC_METHOD])dnl -m4_require([_LT_CMD_OLD_ARCHIVE])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl - -_LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi -]) -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -_LT_CHECK_OBJDIR - -m4_require([_LT_TAG_COMPILER])dnl - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - _LT_PATH_MAGIC - fi - ;; -esac - -# Use C for the default configuration in the libtool script -LT_SUPPORTED_TAG([CC]) -_LT_LANG_C_CONFIG -_LT_LANG_DEFAULT_CONFIG -_LT_CONFIG_COMMANDS -])# _LT_SETUP - - -# _LT_PREPARE_SED_QUOTE_VARS -# -------------------------- -# Define a few sed substitution that help us do robust quoting. -m4_defun([_LT_PREPARE_SED_QUOTE_VARS], -[# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([["`\\]]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' -]) - -# _LT_PROG_LTMAIN -# --------------- -# Note that this code is called both from `configure', and `config.status' -# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# `config.status' has no value for ac_aux_dir unless we are using Automake, -# so we pass a copy along to make sure it has a sensible value anyway. -m4_defun([_LT_PROG_LTMAIN], -[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain="$ac_aux_dir/ltmain.sh" -])# _LT_PROG_LTMAIN - - - -# So that we can recreate a full libtool script including additional -# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the `libtool' -# label. - - -# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) -# ---------------------------------------- -# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL_INIT], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_INIT], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_INIT]) - - -# _LT_CONFIG_LIBTOOL([COMMANDS]) -# ------------------------------ -# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) - - -# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) -# ----------------------------------------------------- -m4_defun([_LT_CONFIG_SAVE_COMMANDS], -[_LT_CONFIG_LIBTOOL([$1]) -_LT_CONFIG_LIBTOOL_INIT([$2]) -]) - - -# _LT_FORMAT_COMMENT([COMMENT]) -# ----------------------------- -# Add leading comment marks to the start of each line, and a trailing -# full-stop to the whole comment if one is not present already. -m4_define([_LT_FORMAT_COMMENT], -[m4_ifval([$1], [ -m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], - [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) -)]) - - - - - -# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) -# ------------------------------------------------------------------- -# CONFIGNAME is the name given to the value in the libtool script. -# VARNAME is the (base) name used in the configure script. -# VALUE may be 0, 1 or 2 for a computed quote escaped value based on -# VARNAME. Any other value will be used directly. -m4_define([_LT_DECL], -[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], - [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], - [m4_ifval([$1], [$1], [$2])]) - lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) - m4_ifval([$4], - [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) - lt_dict_add_subkey([lt_decl_dict], [$2], - [tagged?], [m4_ifval([$5], [yes], [no])])]) -]) - - -# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) -# -------------------------------------------------------- -m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) - - -# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_tag_varnames], -[_lt_decl_filter([tagged?], [yes], $@)]) - - -# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) -# --------------------------------------------------------- -m4_define([_lt_decl_filter], -[m4_case([$#], - [0], [m4_fatal([$0: too few arguments: $#])], - [1], [m4_fatal([$0: too few arguments: $#: $1])], - [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], - [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], - [lt_dict_filter([lt_decl_dict], $@)])[]dnl -]) - - -# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) -# -------------------------------------------------- -m4_define([lt_decl_quote_varnames], -[_lt_decl_filter([value], [1], $@)]) - - -# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_dquote_varnames], -[_lt_decl_filter([value], [2], $@)]) - - -# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_varnames_tagged], -[m4_assert([$# <= 2])dnl -_$0(m4_quote(m4_default([$1], [[, ]])), - m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), - m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) -m4_define([_lt_decl_varnames_tagged], -[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) - - -# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_all_varnames], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_if([$2], [], - m4_quote(lt_decl_varnames), - m4_quote(m4_shift($@))))[]dnl -]) -m4_define([_lt_decl_all_varnames], -[lt_join($@, lt_decl_varnames_tagged([$1], - lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl -]) - - -# _LT_CONFIG_STATUS_DECLARE([VARNAME]) -# ------------------------------------ -# Quote a variable value, and forward it to `config.status' so that its -# declaration there will have the same value as in `configure'. VARNAME -# must have a single quote delimited value for this to work. -m4_define([_LT_CONFIG_STATUS_DECLARE], -[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) - - -# _LT_CONFIG_STATUS_DECLARATIONS -# ------------------------------ -# We delimit libtool config variables with single quotes, so when -# we write them to config.status, we have to be sure to quote all -# embedded single quotes properly. In configure, this macro expands -# each variable declared with _LT_DECL (and _LT_TAGDECL) into: -# -# <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`' -m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], -[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), - [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAGS -# ---------------- -# Output comment and list of tags supported by the script -m4_defun([_LT_LIBTOOL_TAGS], -[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags="_LT_TAGS"dnl -]) - - -# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) -# ----------------------------------- -# Extract the dictionary values for VARNAME (optionally with TAG) and -# expand to a commented shell variable setting: -# -# # Some comment about what VAR is for. -# visible_name=$lt_internal_name -m4_define([_LT_LIBTOOL_DECLARE], -[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], - [description])))[]dnl -m4_pushdef([_libtool_name], - m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl -m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), - [0], [_libtool_name=[$]$1], - [1], [_libtool_name=$lt_[]$1], - [2], [_libtool_name=$lt_[]$1], - [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl -m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl -]) - - -# _LT_LIBTOOL_CONFIG_VARS -# ----------------------- -# Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' -# script. Tagged libtool config variables (even for the LIBTOOL CONFIG -# section) are produced by _LT_LIBTOOL_TAG_VARS. -m4_defun([_LT_LIBTOOL_CONFIG_VARS], -[m4_foreach([_lt_var], - m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAG_VARS(TAG) -# ------------------------- -m4_define([_LT_LIBTOOL_TAG_VARS], -[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) - - -# _LT_TAGVAR(VARNAME, [TAGNAME]) -# ------------------------------ -m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) - - -# _LT_CONFIG_COMMANDS -# ------------------- -# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of -# variables for single and double quote escaping we saved from calls -# to _LT_DECL, we can put quote escaped variables declarations -# into `config.status', and then the shell code to quote escape them in -# for loops in `config.status'. Finally, any additional code accumulated -# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. -m4_defun([_LT_CONFIG_COMMANDS], -[AC_PROVIDE_IFELSE([LT_OUTPUT], - dnl If the libtool generation code has been placed in $CONFIG_LT, - dnl instead of duplicating it all over again into config.status, - dnl then we will have config.status run $CONFIG_LT later, so it - dnl needs to know what name is stored there: - [AC_CONFIG_COMMANDS([libtool], - [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], - dnl If the libtool generation code is destined for config.status, - dnl expand the accumulated commands and init code now: - [AC_CONFIG_COMMANDS([libtool], - [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) -])#_LT_CONFIG_COMMANDS - - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], -[ - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -_LT_CONFIG_STATUS_DECLARATIONS -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$[]1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_quote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -_LT_OUTPUT_LIBTOOL_INIT -]) - -# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) -# ------------------------------------ -# Generate a child script FILE with all initialization necessary to -# reuse the environment learned by the parent script, and make the -# file executable. If COMMENT is supplied, it is inserted after the -# `#!' sequence but before initialization text begins. After this -# macro, additional text can be appended to FILE to form the body of -# the child script. The macro ends with non-zero status if the -# file could not be fully written (such as if the disk is full). -m4_ifdef([AS_INIT_GENERATED], -[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], -[m4_defun([_LT_GENERATED_FILE_INIT], -[m4_require([AS_PREPARE])]dnl -[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl -[lt_write_fail=0 -cat >$1 <<_ASEOF || lt_write_fail=1 -#! $SHELL -# Generated by $as_me. -$2 -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$1 <<\_ASEOF || lt_write_fail=1 -AS_SHELL_SANITIZE -_AS_PREPARE -exec AS_MESSAGE_FD>&1 -_ASEOF -test $lt_write_fail = 0 && chmod +x $1[]dnl -m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT - -# LT_OUTPUT -# --------- -# This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), incase it is used in configure for compilation -# tests. -AC_DEFUN([LT_OUTPUT], -[: ${CONFIG_LT=./config.lt} -AC_MSG_NOTICE([creating $CONFIG_LT]) -_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -[# Run this file to recreate a libtool stub with the current configuration.]) - -cat >>"$CONFIG_LT" <<\_LTEOF -lt_cl_silent=false -exec AS_MESSAGE_LOG_FD>>config.log -{ - echo - AS_BOX([Running $as_me.]) -} >&AS_MESSAGE_LOG_FD - -lt_cl_help="\ -\`$as_me' creates a local libtool stub from the current configuration, -for use in further configure time tests before the real libtool is -generated. - -Usage: $[0] [[OPTIONS]] - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - -Report bugs to <bug-libtool@gnu.org>." - -lt_cl_version="\ -m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl -m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) -configured by $[0], generated by m4_PACKAGE_STRING. - -Copyright (C) 2010 Free Software Foundation, Inc. -This config.lt script is free software; the Free Software Foundation -gives unlimited permision to copy, distribute and modify it." - -while test $[#] != 0 -do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; - --help | --h* | -h ) - echo "$lt_cl_help"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --quiet | --q* | --silent | --s* | -q ) - lt_cl_silent=: ;; - - -*) AC_MSG_ERROR([unrecognized option: $[1] -Try \`$[0] --help' for more information.]) ;; - - *) AC_MSG_ERROR([unrecognized argument: $[1] -Try \`$[0] --help' for more information.]) ;; - esac - shift -done - -if $lt_cl_silent; then - exec AS_MESSAGE_FD>/dev/null -fi -_LTEOF - -cat >>"$CONFIG_LT" <<_LTEOF -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -_LTEOF - -cat >>"$CONFIG_LT" <<\_LTEOF -AC_MSG_NOTICE([creating $ofile]) -_LT_OUTPUT_LIBTOOL_COMMANDS -AS_EXIT(0) -_LTEOF -chmod +x "$CONFIG_LT" - -# configure is writing to config.log, but config.lt does its own redirection, -# appending to config.log, which fails on DOS, as config.log is still kept -# open by configure. Here we exec the FD to /dev/null, effectively closing -# config.log, so it can be properly (re)opened and appended to by config.lt. -lt_cl_success=: -test "$silent" = yes && - lt_config_lt_args="$lt_config_lt_args --quiet" -exec AS_MESSAGE_LOG_FD>/dev/null -$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -exec AS_MESSAGE_LOG_FD>>config.log -$lt_cl_success || AS_EXIT(1) -])# LT_OUTPUT - - -# _LT_CONFIG(TAG) -# --------------- -# If TAG is the built-in tag, create an initial libtool script with a -# default configuration from the untagged config vars. Otherwise add code -# to config.status for appending the configuration named by TAG from the -# matching tagged config vars. -m4_defun([_LT_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_CONFIG_SAVE_COMMANDS([ - m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl - m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -_LT_COPYING -_LT_LIBTOOL_TAGS - -# ### BEGIN LIBTOOL CONFIG -_LT_LIBTOOL_CONFIG_VARS -_LT_LIBTOOL_TAG_VARS -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - _LT_PROG_LTMAIN - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - _LT_PROG_XSI_SHELLFNS - - sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -], -[cat <<_LT_EOF >> "$ofile" - -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -dnl in a comment (ie after a #). -# ### BEGIN LIBTOOL TAG CONFIG: $1 -_LT_LIBTOOL_TAG_VARS(_LT_TAG) -# ### END LIBTOOL TAG CONFIG: $1 -_LT_EOF -])dnl /m4_if -], -[m4_if([$1], [], [ - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile'], []) -])dnl /_LT_CONFIG_SAVE_COMMANDS -])# _LT_CONFIG - - -# LT_SUPPORTED_TAG(TAG) -# --------------------- -# Trace this macro to discover what tags are supported by the libtool -# --tag option, using: -# autoconf --trace 'LT_SUPPORTED_TAG:$1' -AC_DEFUN([LT_SUPPORTED_TAG], []) - - -# C support is built-in for now -m4_define([_LT_LANG_C_enabled], []) -m4_define([_LT_TAGS], []) - - -# LT_LANG(LANG) -# ------------- -# Enable libtool support for the given language if not already enabled. -AC_DEFUN([LT_LANG], -[AC_BEFORE([$0], [LT_OUTPUT])dnl -m4_case([$1], - [C], [_LT_LANG(C)], - [C++], [_LT_LANG(CXX)], - [Java], [_LT_LANG(GCJ)], - [Fortran 77], [_LT_LANG(F77)], - [Fortran], [_LT_LANG(FC)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl -])# LT_LANG - - -# _LT_LANG(LANGNAME) -# ------------------ -m4_defun([_LT_LANG], -[m4_ifdef([_LT_LANG_]$1[_enabled], [], - [LT_SUPPORTED_TAG([$1])dnl - m4_append([_LT_TAGS], [$1 ])dnl - m4_define([_LT_LANG_]$1[_enabled], [])dnl - _LT_LANG_$1_CONFIG($1)])dnl -])# _LT_LANG - - -# _LT_LANG_DEFAULT_CONFIG -# ----------------------- -m4_defun([_LT_LANG_DEFAULT_CONFIG], -[AC_PROVIDE_IFELSE([AC_PROG_CXX], - [LT_LANG(CXX)], - [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) - -AC_PROVIDE_IFELSE([AC_PROG_F77], - [LT_LANG(F77)], - [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) - -AC_PROVIDE_IFELSE([AC_PROG_FC], - [LT_LANG(FC)], - [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) - -dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal -dnl pulling things in needlessly. -AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([LT_PROG_GCJ], - [LT_LANG(GCJ)], - [m4_ifdef([AC_PROG_GCJ], - [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([A][M_PROG_GCJ], - [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([LT_PROG_GCJ], - [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) - -AC_PROVIDE_IFELSE([LT_PROG_RC], - [LT_LANG(RC)], - [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) -])# _LT_LANG_DEFAULT_CONFIG - -# Obsolete macros: -AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) -AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) -AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) -AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) -AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_CXX], []) -dnl AC_DEFUN([AC_LIBTOOL_F77], []) -dnl AC_DEFUN([AC_LIBTOOL_FC], []) -dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) -dnl AC_DEFUN([AC_LIBTOOL_RC], []) - - -# _LT_TAG_COMPILER -# ---------------- -m4_defun([_LT_TAG_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl -_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl -_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_TAG_COMPILER - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -m4_defun([_LT_COMPILER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* -])# _LT_COMPILER_BOILERPLATE - - -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -m4_defun([_LT_LINKER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* -])# _LT_LINKER_BOILERPLATE - -# _LT_REQUIRED_DARWIN_CHECKS -# ------------------------- -m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ - case $host_os in - rhapsody* | darwin*) - AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) - AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) - AC_CHECK_TOOL([LIPO], [lipo], [:]) - AC_CHECK_TOOL([OTOOL], [otool], [:]) - AC_CHECK_TOOL([OTOOL64], [otool64], [:]) - _LT_DECL([], [DSYMUTIL], [1], - [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) - _LT_DECL([], [NMEDIT], [1], - [Tool to change global to local symbols on Mac OS X]) - _LT_DECL([], [LIPO], [1], - [Tool to manipulate fat objects and archives on Mac OS X]) - _LT_DECL([], [OTOOL], [1], - [ldd/readelf like tool for Mach-O binaries on Mac OS X]) - _LT_DECL([], [OTOOL64], [1], - [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) - - AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], - [lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi]) - AC_CACHE_CHECK([for -exported_symbols_list linker flag], - [lt_cv_ld_exported_symbols_list], - [lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS="$save_LDFLAGS" - ]) - AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], - [lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD - echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD - $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - ]) - case $host_os in - rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[[012]]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac -]) - - -# _LT_DARWIN_LINKER_FEATURES -# -------------------------- -# Checks for linker and compiler features on darwin -m4_defun([_LT_DARWIN_LINKER_FEATURES], -[ - m4_require([_LT_REQUIRED_DARWIN_CHECKS]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='' - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - m4_if([$1], [CXX], -[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi -],[]) - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi -]) - -# _LT_SYS_MODULE_PATH_AIX -# ----------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -m4_defun([_LT_SYS_MODULE_PATH_AIX], -[m4_require([_LT_DECL_SED])dnl -AC_LINK_IFELSE(AC_LANG_PROGRAM,[ -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi],[]) -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -])# _LT_SYS_MODULE_PATH_AIX - - -# _LT_SHELL_INIT(ARG) -# ------------------- -m4_define([_LT_SHELL_INIT], -[m4_divert_text([M4SH-INIT], [$1 -])])# _LT_SHELL_INIT - - - -# _LT_PROG_ECHO_BACKSLASH -# ----------------------- -# Find how we can fake an echo command that does not interpret backslash. -# In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script which will find a shell with a builtin -# printf (which we can use as an echo command). -m4_defun([_LT_PROG_ECHO_BACKSLASH], -[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -AC_MSG_CHECKING([how to print strings]) -# Test print first, because it will be a builtin if present. -if test "X`print -r -- -n 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$[]1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -case "$ECHO" in - printf*) AC_MSG_RESULT([printf]) ;; - print*) AC_MSG_RESULT([print -r]) ;; - *) AC_MSG_RESULT([cat]) ;; -esac - -m4_ifdef([_AS_DETECT_SUGGESTED], -[_AS_DETECT_SUGGESTED([ - test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test "X`printf %s $ECHO`" = "X$ECHO" \ - || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) - -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) -])# _LT_PROG_ECHO_BACKSLASH - - -# _LT_ENABLE_LOCK -# --------------- -m4_defun([_LT_ENABLE_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AS_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" -])# _LT_ENABLE_LOCK - - -# _LT_CMD_OLD_ARCHIVE -# ------------------- -m4_defun([_LT_CMD_OLD_ARCHIVE], -[AC_CHECK_TOOL(AR, ar, false) -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1]) - -AC_CHECK_TOOL(STRIP, strip, :) -test -z "$STRIP" && STRIP=: -_LT_DECL([], [STRIP], [1], [A symbol stripping program]) - -AC_CHECK_TOOL(RANLIB, ranlib, :) -test -z "$RANLIB" && RANLIB=: -_LT_DECL([], [RANLIB], [1], - [Commands used to install an old-style archive]) - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac -_LT_DECL([], [old_postinstall_cmds], [2]) -_LT_DECL([], [old_postuninstall_cmds], [2]) -_LT_TAGDECL([], [old_archive_cmds], [2], - [Commands used to build an old-style archive]) -_LT_DECL([], [lock_old_archive_extraction], [0], - [Whether to use a lock for old archive extraction]) -])# _LT_CMD_OLD_ARCHIVE - - -# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([_LT_COMPILER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - fi - $RM conftest* -]) - -if test x"[$]$2" = xyes; then - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -])# _LT_COMPILER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) - - -# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------- -# Check whether the given linker option works -AC_DEFUN([_LT_LINKER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" -]) - -if test x"[$]$2" = xyes; then - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -])# _LT_LINKER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) - - -# LT_CMD_MAX_LEN -#--------------- -AC_DEFUN([LT_CMD_MAX_LEN], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac -]) -if test -n $lt_cv_sys_max_cmd_len ; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -max_cmd_len=$lt_cv_sys_max_cmd_len -_LT_DECL([], [max_cmd_len], [0], - [What is the maximum length of a command?]) -])# LT_CMD_MAX_LEN - -# Old name: -AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) - - -# _LT_HEADER_DLFCN -# ---------------- -m4_defun([_LT_HEADER_DLFCN], -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -])# _LT_HEADER_DLFCN - - -# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ---------------------------------------------------------------- -m4_defun([_LT_TRY_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "$cross_compiling" = yes; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -void fnord () __attribute__((visibility("default"))); -#endif - -void fnord () { int i=42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -}] -_LT_EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_dlunknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_TRY_DLOPEN_SELF - - -# LT_SYS_DLOPEN_SELF -# ------------------ -AC_DEFUN([LT_SYS_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -])# LT_SYS_DLOPEN_SELF - -# Old name: -AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) - - -# _LT_COMPILER_C_O([TAGNAME]) -# --------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler. -# This macro does not hard code the compiler like AC_PROG_CC_C_O. -m4_defun([_LT_COMPILER_C_O], -[m4_require([_LT_DECL_SED])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* -]) -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) -])# _LT_COMPILER_C_O - - -# _LT_COMPILER_FILE_LOCKS([TAGNAME]) -# ---------------------------------- -# Check to see if we can do hard links to lock some files if needed -m4_defun([_LT_COMPILER_FILE_LOCKS], -[m4_require([_LT_ENABLE_LOCK])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_COMPILER_C_O([$1]) - -hard_links="nottested" -if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -])# _LT_COMPILER_FILE_LOCKS - - -# _LT_CHECK_OBJDIR -# ---------------- -m4_defun([_LT_CHECK_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -_LT_DECL([], [objdir], [0], - [The name of the directory that contains temporary libtool files])dnl -m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", - [Define to the sub-directory in which libtool stores uninstalled libraries.]) -])# _LT_CHECK_OBJDIR - - -# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) -# -------------------------------------- -# Check hardcoding attributes. -m4_defun([_LT_LINKER_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || - test -n "$_LT_TAGVAR(runpath_var, $1)" || - test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) - -if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || - test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi -_LT_TAGDECL([], [hardcode_action], [0], - [How to hardcode a shared library path into an executable]) -])# _LT_LINKER_HARDCODE_LIBPATH - - -# _LT_CMD_STRIPLIB -# ---------------- -m4_defun([_LT_CMD_STRIPLIB], -[m4_require([_LT_DECL_EGREP]) -striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -_LT_DECL([], [striplib], [1]) -])# _LT_CMD_STRIPLIB - - -# _LT_SYS_DYNAMIC_LINKER([TAG]) -# ----------------------------- -# PORTME Fill in your ld.so characteristics -m4_defun([_LT_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_OBJDUMP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -AC_MSG_CHECKING([dynamic linker characteristics]) -m4_if([$1], - [], [ -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[[4-9]]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib<name>.so - # instead of lib<name>.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[[45]]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - esac - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[[123]]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ - freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[[3-9]]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], - [lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ - LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], - [lt_cv_shlibpath_overrides_runpath=yes])]) - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - ]) - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - -_LT_DECL([], [variables_saved_for_relink], [1], - [Variables whose values should be saved in libtool wrapper scripts and - restored at link time]) -_LT_DECL([], [need_lib_prefix], [0], - [Do we need the "lib" prefix for modules?]) -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -_LT_DECL([], [version_type], [0], [Library versioning type]) -_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -_LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shlibpath searched before the hard-coded library search path?]) -_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -_LT_DECL([], [library_names_spec], [1], - [[List of archive names. First name is the real one, the rest are links. - The last name is the one that the linker finds with -lNAME]]) -_LT_DECL([], [soname_spec], [1], - [[The coded name of the library, if different from the real name]]) -_LT_DECL([], [install_override_mode], [1], - [Permission mode override for installation of shared libraries]) -_LT_DECL([], [postinstall_cmds], [2], - [Command to use after installation of a shared archive]) -_LT_DECL([], [postuninstall_cmds], [2], - [Command to use after uninstallation of a shared archive]) -_LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) -_LT_DECL([], [finish_eval], [1], - [[As "finish_cmds", except a single script fragment to be evaled but - not shown]]) -_LT_DECL([], [hardcode_into_libs], [0], - [Whether we should hardcode library paths into libraries]) -_LT_DECL([], [sys_lib_search_path_spec], [2], - [Compile-time system search path for libraries]) -_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], - [Run-time system search path for libraries]) -])# _LT_SYS_DYNAMIC_LINKER - - -# _LT_PATH_TOOL_PREFIX(TOOL) -# -------------------------- -# find a file program which can recognize shared library -AC_DEFUN([_LT_PATH_TOOL_PREFIX], -[m4_require([_LT_DECL_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="m4_if([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins with "file"])dnl -])# _LT_PATH_TOOL_PREFIX - -# Old name: -AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) - - -# _LT_PATH_MAGIC -# -------------- -# find a file program which can recognize a shared library -m4_defun([_LT_PATH_MAGIC], -[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# _LT_PATH_MAGIC - - -# LT_PATH_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([LT_PATH_LD], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PROG_ECHO_BACKSLASH])dnl - -AC_ARG_WITH([gnu-ld], - [AS_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], - [with_gnu_ld=no])dnl - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break - ;; - *) - test "$with_gnu_ld" != yes && break - ;; - esac - fi - done - IFS="$lt_save_ifs" -else - lt_cv_path_LD="$LD" # Let the user override the test with a path. -fi]) -LD="$lt_cv_path_LD" -if test -n "$LD"; then - AC_MSG_RESULT($LD) -else - AC_MSG_RESULT(no) -fi -test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) -_LT_PATH_LD_GNU -AC_SUBST([LD]) - -_LT_TAGDECL([], [LD], [1], [The linker used to build libraries]) -])# LT_PATH_LD - -# Old names: -AU_ALIAS([AM_PROG_LD], [LT_PATH_LD]) -AU_ALIAS([AC_PROG_LD], [LT_PATH_LD]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_PROG_LD], []) -dnl AC_DEFUN([AC_PROG_LD], []) - - -# _LT_PATH_LD_GNU -#- -------------- -m4_defun([_LT_PATH_LD_GNU], -[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, -[# I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 </dev/null` in -*GNU* | *'with BFD'*) - lt_cv_prog_gnu_ld=yes - ;; -*) - lt_cv_prog_gnu_ld=no - ;; -esac]) -with_gnu_ld=$lt_cv_prog_gnu_ld -])# _LT_PATH_LD_GNU - - -# _LT_CMD_RELOAD -# -------------- -# find reload flag for linker -# -- PORTME Some linkers may need a different reload flag. -m4_defun([_LT_CMD_RELOAD], -[AC_CACHE_CHECK([for $LD option to reload object files], - lt_cv_ld_reload_flag, - [lt_cv_ld_reload_flag='-r']) -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac -_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl -_LT_TAGDECL([], [reload_cmds], [2])dnl -])# _LT_CMD_RELOAD - - -# _LT_CHECK_MAGIC_METHOD -# ---------------------- -# how to check for library dependencies -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_MAGIC_METHOD], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -AC_CACHE_CHECK([how to recognize dependent libraries], -lt_cv_deplibs_check_method, -[lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[[4-9]]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[[45]]*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - -_LT_DECL([], [deplibs_check_method], [1], - [Method to check whether dependent libraries are shared objects]) -_LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method == "file_magic"]) -])# _LT_CHECK_MAGIC_METHOD - - -# LT_PATH_NM -# ---------- -# find the pathname to a BSD- or MS-compatible name lister -AC_DEFUN([LT_PATH_NM], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi]) -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - AC_SUBST([DUMPBIN]) - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl - -AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], - [lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) - cat conftest.out >&AS_MESSAGE_LOG_FD - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest*]) -])# LT_PATH_NM - -# Old names: -AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) -AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_PROG_NM], []) -dnl AC_DEFUN([AC_PROG_NM], []) - - -# LT_LIB_M -# -------- -# check for math library -AC_DEFUN([LT_LIB_M], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM="-lm") - ;; -esac -AC_SUBST([LIBM]) -])# LT_LIB_M - -# Old name: -AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_CHECK_LIBM], []) - - -# _LT_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------- -m4_defun([_LT_COMPILER_NO_RTTI], -[m4_require([_LT_TAG_COMPILER])dnl - -_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; - *) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; - esac - - _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) -])# _LT_COMPILER_NO_RTTI - - -# _LT_CMD_GLOBAL_SYMBOLS -# ---------------------- -m4_defun([_LT_CMD_GLOBAL_SYMBOLS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([LT_PATH_NM])dnl -AC_REQUIRE([LT_PATH_LD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_TAG_COMPILER])dnl - -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris*) - symcode='[[BDRT]]' - ;; -sco3.2v5*) - symcode='[[DT]]' - ;; -sysv4.2uw2*) - symcode='[[DT]]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[[ABDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK ['"\ -" {last_section=section; section=\$ 3};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx]" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[[]] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_save_LIBS="$LIBS" - lt_save_CFLAGS="$CFLAGS" - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS="$lt_save_LIBS" - CFLAGS="$lt_save_CFLAGS" - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi - -_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], - [Take the output of nm and produce a listing of raw symbols and C names]) -_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], - [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) -_LT_DECL([global_symbol_to_c_name_address_lib_prefix], - [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], - [Transform the output of nm in a C name address pair when lib prefix is needed]) -]) # _LT_CMD_GLOBAL_SYMBOLS - - -# _LT_COMPILER_PIC([TAGNAME]) -# --------------------------- -m4_defun([_LT_COMPILER_PIC], -[m4_require([_LT_TAG_COMPILER])dnl -_LT_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_TAGVAR(lt_prog_compiler_static, $1)= - -AC_MSG_CHECKING([for $compiler option to produce PIC]) -m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix[[4-9]]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - dgux*) - case $cc_basename in - ec++*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test "$GCC" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - hpux9* | hpux10* | hpux11*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' - _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - ccc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ F* | *Sun*Fortran*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='' - ;; - *Sun\ C*) - # Sun C 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - esac - ;; - esac - ;; - - newsos6) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - rdos*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - unicos*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" - ;; -esac -AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], - [How to pass a linker flag through the compiler]) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], - [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], - [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], - [Additional compiler flags for building library objects]) - -# -# Check to make sure the static flag actually works. -# -wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" -_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], - _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), - $lt_tmp_static_flag, - [], - [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) -_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], - [Compiler flag to prevent dynamic linking]) -])# _LT_COMPILER_PIC - - -# _LT_LINKER_SHLIBS([TAGNAME]) -# ---------------------------- -# See if the linker supports building shared libraries. -m4_defun([_LT_LINKER_SHLIBS], -[AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -m4_if([$1], [CXX], [ - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - case $host_os in - aix[[4-9]]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; - cygwin* | mingw* | cegcc*) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] -], [ - runpath_var= - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_cmds, $1)= - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(compiler_needs_object, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(old_archive_from_new_cmds, $1)= - _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_TAGVAR(thread_safe_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. -dnl Note also adjust exclude_expsyms for C++ above. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - _LT_TAGVAR(ld_shlibs, $1)=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; - *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[[3-9]]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach <jrb3@best.com> says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag= - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - _LT_TAGVAR(whole_archive_flag_spec, $1)= - tmp_sharedflag='--shared' ;; - xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' - _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - sunos4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then - runpath_var= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - bsdi[[45]]*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' - _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - freebsd1*) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - m4_if($1, [], [ - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - _LT_LINKER_OPTION([if $CC understands -b], - _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], - [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) - ;; - esac - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - AC_LINK_IFELSE(int foo(void) {}, - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - ) - LDFLAGS="$save_LDFLAGS" - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac - fi - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - solaris*) - _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - fi - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' - ;; - esac - fi - fi -]) -AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld - -_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl -_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl -_LT_DECL([], [extract_expsyms_cmds], [2], - [The commands to extract the exported symbol list from a shared archive]) - -# -# Do we need to explicitly link libc? -# -case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $_LT_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_CACHE_CHECK([whether -lc should be explicitly linked in], - [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), - [$RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) - pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) - _LT_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) - then - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no - else - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - ]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) - ;; - esac - fi - ;; -esac - -_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], - [Whether or not to add -lc for building shared libraries]) -_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], - [enable_shared_with_static_runtimes], [0], - [Whether or not to disallow shared libs when runtime libs are static]) -_LT_TAGDECL([], [export_dynamic_flag_spec], [1], - [Compiler flag to allow reflexive dlopens]) -_LT_TAGDECL([], [whole_archive_flag_spec], [1], - [Compiler flag to generate shared objects directly from archives]) -_LT_TAGDECL([], [compiler_needs_object], [1], - [Whether the compiler copes with passing no objects directly]) -_LT_TAGDECL([], [old_archive_from_new_cmds], [2], - [Create an old-style archive from a shared archive]) -_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], - [Create a temporary old-style archive to link instead of a shared archive]) -_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) -_LT_TAGDECL([], [archive_expsym_cmds], [2]) -_LT_TAGDECL([], [module_cmds], [2], - [Commands used to build a loadable module if different from building - a shared archive.]) -_LT_TAGDECL([], [module_expsym_cmds], [2]) -_LT_TAGDECL([], [with_gnu_ld], [1], - [Whether we are building with GNU ld or not]) -_LT_TAGDECL([], [allow_undefined_flag], [1], - [Flag that allows shared libraries with undefined symbols to be built]) -_LT_TAGDECL([], [no_undefined_flag], [1], - [Flag that enforces no undefined symbols]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], - [Flag to hardcode $libdir into a binary during linking. - This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], - [[If ld is used when linking, flag to hardcode $libdir into a binary - during linking. This must work even if $libdir does not exist]]) -_LT_TAGDECL([], [hardcode_libdir_separator], [1], - [Whether we need a single "-rpath" flag with a separated argument]) -_LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary]) -_LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting ${shlibpath_var} if the - library is relocated]) -_LT_TAGDECL([], [hardcode_minus_L], [0], - [Set to "yes" if using the -LDIR flag during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_shlibpath_var], [0], - [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_automatic], [0], - [Set to "yes" if building a shared library automatically hardcodes DIR - into the library and all subsequent libraries and executables linked - against it]) -_LT_TAGDECL([], [inherit_rpath], [0], - [Set to yes if linker adds runtime paths of dependent libraries - to runtime path list]) -_LT_TAGDECL([], [link_all_deplibs], [0], - [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [fix_srcfile_path], [1], - [Fix the shell variable $srcfile for the compiler]) -_LT_TAGDECL([], [always_export_symbols], [0], - [Set to "yes" if exported symbols are required]) -_LT_TAGDECL([], [export_symbols_cmds], [2], - [The commands to list exported symbols]) -_LT_TAGDECL([], [exclude_expsyms], [1], - [Symbols that should not be listed in the preloaded symbols]) -_LT_TAGDECL([], [include_expsyms], [1], - [Symbols that must always be exported]) -_LT_TAGDECL([], [prelink_cmds], [2], - [Commands necessary for linking programs (against libraries) with templates]) -_LT_TAGDECL([], [file_list_spec], [1], - [Specify filename containing input files]) -dnl FIXME: Not yet implemented -dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], -dnl [Compiler flag to generate thread safe objects]) -])# _LT_LINKER_SHLIBS - - -# _LT_LANG_C_CONFIG([TAG]) -# ------------------------ -# Ensure that the configuration variables for a C compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_C_CONFIG], -[m4_require([_LT_DECL_EGREP])dnl -lt_save_CC="$CC" -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - -_LT_TAG_COMPILER -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - LT_SYS_DLOPEN_SELF - _LT_CMD_STRIPLIB - - # Report which library types will actually be built - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_CONFIG($1) -fi -AC_LANG_POP -CC="$lt_save_CC" -])# _LT_LANG_C_CONFIG - - -# _LT_LANG_CXX_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a C++ compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_CXX_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_PROG_CXXCPP -else - _lt_caught_CXX_error=yes -fi - -AC_LANG_PUSH(C++) -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(compiler_needs_object, $1)=no -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - else - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - LT_PATH_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) - _LT_TAGVAR(ld_shlibs, $1)=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - _LT_SYS_MODULE_PATH_AIX - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach <jrb3@best.com> says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - freebsd[[12]]*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - freebsd-elf*) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - gnu*) - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' - fi - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) - _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - case $host in - osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - ;; - *) - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(archive_cmds_need_lc,$1)=yes - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ - '"$_LT_TAGVAR(old_archive_cmds, $1)" - _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - - _LT_TAGVAR(GCC, $1)="$GXX" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - CC=$lt_save_CC - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes - -AC_LANG_POP -])# _LT_LANG_CXX_CONFIG - - -# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) -# --------------------------------- -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -m4_defun([_LT_SYS_HIDDEN_LIBDEPS], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -# Dependencies to place before and after the object being linked: -_LT_TAGVAR(predep_objects, $1)= -_LT_TAGVAR(postdep_objects, $1)= -_LT_TAGVAR(predeps, $1)= -_LT_TAGVAR(postdeps, $1)= -_LT_TAGVAR(compiler_lib_search_path, $1)= - -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -int a; -void foo (void) { a = 0; } -_LT_EOF -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -_LT_EOF -], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer a - a=0 - return - end -_LT_EOF -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -_LT_EOF -]) -dnl Parse the compiler output and extract the necessary -dnl objects, libraries and library flags. -if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case $p in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - else - prev= - fi - - if test "$pre_test_object_deps_done" = no; then - case $p in - -L* | -R*) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" - else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)="${prev}${p}" - else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" - fi - fi - ;; - - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)="$p" - else - _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)="$p" - else - _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$RM -f confest.$objext - -# PORTME: override above test on systems where it is broken -m4_if([$1], [CXX], -[case $host_os in -interix[[3-9]]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - _LT_TAGVAR(predep_objects,$1)= - _LT_TAGVAR(postdep_objects,$1)= - _LT_TAGVAR(postdeps,$1)= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac -]) - -case " $_LT_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac - _LT_TAGVAR(compiler_lib_search_dirs, $1)= -if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi -_LT_TAGDECL([], [compiler_lib_search_dirs], [1], - [The directories searched by this compiler when creating a shared library]) -_LT_TAGDECL([], [predep_objects], [1], - [Dependencies to place before and after the objects being linked to - create a shared library]) -_LT_TAGDECL([], [postdep_objects], [1]) -_LT_TAGDECL([], [predeps], [1]) -_LT_TAGDECL([], [postdeps], [1]) -_LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) -])# _LT_SYS_HIDDEN_LIBDEPS - - -# _LT_LANG_F77_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a Fortran 77 compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_F77_CONFIG], -[AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test "X$F77" = "Xno"; then - _lt_disable_F77=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the F77 compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_F77" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - CC=${F77-"f77"} - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - GCC=$G77 - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$G77" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC="$lt_save_CC" -fi # test "$_lt_disable_F77" != yes - -AC_LANG_POP -])# _LT_LANG_F77_CONFIG - - -# _LT_LANG_FC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for a Fortran compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_FC_CONFIG], -[AC_LANG_PUSH(Fortran) - -if test -z "$FC" || test "X$FC" = "Xno"; then - _lt_disable_FC=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for fc test sources. -ac_ext=${ac_fc_srcext-f} - -# Object file extension for compiled fc test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the FC compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_FC" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - CC=${FC-"f95"} - compiler=$CC - GCC=$ac_cv_fc_compiler_gnu - - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC="$lt_save_CC" -fi # test "$_lt_disable_FC" != yes - -AC_LANG_POP -])# _LT_LANG_FC_CONFIG - - -# _LT_LANG_GCJ_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Java Compiler compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_GCJ_CONFIG], -[AC_REQUIRE([LT_PROG_GCJ])dnl -AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -lt_save_GCC=$GCC -GCC=yes -CC=${GCJ-"gcj"} -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" -_LT_CC_BASENAME([$compiler]) - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC="$lt_save_CC" -])# _LT_LANG_GCJ_CONFIG - - -# _LT_LANG_RC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for the Windows resource compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_RC_CONFIG], -[AC_REQUIRE([LT_PROG_RC])dnl -AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' - -# Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -lt_save_GCC=$GCC -GCC= -CC=${RC-"windres"} -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -if test -n "$compiler"; then - : - _LT_CONFIG($1) -fi - -GCC=$lt_save_GCC -AC_LANG_RESTORE -CC="$lt_save_CC" -])# _LT_LANG_RC_CONFIG - - -# LT_PROG_GCJ -# ----------- -AC_DEFUN([LT_PROG_GCJ], -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])[]dnl -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_GCJ], []) - - -# LT_PROG_RC -# ---------- -AC_DEFUN([LT_PROG_RC], -[AC_CHECK_TOOL(RC, windres,) -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_RC], []) - - -# _LT_DECL_EGREP -# -------------- -# If we don't have a new enough Autoconf to choose the best grep -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_EGREP], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_FGREP])dnl -test -z "$GREP" && GREP=grep -_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -_LT_DECL([], [FGREP], [1], [A literal string matcher]) -dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too -AC_SUBST([GREP]) -]) - - -# _LT_DECL_OBJDUMP -# -------------- -# If we don't have a new enough Autoconf to choose the best objdump -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_OBJDUMP], -[AC_CHECK_TOOL(OBJDUMP, objdump, false) -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) -AC_SUBST([OBJDUMP]) -]) - - -# _LT_DECL_SED -# ------------ -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -m4_defun([_LT_DECL_SED], -[AC_PROG_SED -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], - [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -])# _LT_DECL_SED - -m4_ifndef([AC_PROG_SED], [ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # - -m4_defun([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef - -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_SED], []) - - -# _LT_CHECK_SHELL_FEATURES -# ------------------------ -# Find out whether the shell is Bourne or XSI compatible, -# or has some other useful features. -m4_defun([_LT_CHECK_SHELL_FEATURES], -[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -AC_MSG_RESULT([$xsi_shell]) -_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) - -AC_MSG_CHECKING([whether the shell understands "+="]) -lt_shell_append=no -( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -AC_MSG_RESULT([$lt_shell_append]) -_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi -_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac -_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl -_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl -])# _LT_CHECK_SHELL_FEATURES - - -# _LT_PROG_XSI_SHELLFNS -# --------------------- -# Bourne and XSI compatible variants of some useful shell functions. -m4_defun([_LT_PROG_XSI_SHELLFNS], -[case $xsi_shell in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac -} - -# func_basename file -func_basename () -{ - func_basename_result="${1##*/}" -} - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}" -} - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -func_stripname () -{ - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"} -} - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=${1%%=*} - func_opt_split_arg=${1#*=} -} - -# func_lo2o object -func_lo2o () -{ - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=${1%.*}.lo -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=$(( $[*] )) -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=${#1} -} - -_LT_EOF - ;; - *) # Bourne compatible functions. - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} - -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "${1}" | $SED "$basename"` -} - -dnl func_dirname_and_basename -dnl A portable version of this function is already defined in general.m4sh -dnl so there is no need for it here. - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} - -# sed scripts: -my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q' -my_sed_long_arg='1s/^-[[^=]]*=//' - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"` - func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"` -} - -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "${1}" | $SED 's/\.[[^.]]*$/.lo/'` -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "$[@]"` -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len` -} - -_LT_EOF -esac - -case $lt_shell_append in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$[1]+=\$[2]" -} -_LT_EOF - ;; - *) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$[1]=\$$[1]\$[2]" -} - -_LT_EOF - ;; - esac -]) - -# Helper functions for option handling. -*- Autoconf -*- -# -# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 7 ltoptions.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) - - -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -# ------------------------------------------ -m4_define([_LT_MANGLE_OPTION], -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) - - -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -# --------------------------------------- -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -# matching handler defined, dispatch to it. Other OPTION-NAMEs are -# saved as a flag. -m4_define([_LT_SET_OPTION], -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), - _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option `$2'])])[]dnl -]) - - -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -# ------------------------------------------------------------ -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -m4_define([_LT_IF_OPTION], -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) - - -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -# ------------------------------------------------------- -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -# are set. -m4_define([_LT_UNLESS_OPTIONS], -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), - [m4_define([$0_found])])])[]dnl -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -])[]dnl -]) - - -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -# ---------------------------------------- -# OPTION-LIST is a space-separated list of Libtool options associated -# with MACRO-NAME. If any OPTION has a matching handler declared with -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -# the unknown option and exit. -m4_defun([_LT_SET_OPTIONS], -[# Set options -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [_LT_SET_OPTION([$1], _LT_Option)]) - -m4_if([$1],[LT_INIT],[ - dnl - dnl Simply set some default values (i.e off) if boolean options were not - dnl specified: - _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no - ]) - _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no - ]) - dnl - dnl If no reference was made to various pairs of opposing options, then - dnl we run the default mode handler for the pair. For example, if neither - dnl `shared' nor `disable-shared' was passed, we enable building of shared - dnl archives by default: - _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) - _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) - ]) -])# _LT_SET_OPTIONS - - - -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -# ----------------------------------------- -m4_define([_LT_MANGLE_DEFUN], -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) - - -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -# ----------------------------------------------- -m4_define([LT_OPTION_DEFINE], -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -])# LT_OPTION_DEFINE - - -# dlopen -# ------ -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes -]) - -AU_DEFUN([AC_LIBTOOL_DLOPEN], -[_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `dlopen' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) - - -# win32-dll -# --------- -# Declare package support for building win32 dll's. -LT_OPTION_DEFINE([LT_INIT], [win32-dll], -[enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -esac - -test -z "$AS" && AS=as -_LT_DECL([], [AS], [1], [Assembler program])dnl - -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl - -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl -])# win32-dll - -AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `win32-dll' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) - - -# _LT_ENABLE_SHARED([DEFAULT]) -# ---------------------------- -# implement the --enable-shared flag, and supports the `shared' and -# `disable-shared' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_SHARED], -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) - - _LT_DECL([build_libtool_libs], [enable_shared], [0], - [Whether or not to build shared libraries]) -])# _LT_ENABLE_SHARED - -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -]) - -AC_DEFUN([AC_DISABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) - -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_SHARED], []) -dnl AC_DEFUN([AM_DISABLE_SHARED], []) - - - -# _LT_ENABLE_STATIC([DEFAULT]) -# ---------------------------- -# implement the --enable-static flag, and support the `static' and -# `disable-static' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_STATIC], -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_static=]_LT_ENABLE_STATIC_DEFAULT) - - _LT_DECL([build_old_libs], [enable_static], [0], - [Whether or not to build static libraries]) -])# _LT_ENABLE_STATIC - -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) -]) - -AC_DEFUN([AC_DISABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], [disable-static]) -]) - -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_STATIC], []) -dnl AC_DEFUN([AM_DISABLE_STATIC], []) - - - -# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -# ---------------------------------- -# implement the --enable-fast-install flag, and support the `fast-install' -# and `disable-fast-install' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_FAST_INSTALL], -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) - -_LT_DECL([fast_install], [enable_fast_install], [0], - [Whether or not to optimize for fast installation])dnl -])# _LT_ENABLE_FAST_INSTALL - -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) - -# Old names: -AU_DEFUN([AC_ENABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `fast-install' option into LT_INIT's first parameter.]) -]) - -AU_DEFUN([AC_DISABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `disable-fast-install' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) - - -# _LT_WITH_PIC([MODE]) -# -------------------- -# implement the --with-pic flag, and support the `pic-only' and `no-pic' -# LT_INIT options. -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -m4_define([_LT_WITH_PIC], -[AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [pic_mode="$withval"], - [pic_mode=default]) - -test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) - -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -])# _LT_WITH_PIC - -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) - -# Old name: -AU_DEFUN([AC_LIBTOOL_PICMODE], -[_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `pic-only' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) - - -m4_define([_LTDL_MODE], []) -LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], - [m4_define([_LTDL_MODE], [nonrecursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [recursive], - [m4_define([_LTDL_MODE], [recursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [subproject], - [m4_define([_LTDL_MODE], [subproject])]) - -m4_define([_LTDL_TYPE], []) -LT_OPTION_DEFINE([LTDL_INIT], [installable], - [m4_define([_LTDL_TYPE], [installable])]) -LT_OPTION_DEFINE([LTDL_INIT], [convenience], - [m4_define([_LTDL_TYPE], [convenience])]) - -# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 6 ltsugar.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) - - -# lt_join(SEP, ARG1, [ARG2...]) -# ----------------------------- -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -# associated separator. -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -# versions in m4sugar had bugs. -m4_define([lt_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -m4_define([_lt_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) - - -# lt_car(LIST) -# lt_cdr(LIST) -# ------------ -# Manipulate m4 lists. -# These macros are necessary as long as will still need to support -# Autoconf-2.59 which quotes differently. -m4_define([lt_car], [[$1]]) -m4_define([lt_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) -m4_define([lt_unquote], $1) - - -# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. -# Note that neither SEPARATOR nor STRING are expanded; they are appended -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -# No SEPARATOR is output if MACRO-NAME was previously undefined (different -# than defined and empty). -# -# This macro is needed until we can rely on Autoconf 2.62, since earlier -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -m4_define([lt_append], -[m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) - - - -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -# ---------------------------------------------------------- -# Produce a SEP delimited list of all paired combinations of elements of -# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -# has the form PREFIXmINFIXSUFFIXn. -# Needed until we can rely on m4_combine added in Autoconf 2.62. -m4_define([lt_combine], -[m4_if(m4_eval([$# > 3]), [1], - [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -[[m4_foreach([_Lt_prefix], [$2], - [m4_foreach([_Lt_suffix], - ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, - [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) - - -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -# ----------------------------------------------------------------------- -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -m4_define([lt_if_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], - [lt_append([$1], [$2], [$3])$4], - [$5])], - [lt_append([$1], [$2], [$3])$4])]) - - -# lt_dict_add(DICT, KEY, VALUE) -# ----------------------------- -m4_define([lt_dict_add], -[m4_define([$1($2)], [$3])]) - - -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -# -------------------------------------------- -m4_define([lt_dict_add_subkey], -[m4_define([$1($2:$3)], [$4])]) - - -# lt_dict_fetch(DICT, KEY, [SUBKEY]) -# ---------------------------------- -m4_define([lt_dict_fetch], -[m4_ifval([$3], - m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), - m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) - - -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------------------- -m4_define([lt_if_dict_fetch], -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], - [$5], - [$6])]) - - -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -# -------------------------------------------------------------- -m4_define([lt_dict_filter], -[m4_if([$5], [], [], - [lt_join(m4_quote(m4_default([$4], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), - [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -]) - -# ltversion.m4 -- version numbers -*- Autoconf -*- -# -# Copyright (C) 2004 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# Generated from ltversion.in. - -# serial 3175 ltversion.m4 -# This file is part of GNU Libtool - -m4_define([LT_PACKAGE_VERSION], [2.2.10]) -m4_define([LT_PACKAGE_REVISION], [1.3175]) - -AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.2.10' -macro_revision='1.3175' -_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) -_LT_DECL(, macro_revision, 0) -]) - -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004. -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 5 lt~obsolete.m4 - -# These exist entirely to fool aclocal when bootstrapping libtool. -# -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) -# which have later been changed to m4_define as they aren't part of the -# exported API, or moved to Autoconf or Automake where they belong. -# -# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us -# using a macro with the same name in our local m4/libtool.m4 it'll -# pull the old libtool.m4 in (it doesn't see our shiny new m4_define -# and doesn't know about Autoconf macros at all.) -# -# So we provide this file, which has a silly filename so it's always -# included after everything else. This provides aclocal with the -# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything -# because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. -# -# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. -# Yes, that means every name once taken will need to remain here until -# we give up compatibility with versions before 1.7, at which point -# we need to keep only those names which we still refer to. - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) - -m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) -m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) -m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) -m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) -m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) -m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) -m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) -m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) -m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) -m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) -m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) -m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) -m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) -m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) -m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) -m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) -m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) -m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) -m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) -m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) -m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) -m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) -m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) -m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) -m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) -m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) -m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) -m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) -m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) -m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) -m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) -m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) -m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) -m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) -m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) -m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) -m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) -m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) -m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) -m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) -m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) -m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) -m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) -m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) -m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) -m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) -m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) -m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) - -# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -# serial 1 (pkg-config-0.24) -# -# Copyright © 2004 Scott James Remnant <scott@netsplit.com>. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# PKG_PROG_PKG_CONFIG([MIN-VERSION]) -# ---------------------------------- -AC_DEFUN([PKG_PROG_PKG_CONFIG], -[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) -m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) -AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) -AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) -AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) - -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) -fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=m4_default([$1], [0.9.0]) - AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - PKG_CONFIG="" - fi -fi[]dnl -])# PKG_PROG_PKG_CONFIG - -# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -# -# Check to see whether a particular set of modules exists. Similar -# to PKG_CHECK_MODULES(), but does not set variables or print errors. -# -# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -# only at the first occurence in configure.ac, so if the first place -# it's called might be skipped (such as if it is within an "if", you -# have to call PKG_CHECK_EXISTS manually -# -------------------------------------------------------------- -AC_DEFUN([PKG_CHECK_EXISTS], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -if test -n "$PKG_CONFIG" && \ - AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then - m4_default([$2], [:]) -m4_ifvaln([$3], [else - $3])dnl -fi]) - -# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) -# --------------------------------------------- -m4_define([_PKG_CONFIG], -[if test -n "$$1"; then - pkg_cv_[]$1="$$1" - elif test -n "$PKG_CONFIG"; then - PKG_CHECK_EXISTS([$3], - [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], - [pkg_failed=yes]) - else - pkg_failed=untried -fi[]dnl -])# _PKG_CONFIG - -# _PKG_SHORT_ERRORS_SUPPORTED -# ----------------------------- -AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi[]dnl -])# _PKG_SHORT_ERRORS_SUPPORTED - - -# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], -# [ACTION-IF-NOT-FOUND]) -# -# -# Note that if there is a possibility the first call to -# PKG_CHECK_MODULES might not happen, you should be sure to include an -# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac -# -# -# -------------------------------------------------------------- -AC_DEFUN([PKG_CHECK_MODULES], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl -AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl - -pkg_failed=no -AC_MSG_CHECKING([for $1]) - -_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) -_PKG_CONFIG([$1][_LIBS], [libs], [$2]) - -m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS -and $1[]_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details.]) - -if test $pkg_failed = yes; then - AC_MSG_RESULT([no]) - _PKG_SHORT_ERRORS_SUPPORTED - if test $_pkg_short_errors_supported = yes; then - $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1` - else - $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD - - m4_default([$4], [AC_MSG_ERROR( -[Package requirements ($2) were not met: - -$$1_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -_PKG_TEXT])[]dnl - ]) -elif test $pkg_failed = untried; then - AC_MSG_RESULT([no]) - m4_default([$4], [AC_MSG_FAILURE( -[The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -_PKG_TEXT - -To get pkg-config, see <http://pkg-config.freedesktop.org/>.])dnl - ]) -else - $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS - $1[]_LIBS=$pkg_cv_[]$1[]_LIBS - AC_MSG_RESULT([yes]) - $3 -fi[]dnl -])# PKG_CHECK_MODULES - -# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -# (This private macro should not be called outside this file.) -AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.11' -dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to -dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.1], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) - -# _AM_AUTOCONF_VERSION(VERSION) -# ----------------------------- -# aclocal traces this macro to find the Autoconf version. -# This is a private macro too. Using m4_define simplifies -# the logic in aclocal, which can simply ignore this definition. -m4_define([_AM_AUTOCONF_VERSION], []) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11.1])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 9 - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 10 - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], UPC, [depcc="$UPC" am_compiler_list=], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -#serial 5 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[{ - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - - -# Copyright (C) 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 3 - -AC_DEFUN([AM_WITH_DMALLOC], -[AC_MSG_CHECKING([if malloc debugging is wanted]) -AC_ARG_WITH(dmalloc, -[ --with-dmalloc use dmalloc, as in - http://www.dmalloc.com/dmalloc.tar.gz], -[if test "$withval" = yes; then - AC_MSG_RESULT(yes) - AC_DEFINE(WITH_DMALLOC,1, - [Define if using the dmalloc debugging malloc package]) - LIBS="$LIBS -ldmalloc" - LDFLAGS="$LDFLAGS -g" -else - AC_MSG_RESULT(no) -fi], [AC_MSG_RESULT(no)]) -]) - -AU_DEFUN([fp_WITH_DMALLOC], [AM_WITH_DMALLOC]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 16 - -# This macro actually does too much. Some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.62])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl -]) -_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl -dnl The `parallel-tests' driver may need to know about EXEEXT, so add the -dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro -dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. -AC_CONFIG_COMMANDS_PRE(dnl -[m4_provide_if([_AM_COMPILER_EXEEXT], - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl -]) - -dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not -dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further -dnl mangled by Autoconf and run in a shell conditional statement. -m4_define([_AC_COMPILER_EXEEXT], -m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi -AC_SUBST(install_sh)]) - -# Copyright (C) 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- -# From Jim Meyering - -# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 5 - -# AM_MAINTAINER_MODE([DEFAULT-MODE]) -# ---------------------------------- -# Control maintainer-specific portions of Makefiles. -# Default is to disable them, unless `enable' is passed literally. -# For symmetry, `disable' may be passed as well. Anyway, the user -# can override the default with the --enable/--disable switch. -AC_DEFUN([AM_MAINTAINER_MODE], -[m4_case(m4_default([$1], [disable]), - [enable], [m4_define([am_maintainer_other], [disable])], - [disable], [m4_define([am_maintainer_other], [enable])], - [m4_define([am_maintainer_other], [enable]) - m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) -AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles]) - dnl maintainer-mode's default is 'disable' unless 'enable' is passed - AC_ARG_ENABLE([maintainer-mode], -[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful - (and sometimes confusing) to the casual installer], - [USE_MAINTAINER_MODE=$enableval], - [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) - AC_MSG_RESULT([$USE_MAINTAINER_MODE]) - AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) - MAINT=$MAINTAINER_MODE_TRUE - AC_SUBST([MAINT])dnl -] -) - -AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 6 - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) -fi -]) - -# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_MKDIR_P -# --------------- -# Check for `mkdir -p'. -AC_DEFUN([AM_PROG_MKDIR_P], -[AC_PREREQ([2.60])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, -dnl while keeping a definition of mkdir_p for backward compatibility. -dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. -dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of -dnl Makefile.ins that do not define MKDIR_P, so we do our own -dnl adjustment using top_builddir (which is defined more often than -dnl MKDIR_P). -AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl -case $mkdir_p in - [[\\/$]]* | ?:[[\\/]]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# ------------------------------ -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) - -# _AM_SET_OPTIONS(OPTIONS) -# ---------------------------------- -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2005, 2006 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 5 - -AC_DEFUN([AM_C_PROTOTYPES], -[AC_REQUIRE([AC_C_PROTOTYPES]) -if test "$ac_cv_prog_cc_stdc" != no; then - U= ANSI2KNR= -else - U=_ ANSI2KNR=./ansi2knr -fi -# Ensure some checks needed by ansi2knr itself. -AC_REQUIRE([AC_HEADER_STDC]) -AC_CHECK_HEADERS([string.h]) -AC_SUBST([U])dnl -AC_SUBST([ANSI2KNR])dnl -_AM_SUBST_NOTMAKE([ANSI2KNR])dnl -]) - -AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES]) - -# Check to make sure that the build environment is sane. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 5 - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; -esac -case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; -esac - -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT(yes)]) - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_STRIP -# --------------------- -# One issue with vendor `install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Copyright (C) 2006, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of `v7', `ustar', or `pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. -AM_MISSING_PROG([AMTAR], [tar]) -m4_if([$1], [v7], - [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar <conftest.tar]) - grep GrepMe conftest.dir/file >/dev/null 2>&1 && break - fi -done -rm -rf conftest.dir - -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - -m4_include([acinclude.m4]) diff --git a/platform/win32/msvc/external/lame/configMS.h b/platform/win32/msvc/external/lame/configMS.h deleted file mode 100644 index b533a1e48cd..00000000000 --- a/platform/win32/msvc/external/lame/configMS.h +++ /dev/null @@ -1,120 +0,0 @@ -#ifndef CONFIGMS_H_INCLUDED -#define CONFIGMS_H_INCLUDED - -/* The number of bytes in a double. */ -#define SIZEOF_DOUBLE 8 - -/* The number of bytes in a float. */ -#define SIZEOF_FLOAT 4 - -/* The number of bytes in a int. */ -#define SIZEOF_INT 4 - -/* The number of bytes in a long. */ -#define SIZEOF_LONG 4 - -/* The number of bytes in a long double. */ -#define SIZEOF_LONG_DOUBLE 12 - -/* The number of bytes in a short. */ -#define SIZEOF_SHORT 2 - -/* The number of bytes in a unsigned int. */ -#define SIZEOF_UNSIGNED_INT 4 - -/* The number of bytes in a unsigned long. */ -#define SIZEOF_UNSIGNED_LONG 4 - -/* The number of bytes in a unsigned short. */ -#define SIZEOF_UNSIGNED_SHORT 2 - -/* Define if you have the ANSI C header files. */ -#define STDC_HEADERS - -/* Define if you have the <errno.h> header file. */ -#define HAVE_ERRNO_H - -/* Define if you have the <fcntl.h> header file. */ -#define HAVE_FCNTL_H - -/* Define if you have the <limits.h> header file. */ -#define HAVE_LIMITS_H - -/* Name of package */ -#define PACKAGE "lame" - -/* Define if compiler has function prototypes */ -#define PROTOTYPES 1 - -/* faster log implementation with less but enough precission */ -#define USE_FAST_LOG 1 - -#define HAVE_STRCHR -#define HAVE_MEMCPY - -#if defined(_MSC_VER) || defined(__BORLANDC__) -#pragma warning( disable : 4305 ) - typedef __int8 int8_t; - typedef __int16 int16_t; - typedef __int32 int32_t; - typedef __int64 int64_t; - - typedef unsigned __int8 uint8_t; - typedef unsigned __int16 uint16_t; - typedef unsigned __int32 uint32_t; - typedef unsigned __int64 uint64_t; - - typedef float float32_t; - typedef double float64_t; -#elif defined (__GNUC__) -#define __int8_t_defined -#define uint8_t unsigned char -#define uint16_t unsigned short -#define uint32_t unsigned int -#define uint64_t unsigned long long - -#define int8_t signed char -#define int16_t signed short -#define int32_t signed int -#define int64_t signed long long -#endif - -typedef long double ieee854_float80_t; -typedef double ieee754_float64_t; -typedef float ieee754_float32_t; - -#ifdef HAVE_MPGLIB -# define DECODE_ON_THE_FLY 1 -#endif - -#ifdef LAME_ACM -/* memory hacking for driver purposes */ -#define calloc(x,y) acm_Calloc(x,y) -#define free(x) acm_Free(x) -#define malloc(x) acm_Malloc(x) - -#include <stddef.h> -void *acm_Calloc( size_t num, size_t size ); -void *acm_Malloc( size_t size ); -void acm_Free( void * mem); -#endif /* LAME_ACM */ - -#define LAME_LIBRARY_BUILD - - -#ifdef HAVE_NASM - #if (defined(__ICL) && (__ICL >= 450)) - #define HAVE_XMMINTRIN_H - #elif defined(_MSC_VER) - #include <malloc.h> - #ifdef _mm_malloc - #define HAVE_XMMINTRIN_H - #endif - #endif -#endif - -#if defined(_M_X64) && !defined(HAVE_XMMINTRIN_H) - #define HAVE_XMMINTRIN_H -#endif - -#endif diff --git a/platform/win32/msvc/external/lame/configure b/platform/win32/msvc/external/lame/configure deleted file mode 100644 index 87aef96c03d..00000000000 --- a/platform/win32/msvc/external/lame/configure +++ /dev/null @@ -1,18697 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for lame 3.99.5. -# -# Report bugs to <lame-dev@lists.sf.net>. -# -# -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software -# Foundation, Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1 - - test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - # We cannot yet assume a decent shell, so we have to provide a - # neutralization value for shells without unset; and this also - # works around shells that cannot unset nonexistent variables. - # Preserve -v and -x to the replacement shell. - BASH_ENV=/dev/null - ENV=/dev/null - (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV - export CONFIG_SHELL - case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; - esac - exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org and -$0: lame-dev@lists.sf.net about your system, including any -$0: error possibly output before this message. Then install -$0: a modern shell, or manually run the script under such a -$0: shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - -SHELL=${CONFIG_SHELL-/bin/sh} - - -test -n "$DJDIR" || exec 7<&0 </dev/null -exec 6>&1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='lame' -PACKAGE_TARNAME='lame' -PACKAGE_VERSION='3.99.5' -PACKAGE_STRING='lame 3.99.5' -PACKAGE_BUGREPORT='lame-dev@lists.sf.net' -PACKAGE_URL='' - -ac_unique_file="libmp3lame/lame.c" -# Factoring default headers for most tests. -ac_includes_default="\ -#include <stdio.h> -#ifdef HAVE_SYS_TYPES_H -# include <sys/types.h> -#endif -#ifdef HAVE_SYS_STAT_H -# include <sys/stat.h> -#endif -#ifdef STDC_HEADERS -# include <stdlib.h> -# include <stddef.h> -#else -# ifdef HAVE_STDLIB_H -# include <stdlib.h> -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include <memory.h> -# endif -# include <string.h> -#endif -#ifdef HAVE_STRINGS_H -# include <strings.h> -#endif -#ifdef HAVE_INTTYPES_H -# include <inttypes.h> -#endif -#ifdef HAVE_STDINT_H -# include <stdint.h> -#endif -#ifdef HAVE_UNISTD_H -# include <unistd.h> -#endif" - -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIBOBJS -CONFIG_DEFS -CPUCCODE -CPUTYPE -WITH_MP3RTP -WITH_MP3X -WITH_FRONTEND -RM_F -MAKEDEP -NASM_FORMAT -LIB_MINOR_VERSION -LIB_MAJOR_VERSION -LDADD -CONFIG_MATH_LIB -FRONTEND_LDADD -FRONTEND_CFLAGS -FRONTEND_LDFLAGS -INCLUDES -HAVE_NASM_FALSE -HAVE_NASM_TRUE -NASM -WITH_VECTOR_FALSE -WITH_VECTOR_TRUE -WITH_XMM_FALSE -WITH_XMM_TRUE -LIB_WITH_DECODER_FALSE -LIB_WITH_DECODER_TRUE -SNDFILE_LIBS -SNDFILE_CFLAGS -PKG_CONFIG_LIBDIR -PKG_CONFIG_PATH -PKG_CONFIG -GTK_LIBS -GTK_CFLAGS -GTK_CONFIG -LTLIBICONV -LIBICONV -ALLOCA -ANSI2KNR -U -LIBTOOL_DEPS -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -RANLIB -AR -OBJDUMP -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -SED -LIBTOOL -EGREP -GREP -CPP -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -DEPDIR -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -am__quote -am__include -MAINT -MAINTAINER_MODE_FALSE -MAINTAINER_MODE_TRUE -am__untar -am__tar -AMTAR -am__leading_dot -SET_MAKE -AWK -mkdir_p -MKDIR_P -INSTALL_STRIP_PROGRAM -STRIP -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -am__isrc -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_maintainer_mode -enable_dependency_tracking -enable_shared -enable_static -with_pic -enable_fast_install -with_gnu_ld -enable_libtool_lock -with_dmalloc -enable_largefile -enable_nasm -with_gnu_ld -enable_rpath -with_libiconv_prefix -enable_cpml -with_gtk_prefix -with_gtk_exec_prefix -enable_gtktest -enable_efence -with_fileio -enable_analyzer_hooks -enable_decoder -enable_frontend -enable_mp3x -enable_mp3rtp -enable_dynamic_frontends -enable_expopt -enable_debug -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CPP -CPPFLAGS -CC -LDFLAGS -LIBS -CPPFLAGS -PKG_CONFIG -PKG_CONFIG_PATH -PKG_CONFIG_LIBDIR -SNDFILE_CFLAGS -SNDFILE_LIBS' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used" >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures lame 3.99.5 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/lame] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of lame 3.99.5:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) - --disable-largefile omit support for large files - --enable-nasm Allow the use of nasm if available - --disable-rpath do not hardcode runtime library paths - --disable-cpml Do not use Compaq's fast Math Library - --disable-gtktest Do not try to compile and run a test GTK program - --enable-efence Use ElectricFence for malloc debugging - --disable-analyzer-hooks Exclude analyzer hooks - --disable-decoder Exclude mpg123 decoder - --disable-frontend Do not build the lame executable default=build - --enable-mp3x Build GTK frame analyzer default=no - --enable-mp3rtp Build mp3rtp default=no - --enable-dynamic-frontends Link frontends against shared libraries default=no - --enable-expopt=full,norm Whether to enable experimental optimizations - default=no - --enable-debug=alot,norm Enable debugging (disables optimizations) - default=no - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-pic try to use only PIC/non-PIC objects [default=use - both] - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-dmalloc use dmalloc, as in - http://www.dmalloc.com/dmalloc.tar.gz - --with-gnu-ld assume the C compiler uses GNU ld default=no - --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib - --without-libiconv-prefix don't search for libiconv in includedir and libdir - --with-gtk-prefix=PFX Prefix where GTK is installed (optional) - --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional) - --with-fileio=lame Use lame's internal file io routines default - =sndfile Use Erik de Castro Lopo's libsndfile - (no stdin possible currently) - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a - nonstandard directory <lib dir> - LIBS libraries to pass to the linker, e.g. -l<library> - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if - you have headers in a nonstandard directory <include dir> - CPP C preprocessor - PKG_CONFIG path to pkg-config utility - PKG_CONFIG_PATH - directories to add to pkg-config's search path - PKG_CONFIG_LIBDIR - path overriding pkg-config's built-in search path - SNDFILE_CFLAGS - C compiler flags for SNDFILE, overriding pkg-config - SNDFILE_LIBS - linker flags for SNDFILE, overriding pkg-config - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to <lame-dev@lists.sf.net>. -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -lame configure 3.99.5 -generated by GNU Autoconf 2.68 - -Copyright (C) 2010 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ------------------------------------ ## -## Report this to lame-dev@lists.sf.net ## -## ------------------------------------ ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case <limits.h> declares $2. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES -# -------------------------------------------- -# Tries to find the compile-time value of EXPR in a program that includes -# INCLUDES, setting VAR accordingly. Returns whether the value could be -# computed -ac_fn_c_compute_int () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) >= 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_lo=0 ac_mid=0 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=$ac_mid; break -else - as_fn_arith $ac_mid + 1 && ac_lo=$as_val - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) < 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=-1 ac_mid=-1 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) >= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_lo=$ac_mid; break -else - as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - ac_lo= ac_hi= -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=$ac_mid -else - as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in #(( -?*) eval "$3=\$ac_lo"; ac_retval=0 ;; -'') ac_retval=1 ;; -esac - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -static long int longval () { return $2; } -static unsigned long int ulongval () { return $2; } -#include <stdio.h> -#include <stdlib.h> -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - return 1; - if (($2) < 0) - { - long int i = longval (); - if (i != ($2)) - return 1; - fprintf (f, "%ld", i); - } - else - { - unsigned long int i = ulongval (); - if (i != ($2)) - return 1; - fprintf (f, "%lu", i); - } - /* Do not output a trailing newline, as this causes \r\n confusion - on some platforms. */ - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - echo >>conftest.val; read $3 <conftest.val; ac_retval=0 -else - ac_retval=1 -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -rm -f conftest.val - - fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_compute_int - -# ac_fn_c_check_type LINENO TYPE VAR INCLUDES -# ------------------------------------------- -# Tests whether TYPE exists after having included INCLUDES, setting cache -# variable VAR accordingly. -ac_fn_c_check_type () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof ($2)) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof (($2))) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - eval "$3=yes" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_type -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by lame $as_me 3.99.5, which was -generated by GNU Autoconf 2.68. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - - -am__api_version='1.11' - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; -esac -case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; -esac - -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken -alias in your environment" "$LINENO" 5 - fi - - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error $? "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -fi - -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - -fi - - test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - MKDIR_P="$ac_install_sh -d" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } - -mkdir_p="$MKDIR_P" -case $mkdir_p in - [\\/$]* | ?:[\\/]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE='lame' - VERSION='3.99.5' - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. - -AMTAR=${AMTAR-"${am_missing_run}tar"} - -am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' - - - - - -ac_config_headers="$ac_config_headers config.h" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 -$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } - # Check whether --enable-maintainer-mode was given. -if test "${enable_maintainer_mode+set}" = set; then : - enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval -else - USE_MAINTAINER_MODE=no -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 -$as_echo "$USE_MAINTAINER_MODE" >&6; } - if test $USE_MAINTAINER_MODE = yes; then - MAINTAINER_MODE_TRUE= - MAINTAINER_MODE_FALSE='#' -else - MAINTAINER_MODE_TRUE='#' - MAINTAINER_MODE_FALSE= -fi - - MAINT=$MAINTAINER_MODE_TRUE - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - - -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -# Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <stdio.h> -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <stdarg.h> -#include <stdio.h> -#include <sys/types.h> -#include <sys/stat.h> -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <ac_nonexistent.h> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <ac_nonexistent.h> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <stdlib.h> -#include <stdarg.h> -#include <string.h> -#include <float.h> - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <string.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <stdlib.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <ctype.h> -#include <stdlib.h> -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" -if test "x$ac_cv_header_minix_config_h" = xyes; then : - MINIX=yes -else - MINIX= -fi - - - if test "$MINIX" = yes; then - -$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h - - -$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h - - -$as_echo "#define _MINIX 1" >>confdefs.h - - fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 -$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } -if ${ac_cv_safe_to_define___extensions__+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -# define __EXTENSIONS__ 1 - $ac_includes_default -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_safe_to_define___extensions__=yes -else - ac_cv_safe_to_define___extensions__=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 -$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } - test $ac_cv_safe_to_define___extensions__ = yes && - $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h - - $as_echo "#define _ALL_SOURCE 1" >>confdefs.h - - $as_echo "#define _GNU_SOURCE 1" >>confdefs.h - - $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h - - $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 -$as_echo_n "checking for library containing strerror... " >&6; } -if ${ac_cv_search_strerror+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char strerror (); -int -main () -{ -return strerror (); - ; - return 0; -} -_ACEOF -for ac_lib in '' cposix; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_strerror=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_strerror+:} false; then : - break -fi -done -if ${ac_cv_search_strerror+:} false; then : - -else - ac_cv_search_strerror=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 -$as_echo "$ac_cv_search_strerror" >&6; } -ac_res=$ac_cv_search_strerror -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - - -case $host_os in - *cygwin* ) CYGWIN=yes;; - * ) CYGWIN=no;; -esac - -# AC_DISABLE_SHARED -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.2.10' -macro_revision='1.3175' - - - - - - - - - - - - - -ltmain="$ac_aux_dir/ltmain.sh" - -# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } -# Test print first, because it will be a builtin if present. -if test "X`print -r -- -n 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "" -} - -case "$ECHO" in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; -esac - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break - ;; - *) - test "$with_gnu_ld" != yes && break - ;; - esac - fi - done - IFS="$lt_save_ifs" -else - lt_cv_path_LD="$LD" # Let the user override the test with a path. -fi -fi - -LD="$lt_cv_path_LD" -if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 </dev/null` in -*GNU* | *'with BFD'*) - lt_cv_prog_gnu_ld=yes - ;; -*) - lt_cv_prog_gnu_ld=no - ;; -esac -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - if test -n "$ac_tool_prefix"; then - for ac_prog in dumpbin "link -dump" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n $lt_cv_sys_max_cmd_len ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 -$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 -$as_echo "$xsi_shell" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } -lt_shell_append=no -( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 -$as_echo "$lt_shell_append" >&6; } - - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. -set dummy ${ac_tool_prefix}ar; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AR="${ac_tool_prefix}ar" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_AR"; then - ac_ct_AR=$AR - # Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_AR="ar" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -else - AR="$ac_cv_prog_AR" -fi - -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_save_LIBS="$LIBS" - lt_save_CFLAGS="$CFLAGS" - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS="$lt_save_LIBS" - CFLAGS="$lt_save_CFLAGS" - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } -fi - - - - - - - - - - - - - - - - - - - - - - -# Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 - echo "$RANLIB libconftest.a" >&5 - $RANLIB libconftest.a 2>&5 - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&5 - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - - - -# Set options - - - - enable_dlopen=no - - - enable_win32_dll=no - - - # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - - # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_static=yes -fi - - - - - - - - - - -# Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; pic_mode="$withval" -else - pic_mode=default -fi - - -test -z "$pic_mode" && pic_mode=default - - - - - - - - # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC="$CC" -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; - *) - lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } - - if test "$GCC" = yes; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - lt_prog_compiler_pic='-Xcompiler -fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ F* | *Sun*Fortran*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 -$as_echo "$lt_prog_compiler_pic" >&6; } - - - - - - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works" = xyes; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test x"$lt_cv_prog_compiler_static_works" = xyes; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; - *\ \(GNU\ Binutils\)\ [3-9]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach <jrb3@best.com> says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='${wl}--export-all-symbols' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag= - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld='-rpath $libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = no; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - fi - archive_cmds_need_lc=yes - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w "$srcfile"`' - enable_shared_with_static_runtimes=yes - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - whole_archive_flag_spec='' - fi - link_all_deplibs=yes - allow_undefined_flag="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - freebsd1*) - ld_shlibs=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld='+b $libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler__b=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -b" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler__b=yes - fi - else - lt_cv_prog_compiler__b=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } - -if test x"$lt_cv_prog_compiler__b" = xyes; then - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -fi - - ;; - esac - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo(void) {} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='${wl}-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='${wl}-z,text' - allow_undefined_flag='${wl}-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='${wl}-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test "$ld_shlibs" = no && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } - archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([A-Za-z]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib<name>.so - # instead of lib<name>.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[123]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test "X$hardcode_automatic" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test "$hardcode_action" = relink || - test "$inherit_rpath" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -void fnord () __attribute__((visibility("default"))); -#endif - -void fnord () { int i=42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -void fnord () __attribute__((visibility("default"))); -#endif - -void fnord () { int i=42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report which library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC="$lt_save_CC" - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - - -CFLAGS="${ac_save_CFLAGS}" - -# increase this when the shared lib becomes totally incompatible -LIB_MAJOR_VERSION=0 - -# increase this when changes are made, but they are upward compatible -# to previous versions -LIB_MINOR_VERSION=0 - -if test "${ac_cv_cygwin}" = "yes"; then - if test "${CC}" != "gcc"; then - as_fn_error $? "Please use - CC=gcc ./configure - Abort this configure run and add \"CC=gcc\" or you will - see errors and no lame.exe will be build." "$LINENO" 5 - fi -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <stdarg.h> -#include <stdio.h> -#include <sys/types.h> -#include <sys/stat.h> -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - - -if test "${GCC}" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of GCC" >&5 -$as_echo_n "checking version of GCC... " >&6; } - GCC_version=`${CC} --version | sed -n '1s/^[^ ]* (.*) //;s/ .*$//;1p'` - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${GCC_version}" >&5 -$as_echo "${GCC_version}" >&6; } -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for function prototypes" >&5 -$as_echo_n "checking for function prototypes... " >&6; } -if test "$ac_cv_prog_cc_c89" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -$as_echo "#define PROTOTYPES 1" >>confdefs.h - - -$as_echo "#define __PROTOTYPES 1" >>confdefs.h - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -if test "$ac_cv_prog_cc_stdc" != no; then - U= ANSI2KNR= -else - U=_ ANSI2KNR=./ansi2knr -fi -# Ensure some checks needed by ansi2knr itself. - -for ac_header in string.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default" -if test "x$ac_cv_header_string_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STRING_H 1 -_ACEOF - -fi - -done - - - -ac_fn_c_check_header_mongrel "$LINENO" "dmalloc.h" "ac_cv_header_dmalloc_h" "$ac_includes_default" -if test "x$ac_cv_header_dmalloc_h" = xyes; then : - -fi - - -if test "${ac_cv_header_dmalloc_h}" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if malloc debugging is wanted" >&5 -$as_echo_n "checking if malloc debugging is wanted... " >&6; } - -# Check whether --with-dmalloc was given. -if test "${with_dmalloc+set}" = set; then : - withval=$with_dmalloc; if test "$withval" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -$as_echo "#define WITH_DMALLOC 1" >>confdefs.h - - LIBS="$LIBS -ldmalloc" - LDFLAGS="$LDFLAGS -g" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <stdlib.h> -#include <stdarg.h> -#include <string.h> -#include <float.h> - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <string.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <stdlib.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <ctype.h> -#include <stdlib.h> -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -for ac_header in \ - errno.h \ - fcntl.h \ - limits.h \ - stdint.h \ - string.h \ - sys/soundcard.h \ - sys/time.h \ - unistd.h \ - xmmintrin.h \ - linux/soundcard.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 -$as_echo_n "checking for an ANSI C-conforming const... " >&6; } -if ${ac_cv_c_const+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -/* FIXME: Include the comments suggested by Paul. */ -#ifndef __cplusplus - /* Ultrix mips cc rejects this. */ - typedef int charset[2]; - const charset cs; - /* SunOS 4.1.1 cc rejects this. */ - char const *const *pcpcc; - char **ppc; - /* NEC SVR4.0.2 mips cc rejects this. */ - struct point {int x, y;}; - static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in - an arm of an if-expression whose if-part is not a constant - expression */ - const char *g = "string"; - pcpcc = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++pcpcc; - ppc = (char**) pcpcc; - pcpcc = (char const *const *) ppc; - { /* SCO 3.2v4 cc rejects this. */ - char *t; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - if (s) return 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* AIX XL C 1.02.0.0 rejects this saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; }; - struct s *b; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - if (!foo) return 0; - } - return !cs[0] && !zero.x; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_const=yes -else - ac_cv_c_const=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 -$as_echo "$ac_cv_c_const" >&6; } -if test $ac_cv_c_const = no; then - -$as_echo "#define const /**/" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 -$as_echo_n "checking for inline... " >&6; } -if ${ac_cv_c_inline+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_c_inline=no -for ac_kw in inline __inline__ __inline; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifndef __cplusplus -typedef int foo_t; -static $ac_kw foo_t static_foo () {return 0; } -$ac_kw foo_t foo () {return 0; } -#endif - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_inline=$ac_kw -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - test "$ac_cv_c_inline" != no && break -done - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 -$as_echo "$ac_cv_c_inline" >&6; } - -case $ac_cv_c_inline in - inline | yes) ;; - *) - case $ac_cv_c_inline in - no) ac_val=;; - *) ac_val=$ac_cv_c_inline;; - esac - cat >>confdefs.h <<_ACEOF -#ifndef __cplusplus -#define inline $ac_val -#endif -_ACEOF - ;; -esac - -if test ${cross_compiling} = "no"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 -$as_echo_n "checking whether byte ordering is bigendian... " >&6; } -if ${ac_cv_c_bigendian+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_c_bigendian=unknown - # See if we're dealing with a universal compiler. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifndef __APPLE_CC__ - not a universal capable compiler - #endif - typedef int dummy; - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # Check for potential -arch flags. It is not universal unless - # there are at least two -arch flags with different values. - ac_arch= - ac_prev= - for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do - if test -n "$ac_prev"; then - case $ac_word in - i?86 | x86_64 | ppc | ppc64) - if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then - ac_arch=$ac_word - else - ac_cv_c_bigendian=universal - break - fi - ;; - esac - ac_prev= - elif test "x$ac_word" = "x-arch"; then - ac_prev=arch - fi - done -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if test $ac_cv_c_bigendian = unknown; then - # See if sys/param.h defines the BYTE_ORDER macro. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <sys/types.h> - #include <sys/param.h> - -int -main () -{ -#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ - && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ - && LITTLE_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <sys/types.h> - #include <sys/param.h> - -int -main () -{ -#if BYTE_ORDER != BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <limits.h> - -int -main () -{ -#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to _BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <limits.h> - -int -main () -{ -#ifndef _BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # Compile a test program. - if test "$cross_compiling" = yes; then : - # Try to guess by grepping values from an object file. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -short int ascii_mm[] = - { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; - short int ascii_ii[] = - { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; - int use_ascii (int i) { - return ascii_mm[i] + ascii_ii[i]; - } - short int ebcdic_ii[] = - { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; - short int ebcdic_mm[] = - { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; - int use_ebcdic (int i) { - return ebcdic_mm[i] + ebcdic_ii[i]; - } - extern int foo; - -int -main () -{ -return use_ascii (foo) == use_ebcdic (foo); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then - ac_cv_c_bigendian=yes - fi - if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then - if test "$ac_cv_c_bigendian" = unknown; then - ac_cv_c_bigendian=no - else - # finding both strings is unlikely to happen, but who knows? - ac_cv_c_bigendian=unknown - fi - fi -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ - - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long int l; - char c[sizeof (long int)]; - } u; - u.l = 1; - return u.c[sizeof (long int) - 1] == 1; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_c_bigendian=no -else - ac_cv_c_bigendian=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 -$as_echo "$ac_cv_c_bigendian" >&6; } - case $ac_cv_c_bigendian in #( - yes) - $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h -;; #( - no) - ;; #( - universal) - -$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h - - ;; #( - *) - as_fn_error $? "unknown endianness - presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; - esac - -fi - -# Check whether --enable-largefile was given. -if test "${enable_largefile+set}" = set; then : - enableval=$enable_largefile; -fi - -if test "$enable_largefile" != no; then - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 -$as_echo_n "checking for special C compiler options needed for large files... " >&6; } -if ${ac_cv_sys_largefile_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_sys_largefile_CC=no - if test "$GCC" != yes; then - ac_save_CC=$CC - while :; do - # IRIX 6.2 and later do not support large files by default, - # so use the C compiler's -n32 option if that helps. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <sys/types.h> - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF - if ac_fn_c_try_compile "$LINENO"; then : - break -fi -rm -f core conftest.err conftest.$ac_objext - CC="$CC -n32" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_largefile_CC=' -n32'; break -fi -rm -f core conftest.err conftest.$ac_objext - break - done - CC=$ac_save_CC - rm -f conftest.$ac_ext - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 -$as_echo "$ac_cv_sys_largefile_CC" >&6; } - if test "$ac_cv_sys_largefile_CC" != no; then - CC=$CC$ac_cv_sys_largefile_CC - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 -$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } -if ${ac_cv_sys_file_offset_bits+:} false; then : - $as_echo_n "(cached) " >&6 -else - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <sys/types.h> - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_file_offset_bits=no; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#define _FILE_OFFSET_BITS 64 -#include <sys/types.h> - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_file_offset_bits=64; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cv_sys_file_offset_bits=unknown - break -done -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 -$as_echo "$ac_cv_sys_file_offset_bits" >&6; } -case $ac_cv_sys_file_offset_bits in #( - no | unknown) ;; - *) -cat >>confdefs.h <<_ACEOF -#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits -_ACEOF -;; -esac -rm -rf conftest* - if test $ac_cv_sys_file_offset_bits = unknown; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 -$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } -if ${ac_cv_sys_large_files+:} false; then : - $as_echo_n "(cached) " >&6 -else - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <sys/types.h> - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_large_files=no; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#define _LARGE_FILES 1 -#include <sys/types.h> - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_large_files=1; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cv_sys_large_files=unknown - break -done -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 -$as_echo "$ac_cv_sys_large_files" >&6; } -case $ac_cv_sys_large_files in #( - no | unknown) ;; - *) -cat >>confdefs.h <<_ACEOF -#define _LARGE_FILES $ac_cv_sys_large_files -_ACEOF -;; -esac -rm -rf conftest* - fi -fi - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 -$as_echo_n "checking size of short... " >&6; } -if ${ac_cv_sizeof_short+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_short" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (short) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_short=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 -$as_echo "$ac_cv_sizeof_short" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_SHORT $ac_cv_sizeof_short -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned short" >&5 -$as_echo_n "checking size of unsigned short... " >&6; } -if ${ac_cv_sizeof_unsigned_short+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned short))" "ac_cv_sizeof_unsigned_short" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_unsigned_short" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (unsigned short) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_unsigned_short=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_short" >&5 -$as_echo "$ac_cv_sizeof_unsigned_short" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_UNSIGNED_SHORT $ac_cv_sizeof_unsigned_short -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 -$as_echo_n "checking size of int... " >&6; } -if ${ac_cv_sizeof_int+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_int" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (int) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_int=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 -$as_echo "$ac_cv_sizeof_int" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_INT $ac_cv_sizeof_int -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned int" >&5 -$as_echo_n "checking size of unsigned int... " >&6; } -if ${ac_cv_sizeof_unsigned_int+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned int))" "ac_cv_sizeof_unsigned_int" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_unsigned_int" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (unsigned int) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_unsigned_int=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_int" >&5 -$as_echo "$ac_cv_sizeof_unsigned_int" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 -$as_echo_n "checking size of long... " >&6; } -if ${ac_cv_sizeof_long+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_long" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (long) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_long=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 -$as_echo "$ac_cv_sizeof_long" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG $ac_cv_sizeof_long -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned long" >&5 -$as_echo_n "checking size of unsigned long... " >&6; } -if ${ac_cv_sizeof_unsigned_long+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned long))" "ac_cv_sizeof_unsigned_long" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_unsigned_long" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (unsigned long) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_unsigned_long=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_long" >&5 -$as_echo "$ac_cv_sizeof_unsigned_long" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_UNSIGNED_LONG $ac_cv_sizeof_unsigned_long -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 -$as_echo_n "checking size of long long... " >&6; } -if ${ac_cv_sizeof_long_long+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_long_long" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (long long) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_long_long=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 -$as_echo "$ac_cv_sizeof_long_long" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned long long" >&5 -$as_echo_n "checking size of unsigned long long... " >&6; } -if ${ac_cv_sizeof_unsigned_long_long+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned long long))" "ac_cv_sizeof_unsigned_long_long" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_unsigned_long_long" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (unsigned long long) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_unsigned_long_long=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_long_long" >&5 -$as_echo "$ac_cv_sizeof_unsigned_long_long" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_UNSIGNED_LONG_LONG $ac_cv_sizeof_unsigned_long_long -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of float" >&5 -$as_echo_n "checking size of float... " >&6; } -if ${ac_cv_sizeof_float+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (float))" "ac_cv_sizeof_float" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_float" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (float) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_float=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_float" >&5 -$as_echo "$ac_cv_sizeof_float" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_FLOAT $ac_cv_sizeof_float -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of double" >&5 -$as_echo_n "checking size of double... " >&6; } -if ${ac_cv_sizeof_double+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_double" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (double) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_double=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5 -$as_echo "$ac_cv_sizeof_double" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_DOUBLE $ac_cv_sizeof_double -_ACEOF - - - -if test $ac_cv_sizeof_short -eq 0 \ - -o $ac_cv_sizeof_unsigned_short -eq 0 \ - -o $ac_cv_sizeof_int -eq 0 \ - -o $ac_cv_sizeof_unsigned_int -eq 0 \ - -o $ac_cv_sizeof_long -eq 0 \ - -o $ac_cv_sizeof_unsigned_long -eq 0 \ - -o $ac_cv_sizeof_long_long -eq 0 \ - -o $ac_cv_sizeof_unsigned_long_long -eq 0 \ - -o $ac_cv_sizeof_float -eq 0 \ - -o $ac_cv_sizeof_double -eq 0; then - echo '*** I have a problem determining the size of some variable types. Either' - echo '*** you compiler is broken, or your system+compiler combination is not' - echo '*** supportet by the "autoconf" framework we use to generate this' - echo '*** configure script.' - exit 1 -fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double with more range or precision than double" >&5 -$as_echo_n "checking for long double with more range or precision than double... " >&6; } -if ${ac_cv_type_long_double_wider+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <float.h> - long double const a[] = - { - 0.0L, DBL_MIN, DBL_MAX, DBL_EPSILON, - LDBL_MIN, LDBL_MAX, LDBL_EPSILON - }; - long double - f (long double x) - { - return ((x + (unsigned long int) 10) * (-1 / x) + a[0] - + (x ? f (x) : 'c')); - } - -int -main () -{ -static int test_array [1 - 2 * !((0 < ((DBL_MAX_EXP < LDBL_MAX_EXP) - + (DBL_MANT_DIG < LDBL_MANT_DIG) - - (LDBL_MAX_EXP < DBL_MAX_EXP) - - (LDBL_MANT_DIG < DBL_MANT_DIG))) - && (int) LDBL_EPSILON == 0 - )]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_type_long_double_wider=yes -else - ac_cv_type_long_double_wider=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_double_wider" >&5 -$as_echo "$ac_cv_type_long_double_wider" >&6; } - if test $ac_cv_type_long_double_wider = yes; then - -$as_echo "#define HAVE_LONG_DOUBLE_WIDER 1" >>confdefs.h - - fi - - ac_cv_c_long_double=$ac_cv_type_long_double_wider - if test $ac_cv_c_long_double = yes; then - -$as_echo "#define HAVE_LONG_DOUBLE 1" >>confdefs.h - - fi - -if test "${ac_cv_c_have_long_double}" = "yes" ; then - # The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long double" >&5 -$as_echo_n "checking size of long double... " >&6; } -if ${ac_cv_sizeof_long_double+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long double))" "ac_cv_sizeof_long_double" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_long_double" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (long double) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_long_double=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_double" >&5 -$as_echo "$ac_cv_sizeof_long_double" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double -_ACEOF - - -fi - -ac_fn_c_check_type "$LINENO" "uint8_t" "ac_cv_type_uint8_t" "$ac_includes_default" -if test "x$ac_cv_type_uint8_t" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_UINT8_T 1 -_ACEOF - - -fi -ac_fn_c_check_type "$LINENO" "int8_t" "ac_cv_type_int8_t" "$ac_includes_default" -if test "x$ac_cv_type_int8_t" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_INT8_T 1 -_ACEOF - - -fi -ac_fn_c_check_type "$LINENO" "uint16_t" "ac_cv_type_uint16_t" "$ac_includes_default" -if test "x$ac_cv_type_uint16_t" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_UINT16_T 1 -_ACEOF - - -fi -ac_fn_c_check_type "$LINENO" "int16_t" "ac_cv_type_int16_t" "$ac_includes_default" -if test "x$ac_cv_type_int16_t" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_INT16_T 1 -_ACEOF - - -fi -ac_fn_c_check_type "$LINENO" "uint32_t" "ac_cv_type_uint32_t" "$ac_includes_default" -if test "x$ac_cv_type_uint32_t" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_UINT32_T 1 -_ACEOF - - -fi -ac_fn_c_check_type "$LINENO" "int32_t" "ac_cv_type_int32_t" "$ac_includes_default" -if test "x$ac_cv_type_int32_t" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_INT32_T 1 -_ACEOF - - -fi -ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "$ac_includes_default" -if test "x$ac_cv_type_uint64_t" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_UINT64_T 1 -_ACEOF - - -fi -ac_fn_c_check_type "$LINENO" "int64_t" "ac_cv_type_int64_t" "$ac_includes_default" -if test "x$ac_cv_type_int64_t" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_INT64_T 1 -_ACEOF - - -fi - - - - - - - - - - -if test "${HAVE_INT32_T}" = yes; then - $as_echo "#define A_UINT32_T unsigned int32_t" >>confdefs.h - -else - if test "${ac_cv_sizeof_unsigned_short}" = "4"; then - $as_echo "#define A_UINT32_T unsigned short" >>confdefs.h - - else - if test "${ac_cv_sizeof_unsigned_int}" = "4"; then - $as_echo "#define A_UINT32_T unsigned int" >>confdefs.h - - else - if test "${ac_cv_sizeof_unsigned_long}" = "4"; then - $as_echo "#define A_UINT32_T unsigned long" >>confdefs.h - - else - as_fn_error $? "CHECK_TYPE_uint32_t - please report to lame-dev@lists.sourceforge.net" "$LINENO" 5 - fi - fi - fi -fi - - - -if test "${ac_cv_sizeof_short}" = "4"; then - $as_echo "#define A_INT32_T short" >>confdefs.h - -else - if test "${ac_cv_sizeof_int}" = "4"; then - $as_echo "#define A_INT32_T int" >>confdefs.h - - else - if test "${ac_cv_sizeof_long}" = "4"; then - $as_echo "#define A_INT32_T long" >>confdefs.h - - else - as_fn_error $? "CHECK_TYPE_int32_t - please report to lame-dev@lists.sourceforge.net" "$LINENO" 5 - fi - fi -fi - - - -if test "${HAVE_INT64_T}" = yes; then - $as_echo "#define A_UINT64_T unsigned int64_t" >>confdefs.h - -else - if test "${ac_cv_sizeof_unsigned_int}" = "8"; then - $as_echo "#define A_UINT64_T unsigned int" >>confdefs.h - - else - if test "${ac_cv_sizeof_unsigned_long}" = "8"; then - $as_echo "#define A_UINT64_T unsigned long" >>confdefs.h - - else - if test "${ac_cv_sizeof_unsigned_long_long}" = "8"; then - $as_echo "#define A_UINT64_T unsigned long long" >>confdefs.h - - else - as_fn_error $? "CHECK_TYPE_uint64_t - please report to lame-dev@lists.sourceforge.net" "$LINENO" 5 - fi - fi - fi -fi - - - -if test "${ac_cv_sizeof_int}" = "8"; then - $as_echo "#define A_INT64_T int" >>confdefs.h - -else - if test "${ac_cv_sizeof_long}" = "8"; then - $as_echo "#define A_INT64_T long" >>confdefs.h - - else - if test "${ac_cv_sizeof_long_long}" = "8"; then - $as_echo "#define A_INT64_T long long" >>confdefs.h - - else - as_fn_error $? "CHECK_TYPE_int64_t - please report to lame-dev@lists.sourceforge.net" "$LINENO" 5 - fi - fi -fi - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for IEEE854 compliant 80 bit floats" >&5 -$as_echo_n "checking for IEEE854 compliant 80 bit floats... " >&6; } -if ${alex_cv_ieee854_float80+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: can't check for IEEE854 compliant 80 bit floats" >&5 -$as_echo "$as_me: WARNING: can't check for IEEE854 compliant 80 bit floats" >&2;} - -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int float2long_IEEE_compliance ( void ) -{ - struct { - long padding; /* to prevent unaligned access */ - float f; - } s; - s.f = 12582912.; if ( *(long*)(&s.f) != 1262485504l ) return 0; - s.f = 12615679.; if ( *(long*)(&s.f) != 1262518271l ) return 0; - s.f = 13582912.; if ( *(long*)(&s.f) != 1263485504l ) return 0; - s.f = 12550145.; if ( *(long*)(&s.f) != 1262452737l ) return 0; - s.f = 11582912.; if ( *(long*)(&s.f) != 1261485504l ) return 0; - return 1; -} - -int main(void) -{ - int retval; - - retval = float2long_IEEE_compliance(); - - /* no error return -> success */ - return !retval; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - alex_cv_ieee854_float80=yes -else - alex_cv_ieee854_float80=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $alex_cv_ieee854_float80" >&5 -$as_echo "$alex_cv_ieee854_float80" >&6; } -if test "${alex_cv_ieee854_float80}" = "yes" ; then - if test "${ac_cv_c_long_double}" = "yes" ; then - ac_fn_c_check_type "$LINENO" "ieee854_float80_t" "ac_cv_type_ieee854_float80_t" "$ac_includes_default" -if test "x$ac_cv_type_ieee854_float80_t" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_IEEE854_FLOAT80_T 1 -_ACEOF - -long double -fi - - - - -$as_echo "#define HAVE_IEEE854_FLOAT80 1" >>confdefs.h - - fi -fi -ac_fn_c_check_type "$LINENO" "ieee754_float64_t" "ac_cv_type_ieee754_float64_t" "$ac_includes_default" -if test "x$ac_cv_type_ieee754_float64_t" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_IEEE754_FLOAT64_T 1 -_ACEOF - - -fi -ac_fn_c_check_type "$LINENO" "ieee754_float32_t" "ac_cv_type_ieee754_float32_t" "$ac_includes_default" -if test "x$ac_cv_type_ieee754_float32_t" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_IEEE754_FLOAT32_T 1 -_ACEOF - - -fi - - - - - - - -$as_echo "#define LAME_LIBRARY_BUILD 1" >>confdefs.h - - - -if test ${cross_compiling} = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: - ************************************************************************** - * * - * You are cross compiling: * - * - I did not have a change to determine * - * + the size of: * - * - short * - * - unsigned short * - * - int * - * - unsigned int * - * - long * - * - unsigned long * - * - float * - * - double * - * - long double * - * + the endianess of the system * - * - You have to provide appropriate defines for them in config.h, e.g. * - * + define SIZEOF_SHORT to 2 if the size of a short is 2 * - * + define WORDS_BIGENDIAN if your system is a big endian system * - * * - **************************************************************************" >&5 -$as_echo "$as_me: WARNING: - ************************************************************************** - * * - * You are cross compiling: * - * - I did not have a change to determine * - * + the size of: * - * - short * - * - unsigned short * - * - int * - * - unsigned int * - * - long * - * - unsigned long * - * - float * - * - double * - * - long double * - * + the endianess of the system * - * - You have to provide appropriate defines for them in config.h, e.g. * - * + define SIZEOF_SHORT to 2 if the size of a short is 2 * - * + define WORDS_BIGENDIAN if your system is a big endian system * - * * - **************************************************************************" >&2;} -fi - -ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 -$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } -if ${ac_cv_header_time+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <sys/types.h> -#include <sys/time.h> -#include <time.h> - -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_time=yes -else - ac_cv_header_time=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 -$as_echo "$ac_cv_header_time" >&6; } -if test $ac_cv_header_time = yes; then - -$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h - -fi - - -# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works -# for constant arguments. Useless! -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 -$as_echo_n "checking for working alloca.h... " >&6; } -if ${ac_cv_working_alloca_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <alloca.h> -int -main () -{ -char *p = (char *) alloca (2 * sizeof (int)); - if (p) return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_working_alloca_h=yes -else - ac_cv_working_alloca_h=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 -$as_echo "$ac_cv_working_alloca_h" >&6; } -if test $ac_cv_working_alloca_h = yes; then - -$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 -$as_echo_n "checking for alloca... " >&6; } -if ${ac_cv_func_alloca_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __GNUC__ -# define alloca __builtin_alloca -#else -# ifdef _MSC_VER -# include <malloc.h> -# define alloca _alloca -# else -# ifdef HAVE_ALLOCA_H -# include <alloca.h> -# else -# ifdef _AIX - #pragma alloca -# else -# ifndef alloca /* predefined by HP cc +Olibcalls */ -void *alloca (size_t); -# endif -# endif -# endif -# endif -#endif - -int -main () -{ -char *p = (char *) alloca (1); - if (p) return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_func_alloca_works=yes -else - ac_cv_func_alloca_works=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 -$as_echo "$ac_cv_func_alloca_works" >&6; } - -if test $ac_cv_func_alloca_works = yes; then - -$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h - -else - # The SVR3 libPW and SVR4 libucb both contain incompatible functions -# that cause trouble. Some versions do not even contain alloca or -# contain a buggy version. If you still want to use their alloca, -# use ar to extract alloca.o from them instead of compiling alloca.c. - -ALLOCA=\${LIBOBJDIR}alloca.$ac_objext - -$as_echo "#define C_ALLOCA 1" >>confdefs.h - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 -$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } -if ${ac_cv_os_cray+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#if defined CRAY && ! defined CRAY2 -webecray -#else -wenotbecray -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "webecray" >/dev/null 2>&1; then : - ac_cv_os_cray=yes -else - ac_cv_os_cray=no -fi -rm -f conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 -$as_echo "$ac_cv_os_cray" >&6; } -if test $ac_cv_os_cray = yes; then - for ac_func in _getb67 GETB67 getb67; do - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - -cat >>confdefs.h <<_ACEOF -#define CRAY_STACKSEG_END $ac_func -_ACEOF - - break -fi - - done -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 -$as_echo_n "checking stack direction for C alloca... " >&6; } -if ${ac_cv_c_stack_direction+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_c_stack_direction=0 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -find_stack_direction () -{ - static char *addr = 0; - auto char dummy; - if (addr == 0) - { - addr = &dummy; - return find_stack_direction (); - } - else - return (&dummy > addr) ? 1 : -1; -} - -int -main () -{ - return find_stack_direction () < 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_c_stack_direction=1 -else - ac_cv_c_stack_direction=-1 -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 -$as_echo "$ac_cv_c_stack_direction" >&6; } -cat >>confdefs.h <<_ACEOF -#define STACK_DIRECTION $ac_cv_c_stack_direction -_ACEOF - - -fi - -for ac_func in gettimeofday strtol -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - -if test "X${ac_cv_func_strtol}" != "Xyes"; then - as_fn_error $? "function strtol is mandatory" "$LINENO" 5 -fi - -SOCKETFUNCTION=unknown -for ac_func in socket -do : - ac_fn_c_check_func "$LINENO" "socket" "ac_cv_func_socket" -if test "x$ac_cv_func_socket" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SOCKET 1 -_ACEOF - -fi -done - -if test $ac_cv_func_socket = no; then - # maybe it is in libsocket - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 -$as_echo_n "checking for socket in -lsocket... " >&6; } -if ${ac_cv_lib_socket_socket+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsocket $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char socket (); -int -main () -{ -return socket (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_socket_socket=yes -else - ac_cv_lib_socket_socket=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 -$as_echo "$ac_cv_lib_socket_socket" >&6; } -if test "x$ac_cv_lib_socket_socket" = xyes; then : - $as_echo "#define HAVE_SOCKET 1" >>confdefs.h - - LIBS="$LIBS -lsocket" -fi - - if test "X${ac_cv_lib_socket_socket}" != "Xyes"; then - SOCKETFUNCTION=NO - else - case ${host_os} in - *solaris*) - LIBS="$LIBS -lnsl" - ;; - esac - fi -fi - -CFLAGS=${CFLAGS} -CONFIG_DEFS=${CONFIG_DEFS} -NASM= -INCLUDES="-I\$(top_srcdir)/include -I\$(srcdir)" -FRONTEND_LDFLAGS= -FRONTEND_CFLAGS= -LIB_SOURCES= -MAKEDEP="-M" -RM_F="rm -f" - -# Check whether --enable-nasm was given. -if test "${enable_nasm+set}" = set; then : - enableval=$enable_nasm; ASM_FOR_ARCH="i386" -else - ASM_FOR_ARCH="" -fi - - - -for ac_header in termcap.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "termcap.h" "ac_cv_header_termcap_h" "$ac_includes_default" -if test "x$ac_cv_header_termcap_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_TERMCAP_H 1 -_ACEOF - -fi - -done - -for ac_header in ncurses/termcap.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "ncurses/termcap.h" "ac_cv_header_ncurses_termcap_h" "$ac_includes_default" -if test "x$ac_cv_header_ncurses_termcap_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_NCURSES_TERMCAP_H 1 -_ACEOF - -fi - -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for initscr in -ltermcap" >&5 -$as_echo_n "checking for initscr in -ltermcap... " >&6; } -if ${ac_cv_lib_termcap_initscr+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ltermcap $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char initscr (); -int -main () -{ -return initscr (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_termcap_initscr=yes -else - ac_cv_lib_termcap_initscr=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_initscr" >&5 -$as_echo "$ac_cv_lib_termcap_initscr" >&6; } -if test "x$ac_cv_lib_termcap_initscr" = xyes; then : - HAVE_TERMCAP="termcap" -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for initscr in -lcurses" >&5 -$as_echo_n "checking for initscr in -lcurses... " >&6; } -if ${ac_cv_lib_curses_initscr+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lcurses $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char initscr (); -int -main () -{ -return initscr (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_curses_initscr=yes -else - ac_cv_lib_curses_initscr=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_initscr" >&5 -$as_echo "$ac_cv_lib_curses_initscr" >&6; } -if test "x$ac_cv_lib_curses_initscr" = xyes; then : - HAVE_TERMCAP="curses" -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for initscr in -lncurses" >&5 -$as_echo_n "checking for initscr in -lncurses... " >&6; } -if ${ac_cv_lib_ncurses_initscr+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lncurses $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char initscr (); -int -main () -{ -return initscr (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_ncurses_initscr=yes -else - ac_cv_lib_ncurses_initscr=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_initscr" >&5 -$as_echo "$ac_cv_lib_ncurses_initscr" >&6; } -if test "x$ac_cv_lib_ncurses_initscr" = xyes; then : - HAVE_TERMCAP="ncurses" -fi - - - - if test "X$prefix" = "XNONE"; then - acl_final_prefix="$ac_default_prefix" - else - acl_final_prefix="$prefix" - fi - if test "X$exec_prefix" = "XNONE"; then - acl_final_exec_prefix='${prefix}' - else - acl_final_exec_prefix="$exec_prefix" - fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" - prefix="$acl_save_prefix" - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5 -$as_echo_n "checking for ld used by GCC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | [A-Za-z]:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${acl_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - acl_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break ;; - *) - test "$with_gnu_ld" != yes && break ;; - esac - fi - done - IFS="$ac_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. -fi -fi - -LD="$acl_cv_path_LD" -if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${acl_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU ld's only accept -v. -case `$LD -v 2>&1 </dev/null` in -*GNU* | *'with BFD'*) - acl_cv_prog_gnu_ld=yes ;; -*) - acl_cv_prog_gnu_ld=no ;; -esac -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5 -$as_echo "$acl_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$acl_cv_prog_gnu_ld - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 -$as_echo_n "checking for shared library run path origin... " >&6; } -if ${acl_cv_rpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - - CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ - ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh - . ./conftest.sh - rm -f ./conftest.sh - acl_cv_rpath=done - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 -$as_echo "$acl_cv_rpath" >&6; } - wl="$acl_cv_wl" - acl_libext="$acl_cv_libext" - acl_shlibext="$acl_cv_shlibext" - acl_libname_spec="$acl_cv_libname_spec" - acl_library_names_spec="$acl_cv_library_names_spec" - acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" - acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - acl_hardcode_direct="$acl_cv_hardcode_direct" - acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" - # Check whether --enable-rpath was given. -if test "${enable_rpath+set}" = set; then : - enableval=$enable_rpath; : -else - enable_rpath=yes -fi - - - - - acl_libdirstem=lib - acl_libdirstem2= - case "$host_os" in - solaris*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 -$as_echo_n "checking for 64-bit host... " >&6; } -if ${gl_cv_solaris_64bit+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#ifdef _LP64 -sixtyfour bits -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "sixtyfour bits" >/dev/null 2>&1; then : - gl_cv_solaris_64bit=yes -else - gl_cv_solaris_64bit=no -fi -rm -f conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 -$as_echo "$gl_cv_solaris_64bit" >&6; } - if test $gl_cv_solaris_64bit = yes; then - acl_libdirstem=lib/64 - case "$host_cpu" in - sparc*) acl_libdirstem2=lib/sparcv9 ;; - i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; - esac - fi - ;; - *) - searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` - if test -n "$searchpath"; then - acl_save_IFS="${IFS= }"; IFS=":" - for searchdir in $searchpath; do - if test -d "$searchdir"; then - case "$searchdir" in - */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; - */../ | */.. ) - # Better ignore directories of this form. They are misleading. - ;; - *) searchdir=`cd "$searchdir" && pwd` - case "$searchdir" in - */lib64 ) acl_libdirstem=lib64 ;; - esac ;; - esac - fi - done - IFS="$acl_save_IFS" - fi - ;; - esac - test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" - - - - - - - - - - - - - use_additional=yes - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - -# Check whether --with-libiconv-prefix was given. -if test "${with_libiconv_prefix+set}" = set; then : - withval=$with_libiconv_prefix; - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - else - additional_includedir="$withval/include" - additional_libdir="$withval/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi - fi - fi - -fi - - LIBICONV= - LTLIBICONV= - INCICONV= - LIBICONV_PREFIX= - HAVE_LIBICONV= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='iconv ' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" - else - : - fi - else - found_dir= - found_la= - found_so= - found_a= - eval libname=\"$acl_libname_spec\" # typically: libname=lib$name - if test -n "$acl_shlibext"; then - shrext=".$acl_shlibext" # typically: shrext=.so - else - shrext= - fi - if test $use_additional = yes; then - dir="$additional_libdir" - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "$enable_rpath" = no \ - || test "X$found_dir" = "X/usr/$acl_libdirstem" \ - || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - if test "$acl_hardcode_direct" = yes; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - haveit= - for x in $LDFLAGS $LIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" - fi - if test "$acl_hardcode_minus_L" != no; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" - fi - fi - additional_includedir= - case "$found_dir" in - */$acl_libdirstem | */$acl_libdirstem/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` - if test "$name" = 'iconv'; then - LIBICONV_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - */$acl_libdirstem2 | */$acl_libdirstem2/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` - if test "$name" = 'iconv'; then - LIBICONV_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INCICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - if test -n "$found_la"; then - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ - && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ - || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" - ;; - esac - done - fi - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$acl_hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" - else - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - for found_dir in $ltrpathdirs; do - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" - done - fi - - - - - - - - - - - - - am_save_CPPFLAGS="$CPPFLAGS" - - for element in $INCICONV; do - haveit= - for x in $CPPFLAGS; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" - fi - done - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 -$as_echo_n "checking for iconv... " >&6; } -if ${am_cv_func_iconv+:} false; then : - $as_echo_n "(cached) " >&6 -else - - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <stdlib.h> -#include <iconv.h> -int -main () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - am_cv_func_iconv=yes -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <stdlib.h> -#include <iconv.h> -int -main () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - am_cv_lib_iconv=yes - am_cv_func_iconv=yes -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$am_save_LIBS" - fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 -$as_echo "$am_cv_func_iconv" >&6; } - if test "$am_cv_func_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 -$as_echo_n "checking for working iconv... " >&6; } -if ${am_cv_func_iconv_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - - am_save_LIBS="$LIBS" - if test $am_cv_lib_iconv = yes; then - LIBS="$LIBS $LIBICONV" - fi - if test "$cross_compiling" = yes; then : - case "$host_os" in - aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; - *) am_cv_func_iconv_works="guessing yes" ;; - esac -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include <iconv.h> -#include <string.h> -int main () -{ - /* Test against AIX 5.1 bug: Failures are not distinguishable from successful - returns. */ - { - iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); - if (cd_utf8_to_88591 != (iconv_t)(-1)) - { - static const char input[] = "\342\202\254"; /* EURO SIGN */ - char buf[10]; - const char *inptr = input; - size_t inbytesleft = strlen (input); - char *outptr = buf; - size_t outbytesleft = sizeof (buf); - size_t res = iconv (cd_utf8_to_88591, - (char **) &inptr, &inbytesleft, - &outptr, &outbytesleft); - if (res == 0) - return 1; - } - } - /* Test against Solaris 10 bug: Failures are not distinguishable from - successful returns. */ - { - iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); - if (cd_ascii_to_88591 != (iconv_t)(-1)) - { - static const char input[] = "\263"; - char buf[10]; - const char *inptr = input; - size_t inbytesleft = strlen (input); - char *outptr = buf; - size_t outbytesleft = sizeof (buf); - size_t res = iconv (cd_ascii_to_88591, - (char **) &inptr, &inbytesleft, - &outptr, &outbytesleft); - if (res == 0) - return 1; - } - } -#if 0 /* This bug could be worked around by the caller. */ - /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ - { - iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); - if (cd_88591_to_utf8 != (iconv_t)(-1)) - { - static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; - char buf[50]; - const char *inptr = input; - size_t inbytesleft = strlen (input); - char *outptr = buf; - size_t outbytesleft = sizeof (buf); - size_t res = iconv (cd_88591_to_utf8, - (char **) &inptr, &inbytesleft, - &outptr, &outbytesleft); - if ((int)res > 0) - return 1; - } - } -#endif - /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is - provided. */ - if (/* Try standardized names. */ - iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) - /* Try IRIX, OSF/1 names. */ - && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) - /* Try AIX names. */ - && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) - /* Try HP-UX names. */ - && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) - return 1; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - am_cv_func_iconv_works=yes -else - am_cv_func_iconv_works=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - LIBS="$am_save_LIBS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 -$as_echo "$am_cv_func_iconv_works" >&6; } - case "$am_cv_func_iconv_works" in - *no) am_func_iconv=no am_cv_lib_iconv=no ;; - *) am_func_iconv=yes ;; - esac - else - am_func_iconv=no am_cv_lib_iconv=no - fi - if test "$am_func_iconv" = yes; then - -$as_echo "#define HAVE_ICONV 1" >>confdefs.h - - fi - if test "$am_cv_lib_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 -$as_echo_n "checking how to link with libiconv... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 -$as_echo "$LIBICONV" >&6; } - else - CPPFLAGS="$am_save_CPPFLAGS" - LIBICONV= - LTLIBICONV= - fi - - - - if test "$am_cv_func_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5 -$as_echo_n "checking for iconv declaration... " >&6; } - if ${am_cv_proto_iconv+:} false; then : - $as_echo_n "(cached) " >&6 -else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include <stdlib.h> -#include <iconv.h> -extern -#ifdef __cplusplus -"C" -#endif -#if defined(__STDC__) || defined(__cplusplus) -size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); -#else -size_t iconv(); -#endif - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - am_cv_proto_iconv_arg1="" -else - am_cv_proto_iconv_arg1="const" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" -fi - - am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` - { $as_echo "$as_me:${as_lineno-$LINENO}: result: - $am_cv_proto_iconv" >&5 -$as_echo " - $am_cv_proto_iconv" >&6; } - -cat >>confdefs.h <<_ACEOF -#define ICONV_CONST $am_cv_proto_iconv_arg1 -_ACEOF - - fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5 -$as_echo_n "checking for cos in -lm... " >&6; } -if ${ac_cv_lib_m_cos+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lm $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char cos (); -int -main () -{ -return cos (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_m_cos=yes -else - ac_cv_lib_m_cos=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5 -$as_echo "$ac_cv_lib_m_cos" >&6; } -if test "x$ac_cv_lib_m_cos" = xyes; then : - USE_LIBM="-lm" -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lffm" >&5 -$as_echo_n "checking for cos in -lffm... " >&6; } -if ${ac_cv_lib_ffm_cos+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lffm $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char cos (); -int -main () -{ -return cos (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_ffm_cos=yes -else - ac_cv_lib_ffm_cos=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ffm_cos" >&5 -$as_echo "$ac_cv_lib_ffm_cos" >&6; } -if test "x$ac_cv_lib_ffm_cos" = xyes; then : - USE_LIBM="-lffm -lm" -fi - -# Check whether --enable-cpml was given. -if test "${enable_cpml+set}" = set; then : - enableval=$enable_cpml; CONFIG_CPML="no" -else - CONFIG_CPML="yes" -fi - -if test "${CONFIG_CPML}" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lcpml" >&5 -$as_echo_n "checking for cos in -lcpml... " >&6; } -if ${ac_cv_lib_cpml_cos+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lcpml $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char cos (); -int -main () -{ -return cos (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_cpml_cos=yes -else - ac_cv_lib_cpml_cos=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cpml_cos" >&5 -$as_echo "$ac_cv_lib_cpml_cos" >&6; } -if test "x$ac_cv_lib_cpml_cos" = xyes; then : - USE_LIBM="-lcpml" -fi - -fi -CONFIG_MATH_LIB="${USE_LIBM}" - - - -# Check whether --with-gtk-prefix was given. -if test "${with_gtk_prefix+set}" = set; then : - withval=$with_gtk_prefix; gtk_config_prefix="$withval" -else - gtk_config_prefix="" -fi - - -# Check whether --with-gtk-exec-prefix was given. -if test "${with_gtk_exec_prefix+set}" = set; then : - withval=$with_gtk_exec_prefix; gtk_config_exec_prefix="$withval" -else - gtk_config_exec_prefix="" -fi - -# Check whether --enable-gtktest was given. -if test "${enable_gtktest+set}" = set; then : - enableval=$enable_gtktest; -else - enable_gtktest=yes -fi - - - for module in . - do - case "$module" in - gthread) - gtk_config_args="$gtk_config_args gthread" - ;; - esac - done - - if test x$gtk_config_exec_prefix != x ; then - gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" - if test x${GTK_CONFIG+set} != xset ; then - GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config - fi - fi - if test x$gtk_config_prefix != x ; then - gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix" - if test x${GTK_CONFIG+set} != xset ; then - GTK_CONFIG=$gtk_config_prefix/bin/gtk-config - fi - fi - - # Extract the first word of "gtk-config", so it can be a program name with args. -set dummy gtk-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GTK_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $GTK_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_GTK_CONFIG="$GTK_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_GTK_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_GTK_CONFIG" && ac_cv_path_GTK_CONFIG="no" - ;; -esac -fi -GTK_CONFIG=$ac_cv_path_GTK_CONFIG -if test -n "$GTK_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTK_CONFIG" >&5 -$as_echo "$GTK_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - min_gtk_version=1.2.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK - version >= $min_gtk_version" >&5 -$as_echo_n "checking for GTK - version >= $min_gtk_version... " >&6; } - no_gtk="" - if test "$GTK_CONFIG" = "no" ; then - no_gtk=yes - else - GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags` - GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs` - gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` - gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` - gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` - if test "x$enable_gtktest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$GTK_LIBS $LIBS" - rm -f conf.gtktest - if test "$cross_compiling" = yes; then : - echo $ac_n "cross compiling; assumed OK... $ac_c" -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include <gtk/gtk.h> -#include <stdio.h> -#include <stdlib.h> - -int -main () -{ - int major, minor, micro; - char *tmp_version; - - system ("touch conf.gtktest"); - - /* HP/UX 9 (%@#!) writes to sscanf strings */ - tmp_version = g_strdup("$min_gtk_version"); - if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { - printf("%s, bad version string\n", "$min_gtk_version"); - exit(1); - } - - if ((gtk_major_version != $gtk_config_major_version) || - (gtk_minor_version != $gtk_config_minor_version) || - (gtk_micro_version != $gtk_config_micro_version)) - { - printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", - $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, - gtk_major_version, gtk_minor_version, gtk_micro_version); - printf ("*** was found! If gtk-config was correct, then it is best\n"); - printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); - printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); - printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); - printf("*** required on your system.\n"); - printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n"); - printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n"); - printf("*** before re-running configure\n"); - } -#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION) - else if ((gtk_major_version != GTK_MAJOR_VERSION) || - (gtk_minor_version != GTK_MINOR_VERSION) || - (gtk_micro_version != GTK_MICRO_VERSION)) - { - printf("*** GTK+ header files (version %d.%d.%d) do not match\n", - GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); - printf("*** library (version %d.%d.%d)\n", - gtk_major_version, gtk_minor_version, gtk_micro_version); - } -#endif /* defined (GTK_MAJOR_VERSION) ... */ - else - { - if ((gtk_major_version > major) || - ((gtk_major_version == major) && (gtk_minor_version > minor)) || - ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) - { - return 0; - } - else - { - printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", - gtk_major_version, gtk_minor_version, gtk_micro_version); - printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", - major, minor, micro); - printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); - printf("***\n"); - printf("*** If you have already installed a sufficiently new version, this error\n"); - printf("*** probably means that the wrong copy of the gtk-config shell script is\n"); - printf("*** being found. The easiest way to fix this is to remove the old version\n"); - printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n"); - printf("*** correct copy of gtk-config. (In this case, you will have to\n"); - printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); - printf("*** so that the correct libraries are found at run-time))\n"); - } - } - return 1; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - no_gtk=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - if test "x$no_gtk" = x ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - HAVE_GTK="yes" - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - if test "$GTK_CONFIG" = "no" ; then - echo "*** The gtk-config script installed by GTK could not be found" - echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the GTK_CONFIG environment variable to the" - echo "*** full path to gtk-config." - else - if test -f conf.gtktest ; then - : - else - echo "*** Could not run GTK test program, checking why..." - CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$LIBS $GTK_LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include <gtk/gtk.h> -#include <stdio.h> - -int -main () -{ - return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding GTK or finding the wrong" - echo "*** version of GTK. If it is not finding GTK, you'll need to set your" - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" - echo "*** to the installed location Also, make sure you have run ldconfig if that" - echo "*** is required on your system" - echo "***" - echo "*** If you have an old version installed, it is best to remove it, although" - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" - echo "***" - echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that" - echo "*** came with the system with the command" - echo "***" - echo "*** rpm --erase --nodeps gtk gtk-devel" -else - echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means GTK was incorrectly installed" - echo "*** or that you have moved GTK since it was installed. In the latter case, you" - echo "*** may want to edit the gtk-config script: $GTK_CONFIG" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - GTK_CFLAGS="" - GTK_LIBS="" - HAVE_GTK="no" - fi - - - rm -f conf.gtktest - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking use of ElectricFence malloc debugging" >&5 -$as_echo_n "checking use of ElectricFence malloc debugging... " >&6; } -# Check whether --enable-efence was given. -if test "${enable_efence+set}" = set; then : - enableval=$enable_efence; CONFIG_EFENCE="${enableval}" -else - CONFIG_EFENCE="no" -fi - - -case "${CONFIG_EFENCE}" in -yes) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EF_Print in -lefence" >&5 -$as_echo_n "checking for EF_Print in -lefence... " >&6; } -if ${ac_cv_lib_efence_EF_Print+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lefence $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char EF_Print (); -int -main () -{ -return EF_Print (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_efence_EF_Print=yes -else - ac_cv_lib_efence_EF_Print=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_efence_EF_Print" >&5 -$as_echo "$ac_cv_lib_efence_EF_Print" >&6; } -if test "x$ac_cv_lib_efence_EF_Print" = xyes; then : - HAVE_EFENCE="-lefence" -fi - - if test "x${HAVE_EFENCE}" != "x-lefence"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - LDADD="${LDADD} ${HAVE_EFENCE}" - -$as_echo "#define HAVE_EFENCE 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${CONFIG_EFENCE}" >&5 -$as_echo "${CONFIG_EFENCE}" >&6; } - fi - ;; -no) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${CONFIG_EFENCE}" >&5 -$as_echo "${CONFIG_EFENCE}" >&6; } - ;; -*) - as_fn_error $? "bad value �${CONFIG_EFENCE}� for efence option" "$LINENO" 5 - ;; -esac - - -WARNING= - -# Check whether --with-fileio was given. -if test "${with_fileio+set}" = set; then : - withval=$with_fileio; CONFIG_FILEIO="${withval}" -else - CONFIG_FILEIO="lame" -fi - - -if test "${CONFIG_FILEIO}" = "sndfile" ; then - - - - - - -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKG_CONFIG"; then - ac_pt_PKG_CONFIG=$PKG_CONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG -if test -n "$ac_pt_PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 -$as_echo "$ac_pt_PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_PKG_CONFIG" = x; then - PKG_CONFIG="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKG_CONFIG=$ac_pt_PKG_CONFIG - fi -else - PKG_CONFIG="$ac_cv_path_PKG_CONFIG" -fi - -fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=0.9.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 -$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - PKG_CONFIG="" - fi -fi - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SNDFILE" >&5 -$as_echo_n "checking for SNDFILE... " >&6; } - -if test -n "$SNDFILE_CFLAGS"; then - pkg_cv_SNDFILE_CFLAGS="$SNDFILE_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sndfile >= 1.0.2\""; } >&5 - ($PKG_CONFIG --exists --print-errors "sndfile >= 1.0.2") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_SNDFILE_CFLAGS=`$PKG_CONFIG --cflags "sndfile >= 1.0.2" 2>/dev/null` -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$SNDFILE_LIBS"; then - pkg_cv_SNDFILE_LIBS="$SNDFILE_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sndfile >= 1.0.2\""; } >&5 - ($PKG_CONFIG --exists --print-errors "sndfile >= 1.0.2") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_SNDFILE_LIBS=`$PKG_CONFIG --libs "sndfile >= 1.0.2" 2>/dev/null` -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - SNDFILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "sndfile >= 1.0.2" 2>&1` - else - SNDFILE_PKG_ERRORS=`$PKG_CONFIG --print-errors "sndfile >= 1.0.2" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$SNDFILE_PKG_ERRORS" >&5 - - HAVE_SNDFILE="no" -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - HAVE_SNDFILE="no" -else - SNDFILE_CFLAGS=$pkg_cv_SNDFILE_CFLAGS - SNDFILE_LIBS=$pkg_cv_SNDFILE_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - HAVE_SNDFILE="yes" -fi -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking use of file io" >&5 -$as_echo_n "checking use of file io... " >&6; } - -if test "${CONFIG_FILEIO}" = "sndfile" ; then - if test "${HAVE_SNDFILE}" = "yes" -o "x${SNDFILE_LIBS}" != "x" \ - -o "x${SNDFILE_CFLAGS}" != "x"; then - SNDFILE_LIBS=`echo ${SNDFILE_LIBS}` - SNDFILE_CFLAGS=`echo ${SNDFILE_CFLAGS}` - - if test -n "${SNDFILE_LIBS}" ; then - FRONTEND_LDFLAGS="${SNDFILE_LIBS} ${FRONTEND_LDFLAGS}" - fi - FRONTEND_LDADD="-lsndfile ${FRONTEND_LDADD}" - - if test -n "${SNDFILE_CFLAGS}" ; then - INCLUDES="${SNDFILE_CFLAGS} ${INCLUDES}" - fi - - -$as_echo "#define LIBSNDFILE 1" >>confdefs.h - - else - # default - CONFIG_FILEIO="lame" - WARNING="${WARNING} Could not find any sndfile lib on system." - fi -else - CONFIG_FILEIO="lame" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${CONFIG_FILEIO}" >&5 -$as_echo "${CONFIG_FILEIO}" >&6; } -if test "x${WARNING}" != "x" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $WARNING" >&5 -$as_echo "$as_me: WARNING: $WARNING" >&2;} -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking use of analyzer hooks" >&5 -$as_echo_n "checking use of analyzer hooks... " >&6; } -# Check whether --enable-analyzer-hooks was given. -if test "${enable_analyzer_hooks+set}" = set; then : - enableval=$enable_analyzer_hooks; CONFIG_ANALYZER="${enableval}" -else - CONFIG_ANALYZER="yes" -fi - - -case "${CONFIG_ANALYZER}" in -yes) - ;; -no) - -$as_echo "#define NOANALYSIS 1" >>confdefs.h - - ;; -*) - as_fn_error $? "bad value �${CONFIG_ANALYZER}� for analyzer-hooks option" "$LINENO" 5 - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CONFIG_ANALYZER" >&5 -$as_echo "$CONFIG_ANALYZER" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking use of mpg123 decoder" >&5 -$as_echo_n "checking use of mpg123 decoder... " >&6; } -# Check whether --enable-decoder was given. -if test "${enable_decoder+set}" = set; then : - enableval=$enable_decoder; CONFIG_DECODER="${enableval}" -else - CONFIG_DECODER="yes" -fi - - - if test "x${CONFIG_DECODER}" = "xyes"; then - LIB_WITH_DECODER_TRUE= - LIB_WITH_DECODER_FALSE='#' -else - LIB_WITH_DECODER_TRUE='#' - LIB_WITH_DECODER_FALSE= -fi - - -if test "${CONFIG_DECODER}" != "no" ; then - CONFIG_DECODER="yes (Layer 1, 2, 3)" - -$as_echo "#define HAVE_MPGLIB 1" >>confdefs.h - - -$as_echo "#define DECODE_ON_THE_FLY 1" >>confdefs.h - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CONFIG_DECODER" >&5 -$as_echo "$CONFIG_DECODER" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the lame frontend should be build" >&5 -$as_echo_n "checking if the lame frontend should be build... " >&6; } -# Check whether --enable-frontend was given. -if test "${enable_frontend+set}" = set; then : - enableval=$enable_frontend; WITH_FRONTEND="${enableval}" -else - WITH_FRONTEND=yes -fi - -if test "x${WITH_FRONTEND}" = "xyes"; then - WITH_FRONTEND=lame${ac_exeext} - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - WITH_FRONTEND= - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if mp3x is requested" >&5 -$as_echo_n "checking if mp3x is requested... " >&6; } -# Check whether --enable-mp3x was given. -if test "${enable_mp3x+set}" = set; then : - enableval=$enable_mp3x; WITH_MP3X="${enableval}" -else - WITH_MP3X=no -fi - -if test "x${WITH_MP3X}" = "xyes"; then - WITH_MP3X=mp3x${ac_exeext} - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - WITH_MP3X= - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - -if test "${HAVE_GTK}" = "no"; then - if test "x${WITH_MP3X}" = "xmp3x"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: can't build mp3x" >&5 -$as_echo "$as_me: WARNING: can't build mp3x" >&2;} - WITH_MP3X= - fi - if test "x${CONFIG_ANALYZER}" != "xyes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: can't build mp3x because of disabled analyzer hooks" >&5 -$as_echo "$as_me: WARNING: can't build mp3x because of disabled analyzer hooks" >&2;} - WITH_MP3X= - fi -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if mp3rtp is requested" >&5 -$as_echo_n "checking if mp3rtp is requested... " >&6; } -# Check whether --enable-mp3rtp was given. -if test "${enable_mp3rtp+set}" = set; then : - enableval=$enable_mp3rtp; WITH_MP3RTP="${enableval}" -else - WITH_MP3RTP=no -fi - -if test "x${WITH_MP3RTP}" = "xyes"; then - if test ${SOCKETFUNCTION} = NO; then - as_fn_error $? "function socket is mandatory for mp3rtp" "$LINENO" 5 - fi - WITH_MP3RTP=mp3rtp${ac_exeext} - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - WITH_MP3RTP= - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if dynamic linking of the frontends is requested" >&5 -$as_echo_n "checking if dynamic linking of the frontends is requested... " >&6; } -# Check whether --enable-dynamic-frontends was given. -if test "${enable_dynamic_frontends+set}" = set; then : - enableval=$enable_dynamic_frontends; FRONTEND_LDFLAGS="${FRONTEND_LDFLAGS}" -else - FRONTEND_LDFLAGS="${FRONTEND_LDFLAGS} -static" -fi - -case "x${FRONTEND_LDFLAGS}" in -*-static*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; -*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - ;; -esac - - -# -# this is from vorbis -# -case $host in -*86-*-linux*) - # glibc < 2.1.3 has a serious FP bug in the math inline header - # that will cripple Vorbis. Look to see if the magic FP stack - # clobber is missing in the mathinline header, thus indicating - # the buggy version - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #define __LIBC_INTERNAL_MATH_INLINES 1 - #define __OPTIMIZE__ - #include <math.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "log10.*fldlg2.*fxch" >/dev/null 2>&1; then : - bad=maybe -else - bad=no -fi -rm -f conftest* - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking glibc mathinline bug" >&5 -$as_echo_n "checking glibc mathinline bug... " >&6; } - if test ${bad} = "maybe" ;then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #define __LIBC_INTERNAL_MATH_INLINES 1 - #define __OPTIMIZE__ - #include <math.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "log10.*fldlg2.*fxch.*st\([0123456789]*\)" >/dev/null 2>&1; then : - bad=no -else - bad=yes -fi -rm -f conftest* - - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${bad}" >&5 -$as_echo "${bad}" >&6; } - if test ${bad} = "yes" ;then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: " >&5 -$as_echo "$as_me: WARNING: " >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ********************************************************" >&5 -$as_echo "$as_me: WARNING: ********************************************************" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: * The glibc headers on this machine have a serious bug *" >&5 -$as_echo "$as_me: WARNING: * The glibc headers on this machine have a serious bug *" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: * in /usr/include/bits/mathinline.h This bug affects *" >&5 -$as_echo "$as_me: WARNING: * in /usr/include/bits/mathinline.h This bug affects *" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: * all floating point code, not only LAME, but all code *" >&5 -$as_echo "$as_me: WARNING: * all floating point code, not only LAME, but all code *" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: * built on this machine. Upgrading to glibc 2.1.3 is *" >&5 -$as_echo "$as_me: WARNING: * built on this machine. Upgrading to glibc 2.1.3 is *" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: * strongly urged to correct the problem. *" >&5 -$as_echo "$as_me: WARNING: * strongly urged to correct the problem. *" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *Note: that upgrading glibc will not fix any previously*" >&5 -$as_echo "$as_me: WARNING: *Note: that upgrading glibc will not fix any previously*" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: * built programs; this is a compile-time bug. *" >&5 -$as_echo "$as_me: WARNING: * built programs; this is a compile-time bug. *" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: * To work around the problem for this build of LAME, *" >&5 -$as_echo "$as_me: WARNING: * To work around the problem for this build of LAME, *" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: * autoconf is disabling all math inlining. This will *" >&5 -$as_echo "$as_me: WARNING: * autoconf is disabling all math inlining. This will *" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: * hurt LAME performace but is necessary for LAME to *" >&5 -$as_echo "$as_me: WARNING: * hurt LAME performace but is necessary for LAME to *" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: * work correctly. Once glibc is upgraded, rerun *" >&5 -$as_echo "$as_me: WARNING: * work correctly. Once glibc is upgraded, rerun *" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: * configure and make to build with inlining. *" >&5 -$as_echo "$as_me: WARNING: * configure and make to build with inlining. *" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ********************************************************" >&5 -$as_echo "$as_me: WARNING: ********************************************************" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: " >&5 -$as_echo "$as_me: WARNING: " >&2;} - - -$as_echo "#define __NO_MATH_INLINES 1" >>confdefs.h - - fi;; -esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for termcap" >&5 -$as_echo_n "checking for termcap... " >&6; } -if test "x${HAVE_TERMCAP}" != "x"; then - FRONTEND_LDADD="-l${HAVE_TERMCAP} ${FRONTEND_LDADD}" - -$as_echo "#define HAVE_TERMCAP 1" >>confdefs.h - - TERMCAP_DEFAULT="yes" -else - TERMCAP_DEFAULT="no" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${TERMCAP_DEFAULT}" >&5 -$as_echo "${TERMCAP_DEFAULT}" >&6; } - - -WITH_VECTOR=no -case $host_cpu in -x86_64|amd64) - CPUTYPE="no" - if test $ac_cv_header_xmmintrin_h = yes ; then - WITH_XMM=yes - WITH_VECTOR=yes - fi - - -$as_echo "#define TAKEHIRO_IEEE754_HACK 1" >>confdefs.h - - -$as_echo "#define USE_FAST_LOG 1" >>confdefs.h - - ;; -*86) - CPUTYPE="i386" - if test $ac_cv_header_xmmintrin_h = yes ; then - WITH_XMM=yes - WITH_VECTOR=yes - fi - - # use internal knowledge of the IEEE 754 layout - -$as_echo "#define TAKEHIRO_IEEE754_HACK 1" >>confdefs.h - - -$as_echo "#define USE_FAST_LOG 1" >>confdefs.h - - ;; -powerpc) - CPUTYPE="no" - - # use internal knowledge of the IEEE 754 layout - -$as_echo "#define TAKEHIRO_IEEE754_HACK 1" >>confdefs.h - - - # The following should not get enabled on a G5. HOWTO check for a G5? - -$as_echo "#define USE_FAST_LOG 1" >>confdefs.h - - ;; -*) - CPUTYPE="no" - ;; -esac - -# which vector code do we support to build on this machine? - if test "x${WITH_XMM}" = "xyes"; then - WITH_XMM_TRUE= - WITH_XMM_FALSE='#' -else - WITH_XMM_TRUE='#' - WITH_XMM_FALSE= -fi - - -# needs to be defined to link in the internal vector lib - if test "x${WITH_VECTOR}" = "xyes"; then - WITH_VECTOR_TRUE= - WITH_VECTOR_FALSE='#' -else - WITH_VECTOR_TRUE='#' - WITH_VECTOR_FALSE= -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if I have to build the internal vector lib" >&5 -$as_echo_n "checking if I have to build the internal vector lib... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${WITH_VECTOR}" >&5 -$as_echo "${WITH_VECTOR}" >&6; } - - -# Extract the first word of "nasm", so it can be a program name with args. -set dummy nasm; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_NASM+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $NASM in - [\\/]* | ?:[\\/]*) - ac_cv_path_NASM="$NASM" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_NASM="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_NASM" && ac_cv_path_NASM="no" - ;; -esac -fi -NASM=$ac_cv_path_NASM -if test -n "$NASM"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NASM" >&5 -$as_echo "$NASM" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -case "${NASM}" in -no) - ;; -*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for assembler routines for this processor type" >&5 -$as_echo_n "checking for assembler routines for this processor type... " >&6; } - for recurse_over in ${ASM_FOR_ARCH} - do - if test "${CPUTYPE}" = "${recurse_over}"; then - include_asm_routines="yes" - fi - - case $host_os in - *darwin*) - # currently we have problems because of a wrong - # libtool hack in the darwin case (for nasm code) - include_asm_routines="no" - ;; - esac - done - if test "x${include_asm_routines}" = "xyes"; then - -$as_echo "#define HAVE_NASM 1" >>confdefs.h - - -$as_echo "#define MMX_choose_table 1" >>confdefs.h - - else - include_asm_routines="no" - NASM="no" - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${include_asm_routines}" >&5 -$as_echo "${include_asm_routines}" >&6; } - ;; -esac - if test "${NASM}" != "no"; then - HAVE_NASM_TRUE= - HAVE_NASM_FALSE='#' -else - HAVE_NASM_TRUE='#' - HAVE_NASM_FALSE= -fi - - -case $host_os in - *cygwin*|*mingw32*) - CYGWIN=yes - NASM_FORMAT="-f win32 -DWIN32" - ;; - *darwin*) - NASM_FORMAT="-f macho" - ;; - *) - CYGWIN=no - NASM_FORMAT="-f elf" - ;; -esac - -# -# 'expopt' is used for "additional optimizations", not for optimizations which -# are marked as "experimental" in the guide for the compiler. -# They are "experimental" here in the LAME project (at least -# "--enable-expopt=full"). -# -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for additional optimizations" >&5 -$as_echo_n "checking for additional optimizations... " >&6; } -# Check whether --enable-expopt was given. -if test "${enable_expopt+set}" = set; then : - enableval=$enable_expopt; CONFIG_EXPOPT="${enableval}" -else - CONFIG_EXPOPT="no" -fi - - -if test "x$GCC" = "xyes"; then - # gcc defaults. OS specific options go in versious sections below - # from the gcc man pages: "there is no reason to use -pedantic" - if test "x${with_gnu_ld}" = "xyes"; then - CFLAGS="-Wall -pipe ${CFLAGS}" - else - # some vendor ld's don't like '-pipe' - CFLAGS="-Wall ${CFLAGS}" - fi - - # GCC version specific generic options - case "${GCC_version}" in - 2.96*) - # for buggy version of gcc shipped with RH7.1, back of on some - # optimizations - OPTIMIZATION="-O -fomit-frame-pointer -ffast-math \ - -funroll-loops" - OPTIMIZATION_FULL="-fmove-all-movables -freduce-all-givs \ - -fsched-interblock -fbranch-count-reg -fforce-addr \ - -fforce-mem" - ;; - 3.0*) - # -funroll-loops seems to produce buggy code with gcc 3.0.3 - OPTIMIZATION="-O -fomit-frame-pointer -ffast-math" - OPTIMIZATION_FULL="-fmove-all-movables -freduce-all-givs \ - -fbranch-count-reg -fforce-addr -fforce-mem" - ;; - 3.*|4.0.*|4.1.*) - # -fomit-frame-pointer seems to be buggy on cygwin - case ${host_os} in - *cygwin*) - OMIT_FRAME_POINTER= - ;; - *) - OMIT_FRAME_POINTER=-fomit-frame-pointer - ;; - esac - - OPTIMIZATION="-O3 ${OMIT_FRAME_POINTER} -ffast-math" - OPTIMIZATION_FULL="-fmove-all-movables -freduce-all-givs \ - -fbranch-count-reg -fforce-addr -fforce-mem" - ;; - 4.*) - OPTIMIZATION="-O3 -fomit-frame-pointer -ffast-math" - OPTIMIZATION_FULL="-fbranch-count-reg -fforce-addr" - ;; - *) - # default - OPTIMIZATION="-O3 ${OMIT_FRAME_POINTER} -ffast-math \ - -funroll-loops" - OPTIMIZATION_FULL="-fbranch-count-reg -fforce-addr" - ;; - esac - - - # GCC version independend generic options - OPTIMIZATION_NORM="-fschedule-insns2" - - - # generic CPU specific options - case ${host_cpu} in - sparc) - case "${GCC_version}" in - 3.0*) - ;; - 3.*|4.*) - # doesn't work on 3.0.x, but on 3.[12] and - # hopefully on every other release after that too - if test -x /usr/bin/isalist; then - /usr/bin/isalist | grep sparcv8plus \ - >/dev/null 2>&1 && \ - OPTIMIZATION="${OPTIMIZATION} \ - -mcpu=ultrasparc \ - -mtune=ultrasparc" - fi - ;; - esac - ;; - *86) - case "${GCC_version}" in - 3.*|4.*) - OPTIMIZATION="${OPTIMIZATION} \ - -maccumulate-outgoing-args" - ;; - esac - ;; - esac - - expopt_msg_result_printed=no - case "${CONFIG_EXPOPT}" in - no) - # if someone supplies own CFLAGS, we don't add our own - if test "x${ac_save_CFLAGS}" != "x"; then - OPTIMIZATION="" - fi - ;; - norm|yes) - OPTIMIZATION="${OPTIMIZATION} ${OPTIMIZATION_NORM}" - ;; - full) - OPTIMIZATION="${OPTIMIZATION} ${OPTIMIZATION_NORM} \ - ${OPTIMIZATION_FULL}" - - # some hardware dependend options - case "${GCC_version}" in - 2.9*|3.*|4.0.*|4.1.*) - # "new" GCC, use some "new" CPU specific optimizations - # use -mtune instead of -m486 or -mcpu= etc, since they are - # deprecated by GCC <rbrito> - case ${host_cpu} in - *486) - OPTIMIZATION="${OPTIMIZATION} -mcpu=i486 \ - -mfancy-math-387" - ;; - *586) - OPTIMIZATION="${OPTIMIZATION} -mcpu=pentium \ - -march=pentium -mfancy-math-387" - ;; - *686) - OPTIMIZATION="${OPTIMIZATION} -mcpu=pentiumpro \ - -march=pentiumpro -mfancy-math-387 \ - -malign-double" - ;; - *86) - OPTIMIZATION="${OPTIMIZATION} -mfancy-math-387" - ;; - alpha*) - OPTIMIZATION="${OPTIMIZATION} -mfp-regs" - -$as_echo "#define FLOAT double" >>confdefs.h - - # add "-mcpu=21164a -Wa,-m21164a" to optimize - # for 21164a (ev56) CPU - ;; - *) - OPTIMIZATION="${OPTIMIZATION} -fdelayed-branch" - ;; - esac - ;; - 4.*) - case ${host_cpu} in - *486) - OPTIMIZATION="${OPTIMIZATION} -march=i486" - ;; - *586) - OPTIMIZATION="${OPTIMIZATION} -march=i586 \ - -mtune=native" - ;; - *686) - OPTIMIZATION="${OPTIMIZATION} -march=i686 \ - -mtune=native" - ;; - *86) - OPTIMIZATION="${OPTIMIZATION} -march=native \ - -mtune=native" - ;; - esac - ;; - *) - # no special optimization for other versions - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - expopt_msg_result_printed=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: LAME doesn't know about your version (${GCC_version}) of gcc" >&5 -$as_echo "$as_me: WARNING: LAME doesn't know about your version (${GCC_version}) of gcc" >&2;} - ;; - esac - ;; - *) - as_fn_error $? "bad value �${CONFIG_EXPOPT}� for expopt option" "$LINENO" 5 - ;; - esac - - if test "${expopt_msg_result_printed}" = "no" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${CONFIG_EXPOPT}" >&5 -$as_echo "${CONFIG_EXPOPT}" >&6; } - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for debug options" >&5 -$as_echo_n "checking for debug options... " >&6; } -# Check whether --enable-debug was given. -if test "${enable_debug+set}" = set; then : - enableval=$enable_debug; CONFIG_DEBUG="${enableval}" -else - CONFIG_DEBUG="no" -fi - - -if test "x$GCC" = "xyes"; then - DEBUG_NORM_OPT="-O -g -Wall" - DEBUG_ANOYING="-Wbad-function-cast -Wcast-align \ - -Wcast-qual -Wchar-subscripts -Wconversion \ - -Wmissing-prototypes -Wnested-externs -Wpointer-arith \ - -Wredundant-decls -Wshadow -Wstrict-prototypes \ - -Wwrite-strings -Winline \ - -Wformat -Wswitch -Waggregate-return -Wmissing-noreturn \ - -Wimplicit-int -fno-builtin" - - case "${CONFIG_DEBUG}" in - no) - -$as_echo "#define NDEBUG 1" >>confdefs.h - - ;; - norm|yes) - -$as_echo "#define ABORTFP 1" >>confdefs.h - - OPTIMIZATION="${DEBUG_NORM_OPT}" - ;; - anoying) - -$as_echo "#define ABORTFP 1" >>confdefs.h - - OPTIMIZATION="${DEBUG_NORM_OPT} ${DEBUG_ANOYING}" - ;; - alot) - -$as_echo "#define ABORTFP 1" >>confdefs.h - - -$as_echo "#define DEBUG 1" >>confdefs.h - - OPTIMIZATION="${DEBUG_NORM_OPT}" - ;; - *) - as_fn_error $? "bad value �${CONFIG_DEBUG}� for debug option" "$LINENO" 5 - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${CONFIG_DEBUG}" >&5 -$as_echo "${CONFIG_DEBUG}" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - -########################################################################## -# LINUX on Digital/Compaq Alpha CPUs -########################################################################## -case $host in -alpha*-*-linux*) - -################################################################ -#### Check if 'ccc' is in our path -################################################################ -if test "`which ccc 2>/dev/null | grep -c ccc`" != "0" ; then - # Compaq's C Compiler - CC=ccc - -################################################################ -#### set 'OPTIMIZATION = -arch host -tune host' -#### to generate/tune instructions for this machine -#### 'OPTIMIZATION += -migrate -fast -inline speed -unroll 0' -#### tweak to run as fast as possible :) -#### 'OPTIMIZATION += -w0' -#### set warning and linking flags -################################################################ - OPTIMIZATION="-arch host -tune host" - OPTIMIZATION="-migrate -fast -inline speed -unroll 0 $OPTIMIZATION" - OPTIMIZATION="-w0 $OPTIMIZATION" - - -################################################################ -#### to debug, uncomment -################################################################ - # For Debugging - #OPTIMIZATION="-g3 $OPTIMIZATION" - -################################################################ -#### define __DECALPHA__ (i was getting re-declaration warnings -#### in machine.h -################################################################ - # Define DEC Alpha - -$as_echo "#define __DECALPHA__ 1" >>confdefs.h - -fi # gcc or ccc? -;; # alpha - - -########################################################################## -# SunOS -########################################################################## -sparc-*-sunos4*) - if test CC = "cc"; then - OPTIMIZATION="-O -xCC" - MAKEDEP="-xM" - # for gcc, use instead: - # CC="gcc" - # OPTIMIZATION="-O" - # MAKEDEP="-M" -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Please contact lame@lists.sourceforge.net with the output of the configure run and the file config.cache. Thank you for your cooperation." >&5 -$as_echo "$as_me: WARNING: Please contact lame@lists.sourceforge.net with the output of the configure run and the file config.cache. Thank you for your cooperation." >&2;} - fi -;; #SunOS - -########################################################################## -# SGI -########################################################################## -*-sgi-irix*) - if test CC = "cc"; then - OPTIMIZATION="-O3 -woff all" - fi -;; # SGI - -########################################################################## -# Compaq Alpha running Dec Unix (OSF) -########################################################################## -alpha*-dec-osf*) - if test CC = "cc"; then - OPTIMIZATION="-fast -O3 -std -g3 -non_shared" - fi -;; #OSF -esac - -# todo: include the following tests in the case-list -UNAME=`uname` -ARCH=`uname -m` - -########################################################################### -# MOSXS (Rhapsody PPC) -########################################################################### -if test "$UNAME" = "Rhapsody"; then -# CC="cc" # should be handled already by autoconf - MAKEDEP="-make" -fi - -########################################################################### -# MAC OSX Darwin PPC -########################################################################### -if test "$UNAME" = "Darwin"; then - MAKEDEP="-make" - CFLAGS="$CFLAGS -fno-common" -fi - - -########################################################################## -# OS/2 -########################################################################## -# Properly installed EMX runtime & development package is a prerequisite. -# tools I used: make 3.76.1, uname 1.12, sed 2.05, PD-ksh 5.2.13 -# -########################################################################## -if test "$UNAME" = "OS/2"; then - SHELL=sh - #CC=gcc # should already be handled by configure - - # file extension should already be handled by automake (I don't know, - # please give feedback! - #FILE_EXTENSION=".exe" - -# Uncomment & inspect the GTK lines to use MP3x GTK frame analyzer. -# Properly installed XFree86/devlibs & GTK+ is a prerequisite. -# The following works for me using Xfree86/OS2 3.3.5 and GTK+ 1.2.3: -# AC_DEFINE(HAVE_GTK, 1, have GTK) -# AC_DEFINE(__ST_MT_ERRNO__, 1) -# INCLUDES="-IC:/XFree86/include/gtk12 -IC:/XFree86/include/glib12 \ -# -IC:/XFree86/include $INCLUDES" -# FRONTEND_LDFLAGS="-LC:/XFree86/lib -lgtk12 -lgdk12 -lgmodule -lglib12 \ -# -lXext -lX11 -lshm -lbsd -lsocket -lm $FRONTEND_LDFLAGS" -# FRONTEND_CFLAGS="-Zmtd -Zsysv-signals -Zbin-files $FRONTEND_CFLAGS" -fi - -########################################################################### -# AmigaOS -########################################################################### -# Type 'Make ARCH=PPC' for PowerUP and 'Make ARCH=WOS' for WarpOS -# -########################################################################### -if test "$UNAME" = "AmigaOS" ; then - CC="gcc -noixemul" - OPTIMIZATION="$OPTIMIZATION -m68020-60 -m68881" - MAKEDEP="-MM" - if test "$ARCH" = "WOS"; then - CC="ppc-amigaos-gcc -warpup" - OPTIMIZATION="$OPTIMIZATION -mmultiple -mcpu=603e" - AR="ppc-amigaos-ar" - RANLIB="ppc-amigaos-ranlib" - fi - if test "$ARCH",PPC; then - CC="ppc-amigaos-gcc" - OPTIMIZATION="$OPTIMIZATION -mmultiple -mcpu=603e" - AR="ppc-amigaos-ar" - RANLIB="ppc-amigaos-ranlib" - fi -fi - - -CFLAGS="${OPTIMIZATION} ${CFLAGS}" -LDADD="${LDADD}" -FRONTEND_CFLAGS="${INCICONV} ${FRONTEND_CFLAGS}" -FRONTEND_LDADD="${FRONTEND_LDADD} ${LTLIBICONV} ${CONFIG_MATH_LIB}" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -ac_config_files="$ac_config_files Makefile libmp3lame/Makefile libmp3lame/i386/Makefile libmp3lame/vector/Makefile frontend/Makefile mpglib/Makefile doc/Makefile doc/html/Makefile doc/man/Makefile include/Makefile Dll/Makefile misc/Makefile debian/Makefile dshow/Makefile ACM/Makefile ACM/ADbg/Makefile ACM/ddk/Makefile ACM/tinyxml/Makefile lame.spec mac/Makefile macosx/Makefile macosx/English.lproj/Makefile macosx/LAME.xcodeproj/Makefile vc_solution/Makefile" - - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - if test -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' -else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= -fi - -if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then - as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -if test -z "${LIB_WITH_DECODER_TRUE}" && test -z "${LIB_WITH_DECODER_FALSE}"; then - as_fn_error $? "conditional \"LIB_WITH_DECODER\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${WITH_XMM_TRUE}" && test -z "${WITH_XMM_FALSE}"; then - as_fn_error $? "conditional \"WITH_XMM\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${WITH_VECTOR_TRUE}" && test -z "${WITH_VECTOR_FALSE}"; then - as_fn_error $? "conditional \"WITH_VECTOR\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HAVE_NASM_TRUE}" && test -z "${HAVE_NASM_FALSE}"; then - as_fn_error $? "conditional \"HAVE_NASM\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by lame $as_me 3.99.5, which was -generated by GNU Autoconf 2.68. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to <lame-dev@lists.sf.net>." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -lame config.status 3.99.5 -configured by $0, generated by GNU Autoconf 2.68, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2010 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in SHELL \ -ECHO \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -OBJDUMP \ -deplibs_check_method \ -file_magic_cmd \ -AR \ -AR_FLAGS \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_wl \ -lt_prog_compiler_pic \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_flag_spec_ld \ -hardcode_libdir_separator \ -fix_srcfile_path \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' -xsi_shell='$xsi_shell' -lt_shell_append='$lt_shell_append' - -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile' - - - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "libmp3lame/Makefile") CONFIG_FILES="$CONFIG_FILES libmp3lame/Makefile" ;; - "libmp3lame/i386/Makefile") CONFIG_FILES="$CONFIG_FILES libmp3lame/i386/Makefile" ;; - "libmp3lame/vector/Makefile") CONFIG_FILES="$CONFIG_FILES libmp3lame/vector/Makefile" ;; - "frontend/Makefile") CONFIG_FILES="$CONFIG_FILES frontend/Makefile" ;; - "mpglib/Makefile") CONFIG_FILES="$CONFIG_FILES mpglib/Makefile" ;; - "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; - "doc/html/Makefile") CONFIG_FILES="$CONFIG_FILES doc/html/Makefile" ;; - "doc/man/Makefile") CONFIG_FILES="$CONFIG_FILES doc/man/Makefile" ;; - "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; - "Dll/Makefile") CONFIG_FILES="$CONFIG_FILES Dll/Makefile" ;; - "misc/Makefile") CONFIG_FILES="$CONFIG_FILES misc/Makefile" ;; - "debian/Makefile") CONFIG_FILES="$CONFIG_FILES debian/Makefile" ;; - "dshow/Makefile") CONFIG_FILES="$CONFIG_FILES dshow/Makefile" ;; - "ACM/Makefile") CONFIG_FILES="$CONFIG_FILES ACM/Makefile" ;; - "ACM/ADbg/Makefile") CONFIG_FILES="$CONFIG_FILES ACM/ADbg/Makefile" ;; - "ACM/ddk/Makefile") CONFIG_FILES="$CONFIG_FILES ACM/ddk/Makefile" ;; - "ACM/tinyxml/Makefile") CONFIG_FILES="$CONFIG_FILES ACM/tinyxml/Makefile" ;; - "lame.spec") CONFIG_FILES="$CONFIG_FILES lame.spec" ;; - "mac/Makefile") CONFIG_FILES="$CONFIG_FILES mac/Makefile" ;; - "macosx/Makefile") CONFIG_FILES="$CONFIG_FILES macosx/Makefile" ;; - "macosx/English.lproj/Makefile") CONFIG_FILES="$CONFIG_FILES macosx/English.lproj/Makefile" ;; - "macosx/LAME.xcodeproj/Makefile") CONFIG_FILES="$CONFIG_FILES macosx/LAME.xcodeproj/Makefile" ;; - "vc_solution/Makefile") CONFIG_FILES="$CONFIG_FILES vc_solution/Makefile" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' <conf$$subs.awk | sed ' -/^[^""]/{ - N - s/\n// -} -' >>$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' <confdefs.h | sed ' -s/'"$ac_delim"'/"\\\ -"/g' >>$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi -# Compute "$ac_file"'s index in $config_headers. -_am_arg="$ac_file" -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$_am_arg" : 'X\(//\)[^/]' \| \ - X"$_am_arg" : 'X\(//\)$' \| \ - X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "libtool":C) - - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool 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. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -# The names of the tagged configurations supported by this script. -available_tags="" - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# An object symbol dumper. -OBJDUMP=$lt_OBJDUMP - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method == "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path=$lt_fix_srcfile_path - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain="$ac_aux_dir/ltmain.sh" - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - case $xsi_shell in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac -} - -# func_basename file -func_basename () -{ - func_basename_result="${1##*/}" -} - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}" -} - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -func_stripname () -{ - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"} -} - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=${1%%=*} - func_opt_split_arg=${1#*=} -} - -# func_lo2o object -func_lo2o () -{ - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=${1%.*}.lo -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=$(( $* )) -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=${#1} -} - -_LT_EOF - ;; - *) # Bourne compatible functions. - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} - -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "${1}" | $SED "$basename"` -} - - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} - -# sed scripts: -my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' -my_sed_long_arg='1s/^-[^=]*=//' - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"` - func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"` -} - -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "$@"` -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` -} - -_LT_EOF -esac - -case $lt_shell_append in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$1+=\$2" -} -_LT_EOF - ;; - *) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$1=\$$1\$2" -} - -_LT_EOF - ;; - esac - - - sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - diff --git a/platform/win32/msvc/external/lame/configure.in b/platform/win32/msvc/external/lame/configure.in deleted file mode 100644 index 2f8fa668723..00000000000 --- a/platform/win32/msvc/external/lame/configure.in +++ /dev/null @@ -1,1157 +0,0 @@ -dnl $Id: configure.in,v 1.140.2.5 2012/02/10 18:06:28 rbrito Exp $ -dnl -dnl -dnl don't forget to set ASM_FOR_ARCH to a space delimited list of -dnl processor architectures, for which assembler routines exist -dnl -dnl -dnl Exported and configured variables: -dnl CC -dnl CFLAGS -dnl LDFLAGS -dnl LDADD -dnl NASM - -dnl extra vars for frontend: -dnl FRONTEND_LDFLAGS -dnl FRONTEND_CFLAGS -dnl FRONTEND_LDADD - -AC_PREREQ(2.68) -AC_INIT([lame],[3.99.5],[lame-dev@lists.sf.net]) -AC_CONFIG_SRCDIR([libmp3lame/lame.c]) -AC_LANG([C]) - -dnl check system -AC_CANONICAL_HOST - -dnl automake -AM_INIT_AUTOMAKE -AC_CONFIG_HEADERS([config.h]) -AH_TOP([ -#ifndef LAME_CONFIG_H -#define LAME_CONFIG_H -]) -AH_BOTTOM([#endif /* LAME_CONFIG_H */]) -AM_MAINTAINER_MODE -AM_MAKE_INCLUDE - -dnl check environment -AC_AIX -AC_ISC_POSIX -AC_MINIX -case $host_os in - *cygwin* ) CYGWIN=yes;; - * ) CYGWIN=no;; -esac - -dnl libtool -# AC_DISABLE_SHARED -AC_PROG_LIBTOOL -AC_SUBST(LIBTOOL_DEPS) -CFLAGS="${ac_save_CFLAGS}" - -# increase this when the shared lib becomes totally incompatible -LIB_MAJOR_VERSION=0 - -# increase this when changes are made, but they are upward compatible -# to previous versions -LIB_MINOR_VERSION=0 - -dnl # work around for a bug, don't know where it is exactly -if test "${ac_cv_cygwin}" = "yes"; then - if test "${CC}" != "gcc"; then - AC_MSG_ERROR([Please use] - [ CC=gcc ./configure] - [Abort this configure run and add "CC=gcc" or you will] - [see errors and no lame.exe will be build.]) - fi -fi - -dnl check programs -AC_PROG_CC() - -if test "${GCC}" = "yes"; then - AC_MSG_CHECKING(version of GCC) - GCC_version=`${CC} --version | sed -n '1s/^[[^ ]]* (.*) //;s/ .*$//;1p'` - AC_MSG_RESULT(${GCC_version}) -fi - -dnl more automake stuff -AM_C_PROTOTYPES - -AC_CHECK_HEADER(dmalloc.h) -if test "${ac_cv_header_dmalloc_h}" = "yes"; then - AM_WITH_DMALLOC -fi - -dnl Checks for header files. -AC_HEADER_STDC -AC_CHECK_HEADERS( \ - errno.h \ - fcntl.h \ - limits.h \ - stdint.h \ - string.h \ - sys/soundcard.h \ - sys/time.h \ - unistd.h \ - xmmintrin.h \ - linux/soundcard.h) - -dnl Checks for typedefs, structures, and compiler characteristics. -AC_C_CONST -AC_C_INLINE -if test ${cross_compiling} = "no"; then - AC_C_BIGENDIAN -fi - -AC_SYS_LARGEFILE - -AC_CHECK_SIZEOF(short) -AC_CHECK_SIZEOF(unsigned short) -AC_CHECK_SIZEOF(int) -AC_CHECK_SIZEOF(unsigned int) -AC_CHECK_SIZEOF(long) -AC_CHECK_SIZEOF(unsigned long) -AC_CHECK_SIZEOF(long long) -AC_CHECK_SIZEOF(unsigned long long) -AC_CHECK_SIZEOF(float) -AC_CHECK_SIZEOF(double) - -if test $ac_cv_sizeof_short -eq 0 \ - -o $ac_cv_sizeof_unsigned_short -eq 0 \ - -o $ac_cv_sizeof_int -eq 0 \ - -o $ac_cv_sizeof_unsigned_int -eq 0 \ - -o $ac_cv_sizeof_long -eq 0 \ - -o $ac_cv_sizeof_unsigned_long -eq 0 \ - -o $ac_cv_sizeof_long_long -eq 0 \ - -o $ac_cv_sizeof_unsigned_long_long -eq 0 \ - -o $ac_cv_sizeof_float -eq 0 \ - -o $ac_cv_sizeof_double -eq 0; then - echo '*** I have a problem determining the size of some variable types. Either' - echo '*** you compiler is broken, or your system+compiler combination is not' - echo '*** supportet by the "autoconf" framework we use to generate this' - echo '*** configure script.' - exit 1 -fi - -AC_C_LONG_DOUBLE -if test "${ac_cv_c_have_long_double}" = "yes" ; then - AC_CHECK_SIZEOF(long double) -fi - -AC_CHECK_TYPES([uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t, int64_t]) - -AH_VERBATIM([HAVE_UINT8_T], -[/* add uint8_t type */ -#undef HAVE_UINT8_T -#ifndef HAVE_UINT8_T - typedef unsigned char uint8_t; -#endif]) - -AH_VERBATIM([HAVE_INT8_T], -[/* add int8_t type */ -#undef HAVE_INT8_T -#ifndef HAVE_INT8_T - typedef char int8_t; -#endif]) - -AH_VERBATIM([HAVE_UINT16_T], -[/* add uint16_t type */ -#undef HAVE_UINT16_T -#ifndef HAVE_UINT16_T - typedef unsigned short uint16_t; -#endif]) - -AH_VERBATIM([HAVE_INT16_T], -[/* add int16_t type */ -#undef HAVE_INT16_T -#ifndef HAVE_INT16_T - typedef short int16_t; -#endif]) - -if test "${HAVE_INT32_T}" = yes; then - AC_DEFINE(A_UINT32_T,unsigned int32_t) -else - if test "${ac_cv_sizeof_unsigned_short}" = "4"; then - AC_DEFINE(A_UINT32_T,unsigned short) - else - if test "${ac_cv_sizeof_unsigned_int}" = "4"; then - AC_DEFINE(A_UINT32_T,unsigned int) - else - if test "${ac_cv_sizeof_unsigned_long}" = "4"; then - AC_DEFINE(A_UINT32_T,unsigned long) - else - AC_MSG_ERROR([CHECK_TYPE_uint32_t - please report to lame-dev@lists.sourceforge.net]) - fi - fi - fi -fi - -AH_VERBATIM([HAVE_UINT32_T], -[/* add uint32_t type */ -#undef HAVE_UINT32_T -#ifndef HAVE_UINT32_T -#undef A_UINT32_T - typedef A_UINT32_T uint32_t; -#endif]) - -if test "${ac_cv_sizeof_short}" = "4"; then - AC_DEFINE(A_INT32_T,short) -else - if test "${ac_cv_sizeof_int}" = "4"; then - AC_DEFINE(A_INT32_T,int) - else - if test "${ac_cv_sizeof_long}" = "4"; then - AC_DEFINE(A_INT32_T,long) - else - AC_MSG_ERROR([CHECK_TYPE_int32_t - please report to lame-dev@lists.sourceforge.net]) - fi - fi -fi - -AH_VERBATIM([HAVE_INT32_T], -[/* add int32_t type */ -#undef HAVE_INT32_T -#ifndef HAVE_INT32_T -#undef A_INT32_T - typedef A_INT32_T int32_t; -#endif]) - -if test "${HAVE_INT64_T}" = yes; then - AC_DEFINE(A_UINT64_T,unsigned int64_t) -else - if test "${ac_cv_sizeof_unsigned_int}" = "8"; then - AC_DEFINE(A_UINT64_T,unsigned int) - else - if test "${ac_cv_sizeof_unsigned_long}" = "8"; then - AC_DEFINE(A_UINT64_T,unsigned long) - else - if test "${ac_cv_sizeof_unsigned_long_long}" = "8"; then - AC_DEFINE(A_UINT64_T,unsigned long long) - else - AC_MSG_ERROR([CHECK_TYPE_uint64_t - please report to lame-dev@lists.sourceforge.net]) - fi - fi - fi -fi - -AH_VERBATIM([HAVE_UINT64_T], -[/* add uint64_t type */ -#undef HAVE_UINT64_T -#ifndef HAVE_UINT64_T -#undef A_UINT64_T - typedef A_UINT64_T uint64_t; -#endif]) - -if test "${ac_cv_sizeof_int}" = "8"; then - AC_DEFINE(A_INT64_T,int) -else - if test "${ac_cv_sizeof_long}" = "8"; then - AC_DEFINE(A_INT64_T,long) - else - if test "${ac_cv_sizeof_long_long}" = "8"; then - AC_DEFINE(A_INT64_T,long long) - else - AC_MSG_ERROR([CHECK_TYPE_int64_t - please report to lame-dev@lists.sourceforge.net]) - fi - fi -fi - -AH_VERBATIM([HAVE_INT64_T], -[/* add int64_t type */ -#undef HAVE_INT64_T -#ifndef HAVE_INT64_T -#undef A_INT64_T - typedef A_INT64_T int64_t; -#endif]) - -alex_IEEE854_FLOAT80 -if test "${alex_cv_ieee854_float80}" = "yes" ; then - if test "${ac_cv_c_long_double}" = "yes" ; then - AC_CHECK_TYPES(ieee854_float80_t, long double) - AH_VERBATIM([HAVE_IEEE854_FLOAT80_T], -[/* add ieee854_float80_t type */ -#undef HAVE_IEEE854_FLOAT80_T -#ifndef HAVE_IEEE854_FLOAT80_T - typedef long double ieee854_float80_t; -#endif]) - - AC_DEFINE(HAVE_IEEE854_FLOAT80, 1, [system has 80 bit floats]) - fi -fi -AC_CHECK_TYPES([ieee754_float64_t, ieee754_float32_t]) - -AH_VERBATIM([HAVE_IEEE754_FLOAT64_T], -[/* add ieee754_float64_t type */ -#undef HAVE_IEEE754_FLOAT64_T -#ifndef HAVE_IEEE754_FLOAT64_T - typedef double ieee754_float64_t; -#endif]) - -AH_VERBATIM([HAVE_IEEE754_FLOAT32_T], -[/* add ieee754_float32_t type */ -#undef HAVE_IEEE754_FLOAT32_T -#ifndef HAVE_IEEE754_FLOAT32_T - typedef float ieee754_float32_t; -#endif]) - -AC_DEFINE(LAME_LIBRARY_BUILD, 1, [requested by Frank, seems to be temporary needed for a smooth transition]) - - -if test ${cross_compiling} = "yes"; then - AC_MSG_WARN([] - [**************************************************************************] - [* *] - [* You are cross compiling: *] - [* - I did not have a change to determine *] - [* + the size of: *] - [* - short *] - [* - unsigned short *] - [* - int *] - [* - unsigned int *] - [* - long *] - [* - unsigned long *] - [* - float *] - [* - double *] - [* - long double *] - [* + the endianess of the system *] - [* - You have to provide appropriate defines for them in config.h, e.g. *] - [* + define SIZEOF_SHORT to 2 if the size of a short is 2 *] - [* + define WORDS_BIGENDIAN if your system is a big endian system *] - [* *] - [**************************************************************************]) -fi - -AC_TYPE_SIZE_T -AC_HEADER_TIME - -dnl Checks for library functions. -AC_FUNC_ALLOCA -AC_CHECK_FUNCS(gettimeofday strtol) - -if test "X${ac_cv_func_strtol}" != "Xyes"; then - AC_MSG_ERROR([function strtol is mandatory]) -fi - -dnl Check if we are on a mingw system, which needs libwsock32 -SOCKETFUNCTION=unknown -AC_CHECK_FUNCS(socket) -if test $ac_cv_func_socket = no; then - # maybe it is in libsocket - AC_CHECK_LIB(socket, socket, [AC_DEFINE(HAVE_SOCKET) - LIBS="$LIBS -lsocket"]) - if test "X${ac_cv_lib_socket_socket}" != "Xyes"; then - SOCKETFUNCTION=NO - else - case ${host_os} in - *solaris*) - LIBS="$LIBS -lnsl" - ;; - esac - fi -fi - -dnl Initialize configuration variables for the Makefile -CFLAGS=${CFLAGS} -CONFIG_DEFS=${CONFIG_DEFS} -NASM= -INCLUDES="-I\$(top_srcdir)/include -I\$(srcdir)" -FRONTEND_LDFLAGS= -FRONTEND_CFLAGS= -LIB_SOURCES= -MAKEDEP="-M" -RM_F="rm -f" - -AC_ARG_ENABLE(nasm, - [ --enable-nasm Allow the use of nasm if available], - ASM_FOR_ARCH="i386", ASM_FOR_ARCH="") - -dnl Checks for libraries. - -AC_CHECK_HEADERS(termcap.h) -AC_CHECK_HEADERS(ncurses/termcap.h) -AC_CHECK_LIB(termcap, initscr, HAVE_TERMCAP="termcap") -AC_CHECK_LIB(curses, initscr, HAVE_TERMCAP="curses") -AC_CHECK_LIB(ncurses, initscr, HAVE_TERMCAP="ncurses") - -AM_ICONV - -dnl math lib -AC_CHECK_LIB(m, cos, USE_LIBM="-lm") -dnl free fast math library -AC_CHECK_LIB(ffm, cos, USE_LIBM="-lffm -lm") -dnl Compaq fast math library. -AC_ARG_ENABLE(cpml, - [ --disable-cpml Do not use Compaq's fast Math Library], - CONFIG_CPML="no", CONFIG_CPML="yes") -if test "${CONFIG_CPML}" = yes; then - AC_CHECK_LIB(cpml, cos, USE_LIBM="-lcpml") -fi -CONFIG_MATH_LIB="${USE_LIBM}" - -dnl configure use of features - -AM_PATH_GTK(1.2.0, HAVE_GTK="yes", HAVE_GTK="no") - -dnl ElectricFence malloc debugging -AC_MSG_CHECKING(use of ElectricFence malloc debugging) -AC_ARG_ENABLE(efence, - [ --enable-efence Use ElectricFence for malloc debugging], - CONFIG_EFENCE="${enableval}", CONFIG_EFENCE="no") - -case "${CONFIG_EFENCE}" in -yes) - AC_CHECK_LIB(efence, EF_Print, HAVE_EFENCE="-lefence") - if test "x${HAVE_EFENCE}" != "x-lefence"; then - AC_MSG_RESULT(yes, but libefence not found) - else - LDADD="${LDADD} ${HAVE_EFENCE}" - AC_DEFINE(HAVE_EFENCE, 1, we link against libefence) - AC_MSG_RESULT(${CONFIG_EFENCE}) - fi - ;; -no) - AC_MSG_RESULT(${CONFIG_EFENCE}) - ;; -*) - AC_MSG_ERROR(bad value �${CONFIG_EFENCE}� for efence option) - ;; -esac - - -dnl libsndfile -WARNING= -AC_ARG_WITH(fileio, - [ --with-fileio=lame Use lame's internal file io routines [default]] - [ =sndfile Use Erik de Castro Lopo's libsndfile] - [ (no stdin possible currently)], - CONFIG_FILEIO="${withval}", CONFIG_FILEIO="lame") - -if test "${CONFIG_FILEIO}" = "sndfile" ; then - PKG_CHECK_MODULES(SNDFILE, sndfile >= 1.0.2, HAVE_SNDFILE="yes", HAVE_SNDFILE="no") -fi - -AC_MSG_CHECKING(use of file io) - -if test "${CONFIG_FILEIO}" = "sndfile" ; then - if test "${HAVE_SNDFILE}" = "yes" -o "x${SNDFILE_LIBS}" != "x" \ - -o "x${SNDFILE_CFLAGS}" != "x"; then - SNDFILE_LIBS=`echo ${SNDFILE_LIBS}` - SNDFILE_CFLAGS=`echo ${SNDFILE_CFLAGS}` - - if test -n "${SNDFILE_LIBS}" ; then - FRONTEND_LDFLAGS="${SNDFILE_LIBS} ${FRONTEND_LDFLAGS}" - fi - FRONTEND_LDADD="-lsndfile ${FRONTEND_LDADD}" - - if test -n "${SNDFILE_CFLAGS}" ; then - INCLUDES="${SNDFILE_CFLAGS} ${INCLUDES}" - fi - - AC_DEFINE(LIBSNDFILE, 1, set to 1 if you have libsndfile) - else - # default - CONFIG_FILEIO="lame" - WARNING="${WARNING} Could not find any sndfile lib on system." - fi -else - CONFIG_FILEIO="lame" -fi -AC_MSG_RESULT(${CONFIG_FILEIO}) -if test "x${WARNING}" != "x" ; then - AC_MSG_WARN($WARNING) -fi - - -dnl check if we should remove hooks for analyzer code in library -dnl default library must include these hooks -AC_MSG_CHECKING(use of analyzer hooks) -AC_ARG_ENABLE(analyzer-hooks, - [ --disable-analyzer-hooks Exclude analyzer hooks], - CONFIG_ANALYZER="${enableval}", CONFIG_ANALYZER="yes") - -case "${CONFIG_ANALYZER}" in -yes) - ;; -no) - AC_DEFINE(NOANALYSIS, 1, build without hooks for analyzer) - ;; -*) - AC_MSG_ERROR(bad value �${CONFIG_ANALYZER}� for analyzer-hooks option) - ;; -esac -AC_MSG_RESULT($CONFIG_ANALYZER) - - -dnl mpg123 decoder -AC_MSG_CHECKING(use of mpg123 decoder) -AC_ARG_ENABLE(decoder, - [ --disable-decoder Exclude mpg123 decoder], - CONFIG_DECODER="${enableval}", CONFIG_DECODER="yes") - -AM_CONDITIONAL(LIB_WITH_DECODER, test "x${CONFIG_DECODER}" = "xyes") - -if test "${CONFIG_DECODER}" != "no" ; then - CONFIG_DECODER="yes (Layer 1, 2, 3)" - AC_DEFINE(HAVE_MPGLIB, 1, build with mpglib support) - AC_DEFINE(DECODE_ON_THE_FLY, 1, allow to compute a more accurate replaygain value) -fi -AC_MSG_RESULT($CONFIG_DECODER) - - -AC_MSG_CHECKING(if the lame frontend should be build) -AC_ARG_ENABLE(frontend, - [ --disable-frontend Do not build the lame executable [default=build]], - WITH_FRONTEND="${enableval}", WITH_FRONTEND=yes) -if test "x${WITH_FRONTEND}" = "xyes"; then - WITH_FRONTEND=lame${ac_exeext} - AC_MSG_RESULT(yes) -else - WITH_FRONTEND= - AC_MSG_RESULT(no) -fi - - - -AC_MSG_CHECKING(if mp3x is requested) -AC_ARG_ENABLE(mp3x, - [ --enable-mp3x Build GTK frame analyzer [default=no]], - WITH_MP3X="${enableval}", WITH_MP3X=no) -if test "x${WITH_MP3X}" = "xyes"; then - WITH_MP3X=mp3x${ac_exeext} - AC_MSG_RESULT(yes) -else - WITH_MP3X= - AC_MSG_RESULT(no) -fi - -if test "${HAVE_GTK}" = "no"; then - if test "x${WITH_MP3X}" = "xmp3x"; then - AC_MSG_WARN(can't build mp3x, no GTK installed) - WITH_MP3X= - fi - if test "x${CONFIG_ANALYZER}" != "xyes"; then - AC_MSG_WARN(can't build mp3x because of disabled analyzer hooks) - WITH_MP3X= - fi -fi - -AC_MSG_CHECKING(if mp3rtp is requested) -AC_ARG_ENABLE(mp3rtp, - [ --enable-mp3rtp Build mp3rtp [default=no]], - WITH_MP3RTP="${enableval}", WITH_MP3RTP=no) -if test "x${WITH_MP3RTP}" = "xyes"; then - if test ${SOCKETFUNCTION} = NO; then - AC_MSG_ERROR([function socket is mandatory for mp3rtp]) - fi - WITH_MP3RTP=mp3rtp${ac_exeext} - AC_MSG_RESULT(yes) -else - WITH_MP3RTP= - AC_MSG_RESULT(no) -fi - -AC_MSG_CHECKING(if dynamic linking of the frontends is requested) -AC_ARG_ENABLE(dynamic-frontends, - [ --enable-dynamic-frontends Link frontends against shared libraries [default=no]], - FRONTEND_LDFLAGS="${FRONTEND_LDFLAGS}", FRONTEND_LDFLAGS="${FRONTEND_LDFLAGS} -static") -case "x${FRONTEND_LDFLAGS}" in -*-static*) - AC_MSG_RESULT(no) - ;; -*) - AC_MSG_RESULT(yes) - ;; -esac - - -# -# this is from vorbis -# -dnl check GLIBC -case $host in -*86-*-linux*) - # glibc < 2.1.3 has a serious FP bug in the math inline header - # that will cripple Vorbis. Look to see if the magic FP stack - # clobber is missing in the mathinline header, thus indicating - # the buggy version - - AC_EGREP_CPP(log10.*fldlg2.*fxch,[ - #define __LIBC_INTERNAL_MATH_INLINES 1 - #define __OPTIMIZE__ - #include <math.h> - ],bad=maybe,bad=no) - - AC_MSG_CHECKING(glibc mathinline bug) - if test ${bad} = "maybe" ;then - AC_EGREP_CPP(log10.*fldlg2.*fxch.*st\([[0123456789]]*\), - [ - #define __LIBC_INTERNAL_MATH_INLINES 1 - #define __OPTIMIZE__ - #include <math.h> - ],bad=no,bad=yes) - fi - AC_MSG_RESULT(${bad}) - if test ${bad} = "yes" ;then - AC_MSG_WARN([ ]) - AC_MSG_WARN([********************************************************]) - AC_MSG_WARN([* The glibc headers on this machine have a serious bug *]) - AC_MSG_WARN([* in /usr/include/bits/mathinline.h This bug affects *]) - AC_MSG_WARN([* all floating point code, not only LAME, but all code *]) - AC_MSG_WARN([* built on this machine. Upgrading to glibc 2.1.3 is *]) - AC_MSG_WARN([* strongly urged to correct the problem. *]) - AC_MSG_WARN([*Note: that upgrading glibc will not fix any previously*]) - AC_MSG_WARN([* built programs; this is a compile-time bug. *]) - AC_MSG_WARN([* To work around the problem for this build of LAME, *]) - AC_MSG_WARN([* autoconf is disabling all math inlining. This will *]) - AC_MSG_WARN([* hurt LAME performace but is necessary for LAME to *]) - AC_MSG_WARN([* work correctly. Once glibc is upgraded, rerun *]) - AC_MSG_WARN([* configure and make to build with inlining. *]) - AC_MSG_WARN([********************************************************]) - AC_MSG_WARN([ ]) - - AC_DEFINE(__NO_MATH_INLINES, 1, work around a glibc bug) - fi;; -esac - - -dnl configure use of VBR bitrate histogram -dnl todo: always use yes as default, use simulation instead ? -AC_MSG_CHECKING(for termcap) -if test "x${HAVE_TERMCAP}" != "x"; then - FRONTEND_LDADD="-l${HAVE_TERMCAP} ${FRONTEND_LDADD}" - AC_DEFINE(HAVE_TERMCAP, 1, have termcap) - TERMCAP_DEFAULT="yes" -else - TERMCAP_DEFAULT="no" -fi -AC_MSG_RESULT(${TERMCAP_DEFAULT}) - - -dnl ### processor specific options ### -WITH_VECTOR=no -case $host_cpu in -x86_64|amd64) - CPUTYPE="no" - if test $ac_cv_header_xmmintrin_h = yes ; then - WITH_XMM=yes - WITH_VECTOR=yes - fi - - AC_DEFINE(TAKEHIRO_IEEE754_HACK, 1, IEEE754 compatible machine) - AC_DEFINE(USE_FAST_LOG, 1, faster log implementation with less but enoug -h precission) - ;; -*86) - CPUTYPE="i386" - if test $ac_cv_header_xmmintrin_h = yes ; then - WITH_XMM=yes - WITH_VECTOR=yes - fi - - # use internal knowledge of the IEEE 754 layout - AC_DEFINE(TAKEHIRO_IEEE754_HACK, 1, IEEE754 compatible machine) - AC_DEFINE(USE_FAST_LOG, 1, faster log implementation with less but enough precission) - ;; -powerpc) - CPUTYPE="no" - - # use internal knowledge of the IEEE 754 layout - AC_DEFINE(TAKEHIRO_IEEE754_HACK, 1, IEEE754 compatible machine) - - # The following should not get enabled on a G5. HOWTO check for a G5? - AC_DEFINE(USE_FAST_LOG, 1, faster log implementation with less but enough precission) - ;; -*) - CPUTYPE="no" - ;; -esac - -# which vector code do we support to build on this machine? -AM_CONDITIONAL(WITH_XMM, test "x${WITH_XMM}" = "xyes") - -# needs to be defined to link in the internal vector lib -AM_CONDITIONAL(WITH_VECTOR, test "x${WITH_VECTOR}" = "xyes") -AC_MSG_CHECKING(if I have to build the internal vector lib) -AC_MSG_RESULT(${WITH_VECTOR}) - - -AC_PATH_PROG(NASM, nasm, no) -case "${NASM}" in -no) - ;; -*) - AC_MSG_CHECKING(for assembler routines for this processor type) - for recurse_over in ${ASM_FOR_ARCH} - do - if test "${CPUTYPE}" = "${recurse_over}"; then - include_asm_routines="yes" - fi - - case $host_os in - *darwin*) - # currently we have problems because of a wrong - # libtool hack in the darwin case (for nasm code) - include_asm_routines="no" - ;; - esac - done - if test "x${include_asm_routines}" = "xyes"; then - AC_DEFINE(HAVE_NASM, 1, have nasm) - AC_DEFINE(MMX_choose_table, 1, use MMX version of choose_table) - else - include_asm_routines="no" - NASM="no" - fi - AC_MSG_RESULT(${include_asm_routines}) - ;; -esac -AM_CONDITIONAL(HAVE_NASM, test "${NASM}" != "no") - -case $host_os in - *cygwin*|*mingw32*) - CYGWIN=yes - NASM_FORMAT="-f win32 -DWIN32" - ;; - *darwin*) - NASM_FORMAT="-f macho" - ;; - *) - CYGWIN=no - NASM_FORMAT="-f elf" - ;; -esac - -# -# 'expopt' is used for "additional optimizations", not for optimizations which -# are marked as "experimental" in the guide for the compiler. -# They are "experimental" here in the LAME project (at least -# "--enable-expopt=full"). -# -AC_MSG_CHECKING(for additional optimizations) -AC_ARG_ENABLE(expopt, - [ --enable-expopt=full,norm Whether to enable experimental optimizations] - [ [default=no]], - CONFIG_EXPOPT="${enableval}", CONFIG_EXPOPT="no") - -if test "x$GCC" = "xyes"; then - # gcc defaults. OS specific options go in versious sections below - # from the gcc man pages: "there is no reason to use -pedantic" - if test "x${with_gnu_ld}" = "xyes"; then - CFLAGS="-Wall -pipe ${CFLAGS}" - else - # some vendor ld's don't like '-pipe' - CFLAGS="-Wall ${CFLAGS}" - fi - - # GCC version specific generic options - case "${GCC_version}" in - 2.96*) - # for buggy version of gcc shipped with RH7.1, back of on some - # optimizations - OPTIMIZATION="-O -fomit-frame-pointer -ffast-math \ - -funroll-loops" - OPTIMIZATION_FULL="-fmove-all-movables -freduce-all-givs \ - -fsched-interblock -fbranch-count-reg -fforce-addr \ - -fforce-mem" - ;; - 3.0*) - # -funroll-loops seems to produce buggy code with gcc 3.0.3 - OPTIMIZATION="-O -fomit-frame-pointer -ffast-math" - OPTIMIZATION_FULL="-fmove-all-movables -freduce-all-givs \ - -fbranch-count-reg -fforce-addr -fforce-mem" - ;; - 3.*|4.0.*|4.1.*) - # -fomit-frame-pointer seems to be buggy on cygwin - case ${host_os} in - *cygwin*) - OMIT_FRAME_POINTER= - ;; - *) - OMIT_FRAME_POINTER=-fomit-frame-pointer - ;; - esac - - OPTIMIZATION="-O3 ${OMIT_FRAME_POINTER} -ffast-math" - OPTIMIZATION_FULL="-fmove-all-movables -freduce-all-givs \ - -fbranch-count-reg -fforce-addr -fforce-mem" - ;; - 4.*) - OPTIMIZATION="-O3 -fomit-frame-pointer -ffast-math" - OPTIMIZATION_FULL="-fbranch-count-reg -fforce-addr" - ;; - *) - # default - OPTIMIZATION="-O3 ${OMIT_FRAME_POINTER} -ffast-math \ - -funroll-loops" - OPTIMIZATION_FULL="-fbranch-count-reg -fforce-addr" - ;; - esac - - - # GCC version independend generic options - OPTIMIZATION_NORM="-fschedule-insns2" - - - # generic CPU specific options - case ${host_cpu} in - sparc) - case "${GCC_version}" in - 3.0*) - ;; - 3.*|4.*) - # doesn't work on 3.0.x, but on 3.[12] and - # hopefully on every other release after that too - if test -x /usr/bin/isalist; then - /usr/bin/isalist | grep sparcv8plus \ - >/dev/null 2>&1 && \ - OPTIMIZATION="${OPTIMIZATION} \ - -mcpu=ultrasparc \ - -mtune=ultrasparc" - fi - ;; - esac - ;; - *86) - case "${GCC_version}" in - 3.*|4.*) - OPTIMIZATION="${OPTIMIZATION} \ - -maccumulate-outgoing-args" - ;; - esac - ;; - esac - - expopt_msg_result_printed=no - case "${CONFIG_EXPOPT}" in - no) - # if someone supplies own CFLAGS, we don't add our own - if test "x${ac_save_CFLAGS}" != "x"; then - OPTIMIZATION="" - fi - ;; - norm|yes) - OPTIMIZATION="${OPTIMIZATION} ${OPTIMIZATION_NORM}" - ;; - full) - OPTIMIZATION="${OPTIMIZATION} ${OPTIMIZATION_NORM} \ - ${OPTIMIZATION_FULL}" - - # some hardware dependend options - case "${GCC_version}" in - 2.9*|3.*|4.0.*|4.1.*) - # "new" GCC, use some "new" CPU specific optimizations - # use -mtune instead of -m486 or -mcpu= etc, since they are - # deprecated by GCC <rbrito> - case ${host_cpu} in - *486) - OPTIMIZATION="${OPTIMIZATION} -mcpu=i486 \ - -mfancy-math-387" - ;; - *586) - OPTIMIZATION="${OPTIMIZATION} -mcpu=pentium \ - -march=pentium -mfancy-math-387" - ;; - *686) - OPTIMIZATION="${OPTIMIZATION} -mcpu=pentiumpro \ - -march=pentiumpro -mfancy-math-387 \ - -malign-double" - ;; - *86) - OPTIMIZATION="${OPTIMIZATION} -mfancy-math-387" - ;; - alpha*) - OPTIMIZATION="${OPTIMIZATION} -mfp-regs" - AC_DEFINE(FLOAT, double, double is faster than float on Alpha) - # add "-mcpu=21164a -Wa,-m21164a" to optimize - # for 21164a (ev56) CPU - ;; - *) - OPTIMIZATION="${OPTIMIZATION} -fdelayed-branch" - ;; - esac - ;; - 4.*) - case ${host_cpu} in - *486) - OPTIMIZATION="${OPTIMIZATION} -march=i486" - ;; - *586) - OPTIMIZATION="${OPTIMIZATION} -march=i586 \ - -mtune=native" - ;; - *686) - OPTIMIZATION="${OPTIMIZATION} -march=i686 \ - -mtune=native" - ;; - *86) - OPTIMIZATION="${OPTIMIZATION} -march=native \ - -mtune=native" - ;; - arm*-gnueabi) - if [ -z "$(echo ${GCC_version} | awk '/4\.0/')" ]; then - # Work round buggy softfloat optimization in ARM EABI compilers - # -gnueabi in only gcc-4.1 onwards - OPTIMIZATION="${OPTIMIZATION} -fno-finite-math-only" - fi - ;; - esac - ;; - *) - # no special optimization for other versions - AC_MSG_RESULT(no) - expopt_msg_result_printed=yes - AC_MSG_WARN(LAME doesn't know about your version (${GCC_version}) of gcc, please report it to lame-dev@lists.sourceforge.net. Please make sure you try the latest LAME version first!) - ;; - esac - ;; - *) - AC_MSG_ERROR(bad value �${CONFIG_EXPOPT}� for expopt option) - ;; - esac - - if test "${expopt_msg_result_printed}" = "no" ; then - AC_MSG_RESULT(${CONFIG_EXPOPT}) - fi -else - AC_MSG_RESULT(no) -fi - - - - - -AC_MSG_CHECKING(for debug options) -AC_ARG_ENABLE(debug, - [ --enable-debug=alot,norm Enable debugging (disables optimizations)] - [ [default=no]], - CONFIG_DEBUG="${enableval}", CONFIG_DEBUG="no") - -if test "x$GCC" = "xyes"; then - DEBUG_NORM_OPT="-O -g -Wall" - DEBUG_ANOYING="-Wbad-function-cast -Wcast-align \ - -Wcast-qual -Wchar-subscripts -Wconversion \ - -Wmissing-prototypes -Wnested-externs -Wpointer-arith \ - -Wredundant-decls -Wshadow -Wstrict-prototypes \ - -Wwrite-strings -Winline \ - -Wformat -Wswitch -Waggregate-return -Wmissing-noreturn \ - -Wimplicit-int -fno-builtin" - - case "${CONFIG_DEBUG}" in - no) - AC_DEFINE(NDEBUG, 1, no debug build) - ;; - norm|yes) - AC_DEFINE(ABORTFP, 1, debug define) - OPTIMIZATION="${DEBUG_NORM_OPT}" - ;; - anoying) - AC_DEFINE(ABORTFP, 1, debug define) - OPTIMIZATION="${DEBUG_NORM_OPT} ${DEBUG_ANOYING}" - ;; - alot) - AC_DEFINE(ABORTFP, 1, debug define) - AC_DEFINE(DEBUG, 1, alot of debug output) - OPTIMIZATION="${DEBUG_NORM_OPT}" - ;; - *) - AC_MSG_ERROR(bad value �${CONFIG_DEBUG}� for debug option) - esac - - AC_MSG_RESULT(${CONFIG_DEBUG}) -else - AC_MSG_RESULT(no) -fi - - - -dnl ### system specific options ### - -########################################################################## -# LINUX on Digital/Compaq Alpha CPUs -########################################################################## -case $host in -alpha*-*-linux*) - -################################################################ -#### Check if 'ccc' is in our path -################################################################ -if test "`which ccc 2>/dev/null | grep -c ccc`" != "0" ; then - # Compaq's C Compiler - CC=ccc - -################################################################ -#### set 'OPTIMIZATION = -arch host -tune host' -#### to generate/tune instructions for this machine -#### 'OPTIMIZATION += -migrate -fast -inline speed -unroll 0' -#### tweak to run as fast as possible :) -#### 'OPTIMIZATION += -w0' -#### set warning and linking flags -################################################################ - OPTIMIZATION="-arch host -tune host" - OPTIMIZATION="-migrate -fast -inline speed -unroll 0 $OPTIMIZATION" - OPTIMIZATION="-w0 $OPTIMIZATION" - - -################################################################ -#### to debug, uncomment -################################################################ - # For Debugging - #OPTIMIZATION="-g3 $OPTIMIZATION" - -################################################################ -#### define __DECALPHA__ (i was getting re-declaration warnings -#### in machine.h -################################################################ - # Define DEC Alpha - AC_DEFINE(__DECALPHA__, 1, we're on DEC Alpha) -fi # gcc or ccc? -;; # alpha - - -########################################################################## -# SunOS -########################################################################## -sparc-*-sunos4*) - if test CC = "cc"; then - OPTIMIZATION="-O -xCC" - MAKEDEP="-xM" - # for gcc, use instead: - # CC="gcc" - # OPTIMIZATION="-O" - # MAKEDEP="-M" -AC_MSG_WARN([Please contact lame@lists.sourceforge.net with the output of the configure run and the file config.cache. Thank you for your cooperation.]) - fi -;; #SunOS - -########################################################################## -# SGI -########################################################################## -*-sgi-irix*) - if test CC = "cc"; then - OPTIMIZATION="-O3 -woff all" - fi -;; # SGI - -########################################################################## -# Compaq Alpha running Dec Unix (OSF) -########################################################################## -alpha*-dec-osf*) - if test CC = "cc"; then - OPTIMIZATION="-fast -O3 -std -g3 -non_shared" - fi -;; #OSF -esac - -# todo: include the following tests in the case-list -UNAME=`uname` -ARCH=`uname -m` - -########################################################################### -# MOSXS (Rhapsody PPC) -########################################################################### -if test "$UNAME" = "Rhapsody"; then -# CC="cc" # should be handled already by autoconf - MAKEDEP="-make" -fi - -########################################################################### -# MAC OSX Darwin PPC -########################################################################### -if test "$UNAME" = "Darwin"; then - MAKEDEP="-make" - CFLAGS="$CFLAGS -fno-common" -fi - - -########################################################################## -# OS/2 -########################################################################## -# Properly installed EMX runtime & development package is a prerequisite. -# tools I used: make 3.76.1, uname 1.12, sed 2.05, PD-ksh 5.2.13 -# -########################################################################## -if test "$UNAME" = "OS/2"; then - SHELL=sh - #CC=gcc # should already be handled by configure - - # file extension should already be handled by automake (I don't know, - # please give feedback! - #FILE_EXTENSION=".exe" - -# Uncomment & inspect the GTK lines to use MP3x GTK frame analyzer. -# Properly installed XFree86/devlibs & GTK+ is a prerequisite. -# The following works for me using Xfree86/OS2 3.3.5 and GTK+ 1.2.3: -# AC_DEFINE(HAVE_GTK, 1, have GTK) -# AC_DEFINE(__ST_MT_ERRNO__, 1) -# INCLUDES="-IC:/XFree86/include/gtk12 -IC:/XFree86/include/glib12 \ -# -IC:/XFree86/include $INCLUDES" -# FRONTEND_LDFLAGS="-LC:/XFree86/lib -lgtk12 -lgdk12 -lgmodule -lglib12 \ -# -lXext -lX11 -lshm -lbsd -lsocket -lm $FRONTEND_LDFLAGS" -# FRONTEND_CFLAGS="-Zmtd -Zsysv-signals -Zbin-files $FRONTEND_CFLAGS" -fi - -########################################################################### -# AmigaOS -########################################################################### -# Type 'Make ARCH=PPC' for PowerUP and 'Make ARCH=WOS' for WarpOS -# -########################################################################### -if test "$UNAME" = "AmigaOS" ; then - CC="gcc -noixemul" - OPTIMIZATION="$OPTIMIZATION -m68020-60 -m68881" - MAKEDEP="-MM" - if test "$ARCH" = "WOS"; then - CC="ppc-amigaos-gcc -warpup" - OPTIMIZATION="$OPTIMIZATION -mmultiple -mcpu=603e" - AR="ppc-amigaos-ar" - RANLIB="ppc-amigaos-ranlib" - fi - if test "$ARCH",PPC; then - CC="ppc-amigaos-gcc" - OPTIMIZATION="$OPTIMIZATION -mmultiple -mcpu=603e" - AR="ppc-amigaos-ar" - RANLIB="ppc-amigaos-ranlib" - fi -fi - - -CFLAGS="${OPTIMIZATION} ${CFLAGS}" -LDADD="${LDADD}" -FRONTEND_CFLAGS="${INCICONV} ${FRONTEND_CFLAGS}" -FRONTEND_LDADD="${FRONTEND_LDADD} ${LTLIBICONV} ${CONFIG_MATH_LIB}" - - -AC_SUBST(INCLUDES) - -AC_SUBST(FRONTEND_LDFLAGS) -AC_SUBST(FRONTEND_CFLAGS) -AC_SUBST(FRONTEND_LDADD) -AC_SUBST(CONFIG_MATH_LIB) -AC_SUBST(LDADD) - -AC_SUBST(LIB_MAJOR_VERSION) -AC_SUBST(LIB_MINOR_VERSION) - -AC_SUBST(NASM) -AC_SUBST(NASM_FORMAT) - -AC_SUBST(MAKEDEP) -AC_SUBST(RM_F) - -AC_SUBST(LIBTOOL_DEPS) - -AC_SUBST(WITH_FRONTEND) -AC_SUBST(WITH_MP3X) -AC_SUBST(WITH_MP3RTP) - -AC_SUBST(CPUTYPE) -AC_SUBST(CPUCCODE) - -AC_SUBST(CONFIG_DEFS) - -AC_CONFIG_FILES([Makefile libmp3lame/Makefile libmp3lame/i386/Makefile libmp3lame/vector/Makefile frontend/Makefile mpglib/Makefile doc/Makefile doc/html/Makefile doc/man/Makefile include/Makefile Dll/Makefile misc/Makefile debian/Makefile dshow/Makefile ACM/Makefile ACM/ADbg/Makefile ACM/ddk/Makefile ACM/tinyxml/Makefile lame.spec mac/Makefile macosx/Makefile macosx/English.lproj/Makefile macosx/LAME.xcodeproj/Makefile vc_solution/Makefile]) - -AC_OUTPUT diff --git a/platform/win32/msvc/external/lame/depcomp b/platform/win32/msvc/external/lame/depcomp deleted file mode 100644 index df8eea7e4ce..00000000000 --- a/platform/win32/msvc/external/lame/depcomp +++ /dev/null @@ -1,630 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2009-04-28.21; # UTC - -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free -# Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. - -case $1 in - '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: depcomp [--help] [--version] PROGRAM [ARGS] - -Run PROGRAMS ARGS to compile a file, generating dependencies -as side-effects. - -Environment variables: - depmode Dependency tracking mode. - source Source file read by `PROGRAMS ARGS'. - object Object file output by `PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. - tmpdepfile Temporary file to use when outputing dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to <bug-automake@gnu.org>. -EOF - exit $? - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit $? - ;; -esac - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi - -# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -depfile=${depfile-`echo "$object" | - sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -cygpath_u="cygpath -u -f -" -if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u="sed s,\\\\\\\\,/,g" - depmode=msvisualcpp -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. -## Unfortunately, FreeBSD c89 acceptance of flags depends upon -## the command line argument order; so add the flags where they -## appear in depend2.am. Note that the slowdown incurred here -## affects only configure: in makefiles, %FASTDEP% shortcuts this. - for arg - do - case $arg in - -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; - *) set fnord "$@" "$arg" ;; - esac - shift # fnord - shift # $arg - done - "$@" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the `deleted header file' problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. - tr ' ' ' -' < "$tmpdepfile" | -## Some versions of gcc put a space before the `:'. On the theory -## that the space means something, we add a space to the output as -## well. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" - - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like `#:fec' to the end of the - # dependency line. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr ' -' ' ' >> "$depfile" - echo >> "$depfile" - - # The second pass generates a dummy entry for each header file. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts `$object:' at the - # start of each line; $object doesn't have directory information. - # Version 6 uses the directory in both cases. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.u - tmpdepfile2=$base.u - tmpdepfile3=$dir.libs/$base.u - "$@" -Wc,-M - else - tmpdepfile1=$dir$base.u - tmpdepfile2=$dir$base.u - tmpdepfile3=$dir$base.u - "$@" -M - fi - stat=$? - - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - # Each line is of the form `foo.o: dependent.h'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -icc) - # Intel's C compiler understands `-MD -MF file'. However on - # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want: - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using \ : - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form `foo.o: dependent.h', - # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | - sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp2) - # The "hp" stanza above does not work with aCC (C++) and HP's ia64 - # compilers, which have integrated preprocessors. The correct option - # to use with these is +Maked; it writes dependencies to a file named - # 'foo.d', which lands next to the object file, wherever that - # happens to be. - # Much of this is similar to the tru64 case; see comments there. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir.libs/$base.d - "$@" -Wc,+Maked - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - "$@" +Maked - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" - # Add `dependent.h:' lines. - sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" "$tmpdepfile2" - ;; - -tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in `foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - # With Tru64 cc, shared objects can also be used to make a - # static library. This mechanism is used in libtool 1.4 series to - # handle both shared and static libraries in a single compilation. - # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. - # - # With libtool 1.5 this exception was removed, and libtool now - # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 - tmpdepfile2=$dir$base.o.d # libtool 1.5 - tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 - tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.o.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - tmpdepfile4=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for `:' - # in the target name. This is to cope with DOS-style filenames: - # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. - "$@" $dashmflag | - sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - tr ' ' ' -' < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - "$@" || exit $? - # Remove any Libtool call - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no eat=no - for arg - do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - if test $eat = yes; then - eat=no - continue - fi - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - # Strip any option that makedepend may not understand. Remove - # the object too, otherwise makedepend will parse it as a source file. - -arch) - eat=yes ;; - -*|$object) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done - obj_suffix=`echo "$object" | sed 's/^.*\././'` - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' ' -' | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - "$@" -E | - sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - IFS=" " - for arg - do - case "$arg" in - -o) - shift - ;; - $object) - shift - ;; - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E 2>/dev/null | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" - echo " " >> "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvcmsys) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/platform/win32/msvc/external/lame/doc/Makefile.am b/platform/win32/msvc/external/lame/doc/Makefile.am deleted file mode 100644 index c452a6abe27..00000000000 --- a/platform/win32/msvc/external/lame/doc/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -## $Id: Makefile.am,v 1.2 2001/01/15 15:16:08 aleidinger Exp $ - -include $(top_srcdir)/Makefile.am.global - -SUBDIRS = html man diff --git a/platform/win32/msvc/external/lame/doc/Makefile.in b/platform/win32/msvc/external/lame/doc/Makefile.in deleted file mode 100644 index f0964680254..00000000000 --- a/platform/win32/msvc/external/lame/doc/Makefile.in +++ /dev/null @@ -1,588 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# global section for every Makefile.am -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/Makefile.am.global -subdir = doc -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CONFIG_DEFS = @CONFIG_DEFS@ -CONFIG_MATH_LIB = @CONFIG_MATH_LIB@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CPUCCODE = @CPUCCODE@ -CPUTYPE = @CPUTYPE@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ -FRONTEND_LDADD = @FRONTEND_LDADD@ -FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ -GREP = @GREP@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_CONFIG = @GTK_CONFIG@ -GTK_LIBS = @GTK_LIBS@ -INCLUDES = @INCLUDES@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDADD = @LDADD@ -LDFLAGS = @LDFLAGS@ -LIBICONV = @LIBICONV@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ -LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBICONV = @LTLIBICONV@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEDEP = @MAKEDEP@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NASM = @NASM@ -NASM_FORMAT = @NASM_FORMAT@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -RM_F = @RM_F@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ -SNDFILE_LIBS = @SNDFILE_LIBS@ -STRIP = @STRIP@ -U = @U@ -VERSION = @VERSION@ -WITH_FRONTEND = @WITH_FRONTEND@ -WITH_MP3RTP = @WITH_MP3RTP@ -WITH_MP3X = @WITH_MP3X@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = 1.11 foreign $(top_srcdir)/ansi2knr -SUBDIRS = html man -all: all-recursive - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign doc/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-recursive -all-am: Makefile -installdirs: installdirs-recursive -installdirs-am: -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ - install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic clean-libtool \ - ctags ctags-recursive distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am - - -# end global section - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/platform/win32/msvc/external/lame/doc/html/Makefile.am b/platform/win32/msvc/external/lame/doc/html/Makefile.am deleted file mode 100644 index 1a20404cb52..00000000000 --- a/platform/win32/msvc/external/lame/doc/html/Makefile.am +++ /dev/null @@ -1,27 +0,0 @@ -## $Id: Makefile.am,v 1.7 2010/09/30 20:58:40 jaz001 Exp $ - -AUTOMAKE_OPTIONS = foreign ansi2knr - -docdir = $(datadir)/doc -pkgdocdir = $(docdir)/$(PACKAGE) -htmldir = $(docdir)/html -pkghtmldir = $(pkgdocdir)/html - -pkghtml_DATA = \ - about.html \ - abr.html \ - cbr.html \ - contact.html \ - contributors.html \ - detailed.html \ - history.html \ - index.html \ - introduction.html \ - links.html \ - list.html \ - ms_stereo.html \ - usage.html \ - vbr.html - -EXTRA_DIST = $(pkghtml_DATA) - diff --git a/platform/win32/msvc/external/lame/doc/html/Makefile.in b/platform/win32/msvc/external/lame/doc/html/Makefile.in deleted file mode 100644 index 332e6bad79f..00000000000 --- a/platform/win32/msvc/external/lame/doc/html/Makefile.in +++ /dev/null @@ -1,447 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = doc/html -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__installdirs = "$(DESTDIR)$(pkghtmldir)" -DATA = $(pkghtml_DATA) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CONFIG_DEFS = @CONFIG_DEFS@ -CONFIG_MATH_LIB = @CONFIG_MATH_LIB@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CPUCCODE = @CPUCCODE@ -CPUTYPE = @CPUTYPE@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ -FRONTEND_LDADD = @FRONTEND_LDADD@ -FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ -GREP = @GREP@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_CONFIG = @GTK_CONFIG@ -GTK_LIBS = @GTK_LIBS@ -INCLUDES = @INCLUDES@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDADD = @LDADD@ -LDFLAGS = @LDFLAGS@ -LIBICONV = @LIBICONV@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ -LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBICONV = @LTLIBICONV@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEDEP = @MAKEDEP@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NASM = @NASM@ -NASM_FORMAT = @NASM_FORMAT@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -RM_F = @RM_F@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ -SNDFILE_LIBS = @SNDFILE_LIBS@ -STRIP = @STRIP@ -U = @U@ -VERSION = @VERSION@ -WITH_FRONTEND = @WITH_FRONTEND@ -WITH_MP3RTP = @WITH_MP3RTP@ -WITH_MP3X = @WITH_MP3X@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = $(datadir)/doc -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = $(docdir)/html -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = foreign ansi2knr -pkgdocdir = $(docdir)/$(PACKAGE) -pkghtmldir = $(pkgdocdir)/html -pkghtml_DATA = \ - about.html \ - abr.html \ - cbr.html \ - contact.html \ - contributors.html \ - detailed.html \ - history.html \ - index.html \ - introduction.html \ - links.html \ - list.html \ - ms_stereo.html \ - usage.html \ - vbr.html - -EXTRA_DIST = $(pkghtml_DATA) -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/html/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign doc/html/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-pkghtmlDATA: $(pkghtml_DATA) - @$(NORMAL_INSTALL) - test -z "$(pkghtmldir)" || $(MKDIR_P) "$(DESTDIR)$(pkghtmldir)" - @list='$(pkghtml_DATA)'; test -n "$(pkghtmldir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkghtmldir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkghtmldir)" || exit $$?; \ - done - -uninstall-pkghtmlDATA: - @$(NORMAL_UNINSTALL) - @list='$(pkghtml_DATA)'; test -n "$(pkghtmldir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(pkghtmldir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(pkghtmldir)" && rm -f $$files -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(DATA) -installdirs: - for dir in "$(DESTDIR)$(pkghtmldir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-pkghtmlDATA - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-pkghtmlDATA - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-pkghtmlDATA install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - uninstall uninstall-am uninstall-pkghtmlDATA - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/platform/win32/msvc/external/lame/doc/html/about.html b/platform/win32/msvc/external/lame/doc/html/about.html deleted file mode 100644 index a1ac817f7da..00000000000 --- a/platform/win32/msvc/external/lame/doc/html/about.html +++ /dev/null @@ -1,138 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> - <head> - <meta name="generator" content="PSPad editor, www.pspad.com" /> - <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> - <link rel="stylesheet" type="text/css" href="styles/lame.css" /> - <title>About the LAME encoder - - - -
-
- -
- LAME Official Logo -

About LAME

-
- -

- LAME development started around mid-1998. Mike Cheng started it as a patch - against the 8hz-MP3 encoder sources. After some quality concerns raised by - others, he decided to start from scratch based on the dist10 sources. His - goal was only to speed up the dist10 sources, and leave its quality untouched. - That branch (a patch against the reference sources) became Lame 2.0, and not - until Lame 3.81 (May 2000) the latest remainings of dist10 code were removed, - making LAME no more only a patch. -

- -

- The project quickly became a team project. Mike Cheng eventually left - leadership and started working on tooLame, an MP2 encoder. Mark Taylor became - leader and started pursuing increased quality in addition to better speed. He - can be considered the initiator of the LAME project in its current form. He - released version 3.0 featuring gpsycho, a new psychoacoustic model he - developed. -

- -

- In early 2003 Mark left project leadership, and since then the project has - been lead through the cooperation of the active developers (currently 4 - individuals). -

- -

- Today, LAME is considered the best MP3 encoder at mid-high bitrates and at - VBR1, mostly thanks to the dedicated work of its developers and the open - source licensing model that allowed the project to tap into engineering - resources from all around the world. Both quality and speed improvements are - still happening, probably making LAME the only MP3 encoder still being - actively developed. -

- - -

LAME features:

-
    -
  • - Supports MPEG1, MPEG2 and MPEG2.52 layer III encoding. -
  • -
  • - Encodes in CBR (constant bitrate) and in two types of variable bitrate, VBR and ABR3, as well as freeformat. -
  • -
  • - Supports mono and stereo signals. Stereo signals are encoded by default with - an advanced algorithm4 to maximize the quality. -
  • -
  • - Tuned default parameters for optimum encoding. -
  • -
  • - Fast. Encodes to -V 2 at 17 times realtime on a P4 2.8Ghz. -
  • -
  • - Uses an advanced psycho acoustic and noise shaping model improved during years. -
  • -
  • - Developed under the LGPL - GNU license -
  • -
-
-
    -
  1. See the results of -several blind tests conducted by hydrogenaudio members. -
  2. -
  3. MPEG1 sample rates are 32Khz, 44.1Khz and 48Khz. -
    -MPEG2 sample rates are 16Khz, 22.05Khz and 24Khz. -
    - MPEG 2.5 does not exist as a standard. It is an extension from - fraunhofer that added the possibility - to encode in 8Khz, 11,025Khz and 12Khz. -
  4. -
  5. See Variable Bit Rate and -Average Bit Rate (ABR). -
  6. -
  7. The stereo encoding of LAME automatically switches between - Mid-Side and simple-stereo to maximize the available bits while preserving the - quality. More info in Mid/Side Stereo -
  8. -
-
- -
- -
- - - diff --git a/platform/win32/msvc/external/lame/doc/html/abr.html b/platform/win32/msvc/external/lame/doc/html/abr.html deleted file mode 100644 index 44c0684edd9..00000000000 --- a/platform/win32/msvc/external/lame/doc/html/abr.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - LAME MP3 Encoder ::Average Bit Rate (ABR) - - - -
-
- -
- LAME Official Logo -

LAME - Average Bit Rate (ABR)

-
- -

Suggested usage:

-
lame --abr 128 input.wav output.mp3
- -

- ABR is a mix between CBR and VBR. -

-

- Like CBR, the files will have the (approximate) bitrate specified in the - commandline, and uses the CBR algorithm to compute the number of bits needed - to encode each frame.
-

- -

- Like VBR, the files will use different frame bitrates so instead of relying on - bit reservoir like CBR, each frame just uses the smallest possible bitrate - that can encode it. -

- -

- The difference between ABR and true VBR is in how the desired number of bits - is chosen. The true VBR mode determines the number of bits based on the - quantization noise. VBR figures out how many bits are needed so that the - quantization noise is less than the allowed masking. -

- -

- ABR mode uses the CBR formula to determine the desired number of bits. This - formula is based on the perceptual entropy, which is a rough measure of how - difficult the frame is to encode. -

-

-The majority of frames in a VBR MP3 produced with an ABR method is normally at -or near the target bitrate chosen by the user, but each frame can still -potentially vary within the normal range of 8 to 320 kbps. The ABR encoder will -typically limit the range of bitrates it can choose from, or will greatly favor -certain bitrates, in an effort to ensure that the average comes out near the -target. -

- -

Who should use ABR

- -

-ABR encoding is desirable for users who want the general benefits of VBR (an -optimum bitrate from frame to frame) but with a relatively predictable file size -like they would get with constant bitrate (CBR), and a greater preference for -bitrates that are near a desired target. Inevitably, some frames will be encoded -with more bits than necessary, but the result will always be equal to or better -than that of CBR for the target bitrate. -

- -
- -
- - - \ No newline at end of file diff --git a/platform/win32/msvc/external/lame/doc/html/cbr.html b/platform/win32/msvc/external/lame/doc/html/cbr.html deleted file mode 100644 index 35f43f6ea3a..00000000000 --- a/platform/win32/msvc/external/lame/doc/html/cbr.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - LAME MP3 Encoder :: Constant Bit Rate - - - -
-
- -
- LAME Official Logo -

LAME - Constant Bit Rate

-
- -

Suggested usage:

-
lame -b 128 input.wav output.mp3
- -

-CBR encoding is the basic encoding mode of MP3: The bitrate is kept constant -across the entire file, which means the same number of bits is allocated to -encode each second of audio, and internally, frames of audio data occur at -regular, predictable intervals, given a predictable file size for a given -duration. CBR is therefore the "opposite" of VBR. -

-

-That said, in some formats there may be some variability in the number of bits -that contain actual audio information from frame to frame. This concept manifests -in the bit reservoir of MP3s. In a CBR MP3, even though the frames are of -a fixed size, the audio data is not necessarily distributed consistently between -them; audio for one frame might use fewer bits than the frame has, so that frame -adds the spare bits to a reservoir that can supplement the bits allocated -to the next frame. Thus, the effective bitrate is allowed to vary somewhat in a -CBR MP3, even though there is a fixed number of frames for the duration of audio. -For example, for a 256kbps file, the bitrate of a single frame can be up to 320 -kbps, but the frame immediately before and/or after that one would have to use -fewer bits, whereas in VBR, there would be no such restriction. Consequently, the -amount of variability across the entire MP3 is not as great as that afforded by -VBR, but it is not insignificant; a CBR encoder that does not efficiently use -the reservoir will likely produce a lower quality file than one that does. -

-

-ABR is a more flexible way to encode where filesize is -important, but still giving some flexibility to choose frame sizes. -

-

Who should use CBR

-

-CBR is useful for people who are concerned about maintaining maximum -compatibility, especially with certain streaming applications and some -hardware-based decoders that don't reliably support VBR. -

-

-CBR is also useful for people who desire the ability to obtain accurate -estimates of the bitrate or approximate duration of a file's decoded audio -without scanning and partially decoding the entire file. -

- -
- -
- - - \ No newline at end of file diff --git a/platform/win32/msvc/external/lame/doc/html/contact.html b/platform/win32/msvc/external/lame/doc/html/contact.html deleted file mode 100644 index 11947b564fc..00000000000 --- a/platform/win32/msvc/external/lame/doc/html/contact.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - LAME MP3 Encoder :: Contact Information - - - -
-
- -
- LAME Official Logo -

Contact Information

-
- -

MP3 encoder mailing list

- -

- For general discussions and comments about LAME and MP3 encoding, you can - check the MP3 encoder mailing list. Keep in mind this - is not the preferred list if you want to get in touch with the - developers. -

- -

- Archives - are also available (older archives: before October - 2000) -

- -

LAME development mailing list

- -

- The lame-dev - list is right place for everything related to LAME development: bug - reports, questions and suggestions concerning the encoder, the documentation - and the web pages. It's also the best way to get in touch with the active - developers. - Archives are provided by SourceForge. -

- -

CVS mailing list

- -

- If you want to be automatically notified of commits to CVS, you can subscribe - to the lame-cvs - list. -

- -

IRC

- -

- Some developers and other interested parties can eventually be found on the - #mp3encoder channel on the FreeNode - Network. -

- -

Bug reports/tracker

- -

- To submit bug reports, you can use the bug - tracker besides the lame-dev mailing - list. Please be descriptive in your bug report. You should clearly mention - your problem, LAME version used and how to reproduce the bug. -

- -

Contact developers

- -

- Here is the list of developers. If you encounter - a problem, please use any of the ways mentioned above instead of directly - contact a developer. -

- -

Contact the Webmaster

- -

- The current Webmaster for the LAME project is Roberto Amorim. You can contact him through - e-mail. -

- -
- -
- - - \ No newline at end of file diff --git a/platform/win32/msvc/external/lame/doc/html/contributors.html b/platform/win32/msvc/external/lame/doc/html/contributors.html deleted file mode 100644 index eab23bb03e3..00000000000 --- a/platform/win32/msvc/external/lame/doc/html/contributors.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - LAME MP3 Encoder :: Developers - - - -
-
- -
- LAME Official Logo -

LAME Developers

-
- -

- Note: if possible, please do not contact developers directly, but proceed as - mentioned in the contact page. -

- -

- LAME was originally developed by Mike Cheng, from 1998 to 1999. After he - retired, the project started being maintained by Mark Taylor till early 2003. - After 2003, the project became managed by core developpers' teamwork, with no - official hierarchy or leadership. -

- -

- The following list only represents some of the individuals (in alphabetical - order of family name) that contributed resources to LAME development. LAME - owes its quality and speed to contributions from many other people, including - the many people who post to the mp3encoder mailing list. See - History for more complete details. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Primary developers:
Robert HegemannTuning, optimizations, psychoacoustics...
Alexander LeidingerMultiplatform configuration, libraries handling, release management...
Rogério BritoDebian packaging, debugging.
Primary developers - Retired:
Gabriel BouvigneTuning, optimizations, psychoacoustics...
Mike ChengMaintainer of LAME v2.x.
Frank KlemmPsychoacoustics, optimizations.
Naoki ShibataPsychoacoustics (NSPsytune model, NSSafeJoint).
Mark TaylorMaintainer of LAME v3.x, initial implementer of GPsycho psychoacoustic - model.
Takehiro TominagaPsychoacoustics, bitstream, optimizations, assembly code...
Additional developers:
Roberto AmorimWeb pages and documentation.
John DahlstromAdaptive ATH.
John DeeLAME extended VBR header.
Dominique DuvivierSpeed optimizations.
Albert FaberAuthor of CDex and lame_enc.dll.
Peter GubanovLAME DirectShow Filter.
Guillaume Lessard 
Steve LhommeLAME ACM codec.
Don Meltonid3v1 and v2 code.
Darin MorrisonPresets tuning.
Kyle VanderBeekPython bindings, website clean-up.
- - - -
- -
- - - \ No newline at end of file diff --git a/platform/win32/msvc/external/lame/doc/html/detailed.html b/platform/win32/msvc/external/lame/doc/html/detailed.html deleted file mode 100644 index ff323b5855d..00000000000 --- a/platform/win32/msvc/external/lame/doc/html/detailed.html +++ /dev/null @@ -1,1281 +0,0 @@ - - - - - - - Detailed command-line switches - - - -
-
- -
- LAME Official Logo -

Detailed command line switches

-
- -

Options ordered by feature

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SettingBrief description
Input options
By default, LAME accepts a PCM audio sample inside a .WAV -container as the input file, in 8, 16, 24 and 32 bits integer and in IEEE FLOAT. -If it is compiled with libsndfile, -then it also supports the extra formats that the library supports.
-There is also support for RAW PCM data and and piped input
-For piped/streamed Input, use "-" as the input and/or output - file name.
--out-dir pathIf no explicit output file is specified, a file will be written at given path. Ignored when using piped/streamed input
--mp1input1Input file is an MPEG - layer I file. Implicit if extension is .mp1
--mp2input1Input file is an MPEG - layer II file. Implicit if extension is .mp2
--mp3input1Input file is an MPEG - layer III file. Implicit if extension is .mp3
--scale numberScale input (multiply PCM data) by number.
--scale-l numberScale channel 0 (left) input (multiply PCM data -) by number
--scale-r numberScale channel 1 (right) input (multiply PCM data) - by number
--swap-channelSwap input channels
--nogap file1 file2 ...Gapless encoding for a set of contiguous - files
--nogapout dirOutput dir for gapless encoding (must precede - --nogap)
--nogaptagsAllow the use of VBR tags in gapless encoding
Input options for RAW PCM
-rAssume input file is raw PCM.
-s numberInput sampling frequency in kHz
-x Force byte-swapping of input
--bitwidth w Input bit width is w (default 16)
--signed / --unsigned Input is signed (default) or unsigned
--little-endian / --big-endian Input is little-endian (default) - or big-endian
-aDownmix from stereo to mono file for mono encoding
Constant Bit Rate (CBR)
-b numberSet the bitrate in kbps, default 128 kbps
--cbrEnforce use of constant bitrate
--comp ratioChoose bitrate to obtain the specified compression - ratio
--freeformatProduce a free format bitstream instead of the -standard one. Supported bitrates between 8 and 640 kbps. Scarce support by -decoders.
Variable Bit Rate (ABR)
--abr numberSpecify average bitrate desired (instead of quality) -
Variable Bit Rate (VBR)
-V numberQuality setting for VBR. default number=4.
- Decimal values can be specified, like: 4.51
- 0=highest quality, bigger files. 9.999=lowest quality, - smaller files
--vbr-oldUse old variable bitrate (VBR) routine
-b numberSpecify a minimum allowed bitrate. default 32 kbps (See -F setting below)
-B numberSpecify a maximum allowed bitrate. default 320 kbps
-FEnforce -b option for digital silence frames too, rather than encoding them at 8 or 32 kbps.
-tDisable VBR informational tag
-TEnable and force writing LAME Tag
-YAllows -V2, -V1 and -V0 to not to encode the highest frequencies accurately, if doing so causes disproportional increases in bitrate. This is the same that CBR and ABR modes do.
Operational options
--preset typeEnables some preconfigured settings. Check below -for each of the valid values
--resample sfreqSampling frequency of output file(kHz)- -default=automatic
--priority numberSets the process priority:
- 0,1 = Low priority
- 2 = normal priority (default)
- 3,4 = High priority
--flushFlush output stream as soon as possible
--decodeInput=mp3 file, output=wav
--decode-mp3delay samplesSet the encoder delay to use to decode -the input .mp3 file
-tDisable writing wav header when using --decode
--noasm typeDisable assembly optimizations for mmx/3dnow/sse
Noise shaping & psycho acoustic algorithms
-q numbernumber = 0...9. Default -q 3
- -q 0: Highest quality, very slow
- -q 9: Poor quality, but fast
- Please, see notes in the detailed description
-m modejoint, simple, force, dual-mono, - mono, left, right. default is j.
- joint = joins the best possible of MS and LR stereo
- simple = force LR stereo on all frames
- force = force MS stereo on all frames.
Filter options:
--lowpass numberFrequency(kHz), lowpass filter cutoff above freq. - Range [0.001..50]kHz or [50..50000]Hz
--lowpass-width numberFrequency(kHz), lowpass window width. Range [0.001..16]kHz or - [16..50000]Hz - (See further restriction in the detailed explanation)
--highpass numberFrequency(kHz), highpass filter cutoff below freq. Range [0.001..16]kHz or - [16..50000]Hz (See further restriction in the detailed explanation)
--highpass-width numberFrequency(kHz), highpass window width - (See further restriction in the detailed explanation)
ID3 tag Information
--tt titleAudio/song title (max 30 chars for version 1 tag)
--ta artistAudio/song artist (max 30 chars for version 1 tag)
--tl albumAudio/song album (max 30 chars for version 1 tag)
--ty yearAudio/song year of issue (1 to 9999)
--tc commentUser-defined text (max 30 chars for v1 tag, 28 for v1.1)
--tn track[/total]Audio/song track number and (optionally) the total - number of tracks on the original recording.
(track - and total each 1 to 255. just the track number - creates v1.1 tag, providing a total forces v2.0).
--tg genreAudio/song genre (name or number in list)
--ti fileAudio/song albumArt (jpeg/png/gif file, 128KB max, v2.3)
--tv id=valueText or URL frame specified by id and value (v2.3 tag), user defined text frame syntax: --tv "TXXX=description=content"
--add-id3v2Force addition of version 2 tag
--id3v1-onlyAdd only a version 1 tag
--id3v2-onlyAdd only a version 2 tag
--id3v2-latin1Add following options in ISO-8859-1 text encoding
--id3v2-utf16Add following options in unicode text encoding
--space-id3v1Pad version 1 tag with spaces instead of nulls
--pad-id3v2-size nAdds ID3v2 tag with n padding bytes
--genre-listPrint alphabetically sorted ID3 genre list and exit
--ignore-tag-errorsIgnore errors in values passed for tags
- Note: A version 2 tag will NOT be added unless one of the input fields - won't fit in a version 1 tag (e.g. the title string is longer than 30 - characters), or the '--add-id3v2' or '--id3v2-only' options are used, - or output is redirected to stdout.
MP3 header/stream options:
-e modeDe-emphasis n/5/c (obsolete)
-cMark as copyright
-oMark as non-original
-pError detection. adds 16 bit checksum to every frame - (the checksum is computed correctly)
--strictly-enforce-ISOComply as much as possible to ISO MPEG spec
--replaygain-fastCompute RG fast but slightly inaccurately (default)
--replaygain-accurate1Compute RG - more accurately and find the peak sample
--noreplaygainDisable ReplayGain analysis
--clipdetect1Enable - --replaygain-accurate and print a message whether - clipping occurs and how far the waveform is from full scale
Verbosity:
--disptime secsPrint progress report every secs seconds
--nohistDisable VBR histogram display
--silent / --quietDon't print anything on screen
--verbosePrint a lot of useful information
--version / --licensePrint License information
--help / --usageShows the common list of switches. Add id3 or dev to get help for a specified topic
--longhelpShows the complete list of switches
Experimental switches for developers. Only enabled in alpha/debug -versions:
--noresEach frame will then become independent from previous ones, but the quality will be lower.
--noshortDisable use of short blocks
--shortAllow the use of short blocs (default)
--allshortUse only short blocks
--shortthreshold x[,y]
--temporal-masking xx=0 disables, x=1 enables temporal masking - effect
--notempAlias of --temporal-masking 0
--nssafejointM/S switching criterion
--nsmsfix xM/S switching tuning [effective 0-3.5]
--interch xAdjust inter-channel masking ratio (default 0.0). Range [0.0..1.0]
--ns-bass xAdjust masking for sfbs 0 - 6 (long) 0 - 5 (short)
--ns-alto xAdjust masking for sfbs 7 - 13 (long) 6 - 10 (short)
--ns-treble xAdjust masking for sfbs 14 - 21 (long) 11 - 12 (short)
--ns-sfb21 xChange ns-treble by x dB for sfb21
--substep
--noathDisable the use of ATH
--athonlyUse only ATH
--athshortATH only for short blocks
--athlower xLower the ATH by x.x dB's
--athtype xSelect ATH type curve
--vbr-newIn LAME 3.98, the new VBR was made default, and this switch is now used for experimental tweaks
--buffer-constraint xavailable values for x: default, strict, maximum
Aliases and removed settings
-fAlias of -q 7.
-hAlias of -q 2.
-vAlias of -V 4
-SAlias of --silent
--alt-presetAlias of --preset
--r3mixAlias of -V 3
--vbr-mtrhAlias of LAME 3.98 default vbr mode
--pad-id3v2Alias of --pad-id3v2-size 128
-dNo longer supported
-kNo longer supported
--cwlimitNo longer supported
--ogginputNo longer supported. Compile with -libsndfile instead
-ZCurrently unused
--briefCurrently unused
--nspsytuneCurrently unused
- -

Detailed description in alphabetical order

- -

--a Downmix -

-

-mix the stereo input file to mono and encode as mono.
-

-

-This option is only needed in the case of raw PCM stereo input -(because LAME cannot determine the number of channels in the input file). -To encode a stereo PCM input file as mono, use "lame -m s -a"
-

-

-For WAV and AIFF input files, using "-m m" will always produce a -mono .mp3 file from both mono and stereo input. -

- -

---abr n Average bitrate encoding (aka Safe VBR) -

-

-turns on encoding with a targeted average bitrate of n kbps, allowing -to use frames of different sizes. The allowed range of n is 8...320 -kbps, you can use any integer value within that range. -

- -

---add-id3v2 Force addition of version 2 tag -

-

-Tells LAME to add the tag information as id3v2. This implies adding both, a version 1 -and a version 2 tag, if the values fit on a version 1 tag. See --id3v1-only and ---id3v2-only if you want a more fine-grained control. -

- -

--b n Bitrate -

- - - - - - - - - - - -
Codecsample frequencies (kHz)bitrates (kbps)
MPEG-1 layer III 32, 48, 44.132 40 48 56 64 80 96 112 128 160 192 224 256 320
MPEG-2 layer III 16, 24, 22.05 8 16 24 32 40 48 56 64 80 96 112 128 144 160
MPEG-2.5 layer III 8, 12, 11.0258 16 24 32 40 48 56 64
-

-The bitrate to be used. Default for CBR is 128 kbps MPEG1, 80 kbps MPEG2. -

-

-When used with variable bitrate encodings (VBR), -b specifies the -minimum bitrate to use. This is useful only if you need to circumvent -a buggy hardware device with strange bitrate constrains. (You will need the -F setting too for digital silence).
-Default for ABR/VBR is the minimum allowed bitrate for the MPEG version. (i.e. no limit) -

- -

--B n Max bitrate -

-

-see also option "-b" for allowed bitrates. -

-

-Maximum allowed bitrate when using VBR/ABR. -

-

-Using -B is NOT RECOMMENDED. A 128 kbps CBR bitstream, because of the -bit reservoir, can actually have frames which use as many bits as a -320 kbps frame. ABR/VBR modes minimize the use of the bit reservoir, and -thus need to allow 320 kbps frames to get the same flexibility as CBR -streams. This is useful only if you need to circumvent a buggy hardware -device with strange bitrate constrains.
-Default value is the maximum allowed bitrate for the MPEG versio (i.e. no limit) -

- -

---big-endian Set the byte order to big-endian. -

-

-This switch tells LAME that the RAW pcm input is encoded in big-endian instead -of little-endian. -

- -

---bitwidth Sets the bitwidth value -

-

-With RAW pcm input, this switch lets specify the bitwidth of the same (8 bits, - 16 bits...) -

- -

--c copyright flag -

-

-mark the encoded file as copyrighted -

- -

---cbr Enforce constant bitrate encoding -

-

This switch disables the VBR encoding. Examples:

-
lame -V 0 --cbr input.wav
-Will encode at -b 128 (ignore completely -V and encode at default bitrate) -
lame --preset 160 --cbr
-Will encode at -b 160 (ignore ABR and use the specified bitrate) -
lame --abr 200 --cbr
-Will encode at -b 192 (ignore ABR and use the nearest bitrate to the one specified) - -

---clipdetect Clipping detection -

-

-Enable --replaygain-accurate and print a message whether clipping -occurs and how far in dB the waveform is from full scale. -

-

-This option is not usable if the MP3 decoder was explicitly disabled -in the build of LAME. -

-

-See also: --replaygain-accurate -

- -

---comp x Indicate a compression ratio instead of a bitrate -

-

-Use this in place of the -b setting if you prefer to indicate a compression ratio (integer value). -The ratio is the value of original-filesize/desired-filesize -

- -

---decode MP3 decode capability -

-

-This uses LAME's HIP2 decoder to decode an MP3 (layers 1, 2 and 3) file to a wav file. -

-

-If -t is used (disable wav header), LAME will output -raw pcm in native endian format (use -x to swap bytes). -

-

-This option is not usable if the MP3 decoder was explicitly disabled -in the build of LAME. -

- -

---decode-mp3delay x Indicate a different encoder delay -for decoding -

-

-When decoding an mp3 file, LAME automatically corrects for the start delay that -the encoder had to put into it.
-This setting lets you specify a different delay than LAME's own one, so that it -is possible to compensate for the delay of mp3's generated with other encoders. -

- -

---disptime secs Update the display each secs -

-

-Use this setting to change the frequency that LAME updates the display when -encoding a file. Allows decimal values (like 0.5) -

- -

--e n/5/c Write the de-emphasis flag -

-

- n = (none, default)
- 5 = 50/15 microseconds
- c = ccitt j.17
-

-

-All this does is set a flag in the bitstream. If you have a PCM -input file where one of the above types of (obsolete) emphasis has -been applied, you can set this flag in LAME. Then the mp3 decoder -should de-emphasize the output during playback, although most -decoders ignore this flag. -

-

-A better solution would be to apply the de-emphasis with a standalone -utility before encoding, and then encode without -e. -

- -

--F Enforce the minimum bitrate -

-

-Enforces the minimum bitrate. Without this option, passages of analog -silence will be encoded at the minimum bitrate possible (32 or 8, depending on -MPEG version). -

- -

---flush Flush the output stream as soon as possible -

-

-This setting forces a flush of the data written as soon as the operation has -finished. This is mostly useful in case of streams. With files, it may degrade -performance, since the OS has to write to disk in smaller chunks. -

- -

---freeformat Encode to freeformat stream -

-

-LAME will produce a fixed bitrate, free format bitstream. -User must specify the desired bitrate in kbps, which can -be any integer between 8 and 640. -

-

-Not supported by most decoders. Compliant decoders (of which there -are few) are only required to support up to 320 kbps. -

-

-Decoders which can handle free format: -

- - - - - -
Supports up to
MAD640 kbps
"lame --decode"640 kbps
l3dec310 kbps
- -

---genre-list Print alphabetical ordered list of -known genres -

-

-Tell LAME to print the list of genres with their index to be used with the --tg - setting. -

- - -
123 Acappella
- 34 Acid
- 74 Acid Jazz
- 73 Acid Punk
- 99 Acoustic
- 20 Alternative
- 40 Alternative Rock
- 26 Ambient
-145 Anime
- 90 Avantgarde
-116 Ballad
- 41 Bass
-135 Beat
- 85 Bebob
- 96 Big Band
-138 Black Metal
- 89 Bluegrass
- 0 Blues
-107 Booty Bass
-132 BritPop
- 65 Cabaret
- 88 Celtic
-104 Chamber Music
-102 Chanson
- 97 Chorus
-136 Christian Gangsta
- 61 Christian Rap
-141 Christian Rock
- 32 Classical
- 1 Classic Rock
-112 Club
-128 Club-House
- 57 Comedy
-140 Contemporary Christian
- 2 Country
-139 Crossover
- 58 Cult
- 3 Dance
-125 Dance Hall
- 50 Darkwave
- 22 Death Metal
- 4 Disco
- 55 Dream
-127 Drum & Bass
-122 Drum Solo
-120 Duet
- 98 Easy Listening
- 52 Electronic
- 48 Ethnic
- 54 Eurodance
-124 Euro-House
- 25 Euro-Techno
- 84 Fast Fusion
- 80 Folk
-115 Folklore
- 81 Folk-Rock
-119 Freestyle
- 5 Funk
- 30 Fusion
- 36 Game
- 59 Gangsta
-126 Goa
- 38 Gospel
- 49 Gothic
- 91 Gothic Rock
- 6 Grunge
-129 Hardcore
- 79 Hard Rock
-137 Heavy Metal
- 7 Hip-Hop
- 35 House
-100 Humour
-131 Indie
- 19 Industrial
- 33 Instrumental
- 46 Instrumental Pop
- 47 Instrumental Rock
- 8 Jazz
- 29 Jazz+Funk
-146 JPop
- 63 Jungle
- 86 Latin
- 71 Lo-Fi
- 45 Meditative
-142 Merengue
- 9 Metal
- 77 Musical
- 82 National Folk
- 64 Native US
-133 Negerpunk
- 10 New Age
- 66 New Wave
- 39 Noise
- 11 Oldies
-103 Opera
- 12 Other
- 75 Polka
-134 Polsk Punk
- 13 Pop
- 53 Pop-Folk
- 62 Pop/Funk
-109 Porn Groove
-117 Power Ballad
- 23 Pranks
-108 Primus
- 92 Progressive Rock
- 67 Psychedelic
- 93 Psychedelic Rock
- 43 Punk
-121 Punk Rock
- 15 Rap
- 68 Rave
- 14 R&B
- 16 Reggae
- 76 Retro
- 87 Revival
-118 Rhythmic Soul
- 17 Rock
- 78 Rock & Roll
-143 Salsa
-114 Samba
-110 Satire
- 69 Showtunes
- 21 Ska
-111 Slow Jam
- 95 Slow Rock
-105 Sonata
- 42 Soul
- 37 Sound Clip
- 24 Soundtrack
- 56 Southern Rock
- 44 Space
-101 Speech
- 83 Swing
- 94 Symphonic Rock
-106 Symphony
-147 SynthPop
-113 Tango
- 18 Techno
- 51 Techno-Industrial
-130 Terror
-144 Thrash Metal
- 60 Top 40
- 70 Trailer
- 31 Trance
- 72 Tribal
- 27 Trip-Hop
- 28 Vocal
- -

---help Print the command line help. -

-

-Print the short command line help and exit. -

- -

---highpass number Use a highpass filter when encoding -

-

-Enables a highpass filter of the specified frequency when encoding the source. -Range [0.001..50]kHz or [50..50000]Hz.
-This is usually not required, and the gains are usually minimal. May be useful to -remove an interference signal on 50Hz or 60Hz, or a DC offset. (default: disabled)
-Note: The current implementation has a minimum highpass frequency of (67.5/62)% of the sample rate -(I.e. 481Hz at 44Khz). -

- -

---highpass-width width Set the width of the decaying curve. -

-

-Specify the width in Hz of the decaying curve of the highpass. Range [16..50000]Hz
-The minimum (and default) width is 75% of a band's width (which is 1/64th of the sample rate).
-Note: See the remark in the --highpass command above. -

- -

---id3v1-only Disable the use of id3v2. -

-

-Put it before any tag setting.
-This setting tells LAME to use ID3 v1 tag only, and not create an ID3v2 even if -it thinks it should. -

- -

---id3v2-only Disable the user ov id3v1. -

-

-Put it before any tag setting.
-This setting tells LAME to use ID3 v2 tag only. An ID3 v1 tag would not be written. -

- -

---ignore-tag-errors Ignore tag information errors -

-

-Put it before any tag setting.
-This tells lame to ignore the tag information that sees as erroneous and continue -encoding without those. Without this setting, errors are reported and encoding -does not start. -

- -

---license Print the license page -

-

-Prints version and license information about LAME encoder. -

- -

---little-endian Set the byte order to little-endian. -

-

-This switch tells LAME that the RAW pcm input is encoded in little-endian. It is -the default setting. -

- -

---longhelp Shows the detailed help -

-

-Prints a help page with all of the command-line switches and a brief explanation -of them. -

- -

---lowpass number Use a lowpass filter when encoding -

-

-Enables a lowpass filter of the specified frequency when encoding the source. -Range [0.001..50]kHz or [50..50000]Hz
-

-

-Using a lowpass filter helps reducing the amount of data to encode. This is -important in MP3 due to a limitation in very high frequencies (>16Khz). The -default value depends on the target bitrate/quality. It is not recommended to -change it as a general basis. -

- -

---lowpass-width width Set the width of the decaying curve. -

-

-Specify the width in Hz of the decaying curve of the lowpass. Range [0.001..16]kHz or [16..50000]Hz
-The lowpass is in the center of this curve. -The minimum (and default) width is 75% of a band's width (which is 1/64th of the sample rate). - -

- -

--m x Channel modes -

- - - - - - -
-m mmono
-m sforced L/R stereo
-m jautomatic switch between L/R and M/S stereo
-m fforced mid/side stereo
-m ddual (independent) channels
-

-MONO is the default mode for mono input files. If "-m m" is specified -for a stereo input file, the two channels will be averaged into a mono -signal. -

-

-FORCED L/R STEREO encodes the left and the right signals independently, and -gives more or less bits to each, depending on the currently available. -

-

-JOINT STEREO is the default mode of encoding. jstereo means the encoder can use -(on a frame by frame basis) either L/R stereo or mid/side stereo. -In mid/side stereo, the mid (L+R) and side (L-R) -channels are encoded, and more bits are allocated to the mid channel -than the side channel. When there isn't too much stereo separation, this effectively -increases the bandwidth, so having higher quality with the same amount of bits.
-Using mid/side stereo inappropriately can result in audible -compression artifacts. Too much switching between mid/side and regular -stereo can also sound bad. To determine when to switch to mid/side -stereo, LAME uses a much more sophisticated algorithm than the one -described in the ISO documentation. -

-

-FORCED MID/SIDE STEREO forces all frames to be encoded with mid/side stereo. It -should only be used if you are sure every frame of the input file -has very little stereo seperation. -

-

-DUAL CHANNEL mode is similar to encode the left and right as two mono signals. -The main use of Dual channel is to encode content in two languages. -

- -

---mp1input - --mp2input - --mp3input MPEG layer I, II or III input file -

-

-Assume the input file is an MP1/2/3 file. LAME will decode the input file -before re-encoding it. Since MP3 is a lossy format, this is -not recommended in general. But it is useful for creating low bitrate -mp3s from high bitrate mp3s. If the filename ends in ".mp3" LAME will assume -it is an MP3. For stdin or MP3 files which don't end in .mp3 you need -to use this switch. -

- -

---noasm value Disables the specified assembler -instructions -

-

-When the encoder is compiled with assembler optimizations, this setting allows -to disable them at runtime (They are only enabled if the CPU supports them). -The purpose of this setting is to detect problems in those optimizations, and/or -check the speed difference. -

- -

---nogap file1 file2 [...] Encodes multiple continuous -files. -

-

-Encodes multiple files (ordered by position) which are meant to be played -gaplessly. -

-

-By default, LAME will encode the files with accurate length, but the first and -last frame may contain a few erroneous samples for signals that don't fade-in/out -(as is the case of continuous playback). -

-

-This setting solves that by using the samples from the next/previous file to -compute the encoding. -

- -

---nogapout dir Specify a directory for the output -of the files encoded with --nogap -

-

-This setting should precede --nogap, and is used to specify the alternate -directory where to store the encoded files. The default one is the input file -directory. -

- -

---nogaptags Enables the use of VBR tags with files -encoded with --nogap -

-

-Tells LAME to put VBR tags to encoded files if they are encoded in VBR or ABR -modes. Else, using the --nogap option doesn't generate it. -

- -

---nohist Disable bitrate Histogram -

-

-By default, LAME will display a bitrate histogram while producing -VBR mp3 files. This will disable that feature. -

- -

---noreplaygain Disable ReplayGain analysis -

-

-By default ReplayGain analysis is enabled. This switch disables it. -

-

-See also: --replaygain-accurate, --replaygain-fast -

- -

--o non-original -

-

-Mark the encoded file as a copy -

- -

--p CRC error detection -

-

-Turn on CRC error protection. -It will add a cyclic redundancy check (CRC) code in each frame, allowing to -detect transmission errors that could occur on the MP3 stream. However, it -takes 16 bits per frame that would otherwise be used for encoding, and then -will slightly reduce the sound quality. -

- -

---pad-id3v2 Pad ID3v2 tag. -

-

-Pads the ID3v2 tag with extra 128bytes to allow it to expand. -

- -

---preset x Enable one of the presets -

- - - - - - - - - - - - - - - - - - - -
SettingMeaning
--preset medium-V 5 --vbr-old
--preset standard-V 2 --vbr-old
--preset extreme-V 0 --vbr-old
--preset insane-b 320 --vbr-old
--preset fast xxxAdding the "fast" keyword before the mentioned presets enables the LAME 3.98 default vbr routine.
 
--preset number--abr number
--preset cbr number-b number
Old compatibility settings. Meaningless
--preset phone-b 16 -m m
--preset phon+ / lw / mw-eu-b 24 -m m
--preset mw-us-b 40 -m m
--preset voice-b 56 -m m
--preset fm / radio-b 112
--preset hifi-b 160
--preset cd-b 192
--preset studio-b 256
- -

---priority value Set process priority -

-

-(Windows and OS/2 only) -

-

-Sets the process priority for LAME while running under Windows and/or IBM OS/2. -This can be very useful to avoid the system becoming slow and/or -unresponsive. By setting LAME to run in a lower priority, you leave -more time for the system to update basic processing (drawing windows, -polling keyboard/mouse, etc). The impact in LAME's performance is -minimal if you use priority 0 to 2. -

-

-The valid parameters are: -

- - - - - - - - - - - -
PriorityWindowsOS/2
0Low priority IDLE_PRIORITY_CLASSIDLE, delta = 0
1Medium priority IDLE_PRIORITY_CLASSIDLE, delta = +31
2Regular priority NORMAL_PRIORITY_CLASSREGULAR, delta = -31
3High priority HIGH_PRIORITY_CLASSREGULAR, delta = 0
4Maximum priority HIGH_PRIORITY_CLASSREGULAR, delta = +31
-

-Note that if you call '--priority' without a parameter, then -priority 0 will be assumed. -

- -

--q n Algorithm quality selection -

-

-Bitrate is of course the main influence on quality. The higher the bitrate, -the higher the quality. But for a given bitrate, we have a choice of algorithms -to determine the best scalefactors and Huffman coding (noise shaping). -

-

-For CBR, ABR and --vbr-old modes, the following table applies -

- - - - - -
-q 0Use slowest & best possible version of all algorithms.
-q 3Default value. Good speed, good quality
-q 7Very fast, ok quality. (psycho acoustics are - used for pre-echo & M/S, but no noise shaping is done.
-q 9Disables almost all algorithms including psy-model. Poor quality.
-

-For the default VBR mode since LAME 3.98, the following table applies -

- - - -
-q 0 to -q 4Use the best algorithm.
-q 5 to -q 9Use the not so good algorithm
-

---quiet Don't print any output in the screen -

-

-Disables the screen output. Useful for job processing or other times where -screen output is undesirable. -

- -

--r Input file is raw pcm -

-

-Assume the input file is raw pcm. Sampling rate and mono/stereo -must be specified on the command line. Without -r, LAME will perform -several fseek()'s on the input file looking for WAV and AIFF headers. -

-

-Not supported if LAME is compiled to use LIBSNDFILE. -

- -

---replaygain-accurate Slightly more accurate - ReplayGain analysis and finding the peak sample -

-

-Enable decoding on the fly. Compute "Radio" ReplayGain on the decoded -data stream. Find the peak sample of the decoded data stream and store -it in the file. -

-

-ReplayGain analysis does _not_ affect the content of a compressed data -stream itself, it is a value stored in the header of a sound file. -Information on the purpose of ReplayGain and the algorithms used is -available from http://www.replaygain.org/ -

-

-By default, LAME performs ReplayGain analysis on the input data (after -the user-specified volume scaling). This behaviour might give slightly -inaccurate results because the data on the output of a lossy -compression/decompression sequence differs from the initial input data. -When --replaygain-accurate is specified the mp3 stream gets decoded on -the fly and the analysis is performed on the decoded data stream. -Although theoretically this method gives more accurate results, it has -several disadvantages: -

-
    -
  • tests have shown that the difference between the ReplayGain values - computed on the input data and decoded data is usually no greater - than 0.5dB, although the minimum volume difference the human ear - can perceive is about 1.0dB -
  • -
  • decoding on the fly significantly slows down the encoding process
  • -
-The apparent advantage is that: -
    -
  • with --replaygain-accurate the peak sample is determined and - stored in the file. The knowledge of the peak sample can be useful - to decoders (players) to prevent a negative effect called 'clipping' - that introduces distortion into sound. -
  • -
-

-Only the "Radio" ReplayGain value is computed. It is stored in the LAME tag. -The analysis is performed with the reference volume equal to 89dB. -Note: the reference volume has been changed from 83dB on transition -from version 3.95 to 3.95.1. -

-

-This option is not usable if the MP3 decoder was _explicitly_ disabled -in the build of LAME. (Note: if LAME is compiled without the MP3 decoder, -ReplayGain analysis is performed on the input data after user-specified -volume scaling). -

-

-See also: --replaygain-fast, --noreplaygain, --clipdetect -

- -

---replaygain-fast Fast ReplayGain analysis -

-

-Compute "Radio" ReplayGain of the input data stream after user-specified -volume scaling and/or resampling. -

-

-ReplayGain analysis does _not_ affect the content of a compressed data -stream itself, it is a value stored in the header of a sound file. -Information on the purpose of ReplayGain and the algorithms used is -available from http://www.replaygain.org/ -

-

-Only the "Radio" ReplayGain value is computed. It is stored in the LAME tag. -The analysis is performed with the reference volume equal to 89dB. -Note: the reference volume has been changed from 83dB on transition -from version 3.95 to 3.95.1. -

-

-This switch is enabled by default. -

-

-See also: --replaygain-accurate, --noreplaygain -

- -

---resample n Output sampling frequency in kHz -

-

-where n = 8, 11.025, 12, 16, 22.05, 24, 32, 44.1, 48 -

-

-Output sampling frequency. Resample the input if necessary. -

-

-If not specified, LAME may sometimes resample automatically -when faced with extreme compression conditions (like encoding -a 44.1 kHz input file at 32 kbps). To disable this automatic -resampling, you have to use --resample to set the output sample rate -equal to the input sample rate. In that case, LAME will not -perform any extra computations. -

- -

--s n Sampling frequency in kHz -

-

-where n = sampling rate in kHz. -

-

-Required for raw PCM input files. Otherwise it will be determined -from the header information in the input file. -

-

-LAME will automatically resample the input file to one of the -supported MP3 sample rates if necessary. -

- -

---scale arg ---scale-l arg ---scale-r arg Scale the amplitude of the input file -

-

-Scales input by arg. This just multiplies the PCM data -(after it has been converted to floating point) by arg. -

-

-arg > 1: increase volume
-arg = 1: no effect
-arg < 1: reduce volume
-

-

-Use with care, since most MP3 decoders will truncate data -which decodes to values greater than 32768. -

-

-The l and r variants apply the scaling only to left (channel 0) or right -(channel 1) respectively. -

- -

---signed Input RAW uses signed values -

-

-Use with RAW pcm to indicate if the data is signed (values centered at zero) or -unsigned (all positive values). This is the default value. -

- -

---silent Don't print any output in the screen -

-

-Disables the screen output. Useful for job processing or other times where -screen output is undesirable. -

- -

---space-id3v1 Use spaces for padding. -

-

-Use spaces instead of null values for padding data in an ID3v1 tag. -

- -

---strictly-enforce-ISO Strict ISO compliance -

-

-With this option, LAME will enforce the 7680 bit limitation on -total frame size. This results in many wasted bits for -high bitrate encodings. Some decoders need it. -

- -

--t Disable VBR tag or disable WAV header -

-

This setting has two different uses:

-

-When encoding to VBR, this setting disables writing the VBR Tag (also known as XING tag). -This tag is embedded by default in the frame 0 of the MP3 file. It lets VBR aware players -to correctly seek and compute playing times in such files.
-

-

-When decoding MP3 to WAV using --decode, this flag will -disable writing the WAV header. The output will be raw pcm, -native endian format. Use -x to swap bytes. -

- -

--T Force the usage of the LAME tag -

-

-By default, LAME already adds a LAME tag when encoding. -This setting overrides the -t setting, and implies --nogaptags. -

- -

---unsigned Input RAW uses unsigned values -

-

-Use with RAW pcm to indicate if the data is signed (values centered at zero) or -unsigned (all positive values). -

- -

---usage Print the command line help. -

-

-Print the short command line help and exit. -

- -

--V n Enable VBR encoding -

-

-Encodes using the VBR algorithm, at the indicated quality.
-Decimal values can be specified, like: 4.51
-0=highest quality, bigger files. 9.999=lowest quality, smaller files -

-

-Using -V 7 or higher (lower quality) is not recommended. -ABR usually produces better results. -

- -

---vbr-old Uses the old VBR method of encoding -

-

-Tells LAME to encode to VBR using the old (slower) method of encoding. -

- -

---verboseProgram verbosity -

-

-Print a lot of information on screen. -

- -

---version Prints the license page -

-

-Prints version and license information about LAME encoder. -

- -

--x Swap input bytes -

-

-swap bytes in the input file (and output file when using --decode). -For sorting out little endian/big endian type problems. If your -encodings sound like static, try this first. -

- -

--Y Ignore noise in sbf21, like CBR mode does -

-

-Allows -V2, -V1 and -V0 to not to encode the highest frequencies accurately, -if doing so causes disproportional increases in bitrate. This is the same that -CBR and ABR modes do.
-Due to the design of the MP3 format, to keep precision in the last scalefactor -band, an encoder needs to increase the precision in all the bands (not only in -this one).
-The consequence is an increase of bitrate (+60kbps in some cases) compared to -not keeping that precision. Generally, this band should allow for distortions, -so using it shouldn't cause harm. -

- -

  -

- -
-
    -
  1. If compiled with decoding capabilities
  2. -
  3. HIP stands for Hip Isn't a Player and is based off of - Michael Hipp's mpglib 0.2a
  4. - -
-
- -
- -
- - - diff --git a/platform/win32/msvc/external/lame/doc/html/history.html b/platform/win32/msvc/external/lame/doc/html/history.html deleted file mode 100644 index f7f03f50963..00000000000 --- a/platform/win32/msvc/external/lame/doc/html/history.html +++ /dev/null @@ -1,3460 +0,0 @@ - - - - - - - - - - LAME Changelog - - - - - - - -
-

History

- -
- -Starting with LAME 3.0:
- -red = features and bug fixes which -affect quality
- -blue = features and bug fixes which -affect speed
- -black = usability, portability, other - -
-

LAME 3.99.5   February 28 2012

-
    -
  • Rogério Brito -
      -
    • autotools: Fix compilation on alpha using proper ifdef guards. Thanks to Andres Mejia. -
    • -
    • Small correction of the documentation. -
    • -
    -
  • -
  • Robert Hegemann -
      -
    • Workaround for cygwin build problem. Tracker item [ 3480692 ] mingw-w64 compilation error -
    • -
    • Fix for a problem when LAME is compiled with fast floating point math. It could result in bitrate bloat with silent input data. -
    • -
    • Bug fix for tracker item [ 3486753 ] Artifacts at the beginning of decoded file -
    • -
    -
  • -
- -
-

LAME 3.99.4   January 25 2012

-
    -
  • Robert Hegemann -
      -
    • Fix for tracker item [ 3475581 ] lame crashes at .w64 input file -
    • -
    • Addressing things brought to attention by tracker item [ 3463197 ] 3.99.x problem WFED and PCST frames -
      • WFED and PCST frames can now be added, to tag podcasts iTunes recognizes
      • -
      • USER frames are now supported
      • -
      • COMM frames can now have a description, when passed via --tv "COMM=description=full text"
      • -
      • possible divide-by-zero exception should be fixed
      • -
      • adding malformed user-defined-frames could result in abnormal program termination, fixed
      • -
      -
    • -
    -
  • -
- -
-

LAME 3.99.3   November 26 2011

-
    -
  • Robert Hegemann -
      -
    • Fix for tracker item [ 3441349 ] --tg does not handle genre number when adding unicode tag -
    • -
    -
  • -
- -
-

LAME 3.99.2   November 18 2011

-
    -
  • Robert Hegemann -
      -
    • Due to some bugs in 3rd party HW/SW decoders, those were not - be able to make use of LAME's extended info tag anymore, - resulting in problems with things like gapless playback. -
    • -
    -
  • -
- -
-

LAME 3.99.1   November 05 2011

-
    -
  • Robert Hegemann -
      -
    • Fixes for several issues with ID3v2 unicode tags, using Big-Endian text encodings. - Because of several other software (like Windows Media Player), - LAME writes Little-Endian unicode tags only.
      - Thanks to Taihei Monma, for reporting these issues. - Tracker items: [ 3431203, 3431222, 3431241 ] -
    • -
    -
  • -
- -
-

LAME 3.99   October 15 2011

-
    -
  • 3.99 beta 1 becomes 3.99
  • -
- -
-

LAME 3.99 beta 1   not yet released

-
    -
  • Robert Hegemann -
      -
    • Fix for Bugtracker item [ 3395813 ] id3tag_set_fieldvalue for URL link frames Broken -
    • -
    • Fix for Bugtracker item [ 3368977 ] Wave Parser doesn't pad chunks -
    • -
    • Fix for Bugtracker item [ 3034259 ] confusing fatal error: can't update LAME-tag frame! -
    • -
    -
  • -
-

LAME 3.99 beta 0   not officially released

-
    -
  • Josep Maria Antolín Segura -
      -
    • Documentation work -
    • -
    -
  • -
  • Rogério Brito -
      -
    • Improve Debian packaging. -
        -
      • Include suggestions made by Fabian Greffrath
      • -
      • Update version of the Debian package to reflect that it is taken from CVS.
      • -
      • Get rid of a transitional package
      • -
      • Much more to come...
      • -
      -
    • Minor fix to validate the history file correctly
    • -
    -
  • - -
  • Robert Hegemann -
      -
    • Porting of LAME mp3rtp program to Windows platform -
    • -
    • Fix: for free format mp3 above 320 kbps, the maximum allowed bits was limited too far. -
    • -
    • Changed behaviour: LAME replaces common suffixes by MP3/WAV when no output filename was given. For example, a simple lame x.wav will create output file x.mp3 -
    • -
    • UNICODE support on Windows OS, file names and ID3v2 tags; - related: Bugtracker item [ 3052230 ] Lame.exe can't find files with non-ASCII names -
    • -
    • Added support for WAVE FORMAT IEEE FLOAT input files -
    • -
    • New switch --swap-channel added, see tracker item [ 1118412 ] RFE: option to swap L and R channels -
    • -
    • New switches -m l and -m r to select either left or right channel for mono encoding. -
    • -
    • Feature request item [ 3134258 ] Allow larger images with LAME (>128KB) -
    • -
    • Fix for Bugtracker item [ 2962223 ] Encoder delay and padding values ignored when re-encoding -
    • -
    • Fix for Bugtracker item [ 2986823 ] Error when building Lame with NASM support -still exists -
    • -
    • Fix for Bugtracker item [ 3125235 ] make -f Makefile.mingw32 fails -
    • -
    • Fix for Bugtracker item [ 3021935 ] ID3 tag TXXX cannot be used more than once -
    • -
    • Fix for Bugtracker item [ 3025801 ] gain_analysis.h needs int constants -
    • -
    • Fix for Bugtracker item [ 3277412 ] Segmentation fault at layer2.c:105 with --decode -
    • -
    • Changes in new VBR code: -
        -
      • tuning on PSY model
      • -
      • tuning on VBR scale and resulting bitrates
      • -
      • Minor bug fix for sfb21 encoding
      • -
      -
    • -
    • All encoding modes use the PSY model from new VBR code, addresses Bugtracker item [ 3187397 ] Strange compression behavior -
    • -
    • Fix for a possible out of bounds array access in HIP decoder, addresses Bugtracker item [ 3091776 ] crash at III_dequantize_sample -
    • -
    -
  • -
- -
-

LAME 3.98.4    March 22 2010

-
    -
  • Joseph Flynn -
      -
    • Improvements for LAME DirectShow filter: -
        -
      • Added support for the DirectShow IAMStreamConfig Interface to the LAME encoder filter output pin. -
      • -
      • Modified the DirectShow filter registration section so that the LAME Encoder filter is correctly registered in the Audio Compressors filter category. This will allow third-party encoding applications using the DirectShow System Device Enumerator Interface to correctly detect the LAME encoder when querying the Audio Compressors filter group. -
      • -
      • Modified the filter registration information so that the MP3 audio subtype is correctly reported as being supported on the encoder output pin. This will allow third-party encoding applications using the DirectShow IFilterMapper2 Interface to recognize that the LAME encoder supports MP3 output. -
      • -
      • Altered the Filter Merit Value that was being used when the filter was registered so that it is now using the standard DirectShow compressor filter merit value of MERIT_DO_NOT_USE (0x200000). Previously, the filter was being registered using a value of MERIT_SW_COMPRESSOR (0x100000), which was at a lower priority (i.e. worse priority) than MERIT_DO_NOT_USE. This prevented the LAME Encoder filter from being selected for use by some third-party encoding applications. -
      • -
      • Added code to calculate the frame length of the audio frames used for the nBlockSize element of the WAVEFORMATEX output structure. Previously this value was simply hard-coded to 1. -
      • -
      -
    • -
    -
  • - -
  • Robert Hegemann -
      -
    • Fix for Bugtracker item [ 2973877 ] A problem regarding the new drain code -
    • -
    -
  • -
- -

LAME 3.98.3    February 27 2010

-
    -
  • Rogério Brito: -
      -
    • Update the debian packaging for the new release. -
    • -
    -
  • -
  • Robert Hegemann -
      -
    • The ignore-tag-errors switch had no effect when embedding album art, fixed.
    • -
    • Library API change: lame_decode functions are now obsolete but still present, please use hip_decode instead. - The reason for this change is: lame_decode functions use a single global variable within the library - to store decoder setup, hip_decode functions don't. - The encoder now uses hip_decode internally and it is now possible to use clipdetect - feature while reencoding mp3 to mp3. -
    • -
    • Workaround for FFMPEG bug, which uses to call lame_encode_flush more than once in a loop. -
    • -
    • Windows: program icon and version info added (when building with VC9) -
    • -
    • Fix for Bugtracker item [ 2688413 ] lib name problem in Microsoft Visual Studio 6 -
    • -
    • Fix for Bugtracker items [ 2051870, 2423650, 2928684 ] several small documentation issues -
    • -
    • Fix for Bugtracker item [ 2723518 ] resampling in 3.98 and 3.99alpha -
    • -
    • Fix for Bugtracker item [ 2891879 ] Because of Windows API change, there was a problem with the prority switch. -
    • -
    • Fix for Bugtracker item [ 2893101 ] Access Violation in BladeMP3EncDLL if UNICODE was defined. -
    • -
    • Fix for Bugtracker item [ 2887359 ] Wrong length in ID3v2 tag when num_samples isn't set -
    • -
    • Fix for Bugtracker item [ 2872590 ] LameTAG: "Music length" missmatch in LAME 3.98 -
    • -
    • Fix for Bugtracker item [ 2824296 ] wrong enc_padding value in LAME 3.99a and 3.98.3 (from CVS) -
    • -
    • Revisiting the FhG decoder problem (FhG V1.5 build 50, ships with MS Windows): - enabling the new-drain-code seems to solve that issue better, than restricting the buffer size (see below: 3.98 beta 1, May 16 2007). -
    • -
    • Patch submitted by Bernhard Doebler, tracker item [ 2807676 ] Error when building Lame with NASM support -
    • -
    • Patch submitted by Mancuso Raffaele, tracker item [ 2406420 ] compile lame_enc.dll under cygwin -
    • -
    -
  • -
- -

LAME 3.98.2    September 22 2008

-
    -
  • Robert Hegemann -
      -
    • Fix for Bugtracker item [ 2123206 ] lame 3.98.1 segfaults with -h -
    • -
    -
  • -
- -

LAME 3.98.1    September 21 2008

-
    -
  • Rogério Brito: -
      -
    • More fixes for the abx tool for Unix systems: -
        -
      • Plugged a memory leak.
      • -
      • Fixed an endianness problem: users of big-endian machines - can now do abx tests.
      • -
      -
    • -
    • Fixed history's HTML doctype
    • -
    • - Fixed history so that it finally validates - at W3's validator -
    • -
    • - Fixed compilation of frontend mp3rtp.c. Thanks to Kris Karas. - Bugtracker item [ 2015432 ] mp3rtp missing uint16_t in lame 3.98 -
    • -
    -
  • -
  • Robert Hegemann: -
      -
    • Fix for Bugtracker item [ 2031704 ] --id3v1-only didnt work in 3.98-final
    • -
    • Fix for Bugtracker item [ 2022035 ] encoder_padding value and resampling
    • -
    • Fix for Bugtracker item [ 2029282 ] Frequency filtering API broken in 3.98
    • -
    • Fix for Bugtracker item [ 2039648 ] potential memory leak in parse_args() function in parse.c
    • -
    • Fix for some tagging issues: -
        -
      • Made search for ID3v1 genres more sloppy, abbrevations may match more often as some simple typos. - Examples:
        • --tg "Alt. Rock" matches genre "Alternate Rock"
        • -
        • --tg "acapela" matches genre "A Cappella"
        • -
      • -
      • New switch --pad-id3v2-size "n": adds ID3v2 tag with n padding bytes.
      • -
    • -
    -
  • -
- -
-

LAME 3.98    July 4 2008

-
    -
  • Anton Sergunov: -
      -
    • Frontend DirectShow: enabling LAME dshow filter to connect to "File Writer Filter". -
    • -
    -
  • -
  • Rogério Brito: -
      -
    • Updates to the Debian Packaging
    • -
    • Fixes to the abx tool for Unix systems (so that more people - can evaluate LAME's compression against the original files)
    • -
    -
  • -
  • Alexander Leidinger: -
      -
    • explicitely link the math lib to the lame lib
    • -
    • add switch to disable the use of the compaq optimized math lib
    • -
    -
  • -
- -

LAME 3.98 beta 8   April 13 2008

-
    -
  • Robert Hegemann: -
      -
    • LAME now accepts a floating point value in the range [0,...,10[ as VBR quality setting, like -V5.678 -
    • -
    • Found and fixed some suspicious code in additive masking calculation for VBR-NEW -
    • -
    • bug-fix:experimental code was defaulted by accident for VBR-NEW -
    • -
    • fix for some endianess problem on big-endian machines -
    • -
    -
  • -
- -

LAME 3.98 beta 7   April 6 2008

- -
    -
  • Robert Hegemann: -
      -
    • libmp3lame API: allow frontends to separately retrieve LAME/Xing and ID3 data, because the old library automatism - makes it impossible to make fully buffered encodes. -
    • -
    • libmp3lame API: added some experimental unicode ID3 tagging code. -
    • -
    • frontends: write itself final ID3 tags and LAME/Xing header frame -
    • -
    • lame_enc.dll: writes itself final LAME/Xing header frame -
    • -
    • Latest changes to the new VBR psymodel: -
        -
      • uses a different spreading function -
      • -
      • bug-fix for out-of-bounds array access (program stack corruption possible) -
      • -
      -
    • -
    -
  • -
- -

LAME 3.98 beta 6   December 16 2007

- -
    -
  • Robert Hegemann: -
      - -
    • Feature request [ 1811483 ] WAVE_FORMAT_EXTENSIBLE support (PCM) -
    • - -
    • Fix for some rare scalefactor selection issue the newer vbr code had at low compression levels -
    • - -
    • Fix for Bugtracker item[ 1813496 ] AIFF parsing bug -
    • - -
    • Latest changes to the new VBR code: -
        - -
      • it now has its own psy model, a derivation from NSPSY. -
      • - -
      • some more tuning has been done for this new psy model. - Many thanks to Horst Albrecht and Myles Thaiss. -
      • - -
      • the "out-of-bits" strategy is reworked -
      • - -
      - -
    • It was possible, that the "interchannel masking effects feature" - was used by the dual-channel-mode for bi-lingual encodings too. It was meant to work - on stereo L/R channels only. -
    • - -
    -
  • -
- -

LAME 3.98 beta 5   August 12 2007

- -
    - -
  • Jonathan Stott: - -
      - -
    • Bug tracker items: [ 1590693 ] ID3v2 tag not writing, [ 1636267 ] ID3v2 tags overwritten
      - If the output file is opened 'write-only', then LAME can't update the LAME tag. - In this case LAME silently overwrote the first bytes of the file and an - optional ID3v2 tag disappeared. Now an error message will be printed and - no data is written in this case. -
    • - -
    - -
  • - -
  • Robert Hegemann: -
      - -
    • Fix for Bugtracker item [ 1719593 ] Track numbers > 255 not allowed even with --id3v2-only - -
    • Fix for Bugtracker item [ 1742623 ] fail(lame --mp3input -m m -b 128 --resample 8 *.mp3 **.mp3)
      - The problem here was, the input files are MPEG-1 Layer2 files named as MP3s. Even if you leave out - the --mp3input switch LAME tried to decode the input files as Layer3 files because of the file name - extension and because it found some valid looking Layer3 synchronization header. - The fixed LAME version does not assume the file name extension is always correct and treats the files - depending on the first found MPEG sync word. The files in question are now correctly detected as - Layer2 files and transcoding does succeed. -
    • - -
    • Fix for Bugtracker item [ 1445175 ] Input being stdin fails in Windows on WAV files
      - The problem here was, seeking on pipes shows some different behaviour depending on C-Library - implementations. The workaround tries to detect it's working on a pipe and doing some - reading instead of seeking in that case. -
    • - -
    • Fixing some memory leak in the 'lame_enc.dll'. -
    • - -
    • Fix for Bugtracker items [ 1160757, 1160741 ] --little-endian / --big-endian not working
      - These switches where originally intended to be used together with Libsndfile only. -
    • - -
    • Fix for Bugtracker item [ 1746336 ] Incorrect Bitrate with ABR und --resample, LAME 3.98b4
      - Some earlier bug-fix had some typo. As a result, when adding a '--resample 123' switch, - the average bitrate rised upto maximum bitrate. -
    • - -
    -
  • - -
- -

LAME 3.98 beta 4   June 23 2007

- -
    - -
  • Dennis Lambe Jr: Added support for total track count (id3v2) in the frontend -
  • - -
  • Nyaochi: -
      - -
    • Ability to set user-defined ID3v2.3 frame
    • - -
    • Ability to include albumArt in ID3v2.3 tag
    • - -
    - -
  • - -
  • Robert Hegemann: -
      - -
    • Bugfix: the "play length in ms", which is stored in the ID3v2 tag TLEN, was not correctly computed. - Some hardware and software players were confused by this garbage data.
    • - -
    • Out of bits strategy for the newer VBR code overhauled
    • - -
    • LAME API: the ID3 tag functions do not store the pointers passed anymore, - they do make deep copies of strings passed as parameters. -
    • - -
    • Changes in LAME frontend switches regarding ID3 tags: -
      --tg "MyGenre" will route unknown ID3v1 genres to "Other" for ID3v1 tags - and will be stored as plain text "MyGenre" for ID3v2 tags. Genres given by known - ID3v1 numbers will be stored as its corresponding text in ID3v2 tags. -
      --tn "02/02" will store the track number specified as plain text as-is - for ID3v2 tags. -
    • -
    - -
  • - -
- -
- -

LAME 3.98 beta 3   May 22 2007

- -
    - -
  • Robert Hegemann: -
      - -
    • Fixes regarding max number of bits limitation
    • - -
    - -
  • - -
- -
- -

LAME 3.98 beta 2   May 20 2007

- -
    - -
  • Robert Hegemann: -
      - -
    • Bug tracker item: [ 1693461 ]; - Fixed memory leaks in ACM codec
    • - -
    • Fixed encoding of non-standard sampling rates in CBR
    • - -
    • Improved VBR strategy when running out of bits
    • - -
    - -
  • - -
- -
- -

LAME 3.98 beta 1   May 16 2007

- -
    - -
  • Alexander Leidinger: -
      - -
    • Add TLEN (ID3v2) support (Submitted by: Linus Walleij).
    • - -
    • Add number of total tracks per album (ID3v2) support -(Submitted by: Kyle VanderBeek).
    • - -
    • Some seatbelts for overflowing arrays in the ID3v2 -support.
    • - -
    • Update the RPM spec (Submitted by: Kyle VanderBeek).
    • - -
    • Fix some mem-leaks in the error case.
    • - -
    • Update to newer autotools versions.
    • - -
    • Update to use a recent libsndfile (submitted by -libsndfile author).
    • - -
    • Intrinsics support -enabled for gcc
    • - -
    - -
  • - -
  • Robert Hegemann: -
      - -
    • The newer VBR code is now LAME's default - VBR routine
    • - -
    • Fixed: in case of -not enough bits the new vbr code incorrectly used old vbr routine
    • - -
    • Improved ATH -adjustment in low volume cases
    • - -
    • Fixed (PSY model): mapping from convolution bands - to partition bands was broken since we replaced tables by own calculation - several years ago
    • - -
    • Fixed (PSY model): loss of fraction in equal loudness weighting
    • - -
    • Fixed (PSY model): in NSPSY highpass filter, out of bounds access in fircoef
    • - -
    • Known problem samples for the new VBR code: - many of them are at an acceptable quality level now; - with a big 'Thank You' to Francis Niechcial
    • - -
    • Modified VBR strategy to handle out of bits cases
    • - -
    • Restricted bitreservoir size for 320 kbps frames to - the size used for sideinfo, because of decoding problems - with FhG decoders installed on almost every Windows system
    • - -
    • LAME aborts on unsupported input files - or unrecognized parameter options passed more often now
    • - -
    • Bug tracker item: [ 1596306 ] "fatal error during initialization"; - an invalid MPEG samplerate was returned by optimum_samplefreq function
    • - -
    • Bug tracker item: [ 1585942 ] lame not --silent when TERM not set; - in case LAME was build with TERMCAP defined and no TERM - environment is defined, now we do not issue an error message and - silently fallback to the default behaviour as if LAME was - compiled without TERMCAP defined.
    • - -
    • Bug tracker item: [ 1711980 ] LAME writes invalid Xing header when ID3 tags exist; - LAME was sometimes writing an invalid Xing/Info header
    • - -
    • Feature request: [ 1588283 ] Flushing output stream in lame.exe; - 'flush' option added
    • - -
    • Added FFTSSE and FFT3DNOW assembler code from - Lame4 branch
    • - -
    • Changes in lame frontend switches: - -k removed, add lowpass and highpass switches if you need to change - them; --short/noshort/allshort - degraded into DEVELOPER ONLY switches - normal users shouldn't use them; -X -Z degraded to - DEVELOPER ONLY switches, -X is too tough to communicate to - end users and -Z isn't used actualy
    • - -
    • Fixed some console printing problems
    • - -
    • Windows: ACM code now uses LAME library API only, all - references to private include files are removed
    • - -
    • Windows: DirectShow code now uses LAME library API only, all - references to private include files are removed
    • - -
    • Windows: disabled code that resets processor affinity, - because this doesn't belong to LAME, but seems to work around - some problems the parent process has (in most cases EAC)
    • - -
    - -
  • - -
  • John33: -
      - -
    • Fixed mp2 and mp3 decoding: For mp3 and mp2 decoding, -this now yields the same output as foobar2000 but the error checking -remains unchanged
    • - -
    - -
  • - -
  • Gabriel Bouvigne: -
      - -
    • VC8 project files
    • - -
    • Added support for x64 under VC8
    • - -
    • Restricted MPEG 2.5 to 64kbps frames
    • - -
    - -
  • - -
  • Takehiro Tominaga: -
      - -
    • SSE version of FFT
    • - -
    - -
  • - -
- -
- -

LAME 3.97   September 24 2006

- -
    - -
  • 3.97 beta 3 becomes 3.97
  • - -
- -
- -

LAME 3.97 beta 3   August 19 2006

- -
    - -
  • Gabriel Bouvigne: -
      - -
    • Workaround against a -short blocks detection issue
    • - -
    - -
  • - -
- -
- -

LAME 3.97 beta 2   November 26 2005

- -
    - -
  • Gabriel Bouvigne: -
      - -
    • Fixed an initialization error when input is not using a -standard sampling frequency
    • - -
    • Fixed a possible assertion failure in very low bitrate -encoding
    • - -
    • Slight change -regarding ATH adjustment with V5
    • - -
    • Reinstated bit -reservoir for 320kbps CBR
    • - -
    • ReplayGain analysis -should now be faster when encountering silent parts
    • - -
    - -
  • - -
  • Takehiro Tominaga: -
      - -
    • Fixed a possible link problem of assembly code
    • - -
    - -
  • - -
- -
- -

LAME 3.97 beta 1   September 12 2005

- -
    - -
  • Takehiro Tominaga: -
      - -
    • Fixed an out of array access in mp3rtp
    • - -
    • Fixed a quality -setting in DLL
    • - -
    • Fixed display when using --silent
    • - -
    - -
  • - -
  • Vitaly Ivanov: -
      - -
    • Updated DirectShow interface
    • - -
    - -
  • - -
  • Robert Hegemann: -
      - -
    • Fixed an out of -array access
    • - -
    • Fixed some small -rounding problem in vbr-new quantization routines
    • - -
    • Fixed a bug in -vbr-new regarding high frequencies (sfb21) when using -Y
    • - -
    • Fixed a few bugs in -vbr-new when using -Y
    • - -
    • Updated scalefactors -allocation scheme in vbr-new
    • - -
    • Fixed mingw32 configure problems
    • - -
    • Resolved some compiler warnings
    • - -
    • Updated command-line visualisation
    • - -
    - -
  • - -
  • Gabriel Bouvigne: -
      - -
    • Changed some FLOAT8 to FLOAT
    • - -
    • Added project files for VC7
    • - -
    • Reworked -q1 and -q0
    • - -
    • Updated presets
    • - -
    • Fixed an error in -ISO quantization on systems not using the IEEE754 hack
    • - -
    • Faster quantization
    • - -
    • SSE version of -init_xrpow
    • - -
    - -
  • - -
  • Rogério Brito: -
      - -
    • Updated Debian packaging
    • - -
    • Documentation work
    • - -
    - -
  • - -
  • Chris Miller: -
      - -
    • Support for x64 platform SDK in makefile.msvc
    • - -
    - -
  • - -
- -
- -

LAME 3.96.1    July 25 2004

- -
    - -
  • Robert Hegemann: -
      - -
    • Fixed a rare bug in -vbr-new (could lead to crashes or data corruption)
    • - -
    - -
  • - -
  • Gabriel Bouvigne: -
      - -
    • some fixes in ACM codec
    • - -
    • fixed padding when encoding to 320kbps
    • - -
    • fixed block size -selection for mid and side channels
    • - -
    - -
  • - -
- -
- -

LAME 3.96    April 11 2004

- -
    - -
  • Gabriel Bouvigne: -
      - -
    • new quantization -selection mode (used in ABR/CBR)
    • - -
    • set sfscale for -ABR/CBR up to 160kbps
    • - -
    - -
  • - -
- -
- -

LAME 3.96 beta 2    March 28 2004

- -
    - -
  • Takehiro Tominaga: -
      - -
    • removed unnecessary -integer convertion in resampling
    • - -
    - -
  • - -
  • Robert Hegemann: -
      - -
    • reworked scalefactor -allocation in vbr-new
    • - -
    • fixed a freeformat decoding problem
    • - -
    - -
  • - -
  • Gabriel Bouvigne: -
      - -
    • updated minimal -bitrate for V1 and V2
    • - -
    - -
  • - -
  • Aleksander Korzynski: -
      - -
    • added ability to disable ReplayGain analysis
    • - -
    - -
  • - -
- -
- -

LAME 3.96 beta    March 7 2004

- -
    - -
  • Takehiro Tominaga: -
      - -
    • fixed decoding issue
    • - -
    - -
  • - -
  • Aleksander Korzynski: -
      - -
    • changed internal ReplayGain handling
    • - -
    • fixed some issues when ReplayGain is used with -resampling
    • - -
    - -
  • - -
  • Robert Hegemann: -
      - -
    • added standard ISO quantization for vbr-new, used at -lower quality settings
    • - -
    • faster count_bits -for vbr-new
    • - -
    • faster -find_scalefac_ave function for vbr-new
    • - -
    • fixed an out of -array access in psychoacoustic models; this bug could make some psy -calculations worthless and sometimes let lame crash
    • - -
    • fixed an error on -silent scalefactor bands; this bug resulted in huffman data overrun -problems while decoding, resulting in audible glitches
    • - -
    • fixed a freeformat decoding bug
    • - -
    - -
  • - -
  • Gabriel Bouvigne: -
      - -
    • adjusted short block -thresholds
    • - -
    • fixed some array addressing bugs
    • - -
    • made ReplayGain analysis reentrant
    • - -
    - -
  • - -
  • David Chandler: fixed a crash in quantize_xrpow
  • - -
  • Michal Bacik: fixed a crash when using 8kHz
  • - -
  • Goran Markovic: fixed some decoding bugs
  • - -
  • John Edwards: fixed a too small buffer in ReplayGain code
  • - -
- -
- -

LAME 3.95.1    January 12 2004

- -
    - -
  • Gabriel Bouvigne: -
      - -
    • fixed a crash when using vbr-new
    • - -
    • changed ReplayGain reference level to 89dB
    • - -
    - -
  • - -
- -
- -

LAME 3.95    January 11 2004

- -
    - -
  • Gabriel Bouvigne: -
      - -
    • fixed lowpass values -when using vbr with mono files
    • - -
    • faster quantization -loops
    • - -
    • faster count_bits
    • - -
    • fixed a buffer requirement error in ACM codec
    • - -
    - -
  • - -
  • Takehiro TOMINAGA: -
      - -
    • fixed mpglib and other decoding support code to prevent -the crash when invalid mp3 input
    • - -
    - -
  • - -
  • removed Layer I decoding support
  • - -
  • use FastLog and IEEE 754 -hack on PowerPC too (approx. 10 percent faster)
  • - -
- -
- -

LAME 3.94 beta December 15 2003

- -
    - -
  • Takehiro Tominaga: -
      - -
    • fixed block -switching of nspsytune
    • - -
    • best huffman divide -in the inner loop. This should improve the quality, but -PAINFULLY slow. So it is not enabled by default. Use -q0 to use it.
    • - -
    • Changed -q option mapping. "-q2" until version 3.93 is -now "-q3".
    • - -
    • saving bits by -better scalefactor storing
    • - -
    • removed Vorbis support
    • - -
    • substep quantization.This -should help breaking the SFB21 bloating problem
    • - -
    • made psychoacoustic -model aware of ATH adjustements
    • - -
    • use ATH value as -short block masking lower limit
    • - -
    • several fixes in -psychoacoustic model
    • - -
    • more robust decoding
    • - -
    - -
  • - -
  • Mark Taylor / Gabriel Bouvigne: fixed issues in VBR header
  • - -
  • Mark Taylor: workaround against some hardware decoder -defficiencies
  • - -
  • Aleksander Korzynski: ability to compute the "Radio" -ReplayGain and detect clipping on the fly. The ReplayGain value is -stored in the Lame tag.
  • - -
  • Gabriel Bouvigne: -
      - -
    • work on presets
    • - -
    • use presets by -default for cbr/abr
    • - -
    • use presets by -default for vbr
    • - -
    • analog silence -detection in partitionned sfb21
    • - -
    • do not compute noise -in upper 0 part of the spectrum
    • - -
    • only compute noise -in modified scalefactor bands
    • - -
    - -
  • - -
  • Guillaume Lessard: -
      - -
    • nogap related changes
    • - -
    - -
  • - -
  • Alexander Leidinger: -
      - -
    • prevent closing the input fd prematurely if the input -is a named pipe
    • - -
    - -
  • - -
- -
- -

LAME 3.93.1    December 1 2002

- -
    - -
  • Gabriel Bouvigne: -
      - -
    • preset medium added to the dll interface
    • - -
    • fix for abr/cbr -presets
    • - -
    • fix -q0 switch
    • - -
    - -
  • - -
  • Alexander Leidinger: fix link problem on systems where -socket() resides in libsocket
  • - -
- -
- -

LAME 3.93    November 16 2002

- -
    - -
  • Takehiro Tominaga: -
      - -
    • bit allocation for -pre-echo control improved for single channel encodings
    • - -
    • substep noise shaping
    • - -
    • optimizations by -changing data structure
    • - -
    • noise shaping model -2 fix
    • - -
    • nspsytune FIR filter -clean up
    • - -
    • fix small psymodel -bugs(DC current estimation, preecho detection of non-VBR mode, and -nspsymode initialization)
    • - -
    • portability fixes for Tru64 UNIX
    • - -
    - -
  • - -
  • Albert Faber: some fixes in the DLL
  • - -
  • Simon Blandford: fixes for channel scaling in mono mode
  • - -
  • Dominique Duvivier: some -optimizations and a faster log10 function
  • - -
  • Mark Taylor: -
      - -
    • some tag related fixes in the direct show filter and in -the ACM codec
    • - -
    • fixed a mono -encoding bug found by Justin Schoeman
    • - -
    • calc_noise bug fix
    • - -
    • other fixes
    • - -
    - -
  • - -
  • Alexander Leidinger: -
      - -
    • update to autoconf 2.53, rewrite some configure tests
    • - -
    • Akos Maroy: determine gcc version even with gcc 3.1
    • - -
    • Andrew Bachmann: compile shared libs on BeOS (and -perhaps other arches)
    • - -
    • ultrasparc switches for gcc 3.1
    • - -
    • fixes for SunOS 4.x
    • - -
    • fixes for 64bit arches
    • - -
    • CFLAGS fix for IRIX
    • - -
    • don't override CFLAGS if exptopt isn't requested
    • - -
    - -
  • - -
  • Robert Hegeman: -
      - -
    • some fixes
    • - -
    • some fixes for VBR
    • - -
    - -
  • - -
  • Gabriel Bouvigne: -
      - -
    • --noasm switch. Might help Cyrix/Via users
    • - -
    • presets and -alt-presets merged
    • - -
    - -
  • - -
- -
- -

LAME 3.92    April 14 2002

- -
    - -
  • Alexander -Leidinger:  add non linear psymodel (compile time option, -disabled by default), workaround a bug in gcc 3.0.3 -(compiler options, based upon suggestions from various people, see -archives and changelog for more)
  • - -
  • Steve Lhomme:  ACM wrapper (MS-Windows codec)
  • - -
  • Steve Lhomme:  -less memory copying on stereo (interleaved) input
  • - -
  • Takehiro Tominaga: -Inter-channel masking, enables with --interch x option
  • - -
  • For buggy versions of gcc compiler (2.96*), back off on -some of the advanced compiler options
    - -
  • - -
- -
- -

LAME 3.91    December 29 2001

- -
    - -
  • Darin -Morrison:  Bugfix for --alt-preset (for content with low -volume, clean vocals), only important for the "fast standard" preset -
  • - -
  • Alexander Leidinger: -
      - -
    • add some missing files to the distribution
    • - -
    • add --alt-preset to the man page
    • - -
    - -
  • - -
- -
- -

LAME 3.90    December 21 2001

- -
    - -
  • Many small improvements -and bug fixes not added to history
  • - -
  • John -Dahlstrom:  more fine tuning on the auto adjustment of the ATH
  • - -
  • Robert -Hegemann:  small speed and quality improvements for the old -VBR code (--vbr-old).
  • - -
  • Robert -Hegemann:  some short block bug fixes
  • - -
  • Robert -Hegemann:  Big improvements to --vbr-mtrh, now encodes much -more frequencies over 16khz
  • - -
  • Robert -Hegemann:  --vbr-new code disabled (outdated and lower -quality) and replaced with --vbr-mtrh (Both --vbr-new and --vbr-mtrh -now default to mtrh)
  • - -
  • Robert Hegemann:  reordering of --longhelp to give -more information, --extrahelp dropped
  • - -
  • Darin Morrison:  Totally revamped and extremely -high quality unified preset system and other general quality -improvements now available with --alt-presets: -
      - -
    • some improvements -to psychoacoustics (vast improvements over default L.A.M.E. modes) when ---alt-preset is used including: - -
        - -
      • Improved tuning -of short block usage.
      • - -
      • Improved -quantization selection usage (the -X modes), now adapts between -appropriate modes on the fly. Also helps on "dropout" problems and with -pre-echo cases.
      • - -
      • Improved joint -stereo usage. Thresholds are better tuned now and fix some "dropout" -problems L.A.M.E. suffers from on clips like serioustrouble.
      • - -
      • Improved noise -shaping usage. Now switches between noise shaping modes on the fly -(toggles -Z on and off when appropriate) which allows lower bitrates -but without the quality compromise.
      • - -
      • Clips vastly -improved over default L.A.M.E. modes (vbr/cbr/abr, including --r3mix): -castanets, florida_seq, death2, fatboy, spahm, gbtinc, ravebase, short, -florida_seq, hihat, bassdrum, 2nd_vent_clip, serioustrouble, bloodline, -and others. No degraded clips known.
      • - -
      • VBR bitrates are now more "stable" with less -fluctuation -- not dipping too low on some music and not increasing too -high unnecessarily on other music. "--alt-preset standard" provides -bitrates roughly within the range of 180-220kbps, often averaging close -to 192kbps.
      • - -
    • - -
    • --alt-presets replace the --dm-presets and "metal" -preset is removed and replaced with generic abr and cbr presets.
    • - -
    • --alt-preset extreme (note the 'e') replaces xtreme to -help eliminate some confusion
    • - -
    • --alt-preset vbr modes now have a fast option which -offers almost no compromise in speed.
    • - -
    • --alt-preset standard (and "fast standard") are now -much lower in bitrate, matching --r3mix with an overall average, though -offering higher quality especially on difficult test samples.
    • - -
    • --alt-presets are no longer just "presets" as in a -collection of switches, instead they are now quality "modes" because of -special code level tunings (those mentioned above).
    • - -
    • Use --alt-preset help for more information.
    • - -
    - -
  • - -
  • Roel VdB: more tuning on the --r3mix preset
  • - -
  • Jon Dee, Roel VdB:  INFO tag
  • - -
  • Alexander Leidinger, mp3gain@hotmail.com:  added ---scale-l and --scale-r to scale stereo channels independantly
  • - -
  • Takehiro Tominaga:  new -noise shaping mode, offering more "cutting edge" shaping according to -masking, enabled via -q0
  • - -
  • Mark Taylor:  More work on --nogap
  • - -
  • Gabriel Bouvigne:  Small changes to abr code for -more accurate final bitrate
  • - -
  • Gabriel Bouvigne, mp3gain@hotmail.com:  -Preliminary -ReplayGain analysis code added (not functional yet)
  • - -
  • Gabriel Bouvigne, Alexander Leidinger:  -Documentation updates
  • - -
  • John Dahlstrom, DSPguru@math.com:  floating point -interface function in the Windows DLL
  • - -
- -
- -

LAME 3.89beta   July 5 2001

- -
    - -
  • John Stewart:  long filename support for Win9x/NT.
  • - -
  • Takehiro Tominaga:  LAME can calculate the CRC of -VBR header, so now "lame -pv" works fine.
  • - -
  • Robert -Hegemann:  Improvements of the new VBR code (--vbr-mtrh).
  • - -
  • Robert Hegemann: New VBR -code (--vbr-mtrh) is now defaulted to get more feedback. The VBR speed -is now on par with CBR. We will use the old VBR code in the release.
  • - -
  • Gabriel Bouvigne: Change -of the maximum frame size limit. LAME should now be more friendly with -hardware players.
  • - -
  • Gabriel Bouvigne: Size of VBR is now more balanced -according to the -V value.
  • - -
  • Alexander Leidinger: Finished the implementation of the -set/get functions.
  • - -
  • John Dahlstrom: LAME now handles 24bits input
  • - -
  • Mark Taylor: bugs in lame --decode causing truncation of -mp3 file fixed
  • - -
  • Mark Taylor: preliminary --nogap support
  • - -
  • "Final" API completed: shared library safe!  This -API is frozen and should be backwords compatiable with future versions -of libmp3lame.so, but we will continue to add new functionality. - 
    - -
  • - -
- -

LAME 3.88beta   March 25 2001

- -
    - -
  • A lot of work that was -never added to the History!
  • - -
  • Frank Klemm and -Gabriel Bouvigne:  New ATH formula.  Big improvement -for high bitrate encodings.
  • - -
  • Takehiro Tominaga: -Temporal masking
  • - -
  • Gabriel Bouvigne/Mark -Taylor: auto adjustment of ATH
  • - -
  • Robert -Hegemann:  Better outer_loop stopping criterion.  -Enabled with -q2 or better.
  • - -
  • Robert Hegemann/Naoki -Shibata:  slow/carefull noise shaping.  --q3..9:  amplify all distorted bands.  -q2: amplify -distorted bands within 50%.  -q1-0:  amplify only -most distorted band at each iteration.
  • - -
  • Takehiro Tominaga: -Interframe, shortblock temporal masking.
  • - -
  • Takehiro Tominaga:  LAME restructured into a -shared library and front end application.  Slight changes to -the API. More changes are coming to turn LAME into a true shared -library (right now you have to recompile if you upgrade the library :-(
  • - -
  • Naoki Shibata: - -
      - -
    • improvements to - psychoacoustics - (--nspsytune) - -
    • BUG in long block - pre echo control fixed - (some out of range array access in M/S psychoacoustics)
    • - -
    -
  • - -
  • Ralf -Kempkens:    Visual Basic Script for lame, -suggested to put it on your Windows Desktop and you can drag'n'drop -Waves to encode on it.
  • - -
  • Alexander -Stumpf:    improved lame.bat for 4Dos users
  • - -
  • Mark Taylor: Several -bugs fixed in the resampling code.
  • - -
  • Frank Klemm, Robert -Hegemann:    added assembler code for CPU -feature detection on runtime (MMX, 3DNow, SIMD)
  • - -
  • Takehiro Tominaga: -3DNow FFT code.
  • - -
  • Florian Bome, -Alexander Leidinger:    more work on -configure stuff
  • - -
  • Alexander -Leidinger:   automake/libtool generated Makefiles and -TONS of other work.
  • - -
  • Alexander -Leidinger:   Much work towards shared library style -API.
  • - -
  • Anonymous: New more -efficient RTP code.
  • - -
  • Mark Taylor: -psycho-acoustic data now computed for all scalefactor bands (up to 24 -kHz)
  • - -
  • Mark Taylor, Takehiro -Tominaga: All ISO table data replaced by formulas - should improve -MPEG2.5 results for which we never had correct table data.
  • - -
- -

LAME 3.87alpha  September 25 2000

- -
    - -
  • Mark Taylor:  Bug fixed in LAME/mpglib error -recovery when encountering a corrupt  MP3 frame during -*decoding*.
  • - -
  • Albert Faber:  added LayerI+II decoding support
  • - -
  • Frank Klemm:  -added improved CRC calculation
  • - -
  • Frank Klemm: -substantial code cleanup/improvements
  • - -
  • Robert Hegemann:  Bug fixes - -
      - -
    • in huffman_init, -could lead to segmentation faults (only in rare cases, most likely at -lower sample rates)
    • - -
    • M/S switching at -lower sample rates (the fact there is no 2nd granule was -ignored)
    • - -
    -
  • -
  • Robert -Hegemann:  speed up in  VBR
  • - -
  • Jarmo Laakkonen:  Amiga/GCC settings for -Makefile.unix.
  • - -
  • Magnus Holmgren:  README and Makefile for (free) -Borland C++  compiler. Will also compile lame_enc.dll, but -this is untested.
  • - -
  • Florian Bome:   LAME finally has -a  ./configure script!!
  • - -
- -

LAME 3.86beta  August 6 2000

- -
    - -
  • Christopher Wise:  A makefile for DJGPP, the DOS -version of gcc.  Now most windows users should be able to -compile LAME with minimal effort.
  • - -
  • Robert -Hegemann:  old VBR:   fixed some bugs and -Takehiro's scalefac_scale feature (not yet on by  -default.)  older LAME versions did not allow to spent more -than 2500 bits of 4095 possible bits to a granule per channel, now -fixed.
  • - -
  • Robert Hegemann:  new VBR:   -analog silence treatment like in old VBR
  • - -
  • William Welch:  Improved options for Linux/Alpha -gcc and ccc compilers in Makefile.
  • - -
  • Mathew Hendry:  setting appropriate CRC bit for -additional Xing-VBR tagging frame
  • - -
  • Don Melton:  added ID3 version 2 TAG support
  • - -
  • John Dahlstrom: fixed -bug allowing timing information (for status in command line encoder) to -overflow.
  • - -
  • Tamito KAJIYAMA, Fixed -several bugs in the LAME/Vorbis interface.
  • - -
  • Mark Taylor:  -lame --decode will recognize Album -ID tags
  • - -
  • Naoki -Shibata:  Additive masking and other improvements to psycho -acoustics.  (not yet on by default)
  • - -
- -

LAME 3.85beta   July 3 2000

- -
    - -
  • Takehiro -Tominaga:  mid/side stereo demasking thresholds updated.
  • - -
  • Takehiro Tominaga: New short block MDCT coefficient data -structure.  Should allow for future speed improvements.
  • - -
  • Robert Hegemann:  fixed bug in old VBR routine, -the --noath mode messed up the VBR routine resulting in very large files
  • - -
  • Robert Hegemann: found bugs in some sections when using 32 -bit floating point.  Default is now back to 64bit floating -point.
  • - -
  • Takehiro -Tominaga:  Modified PE formula to use ATH.
  • - -
  • S.T.L.:  -README.DJGPP - instructions for compiling LAME with DJGPP, the dos -version of gcc.
  • - -
- -

LAME 3.84beta  June 30  2000

- -
    - -
  • Mark Weinstein:  .wav file output (with --decode -option) was writing the wrong filesize in the .wav file.  Now -fixed.
  • - -
  • Mark Taylor:  (optional) Vorbis support, both -encoding and decoding.  LAME can now produce .ogg files, or -even re-encode your entire .ogg collection into -mp3.   (Just kidding: it is always a bad idea to -convert from one lossy format to another)
  • - -
  • ?: Bug fixed causing VBR to crash under -windows.   (pretab[] array overflow)
  • - -
  • Sergey Sapelin: Another bug found in the mpg123 MPEG2 -tables.  Now fixed for the mpg123 based decoder in LAME.
  • - -
  • Marco Remondini:  VBR histogram works in -win32.  compile with -DBRHIST -DNOTERMCAP
  • - -
  • Takehiro -Tominaga:  LAME CBR will now use scalefac_scale to expand the -dynamic range of the scalefactors.
  • - -
  • Iwasa Kazmi:  -Library improvements:  exit()'s, printf, fprintf's are being -replaced by interceptable macros.
  • - -
- -

LAME 3.83beta  May 19  2000

- -
    - -
  • Mark Taylor:  -Bug in buffering routines:  in some cases, could cause -MDCT  to read past end of buffer.  Rare in MPEG2, -even more rare for MPEG1, but potentially serious!
  • - -
  • Mark Taylor:  MDCT/polyphase filterbank was not -being "primed" properly.  Does not effect output unless you -set the encoder delay lower than the default of 576 samples.
  • - -
  • Mark Taylor:  -"vdbj" and "Caster"  found several VBR bugs (now -fixed):   1.  Analog silence detection only -checked frequencies up to 16 kHz.  2.  VBR mode could -still somehow avoid -F mode.  3.  VBR mode would -ignore noise above 16 kHz (scalefactor band 22), Now calc_noise1 will -compute the noise in this band when in VBR mode.  Not -calculated in CBR  mode since CBR algorithm has no way of -using this information.
  • - -
  • Mark Taylor:  scalefactor band 22 info -(masking(=ATH),  noise and energy) now displayed in frame -analyzer.
  • - -
  • VBR code ATH tuning -was disabled by accident in 3.81, now fixed.
  • - -
  • Mark Taylor:  -lame --decode will produce .wav files.  (oops - size is off by -a factor of 4)
  • - -
- -

LAME 3.82beta   May 11 2000

- -
    - -
  • Robert Hegemann:  Fixed bug in high bitrate joint -stereo encodings.
  • - -
  • Naoki -Shibata:  new long block MDCT routine
  • - -
- -

LAME 3.81beta  May 8 2000

- -
    - -
  • all ISO code removed!
  • - -
  • Takehiro Tominaga and -Naoki Shibata:  new window subband routines.
  • - -
  • Naoki -Shibata:  Bug fix in mpglib (decoding) lib:  in some -cases, MDCT coefficients from previous granule was incorrectly used for -the next granule.
  • - -
  • ISO 7680 bit buffer -limitation removed.  It can be reactivated with -"--strictly-enforce-ISO"  Please report any trouble with high -bitrates.
  • - -
- -

LAME 3.80beta  May 6 2000

- -
    - -
  • Takehiro -Tominaga:  more efficient and faster huffman encoding!
  • - -
  • Takehiro Tominaga and -Mark Taylor:  much improved short block compression!
  • - -
  • Tomasz Motylewski and -Mark Taylor:  MPEG2.5 now supported!
  • - -
  • Mark Taylor: -incorporated Takehiro's bitstream.c!  bitstream.c used by -default, but old ISO bitstream code can also be used.
  • - -
  • Scott  Manley -and Mark Taylor:  good resampling routine finaly in -LAME.  uses a 19 point FIR filter with Blackman -window.  Very slow for non integer resampling ratios.
  • - -
  • Iwasa Kazmi:  -fixed SIGBUS error:  VBR and id3 tags were using data after it -was free()'d.
  • - -
  • Robert -Hegemann:  Improved VBR tuning.  #define -RH_QUALITY_CONTROL and #RH_SIDE_VBR now the defaults.
  • - -
  • Robert -Hegemann:   LAME version string now added to -ancillary data.
  • - -
  • Kimmo Mustonen:  VBR histogram support for Amiga.
  • - -
  • Casper Gripenberg:  VBR stats (but not histogram) -for DOS verson.
  • - -
  • Robert Hegemann:  rare VBR overflow bug fixed.
  • - -
  • Zack:  -F option strictly enforces the VBR min -bitrate.  Without -F, LAME will ignore the minimum bitrate -when encoding analog silence.
  • - -
  • Shawn Riley:  User can now specify a compression -ratio (--comp <arg>) instead of a bit rate.  -Default settings based on a compression ratio of 11.0
  • - -
  • Mark Taylor:  free format bitstreams can be -created with --freeformat, and specify any integer bitrate from 8 to -320kbs with -b.
  • - -
  • Mark Taylor: lame be used as a decoder (output raw pcm -only):  lame --decode input.mp3 output.pcm
  • - -
- -

LAME 3.70   April 6 2000

- -
    - -
  • "LAME 3.69beta" becomes LAME 3.70 "stable"
  • - -
- -

LAME 3.69beta   April 6 2000

- -
    - -
  • "spahm":  default mode selection bug -fixed.  In some cases, lame was defaulting to regular stereo -instead of jstereo when the user did not specify a mode.
  • - -
- -

LAME 3.68beta  April 4 2000

- -
    - -
  • Mark Taylor: mono encoding bug in DLL fixed.
  • - -
  • Ingo Saitz: bug in --cwlimit argument parsing fixed.
  • - -
  • Scott Manly: bug in -4-point resample code fixed.
  • - -
- -

LAME 3.67beta  March 27 2000

- -
    - -
  • Robert -Hegemann:  jstereo now enabled for MPEG2 encodings
  • - -
  • Mark Taylor: old M/S stereo mode which used L/R maskings -has been removed.
  • - -
  • Mark Taylor: Xing MPEG2 VBR headers now working.
  • - -
  • Mark Taylor:  -When quantized coefficients are all 0 in a band, set scalefactors to 0 -also to save a few bits.
  • - -
  • Ingo Saitz:  -Problems with framesize calculation when using -f fast-math option -fixed.
  • - -
- -

LAME 3.66beta March 21 2000

- -
    - -
  • Bug fixes in BladeEnc DLL, possible click in last mp3 -frame, VBR historgram display, byteswapping option, ASM quantize -routines work for both float and double.
  • - -
- -

LAME 3.65beta   March 17 2000

- -
    - -
  • Enabled ASM version of quantize_xrpow() - accidently -disabled in lame3.64.
  • - -
- -

LAME 3.64beta  March 16 2000

- -
    - -
  • Don Melton:  id3v1.1 tags & id3 bugfixes
  • - -
  • Gabriel -Bouvigne:  L/R matching block type fix
  • - -
  • Bug fixed which was -allowing quantized values to exceed the maximum when not using -h
  • - -
  • Mark Taylor: Fitlers -based on polyphase filterbank.  should be slightly better -since the responce is independent of the blocktype, and they are -slightly faster.
  • - -
  • Mark Taylor: API:  the API changed slightly - and -this should be the final version. There is a new routine: -lame_encode_buffer() which takes an arbritray sized input buffer, -resamples & filters if necessary, encodes, and returns the -mp3buffer.  There are also several new #defines, so it is -possible to compile a simple encoding library with no decoding or file -I/O or command line parsing.  see the file API for details.
  • - -
  • Mark Taylor: MSVC stuff:  lame.exe (with and - without the frame analyzer) and the CDex lame_enc.dll - should compile under MSVC.  The MSVC5 project files may need - some tweaking.  In particular, - you need to make sure LAMEPARSE, LAMESNDFILE and HAVEMPGLIB - are defined.  (and HAVEGTK for the GTK stuff).
  • -
- -

LAME 3.63beta  February 20  2000

- -
    - -
  • Robert Hegemann:  FPE with -h fixed?
  • - -
  • Mathey Hendry:  FPE error catching for Cygwin, -FPE fix for vbr mode and output to /dev/null
  • - -
  • Jeremy Hall:  Fixed problems with input files -where the number of samples is not known.
  • - -
  • Mathew -Hendry:  ASM quantize_xrpow() for GNU i386
  • - -
  • Wilfried -Behne  quantize_xrpow ()for PowerPC and non-ASM
  • - -
  • Takehiro -Tominaga:  GOGO FFTs  (not yet used?)
  • - -
- -

LAME 3.62beta   February 9 2000

- -
    - -
  • Iwasa Kazmi:  -frame analyzer short block display of single subblocks (press -1,2  or 3)
  • - -
  • Ingo Saitz:  ---help option added, with output to stdout
  • - -
  • Alfred Weyers: short -block AAC spreading function bug fixed
  • - -
  • Takehiro -Tominaga:  new scalefac data structure - improves performance!
  • - -
  • Lionel -Bonnet:  Bug fixed in MPEG2 scalefactor routine: scalefactors -were being severly limited.
  • - -
  • Takehiro -Tominaga:  faster FFT routines from.  These routines -are also compatible with the GOGO routines, in case someone is -interested in porting them back to LAME.
  • - -
  • Sigbjørn -Skjæret, Takehiro Tominaga:  faster pow() code.
  • - -
  • Joachim -Kuebart:  Found some unitialized variables that were effecting -quality for encodings which did not use the -h option (now fixed).
  • - -
  • Mark Taylor: More modularization work.   -It is now possible to use LAME as a library where you can set the -encoding parameters directly and do your own file -i/o.   The calling program is now it's own mp3 -output.  For an example of the LAME API, see main.c, or -mp3rtp.c or mp3x.c.  These can all be compiled as stand alone -programs which link with libmp3lame.a.
  • - -
  • Felix vos Leitner:  mp3rtp fixes.  -mp3rtp is a standalone program which will encode and stream with RTP.
  • - -
  • Robert Hegemann:  Information written to stderr -displaying exactly which type of lowpass filter (if any) is being used.
  • - -
  • Iwasa Kazmi:  mpglib (the mpg123 decoder) scsfi -decoding fixes.
  • - -
  • Takehiro Tominaga:  More mpglib scsfi decoding -fixes.
  • - -
- -

LAME 3.61beta  January 14 2000

- -
    - -
  • Mark Taylor: Fixed bug -with lowpass filters when using VBR with a 64kbs or lower min bitrate -setting.
  • - -
  • Takehiro -Tominaga:  more efficient huffman encoding splitting.
  • - -
- -

LAME 3.60beta   January 9 2000

- -
    - -
  • Mark Taylor: Distribution now comes with self -test.  Needs work to be automated, see 'make test' in Makefile.
  • - -
  • Mark Taylor: AAC -spreading function now the default
  • - -
  • Gabriel Bouvigne: updated HTML docs
  • - -
  • Felix von Leitner: compute correct file length from Xing -header (if present) when input file is a mp3 file
  • - -
  • Felix von Leitner: mp3rtp (standalone) program now -included.  Not yet tested.  mp3rtp -ip:port:ttl  <infile>   -/dev/null will stream directly to ip:port using  RTP.
  • - -
- -

LAME 3.59beta  January 4 2000

- -
    - -
  • Takehiro Tominaga:  --noath option.  -Disables ATH maskings.
  • - -
  • Gabriel Bouvigne:  updated HTML docs.
  • - -
  • Iwasa Kazmi:  makefile fixes
  • - -
  • Mark Taylor:  Fixed bug where first frame of data -was always overwritten with 0's.  Thanks to 'gol'
  • - -
  • Mark Taylor:  -bug fixes in mid/side masking ratios (thanks to Menno Bakker)
  • - -
  • Mark Taylor:  replaced norm_l, norm_s table data -with formulas.
  • - -
- -

LAME 3.58beta  December 13 1999

- -
    - -
  • Segher -Boessenkool:  More accurate quantization procedure!  -Enabled with -h.
  • - -
  • Mathew Hendry, Acy -Stapp and Takehiro Tominaga: ASM optimizations for quantize_xrpow and -quantize_xrpow_ISO.
  • - -
  • Chuck Zenkus:  "encoder inside" logo on web page
  • - -
  • Mark Taylor:   a couple people have -asked for this.   Allow LAME to overide -VBR_min_bitrate if analog_silence detected.   -Analog_silence defined a la Robert:   -energy  < ATH.
  • - -
  • An Van Lam: Valid bitrates were being printed for layer 2, -not layer 3!
  • - -
  • Ethan Yeo:  Makefile.MSVC updated
  • - -
  • Mark Stephens:  updated all MSVC project files
  • - -
  • Robert Hegemann:  lowpass and highpass filters -can be enabled with --lowpass, --highpass
  • - -
  • Mark Taylor:  -MS switching is now smoother: ms_ratio average over 4 granules
  • - -
  • Takehiro -Tominaga:  Scalefactor pre-emphasis fixed (and now turned back -on)
  • - -
  • Takehiro -Tominaga:  Bug in M/S maskings:  switch to turn on -stereo demasking code was buggy.
  • - -
- -

LAME 3.57beta  November 22 1999

- -
    - -
  • Sigbjørn Skjæret, patch to allow -encoding from 8bit input files when using LIBSNDFILE
  • - -
  • Mark Taylor: Automatic downsampling to nearest valid -samplerate.
  • - -
  • Mark Taylor: Scalefactor bands demarked on MDCT plot in -frameanalyzer
  • - -
  • Mark Taylor: Scalefactor preemphasis disabled for -now.   The algorithm was often doing more harm than -good.
  • - -
- -

LAME 3.56beta  November 19 1999

- -
    - -
  • Kimmo Mustonen: portabilty code cleanup.
  • - -
  • Vladimir Marek: id3 genre patch.
  • - -
  • Conrad Sanderson: new applypatch script.
  • - -
  • Mark Taylor: Initial window type now "STOP_TYPE" to reduce -initial attenuation.  This is needed because the new encoder -delay is so short.  With a NORM_TYPE, the first 240 samples -would be attenuated.
  • - -
  • Mark Taylor: Padding at end of file now adjusted -(hopefully!) to produce as little padding as possible while still -guarantee all input samples are encoded.
  • - -
  • Takehiro -Tominaga:  Reduced shortblock extra bit allocation formulas by -10% since new huffman coding is at least 10% more efficient.
  • - -
- -

LAME 3.55beta  November 11 1999

- -
    - -
  • Albert Faber:  updated BladeEnc.dll
  • - -
  • Mark Taylor: Simple lowpass filter added to linear -downsampling routine.
  • - -
  • Nils Faerber: updated man page.
  • - -
  • Mark Taylor: All floating point variables are delcared -FLOAT or  FLOAT8.  Change the definition of FLOAT8 in -machine.h to run at 32bit preceision.
  • - -
  • Mark Taylor: Bug (introduced in 3.54beta) in -stereo->mono downsampling fixed.
  • - -
- -

LAME 3.54beta  November 8 1999

- -
    - -
  • Mark Taylor: Encoder delay is now 48 samples.  -Can be adjusted to 1160 to sync with FhG (see ENCDELAY in -encoder.h)  This is kind of amazing, since if Takehiro put his -MDCT/filterbank routine in a decoder, we could have a total  -delay of only 96 samples.
  • - -
  • Mark Taylor: More -inconstancies found and fixed in MPEG2 tables.
  • - -
  • Mark Taylor: Resampling from an MP3 input file now -works.  But we still dont have a lowpass filter so dont expect -good results.
  • - -
- -

LAME 3.53beta  November 8 1999

- -
    - -
  • Takehiro -Tominaga:  Fixed MPEG2 problem in new MDCT routines.  -Takehiro's combined filterbank/MDCT routine is now the -default.  Removes all buffering from psymodel.c and the -filterbanks/MDCT routines.
  • - -
- -

LAME 3.52beta  November 8 1999

- -
    - -
  • By permission of copyright holders of all GPL code in -LAME,  all GPL code is now released under a modified version -of the LGPL (see the README file)
  • - -
  • By popular demand, all C++ comments changed to C style -comments
  • - -
  • Mark Taylor: Linear resampling now works.  Use ---resample to set an output samplerate different from the input -samplerate.  (doesn't seem to work with mp3 input files, and -there is no lowpass filter, so dont expect good results just yet)
  • - -
  • Takehiro -Tominaga:  Faster Huffman encoding routines
  • - -
- -The following changes are disabled -because of MPEG2 problems.  But to try them, set MDCTDELAY=48 -in encoder.h, instead of MDCTDELAY=528.: -
    - -
  • Takehiro -Tominaga:  New MDCT routines with shorter delay (48 samples -instead of 528) and even faster than the old routines.
  • - -
  • Takehiro -Tominaga:  Removed extra buffering in psymodel.c
  • - -
- -

LAME 3.51  November 7 1999

- -
    - -
  • Takehiro Tominaga: Bug in quantize.c absolute threshold of -hearing calculation for non-44.1 kHz input files.
  • - -
- -

LAME 3.50  November 1 1999

- -
    - -
  • LAME 3.37beta becomes official LAME 3.50 release
  • - -
- -

LAME 3.37beta  November 1 1999

- -
    - -
  • Lionel -Bonnet:  Found severe bug in MPEG2 Short block SNR.
  • - -
  • Sergey Sapelin:  VBR Toc improvement.
  • - -
  • Sergey Dubov: fskip() routine
  • - -
  • Conrad Sanderson: replacement for -filterbank.c.   Not much faster but amazingly simpler.
  • - -
- -

LAME 3.36beta  October 25 1999

- -
    - -
  • Albert Faber:  more MSVC and BladeDLL updates
  • - -
  • Kimmo Mustonen:  Much code cleanup and Amiga -updates
  • - -
  • Anton Oleynikov: Borland C updates
  • - -
  • Mark Taylor: More stdin fixes:  For some reason, -forward fseek()'s would fail when used on pipes even though it is okay -with redirection from "<". So I changed all the forward -fseek()'s to use fread().  This should improve stdin support -for wav/aiff files.  If you know the input file is raw pcm, -you can still use the '-r' option to avoid *all* seeking of any kind.
  • - -
- -

LAME 3.35beta  October 21 1999

- -
    - -
  • Leonid -Kulakov:  Serious bug in MPEG2 scalefactor band tables fixed.
  • - -
  • Portability patches from:  Anton Oleynikov, -Sigbjørn Skjæret, Mathew Hendry, Richard Gorton
  • - -
  • Alfred Weyers: compiler options, updated timestatus.
  • - -
  • Albert Faber:  BladeDll and other updates (new -machine.h).
  • - -
  • Monty:  updated Makefile to fix gcc inline math -bug.
  • - -
- -

LAME 3.34beta  October 12 1999

- -
    - -
  • Mark Taylor: Bug -fixed:  minimum bitrate in VBR mode could be ignored for a few -frames.
  • - -
  • Mark Taylor: New -(minor) VBR tunings.
  • - -
  • Tim Ruddick: New wav/aiff header parsing -routines.  Better parsing and fewer fseek()'s.
  • - -
  • Anton Oleynikov:  patches to work with Borland C
  • - -
  • Gabriel -Bouvigne:  Experimental voice option enabled with --voice
  • - -
- -

LAME 3.33beta  October 11 1999

- -
    - -
  • Robert Hegemann: RH -VBR mode now the default and only VBR mode.  The new code will -always quantize to 0 distortion and the quality is increased by -reducing the masking from the psy-model.  -X0 is still the -default for now.
  • - -
  • Robert Hegemann: new --X5 mode
  • - -
  • Mathew Hendry: New timing code, removes the need for -HAVETIMES
  • - -
  • Mathew -Hendry:  assembler quantize_xrpow for Windows
  • - -
  • Iwasa Kazmi:  stdin/stdout patch for Windows
  • - -
  • Mark Taylor: New option: "--athonly" will ignore the -psy-model output and use only the absolute threshold of hearing for the -masking.
  • - -
- -

LAME 3.32beta  October 8 1999

- -
    - -
  • Takehiro -Tominaga:  faster long block spreading function convolution -for non 44.1 kHz sampling frequencies, and faster short block spreading -function convolution for all sampling frequencies.
  • - -
  • Takehiro -Tominaga:  Completly rewritten huffman table selection and -count_bits().  More efficient table selection results in many -more bits per frame.
  • - -
  • Takehiro -Tominaga:  More efficient scalefac compress setting.
  • - -
  • Mike Cheng: new -calc_noise2()
  • - -
  • Alfred Weyers: patch for timestatus() seconds rollover
  • - -
- -

LAME 3.31beta  September 28 1999

- -
    - -
  • Albert Faber:  updated his BladeDLL -code.  This allows LAME to be compiled into a BladeEnc -compatiable .dll.
  • - -
  • Mike Cheng: faster -l3psycho_ener() routine.
  • - -
  • Sigbjørn Skjæret: more code cleanup.
  • - -
- -

LAME  3.30beta  September 27 1999

- -
    - -
  • Conrad Sanderson:  ID3 tag code added (type -'lame' for instructions)
  • - -
  • new mdct.c from Mike Cheng (no faster, but much cleaner -code)
  • - -
  • Mathew Hendry: Microsoft nmake makefile and a couple other -changes for MSVC
  • - -
  • More modulization work:  One input sound file -interface handles mp3's, uncompressed audio, with or without -LIBSNDFILE.  Fixes (hopefully) a bunch of file I/O bugs -introduced in 3.29 (Mark Taylor)
  • - -
  • LAME will now print valid samplerate/bitrate combinations -(Mark Taylor)
  • - -
  • stdin/stdout fix for OS/2 (Paul Hartman)
  • - -
  • For mp3 input files, totalframes estimated based on -filesize and first frame bitrate. (Mark Taylor)
  • - -
  • Updated all functions with new style prototypes.  -(Sigbjørn Skjæret)
  • - -
- -

LAME 3.29beta  September 21 1999

- -
    - -
  • Bug in bigv_bitcount -fixed.  Loop.c was overestimating the number of bits needed, -resulting in wasted bits every frame.  (Leonid A. Kulakov)
  • - -
  • Bug in -*_choose_table() fixed   These routines would not -sellect the optimal Huffman table in some cases.   -(Leonid A. Kulakov)
  • - -
  • Tuning of ATH -normalization (macik)
  • - -
  • Removed unused variables and fixed function prototypes -(Sigbjørn Skjæret)
  • - -
  • Sami Farin sent a  .wav  file -that  LAME built in support choked on.   I -added a slightly more sophisticated wav header parsing to handle this, -but if you have trouble, use libsndfile.
  • - -
  • Resampling hooks and options added.  Buffering -and resampling routines need to be written.
  • - -
  • LAME will now take an mp3 file as input.  When -resampling code is working, LAME will be able to (for example) convert -a high bitrate stereo mp3 to a low bitrate mono mp3 for streaming.
  • - -
- -

LAME 3.28beta  September 15 1999

- -
    - -
  • Serious bug fixed in -high frequency MDCT coefficients.  Huffman coding was -reversing the order of the count1 block quadruples.   -(Leonid A. Kulakov)
  • - -
  • nint() problems under Tru64 unix fixed and preprocessor -variable HAVE_NINT removed.  (Bob Bell)
  • - -
  • Compiler warning fixes and code -cleanup   (Sigbjørn Skjæret, -Lionel Bonnet)
  • - -
  • USAGE file now includes suggestions for -downsampling.  For low bitrate encodings, proper downsampling -can give dramatically better results.  (John Hayward-Warburton)
  • - -
- -

LAME 3.27beta  September 12 1999

- -
    - -
  • Several bugs in encode.c and l3bitstream.c fixed by Lionel -Bonnet.
  • - -
  • Bugs in new VBR (#define RH) formula for mono input file -and mid/side encoding fixed.
  • - -
- -

LAME 3.26beta  September 10 1999

- -
    - -
  • The "-m m" option (mono .mp3 file) will automatically mix -left and right channels if the input file is stereo.  (Alfred -Weyers)
  • - -
  • New quant_compare -algorithm (method for deciding which of two quantizations is better) -enabled with -X4 (Greg Maxwell)
  • - -
  • New mid/side VBR bit -allocation formula.  Mid channel bits are set by the quality -requirements, and then the side channel uses a reduced number of bits -(in a proportion coming from the fixed bitrate code).  This -might not be optimal, but it should be pretty good and no one knows -what the optimal solution should be.  (Greg Maxwell)
  • - -
  • New VBR (#define RH) -tunings based on detailed listening tests by Macik and Greg Maxwell.
  • - -
  • Sigbjørn Skjæret fixed several -compiler warnings (which turned out to be potential bugs)
  • - -
  • Takehiro Tominaga fixed a low bitrate bug in reduce_side()
  • - -
  • Alfred Weyers fixed some buffer overflows.
  • - -
  • New ATH (absolute -threshold of hearing) formula replaces buggy ISO code, and -adds  analog silence treatment  (removal of -coefficients below below ATH).   These are turned on -by default but have not been fully tested.  (Robert Hegemann)
  • - -
  • Bug in short block -spreading function fixed.  (Robert Hegemann)
  • - -
- -

LAME 3.25beta  August 22 1999

- -
    - -
  • Sigbjørn Skjæret fixed a zero byte -malloc call.  This bug  was introduced in 3.24 and -causes problems on non Linux systems.
  • - -
  • Bit allocation routines would sometimes allocate more than -4095 bits to one channel of one granule.  A couple of people -reported problems that might be caused by this, especially at higher -bitrates.
  • - -
  • Nils Faerber updated the man page and fixed many of the -compiler warnings.
  • - -
- -

LAME 3.24beta   August 15 1999

- -
    - -
  • This release contains the following new code (for -developers) which is disabled by default:
  • - -
  • Robert Hegemann:  Completely overhauled VBR -code.  Now computes exact number of bits required for the -given qualty and then quantized with the appropriate bitrate.
  • - -
  • Several new quantization quality measures.
  • - -
- -

LAME 3.23beta  August 8 1999

- -
    - -
  • Very nice continuously updated VBR histogram display from -Iwasa Kazmi.  (disabled with --nohist).
  • - -
  • More modulerization work.  The encoding engine -can now be compiled into libmp3lame, but the interface is awkward.
  • - -
  • Bug fixed in FFT Hann -window formula (Leonid A. Kulakov).
  • - -
  • New LAME logo on the download page.  Created by -Chris Michalisles.
  • - -
  • Several VBR algorithm -improvements from Robert Hegemann.  New quantization noise -metrics and VBR quality measure takes into account mid/side -encoding.  Should produce smaller files with the same quality, -especially when using jstereo.
  • - -
- -

LAME 3.22beta  July 27 1999

- -
    - -
  • Downsampling (stereo to mono) bug with MPEG2 -fixed.  (Mike Oliphant)
  • - -
  • Downsampling now merges L & R channels - before it -only took the L channel.
  • - -
  • More modularization and code cleanup from Albert Faber and -myself.
  • - -
  • Input filesize limit removed for raw pcm input -files.  For other file types, LAME will still only read the -first 2^32 samples, (27 hours of playing time at 44.1 kHz).
  • - -
- -

LAME 3.21beta  July 26 1999

- -
    - -
  • Correct Mid/Side -masking thresholds for JSTEREO mode!  This is enabled with --h.  It  makes LAME about 20% slower since it -computes psycho-acoustics for L,R Mid and Side channels.
  • - -
  • "Analog silence" -threshold added.  Keeps VBR from upping the bitrate during -very quite passages.  (Robert.Hegemann)
  • - -
  • New VBR quality -setting from Robert Hegemann.  It is based on the idea that -distortion at lower bit rates sounds worse than at higher bitrates, and -so the allowed distortion (VBR quality setting) is proportional to the -bitrate.  Because of this, default minimum bitrate is now -32kbs.
  • - -
  • Expermental subblock -gain code enabled with -Z.
  • - -
  • New "-r" option for raw pcm input files.  With --r, LAME will not do any fseek()'s or look for wav and aiff headers on -the input file.
  • - -
  • Bug fixes in mp3x (frame analyzer) for viewing frames near -end of the file.
  • - -
  • Bug fixed to allow setting the sampling rate of raw pcm -input files.
  • - -
- -

LAME 3.20beta  July 19 1999

- -
    - -
  • Bug in get_audio.c fixed.  Libsndfile wrappers -would not compile (Miguel Revilla  Rodriguez)
  • - -
  • Nils Faerber found some unitialized variables and some -wierd extranous computations in filter_subband, now fixed.  -This was causing seg faults on some machines.
  • - -
- -

LAME 3.19beta  July 18 1999

- -
    - -
  • Oops!  Robert -Hegemann immediatly found a bug in the new  (old -Z option) -quantization code.  calc_noise1 was not returning tot_noise, -so non ms-stereo frames were buggy.
  • - -
- -

LAME 3.18beta  July 17 1999

- -
    - -
  • Many psycho-acoustic -bug fixes.  Dan Nelson discovered a bug in MPEG2: For short -blocks, the code assumes 42 partition bands.  MPEG1 sometimes -has less, MPEG2 can have more.  In MPEG1, this bug would not -have effected the output if your compiler initializes static variables -to 0 on creation.  In MPEG2 it leads to array out-of-bounds -access errors. Finally, there was a related bug in MPEG1/MPEG2, short -& long blocks where the energy above 16 kHz was all added to -partition band 0. (the lowest frequeny partition band!)
  • - -
  • The -Z option (Gabriel -Bouvigne's idea of using total quantization noise to choose between two -quantizations with the same value of "over") is now the -default.  I believe this helps remove the trilling sound in -Jan's testsignal4.wav.  The quality of testsignal2.wav and -testsignal4.wav are now better than Xing and getting closer to FhG.
  • - -
  • Bug fixes in frame & sample count for downsampling -mode. (ben "jacobs")
  • - -
  • Patches to improve modulization.  (ben "jacobs")
  • - -
- -

LAME 3.17beta  July 11 1999

- -
    - -
  • substantial code cleanup towards goal of making LAME more -modular.
  • - -
- -

LAME 3.16beta  July 11 1999

- -
    - -
  • New tunings of window -switching, and better bit allocation based on pe.  (Jan -Rafaj.  improves both testsignal2.wav and testsignal4.wav).
  • - -
  • Bug in mid/side -quantization when side channel was zero fixed.  (Albert Faber)
  • - -
  • Removed some extranous computations in l3psy.c (Robert -Hegemann)
  • - -
  • More detailed timing status info, including hours display. -(Sakari Ailus) and percentage indicator (Conrad Sanderson).
  • - -
  • Window_subband and -calc_noise1,calc_noise2 speedups.  Quantize_xrpow speedup -should be significant on non GNU/intel systems. (Mike Cheng)
  • - -
  • Better initial guess -for VBR bitrate.  Should speed up VBR encoding.  -(Gabriel Bouvigne)
  • - -
  • More advanced .wav header parsing.  fixes bugs -involving click in first frame. (Robert.Hegemann)
  • - -
  • Correct filesize and total frame computation when using -LIBSNDFILE (ben "jacobs")
  • - -
  • Click in last frame (buffering problem) when using -libsndfile fixed.
  • - -
  • Audio I/O code overhauled.  There is now a -uniform audio i/o interface to libsndfile or the LAME built in wav/aiff -routines.  All audio i/o code localized to get_audio.c.
  • - -
- -

LAME 3.15beta

- -
    - -
  • times()/clock() problem fixed for non-unix OS.  -(Ben "Jacobs")
  • - -
  • Fixed uninitialized pe[] when using fast mode.  -(Ben "Jacobs")
  • - -
- -

LAME 3.13  June 24 1999

- -
    - -
  • Patches for BeOS from Gertjan van Ratingen.
  • - -
  • Makefile info for OS/2 Warp 4.0  (from dink.org).
  • - -
  • Status display now based on wall clock time, not cpu time.
  • - -
  • mem_alloc no longer allocates twice as much memory as -needed (Jan Peman).
  • - -
- -

3.12pre9

- -
    - -
  • Updated BLADEDLL code to handle recent changes (Albert -Faber).
  • - -
  • Bug fixed in parsing options when not using GTK (Albert -Faber).
  • - -
  • MPEG2 Layer III psycho -acoustics now working.
  • - -
  • Improved huffman -encoding Chris Matrakidis. (10% faster).  I dont know how he -finds these improvements!  LAME with full quality now encodes -faster than real time on my PII 266.
  • - -
  • Fixed time display when encoding takes more than 60 -minutes.
  • - -
- -

3.12pre8

- -
    - -
  • New mid/side stereo -criterion.  LAME will use mid/side stereo only when the -difference between L & R masking thresholds (averaged over all -scalefactors) is less then 5db.  In several test samples it -does a very good job mimicking the FhG encoder.
  • - -
  • Bug in mid/side stereo -fixed:  independent variation of mid & side channel -scalefactors disabled.  Because of the way outer_loop is -currently coded, when encoding mid/side coefficietns using left/right -thresholds, you have to vary the scalefactors simultaneously.
  • - -
  • Bug in side/mid energy -ratio calculation fixed. (Thanks to Robert Hegemann)
  • - -
  • Default mode is stereo (not jstereo) if bitrate is chosen -as 192kbs or higher.  Tero Auvinen first pointed out that FhG -seems to think at 160kbs, their encoder is so good it doesn't need -jstereo tricks. Since LAME is not as good as FhG, I am going to claim -that 192kbs LAME is so good it doens't need jstereo tricks, and thus it -is disabled by default.
  • - -
  • WAV header parsing for big-endian machines, and automatic -detection of big-endian machines.  (Thanks to  -Sigbjørn Skjæret).
  • - -
  • added 56 sample delay to sync LAME with FhG.
  • - -
  • MP3x (frame analyzer) can now handle MPEG2 streams.
  • - -
- -

3.12pre7

- -
    - -
  • MPEG2 layer III now working!  lower bit rates -(down to 8kbs) and 3 more sampling frequencies:  16000, 22050, -24000Hz. Quality is poor - the psy-model does not yet work with these -sampling frequencies.
  • - -
  • Fixed "ERROR: outer_loop(): huff_bits < 0." bug -when using VBR.
  • - -
  • bash and sh scripts to run LAME on multiple files now -included.  (from Robert Hegemann and Gerhard Wesp respectively)
  • - -
  • bug fix in encoding times for longer files from  -(Alvaro Martinez Echevarria)
  • - -
  • yet another segfault in the frame analyzer fixed.
  • - -
  • ISO psy-model/bit allocation routines removed.  -This allowed makeframe() to be made much simpler, and most of the -complicated buffering is now gone. Eventually I would like the encoding -engine to be a stand alone library.
  • - -
- -

3.12pre6

- -
    - -
  • Better VBR -tuning.  Find minimum bitrate with distortion less than the -allows maximum.  A minimum bit rate is imposed on frames with -short blocks (where the measured distortion can not be -trusted).   A minimum frame bitrate can be specified -with -b, default=64kbs.
  • - -
  • LIBSNDFILE -support.  With libsndfile, LAME can encode almost all sound -formats.  Albert Faber did the work for this, including -getting libsndfile running under win32.
  • - -
  • CRC checksum now working!   (Thanks to -Johannes Overmann )
  • - -
  • frame analyzer will now work with mono .mp3 files
  • - -
  • more code tweeks from -Jan Peman.
  • - -
  • Compaq-Alpha(Linux) -fixes and speedups from Nils Faerber.
  • - -
  • Faster -bin_search_StepSize from Juha Laukala.
  • - -
  • Faster quantize() from -Mike Cheng
  • - -
  • Faster -quantize_xrpow() from Chris Matrakidis.  xrpow_flag removed -since this option is now on by default.
  • - -
  • Fixed .wav header parsing from Nils Faerber.
  • - -
  • Xing VBR frame info header code from Albert -Faber.   "Xing" and "LAME 3.12" embedded in first -frame.
  • - -
  • Bug in VBR bit -allocation based on "over" value fixed.
  • - -
- -

LAME 3.11  June 3 1999

- -
    - -
  • Almost all warnings (-Wall) now fixed!  (Thanks -to Jan Peman)
  • - -
  • More coding improvements from Gabriel Bouvigne and Warren -Toomey.
  • - -
  • VBR  -(variable bit rate).   Increases bit rate for short -blocks and for frames where the number of bands containing audible -distortion is greater than a given value.  Much tuning needs -to be done.
  • - -
  • Patch to remove all atan() calls from James Droppo.
  • - -
- -

LAME 3.10 May 30 1999

- -
    - -
  • Fast mode -(-f)  disables psycho-acoustic model for real time encoding on -older machines.  Thanks to Lauri Ahonen who first sent a patch -for this.
  • - -
  • New bit reservoir -usage scheme to accommodate the new pre-echo detection formulas.
  • - -
  • Tuning of AWS and -ENER_AWS pre-echo formulas by Gabriel Bouvigne and myself.  -They work great!  now on by default.
  • - -
  • In jstereo, force blocktypes for left & right -channels to be identical.  FhG seems to do this.  It -can be disabled with "-d".
  • - -
  • Patches to compile MP3x under win32 (Thanks to Albert -Faber).
  • - -
  • bin_serach_stepsize -limited to a quantizationStepSize of  -210 through 45.
  • - -
  • outer_loop()  -will now vary Mid & Side scalefactors independently.  -Can lead to better quantizations, but it is slower (twice as many -quantizations to look at).  Running with "-m f" does not need -this and will run at the old speed
  • - -
  • Bug in inner_loop -would allow quantizations larger than allowed.  (introduced in -lame3.04, now fixed.)
  • - -
  • Updated HTML documentation from Gabriel Bouvigne.
  • - -
  • Unix  man page from William Schelter.
  • - -
  • numlines[] bug -fixed.  (Thanks to Rafael Luebbert, MPecker author).
  • - -
  • Quantization speed -improvements from Chirs Matrakidis.
  • - -
  • When comparing -quantizations with the same number of bands with audible distortion, -use the one with the largest scalefactors, not the first one outer_loop -happened to find.
  • - -
  • Improved defination of best quantization when using -f -(fast mode).
  • - -
  • subblock code now working.  But no algorithm to -choose subblock gains yet.
  • - -
  • Linux now segfaults on floating point -exceptions.  Should prevent me from releasing binaries that -crash on other operating systems.
  • - -
- -

LAME 3.04 May 22 1999

- -
    - -
  • Preliminary documentation from Gabriel Bouvigne.
  • - -
  • I wouldn't have -thought it was possible, but now there are even more speed improvements -from Chris Matrakidis!  Removed one FFT when using joint -stereo, and many improvements in loop.c.
  • - -
  • "Fake" ms_stereo mode renamed "Force" ms_stereo since it -forces mid/side stereo on all frames.  For some music this is -said to be a problem, but for most music mode is probably better than -the default jstereo because it uses specialized mid/side channel -masking thresholds.
  • - -
  • Small bugs in Force ms_stereo mode fixed.
  • - -
  • Compaq Alpha fixes from Nathan Slingerland.
  • - -
  • Some new experimental -pre-echo detection formulas in l3psy.c (#ifdef AWS and #ifdef ENER_AWS, -both off by default.  Thanks to Gabriel Bouvigne and Andre -Osterhues)
  • - -
  • Several bugs in the syncing of data displayed by mp3x (the -frame analyzer) were fixed.
  • - -
  • highq (-h) option added.  This turns on things -(just one so far) that should sound better but slow down LAME.
  • - -
- -

LAME 3.03 May 18 1999

- -
    - -
  • Faster (20%) & -cleaner FFT (Thanks to Chris Matrakidis  -http://www.geocities.com/ResearchTriangle/8869/fft_summary.html)
  • - -
  • mods so it works with VC++ (Thanks to Gabriel Bouvigne, -www.mp3tech.org)
  • - -
  • MP3s marked "original" by default  (Thanks to -Gabriel Bouvigne, www.mp3tech.org)
  • - -
  • Can now be compiled into a BladeEnc compatible -.DLL   (Thanks to  Albert Faber, CDex author)
  • - -
  • Patches for "silent mode" and stdin/stdout  -(Thanks to Lars Magne Ingebrigtsen)
  • - -
  • Fixed rare bug: if a -long_block is sandwiched between two short_blocks, it must be changed -to a short_block, but the short_block ratios have not been computed in -l3psy.c.  Now always compute short_block ratios just in case.
  • - -
  • Fixed bug with initial -quantize step size when many coefficients are zero.  (Thanks -to Martin Weghofer).
  • - -
  • Bug fixed in MP3x display of audible distortion.
  • - -
  • improved status display (Thanks to Lauri Ahonen).
  • - -
- -

LAME 3.02 May 12 1999

- -
    - -
  • encoder could use -ms_stereo even if channel 0 and 1 block types were different.  -(Thanks to Jan Rafaj)
  • - -
  • added -k option to -disable the 16 kHz cutoff at 128kbs.  This cutoff is never -used at higher bitrates. (Thanks to Jan Rafaj)
  • - -
  • modified pe bit -allocation formula to make sense at bit rates other than 128kbs.
  • - -
  • fixed l3_xmin initialization problem which showed up under -FreeBSD.  (Thanks to Warren Toomey)
  • - -
- -

LAME 3.01 May 11 1999

- -
    - -
  • max_name_size increased to 300  (Thanks to Mike -Oliphant)
  • - -
  • patch to allow seeks on input file (Thanks to Scott Manley)
  • - -
  • fixes for mono modes (Thanks to everyone who pointed this -out)
  • - -
  • overflow in calc_noise2 fixed
  • - -
  • bit reservoir overflow when encoding lots of frames with -all zeros  (Thanks to Jani Frilander)
  • - -
- -
- -

LAME 3.0 May 10 1999

- -
    - -
  • added GPSYCHO (developed -by Mark Taylor)
  • - -
  • added MP3x (developed -by Mark Taylor)
  • - -
  • LAME now maintained by Mark Taylor
  • - -
- -

November 8 1998

-
    - -
  • Version 2.1f released
  • - -
  • 50% faster filter_subband() routine in encode.c -contributed by James Droppo
  • - -
- -

November 2 1998

-
    - -
  • Version 2.1e released.
  • - -
  • New command line switch -a -auto-resamples a stereo input file to mono.
  • - -
  • New command line switch -r resamples -from 44.1 kHz to 32 kHz [this switch doesn't work really well. Very -tinny sounding output files. Has to do with the way I do the resampling -probably]
  • - -
  • Both of these were put into the ISO code in the encode.c -file, and are simply different ways of filling the input buffers from a -file.
  • - -
- -

October 31 1998

-
    - -
  • Version 2.1d released
  • - -
  • Fixed memory alloc in musicin.c (for l3_sb_sample)
  • - -
  • Added new command line switch (-x) to force swapping of -byte order
  • - -
  • Cleaned up memory routines in l3psy.c. All the mem_alloc() -and free() routines where changed so that it was only done once -and not every single time the routine was called.
  • - -
  • Added a compile time switch -DTIMER that includes all -timing info. It's a switch for the time being until some other people -have tested on their system. Timing code has a tendency to do different -things on different platforms.
  • - -
- -

October 18 1998

-
    - -
  • Version 2.1b released.
  • - -
  • Fixed up bug: all PCM files were being read as WAV.
  • - -
  • Played with the mem_alloc routine to fix crash under -amigaos (just allocating twice as much memory as needed). Might see if -we can totally do without this routine. Individual malloc()s where they -are needed instead
  • - -
  • Put Jan Peman's quality switch back in. This reduces -quality via the '-q <int>' switch. Fun speedup which is -mostly harmless if you're not concerned with quality.
  • - -
  • Compiling with amiga-gcc works fine
  • - -
- -

October 16 1998

-
    - -
  • Version 2.1a released. User input/output has been cleaned -up a bit. WAV file reading is there in a very rudimentary sense ie the -program will recognize the header and skip it, but not read it. The WAV -file is assumed to be 16bit stereo 44.1 kHz.
  • - -
- -

October 6 1998

-
    - -
  • Version 2.1 released with all tables now incorporated into -the exe. Thanks to Lars Magne Ingebrigtseni
  • - -
- -

October 4 1998

- -
    -
  • - In response to some concerns about the quality of the encoder, I - have rebuilt the encoder from scratch and carefully compared output - at all stages with the output of the unmodified ISO encoder. -
  • -
  • - - Version 2.0 of LAME is built from the ISO source code (dist10), - and incorporates modifications from myself and the 8hz effort. The - output file from LAME v2.0 is identical to the output of - the ISO encoder for my test file. Since I do not have heaps of time, - I left the ISO AIFF file reader in the code, and did not incorporate - a WAV file reader. -
  • -
  • - Added section - on - quality. -
  • -
- -

October 1 1998

-
    -
  • Updated web page and released LAME v1.0
  • -
- -
- -

Up to September 1998

-

Working on the 8hz source code...

-
    -
  • - Patched the 8hz source - code -
  • -
  • - 45% faster than original source (on my freebsd p166). -
      -
    • - m1 - sped up the mdct.c and quantize() functions [MDCTD, - MDCTD2, LOOPD] -
    • -
    • m2 - sped up the filter_subband routine using Stephane - Tavenard's work from musicin [FILTST] -
    • -
    • m2 - minor cleanup of window_subband [WINDST2]
    • -
    • m2 - Cleaned up a few bits in l3psy.c. Replaced a sparse - matrix multiply with a hand configured unrolling [PSYD]
    • -
    • m3 - (amiga only) Added in the asm FFT for m68k (based on - sources from Henryk Richter and Stephane Tavenard)
    • -
    • m4 - raw pcm support back in
    • -
    • m5 - put in a byte-ordering switch for raw PCM reading (just - in case)
    • -
    • m6 - reworked the whole fft.c file. fft now 10-15% - faster.
    • -
    • m7 - totally new fft routine. exploits fact that this is a - real->complex fft. About twice as fast as previous fastest fft (in - m6). (C fft routine is faster than the asm one on an m68k!)
    • -
    • m8 -
        -
      • - Now encodes from stdin. Use '-' as the input filename. Thanks - to Brad Threatt -
      • -
      • - Worked out that the 1024point FFT only ever uses the first 6 - phi values, and the first 465 energy values. Saves a bunch of - calculations. -
      • -
      • - Added a speed-up/quality switch. Speed is increased but - quality is decreased slightly. My ears are bad enough - not to be able to notice the difference in quality at low - settings :). Setting '-q 1' improves speed by about 10%. '-q - 100' improves speed by about 26%. Enoding of my test track - goes from 111s (at default '-q 0') to 82s (at -q 100). Thanks - to Jan Peman for this tip. -
      • -
      -
    • -
    • - m9 - fixed an error in l3psy.c. numlines[] is overwritten with - incorrect data. Added a new variable numlines_s[] to fix - this. Thanks again to Jan Peman. -
    • -
    • - m10 - Down to 106 seconds by selecting a few more compiler - options. Also added a pow20() function in l3loop.c to speed up - (ever so slightly) calls to pow(2.0, x) -
    • - -
    • m11 -
        -
      • - No speedups. Just cleaned up some bits of the code. -
      • -
      • - Changed K&R prototyping to 'normal' format. Thanks - to Steffan Haeuser for his help here. -
      • -
      • - Changed some C++ style comments to normal C comments in - huffman.c -
      • -
      • - Removed the #warning from psy_data.h (it was getting - annoying!) -
      • -
      • - Removed reference in bitstream.c to malloc.h. Is there a - system left where malloc.h hasn't been superceded by - stdlib.h? -
      • -
      -
    • -
    - -
  • In Progess: -
      -
    • - my PSYD hack for the spreading functions is only valid for - 44.1 kHz - Should really put in a "if freq = 44.1 kHz" - switch for it. Someone might want to extend the speedup for - 48 and 32 kHz. -
    • -
    • - Putting in Jan Peman's quantanf_init speedup. -
    • -
    -
  • -
- -
-
-

- - Valid HTML 4.01 Transitional - -

-
- - - diff --git a/platform/win32/msvc/external/lame/doc/html/index.html b/platform/win32/msvc/external/lame/doc/html/index.html deleted file mode 100644 index a973ca176d0..00000000000 --- a/platform/win32/msvc/external/lame/doc/html/index.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - LAME High-End MPEG Layer III (MP3) Encoder - - - -
-
- -
- LAME Official Logo -

The LAME Project

-
- -

- LAME is a high quality MPEG Audio Layer III (MP3) encoder licensed under the - LGPL. -

-

- It is developed as an educational tool to be used in learning about MP3 - encoding. The goal of the LAME project is to use the open source model to - improve the psycho acoustics, noise shaping and speed of MP3. -

-

- LAME is not for everyone - it is distributed as source code only and requires - the ability to use a C compiler. However, many popular ripping and encoding - programs include the LAME encoding engine, see: Software - which uses LAME. -

-

Using the LAME encoding engine (or other mp3 encoding technology) in your - software may require a patent license in some - countries. -

- -
- -
- - - diff --git a/platform/win32/msvc/external/lame/doc/html/introduction.html b/platform/win32/msvc/external/lame/doc/html/introduction.html deleted file mode 100644 index 9b8b079aa51..00000000000 --- a/platform/win32/msvc/external/lame/doc/html/introduction.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - Introduction to encoding - - - -
-
- -
- LAME Official Logo -

Introduction to encoding

-
-

Introduction

-

-There is a lot of confusion surrounding the terms audio compression -1, audio encoding, and audio decoding. This section will give you -an overview what audio coding (another one of these terms...) is all about. -

-

The purpose of audio compression

-

Up to the advent of audio compression, high-quality digital audio data took -a lot of hard disk space to store. Let us go through a short example. -

-

-You want to sample 1 minute of your favourite song and store it on your harddisk. -Because you want CD quality, you sample at 44.1 kHz, stereo, with 16 bits per sample. -

-

-44100 Hz means that you have 44100 values per second coming in from your sound card -(or input file). Multiply that by two because you have two channels. Multiply by -another factor of two because you have two bytes per value (that's what 16 bit -means). The song will take up 44100 samples/s · 2 channels -· 2 bytes/sample · -60 s/min ~ 10 MBytes of storage space on your harddisk. -

-

-In order to stream this over internet, a speed of at least 1.41Mbits/ -s is needed, -which wasn't a common speed at all at the time MP3 was invented. -If you wanted to download that, given an average 56k modem connected at 44k, it -would take 1.41Mbits · 1000 kbits/Mbit / 44 kbits ~ 32 - times as much. -
This means 32 minutes just to download one minute of music! -

-

-Digital audio coding, which - in this context - is synonymously called digital -audio compression as well, is the art of minimizing storage space (or channel -bandwidth) requirements for audio data. Modern perceptual audio coding techniques -(like MPEG Layer III) exploit the properties of the human ear (the perception of -sound) to achieve a size reduction by a factor of 11 with little or no perceptible -loss of quality. -

-

-Therefore, such schemes are the key technology for high quality low bit-rate -applications, like soundtracks for CD-ROM games, solid-state sound memories, -Internet audio, digital audio broadcasting systems, and the like. -

-

The two parts of audio compression

-

-Audio compression really consists of two parts. The first part, called encoding, -transforms the digital audio data that resides, say, in a WAVE file, into a highly -compressed form called bitstream. To play the bitstream on your soundcard, you -need the second part, called decoding. Decoding takes the bitstream and re-expands -it to a WAVE file. -

-

-The program that effects the first part is called an audio encoder. LAME is such -an encoder . The program that does the second part is called an audio decoder. -Nowadays there are lots of players that decode MP3 -

-

Compression ratios, bitrate and quality

-

-It has not been explicitly mentioned up to now: What you end up with after -encoding and decoding is not the same sound file anymore: All superfluous -information has been squeezed out, so to say. It is not the same file, but it - will sound the same - more or less, depending on how much compression has been - performed on it. -

-

-Generally speaking, the lower the compression ratio achieved, the better the -sound quality will be in the end - and vice versa.
-Table 1.1 gives you a rough estimate about the quality you can expect. -

-

-Because compression ratio is a somewhat unwieldy measure, experts use the term -bitrate when speaking of the strength of compression. Bitrate denotes the average -number of bits that one second of audio data will take up in your compressed -bitstream. Usually the units used will be kbps, which is kbits/s, or 1000 bits/s -(not 1024).
-To calculate the number of bytes per second of audio data, simply divide the -number of bits per second by eight. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
table 1.1: bitrate versus sound quality
BitrateBandwidthQuality comparable to
16 kbps mono5.5 khzabove shortwave radio / telephone
32 kbps mono8.5 khznear AM (medium wave) radio
64kbps mono, 128 kbps stereo16 khzFM radio
-V 3~-V 0 (160~200 kbps)
- (variable bitrate)
18~20 khzperceptual transparency versus CD2 -
-
-
    -
  1. Audio compression (also called coding) - means reduce the size (bytes) that the original source requires to be stored. - This is not the same than compressors in DSP (or audio effects). The latter - reduces the dynamic range of the audio so that there is less difference in - perceived loudness between its strong and subtle parts. -
  2. -
  3. Lossy encoding (as opposed to lossless) cannot guarantee -transparency all of the time. This is the value accepted as the sweet spot. -
  4. - -
-
-
- -
- - - diff --git a/platform/win32/msvc/external/lame/doc/html/links.html b/platform/win32/msvc/external/lame/doc/html/links.html deleted file mode 100644 index 59311d73304..00000000000 --- a/platform/win32/msvc/external/lame/doc/html/links.html +++ /dev/null @@ -1,936 +0,0 @@ - - - - - - - Links related to LAME - - - -
-
- -
- LAME Official Logo -

LAME and MP3-related Links

-
- -

Quick Links:

- - - -

Free (open source) software which supports or uses -LAME:

- -

  Multiplatform:

- -
    - -
  • - FFmpeg An awesome collection of - codecs (libavcodec) for pretty much all popular audio and video formats. -
  • - -
  • - andromeda (PHP and ASP) - Dynamically presents collections of mp3s as streaming web sites. -
  • - -
  • - getID3() (PHP) PHP4 script that - extracts useful information from MP3s & other multimedia file formats. - Reads Lame tags. -
  • - -
  • - rip (Perl) Script for ripping - and encoding. -
  • - -
  • - VideoLAN A powerful multimedia - player and streaming solution for Win32, Linux, MacOS, BeOS... -
  • - -
  • - Audacity Open source - multiplatform audio editor. -
  • - -
  • - jRipper (Java) CD - ripper frontend. -
  • - -
  • - Tradebit - is a file hosting service that offers server-side MP3 encoding with LAME. -
  • - -
- -

  Posix (Linux, MacOS X, BSD, Solaris, etc.): -

- -
    - -
  • - k3b An exceptional CD burning and - ripping frontend for KDE. -
  • - -
  • - avifile AVI/DIVX encoder and decoder. -
  • - -
  • - Grip A gtk-based cd-player, - ripper and encoder. Supports cddb, cdparanoia and LAME. -
  • - -
  • - Transcode Several command line - utilities to transcode several audio and video formats. -
  • - -
  • - Mp3Maker - A WindowMaker enhanced front end to cdda2wav/cdparanoia and LAME/bladeenc. -
  • - -
  • - ripperX GTK frontend for - rippers and several encoders featuring CDDB support. -
  • - -
  • - T.E.A.R. frontend to LAME, - cdparanoia and CDDB. -
  • - -
  • - Xmcd. CD Player with CDDB and - ripping to MP3 and OGG. -
  • - -
  • - xtunes GTK frontend for LAME, - MAD, cdparanoia, cdrecord and more. -
  • - -
  • - DLame Perl script to - distribute the LAME encoding task among several machines in a network. -
  • - -
  • - Strec Stream recorder - A perl - wrapper for dsproxy, realplayer and LAME. -
  • - -
  • - TCDR a menu-driven console - frontend for CD recording and ripping that uses LAME to rip CDs into MP3 - files. -
  • - -
  • - DarkIce Live streamer for - IceCast. -
  • - -
  • - LiveIce - Real time streaming of mp3s. Works with IceCast. -
  • - -
  • - MuSE A mixing, encoding and streaming - engine. -
  • - -
  • - Flash For Linux a Flash-like - development library. -
  • - -
  • - ABCDE "A Better CD Encoder" - - Shell script to automatize ripping, encoding and tagging process. -
  • - -
  • - Arson - a KDE fronted to CD - burning and ripping tools. -
  • - -
  • - Cripple - A - command-line/batch CD ripper/encoder frontend. -
  • - -
- -

  MacOS Classic:

- -
    - -
  • - DropMP3 includes LAME - binaries. -
  • - -
- -

  Windows:

- -
    - -
  • - CDex Ripper & encoder, - includes LAME binaries (the Blade compatible dll). -
  • - -
  • - LameDropXPd - OggDrop style drag'n'drop frontend. -
  • - -
  • - DVDx DVD to - VCD/SVCD/AVI(XviD...) one-step converter. -
  • - -
  • - OmniEncoder a fully - featured frontend for LAME and several other encoders. -
  • - -
  • - LAMEX An activex control for - LAME, and a GUI. Source code only, includes LAME. -
  • - -
  • - m3w A - live mp3 streamer for the WWW. Works with LAME, icecast, soundcard input. -
  • - -
  • - out_lame Winamp output - plug-in. Create MP3 files directly from Winamp! -
  • - -
  • - RazorLame The - RazorBlade front end now supports LAME. -
  • - -
  • - winLAME The only *nice* - windows UI for LAME, according to the author :-) -
  • - -
  • - bbc2mp3 a tool for - saving BBC "Listen Again" programmes as MP3 files. -
  • - -
- -

Free (closed source) software which supports or uses -LAME:

- -
    - -
  • - Foobar2000 (Windows) an audio - player with spartan interface but lots of components and an almost - fanatical focus on audio quality. -
  • - -
  • - Audiograbber (Windows) - CD ripper/encoder. -
  • - -
  • - EnLAMEr - (Windows) frontend for lame.exe -
  • - -
  • - EAC (Windows) Exact Audio - Copy: High quality CD ripper. -
  • - -
  • - jtvmaker (Java) A web - slideshow generating and photo sharing tool using LAME. -
  • - -
  • - Wavosaur Free audio editor and - batch processor. -
  • - -
  • - LameBatch (Windows) frontend - for lame.exe -
  • - -
  • - Hard Disk Ogg a - line-in recorder that can encode directly to MP3, among other formats. -
  • - -
  • - LAMEr (Windows) Can also - encode from line-in. -
  • - -
  • - RipTrax (Windows) Advanced CD Ripper - with support for LAME and Vorbis. -
  • - -
  • - Music Conduit (Windows) - A working substitute for the Transfer to Device feature in Windows Media - Player. -
  • - -
  • - WORM MP3 Encoder - (Windows) MP3 encoder based on LAME with reported improvements. -
  • - -
  • - ZLURP (Windows, Mac, Linux) Ripper and - encoder. Includes LAME binaries. -
  • - -
  • - iTunes-LAME (MacOS) - Integrates LAME into Apple iTunes, as an alternative to the default - (rather poor) encoder. -
  • - -
  • - LameBrain (MacOS) - LAME frontend for MacOS X. -
  • - -
  • - SecondSpin - (Amiga) ripper & encoder. -
  • - -
- -

Commercial software which supports or uses -LAME:

- -
    - -
  • - WinAmp Can rip CDs using Lame, but - only in the Pro (paid) version. -
  • - -
  • - WaveLab Digital Audio - editing software. -
  • - -
  • - Goldwave Audio editor for Windows. -
  • - -
  • - dBpowerAMP (Windows) Rip and - encode to/from mp3, wma, vorbis and other audio formats. -
  • - -
  • - UltraISO ISO CD image - builder, editor and extractor. -
  • - -
  • - AudioEdit Deluxe Windows - sound editor. -
  • - -
  • - Blaze Media Pro audio/video - converter, editor, CD/DVD burner, and more for Windows. -
  • - -
  • - SWiSH Max Adobe Flash - authoring tool for Windows. -
  • - -
  • - übercaster Podcast - production suite for Macintosh. -
  • - -
  • - Audio Ease BarbaBatch Batch audio - file converter for Macintosh. -
  • - -
  • - Amadeus II (Mac) - Manipulate, create and analyze sounds. -
  • - -
  • - Peak 3 Macintosh audio - editing/processing/mastering software. -
  • - -
  • - Audion Mac Jukebox software. -
  • - -
  • - CD Stack CD ripping software for - Mac. -
  • - -
  • - Text Aloud MP3 Converts text - into speech. -
  • - -
  • - TotalRecorder Universal sound - recoder. -
  • - -
  • - CDcopy Windows ripper/encoder. -
  • - -
  • - eJay DJ Mix Station / Dance eJay - Various Windows DJ software, using Gogo. -
  • - -
  • - Easy CD-DA Extractor Windows - ripper/encoder, includes LAME binaries. -
  • - -
  • - MP3 Observer MP3 file-manager, - ID3 tag editor, playlist creator and CD-archiving tool. -
  • - -
  • - MPAction MP3 Tools Windows - jukebox software. -
  • - -
  • - 1CoolButtonTool Flash and Java - button editor. -
  • - -
  • - N2MP3 Pro Macintosh jukebox - software. -
  • - -
  • - UltraTagger. ID3 tag - management, encoding and decoding. -
  • - -
  • - UMG protected audio CDs - UMG is using Lame for the PC part of protected audio CDs. ("Fast - and Furious"). -
  • - -
  • - Visual MP3 Windows jukebox - software with Karaoke support. -
  • - -
  • - Flash Digger Plus - a ShockWave - Flash decompiler. -
  • - -
- -
- - - -

LAME Binaries:

- -

Linux:

- - - -

Windows:

- -
    - -
  • - RareWares offers several - compiled LAME versions, including modified versions featuring special - functionality. -
  • - -
  • - From the Encoder/Windows section of www.mp3-tech.org. -
  • - -
  • - In the encoders section of MAZ - Sound. -
  • - -
- -

MacOS X:

- -
    - -
  • - Thalictrum offers optimized - binaries for both Intel and PowerPC Macs. -
  • - -
  • - KJams has a - QuickTime component, which allows you to export audio from QuickTime - and related apps to MP3 using LAME. -
  • - -
  • - The FINK project provides LAME - binaries compiled for MacOS X. -
  • - - - -
- -

Solaris:

- -
    - -
  • - Sunfreeware provides - up-to-date binaries for several versions of Sun Solaris, both SPARC and - x86 architectures. -
  • - -
- -

Etc.:

- - - -

Amiga:

- - - -
- -

Other MP3 Encoders:

- -
    - -
  • - Takehiro Tominaga has done some - amazing work on LAME recently (see - history). His versions are available here (source code only). - Fortunately for us, Takehiro takes the time to fold many of his - improvements back into LAME. -
  • - -
  • - GOGO-no-coda - MP3 encoder (Alternate - link) A forked version of LAME with many key routines rewritten in - assembly (I.E, it's much faster). Uses the NASM assembler. -
  • - -
  • - FhG MP3enc 3.1. The - gold standard of encoders. All other encoders strive to sound this good. - Demo version only encodes up to 30 seconds.
    - Update: according to recent listening tests, Lame already surpassed - FhG encoders in quality at most bitrates. :-) -
  • - -
  • - FhG l3enc. The older - brother of MP3enc. Very slow, but with quite reasonable quality. -
  • - -
  • - FhG Fastencc this - "free" encoder was created with libraries stolen from Fraunhofer. It's - the faster brother of MP3enc, and also the only FhG encoder to offer VBR - encoding. Quality is not on par with MP3enc or LAME. -
  • - -
  • - BladeEnc One of - the first free encoders for Linux. Development has stopped at version - 0.94.2. Quality is not satisfactory. -
  • - -
  • - Xing MP3 - encoder Reasonable quality and extremely fast encoder. Is now the MP3 - encoder used in Real Jukebox and Real Player, and has been recently - released under an Open Source license (it's still limited to Windows - though) -
  • - -
  • - QDesign MP3 encoder Horrible - quality. Only listed here for completeness purposes. -
  • - -
  • - ReallyRareWares is an online - museum preserving obsolete and defunct encoders for several audio - formats, including old LAME versions and obscure MP3 encoders (most of - these encoders are simply compiles of the MPEG reference sources - - dist10 - though) -
  • -
- -
- -

MP3 Encoder Comparisons based on listening -tests:

- - - -

MP3 Encoding Web Sites:

- -
    - -
  • - Hydrogenaudio - - Public discussion forum focused on psychoacoustic audio compression, - featuring an MP3 section. -
  • - -
  • - MAZ Sound Encoders and other - audio software. -
  • - -
- -

General MP3 Web Sites:

- - - -

MP3 Related Software and Hardware:

- -
    - -
  • - A favorite Linux ripper: cdparanoia (also, GNU's - libcdio, a - multiplatform port of CDparanoia) -
  • - -
  • - How to figure out which codec was used to make that mp3? Use EncSpot -
  • - -
  • - Open source embedded mp3? Cantante -
  • - -
  • - The MAD decoder Bug - free, 24bit and GPL! -
  • - -
  • - PCAVtech sound - card benchmarks -
  • - -
  • - Maate looks like a - very sophisticated MP3 analysis package. They also have a good - description of MP3 frames. -
  • - -
  • - A nice .wav file viewer and editor: sweep -
  • - -
  • - mptrim: Trim silence and adjust - volume of mp3 files. -
  • - -
  • - mp3check: A - program to check integrity of mp3 files. -
  • - -
  • - Mpcut: X11 mp3 - frame editor. -
  • - -
  • - mp3asm: A program - to cut and paste mp3 frames. -
  • - -
  • - MP3Splitter: Win32 - MP3 splitter and frame statistics. -
  • - -
  • - jchopwave: Source code to a - utility to split up .wav files. -
  • - -
- -

MP3 Encoding direct from line-in:

- -
    - -
  • - mpegrec: Linux/Win32 - line-in/mic MP3 recorder (requires LAME). -
  • - -
  • - MixMP3 by Dmitry Lesnikov -
  • - -
  • - Messer by Dariusz - Sieradzki -
  • - -
  • - LAMEr, also a nice - Windows - frontend -
  • - -
- -

Patent Information:

- - - -
- -
- - - \ No newline at end of file diff --git a/platform/win32/msvc/external/lame/doc/html/list.html b/platform/win32/msvc/external/lame/doc/html/list.html deleted file mode 100644 index 6a49be94421..00000000000 --- a/platform/win32/msvc/external/lame/doc/html/list.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - LAME MP3 Encoder :: The LAME Mailing List - - - -
-
- -
- LAME Official Logo -

The LAME Mailing List

-
- -

- Thanks to Jan Peman for running the mp3encoder mailing list for several - years! -

- -

- In September of 2000, the list was moved and is now run by Warren Toomey. To - join, visit the - mp3encoder mailing list webpage. -

- -

- The development - list is run by SourceForge -

- -
- -
- - - \ No newline at end of file diff --git a/platform/win32/msvc/external/lame/doc/html/ms_stereo.html b/platform/win32/msvc/external/lame/doc/html/ms_stereo.html deleted file mode 100644 index 095853feb6b..00000000000 --- a/platform/win32/msvc/external/lame/doc/html/ms_stereo.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - LAME MP3 Encoder :: Mid/Side Stereo - - - -
-
- -
- LAME Official Logo -

LAME - Mid/Side Stereo

-
- -

-During years, what is called Joint-stereo has been misunderstood.
-Joint stereo in MP3 is a mechanism to selectively choose between three modes -of storing stereo information. These three modes are Simple Stereo -, Mid-Side Stereo, and Intensity-Stereo. -

-

-In Simple Stereo, the encoder analyzes the left and the right channels -independently and stores the information as-is, without further checking the -similarities in the signal1 -

-

-In Mid-Side Stereo, the encoder analyzes the left, right2 -, mid (l+r) and side (l-r) channels. It then gives more bits to the -mid than the side channel (as usually the side channel is less complex) and then -stores just the mid and side channels into the resulting MP3.
-This way, the mid channel can be encoded as if the frame was bigger, and as such -have more quality with the same bitrate.
-Note: Mid/side in MP3 is switched frame-by-frame. In AAC, it can be switched -band by band. -

-

-Intensity-Stereo (not supported in LAME) uses a technique known as joint -frequency encoding, which is based on the principle of sound localization.
-Human hearing is predominantly less acute at perceiving the direction of certain -audio frequencies. By exploiting this 'limitation', intensity stereo coding can -reduce the data rate of an audio stream with little or no perceived change in -apparent quality.
-It works by merging the upper spectrum into just one channel (thus reducing -overall differences between channels) and transmiting a little side information -about how to pan certain frequency regions.
-This type of coding does not perfectly reconstruct the original audio because -of the loss of information and can cause unwanted artifacts. However, for very -low bitrates this tool usually provides a gain of perceived quality. -3 -

- -

- The LAME mid/side switching criterion, and mid/side masking thresholds are - taken from Johnston and Ferreira, Sum-Difference Stereo Transform - Coding, Proc. IEEE ICASSP (1992) p 569-571. -

- -

- The MPEG AAC standard claims to use mid/side encoding based on this paper. -

- -
-
    -
  1. This is not the same than dual-mono. Dual-mono should be -used where the left and right channels of the input file contain two different -streams, where you should choose one (as in two different languages)
  2. -
  3. If one channel has much less noise masking in a certain -band than the other, it could happen than the noise spread (by mid/side stereo) -may no longer be masked for that channel. If both channels have the same -masking, then the noise spread between both channels will be equally well masked. -
    -To prevent this from happening, there is an analysis done on the left and right -channel to determine the noise masking thresholds and properly mask the noise.
  4. -
  5. Quote from wikipedia Joint_stereo.
  6. -
-
- -
- -
- - - \ No newline at end of file diff --git a/platform/win32/msvc/external/lame/doc/html/usage.html b/platform/win32/msvc/external/lame/doc/html/usage.html deleted file mode 100644 index 5cd8ff74692..00000000000 --- a/platform/win32/msvc/external/lame/doc/html/usage.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - Usage of the commandline encoder - - - -
-
- -
- LAME Official Logo -

Common and recommended switches

-
-

Common settings

-
-% lame [options] inputfile [outputfile]
-
-
    -
  • Constant Bitrate: -b number or - --preset cbr number Valid values -for the -b settings depend on the sampling rate1. -
    lame -b 128 sample.wav sample.mp3
    -
  • -
  • Variable Bitrate (ABR mode): - --abr number or --preset number - Valid values for the --abr setting range from 8 to 320. -
    lame --abr 128 sample.wav sample.mp3
    -
  • -
  • Variable Bitrate (VBR mode): - -V number Valid values -are from 0 to 9, with decimal values possible, where 0 is the highest quality -while 9.999 is the lowest one. -
    lame -V2 sample.wav sample.mp3
    -
  • -
-

Hydrogenaudio recommended settings

-
    -
  • -Best quality, "archiving"2 : --b 320 -

    CBR 320 is the strongest setting for MP3, with -the lowest risk of artifacts. With the exception of a few situations, quality is -rarely better than the highest VBR profiles described below. -

    -
  • -
  • High quality, HiFi, home or quiet listening : --V0 (avg. 245 kbps) or -V1 - (avg. 225 kbps) or -V2 (avg. 190 kbps) or - -V3 (avg. 175 kbps). -

    These settings are considered to produce - transparent encoding (transparent = most people can't distinguish the MP3 from - the original in an ABX blind test). Audible differences between these presets - exist, but are rare. -

    -
  • -
  • Portable, background noise and low bitrate requirement, small sizes : - --V4 (avg. 160 kbps) or -V5 -(avg. 130 kbps) or -V6 (avg. 115 kbps) -

    --V6 produces an "acceptable" quality, while -V4 should be close to perceptual transparency. -

    -
  • -
  • Very low bitrate, small sizes, eg. for voice, radio, mono encoding : ---abr 80 (stereo) or --abr 56 -m m (mono) -

    -For very low bitrates, up to 100kbps, ABR is most often the best solution. -

    -
  • -
-
-
    -
  1. - - - - - - - - - - -
    Codecsample frequencies (kHz)bitrates (kbps)
    MPEG-1 layer III 32, 44.1, 4832 40 48 56 64 80 96 112 128 160 192 224 256 320
    MPEG-2 layer III 16, 22.05, 24 8 16 24 32 40 48 56 64 80 96 112 128 144 160
    MPEG-2.5 layer III 8, 11.025, 128 16 24 32 40 48 56 64
    -
  2. -
  3. Lossy codecs, like MP3, should not be used for archiving, -since the nature of lossy encoding always changes the original sound, even if it -sounds transparent. Use lossless codecs for this purpose. -
  4. -
-
- -
- -
- - - diff --git a/platform/win32/msvc/external/lame/doc/html/vbr.html b/platform/win32/msvc/external/lame/doc/html/vbr.html deleted file mode 100644 index 77c479134d4..00000000000 --- a/platform/win32/msvc/external/lame/doc/html/vbr.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - LAME MP3 Encoder :: Variable Bit Rate - - - -
-
- -
- LAME Official Logo -

LAME - Variable Bit Rate

-
- -

Suggested usage:

-
lame -V2 input.wav output.mp3
- -

-In Variable Bitrate (VBR) coding, the user chooses a desired quality level -instead of a bitrate. A correct implementation should be able to maintain the -same quality perception, changing the bitrate to a higher or lower one whenever -the audio file is more or less complex. With MP3, this is not always possible. -

-

-VBR encoding is the logical way of encoding data. General data compressors (like -.zip and .rar) are VBR, as lossless codecs are as well. Being able to indicate -a quality value, the encoder decides for each frame, which is the most appropiate -bitrate to keep it. -

-

-The main advantage of using VBR is that the encoder will use the smallest amount -of bytes needed to keep the asked quality. The inconvenience is that the -file size is quite unpredictable, and can change from file to file in more than -50kbps. (or nearly double the size, with different genres and quasi-mono content) -

-
- -
- - - \ No newline at end of file diff --git a/platform/win32/msvc/external/lame/doc/man/Makefile.am b/platform/win32/msvc/external/lame/doc/man/Makefile.am deleted file mode 100644 index ecab077fd32..00000000000 --- a/platform/win32/msvc/external/lame/doc/man/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ -## $Id: Makefile.am,v 1.1 2000/10/22 11:39:44 aleidinger Exp $ - -AUTOMAKE_OPTIONS = foreign ansi2knr - -man_MANS = lame.1 -EXTRA_DIST = ${man_MANS} - diff --git a/platform/win32/msvc/external/lame/doc/man/Makefile.in b/platform/win32/msvc/external/lame/doc/man/Makefile.in deleted file mode 100644 index 1b45085fcc6..00000000000 --- a/platform/win32/msvc/external/lame/doc/man/Makefile.in +++ /dev/null @@ -1,464 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = doc/man -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -man1dir = $(mandir)/man1 -am__installdirs = "$(DESTDIR)$(man1dir)" -NROFF = nroff -MANS = $(man_MANS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CONFIG_DEFS = @CONFIG_DEFS@ -CONFIG_MATH_LIB = @CONFIG_MATH_LIB@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CPUCCODE = @CPUCCODE@ -CPUTYPE = @CPUTYPE@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ -FRONTEND_LDADD = @FRONTEND_LDADD@ -FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ -GREP = @GREP@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_CONFIG = @GTK_CONFIG@ -GTK_LIBS = @GTK_LIBS@ -INCLUDES = @INCLUDES@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDADD = @LDADD@ -LDFLAGS = @LDFLAGS@ -LIBICONV = @LIBICONV@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ -LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBICONV = @LTLIBICONV@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEDEP = @MAKEDEP@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NASM = @NASM@ -NASM_FORMAT = @NASM_FORMAT@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -RM_F = @RM_F@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ -SNDFILE_LIBS = @SNDFILE_LIBS@ -STRIP = @STRIP@ -U = @U@ -VERSION = @VERSION@ -WITH_FRONTEND = @WITH_FRONTEND@ -WITH_MP3RTP = @WITH_MP3RTP@ -WITH_MP3X = @WITH_MP3X@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = foreign ansi2knr -man_MANS = lame.1 -EXTRA_DIST = ${man_MANS} -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/man/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign doc/man/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-man1: $(man_MANS) - @$(NORMAL_INSTALL) - test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" - @list=''; test -n "$(man1dir)" || exit 0; \ - { for i in $$list; do echo "$$i"; done; \ - l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ - sed -n '/\.1[a-z]*$$/p'; \ - } | while read p; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; echo "$$p"; \ - done | \ - sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ - sed 'N;N;s,\n, ,g' | { \ - list=; while read file base inst; do \ - if test "$$base" = "$$inst"; then list="$$list $$file"; else \ - echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ - $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ - fi; \ - done; \ - for i in $$list; do echo "$$i"; done | $(am__base_list) | \ - while read files; do \ - test -z "$$files" || { \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ - done; } - -uninstall-man1: - @$(NORMAL_UNINSTALL) - @list=''; test -n "$(man1dir)" || exit 0; \ - files=`{ for i in $$list; do echo "$$i"; done; \ - l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ - sed -n '/\.1[a-z]*$$/p'; \ - } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ - test -z "$$files" || { \ - echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(man1dir)" && rm -f $$files; } -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @list='$(MANS)'; if test -n "$$list"; then \ - list=`for p in $$list; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ - if test -n "$$list" && \ - grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ - echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ - grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ - echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ - echo " typically \`make maintainer-clean' will remove them" >&2; \ - exit 1; \ - else :; fi; \ - else :; fi - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(MANS) -installdirs: - for dir in "$(DESTDIR)$(man1dir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-man - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: install-man1 - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-man - -uninstall-man: uninstall-man1 - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-man1 \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - uninstall uninstall-am uninstall-man uninstall-man1 - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/platform/win32/msvc/external/lame/doc/man/lame.1 b/platform/win32/msvc/external/lame/doc/man/lame.1 deleted file mode 100644 index 7036424b1f6..00000000000 --- a/platform/win32/msvc/external/lame/doc/man/lame.1 +++ /dev/null @@ -1,1140 +0,0 @@ -.TH lame 1 "July 08, 2008" "LAME 3.99" "LAME audio compressor" -.SH NAME -lame \- create mp3 audio files -.SH SYNOPSIS -lame [options] -.SH DESCRIPTION -.PP -LAME is a program which can be used to create compressed audio files. -(Lame ain't an MP3 encoder). -These audio files can be played back by popular MP3 players such as -mpg123 or madplay. -To read from stdin, use "\-" for . -To write to stdout, use "\-" for . -.SH OPTIONS -Input options: -.TP -.B \-r -Assume the input file is raw pcm. -Sampling rate and mono/stereo/jstereo must be specified on the command line. -For each stereo sample, LAME expects the input data to be ordered left channel -first, then right channel. By default, LAME expects them to be signed integers -with a bitwidth of 16. -Without -.B \-r, -LAME will perform several -.I fseek()'s -on the input file looking for WAV and AIFF headers. -.br -Might not be available on your release. -.TP -.B \-x -Swap bytes in the input file or output file when using -.B \-\-decode. -.br -For sorting out little endian/big endian type problems. -If your encodings sounds like static, -try this first. -.br -Without using -.B \-x, -LAME will treat input file as native endian. -.TP -.BI \-s " sfreq" -.I sfreq -= 8/11.025/12/16/22.05/24/32/44.1/48 - -Required only for raw PCM input files. -Otherwise it will be determined from the header of the input file. - -LAME will automatically resample the input file to one of the supported -MP3 samplerates if necessary. -.TP -.BI \-\-bitwidth " n" -Input bit width per sample. -.br -.I n -= 8, 16, 24, 32 (default 16) - -Required only for raw PCM input files. -Otherwise it will be determined from the header of the input file. -.TP -.BI \-\-signed -Instructs LAME that the samples from the input are signed (the default -for 16, 24 and 32 bits raw pcm data). - -Required only for raw PCM input files. -.TP -.BI \-\-unsigned -Instructs LAME that the samples from the input are unsigned (the default -for 8 bits raw pcm data, where 0x80 is zero). - -Required only for raw PCM input files -and only available at bitwidth 8. -.TP -.BI \-\-little-endian -Instructs LAME that the samples from the input are in little-endian form. - -Required only for raw PCM input files. -.TP -.BI \-\-big-endian -Instructs LAME that the samples from the input are in big-endian form. - -Required only for raw PCM input files. -.TP -.B \-\-mp2input -Assume the input file is a MPEG Layer II (ie MP2) file. -.br -If the filename ends in ".mp2" LAME will assume it is a MPEG Layer II file. -For stdin or Layer II files which do not end in .mp2 you need to use -this switch. -.TP -.B \-\-mp3input -Assume the input file is a MP3 file. -.br -Useful for downsampling from one mp3 to another. -As an example, -it can be useful for streaming through an IceCast server. -.br -If the filename ends in ".mp3" LAME will assume it is an MP3. -For stdin or MP3 files which do not end in .mp3 you need to use this switch. -.TP -.BI \-\-nogap " file1 file2 ..." -gapless encoding for a set of contiguous files -.TP -.BI \-\-nogapout " dir" -output dir for gapless encoding (must precede \-\-nogap) - -.PP -Operational options: -.TP -.BI \-m " mode" -.I mode -= s, j, f, d, m, l, r - -Joint-stereo is the default mode for stereo files with VBR when -.B \-V -is more than 4 or fixed bitrates of 160kbs or less. -At higher fixed bitrates or higher VBR settings, -the default is stereo. - -.B (s)imple stereo -.br -In this mode, -the encoder makes no use of potentially existing correlations between -the two input channels. -It can, -however, -negotiate the bit demand between both channel, -i.e. give one channel more bits if the other contains silence or needs -less bits because of a lower complexity. - -.B (j)oint stereo -.br -In this mode, -the encoder will make use of a correlation between both channels. -The signal will be matrixed into a sum ("mid"), -computed by L+R, -and difference ("side") signal, -computed by L\-R, -and more bits are allocated to the mid channel. -This will effectively increase the bandwidth if the signal does not -have too much stereo separation, -thus giving a significant gain in encoding quality. - -Using mid/side stereo inappropriately can result in audible -compression artifacts. -To much switching between mid/side and regular stereo can also -sound bad. -To determine when to switch to mid/side stereo, -LAME uses a much more sophisticated algorithm than that described -in the ISO documentation, and thus is safe to use in joint -stereo mode. - -.B (f)orced MS stereo -.br -This mode will force MS stereo on all frames. -It is slightly faster than joint stereo, -but it should be used only if you are sure that every frame of the -input file has very little stereo separation. - -.B (d)ual mono -.br -In this mode, -the 2 channels will be totally independently encoded. -Each channel will have exactly half of the bitrate. -This mode is designed for applications like dual languages -encoding (for example: English in one channel and French in the other). -Using this encoding mode for regular stereo files will result in a -lower quality encoding. - -.B (m)ono -.br -The input will be encoded as a mono signal. -If it was a stereo signal, -it will be downsampled to mono. -The downmix is calculated as the sum of the left and right channel, -attenuated by 6 dB. - -.B (l)eft channel only -.br -The input will be encoded as a mono signal. -If it was a stereo signal, -the left channel will be encoded only. - -.B (r)ight channel only -.br -The input will be encoded as a mono signal. -If it was a stereo signal, -the right channel will be encoded only. - -.TP -.B \-a -Mix the stereo input file to mono and encode as mono. -.br -The downmix is calculated as the sum of the left and right channel, -attenuated by 6 dB. - -This option is only needed in the case of raw PCM stereo input -(because LAME cannot determine the number of channels in the input file). -To encode a stereo PCM input file as mono, -use -.B lame \-m -.I s -.B \-a. - -For WAV and AIFF input files, -using -.B \-m -will always produce a mono .mp3 file from both mono and stereo input. -.TP -.B \-d -Allows the left and right channels to use different block size types. -.TP -.B \-\-freeformat -Produces a free format bitstream. -With this option, -you can use -.B \-b -with any bitrate higher than 8 kbps. - -However, -even if an mp3 decoder is required to support free bitrates at -least up to 320 kbps, -many players are unable to deal with it. - -Tests have shown that the following decoders support free format: -.br -.B FreeAmp -up to 440 kbps -.br -.B in_mpg123 -up to 560 kbps -.br -.B l3dec -up to 310 kbps -.br -.B LAME -up to 560 kbps -.br -.B MAD -up to 640 kbps -.TP -.B \-\-decode -Uses LAME for decoding to a wav file. -The input file can be any input type supported by encoding, -including layer II files. -LAME uses a bugfixed version of mpglib for decoding. - -If -.B \-t -is used (disable wav header), -LAME will output raw pcm in native endian format. -You can use -.B \-x -to swap bytes order. - -This option is not usable if the MP3 decoder was -.B explicitly -disabled in the build of LAME. -.TP -.BI \-t -Disable writing of the INFO Tag on encoding. -.br -This tag in embedded in frame 0 of the MP3 file. -It includes some information about the encoding options of the file, -and in VBR it lets VBR aware players correctly seek and compute -playing times of VBR files. - -When -.B \-\-decode -is specified (decode to WAV), -this flag will disable writing of the WAV header. -The output will be raw pcm, -native endian format. -Use -.B \-x -to swap bytes. -.TP -.BI \-\-comp " arg" -Instead of choosing bitrate, -using this option, -user can choose compression ratio to achieve. -.TP -.BI \-\-scale " n" -.PD 0 -.TP -.BI \-\-scale\-l " n" -.TP -.BI \-\-scale\-r " n" -Scales input (every channel, only left channel or only right channel) by -.I n. -This just multiplies the PCM data (after it has been converted to floating -point) by -.I n. - -.I n -> 1: increase volume -.br -.I n -= 1: no effect -.br -.I n -< 1: reduce volume - -Use with care, -since most MP3 decoders will truncate data which decodes to values -greater than 32768. -.PD -.TP -.B \-\-replaygain\-fast -Compute ReplayGain fast but slightly inaccurately. - -This computes "Radio" ReplayGain on the input data stream after -user\(hyspecified volume\(hyscaling and/or resampling. - -The ReplayGain analysis does -.I not -affect the content of a compressed data stream itself, -it is a value stored in the header of a sound file. -Information on the purpose of ReplayGain and the algorithms used is -available from -.B http://www.replaygain.org/. - -Only the "RadioGain" Replaygain value is computed, -it is stored in the LAME tag. -The analysis is performed with the reference -volume equal to 89dB. -Note: the reference volume has been changed from 83dB on transition from -version 3.95 to 3.95.1. - -This switch is enabled by default. - -See also: -.B \-\-replaygain\-accurate, \-\-noreplaygain -.TP -.B \-\-replaygain\-accurate -Compute ReplayGain more accurately and find the peak sample. - -This enables decoding on the fly, computes "Radio" ReplayGain on the -decoded data stream, -finds the peak sample of the decoded data stream and stores it in the file. - -The ReplayGain analysis does -.I not -affect the content of a compressed data stream itself, -it is a value stored in the header of a sound file. -Information on the purpose of ReplayGain and the algorithms used is -available from -.B http://www.replaygain.org/. - - -By default, LAME performs ReplayGain analysis on the input data -(after the user\(hyspecified volume scaling). -This behavior might give slightly inaccurate results -because the data on the output of a lossy compression/decompression sequence -differs from the initial input data. -When -.B \-\-replaygain-accurate -is specified the mp3 stream gets decoded on the fly and the analysis is -performed on the decoded data stream. -Although theoretically this method gives more accurate results, -it has several disadvantages: -.RS 8 -.IP "*" 4 -tests have shown that the difference between the ReplayGain values computed -on the input data and decoded data is usually not greater than 0.5dB, -although the minimum volume difference the human ear can perceive is -about 1.0dB -.IP "*" 4 -decoding on the fly significantly slows down the encoding process -.RE -.RS 7 - -The apparent advantage is that: -.RE -.RS 8 -.IP "*" 4 -with -.B \-\-replaygain-accurate -the real peak sample is determined and stored in the file. -The knowledge of the peak sample can be useful to decoders (players) -to prevent a negative effect called 'clipping' that introduces distortion -into the sound. -.RE -.RS 7 - -Only the "RadioGain" ReplayGain value is computed, -it is stored in the LAME tag. -The analysis is performed with the reference -volume equal to 89dB. -Note: the reference volume has been changed from 83dB on transition from -version 3.95 to 3.95.1. - -This option is not usable if the MP3 decoder was -.B explicitly -disabled in the build of LAME. -(Note: if LAME is compiled without the MP3 decoder, -ReplayGain analysis is performed on the input data after user-specified -volume scaling). - -See also: -.B \-\-replaygain-fast, \-\-noreplaygain \-\-clipdetect -.RE -.TP -.B \-\-noreplaygain -Disable ReplayGain analysis. - -By default ReplayGain analysis is enabled. This switch disables it. - -See also: -.B \-\-replaygain-fast, \-\-replaygain-accurate -.TP -.B \-\-clipdetect -Clipping detection. - -Enable -.B \-\-replaygain-accurate -and print a message whether clipping occurs and how far in dB the waveform -is from full scale. - -This option is not usable if the MP3 decoder was -.B explicitly -disabled in the build of LAME. - -See also: -.B \-\-replaygain-accurate -.TP -.B \-\-preset " type | [cbr] kbps" -Use one of the built-in presets. - -Have a look at the PRESETS section below. - -.B \-\-preset help -gives more infos about the the used options in these presets. -.TP -.B \-\-preset " type | [cbr] kbps" -Use one of the built-in presets. -.TP -.B \-\-noasm " type" -Disable specific assembly optimizations ( -.B mmx -/ -.B 3dnow -/ -.B sse -). -Quality will not increase, only speed will be reduced. -If you have problems running Lame on a Cyrix/Via processor, -disabling mmx optimizations might solve your problem. - -.PP -Verbosity: -.TP -.BI \-\-disptime " n" -Set the delay in seconds between two display updates. -.TP -.B \-\-nohist -By default, -LAME will display a bitrate histogram while producing VBR mp3 files. -This will disable that feature. -.br -Histogram display might not be available on your release. -.TP -.B -S -.PD 0 -.TP -.B \-\-silent -.TP -.B \-\-quiet -Do not print anything on the screen. -.PD -.TP -.B \-\-verbose -Print a lot of information on the screen. -.TP -.B \-\-help -Display a list of available options. - -.PP -Noise shaping & psycho acoustic algorithms: -.TP -.BI -q " qual" -0 <= -.I qual -<= 9 - -Bitrate is of course the main influence on quality. -The higher the bitrate, -the higher the quality. -But for a given bitrate, -we have a choice of algorithms to determine the best scalefactors -and Huffman encoding (noise shaping). - -.B -q 0: -.br -use slowest & best possible version of all algorithms. -.B -q 0 -and -.B -q 1 -are slow and may not produce significantly higher quality. - -.B -q 2: -.br -recommended. -Same as -.B -h. - -.B -q 5: -.br -default value. -Good speed, -reasonable quality. - -.B -q 7: -.br -same as -.B -f. -Very fast, -ok quality. -Psycho acoustics are used for pre-echo & M/S, -but no noise shaping is done. - -.B -q 9: -.br -disables almost all algorithms including psy-model. -Poor quality. -.TP -.B -h -Use some quality improvements. -Encoding will be slower, -but the result will be of higher quality. -The behavior is the same as the -.B -q 2 -switch. -.br -This switch is always enabled when using VBR. -.TP -.B -f -This switch forces the encoder to use a faster encoding mode, -but with a lower quality. -The behavior is the same as the -.B -q 7 -switch. - -Noise shaping will be disabled, -but psycho acoustics will still be computed for bit allocation -and pre-echo detection. - -.PP -CBR (constant bitrate, the default) options: -.TP -.BI -b " n" -For MPEG-1 (sampling frequencies of 32, 44.1 and 48 kHz) -.br -.I n -= 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 - -For MPEG-2 (sampling frequencies of 16, 22.05 and 24 kHz) -.br -.I n -= 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160 - -For MPEG-2.5 (sampling frequencies of 8, 11.025 and 12 kHz) -.br -.I n -= 8, 16, 24, 32, 40, 48, 56, 64 - -Default is 128 for MPEG1 and 64 for MPEG2. -.TP -.BI \-\-cbr -enforce use of constant bitrate - -.PP -ABR (average bitrate) options: -.TP -.BI \-\-abr " n" -Turns on encoding with a targeted average bitrate of n kbits, -allowing to use frames of different sizes. -The allowed range of -.I n -is 8 - 310, -you can use any integer value within that range. - -It can be combined with the -.B -b -and -.B -B -switches like: -.B lame \-\-abr -.I 123 -.B -b -.I 64 -.B -B -.I 192 a.wav a.mp3 -which would limit the allowed frame sizes between 64 and 192 kbits. - -The use of -.B -B -is NOT RECOMMENDED. -A 128 kbps CBR bitstream, -because of the bit reservoir, -can actually have frames which use as many bits as a 320 kbps frame. -VBR modes minimize the use of the bit reservoir, -and thus need to allow 320 kbps frames to get the same flexibility -as CBR streams. - -.PP -VBR (variable bitrate) options: -.TP -.B -v -use variable bitrate -.B (\-\-vbr-new) -.TP -.B \-\-vbr-old -Invokes the oldest, -most tested VBR algorithm. -It produces very good quality files, -though is not very fast. -This has, -up through v3.89, -been considered the "workhorse" VBR algorithm. -.TP -.B \-\-vbr-new -Invokes the newest VBR algorithm. -During the development of version 3.90, -considerable tuning was done on this algorithm, -and it is now considered to be on par with the original -.B \-\-vbr-old. -It has the added advantage of being very fast (over twice as fast as -.B \-\-vbr-old). -.TP -.BI -V " n" -0 <= -.I n -<= 9 -.br -Enable VBR (Variable BitRate) and specifies the value of VBR quality -(default = 4). -0 = highest quality. - -.PP -ABR and VBR options: -.TP -.BI -b " bitrate" -For MPEG-1 (sampling frequencies of 32, 44.1 and 48 kHz) -.br -.I n -= 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 - -For MPEG-2 (sampling frequencies of 16, 22.05 and 24 kHz) -.br -.I n -= 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160 - -For MPEG-2.5 (sampling frequencies of 8, 11.025 and 12 kHz) -.br -.I n -= 8, 16, 24, 32, 40, 48, 56, 64 - -Specifies the minimum bitrate to be used. -However, -in order to avoid wasted space, -the smallest frame size available will be used during silences. -.TP -.BI -B " bitrate" -For MPEG-1 (sampling frequencies of 32, 44.1 and 48 kHz) -.br -.I n -= 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 - -For MPEG-2 (sampling frequencies of 16, 22.05 and 24 kHz) -.br -.I n -= 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160 - -For MPEG-2.5 (sampling frequencies of 8, 11.025 and 12 kHz) -.br -.I n -= 8, 16, 24, 32, 40, 48, 56, 64 - -Specifies the maximum allowed bitrate. - -Note: If you own an mp3 hardware player build upon a MAS 3503 chip, -you must set maximum bitrate to no more than 224 kpbs. -.TP -.B -F -Strictly enforce the -.B -b -option. -.br -This is mainly for use with hardware players that do not support low -bitrate mp3. - -Without this option, -the minimum bitrate will be ignored for passages of analog silence, -i.e. when the music level is below the absolute threshold of -human hearing (ATH). - -.PP -Experimental options: -.TP -.BI -X " n" -0 <= -.I n -<= 7 - -When LAME searches for a "good" quantization, -it has to compare the actual one with the best one found so far. -The comparison says which one is better, -the best so far or the actual. -The -.B -X -parameter selects between different approaches to make this decision, -.B -X0 -being the default mode: - -.B -X0 -.br -The criteria are (in order of importance): -.br -* less distorted scalefactor bands -.br -* the sum of noise over the thresholds is lower -.br -* the total noise is lower - -.B -X1 -.br -The actual is better if the maximum noise over all scalefactor bands is -less than the best so far. - -.B -X2 -.br -The actual is better if the total sum of noise is lower than the best so -far. - -.B -X3 -.br -The actual is better if the total sum of noise is lower than the best so -far and the maximum noise over all scalefactor bands is less than the -best so far plus 2dB. - -.B -X4 -.br -Not yet documented. - -.B -X5 -.br -The criteria are (in order of importance): -.br -* the sum of noise over the thresholds is lower -.br -* the total sum of noise is lower - -.B -X6 -.br -The criteria are (in order of importance): -.br -* the sum of noise over the thresholds is lower -.br -* the maximum noise over all scalefactor bands is lower -.br -* the total sum of noise is lower - -.B -X7 -.br -The criteria are: -.br -* less distorted scalefactor bands -.br -or -.br -* the sum of noise over the thresholds is lower -.TP -.B -Y -lets LAME ignore noise in sfb21, like in CBR - -.PP -MP3 header/stream options: -.TP -.BI -e " emp" -.I emp -= n, 5, c - -n = (none, default) -.br -5 = 0/15 microseconds -.br -c = citt j.17 - -All this does is set a flag in the bitstream. -If you have a PCM input file where one of the above types of -(obsolete) emphasis has been applied, -you can set this flag in LAME. -Then the mp3 decoder should de-emphasize the output during playback, -although most decoders ignore this flag. - -A better solution would be to apply the de-emphasis with a standalone -utility before encoding, -and then encode without -.B -e. -.TP -.B -c -Mark the encoded file as being copyrighted. -.TP -.B -o -Mark the encoded file as being a copy. -.TP -.B -p -Turn on CRC error protection. -.br -It will add a cyclic redundancy check (CRC) code in each frame, -allowing to detect transmission errors that could occur on the -MP3 stream. -However, -it takes 16 bits per frame that would otherwise be used for encoding, -and then will slightly reduce the sound quality. -.TP -.B \-\-nores -Disable the bit reservoir. -Each frame will then become independent from previous ones, -but the quality will be lower. -.TP -.B \-\-strictly-enforce-ISO -With this option, -LAME will enforce the 7680 bit limitation on total frame size. -.br -This results in many wasted bits for high bitrate encodings but will -ensure strict ISO compatibility. -This compatibility might be important for hardware players. - -.PP -Filter options: -.TP -.BI \-\-lowpass " freq" -Set a lowpass filtering frequency in kHz. -Frequencies above the specified one will be cutoff. -.TP -.BI \-\-lowpass-width " freq" -Set the width of the lowpass filter. -The default value is 15% of the lowpass frequency. -.TP -.BI \-\-highpass " freq" -Set an highpass filtering frequency in kHz. -Frequencies below the specified one will be cutoff. -.TP -.BI \-\-highpass-width " freq" -Set the width of the highpass filter in kHz. -The default value is 15% of the highpass frequency. -.TP -.BI \-\-resample " sfreq" -.I sfreq -= 8, 11.025, 12, 16, 22.05, 24, 32, 44.1, 48 -.br -Select output sampling frequency (only supported for encoding). -.br -If not specified, -LAME will automatically resample the input when using high compression ratios. - -.PP -ID3 tag options: -.TP -.BI \-\-tt " title" -audio/song title (max 30 chars for version 1 tag) -.TP -.BI \-\-ta " artist" -audio/song artist (max 30 chars for version 1 tag) -.TP -.BI \-\-tl " album" -audio/song album (max 30 chars for version 1 tag) -.TP -.BI \-\-ty " year" -audio/song year of issue (1 to 9999) -.TP -.BI \-\-tc " comment" -user-defined text (max 30 chars for v1 tag, 28 for v1.1) -.TP -.BI \-\-tn " track[/total]" -audio/song track number and (optionally) the total number of tracks on -the original recording. (track and total each 1 to 255. Providing -just the track number creates v1.1 tag, providing a total forces v2.0). -.TP -.BI \-\-tg " genre" -audio/song genre (name or number in list) -.TP -.B \-\-add-id3v2 -force addition of version 2 tag -.TP -.B \-\-id3v1-only -add only a version 1 tag -.TP -.B \-\-id3v2-only -add only a version 2 tag -.TP -.B \-\-id3v2-latin1 -add following options in ISO-8859-1 text encoding. -.TP -.B \-\-id3v2-utf16 -add following options in unicode text encoding. -.TP -.B \-\-space-id3v1 -pad version 1 tag with spaces instead of nulls -.TP -.B \-\-pad-id3v2 -same as \-\-pad-id3v2-size 128 -.TP -.B \-\-pad-id3v2-size "num" -adds version 2 tag, pad with extra "num" bytes -.TP -.B \-\-genre-list -print alphabetically sorted ID3 genre list and exit -.TP -.B \-\-ignore-tag-errors -ignore errors in values passed for tags, use defaults in case an error occurs - -.PP -Analysis options: -.TP -.B \-g -run graphical analysis on . - can also be a .mp3 file. -(This feature is a compile time option. -Your binary may for speed reasons be compiled without this.) - -.SH ID3 TAGS -LAME is able to embed ID3 v1, -v1.1 or v2 tags inside the encoded MP3 file. -This allows to have some useful information about the music track -included inside the file. -Those data can be read by most MP3 players. - -Lame will smartly choose which tags to use. -It will add ID3 v2 tags only if the input comments won't fit in v1 -or v1.1 tags, -i.e. if they are more than 30 characters. -In this case, -both v1 and v2 tags will be added, -to ensure reading of tags by MP3 players which are unable to read ID3 v2 tags. - -.SH ENCODING MODES -LAME is able to encode your music using one of its 3 encoding modes: -constant bitrate (CBR), average bitrate (ABR) and variable bitrate (VBR). -.TP -.B Constant Bitrate (CBR) -This is the default encoding mode, -and also the most basic. -In this mode, -the bitrate will be the same for the whole file. -It means that each part of your mp3 file will be using the same -number of bits. -The musical passage being a difficult one to encode or an easy one, -the encoder will use the same bitrate, -so the quality of your mp3 is variable. -Complex parts will be of a lower quality than the easiest ones. -The main advantage is that the final files size won't change and -can be accurately predicted. -.TP -.B Average Bitrate (ABR) -In this mode, -you choose the encoder will maintain an average bitrate while using -higher bitrates for the parts of your music that need more bits. -The result will be of higher quality than CBR encoding but the -average file size will remain predictable, -so this mode is highly recommended over CBR. -This encoding mode is similar to what is referred as vbr in AAC or -Liquid Audio (2 other compression technologies). -.TP -.B Variable bitrate (VBR) -In this mode, -you choose the desired quality on a scale from 9 (lowest -quality/biggest distortion) to 0 (highest quality/lowest distortion). -Then encoder tries to maintain the given quality in the whole file by -choosing the optimal number of bits to spend for each part of your music. -The main advantage is that you are able to specify the quality level that -you want to reach, -but the inconvenient is that the final file size is totally unpredictable. - -.SH PRESETS -The -.B \-\-preset -switches are aliases over LAME settings. - -To activate these presets: -.PP -For VBR modes (generally highest quality): -.TP -.B \-\-preset medium -This preset should provide near transparency to most people on most music. -.TP -.B \-\-preset standard -This preset should generally be transparent to most people on most music and -is already quite high in quality. -.TP -.B \-\-preset extreme -If you have extremely good hearing and similar equipment, -this preset will generally provide slightly higher quality than the -.B standard -mode. -.PP -For CBR 320kbps (highest quality possible from the -.B \-\-preset -switches): -.TP -.B \-\-preset insane -This preset will usually be overkill for most people and most situations, -but if you must have the absolute highest quality with no regard to filesize, -this is the way to go. -.PP -For ABR modes (high quality per given bitrate but not as high as VBR): -.TP -.B \-\-preset " kbps" -Using this preset will usually give you good quality at a specified bitrate. -Depending on the bitrate entered, -this preset will determine the optimal settings for that particular situation. -While this approach works, -it is not nearly as flexible as VBR, -and usually will not attain the same level of quality as VBR at higher bitrates. -.PP -The following options are also available for the corresponding profiles: -.PP -.B standard|extreme -.br -.B cbr " kbps" -.PP -.TP -.B cbr -If you use the ABR mode (read above) with a significant bitrate such as 80, -96, -112, -128, -160, -192, -224, -256, -320, -you can use the -.B cbr -option to force CBR mode encoding instead of the standard ABR mode. -ABR does provide higher quality but CBR may be useful in situations such as when -streaming an MP3 over the Internet may be important. - - -.SH EXAMPLES -.LP -Fixed bit rate jstereo 128kbs encoding: -.IP -.B lame -.I sample.wav sample.mp3 - -.LP -Fixed bit rate jstereo 128 kbps encoding, highest quality (recommended): -.IP -.B lame \-h -.I sample.wav sample.mp3 - -.LP -Fixed bit rate jstereo 112 kbps encoding: -.IP -.B lame \-b -.I 112 sample.wav sample.mp3 - -.LP -To disable joint stereo encoding (slightly faster, -but less quality at bitrates <= 128 kbps): -.IP -.B lame \-m -.I s sample.wav sample.mp3 - -.LP -Fast encode, -low quality (no psycho-acoustics): -.IP -.B lame \-f -.I sample.wav sample.mp3 - -.LP -Variable bitrate (use \-V n to adjust quality/filesize): -.IP -.B lame \-h \-V -.I 6 sample.wav sample.mp3 - -.LP -Streaming mono 22.05 kHz raw pcm, 24 kbps output: -.IP -.B cat -.I inputfile -.B | lame \-r \-m -.I m -.B \-b -.I 24 -.B \-s -.I 22.05 \- \- -.B > -.I output - -.LP -Streaming mono 44.1 kHz raw pcm, -with downsampling to 22.05 kHz: -.IP -.B cat -.I inputfile -.B | lame \-r \-m -.I m -.B \-b -.I 24 -.B \-\-resample -.I 22.05 \- \- -.B > -.I output - -.LP -Encode with the -.B standard -preset: -.IP -.B lame \-\-preset standard -.I sample.wav sample.mp3 - -.SH BUGS -.PP -Probably there are some. -.SH SEE ALSO -.BR mpg123 (1) , -.BR madplay (1) , -.BR sox (1) -.SH AUTHORS -.nf -LAME originally developed by Mike Cheng and now maintained by -Mark Taylor, and the LAME team. - -GPSYCHO psycho-acoustic model by Mark Taylor. -(See http://www.mp3dev.org/). - -mpglib by Michael Hipp - -Manual page by William Schelter, Nils Faerber, Alexander Leidinger, -and Rog\['e]rio Brito. -.\" Local Variables: -.\" mode: nroff -.\" End: diff --git a/platform/win32/msvc/external/lame/dshow/Encoder.cpp b/platform/win32/msvc/external/lame/dshow/Encoder.cpp deleted file mode 100644 index 291639dd665..00000000000 --- a/platform/win32/msvc/external/lame/dshow/Encoder.cpp +++ /dev/null @@ -1,577 +0,0 @@ -/* - * LAME MP3 encoder for DirectShow - * LAME encoder wrapper - * - * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. - * - * 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 -#include "Encoder.h" - - -////////////////////////////////////////////////////////////////////// -// Construction/Destruction -////////////////////////////////////////////////////////////////////// -CEncoder::CEncoder() : - m_bInpuTypeSet(FALSE), - m_bOutpuTypeSet(FALSE), - m_bFinished(FALSE), - m_outOffset(0), - m_outReadOffset(0), - m_frameCount(0), - pgf(NULL) -{ - m_outFrameBuf = new unsigned char[OUT_BUFFER_SIZE]; -} - -CEncoder::~CEncoder() -{ - Close(NULL); - - if (m_outFrameBuf) - delete [] m_outFrameBuf; -} - -////////////////////////////////////////////////////////////////////// -// SetInputType - check if given input type is supported -////////////////////////////////////////////////////////////////////// -HRESULT CEncoder::SetInputType(LPWAVEFORMATEX lpwfex, bool bJustCheck) -{ - CAutoLock l(&m_lock); - - if (lpwfex->wFormatTag == WAVE_FORMAT_PCM) - { - if (lpwfex->nChannels == 1 || lpwfex->nChannels == 2) - { - if (lpwfex->nSamplesPerSec == 48000 || - lpwfex->nSamplesPerSec == 44100 || - lpwfex->nSamplesPerSec == 32000 || - lpwfex->nSamplesPerSec == 24000 || - lpwfex->nSamplesPerSec == 22050 || - lpwfex->nSamplesPerSec == 16000 || - lpwfex->nSamplesPerSec == 12000 || - lpwfex->nSamplesPerSec == 11025 || - lpwfex->nSamplesPerSec == 8000) - { - if (lpwfex->wBitsPerSample == 16) - { - if (!bJustCheck) - { - memcpy(&m_wfex, lpwfex, sizeof(WAVEFORMATEX)); - m_bInpuTypeSet = true; - } - - return S_OK; - } - } - } - } - - if (!bJustCheck) - m_bInpuTypeSet = false; - - return E_INVALIDARG; -} - -////////////////////////////////////////////////////////////////////// -// SetOutputType - try to initialize encoder with given output type -////////////////////////////////////////////////////////////////////// -HRESULT CEncoder::SetOutputType(MPEG_ENCODER_CONFIG &mabsi) -{ - CAutoLock l(&m_lock); - - m_mabsi = mabsi; - m_bOutpuTypeSet = true; - - return S_OK; -} - -////////////////////////////////////////////////////////////////////// -// SetDefaultOutputType - sets default MPEG audio properties according -// to input type -////////////////////////////////////////////////////////////////////// -HRESULT CEncoder::SetDefaultOutputType(LPWAVEFORMATEX lpwfex) -{ - CAutoLock l(&m_lock); - - if(lpwfex->nChannels == 1 || m_mabsi.bForceMono) - m_mabsi.ChMode = MONO; - - if((lpwfex->nSamplesPerSec < m_mabsi.dwSampleRate) || (lpwfex->nSamplesPerSec % m_mabsi.dwSampleRate != 0)) - m_mabsi.dwSampleRate = lpwfex->nSamplesPerSec; - - return S_OK; -} - -////////////////////////////////////////////////////////////////////// -// Init - initialized or reiniyialized encoder SDK with given input -// and output settings -////////////////////////////////////////////////////////////////////// -HRESULT CEncoder::Init() -{ - CAutoLock l(&m_lock); - - m_outOffset = 0; - m_outReadOffset = 0; - - m_bFinished = FALSE; - - m_frameCount = 0; - - if (!pgf) - { - if (!m_bInpuTypeSet || !m_bOutpuTypeSet) - return E_UNEXPECTED; - - // Init Lame library - // note: newer, safer interface which doesn't - // allow or require direct access to 'gf' struct is being written - // see the file 'API' included with LAME. - if (pgf = lame_init()) - { - lame_set_num_channels(pgf, m_wfex.nChannels); - lame_set_in_samplerate(pgf, m_wfex.nSamplesPerSec); - lame_set_out_samplerate(pgf, m_mabsi.dwSampleRate); - if ((lame_get_out_samplerate(pgf) >= 32000) && (m_mabsi.dwBitrate < 32)) - lame_set_brate(pgf, 32); - else - lame_set_brate(pgf, m_mabsi.dwBitrate); - lame_set_VBR(pgf, m_mabsi.vmVariable); - lame_set_VBR_min_bitrate_kbps(pgf, m_mabsi.dwVariableMin); - lame_set_VBR_max_bitrate_kbps(pgf, m_mabsi.dwVariableMax); - - lame_set_copyright(pgf, m_mabsi.bCopyright); - lame_set_original(pgf, m_mabsi.bOriginal); - lame_set_error_protection(pgf, m_mabsi.bCRCProtect); - - lame_set_bWriteVbrTag(pgf, m_mabsi.dwXingTag); - lame_set_strict_ISO(pgf, m_mabsi.dwStrictISO); - lame_set_VBR_hard_min(pgf, m_mabsi.dwEnforceVBRmin); - - if (lame_get_num_channels(pgf) == 2 && !m_mabsi.bForceMono) - { - //int act_br = pgf->VBR ? pgf->VBR_min_bitrate_kbps + pgf->VBR_max_bitrate_kbps / 2 : pgf->brate; - - // Disabled. It's for user's consideration now - //int rel = pgf->out_samplerate / (act_br + 1); - //pgf->mode = rel < 200 ? m_mabsi.ChMode : JOINT_STEREO; - - lame_set_mode(pgf, m_mabsi.ChMode); - } - else - lame_set_mode(pgf, MONO); - - if (lame_get_mode(pgf) == JOINT_STEREO) - lame_set_force_ms(pgf, m_mabsi.dwForceMS); - else - lame_set_force_ms(pgf, 0); - -// pgf->mode_fixed = m_mabsi.dwModeFixed; - - if (m_mabsi.dwVoiceMode != 0) - { - lame_set_lowpassfreq(pgf,12000); - ///pgf->VBR_max_bitrate_kbps = 160; - } - - if (m_mabsi.dwKeepAllFreq != 0) - { - ///pgf->lowpassfreq = -1; - ///pgf->highpassfreq = -1; - /// not available anymore - } - - lame_set_quality(pgf, m_mabsi.dwQuality); - lame_set_VBR_q(pgf, m_mabsi.dwVBRq); - - lame_init_params(pgf); - - // encoder delay compensation - { - int const nch = lame_get_num_channels(pgf); - short * start_padd = (short *)calloc(48, nch * sizeof(short)); - - int out_bytes = 0; - - if (nch == 2) - out_bytes = lame_encode_buffer_interleaved(pgf, start_padd, 48, m_outFrameBuf, OUT_BUFFER_SIZE); - else - out_bytes = lame_encode_buffer(pgf, start_padd, start_padd, 48, m_outFrameBuf, OUT_BUFFER_SIZE); - - if (out_bytes > 0) - m_outOffset += out_bytes; - - free(start_padd); - } - - return S_OK; - } - - return E_FAIL; - } - - return S_OK; -} - -////////////////////////////////////////////////////////////////////// -// Close - closes encoder -////////////////////////////////////////////////////////////////////// -HRESULT CEncoder::Close(IStream* pStream) -{ - CAutoLock l(&m_lock); - if (pgf) - { - if(lame_get_bWriteVbrTag(pgf) && pStream) - { - updateLameTagFrame(pStream); - } - - lame_close(pgf); - pgf = NULL; - } - - return S_OK; -} - -////////////////////////////////////////////////////////////////////// -// Encode - encodes data placed on pdata and returns -// the number of processed bytes -////////////////////////////////////////////////////////////////////// -int CEncoder::Encode(const short * pdata, int data_size) -{ - CAutoLock l(&m_lock); - - if (!pgf || !m_outFrameBuf || !pdata || data_size < 0 || (data_size & (sizeof(short) - 1))) - return -1; - - // some data left in the buffer, shift to start - if (m_outReadOffset > 0) - { - if (m_outOffset > m_outReadOffset) - memmove(m_outFrameBuf, m_outFrameBuf + m_outReadOffset, m_outOffset - m_outReadOffset); - - m_outOffset -= m_outReadOffset; - } - - m_outReadOffset = 0; - - - - m_bFinished = FALSE; - - int bytes_processed = 0; - int const nch = lame_get_num_channels(pgf); - - while (1) - { - int nsamples = (data_size - bytes_processed) / (sizeof(short) * nch); - - if (nsamples <= 0) - break; - - if (nsamples > 1152) - nsamples = 1152; - - if (m_outOffset >= OUT_BUFFER_MAX) - break; - - int out_bytes = 0; - - if (nch == 2) - out_bytes = lame_encode_buffer_interleaved( - pgf, - (short *)(pdata + (bytes_processed / sizeof(short))), - nsamples, - m_outFrameBuf + m_outOffset, - OUT_BUFFER_SIZE - m_outOffset); - else - out_bytes = lame_encode_buffer( - pgf, - pdata + (bytes_processed / sizeof(short)), - pdata + (bytes_processed / sizeof(short)), - nsamples, - m_outFrameBuf + m_outOffset, - OUT_BUFFER_SIZE - m_outOffset); - - if (out_bytes < 0) - return -1; - - m_outOffset += out_bytes; - bytes_processed += nsamples * nch * sizeof(short); - } - - return bytes_processed; -} - -// -// Finsh - flush the buffered samples -// -HRESULT CEncoder::Finish() -{ - CAutoLock l(&m_lock); - - if (!pgf || !m_outFrameBuf || (m_outOffset >= OUT_BUFFER_MAX)) - return E_FAIL; - - m_outOffset += lame_encode_flush(pgf, m_outFrameBuf + m_outOffset, OUT_BUFFER_SIZE - m_outOffset); - - m_bFinished = TRUE; - - return S_OK; -} - - -int getFrameLength(const unsigned char * pdata) -{ - if (!pdata || pdata[0] != 0xff || (pdata[1] & 0xe0) != 0xe0) - return -1; - - const int sample_rate_tab[4][4] = - { - {11025,12000,8000,1}, - {1,1,1,1}, - {22050,24000,16000,1}, - {44100,48000,32000,1} - }; - -#define MPEG_VERSION_RESERVED 1 -#define MPEG_VERSION_1 3 - -#define LAYER_III 1 - -#define BITRATE_FREE 0 -#define BITRATE_RESERVED 15 - -#define SRATE_RESERVED 3 - -#define EMPHASIS_RESERVED 2 - - int version_id = (pdata[1] & 0x18) >> 3; - int layer = (pdata[1] & 0x06) >> 1; - int bitrate_id = (pdata[2] & 0xF0) >> 4; - int sample_rate_id = (pdata[2] & 0x0C) >> 2; - int padding = (pdata[2] & 0x02) >> 1; - int emphasis = pdata[3] & 0x03; - - if (version_id != MPEG_VERSION_RESERVED && - layer == LAYER_III && - bitrate_id != BITRATE_FREE && - bitrate_id != BITRATE_RESERVED && - sample_rate_id != SRATE_RESERVED && - emphasis != EMPHASIS_RESERVED) - { - int spf = (version_id == MPEG_VERSION_1) ? 1152 : 576; - int sample_rate = sample_rate_tab[version_id][sample_rate_id]; - int bitrate = dwBitRateValue[version_id != MPEG_VERSION_1][bitrate_id - 1] * 1000; - - return (bitrate * spf) / (8 * sample_rate) + padding; - } - - return -1; -} - - -int CEncoder::GetFrame(const unsigned char ** pframe) -{ - if (!pgf || !m_outFrameBuf || !pframe) - return -1; - - while ((m_outOffset - m_outReadOffset) > 4) - { - int frame_length = getFrameLength(m_outFrameBuf + m_outReadOffset); - - if (frame_length < 0) - { - m_outReadOffset++; - } - else if (frame_length <= (m_outOffset - m_outReadOffset)) - { - *pframe = m_outFrameBuf + m_outReadOffset; - m_outReadOffset += frame_length; - - m_frameCount++; - - // don't deliver the first and the last frames - if (m_frameCount != 1 && !(m_bFinished && (m_outOffset - m_outReadOffset) < 5)) - return frame_length; - } - else - break; - } - - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// -// Returns block of a mp3 file, witch size integer multiples of cbAlign -// or not aligned if finished -//////////////////////////////////////////////////////////////////////////////// -int CEncoder::GetBlockAligned(const unsigned char ** pblock, int* piBufferSize, const long& cbAlign) -{ - ASSERT(piBufferSize); - if (!pgf || !m_outFrameBuf || !pblock) - return -1; - - int iBlockLen = m_outOffset - m_outReadOffset; - ASSERT(iBlockLen >= 0); - - if(!m_bFinished) - { - if(cbAlign > 0) - iBlockLen-=iBlockLen%cbAlign; - *piBufferSize = iBlockLen; - } - else - { - if(cbAlign && iBlockLen%cbAlign) - { - *piBufferSize = iBlockLen + cbAlign - iBlockLen%cbAlign; - } - else - { - *piBufferSize = iBlockLen; - } - } - - if(iBlockLen) { - *pblock = m_outFrameBuf + m_outReadOffset; - m_outReadOffset+=iBlockLen; - } - - return iBlockLen; -} - -HRESULT CEncoder::maybeSyncWord(IStream *pStream) -{ - HRESULT hr = S_OK; - unsigned char mp3_frame_header[4]; - ULONG nbytes; - if(FAILED(hr = pStream->Read(mp3_frame_header, sizeof(mp3_frame_header), &nbytes))) - return hr; - - if ( nbytes != sizeof(mp3_frame_header) ) { - return E_FAIL; - } - if ( mp3_frame_header[0] != 0xffu ) { - return S_FALSE; /* doesn't look like a sync word */ - } - if ( (mp3_frame_header[1] & 0xE0u) != 0xE0u ) { - return S_FALSE; /* doesn't look like a sync word */ - } - return S_OK; -} - -HRESULT CEncoder::skipId3v2(IStream *pStream, size_t lametag_frame_size) -{ - HRESULT hr = S_OK; - ULONG nbytes; - size_t id3v2TagSize = 0; - unsigned char id3v2Header[10]; - LARGE_INTEGER seekTo; - - /* seek to the beginning of the stream */ - seekTo.QuadPart = 0; - if (FAILED(hr = pStream->Seek(seekTo, STREAM_SEEK_SET, NULL))) { - return hr; /* not seekable, abort */ - } - /* read 10 bytes in case there's an ID3 version 2 header here */ - hr = pStream->Read(id3v2Header, sizeof(id3v2Header), &nbytes); - if (FAILED(hr)) - return hr; - if(nbytes != sizeof(id3v2Header)) { - return E_FAIL; /* not readable, maybe opened Write-Only */ - } - /* does the stream begin with the ID3 version 2 file identifier? */ - if (!strncmp((char *) id3v2Header, "ID3", 3)) { - /* the tag size (minus the 10-byte header) is encoded into four - * bytes where the most significant bit is clear in each byte - */ - id3v2TagSize = (((id3v2Header[6] & 0x7f) << 21) - | ((id3v2Header[7] & 0x7f) << 14) - | ((id3v2Header[8] & 0x7f) << 7) - | (id3v2Header[9] & 0x7f)) - + sizeof id3v2Header; - } - /* Seek to the beginning of the audio stream */ - seekTo.QuadPart = id3v2TagSize; - if (FAILED(hr = pStream->Seek(seekTo, STREAM_SEEK_SET, NULL))) { - return hr; - } - if (S_OK != (hr = maybeSyncWord(pStream))) { - return SUCCEEDED(hr)?E_FAIL:hr; - } - seekTo.QuadPart = id3v2TagSize+lametag_frame_size; - if (FAILED(hr = pStream->Seek(seekTo, STREAM_SEEK_SET, NULL))) { - return hr; - } - if (S_OK != (hr = maybeSyncWord(pStream))) { - return SUCCEEDED(hr)?E_FAIL:hr; - } - /* OK, it seems we found our LAME-Tag/Xing frame again */ - /* Seek to the beginning of the audio stream */ - seekTo.QuadPart = id3v2TagSize; - if (FAILED(hr = pStream->Seek(seekTo, STREAM_SEEK_SET, NULL))) { - return hr; - } - return S_OK; -} - -// Updates VBR tag -HRESULT CEncoder::updateLameTagFrame(IStream* pStream) -{ - HRESULT hr = S_OK; - size_t n = lame_get_lametag_frame( pgf, 0, 0 ); /* ask for bufer size */ - - if ( n > 0 ) - { - unsigned char* buffer = 0; - ULONG m = n; - - if ( FAILED(hr = skipId3v2(pStream, n) )) - { - /*DispErr( "Error updating LAME-tag frame:\n\n" - "can't locate old frame\n" );*/ - return hr; - } - - buffer = (unsigned char*)malloc( n ); - - if ( buffer == 0 ) - { - /*DispErr( "Error updating LAME-tag frame:\n\n" - "can't allocate frame buffer\n" );*/ - return E_OUTOFMEMORY; - } - - /* Put it all to disk again */ - n = lame_get_lametag_frame( pgf, buffer, n ); - if ( n > 0 ) - { - hr = pStream->Write(buffer, n, &m); - } - free( buffer ); - - if ( m != n ) - { - /*DispErr( "Error updating LAME-tag frame:\n\n" - "couldn't write frame into file\n" );*/ - return E_FAIL; - } - } - return hr; -} diff --git a/platform/win32/msvc/external/lame/dshow/Encoder.h b/platform/win32/msvc/external/lame/dshow/Encoder.h deleted file mode 100644 index f6794dc8d5a..00000000000 --- a/platform/win32/msvc/external/lame/dshow/Encoder.h +++ /dev/null @@ -1,172 +0,0 @@ -/* - * LAME MP3 encoder for DirectShow - * LAME encoder wrapper - * - * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. - * - * 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. - */ - -#if !defined(AFX_VITECENCODER_H__40DC8A44_B937_11D2_A381_A2FD7C37FA15__INCLUDED_) -#define AFX_VITECENCODER_H__40DC8A44_B937_11D2_A381_A2FD7C37FA15__INCLUDED_ - -#if _MSC_VER >= 1000 -#pragma once -#endif // _MSC_VER >= 1000 - -#include - - -const unsigned int dwBitRateValue[2][14] = -{ - {32,40,48,56,64,80,96,112,128,160,192,224,256,320}, // MPEG-1 - {8,16,24,32,40,48,56,64,80,96,112,128,144,160} // MPEG-2/2.5 -}; -/* -#define STEREO 0 -#define JOINT_STEREO 1 -#define DUAL_CHANNEL 2 -#define MONO 3 -*/ - -#define OUT_BUFFER_SIZE 16384 -#define OUT_BUFFER_GUARD 8192 - -#define OUT_BUFFER_MAX (OUT_BUFFER_SIZE - OUT_BUFFER_GUARD) - -typedef struct { - DWORD dwSampleRate; //SF in Hz - DWORD dwBitrate; //BR in bit per second - vbr_mode vmVariable; - DWORD dwVariableMin; //specify a minimum allowed bitrate - DWORD dwVariableMax; //specify a maximum allowed bitrate - DWORD dwQuality; //Encoding quality - DWORD dwVBRq; // VBR quality setting (0=highest quality, 9=lowest) - long lLayer; //Layer: 1 or 2 - - MPEG_mode ChMode; //Channel coding mode: see doc - DWORD dwForceMS; - - DWORD bCRCProtect; //Is CRC protection activated? - DWORD bForceMono; - DWORD bSetDuration; - DWORD bCopyright; //Is the stream protected by copyright? - DWORD bOriginal; //Is the stream an original? - - DWORD dwPES; // PES header. Obsolete - - DWORD dwEnforceVBRmin; - DWORD dwVoiceMode; - DWORD dwKeepAllFreq; - DWORD dwStrictISO; - DWORD dwNoShortBlock; - DWORD dwXingTag; - DWORD dwModeFixed; - DWORD bSampleOverlap; -} MPEG_ENCODER_CONFIG; - - -class CEncoder -{ -public: - - CEncoder(); - virtual ~CEncoder(); - - // Initialize encoder with PCM stream properties - HRESULT SetInputType(LPWAVEFORMATEX lpwfex, bool bJustCheck = FALSE); // returns E_INVALIDARG if not supported - // GetInputType - returns current input type - HRESULT GetInputType(WAVEFORMATEX *pwfex) - { - if(m_bInpuTypeSet) - { - memcpy(pwfex, &m_wfex, sizeof(WAVEFORMATEX)); - return S_OK; - } - else - return E_UNEXPECTED; - } - - // Set MPEG audio parameters - HRESULT SetOutputType(MPEG_ENCODER_CONFIG &mabsi); // returns E_INVALIDARG if not supported or - // not compatible with input type - // Return current MPEG audio settings - HRESULT GetOutputType(MPEG_ENCODER_CONFIG* pmabsi) - { - if (m_bOutpuTypeSet) - { - memcpy(pmabsi, &m_mabsi, sizeof(MPEG_ENCODER_CONFIG)); - return S_OK; - } - else - return E_UNEXPECTED; - } - - // Set if output stream is a PES. Obsolete - void SetPES(bool bPES) - { - m_mabsi.dwPES = false;//bPES; - } - // Is output stream a PES. Obsolete - BOOL IsPES() const - { - return (BOOL)m_mabsi.dwPES; - } - - // Initialize encoder SDK - HRESULT Init(); - // Close encoder SDK - HRESULT Close(IStream* pStream); - - // Encode media sample data - int Encode(const short * pdata, int data_size); - int GetFrame(const unsigned char ** pframe); - - // Returns block of a mp3 file, witch size integer multiples of cbAlign - int GetBlockAligned(const unsigned char ** pblock, int* piBufferSize, const long& cbAlign); - - HRESULT Finish(); - -protected: - HRESULT updateLameTagFrame(IStream* pStream); - HRESULT skipId3v2(IStream *pStream, size_t lametag_frame_size); - HRESULT maybeSyncWord(IStream *pStream); - HRESULT SetDefaultOutputType(LPWAVEFORMATEX lpwfex); - - // Input media type - WAVEFORMATEX m_wfex; - - // Output media type - MPEG_ENCODER_CONFIG m_mabsi; - - // Compressor private data - lame_global_flags * pgf; - - // Compressor miscelaneous state - BOOL m_bInpuTypeSet; - BOOL m_bOutpuTypeSet; - - BOOL m_bFinished; - int m_frameCount; - - unsigned char * m_outFrameBuf; - int m_outOffset; - int m_outReadOffset; - - CCritSec m_lock; -}; - -#endif // !defined(AFX_VITECENCODER_H__40DC8A44_B937_11D2_A381_A2FD7C37FA15__INCLUDED_) diff --git a/platform/win32/msvc/external/lame/dshow/Makefile.am b/platform/win32/msvc/external/lame/dshow/Makefile.am deleted file mode 100644 index dd70fe4d00d..00000000000 --- a/platform/win32/msvc/external/lame/dshow/Makefile.am +++ /dev/null @@ -1,25 +0,0 @@ -## $Id: Makefile.am,v 1.6 2008/11/09 13:50:16 aleidinger Exp $ - -include $(top_srcdir)/Makefile.am.global - -EXTRA_DIST = \ - Encoder.cpp \ - Encoder.h \ - Mpegac.cpp \ - Mpegac.def \ - Mpegac.h \ - PropPage.cpp \ - PropPage.h \ - PropPage_adv.cpp \ - PropPage_adv.h \ - Property.rc \ - README \ - REG.CPP \ - REG.H \ - UIDS.H \ - aboutprp.cpp \ - aboutprp.h \ - elogo.ico \ - iaudioprops.h \ - resource.h - diff --git a/platform/win32/msvc/external/lame/dshow/Makefile.in b/platform/win32/msvc/external/lame/dshow/Makefile.in deleted file mode 100644 index b71d2c0bf2a..00000000000 --- a/platform/win32/msvc/external/lame/dshow/Makefile.in +++ /dev/null @@ -1,406 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# global section for every Makefile.am -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/Makefile.am.global -subdir = dshow -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CONFIG_DEFS = @CONFIG_DEFS@ -CONFIG_MATH_LIB = @CONFIG_MATH_LIB@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CPUCCODE = @CPUCCODE@ -CPUTYPE = @CPUTYPE@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ -FRONTEND_LDADD = @FRONTEND_LDADD@ -FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ -GREP = @GREP@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_CONFIG = @GTK_CONFIG@ -GTK_LIBS = @GTK_LIBS@ -INCLUDES = @INCLUDES@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDADD = @LDADD@ -LDFLAGS = @LDFLAGS@ -LIBICONV = @LIBICONV@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ -LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBICONV = @LTLIBICONV@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEDEP = @MAKEDEP@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NASM = @NASM@ -NASM_FORMAT = @NASM_FORMAT@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -RM_F = @RM_F@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ -SNDFILE_LIBS = @SNDFILE_LIBS@ -STRIP = @STRIP@ -U = @U@ -VERSION = @VERSION@ -WITH_FRONTEND = @WITH_FRONTEND@ -WITH_MP3RTP = @WITH_MP3RTP@ -WITH_MP3X = @WITH_MP3X@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = 1.11 foreign $(top_srcdir)/ansi2knr -EXTRA_DIST = \ - Encoder.cpp \ - Encoder.h \ - Mpegac.cpp \ - Mpegac.def \ - Mpegac.h \ - PropPage.cpp \ - PropPage.h \ - PropPage_adv.cpp \ - PropPage_adv.h \ - Property.rc \ - README \ - REG.CPP \ - REG.H \ - UIDS.H \ - aboutprp.cpp \ - aboutprp.h \ - elogo.ico \ - iaudioprops.h \ - resource.h - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign dshow/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign dshow/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am - - -# end global section - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/platform/win32/msvc/external/lame/dshow/Mpegac.cpp b/platform/win32/msvc/external/lame/dshow/Mpegac.cpp deleted file mode 100644 index 6c86255bc9c..00000000000 --- a/platform/win32/msvc/external/lame/dshow/Mpegac.cpp +++ /dev/null @@ -1,2025 +0,0 @@ -/* - * LAME MP3 encoder for DirectShow - * DirectShow filter implementation - * - * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. - * - * 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 -#include -#include -//#include -#include "uids.h" -#include "iaudioprops.h" -#include "mpegac.h" -#include "resource.h" - -#include "PropPage.h" -#include "PropPage_adv.h" -#include "aboutprp.h" - -#include "Encoder.h" -#include "Reg.h" - -#ifndef _INC_MMREG -#include -#endif - -// default parameters -#define DEFAULT_LAYER 3 -#define DEFAULT_STEREO_MODE JOINT_STEREO -#define DEFAULT_FORCE_MS 0 -#define DEFAULT_MODE_FIXED 0 -#define DEFAULT_ENFORCE_MIN 0 -#define DEFAULT_VOICE 0 -#define DEFAULT_KEEP_ALL_FREQ 0 -#define DEFAULT_STRICT_ISO 0 -#define DEFAULT_DISABLE_SHORT_BLOCK 0 -#define DEFAULT_XING_TAG 0 -#define DEFAULT_SAMPLE_RATE 44100 -#define DEFAULT_BITRATE 128 -#define DEFAULT_VARIABLE 0 -#define DEFAULT_CRC 0 -#define DEFAULT_FORCE_MONO 0 -#define DEFAULT_SET_DURATION 1 -#define DEFAULT_SAMPLE_OVERLAP 1 -#define DEFAULT_COPYRIGHT 0 -#define DEFAULT_ORIGINAL 0 -#define DEFAULT_VARIABLEMIN 80 -#define DEFAULT_VARIABLEMAX 160 -#define DEFAULT_ENCODING_QUALITY 5 -#define DEFAULT_VBR_QUALITY 4 -#define DEFAULT_PES 0 - -#define DEFAULT_FILTER_MERIT MERIT_DO_NOT_USE // Standard compressor merit value - -#define GET_DATARATE(kbps) (kbps * 1000 / 8) -#define GET_FRAMELENGTH(bitrate, sample_rate) ((WORD)(((sample_rate < 32000 ? 72000 : 144000) * (bitrate))/(sample_rate))) -#define DECLARE_PTR(type, ptr, expr) type* ptr = (type*)(expr); - -// Create a list of all (or mostly all) of the encoder CBR output capabilities which -// will be parsed into a list of capabilities used by the IAMStreamConfig Interface -output_caps_t OutputCapabilities[] = -{ // {SampleRate, BitRate} - { 48000, 320 },{ 48000, 256 },{ 48000, 224 },{ 48000, 192 }, // MPEG 1.0 Spec @ 48KHz - { 48000, 160 },{ 48000, 128 },{ 48000, 112 },{ 48000, 96 }, - { 48000, 80 },{ 48000, 64 },{ 48000, 56 },{ 48000, 48 }, - { 48000, 40 },{ 48000, 32 }, - - { 24000, 160 },{ 24000, 144 },{ 24000, 128 },{ 24000, 112 }, // MPEG 2.0 Spec @ 24KHz - { 24000, 96 },{ 24000, 80 },{ 24000, 64 },{ 24000, 56 }, - { 24000, 48 },{ 24000, 40 },{ 24000, 32 },{ 24000, 24 }, - { 24000, 16 },{ 24000, 8 }, - - { 12000, 64 },{ 12000, 56 },{ 12000, 48 },{ 12000, 40 }, // MPEG 2.5 Spec @ 12KHz - { 12000, 32 },{ 12000, 24 },{ 12000, 16 },{ 12000, 8 }, - // --------------------------- -------------------------- - { 44100, 320 },{ 44100, 256 },{ 44100, 224 },{ 44100, 192 }, // MPEG 1.0 Spec @ 44.1KHz - { 44100, 160 },{ 44100, 128 },{ 44100, 112 },{ 44100, 96 }, - { 44100, 80 },{ 44100, 64 },{ 44100, 56 },{ 44100, 48 }, - { 44100, 40 },{ 44100, 32 }, - - { 22050, 160 },{ 22050, 144 },{ 22050, 128 },{ 22050, 112 }, // MPEG 2.0 Spec @ 22.05KHz - { 22050, 96 },{ 22050, 80 },{ 22050, 64 },{ 22050, 56 }, - { 22050, 48 },{ 22050, 40 },{ 22050, 32 },{ 22050, 24 }, - { 22050, 16 },{ 22050, 8 }, - - { 11025, 64 },{ 11025, 56 },{ 11025, 48 },{ 11025, 40 }, // MPEG 2.5 Spec @ 11.025KHz - { 11025, 32 },{ 11025, 24 },{ 11025, 16 },{ 11025, 8 }, - // --------------------------- -------------------------- - { 32000, 320 },{ 32000, 256 },{ 32000, 224 },{ 32000, 192 }, // MPEG 1.0 Spec @ 32KHz - { 32000, 160 },{ 32000, 128 },{ 32000, 112 },{ 32000, 96 }, - { 32000, 80 },{ 32000, 64 },{ 32000, 56 },{ 32000, 48 }, - { 32000, 40 },{ 32000, 32 }, - - { 16000, 160 },{ 16000, 144 },{ 16000, 128 },{ 16000, 112 }, // MPEG 2.0 Spec @ 16KHz - { 16000, 96 },{ 16000, 80 },{ 16000, 64 },{ 16000, 56 }, - { 16000, 48 },{ 16000, 40 },{ 16000, 32 },{ 16000, 24 }, - { 16000, 16 },{ 16000, 8 }, - - { 8000, 64 },{ 8000, 56 },{ 8000, 48 },{ 8000, 40 }, // MPEG 2.5 Spec @ 8KHz - { 8000, 32 },{ 8000, 24 },{ 8000, 16 },{ 8000, 8 } -}; - - -/* Registration setup stuff */ -// Setup data - - -AMOVIESETUP_MEDIATYPE sudMpgInputType[] = -{ - { &MEDIATYPE_Audio, &MEDIASUBTYPE_PCM } -}; -AMOVIESETUP_MEDIATYPE sudMpgOutputType[] = -{ - { &MEDIATYPE_Audio, &MEDIASUBTYPE_MPEG1AudioPayload }, - { &MEDIATYPE_Audio, &MEDIASUBTYPE_MPEG2_AUDIO }, - { &MEDIATYPE_Audio, &MEDIASUBTYPE_MP3 }, - { &MEDIATYPE_Stream, &MEDIASUBTYPE_MPEG1Audio } -}; - -AMOVIESETUP_PIN sudMpgPins[] = -{ - { L"PCM Input", - FALSE, // bRendered - FALSE, // bOutput - FALSE, // bZero - FALSE, // bMany - &CLSID_NULL, // clsConnectsToFilter - NULL, // ConnectsToPin - NUMELMS(sudMpgInputType), // Number of media types - sudMpgInputType - }, - { L"MPEG Output", - FALSE, // bRendered - TRUE, // bOutput - FALSE, // bZero - FALSE, // bMany - &CLSID_NULL, // clsConnectsToFilter - NULL, // ConnectsToPin - NUMELMS(sudMpgOutputType), // Number of media types - sudMpgOutputType - } -}; - -AMOVIESETUP_FILTER sudMpgAEnc = -{ - &CLSID_LAMEDShowFilter, - L"LAME Audio Encoder", - DEFAULT_FILTER_MERIT, // Standard compressor merit value - NUMELMS(sudMpgPins), // 2 pins - sudMpgPins -}; - -/*****************************************************************************/ -// COM Global table of objects in this dll -static WCHAR g_wszName[] = L"LAME Audio Encoder"; -CFactoryTemplate g_Templates[] = -{ - { g_wszName, &CLSID_LAMEDShowFilter, CMpegAudEnc::CreateInstance, NULL, &sudMpgAEnc }, - { L"LAME Audio Encoder Property Page", &CLSID_LAMEDShow_PropertyPage, CMpegAudEncPropertyPage::CreateInstance}, - { L"LAME Audio Encoder Property Page", &CLSID_LAMEDShow_PropertyPageAdv, CMpegAudEncPropertyPageAdv::CreateInstance}, - { L"LAME Audio Encoder About", &CLSID_LAMEDShow_About, CMAEAbout::CreateInstance} -}; -// Count of objects listed in g_cTemplates -int g_cTemplates = sizeof(g_Templates) / sizeof(g_Templates[0]); - - - -//////////////////////////////////////////// -// Declare the DirectShow filter information. - -// Used by IFilterMapper2() in the call to DllRegisterServer() -// to register the filter in the CLSID_AudioCompressorCategory. -REGFILTER2 rf2FilterReg = { - 1, // Version number. - DEFAULT_FILTER_MERIT, // Merit. This should match the merit specified in the AMOVIESETUP_FILTER definition - NUMELMS(sudMpgPins), // Number of pins. - sudMpgPins // Pointer to pin information. -}; - -STDAPI DllRegisterServer(void) -{ - HRESULT hr = AMovieDllRegisterServer2(TRUE); - if (FAILED(hr)) { - return hr; - } - - IFilterMapper2 *pFM2 = NULL; - hr = CoCreateInstance(CLSID_FilterMapper2, NULL, CLSCTX_INPROC_SERVER, IID_IFilterMapper2, (void **)&pFM2); - if (SUCCEEDED(hr)) { - hr = pFM2->RegisterFilter( - CLSID_LAMEDShowFilter, // Filter CLSID. - g_wszName, // Filter name. - NULL, // Device moniker. - &CLSID_AudioCompressorCategory, // Audio compressor category. - g_wszName, // Instance data. - &rf2FilterReg // Filter information. - ); - pFM2->Release(); - } - return hr; -} - -STDAPI DllUnregisterServer() -{ - HRESULT hr = AMovieDllRegisterServer2(FALSE); - if (FAILED(hr)) { - return hr; - } - - IFilterMapper2 *pFM2 = NULL; - hr = CoCreateInstance(CLSID_FilterMapper2, NULL, CLSCTX_INPROC_SERVER, IID_IFilterMapper2, (void **)&pFM2); - if (SUCCEEDED(hr)) { - hr = pFM2->UnregisterFilter(&CLSID_AudioCompressorCategory, g_wszName, CLSID_LAMEDShowFilter); - pFM2->Release(); - } - return hr; -} - - - -CUnknown *CMpegAudEnc::CreateInstance(LPUNKNOWN lpunk, HRESULT *phr) -{ - CMpegAudEnc *punk = new CMpegAudEnc(lpunk, phr); - if (punk == NULL) - *phr = E_OUTOFMEMORY; - return punk; -} - -CMpegAudEnc::CMpegAudEnc(LPUNKNOWN lpunk, HRESULT *phr) - : CTransformFilter(NAME("LAME Audio Encoder"), lpunk, CLSID_LAMEDShowFilter), - CPersistStream(lpunk, phr) -{ - // ENCODER OUTPUT PIN - // Override the output pin with our own which will implement the IAMStreamConfig Interface - CTransformOutputPin *pOut = new CMpegAudEncOutPin( this, phr ); - if (pOut == NULL) { - *phr = E_OUTOFMEMORY; - return; - } - else if (FAILED(*phr)) { // A failed return code should delete the object - delete pOut; - return; - } - m_pOutput = pOut; - - // ENCODER INPUT PIN - // Since we've created our own output pin we must also create - // the input pin ourselves because the CTransformFilter base class - // will create an extra output pin if the input pin wasn't created. - CTransformInputPin *pIn = new CTransformInputPin(NAME("LameEncoderInputPin"), - this, // Owner filter - phr, // Result code - L"Input"); // Pin name - - if (pIn == NULL) { - *phr = E_OUTOFMEMORY; - return; - } - else if (FAILED(*phr)) { // A failed return code should delete the object - delete pIn; - return; - } - m_pInput = pIn; - - - MPEG_ENCODER_CONFIG mec; - ReadPresetSettings(&mec); - m_Encoder.SetOutputType(mec); - - m_CapsNum = 0; - m_hasFinished = TRUE; - m_bStreamOutput = FALSE; - m_currentMediaTypeIndex = 0; -} - -CMpegAudEnc::~CMpegAudEnc(void) -{ -} - -LPAMOVIESETUP_FILTER CMpegAudEnc::GetSetupData() -{ - return &sudMpgAEnc; -} - - -HRESULT CMpegAudEnc::Receive(IMediaSample * pSample) -{ - CAutoLock lock(&m_cs); - - if (!pSample) - return S_OK; - - BYTE * pSourceBuffer = NULL; - - if (pSample->GetPointer(&pSourceBuffer) != S_OK || !pSourceBuffer) - return S_OK; - - long sample_size = pSample->GetActualDataLength(); - - REFERENCE_TIME rtStart, rtStop; - BOOL gotValidTime = (pSample->GetTime(&rtStart, &rtStop) != VFW_E_SAMPLE_TIME_NOT_SET); - - if (sample_size <= 0 || pSourceBuffer == NULL || m_hasFinished || (gotValidTime && rtStart < 0)) - return S_OK; - - if (gotValidTime) - { - if (m_rtStreamTime < 0) - { - m_rtStreamTime = rtStart; - m_rtEstimated = rtStart; - } - else - { - resync_point_t * sync = m_sync + m_sync_in_idx; - - if (sync->applied) - { - REFERENCE_TIME rtGap = rtStart - m_rtEstimated; - - // if old sync data is applied and gap is greater than 1 ms - // then make a new synchronization point - if (rtGap > 10000 || (m_allowOverlap && rtGap < -10000)) - { - sync->sample = m_samplesIn; - sync->delta = rtGap; - sync->applied = FALSE; - - m_rtEstimated += sync->delta; - - if (m_sync_in_idx < (RESYNC_COUNT - 1)) - m_sync_in_idx++; - else - m_sync_in_idx = 0; - } - } - } - } - - m_rtEstimated += (LONGLONG)(m_bytesToDuration * sample_size); - m_samplesIn += sample_size / m_bytesPerSample; - - while (sample_size > 0) - { - int bytes_processed = m_Encoder.Encode((short *)pSourceBuffer, sample_size); - - if (bytes_processed <= 0) - return S_OK; - - FlushEncodedSamples(); - - sample_size -= bytes_processed; - pSourceBuffer += bytes_processed; - } - - return S_OK; -} - - - - -HRESULT CMpegAudEnc::FlushEncodedSamples() -{ - IMediaSample * pOutSample = NULL; - BYTE * pDst = NULL; - - if(m_bStreamOutput) - { - HRESULT hr = S_OK; - const unsigned char * pblock = NULL; - int iBufferSize; - int iBlockLength = m_Encoder.GetBlockAligned(&pblock, &iBufferSize, m_cbStreamAlignment); - - if(!iBlockLength) - return S_OK; - - hr = m_pOutput->GetDeliveryBuffer(&pOutSample, NULL, NULL, 0); - if (hr == S_OK && pOutSample) - { - hr = pOutSample->GetPointer(&pDst); - if (hr == S_OK && pDst) - { - CopyMemory(pDst, pblock, iBlockLength); - REFERENCE_TIME rtEndPos = m_rtBytePos + iBufferSize; - EXECUTE_ASSERT(S_OK == pOutSample->SetTime(&m_rtBytePos, &rtEndPos)); - pOutSample->SetActualDataLength(iBufferSize); - m_rtBytePos += iBlockLength; - m_pOutput->Deliver(pOutSample); - } - - pOutSample->Release(); - } - return S_OK; - } - - if (m_rtStreamTime < 0) - m_rtStreamTime = 0; - - while (1) - { - const unsigned char * pframe = NULL; - int frame_size = m_Encoder.GetFrame(&pframe); - - if (frame_size <= 0 || !pframe) - break; - - if (!m_sync[m_sync_out_idx].applied && m_sync[m_sync_out_idx].sample <= m_samplesOut) - { - m_rtStreamTime += m_sync[m_sync_out_idx].delta; - m_sync[m_sync_out_idx].applied = TRUE; - - if (m_sync_out_idx < (RESYNC_COUNT - 1)) - m_sync_out_idx++; - else - m_sync_out_idx = 0; - } - - REFERENCE_TIME rtStart = m_rtStreamTime; - REFERENCE_TIME rtStop = rtStart + m_rtFrameTime; - - HRESULT hr = S_OK; - - hr = m_pOutput->GetDeliveryBuffer(&pOutSample, NULL, NULL, 0); - if (hr == S_OK && pOutSample) - { - hr = pOutSample->GetPointer(&pDst); - if (hr == S_OK && pDst) - { - CopyMemory(pDst, pframe, frame_size); - pOutSample->SetActualDataLength(frame_size); - - pOutSample->SetSyncPoint(TRUE); - pOutSample->SetTime(&rtStart, m_setDuration ? &rtStop : NULL); - - - m_pOutput->Deliver(pOutSample); - } - - pOutSample->Release(); - } - - - m_samplesOut += m_samplesPerFrame; - m_rtStreamTime = rtStop; - } - - return S_OK; -} - - -//////////////////////////////////////////////////////////////////////////// -// StartStreaming - prepare to receive new data -//////////////////////////////////////////////////////////////////////////// -HRESULT CMpegAudEnc::StartStreaming() -{ - WAVEFORMATEX * pwfxIn = (WAVEFORMATEX *) m_pInput->CurrentMediaType().Format(); - - m_bytesPerSample = pwfxIn->nChannels * sizeof(short); - DWORD dwOutSampleRate; - if(MEDIATYPE_Stream == m_pOutput->CurrentMediaType().majortype) - { - MPEG_ENCODER_CONFIG mcfg; - if(FAILED(m_Encoder.GetOutputType(&mcfg))) - return E_FAIL; - - dwOutSampleRate = mcfg.dwSampleRate; - } - else - { - dwOutSampleRate = ((WAVEFORMATEX *) m_pOutput->CurrentMediaType().Format())->nSamplesPerSec; - } - m_samplesPerFrame = (dwOutSampleRate >= 32000) ? 1152 : 576; - - m_rtFrameTime = MulDiv(10000000, m_samplesPerFrame, dwOutSampleRate); - - m_samplesIn = m_samplesOut = 0; - m_rtStreamTime = -1; - m_rtBytePos = 0; - - // initialize encoder - m_Encoder.Init(); - - m_hasFinished = FALSE; - - for (int i = 0; i < RESYNC_COUNT; i++) - { - m_sync[i].sample = 0; - m_sync[i].delta = 0; - m_sync[i].applied = TRUE; - } - - m_sync_in_idx = 0; - m_sync_out_idx = 0; - - get_SetDuration(&m_setDuration); - get_SampleOverlap(&m_allowOverlap); - - return S_OK; -} - - -HRESULT CMpegAudEnc::StopStreaming() -{ - IStream *pStream = NULL; - if(m_bStreamOutput && m_pOutput->IsConnected() != FALSE) - { - IPin * pDwnstrmInputPin = m_pOutput->GetConnected(); - if(pDwnstrmInputPin && FAILED(pDwnstrmInputPin->QueryInterface(IID_IStream, (LPVOID*)(&pStream)))) - { - pStream = NULL; - } - } - - - m_Encoder.Close(pStream); - - if(pStream) - pStream->Release(); - - return S_OK; -} - - -//////////////////////////////////////////////////////////////////////////// -// EndOfStream - stop data processing -//////////////////////////////////////////////////////////////////////////// -HRESULT CMpegAudEnc::EndOfStream() -{ - CAutoLock lock(&m_cs); - - // Flush data - m_Encoder.Finish(); - FlushEncodedSamples(); - - IStream *pStream = NULL; - if(m_bStreamOutput && m_pOutput->IsConnected() != FALSE) - { - IPin * pDwnstrmInputPin = m_pOutput->GetConnected(); - if(pDwnstrmInputPin) - { - if(FAILED(pDwnstrmInputPin->QueryInterface(IID_IStream, (LPVOID*)(&pStream)))) - { - pStream = NULL; - } - } - } - - if(pStream) - { - ULARGE_INTEGER size; - size.QuadPart = m_rtBytePos; - pStream->SetSize(size); - } - - m_Encoder.Close(pStream); - - if(pStream) - pStream->Release(); - - m_hasFinished = TRUE; - - return CTransformFilter::EndOfStream(); -} - - -//////////////////////////////////////////////////////////////////////////// -// BeginFlush - stop data processing -//////////////////////////////////////////////////////////////////////////// -HRESULT CMpegAudEnc::BeginFlush() -{ - HRESULT hr = CTransformFilter::BeginFlush(); - - if (SUCCEEDED(hr)) - { - CAutoLock lock(&m_cs); - - DWORD dwDstSize = 0; - - // Flush data - m_Encoder.Finish(); - FlushEncodedSamples(); - - IStream *pStream = NULL; - if(m_bStreamOutput && m_pOutput->IsConnected() != FALSE) - { - IPin * pDwnstrmInputPin = m_pOutput->GetConnected(); - if(pDwnstrmInputPin && SUCCEEDED(pDwnstrmInputPin->QueryInterface(IID_IStream, (LPVOID*)(&pStream)))) - { - ULARGE_INTEGER size; - size.QuadPart = m_rtBytePos; - pStream->SetSize(size); - pStream->Release(); - } - } - m_rtStreamTime = -1; - m_rtBytePos = 0; - } - - return hr; -} - - - -//////////////////////////////////////////////////////////////////////////// -// SetMediaType - called when filters are connecting -//////////////////////////////////////////////////////////////////////////// -HRESULT CMpegAudEnc::SetMediaType(PIN_DIRECTION direction, const CMediaType * pmt) -{ - HRESULT hr = S_OK; - - if (direction == PINDIR_INPUT) - { - if (*pmt->FormatType() != FORMAT_WaveFormatEx) - return VFW_E_INVALIDMEDIATYPE; - - if (pmt->FormatLength() < sizeof(WAVEFORMATEX)) - return VFW_E_INVALIDMEDIATYPE; - - DbgLog((LOG_TRACE,1,TEXT("CMpegAudEnc::SetMediaType(), direction = PINDIR_INPUT"))); - - // Pass input media type to encoder - m_Encoder.SetInputType((LPWAVEFORMATEX)pmt->Format()); - - WAVEFORMATEX * pwfx = (WAVEFORMATEX *)pmt->Format(); - - if (pwfx) - m_bytesToDuration = (float)1.e7 / (float)(pwfx->nChannels * sizeof(short) * pwfx->nSamplesPerSec); - else - m_bytesToDuration = 0.0; - - // Parse the encoder output capabilities into the subset of capabilities that are supported - // for the current input format. This listing will be utilized by the IAMStreamConfig Interface. - LoadOutputCapabilities(pwfx->nSamplesPerSec); - - Reconnect(); - } - else if (direction == PINDIR_OUTPUT) - { - // Before we set the output type, we might need to reconnect - // the input pin with a new type. - if (m_pInput && m_pInput->IsConnected()) - { - // Check if the current input type is compatible. - hr = CheckTransform(&m_pInput->CurrentMediaType(), &m_pOutput->CurrentMediaType()); - if (FAILED(hr)) { - // We need to reconnect the input pin. - // Note: The CheckMediaType method has already called QueryAccept on the upstream filter. - hr = m_pGraph->Reconnect(m_pInput); - return hr; - } - } - -// WAVEFORMATEX wfIn; -// m_Encoder.GetInputType(&wfIn); - -// if (wfIn.nSamplesPerSec % -// ((LPWAVEFORMATEX)pmt->Format())->nSamplesPerSec != 0) -// return VFW_E_TYPE_NOT_ACCEPTED; - } - - return hr; -} - -//////////////////////////////////////////////////////////////////////////// -// CheckInputType - check if you can support mtIn -//////////////////////////////////////////////////////////////////////////// -HRESULT CMpegAudEnc::CheckInputType(const CMediaType* mtIn) -{ - if (*mtIn->Type() == MEDIATYPE_Audio && *mtIn->FormatType() == FORMAT_WaveFormatEx) - if (mtIn->FormatLength() >= sizeof(WAVEFORMATEX)) - if (mtIn->IsTemporalCompressed() == FALSE) - return m_Encoder.SetInputType((LPWAVEFORMATEX)mtIn->Format(), true); - - return E_INVALIDARG; -} - -//////////////////////////////////////////////////////////////////////////// -// CheckTransform - checks if we can support the transform from this input to this output -//////////////////////////////////////////////////////////////////////////// -HRESULT CMpegAudEnc::CheckTransform(const CMediaType* mtIn, const CMediaType* mtOut) -{ - if(MEDIATYPE_Stream != mtOut->majortype) - { - if (*mtOut->FormatType() != FORMAT_WaveFormatEx) - return VFW_E_INVALIDMEDIATYPE; - - if (mtOut->FormatLength() < sizeof(WAVEFORMATEX)) - return VFW_E_INVALIDMEDIATYPE; - - MPEG_ENCODER_CONFIG mec; - if(FAILED(m_Encoder.GetOutputType(&mec))) - return S_OK; - - if (((LPWAVEFORMATEX)mtIn->Format())->nSamplesPerSec % mec.dwSampleRate != 0) - return S_OK; - - if (mec.dwSampleRate != ((LPWAVEFORMATEX)mtOut->Format())->nSamplesPerSec) - return VFW_E_TYPE_NOT_ACCEPTED; - - return S_OK; - } - else if(mtOut->subtype == MEDIASUBTYPE_MPEG1Audio) - return S_OK; - - return VFW_E_TYPE_NOT_ACCEPTED; -} - -//////////////////////////////////////////////////////////////////////////// -// DecideBufferSize - sets output buffers number and size -//////////////////////////////////////////////////////////////////////////// -HRESULT CMpegAudEnc::DecideBufferSize( - IMemAllocator* pAllocator, - ALLOCATOR_PROPERTIES* pProperties) -{ - HRESULT hr = S_OK; - - if(m_bStreamOutput) - m_cbStreamAlignment = pProperties->cbAlign; - - /// - if (pProperties->cBuffers == 0) pProperties->cBuffers = 1; // If downstream filter didn't suggest a buffer count then default to 1 - pProperties->cbBuffer = OUT_BUFFER_SIZE; - // - - ASSERT(pProperties->cbBuffer); - - ALLOCATOR_PROPERTIES Actual; - hr = pAllocator->SetProperties(pProperties,&Actual); - if(FAILED(hr)) - return hr; - - if (Actual.cbBuffer < pProperties->cbBuffer || - Actual.cBuffers < pProperties->cBuffers) - {// can't use this allocator - return E_INVALIDARG; - } - return S_OK; -} - -//////////////////////////////////////////////////////////////////////////// -// GetMediaType - overrideable for suggesting output pin media types -//////////////////////////////////////////////////////////////////////////// -HRESULT CMpegAudEnc::GetMediaType(int iPosition, CMediaType *pMediaType) -{ - DbgLog((LOG_TRACE,1,TEXT("CMpegAudEnc::GetMediaType()"))); - - return m_pOutput->GetMediaType(iPosition, pMediaType); -} - -//////////////////////////////////////////////////////////////////////////// -// Reconnect - called after a manual change has been made to the -// encoder parameters to reset the filter output media type structure -// to match the current encoder out MPEG audio properties -//////////////////////////////////////////////////////////////////////////// -HRESULT CMpegAudEnc::Reconnect() -{ - HRESULT hr = S_FALSE; - - if (m_pOutput && m_pOutput->IsConnected() && m_State == State_Stopped) - { - MPEG_ENCODER_CONFIG mec; - hr = m_Encoder.GetOutputType(&mec); - - if ((hr = m_Encoder.SetOutputType(mec)) == S_OK) - { - // Create an updated output MediaType using the current encoder settings - CMediaType cmt; - cmt.InitMediaType(); - m_pOutput->GetMediaType(m_currentMediaTypeIndex, &cmt); - - // If the updated MediaType matches the current output MediaType no reconnect is needed - if (m_pOutput->CurrentMediaType() == cmt) return S_OK; - - // Attempt to reconnect the output pin using the updated MediaType - if (S_OK == (hr = m_pOutput->GetConnected()->QueryAccept(&cmt))) { - hr = m_pOutput->SetMediaType(&cmt); - if ( FAILED(hr) ) { return(hr); } - - hr = m_pGraph->Reconnect(m_pOutput); - } - else - hr = m_pOutput->SetMediaType(&cmt); - } - } - - return hr; -} - -//////////////////////////////////////////////////////////////////////////// -// LoadOutputCapabilities - create a list of the currently supported output -// format capabilities which will be used by the IAMStreamConfig Interface -//////////////////////////////////////////////////////////////////////////// -void CMpegAudEnc::LoadOutputCapabilities(DWORD sample_rate) -{ - m_CapsNum = 0; - - // Clear out any existing output capabilities - ZeroMemory(OutputCaps, sizeof(OutputCaps)); - - // Create the set of Constant Bit Rate output capabilities that are - // supported for the current input pin sampling rate. - for (int i = 0; i < NUMELMS(OutputCapabilities); i++) { - if (0 == sample_rate % OutputCapabilities[i].nSampleRate) { - - // Add this output capability to the OutputCaps list - OutputCaps[m_CapsNum] = OutputCapabilities[i]; - m_CapsNum++; - - // Don't overrun the hard-coded capabilities array limit - if (m_CapsNum > (int)MAX_IAMSTREAMCONFIG_CAPS) break; - } - } -} - - -// -// Read persistent configuration from Registry -// -void CMpegAudEnc::ReadPresetSettings(MPEG_ENCODER_CONFIG * pmec) -{ - DbgLog((LOG_TRACE,1,TEXT("CMpegAudEnc::ReadPresetSettings()"))); - - Lame::CRegKey rk(HKEY_CURRENT_USER, KEY_LAME_ENCODER); - - pmec->dwBitrate = rk.getDWORD(VALUE_BITRATE,DEFAULT_BITRATE); - pmec->dwVariableMin = rk.getDWORD(VALUE_VARIABLEMIN,DEFAULT_VARIABLEMIN); - pmec->dwVariableMax = rk.getDWORD(VALUE_VARIABLEMAX,DEFAULT_VARIABLEMAX); - pmec->vmVariable = rk.getDWORD(VALUE_VARIABLE, DEFAULT_VARIABLE) ? vbr_rh : vbr_off; - pmec->dwQuality = rk.getDWORD(VALUE_QUALITY,DEFAULT_ENCODING_QUALITY); - pmec->dwVBRq = rk.getDWORD(VALUE_VBR_QUALITY,DEFAULT_VBR_QUALITY); - pmec->lLayer = rk.getDWORD(VALUE_LAYER, DEFAULT_LAYER); - pmec->bCRCProtect = rk.getDWORD(VALUE_CRC, DEFAULT_CRC); - pmec->bForceMono = rk.getDWORD(VALUE_FORCE_MONO, DEFAULT_FORCE_MONO); - pmec->bSetDuration = rk.getDWORD(VALUE_SET_DURATION, DEFAULT_SET_DURATION); - pmec->bSampleOverlap = rk.getDWORD(VALUE_SAMPLE_OVERLAP, DEFAULT_SAMPLE_OVERLAP); - pmec->bCopyright = rk.getDWORD(VALUE_COPYRIGHT, DEFAULT_COPYRIGHT); - pmec->bOriginal = rk.getDWORD(VALUE_ORIGINAL, DEFAULT_ORIGINAL); - pmec->dwSampleRate = rk.getDWORD(VALUE_SAMPLE_RATE, DEFAULT_SAMPLE_RATE); - pmec->dwPES = rk.getDWORD(VALUE_PES, DEFAULT_PES); - - pmec->ChMode = (MPEG_mode)rk.getDWORD(VALUE_STEREO_MODE, DEFAULT_STEREO_MODE); - pmec->dwForceMS = rk.getDWORD(VALUE_FORCE_MS, DEFAULT_FORCE_MS); - - pmec->dwEnforceVBRmin = rk.getDWORD(VALUE_ENFORCE_MIN, DEFAULT_ENFORCE_MIN); - pmec->dwVoiceMode = rk.getDWORD(VALUE_VOICE, DEFAULT_VOICE); - pmec->dwKeepAllFreq = rk.getDWORD(VALUE_KEEP_ALL_FREQ, DEFAULT_KEEP_ALL_FREQ); - pmec->dwStrictISO = rk.getDWORD(VALUE_STRICT_ISO, DEFAULT_STRICT_ISO); - pmec->dwNoShortBlock = rk.getDWORD(VALUE_DISABLE_SHORT_BLOCK, DEFAULT_DISABLE_SHORT_BLOCK); - pmec->dwXingTag = rk.getDWORD(VALUE_XING_TAG, DEFAULT_XING_TAG); - pmec->dwModeFixed = rk.getDWORD(VALUE_MODE_FIXED, DEFAULT_MODE_FIXED); - - rk.Close(); -} - -//////////////////////////////////////////////////////////////// -// Property page handling -//////////////////////////////////////////////////////////////// -HRESULT CMpegAudEnc::GetPages(CAUUID *pcauuid) -{ - GUID *pguid; - - pcauuid->cElems = 3; - pcauuid->pElems = pguid = (GUID *) CoTaskMemAlloc(sizeof(GUID) * pcauuid->cElems); - - if (pcauuid->pElems == NULL) - return E_OUTOFMEMORY; - - pguid[0] = CLSID_LAMEDShow_PropertyPage; - pguid[1] = CLSID_LAMEDShow_PropertyPageAdv; - pguid[2] = CLSID_LAMEDShow_About; - - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::NonDelegatingQueryInterface(REFIID riid, void ** ppv) -{ - - if (riid == IID_ISpecifyPropertyPages) - return GetInterface((ISpecifyPropertyPages *) this, ppv); - else if(riid == IID_IPersistStream) - return GetInterface((IPersistStream *)this, ppv); -// else if (riid == IID_IVAudioEncSettings) -// return GetInterface((IVAudioEncSettings*) this, ppv); - else if (riid == IID_IAudioEncoderProperties) - return GetInterface((IAudioEncoderProperties*) this, ppv); - - return CTransformFilter::NonDelegatingQueryInterface(riid, ppv); -} - -//////////////////////////////////////////////////////////////// -//IVAudioEncSettings interface methods -//////////////////////////////////////////////////////////////// - -// -// IAudioEncoderProperties -// -STDMETHODIMP CMpegAudEnc::get_PESOutputEnabled(DWORD *dwEnabled) -{ - *dwEnabled = (DWORD)m_Encoder.IsPES(); - DbgLog((LOG_TRACE, 1, TEXT("get_PESOutputEnabled -> %d"), *dwEnabled)); - - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_PESOutputEnabled(DWORD dwEnabled) -{ - m_Encoder.SetPES((BOOL)!!dwEnabled); - DbgLog((LOG_TRACE, 1, TEXT("set_PESOutputEnabled(%d)"), !!dwEnabled)); - - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::get_MPEGLayer(DWORD *dwLayer) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - *dwLayer = (DWORD)mec.lLayer; - - DbgLog((LOG_TRACE, 1, TEXT("get_MPEGLayer -> %d"), *dwLayer)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_MPEGLayer(DWORD dwLayer) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - if (dwLayer == 2) - mec.lLayer = 2; - else if (dwLayer == 1) - mec.lLayer = 1; - m_Encoder.SetOutputType(mec); - - DbgLog((LOG_TRACE, 1, TEXT("set_MPEGLayer(%d)"), dwLayer)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::get_Bitrate(DWORD *dwBitrate) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - *dwBitrate = (DWORD)mec.dwBitrate; - DbgLog((LOG_TRACE, 1, TEXT("get_Bitrate -> %d"), *dwBitrate)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_Bitrate(DWORD dwBitrate) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - mec.dwBitrate = dwBitrate; - m_Encoder.SetOutputType(mec); - DbgLog((LOG_TRACE, 1, TEXT("set_Bitrate(%d)"), dwBitrate)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::get_Variable(DWORD *dwVariable) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - *dwVariable = (DWORD)(mec.vmVariable == vbr_off ? 0 : 1); - DbgLog((LOG_TRACE, 1, TEXT("get_Variable -> %d"), *dwVariable)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_Variable(DWORD dwVariable) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - - mec.vmVariable = dwVariable ? vbr_rh : vbr_off; - m_Encoder.SetOutputType(mec); - DbgLog((LOG_TRACE, 1, TEXT("set_Variable(%d)"), dwVariable)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::get_VariableMin(DWORD *dwMin) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - *dwMin = (DWORD)mec.dwVariableMin; - DbgLog((LOG_TRACE, 1, TEXT("get_Variablemin -> %d"), *dwMin)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_VariableMin(DWORD dwMin) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - mec.dwVariableMin = dwMin; - m_Encoder.SetOutputType(mec); - DbgLog((LOG_TRACE, 1, TEXT("set_Variablemin(%d)"), dwMin)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::get_VariableMax(DWORD *dwMax) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - *dwMax = (DWORD)mec.dwVariableMax; - DbgLog((LOG_TRACE, 1, TEXT("get_Variablemax -> %d"), *dwMax)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_VariableMax(DWORD dwMax) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - mec.dwVariableMax = dwMax; - m_Encoder.SetOutputType(mec); - DbgLog((LOG_TRACE, 1, TEXT("set_Variablemax(%d)"), dwMax)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::get_Quality(DWORD *dwQuality) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - *dwQuality=(DWORD)mec.dwQuality; - DbgLog((LOG_TRACE, 1, TEXT("get_Quality -> %d"), *dwQuality)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_Quality(DWORD dwQuality) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - mec.dwQuality = dwQuality; - m_Encoder.SetOutputType(mec); - DbgLog((LOG_TRACE, 1, TEXT("set_Quality(%d)"), dwQuality)); - return S_OK; -} -STDMETHODIMP CMpegAudEnc::get_VariableQ(DWORD *dwVBRq) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - *dwVBRq=(DWORD)mec.dwVBRq; - DbgLog((LOG_TRACE, 1, TEXT("get_VariableQ -> %d"), *dwVBRq)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_VariableQ(DWORD dwVBRq) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - mec.dwVBRq = dwVBRq; - m_Encoder.SetOutputType(mec); - DbgLog((LOG_TRACE, 1, TEXT("set_VariableQ(%d)"), dwVBRq)); - return S_OK; -} - - -STDMETHODIMP CMpegAudEnc::get_SourceSampleRate(DWORD *dwSampleRate) -{ - *dwSampleRate = 0; - - WAVEFORMATEX wf; - if(FAILED(m_Encoder.GetInputType(&wf))) - return E_FAIL; - - *dwSampleRate = wf.nSamplesPerSec; - DbgLog((LOG_TRACE, 1, TEXT("get_SourceSampleRate -> %d"), *dwSampleRate)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::get_SourceChannels(DWORD *dwChannels) -{ - WAVEFORMATEX wf; - if(FAILED(m_Encoder.GetInputType(&wf))) - return E_FAIL; - - *dwChannels = wf.nChannels; - DbgLog((LOG_TRACE, 1, TEXT("get_SourceChannels -> %d"), *dwChannels)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::get_SampleRate(DWORD *dwSampleRate) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - *dwSampleRate = mec.dwSampleRate; - DbgLog((LOG_TRACE, 1, TEXT("get_SampleRate -> %d"), *dwSampleRate)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_SampleRate(DWORD dwSampleRate) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - DWORD dwOldSampleRate = mec.dwSampleRate; - mec.dwSampleRate = dwSampleRate; - m_Encoder.SetOutputType(mec); - DbgLog((LOG_TRACE, 1, TEXT("set_SampleRate(%d)"), dwSampleRate)); - - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::get_ChannelMode(DWORD *dwChannelMode) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - *dwChannelMode = mec.ChMode; - DbgLog((LOG_TRACE, 1, TEXT("get_ChannelMode -> %d"), *dwChannelMode)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_ChannelMode(DWORD dwChannelMode) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - mec.ChMode = (MPEG_mode)dwChannelMode; - m_Encoder.SetOutputType(mec); - DbgLog((LOG_TRACE, 1, TEXT("set_ChannelMode(%d)"), dwChannelMode)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::get_ForceMS(DWORD *dwFlag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - *dwFlag = mec.dwForceMS; - DbgLog((LOG_TRACE, 1, TEXT("get_ForceMS -> %d"), *dwFlag)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_ForceMS(DWORD dwFlag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - mec.dwForceMS = dwFlag; - m_Encoder.SetOutputType(mec); - DbgLog((LOG_TRACE, 1, TEXT("set_ForceMS(%d)"), dwFlag)); - return S_OK; -} - - -STDMETHODIMP CMpegAudEnc::get_CRCFlag(DWORD *dwFlag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - *dwFlag = mec.bCRCProtect; - DbgLog((LOG_TRACE, 1, TEXT("get_CRCFlag -> %d"), *dwFlag)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::get_ForceMono(DWORD *dwFlag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - *dwFlag = mec.bForceMono; - DbgLog((LOG_TRACE, 1, TEXT("get_ForceMono -> %d"), *dwFlag)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::get_SetDuration(DWORD *dwFlag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - *dwFlag = mec.bSetDuration; - DbgLog((LOG_TRACE, 1, TEXT("get_SetDuration -> %d"), *dwFlag)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::get_SampleOverlap(DWORD *dwFlag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - *dwFlag = mec.bSampleOverlap; - DbgLog((LOG_TRACE, 1, TEXT("get_SampleOverlap -> %d"), *dwFlag)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_CRCFlag(DWORD dwFlag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - mec.bCRCProtect = dwFlag; - m_Encoder.SetOutputType(mec); - DbgLog((LOG_TRACE, 1, TEXT("set_CRCFlag(%d)"), dwFlag)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_ForceMono(DWORD dwFlag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - mec.bForceMono = dwFlag; - m_Encoder.SetOutputType(mec); - DbgLog((LOG_TRACE, 1, TEXT("set_ForceMono(%d)"), dwFlag)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_SetDuration(DWORD dwFlag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - mec.bSetDuration = dwFlag; - m_Encoder.SetOutputType(mec); - DbgLog((LOG_TRACE, 1, TEXT("set_SetDuration(%d)"), dwFlag)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_SampleOverlap(DWORD dwFlag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - mec.bSampleOverlap = dwFlag; - m_Encoder.SetOutputType(mec); - DbgLog((LOG_TRACE, 1, TEXT("set_SampleOverlap(%d)"), dwFlag)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::get_EnforceVBRmin(DWORD *dwFlag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - *dwFlag = mec.dwEnforceVBRmin; - DbgLog((LOG_TRACE, 1, TEXT("get_EnforceVBRmin -> %d"), *dwFlag)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_EnforceVBRmin(DWORD dwFlag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - mec.dwEnforceVBRmin = dwFlag; - m_Encoder.SetOutputType(mec); - DbgLog((LOG_TRACE, 1, TEXT("set_EnforceVBRmin(%d)"), dwFlag)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::get_VoiceMode(DWORD *dwFlag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - *dwFlag = mec.dwVoiceMode; - DbgLog((LOG_TRACE, 1, TEXT("get_VoiceMode -> %d"), *dwFlag)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_VoiceMode(DWORD dwFlag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - mec.dwVoiceMode = dwFlag; - m_Encoder.SetOutputType(mec); - DbgLog((LOG_TRACE, 1, TEXT("set_VoiceMode(%d)"), dwFlag)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::get_KeepAllFreq(DWORD *dwFlag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - *dwFlag = mec.dwKeepAllFreq; - DbgLog((LOG_TRACE, 1, TEXT("get_KeepAllFreq -> %d"), *dwFlag)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_KeepAllFreq(DWORD dwFlag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - mec.dwKeepAllFreq = dwFlag; - m_Encoder.SetOutputType(mec); - DbgLog((LOG_TRACE, 1, TEXT("set_KeepAllFreq(%d)"), dwFlag)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::get_StrictISO(DWORD *dwFlag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - *dwFlag = mec.dwStrictISO; - DbgLog((LOG_TRACE, 1, TEXT("get_StrictISO -> %d"), *dwFlag)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_StrictISO(DWORD dwFlag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - mec.dwStrictISO = dwFlag; - m_Encoder.SetOutputType(mec); - DbgLog((LOG_TRACE, 1, TEXT("set_StrictISO(%d)"), dwFlag)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::get_NoShortBlock(DWORD *dwNoShortBlock) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - *dwNoShortBlock = mec.dwNoShortBlock; - DbgLog((LOG_TRACE, 1, TEXT("get_NoShortBlock -> %d"), *dwNoShortBlock)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_NoShortBlock(DWORD dwNoShortBlock) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - mec.dwNoShortBlock = dwNoShortBlock; - m_Encoder.SetOutputType(mec); - DbgLog((LOG_TRACE, 1, TEXT("set_NoShortBlock(%d)"), dwNoShortBlock)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::get_XingTag(DWORD *dwXingTag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - *dwXingTag = mec.dwXingTag; - DbgLog((LOG_TRACE, 1, TEXT("get_XingTag -> %d"), *dwXingTag)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_XingTag(DWORD dwXingTag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - mec.dwXingTag = dwXingTag; - m_Encoder.SetOutputType(mec); - DbgLog((LOG_TRACE, 1, TEXT("set_XingTag(%d)"), dwXingTag)); - return S_OK; -} - - - -STDMETHODIMP CMpegAudEnc::get_OriginalFlag(DWORD *dwFlag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - *dwFlag = mec.bOriginal; - DbgLog((LOG_TRACE, 1, TEXT("get_OriginalFlag -> %d"), *dwFlag)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_OriginalFlag(DWORD dwFlag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - mec.bOriginal = dwFlag; - m_Encoder.SetOutputType(mec); - DbgLog((LOG_TRACE, 1, TEXT("set_OriginalFlag(%d)"), dwFlag)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::get_CopyrightFlag(DWORD *dwFlag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - *dwFlag = mec.bCopyright; - DbgLog((LOG_TRACE, 1, TEXT("get_CopyrightFlag -> %d"), *dwFlag)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_CopyrightFlag(DWORD dwFlag) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - mec.bCopyright = dwFlag; - m_Encoder.SetOutputType(mec); - DbgLog((LOG_TRACE, 1, TEXT("set_CopyrightFlag(%d)"), dwFlag)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::get_ModeFixed(DWORD *dwModeFixed) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - *dwModeFixed = mec.dwModeFixed; - DbgLog((LOG_TRACE, 1, TEXT("get_ModeFixed -> %d"), *dwModeFixed)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::set_ModeFixed(DWORD dwModeFixed) -{ - MPEG_ENCODER_CONFIG mec; - m_Encoder.GetOutputType(&mec); - mec.dwModeFixed = dwModeFixed; - m_Encoder.SetOutputType(mec); - DbgLog((LOG_TRACE, 1, TEXT("set_ModeFixed(%d)"), dwModeFixed)); - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::get_ParameterBlockSize(BYTE *pcBlock, DWORD *pdwSize) -{ - DbgLog((LOG_TRACE, 1, TEXT("get_ParameterBlockSize -> %d%d"), *pcBlock, *pdwSize)); - - if (pcBlock != NULL) { - if (*pdwSize >= sizeof(MPEG_ENCODER_CONFIG)) { - m_Encoder.GetOutputType((MPEG_ENCODER_CONFIG*)pcBlock); - return S_OK; - } - else { - *pdwSize = sizeof(MPEG_ENCODER_CONFIG); - return E_FAIL; - } - } - else if (pdwSize != NULL) { - *pdwSize = sizeof(MPEG_ENCODER_CONFIG); - return S_OK; - } - - return E_FAIL; -} - -STDMETHODIMP CMpegAudEnc::set_ParameterBlockSize(BYTE *pcBlock, DWORD dwSize) -{ - DbgLog((LOG_TRACE, 1, TEXT("get_ParameterBlockSize(%d, %d)"), *pcBlock, dwSize)); - if (sizeof(MPEG_ENCODER_CONFIG) == dwSize){ - m_Encoder.SetOutputType(*(MPEG_ENCODER_CONFIG*)pcBlock); - return S_OK; - } - else return E_FAIL; -} - - -STDMETHODIMP CMpegAudEnc::DefaultAudioEncoderProperties() -{ - DbgLog((LOG_TRACE, 1, TEXT("DefaultAudioEncoderProperties()"))); - - HRESULT hr = InputTypeDefined(); - if (FAILED(hr)) - return hr; - - DWORD dwSourceSampleRate; - get_SourceSampleRate(&dwSourceSampleRate); - - set_PESOutputEnabled(DEFAULT_PES); - set_MPEGLayer(DEFAULT_LAYER); - - set_Bitrate(DEFAULT_BITRATE); - set_Variable(FALSE); - set_VariableMin(DEFAULT_VARIABLEMIN); - set_VariableMax(DEFAULT_VARIABLEMAX); - set_Quality(DEFAULT_ENCODING_QUALITY); - set_VariableQ(DEFAULT_VBR_QUALITY); - - set_SampleRate(dwSourceSampleRate); - set_CRCFlag(DEFAULT_CRC); - set_ForceMono(DEFAULT_FORCE_MONO); - set_SetDuration(DEFAULT_SET_DURATION); - set_SampleOverlap(DEFAULT_SAMPLE_OVERLAP); - set_OriginalFlag(DEFAULT_ORIGINAL); - set_CopyrightFlag(DEFAULT_COPYRIGHT); - - set_EnforceVBRmin(DEFAULT_ENFORCE_MIN); - set_VoiceMode(DEFAULT_VOICE); - set_KeepAllFreq(DEFAULT_KEEP_ALL_FREQ); - set_StrictISO(DEFAULT_STRICT_ISO); - set_NoShortBlock(DEFAULT_DISABLE_SHORT_BLOCK); - set_XingTag(DEFAULT_XING_TAG); - set_ForceMS(DEFAULT_FORCE_MS); - set_ChannelMode(DEFAULT_STEREO_MODE); - set_ModeFixed(DEFAULT_MODE_FIXED); - - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::LoadAudioEncoderPropertiesFromRegistry() -{ - DbgLog((LOG_TRACE, 1, TEXT("LoadAudioEncoderPropertiesFromRegistry()"))); - - MPEG_ENCODER_CONFIG mec; - ReadPresetSettings(&mec); - if(m_Encoder.SetOutputType(mec) == S_FALSE) - return S_FALSE; - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::SaveAudioEncoderPropertiesToRegistry() -{ - DbgLog((LOG_TRACE, 1, TEXT("SaveAudioEncoderPropertiesToRegistry()"))); - Lame::CRegKey rk; - - MPEG_ENCODER_CONFIG mec; - if(m_Encoder.GetOutputType(&mec) == S_FALSE) - return E_FAIL; - - if(rk.Create(HKEY_CURRENT_USER, KEY_LAME_ENCODER)) - { - rk.setDWORD(VALUE_BITRATE, mec.dwBitrate); - rk.setDWORD(VALUE_VARIABLE, mec.vmVariable); - rk.setDWORD(VALUE_VARIABLEMIN, mec.dwVariableMin); - rk.setDWORD(VALUE_VARIABLEMAX, mec.dwVariableMax); - rk.setDWORD(VALUE_QUALITY, mec.dwQuality); - rk.setDWORD(VALUE_VBR_QUALITY, mec.dwVBRq); - - rk.setDWORD(VALUE_CRC, mec.bCRCProtect); - rk.setDWORD(VALUE_FORCE_MONO, mec.bForceMono); - rk.setDWORD(VALUE_SET_DURATION, mec.bSetDuration); - rk.setDWORD(VALUE_SAMPLE_OVERLAP, mec.bSampleOverlap); - rk.setDWORD(VALUE_PES, mec.dwPES); - rk.setDWORD(VALUE_COPYRIGHT, mec.bCopyright); - rk.setDWORD(VALUE_ORIGINAL, mec.bOriginal); - rk.setDWORD(VALUE_SAMPLE_RATE, mec.dwSampleRate); - - rk.setDWORD(VALUE_STEREO_MODE, mec.ChMode); - rk.setDWORD(VALUE_FORCE_MS, mec.dwForceMS); - rk.setDWORD(VALUE_XING_TAG, mec.dwXingTag); - rk.setDWORD(VALUE_DISABLE_SHORT_BLOCK, mec.dwNoShortBlock); - rk.setDWORD(VALUE_STRICT_ISO, mec.dwStrictISO); - rk.setDWORD(VALUE_KEEP_ALL_FREQ, mec.dwKeepAllFreq); - rk.setDWORD(VALUE_VOICE, mec.dwVoiceMode); - rk.setDWORD(VALUE_ENFORCE_MIN, mec.dwEnforceVBRmin); - rk.setDWORD(VALUE_MODE_FIXED, mec.dwModeFixed); - - rk.Close(); - } - - // Reconnect filter graph - Reconnect(); - - return S_OK; -} - -STDMETHODIMP CMpegAudEnc::InputTypeDefined() -{ - WAVEFORMATEX wf; - if(FAILED(m_Encoder.GetInputType(&wf))) - { - DbgLog((LOG_TRACE, 1, TEXT("!InputTypeDefined()"))); - return E_FAIL; - } - - DbgLog((LOG_TRACE, 1, TEXT("InputTypeDefined()"))); - return S_OK; -} - - -STDMETHODIMP CMpegAudEnc::ApplyChanges() -{ - return Reconnect(); -} - -// -// CPersistStream stuff -// - -// what is our class ID? -STDMETHODIMP CMpegAudEnc::GetClassID(CLSID *pClsid) -{ - CheckPointer(pClsid, E_POINTER); - *pClsid = CLSID_LAMEDShowFilter; - return S_OK; -} - -HRESULT CMpegAudEnc::WriteToStream(IStream *pStream) -{ - DbgLog((LOG_TRACE,1,TEXT("WriteToStream()"))); - - MPEG_ENCODER_CONFIG mec; - - if(m_Encoder.GetOutputType(&mec) == S_FALSE) - return E_FAIL; - - return pStream->Write(&mec, sizeof(mec), 0); -} - - -// what device should we use? Used to re-create a .GRF file that we -// are in -HRESULT CMpegAudEnc::ReadFromStream(IStream *pStream) -{ - MPEG_ENCODER_CONFIG mec; - - HRESULT hr = pStream->Read(&mec, sizeof(mec), 0); - if(FAILED(hr)) - return hr; - - if(m_Encoder.SetOutputType(mec) == S_FALSE) - return S_FALSE; - - DbgLog((LOG_TRACE,1,TEXT("ReadFromStream() succeeded"))); - - hr = S_OK; - return hr; -} - - -// How long is our data? -int CMpegAudEnc::SizeMax() -{ - return sizeof(MPEG_ENCODER_CONFIG); -} - - - - - -////////////////////////////////////////////////////////////////////////// -// CMpegAudEncOutPin is the one and only output pin of CMpegAudEnc -// -////////////////////////////////////////////////////////////////////////// -CMpegAudEncOutPin::CMpegAudEncOutPin( CMpegAudEnc * pFilter, HRESULT * pHr ) : - CTransformOutputPin( NAME("LameEncoderOutputPin"), pFilter, pHr, L"Output\0" ), - m_pFilter(pFilter) -{ - m_SetFormat = FALSE; -} - -CMpegAudEncOutPin::~CMpegAudEncOutPin() -{ -} - -STDMETHODIMP CMpegAudEncOutPin::NonDelegatingQueryInterface(REFIID riid, void **ppv) -{ - if(riid == IID_IAMStreamConfig) { - CheckPointer(ppv, E_POINTER); - return GetInterface((IAMStreamConfig*)(this), ppv); - } - return CBaseOutputPin::NonDelegatingQueryInterface(riid, ppv); -} - - -////////////////////////////////////////////////////////////////////////// -// This is called after the output format has been negotiated and -// will update the LAME encoder settings so that it matches the -// settings specified in the MediaType structure. -////////////////////////////////////////////////////////////////////////// -HRESULT CMpegAudEncOutPin::SetMediaType(const CMediaType *pmt) -{ - // Retrieve the current LAME encoder configuration - MPEG_ENCODER_CONFIG mec; - m_pFilter->m_Encoder.GetOutputType(&mec); - - // Annotate if we are using the MEDIATYPE_Stream output type - m_pFilter->m_bStreamOutput = (pmt->majortype == MEDIATYPE_Stream); - - if (pmt->majortype == MEDIATYPE_Stream) { - // Update the encoder configuration using the settings that were - // cached in the CMpegAudEncOutPin::GetMediaType() call - mec.dwSampleRate = m_CurrentOutputFormat.nSampleRate; - mec.dwBitrate = m_CurrentOutputFormat.nBitRate; - mec.ChMode = m_CurrentOutputFormat.ChMode; - } - else { - // Update the encoder configuration directly using the values - // passed via the CMediaType structure. - MPEGLAYER3WAVEFORMAT *pfmt = (MPEGLAYER3WAVEFORMAT*) pmt->Format(); - mec.dwSampleRate = pfmt->wfx.nSamplesPerSec; - mec.dwBitrate = pfmt->wfx.nAvgBytesPerSec * 8 / 1000; - - if (pfmt->wfx.nChannels == 1) { mec.ChMode = MONO; } - else if (pfmt->wfx.nChannels == 2 && mec.ChMode == MONO && !mec.bForceMono) { mec.ChMode = STEREO; } - } - m_pFilter->m_Encoder.SetOutputType(mec); - - // Now configure this MediaType on the output pin - HRESULT hr = CTransformOutputPin::SetMediaType(pmt); - return hr; -} - - -////////////////////////////////////////////////////////////////////////// -// Retrieve the various MediaTypes that match the advertised formats -// supported on the output pin and configure an AM_MEDIA_TYPE output -// structure that is based on the selected format. -////////////////////////////////////////////////////////////////////////// -HRESULT CMpegAudEncOutPin::GetMediaType(int iPosition, CMediaType *pmt) -{ - if (iPosition < 0) return E_INVALIDARG; - - // If iPosition equals zero then we always return the currently configured MediaType - if (iPosition == 0) { - *pmt = m_mt; - return S_OK; - } - - switch (iPosition) - { - case 1: - { - pmt->SetType(&MEDIATYPE_Audio); - pmt->SetSubtype(&MEDIASUBTYPE_MP3); - break; - } - case 2: - { - pmt->SetType(&MEDIATYPE_Stream); - pmt->SetSubtype(&MEDIASUBTYPE_MPEG1Audio); - pmt->SetFormatType(&GUID_NULL); - break; - } - case 3: - { // The last case that we evaluate is the MPEG2_PES format, but if the - // encoder isn't configured for it then just return VFW_S_NO_MORE_ITEMS - if ( !m_pFilter->m_Encoder.IsPES() ) { return VFW_S_NO_MORE_ITEMS; } - - pmt->SetType(&MEDIATYPE_MPEG2_PES); - pmt->SetSubtype(&MEDIASUBTYPE_MPEG2_AUDIO); - break; - } - default: - return VFW_S_NO_MORE_ITEMS; - } - - - // Output capabilities are dependent on the input so insure it is connected - if ( !m_pFilter->m_pInput->IsConnected() ) { - pmt->SetFormatType(&FORMAT_None); - return NOERROR; - } - - - // Annotate the current MediaType index for recall in CMpegAudEnc::Reconnect() - m_pFilter->m_currentMediaTypeIndex = iPosition; - - // Configure the remaining AM_MEDIA_TYPE parameters using the cached encoder settings. - // Since MEDIATYPE_Stream doesn't have a format block the current settings - // for CHANNEL MODE, BITRATE and SAMPLERATE are cached in m_CurrentOutputFormat for use - // when we setup the LAME encoder in the call to CMpegAudEncOutPin::SetMediaType() - MPEG_ENCODER_CONFIG mec; - m_pFilter->m_Encoder.GetOutputType(&mec); // Retrieve the current encoder config - - WAVEFORMATEX wf; // Retrieve the input configuration - m_pFilter->m_Encoder.GetInputType(&wf); - - // Use the current encoder sample rate unless it isn't a modulus of the input rate - if ((wf.nSamplesPerSec % mec.dwSampleRate) == 0) { - m_CurrentOutputFormat.nSampleRate = mec.dwSampleRate; - } - else { - m_CurrentOutputFormat.nSampleRate = wf.nSamplesPerSec; - } - - // Select the output channel config based on the encoder config and input channel count - m_CurrentOutputFormat.ChMode = mec.ChMode; - switch (wf.nChannels) // Determine if we need to alter ChMode based upon the channel count and ForceMono flag - { - case 1: - { - m_CurrentOutputFormat.ChMode = MONO; - break; - } - case 2: - { - if (mec.ChMode == MONO && !mec.bForceMono) { m_CurrentOutputFormat.ChMode = STEREO; } - else if ( mec.bForceMono ) { m_CurrentOutputFormat.ChMode = MONO; } - break; - } - } - - // Select the encoder bit rate. In VBR mode we set the data rate parameter - // of the WAVE_FORMAT_MPEGLAYER3 structure to the minimum VBR value - m_CurrentOutputFormat.nBitRate = (mec.vmVariable == vbr_off) ? mec.dwBitrate : mec.dwVariableMin; - - if (pmt->majortype == MEDIATYPE_Stream) return NOERROR; // No further config required for MEDIATYPE_Stream - - - // Now configure the remainder of the WAVE_FORMAT_MPEGLAYER3 format block - // and its parent AM_MEDIA_TYPE structure - DECLARE_PTR(MPEGLAYER3WAVEFORMAT, p_mp3wvfmt, pmt->AllocFormatBuffer(sizeof(MPEGLAYER3WAVEFORMAT))); - ZeroMemory(p_mp3wvfmt, sizeof(MPEGLAYER3WAVEFORMAT)); - - p_mp3wvfmt->wfx.wFormatTag = WAVE_FORMAT_MPEGLAYER3; - p_mp3wvfmt->wfx.nChannels = (m_CurrentOutputFormat.ChMode == MONO) ? 1 : 2; - p_mp3wvfmt->wfx.nSamplesPerSec = m_CurrentOutputFormat.nSampleRate; - p_mp3wvfmt->wfx.nAvgBytesPerSec = GET_DATARATE(m_CurrentOutputFormat.nBitRate); - p_mp3wvfmt->wfx.nBlockAlign = 1; - p_mp3wvfmt->wfx.wBitsPerSample = 0; - p_mp3wvfmt->wfx.cbSize = sizeof(MPEGLAYER3WAVEFORMAT) - sizeof(WAVEFORMATEX); - - p_mp3wvfmt->wID = MPEGLAYER3_ID_MPEG; - p_mp3wvfmt->fdwFlags = MPEGLAYER3_FLAG_PADDING_ISO; - p_mp3wvfmt->nBlockSize = GET_FRAMELENGTH(m_CurrentOutputFormat.nBitRate, p_mp3wvfmt->wfx.nSamplesPerSec); - p_mp3wvfmt->nFramesPerBlock = 1; - p_mp3wvfmt->nCodecDelay = 0; - - pmt->SetTemporalCompression(FALSE); - pmt->SetSampleSize(OUT_BUFFER_SIZE); - pmt->SetFormat((LPBYTE)p_mp3wvfmt, sizeof(MPEGLAYER3WAVEFORMAT)); - pmt->SetFormatType(&FORMAT_WaveFormatEx); - - return NOERROR; -} - - -////////////////////////////////////////////////////////////////////////// -// This method is called to see if a given output format is supported -////////////////////////////////////////////////////////////////////////// -HRESULT CMpegAudEncOutPin::CheckMediaType(const CMediaType *pmtOut) -{ - // Fail if the input pin is not connected. - if (!m_pFilter->m_pInput->IsConnected()) { - return VFW_E_NOT_CONNECTED; - } - - // Reject any media types that we know in advance our - // filter cannot use. - if (pmtOut->majortype != MEDIATYPE_Audio && pmtOut->majortype != MEDIATYPE_Stream) { return S_FALSE; } - - // If SetFormat was previously called, check whether pmtOut exactly - // matches the format that was specified in SetFormat. - // Return S_OK if they match, or VFW_E_INVALIDMEDIATYPE otherwise.) - if ( m_SetFormat ) { - if (*pmtOut != m_mt) { return VFW_E_INVALIDMEDIATYPE; } - else { return S_OK; } - } - - // Now do the normal check for this media type. - HRESULT hr; - hr = m_pFilter->CheckTransform (&m_pFilter->m_pInput->CurrentMediaType(), // The input type. - pmtOut); // The proposed output type. - - if (hr == S_OK) { - return S_OK; // This format is compatible with the current input type. - } - - // This format is not compatible with the current input type. - // Maybe we can reconnect the input pin with a new input type. - - // Enumerate the upstream filter's preferred output types, and - // see if one of them will work. - CMediaType *pmtEnum; - BOOL fFound = FALSE; - IEnumMediaTypes *pEnum; - hr = m_pFilter->m_pInput->GetConnected()->EnumMediaTypes(&pEnum); - if (hr != S_OK) { - return E_FAIL; - } - - while (hr = pEnum->Next(1, (AM_MEDIA_TYPE **)&pmtEnum, NULL), hr == S_OK) - { - // Check this input type against the proposed output type. - hr = m_pFilter->CheckTransform(pmtEnum, pmtOut); - if (hr != S_OK) { - DeleteMediaType(pmtEnum); - continue; // Try the next one. - } - - // This input type is a possible candidate. But, we have to make - // sure that the upstream filter can switch to this type. - hr = m_pFilter->m_pInput->GetConnected()->QueryAccept(pmtEnum); - if (hr != S_OK) { - // The upstream filter will not switch to this type. - DeleteMediaType(pmtEnum); - continue; // Try the next one. - } - fFound = TRUE; - DeleteMediaType(pmtEnum); - break; - } - pEnum->Release(); - - if (fFound) { - // This output type is OK, but if we are asked to use it, we will - // need to reconnect our input pin. (See SetFormat, below.) - return S_OK; - } - else { - return VFW_E_INVALIDMEDIATYPE; - } -} - - - -////////////////////////////////////////////////////////////////////////// -// IAMStreamConfig -////////////////////////////////////////////////////////////////////////// - -HRESULT STDMETHODCALLTYPE CMpegAudEncOutPin::SetFormat(AM_MEDIA_TYPE *pmt) -{ - CheckPointer(pmt, E_POINTER); - HRESULT hr; - - // Hold the filter state lock, to make sure that streaming isn't - // in the middle of starting or stopping: - CAutoLock cObjectLock(&m_pFilter->m_csFilter); - - // Cannot set the format unless the filter is stopped. - if (m_pFilter->m_State != State_Stopped) { - return VFW_E_NOT_STOPPED; - } - - // The set of possible output formats depends on the input format, - // so if the input pin is not connected, return a failure code. - if (!m_pFilter->m_pInput->IsConnected()) { - return VFW_E_NOT_CONNECTED; - } - - // If the pin is already using this format, there's nothing to do. - if (IsConnected() && CurrentMediaType() == *pmt) { - if ( m_SetFormat ) return S_OK; - } - - // See if this media type is acceptable. - if ((hr = CheckMediaType((CMediaType *)pmt)) != S_OK) { - return hr; - } - - // If we're connected to a downstream filter, we have to make - // sure that the downstream filter accepts this media type. - if (IsConnected()) { - hr = GetConnected()->QueryAccept(pmt); - if (hr != S_OK) { - return VFW_E_INVALIDMEDIATYPE; - } - } - - // Now make a note that from now on, this is the only format allowed, - // and refuse anything but this in the CheckMediaType() code above. - m_SetFormat = TRUE; - m_mt = *pmt; - - // Changing the format means reconnecting if necessary. - if (IsConnected()) { - m_pFilter->m_pGraph->Reconnect(this); - } - - return NOERROR; -} - -HRESULT STDMETHODCALLTYPE CMpegAudEncOutPin::GetFormat(AM_MEDIA_TYPE **ppmt) -{ - *ppmt = CreateMediaType(&m_mt); - return S_OK; -} - -HRESULT STDMETHODCALLTYPE CMpegAudEncOutPin::GetNumberOfCapabilities(int *piCount, int *piSize) -{ - // The set of possible output formats depends on the input format, - // so if the input pin is not connected, return a failure code. - if (!m_pFilter->m_pInput->IsConnected()) { - return VFW_E_NOT_CONNECTED; - } - - // Retrieve the current encoder configuration - MPEG_ENCODER_CONFIG mec; - m_pFilter->m_Encoder.GetOutputType(&mec); - - // If the encoder is in VBR mode GetStreamCaps() isn't implemented - if (mec.vmVariable != vbr_off) { *piCount = 0; } - else { *piCount = m_pFilter->m_CapsNum; } - - *piSize = sizeof(AUDIO_STREAM_CONFIG_CAPS); - return S_OK; -} - -HRESULT STDMETHODCALLTYPE CMpegAudEncOutPin::GetStreamCaps(int iIndex, AM_MEDIA_TYPE **pmt, BYTE *pSCC) -{ - // The set of possible output formats depends on the input format, - // so if the input pin is not connected, return a failure code. - if (!m_pFilter->m_pInput->IsConnected()) { - return VFW_E_NOT_CONNECTED; - } - - // If we don't have a capabilities array GetStreamCaps() isn't implemented - if (m_pFilter->m_CapsNum == 0) return E_NOTIMPL; - - // If the encoder is in VBR mode GetStreamCaps() isn't implemented - MPEG_ENCODER_CONFIG mec; - m_pFilter->m_Encoder.GetOutputType(&mec); - if (mec.vmVariable != vbr_off) return E_NOTIMPL; - - if (iIndex < 0) return E_INVALIDARG; - if (iIndex > m_pFilter->m_CapsNum) return S_FALSE; - - // Load the MPEG Layer3 WaveFormatEx structure with the appropriate entries - // for this IAMStreamConfig index element. - *pmt = CreateMediaType(&m_mt); - if (*pmt == NULL) return E_OUTOFMEMORY; - - DECLARE_PTR(MPEGLAYER3WAVEFORMAT, p_mp3wvfmt, (*pmt)->pbFormat); - - (*pmt)->majortype = MEDIATYPE_Audio; - (*pmt)->subtype = MEDIASUBTYPE_MP3; - (*pmt)->bFixedSizeSamples = TRUE; - (*pmt)->bTemporalCompression = FALSE; - (*pmt)->lSampleSize = OUT_BUFFER_SIZE; - (*pmt)->formattype = FORMAT_WaveFormatEx; - (*pmt)->cbFormat = sizeof(MPEGLAYER3WAVEFORMAT); - - p_mp3wvfmt->wfx.wFormatTag = WAVE_FORMAT_MPEGLAYER3; - p_mp3wvfmt->wfx.nChannels = 2; - p_mp3wvfmt->wfx.nSamplesPerSec = m_pFilter->OutputCaps[iIndex].nSampleRate; - p_mp3wvfmt->wfx.nAvgBytesPerSec = GET_DATARATE(m_pFilter->OutputCaps[iIndex].nBitRate); - p_mp3wvfmt->wfx.nBlockAlign = 1; - p_mp3wvfmt->wfx.wBitsPerSample = 0; - p_mp3wvfmt->wfx.cbSize = sizeof(MPEGLAYER3WAVEFORMAT) - sizeof(WAVEFORMATEX); - - p_mp3wvfmt->wID = MPEGLAYER3_ID_MPEG; - p_mp3wvfmt->fdwFlags = MPEGLAYER3_FLAG_PADDING_ISO; - p_mp3wvfmt->nBlockSize = GET_FRAMELENGTH(m_pFilter->OutputCaps[iIndex].nBitRate, m_pFilter->OutputCaps[iIndex].nSampleRate); - p_mp3wvfmt->nFramesPerBlock = 1; - p_mp3wvfmt->nCodecDelay = 0; - - // Set up the companion AUDIO_STREAM_CONFIG_CAPS structure - // We are only using the CHANNELS element of the structure - DECLARE_PTR(AUDIO_STREAM_CONFIG_CAPS, pascc, pSCC); - - ZeroMemory(pascc, sizeof(AUDIO_STREAM_CONFIG_CAPS)); - pascc->guid = MEDIATYPE_Audio; - - pascc->MinimumChannels = 1; - pascc->MaximumChannels = 2; - pascc->ChannelsGranularity = 1; - - pascc->MinimumSampleFrequency = p_mp3wvfmt->wfx.nSamplesPerSec; - pascc->MaximumSampleFrequency = p_mp3wvfmt->wfx.nSamplesPerSec; - pascc->SampleFrequencyGranularity = 0; - - pascc->MinimumBitsPerSample = p_mp3wvfmt->wfx.wBitsPerSample; - pascc->MaximumBitsPerSample = p_mp3wvfmt->wfx.wBitsPerSample; - pascc->BitsPerSampleGranularity = 0; - - return S_OK; -} - diff --git a/platform/win32/msvc/external/lame/dshow/Mpegac.h b/platform/win32/msvc/external/lame/dshow/Mpegac.h deleted file mode 100644 index 9341f0ae69c..00000000000 --- a/platform/win32/msvc/external/lame/dshow/Mpegac.h +++ /dev/null @@ -1,287 +0,0 @@ -/* - * LAME MP3 encoder for DirectShow - * DirectShow filter implementation - * - * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. - * - * 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 -#include "Encoder.h" - -#define KEY_LAME_ENCODER "SOFTWARE\\GNU\\LAME MPEG Layer III Audio Encoder Filter" - -#define VALUE_BITRATE "Bitrate" -#define VALUE_VARIABLE "Variable" -#define VALUE_VARIABLEMIN "VariableMin" -#define VALUE_VARIABLEMAX "VariableMax" -#define VALUE_QUALITY "Quality" -#define VALUE_VBR_QUALITY "VBR Quality" -#define VALUE_SAMPLE_RATE "Sample Rate" - -#define VALUE_STEREO_MODE "Stereo Mode" -#define VALUE_FORCE_MS "Force MS" - -#define VALUE_LAYER "Layer" -#define VALUE_ORIGINAL "Original" -#define VALUE_COPYRIGHT "Copyright" -#define VALUE_CRC "CRC" -#define VALUE_FORCE_MONO "Force Mono" -#define VALUE_SET_DURATION "Set Duration" -#define VALUE_SAMPLE_OVERLAP "Allow sample overlap" -#define VALUE_PES "PES" - -#define VALUE_ENFORCE_MIN "EnforceVBRmin" -#define VALUE_VOICE "Voice Mode" -#define VALUE_KEEP_ALL_FREQ "Keep All Frequencies" -#define VALUE_STRICT_ISO "Strict ISO" -#define VALUE_DISABLE_SHORT_BLOCK "No Short Block" -#define VALUE_XING_TAG "Xing Tag" -#define VALUE_MODE_FIXED "Mode Fixed" - - -typedef struct -{ - DWORD nSampleRate; - DWORD nBitRate; - MPEG_mode ChMode; //Channel coding mode -} current_output_format_t; - -typedef struct -{ - DWORD nSampleRate; - DWORD nBitRate; -} output_caps_t; - -typedef struct -{ - LONGLONG sample; - REFERENCE_TIME delta; - - BOOL applied; -} resync_point_t; - -#define RESYNC_COUNT 4 - -// The maximum number of capabilities that we can expose in our IAMStreamConfig -// implementation is currently set to 100. This number is larger than we -// should ever realistically need. However, a cleaner implementation might -// be to use a dynamically sized array like std::vector or CAtlArray to -// hold this data. -#define MAX_IAMSTREAMCONFIG_CAPS 100 - -/////////////////////////////////////////////////////////////////// -// CMpegAudEnc class - implementation for ITransformFilter interface -/////////////////////////////////////////////////////////////////// -class CMpegAudEncOutPin; -class CMpegAudEncPropertyPage; -class CMpegAudEnc : public CTransformFilter, - public ISpecifyPropertyPages, - public IAudioEncoderProperties, - public CPersistStream -{ -public: - DECLARE_IUNKNOWN - - static CUnknown *CreateInstance(LPUNKNOWN lpunk, HRESULT *phr); - - LPAMOVIESETUP_FILTER GetSetupData(); - - HRESULT Reconnect(); - - HRESULT Receive(IMediaSample *pSample); - - HRESULT CheckInputType(const CMediaType* mtIn); - HRESULT CheckTransform(const CMediaType* mtIn, const CMediaType* mtOut); - HRESULT DecideBufferSize(IMemAllocator * pAllocator, ALLOCATOR_PROPERTIES *pprop); - - HRESULT GetMediaType (int iPosition, CMediaType *pMediaType); - HRESULT SetMediaType (PIN_DIRECTION direction,const CMediaType *pmt); - - - // - HRESULT StartStreaming(); - HRESULT StopStreaming(); - HRESULT EndOfStream(); - HRESULT BeginFlush(); - - ~CMpegAudEnc(void); - - // ISpecifyPropertyPages - STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void ** ppv); - STDMETHODIMP GetPages(CAUUID *pPages); - - // IAudioEncoderProperties - STDMETHODIMP get_PESOutputEnabled(DWORD *dwEnabled); // PES header. Obsolete - STDMETHODIMP set_PESOutputEnabled(DWORD dwEnabled); // PES header. Obsolete - - STDMETHODIMP get_MPEGLayer(DWORD *dwLayer); - STDMETHODIMP set_MPEGLayer(DWORD dwLayer); - - STDMETHODIMP get_Bitrate(DWORD *dwBitrate); - STDMETHODIMP set_Bitrate(DWORD dwBitrate); - STDMETHODIMP get_Variable(DWORD *dwVariable); - STDMETHODIMP set_Variable(DWORD dwVariable); - STDMETHODIMP get_VariableMin(DWORD *dwMin); - STDMETHODIMP set_VariableMin(DWORD dwMin); - STDMETHODIMP get_VariableMax(DWORD *dwMax); - STDMETHODIMP set_VariableMax(DWORD dwMax); - STDMETHODIMP get_Quality(DWORD *dwQuality); - STDMETHODIMP set_Quality(DWORD dwQuality); - STDMETHODIMP get_VariableQ(DWORD *dwVBRq); - STDMETHODIMP set_VariableQ(DWORD dwVBRq); - STDMETHODIMP get_SourceSampleRate(DWORD *dwSampleRate); - STDMETHODIMP get_SourceChannels(DWORD *dwChannels); - STDMETHODIMP get_SampleRate(DWORD *dwSampleRate); - STDMETHODIMP set_SampleRate(DWORD dwSampleRate); - - STDMETHODIMP get_ChannelMode(DWORD *dwChannelMode); - STDMETHODIMP set_ChannelMode(DWORD dwChannelMode); - STDMETHODIMP get_ForceMS(DWORD *dwFlag); - STDMETHODIMP set_ForceMS(DWORD dwFlag); - STDMETHODIMP get_EnforceVBRmin(DWORD *dwFlag); - STDMETHODIMP set_EnforceVBRmin(DWORD dwFlag); - STDMETHODIMP get_VoiceMode(DWORD *dwFlag); - STDMETHODIMP set_VoiceMode(DWORD dwFlag); - STDMETHODIMP get_KeepAllFreq(DWORD *dwFlag); - STDMETHODIMP set_KeepAllFreq(DWORD dwFlag); - STDMETHODIMP get_StrictISO(DWORD *dwFlag); - STDMETHODIMP set_StrictISO(DWORD dwFlag); - STDMETHODIMP get_NoShortBlock(DWORD *dwNoShortBlock); - STDMETHODIMP set_NoShortBlock(DWORD dwNoShortBlock); - STDMETHODIMP get_XingTag(DWORD *dwXingTag); - STDMETHODIMP set_XingTag(DWORD dwXingTag); - STDMETHODIMP get_ModeFixed(DWORD *dwModeFixed); - STDMETHODIMP set_ModeFixed(DWORD dwModeFixed); - - - STDMETHODIMP get_CRCFlag(DWORD *dwFlag); - STDMETHODIMP set_CRCFlag(DWORD dwFlag); - STDMETHODIMP get_ForceMono(DWORD *dwFlag); - STDMETHODIMP set_ForceMono(DWORD dwFlag); - STDMETHODIMP get_SetDuration(DWORD *dwFlag); - STDMETHODIMP set_SetDuration(DWORD dwFlag); - STDMETHODIMP get_OriginalFlag(DWORD *dwFlag); - STDMETHODIMP set_OriginalFlag(DWORD dwFlag); - STDMETHODIMP get_CopyrightFlag(DWORD *dwFlag); - STDMETHODIMP set_CopyrightFlag(DWORD dwFlag); - STDMETHODIMP get_SampleOverlap(DWORD *dwFlag); - STDMETHODIMP set_SampleOverlap(DWORD dwFlag); - - STDMETHODIMP get_ParameterBlockSize(BYTE *pcBlock, DWORD *pdwSize); - STDMETHODIMP set_ParameterBlockSize(BYTE *pcBlock, DWORD dwSize); - - STDMETHODIMP DefaultAudioEncoderProperties(); - STDMETHODIMP LoadAudioEncoderPropertiesFromRegistry(); - STDMETHODIMP SaveAudioEncoderPropertiesToRegistry(); - STDMETHODIMP InputTypeDefined(); - - STDMETHODIMP ApplyChanges(); - - // CPersistStream - HRESULT WriteToStream(IStream *pStream); - HRESULT ReadFromStream(IStream *pStream); - - int SizeMax(); - STDMETHODIMP GetClassID(CLSID *pClsid); - -private: - CMpegAudEnc(LPUNKNOWN lpunk, HRESULT *phr); - - HRESULT FlushEncodedSamples(); - - void ReadPresetSettings(MPEG_ENCODER_CONFIG *pmabsi); - - void LoadOutputCapabilities(DWORD sample_rate); - - // Encoder object - CEncoder m_Encoder; - - REFERENCE_TIME m_rtStreamTime; - REFERENCE_TIME m_rtFrameTime; - REFERENCE_TIME m_rtEstimated; - - // Synchronization data - LONGLONG m_samplesIn; - LONGLONG m_samplesOut; - int m_samplesPerFrame; - int m_bytesPerSample; - float m_bytesToDuration; - - resync_point_t m_sync[RESYNC_COUNT]; - int m_sync_in_idx; - int m_sync_out_idx; - - BOOL m_hasFinished; - - CCritSec m_cs; - - DWORD m_setDuration; - DWORD m_allowOverlap; - - REFERENCE_TIME m_rtBytePos; - - BOOL m_bStreamOutput; // Binary stream output - long m_cbStreamAlignment; // Stream block size - int m_CapsNum; - int m_currentMediaTypeIndex; - output_caps_t OutputCaps[MAX_IAMSTREAMCONFIG_CAPS]; - -protected: - friend class CMpegAudEncOutPin; - friend class CMpegAudEncPropertyPage; -}; - - -class CMpegAudEncOutPin : public CTransformOutputPin, public IAMStreamConfig -{ -public: - - ////////////////////////////////////////////////////////////////////////// - // IUnknown - ////////////////////////////////////////////////////////////////////////// - DECLARE_IUNKNOWN - STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void ** ppv); - - ////////////////////////////////////////////////////////////////////////// - // IAMStreamConfig - ////////////////////////////////////////////////////////////////////////// - HRESULT STDMETHODCALLTYPE SetFormat(AM_MEDIA_TYPE *pmt); - HRESULT STDMETHODCALLTYPE GetFormat(AM_MEDIA_TYPE **ppmt); - HRESULT STDMETHODCALLTYPE GetNumberOfCapabilities(int *piCount, int *piSize); - HRESULT STDMETHODCALLTYPE GetStreamCaps(int iIndex, AM_MEDIA_TYPE **pmt, BYTE *pSCC); - - ////////////////////////////////////////////////////////////////////////// - // CTransformOutputPin - ////////////////////////////////////////////////////////////////////////// - CMpegAudEncOutPin( CMpegAudEnc * pFilter, HRESULT * pHr ); - ~CMpegAudEncOutPin(); - - HRESULT CheckMediaType(const CMediaType *pmtOut); - HRESULT GetMediaType(int iPosition, CMediaType *pmt); - HRESULT SetMediaType(const CMediaType *pmt); - -private: - BOOL m_SetFormat; - CMpegAudEnc *m_pFilter; - - current_output_format_t m_CurrentOutputFormat; - -protected: - friend class CMpegAudEnc; - -}; diff --git a/platform/win32/msvc/external/lame/dshow/PropPage.cpp b/platform/win32/msvc/external/lame/dshow/PropPage.cpp deleted file mode 100644 index 7e0b3b7c20d..00000000000 --- a/platform/win32/msvc/external/lame/dshow/PropPage.cpp +++ /dev/null @@ -1,646 +0,0 @@ -/* - * LAME MP3 encoder for DirectShow - * Basic property page - * - * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. - * - * 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 -#include -#include -#include "iaudioprops.h" -#include "mpegac.h" -#include "resource.h" -#include "PropPage.h" -#include "Reg.h" - -// strings to appear in comboboxes -const char * szBitRateString[2][14] = { - { - "32 kbps","40 kbps","48 kbps","56 kbps", - "64 kbps","80 kbps","96 kbps","112 kbps", - "128 kbps","160 kbps","192 kbps","224 kbps", - "256 kbps","320 kbps" - }, - { - "8 kbps","16 kbps","24 kbps","32 kbps", - "40 kbps","48 kbps","56 kbps","64 kbps", - "80 kbps","96 kbps","112 kbps","128 kbps", - "144 kbps","160 kbps" - } -}; - -LPCSTR szQualityDesc[10] = { - "High", "High", "High", "High", "High", - "Medium", "Medium", - "Low", "Low", - "Fast mode" -}; - -LPCSTR szVBRqDesc[10] = { - "0 - ~1:4", - "1 - ~1:5", - "2 - ~1:6", - "3 - ~1:7", - "4 - ~1:9", - "5 - ~1:9", - "6 - ~1:10", - "7 - ~1:11", - "8 - ~1:12", - "9 - ~1:14" -}; - -struct SSampleRate { - DWORD dwSampleRate; - LPCSTR lpSampleRate; -}; - -SSampleRate srRates[9] = { - // MPEG-1 - {48000, "48 kHz"}, - {44100, "44.1 kHz"}, - {32000, "32 kHz"}, - - // MPEG-2 - {24000, "24 kHz"}, - {22050, "22.05 kHz"}, - {16000, "16 kHz"}, - - // MPEG-2.5 - {12000, "12 kHz"}, - {11025, "11.025 kHz"}, - { 8000, "8 kHz"} -}; - -//////////////////////////////////////////////////////////////// -// CreateInstance -//////////////////////////////////////////////////////////////// -CUnknown *CMpegAudEncPropertyPage::CreateInstance( LPUNKNOWN punk, HRESULT *phr ) -{ - CMpegAudEncPropertyPage *pNewObject - = new CMpegAudEncPropertyPage( punk, phr ); - - if( pNewObject == NULL ) - *phr = E_OUTOFMEMORY; - - return pNewObject; -} - -//////////////////////////////////////////////////////////////// -// Constructor -//////////////////////////////////////////////////////////////// -CMpegAudEncPropertyPage::CMpegAudEncPropertyPage(LPUNKNOWN punk, HRESULT *phr) - : CBasePropertyPage(NAME("Encoder Property Page"), - punk, IDD_AUDIOENCPROPS, IDS_AUDIO_PROPS_TITLE) - , m_pAEProps(NULL) -{ - ASSERT(phr); - - m_srIdx = 0; - - InitCommonControls(); -} - -// -// OnConnect -// -// Give us the filter to communicate with -HRESULT CMpegAudEncPropertyPage::OnConnect(IUnknown *pUnknown) -{ - ASSERT(m_pAEProps == NULL); - - // Ask the filter for it's control interface - - HRESULT hr = pUnknown->QueryInterface(IID_IAudioEncoderProperties,(void **)&m_pAEProps); - if (FAILED(hr)) - return E_NOINTERFACE; - - ASSERT(m_pAEProps); - - // Get current filter state - m_pAEProps->get_Bitrate(&m_dwBitrate); - m_pAEProps->get_Variable(&m_dwVariable); - m_pAEProps->get_VariableMin(&m_dwMin); - m_pAEProps->get_VariableMax(&m_dwMax); - m_pAEProps->get_Quality(&m_dwQuality); - m_pAEProps->get_VariableQ(&m_dwVBRq); - m_pAEProps->get_SampleRate(&m_dwSampleRate); - m_pAEProps->get_CRCFlag(&m_dwCRC); - m_pAEProps->get_ForceMono(&m_dwForceMono); - m_pAEProps->get_CopyrightFlag(&m_dwCopyright); - m_pAEProps->get_OriginalFlag(&m_dwOriginal); - - return NOERROR; -} - -// -// OnDisconnect -// -// Release the interface - -HRESULT CMpegAudEncPropertyPage::OnDisconnect() -{ - // Release the interface - if (m_pAEProps == NULL) - return E_UNEXPECTED; - - m_pAEProps->set_Bitrate(m_dwBitrate); - m_pAEProps->set_Variable(m_dwVariable); - m_pAEProps->set_VariableMin(m_dwMin); - m_pAEProps->set_VariableMax(m_dwMax); - m_pAEProps->set_Quality(m_dwQuality); - m_pAEProps->set_VariableQ(m_dwVBRq); - m_pAEProps->set_SampleRate(m_dwSampleRate); - m_pAEProps->set_CRCFlag(m_dwCRC); - m_pAEProps->set_ForceMono(m_dwForceMono); - m_pAEProps->set_CopyrightFlag(m_dwCopyright); - m_pAEProps->set_OriginalFlag(m_dwOriginal); - m_pAEProps->SaveAudioEncoderPropertiesToRegistry(); - - m_pAEProps->Release(); - m_pAEProps = NULL; - - return NOERROR; -} - -// -// OnActivate -// -// Called on dialog creation - -HRESULT CMpegAudEncPropertyPage::OnActivate(void) -{ - InitPropertiesDialog(m_hwnd); - - return NOERROR; -} - -// -// OnDeactivate -// -// Called on dialog destruction - -HRESULT CMpegAudEncPropertyPage::OnDeactivate(void) -{ - return NOERROR; -} - -//////////////////////////////////////////////////////////////// -// OnReceiveMessage - message handler function -//////////////////////////////////////////////////////////////// -BOOL CMpegAudEncPropertyPage::OnReceiveMessage(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam) -{ - switch (uMsg) - { - case WM_HSCROLL: - if ((HWND)lParam == m_hwndQuality) - { - int pos = SendMessage(m_hwndQuality, TBM_GETPOS, 0, 0); - if (pos >= 0 && pos < 10) - { - SetDlgItemText(hwnd,IDC_TEXT_QUALITY,szQualityDesc[pos]); - m_pAEProps->set_Quality(pos); - SetDirty(); - } - } - break; - - case WM_COMMAND: - switch (LOWORD(wParam)) - { - case IDC_COMBO_CBR: - if (HIWORD(wParam) == CBN_SELCHANGE) - { - int nBitrate = SendDlgItemMessage(hwnd, IDC_COMBO_CBR, CB_GETCURSEL, 0, 0L); - DWORD dwSampleRate; - m_pAEProps->get_SampleRate(&dwSampleRate); - DWORD dwBitrate; - - if (dwSampleRate >= 32000) - { - // Consider MPEG-1 - dwBitrate = dwBitRateValue[0][nBitrate]; - } - else - { - // Consider MPEG-2/2.5 - dwBitrate = dwBitRateValue[1][nBitrate]; - } - - m_pAEProps->set_Bitrate(dwBitrate); - - SetDirty(); - } - break; - - case IDC_COMBO_VBRMIN: - if (HIWORD(wParam) == CBN_SELCHANGE) - { - int nVariableMin = SendDlgItemMessage(hwnd, IDC_COMBO_VBRMIN, CB_GETCURSEL, 0, 0L); - DWORD dwSampleRate; - m_pAEProps->get_SampleRate(&dwSampleRate); - DWORD dwMin; - - if (dwSampleRate >= 32000) - { - // Consider MPEG-1 - dwMin = dwBitRateValue[0][nVariableMin]; - } - else - { - // Consider MPEG-2/2.5 - dwMin = dwBitRateValue[1][nVariableMin]; - } - - m_pAEProps->set_VariableMin(dwMin); - - SetDirty(); - } - break; - - case IDC_COMBO_VBRMAX: - if (HIWORD(wParam) == CBN_SELCHANGE) - { - int nVariableMax = SendDlgItemMessage(hwnd, IDC_COMBO_VBRMAX, CB_GETCURSEL, 0, 0L); - DWORD dwSampleRate; - m_pAEProps->get_SampleRate(&dwSampleRate); - DWORD dwMax; - - if (dwSampleRate >= 32000) - { - // Consider MPEG-1 - dwMax = dwBitRateValue[0][nVariableMax]; - } - else - { - // Consider MPEG-2/2.5 - dwMax = dwBitRateValue[1][nVariableMax]; - } - - m_pAEProps->set_VariableMax(dwMax); - - SetDirty(); - } - break; - - case IDC_COMBO_SAMPLE_RATE: - if (HIWORD(wParam) == CBN_SELCHANGE) - { - int nSampleRate = SendDlgItemMessage(hwnd, IDC_COMBO_SAMPLE_RATE, CB_GETCURSEL, 0, 0L); - - if (nSampleRate < 0) - nSampleRate = 0; - else if (nSampleRate > 2) - nSampleRate = 2; - - DWORD dwSampleRate = srRates[nSampleRate * 3 + m_srIdx].dwSampleRate; - - m_pAEProps->set_SampleRate(dwSampleRate); - InitPropertiesDialog(hwnd); - SetDirty(); - } - break; - - case IDC_COMBO_VBRq: - if (HIWORD(wParam) == CBN_SELCHANGE) - { - int nVBRq = SendDlgItemMessage(hwnd, IDC_COMBO_VBRq, CB_GETCURSEL, 0, 0L); - if (nVBRq >=0 && nVBRq <=9) - m_pAEProps->set_VariableQ(nVBRq); - SetDirty(); - } - break; - - case IDC_RADIO_CBR: - case IDC_RADIO_VBR: - m_pAEProps->set_Variable(LOWORD(wParam)-IDC_RADIO_CBR); - SetDirty(); - break; - - case IDC_CHECK_PES: - m_pAEProps->set_PESOutputEnabled(IsDlgButtonChecked(hwnd, IDC_CHECK_PES)); - SetDirty(); - break; - - case IDC_CHECK_COPYRIGHT: - m_pAEProps->set_CopyrightFlag(IsDlgButtonChecked(hwnd, IDC_CHECK_COPYRIGHT)); - SetDirty(); - break; - - case IDC_CHECK_ORIGINAL: - m_pAEProps->set_OriginalFlag(IsDlgButtonChecked(hwnd, IDC_CHECK_ORIGINAL)); - SetDirty(); - break; - - case IDC_CHECK_CRC: - m_pAEProps->set_CRCFlag(IsDlgButtonChecked(hwnd, IDC_CHECK_CRC)); - SetDirty(); - break; - - case IDC_FORCE_MONO: - m_pAEProps->set_ForceMono(IsDlgButtonChecked(hwnd, IDC_FORCE_MONO)); - SetDirty(); - break; - } - return TRUE; - - case WM_DESTROY: - return TRUE; - - default: - return FALSE; - } - - return TRUE; -} - -// -// OnApplyChanges -// -HRESULT CMpegAudEncPropertyPage::OnApplyChanges() -{ - m_pAEProps->get_Bitrate(&m_dwBitrate); - m_pAEProps->get_Variable(&m_dwVariable); - m_pAEProps->get_VariableMin(&m_dwMin); - m_pAEProps->get_VariableMax(&m_dwMax); - m_pAEProps->get_Quality(&m_dwQuality); - m_pAEProps->get_VariableQ(&m_dwVBRq); - m_pAEProps->get_SampleRate(&m_dwSampleRate); - m_pAEProps->get_CRCFlag(&m_dwCRC); - m_pAEProps->get_ForceMono(&m_dwForceMono); - m_pAEProps->get_CopyrightFlag(&m_dwCopyright); - m_pAEProps->get_OriginalFlag(&m_dwOriginal); - m_pAEProps->SaveAudioEncoderPropertiesToRegistry(); - - m_pAEProps->ApplyChanges(); - - return S_OK; -} - -// -// Initialize dialogbox controls with proper values -// -void CMpegAudEncPropertyPage::InitPropertiesDialog(HWND hwndParent) -{ - EnableControls(hwndParent, TRUE); - - m_hwndQuality = GetDlgItem(hwndParent,IDC_SLIDER_QUALITY); - DWORD dwQuality; - m_pAEProps->get_Quality(&dwQuality); - SendDlgItemMessage(hwndParent, IDC_SLIDER_QUALITY, TBM_SETRANGE, 1, MAKELONG (2,9)); - SendDlgItemMessage(hwndParent, IDC_SLIDER_QUALITY, TBM_SETPOS, 1, dwQuality); - if (dwQuality>=0 && dwQuality<10) - SetDlgItemText(hwndParent,IDC_TEXT_QUALITY,szQualityDesc[dwQuality]); - - // - // initialize sample rate selection - // - DWORD dwSourceSampleRate; - m_pAEProps->get_SourceSampleRate(&dwSourceSampleRate); - - SendDlgItemMessage(hwndParent, IDC_COMBO_SAMPLE_RATE, CB_RESETCONTENT, 0, 0L); - - switch (dwSourceSampleRate) - { - case 48000: - case 24000: - case 12000: - m_srIdx = 0; - break; - - case 32000: - case 16000: - case 8000: - m_srIdx = 2; - break; - - case 44100: - case 22050: - case 11025: - default: - m_srIdx = 1; - } - - for (int i = 0; i < 3; i++) - SendDlgItemMessage(hwndParent, IDC_COMBO_SAMPLE_RATE, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)srRates[i * 3 + m_srIdx].lpSampleRate); - - DWORD dwSampleRate; - m_pAEProps->get_SampleRate(&dwSampleRate); - m_pAEProps->set_SampleRate(dwSampleRate); - - int nSR = 0; - while (dwSampleRate != srRates[nSR * 3 + m_srIdx].dwSampleRate && nSR < 3) - { - nSR++; - } - - if (nSR >= 3) - nSR = 0; - - SendDlgItemMessage(hwndParent, IDC_COMBO_SAMPLE_RATE, CB_SETCURSEL, nSR, 0); - - DWORD dwChannels; - m_pAEProps->get_SourceChannels(&dwChannels); - - // - //initialize VBRq combo box - // - int k; - SendDlgItemMessage(hwndParent, IDC_COMBO_VBRq, CB_RESETCONTENT, 0, 0); - for (k = 0; k < 10; k++) - SendDlgItemMessage(hwndParent, IDC_COMBO_VBRq, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)szVBRqDesc[k]); - DWORD dwVBRq; - m_pAEProps->get_VariableQ(&dwVBRq); - if (dwVBRq<0) - dwVBRq = 0; - if (dwVBRq>9) - dwVBRq = 9; - m_pAEProps->set_VariableQ(dwVBRq); - SendDlgItemMessage(hwndParent, IDC_COMBO_VBRq, CB_SETCURSEL, dwVBRq, 0); - -////////////////////////////////////// -// initialize CBR selection -////////////////////////////////////// - int nSt; - - SendDlgItemMessage(hwndParent, IDC_COMBO_CBR, CB_RESETCONTENT, 0, 0); - if (dwSampleRate >= 32000) - { - // If target sampling rate is less than 32000, consider - // MPEG 1 audio - nSt = 0; - for (int i = 0; i < 14; i++) - SendDlgItemMessage(hwndParent, IDC_COMBO_CBR, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)szBitRateString[0][i]); - } - else - { - // Consider MPEG 2 / 2.5 audio - nSt = 1; - for (int i = 0; i < 14 ; i++) - SendDlgItemMessage(hwndParent, IDC_COMBO_CBR, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)szBitRateString[1][i]); - } - - DWORD dwBitrate; - m_pAEProps->get_Bitrate(&dwBitrate); - - int nBitrateSel = 0; - // BitRateValue[][i] is in ascending order - // We use this fact. We also know there are 14 bitrate values available. - // We are going to use the closest possible, so we can limit loop with 13 - while (nBitrateSel < 13 && dwBitRateValue[nSt][nBitrateSel] < dwBitrate) - nBitrateSel++; - SendDlgItemMessage(hwndParent, IDC_COMBO_CBR, CB_SETCURSEL, nBitrateSel, 0); - - // check if the specified bitrate is found exactly and correct if not - if (dwBitRateValue[nSt][nBitrateSel] != dwBitrate) - { - dwBitrate = dwBitRateValue[nSt][nBitrateSel]; - // we can change it, because it is independent of any other parameters - // (but depends on some of them!) - m_pAEProps->set_Bitrate(dwBitrate); - } - - // - // Check VBR/CBR radio button - // - DWORD dwVariable; - m_pAEProps->get_Variable(&dwVariable); - CheckRadioButton(hwndParent, IDC_RADIO_CBR, IDC_RADIO_VBR, IDC_RADIO_CBR + dwVariable); - -////////////////////////////////////////////////// -// initialize VBR selection -////////////////////////////////////////////////// - //VBRMIN, VBRMAX - int j, nST; - - SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMIN, CB_RESETCONTENT, 0, 0); - SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMAX, CB_RESETCONTENT, 0, 0); - - if (dwSampleRate >= 32000) - { - nST = 0; - for (j=0; j<14 ;j++) { - SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMIN, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)szBitRateString[0][j]); - SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMAX, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)szBitRateString[0][j]); - } - } - else - { - nST = 1; - for (j = 0; j < 14; j++) - { - SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMIN, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)szBitRateString[1][j]); - SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMAX, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)szBitRateString[1][j]); - } - } - - DWORD dwMin,dwMax; - m_pAEProps->get_VariableMin(&dwMin); - m_pAEProps->get_VariableMax(&dwMax); - - int nVariableMinSel = 0; - int nVariableMaxSel = 0; - - // BitRateValue[][i] is in ascending order - // We use this fact. We also know there are 14 bitrate values available. - // We are going to use the closest possible, so we can limit loop with 13 - while (nVariableMinSel<13 && dwBitRateValue[nST][nVariableMinSel] < dwMin) - nVariableMinSel++; - SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMIN, CB_SETCURSEL, nVariableMinSel, 0); - - while (nVariableMaxSel<13 && dwBitRateValue[nST][nVariableMaxSel] < dwMax) - nVariableMaxSel++; - SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMAX, CB_SETCURSEL, nVariableMaxSel, 0); - - - // check if the specified bitrate is found exactly and correct if not - if (dwBitRateValue[nST][nVariableMinSel] != dwMin) - { - dwMin = dwBitRateValue[nST][nVariableMinSel]; - // we can change it, because it is independent of any other parameters - // (but depends on some of them!) - m_pAEProps->set_VariableMin(dwMin); - } - - // check if the specified bitrate is found exactly and correct if not - if (dwBitRateValue[nST][nVariableMaxSel] != dwMax) - { - dwMax = dwBitRateValue[nST][nVariableMaxSel]; - // we can change it, because it is independent of any other parameters - // (but depends on some of them!) - m_pAEProps->set_VariableMax(dwMax); - } - - // - // initialize checkboxes - // - DWORD dwPES; - m_pAEProps->get_PESOutputEnabled(&dwPES); - - dwPES = 0; - CheckDlgButton(hwndParent, IDC_CHECK_PES, dwPES ? BST_CHECKED : BST_UNCHECKED); - - DWORD dwCRC; - m_pAEProps->get_CRCFlag(&dwCRC); - CheckDlgButton(hwndParent, IDC_CHECK_CRC, dwCRC ? BST_CHECKED : BST_UNCHECKED); - - DWORD dwForceMono; - m_pAEProps->get_ForceMono(&dwForceMono); - CheckDlgButton(hwndParent, IDC_FORCE_MONO, dwForceMono ? BST_CHECKED : BST_UNCHECKED); - - DWORD dwCopyright; - m_pAEProps->get_CopyrightFlag(&dwCopyright); - CheckDlgButton(hwndParent, IDC_CHECK_COPYRIGHT, dwCopyright ? BST_CHECKED : BST_UNCHECKED); - - DWORD dwOriginal; - m_pAEProps->get_OriginalFlag(&dwOriginal); - CheckDlgButton(hwndParent, IDC_CHECK_ORIGINAL, dwOriginal ? BST_CHECKED : BST_UNCHECKED); -} - - -//////////////////////////////////////////////////////////////// -// EnableControls -//////////////////////////////////////////////////////////////// -void CMpegAudEncPropertyPage::EnableControls(HWND hwndParent, bool bEnable) -{ - EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_PES), false);//bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_RADIO_CBR), bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_COMBO_CBR), bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_RADIO_VBR), bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_COMBO_VBRMIN), bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_COMBO_VBRMAX), bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_COPYRIGHT), bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_ORIGINAL), bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_CRC), bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_FORCE_MONO), bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_SLIDER_QUALITY), bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_COMBO_SAMPLE_RATE), bEnable); -} - -// -// SetDirty -// -// notifies the property page site of changes - -void CMpegAudEncPropertyPage::SetDirty() -{ - m_bDirty = TRUE; - if (m_pPageSite) - m_pPageSite->OnStatusChange(PROPPAGESTATUS_DIRTY); -} - diff --git a/platform/win32/msvc/external/lame/dshow/PropPage.h b/platform/win32/msvc/external/lame/dshow/PropPage.h deleted file mode 100644 index fa7fbe92b24..00000000000 --- a/platform/win32/msvc/external/lame/dshow/PropPage.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * LAME MP3 encoder for DirectShow - * Basic property page - * - * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. - * - * 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. - */ - -class CMpegAudEncPropertyPage : public CBasePropertyPage -{ - -public: - static CUnknown *CreateInstance( LPUNKNOWN punk, HRESULT *phr ); - CMpegAudEncPropertyPage( LPUNKNOWN punk, HRESULT *phr ); - - HRESULT OnConnect(IUnknown *pUnknown); - HRESULT OnDisconnect(); - HRESULT OnActivate(); - HRESULT OnDeactivate(); - HRESULT OnApplyChanges(); - BOOL OnReceiveMessage(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam); - -private: - void InitPropertiesDialog(HWND hwndParent); - void EnableControls(HWND hwndParent, bool bEnable); - void SetDirty(void); - - DWORD m_dwBitrate; //constant bit rate - DWORD m_dwVariable; //flag - whether the variable bit rate set - DWORD m_dwMin; //specify a minimum allowed bitrate - DWORD m_dwMax; //specify a maximum allowed bitrate - DWORD m_dwQuality; //encoding quality - DWORD m_dwVBRq; //VBR quality setting (0=highest quality, 9=lowest) - DWORD m_dwSampleRate; - DWORD m_dwChannelMode; - DWORD m_dwCRC; - DWORD m_dwForceMono; - DWORD m_dwCopyright; - DWORD m_dwOriginal; - - HWND m_hwndQuality; //Slider window handle - - int m_srIdx; - - IAudioEncoderProperties *m_pAEProps; -}; diff --git a/platform/win32/msvc/external/lame/dshow/PropPage_adv.cpp b/platform/win32/msvc/external/lame/dshow/PropPage_adv.cpp deleted file mode 100644 index 54e4cbeb1fc..00000000000 --- a/platform/win32/msvc/external/lame/dshow/PropPage_adv.cpp +++ /dev/null @@ -1,367 +0,0 @@ -/* - * LAME MP3 encoder for DirectShow - * Advanced property page - * - * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. - * - * 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 -#include -#include -#include "iaudioprops.h" -#include "mpegac.h" -#include "resource.h" -#include "PropPage_adv.h" -#include "Reg.h" - -#define MPG_MD_STEREO 0 -#define MPG_MD_JOINT_STEREO 1 -#define MPG_MD_DUAL_CHANNEL 2 -#define MPG_MD_MONO 3 - -// Strings which apear in comboboxes -const char *chChMode[4] = { - "Mono", - "Standard stereo", - "Joint stereo", - "Dual channel"}; - -//////////////////////////////////////////////////////////////// -// CreateInstance -//////////////////////////////////////////////////////////////// -CUnknown *CMpegAudEncPropertyPageAdv::CreateInstance( LPUNKNOWN punk, HRESULT *phr ) -{ - CMpegAudEncPropertyPageAdv *pNewObject - = new CMpegAudEncPropertyPageAdv( punk, phr ); - - if( pNewObject == NULL ) - *phr = E_OUTOFMEMORY; - - return pNewObject; -} - -//////////////////////////////////////////////////////////////// -// Constructor -//////////////////////////////////////////////////////////////// -CMpegAudEncPropertyPageAdv::CMpegAudEncPropertyPageAdv(LPUNKNOWN punk, HRESULT *phr) : - CBasePropertyPage(NAME("Encoder Advanced Property Page"), punk, IDD_ADVPROPS, IDS_AUDIO_ADVANCED_TITLE), - m_pAEProps(NULL) -{ - ASSERT(phr); - - InitCommonControls(); -} - -// -// OnConnect -// -// Give us the filter to communicate with -HRESULT CMpegAudEncPropertyPageAdv::OnConnect(IUnknown *pUnknown) -{ - ASSERT(m_pAEProps == NULL); - - // Ask the filter for it's control interface - - HRESULT hr = pUnknown->QueryInterface(IID_IAudioEncoderProperties,(void **)&m_pAEProps); - if (FAILED(hr) || !m_pAEProps) - return E_NOINTERFACE; - - ASSERT(m_pAEProps); - - // Get current filter state -// m_pAEProps->LoadAudioEncoderPropertiesFromRegistry(); - - m_pAEProps->get_EnforceVBRmin(&m_dwEnforceVBRmin); - m_pAEProps->get_VoiceMode(&m_dwVoiceMode); - m_pAEProps->get_KeepAllFreq(&m_dwKeepAllFreq); - m_pAEProps->get_StrictISO(&m_dwStrictISO); - m_pAEProps->get_NoShortBlock(&m_dwNoShortBlock); - m_pAEProps->get_XingTag(&m_dwXingTag); - m_pAEProps->get_ChannelMode(&m_dwChannelMode); - m_pAEProps->get_ForceMS(&m_dwForceMS); - m_pAEProps->get_ModeFixed(&m_dwModeFixed); - m_pAEProps->get_SampleOverlap(&m_dwOverlap); - m_pAEProps->get_SetDuration(&m_dwSetStop); - - return NOERROR; -} - -// -// OnDisconnect -// -// Release the interface - -HRESULT CMpegAudEncPropertyPageAdv::OnDisconnect() -{ - // Release the interface - if (m_pAEProps == NULL) - return E_UNEXPECTED; - - m_pAEProps->set_EnforceVBRmin(m_dwEnforceVBRmin); - m_pAEProps->set_VoiceMode(m_dwVoiceMode); - m_pAEProps->set_KeepAllFreq(m_dwKeepAllFreq); - m_pAEProps->set_StrictISO(m_dwStrictISO); - m_pAEProps->set_NoShortBlock(m_dwNoShortBlock); - m_pAEProps->set_XingTag(m_dwXingTag); - m_pAEProps->set_ChannelMode(m_dwChannelMode); - m_pAEProps->set_ForceMS(m_dwForceMS); - m_pAEProps->set_ModeFixed(m_dwModeFixed); - m_pAEProps->set_SampleOverlap(m_dwOverlap); - m_pAEProps->set_SetDuration(m_dwSetStop); - m_pAEProps->SaveAudioEncoderPropertiesToRegistry(); - - m_pAEProps->Release(); - m_pAEProps = NULL; - - return NOERROR; -} - -// -// OnActivate -// -// Called on dialog creation - -HRESULT CMpegAudEncPropertyPageAdv::OnActivate(void) -{ - InitPropertiesDialog(m_hwnd); - - return NOERROR; -} - -// -// OnDeactivate -// -// Called on dialog destruction - -HRESULT CMpegAudEncPropertyPageAdv::OnDeactivate(void) -{ - return NOERROR; -} - -//////////////////////////////////////////////////////////////// -// OnReceiveMessage - message handler function -//////////////////////////////////////////////////////////////// -BOOL CMpegAudEncPropertyPageAdv::OnReceiveMessage(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam) -{ - switch (uMsg) - { - case WM_COMMAND: - switch (LOWORD(wParam)) - { - case IDC_RADIO_STEREO: - case IDC_RADIO_JSTEREO: - case IDC_RADIO_DUAL: - case IDC_RADIO_MONO: - { - - DWORD dwChannelMode = LOWORD(wParam) - IDC_RADIO_STEREO; - CheckRadioButton(hwnd, IDC_RADIO_STEREO, IDC_RADIO_MONO, LOWORD(wParam)); - - if (dwChannelMode == MPG_MD_JOINT_STEREO) - EnableWindow(GetDlgItem(hwnd,IDC_CHECK_FORCE_MS),TRUE); - else - EnableWindow(GetDlgItem(hwnd,IDC_CHECK_FORCE_MS),FALSE); - - m_pAEProps->set_ChannelMode(dwChannelMode); - SetDirty(); - } - break; - - case IDC_CHECK_ENFORCE_MIN: - m_pAEProps->set_EnforceVBRmin(IsDlgButtonChecked(hwnd, IDC_CHECK_ENFORCE_MIN)); - SetDirty(); - break; - - case IDC_CHECK_VOICE: - m_pAEProps->set_VoiceMode(IsDlgButtonChecked(hwnd, IDC_CHECK_VOICE)); - SetDirty(); - break; - - case IDC_CHECK_KEEP_ALL_FREQ: - m_pAEProps->set_KeepAllFreq(IsDlgButtonChecked(hwnd, IDC_CHECK_KEEP_ALL_FREQ)); - SetDirty(); - break; - - case IDC_CHECK_STRICT_ISO: - m_pAEProps->set_StrictISO(IsDlgButtonChecked(hwnd, IDC_CHECK_STRICT_ISO)); - SetDirty(); - break; - - case IDC_CHECK_DISABLE_SHORT_BLOCK: - m_pAEProps->set_NoShortBlock(IsDlgButtonChecked(hwnd, IDC_CHECK_DISABLE_SHORT_BLOCK)); - SetDirty(); - break; - - case IDC_CHECK_XING_TAG: - m_pAEProps->set_XingTag(IsDlgButtonChecked(hwnd, IDC_CHECK_XING_TAG)); - SetDirty(); - break; - - case IDC_CHECK_FORCE_MS: - m_pAEProps->set_ForceMS(IsDlgButtonChecked(hwnd, IDC_CHECK_FORCE_MS)); - SetDirty(); - break; - - case IDC_CHECK_MODE_FIXED: - m_pAEProps->set_ModeFixed(IsDlgButtonChecked(hwnd, IDC_CHECK_MODE_FIXED)); - SetDirty(); - break; - - case IDC_CHECK_OVERLAP: - m_pAEProps->set_SampleOverlap(IsDlgButtonChecked(hwnd, IDC_CHECK_OVERLAP)); - SetDirty(); - break; - - case IDC_CHECK_STOP: - m_pAEProps->set_SetDuration(IsDlgButtonChecked(hwnd, IDC_CHECK_STOP)); - SetDirty(); - break; - } - - return TRUE; - - case WM_DESTROY: - return TRUE; - - default: - return FALSE; - } - - return TRUE; -} - -// -// OnApplyChanges -// -HRESULT CMpegAudEncPropertyPageAdv::OnApplyChanges() -{ - m_pAEProps->get_EnforceVBRmin(&m_dwEnforceVBRmin); - m_pAEProps->get_VoiceMode(&m_dwVoiceMode); - m_pAEProps->get_KeepAllFreq(&m_dwKeepAllFreq); - m_pAEProps->get_StrictISO(&m_dwStrictISO); - m_pAEProps->get_ChannelMode(&m_dwChannelMode); - m_pAEProps->get_ForceMS(&m_dwForceMS); - m_pAEProps->get_NoShortBlock(&m_dwNoShortBlock); - m_pAEProps->get_XingTag(&m_dwXingTag); - m_pAEProps->get_ModeFixed(&m_dwModeFixed); - m_pAEProps->get_SampleOverlap(&m_dwOverlap); - m_pAEProps->get_SetDuration(&m_dwSetStop); - m_pAEProps->SaveAudioEncoderPropertiesToRegistry(); - - m_pAEProps->ApplyChanges(); - - return S_OK; -} - -// -// Initialize dialogbox controls with proper values -// -void CMpegAudEncPropertyPageAdv::InitPropertiesDialog(HWND hwndParent) -{ - EnableControls(hwndParent, TRUE); - - // - // initialize radio bottons - // - DWORD dwChannelMode; - m_pAEProps->get_ChannelMode(&dwChannelMode); - CheckRadioButton(hwndParent, IDC_RADIO_STEREO, IDC_RADIO_MONO, IDC_RADIO_STEREO + dwChannelMode); - - if (dwChannelMode == MPG_MD_JOINT_STEREO) - EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_FORCE_MS), TRUE); - else - EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_FORCE_MS), FALSE); - - // - // initialize checkboxes - // - DWORD dwEnforceVBRmin; - m_pAEProps->get_EnforceVBRmin(&dwEnforceVBRmin); - CheckDlgButton(hwndParent, IDC_CHECK_ENFORCE_MIN, dwEnforceVBRmin ? BST_CHECKED : BST_UNCHECKED); - - DWORD dwVoiceMode; - m_pAEProps->get_VoiceMode(&dwVoiceMode); - CheckDlgButton(hwndParent, IDC_CHECK_VOICE, dwVoiceMode ? BST_CHECKED : BST_UNCHECKED); - - DWORD dwKeepAllFreq; - m_pAEProps->get_KeepAllFreq(&dwKeepAllFreq); - CheckDlgButton(hwndParent, IDC_CHECK_KEEP_ALL_FREQ, dwKeepAllFreq ? BST_CHECKED : BST_UNCHECKED); - - DWORD dwStrictISO; - m_pAEProps->get_StrictISO(&dwStrictISO); - CheckDlgButton(hwndParent, IDC_CHECK_STRICT_ISO, dwStrictISO ? BST_CHECKED : BST_UNCHECKED); - - DWORD dwNoShortBlock; - m_pAEProps->get_NoShortBlock(&dwNoShortBlock); - CheckDlgButton(hwndParent, IDC_CHECK_DISABLE_SHORT_BLOCK, dwNoShortBlock ? BST_CHECKED : BST_UNCHECKED); - - DWORD dwXingEnabled; - m_pAEProps->get_XingTag(&dwXingEnabled); - CheckDlgButton(hwndParent, IDC_CHECK_XING_TAG, dwXingEnabled ? BST_CHECKED : BST_UNCHECKED); - - DWORD dwForceMS; - m_pAEProps->get_ForceMS(&dwForceMS); - CheckDlgButton(hwndParent, IDC_CHECK_FORCE_MS, dwForceMS ? BST_CHECKED : BST_UNCHECKED); - - DWORD dwModeFixed; - m_pAEProps->get_ModeFixed(&dwModeFixed); - CheckDlgButton(hwndParent, IDC_CHECK_MODE_FIXED, dwModeFixed ? BST_CHECKED : BST_UNCHECKED); - - DWORD dwOverlap; - m_pAEProps->get_SampleOverlap(&dwOverlap); - CheckDlgButton(hwndParent, IDC_CHECK_OVERLAP, dwOverlap ? BST_CHECKED : BST_UNCHECKED); - - DWORD dwStopTime; - m_pAEProps->get_SetDuration(&dwStopTime); - CheckDlgButton(hwndParent, IDC_CHECK_STOP, dwStopTime ? BST_CHECKED : BST_UNCHECKED); -} - - -//////////////////////////////////////////////////////////////// -// EnableControls -//////////////////////////////////////////////////////////////// -void CMpegAudEncPropertyPageAdv::EnableControls(HWND hwndParent, bool bEnable) -{ - EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_ENFORCE_MIN), bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_RADIO_STEREO), bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_RADIO_JSTEREO), bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_RADIO_DUAL), bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_RADIO_MONO), bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_FORCE_MS), bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_VOICE), bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_KEEP_ALL_FREQ), bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_STRICT_ISO), bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_DISABLE_SHORT_BLOCK), bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_XING_TAG), bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_MODE_FIXED), bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_OVERLAP), bEnable); - EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_STOP), bEnable); -} - -// -// SetDirty -// -// notifies the property page site of changes - -void CMpegAudEncPropertyPageAdv::SetDirty() -{ - m_bDirty = TRUE; - if (m_pPageSite) - m_pPageSite->OnStatusChange(PROPPAGESTATUS_DIRTY); -} - diff --git a/platform/win32/msvc/external/lame/dshow/PropPage_adv.h b/platform/win32/msvc/external/lame/dshow/PropPage_adv.h deleted file mode 100644 index 67fabed3394..00000000000 --- a/platform/win32/msvc/external/lame/dshow/PropPage_adv.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * LAME MP3 encoder for DirectShow - * Advanced property page - * - * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. - * - * 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. - */ - -class CMpegAudEncPropertyPageAdv : public CBasePropertyPage -{ - -public: - static CUnknown *CreateInstance( LPUNKNOWN punk, HRESULT *phr ); - CMpegAudEncPropertyPageAdv( LPUNKNOWN punk, HRESULT *phr ); - - HRESULT OnConnect(IUnknown *pUnknown); - HRESULT OnDisconnect(); - HRESULT OnActivate(); - HRESULT OnDeactivate(); - HRESULT OnApplyChanges(); - BOOL OnReceiveMessage(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam); - -private: - void InitPropertiesDialog(HWND hwndParent); - void EnableControls(HWND hwndParent, bool bEnable); - void SetDirty(void); - - DWORD m_dwEnforceVBRmin; - DWORD m_dwVoiceMode; - DWORD m_dwKeepAllFreq; - DWORD m_dwStrictISO; - DWORD m_dwNoShortBlock; - DWORD m_dwXingTag; - DWORD m_dwChannelMode; - DWORD m_dwForceMS; - DWORD m_dwModeFixed; - DWORD m_dwOverlap; - DWORD m_dwSetStop; - - IAudioEncoderProperties *m_pAEProps; -}; diff --git a/platform/win32/msvc/external/lame/dshow/Property.rc b/platform/win32/msvc/external/lame/dshow/Property.rc deleted file mode 100644 index 3ada6f1dd51..00000000000 --- a/platform/win32/msvc/external/lame/dshow/Property.rc +++ /dev/null @@ -1,272 +0,0 @@ -//Microsoft Developer Studio generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#define APSTUDIO_HIDDEN_SYMBOLS -#include "windows.h" -#undef APSTUDIO_HIDDEN_SYMBOLS -#include "resource.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Russisch resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -#ifdef _WIN32 -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE DISCARDABLE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE DISCARDABLE -BEGIN - "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" - "#include ""windows.h""\r\n" - "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" - "#include ""resource.h""\r\n" - "\0" -END - -3 TEXTINCLUDE DISCARDABLE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - -#endif // Russisch resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// Englisch (USA) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_AUDIOENCPROPS DIALOGEX 0, 0, 228, 121 -STYLE WS_CHILD | WS_VISIBLE -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - CONTROL "Constant Bit Rate",IDC_RADIO_CBR,"Button", - BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,4,2,71,10 - CONTROL "Variable Bit Rate",IDC_RADIO_VBR,"Button", - BS_AUTORADIOBUTTON,4,31,69,10 - COMBOBOX IDC_COMBO_CBR,52,14,76,92,CBS_DROPDOWNLIST | WS_VSCROLL | - WS_GROUP | WS_TABSTOP - COMBOBOX IDC_COMBO_VBRMIN,52,44,76,85,CBS_DROPDOWNLIST | - WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_COMBO_VBRMAX,52,62,76,86,CBS_DROPDOWNLIST | - CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP, - WS_EX_TRANSPARENT - CONTROL "Copyright",IDC_CHECK_COPYRIGHT,"Button",BS_AUTOCHECKBOX | - WS_GROUP | WS_TABSTOP,151,39,45,10 - CONTROL "Original/Copy",IDC_CHECK_ORIGINAL,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,151,51,59,10 - CONTROL "CRC Protected",IDC_CHECK_CRC,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,151,63,63,10 - CONTROL "Slider1",IDC_SLIDER_QUALITY,"msctls_trackbar32", - TBS_BOTH | TBS_NOTICKS | WS_GROUP | WS_TABSTOP,66,101,96, - 15 - LTEXT "kbps",IDC_STATIC,4,16,22,8 - CONTROL "Min",IDC_STATIC,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,4, - 46,13,11 - LTEXT "Max",IDC_STATIC,4,64,16,11 - LTEXT "Encoding Quality",IDC_STATIC,4,105,54,8,NOT WS_GROUP - LTEXT "0",IDC_TEXT_QUALITY,170,104,47,10 - COMBOBOX IDC_COMBO_SAMPLE_RATE,151,14,59,104,CBS_DROPDOWNLIST | - WS_VSCROLL | WS_TABSTOP - CONTROL "Target Sample Rate",IDC_STATIC,"Static", - SS_LEFTNOWORDWRAP | NOT WS_VISIBLE | WS_GROUP,152,2,66,8 - COMBOBOX IDC_COMBO_VBRq,52,80,76,90,CBS_DROPDOWNLIST | WS_VSCROLL | - WS_TABSTOP - LTEXT "VBR Quality",IDC_STATIC,4,82,40,8 - CONTROL "Force Mono",IDC_FORCE_MONO,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,151,75,54,10 -END - -IDD_ADVPROPS DIALOG DISCARDABLE 0, 0, 228, 129 -STYLE WS_CHILD | WS_VISIBLE -FONT 8, "MS Sans Serif" -BEGIN - CONTROL "Mono",IDC_RADIO_MONO,"Button",BS_AUTORADIOBUTTON | - WS_GROUP | WS_TABSTOP,109,93,34,10 - CONTROL "Standard stereo",IDC_RADIO_STEREO,"Button", - BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,109,36,67,11 - CONTROL "Joint stereo",IDC_RADIO_JSTEREO,"Button", - BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,109,51,60,10 - GROUPBOX "Mode Selection",IDC_STATIC,103,26,118,82,BS_CENTER | - WS_GROUP - CONTROL "Strictly enforce VBR min bitrate",IDC_CHECK_ENFORCE_MIN, - "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,8,113, - 10 - CONTROL "Voice encoding mode",IDC_CHECK_VOICE,"Button", - BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,21,85,10 - CONTROL "Keep all frequencies",IDC_CHECK_KEEP_ALL_FREQ,"Button", - BS_AUTOCHECKBOX | WS_DISABLED | WS_GROUP | WS_TABSTOP,7, - 34,80,10 - CONTROL "Strict ISO compliance",IDC_CHECK_STRICT_ISO,"Button", - BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,47,84,10 - CONTROL "Disable short blocks",IDC_CHECK_DISABLE_SHORT_BLOCK, - "Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_GROUP | - WS_TABSTOP,7,60,79,10 - CONTROL "Enable Xing VBR tag",IDC_CHECK_XING_TAG,"Button", - BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,73,83,10 - CONTROL "Dual channel",IDC_RADIO_DUAL,"Button", - BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,109,79,58,10 - CONTROL "Forced mid / side stereo",IDC_CHECK_FORCE_MS,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,122,65,92,10 - CONTROL "Mode Fixed",IDC_CHECK_MODE_FIXED,"Button", - BS_AUTOCHECKBOX | WS_DISABLED | WS_GROUP | WS_TABSTOP,7, - 86,53,10 - CONTROL "Allow sample overlap",IDC_CHECK_OVERLAP,"Button", - BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,99,82,10 - CONTROL "Set sample stop time",IDC_CHECK_STOP,"Button", - BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,112,81,10 -END - -IDD_ABOUT DIALOG DISCARDABLE 0, 0, 228, 121 -STYLE WS_CHILD -FONT 8, "MS Sans Serif" -BEGIN - LTEXT "LAME Ain't MP3 Encoder (X.XX engine)",IDC_LAME_VER,7,8, - 208,8 - LTEXT "LAME Project Homepage: http://www.mp3dev.org", - IDC_LAME_URL,7,19,192,8 - EDITTEXT IDC_LAME_LA,7,31,214,83,ES_MULTILINE | ES_AUTOVSCROLL | - ES_AUTOHSCROLL | ES_READONLY | WS_VSCROLL -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO DISCARDABLE -BEGIN - IDD_AUDIOENCPROPS, DIALOG - BEGIN - RIGHTMARGIN, 223 - BOTTOMMARGIN, 118 - END - - IDD_ADVPROPS, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 221 - TOPMARGIN, 5 - BOTTOMMARGIN, 121 - END - - IDD_ABOUT, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 221 - TOPMARGIN, 7 - BOTTOMMARGIN, 114 - END -END -#endif // APSTUDIO_INVOKED - - -#ifndef _MAC -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,61,24875 - PRODUCTVERSION 1,0,61,24875 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x40004L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Comments", "LAME DirectShow Filter\0" - VALUE "CompanyName", "\0" - VALUE "FileDescription", "LAME Audio Encoder\0" - VALUE "FileVersion", "1, 0, 61, 90411\0" - VALUE "InternalName", "LAME Audio Encoder\0" - VALUE "LegalCopyright", "Copyright © 2005 Elecard Ltd.\0" - VALUE "LegalTrademarks", "\0" - VALUE "OriginalFilename", "lame.ax\0" - VALUE "PrivateBuild", "\0" - VALUE "ProductName", "LAME Audio Encoder\0" - VALUE "ProductVersion", "1, 0, 61, 90411\0" - VALUE "SpecialBuild", "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END - -#endif // !_MAC - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE DISCARDABLE -BEGIN - IDS_AUDIO_PROPS_TITLE "MPEG Layer III Audio Encoder" - IDS_AUDIO_ADVANCED_TITLE "Advanced" - IDS_ABOUT "About" -END - -#endif // Englisch (USA) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/platform/win32/msvc/external/lame/dshow/README b/platform/win32/msvc/external/lame/dshow/README deleted file mode 100644 index 933d1fea077..00000000000 --- a/platform/win32/msvc/external/lame/dshow/README +++ /dev/null @@ -1,70 +0,0 @@ -LAME DirectShow Filter -Version 1.0 - -Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. - -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. - -This library is a Microsoft(R) DirectShow(R) wrapper filter for -LAME library. It adds DirectShow interface to the library and two -property pages so you can tune some encoding parameters. - -We are interested to hear from you, when you use this package -as part of another project. - -Filter Homepage http://www.elecard.com/products/layer3encoder.shtml - -Vitaly Ivanov vitaly.ivanov@elecard.net.ru - - - -NOTE: -1st: build dx9sdk/Samples/DShow/BaseClasses Project -2nd: copy resulting strmbase.lib (or strmbasd.lib for debug support) - into LAME's DShow folder -3rd: add the BaseClasses directory path to the Visual Studio - Include and Library directory search path lists - i.e. for Visual Studio 6 choose: - - Tools -> Options -> Directories - -4th: build LAME .DLL builds (if you didn't yet) -5th: build LAME DShow Filter - - -TROUBLESHOOTING FAQ: -Q. When trying to open a workspace file (.dsw), I get an "empty" workspace -(i.e. there are no source files listed) and/or when trying to open a project -file (.dsp), I get a "This makefile was not generated by Developer Studio" -error. - -A. Often, this can be caused by having UNIX line breaks (LF) in the -.dsw and .dsp files, as opposed to Windows line breaks (CR\LF). It -is interesting to note that .dsw and .dsp files are just text files; -you can open them up in any text editor. If you open the .dsw and -.dsp files in a text editor that can't handle UNIX line breaks -(namely Notepad) you will probably see big, black squares at -the end of lines. You can "fix" this error by following this procedure. - -1) Do NOT let Microsoft Visual C++ attempt to fix the problem! Press "No" when prompted. - -2) Open the .dsw and .dsp files in a text editor that understands UNIX line breaks. -WordPad is one and it is available with most copies of Windows. - -3) Once open, simply re-save the file (In WordPad, make sure you set the Save -As type to "Text Document"). All UNIX line breaks should then be automatically -converted to Windows line breaks. - diff --git a/platform/win32/msvc/external/lame/dshow/REG.CPP b/platform/win32/msvc/external/lame/dshow/REG.CPP deleted file mode 100644 index 642f3c5d4a5..00000000000 --- a/platform/win32/msvc/external/lame/dshow/REG.CPP +++ /dev/null @@ -1,289 +0,0 @@ -/* - * LAME MP3 encoder for DirectShow - * Registry calls handling class - * - * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. - * - * 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 - -#include "reg.h" - -namespace Lame -{ - -CRegKey::CRegKey(void) -{ - m_hRootKey = NULL; - m_name[0] = 0; - m_hKey = NULL; -} - - -CRegKey::CRegKey(HKEY rt, PTSTR pName) -{ - m_hRootKey = rt; - m_hKey = NULL; - if(pName) - { - lstrcpy(m_name, pName); - Open(m_hRootKey, m_name); - } - else - m_name[0] = 0; -} - - -CRegKey::~CRegKey(void) -{ - Close(); -} - - - -BOOL CRegKey::Open(HKEY rootKey, PTSTR pName) -{ - if(m_hKey) - Close(); - - m_hRootKey = rootKey; - if(pName) - { - lstrcpy(m_name, pName); - if(RegOpenKeyEx(m_hRootKey, m_name, 0, KEY_ALL_ACCESS, &m_hKey) != ERROR_SUCCESS) - { - m_hKey = NULL; - return FALSE; - } - } - else - { - m_name[0] = 0; - m_hKey = m_hRootKey; - } - - return TRUE; -} - - -BOOL CRegKey::Create(HKEY rootKey, PTSTR pName) -{ - if(m_hKey) - Close(); - - m_hRootKey = rootKey; - if(pName) - { - lstrcpy(m_name, pName); - if(RegCreateKeyEx(m_hRootKey, pName, NULL, - TEXT(""), REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, - &m_hKey, NULL) != ERROR_SUCCESS) - { - - m_hKey = NULL; - return FALSE; - } - } - else - { - m_name[0] = 0; - } - m_hRootKey = m_hKey; - - return TRUE; -} - - -BOOL CRegKey::Open(PTSTR an) -{ - TCHAR achName[MAX_PATH]; - - if(m_hKey) - Close(); - - lstrcpy(achName, m_name); - if(an) - lstrcat(achName, an); - - if(RegOpenKeyEx(m_hRootKey, achName, 0, KEY_ALL_ACCESS, &m_hKey) != ERROR_SUCCESS) - { - m_hKey = NULL; - return FALSE; - } - - return TRUE; -} - - -BOOL CRegKey::Create(PTSTR an) -{ - TCHAR achName[MAX_PATH]; - - if(m_hKey) - Close(); - - lstrcpy(achName, m_name); - if(an) - lstrcat(achName, an); - - if(RegCreateKeyEx(m_hRootKey, achName, NULL, - TEXT(""), REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, - &m_hKey, NULL) != ERROR_SUCCESS) - { - - m_hKey = NULL; - return FALSE; - } - - return TRUE; -} - - -BOOL CRegKey::Close(void) -{ - if(m_hKey && m_hKey != m_hRootKey) - RegCloseKey(m_hKey); - - m_hKey = 0; - return TRUE; -} - -BOOL CRegKey::getFlag(PTSTR valuename, BOOL bDefault) -{ - if(!m_hKey) - return bDefault; - - DWORD cbData; - DWORD dwData; - DWORD dwType; - - cbData = sizeof(dwData); - if(RegQueryValueEx(m_hKey, valuename, NULL, &dwType, (PBYTE)&dwData, &cbData) == ERROR_SUCCESS) - { - if(dwType == REG_DWORD) - return (dwData) ? TRUE : FALSE; - } - return bDefault; -} - - -void CRegKey::setFlag(PTSTR valuename, BOOL bValue, BOOL bDefault) -{ - if(getFlag(valuename, bDefault) == bValue ) - return; - - RegSetValueEx(m_hKey, valuename, 0, REG_DWORD, (PBYTE)&bValue, sizeof(bValue)); -} - - -void CRegKey::setFlag(PTSTR valuename, BOOL bValue) -{ - RegSetValueEx(m_hKey, valuename, 0, REG_DWORD, (PBYTE)&bValue, sizeof(bValue)); -} - - -DWORD CRegKey::getDWORD(PTSTR valuename, DWORD bDefault) -{ - DWORD dwData; - DWORD cbData; - DWORD dwType; - - if(!m_hKey) - return bDefault; - - cbData = sizeof(dwData); - if(RegQueryValueEx(m_hKey, valuename, NULL, &dwType, (PBYTE)&dwData, &cbData) == ERROR_SUCCESS) { - if(dwType == REG_DWORD) - { - return (UINT)dwData; - } - } - - return bDefault; -} - - -void CRegKey::setDWORD(PTSTR valuename, DWORD dwValue, DWORD dwDefault) -{ - DWORD dwData = dwValue; - - if(getDWORD(valuename, dwDefault) == dwValue) - return; - - RegSetValueEx(m_hKey, valuename, 0, REG_DWORD, (PBYTE)&dwData, sizeof(dwData)); -} - - -void CRegKey::setDWORD(PTSTR valuename, DWORD dwValue) -{ - DWORD dwData = dwValue; - RegSetValueEx(m_hKey, valuename, 0, REG_DWORD, (PBYTE)&dwData, sizeof(dwData)); -} - - -DWORD CRegKey::getString(PTSTR valuename, PTSTR pDefault, PTSTR pResult, int cbSize) -{ - DWORD dwType; - - cbSize *= sizeof(TCHAR); // for unicode strings - - if(m_hKey) - { - if(RegQueryValueEx(m_hKey, valuename, NULL, &dwType, (LPBYTE)pResult, (LPDWORD)&cbSize) == ERROR_SUCCESS) - { - if(dwType == REG_SZ) - { - return(cbSize - 1); - } - } - } - lstrcpy(pResult, pDefault); - return lstrlen(pDefault); -} - - -void CRegKey::setString(PTSTR valuename, PTSTR pData) -{ - RegSetValueEx(m_hKey, valuename, 0, REG_SZ, (LPBYTE)pData, (lstrlen(pData) + 1)*sizeof(TCHAR)); -} - - -DWORD CRegKey::getBinary(PTSTR valuename, PVOID pDefault, PVOID pResult, int cbSize) -{ - DWORD dwType; - - if(RegQueryValueEx(m_hKey, valuename, NULL, &dwType, (LPBYTE)pResult, (LPDWORD)&cbSize) == ERROR_SUCCESS) - { - if(dwType == REG_BINARY) - { - return cbSize; - } - } - - memmove(pResult, pDefault, cbSize); - return cbSize; -} - - -DWORD CRegKey::setBinary(PTSTR valuename, PVOID pData, int cbSize) -{ - RegSetValueEx(m_hKey, valuename, 0, REG_BINARY, (LPBYTE)pData, cbSize); - return cbSize; -} - -} // namespace Lame diff --git a/platform/win32/msvc/external/lame/dshow/REG.H b/platform/win32/msvc/external/lame/dshow/REG.H deleted file mode 100644 index e611eed478b..00000000000 --- a/platform/win32/msvc/external/lame/dshow/REG.H +++ /dev/null @@ -1,92 +0,0 @@ -/* - * LAME MP3 encoder for DirectShow - * Registry calls handling class - * - * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. - * - * 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 __REG__ -#define __REG__ - -namespace Lame -{ -class CRegKey -{ -protected: - TCHAR m_name[MAX_PATH]; - HKEY m_hKey; - HKEY m_hRootKey; -public: - CRegKey(void); - CRegKey(HKEY rootKey, PTSTR pName); - ~CRegKey(void); - - BOOL Open(HKEY rootKey, PTSTR pName); - BOOL Create(HKEY rootKey, PTSTR pName); - BOOL Open(PTSTR an = NULL); - BOOL Create(PTSTR an = NULL); - BOOL Close(void); - - operator HKEY () const { return m_hKey; }; - - BOOL getFlag(PTSTR valuename, BOOL bDefault); - void setFlag(PTSTR valuename, BOOL bValue, BOOL bDefault); - void setFlag(PTSTR valuename, BOOL bValue); - DWORD getDWORD(PTSTR valuename, DWORD bDefault); - void setDWORD(PTSTR valuename, DWORD dwValue); - void setDWORD(PTSTR valuename, DWORD dwValue, DWORD dwDefault); - DWORD getString(PTSTR valuename, PTSTR pDefault, PTSTR pResult, int cbSize); - void setString(PTSTR valuename, PTSTR pData); - DWORD getBinary(PTSTR valuename, PVOID pDefault, PVOID pResult, int cbSize); - DWORD setBinary(PTSTR valuename, PVOID pData, int cbSize); -}; - -class CRegEnumKey -{ -public: - CRegEnumKey(HKEY hKey) - { - m_hKey = hKey; - m_dwIndex = 0; - } - - ~CRegEnumKey() - { - } - - LONG Next(LPTSTR pszStr, DWORD cbName) - { - FILETIME ftLastWriteTime; - LONG lRet = RegEnumKeyEx(m_hKey, m_dwIndex, pszStr, - &cbName, NULL, NULL, NULL, &ftLastWriteTime); - - m_dwIndex++; - return lRet; - } - - - void Reset(void) - { - m_dwIndex = 0; - } -protected: - HKEY m_hKey; - DWORD m_dwIndex; -}; -} -#endif // __REG__ diff --git a/platform/win32/msvc/external/lame/dshow/UIDS.H b/platform/win32/msvc/external/lame/dshow/UIDS.H deleted file mode 100644 index 8e926312fe3..00000000000 --- a/platform/win32/msvc/external/lame/dshow/UIDS.H +++ /dev/null @@ -1,41 +0,0 @@ -/* - * LAME MP3 encoder for DirectShow - * CLSIDs of the filter and property pages - * - * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. - * - * 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. - */ - -// {b8d27088-df5f-4b7c-98dc-0e91a1696286} -DEFINE_GUID(CLSID_LAMEDShowFilter, -0xb8d27088, 0xff5f, 0x4b7c, 0x98, 0xdc, 0x0e, 0x91, 0xa1, 0x69, 0x62, 0x86); - - -// {b8d27089-df5f-4b7c-98dc-0e91a1696286} -DEFINE_GUID(CLSID_LAMEDShow_PropertyPage, -0xb8d27089, 0xff5f, 0x4b7c, 0x98, 0xdc, 0x0e, 0x91, 0xa1, 0x69, 0x62, 0x86); - -// {b8d2708a-df5f-4b7c-98dc-0e91a1696286} -DEFINE_GUID(CLSID_LAMEDShow_PropertyPageAdv, -0xb8d2708a, 0xff5f, 0x4b7c, 0x98, 0xdc, 0x0e, 0x91, 0xa1, 0x69, 0x62, 0x86); - -// {FE69EDD1-04CB-11d5-994A-000021D1FE2F} -DEFINE_GUID(CLSID_LAMEDShow_About, -0xfe69edd1, 0xf4cb, 0x11d5, 0x99, 0x4a, 0x0, 0x0, 0x21, 0xd1, 0xfe, 0x2f); - -DEFINE_GUID(MEDIASUBTYPE_MP3, -0x00000055, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71); \ No newline at end of file diff --git a/platform/win32/msvc/external/lame/dshow/aboutprp.cpp b/platform/win32/msvc/external/lame/dshow/aboutprp.cpp deleted file mode 100644 index 282ca26e35e..00000000000 --- a/platform/win32/msvc/external/lame/dshow/aboutprp.cpp +++ /dev/null @@ -1,195 +0,0 @@ -/* - * LAME MP3 encoder for DirectShow - * About property page - * - * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. - * - * 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 -#include -#include -#include -#include "iaudioprops.h" -#include "aboutprp.h" -#include "mpegac.h" -#include "resource.h" -#include "Reg.h" -#include - -// ------------------------------------------------------------------------- -// CMAEAbout -// ------------------------------------------------------------------------- - - -CHAR lpszText[] = "This library is free software; you can redistribute it \r\n" - "and/or modify it under the terms of the GNU \r\n" - "Library General Public License\r\n" - "as published by the Free Software Foundation;\r\n" - "either version 2 of the License,\r\n" - "or (at your option) any later version.\r\n" - "\r\n" - "This library is distributed in the hope that it will be useful,\r\n" - "but WITHOUT ANY WARRANTY;\r\n" - "without even the implied warranty of MERCHANTABILITY or \r\n" - "FITNESS FOR A PARTICULAR PURPOSE. See the GNU \r\n" - "Library General Public License for more details.\r\n" - "\r\n" - "You should have received a copy of the GNU\r\n" - "Library General Public License\r\n" - "along with this library; if not, write to the\r\n" - "Free Software Foundation,\r\n" - "Inc., 59 Temple Place - Suite 330,\r\n" - "Boston, MA 02111-1307, USA.\r\n"; - -// -// CreateInstance -// -CUnknown * WINAPI CMAEAbout::CreateInstance(LPUNKNOWN lpunk, HRESULT *phr) -{ - CUnknown *punk = new CMAEAbout(lpunk, phr); - if (punk == NULL) { - *phr = E_OUTOFMEMORY; - } - - return punk; -} - - -// -// Constructor -// -// Creaete a Property page object for the MPEG options -CMAEAbout::CMAEAbout(LPUNKNOWN lpunk, HRESULT *phr) - : CBasePropertyPage(NAME("About LAME Ain't MP3 Encoder"), lpunk, - IDD_ABOUT,IDS_ABOUT) - , m_fWindowInactive(TRUE) -{ - ASSERT(phr); - -// InitCommonControls(); -} - -// -// OnConnect -// -// Give us the filter to communicate with - -HRESULT CMAEAbout::OnConnect(IUnknown *pUnknown) -{ - return NOERROR; -} - - -// -// OnDisconnect -// -// Release the interface - -HRESULT CMAEAbout::OnDisconnect() -{ - // Release the interface - - return NOERROR; -} - - -// -// OnActivate -// -// Called on dialog creation - -HRESULT CMAEAbout::OnActivate(void) -{ - // Add text to the window. - m_fWindowInactive = FALSE; - SendDlgItemMessage(m_hwnd, IDC_LAME_LA, WM_SETTEXT, 0, (LPARAM)lpszText); - - - CHAR strbuf[250]; -#pragma warning(push) -#pragma warning(disable: 4995) - sprintf(strbuf, "LAME Encoder Version %s", get_lame_version()); - SendDlgItemMessage(m_hwnd, IDC_LAME_VER, WM_SETTEXT, 0, (LPARAM)strbuf); - - sprintf(strbuf, "LAME Project Homepage: %s", get_lame_url()); - SendDlgItemMessage(m_hwnd, IDC_LAME_URL, WM_SETTEXT, 0, (LPARAM)strbuf); -#pragma warning(pop) - return NOERROR; -} - -// -// OnDeactivate -// -// Called on dialog destruction - -HRESULT CMAEAbout::OnDeactivate(void) -{ - m_fWindowInactive = TRUE; - return NOERROR; -} - - -// -// OnApplyChanges -// -// User pressed the Apply button, remember the current settings - -HRESULT CMAEAbout::OnApplyChanges(void) -{ - return NOERROR; -} - - -// -// OnReceiveMessages -// -// Handles the messages for our property window - -BOOL CMAEAbout::OnReceiveMessage( HWND hwnd - , UINT uMsg - , WPARAM wParam - , LPARAM lParam) -{ - if (m_fWindowInactive) - return FALSE; - - switch (uMsg) - { - case WM_DESTROY: - return TRUE; - - default: - return FALSE; - } - - return TRUE; -} - -// -// SetDirty -// -// notifies the property page site of changes - -void CMAEAbout::SetDirty() -{ - m_bDirty = TRUE; - - if (m_pPageSite) - m_pPageSite->OnStatusChange(PROPPAGESTATUS_DIRTY); -} - diff --git a/platform/win32/msvc/external/lame/dshow/aboutprp.h b/platform/win32/msvc/external/lame/dshow/aboutprp.h deleted file mode 100644 index 664b50e8afa..00000000000 --- a/platform/win32/msvc/external/lame/dshow/aboutprp.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * LAME MP3 encoder for DirectShow - * About property page - * - * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. - * - * 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. - */ - -class CMAEAbout: public CBasePropertyPage -{ -public: - - CMAEAbout(LPUNKNOWN lpUnk, HRESULT *phr); - static CUnknown * WINAPI CreateInstance(LPUNKNOWN lpunk, HRESULT *phr); - - HRESULT OnActivate(); - HRESULT OnConnect(IUnknown *pUnknown); - HRESULT OnDisconnect(); - HRESULT OnDeactivate(); - HRESULT OnApplyChanges(); - BOOL OnReceiveMessage(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam); - -private: - void SetDirty(void); - - BOOL m_fWindowInactive; -}; diff --git a/platform/win32/msvc/external/lame/dshow/elogo.ico b/platform/win32/msvc/external/lame/dshow/elogo.ico deleted file mode 100644 index 1eae73d7137..00000000000 Binary files a/platform/win32/msvc/external/lame/dshow/elogo.ico and /dev/null differ diff --git a/platform/win32/msvc/external/lame/dshow/iaudioprops.h b/platform/win32/msvc/external/lame/dshow/iaudioprops.h deleted file mode 100644 index 481f5e05e08..00000000000 --- a/platform/win32/msvc/external/lame/dshow/iaudioprops.h +++ /dev/null @@ -1,273 +0,0 @@ -/* - * LAME MP3 encoder for DirectShow - * Interface definition - * - * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. - * - * 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. - */ - -// A custom interface to allow the user to modify audio -// encoder properties -#ifndef __IAUDIOPROPERTIES__ -#define __IAUDIOPROPERTIES__ -#ifdef __cplusplus -extern "C" { -#endif - // {ca7e9ef0-1cbe-11d3-8d29-00a0c94bbfee} - DEFINE_GUID(IID_IAudioEncoderProperties, - 0xca7e9ef0, 0x1cbe, 0x11d3, 0x8d, 0x29, 0x00, 0xa0, 0xc9, 0x4b, 0xbf, 0xee); - // - // Configuring MPEG audio encoder parameters with unspecified - // input stream type may lead to misbehaviour and confusing - // results. In most cases the specified parameters will be - // overridden by defaults for the input media type. - // To archive proper results use this interface on the - // audio encoder filter with input pin connected to the valid - // source. - // - DECLARE_INTERFACE_(IAudioEncoderProperties, IUnknown) - { - // Is PES output enabled? Return TRUE or FALSE - STDMETHOD(get_PESOutputEnabled) (THIS_ - DWORD *dwEnabled - ) PURE; - // Enable/disable PES output - STDMETHOD(set_PESOutputEnabled) (THIS_ - DWORD dwEnabled - ) PURE; - // Get target compression bitrate in Kbits/s - STDMETHOD(get_Bitrate) (THIS_ - DWORD *dwBitrate - ) PURE; - // Set target compression bitrate in Kbits/s - // Not all numbers available! See spec for details! - STDMETHOD(set_Bitrate) (THIS_ - DWORD dwBitrate - ) PURE; - // Get variable bitrate flag - STDMETHOD(get_Variable) (THIS_ - DWORD *dwVariable - ) PURE; - // Set variable bitrate flag - STDMETHOD(set_Variable) (THIS_ - DWORD dwVariable - ) PURE; - // Get variable bitrate in Kbits/s - STDMETHOD(get_VariableMin) (THIS_ - DWORD *dwmin - ) PURE; - // Set variable bitrate in Kbits/s - // Not all numbers available! See spec for details! - STDMETHOD(set_VariableMin) (THIS_ - DWORD dwmin - ) PURE; - // Get variable bitrate in Kbits/s - STDMETHOD(get_VariableMax) (THIS_ - DWORD *dwmax - ) PURE; - // Set variable bitrate in Kbits/s - // Not all numbers available! See spec for details! - STDMETHOD(set_VariableMax) (THIS_ - DWORD dwmax - ) PURE; - // Get compression quality - STDMETHOD(get_Quality) (THIS_ - DWORD *dwQuality - ) PURE; - // Set compression quality - // Not all numbers available! See spec for details! - STDMETHOD(set_Quality) (THIS_ - DWORD dwQuality - ) PURE; - // Get VBR quality - STDMETHOD(get_VariableQ) (THIS_ - DWORD *dwVBRq - ) PURE; - // Set VBR quality - // Not all numbers available! See spec for details! - STDMETHOD(set_VariableQ) (THIS_ - DWORD dwVBRq - ) PURE; - // Get source sample rate. Return E_FAIL if input pin - // in not connected. - STDMETHOD(get_SourceSampleRate) (THIS_ - DWORD *dwSampleRate - ) PURE; - // Get source number of channels. Return E_FAIL if - // input pin is not connected. - STDMETHOD(get_SourceChannels) (THIS_ - DWORD *dwChannels - ) PURE; - // Get sample rate for compressed audio bitstream - STDMETHOD(get_SampleRate) (THIS_ - DWORD *dwSampleRate - ) PURE; - // Set sample rate. See genaudio spec for details - STDMETHOD(set_SampleRate) (THIS_ - DWORD dwSampleRate - ) PURE; - // Get channel mode. See genaudio.h for details - STDMETHOD(get_ChannelMode) (THIS_ - DWORD *dwChannelMode - ) PURE; - // Set channel mode - STDMETHOD(set_ChannelMode) (THIS_ - DWORD dwChannelMode - ) PURE; - // Is CRC enabled? - STDMETHOD(get_CRCFlag) (THIS_ - DWORD *dwFlag - ) PURE; - // Enable/disable CRC - STDMETHOD(set_CRCFlag) (THIS_ - DWORD dwFlag - ) PURE; - // Force mono - STDMETHOD(get_ForceMono) (THIS_ - DWORD *dwFlag - ) PURE; - // Force mono - STDMETHOD(set_ForceMono) (THIS_ - DWORD dwFlag - ) PURE; - // Set duration - STDMETHOD(get_SetDuration) (THIS_ - DWORD *dwFlag - ) PURE; - // Set duration - STDMETHOD(set_SetDuration) (THIS_ - DWORD dwFlag - ) PURE; - // Control 'original' flag - STDMETHOD(get_OriginalFlag) (THIS_ - DWORD *dwFlag - ) PURE; - STDMETHOD(set_OriginalFlag) (THIS_ - DWORD dwFlag - ) PURE; - // Control 'copyright' flag - STDMETHOD(get_CopyrightFlag) (THIS_ - DWORD *dwFlag - ) PURE; - STDMETHOD(set_CopyrightFlag) (THIS_ - DWORD dwFlag - ) PURE; - // Control 'Enforce VBR Minimum bitrate' flag - STDMETHOD(get_EnforceVBRmin) (THIS_ - DWORD *dwFlag - ) PURE; - STDMETHOD(set_EnforceVBRmin) (THIS_ - DWORD dwFlag - ) PURE; - // Control 'Voice' flag - STDMETHOD(get_VoiceMode) (THIS_ - DWORD *dwFlag - ) PURE; - STDMETHOD(set_VoiceMode) (THIS_ - DWORD dwFlag - ) PURE; - // Control 'Keep All Frequencies' flag - STDMETHOD(get_KeepAllFreq) (THIS_ - DWORD *dwFlag - ) PURE; - STDMETHOD(set_KeepAllFreq) (THIS_ - DWORD dwFlag - ) PURE; - // Control 'Strict ISO complience' flag - STDMETHOD(get_StrictISO) (THIS_ - DWORD *dwFlag - ) PURE; - STDMETHOD(set_StrictISO) (THIS_ - DWORD dwFlag - ) PURE; - // Control 'Disable short block' flag - STDMETHOD(get_NoShortBlock) (THIS_ - DWORD *dwDisable - ) PURE; - STDMETHOD(set_NoShortBlock) (THIS_ - DWORD dwDisable - ) PURE; - // Control 'Xing VBR Tag' flag - STDMETHOD(get_XingTag) (THIS_ - DWORD *dwXingTag - ) PURE; - STDMETHOD(set_XingTag) (THIS_ - DWORD dwXingTag - ) PURE; - // Control 'Forced mid/ side stereo' flag - STDMETHOD(get_ForceMS) (THIS_ - DWORD *dwFlag - ) PURE; - STDMETHOD(set_ForceMS) (THIS_ - DWORD dwFlag - ) PURE; - // Control 'ModeFixed' flag - STDMETHOD(get_ModeFixed) (THIS_ - DWORD *dwFlag - ) PURE; - STDMETHOD(set_ModeFixed) (THIS_ - DWORD dwFlag - ) PURE; - - //Receive the block of encoder - //configuration parametres - STDMETHOD(get_ParameterBlockSize) (THIS_ - BYTE *pcBlock, DWORD *pdwSize - ) PURE; - // Set encoder configuration parametres - STDMETHOD(set_ParameterBlockSize) (THIS_ - BYTE *pcBlock, DWORD dwSize - ) PURE; - // Set default audio encoder parameters depending - // on current input stream type - STDMETHOD(DefaultAudioEncoderProperties) (THIS_ - ) PURE; - // By default the modified properties are not saved to - // the registry immediately, so the filter needs to be - // forced to do this. Omitting this step may lead to - // misbehavior and confusing results. - STDMETHOD(LoadAudioEncoderPropertiesFromRegistry) (THIS_ - ) PURE; - STDMETHOD(SaveAudioEncoderPropertiesToRegistry) (THIS_ - ) PURE; - // Determine whether the filter can be configured. If this - // function returns E_FAIL then input format hasn't been - // specified and filter behavior is unpredictable. If S_OK, - // the filter could be configured with correct values. - STDMETHOD(InputTypeDefined) (THIS_ - ) PURE; - // Reconnects output pin (crucial for Fraunhofer MPEG Layer-3 Decoder) - STDMETHOD(ApplyChanges) (THIS_ - ) PURE; - - // Allow output sample overlap in terms of DirectShow - // timestamps (i.e. when sample's start time is less - // than previous sample's end time). Avi Mux doesn't like this - STDMETHOD(set_SampleOverlap) (THIS_ - DWORD dwFlag - ) PURE; - STDMETHOD(get_SampleOverlap) (THIS_ - DWORD *dwFlag - ) PURE; - }; -#ifdef __cplusplus -} -#endif -#endif // __IAUDIOPROPERTIES__ - - - diff --git a/platform/win32/msvc/external/lame/dshow/resource.h b/platform/win32/msvc/external/lame/dshow/resource.h deleted file mode 100644 index 2ec40344d98..00000000000 --- a/platform/win32/msvc/external/lame/dshow/resource.h +++ /dev/null @@ -1,59 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Developer Studio generated include file. -// Used by Property.rc -// -#define IDS_AUDIO_PROPS_TITLE 3 -#define IDS_AUDIO_ADVANCED_TITLE 4 -#define IDS_ABOUT 5 -#define IDD_AUDIOENCPROPS 100 -#define IDD_ADVPROPS 102 -#define IDD_ABOUT 105 -#define IDI_ICON2 106 -#define IDC_COMBO_CBR 1004 -#define IDC_CHECK_COPYRIGHT 1007 -#define IDC_CHECK_ORIGINAL 1008 -#define IDC_CHECK_CRC 1009 -#define IDC_CHECK_PES 1010 -#define IDC_COMBO_VBRMIN 1013 -#define IDC_TITLE_TEXT 1016 -#define IDC_RADIO_CBR 1019 -#define IDC_RADIO_VBR 1020 -#define IDC_SLIDER_QUALITY 1021 -#define IDC_TEXT_QUALITY 1023 -#define IDC_COMBO_VBRMAX 1024 -#define IDC_COMBO_SAMPLE_RATE 1025 -#define IDC_COMBO_VBRq 1026 -#define IDC_RADIO_STEREO 1027 -#define IDC_RADIO_JSTEREO 1028 -#define IDC_RADIO_DUAL 1029 -#define IDC_RADIO_MONO 1030 -#define IDC_CHECK_ENFORCE_MIN 1031 -#define IDC_CHECK_VOICE 1032 -#define IDC_CHECK_KEEP_ALL_FREQ 1033 -#define IDC_CHECK_STRICT_ISO 1034 -#define IDC_CHECK_DISABLE_SHORT_BLOCK 1035 -#define IDC_CHECK_XING_TAG 1036 -#define IDC_CHECK_FORCE_MS 1037 -#define IDC_CHECK_MODE_FIXED 1038 -#define IDC_RICHEDIT_LAME 1039 -#define IDC_CHECK_OVERLAP 1039 -#define IDC_CHECK_STOP 1040 -#define IDC_EDIT_TEXT 1044 -#define IDC_LAME_LA 1044 -#define IDC_FORCE_MONO 1045 -#define IDC_LAME_VER 1046 -#define IDC_LAME_URL 1047 -#define IDC_SET_DURATION 1048 -#define IDC_STATIC -1 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NO_MFC 1 -#define _APS_NEXT_RESOURCE_VALUE 107 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1049 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/platform/win32/msvc/external/lame/frontend/Makefile.am b/platform/win32/msvc/external/lame/frontend/Makefile.am deleted file mode 100644 index a35cb17838c..00000000000 --- a/platform/win32/msvc/external/lame/frontend/Makefile.am +++ /dev/null @@ -1,65 +0,0 @@ -## $Id: Makefile.am,v 1.35 2011/10/16 13:09:01 robert Exp $ - -include $(top_srcdir)/Makefile.am.global - -bin_PROGRAMS = @WITH_FRONTEND@ @WITH_MP3RTP@ @WITH_MP3X@ -EXTRA_PROGRAMS = lame$(EXEEXT) mp3rtp$(EXEEXT) mp3x$(EXEEXT) - -EXTRA_DIST = \ - amiga_mpega.c - -DEFS = @DEFS@ @CONFIG_DEFS@ - -common_sources = \ - main.c \ - brhist.c \ - console.c \ - get_audio.c \ - lametime.c \ - parse.c \ - timestatus.c - -noinst_HEADERS = \ - brhist.h \ - console.h \ - get_audio.h \ - gtkanal.h \ - gpkplotting.h \ - lametime.h \ - main.h \ - parse.h \ - rtp.h \ - timestatus.h - -lame_SOURCES = lame_main.c $(common_sources) -mp3rtp_SOURCES = mp3rtp.c rtp.c $(common_sources) -mp3x_SOURCES = mp3x.c gtkanal.c gpkplotting.c $(common_sources) - -CFLAGS = @CFLAGS@ @GTK_CFLAGS@ @FRONTEND_CFLAGS@ @SNDFILE_CFLAGS@ -LDFLAGS = @LDFLAGS@ @FRONTEND_LDFLAGS@ @SNDFILE_LIBS@ - -INCLUDES = -I$(top_srcdir)/libmp3lame -I$(top_srcdir)/include -I$(top_builddir) - -LDADD = @LDADD@ \ - $(top_builddir)/libmp3lame/libmp3lame.la \ - @FRONTEND_LDADD@ - -mp3x_LDADD = $(LDADD) @GTK_LIBS@ - -CLEANFILES = lclint.txt $(EXTRA_PROGRAMS) - -LCLINTFLAGS= \ - +posixlib \ - +showsummary \ - +showalluses \ - +whichlib \ - +forcehints \ - -fixedformalarray \ - +matchanyintegral \ - -Dlint - -lclint.txt: ${lame_SOURCES} ${noinst_HEADERS} - @lclint ${LCLINTFLAGS} ${INCLUDES} ${DEFS} ${lame_SOURCES} 2>&1 >lclint.txt || true - -lclint: lclint.txt - more lclint.txt diff --git a/platform/win32/msvc/external/lame/frontend/Makefile.in b/platform/win32/msvc/external/lame/frontend/Makefile.in deleted file mode 100644 index 425af6ecc85..00000000000 --- a/platform/win32/msvc/external/lame/frontend/Makefile.in +++ /dev/null @@ -1,664 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# global section for every Makefile.am - - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -ANSI2KNR = $(top_srcdir)/ansi2knr -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(top_srcdir)/Makefile.am.global depcomp -subdir = frontend -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__installdirs = "$(DESTDIR)$(bindir)" -PROGRAMS = $(bin_PROGRAMS) -am__objects_1 = main$U.$(OBJEXT) brhist$U.$(OBJEXT) \ - console$U.$(OBJEXT) get_audio$U.$(OBJEXT) lametime$U.$(OBJEXT) \ - parse$U.$(OBJEXT) \ - timestatus$U.$(OBJEXT) -am_lame_OBJECTS = lame_main$U.$(OBJEXT) $(am__objects_1) -lame_OBJECTS = $(am_lame_OBJECTS) -lame_LDADD = $(LDADD) -lame_DEPENDENCIES = $(top_builddir)/libmp3lame/libmp3lame.la -am_mp3rtp_OBJECTS = mp3rtp$U.$(OBJEXT) rtp$U.$(OBJEXT) \ - $(am__objects_1) -mp3rtp_OBJECTS = $(am_mp3rtp_OBJECTS) -mp3rtp_LDADD = $(LDADD) -mp3rtp_DEPENDENCIES = $(top_builddir)/libmp3lame/libmp3lame.la -am_mp3x_OBJECTS = mp3x$U.$(OBJEXT) gtkanal$U.$(OBJEXT) \ - gpkplotting$U.$(OBJEXT) $(am__objects_1) -mp3x_OBJECTS = $(am_mp3x_OBJECTS) -am__DEPENDENCIES_1 = $(top_builddir)/libmp3lame/libmp3lame.la -mp3x_DEPENDENCIES = $(am__DEPENDENCIES_1) -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(lame_SOURCES) $(mp3rtp_SOURCES) $(mp3x_SOURCES) -DIST_SOURCES = $(lame_SOURCES) $(mp3rtp_SOURCES) $(mp3x_SOURCES) -HEADERS = $(noinst_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ @GTK_CFLAGS@ @FRONTEND_CFLAGS@ @SNDFILE_CFLAGS@ -CONFIG_DEFS = @CONFIG_DEFS@ -CONFIG_MATH_LIB = @CONFIG_MATH_LIB@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CPUCCODE = @CPUCCODE@ -CPUTYPE = @CPUTYPE@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ @CONFIG_DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ -FRONTEND_LDADD = @FRONTEND_LDADD@ -FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ -GREP = @GREP@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_CONFIG = @GTK_CONFIG@ -GTK_LIBS = @GTK_LIBS@ -INCLUDES = -I$(top_srcdir)/libmp3lame -I$(top_srcdir)/include -I$(top_builddir) -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDADD = @LDADD@ \ - $(top_builddir)/libmp3lame/libmp3lame.la \ - @FRONTEND_LDADD@ - -LDFLAGS = @LDFLAGS@ @FRONTEND_LDFLAGS@ @SNDFILE_LIBS@ -LIBICONV = @LIBICONV@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ -LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBICONV = @LTLIBICONV@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEDEP = @MAKEDEP@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NASM = @NASM@ -NASM_FORMAT = @NASM_FORMAT@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -RM_F = @RM_F@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ -SNDFILE_LIBS = @SNDFILE_LIBS@ -STRIP = @STRIP@ -U = @U@ -VERSION = @VERSION@ -WITH_FRONTEND = @WITH_FRONTEND@ -WITH_MP3RTP = @WITH_MP3RTP@ -WITH_MP3X = @WITH_MP3X@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = 1.11 foreign $(top_srcdir)/ansi2knr -bin_PROGRAMS = @WITH_FRONTEND@ @WITH_MP3RTP@ @WITH_MP3X@ -EXTRA_PROGRAMS = lame$(EXEEXT) mp3rtp$(EXEEXT) mp3x$(EXEEXT) -EXTRA_DIST = \ - amiga_mpega.c - -common_sources = \ - main.c \ - brhist.c \ - console.c \ - get_audio.c \ - lametime.c \ - parse.c \ - timestatus.c - -noinst_HEADERS = \ - brhist.h \ - console.h \ - get_audio.h \ - gtkanal.h \ - gpkplotting.h \ - lametime.h \ - main.h \ - parse.h \ - rtp.h \ - timestatus.h - -lame_SOURCES = lame_main.c $(common_sources) -mp3rtp_SOURCES = mp3rtp.c rtp.c $(common_sources) -mp3x_SOURCES = mp3x.c gtkanal.c gpkplotting.c $(common_sources) -mp3x_LDADD = $(LDADD) @GTK_LIBS@ -CLEANFILES = lclint.txt $(EXTRA_PROGRAMS) -LCLINTFLAGS = \ - +posixlib \ - +showsummary \ - +showalluses \ - +whichlib \ - +forcehints \ - -fixedformalarray \ - +matchanyintegral \ - -Dlint - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign frontend/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign frontend/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p || test -f $$p1; \ - then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(bindir)" && rm -f $$files - -clean-binPROGRAMS: - @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -lame$(EXEEXT): $(lame_OBJECTS) $(lame_DEPENDENCIES) - @rm -f lame$(EXEEXT) - $(LINK) $(lame_OBJECTS) $(lame_LDADD) $(LIBS) -mp3rtp$(EXEEXT): $(mp3rtp_OBJECTS) $(mp3rtp_DEPENDENCIES) - @rm -f mp3rtp$(EXEEXT) - $(LINK) $(mp3rtp_OBJECTS) $(mp3rtp_LDADD) $(LIBS) -mp3x$(EXEEXT): $(mp3x_OBJECTS) $(mp3x_DEPENDENCIES) - @rm -f mp3x$(EXEEXT) - $(LINK) $(mp3x_OBJECTS) $(mp3x_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c -$(top_srcdir)/ansi2knr: - $(am__cd) $(top_srcdir) && $(MAKE) $(AM_MAKEFLAGS) ./ansi2knr - -mostlyclean-kr: - -test "$U" = "" || rm -f *_.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/brhist$U.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/console$U.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_audio$U.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpkplotting$U.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkanal$U.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lame_main$U.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lametime$U.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main$U.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mp3rtp$U.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mp3x$U.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse$U.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtp$U.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timestatus$U.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< -brhist_.c: brhist.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/brhist.c; then echo $(srcdir)/brhist.c; else echo brhist.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -console_.c: console.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/console.c; then echo $(srcdir)/console.c; else echo console.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -get_audio_.c: get_audio.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/get_audio.c; then echo $(srcdir)/get_audio.c; else echo get_audio.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -gpkplotting_.c: gpkplotting.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/gpkplotting.c; then echo $(srcdir)/gpkplotting.c; else echo gpkplotting.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -gtkanal_.c: gtkanal.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/gtkanal.c; then echo $(srcdir)/gtkanal.c; else echo gtkanal.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -lame_main_.c: lame_main.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lame_main.c; then echo $(srcdir)/lame_main.c; else echo lame_main.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -lametime_.c: lametime.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lametime.c; then echo $(srcdir)/lametime.c; else echo lametime.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -main_.c: main.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/main.c; then echo $(srcdir)/main.c; else echo main.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -mp3rtp_.c: mp3rtp.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mp3rtp.c; then echo $(srcdir)/mp3rtp.c; else echo mp3rtp.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -mp3x_.c: mp3x.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mp3x.c; then echo $(srcdir)/mp3x.c; else echo mp3x.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -parse_.c: parse.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/parse.c; then echo $(srcdir)/parse.c; else echo parse.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -rtp_.c: rtp.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/rtp.c; then echo $(srcdir)/rtp.c; else echo rtp.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -timestatus_.c: timestatus.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/timestatus.c; then echo $(srcdir)/timestatus.c; else echo timestatus.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -brhist_.$(OBJEXT) brhist_.lo console_.$(OBJEXT) console_.lo \ -get_audio_.$(OBJEXT) get_audio_.lo gpkplotting_.$(OBJEXT) \ -gpkplotting_.lo gtkanal_.$(OBJEXT) gtkanal_.lo lame_main_.$(OBJEXT) \ -lame_main_.lo lametime_.$(OBJEXT) lametime_.lo main_.$(OBJEXT) \ -main_.lo mp3rtp_.$(OBJEXT) mp3rtp_.lo mp3x_.$(OBJEXT) mp3x_.lo \ -parse_.$(OBJEXT) parse_.lo \ -rtp_.$(OBJEXT) rtp_.lo timestatus_.$(OBJEXT) timestatus_.lo : \ -$(ANSI2KNR) - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(bindir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-binPROGRAMS - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-binPROGRAMS - -.MAKE: $(top_srcdir)/ansi2knr install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ - clean-generic clean-libtool ctags distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-binPROGRAMS install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-kr \ - mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-binPROGRAMS - - -# end global section - -lclint.txt: ${lame_SOURCES} ${noinst_HEADERS} - @lclint ${LCLINTFLAGS} ${INCLUDES} ${DEFS} ${lame_SOURCES} 2>&1 >lclint.txt || true - -lclint: lclint.txt - more lclint.txt - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/platform/win32/msvc/external/lame/frontend/amiga_mpega.c b/platform/win32/msvc/external/lame/frontend/amiga_mpega.c deleted file mode 100644 index 12f144fced2..00000000000 --- a/platform/win32/msvc/external/lame/frontend/amiga_mpega.c +++ /dev/null @@ -1,139 +0,0 @@ -/* MPGLIB replacement using mpega.library (AmigaOS) - * Written by Thomas Wenzel and Sigbjrn (CISC) Skj�et. - * - * Big thanks to St�hane Tavernard for mpega.library. - * - */ - -/* $Id: amiga_mpega.c,v 1.3 2005/11/01 13:01:56 robert Exp $ */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#ifdef AMIGA_MPEGA - -#define __USE_SYSBASE -#include "lame.h" -#include -#include - -/* We need a small workaround here so GCC doesn't fail upon redefinition. :P */ -#define FLOAT _FLOAT -#include -#include -#undef _FLOAT - -#ifndef __GNUC__ -#include -#endif - -struct Library *MPEGABase = NULL; -MPEGA_STREAM *mstream = NULL; -MPEGA_CTRL mctrl; - -static const int smpls[2][4] = { -/* Layer x I II III */ - {0, 384, 1152, 1152}, /* MPEG-1 */ - {0, 384, 1152, 576} /* MPEG-2(.5) */ -}; - - -#ifndef __GNUC__ -static int -break_cleanup(void) -{ - /* Dummy break function to make atexit() work. :P */ - return 1; -} -#endif - -static void -exit_cleanup(void) -{ - if (mstream) { - MPEGA_close(mstream); - mstream = NULL; - } - if (MPEGABase) { - CloseLibrary(MPEGABase); - MPEGABase = NULL; - } -} - - -int -lame_decode_initfile(const char *fullname, mp3data_struct * mp3data) -{ - mctrl.bs_access = NULL; - - mctrl.layer_1_2.mono.quality = 2; - mctrl.layer_1_2.stereo.quality = 2; - mctrl.layer_1_2.mono.freq_div = 1; - mctrl.layer_1_2.stereo.freq_div = 1; - mctrl.layer_1_2.mono.freq_max = 48000; - mctrl.layer_1_2.stereo.freq_max = 48000; - mctrl.layer_3.mono.quality = 2; - mctrl.layer_3.stereo.quality = 2; - mctrl.layer_3.mono.freq_div = 1; - mctrl.layer_3.stereo.freq_div = 1; - mctrl.layer_3.mono.freq_max = 48000; - mctrl.layer_3.stereo.freq_max = 48000; - mctrl.layer_1_2.force_mono = 0; - mctrl.layer_3.force_mono = 0; - - MPEGABase = OpenLibrary("mpega.library", 2); - if (!MPEGABase) { - error_printf("Unable to open mpega.library v2\n"); - exit(1); - } -#ifndef __GNUC__ - onbreak(break_cleanup); -#endif - atexit(exit_cleanup); - - mp3data->header_parsed = 0; - mstream = MPEGA_open((char *) fullname, &mctrl); - if (!mstream) - return (-1); - - mp3data->header_parsed = 1; - mp3data->stereo = mstream->dec_channels; - mp3data->samplerate = mstream->dec_frequency; - mp3data->bitrate = mstream->bitrate; - mp3data->nsamp = (float) mstream->ms_duration / 1000 * mstream->dec_frequency; - mp3data->mode = mstream->mode; - mp3data->mode_ext = 0; /* mpega.library doesn't supply this info! :( */ - mp3data->framesize = smpls[mstream->norm - 1][mstream->layer]; - - return 0; -} - -int -lame_decode_fromfile(FILE * fd, short pcm_l[], short pcm_r[], mp3data_struct * mp3data) -{ - int outsize = 0; - WORD *b[MPEGA_MAX_CHANNELS]; - - b[0] = pcm_l; - b[1] = pcm_r; - - mp3data->header_parsed = 0; - while ((outsize == 0) || (outsize == MPEGA_ERR_BADFRAME)) /* Skip bad frames */ - outsize = MPEGA_decode_frame(mstream, b); - - if (outsize < 0) - return (-1); - - mp3data->header_parsed = 1; - mp3data->stereo = mstream->dec_channels; - mp3data->samplerate = mstream->dec_frequency; - mp3data->bitrate = mstream->bitrate; - mp3data->mode = mstream->mode; - mp3data->mode_ext = 0; /* mpega.library doesn't supply this info! :( */ - mp3data->framesize = smpls[mstream->norm - 1][mstream->layer]; - - return outsize; -} - -#endif /* AMIGA_MPEGA */ diff --git a/platform/win32/msvc/external/lame/frontend/brhist.c b/platform/win32/msvc/external/lame/frontend/brhist.c deleted file mode 100644 index dcf858fb22b..00000000000 --- a/platform/win32/msvc/external/lame/frontend/brhist.c +++ /dev/null @@ -1,382 +0,0 @@ -/* - * Bitrate histogram source file - * - * Copyright (c) 2000 Mark Taylor - * - * 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. - */ - -/* $Id: brhist.c,v 1.57 2011/05/07 16:05:17 rbrito Exp $ */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -/* basic #define's */ - -#ifndef BRHIST_WIDTH -# define BRHIST_WIDTH 14 -#endif -#ifndef BRHIST_RES -# define BRHIST_RES 14 -#endif - - -/* #includes */ - -#ifdef STDC_HEADERS -# include -# include -# include -#endif - -#include "brhist.h" -#include "console.h" - -#ifdef WITH_DMALLOC -#include -#endif - - -/* Structure holding all data related to the Console I/O - * may be this should be a more global frontend structure. So it - * makes sense to print all files instead with - * printf ( "blah\n") with printf ( "blah%s\n", Console_IO.str_clreoln ); - */ - -extern Console_IO_t Console_IO; - -static struct brhist_struct { - int vbr_bitrate_min_index; - int vbr_bitrate_max_index; - int kbps[BRHIST_WIDTH]; - int hist_printed_lines; - char bar_asterisk[512 + 1]; /* buffer filled up with a lot of '*' to print a bar */ - char bar_percent[512 + 1]; /* buffer filled up with a lot of '%' to print a bar */ - char bar_coded[512 + 1]; /* buffer filled up with a lot of ' ' to print a bar */ - char bar_space[512 + 1]; /* buffer filled up with a lot of ' ' to print a bar */ -} brhist; - -static int -calculate_index(const int *const array, const int len, const int value) -{ - int i; - - for (i = 0; i < len; i++) - if (array[i] == value) - return i; - return -1; -} - -int -brhist_init(const lame_global_flags * gf, const int bitrate_kbps_min, const int bitrate_kbps_max) -{ - brhist.hist_printed_lines = 0; - - /* initialize histogramming data structure */ - lame_bitrate_kbps(gf, brhist.kbps); - brhist.vbr_bitrate_min_index = calculate_index(brhist.kbps, BRHIST_WIDTH, bitrate_kbps_min); - brhist.vbr_bitrate_max_index = calculate_index(brhist.kbps, BRHIST_WIDTH, bitrate_kbps_max); - - if (brhist.vbr_bitrate_min_index >= BRHIST_WIDTH || - brhist.vbr_bitrate_max_index >= BRHIST_WIDTH) { - error_printf("lame internal error: VBR min %d kbps or VBR max %d kbps not allowed.\n", - bitrate_kbps_min, bitrate_kbps_max); - return -1; - } - - memset(brhist.bar_asterisk, '*', sizeof(brhist.bar_asterisk) - 1); - memset(brhist.bar_percent, '%', sizeof(brhist.bar_percent) - 1); - memset(brhist.bar_space, '-', sizeof(brhist.bar_space) - 1); - memset(brhist.bar_coded, '-', sizeof(brhist.bar_space) - 1); - - return 0; -} - -static int -digits(unsigned number) -{ - int ret = 1; - - if (number >= 100000000) { - ret += 8; - number /= 100000000; - } - if (number >= 10000) { - ret += 4; - number /= 10000; - } - if (number >= 100) { - ret += 2; - number /= 100; - } - if (number >= 10) { - ret += 1; - } - - return ret; -} - - -static void -brhist_disp_line(int i, int br_hist_TOT, int br_hist_LR, int full, int frames) -{ - char brppt[14]; /* [%] and max. 10 characters for kbps */ - int barlen_TOT; - int barlen_LR; - int res = digits(frames) + 3 + 4 + 1; - - if (full != 0) { - /* some problems when br_hist_TOT \approx br_hist_LR: You can't see that there are still MS frames */ - barlen_TOT = (br_hist_TOT * (Console_IO.disp_width - res) + full - 1) / full; /* round up */ - barlen_LR = (br_hist_LR * (Console_IO.disp_width - res) + full - 1) / full; /* round up */ - } - else { - barlen_TOT = barlen_LR = 0; - } - - sprintf(brppt, " [%*i]", digits(frames), br_hist_TOT); - - if (Console_IO.str_clreoln[0]) /* ClearEndOfLine available */ - console_printf("\n%3d%s %.*s%.*s%s", - brhist.kbps[i], brppt, - barlen_LR, brhist.bar_percent, - barlen_TOT - barlen_LR, brhist.bar_asterisk, Console_IO.str_clreoln); - else - console_printf("\n%3d%s %.*s%.*s%*s", - brhist.kbps[i], brppt, - barlen_LR, brhist.bar_percent, - barlen_TOT - barlen_LR, brhist.bar_asterisk, - Console_IO.disp_width - res - barlen_TOT, ""); - - brhist.hist_printed_lines++; -} - - - -static void -progress_line(const lame_global_flags * gf, int full, int frames) -{ - char rst[20] = "\0"; - int barlen_TOT = 0, barlen_COD = 0, barlen_RST = 0; - int res = 1; - float time_in_sec = 0; - unsigned int hour, min, sec; - int fsize = lame_get_framesize(gf); - int srate = lame_get_out_samplerate(gf); - - if (full < frames) { - full = frames; - } - if (srate > 0) { - time_in_sec = (float)(full - frames); - time_in_sec *= fsize; - time_in_sec /= srate; - } - hour = (unsigned int)(time_in_sec / 3600); - time_in_sec -= hour * 3600; - min = (unsigned int)(time_in_sec / 60); - time_in_sec -= min * 60; - sec = (unsigned int)time_in_sec; - if (full != 0) { - if (hour > 0) { - sprintf(rst, "%*d:%02u:%02u", digits(hour), hour, min, sec); - res += digits(hour) + 1 + 5; - } - else { - sprintf(rst, "%02u:%02u", min, sec); - res += 5; - } - /* some problems when br_hist_TOT \approx br_hist_LR: You can't see that there are still MS frames */ - barlen_TOT = (full * (Console_IO.disp_width - res) + full - 1) / full; /* round up */ - barlen_COD = (frames * (Console_IO.disp_width - res) + full - 1) / full; /* round up */ - barlen_RST = barlen_TOT - barlen_COD; - if (barlen_RST == 0) { - sprintf(rst, "%.*s", res - 1, brhist.bar_coded); - } - } - else { - barlen_TOT = barlen_COD = barlen_RST = 0; - } - if (Console_IO.str_clreoln[0]) { /* ClearEndOfLine available */ - console_printf("\n%.*s%s%.*s%s", - barlen_COD, brhist.bar_coded, - rst, barlen_RST, brhist.bar_space, Console_IO.str_clreoln); - } - else { - console_printf("\n%.*s%s%.*s%*s", - barlen_COD, brhist.bar_coded, - rst, barlen_RST, brhist.bar_space, Console_IO.disp_width - res - barlen_TOT, - ""); - } - brhist.hist_printed_lines++; -} - - -static int -stats_value(double x) -{ - if (x > 0.0) { - console_printf(" %5.1f", x); - return 6; - } - return 0; -} - -static int -stats_head(double x, const char *txt) -{ - if (x > 0.0) { - console_printf(txt); - return 6; - } - return 0; -} - - -static void -stats_line(double *stat) -{ - int n = 1; - console_printf("\n kbps "); - n += 12; - n += stats_head(stat[1], " mono"); - n += stats_head(stat[2], " IS "); - n += stats_head(stat[3], " LR "); - n += stats_head(stat[4], " MS "); - console_printf(" %% "); - n += 6; - n += stats_head(stat[5], " long "); - n += stats_head(stat[6], "switch"); - n += stats_head(stat[7], " short"); - n += stats_head(stat[8], " mixed"); - n += console_printf(" %%"); - if (Console_IO.str_clreoln[0]) { /* ClearEndOfLine available */ - console_printf("%s", Console_IO.str_clreoln); - } - else { - console_printf("%*s", Console_IO.disp_width - n, ""); - } - brhist.hist_printed_lines++; - - n = 1; - console_printf("\n %5.1f ", stat[0]); - n += 12; - n += stats_value(stat[1]); - n += stats_value(stat[2]); - n += stats_value(stat[3]); - n += stats_value(stat[4]); - console_printf(" "); - n += 6; - n += stats_value(stat[5]); - n += stats_value(stat[6]); - n += stats_value(stat[7]); - n += stats_value(stat[8]); - if (Console_IO.str_clreoln[0]) { /* ClearEndOfLine available */ - console_printf("%s", Console_IO.str_clreoln); - } - else { - console_printf("%*s", Console_IO.disp_width - n, ""); - } - brhist.hist_printed_lines++; -} - - -/* Yes, not very good */ -#define LR 0 -#define MS 2 - -void -brhist_disp(const lame_global_flags * gf) -{ - int i, lines_used = 0; - int br_hist[BRHIST_WIDTH]; /* how often a frame size was used */ - int br_sm_hist[BRHIST_WIDTH][4]; /* how often a special frame size/stereo mode commbination was used */ - int st_mode[4]; - int bl_type[6]; - int frames; /* total number of encoded frames */ - int most_often; /* usage count of the most often used frame size, but not smaller than Console_IO.disp_width-BRHIST_RES (makes this sense?) and 1 */ - double sum = 0.; - - double stat[9] = { 0 }; - int st_frames = 0; - - - brhist.hist_printed_lines = 0; /* printed number of lines for the brhist functionality, used to skip back the right number of lines */ - - lame_bitrate_stereo_mode_hist(gf, br_sm_hist); - lame_bitrate_hist(gf, br_hist); - lame_stereo_mode_hist(gf, st_mode); - lame_block_type_hist(gf, bl_type); - - frames = most_often = 0; - for (i = 0; i < BRHIST_WIDTH; i++) { - frames += br_hist[i]; - sum += br_hist[i] * brhist.kbps[i]; - if (most_often < br_hist[i]) - most_often = br_hist[i]; - if (br_hist[i]) - ++lines_used; - } - - for (i = 0; i < BRHIST_WIDTH; i++) { - int show = br_hist[i]; - show = show && (lines_used > 1); - if (show || (i >= brhist.vbr_bitrate_min_index && i <= brhist.vbr_bitrate_max_index)) - brhist_disp_line(i, br_hist[i], br_sm_hist[i][LR], most_often, frames); - } - for (i = 0; i < 4; i++) { - st_frames += st_mode[i]; - } - if (frames > 0) { - stat[0] = sum / frames; - stat[1] = 100. * (frames - st_frames) / frames; - } - if (st_frames > 0) { - stat[2] = 0.0; - stat[3] = 100. * st_mode[LR] / st_frames; - stat[4] = 100. * st_mode[MS] / st_frames; - } - if (bl_type[5] > 0) { - stat[5] = 100. * bl_type[0] / bl_type[5]; - stat[6] = 100. * (bl_type[1] + bl_type[3]) / bl_type[5]; - stat[7] = 100. * bl_type[2] / bl_type[5]; - stat[8] = 100. * bl_type[4] / bl_type[5]; - } - progress_line(gf, lame_get_totalframes(gf), frames); - stats_line(stat); -} - -void -brhist_jump_back(void) -{ - console_up(brhist.hist_printed_lines); - brhist.hist_printed_lines = 0; -} - -/* - * 1) - * - * Taken from Termcap_Manual.html: - * - * With the Unix version of termcap, you must allocate space for the description yourself and pass - * the address of the space as the argument buffer. There is no way you can tell how much space is - * needed, so the convention is to allocate a buffer 2048 characters long and assume that is - * enough. (Formerly the convention was to allocate 1024 characters and assume that was enough. - * But one day, for one kind of terminal, that was not enough.) - */ - - diff --git a/platform/win32/msvc/external/lame/frontend/brhist.h b/platform/win32/msvc/external/lame/frontend/brhist.h deleted file mode 100644 index 15b16c65103..00000000000 --- a/platform/win32/msvc/external/lame/frontend/brhist.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Bitrate histogram include file - * - * Copyright (c) 2000 Mark Taylor - * - * 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 LAME_BRHIST_H -#define LAME_BRHIST_H - -#include "lame.h" - -#if defined(__cplusplus) -extern "C" { -#endif - -int brhist_init(const lame_global_flags * gf, const int bitrate_kbps_min, - const int bitrate_kbps_max); -void brhist_disp(const lame_global_flags * gf); -void brhist_jump_back(void); - -#if defined(__cplusplus) -} -#endif - -#endif /* LAME_BRHIST_H */ diff --git a/platform/win32/msvc/external/lame/frontend/console.c b/platform/win32/msvc/external/lame/frontend/console.c deleted file mode 100644 index 43d73ace9ae..00000000000 --- a/platform/win32/msvc/external/lame/frontend/console.c +++ /dev/null @@ -1,310 +0,0 @@ -#ifdef HAVE_CONFIG_H -# include -#endif - -#ifdef STDC_HEADERS -# include -# include -#else -# ifndef HAVE_STRCHR -# define strchr index -# define strrchr rindex -# endif -char *strchr(), *strrchr(); -# ifndef HAVE_MEMCPY -# define memcpy(d, s, n) bcopy ((s), (d), (n)) -# define memmove(d, s, n) bcopy ((s), (d), (n)) -# endif -#endif - -#if defined(HAVE_NCURSES_TERMCAP_H) -# include -#elif defined(HAVE_TERMCAP_H) -# include -#elif defined(HAVE_TERMCAP) -# include -# if !defined(__bsdi__) -# include -# endif -#endif - -#include -#include -#include "console.h" -#include "main.h" - -#ifdef WITH_DMALLOC -#include -#endif - -#define CLASS_ID 0x434F4E53 -#define REPORT_BUFF_SIZE 1024 - -#if defined(_WIN32) && !defined(__CYGWIN__) -# include -#endif - - - -static int -my_console_printing(FILE * fp, const char *format, va_list ap) -{ - if (fp != NULL) - return vfprintf(fp, format, ap); - return 0; -} - -static int -my_error_printing(FILE * fp, const char *format, va_list ap) -{ - if (fp != NULL) - return vfprintf(fp, format, ap); - return 0; -} - -static int -my_report_printing(FILE * fp, const char *format, va_list ap) -{ - if (fp != NULL) - return vfprintf(fp, format, ap); - return 0; -} - - -/* - * Taken from Termcap_Manual.html: - * - * With the Unix version of termcap, you must allocate space for the description yourself and pass - * the address of the space as the argument buffer. There is no way you can tell how much space is - * needed, so the convention is to allocate a buffer 2048 characters long and assume that is - * enough. (Formerly the convention was to allocate 1024 characters and assume that was enough. - * But one day, for one kind of terminal, that was not enough.) - */ - -#ifdef HAVE_TERMCAP - -static void -get_termcap_string(char const* id, char* dest, size_t n) -{ - char tc[16]; - char *tp = tc; - tp[0] = '\0'; - tp = tgetstr(id, &tp); - if (tp != NULL && dest != NULL && n > 0) { - strncpy(dest, tp, n); - dest[n-1] = '\0'; - } -} - -static void -get_termcap_number(char const* id, int* dest, int low, int high) -{ - int const val = tgetnum(id); - if (low <= val && val <= high) { - *dest = val; - } -} - -static void -apply_termcap_settings(Console_IO_t * const mfp) -{ - /* try to catch additional information about special console sequences */ - char const* term_name = getenv("TERM"); - if (NULL != term_name) { - char term_buff[4096]; - int const ret = tgetent(term_buff, term_name); - if (1 == ret) { - get_termcap_number("co", &mfp->disp_width, 40, 512); - get_termcap_number("li", &mfp->disp_height, 16, 256); - get_termcap_string("up", mfp->str_up, sizeof(mfp->str_up)); - get_termcap_string("md", mfp->str_emph, sizeof(mfp->str_emph)); - get_termcap_string("me", mfp->str_norm, sizeof(mfp->str_norm)); - get_termcap_string("ce", mfp->str_clreoln, sizeof(mfp->str_clreoln)); - } - } -} -#endif /* TERMCAP_AVAILABLE */ - -static int -init_console(Console_IO_t * const mfp) -{ - /* setup basics of brhist I/O channels */ - mfp->disp_width = 80; - mfp->disp_height = 25; - mfp->Console_fp = stderr; - mfp->Error_fp = stderr; - mfp->Report_fp = NULL; - - /*mfp -> Console_buff = calloc ( 1, REPORT_BUFF_SIZE ); */ - setvbuf(mfp->Console_fp, mfp->Console_buff, _IOFBF, sizeof(mfp->Console_buff)); -/* setvbuf ( mfp -> Error_fp , NULL , _IONBF, 0 ); */ - -#if defined(_WIN32) && !defined(__CYGWIN__) - mfp->Console_Handle = GetStdHandle(STD_ERROR_HANDLE); -#endif - - strcpy(mfp->str_up, "\033[A"); - -#ifdef HAVE_TERMCAP - apply_termcap_settings(mfp); -#endif /* TERMCAP_AVAILABLE */ - - mfp->ClassID = CLASS_ID; - -#if defined(_WIN32) && !defined(__CYGWIN__) - mfp->Console_file_type = GetFileType(Console_IO.Console_Handle); -#else - mfp->Console_file_type = 0; -#endif - return 0; -} - -static void -deinit_console(Console_IO_t * const mfp) -{ - if (mfp->Report_fp != NULL) { - fclose(mfp->Report_fp); - mfp->Report_fp = NULL; - } - fflush(mfp->Console_fp); - setvbuf(mfp->Console_fp, NULL, _IONBF, (size_t) 0); - - memset(mfp->Console_buff, 0x55, REPORT_BUFF_SIZE); -} - - -/* LAME console - */ -Console_IO_t Console_IO; - -int -frontend_open_console(void) -{ - return init_console(&Console_IO); -} - -void -frontend_close_console(void) -{ - deinit_console(&Console_IO); -} - -void -frontend_debugf(const char *format, va_list ap) -{ - (void) my_report_printing(Console_IO.Report_fp, format, ap); -} - -void -frontend_msgf(const char *format, va_list ap) -{ - (void) my_console_printing(Console_IO.Console_fp, format, ap); -} - -void -frontend_errorf(const char *format, va_list ap) -{ - (void) my_error_printing(Console_IO.Error_fp, format, ap); -} - -void -frontend_print_null(const char *format, va_list ap) -{ - (void) format; - (void) ap; -} - -int -console_printf(const char *format, ...) -{ - va_list args; - int ret; - - va_start(args, format); - ret = my_console_printing(Console_IO.Console_fp, format, args); - va_end(args); - - return ret; -} - -int -error_printf(const char *format, ...) -{ - va_list args; - int ret; - - va_start(args, format); - ret = my_console_printing(Console_IO.Error_fp, format, args); - va_end(args); - - return ret; -} - -int -report_printf(const char *format, ...) -{ - va_list args; - int ret; - - va_start(args, format); - ret = my_console_printing(Console_IO.Report_fp, format, args); - va_end(args); - - return ret; -} - -void -console_flush() -{ - fflush(Console_IO.Console_fp); -} - -void -error_flush() -{ - fflush(Console_IO.Error_fp); -} - -void -report_flush() -{ - fflush(Console_IO.Report_fp); -} - -void -console_up(int n_lines) -{ -#if defined(_WIN32) && !defined(__CYGWIN__) - if (Console_IO.Console_file_type != FILE_TYPE_PIPE) { - COORD Pos; - CONSOLE_SCREEN_BUFFER_INFO CSBI; - - console_flush(); - GetConsoleScreenBufferInfo(Console_IO.Console_Handle, &CSBI); - Pos.Y = (SHORT)(CSBI.dwCursorPosition.Y - n_lines); - Pos.X = 0; - SetConsoleCursorPosition(Console_IO.Console_Handle, Pos); - } -#else - while (n_lines-- > 0) - fputs(Console_IO.str_up, Console_IO.Console_fp); - console_flush(); -#endif -} - - -void -set_debug_file(const char *fn) -{ - if (Console_IO.Report_fp == NULL) { - Console_IO.Report_fp = lame_fopen(fn, "a"); - if (Console_IO.Report_fp != NULL) { - error_printf("writing debug info into: %s\n", fn); - } - else { - error_printf("Error: can't open for debug info: %s\n", fn); - } - } -} - -/* end of console.c */ diff --git a/platform/win32/msvc/external/lame/frontend/console.h b/platform/win32/msvc/external/lame/frontend/console.h deleted file mode 100644 index 80e1aa334ea..00000000000 --- a/platform/win32/msvc/external/lame/frontend/console.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * frontend/console.h - * - * This - * - * - */ - -#ifndef LAME_CONSOLE_H -#define LAME_CONSOLE_H - -#if defined(_WIN32) && !defined(__CYGWIN__) -# include -#endif - -#if defined(__cplusplus) -extern "C" { -#endif - -typedef struct console_io_struct { - unsigned long ClassID; - unsigned long ClassProt; - FILE *Console_fp; /* filepointer to stream reporting information */ - FILE *Error_fp; /* filepointer to stream fatal error reporting information */ - FILE *Report_fp; /* filepointer to stream reports (normally a text file or /dev/null) */ -#if defined(_WIN32) && !defined(__CYGWIN__) - HANDLE Console_Handle; -#endif - int disp_width; - int disp_height; - char str_up[10]; - char str_clreoln[10]; - char str_emph[10]; - char str_norm[10]; - char Console_buff[2048]; - int Console_file_type; -} Console_IO_t; - -extern Console_IO_t Console_IO; -extern int frontend_open_console(void); -extern void frontend_close_console(void); - -extern void frontend_msgf(const char *format, va_list ap); -extern void frontend_debugf(const char *format, va_list ap); -extern void frontend_errorf(const char *format, va_list ap); -extern void frontend_print_null(const char *format, va_list ap); - -int console_printf(const char *format, ...); -int error_printf(const char *format, ...); -int report_printf(const char *format, ...); - -void console_flush(void); -void error_flush(void); -void report_flush(void); - -void console_up(int n_lines); - -void set_debug_file(const char *fn); - -#if defined(__cplusplus) -} -#endif - -#endif /* LAME_CONSOLE_H */ - -/* end of console.h */ diff --git a/platform/win32/msvc/external/lame/frontend/depcomp b/platform/win32/msvc/external/lame/frontend/depcomp deleted file mode 100644 index df8eea7e4ce..00000000000 --- a/platform/win32/msvc/external/lame/frontend/depcomp +++ /dev/null @@ -1,630 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2009-04-28.21; # UTC - -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free -# Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Alexandre Oliva . - -case $1 in - '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: depcomp [--help] [--version] PROGRAM [ARGS] - -Run PROGRAMS ARGS to compile a file, generating dependencies -as side-effects. - -Environment variables: - depmode Dependency tracking mode. - source Source file read by `PROGRAMS ARGS'. - object Object file output by `PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. - tmpdepfile Temporary file to use when outputing dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit $? - ;; -esac - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi - -# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -depfile=${depfile-`echo "$object" | - sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -cygpath_u="cygpath -u -f -" -if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u="sed s,\\\\\\\\,/,g" - depmode=msvisualcpp -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. -## Unfortunately, FreeBSD c89 acceptance of flags depends upon -## the command line argument order; so add the flags where they -## appear in depend2.am. Note that the slowdown incurred here -## affects only configure: in makefiles, %FASTDEP% shortcuts this. - for arg - do - case $arg in - -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; - *) set fnord "$@" "$arg" ;; - esac - shift # fnord - shift # $arg - done - "$@" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the `deleted header file' problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. - tr ' ' ' -' < "$tmpdepfile" | -## Some versions of gcc put a space before the `:'. On the theory -## that the space means something, we add a space to the output as -## well. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" - - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like `#:fec' to the end of the - # dependency line. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr ' -' ' ' >> "$depfile" - echo >> "$depfile" - - # The second pass generates a dummy entry for each header file. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts `$object:' at the - # start of each line; $object doesn't have directory information. - # Version 6 uses the directory in both cases. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.u - tmpdepfile2=$base.u - tmpdepfile3=$dir.libs/$base.u - "$@" -Wc,-M - else - tmpdepfile1=$dir$base.u - tmpdepfile2=$dir$base.u - tmpdepfile3=$dir$base.u - "$@" -M - fi - stat=$? - - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - # Each line is of the form `foo.o: dependent.h'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -icc) - # Intel's C compiler understands `-MD -MF file'. However on - # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want: - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using \ : - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form `foo.o: dependent.h', - # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | - sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp2) - # The "hp" stanza above does not work with aCC (C++) and HP's ia64 - # compilers, which have integrated preprocessors. The correct option - # to use with these is +Maked; it writes dependencies to a file named - # 'foo.d', which lands next to the object file, wherever that - # happens to be. - # Much of this is similar to the tru64 case; see comments there. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir.libs/$base.d - "$@" -Wc,+Maked - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - "$@" +Maked - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" - # Add `dependent.h:' lines. - sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" "$tmpdepfile2" - ;; - -tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in `foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - # With Tru64 cc, shared objects can also be used to make a - # static library. This mechanism is used in libtool 1.4 series to - # handle both shared and static libraries in a single compilation. - # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. - # - # With libtool 1.5 this exception was removed, and libtool now - # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 - tmpdepfile2=$dir$base.o.d # libtool 1.5 - tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 - tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.o.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - tmpdepfile4=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for `:' - # in the target name. This is to cope with DOS-style filenames: - # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. - "$@" $dashmflag | - sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - tr ' ' ' -' < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - "$@" || exit $? - # Remove any Libtool call - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no eat=no - for arg - do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - if test $eat = yes; then - eat=no - continue - fi - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - # Strip any option that makedepend may not understand. Remove - # the object too, otherwise makedepend will parse it as a source file. - -arch) - eat=yes ;; - -*|$object) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done - obj_suffix=`echo "$object" | sed 's/^.*\././'` - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' ' -' | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - "$@" -E | - sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - IFS=" " - for arg - do - case "$arg" in - -o) - shift - ;; - $object) - shift - ;; - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E 2>/dev/null | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" - echo " " >> "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvcmsys) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/platform/win32/msvc/external/lame/frontend/get_audio.c b/platform/win32/msvc/external/lame/frontend/get_audio.c deleted file mode 100644 index 79a684ed644..00000000000 --- a/platform/win32/msvc/external/lame/frontend/get_audio.c +++ /dev/null @@ -1,2220 +0,0 @@ -/* - * Get Audio routines source file - * - * Copyright (c) 1999 Albert L Faber - * 2008-2012 Robert Hegemann - * - * 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. - */ - -/* $Id: get_audio.c,v 1.152.2.2 2012/02/11 12:00:59 robert Exp $ */ - - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include - -#ifdef HAVE_LIMITS_H -# include -#endif - -#include - -#ifdef STDC_HEADERS -# include -# include -#else -# ifndef HAVE_STRCHR -# define strchr index -# define strrchr rindex -# endif -char *strchr(), *strrchr(); -# ifndef HAVE_MEMCPY -# define memcpy(d, s, n) bcopy ((s), (d), (n)) -# define memmove(d, s, n) bcopy ((s), (d), (n)) -# endif -#endif - -#ifdef HAVE_INTTYPES_H -# include -#else -# ifdef HAVE_STDINT_H -# include -# endif -#endif - -#define MAX_U_32_NUM 0xFFFFFFFF - - -#include - -#if defined(__riscos__) -# include -# include -#elif defined(_WIN32) -# include -# include -#else -# include -#endif - -#ifdef __sun__ -/* woraround for SunOS 4.x, it has SEEK_* defined here */ -#include -#endif - -#include "lame.h" -#include "main.h" -#include "get_audio.h" -#include "lametime.h" -#include "console.h" - -#ifdef WITH_DMALLOC -#include -#endif - -#ifndef STR -# define __STR(x) #x -# define STR(x) __STR(x) -#define __LOC__ __FILE__ "("STR(__LINE__)") : " -#endif - - -#define FLOAT_TO_UNSIGNED(f) ((unsigned long)(((long)((f) - 2147483648.0)) + 2147483647L + 1)) -#define UNSIGNED_TO_FLOAT(u) (((double)((long)((u) - 2147483647L - 1))) + 2147483648.0) - -static unsigned int uint32_high_low(unsigned char *bytes) -{ - uint32_t const hh = bytes[0]; - uint32_t const hl = bytes[1]; - uint32_t const lh = bytes[2]; - uint32_t const ll = bytes[3]; - return (hh << 24) | (hl << 16) | (lh << 8) | ll; -} - -static double -read_ieee_extended_high_low(FILE * fp) -{ - unsigned char bytes[10]; - memset(bytes, 0, 10); - fread(bytes, 1, 10, fp); - { - int32_t const s = (bytes[0] & 0x80); - int32_t const e_h = (bytes[0] & 0x7F); - int32_t const e_l = bytes[1]; - int32_t e = (e_h << 8) | e_l; - uint32_t const hm = uint32_high_low(bytes + 2); - uint32_t const lm = uint32_high_low(bytes + 6); - double result = 0; - if (e != 0 || hm != 0 || lm != 0) { - if (e == 0x7fff) { - result = HUGE_VAL; - } - else { - double mantissa_h = UNSIGNED_TO_FLOAT(hm); - double mantissa_l = UNSIGNED_TO_FLOAT(lm); - e -= 0x3fff; - e -= 31; - result = ldexp(mantissa_h, e); - e -= 32; - result += ldexp(mantissa_l, e); - } - } - return s ? -result : result; - } -} - - -static int -read_16_bits_low_high(FILE * fp) -{ - unsigned char bytes[2] = { 0, 0 }; - fread(bytes, 1, 2, fp); - { - int32_t const low = bytes[0]; - int32_t const high = (signed char) (bytes[1]); - return (high << 8) | low; - } -} - - -static int -read_32_bits_low_high(FILE * fp) -{ - unsigned char bytes[4] = { 0, 0, 0, 0 }; - fread(bytes, 1, 4, fp); - { - int32_t const low = bytes[0]; - int32_t const medl = bytes[1]; - int32_t const medh = bytes[2]; - int32_t const high = (signed char) (bytes[3]); - return (high << 24) | (medh << 16) | (medl << 8) | low; - } -} - -static int -read_16_bits_high_low(FILE * fp) -{ - unsigned char bytes[2] = { 0, 0 }; - fread(bytes, 1, 2, fp); - { - int32_t const low = bytes[1]; - int32_t const high = (signed char) (bytes[0]); - return (high << 8) | low; - } -} - -static int -read_32_bits_high_low(FILE * fp) -{ - unsigned char bytes[4] = { 0, 0, 0, 0 }; - fread(bytes, 1, 4, fp); - { - int32_t const low = bytes[3]; - int32_t const medl = bytes[2]; - int32_t const medh = bytes[1]; - int32_t const high = (signed char) (bytes[0]); - return (high << 24) | (medh << 16) | (medl << 8) | low; - } -} - -static void -write_16_bits_low_high(FILE * fp, int val) -{ - unsigned char bytes[2]; - bytes[0] = (val & 0xff); - bytes[1] = ((val >> 8) & 0xff); - fwrite(bytes, 1, 2, fp); -} - -static void -write_32_bits_low_high(FILE * fp, int val) -{ - unsigned char bytes[4]; - bytes[0] = (val & 0xff); - bytes[1] = ((val >> 8) & 0xff); - bytes[2] = ((val >> 16) & 0xff); - bytes[3] = ((val >> 24) & 0xff); - fwrite(bytes, 1, 4, fp); -} - -#ifdef LIBSNDFILE - -#include - - -#else - -typedef void SNDFILE; - -#endif /* ifdef LIBSNDFILE */ - - - -typedef struct blockAlign_struct { - unsigned long offset; - unsigned long blockSize; -} blockAlign; - -typedef struct IFF_AIFF_struct { - short numChannels; - unsigned long numSampleFrames; - short sampleSize; - double sampleRate; - unsigned long sampleType; - blockAlign blkAlgn; -} IFF_AIFF; - - - -struct PcmBuffer { - void *ch[2]; /* buffer for each channel */ - int w; /* sample width */ - int n; /* number samples allocated */ - int u; /* number samples used */ - int skip_start; /* number samples to ignore at the beginning */ - int skip_end; /* number samples to ignore at the end */ -}; - -typedef struct PcmBuffer PcmBuffer; - -static void -initPcmBuffer(PcmBuffer * b, int w) -{ - b->ch[0] = 0; - b->ch[1] = 0; - b->w = w; - b->n = 0; - b->u = 0; - b->skip_start = 0; - b->skip_end = 0; -} - -static void -freePcmBuffer(PcmBuffer * b) -{ - if (b != 0) { - free(b->ch[0]); - free(b->ch[1]); - b->ch[0] = 0; - b->ch[1] = 0; - b->n = 0; - b->u = 0; - } -} - -static int -addPcmBuffer(PcmBuffer * b, void *a0, void *a1, int read) -{ - int a_n; - - if (b == 0) { - return 0; - } - if (read < 0) { - return b->u - b->skip_end; - } - if (b->skip_start >= read) { - b->skip_start -= read; - return b->u - b->skip_end; - } - a_n = read - b->skip_start; - - if (b != 0 && a_n > 0) { - int const a_skip = b->w * b->skip_start; - int const a_want = b->w * a_n; - int const b_used = b->w * b->u; - int const b_have = b->w * b->n; - int const b_need = b->w * (b->u + a_n); - if (b_have < b_need) { - b->n = b->u + a_n; - b->ch[0] = realloc(b->ch[0], b_need); - b->ch[1] = realloc(b->ch[1], b_need); - } - b->u += a_n; - if (b->ch[0] != 0 && a0 != 0) { - char *src = a0; - char *dst = b->ch[0]; - memcpy(dst + b_used, src + a_skip, a_want); - } - if (b->ch[1] != 0 && a1 != 0) { - char *src = a1; - char *dst = b->ch[1]; - memcpy(dst + b_used, src + a_skip, a_want); - } - } - b->skip_start = 0; - return b->u - b->skip_end; -} - -static int -takePcmBuffer(PcmBuffer * b, void *a0, void *a1, int a_n, int mm) -{ - if (a_n > mm) { - a_n = mm; - } - if (b != 0 && a_n > 0) { - int const a_take = b->w * a_n; - if (a0 != 0 && b->ch[0] != 0) { - memcpy(a0, b->ch[0], a_take); - } - if (a1 != 0 && b->ch[1] != 0) { - memcpy(a1, b->ch[1], a_take); - } - b->u -= a_n; - if (b->u < 0) { - b->u = 0; - return a_n; - } - if (b->ch[0] != 0) { - memmove(b->ch[0], (char *) b->ch[0] + a_take, b->w * b->u); - } - if (b->ch[1] != 0) { - memmove(b->ch[1], (char *) b->ch[1] + a_take, b->w * b->u); - } - } - return a_n; -} - -/* global data for get_audio.c. */ -typedef struct get_audio_global_data_struct { - int count_samples_carefully; - int pcmbitwidth; - int pcmswapbytes; - int pcm_is_unsigned_8bit; - int pcm_is_ieee_float; - unsigned int num_samples_read; - FILE *music_in; - SNDFILE *snd_file; - hip_t hip; - PcmBuffer pcm32; - PcmBuffer pcm16; - size_t in_id3v2_size; - unsigned char* in_id3v2_tag; -} get_audio_global_data; - -static get_audio_global_data global; - - - -#ifdef AMIGA_MPEGA -int lame_decode_initfile(const char *fullname, mp3data_struct * const mp3data); -#else -int lame_decode_initfile(FILE * fd, mp3data_struct * mp3data, int *enc_delay, int *enc_padding); -#endif - -/* read mp3 file until mpglib returns one frame of PCM data */ -static int lame_decode_fromfile(FILE * fd, short int pcm_l[], short int pcm_r[], - mp3data_struct * mp3data); - - -static int read_samples_pcm(FILE * musicin, int sample_buffer[2304], int samples_to_read); -static int read_samples_mp3(lame_t gfp, FILE * musicin, short int mpg123pcm[2][1152]); -#ifdef LIBSNDFILE -static SNDFILE *open_snd_file(lame_t gfp, char const *inPath); -#endif -static FILE *open_mpeg_file(lame_t gfp, char const *inPath, int *enc_delay, int *enc_padding); -static FILE *open_wave_file(lame_t gfp, char const *inPath); -static int close_input_file(FILE * musicin); - - -static size_t -min_size_t(size_t a, size_t b) -{ - if (a < b) { - return a; - } - return b; -} - -enum ByteOrder machine_byte_order(void); - -enum ByteOrder -machine_byte_order(void) -{ - long one = 1; - return !(*((char *) (&one))) ? ByteOrderBigEndian : ByteOrderLittleEndian; -} - - - -/* Replacement for forward fseek(,,SEEK_CUR), because fseek() fails on pipes */ - - -static int -fskip(FILE * fp, long offset, int whence) -{ -#ifndef PIPE_BUF - char buffer[4096]; -#else - char buffer[PIPE_BUF]; -#endif - -/* S_ISFIFO macro is defined on newer Linuxes */ -#ifndef S_ISFIFO -# ifdef _S_IFIFO - /* _S_IFIFO is defined on Win32 and Cygwin */ -# define S_ISFIFO(m) (((m)&_S_IFIFO) == _S_IFIFO) -# endif -#endif - -#ifdef S_ISFIFO - /* fseek is known to fail on pipes with several C-Library implementations - workaround: 1) test for pipe - 2) for pipes, only relatvie seeking is possible - 3) and only in forward direction! - else fallback to old code - */ - { - int const fd = fileno(fp); - struct stat file_stat; - - if (fstat(fd, &file_stat) == 0) { - if (S_ISFIFO(file_stat.st_mode)) { - if (whence != SEEK_CUR || offset < 0) { - return -1; - } - while (offset > 0) { - size_t const bytes_to_skip = min_size_t(sizeof(buffer), offset); - size_t const read = fread(buffer, 1, bytes_to_skip, fp); - if (read < 1) { - return -1; - } - offset -= read; - } - return 0; - } - } - } -#endif - if (0 == fseek(fp, offset, whence)) { - return 0; - } - - if (whence != SEEK_CUR || offset < 0) { - if (global_ui_config.silent < 10) { - error_printf - ("fskip problem: Mostly the return status of functions is not evaluate so it is more secure to polute .\n"); - } - return -1; - } - - while (offset > 0) { - size_t const bytes_to_skip = min_size_t(sizeof(buffer), offset); - size_t const read = fread(buffer, 1, bytes_to_skip, fp); - if (read < 1) { - return -1; - } - offset -= read; - } - - return 0; -} - - -static off_t -lame_get_file_size(FILE * fp) -{ - struct stat sb; - int fd = fileno(fp); - - if (0 == fstat(fd, &sb)) - return sb.st_size; - return (off_t) - 1; -} - - -FILE * -init_outfile(char const *outPath, int decode) -{ - FILE *outf; - - /* open the output file */ - if (0 == strcmp(outPath, "-")) { - outf = stdout; - lame_set_stream_binary_mode(outf); - } - else { - outf = lame_fopen(outPath, "w+b"); -#ifdef __riscos__ - /* Assign correct file type */ - if (outf != NULL) { - char *p, *out_path = strdup(outPath); - for (p = out_path; *p; p++) { /* ugly, ugly to modify a string */ - switch (*p) { - case '.': - *p = '/'; - break; - case '/': - *p = '.'; - break; - } - } - SetFiletype(out_path, decode ? 0xFB1 /*WAV*/ : 0x1AD /*AMPEG*/); - free(out_path); - } -#else - (void) decode; -#endif - } - return outf; -} - - -static void -setSkipStartAndEnd(lame_t gfp, int enc_delay, int enc_padding) -{ - int skip_start = 0, skip_end = 0; - - if (global_decoder.mp3_delay_set) - skip_start = global_decoder.mp3_delay; - - switch (global_reader.input_format) { - case sf_mp123: - break; - - case sf_mp3: - if (skip_start == 0) { - if (enc_delay > -1 || enc_padding > -1) { - if (enc_delay > -1) - skip_start = enc_delay + 528 + 1; - if (enc_padding > -1) - skip_end = enc_padding - (528 + 1); - } - else - skip_start = lame_get_encoder_delay(gfp) + 528 + 1; - } - else { - /* user specified a value of skip. just add for decoder */ - skip_start += 528 + 1; /* mp3 decoder has a 528 sample delay, plus user supplied "skip" */ - } - break; - case sf_mp2: - skip_start += 240 + 1; - break; - case sf_mp1: - skip_start += 240 + 1; - break; - case sf_raw: - skip_start += 0; /* other formats have no delay *//* is += 0 not better ??? */ - break; - case sf_wave: - skip_start += 0; /* other formats have no delay *//* is += 0 not better ??? */ - break; - case sf_aiff: - skip_start += 0; /* other formats have no delay *//* is += 0 not better ??? */ - break; - default: - skip_start += 0; /* other formats have no delay *//* is += 0 not better ??? */ - break; - } - skip_start = skip_start < 0 ? 0 : skip_start; - skip_end = skip_end < 0 ? 0 : skip_end; - global. pcm16.skip_start = global.pcm32.skip_start = skip_start; - global. pcm16.skip_end = global.pcm32.skip_end = skip_end; -} - - - -int -init_infile(lame_t gfp, char const *inPath) -{ - int enc_delay = 0, enc_padding = 0; - /* open the input file */ - global. count_samples_carefully = 0; - global. num_samples_read = 0; - global. pcmbitwidth = global_raw_pcm.in_bitwidth; - global. pcmswapbytes = global_reader.swapbytes; - global. pcm_is_unsigned_8bit = global_raw_pcm.in_signed == 1 ? 0 : 1; - global. pcm_is_ieee_float = 0; - global. hip = 0; - global. music_in = 0; - global. snd_file = 0; - global. in_id3v2_size = 0; - global. in_id3v2_tag = 0; - if (is_mpeg_file_format(global_reader.input_format)) { - global. music_in = open_mpeg_file(gfp, inPath, &enc_delay, &enc_padding); - } - else { -#ifdef LIBSNDFILE - if (strcmp(inPath, "-") != 0) { /* not for stdin */ - global. snd_file = open_snd_file(gfp, inPath); - } -#endif - if (global.snd_file == 0) { - global. music_in = open_wave_file(gfp, inPath); - } - } - initPcmBuffer(&global.pcm32, sizeof(int)); - initPcmBuffer(&global.pcm16, sizeof(short)); - setSkipStartAndEnd(gfp, enc_delay, enc_padding); - { - unsigned long n = lame_get_num_samples(gfp); - if (n != MAX_U_32_NUM) { - unsigned long const discard = global.pcm32.skip_start + global.pcm32.skip_end; - lame_set_num_samples(gfp, n > discard ? n - discard : 0); - } - } - return (global.snd_file != NULL || global.music_in != NULL) ? 1 : -1; -} - -int -samples_to_skip_at_start(void) -{ - return global.pcm32.skip_start; -} - -int -samples_to_skip_at_end(void) -{ - return global.pcm32.skip_end; -} - -void -close_infile(void) -{ - close_input_file(global.music_in); -#ifdef LIBSNDFILE - if (global.snd_file) { - if (sf_close(global.snd_file) != 0) { - if (global_ui_config.silent < 10) { - error_printf("Could not close sound file \n"); - } - } - global. snd_file = 0; - } -#endif - freePcmBuffer(&global.pcm32); - freePcmBuffer(&global.pcm16); - global. music_in = 0; - free(global.in_id3v2_tag); - global.in_id3v2_tag = 0; - global.in_id3v2_size = 0; -} - - -static int - get_audio_common(lame_t gfp, int buffer[2][1152], short buffer16[2][1152]); - -/************************************************************************ -* -* get_audio() -* -* PURPOSE: reads a frame of audio data from a file to the buffer, -* aligns the data for future processing, and separates the -* left and right channels -* -************************************************************************/ -int -get_audio(lame_t gfp, int buffer[2][1152]) -{ - int used = 0, read = 0; - do { - read = get_audio_common(gfp, buffer, NULL); - used = addPcmBuffer(&global.pcm32, buffer[0], buffer[1], read); - } while (used <= 0 && read > 0); - if (read < 0) { - return read; - } - if (global_reader.swap_channel == 0) - return takePcmBuffer(&global.pcm32, buffer[0], buffer[1], used, 1152); - else - return takePcmBuffer(&global.pcm32, buffer[1], buffer[0], used, 1152); -} - -/* - get_audio16 - behave as the original get_audio function, with a limited - 16 bit per sample output -*/ -int -get_audio16(lame_t gfp, short buffer[2][1152]) -{ - int used = 0, read = 0; - do { - read = get_audio_common(gfp, NULL, buffer); - used = addPcmBuffer(&global.pcm16, buffer[0], buffer[1], read); - } while (used <= 0 && read > 0); - if (read < 0) { - return read; - } - if (global_reader.swap_channel == 0) - return takePcmBuffer(&global.pcm16, buffer[0], buffer[1], used, 1152); - else - return takePcmBuffer(&global.pcm16, buffer[1], buffer[0], used, 1152); -} - -/************************************************************************ - get_audio_common - central functionality of get_audio* - in: gfp - buffer output to the int buffer or 16-bit buffer - out: buffer int output (if buffer != NULL) - buffer16 16-bit output (if buffer == NULL) -returns: samples read -note: either buffer or buffer16 must be allocated upon call -*/ -static int -get_audio_common(lame_t gfp, int buffer[2][1152], short buffer16[2][1152]) -{ - int num_channels = lame_get_num_channels(gfp); - int insamp[2 * 1152]; - short buf_tmp16[2][1152]; - int samples_read; - int framesize; - int samples_to_read; - unsigned int remaining, tmp_num_samples; - int i; - int *p; - - /* - * NOTE: LAME can now handle arbritray size input data packets, - * so there is no reason to read the input data in chuncks of - * size "framesize". EXCEPT: the LAME graphical frame analyzer - * will get out of sync if we read more than framesize worth of data. - */ - - samples_to_read = framesize = lame_get_framesize(gfp); - assert(framesize <= 1152); - - /* get num_samples */ - if (is_mpeg_file_format(global_reader.input_format)) { - tmp_num_samples = global_decoder.mp3input_data.nsamp; - } - else { - tmp_num_samples = lame_get_num_samples(gfp); - } - - /* if this flag has been set, then we are carefull to read - * exactly num_samples and no more. This is useful for .wav and .aiff - * files which have id3 or other tags at the end. Note that if you - * are using LIBSNDFILE, this is not necessary - */ - if (global.count_samples_carefully) { - if (global.num_samples_read < tmp_num_samples) { - remaining = tmp_num_samples - global.num_samples_read; - } - else { - remaining = 0; - } - if (remaining < (unsigned int) framesize && 0 != tmp_num_samples) - /* in case the input is a FIFO (at least it's reproducible with - a FIFO) tmp_num_samples may be 0 and therefore remaining - would be 0, but we need to read some samples, so don't - change samples_to_read to the wrong value in this case */ - samples_to_read = remaining; - } - - if (is_mpeg_file_format(global_reader.input_format)) { - if (buffer != NULL) - samples_read = read_samples_mp3(gfp, global.music_in, buf_tmp16); - else - samples_read = read_samples_mp3(gfp, global.music_in, buffer16); - if (samples_read < 0) { - return samples_read; - } - } - else { - if (global.snd_file) { -#ifdef LIBSNDFILE - samples_read = sf_read_int(global.snd_file, insamp, num_channels * samples_to_read); -#else - samples_read = 0; -#endif - } - else { - samples_read = - read_samples_pcm(global.music_in, insamp, num_channels * samples_to_read); - } - if (samples_read < 0) { - return samples_read; - } - p = insamp + samples_read; - samples_read /= num_channels; - if (buffer != NULL) { /* output to int buffer */ - if (num_channels == 2) { - for (i = samples_read; --i >= 0;) { - buffer[1][i] = *--p; - buffer[0][i] = *--p; - } - } - else if (num_channels == 1) { - memset(buffer[1], 0, samples_read * sizeof(int)); - for (i = samples_read; --i >= 0;) { - buffer[0][i] = *--p; - } - } - else - assert(0); - } - else { /* convert from int; output to 16-bit buffer */ - if (num_channels == 2) { - for (i = samples_read; --i >= 0;) { - buffer16[1][i] = *--p >> (8 * sizeof(int) - 16); - buffer16[0][i] = *--p >> (8 * sizeof(int) - 16); - } - } - else if (num_channels == 1) { - memset(buffer16[1], 0, samples_read * sizeof(short)); - for (i = samples_read; --i >= 0;) { - buffer16[0][i] = *--p >> (8 * sizeof(int) - 16); - } - } - else - assert(0); - } - } - - /* LAME mp3 output 16bit - convert to int, if necessary */ - if (is_mpeg_file_format(global_reader.input_format)) { - if (buffer != NULL) { - for (i = samples_read; --i >= 0;) - buffer[0][i] = buf_tmp16[0][i] << (8 * sizeof(int) - 16); - if (num_channels == 2) { - for (i = samples_read; --i >= 0;) - buffer[1][i] = buf_tmp16[1][i] << (8 * sizeof(int) - 16); - } - else if (num_channels == 1) { - memset(buffer[1], 0, samples_read * sizeof(int)); - } - else - assert(0); - } - } - - - /* if num_samples = MAX_U_32_NUM, then it is considered infinitely long. - Don't count the samples */ - if (tmp_num_samples != MAX_U_32_NUM) - global. num_samples_read += samples_read; - - return samples_read; -} - - - -static int -read_samples_mp3(lame_t gfp, FILE * musicin, short int mpg123pcm[2][1152]) -{ - int out; -#if defined(AMIGA_MPEGA) || defined(HAVE_MPGLIB) - int samplerate; - static const char type_name[] = "MP3 file"; - - out = lame_decode_fromfile(musicin, mpg123pcm[0], mpg123pcm[1], &global_decoder.mp3input_data); - /* - * out < 0: error, probably EOF - * out = 0: not possible with lame_decode_fromfile() ??? - * out > 0: number of output samples - */ - if (out < 0) { - memset(mpg123pcm, 0, sizeof(**mpg123pcm) * 2 * 1152); - return 0; - } - - if (lame_get_num_channels(gfp) != global_decoder.mp3input_data.stereo) { - if (global_ui_config.silent < 10) { - error_printf("Error: number of channels has changed in %s - not supported\n", - type_name); - } - out = -1; - } - samplerate = global_reader.input_samplerate; - if (samplerate == 0) { - samplerate = global_decoder.mp3input_data.samplerate; - } - if (lame_get_in_samplerate(gfp) != samplerate) { - if (global_ui_config.silent < 10) { - error_printf("Error: sample frequency has changed in %s - not supported\n", type_name); - } - out = -1; - } -#else - out = -1; -#endif - return out; -} - - -int -WriteWaveHeader(FILE * const fp, int pcmbytes, int freq, int channels, int bits) -{ - int bytes = (bits + 7) / 8; - - /* quick and dirty, but documented */ - fwrite("RIFF", 1, 4, fp); /* label */ - write_32_bits_low_high(fp, pcmbytes + 44 - 8); /* length in bytes without header */ - fwrite("WAVEfmt ", 2, 4, fp); /* 2 labels */ - write_32_bits_low_high(fp, 2 + 2 + 4 + 4 + 2 + 2); /* length of PCM format declaration area */ - write_16_bits_low_high(fp, 1); /* is PCM? */ - write_16_bits_low_high(fp, channels); /* number of channels */ - write_32_bits_low_high(fp, freq); /* sample frequency in [Hz] */ - write_32_bits_low_high(fp, freq * channels * bytes); /* bytes per second */ - write_16_bits_low_high(fp, channels * bytes); /* bytes per sample time */ - write_16_bits_low_high(fp, bits); /* bits per sample */ - fwrite("data", 1, 4, fp); /* label */ - write_32_bits_low_high(fp, pcmbytes); /* length in bytes of raw PCM data */ - - return ferror(fp) ? -1 : 0; -} - - - - -#if defined(LIBSNDFILE) - -extern SNDFILE *sf_wchar_open(wchar_t const *wpath, int mode, SF_INFO * sfinfo); - -static SNDFILE * -open_snd_file(lame_t gfp, char const *inPath) -{ - char const *lpszFileName = inPath; - SNDFILE *gs_pSndFileIn = NULL; - SF_INFO gs_wfInfo; - - { -#ifdef _WIN32 - wchar_t *file_name = utf8ToUnicode(lpszFileName); -#endif - /* Try to open the sound file */ - memset(&gs_wfInfo, 0, sizeof(gs_wfInfo)); -#ifdef _WIN32 - gs_pSndFileIn = sf_wchar_open(file_name, SFM_READ, &gs_wfInfo); -#else - gs_pSndFileIn = sf_open(lpszFileName, SFM_READ, &gs_wfInfo); -#endif - - if (gs_pSndFileIn == NULL) { - if (global_raw_pcm.in_signed == 0 && global_raw_pcm.in_bitwidth != 8) { - error_printf("Unsigned input only supported with bitwidth 8\n"); - exit(1); - } - /* set some defaults incase input is raw PCM */ - gs_wfInfo.seekable = (global_reader.input_format != sf_raw); /* if user specified -r, set to not seekable */ - gs_wfInfo.samplerate = lame_get_in_samplerate(gfp); - gs_wfInfo.channels = lame_get_num_channels(gfp); - gs_wfInfo.format = SF_FORMAT_RAW; - if ((global_raw_pcm.in_endian == ByteOrderLittleEndian) ^ (global_reader.swapbytes != - 0)) { - gs_wfInfo.format |= SF_ENDIAN_LITTLE; - } - else { - gs_wfInfo.format |= SF_ENDIAN_BIG; - } - switch (global_raw_pcm.in_bitwidth) { - case 8: - gs_wfInfo.format |= - global_raw_pcm.in_signed == 0 ? SF_FORMAT_PCM_U8 : SF_FORMAT_PCM_S8; - break; - case 16: - gs_wfInfo.format |= SF_FORMAT_PCM_16; - break; - case 24: - gs_wfInfo.format |= SF_FORMAT_PCM_24; - break; - case 32: - gs_wfInfo.format |= SF_FORMAT_PCM_32; - break; - default: - break; - } -#ifdef _WIN32 - gs_pSndFileIn = sf_wchar_open(file_name, SFM_READ, &gs_wfInfo); -#else - gs_pSndFileIn = sf_open(lpszFileName, SFM_READ, &gs_wfInfo); -#endif - } -#ifdef _WIN32 - free(file_name); -#endif - - /* Check result */ - if (gs_pSndFileIn == NULL) { - sf_perror(gs_pSndFileIn); - if (global_ui_config.silent < 10) { - error_printf("Could not open sound file \"%s\".\n", lpszFileName); - } - exit(1); - } - sf_command(gs_pSndFileIn, SFC_SET_SCALE_FLOAT_INT_READ, NULL, SF_TRUE); - - if ((gs_wfInfo.format & SF_FORMAT_RAW) == SF_FORMAT_RAW) { - global_reader.input_format = sf_raw; - } - -#ifdef _DEBUG_SND_FILE - printf("\n\nSF_INFO structure\n"); - printf("samplerate :%d\n", gs_wfInfo.samplerate); - printf("samples :%d\n", gs_wfInfo.frames); - printf("channels :%d\n", gs_wfInfo.channels); - printf("format :"); - - /* new formats from sbellon@sbellon.de 1/2000 */ - - switch (gs_wfInfo.format & SF_FORMAT_TYPEMASK) { - case SF_FORMAT_WAV: - printf("Microsoft WAV format (big endian). "); - break; - case SF_FORMAT_AIFF: - printf("Apple/SGI AIFF format (little endian). "); - break; - case SF_FORMAT_AU: - printf("Sun/NeXT AU format (big endian). "); - break; - /* - case SF_FORMAT_AULE: - DEBUGF("DEC AU format (little endian). "); - break; - */ - case SF_FORMAT_RAW: - printf("RAW PCM data. "); - break; - case SF_FORMAT_PAF: - printf("Ensoniq PARIS file format. "); - break; - case SF_FORMAT_SVX: - printf("Amiga IFF / SVX8 / SV16 format. "); - break; - case SF_FORMAT_NIST: - printf("Sphere NIST format. "); - break; - default: - assert(0); - break; - } - - switch (gs_wfInfo.format & SF_FORMAT_SUBMASK) { - /* - case SF_FORMAT_PCM: - DEBUGF("PCM data in 8, 16, 24 or 32 bits."); - break; - */ - case SF_FORMAT_FLOAT: - printf("32 bit Intel x86 floats."); - break; - case SF_FORMAT_ULAW: - printf("U-Law encoded."); - break; - case SF_FORMAT_ALAW: - printf("A-Law encoded."); - break; - case SF_FORMAT_IMA_ADPCM: - printf("IMA ADPCM."); - break; - case SF_FORMAT_MS_ADPCM: - printf("Microsoft ADPCM."); - break; - /* - case SF_FORMAT_PCM_BE: - DEBUGF("Big endian PCM data."); - break; - case SF_FORMAT_PCM_LE: - DEBUGF("Little endian PCM data."); - break; - */ - case SF_FORMAT_PCM_S8: - printf("Signed 8 bit PCM."); - break; - case SF_FORMAT_PCM_U8: - printf("Unsigned 8 bit PCM."); - break; - case SF_FORMAT_PCM_16: - printf("Signed 16 bit PCM."); - break; - case SF_FORMAT_PCM_24: - printf("Signed 24 bit PCM."); - break; - case SF_FORMAT_PCM_32: - printf("Signed 32 bit PCM."); - break; - /* - case SF_FORMAT_SVX_FIB: - DEBUGF("SVX Fibonacci Delta encoding."); - break; - case SF_FORMAT_SVX_EXP: - DEBUGF("SVX Exponential Delta encoding."); - break; - */ - default: - assert(0); - break; - } - - printf("\n"); - printf("sections :%d\n", gs_wfInfo.sections); - printf("seekable :\n", gs_wfInfo.seekable); -#endif - /* Check result */ - if (gs_pSndFileIn == NULL) { - sf_perror(gs_pSndFileIn); - if (global_ui_config.silent < 10) { - error_printf("Could not open sound file \"%s\".\n", lpszFileName); - } - exit(1); - } - - - (void) lame_set_num_samples(gfp, gs_wfInfo.frames); - if (-1 == lame_set_num_channels(gfp, gs_wfInfo.channels)) { - if (global_ui_config.silent < 10) { - error_printf("Unsupported number of channels: %ud\n", gs_wfInfo.channels); - } - exit(1); - } - if (global_reader.input_samplerate == 0) { - (void) lame_set_in_samplerate(gfp, gs_wfInfo.samplerate); - } - else { - (void) lame_set_in_samplerate(gfp, global_reader.input_samplerate); - } - global. pcmbitwidth = 32; - } -#if 0 - if (lame_get_num_samples(gfp) == MAX_U_32_NUM) { - /* try to figure out num_samples */ - double const flen = lame_get_file_size(lpszFileName); - if (flen >= 0) { - /* try file size, assume 2 bytes per sample */ - lame_set_num_samples(gfp, flen / (2 * lame_get_num_channels(gfp))); - } - } -#endif - return gs_pSndFileIn; -} - -#endif /* defined(LIBSNDFILE) */ - - - -/************************************************************************ -unpack_read_samples - read and unpack signed low-to-high byte or unsigned - single byte input. (used for read_samples function) - Output integers are stored in the native byte order - (little or big endian). -jd - in: samples_to_read - bytes_per_sample - swap_order - set for high-to-low byte order input stream - i/o: pcm_in - out: sample_buffer (must be allocated up to samples_to_read upon call) -returns: number of samples read -*/ -static int -unpack_read_samples(const int samples_to_read, const int bytes_per_sample, - const int swap_order, int *sample_buffer, FILE * pcm_in) -{ - size_t samples_read; - int i; - int *op; /* output pointer */ - unsigned char *ip = (unsigned char *) sample_buffer; /* input pointer */ - const int b = sizeof(int) * 8; - -#define GA_URS_IFLOOP( ga_urs_bps ) \ - if( bytes_per_sample == ga_urs_bps ) \ - for( i = samples_read * bytes_per_sample; (i -= bytes_per_sample) >=0;) - - samples_read = fread(sample_buffer, bytes_per_sample, samples_to_read, pcm_in); - op = sample_buffer + samples_read; - - if (swap_order == 0) { - GA_URS_IFLOOP(1) - * --op = ip[i] << (b - 8); - GA_URS_IFLOOP(2) - * --op = ip[i] << (b - 16) | ip[i + 1] << (b - 8); - GA_URS_IFLOOP(3) - * --op = ip[i] << (b - 24) | ip[i + 1] << (b - 16) | ip[i + 2] << (b - 8); - GA_URS_IFLOOP(4) - * --op = - ip[i] << (b - 32) | ip[i + 1] << (b - 24) | ip[i + 2] << (b - 16) | ip[i + 3] << (b - - 8); - } - else { - GA_URS_IFLOOP(1) - * --op = (ip[i] ^ 0x80) << (b - 8) | 0x7f << (b - 16); /* convert from unsigned */ - GA_URS_IFLOOP(2) - * --op = ip[i] << (b - 8) | ip[i + 1] << (b - 16); - GA_URS_IFLOOP(3) - * --op = ip[i] << (b - 8) | ip[i + 1] << (b - 16) | ip[i + 2] << (b - 24); - GA_URS_IFLOOP(4) - * --op = - ip[i] << (b - 8) | ip[i + 1] << (b - 16) | ip[i + 2] << (b - 24) | ip[i + 3] << (b - - 32); - } -#undef GA_URS_IFLOOP - if (global.pcm_is_ieee_float) { - ieee754_float32_t const m_max = INT_MAX; - ieee754_float32_t const m_min = -(ieee754_float32_t) INT_MIN; - ieee754_float32_t *x = (ieee754_float32_t *) sample_buffer; - assert(sizeof(ieee754_float32_t) == sizeof(int)); - for (i = 0; i < samples_to_read; ++i) { - ieee754_float32_t const u = x[i]; - int v; - if (u >= 1) { - v = INT_MAX; - } - else if (u <= -1) { - v = INT_MIN; - } - else if (u >= 0) { - v = (int) (u * m_max + 0.5f); - } - else { - v = (int) (u * m_min - 0.5f); - } - sample_buffer[i] = v; - } - } - return (samples_read); -} - - - -/************************************************************************ -* -* read_samples() -* -* PURPOSE: reads the PCM samples from a file to the buffer -* -* SEMANTICS: -* Reads #samples_read# number of shorts from #musicin# filepointer -* into #sample_buffer[]#. Returns the number of samples read. -* -************************************************************************/ - -static int -read_samples_pcm(FILE * musicin, int sample_buffer[2304], int samples_to_read) -{ - int samples_read; - int bytes_per_sample = global.pcmbitwidth / 8; - int swap_byte_order; /* byte order of input stream */ - - switch (global.pcmbitwidth) { - case 32: - case 24: - case 16: - if (global_raw_pcm.in_signed == 0) { - if (global_ui_config.silent < 10) { - error_printf("Unsigned input only supported with bitwidth 8\n"); - } - return -1; - } - swap_byte_order = (global_raw_pcm.in_endian != ByteOrderLittleEndian) ? 1 : 0; - if (global.pcmswapbytes) { - swap_byte_order = !swap_byte_order; - } - break; - - case 8: - swap_byte_order = global.pcm_is_unsigned_8bit; - break; - - default: - if (global_ui_config.silent < 10) { - error_printf("Only 8, 16, 24 and 32 bit input files supported \n"); - } - return -1; - } - samples_read = unpack_read_samples(samples_to_read, bytes_per_sample, swap_byte_order, - sample_buffer, musicin); - if (ferror(musicin)) { - if (global_ui_config.silent < 10) { - error_printf("Error reading input file\n"); - } - return -1; - } - - return samples_read; -} - - - -/* AIFF Definitions */ - -static int const IFF_ID_FORM = 0x464f524d; /* "FORM" */ -static int const IFF_ID_AIFF = 0x41494646; /* "AIFF" */ -static int const IFF_ID_AIFC = 0x41494643; /* "AIFC" */ -static int const IFF_ID_COMM = 0x434f4d4d; /* "COMM" */ -static int const IFF_ID_SSND = 0x53534e44; /* "SSND" */ -static int const IFF_ID_MPEG = 0x4d504547; /* "MPEG" */ - -static int const IFF_ID_NONE = 0x4e4f4e45; /* "NONE" *//* AIFF-C data format */ -static int const IFF_ID_2CBE = 0x74776f73; /* "twos" *//* AIFF-C data format */ -static int const IFF_ID_2CLE = 0x736f7774; /* "sowt" *//* AIFF-C data format */ - -static int const WAV_ID_RIFF = 0x52494646; /* "RIFF" */ -static int const WAV_ID_WAVE = 0x57415645; /* "WAVE" */ -static int const WAV_ID_FMT = 0x666d7420; /* "fmt " */ -static int const WAV_ID_DATA = 0x64617461; /* "data" */ - -#ifndef WAVE_FORMAT_PCM -static short const WAVE_FORMAT_PCM = 0x0001; -#endif -#ifndef WAVE_FORMAT_IEEE_FLOAT -static short const WAVE_FORMAT_IEEE_FLOAT = 0x0003; -#endif -#ifndef WAVE_FORMAT_EXTENSIBLE -static short const WAVE_FORMAT_EXTENSIBLE = 0xFFFE; -#endif - - -static long -make_even_number_of_bytes_in_length(long x) -{ - if ((x & 0x01) != 0) { - return x + 1; - } - return x; -} - - -/***************************************************************************** - * - * Read Microsoft Wave headers - * - * By the time we get here the first 32-bits of the file have already been - * read, and we're pretty sure that we're looking at a WAV file. - * - *****************************************************************************/ - -static int -parse_wave_header(lame_global_flags * gfp, FILE * sf) -{ - int format_tag = 0; - int channels = 0; - int block_align = 0; - int bits_per_sample = 0; - int samples_per_sec = 0; - int avg_bytes_per_sec = 0; - - - int is_wav = 0; - long data_length = 0, file_length, subSize = 0; - int loop_sanity = 0; - - file_length = read_32_bits_high_low(sf); - if (read_32_bits_high_low(sf) != WAV_ID_WAVE) - return -1; - - for (loop_sanity = 0; loop_sanity < 20; ++loop_sanity) { - int type = read_32_bits_high_low(sf); - - if (type == WAV_ID_FMT) { - subSize = read_32_bits_low_high(sf); - subSize = make_even_number_of_bytes_in_length(subSize); - if (subSize < 16) { - /*DEBUGF( - "'fmt' chunk too short (only %ld bytes)!", subSize); */ - return -1; - } - - format_tag = read_16_bits_low_high(sf); - subSize -= 2; - channels = read_16_bits_low_high(sf); - subSize -= 2; - samples_per_sec = read_32_bits_low_high(sf); - subSize -= 4; - avg_bytes_per_sec = read_32_bits_low_high(sf); - subSize -= 4; - block_align = read_16_bits_low_high(sf); - subSize -= 2; - bits_per_sample = read_16_bits_low_high(sf); - subSize -= 2; - - /* WAVE_FORMAT_EXTENSIBLE support */ - if ((subSize > 9) && (format_tag == WAVE_FORMAT_EXTENSIBLE)) { - read_16_bits_low_high(sf); /* cbSize */ - read_16_bits_low_high(sf); /* ValidBitsPerSample */ - read_32_bits_low_high(sf); /* ChannelMask */ - /* SubType coincident with format_tag for PCM int or float */ - format_tag = read_16_bits_low_high(sf); - subSize -= 10; - } - - /* DEBUGF(" skipping %d bytes\n", subSize); */ - - if (subSize > 0) { - if (fskip(sf, (long) subSize, SEEK_CUR) != 0) - return -1; - }; - - } - else if (type == WAV_ID_DATA) { - subSize = read_32_bits_low_high(sf); - data_length = subSize; - is_wav = 1; - /* We've found the audio data. Read no further! */ - break; - - } - else { - subSize = read_32_bits_low_high(sf); - subSize = make_even_number_of_bytes_in_length(subSize); - if (fskip(sf, (long) subSize, SEEK_CUR) != 0) { - return -1; - } - } - } - if (is_wav) { - if (format_tag != WAVE_FORMAT_PCM && format_tag != WAVE_FORMAT_IEEE_FLOAT) { - if (global_ui_config.silent < 10) { - error_printf("Unsupported data format: 0x%04X\n", format_tag); - } - return 0; /* oh no! non-supported format */ - } - - - /* make sure the header is sane */ - if (-1 == lame_set_num_channels(gfp, channels)) { - if (global_ui_config.silent < 10) { - error_printf("Unsupported number of channels: %u\n", channels); - } - return 0; - } - if (global_reader.input_samplerate == 0) { - (void) lame_set_in_samplerate(gfp, samples_per_sec); - } - else { - (void) lame_set_in_samplerate(gfp, global_reader.input_samplerate); - } - global. pcmbitwidth = bits_per_sample; - global. pcm_is_unsigned_8bit = 1; - global. pcm_is_ieee_float = (format_tag == WAVE_FORMAT_IEEE_FLOAT ? 1 : 0); - (void) lame_set_num_samples(gfp, data_length / (channels * ((bits_per_sample + 7) / 8))); - return 1; - } - return -1; -} - - - -/************************************************************************ -* aiff_check2 -* -* PURPOSE: Checks AIFF header information to make sure it is valid. -* returns 0 on success, 1 on errors -************************************************************************/ - -static int -aiff_check2(IFF_AIFF * const pcm_aiff_data) -{ - if (pcm_aiff_data->sampleType != (unsigned long) IFF_ID_SSND) { - if (global_ui_config.silent < 10) { - error_printf("ERROR: input sound data is not PCM\n"); - } - return 1; - } - switch (pcm_aiff_data->sampleSize) { - case 32: - case 24: - case 16: - case 8: - break; - default: - if (global_ui_config.silent < 10) { - error_printf("ERROR: input sound data is not 8, 16, 24 or 32 bits\n"); - } - return 1; - } - if (pcm_aiff_data->numChannels != 1 && pcm_aiff_data->numChannels != 2) { - if (global_ui_config.silent < 10) { - error_printf("ERROR: input sound data is not mono or stereo\n"); - } - return 1; - } - if (pcm_aiff_data->blkAlgn.blockSize != 0) { - if (global_ui_config.silent < 10) { - error_printf("ERROR: block size of input sound data is not 0 bytes\n"); - } - return 1; - } - /* A bug, since we correctly skip the offset earlier in the code. - if (pcm_aiff_data->blkAlgn.offset != 0) { - error_printf("Block offset is not 0 bytes in '%s'\n", file_name); - return 1; - } */ - - return 0; -} - - -/***************************************************************************** - * - * Read Audio Interchange File Format (AIFF) headers. - * - * By the time we get here the first 32 bits of the file have already been - * read, and we're pretty sure that we're looking at an AIFF file. - * - *****************************************************************************/ - -static int -parse_aiff_header(lame_global_flags * gfp, FILE * sf) -{ - long chunkSize = 0, subSize = 0, typeID = 0, dataType = IFF_ID_NONE; - IFF_AIFF aiff_info; - int seen_comm_chunk = 0, seen_ssnd_chunk = 0; - long pcm_data_pos = -1; - - memset(&aiff_info, 0, sizeof(aiff_info)); - chunkSize = read_32_bits_high_low(sf); - - typeID = read_32_bits_high_low(sf); - if ((typeID != IFF_ID_AIFF) && (typeID != IFF_ID_AIFC)) - return -1; - - while (chunkSize > 0) { - long ckSize; - int type = read_32_bits_high_low(sf); - chunkSize -= 4; - - /* DEBUGF( - "found chunk type %08x '%4.4s'\n", type, (char*)&type); */ - - /* don't use a switch here to make it easier to use 'break' for SSND */ - if (type == IFF_ID_COMM) { - seen_comm_chunk = seen_ssnd_chunk + 1; - subSize = read_32_bits_high_low(sf); - ckSize = make_even_number_of_bytes_in_length(subSize); - chunkSize -= ckSize; - - aiff_info.numChannels = (short) read_16_bits_high_low(sf); - ckSize -= 2; - aiff_info.numSampleFrames = read_32_bits_high_low(sf); - ckSize -= 4; - aiff_info.sampleSize = (short) read_16_bits_high_low(sf); - ckSize -= 2; - aiff_info.sampleRate = read_ieee_extended_high_low(sf); - ckSize -= 10; - if (typeID == IFF_ID_AIFC) { - dataType = read_32_bits_high_low(sf); - ckSize -= 4; - } - if (fskip(sf, ckSize, SEEK_CUR) != 0) - return -1; - } - else if (type == IFF_ID_SSND) { - seen_ssnd_chunk = 1; - subSize = read_32_bits_high_low(sf); - ckSize = make_even_number_of_bytes_in_length(subSize); - chunkSize -= ckSize; - - aiff_info.blkAlgn.offset = read_32_bits_high_low(sf); - ckSize -= 4; - aiff_info.blkAlgn.blockSize = read_32_bits_high_low(sf); - ckSize -= 4; - - aiff_info.sampleType = IFF_ID_SSND; - - if (seen_comm_chunk > 0) { - if (fskip(sf, (long) aiff_info.blkAlgn.offset, SEEK_CUR) != 0) - return -1; - /* We've found the audio data. Read no further! */ - break; - } - pcm_data_pos = ftell(sf); - if (pcm_data_pos >= 0) { - pcm_data_pos += aiff_info.blkAlgn.offset; - } - if (fskip(sf, ckSize, SEEK_CUR) != 0) - return -1; - } - else { - subSize = read_32_bits_high_low(sf); - ckSize = make_even_number_of_bytes_in_length(subSize); - chunkSize -= ckSize; - - if (fskip(sf, ckSize, SEEK_CUR) != 0) - return -1; - } - } - if (dataType == IFF_ID_2CLE) { - global. pcmswapbytes = global_reader.swapbytes; - } - else if (dataType == IFF_ID_2CBE) { - global. pcmswapbytes = !global_reader.swapbytes; - } - else if (dataType == IFF_ID_NONE) { - global. pcmswapbytes = !global_reader.swapbytes; - } - else { - return -1; - } - - /* DEBUGF("Parsed AIFF %d\n", is_aiff); */ - if (seen_comm_chunk && (seen_ssnd_chunk > 0 || aiff_info.numSampleFrames == 0)) { - /* make sure the header is sane */ - if (0 != aiff_check2(&aiff_info)) - return 0; - if (-1 == lame_set_num_channels(gfp, aiff_info.numChannels)) { - if (global_ui_config.silent < 10) { - error_printf("Unsupported number of channels: %u\n", aiff_info.numChannels); - } - return 0; - } - if (global_reader.input_samplerate == 0) { - (void) lame_set_in_samplerate(gfp, (int) aiff_info.sampleRate); - } - else { - (void) lame_set_in_samplerate(gfp, global_reader.input_samplerate); - } - (void) lame_set_num_samples(gfp, aiff_info.numSampleFrames); - global. pcmbitwidth = aiff_info.sampleSize; - global. pcm_is_unsigned_8bit = 0; - global. pcm_is_ieee_float = 0; /* FIXME: possible ??? */ - if (pcm_data_pos >= 0) { - if (fseek(sf, pcm_data_pos, SEEK_SET) != 0) { - if (global_ui_config.silent < 10) { - error_printf("Can't rewind stream to audio data position\n"); - } - return 0; - } - } - - return 1; - } - return -1; -} - - - -/************************************************************************ -* -* parse_file_header -* -* PURPOSE: Read the header from a bytestream. Try to determine whether -* it's a WAV file or AIFF without rewinding, since rewind -* doesn't work on pipes and there's a good chance we're reading -* from stdin (otherwise we'd probably be using libsndfile). -* -* When this function returns, the file offset will be positioned at the -* beginning of the sound data. -* -************************************************************************/ - -static int -parse_file_header(lame_global_flags * gfp, FILE * sf) -{ - - int type = read_32_bits_high_low(sf); - /* - DEBUGF( - "First word of input stream: %08x '%4.4s'\n", type, (char*) &type); - */ - global. count_samples_carefully = 0; - global. pcm_is_unsigned_8bit = global_raw_pcm.in_signed == 1 ? 0 : 1; - /*global_reader.input_format = sf_raw; commented out, because it is better to fail - here as to encode some hundreds of input files not supported by LAME - If you know you have RAW PCM data, use the -r switch - */ - - if (type == WAV_ID_RIFF) { - /* It's probably a WAV file */ - int const ret = parse_wave_header(gfp, sf); - if (ret > 0) { - global. count_samples_carefully = 1; - return sf_wave; - } - if (ret < 0) { - if (global_ui_config.silent < 10) { - error_printf("Warning: corrupt or unsupported WAVE format\n"); - } - } - } - else if (type == IFF_ID_FORM) { - /* It's probably an AIFF file */ - int const ret = parse_aiff_header(gfp, sf); - if (ret > 0) { - global. count_samples_carefully = 1; - return sf_aiff; - } - if (ret < 0) { - if (global_ui_config.silent < 10) { - error_printf("Warning: corrupt or unsupported AIFF format\n"); - } - } - } - else { - if (global_ui_config.silent < 10) { - error_printf("Warning: unsupported audio format\n"); - } - } - return sf_unknown; -} - - -static FILE * -open_wave_file(lame_t gfp, char const *inPath) -{ - FILE *musicin; - - /* set the defaults from info incase we cannot determine them from file */ - lame_set_num_samples(gfp, MAX_U_32_NUM); - - if (!strcmp(inPath, "-")) { - lame_set_stream_binary_mode(musicin = stdin); /* Read from standard input. */ - } - else { - if ((musicin = lame_fopen(inPath, "rb")) == NULL) { - if (global_ui_config.silent < 10) { - error_printf("Could not find \"%s\".\n", inPath); - } - exit(1); - } - } - - if (global_reader.input_format == sf_ogg) { - if (global_ui_config.silent < 10) { - error_printf("sorry, vorbis support in LAME is deprecated.\n"); - } - exit(1); - } - else if (global_reader.input_format == sf_raw) { - /* assume raw PCM */ - if (global_ui_config.silent < 9) { - console_printf("Assuming raw pcm input file"); - if (global_reader.swapbytes) - console_printf(" : Forcing byte-swapping\n"); - else - console_printf("\n"); - } - global. pcmswapbytes = global_reader.swapbytes; - } - else { - global_reader.input_format = parse_file_header(gfp, musicin); - } - if (global_reader.input_format == sf_unknown) { - exit(1); - } - - if (lame_get_num_samples(gfp) == MAX_U_32_NUM && musicin != stdin) { - double const flen = lame_get_file_size(musicin); /* try to figure out num_samples */ - if (flen >= 0) { - /* try file size, assume 2 bytes per sample */ - unsigned long fsize = (unsigned long) (flen / (2 * lame_get_num_channels(gfp))); - (void) lame_set_num_samples(gfp, fsize); - } - } - return musicin; -} - - - -static FILE * -open_mpeg_file(lame_t gfp, char const *inPath, int *enc_delay, int *enc_padding) -{ - FILE *musicin; - - /* set the defaults from info incase we cannot determine them from file */ - lame_set_num_samples(gfp, MAX_U_32_NUM); - - if (strcmp(inPath, "-") == 0) { - musicin = stdin; - lame_set_stream_binary_mode(musicin); /* Read from standard input. */ - } - else { - musicin = lame_fopen(inPath, "rb"); - if (musicin == NULL) { - if (global_ui_config.silent < 10) { - error_printf("Could not find \"%s\".\n", inPath); - } - return 0; - } - } -#ifdef AMIGA_MPEGA - if (-1 == lame_decode_initfile(inPath, &global_decoder.mp3input_data)) { - if (global_ui_config.silent < 10) { - error_printf("Error reading headers in mp3 input file %s.\n", inPath); - } - close_input_file(musicin); - return 0; - } -#endif -#ifdef HAVE_MPGLIB - if (-1 == lame_decode_initfile(musicin, &global_decoder.mp3input_data, enc_delay, enc_padding)) { - if (global_ui_config.silent < 10) { - error_printf("Error reading headers in mp3 input file %s.\n", inPath); - } - close_input_file(musicin); - return 0; - } -#endif - if (-1 == lame_set_num_channels(gfp, global_decoder.mp3input_data.stereo)) { - if (global_ui_config.silent < 10) { - error_printf("Unsupported number of channels: %ud\n", - global_decoder.mp3input_data.stereo); - } - close_input_file(musicin); - return 0; - } - if (global_reader.input_samplerate == 0) { - (void) lame_set_in_samplerate(gfp, global_decoder.mp3input_data.samplerate); - } - else { - (void) lame_set_in_samplerate(gfp, global_reader.input_samplerate); - } - (void) lame_set_num_samples(gfp, global_decoder.mp3input_data.nsamp); - - if (lame_get_num_samples(gfp) == MAX_U_32_NUM && musicin != stdin) { - double flen = lame_get_file_size(musicin); /* try to figure out num_samples */ - if (flen >= 0) { - /* try file size, assume 2 bytes per sample */ - if (global_decoder.mp3input_data.bitrate > 0) { - double totalseconds = - (flen * 8.0 / (1000.0 * global_decoder.mp3input_data.bitrate)); - unsigned long tmp_num_samples = - (unsigned long) (totalseconds * lame_get_in_samplerate(gfp)); - - (void) lame_set_num_samples(gfp, tmp_num_samples); - global_decoder.mp3input_data.nsamp = tmp_num_samples; - } - } - } - return musicin; -} - - -static int -close_input_file(FILE * musicin) -{ - int ret = 0; - - if (musicin != stdin && musicin != 0) { - ret = fclose(musicin); - } - if (ret != 0) { - if (global_ui_config.silent < 10) { - error_printf("Could not close audio input file\n"); - } - } - return ret; -} - - - -#if defined(HAVE_MPGLIB) -static int -check_aid(const unsigned char *header) -{ - return 0 == memcmp(header, "AiD\1", 4); -} - -/* - * Please check this and don't kill me if there's a bug - * This is a (nearly?) complete header analysis for a MPEG-1/2/2.5 Layer I, II or III - * data stream - */ - -static int -is_syncword_mp123(const void *const headerptr) -{ - const unsigned char *const p = headerptr; - static const char abl2[16] = { 0, 7, 7, 7, 0, 7, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8 }; - - if ((p[0] & 0xFF) != 0xFF) - return 0; /* first 8 bits must be '1' */ - if ((p[1] & 0xE0) != 0xE0) - return 0; /* next 3 bits are also */ - if ((p[1] & 0x18) == 0x08) - return 0; /* no MPEG-1, -2 or -2.5 */ - switch (p[1] & 0x06) { - default: - case 0x00: /* illegal Layer */ - return 0; - - case 0x02: /* Layer3 */ - if (global_reader.input_format != sf_mp3 && global_reader.input_format != sf_mp123) { - return 0; - } - global_reader.input_format = sf_mp3; - break; - - case 0x04: /* Layer2 */ - if (global_reader.input_format != sf_mp2 && global_reader.input_format != sf_mp123) { - return 0; - } - global_reader.input_format = sf_mp2; - break; - - case 0x06: /* Layer1 */ - if (global_reader.input_format != sf_mp1 && global_reader.input_format != sf_mp123) { - return 0; - } - global_reader.input_format = sf_mp1; - break; - } - if ((p[1] & 0x06) == 0x00) - return 0; /* no Layer I, II and III */ - if ((p[2] & 0xF0) == 0xF0) - return 0; /* bad bitrate */ - if ((p[2] & 0x0C) == 0x0C) - return 0; /* no sample frequency with (32,44.1,48)/(1,2,4) */ - if ((p[1] & 0x18) == 0x18 && (p[1] & 0x06) == 0x04 && abl2[p[2] >> 4] & (1 << (p[3] >> 6))) - return 0; - if ((p[3] & 3) == 2) - return 0; /* reserved enphasis mode */ - return 1; -} - -static size_t -lenOfId3v2Tag(unsigned char const* buf) -{ - unsigned int b0 = buf[0] & 127; - unsigned int b1 = buf[1] & 127; - unsigned int b2 = buf[2] & 127; - unsigned int b3 = buf[3] & 127; - return (((((b0 << 7) + b1) << 7) + b2) << 7) + b3; -} - -int -lame_decode_initfile(FILE * fd, mp3data_struct * mp3data, int *enc_delay, int *enc_padding) -{ - /* VBRTAGDATA pTagData; */ - /* int xing_header,len2,num_frames; */ - unsigned char buf[100]; - int ret; - size_t len; - int aid_header; - short int pcm_l[1152], pcm_r[1152]; - int freeformat = 0; - - memset(mp3data, 0, sizeof(mp3data_struct)); - if (global.hip) { - hip_decode_exit(global.hip); - } - global. hip = hip_decode_init(); - hip_set_msgf(global.hip, global_ui_config.silent < 10 ? &frontend_msgf : 0); - hip_set_errorf(global.hip, global_ui_config.silent < 10 ? &frontend_errorf : 0); - hip_set_debugf(global.hip, &frontend_debugf); - - len = 4; - if (fread(buf, 1, len, fd) != len) - return -1; /* failed */ - while (buf[0] == 'I' && buf[1] == 'D' && buf[2] == '3') { - len = 6; - if (fread(&buf[4], 1, len, fd) != len) - return -1; /* failed */ - len = lenOfId3v2Tag(&buf[6]); - if (global.in_id3v2_size < 1) { - global.in_id3v2_size = 10 + len; - global.in_id3v2_tag = malloc(global.in_id3v2_size); - if (global.in_id3v2_tag) { - memcpy(global.in_id3v2_tag, buf, 10); - if (fread(&global.in_id3v2_tag[10], 1, len, fd) != len) - return -1; /* failed */ - len = 0; /* copied, nothing to skip */ - } - else { - global.in_id3v2_size = 0; - } - } - fskip(fd, len, SEEK_CUR); - len = 4; - if (fread(&buf, 1, len, fd) != len) - return -1; /* failed */ - } - aid_header = check_aid(buf); - if (aid_header) { - if (fread(&buf, 1, 2, fd) != 2) - return -1; /* failed */ - aid_header = (unsigned char) buf[0] + 256 * (unsigned char) buf[1]; - if (global_ui_config.silent < 9) { - console_printf("Album ID found. length=%i \n", aid_header); - } - /* skip rest of AID, except for 6 bytes we have already read */ - fskip(fd, aid_header - 6, SEEK_CUR); - - /* read 4 more bytes to set up buffer for MP3 header check */ - if (fread(&buf, 1, len, fd) != len) - return -1; /* failed */ - } - len = 4; - while (!is_syncword_mp123(buf)) { - unsigned int i; - for (i = 0; i < len - 1; i++) - buf[i] = buf[i + 1]; - if (fread(buf + len - 1, 1, 1, fd) != 1) - return -1; /* failed */ - } - - if ((buf[2] & 0xf0) == 0) { - if (global_ui_config.silent < 9) { - console_printf("Input file is freeformat.\n"); - } - freeformat = 1; - } - /* now parse the current buffer looking for MP3 headers. */ - /* (as of 11/00: mpglib modified so that for the first frame where */ - /* headers are parsed, no data will be decoded. */ - /* However, for freeformat, we need to decode an entire frame, */ - /* so mp3data->bitrate will be 0 until we have decoded the first */ - /* frame. Cannot decode first frame here because we are not */ - /* yet prepared to handle the output. */ - ret = hip_decode1_headersB(global.hip, buf, len, pcm_l, pcm_r, mp3data, enc_delay, enc_padding); - if (-1 == ret) - return -1; - - /* repeat until we decode a valid mp3 header. */ - while (!mp3data->header_parsed) { - len = fread(buf, 1, sizeof(buf), fd); - if (len != sizeof(buf)) - return -1; - ret = - hip_decode1_headersB(global.hip, buf, len, pcm_l, pcm_r, mp3data, enc_delay, - enc_padding); - if (-1 == ret) - return -1; - } - - if (mp3data->bitrate == 0 && !freeformat) { - if (global_ui_config.silent < 10) { - error_printf("fail to sync...\n"); - } - return lame_decode_initfile(fd, mp3data, enc_delay, enc_padding); - } - - if (mp3data->totalframes > 0) { - /* mpglib found a Xing VBR header and computed nsamp & totalframes */ - } - else { - /* set as unknown. Later, we will take a guess based on file size - * ant bitrate */ - mp3data->nsamp = MAX_U_32_NUM; - } - - - /* - report_printf("ret = %i NEED_MORE=%i \n",ret,MP3_NEED_MORE); - report_printf("stereo = %i \n",mp.fr.stereo); - report_printf("samp = %i \n",freqs[mp.fr.sampling_frequency]); - report_printf("framesize = %i \n",framesize); - report_printf("bitrate = %i \n",mp3data->bitrate); - report_printf("num frames = %ui \n",num_frames); - report_printf("num samp = %ui \n",mp3data->nsamp); - report_printf("mode = %i \n",mp.fr.mode); - */ - - return 0; -} - -/* -For lame_decode_fromfile: return code - -1 error - n number of samples output. either 576 or 1152 depending on MP3 file. - - -For lame_decode1_headers(): return code - -1 error - 0 ok, but need more data before outputing any samples - n number of samples output. either 576 or 1152 depending on MP3 file. -*/ -static int -lame_decode_fromfile(FILE * fd, short pcm_l[], short pcm_r[], mp3data_struct * mp3data) -{ - int ret = 0; - size_t len = 0; - unsigned char buf[1024]; - - /* first see if we still have data buffered in the decoder: */ - ret = hip_decode1_headers(global.hip, buf, len, pcm_l, pcm_r, mp3data); - if (ret != 0) - return ret; - - - /* read until we get a valid output frame */ - for (;;) { - len = fread(buf, 1, 1024, fd); - if (len == 0) { - /* we are done reading the file, but check for buffered data */ - ret = hip_decode1_headers(global.hip, buf, len, pcm_l, pcm_r, mp3data); - if (ret <= 0) { - hip_decode_exit(global.hip); /* release mp3decoder memory */ - global. hip = 0; - return -1; /* done with file */ - } - break; - } - - ret = hip_decode1_headers(global.hip, buf, len, pcm_l, pcm_r, mp3data); - if (ret == -1) { - hip_decode_exit(global.hip); /* release mp3decoder memory */ - global. hip = 0; - return -1; - } - if (ret > 0) - break; - } - return ret; -} -#endif /* defined(HAVE_MPGLIB) */ - - -int -is_mpeg_file_format(int input_file_format) -{ - switch (input_file_format) { - case sf_mp1: - return 1; - case sf_mp2: - return 2; - case sf_mp3: - return 3; - case sf_mp123: - return -1; - default: - break; - } - return 0; -} - - -#define LOW__BYTE(x) (x & 0x00ff) -#define HIGH_BYTE(x) ((x >> 8) & 0x00ff) - -void -put_audio16(FILE * outf, short Buffer[2][1152], int iread, int nch) -{ - char data[2 * 1152 * 2]; - int i, m = 0; - - if (global_decoder.disable_wav_header && global_reader.swapbytes) { - if (nch == 1) { - for (i = 0; i < iread; i++) { - short x = Buffer[0][i]; - /* write 16 Bits High Low */ - data[m++] = HIGH_BYTE(x); - data[m++] = LOW__BYTE(x); - } - } - else { - for (i = 0; i < iread; i++) { - short x = Buffer[0][i], y = Buffer[1][i]; - /* write 16 Bits High Low */ - data[m++] = HIGH_BYTE(x); - data[m++] = LOW__BYTE(x); - /* write 16 Bits High Low */ - data[m++] = HIGH_BYTE(y); - data[m++] = LOW__BYTE(y); - } - } - } - else { - if (nch == 1) { - for (i = 0; i < iread; i++) { - short x = Buffer[0][i]; - /* write 16 Bits Low High */ - data[m++] = LOW__BYTE(x); - data[m++] = HIGH_BYTE(x); - } - } - else { - for (i = 0; i < iread; i++) { - short x = Buffer[0][i], y = Buffer[1][i]; - /* write 16 Bits Low High */ - data[m++] = LOW__BYTE(x); - data[m++] = HIGH_BYTE(x); - /* write 16 Bits Low High */ - data[m++] = LOW__BYTE(y); - data[m++] = HIGH_BYTE(y); - } - } - } - if (m > 0) { - fwrite(data, 1, m, outf); - } - if (global_writer.flush_write == 1) { - fflush(outf); - } -} - -hip_t -get_hip(void) -{ - return global.hip; -} - -size_t -sizeOfOldTag(lame_t gf) -{ - (void) gf; - return global.in_id3v2_size; -} - -unsigned char* -getOldTag(lame_t gf) -{ - (void) gf; - return global.in_id3v2_tag; -} - -/* end of get_audio.c */ diff --git a/platform/win32/msvc/external/lame/frontend/get_audio.h b/platform/win32/msvc/external/lame/frontend/get_audio.h deleted file mode 100644 index 028ca6bec01..00000000000 --- a/platform/win32/msvc/external/lame/frontend/get_audio.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Get Audio routines include file - * - * Copyright (c) 1999 Albert L Faber - * 2010 Robert Hegemann - * - * 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 LAME_GET_AUDIO_H -#define LAME_GET_AUDIO_H -#include "lame.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum sound_file_format_e { - sf_unknown, - sf_raw, - sf_wave, - sf_aiff, - sf_mp1, /* MPEG Layer 1, aka mpg */ - sf_mp2, /* MPEG Layer 2 */ - sf_mp3, /* MPEG Layer 3 */ - sf_mp123, /* MPEG Layer 1,2 or 3; whatever .mp3, .mp2, .mp1 or .mpg contains */ - sf_ogg -} sound_file_format; - -int is_mpeg_file_format( int input_format ); - -int init_infile(lame_t gfp, char const * inPath); -int samples_to_skip_at_start(void); -int samples_to_skip_at_end(void); -void close_infile(void); -int get_audio(lame_t gfp, int buffer[2][1152]); -int get_audio16(lame_t gfp, short buffer[2][1152]); -int get_audio_float(lame_t gfp, float buffer[2][1152]); -int get_audio_double(lame_t gfp, double buffer[2][1152]); -hip_t get_hip(void); - -FILE *init_outfile(char const *outPath, int decode); -int WriteWaveHeader(FILE * const fp, int pcmbytes, int freq, int channels, int bits); -void put_audio16(FILE* outf, short Buffer[2][1152], int iread, int nch); - -/* -struct AudioReader; -typedef struct AudioReader* AudioReader; - -AudioReader ar_open(lame_t gfp, char const* inPath); -int ar_samplesToSkipAtStart(AudioReader ar); -int ar_samplesToSkipAtEnd(AudioReader ar); -void ar_close(AudioReader ar); -int ar_readInt(AudioReader ar, lame_t gfp, int buffer[2][1152]); -int ar_readShort(AudioReader ar, lame_t gfp, short buffer[2][1152]); -int ar_readFloat(AudioReader ar, lame_t gfp, float buffer[2][1152]); - -struct AudioWriter; -typedef struct AudioWriter* AudioWriter; - -AudioWriter aw_open(lame_t gfp, char const* outPath, int pcmbystes, int freq, int channels, int bits); -int aw_writeWaveHeader(AudioWriter aw); -int aw_write(AudioWriter aw, short buffer[2][1152], int n); -int aw_write(AudioWriter aw, float buffer[2][1152], int n); - -*/ - -extern size_t sizeOfOldTag(lame_t gf); -extern unsigned char* getOldTag(lame_t gf); - -#ifdef _cplusplus -} -#endif - -#endif /* ifndef LAME_GET_AUDIO_H */ diff --git a/platform/win32/msvc/external/lame/frontend/gpkplotting.c b/platform/win32/msvc/external/lame/frontend/gpkplotting.c deleted file mode 100644 index d90877bc432..00000000000 --- a/platform/win32/msvc/external/lame/frontend/gpkplotting.c +++ /dev/null @@ -1,331 +0,0 @@ -/* - * GTK plotting routines source file - * - * Copyright (c) 1999 Mark Taylor - * - * 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. - */ - -/* $Id: gpkplotting.c,v 1.12 2011/05/07 16:05:17 rbrito Exp $ */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "gpkplotting.h" - -#ifdef STDC_HEADERS -# include -#else -# ifndef HAVE_STRCHR -# define strchr index -# define strrchr rindex -# endif -char *strchr(), *strrchr(); -# ifndef HAVE_MEMCPY -# define memcpy(d, s, n) bcopy ((s), (d), (n)) -# define memmove(d, s, n) bcopy ((s), (d), (n)) -# endif -#endif - -#ifdef WITH_DMALLOC -#include -#endif - -static gint num_plotwindows = 0; -static gint max_plotwindows = 10; -static GdkPixmap *pixmaps[10]; -static GtkWidget *pixmapboxes[10]; - - - - -/* compute a gdkcolor */ -void -setcolor(GtkWidget * widget, GdkColor * color, gint red, gint green, gint blue) -{ - - /* colors in GdkColor are taken from 0 to 65535, not 0 to 255. */ - color->red = red * (65535 / 255); - color->green = green * (65535 / 255); - color->blue = blue * (65535 / 255); - color->pixel = (gulong) (color->red * 65536 + color->green * 256 + color->blue); - /* find closest in colormap, if needed */ - gdk_color_alloc(gtk_widget_get_colormap(widget), color); -} - - -void -gpk_redraw(GdkPixmap * pixmap, GtkWidget * pixmapbox) -{ - /* redraw the entire pixmap */ - gdk_draw_pixmap(pixmapbox->window, - pixmapbox->style->fg_gc[GTK_WIDGET_STATE(pixmapbox)], - pixmap, 0, 0, 0, 0, pixmapbox->allocation.width, pixmapbox->allocation.height); -} - - -static GdkPixmap ** -findpixmap(GtkWidget * widget) -{ - int i; - for (i = 0; i < num_plotwindows && widget != pixmapboxes[i]; i++); - if (i >= num_plotwindows) { - g_print("findpixmap(): bad argument widget \n"); - return NULL; - } - return &pixmaps[i]; -} - -void -gpk_graph_draw(GtkWidget * widget, /* plot on this widged */ - int n, /* number of data points */ - gdouble * xcord, gdouble * ycord, /* data */ - gdouble xmn, gdouble ymn, /* coordinates of corners */ - gdouble xmx, gdouble ymx, int clear, /* clear old plot first */ - char *title, /* add a title (only if clear=1) */ - GdkColor * color) -{ - GdkPixmap **ppixmap; - GdkPoint *points; - int i; - gint16 width, height; - GdkFont *fixed_font; - GdkGC *gc; - - gc = gdk_gc_new(widget->window); - gdk_gc_set_foreground(gc, color); - - - - if ((ppixmap = findpixmap(widget))) { - width = widget->allocation.width; - height = widget->allocation.height; - - - if (clear) { - /* white background */ - gdk_draw_rectangle(*ppixmap, widget->style->white_gc, TRUE, 0, 0, width, height); - /* title */ -#ifdef _WIN32 - fixed_font = gdk_font_load("-misc-fixed-large-r-*-*-*-100-*-*-*-*-*-*"); -#else - fixed_font = gdk_font_load("-misc-fixed-medium-r-*-*-*-100-*-*-*-*-iso8859-1"); -#endif - - gdk_draw_text(*ppixmap, fixed_font, - widget->style->fg_gc[GTK_WIDGET_STATE(widget)], - 0, 10, title, strlen(title)); - } - - - points = g_malloc(n * sizeof(GdkPoint)); - for (i = 0; i < n; i++) { - points[i].x = .5 + ((xcord[i] - xmn) * (width - 1) / (xmx - xmn)); - points[i].y = .5 + ((ycord[i] - ymx) * (height - 1) / (ymn - ymx)); - } - gdk_draw_lines(*ppixmap, gc, points, n); - g_free(points); - gpk_redraw(*ppixmap, widget); - } - gdk_gc_destroy(gc); -} - - - -void -gpk_rectangle_draw(GtkWidget * widget, /* plot on this widged */ - gdouble * xcord, gdouble * ycord, /* corners */ - gdouble xmn, gdouble ymn, /* coordinates of corners */ - gdouble xmx, gdouble ymx, GdkColor * color) -{ - GdkPixmap **ppixmap; - GdkPoint points[2]; - int i; - gint16 width, height; - GdkGC *gc; - - - gc = gdk_gc_new(widget->window); - gdk_gc_set_foreground(gc, color); - - - if ((ppixmap = findpixmap(widget))) { - width = widget->allocation.width; - height = widget->allocation.height; - - - for (i = 0; i < 2; i++) { - points[i].x = .5 + ((xcord[i] - xmn) * (width - 1) / (xmx - xmn)); - points[i].y = .5 + ((ycord[i] - ymx) * (height - 1) / (ymn - ymx)); - } - width = points[1].x - points[0].x + 1; - height = points[1].y - points[0].y + 1; - gdk_draw_rectangle(*ppixmap, gc, TRUE, points[0].x, points[0].y, width, height); - gpk_redraw(*ppixmap, widget); - } - gdk_gc_destroy(gc); -} - - - -void -gpk_bargraph_draw(GtkWidget * widget, /* plot on this widged */ - int n, /* number of data points */ - gdouble * xcord, gdouble * ycord, /* data */ - gdouble xmn, gdouble ymn, /* coordinates of corners */ - gdouble xmx, gdouble ymx, int clear, /* clear old plot first */ - char *title, /* add a title (only if clear=1) */ - int barwidth, /* bar width. 0=compute based on window size */ - GdkColor * color) -{ - GdkPixmap **ppixmap; - GdkPoint points[2]; - int i; - gint16 width, height, x, y, barheight; - GdkFont *fixed_font; - GdkGC *gc; - int titleSplit; - - - gc = gdk_gc_new(widget->window); - gdk_gc_set_foreground(gc, color); - - - if ((ppixmap = findpixmap(widget))) { - width = widget->allocation.width; - height = widget->allocation.height; - - - if (clear) { - /* white background */ - gdk_draw_rectangle(*ppixmap, widget->style->white_gc, TRUE, 0, 0, width, height); - /* title */ -#ifdef _WIN32 - fixed_font = gdk_font_load("-misc-fixed-large-r-*-*-*-100-*-*-*-*-*-*"); -#else - fixed_font = gdk_font_load("-misc-fixed-medium-r-*-*-*-100-*-*-*-*-iso8859-1"); -#endif - - titleSplit = strcspn(title, "\n"); - - if (titleSplit && (titleSplit != strlen(title))) { - gdk_draw_text(*ppixmap, fixed_font, - widget->style->fg_gc[GTK_WIDGET_STATE(widget)], - 0, 10, title, titleSplit); - - gdk_draw_text(*ppixmap, fixed_font, - widget->style->fg_gc[GTK_WIDGET_STATE(widget)], - 0, 22, title + titleSplit + 1, (strlen(title) - titleSplit) - 1); - - - } - else { - gdk_draw_text(*ppixmap, fixed_font, - widget->style->fg_gc[GTK_WIDGET_STATE(widget)], - 0, 10, title, strlen(title)); - } - } - - - for (i = 0; i < n; i++) { - points[1].x = .5 + ((xcord[i] - xmn) * (width - 1) / (xmx - xmn)); - points[1].y = .5 + ((ycord[i] - ymx) * (height - 1) / (ymn - ymx)); - points[0].x = points[1].x; - points[0].y = height - 1; - - x = .5 + ((xcord[i] - xmn) * (width - 1) / (xmx - xmn)); - y = .5 + ((ycord[i] - ymx) * (height - 1) / (ymn - ymx)); - if (!barwidth) - barwidth = (width / (n + 1)) - 1; - barwidth = barwidth > 5 ? 5 : barwidth; - barwidth = barwidth < 1 ? 1 : barwidth; - barheight = height - 1 - y; - /* gdk_draw_lines(*ppixmap,gc,points,2); */ - gdk_draw_rectangle(*ppixmap, gc, TRUE, x, y, barwidth, barheight); - - } - gpk_redraw(*ppixmap, widget); - } - gdk_gc_destroy(gc); -} - - - - - -/* Create a new backing pixmap of the appropriate size */ -static gint -configure_event(GtkWidget * widget, GdkEventConfigure * event, gpointer data) -{ - GdkPixmap **ppixmap; - if ((ppixmap = findpixmap(widget))) { - if (*ppixmap) - gdk_pixmap_unref(*ppixmap); - *ppixmap = gdk_pixmap_new(widget->window, - widget->allocation.width, widget->allocation.height, -1); - gdk_draw_rectangle(*ppixmap, - widget->style->white_gc, - TRUE, 0, 0, widget->allocation.width, widget->allocation.height); - } - return TRUE; -} - - - -/* Redraw the screen from the backing pixmap */ -static gint -expose_event(GtkWidget * widget, GdkEventExpose * event, gpointer data) -{ - GdkPixmap **ppixmap; - if ((ppixmap = findpixmap(widget))) { - gdk_draw_pixmap(widget->window, - widget->style->fg_gc[GTK_WIDGET_STATE(widget)], - *ppixmap, - event->area.x, event->area.y, - event->area.x, event->area.y, event->area.width, event->area.height); - } - - return FALSE; -} - - - - - -GtkWidget * -gpk_plot_new(int width, int height) -{ - GtkWidget *pixmapbox; - - pixmapbox = gtk_drawing_area_new(); - gtk_drawing_area_size(GTK_DRAWING_AREA(pixmapbox), width, height); - gtk_signal_connect(GTK_OBJECT(pixmapbox), "expose_event", (GtkSignalFunc) expose_event, NULL); - gtk_signal_connect(GTK_OBJECT(pixmapbox), "configure_event", - (GtkSignalFunc) configure_event, NULL); - gtk_widget_set_events(pixmapbox, GDK_EXPOSURE_MASK); - - if (num_plotwindows < max_plotwindows) { - pixmapboxes[num_plotwindows] = pixmapbox; - pixmaps[num_plotwindows] = NULL; - num_plotwindows++; - } - else { - g_print("gtk_plotarea_new(): exceeded maximum of 10 plotarea windows\n"); - } - - return pixmapbox; -} diff --git a/platform/win32/msvc/external/lame/frontend/gpkplotting.h b/platform/win32/msvc/external/lame/frontend/gpkplotting.h deleted file mode 100644 index 221b4222986..00000000000 --- a/platform/win32/msvc/external/lame/frontend/gpkplotting.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * GTK plotting routines include file - * - * Copyright (c) 1999 Mark Taylor - * - * 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 LAME_GPKPLOTTING_H -#define LAME_GPKPLOTTING_H - -#include - -/* allocate a graphing widget */ -GtkWidget *gpk_plot_new(int width, int height); - -/* graph a function in the graphing widged */ -void gpk_graph_draw(GtkWidget * widget, - int n, gdouble * xcord, gdouble * ycord, - gdouble xmn, gdouble ymn, gdouble xmx, gdouble ymx, - int clear, char *title, GdkColor * color); - -/* draw a rectangle in the graphing widget */ -void gpk_rectangle_draw(GtkWidget * widget, /* plot on this widged */ - gdouble xcord[2], gdouble ycord[2], /* corners */ - gdouble xmn, gdouble ymn, /* coordinates of corners */ - gdouble xmx, gdouble ymx, GdkColor * color); /* color to use */ - -/* make a bar graph in the graphing widged */ -void gpk_bargraph_draw(GtkWidget * widget, - int n, gdouble * xcord, gdouble * ycord, - gdouble xmn, gdouble ymn, gdouble xmx, gdouble ymx, - int clear, char *title, int bwidth, GdkColor * color); - -/* set forground color */ -void setcolor(GtkWidget * widget, GdkColor * color, int red, int green, int blue); - -#endif diff --git a/platform/win32/msvc/external/lame/frontend/gtkanal.c b/platform/win32/msvc/external/lame/frontend/gtkanal.c deleted file mode 100644 index 0c925819c0e..00000000000 --- a/platform/win32/msvc/external/lame/frontend/gtkanal.c +++ /dev/null @@ -1,1640 +0,0 @@ -/* - * GTK plotting routines source file - * - * Copyright (c) 1999 Mark Taylor - * - * 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. - */ - -/* $Id: gtkanal.c,v 1.49 2011/05/07 16:05:17 rbrito Exp $ */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include - -#include "main.h" -#include "lame.h" -#include "machine.h" -#include "encoder.h" -#include "lame-analysis.h" -#include "get_audio.h" -#include "gtkanal.h" -#include "gpkplotting.h" -#include "lame_global_flags.h" - -/* this file should be removed. The few data items accessed in 'gfc' - should be made accessable by writing a lame_set_variable() function */ -#include "util.h" - -#include "console.h" - - -#ifdef _WIN32 -# include -# define msleep(t) Sleep(t) -#else -# include -# define msleep(t) usleep((t) * 1000) -#endif - - - - -/*! Stringify \a x. */ -#define STR(x) #x -/*! Stringify \a x, perform macro expansion. */ -#define XSTR(x) STR(x) - -#define MP3X_MAJOR_VERSION 0 /* Major version number */ -#define MP3X_MINOR_VERSION 82 /* Minor version number */ -#define MP3X_ALPHA_VERSION 0 /* Set number if this is an alpha version, otherwise zero */ -#define MP3X_BETA_VERSION 0 /* Set number if this is a beta version, otherwise zero */ - - -plotting_data *pinfo; -plotting_data *pplot; -plotting_data Pinfo[NUMPINFO]; - - -/* global variables for the state of the system */ -static gint idle_keepgoing; /* processing of frames is ON */ -static gint idle_count_max; /* number of frames to process before plotting */ -static gint idle_count; /* pause & plot when idle_count=idel_count_max */ -static gint idle_end = 0; /* process all frames, stop at last frame */ -static gint idle_back = 0; /* set when we are displaying the old data */ -static int mp3done = 0; /* last frame has been read */ -static GtkWidget *frameprogress; /* progress bar */ -static GtkWidget *framecounter; /* progress counter */ - -static int subblock_draw[3] = { 1, 1, 1 }; - -/* main window */ -GtkWidget *window; -/* Backing pixmap for drawing areas */ -GtkWidget *pcmbox; /* PCM data plotted here */ -GtkWidget *winbox; /* mpg123 synthesis data plotted here */ -GtkWidget *enerbox[2]; /* spectrum, gr=0,1 plotted here */ -GtkWidget *mdctbox[2]; /* mdct coefficients gr=0,1 plotted here */ -GtkWidget *sfbbox[2]; /* scalefactors gr=0,1 plotted here */ -GtkWidget *headerbox; /* mpg123 header info shown here */ - - -struct gtkinfostruct { - int filetype; /* input file type 0=WAV, 1=MP3 */ - int msflag; /* toggle between L&R vs M&S PCM data display */ - int chflag; /* toggle between L & R channels */ - int kbflag; /* toggle between wave # and barks */ - int flag123; /* show mpg123 frame info, OR ISO encoder frame info */ - double avebits; /* running average bits per frame */ - int approxbits; /* (approx) bits per frame */ - int maxbits; /* max bits per frame used so far */ - int totemph; /* total of frames with de-emphasis */ - int totms; /* total frames with ms_stereo */ - int totis; /* total frames with i_stereo */ - int totshort; /* total granules with short blocks */ - int totmix; /* total granules with mixed blocks */ - int totpreflag; /* total granules with preflag */ - int pupdate; /* plot while processing, or only when needed */ - int sfblines; /* plot scalefactor bands in MDCT plot */ - int difference; /* plot original - decoded instead of orig vs. decoded */ - int totalframes; -} gtkinfo; - - -static lame_global_flags *gfp; -lame_internal_flags *gfc; -hip_t hip; - -/********************************************************************** - * read one frame and encode it - **********************************************************************/ -int -gtkmakeframe(void) -{ - int iread = 0; - static int init = 0; - static int mpglag; - static short int Buffer[2][1152]; - short int mpg123pcm[2][1152]; - int ch, j; - int mp3count = 0; - int mp3out = 0; - int channels_out; - unsigned char mp3buffer[LAME_MAXMP3BUFFER]; - static int frameNum = 0; - int framesize = lame_get_framesize(gfp); - - channels_out = (lame_get_mode(gfp) == MONO) ? 1 : 2; - - pinfo->frameNum = frameNum; - pinfo->sampfreq = lame_get_out_samplerate(gfp); - pinfo->framesize = framesize; - pinfo->stereo = channels_out; - - /* If the analsys code is enabled, lame will writes data into gfc->pinfo, - * and mpg123 will write data into pinfo. Set these so - * the libraries put this data in the right place: */ - gfc->pinfo = pinfo; - hip_set_pinfo(hip, pinfo); - - if (is_mpeg_file_format(global_reader.input_format)) { - hip_set_pinfo(get_hip(), pplot); - iread = get_audio16(gfp, Buffer); - - - /* add a delay of framesize-DECDELAY, which will make the total delay - * exactly one frame, so we can sync MP3 output with WAV input */ - for (ch = 0; ch < channels_out; ch++) { - for (j = 0; j < framesize - DECDELAY; j++) - pinfo->pcmdata2[ch][j] = pinfo->pcmdata2[ch][j + framesize]; - for (j = 0; j < framesize; j++) /*rescale from int to short int */ - pinfo->pcmdata2[ch][j + framesize - DECDELAY] = Buffer[ch][j]; - } - - pinfo->frameNum123 = frameNum - 1; - ++frameNum; - - } - else { - - /* feed data to encoder until encoder produces some output */ - while (lame_get_frameNum(gfp) == pinfo->frameNum) { - - if (!init) { - init = 1; - mpglag = 1; - if (hip) { - hip_decode_exit(hip); - } - hip = hip_decode_init(); - hip_set_pinfo(hip, pinfo); - } - - iread = get_audio16(gfp, Buffer); - if (iread > framesize) { - /* NOTE: frame analyzer requires that we encode one frame - * for each pass through this loop. If lame_encode_buffer() - * is feed data too quickly, it will sometimes encode multiple frames - * breaking this loop. - */ - error_printf("Warning: get_audio is returning too much data.\n"); - } - if (iread <= 0) - break; /* eof */ - - mp3count = lame_encode_buffer(gfp, Buffer[0], Buffer[1], iread, - mp3buffer, sizeof(mp3buffer)); - - assert(!(mp3count > 0 && lame_get_frameNum(gfp) == pinfo->frameNum)); - /* not possible to produce mp3 data without encoding at least - * one frame of data which would increment frameNum */ - } - frameNum = lame_get_frameNum(gfp); /* use the internal MP3 frame counter */ - - - /* decode one frame of output */ - mp3out = hip_decode1(hip, mp3buffer, mp3count, mpg123pcm[0], mpg123pcm[1]); /* re-synthesis to pcm */ - /* mp3out = 0: need more data to decode */ - /* mp3out = -1: error. Lets assume 0 pcm output */ - /* mp3out = number of samples output */ - if (mp3out > 0) - assert(mp3out == pinfo->framesize); - if (mp3out != 0) { - /* decoded output is for frame pinfo->frameNum123 - * add a delay of framesize-DECDELAY, which will make the total delay - * exactly one frame */ - pinfo->frameNum123 = pinfo->frameNum - mpglag; - for (ch = 0; ch < pinfo->stereo; ch++) { - for (j = 0; j < pinfo->framesize - DECDELAY; j++) - pinfo->pcmdata2[ch][j] = pinfo->pcmdata2[ch][j + pinfo->framesize]; - for (j = 0; j < pinfo->framesize; j++) { - pinfo->pcmdata2[ch][j + pinfo->framesize - DECDELAY] = - (mp3out == -1) ? 0 : mpg123pcm[ch][j]; - } - } - } - else { - if (mpglag == MAXMPGLAG) { - error_printf("READ_AHEAD set too low - not enough frame buffering.\n" - "MP3x display of input and output PCM data out of sync.\n"); - error_flush(); - } - else - mpglag++; - pinfo->frameNum123 = -1; /* no frame output */ - } - } - return iread; -} - - -void -plot_frame(void) -{ - int i, j, n, ch, gr; - gdouble *xcord, *ycord; - gdouble xmx, xmn, ymx, ymn; - double *data, *data2, *data3; - char title2[80]; - char label[80], label2[80]; - char *title; - plotting_data *pplot1; - plotting_data *pplot2 = NULL; - - double en, samp; - /*int sampindex, version = 0;*/ - int barthick; - static int firstcall = 1; - static GdkColor *barcolor, *color, *grcolor[2]; - static GdkColor yellow, gray, cyan, magenta, orange, pink, red, green, blue, black, oncolor, - offcolor; - int blocktype[2][2]; - int headbits; - int mode_gr = 2; - - /* find the frame where mpg123 produced output coming from input frame - * pinfo. i.e.: out_frame + out_frame_lag = input_frame */ - for (i = 1; i <= MAXMPGLAG; i++) { - if ((pplot - i)->frameNum123 == pplot->frameNum) { - pplot2 = pplot - i; - break; - } - } - if (i > MAXMPGLAG) { - error_printf("input/output pcm syncing problem. should not happen!\n"); - pplot2 = pplot - 1; - } - - - /* however, the PCM data is delayed by 528 samples in the encoder filterbanks. - * We added another 1152-528 delay to this so the PCM data is *exactly* one - * frame behind the header & MDCT information */ - pplot1 = pplot2 + 1; /* back one frame for header info, MDCT */ - - /* allocate these GC's only once */ - if (firstcall) { - firstcall = 0; - /* grcolor[0] = &magenta; */ - grcolor[0] = &blue; - grcolor[1] = &green; - barcolor = &gray; - - setcolor(headerbox, &oncolor, 255, 0, 0); - setcolor(headerbox, &offcolor, 175, 175, 175); - setcolor(pcmbox, &red, 255, 0, 0); - setcolor(pcmbox, &pink, 255, 0, 255); - setcolor(pcmbox, &magenta, 255, 0, 100); - setcolor(pcmbox, &orange, 255, 127, 0); - setcolor(pcmbox, &cyan, 0, 255, 255); - setcolor(pcmbox, &green, 0, 255, 0); - setcolor(pcmbox, &blue, 0, 0, 255); - setcolor(pcmbox, &black, 0, 0, 0); - setcolor(pcmbox, &gray, 100, 100, 100); - setcolor(pcmbox, &yellow, 255, 255, 0); - - } - - /******************************************************************* - * frame header info - *******************************************************************/ - if (pplot1->sampfreq) - samp = pplot1->sampfreq; - else - samp = 1; - /*sampindex = SmpFrqIndex((long) samp, &version);*/ - - ch = gtkinfo.chflag; - - headbits = 32 + ((pplot1->stereo == 2) ? 256 : 136); - gtkinfo.approxbits = (pplot1->bitrate * 1000 * 1152.0 / samp) - headbits; - sprintf(title2, "%3.1fkHz %ikbs ", samp / 1000, pplot1->bitrate); - gtk_text_freeze(GTK_TEXT(headerbox)); - gtk_text_backward_delete(GTK_TEXT(headerbox), gtk_text_get_length(GTK_TEXT(headerbox))); - gtk_text_set_point(GTK_TEXT(headerbox), 0); - gtk_text_insert(GTK_TEXT(headerbox), NULL, &oncolor, NULL, title2, -1); - title = " mono "; - if (2 == pplot1->stereo) - title = pplot1->js ? " js " : " s "; - gtk_text_insert(GTK_TEXT(headerbox), NULL, &oncolor, NULL, title, -1); - color = pplot1->ms_stereo ? &oncolor : &offcolor; - gtk_text_insert(GTK_TEXT(headerbox), NULL, color, NULL, "ms ", -1); - color = pplot1->i_stereo ? &oncolor : &offcolor; - gtk_text_insert(GTK_TEXT(headerbox), NULL, color, NULL, "is ", -1); - - color = pplot1->crc ? &oncolor : &offcolor; - gtk_text_insert(GTK_TEXT(headerbox), NULL, color, NULL, "crc ", -1); - color = pplot1->padding ? &oncolor : &offcolor; - gtk_text_insert(GTK_TEXT(headerbox), NULL, color, NULL, "pad ", -1); - - color = pplot1->emph ? &oncolor : &offcolor; - gtk_text_insert(GTK_TEXT(headerbox), NULL, color, NULL, "em ", -1); - - sprintf(title2, "bv=%i,%i ", pplot1->big_values[0][ch], pplot1->big_values[1][ch]); - gtk_text_insert(GTK_TEXT(headerbox), NULL, &black, NULL, title2, -1); - - color = pplot1->scfsi[ch] ? &oncolor : &offcolor; - sprintf(title2, "scfsi=%i ", pplot1->scfsi[ch]); - gtk_text_insert(GTK_TEXT(headerbox), NULL, color, NULL, title2, -1); - if (gtkinfo.filetype) - sprintf(title2, " mdb=%i %i/NA", pplot1->maindata, pplot1->totbits); - else - sprintf(title2, " mdb=%i %i/%i", - pplot1->maindata, pplot1->totbits, pplot1->totbits + pplot->resvsize); - gtk_text_insert(GTK_TEXT(headerbox), NULL, &oncolor, NULL, title2, -1); - gtk_text_thaw(GTK_TEXT(headerbox)); - - - - /******************************************************************* - * block type - *******************************************************************/ - for (gr = 0; gr < mode_gr; gr++) - if (gtkinfo.flag123) - blocktype[gr][ch] = pplot1->mpg123blocktype[gr][ch]; - else - blocktype[gr][ch] = pplot->blocktype[gr][ch]; - - - /******************************************************************* - * draw the PCM data * - *******************************************************************/ - n = 1600; /* PCM frame + FFT window: 224 + 1152 + 224 */ - xcord = g_malloc(n * sizeof(gdouble)); - ycord = g_malloc(n * sizeof(gdouble)); - - - if (gtkinfo.msflag) - title = ch ? "Side Channel" : "Mid Channel"; - else - title = ch ? "Right Channel" : "Left Channel"; - - sprintf(title2, "%s mask_ratio=%3.2f %3.2f ener_ratio=%3.2f %3.2f", - title, - pplot->ms_ratio[0], pplot->ms_ratio[1], - pplot->ms_ener_ratio[0], pplot->ms_ener_ratio[1]); - - - ymn = -32767; - ymx = 32767; - xmn = 0; - xmx = 1600 - 1; - - /* 0 ... 224 draw in black, connecting to 224 pixel - * 1375 .. 1599 draw in black connecting to 1375 pixel - * 224 ... 1375 MP3 frame. draw in blue - */ - - /* draw the title */ - gpk_graph_draw(pcmbox, 0, xcord, ycord, xmn, ymn, xmx, ymx, 1, title2, &black); - - - /* draw some hash marks dividing the frames */ - ycord[0] = ymx * .8; - ycord[1] = ymn * .8; - for (gr = 0; gr <= 2; gr++) { - xcord[0] = 223.5 + gr * 576; - xcord[1] = 223.5 + gr * 576; - gpk_rectangle_draw(pcmbox, xcord, ycord, xmn, ymn, xmx, ymx, &yellow); - } - for (gr = 0; gr < mode_gr; gr++) { - if (blocktype[gr][ch] == 2) - for (i = 1; i <= 2; i++) { - xcord[0] = 223.5 + gr * 576 + i * 192; - xcord[1] = 223.5 + gr * 576 + i * 192; - gpk_rectangle_draw(pcmbox, xcord, ycord, xmn, ymn, xmx, ymx, &yellow); - } - } - /* bars representing FFT windows */ - xcord[0] = 0; - ycord[0] = ymn + 3000; - xcord[1] = 1024 - 1; - ycord[1] = ymn + 1000; - gpk_rectangle_draw(pcmbox, xcord, ycord, xmn, ymn, xmx, ymx, grcolor[0]); - xcord[0] = 576; - ycord[0] = ymn + 2000; - xcord[1] = 576 + 1024 - 1; - ycord[1] = ymn; - gpk_rectangle_draw(pcmbox, xcord, ycord, xmn, ymn, xmx, ymx, grcolor[1]); - - - /* plot PCM data */ - for (i = 0; i < n; i++) { - xcord[i] = i; - if (gtkinfo.msflag) - ycord[i] = ch ? .5 * (pplot->pcmdata[0][i] - pplot->pcmdata[1][i]) : - .5 * (pplot->pcmdata[0][i] + pplot->pcmdata[1][i]); - else - ycord[i] = pplot->pcmdata[ch][i]; - } - - /* skip plot if we are doing an mp3 file */ - if (!gtkinfo.filetype) { - gpk_graph_draw(pcmbox, n, xcord, ycord, xmn, ymn, xmx, ymx, 0, title2, &black); - } - - - /*******************************************************************/ - /* draw the PCM re-synthesis data */ - /*******************************************************************/ - n = 1152; - /* - sprintf(title2,"Re-synthesis mask_ratio=%3.2f %3.2f ener_ratio=%3.2f %3.2f", - pplot->ms_ratio[0],pplot->ms_ratio[1], - pplot->ms_ener_ratio[0],pplot->ms_ener_ratio[1]); - */ - title = "Re-synthesis"; - if (gtkinfo.difference) - title = "Re-synthesis difference (amplified 20db)"; - - - ymn = -32767; - ymx = 32767; - xmn = 0; - xmx = 1600 - 1; - gpk_graph_draw(winbox, 0, xcord, ycord, xmn, ymn, xmx, ymx, 1, title, &black); - /* draw some hash marks dividing the frames */ - ycord[0] = ymx * .8; - ycord[1] = ymn * .8; - for (gr = 0; gr <= 2; gr++) { - xcord[0] = 223.5 + gr * 576; - xcord[1] = 223.5 + gr * 576; - gpk_rectangle_draw(winbox, xcord, ycord, xmn, ymn, xmx, ymx, &yellow); - } - for (gr = 0; gr < 2; gr++) { - if (blocktype[gr][ch] == 2) - for (i = 1; i <= 2; i++) { - xcord[0] = 223.5 + gr * 576 + i * 192; - xcord[1] = 223.5 + gr * 576 + i * 192; - gpk_rectangle_draw(winbox, xcord, ycord, xmn, ymn, xmx, ymx, &yellow); - } - } - - /* this piece of PCM data from previous frame */ - n = 224; - for (j = 1152 - n, i = 0; i < n; i++, j++) { - xcord[i] = i; - if (gtkinfo.msflag) - ycord[i] = ch ? .5 * (pplot1->pcmdata2[0][j] - - pplot1->pcmdata2[1][j]) : - .5 * (pplot1->pcmdata2[0][j] + pplot1->pcmdata2[1][j]); - else - ycord[i] = pplot1->pcmdata2[ch][j]; - } - - /* this piece of PCM data from current frame */ - n = 1152; - for (i = 0; i < n; i++) { - xcord[i + 224] = i + 224; - if (gtkinfo.msflag) - ycord[i + 224] = ch ? .5 * (pplot2->pcmdata2[0][i] - pplot2->pcmdata2[1][i]) : - .5 * (pplot2->pcmdata2[0][i] + pplot2->pcmdata2[1][i]); - else - ycord[i + 224] = pplot2->pcmdata2[ch][i]; - } - - n = 1152 + 224; - if (gtkinfo.difference) { - for (i = 0; i < n; i++) { - if (gtkinfo.msflag) - ycord[i] -= ch ? .5 * (pplot->pcmdata[0][i] - pplot->pcmdata[1][i]) : - .5 * (pplot->pcmdata[0][i] + pplot->pcmdata[1][i]); - else - ycord[i] -= pplot->pcmdata[ch][i]; - } - ycord[i] *= 100; - } - - - gpk_graph_draw(winbox, n, xcord, ycord, xmn, ymn, xmx, ymx, 0, title, &black); - - - - - - /*******************************************************************/ - /* draw the MDCT energy spectrum */ - /*******************************************************************/ - for (gr = 0; gr < mode_gr; gr++) { - int bits, bits2; - char *blockname = ""; - switch (blocktype[gr][ch]) { - case 0: - blockname = "normal"; - break; - case 1: - blockname = "start"; - break; - case 2: - blockname = "short"; - break; - case 3: - blockname = "end"; - break; - } - strcpy(label, blockname); - if (pplot1->mixed[gr][ch]) - strcat(label, "(mixed)"); - - - - - n = 576; - if (gtkinfo.flag123) { - data = pplot1->mpg123xr[gr][0]; - data2 = pplot1->mpg123xr[gr][1]; - } - else { - data = pplot->xr[gr][0]; - data2 = pplot->xr[gr][1]; - } - - - xmn = 0; - xmx = n - 1; - ymn = 0; - ymx = 11; - - /* draw title, erase old plot */ - if (gtkinfo.flag123) { - bits = pplot1->mainbits[gr][ch]; - bits2 = pplot1->sfbits[gr][ch]; - } - else { - bits = pplot->LAMEmainbits[gr][ch]; - bits2 = pplot->LAMEsfbits[gr][ch]; - } - sprintf(title2, "MDCT%1i(%s) bits=%i/%i ", gr, label, bits, bits2); - gpk_bargraph_draw(mdctbox[gr], 0, xcord, ycord, xmn, ymn, xmx, ymx, 1, title2, 0, barcolor); - - /* draw some hash marks showing scalefactor bands */ - if (gtkinfo.sfblines) { - int fac, nsfb, *scalefac; - if (blocktype[gr][ch] == SHORT_TYPE) { - nsfb = SBMAX_s; - i = nsfb - 7; - fac = 3; - scalefac = gfc->scalefac_band.s; - } - else { - nsfb = SBMAX_l; - i = nsfb - 10; - fac = 1; - scalefac = gfc->scalefac_band.l; - } - for (; i < nsfb; i++) { - ycord[0] = .8 * ymx; - ycord[1] = ymn; - xcord[0] = fac * scalefac[i]; - xcord[1] = xcord[0]; - gpk_rectangle_draw(mdctbox[gr], xcord, ycord, xmn, ymn, xmx, ymx, &yellow); - } - } - - - - ymn = 9e20; - ymx = -9e20; - for (i = 0; i < n; i++) { - double coeff; - xcord[i] = i; - if (gtkinfo.msflag) { - coeff = ch ? .5 * (data[i] - data2[i]) : .5 * (data[i] + data2[i]); - } - else { - coeff = ch ? data2[i] : data[i]; - } - if (blocktype[gr][ch] == SHORT_TYPE && !subblock_draw[i % 3]) - coeff = 0; - ycord[i] = coeff * coeff * 1e10; - ycord[i] = log10(MAX(ycord[i], (double) 1)); - -#if 0 - if (ch == 0) - if (i == 26) - if (data[i] != 0) - console_printf("%i %i i=%i mdct: (db) %f %f \n", pplot->frameNum, gr, i, - 10 * log10(data[i] * data[i]), - 10 * log10(.33 * - (data[i - 1] * data[i - 1] + data[i] * data[i] + - data[i + 1] * data[i + 1])) - ); -#endif - - ymx = (ycord[i] > ymx) ? ycord[i] : ymx; - ymn = (ycord[i] < ymn) ? ycord[i] : ymn; - } - /* print the min/max - sprintf(title2,"MDCT%1i %5.2f %5.2f bits=%i",gr,ymn,ymx, - pplot1->mainbits[gr][ch]); - */ - if (gtkinfo.flag123) - bits = pplot1->mainbits[gr][ch]; - else - bits = pplot->LAMEmainbits[gr][ch]; - - - sprintf(title2, "MDCT%1i(%s) bits=%i ", gr, label, bits); - - xmn = 0; - xmx = n - 1; - ymn = 0; - ymx = 11; - gpk_bargraph_draw(mdctbox[gr], n, xcord, ycord, xmn, ymn, xmx, ymx, 0, title2, 0, barcolor); - } - - - - - /******************************************************************* - * draw the psy model energy spectrum (k space) - * l3psy.c computes pe, en, thm for THIS granule. - *******************************************************************/ - if (gtkinfo.kbflag) { - for (gr = 0; gr < mode_gr; gr++) { - n = HBLKSIZE; /* only show half the spectrum */ - - data = &pplot->energy[gr][ch][0]; - - ymn = 9e20; - ymx = -9e20; - for (i = 0; i < n; i++) { - xcord[i] = i + 1; - if (blocktype[gr][ch] == SHORT_TYPE && !subblock_draw[i % 3]) - ycord[i] = 0; - else - ycord[i] = log10(MAX(data[i], (double) 1)); - ymx = (ycord[i] > ymx) ? ycord[i] : ymx; - ymn = (ycord[i] < ymn) ? ycord[i] : ymn; - } - for (en = 0, j = 0; j < BLKSIZE; j++) - en += pplot->energy[gr][ch][j]; - - sprintf(title2, "FFT%1i pe=%5.2fK en=%5.2e ", gr, pplot->pe[gr][ch] / 1000, en); - - ymn = 3; - ymx = 15; - xmn = 1; - xmx = n; - gpk_bargraph_draw(enerbox[gr], n, xcord, ycord, - xmn, ymn, xmx, ymx, 1, title2, 0, barcolor); - - } - } - else { - /******************************************************************* - * draw the psy model energy spectrum (scalefactor bands) - *******************************************************************/ - for (gr = 0; gr < mode_gr; gr++) { - - if (blocktype[gr][ch] == 2) { - n = 3 * SBMAX_s; - data = &pplot->en_s[gr][ch][0]; - data2 = &pplot->thr_s[gr][ch][0]; - data3 = &pplot->xfsf_s[gr][ch][0]; - } - else { - n = SBMAX_l; - data = &pplot->en[gr][ch][0]; - data2 = &pplot->thr[gr][ch][0]; - data3 = &pplot->xfsf[gr][ch][0]; - } - ymn = 9e20; - ymx = -9e20; - for (i = 0; i < n; i++) { - xcord[i] = i + 1; - if (blocktype[gr][ch] == SHORT_TYPE && !subblock_draw[i % 3]) - ycord[i] = 0; - else - ycord[i] = log10(MAX(data[i], (double) 1)); - /* - ymx=(ycord[i] > ymx) ? ycord[i] : ymx; - ymn=(ycord[i] < ymn) ? ycord[i] : ymn; - */ - } - - - - /* en = max energy difference amoung the 3 short FFTs for this granule */ - en = pplot->ers[gr][ch]; - if (en > 999) - en = 999; - sprintf(title2, - "FFT%1i pe=%5.2fK/%3.1f \nnoise ovr_b:%i/max:%3.1f/ovr:%3.1f/tot:%3.1f/ssd:%i", - gr, pplot->pe[gr][ch] / 1000, en, pplot->over[gr][ch], pplot->max_noise[gr][ch], - pplot->over_noise[gr][ch], pplot->tot_noise[gr][ch], pplot->over_SSD[gr][ch]); - - barthick = 3; - if (blocktype[gr][ch] == SHORT_TYPE) - barthick = 2; - if (!(subblock_draw[0] && subblock_draw[1] && subblock_draw[2])) - barthick = 3; - - ymn = 3; - ymx = 15; - xmn = 1; - xmx = n + 1; /* a little extra because of the bar thickness */ - gpk_bargraph_draw(enerbox[gr], n, xcord, ycord, - xmn, ymn, xmx, ymx, 1, title2, barthick, barcolor); - - for (i = 0; i < n; i++) { - xcord[i] = i + 1 + .20; - if (blocktype[gr][ch] == SHORT_TYPE && !subblock_draw[i % 3]) - ycord[i] = 0; - else - ycord[i] = log10(MAX(data2[i], (double) 1)); - } - - gpk_bargraph_draw(enerbox[gr], n, xcord, ycord, - xmn, ymn, xmx, ymx, 0, title2, barthick, grcolor[gr]); - - for (i = 0; i < n; i++) { - xcord[i] = i + 1 + .40; - if (blocktype[gr][ch] == SHORT_TYPE && !subblock_draw[i % 3]) - ycord[i] = 0; - else - ycord[i] = log10(MAX(data3[i], (double) 1)); - } - gpk_bargraph_draw(enerbox[gr], n, xcord, ycord, - xmn, ymn, xmx, ymx, 0, title2, barthick, &red); - - } - } - - /******************************************************************* - * draw scalefactors - *******************************************************************/ - for (gr = 0; gr < mode_gr; gr++) { - int ggain; - if (blocktype[gr][ch] == 2) { - n = 3 * SBMAX_s; - if (gtkinfo.flag123) - data = pplot1->sfb_s[gr][ch]; - else - data = pplot->LAMEsfb_s[gr][ch]; - } - else { - n = SBMAX_l; - if (gtkinfo.flag123) - data = pplot1->sfb[gr][ch]; - else - data = pplot->LAMEsfb[gr][ch]; - } - - ymn = -1; - ymx = 10; - for (i = 0; i < n; i++) { - xcord[i] = i + 1; - if (blocktype[gr][ch] == SHORT_TYPE && !subblock_draw[i % 3]) - ycord[i] = 0; - else - ycord[i] = -data[i]; - - ymx = (ycord[i] > ymx - 2) ? ycord[i] + 2 : ymx; - ymn = (ycord[i] < ymn) ? ycord[i] - 1 : ymn; - } - - if (blocktype[gr][ch] == 2) { - sprintf(label2, - "SFB scale=%i preflag=%i %i%i%i", - pplot1->scalefac_scale[gr][ch], - pplot1->preflag[gr][ch], - pplot1->sub_gain[gr][ch][0], - pplot1->sub_gain[gr][ch][1], pplot1->sub_gain[gr][ch][2]); - } - else { - sprintf(label2, "SFB scale=%i preflag=%i", pplot1->scalefac_scale[gr][ch], - pplot1->preflag[gr][ch]); - } - - if (gtkinfo.flag123) - ggain = (pplot1->qss[gr][ch]); - else - ggain = (pplot->LAMEqss[gr][ch]); - - sprintf(title2, " ggain=%i", ggain); - strcat(label2, title2); - - xmn = 1; - xmx = n + 1; - gpk_bargraph_draw(sfbbox[gr], n, xcord, ycord, - xmn, ymn, xmx, ymx, 1, label2, 0, grcolor[gr]); - - ycord[0] = ycord[1] = 0; - xcord[0] = 1; - xcord[1] = n + 1; - gpk_rectangle_draw(sfbbox[gr], xcord, ycord, xmn, ymn, xmx, ymx, &yellow); - - - } - - -} - - - -static void -update_progress(void) -{ - char label[80]; - - int tf = lame_get_totalframes(gfp); - if (gtkinfo.totalframes > 0) - tf = gtkinfo.totalframes; - - sprintf(label, "Frame:%4i/%4i %6.2fs", pplot->frameNum, (int) tf - 1, pplot->frametime); - gtk_progress_set_value(GTK_PROGRESS(frameprogress), (gdouble) pplot->frameNum); - gtk_label_set_text(GTK_LABEL(framecounter), label); -} - - - -static void -analyze(void) -{ - if (idle_keepgoing) { - idle_count = 0; - idle_count_max = 0; - idle_keepgoing = 0; - idle_end = 0; - } - plot_frame(); - update_progress(); -} - -static void -plotclick(GtkWidget * widget, gpointer data) -{ - analyze(); -} - - - - -static int -frameadv1(GtkWidget * widget, gpointer data) -{ - int i; - if (idle_keepgoing) { - if (idle_back) { - /* frame displayed is the old frame. to advance, just swap in new frame */ - idle_back--; - pplot = &Pinfo[READ_AHEAD + idle_back]; - } - else { - /* advance the frame by reading in a new frame */ - pplot = &Pinfo[READ_AHEAD]; - if (mp3done) { - /* dont try to read any more frames, and quit if "finish MP3" was selected */ - /* if (idle_finish) gtk_main_quit(); */ - idle_count_max = 0; - idle_end = 0; - } - else { - /* read in the next frame */ - for (i = NUMPINFO - 1; i > 0; i--) - memcpy(&Pinfo[i], &Pinfo[i - 1], sizeof(plotting_data)); - pinfo = &Pinfo[0]; - pinfo->num_samples = gtkmakeframe(); - if (pinfo->num_samples == 0 && gtkinfo.totalframes == 0) - /* allow an extra frame to flush decoder buffers */ - gtkinfo.totalframes = pinfo->frameNum + 2; - - if (pinfo->sampfreq) - pinfo->frametime = (pinfo->frameNum) * 1152.0 / pinfo->sampfreq; - else - pinfo->frametime = 0; - - /* eof? - if (!pinfo->num_samples) if (idle_finish) gtk_main_quit(); - */ - - pinfo->totbits = 0; - { - int gr, ch; - for (gr = 0; gr < 2; gr++) - for (ch = 0; ch < 2; ch++) { - gtkinfo.totshort += (pinfo->mpg123blocktype[gr][ch] == 2); - gtkinfo.totmix += !(pinfo->mixed[gr][ch] == 0); - gtkinfo.totpreflag += (pinfo->preflag[gr][ch] == 1); - pinfo->totbits += pinfo->mainbits[gr][ch]; - } - } - if (pinfo->frameNum > 0) /* start averaging at second frame */ - gtkinfo.avebits = (gtkinfo.avebits * ((pinfo->frameNum) - 1) - + pinfo->totbits) / (pinfo->frameNum); - - gtkinfo.maxbits = MAX(gtkinfo.maxbits, pinfo->totbits); - gtkinfo.totemph += !(pinfo->emph == 0); - gtkinfo.totms += !(pinfo->ms_stereo == 0); - gtkinfo.totis += !(pinfo->i_stereo == 0); - - if (gtkinfo.totalframes > 0) - if (pplot->frameNum >= gtkinfo.totalframes - 1) - mp3done = 1; - } - } - - idle_count++; - if (gtkinfo.pupdate) - plot_frame(); - update_progress(); - if ((idle_count >= idle_count_max) && (!idle_end)) - analyze(); - } - else { - /*no processing to do, sleep in order to not monopolize CPU */ - msleep(10); - } - return 1; -} - - -static void -frameadv(GtkWidget * widget, gpointer data) -{ - int adv; - - if (!strcmp((char *) data, "-1")) { - /* ignore if we've already gone back as far as possible */ - if (pplot->frameNum == 0 || (idle_back == NUMBACK)) - return; - idle_back++; - pplot = &Pinfo[READ_AHEAD + idle_back]; - analyze(); - return; - } - - - adv = 1; - if (!strcmp((char *) data, "1")) - adv = 1; - if (!strcmp((char *) data, "10")) - adv = 10; - if (!strcmp((char *) data, "100")) - adv = 100; - if (!strcmp((char *) data, "finish")) - idle_end = 1; - - - if (idle_keepgoing) { - /* already running - que up additional frame advance requests */ - idle_count_max += adv; - } - else { - /* turn on idleing */ - idle_count_max = adv; - idle_count = 0; - idle_keepgoing = 1; - } -} - - - - -/* another callback */ -static void -delete_event(GtkWidget * widget, GdkEvent * event, gpointer data) -{ - /* set MP3 done flag in case the File/Quit menu item has been selected */ - mp3done = 1; - - gtk_main_quit(); -} - - - - - - - -static void -channel_option(GtkWidget * widget, gpointer data) -{ - long option; - option = (long) data; - switch (option) { - case 1: - gtkinfo.msflag = 0; - gtkinfo.chflag = 0; - break; - case 2: - gtkinfo.msflag = 0; - gtkinfo.chflag = 1; - break; - case 3: - gtkinfo.msflag = 1; - gtkinfo.chflag = 0; - break; - case 4: - gtkinfo.msflag = 1; - gtkinfo.chflag = 1; - } - analyze(); -} -static void -spec_option(GtkWidget * widget, gpointer data) -{ - long option; - option = (long) data; - switch (option) { - case 1: - gtkinfo.kbflag = 0; - break; - case 2: - gtkinfo.kbflag = 1; - break; - case 3: - gtkinfo.flag123 = 0; - break; - case 4: - gtkinfo.flag123 = 1; - break; - case 5: - gtkinfo.pupdate = 1; - break; - case 6: - gtkinfo.pupdate = 0; - break; - case 7: - gtkinfo.sfblines = !gtkinfo.sfblines; - break; - case 8: - gtkinfo.difference = !gtkinfo.difference; - break; - } - analyze(); -} - -static gint -key_press_event(GtkWidget * widget, GdkEventKey * event) -{ - /* is a switch() statement in lame forbidden? */ - if (event->keyval == '1') { - subblock_draw[0] = 1; - subblock_draw[1] = 0; - subblock_draw[2] = 0; - analyze(); - } - else if (event->keyval == '2') { - subblock_draw[0] = 0; - subblock_draw[1] = 1; - subblock_draw[2] = 0; - analyze(); - } - else if (event->keyval == '3') { - subblock_draw[0] = 0; - subblock_draw[1] = 0; - subblock_draw[2] = 1; - analyze(); - } - else if (event->keyval == '0') { - subblock_draw[0] = 1; - subblock_draw[1] = 1; - subblock_draw[2] = 1; - analyze(); - } - /* analyze(); */ /* dont redraw entire window for every key! */ - return 0; -} - - -/*! Get the mp3x version string. */ -/*! - \param void - \return a pointer to a string which describes the version of mp3x. -*/ -const char * -get_mp3x_version(void) -{ -#if MP3X_ALPHA_VERSION > 0 - static /*@observer@ */ const char *const str = - XSTR(MP3X_MAJOR_VERSION) "." XSTR(MP3X_MINOR_VERSION) - " (alpha " XSTR(MP3X_ALPHA_VERSION) ", " __DATE__ " " __TIME__ ")"; -#elif MP3X_BETA_VERSION > 0 - static /*@observer@ */ const char *const str = - XSTR(MP3X_MAJOR_VERSION) "." XSTR(MP3X_MINOR_VERSION) - " (beta " XSTR(MP3X_BETA_VERSION) ", " __DATE__ ")"; -#else - static /*@observer@ */ const char *const str = - XSTR(MP3X_MAJOR_VERSION) "." XSTR(MP3X_MINOR_VERSION); -#endif - - return str; -} - - -static void -text_window(GtkWidget * widget, gpointer data) -{ - long option; - GtkWidget *hbox, *vbox, *button, *box; - GtkWidget *textwindow, *vscrollbar; - char text[256]; - - option = (long) data; - - textwindow = gtk_window_new(GTK_WINDOW_DIALOG); - gtk_signal_connect_object(GTK_OBJECT(window), "delete_event", - GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(textwindow)); - - gtk_container_set_border_width(GTK_CONTAINER(textwindow), 0); - vbox = gtk_vbox_new(FALSE, 0); - hbox = gtk_hbox_new(FALSE, 0); - - button = gtk_button_new_with_label("close"); - gtk_signal_connect_object(GTK_OBJECT(button), "clicked", - GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(textwindow)); - - box = gtk_text_new(NULL, NULL); - gtk_text_set_editable(GTK_TEXT(box), FALSE); - vscrollbar = gtk_vscrollbar_new(GTK_TEXT(box)->vadj); - - - switch (option) { - case 0: - gtk_window_set_title(GTK_WINDOW(textwindow), "Documentation"); - gtk_widget_set_usize(box, 450, 500); - gtk_text_set_word_wrap(GTK_TEXT(box), TRUE); - /* text should be moved outside this function, may be in a separate file */ - gtk_text_insert(GTK_TEXT(box), NULL, NULL, NULL, - "Frame header information: " - "First the bitrate, sampling frequency and mono, stereo or jstereo " - "indicators are displayed . If the bitstream is jstereo, then mid/side " - "stereo or intensity stereo may be on (indicated in red). If " - "de-emphasis is used, this is also indicated in red. The mdb value is " - "main_data_begin. The encoded data starts this many bytes *before* the " - "frame header. A large value of mdb means the bitstream has saved some " - "bits into the reservoir, which it may allocate for some future frame. " - "The two numbers after mdb are the size (in bits) used to encode the " - "MDCT coefficients for this frame, followed byt the size of the bit " - "resevoir before encoding this frame. The maximum frame size and a " - "running average are given in the Stats pull down menu. A large " - "maximum frame size indicates the bitstream has made use of the bit " - "reservoir. \n\n", -1); - - gtk_text_insert(GTK_TEXT(box), NULL, NULL, NULL, - "PCM data (top graph): " - "The PCM data is plotted in black. The layer3 frame is divided into 2 " - "granules of 576 samples (marked with yellow vertical lines). In the " - "case of normal, start and stop blocks, the MDCT coefficients for each " - "granule are computed using a 1152 sample window centered over the " - "granule. In the case of short blocks, the granule is further divided " - "into 3 blocks of 192 samples (also marked with yellow vertical lines)." - "The MDCT coefficients for these blocks are computed using 384 sample " - "windows centered over the 192 sample window. (This info not available " - "when analyzing .mp3 files.) For the psycho-acoustic model, a windowed " - "FFT is computed for each granule. The range of these windows " - "is denoted by the blue and green bars.\n\n", -1); - - gtk_text_insert(GTK_TEXT(box), NULL, NULL, NULL, - "PCM re-synthesis data (second graph): " - "Same as the PCM window described above. The data displayed is the " - "result of encoding and then decoding the original sample. \n\n", -1); - - gtk_text_insert(GTK_TEXT(box), NULL, NULL, NULL, - "MDCT windows: " - "Shows the energy in the MDCT spectrum for granule 0 (left window) " - "and granule 1 (right window). The text also shows the blocktype " - "used, the number of bits used to encode the coefficients and the " - "number of extra bits allocated from the reservoir. The MDCT pull down " - "window will toggle between the original unquantized MDCT coefficients " - "and the compressed (quantized) coefficients.\n\n", -1); - - gtk_text_insert(GTK_TEXT(box), NULL, NULL, NULL, - "FFT window: " - "The gray bars show the energy in the FFT spectrum used by the " - "psycho-acoustic model. Granule 0 is in the left window, granule 1 in " - "the right window. The green and blue bars show how much distortion is " - "allowable, as computed by the psycho-acoustic model. The red bars show " - "the actual distortion after encoding. There is one FFT for each " - "granule, computed with a 1024 Hann window centered over the " - "appropriate granule. (the range of this 1024 sample window is shown " - "by the blue and green bars in the PCM data window). The Spectrum pull " - "down window will toggle between showing the energy in equally spaced " - "frequency domain and the scale factor bands used by layer3. Finally, " - "the perceptual entropy, total energy and number of scalefactor bands " - "with audible distortion is shown. (This info not available when " - "analyzing .mp3 files.)", -1); - - break; - case 1: - /* Set the about box information */ - gtk_window_set_title(GTK_WINDOW(textwindow), "About"); - gtk_widget_set_usize(box, 350, 260); - - sprintf(text, "LAME version %s \n%s\n\n", get_lame_version(), get_lame_url()); - gtk_text_insert(GTK_TEXT(box), NULL, NULL, NULL, text, -1); - - sprintf(text, "psycho-acoustic model: GPSYCHO version %s\n", get_psy_version()); - gtk_text_insert(GTK_TEXT(box), NULL, NULL, NULL, text, -1); - - sprintf(text, "frame analyzer: MP3x version %s\n\n", get_mp3x_version()); - gtk_text_insert(GTK_TEXT(box), NULL, NULL, NULL, text, -1); - - gtk_text_insert(GTK_TEXT(box), NULL, NULL, NULL, - "decoder: mpg123/mpglib .59q \nMichael Hipp (www.mpg123.de)\n\n", -1); - - gtk_text_insert(GTK_TEXT(box), NULL, NULL, NULL, - "Encoder, decoder & psy-models based on ISO\ndemonstration source. ", -1); - break; - - case 2: - gtk_window_set_title(GTK_WINDOW(textwindow), "Statistics"); - gtk_widget_set_usize(box, 350, 260); - sprintf(text, "frames processed so far: %i \n", Pinfo[0].frameNum + 1); - gtk_text_insert(GTK_TEXT(box), NULL, NULL, NULL, text, -1); - sprintf(text, "granules processed so far: %i \n\n", 4 * (Pinfo[0].frameNum + 1)); - gtk_text_insert(GTK_TEXT(box), NULL, NULL, NULL, text, -1); - sprintf(text, "mean bits/frame (approximate): %i\n", gtkinfo.approxbits); - gtk_text_insert(GTK_TEXT(box), NULL, NULL, NULL, text, -1); - sprintf(text, "mean bits/frame (from LAME): %i\n", 4 * Pinfo[0].mean_bits); - gtk_text_insert(GTK_TEXT(box), NULL, NULL, NULL, text, -1); - sprintf(text, "bitsize of largest frame: %i \n", gtkinfo.maxbits); - gtk_text_insert(GTK_TEXT(box), NULL, NULL, NULL, text, -1); - sprintf(text, "average bits/frame: %3.1f \n\n", gtkinfo.avebits); - gtk_text_insert(GTK_TEXT(box), NULL, NULL, NULL, text, -1); - sprintf(text, "ms_stereo frames: %i \n", gtkinfo.totms); - gtk_text_insert(GTK_TEXT(box), NULL, NULL, NULL, text, -1); - sprintf(text, "i_stereo frames: %i \n", gtkinfo.totis); - gtk_text_insert(GTK_TEXT(box), NULL, NULL, NULL, text, -1); - sprintf(text, "de-emphasis frames: %i \n", gtkinfo.totemph); - gtk_text_insert(GTK_TEXT(box), NULL, NULL, NULL, text, -1); - sprintf(text, "short block granules: %i \n", gtkinfo.totshort); - gtk_text_insert(GTK_TEXT(box), NULL, NULL, NULL, text, -1); - sprintf(text, "mixed block granules: %i \n", gtkinfo.totmix); - gtk_text_insert(GTK_TEXT(box), NULL, NULL, NULL, text, -1); - sprintf(text, "preflag granules: %i \n", gtkinfo.totpreflag); - gtk_text_insert(GTK_TEXT(box), NULL, NULL, NULL, text, -1); - break; - } - - - - gtk_widget_show(vscrollbar); - gtk_widget_show(box); - gtk_widget_show(vbox); - gtk_widget_show(hbox); - gtk_widget_show(button); - - gtk_box_pack_start(GTK_BOX(hbox), box, FALSE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(hbox), vscrollbar, FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); - gtk_box_pack_end(GTK_BOX(vbox), button, FALSE, TRUE, 0); - gtk_container_add(GTK_CONTAINER(textwindow), vbox); - gtk_widget_show(textwindow); - -} - - - - -/* #include */ - - -/* This is the GtkItemFactoryEntry structure used to generate new menus. - Item 1: The menu path. The letter after the underscore indicates an - accelerator key once the menu is open. - Item 2: The accelerator key for the entry - Item 3: The callback function. - Item 4: The callback action. This changes the parameters with - which the function is called. The default is 0. - Item 5: The item type, used to define what kind of an item it is. - Here are the possible values: - - NULL -> "" - "" -> "" - "" -> create a title item - "<Item>" -> create a simple item - "<CheckItem>" -> create a check item - "<ToggleItem>" -> create a toggle item - "<RadioItem>" -> create a radio item - <path> -> path of a radio item to link against - "<Separator>" -> create a separator - "<Branch>" -> create an item to hold sub items - "<LastBranch>" -> create a right justified branch -*/ - - -#define C(chr) "<control>" #chr -#define func(name) (GtkItemFactoryCallback) (name) - -static const GtkItemFactoryEntry menu_items[] = { - {"/_File", NULL, NULL, 0, "<Branch>"}, -#if 0 - {"/File/_New", C(N), func(print_hello), 0, NULL}, - {"/File/_Open", C(O), func(print_hello), 0, NULL}, - {"/File/_Save", C(S), func(print_hello), 0, NULL}, - {"/File/Save _As", NULL, NULL, 0, NULL}, - {"/File/sep1", NULL, NULL, 0, "<Separator>"}, - {"/File/Quit", C(Q), func(gtk_main_quit), 0, NULL}, -#endif - {"/File/_Quit", C(Q), func(delete_event), 0, NULL}, - - {"/_Plotting", NULL, NULL, 0, "<Branch>"}, - {"/Plotting/_While advancing", NULL, func(spec_option), 5, NULL}, - {"/Plotting/_After advancing", NULL, func(spec_option), 6, NULL}, - {"/Plotting/Toggle SFB lines", NULL, func(spec_option), 7, NULL}, - {"/Plotting/Toggle orig-diff", NULL, func(spec_option), 8, NULL}, - - {"/_Channel", NULL, NULL, 0, "<Branch>"}, - {"/Channel/show _Left", NULL, func(channel_option), 1, NULL}, - {"/Channel/show _Right", NULL, func(channel_option), 2, NULL}, - {"/Channel/show _Mid", NULL, func(channel_option), 3, NULL}, - {"/Channel/show _Side", NULL, func(channel_option), 4, NULL}, - - {"/_Spectrum", NULL, NULL, 0, "<Branch>"}, - {"/Spectrum/_Scalefactor bands", NULL, func(spec_option), 1, NULL}, - {"/Spectrum/_Wave number", NULL, func(spec_option), 2, NULL}, - - {"/_MDCT", NULL, NULL, 0, "<Branch>"}, - {"/MDCT/_Original", NULL, func(spec_option), 3, NULL}, - {"/MDCT/_Compressed", NULL, func(spec_option), 4, NULL}, - {"/MDCT/_Toggle SFB lines", NULL, func(spec_option), 7, NULL}, - - {"/_Stats", NULL, NULL, 0, "<Branch>"}, - {"/Stats/_Show", NULL, func(text_window), 2, NULL}, - - {"/_Help", NULL, NULL, 0, "<LastBranch>"}, - {"/_Help/_Documentation", NULL, func(text_window), 0, NULL}, - {"/_Help/_About", NULL, func(text_window), 1, NULL}, -}; - -#undef C -#undef func - - -static void -get_main_menu(GtkWidget * windows, GtkWidget ** menubar) -{ - unsigned int nmenu_items = sizeof(menu_items) / sizeof(menu_items[0]); - GtkItemFactory *item_factory; - GtkAccelGroup *accel_group; - - accel_group = gtk_accel_group_new(); - - /* This function initializes the item factory. - Param 1: The type of menu - can be GTK_TYPE_MENU_BAR, GTK_TYPE_MENU, - or GTK_TYPE_OPTION_MENU. - Param 2: The path of the menu. - Param 3: A pointer to a gtk_accel_group. The item factory sets up - the accelerator table while generating menus. - */ - - item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accel_group); - - /* This function generates the menu items. Pass the item factory, - the number of items in the array, the array itself, and any - callback data for the the menu items. */ - gtk_item_factory_create_items(item_factory, nmenu_items, (GtkItemFactoryEntry *) menu_items, - NULL); - - /* Attach the new accelerator group to the window. */ - gtk_accel_group_attach(accel_group, GTK_OBJECT(windows)); - - if (menubar) - /* Finally, return the actual menu bar created by the item factory. */ - *menubar = gtk_item_factory_get_widget(item_factory, "<main>"); -} - - - - - - - - - - - - - - - - -int -gtkcontrol(lame_global_flags * gfp2, char *inPath) -{ - /* GtkWidget is the storage type for widgets */ - GtkWidget *button; - GtkAdjustment *adj; - GtkWidget *mbox; /* main box */ - GtkWidget *box1; /* frame control buttons go */ - GtkWidget *box2; /* frame counters */ - GtkWidget *box3; /* frame header info */ - GtkWidget *table; /* table for all the plotting areas */ - GtkWidget *menubar; - - gint tableops, graphx, graphy; - char frameinfo[80]; - - graphx = 600; /* minimum allowed size of pixmap */ - graphy = 95; - - gfp = gfp2; - gfc = gfp->internal_flags; - - /* set some global defaults/variables */ - gtkinfo.filetype = is_mpeg_file_format(global_reader.input_format) ? 1 : 0; - gtkinfo.msflag = 0; - gtkinfo.chflag = 0; - gtkinfo.kbflag = 0; - gtkinfo.flag123 = is_mpeg_file_format(global_reader.input_format) ? 1 : 0; /* MP3 file=use mpg123 output */ - gtkinfo.pupdate = 0; - gtkinfo.avebits = 0; - gtkinfo.maxbits = 0; - gtkinfo.approxbits = 0; - gtkinfo.totemph = 0; - gtkinfo.totms = 0; - gtkinfo.totis = 0; - gtkinfo.totshort = 0; - gtkinfo.totmix = 0; - gtkinfo.sfblines = 1; - gtkinfo.difference = 0; - gtkinfo.totalframes = 0; - - memset((char *) Pinfo, 0, sizeof(Pinfo)); - pplot = &Pinfo[READ_AHEAD]; - - strcpy(frameinfo, "MP3x: "); - strncat(frameinfo, inPath, 70); - - window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_title(GTK_WINDOW(window), frameinfo); - gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(delete_event), NULL); - - gtk_signal_connect_object(GTK_OBJECT(window), "key_press_event", - GTK_SIGNAL_FUNC(key_press_event), GTK_OBJECT(window)); - - gtk_container_set_border_width(GTK_CONTAINER(window), 0); - - - mbox = gtk_vbox_new(FALSE, 0); - - - /* layout of mbox */ - box1 = gtk_hbox_new(FALSE, 0); - box2 = gtk_hbox_new(FALSE, 0); - box3 = gtk_hbox_new(FALSE, 0); - table = gtk_table_new(5, 2, FALSE); - tableops = GTK_FILL | GTK_EXPAND | GTK_SHRINK; - get_main_menu(window, &menubar); - - gtk_box_pack_start(GTK_BOX(mbox), menubar, FALSE, TRUE, 0); - gtk_box_pack_end(GTK_BOX(mbox), box1, FALSE, TRUE, 0); - gtk_box_pack_end(GTK_BOX(mbox), box2, FALSE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(mbox), box3, FALSE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(mbox), table, TRUE, TRUE, 0); - gtk_container_add(GTK_CONTAINER(window), mbox); - - - /*********************************************************************/ - /* stuff in box3 frame header info */ - /*********************************************************************/ - /* - headerbox = gtk_label_new(" "); - gtk_label_set_justify(GTK_LABEL(headerbox),GTK_JUSTIFY_LEFT); - */ - headerbox = gtk_text_new(NULL, NULL); - gtk_text_set_editable(GTK_TEXT(headerbox), FALSE); - gtk_widget_set_usize(headerbox, 200, 20); - gtk_widget_show(headerbox); - gtk_box_pack_start(GTK_BOX(box3), headerbox, TRUE, TRUE, 0); - - - - /*********************************************************************/ - /* stuff in box2 frame counters */ - /*********************************************************************/ - framecounter = gtk_label_new(""); - gtk_widget_show(framecounter); - gtk_box_pack_start(GTK_BOX(box2), framecounter, FALSE, TRUE, 0); - - adj = (GtkAdjustment *) gtk_adjustment_new(0, 0, (gint) lame_get_totalframes(gfp) - 1, 0, 0, 0); - frameprogress = gtk_progress_bar_new_with_adjustment(adj); - /* Set the format of the string that can be displayed in the - * trough of the progress bar: - * %p - percentage - * %v - value - * %l - lower range value - * %u - upper range value */ - gtk_progress_set_format_string(GTK_PROGRESS(frameprogress), "%p%%"); - gtk_progress_set_value(GTK_PROGRESS(frameprogress), (gdouble) 0); - gtk_progress_set_show_text(GTK_PROGRESS(frameprogress), TRUE); - gtk_widget_show(frameprogress); - gtk_box_pack_end(GTK_BOX(box2), frameprogress, FALSE, TRUE, 0); - - - - /*********************************************************************/ - /* stuff in box1 buttons along bottom */ - /*********************************************************************/ - button = gtk_button_new_with_label("-1"); - gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(frameadv), (gpointer) "-1"); - gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); - gtk_widget_show(button); - - button = gtk_button_new_with_label("+1"); - gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(frameadv), (gpointer) "1"); - gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); - gtk_widget_show(button); - - button = gtk_button_new_with_label("+10"); - gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(frameadv), (gpointer) "10"); - gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); - gtk_widget_show(button); - - button = gtk_button_new_with_label("+100"); - gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(frameadv), (gpointer) "100"); - gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); - gtk_widget_show(button); - - button = gtk_button_new_with_label("last frame"); - gtk_signal_connect(GTK_OBJECT(button), "clicked", - GTK_SIGNAL_FUNC(frameadv), (gpointer) "finish"); - gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); - gtk_widget_show(button); - - button = gtk_button_new_with_label("stop/plot"); - gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(plotclick), NULL); - gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); - gtk_widget_show(button); - - - /*********************************************************************/ - /* stuff in table. all the plotting windows */ - /*********************************************************************/ - pcmbox = gpk_plot_new(graphx, graphy); - gtk_table_attach(GTK_TABLE(table), pcmbox, 0, 2, 0, 1, tableops, tableops, 2, 2); - gtk_widget_show(pcmbox); - - winbox = gpk_plot_new(graphy, graphy); - gtk_table_attach(GTK_TABLE(table), winbox, 0, 2, 1, 2, tableops, tableops, 2, 2); - gtk_widget_show(winbox); - - - mdctbox[0] = gpk_plot_new(graphy, graphy); - gtk_table_attach(GTK_TABLE(table), mdctbox[0], 0, 1, 2, 3, tableops, tableops, 2, 2); - gtk_widget_show(mdctbox[0]); - - mdctbox[1] = gpk_plot_new(graphy, graphy); - gtk_table_attach(GTK_TABLE(table), mdctbox[1], 1, 2, 2, 3, tableops, tableops, 2, 2); - gtk_widget_show(mdctbox[1]); - - enerbox[0] = gpk_plot_new(graphy, graphy); - gtk_table_attach(GTK_TABLE(table), enerbox[0], 0, 1, 3, 4, tableops, tableops, 2, 2); - gtk_widget_show(enerbox[0]); - - enerbox[1] = gpk_plot_new(graphy, graphy); - gtk_table_attach(GTK_TABLE(table), enerbox[1], 1, 2, 3, 4, tableops, tableops, 2, 2); - gtk_widget_show(enerbox[1]); - - sfbbox[0] = gpk_plot_new(graphy, graphy); - gtk_table_attach(GTK_TABLE(table), sfbbox[0], 0, 1, 4, 5, tableops, tableops, 2, 2); - gtk_widget_show(sfbbox[0]); - - sfbbox[1] = gpk_plot_new(graphy, graphy); - gtk_table_attach(GTK_TABLE(table), sfbbox[1], 1, 2, 4, 5, tableops, tableops, 2, 2); - gtk_widget_show(sfbbox[1]); - - - - - gtk_idle_add((GtkFunction) frameadv1, NULL); - gtk_widget_show(menubar); - gtk_widget_show(box2); - gtk_widget_show(box3); - gtk_widget_show(table); - gtk_widget_show(box1); - gtk_widget_show(mbox); - gtk_widget_show(window); /* show smallest allowed window */ - - /* make window bigger. */ - /* now the user will be able to shrink it, if desired */ - /* gtk_widget_set_usize(mbox,500,500); */ - /* gtk_widget_show (window); */ /* show smallest allowed window */ - - - - idle_keepgoing = 1; /* processing of frames is ON */ - idle_count_max = READ_AHEAD + 1; /* number of frames to process before plotting */ - idle_count = 0; /* pause & plot when idle_count=idle_count_max */ - - gtk_main(); - assert(mp3done); - return (0); -} diff --git a/platform/win32/msvc/external/lame/frontend/gtkanal.h b/platform/win32/msvc/external/lame/frontend/gtkanal.h deleted file mode 100644 index cf6854b5ea4..00000000000 --- a/platform/win32/msvc/external/lame/frontend/gtkanal.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * - * 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 LAME_GTKCONTROL_H -#define LAME_GTKCONTROL_H - - -int gtkcontrol(lame_global_flags * gfp2, char *inPath); - -#endif diff --git a/platform/win32/msvc/external/lame/frontend/lame_main.c b/platform/win32/msvc/external/lame/frontend/lame_main.c deleted file mode 100644 index fa27245a72b..00000000000 --- a/platform/win32/msvc/external/lame/frontend/lame_main.c +++ /dev/null @@ -1,728 +0,0 @@ -/* - * Command line frontend program - * - * Copyright (c) 1999 Mark Taylor - * 2000 Takehiro TOMINAGA - * 2010-2011 Robert Hegemann - * - * 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. - */ - -/* $Id: lame_main.c,v 1.9.2.1 2011/11/18 08:38:04 robert Exp $ */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <stdio.h> - -#ifdef STDC_HEADERS -# include <stdlib.h> -# include <string.h> -#else -# ifndef HAVE_STRCHR -# define strchr index -# define strrchr rindex -# endif -char *strchr(), *strrchr(); -# ifndef HAVE_MEMCPY -# define memcpy(d, s, n) bcopy ((s), (d), (n)) -# define memmove(d, s, n) bcopy ((s), (d), (n)) -# endif -#endif - -#ifdef HAVE_FCNTL_H -# include <fcntl.h> -#endif - -#ifdef __sun__ -/* woraround for SunOS 4.x, it has SEEK_* defined here */ -#include <unistd.h> -#endif - -#if defined(_WIN32) -# include <windows.h> -#endif - - -/* - main.c is example code for how to use libmp3lame.a. To use this library, - you only need the library and lame.h. All other .h files are private - to the library. -*/ -#include "lame.h" - -#include "console.h" -#include "parse.h" -#include "main.h" -#include "get_audio.h" -#include "timestatus.h" - -/* PLL 14/04/2000 */ -#if macintosh -#include <console.h> -#endif - -#ifdef WITH_DMALLOC -#include <dmalloc.h> -#endif - - - - -/************************************************************************ -* -* main -* -* PURPOSE: MPEG-1,2 Layer III encoder with GPSYCHO -* psychoacoustic model. -* -************************************************************************/ - - -static int -parse_args_from_string(lame_global_flags * const gfp, const char *p, char *inPath, char *outPath) -{ /* Quick & very Dirty */ - char *q; - char *f; - char *r[128]; - int c = 0; - int ret; - - if (p == NULL || *p == '\0') - return 0; - - f = q = malloc(strlen(p) + 1); - strcpy(q, p); - - r[c++] = "lhama"; - for (;;) { - r[c++] = q; - while (*q != ' ' && *q != '\0') - q++; - if (*q == '\0') - break; - *q++ = '\0'; - } - r[c] = NULL; - - ret = parse_args(gfp, c, r, inPath, outPath, NULL, NULL); - free(f); - return ret; -} - - - - - -static FILE * -init_files(lame_global_flags * gf, char const *inPath, char const *outPath) -{ - FILE *outf; - /* Mostly it is not useful to use the same input and output name. - This test is very easy and buggy and don't recognize different names - assigning the same file - */ - if (0 != strcmp("-", outPath) && 0 == strcmp(inPath, outPath)) { - error_printf("Input file and Output file are the same. Abort.\n"); - return NULL; - } - - /* open the wav/aiff/raw pcm or mp3 input file. This call will - * open the file, try to parse the headers and - * set gf.samplerate, gf.num_channels, gf.num_samples. - * if you want to do your own file input, skip this call and set - * samplerate, num_channels and num_samples yourself. - */ - if (init_infile(gf, inPath) < 0) { - error_printf("Can't init infile '%s'\n", inPath); - return NULL; - } - if ((outf = init_outfile(outPath, lame_get_decode_only(gf))) == NULL) { - error_printf("Can't init outfile '%s'\n", outPath); - return NULL; - } - - return outf; -} - - -static void -printInputFormat(lame_t gfp) -{ - int const v_main = 2 - lame_get_version(gfp); - char const *v_ex = lame_get_out_samplerate(gfp) < 16000 ? ".5" : ""; - switch (global_reader.input_format) { - case sf_mp123: /* FIXME: !!! */ - break; - case sf_mp3: - console_printf("MPEG-%u%s Layer %s", v_main, v_ex, "III"); - break; - case sf_mp2: - console_printf("MPEG-%u%s Layer %s", v_main, v_ex, "II"); - break; - case sf_mp1: - console_printf("MPEG-%u%s Layer %s", v_main, v_ex, "I"); - break; - case sf_raw: - console_printf("raw PCM data"); - break; - case sf_wave: - console_printf("Microsoft WAVE"); - break; - case sf_aiff: - console_printf("SGI/Apple AIFF"); - break; - default: - console_printf("unknown"); - break; - } -} - -/* the simple lame decoder */ -/* After calling lame_init(), lame_init_params() and - * init_infile(), call this routine to read the input MP3 file - * and output .wav data to the specified file pointer*/ -/* lame_decoder will ignore the first 528 samples, since these samples - * represent the mpglib delay (and are all 0). skip = number of additional - * samples to skip, to (for example) compensate for the encoder delay */ - -static int -lame_decoder(lame_t gfp, FILE * outf, char *inPath, char *outPath) -{ - short int Buffer[2][1152]; - int i, iread; - double wavsize; - int tmp_num_channels = lame_get_num_channels(gfp); - int skip_start = samples_to_skip_at_start(); - int skip_end = samples_to_skip_at_end(); - DecoderProgress dp = 0; - - if (!(tmp_num_channels >= 1 && tmp_num_channels <= 2)) { - error_printf("Internal error. Aborting."); - exit(-1); - } - - if (global_ui_config.silent < 9) { - console_printf("\rinput: %s%s(%g kHz, %i channel%s, ", - strcmp(inPath, "-") ? inPath : "<stdin>", - strlen(inPath) > 26 ? "\n\t" : " ", - lame_get_in_samplerate(gfp) / 1.e3, - tmp_num_channels, tmp_num_channels != 1 ? "s" : ""); - - printInputFormat(gfp); - - console_printf(")\noutput: %s%s(16 bit, Microsoft WAVE)\n", - strcmp(outPath, "-") ? outPath : "<stdout>", - strlen(outPath) > 45 ? "\n\t" : " "); - - if (skip_start > 0) - console_printf("skipping initial %i samples (encoder+decoder delay)\n", skip_start); - if (skip_end > 0) - console_printf("skipping final %i samples (encoder padding-decoder delay)\n", skip_end); - - switch (global_reader.input_format) { - case sf_mp3: - case sf_mp2: - case sf_mp1: - dp = decoder_progress_init(lame_get_num_samples(gfp), - global_decoder.mp3input_data.framesize); - break; - case sf_raw: - case sf_wave: - case sf_aiff: - default: - dp = decoder_progress_init(lame_get_num_samples(gfp), - lame_get_in_samplerate(gfp) < 32000 ? 576 : 1152); - break; - } - } - - if (0 == global_decoder.disable_wav_header) - WriteWaveHeader(outf, 0x7FFFFFFF, lame_get_in_samplerate(gfp), tmp_num_channels, 16); - /* unknown size, so write maximum 32 bit signed value */ - - wavsize = 0; - do { - iread = get_audio16(gfp, Buffer); /* read in 'iread' samples */ - if (iread >= 0) { - wavsize += iread; - if (dp != 0) { - decoder_progress(dp, &global_decoder.mp3input_data, iread); - } - put_audio16(outf, Buffer, iread, tmp_num_channels); - } - } while (iread > 0); - - i = (16 / 8) * tmp_num_channels; - assert(i > 0); - if (wavsize <= 0) { - if (global_ui_config.silent < 10) - error_printf("WAVE file contains 0 PCM samples\n"); - wavsize = 0; - } - else if (wavsize > 0xFFFFFFD0 / i) { - if (global_ui_config.silent < 10) - error_printf("Very huge WAVE file, can't set filesize accordingly\n"); - wavsize = 0xFFFFFFD0; - } - else { - wavsize *= i; - } - /* if outf is seekable, rewind and adjust length */ - if (!global_decoder.disable_wav_header && strcmp("-", outPath) - && !fseek(outf, 0l, SEEK_SET)) - WriteWaveHeader(outf, (int) wavsize, lame_get_in_samplerate(gfp), tmp_num_channels, 16); - fclose(outf); - close_infile(); - - if (dp != 0) - decoder_progress_finish(dp); - return 0; -} - - - -static void -print_trailing_info(lame_global_flags * gf) -{ - if (lame_get_findReplayGain(gf)) { - int RadioGain = lame_get_RadioGain(gf); - console_printf("ReplayGain: %s%.1fdB\n", RadioGain > 0 ? "+" : "", - ((float) RadioGain) / 10.0); - if (RadioGain > 0x1FE || RadioGain < -0x1FE) - error_printf - ("WARNING: ReplayGain exceeds the -51dB to +51dB range. Such a result is too\n" - " high to be stored in the header.\n"); - } - - /* if (the user requested printing info about clipping) and (decoding - on the fly has actually been performed) */ - if (global_ui_config.print_clipping_info && lame_get_decode_on_the_fly(gf)) { - float noclipGainChange = (float) lame_get_noclipGainChange(gf) / 10.0f; - float noclipScale = lame_get_noclipScale(gf); - - if (noclipGainChange > 0.0) { /* clipping occurs */ - console_printf - ("WARNING: clipping occurs at the current gain. Set your decoder to decrease\n" - " the gain by at least %.1fdB or encode again ", noclipGainChange); - - /* advice the user on the scale factor */ - if (noclipScale > 0) { - console_printf("using --scale %.2f\n", noclipScale); - console_printf(" or less (the value under --scale is approximate).\n"); - } - else { - /* the user specified his own scale factor. We could suggest - * the scale factor of (32767.0/gfp->PeakSample)*(gfp->scale) - * but it's usually very inaccurate. So we'd rather advice him to - * disable scaling first and see our suggestion on the scale factor then. */ - console_printf("using --scale <arg>\n" - " (For a suggestion on the optimal value of <arg> encode\n" - " with --scale 1 first)\n"); - } - - } - else { /* no clipping */ - if (noclipGainChange > -0.1) - console_printf - ("\nThe waveform does not clip and is less than 0.1dB away from full scale.\n"); - else - console_printf - ("\nThe waveform does not clip and is at least %.1fdB away from full scale.\n", - -noclipGainChange); - } - } - -} - - -static int -write_xing_frame(lame_global_flags * gf, FILE * outf, size_t offset) -{ - unsigned char mp3buffer[LAME_MAXMP3BUFFER]; - size_t imp3, owrite; - - imp3 = lame_get_lametag_frame(gf, mp3buffer, sizeof(mp3buffer)); - if (imp3 <= 0) { - return 0; /* nothing to do */ - } - if (global_ui_config.silent <= 0) { - console_printf("Writing LAME Tag..."); - } - if (imp3 > sizeof(mp3buffer)) { - error_printf - ("Error writing LAME-tag frame: buffer too small: buffer size=%d frame size=%d\n", - sizeof(mp3buffer), imp3); - return -1; - } - if (fseek(outf, offset, SEEK_SET) != 0) { - error_printf("fatal error: can't update LAME-tag frame!\n"); - return -1; - } - owrite = (int) fwrite(mp3buffer, 1, imp3, outf); - if (owrite != imp3) { - error_printf("Error writing LAME-tag \n"); - return -1; - } - if (global_ui_config.silent <= 0) { - console_printf("done\n"); - } - return imp3; -} - - -static int -write_id3v1_tag(lame_t gf, FILE * outf) -{ - unsigned char mp3buffer[128]; - int imp3, owrite; - - imp3 = lame_get_id3v1_tag(gf, mp3buffer, sizeof(mp3buffer)); - if (imp3 <= 0) { - return 0; - } - if ((size_t) imp3 > sizeof(mp3buffer)) { - error_printf("Error writing ID3v1 tag: buffer too small: buffer size=%d ID3v1 size=%d\n", - sizeof(mp3buffer), imp3); - return 0; /* not critical */ - } - owrite = (int) fwrite(mp3buffer, 1, imp3, outf); - if (owrite != imp3) { - error_printf("Error writing ID3v1 tag \n"); - return 1; - } - return 0; -} - - -static int -lame_encoder_loop(lame_global_flags * gf, FILE * outf, int nogap, char *inPath, char *outPath) -{ - unsigned char mp3buffer[LAME_MAXMP3BUFFER]; - int Buffer[2][1152]; - int iread, imp3, owrite; - size_t id3v2_size; - - encoder_progress_begin(gf, inPath, outPath); - - id3v2_size = lame_get_id3v2_tag(gf, 0, 0); - if (id3v2_size > 0) { - unsigned char *id3v2tag = malloc(id3v2_size); - if (id3v2tag != 0) { - imp3 = lame_get_id3v2_tag(gf, id3v2tag, id3v2_size); - owrite = (int) fwrite(id3v2tag, 1, imp3, outf); - free(id3v2tag); - if (owrite != imp3) { - encoder_progress_end(gf); - error_printf("Error writing ID3v2 tag \n"); - return 1; - } - } - } - else { - unsigned char* id3v2tag = getOldTag(gf); - id3v2_size = sizeOfOldTag(gf); - if ( id3v2_size > 0 ) { - size_t owrite = fwrite(id3v2tag, 1, id3v2_size, outf); - if (owrite != id3v2_size) { - encoder_progress_end(gf); - error_printf("Error writing ID3v2 tag \n"); - return 1; - } - } - } - if (global_writer.flush_write == 1) { - fflush(outf); - } - - /* encode until we hit eof */ - do { - /* read in 'iread' samples */ - iread = get_audio(gf, Buffer); - - if (iread >= 0) { - encoder_progress(gf); - - /* encode */ - imp3 = lame_encode_buffer_int(gf, Buffer[0], Buffer[1], iread, - mp3buffer, sizeof(mp3buffer)); - - /* was our output buffer big enough? */ - if (imp3 < 0) { - if (imp3 == -1) - error_printf("mp3 buffer is not big enough... \n"); - else - error_printf("mp3 internal error: error code=%i\n", imp3); - return 1; - } - owrite = (int) fwrite(mp3buffer, 1, imp3, outf); - if (owrite != imp3) { - error_printf("Error writing mp3 output \n"); - return 1; - } - } - if (global_writer.flush_write == 1) { - fflush(outf); - } - } while (iread > 0); - - if (nogap) - imp3 = lame_encode_flush_nogap(gf, mp3buffer, sizeof(mp3buffer)); /* may return one more mp3 frame */ - else - imp3 = lame_encode_flush(gf, mp3buffer, sizeof(mp3buffer)); /* may return one more mp3 frame */ - - if (imp3 < 0) { - if (imp3 == -1) - error_printf("mp3 buffer is not big enough... \n"); - else - error_printf("mp3 internal error: error code=%i\n", imp3); - return 1; - - } - - encoder_progress_end(gf); - - owrite = (int) fwrite(mp3buffer, 1, imp3, outf); - if (owrite != imp3) { - error_printf("Error writing mp3 output \n"); - return 1; - } - if (global_writer.flush_write == 1) { - fflush(outf); - } - imp3 = write_id3v1_tag(gf, outf); - if (global_writer.flush_write == 1) { - fflush(outf); - } - if (imp3) { - return 1; - } - write_xing_frame(gf, outf, id3v2_size); - if (global_writer.flush_write == 1) { - fflush(outf); - } - if (global_ui_config.silent <= 0) { - print_trailing_info(gf); - } - return 0; -} - - -static int -lame_encoder(lame_global_flags * gf, FILE * outf, int nogap, char *inPath, char *outPath) -{ - int ret; - - ret = lame_encoder_loop(gf, outf, nogap, inPath, outPath); - fclose(outf); /* close the output file */ - close_infile(); /* close the input file */ - return ret; -} - - -static void -parse_nogap_filenames(int nogapout, char const *inPath, char *outPath, char *outdir) -{ - char const *slasher; - size_t n; - - /* FIXME: replace strcpy by safer strncpy */ - strcpy(outPath, outdir); - if (!nogapout) { - strncpy(outPath, inPath, PATH_MAX + 1 - 4); - n = strlen(outPath); - /* nuke old extension, if one */ - if (outPath[n - 3] == 'w' - && outPath[n - 2] == 'a' && outPath[n - 1] == 'v' && outPath[n - 4] == '.') { - outPath[n - 3] = 'm'; - outPath[n - 2] = 'p'; - outPath[n - 1] = '3'; - } - else { - outPath[n + 0] = '.'; - outPath[n + 1] = 'm'; - outPath[n + 2] = 'p'; - outPath[n + 3] = '3'; - outPath[n + 4] = 0; - } - } - else { - slasher = inPath; - slasher += PATH_MAX + 1 - 4; - - /* backseek to last dir delemiter */ - while (*slasher != '/' && *slasher != '\\' && slasher != inPath && *slasher != ':') { - slasher--; - } - - /* skip one foward if needed */ - if (slasher != inPath - && (outPath[strlen(outPath) - 1] == '/' - || outPath[strlen(outPath) - 1] == '\\' || outPath[strlen(outPath) - 1] == ':')) - slasher++; - else if (slasher == inPath - && (outPath[strlen(outPath) - 1] != '/' - && - outPath[strlen(outPath) - 1] != '\\' && outPath[strlen(outPath) - 1] != ':')) - /* FIXME: replace strcat by safer strncat */ -#ifdef _WIN32 - strncat(outPath, "\\", PATH_MAX + 1 - 4); -#elif __OS2__ - strncat(outPath, "\\", PATH_MAX + 1 - 4); -#else - strncat(outPath, "/", PATH_MAX + 1 - 4); -#endif - - strncat(outPath, slasher, PATH_MAX + 1 - 4); - n = strlen(outPath); - /* nuke old extension */ - if (outPath[n - 3] == 'w' - && outPath[n - 2] == 'a' && outPath[n - 1] == 'v' && outPath[n - 4] == '.') { - outPath[n - 3] = 'm'; - outPath[n - 2] = 'p'; - outPath[n - 1] = '3'; - } - else { - outPath[n + 0] = '.'; - outPath[n + 1] = 'm'; - outPath[n + 2] = 'p'; - outPath[n + 3] = '3'; - outPath[n + 4] = 0; - } - } -} - - -int -lame_main(lame_t gf, int argc, char **argv) -{ - char inPath[PATH_MAX + 1]; - char outPath[PATH_MAX + 1]; - char nogapdir[PATH_MAX + 1]; - /* support for "nogap" encoding of up to 200 .wav files */ -#define MAX_NOGAP 200 - int nogapout = 0; - int max_nogap = MAX_NOGAP; - char nogap_inPath_[MAX_NOGAP][PATH_MAX + 1]; - char *nogap_inPath[MAX_NOGAP]; - - int ret; - int i; - FILE *outf; - - lame_set_msgf(gf, &frontend_msgf); - lame_set_errorf(gf, &frontend_errorf); - lame_set_debugf(gf, &frontend_debugf); - if (argc <= 1) { - usage(stderr, argv[0]); /* no command-line args, print usage, exit */ - return 1; - } - - memset(inPath, 0, sizeof(inPath)); - memset(nogap_inPath_, 0, sizeof(nogap_inPath_)); - for (i = 0; i < MAX_NOGAP; ++i) { - nogap_inPath[i] = &nogap_inPath_[i][0]; - } - - /* parse the command line arguments, setting various flags in the - * struct 'gf'. If you want to parse your own arguments, - * or call libmp3lame from a program which uses a GUI to set arguments, - * skip this call and set the values of interest in the gf struct. - * (see the file API and lame.h for documentation about these parameters) - */ - { - char *str = lame_getenv("LAMEOPT"); - parse_args_from_string(gf, str, inPath, outPath); - free(str); - } - ret = parse_args(gf, argc, argv, inPath, outPath, nogap_inPath, &max_nogap); - if (ret < 0) { - return ret == -2 ? 0 : 1; - } - if (global_ui_config.update_interval < 0.) - global_ui_config.update_interval = 2.; - - if (outPath[0] != '\0' && max_nogap > 0) { - strncpy(nogapdir, outPath, PATH_MAX + 1); - nogapout = 1; - } - - /* initialize input file. This also sets samplerate and as much - other data on the input file as available in the headers */ - if (max_nogap > 0) { - /* for nogap encoding of multiple input files, it is not possible to - * specify the output file name, only an optional output directory. */ - parse_nogap_filenames(nogapout, nogap_inPath[0], outPath, nogapdir); - outf = init_files(gf, nogap_inPath[0], outPath); - } - else { - outf = init_files(gf, inPath, outPath); - } - if (outf == NULL) { - return -1; - } - /* turn off automatic writing of ID3 tag data into mp3 stream - * we have to call it before 'lame_init_params', because that - * function would spit out ID3v2 tag data. - */ - lame_set_write_id3tag_automatic(gf, 0); - - /* Now that all the options are set, lame needs to analyze them and - * set some more internal options and check for problems - */ - ret = lame_init_params(gf); - if (ret < 0) { - if (ret == -1) { - display_bitrates(stderr); - } - error_printf("fatal error during initialization\n"); - return ret; - } - - if (global_ui_config.silent > 0) { - global_ui_config.brhist = 0; /* turn off VBR histogram */ - } - - if (lame_get_decode_only(gf)) { - /* decode an mp3 file to a .wav */ - ret = lame_decoder(gf, outf, inPath, outPath); - } - else if (max_nogap == 0) { - /* encode a single input file */ - ret = lame_encoder(gf, outf, 0, inPath, outPath); - } - else { - /* encode multiple input files using nogap option */ - for (i = 0; i < max_nogap; ++i) { - int use_flush_nogap = (i != (max_nogap - 1)); - if (i > 0) { - parse_nogap_filenames(nogapout, nogap_inPath[i], outPath, nogapdir); - /* note: if init_files changes anything, like - samplerate, num_channels, etc, we are screwed */ - outf = init_files(gf, nogap_inPath[i], outPath); - /* reinitialize bitstream for next encoding. this is normally done - * by lame_init_params(), but we cannot call that routine twice */ - lame_init_bitstream(gf); - } - lame_set_nogap_total(gf, max_nogap); - lame_set_nogap_currentindex(gf, i); - ret = lame_encoder(gf, outf, use_flush_nogap, nogap_inPath[i], outPath); - } - } - return ret; -} diff --git a/platform/win32/msvc/external/lame/frontend/lametime.c b/platform/win32/msvc/external/lame/frontend/lametime.c deleted file mode 100644 index f11d2e62d4a..00000000000 --- a/platform/win32/msvc/external/lame/frontend/lametime.c +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Lame time routines source file - * - * Copyright (c) 2000 Mark Taylor - * - * 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. - */ - -/* $Id: lametime.c,v 1.21 2011/05/07 16:05:17 rbrito Exp $ */ - -/* - * name: GetCPUTime ( void ) - * - * description: returns CPU time used by the process - * input: none - * output: time in seconds - * known bugs: may not work in SMP and RPC - * conforming: ANSI C - * - * There is some old difficult to read code at the end of this file. - * Can someone integrate this into this function (if useful)? - */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <stdio.h> -#include <time.h> - -#ifdef WITH_DMALLOC -#include <dmalloc.h> -#endif - -#include "lametime.h" - -#if !defined(CLOCKS_PER_SEC) -# warning Your system does not define CLOCKS_PER_SEC, guessing one... -# define CLOCKS_PER_SEC 1000000 -#endif - - -double -GetCPUTime(void) -{ - clock_t t; - -#if defined(_MSC_VER) || defined(__BORLANDC__) - t = clock(); -#else - t = clock(); -#endif - return t / (double) CLOCKS_PER_SEC; -} - - -/* - * name: GetRealTime ( void ) - * - * description: returns real (human) time elapsed relative to a fixed time (mostly 1970-01-01 00:00:00) - * input: none - * output: time in seconds - * known bugs: bad precision with time() - */ - -#if defined(__unix__) || defined(SVR4) || defined(BSD) - -# include <sys/time.h> -# include <unistd.h> - -double -GetRealTime(void) -{ /* conforming: SVr4, BSD 4.3 */ - struct timeval t; - - if (0 != gettimeofday(&t, NULL)) - assert(0); - return t.tv_sec + 1.e-6 * t.tv_usec; -} - -#elif defined(WIN16) || defined(WIN32) - -# include <stdio.h> -# include <sys/types.h> -# include <sys/timeb.h> - -double -GetRealTime(void) -{ /* conforming: Win 95, Win NT */ - struct timeb t; - - ftime(&t); - return t.time + 1.e-3 * t.millitm; -} - -#else - -double -GetRealTime(void) -{ /* conforming: SVr4, SVID, POSIX, X/OPEN, BSD 4.3 */ /* BUT NOT GUARANTEED BY ANSI */ - time_t t; - - t = time(NULL); - return (double) t; -} - -#endif - - -#if defined(_WIN32) || defined(__CYGWIN__) -# include <io.h> -# include <fcntl.h> -#else -# include <unistd.h> -#endif - -int -lame_set_stream_binary_mode(FILE * const fp) -{ -#if defined __EMX__ - _fsetmode(fp, "b"); -#elif defined __BORLANDC__ - setmode(_fileno(fp), O_BINARY); -#elif defined __CYGWIN__ - setmode(fileno(fp), _O_BINARY); -#elif defined _WIN32 - _setmode(_fileno(fp), _O_BINARY); -#else - (void) fp; /* doing nothing here, silencing the compiler only. */ -#endif - return 0; -} - - -/* End of lametime.c */ diff --git a/platform/win32/msvc/external/lame/frontend/lametime.h b/platform/win32/msvc/external/lame/frontend/lametime.h deleted file mode 100644 index fb4252f6bd5..00000000000 --- a/platform/win32/msvc/external/lame/frontend/lametime.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Lame time routines include file - * - * Copyright (c) 2000 Mark Taylor - * - * 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 LAME_LAMETIME_H -#define LAME_LAMETIME_H - -#include <sys/types.h> -#include "lame.h" - -#if defined(__cplusplus) -extern "C" { -#endif - -extern double GetCPUTime(void); -extern double GetRealTime(void); - -extern int lame_set_stream_binary_mode(FILE * const fp); - -#if defined(__cplusplus) -} -#endif - -#endif /* LAME_LAMETIME_H */ diff --git a/platform/win32/msvc/external/lame/frontend/main.c b/platform/win32/msvc/external/lame/frontend/main.c deleted file mode 100644 index e073064d04f..00000000000 --- a/platform/win32/msvc/external/lame/frontend/main.c +++ /dev/null @@ -1,475 +0,0 @@ -/* - * Command line frontend program - * - * Copyright (c) 1999 Mark Taylor - * 2000 Takehiro TOMINAGA - * 2010-2011 Robert Hegemann - * - * 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. - */ - -/* $Id: main.c,v 1.127 2011/10/02 14:52:20 robert Exp $ */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <stdio.h> - -#ifdef STDC_HEADERS -# include <stdlib.h> -# include <string.h> -#else -# ifndef HAVE_STRCHR -# define strchr index -# define strrchr rindex -# endif -char *strchr(), *strrchr(); -# ifndef HAVE_MEMCPY -# define memcpy(d, s, n) bcopy ((s), (d), (n)) -# define memmove(d, s, n) bcopy ((s), (d), (n)) -# endif -#endif - -#ifdef HAVE_FCNTL_H -# include <fcntl.h> -#endif - -#ifdef __sun__ -/* woraround for SunOS 4.x, it has SEEK_* defined here */ -#include <unistd.h> -#endif - -#ifdef __OS2__ -#include <os2.h> -#define PRTYC_IDLE 1 -#define PRTYC_REGULAR 2 -#define PRTYD_MINIMUM -31 -#define PRTYD_MAXIMUM 31 -#endif - -#if defined(_WIN32) -# include <windows.h> -#endif - - -/* - main.c is example code for how to use libmp3lame.a. To use this library, - you only need the library and lame.h. All other .h files are private - to the library. -*/ -#include "lame.h" - -#include "console.h" -#include "main.h" - -/* PLL 14/04/2000 */ -#if macintosh -#include <console.h> -#endif - -#ifdef WITH_DMALLOC -#include <dmalloc.h> -#endif - - -static int c_main(int argc, char *argv[]); -extern int lame_main(lame_t gf, int argc, char *argv[]); - - -/************************************************************************ -* -* main -* -* PURPOSE: MPEG-1,2 Layer III encoder with GPSYCHO -* psychoacoustic model. -* -************************************************************************/ - - -#if defined( _WIN32 ) && !defined(__MINGW32__) -static void -set_process_affinity() -{ -#if 0 - /* rh 061207 - the following fix seems to be a workaround for a problem in the - parent process calling LAME. It would be better to fix the broken - application => code disabled. - */ -#if defined(_WIN32) - /* set affinity back to all CPUs. Fix for EAC/lame on SMP systems from - "Todd Richmond" <todd.richmond@openwave.com> */ - typedef BOOL(WINAPI * SPAMFunc) (HANDLE, DWORD_PTR); - SPAMFunc func; - SYSTEM_INFO si; - - if ((func = (SPAMFunc) GetProcAddress(GetModuleHandleW(L"KERNEL32.DLL"), - "SetProcessAffinityMask")) != NULL) { - GetSystemInfo(&si); - func(GetCurrentProcess(), si.dwActiveProcessorMask); - } -#endif -#endif -} -#endif - -#if defined(WIN32) - -/** - * Long Filename support for the WIN32 platform - * - */ - -void -dosToLongFileName(char *fn) -{ - const int MSIZE = PATH_MAX + 1 - 4; /* we wanna add ".mp3" later */ - WIN32_FIND_DATAA lpFindFileData; - HANDLE h = FindFirstFileA(fn, &lpFindFileData); - if (h != INVALID_HANDLE_VALUE) { - int a; - char *q, *p; - FindClose(h); - for (a = 0; a < MSIZE; a++) { - if ('\0' == lpFindFileData.cFileName[a]) - break; - } - if (a >= MSIZE || a == 0) - return; - q = strrchr(fn, '\\'); - p = strrchr(fn, '/'); - if (p - q > 0) - q = p; - if (q == NULL) - q = strrchr(fn, ':'); - if (q == NULL) - strncpy(fn, lpFindFileData.cFileName, a); - else { - a += q - fn + 1; - if (a >= MSIZE) - return; - strncpy(++q, lpFindFileData.cFileName, MSIZE - a); - } - } -} - -BOOL -SetPriorityClassMacro(DWORD p) -{ - HANDLE op = GetCurrentProcess(); - return SetPriorityClass(op, p); -} - -void -setProcessPriority(int Priority) -{ - switch (Priority) { - case 0: - case 1: - SetPriorityClassMacro(IDLE_PRIORITY_CLASS); - console_printf("==> Priority set to Low.\n"); - break; - default: - case 2: - SetPriorityClassMacro(NORMAL_PRIORITY_CLASS); - console_printf("==> Priority set to Normal.\n"); - break; - case 3: - case 4: - SetPriorityClassMacro(HIGH_PRIORITY_CLASS); - console_printf("==> Priority set to High.\n"); - break; - } -} -#endif - - -#if defined(__OS2__) -/* OS/2 priority functions */ -static void -setProcessPriority(int Priority) -{ - int rc; - - switch (Priority) { - - case 0: - rc = DosSetPriority(0, /* Scope: only one process */ - PRTYC_IDLE, /* select priority class (idle, regular, etc) */ - 0, /* set delta */ - 0); /* Assume current process */ - console_printf("==> Priority set to 0 (Low priority).\n"); - break; - - case 1: - rc = DosSetPriority(0, /* Scope: only one process */ - PRTYC_IDLE, /* select priority class (idle, regular, etc) */ - PRTYD_MAXIMUM, /* set delta */ - 0); /* Assume current process */ - console_printf("==> Priority set to 1 (Medium priority).\n"); - break; - - case 2: - rc = DosSetPriority(0, /* Scope: only one process */ - PRTYC_REGULAR, /* select priority class (idle, regular, etc) */ - PRTYD_MINIMUM, /* set delta */ - 0); /* Assume current process */ - console_printf("==> Priority set to 2 (Regular priority).\n"); - break; - - case 3: - rc = DosSetPriority(0, /* Scope: only one process */ - PRTYC_REGULAR, /* select priority class (idle, regular, etc) */ - 0, /* set delta */ - 0); /* Assume current process */ - console_printf("==> Priority set to 3 (High priority).\n"); - break; - - case 4: - rc = DosSetPriority(0, /* Scope: only one process */ - PRTYC_REGULAR, /* select priority class (idle, regular, etc) */ - PRTYD_MAXIMUM, /* set delta */ - 0); /* Assume current process */ - console_printf("==> Priority set to 4 (Maximum priority). I hope you enjoy it :)\n"); - break; - - default: - console_printf("==> Invalid priority specified! Assuming idle priority.\n"); - } -} -#endif - - -/*********************************************************************** -* -* Message Output -* -***********************************************************************/ - - -#if defined( _WIN32 ) && !defined(__MINGW32__) -/* Idea for unicode support in LAME, work in progress - * - map UTF-16 to UTF-8 - * - advantage, the rest can be kept unchanged (mostly) - * - make sure, fprintf on console is in correct code page - * + normal text in source code is in ASCII anyway - * + ID3 tags and filenames coming from command line need attention - * - call wfopen with UTF-16 names where needed - * - * why not wchar_t all the way? - * well, that seems to be a big mess and not portable at all - */ -#include <wchar.h> -#include <mbstring.h> - -static wchar_t *mbsToUnicode(const char *mbstr, int code_page) -{ - int n = MultiByteToWideChar(code_page, 0, mbstr, -1, NULL, 0); - wchar_t* wstr = malloc( n*sizeof(wstr[0]) ); - if ( wstr !=0 ) { - n = MultiByteToWideChar(code_page, 0, mbstr, -1, wstr, n); - if ( n==0 ) { - free( wstr ); - wstr = 0; - } - } - return wstr; -} - -static char *unicodeToMbs(const wchar_t *wstr, int code_page) -{ - int n = 1+WideCharToMultiByte(code_page, 0, wstr, -1, 0, 0, 0, 0); - char* mbstr = malloc( n*sizeof(mbstr[0]) ); - if ( mbstr !=0 ) { - n = WideCharToMultiByte(code_page, 0, wstr, -1, mbstr, n, 0, 0); - if( n == 0 ){ - free( mbstr ); - mbstr = 0; - } - } - return mbstr; -} - -char* mbsToMbs(const char* str, int cp_from, int cp_to) -{ - wchar_t* wstr = mbsToUnicode(str, cp_from); - if ( wstr != 0 ) { - char* local8bit = unicodeToMbs(wstr, cp_to); - free( wstr ); - return local8bit; - } - return 0; -} - -enum { cp_utf8, cp_console, cp_actual }; - -wchar_t *utf8ToUnicode(const char *mbstr) -{ - return mbsToUnicode(mbstr, CP_UTF8); -} - -char *unicodeToUtf8(const wchar_t *wstr) -{ - return unicodeToMbs(wstr, CP_UTF8); -} - -char* utf8ToLocal8Bit(const char* str) -{ - return mbsToMbs(str, CP_UTF8, CP_ACP); -} - -char* utf8ToConsole8Bit(const char* str) -{ - return mbsToMbs(str, CP_UTF8, GetConsoleOutputCP()); -} - -char* local8BitToUtf8(const char* str) -{ - return mbsToMbs(str, CP_ACP, CP_UTF8); -} - -char* console8BitToUtf8(const char* str) -{ - return mbsToMbs(str, GetConsoleOutputCP(), CP_UTF8); -} - -char* utf8ToLatin1(char const* str) -{ - return mbsToMbs(str, CP_UTF8, 28591); /* Latin-1 is code page 28591 */ -} - -unsigned short* utf8ToUtf16(char const* mbstr) /* additional Byte-Order-Marker */ -{ - int n = MultiByteToWideChar(CP_UTF8, 0, mbstr, -1, NULL, 0); - wchar_t* wstr = malloc( (n+1)*sizeof(wstr[0]) ); - if ( wstr !=0 ) { - wstr[0] = 0xfeff; /* BOM */ - n = MultiByteToWideChar(CP_UTF8, 0, mbstr, -1, wstr+1, n); - if ( n==0 ) { - free( wstr ); - wstr = 0; - } - } - return wstr; -} - - - -int wmain(int argc, wchar_t* argv[]) -{ - char **utf8_argv; - int i, ret; - - utf8_argv = calloc(argc, sizeof(char*)); - for (i = 0; i < argc; ++i) { - utf8_argv[i] = unicodeToUtf8(argv[i]); - } - ret = c_main(argc, utf8_argv); - for (i = 0; i < argc; ++i) { - free( utf8_argv[i] ); - } - free( utf8_argv ); - return ret; -} - -FILE* lame_fopen(char const* file, char const* mode) -{ - FILE* fh = 0; - wchar_t* wfile = utf8ToUnicode(file); - wchar_t* wmode = utf8ToUnicode(mode); - if (wfile != 0 && wmode != 0) { - fh = _wfopen(wfile, wmode); - } - else { - fh = fopen(file, mode); - } - free(wfile); - free(wmode); - return fh; -} - -char* lame_getenv(char const* var) -{ - char* str = 0; - wchar_t* wvar = utf8ToUnicode(var); - wchar_t* wstr = 0; - if (wvar != 0) { - wstr = _wgetenv(wvar); - str = unicodeToUtf8(wstr); - } - free(wvar); - free(wstr); - return str; -} - -#else - -FILE* lame_fopen(char const* file, char const* mode) -{ - return fopen(file, mode); -} - -char* lame_getenv(char const* var) -{ - char* str = getenv(var); - if (str) { - return strdup(str); - } - return 0; -} - -int main(int argc, char *argv[]) -{ - return c_main(argc, argv); -} - -#endif - - - - -static int -c_main(int argc, char *argv[]) -{ - lame_t gf; - int ret; - -#if macintosh - argc = ccommand(&argv); -#endif -#ifdef __EMX__ - /* This gives wildcard expansion on Non-POSIX shells with OS/2 */ - _wildcard(&argc, &argv); -#endif -#if defined( _WIN32 ) && !defined(__MINGW32__) - set_process_affinity(); -#endif - - frontend_open_console(); - gf = lame_init(); /* initialize libmp3lame */ - if (NULL == gf) { - error_printf("fatal error during initialization\n"); - ret = 1; - } - else { - ret = lame_main(gf, argc, argv); - lame_close(gf); - } - frontend_close_console(); - return ret; -} diff --git a/platform/win32/msvc/external/lame/frontend/main.h b/platform/win32/msvc/external/lame/frontend/main.h deleted file mode 100644 index bff56a15875..00000000000 --- a/platform/win32/msvc/external/lame/frontend/main.h +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Command line frontend program - * - * Copyright (c) 1999 Mark Taylor - * 2000 Takehiro TOMIANGA - * 2010-2011 Robert Hegemann - * - * 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 MAIN_H_INCLUDED -#define MAIN_H_INCLUDED - -#ifdef HAVE_LIMITS_H -# include <limits.h> -#endif - -#include "get_audio.h" - -#if defined(__cplusplus) -extern "C" { -#endif - -#ifndef PATH_MAX -#define PATH_MAX 1024 -#endif - - -/* GLOBAL VARIABLES used by parse.c and main.c. - instantiated in parce.c. ugly, ugly */ - -typedef struct ReaderConfig -{ - sound_file_format input_format; - int swapbytes; /* force byte swapping default=0 */ - int swap_channel; /* 0: no-op, 1: swaps input channels */ - int input_samplerate; -} ReaderConfig; - -typedef struct WriterConfig -{ - int flush_write; -} WriterConfig; - -typedef struct UiConfig -{ - int silent; /* Verbosity */ - int brhist; - int print_clipping_info; /* print info whether waveform clips */ - float update_interval; /* to use Frank's time status display */ -} UiConfig; - -typedef struct DecoderConfig -{ - int mp3_delay; /* to adjust the number of samples truncated during decode */ - int mp3_delay_set; /* user specified the value of the mp3 encoder delay to assume for decoding */ - int disable_wav_header; - mp3data_struct mp3input_data; -} DecoderConfig; - -typedef enum ByteOrder { ByteOrderLittleEndian, ByteOrderBigEndian } ByteOrder; - -typedef struct RawPCMConfig -{ - int in_bitwidth; - int in_signed; - ByteOrder in_endian; -} RawPCMConfig; - -extern ReaderConfig global_reader; -extern WriterConfig global_writer; -extern UiConfig global_ui_config; -extern DecoderConfig global_decoder; -extern RawPCMConfig global_raw_pcm; - - -extern FILE* lame_fopen(char const* file, char const* mode); -extern char* utf8ToConsole8Bit(const char* str); -extern char* utf8ToLocal8Bit(const char* str); -extern unsigned short* utf8ToUtf16(char const* str); -extern char* utf8ToLatin1(char const* str); -#ifdef _WIN32 -extern wchar_t* utf8ToUnicode(char const* str); -#endif - -extern void dosToLongFileName(char* filename); -extern void setProcessPriority(int priority); - -extern int lame_main(lame_t gf, int argc, char** argv); -extern char* lame_getenv(char const* var); - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/platform/win32/msvc/external/lame/frontend/mp3rtp.c b/platform/win32/msvc/external/lame/frontend/mp3rtp.c deleted file mode 100644 index 616305737b6..00000000000 --- a/platform/win32/msvc/external/lame/frontend/mp3rtp.c +++ /dev/null @@ -1,257 +0,0 @@ -/* - * mp3rtp command line frontend program - * - * initially contributed by Felix von Leitner - * - * Copyright (c) 2000 Mark Taylor - * 2010 Robert Hegemann - * - * 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. - */ - -/* $Id: mp3rtp.c,v 1.36 2011/10/02 17:13:22 robert Exp $ */ - -/* Still under work ..., need a client for test, where can I get one? */ - -/* An audio player named Zinf (aka freeamp) can play rtp streams */ - -/* - * experimental translation: - * - * gcc -I..\include -I..\libmp3lame -o mp3rtp mp3rtp.c ../libmp3lame/libmp3lame.a lametime.c get_audio.c ieeefloat.c timestatus.c parse.c rtp.c -lm - * - * wavrec -t 14400 -s 44100 -S /proc/self/fd/1 | ./mp3rtp 10.1.1.42 -V2 -b128 -B256 - my_mp3file.mp3 - */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#ifdef HAVE_STDINT_H -# include <stdint.h> -#endif - -#ifdef STDC_HEADERS -# include <stdlib.h> -# include <string.h> -#endif - -#include <time.h> - -#ifdef HAVE_UNISTD_H -# include <unistd.h> -#endif - -#include "lame.h" -#include "main.h" -#include "parse.h" -#include "lametime.h" -#include "timestatus.h" -#include "get_audio.h" -#include "rtp.h" -#include "console.h" - -#ifdef WITH_DMALLOC -#include <dmalloc.h> -#endif - -/* - * Encode (via LAME) to mp3 with RTP streaming of the output. - * - * Author: Felix von Leitner <leitner@vim.org> - * - * mp3rtp ip[:port[:ttl]] [lame encoding options] infile outfile - * - * examples: - * arecord -b 16 -s 22050 -w | ./mp3rtp 224.17.23.42:5004:2 -b 56 - /dev/null - * arecord -b 16 -s 44100 -w | ./mp3rtp 10.1.1.42 -V2 -b128 -B256 - my_mp3file.mp3 - * - */ - - -static unsigned int -maxvalue(int Buffer[2][1152]) -{ - int max = 0; - int i; - - for (i = 0; i < 1152; i++) { - if (abs(Buffer[0][i]) > max) - max = abs(Buffer[0][i]); - if (abs(Buffer[1][i]) > max) - max = abs(Buffer[1][i]); - } - return max >> 16; -} - -static void -levelmessage(unsigned int maxv, int* maxx, int* tmpx) -{ - char buff[] = "| . | . | . | . | . | . | . | . | . | . | \r"; - int tmp = *tmpx, max = *maxx; - - buff[tmp] = '+'; - tmp = (maxv * 61 + 16384) / (32767 + 16384 / 61); - if (tmp > sizeof(buff) - 2) - tmp = sizeof(buff) - 2; - if (max < tmp) - max = tmp; - buff[max] = 'x'; - buff[tmp] = '#'; - console_printf(buff); - console_flush(); - *maxx = max; - *tmpx = tmp; -} - - -/************************************************************************ -* -* main -* -* PURPOSE: MPEG-1,2 Layer III encoder with GPSYCHO -* psychoacoustic model. -* -************************************************************************/ - -int -lame_main(lame_t gf, int argc, char **argv) -{ - unsigned char mp3buffer[LAME_MAXMP3BUFFER]; - char inPath[PATH_MAX + 1]; - char outPath[PATH_MAX + 1]; - int Buffer[2][1152]; - - int maxx = 0, tmpx = 0; - int ret; - int wavsamples; - int mp3bytes; - FILE *outf; - - char ip[16]; - unsigned int port = 5004; - unsigned int ttl = 2; - char dummy; - - if (argc <= 2) { - console_printf("Encode (via LAME) to mp3 with RTP streaming of the output\n" - "\n" - " mp3rtp ip[:port[:ttl]] [lame encoding options] infile outfile\n" - "\n" - " examples:\n" - " arecord -b 16 -s 22050 -w | ./mp3rtp 224.17.23.42:5004:2 -b 56 - /dev/null\n" - " arecord -b 16 -s 44100 -w | ./mp3rtp 10.1.1.42 -V2 -b128 -B256 - my_mp3file.mp3\n" - "\n"); - return 1; - } - - switch (sscanf(argv[1], "%11[.0-9]:%u:%u%c", ip, &port, &ttl, &dummy)) { - case 1: - case 2: - case 3: - break; - default: - error_printf("Illegal destination selector '%s', must be ip[:port[:ttl]]\n", argv[1]); - return -1; - } - rtp_initialization(); - if (rtp_socket(ip, port, ttl)) { - rtp_deinitialization(); - error_printf("fatal error during initialization\n"); - return 1; - } - - lame_set_errorf(gf, &frontend_errorf); - lame_set_debugf(gf, &frontend_debugf); - lame_set_msgf(gf, &frontend_msgf); - - /* Remove the argumets that are rtp related, and then - * parse the command line arguments, setting various flags in the - * struct pointed to by 'gf'. If you want to parse your own arguments, - * or call libmp3lame from a program which uses a GUI to set arguments, - * skip this call and set the values of interest in the gf struct. - * (see lame.h for documentation about these parameters) - */ - - argv[1] = argv[0]; - parse_args(gf, argc - 1, argv + 1, inPath, outPath, NULL, NULL); - - /* open the output file. Filename parsed into gf.inPath */ - if (0 == strcmp(outPath, "-")) { - lame_set_stream_binary_mode(outf = stdout); - } - else { - if ((outf = lame_fopen(outPath, "wb+")) == NULL) { - rtp_deinitialization(); - error_printf("Could not create \"%s\".\n", outPath); - return 1; - } - } - - - /* open the wav/aiff/raw pcm or mp3 input file. This call will - * open the file with name gf.inFile, try to parse the headers and - * set gf.samplerate, gf.num_channels, gf.num_samples. - * if you want to do your own file input, skip this call and set - * these values yourself. - */ - if (init_infile(gf, inPath) < 0) { - error_printf("Can't init infile '%s'\n", inPath); - return 1; - } - - - /* Now that all the options are set, lame needs to analyze them and - * set some more options - */ - ret = lame_init_params(gf); - if (ret < 0) { - if (ret == -1) - display_bitrates(stderr); - rtp_deinitialization(); - error_printf("fatal error during initialization\n"); - return -1; - } - - lame_print_config(gf); /* print useful information about options being used */ - - if (global_ui_config.update_interval < 0.) - global_ui_config.update_interval = 2.; - - /* encode until we hit EOF */ - while ((wavsamples = get_audio(gf, Buffer)) > 0) { /* read in 'wavsamples' samples */ - levelmessage(maxvalue(Buffer), &maxx, &tmpx); - mp3bytes = lame_encode_buffer_int(gf, /* encode the frame */ - Buffer[0], Buffer[1], wavsamples, - mp3buffer, sizeof(mp3buffer)); - rtp_output(mp3buffer, mp3bytes); /* write MP3 output to RTP port */ - fwrite(mp3buffer, 1, mp3bytes, outf); /* write the MP3 output to file */ - } - - mp3bytes = lame_encode_flush(gf, /* may return one or more mp3 frame */ - mp3buffer, sizeof(mp3buffer)); - rtp_output(mp3buffer, mp3bytes); /* write MP3 output to RTP port */ - fwrite(mp3buffer, 1, mp3bytes, outf); /* write the MP3 output to file */ - - lame_mp3_tags_fid(gf, outf); /* add VBR tags to mp3 file */ - - rtp_deinitialization(); - fclose(outf); - close_infile(); /* close the sound input file */ - return 0; -} - -/* end of mp3rtp.c */ diff --git a/platform/win32/msvc/external/lame/frontend/mp3x.c b/platform/win32/msvc/external/lame/frontend/mp3x.c deleted file mode 100644 index e8472a9d33c..00000000000 --- a/platform/win32/msvc/external/lame/frontend/mp3x.c +++ /dev/null @@ -1,65 +0,0 @@ -/* $Id: mp3x.c,v 1.28 2010/04/08 11:07:50 robert Exp $ */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdio.h> - -#include "lame.h" -#include "machine.h" -#include "encoder.h" -#include "lame-analysis.h" -#include <gtk/gtk.h> -#include "parse.h" -#include "get_audio.h" -#include "gtkanal.h" -#include "lametime.h" - -#include "main.h" -#include "console.h" - - -/************************************************************************ -* -* main -* -* PURPOSE: MPEG-1,2 Layer III encoder with GPSYCHO -* psychoacoustic model. -* -************************************************************************/ -int -lame_main(lame_t gf, int argc, char **argv) -{ - unsigned char mp3buffer[LAME_MAXMP3BUFFER]; - char outPath[PATH_MAX + 1]; - char inPath[PATH_MAX + 1]; - int ret; - - lame_set_errorf(gf, &frontend_errorf); - lame_set_debugf(gf, &frontend_debugf); - lame_set_msgf(gf, &frontend_msgf); - if (argc <= 1) { - usage(stderr, argv[0]); /* no command-line args */ - return -1; - } - ret = parse_args(gf, argc, argv, inPath, outPath, NULL, NULL); - if (ret < 0) { - return ret == -2 ? 0 : 1; - } - (void) lame_set_analysis(gf, 1); - - if (init_infile(gf, inPath) < 0) { - error_printf("Can't init infile '%s'\n", inPath); - return 1; - } - lame_init_params(gf); - lame_print_config(gf); - - gtk_init(&argc, &argv); - gtkcontrol(gf, inPath); - - lame_encode_flush(gf, mp3buffer, sizeof(mp3buffer)); - close_infile(); - return 0; -} diff --git a/platform/win32/msvc/external/lame/frontend/parse.c b/platform/win32/msvc/external/lame/frontend/parse.c deleted file mode 100644 index d135c9a73cd..00000000000 --- a/platform/win32/msvc/external/lame/frontend/parse.c +++ /dev/null @@ -1,2400 +0,0 @@ -/* - * Command line parsing related functions - * - * Copyright (c) 1999 Mark Taylor - * 2000-2012 Robert Hegemann - * - * 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. - */ - -/* $Id: parse.c,v 1.292.2.2 2012/02/07 13:40:37 robert Exp $ */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <ctype.h> - -#ifdef STDC_HEADERS -# include <stdio.h> -# include <stdlib.h> -# include <string.h> -#else -# ifndef HAVE_STRCHR -# define strchr index -# define strrchr rindex -# endif -char *strchr(), *strrchr(); -# ifndef HAVE_MEMCPY -# define memcpy(d, s, n) bcopy ((s), (d), (n)) -# define memmove(d, s, n) bcopy ((s), (d), (n)) -# endif -#endif - - -#ifdef HAVE_LIMITS_H -# include <limits.h> -#endif - -#include "lame.h" - -#include "parse.h" -#include "main.h" -#include "get_audio.h" -#include "version.h" -#include "console.h" - -#undef dimension_of -#define dimension_of(array) (sizeof(array)/sizeof(array[0])) - -#ifdef WITH_DMALLOC -#include <dmalloc.h> -#endif - - -#ifdef HAVE_ICONV -#include <iconv.h> -#include <errno.h> -#endif - -#if defined _ALLOW_INTERNAL_OPTIONS -#define INTERNAL_OPTS 1 -#else -#define INTERNAL_OPTS 0 -#endif - -#if (INTERNAL_OPTS!=0) -#include "set_get.h" -#define DEV_HELP(a) a -#else -#define DEV_HELP(a) -#endif - -static int const lame_alpha_version_enabled = LAME_ALPHA_VERSION; -static int const internal_opts_enabled = INTERNAL_OPTS; - -/* GLOBAL VARIABLES. set by parse_args() */ -/* we need to clean this up */ - -ReaderConfig global_reader = { sf_unknown, 0, 0, 0 }; -WriterConfig global_writer = { 0 }; - -UiConfig global_ui_config = {0,0,0,0}; - -DecoderConfig global_decoder; - -RawPCMConfig global_raw_pcm = -{ /* in_bitwidth */ 16 -, /* in_signed */ -1 -, /* in_endian */ ByteOrderLittleEndian -}; - - - -/* possible text encodings */ -typedef enum TextEncoding -{ TENC_RAW /* bytes will be stored as-is into ID3 tags, which are Latin1 per definition */ -, TENC_LATIN1 /* text will be converted from local encoding to Latin1, as ID3 needs it */ -, TENC_UTF16 /* text will be converted from local encoding to Unicode, as ID3v2 wants it */ -} TextEncoding; - -#ifdef HAVE_ICONV -#define ID3TAGS_EXTENDED -/* search for Zero termination in multi-byte strings */ -static size_t -strlenMultiByte(char const* str, size_t w) -{ - size_t n = 0; - if (str != 0) { - size_t i, x = 0; - for (n = 0; ; ++n) { - x = 0; - for (i = 0; i < w; ++i) { - x += *str++ == 0 ? 1 : 0; - } - if (x == w) { - break; - } - } - } - return n; -} - - -static size_t -currCharCodeSize(void) -{ - size_t n = 1; - char dst[32]; - char* src = "A"; - char* env_lang = getenv("LANG"); - char* xxx_code = env_lang == NULL ? NULL : strrchr(env_lang, '.'); - char* cur_code = xxx_code == NULL ? "" : xxx_code+1; - iconv_t xiconv = iconv_open(cur_code, "ISO_8859-1"); - if (xiconv != (iconv_t)-1) { - for (n = 0; n < 32; ++n) { - char* i_ptr = src; - char* o_ptr = dst; - size_t srcln = 1; - size_t avail = n; - size_t rc = iconv(xiconv, &i_ptr, &srcln, &o_ptr, &avail); - if (rc != (size_t)-1) { - break; - } - } - iconv_close(xiconv); - } - return n; -} - -#if 0 -static -char* fromLatin1( char* src ) -{ - char* dst = 0; - if (src != 0) { - size_t const l = strlen(src); - size_t const n = l*4; - dst = calloc(n+4, 4); - if (dst != 0) { - char* env_lang = getenv("LANG"); - char* xxx_code = env_lang == NULL ? NULL : strrchr(env_lang, '.'); - char* cur_code = xxx_code == NULL ? "" : xxx_code+1; - iconv_t xiconv = iconv_open(cur_code, "ISO_8859-1"); - if (xiconv != (iconv_t)-1) { - char* i_ptr = src; - char* o_ptr = dst; - size_t srcln = l; - size_t avail = n; - iconv(xiconv, &i_ptr, &srcln, &o_ptr, &avail); - iconv_close(xiconv); - } - } - } - return dst; -} - -static -char* fromUtf16( char* src ) -{ - char* dst = 0; - if (src != 0) { - size_t const l = strlenMultiByte(src, 2); - size_t const n = l*4; - dst = calloc(n+4, 4); - if (dst != 0) { - char* env_lang = getenv("LANG"); - char* xxx_code = env_lang == NULL ? NULL : strrchr(env_lang, '.'); - char* cur_code = xxx_code == NULL ? "" : xxx_code+1; - iconv_t xiconv = iconv_open(cur_code, "UTF-16LE"); - if (xiconv != (iconv_t)-1) { - char* i_ptr = (char*)src; - char* o_ptr = dst; - size_t srcln = l*2; - size_t avail = n; - iconv(xiconv, &i_ptr, &srcln, &o_ptr, &avail); - iconv_close(xiconv); - } - } - } - return dst; -} -#endif - -static -char* toLatin1( char* src ) -{ - size_t w = currCharCodeSize(); - char* dst = 0; - if (src != 0) { - size_t const l = strlenMultiByte(src, w); - size_t const n = l*4; - dst = calloc(n+4, 4); - if (dst != 0) { - char* env_lang = getenv("LANG"); - char* xxx_code = env_lang == NULL ? NULL : strrchr(env_lang, '.'); - char* cur_code = xxx_code == NULL ? "" : xxx_code+1; - iconv_t xiconv = iconv_open("ISO_8859-1//TRANSLIT", cur_code); - if (xiconv != (iconv_t)-1) { - char* i_ptr = (char*)src; - char* o_ptr = dst; - size_t srcln = l*w; - size_t avail = n; - iconv(xiconv, &i_ptr, &srcln, &o_ptr, &avail); - iconv_close(xiconv); - } - } - } - return dst; -} - - -static -char* toUtf16( char* src ) -{ - size_t w = currCharCodeSize(); - char* dst = 0; - if (src != 0) { - size_t const l = strlenMultiByte(src, w); - size_t const n = (l+1)*4; - dst = calloc(n+4, 4); - if (dst != 0) { - char* env_lang = getenv("LANG"); - char* xxx_code = env_lang == NULL ? NULL : strrchr(env_lang, '.'); - char* cur_code = xxx_code == NULL ? "" : xxx_code+1; - iconv_t xiconv = iconv_open("UTF-16LE//TRANSLIT", cur_code); - dst[0] = 0xff; - dst[1] = 0xfe; - if (xiconv != (iconv_t)-1) { - char* i_ptr = (char*)src; - char* o_ptr = &dst[2]; - size_t srcln = l*w; - size_t avail = n; - iconv(xiconv, &i_ptr, &srcln, &o_ptr, &avail); - iconv_close(xiconv); - } - } - } - return dst; -} -#endif - -#if defined( _WIN32 ) && !defined(__MINGW32__) -#define ID3TAGS_EXTENDED - -char* toLatin1(char const* s) -{ - return utf8ToLatin1(s); -} - -unsigned short* toUtf16(char const* s) -{ - return utf8ToUtf16(s); -} -#endif - - -static int -set_id3v2tag(lame_global_flags* gfp, int type, unsigned short const* str) -{ - switch (type) - { - case 'a': return id3tag_set_textinfo_utf16(gfp, "TPE1", str); - case 't': return id3tag_set_textinfo_utf16(gfp, "TIT2", str); - case 'l': return id3tag_set_textinfo_utf16(gfp, "TALB", str); - case 'g': return id3tag_set_textinfo_utf16(gfp, "TCON", str); - case 'c': return id3tag_set_comment_utf16(gfp, 0, 0, str); - case 'n': return id3tag_set_textinfo_utf16(gfp, "TRCK", str); - case 'y': return id3tag_set_textinfo_utf16(gfp, "TYER", str); - case 'v': return id3tag_set_fieldvalue_utf16(gfp, str); - } - return 0; -} - - -static int -set_id3tag(lame_global_flags* gfp, int type, char const* str) -{ - switch (type) - { - case 'a': return id3tag_set_artist(gfp, str), 0; - case 't': return id3tag_set_title(gfp, str), 0; - case 'l': return id3tag_set_album(gfp, str), 0; - case 'g': return id3tag_set_genre(gfp, str); - case 'c': return id3tag_set_comment(gfp, str), 0; - case 'n': return id3tag_set_track(gfp, str); - case 'y': return id3tag_set_year(gfp, str), 0; - case 'v': return id3tag_set_fieldvalue(gfp, str); - } - return 0; -} - -static int -id3_tag(lame_global_flags* gfp, int type, TextEncoding enc, char* str) -{ - void* x = 0; - int result; - if (enc == TENC_UTF16 && type != 'v' ) { - id3_tag(gfp, type, TENC_LATIN1, str); /* for id3v1 */ - } - switch (enc) - { - default: -#ifdef ID3TAGS_EXTENDED - case TENC_LATIN1: x = toLatin1(str); break; - case TENC_UTF16: x = toUtf16(str); break; -#else - case TENC_RAW: x = strdup(str); break; -#endif - } - switch (enc) - { - default: -#ifdef ID3TAGS_EXTENDED - case TENC_LATIN1: result = set_id3tag(gfp, type, x); break; - case TENC_UTF16: result = set_id3v2tag(gfp, type, x); break; -#else - case TENC_RAW: result = set_id3tag(gfp, type, x); break; -#endif - } - free(x); - return result; -} - - - - -/************************************************************************ -* -* license -* -* PURPOSE: Writes version and license to the file specified by fp -* -************************************************************************/ - -static int -lame_version_print(FILE * const fp) -{ - const char *b = get_lame_os_bitness(); - const char *v = get_lame_version(); - const char *u = get_lame_url(); - const size_t lenb = strlen(b); - const size_t lenv = strlen(v); - const size_t lenu = strlen(u); - const size_t lw = 80; /* line width of terminal in characters */ - const size_t sw = 16; /* static width of text */ - - if (lw >= lenb + lenv + lenu + sw || lw < lenu + 2) - /* text fits in 80 chars per line, or line even too small for url */ - if (lenb > 0) - fprintf(fp, "LAME %s version %s (%s)\n\n", b, v, u); - else - fprintf(fp, "LAME version %s (%s)\n\n", v, u); - else { - int const n_white_spaces = ((lenu+2) > lw ? 0 : lw-2-lenu); - /* text too long, wrap url into next line, right aligned */ - if (lenb > 0) - fprintf(fp, "LAME %s version %s\n%*s(%s)\n\n", b, v, n_white_spaces, "", u); - else - fprintf(fp, "LAME version %s\n%*s(%s)\n\n", v, n_white_spaces, "", u); - } - if (lame_alpha_version_enabled) - fprintf(fp, "warning: alpha versions should be used for testing only\n\n"); - - - return 0; -} - -static int -print_license(FILE * const fp) -{ /* print version & license */ - lame_version_print(fp); - fprintf(fp, - "Copyright (c) 1999-2011 by The LAME Project\n" - "Copyright (c) 1999,2000,2001 by Mark Taylor\n" - "Copyright (c) 1998 by Michael Cheng\n" - "Copyright (c) 1995,1996,1997 by Michael Hipp: mpglib\n" "\n"); - fprintf(fp, - "This library is free software; you can redistribute it and/or\n" - "modify it under the terms of the GNU Library General Public\n" - "License as published by the Free Software Foundation; either\n" - "version 2 of the License, or (at your option) any later version.\n" - "\n" - "This library is distributed in the hope that it will be useful,\n" - "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" - "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" - "Library General Public License for more details.\n" - "\n" - "You should have received a copy of the GNU Library General Public\n" - "License along with this program. If not, see\n" - "<http://www.gnu.org/licenses/>.\n"); - return 0; -} - - -/************************************************************************ -* -* usage -* -* PURPOSE: Writes command line syntax to the file specified by fp -* -************************************************************************/ - -int -usage(FILE * const fp, const char *ProgramName) -{ /* print general syntax */ - lame_version_print(fp); - fprintf(fp, - "usage: %s [options] <infile> [outfile]\n" - "\n" - " <infile> and/or <outfile> can be \"-\", which means stdin/stdout.\n" - "\n" - "Try:\n" - " \"%s --help\" for general usage information\n" - " or:\n" - " \"%s --preset help\" for information on suggested predefined settings\n" - " or:\n" - " \"%s --longhelp\"\n" - " or \"%s -?\" for a complete options list\n\n", - ProgramName, ProgramName, ProgramName, ProgramName, ProgramName); - return 0; -} - - -/************************************************************************ -* -* usage -* -* PURPOSE: Writes command line syntax to the file specified by fp -* but only the most important ones, to fit on a vt100 terminal -* -************************************************************************/ - -int -short_help(const lame_global_flags * gfp, FILE * const fp, const char *ProgramName) -{ /* print short syntax help */ - lame_version_print(fp); - fprintf(fp, - "usage: %s [options] <infile> [outfile]\n" - "\n" - " <infile> and/or <outfile> can be \"-\", which means stdin/stdout.\n" - "\n" "RECOMMENDED:\n" " lame -V2 input.wav output.mp3\n" "\n", ProgramName); - fprintf(fp, - "OPTIONS:\n" - " -b bitrate set the bitrate, default 128 kbps\n" - " -h higher quality, but a little slower. Recommended.\n" - " -f fast mode (lower quality)\n" - " -V n quality setting for VBR. default n=%i\n" - " 0=high quality,bigger files. 9=smaller files\n", - lame_get_VBR_q(gfp)); - fprintf(fp, - " --preset type type must be \"medium\", \"standard\", \"extreme\", \"insane\",\n" - " or a value for an average desired bitrate and depending\n" - " on the value specified, appropriate quality settings will\n" - " be used.\n" - " \"--preset help\" gives more info on these\n" "\n"); - fprintf(fp, -#if defined(WIN32) - " --priority type sets the process priority\n" - " 0,1 = Low priority\n" - " 2 = normal priority\n" - " 3,4 = High priority\n" "\n" -#endif -#if defined(__OS2__) - " --priority type sets the process priority\n" - " 0 = Low priority\n" - " 1 = Medium priority\n" - " 2 = Regular priority\n" - " 3 = High priority\n" - " 4 = Maximum priority\n" "\n" -#endif - " --help id3 ID3 tagging related options\n" "\n" - DEV_HELP( - " --help dev developer options\n" "\n" - ) - " --longhelp full list of options\n" "\n" - " --license print License information\n\n" - ); - - return 0; -} - -/************************************************************************ -* -* usage -* -* PURPOSE: Writes command line syntax to the file specified by fp -* -************************************************************************/ - -static void -wait_for(FILE * const fp, int lessmode) -{ - if (lessmode) { - fflush(fp); - getchar(); - } - else { - fprintf(fp, "\n"); - } - fprintf(fp, "\n"); -} - -static void -help_id3tag(FILE * const fp) -{ - fprintf(fp, - " ID3 tag options:\n" - " --tt <title> audio/song title (max 30 chars for version 1 tag)\n" - " --ta <artist> audio/song artist (max 30 chars for version 1 tag)\n" - " --tl <album> audio/song album (max 30 chars for version 1 tag)\n" - " --ty <year> audio/song year of issue (1 to 9999)\n" - " --tc <comment> user-defined text (max 30 chars for v1 tag, 28 for v1.1)\n" - " --tn <track[/total]> audio/song track number and (optionally) the total\n" - " number of tracks on the original recording. (track\n" - " and total each 1 to 255. just the track number\n" - " creates v1.1 tag, providing a total forces v2.0).\n" - " --tg <genre> audio/song genre (name or number in list)\n" - " --ti <file> audio/song albumArt (jpeg/png/gif file, v2.3 tag)\n" - " --tv <id=value> user-defined frame specified by id and value (v2.3 tag)\n" - ); - fprintf(fp, - " --add-id3v2 force addition of version 2 tag\n" - " --id3v1-only add only a version 1 tag\n" - " --id3v2-only add only a version 2 tag\n" -#ifdef ID3TAGS_EXTENDED - " --id3v2-utf16 add following options in unicode text encoding\n" - " --id3v2-latin1 add following options in latin-1 text encoding\n" -#endif - " --space-id3v1 pad version 1 tag with spaces instead of nulls\n" - " --pad-id3v2 same as '--pad-id3v2-size 128'\n" - " --pad-id3v2-size <value> adds version 2 tag, pad with extra <value> bytes\n" - " --genre-list print alphabetically sorted ID3 genre list and exit\n" - " --ignore-tag-errors ignore errors in values passed for tags\n" "\n" - ); - fprintf(fp, - " Note: A version 2 tag will NOT be added unless one of the input fields\n" - " won't fit in a version 1 tag (e.g. the title string is longer than 30\n" - " characters), or the '--add-id3v2' or '--id3v2-only' options are used,\n" - " or output is redirected to stdout.\n" - ); -} - -static void -help_developer_switches(FILE * const fp) -{ - if ( !internal_opts_enabled ) { - fprintf(fp, - " Note: Almost all of the following switches aren't available in this build!\n\n" - ); - } - fprintf(fp, - " ATH related:\n" - " --noath turns ATH down to a flat noise floor\n" - " --athshort ignore GPSYCHO for short blocks, use ATH only\n" - " --athonly ignore GPSYCHO completely, use ATH only\n" - " --athtype n selects between different ATH types [0-4]\n" - " --athlower x lowers ATH by x dB\n" - ); - fprintf(fp, - " --athaa-type n ATH auto adjust: 0 'no' else 'loudness based'\n" -/** OBSOLETE " --athaa-loudapprox n n=1 total energy or n=2 equal loudness curve\n"*/ - " --athaa-sensitivity x activation offset in -/+ dB for ATH auto-adjustment\n" - "\n"); - fprintf(fp, - " PSY related:\n" - " --short use short blocks when appropriate\n" - " --noshort do not use short blocks\n" - " --allshort use only short blocks\n" - ); - fprintf(fp, - "(1) --temporal-masking x x=0 disables, x=1 enables temporal masking effect\n" - " --nssafejoint M/S switching criterion\n" - " --nsmsfix <arg> M/S switching tuning [effective 0-3.5]\n" - "(2) --interch x adjust inter-channel masking ratio\n" - " --ns-bass x adjust masking for sfbs 0 - 6 (long) 0 - 5 (short)\n" - " --ns-alto x adjust masking for sfbs 7 - 13 (long) 6 - 10 (short)\n" - " --ns-treble x adjust masking for sfbs 14 - 21 (long) 11 - 12 (short)\n" - ); - fprintf(fp, - " --ns-sfb21 x change ns-treble by x dB for sfb21\n" - " --shortthreshold x,y short block switching threshold,\n" - " x for L/R/M channel, y for S channel\n" - " -Z [n] always do calculate short block maskings\n" - " Noise Shaping related:\n" - "(1) --substep n use pseudo substep noise shaping method types 0-2\n" - "(1) -X n[,m] selects between different noise measurements\n" - " n for long block, m for short. if m is omitted, m = n\n" - " 1: CBR, ABR and VBR-old encoding modes only\n" - " 2: ignored\n" - ); -} - -int -long_help(const lame_global_flags * gfp, FILE * const fp, const char *ProgramName, int lessmode) -{ /* print long syntax help */ - lame_version_print(fp); - fprintf(fp, - "usage: %s [options] <infile> [outfile]\n" - "\n" - " <infile> and/or <outfile> can be \"-\", which means stdin/stdout.\n" - "\n" "RECOMMENDED:\n" " lame -V2 input.wav output.mp3\n" "\n", ProgramName); - fprintf(fp, - "OPTIONS:\n" - " Input options:\n" - " --scale <arg> scale input (multiply PCM data) by <arg>\n" - " --scale-l <arg> scale channel 0 (left) input (multiply PCM data) by <arg>\n" - " --scale-r <arg> scale channel 1 (right) input (multiply PCM data) by <arg>\n" -#if (defined HAVE_MPGLIB || defined AMIGA_MPEGA) - " --mp1input input file is a MPEG Layer I file\n" - " --mp2input input file is a MPEG Layer II file\n" - " --mp3input input file is a MPEG Layer III file\n" -#endif - " --nogap <file1> <file2> <...>\n" - " gapless encoding for a set of contiguous files\n" - " --nogapout <dir>\n" - " output dir for gapless encoding (must precede --nogap)\n" - " --nogaptags allow the use of VBR tags in gapless encoding\n" - ); - fprintf(fp, - "\n" - " Input options for RAW PCM:\n" - " -r input is raw pcm\n" - " -x force byte-swapping of input\n" - " -s sfreq sampling frequency of input file (kHz) - default 44.1 kHz\n" - " --bitwidth w input bit width is w (default 16)\n" - " --signed input is signed (default)\n" - " --unsigned input is unsigned\n" - " --little-endian input is little-endian (default)\n" - " --big-endian input is big-endian\n" - ); - - wait_for(fp, lessmode); - fprintf(fp, - " Operational options:\n" - " -a downmix from stereo to mono file for mono encoding\n" - " -m <mode> (j)oint, (s)imple, (f)orce, (d)ual-mono, (m)ono (l)eft (r)ight\n" - " default is (j) or (s) depending on bitrate\n" - " joint = joins the best possible of MS and LR stereo\n" - " simple = force LR stereo on all frames\n" - " force = force MS stereo on all frames.\n" - " --preset type type must be \"medium\", \"standard\", \"extreme\", \"insane\",\n" - " or a value for an average desired bitrate and depending\n" - " on the value specified, appropriate quality settings will\n" - " be used.\n" - " \"--preset help\" gives more info on these\n" - " --comp <arg> choose bitrate to achieve a compression ratio of <arg>\n"); - fprintf(fp, " --replaygain-fast compute RG fast but slightly inaccurately (default)\n" -#ifdef DECODE_ON_THE_FLY - " --replaygain-accurate compute RG more accurately and find the peak sample\n" -#endif - " --noreplaygain disable ReplayGain analysis\n" -#ifdef DECODE_ON_THE_FLY - " --clipdetect enable --replaygain-accurate and print a message whether\n" - " clipping occurs and how far the waveform is from full scale\n" -#endif - ); - fprintf(fp, - " --flush flush output stream as soon as possible\n" - " --freeformat produce a free format bitstream\n" - " --decode input=mp3 file, output=wav\n" - " --swap-channel swap L/R channels\n" - " -t disable writing wav header when using --decode\n"); - - wait_for(fp, lessmode); - fprintf(fp, - " Verbosity:\n" - " --disptime <arg>print progress report every arg seconds\n" - " -S don't print progress report, VBR histograms\n" - " --nohist disable VBR histogram display\n" - " --quiet don't print anything on screen\n" - " --silent don't print anything on screen, but fatal errors\n" - " --brief print more useful information\n" - " --verbose print a lot of useful information\n" "\n"); - fprintf(fp, - " Noise shaping & psycho acoustic algorithms:\n" - " -q <arg> <arg> = 0...9. Default -q 5 \n" - " -q 0: Highest quality, very slow \n" - " -q 9: Poor quality, but fast \n" - " -h Same as -q 2. Recommended.\n" - " -f Same as -q 7. Fast, ok quality\n"); - - wait_for(fp, lessmode); - fprintf(fp, - " CBR (constant bitrate, the default) options:\n" - " -b <bitrate> set the bitrate in kbps, default 128 kbps\n" - " --cbr enforce use of constant bitrate\n" - "\n" - " ABR options:\n" - " --abr <bitrate> specify average bitrate desired (instead of quality)\n" "\n"); - fprintf(fp, - " VBR options:\n" - " -V n quality setting for VBR. default n=%i\n" - " 0=high quality,bigger files. 9=smaller files\n" - " -v the same as -V 4\n" - " --vbr-old use old variable bitrate (VBR) routine\n" - " --vbr-new use new variable bitrate (VBR) routine (default)\n" - " -Y lets LAME ignore noise in sfb21, like in CBR\n" - , - lame_get_VBR_q(gfp)); - fprintf(fp, - " -b <bitrate> specify minimum allowed bitrate, default 32 kbps\n" - " -B <bitrate> specify maximum allowed bitrate, default 320 kbps\n" - " -F strictly enforce the -b option, for use with players that\n" - " do not support low bitrate mp3\n" - " -t disable writing LAME Tag\n" - " -T enable and force writing LAME Tag\n"); - - wait_for(fp, lessmode); - DEV_HELP( - help_developer_switches(fp); - wait_for(fp, lessmode); - ) - - fprintf(fp, - " MP3 header/stream options:\n" - " -e <emp> de-emphasis n/5/c (obsolete)\n" - " -c mark as copyright\n" - " -o mark as non-original\n" - " -p error protection. adds 16 bit checksum to every frame\n" - " (the checksum is computed correctly)\n" - " --nores disable the bit reservoir\n" - " --strictly-enforce-ISO comply as much as possible to ISO MPEG spec\n"); - fprintf(fp, - " --buffer-constraint <constraint> available values for constraint:\n" - " default, strict, maximum\n" - "\n" - ); - fprintf(fp, - " Filter options:\n" - " --lowpass <freq> frequency(kHz), lowpass filter cutoff above freq\n" - " --lowpass-width <freq> frequency(kHz) - default 15%% of lowpass freq\n" - " --highpass <freq> frequency(kHz), highpass filter cutoff below freq\n" - " --highpass-width <freq> frequency(kHz) - default 15%% of highpass freq\n"); - fprintf(fp, - " --resample <sfreq> sampling frequency of output file(kHz)- default=automatic\n"); - - wait_for(fp, lessmode); - help_id3tag(fp); - fprintf(fp, -#if defined(WIN32) - "\n\nMS-Windows-specific options:\n" - " --priority <type> sets the process priority:\n" - " 0,1 = Low priority (IDLE_PRIORITY_CLASS)\n" - " 2 = normal priority (NORMAL_PRIORITY_CLASS, default)\n" - " 3,4 = High priority (HIGH_PRIORITY_CLASS))\n" - " Note: Calling '--priority' without a parameter will select priority 0.\n" -#endif -#if defined(__OS2__) - "\n\nOS/2-specific options:\n" - " --priority <type> sets the process priority:\n" - " 0 = Low priority (IDLE, delta = 0)\n" - " 1 = Medium priority (IDLE, delta = +31)\n" - " 2 = Regular priority (REGULAR, delta = -31)\n" - " 3 = High priority (REGULAR, delta = 0)\n" - " 4 = Maximum priority (REGULAR, delta = +31)\n" - " Note: Calling '--priority' without a parameter will select priority 0.\n" -#endif - "\nMisc:\n --license print License information\n\n" - ); - -#if defined(HAVE_NASM) - wait_for(fp, lessmode); - fprintf(fp, - " Platform specific:\n" - " --noasm <instructions> disable assembly optimizations for mmx/3dnow/sse\n"); - wait_for(fp, lessmode); -#endif - - display_bitrates(fp); - - return 0; -} - -static void -display_bitrate(FILE * const fp, const char *const version, const int d, const int indx) -{ - int i; - int nBitrates = 14; - if (d == 4) - nBitrates = 8; - - - fprintf(fp, - "\nMPEG-%-3s layer III sample frequencies (kHz): %2d %2d %g\n" - "bitrates (kbps):", version, 32 / d, 48 / d, 44.1 / d); - for (i = 1; i <= nBitrates; i++) - fprintf(fp, " %2i", lame_get_bitrate(indx, i)); - fprintf(fp, "\n"); -} - -int -display_bitrates(FILE * const fp) -{ - display_bitrate(fp, "1", 1, 1); - display_bitrate(fp, "2", 2, 0); - display_bitrate(fp, "2.5", 4, 0); - fprintf(fp, "\n"); - fflush(fp); - return 0; -} - - -/* note: for presets it would be better to externalize them in a file. - suggestion: lame --preset <file-name> ... - or: lame --preset my-setting ... and my-setting is defined in lame.ini - */ - -/* -Note from GB on 08/25/2002: -I am merging --presets and --alt-presets. Old presets are now aliases for -corresponding abr values from old alt-presets. This way we now have a -unified preset system, and I hope than more people will use the new tuned -presets instead of the old unmaintained ones. -*/ - - - -/************************************************************************ -* -* usage -* -* PURPOSE: Writes presetting info to #stdout# -* -************************************************************************/ - - -static void -presets_longinfo_dm(FILE * msgfp) -{ - fprintf(msgfp, - "\n" - "The --preset switches are aliases over LAME settings.\n" - "\n" "\n"); - fprintf(msgfp, - "To activate these presets:\n" - "\n" " For VBR modes (generally highest quality):\n" "\n"); - fprintf(msgfp, - " \"--preset medium\" This preset should provide near transparency\n" - " to most people on most music.\n" - "\n" - " \"--preset standard\" This preset should generally be transparent\n" - " to most people on most music and is already\n" - " quite high in quality.\n" "\n"); - fprintf(msgfp, - " \"--preset extreme\" If you have extremely good hearing and similar\n" - " equipment, this preset will generally provide\n" - " slightly higher quality than the \"standard\"\n" - " mode.\n" "\n"); - fprintf(msgfp, - " For CBR 320kbps (highest quality possible from the --preset switches):\n" - "\n" - " \"--preset insane\" This preset will usually be overkill for most\n" - " people and most situations, but if you must\n" - " have the absolute highest quality with no\n" - " regard to filesize, this is the way to go.\n" "\n"); - fprintf(msgfp, - " For ABR modes (high quality per given bitrate but not as high as VBR):\n" - "\n" - " \"--preset <kbps>\" Using this preset will usually give you good\n" - " quality at a specified bitrate. Depending on the\n" - " bitrate entered, this preset will determine the\n"); - fprintf(msgfp, - " optimal settings for that particular situation.\n" - " While this approach works, it is not nearly as\n" - " flexible as VBR, and usually will not attain the\n" - " same level of quality as VBR at higher bitrates.\n" "\n"); - fprintf(msgfp, - "The following options are also available for the corresponding profiles:\n" - "\n" - " standard\n" - " extreme\n" - " insane\n" - " <cbr> (ABR Mode) - The ABR Mode is implied. To use it,\n" - " simply specify a bitrate. For example:\n" - " \"--preset 185\" activates this\n" - " preset and uses 185 as an average kbps.\n" "\n"); - fprintf(msgfp, - " \"cbr\" - If you use the ABR mode (read above) with a significant\n" - " bitrate such as 80, 96, 112, 128, 160, 192, 224, 256, 320,\n" - " you can use the \"cbr\" option to force CBR mode encoding\n" - " instead of the standard abr mode. ABR does provide higher\n" - " quality but CBR may be useful in situations such as when\n" - " streaming an mp3 over the internet may be important.\n" "\n"); - fprintf(msgfp, - " For example:\n" - "\n" - " \"--preset standard <input file> <output file>\"\n" - " or \"--preset cbr 192 <input file> <output file>\"\n" - " or \"--preset 172 <input file> <output file>\"\n" - " or \"--preset extreme <input file> <output file>\"\n" "\n" "\n"); - fprintf(msgfp, - "A few aliases are also available for ABR mode:\n" - "phone => 16kbps/mono phon+/lw/mw-eu/sw => 24kbps/mono\n" - "mw-us => 40kbps/mono voice => 56kbps/mono\n" - "fm/radio/tape => 112kbps hifi => 160kbps\n" - "cd => 192kbps studio => 256kbps\n"); -} - - -static int -presets_set(lame_t gfp, int fast, int cbr, const char *preset_name, const char *ProgramName) -{ - int mono = 0; - - if ((strcmp(preset_name, "help") == 0) && (fast < 1) - && (cbr < 1)) { - lame_version_print(stdout); - presets_longinfo_dm(stdout); - return -1; - } - - /*aliases for compatibility with old presets */ - - if (strcmp(preset_name, "phone") == 0) { - preset_name = "16"; - mono = 1; - } - if ((strcmp(preset_name, "phon+") == 0) || - (strcmp(preset_name, "lw") == 0) || - (strcmp(preset_name, "mw-eu") == 0) || (strcmp(preset_name, "sw") == 0)) { - preset_name = "24"; - mono = 1; - } - if (strcmp(preset_name, "mw-us") == 0) { - preset_name = "40"; - mono = 1; - } - if (strcmp(preset_name, "voice") == 0) { - preset_name = "56"; - mono = 1; - } - if (strcmp(preset_name, "fm") == 0) { - preset_name = "112"; - } - if ((strcmp(preset_name, "radio") == 0) || (strcmp(preset_name, "tape") == 0)) { - preset_name = "112"; - } - if (strcmp(preset_name, "hifi") == 0) { - preset_name = "160"; - } - if (strcmp(preset_name, "cd") == 0) { - preset_name = "192"; - } - if (strcmp(preset_name, "studio") == 0) { - preset_name = "256"; - } - - if (strcmp(preset_name, "medium") == 0) { - lame_set_VBR_q(gfp, 4); - lame_set_VBR(gfp, vbr_default); - return 0; - } - - if (strcmp(preset_name, "standard") == 0) { - lame_set_VBR_q(gfp, 2); - lame_set_VBR(gfp, vbr_default); - return 0; - } - - else if (strcmp(preset_name, "extreme") == 0) { - lame_set_VBR_q(gfp, 0); - lame_set_VBR(gfp, vbr_default); - return 0; - } - - else if ((strcmp(preset_name, "insane") == 0) && (fast < 1)) { - - lame_set_preset(gfp, INSANE); - - return 0; - } - - /* Generic ABR Preset */ - if (((atoi(preset_name)) > 0) && (fast < 1)) { - if ((atoi(preset_name)) >= 8 && (atoi(preset_name)) <= 320) { - lame_set_preset(gfp, atoi(preset_name)); - - if (cbr == 1) - lame_set_VBR(gfp, vbr_off); - - if (mono == 1) { - lame_set_mode(gfp, MONO); - } - - return 0; - - } - else { - lame_version_print(Console_IO.Error_fp); - error_printf("Error: The bitrate specified is out of the valid range for this preset\n" - "\n" - "When using this mode you must enter a value between \"32\" and \"320\"\n" - "\n" "For further information try: \"%s --preset help\"\n", ProgramName); - return -1; - } - } - - lame_version_print(Console_IO.Error_fp); - error_printf("Error: You did not enter a valid profile and/or options with --preset\n" - "\n" - "Available profiles are:\n" - "\n" - " medium\n" - " standard\n" - " extreme\n" - " insane\n" - " <cbr> (ABR Mode) - The ABR Mode is implied. To use it,\n" - " simply specify a bitrate. For example:\n" - " \"--preset 185\" activates this\n" - " preset and uses 185 as an average kbps.\n" "\n"); - error_printf(" Some examples:\n" - "\n" - " or \"%s --preset standard <input file> <output file>\"\n" - " or \"%s --preset cbr 192 <input file> <output file>\"\n" - " or \"%s --preset 172 <input file> <output file>\"\n" - " or \"%s --preset extreme <input file> <output file>\"\n" - "\n" - "For further information try: \"%s --preset help\"\n", ProgramName, ProgramName, - ProgramName, ProgramName, ProgramName); - return -1; -} - -static void -genre_list_handler(int num, const char *name, void *cookie) -{ - (void) cookie; - console_printf("%3d %s\n", num, name); -} - - -/************************************************************************ -* -* parse_args -* -* PURPOSE: Sets encoding parameters to the specifications of the -* command line. Default settings are used for parameters -* not specified in the command line. -* -* If the input file is in WAVE or AIFF format, the sampling frequency is read -* from the AIFF header. -* -* The input and output filenames are read into #inpath# and #outpath#. -* -************************************************************************/ - -/* would use real "strcasecmp" but it isn't portable */ -static int -local_strcasecmp(const char *s1, const char *s2) -{ - unsigned char c1; - unsigned char c2; - - do { - c1 = (unsigned char) tolower(*s1); - c2 = (unsigned char) tolower(*s2); - if (!c1) { - break; - } - ++s1; - ++s2; - } while (c1 == c2); - return c1 - c2; -} - -static int -local_strncasecmp(const char *s1, const char *s2, int n) -{ - unsigned char c1 = 0; - unsigned char c2 = 0; - int cnt = 0; - - do { - if (cnt == n) { - break; - } - c1 = (unsigned char) tolower(*s1); - c2 = (unsigned char) tolower(*s2); - if (!c1) { - break; - } - ++s1; - ++s2; - ++cnt; - } while (c1 == c2); - return c1 - c2; -} - - - -/* LAME is a simple frontend which just uses the file extension */ -/* to determine the file type. Trying to analyze the file */ -/* contents is well beyond the scope of LAME and should not be added. */ -static int -filename_to_type(const char *FileName) -{ - size_t len = strlen(FileName); - - if (len < 4) - return sf_unknown; - - FileName += len - 4; - if (0 == local_strcasecmp(FileName, ".mpg")) - return sf_mp123; - if (0 == local_strcasecmp(FileName, ".mp1")) - return sf_mp123; - if (0 == local_strcasecmp(FileName, ".mp2")) - return sf_mp123; - if (0 == local_strcasecmp(FileName, ".mp3")) - return sf_mp123; - if (0 == local_strcasecmp(FileName, ".wav")) - return sf_wave; - if (0 == local_strcasecmp(FileName, ".aif")) - return sf_aiff; - if (0 == local_strcasecmp(FileName, ".raw")) - return sf_raw; - if (0 == local_strcasecmp(FileName, ".ogg")) - return sf_ogg; - return sf_unknown; -} - -static int -resample_rate(double freq) -{ - if (freq >= 1.e3) - freq *= 1.e-3; - - switch ((int) freq) { - case 8: - return 8000; - case 11: - return 11025; - case 12: - return 12000; - case 16: - return 16000; - case 22: - return 22050; - case 24: - return 24000; - case 32: - return 32000; - case 44: - return 44100; - case 48: - return 48000; - default: - error_printf("Illegal resample frequency: %.3f kHz\n", freq); - return 0; - } -} - -#ifdef _WIN32 -#define SLASH '\\' -#elif __OS2__ -#define SLASH '\\' -#else -#define SLASH '/' -#endif - -static -size_t scanPath(char const* s, char const** a, char const** b) -{ - char const* s1 = s; - char const* s2 = s; - if (s != 0) { - for (; *s; ++s) { - switch (*s) { - case SLASH: - case ':': - s2 = s; - break; - } - } - if (*s2 == ':') { - ++s2; - } - } - if (a) { - *a = s1; - } - if (b) { - *b = s2; - } - return s2-s1; -} - -static -size_t scanBasename(char const* s, char const** a, char const** b) -{ - char const* s1 = s; - char const* s2 = s; - if (s != 0) { - for (; *s; ++s) { - switch (*s) { - case SLASH: - case ':': - s1 = s2 = s; - break; - case '.': - s2 = s; - break; - } - } - if (s2 == s1) { - s2 = s; - } - if (*s1 == SLASH || *s1 == ':') { - ++s1; - } - } - if (a != 0) { - *a = s1; - } - if (b != 0) { - *b = s2; - } - return s2-s1; -} - -static -int isCommonSuffix(char const* s_ext) -{ - char const* suffixes[] = - { ".WAV", ".RAW", ".MP1", ".MP2" - , ".MP3", ".MPG", ".MPA", ".CDA" - , ".OGG", ".AIF", ".AIFF", ".AU" - , ".SND", ".FLAC", ".WV", ".OFR" - , ".TAK", ".MP4", ".M4A", ".PCM" - , ".W64" - }; - size_t i; - for (i = 0; i < dimension_of(suffixes); ++i) { - if (local_strcasecmp(s_ext, suffixes[i]) == 0) { - return 1; - } - } - return 0; -} - - -static -int generateOutPath(lame_t gfp, char const* inPath, char const* outDir, char* outPath) -{ - size_t const max_path = PATH_MAX; - char const* s_ext = lame_get_decode_only(gfp) ? ".wav" : ".mp3"; -#if 1 - size_t i = 0; - int out_dir_used = 0; - - if (outDir != 0 && outDir[0] != 0) { - out_dir_used = 1; - while (*outDir) { - outPath[i++] = *outDir++; - if (i >= max_path) { - goto err_generateOutPath; - } - } - if (i > 0 && outPath[i-1] != SLASH) { - outPath[i++] = SLASH; - if (i >= max_path) { - goto err_generateOutPath; - } - } - outPath[i] = 0; - } - else { - char const* pa; - char const* pb; - size_t j, n = scanPath(inPath, &pa, &pb); - if (i+n >= max_path) { - goto err_generateOutPath; - } - for (j = 0; j < n; ++j) { - outPath[i++] = pa[j]; - } - if (n > 0) { - outPath[i++] = SLASH; - if (i >= max_path) { - goto err_generateOutPath; - } - } - outPath[i] = 0; - } - { - int replace_suffix = 0; - char const* na; - char const* nb; - size_t j, n = scanBasename(inPath, &na, &nb); - if (i+n >= max_path) { - goto err_generateOutPath; - } - for (j = 0; j < n; ++j) { - outPath[i++] = na[j]; - } - outPath[i] = 0; - if (isCommonSuffix(nb) == 1) { - replace_suffix = 1; - if (out_dir_used == 0) { - if (local_strcasecmp(nb, s_ext) == 0) { - replace_suffix = 0; - } - } - } - if (replace_suffix == 0) { - while (*nb) { - outPath[i++] = *nb++; - if (i >= max_path) { - goto err_generateOutPath; - } - } - outPath[i] = 0; - } - } - if (i+5 >= max_path) { - goto err_generateOutPath; - } - while (*s_ext) { - outPath[i++] = *s_ext++; - } - outPath[i] = 0; - return 0; -err_generateOutPath: - error_printf( "error: output file name too long" ); - return 1; -#else - strncpy(outPath, inPath, PATH_MAX + 1 - 4); - strncat(outPath, s_ext, 4); - return 0; -#endif -} - - -static int -set_id3_albumart(lame_t gfp, char const* file_name) -{ - int ret = -1; - FILE *fpi = 0; - char *albumart = 0; - - if (file_name == 0) { - return 0; - } - fpi = lame_fopen(file_name, "rb"); - if (!fpi) { - ret = 1; - } - else { - size_t size; - - fseek(fpi, 0, SEEK_END); - size = ftell(fpi); - fseek(fpi, 0, SEEK_SET); - albumart = (char *)malloc(size); - if (!albumart) { - ret = 2; - } - else { - if (fread(albumart, 1, size, fpi) != size) { - ret = 3; - } - else { - ret = id3tag_set_albumart(gfp, albumart, size) ? 4 : 0; - } - free(albumart); - } - fclose(fpi); - } - switch (ret) { - case 1: error_printf("Could not find: '%s'.\n", file_name); break; - case 2: error_printf("Insufficient memory for reading the albumart.\n"); break; - case 3: error_printf("Read error: '%s'.\n", file_name); break; - case 4: error_printf("Unsupported image: '%s'.\nSpecify JPEG/PNG/GIF image\n", file_name); break; - default: break; - } - return ret; -} - - -enum ID3TAG_MODE -{ ID3TAG_MODE_DEFAULT -, ID3TAG_MODE_V1_ONLY -, ID3TAG_MODE_V2_ONLY -}; - -/* Ugly, NOT final version */ - -#define T_IF(str) if ( 0 == local_strcasecmp (token,str) ) { -#define T_ELIF(str) } else if ( 0 == local_strcasecmp (token,str) ) { -#define T_ELIF_INTERNAL(str) } else if (internal_opts_enabled && (0 == local_strcasecmp (token,str)) ) { -#define T_ELIF2(str1,str2) } else if ( 0 == local_strcasecmp (token,str1) || 0 == local_strcasecmp (token,str2) ) { -#define T_ELSE } else { -#define T_END } - -int -parse_args(lame_global_flags * gfp, int argc, char **argv, - char *const inPath, char *const outPath, char **nogap_inPath, int *num_nogap) -{ - char outDir[1024] = ""; - int input_file = 0; /* set to 1 if we parse an input file name */ - int i; - int autoconvert = 0; - double val; - int nogap = 0; - int nogap_tags = 0; /* set to 1 to use VBR tags in NOGAP mode */ - const char *ProgramName = argv[0]; - int count_nogap = 0; - int noreplaygain = 0; /* is RG explicitly disabled by the user */ - int id3tag_mode = ID3TAG_MODE_DEFAULT; - int ignore_tag_errors = 0; /* Ignore errors in values passed for tags */ -#ifdef ID3TAGS_EXTENDED - enum TextEncoding id3_tenc = TENC_UTF16; -#else - enum TextEncoding id3_tenc = TENC_LATIN1; -#endif - - inPath[0] = '\0'; - outPath[0] = '\0'; - /* turn on display options. user settings may turn them off below */ - global_ui_config.silent = 0; - global_ui_config.brhist = 1; - global_decoder.mp3_delay = 0; - global_decoder.mp3_delay_set = 0; - global_decoder.disable_wav_header = 0; - global_ui_config.print_clipping_info = 0; - id3tag_init(gfp); - - /* process args */ - for (i = 0; ++i < argc;) { - char c; - char *token; - char *arg; - char *nextArg; - int argUsed; - - token = argv[i]; - if (*token++ == '-') { - argUsed = 0; - nextArg = i + 1 < argc ? argv[i + 1] : ""; - - if (!*token) { /* The user wants to use stdin and/or stdout. */ - input_file = 1; - if (inPath[0] == '\0') - strncpy(inPath, argv[i], PATH_MAX + 1); - else if (outPath[0] == '\0') - strncpy(outPath, argv[i], PATH_MAX + 1); - } - if (*token == '-') { /* GNU style */ - token++; - - T_IF("resample") - argUsed = 1; - (void) lame_set_out_samplerate(gfp, resample_rate(atof(nextArg))); - - T_ELIF("vbr-old") - lame_set_VBR(gfp, vbr_rh); - - T_ELIF("vbr-new") - lame_set_VBR(gfp, vbr_mt); - - T_ELIF("vbr-mtrh") - lame_set_VBR(gfp, vbr_mtrh); - - T_ELIF("cbr") - lame_set_VBR(gfp, vbr_off); - - T_ELIF("abr") - /* values larger than 8000 are bps (like Fraunhofer), so it's strange to get 320000 bps MP3 when specifying 8000 bps MP3 */ - int m = atoi(nextArg); - argUsed = 1; - if (m >= 8000) { - m = (m + 500) / 1000; - } - if (m > 320) { - m = 320; - } - if (m < 8) { - m = 8; - } - lame_set_VBR(gfp, vbr_abr); - lame_set_VBR_mean_bitrate_kbps(gfp, m); - - T_ELIF("r3mix") - lame_set_preset(gfp, R3MIX); - - T_ELIF("bitwidth") - argUsed = 1; - global_raw_pcm.in_bitwidth = atoi(nextArg); - - T_ELIF("signed") - global_raw_pcm.in_signed = 1; - - T_ELIF("unsigned") - global_raw_pcm.in_signed = 0; - - T_ELIF("little-endian") - global_raw_pcm.in_endian = ByteOrderLittleEndian; - - T_ELIF("big-endian") - global_raw_pcm.in_endian = ByteOrderBigEndian; - - T_ELIF("mp1input") - global_reader.input_format = sf_mp1; - - T_ELIF("mp2input") - global_reader.input_format = sf_mp2; - - T_ELIF("mp3input") - global_reader.input_format = sf_mp3; - - T_ELIF("ogginput") - error_printf("sorry, vorbis support in LAME is deprecated.\n"); - return -1; -#if INTERNAL_OPTS - T_ELIF_INTERNAL("noshort") - (void) lame_set_no_short_blocks(gfp, 1); - - T_ELIF_INTERNAL("short") - (void) lame_set_no_short_blocks(gfp, 0); - - T_ELIF_INTERNAL("allshort") - (void) lame_set_force_short_blocks(gfp, 1); -#endif - - T_ELIF("decode") - (void) lame_set_decode_only(gfp, 1); - - T_ELIF("flush") - global_writer.flush_write = 1; - - T_ELIF("decode-mp3delay") - global_decoder.mp3_delay = atoi(nextArg); - global_decoder.mp3_delay_set = 1; - argUsed = 1; - - T_ELIF("nores") - lame_set_disable_reservoir(gfp, 1); - - T_ELIF("strictly-enforce-ISO") - lame_set_strict_ISO(gfp, MDB_STRICT_ISO); - - T_ELIF("buffer-constraint") - argUsed = 1; - if (strcmp(nextArg, "default") == 0) - (void) lame_set_strict_ISO(gfp, MDB_DEFAULT); - else if (strcmp(nextArg, "strict") == 0) - (void) lame_set_strict_ISO(gfp, MDB_STRICT_ISO); - else if (strcmp(nextArg, "maximum") == 0) - (void) lame_set_strict_ISO(gfp, MDB_MAXIMUM); - else { - error_printf("unknown buffer constraint '%s'\n", nextArg); - return -1; - } - - T_ELIF("scale") - argUsed = 1; - (void) lame_set_scale(gfp, (float) atof(nextArg)); - - T_ELIF("scale-l") - argUsed = 1; - (void) lame_set_scale_left(gfp, (float) atof(nextArg)); - - T_ELIF("scale-r") - argUsed = 1; - (void) lame_set_scale_right(gfp, (float) atof(nextArg)); - - T_ELIF("noasm") - argUsed = 1; - if (!strcmp(nextArg, "mmx")) - (void) lame_set_asm_optimizations(gfp, MMX, 0); - if (!strcmp(nextArg, "3dnow")) - (void) lame_set_asm_optimizations(gfp, AMD_3DNOW, 0); - if (!strcmp(nextArg, "sse")) - (void) lame_set_asm_optimizations(gfp, SSE, 0); - - T_ELIF("freeformat") - lame_set_free_format(gfp, 1); - - T_ELIF("replaygain-fast") - lame_set_findReplayGain(gfp, 1); - -#ifdef DECODE_ON_THE_FLY - T_ELIF("replaygain-accurate") - lame_set_decode_on_the_fly(gfp, 1); - lame_set_findReplayGain(gfp, 1); -#endif - - T_ELIF("noreplaygain") - noreplaygain = 1; - lame_set_findReplayGain(gfp, 0); - - -#ifdef DECODE_ON_THE_FLY - T_ELIF("clipdetect") - global_ui_config.print_clipping_info = 1; - lame_set_decode_on_the_fly(gfp, 1); -#endif - - T_ELIF("nohist") - global_ui_config.brhist = 0; - -#if defined(__OS2__) || defined(WIN32) - T_ELIF("priority") - char *endptr; - int priority = (int) strtol(nextArg, &endptr, 10); - if (endptr != nextArg) { - argUsed = 1; - } - setProcessPriority(priority); -#endif - - /* options for ID3 tag */ -#ifdef ID3TAGS_EXTENDED - T_ELIF2("id3v2-utf16","id3v2-ucs2") /* id3v2-ucs2 for compatibility only */ - id3_tenc = TENC_UTF16; - id3tag_add_v2(gfp); - - T_ELIF("id3v2-latin1") - id3_tenc = TENC_LATIN1; - id3tag_add_v2(gfp); -#endif - - T_ELIF("tt") - argUsed = 1; - id3_tag(gfp, 't', id3_tenc, nextArg); - - T_ELIF("ta") - argUsed = 1; - id3_tag(gfp, 'a', id3_tenc, nextArg); - - T_ELIF("tl") - argUsed = 1; - id3_tag(gfp, 'l', id3_tenc, nextArg); - - T_ELIF("ty") - argUsed = 1; - id3_tag(gfp, 'y', id3_tenc, nextArg); - - T_ELIF("tc") - argUsed = 1; - id3_tag(gfp, 'c', id3_tenc, nextArg); - - T_ELIF("tn") - int ret = id3_tag(gfp, 'n', id3_tenc, nextArg); - argUsed = 1; - if (ret != 0) { - if (0 == ignore_tag_errors) { - if (id3tag_mode == ID3TAG_MODE_V1_ONLY) { - if (global_ui_config.silent < 9) { - error_printf("The track number has to be between 1 and 255 for ID3v1.\n"); - } - return -1; - } - else if (id3tag_mode == ID3TAG_MODE_V2_ONLY) { - /* track will be stored as-is in ID3v2 case, so no problem here */ - } - else { - if (global_ui_config.silent < 9) { - error_printf("The track number has to be between 1 and 255 for ID3v1, ignored for ID3v1.\n"); - } - } - } - } - - T_ELIF("tg") - int ret = id3_tag(gfp, 'g', id3_tenc, nextArg); - argUsed = 1; - if (ret != 0) { - if (0 == ignore_tag_errors) { - if (ret == -1) { - error_printf("Unknown ID3v1 genre number: '%s'.\n", nextArg); - return -1; - } - else if (ret == -2) { - if (id3tag_mode == ID3TAG_MODE_V1_ONLY) { - error_printf("Unknown ID3v1 genre: '%s'.\n", nextArg); - return -1; - } - else if (id3tag_mode == ID3TAG_MODE_V2_ONLY) { - /* genre will be stored as-is in ID3v2 case, so no problem here */ - } - else { - if (global_ui_config.silent < 9) { - error_printf("Unknown ID3v1 genre: '%s'. Setting ID3v1 genre to 'Other'\n", nextArg); - } - } - } - else { - if (global_ui_config.silent < 10) - error_printf("Internal error.\n"); - return -1; - } - } - } - - T_ELIF("tv") - argUsed = 1; - if (id3_tag(gfp, 'v', id3_tenc, nextArg)) { - if (global_ui_config.silent < 9) { - error_printf("Invalid field value: '%s'. Ignored\n", nextArg); - } - } - - T_ELIF("ti") - argUsed = 1; - if (set_id3_albumart(gfp, nextArg) != 0) { - if (! ignore_tag_errors) { - return -1; - } - } - - T_ELIF("ignore-tag-errors") - ignore_tag_errors = 1; - - T_ELIF("add-id3v2") - id3tag_add_v2(gfp); - - T_ELIF("id3v1-only") - id3tag_v1_only(gfp); - id3tag_mode = ID3TAG_MODE_V1_ONLY; - - T_ELIF("id3v2-only") - id3tag_v2_only(gfp); - id3tag_mode = ID3TAG_MODE_V2_ONLY; - - T_ELIF("space-id3v1") - id3tag_space_v1(gfp); - - T_ELIF("pad-id3v2") - id3tag_pad_v2(gfp); - - T_ELIF("pad-id3v2-size") - int n = atoi(nextArg); - n = n <= 128000 ? n : 128000; - n = n >= 0 ? n : 0; - id3tag_set_pad(gfp, n); - argUsed = 1; - - - T_ELIF("genre-list") - id3tag_genre_list(genre_list_handler, NULL); - return -2; - - - T_ELIF("lowpass") - val = atof(nextArg); - argUsed = 1; - if (val < 0) { - lame_set_lowpassfreq(gfp, -1); - } - else { - /* useful are 0.001 kHz...50 kHz, 50 Hz...50000 Hz */ - if (val < 0.001 || val > 50000.) { - error_printf("Must specify lowpass with --lowpass freq, freq >= 0.001 kHz\n"); - return -1; - } - lame_set_lowpassfreq(gfp, (int) (val * (val < 50. ? 1.e3 : 1.e0) + 0.5)); - } - - T_ELIF("lowpass-width") - val = atof(nextArg); - argUsed = 1; - /* useful are 0.001 kHz...16 kHz, 16 Hz...50000 Hz */ - if (val < 0.001 || val > 50000.) { - error_printf - ("Must specify lowpass width with --lowpass-width freq, freq >= 0.001 kHz\n"); - return -1; - } - lame_set_lowpasswidth(gfp, (int) (val * (val < 16. ? 1.e3 : 1.e0) + 0.5)); - - T_ELIF("highpass") - val = atof(nextArg); - argUsed = 1; - if (val < 0.0) { - lame_set_highpassfreq(gfp, -1); - } - else { - /* useful are 0.001 kHz...16 kHz, 16 Hz...50000 Hz */ - if (val < 0.001 || val > 50000.) { - error_printf("Must specify highpass with --highpass freq, freq >= 0.001 kHz\n"); - return -1; - } - lame_set_highpassfreq(gfp, (int) (val * (val < 16. ? 1.e3 : 1.e0) + 0.5)); - } - - T_ELIF("highpass-width") - val = atof(nextArg); - argUsed = 1; - /* useful are 0.001 kHz...16 kHz, 16 Hz...50000 Hz */ - if (val < 0.001 || val > 50000.) { - error_printf - ("Must specify highpass width with --highpass-width freq, freq >= 0.001 kHz\n"); - return -1; - } - lame_set_highpasswidth(gfp, (int) val); - - T_ELIF("comp") - argUsed = 1; - val = atof(nextArg); - if (val < 1.0) { - error_printf("Must specify compression ratio >= 1.0\n"); - return -1; - } - lame_set_compression_ratio(gfp, (float) val); -#if INTERNAL_OPTS - T_ELIF_INTERNAL("notemp") - (void) lame_set_useTemporal(gfp, 0); - - T_ELIF_INTERNAL("interch") - argUsed = 1; - (void) lame_set_interChRatio(gfp, (float) atof(nextArg)); - - T_ELIF_INTERNAL("temporal-masking") - argUsed = 1; - (void) lame_set_useTemporal(gfp, atoi(nextArg) ? 1 : 0); - - T_ELIF_INTERNAL("nspsytune") - ; - - T_ELIF_INTERNAL("nssafejoint") - lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); - - T_ELIF_INTERNAL("nsmsfix") - argUsed = 1; - (void) lame_set_msfix(gfp, atof(nextArg)); - - T_ELIF_INTERNAL("ns-bass") - argUsed = 1; - { - double d; - int k; - d = atof(nextArg); - k = (int) (d * 4); - if (k < -32) - k = -32; - if (k > 31) - k = 31; - if (k < 0) - k += 64; - lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (k << 2)); - } - - T_ELIF_INTERNAL("ns-alto") - argUsed = 1; - { - double d; - int k; - d = atof(nextArg); - k = (int) (d * 4); - if (k < -32) - k = -32; - if (k > 31) - k = 31; - if (k < 0) - k += 64; - lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (k << 8)); - } - - T_ELIF_INTERNAL("ns-treble") - argUsed = 1; - { - double d; - int k; - d = atof(nextArg); - k = (int) (d * 4); - if (k < -32) - k = -32; - if (k > 31) - k = 31; - if (k < 0) - k += 64; - lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (k << 14)); - } - - T_ELIF_INTERNAL("ns-sfb21") - /* to be compatible with Naoki's original code, - * ns-sfb21 specifies how to change ns-treble for sfb21 */ - argUsed = 1; - { - double d; - int k; - d = atof(nextArg); - k = (int) (d * 4); - if (k < -32) - k = -32; - if (k > 31) - k = 31; - if (k < 0) - k += 64; - lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (k << 20)); - } -#endif - /* some more GNU-ish options could be added - * brief => few messages on screen (name, status report) - * o/output file => specifies output filename - * O => stdout - * i/input file => specifies input filename - * I => stdin - */ - T_ELIF("quiet") - global_ui_config.silent = 10; /* on a scale from 1 to 10 be very silent */ - - T_ELIF("silent") - global_ui_config.silent = 9; - - T_ELIF("brief") - global_ui_config.silent = -5; /* print few info on screen */ - - T_ELIF("verbose") - global_ui_config.silent = -10; /* print a lot on screen */ - - T_ELIF2("version", "license") - print_license(stdout); - return -2; - - T_ELIF2("help", "usage") - if (0 == local_strncasecmp(nextArg, "id3", 3)) { - help_id3tag(stdout); - } - else if (0 == local_strncasecmp(nextArg, "dev", 3)) { - help_developer_switches(stdout); - } - else { - short_help(gfp, stdout, ProgramName); - } - return -2; - - T_ELIF("longhelp") - long_help(gfp, stdout, ProgramName, 0 /* lessmode=NO */ ); - return -2; - - T_ELIF("?") -#ifdef __unix__ - FILE *fp = popen("less -Mqc", "w"); - long_help(gfp, fp, ProgramName, 0 /* lessmode=NO */ ); - pclose(fp); -#else - long_help(gfp, stdout, ProgramName, 1 /* lessmode=YES */ ); -#endif - return -2; - - T_ELIF2("preset", "alt-preset") - argUsed = 1; - { - int fast = 0, cbr = 0; - - while ((strcmp(nextArg, "fast") == 0) || (strcmp(nextArg, "cbr") == 0)) { - - if ((strcmp(nextArg, "fast") == 0) && (fast < 1)) - fast = 1; - if ((strcmp(nextArg, "cbr") == 0) && (cbr < 1)) - cbr = 1; - - argUsed++; - nextArg = i + argUsed < argc ? argv[i + argUsed] : ""; - } - - if (presets_set(gfp, fast, cbr, nextArg, ProgramName) < 0) - return -1; - } - - T_ELIF("disptime") - argUsed = 1; - global_ui_config.update_interval = (float) atof(nextArg); - - T_ELIF("nogaptags") - nogap_tags = 1; - - T_ELIF("nogapout") - /* FIXME: replace strcpy by safer strncpy */ - strcpy(outPath, nextArg); - argUsed = 1; - - T_ELIF("out-dir") - /* FIXME: replace strcpy by safer strncpy */ - strcpy(outDir, nextArg); - argUsed = 1; - - T_ELIF("nogap") - nogap = 1; - - T_ELIF("swap-channel") - global_reader.swap_channel = 1; -#if INTERNAL_OPTS - T_ELIF_INTERNAL("tune") /*without helptext */ - argUsed = 1; - lame_set_tune(gfp, (float) atof(nextArg)); - - T_ELIF_INTERNAL("shortthreshold") { - float x, y; - int n = sscanf(nextArg, "%f,%f", &x, &y); - if (n == 1) { - y = x; - } - argUsed = 1; - (void) lame_set_short_threshold(gfp, x, y); - } - - T_ELIF_INTERNAL("maskingadjust") /*without helptext */ - argUsed = 1; - (void) lame_set_maskingadjust(gfp, (float) atof(nextArg)); - - T_ELIF_INTERNAL("maskingadjustshort") /*without helptext */ - argUsed = 1; - (void) lame_set_maskingadjust_short(gfp, (float) atof(nextArg)); - - T_ELIF_INTERNAL("athcurve") /*without helptext */ - argUsed = 1; - (void) lame_set_ATHcurve(gfp, (float) atof(nextArg)); - - T_ELIF_INTERNAL("no-preset-tune") /*without helptext */ - (void) lame_set_preset_notune(gfp, 0); - - T_ELIF_INTERNAL("substep") - argUsed = 1; - (void) lame_set_substep(gfp, atoi(nextArg)); - - T_ELIF_INTERNAL("sbgain") /*without helptext */ - argUsed = 1; - (void) lame_set_subblock_gain(gfp, atoi(nextArg)); - - T_ELIF_INTERNAL("sfscale") /*without helptext */ - (void) lame_set_sfscale(gfp, 1); - - T_ELIF_INTERNAL("noath") - (void) lame_set_noATH(gfp, 1); - - T_ELIF_INTERNAL("athonly") - (void) lame_set_ATHonly(gfp, 1); - - T_ELIF_INTERNAL("athshort") - (void) lame_set_ATHshort(gfp, 1); - - T_ELIF_INTERNAL("athlower") - argUsed = 1; - (void) lame_set_ATHlower(gfp, (float) atof(nextArg)); - - T_ELIF_INTERNAL("athtype") - argUsed = 1; - (void) lame_set_ATHtype(gfp, atoi(nextArg)); - - T_ELIF_INTERNAL("athaa-type") /* switch for developing, no DOCU */ - argUsed = 1; /* once was 1:Gaby, 2:Robert, 3:Jon, else:off */ - lame_set_athaa_type(gfp, atoi(nextArg)); /* now: 0:off else:Jon */ -#endif - T_ELIF ("athaa-sensitivity") - argUsed=1; - lame_set_athaa_sensitivity(gfp, (float) atof(nextArg)); - - T_ELIF_INTERNAL("debug-file") /* switch for developing, no DOCU */ - argUsed = 1; /* file name to print debug info into */ - { - set_debug_file(nextArg); - } - - T_ELSE { - error_printf("%s: unrecognized option --%s\n", ProgramName, token); - return -1; - } - T_END i += argUsed; - - } - else { - while ((c = *token++) != '\0') { - arg = *token ? token : nextArg; - switch (c) { - case 'm': - argUsed = 1; - - switch (*arg) { - case 's': - (void) lame_set_mode(gfp, STEREO); - break; - case 'd': - (void) lame_set_mode(gfp, DUAL_CHANNEL); - break; - case 'f': - lame_set_force_ms(gfp, 1); - /* FALLTHROUGH */ - case 'j': - (void) lame_set_mode(gfp, JOINT_STEREO); - break; - case 'm': - (void) lame_set_mode(gfp, MONO); - break; - case 'l': - (void) lame_set_mode(gfp, MONO); - (void) lame_set_scale_left(gfp, 2); - (void) lame_set_scale_right(gfp, 0); - break; - case 'r': - (void) lame_set_mode(gfp, MONO); - (void) lame_set_scale_left(gfp, 0); - (void) lame_set_scale_right(gfp, 2); - break; - case 'a': - (void) lame_set_mode(gfp, JOINT_STEREO); - break; - default: - error_printf("%s: -m mode must be s/d/j/f/m not %s\n", ProgramName, - arg); - return -1; - } - break; - - case 'V': - argUsed = 1; - /* to change VBR default look in lame.h */ - if (lame_get_VBR(gfp) == vbr_off) - lame_set_VBR(gfp, vbr_default); - lame_set_VBR_quality(gfp, (float)atof(arg)); - break; - case 'v': - /* to change VBR default look in lame.h */ - if (lame_get_VBR(gfp) == vbr_off) - lame_set_VBR(gfp, vbr_default); - break; - - case 'q': - argUsed = 1; - (void) lame_set_quality(gfp, atoi(arg)); - break; - case 'f': - (void) lame_set_quality(gfp, 7); - break; - case 'h': - (void) lame_set_quality(gfp, 2); - break; - - case 's': - argUsed = 1; - val = atof(arg); - val = (int) (val * (val <= 192 ? 1.e3 : 1.e0) + 0.5); - global_reader.input_samplerate = (int)val; - (void) lame_set_in_samplerate(gfp, (int)val); - break; - case 'b': - argUsed = 1; - lame_set_brate(gfp, atoi(arg)); - lame_set_VBR_min_bitrate_kbps(gfp, lame_get_brate(gfp)); - break; - case 'B': - argUsed = 1; - lame_set_VBR_max_bitrate_kbps(gfp, atoi(arg)); - break; - case 'F': - lame_set_VBR_hard_min(gfp, 1); - break; - case 't': /* dont write VBR tag */ - (void) lame_set_bWriteVbrTag(gfp, 0); - global_decoder.disable_wav_header = 1; - break; - case 'T': /* do write VBR tag */ - (void) lame_set_bWriteVbrTag(gfp, 1); - nogap_tags = 1; - global_decoder.disable_wav_header = 0; - break; - case 'r': /* force raw pcm input file */ -#if defined(LIBSNDFILE) - error_printf - ("WARNING: libsndfile may ignore -r and perform fseek's on the input.\n" - "Compile without libsndfile if this is a problem.\n"); -#endif - global_reader.input_format = sf_raw; - break; - case 'x': /* force byte swapping */ - global_reader.swapbytes = 1; - break; - case 'p': /* (jo) error_protection: add crc16 information to stream */ - lame_set_error_protection(gfp, 1); - break; - case 'a': /* autoconvert input file from stereo to mono - for mono mp3 encoding */ - autoconvert = 1; - (void) lame_set_mode(gfp, MONO); - break; - case 'd': /*(void) lame_set_allow_diff_short( gfp, 1 ); */ - case 'k': /*lame_set_lowpassfreq(gfp, -1); - lame_set_highpassfreq(gfp, -1); */ - error_printf("WARNING: -%c is obsolete.\n", c); - break; - case 'S': - global_ui_config.silent = 5; - break; - case 'X': - /* experimental switch -X: - the differnt types of quant compare are tough - to communicate to endusers, so they shouldn't - bother to toy around with them - */ - { - int x, y; - int n = sscanf(arg, "%d,%d", &x, &y); - if (n == 1) { - y = x; - } - argUsed = 1; - if (internal_opts_enabled) { - lame_set_quant_comp(gfp, x); - lame_set_quant_comp_short(gfp, y); - } - } - break; - case 'Y': - lame_set_experimentalY(gfp, 1); - break; - case 'Z': - /* experimental switch -Z: - */ - { - int n = 1; - argUsed = sscanf(arg, "%d", &n); - /*if (internal_opts_enabled)*/ - { - lame_set_experimentalZ(gfp, n); - } - } - break; - case 'e': - argUsed = 1; - - switch (*arg) { - case 'n': - lame_set_emphasis(gfp, 0); - break; - case '5': - lame_set_emphasis(gfp, 1); - break; - case 'c': - lame_set_emphasis(gfp, 3); - break; - default: - error_printf("%s: -e emp must be n/5/c not %s\n", ProgramName, arg); - return -1; - } - break; - case 'c': - lame_set_copyright(gfp, 1); - break; - case 'o': - lame_set_original(gfp, 0); - break; - - case '?': - long_help(gfp, stdout, ProgramName, 0 /* LESSMODE=NO */ ); - return -1; - - default: - error_printf("%s: unrecognized option -%c\n", ProgramName, c); - return -1; - } - if (argUsed) { - if (arg == token) - token = ""; /* no more from token */ - else - ++i; /* skip arg we used */ - arg = ""; - argUsed = 0; - } - } - } - } - else { - if (nogap) { - if ((num_nogap != NULL) && (count_nogap < *num_nogap)) { - strncpy(nogap_inPath[count_nogap++], argv[i], PATH_MAX + 1); - input_file = 1; - } - else { - /* sorry, calling program did not allocate enough space */ - error_printf - ("Error: 'nogap option'. Calling program does not allow nogap option, or\n" - "you have exceeded maximum number of input files for the nogap option\n"); - *num_nogap = -1; - return -1; - } - } - else { - /* normal options: inputfile [outputfile], and - either one can be a '-' for stdin/stdout */ - if (inPath[0] == '\0') { - strncpy(inPath, argv[i], PATH_MAX + 1); - input_file = 1; - } - else { - if (outPath[0] == '\0') - strncpy(outPath, argv[i], PATH_MAX + 1); - else { - error_printf("%s: excess arg %s\n", ProgramName, argv[i]); - return -1; - } - } - } - } - } /* loop over args */ - - if (!input_file) { - usage(Console_IO.Console_fp, ProgramName); - return -1; - } - - if (inPath[0] == '-') - global_ui_config.silent = (global_ui_config.silent <= 1 ? 1 : global_ui_config.silent); -#ifdef WIN32 - else - dosToLongFileName(inPath); -#endif - - if (outPath[0] == '\0' && count_nogap == 0) { - if (inPath[0] == '-') { - /* if input is stdin, default output is stdout */ - strcpy(outPath, "-"); - } - else { - if (generateOutPath(gfp, inPath, outDir, outPath) != 0) { - return -1; - } - } - } - - /* RG is enabled by default */ - if (!noreplaygain) - lame_set_findReplayGain(gfp, 1); - - /* disable VBR tags with nogap unless the VBR tags are forced */ - if (nogap && lame_get_bWriteVbrTag(gfp) && nogap_tags == 0) { - console_printf("Note: Disabling VBR Xing/Info tag since it interferes with --nogap\n"); - lame_set_bWriteVbrTag(gfp, 0); - } - - /* some file options not allowed with stdout */ - if (outPath[0] == '-') { - (void) lame_set_bWriteVbrTag(gfp, 0); /* turn off VBR tag */ - } - - /* if user did not explicitly specify input is mp3, check file name */ - if (global_reader.input_format == sf_unknown) - global_reader.input_format = filename_to_type(inPath); - -#if !(defined HAVE_MPGLIB || defined AMIGA_MPEGA) - if (is_mpeg_file_format(global_reader.input_format)) { - error_printf("Error: libmp3lame not compiled with mpg123 *decoding* support \n"); - return -1; - } -#endif - - /* default guess for number of channels */ - if (autoconvert) - (void) lame_set_num_channels(gfp, 2); - else if (MONO == lame_get_mode(gfp)) - (void) lame_set_num_channels(gfp, 1); - else - (void) lame_set_num_channels(gfp, 2); - - if (lame_get_free_format(gfp)) { - if (lame_get_brate(gfp) < 8 || lame_get_brate(gfp) > 640) { - error_printf("For free format, specify a bitrate between 8 and 640 kbps\n"); - error_printf("with the -b <bitrate> option\n"); - return -1; - } - } - if (num_nogap != NULL) - *num_nogap = count_nogap; - return 0; -} - - -/* end of parse.c */ diff --git a/platform/win32/msvc/external/lame/frontend/parse.h b/platform/win32/msvc/external/lame/frontend/parse.h deleted file mode 100644 index e75eeb8ff2a..00000000000 --- a/platform/win32/msvc/external/lame/frontend/parse.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef PARSE_H_INCLUDED -#define PARSE_H_INCLUDED - -#if defined(__cplusplus) -extern "C" { -#endif - -int usage(FILE * const fp, const char *ProgramName); -int short_help(const lame_global_flags * gfp, FILE * const fp, const char *ProgramName); -int long_help(const lame_global_flags * gfp, FILE * const fp, const char *ProgramName, - int lessmode); -int display_bitrates(FILE * const fp); - -int parse_args(lame_global_flags * gfp, int argc, char **argv, char *const inPath, - char *const outPath, char **nogap_inPath, int *max_nogap); - -void parse_close(); - -#if defined(__cplusplus) -} -#endif - -#endif -/* end of parse.h */ diff --git a/platform/win32/msvc/external/lame/frontend/rtp.c b/platform/win32/msvc/external/lame/frontend/rtp.c deleted file mode 100644 index 39718c88ffd..00000000000 --- a/platform/win32/msvc/external/lame/frontend/rtp.c +++ /dev/null @@ -1,366 +0,0 @@ -/* - * rtp socket communication functions - * - * initially contributed by Felix von Leitner - * - * Copyright (c) 2000 Mark Taylor - * 2010 Robert Hegemann - * - * 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. - */ - -/* $Id: rtp.c,v 1.24 2011/05/07 16:05:17 rbrito Exp $ */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#ifdef HAVE_STDINT_H -# include <stdint.h> -#endif - -struct rtpbits { - int sequence:16; /* sequence number: random */ - int pt:7; /* payload type: 14 for MPEG audio */ - int m:1; /* marker: 0 */ - int cc:4; /* number of CSRC identifiers: 0 */ - int x:1; /* number of extension headers: 0 */ - int p:1; /* is there padding appended: 0 */ - int v:2; /* version: 2 */ -}; - -struct rtpheader { /* in network byte order */ - struct rtpbits b; - int timestamp; /* start: random */ - int ssrc; /* random */ - int iAudioHeader; /* =0?! */ -}; - - -#if !defined( _WIN32 ) && !defined(__MINGW32__) - -#ifdef STDC_HEADERS -# include <stdio.h> -# include <stdarg.h> -# include <stdlib.h> -# include <string.h> -#else -# ifndef HAVE_MEMCPY -# define memcpy(d, s, n) bcopy ((s), (d), (n)) -# define memmove(d, s, n) bcopy ((s), (d), (n)) -# endif -#endif - -#ifdef HAVE_UNISTD_H -# include <unistd.h> -#endif - -#include <sys/types.h> -#include <sys/socket.h> -#ifdef __int8_t_defined -#undef uint8_t -#undef uint16_t -#undef uint32_t -#undef uint64_t -#endif -#include <netinet/in.h> -#include <arpa/inet.h> - -#ifdef WITH_DMALLOC -#include <dmalloc.h> -#endif - -#include "rtp.h" -#include "console.h" - -typedef int SOCKET; - -struct rtpheader RTPheader; -SOCKET rtpsocket; - - -/* create a sender socket. */ -int -rtp_socket(char const *address, unsigned int port, unsigned int TTL) -{ - int iRet, iLoop = 1; - struct sockaddr_in sin; - unsigned char cTtl = TTL; - char cLoop = 0; - unsigned int tempaddr; - - int iSocket = socket(AF_INET, SOCK_DGRAM, 0); - if (iSocket < 0) { - error_printf("socket() failed.\n"); - return 1; - } - - memset(&sin, 0, sizeof(sin)); - tempaddr = inet_addr(address); - sin.sin_family = AF_INET; - sin.sin_port = htons(port); - sin.sin_addr.s_addr = tempaddr; - - iRet = setsockopt(iSocket, SOL_SOCKET, SO_REUSEADDR, &iLoop, sizeof(int)); - if (iRet < 0) { - error_printf("setsockopt SO_REUSEADDR failed\n"); - return 1; - } - - if ((ntohl(tempaddr) >> 28) == 0xe) { - /* only set multicast parameters for multicast destination IPs */ - iRet = setsockopt(iSocket, IPPROTO_IP, IP_MULTICAST_TTL, &cTtl, sizeof(char)); - if (iRet < 0) { - error_printf("setsockopt IP_MULTICAST_TTL failed. multicast in kernel?\n"); - return 1; - } - - cLoop = 1; /* !? */ - iRet = setsockopt(iSocket, IPPROTO_IP, IP_MULTICAST_LOOP, &cLoop, sizeof(char)); - if (iRet < 0) { - error_printf("setsockopt IP_MULTICAST_LOOP failed. multicast in kernel?\n"); - return 1; - } - } - iRet = connect(iSocket, (struct sockaddr *) &sin, sizeof(struct sockaddr_in)); - if (iRet < 0) { - error_printf("connect IP_MULTICAST_LOOP failed. multicast in kernel?\n"); - return 1; - } - - rtpsocket = iSocket; - - return 0; -} - - -static void -rtp_initialization_extra(void) -{ -} - -static void -rtp_close_extra(void) -{ -} - -#else - -#include <Winsock2.h> -#ifndef IP_MULTICAST_TTL -#define IP_MULTICAST_TTL 3 -#endif -#include <stdio.h> -#include <stdarg.h> - -#include "rtp.h" -#include "console.h" - - -struct rtpheader RTPheader; -SOCKET rtpsocket; - -static char * -last_error_message(int err_code) -{ - char *msg; - void *p_msg_buf; - FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER, - (void *) 0, - (DWORD) err_code, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR) & p_msg_buf, 0, NULL); - msg = strdup(p_msg_buf); - LocalFree(p_msg_buf); - return msg; -} - -static int -print_socket_error(int error) -{ - char *err_txt = last_error_message(error); - error_printf("error %d\n%s\n", error, err_txt); - free(err_txt); - return error; -} - -static int -on_socket_error(SOCKET s) -{ - int error = WSAGetLastError(); - print_socket_error(error); - if (s != INVALID_SOCKET) { - closesocket(s); - } - return error; -} - -/* create a sender socket. */ -int -rtp_socket(char const *address, unsigned int port, unsigned int TTL) -{ - char const True = 1; - char const *c = ""; - int error; - UINT ip; - PHOSTENT host; - SOCKET s; - SOCKADDR_IN source, dest; - - source.sin_family = AF_INET; - source.sin_addr.s_addr = htonl(INADDR_ANY); - source.sin_port = htons(0); - - dest.sin_family = AF_INET; - dest.sin_addr.s_addr = inet_addr(address); - - if (!strcmp(address, "255.255.255.255")) { - } - else if (dest.sin_addr.s_addr == INADDR_NONE) { - host = gethostbyname(address); - - if (host) { - dest.sin_addr = *(PIN_ADDR) host->h_addr; - } - else { - error_printf("Unknown host %s\r\n", address); - return 1; - } - } - - dest.sin_port = htons((u_short) port); - - ip = ntohl(dest.sin_addr.s_addr); - - if (IN_CLASSA(ip)) - c = "class A"; - if (IN_CLASSB(ip)) - c = "class B"; - if (IN_CLASSC(ip)) - c = "class C"; - if (IN_CLASSD(ip)) - c = "class D"; - if (ip == INADDR_LOOPBACK) - c = "loopback"; - if (ip == INADDR_BROADCAST) - c = "broadcast"; - - s = socket(AF_INET, SOCK_DGRAM, PF_UNSPEC); - if (s == INVALID_SOCKET) { - error_printf("socket () "); - return on_socket_error(s); - } - error = setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &True, sizeof(True)); - error = bind(s, (struct sockaddr *) &source, sizeof(source)); - if (error == SOCKET_ERROR) { - error_printf("bind () "); - return on_socket_error(s); - } - if (ip == INADDR_BROADCAST) { - error_printf("broadcast %s:%u %s\r\n", inet_ntoa(dest.sin_addr), ntohs(dest.sin_port), c); - error = setsockopt(s, SOL_SOCKET, SO_BROADCAST, &True, sizeof(True)); - if (error == SOCKET_ERROR) { - error_printf("setsockopt (%u, SOL_SOCKET, SO_BROADCAST, ...) ", s); - return on_socket_error(s); - } - } - if (IN_CLASSD(ip)) { - error_printf("multicast %s:%u %s\r\n", inet_ntoa(dest.sin_addr), ntohs(dest.sin_port), c); - error = setsockopt(s, IPPROTO_IP, IP_MULTICAST_TTL, (const char *) &TTL, sizeof(TTL)); - if (error == SOCKET_ERROR) { - error_printf("setsockopt (%u, IPPROTO_IP, IP_MULTICAST_TTL, ...) ", s); - return on_socket_error(s); - } - } - error = connect(s, (PSOCKADDR) & dest, sizeof(SOCKADDR_IN)); - if (error == SOCKET_ERROR) { - error_printf("connect: "); - return on_socket_error(s); - } - rtpsocket = s; - return 0; -} - -static void -rtp_initialization_extra(void) -{ - WSADATA wsaData; - int rc = WSAStartup(MAKEWORD(2, 2), &wsaData); - if (rc != 0) { - print_socket_error(rc); - } -} - -static void -rtp_close_extra(void) -{ - WSACleanup(); -} - -#endif - - -static int -rtp_send(unsigned char const *data, int len) -{ - SOCKET s = rtpsocket; - struct rtpheader *foo = &RTPheader; - char *buffer = malloc(len + sizeof(struct rtpheader)); - int *cast = (int *) foo; - int *outcast = (int *) buffer; - int count, size; - - outcast[0] = htonl(cast[0]); - outcast[1] = htonl(cast[1]); - outcast[2] = htonl(cast[2]); - outcast[3] = htonl(cast[3]); - memmove(buffer + sizeof(struct rtpheader), data, len); - size = len + sizeof(*foo); - count = send(s, buffer, size, 0); - free(buffer); - - return count != size; -} - -void -rtp_output(unsigned char const *mp3buffer, int mp3size) -{ - rtp_send(mp3buffer, mp3size); - RTPheader.timestamp += 5; - RTPheader.b.sequence++; -} - -void -rtp_initialization(void) -{ - struct rtpheader *foo = &RTPheader; - foo->b.v = 2; - foo->b.p = 0; - foo->b.x = 0; - foo->b.cc = 0; - foo->b.m = 0; - foo->b.pt = 14; /* MPEG Audio */ - foo->b.sequence = rand() & 65535; - foo->timestamp = rand(); - foo->ssrc = rand(); - foo->iAudioHeader = 0; - rtp_initialization_extra(); -} - -void -rtp_deinitialization(void) -{ - rtp_close_extra(); -} diff --git a/platform/win32/msvc/external/lame/frontend/rtp.h b/platform/win32/msvc/external/lame/frontend/rtp.h deleted file mode 100644 index 9100feb1937..00000000000 --- a/platform/win32/msvc/external/lame/frontend/rtp.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * rtp socket communication include file - * - * initially contributed by Felix von Leitner - * - * Copyright (c) 2000 Mark Taylor - * 2010 Robert Hegemann - * - * 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 LAME_RTP_H -#define LAME_RTP_H - -#if defined(__cplusplus) -extern "C" { -#endif - - struct RtpStruct; - typedef struct RtpStruct *RtpHandle; - - void rtp_initialization(void); - void rtp_deinitialization(void); - int rtp_socket( /*RtpHandle rtp, */ char const *Address, unsigned int port, - unsigned int TTL); - void rtp_output( /*RtpHandle rtp, */ unsigned char const *mp3buffer, int mp3size); - -#if defined(__cplusplus) -} -#endif -#endif diff --git a/platform/win32/msvc/external/lame/frontend/timestatus.c b/platform/win32/msvc/external/lame/frontend/timestatus.c deleted file mode 100644 index ddfb6255aa0..00000000000 --- a/platform/win32/msvc/external/lame/frontend/timestatus.c +++ /dev/null @@ -1,438 +0,0 @@ -/* - * time status related function source file - * - * Copyright (c) 1999 Mark Taylor - * 2010 Robert Hegemann - * - * 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. - */ - -/* $Id: timestatus.c,v 1.60 2011/05/07 16:05:17 rbrito Exp $ */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - - -#if 1 -# define SPEED_CHAR "x" /* character x */ -# define SPEED_MULT 1. -#else -# define SPEED_CHAR "%%" -# define SPEED_MULT 100. -#endif - -#include <assert.h> -#include <time.h> -#include <string.h> -#include <stdlib.h> - -#include "lame.h" -#include "main.h" -#include "lametime.h" -#include "timestatus.h" -#include "brhist.h" -#include "console.h" - -#ifdef WITH_DMALLOC -#include <dmalloc.h> -#endif - -typedef struct time_status_struct { - double last_time; /* result of last call to clock */ - double elapsed_time; /* total time */ - double estimated_time; /* estimated total duration time [s] */ - double speed_index; /* speed relative to realtime coding [100%] */ -} timestatus_t; - -static struct EncoderProgress { - timestatus_t real_time; - timestatus_t proc_time; - double last_time; - int last_frame_num; - int time_status_init; -} global_encoder_progress; - - -/* - * Calculates from the input (see below) the following values: - * - total estimated time - * - a speed index - */ - -static void -ts_calc_times(timestatus_t * const tstime, /* tstime->elapsed_time: elapsed time */ - const int sample_freq, /* sample frequency [Hz/kHz] */ - const int frameNum, /* Number of the current Frame */ - const int totalframes, /* total umber of Frames */ - const int framesize) -{ /* Size of a frame [bps/kbps] */ - assert(sample_freq >= 8000 && sample_freq <= 48000); - - if (frameNum > 0 && tstime->elapsed_time > 0) { - tstime->estimated_time = tstime->elapsed_time * totalframes / frameNum; - tstime->speed_index = framesize * frameNum / (sample_freq * tstime->elapsed_time); - } - else { - tstime->estimated_time = 0.; - tstime->speed_index = 0.; - } -} - -/* Decomposes a given number of seconds into a easy to read hh:mm:ss format - * padded with an additional character - */ - -static void -ts_time_decompose(const double x, const char padded_char) -{ - const unsigned long time_in_sec = (unsigned long)x; - const unsigned long hour = time_in_sec / 3600; - const unsigned int min = time_in_sec / 60 % 60; - const unsigned int sec = time_in_sec % 60; - - if (hour == 0) - console_printf(" %2u:%02u%c", min, sec, padded_char); - else if (hour < 100) - console_printf("%2lu:%02u:%02u%c", hour, min, sec, padded_char); - else - console_printf("%6lu h%c", hour, padded_char); -} - -static void -timestatus(const lame_global_flags * const gfp) -{ - timestatus_t* real_time = &global_encoder_progress.real_time; - timestatus_t* proc_time = &global_encoder_progress.proc_time; - int percent; - double tmx, delta; - int samp_rate = lame_get_out_samplerate(gfp) - , frameNum = lame_get_frameNum(gfp) - , totalframes = lame_get_totalframes(gfp) - , framesize = lame_get_framesize(gfp) - ; - - if (totalframes < frameNum) { - totalframes = frameNum; - } - if (global_encoder_progress.time_status_init == 0) { - real_time->last_time = GetRealTime(); - proc_time->last_time = GetCPUTime(); - real_time->elapsed_time = 0; - proc_time->elapsed_time = 0; - } - - /* we need rollover protection for GetCPUTime, and maybe GetRealTime(): */ - tmx = GetRealTime(); - delta = tmx - real_time->last_time; - if (delta < 0) - delta = 0; /* ignore, clock has rolled over */ - real_time->elapsed_time += delta; - real_time->last_time = tmx; - - - tmx = GetCPUTime(); - delta = tmx - proc_time->last_time; - if (delta < 0) - delta = 0; /* ignore, clock has rolled over */ - proc_time->elapsed_time += delta; - proc_time->last_time = tmx; - - if (global_encoder_progress.time_status_init == 0) { - console_printf("\r" - " Frame | CPU time/estim | REAL time/estim | play/CPU | ETA \n" - " 0/ ( 0%%)| 0:00/ : | 0:00/ : | " - SPEED_CHAR "| : \r" - /* , Console_IO.str_clreoln, Console_IO.str_clreoln */ ); - global_encoder_progress.time_status_init = 1; - return; - } - - ts_calc_times(real_time, samp_rate, frameNum, totalframes, framesize); - ts_calc_times(proc_time, samp_rate, frameNum, totalframes, framesize); - - if (frameNum < totalframes) { - percent = (int) (100. * frameNum / totalframes + 0.5); - } - else { - percent = 100; - } - - console_printf("\r%6i/%-6i", frameNum, totalframes); - console_printf(percent < 100 ? " (%2d%%)|" : "(%3.3d%%)|", percent); - ts_time_decompose(proc_time->elapsed_time, '/'); - ts_time_decompose(proc_time->estimated_time, '|'); - ts_time_decompose(real_time->elapsed_time, '/'); - ts_time_decompose(real_time->estimated_time, '|'); - console_printf(proc_time->speed_index <= 1. ? - "%9.4f" SPEED_CHAR "|" : "%#9.5g" SPEED_CHAR "|", - SPEED_MULT * proc_time->speed_index); - ts_time_decompose((real_time->estimated_time - real_time->elapsed_time), ' '); -} - -static void -timestatus_finish(void) -{ - console_printf("\n"); -} - - -static void -brhist_init_package(lame_global_flags const* gf) -{ - if (global_ui_config.brhist) { - if (brhist_init(gf, lame_get_VBR_min_bitrate_kbps(gf), lame_get_VBR_max_bitrate_kbps(gf))) { - /* fail to initialize */ - global_ui_config.brhist = 0; - } - } - else { - brhist_init(gf, 128, 128); /* Dirty hack */ - } -} - - -void -encoder_progress_begin( lame_global_flags const* gf - , char const* inPath - , char const* outPath - ) -{ - brhist_init_package(gf); - global_encoder_progress.time_status_init = 0; - global_encoder_progress.last_time = 0; - global_encoder_progress.last_frame_num = 0; - if (global_ui_config.silent < 9) { - char* i_file = 0; - char* o_file = 0; -#if defined( _WIN32 ) && !defined(__MINGW32__) - inPath = i_file = utf8ToLocal8Bit(inPath); - outPath = o_file = utf8ToConsole8Bit(outPath); -#endif - lame_print_config(gf); /* print useful information about options being used */ - - console_printf("Encoding %s%s to %s\n", - strcmp(inPath, "-") ? inPath : "<stdin>", - strlen(inPath) + strlen(outPath) < 66 ? "" : "\n ", - strcmp(outPath, "-") ? outPath : "<stdout>"); - - free(i_file); - free(o_file); - - console_printf("Encoding as %g kHz ", 1.e-3 * lame_get_out_samplerate(gf)); - - { - static const char *mode_names[2][4] = { - {"stereo", "j-stereo", "dual-ch", "single-ch"}, - {"stereo", "force-ms", "dual-ch", "single-ch"} - }; - switch (lame_get_VBR(gf)) { - case vbr_rh: - console_printf("%s MPEG-%u%s Layer III VBR(q=%g) qval=%i\n", - mode_names[lame_get_force_ms(gf)][lame_get_mode(gf)], - 2 - lame_get_version(gf), - lame_get_out_samplerate(gf) < 16000 ? ".5" : "", - lame_get_VBR_quality(gf), - lame_get_quality(gf)); - break; - case vbr_mt: - case vbr_mtrh: - console_printf("%s MPEG-%u%s Layer III VBR(q=%g)\n", - mode_names[lame_get_force_ms(gf)][lame_get_mode(gf)], - 2 - lame_get_version(gf), - lame_get_out_samplerate(gf) < 16000 ? ".5" : "", - lame_get_VBR_quality(gf)); - break; - case vbr_abr: - console_printf("%s MPEG-%u%s Layer III (%gx) average %d kbps qval=%i\n", - mode_names[lame_get_force_ms(gf)][lame_get_mode(gf)], - 2 - lame_get_version(gf), - lame_get_out_samplerate(gf) < 16000 ? ".5" : "", - 0.1 * (int) (10. * lame_get_compression_ratio(gf) + 0.5), - lame_get_VBR_mean_bitrate_kbps(gf), - lame_get_quality(gf)); - break; - default: - console_printf("%s MPEG-%u%s Layer III (%gx) %3d kbps qval=%i\n", - mode_names[lame_get_force_ms(gf)][lame_get_mode(gf)], - 2 - lame_get_version(gf), - lame_get_out_samplerate(gf) < 16000 ? ".5" : "", - 0.1 * (int) (10. * lame_get_compression_ratio(gf) + 0.5), - lame_get_brate(gf), - lame_get_quality(gf)); - break; - } - } - - if (global_ui_config.silent <= -10) { - lame_print_internals(gf); - } - } -} - -void -encoder_progress( lame_global_flags const* gf ) -{ - if (global_ui_config.silent <= 0) { - int const frames = lame_get_frameNum(gf); - int const frames_diff = frames - global_encoder_progress.last_frame_num; - if (global_ui_config.update_interval <= 0) { /* most likely --disptime x not used */ - if (frames_diff < 100 && frames_diff != 0) { /* true, most of the time */ - return; - } - global_encoder_progress.last_frame_num = (frames/100)*100; - } - else { - if (frames != 0 && frames != 9) { - double const act = GetRealTime(); - double const dif = act - global_encoder_progress.last_time; - if (dif >= 0 && dif < global_ui_config.update_interval) { - return; - } - } - global_encoder_progress.last_time = GetRealTime(); /* from now! disp_time seconds */ - } - if (global_ui_config.brhist) { - brhist_jump_back(); - } - timestatus(gf); - if (global_ui_config.brhist) { - brhist_disp(gf); - } - console_flush(); - } -} - -void -encoder_progress_end( lame_global_flags const* gf ) -{ - if (global_ui_config.silent <= 0) { - if (global_ui_config.brhist) { - brhist_jump_back(); - } - timestatus(gf); - if (global_ui_config.brhist) { - brhist_disp(gf); - } - timestatus_finish(); - } -} - - -/* these functions are used in get_audio.c */ -static struct DecoderProgress { - int last_mode_ext; - int frames_total; - int frame_ctr; - int framesize; - unsigned long samples; -} global_decoder_progress; - -static -unsigned long calcEndPadding(unsigned long samples, int pcm_samples_per_frame) -{ - unsigned long end_padding; - samples += 576; - end_padding = pcm_samples_per_frame - (samples % pcm_samples_per_frame); - if (end_padding < 576) - end_padding += pcm_samples_per_frame; - return end_padding; -} - -static -unsigned long calcNumBlocks(unsigned long samples, int pcm_samples_per_frame) -{ - unsigned long end_padding; - samples += 576; - end_padding = pcm_samples_per_frame - (samples % pcm_samples_per_frame); - if (end_padding < 576) - end_padding += pcm_samples_per_frame; - return (samples + end_padding) / pcm_samples_per_frame; -} - -DecoderProgress -decoder_progress_init(unsigned long n, int framesize) -{ - DecoderProgress dp = &global_decoder_progress; - dp->last_mode_ext =0; - dp->frames_total = 0; - dp->frame_ctr = 0; - dp->framesize = framesize; - dp->samples = 0; - if (n != (0ul-1ul)) { - if (framesize == 576 || framesize == 1152) { - dp->frames_total = calcNumBlocks(n, framesize); - dp->samples = 576 + calcEndPadding(n, framesize); - } - else if (framesize > 0) { - dp->frames_total = n / framesize; - } - else { - dp->frames_total = n; - } - } - return dp; -} - -static void -addSamples(DecoderProgress dp, int iread) -{ - dp->samples += iread; - dp->frame_ctr += dp->samples / dp->framesize; - dp->samples %= dp->framesize; - if (dp->frames_total < dp->frame_ctr) { - dp->frames_total = dp->frame_ctr; - } -} - -void -decoder_progress(DecoderProgress dp, const mp3data_struct * mp3data, int iread) -{ - addSamples(dp, iread); - - console_printf("\rFrame#%6i/%-6i %3i kbps", - dp->frame_ctr, dp->frames_total, mp3data->bitrate); - - /* Programmed with a single frame hold delay */ - /* Attention: static data */ - - /* MP2 Playback is still buggy. */ - /* "'00' subbands 4-31 in intensity_stereo, bound==4" */ - /* is this really intensity_stereo or is it MS stereo? */ - - if (mp3data->mode == JOINT_STEREO) { - int curr = mp3data->mode_ext; - int last = dp->last_mode_ext; - console_printf(" %s %c", - curr & 2 ? last & 2 ? " MS " : "LMSR" : last & 2 ? "LMSR" : "L R", - curr & 1 ? last & 1 ? 'I' : 'i' : last & 1 ? 'i' : ' '); - dp->last_mode_ext = curr; - } - else { - console_printf(" "); - dp->last_mode_ext = 0; - } -/* console_printf ("%s", Console_IO.str_clreoln ); */ - console_printf(" \b\b\b\b\b\b\b\b"); - console_flush(); -} - -void -decoder_progress_finish(DecoderProgress dp) -{ - (void) dp; - console_printf("\n"); -} diff --git a/platform/win32/msvc/external/lame/frontend/timestatus.h b/platform/win32/msvc/external/lame/frontend/timestatus.h deleted file mode 100644 index f5d343ba64d..00000000000 --- a/platform/win32/msvc/external/lame/frontend/timestatus.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * time status related function include file - * - * Copyright (c) 1999 Mark Taylor - * - * 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 LAME_TIMESTATUS_H -#define LAME_TIMESTATUS_H - -#if defined(__cplusplus) -extern "C" { -#endif - -void encoder_progress_begin( lame_global_flags const* gfp - , char const* inpath - , char const* outpath ); -void encoder_progress( lame_global_flags const* gfp ); -void encoder_progress_end(lame_global_flags const* gfp); - -struct DecoderProgress; -typedef struct DecoderProgress* DecoderProgress; - -DecoderProgress decoder_progress_init(unsigned long n, int framesize); -void decoder_progress(DecoderProgress dp, const mp3data_struct *, int iread); -void decoder_progress_finish(DecoderProgress dp); - -#if defined(__cplusplus) -} -#endif - -#endif /* LAME_TIMESTATUS_H */ diff --git a/platform/win32/msvc/external/lame/include/Makefile.am b/platform/win32/msvc/external/lame/include/Makefile.am deleted file mode 100644 index e630495dd62..00000000000 --- a/platform/win32/msvc/external/lame/include/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -## $Id: Makefile.am,v 1.4 2010/03/14 17:23:35 robert Exp $ - -include $(top_srcdir)/Makefile.am.global - -pkginclude_HEADERS = lame.h - -EXTRA_DIST = lame.def libmp3lame.sym - diff --git a/platform/win32/msvc/external/lame/include/Makefile.in b/platform/win32/msvc/external/lame/include/Makefile.in deleted file mode 100644 index 0e6fd20d660..00000000000 --- a/platform/win32/msvc/external/lame/include/Makefile.in +++ /dev/null @@ -1,484 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# global section for every Makefile.am - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -DIST_COMMON = $(pkginclude_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(top_srcdir)/Makefile.am.global -subdir = include -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__installdirs = "$(DESTDIR)$(pkgincludedir)" -HEADERS = $(pkginclude_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CONFIG_DEFS = @CONFIG_DEFS@ -CONFIG_MATH_LIB = @CONFIG_MATH_LIB@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CPUCCODE = @CPUCCODE@ -CPUTYPE = @CPUTYPE@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ -FRONTEND_LDADD = @FRONTEND_LDADD@ -FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ -GREP = @GREP@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_CONFIG = @GTK_CONFIG@ -GTK_LIBS = @GTK_LIBS@ -INCLUDES = @INCLUDES@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDADD = @LDADD@ -LDFLAGS = @LDFLAGS@ -LIBICONV = @LIBICONV@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ -LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBICONV = @LTLIBICONV@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEDEP = @MAKEDEP@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NASM = @NASM@ -NASM_FORMAT = @NASM_FORMAT@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -RM_F = @RM_F@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ -SNDFILE_LIBS = @SNDFILE_LIBS@ -STRIP = @STRIP@ -U = @U@ -VERSION = @VERSION@ -WITH_FRONTEND = @WITH_FRONTEND@ -WITH_MP3RTP = @WITH_MP3RTP@ -WITH_MP3X = @WITH_MP3X@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = 1.11 foreign $(top_srcdir)/ansi2knr -pkginclude_HEADERS = lame.h -EXTRA_DIST = lame.def libmp3lame.sym -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign include/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-pkgincludeHEADERS: $(pkginclude_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" - @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ - done - -uninstall-pkgincludeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(pkgincludedir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(pkgincludedir)" && rm -f $$files - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(pkgincludedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-pkgincludeHEADERS - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-pkgincludeHEADERS - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool ctags distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-pkgincludeHEADERS install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pkgincludeHEADERS - - -# end global section - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/platform/win32/msvc/external/lame/include/lame.h b/platform/win32/msvc/external/lame/include/lame.h deleted file mode 100644 index 791d4918c18..00000000000 --- a/platform/win32/msvc/external/lame/include/lame.h +++ /dev/null @@ -1,1323 +0,0 @@ -/* - * Interface to MP3 LAME encoding engine - * - * Copyright (c) 1999 Mark Taylor - * - * 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. - */ - -/* $Id: lame.h,v 1.189.2.1 2012/01/08 23:49:58 robert Exp $ */ - -#ifndef LAME_LAME_H -#define LAME_LAME_H - -/* for size_t typedef */ -#include <stddef.h> -/* for va_list typedef */ -#include <stdarg.h> -/* for FILE typedef, TODO: remove when removing lame_mp3_tags_fid */ -#include <stdio.h> - -#if defined(__cplusplus) -extern "C" { -#endif - -typedef void (*lame_report_function)(const char *format, va_list ap); - -#if defined(WIN32) || defined(_WIN32) -#undef CDECL -#define CDECL __cdecl -#else -#define CDECL -#endif - -#define DEPRECATED_OR_OBSOLETE_CODE_REMOVED 1 - -typedef enum vbr_mode_e { - vbr_off=0, - vbr_mt, /* obsolete, same as vbr_mtrh */ - vbr_rh, - vbr_abr, - vbr_mtrh, - vbr_max_indicator, /* Don't use this! It's used for sanity checks. */ - vbr_default=vbr_mtrh /* change this to change the default VBR mode of LAME */ -} vbr_mode; - - -/* MPEG modes */ -typedef enum MPEG_mode_e { - STEREO = 0, - JOINT_STEREO, - DUAL_CHANNEL, /* LAME doesn't supports this! */ - MONO, - NOT_SET, - MAX_INDICATOR /* Don't use this! It's used for sanity checks. */ -} MPEG_mode; - -/* Padding types */ -typedef enum Padding_type_e { - PAD_NO = 0, - PAD_ALL, - PAD_ADJUST, - PAD_MAX_INDICATOR /* Don't use this! It's used for sanity checks. */ -} Padding_type; - - - -/*presets*/ -typedef enum preset_mode_e { - /*values from 8 to 320 should be reserved for abr bitrates*/ - /*for abr I'd suggest to directly use the targeted bitrate as a value*/ - ABR_8 = 8, - ABR_320 = 320, - - V9 = 410, /*Vx to match Lame and VBR_xx to match FhG*/ - VBR_10 = 410, - V8 = 420, - VBR_20 = 420, - V7 = 430, - VBR_30 = 430, - V6 = 440, - VBR_40 = 440, - V5 = 450, - VBR_50 = 450, - V4 = 460, - VBR_60 = 460, - V3 = 470, - VBR_70 = 470, - V2 = 480, - VBR_80 = 480, - V1 = 490, - VBR_90 = 490, - V0 = 500, - VBR_100 = 500, - - - - /*still there for compatibility*/ - R3MIX = 1000, - STANDARD = 1001, - EXTREME = 1002, - INSANE = 1003, - STANDARD_FAST = 1004, - EXTREME_FAST = 1005, - MEDIUM = 1006, - MEDIUM_FAST = 1007 -} preset_mode; - - -/*asm optimizations*/ -typedef enum asm_optimizations_e { - MMX = 1, - AMD_3DNOW = 2, - SSE = 3 -} asm_optimizations; - - -/* psychoacoustic model */ -typedef enum Psy_model_e { - PSY_GPSYCHO = 1, - PSY_NSPSYTUNE = 2 -} Psy_model; - - -/* buffer considerations */ -typedef enum buffer_constraint_e { - MDB_DEFAULT=0, - MDB_STRICT_ISO=1, - MDB_MAXIMUM=2 -} buffer_constraint; - - -struct lame_global_struct; -typedef struct lame_global_struct lame_global_flags; -typedef lame_global_flags *lame_t; - - - - -/*********************************************************************** - * - * The LAME API - * These functions should be called, in this order, for each - * MP3 file to be encoded. See the file "API" for more documentation - * - ***********************************************************************/ - - -/* - * REQUIRED: - * initialize the encoder. sets default for all encoder parameters, - * returns NULL if some malloc()'s failed - * otherwise returns pointer to structure needed for all future - * API calls. - */ -lame_global_flags * CDECL lame_init(void); -#if DEPRECATED_OR_OBSOLETE_CODE_REMOVED -#else -/* obsolete version */ -int CDECL lame_init_old(lame_global_flags *); -#endif - -/* - * OPTIONAL: - * set as needed to override defaults - */ - -/******************************************************************** - * input stream description - ***********************************************************************/ -/* number of samples. default = 2^32-1 */ -int CDECL lame_set_num_samples(lame_global_flags *, unsigned long); -unsigned long CDECL lame_get_num_samples(const lame_global_flags *); - -/* input sample rate in Hz. default = 44100hz */ -int CDECL lame_set_in_samplerate(lame_global_flags *, int); -int CDECL lame_get_in_samplerate(const lame_global_flags *); - -/* number of channels in input stream. default=2 */ -int CDECL lame_set_num_channels(lame_global_flags *, int); -int CDECL lame_get_num_channels(const lame_global_flags *); - -/* - scale the input by this amount before encoding. default=1 - (not used by decoding routines) -*/ -int CDECL lame_set_scale(lame_global_flags *, float); -float CDECL lame_get_scale(const lame_global_flags *); - -/* - scale the channel 0 (left) input by this amount before encoding. default=1 - (not used by decoding routines) -*/ -int CDECL lame_set_scale_left(lame_global_flags *, float); -float CDECL lame_get_scale_left(const lame_global_flags *); - -/* - scale the channel 1 (right) input by this amount before encoding. default=1 - (not used by decoding routines) -*/ -int CDECL lame_set_scale_right(lame_global_flags *, float); -float CDECL lame_get_scale_right(const lame_global_flags *); - -/* - output sample rate in Hz. default = 0, which means LAME picks best value - based on the amount of compression. MPEG only allows: - MPEG1 32, 44.1, 48khz - MPEG2 16, 22.05, 24 - MPEG2.5 8, 11.025, 12 - (not used by decoding routines) -*/ -int CDECL lame_set_out_samplerate(lame_global_flags *, int); -int CDECL lame_get_out_samplerate(const lame_global_flags *); - - -/******************************************************************** - * general control parameters - ***********************************************************************/ -/* 1=cause LAME to collect data for an MP3 frame analyzer. default=0 */ -int CDECL lame_set_analysis(lame_global_flags *, int); -int CDECL lame_get_analysis(const lame_global_flags *); - -/* - 1 = write a Xing VBR header frame. - default = 1 - this variable must have been added by a Hungarian notation Windows programmer :-) -*/ -int CDECL lame_set_bWriteVbrTag(lame_global_flags *, int); -int CDECL lame_get_bWriteVbrTag(const lame_global_flags *); - -/* 1=decode only. use lame/mpglib to convert mp3/ogg to wav. default=0 */ -int CDECL lame_set_decode_only(lame_global_flags *, int); -int CDECL lame_get_decode_only(const lame_global_flags *); - -#if DEPRECATED_OR_OBSOLETE_CODE_REMOVED -#else -/* 1=encode a Vorbis .ogg file. default=0 */ -/* DEPRECATED */ -int CDECL lame_set_ogg(lame_global_flags *, int); -int CDECL lame_get_ogg(const lame_global_flags *); -#endif - -/* - internal algorithm selection. True quality is determined by the bitrate - but this variable will effect quality by selecting expensive or cheap algorithms. - quality=0..9. 0=best (very slow). 9=worst. - recommended: 2 near-best quality, not too slow - 5 good quality, fast - 7 ok quality, really fast -*/ -int CDECL lame_set_quality(lame_global_flags *, int); -int CDECL lame_get_quality(const lame_global_flags *); - -/* - mode = 0,1,2,3 = stereo, jstereo, dual channel (not supported), mono - default: lame picks based on compression ration and input channels -*/ -int CDECL lame_set_mode(lame_global_flags *, MPEG_mode); -MPEG_mode CDECL lame_get_mode(const lame_global_flags *); - -#if DEPRECATED_OR_OBSOLETE_CODE_REMOVED -#else -/* - mode_automs. Use a M/S mode with a switching threshold based on - compression ratio - DEPRECATED -*/ -int CDECL lame_set_mode_automs(lame_global_flags *, int); -int CDECL lame_get_mode_automs(const lame_global_flags *); -#endif - -/* - force_ms. Force M/S for all frames. For testing only. - default = 0 (disabled) -*/ -int CDECL lame_set_force_ms(lame_global_flags *, int); -int CDECL lame_get_force_ms(const lame_global_flags *); - -/* use free_format? default = 0 (disabled) */ -int CDECL lame_set_free_format(lame_global_flags *, int); -int CDECL lame_get_free_format(const lame_global_flags *); - -/* perform ReplayGain analysis? default = 0 (disabled) */ -int CDECL lame_set_findReplayGain(lame_global_flags *, int); -int CDECL lame_get_findReplayGain(const lame_global_flags *); - -/* decode on the fly. Search for the peak sample. If the ReplayGain - * analysis is enabled then perform the analysis on the decoded data - * stream. default = 0 (disabled) - * NOTE: if this option is set the build-in decoder should not be used */ -int CDECL lame_set_decode_on_the_fly(lame_global_flags *, int); -int CDECL lame_get_decode_on_the_fly(const lame_global_flags *); - -#if DEPRECATED_OR_OBSOLETE_CODE_REMOVED -#else -/* DEPRECATED: now does the same as lame_set_findReplayGain() - default = 0 (disabled) */ -int CDECL lame_set_ReplayGain_input(lame_global_flags *, int); -int CDECL lame_get_ReplayGain_input(const lame_global_flags *); - -/* DEPRECATED: now does the same as - lame_set_decode_on_the_fly() && lame_set_findReplayGain() - default = 0 (disabled) */ -int CDECL lame_set_ReplayGain_decode(lame_global_flags *, int); -int CDECL lame_get_ReplayGain_decode(const lame_global_flags *); - -/* DEPRECATED: now does the same as lame_set_decode_on_the_fly() - default = 0 (disabled) */ -int CDECL lame_set_findPeakSample(lame_global_flags *, int); -int CDECL lame_get_findPeakSample(const lame_global_flags *); -#endif - -/* counters for gapless encoding */ -int CDECL lame_set_nogap_total(lame_global_flags*, int); -int CDECL lame_get_nogap_total(const lame_global_flags*); - -int CDECL lame_set_nogap_currentindex(lame_global_flags* , int); -int CDECL lame_get_nogap_currentindex(const lame_global_flags*); - - -/* - * OPTIONAL: - * Set printf like error/debug/message reporting functions. - * The second argument has to be a pointer to a function which looks like - * void my_debugf(const char *format, va_list ap) - * { - * (void) vfprintf(stdout, format, ap); - * } - * If you use NULL as the value of the pointer in the set function, the - * lame buildin function will be used (prints to stderr). - * To quiet any output you have to replace the body of the example function - * with just "return;" and use it in the set function. - */ -int CDECL lame_set_errorf(lame_global_flags *, lame_report_function); -int CDECL lame_set_debugf(lame_global_flags *, lame_report_function); -int CDECL lame_set_msgf (lame_global_flags *, lame_report_function); - - - -/* set one of brate compression ratio. default is compression ratio of 11. */ -int CDECL lame_set_brate(lame_global_flags *, int); -int CDECL lame_get_brate(const lame_global_flags *); -int CDECL lame_set_compression_ratio(lame_global_flags *, float); -float CDECL lame_get_compression_ratio(const lame_global_flags *); - - -int CDECL lame_set_preset( lame_global_flags* gfp, int ); -int CDECL lame_set_asm_optimizations( lame_global_flags* gfp, int, int ); - - - -/******************************************************************** - * frame params - ***********************************************************************/ -/* mark as copyright. default=0 */ -int CDECL lame_set_copyright(lame_global_flags *, int); -int CDECL lame_get_copyright(const lame_global_flags *); - -/* mark as original. default=1 */ -int CDECL lame_set_original(lame_global_flags *, int); -int CDECL lame_get_original(const lame_global_flags *); - -/* error_protection. Use 2 bytes from each frame for CRC checksum. default=0 */ -int CDECL lame_set_error_protection(lame_global_flags *, int); -int CDECL lame_get_error_protection(const lame_global_flags *); - -#if DEPRECATED_OR_OBSOLETE_CODE_REMOVED -#else -/* padding_type. 0=pad no frames 1=pad all frames 2=adjust padding(default) */ -int CDECL lame_set_padding_type(lame_global_flags *, Padding_type); -Padding_type CDECL lame_get_padding_type(const lame_global_flags *); -#endif - -/* MP3 'private extension' bit Meaningless. default=0 */ -int CDECL lame_set_extension(lame_global_flags *, int); -int CDECL lame_get_extension(const lame_global_flags *); - -/* enforce strict ISO compliance. default=0 */ -int CDECL lame_set_strict_ISO(lame_global_flags *, int); -int CDECL lame_get_strict_ISO(const lame_global_flags *); - - -/******************************************************************** - * quantization/noise shaping - ***********************************************************************/ - -/* disable the bit reservoir. For testing only. default=0 */ -int CDECL lame_set_disable_reservoir(lame_global_flags *, int); -int CDECL lame_get_disable_reservoir(const lame_global_flags *); - -/* select a different "best quantization" function. default=0 */ -int CDECL lame_set_quant_comp(lame_global_flags *, int); -int CDECL lame_get_quant_comp(const lame_global_flags *); -int CDECL lame_set_quant_comp_short(lame_global_flags *, int); -int CDECL lame_get_quant_comp_short(const lame_global_flags *); - -int CDECL lame_set_experimentalX(lame_global_flags *, int); /* compatibility*/ -int CDECL lame_get_experimentalX(const lame_global_flags *); - -/* another experimental option. for testing only */ -int CDECL lame_set_experimentalY(lame_global_flags *, int); -int CDECL lame_get_experimentalY(const lame_global_flags *); - -/* another experimental option. for testing only */ -int CDECL lame_set_experimentalZ(lame_global_flags *, int); -int CDECL lame_get_experimentalZ(const lame_global_flags *); - -/* Naoki's psycho acoustic model. default=0 */ -int CDECL lame_set_exp_nspsytune(lame_global_flags *, int); -int CDECL lame_get_exp_nspsytune(const lame_global_flags *); - -void CDECL lame_set_msfix(lame_global_flags *, double); -float CDECL lame_get_msfix(const lame_global_flags *); - - -/******************************************************************** - * VBR control - ***********************************************************************/ -/* Types of VBR. default = vbr_off = CBR */ -int CDECL lame_set_VBR(lame_global_flags *, vbr_mode); -vbr_mode CDECL lame_get_VBR(const lame_global_flags *); - -/* VBR quality level. 0=highest 9=lowest */ -int CDECL lame_set_VBR_q(lame_global_flags *, int); -int CDECL lame_get_VBR_q(const lame_global_flags *); - -/* VBR quality level. 0=highest 9=lowest, Range [0,...,10[ */ -int CDECL lame_set_VBR_quality(lame_global_flags *, float); -float CDECL lame_get_VBR_quality(const lame_global_flags *); - -/* Ignored except for VBR=vbr_abr (ABR mode) */ -int CDECL lame_set_VBR_mean_bitrate_kbps(lame_global_flags *, int); -int CDECL lame_get_VBR_mean_bitrate_kbps(const lame_global_flags *); - -int CDECL lame_set_VBR_min_bitrate_kbps(lame_global_flags *, int); -int CDECL lame_get_VBR_min_bitrate_kbps(const lame_global_flags *); - -int CDECL lame_set_VBR_max_bitrate_kbps(lame_global_flags *, int); -int CDECL lame_get_VBR_max_bitrate_kbps(const lame_global_flags *); - -/* - 1=strictly enforce VBR_min_bitrate. Normally it will be violated for - analog silence -*/ -int CDECL lame_set_VBR_hard_min(lame_global_flags *, int); -int CDECL lame_get_VBR_hard_min(const lame_global_flags *); - -/* for preset */ -#if DEPRECATED_OR_OBSOLETE_CODE_REMOVED -#else -int CDECL lame_set_preset_expopts(lame_global_flags *, int); -#endif - -/******************************************************************** - * Filtering control - ***********************************************************************/ -/* freq in Hz to apply lowpass. Default = 0 = lame chooses. -1 = disabled */ -int CDECL lame_set_lowpassfreq(lame_global_flags *, int); -int CDECL lame_get_lowpassfreq(const lame_global_flags *); -/* width of transition band, in Hz. Default = one polyphase filter band */ -int CDECL lame_set_lowpasswidth(lame_global_flags *, int); -int CDECL lame_get_lowpasswidth(const lame_global_flags *); - -/* freq in Hz to apply highpass. Default = 0 = lame chooses. -1 = disabled */ -int CDECL lame_set_highpassfreq(lame_global_flags *, int); -int CDECL lame_get_highpassfreq(const lame_global_flags *); -/* width of transition band, in Hz. Default = one polyphase filter band */ -int CDECL lame_set_highpasswidth(lame_global_flags *, int); -int CDECL lame_get_highpasswidth(const lame_global_flags *); - - -/******************************************************************** - * psycho acoustics and other arguments which you should not change - * unless you know what you are doing - ***********************************************************************/ - -/* only use ATH for masking */ -int CDECL lame_set_ATHonly(lame_global_flags *, int); -int CDECL lame_get_ATHonly(const lame_global_flags *); - -/* only use ATH for short blocks */ -int CDECL lame_set_ATHshort(lame_global_flags *, int); -int CDECL lame_get_ATHshort(const lame_global_flags *); - -/* disable ATH */ -int CDECL lame_set_noATH(lame_global_flags *, int); -int CDECL lame_get_noATH(const lame_global_flags *); - -/* select ATH formula */ -int CDECL lame_set_ATHtype(lame_global_flags *, int); -int CDECL lame_get_ATHtype(const lame_global_flags *); - -/* lower ATH by this many db */ -int CDECL lame_set_ATHlower(lame_global_flags *, float); -float CDECL lame_get_ATHlower(const lame_global_flags *); - -/* select ATH adaptive adjustment type */ -int CDECL lame_set_athaa_type( lame_global_flags *, int); -int CDECL lame_get_athaa_type( const lame_global_flags *); - -#if DEPRECATED_OR_OBSOLETE_CODE_REMOVED -#else -/* select the loudness approximation used by the ATH adaptive auto-leveling */ -int CDECL lame_set_athaa_loudapprox( lame_global_flags *, int); -int CDECL lame_get_athaa_loudapprox( const lame_global_flags *); -#endif - -/* adjust (in dB) the point below which adaptive ATH level adjustment occurs */ -int CDECL lame_set_athaa_sensitivity( lame_global_flags *, float); -float CDECL lame_get_athaa_sensitivity( const lame_global_flags* ); - -#if DEPRECATED_OR_OBSOLETE_CODE_REMOVED -#else -/* OBSOLETE: predictability limit (ISO tonality formula) */ -int CDECL lame_set_cwlimit(lame_global_flags *, int); -int CDECL lame_get_cwlimit(const lame_global_flags *); -#endif - -/* - allow blocktypes to differ between channels? - default: 0 for jstereo, 1 for stereo -*/ -int CDECL lame_set_allow_diff_short(lame_global_flags *, int); -int CDECL lame_get_allow_diff_short(const lame_global_flags *); - -/* use temporal masking effect (default = 1) */ -int CDECL lame_set_useTemporal(lame_global_flags *, int); -int CDECL lame_get_useTemporal(const lame_global_flags *); - -/* use temporal masking effect (default = 1) */ -int CDECL lame_set_interChRatio(lame_global_flags *, float); -float CDECL lame_get_interChRatio(const lame_global_flags *); - -/* disable short blocks */ -int CDECL lame_set_no_short_blocks(lame_global_flags *, int); -int CDECL lame_get_no_short_blocks(const lame_global_flags *); - -/* force short blocks */ -int CDECL lame_set_force_short_blocks(lame_global_flags *, int); -int CDECL lame_get_force_short_blocks(const lame_global_flags *); - -/* Input PCM is emphased PCM (for instance from one of the rarely - emphased CDs), it is STRONGLY not recommended to use this, because - psycho does not take it into account, and last but not least many decoders - ignore these bits */ -int CDECL lame_set_emphasis(lame_global_flags *, int); -int CDECL lame_get_emphasis(const lame_global_flags *); - - - -/************************************************************************/ -/* internal variables, cannot be set... */ -/* provided because they may be of use to calling application */ -/************************************************************************/ -/* version 0=MPEG-2 1=MPEG-1 (2=MPEG-2.5) */ -int CDECL lame_get_version(const lame_global_flags *); - -/* encoder delay */ -int CDECL lame_get_encoder_delay(const lame_global_flags *); - -/* - padding appended to the input to make sure decoder can fully decode - all input. Note that this value can only be calculated during the - call to lame_encoder_flush(). Before lame_encoder_flush() has - been called, the value of encoder_padding = 0. -*/ -int CDECL lame_get_encoder_padding(const lame_global_flags *); - -/* size of MPEG frame */ -int CDECL lame_get_framesize(const lame_global_flags *); - -/* number of PCM samples buffered, but not yet encoded to mp3 data. */ -int CDECL lame_get_mf_samples_to_encode( const lame_global_flags* gfp ); - -/* - size (bytes) of mp3 data buffered, but not yet encoded. - this is the number of bytes which would be output by a call to - lame_encode_flush_nogap. NOTE: lame_encode_flush() will return - more bytes than this because it will encode the reamining buffered - PCM samples before flushing the mp3 buffers. -*/ -int CDECL lame_get_size_mp3buffer( const lame_global_flags* gfp ); - -/* number of frames encoded so far */ -int CDECL lame_get_frameNum(const lame_global_flags *); - -/* - lame's estimate of the total number of frames to be encoded - only valid if calling program set num_samples -*/ -int CDECL lame_get_totalframes(const lame_global_flags *); - -/* RadioGain value. Multiplied by 10 and rounded to the nearest. */ -int CDECL lame_get_RadioGain(const lame_global_flags *); - -/* AudiophileGain value. Multipled by 10 and rounded to the nearest. */ -int CDECL lame_get_AudiophileGain(const lame_global_flags *); - -/* the peak sample */ -float CDECL lame_get_PeakSample(const lame_global_flags *); - -/* Gain change required for preventing clipping. The value is correct only if - peak sample searching was enabled. If negative then the waveform - already does not clip. The value is multiplied by 10 and rounded up. */ -int CDECL lame_get_noclipGainChange(const lame_global_flags *); - -/* user-specified scale factor required for preventing clipping. Value is - correct only if peak sample searching was enabled and no user-specified - scaling was performed. If negative then either the waveform already does - not clip or the value cannot be determined */ -float CDECL lame_get_noclipScale(const lame_global_flags *); - - - - - - - -/* - * REQUIRED: - * sets more internal configuration based on data provided above. - * returns -1 if something failed. - */ -int CDECL lame_init_params(lame_global_flags *); - - -/* - * OPTIONAL: - * get the version number, in a string. of the form: - * "3.63 (beta)" or just "3.63". - */ -const char* CDECL get_lame_version ( void ); -const char* CDECL get_lame_short_version ( void ); -const char* CDECL get_lame_very_short_version ( void ); -const char* CDECL get_psy_version ( void ); -const char* CDECL get_lame_url ( void ); -const char* CDECL get_lame_os_bitness ( void ); - -/* - * OPTIONAL: - * get the version numbers in numerical form. - */ -typedef struct { - /* generic LAME version */ - int major; - int minor; - int alpha; /* 0 if not an alpha version */ - int beta; /* 0 if not a beta version */ - - /* version of the psy model */ - int psy_major; - int psy_minor; - int psy_alpha; /* 0 if not an alpha version */ - int psy_beta; /* 0 if not a beta version */ - - /* compile time features */ - const char *features; /* Don't make assumptions about the contents! */ -} lame_version_t; -void CDECL get_lame_version_numerical(lame_version_t *); - - -/* - * OPTIONAL: - * print internal lame configuration to message handler - */ -void CDECL lame_print_config(const lame_global_flags* gfp); - -void CDECL lame_print_internals( const lame_global_flags *gfp); - - -/* - * input pcm data, output (maybe) mp3 frames. - * This routine handles all buffering, resampling and filtering for you. - * - * return code number of bytes output in mp3buf. Can be 0 - * -1: mp3buf was too small - * -2: malloc() problem - * -3: lame_init_params() not called - * -4: psycho acoustic problems - * - * The required mp3buf_size can be computed from num_samples, - * samplerate and encoding rate, but here is a worst case estimate: - * - * mp3buf_size in bytes = 1.25*num_samples + 7200 - * - * I think a tighter bound could be: (mt, March 2000) - * MPEG1: - * num_samples*(bitrate/8)/samplerate + 4*1152*(bitrate/8)/samplerate + 512 - * MPEG2: - * num_samples*(bitrate/8)/samplerate + 4*576*(bitrate/8)/samplerate + 256 - * - * but test first if you use that! - * - * set mp3buf_size = 0 and LAME will not check if mp3buf_size is - * large enough. - * - * NOTE: - * if gfp->num_channels=2, but gfp->mode = 3 (mono), the L & R channels - * will be averaged into the L channel before encoding only the L channel - * This will overwrite the data in buffer_l[] and buffer_r[]. - * -*/ -int CDECL lame_encode_buffer ( - lame_global_flags* gfp, /* global context handle */ - const short int buffer_l [], /* PCM data for left channel */ - const short int buffer_r [], /* PCM data for right channel */ - const int nsamples, /* number of samples per channel */ - unsigned char* mp3buf, /* pointer to encoded MP3 stream */ - const int mp3buf_size ); /* number of valid octets in this - stream */ - -/* - * as above, but input has L & R channel data interleaved. - * NOTE: - * num_samples = number of samples in the L (or R) - * channel, not the total number of samples in pcm[] - */ -int CDECL lame_encode_buffer_interleaved( - lame_global_flags* gfp, /* global context handlei */ - short int pcm[], /* PCM data for left and right - channel, interleaved */ - int num_samples, /* number of samples per channel, - _not_ number of samples in - pcm[] */ - unsigned char* mp3buf, /* pointer to encoded MP3 stream */ - int mp3buf_size ); /* number of valid octets in this - stream */ - - -/* as lame_encode_buffer, but for 'float's. - * !! NOTE: !! data must still be scaled to be in the same range as - * short int, +/- 32768 - */ -int CDECL lame_encode_buffer_float( - lame_global_flags* gfp, /* global context handle */ - const float pcm_l [], /* PCM data for left channel */ - const float pcm_r [], /* PCM data for right channel */ - const int nsamples, /* number of samples per channel */ - unsigned char* mp3buf, /* pointer to encoded MP3 stream */ - const int mp3buf_size ); /* number of valid octets in this - stream */ - -/* as lame_encode_buffer, but for 'float's. - * !! NOTE: !! data must be scaled to +/- 1 full scale - */ -int CDECL lame_encode_buffer_ieee_float( - lame_t gfp, - const float pcm_l [], /* PCM data for left channel */ - const float pcm_r [], /* PCM data for right channel */ - const int nsamples, - unsigned char * mp3buf, - const int mp3buf_size); -int CDECL lame_encode_buffer_interleaved_ieee_float( - lame_t gfp, - const float pcm[], /* PCM data for left and right - channel, interleaved */ - const int nsamples, - unsigned char * mp3buf, - const int mp3buf_size); - -/* as lame_encode_buffer, but for 'double's. - * !! NOTE: !! data must be scaled to +/- 1 full scale - */ -int CDECL lame_encode_buffer_ieee_double( - lame_t gfp, - const double pcm_l [], /* PCM data for left channel */ - const double pcm_r [], /* PCM data for right channel */ - const int nsamples, - unsigned char * mp3buf, - const int mp3buf_size); -int CDECL lame_encode_buffer_interleaved_ieee_double( - lame_t gfp, - const double pcm[], /* PCM data for left and right - channel, interleaved */ - const int nsamples, - unsigned char * mp3buf, - const int mp3buf_size); - -/* as lame_encode_buffer, but for long's - * !! NOTE: !! data must still be scaled to be in the same range as - * short int, +/- 32768 - * - * This scaling was a mistake (doesn't allow one to exploit full - * precision of type 'long'. Use lame_encode_buffer_long2() instead. - * - */ -int CDECL lame_encode_buffer_long( - lame_global_flags* gfp, /* global context handle */ - const long buffer_l [], /* PCM data for left channel */ - const long buffer_r [], /* PCM data for right channel */ - const int nsamples, /* number of samples per channel */ - unsigned char* mp3buf, /* pointer to encoded MP3 stream */ - const int mp3buf_size ); /* number of valid octets in this - stream */ - -/* Same as lame_encode_buffer_long(), but with correct scaling. - * !! NOTE: !! data must still be scaled to be in the same range as - * type 'long'. Data should be in the range: +/- 2^(8*size(long)-1) - * - */ -int CDECL lame_encode_buffer_long2( - lame_global_flags* gfp, /* global context handle */ - const long buffer_l [], /* PCM data for left channel */ - const long buffer_r [], /* PCM data for right channel */ - const int nsamples, /* number of samples per channel */ - unsigned char* mp3buf, /* pointer to encoded MP3 stream */ - const int mp3buf_size ); /* number of valid octets in this - stream */ - -/* as lame_encode_buffer, but for int's - * !! NOTE: !! input should be scaled to the maximum range of 'int' - * If int is 4 bytes, then the values should range from - * +/- 2147483648. - * - * This routine does not (and cannot, without loosing precision) use - * the same scaling as the rest of the lame_encode_buffer() routines. - * - */ -int CDECL lame_encode_buffer_int( - lame_global_flags* gfp, /* global context handle */ - const int buffer_l [], /* PCM data for left channel */ - const int buffer_r [], /* PCM data for right channel */ - const int nsamples, /* number of samples per channel */ - unsigned char* mp3buf, /* pointer to encoded MP3 stream */ - const int mp3buf_size ); /* number of valid octets in this - stream */ - - - - - -/* - * REQUIRED: - * lame_encode_flush will flush the intenal PCM buffers, padding with - * 0's to make sure the final frame is complete, and then flush - * the internal MP3 buffers, and thus may return a - * final few mp3 frames. 'mp3buf' should be at least 7200 bytes long - * to hold all possible emitted data. - * - * will also write id3v1 tags (if any) into the bitstream - * - * return code = number of bytes output to mp3buf. Can be 0 - */ -int CDECL lame_encode_flush( - lame_global_flags * gfp, /* global context handle */ - unsigned char* mp3buf, /* pointer to encoded MP3 stream */ - int size); /* number of valid octets in this stream */ - -/* - * OPTIONAL: - * lame_encode_flush_nogap will flush the internal mp3 buffers and pad - * the last frame with ancillary data so it is a complete mp3 frame. - * - * 'mp3buf' should be at least 7200 bytes long - * to hold all possible emitted data. - * - * After a call to this routine, the outputed mp3 data is complete, but - * you may continue to encode new PCM samples and write future mp3 data - * to a different file. The two mp3 files will play back with no gaps - * if they are concatenated together. - * - * This routine will NOT write id3v1 tags into the bitstream. - * - * return code = number of bytes output to mp3buf. Can be 0 - */ -int CDECL lame_encode_flush_nogap( - lame_global_flags * gfp, /* global context handle */ - unsigned char* mp3buf, /* pointer to encoded MP3 stream */ - int size); /* number of valid octets in this stream */ - -/* - * OPTIONAL: - * Normally, this is called by lame_init_params(). It writes id3v2 and - * Xing headers into the front of the bitstream, and sets frame counters - * and bitrate histogram data to 0. You can also call this after - * lame_encode_flush_nogap(). - */ -int CDECL lame_init_bitstream( - lame_global_flags * gfp); /* global context handle */ - - - -/* - * OPTIONAL: some simple statistics - * a bitrate histogram to visualize the distribution of used frame sizes - * a stereo mode histogram to visualize the distribution of used stereo - * modes, useful in joint-stereo mode only - * 0: LR left-right encoded - * 1: LR-I left-right and intensity encoded (currently not supported) - * 2: MS mid-side encoded - * 3: MS-I mid-side and intensity encoded (currently not supported) - * - * attention: don't call them after lame_encode_finish - * suggested: lame_encode_flush -> lame_*_hist -> lame_close - */ - -void CDECL lame_bitrate_hist( - const lame_global_flags * gfp, - int bitrate_count[14] ); -void CDECL lame_bitrate_kbps( - const lame_global_flags * gfp, - int bitrate_kbps [14] ); -void CDECL lame_stereo_mode_hist( - const lame_global_flags * gfp, - int stereo_mode_count[4] ); - -void CDECL lame_bitrate_stereo_mode_hist ( - const lame_global_flags * gfp, - int bitrate_stmode_count[14][4] ); - -void CDECL lame_block_type_hist ( - const lame_global_flags * gfp, - int btype_count[6] ); - -void CDECL lame_bitrate_block_type_hist ( - const lame_global_flags * gfp, - int bitrate_btype_count[14][6] ); - -#if (DEPRECATED_OR_OBSOLETE_CODE_REMOVED && 0) -#else -/* - * OPTIONAL: - * lame_mp3_tags_fid will rewrite a Xing VBR tag to the mp3 file with file - * pointer fid. These calls perform forward and backwards seeks, so make - * sure fid is a real file. Make sure lame_encode_flush has been called, - * and all mp3 data has been written to the file before calling this - * function. - * NOTE: - * if VBR tags are turned off by the user, or turned off by LAME because - * the output is not a regular file, this call does nothing - * NOTE: - * LAME wants to read from the file to skip an optional ID3v2 tag, so - * make sure you opened the file for writing and reading. - * NOTE: - * You can call lame_get_lametag_frame instead, if you want to insert - * the lametag yourself. -*/ -void CDECL lame_mp3_tags_fid(lame_global_flags *, FILE* fid); -#endif - -/* - * OPTIONAL: - * lame_get_lametag_frame copies the final LAME-tag into 'buffer'. - * The function returns the number of bytes copied into buffer, or - * the required buffer size, if the provided buffer is too small. - * Function failed, if the return value is larger than 'size'! - * Make sure lame_encode flush has been called before calling this function. - * NOTE: - * if VBR tags are turned off by the user, or turned off by LAME, - * this call does nothing and returns 0. - * NOTE: - * LAME inserted an empty frame in the beginning of mp3 audio data, - * which you have to replace by the final LAME-tag frame after encoding. - * In case there is no ID3v2 tag, usually this frame will be the very first - * data in your mp3 file. If you put some other leading data into your - * file, you'll have to do some bookkeeping about where to write this buffer. - */ -size_t CDECL lame_get_lametag_frame( - const lame_global_flags *, unsigned char* buffer, size_t size); - -/* - * REQUIRED: - * final call to free all remaining buffers - */ -int CDECL lame_close (lame_global_flags *); - -#if DEPRECATED_OR_OBSOLETE_CODE_REMOVED -#else -/* - * OBSOLETE: - * lame_encode_finish combines lame_encode_flush() and lame_close() in - * one call. However, once this call is made, the statistics routines - * will no longer work because the data will have been cleared, and - * lame_mp3_tags_fid() cannot be called to add data to the VBR header - */ -int CDECL lame_encode_finish( - lame_global_flags* gfp, - unsigned char* mp3buf, - int size ); -#endif - - - - - - -/********************************************************************* - * - * decoding - * - * a simple interface to mpglib, part of mpg123, is also included if - * libmp3lame is compiled with HAVE_MPGLIB - * - *********************************************************************/ - -struct hip_global_struct; -typedef struct hip_global_struct hip_global_flags; -typedef hip_global_flags *hip_t; - - -typedef struct { - int header_parsed; /* 1 if header was parsed and following data was - computed */ - int stereo; /* number of channels */ - int samplerate; /* sample rate */ - int bitrate; /* bitrate */ - int mode; /* mp3 frame type */ - int mode_ext; /* mp3 frame type */ - int framesize; /* number of samples per mp3 frame */ - - /* this data is only computed if mpglib detects a Xing VBR header */ - unsigned long nsamp; /* number of samples in mp3 file. */ - int totalframes; /* total number of frames in mp3 file */ - - /* this data is not currently computed by the mpglib routines */ - int framenum; /* frames decoded counter */ -} mp3data_struct; - -/* required call to initialize decoder */ -hip_t CDECL hip_decode_init(void); - -/* cleanup call to exit decoder */ -int CDECL hip_decode_exit(hip_t gfp); - -/* HIP reporting functions */ -void CDECL hip_set_errorf(hip_t gfp, lame_report_function f); -void CDECL hip_set_debugf(hip_t gfp, lame_report_function f); -void CDECL hip_set_msgf (hip_t gfp, lame_report_function f); - -/********************************************************************* - * input 1 mp3 frame, output (maybe) pcm data. - * - * nout = hip_decode(hip, mp3buf,len,pcm_l,pcm_r); - * - * input: - * len : number of bytes of mp3 data in mp3buf - * mp3buf[len] : mp3 data to be decoded - * - * output: - * nout: -1 : decoding error - * 0 : need more data before we can complete the decode - * >0 : returned 'nout' samples worth of data in pcm_l,pcm_r - * pcm_l[nout] : left channel data - * pcm_r[nout] : right channel data - * - *********************************************************************/ -int CDECL hip_decode( hip_t gfp - , unsigned char * mp3buf - , size_t len - , short pcm_l[] - , short pcm_r[] - ); - -/* same as hip_decode, and also returns mp3 header data */ -int CDECL hip_decode_headers( hip_t gfp - , unsigned char* mp3buf - , size_t len - , short pcm_l[] - , short pcm_r[] - , mp3data_struct* mp3data - ); - -/* same as hip_decode, but returns at most one frame */ -int CDECL hip_decode1( hip_t gfp - , unsigned char* mp3buf - , size_t len - , short pcm_l[] - , short pcm_r[] - ); - -/* same as hip_decode1, but returns at most one frame and mp3 header data */ -int CDECL hip_decode1_headers( hip_t gfp - , unsigned char* mp3buf - , size_t len - , short pcm_l[] - , short pcm_r[] - , mp3data_struct* mp3data - ); - -/* same as hip_decode1_headers, but also returns enc_delay and enc_padding - from VBR Info tag, (-1 if no info tag was found) */ -int CDECL hip_decode1_headersB( hip_t gfp - , unsigned char* mp3buf - , size_t len - , short pcm_l[] - , short pcm_r[] - , mp3data_struct* mp3data - , int *enc_delay - , int *enc_padding - ); - - - -/* OBSOLETE: - * lame_decode... functions are there to keep old code working - * but it is strongly recommended to replace calls by hip_decode... - * function calls, see above. - */ -#if DEPRECATED_OR_OBSOLETE_CODE_REMOVED -#else -int CDECL lame_decode_init(void); -int CDECL lame_decode( - unsigned char * mp3buf, - int len, - short pcm_l[], - short pcm_r[] ); -int CDECL lame_decode_headers( - unsigned char* mp3buf, - int len, - short pcm_l[], - short pcm_r[], - mp3data_struct* mp3data ); -int CDECL lame_decode1( - unsigned char* mp3buf, - int len, - short pcm_l[], - short pcm_r[] ); -int CDECL lame_decode1_headers( - unsigned char* mp3buf, - int len, - short pcm_l[], - short pcm_r[], - mp3data_struct* mp3data ); -int CDECL lame_decode1_headersB( - unsigned char* mp3buf, - int len, - short pcm_l[], - short pcm_r[], - mp3data_struct* mp3data, - int *enc_delay, - int *enc_padding ); -int CDECL lame_decode_exit(void); - -#endif /* obsolete lame_decode API calls */ - - -/********************************************************************* - * - * id3tag stuff - * - *********************************************************************/ - -/* - * id3tag.h -- Interface to write ID3 version 1 and 2 tags. - * - * Copyright (C) 2000 Don Melton. - * - * 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. - */ - -/* utility to obtain alphabetically sorted list of genre names with numbers */ -void CDECL id3tag_genre_list( - void (*handler)(int, const char *, void *), - void* cookie); - -void CDECL id3tag_init (lame_t gfp); - -/* force addition of version 2 tag */ -void CDECL id3tag_add_v2 (lame_t gfp); - -/* add only a version 1 tag */ -void CDECL id3tag_v1_only (lame_t gfp); - -/* add only a version 2 tag */ -void CDECL id3tag_v2_only (lame_t gfp); - -/* pad version 1 tag with spaces instead of nulls */ -void CDECL id3tag_space_v1 (lame_t gfp); - -/* pad version 2 tag with extra 128 bytes */ -void CDECL id3tag_pad_v2 (lame_t gfp); - -/* pad version 2 tag with extra n bytes */ -void CDECL id3tag_set_pad (lame_t gfp, size_t n); - -void CDECL id3tag_set_title(lame_t gfp, const char* title); -void CDECL id3tag_set_artist(lame_t gfp, const char* artist); -void CDECL id3tag_set_album(lame_t gfp, const char* album); -void CDECL id3tag_set_year(lame_t gfp, const char* year); -void CDECL id3tag_set_comment(lame_t gfp, const char* comment); - -/* return -1 result if track number is out of ID3v1 range - and ignored for ID3v1 */ -int CDECL id3tag_set_track(lame_t gfp, const char* track); - -/* return non-zero result if genre name or number is invalid - result 0: OK - result -1: genre number out of range - result -2: no valid ID3v1 genre name, mapped to ID3v1 'Other' - but taken as-is for ID3v2 genre tag */ -int CDECL id3tag_set_genre(lame_t gfp, const char* genre); - -/* return non-zero result if field name is invalid */ -int CDECL id3tag_set_fieldvalue(lame_t gfp, const char* fieldvalue); - -/* return non-zero result if image type is invalid */ -int CDECL id3tag_set_albumart(lame_t gfp, const char* image, size_t size); - -/* lame_get_id3v1_tag copies ID3v1 tag into buffer. - * Function returns number of bytes copied into buffer, or number - * of bytes rquired if buffer 'size' is too small. - * Function fails, if returned value is larger than 'size'. - * NOTE: - * This functions does nothing, if user/LAME disabled ID3v1 tag. - */ -size_t CDECL lame_get_id3v1_tag(lame_t gfp, unsigned char* buffer, size_t size); - -/* lame_get_id3v2_tag copies ID3v2 tag into buffer. - * Function returns number of bytes copied into buffer, or number - * of bytes rquired if buffer 'size' is too small. - * Function fails, if returned value is larger than 'size'. - * NOTE: - * This functions does nothing, if user/LAME disabled ID3v2 tag. - */ -size_t CDECL lame_get_id3v2_tag(lame_t gfp, unsigned char* buffer, size_t size); - -/* normaly lame_init_param writes ID3v2 tags into the audio stream - * Call lame_set_write_id3tag_automatic(gfp, 0) before lame_init_param - * to turn off this behaviour and get ID3v2 tag with above function - * write it yourself into your file. - */ -void CDECL lame_set_write_id3tag_automatic(lame_global_flags * gfp, int); -int CDECL lame_get_write_id3tag_automatic(lame_global_flags const* gfp); - -/* experimental */ -int CDECL id3tag_set_textinfo_latin1(lame_t gfp, char const *id, char const *text); - -/* experimental */ -int CDECL id3tag_set_comment_latin1(lame_t gfp, char const *lang, char const *desc, char const *text); - -#if DEPRECATED_OR_OBSOLETE_CODE_REMOVED -#else -/* experimental */ -int CDECL id3tag_set_textinfo_ucs2(lame_t gfp, char const *id, unsigned short const *text); - -/* experimental */ -int CDECL id3tag_set_comment_ucs2(lame_t gfp, char const *lang, - unsigned short const *desc, unsigned short const *text); - -/* experimental */ -int CDECL id3tag_set_fieldvalue_ucs2(lame_t gfp, const unsigned short *fieldvalue); -#endif - -/* experimental */ -int CDECL id3tag_set_fieldvalue_utf16(lame_t gfp, const unsigned short *fieldvalue); - -/* experimental */ -int CDECL id3tag_set_textinfo_utf16(lame_t gfp, char const *id, unsigned short const *text); - -/* experimental */ -int CDECL id3tag_set_comment_utf16(lame_t gfp, char const *lang, unsigned short const *desc, unsigned short const *text); - - -/*********************************************************************** -* -* list of valid bitrates [kbps] & sample frequencies [Hz]. -* first index: 0: MPEG-2 values (sample frequencies 16...24 kHz) -* 1: MPEG-1 values (sample frequencies 32...48 kHz) -* 2: MPEG-2.5 values (sample frequencies 8...12 kHz) -***********************************************************************/ - -extern const int bitrate_table [3][16]; -extern const int samplerate_table [3][ 4]; - -/* access functions for use in DLL, global vars are not exported */ -int CDECL lame_get_bitrate(int mpeg_version, int table_index); -int CDECL lame_get_samplerate(int mpeg_version, int table_index); - - -/* maximum size of albumart image (128KB), which affects LAME_MAXMP3BUFFER - as well since lame_encode_buffer() also returns ID3v2 tag data */ -#define LAME_MAXALBUMART (128 * 1024) - -/* maximum size of mp3buffer needed if you encode at most 1152 samples for - each call to lame_encode_buffer. see lame_encode_buffer() below - (LAME_MAXMP3BUFFER is now obsolete) */ -#define LAME_MAXMP3BUFFER (16384 + LAME_MAXALBUMART) - - -typedef enum { - LAME_OKAY = 0, - LAME_NOERROR = 0, - LAME_GENERICERROR = -1, - LAME_NOMEM = -10, - LAME_BADBITRATE = -11, - LAME_BADSAMPFREQ = -12, - LAME_INTERNALERROR = -13, - - FRONTEND_READERROR = -80, - FRONTEND_WRITEERROR = -81, - FRONTEND_FILETOOLARGE = -82 - -} lame_errorcodes_t; - -#if defined(__cplusplus) -} -#endif -#endif /* LAME_LAME_H */ - diff --git a/platform/win32/msvc/external/lame/include/libmp3lame.sym b/platform/win32/msvc/external/lame/include/libmp3lame.sym deleted file mode 100644 index aa6aefcb78c..00000000000 --- a/platform/win32/msvc/external/lame/include/libmp3lame.sym +++ /dev/null @@ -1,289 +0,0 @@ -lame_init - -lame_set_num_samples -lame_get_num_samples - -lame_set_in_samplerate -lame_get_in_samplerate - -lame_set_num_channels -lame_get_num_channels - -lame_set_scale -lame_get_scale - -lame_set_scale_left -lame_get_scale_left - -lame_set_scale_right -lame_get_scale_right - -lame_set_out_samplerate -lame_get_out_samplerate - -lame_set_analysis -lame_get_analysis - -lame_set_bWriteVbrTag -lame_get_bWriteVbrTag - -lame_set_decode_only -lame_get_decode_only - -lame_set_quality -lame_get_quality - -lame_set_mode -lame_get_mode - -lame_set_force_ms -lame_get_force_ms - -lame_set_free_format -lame_get_free_format - - -lame_set_findReplayGain -lame_get_findReplayGain - -lame_set_decode_on_the_fly -lame_get_decode_on_the_fly - -lame_set_nogap_total -lame_get_nogap_total - -lame_set_nogap_currentindex -lame_get_nogap_currentindex - - -lame_set_errorf -lame_set_debugf -lame_set_msgf - -lame_set_brate -lame_get_brate - -lame_set_compression_ratio -lame_get_compression_ratio - -lame_set_preset - -lame_set_asm_optimizations - - -lame_set_copyright -lame_get_copyright - -lame_set_original -lame_get_original - -lame_set_error_protection -lame_get_error_protection - -lame_set_padding_type -lame_get_padding_type - -lame_set_extension -lame_get_extension - -lame_set_strict_ISO -lame_get_strict_ISO - -lame_set_disable_reservoir -lame_get_disable_reservoir - -lame_set_quant_comp -lame_get_quant_comp -lame_set_quant_comp_short -lame_get_quant_comp_short - -lame_set_experimentalX -lame_get_experimentalX - -lame_set_experimentalY -lame_get_experimentalY - -lame_set_experimentalZ -lame_get_experimentalZ - -lame_set_exp_nspsytune -lame_get_exp_nspsytune - -lame_set_msfix -lame_get_msfix - -lame_set_VBR -lame_get_VBR - -lame_set_VBR_q -lame_get_VBR_q - -lame_set_VBR_mean_bitrate_kbps -lame_get_VBR_mean_bitrate_kbps - -lame_set_VBR_min_bitrate_kbps -lame_get_VBR_min_bitrate_kbps - -lame_set_VBR_max_bitrate_kbps -lame_get_VBR_max_bitrate_kbps - -lame_set_VBR_hard_min -lame_get_VBR_hard_min - -lame_set_preset_expopts - -lame_set_lowpassfreq -lame_get_lowpassfreq - -lame_set_lowpasswidth -lame_get_lowpasswidth - -lame_set_highpassfreq -lame_get_highpassfreq - -lame_set_highpasswidth -lame_get_highpasswidth - -lame_set_ATHonly -lame_get_ATHonly - -lame_set_ATHshort -lame_get_ATHshort - -lame_set_noATH -lame_get_noATH - -lame_set_ATHtype -lame_get_ATHtype - -lame_set_ATHlower -lame_get_ATHlower - -lame_set_athaa_type -lame_get_athaa_type - -lame_set_athaa_loudapprox -lame_get_athaa_loudapprox - -lame_set_athaa_sensitivity -lame_get_athaa_sensitivity - -lame_set_cwlimit -lame_get_cwlimit - -lame_set_useTemporal -lame_get_useTemporal - -lame_set_interChRatio -lame_get_interChRatio - -lame_set_no_short_blocks -lame_get_no_short_blocks -lame_set_force_short_blocks -lame_get_force_short_blocks -lame_set_allow_diff_short -lame_get_allow_diff_short - -lame_set_emphasis -lame_get_emphasis - -lame_get_version -lame_get_encoder_delay -lame_get_encoder_padding -lame_get_framesize - -lame_get_mf_samples_to_encode -lame_get_size_mp3buffer -lame_get_frameNum -lame_get_totalframes - -lame_get_RadioGain -lame_get_AudiophileGain -lame_get_PeakSample -lame_get_noclipGainChange -lame_get_noclipScale - -lame_init_params - -get_lame_version -get_lame_short_version -get_lame_very_short_version -get_psy_version -get_lame_url -get_lame_version_numerical -get_lame_os_bitness - -lame_print_config -lame_print_internals - -lame_encode_buffer -lame_encode_buffer_interleaved -lame_encode_buffer_float -lame_encode_buffer_long -lame_encode_buffer_long2 -lame_encode_buffer_int -lame_encode_flush -lame_encode_flush_nogap - -lame_init_bitstream - -lame_bitrate_hist -lame_bitrate_kbps -lame_stereo_mode_hist -lame_bitrate_stereo_mode_hist -lame_block_type_hist -lame_bitrate_block_type_hist -lame_mp3_tags_fid -lame_close -lame_get_lametag_frame -lame_set_VBR_quality -lame_get_VBR_quality - - -bitrate_table -samplerate_table - -lame_decode_init -lame_decode -lame_decode_headers -lame_decode1 -lame_decode1_headers -lame_decode1_headersB -lame_decode_exit - -lame_get_id3v1_tag -lame_get_id3v2_tag -lame_set_write_id3tag_automatic -lame_get_write_id3tag_automatic - -hip_decode_init -hip_decode_exit -hip_decode -hip_decode_headers -hip_decode1 -hip_decode1_headers -hip_decode1_headersB -hip_set_debugf -hip_set_errorf -hip_set_msgf - -id3tag_genre_list -id3tag_init -id3tag_add_v2 -id3tag_v1_only -id3tag_v2_only -id3tag_space_v1 -id3tag_pad_v2 -id3tag_set_title -id3tag_set_artist -id3tag_set_album -id3tag_set_year -id3tag_set_comment -id3tag_set_track -id3tag_set_genre -id3tag_set_fieldvalue -id3tag_set_albumart -id3tag_set_pad -id3tag_set_comment_ucs2 -id3tag_set_textinfo_ucs2 - diff --git a/platform/win32/msvc/external/lame/install-sh b/platform/win32/msvc/external/lame/install-sh deleted file mode 100644 index 6781b987bdb..00000000000 --- a/platform/win32/msvc/external/lame/install-sh +++ /dev/null @@ -1,520 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2009-04-28.21; # UTC - -# This originates from X11R5 (mit/util/scripts/install.sh), which was -# later released in X11R6 (xc/config/util/install.sh) with the -# following copyright and license. -# -# Copyright (C) 1994 X Consortium -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name of the X Consortium shall not -# be used in advertising or otherwise to promote the sale, use or other deal- -# ings in this Software without prior written authorization from the X Consor- -# tium. -# -# -# FSF changes to this file are in the public domain. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. - -nl=' -' -IFS=" "" $nl" - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit=${DOITPROG-} -if test -z "$doit"; then - doit_exec=exec -else - doit_exec=$doit -fi - -# Put in absolute file names if you don't have them in your path; -# or use environment vars. - -chgrpprog=${CHGRPPROG-chgrp} -chmodprog=${CHMODPROG-chmod} -chownprog=${CHOWNPROG-chown} -cmpprog=${CMPPROG-cmp} -cpprog=${CPPROG-cp} -mkdirprog=${MKDIRPROG-mkdir} -mvprog=${MVPROG-mv} -rmprog=${RMPROG-rm} -stripprog=${STRIPPROG-strip} - -posix_glob='?' -initialize_posix_glob=' - test "$posix_glob" != "?" || { - if (set -f) 2>/dev/null; then - posix_glob= - else - posix_glob=: - fi - } -' - -posix_mkdir= - -# Desired mode of installed file. -mode=0755 - -chgrpcmd= -chmodcmd=$chmodprog -chowncmd= -mvcmd=$mvprog -rmcmd="$rmprog -f" -stripcmd= - -src= -dst= -dir_arg= -dst_arg= - -copy_on_change=false -no_target_directory= - -usage="\ -Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE - or: $0 [OPTION]... SRCFILES... DIRECTORY - or: $0 [OPTION]... -t DIRECTORY SRCFILES... - or: $0 [OPTION]... -d DIRECTORIES... - -In the 1st form, copy SRCFILE to DSTFILE. -In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. -In the 4th, create DIRECTORIES. - -Options: - --help display this help and exit. - --version display version info and exit. - - -c (ignored) - -C install only if different (preserve the last data modification time) - -d create directories instead of installing files. - -g GROUP $chgrpprog installed files to GROUP. - -m MODE $chmodprog installed files to MODE. - -o USER $chownprog installed files to USER. - -s $stripprog installed files. - -t DIRECTORY install into DIRECTORY. - -T report an error if DSTFILE is a directory. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG - RMPROG STRIPPROG -" - -while test $# -ne 0; do - case $1 in - -c) ;; - - -C) copy_on_change=true;; - - -d) dir_arg=true;; - - -g) chgrpcmd="$chgrpprog $2" - shift;; - - --help) echo "$usage"; exit $?;; - - -m) mode=$2 - case $mode in - *' '* | *' '* | *' -'* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; - - -o) chowncmd="$chownprog $2" - shift;; - - -s) stripcmd=$stripprog;; - - -t) dst_arg=$2 - shift;; - - -T) no_target_directory=true;; - - --version) echo "$0 $scriptversion"; exit $?;; - - --) shift - break;; - - -*) echo "$0: invalid option: $1" >&2 - exit 1;; - - *) break;; - esac - shift -done - -if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then - # When -d is used, all remaining arguments are directories to create. - # When -t is used, the destination is already specified. - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dst_arg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dst_arg" - shift # fnord - fi - shift # arg - dst_arg=$arg - done -fi - -if test $# -eq 0; then - if test -z "$dir_arg"; then - echo "$0: no input file specified." >&2 - exit 1 - fi - # It's OK to call `install-sh -d' without argument. - # This can happen when creating conditional directories. - exit 0 -fi - -if test -z "$dir_arg"; then - trap '(exit $?); exit' 1 2 13 15 - - # Set umask so as not to create temps with too-generous modes. - # However, 'strip' requires both read and write access to temps. - case $mode in - # Optimize common cases. - *644) cp_umask=133;; - *755) cp_umask=22;; - - *[0-7]) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw='% 200' - fi - cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; - *) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw=,u+rw - fi - cp_umask=$mode$u_plus_rw;; - esac -fi - -for src -do - # Protect names starting with `-'. - case $src in - -*) src=./$src;; - esac - - if test -n "$dir_arg"; then - dst=$src - dstdir=$dst - test -d "$dstdir" - dstdir_status=$? - else - - # Waiting for this to be detected by the "$cpprog $src $dsttmp" command - # might cause directories to be created, which would be especially bad - # if $src (and thus $dsttmp) contains '*'. - if test ! -f "$src" && test ! -d "$src"; then - echo "$0: $src does not exist." >&2 - exit 1 - fi - - if test -z "$dst_arg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - - dst=$dst_arg - # Protect names starting with `-'. - case $dst in - -*) dst=./$dst;; - esac - - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. - if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 - fi - dstdir=$dst - dst=$dstdir/`basename "$src"` - dstdir_status=0 - else - # Prefer dirname, but fall back on a substitute if dirname fails. - dstdir=` - (dirname "$dst") 2>/dev/null || - expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$dst" : 'X\(//\)[^/]' \| \ - X"$dst" : 'X\(//\)$' \| \ - X"$dst" : 'X\(/\)' \| . 2>/dev/null || - echo X"$dst" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q' - ` - - test -d "$dstdir" - dstdir_status=$? - fi - fi - - obsolete_mkdir_used=false - - if test $dstdir_status != 0; then - case $posix_mkdir in - '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writeable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; - esac - - if - $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" - ) - then : - else - - # The umask is ridiculous, or mkdir does not conform to POSIX, - # or it failed possibly due to a race condition. Create the - # directory the slow way, step by step, checking for races as we go. - - case $dstdir in - /*) prefix='/';; - -*) prefix='./';; - *) prefix='';; - esac - - eval "$initialize_posix_glob" - - oIFS=$IFS - IFS=/ - $posix_glob set -f - set fnord $dstdir - shift - $posix_glob set +f - IFS=$oIFS - - prefixes= - - for d - do - test -z "$d" && continue - - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ - done - - if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true - fi - fi - fi - - if test -n "$dir_arg"; then - { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && - { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || - test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 - else - - # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 - - # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && - - # and set any options; do chmod last to preserve setuid bits. - # - # If any of these fail, we abort the whole thing. If we want to - # ignore errors from any of these, just make sure not to ignore - # errors from the above "$doit $cpprog $src $dsttmp" command. - # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && - { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && - { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && - - # If -C, don't bother to copy if it wouldn't change the file. - if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - - eval "$initialize_posix_glob" && - $posix_glob set -f && - set X $old && old=:$2:$4:$5:$6 && - set X $new && new=:$2:$4:$5:$6 && - $posix_glob set +f && - - test "$old" = "$new" && - $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 - then - rm -f "$dsttmp" - else - # Rename the file to the real destination. - $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || - - # The rename failed, perhaps because mv can't rename something else - # to itself, or perhaps because mv is so ancient that it does not - # support -f. - { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" - } - fi || exit 1 - - trap '' 0 - fi -done - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/platform/win32/msvc/external/lame/lame.bat b/platform/win32/msvc/external/lame/lame.bat deleted file mode 100644 index 8b31774b29e..00000000000 --- a/platform/win32/msvc/external/lame/lame.bat +++ /dev/null @@ -1,41 +0,0 @@ -@echo off -rem --------------------------------------------- -rem PURPOSE: -rem - put this Batch-Command on your Desktop, -rem so you can drag and drop wave files on it -rem and LAME will encode them to mp3 format. -rem - put this Batch-Command in a place mentioned -rem in your PATH environment, start the DOS-BOX -rem and change to a directory where your wave -rem files are located. the following line will -rem encode all your wave files to mp3 -rem "lame.bat *.wav" -rem --------------------------------------------- -rem C2000 Robert Hegemann -rem --------------------------------------------- -rem please set LAME and LAMEOPTS -rem LAME - where the executeable is -rem OPTS - options you like LAME to use - - set LAME=lame.exe - set OPTS=--preset cd - -rem --------------------------------------------- - - set thecmd=%LAME% %OPTS% - lfnfor on -:processArgs - if "%1"=="" goto endmark - for %%f in (%1) do %thecmd% "%%f" - if errorlevel 1 goto errormark - shift - goto processArgs -:errormark - echo. - echo. - echo ERROR processing %1 - echo. -:endmark -rem -rem finished -rem diff --git a/platform/win32/msvc/external/lame/lame.spec b/platform/win32/msvc/external/lame/lame.spec deleted file mode 100644 index 9a8df79281f..00000000000 --- a/platform/win32/msvc/external/lame/lame.spec +++ /dev/null @@ -1,188 +0,0 @@ -%define name lame -%define ver 3.99.5 -%define rel 1 -%define prefix %{_usr} -%define docdir %{_defaultdocdir} - -Summary : LAME Ain't an MP3 Encoder... but it's the best. -Summary(fr) : LAME n'est pas un encodeur MP3 ;-> -Name: %{name} -Version: %{ver} -Release: %{rel} -License: LGPL -Vendor: The LAME Project -Packager: Yosi Markovich <yosim@bigfoot.com> -URL: http://www.mp3dev.org -Group: Applications/Multimedia -Source: %{name}-%{version}.tar.gz -BuildRoot: %{_tmppath}/%{name}-root -Requires: ncurses >= 5.0 -BuildRequires: gcc => 3.0.1, /usr/bin/find, ncurses-devel -%ifarch %{ix86} x86_64 -BuildRequires: nasm -%endif -Provides: mp3encoder - -%description -LAME is an educational tool to be used for learning about MP3 encoding. The -goal of the LAME project is to use the open source model to improve the -psycho acoustics, noise shaping and speed of MP3. - -%description -l fr -LAME est un outil d'enseignement pour l'apprentissage de l'encodage MP3. -Le but du projet LAME est d'utiliser un mod�le "open source" afin -d'am�liorer la qualit� et la vitesse du MP3. - - - -%package devel -Summary: Shared and static libraries for LAME. -Group: Development/Libraries -Requires: %{name} = %{version} - -%description devel -LAME is an educational tool to be used for learning about MP3 encoding. -This package contains both the shared and the static libraries from the -LAME project. - -You will also need to install the main lame package in order to install -these libraries. - -%prep -%setup - -%build - -# Vorbis makes the build fail for now. . . -rm -f config.cache - -%configure \ -%ifarch %{ix86} x86_64 - --enable-nasm \ -%endif - --enable-decoder \ - --without-vorbis \ - --enable-analyzer=no \ - --enable-brhist \ - --disable-debug -%{__make} %{?_smp_mflags} test CFLAGS="%{optflags}" - -%install -%{__rm} -rf %{buildroot} -%makeinstall - -### Some apps still expect to find <lame.h> -%{__ln_s} -f lame/lame.h %{buildroot}%{_includedir}/lame.h - - -find doc/html -name "Makefile*" | xargs rm -f -### make install really shouldn't install these -%{__rm} -rf %{buildroot}%{_docdir}/lame/ - - -%post -/sbin/ldconfig 2>/dev/null - -%postun -/sbin/ldconfig 2>/dev/null - -%clean -%{__rm} -rf %{buildroot} - -%files -%defattr (-,root,root) -%doc COPYING ChangeLog README TODO USAGE doc/html -%doc doc/html -%{_bindir}/lame -%{_libdir}/libmp3lame.so.* -%{_mandir}/man1/lame.1* - -%files devel -%defattr (-, root, root) -%doc API HACKING STYLEGUIDE -%{_libdir}/libmp3lame.a -%{_libdir}/libmp3lame.la -%{_libdir}/libmp3lame.so -%{_includedir}/* - -%changelog - -* Sun May 14 2006 Kyle VanderBeek <kylev@kylev.com> -- Remove requirements for specific gcc versions, since modern ones "just work". -- Remove out-dated hyper-optimizations (some of which weren't valid compiler - flags anymore). -- Update to current RPM techniques and macros (inspired by freshrpms.net spec). - -* Sat May 11 2002 Yosi Markovich <yosim@bigfoot.com> -- Fixes to the spec file that include: -- Making sure the compiler is gcc version 3.0.1. Lame compiled with a version - greater than 3.0.1 is broken. -- Optimization flags for i686 will use i686 for march and mcpu, and not - athlon. -- Fix the dates in this Changelog section. -- Various small fixes merged from Matthias Saou. -- Thanks Fred Maciel <fred-m@crl.hitachi.co.jp> for his useful comments. - -- -* Tue Jan 22 2002 Mark Taylor <mt@mp3dev.org> -- replaced lame.spec.in with Yosi's version. Merged some stuff from - the prevous lame.spec.in file, and appended changelog below. - -* Tue Jan 22 2002 Yosi Markovich <yosim@bigfoot.com> -- Rewrote lame.spec.in to create a correct and nice spec file. - imho, this spec file is not good for anyone who wants to build - daily cvs snapshots. Closes bug #495975 - -* Tue Dec 11 2001 Yosi Markovich <yosim@bigfoot.com> -- Shamelessly stole Matthias Saou's excellent spec file to create daily - CVS snapshots of Lame. Other than that, nothing is new. - -* Tue Oct 23 2001 Matthias Saou <matthias.saou@est.une.marmotte.net> -- Fixed the %pre and %post that should have been %post and %postun, silly me! -- Removed -malign-double (it's evil, Yosi told me and I tested, brrr ;-)). -- Now build with gcc3, VBR encoding gets a hell of a boost, impressive! - I recommend you now use "lame --r3mix", it's the best. -- Tried to re-enable vorbis, but it's a no-go. - -* Thu Jul 26 2001 Matthias Saou <matthias.saou@est.une.marmotte.net> -- Build with kgcc to have VBR working. - -* Wed Jul 25 2001 Matthias Saou <matthias.saou@est.une.marmotte.net> -- Update to 3.89beta : Must be built with a non-patched version of nasm - to work! - -* Mon May 7 2001 Matthias Saou <matthias.saou@est.une.marmotte.net> -- Rebuilt for Red Hat 7.1. -- Disabled the vorbis support since it fails to build with it. -- Added a big optimisation section, thanks to Yosi Markovich - <senna@camelot.com> for this and other pointers. - -* Sun Feb 11 2001 Matthias Saou <matthias.saou@est.une.marmotte.net> -- Split the package, there is now a -devel - -* Thu Nov 26 2000 Matthias Saou <matthias.saou@est.une.marmotte.net> -- Initial RPM release for RedHat 7.0 from scratch - -* Wed Nov 21 2000 Eric Lassauge <lassauge@mail.dotcom.fr> -- Updated and corrected RPM to 3.89beta. -- Added french translations - -* Sat Aug 04 2000 Markus Linnala �maage@cs.tut.fi� -- Build and include docs and libs correctly -- Build extra programs - -* Tue Aug 01 2000 Stuart Young �cefiar1@optushome.com.au� -- Updated RPM to 3.85beta. -- Modified spec file (merged George and Keitaro's specs) -- Added reasonable info to the specs to reflect the maintainer -- Renamed lame.spec (plain spec is bad, mmkay?). - -* Fri Jun 30 2000 Keitaro Yosimura �ramsy@linux.or.jp� -- Updated RPM to 3.84alpha. -- Better attempt at an RPM, independant of 3.83 release. -- (This is all surmise as there was no changelog). - -* Thu May 30 2000 Georges Seguin �crow@planete.net� -- First RPM build around 3.83beta - - diff --git a/platform/win32/msvc/external/lame/lame.spec.in b/platform/win32/msvc/external/lame/lame.spec.in deleted file mode 100644 index 5a215628631..00000000000 --- a/platform/win32/msvc/external/lame/lame.spec.in +++ /dev/null @@ -1,188 +0,0 @@ -%define name @PACKAGE@ -%define ver @VERSION@ -%define rel 1 -%define prefix %{_usr} -%define docdir %{_defaultdocdir} - -Summary : LAME Ain't an MP3 Encoder... but it's the best. -Summary(fr) : LAME n'est pas un encodeur MP3 ;-> -Name: %{name} -Version: %{ver} -Release: %{rel} -License: LGPL -Vendor: The LAME Project -Packager: Yosi Markovich <yosim@bigfoot.com> -URL: http://www.mp3dev.org -Group: Applications/Multimedia -Source: %{name}-%{version}.tar.gz -BuildRoot: %{_tmppath}/%{name}-root -Requires: ncurses >= 5.0 -BuildRequires: gcc => 3.0.1, /usr/bin/find, ncurses-devel -%ifarch %{ix86} x86_64 -BuildRequires: nasm -%endif -Provides: mp3encoder - -%description -LAME is an educational tool to be used for learning about MP3 encoding. The -goal of the LAME project is to use the open source model to improve the -psycho acoustics, noise shaping and speed of MP3. - -%description -l fr -LAME est un outil d'enseignement pour l'apprentissage de l'encodage MP3. -Le but du projet LAME est d'utiliser un mod�le "open source" afin -d'am�liorer la qualit� et la vitesse du MP3. - - - -%package devel -Summary: Shared and static libraries for LAME. -Group: Development/Libraries -Requires: %{name} = %{version} - -%description devel -LAME is an educational tool to be used for learning about MP3 encoding. -This package contains both the shared and the static libraries from the -LAME project. - -You will also need to install the main lame package in order to install -these libraries. - -%prep -%setup - -%build - -# Vorbis makes the build fail for now. . . -rm -f config.cache - -%configure \ -%ifarch %{ix86} x86_64 - --enable-nasm \ -%endif - --enable-decoder \ - --without-vorbis \ - --enable-analyzer=no \ - --enable-brhist \ - --disable-debug -%{__make} %{?_smp_mflags} test CFLAGS="%{optflags}" - -%install -%{__rm} -rf %{buildroot} -%makeinstall - -### Some apps still expect to find <lame.h> -%{__ln_s} -f lame/lame.h %{buildroot}%{_includedir}/lame.h - - -find doc/html -name "Makefile*" | xargs rm -f -### make install really shouldn't install these -%{__rm} -rf %{buildroot}%{_docdir}/lame/ - - -%post -/sbin/ldconfig 2>/dev/null - -%postun -/sbin/ldconfig 2>/dev/null - -%clean -%{__rm} -rf %{buildroot} - -%files -%defattr (-,root,root) -%doc COPYING ChangeLog README TODO USAGE doc/html -%doc doc/html -%{_bindir}/lame -%{_libdir}/libmp3lame.so.* -%{_mandir}/man1/lame.1* - -%files devel -%defattr (-, root, root) -%doc API HACKING STYLEGUIDE -%{_libdir}/libmp3lame.a -%{_libdir}/libmp3lame.la -%{_libdir}/libmp3lame.so -%{_includedir}/* - -%changelog - -* Sun May 14 2006 Kyle VanderBeek <kylev@kylev.com> -- Remove requirements for specific gcc versions, since modern ones "just work". -- Remove out-dated hyper-optimizations (some of which weren't valid compiler - flags anymore). -- Update to current RPM techniques and macros (inspired by freshrpms.net spec). - -* Sat May 11 2002 Yosi Markovich <yosim@bigfoot.com> -- Fixes to the spec file that include: -- Making sure the compiler is gcc version 3.0.1. Lame compiled with a version - greater than 3.0.1 is broken. -- Optimization flags for i686 will use i686 for march and mcpu, and not - athlon. -- Fix the dates in this Changelog section. -- Various small fixes merged from Matthias Saou. -- Thanks Fred Maciel <fred-m@crl.hitachi.co.jp> for his useful comments. - -- -* Tue Jan 22 2002 Mark Taylor <mt@mp3dev.org> -- replaced lame.spec.in with Yosi's version. Merged some stuff from - the prevous lame.spec.in file, and appended changelog below. - -* Tue Jan 22 2002 Yosi Markovich <yosim@bigfoot.com> -- Rewrote lame.spec.in to create a correct and nice spec file. - imho, this spec file is not good for anyone who wants to build - daily cvs snapshots. Closes bug #495975 - -* Tue Dec 11 2001 Yosi Markovich <yosim@bigfoot.com> -- Shamelessly stole Matthias Saou's excellent spec file to create daily - CVS snapshots of Lame. Other than that, nothing is new. - -* Tue Oct 23 2001 Matthias Saou <matthias.saou@est.une.marmotte.net> -- Fixed the %pre and %post that should have been %post and %postun, silly me! -- Removed -malign-double (it's evil, Yosi told me and I tested, brrr ;-)). -- Now build with gcc3, VBR encoding gets a hell of a boost, impressive! - I recommend you now use "lame --r3mix", it's the best. -- Tried to re-enable vorbis, but it's a no-go. - -* Thu Jul 26 2001 Matthias Saou <matthias.saou@est.une.marmotte.net> -- Build with kgcc to have VBR working. - -* Wed Jul 25 2001 Matthias Saou <matthias.saou@est.une.marmotte.net> -- Update to 3.89beta : Must be built with a non-patched version of nasm - to work! - -* Mon May 7 2001 Matthias Saou <matthias.saou@est.une.marmotte.net> -- Rebuilt for Red Hat 7.1. -- Disabled the vorbis support since it fails to build with it. -- Added a big optimisation section, thanks to Yosi Markovich - <senna@camelot.com> for this and other pointers. - -* Sun Feb 11 2001 Matthias Saou <matthias.saou@est.une.marmotte.net> -- Split the package, there is now a -devel - -* Thu Nov 26 2000 Matthias Saou <matthias.saou@est.une.marmotte.net> -- Initial RPM release for RedHat 7.0 from scratch - -* Wed Nov 21 2000 Eric Lassauge <lassauge@mail.dotcom.fr> -- Updated and corrected RPM to 3.89beta. -- Added french translations - -* Sat Aug 04 2000 Markus Linnala �maage@cs.tut.fi� -- Build and include docs and libs correctly -- Build extra programs - -* Tue Aug 01 2000 Stuart Young �cefiar1@optushome.com.au� -- Updated RPM to 3.85beta. -- Modified spec file (merged George and Keitaro's specs) -- Added reasonable info to the specs to reflect the maintainer -- Renamed lame.spec (plain spec is bad, mmkay?). - -* Fri Jun 30 2000 Keitaro Yosimura �ramsy@linux.or.jp� -- Updated RPM to 3.84alpha. -- Better attempt at an RPM, independant of 3.83 release. -- (This is all surmise as there was no changelog). - -* Thu May 30 2000 Georges Seguin �crow@planete.net� -- First RPM build around 3.83beta - - diff --git a/platform/win32/msvc/external/lame/libmp3lame/Makefile.am b/platform/win32/msvc/external/lame/libmp3lame/Makefile.am deleted file mode 100644 index b924c0dd401..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/Makefile.am +++ /dev/null @@ -1,101 +0,0 @@ -## $Id: Makefile.am,v 1.39 2010/10/30 13:21:02 robert Exp $ - -include $(top_srcdir)/Makefile.am.global - -SUBDIRS = i386 vector - -lib_LTLIBRARIES = libmp3lame.la - -if HAVE_NASM -cpu_ldadd = $(top_builddir)/libmp3lame/@CPUTYPE@/liblameasmroutines.la -endif -if WITH_VECTOR -vector_ldadd = $(top_builddir)/libmp3lame/vector/liblamevectorroutines.la -endif - -if LIB_WITH_DECODER -decoder_ldadd = $(top_builddir)/mpglib/libmpgdecoder.la -else -decoder_ldadd = -endif - -libmp3lame_la_LIBADD = $(cpu_ldadd) $(vector_ldadd) $(decoder_ldadd) \ - $(CONFIG_MATH_LIB) -libmp3lame_la_LDFLAGS = -version-info @LIB_MAJOR_VERSION@:@LIB_MINOR_VERSION@ \ - -no-undefined - -INCLUDES = @INCLUDES@ -I$(top_srcdir)/mpglib -I$(top_builddir) - -DEFS = @DEFS@ @CONFIG_DEFS@ - -EXTRA_DIST = \ - lame.rc \ - vbrquantize.h \ - logoe.ico - -libmp3lame_la_SOURCES = \ - VbrTag.c \ - bitstream.c \ - encoder.c \ - fft.c \ - gain_analysis.c \ - id3tag.c \ - lame.c \ - newmdct.c \ - presets.c \ - psymodel.c \ - quantize.c \ - quantize_pvt.c \ - reservoir.c \ - set_get.c \ - tables.c \ - takehiro.c \ - util.c \ - vbrquantize.c \ - version.c \ - mpglib_interface.c - -noinst_HEADERS= \ - VbrTag.h \ - bitstream.h \ - encoder.h \ - fft.h \ - gain_analysis.h \ - id3tag.h \ - l3side.h \ - lame-analysis.h \ - lame_global_flags.h \ - lameerror.h \ - machine.h \ - newmdct.h \ - psymodel.h \ - quantize.h \ - quantize_pvt.h \ - reservoir.h \ - set_get.h \ - tables.h \ - util.h \ - vbrquantize.h \ - version.h - -CLEANFILES = lclint.txt - -LCLINTFLAGS= \ - +posixlib \ - +showsummary \ - +showalluses \ - +whichlib \ - +forcehints \ - -fixedformalarray \ - +matchanyintegral \ - -Dlint - -lclint.txt: ${libmp3lame_la_SOURCES} ${noinst_HEADERS} - @lclint ${LCLINTFLAGS} ${INCLUDES} ${DEFS} ${libmp3lame_la_SOURCES} 2>&1 >lclint.txt || true - -lclint: lclint.txt - more lclint.txt - -#$(OBJECTS): libtool -#libtool: $(LIBTOOL_DEPS) -# $(SHELL) $(top_builddir)/config.status --recheck diff --git a/platform/win32/msvc/external/lame/libmp3lame/Makefile.in b/platform/win32/msvc/external/lame/libmp3lame/Makefile.in deleted file mode 100644 index 830d5672e5e..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/Makefile.in +++ /dev/null @@ -1,873 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# global section for every Makefile.am - - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -ANSI2KNR = $(top_srcdir)/ansi2knr -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(top_srcdir)/Makefile.am.global depcomp -subdir = libmp3lame -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__installdirs = "$(DESTDIR)$(libdir)" -LTLIBRARIES = $(lib_LTLIBRARIES) -@LIB_WITH_DECODER_TRUE@am__DEPENDENCIES_1 = $(top_builddir)/mpglib/libmpgdecoder.la -am__DEPENDENCIES_2 = -libmp3lame_la_DEPENDENCIES = $(cpu_ldadd) $(vector_ldadd) \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) -am_libmp3lame_la_OBJECTS = VbrTag$U.lo bitstream$U.lo encoder$U.lo \ - fft$U.lo gain_analysis$U.lo id3tag$U.lo lame$U.lo newmdct$U.lo \ - presets$U.lo psymodel$U.lo quantize$U.lo quantize_pvt$U.lo \ - reservoir$U.lo set_get$U.lo tables$U.lo takehiro$U.lo \ - util$U.lo vbrquantize$U.lo version$U.lo mpglib_interface$U.lo -libmp3lame_la_OBJECTS = $(am_libmp3lame_la_OBJECTS) -libmp3lame_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libmp3lame_la_LDFLAGS) $(LDFLAGS) -o $@ -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libmp3lame_la_SOURCES) -DIST_SOURCES = $(libmp3lame_la_SOURCES) -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -HEADERS = $(noinst_HEADERS) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CONFIG_DEFS = @CONFIG_DEFS@ -CONFIG_MATH_LIB = @CONFIG_MATH_LIB@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CPUCCODE = @CPUCCODE@ -CPUTYPE = @CPUTYPE@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ @CONFIG_DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ -FRONTEND_LDADD = @FRONTEND_LDADD@ -FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ -GREP = @GREP@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_CONFIG = @GTK_CONFIG@ -GTK_LIBS = @GTK_LIBS@ -INCLUDES = @INCLUDES@ -I$(top_srcdir)/mpglib -I$(top_builddir) -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDADD = @LDADD@ -LDFLAGS = @LDFLAGS@ -LIBICONV = @LIBICONV@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ -LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBICONV = @LTLIBICONV@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEDEP = @MAKEDEP@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NASM = @NASM@ -NASM_FORMAT = @NASM_FORMAT@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -RM_F = @RM_F@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ -SNDFILE_LIBS = @SNDFILE_LIBS@ -STRIP = @STRIP@ -U = @U@ -VERSION = @VERSION@ -WITH_FRONTEND = @WITH_FRONTEND@ -WITH_MP3RTP = @WITH_MP3RTP@ -WITH_MP3X = @WITH_MP3X@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = 1.11 foreign $(top_srcdir)/ansi2knr -SUBDIRS = i386 vector -lib_LTLIBRARIES = libmp3lame.la -@HAVE_NASM_TRUE@cpu_ldadd = $(top_builddir)/libmp3lame/@CPUTYPE@/liblameasmroutines.la -@WITH_VECTOR_TRUE@vector_ldadd = $(top_builddir)/libmp3lame/vector/liblamevectorroutines.la -@LIB_WITH_DECODER_FALSE@decoder_ldadd = -@LIB_WITH_DECODER_TRUE@decoder_ldadd = $(top_builddir)/mpglib/libmpgdecoder.la -libmp3lame_la_LIBADD = $(cpu_ldadd) $(vector_ldadd) $(decoder_ldadd) \ - $(CONFIG_MATH_LIB) - -libmp3lame_la_LDFLAGS = -version-info @LIB_MAJOR_VERSION@:@LIB_MINOR_VERSION@ \ - -no-undefined - -EXTRA_DIST = \ - lame.rc \ - vbrquantize.h \ - logoe.ico - -libmp3lame_la_SOURCES = \ - VbrTag.c \ - bitstream.c \ - encoder.c \ - fft.c \ - gain_analysis.c \ - id3tag.c \ - lame.c \ - newmdct.c \ - presets.c \ - psymodel.c \ - quantize.c \ - quantize_pvt.c \ - reservoir.c \ - set_get.c \ - tables.c \ - takehiro.c \ - util.c \ - vbrquantize.c \ - version.c \ - mpglib_interface.c - -noinst_HEADERS = \ - VbrTag.h \ - bitstream.h \ - encoder.h \ - fft.h \ - gain_analysis.h \ - id3tag.h \ - l3side.h \ - lame-analysis.h \ - lame_global_flags.h \ - lameerror.h \ - machine.h \ - newmdct.h \ - psymodel.h \ - quantize.h \ - quantize_pvt.h \ - reservoir.h \ - set_get.h \ - tables.h \ - util.h \ - vbrquantize.h \ - version.h - -CLEANFILES = lclint.txt -LCLINTFLAGS = \ - +posixlib \ - +showsummary \ - +showalluses \ - +whichlib \ - +forcehints \ - -fixedformalarray \ - +matchanyintegral \ - -Dlint - -all: all-recursive - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libmp3lame/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign libmp3lame/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ - } - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ - done - -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libmp3lame.la: $(libmp3lame_la_OBJECTS) $(libmp3lame_la_DEPENDENCIES) - $(libmp3lame_la_LINK) -rpath $(libdir) $(libmp3lame_la_OBJECTS) $(libmp3lame_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c -$(top_srcdir)/ansi2knr: - $(am__cd) $(top_srcdir) && $(MAKE) $(AM_MAKEFLAGS) ./ansi2knr - -mostlyclean-kr: - -test "$U" = "" || rm -f *_.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VbrTag$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bitstream$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encoder$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fft$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gain_analysis$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/id3tag$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lame$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpglib_interface$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newmdct$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/presets$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/psymodel$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quantize$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quantize_pvt$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reservoir$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_get$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tables$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/takehiro$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vbrquantize$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version$U.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< -VbrTag_.c: VbrTag.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/VbrTag.c; then echo $(srcdir)/VbrTag.c; else echo VbrTag.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -bitstream_.c: bitstream.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/bitstream.c; then echo $(srcdir)/bitstream.c; else echo bitstream.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -encoder_.c: encoder.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/encoder.c; then echo $(srcdir)/encoder.c; else echo encoder.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -fft_.c: fft.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/fft.c; then echo $(srcdir)/fft.c; else echo fft.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -gain_analysis_.c: gain_analysis.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/gain_analysis.c; then echo $(srcdir)/gain_analysis.c; else echo gain_analysis.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -id3tag_.c: id3tag.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/id3tag.c; then echo $(srcdir)/id3tag.c; else echo id3tag.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -lame_.c: lame.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lame.c; then echo $(srcdir)/lame.c; else echo lame.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -mpglib_interface_.c: mpglib_interface.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mpglib_interface.c; then echo $(srcdir)/mpglib_interface.c; else echo mpglib_interface.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -newmdct_.c: newmdct.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/newmdct.c; then echo $(srcdir)/newmdct.c; else echo newmdct.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -presets_.c: presets.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/presets.c; then echo $(srcdir)/presets.c; else echo presets.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -psymodel_.c: psymodel.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/psymodel.c; then echo $(srcdir)/psymodel.c; else echo psymodel.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -quantize_.c: quantize.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/quantize.c; then echo $(srcdir)/quantize.c; else echo quantize.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -quantize_pvt_.c: quantize_pvt.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/quantize_pvt.c; then echo $(srcdir)/quantize_pvt.c; else echo quantize_pvt.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -reservoir_.c: reservoir.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/reservoir.c; then echo $(srcdir)/reservoir.c; else echo reservoir.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -set_get_.c: set_get.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/set_get.c; then echo $(srcdir)/set_get.c; else echo set_get.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -tables_.c: tables.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/tables.c; then echo $(srcdir)/tables.c; else echo tables.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -takehiro_.c: takehiro.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/takehiro.c; then echo $(srcdir)/takehiro.c; else echo takehiro.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -util_.c: util.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/util.c; then echo $(srcdir)/util.c; else echo util.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -vbrquantize_.c: vbrquantize.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/vbrquantize.c; then echo $(srcdir)/vbrquantize.c; else echo vbrquantize.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -version_.c: version.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/version.c; then echo $(srcdir)/version.c; else echo version.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -VbrTag_.$(OBJEXT) VbrTag_.lo bitstream_.$(OBJEXT) bitstream_.lo \ -encoder_.$(OBJEXT) encoder_.lo fft_.$(OBJEXT) fft_.lo \ -gain_analysis_.$(OBJEXT) gain_analysis_.lo id3tag_.$(OBJEXT) \ -id3tag_.lo lame_.$(OBJEXT) lame_.lo mpglib_interface_.$(OBJEXT) \ -mpglib_interface_.lo newmdct_.$(OBJEXT) newmdct_.lo presets_.$(OBJEXT) \ -presets_.lo psymodel_.$(OBJEXT) psymodel_.lo quantize_.$(OBJEXT) \ -quantize_.lo quantize_pvt_.$(OBJEXT) quantize_pvt_.lo \ -reservoir_.$(OBJEXT) reservoir_.lo set_get_.$(OBJEXT) set_get_.lo \ -tables_.$(OBJEXT) tables_.lo takehiro_.$(OBJEXT) takehiro_.lo \ -util_.$(OBJEXT) util_.lo vbrquantize_.$(OBJEXT) vbrquantize_.lo \ -version_.$(OBJEXT) version_.lo : $(ANSI2KNR) - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-recursive -all-am: Makefile $(LTLIBRARIES) $(HEADERS) -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(libdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ - mostlyclean-am - -distclean: distclean-recursive - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: install-libLTLIBRARIES - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \ - mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-libLTLIBRARIES - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \ - $(top_srcdir)/ansi2knr ctags-recursive install-am \ - install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic \ - clean-libLTLIBRARIES clean-libtool ctags ctags-recursive \ - distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-libLTLIBRARIES install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs installdirs-am \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-kr \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am uninstall-libLTLIBRARIES - - -# end global section - -lclint.txt: ${libmp3lame_la_SOURCES} ${noinst_HEADERS} - @lclint ${LCLINTFLAGS} ${INCLUDES} ${DEFS} ${libmp3lame_la_SOURCES} 2>&1 >lclint.txt || true - -lclint: lclint.txt - more lclint.txt - -#$(OBJECTS): libtool -#libtool: $(LIBTOOL_DEPS) -# $(SHELL) $(top_builddir)/config.status --recheck - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/platform/win32/msvc/external/lame/libmp3lame/VbrTag.c b/platform/win32/msvc/external/lame/libmp3lame/VbrTag.c deleted file mode 100644 index 3931a33ce22..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/VbrTag.c +++ /dev/null @@ -1,1082 +0,0 @@ -/* - * Xing VBR tagging for LAME. - * - * Copyright (c) 1999 A.L. Faber - * Copyright (c) 2001 Jonathan Dee - * - * 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. - */ - -/* $Id: VbrTag.c,v 1.103.2.1 2011/11/18 09:18:28 robert Exp $ */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "lame.h" -#include "machine.h" -#include "encoder.h" -#include "util.h" -#include "bitstream.h" -#include "VbrTag.h" -#include "lame_global_flags.h" -#include "tables.h" - -#ifdef __sun__ -/* woraround for SunOS 4.x, it has SEEK_* defined here */ -#include <unistd.h> -#endif - - -#ifdef _DEBUG -/* #define DEBUG_VBRTAG */ -#endif - -/* - * 4 bytes for Header Tag - * 4 bytes for Header Flags - * 100 bytes for entry (NUMTOCENTRIES) - * 4 bytes for FRAME SIZE - * 4 bytes for STREAM_SIZE - * 4 bytes for VBR SCALE. a VBR quality indicator: 0=best 100=worst - * 20 bytes for LAME tag. for example, "LAME3.12 (beta 6)" - * ___________ - * 140 bytes -*/ -#define VBRHEADERSIZE (NUMTOCENTRIES+4+4+4+4+4) - -#define LAMEHEADERSIZE (VBRHEADERSIZE + 9 + 1 + 1 + 8 + 1 + 1 + 3 + 1 + 1 + 2 + 4 + 2 + 2) - -/* the size of the Xing header (MPEG1 and MPEG2) in kbps */ -#define XING_BITRATE1 128 -#define XING_BITRATE2 64 -#define XING_BITRATE25 32 - -extern const char* get_lame_tag_encoder_short_version(void); - -static const char VBRTag0[] = { "Xing" }; -static const char VBRTag1[] = { "Info" }; - - - - -/* Lookup table for fast CRC computation - * See 'CRC_update_lookup' - * Uses the polynomial x^16+x^15+x^2+1 */ - -static const unsigned int crc16_lookup[256] = { - 0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241, - 0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440, - 0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40, - 0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841, - 0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40, - 0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41, - 0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641, - 0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040, - 0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240, - 0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441, - 0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41, - 0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840, - 0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41, - 0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40, - 0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640, - 0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041, - 0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240, - 0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441, - 0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41, - 0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840, - 0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41, - 0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40, - 0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640, - 0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041, - 0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241, - 0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440, - 0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40, - 0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841, - 0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40, - 0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41, - 0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641, - 0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040 -}; - - - - - -/*********************************************************************** - * Robert Hegemann 2001-01-17 - ***********************************************************************/ - -static void -addVbr(VBR_seek_info_t * v, int bitrate) -{ - int i; - - v->nVbrNumFrames++; - v->sum += bitrate; - v->seen++; - - if (v->seen < v->want) { - return; - } - - if (v->pos < v->size) { - v->bag[v->pos] = v->sum; - v->pos++; - v->seen = 0; - } - if (v->pos == v->size) { - for (i = 1; i < v->size; i += 2) { - v->bag[i / 2] = v->bag[i]; - } - v->want *= 2; - v->pos /= 2; - } -} - -static void -Xing_seek_table(VBR_seek_info_t const* v, unsigned char *t) -{ - int i, indx; - int seek_point; - - if (v->pos <= 0) - return; - - for (i = 1; i < NUMTOCENTRIES; ++i) { - float j = i / (float) NUMTOCENTRIES, act, sum; - indx = (int) (floor(j * v->pos)); - if (indx > v->pos - 1) - indx = v->pos - 1; - act = v->bag[indx]; - sum = v->sum; - seek_point = (int) (256. * act / sum); - if (seek_point > 255) - seek_point = 255; - t[i] = seek_point; - } -} - -#ifdef DEBUG_VBR_SEEKING_TABLE -static void -print_seeking(unsigned char *t) -{ - int i; - - printf("seeking table "); - for (i = 0; i < NUMTOCENTRIES; ++i) { - printf(" %d ", t[i]); - } - printf("\n"); -} -#endif - - -/**************************************************************************** - * AddVbrFrame: Add VBR entry, used to fill the VBR the TOC entries - * Paramters: - * nStreamPos: how many bytes did we write to the bitstream so far - * (in Bytes NOT Bits) - **************************************************************************** -*/ -void -AddVbrFrame(lame_internal_flags * gfc) -{ - int kbps = bitrate_table[gfc->cfg.version][gfc->ov_enc.bitrate_index]; - assert(gfc->VBR_seek_table.bag); - addVbr(&gfc->VBR_seek_table, kbps); -} - - -/*-------------------------------------------------------------*/ -static int -ExtractI4(const unsigned char *buf) -{ - int x; - /* big endian extract */ - x = buf[0]; - x <<= 8; - x |= buf[1]; - x <<= 8; - x |= buf[2]; - x <<= 8; - x |= buf[3]; - return x; -} - -static void -CreateI4(unsigned char *buf, uint32_t nValue) -{ - /* big endian create */ - buf[0] = (nValue >> 24) & 0xff; - buf[1] = (nValue >> 16) & 0xff; - buf[2] = (nValue >> 8) & 0xff; - buf[3] = (nValue) & 0xff; -} - - - -static void -CreateI2(unsigned char *buf, int nValue) -{ - /* big endian create */ - buf[0] = (nValue >> 8) & 0xff; - buf[1] = (nValue) & 0xff; -} - -/* check for magic strings*/ -static int -IsVbrTag(const unsigned char *buf) -{ - int isTag0, isTag1; - - isTag0 = ((buf[0] == VBRTag0[0]) && (buf[1] == VBRTag0[1]) && (buf[2] == VBRTag0[2]) - && (buf[3] == VBRTag0[3])); - isTag1 = ((buf[0] == VBRTag1[0]) && (buf[1] == VBRTag1[1]) && (buf[2] == VBRTag1[2]) - && (buf[3] == VBRTag1[3])); - - return (isTag0 || isTag1); -} - -#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) ) - -static void -setLameTagFrameHeader(lame_internal_flags const *gfc, unsigned char *buffer) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - EncResult_t const *const eov = &gfc->ov_enc; - char abyte, bbyte; - - SHIFT_IN_BITS_VALUE(buffer[0], 8u, 0xffu); - - SHIFT_IN_BITS_VALUE(buffer[1], 3u, 7); - SHIFT_IN_BITS_VALUE(buffer[1], 1u, (cfg->samplerate_out < 16000) ? 0 : 1); - SHIFT_IN_BITS_VALUE(buffer[1], 1u, cfg->version); - SHIFT_IN_BITS_VALUE(buffer[1], 2u, 4 - 3); - SHIFT_IN_BITS_VALUE(buffer[1], 1u, (!cfg->error_protection) ? 1 : 0); - - SHIFT_IN_BITS_VALUE(buffer[2], 4u, eov->bitrate_index); - SHIFT_IN_BITS_VALUE(buffer[2], 2u, cfg->samplerate_index); - SHIFT_IN_BITS_VALUE(buffer[2], 1u, 0); - SHIFT_IN_BITS_VALUE(buffer[2], 1u, cfg->extension); - - SHIFT_IN_BITS_VALUE(buffer[3], 2u, cfg->mode); - SHIFT_IN_BITS_VALUE(buffer[3], 2u, eov->mode_ext); - SHIFT_IN_BITS_VALUE(buffer[3], 1u, cfg->copyright); - SHIFT_IN_BITS_VALUE(buffer[3], 1u, cfg->original); - SHIFT_IN_BITS_VALUE(buffer[3], 2u, cfg->emphasis); - - /* the default VBR header. 48 kbps layer III, no padding, no crc */ - /* but sampling freq, mode andy copyright/copy protection taken */ - /* from first valid frame */ - buffer[0] = (uint8_t) 0xff; - abyte = (buffer[1] & (unsigned char) 0xf1); - { - int bitrate; - if (1 == cfg->version) { - bitrate = XING_BITRATE1; - } - else { - if (cfg->samplerate_out < 16000) - bitrate = XING_BITRATE25; - else - bitrate = XING_BITRATE2; - } - - if (cfg->vbr == vbr_off) - bitrate = cfg->avg_bitrate; - - if (cfg->free_format) - bbyte = 0x00; - else - bbyte = 16 * BitrateIndex(bitrate, cfg->version, cfg->samplerate_out); - } - - /* Use as much of the info from the real frames in the - * Xing header: samplerate, channels, crc, etc... - */ - if (cfg->version == 1) { - /* MPEG1 */ - buffer[1] = abyte | (char) 0x0a; /* was 0x0b; */ - abyte = buffer[2] & (char) 0x0d; /* AF keep also private bit */ - buffer[2] = (char) bbyte | abyte; /* 64kbs MPEG1 frame */ - } - else { - /* MPEG2 */ - buffer[1] = abyte | (char) 0x02; /* was 0x03; */ - abyte = buffer[2] & (char) 0x0d; /* AF keep also private bit */ - buffer[2] = (char) bbyte | abyte; /* 64kbs MPEG2 frame */ - } -} - -#if 0 -static int CheckVbrTag(unsigned char *buf); - -/*-------------------------------------------------------------*/ -/* Same as GetVbrTag below, but only checks for the Xing tag. - requires buf to contain only 40 bytes */ -/*-------------------------------------------------------------*/ -int -CheckVbrTag(unsigned char *buf) -{ - int h_id, h_mode; - - /* get selected MPEG header data */ - h_id = (buf[1] >> 3) & 1; - h_mode = (buf[3] >> 6) & 3; - - /* determine offset of header */ - if (h_id) { - /* mpeg1 */ - if (h_mode != 3) - buf += (32 + 4); - else - buf += (17 + 4); - } - else { - /* mpeg2 */ - if (h_mode != 3) - buf += (17 + 4); - else - buf += (9 + 4); - } - - return IsVbrTag(buf); -} -#endif - -int -GetVbrTag(VBRTAGDATA * pTagData, const unsigned char *buf) -{ - int i, head_flags; - int h_bitrate, h_id, h_mode, h_sr_index, h_layer; - int enc_delay, enc_padding; - - /* get Vbr header data */ - pTagData->flags = 0; - - /* get selected MPEG header data */ - h_layer = (buf[1] >> 1) & 3; - if ( h_layer != 0x01 ) { - /* the following code assumes Layer-3, so give up here */ - return 0; - } - h_id = (buf[1] >> 3) & 1; - h_sr_index = (buf[2] >> 2) & 3; - h_mode = (buf[3] >> 6) & 3; - h_bitrate = ((buf[2] >> 4) & 0xf); - h_bitrate = bitrate_table[h_id][h_bitrate]; - - /* check for FFE syncword */ - if ((buf[1] >> 4) == 0xE) - pTagData->samprate = samplerate_table[2][h_sr_index]; - else - pTagData->samprate = samplerate_table[h_id][h_sr_index]; - /* if( h_id == 0 ) */ - /* pTagData->samprate >>= 1; */ - - - - /* determine offset of header */ - if (h_id) { - /* mpeg1 */ - if (h_mode != 3) - buf += (32 + 4); - else - buf += (17 + 4); - } - else { - /* mpeg2 */ - if (h_mode != 3) - buf += (17 + 4); - else - buf += (9 + 4); - } - - if (!IsVbrTag(buf)) - return 0; - - buf += 4; - - pTagData->h_id = h_id; - - head_flags = pTagData->flags = ExtractI4(buf); - buf += 4; /* get flags */ - - if (head_flags & FRAMES_FLAG) { - pTagData->frames = ExtractI4(buf); - buf += 4; - } - - if (head_flags & BYTES_FLAG) { - pTagData->bytes = ExtractI4(buf); - buf += 4; - } - - if (head_flags & TOC_FLAG) { - if (pTagData->toc != NULL) { - for (i = 0; i < NUMTOCENTRIES; i++) - pTagData->toc[i] = buf[i]; - } - buf += NUMTOCENTRIES; - } - - pTagData->vbr_scale = -1; - - if (head_flags & VBR_SCALE_FLAG) { - pTagData->vbr_scale = ExtractI4(buf); - buf += 4; - } - - pTagData->headersize = ((h_id + 1) * 72000 * h_bitrate) / pTagData->samprate; - - buf += 21; - enc_delay = buf[0] << 4; - enc_delay += buf[1] >> 4; - enc_padding = (buf[1] & 0x0F) << 8; - enc_padding += buf[2]; - /* check for reasonable values (this may be an old Xing header, */ - /* not a INFO tag) */ - if (enc_delay < 0 || enc_delay > 3000) - enc_delay = -1; - if (enc_padding < 0 || enc_padding > 3000) - enc_padding = -1; - - pTagData->enc_delay = enc_delay; - pTagData->enc_padding = enc_padding; - -#ifdef DEBUG_VBRTAG - fprintf(stderr, "\n\n********************* VBR TAG INFO *****************\n"); - fprintf(stderr, "tag :%s\n", VBRTag); - fprintf(stderr, "head_flags :%d\n", head_flags); - fprintf(stderr, "bytes :%d\n", pTagData->bytes); - fprintf(stderr, "frames :%d\n", pTagData->frames); - fprintf(stderr, "VBR Scale :%d\n", pTagData->vbr_scale); - fprintf(stderr, "enc_delay = %i \n", enc_delay); - fprintf(stderr, "enc_padding= %i \n", enc_padding); - fprintf(stderr, "toc:\n"); - if (pTagData->toc != NULL) { - for (i = 0; i < NUMTOCENTRIES; i++) { - if ((i % 10) == 0) - fprintf(stderr, "\n"); - fprintf(stderr, " %3d", (int) (pTagData->toc[i])); - } - } - fprintf(stderr, "\n***************** END OF VBR TAG INFO ***************\n"); -#endif - return 1; /* success */ -} - - -/**************************************************************************** - * InitVbrTag: Initializes the header, and write empty frame to stream - * Paramters: - * fpStream: pointer to output file stream - * nMode : Channel Mode: 0=STEREO 1=JS 2=DS 3=MONO - **************************************************************************** -*/ -int -InitVbrTag(lame_global_flags * gfp) -{ - lame_internal_flags *gfc = gfp->internal_flags; - SessionConfig_t const *const cfg = &gfc->cfg; - int kbps_header; - -#define MAXFRAMESIZE 2880 /* or 0xB40, the max freeformat 640 32kHz framesize */ - - /* - * Xing VBR pretends to be a 48kbs layer III frame. (at 44.1kHz). - * (at 48kHz they use 56kbs since 48kbs frame not big enough for - * table of contents) - * let's always embed Xing header inside a 64kbs layer III frame. - * this gives us enough room for a LAME version string too. - * size determined by sampling frequency (MPEG1) - * 32kHz: 216 bytes@48kbs 288bytes@ 64kbs - * 44.1kHz: 156 bytes 208bytes@64kbs (+1 if padding = 1) - * 48kHz: 144 bytes 192 - * - * MPEG 2 values are the same since the framesize and samplerate - * are each reduced by a factor of 2. - */ - - - if (1 == cfg->version) { - kbps_header = XING_BITRATE1; - } - else { - if (cfg->samplerate_out < 16000) - kbps_header = XING_BITRATE25; - else - kbps_header = XING_BITRATE2; - } - - if (cfg->vbr == vbr_off) - kbps_header = cfg->avg_bitrate; - - /** make sure LAME Header fits into Frame - */ - { - int total_frame_size = ((cfg->version + 1) * 72000 * kbps_header) / cfg->samplerate_out; - int header_size = (cfg->sideinfo_len + LAMEHEADERSIZE); - gfc->VBR_seek_table.TotalFrameSize = total_frame_size; - if (total_frame_size < header_size || total_frame_size > MAXFRAMESIZE) { - /* disable tag, it wont fit */ - gfc->cfg.write_lame_tag = 0; - return 0; - } - } - - gfc->VBR_seek_table.nVbrNumFrames = 0; - gfc->VBR_seek_table.nBytesWritten = 0; - gfc->VBR_seek_table.sum = 0; - - gfc->VBR_seek_table.seen = 0; - gfc->VBR_seek_table.want = 1; - gfc->VBR_seek_table.pos = 0; - - if (gfc->VBR_seek_table.bag == NULL) { - gfc->VBR_seek_table.bag = malloc(400 * sizeof(int)); - if (gfc->VBR_seek_table.bag != NULL) { - gfc->VBR_seek_table.size = 400; - } - else { - gfc->VBR_seek_table.size = 0; - ERRORF(gfc, "Error: can't allocate VbrFrames buffer\n"); - gfc->cfg.write_lame_tag = 0; - return -1; - } - } - - /* write dummy VBR tag of all 0's into bitstream */ - { - uint8_t buffer[MAXFRAMESIZE]; - size_t i, n; - - memset(buffer, 0, sizeof(buffer)); - setLameTagFrameHeader(gfc, buffer); - n = gfc->VBR_seek_table.TotalFrameSize; - for (i = 0; i < n; ++i) { - add_dummy_byte(gfc, buffer[i], 1); - } - } - /* Success */ - return 0; -} - - - -/* fast CRC-16 computation - uses table crc16_lookup 8*/ -static uint16_t -CRC_update_lookup(uint16_t value, uint16_t crc) -{ - uint16_t tmp; - tmp = crc ^ value; - crc = (crc >> 8) ^ crc16_lookup[tmp & 0xff]; - return crc; -} - -void -UpdateMusicCRC(uint16_t * crc, unsigned char const *buffer, int size) -{ - int i; - for (i = 0; i < size; ++i) - *crc = CRC_update_lookup(buffer[i], *crc); -} - - - - - -/**************************************************************************** - * Jonathan Dee 2001/08/31 - * - * PutLameVBR: Write LAME info: mini version + info on various switches used - * Paramters: - * pbtStreamBuffer : pointer to output buffer - * id3v2size : size of id3v2 tag in bytes - * crc : computation of crc-16 of Lame Tag so far (starting at frame sync) - * - **************************************************************************** -*/ -static int -PutLameVBR(lame_global_flags const *gfp, size_t nMusicLength, uint8_t * pbtStreamBuffer, uint16_t crc) -{ - lame_internal_flags const *gfc = gfp->internal_flags; - SessionConfig_t const *const cfg = &gfc->cfg; - - int nBytesWritten = 0; - int i; - - int enc_delay = gfc->ov_enc.encoder_delay; /* encoder delay */ - int enc_padding = gfc->ov_enc.encoder_padding; /* encoder padding */ - - /*recall: cfg->vbr_q is for example set by the switch -V */ - /* gfp->quality by -q, -h, -f, etc */ - - int nQuality = (100 - 10 * gfp->VBR_q - gfp->quality); - - - /* - NOTE: - Even though the specification for the LAME VBR tag - did explicitly mention other encoders than LAME, - many SW/HW decoder seem to be able to make use of - this tag only, if the encoder version starts with LAME. - To be compatible with such decoders, ANY encoder will - be forced to write a fake LAME version string! - As a result, the encoder version info becomes worthless. - */ - const char *szVersion = get_lame_tag_encoder_short_version(); - uint8_t nVBR; - uint8_t nRevision = 0x00; - uint8_t nRevMethod; - uint8_t vbr_type_translator[] = { 1, 5, 3, 2, 4, 0, 3 }; /*numbering different in vbr_mode vs. Lame tag */ - - uint8_t nLowpass = - (((cfg->lowpassfreq / 100.0) + .5) > 255 ? 255 : (cfg->lowpassfreq / 100.0) + .5); - - uint32_t nPeakSignalAmplitude = 0; - - uint16_t nRadioReplayGain = 0; - uint16_t nAudiophileReplayGain = 0; - - uint8_t nNoiseShaping = cfg->noise_shaping; - uint8_t nStereoMode = 0; - int bNonOptimal = 0; - uint8_t nSourceFreq = 0; - uint8_t nMisc = 0; - uint16_t nMusicCRC = 0; - - /*psy model type: Gpsycho or NsPsytune */ - unsigned char bExpNPsyTune = 1; /* only NsPsytune */ - unsigned char bSafeJoint = (cfg->use_safe_joint_stereo) != 0; - - unsigned char bNoGapMore = 0; - unsigned char bNoGapPrevious = 0; - - int nNoGapCount = gfp->nogap_total; - int nNoGapCurr = gfp->nogap_current; - - - uint8_t nAthType = cfg->ATHtype; /*4 bits. */ - - uint8_t nFlags = 0; - - /* if ABR, {store bitrate <=255} else { store "-b"} */ - int nABRBitrate; - switch (cfg->vbr) { - case vbr_abr:{ - nABRBitrate = cfg->vbr_avg_bitrate_kbps; - break; - } - case vbr_off:{ - nABRBitrate = cfg->avg_bitrate; - break; - } - default:{ /*vbr modes */ - nABRBitrate = bitrate_table[cfg->version][cfg->vbr_min_bitrate_index];; - } - } - - - /*revision and vbr method */ - if (cfg->vbr < sizeof(vbr_type_translator)) - nVBR = vbr_type_translator[cfg->vbr]; - else - nVBR = 0x00; /*unknown. */ - - nRevMethod = 0x10 * nRevision + nVBR; - - - /* ReplayGain */ - if (cfg->findReplayGain) { - int RadioGain = gfc->ov_rpg.RadioGain; - if (RadioGain > 0x1FE) - RadioGain = 0x1FE; - if (RadioGain < -0x1FE) - RadioGain = -0x1FE; - - nRadioReplayGain = 0x2000; /* set name code */ - nRadioReplayGain |= 0xC00; /* set originator code to `determined automatically' */ - - if (RadioGain >= 0) - nRadioReplayGain |= RadioGain; /* set gain adjustment */ - else { - nRadioReplayGain |= 0x200; /* set the sign bit */ - nRadioReplayGain |= -RadioGain; /* set gain adjustment */ - } - } - - /* peak sample */ - if (cfg->findPeakSample) - nPeakSignalAmplitude = - abs((int) ((((FLOAT) gfc->ov_rpg.PeakSample) / 32767.0) * pow(2, 23) + .5)); - - /*nogap */ - if (nNoGapCount != -1) { - if (nNoGapCurr > 0) - bNoGapPrevious = 1; - - if (nNoGapCurr < nNoGapCount - 1) - bNoGapMore = 1; - } - - /*flags */ - - nFlags = nAthType + (bExpNPsyTune << 4) - + (bSafeJoint << 5) - + (bNoGapMore << 6) - + (bNoGapPrevious << 7); - - - if (nQuality < 0) - nQuality = 0; - - /*stereo mode field... a bit ugly. */ - - switch (cfg->mode) { - case MONO: - nStereoMode = 0; - break; - case STEREO: - nStereoMode = 1; - break; - case DUAL_CHANNEL: - nStereoMode = 2; - break; - case JOINT_STEREO: - if (cfg->force_ms) - nStereoMode = 4; - else - nStereoMode = 3; - break; - case NOT_SET: - /* FALLTHROUGH */ - default: - nStereoMode = 7; - break; - } - - /*Intensity stereo : nStereoMode = 6. IS is not implemented */ - - if (cfg->samplerate_in <= 32000) - nSourceFreq = 0x00; - else if (cfg->samplerate_in == 48000) - nSourceFreq = 0x02; - else if (cfg->samplerate_in > 48000) - nSourceFreq = 0x03; - else - nSourceFreq = 0x01; /*default is 44100Hz. */ - - - /*Check if the user overrided the default LAME behaviour with some nasty options */ - - if (cfg->short_blocks == short_block_forced || cfg->short_blocks == short_block_dispensed || ((cfg->lowpassfreq == -1) && (cfg->highpassfreq == -1)) || /* "-k" */ - (cfg->disable_reservoir && cfg->avg_bitrate < 320) || - cfg->noATH || cfg->ATHonly || (nAthType == 0) || cfg->samplerate_in <= 32000) - bNonOptimal = 1; - - nMisc = nNoiseShaping + (nStereoMode << 2) - + (bNonOptimal << 5) - + (nSourceFreq << 6); - - - nMusicCRC = gfc->nMusicCRC; - - - /*Write all this information into the stream */ - CreateI4(&pbtStreamBuffer[nBytesWritten], nQuality); - nBytesWritten += 4; - - strncpy((char *) &pbtStreamBuffer[nBytesWritten], szVersion, 9); - nBytesWritten += 9; - - pbtStreamBuffer[nBytesWritten] = nRevMethod; - nBytesWritten++; - - pbtStreamBuffer[nBytesWritten] = nLowpass; - nBytesWritten++; - - CreateI4(&pbtStreamBuffer[nBytesWritten], nPeakSignalAmplitude); - nBytesWritten += 4; - - CreateI2(&pbtStreamBuffer[nBytesWritten], nRadioReplayGain); - nBytesWritten += 2; - - CreateI2(&pbtStreamBuffer[nBytesWritten], nAudiophileReplayGain); - nBytesWritten += 2; - - pbtStreamBuffer[nBytesWritten] = nFlags; - nBytesWritten++; - - if (nABRBitrate >= 255) - pbtStreamBuffer[nBytesWritten] = 0xFF; - else - pbtStreamBuffer[nBytesWritten] = nABRBitrate; - nBytesWritten++; - - pbtStreamBuffer[nBytesWritten] = enc_delay >> 4; /* works for win32, does it for unix? */ - pbtStreamBuffer[nBytesWritten + 1] = (enc_delay << 4) + (enc_padding >> 8); - pbtStreamBuffer[nBytesWritten + 2] = enc_padding; - - nBytesWritten += 3; - - pbtStreamBuffer[nBytesWritten] = nMisc; - nBytesWritten++; - - - pbtStreamBuffer[nBytesWritten++] = 0; /*unused in rev0 */ - - CreateI2(&pbtStreamBuffer[nBytesWritten], cfg->preset); - nBytesWritten += 2; - - CreateI4(&pbtStreamBuffer[nBytesWritten], (int) nMusicLength); - nBytesWritten += 4; - - CreateI2(&pbtStreamBuffer[nBytesWritten], nMusicCRC); - nBytesWritten += 2; - - /*Calculate tag CRC.... must be done here, since it includes - *previous information*/ - - for (i = 0; i < nBytesWritten; i++) - crc = CRC_update_lookup(pbtStreamBuffer[i], crc); - - CreateI2(&pbtStreamBuffer[nBytesWritten], crc); - nBytesWritten += 2; - - return nBytesWritten; -} - -static long -skipId3v2(FILE * fpStream) -{ - size_t nbytes; - long id3v2TagSize; - unsigned char id3v2Header[10]; - - /* seek to the beginning of the stream */ - if (fseek(fpStream, 0, SEEK_SET) != 0) { - return -2; /* not seekable, abort */ - } - /* read 10 bytes in case there's an ID3 version 2 header here */ - nbytes = fread(id3v2Header, 1, sizeof(id3v2Header), fpStream); - if (nbytes != sizeof(id3v2Header)) { - return -3; /* not readable, maybe opened Write-Only */ - } - /* does the stream begin with the ID3 version 2 file identifier? */ - if (!strncmp((char *) id3v2Header, "ID3", 3)) { - /* the tag size (minus the 10-byte header) is encoded into four - * bytes where the most significant bit is clear in each byte */ - id3v2TagSize = (((id3v2Header[6] & 0x7f) << 21) - | ((id3v2Header[7] & 0x7f) << 14) - | ((id3v2Header[8] & 0x7f) << 7) - | (id3v2Header[9] & 0x7f)) - + sizeof id3v2Header; - } - else { - /* no ID3 version 2 tag in this stream */ - id3v2TagSize = 0; - } - return id3v2TagSize; -} - - - -size_t -lame_get_lametag_frame(lame_global_flags const *gfp, unsigned char *buffer, size_t size) -{ - lame_internal_flags *gfc; - SessionConfig_t const *cfg; - unsigned long stream_size; - unsigned int nStreamIndex; - uint8_t btToc[NUMTOCENTRIES]; - - if (gfp == 0) { - return 0; - } - gfc = gfp->internal_flags; - if (gfc == 0) { - return 0; - } - if (gfc->class_id != LAME_ID) { - return 0; - } - cfg = &gfc->cfg; - if (cfg->write_lame_tag == 0) { - return 0; - } - if (gfc->VBR_seek_table.pos <= 0) { - return 0; - } - if (size < gfc->VBR_seek_table.TotalFrameSize) { - return gfc->VBR_seek_table.TotalFrameSize; - } - if (buffer == 0) { - return 0; - } - - memset(buffer, 0, gfc->VBR_seek_table.TotalFrameSize); - - /* 4 bytes frame header */ - - setLameTagFrameHeader(gfc, buffer); - - /* Clear all TOC entries */ - memset(btToc, 0, sizeof(btToc)); - - if (cfg->free_format) { - int i; - for (i = 1; i < NUMTOCENTRIES; ++i) - btToc[i] = 255 * i / 100; - } - else { - Xing_seek_table(&gfc->VBR_seek_table, btToc); - } -#ifdef DEBUG_VBR_SEEKING_TABLE - print_seeking(btToc); -#endif - - /* Start writing the tag after the zero frame */ - nStreamIndex = cfg->sideinfo_len; - /* note! Xing header specifies that Xing data goes in the - * ancillary data with NO ERROR PROTECTION. If error protecton - * in enabled, the Xing data still starts at the same offset, - * and now it is in sideinfo data block, and thus will not - * decode correctly by non-Xing tag aware players */ - if (cfg->error_protection) - nStreamIndex -= 2; - - /* Put Vbr tag */ - if (cfg->vbr == vbr_off) { - buffer[nStreamIndex++] = VBRTag1[0]; - buffer[nStreamIndex++] = VBRTag1[1]; - buffer[nStreamIndex++] = VBRTag1[2]; - buffer[nStreamIndex++] = VBRTag1[3]; - - } - else { - buffer[nStreamIndex++] = VBRTag0[0]; - buffer[nStreamIndex++] = VBRTag0[1]; - buffer[nStreamIndex++] = VBRTag0[2]; - buffer[nStreamIndex++] = VBRTag0[3]; - } - - /* Put header flags */ - CreateI4(&buffer[nStreamIndex], FRAMES_FLAG + BYTES_FLAG + TOC_FLAG + VBR_SCALE_FLAG); - nStreamIndex += 4; - - /* Put Total Number of frames */ - CreateI4(&buffer[nStreamIndex], gfc->VBR_seek_table.nVbrNumFrames); - nStreamIndex += 4; - - /* Put total audio stream size, including Xing/LAME Header */ - stream_size = gfc->VBR_seek_table.nBytesWritten + gfc->VBR_seek_table.TotalFrameSize; - CreateI4(&buffer[nStreamIndex], stream_size); - nStreamIndex += 4; - - /* Put TOC */ - memcpy(&buffer[nStreamIndex], btToc, sizeof(btToc)); - nStreamIndex += sizeof(btToc); - - - if (cfg->error_protection) { - /* (jo) error_protection: add crc16 information to header */ - CRC_writeheader(gfc, (char *) buffer); - } - { - /*work out CRC so far: initially crc = 0 */ - uint16_t crc = 0x00; - unsigned int i; - for (i = 0; i < nStreamIndex; i++) - crc = CRC_update_lookup(buffer[i], crc); - /*Put LAME VBR info */ - nStreamIndex += PutLameVBR(gfp, stream_size, buffer + nStreamIndex, crc); - } - -#ifdef DEBUG_VBRTAG - { - VBRTAGDATA TestHeader; - GetVbrTag(&TestHeader, buffer); - } -#endif - - return gfc->VBR_seek_table.TotalFrameSize; -} - -/*********************************************************************** - * - * PutVbrTag: Write final VBR tag to the file - * Paramters: - * lpszFileName: filename of MP3 bit stream - * nVbrScale : encoder quality indicator (0..100) - **************************************************************************** - */ - -int -PutVbrTag(lame_global_flags const *gfp, FILE * fpStream) -{ - lame_internal_flags *gfc = gfp->internal_flags; - - long lFileSize; - long id3v2TagSize; - size_t nbytes; - uint8_t buffer[MAXFRAMESIZE]; - - if (gfc->VBR_seek_table.pos <= 0) - return -1; - - /* Seek to end of file */ - fseek(fpStream, 0, SEEK_END); - - /* Get file size */ - lFileSize = ftell(fpStream); - - /* Abort if file has zero length. Yes, it can happen :) */ - if (lFileSize == 0) - return -1; - - /* - * The VBR tag may NOT be located at the beginning of the stream. - * If an ID3 version 2 tag was added, then it must be skipped to write - * the VBR tag data. - */ - - id3v2TagSize = skipId3v2(fpStream); - - if (id3v2TagSize < 0) { - return id3v2TagSize; - } - - /*Seek to the beginning of the stream */ - fseek(fpStream, id3v2TagSize, SEEK_SET); - - nbytes = lame_get_lametag_frame(gfp, buffer, sizeof(buffer)); - if (nbytes > sizeof(buffer)) { - return -1; - } - - if (nbytes < 1) { - return 0; - } - - /* Put it all to disk again */ - if (fwrite(buffer, nbytes, 1, fpStream) != 1) { - return -1; - } - - return 0; /* success */ -} diff --git a/platform/win32/msvc/external/lame/libmp3lame/VbrTag.h b/platform/win32/msvc/external/lame/libmp3lame/VbrTag.h deleted file mode 100644 index 406af3667d2..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/VbrTag.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Xing VBR tagging for LAME. - * - * Copyright (c) 1999 A.L. Faber - * - * 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 LAME_VRBTAG_H -#define LAME_VRBTAG_H - - -/* ----------------------------------------------------------- - * A Vbr header may be present in the ancillary - * data field of the first frame of an mp3 bitstream - * The Vbr header (optionally) contains - * frames total number of audio frames in the bitstream - * bytes total number of bytes in the bitstream - * toc table of contents - - * toc (table of contents) gives seek points - * for random access - * the ith entry determines the seek point for - * i-percent duration - * seek point in bytes = (toc[i]/256.0) * total_bitstream_bytes - * e.g. half duration seek point = (toc[50]/256.0) * total_bitstream_bytes - */ - - -#define FRAMES_FLAG 0x0001 -#define BYTES_FLAG 0x0002 -#define TOC_FLAG 0x0004 -#define VBR_SCALE_FLAG 0x0008 - -#define NUMTOCENTRIES 100 - -#ifndef lame_internal_flags_defined -#define lame_internal_flags_defined -struct lame_internal_flags; -typedef struct lame_internal_flags lame_internal_flags; -#endif - - -/*structure to receive extracted header */ -/* toc may be NULL*/ -typedef struct { - int h_id; /* from MPEG header, 0=MPEG2, 1=MPEG1 */ - int samprate; /* determined from MPEG header */ - int flags; /* from Vbr header data */ - int frames; /* total bit stream frames from Vbr header data */ - int bytes; /* total bit stream bytes from Vbr header data */ - int vbr_scale; /* encoded vbr scale from Vbr header data */ - unsigned char toc[NUMTOCENTRIES]; /* may be NULL if toc not desired */ - int headersize; /* size of VBR header, in bytes */ - int enc_delay; /* encoder delay */ - int enc_padding; /* encoder paddign added at end of stream */ -} VBRTAGDATA; - -int GetVbrTag(VBRTAGDATA * pTagData, const unsigned char *buf); - -int InitVbrTag(lame_global_flags * gfp); -int PutVbrTag(lame_global_flags const *gfp, FILE * fid); -void AddVbrFrame(lame_internal_flags * gfc); -void UpdateMusicCRC(uint16_t * crc, const unsigned char *buffer, int size); - -#endif diff --git a/platform/win32/msvc/external/lame/libmp3lame/bitstream.c b/platform/win32/msvc/external/lame/libmp3lame/bitstream.c deleted file mode 100644 index b11edfb2b05..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/bitstream.c +++ /dev/null @@ -1,1111 +0,0 @@ -/* - * MP3 bitstream Output interface for LAME - * - * Copyright (c) 1999-2000 Mark Taylor - * Copyright (c) 1999-2002 Takehiro Tominaga - * - * 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. - * - * $Id: bitstream.c,v 1.97 2011/05/07 16:05:17 rbrito Exp $ - */ - - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <stdlib.h> -#include <stdio.h> - -#include "lame.h" -#include "machine.h" -#include "encoder.h" -#include "util.h" -#include "tables.h" -#include "quantize_pvt.h" -#include "lame_global_flags.h" -#include "gain_analysis.h" -#include "VbrTag.h" -#include "bitstream.h" -#include "tables.h" - - - -/* unsigned int is at least this large: */ -/* we work with ints, so when doing bit manipulation, we limit - * ourselves to MAX_LENGTH-2 just to be on the safe side */ -#define MAX_LENGTH 32 - - - -#ifdef DEBUG -static int hogege; -#endif - - - -static int -calcFrameLength(SessionConfig_t const *const cfg, int kbps, int pad) -{ - return 8 * ((cfg->version + 1) * 72000 * kbps / cfg->samplerate_out + pad); -} - - -/*********************************************************************** - * compute bitsperframe and mean_bits for a layer III frame - **********************************************************************/ -int -getframebits(const lame_internal_flags * gfc) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - EncResult_t const *const eov = &gfc->ov_enc; - int bit_rate; - - /* get bitrate in kbps [?] */ - if (eov->bitrate_index) - bit_rate = bitrate_table[cfg->version][eov->bitrate_index]; - else - bit_rate = cfg->avg_bitrate; - /*assert(bit_rate <= 550); */ - assert(8 <= bit_rate && bit_rate <= 640); - - /* main encoding routine toggles padding on and off */ - /* one Layer3 Slot consists of 8 bits */ - return calcFrameLength(cfg, bit_rate, eov->padding); -} - -int -get_max_frame_buffer_size_by_constraint(SessionConfig_t const * cfg, int constraint) -{ - int maxmp3buf = 0; - if (cfg->avg_bitrate > 320) { - /* in freeformat the buffer is constant */ - if (constraint == MDB_STRICT_ISO) { - maxmp3buf = calcFrameLength(cfg, cfg->avg_bitrate, 0); - } - else { - /* maximum allowed bits per granule are 7680 */ - maxmp3buf = 7680 * (cfg->version + 1); - } - } - else { - int max_kbps; - if (cfg->samplerate_out < 16000) { - max_kbps = bitrate_table[cfg->version][8]; /* default: allow 64 kbps (MPEG-2.5) */ - } - else { - max_kbps = bitrate_table[cfg->version][14]; - } - switch (constraint) - { - default: - case MDB_DEFAULT: - /* Bouvigne suggests this more lax interpretation of the ISO doc instead of using 8*960. */ - /* All mp3 decoders should have enough buffer to handle this value: size of a 320kbps 32kHz frame */ - maxmp3buf = 8 * 1440; - break; - case MDB_STRICT_ISO: - maxmp3buf = calcFrameLength(cfg, max_kbps, 0); - break; - case MDB_MAXIMUM: - maxmp3buf = 7680 * (cfg->version + 1); - break; - } - } - return maxmp3buf; -} - - -static void -putheader_bits(lame_internal_flags * gfc) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - EncStateVar_t *const esv = &gfc->sv_enc; - Bit_stream_struc *bs = &gfc->bs; -#ifdef DEBUG - hogege += cfg->sideinfo_len * 8; -#endif - memcpy(&bs->buf[bs->buf_byte_idx], esv->header[esv->w_ptr].buf, cfg->sideinfo_len); - bs->buf_byte_idx += cfg->sideinfo_len; - bs->totbit += cfg->sideinfo_len * 8; - esv->w_ptr = (esv->w_ptr + 1) & (MAX_HEADER_BUF - 1); -} - - - - -/*write j bits into the bit stream */ -inline static void -putbits2(lame_internal_flags * gfc, int val, int j) -{ - EncStateVar_t const *const esv = &gfc->sv_enc; - Bit_stream_struc *bs; - bs = &gfc->bs; - - assert(j < MAX_LENGTH - 2); - - while (j > 0) { - int k; - if (bs->buf_bit_idx == 0) { - bs->buf_bit_idx = 8; - bs->buf_byte_idx++; - assert(bs->buf_byte_idx < BUFFER_SIZE); - assert(esv->header[esv->w_ptr].write_timing >= bs->totbit); - if (esv->header[esv->w_ptr].write_timing == bs->totbit) { - putheader_bits(gfc); - } - bs->buf[bs->buf_byte_idx] = 0; - } - - k = Min(j, bs->buf_bit_idx); - j -= k; - - bs->buf_bit_idx -= k; - - assert(j < MAX_LENGTH); /* 32 too large on 32 bit machines */ - assert(bs->buf_bit_idx < MAX_LENGTH); - - bs->buf[bs->buf_byte_idx] |= ((val >> j) << bs->buf_bit_idx); - bs->totbit += k; - } -} - -/*write j bits into the bit stream, ignoring frame headers */ -inline static void -putbits_noheaders(lame_internal_flags * gfc, int val, int j) -{ - Bit_stream_struc *bs; - bs = &gfc->bs; - - assert(j < MAX_LENGTH - 2); - - while (j > 0) { - int k; - if (bs->buf_bit_idx == 0) { - bs->buf_bit_idx = 8; - bs->buf_byte_idx++; - assert(bs->buf_byte_idx < BUFFER_SIZE); - bs->buf[bs->buf_byte_idx] = 0; - } - - k = Min(j, bs->buf_bit_idx); - j -= k; - - bs->buf_bit_idx -= k; - - assert(j < MAX_LENGTH); /* 32 too large on 32 bit machines */ - assert(bs->buf_bit_idx < MAX_LENGTH); - - bs->buf[bs->buf_byte_idx] |= ((val >> j) << bs->buf_bit_idx); - bs->totbit += k; - } -} - - -/* - Some combinations of bitrate, Fs, and stereo make it impossible to stuff - out a frame using just main_data, due to the limited number of bits to - indicate main_data_length. In these situations, we put stuffing bits into - the ancillary data... -*/ - -inline static void -drain_into_ancillary(lame_internal_flags * gfc, int remainingBits) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - EncStateVar_t *const esv = &gfc->sv_enc; - int i; - assert(remainingBits >= 0); - - if (remainingBits >= 8) { - putbits2(gfc, 0x4c, 8); - remainingBits -= 8; - } - if (remainingBits >= 8) { - putbits2(gfc, 0x41, 8); - remainingBits -= 8; - } - if (remainingBits >= 8) { - putbits2(gfc, 0x4d, 8); - remainingBits -= 8; - } - if (remainingBits >= 8) { - putbits2(gfc, 0x45, 8); - remainingBits -= 8; - } - - if (remainingBits >= 32) { - const char *const version = get_lame_short_version(); - if (remainingBits >= 32) - for (i = 0; i < (int) strlen(version) && remainingBits >= 8; ++i) { - remainingBits -= 8; - putbits2(gfc, version[i], 8); - } - } - - for (; remainingBits >= 1; remainingBits -= 1) { - putbits2(gfc, esv->ancillary_flag, 1); - esv->ancillary_flag ^= !cfg->disable_reservoir; - } - - assert(remainingBits == 0); - -} - -/*write N bits into the header */ -inline static void -writeheader(lame_internal_flags * gfc, int val, int j) -{ - EncStateVar_t *const esv = &gfc->sv_enc; - int ptr = esv->header[esv->h_ptr].ptr; - - while (j > 0) { - int const k = Min(j, 8 - (ptr & 7)); - j -= k; - assert(j < MAX_LENGTH); /* >> 32 too large for 32 bit machines */ - esv->header[esv->h_ptr].buf[ptr >> 3] - |= ((val >> j)) << (8 - (ptr & 7) - k); - ptr += k; - } - esv->header[esv->h_ptr].ptr = ptr; -} - - -static int -CRC_update(int value, int crc) -{ - int i; - value <<= 8; - for (i = 0; i < 8; i++) { - value <<= 1; - crc <<= 1; - - if (((crc ^ value) & 0x10000)) - crc ^= CRC16_POLYNOMIAL; - } - return crc; -} - - -void -CRC_writeheader(lame_internal_flags const *gfc, char *header) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - int crc = 0xffff; /* (jo) init crc16 for error_protection */ - int i; - - crc = CRC_update(((unsigned char *) header)[2], crc); - crc = CRC_update(((unsigned char *) header)[3], crc); - for (i = 6; i < cfg->sideinfo_len; i++) { - crc = CRC_update(((unsigned char *) header)[i], crc); - } - - header[4] = crc >> 8; - header[5] = crc & 255; -} - -inline static void -encodeSideInfo2(lame_internal_flags * gfc, int bitsPerFrame) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - EncResult_t const *const eov = &gfc->ov_enc; - EncStateVar_t *const esv = &gfc->sv_enc; - III_side_info_t *l3_side; - int gr, ch; - - l3_side = &gfc->l3_side; - esv->header[esv->h_ptr].ptr = 0; - memset(esv->header[esv->h_ptr].buf, 0, cfg->sideinfo_len); - if (cfg->samplerate_out < 16000) - writeheader(gfc, 0xffe, 12); - else - writeheader(gfc, 0xfff, 12); - writeheader(gfc, (cfg->version), 1); - writeheader(gfc, 4 - 3, 2); - writeheader(gfc, (!cfg->error_protection), 1); - writeheader(gfc, (eov->bitrate_index), 4); - writeheader(gfc, (cfg->samplerate_index), 2); - writeheader(gfc, (eov->padding), 1); - writeheader(gfc, (cfg->extension), 1); - writeheader(gfc, (cfg->mode), 2); - writeheader(gfc, (eov->mode_ext), 2); - writeheader(gfc, (cfg->copyright), 1); - writeheader(gfc, (cfg->original), 1); - writeheader(gfc, (cfg->emphasis), 2); - if (cfg->error_protection) { - writeheader(gfc, 0, 16); /* dummy */ - } - - if (cfg->version == 1) { - /* MPEG1 */ - assert(l3_side->main_data_begin >= 0); - writeheader(gfc, (l3_side->main_data_begin), 9); - - if (cfg->channels_out == 2) - writeheader(gfc, l3_side->private_bits, 3); - else - writeheader(gfc, l3_side->private_bits, 5); - - for (ch = 0; ch < cfg->channels_out; ch++) { - int band; - for (band = 0; band < 4; band++) { - writeheader(gfc, l3_side->scfsi[ch][band], 1); - } - } - - for (gr = 0; gr < 2; gr++) { - for (ch = 0; ch < cfg->channels_out; ch++) { - gr_info *const gi = &l3_side->tt[gr][ch]; - writeheader(gfc, gi->part2_3_length + gi->part2_length, 12); - writeheader(gfc, gi->big_values / 2, 9); - writeheader(gfc, gi->global_gain, 8); - writeheader(gfc, gi->scalefac_compress, 4); - - if (gi->block_type != NORM_TYPE) { - writeheader(gfc, 1, 1); /* window_switching_flag */ - writeheader(gfc, gi->block_type, 2); - writeheader(gfc, gi->mixed_block_flag, 1); - - if (gi->table_select[0] == 14) - gi->table_select[0] = 16; - writeheader(gfc, gi->table_select[0], 5); - if (gi->table_select[1] == 14) - gi->table_select[1] = 16; - writeheader(gfc, gi->table_select[1], 5); - - writeheader(gfc, gi->subblock_gain[0], 3); - writeheader(gfc, gi->subblock_gain[1], 3); - writeheader(gfc, gi->subblock_gain[2], 3); - } - else { - writeheader(gfc, 0, 1); /* window_switching_flag */ - if (gi->table_select[0] == 14) - gi->table_select[0] = 16; - writeheader(gfc, gi->table_select[0], 5); - if (gi->table_select[1] == 14) - gi->table_select[1] = 16; - writeheader(gfc, gi->table_select[1], 5); - if (gi->table_select[2] == 14) - gi->table_select[2] = 16; - writeheader(gfc, gi->table_select[2], 5); - - assert(0 <= gi->region0_count && gi->region0_count < 16); - assert(0 <= gi->region1_count && gi->region1_count < 8); - writeheader(gfc, gi->region0_count, 4); - writeheader(gfc, gi->region1_count, 3); - } - writeheader(gfc, gi->preflag, 1); - writeheader(gfc, gi->scalefac_scale, 1); - writeheader(gfc, gi->count1table_select, 1); - } - } - } - else { - /* MPEG2 */ - assert(l3_side->main_data_begin >= 0); - writeheader(gfc, (l3_side->main_data_begin), 8); - writeheader(gfc, l3_side->private_bits, cfg->channels_out); - - gr = 0; - for (ch = 0; ch < cfg->channels_out; ch++) { - gr_info *const gi = &l3_side->tt[gr][ch]; - writeheader(gfc, gi->part2_3_length + gi->part2_length, 12); - writeheader(gfc, gi->big_values / 2, 9); - writeheader(gfc, gi->global_gain, 8); - writeheader(gfc, gi->scalefac_compress, 9); - - if (gi->block_type != NORM_TYPE) { - writeheader(gfc, 1, 1); /* window_switching_flag */ - writeheader(gfc, gi->block_type, 2); - writeheader(gfc, gi->mixed_block_flag, 1); - - if (gi->table_select[0] == 14) - gi->table_select[0] = 16; - writeheader(gfc, gi->table_select[0], 5); - if (gi->table_select[1] == 14) - gi->table_select[1] = 16; - writeheader(gfc, gi->table_select[1], 5); - - writeheader(gfc, gi->subblock_gain[0], 3); - writeheader(gfc, gi->subblock_gain[1], 3); - writeheader(gfc, gi->subblock_gain[2], 3); - } - else { - writeheader(gfc, 0, 1); /* window_switching_flag */ - if (gi->table_select[0] == 14) - gi->table_select[0] = 16; - writeheader(gfc, gi->table_select[0], 5); - if (gi->table_select[1] == 14) - gi->table_select[1] = 16; - writeheader(gfc, gi->table_select[1], 5); - if (gi->table_select[2] == 14) - gi->table_select[2] = 16; - writeheader(gfc, gi->table_select[2], 5); - - assert(0 <= gi->region0_count && gi->region0_count < 16); - assert(0 <= gi->region1_count && gi->region1_count < 8); - writeheader(gfc, gi->region0_count, 4); - writeheader(gfc, gi->region1_count, 3); - } - - writeheader(gfc, gi->scalefac_scale, 1); - writeheader(gfc, gi->count1table_select, 1); - } - } - - if (cfg->error_protection) { - /* (jo) error_protection: add crc16 information to header */ - CRC_writeheader(gfc, esv->header[esv->h_ptr].buf); - } - - { - int const old = esv->h_ptr; - assert(esv->header[old].ptr == cfg->sideinfo_len * 8); - - esv->h_ptr = (old + 1) & (MAX_HEADER_BUF - 1); - esv->header[esv->h_ptr].write_timing = esv->header[old].write_timing + bitsPerFrame; - - if (esv->h_ptr == esv->w_ptr) { - /* yikes! we are out of header buffer space */ - ERRORF(gfc, "Error: MAX_HEADER_BUF too small in bitstream.c \n"); - } - - } -} - - -inline static int -huffman_coder_count1(lame_internal_flags * gfc, gr_info const *gi) -{ - /* Write count1 area */ - struct huffcodetab const *const h = &ht[gi->count1table_select + 32]; - int i, bits = 0; -#ifdef DEBUG - int gegebo = gfc->bs.totbit; -#endif - - int const *ix = &gi->l3_enc[gi->big_values]; - FLOAT const *xr = &gi->xr[gi->big_values]; - assert(gi->count1table_select < 2); - - for (i = (gi->count1 - gi->big_values) / 4; i > 0; --i) { - int huffbits = 0; - int p = 0, v; - - v = ix[0]; - if (v) { - p += 8; - if (xr[0] < 0.0f) - huffbits++; - assert(v <= 1); - } - - v = ix[1]; - if (v) { - p += 4; - huffbits *= 2; - if (xr[1] < 0.0f) - huffbits++; - assert(v <= 1); - } - - v = ix[2]; - if (v) { - p += 2; - huffbits *= 2; - if (xr[2] < 0.0f) - huffbits++; - assert(v <= 1); - } - - v = ix[3]; - if (v) { - p++; - huffbits *= 2; - if (xr[3] < 0.0f) - huffbits++; - assert(v <= 1); - } - - ix += 4; - xr += 4; - putbits2(gfc, huffbits + h->table[p], h->hlen[p]); - bits += h->hlen[p]; - } -#ifdef DEBUG - DEBUGF(gfc, "count1: real: %ld counted:%d (bigv %d count1len %d)\n", - gfc->bs.totbit - gegebo, gi->count1bits, gi->big_values, gi->count1); -#endif - return bits; -} - - - -/* - Implements the pseudocode of page 98 of the IS - */ -inline static int -Huffmancode(lame_internal_flags * const gfc, const unsigned int tableindex, - int start, int end, gr_info const *gi) -{ - struct huffcodetab const *const h = &ht[tableindex]; - unsigned int const linbits = h->xlen; - int i, bits = 0; - - assert(tableindex < 32u); - if (!tableindex) - return bits; - - for (i = start; i < end; i += 2) { - int16_t cbits = 0; - uint16_t xbits = 0; - unsigned int xlen = h->xlen; - unsigned int ext = 0; - unsigned int x1 = gi->l3_enc[i]; - unsigned int x2 = gi->l3_enc[i + 1]; - - assert(gi->l3_enc[i] >= 0); - assert(gi->l3_enc[i+1] >= 0); - - if (x1 != 0u) { - if (gi->xr[i] < 0.0f) - ext++; - cbits--; - } - - if (tableindex > 15u) { - /* use ESC-words */ - if (x1 >= 15u) { - uint16_t const linbits_x1 = x1 - 15u; - assert(linbits_x1 <= h->linmax); - ext |= linbits_x1 << 1u; - xbits = linbits; - x1 = 15u; - } - - if (x2 >= 15u) { - uint16_t const linbits_x2 = x2 - 15u; - assert(linbits_x2 <= h->linmax); - ext <<= linbits; - ext |= linbits_x2; - xbits += linbits; - x2 = 15u; - } - xlen = 16; - } - - if (x2 != 0u) { - ext <<= 1; - if (gi->xr[i + 1] < 0.0f) - ext++; - cbits--; - } - - assert((x1 | x2) < 16u); - - x1 = x1 * xlen + x2; - xbits -= cbits; - cbits += h->hlen[x1]; - - assert(cbits <= MAX_LENGTH); - assert(xbits <= MAX_LENGTH); - - putbits2(gfc, h->table[x1], cbits); - putbits2(gfc, (int)ext, xbits); - bits += cbits + xbits; - } - return bits; -} - -/* - Note the discussion of huffmancodebits() on pages 28 - and 29 of the IS, as well as the definitions of the side - information on pages 26 and 27. - */ -static int -ShortHuffmancodebits(lame_internal_flags * gfc, gr_info const *gi) -{ - int bits; - int region1Start; - - region1Start = 3 * gfc->scalefac_band.s[3]; - if (region1Start > gi->big_values) - region1Start = gi->big_values; - - /* short blocks do not have a region2 */ - bits = Huffmancode(gfc, gi->table_select[0], 0, region1Start, gi); - bits += Huffmancode(gfc, gi->table_select[1], region1Start, gi->big_values, gi); - return bits; -} - -static int -LongHuffmancodebits(lame_internal_flags * gfc, gr_info const *gi) -{ - unsigned int i; - int bigvalues, bits; - int region1Start, region2Start; - - bigvalues = gi->big_values; - assert(0 <= bigvalues && bigvalues <= 576); - - assert(gi->region0_count >= -1); - assert(gi->region1_count >= -1); - i = gi->region0_count + 1; - assert((size_t) i < dimension_of(gfc->scalefac_band.l)); - region1Start = gfc->scalefac_band.l[i]; - i += gi->region1_count + 1; - assert((size_t) i < dimension_of(gfc->scalefac_band.l)); - region2Start = gfc->scalefac_band.l[i]; - - if (region1Start > bigvalues) - region1Start = bigvalues; - - if (region2Start > bigvalues) - region2Start = bigvalues; - - bits = Huffmancode(gfc, gi->table_select[0], 0, region1Start, gi); - bits += Huffmancode(gfc, gi->table_select[1], region1Start, region2Start, gi); - bits += Huffmancode(gfc, gi->table_select[2], region2Start, bigvalues, gi); - return bits; -} - -inline static int -writeMainData(lame_internal_flags * const gfc) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - III_side_info_t const *const l3_side = &gfc->l3_side; - int gr, ch, sfb, data_bits, tot_bits = 0; - - if (cfg->version == 1) { - /* MPEG 1 */ - for (gr = 0; gr < 2; gr++) { - for (ch = 0; ch < cfg->channels_out; ch++) { - gr_info const *const gi = &l3_side->tt[gr][ch]; - int const slen1 = slen1_tab[gi->scalefac_compress]; - int const slen2 = slen2_tab[gi->scalefac_compress]; - data_bits = 0; -#ifdef DEBUG - hogege = gfc->bs.totbit; -#endif - for (sfb = 0; sfb < gi->sfbdivide; sfb++) { - if (gi->scalefac[sfb] == -1) - continue; /* scfsi is used */ - putbits2(gfc, gi->scalefac[sfb], slen1); - data_bits += slen1; - } - for (; sfb < gi->sfbmax; sfb++) { - if (gi->scalefac[sfb] == -1) - continue; /* scfsi is used */ - putbits2(gfc, gi->scalefac[sfb], slen2); - data_bits += slen2; - } - assert(data_bits == gi->part2_length); - - if (gi->block_type == SHORT_TYPE) { - data_bits += ShortHuffmancodebits(gfc, gi); - } - else { - data_bits += LongHuffmancodebits(gfc, gi); - } - data_bits += huffman_coder_count1(gfc, gi); -#ifdef DEBUG - DEBUGF(gfc, "<%ld> ", gfc->bs.totbit - hogege); -#endif - /* does bitcount in quantize.c agree with actual bit count? */ - assert(data_bits == gi->part2_3_length + gi->part2_length); - tot_bits += data_bits; - } /* for ch */ - } /* for gr */ - } - else { - /* MPEG 2 */ - gr = 0; - for (ch = 0; ch < cfg->channels_out; ch++) { - gr_info const *const gi = &l3_side->tt[gr][ch]; - int i, sfb_partition, scale_bits = 0; - assert(gi->sfb_partition_table); - data_bits = 0; -#ifdef DEBUG - hogege = gfc->bs.totbit; -#endif - sfb = 0; - sfb_partition = 0; - - if (gi->block_type == SHORT_TYPE) { - for (; sfb_partition < 4; sfb_partition++) { - int const sfbs = gi->sfb_partition_table[sfb_partition] / 3; - int const slen = gi->slen[sfb_partition]; - for (i = 0; i < sfbs; i++, sfb++) { - putbits2(gfc, Max(gi->scalefac[sfb * 3 + 0], 0), slen); - putbits2(gfc, Max(gi->scalefac[sfb * 3 + 1], 0), slen); - putbits2(gfc, Max(gi->scalefac[sfb * 3 + 2], 0), slen); - scale_bits += 3 * slen; - } - } - data_bits += ShortHuffmancodebits(gfc, gi); - } - else { - for (; sfb_partition < 4; sfb_partition++) { - int const sfbs = gi->sfb_partition_table[sfb_partition]; - int const slen = gi->slen[sfb_partition]; - for (i = 0; i < sfbs; i++, sfb++) { - putbits2(gfc, Max(gi->scalefac[sfb], 0), slen); - scale_bits += slen; - } - } - data_bits += LongHuffmancodebits(gfc, gi); - } - data_bits += huffman_coder_count1(gfc, gi); -#ifdef DEBUG - DEBUGF(gfc, "<%ld> ", gfc->bs.totbit - hogege); -#endif - /* does bitcount in quantize.c agree with actual bit count? */ - assert(data_bits == gi->part2_3_length); - assert(scale_bits == gi->part2_length); - tot_bits += scale_bits + data_bits; - } /* for ch */ - } /* for gf */ - return tot_bits; -} /* main_data */ - - - -/* compute the number of bits required to flush all mp3 frames - currently in the buffer. This should be the same as the - reservoir size. Only call this routine between frames - i.e. - only after all headers and data have been added to the buffer - by format_bitstream(). - - Also compute total_bits_output = - size of mp3 buffer (including frame headers which may not - have yet been send to the mp3 buffer) + - number of bits needed to flush all mp3 frames. - - total_bytes_output is the size of the mp3 output buffer if - lame_encode_flush_nogap() was called right now. - - */ -int -compute_flushbits(const lame_internal_flags * gfc, int *total_bytes_output) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - EncStateVar_t const *const esv = &gfc->sv_enc; - int flushbits, remaining_headers; - int bitsPerFrame; - int last_ptr, first_ptr; - first_ptr = esv->w_ptr; /* first header to add to bitstream */ - last_ptr = esv->h_ptr - 1; /* last header to add to bitstream */ - if (last_ptr == -1) - last_ptr = MAX_HEADER_BUF - 1; - - /* add this many bits to bitstream so we can flush all headers */ - flushbits = esv->header[last_ptr].write_timing - gfc->bs.totbit; - *total_bytes_output = flushbits; - - if (flushbits >= 0) { - /* if flushbits >= 0, some headers have not yet been written */ - /* reduce flushbits by the size of the headers */ - remaining_headers = 1 + last_ptr - first_ptr; - if (last_ptr < first_ptr) - remaining_headers = 1 + last_ptr - first_ptr + MAX_HEADER_BUF; - flushbits -= remaining_headers * 8 * cfg->sideinfo_len; - } - - - /* finally, add some bits so that the last frame is complete - * these bits are not necessary to decode the last frame, but - * some decoders will ignore last frame if these bits are missing - */ - bitsPerFrame = getframebits(gfc); - flushbits += bitsPerFrame; - *total_bytes_output += bitsPerFrame; - /* round up: */ - if (*total_bytes_output % 8) - *total_bytes_output = 1 + (*total_bytes_output / 8); - else - *total_bytes_output = (*total_bytes_output / 8); - *total_bytes_output += gfc->bs.buf_byte_idx + 1; - - - if (flushbits < 0) { -#if 0 - /* if flushbits < 0, this would mean that the buffer looks like: - * (data...) last_header (data...) (extra data that should not be here...) - */ - DEBUGF(gfc, "last header write_timing = %i \n", esv->header[last_ptr].write_timing); - DEBUGF(gfc, "first header write_timing = %i \n", esv->header[first_ptr].write_timing); - DEBUGF(gfc, "bs.totbit: %i \n", gfc->bs.totbit); - DEBUGF(gfc, "first_ptr, last_ptr %i %i \n", first_ptr, last_ptr); - DEBUGF(gfc, "remaining_headers = %i \n", remaining_headers); - DEBUGF(gfc, "bitsperframe: %i \n", bitsPerFrame); - DEBUGF(gfc, "sidelen: %i \n", cfg->sideinfo_len); -#endif - ERRORF(gfc, "strange error flushing buffer ... \n"); - } - return flushbits; -} - - -void -flush_bitstream(lame_internal_flags * gfc) -{ - EncStateVar_t *const esv = &gfc->sv_enc; - III_side_info_t *l3_side; - int nbytes; - int flushbits; - int last_ptr = esv->h_ptr - 1; /* last header to add to bitstream */ - if (last_ptr == -1) - last_ptr = MAX_HEADER_BUF - 1; - l3_side = &gfc->l3_side; - - - if ((flushbits = compute_flushbits(gfc, &nbytes)) < 0) - return; - drain_into_ancillary(gfc, flushbits); - - /* check that the 100% of the last frame has been written to bitstream */ - assert(esv->header[last_ptr].write_timing + getframebits(gfc) - == gfc->bs.totbit); - - /* we have padded out all frames with ancillary data, which is the - same as filling the bitreservoir with ancillary data, so : */ - esv->ResvSize = 0; - l3_side->main_data_begin = 0; -} - - - - -void -add_dummy_byte(lame_internal_flags * gfc, unsigned char val, unsigned int n) -{ - EncStateVar_t *const esv = &gfc->sv_enc; - int i; - - while (n-- > 0u) { - putbits_noheaders(gfc, val, 8); - - for (i = 0; i < MAX_HEADER_BUF; ++i) - esv->header[i].write_timing += 8; - } -} - - -/* - format_bitstream() - - This is called after a frame of audio has been quantized and coded. - It will write the encoded audio to the bitstream. Note that - from a layer3 encoder's perspective the bit stream is primarily - a series of main_data() blocks, with header and side information - inserted at the proper locations to maintain framing. (See Figure A.7 - in the IS). - */ -int -format_bitstream(lame_internal_flags * gfc) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - EncStateVar_t *const esv = &gfc->sv_enc; - int bits, nbytes; - III_side_info_t *l3_side; - int bitsPerFrame; - l3_side = &gfc->l3_side; - - bitsPerFrame = getframebits(gfc); - drain_into_ancillary(gfc, l3_side->resvDrain_pre); - - encodeSideInfo2(gfc, bitsPerFrame); - bits = 8 * cfg->sideinfo_len; - bits += writeMainData(gfc); - drain_into_ancillary(gfc, l3_side->resvDrain_post); - bits += l3_side->resvDrain_post; - - l3_side->main_data_begin += (bitsPerFrame - bits) / 8; - - /* compare number of bits needed to clear all buffered mp3 frames - * with what we think the resvsize is: */ - if (compute_flushbits(gfc, &nbytes) != esv->ResvSize) { - ERRORF(gfc, "Internal buffer inconsistency. flushbits <> ResvSize"); - } - - - /* compare main_data_begin for the next frame with what we - * think the resvsize is: */ - if ((l3_side->main_data_begin * 8) != esv->ResvSize) { - ERRORF(gfc, "bit reservoir error: \n" - "l3_side->main_data_begin: %i \n" - "Resvoir size: %i \n" - "resv drain (post) %i \n" - "resv drain (pre) %i \n" - "header and sideinfo: %i \n" - "data bits: %i \n" - "total bits: %i (remainder: %i) \n" - "bitsperframe: %i \n", - 8 * l3_side->main_data_begin, - esv->ResvSize, - l3_side->resvDrain_post, - l3_side->resvDrain_pre, - 8 * cfg->sideinfo_len, - bits - l3_side->resvDrain_post - 8 * cfg->sideinfo_len, - bits, bits % 8, bitsPerFrame); - - ERRORF(gfc, "This is a fatal error. It has several possible causes:"); - ERRORF(gfc, "90%% LAME compiled with buggy version of gcc using advanced optimizations"); - ERRORF(gfc, " 9%% Your system is overclocked"); - ERRORF(gfc, " 1%% bug in LAME encoding library"); - - esv->ResvSize = l3_side->main_data_begin * 8; - }; - assert(gfc->bs.totbit % 8 == 0); - - if (gfc->bs.totbit > 1000000000) { - /* to avoid totbit overflow, (at 8h encoding at 128kbs) lets reset bit counter */ - int i; - for (i = 0; i < MAX_HEADER_BUF; ++i) - esv->header[i].write_timing -= gfc->bs.totbit; - gfc->bs.totbit = 0; - } - - - return 0; -} - - -static int -do_gain_analysis(lame_internal_flags * gfc, unsigned char* buffer, int minimum) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - RpgStateVar_t const *const rsv = &gfc->sv_rpg; - RpgResult_t *const rov = &gfc->ov_rpg; -#ifdef DECODE_ON_THE_FLY - if (cfg->decode_on_the_fly) { /* decode the frame */ - sample_t pcm_buf[2][1152]; - int mp3_in = minimum; - int samples_out = -1; - - /* re-synthesis to pcm. Repeat until we get a samples_out=0 */ - while (samples_out != 0) { - - samples_out = hip_decode1_unclipped(gfc->hip, buffer, mp3_in, pcm_buf[0], pcm_buf[1]); - /* samples_out = 0: need more data to decode - * samples_out = -1: error. Lets assume 0 pcm output - * samples_out = number of samples output */ - - /* set the lenght of the mp3 input buffer to zero, so that in the - * next iteration of the loop we will be querying mpglib about - * buffered data */ - mp3_in = 0; - - if (samples_out == -1) { - /* error decoding. Not fatal, but might screw up - * the ReplayGain tag. What should we do? Ignore for now */ - samples_out = 0; - } - if (samples_out > 0) { - /* process the PCM data */ - - /* this should not be possible, and indicates we have - * overflown the pcm_buf buffer */ - assert(samples_out <= 1152); - - if (cfg->findPeakSample) { - int i; - /* FIXME: is this correct? maybe Max(fabs(pcm),PeakSample) */ - for (i = 0; i < samples_out; i++) { - if (pcm_buf[0][i] > rov->PeakSample) - rov->PeakSample = pcm_buf[0][i]; - else if (-pcm_buf[0][i] > rov->PeakSample) - rov->PeakSample = -pcm_buf[0][i]; - } - if (cfg->channels_out > 1) - for (i = 0; i < samples_out; i++) { - if (pcm_buf[1][i] > rov->PeakSample) - rov->PeakSample = pcm_buf[1][i]; - else if (-pcm_buf[1][i] > rov->PeakSample) - rov->PeakSample = -pcm_buf[1][i]; - } - } - - if (cfg->findReplayGain) - if (AnalyzeSamples - (rsv->rgdata, pcm_buf[0], pcm_buf[1], samples_out, - cfg->channels_out) == GAIN_ANALYSIS_ERROR) - return -6; - - } /* if (samples_out>0) */ - } /* while (samples_out!=0) */ - } /* if (gfc->decode_on_the_fly) */ -#endif - return minimum; -} - -static int -do_copy_buffer(lame_internal_flags * gfc, unsigned char *buffer, int size) -{ - Bit_stream_struc *const bs = &gfc->bs; - int const minimum = bs->buf_byte_idx + 1; - if (minimum <= 0) - return 0; - if (size != 0 && minimum > size) - return -1; /* buffer is too small */ - memcpy(buffer, bs->buf, minimum); - bs->buf_byte_idx = -1; - bs->buf_bit_idx = 0; - return minimum; -} - -/* copy data out of the internal MP3 bit buffer into a user supplied - unsigned char buffer. - - mp3data=0 indicates data in buffer is an id3tags and VBR tags - mp3data=1 data is real mp3 frame data. - - -*/ -int -copy_buffer(lame_internal_flags * gfc, unsigned char *buffer, int size, int mp3data) -{ - int const minimum = do_copy_buffer(gfc, buffer, size); - if (minimum > 0 && mp3data) { - UpdateMusicCRC(&gfc->nMusicCRC, buffer, minimum); - - /** sum number of bytes belonging to the mp3 stream - * this info will be written into the Xing/LAME header for seeking - */ - gfc->VBR_seek_table.nBytesWritten += minimum; - - return do_gain_analysis(gfc, buffer, minimum); - } /* if (mp3data) */ - return minimum; -} - - -void -init_bit_stream_w(lame_internal_flags * gfc) -{ - EncStateVar_t *const esv = &gfc->sv_enc; - - esv->h_ptr = esv->w_ptr = 0; - esv->header[esv->h_ptr].write_timing = 0; - - gfc->bs.buf = (unsigned char *) malloc(BUFFER_SIZE); - gfc->bs.buf_size = BUFFER_SIZE; - gfc->bs.buf_byte_idx = -1; - gfc->bs.buf_bit_idx = 0; - gfc->bs.totbit = 0; -} - -/* end of bitstream.c */ diff --git a/platform/win32/msvc/external/lame/libmp3lame/bitstream.h b/platform/win32/msvc/external/lame/libmp3lame/bitstream.h deleted file mode 100644 index 3ae48d02946..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/bitstream.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * MP3 bitstream Output interface for LAME - * - * Copyright (c) 1999 Takehiro TOMINAGA - * - * 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 LAME_BITSTREAM_H -#define LAME_BITSTREAM_H - -int getframebits(const lame_internal_flags * gfc); - -int format_bitstream(lame_internal_flags * gfc); - -void flush_bitstream(lame_internal_flags * gfc); -void add_dummy_byte(lame_internal_flags * gfc, unsigned char val, unsigned int n); - -int copy_buffer(lame_internal_flags * gfc, unsigned char *buffer, int buffer_size, - int update_crc); -void init_bit_stream_w(lame_internal_flags * gfc); -void CRC_writeheader(lame_internal_flags const *gfc, char *buffer); -int compute_flushbits(const lame_internal_flags * gfp, int *nbytes); - -int get_max_frame_buffer_size_by_constraint(SessionConfig_t const * cfg, int constraint); - -#endif diff --git a/platform/win32/msvc/external/lame/libmp3lame/depcomp b/platform/win32/msvc/external/lame/libmp3lame/depcomp deleted file mode 100644 index df8eea7e4ce..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/depcomp +++ /dev/null @@ -1,630 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2009-04-28.21; # UTC - -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free -# Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. - -case $1 in - '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: depcomp [--help] [--version] PROGRAM [ARGS] - -Run PROGRAMS ARGS to compile a file, generating dependencies -as side-effects. - -Environment variables: - depmode Dependency tracking mode. - source Source file read by `PROGRAMS ARGS'. - object Object file output by `PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. - tmpdepfile Temporary file to use when outputing dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to <bug-automake@gnu.org>. -EOF - exit $? - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit $? - ;; -esac - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi - -# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -depfile=${depfile-`echo "$object" | - sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -cygpath_u="cygpath -u -f -" -if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u="sed s,\\\\\\\\,/,g" - depmode=msvisualcpp -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. -## Unfortunately, FreeBSD c89 acceptance of flags depends upon -## the command line argument order; so add the flags where they -## appear in depend2.am. Note that the slowdown incurred here -## affects only configure: in makefiles, %FASTDEP% shortcuts this. - for arg - do - case $arg in - -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; - *) set fnord "$@" "$arg" ;; - esac - shift # fnord - shift # $arg - done - "$@" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the `deleted header file' problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. - tr ' ' ' -' < "$tmpdepfile" | -## Some versions of gcc put a space before the `:'. On the theory -## that the space means something, we add a space to the output as -## well. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" - - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like `#:fec' to the end of the - # dependency line. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr ' -' ' ' >> "$depfile" - echo >> "$depfile" - - # The second pass generates a dummy entry for each header file. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts `$object:' at the - # start of each line; $object doesn't have directory information. - # Version 6 uses the directory in both cases. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.u - tmpdepfile2=$base.u - tmpdepfile3=$dir.libs/$base.u - "$@" -Wc,-M - else - tmpdepfile1=$dir$base.u - tmpdepfile2=$dir$base.u - tmpdepfile3=$dir$base.u - "$@" -M - fi - stat=$? - - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - # Each line is of the form `foo.o: dependent.h'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -icc) - # Intel's C compiler understands `-MD -MF file'. However on - # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want: - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using \ : - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form `foo.o: dependent.h', - # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | - sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp2) - # The "hp" stanza above does not work with aCC (C++) and HP's ia64 - # compilers, which have integrated preprocessors. The correct option - # to use with these is +Maked; it writes dependencies to a file named - # 'foo.d', which lands next to the object file, wherever that - # happens to be. - # Much of this is similar to the tru64 case; see comments there. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir.libs/$base.d - "$@" -Wc,+Maked - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - "$@" +Maked - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" - # Add `dependent.h:' lines. - sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" "$tmpdepfile2" - ;; - -tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in `foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - # With Tru64 cc, shared objects can also be used to make a - # static library. This mechanism is used in libtool 1.4 series to - # handle both shared and static libraries in a single compilation. - # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. - # - # With libtool 1.5 this exception was removed, and libtool now - # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 - tmpdepfile2=$dir$base.o.d # libtool 1.5 - tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 - tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.o.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - tmpdepfile4=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for `:' - # in the target name. This is to cope with DOS-style filenames: - # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. - "$@" $dashmflag | - sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - tr ' ' ' -' < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - "$@" || exit $? - # Remove any Libtool call - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no eat=no - for arg - do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - if test $eat = yes; then - eat=no - continue - fi - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - # Strip any option that makedepend may not understand. Remove - # the object too, otherwise makedepend will parse it as a source file. - -arch) - eat=yes ;; - -*|$object) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done - obj_suffix=`echo "$object" | sed 's/^.*\././'` - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' ' -' | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - "$@" -E | - sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - IFS=" " - for arg - do - case "$arg" in - -o) - shift - ;; - $object) - shift - ;; - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E 2>/dev/null | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" - echo " " >> "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvcmsys) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/platform/win32/msvc/external/lame/libmp3lame/encoder.c b/platform/win32/msvc/external/lame/libmp3lame/encoder.c deleted file mode 100644 index 7d5b0b624dc..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/encoder.c +++ /dev/null @@ -1,557 +0,0 @@ -/* - * LAME MP3 encoding engine - * - * Copyright (c) 1999 Mark Taylor - * Copyright (c) 2000-2002 Takehiro Tominaga - * Copyright (c) 2000-2011 Robert Hegemann - * Copyright (c) 2001 Gabriel Bouvigne - * Copyright (c) 2001 John Dahlstrom - * - * 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. - */ - -/* $Id: encoder.c,v 1.111 2011/05/07 16:05:17 rbrito Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - - -#include "lame.h" -#include "machine.h" -#include "encoder.h" -#include "util.h" -#include "lame_global_flags.h" -#include "newmdct.h" -#include "psymodel.h" -#include "lame-analysis.h" -#include "bitstream.h" -#include "VbrTag.h" -#include "quantize_pvt.h" - - - -/* - * auto-adjust of ATH, useful for low volume - * Gabriel Bouvigne 3 feb 2001 - * - * modifies some values in - * gfp->internal_flags->ATH - * (gfc->ATH) - */ -static void -adjust_ATH(lame_internal_flags const *const gfc) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - FLOAT gr2_max, max_pow; - - if (gfc->ATH->use_adjust == 0) { - gfc->ATH->adjust_factor = 1.0; /* no adjustment */ - return; - } - - /* jd - 2001 mar 12, 27, jun 30 */ - /* loudness based on equal loudness curve; */ - /* use granule with maximum combined loudness */ - max_pow = gfc->ov_psy.loudness_sq[0][0]; - gr2_max = gfc->ov_psy.loudness_sq[1][0]; - if (cfg->channels_out == 2) { - max_pow += gfc->ov_psy.loudness_sq[0][1]; - gr2_max += gfc->ov_psy.loudness_sq[1][1]; - } - else { - max_pow += max_pow; - gr2_max += gr2_max; - } - if (cfg->mode_gr == 2) { - max_pow = Max(max_pow, gr2_max); - } - max_pow *= 0.5; /* max_pow approaches 1.0 for full band noise */ - - /* jd - 2001 mar 31, jun 30 */ - /* user tuning of ATH adjustment region */ - max_pow *= gfc->ATH->aa_sensitivity_p; - - /* adjust ATH depending on range of maximum value - */ - - /* jd - 2001 feb27, mar12,20, jun30, jul22 */ - /* continuous curves based on approximation */ - /* to GB's original values. */ - /* For an increase in approximate loudness, */ - /* set ATH adjust to adjust_limit immediately */ - /* after a delay of one frame. */ - /* For a loudness decrease, reduce ATH adjust */ - /* towards adjust_limit gradually. */ - /* max_pow is a loudness squared or a power. */ - if (max_pow > 0.03125) { /* ((1 - 0.000625)/ 31.98) from curve below */ - if (gfc->ATH->adjust_factor >= 1.0) { - gfc->ATH->adjust_factor = 1.0; - } - else { - /* preceding frame has lower ATH adjust; */ - /* ascend only to the preceding adjust_limit */ - /* in case there is leading low volume */ - if (gfc->ATH->adjust_factor < gfc->ATH->adjust_limit) { - gfc->ATH->adjust_factor = gfc->ATH->adjust_limit; - } - } - gfc->ATH->adjust_limit = 1.0; - } - else { /* adjustment curve */ - /* about 32 dB maximum adjust (0.000625) */ - FLOAT const adj_lim_new = 31.98 * max_pow + 0.000625; - if (gfc->ATH->adjust_factor >= adj_lim_new) { /* descend gradually */ - gfc->ATH->adjust_factor *= adj_lim_new * 0.075 + 0.925; - if (gfc->ATH->adjust_factor < adj_lim_new) { /* stop descent */ - gfc->ATH->adjust_factor = adj_lim_new; - } - } - else { /* ascend */ - if (gfc->ATH->adjust_limit >= adj_lim_new) { - gfc->ATH->adjust_factor = adj_lim_new; - } - else { /* preceding frame has lower ATH adjust; */ - /* ascend only to the preceding adjust_limit */ - if (gfc->ATH->adjust_factor < gfc->ATH->adjust_limit) { - gfc->ATH->adjust_factor = gfc->ATH->adjust_limit; - } - } - } - gfc->ATH->adjust_limit = adj_lim_new; - } -} - -/*********************************************************************** - * - * some simple statistics - * - * bitrate index 0: free bitrate -> not allowed in VBR mode - * : bitrates, kbps depending on MPEG version - * bitrate index 15: forbidden - * - * mode_ext: - * 0: LR - * 1: LR-i - * 2: MS - * 3: MS-i - * - ***********************************************************************/ - -static void -updateStats(lame_internal_flags * const gfc) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - EncResult_t *eov = &gfc->ov_enc; - int gr, ch; - assert(0 <= eov->bitrate_index && eov->bitrate_index < 16); - assert(0 <= eov->mode_ext && eov->mode_ext < 4); - - /* count bitrate indices */ - eov->bitrate_channelmode_hist[eov->bitrate_index][4]++; - eov->bitrate_channelmode_hist[15][4]++; - - /* count 'em for every mode extension in case of 2 channel encoding */ - if (cfg->channels_out == 2) { - eov->bitrate_channelmode_hist[eov->bitrate_index][eov->mode_ext]++; - eov->bitrate_channelmode_hist[15][eov->mode_ext]++; - } - for (gr = 0; gr < cfg->mode_gr; ++gr) { - for (ch = 0; ch < cfg->channels_out; ++ch) { - int bt = gfc->l3_side.tt[gr][ch].block_type; - if (gfc->l3_side.tt[gr][ch].mixed_block_flag) - bt = 4; - eov->bitrate_blocktype_hist[eov->bitrate_index][bt]++; - eov->bitrate_blocktype_hist[eov->bitrate_index][5]++; - eov->bitrate_blocktype_hist[15][bt]++; - eov->bitrate_blocktype_hist[15][5]++; - } - } -} - - - - -static void -lame_encode_frame_init(lame_internal_flags * gfc, const sample_t *const inbuf[2]) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - - int ch, gr; - - if (gfc->lame_encode_frame_init == 0) { - sample_t primebuff0[286 + 1152 + 576]; - sample_t primebuff1[286 + 1152 + 576]; - int const framesize = 576 * cfg->mode_gr; - /* prime the MDCT/polyphase filterbank with a short block */ - int i, j; - gfc->lame_encode_frame_init = 1; - memset(primebuff0, 0, sizeof(primebuff0)); - memset(primebuff1, 0, sizeof(primebuff1)); - for (i = 0, j = 0; i < 286 + 576 * (1 + cfg->mode_gr); ++i) { - if (i < framesize) { - primebuff0[i] = 0; - if (cfg->channels_out == 2) - primebuff1[i] = 0; - } - else { - primebuff0[i] = inbuf[0][j]; - if (cfg->channels_out == 2) - primebuff1[i] = inbuf[1][j]; - ++j; - } - } - /* polyphase filtering / mdct */ - for (gr = 0; gr < cfg->mode_gr; gr++) { - for (ch = 0; ch < cfg->channels_out; ch++) { - gfc->l3_side.tt[gr][ch].block_type = SHORT_TYPE; - } - } - mdct_sub48(gfc, primebuff0, primebuff1); - - /* check FFT will not use a negative starting offset */ -#if 576 < FFTOFFSET -# error FFTOFFSET greater than 576: FFT uses a negative offset -#endif - /* check if we have enough data for FFT */ - assert(gfc->sv_enc.mf_size >= (BLKSIZE + framesize - FFTOFFSET)); - /* check if we have enough data for polyphase filterbank */ - assert(gfc->sv_enc.mf_size >= (512 + framesize - 32)); - } - -} - - - - - - - -/************************************************************************ -* -* encodeframe() Layer 3 -* -* encode a single frame -* -************************************************************************ -lame_encode_frame() - - - gr 0 gr 1 -inbuf: |--------------|--------------|--------------| - - -Polyphase (18 windows, each shifted 32) -gr 0: -window1 <----512----> -window18 <----512----> - -gr 1: -window1 <----512----> -window18 <----512----> - - - -MDCT output: |--------------|--------------|--------------| - -FFT's <---------1024----------> - <---------1024--------> - - - - inbuf = buffer of PCM data size=MP3 framesize - encoder acts on inbuf[ch][0], but output is delayed by MDCTDELAY - so the MDCT coefficints are from inbuf[ch][-MDCTDELAY] - - psy-model FFT has a 1 granule delay, so we feed it data for the - next granule. - FFT is centered over granule: 224+576+224 - So FFT starts at: 576-224-MDCTDELAY - - MPEG2: FFT ends at: BLKSIZE+576-224-MDCTDELAY (1328) - MPEG1: FFT ends at: BLKSIZE+2*576-224-MDCTDELAY (1904) - - MPEG2: polyphase first window: [0..511] - 18th window: [544..1055] (1056) - MPEG1: 36th window: [1120..1631] (1632) - data needed: 512+framesize-32 - - A close look newmdct.c shows that the polyphase filterbank - only uses data from [0..510] for each window. Perhaps because the window - used by the filterbank is zero for the last point, so Takehiro's - code doesn't bother to compute with it. - - FFT starts at 576-224-MDCTDELAY (304) = 576-FFTOFFSET - -*/ - -typedef FLOAT chgrdata[2][2]; - - -int -lame_encode_mp3_frame( /* Output */ - lame_internal_flags * gfc, /* Context */ - sample_t const *inbuf_l, /* Input */ - sample_t const *inbuf_r, /* Input */ - unsigned char *mp3buf, /* Output */ - int mp3buf_size) -{ /* Output */ - SessionConfig_t const *const cfg = &gfc->cfg; - int mp3count; - III_psy_ratio masking_LR[2][2]; /*LR masking & energy */ - III_psy_ratio masking_MS[2][2]; /*MS masking & energy */ - const III_psy_ratio (*masking)[2]; /*pointer to selected maskings */ - const sample_t *inbuf[2]; - - FLOAT tot_ener[2][4]; - FLOAT ms_ener_ratio[2] = { .5, .5 }; - FLOAT pe[2][2] = { {0., 0.}, {0., 0.} }, pe_MS[2][2] = { { - 0., 0.}, { - 0., 0.}}; - FLOAT (*pe_use)[2]; - - int ch, gr; - - inbuf[0] = inbuf_l; - inbuf[1] = inbuf_r; - - if (gfc->lame_encode_frame_init == 0) { - /*first run? */ - lame_encode_frame_init(gfc, inbuf); - - } - - - /********************** padding *****************************/ - /* padding method as described in - * "MPEG-Layer3 / Bitstream Syntax and Decoding" - * by Martin Sieler, Ralph Sperschneider - * - * note: there is no padding for the very first frame - * - * Robert Hegemann 2000-06-22 - */ - gfc->ov_enc.padding = FALSE; - if ((gfc->sv_enc.slot_lag -= gfc->sv_enc.frac_SpF) < 0) { - gfc->sv_enc.slot_lag += cfg->samplerate_out; - gfc->ov_enc.padding = TRUE; - } - - - - /**************************************** - * Stage 1: psychoacoustic model * - ****************************************/ - - { - /* psychoacoustic model - * psy model has a 1 granule (576) delay that we must compensate for - * (mt 6/99). - */ - int ret; - const sample_t *bufp[2] = {0, 0}; /* address of beginning of left & right granule */ - int blocktype[2]; - - for (gr = 0; gr < cfg->mode_gr; gr++) { - - for (ch = 0; ch < cfg->channels_out; ch++) { - bufp[ch] = &inbuf[ch][576 + gr * 576 - FFTOFFSET]; - } - ret = L3psycho_anal_vbr(gfc, bufp, gr, - masking_LR, masking_MS, - pe[gr], pe_MS[gr], tot_ener[gr], blocktype); - if (ret != 0) - return -4; - - if (cfg->mode == JOINT_STEREO) { - ms_ener_ratio[gr] = tot_ener[gr][2] + tot_ener[gr][3]; - if (ms_ener_ratio[gr] > 0) - ms_ener_ratio[gr] = tot_ener[gr][3] / ms_ener_ratio[gr]; - } - - /* block type flags */ - for (ch = 0; ch < cfg->channels_out; ch++) { - gr_info *const cod_info = &gfc->l3_side.tt[gr][ch]; - cod_info->block_type = blocktype[ch]; - cod_info->mixed_block_flag = 0; - } - } - } - - - /* auto-adjust of ATH, useful for low volume */ - adjust_ATH(gfc); - - - /**************************************** - * Stage 2: MDCT * - ****************************************/ - - /* polyphase filtering / mdct */ - mdct_sub48(gfc, inbuf[0], inbuf[1]); - - - /**************************************** - * Stage 3: MS/LR decision * - ****************************************/ - - /* Here will be selected MS or LR coding of the 2 stereo channels */ - gfc->ov_enc.mode_ext = MPG_MD_LR_LR; - - if (cfg->force_ms) { - gfc->ov_enc.mode_ext = MPG_MD_MS_LR; - } - else if (cfg->mode == JOINT_STEREO) { - /* ms_ratio = is scaled, for historical reasons, to look like - a ratio of side_channel / total. - 0 = signal is 100% mono - .5 = L & R uncorrelated - */ - - /* [0] and [1] are the results for the two granules in MPEG-1, - * in MPEG-2 it's only a faked averaging of the same value - * _prev is the value of the last granule of the previous frame - * _next is the value of the first granule of the next frame - */ - - FLOAT sum_pe_MS = 0; - FLOAT sum_pe_LR = 0; - for (gr = 0; gr < cfg->mode_gr; gr++) { - for (ch = 0; ch < cfg->channels_out; ch++) { - sum_pe_MS += pe_MS[gr][ch]; - sum_pe_LR += pe[gr][ch]; - } - } - - /* based on PE: M/S coding would not use much more bits than L/R */ - if (sum_pe_MS <= 1.00 * sum_pe_LR) { - - gr_info const *const gi0 = &gfc->l3_side.tt[0][0]; - gr_info const *const gi1 = &gfc->l3_side.tt[cfg->mode_gr - 1][0]; - - if (gi0[0].block_type == gi0[1].block_type && gi1[0].block_type == gi1[1].block_type) { - - gfc->ov_enc.mode_ext = MPG_MD_MS_LR; - } - } - } - - /* bit and noise allocation */ - if (gfc->ov_enc.mode_ext == MPG_MD_MS_LR) { - masking = (const III_psy_ratio (*)[2])masking_MS; /* use MS masking */ - pe_use = pe_MS; - } - else { - masking = (const III_psy_ratio (*)[2])masking_LR; /* use LR masking */ - pe_use = pe; - } - - - /* copy data for MP3 frame analyzer */ - if (cfg->analysis && gfc->pinfo != NULL) { - for (gr = 0; gr < cfg->mode_gr; gr++) { - for (ch = 0; ch < cfg->channels_out; ch++) { - gfc->pinfo->ms_ratio[gr] = 0; - gfc->pinfo->ms_ener_ratio[gr] = ms_ener_ratio[gr]; - gfc->pinfo->blocktype[gr][ch] = gfc->l3_side.tt[gr][ch].block_type; - gfc->pinfo->pe[gr][ch] = pe_use[gr][ch]; - memcpy(gfc->pinfo->xr[gr][ch], &gfc->l3_side.tt[gr][ch].xr[0], sizeof(FLOAT) * 576); - /* in psymodel, LR and MS data was stored in pinfo. - switch to MS data: */ - if (gfc->ov_enc.mode_ext == MPG_MD_MS_LR) { - gfc->pinfo->ers[gr][ch] = gfc->pinfo->ers[gr][ch + 2]; - memcpy(gfc->pinfo->energy[gr][ch], gfc->pinfo->energy[gr][ch + 2], - sizeof(gfc->pinfo->energy[gr][ch])); - } - } - } - } - - - /**************************************** - * Stage 4: quantization loop * - ****************************************/ - - if (cfg->vbr == vbr_off || cfg->vbr == vbr_abr) { - static FLOAT const fircoef[9] = { - -0.0207887 * 5, -0.0378413 * 5, -0.0432472 * 5, -0.031183 * 5, - 7.79609e-18 * 5, 0.0467745 * 5, 0.10091 * 5, 0.151365 * 5, - 0.187098 * 5 - }; - - int i; - FLOAT f; - - for (i = 0; i < 18; i++) - gfc->sv_enc.pefirbuf[i] = gfc->sv_enc.pefirbuf[i + 1]; - - f = 0.0; - for (gr = 0; gr < cfg->mode_gr; gr++) - for (ch = 0; ch < cfg->channels_out; ch++) - f += pe_use[gr][ch]; - gfc->sv_enc.pefirbuf[18] = f; - - f = gfc->sv_enc.pefirbuf[9]; - for (i = 0; i < 9; i++) - f += (gfc->sv_enc.pefirbuf[i] + gfc->sv_enc.pefirbuf[18 - i]) * fircoef[i]; - - f = (670 * 5 * cfg->mode_gr * cfg->channels_out) / f; - for (gr = 0; gr < cfg->mode_gr; gr++) { - for (ch = 0; ch < cfg->channels_out; ch++) { - pe_use[gr][ch] *= f; - } - } - } - gfc->iteration_loop(gfc, (const FLOAT (*)[2])pe_use, ms_ener_ratio, masking); - - - /**************************************** - * Stage 5: bitstream formatting * - ****************************************/ - - - /* write the frame to the bitstream */ - (void) format_bitstream(gfc); - - /* copy mp3 bit buffer into array */ - mp3count = copy_buffer(gfc, mp3buf, mp3buf_size, 1); - - - if (cfg->write_lame_tag) { - AddVbrFrame(gfc); - } - - if (cfg->analysis && gfc->pinfo != NULL) { - int framesize = 576 * cfg->mode_gr; - for (ch = 0; ch < cfg->channels_out; ch++) { - int j; - for (j = 0; j < FFTOFFSET; j++) - gfc->pinfo->pcmdata[ch][j] = gfc->pinfo->pcmdata[ch][j + framesize]; - for (j = FFTOFFSET; j < 1600; j++) { - gfc->pinfo->pcmdata[ch][j] = inbuf[ch][j - FFTOFFSET]; - } - } - gfc->sv_qnt.masking_lower = 1.0; - - set_frame_pinfo(gfc, masking); - } - - ++gfc->ov_enc.frame_number; - - updateStats(gfc); - - return mp3count; -} diff --git a/platform/win32/msvc/external/lame/libmp3lame/encoder.h b/platform/win32/msvc/external/lame/libmp3lame/encoder.h deleted file mode 100644 index b06a7c6444a..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/encoder.h +++ /dev/null @@ -1,156 +0,0 @@ -/* - * encoder.h include file - * - * Copyright (c) 2000 Mark Taylor - * - * 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 LAME_ENCODER_H -#define LAME_ENCODER_H - -/*********************************************************************** -* -* encoder and decoder delays -* -***********************************************************************/ - -/* - * layer III enc->dec delay: 1056 (1057?) (observed) - * layer II enc->dec delay: 480 (481?) (observed) - * - * polyphase 256-16 (dec or enc) = 240 - * mdct 256+32 (9*32) (dec or enc) = 288 - * total: 512+16 - * - * My guess is that delay of polyphase filterbank is actualy 240.5 - * (there are technical reasons for this, see postings in mp3encoder). - * So total Encode+Decode delay = ENCDELAY + 528 + 1 - */ - -/* - * ENCDELAY The encoder delay. - * - * Minimum allowed is MDCTDELAY (see below) - * - * The first 96 samples will be attenuated, so using a value less than 96 - * will result in corrupt data for the first 96-ENCDELAY samples. - * - * suggested: 576 - * set to 1160 to sync with FhG. - */ - -#define ENCDELAY 576 - - - -/* - * make sure there is at least one complete frame after the - * last frame containing real data - * - * Using a value of 288 would be sufficient for a - * a very sophisticated decoder that can decode granule-by-granule instead - * of frame by frame. But lets not assume this, and assume the decoder - * will not decode frame N unless it also has data for frame N+1 - * - */ -/*#define POSTDELAY 288*/ -#define POSTDELAY 1152 - - - -/* - * delay of the MDCT used in mdct.c - * original ISO routines had a delay of 528! - * Takehiro's routines: - */ - -#define MDCTDELAY 48 -#define FFTOFFSET (224+MDCTDELAY) - -/* - * Most decoders, including the one we use, have a delay of 528 samples. - */ - -#define DECDELAY 528 - - -/* number of subbands */ -#define SBLIMIT 32 - -/* parition bands bands */ -#define CBANDS 64 - -/* number of critical bands/scale factor bands where masking is computed*/ -#define SBPSY_l 21 -#define SBPSY_s 12 - -/* total number of scalefactor bands encoded */ -#define SBMAX_l 22 -#define SBMAX_s 13 -#define PSFB21 6 -#define PSFB12 6 - - - -/* FFT sizes */ -#define BLKSIZE 1024 -#define HBLKSIZE (BLKSIZE/2 + 1) -#define BLKSIZE_s 256 -#define HBLKSIZE_s (BLKSIZE_s/2 + 1) - - -/* #define switch_pe 1800 */ -#define NORM_TYPE 0 -#define START_TYPE 1 -#define SHORT_TYPE 2 -#define STOP_TYPE 3 - -/* - * Mode Extention: - * When we are in stereo mode, there are 4 possible methods to store these - * two channels. The stereo modes -m? are using a subset of them. - * - * -ms: MPG_MD_LR_LR - * -mj: MPG_MD_LR_LR and MPG_MD_MS_LR - * -mf: MPG_MD_MS_LR - * -mi: all - */ -#if 0 -#define MPG_MD_LR_LR 0 -#define MPG_MD_LR_I 1 -#define MPG_MD_MS_LR 2 -#define MPG_MD_MS_I 3 -#endif -enum MPEGChannelMode -{ MPG_MD_LR_LR = 0 -, MPG_MD_LR_I = 1 -, MPG_MD_MS_LR = 2 -, MPG_MD_MS_I = 3 -}; - -#ifndef lame_internal_flags_defined -#define lame_internal_flags_defined -struct lame_internal_flags; -typedef struct lame_internal_flags lame_internal_flags; -#endif - -int lame_encode_mp3_frame(lame_internal_flags * gfc, - sample_t const *inbuf_l, - sample_t const *inbuf_r, unsigned char *mp3buf, int mp3buf_size); - -#endif /* LAME_ENCODER_H */ diff --git a/platform/win32/msvc/external/lame/libmp3lame/fft.c b/platform/win32/msvc/external/lame/libmp3lame/fft.c deleted file mode 100644 index e8c59d9cd0e..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/fft.c +++ /dev/null @@ -1,329 +0,0 @@ -/* -** FFT and FHT routines -** Copyright 1988, 1993; Ron Mayer -** Copyright (c) 1999-2000 Takehiro Tominaga -** -** fht(fz,n); -** Does a hartley transform of "n" points in the array "fz". -** -** NOTE: This routine uses at least 2 patented algorithms, and may be -** under the restrictions of a bunch of different organizations. -** Although I wrote it completely myself; it is kind of a derivative -** of a routine I once authored and released under the GPL, so it -** may fall under the free software foundation's restrictions; -** it was worked on as a Stanford Univ project, so they claim -** some rights to it; it was further optimized at work here, so -** I think this company claims parts of it. The patents are -** held by R. Bracewell (the FHT algorithm) and O. Buneman (the -** trig generator), both at Stanford Univ. -** If it were up to me, I'd say go do whatever you want with it; -** but it would be polite to give credit to the following people -** if you use this anywhere: -** Euler - probable inventor of the fourier transform. -** Gauss - probable inventor of the FFT. -** Hartley - probable inventor of the hartley transform. -** Buneman - for a really cool trig generator -** Mayer(me) - for authoring this particular version and -** including all the optimizations in one package. -** Thanks, -** Ron Mayer; mayer@acuson.com -** and added some optimization by -** Mather - idea of using lookup table -** Takehiro - some dirty hack for speed up -*/ - -/* $Id: fft.c,v 1.38 2009/04/20 21:48:00 robert Exp $ */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "lame.h" -#include "machine.h" -#include "encoder.h" -#include "util.h" -#include "fft.h" - -#include "vector/lame_intrin.h" - - - -#define TRI_SIZE (5-1) /* 1024 = 4**5 */ - -/* fft.c */ -static FLOAT window[BLKSIZE], window_s[BLKSIZE_s / 2]; - -static const FLOAT costab[TRI_SIZE * 2] = { - 9.238795325112867e-01, 3.826834323650898e-01, - 9.951847266721969e-01, 9.801714032956060e-02, - 9.996988186962042e-01, 2.454122852291229e-02, - 9.999811752826011e-01, 6.135884649154475e-03 -}; - -static void -fht(FLOAT * fz, int n) -{ - const FLOAT *tri = costab; - int k4; - FLOAT *fi, *gi; - FLOAT const *fn; - - n <<= 1; /* to get BLKSIZE, because of 3DNow! ASM routine */ - fn = fz + n; - k4 = 4; - do { - FLOAT s1, c1; - int i, k1, k2, k3, kx; - kx = k4 >> 1; - k1 = k4; - k2 = k4 << 1; - k3 = k2 + k1; - k4 = k2 << 1; - fi = fz; - gi = fi + kx; - do { - FLOAT f0, f1, f2, f3; - f1 = fi[0] - fi[k1]; - f0 = fi[0] + fi[k1]; - f3 = fi[k2] - fi[k3]; - f2 = fi[k2] + fi[k3]; - fi[k2] = f0 - f2; - fi[0] = f0 + f2; - fi[k3] = f1 - f3; - fi[k1] = f1 + f3; - f1 = gi[0] - gi[k1]; - f0 = gi[0] + gi[k1]; - f3 = SQRT2 * gi[k3]; - f2 = SQRT2 * gi[k2]; - gi[k2] = f0 - f2; - gi[0] = f0 + f2; - gi[k3] = f1 - f3; - gi[k1] = f1 + f3; - gi += k4; - fi += k4; - } while (fi < fn); - c1 = tri[0]; - s1 = tri[1]; - for (i = 1; i < kx; i++) { - FLOAT c2, s2; - c2 = 1 - (2 * s1) * s1; - s2 = (2 * s1) * c1; - fi = fz + i; - gi = fz + k1 - i; - do { - FLOAT a, b, g0, f0, f1, g1, f2, g2, f3, g3; - b = s2 * fi[k1] - c2 * gi[k1]; - a = c2 * fi[k1] + s2 * gi[k1]; - f1 = fi[0] - a; - f0 = fi[0] + a; - g1 = gi[0] - b; - g0 = gi[0] + b; - b = s2 * fi[k3] - c2 * gi[k3]; - a = c2 * fi[k3] + s2 * gi[k3]; - f3 = fi[k2] - a; - f2 = fi[k2] + a; - g3 = gi[k2] - b; - g2 = gi[k2] + b; - b = s1 * f2 - c1 * g3; - a = c1 * f2 + s1 * g3; - fi[k2] = f0 - a; - fi[0] = f0 + a; - gi[k3] = g1 - b; - gi[k1] = g1 + b; - b = c1 * g2 - s1 * f3; - a = s1 * g2 + c1 * f3; - gi[k2] = g0 - a; - gi[0] = g0 + a; - fi[k3] = f1 - b; - fi[k1] = f1 + b; - gi += k4; - fi += k4; - } while (fi < fn); - c2 = c1; - c1 = c2 * tri[0] - s1 * tri[1]; - s1 = c2 * tri[1] + s1 * tri[0]; - } - tri += 2; - } while (k4 < n); -} - - -static const unsigned char rv_tbl[] = { - 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, - 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, - 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, - 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, - 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, - 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, - 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, - 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, - 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, - 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, - 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, - 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, - 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, - 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, - 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, - 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe -}; - -#define ch01(index) (buffer[chn][index]) - -#define ml00(f) (window[i ] * f(i)) -#define ml10(f) (window[i + 0x200] * f(i + 0x200)) -#define ml20(f) (window[i + 0x100] * f(i + 0x100)) -#define ml30(f) (window[i + 0x300] * f(i + 0x300)) - -#define ml01(f) (window[i + 0x001] * f(i + 0x001)) -#define ml11(f) (window[i + 0x201] * f(i + 0x201)) -#define ml21(f) (window[i + 0x101] * f(i + 0x101)) -#define ml31(f) (window[i + 0x301] * f(i + 0x301)) - -#define ms00(f) (window_s[i ] * f(i + k)) -#define ms10(f) (window_s[0x7f - i] * f(i + k + 0x80)) -#define ms20(f) (window_s[i + 0x40] * f(i + k + 0x40)) -#define ms30(f) (window_s[0x3f - i] * f(i + k + 0xc0)) - -#define ms01(f) (window_s[i + 0x01] * f(i + k + 0x01)) -#define ms11(f) (window_s[0x7e - i] * f(i + k + 0x81)) -#define ms21(f) (window_s[i + 0x41] * f(i + k + 0x41)) -#define ms31(f) (window_s[0x3e - i] * f(i + k + 0xc1)) - - -void -fft_short(lame_internal_flags const *const gfc, - FLOAT x_real[3][BLKSIZE_s], int chn, const sample_t *const buffer[2]) -{ - int i; - int j; - int b; - - for (b = 0; b < 3; b++) { - FLOAT *x = &x_real[b][BLKSIZE_s / 2]; - short const k = (576 / 3) * (b + 1); - j = BLKSIZE_s / 8 - 1; - do { - FLOAT f0, f1, f2, f3, w; - - i = rv_tbl[j << 2]; - - f0 = ms00(ch01); - w = ms10(ch01); - f1 = f0 - w; - f0 = f0 + w; - f2 = ms20(ch01); - w = ms30(ch01); - f3 = f2 - w; - f2 = f2 + w; - - x -= 4; - x[0] = f0 + f2; - x[2] = f0 - f2; - x[1] = f1 + f3; - x[3] = f1 - f3; - - f0 = ms01(ch01); - w = ms11(ch01); - f1 = f0 - w; - f0 = f0 + w; - f2 = ms21(ch01); - w = ms31(ch01); - f3 = f2 - w; - f2 = f2 + w; - - x[BLKSIZE_s / 2 + 0] = f0 + f2; - x[BLKSIZE_s / 2 + 2] = f0 - f2; - x[BLKSIZE_s / 2 + 1] = f1 + f3; - x[BLKSIZE_s / 2 + 3] = f1 - f3; - } while (--j >= 0); - - gfc->fft_fht(x, BLKSIZE_s / 2); - /* BLKSIZE_s/2 because of 3DNow! ASM routine */ - } -} - -void -fft_long(lame_internal_flags const *const gfc, - FLOAT x[BLKSIZE], int chn, const sample_t *const buffer[2]) -{ - int i; - int jj = BLKSIZE / 8 - 1; - x += BLKSIZE / 2; - - do { - FLOAT f0, f1, f2, f3, w; - - i = rv_tbl[jj]; - f0 = ml00(ch01); - w = ml10(ch01); - f1 = f0 - w; - f0 = f0 + w; - f2 = ml20(ch01); - w = ml30(ch01); - f3 = f2 - w; - f2 = f2 + w; - - x -= 4; - x[0] = f0 + f2; - x[2] = f0 - f2; - x[1] = f1 + f3; - x[3] = f1 - f3; - - f0 = ml01(ch01); - w = ml11(ch01); - f1 = f0 - w; - f0 = f0 + w; - f2 = ml21(ch01); - w = ml31(ch01); - f3 = f2 - w; - f2 = f2 + w; - - x[BLKSIZE / 2 + 0] = f0 + f2; - x[BLKSIZE / 2 + 2] = f0 - f2; - x[BLKSIZE / 2 + 1] = f1 + f3; - x[BLKSIZE / 2 + 3] = f1 - f3; - } while (--jj >= 0); - - gfc->fft_fht(x, BLKSIZE / 2); - /* BLKSIZE/2 because of 3DNow! ASM routine */ -} - -#ifdef HAVE_NASM -extern void fht_3DN(FLOAT * fz, int n); -extern void fht_SSE(FLOAT * fz, int n); -#endif - -void -init_fft(lame_internal_flags * const gfc) -{ - int i; - - /* The type of window used here will make no real difference, but */ - /* in the interest of merging nspsytune stuff - switch to blackman window */ - for (i = 0; i < BLKSIZE; i++) - /* blackman window */ - window[i] = 0.42 - 0.5 * cos(2 * PI * (i + .5) / BLKSIZE) + - 0.08 * cos(4 * PI * (i + .5) / BLKSIZE); - - for (i = 0; i < BLKSIZE_s / 2; i++) - window_s[i] = 0.5 * (1.0 - cos(2.0 * PI * (i + 0.5) / BLKSIZE_s)); - - gfc->fft_fht = fht; -#ifdef HAVE_NASM - if (gfc->CPU_features.AMD_3DNow) { - gfc->fft_fht = fht_3DN; - } - else if (gfc->CPU_features.SSE) { - gfc->fft_fht = fht_SSE; - } - else { - gfc->fft_fht = fht; - } -#else -#ifdef HAVE_XMMINTRIN_H -#ifdef MIN_ARCH_SSE - gfc->fft_fht = fht_SSE2; -#endif -#endif -#endif -} diff --git a/platform/win32/msvc/external/lame/libmp3lame/fft.h b/platform/win32/msvc/external/lame/libmp3lame/fft.h deleted file mode 100644 index 258df887033..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/fft.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Fast Fourier Transform include file - * - * Copyright (c) 2000 Mark Taylor - * - * 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 LAME_FFT_H -#define LAME_FFT_H - -void fft_long(lame_internal_flags const *const gfc, FLOAT x_real[BLKSIZE], - int chn, const sample_t *const data[2]); - -void fft_short(lame_internal_flags const *const gfc, FLOAT x_real[3][BLKSIZE_s], - int chn, const sample_t *const data[2]); - -void init_fft(lame_internal_flags * const gfc); - -#endif - -/* End of fft.h */ diff --git a/platform/win32/msvc/external/lame/libmp3lame/gain_analysis.c b/platform/win32/msvc/external/lame/libmp3lame/gain_analysis.c deleted file mode 100644 index 145458b425e..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/gain_analysis.c +++ /dev/null @@ -1,518 +0,0 @@ -/* - * ReplayGainAnalysis - analyzes input samples and give the recommended dB change - * Copyright (C) 2001 David Robinson and Glen Sawyer - * Improvements and optimizations added by Frank Klemm, and by Marcel Muller - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * concept and filter values by David Robinson (David@Robinson.org) - * -- blame him if you think the idea is flawed - * original coding by Glen Sawyer (mp3gain@hotmail.com) - * -- blame him if you think this runs too slowly, or the coding is otherwise flawed - * - * lots of code improvements by Frank Klemm ( http://www.uni-jena.de/~pfk/mpp/ ) - * -- credit him for all the _good_ programming ;) - * - * - * For an explanation of the concepts and the basic algorithms involved, go to: - * http://www.replaygain.org/ - */ - -/* - * Here's the deal. Call - * - * InitGainAnalysis ( long samplefreq ); - * - * to initialize everything. Call - * - * AnalyzeSamples ( const Float_t* left_samples, - * const Float_t* right_samples, - * size_t num_samples, - * int num_channels ); - * - * as many times as you want, with as many or as few samples as you want. - * If mono, pass the sample buffer in through left_samples, leave - * right_samples NULL, and make sure num_channels = 1. - * - * GetTitleGain() - * - * will return the recommended dB level change for all samples analyzed - * SINCE THE LAST TIME you called GetTitleGain() OR InitGainAnalysis(). - * - * GetAlbumGain() - * - * will return the recommended dB level change for all samples analyzed - * since InitGainAnalysis() was called and finalized with GetTitleGain(). - * - * Pseudo-code to process an album: - * - * Float_t l_samples [4096]; - * Float_t r_samples [4096]; - * size_t num_samples; - * unsigned int num_songs; - * unsigned int i; - * - * InitGainAnalysis ( 44100 ); - * for ( i = 1; i <= num_songs; i++ ) { - * while ( ( num_samples = getSongSamples ( song[i], left_samples, right_samples ) ) > 0 ) - * AnalyzeSamples ( left_samples, right_samples, num_samples, 2 ); - * fprintf ("Recommended dB change for song %2d: %+6.2f dB\n", i, GetTitleGain() ); - * } - * fprintf ("Recommended dB change for whole album: %+6.2f dB\n", GetAlbumGain() ); - */ - -/* - * So here's the main source of potential code confusion: - * - * The filters applied to the incoming samples are IIR filters, - * meaning they rely on up to <filter order> number of previous samples - * AND up to <filter order> number of previous filtered samples. - * - * I set up the AnalyzeSamples routine to minimize memory usage and interface - * complexity. The speed isn't compromised too much (I don't think), but the - * internal complexity is higher than it should be for such a relatively - * simple routine. - * - * Optimization/clarity suggestions are welcome. - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "lame.h" -#include "machine.h" -#include "gain_analysis.h" - -/* for each filter: */ -/* [0] 48 kHz, [1] 44.1 kHz, [2] 32 kHz, [3] 24 kHz, [4] 22050 Hz, [5] 16 kHz, [6] 12 kHz, [7] is 11025 Hz, [8] 8 kHz */ - -#ifdef WIN32 -#pragma warning ( disable : 4305 ) -#endif - -/*lint -save -e736 loss of precision */ -static const Float_t ABYule[9][2 * YULE_ORDER + 1] = { - {0.03857599435200, -3.84664617118067, -0.02160367184185, 7.81501653005538, -0.00123395316851, - -11.34170355132042, -0.00009291677959, 13.05504219327545, -0.01655260341619, - -12.28759895145294, 0.02161526843274, 9.48293806319790, -0.02074045215285, -5.87257861775999, - 0.00594298065125, 2.75465861874613, 0.00306428023191, -0.86984376593551, 0.00012025322027, - 0.13919314567432, 0.00288463683916}, - {0.05418656406430, -3.47845948550071, -0.02911007808948, 6.36317777566148, -0.00848709379851, - -8.54751527471874, -0.00851165645469, 9.47693607801280, -0.00834990904936, -8.81498681370155, - 0.02245293253339, 6.85401540936998, -0.02596338512915, -4.39470996079559, 0.01624864962975, - 2.19611684890774, -0.00240879051584, -0.75104302451432, 0.00674613682247, 0.13149317958808, - -0.00187763777362}, - {0.15457299681924, -2.37898834973084, -0.09331049056315, 2.84868151156327, -0.06247880153653, - -2.64577170229825, 0.02163541888798, 2.23697657451713, -0.05588393329856, -1.67148153367602, - 0.04781476674921, 1.00595954808547, 0.00222312597743, -0.45953458054983, 0.03174092540049, - 0.16378164858596, -0.01390589421898, -0.05032077717131, 0.00651420667831, 0.02347897407020, - -0.00881362733839}, - {0.30296907319327, -1.61273165137247, -0.22613988682123, 1.07977492259970, -0.08587323730772, - -0.25656257754070, 0.03282930172664, -0.16276719120440, -0.00915702933434, -0.22638893773906, - -0.02364141202522, 0.39120800788284, -0.00584456039913, -0.22138138954925, 0.06276101321749, - 0.04500235387352, -0.00000828086748, 0.02005851806501, 0.00205861885564, 0.00302439095741, - -0.02950134983287}, - {0.33642304856132, -1.49858979367799, -0.25572241425570, 0.87350271418188, -0.11828570177555, - 0.12205022308084, 0.11921148675203, -0.80774944671438, -0.07834489609479, 0.47854794562326, - -0.00469977914380, -0.12453458140019, -0.00589500224440, -0.04067510197014, 0.05724228140351, - 0.08333755284107, 0.00832043980773, -0.04237348025746, -0.01635381384540, 0.02977207319925, - -0.01760176568150}, - {0.44915256608450, -0.62820619233671, -0.14351757464547, 0.29661783706366, -0.22784394429749, - -0.37256372942400, -0.01419140100551, 0.00213767857124, 0.04078262797139, -0.42029820170918, - -0.12398163381748, 0.22199650564824, 0.04097565135648, 0.00613424350682, 0.10478503600251, - 0.06747620744683, -0.01863887810927, 0.05784820375801, -0.03193428438915, 0.03222754072173, - 0.00541907748707}, - {0.56619470757641, -1.04800335126349, -0.75464456939302, 0.29156311971249, 0.16242137742230, - -0.26806001042947, 0.16744243493672, 0.00819999645858, -0.18901604199609, 0.45054734505008, - 0.30931782841830, -0.33032403314006, -0.27562961986224, 0.06739368333110, 0.00647310677246, - -0.04784254229033, 0.08647503780351, 0.01639907836189, -0.03788984554840, 0.01807364323573, - -0.00588215443421}, - {0.58100494960553, -0.51035327095184, -0.53174909058578, -0.31863563325245, -0.14289799034253, - -0.20256413484477, 0.17520704835522, 0.14728154134330, 0.02377945217615, 0.38952639978999, - 0.15558449135573, -0.23313271880868, -0.25344790059353, -0.05246019024463, 0.01628462406333, - -0.02505961724053, 0.06920467763959, 0.02442357316099, -0.03721611395801, 0.01818801111503, - -0.00749618797172}, - {0.53648789255105, -0.25049871956020, -0.42163034350696, -0.43193942311114, -0.00275953611929, - -0.03424681017675, 0.04267842219415, -0.04678328784242, -0.10214864179676, 0.26408300200955, - 0.14590772289388, 0.15113130533216, -0.02459864859345, -0.17556493366449, -0.11202315195388, - -0.18823009262115, -0.04060034127000, 0.05477720428674, 0.04788665548180, 0.04704409688120, - -0.02217936801134} -}; - -static const Float_t ABButter[9][2 * BUTTER_ORDER + 1] = { - {0.98621192462708, -1.97223372919527, -1.97242384925416, 0.97261396931306, 0.98621192462708}, - {0.98500175787242, -1.96977855582618, -1.97000351574484, 0.97022847566350, 0.98500175787242}, - {0.97938932735214, -1.95835380975398, -1.95877865470428, 0.95920349965459, 0.97938932735214}, - {0.97531843204928, -1.95002759149878, -1.95063686409857, 0.95124613669835, 0.97531843204928}, - {0.97316523498161, -1.94561023566527, -1.94633046996323, 0.94705070426118, 0.97316523498161}, - {0.96454515552826, -1.92783286977036, -1.92909031105652, 0.93034775234268, 0.96454515552826}, - {0.96009142950541, -1.91858953033784, -1.92018285901082, 0.92177618768381, 0.96009142950541}, - {0.95856916599601, -1.91542108074780, -1.91713833199203, 0.91885558323625, 0.95856916599601}, - {0.94597685600279, -1.88903307939452, -1.89195371200558, 0.89487434461664, 0.94597685600279} -}; - -/*lint -restore */ - -#ifdef WIN32 -#pragma warning ( default : 4305 ) -#endif - -/* When calling this procedure, make sure that ip[-order] and op[-order] point to real data! */ - -static void -filterYule(const Float_t * input, Float_t * output, size_t nSamples, const Float_t * const kernel) -{ - /*register double y; */ - - while (nSamples--) { - *output = 1e-10 /* 1e-10 is a hack to avoid slowdown because of denormals */ - + input[0] * kernel[0] - - output[-1] * kernel[1] - + input[-1] * kernel[2] - - output[-2] * kernel[3] - + input[-2] * kernel[4] - - output[-3] * kernel[5] - + input[-3] * kernel[6] - - output[-4] * kernel[7] - + input[-4] * kernel[8] - - output[-5] * kernel[9] - + input[-5] * kernel[10] - - output[-6] * kernel[11] - + input[-6] * kernel[12] - - output[-7] * kernel[13] - + input[-7] * kernel[14] - - output[-8] * kernel[15] - + input[-8] * kernel[16] - - output[-9] * kernel[17] - + input[-9] * kernel[18] - - output[-10] * kernel[19] - + input[-10] * kernel[20]; - ++output; - ++input; - /* *output++ = (Float_t)y; */ - } -} - -static void -filterButter(const Float_t * input, Float_t * output, size_t nSamples, const Float_t * const kernel) -{ /*register double y; */ - - while (nSamples--) { - *output = input[0] * kernel[0] - - output[-1] * kernel[1] - + input[-1] * kernel[2] - - output[-2] * kernel[3] - + input[-2] * kernel[4]; - ++output; - ++input; - /* *output++ = (Float_t)y; */ - } -} - - - -static int ResetSampleFrequency(replaygain_t * rgData, long samplefreq); - -/* returns a INIT_GAIN_ANALYSIS_OK if successful, INIT_GAIN_ANALYSIS_ERROR if not */ - -int -ResetSampleFrequency(replaygain_t * rgData, long samplefreq) -{ - int i; - - /* zero out initial values */ - for (i = 0; i < MAX_ORDER; i++) - rgData->linprebuf[i] = rgData->lstepbuf[i] - = rgData->loutbuf[i] - = rgData->rinprebuf[i] - = rgData->rstepbuf[i] - = rgData->routbuf[i] = 0.; - - switch ((int) (samplefreq)) { - case 48000: - rgData->freqindex = 0; - break; - case 44100: - rgData->freqindex = 1; - break; - case 32000: - rgData->freqindex = 2; - break; - case 24000: - rgData->freqindex = 3; - break; - case 22050: - rgData->freqindex = 4; - break; - case 16000: - rgData->freqindex = 5; - break; - case 12000: - rgData->freqindex = 6; - break; - case 11025: - rgData->freqindex = 7; - break; - case 8000: - rgData->freqindex = 8; - break; - default: - return INIT_GAIN_ANALYSIS_ERROR; - } - - rgData->sampleWindow = - (samplefreq * RMS_WINDOW_TIME_NUMERATOR + RMS_WINDOW_TIME_DENOMINATOR - - 1) / RMS_WINDOW_TIME_DENOMINATOR; - - rgData->lsum = 0.; - rgData->rsum = 0.; - rgData->totsamp = 0; - - memset(rgData->A, 0, sizeof(rgData->A)); - - return INIT_GAIN_ANALYSIS_OK; -} - -int -InitGainAnalysis(replaygain_t * rgData, long samplefreq) -{ - if (ResetSampleFrequency(rgData, samplefreq) != INIT_GAIN_ANALYSIS_OK) { - return INIT_GAIN_ANALYSIS_ERROR; - } - - rgData->linpre = rgData->linprebuf + MAX_ORDER; - rgData->rinpre = rgData->rinprebuf + MAX_ORDER; - rgData->lstep = rgData->lstepbuf + MAX_ORDER; - rgData->rstep = rgData->rstepbuf + MAX_ORDER; - rgData->lout = rgData->loutbuf + MAX_ORDER; - rgData->rout = rgData->routbuf + MAX_ORDER; - - memset(rgData->B, 0, sizeof(rgData->B)); - - return INIT_GAIN_ANALYSIS_OK; -} - -/* returns GAIN_ANALYSIS_OK if successful, GAIN_ANALYSIS_ERROR if not */ - -static inline double -fsqr(const double d) -{ - return d * d; -} - -int -AnalyzeSamples(replaygain_t * rgData, const Float_t * left_samples, const Float_t * right_samples, - size_t num_samples, int num_channels) -{ - const Float_t *curleft; - const Float_t *curright; - long batchsamples; - long cursamples; - long cursamplepos; - int i; - - if (num_samples == 0) - return GAIN_ANALYSIS_OK; - - cursamplepos = 0; - batchsamples = (long) num_samples; - - switch (num_channels) { - case 1: - right_samples = left_samples; - break; - case 2: - break; - default: - return GAIN_ANALYSIS_ERROR; - } - - if (num_samples < MAX_ORDER) { - memcpy(rgData->linprebuf + MAX_ORDER, left_samples, num_samples * sizeof(Float_t)); - memcpy(rgData->rinprebuf + MAX_ORDER, right_samples, num_samples * sizeof(Float_t)); - } - else { - memcpy(rgData->linprebuf + MAX_ORDER, left_samples, MAX_ORDER * sizeof(Float_t)); - memcpy(rgData->rinprebuf + MAX_ORDER, right_samples, MAX_ORDER * sizeof(Float_t)); - } - - while (batchsamples > 0) { - cursamples = batchsamples > rgData->sampleWindow - rgData->totsamp ? - rgData->sampleWindow - rgData->totsamp : batchsamples; - if (cursamplepos < MAX_ORDER) { - curleft = rgData->linpre + cursamplepos; - curright = rgData->rinpre + cursamplepos; - if (cursamples > MAX_ORDER - cursamplepos) - cursamples = MAX_ORDER - cursamplepos; - } - else { - curleft = left_samples + cursamplepos; - curright = right_samples + cursamplepos; - } - - YULE_FILTER(curleft, rgData->lstep + rgData->totsamp, cursamples, - ABYule[rgData->freqindex]); - YULE_FILTER(curright, rgData->rstep + rgData->totsamp, cursamples, - ABYule[rgData->freqindex]); - - BUTTER_FILTER(rgData->lstep + rgData->totsamp, rgData->lout + rgData->totsamp, cursamples, - ABButter[rgData->freqindex]); - BUTTER_FILTER(rgData->rstep + rgData->totsamp, rgData->rout + rgData->totsamp, cursamples, - ABButter[rgData->freqindex]); - - curleft = rgData->lout + rgData->totsamp; /* Get the squared values */ - curright = rgData->rout + rgData->totsamp; - - i = cursamples % 8; - while (i--) { - rgData->lsum += fsqr(*curleft++); - rgData->rsum += fsqr(*curright++); - } - i = cursamples / 8; - while (i--) { - rgData->lsum += fsqr(curleft[0]) - + fsqr(curleft[1]) - + fsqr(curleft[2]) - + fsqr(curleft[3]) - + fsqr(curleft[4]) - + fsqr(curleft[5]) - + fsqr(curleft[6]) - + fsqr(curleft[7]); - curleft += 8; - rgData->rsum += fsqr(curright[0]) - + fsqr(curright[1]) - + fsqr(curright[2]) - + fsqr(curright[3]) - + fsqr(curright[4]) - + fsqr(curright[5]) - + fsqr(curright[6]) - + fsqr(curright[7]); - curright += 8; - } - - batchsamples -= cursamples; - cursamplepos += cursamples; - rgData->totsamp += cursamples; - if (rgData->totsamp == rgData->sampleWindow) { /* Get the Root Mean Square (RMS) for this set of samples */ - double const val = - STEPS_per_dB * 10. * log10((rgData->lsum + rgData->rsum) / rgData->totsamp * 0.5 + - 1.e-37); - size_t ival = (val <= 0) ? 0 : (size_t) val; - if (ival >= sizeof(rgData->A) / sizeof(*(rgData->A))) - ival = sizeof(rgData->A) / sizeof(*(rgData->A)) - 1; - rgData->A[ival]++; - rgData->lsum = rgData->rsum = 0.; - memmove(rgData->loutbuf, rgData->loutbuf + rgData->totsamp, - MAX_ORDER * sizeof(Float_t)); - memmove(rgData->routbuf, rgData->routbuf + rgData->totsamp, - MAX_ORDER * sizeof(Float_t)); - memmove(rgData->lstepbuf, rgData->lstepbuf + rgData->totsamp, - MAX_ORDER * sizeof(Float_t)); - memmove(rgData->rstepbuf, rgData->rstepbuf + rgData->totsamp, - MAX_ORDER * sizeof(Float_t)); - rgData->totsamp = 0; - } - if (rgData->totsamp > rgData->sampleWindow) /* somehow I really screwed up: Error in programming! Contact author about totsamp > sampleWindow */ - return GAIN_ANALYSIS_ERROR; - } - if (num_samples < MAX_ORDER) { - memmove(rgData->linprebuf, rgData->linprebuf + num_samples, - (MAX_ORDER - num_samples) * sizeof(Float_t)); - memmove(rgData->rinprebuf, rgData->rinprebuf + num_samples, - (MAX_ORDER - num_samples) * sizeof(Float_t)); - memcpy(rgData->linprebuf + MAX_ORDER - num_samples, left_samples, - num_samples * sizeof(Float_t)); - memcpy(rgData->rinprebuf + MAX_ORDER - num_samples, right_samples, - num_samples * sizeof(Float_t)); - } - else { - memcpy(rgData->linprebuf, left_samples + num_samples - MAX_ORDER, - MAX_ORDER * sizeof(Float_t)); - memcpy(rgData->rinprebuf, right_samples + num_samples - MAX_ORDER, - MAX_ORDER * sizeof(Float_t)); - } - - return GAIN_ANALYSIS_OK; -} - - -static Float_t -analyzeResult(uint32_t const *Array, size_t len) -{ - uint32_t elems; - uint32_t upper; - uint32_t sum; - size_t i; - - elems = 0; - for (i = 0; i < len; i++) - elems += Array[i]; - if (elems == 0) - return GAIN_NOT_ENOUGH_SAMPLES; - - upper = (uint32_t) ceil(elems * (1. - RMS_PERCENTILE)); - sum = 0; - for (i = len; i-- > 0;) { - sum += Array[i]; - if (sum >= upper) { - break; - } - } - - return (Float_t) ((Float_t) PINK_REF - (Float_t) i / (Float_t) STEPS_per_dB); -} - - -Float_t -GetTitleGain(replaygain_t * rgData) -{ - Float_t retval; - unsigned int i; - - retval = analyzeResult(rgData->A, sizeof(rgData->A) / sizeof(*(rgData->A))); - - for (i = 0; i < sizeof(rgData->A) / sizeof(*(rgData->A)); i++) { - rgData->B[i] += rgData->A[i]; - rgData->A[i] = 0; - } - - for (i = 0; i < MAX_ORDER; i++) - rgData->linprebuf[i] = rgData->lstepbuf[i] - = rgData->loutbuf[i] - = rgData->rinprebuf[i] - = rgData->rstepbuf[i] - = rgData->routbuf[i] = 0.f; - - rgData->totsamp = 0; - rgData->lsum = rgData->rsum = 0.; - return retval; -} - -#if 0 -static Float_t GetAlbumGain(replaygain_t const* rgData); - -Float_t -GetAlbumGain(replaygain_t const* rgData) -{ - return analyzeResult(rgData->B, sizeof(rgData->B) / sizeof(*(rgData->B))); -} -#endif - -/* end of gain_analysis.c */ diff --git a/platform/win32/msvc/external/lame/libmp3lame/gain_analysis.h b/platform/win32/msvc/external/lame/libmp3lame/gain_analysis.h deleted file mode 100644 index a6b56ab3b5e..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/gain_analysis.h +++ /dev/null @@ -1,109 +0,0 @@ -/* - * ReplayGainAnalysis - analyzes input samples and give the recommended dB change - * Copyright (C) 2001 David Robinson and Glen Sawyer - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * concept and filter values by David Robinson (David@Robinson.org) - * -- blame him if you think the idea is flawed - * coding by Glen Sawyer (mp3gain@hotmail.com) 735 W 255 N, Orem, UT 84057-4505 USA - * -- blame him if you think this runs too slowly, or the coding is otherwise flawed - * - * For an explanation of the concepts and the basic algorithms involved, go to: - * http://www.replaygain.org/ - */ - -#ifndef GAIN_ANALYSIS_H -#define GAIN_ANALYSIS_H - -#ifdef HAVE_INTTYPES_H -# include <inttypes.h> -#else -# ifdef HAVE_STDINT_H -# include <stdint.h> -# endif -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - - typedef sample_t Float_t; /* Type used for filtering */ - - -#define PINK_REF 64.82 /* 298640883795 */ /* calibration value for 89dB */ - - -#define YULE_ORDER 10 -#define BUTTER_ORDER 2 -#define YULE_FILTER filterYule -#define BUTTER_FILTER filterButter -#define RMS_PERCENTILE 0.95 /* percentile which is louder than the proposed level */ -#define MAX_SAMP_FREQ 48000L /* maximum allowed sample frequency [Hz] */ -#define RMS_WINDOW_TIME_NUMERATOR 1L -#define RMS_WINDOW_TIME_DENOMINATOR 20L /* numerator / denominator = time slice size [s] */ -#define STEPS_per_dB 100 /* Table entries per dB */ -#define MAX_dB 120 /* Table entries for 0...MAX_dB (normal max. values are 70...80 dB) */ - - enum { GAIN_NOT_ENOUGH_SAMPLES = -24601, GAIN_ANALYSIS_ERROR = 0, GAIN_ANALYSIS_OK = - 1, INIT_GAIN_ANALYSIS_ERROR = 0, INIT_GAIN_ANALYSIS_OK = 1 - }; - - enum { MAX_ORDER = (BUTTER_ORDER > YULE_ORDER ? BUTTER_ORDER : YULE_ORDER) - , MAX_SAMPLES_PER_WINDOW = ((MAX_SAMP_FREQ * RMS_WINDOW_TIME_NUMERATOR) / RMS_WINDOW_TIME_DENOMINATOR + 1) /* max. Samples per Time slice */ - }; - - struct replaygain_data { - Float_t linprebuf[MAX_ORDER * 2]; - Float_t *linpre; /* left input samples, with pre-buffer */ - Float_t lstepbuf[MAX_SAMPLES_PER_WINDOW + MAX_ORDER]; - Float_t *lstep; /* left "first step" (i.e. post first filter) samples */ - Float_t loutbuf[MAX_SAMPLES_PER_WINDOW + MAX_ORDER]; - Float_t *lout; /* left "out" (i.e. post second filter) samples */ - Float_t rinprebuf[MAX_ORDER * 2]; - Float_t *rinpre; /* right input samples ... */ - Float_t rstepbuf[MAX_SAMPLES_PER_WINDOW + MAX_ORDER]; - Float_t *rstep; - Float_t routbuf[MAX_SAMPLES_PER_WINDOW + MAX_ORDER]; - Float_t *rout; - long sampleWindow; /* number of samples required to reach number of milliseconds required for RMS window */ - long totsamp; - double lsum; - double rsum; - int freqindex; - int first; - uint32_t A[STEPS_per_dB * MAX_dB]; - uint32_t B[STEPS_per_dB * MAX_dB]; - - }; -#ifndef replaygain_data_defined -#define replaygain_data_defined - typedef struct replaygain_data replaygain_t; -#endif - - - - - int InitGainAnalysis(replaygain_t * rgData, long samplefreq); - int AnalyzeSamples(replaygain_t * rgData, const Float_t * left_samples, - const Float_t * right_samples, size_t num_samples, int num_channels); - Float_t GetTitleGain(replaygain_t * rgData); - - -#ifdef __cplusplus -} -#endif -#endif /* GAIN_ANALYSIS_H */ diff --git a/platform/win32/msvc/external/lame/libmp3lame/i386/Makefile.am b/platform/win32/msvc/external/lame/libmp3lame/i386/Makefile.am deleted file mode 100644 index e49ad9c5d54..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/i386/Makefile.am +++ /dev/null @@ -1,73 +0,0 @@ -## $Id: Makefile.am,v 1.26 2011/04/04 09:42:34 aleidinger Exp $ - -AUTOMAKE_OPTIONS = foreign $(top_srcdir)/ansi2knr - -DEFS = @DEFS@ @CONFIG_DEFS@ - -ECHO ?= echo - -nasm_sources = \ - choose_table.nas \ - cpu_feat.nas \ - fft3dn.nas \ - fftsse.nas - -if HAVE_NASM -noinst_LTLIBRARIES = liblameasmroutines.la -liblameasmroutines_la_SOURCES = $(nasm_sources) -am_liblameasmroutines_la_OBJECTS = \ - choose_table$U.lo \ - cpu_feat$U.lo \ - fft3dn$U.lo \ - fftsse$U.lo -endif - -noinst_HEADERS = nasm.h - -INCLUDES = @INCLUDES@ -I$(top_srcdir)/libmp3lame/@CPUTYPE@ - -SUFFIXES = .nas .lo - -EXTRA_liblameasmroutines_la_SOURCES = $(nasm_sources) - -CLEANFILES = \ - choose_table.o.lst \ - choose_table.lo.lst \ - cpu_feat.o.lst \ - cpu_feat.lo.lst \ - fft3dn.o.lst \ - fft3dn.lo.lst \ - fftsse.o.lst \ - fftsse.lo.lst - -EXTRA_DIST = \ - fft.nas \ - fftfpu.nas \ - ffttbl.nas \ - scalar.nas - -NASM = @NASM@ -NASMFLAGS=@NASM_FORMAT@ -i $(top_srcdir)/libmp3lame/@CPUTYPE@/ - -.nas.o: $< nasm.h - $(NASM) $(NASMFLAGS) $< -o $@ -l $@.lst - -.nas.lo: $< nasm.h - mkdir -p .libs - $(ECHO) '# Generated by ltmain.sh - GNU libtool 1.5.22 (1.1220.2.365 2005/12/18 22:14:06)' >$@ - $(ECHO) "pic_object='.libs/$*.o'" >>$@ - $(ECHO) "non_pic_object='.libs/$*.o'" >>$@ - $(NASM) $(NASMFLAGS) $< -o .libs/$*.o -l $@.lst - -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ - $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ - - -#$(OBJECTS): libtool -#libtool: $(LIBTOOL_DEPS) -# $(SHELL) $(top_builddir)/config.status --recheck diff --git a/platform/win32/msvc/external/lame/libmp3lame/i386/Makefile.in b/platform/win32/msvc/external/lame/libmp3lame/i386/Makefile.in deleted file mode 100644 index 50e4713b496..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/i386/Makefile.in +++ /dev/null @@ -1,533 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -ANSI2KNR = $(top_srcdir)/ansi2knr -subdir = libmp3lame/i386 -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -liblameasmroutines_la_LIBADD = -am__liblameasmroutines_la_SOURCES_DIST = choose_table.nas cpu_feat.nas \ - fft3dn.nas fftsse.nas -am__objects_1 = choose_table.lo cpu_feat.lo fft3dn.lo fftsse.lo -liblameasmroutines_la_OBJECTS = $(am_liblameasmroutines_la_OBJECTS) -@HAVE_NASM_TRUE@am_liblameasmroutines_la_rpath = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -SOURCES = $(liblameasmroutines_la_SOURCES) \ - $(EXTRA_liblameasmroutines_la_SOURCES) -DIST_SOURCES = $(am__liblameasmroutines_la_SOURCES_DIST) \ - $(EXTRA_liblameasmroutines_la_SOURCES) -HEADERS = $(noinst_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CONFIG_DEFS = @CONFIG_DEFS@ -CONFIG_MATH_LIB = @CONFIG_MATH_LIB@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CPUCCODE = @CPUCCODE@ -CPUTYPE = @CPUTYPE@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ @CONFIG_DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ -FRONTEND_LDADD = @FRONTEND_LDADD@ -FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ -GREP = @GREP@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_CONFIG = @GTK_CONFIG@ -GTK_LIBS = @GTK_LIBS@ -INCLUDES = @INCLUDES@ -I$(top_srcdir)/libmp3lame/@CPUTYPE@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDADD = @LDADD@ -LDFLAGS = @LDFLAGS@ -LIBICONV = @LIBICONV@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ -LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBICONV = @LTLIBICONV@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEDEP = @MAKEDEP@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NASM = @NASM@ -NASM_FORMAT = @NASM_FORMAT@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -RM_F = @RM_F@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ -SNDFILE_LIBS = @SNDFILE_LIBS@ -STRIP = @STRIP@ -U = @U@ -VERSION = @VERSION@ -WITH_FRONTEND = @WITH_FRONTEND@ -WITH_MP3RTP = @WITH_MP3RTP@ -WITH_MP3X = @WITH_MP3X@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = foreign $(top_srcdir)/ansi2knr -nasm_sources = \ - choose_table.nas \ - cpu_feat.nas \ - fft3dn.nas \ - fftsse.nas - -@HAVE_NASM_TRUE@noinst_LTLIBRARIES = liblameasmroutines.la -@HAVE_NASM_TRUE@liblameasmroutines_la_SOURCES = $(nasm_sources) -@HAVE_NASM_TRUE@am_liblameasmroutines_la_OBJECTS = \ -@HAVE_NASM_TRUE@ choose_table$U.lo \ -@HAVE_NASM_TRUE@ cpu_feat$U.lo \ -@HAVE_NASM_TRUE@ fft3dn$U.lo \ -@HAVE_NASM_TRUE@ fftsse$U.lo - -noinst_HEADERS = nasm.h -SUFFIXES = .nas .lo -EXTRA_liblameasmroutines_la_SOURCES = $(nasm_sources) -CLEANFILES = \ - choose_table.o.lst \ - choose_table.lo.lst \ - cpu_feat.o.lst \ - cpu_feat.lo.lst \ - fft3dn.o.lst \ - fft3dn.lo.lst \ - fftsse.o.lst \ - fftsse.lo.lst - -EXTRA_DIST = \ - fft.nas \ - fftfpu.nas \ - ffttbl.nas \ - scalar.nas - -NASMFLAGS = @NASM_FORMAT@ -i $(top_srcdir)/libmp3lame/@CPUTYPE@/ -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) - -LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ - $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) - -CCLD = $(CC) -LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ - -all: all-am - -.SUFFIXES: -.SUFFIXES: .nas .lo .o -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libmp3lame/i386/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign libmp3lame/i386/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -liblameasmroutines.la: $(liblameasmroutines_la_OBJECTS) $(liblameasmroutines_la_DEPENDENCIES) - $(LINK) $(am_liblameasmroutines_la_rpath) $(liblameasmroutines_la_OBJECTS) $(liblameasmroutines_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c -$(top_srcdir)/ansi2knr: - $(am__cd) $(top_srcdir) && $(MAKE) $(AM_MAKEFLAGS) ./ansi2knr - -mostlyclean-kr: - -test "$U" = "" || rm -f *_.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) $(HEADERS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: $(top_srcdir)/ansi2knr install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-kr \ - mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ - uninstall-am - - -ECHO ?= echo - -.nas.o: $< nasm.h - $(NASM) $(NASMFLAGS) $< -o $@ -l $@.lst - -.nas.lo: $< nasm.h - mkdir -p .libs - $(ECHO) '# Generated by ltmain.sh - GNU libtool 1.5.22 (1.1220.2.365 2005/12/18 22:14:06)' >$@ - $(ECHO) "pic_object='.libs/$*.o'" >>$@ - $(ECHO) "non_pic_object='.libs/$*.o'" >>$@ - $(NASM) $(NASMFLAGS) $< -o .libs/$*.o -l $@.lst - -#$(OBJECTS): libtool -#libtool: $(LIBTOOL_DEPS) -# $(SHELL) $(top_builddir)/config.status --recheck - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/platform/win32/msvc/external/lame/libmp3lame/i386/choose_table.nas b/platform/win32/msvc/external/lame/libmp3lame/i386/choose_table.nas deleted file mode 100644 index 9217c8eda2c..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/i386/choose_table.nas +++ /dev/null @@ -1,447 +0,0 @@ -; new count bit routine -; part of this code is origined from -; new GOGO-no-coda (1999, 2000) -; Copyright (C) 1999 shigeo -; modified by Keiichi SAKAI - -%include "nasm.h" - - globaldef choose_table_MMX - globaldef MMX_masking - - externdef largetbl - externdef t1l - externdef table23 - externdef table56 - - segment_data - align 16 -D14_14_14_14 dd 0x000E000E, 0x000E000E -D15_15_15_15 dd 0xfff0fff0, 0xfff0fff0 -mul_add dd 0x00010010, 0x00010010 -mul_add23 dd 0x00010003, 0x00010003 -mul_add56 dd 0x00010004, 0x00010004 -tableDEF - dd 0x00010003,0x01,0x00050005,0x05,0x00070006,0x07,0x00090008,0x08,0x000a0008, 0x09 - dd 0x000a0009,0x0a,0x000b000a,0x0a,0x000b000a,0x0b,0x000c000a,0x0a,0x000c000b, 0x0b - dd 0x000c000b,0x0c,0x000d000c,0x0c,0x000d000c,0x0d,0x000d000c,0x0d,0x000e000d, 0x0e - dd 0x000b000e,0x0e,0x00040005,0x04,0x00060005,0x06,0x00080007,0x08,0x00090008, 0x09 - dd 0x000a0009,0x0a,0x000b0009,0x0a,0x000b000a,0x0b,0x000b000a,0x0b,0x000c000a, 0x0b - dd 0x000c000b,0x0b,0x000c000b,0x0c,0x000d000c,0x0c,0x000e000c,0x0d,0x000d000c, 0x0e - dd 0x000e000d,0x0e,0x000b000d,0x0e,0x00070006,0x07,0x00080007,0x08,0x00090007, 0x09 - dd 0x000a0008,0x0a,0x000b0009,0x0b,0x000b0009,0x0b,0x000c000a,0x0c,0x000c000a, 0x0c - dd 0x000d000a,0x0b,0x000c000b,0x0c,0x000d000b,0x0c,0x000d000c,0x0d,0x000d000c, 0x0d - dd 0x000e000d,0x0e,0x000e000d,0x0f,0x000c000d,0x0f,0x00090007,0x08,0x00090008, 0x09 - dd 0x000a0008,0x0a,0x000b0009,0x0b,0x000b0009,0x0b,0x000c000a,0x0c,0x000c000a, 0x0c - dd 0x000c000b,0x0c,0x000d000b,0x0c,0x000d000b,0x0d,0x000e000c,0x0d,0x000e000c, 0x0d - dd 0x000e000c,0x0d,0x000f000d,0x0e,0x000f000d,0x0f,0x000d000d,0x0f,0x000a0008, 0x09 - dd 0x000a0008,0x09,0x000b0009,0x0b,0x000b0009,0x0b,0x000c000a,0x0c,0x000c000a, 0x0c - dd 0x000d000b,0x0d,0x000d000b,0x0d,0x000d000b,0x0c,0x000e000b,0x0d,0x000e000c, 0x0d - dd 0x000e000c,0x0e,0x000f000c,0x0e,0x000f000d,0x0f,0x000f000d,0x0f,0x000c000d, 0x10 - dd 0x000a0009,0x0a,0x000a0009,0x0a,0x000b0009,0x0b,0x000b000a,0x0c,0x000c000a, 0x0c - dd 0x000d000a,0x0c,0x000d000b,0x0d,0x000e000b,0x0d,0x000d000b,0x0d,0x000e000b, 0x0d - dd 0x000e000c,0x0e,0x000f000c,0x0d,0x000f000d,0x0f,0x000f000d,0x0f,0x0010000d, 0x10 - dd 0x000d000e,0x10,0x000b000a,0x0a,0x000b0009,0x0b,0x000b000a,0x0c,0x000c000a, 0x0c - dd 0x000d000a,0x0d,0x000d000b,0x0d,0x000d000b,0x0d,0x000d000b,0x0d,0x000e000b, 0x0d - dd 0x000e000c,0x0e,0x000e000c,0x0e,0x000e000c,0x0e,0x000f000d,0x0f,0x000f000d, 0x0f - dd 0x0010000e,0x10,0x000d000e,0x10,0x000b000a,0x0b,0x000b000a,0x0b,0x000c000a, 0x0c - dd 0x000c000b,0x0d,0x000d000b,0x0d,0x000d000b,0x0d,0x000d000b,0x0e,0x000e000c, 0x0e - dd 0x000e000c,0x0e,0x000f000c,0x0e,0x000f000c,0x0f,0x000f000c,0x0f,0x000f000d, 0x0f - dd 0x0011000d,0x10,0x0011000d,0x12,0x000d000e,0x12,0x000b000a,0x0a,0x000c000a, 0x0a - dd 0x000c000a,0x0b,0x000d000b,0x0c,0x000d000b,0x0c,0x000d000b,0x0d,0x000e000b, 0x0d - dd 0x000e000c,0x0e,0x000f000c,0x0e,0x000f000c,0x0e,0x000f000c,0x0e,0x000f000d, 0x0f - dd 0x0010000d,0x0f,0x0010000e,0x10,0x0010000e,0x11,0x000d000e,0x11,0x000c000a, 0x0b - dd 0x000c000a,0x0b,0x000c000b,0x0c,0x000d000b,0x0c,0x000d000b,0x0d,0x000e000b, 0x0d - dd 0x000e000c,0x0d,0x000f000c,0x0f,0x000f000c,0x0e,0x000f000d,0x0f,0x000f000d, 0x0f - dd 0x0010000d,0x10,0x000f000d,0x10,0x0010000e,0x10,0x000f000e,0x12,0x000e000e, 0x11 - dd 0x000c000b,0x0b,0x000d000b,0x0c,0x000c000b,0x0c,0x000d000b,0x0d,0x000e000c, 0x0d - dd 0x000e000c,0x0e,0x000e000c,0x0e,0x000e000c,0x0f,0x000f000c,0x0e,0x0010000d, 0x0f - dd 0x0010000d,0x10,0x0010000d,0x0f,0x0011000d,0x10,0x0011000e,0x11,0x0010000f, 0x12 - dd 0x000d000e,0x13,0x000d000b,0x0c,0x000d000b,0x0c,0x000d000b,0x0c,0x000d000b, 0x0d - dd 0x000e000c,0x0e,0x000e000c,0x0e,0x000f000c,0x0e,0x0010000c,0x0e,0x0010000d, 0x0f - dd 0x0010000d,0x0f,0x0010000d,0x0f,0x0010000d,0x10,0x0010000e,0x11,0x000f000e, 0x11 - dd 0x0010000e,0x11,0x000e000f,0x12,0x000d000c,0x0c,0x000e000c,0x0d,0x000e000b, 0x0d - dd 0x000e000c,0x0e,0x000e000c,0x0e,0x000f000c,0x0f,0x000f000d,0x0e,0x000f000d, 0x0f - dd 0x000f000d,0x10,0x0011000d,0x10,0x0010000d,0x11,0x0010000d,0x11,0x0010000e, 0x11 - dd 0x0010000e,0x12,0x0012000f,0x12,0x000e000f,0x12,0x000f000c,0x0d,0x000e000c, 0x0d - dd 0x000e000c,0x0e,0x000e000c,0x0f,0x000f000c,0x0f,0x000f000d,0x0f,0x0010000d, 0x10 - dd 0x0010000d,0x10,0x0010000d,0x10,0x0012000e,0x10,0x0011000e,0x10,0x0011000e, 0x11 - dd 0x0011000e,0x12,0x0013000e,0x11,0x0011000f,0x12,0x000e000f,0x12,0x000e000d, 0x0e - dd 0x000f000d,0x0e,0x000d000d,0x0e,0x000e000d,0x0f,0x0010000d,0x0f,0x0010000d, 0x0f - dd 0x000f000d,0x11,0x0010000d,0x10,0x0010000e,0x10,0x0011000e,0x13,0x0012000e, 0x11 - dd 0x0011000e,0x11,0x0013000f,0x11,0x0011000f,0x13,0x0010000e,0x12,0x000e000f, 0x12 - dd 0x000b000d,0x0d,0x000b000d,0x0e,0x000b000d,0x0f,0x000c000d,0x10,0x000c000d, 0x10 - dd 0x000d000d,0x10,0x000d000d,0x11,0x000d000e,0x10,0x000e000e,0x11,0x000e000e, 0x11 - dd 0x000e000e,0x12,0x000e000e,0x12,0x000e000f,0x15,0x000e000f,0x14,0x000e000f, 0x15 - dd 0x000c000f,0x12 - -tableABC - dd 0x00020004,0x1,0x00040004,0x4,0x00060006,0x7,0x00080008,0x9,0x00090009,0xa,0x000a000a,0xa - dd 0x0009000a,0xa,0x000a000a,0xb,0x00000000,0x0,0x00020003,0x1,0x00040004,0x4,0x00070006,0x7 - dd 0x00090007,0x9,0x00090009,0x9,0x000a000a,0xa,0x00000000,0x0,0x00040004,0x4,0x00050005,0x6 - dd 0x00060006,0x8,0x00080007,0x9,0x000a0009,0xa,0x000a0009,0xb,0x0009000a,0xa,0x000a000a,0xa - dd 0x00000000,0x0,0x00040004,0x4,0x00040005,0x6,0x00060006,0x8,0x000a0007,0x9,0x000a0008,0x9 - dd 0x000a000a,0xa,0x00000000,0x0,0x00060006,0x7,0x00070006,0x8,0x00080007,0x9,0x00090008,0xa - dd 0x000a0009,0xb,0x000b000a,0xc,0x000a0009,0xb,0x000a000a,0xb,0x00000000,0x0,0x00070005,0x7 - dd 0x00060006,0x7,0x00080007,0x9,0x000a0008,0xa,0x000a0009,0xa,0x000b000a,0xb,0x00000000,0x0 - dd 0x00080007,0x8,0x00080007,0x9,0x00090008,0xa,0x000b0008,0xb,0x000a0009,0xc,0x000c000a,0xc - dd 0x000a000a,0xb,0x000b000a,0xc,0x00000000,0x0,0x00090007,0x8,0x000a0007,0x9,0x000a0008,0xa - dd 0x000b0009,0xb,0x000b0009,0xb,0x000c000a,0xb,0x00000000,0x0,0x00090008,0x9,0x000a0008,0xa - dd 0x000a0009,0xb,0x000b0009,0xc,0x000b000a,0xc,0x000c000a,0xc,0x000b000a,0xc,0x000c000b,0xc - dd 0x00000000,0x0,0x00090008,0x8,0x00090008,0x9,0x000a0009,0xa,0x000b0009,0xb,0x000c000a,0xb - dd 0x000c000b,0xc,0x00000000,0x0,0x00090009,0xa,0x000a0009,0xb,0x000b000a,0xc,0x000c000a,0xc - dd 0x000c000a,0xd,0x000d000b,0xd,0x000c000a,0xc,0x000d000b,0xd,0x00000000,0x0,0x000a0009,0x9 - dd 0x000a0009,0xa,0x000b000a,0xb,0x000b000a,0xc,0x000d000b,0xc,0x000d000b,0xc,0x00000000,0x0 - dd 0x00090009,0x9,0x00090009,0xa,0x00090009,0xb,0x000a000a,0xc,0x000b000a,0xc,0x000c000b,0xc - dd 0x000c000b,0xd,0x000c000c,0xd,0x00000000,0x0,0x00000000,0x0,0x00000000,0x0,0x00000000,0x0 - dd 0x00000000,0x0,0x00000000,0x0,0x00000000,0x0,0x00000000,0x0,0x0009000a,0xa,0x0009000a,0xa - dd 0x000a000a,0xb,0x000b000b,0xc,0x000c000b,0xc,0x000c000b,0xd,0x000c000b,0xd,0x000c000c,0xd - dd 0x00000000,0x0,0x00000000,0x0,0x00000000,0x0,0x00000000,0x0,0x00000000,0x0,0x00000000,0x0 - dd 0x0,0x00000000, 0x0,0x00000000 - -linbits32 - dd 0x00040004,0x10001,0x00040004,0x20002,0x00040004,0x30003,0x00040004,0x40004 - dd 0x00050005,0x60006,0x00060006,0x60006,0x00070007,0x80008,0x00080008,0x80008 - dd 0x00090009,0xa000a,0x000b000b,0xa000a,0x000b000b,0xd000d,0x000d000d,0xd000d - dd 0x000d000d,0xd000d - - -choose_table_H - dw 0x1810, 0x1811, 0x1812, 0x1813, 0x1914, 0x1a14, 0x1b15, 0x1c15 - dw 0x1d16, 0x1e16, 0x1e17, 0x1f17, 0x1f17 - -choose_jump_table_L: - dd table_MMX.L_case_0 - choose_table_MMX - dd table_MMX.L_case_1 - choose_table_MMX - dd table_MMX.L_case_2 - choose_table_MMX - dd table_MMX.L_case_3 - choose_table_MMX - dd table_MMX.L_case_45 - choose_table_MMX - dd table_MMX.L_case_45 - choose_table_MMX - dd table_MMX.L_case_67 - choose_table_MMX - dd table_MMX.L_case_67 - choose_table_MMX - dd table_MMX.L_case_8_15 - choose_table_MMX - dd table_MMX.L_case_8_15 - choose_table_MMX - dd table_MMX.L_case_8_15 - choose_table_MMX - dd table_MMX.L_case_8_15 - choose_table_MMX - dd table_MMX.L_case_8_15 - choose_table_MMX - dd table_MMX.L_case_8_15 - choose_table_MMX - dd table_MMX.L_case_8_15 - choose_table_MMX - dd table_MMX.L_case_8_15 - choose_table_MMX - - segment_code -; -; use MMX -; - -PIC_OFFSETTABLE - - align 16 -; int choose_table(int *ix, int *end, int *s) -choose_table_MMX: - push ebp - call get_pc.bp - add ebp, PIC_BASE() - - mov ecx,[esp+8] ;ecx = begin - mov edx,[esp+12] ;edx = end - sub ecx,edx ;ecx = begin-end(should be minus) - test ecx,8 - pxor mm0,mm0 ;mm0=[0:0] - movq mm1,[edx+ecx] - jz .lp - - add ecx,8 - jz .exit - - align 4 -.lp: - movq mm4,[edx+ecx] - movq mm5,[edx+ecx+8] - add ecx,16 - psubusw mm4,mm0 ; $BK\Ev$O(B dword $B$G$J$$$H$$$1$J$$$N$@$,(B - psubusw mm5,mm1 ; $B$=$s$J%3%^%s%I$O$J$$(B :-p - paddw mm0,mm4 ; $B$,(B, $B$3$3$G07$&CM$NHO0O$O(B 8191+15 $B0J2<$J$N$GLdBj$J$$(B - paddw mm1,mm5 - jnz .lp -.exit: - psubusw mm1,mm0 ; $B$3$l$bK\Ev$O(B dword $B$G$J$$$H$$$1$J$$(B - paddw mm0,mm1 - - movq mm4,mm0 - punpckhdq mm4,mm4 - psubusw mm4,mm0 ; $B$3$l$bK\Ev$O(B dword $B$G$J$$$H$$$1$J$$(B - paddw mm0,mm4 - movd eax,mm0 - - cmp eax,15 - ja .with_ESC - lea ecx,[PIC_EBP_REL(choose_table_MMX)] - add ecx,[PIC_EBP_REL(choose_jump_table_L+eax*4)] - jmp ecx - -.with_ESC1: - emms - mov ecx, [esp+16] ; *s - mov [ecx], eax - or eax,-1 - pop ebp - ret - -.with_ESC: - cmp eax, 8191+15 - ja .with_ESC1 - - sub eax,15 - push ebx - push esi - bsr eax, eax -%assign _P 4*2 - movq mm5, [PIC_EBP_REL(D15_15_15_15)] - movq mm6, [PIC_EBP_REL(D14_14_14_14)] - movq mm3, [PIC_EBP_REL(mul_add)] - - mov ecx, [esp+_P+8] ; = ix -; mov edx, [esp+_P+12] ; = end - sub ecx, edx - - xor esi, esi ; sum = 0 - test ecx, 8 - pxor mm7, mm7 ; linbits_sum, 14$B$r1[$($?$b$N$N?t(B - jz .H_dual_lp1 - - movq mm0, [edx+ecx] - add ecx,8 - packssdw mm0,mm7 - movq mm2, mm0 - paddusw mm0, mm5 ; mm0 = min(ix, 15)+0xfff0 - pcmpgtw mm2, mm6 ; 14$B$h$jBg$-$$$+!)(B - psubw mm7, mm2 ; 14$B$h$jBg$-$$$H$-(B linbits_sum++; - pmaddwd mm0, mm3 ; {0, 0, y, x}*{1, 16, 1, 16} - movd ebx, mm0 - mov esi, [PIC_EBP_REL(largetbl+ebx*4+(16*16+16)*4)] - - jz .H_dual_exit - - align 4 -.H_dual_lp1: - movq mm0, [edx+ecx] - movq mm1, [edx+ecx+8] - packssdw mm0,mm1 - movq mm2, mm0 - paddusw mm0, mm5 ; mm0 = min(ix, 15)+0xfff0 - pcmpgtw mm2, mm6 ; 14$B$h$jBg$-$$$+!)(B - pmaddwd mm0, mm3 ; {y, x, y, x}*{1, 16, 1, 16} - movd ebx, mm0 - punpckhdq mm0,mm0 - add esi, [PIC_EBP_REL(largetbl+ebx*4+(16*16+16)*4)] - movd ebx, mm0 - add esi, [PIC_EBP_REL(largetbl+ebx*4+(16*16+16)*4)] - add ecx, 16 - psubw mm7, mm2 ; 14$B$h$jBg$-$$$H$-(B linbits_sum++; - jnz .H_dual_lp1 - -.H_dual_exit: - pmov mm1,mm7 - punpckhdq mm7,mm7 - paddd mm7,mm1 - punpckldq mm7,mm7 - - pmaddwd mm7, [PIC_EBP_REL(linbits32+eax*8)] ; linbits - mov ax, [PIC_EBP_REL(choose_table_H+eax*2)] - - movd ecx, mm7 - punpckhdq mm7,mm7 - movd edx,mm7 - emms - shl edx, 16 - add ecx, edx - - add ecx, esi - - pop esi - pop ebx - - mov edx, ecx - and ecx, 0xffff ; ecx = sum2 - shr edx, 16 ; edx = sum - - cmp edx, ecx - jle .chooseE_s1 - mov edx, ecx - shr eax, 8 -.chooseE_s1: - mov ecx, [esp+16] ; *s - and eax, 0xff - add [ecx], edx - pop ebp - ret - -table_MMX.L_case_0: - emms - pop ebp - ret - -table_MMX.L_case_1: - emms - mov eax, [esp+16] ; *s - mov ecx, [esp+8] ; *ix - sub ecx, edx - push ebx -.lp: - mov ebx, [edx+ecx] - add ebx, ebx - add ebx, [edx+ecx+4] - movzx ebx, byte [PIC_EBP_REL(ebx+t1l)] - add [eax], ebx - add ecx, 8 - jnz .lp - pop ebx - mov eax, 1 - pop ebp - ret - -table_MMX.L_case_45: - push dword 7 - lea ecx, [PIC_EBP_REL(tableABC+9*8)] - jmp from3 - -table_MMX.L_case_67: - push dword 10 - lea ecx, [PIC_EBP_REL(tableABC)] - jmp from3 - -table_MMX.L_case_8_15: - push dword 13 - lea ecx, [PIC_EBP_REL(tableDEF)] -from3: - mov eax,[esp+12] ;eax = *begin -; mov edx,[esp+16] ;edx = *end - - push ebx - sub eax, edx - - movq mm5,[PIC_EBP_REL(mul_add)] - pxor mm2,mm2 ;mm2 = sum - - test eax, 8 - jz .choose3_lp1 -; odd length - movq mm0,[edx+eax] ;mm0 = ix[0] | ix[1] - add eax,8 - packssdw mm0,mm2 - - pmaddwd mm0,mm5 - movd ebx,mm0 - - movq mm2, [ecx+ebx*8] - - jz .choose3_exit - - align 4 -.choose3_lp1 - movq mm0,[edx+eax] - movq mm1,[edx+eax+8] - add eax,16 - packssdw mm0,mm1 ;mm0 = ix[0]|ix[1]|ix[2]|ix[3] - pmaddwd mm0,mm5 - movd ebx,mm0 - punpckhdq mm0,mm0 - paddd mm2, [ecx+ebx*8] - movd ebx,mm0 - paddd mm2, [ecx+ebx*8] - jnz .choose3_lp1 -.choose3_exit -; xor eax,eax - movd ebx, mm2 - punpckhdq mm2,mm2 - mov ecx, ebx - and ecx, 0xffff ; ecx = sum2 - shr ebx, 16 ; ebx = sum1 - movd edx, mm2 ; edx = sum - - cmp edx, ebx - jle .choose3_s1 - mov edx, ebx - inc eax -.choose3_s1: - emms - pop ebx - cmp edx, ecx - jle .choose3_s2 - mov edx, ecx - mov eax, 2 -.choose3_s2: - pop ecx - add eax, ecx - mov ecx, [esp+16] ; *s - add [ecx], edx - pop ebp - ret - -table_MMX.L_case_2: - push dword 2 - lea ecx,[PIC_EBP_REL(table23)] - pmov mm5,[PIC_EBP_REL(mul_add23)] - jmp from2 -table_MMX.L_case_3: - push dword 5 - lea ecx,[PIC_EBP_REL(table56)] - pmov mm5,[PIC_EBP_REL(mul_add56)] -from2: - mov eax,[esp+12] ;eax = *begin -; mov edx,[esp+16] ;edx = *end - push ebx - push edi - - sub eax, edx - xor edi, edi - test eax, 8 - jz .choose2_lp1 -; odd length - movq mm0,[edx+eax] ;mm0 = ix[0] | ix[1] - pxor mm2,mm2 ;mm2 = sum - packssdw mm0,mm2 - - pmaddwd mm0,mm5 - movd ebx,mm0 - - mov edi, [ecx+ebx*4] - - add eax,8 - jz .choose2_exit - - align 4 -.choose2_lp1 - movq mm0,[edx+eax] - movq mm1,[edx+eax+8] - packssdw mm0,mm1 ;mm0 = ix[0]|ix[1]|ix[2]|ix[3] - pmaddwd mm0,mm5 - movd ebx,mm0 - punpckhdq mm0,mm0 - add edi, [ecx+ebx*4] - movd ebx, mm0 - add edi, [ecx+ebx*4] - add eax,16 - jnc .choose2_lp1 -.choose2_exit - mov ecx, edi - pop edi - pop ebx - pop eax ; table num. - emms - - mov edx, ecx - and ecx, 0xffff ; ecx = sum2 - shr edx, 16 ; edx = sum1 - - cmp edx, ecx - jle .choose2_s1 - mov edx, ecx - inc eax -.choose2_s1: - mov ecx, [esp+16] ; *s - add [ecx], edx - pop ebp - ret - - end diff --git a/platform/win32/msvc/external/lame/libmp3lame/i386/cpu_feat.nas b/platform/win32/msvc/external/lame/libmp3lame/i386/cpu_feat.nas deleted file mode 100644 index b5b09c11ade..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/i386/cpu_feat.nas +++ /dev/null @@ -1,107 +0,0 @@ -; -; -; assembler routines to detect CPU-features -; -; MMX / 3DNow! / SSE / SSE2 -; -; for the LAME project -; Frank Klemm, Robert Hegemann 2000-10-12 -; - -%include "nasm.h" - - globaldef has_MMX_nasm - globaldef has_3DNow_nasm - globaldef has_SSE_nasm - globaldef has_SSE2_nasm - - segment_code - -testCPUID: - pushfd - pop eax - mov ecx,eax - xor eax,0x200000 - push eax - popfd - pushfd - pop eax - cmp eax,ecx - ret - -;--------------------------------------- -; int has_MMX_nasm (void) -;--------------------------------------- - -has_MMX_nasm: - pushad - call testCPUID - jz return0 ; no CPUID command, so no MMX - - mov eax,0x1 - CPUID - test edx,0x800000 - jz return0 ; no MMX support - jmp return1 ; MMX support - -;--------------------------------------- -; int has_SSE_nasm (void) -;--------------------------------------- - -has_SSE_nasm: - pushad - call testCPUID - jz return0 ; no CPUID command, so no SSE - - mov eax,0x1 - CPUID - test edx,0x02000000 - jz return0 ; no SSE support - jmp return1 ; SSE support - -;--------------------------------------- -; int has_SSE2_nasm (void) -;--------------------------------------- - -has_SSE2_nasm: - pushad - call testCPUID - jz return0 ; no CPUID command, so no SSE2 - - mov eax,0x1 - CPUID - test edx,0x04000000 - jz return0 ; no SSE2 support - jmp return1 ; SSE2 support - -;--------------------------------------- -; int has_3DNow_nasm (void) -;--------------------------------------- - -has_3DNow_nasm: - pushad - call testCPUID - jz return0 ; no CPUID command, so no 3DNow! - - mov eax,0x80000000 - CPUID - cmp eax,0x80000000 - jbe return0 ; no extended MSR(1), so no 3DNow! - - mov eax,0x80000001 - CPUID - test edx,0x80000000 - jz return0 ; no 3DNow! support - ; 3DNow! support -return1: - popad - xor eax,eax - inc eax - ret - -return0: - popad - xor eax,eax - ret - - end diff --git a/platform/win32/msvc/external/lame/libmp3lame/i386/fft.nas b/platform/win32/msvc/external/lame/libmp3lame/i386/fft.nas deleted file mode 100644 index 7928b334e53..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/i386/fft.nas +++ /dev/null @@ -1,267 +0,0 @@ - -; for new GOGO-no-coda (1999/09) -; Copyright (C) 1999 shigeo -; special thanks to Keiichi SAKAI, URURI -%include "nasm.h" - - globaldef fht_3DN - globaldef fht - externdef costab_fft - externdef sintab_fft - externdef gray_index - - segment_data - align 16 -D_MSB1_0 dd 0 ,0x80000000 -D_SQRT2 dd 1.414213562,1.414213562 -t_s0 dd 0 ;[ t_c:t_s] -t_c0 dd 0 -t_c1 dd 0 ;[-t_s:t_c] -t_s1 dd 0 -D_s1c1 dd 0, 0 -D_Mc1s1 dd 0, 0 -D_s2c2 dd 0, 0 -D_Mc2s2 dd 0, 0 -D_0_1 dd 1.0, 0.0 -S_05 DD 0.5 -S_00005 DD 0.0005 -fht dd 0 ;´Ø¿ô¥Ý¥¤¥ó¥¿ - - segment_code - -;************************************************************************ - -; by shigeo -; 99/08/16 -; 23000clk ¿É¤«¤Ã¤¿¡Á -; 18500clk bit reversal from gogo1 by URURI - -;void fht(float *fz, int n); - align 16 -fht_3DN: - push ebx - push esi - push edi - push ebp -%assign _P 4*4 - ;¤Þ¤ººÇ½é¤Î¥ë¡¼¥×... ¤Ïfht()¤Î³°¤Ø°ÜÆ° - - mov esi,[esp+_P+4] ;esi=fz - mov ecx,[esp+_P+8] ;ecx=n - - ;¥á¥¤¥ó¥ë¡¼¥× - movq mm7,[D_MSB1_0] ;mm7=[1<<31:0] - -%assign LOCAL_STACK 16 - sub esp,LOCAL_STACK -%assign _P (_P+LOCAL_STACK) - xor eax,eax - mov [esp],eax ;k=0 -%define k dword [esp] -%define kx dword [esp+4] -%define fn dword [esp+8] - -.lp30: ;k=0; do{ - mov ecx,k - add ecx,2 - mov k,ecx - mov eax,1 - shl eax,cl ;eax=k1 = 1<<k - lea ebx,[eax+eax] ;ebx=k2 = k1*2 - lea ecx,[eax+eax*2] ;ecx=k3 = k2 + k1 = k1*3 - lea edx,[ebx+ebx] ;edx=k4 = k1*4 - mov esi,eax - shr esi,1 ;esi=kx=k1>>1 - mov kx,esi ;Êݸ(¸å¤Ç»È¤¦) - mov edi,[esp+_P+4] ;edi=fi=fz - lea ebp,[edi+esi*4] ;ebp=gi=fz+kx - mov esi,[esp+_P+8] ;esi=n - lea esi,[edi+esi*4] ;esi=fn=fz+n - movq mm6,[D_SQRT2] ;mm6=[¢å2:¢å2] - -.lp31: ;fn=fz+n; do{ FLOAT g0,f0,f1,... - movd mm0,[edi] ;mm0=[0:fi[ 0]] - movd mm1,[edi+eax*4] ;mm1=[0:fi[k1]] - punpckldq mm0,mm0 ;mm0=[fi_0 :fi_0 ] - punpckldq mm1,mm1 ;mm1=[fi_k1:fi_k1] - movd mm2,[edi+ebx*4] - movd mm3,[edi+ecx*4] - punpckldq mm2,mm2 ;mm2=[fi_k2:fi_k2] - punpckldq mm3,mm3 ;mm3=[fi_k3:fi_k3] - pxor mm1,mm7 ;mm1=[-fi_k1:fi_k1] - pxor mm3,mm7 ;mm3=[-fi_k3:fi_k3] - pfadd mm0,mm1 ;mm0=[f1:f0]=[fi_0 -fi_k1 : fi_0 +fi_k1] - pfadd mm2,mm3 ;mm2=[f3:f2]=[fi_k2-fi_k3 : fi_k2+fi_k3] - movq mm3,mm0 ;mm3=[f1:f0] - pfadd mm0,mm2 ;mm0=[f1+f3:f0+f2] - movd [edi],mm0 ;fi[0]=f0+f2 - psrlq mm0,32 ;mm0=[0:f1+f3] - pfsub mm3,mm2 ;mm3=[f1-f3:f0-f2] - movd [edi+eax*4],mm0 ;fi[k1]=f1+f3 - movd [edi+ebx*4],mm3 ;fi[k2]=f0-f2 - psrlq mm3,32 ;mm3=[0:f1-f3] - movd [edi+ecx*4],mm3 ;fi[k3]=f1-f3 - - movd mm0,[ebp] ;mm0=[0:gi_0] - movd mm1,[ebp+eax*4] ;mm1=[0:gi_k1] - punpckldq mm0,mm0 ;mm0=[gi_0 :gi_0 ] - punpckldq mm1,mm1 ;mm1=[gi_k1:gi_k1] - movd mm2,[ebp+ebx*4] ;mm2=[0:gi_k2] - pxor mm1,mm7 ;mm1=[-gi_k1:gi_k1] - punpckldq mm2,[ebp+ecx*4] ;mm2=[gi_k3:gi_k2] - pfadd mm0,mm1 ;mm0=[g1:g0]=[gi_0 -gi_k1:gi_0 +gi_k1] - pfmul mm2,mm6 ;mm2=[g3:g2]=sqrt2 * [gi_k3:gi_k2] - movq mm1,mm0 ;mm1=[g1:g0] - pfadd mm0,mm2 ;mm0=[g1+g3:g0+g2] - movd [ebp],mm0 ;gi[0]=g0+g2 - psrlq mm0,32 ;mm0=[0:g1+g3] - pfsub mm1,mm2 ;mm1=[g1-g3:g0-g2] - movd [ebp+eax*4],mm0 ;gi[k1]=g1+g3 - movd [ebp+ebx*4],mm1 ;gi[k2]=g0-g2 - psrlq mm1,32 ;mm1=[0:g1-g3] - movd [ebp+ecx*4],mm1 ;gi[k3]=g1-g3 - lea edi,[edi+edx*4] ;fi += k4 - lea ebp,[ebp+edx*4] ;gi += k4 - cmp edi,esi - jc near .lp31 ;}while(fi<fn); - -; ¤³¤³¤Þ¤Ç¤Ï¿ʬO.K. - - mov fn,esi ;fn=fz+n - ;¼¡¤ÎÃͤϰú¤­Â³¤­»È¤¦ - ;eax=k1,ebx=k2,ecx=k3,edx=k4 - - mov edi,k - lea ebp,[costab_fft+edi*4] - mov ebp,[ebp] ;ebp=t_c - mov [t_c0],ebp - mov [t_c1],ebp ;t_c - lea ebp,[sintab_fft+edi*4] - mov ebp,[ebp] ;ebx=t_s - mov [t_s0],ebp - xor ebp,0x80000000 - mov [t_s1],ebp ;-t_s - - movq mm1,[D_0_1] ;mm1=[0:1] - movq [D_s1c1],mm1 ;mm1=[s1:c1] - mov esi,1 ;esi=i=1 - -.lp32: ; for(i=1;i<kx;i++){ - movq mm0,[D_s1c1] ;mm1=[s1:t]=[s1:c1] - movq mm2,mm0 - pfmul mm0,[t_c1] ;mm0=[-s1*t_s: t*t_c] - pfmul mm2,[t_s0] ;mm2=[ s1*t_c: t*t_s] - pfacc mm0,mm2 ;mm0=[s1:c1]=[ s1*t_c+t*t_s:-s1*t_s+t*t_c] - movq mm2,mm0 ;mm2=[s1:c1] - movq [D_s1c1],mm0 ;Êݸ - movq mm6,mm2 - punpckldq mm5,mm6 - punpckhdq mm6,mm5 ;mm6=[ c1:s1] - pxor mm6,mm7 ;mm6=[-c1:s1] - movq [D_Mc1s1],mm6 ;Êݸ - pfmul mm2,mm2 ;mm2=[s1*s1:c1*c1] - movq mm3,mm0 ;mm3=[s1:c1] - pxor mm2,mm7 ;mm2=[-s1*s1:c1*c1] - psrlq mm3,32 ;mm3=[ 0:s1] - pfacc mm2,mm2 ;mm2=[c2:c2]=[c1*c1-s1*s1:<] - pfmul mm0,mm3 ;mm0=[ 0:c1*s1] - pfadd mm0,mm0 ;mm0=[0:s2]=[ 0:2*c1*s1] - punpckldq mm2,mm0 ;mm2=[s2:c2] - movq [D_s2c2],mm2 ;Êݸ - - punpckldq mm0,mm2 - punpckhdq mm2,mm0 ;mm2=[c2:s2] - pxor mm2,mm7 ;mm2=[-c2:s2] - movq [D_Mc2s2],mm2 ;Êݸ - - mov edi,[esp+_P+4] ;edi=fz - lea edi,[edi+esi*4] ;edi=fz+i - - mov ebp,[esp+_P+4] ;ebp=fz - neg esi ;esi=-i - lea ebp,[ebp+eax*4] ;ebp=fz+k1 - lea ebp,[ebp+esi*4] ;ebp=gi=fz+k1-i - neg esi ;esi=i - -.lp33: ; do{ FLOAT a,b,g0,f0,f1,g1,f2,g2,f3,g3; - - movd mm0,[edi+eax*4] ;mm0=[0:fi_k1] - punpckldq mm0,[ebp+eax*4] ;mm0=[gi_k1:fi_k1] - movq mm1,mm0 - pfmul mm0,[D_s2c2] ;mm0=[ s2*gi_k1:c2*fi_k1] - pfmul mm1,[D_Mc2s2] ;mm1=[-c2*gi_k1:s2*fi_k1] - pfacc mm0,mm1 ;mm0=[b:a] - movd mm4,[edi] ;mm4=[0:fi_0] - movq mm3,mm0 ;mm3=[b:a] - punpckldq mm4,[ebp] ;mm4=[gi_0:fi_0] - pfadd mm3,mm4 ;mm3=[g0:f0]=[gi_0+b:fi_0+a] - pfsub mm4,mm0 ;mm4=[g1:f1]=[gi_0-b:fi_0-a] - - movd mm0,[edi+ecx*4] ;mm0=[0:fi_k3] - punpckldq mm0,[ebp+ecx*4] ;mm0=[gi_k3:fi_k3] - movq mm1,mm0 - pfmul mm0,[D_s2c2] ;mm0=[ s2*gi_k3:c2*fi_k3] - pfmul mm1,[D_Mc2s2] ;mm1=[-c2*gi_k3:s2*fi_k3] - pfacc mm0,mm1 ;mm0=[b:a] - movd mm5,[edi+ebx*4] ;mm5=[0:fi_k2] - movq mm6,mm0 ;mm6=[b:a] - punpckldq mm5,[ebp+ebx*4] ;mm5=[gi_k2:fi_k2] - pfadd mm6,mm5 ;mm6=[g2:f2]=[gi_k2+b:fi_k2+a] - pfsub mm5,mm0 ;mm5=[g3:f3]=[gi_k2-b:fi_k2-a] - - punpckldq mm1,mm6 ;mm1=[f2:*] - movq mm0,[D_s1c1] ;mm0=[s1:c1] - punpckhdq mm1,mm5 ;mm1=[g3:f2] - pfmul mm0,mm1 ;mm0=[ s1*g3:c1*f2] - movq mm2,[D_Mc1s1] ;mm2=[-c1:s1] - pfmul mm2,mm1 ;mm2=[-c1*g3:s1*f2] - pfacc mm0,mm2 ;mm0=[b:a] - - punpckldq mm1,mm3 ;mm1=[f0:*] - punpckhdq mm1,mm4 ;mm1=[g1:f0] - movq mm2,mm0 ;mm2=[b:a] - pfadd mm0,mm1 ;mm0=[g1+b:f0+a] - pfsubr mm2,mm1 ;mm2=[g1-b:f0-a] - movd [edi],mm0 ;fi[0]=f0+a - psrlq mm0,32 ;mm0=[0:g1+b] - movd [edi+ebx*4],mm2 ;fi[k2]=f0-a - psrlq mm2,32 ;mm2=[0:g1-b] - movd [ebp+eax*4],mm0 ;gi[k1]=g1+b - movd [ebp+ecx*4],mm2 ;gi[k3]=g1-b - psrlq mm6,32 ;mm6=[0:g2] - movq mm0,[D_s1c1] ;mm0=[s1:c1] - punpckldq mm5,mm6 ;mm5=[g2:f3] - pfmul mm0,mm5 ;mm0=[g2* s1:f3*c1] - pfmul mm5,[D_Mc1s1] ;mm5=[g2*-c1:f3*s1] - pfacc mm0,mm5 ;mm0=[-b:a] - psrlq mm3,32 ;mm3=[0:g0] - movq mm1,mm0 ;mm1=[-b:a] - punpckldq mm3,mm4 ;mm3=[f1:g0] - pfadd mm0,mm3 ;mm0=[f1-b:g0+a] - pfsubr mm1,mm3 ;mm1=[f1+b:g0-a] - movd [ebp],mm0 ;gi[0]=g0+a - psrlq mm0,32 ;mm0=[0:f1-b] - movd [ebp+ebx*4],mm1 ;gi[k2]=g0-a - psrlq mm1,32 ;mm1=[0:f1+b] - movd [edi+ecx*4],mm0 ;fi[k3]=f1-b - movd [edi+eax*4],mm1 ;fi[k1]=f1+b - - lea edi,[edi+edx*4] ;fi += k4 - lea ebp,[ebp+edx*4] ;gi += k4 - cmp edi,fn - jc near .lp33 ;}while(fi<fn) - inc esi - cmp esi,kx - jnz near .lp32 ;} - cmp edx,[esp+_P+8] - jnz near .lp30 ;}while(k4<n) - - -.exit: - add esp,LOCAL_STACK - femms - pop ebp - pop edi - pop esi - pop ebx - ret diff --git a/platform/win32/msvc/external/lame/libmp3lame/i386/fft3dn.nas b/platform/win32/msvc/external/lame/libmp3lame/i386/fft3dn.nas deleted file mode 100644 index 71db7dbfaef..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/i386/fft3dn.nas +++ /dev/null @@ -1,488 +0,0 @@ -; from a new GOGO-no-coda (1999/09) -; Copyright (C) 1999 shigeo -; special thanks to Keiichi SAKAI, URURI -; hacked and back-ported to LAME -; by Takehiro TOMINAGA Nov 2000 - -%include "nasm.h" - - globaldef fht_3DN - - segment_data - align 16 -costab dd 0x80000000, 0 - dd 1.414213562,1.414213562 - dd 9.238795283293805e-01, 9.238795283293805e-01 - dd 3.826834424611044e-01, 3.826834424611044e-01 - dd 9.951847264044178e-01, 9.951847264044178e-01 - dd 9.801714304836734e-02, 9.801714304836734e-02 - dd 9.996988186794428e-01, 9.996988186794428e-01 - dd 2.454122920569705e-02, 2.454122920569705e-02 - dd 9.999811752815535e-01, 9.999811752815535e-01 - dd 6.135884819898878e-03, 6.135884819898878e-03 -D_1_0_0_0 dd 0.0 , 1.0 - - segment_code - -PIC_OFFSETTABLE - - -;void fht_3DN(float *fz, int nn); - -proc fht_3DN - - pushd ebp, ebx, esi, edi - - sub esp, 20 - - call get_pc.bp - add ebp, PIC_BASE() - - mov r0, [esp+40] ;fi - mov r1, [esp+44] ;r1 = nn - lea r3, [PIC_EBP_REL(costab)] ;tri = costab - lea r4, [r0+r1*8] ;r4 = fn = &fz[n] - mov [esp+16], r4 - mov r4, 8 ;kx = k1/2 - - pmov mm7, [r3] - - loopalign 16 -.do1 - lea r3, [r3+16] ;tri += 2; - pmov mm6, [PIC_EBP_REL(costab+8)] - lea r2, [r4+r4*2] ;k3*fsize/2 - mov r5, 4 ;i = 1*fsize - - loopalign 16 -.do2: - lea r1, [r0+r4] ;gi = fi + kx - ;f - pmov mm0, [r0] ;fi0 - pmov mm1, [r0+r4*2] ;fi1 - pmov mm2, [r0+r2*2] ;fi3 - pmov mm3, [r0+r4*4] ;fi2 - - pupldq mm0, mm0 ;fi0 | fi0 - pupldq mm1, mm1 ;fi1 | fi1 - pupldq mm2, mm2 ;fi2 | fi2 - pupldq mm3, mm3 ;fi3 | fi3 - - pxor mm1, mm7 ;fi1 | -fi1 - pxor mm3, mm7 ;fi3 | -fi3 - - pfsub mm0, mm1 ;f1 | f0 - pfsub mm2, mm3 ;f3 | f2 - - pmov mm4, mm0 - pfadd mm0, mm2 ;f1+f3|f0+f2 = fi1 | fi0 - pfsub mm4, mm2 ;f1-f3|f0-f2 = fi3 | fi2 - - pmovd [r0], mm0 ;fi[0] - puphdq mm0, mm0 - pmovd [r0+r4*4], mm4 ;fi[k2] - puphdq mm4, mm4 - - pmovd [r0+r4*2], mm4 ;fi[k1] - pmovd [r0+r2*2], mm0 ;fi[k3] - lea r0, [r0+r4*8] - - ;g - pmov mm0, [r1] ;gi0 - pmov mm1, [r1+r4*2] ;gi1 - pmov mm2, [r1+r4*4] ;gi2 - pmov mm3, [r1+r2*2] ;gi3 - - pupldq mm1, mm1 - pupldq mm0, mm0 ;gi0 | gi0 - pupldq mm2, mm3 ;gi3 | gi2 - - pxor mm1, mm7 ;gi1 | -gi1 - - pfsub mm0, mm1 ;gi0-gi1|gi0+gi1 = g1 | g0 - pfmul mm2, mm6 ;gi3*SQRT2|gi2*SQRT2 = g3 | g2 - - pmov mm4, mm0 - pfadd mm0, mm2 ;g1+g3|g0+g2 = gi1 | gi0 - pfsub mm4, mm2 ;g1-g3|g0-g2 = gi3 | gi2 - - pmovd [r1], mm0 ;gi[0] - puphdq mm0, mm0 - pmovd [r1+r4*4], mm4 ;gi[k2] - puphdq mm4, mm4 - - cmp r0, [esp + 16] - pmovd [r1+r4*2], mm0 ;gi[k1] - pmovd [r1+r2*2], mm4 ;gi[k3] - - jb near .do2 - - pmov mm6, [r3+r5] ; this is not aligned address!! - - loopalign 16 -.for: -; -; mm6 = c1 | s1 -; mm7 = 0x800000000 | 0 -; - pmov mm1, mm6 - mov r0, [esp+40] ; fz - puphdq mm1, mm1 ; c1 | c1 - lea r1, [r0+r4*2] - pfadd mm1, mm1 ; c1+c1 | c1+c1 - pfmul mm1, mm6 ; 2*c1*c1 | 2*c1*s1 - pfsub mm1, [PIC_EBP_REL(D_1_0_0_0)] ; 2*c1*c1-1.0 | 2*c1*s1 = -c2 | s2 - - pmov mm0, mm1 - pxor mm7, mm6 ; c1 | -s1 - - pupldq mm2, mm0 - pupldq mm3, mm6 ; ** | c1 - puphdq mm0, mm2 ; s2 | c2 - puphdq mm6, mm3 ;-s1 | c1 - - pxor mm0, [PIC_EBP_REL(costab)] ; c2 | -s2 - -; mm0 = s2| c2 -; mm1 = -c2| s2 -; mm6 = c1| s1 -; mm7 = s1|-c1 (we use the opposite sign. from GOGO here) - - pmov [esp], mm0 - pmov [esp+8], mm1 - - sub r1, r5 ;r1 = gi - add r0, r5 ;r0 = fi - - loopalign 16 -.do3: - pmov mm2, [r0+r4*2] ; fi[k1] - pmov mm4, [r1+r4*2] ; gi[k1] - pmov mm3, [r0+r2*2] ; fi[k3] - pmov mm5, [r1+r2*2] ; gi[k3] - - pupldq mm2, mm2 ; fi1 | fi1 - pupldq mm4, mm4 ; gi1 | gi1 - pupldq mm3, mm3 ; fi3 | fi3 - pupldq mm5, mm5 ; gi3 | gi3 - - pfmul mm2, mm0 ; s2 * fi1 | c2 * fi1 - pfmul mm4, mm1 ;-c2 * gi1 | s2 * gi1 - pfmul mm3, mm0 ; s2 * fi3 | c2 * fi3 - pfmul mm5, mm1 ;-c2 * gi3 | s2 * gi3 - - pfadd mm2, mm4 ;b | a - pfadd mm3, mm5 ;d | c - - pmov mm0, [r0] - pmov mm4, [r1] - pmov mm1, [r0+r4*4] - pmov mm5, [r1+r4*4] - - pupldq mm0, mm4 ;gi0 | fi0 - pupldq mm1, mm5 ;gi2 | fi2 - - pmov mm4, mm2 - pmov mm5, mm3 - - pfadd mm2, mm0 ;g0 | f0 - pfadd mm3, mm1 ;g2 | f2 - - pfsub mm0, mm4 ;g1 | f1 - pfsub mm1, mm5 ;g3 | f3 - - pmov mm4, mm3 - pmov mm5, mm1 - - pupldq mm4, mm4 ;f2 | f2 - puphdq mm5, mm5 ;g3 | g3 - puphdq mm3, mm3 ;g2 | g2 - pupldq mm1, mm1 ;f3 | f3 - - pfmul mm4, mm6 ;f2 * c1 | f2 * s1 - pfmul mm5, mm7 ;g3 * s1 | g3 *-c1 - pfmul mm3, mm6 ;g2 * c1 | g2 * s1 - pfmul mm1, mm7 ;f3 * s1 | f3 *-c1 - - pfadd mm4, mm5 ;a | b - pfsub mm3, mm1 ;d | c - - pmov mm5, mm2 - pmov mm1, mm0 - - pupldq mm2, mm2 ;f0 | f0 - pupldq mm0, mm0 ;f1 | f1 - - puphdq mm1, mm2 ;f0 | g1 - puphdq mm5, mm0 ;f1 | g0 - - pmov mm2, mm4 - pmov mm0, mm3 - - pfadd mm4, mm1 ;fi0 | gi1 - pfadd mm3, mm5 ;fi1 | gi0 - pfsub mm1, mm2 ;fi2 | gi3 - pfsub mm5, mm0 ;fi3 | gi2 - - pmovd [r1+r4*2], mm4 ;gi[k1] - puphdq mm4, mm4 - pmovd [r1], mm3 ;gi[0] - puphdq mm3, mm3 - pmovd [r1+r2*2], mm1 ;gi[k3] - puphdq mm1, mm1 - pmovd [r1+r4*4], mm5 ;gi[k2] - puphdq mm5, mm5 - - pmovd [r0], mm4 ;fi[0] - pmovd [r0+r4*2], mm3 ;fi[k1] - pmovd [r0+r4*4], mm1 ;fi[k2] - pmovd [r0+r2*2], mm5 ;fi[k3] - - lea r0, [r0+r4*8] - lea r1, [r1+r4*8] - cmp r0, [esp + 16] - pmov mm0, [esp] - pmov mm1, [esp+8] - - jb near .do3 - - add r5, 4 -; mm6 = c1| s1 -; mm7 = s1|-c1 (we use the opposite sign. from GOGO here) - pfmul mm6, [r3] ; c1*a | s1*a - pfmul mm7, [r3+8] ; s1*b |-c1*b - cmp r5, r4 - - pfsub mm6, mm7 ; c1*a-s1*b | s1*a+c1*b - pupldq mm7,mm6 - puphdq mm6,mm7 - pmov mm7, [PIC_EBP_REL(costab)] - jb near .for - - mov r0, [esp+40] ;fi - cmp r4, [esp+40+4] - lea r4, [r4*4] ;kx *= 4 - - jb near .do1 -.exitttt - femms - add esp,20 - popd ebp, ebx, esi, edi -endproc - - -;void fht_E3DN(float *fz, int nn); - -proc fht_E3DN - - pushd ebp, ebx, esi, edi - - sub esp, 20 - - call get_pc.bp - add ebp, PIC_BASE() - - mov r0, [esp+40] ;fi - mov r1, [esp+44] ;r1 = nn - lea r3, [PIC_EBP_REL(costab)] ;tri = costab - lea r4, [r0+r1*8] ;r4 = fn = &fz[n] - mov [esp+16], r4 - mov r4, 8 ;kx = k1/2 - - pmov mm7, [r3] - - loopalign 16 -.do1 - lea r3, [r3+16] ;tri += 2; - pmov mm6, [PIC_EBP_REL(costab+8)] - lea r2, [r4+r4*2] ;k3*fsize/2 - mov r5, 4 ;i = 1*fsize - - loopalign 16 -.do2: - lea r1, [r0+r4] ;gi = fi + kx -;f - pmov mm0, [r0] ; X | fi0 - pmov mm1, [r0+r4*4] ; X | fi2 - pupldq mm0, [r0+r4*2] ;fi1 | fi0 - pupldq mm1, [r0+r2*2] ;fi3 | fi2 - pfpnacc mm0, mm0 ;fi0+fi1 | fi0-fi1 = f0|f1 - pfpnacc mm1, mm1 ;fi2+fi3 | fi2-fi3 = f2|f3 - - pmov mm2, mm0 - pfadd mm0, mm1 ;f0+f2|f1+f3 = fi0 | fi1 - pfsub mm2, mm1 ;f0-f2|f1-f3 = fi2 | fi3 - - pmovd [r0+r4*2], mm0 ;fi[k1] - pmovd [r0+r2*2], mm2 ;fi[k3] - - puphdq mm0, mm0 - puphdq mm2, mm2 - pmovd [r0], mm0 ;fi[0] - pmovd [r0+r4*4], mm2 ;fi[k2] - - lea r0, [r0+r4*8] -;g - pmov mm3, [r1] ; gi0 - pmov mm4, [r1+r2*2] ; gi3 - pupldq mm3, [r1+r4*2] ;gi1|gi0 - pupldq mm4, [r1+r4*4] ;gi2|gi3 - - pfpnacc mm3, mm3 ;gi0+gi1 |gi0-gi1 = f0|f1 - pfmul mm4, mm6 ;gi2*SQRT2|gi3*SQRT2 = f2|f3 - - pmov mm5, mm3 - pfadd mm3, mm4 ;f0+f2|f1+f3 - pfsub mm5, mm4 ;f0-f2|f1-f3 - - cmp r0, [esp + 16] - pmovd [r1+r4*2], mm3 ;gi[k1] - pmovd [r1+r2*2], mm5 ;gi[k3] - puphdq mm3, mm3 - puphdq mm5, mm5 - pmovd [r1], mm3 ;gi[0] - pmovd [r1+r4*4], mm5 ;gi[k2] - - jb near .do2 - - pmov mm6, [r3+r5] ; this is not aligned address!! - - loopalign 16 -.for: -; -; mm6 = c1 | s1 -; mm7 = 0x800000000 | 0 -; - pmov mm5, mm6 - mov r0, [esp+40] ; fz - puphdq mm5, mm5 ; c1 | c1 - lea r1, [r0+r4*2] - pfadd mm5, mm5 ; c1+c1 | c1+c1 - pfmul mm5, mm6 ; 2*c1*c1 | 2*c1*s1 - pfsub mm5, [PIC_EBP_REL(D_1_0_0_0)] ; 2*c1*c1-1.0 | 2*c1*s1 = -c2 | s2 - - pswapd mm4, mm5 ; s2 |-c2 - pxor mm4, mm7 ; s2 | c2 - pxor mm7, mm6 ; c1 |-s1 - pswapd mm6, mm6 ; s1 | c1 - -; mm4 = s2| c2 -; mm5 = -c2| s2 -; mm6 = c1| s1 -; mm7 = s1|-c1 (we use the opposite sign. from GOGO here) - - pmov [esp], mm4 - pmov [esp+8], mm5 - - sub r1, r5 ;r1 = gi - add r0, r5 ;r0 = fi - - loopalign 16 -.do3: - pmov mm0, [r0+r2*2] ; fi[k1] - pmov mm2, [r1+r2*2] ; gi[k1] - pmov mm1, [r0+r4*2] ; fi[k3] - pmov mm3, [r1+r4*2] ; gi[k3] - - pupldq mm0, mm0 - pupldq mm2, mm2 - pupldq mm1, mm1 - pupldq mm3, mm3 - - pfmul mm0, mm4 - pfmul mm2, mm5 - pfmul mm1, mm4 - pfmul mm3, mm5 - - pfadd mm0, mm2 ;d | c - pfadd mm1, mm3 ;b | a - - pmov mm2, [r0+r4*4] ;fi2 - pupldq mm3, [r1+r4*4] ;gi2 | - - pmov mm4, [r0] ;fi0 - pupldq mm5, [r1] ;gi0 | - - - pupldq mm2, mm0 ;c | fi2 - puphdq mm3, mm0 ;d | gi2 - pupldq mm4, mm1 ;a | fi0 - puphdq mm5, mm1 ;b | gi0 - - pfpnacc mm2, mm2 ;f2 | f3 - pfpnacc mm3, mm3 ;g2 | g3 - pfpnacc mm4, mm4 ;f0 | f1 - pfpnacc mm5, mm5 ;g0 | g1 - - pmov mm0, mm2 - pmov mm1, mm3 - pupldq mm2, mm2 ;f3 | f3 - pupldq mm3, mm3 ;g3 | g3 - puphdq mm0, mm0 ;f2 | f2 - puphdq mm1, mm1 ;g2 | g2 - - pswapd mm4, mm4 ;f1 | f0 - pswapd mm5, mm5 ;g1 | g0 - - pfmul mm0, mm7 ;f2 * s1 | f2 *-c1 - pfmul mm3, mm6 ;g3 * c1 | g3 * s1 - pfmul mm1, mm6 ;g2 * c1 | g2 * s1 - pfmul mm2, mm7 ;f3 * s1 | f3 *-c1 - - pfsub mm0, mm3 ; b |-a - pfsub mm1, mm2 ; d | c - - pmov mm2, mm5 - pmov mm3, mm4 - pupldq mm4, mm0 ;-a | f0 - pupldq mm5, mm1 ; c | g0 - puphdq mm2, mm0 ; b | g1 - puphdq mm3, mm1 ; d | f1 - - pfpnacc mm4, mm4 ;fi2 | fi0 - pfpnacc mm5, mm5 ;gi0 | gi2 - pfpnacc mm2, mm2 ;gi1 | gi3 - pfpnacc mm3, mm3 ;fi1 | fi3 - - pmovd [r0], mm4 ;fi[0] - pmovd [r1+r4*4], mm5 ;gi[k2] - pmovd [r1+r2*2], mm2 ;gi[k3] - pmovd [r0+r2*2], mm3 ;fi[k3] - - puphdq mm4, mm4 - puphdq mm5, mm5 - puphdq mm2, mm2 - puphdq mm3, mm3 - pmovd [r0+r4*4], mm4 ;fi[k2] - pmovd [r1], mm5 ;gi[0] - pmovd [r1+r4*2], mm2 ;gi[k1] - pmovd [r0+r4*2], mm3 ;fi[k1] - - lea r0, [r0+r4*8] - lea r1, [r1+r4*8] - cmp r0, [esp + 16] - pmov mm4, [esp] - pmov mm5, [esp+8] - - jb near .do3 - - add r5, 4 -; mm6 = c1| s1 -; mm7 = s1|-c1 (we use the opposite sign. from GOGO here) - pfmul mm6, [r3] ; c1*a | s1*a - pfmul mm7, [r3+8] ; s1*b |-c1*b - cmp r5, r4 - - pfsub mm6, mm7 ; c1*a-s1*b | s1*a+c1*b - pswapd mm6, mm6 ; ??? ; s1*a+c1*b | c1*a-s1*b - pmov mm7, [PIC_EBP_REL(costab)] - jb near .for - - mov r0, [esp+40] ;fi - cmp r4, [esp+40+4] - lea r4, [r4*4] ;kx *= 4 - - jb near .do1 -.exitttt - femms - add esp,20 - popd ebp, ebx, esi, edi -endproc diff --git a/platform/win32/msvc/external/lame/libmp3lame/i386/fftfpu.nas b/platform/win32/msvc/external/lame/libmp3lame/i386/fftfpu.nas deleted file mode 100644 index 2ae89bd7991..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/i386/fftfpu.nas +++ /dev/null @@ -1,619 +0,0 @@ -; back port from GOGO-no coda 2.24b by Takehiro TOMINAGA - -; GOGO-no-coda -; Copyright (C) 1999 shigeo -; special thanks to URURI - -%include "nasm.h" - - externdef costab_fft - externdef sintab_fft - - segment_data - align 32 -D_1_41421 dd 1.41421356 -D_1_0 dd 1.0 -D_0_5 dd 0.5 -D_0_25 dd 0.25 -D_0_0005 dd 0.0005 -D_0_0 dd 0.0 - - segment_code - -;void fht(float *fz, int n); -proc fht_FPU - -%$fz arg 4 -%$n arg 4 - -%$k local 4 - -%$f0 local 4 -%$f1 local 4 -%$f2 local 4 -%$f3 local 4 - -%$g0 local 4 -%$g1 local 4 -%$g2 local 4 -%$g3 local 4 - -%$s1 local 4 -%$c1 local 4 -%$s2 local 4 -%$c2 local 4 - -%$t_s local 4 -%$t_c local 4 - alloc - - pushd ebp, ebx, esi, edi - -fht_FPU_1st_part: - -fht_FPU_2nd_part: - -fht_FPU_3rd_part: - -.do_init: - mov r3, 16 ;k1*fsize = 4*fsize = k4 - mov r4, 8 ;kx = k1/2 - mov r2, 48 ;k3*fsize - mov dword [sp(%$k)], 2 ;k = 2 - mov r0, [sp(%$fz)] ;fi - lea r1, [r0+8] ;gi = fi + kx - -.do: -.do2: - ;f - fld dword [r0] - fsub dword [r0+r3] - - fld dword [r0] - fadd dword [r0+r3] - - fld dword [r0+r3*2] - fsub dword [r0+r2] - - fld dword [r0+r3*2] - fadd dword [r0+r2] ;f2 f3 f0 f1 - - fld st2 ;f0 f2 f3 f0 f1 - fadd st0, st1 - fstp dword [r0] ;fi[0] - - fld st3 ;f1 f2 f3 f0 f1 - fadd st0, st2 - fstp dword [r0+r3] ;fi[k1] - - fsubr st0, st2 ;f0-f2 f3 f0 f1 - fstp dword [r0+r3*2] ;fi[k2] - - fsubr st0, st2 ;f1-f3 f0 f1 - fstp dword [r0+r2] ;fi[k3] - fcompp - - ;g - fld dword [r1] - fsub dword [r1+r3] - - fld dword [r1] - fadd dword [r1+r3] - - fld dword [D_1_41421] - fmul dword [r1+r2] - - fld dword [D_1_41421] - fmul dword [r1+r3*2] ;g2 g3 g0 g1 - - fld st2 ;g0 g2 g3 g0 g1 - fadd st0, st1 - fstp dword [r1] ;gi[0] - - fld st3 ;g1 g2 g3 g0 g1 - fadd st0, st2 - fstp dword [r1+r3] ;gi[k1] - - fsubr st0, st2 ;g0-g2 g3 g0 g1 - fstp dword [r1+r3*2] ;gi[k2] - - fsubr st0, st2 ;g1-g3 g0 g1 - fstp dword [r1+r2] ;gi[k3] - fcompp - - lea r0, [r0+r3*4] - lea r1, [r1+r3*4] - cmp r0, r6 - jb .do2 - - - mov r0, [sp(%$k)] - fld dword [costab_fft +r0*4] - fstp dword [sp(%$t_c)] - fld dword [sintab_fft +r0*4] - fstp dword [sp(%$t_s)] - fld dword [D_1_0] - fstp dword [sp(%$c1)] - fld dword [D_0_0] - fstp dword [sp(%$s1)] - -.for_init: - mov r5, 4 ;i = 1*fsize - -.for: - fld dword [sp(%$c1)] - fmul dword [sp(%$t_c)] - fld dword [sp(%$s1)] - fmul dword [sp(%$t_s)] - fsubp st1, st0 ;c1 - - fld dword [sp(%$c1)] - fmul dword [sp(%$t_s)] - fld dword [sp(%$s1)] - fmul dword [sp(%$t_c)] - faddp st1, st0 ;s1 c1 - - fld st1 - fmul st0, st0 ;c1c1 s1 c1 - fld st1 - fmul st0, st0 ;s1s1 c1c1 s1 c1 - fsubp st1, st0 ;c2 s1 c1 - fstp dword [sp(%$c2)] ;s1 c1 - - fld st1 ;c1 s1 c1 - fmul st0, st1 ;c1s1 s1 c1 - fadd st0, st0 ;s2 s1 c1 - fstp dword [sp(%$s2)] ;s1 c1 - - fstp dword [sp(%$s1)] ;c1 - fstp dword [sp(%$c1)] ; - - mov r0, [sp(%$fz)] - add r0, r5 ;r0 = fi - mov r1, [sp(%$fz)] - add r1, r3 - sub r1, r5 ;r1 = gi - -.do3: - fld dword [sp(%$s2)] - fmul dword [r0+r3] - fld dword [sp(%$c2)] - fmul dword [r1+r3] - fsubp st1, st0 ;b = s2*fi[k1] - c2*gi[k1] - - fld dword [sp(%$c2)] - fmul dword [r0+r3] - fld dword [sp(%$s2)] - fmul dword [r1+r3] - faddp st1, st0 ;a = c2*fi[k1] + s2*gi[k1] b - - fld dword [r0] - fsub st0, st1 ;f1 a b - fstp dword [sp(%$f1)] ;a b - - fadd dword [r0] ;f0 b - fstp dword [sp(%$f0)] ;b - - fld dword [r1] - fsub st0, st1 ;g1 b - fstp dword [sp(%$g1)] ;b - - fadd dword [r1] ;g0 - fstp dword [sp(%$g0)] ; - - - fld dword [sp(%$s2)] - fmul dword [r0+r2] - fld dword [sp(%$c2)] - fmul dword [r1+r2] - fsubp st1, st0 ;b = s2*fi[k3] - c2*gi[k3] - - fld dword [sp(%$c2)] - fmul dword [r0+r2] - fld dword [sp(%$s2)] - fmul dword [r1+r2] - faddp st1, st0 ;a = c2*fi[k3] + s2*gi[k3] b - - fld dword [r0+r3*2] - fsub st0, st1 ;f3 a b - fstp dword [sp(%$f3)] ;a b - - fadd dword [r0+r3*2] ;f2 b - fstp dword [sp(%$f2)] ;b - - fld dword [r1+r3*2] - fsub st0, st1 ;g3 b - fstp dword [sp(%$g3)] ;b - - fadd dword [r1+r3*2] ;g2 - fstp dword [sp(%$g2)] ; - - - fld dword [sp(%$s1)] - fmul dword [sp(%$f2)] - fld dword [sp(%$c1)] - fmul dword [sp(%$g3)] - fsubp st1, st0 ;b = s1*f2 - c1*g3 - - fld dword [sp(%$c1)] - fmul dword [sp(%$f2)] - fld dword [sp(%$s1)] - fmul dword [sp(%$g3)] - faddp st1, st0 ;a = c1*f2 + s1*g3 b - - fld dword [sp(%$f0)] - fsub st0, st1 ;fi[k2] a b - fstp dword [r0+r3*2] - - fadd dword [sp(%$f0)] ;fi[0] b - fstp dword [r0] - - fld dword [sp(%$g1)] - fsub st0, st1 ;gi[k3] b - fstp dword [r1+r2] - - fadd dword [sp(%$g1)] ;gi[k1] - fstp dword [r1+r3] - - - fld dword [sp(%$c1)] - fmul dword [sp(%$g2)] - fld dword [sp(%$s1)] - fmul dword [sp(%$f3)] - fsubp st1, st0 ;b = c1*g2 - s1*f3 - - fld dword [sp(%$s1)] - fmul dword [sp(%$g2)] - fld dword [sp(%$c1)] - fmul dword [sp(%$f3)] - faddp st1, st0 ;a = s1*g2 + c1*f3 b - - fld dword [sp(%$g0)] - fsub st0, st1 ;gi[k2] a b - fstp dword [r1+r3*2] - - fadd dword [sp(%$g0)] ;gi[0] b - fstp dword [r1] - - fld dword [sp(%$f1)] - fsub st0, st1 ;fi[k3] b - fstp dword [r0+r2] - - fadd dword [sp(%$f1)] ;fi[k1] - fstp dword [r0+r3] - - - lea r0, [r0+r3*4] - lea r1, [r1+r3*4] - cmp r0, r6 - jb near .do3 - - add r5, 4 - cmp r5, r4 - jb near .for - - cmp r3, [sp(%$n)] - jae .exit - - add dword [sp(%$k)], 2 ;k += 2; - lea r3, [r3*4] ;k1 *= 4 - lea r2, [r2*4] ;k3 *= 4 - lea r4, [r4*4] ;kx *= 4 - mov r0, [sp(%$fz)] ;fi - lea r1, [r0+r4] ;gi = fi + kx - jmp .do - -.exit: - popd ebp, ebx, esi, edi -endproc - -;************************************************************* - -;void fht_FPU_FXCH(float *fz, int n); -proc fht_FPU_FXCH - -%$fz arg 4 -%$n arg 4 - -%$k local 4 - -%$f0 local 4 -%$f1 local 4 -%$f2 local 4 -%$f3 local 4 - -%$g0 local 4 -%$g1 local 4 -%$g2 local 4 -%$g3 local 4 - -%$s1 local 4 -%$c1 local 4 -%$s2 local 4 -%$c2 local 4 - -%$t_s local 4 -%$t_c local 4 - alloc - - pushd ebp, ebx, esi, edi - -fht_FPU_FXCH_1st_part: - -fht_FPU_FXCH_2nd_part: - -fht_FPU_FXCH_3rd_part: - -.do_init: - mov r3, 16 ;k1*fsize = 4*fsize = k4 - mov r4, 8 ;kx = k1/2 - mov r2, 48 ;k3*fsize - mov dword [sp(%$k)], 2 ;k = 2 - mov r0, [sp(%$fz)] ;fi - lea r1, [r0+8] ;gi = fi + kx - -.do: -.do2: - ;f - fld dword [r0] - fsub dword [r0+r3] - fld dword [r0] - fadd dword [r0+r3] - - fld dword [r0+r3*2] - fsub dword [r0+r2] - fld dword [r0+r3*2] - fadd dword [r0+r2] ;f2 f3 f0 f1 - - fld st3 - fld st3 - fxch st5 - fadd st0, st3 - fxch st4 - fadd st0, st2 - fxch st3 - fsubp st1, st0 - fxch st1 - fsubp st4, st0 - fxch st2 - - fstp dword [r0+r3] ;fi[k1] - fstp dword [r0] ;fi[0] - fstp dword [r0+r2] ;fi[k3] - fstp dword [r0+r3*2] ;fi[k2] - - ;g - fld dword [r1] - fsub dword [r1+r3] - fld dword [r1] - fadd dword [r1+r3] - - fld dword [D_1_41421] - fmul dword [r1+r2] - fld dword [D_1_41421] - fmul dword [r1+r3*2] ;g2 g3 g0 g1 - - fld st3 - fld st3 - fxch st5 - fadd st0, st3 - fxch st4 - fadd st0, st2 - fxch st3 - fsubp st1, st0 - fxch st1 - fsubp st4, st0 - fxch st2 - - fstp dword [r1+r3] ;gi[k1] - fstp dword [r1] ;gi[0] - fstp dword [r1+r2] ;gi[k3] - fstp dword [r1+r3*2] ;gi[k2] - - lea r0, [r0+r3*4] - lea r1, [r1+r3*4] - cmp r0, r6 - jb .do2 - - - mov r0, [sp(%$k)] - fld dword [costab_fft +r0*4] - fld dword [sintab_fft +r0*4] - fld dword [D_1_0] - fld dword [D_0_0] - fxch st3 - fstp dword [sp(%$t_c)] - fxch st1 - fstp dword [sp(%$t_s)] - fstp dword [sp(%$c1)] - fstp dword [sp(%$s1)] - -.for_init: - mov r5, 4 ;i = 1*fsize - -.for: - fld dword [sp(%$c1)] - fmul dword [sp(%$t_c)] - fld dword [sp(%$s1)] - fmul dword [sp(%$t_s)] - - fld dword [sp(%$c1)] - fmul dword [sp(%$t_s)] - fld dword [sp(%$s1)] - fmul dword [sp(%$t_c)] - fxch st2 - fsubp st3, st0 ;c1 - faddp st1, st0 ;s1 c1 - - fld st1 - fxch st2 - fmul st0, st0 ;c1c1 s1 c1 - fld st1 - fxch st2 - fmul st0, st0 ;s1s1 c1c1 s1 c1 - - fxch st3 - fst dword [sp(%$c1)] ;c1 - fxch st2 - fst dword [sp(%$s1)] ;s1 c1c1 c1 s1s1 - - fmulp st2, st0 - fsubrp st2, st0 - fadd st0, st0 ;s2 c2 - fxch st1 - fstp dword [sp(%$c2)] - fstp dword [sp(%$s2)] - - mov r0, [sp(%$fz)] - mov r1, [sp(%$fz)] - add r0, r5 ;r0 = fi - add r1, r3 - sub r1, r5 ;r1 = gi - -.do3: - fld dword [sp(%$s2)] - fmul dword [r0+r3] - fld dword [sp(%$c2)] - fmul dword [r1+r3] - - fld dword [sp(%$c2)] - fmul dword [r0+r3] - fld dword [sp(%$s2)] - fmul dword [r1+r3] - fxch st2 - fsubp st3, st0 ;b = s2*fi[k1] - c2*gi[k1] - faddp st1, st0 ;a = c2*fi[k1] + s2*gi[k1] b - - fld dword [r1] - fsub st0, st2 ;g1 a b - fxch st2 - fadd dword [r1] ;g0 a g1 - - fld dword [r0] - fsub st0, st2 ;f1 g0 a g1 - fxch st2 - fadd dword [r0] ;f0 g0 f1 g1 - - fxch st3 - fstp dword [sp(%$g1)] - fstp dword [sp(%$g0)] - fstp dword [sp(%$f1)] - fstp dword [sp(%$f0)] - - - fld dword [sp(%$s2)] - fmul dword [r0+r2] - fld dword [sp(%$c2)] - fmul dword [r1+r2] - - fld dword [sp(%$c2)] - fmul dword [r0+r2] - fld dword [sp(%$s2)] - fmul dword [r1+r2] - fxch st2 - fsubp st3, st0 ;b = s2*fi[k3] - c2*gi[k3] - faddp st1, st0 ;a = c2*fi[k3] + s2*gi[k3] b - - - fld dword [r1+r3*2] - fsub st0, st2 ;g3 a b - fxch st2 - fadd dword [r1+r3*2] ;g2 a g3 - - fld dword [r0+r3*2] - fsub st0, st2 ;f3 g2 a g3 - fxch st2 - fadd dword [r0+r3*2] ;f2 g2 f3 g3 - - fxch st3 - fstp dword [sp(%$g3)] - fstp dword [sp(%$g2)] - fstp dword [sp(%$f3)] - fstp dword [sp(%$f2)] - - - fld dword [sp(%$s1)] - fmul dword [sp(%$f2)] - fld dword [sp(%$c1)] - fmul dword [sp(%$g3)] - - fld dword [sp(%$c1)] - fmul dword [sp(%$f2)] - fld dword [sp(%$s1)] - fmul dword [sp(%$g3)] - fxch st2 - fsubp st3, st0 ;b = s1*f2 - c1*g3 - faddp st1, st0 ;a = c1*f2 + s1*g3 b - - fld dword [sp(%$g1)] - fsub st0, st2 ;gi[k3] a b - fxch st2 - fadd dword [sp(%$g1)] ;gi[k1] a gi[k3] - - fld dword [sp(%$f0)] - fsub st0, st2 ;fi[k2] gi[k1] a gi[k3] - fxch st2 - fadd dword [sp(%$f0)] ;fi[0] gi[k1] fi[k2] gi[k3] - - fxch st3 - fstp dword [r1+r2] - fstp dword [r1+r3] - fstp dword [r0+r3*2] - fstp dword [r0] - - - fld dword [sp(%$c1)] - fmul dword [sp(%$g2)] - fld dword [sp(%$s1)] - fmul dword [sp(%$f3)] - - fld dword [sp(%$s1)] - fmul dword [sp(%$g2)] - fld dword [sp(%$c1)] - fmul dword [sp(%$f3)] - fxch st2 - fsubp st3, st0 ;b = c1*g2 - s1*f3 - faddp st1, st0 ;a = s1*g2 + c1*f3 b - - fld dword [sp(%$f1)] - fsub st0, st2 ;fi[k3] a b - fxch st2 - fadd dword [sp(%$f1)] ;fi[k1] a fi[k3] - - fld dword [sp(%$g0)] - fsub st0, st2 ;gi[k2] fi[k1] a fi[k3] - fxch st2 - fadd dword [sp(%$g0)] ;gi[0] fi[k1] gi[k2] fi[k3] - - fxch st3 - fstp dword [r0+r2] - fstp dword [r0+r3] - fstp dword [r1+r3*2] - fstp dword [r1] - - - lea r0, [r0+r3*4] - lea r1, [r1+r3*4] - cmp r0, r6 - jb near .do3 - - add r5, 4 - cmp r5, r4 - jb near .for - - cmp r3, [sp(%$n)] - jae .exit - - add dword [sp(%$k)], 2 ;k += 2; - lea r3, [r3*4] ;k1 *= 4 - lea r2, [r2*4] ;k3 *= 4 - lea r4, [r4*4] ;kx *= 4 - mov r0, [sp(%$fz)] ;fi - lea r1, [r0+r4] ;gi = fi + kx - jmp .do - -.exit: - popd ebp, ebx, esi, edi -endproc - - end diff --git a/platform/win32/msvc/external/lame/libmp3lame/i386/fftsse.nas b/platform/win32/msvc/external/lame/libmp3lame/i386/fftsse.nas deleted file mode 100644 index 616fcc213a8..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/i386/fftsse.nas +++ /dev/null @@ -1,422 +0,0 @@ -; back port from GOGO-no coda 2.24b by Takehiro TOMINAGA - -; GOGO-no-coda -; Copyright (C) 1999 shigeo -; special thanks to Keiichi SAKAI - -%include "nasm.h" - - globaldef fht_SSE - - segment_data - align 16 -Q_MMPP dd 0x0,0x0,0x80000000,0x80000000 -Q_MPMP dd 0x0,0x80000000,0x0,0x80000000 -D_1100 dd 0.0, 0.0, 1.0, 1.0 -costab_fft: - dd 9.238795325112867e-01 - dd 3.826834323650898e-01 - dd 9.951847266721969e-01 - dd 9.801714032956060e-02 - dd 9.996988186962042e-01 - dd 2.454122852291229e-02 - dd 9.999811752836011e-01 - dd 6.135884649154475e-03 -S_SQRT2 dd 1.414213562 - - segment_code - -PIC_OFFSETTABLE - -;------------------------------------------------------------------------ -; by K. SAKAI -; 99/08/18 PIII 23k[clk] -; 99/08/19 Ì¿Îá½ç½øÆþ¤ì´¹¤¨ PIII 22k[clk] -; 99/08/20 bit reversal ¤òµì¸á¸å¤«¤é°Ü¿¢¤·¤¿ PIII 17k[clk] -; 99/08/23 °ìÉô unroll PIII 14k[clk] -; 99/11/12 clean up -; -;void fht_SSE(float *fz, int n); - align 16 -fht_SSE: - push ebx - push esi - push edi - push ebp - -%assign _P 4*5 - - ;2¤ÄÌܤΥ롼¥× - mov eax,[esp+_P+0] ;eax=fz - mov ebp,[esp+_P+4] ;=n - shl ebp,3 - add ebp,eax ; fn = fz + n, ¤³¤Î´Ø¿ô½ªÎ»¤Þ¤ÇÉÔÊÑ - push ebp - - call get_pc.bp - add ebp, PIC_BASE() - - lea ecx,[PIC_EBP_REL(costab_fft)] - xor eax,eax - mov al,8 ; =k1=1*(sizeof float) // 4, 16, 64, 256,... -.lp2: ; do{ - mov esi,[esp+_P+4] ; esi=fi=fz - lea edx,[eax+eax*2] - mov ebx, esi - -; ¤¿¤«¤À¤«2ÊÂÎó¤·¤«´üÂԤǤ­¤Ê¤¤Éôʬ¤ÏFPU¤Î¤Û¤¦¤¬Â®¤¤¡£ - loopalign 16 -.lp20: ; do{ -; f0 = fi[0 ] + fi[k1]; -; f2 = fi[k2] + fi[k3]; -; f1 = fi[0 ] - fi[k1]; -; f3 = fi[k2] - fi[k3]; -; fi[0 ] = f0 + f2; -; fi[k1] = f1 + f3; -; fi[k2] = f0 - f2; -; fi[k3] = f1 - f3; - lea edi,[ebx+eax] ; edi=gi=fi+ki/2 - fld dword [ebx] - fadd dword [ebx+eax*2] - fld dword [ebx+eax*4] - fadd dword [ebx+edx*2] - - fld dword [ebx] - fsub dword [ebx+eax*2] - fld dword [ebx+eax*4] - fsub dword [ebx+edx*2] - - fld st1 - fadd st0,st1 - fstp dword [ebx+eax*2] - fsubp st1,st0 - fstp dword [ebx+edx*2] - - fld st1 - fadd st0,st1 - fstp dword [ebx] - fsubp st1,st0 - fstp dword [ebx+eax*4] - - lea ebx,[ebx + eax*8] ; = fi += (k1 * 4); -; g0 = gi[0 ] + gi[k1]; -; g2 = SQRT2 * gi[k2]; -; g1 = gi[0 ] - gi[k1]; -; g3 = SQRT2 * gi[k3]; -; gi[0 ] = g0 + g2; -; gi[k2] = g0 - g2; -; gi[k1] = g1 + g3; -; gi[k3] = g1 - g3; - fld dword [edi] - fadd dword [edi+eax*2] - fld dword [PIC_EBP_REL(S_SQRT2)] - fmul dword [edi+eax*4] - - fld dword [edi] - fsub dword [edi+eax*2] - fld dword [PIC_EBP_REL(S_SQRT2)] - fmul dword [edi+edx*2] - - fld st1 - fadd st0,st1 - fstp dword [edi+eax*2] - fsubp st1,st0 - fstp dword [edi+edx*2] - - fld st1 - fadd st0,st1 - fstp dword [edi] - fsubp st1,st0 - fstp dword [edi+eax*4] - - cmp ebx,[esp] - jl near .lp20 ; while (fi<fn); - - -; i = 1; //for (i=1;i<kx;i++){ -; c1 = 1.0*t_c - 0.0*t_s; -; s1 = 0.0*t_c + 1.0*t_s; - movlps xmm6,[ecx] ; = { --, --, s1, c1} - movaps xmm7,xmm6 - - shufps xmm6,xmm6,R4(0,1,1,0) ; = {+c1, +s1, +s1, +c1} -> ɬÍ× -; c2 = c1*c1 - s1*s1 = 1 - (2*s1)*s1; -; s2 = c1*s1 + s1*c1 = 2*s1*c1; - shufps xmm7,xmm7,R4(1,0,0,1) - movss xmm5,xmm7 ; = { --, --, --, s1} - xorps xmm7,[PIC_EBP_REL(Q_MMPP)] ; = {-s1, -c1, +c1, +s1} -> ɬÍ× - - addss xmm5,xmm5 ; = (--, --, --, 2*s1) - add esi,4 ; esi = fi = fz + i - shufps xmm5,xmm5,R4(0,0,0,0) ; = (2*s1, 2*s1, 2*s1, 2*s1) - mulps xmm5,xmm6 ; = (2*s1*c1, 2*s1*s1, 2*s1*s1, 2*s1*c1) - subps xmm5,[PIC_EBP_REL(D_1100)] ; = (--, 2*s1*s1-1, --, 2*s1*c1) = {-- -c2 -- s2} - movaps xmm4,xmm5 - shufps xmm5,xmm5,R4(2,0,2,0) ; = {-c2, s2, -c2, s2} -> ɬÍ× - - xorps xmm4,[PIC_EBP_REL(Q_MMPP)] ; = {--, c2, --, s2} - shufps xmm4,xmm4,R4(0,2,0,2) ; = {s2, c2, s2, c2} -> ɬÍ× - - loopalign 16 -.lp21: ; do{ -; a = c2*fi[k1] + s2*gi[k1]; -; b = s2*fi[k1] - c2*gi[k1]; -; c = c2*fi[k3] + s2*gi[k3]; -; d = s2*fi[k3] - c2*gi[k3]; -; f0 = fi[0 ] + a; -; g0 = gi[0 ] + b; -; f2 = fi[k1 * 2] + c; -; g2 = gi[k1 * 2] + d; -; f1 = fi[0 ] - a; -; g1 = gi[0 ] - b; -; f3 = fi[k1 * 2] - c; -; g3 = gi[k1 * 2] - d; - lea edi,[esi + eax*2 - 8] ; edi = gi = fz +k1-i - - movss xmm0,[esi + eax*2] ; = fi[k1] - movss xmm2,[esi + edx*2] ; = fi[k3] - shufps xmm0,xmm2,0x00 ; = {fi[k3], fi[k3], fi[k1], fi[k1]} - movss xmm1,[edi + eax*2] ; = fi[k1] - movss xmm3,[edi + edx*2] ; = fi[k3] - shufps xmm1,xmm3,0x00 ; = {gi[k3], gi[k3], gi[k1], gi[k1]} - movss xmm2,[esi] ; = fi[0] - mulps xmm0,xmm4 ; *= {+s2, +c2, +s2, +c2} - movss xmm3,[esi + eax*4] ; = fi[k2] - unpcklps xmm2,xmm3 ; = {--, --, fi[k2], fi[0]} - mulps xmm1,xmm5 ; *= {-c2, +s2, -c2, +s2} - movss xmm3,[edi + eax*4] ; = gi[k2] - addps xmm0,xmm1 ; = {d, c, b, a} - movss xmm1,[edi] ; = gi[0] - unpcklps xmm1,xmm3 ; = {--, --, gi[k2], gi[0]} - unpcklps xmm2,xmm1 ; = {gi[k2], fi[k2], gi[0], fi[0]} - movaps xmm1,xmm2 - addps xmm1,xmm0 ; = {g2, f2, g0, f0} - subps xmm2,xmm0 ; = {g3, f3, g1, f1} - -; a = c1*f2 + s1*g3; -; c = s1*g2 + c1*f3; -; b = s1*f2 - c1*g3; -; d = c1*g2 - s1*f3; -; fi[0 ] = f0 + a; -; gi[0 ] = g0 + c; -; gi[k1] = g1 + b; -; fi[k1] = f1 + d; -; fi[k1 * 2] = f0 - a; -; gi[k1 * 2] = g0 - c; -; gi[k3] = g1 - b; -; fi[k3] = f1 - d; - movaps xmm3,xmm1 - movhlps xmm1,xmm1 ; = {g2, f2, g2, f2} - shufps xmm3,xmm2,0x14 ; = {f1, g1, g0, f0} - mulps xmm1,xmm6 ; *= {+c1, +s1, +s1, +c1} - shufps xmm2,xmm2,0xBB ; = {f3, g3, f3, g3} - mulps xmm2,xmm7 ; *= {-s1, -c1, +c1, +s1} - addps xmm1,xmm2 ; = {d, b, c, a} - movaps xmm2,xmm3 - addps xmm3,xmm1 ; = {fi[k1], gi[k1], gi[0], fi[0]} - subps xmm2,xmm1 ; = {fi[k3], gi[k3], gi[k1*2], fi[k1*2]} - movhlps xmm0,xmm3 - movss [esi],xmm3 - shufps xmm3,xmm3,0x55 - movss [edi+eax*2],xmm0 - shufps xmm0,xmm0,0x55 - movss [edi],xmm3 - movss [esi+eax*2],xmm0 - movhlps xmm0,xmm2 - movss [esi+eax*4],xmm2 - shufps xmm2,xmm2,0x55 - movss [edi+edx*2],xmm0 - shufps xmm0,xmm0,0x55 - movss [edi+eax*4],xmm2 - movss [esi+edx*2],xmm0 - lea esi,[esi + eax*8] ; fi += (k1 * 4); - cmp esi,[esp] - jl near .lp21 ; while (fi<fn); - - -; unrollÁ°¤Îdo loop¤Ï43+4Ì¿Îá - -; ºÇÆâ¼þ¤Ç¤Ï¤Ê¤¤for¥ë¡¼¥×¤Îi=2¤«¤éÀè¤òunrolling¤·¤¿ -; kx= 2, 8, 32, 128 -; k4= 16, 64, 256, 1024 -; 0, 6/2,30/2,126/2 - - xor ebx,ebx - mov bl, 4*2 ; = i = 4 - cmp ebx,eax ; i < k1 - jnl near .F22 -; for (i=2;i<kx;i+=2){ - loopalign 16 -.lp22: -; at here, xmm6 is {c3, s3, s3, c3} -; c1 = c3*t_c - s3*t_s; -; s1 = c3*t_s + s3*t_c; - movlps xmm0,[ecx] - shufps xmm0,xmm0,R4(1,1,0,0) ; = {t_s, t_s, t_c, t_c} - mulps xmm6,xmm0 ; = {c3*ts, s3*ts, s3*tc, c3*tc} - movhlps xmm4,xmm6 ; = {--, --, c3*ts, s3*ts} - xorps xmm4,[PIC_EBP_REL(Q_MPMP)] ; = {--, --, -c3*ts, s3*ts} - subps xmm6,xmm4 ; = {-,-, c3*ts+s3*tc, c3*tc-s3*ts}={-,-,s1,c1} - -; c3 = c1*t_c - s1*t_s; -; s3 = s1*t_c + c1*t_s; - shufps xmm6,xmm6,0x14 ; = {c1, s1, s1, c1} - mulps xmm0,xmm6 ; = {ts*c1 ts*s1 tc*s1 tc*c1} - movhlps xmm3,xmm0 - xorps xmm3,[PIC_EBP_REL(Q_MPMP)] - subps xmm0,xmm3 ; = {--, --, s3, c3} - -; {s2 s4 c4 c2} = {2*s1*c1 2*s3*c3 1-2*s3*s3 1-2*s1*s1} - unpcklps xmm6,xmm0 ; xmm6 = {s3, s1, c3, c1} - movaps xmm7, xmm6 - shufps xmm6,xmm6,R4(2,3,1,0) ; xmm6 = {s1, s3, c3, c1} - addps xmm7, xmm7 ; {s3*2, s1*2, --, --} - mov edi,[esp+_P+4] ; = fz - shufps xmm7, xmm7, R4(2,3,3,2) ; {s1*2, s3*2, s3*2, s1*2} - sub edi,ebx ; edi = fz - i/2 - mulps xmm7, xmm6 ; {s1*s1*2, s3*s3*2, s3*c3*2, s1*c1*2} - lea esi,[edi + ebx*2] ; esi = fi = fz +i/2 - subps xmm7, [PIC_EBP_REL(D_1100)] ; {-c2, -c4, s4, s2} - lea edi,[edi + eax*2-4] ; edi = gi = fz +k1-i/2 - -; fi = fz +i; -; gi = fz +k1-i; -; do{ -.lp220: -; unroll¸å¤Îdo loop¤Ï51+4Ì¿Îá -; a = c2*fi[k1 ] + s2*gi[k1 ]; -; e = c4*fi[k1+1] + s4*gi[k1-1]; -; f = s4*fi[k1+1] - c4*gi[k1-1]; -; b = s2*fi[k1 ] - c2*gi[k1 ]; -; c = c2*fi[k3 ] + s2*gi[k3 ]; -; g = c4*fi[k3+1] + s4*gi[k3-1]; -; h = s4*fi[k3+1] - c4*gi[k3-1]; -; d = s2*fi[k3 ] - c2*gi[k3 ]; - - movaps xmm4,xmm7 ; = {-c2 -c4 s4 s2} - xorps xmm4,[PIC_EBP_REL(Q_MMPP)] ; = { c2 c4 s4 s2} - shufps xmm4,xmm4,0x1B ; = { s2 s4 c4 c2} - movlps xmm0,[esi+eax*2] - movlps xmm1,[edi+eax*2] - movlps xmm2,[esi+edx*2] - movlps xmm3,[edi+edx*2] - shufps xmm0,xmm0,0x14 - shufps xmm1,xmm1,0x41 - shufps xmm2,xmm2,0x14 - shufps xmm3,xmm3,0x41 - mulps xmm0,xmm4 - mulps xmm1,xmm7 - mulps xmm2,xmm4 - mulps xmm3,xmm7 - addps xmm0,xmm1 ; xmm0 = {b, f, e, a} - addps xmm2,xmm3 ; xmm2 = {d, h, g, c} -;17 - -; f0 = fi[0 ] + a; -; f4 = fi[0 +1] + e; -; g4 = gi[0 -1] + f; -; g0 = gi[0 ] + b; -; f1 = fi[0 ] - a; -; f5 = fi[0 +1] - e; -; g5 = gi[0 -1] - f; -; g1 = gi[0 ] - b; -; f2 = fi[k2 ] + c; -; f6 = fi[k2+1] + g; -; g6 = gi[k2-1] + h; -; g2 = gi[k2 ] + d; -; f3 = fi[k2 ] - c; -; f7 = fi[k2+1] - g; -; g7 = gi[k2-1] - h; -; g3 = gi[k2 ] - d; - movlps xmm1,[esi ] - movhps xmm1,[edi ] - movaps xmm4,xmm1 - subps xmm1,xmm0 ; xmm1 = {g1, g5, f5, f1} - movlps xmm3,[esi+eax*4] - movhps xmm3,[edi+eax*4] - movaps xmm5,xmm3 - subps xmm3,xmm2 ; xmm3 = {g3, g7, f7, f3} - addps xmm0,xmm4 ; xmm0 = {g0, g4, f4, f0} - addps xmm2,xmm5 ; xmm2 = {g2, g6, f6, f2} -;10 - -; a = c1*f2 + s1*g3; ½ç*½ç + µÕ*µÕ -; e = c3*f6 + s3*g7; -; g = s3*g6 + c3*f7; -; c = s1*g2 + c1*f3; -; d = c1*g2 - s1*f3; ½ç*µÕ - µÕ*½ç -; h = c3*g6 - s3*f7; -; f = s3*f6 - c3*g7; -; b = s1*f2 - c1*g3; - - movaps xmm5,xmm6 ; xmm6 = {s1, s3, c3, c1} - shufps xmm5,xmm5,0x1B ; = {c1, c3, s3, s1} - movaps xmm4,xmm2 - mulps xmm4,xmm6 - shufps xmm2,xmm2,0x1B ; xmm2 = {f2, f6, g6, g2} - mulps xmm2,xmm6 - mulps xmm5,xmm3 - mulps xmm3,xmm6 - shufps xmm3,xmm3,0x1B - addps xmm4,xmm3 ; = {c, g, e, a} - subps xmm2,xmm5 ; = {b, f, h, d} -;10 - -; fi[0 ] = f0 + a; -; fi[0 +1] = f4 + e; -; gi[0 -1] = g4 + g; -; gi[0 ] = g0 + c; -; fi[k2 ] = f0 - a; -; fi[k2+1] = f4 - e; -; gi[k2-1] = g4 - g; -; gi[k2 ] = g0 - c; -; fi[k1 ] = f1 + d; -; fi[k1+1] = f5 + h; -; gi[k1-1] = g5 + f; -; gi[k1 ] = g1 + b; -; fi[k3 ] = f1 - d; -; fi[k3+1] = f5 - h; -; gi[k3-1] = g5 - f; -; gi[k3 ] = g1 - b; - movaps xmm3,xmm0 - subps xmm0,xmm4 - movlps [esi+eax*4],xmm0 - movhps [edi+eax*4],xmm0 - addps xmm4,xmm3 - movlps [esi ],xmm4 - movhps [edi ],xmm4 - - movaps xmm5,xmm1 - subps xmm1,xmm2 - movlps [esi+edx*2],xmm1 - movhps [edi+edx*2],xmm1 - addps xmm2,xmm5 - movlps [esi+eax*2],xmm2 - movhps [edi+eax*2],xmm2 -; 14 -; gi += k4; -; fi += k4; - lea edi,[edi + eax*8] ; gi += (k1 * 4); - lea esi,[esi + eax*8] ; fi += (k1 * 4); - cmp esi,[esp] - jl near .lp220 ; while (fi<fn); -; } while (fi<fn); - - add ebx,byte 2*4 ; i+= 4 - cmp ebx,eax ; i < k1 - shufps xmm6,xmm6,R4(1,2,2,1) ; (--,s3,c3,--) => {c3, s3, s3, c3} - jl near .lp22 -; } -.F22: - shl eax,2 - add ecx, byte 8 - cmp eax,[esp+_P+8] ; while ((k1 * 4)<n); - jle near .lp2 - pop ebp - pop ebp - pop edi - pop esi - pop ebx - ret - - end diff --git a/platform/win32/msvc/external/lame/libmp3lame/i386/ffttbl.nas b/platform/win32/msvc/external/lame/libmp3lame/i386/ffttbl.nas deleted file mode 100644 index 14dd9aebb51..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/i386/ffttbl.nas +++ /dev/null @@ -1,78 +0,0 @@ - -; for new GOGO-no-coda (1999/09) -; Copyright (C) 1999 shigeo -; special thanks to URURI, Keiichi SAKAI - - -; fft sin,cos,gray¥Æ¡¼¥Ö¥ë -; 99/08/21 -; 99/09/01(¤¦¤ë¤ê)¡¡¥Ó¥Ã¥Èȿž¥Æ¡¼¥Ö¥ëºï½ü -; 99/09/14 ¥°¥ì¥¤¥³¡¼¥É¥¤¥ó¥Ç¥Ã¥¯¥¹É½¥°¥í¡¼¥Ð¥ë²½ - -%include "nasm.h" - - globaldef costab_fft - globaldef sintab_fft - globaldef gray_index - - segment_data - align 16 - -costab_fft: - dd 0.000000000000 - dd 0.707106781187 - dd 0.923879532511 - dd 0.980785280403 - dd 0.995184726672 - dd 0.998795456205 - dd 0.999698818696 - dd 0.999924701839 - dd 0.999981175283 - dd 0.999995293810 - dd 0.999998823452 - dd 0.999999705863 - dd 0.999999926466 - dd 0.999999981616 - dd 0.999999995404 - dd 0.999999998851 - -sintab_fft: - dd 1.000000000000 - dd 0.707106781187 - dd 0.382683432365 - dd 0.195090322016 - dd 0.098017140330 - dd 0.049067674327 - dd 0.024541228523 - dd 0.012271538286 - dd 0.006135884649 - dd 0.003067956763 - dd 0.001533980186 - dd 0.000766990319 - dd 0.000383495188 - dd 0.000191747597 - dd 0.000095873799 - dd 0.000047936900 - - align 16 -gray_index: - db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 - db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 7 - db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 - db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 8 - db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 - db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 7 - db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 - db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 9 - db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 - db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 7 - db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 - db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 8 - db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 - db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 7 - db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 - db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 10 - - segment_code - - end diff --git a/platform/win32/msvc/external/lame/libmp3lame/i386/nasm.h b/platform/win32/msvc/external/lame/libmp3lame/i386/nasm.h deleted file mode 100644 index 720f666917f..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/i386/nasm.h +++ /dev/null @@ -1,268 +0,0 @@ - -; Copyright (C) 1999 URURI - -; nasm�ѥޥ��� -; 1999/08/21 ��� -; 1999/10/10 ���Ĥ��ɲ� -; 1999/10/27 aout�б� -; 1999/11/07 pushf, popf ��NASM�ΥХ��б� -; 1999/12/02 for BCC ( Thanks to Miquel ) - -; for Windows Visual C++ -> define WIN32 -; Borland or cygwin -> WIN32 and COFF -; for FreeBSD 2.x -> AOUT -; for TownsOS -> __tos__ -; otherwise -> none - -;̾����դ��� - -BITS 32 - -section .note.GNU-stack noalloc noexec nowrite progbits - -%ifdef YASM - %define segment_code segment .text align=16 use32 - %define segment_data segment .data align=16 use32 - %define segment_bss segment .bss align=16 use32 -%elifdef WIN32 - %define segment_code segment .text align=16 class=CODE use32 - %define segment_data segment .data align=16 class=DATA use32 -%ifdef __BORLANDC__ - %define segment_bss segment .data align=16 class=DATA use32 -%else - %define segment_bss segment .bss align=16 class=DATA use32 -%endif -%elifdef AOUT - %define _NAMING - %define segment_code segment .text - %define segment_data segment .data - %define segment_bss segment .bss -%else -%ifidn __OUTPUT_FORMAT__,elf - section .note.GNU-stack progbits noalloc noexec nowrite align=1 -%endif - %define segment_code segment .text align=16 class=CODE use32 - %define segment_data segment .data align=16 class=DATA use32 - %define segment_bss segment .bss align=16 class=DATA use32 -%endif - -%ifdef WIN32 - %define _NAMING -%endif - -%ifdef __tos__ -group CGROUP text -group DGROUP data -%endif - -;ñ�����ư�������� - -%idefine float dword -%idefine fsize 4 -%idefine fsizen(a) (fsize*(a)) - -;��ɷ�� - -%idefine wsize 2 -%idefine wsizen(a) (wsize*(a)) -%idefine dwsize 4 -%idefine dwsizen(a) (dwsize*(a)) - -;REG - -%define r0 eax -%define r1 ebx -%define r2 ecx -%define r3 edx -%define r4 esi -%define r5 edi -%define r6 ebp -%define r7 esp - -;MMX,3DNow!,SSE - -%define pmov movq -%define pmovd movd - -%define pupldq punpckldq -%define puphdq punpckhdq -%define puplwd punpcklwd -%define puphwd punpckhwd - -%define xm0 xmm0 -%define xm1 xmm1 -%define xm2 xmm2 -%define xm3 xmm3 -%define xm4 xmm4 -%define xm5 xmm5 -%define xm6 xmm6 -%define xm7 xmm7 - -;�����åե��Ѥ�4�ʥޥ��� - -%define R4(a,b,c,d) (a*64+b*16+c*4+d) - -;C�饤���ʴʰץޥ��� - -%imacro globaldef 1 - %ifdef _NAMING - %define %1 _%1 - %endif - global %1 -%endmacro - -%imacro externdef 1 - %ifdef _NAMING - %define %1 _%1 - %endif - extern %1 -%endmacro - -%imacro proc 1 - %push proc - %ifdef _NAMING - global _%1 - %else - global %1 - %endif - - align 32 -%1: -_%1: - - %assign %$STACK 0 - %assign %$STACKN 0 - %assign %$ARG 4 -%endmacro - -%imacro endproc 0 - %ifnctx proc - %error expected 'proc' before 'endproc'. - %else - %if %$STACK > 0 - add esp, %$STACK - %endif - - %if %$STACK <> (-%$STACKN) - %error STACKLEVEL mismatch check 'local', 'alloc', 'pushd', 'popd' - %endif - - ret - %pop - %endif -%endmacro - -%idefine sp(a) esp+%$STACK+a - -%imacro arg 1 - %00 equ %$ARG - %assign %$ARG %$ARG+%1 -%endmacro - -%imacro local 1 - %assign %$STACKN %$STACKN-%1 - %00 equ %$STACKN -%endmacro - -%imacro alloc 0 - sub esp, (-%$STACKN)-%$STACK - %assign %$STACK (-%$STACKN) -%endmacro - -%imacro pushd 1-* - %rep %0 - push %1 - %assign %$STACK %$STACK+4 - %rotate 1 - %endrep -%endmacro - -%imacro popd 1-* - %rep %0 - %rotate -1 - pop %1 - %assign %$STACK %$STACK-4 - %endrep -%endmacro - -; bug of NASM-0.98 -%define pushf db 0x66, 0x9C -%define popf db 0x66, 0x9D - -%define ge16(n) ((((n) / 16)*0xFFFFFFFF) & 0xFFFFFFFF) -%define ge15(n) ((((n) / 15)*0xFFFFFFFF) & 0xFFFFFFFF) -%define ge14(n) ((((n) / 14)*0xFFFFFFFF) & 0xFFFFFFFF) -%define ge13(n) ((((n) / 13)*0xFFFFFFFF) & 0xFFFFFFFF) -%define ge12(n) ((((n) / 12)*0xFFFFFFFF) & 0xFFFFFFFF) -%define ge11(n) ((((n) / 11)*0xFFFFFFFF) & 0xFFFFFFFF) -%define ge10(n) ((((n) / 10)*0xFFFFFFFF) & 0xFFFFFFFF) -%define ge9(n) ((((n) / 9)*0xFFFFFFFF) & 0xFFFFFFFF) -%define ge8(n) (ge9(n) | ((((n) / 8)*0xFFFFFFFF) & 0xFFFFFFFF)) -%define ge7(n) (ge9(n) | ((((n) / 7)*0xFFFFFFFF) & 0xFFFFFFFF)) -%define ge6(n) (ge9(n) | ((((n) / 6)*0xFFFFFFFF) & 0xFFFFFFFF)) -%define ge5(n) (ge9(n) | ((((n) / 5)*0xFFFFFFFF) & 0xFFFFFFFF)) -%define ge4(n) (ge5(n) | ((((n) / 4)*0xFFFFFFFF) & 0xFFFFFFFF)) -%define ge3(n) (ge5(n) | ((((n) / 3)*0xFFFFFFFF) & 0xFFFFFFFF)) -%define ge2(n) (ge3(n) | ((((n) / 2)*0xFFFFFFFF) & 0xFFFFFFFF)) -%define ge1(n) (ge2(n) | ((((n) / 1)*0xFFFFFFFF) & 0xFFFFFFFF)) - -; macro to align for begining of loop -; %1 does not align if it LE bytes to next alignment -; 4..16 -; default is 12 - -%imacro loopalignK6 0-1 12 -%%here: - times (($$-%%here) & 15 & ge1(($$-%%here) & 15) & ~ge4(($$-%%here) & 15)) nop - times (1 & ge4(($$-%%here) & 15) & ~ge%1(($$-%%here) & 15)) jmp short %%skip - times (((($$-%%here) & 15)-2) & ge4(($$-%%here) & 15) & ~ge%1(($$-%%here) & 15)) nop -%%skip: -%endmacro - -%imacro loopalignK7 0-1 12 -%%here: - times (1 & ge1(($$-%%here) & 15) & ~ge2(($$-%%here) & 15) & ~ge%1(($$-%%here) & 15)) nop - times (1 & ge2(($$-%%here) & 15) & ~ge3(($$-%%here) & 15) & ~ge%1(($$-%%here) & 15)) DB 08Bh,0C0h - times (1 & ge3(($$-%%here) & 15) & ~ge4(($$-%%here) & 15) & ~ge%1(($$-%%here) & 15)) DB 08Dh,004h,020h - times (1 & ge4(($$-%%here) & 15) & ~ge5(($$-%%here) & 15) & ~ge%1(($$-%%here) & 15)) DB 08Dh,044h,020h,000h - times (1 & ge5(($$-%%here) & 15) & ~ge6(($$-%%here) & 15) & ~ge%1(($$-%%here) & 15)) DB 08Dh,044h,020h,000h,090h - times (1 & ge6(($$-%%here) & 15) & ~ge7(($$-%%here) & 15) & ~ge%1(($$-%%here) & 15)) DB 08Dh,080h,0,0,0,0 - times (1 & ge7(($$-%%here) & 15) & ~ge8(($$-%%here) & 15) & ~ge%1(($$-%%here) & 15)) DB 08Dh,004h,005h,0,0,0,0 - times (1 & ge8(($$-%%here) & 15) & ~ge9(($$-%%here) & 15) & ~ge%1(($$-%%here) & 15)) DB 08Dh,004h,005h,0,0,0,0,90h - times (1 & ge9(($$-%%here) & 15) & ~ge10(($$-%%here) & 15) & ~ge%1(($$-%%here) & 15)) DB 0EBh,007h,90h,90h,90h,90h,90h,90h,90h - times (1 & ge10(($$-%%here) & 15) & ~ge11(($$-%%here) & 15) & ~ge%1(($$-%%here) & 15)) DB 0EBh,008h,90h,90h,90h,90h,90h,90h,90h,90h - times (1 & ge11(($$-%%here) & 15) & ~ge12(($$-%%here) & 15) & ~ge%1(($$-%%here) & 15)) DB 0EBh,009h,90h,90h,90h,90h,90h,90h,90h,90h,90h - times (1 & ge12(($$-%%here) & 15) & ~ge13(($$-%%here) & 15) & ~ge%1(($$-%%here) & 15)) DB 0EBh,00Ah,90h,90h,90h,90h,90h,90h,90h,90h,90h,90h - times (1 & ge13(($$-%%here) & 15) & ~ge14(($$-%%here) & 15) & ~ge%1(($$-%%here) & 15)) DB 0EBh,00Bh,90h,90h,90h,90h,90h,90h,90h,90h,90h,90h,90h - times (1 & ge14(($$-%%here) & 15) & ~ge15(($$-%%here) & 15) & ~ge%1(($$-%%here) & 15)) DB 0EBh,00Ch,90h,90h,90h,90h,90h,90h,90h,90h,90h,90h,90h,90h - times (1 & ge15(($$-%%here) & 15) & ~ge16(($$-%%here) & 15) & ~ge%1(($$-%%here) & 15)) DB 0EBh,00Dh,90h,90h,90h,90h,90h,90h,90h,90h,90h,90h,90h,90h,90h -%%skip: -%endmacro - -%imacro loopalign 0-1 12 - loopalignK7 %1 -%endmacro -%define PACK(x,y,z,w) (x*64+y*16+z*4+w) - -%ifidn __OUTPUT_FORMAT__,elf - -%idefine PIC_BASE(A) _GLOBAL_OFFSET_TABLE_ + $$ - $ wrt ..gotpc -%idefine PIC_EBP_REL(A) ebp + A wrt ..gotoff -%macro PIC_OFFSETTABLE 0 -extern _GLOBAL_OFFSET_TABLE_ -get_pc.bp: - mov ebp, [esp] - retn -%endmacro - -%else - -%define PIC_BASE(A) (0) -%define PIC_EBP_REL(A) (A) -%macro PIC_OFFSETTABLE 0 -get_pc.bp: - mov ebp, [esp] - retn -%endmacro - -%endif diff --git a/platform/win32/msvc/external/lame/libmp3lame/i386/scalar.nas b/platform/win32/msvc/external/lame/libmp3lame/i386/scalar.nas deleted file mode 100644 index 6d69f429abc..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/i386/scalar.nas +++ /dev/null @@ -1,1022 +0,0 @@ -; -; (C) Frank Klemm 1995,99,2000 -; Dedicated to the LAME project -; -; - %include "nasm.h" - - segment_code - -; float_t scalar04_float32_i387 ( -; const float32_t* const p, -; const float32_t* const q ); - -proc scalar04_float32_i387 -%$p arg 4 -%$q arg 4 -;;; alloc - - mov eax,[sp(%$p)] - mov edx,[sp(%$q)] - fld dword [eax] - fmul dword [edx] - fld dword [eax + 4] - fmul dword [edx + 4] - faddp st1,st0 - fld dword [eax + 8] - fmul dword [edx + 8] - faddp st1,st0 - fld dword [eax + 12] - fmul dword [edx + 12] - faddp st1,st0 -endproc - - -proc scalar08_float32_i387 -%$p arg 4 -%$q arg 4 -;;; alloc - - mov eax,[sp(%$p)] - mov edx,[sp(%$q)] - fld dword [eax] - fmul dword [edx] - fld dword [eax + 4] - fmul dword [edx + 4] - faddp st1,st0 - fld dword [eax + 8] - fmul dword [edx + 8] - faddp st1,st0 - fld dword [eax + 12] - fmul dword [edx + 12] - faddp st1,st0 - fld dword [eax + 16] - fmul dword [edx + 16] - faddp st1,st0 - fld dword [eax + 20] - fmul dword [edx + 20] - faddp st1,st0 - fld dword [eax + 24] - fmul dword [edx + 24] - faddp st1,st0 - fld dword [eax + 28] - fmul dword [edx + 28] - faddp st1,st0 -endproc - - -proc scalar12_float32_i387 -%$p arg 4 -%$q arg 4 -;;; alloc - - mov eax,[sp(%$p)] - mov edx,[sp(%$q)] - fld dword [eax] - fmul dword [edx] - fld dword [eax + 4] - fmul dword [edx + 4] - faddp st1,st0 - fld dword [eax + 8] - fmul dword [edx + 8] - faddp st1,st0 - fld dword [eax + 12] - fmul dword [edx + 12] - faddp st1,st0 - fld dword [eax + 16] - fmul dword [edx + 16] - faddp st1,st0 - fld dword [eax + 20] - fmul dword [edx + 20] - faddp st1,st0 - fld dword [eax + 24] - fmul dword [edx + 24] - faddp st1,st0 - fld dword [eax + 28] - fmul dword [edx + 28] - faddp st1,st0 - fld dword [eax + 32] - fmul dword [edx + 32] - faddp st1,st0 - fld dword [eax + 36] - fmul dword [edx + 36] - faddp st1,st0 - fld dword [eax + 40] - fmul dword [edx + 40] - faddp st1,st0 - fld dword [eax + 44] - fmul dword [edx + 44] - faddp st1,st0 -endproc - - -proc scalar16_float32_i387 -%$p arg 4 -%$q arg 4 -;;; alloc - - mov eax,[sp(%$p)] - mov edx,[sp(%$q)] - fld dword [eax] - fmul dword [edx] - fld dword [eax + 4] - fmul dword [edx + 4] - faddp st1,st0 - fld dword [eax + 8] - fmul dword [edx + 8] - faddp st1,st0 - fld dword [eax + 12] - fmul dword [edx + 12] - faddp st1,st0 - fld dword [eax + 16] - fmul dword [edx + 16] - faddp st1,st0 - fld dword [eax + 20] - fmul dword [edx + 20] - faddp st1,st0 - fld dword [eax + 24] - fmul dword [edx + 24] - faddp st1,st0 - fld dword [eax + 28] - fmul dword [edx + 28] - faddp st1,st0 - fld dword [eax + 32] - fmul dword [edx + 32] - faddp st1,st0 - fld dword [eax + 36] - fmul dword [edx + 36] - faddp st1,st0 - fld dword [eax + 40] - fmul dword [edx + 40] - faddp st1,st0 - fld dword [eax + 44] - fmul dword [edx + 44] - faddp st1,st0 - fld dword [eax + 48] - fmul dword [edx + 48] - faddp st1,st0 - fld dword [eax + 52] - fmul dword [edx + 52] - faddp st1,st0 - fld dword [eax + 56] - fmul dword [edx + 56] - faddp st1,st0 - fld dword [eax + 60] - fmul dword [edx + 60] - faddp st1,st0 -endproc - - -proc scalar20_float32_i387 -%$p arg 4 -%$q arg 4 -;;; alloc - - mov eax,[sp(%$p)] - mov edx,[sp(%$q)] - fld dword [eax] - fmul dword [edx] - fld dword [eax + 4] - fmul dword [edx + 4] - faddp st1,st0 - fld dword [eax + 8] - fmul dword [edx + 8] - faddp st1,st0 - fld dword [eax + 12] - fmul dword [edx + 12] - faddp st1,st0 - fld dword [eax + 16] - fmul dword [edx + 16] - faddp st1,st0 - fld dword [eax + 20] - fmul dword [edx + 20] - faddp st1,st0 - fld dword [eax + 24] - fmul dword [edx + 24] - faddp st1,st0 - fld dword [eax + 28] - fmul dword [edx + 28] - faddp st1,st0 - fld dword [eax + 32] - fmul dword [edx + 32] - faddp st1,st0 - fld dword [eax + 36] - fmul dword [edx + 36] - faddp st1,st0 - fld dword [eax + 40] - fmul dword [edx + 40] - faddp st1,st0 - fld dword [eax + 44] - fmul dword [edx + 44] - faddp st1,st0 - fld dword [eax + 48] - fmul dword [edx + 48] - faddp st1,st0 - fld dword [eax + 52] - fmul dword [edx + 52] - faddp st1,st0 - fld dword [eax + 56] - fmul dword [edx + 56] - faddp st1,st0 - fld dword [eax + 60] - fmul dword [edx + 60] - faddp st1,st0 - fld dword [eax + 64] - fmul dword [edx + 64] - faddp st1,st0 - fld dword [eax + 68] - fmul dword [edx + 68] - faddp st1,st0 - fld dword [eax + 72] - fmul dword [edx + 72] - faddp st1,st0 - fld dword [eax + 76] - fmul dword [edx + 76] - faddp st1,st0 -endproc - - -proc scalar24_float32_i387 -%$p arg 4 -%$q arg 4 -;;; alloc - - mov eax,[sp(%$p)] - mov edx,[sp(%$q)] - fld dword [eax] - fmul dword [edx] - fld dword [eax + 4] - fmul dword [edx + 4] - faddp st1,st0 - fld dword [eax + 8] - fmul dword [edx + 8] - faddp st1,st0 - fld dword [eax + 12] - fmul dword [edx + 12] - faddp st1,st0 - fld dword [eax + 16] - fmul dword [edx + 16] - faddp st1,st0 - fld dword [eax + 20] - fmul dword [edx + 20] - faddp st1,st0 - fld dword [eax + 24] - fmul dword [edx + 24] - faddp st1,st0 - fld dword [eax + 28] - fmul dword [edx + 28] - faddp st1,st0 - fld dword [eax + 32] - fmul dword [edx + 32] - faddp st1,st0 - fld dword [eax + 36] - fmul dword [edx + 36] - faddp st1,st0 - fld dword [eax + 40] - fmul dword [edx + 40] - faddp st1,st0 - fld dword [eax + 44] - fmul dword [edx + 44] - faddp st1,st0 - fld dword [eax + 48] - fmul dword [edx + 48] - faddp st1,st0 - fld dword [eax + 52] - fmul dword [edx + 52] - faddp st1,st0 - fld dword [eax + 56] - fmul dword [edx + 56] - faddp st1,st0 - fld dword [eax + 60] - fmul dword [edx + 60] - faddp st1,st0 - fld dword [eax + 64] - fmul dword [edx + 64] - faddp st1,st0 - fld dword [eax + 68] - fmul dword [edx + 68] - faddp st1,st0 - fld dword [eax + 72] - fmul dword [edx + 72] - faddp st1,st0 - fld dword [eax + 76] - fmul dword [edx + 76] - faddp st1,st0 - fld dword [eax + 80] - fmul dword [edx + 80] - faddp st1,st0 - fld dword [eax + 84] - fmul dword [edx + 84] - faddp st1,st0 - fld dword [eax + 88] - fmul dword [edx + 88] - faddp st1,st0 - fld dword [eax + 92] - fmul dword [edx + 92] - faddp st1,st0 -endproc - - -proc scalar32_float32_i387 -%$p arg 4 -%$q arg 4 -;;; alloc - - mov eax,[sp(%$p)] - mov edx,[sp(%$q)] - fld dword [eax] - fmul dword [edx] - fld dword [eax + 4] - fmul dword [edx + 4] - faddp st1,st0 - fld dword [eax + 8] - fmul dword [edx + 8] - faddp st1,st0 - fld dword [eax + 12] - fmul dword [edx + 12] - faddp st1,st0 - fld dword [eax + 16] - fmul dword [edx + 16] - faddp st1,st0 - fld dword [eax + 20] - fmul dword [edx + 20] - faddp st1,st0 - fld dword [eax + 24] - fmul dword [edx + 24] - faddp st1,st0 - fld dword [eax + 28] - fmul dword [edx + 28] - faddp st1,st0 - fld dword [eax + 32] - fmul dword [edx + 32] - faddp st1,st0 - fld dword [eax + 36] - fmul dword [edx + 36] - faddp st1,st0 - fld dword [eax + 40] - fmul dword [edx + 40] - faddp st1,st0 - fld dword [eax + 44] - fmul dword [edx + 44] - faddp st1,st0 - fld dword [eax + 48] - fmul dword [edx + 48] - faddp st1,st0 - fld dword [eax + 52] - fmul dword [edx + 52] - faddp st1,st0 - fld dword [eax + 56] - fmul dword [edx + 56] - faddp st1,st0 - fld dword [eax + 60] - fmul dword [edx + 60] - faddp st1,st0 - fld dword [eax + 64] - fmul dword [edx + 64] - faddp st1,st0 - fld dword [eax + 68] - fmul dword [edx + 68] - faddp st1,st0 - fld dword [eax + 72] - fmul dword [edx + 72] - faddp st1,st0 - fld dword [eax + 76] - fmul dword [edx + 76] - faddp st1,st0 - fld dword [eax + 80] - fmul dword [edx + 80] - faddp st1,st0 - fld dword [eax + 84] - fmul dword [edx + 84] - faddp st1,st0 - fld dword [eax + 88] - fmul dword [edx + 88] - faddp st1,st0 - fld dword [eax + 92] - fmul dword [edx + 92] - faddp st1,st0 - fld dword [eax + 96] - fmul dword [edx + 96] - faddp st1,st0 - fld dword [eax +100] - fmul dword [edx +100] - faddp st1,st0 - fld dword [eax +104] - fmul dword [edx +104] - faddp st1,st0 - fld dword [eax +108] - fmul dword [edx +108] - faddp st1,st0 - fld dword [eax +112] - fmul dword [edx +112] - faddp st1,st0 - fld dword [eax +116] - fmul dword [edx +116] - faddp st1,st0 - fld dword [eax +120] - fmul dword [edx +120] - faddp st1,st0 - fld dword [eax +124] - fmul dword [edx +124] - faddp st1,st0 -endproc - - -; float_t scalar4n_float32_i387 ( -; const float32_t* const p, -; const float32_t* const q, -; const size_t len ); - -proc scalar4n_float32_i387 -%$p arg 4 -%$q arg 4 -%$len arg 4 -;;; alloc - - mov eax,[sp(%$p)] - mov edx,[sp(%$q)] - mov ecx,[sp(%$len)] - fld dword [eax] - fmul dword [edx] - fld dword [eax + 4] - fmul dword [edx + 4] - faddp st1,st0 - fld dword [eax + 8] - fmul dword [edx + 8] - faddp st1,st0 - fld dword [eax + 12] - fmul dword [edx + 12] - faddp st1,st0 - dec ecx - jz .ret1 - add eax,byte 16 - add edx,byte 16 -.lbl1 - fld dword [eax] - fmul dword [edx] - faddp st1,st0 - fld dword [eax + 4] - fmul dword [edx + 4] - faddp st1,st0 - fld dword [eax + 8] - fmul dword [edx + 8] - faddp st1,st0 - fld dword [eax + 12] - fmul dword [edx + 12] - faddp st1,st0 - add eax,byte 16 - add edx,byte 16 - dec ecx - jnz .lbl1 -.ret1 -endproc - - -; float_t scalar1n_float32_i387 ( -; const float32_t* const p, -; const float32_t* const q, -; const size_t len ); - -proc scalar1n_float32_i387 -%$p arg 4 -%$q arg 4 -%$len arg 4 -;;; alloc - - mov eax,[sp(%$p)] - mov edx,[sp(%$q)] - mov ecx,[sp(%$len)] - fld0 - shr ecx,1 - jnc .lbl2 - fld dword [eax] - fmul dword [edx] - faddp st1,st0 - add eax,byte 4 - add edx,byte 4 -.lbl2 - shr ecx,1 - jnc .lbl3 - fld dword [eax] - fmul dword [edx] - faddp st1,st0 - fld dword [eax + 4] - fmul dword [edx + 4] - faddp st1,st0 - add eax,byte 8 - add edx,byte 8 - and ecx,ecx -.lbl3 - jz .ret2 -.lbl4 - fld dword [eax] - fmul dword [edx] - faddp st1,st0 - fld dword [eax + 4] - fmul dword [edx + 4] - faddp st1,st0 - fld dword [eax + 8] - fmul dword [edx + 8] - faddp st1,st0 - fld dword [eax + 12] - fmul dword [edx + 12] - faddp st1,st0 - add eax,byte 16 - add edx,byte 16 - dec ecx - jnz .lbl4 -.ret2 -endproc - - -proc scalar04_float32_3DNow -%$p arg 4 -%$q arg 4 - mov eax,[sp(%$p)] - mov edx,[sp(%$q)] - - pmov mm0,qword [eax] - pmov mm1,qword [eax+8] - pfmul mm0,qword [edx] - pfmul mm1,qword [edx+8] - - pfadd mm0,mm1 - pmov qword [sp(%$p)],mm0 - femms - fld dword [sp(%$p)] - fadd dword [sp(%$p)+4] -endproc - - -proc scalar08_float32_3DNow -%$p arg 4 -%$q arg 4 - mov eax,[sp(%$p)] - mov edx,[sp(%$q)] - - pmov mm0,qword [eax] - pmov mm1,qword [eax+8] - pfmul mm0,qword [edx] - pfmul mm1,qword [edx+8] - - pmov mm2,qword [eax+16] - pmov mm3,qword [eax+24] - pfmul mm2,qword [edx+16] - pfmul mm3,qword [edx+24] - pfadd mm0,mm2 - pfadd mm1,mm3 - - pfadd mm0,mm1 - pmov qword [sp(%$p)],mm0 - femms - fld dword [sp(%$p)] - fadd dword [sp(%$p)+4] -endproc - - -proc scalar12_float32_3DNow -%$p arg 4 -%$q arg 4 - mov eax,[sp(%$p)] - mov edx,[sp(%$q)] - - pmov mm0,qword [eax] - pmov mm1,qword [eax+8] - pfmul mm0,qword [edx] - pfmul mm1,qword [edx+8] - - pmov mm2,qword [eax+16] - pmov mm3,qword [eax+24] - pfmul mm2,qword [edx+16] - pfmul mm3,qword [edx+24] - pfadd mm0,mm2 - pfadd mm1,mm3 - - pmov mm2,qword [eax+32] - pmov mm3,qword [eax+40] - pfmul mm2,qword [edx+32] - pfmul mm3,qword [edx+40] - pfadd mm0,mm2 - pfadd mm1,mm3 - - pfadd mm0,mm1 - pmov qword [sp(%$p)],mm0 - femms - fld dword [sp(%$p)] - fadd dword [sp(%$p)+4] -endproc - - -proc scalar16_float32_3DNow -%$p arg 4 -%$q arg 4 - mov eax,[sp(%$p)] - mov edx,[sp(%$q)] - - pmov mm0,qword [eax] - pmov mm1,qword [eax+8] - pfmul mm0,qword [edx] - pfmul mm1,qword [edx+8] - - pmov mm2,qword [eax+16] - pmov mm3,qword [eax+24] - pfmul mm2,qword [edx+16] - pfmul mm3,qword [edx+24] - pfadd mm0,mm2 - pfadd mm1,mm3 - - pmov mm2,qword [eax+32] - pmov mm3,qword [eax+40] - pfmul mm2,qword [edx+32] - pfmul mm3,qword [edx+40] - pfadd mm0,mm2 - pfadd mm1,mm3 - - pmov mm2,qword [eax+48] - pmov mm3,qword [eax+56] - pfmul mm2,qword [edx+48] - pfmul mm3,qword [edx+56] - pfadd mm0,mm2 - pfadd mm1,mm3 - - pfadd mm0,mm1 - pmov qword [sp(%$p)],mm0 - femms - fld dword [sp(%$p)] - fadd dword [sp(%$p)+4] -endproc - - -proc scalar20_float32_3DNow -%$p arg 4 -%$q arg 4 - mov eax,[sp(%$p)] - mov edx,[sp(%$q)] - - pmov mm0,qword [eax] - pmov mm1,qword [eax+8] - pfmul mm0,qword [edx] - pfmul mm1,qword [edx+8] - - pmov mm2,qword [eax+16] - pmov mm3,qword [eax+24] - pfmul mm2,qword [edx+16] - pfmul mm3,qword [edx+24] - pfadd mm0,mm2 - pfadd mm1,mm3 - - pmov mm2,qword [eax+32] - pmov mm3,qword [eax+40] - pfmul mm2,qword [edx+32] - pfmul mm3,qword [edx+40] - pfadd mm0,mm2 - pfadd mm1,mm3 - - pmov mm2,qword [eax+48] - pmov mm3,qword [eax+56] - pfmul mm2,qword [edx+48] - pfmul mm3,qword [edx+56] - pfadd mm0,mm2 - pfadd mm1,mm3 - - pmov mm2,qword [eax+64] - pmov mm3,qword [eax+72] - pfmul mm2,qword [edx+64] - pfmul mm3,qword [edx+72] - pfadd mm0,mm2 - pfadd mm1,mm3 - - pfadd mm0,mm1 - pmov qword [sp(%$p)],mm0 - femms - fld dword [sp(%$p)] - fadd dword [sp(%$p)+4] -endproc - - -proc scalar24_float32_3DNow -%$p arg 4 -%$q arg 4 - mov eax,[sp(%$p)] - mov edx,[sp(%$q)] - - pmov mm0,qword [eax] - pmov mm1,qword [eax+8] - pfmul mm0,qword [edx] - pfmul mm1,qword [edx+8] - - pmov mm2,qword [eax+16] - pmov mm3,qword [eax+24] - pfmul mm2,qword [edx+16] - pfmul mm3,qword [edx+24] - pfadd mm0,mm2 - pfadd mm1,mm3 - - pmov mm2,qword [eax+32] - pmov mm3,qword [eax+40] - pfmul mm2,qword [edx+32] - pfmul mm3,qword [edx+40] - pfadd mm0,mm2 - pfadd mm1,mm3 - - pmov mm2,qword [eax+48] - pmov mm3,qword [eax+56] - pfmul mm2,qword [edx+48] - pfmul mm3,qword [edx+56] - pfadd mm0,mm2 - pfadd mm1,mm3 - - pmov mm2,qword [eax+64] - pmov mm3,qword [eax+72] - pfmul mm2,qword [edx+64] - pfmul mm3,qword [edx+72] - pfadd mm0,mm2 - pfadd mm1,mm3 - - pmov mm2,qword [eax+80] - pmov mm3,qword [eax+88] - pfmul mm2,qword [edx+80] - pfmul mm3,qword [edx+88] - pfadd mm0,mm2 - pfadd mm1,mm3 - - pfadd mm0,mm1 - pmov qword [sp(%$p)],mm0 - femms - fld dword [sp(%$p)] - fadd dword [sp(%$p)+4] -endproc - -proc scalar32_float32_3DNow -%$p arg 4 -%$q arg 4 - mov eax,[sp(%$p)] - mov edx,[sp(%$q)] - - pmov mm0,qword [eax] - pmov mm1,qword [eax+8] - pfmul mm0,qword [edx] - pfmul mm1,qword [edx+8] - - pmov mm2,qword [eax+16] - pmov mm3,qword [eax+24] - pfmul mm2,qword [edx+16] - pfmul mm3,qword [edx+24] - pfadd mm0,mm2 - pfadd mm1,mm3 - - pmov mm2,qword [eax+32] - pmov mm3,qword [eax+40] - pfmul mm2,qword [edx+32] - pfmul mm3,qword [edx+40] - pfadd mm0,mm2 - pfadd mm1,mm3 - - pmov mm2,qword [eax+48] - pmov mm3,qword [eax+56] - pfmul mm2,qword [edx+48] - pfmul mm3,qword [edx+56] - pfadd mm0,mm2 - pfadd mm1,mm3 - - pmov mm2,qword [eax+64] - pmov mm3,qword [eax+72] - pfmul mm2,qword [edx+64] - pfmul mm3,qword [edx+72] - pfadd mm0,mm2 - pfadd mm1,mm3 - - pmov mm2,qword [eax+80] - pmov mm3,qword [eax+88] - pfmul mm2,qword [edx+80] - pfmul mm3,qword [edx+88] - pfadd mm0,mm2 - pfadd mm1,mm3 - - pmov mm2,qword [eax+96] - pmov mm3,qword [eax+104] - pfmul mm2,qword [edx+96] - pfmul mm3,qword [edx+104] - pfadd mm0,mm2 - pfadd mm1,mm3 - - pmov mm2,qword [eax+112] - pmov mm3,qword [eax+120] - pfmul mm2,qword [edx+112] - pfmul mm3,qword [edx+120] - pfadd mm0,mm2 - pfadd mm1,mm3 - - pfadd mm0,mm1 - pmov qword [sp(%$p)],mm0 - femms - fld dword [sp(%$p)] - fadd dword [sp(%$p)+4] -endproc - - -proc scalar4n_float32_3DNow -%$p arg 4 -%$q arg 4 -%$len arg 4 - - mov eax,[sp(%$p)] - mov edx,[sp(%$q)] - mov ecx,[sp(%$len)] - - pmov mm0,qword [eax] - pmov mm1,qword [eax+8] - pfmul mm0,qword [edx] - pfmul mm1,qword [edx+8] - dec ecx - jz .ret4 - - add eax,byte 16 - add edx,byte 16 -.lbl4: - pmov mm2,qword [eax] - pmov mm3,qword [eax+8] - pfmul mm2,qword [edx] - pfmul mm3,qword [edx+8] - add eax,byte 16 - add edx,byte 16 - pfadd mm0,mm2 - pfadd mm1,mm3 - dec ecx - jnz .lbl4 - -.ret4: pfadd mm0,mm1 - pmov qword [sp(%$p)],mm0 - femms - fld dword [sp(%$p)] - fadd dword [sp(%$p)+4] -endproc - - -proc scalar1n_float32_3DNow - jmp scalar24_float32_i387 -endproc - - -proc scalar04_float32_SIMD - jmp scalar04_float32_i387 -endproc - - -proc scalar08_float32_SIMD -%$p arg 4 -%$q arg 4 - mov eax,[sp(%$p)] - mov edx,[sp(%$q)] - - movups xmm0, [eax] - movups xmm1, [eax+16] - mulps xmm0, [edx] - mulps xmm1, [edx+16] - - addps xmm0,xmm1 - sub esp,16 - movups [esp],xmm0 - fld dword [esp+ 0] - fadd dword [esp+ 4] - fadd dword [esp+ 8] - fadd dword [esp+12] - add esp,16 -endproc - - -proc scalar12_float32_SIMD - jmp scalar12_float32_i387 -endproc - - -proc scalar16_float32_SIMD -%$p arg 4 -%$q arg 4 - mov eax,[sp(%$p)] - mov edx,[sp(%$q)] - - movups xmm0, [eax] - movups xmm1, [eax+16] - mulps xmm0, [edx] - mulps xmm1, [edx+16] - - movups xmm2, [eax+32] - movups xmm3, [eax+48] - mulps xmm2, [edx+32] - mulps xmm3, [edx+48] - addps xmm0,xmm2 - addps xmm1,xmm3 - - addps xmm0,xmm1 - sub esp,16 - movups [esp],xmm0 - fld dword [esp+ 0] - fadd dword [esp+ 4] - fadd dword [esp+ 8] - fadd dword [esp+12] - add esp,16 -endproc - - -proc scalar20_float32_SIMD - jmp scalar20_float32_i387 -endproc - - -proc scalar24_float32_SIMD -%$p arg 4 -%$q arg 4 - mov eax,[sp(%$p)] - mov edx,[sp(%$q)] - - movups xmm0, [eax] - movups xmm1, [eax+16] - mulps xmm0, [edx] - mulps xmm1, [edx+16] - - movups xmm2, [eax+32] - movups xmm3, [eax+48] - mulps xmm2, [edx+32] - mulps xmm3, [edx+48] - addps xmm0,xmm2 - addps xmm1,xmm3 - - movups xmm2, [eax+64] - movups xmm3, [eax+80] - mulps xmm2, [edx+64] - mulps xmm3, [edx+80] - addps xmm0,xmm2 - addps xmm1,xmm3 - - addps xmm0,xmm1 - sub esp,16 - movups [esp],xmm0 - fld dword [esp+ 0] - fadd dword [esp+ 4] - fadd dword [esp+ 8] - fadd dword [esp+12] - add esp,16 -endproc - - -proc scalar32_float32_SIMD -%$p arg 4 -%$q arg 4 - mov eax,[sp(%$p)] - mov edx,[sp(%$q)] - - movups xmm0, [eax] - movups xmm1, [eax+16] - mulps xmm0, [edx] - mulps xmm1, [edx+16] - - movups xmm2, [eax+32] - movups xmm3, [eax+48] - mulps xmm2, [edx+32] - mulps xmm3, [edx+48] - addps xmm0,xmm2 - addps xmm1,xmm3 - - movups xmm2, [eax+64] - movups xmm3, [eax+80] - mulps xmm2, [edx+64] - mulps xmm3, [edx+80] - addps xmm0,xmm2 - addps xmm1,xmm3 - - movups xmm2, [eax+96] - movups xmm3, [eax+112] - mulps xmm2, [edx+96] - mulps xmm3, [edx+112] - addps xmm0,xmm2 - addps xmm1,xmm3 - - addps xmm0,xmm1 - - ;sub esp,16 - ;movups [esp],xmm0 - ;fld dword [esp+ 0] - ;fadd dword [esp+ 4] - ;fadd dword [esp+ 8] - ;fadd dword [esp+12] - ;add esp,16 - - movhlps xmm1,xmm0 - addps xmm0,xmm1 - movlps [sp(%$p)],xmm0 - fld dword [sp(%$p)] - fadd dword [sp(%$p)+4] -endproc - - -proc scalar4n_float32_SIMD - jmp scalar4n_float32_i387 -endproc - - -proc scalar1n_float32_SIMD - jmp scalar1n_float32_i387 -endproc - -; end of scalar.nas diff --git a/platform/win32/msvc/external/lame/libmp3lame/id3tag.c b/platform/win32/msvc/external/lame/libmp3lame/id3tag.c deleted file mode 100644 index 887f8eace57..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/id3tag.c +++ /dev/null @@ -1,1829 +0,0 @@ -/* - * id3tag.c -- Write ID3 version 1 and 2 tags. - * - * Copyright (C) 2000 Don Melton - * Copyright (C) 2011-2012 Robert Hegemann - * - * 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. - */ - -/* - * HISTORY: This source file is part of LAME (see http://www.mp3dev.org) - * and was originally adapted by Conrad Sanderson <c.sanderson@me.gu.edu.au> - * from mp3info by Ricardo Cerqueira <rmc@rccn.net> to write only ID3 version 1 - * tags. Don Melton <don@blivet.com> COMPLETELY rewrote it to support version - * 2 tags and be more conformant to other standards while remaining flexible. - * - * NOTE: See http://id3.org/ for more information about ID3 tag formats. - */ - -/* $Id: id3tag.c,v 1.75.2.2 2012/01/08 23:49:58 robert Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#ifdef STDC_HEADERS -# include <stddef.h> -# include <stdlib.h> -# include <string.h> -# include <ctype.h> -#else -# ifndef HAVE_STRCHR -# define strchr index -# define strrchr rindex -# endif -char *strchr(), *strrchr(); -# ifndef HAVE_MEMCPY -# define memcpy(d, s, n) bcopy ((s), (d), (n)) -# endif -#endif - - -#include "lame.h" -#include "machine.h" -#include "encoder.h" -#include "id3tag.h" -#include "lame_global_flags.h" -#include "util.h" -#include "bitstream.h" - -#define lame_calloc(TYPE, COUNT) ((TYPE*)calloc(COUNT, sizeof(TYPE))) - -static const char *const genre_names[] = { - /* - * NOTE: The spelling of these genre names is identical to those found in - * Winamp and mp3info. - */ - "Blues", "Classic Rock", "Country", "Dance", "Disco", "Funk", "Grunge", - "Hip-Hop", "Jazz", "Metal", "New Age", "Oldies", "Other", "Pop", "R&B", - "Rap", "Reggae", "Rock", "Techno", "Industrial", "Alternative", "Ska", - "Death Metal", "Pranks", "Soundtrack", "Euro-Techno", "Ambient", "Trip-Hop", - "Vocal", "Jazz+Funk", "Fusion", "Trance", "Classical", "Instrumental", - "Acid", "House", "Game", "Sound Clip", "Gospel", "Noise", "Alternative Rock", - "Bass", "Soul", "Punk", "Space", "Meditative", "Instrumental Pop", - "Instrumental Rock", "Ethnic", "Gothic", "Darkwave", "Techno-Industrial", - "Electronic", "Pop-Folk", "Eurodance", "Dream", "Southern Rock", "Comedy", - "Cult", "Gangsta", "Top 40", "Christian Rap", "Pop/Funk", "Jungle", - "Native US", "Cabaret", "New Wave", "Psychedelic", "Rave", - "Showtunes", "Trailer", "Lo-Fi", "Tribal", "Acid Punk", "Acid Jazz", - "Polka", "Retro", "Musical", "Rock & Roll", "Hard Rock", "Folk", - "Folk-Rock", "National Folk", "Swing", "Fast Fusion", "Bebob", "Latin", - "Revival", "Celtic", "Bluegrass", "Avantgarde", "Gothic Rock", - "Progressive Rock", "Psychedelic Rock", "Symphonic Rock", "Slow Rock", - "Big Band", "Chorus", "Easy Listening", "Acoustic", "Humour", "Speech", - "Chanson", "Opera", "Chamber Music", "Sonata", "Symphony", "Booty Bass", - "Primus", "Porn Groove", "Satire", "Slow Jam", "Club", "Tango", "Samba", - "Folklore", "Ballad", "Power Ballad", "Rhythmic Soul", "Freestyle", "Duet", - "Punk Rock", "Drum Solo", "A Cappella", "Euro-House", "Dance Hall", - "Goa", "Drum & Bass", "Club-House", "Hardcore", "Terror", "Indie", - "BritPop", "Negerpunk", "Polsk Punk", "Beat", "Christian Gangsta", - "Heavy Metal", "Black Metal", "Crossover", "Contemporary Christian", - "Christian Rock", "Merengue", "Salsa", "Thrash Metal", "Anime", "JPop", - "SynthPop" -}; - -#define GENRE_NAME_COUNT \ - ((int)(sizeof genre_names / sizeof (const char *const))) - -static const int genre_alpha_map[] = { - 123, 34, 74, 73, 99, 20, 40, 26, 145, 90, 116, 41, 135, 85, 96, 138, 89, 0, - 107, 132, 65, 88, 104, 102, 97, 136, 61, 141, 32, 1, 112, 128, 57, 140, 2, - 139, 58, 3, 125, 50, 22, 4, 55, 127, 122, 120, 98, 52, 48, 54, 124, 25, 84, - 80, 115, 81, 119, 5, 30, 36, 59, 126, 38, 49, 91, 6, 129, 79, 137, 7, 35, - 100, 131, 19, 33, 46, 47, 8, 29, 146, 63, 86, 71, 45, 142, 9, 77, 82, 64, - 133, 10, 66, 39, 11, 103, 12, 75, 134, 13, 53, 62, 109, 117, 23, 108, 92, - 67, 93, 43, 121, 15, 68, 14, 16, 76, 87, 118, 17, 78, 143, 114, 110, 69, 21, - 111, 95, 105, 42, 37, 24, 56, 44, 101, 83, 94, 106, 147, 113, 18, 51, 130, - 144, 60, 70, 31, 72, 27, 28 -}; - -#define GENRE_ALPHA_COUNT ((int)(sizeof genre_alpha_map / sizeof (int))) - -#define GENRE_INDEX_OTHER 12 - - -#define FRAME_ID(a, b, c, d) \ - ( ((unsigned long)(a) << 24) \ - | ((unsigned long)(b) << 16) \ - | ((unsigned long)(c) << 8) \ - | ((unsigned long)(d) << 0) ) - -typedef enum UsualStringIDs { ID_TITLE = FRAME_ID('T', 'I', 'T', '2') - , ID_ARTIST = FRAME_ID('T', 'P', 'E', '1') - , ID_ALBUM = FRAME_ID('T', 'A', 'L', 'B') - , ID_GENRE = FRAME_ID('T', 'C', 'O', 'N') - , ID_ENCODER = FRAME_ID('T', 'S', 'S', 'E') - , ID_PLAYLENGTH = FRAME_ID('T', 'L', 'E', 'N') - , ID_COMMENT = FRAME_ID('C', 'O', 'M', 'M') /* full text string */ -} UsualStringIDs; - -typedef enum NumericStringIDs { ID_DATE = FRAME_ID('T', 'D', 'A', 'T') /* "ddMM" */ - , ID_TIME = FRAME_ID('T', 'I', 'M', 'E') /* "hhmm" */ - , ID_TPOS = FRAME_ID('T', 'P', 'O', 'S') /* '0'-'9' and '/' allowed */ - , ID_TRACK = FRAME_ID('T', 'R', 'C', 'K') /* '0'-'9' and '/' allowed */ - , ID_YEAR = FRAME_ID('T', 'Y', 'E', 'R') /* "yyyy" */ -} NumericStringIDs; - -typedef enum MiscIDs { ID_TXXX = FRAME_ID('T', 'X', 'X', 'X') - , ID_WXXX = FRAME_ID('W', 'X', 'X', 'X') - , ID_SYLT = FRAME_ID('S', 'Y', 'L', 'T') - , ID_APIC = FRAME_ID('A', 'P', 'I', 'C') - , ID_GEOB = FRAME_ID('G', 'E', 'O', 'B') - , ID_PCNT = FRAME_ID('P', 'C', 'N', 'T') - , ID_AENC = FRAME_ID('A', 'E', 'N', 'C') - , ID_LINK = FRAME_ID('L', 'I', 'N', 'K') - , ID_ENCR = FRAME_ID('E', 'N', 'C', 'R') - , ID_GRID = FRAME_ID('G', 'R', 'I', 'D') - , ID_PRIV = FRAME_ID('P', 'R', 'I', 'V') - , ID_VSLT = FRAME_ID('V', 'S', 'L', 'T') /* full text string */ - , ID_USER = FRAME_ID('U', 'S', 'E', 'R') /* full text string */ - , ID_PCST = FRAME_ID('P', 'C', 'S', 'T') /* iTunes Podcast indicator, only presence important */ - , ID_WFED = FRAME_ID('W', 'F', 'E', 'D') /* iTunes Podcast URL as TEXT FRAME !!! violates standard */ -} MiscIDs; - - -static int -frame_id_matches(int id, int mask) -{ - int result = 0, i, window = 0xff; - for (i = 0; i < 4; ++i, window <<= 8) { - int const mw = (mask & window); - int const iw = (id & window); - if (mw != 0 && mw != iw) { - result |= iw; - } - } - return result; -} - -static int -isFrameIdMatching(int id, int mask) -{ - return frame_id_matches(id, mask) == 0 ? 1 : 0; -} - -static int -test_tag_spec_flags(lame_internal_flags const *gfc, unsigned int tst) -{ - return (gfc->tag_spec.flags & tst) != 0u ? 1 : 0; -} - -#if 0 -static void -debug_tag_spec_flags(lame_internal_flags * gfc, const char* info) -{ - MSGF(gfc, "%s\n", info); - MSGF(gfc, "CHANGED_FLAG : %d\n", test_tag_spec_flags(gfc, CHANGED_FLAG )); - MSGF(gfc, "ADD_V2_FLAG : %d\n", test_tag_spec_flags(gfc, ADD_V2_FLAG )); - MSGF(gfc, "V1_ONLY_FLAG : %d\n", test_tag_spec_flags(gfc, V1_ONLY_FLAG )); - MSGF(gfc, "V2_ONLY_FLAG : %d\n", test_tag_spec_flags(gfc, V2_ONLY_FLAG )); - MSGF(gfc, "SPACE_V1_FLAG : %d\n", test_tag_spec_flags(gfc, SPACE_V1_FLAG)); - MSGF(gfc, "PAD_V2_FLAG : %d\n", test_tag_spec_flags(gfc, PAD_V2_FLAG )); -} -#endif - - - -static int -id3v2_add_ucs2(lame_t gfp, uint32_t frame_id, char const *lang, unsigned short const *desc, unsigned short const *text); -static int -id3v2_add_latin1(lame_t gfp, uint32_t frame_id, char const *lang, char const *desc, char const *text); - -static void -copyV1ToV2(lame_t gfp, int frame_id, char const *s) -{ - lame_internal_flags *gfc = gfp != 0 ? gfp->internal_flags : 0; - if (gfc != 0) { - unsigned int flags = gfc->tag_spec.flags; - id3v2_add_latin1(gfp, frame_id, "XXX", 0, s); - gfc->tag_spec.flags = flags; -#if 0 - debug_tag_spec_flags(gfc, "copyV1ToV2"); -#endif - } -} - - -static void -id3v2AddLameVersion(lame_t gfp) -{ - char buffer[1024]; - const char *b = get_lame_os_bitness(); - const char *v = get_lame_version(); - const char *u = get_lame_url(); - const size_t lenb = strlen(b); - - if (lenb > 0) { - sprintf(buffer, "LAME %s version %s (%s)", b, v, u); - } - else { - sprintf(buffer, "LAME version %s (%s)", v, u); - } - copyV1ToV2(gfp, ID_ENCODER, buffer); -} - -static void -id3v2AddAudioDuration(lame_t gfp, double ms) -{ - lame_internal_flags *gfc = gfp != 0 ? gfp->internal_flags : 0; - SessionConfig_t const *const cfg = &gfc->cfg; - char buffer[1024]; - double const max_ulong = MAX_U_32_NUM; - unsigned long playlength_ms; - - ms *= 1000; - ms /= cfg->samplerate_in; - if (ms > max_ulong) { - playlength_ms = max_ulong; - } - else if (ms < 0) { - playlength_ms = 0; - } - else { - playlength_ms = ms; - } - sprintf(buffer, "%lu", playlength_ms); - copyV1ToV2(gfp, ID_PLAYLENGTH, buffer); -} - -void -id3tag_genre_list(void (*handler) (int, const char *, void *), void *cookie) -{ - if (handler) { - int i; - for (i = 0; i < GENRE_NAME_COUNT; ++i) { - if (i < GENRE_ALPHA_COUNT) { - int j = genre_alpha_map[i]; - handler(j, genre_names[j], cookie); - } - } - } -} - -#define GENRE_NUM_UNKNOWN 255 - - - -void -id3tag_init(lame_t gfp) -{ - lame_internal_flags *gfc = gfp->internal_flags; - free_id3tag(gfc); - memset(&gfc->tag_spec, 0, sizeof gfc->tag_spec); - gfc->tag_spec.genre_id3v1 = GENRE_NUM_UNKNOWN; - gfc->tag_spec.padding_size = 128; - id3v2AddLameVersion(gfp); -} - - - -void -id3tag_add_v2(lame_t gfp) -{ - lame_internal_flags *gfc = gfp->internal_flags; - gfc->tag_spec.flags &= ~V1_ONLY_FLAG; - gfc->tag_spec.flags |= ADD_V2_FLAG; -} - -void -id3tag_v1_only(lame_t gfp) -{ - lame_internal_flags *gfc = gfp->internal_flags; - gfc->tag_spec.flags &= ~(ADD_V2_FLAG | V2_ONLY_FLAG); - gfc->tag_spec.flags |= V1_ONLY_FLAG; -} - -void -id3tag_v2_only(lame_t gfp) -{ - lame_internal_flags *gfc = gfp->internal_flags; - gfc->tag_spec.flags &= ~V1_ONLY_FLAG; - gfc->tag_spec.flags |= V2_ONLY_FLAG; -} - -void -id3tag_space_v1(lame_t gfp) -{ - lame_internal_flags *gfc = gfp->internal_flags; - gfc->tag_spec.flags &= ~V2_ONLY_FLAG; - gfc->tag_spec.flags |= SPACE_V1_FLAG; -} - -void -id3tag_pad_v2(lame_t gfp) -{ - id3tag_set_pad(gfp, 128); -} - -void -id3tag_set_pad(lame_t gfp, size_t n) -{ - lame_internal_flags *gfc = gfp->internal_flags; - gfc->tag_spec.flags &= ~V1_ONLY_FLAG; - gfc->tag_spec.flags |= PAD_V2_FLAG; - gfc->tag_spec.flags |= ADD_V2_FLAG; - gfc->tag_spec.padding_size = (unsigned int)n; -} - -static int -hasUcs2ByteOrderMarker(unsigned short bom) -{ - if (bom == 0xFFFEu || bom == 0xFEFFu) { - return 1; - } - return 0; -} - - -static unsigned short -swap_bytes(unsigned short w) -{ - return (0xff00u & (w << 8)) | (0x00ffu & (w >> 8)); -} - - -static unsigned short -toLittleEndian(unsigned short bom, unsigned short c) -{ - if (bom == 0xFFFEu) { - return swap_bytes(c); - } - return c; -} - -static unsigned short -fromLatin1Char(const unsigned short* s, unsigned short c) -{ - if (s[0] == 0xFFFEu) { - return swap_bytes(c); - } - return c; -} - - -static size_t -local_strdup(char **dst, const char *src) -{ - if (dst == 0) { - return 0; - } - free(*dst); - *dst = 0; - if (src != 0) { - size_t n; - for (n = 0; src[n] != 0; ++n) { /* calc src string length */ - } - if (n > 0) { /* string length without zero termination */ - assert(sizeof(*src) == sizeof(**dst)); - *dst = lame_calloc(char, n + 1); - if (*dst != 0) { - memcpy(*dst, src, n * sizeof(**dst)); - (*dst)[n] = 0; - return n; - } - } - } - return 0; -} - -static size_t -local_ucs2_strdup(unsigned short **dst, unsigned short const *src) -{ - if (dst == 0) { - return 0; - } - free(*dst); /* free old string pointer */ - *dst = 0; - if (src != 0) { - size_t n; - for (n = 0; src[n] != 0; ++n) { /* calc src string length */ - } - if (n > 0) { /* string length without zero termination */ - assert(sizeof(*src) >= 2); - assert(sizeof(*src) == sizeof(**dst)); - *dst = lame_calloc(unsigned short, n + 1); - if (*dst != 0) { - memcpy(*dst, src, n * sizeof(**dst)); - (*dst)[n] = 0; - return n; - } - } - } - return 0; -} - - -static size_t -local_ucs2_strlen(unsigned short const *s) -{ - size_t n = 0; - if (s != 0) { - while (*s++) { - ++n; - } - } - return n; -} - - -static size_t -local_ucs2_substr(unsigned short** dst, unsigned short const* src, size_t start, size_t end) -{ - size_t const len = 1 + 1 + ((start < end) ? (end - start) : 0); - size_t n = 0; - unsigned short *ptr = lame_calloc(unsigned short, len); - *dst = ptr; - if (ptr == 0 || src == 0) { - return 0; - } - if (hasUcs2ByteOrderMarker(src[0])) { - ptr[n++] = src[0]; - if (start == 0) { - ++start; - } - } - while (start < end) { - ptr[n++] = src[start++]; - } - ptr[n] = 0; - return n; -} - -static int -local_ucs2_pos(unsigned short const* str, unsigned short c) -{ - int i; - for (i = 0; str != 0 && str[i] != 0; ++i) { - if (str[i] == c) { - return i; - } - } - return -1; -} - -static int -local_char_pos(char const* str, char c) -{ - int i; - for (i = 0; str != 0 && str[i] != 0; ++i) { - if (str[i] == c) { - return i; - } - } - return -1; -} - -static int -maybeLatin1(unsigned short const* text) -{ - if (text) { - unsigned short bom = *text++; - while (*text) { - unsigned short c = toLittleEndian(bom, *text++); - if (c > 0x00fe) return 0; - } - } - return 1; -} - -static int searchGenre(char const* genre); -static int sloppySearchGenre(char const* genre); - -static int -lookupGenre(char const* genre) -{ - char *str; - int num = strtol(genre, &str, 10); - /* is the input a string or a valid number? */ - if (*str) { - num = searchGenre(genre); - if (num == GENRE_NAME_COUNT) { - num = sloppySearchGenre(genre); - } - if (num == GENRE_NAME_COUNT) { - return -2; /* no common genre text found */ - } - } - else { - if ((num < 0) || (num >= GENRE_NAME_COUNT)) { - return -1; /* number unknown */ - } - } - return num; -} - -static unsigned char * -writeLoBytes(unsigned char *frame, unsigned short const *str, size_t n); - -static char* -local_strdup_utf16_to_latin1(unsigned short const* utf16) -{ - size_t len = local_ucs2_strlen(utf16); - unsigned char* latin1 = lame_calloc(unsigned char, len+1); - writeLoBytes(latin1, utf16, len); - return (char*)latin1; -} - - -static int -id3tag_set_genre_utf16(lame_t gfp, unsigned short const* text) -{ - lame_internal_flags* gfc = gfp->internal_flags; - int ret; - if (text == 0) { - return -3; - } - if (!hasUcs2ByteOrderMarker(text[0])) { - return -3; - } - if (maybeLatin1(text)) { - char* latin1 = local_strdup_utf16_to_latin1(text); - int num = lookupGenre(latin1); - free(latin1); - if (num == -1) return -1; /* number out of range */ - if (num >= 0) { /* common genre found */ - gfc->tag_spec.flags |= CHANGED_FLAG; - gfc->tag_spec.genre_id3v1 = num; - copyV1ToV2(gfp, ID_GENRE, genre_names[num]); - return 0; - } - } - ret = id3v2_add_ucs2(gfp, ID_GENRE, 0, 0, text); - if (ret == 0) { - gfc->tag_spec.flags |= CHANGED_FLAG; - gfc->tag_spec.genre_id3v1 = GENRE_INDEX_OTHER; - } - return ret; -} - -/* -Some existing options for ID3 tag can be specified by --tv option -as follows. ---tt <value>, --tv TIT2=value ---ta <value>, --tv TPE1=value ---tl <value>, --tv TALB=value ---ty <value>, --tv TYER=value ---tn <value>, --tv TRCK=value ---tg <value>, --tv TCON=value -(although some are not exactly same)*/ - -int -id3tag_set_albumart(lame_t gfp, const char *image, size_t size) -{ - int mimetype = 0; - unsigned char const *data = (unsigned char const *) image; - lame_internal_flags *gfc = gfp->internal_flags; - - /* determine MIME type from the actual image data */ - if (2 < size && data[0] == 0xFF && data[1] == 0xD8) { - mimetype = MIMETYPE_JPEG; - } - else if (4 < size && data[0] == 0x89 && strncmp((const char *) &data[1], "PNG", 3) == 0) { - mimetype = MIMETYPE_PNG; - } - else if (4 < size && strncmp((const char *) data, "GIF8", 4) == 0) { - mimetype = MIMETYPE_GIF; - } - else { - return -1; - } - if (gfc->tag_spec.albumart != 0) { - free(gfc->tag_spec.albumart); - gfc->tag_spec.albumart = 0; - gfc->tag_spec.albumart_size = 0; - gfc->tag_spec.albumart_mimetype = MIMETYPE_NONE; - } - if (size < 1) { - return 0; - } - gfc->tag_spec.albumart = lame_calloc(unsigned char, size); - if (gfc->tag_spec.albumart != 0) { - memcpy(gfc->tag_spec.albumart, image, size); - gfc->tag_spec.albumart_size = (unsigned int)size; - gfc->tag_spec.albumart_mimetype = mimetype; - gfc->tag_spec.flags |= CHANGED_FLAG; - id3tag_add_v2(gfp); - } - return 0; -} - -static unsigned char * -set_4_byte_value(unsigned char *bytes, uint32_t value) -{ - int i; - for (i = 3; i >= 0; --i) { - bytes[i] = value & 0xffUL; - value >>= 8; - } - return bytes + 4; -} - -static uint32_t -toID3v2TagId(char const *s) -{ - unsigned int i, x = 0; - if (s == 0) { - return 0; - } - for (i = 0; i < 4 && s[i] != 0; ++i) { - char const c = s[i]; - unsigned int const u = 0x0ff & c; - x <<= 8; - x |= u; - if (c < 'A' || 'Z' < c) { - if (c < '0' || '9' < c) { - return 0; - } - } - } - return x; -} - -static uint32_t -toID3v2TagId_ucs2(unsigned short const *s) -{ - unsigned int i, x = 0; - unsigned short bom = 0; - if (s == 0) { - return 0; - } - bom = s[0]; - if (hasUcs2ByteOrderMarker(bom)) { - ++s; - } - for (i = 0; i < 4 && s[i] != 0; ++i) { - unsigned short const c = toLittleEndian(bom, s[i]); - if (c < 'A' || 'Z' < c) { - if (c < '0' || '9' < c) { - return 0; - } - } - x <<= 8; - x |= c; - } - return x; -} - -#if 0 -static int -isNumericString(uint32_t frame_id) -{ - switch (frame_id) { - case ID_DATE: - case ID_TIME: - case ID_TPOS: - case ID_TRACK: - case ID_YEAR: - return 1; - } - return 0; -} -#endif - -static int -isMultiFrame(uint32_t frame_id) -{ - switch (frame_id) { - case ID_TXXX: - case ID_WXXX: - case ID_COMMENT: - case ID_SYLT: - case ID_APIC: - case ID_GEOB: - case ID_PCNT: - case ID_AENC: - case ID_LINK: - case ID_ENCR: - case ID_GRID: - case ID_PRIV: - return 1; - } - return 0; -} - -#if 0 -static int -isFullTextString(int frame_id) -{ - switch (frame_id) { - case ID_VSLT: - case ID_COMMENT: - return 1; - } - return 0; -} -#endif - -static FrameDataNode * -findNode(id3tag_spec const *tag, uint32_t frame_id, FrameDataNode const *last) -{ - FrameDataNode *node = last ? last->nxt : tag->v2_head; - while (node != 0) { - if (node->fid == frame_id) { - return node; - } - node = node->nxt; - } - return 0; -} - -static void -appendNode(id3tag_spec * tag, FrameDataNode * node) -{ - if (tag->v2_tail == 0 || tag->v2_head == 0) { - tag->v2_head = node; - tag->v2_tail = node; - } - else { - tag->v2_tail->nxt = node; - tag->v2_tail = node; - } -} - -static void -setLang(char *dst, char const *src) -{ - int i; - if (src == 0 || src[0] == 0) { - dst[0] = 'X'; - dst[1] = 'X'; - dst[2] = 'X'; - } - else { - for (i = 0; i < 3 && src && *src; ++i) { - dst[i] = src[i]; - } - for (; i < 3; ++i) { - dst[i] = ' '; - } - } -} - -static int -isSameLang(char const *l1, char const *l2) -{ - char d[3]; - int i; - setLang(d, l2); - for (i = 0; i < 3; ++i) { - char a = tolower(l1[i]); - char b = tolower(d[i]); - if (a < ' ') - a = ' '; - if (b < ' ') - b = ' '; - if (a != b) { - return 0; - } - } - return 1; -} - -static int -isSameDescriptor(FrameDataNode const *node, char const *dsc) -{ - size_t i; - if (node->dsc.enc == 1 && node->dsc.dim > 0) { - return 0; - } - for (i = 0; i < node->dsc.dim; ++i) { - if (!dsc || node->dsc.ptr.l[i] != dsc[i]) { - return 0; - } - } - return 1; -} - -static int -isSameDescriptorUcs2(FrameDataNode const *node, unsigned short const *dsc) -{ - size_t i; - if (node->dsc.enc != 1 && node->dsc.dim > 0) { - return 0; - } - for (i = 0; i < node->dsc.dim; ++i) { - if (!dsc || node->dsc.ptr.u[i] != dsc[i]) { - return 0; - } - } - return 1; -} - -static int -id3v2_add_ucs2(lame_t gfp, uint32_t frame_id, char const *lang, unsigned short const *desc, unsigned short const *text) -{ - lame_internal_flags *gfc = gfp != 0 ? gfp->internal_flags : 0; - if (gfc != 0) { - FrameDataNode *node = findNode(&gfc->tag_spec, frame_id, 0); - if (isMultiFrame(frame_id)) { - while (node) { - if (isSameLang(node->lng, lang)) { - if (isSameDescriptorUcs2(node, desc)) { - break; - } - } - node = findNode(&gfc->tag_spec, frame_id, node); - } - } - if (node == 0) { - node = lame_calloc(FrameDataNode, 1); - if (node == 0) { - return -254; /* memory problem */ - } - appendNode(&gfc->tag_spec, node); - } - node->fid = frame_id; - setLang(node->lng, lang); - node->dsc.dim = local_ucs2_strdup(&node->dsc.ptr.u, desc); - node->dsc.enc = 1; - node->txt.dim = local_ucs2_strdup(&node->txt.ptr.u, text); - node->txt.enc = 1; - gfc->tag_spec.flags |= (CHANGED_FLAG | ADD_V2_FLAG); - return 0; - } - return -255; -} - -static int -id3v2_add_latin1(lame_t gfp, uint32_t frame_id, char const *lang, char const *desc, char const *text) -{ - lame_internal_flags *gfc = gfp != 0 ? gfp->internal_flags : 0; - if (gfc != 0) { - FrameDataNode *node = findNode(&gfc->tag_spec, frame_id, 0); - if (isMultiFrame(frame_id)) { - while (node) { - if (isSameLang(node->lng, lang)) { - if (isSameDescriptor(node, desc)) { - break; - } - } - node = findNode(&gfc->tag_spec, frame_id, node); - } - } - if (node == 0) { - node = lame_calloc(FrameDataNode, 1); - if (node == 0) { - return -254; /* memory problem */ - } - appendNode(&gfc->tag_spec, node); - } - node->fid = frame_id; - setLang(node->lng, lang); - node->dsc.dim = local_strdup(&node->dsc.ptr.l, desc); - node->dsc.enc = 0; - node->txt.dim = local_strdup(&node->txt.ptr.l, text); - node->txt.enc = 0; - gfc->tag_spec.flags |= (CHANGED_FLAG | ADD_V2_FLAG); - return 0; - } - return -255; -} - - -static int -id3tag_set_userinfo_latin1(lame_t gfp, uint32_t id, char const *fieldvalue) -{ - char const separator = '='; - int rc = -7; - int a = local_char_pos(fieldvalue, separator); - if (a >= 0) { - char* dup = 0; - local_strdup(&dup, fieldvalue); - dup[a] = 0; - rc = id3v2_add_latin1(gfp, id, "XXX", dup, dup+a+1); - free(dup); - } - return rc; -} - -static int -id3tag_set_userinfo_ucs2(lame_t gfp, uint32_t id, unsigned short const *fieldvalue) -{ - unsigned short const separator = fromLatin1Char(fieldvalue,'='); - int rc = -7; - size_t b = local_ucs2_strlen(fieldvalue); - int a = local_ucs2_pos(fieldvalue, separator); - if (a >= 0) { - unsigned short* dsc = 0, *val = 0; - local_ucs2_substr(&dsc, fieldvalue, 0, a); - local_ucs2_substr(&val, fieldvalue, a+1, b); - rc = id3v2_add_ucs2(gfp, id, "XXX", dsc, val); - free(dsc); - free(val); - } - return rc; -} - -int -id3tag_set_textinfo_utf16(lame_t gfp, char const *id, unsigned short const *text) -{ - uint32_t const frame_id = toID3v2TagId(id); - if (frame_id == 0) { - return -1; - } - if (text == 0) { - return 0; - } - if (!hasUcs2ByteOrderMarker(text[0])) { - return -3; /* BOM missing */ - } - if (frame_id == ID_TXXX || frame_id == ID_WXXX || frame_id == ID_COMMENT) { - return id3tag_set_userinfo_ucs2(gfp, frame_id, text); - } - if (frame_id == ID_GENRE) { - return id3tag_set_genre_utf16(gfp, text); - } - if (frame_id == ID_PCST) { - return id3v2_add_ucs2(gfp, frame_id, 0, 0, text); - } - if (frame_id == ID_USER) { - return id3v2_add_ucs2(gfp, frame_id, "XXX", text, 0); - } - if (frame_id == ID_WFED) { - return id3v2_add_ucs2(gfp, frame_id, 0, text, 0); /* iTunes expects WFED to be a text frame */ - } - if (isFrameIdMatching(frame_id, FRAME_ID('T', 0, 0, 0)) - ||isFrameIdMatching(frame_id, FRAME_ID('W', 0, 0, 0))) { -#if 0 - if (isNumericString(frame_id)) { - return -2; /* must be Latin-1 encoded */ - } -#endif - return id3v2_add_ucs2(gfp, frame_id, 0, 0, text); - } - return -255; /* not supported by now */ -} - -extern int -id3tag_set_textinfo_ucs2(lame_t gfp, char const *id, unsigned short const *text); - -int -id3tag_set_textinfo_ucs2(lame_t gfp, char const *id, unsigned short const *text) -{ - return id3tag_set_textinfo_utf16(gfp, id, text); -} - -int -id3tag_set_textinfo_latin1(lame_t gfp, char const *id, char const *text) -{ - uint32_t const frame_id = toID3v2TagId(id); - if (frame_id == 0) { - return -1; - } - if (text == 0) { - return 0; - } - if (frame_id == ID_TXXX || frame_id == ID_WXXX || frame_id == ID_COMMENT) { - return id3tag_set_userinfo_latin1(gfp, frame_id, text); - } - if (frame_id == ID_GENRE) { - return id3tag_set_genre(gfp, text); - } - if (frame_id == ID_PCST) { - return id3v2_add_latin1(gfp, frame_id, 0, 0, text); - } - if (frame_id == ID_USER) { - return id3v2_add_latin1(gfp, frame_id, "XXX", text, 0); - } - if (frame_id == ID_WFED) { - return id3v2_add_latin1(gfp, frame_id, 0, text, 0); /* iTunes expects WFED to be a text frame */ - } - if (isFrameIdMatching(frame_id, FRAME_ID('T', 0, 0, 0)) - ||isFrameIdMatching(frame_id, FRAME_ID('W', 0, 0, 0))) { - return id3v2_add_latin1(gfp, frame_id, 0, 0, text); - } - return -255; /* not supported by now */ -} - - -int -id3tag_set_comment_latin1(lame_t gfp, char const *lang, char const *desc, char const *text) -{ - return id3v2_add_latin1(gfp, ID_COMMENT, lang, desc, text); -} - - -int -id3tag_set_comment_utf16(lame_t gfp, char const *lang, unsigned short const *desc, unsigned short const *text) -{ - return id3v2_add_ucs2(gfp, ID_COMMENT, lang, desc, text); -} - -extern int -id3tag_set_comment_ucs2(lame_t gfp, char const *lang, unsigned short const *desc, unsigned short const *text); - - -int -id3tag_set_comment_ucs2(lame_t gfp, char const *lang, unsigned short const *desc, unsigned short const *text) -{ - return id3tag_set_comment_utf16(gfp, lang, desc, text); -} - - -void -id3tag_set_title(lame_t gfp, const char *title) -{ - lame_internal_flags *gfc = gfp != 0 ? gfp->internal_flags : 0; - if (gfc && title && *title) { - local_strdup(&gfc->tag_spec.title, title); - gfc->tag_spec.flags |= CHANGED_FLAG; - copyV1ToV2(gfp, ID_TITLE, title); - } -} - -void -id3tag_set_artist(lame_t gfp, const char *artist) -{ - lame_internal_flags *gfc = gfp != 0 ? gfp->internal_flags : 0; - if (gfc && artist && *artist) { - local_strdup(&gfc->tag_spec.artist, artist); - gfc->tag_spec.flags |= CHANGED_FLAG; - copyV1ToV2(gfp, ID_ARTIST, artist); - } -} - -void -id3tag_set_album(lame_t gfp, const char *album) -{ - lame_internal_flags *gfc = gfp != 0 ? gfp->internal_flags : 0; - if (gfc && album && *album) { - local_strdup(&gfc->tag_spec.album, album); - gfc->tag_spec.flags |= CHANGED_FLAG; - copyV1ToV2(gfp, ID_ALBUM, album); - } -} - -void -id3tag_set_year(lame_t gfp, const char *year) -{ - lame_internal_flags *gfc = gfp != 0 ? gfp->internal_flags : 0; - if (gfc && year && *year) { - int num = atoi(year); - if (num < 0) { - num = 0; - } - /* limit a year to 4 digits so it fits in a version 1 tag */ - if (num > 9999) { - num = 9999; - } - if (num) { - gfc->tag_spec.year = num; - gfc->tag_spec.flags |= CHANGED_FLAG; - } - copyV1ToV2(gfp, ID_YEAR, year); - } -} - -void -id3tag_set_comment(lame_t gfp, const char *comment) -{ - lame_internal_flags *gfc = gfp != 0 ? gfp->internal_flags : 0; - if (gfc && comment && *comment) { - local_strdup(&gfc->tag_spec.comment, comment); - gfc->tag_spec.flags |= CHANGED_FLAG; - { - uint32_t const flags = gfc->tag_spec.flags; - id3v2_add_latin1(gfp, ID_COMMENT, "XXX", "", comment); - gfc->tag_spec.flags = flags; - } - } -} - -int -id3tag_set_track(lame_t gfp, const char *track) -{ - char const *trackcount; - lame_internal_flags *gfc = gfp != 0 ? gfp->internal_flags : 0; - int ret = 0; - - if (gfc && track && *track) { - int num = atoi(track); - /* check for valid ID3v1 track number range */ - if (num < 1 || num > 255) { - num = 0; - ret = -1; /* track number out of ID3v1 range, ignored for ID3v1 */ - gfc->tag_spec.flags |= (CHANGED_FLAG | ADD_V2_FLAG); - } - if (num) { - gfc->tag_spec.track_id3v1 = num; - gfc->tag_spec.flags |= CHANGED_FLAG; - } - /* Look for the total track count after a "/", same restrictions */ - trackcount = strchr(track, '/'); - if (trackcount && *trackcount) { - gfc->tag_spec.flags |= (CHANGED_FLAG | ADD_V2_FLAG); - } - copyV1ToV2(gfp, ID_TRACK, track); - } - return ret; -} - -/* would use real "strcasecmp" but it isn't portable */ -static int -local_strcasecmp(const char *s1, const char *s2) -{ - unsigned char c1; - unsigned char c2; - do { - c1 = tolower(*s1); - c2 = tolower(*s2); - if (!c1) { - break; - } - ++s1; - ++s2; - } while (c1 == c2); - return c1 - c2; -} - - -static -const char* nextUpperAlpha(const char* p, char x) -{ - char c; - for(c = toupper(*p); *p != 0; c = toupper(*++p)) { - if ('A' <= c && c <= 'Z') { - if (c != x) { - return p; - } - } - } - return p; -} - - -static int -sloppyCompared(const char* p, const char* q) -{ - char cp, cq; - p = nextUpperAlpha(p, 0); - q = nextUpperAlpha(q, 0); - cp = toupper(*p); - cq = toupper(*q); - while (cp == cq) { - if (cp == 0) { - return 1; - } - if (p[1] == '.') { /* some abbrevation */ - while (*q && *q++ != ' ') { - } - } - p = nextUpperAlpha(p, cp); - q = nextUpperAlpha(q, cq); - cp = toupper(*p); - cq = toupper(*q); - } - return 0; -} - - -static int -sloppySearchGenre(const char *genre) -{ - int i; - for (i = 0; i < GENRE_NAME_COUNT; ++i) { - if (sloppyCompared(genre, genre_names[i])) { - return i; - } - } - return GENRE_NAME_COUNT; -} - - -static int -searchGenre(const char* genre) -{ - int i; - for (i = 0; i < GENRE_NAME_COUNT; ++i) { - if (!local_strcasecmp(genre, genre_names[i])) { - return i; - } - } - return GENRE_NAME_COUNT; -} - - -int -id3tag_set_genre(lame_t gfp, const char *genre) -{ - lame_internal_flags *gfc = gfp->internal_flags; - int ret = 0; - if (genre && *genre) { - int const num = lookupGenre(genre); - if (num == -1) return num; - gfc->tag_spec.flags |= CHANGED_FLAG; - if (num >= 0) { - gfc->tag_spec.genre_id3v1 = num; - genre = genre_names[num]; - } - else { - gfc->tag_spec.genre_id3v1 = GENRE_INDEX_OTHER; - gfc->tag_spec.flags |= ADD_V2_FLAG; - } - copyV1ToV2(gfp, ID_GENRE, genre); - } - return ret; -} - - -static size_t -sizeOfNode(FrameDataNode const *node) -{ - size_t n = 0; - if (node) { - n = 10; /* header size */ - n += 1; /* text encoding flag */ - switch (node->txt.enc) { - default: - case 0: - if (node->dsc.dim > 0) { - n += node->dsc.dim + 1; - } - n += node->txt.dim; - break; - case 1: - if (node->dsc.dim > 0) { - n += (node->dsc.dim+1) * 2; - } - n += node->txt.dim * 2; - break; - } - } - return n; -} - -static size_t -sizeOfCommentNode(FrameDataNode const *node) -{ - size_t n = 0; - if (node) { - n = 10; /* header size */ - n += 1; /* text encoding flag */ - n += 3; /* language */ - switch (node->dsc.enc) { - default: - case 0: - n += 1 + node->dsc.dim; - break; - case 1: - n += 2 + node->dsc.dim * 2; - break; - } - switch (node->txt.enc) { - default: - case 0: - n += node->txt.dim; - break; - case 1: - n += node->txt.dim * 2; - break; - } - } - return n; -} - -static size_t -sizeOfWxxxNode(FrameDataNode const *node) -{ - size_t n = 0; - if (node) { - n = 10; /* header size */ - if (node->dsc.dim > 0) { - n += 1; /* text encoding flag */ - switch (node->dsc.enc) { - default: - case 0: - n += 1 + node->dsc.dim; - break; - case 1: - n += 2 + node->dsc.dim * 2; - break; - } - } - if (node->txt.dim > 0) { - switch (node->txt.enc) { - default: - case 0: - n += node->txt.dim; - break; - case 1: - n += node->txt.dim - 1; /* UCS2 -> Latin1, skip BOM */ - break; - } - } - } - return n; -} - -static unsigned char * -writeChars(unsigned char *frame, char const *str, size_t n) -{ - while (n--) { - *frame++ = *str++; - } - return frame; -} - -static unsigned char * -writeUcs2s(unsigned char *frame, unsigned short const *str, size_t n) -{ - if (n > 0) { - unsigned short const bom = *str; - while (n--) { - unsigned short const c = toLittleEndian(bom, *str++); - *frame++ = 0x00ffu & c; - *frame++ = 0x00ffu & (c >> 8); - } - } - return frame; -} - -static unsigned char * -writeLoBytes(unsigned char *frame, unsigned short const *str, size_t n) -{ - if (n > 0) { - unsigned short const bom = *str; - if (hasUcs2ByteOrderMarker(bom)) { - str++; n--; /* skip BOM */ - } - while (n--) { - unsigned short const c = toLittleEndian(bom, *str++); - if (c < 0x0020u || 0x00ffu < c) { - *frame++ = 0x0020; /* blank */ - } - else { - *frame++ = c; - } - } - } - return frame; -} - -static unsigned char * -set_frame_comment(unsigned char *frame, FrameDataNode const *node) -{ - size_t const n = sizeOfCommentNode(node); - if (n > 10) { - frame = set_4_byte_value(frame, node->fid); - frame = set_4_byte_value(frame, (uint32_t) (n - 10)); - /* clear 2-byte header flags */ - *frame++ = 0; - *frame++ = 0; - /* encoding descriptor byte */ - *frame++ = node->txt.enc == 1 ? 1 : 0; - /* 3 bytes language */ - *frame++ = node->lng[0]; - *frame++ = node->lng[1]; - *frame++ = node->lng[2]; - /* descriptor with zero byte(s) separator */ - if (node->dsc.enc != 1) { - frame = writeChars(frame, node->dsc.ptr.l, node->dsc.dim); - *frame++ = 0; - } - else { - frame = writeUcs2s(frame, node->dsc.ptr.u, node->dsc.dim); - *frame++ = 0; - *frame++ = 0; - } - /* comment full text */ - if (node->txt.enc != 1) { - frame = writeChars(frame, node->txt.ptr.l, node->txt.dim); - } - else { - frame = writeUcs2s(frame, node->txt.ptr.u, node->txt.dim); - } - } - return frame; -} - -static unsigned char * -set_frame_custom2(unsigned char *frame, FrameDataNode const *node) -{ - size_t const n = sizeOfNode(node); - if (n > 10) { - frame = set_4_byte_value(frame, node->fid); - frame = set_4_byte_value(frame, (unsigned long) (n - 10)); - /* clear 2-byte header flags */ - *frame++ = 0; - *frame++ = 0; - /* clear 1 encoding descriptor byte to indicate ISO-8859-1 format */ - *frame++ = node->txt.enc == 1 ? 1 : 0; - if (node->dsc.dim > 0) { - if (node->dsc.enc != 1) { - frame = writeChars(frame, node->dsc.ptr.l, node->dsc.dim); - *frame++ = 0; - } - else { - frame = writeUcs2s(frame, node->dsc.ptr.u, node->dsc.dim); - *frame++ = 0; - *frame++ = 0; - } - } - if (node->txt.enc != 1) { - frame = writeChars(frame, node->txt.ptr.l, node->txt.dim); - } - else { - frame = writeUcs2s(frame, node->txt.ptr.u, node->txt.dim); - } - } - return frame; -} - -static unsigned char * -set_frame_wxxx(unsigned char *frame, FrameDataNode const *node) -{ - size_t const n = sizeOfWxxxNode(node); - if (n > 10) { - frame = set_4_byte_value(frame, node->fid); - frame = set_4_byte_value(frame, (unsigned long) (n - 10)); - /* clear 2-byte header flags */ - *frame++ = 0; - *frame++ = 0; - if (node->dsc.dim > 0) { - /* clear 1 encoding descriptor byte to indicate ISO-8859-1 format */ - *frame++ = node->dsc.enc == 1 ? 1 : 0; - if (node->dsc.enc != 1) { - frame = writeChars(frame, node->dsc.ptr.l, node->dsc.dim); - *frame++ = 0; - } - else { - frame = writeUcs2s(frame, node->dsc.ptr.u, node->dsc.dim); - *frame++ = 0; - *frame++ = 0; - } - } - if (node->txt.enc != 1) { - frame = writeChars(frame, node->txt.ptr.l, node->txt.dim); - } - else { - frame = writeLoBytes(frame, node->txt.ptr.u, node->txt.dim); - } - } - return frame; -} - -static unsigned char * -set_frame_apic(unsigned char *frame, const char *mimetype, const unsigned char *data, size_t size) -{ - /* ID3v2.3 standard APIC frame: - * <Header for 'Attached picture', ID: "APIC"> - * Text encoding $xx - * MIME type <text string> $00 - * Picture type $xx - * Description <text string according to encoding> $00 (00) - * Picture data <binary data> - */ - if (mimetype && data && size) { - frame = set_4_byte_value(frame, FRAME_ID('A', 'P', 'I', 'C')); - frame = set_4_byte_value(frame, (unsigned long) (4 + strlen(mimetype) + size)); - /* clear 2-byte header flags */ - *frame++ = 0; - *frame++ = 0; - /* clear 1 encoding descriptor byte to indicate ISO-8859-1 format */ - *frame++ = 0; - /* copy mime_type */ - while (*mimetype) { - *frame++ = *mimetype++; - } - *frame++ = 0; - /* set picture type to 0 */ - *frame++ = 0; - /* empty description field */ - *frame++ = 0; - /* copy the image data */ - while (size--) { - *frame++ = *data++; - } - } - return frame; -} - -int -id3tag_set_fieldvalue(lame_t gfp, const char *fieldvalue) -{ - if (fieldvalue && *fieldvalue) { - if (strlen(fieldvalue) < 5 || fieldvalue[4] != '=') { - return -1; - } - return id3tag_set_textinfo_latin1(gfp, fieldvalue, &fieldvalue[5]); - } - return 0; -} - -int -id3tag_set_fieldvalue_utf16(lame_t gfp, const unsigned short *fieldvalue) -{ - if (fieldvalue && *fieldvalue) { - size_t dx = hasUcs2ByteOrderMarker(fieldvalue[0]); - unsigned short const separator = fromLatin1Char(fieldvalue, '='); - char fid[5] = {0,0,0,0,0}; - uint32_t const frame_id = toID3v2TagId_ucs2(fieldvalue); - if (local_ucs2_strlen(fieldvalue) < (5+dx) || fieldvalue[4+dx] != separator) { - return -1; - } - fid[0] = (frame_id >> 24) & 0x0ff; - fid[1] = (frame_id >> 16) & 0x0ff; - fid[2] = (frame_id >> 8) & 0x0ff; - fid[3] = frame_id & 0x0ff; - if (frame_id != 0) { - unsigned short* txt = 0; - int rc; - local_ucs2_substr(&txt, fieldvalue, dx+5, local_ucs2_strlen(fieldvalue)); - rc = id3tag_set_textinfo_utf16(gfp, fid, txt); - free(txt); - return rc; - } - } - return -1; -} - -extern int -id3tag_set_fieldvalue_ucs2(lame_t gfp, const unsigned short *fieldvalue); - -int -id3tag_set_fieldvalue_ucs2(lame_t gfp, const unsigned short *fieldvalue) -{ - return id3tag_set_fieldvalue_utf16(gfp, fieldvalue); -} - -size_t -lame_get_id3v2_tag(lame_t gfp, unsigned char *buffer, size_t size) -{ - lame_internal_flags *gfc; - if (gfp == 0) { - return 0; - } - gfc = gfp->internal_flags; - if (gfc == 0) { - return 0; - } - if (test_tag_spec_flags(gfc, V1_ONLY_FLAG)) { - return 0; - } -#if 0 - debug_tag_spec_flags(gfc, "lame_get_id3v2_tag"); -#endif - { - int usev2 = test_tag_spec_flags(gfc, ADD_V2_FLAG | V2_ONLY_FLAG); - /* calculate length of four fields which may not fit in verion 1 tag */ - size_t title_length = gfc->tag_spec.title ? strlen(gfc->tag_spec.title) : 0; - size_t artist_length = gfc->tag_spec.artist ? strlen(gfc->tag_spec.artist) : 0; - size_t album_length = gfc->tag_spec.album ? strlen(gfc->tag_spec.album) : 0; - size_t comment_length = gfc->tag_spec.comment ? strlen(gfc->tag_spec.comment) : 0; - /* write tag if explicitly requested or if fields overflow */ - if ((title_length > 30) - || (artist_length > 30) - || (album_length > 30) - || (comment_length > 30) - || (gfc->tag_spec.track_id3v1 && (comment_length > 28))) { - usev2 = 1; - } - if (usev2) { - size_t tag_size; - unsigned char *p; - size_t adjusted_tag_size; - const char *albumart_mime = NULL; - static const char *mime_jpeg = "image/jpeg"; - static const char *mime_png = "image/png"; - static const char *mime_gif = "image/gif"; - - if (gfp->num_samples != MAX_U_32_NUM) { - id3v2AddAudioDuration(gfp, gfp->num_samples); - } - - /* calulate size of tag starting with 10-byte tag header */ - tag_size = 10; - if (gfc->tag_spec.albumart && gfc->tag_spec.albumart_size) { - switch (gfc->tag_spec.albumart_mimetype) { - case MIMETYPE_JPEG: - albumart_mime = mime_jpeg; - break; - case MIMETYPE_PNG: - albumart_mime = mime_png; - break; - case MIMETYPE_GIF: - albumart_mime = mime_gif; - break; - } - if (albumart_mime) { - tag_size += 10 + 4 + strlen(albumart_mime) + gfc->tag_spec.albumart_size; - } - } - { - id3tag_spec *tag = &gfc->tag_spec; - if (tag->v2_head != 0) { - FrameDataNode *node; - for (node = tag->v2_head; node != 0; node = node->nxt) { - if (node->fid == ID_COMMENT || node->fid == ID_USER) { - tag_size += sizeOfCommentNode(node); - } - else if (isFrameIdMatching(node->fid, FRAME_ID('W',0,0,0))) { - tag_size += sizeOfWxxxNode(node); - } - else { - tag_size += sizeOfNode(node); - } - } - } - } - if (test_tag_spec_flags(gfc, PAD_V2_FLAG)) { - /* add some bytes of padding */ - tag_size += gfc->tag_spec.padding_size; - } - if (size < tag_size) { - return tag_size; - } - if (buffer == 0) { - return 0; - } - p = buffer; - /* set tag header starting with file identifier */ - *p++ = 'I'; - *p++ = 'D'; - *p++ = '3'; - /* set version number word */ - *p++ = 3; - *p++ = 0; - /* clear flags byte */ - *p++ = 0; - /* calculate and set tag size = total size - header size */ - adjusted_tag_size = tag_size - 10; - /* encode adjusted size into four bytes where most significant - * bit is clear in each byte, for 28-bit total */ - *p++ = (unsigned char) ((adjusted_tag_size >> 21) & 0x7fu); - *p++ = (unsigned char) ((adjusted_tag_size >> 14) & 0x7fu); - *p++ = (unsigned char) ((adjusted_tag_size >> 7) & 0x7fu); - *p++ = (unsigned char) (adjusted_tag_size & 0x7fu); - - /* - * NOTE: The remainder of the tag (frames and padding, if any) - * are not "unsynchronized" to prevent false MPEG audio headers - * from appearing in the bitstream. Why? Well, most players - * and utilities know how to skip the ID3 version 2 tag by now - * even if they don't read its contents, and it's actually - * very unlikely that such a false "sync" pattern would occur - * in just the simple text frames added here. - */ - - /* set each frame in tag */ - { - id3tag_spec *tag = &gfc->tag_spec; - if (tag->v2_head != 0) { - FrameDataNode *node; - for (node = tag->v2_head; node != 0; node = node->nxt) { - if (node->fid == ID_COMMENT || node->fid == ID_USER) { - p = set_frame_comment(p, node); - } - else if (isFrameIdMatching(node->fid,FRAME_ID('W',0,0,0))) { - p = set_frame_wxxx(p, node); - } - else { - p = set_frame_custom2(p, node); - } - } - } - } - if (albumart_mime) { - p = set_frame_apic(p, albumart_mime, gfc->tag_spec.albumart, - gfc->tag_spec.albumart_size); - } - /* clear any padding bytes */ - memset(p, 0, tag_size - (p - buffer)); - return tag_size; - } - } - return 0; -} - -int -id3tag_write_v2(lame_t gfp) -{ - lame_internal_flags *gfc = gfp->internal_flags; -#if 0 - debug_tag_spec_flags(gfc, "write v2"); -#endif - if (test_tag_spec_flags(gfc, V1_ONLY_FLAG)) { - return 0; - } - if (test_tag_spec_flags(gfc, CHANGED_FLAG)) { - unsigned char *tag = 0; - size_t tag_size, n; - - n = lame_get_id3v2_tag(gfp, 0, 0); - tag = lame_calloc(unsigned char, n); - if (tag == 0) { - return -1; - } - tag_size = lame_get_id3v2_tag(gfp, tag, n); - if (tag_size > n) { - free(tag); - return -1; - } - else { - size_t i; - /* write tag directly into bitstream at current position */ - for (i = 0; i < tag_size; ++i) { - add_dummy_byte(gfc, tag[i], 1); - } - } - free(tag); - return (int) tag_size; /* ok, tag should not exceed 2GB */ - } - return 0; -} - -static unsigned char * -set_text_field(unsigned char *field, const char *text, size_t size, int pad) -{ - while (size--) { - if (text && *text) { - *field++ = *text++; - } - else { - *field++ = pad; - } - } - return field; -} - -size_t -lame_get_id3v1_tag(lame_t gfp, unsigned char *buffer, size_t size) -{ - size_t const tag_size = 128; - lame_internal_flags *gfc; - - if (gfp == 0) { - return 0; - } - if (size < tag_size) { - return tag_size; - } - gfc = gfp->internal_flags; - if (gfc == 0) { - return 0; - } - if (buffer == 0) { - return 0; - } - if (test_tag_spec_flags(gfc, V2_ONLY_FLAG)) { - return 0; - } - if (test_tag_spec_flags(gfc, CHANGED_FLAG)) { - unsigned char *p = buffer; - int pad = test_tag_spec_flags(gfc, SPACE_V1_FLAG) ? ' ' : 0; - char year[5]; - - /* set tag identifier */ - *p++ = 'T'; - *p++ = 'A'; - *p++ = 'G'; - /* set each field in tag */ - p = set_text_field(p, gfc->tag_spec.title, 30, pad); - p = set_text_field(p, gfc->tag_spec.artist, 30, pad); - p = set_text_field(p, gfc->tag_spec.album, 30, pad); - sprintf(year, "%d", gfc->tag_spec.year); - p = set_text_field(p, gfc->tag_spec.year ? year : NULL, 4, pad); - /* limit comment field to 28 bytes if a track is specified */ - p = set_text_field(p, gfc->tag_spec.comment, gfc->tag_spec.track_id3v1 ? 28 : 30, pad); - if (gfc->tag_spec.track_id3v1) { - /* clear the next byte to indicate a version 1.1 tag */ - *p++ = 0; - *p++ = gfc->tag_spec.track_id3v1; - } - *p++ = gfc->tag_spec.genre_id3v1; - return tag_size; - } - return 0; -} - -int -id3tag_write_v1(lame_t gfp) -{ - lame_internal_flags *const gfc = gfp->internal_flags; - size_t i, n, m; - unsigned char tag[128]; - - m = sizeof(tag); - n = lame_get_id3v1_tag(gfp, tag, m); - if (n > m) { - return 0; - } - /* write tag directly into bitstream at current position */ - for (i = 0; i < n; ++i) { - add_dummy_byte(gfc, tag[i], 1); - } - return (int) n; /* ok, tag has fixed size of 128 bytes, well below 2GB */ -} diff --git a/platform/win32/msvc/external/lame/libmp3lame/id3tag.h b/platform/win32/msvc/external/lame/libmp3lame/id3tag.h deleted file mode 100644 index ac9c56e3610..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/id3tag.h +++ /dev/null @@ -1,63 +0,0 @@ - -#ifndef LAME_ID3_H -#define LAME_ID3_H - - -#define CHANGED_FLAG (1U << 0) -#define ADD_V2_FLAG (1U << 1) -#define V1_ONLY_FLAG (1U << 2) -#define V2_ONLY_FLAG (1U << 3) -#define SPACE_V1_FLAG (1U << 4) -#define PAD_V2_FLAG (1U << 5) - -enum { - MIMETYPE_NONE = 0, - MIMETYPE_JPEG, - MIMETYPE_PNG, - MIMETYPE_GIF, -}; - -typedef struct FrameDataNode { - struct FrameDataNode *nxt; - uint32_t fid; /* Frame Identifier */ - char lng[4]; /* 3-character language descriptor */ - struct { - union { - char *l; /* ptr to Latin-1 chars */ - unsigned short *u; /* ptr to UCS-2 text */ - unsigned char *b; /* ptr to raw bytes */ - } ptr; - size_t dim; - int enc; /* 0:Latin-1, 1:UCS-2, 2:RAW */ - } dsc , txt; -} FrameDataNode; - - -typedef struct id3tag_spec { - /* private data members */ - unsigned int flags; - int year; - char *title; - char *artist; - char *album; - char *comment; - int track_id3v1; - int genre_id3v1; - unsigned char *albumart; - unsigned int albumart_size; - unsigned int padding_size; - int albumart_mimetype; - FrameDataNode *v2_head, *v2_tail; -} id3tag_spec; - - -/* write tag into stream at current position */ -extern int id3tag_write_v2(lame_global_flags * gfp); -extern int id3tag_write_v1(lame_global_flags * gfp); -/* - * NOTE: A version 2 tag will NOT be added unless one of the text fields won't - * fit in a version 1 tag (e.g. the title string is longer than 30 characters), - * or the "id3tag_add_v2" or "id3tag_v2_only" functions are used. - */ - -#endif diff --git a/platform/win32/msvc/external/lame/libmp3lame/l3side.h b/platform/win32/msvc/external/lame/libmp3lame/l3side.h deleted file mode 100644 index f65bbedd8ee..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/l3side.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Layer 3 side include file - * - * Copyright (c) 1999 Mark Taylor - * - * 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 LAME_L3SIDE_H -#define LAME_L3SIDE_H - -/* max scalefactor band, max(SBMAX_l, SBMAX_s*3, (SBMAX_s-3)*3+8) */ -#define SFBMAX (SBMAX_s*3) - -/* Layer III side information. */ -typedef struct { - int l[1 + SBMAX_l]; - int s[1 + SBMAX_s]; - int psfb21[1 + PSFB21]; - int psfb12[1 + PSFB12]; -} scalefac_struct; - - -typedef struct { - FLOAT l[SBMAX_l]; - FLOAT s[SBMAX_s][3]; -} III_psy_xmin; - -typedef struct { - III_psy_xmin thm; - III_psy_xmin en; -} III_psy_ratio; - -typedef struct { - FLOAT xr[576]; - int l3_enc[576]; - int scalefac[SFBMAX]; - FLOAT xrpow_max; - - int part2_3_length; - int big_values; - int count1; - int global_gain; - int scalefac_compress; - int block_type; - int mixed_block_flag; - int table_select[3]; - int subblock_gain[3 + 1]; - int region0_count; - int region1_count; - int preflag; - int scalefac_scale; - int count1table_select; - - int part2_length; - int sfb_lmax; - int sfb_smin; - int psy_lmax; - int sfbmax; - int psymax; - int sfbdivide; - int width[SFBMAX]; - int window[SFBMAX]; - int count1bits; - /* added for LSF */ - const int *sfb_partition_table; - int slen[4]; - - int max_nonzero_coeff; - char energy_above_cutoff[SFBMAX]; -} gr_info; - -typedef struct { - gr_info tt[2][2]; - int main_data_begin; - int private_bits; - int resvDrain_pre; - int resvDrain_post; - int scfsi[2][4]; -} III_side_info_t; - -#endif diff --git a/platform/win32/msvc/external/lame/libmp3lame/lame-analysis.h b/platform/win32/msvc/external/lame/libmp3lame/lame-analysis.h deleted file mode 100644 index 5055a60364a..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/lame-analysis.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * GTK plotting routines source file - * - * Copyright (c) 1999 Mark Taylor - * - * 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 LAME_GTKANAL_H -#define LAME_GTKANAL_H - - -#define READ_AHEAD 40 /* number of frames to read ahead */ -#define MAXMPGLAG READ_AHEAD /* if the mpg123 lag becomes bigger than this - we have to stop */ -#define NUMBACK 6 /* number of frames we can back up */ -#define NUMPINFO (NUMBACK+READ_AHEAD+1) - - - -struct plotting_data { - int frameNum; /* current frame number */ - int frameNum123; - int num_samples; /* number of pcm samples read for this frame */ - double frametime; /* starting time of frame, in seconds */ - double pcmdata[2][1600]; - double pcmdata2[2][1152 + 1152 - DECDELAY]; - double xr[2][2][576]; - double mpg123xr[2][2][576]; - double ms_ratio[2]; - double ms_ener_ratio[2]; - - /* L,R, M and S values */ - double energy_save[4][BLKSIZE]; /* psymodel is one ahead */ - double energy[2][4][BLKSIZE]; - double pe[2][4]; - double thr[2][4][SBMAX_l]; - double en[2][4][SBMAX_l]; - double thr_s[2][4][3 * SBMAX_s]; - double en_s[2][4][3 * SBMAX_s]; - double ers_save[4]; /* psymodel is one ahead */ - double ers[2][4]; - - double sfb[2][2][SBMAX_l]; - double sfb_s[2][2][3 * SBMAX_s]; - double LAMEsfb[2][2][SBMAX_l]; - double LAMEsfb_s[2][2][3 * SBMAX_s]; - - int LAMEqss[2][2]; - int qss[2][2]; - int big_values[2][2]; - int sub_gain[2][2][3]; - - double xfsf[2][2][SBMAX_l]; - double xfsf_s[2][2][3 * SBMAX_s]; - - int over[2][2]; - double tot_noise[2][2]; - double max_noise[2][2]; - double over_noise[2][2]; - int over_SSD[2][2]; - int blocktype[2][2]; - int scalefac_scale[2][2]; - int preflag[2][2]; - int mpg123blocktype[2][2]; - int mixed[2][2]; - int mainbits[2][2]; - int sfbits[2][2]; - int LAMEmainbits[2][2]; - int LAMEsfbits[2][2]; - int framesize, stereo, js, ms_stereo, i_stereo, emph, bitrate, sampfreq, maindata; - int crc, padding; - int scfsi[2], mean_bits, resvsize; - int totbits; -}; -#ifndef plotting_data_defined -#define plotting_data_defined -typedef struct plotting_data plotting_data; -#endif -#if 0 -extern plotting_data *pinfo; -#endif -#endif diff --git a/platform/win32/msvc/external/lame/libmp3lame/lame.c b/platform/win32/msvc/external/lame/libmp3lame/lame.c deleted file mode 100644 index 5989160c373..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/lame.c +++ /dev/null @@ -1,2614 +0,0 @@ -/* -*- mode: C; mode: fold -*- */ -/* - * LAME MP3 encoding engine - * - * Copyright (c) 1999-2000 Mark Taylor - * Copyright (c) 2000-2005 Takehiro Tominaga - * Copyright (c) 2000-2011 Robert Hegemann - * Copyright (c) 2000-2005 Gabriel Bouvigne - * Copyright (c) 2000-2004 Alexander Leidinger - * - * 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. - */ - -/* $Id: lame.c,v 1.365 2011/10/18 21:51:20 robert Exp $ */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - - -#include "lame.h" -#include "machine.h" - -#include "encoder.h" -#include "util.h" -#include "lame_global_flags.h" -#include "gain_analysis.h" -#include "bitstream.h" -#include "quantize_pvt.h" -#include "set_get.h" -#include "quantize.h" -#include "psymodel.h" -#include "version.h" -#include "VbrTag.h" -#include "tables.h" - - -#if defined(__FreeBSD__) && !defined(__alpha__) -#include <floatingpoint.h> -#endif -#ifdef __riscos__ -#include "asmstuff.h" -#endif - -#ifdef __sun__ -/* woraround for SunOS 4.x, it has SEEK_* defined here */ -#include <unistd.h> -#endif - - -#define LAME_DEFAULT_QUALITY 3 - - - -int -is_lame_global_flags_valid(const lame_global_flags * gfp) -{ - if (gfp == NULL) - return 0; - if (gfp->class_id != LAME_ID) - return 0; - return 1; -} - - -int -is_lame_internal_flags_valid(const lame_internal_flags * gfc) -{ - if (gfc == NULL) - return 0; - if (gfc->class_id != LAME_ID) - return 0; - return 1; -} - - - -static FLOAT -filter_coef(FLOAT x) -{ - if (x > 1.0) - return 0.0; - if (x <= 0.0) - return 1.0; - - return cos(PI / 2 * x); -} - -static void -lame_init_params_ppflt(lame_internal_flags * gfc) -{ - SessionConfig_t *const cfg = &gfc->cfg; - - /***************************************************************/ - /* compute info needed for polyphase filter (filter type==0, default) */ - /***************************************************************/ - - int band, maxband, minband; - FLOAT freq; - int lowpass_band = 32; - int highpass_band = -1; - - if (cfg->lowpass1 > 0) { - minband = 999; - for (band = 0; band <= 31; band++) { - freq = band / 31.0; - /* this band and above will be zeroed: */ - if (freq >= cfg->lowpass2) { - lowpass_band = Min(lowpass_band, band); - } - if (cfg->lowpass1 < freq && freq < cfg->lowpass2) { - minband = Min(minband, band); - } - } - - /* compute the *actual* transition band implemented by - * the polyphase filter */ - if (minband == 999) { - cfg->lowpass1 = (lowpass_band - .75) / 31.0; - } - else { - cfg->lowpass1 = (minband - .75) / 31.0; - } - cfg->lowpass2 = lowpass_band / 31.0; - } - - /* make sure highpass filter is within 90% of what the effective - * highpass frequency will be */ - if (cfg->highpass2 > 0) { - if (cfg->highpass2 < .9 * (.75 / 31.0)) { - cfg->highpass1 = 0; - cfg->highpass2 = 0; - MSGF(gfc, "Warning: highpass filter disabled. " "highpass frequency too small\n"); - } - } - - if (cfg->highpass2 > 0) { - maxband = -1; - for (band = 0; band <= 31; band++) { - freq = band / 31.0; - /* this band and below will be zereod */ - if (freq <= cfg->highpass1) { - highpass_band = Max(highpass_band, band); - } - if (cfg->highpass1 < freq && freq < cfg->highpass2) { - maxband = Max(maxband, band); - } - } - /* compute the *actual* transition band implemented by - * the polyphase filter */ - cfg->highpass1 = highpass_band / 31.0; - if (maxband == -1) { - cfg->highpass2 = (highpass_band + .75) / 31.0; - } - else { - cfg->highpass2 = (maxband + .75) / 31.0; - } - } - - for (band = 0; band < 32; band++) { - FLOAT fc1, fc2; - freq = band / 31.0f; - if (cfg->highpass2 > cfg->highpass1) { - fc1 = filter_coef((cfg->highpass2 - freq) / (cfg->highpass2 - cfg->highpass1 + 1e-20)); - } - else { - fc1 = 1.0f; - } - if (cfg->lowpass2 > cfg->lowpass1) { - fc2 = filter_coef((freq - cfg->lowpass1) / (cfg->lowpass2 - cfg->lowpass1 + 1e-20)); - } - else { - fc2 = 1.0f; - } - gfc->sv_enc.amp_filter[band] = fc1 * fc2; - } -} - - -static void -optimum_bandwidth(double *const lowerlimit, double *const upperlimit, const unsigned bitrate) -{ -/* - * Input: - * bitrate total bitrate in kbps - * - * Output: - * lowerlimit: best lowpass frequency limit for input filter in Hz - * upperlimit: best highpass frequency limit for input filter in Hz - */ - int table_index; - - typedef struct { - int bitrate; /* only indicative value */ - int lowpass; - } band_pass_t; - - const band_pass_t freq_map[] = { - {8, 2000}, - {16, 3700}, - {24, 3900}, - {32, 5500}, - {40, 7000}, - {48, 7500}, - {56, 10000}, - {64, 11000}, - {80, 13500}, - {96, 15100}, - {112, 15600}, - {128, 17000}, - {160, 17500}, - {192, 18600}, - {224, 19400}, - {256, 19700}, - {320, 20500} - }; - - - table_index = nearestBitrateFullIndex(bitrate); - - (void) freq_map[table_index].bitrate; - *lowerlimit = freq_map[table_index].lowpass; - - -/* - * Now we try to choose a good high pass filtering frequency. - * This value is currently not used. - * For fu < 16 kHz: sqrt(fu*fl) = 560 Hz - * For fu = 18 kHz: no high pass filtering - * This gives: - * - * 2 kHz => 160 Hz - * 3 kHz => 107 Hz - * 4 kHz => 80 Hz - * 8 kHz => 40 Hz - * 16 kHz => 20 Hz - * 17 kHz => 10 Hz - * 18 kHz => 0 Hz - * - * These are ad hoc values and these can be optimized if a high pass is available. - */ -/* if (f_low <= 16000) - f_high = 16000. * 20. / f_low; - else if (f_low <= 18000) - f_high = 180. - 0.01 * f_low; - else - f_high = 0.;*/ - - /* - * When we sometimes have a good highpass filter, we can add the highpass - * frequency to the lowpass frequency - */ - - /*if (upperlimit != NULL) - *upperlimit = f_high;*/ - (void) upperlimit; -} - - -static int -optimum_samplefreq(int lowpassfreq, int input_samplefreq) -{ -/* - * Rules: - * - if possible, sfb21 should NOT be used - * - */ - int suggested_samplefreq = 44100; - - if (input_samplefreq >= 48000) - suggested_samplefreq = 48000; - else if (input_samplefreq >= 44100) - suggested_samplefreq = 44100; - else if (input_samplefreq >= 32000) - suggested_samplefreq = 32000; - else if (input_samplefreq >= 24000) - suggested_samplefreq = 24000; - else if (input_samplefreq >= 22050) - suggested_samplefreq = 22050; - else if (input_samplefreq >= 16000) - suggested_samplefreq = 16000; - else if (input_samplefreq >= 12000) - suggested_samplefreq = 12000; - else if (input_samplefreq >= 11025) - suggested_samplefreq = 11025; - else if (input_samplefreq >= 8000) - suggested_samplefreq = 8000; - - if (lowpassfreq == -1) - return suggested_samplefreq; - - if (lowpassfreq <= 15960) - suggested_samplefreq = 44100; - if (lowpassfreq <= 15250) - suggested_samplefreq = 32000; - if (lowpassfreq <= 11220) - suggested_samplefreq = 24000; - if (lowpassfreq <= 9970) - suggested_samplefreq = 22050; - if (lowpassfreq <= 7230) - suggested_samplefreq = 16000; - if (lowpassfreq <= 5420) - suggested_samplefreq = 12000; - if (lowpassfreq <= 4510) - suggested_samplefreq = 11025; - if (lowpassfreq <= 3970) - suggested_samplefreq = 8000; - - if (input_samplefreq < suggested_samplefreq) { - /* choose a valid MPEG sample frequency above the input sample frequency - to avoid SFB21/12 bitrate bloat - rh 061115 - */ - if (input_samplefreq > 44100) { - return 48000; - } - if (input_samplefreq > 32000) { - return 44100; - } - if (input_samplefreq > 24000) { - return 32000; - } - if (input_samplefreq > 22050) { - return 24000; - } - if (input_samplefreq > 16000) { - return 22050; - } - if (input_samplefreq > 12000) { - return 16000; - } - if (input_samplefreq > 11025) { - return 12000; - } - if (input_samplefreq > 8000) { - return 11025; - } - return 8000; - } - return suggested_samplefreq; -} - - - - - -/* set internal feature flags. USER should not access these since - * some combinations will produce strange results */ -static void -lame_init_qval(lame_global_flags * gfp) -{ - lame_internal_flags *const gfc = gfp->internal_flags; - SessionConfig_t *const cfg = &gfc->cfg; - - switch (gfp->quality) { - default: - case 9: /* no psymodel, no noise shaping */ - cfg->noise_shaping = 0; - cfg->noise_shaping_amp = 0; - cfg->noise_shaping_stop = 0; - cfg->use_best_huffman = 0; - cfg->full_outer_loop = 0; - break; - - case 8: - gfp->quality = 7; - /*lint --fallthrough */ - case 7: /* use psymodel (for short block and m/s switching), but no noise shapping */ - cfg->noise_shaping = 0; - cfg->noise_shaping_amp = 0; - cfg->noise_shaping_stop = 0; - cfg->use_best_huffman = 0; - cfg->full_outer_loop = 0; - if (gfp->VBR == vbr_mt || gfp->VBR == vbr_mtrh) { - cfg->full_outer_loop = -1; - } - break; - - case 6: - if (cfg->noise_shaping == 0) - cfg->noise_shaping = 1; - cfg->noise_shaping_amp = 0; - cfg->noise_shaping_stop = 0; - if (cfg->subblock_gain == -1) - cfg->subblock_gain = 1; - cfg->use_best_huffman = 0; - cfg->full_outer_loop = 0; - break; - - case 5: - if (cfg->noise_shaping == 0) - cfg->noise_shaping = 1; - cfg->noise_shaping_amp = 0; - cfg->noise_shaping_stop = 0; - if (cfg->subblock_gain == -1) - cfg->subblock_gain = 1; - cfg->use_best_huffman = 0; - cfg->full_outer_loop = 0; - break; - - case 4: - if (cfg->noise_shaping == 0) - cfg->noise_shaping = 1; - cfg->noise_shaping_amp = 0; - cfg->noise_shaping_stop = 0; - if (cfg->subblock_gain == -1) - cfg->subblock_gain = 1; - cfg->use_best_huffman = 1; - cfg->full_outer_loop = 0; - break; - - case 3: - if (cfg->noise_shaping == 0) - cfg->noise_shaping = 1; - cfg->noise_shaping_amp = 1; - cfg->noise_shaping_stop = 1; - if (cfg->subblock_gain == -1) - cfg->subblock_gain = 1; - cfg->use_best_huffman = 1; - cfg->full_outer_loop = 0; - break; - - case 2: - if (cfg->noise_shaping == 0) - cfg->noise_shaping = 1; - if (gfc->sv_qnt.substep_shaping == 0) - gfc->sv_qnt.substep_shaping = 2; - cfg->noise_shaping_amp = 1; - cfg->noise_shaping_stop = 1; - if (cfg->subblock_gain == -1) - cfg->subblock_gain = 1; - cfg->use_best_huffman = 1; /* inner loop */ - cfg->full_outer_loop = 0; - break; - - case 1: - if (cfg->noise_shaping == 0) - cfg->noise_shaping = 1; - if (gfc->sv_qnt.substep_shaping == 0) - gfc->sv_qnt.substep_shaping = 2; - cfg->noise_shaping_amp = 2; - cfg->noise_shaping_stop = 1; - if (cfg->subblock_gain == -1) - cfg->subblock_gain = 1; - cfg->use_best_huffman = 1; - cfg->full_outer_loop = 0; - break; - - case 0: - if (cfg->noise_shaping == 0) - cfg->noise_shaping = 1; - if (gfc->sv_qnt.substep_shaping == 0) - gfc->sv_qnt.substep_shaping = 2; - cfg->noise_shaping_amp = 2; - cfg->noise_shaping_stop = 1; - if (cfg->subblock_gain == -1) - cfg->subblock_gain = 1; - cfg->use_best_huffman = 1; /*type 2 disabled because of it slowness, - in favor of full outer loop search */ - cfg->full_outer_loop = 1; - break; - } - -} - - - -static double -linear_int(double a, double b, double m) -{ - return a + m * (b - a); -} - - - -/******************************************************************** - * initialize internal params based on data in gf - * (globalflags struct filled in by calling program) - * - * OUTLINE: - * - * We first have some complex code to determine bitrate, - * output samplerate and mode. It is complicated by the fact - * that we allow the user to set some or all of these parameters, - * and need to determine best possible values for the rest of them: - * - * 1. set some CPU related flags - * 2. check if we are mono->mono, stereo->mono or stereo->stereo - * 3. compute bitrate and output samplerate: - * user may have set compression ratio - * user may have set a bitrate - * user may have set a output samplerate - * 4. set some options which depend on output samplerate - * 5. compute the actual compression ratio - * 6. set mode based on compression ratio - * - * The remaining code is much simpler - it just sets options - * based on the mode & compression ratio: - * - * set allow_diff_short based on mode - * select lowpass filter based on compression ratio & mode - * set the bitrate index, and min/max bitrates for VBR modes - * disable VBR tag if it is not appropriate - * initialize the bitstream - * initialize scalefac_band data - * set sideinfo_len (based on channels, CRC, out_samplerate) - * write an id3v2 tag into the bitstream - * write VBR tag into the bitstream - * set mpeg1/2 flag - * estimate the number of frames (based on a lot of data) - * - * now we set more flags: - * nspsytune: - * see code - * VBR modes - * see code - * CBR/ABR - * see code - * - * Finally, we set the algorithm flags based on the gfp->quality value - * lame_init_qval(gfp); - * - ********************************************************************/ -int -lame_init_params(lame_global_flags * gfp) -{ - - int i; - int j; - lame_internal_flags *const gfc = gfp->internal_flags; - SessionConfig_t *const cfg = &gfc->cfg; - - gfc->class_id = 0; - - cfg->enforce_min_bitrate = gfp->VBR_hard_min; - cfg->analysis = gfp->analysis; - if (cfg->analysis) - gfp->write_lame_tag = 0; - - /* some file options not allowed if output is: not specified or stdout */ - if (gfc->pinfo != NULL) - gfp->write_lame_tag = 0; /* disable Xing VBR tag */ - - /* report functions */ - gfc->report_msg = gfp->report.msgf; - gfc->report_dbg = gfp->report.debugf; - gfc->report_err = gfp->report.errorf; - - if (gfp->asm_optimizations.amd3dnow) - gfc->CPU_features.AMD_3DNow = has_3DNow(); - else - gfc->CPU_features.AMD_3DNow = 0; - - if (gfp->asm_optimizations.mmx) - gfc->CPU_features.MMX = has_MMX(); - else - gfc->CPU_features.MMX = 0; - - if (gfp->asm_optimizations.sse) { - gfc->CPU_features.SSE = has_SSE(); - gfc->CPU_features.SSE2 = has_SSE2(); - } - else { - gfc->CPU_features.SSE = 0; - gfc->CPU_features.SSE2 = 0; - } - - - if (NULL == gfc->ATH) - gfc->ATH = calloc(1, sizeof(ATH_t)); - - if (NULL == gfc->ATH) - return -2; /* maybe error codes should be enumerated in lame.h ?? */ - - if (NULL == gfc->sv_rpg.rgdata) - gfc->sv_rpg.rgdata = calloc(1, sizeof(replaygain_t)); - if (NULL == gfc->sv_rpg.rgdata) { - freegfc(gfc); - gfp->internal_flags = NULL; - return -2; - } - - cfg->error_protection = gfp->error_protection; - cfg->copyright = gfp->copyright; - cfg->original = gfp->original; - cfg->extension = gfp->extension; - cfg->emphasis = gfp->emphasis; - - cfg->channels_in = gfp->num_channels; - if (cfg->channels_in == 1) - gfp->mode = MONO; - cfg->channels_out = (gfp->mode == MONO) ? 1 : 2; - if (gfp->mode == MONO) - gfp->force_ms = 0; /* don't allow forced mid/side stereo for mono output */ - cfg->force_ms = gfp->force_ms; - - if (gfp->VBR == vbr_off && gfp->VBR_mean_bitrate_kbps != 128 && gfp->brate == 0) - gfp->brate = gfp->VBR_mean_bitrate_kbps; - - switch (gfp->VBR) { - case vbr_off: - case vbr_mtrh: - case vbr_mt: - /* these modes can handle free format condition */ - break; - default: - gfp->free_format = 0; /* mode can't be mixed with free format */ - break; - } - - cfg->free_format = gfp->free_format; - - if (gfp->VBR == vbr_off && gfp->brate == 0) { - /* no bitrate or compression ratio specified, use 11.025 */ - if (EQ(gfp->compression_ratio, 0)) - gfp->compression_ratio = 11.025; /* rate to compress a CD down to exactly 128000 bps */ - } - - /* find bitrate if user specify a compression ratio */ - if (gfp->VBR == vbr_off && gfp->compression_ratio > 0) { - - if (gfp->samplerate_out == 0) - gfp->samplerate_out = map2MP3Frequency((int) (0.97 * gfp->samplerate_in)); /* round up with a margin of 3% */ - - /* choose a bitrate for the output samplerate which achieves - * specified compression ratio - */ - gfp->brate = gfp->samplerate_out * 16 * cfg->channels_out / (1.e3 * gfp->compression_ratio); - - /* we need the version for the bitrate table look up */ - cfg->samplerate_index = SmpFrqIndex(gfp->samplerate_out, &cfg->version); - - if (!cfg->free_format) /* for non Free Format find the nearest allowed bitrate */ - gfp->brate = FindNearestBitrate(gfp->brate, cfg->version, gfp->samplerate_out); - } - if (gfp->samplerate_out) { - if (gfp->samplerate_out < 16000) { - gfp->VBR_mean_bitrate_kbps = Max(gfp->VBR_mean_bitrate_kbps, 8); - gfp->VBR_mean_bitrate_kbps = Min(gfp->VBR_mean_bitrate_kbps, 64); - } - else if (gfp->samplerate_out < 32000) { - gfp->VBR_mean_bitrate_kbps = Max(gfp->VBR_mean_bitrate_kbps, 8); - gfp->VBR_mean_bitrate_kbps = Min(gfp->VBR_mean_bitrate_kbps, 160); - } - else { - gfp->VBR_mean_bitrate_kbps = Max(gfp->VBR_mean_bitrate_kbps, 32); - gfp->VBR_mean_bitrate_kbps = Min(gfp->VBR_mean_bitrate_kbps, 320); - } - } - /* WORK IN PROGRESS */ - /* mapping VBR scale to internal VBR quality settings */ - if (gfp->samplerate_out == 0 && (gfp->VBR == vbr_mt || gfp->VBR == vbr_mtrh)) { - float const qval = gfp->VBR_q + gfp->VBR_q_frac; - struct q_map { int sr_a; float qa, qb, ta, tb; int lp; }; - struct q_map const m[9] - = { {48000, 0.0,6.5, 0.0,6.5, 23700} - , {44100, 0.0,6.5, 0.0,6.5, 21780} - , {32000, 6.5,8.0, 5.2,6.5, 15800} - , {24000, 8.0,8.5, 5.2,6.0, 11850} - , {22050, 8.5,9.01, 5.2,6.5, 10892} - , {16000, 9.01,9.4, 4.9,6.5, 7903} - , {12000, 9.4,9.6, 4.5,6.0, 5928} - , {11025, 9.6,9.9, 5.1,6.5, 5446} - , { 8000, 9.9,10., 4.9,6.5, 3952} - }; - for (i = 2; i < 9; ++i) { - if (gfp->samplerate_in == m[i].sr_a) { - if (qval < m[i].qa) { - double d = qval / m[i].qa; - d = d * m[i].ta; - gfp->VBR_q = (int)d; - gfp->VBR_q_frac = d - gfp->VBR_q; - } - } - if (gfp->samplerate_in >= m[i].sr_a) { - if (m[i].qa <= qval && qval < m[i].qb) { - float const q_ = m[i].qb-m[i].qa; - float const t_ = m[i].tb-m[i].ta; - double d = m[i].ta + t_ * (qval-m[i].qa) / q_; - gfp->VBR_q = (int)d; - gfp->VBR_q_frac = d - gfp->VBR_q; - gfp->samplerate_out = m[i].sr_a; - if (gfp->lowpassfreq == 0) { - gfp->lowpassfreq = -1; - } - break; - } - } - } - } - - /****************************************************************/ - /* if a filter has not been enabled, see if we should add one: */ - /****************************************************************/ - if (gfp->lowpassfreq == 0) { - double lowpass = 16000; - double highpass; - - switch (gfp->VBR) { - case vbr_off:{ - optimum_bandwidth(&lowpass, &highpass, gfp->brate); - break; - } - case vbr_abr:{ - optimum_bandwidth(&lowpass, &highpass, gfp->VBR_mean_bitrate_kbps); - break; - } - case vbr_rh:{ - int const x[11] = { - 19500, 19000, 18600, 18000, 17500, 16000, 15600, 14900, 12500, 10000, 3950 - }; - if (0 <= gfp->VBR_q && gfp->VBR_q <= 9) { - double a = x[gfp->VBR_q], b = x[gfp->VBR_q + 1], m = gfp->VBR_q_frac; - lowpass = linear_int(a, b, m); - } - else { - lowpass = 19500; - } - break; - } - case vbr_mtrh: - case vbr_mt:{ - int const x[11] = { - 24000, 19500, 18500, 18000, 17500, 17000, 16500, 15600, 15200, 7230, 3950 - }; - if (0 <= gfp->VBR_q && gfp->VBR_q <= 9) { - double a = x[gfp->VBR_q], b = x[gfp->VBR_q + 1], m = gfp->VBR_q_frac; - lowpass = linear_int(a, b, m); - } - else { - lowpass = 21500; - } - break; - } - default:{ - int const x[11] = { - 19500, 19000, 18500, 18000, 17500, 16500, 15500, 14500, 12500, 9500, 3950 - }; - if (0 <= gfp->VBR_q && gfp->VBR_q <= 9) { - double a = x[gfp->VBR_q], b = x[gfp->VBR_q + 1], m = gfp->VBR_q_frac; - lowpass = linear_int(a, b, m); - } - else { - lowpass = 19500; - } - } - } - - if (gfp->mode == MONO && (gfp->VBR == vbr_off || gfp->VBR == vbr_abr)) - lowpass *= 1.5; - - gfp->lowpassfreq = lowpass; - } - - if (gfp->samplerate_out == 0) { - if (2 * gfp->lowpassfreq > gfp->samplerate_in) { - gfp->lowpassfreq = gfp->samplerate_in / 2; - } - gfp->samplerate_out = optimum_samplefreq((int) gfp->lowpassfreq, gfp->samplerate_in); - } - if (gfp->VBR == vbr_mt || gfp->VBR == vbr_mtrh) { - gfp->lowpassfreq = Min(24000, gfp->lowpassfreq); - } - else { - gfp->lowpassfreq = Min(20500, gfp->lowpassfreq); - } - gfp->lowpassfreq = Min(gfp->samplerate_out / 2, gfp->lowpassfreq); - - if (gfp->VBR == vbr_off) { - gfp->compression_ratio = gfp->samplerate_out * 16 * cfg->channels_out / (1.e3 * gfp->brate); - } - if (gfp->VBR == vbr_abr) { - gfp->compression_ratio = - gfp->samplerate_out * 16 * cfg->channels_out / (1.e3 * gfp->VBR_mean_bitrate_kbps); - } - - /* do not compute ReplayGain values and do not find the peak sample - if we can't store them */ - if (!gfp->write_lame_tag) { - gfp->findReplayGain = 0; - gfp->decode_on_the_fly = 0; - cfg->findPeakSample = 0; - } - - cfg->findReplayGain = gfp->findReplayGain; - cfg->decode_on_the_fly = gfp->decode_on_the_fly; - - if (cfg->decode_on_the_fly) - cfg->findPeakSample = 1; - - if (cfg->findReplayGain) { - if (InitGainAnalysis(gfc->sv_rpg.rgdata, gfp->samplerate_out) == INIT_GAIN_ANALYSIS_ERROR) { - freegfc(gfc); - gfp->internal_flags = NULL; - return -6; - } - } - -#ifdef DECODE_ON_THE_FLY - if (cfg->decode_on_the_fly && !gfp->decode_only) { - if (gfc->hip) { - hip_decode_exit(gfc->hip); - } - gfc->hip = hip_decode_init(); - /* report functions */ - hip_set_errorf(gfc->hip, gfp->report.errorf); - hip_set_debugf(gfc->hip, gfp->report.debugf); - hip_set_msgf(gfc->hip, gfp->report.msgf); - } -#endif - - cfg->disable_reservoir = gfp->disable_reservoir; - cfg->lowpassfreq = gfp->lowpassfreq; - cfg->highpassfreq = gfp->highpassfreq; - cfg->samplerate_in = gfp->samplerate_in; - cfg->samplerate_out = gfp->samplerate_out; - cfg->mode_gr = cfg->samplerate_out <= 24000 ? 1 : 2; /* Number of granules per frame */ - gfc->ov_enc.encoder_delay = ENCDELAY; - - - /* - * sample freq bitrate compression ratio - * [kHz] [kbps/channel] for 16 bit input - * 44.1 56 12.6 - * 44.1 64 11.025 - * 44.1 80 8.82 - * 22.05 24 14.7 - * 22.05 32 11.025 - * 22.05 40 8.82 - * 16 16 16.0 - * 16 24 10.667 - * - */ - /* - * For VBR, take a guess at the compression_ratio. - * For example: - * - * VBR_q compression like - * - 4.4 320 kbps/44 kHz - * 0...1 5.5 256 kbps/44 kHz - * 2 7.3 192 kbps/44 kHz - * 4 8.8 160 kbps/44 kHz - * 6 11 128 kbps/44 kHz - * 9 14.7 96 kbps - * - * for lower bitrates, downsample with --resample - */ - - switch (gfp->VBR) { - case vbr_mt: - case vbr_rh: - case vbr_mtrh: - { - /*numbers are a bit strange, but they determine the lowpass value */ - FLOAT const cmp[] = { 5.7, 6.5, 7.3, 8.2, 10, 11.9, 13, 14, 15, 16.5 }; - gfp->compression_ratio = cmp[gfp->VBR_q]; - } - break; - case vbr_abr: - gfp->compression_ratio = - cfg->samplerate_out * 16 * cfg->channels_out / (1.e3 * gfp->VBR_mean_bitrate_kbps); - break; - default: - gfp->compression_ratio = cfg->samplerate_out * 16 * cfg->channels_out / (1.e3 * gfp->brate); - break; - } - - - /* mode = -1 (not set by user) or - * mode = MONO (because of only 1 input channel). - * If mode has not been set, then select J-STEREO - */ - if (gfp->mode == NOT_SET) { - gfp->mode = JOINT_STEREO; - } - - cfg->mode = gfp->mode; - - - /* apply user driven high pass filter */ - if (cfg->highpassfreq > 0) { - cfg->highpass1 = 2. * cfg->highpassfreq; - - if (gfp->highpasswidth >= 0) - cfg->highpass2 = 2. * (cfg->highpassfreq + gfp->highpasswidth); - else /* 0% above on default */ - cfg->highpass2 = (1 + 0.00) * 2. * cfg->highpassfreq; - - cfg->highpass1 /= cfg->samplerate_out; - cfg->highpass2 /= cfg->samplerate_out; - } - else { - cfg->highpass1 = 0; - cfg->highpass2 = 0; - } - /* apply user driven low pass filter */ - cfg->lowpass1 = 0; - cfg->lowpass2 = 0; - if (cfg->lowpassfreq > 0 && cfg->lowpassfreq < (cfg->samplerate_out / 2) ) { - cfg->lowpass2 = 2. * cfg->lowpassfreq; - if (gfp->lowpasswidth >= 0) { - cfg->lowpass1 = 2. * (cfg->lowpassfreq - gfp->lowpasswidth); - if (cfg->lowpass1 < 0) /* has to be >= 0 */ - cfg->lowpass1 = 0; - } - else { /* 0% below on default */ - cfg->lowpass1 = (1 - 0.00) * 2. * cfg->lowpassfreq; - } - cfg->lowpass1 /= cfg->samplerate_out; - cfg->lowpass2 /= cfg->samplerate_out; - } - - - - - /**********************************************************************/ - /* compute info needed for polyphase filter (filter type==0, default) */ - /**********************************************************************/ - lame_init_params_ppflt(gfc); - - - /******************************************************* - * samplerate and bitrate index - *******************************************************/ - cfg->samplerate_index = SmpFrqIndex(cfg->samplerate_out, &cfg->version); - if (cfg->samplerate_index < 0) { - freegfc(gfc); - gfp->internal_flags = NULL; - return -1; - } - - if (gfp->VBR == vbr_off) { - if (cfg->free_format) { - gfc->ov_enc.bitrate_index = 0; - } - else { - gfp->brate = FindNearestBitrate(gfp->brate, cfg->version, cfg->samplerate_out); - gfc->ov_enc.bitrate_index = BitrateIndex(gfp->brate, cfg->version, cfg->samplerate_out); - if (gfc->ov_enc.bitrate_index <= 0) { - freegfc(gfc); - gfp->internal_flags = NULL; - return -1; - } - } - } - else { - gfc->ov_enc.bitrate_index = 1; - } - - init_bit_stream_w(gfc); - - j = cfg->samplerate_index + (3 * cfg->version) + 6 * (cfg->samplerate_out < 16000); - for (i = 0; i < SBMAX_l + 1; i++) - gfc->scalefac_band.l[i] = sfBandIndex[j].l[i]; - - for (i = 0; i < PSFB21 + 1; i++) { - int const size = (gfc->scalefac_band.l[22] - gfc->scalefac_band.l[21]) / PSFB21; - int const start = gfc->scalefac_band.l[21] + i * size; - gfc->scalefac_band.psfb21[i] = start; - } - gfc->scalefac_band.psfb21[PSFB21] = 576; - - for (i = 0; i < SBMAX_s + 1; i++) - gfc->scalefac_band.s[i] = sfBandIndex[j].s[i]; - - for (i = 0; i < PSFB12 + 1; i++) { - int const size = (gfc->scalefac_band.s[13] - gfc->scalefac_band.s[12]) / PSFB12; - int const start = gfc->scalefac_band.s[12] + i * size; - gfc->scalefac_band.psfb12[i] = start; - } - gfc->scalefac_band.psfb12[PSFB12] = 192; - - /* determine the mean bitrate for main data */ - if (cfg->mode_gr == 2) /* MPEG 1 */ - cfg->sideinfo_len = (cfg->channels_out == 1) ? 4 + 17 : 4 + 32; - else /* MPEG 2 */ - cfg->sideinfo_len = (cfg->channels_out == 1) ? 4 + 9 : 4 + 17; - - if (cfg->error_protection) - cfg->sideinfo_len += 2; - - gfc->class_id = LAME_ID; - - { - int k; - - for (k = 0; k < 19; k++) - gfc->sv_enc.pefirbuf[k] = 700 * cfg->mode_gr * cfg->channels_out; - - if (gfp->ATHtype == -1) - gfp->ATHtype = 4; - } - - assert(gfp->VBR_q <= 9); - assert(gfp->VBR_q >= 0); - - switch (gfp->VBR) { - - case vbr_mt: - case vbr_mtrh:{ - if (gfp->strict_ISO < 0) { - gfp->strict_ISO = MDB_MAXIMUM; - } - if (gfp->useTemporal < 0) { - gfp->useTemporal = 0; /* off by default for this VBR mode */ - } - - (void) apply_preset(gfp, 500 - (gfp->VBR_q * 10), 0); - /* The newer VBR code supports only a limited - subset of quality levels: - 9-5=5 are the same, uses x^3/4 quantization - 4-0=0 are the same 5 plus best huffman divide code - */ - if (gfp->quality < 0) - gfp->quality = LAME_DEFAULT_QUALITY; - if (gfp->quality < 5) - gfp->quality = 0; - if (gfp->quality > 7) - gfp->quality = 7; - - /* sfb21 extra only with MPEG-1 at higher sampling rates - */ - if (gfp->experimentalY) - gfc->sv_qnt.sfb21_extra = 0; - else - gfc->sv_qnt.sfb21_extra = (cfg->samplerate_out > 44000); - - gfc->iteration_loop = VBR_new_iteration_loop; - break; - - } - case vbr_rh:{ - - (void) apply_preset(gfp, 500 - (gfp->VBR_q * 10), 0); - - /* sfb21 extra only with MPEG-1 at higher sampling rates - */ - if (gfp->experimentalY) - gfc->sv_qnt.sfb21_extra = 0; - else - gfc->sv_qnt.sfb21_extra = (cfg->samplerate_out > 44000); - - /* VBR needs at least the output of GPSYCHO, - * so we have to garantee that by setting a minimum - * quality level, actually level 6 does it. - * down to level 6 - */ - if (gfp->quality > 6) - gfp->quality = 6; - - - if (gfp->quality < 0) - gfp->quality = LAME_DEFAULT_QUALITY; - - gfc->iteration_loop = VBR_old_iteration_loop; - break; - } - - default: /* cbr/abr */ { - vbr_mode vbrmode; - - /* no sfb21 extra with CBR code - */ - gfc->sv_qnt.sfb21_extra = 0; - - if (gfp->quality < 0) - gfp->quality = LAME_DEFAULT_QUALITY; - - - vbrmode = gfp->VBR; - if (vbrmode == vbr_off) - (void) lame_set_VBR_mean_bitrate_kbps(gfp, gfp->brate); - /* second, set parameters depending on bitrate */ - (void) apply_preset(gfp, gfp->VBR_mean_bitrate_kbps, 0); - gfp->VBR = vbrmode; - - if (vbrmode == vbr_off) { - gfc->iteration_loop = CBR_iteration_loop; - } - else { - gfc->iteration_loop = ABR_iteration_loop; - } - break; - } - } - - /*initialize default values common for all modes */ - - gfc->sv_qnt.mask_adjust = gfp->maskingadjust; - gfc->sv_qnt.mask_adjust_short = gfp->maskingadjust_short; - - /* just another daily changing developer switch */ - if (gfp->tune) { - gfc->sv_qnt.mask_adjust += gfp->tune_value_a; - gfc->sv_qnt.mask_adjust_short += gfp->tune_value_a; - } - - - if (gfp->VBR != vbr_off) { /* choose a min/max bitrate for VBR */ - /* if the user didn't specify VBR_max_bitrate: */ - cfg->vbr_min_bitrate_index = 1; /* default: allow 8 kbps (MPEG-2) or 32 kbps (MPEG-1) */ - cfg->vbr_max_bitrate_index = 14; /* default: allow 160 kbps (MPEG-2) or 320 kbps (MPEG-1) */ - if (cfg->samplerate_out < 16000) - cfg->vbr_max_bitrate_index = 8; /* default: allow 64 kbps (MPEG-2.5) */ - if (gfp->VBR_min_bitrate_kbps) { - gfp->VBR_min_bitrate_kbps = - FindNearestBitrate(gfp->VBR_min_bitrate_kbps, cfg->version, cfg->samplerate_out); - cfg->vbr_min_bitrate_index = - BitrateIndex(gfp->VBR_min_bitrate_kbps, cfg->version, cfg->samplerate_out); - if (cfg->vbr_min_bitrate_index < 0) - return -1; - } - if (gfp->VBR_max_bitrate_kbps) { - gfp->VBR_max_bitrate_kbps = - FindNearestBitrate(gfp->VBR_max_bitrate_kbps, cfg->version, cfg->samplerate_out); - cfg->vbr_max_bitrate_index = - BitrateIndex(gfp->VBR_max_bitrate_kbps, cfg->version, cfg->samplerate_out); - if (cfg->vbr_max_bitrate_index < 0) - return -1; - } - gfp->VBR_min_bitrate_kbps = bitrate_table[cfg->version][cfg->vbr_min_bitrate_index]; - gfp->VBR_max_bitrate_kbps = bitrate_table[cfg->version][cfg->vbr_max_bitrate_index]; - gfp->VBR_mean_bitrate_kbps = - Min(bitrate_table[cfg->version][cfg->vbr_max_bitrate_index], - gfp->VBR_mean_bitrate_kbps); - gfp->VBR_mean_bitrate_kbps = - Max(bitrate_table[cfg->version][cfg->vbr_min_bitrate_index], - gfp->VBR_mean_bitrate_kbps); - } - - cfg->preset = gfp->preset; - cfg->write_lame_tag = gfp->write_lame_tag; - cfg->vbr = gfp->VBR; - gfc->sv_qnt.substep_shaping = gfp->substep_shaping; - cfg->noise_shaping = gfp->noise_shaping; - cfg->subblock_gain = gfp->subblock_gain; - cfg->use_best_huffman = gfp->use_best_huffman; - cfg->avg_bitrate = gfp->brate; - cfg->vbr_avg_bitrate_kbps = gfp->VBR_mean_bitrate_kbps; - cfg->compression_ratio = gfp->compression_ratio; - - /* initialize internal qval settings */ - lame_init_qval(gfp); - - - /* automatic ATH adjustment on - */ - if (gfp->athaa_type < 0) - gfc->ATH->use_adjust = 3; - else - gfc->ATH->use_adjust = gfp->athaa_type; - - - /* initialize internal adaptive ATH settings -jd */ - gfc->ATH->aa_sensitivity_p = pow(10.0, gfp->athaa_sensitivity / -10.0); - - - if (gfp->short_blocks == short_block_not_set) { - gfp->short_blocks = short_block_allowed; - } - - /*Note Jan/2003: Many hardware decoders cannot handle short blocks in regular - stereo mode unless they are coupled (same type in both channels) - it is a rare event (1 frame per min. or so) that LAME would use - uncoupled short blocks, so lets turn them off until we decide - how to handle this. No other encoders allow uncoupled short blocks, - even though it is in the standard. */ - /* rh 20040217: coupling makes no sense for mono and dual-mono streams - */ - if (gfp->short_blocks == short_block_allowed - && (cfg->mode == JOINT_STEREO || cfg->mode == STEREO)) { - gfp->short_blocks = short_block_coupled; - } - - cfg->short_blocks = gfp->short_blocks; - - - if (lame_get_quant_comp(gfp) < 0) - (void) lame_set_quant_comp(gfp, 1); - if (lame_get_quant_comp_short(gfp) < 0) - (void) lame_set_quant_comp_short(gfp, 0); - - if (lame_get_msfix(gfp) < 0) - lame_set_msfix(gfp, 0); - - /* select psychoacoustic model */ - (void) lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 1); - - if (gfp->ATHtype < 0) - gfp->ATHtype = 4; - - if (gfp->ATHcurve < 0) - gfp->ATHcurve = 4; - - if (gfp->interChRatio < 0) - gfp->interChRatio = 0; - - if (gfp->useTemporal < 0) - gfp->useTemporal = 1; /* on by default */ - - - cfg->interChRatio = gfp->interChRatio; - cfg->msfix = gfp->msfix; - cfg->ATH_offset_db = 0-gfp->ATH_lower_db; - cfg->ATH_offset_factor = powf(10.f, cfg->ATH_offset_db * 0.1f); - cfg->ATHcurve = gfp->ATHcurve; - cfg->ATHtype = gfp->ATHtype; - cfg->ATHonly = gfp->ATHonly; - cfg->ATHshort = gfp->ATHshort; - cfg->noATH = gfp->noATH; - - cfg->quant_comp = gfp->quant_comp; - cfg->quant_comp_short = gfp->quant_comp_short; - - cfg->use_temporal_masking_effect = gfp->useTemporal; - cfg->use_safe_joint_stereo = gfp->exp_nspsytune & 2; - { - cfg->adjust_bass_db = (gfp->exp_nspsytune >> 2) & 63; - if (cfg->adjust_bass_db >= 32.f) - cfg->adjust_bass_db -= 64.f; - cfg->adjust_bass_db *= 0.25f; - - cfg->adjust_alto_db = (gfp->exp_nspsytune >> 8) & 63; - if (cfg->adjust_alto_db >= 32.f) - cfg->adjust_alto_db -= 64.f; - cfg->adjust_alto_db *= 0.25f; - - cfg->adjust_treble_db = (gfp->exp_nspsytune >> 14) & 63; - if (cfg->adjust_treble_db >= 32.f) - cfg->adjust_treble_db -= 64.f; - cfg->adjust_treble_db *= 0.25f; - - /* to be compatible with Naoki's original code, the next 6 bits - * define only the amount of changing treble for sfb21 */ - cfg->adjust_sfb21_db = (gfp->exp_nspsytune >> 20) & 63; - if (cfg->adjust_sfb21_db >= 32.f) - cfg->adjust_sfb21_db -= 64.f; - cfg->adjust_sfb21_db *= 0.25f; - cfg->adjust_sfb21_db += cfg->adjust_treble_db; - } - - /* Setting up the PCM input data transform matrix, to apply - * user defined re-scaling, and or two-to-one channel downmix. - */ - { - FLOAT m[2][2] = { {1.0f, 0.0f}, {0.0f, 1.0f} }; - - /* user selected scaling of the samples */ - m[0][0] *= gfp->scale; - m[0][1] *= gfp->scale; - m[1][0] *= gfp->scale; - m[1][1] *= gfp->scale; - /* user selected scaling of the channel 0 (left) samples */ - m[0][0] *= gfp->scale_left; - m[0][1] *= gfp->scale_left; - /* user selected scaling of the channel 1 (right) samples */ - m[1][0] *= gfp->scale_right; - m[1][1] *= gfp->scale_right; - /* Downsample to Mono if 2 channels in and 1 channel out */ - if (cfg->channels_in == 2 && cfg->channels_out == 1) { - m[0][0] = 0.5f * (m[0][0] + m[1][0]); - m[0][1] = 0.5f * (m[0][1] + m[1][1]); - m[1][0] = 0; - m[1][1] = 0; - } - cfg->pcm_transform[0][0] = m[0][0]; - cfg->pcm_transform[0][1] = m[0][1]; - cfg->pcm_transform[1][0] = m[1][0]; - cfg->pcm_transform[1][1] = m[1][1]; - } - - /* padding method as described in - * "MPEG-Layer3 / Bitstream Syntax and Decoding" - * by Martin Sieler, Ralph Sperschneider - * - * note: there is no padding for the very first frame - * - * Robert Hegemann 2000-06-22 - */ - gfc->sv_enc.slot_lag = gfc->sv_enc.frac_SpF = 0; - if (cfg->vbr == vbr_off) - gfc->sv_enc.slot_lag = gfc->sv_enc.frac_SpF - = ((cfg->version + 1) * 72000L * cfg->avg_bitrate) % cfg->samplerate_out; - - (void) lame_init_bitstream(gfp); - - iteration_init(gfc); - (void) psymodel_init(gfp); - - cfg->buffer_constraint = get_max_frame_buffer_size_by_constraint(cfg, gfp->strict_ISO); - return 0; -} - -static void -concatSep(char* dest, char const* sep, char const* str) -{ - if (*dest != 0) strcat(dest, sep); - strcat(dest, str); -} - -/* - * print_config - * - * Prints some selected information about the coding parameters via - * the macro command MSGF(), which is currently mapped to lame_errorf - * (reports via a error function?), which is a printf-like function - * for <stderr>. - */ - -void -lame_print_config(const lame_global_flags * gfp) -{ - lame_internal_flags const *const gfc = gfp->internal_flags; - SessionConfig_t const *const cfg = &gfc->cfg; - double const out_samplerate = cfg->samplerate_out; - double const in_samplerate = cfg->samplerate_in; - - MSGF(gfc, "LAME %s %s (%s)\n", get_lame_version(), get_lame_os_bitness(), get_lame_url()); - -#if (LAME_ALPHA_VERSION) - MSGF(gfc, "warning: alpha versions should be used for testing only\n"); -#endif - if (gfc->CPU_features.MMX - || gfc->CPU_features.AMD_3DNow || gfc->CPU_features.SSE || gfc->CPU_features.SSE2) { - char text[256] = { 0 }; - int fft_asm_used = 0; -#ifdef HAVE_NASM - if (gfc->CPU_features.AMD_3DNow) { - fft_asm_used = 1; - } - else if (gfc->CPU_features.SSE) { - fft_asm_used = 2; - } -#else -# if defined( HAVE_XMMINTRIN_H ) && defined( MIN_ARCH_SSE ) - { - fft_asm_used = 3; - } -# endif -#endif - if (gfc->CPU_features.MMX) { -#ifdef MMX_choose_table - concatSep(text, ", ", "MMX (ASM used)"); -#else - concatSep(text, ", ", "MMX"); -#endif - } - if (gfc->CPU_features.AMD_3DNow) { - concatSep(text, ", ", (fft_asm_used == 1) ? "3DNow! (ASM used)" : "3DNow!"); - } - if (gfc->CPU_features.SSE) { -#if defined(HAVE_XMMINTRIN_H) - concatSep(text, ", ", "SSE (ASM used)"); -#else - concatSep(text, ", ", (fft_asm_used == 2) ? "SSE (ASM used)" : "SSE"); -#endif - } - if (gfc->CPU_features.SSE2) { - concatSep(text, ", ", (fft_asm_used == 3) ? "SSE2 (ASM used)" : "SSE2"); - } - MSGF(gfc, "CPU features: %s\n", text); - } - - if (cfg->channels_in == 2 && cfg->channels_out == 1 /* mono */ ) { - MSGF(gfc, "Autoconverting from stereo to mono. Setting encoding to mono mode.\n"); - } - - if (isResamplingNecessary(cfg)) { - MSGF(gfc, "Resampling: input %g kHz output %g kHz\n", - 1.e-3 * in_samplerate, 1.e-3 * out_samplerate); - } - - if (cfg->highpass2 > 0.) - MSGF(gfc, - "Using polyphase highpass filter, transition band: %5.0f Hz - %5.0f Hz\n", - 0.5 * cfg->highpass1 * out_samplerate, 0.5 * cfg->highpass2 * out_samplerate); - if (0. < cfg->lowpass1 || 0. < cfg->lowpass2) { - MSGF(gfc, - "Using polyphase lowpass filter, transition band: %5.0f Hz - %5.0f Hz\n", - 0.5 * cfg->lowpass1 * out_samplerate, 0.5 * cfg->lowpass2 * out_samplerate); - } - else { - MSGF(gfc, "polyphase lowpass filter disabled\n"); - } - - if (cfg->free_format) { - MSGF(gfc, "Warning: many decoders cannot handle free format bitstreams\n"); - if (cfg->avg_bitrate > 320) { - MSGF(gfc, - "Warning: many decoders cannot handle free format bitrates >320 kbps (see documentation)\n"); - } - } -} - - -/** rh: - * some pretty printing is very welcome at this point! - * so, if someone is willing to do so, please do it! - * add more, if you see more... - */ -void -lame_print_internals(const lame_global_flags * gfp) -{ - lame_internal_flags const *const gfc = gfp->internal_flags; - SessionConfig_t const *const cfg = &gfc->cfg; - const char *pc = ""; - - /* compiler/processor optimizations, operational, etc. - */ - MSGF(gfc, "\nmisc:\n\n"); - - MSGF(gfc, "\tscaling: %g\n", gfp->scale); - MSGF(gfc, "\tch0 (left) scaling: %g\n", gfp->scale_left); - MSGF(gfc, "\tch1 (right) scaling: %g\n", gfp->scale_right); - switch (cfg->use_best_huffman) { - default: - pc = "normal"; - break; - case 1: - pc = "best (outside loop)"; - break; - case 2: - pc = "best (inside loop, slow)"; - break; - } - MSGF(gfc, "\thuffman search: %s\n", pc); - MSGF(gfc, "\texperimental Y=%d\n", gfp->experimentalY); - MSGF(gfc, "\t...\n"); - - /* everything controlling the stream format - */ - MSGF(gfc, "\nstream format:\n\n"); - switch (cfg->version) { - case 0: - pc = "2.5"; - break; - case 1: - pc = "1"; - break; - case 2: - pc = "2"; - break; - default: - pc = "?"; - break; - } - MSGF(gfc, "\tMPEG-%s Layer 3\n", pc); - switch (cfg->mode) { - case JOINT_STEREO: - pc = "joint stereo"; - break; - case STEREO: - pc = "stereo"; - break; - case DUAL_CHANNEL: - pc = "dual channel"; - break; - case MONO: - pc = "mono"; - break; - case NOT_SET: - pc = "not set (error)"; - break; - default: - pc = "unknown (error)"; - break; - } - MSGF(gfc, "\t%d channel - %s\n", cfg->channels_out, pc); - - switch (cfg->vbr) { - case vbr_off: - pc = "off"; - break; - default: - pc = "all"; - break; - } - MSGF(gfc, "\tpadding: %s\n", pc); - - if (vbr_default == cfg->vbr) - pc = "(default)"; - else if (cfg->free_format) - pc = "(free format)"; - else - pc = ""; - switch (cfg->vbr) { - case vbr_off: - MSGF(gfc, "\tconstant bitrate - CBR %s\n", pc); - break; - case vbr_abr: - MSGF(gfc, "\tvariable bitrate - ABR %s\n", pc); - break; - case vbr_rh: - MSGF(gfc, "\tvariable bitrate - VBR rh %s\n", pc); - break; - case vbr_mt: - MSGF(gfc, "\tvariable bitrate - VBR mt %s\n", pc); - break; - case vbr_mtrh: - MSGF(gfc, "\tvariable bitrate - VBR mtrh %s\n", pc); - break; - default: - MSGF(gfc, "\t ?? oops, some new one ?? \n"); - break; - } - if (cfg->write_lame_tag) - MSGF(gfc, "\tusing LAME Tag\n"); - MSGF(gfc, "\t...\n"); - - /* everything controlling psychoacoustic settings, like ATH, etc. - */ - MSGF(gfc, "\npsychoacoustic:\n\n"); - - switch (cfg->short_blocks) { - default: - case short_block_not_set: - pc = "?"; - break; - case short_block_allowed: - pc = "allowed"; - break; - case short_block_coupled: - pc = "channel coupled"; - break; - case short_block_dispensed: - pc = "dispensed"; - break; - case short_block_forced: - pc = "forced"; - break; - } - MSGF(gfc, "\tusing short blocks: %s\n", pc); - MSGF(gfc, "\tsubblock gain: %d\n", cfg->subblock_gain); - MSGF(gfc, "\tadjust masking: %g dB\n", gfc->sv_qnt.mask_adjust); - MSGF(gfc, "\tadjust masking short: %g dB\n", gfc->sv_qnt.mask_adjust_short); - MSGF(gfc, "\tquantization comparison: %d\n", cfg->quant_comp); - MSGF(gfc, "\t ^ comparison short blocks: %d\n", cfg->quant_comp_short); - MSGF(gfc, "\tnoise shaping: %d\n", cfg->noise_shaping); - MSGF(gfc, "\t ^ amplification: %d\n", cfg->noise_shaping_amp); - MSGF(gfc, "\t ^ stopping: %d\n", cfg->noise_shaping_stop); - - pc = "using"; - if (cfg->ATHshort) - pc = "the only masking for short blocks"; - if (cfg->ATHonly) - pc = "the only masking"; - if (cfg->noATH) - pc = "not used"; - MSGF(gfc, "\tATH: %s\n", pc); - MSGF(gfc, "\t ^ type: %d\n", cfg->ATHtype); - MSGF(gfc, "\t ^ shape: %g%s\n", cfg->ATHcurve, " (only for type 4)"); - MSGF(gfc, "\t ^ level adjustement: %g dB\n", cfg->ATH_offset_db); - MSGF(gfc, "\t ^ adjust type: %d\n", gfc->ATH->use_adjust); - MSGF(gfc, "\t ^ adjust sensitivity power: %f\n", gfc->ATH->aa_sensitivity_p); - - MSGF(gfc, "\texperimental psy tunings by Naoki Shibata\n"); - MSGF(gfc, "\t adjust masking bass=%g dB, alto=%g dB, treble=%g dB, sfb21=%g dB\n", - 10 * log10(gfc->sv_qnt.longfact[0]), - 10 * log10(gfc->sv_qnt.longfact[7]), - 10 * log10(gfc->sv_qnt.longfact[14]), 10 * log10(gfc->sv_qnt.longfact[21])); - - pc = cfg->use_temporal_masking_effect ? "yes" : "no"; - MSGF(gfc, "\tusing temporal masking effect: %s\n", pc); - MSGF(gfc, "\tinterchannel masking ratio: %g\n", cfg->interChRatio); - MSGF(gfc, "\t...\n"); - - /* that's all ? - */ - MSGF(gfc, "\n"); - return; -} - - -static void -save_gain_values(lame_internal_flags * gfc) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - RpgStateVar_t const *const rsv = &gfc->sv_rpg; - RpgResult_t *const rov = &gfc->ov_rpg; - /* save the ReplayGain value */ - if (cfg->findReplayGain) { - FLOAT const RadioGain = (FLOAT) GetTitleGain(rsv->rgdata); - if (NEQ(RadioGain, GAIN_NOT_ENOUGH_SAMPLES)) { - rov->RadioGain = (int) floor(RadioGain * 10.0 + 0.5); /* round to nearest */ - } - else { - rov->RadioGain = 0; - } - } - - /* find the gain and scale change required for no clipping */ - if (cfg->findPeakSample) { - rov->noclipGainChange = (int) ceil(log10(rov->PeakSample / 32767.0) * 20.0 * 10.0); /* round up */ - - if (rov->noclipGainChange > 0) { /* clipping occurs */ - rov->noclipScale = floor((32767.0f / rov->PeakSample) * 100.0f) / 100.0f; /* round down */ - } - else /* no clipping */ - rov->noclipScale = -1.0f; - } -} - - - -static int -update_inbuffer_size(lame_internal_flags * gfc, const int nsamples) -{ - EncStateVar_t *const esv = &gfc->sv_enc; - if (esv->in_buffer_0 == 0 || esv->in_buffer_nsamples < nsamples) { - if (esv->in_buffer_0) { - free(esv->in_buffer_0); - } - if (esv->in_buffer_1) { - free(esv->in_buffer_1); - } - esv->in_buffer_0 = calloc(nsamples, sizeof(sample_t)); - esv->in_buffer_1 = calloc(nsamples, sizeof(sample_t)); - esv->in_buffer_nsamples = nsamples; - } - if (esv->in_buffer_0 == NULL || esv->in_buffer_1 == NULL) { - if (esv->in_buffer_0) { - free(esv->in_buffer_0); - } - if (esv->in_buffer_1) { - free(esv->in_buffer_1); - } - esv->in_buffer_0 = 0; - esv->in_buffer_1 = 0; - esv->in_buffer_nsamples = 0; - ERRORF(gfc, "Error: can't allocate in_buffer buffer\n"); - return -2; - } - return 0; -} - - -static int -calcNeeded(SessionConfig_t const * cfg) -{ - int mf_needed; - int pcm_samples_per_frame = 576 * cfg->mode_gr; - - /* some sanity checks */ -#if ENCDELAY < MDCTDELAY -# error ENCDELAY is less than MDCTDELAY, see encoder.h -#endif -#if FFTOFFSET > BLKSIZE -# error FFTOFFSET is greater than BLKSIZE, see encoder.h -#endif - - mf_needed = BLKSIZE + pcm_samples_per_frame - FFTOFFSET; /* amount needed for FFT */ - /*mf_needed = Max(mf_needed, 286 + 576 * (1 + gfc->mode_gr)); */ - mf_needed = Max(mf_needed, 512 + pcm_samples_per_frame - 32); - - assert(MFSIZE >= mf_needed); - - return mf_needed; -} - - -/* - * THE MAIN LAME ENCODING INTERFACE - * mt 3/00 - * - * input pcm data, output (maybe) mp3 frames. - * This routine handles all buffering, resampling and filtering for you. - * The required mp3buffer_size can be computed from num_samples, - * samplerate and encoding rate, but here is a worst case estimate: - * - * mp3buffer_size in bytes = 1.25*num_samples + 7200 - * - * return code = number of bytes output in mp3buffer. can be 0 - * - * NOTE: this routine uses LAME's internal PCM data representation, - * 'sample_t'. It should not be used by any application. - * applications should use lame_encode_buffer(), - * lame_encode_buffer_float() - * lame_encode_buffer_int() - * etc... depending on what type of data they are working with. -*/ -static int -lame_encode_buffer_sample_t(lame_internal_flags * gfc, - int nsamples, unsigned char *mp3buf, const int mp3buf_size) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - EncStateVar_t *const esv = &gfc->sv_enc; - int pcm_samples_per_frame = 576 * cfg->mode_gr; - int mp3size = 0, ret, i, ch, mf_needed; - int mp3out; - sample_t *mfbuf[2]; - sample_t *in_buffer[2]; - - if (gfc->class_id != LAME_ID) - return -3; - - if (nsamples == 0) - return 0; - - /* copy out any tags that may have been written into bitstream */ - mp3out = copy_buffer(gfc, mp3buf, mp3buf_size, 0); - if (mp3out < 0) - return mp3out; /* not enough buffer space */ - mp3buf += mp3out; - mp3size += mp3out; - - in_buffer[0] = esv->in_buffer_0; - in_buffer[1] = esv->in_buffer_1; - - mf_needed = calcNeeded(cfg); - - mfbuf[0] = esv->mfbuf[0]; - mfbuf[1] = esv->mfbuf[1]; - - while (nsamples > 0) { - sample_t const *in_buffer_ptr[2]; - int n_in = 0; /* number of input samples processed with fill_buffer */ - int n_out = 0; /* number of samples output with fill_buffer */ - /* n_in <> n_out if we are resampling */ - - in_buffer_ptr[0] = in_buffer[0]; - in_buffer_ptr[1] = in_buffer[1]; - /* copy in new samples into mfbuf, with resampling */ - fill_buffer(gfc, mfbuf, &in_buffer_ptr[0], nsamples, &n_in, &n_out); - - /* compute ReplayGain of resampled input if requested */ - if (cfg->findReplayGain && !cfg->decode_on_the_fly) - if (AnalyzeSamples - (gfc->sv_rpg.rgdata, &mfbuf[0][esv->mf_size], &mfbuf[1][esv->mf_size], n_out, - cfg->channels_out) == GAIN_ANALYSIS_ERROR) - return -6; - - - - /* update in_buffer counters */ - nsamples -= n_in; - in_buffer[0] += n_in; - if (cfg->channels_out == 2) - in_buffer[1] += n_in; - - /* update mfbuf[] counters */ - esv->mf_size += n_out; - assert(esv->mf_size <= MFSIZE); - - /* lame_encode_flush may have set gfc->mf_sample_to_encode to 0 - * so we have to reinitialize it here when that happened. - */ - if (esv->mf_samples_to_encode < 1) { - esv->mf_samples_to_encode = ENCDELAY + POSTDELAY; - } - esv->mf_samples_to_encode += n_out; - - - if (esv->mf_size >= mf_needed) { - /* encode the frame. */ - /* mp3buf = pointer to current location in buffer */ - /* mp3buf_size = size of original mp3 output buffer */ - /* = 0 if we should not worry about the */ - /* buffer size because calling program is */ - /* to lazy to compute it */ - /* mp3size = size of data written to buffer so far */ - /* mp3buf_size-mp3size = amount of space avalable */ - - int buf_size = mp3buf_size - mp3size; - if (mp3buf_size == 0) - buf_size = 0; - - ret = lame_encode_mp3_frame(gfc, mfbuf[0], mfbuf[1], mp3buf, buf_size); - - if (ret < 0) - return ret; - mp3buf += ret; - mp3size += ret; - - /* shift out old samples */ - esv->mf_size -= pcm_samples_per_frame; - esv->mf_samples_to_encode -= pcm_samples_per_frame; - for (ch = 0; ch < cfg->channels_out; ch++) - for (i = 0; i < esv->mf_size; i++) - mfbuf[ch][i] = mfbuf[ch][i + pcm_samples_per_frame]; - } - } - assert(nsamples == 0); - - return mp3size; -} - -enum PCMSampleType -{ pcm_short_type -, pcm_int_type -, pcm_long_type -, pcm_float_type -, pcm_double_type -}; - -static void -lame_copy_inbuffer(lame_internal_flags* gfc, - void const* l, void const* r, int nsamples, - enum PCMSampleType pcm_type, int jump, FLOAT s) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - EncStateVar_t *const esv = &gfc->sv_enc; - sample_t* ib0 = esv->in_buffer_0; - sample_t* ib1 = esv->in_buffer_1; - FLOAT m[2][2]; - - /* Apply user defined re-scaling */ - m[0][0] = s * cfg->pcm_transform[0][0]; - m[0][1] = s * cfg->pcm_transform[0][1]; - m[1][0] = s * cfg->pcm_transform[1][0]; - m[1][1] = s * cfg->pcm_transform[1][1]; - - /* make a copy of input buffer, changing type to sample_t */ -#define COPY_AND_TRANSFORM(T) \ -{ \ - T const *bl = l, *br = r; \ - int i; \ - for (i = 0; i < nsamples; i++) { \ - sample_t const xl = *bl; \ - sample_t const xr = *br; \ - sample_t const u = xl * m[0][0] + xr * m[0][1]; \ - sample_t const v = xl * m[1][0] + xr * m[1][1]; \ - ib0[i] = u; \ - ib1[i] = v; \ - bl += jump; \ - br += jump; \ - } \ -} - switch ( pcm_type ) { - case pcm_short_type: - COPY_AND_TRANSFORM(short int); - break; - case pcm_int_type: - COPY_AND_TRANSFORM(int); - break; - case pcm_long_type: - COPY_AND_TRANSFORM(long int); - break; - case pcm_float_type: - COPY_AND_TRANSFORM(float); - break; - case pcm_double_type: - COPY_AND_TRANSFORM(double); - break; - } -} - - -static int -lame_encode_buffer_template(lame_global_flags * gfp, - void const* buffer_l, void const* buffer_r, const int nsamples, - unsigned char *mp3buf, const int mp3buf_size, enum PCMSampleType pcm_type, int aa, FLOAT norm) -{ - if (is_lame_global_flags_valid(gfp)) { - lame_internal_flags *const gfc = gfp->internal_flags; - if (is_lame_internal_flags_valid(gfc)) { - SessionConfig_t const *const cfg = &gfc->cfg; - - if (nsamples == 0) - return 0; - - if (update_inbuffer_size(gfc, nsamples) != 0) { - return -2; - } - /* make a copy of input buffer, changing type to sample_t */ - if (cfg->channels_in > 1) { - if (buffer_l == 0 || buffer_r == 0) { - return 0; - } - lame_copy_inbuffer(gfc, buffer_l, buffer_r, nsamples, pcm_type, aa, norm); - } - else { - if (buffer_l == 0) { - return 0; - } - lame_copy_inbuffer(gfc, buffer_l, buffer_l, nsamples, pcm_type, aa, norm); - } - - return lame_encode_buffer_sample_t(gfc, nsamples, mp3buf, mp3buf_size); - } - } - return -3; -} - -int -lame_encode_buffer(lame_global_flags * gfp, - const short int pcm_l[], const short int pcm_r[], const int nsamples, - unsigned char *mp3buf, const int mp3buf_size) -{ - return lame_encode_buffer_template(gfp, pcm_l, pcm_r, nsamples, mp3buf, mp3buf_size, pcm_short_type, 1, 1.0); -} - - -int -lame_encode_buffer_float(lame_global_flags * gfp, - const float pcm_l[], const float pcm_r[], const int nsamples, - unsigned char *mp3buf, const int mp3buf_size) -{ - /* input is assumed to be normalized to +/- 32768 for full scale */ - return lame_encode_buffer_template(gfp, pcm_l, pcm_r, nsamples, mp3buf, mp3buf_size, pcm_float_type, 1, 1.0); -} - - -int -lame_encode_buffer_ieee_float(lame_t gfp, - const float pcm_l[], const float pcm_r[], const int nsamples, - unsigned char *mp3buf, const int mp3buf_size) -{ - /* input is assumed to be normalized to +/- 1.0 for full scale */ - return lame_encode_buffer_template(gfp, pcm_l, pcm_r, nsamples, mp3buf, mp3buf_size, pcm_float_type, 1, 32767.0); -} - - -int -lame_encode_buffer_interleaved_ieee_float(lame_t gfp, - const float pcm[], const int nsamples, - unsigned char *mp3buf, const int mp3buf_size) -{ - /* input is assumed to be normalized to +/- 1.0 for full scale */ - return lame_encode_buffer_template(gfp, pcm, pcm+1, nsamples, mp3buf, mp3buf_size, pcm_float_type, 2, 32767.0); -} - - -int -lame_encode_buffer_ieee_double(lame_t gfp, - const double pcm_l[], const double pcm_r[], const int nsamples, - unsigned char *mp3buf, const int mp3buf_size) -{ - /* input is assumed to be normalized to +/- 1.0 for full scale */ - return lame_encode_buffer_template(gfp, pcm_l, pcm_r, nsamples, mp3buf, mp3buf_size, pcm_double_type, 1, 32767.0); -} - - -int -lame_encode_buffer_interleaved_ieee_double(lame_t gfp, - const double pcm[], const int nsamples, - unsigned char *mp3buf, const int mp3buf_size) -{ - /* input is assumed to be normalized to +/- 1.0 for full scale */ - return lame_encode_buffer_template(gfp, pcm, pcm+1, nsamples, mp3buf, mp3buf_size, pcm_double_type, 2, 32767.0); -} - - -int -lame_encode_buffer_int(lame_global_flags * gfp, - const int pcm_l[], const int pcm_r[], const int nsamples, - unsigned char *mp3buf, const int mp3buf_size) -{ - /* input is assumed to be normalized to +/- MAX_INT for full scale */ - FLOAT const norm = (1.0 / (1L << (8 * sizeof(int) - 16))); - return lame_encode_buffer_template(gfp, pcm_l, pcm_r, nsamples, mp3buf, mp3buf_size, pcm_int_type, 1, norm); -} - - -int -lame_encode_buffer_long2(lame_global_flags * gfp, - const long pcm_l[], const long pcm_r[], const int nsamples, - unsigned char *mp3buf, const int mp3buf_size) -{ - /* input is assumed to be normalized to +/- MAX_LONG for full scale */ - FLOAT const norm = (1.0 / (1L << (8 * sizeof(long) - 16))); - return lame_encode_buffer_template(gfp, pcm_l, pcm_r, nsamples, mp3buf, mp3buf_size, pcm_long_type, 1, norm); -} - - -int -lame_encode_buffer_long(lame_global_flags * gfp, - const long pcm_l[], const long pcm_r[], const int nsamples, - unsigned char *mp3buf, const int mp3buf_size) -{ - /* input is assumed to be normalized to +/- 32768 for full scale */ - return lame_encode_buffer_template(gfp, pcm_l, pcm_r, nsamples, mp3buf, mp3buf_size, pcm_long_type, 1, 1.0); -} - - - -int -lame_encode_buffer_interleaved(lame_global_flags * gfp, - short int pcm[], int nsamples, - unsigned char *mp3buf, int mp3buf_size) -{ - /* input is assumed to be normalized to +/- MAX_SHORT for full scale */ - return lame_encode_buffer_template(gfp, pcm, pcm+1, nsamples, mp3buf, mp3buf_size, pcm_short_type, 2, 1.0); -} - - - - -/***************************************************************** - Flush mp3 buffer, pad with ancillary data so last frame is complete. - Reset reservoir size to 0 - but keep all PCM samples and MDCT data in memory - This option is used to break a large file into several mp3 files - that when concatenated together will decode with no gaps - Because we set the reservoir=0, they will also decode seperately - with no errors. -*********************************************************************/ -int -lame_encode_flush_nogap(lame_global_flags * gfp, unsigned char *mp3buffer, int mp3buffer_size) -{ - int rc = -3; - if (is_lame_global_flags_valid(gfp)) { - lame_internal_flags *const gfc = gfp->internal_flags; - if (is_lame_internal_flags_valid(gfc)) { - flush_bitstream(gfc); - rc = copy_buffer(gfc, mp3buffer, mp3buffer_size, 1); - save_gain_values(gfc); - } - } - return rc; -} - - -/* called by lame_init_params. You can also call this after flush_nogap - if you want to write new id3v2 and Xing VBR tags into the bitstream */ -int -lame_init_bitstream(lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - lame_internal_flags *const gfc = gfp->internal_flags; - if (gfc != 0) { - gfc->ov_enc.frame_number = 0; - - if (gfp->write_id3tag_automatic) { - (void) id3tag_write_v2(gfp); - } - /* initialize histogram data optionally used by frontend */ - memset(gfc->ov_enc.bitrate_channelmode_hist, 0, - sizeof(gfc->ov_enc.bitrate_channelmode_hist)); - memset(gfc->ov_enc.bitrate_blocktype_hist, 0, - sizeof(gfc->ov_enc.bitrate_blocktype_hist)); - - gfc->ov_rpg.PeakSample = 0.0; - - /* Write initial VBR Header to bitstream and init VBR data */ - if (gfc->cfg.write_lame_tag) - (void) InitVbrTag(gfp); - - - return 0; - } - } - return -3; -} - - -/*****************************************************************/ -/* flush internal PCM sample buffers, then mp3 buffers */ -/* then write id3 v1 tags into bitstream. */ -/*****************************************************************/ - -int -lame_encode_flush(lame_global_flags * gfp, unsigned char *mp3buffer, int mp3buffer_size) -{ - lame_internal_flags *gfc; - SessionConfig_t const *cfg; - EncStateVar_t *esv; - short int buffer[2][1152]; - int imp3 = 0, mp3count, mp3buffer_size_remaining; - - /* we always add POSTDELAY=288 padding to make sure granule with real - * data can be complety decoded (because of 50% overlap with next granule */ - int end_padding; - int frames_left; - int samples_to_encode; - int pcm_samples_per_frame; - int mf_needed; - int is_resampling_necessary; - double resample_ratio = 1; - - if (!is_lame_global_flags_valid(gfp)) { - return -3; - } - gfc = gfp->internal_flags; - if (!is_lame_internal_flags_valid(gfc)) { - return -3; - } - cfg = &gfc->cfg; - esv = &gfc->sv_enc; - - /* Was flush already called? */ - if (esv->mf_samples_to_encode < 1) { - return 0; - } - pcm_samples_per_frame = 576 * cfg->mode_gr; - mf_needed = calcNeeded(cfg); - - samples_to_encode = esv->mf_samples_to_encode - POSTDELAY; - - memset(buffer, 0, sizeof(buffer)); - mp3count = 0; - - is_resampling_necessary = isResamplingNecessary(cfg); - if (is_resampling_necessary) { - resample_ratio = (double)cfg->samplerate_in / (double)cfg->samplerate_out; - /* delay due to resampling; needs to be fixed, if resampling code gets changed */ - samples_to_encode += 16. / resample_ratio; - } - end_padding = pcm_samples_per_frame - (samples_to_encode % pcm_samples_per_frame); - if (end_padding < 576) - end_padding += pcm_samples_per_frame; - gfc->ov_enc.encoder_padding = end_padding; - - frames_left = (samples_to_encode + end_padding) / pcm_samples_per_frame; - while (frames_left > 0 && imp3 >= 0) { - int const frame_num = gfc->ov_enc.frame_number; - int bunch = mf_needed - esv->mf_size; - - bunch *= resample_ratio; - if (bunch > 1152) bunch = 1152; - if (bunch < 1) bunch = 1; - - mp3buffer_size_remaining = mp3buffer_size - mp3count; - - /* if user specifed buffer size = 0, dont check size */ - if (mp3buffer_size == 0) - mp3buffer_size_remaining = 0; - - /* send in a frame of 0 padding until all internal sample buffers - * are flushed - */ - imp3 = lame_encode_buffer(gfp, buffer[0], buffer[1], bunch, - mp3buffer, mp3buffer_size_remaining); - - mp3buffer += imp3; - mp3count += imp3; - frames_left -= ((frame_num != gfc->ov_enc.frame_number) ? 1 : 0); - } - /* Set esv->mf_samples_to_encode to 0, so we may detect - * and break loops calling it more than once in a row. - */ - esv->mf_samples_to_encode = 0; - - if (imp3 < 0) { - /* some type of fatal error */ - return imp3; - } - - mp3buffer_size_remaining = mp3buffer_size - mp3count; - /* if user specifed buffer size = 0, dont check size */ - if (mp3buffer_size == 0) - mp3buffer_size_remaining = 0; - - /* mp3 related stuff. bit buffer might still contain some mp3 data */ - flush_bitstream(gfc); - imp3 = copy_buffer(gfc, mp3buffer, mp3buffer_size_remaining, 1); - save_gain_values(gfc); - if (imp3 < 0) { - /* some type of fatal error */ - return imp3; - } - mp3buffer += imp3; - mp3count += imp3; - mp3buffer_size_remaining = mp3buffer_size - mp3count; - /* if user specifed buffer size = 0, dont check size */ - if (mp3buffer_size == 0) - mp3buffer_size_remaining = 0; - - if (gfp->write_id3tag_automatic) { - /* write a id3 tag to the bitstream */ - (void) id3tag_write_v1(gfp); - - imp3 = copy_buffer(gfc, mp3buffer, mp3buffer_size_remaining, 0); - - if (imp3 < 0) { - return imp3; - } - mp3count += imp3; - } -#if 0 - { - int const ed = gfc->ov_enc.encoder_delay; - int const ep = gfc->ov_enc.encoder_padding; - int const ns = (gfc->ov_enc.frame_number * pcm_samples_per_frame) - (ed + ep); - double duration = ns; - duration /= cfg->samplerate_out; - MSGF(gfc, "frames=%d\n", gfc->ov_enc.frame_number); - MSGF(gfc, "pcm_samples_per_frame=%d\n", pcm_samples_per_frame); - MSGF(gfc, "encoder delay=%d\n", ed); - MSGF(gfc, "encoder padding=%d\n", ep); - MSGF(gfc, "sample count=%d (%g)\n", ns, cfg->samplerate_in * duration); - MSGF(gfc, "duration=%g sec\n", duration); - } -#endif - return mp3count; -} - -/*********************************************************************** - * - * lame_close () - * - * frees internal buffers - * - ***********************************************************************/ - -int -lame_close(lame_global_flags * gfp) -{ - int ret = 0; - if (gfp && gfp->class_id == LAME_ID) { - lame_internal_flags *const gfc = gfp->internal_flags; - gfp->class_id = 0; - if (NULL == gfc || gfc->class_id != LAME_ID) { - ret = -3; - } - if (NULL != gfc) { - gfc->class_id = 0; - /* this routine will free all malloc'd data in gfc, and then free gfc: */ - freegfc(gfc); - gfp->internal_flags = NULL; - } - if (gfp->lame_allocated_gfp) { - gfp->lame_allocated_gfp = 0; - free(gfp); - } - } - return ret; -} - -/*****************************************************************/ -/* flush internal mp3 buffers, and free internal buffers */ -/*****************************************************************/ -#if DEPRECATED_OR_OBSOLETE_CODE_REMOVED -int CDECL -lame_encode_finish(lame_global_flags * gfp, unsigned char *mp3buffer, int mp3buffer_size); -#else -#endif - -int -lame_encode_finish(lame_global_flags * gfp, unsigned char *mp3buffer, int mp3buffer_size) -{ - int const ret = lame_encode_flush(gfp, mp3buffer, mp3buffer_size); - - (void) lame_close(gfp); - - return ret; -} - -/*****************************************************************/ -/* write VBR Xing header, and ID3 version 1 tag, if asked for */ -/*****************************************************************/ -void lame_mp3_tags_fid(lame_global_flags * gfp, FILE * fpStream); - -void -lame_mp3_tags_fid(lame_global_flags * gfp, FILE * fpStream) -{ - lame_internal_flags *gfc; - SessionConfig_t const *cfg; - if (!is_lame_global_flags_valid(gfp)) { - return; - } - gfc = gfp->internal_flags; - if (!is_lame_internal_flags_valid(gfc)) { - return; - } - cfg = &gfc->cfg; - if (!cfg->write_lame_tag) { - return; - } - /* Write Xing header again */ - if (fpStream && !fseek(fpStream, 0, SEEK_SET)) { - int rc = PutVbrTag(gfp, fpStream); - switch (rc) { - default: - /* OK */ - break; - - case -1: - ERRORF(gfc, "Error: could not update LAME tag.\n"); - break; - - case -2: - ERRORF(gfc, "Error: could not update LAME tag, file not seekable.\n"); - break; - - case -3: - ERRORF(gfc, "Error: could not update LAME tag, file not readable.\n"); - break; - } - } -} - - - -/* initialize mp3 encoder */ -#if DEPRECATED_OR_OBSOLETE_CODE_REMOVED -static -#else -#endif -int -lame_init_old(lame_global_flags * gfp) -{ - lame_internal_flags *gfc; - SessionConfig_t *cfg; - - disable_FPE(); /* disable floating point exceptions */ - - memset(gfp, 0, sizeof(lame_global_flags)); - - gfp->class_id = LAME_ID; - - if (NULL == (gfc = gfp->internal_flags = calloc(1, sizeof(lame_internal_flags)))) - return -1; - - cfg = &gfc->cfg; - - /* Global flags. set defaults here for non-zero values */ - /* see lame.h for description */ - /* set integer values to -1 to mean that LAME will compute the - * best value, UNLESS the calling program as set it - * (and the value is no longer -1) - */ - gfp->strict_ISO = MDB_MAXIMUM; - - gfp->mode = NOT_SET; - gfp->original = 1; - gfp->samplerate_in = 44100; - gfp->num_channels = 2; - gfp->num_samples = MAX_U_32_NUM; - - gfp->write_lame_tag = 1; - gfp->quality = -1; - gfp->short_blocks = short_block_not_set; - gfp->subblock_gain = -1; - - gfp->lowpassfreq = 0; - gfp->highpassfreq = 0; - gfp->lowpasswidth = -1; - gfp->highpasswidth = -1; - - gfp->VBR = vbr_off; - gfp->VBR_q = 4; - gfp->ATHcurve = -1; - gfp->VBR_mean_bitrate_kbps = 128; - gfp->VBR_min_bitrate_kbps = 0; - gfp->VBR_max_bitrate_kbps = 0; - gfp->VBR_hard_min = 0; - cfg->vbr_min_bitrate_index = 1; /* not 0 ????? */ - cfg->vbr_max_bitrate_index = 13; /* not 14 ????? */ - - gfp->quant_comp = -1; - gfp->quant_comp_short = -1; - - gfp->msfix = -1; - - gfc->sv_qnt.OldValue[0] = 180; - gfc->sv_qnt.OldValue[1] = 180; - gfc->sv_qnt.CurrentStep[0] = 4; - gfc->sv_qnt.CurrentStep[1] = 4; - gfc->sv_qnt.masking_lower = 1; - - gfp->attackthre = -1; - gfp->attackthre_s = -1; - - gfp->scale = 1; - gfp->scale_left = 1; - gfp->scale_right = 1; - - gfp->athaa_type = -1; - gfp->ATHtype = -1; /* default = -1 = set in lame_init_params */ - /* 2 = equal loudness curve */ - gfp->athaa_sensitivity = 0.0; /* no offset */ - gfp->useTemporal = -1; - gfp->interChRatio = -1; - - /* The reason for - * int mf_samples_to_encode = ENCDELAY + POSTDELAY; - * ENCDELAY = internal encoder delay. And then we have to add POSTDELAY=288 - * because of the 50% MDCT overlap. A 576 MDCT granule decodes to - * 1152 samples. To synthesize the 576 samples centered under this granule - * we need the previous granule for the first 288 samples (no problem), and - * the next granule for the next 288 samples (not possible if this is last - * granule). So we need to pad with 288 samples to make sure we can - * encode the 576 samples we are interested in. - */ - gfc->sv_enc.mf_samples_to_encode = ENCDELAY + POSTDELAY; - gfc->ov_enc.encoder_padding = 0; - gfc->sv_enc.mf_size = ENCDELAY - MDCTDELAY; /* we pad input with this many 0's */ - - gfp->findReplayGain = 0; - gfp->decode_on_the_fly = 0; - - gfc->cfg.decode_on_the_fly = 0; - gfc->cfg.findReplayGain = 0; - gfc->cfg.findPeakSample = 0; - - gfc->ov_rpg.RadioGain = 0; - gfc->ov_rpg.noclipGainChange = 0; - gfc->ov_rpg.noclipScale = -1.0; - - gfp->asm_optimizations.mmx = 1; - gfp->asm_optimizations.amd3dnow = 1; - gfp->asm_optimizations.sse = 1; - - gfp->preset = 0; - - gfp->write_id3tag_automatic = 1; - - gfp->report.debugf = &lame_report_def; - gfp->report.errorf = &lame_report_def; - gfp->report.msgf = &lame_report_def; - return 0; -} - - -lame_global_flags * -lame_init(void) -{ - lame_global_flags *gfp; - int ret; - - init_log_table(); - - gfp = calloc(1, sizeof(lame_global_flags)); - if (gfp == NULL) - return NULL; - - ret = lame_init_old(gfp); - if (ret != 0) { - free(gfp); - return NULL; - } - - gfp->lame_allocated_gfp = 1; - return gfp; -} - - -/*********************************************************************** - * - * some simple statistics - * - * Robert Hegemann 2000-10-11 - * - ***********************************************************************/ - -/* histogram of used bitrate indexes: - * One has to weight them to calculate the average bitrate in kbps - * - * bitrate indices: - * there are 14 possible bitrate indices, 0 has the special meaning - * "free format" which is not possible to mix with VBR and 15 is forbidden - * anyway. - * - * stereo modes: - * 0: LR number of left-right encoded frames - * 1: LR-I number of left-right and intensity encoded frames - * 2: MS number of mid-side encoded frames - * 3: MS-I number of mid-side and intensity encoded frames - * - * 4: number of encoded frames - * - */ - -void -lame_bitrate_kbps(const lame_global_flags * gfp, int bitrate_kbps[14]) -{ - if (is_lame_global_flags_valid(gfp)) { - lame_internal_flags const *const gfc = gfp->internal_flags; - if (is_lame_internal_flags_valid(gfc)) { - SessionConfig_t const *const cfg = &gfc->cfg; - int i; - if (cfg->free_format) { - for (i = 0; i < 14; i++) - bitrate_kbps[i] = -1; - bitrate_kbps[0] = cfg->avg_bitrate; - } - else { - for (i = 0; i < 14; i++) - bitrate_kbps[i] = bitrate_table[cfg->version][i + 1]; - } - } - } -} - - -void -lame_bitrate_hist(const lame_global_flags * gfp, int bitrate_count[14]) -{ - if (is_lame_global_flags_valid(gfp)) { - lame_internal_flags const *const gfc = gfp->internal_flags; - if (is_lame_internal_flags_valid(gfc)) { - SessionConfig_t const *const cfg = &gfc->cfg; - EncResult_t const *const eov = &gfc->ov_enc; - int i; - - if (cfg->free_format) { - for (i = 0; i < 14; i++) { - bitrate_count[i] = 0; - } - bitrate_count[0] = eov->bitrate_channelmode_hist[0][4]; - } - else { - for (i = 0; i < 14; i++) { - bitrate_count[i] = eov->bitrate_channelmode_hist[i + 1][4]; - } - } - } - } -} - - -void -lame_stereo_mode_hist(const lame_global_flags * gfp, int stmode_count[4]) -{ - if (is_lame_global_flags_valid(gfp)) { - lame_internal_flags const *const gfc = gfp->internal_flags; - if (is_lame_internal_flags_valid(gfc)) { - EncResult_t const *const eov = &gfc->ov_enc; - int i; - - for (i = 0; i < 4; i++) { - stmode_count[i] = eov->bitrate_channelmode_hist[15][i]; - } - } - } -} - - - -void -lame_bitrate_stereo_mode_hist(const lame_global_flags * gfp, int bitrate_stmode_count[14][4]) -{ - if (is_lame_global_flags_valid(gfp)) { - lame_internal_flags const *const gfc = gfp->internal_flags; - if (is_lame_internal_flags_valid(gfc)) { - SessionConfig_t const *const cfg = &gfc->cfg; - EncResult_t const *const eov = &gfc->ov_enc; - int i; - int j; - - if (cfg->free_format) { - for (j = 0; j < 14; j++) - for (i = 0; i < 4; i++) { - bitrate_stmode_count[j][i] = 0; - } - for (i = 0; i < 4; i++) { - bitrate_stmode_count[0][i] = eov->bitrate_channelmode_hist[0][i]; - } - } - else { - for (j = 0; j < 14; j++) { - for (i = 0; i < 4; i++) { - bitrate_stmode_count[j][i] = eov->bitrate_channelmode_hist[j + 1][i]; - } - } - } - } - } -} - - -void -lame_block_type_hist(const lame_global_flags * gfp, int btype_count[6]) -{ - if (is_lame_global_flags_valid(gfp)) { - lame_internal_flags const *const gfc = gfp->internal_flags; - if (is_lame_internal_flags_valid(gfc)) { - EncResult_t const *const eov = &gfc->ov_enc; - int i; - - for (i = 0; i < 6; ++i) { - btype_count[i] = eov->bitrate_blocktype_hist[15][i]; - } - } - } -} - - - -void -lame_bitrate_block_type_hist(const lame_global_flags * gfp, int bitrate_btype_count[14][6]) -{ - if (is_lame_global_flags_valid(gfp)) { - lame_internal_flags const *const gfc = gfp->internal_flags; - if (is_lame_internal_flags_valid(gfc)) { - SessionConfig_t const *const cfg = &gfc->cfg; - EncResult_t const *const eov = &gfc->ov_enc; - int i, j; - - if (cfg->free_format) { - for (j = 0; j < 14; ++j) { - for (i = 0; i < 6; ++i) { - bitrate_btype_count[j][i] = 0; - } - } - for (i = 0; i < 6; ++i) { - bitrate_btype_count[0][i] = eov->bitrate_blocktype_hist[0][i]; - } - } - else { - for (j = 0; j < 14; ++j) { - for (i = 0; i < 6; ++i) { - bitrate_btype_count[j][i] = eov->bitrate_blocktype_hist[j + 1][i]; - } - } - } - } - } -} - -/* end of lame.c */ diff --git a/platform/win32/msvc/external/lame/libmp3lame/lame.rc b/platform/win32/msvc/external/lame/libmp3lame/lame.rc deleted file mode 100644 index 12d0193e277..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/lame.rc +++ /dev/null @@ -1,50 +0,0 @@ -#include <winver.h> -#include "version.h" - -#ifdef _DLL -IDI_ICON1 ICON DISCARDABLE "logoe.ico" -#else -IDI_ICON1 ICON DISCARDABLE "logoe.ico" -#endif - -VS_VERSION_INFO VERSIONINFO - FILEVERSION LAME_MAJOR_VERSION,LAME_MINOR_VERSION,LAME_TYPE_VERSION,LAME_PATCH_VERSION - PRODUCTVERSION LAME_MAJOR_VERSION,LAME_MINOR_VERSION,LAME_TYPE_VERSION,LAME_PATCH_VERSION - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS VS_FF_DEBUG -#else - FILEFLAGS 0x0L -#endif - FILEOS VOS__WINDOWS32 -#ifdef _DLL - FILETYPE VFT_DLL -#else - FILETYPE VFT_APP -#endif - FILESUBTYPE 0x0L - BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904E4" // Lang=US English, CharSet=Windows Multilingual - BEGIN - VALUE "CompanyName", LAME_URL "\0" - VALUE "FileDescription", "MP3 Encoder.\0" - VALUE "FileVersion", LAME_VERSION_STRING "\0" - VALUE "LegalCopyright", "Copyright (C) 1999-2011 The L.A.M.E. Team\0" -#ifdef _DLL - VALUE "OriginalFilename", STR(_DLL) "\0" -#else - VALUE "OriginalFilename", STR(_APP) "\0" -#endif - VALUE "ProductName", "L.A.M.E.\0" - VALUE "ProductVersion", LAME_VERSION_STRING "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1252 // mandatory by convention - END - END -/* End of Version info */ - diff --git a/platform/win32/msvc/external/lame/libmp3lame/lame_global_flags.h b/platform/win32/msvc/external/lame/libmp3lame/lame_global_flags.h deleted file mode 100644 index ad9e677da0a..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/lame_global_flags.h +++ /dev/null @@ -1,184 +0,0 @@ -#ifndef LAME_GLOBAL_FLAGS_H -#define LAME_GLOBAL_FLAGS_H - -#ifndef lame_internal_flags_defined -#define lame_internal_flags_defined -struct lame_internal_flags; -typedef struct lame_internal_flags lame_internal_flags; -#endif - - -typedef enum short_block_e { - short_block_not_set = -1, /* allow LAME to decide */ - short_block_allowed = 0, /* LAME may use them, even different block types for L/R */ - short_block_coupled, /* LAME may use them, but always same block types in L/R */ - short_block_dispensed, /* LAME will not use short blocks, long blocks only */ - short_block_forced /* LAME will not use long blocks, short blocks only */ -} short_block_t; - -/*********************************************************************** -* -* Control Parameters set by User. These parameters are here for -* backwards compatibility with the old, non-shared lib API. -* Please use the lame_set_variablename() functions below -* -* -***********************************************************************/ -struct lame_global_struct { - unsigned int class_id; - - /* input description */ - unsigned long num_samples; /* number of samples. default=2^32-1 */ - int num_channels; /* input number of channels. default=2 */ - int samplerate_in; /* input_samp_rate in Hz. default=44.1 kHz */ - int samplerate_out; /* output_samp_rate. - default: LAME picks best value - at least not used for MP3 decoding: - Remember 44.1 kHz MP3s and AC97 */ - float scale; /* scale input by this amount before encoding - at least not used for MP3 decoding */ - float scale_left; /* scale input of channel 0 (left) by this - amount before encoding */ - float scale_right; /* scale input of channel 1 (right) by this - amount before encoding */ - - /* general control params */ - int analysis; /* collect data for a MP3 frame analyzer? */ - int write_lame_tag; /* add Xing VBR tag? */ - int decode_only; /* use lame/mpglib to convert mp3 to wav */ - int quality; /* quality setting 0=best, 9=worst default=5 */ - MPEG_mode mode; /* see enum in lame.h - default = LAME picks best value */ - int force_ms; /* force M/S mode. requires mode=1 */ - int free_format; /* use free format? default=0 */ - int findReplayGain; /* find the RG value? default=0 */ - int decode_on_the_fly; /* decode on the fly? default=0 */ - int write_id3tag_automatic; /* 1 (default) writes ID3 tags, 0 not */ - - int nogap_total; - int nogap_current; - - int substep_shaping; - int noise_shaping; - int subblock_gain; /* 0 = no, 1 = yes */ - int use_best_huffman; /* 0 = no. 1=outside loop 2=inside loop(slow) */ - - /* - * set either brate>0 or compression_ratio>0, LAME will compute - * the value of the variable not set. - * Default is compression_ratio = 11.025 - */ - int brate; /* bitrate */ - float compression_ratio; /* sizeof(wav file)/sizeof(mp3 file) */ - - - /* frame params */ - int copyright; /* mark as copyright. default=0 */ - int original; /* mark as original. default=1 */ - int extension; /* the MP3 'private extension' bit. - Meaningless */ - int emphasis; /* Input PCM is emphased PCM (for - instance from one of the rarely - emphased CDs), it is STRONGLY not - recommended to use this, because - psycho does not take it into account, - and last but not least many decoders - don't care about these bits */ - int error_protection; /* use 2 bytes per frame for a CRC - checksum. default=0 */ - int strict_ISO; /* enforce ISO spec as much as possible */ - - int disable_reservoir; /* use bit reservoir? */ - - /* quantization/noise shaping */ - int quant_comp; - int quant_comp_short; - int experimentalY; - int experimentalZ; - int exp_nspsytune; - - int preset; - - /* VBR control */ - vbr_mode VBR; - float VBR_q_frac; /* Range [0,...,1[ */ - int VBR_q; /* Range [0,...,9] */ - int VBR_mean_bitrate_kbps; - int VBR_min_bitrate_kbps; - int VBR_max_bitrate_kbps; - int VBR_hard_min; /* strictly enforce VBR_min_bitrate - normaly, it will be violated for analog - silence */ - - - /* resampling and filtering */ - int lowpassfreq; /* freq in Hz. 0=lame choses. - -1=no filter */ - int highpassfreq; /* freq in Hz. 0=lame choses. - -1=no filter */ - int lowpasswidth; /* freq width of filter, in Hz - (default=15%) */ - int highpasswidth; /* freq width of filter, in Hz - (default=15%) */ - - - - /* - * psycho acoustics and other arguments which you should not change - * unless you know what you are doing - */ - float maskingadjust; - float maskingadjust_short; - int ATHonly; /* only use ATH */ - int ATHshort; /* only use ATH for short blocks */ - int noATH; /* disable ATH */ - int ATHtype; /* select ATH formula */ - float ATHcurve; /* change ATH formula 4 shape */ - float ATH_lower_db; /* lower ATH by this many db */ - int athaa_type; /* select ATH auto-adjust scheme */ - float athaa_sensitivity; /* dB, tune active region of auto-level */ - short_block_t short_blocks; - int useTemporal; /* use temporal masking effect */ - float interChRatio; - float msfix; /* Naoki's adjustment of Mid/Side maskings */ - - int tune; /* 0 off, 1 on */ - float tune_value_a; /* used to pass values for debugging and stuff */ - - float attackthre; /* attack threshold for L/R/M channel */ - float attackthre_s; /* attack threshold for S channel */ - - - struct { - void (*msgf) (const char *format, va_list ap); - void (*debugf) (const char *format, va_list ap); - void (*errorf) (const char *format, va_list ap); - } report; - - /************************************************************************/ - /* internal variables, do not set... */ - /* provided because they may be of use to calling application */ - /************************************************************************/ - - int lame_allocated_gfp; /* is this struct owned by calling - program or lame? */ - - - - /**************************************************************************/ - /* more internal variables are stored in this structure: */ - /**************************************************************************/ - lame_internal_flags *internal_flags; - - - struct { - int mmx; - int amd3dnow; - int sse; - - } asm_optimizations; -}; - -int is_lame_global_flags_valid(const lame_global_flags * gfp); - -#endif /* LAME_GLOBAL_FLAGS_H */ diff --git a/platform/win32/msvc/external/lame/libmp3lame/lameerror.h b/platform/win32/msvc/external/lame/libmp3lame/lameerror.h deleted file mode 100644 index 7d9216bc450..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/lameerror.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * A collection of LAME Error Codes - * - * Please use the constants defined here instead of some arbitrary - * values. Currently the values starting at -10 to avoid intersection - * with the -1, -2, -3 and -4 used in the current code. - * - * May be this should be a part of the include/lame.h. - */ - -typedef enum { - LAME_OKAY = 0, - LAME_NOERROR = 0, - LAME_GENERICERROR = -1, - LAME_NOMEM = -10, - LAME_BADBITRATE = -11, - LAME_BADSAMPFREQ = -12, - LAME_INTERNALERROR = -13, - - FRONTEND_READERROR = -80, - FRONTEND_WRITEERROR = -81, - FRONTEND_FILETOOLARGE = -82, - -} lame_errorcodes_t; - -/* end of lameerror.h */ diff --git a/platform/win32/msvc/external/lame/libmp3lame/logoe.ico b/platform/win32/msvc/external/lame/libmp3lame/logoe.ico deleted file mode 100644 index 70994aefcd1..00000000000 Binary files a/platform/win32/msvc/external/lame/libmp3lame/logoe.ico and /dev/null differ diff --git a/platform/win32/msvc/external/lame/libmp3lame/machine.h b/platform/win32/msvc/external/lame/libmp3lame/machine.h deleted file mode 100644 index 3d9d336aefc..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/machine.h +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Machine dependent defines/includes for LAME. - * - * Copyright (c) 1999 A.L. Faber - * - * 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 LAME_MACHINE_H -#define LAME_MACHINE_H - -#include "version.h" - -#if (LAME_RELEASE_VERSION == 0) -#undef NDEBUG -#endif - -#include <stdio.h> -#include <assert.h> - -#ifdef STDC_HEADERS -# include <stdlib.h> -# include <string.h> -#else -# ifndef HAVE_STRCHR -# define strchr index -# define strrchr rindex -# endif -char *strchr(), *strrchr(); -# ifndef HAVE_MEMCPY -# define memcpy(d, s, n) bcopy ((s), (d), (n)) -# define memmove(d, s, n) bcopy ((s), (d), (n)) -# endif -#endif - -#if defined(__riscos__) && defined(FPA10) -# include "ymath.h" -#else -# include <math.h> -#endif -#include <limits.h> - -#include <ctype.h> - -#ifdef HAVE_ERRNO_H -# include <errno.h> -#endif -#ifdef HAVE_FCNTL_H -# include <fcntl.h> -#endif - -#if defined(macintosh) -# include <types.h> -# include <stat.h> -#else -# include <sys/types.h> -# include <sys/stat.h> -#endif - -#ifdef HAVE_INTTYPES_H -# include <inttypes.h> -#else -# ifdef HAVE_STDINT_H -# include <stdint.h> -# endif -#endif - -#ifdef WITH_DMALLOC -#include <dmalloc.h> -#endif - -/* - * 3 different types of pow() functions: - * - table lookup - * - pow() - * - exp() on some machines this is claimed to be faster than pow() - */ - -#define POW20(x) (assert(0 <= (x+Q_MAX2) && x < Q_MAX), pow20[x+Q_MAX2]) -/*#define POW20(x) pow(2.0,((double)(x)-210)*.25) */ -/*#define POW20(x) exp( ((double)(x)-210)*(.25*LOG2) ) */ - -#define IPOW20(x) (assert(0 <= x && x < Q_MAX), ipow20[x]) -/*#define IPOW20(x) exp( -((double)(x)-210)*.1875*LOG2 ) */ -/*#define IPOW20(x) pow(2.0,-((double)(x)-210)*.1875) */ - -/* in case this is used without configure */ -#ifndef inline -# define inline -#endif - -#if defined(_MSC_VER) -# undef inline -# define inline _inline -#elif defined(__SASC) || defined(__GNUC__) || defined(__ICC) || defined(__ECC) -/* if __GNUC__ we always want to inline, not only if the user requests it */ -# undef inline -# define inline __inline -#endif - -#if defined(_MSC_VER) -# pragma warning( disable : 4244 ) -/*# pragma warning( disable : 4305 ) */ -#endif - -/* - * FLOAT for variables which require at least 32 bits - * FLOAT8 for variables which require at least 64 bits - * - * On some machines, 64 bit will be faster than 32 bit. Also, some math - * routines require 64 bit float, so setting FLOAT=float will result in a - * lot of conversions. - */ - -#if ( defined(_MSC_VER) || defined(__BORLANDC__) || defined(__MINGW32__) ) -# define WIN32_LEAN_AND_MEAN -# include <windows.h> -# include <float.h> -# define FLOAT_MAX FLT_MAX -#else -# ifndef FLOAT -typedef float FLOAT; -# ifdef FLT_MAX -# define FLOAT_MAX FLT_MAX -# else -# define FLOAT_MAX 1e37 /* approx */ -# endif -# endif -#endif - -#ifndef FLOAT8 -typedef double FLOAT8; -# ifdef DBL_MAX -# define FLOAT8_MAX DBL_MAX -# else -# define FLOAT8_MAX 1e99 /* approx */ -# endif -#else -# ifdef FLT_MAX -# define FLOAT8_MAX FLT_MAX -# else -# define FLOAT8_MAX 1e37 /* approx */ -# endif -#endif - -/* sample_t must be floating point, at least 32 bits */ -typedef FLOAT sample_t; - -#define dimension_of(array) (sizeof(array)/sizeof(array[0])) -#define beyond(array) (array+dimension_of(array)) -#define compiletime_assert(expression) extern char static_assert_##FILE##_##LINE[expression?1:0] - -#if 1 -#define EQ(a,b) (\ -(fabs(a) > fabs(b)) \ - ? (fabs((a)-(b)) <= (fabs(a) * 1e-6f)) \ - : (fabs((a)-(b)) <= (fabs(b) * 1e-6f))) -#else -#define EQ(a,b) (fabs((a)-(b))<1E-37) -#endif - -#define NEQ(a,b) (!EQ(a,b)) - -#endif - -#ifdef _MSC_VER -# if _MSC_VER < 1400 -# define fabsf fabs -# define powf pow -# define log10f log10 -# endif -#endif - - -/* end of machine.h */ diff --git a/platform/win32/msvc/external/lame/libmp3lame/mpglib_interface.c b/platform/win32/msvc/external/lame/libmp3lame/mpglib_interface.c deleted file mode 100644 index 5b90211b210..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/mpglib_interface.c +++ /dev/null @@ -1,476 +0,0 @@ -/* -*- mode: C; mode: fold -*- */ -/* - * LAME MP3 encoding engine - * - * Copyright (c) 1999-2000 Mark Taylor - * Copyright (c) 2003 Olcios - * Copyright (c) 2008 Robert Hegemann - * - * 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. - */ - -/* $Id: mpglib_interface.c,v 1.42 2011/05/07 16:05:17 rbrito Exp $ */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#ifdef HAVE_MPGLIB -#define hip_global_struct mpstr_tag -#include "lame.h" -#include "machine.h" -#include "encoder.h" -#include "interface.h" - -#include "util.h" - - - -#if DEPRECATED_OR_OBSOLETE_CODE_REMOVED -/* - * OBSOLETE: - * - kept to let it link - * - forward declaration to silence compiler - */ -int CDECL lame_decode_init(void); -int CDECL lame_decode( - unsigned char * mp3buf, - int len, - short pcm_l[], - short pcm_r[] ); -int CDECL lame_decode_headers( - unsigned char* mp3buf, - int len, - short pcm_l[], - short pcm_r[], - mp3data_struct* mp3data ); -int CDECL lame_decode1( - unsigned char* mp3buf, - int len, - short pcm_l[], - short pcm_r[] ); -int CDECL lame_decode1_headers( - unsigned char* mp3buf, - int len, - short pcm_l[], - short pcm_r[], - mp3data_struct* mp3data ); -int CDECL lame_decode1_headersB( - unsigned char* mp3buf, - int len, - short pcm_l[], - short pcm_r[], - mp3data_struct* mp3data, - int *enc_delay, - int *enc_padding ); -int CDECL lame_decode_exit(void); -#endif - - -static MPSTR mp; - -int -lame_decode_exit(void) -{ - ExitMP3(&mp); - return 0; -} - - -int -lame_decode_init(void) -{ - (void) InitMP3(&mp); - return 0; -} - - - - -/* copy mono samples */ -#define COPY_MONO(DST_TYPE, SRC_TYPE) \ - DST_TYPE *pcm_l = (DST_TYPE *)pcm_l_raw; \ - SRC_TYPE const *p_samples = (SRC_TYPE const *)p; \ - for (i = 0; i < processed_samples; i++) \ - *pcm_l++ = (DST_TYPE)(*p_samples++); - -/* copy stereo samples */ -#define COPY_STEREO(DST_TYPE, SRC_TYPE) \ - DST_TYPE *pcm_l = (DST_TYPE *)pcm_l_raw, *pcm_r = (DST_TYPE *)pcm_r_raw; \ - SRC_TYPE const *p_samples = (SRC_TYPE const *)p; \ - for (i = 0; i < processed_samples; i++) { \ - *pcm_l++ = (DST_TYPE)(*p_samples++); \ - *pcm_r++ = (DST_TYPE)(*p_samples++); \ - } - - - -/* - * For lame_decode: return code - * -1 error - * 0 ok, but need more data before outputing any samples - * n number of samples output. either 576 or 1152 depending on MP3 file. - */ - -static int -decode1_headersB_clipchoice(PMPSTR pmp, unsigned char *buffer, int len, - char pcm_l_raw[], char pcm_r_raw[], mp3data_struct * mp3data, - int *enc_delay, int *enc_padding, - char *p, size_t psize, int decoded_sample_size, - int (*decodeMP3_ptr) (PMPSTR, unsigned char *, int, char *, int, - int *)) -{ - static const int smpls[2][4] = { - /* Layer I II III */ - {0, 384, 1152, 1152}, /* MPEG-1 */ - {0, 384, 1152, 576} /* MPEG-2(.5) */ - }; - - int processed_bytes; - int processed_samples; /* processed samples per channel */ - int ret; - int i; - - mp3data->header_parsed = 0; - - ret = (*decodeMP3_ptr) (pmp, buffer, len, p, (int) psize, &processed_bytes); - /* three cases: - * 1. headers parsed, but data not complete - * pmp->header_parsed==1 - * pmp->framesize=0 - * pmp->fsizeold=size of last frame, or 0 if this is first frame - * - * 2. headers, data parsed, but ancillary data not complete - * pmp->header_parsed==1 - * pmp->framesize=size of frame - * pmp->fsizeold=size of last frame, or 0 if this is first frame - * - * 3. frame fully decoded: - * pmp->header_parsed==0 - * pmp->framesize=0 - * pmp->fsizeold=size of frame (which is now the last frame) - * - */ - if (pmp->header_parsed || pmp->fsizeold > 0 || pmp->framesize > 0) { - mp3data->header_parsed = 1; - mp3data->stereo = pmp->fr.stereo; - mp3data->samplerate = freqs[pmp->fr.sampling_frequency]; - mp3data->mode = pmp->fr.mode; - mp3data->mode_ext = pmp->fr.mode_ext; - mp3data->framesize = smpls[pmp->fr.lsf][pmp->fr.lay]; - - /* free format, we need the entire frame before we can determine - * the bitrate. If we haven't gotten the entire frame, bitrate=0 */ - if (pmp->fsizeold > 0) /* works for free format and fixed, no overrun, temporal results are < 400.e6 */ - mp3data->bitrate = 8 * (4 + pmp->fsizeold) * mp3data->samplerate / - (1.e3 * mp3data->framesize) + 0.5; - else if (pmp->framesize > 0) - mp3data->bitrate = 8 * (4 + pmp->framesize) * mp3data->samplerate / - (1.e3 * mp3data->framesize) + 0.5; - else - mp3data->bitrate = tabsel_123[pmp->fr.lsf][pmp->fr.lay - 1][pmp->fr.bitrate_index]; - - - - if (pmp->num_frames > 0) { - /* Xing VBR header found and num_frames was set */ - mp3data->totalframes = pmp->num_frames; - mp3data->nsamp = mp3data->framesize * pmp->num_frames; - *enc_delay = pmp->enc_delay; - *enc_padding = pmp->enc_padding; - } - } - - switch (ret) { - case MP3_OK: - switch (pmp->fr.stereo) { - case 1: - processed_samples = processed_bytes / decoded_sample_size; - if (decoded_sample_size == sizeof(short)) { - COPY_MONO(short, short) - } - else { - COPY_MONO(sample_t, FLOAT) - } - break; - case 2: - processed_samples = (processed_bytes / decoded_sample_size) >> 1; - if (decoded_sample_size == sizeof(short)) { - COPY_STEREO(short, short) - } - else { - COPY_STEREO(sample_t, FLOAT) - } - break; - default: - processed_samples = -1; - assert(0); - break; - } - break; - - case MP3_NEED_MORE: - processed_samples = 0; - break; - - case MP3_ERR: - processed_samples = -1; - break; - - default: - processed_samples = -1; - assert(0); - break; - } - - /*fprintf(stderr,"ok, more, err: %i %i %i\n", MP3_OK, MP3_NEED_MORE, MP3_ERR ); */ - /*fprintf(stderr,"ret = %i out=%i\n", ret, processed_samples ); */ - return processed_samples; -} - - -#define OUTSIZE_CLIPPED (4096*sizeof(short)) - -int -lame_decode1_headersB(unsigned char *buffer, - int len, - short pcm_l[], short pcm_r[], mp3data_struct * mp3data, - int *enc_delay, int *enc_padding) -{ - static char out[OUTSIZE_CLIPPED]; - - return decode1_headersB_clipchoice(&mp, buffer, len, (char *) pcm_l, (char *) pcm_r, mp3data, - enc_delay, enc_padding, out, OUTSIZE_CLIPPED, - sizeof(short), decodeMP3); -} - - - - - -/* - * For lame_decode: return code - * -1 error - * 0 ok, but need more data before outputing any samples - * n number of samples output. Will be at most one frame of - * MPEG data. - */ - -int -lame_decode1_headers(unsigned char *buffer, - int len, short pcm_l[], short pcm_r[], mp3data_struct * mp3data) -{ - int enc_delay, enc_padding; - return lame_decode1_headersB(buffer, len, pcm_l, pcm_r, mp3data, &enc_delay, &enc_padding); -} - - -int -lame_decode1(unsigned char *buffer, int len, short pcm_l[], short pcm_r[]) -{ - mp3data_struct mp3data; - - return lame_decode1_headers(buffer, len, pcm_l, pcm_r, &mp3data); -} - - -/* - * For lame_decode: return code - * -1 error - * 0 ok, but need more data before outputing any samples - * n number of samples output. a multiple of 576 or 1152 depending on MP3 file. - */ - -int -lame_decode_headers(unsigned char *buffer, - int len, short pcm_l[], short pcm_r[], mp3data_struct * mp3data) -{ - int ret; - int totsize = 0; /* number of decoded samples per channel */ - - for (;;) { - switch (ret = lame_decode1_headers(buffer, len, pcm_l + totsize, pcm_r + totsize, mp3data)) { - case -1: - return ret; - case 0: - return totsize; - default: - totsize += ret; - len = 0; /* future calls to decodeMP3 are just to flush buffers */ - break; - } - } -} - - -int -lame_decode(unsigned char *buffer, int len, short pcm_l[], short pcm_r[]) -{ - mp3data_struct mp3data; - - return lame_decode_headers(buffer, len, pcm_l, pcm_r, &mp3data); -} - - - - -hip_t hip_decode_init(void) -{ - hip_t hip = calloc(1, sizeof(hip_global_flags)); - InitMP3(hip); - return hip; -} - - -int hip_decode_exit(hip_t hip) -{ - if (hip) { - ExitMP3(hip); - free(hip); - } - return 0; -} - - -/* we forbid input with more than 1152 samples per channel for output in the unclipped mode */ -#define OUTSIZE_UNCLIPPED (1152*2*sizeof(FLOAT)) - -int -hip_decode1_unclipped(hip_t hip, unsigned char *buffer, size_t len, sample_t pcm_l[], sample_t pcm_r[]) -{ - static char out[OUTSIZE_UNCLIPPED]; - mp3data_struct mp3data; - int enc_delay, enc_padding; - - if (hip) { - return decode1_headersB_clipchoice(hip, buffer, len, (char *) pcm_l, (char *) pcm_r, &mp3data, - &enc_delay, &enc_padding, out, OUTSIZE_UNCLIPPED, - sizeof(FLOAT), decodeMP3_unclipped); - } - return 0; -} - -/* - * For hip_decode: return code - * -1 error - * 0 ok, but need more data before outputing any samples - * n number of samples output. Will be at most one frame of - * MPEG data. - */ - -int -hip_decode1_headers(hip_t hip, unsigned char *buffer, - size_t len, short pcm_l[], short pcm_r[], mp3data_struct * mp3data) -{ - int enc_delay, enc_padding; - return hip_decode1_headersB(hip, buffer, len, pcm_l, pcm_r, mp3data, &enc_delay, &enc_padding); -} - - -int -hip_decode1(hip_t hip, unsigned char *buffer, size_t len, short pcm_l[], short pcm_r[]) -{ - mp3data_struct mp3data; - return hip_decode1_headers(hip, buffer, len, pcm_l, pcm_r, &mp3data); -} - - -/* - * For hip_decode: return code - * -1 error - * 0 ok, but need more data before outputing any samples - * n number of samples output. a multiple of 576 or 1152 depending on MP3 file. - */ - -int -hip_decode_headers(hip_t hip, unsigned char *buffer, - size_t len, short pcm_l[], short pcm_r[], mp3data_struct * mp3data) -{ - int ret; - int totsize = 0; /* number of decoded samples per channel */ - - for (;;) { - switch (ret = hip_decode1_headers(hip, buffer, len, pcm_l + totsize, pcm_r + totsize, mp3data)) { - case -1: - return ret; - case 0: - return totsize; - default: - totsize += ret; - len = 0; /* future calls to decodeMP3 are just to flush buffers */ - break; - } - } -} - - -int -hip_decode(hip_t hip, unsigned char *buffer, size_t len, short pcm_l[], short pcm_r[]) -{ - mp3data_struct mp3data; - return hip_decode_headers(hip, buffer, len, pcm_l, pcm_r, &mp3data); -} - - -int -hip_decode1_headersB(hip_t hip, unsigned char *buffer, - size_t len, - short pcm_l[], short pcm_r[], mp3data_struct * mp3data, - int *enc_delay, int *enc_padding) -{ - static char out[OUTSIZE_CLIPPED]; - if (hip) { - return decode1_headersB_clipchoice(hip, buffer, len, (char *) pcm_l, (char *) pcm_r, mp3data, - enc_delay, enc_padding, out, OUTSIZE_CLIPPED, - sizeof(short), decodeMP3); - } - return -1; -} - - -void hip_set_pinfo(hip_t hip, plotting_data* pinfo) -{ - if (hip) { - hip->pinfo = pinfo; - } -} - - - -void hip_set_errorf(hip_t hip, lame_report_function func) -{ - if (hip) { - hip->report_err = func; - } -} - -void hip_set_debugf(hip_t hip, lame_report_function func) -{ - if (hip) { - hip->report_dbg = func; - } -} - -void hip_set_msgf (hip_t hip, lame_report_function func) -{ - if (hip) { - hip->report_msg = func; - } -} - -#endif - -/* end of mpglib_interface.c */ diff --git a/platform/win32/msvc/external/lame/libmp3lame/newmdct.c b/platform/win32/msvc/external/lame/libmp3lame/newmdct.c deleted file mode 100644 index 596cac919da..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/newmdct.c +++ /dev/null @@ -1,1039 +0,0 @@ -/* - * MP3 window subband -> subband filtering -> mdct routine - * - * Copyright (c) 1999-2000 Takehiro Tominaga - * - * - * 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. - */ - -/* - * Special Thanks to Patrick De Smet for your advices. - */ - -/* $Id: newmdct.c,v 1.39 2011/05/07 16:05:17 rbrito Exp $ */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "lame.h" -#include "machine.h" -#include "encoder.h" -#include "util.h" -#include "newmdct.h" - - - -#ifndef USE_GOGO_SUBBAND -static const FLOAT enwindow[] = { - -4.77e-07 * 0.740951125354959 / 2.384e-06, 1.03951e-04 * 0.740951125354959 / 2.384e-06, - 9.53674e-04 * 0.740951125354959 / 2.384e-06, 2.841473e-03 * 0.740951125354959 / 2.384e-06, - 3.5758972e-02 * 0.740951125354959 / 2.384e-06, 3.401756e-03 * 0.740951125354959 / 2.384e-06, 9.83715e-04 * 0.740951125354959 / 2.384e-06, 9.9182e-05 * 0.740951125354959 / 2.384e-06, /* 15 */ - 1.2398e-05 * 0.740951125354959 / 2.384e-06, 1.91212e-04 * 0.740951125354959 / 2.384e-06, - 2.283096e-03 * 0.740951125354959 / 2.384e-06, 1.6994476e-02 * 0.740951125354959 / 2.384e-06, - -1.8756866e-02 * 0.740951125354959 / 2.384e-06, -2.630711e-03 * 0.740951125354959 / 2.384e-06, - -2.47478e-04 * 0.740951125354959 / 2.384e-06, -1.4782e-05 * 0.740951125354959 / 2.384e-06, - 9.063471690191471e-01, - 1.960342806591213e-01, - - - -4.77e-07 * 0.773010453362737 / 2.384e-06, 1.05858e-04 * 0.773010453362737 / 2.384e-06, - 9.30786e-04 * 0.773010453362737 / 2.384e-06, 2.521515e-03 * 0.773010453362737 / 2.384e-06, - 3.5694122e-02 * 0.773010453362737 / 2.384e-06, 3.643036e-03 * 0.773010453362737 / 2.384e-06, 9.91821e-04 * 0.773010453362737 / 2.384e-06, 9.6321e-05 * 0.773010453362737 / 2.384e-06, /* 14 */ - 1.1444e-05 * 0.773010453362737 / 2.384e-06, 1.65462e-04 * 0.773010453362737 / 2.384e-06, - 2.110004e-03 * 0.773010453362737 / 2.384e-06, 1.6112804e-02 * 0.773010453362737 / 2.384e-06, - -1.9634247e-02 * 0.773010453362737 / 2.384e-06, -2.803326e-03 * 0.773010453362737 / 2.384e-06, - -2.77042e-04 * 0.773010453362737 / 2.384e-06, -1.6689e-05 * 0.773010453362737 / 2.384e-06, - 8.206787908286602e-01, - 3.901806440322567e-01, - - - -4.77e-07 * 0.803207531480645 / 2.384e-06, 1.07288e-04 * 0.803207531480645 / 2.384e-06, - 9.02653e-04 * 0.803207531480645 / 2.384e-06, 2.174854e-03 * 0.803207531480645 / 2.384e-06, - 3.5586357e-02 * 0.803207531480645 / 2.384e-06, 3.858566e-03 * 0.803207531480645 / 2.384e-06, 9.95159e-04 * 0.803207531480645 / 2.384e-06, 9.3460e-05 * 0.803207531480645 / 2.384e-06, /* 13 */ - 1.0014e-05 * 0.803207531480645 / 2.384e-06, 1.40190e-04 * 0.803207531480645 / 2.384e-06, - 1.937389e-03 * 0.803207531480645 / 2.384e-06, 1.5233517e-02 * 0.803207531480645 / 2.384e-06, - -2.0506859e-02 * 0.803207531480645 / 2.384e-06, -2.974033e-03 * 0.803207531480645 / 2.384e-06, - -3.07560e-04 * 0.803207531480645 / 2.384e-06, -1.8120e-05 * 0.803207531480645 / 2.384e-06, - 7.416505462720353e-01, - 5.805693545089249e-01, - - - -4.77e-07 * 0.831469612302545 / 2.384e-06, 1.08242e-04 * 0.831469612302545 / 2.384e-06, - 8.68797e-04 * 0.831469612302545 / 2.384e-06, 1.800537e-03 * 0.831469612302545 / 2.384e-06, - 3.5435200e-02 * 0.831469612302545 / 2.384e-06, 4.049301e-03 * 0.831469612302545 / 2.384e-06, 9.94205e-04 * 0.831469612302545 / 2.384e-06, 9.0599e-05 * 0.831469612302545 / 2.384e-06, /* 12 */ - 9.060e-06 * 0.831469612302545 / 2.384e-06, 1.16348e-04 * 0.831469612302545 / 2.384e-06, - 1.766682e-03 * 0.831469612302545 / 2.384e-06, 1.4358521e-02 * 0.831469612302545 / 2.384e-06, - -2.1372318e-02 * 0.831469612302545 / 2.384e-06, -3.14188e-03 * 0.831469612302545 / 2.384e-06, - -3.39031e-04 * 0.831469612302545 / 2.384e-06, -1.9550e-05 * 0.831469612302545 / 2.384e-06, - 6.681786379192989e-01, - 7.653668647301797e-01, - - - -4.77e-07 * 0.857728610000272 / 2.384e-06, 1.08719e-04 * 0.857728610000272 / 2.384e-06, - 8.29220e-04 * 0.857728610000272 / 2.384e-06, 1.399517e-03 * 0.857728610000272 / 2.384e-06, - 3.5242081e-02 * 0.857728610000272 / 2.384e-06, 4.215240e-03 * 0.857728610000272 / 2.384e-06, 9.89437e-04 * 0.857728610000272 / 2.384e-06, 8.7261e-05 * 0.857728610000272 / 2.384e-06, /* 11 */ - 8.106e-06 * 0.857728610000272 / 2.384e-06, 9.3937e-05 * 0.857728610000272 / 2.384e-06, - 1.597881e-03 * 0.857728610000272 / 2.384e-06, 1.3489246e-02 * 0.857728610000272 / 2.384e-06, - -2.2228718e-02 * 0.857728610000272 / 2.384e-06, -3.306866e-03 * 0.857728610000272 / 2.384e-06, - -3.71456e-04 * 0.857728610000272 / 2.384e-06, -2.1458e-05 * 0.857728610000272 / 2.384e-06, - 5.993769336819237e-01, - 9.427934736519954e-01, - - - -4.77e-07 * 0.881921264348355 / 2.384e-06, 1.08719e-04 * 0.881921264348355 / 2.384e-06, - 7.8392e-04 * 0.881921264348355 / 2.384e-06, 9.71317e-04 * 0.881921264348355 / 2.384e-06, - 3.5007000e-02 * 0.881921264348355 / 2.384e-06, 4.357815e-03 * 0.881921264348355 / 2.384e-06, 9.80854e-04 * 0.881921264348355 / 2.384e-06, 8.3923e-05 * 0.881921264348355 / 2.384e-06, /* 10 */ - 7.629e-06 * 0.881921264348355 / 2.384e-06, 7.2956e-05 * 0.881921264348355 / 2.384e-06, - 1.432419e-03 * 0.881921264348355 / 2.384e-06, 1.2627602e-02 * 0.881921264348355 / 2.384e-06, - -2.3074150e-02 * 0.881921264348355 / 2.384e-06, -3.467083e-03 * 0.881921264348355 / 2.384e-06, - -4.04358e-04 * 0.881921264348355 / 2.384e-06, -2.3365e-05 * 0.881921264348355 / 2.384e-06, - 5.345111359507916e-01, - 1.111140466039205e+00, - - - -9.54e-07 * 0.903989293123443 / 2.384e-06, 1.08242e-04 * 0.903989293123443 / 2.384e-06, - 7.31945e-04 * 0.903989293123443 / 2.384e-06, 5.15938e-04 * 0.903989293123443 / 2.384e-06, - 3.4730434e-02 * 0.903989293123443 / 2.384e-06, 4.477024e-03 * 0.903989293123443 / 2.384e-06, 9.68933e-04 * 0.903989293123443 / 2.384e-06, 8.0585e-05 * 0.903989293123443 / 2.384e-06, /* 9 */ - 6.676e-06 * 0.903989293123443 / 2.384e-06, 5.2929e-05 * 0.903989293123443 / 2.384e-06, - 1.269817e-03 * 0.903989293123443 / 2.384e-06, 1.1775017e-02 * 0.903989293123443 / 2.384e-06, - -2.3907185e-02 * 0.903989293123443 / 2.384e-06, -3.622532e-03 * 0.903989293123443 / 2.384e-06, - -4.38213e-04 * 0.903989293123443 / 2.384e-06, -2.5272e-05 * 0.903989293123443 / 2.384e-06, - 4.729647758913199e-01, - 1.268786568327291e+00, - - - -9.54e-07 * 0.92387953251128675613 / 2.384e-06, - 1.06812e-04 * 0.92387953251128675613 / 2.384e-06, - 6.74248e-04 * 0.92387953251128675613 / 2.384e-06, - 3.3379e-05 * 0.92387953251128675613 / 2.384e-06, - 3.4412861e-02 * 0.92387953251128675613 / 2.384e-06, - 4.573822e-03 * 0.92387953251128675613 / 2.384e-06, - 9.54151e-04 * 0.92387953251128675613 / 2.384e-06, - 7.6771e-05 * 0.92387953251128675613 / 2.384e-06, - 6.199e-06 * 0.92387953251128675613 / 2.384e-06, 3.4332e-05 * 0.92387953251128675613 / 2.384e-06, - 1.111031e-03 * 0.92387953251128675613 / 2.384e-06, - 1.0933399e-02 * 0.92387953251128675613 / 2.384e-06, - -2.4725437e-02 * 0.92387953251128675613 / 2.384e-06, - -3.771782e-03 * 0.92387953251128675613 / 2.384e-06, - -4.72546e-04 * 0.92387953251128675613 / 2.384e-06, - -2.7657e-05 * 0.92387953251128675613 / 2.384e-06, - 4.1421356237309504879e-01, /* tan(PI/8) */ - 1.414213562373095e+00, - - - -9.54e-07 * 0.941544065183021 / 2.384e-06, 1.05381e-04 * 0.941544065183021 / 2.384e-06, - 6.10352e-04 * 0.941544065183021 / 2.384e-06, -4.75883e-04 * 0.941544065183021 / 2.384e-06, - 3.4055710e-02 * 0.941544065183021 / 2.384e-06, 4.649162e-03 * 0.941544065183021 / 2.384e-06, 9.35555e-04 * 0.941544065183021 / 2.384e-06, 7.3433e-05 * 0.941544065183021 / 2.384e-06, /* 7 */ - 5.245e-06 * 0.941544065183021 / 2.384e-06, 1.7166e-05 * 0.941544065183021 / 2.384e-06, - 9.56535e-04 * 0.941544065183021 / 2.384e-06, 1.0103703e-02 * 0.941544065183021 / 2.384e-06, - -2.5527000e-02 * 0.941544065183021 / 2.384e-06, -3.914356e-03 * 0.941544065183021 / 2.384e-06, - -5.07355e-04 * 0.941544065183021 / 2.384e-06, -3.0041e-05 * 0.941544065183021 / 2.384e-06, - 3.578057213145241e-01, - 1.546020906725474e+00, - - - -9.54e-07 * 0.956940335732209 / 2.384e-06, 1.02520e-04 * 0.956940335732209 / 2.384e-06, - 5.39303e-04 * 0.956940335732209 / 2.384e-06, -1.011848e-03 * 0.956940335732209 / 2.384e-06, - 3.3659935e-02 * 0.956940335732209 / 2.384e-06, 4.703045e-03 * 0.956940335732209 / 2.384e-06, 9.15051e-04 * 0.956940335732209 / 2.384e-06, 7.0095e-05 * 0.956940335732209 / 2.384e-06, /* 6 */ - 4.768e-06 * 0.956940335732209 / 2.384e-06, 9.54e-07 * 0.956940335732209 / 2.384e-06, - 8.06808e-04 * 0.956940335732209 / 2.384e-06, 9.287834e-03 * 0.956940335732209 / 2.384e-06, - -2.6310921e-02 * 0.956940335732209 / 2.384e-06, -4.048824e-03 * 0.956940335732209 / 2.384e-06, - -5.42164e-04 * 0.956940335732209 / 2.384e-06, -3.2425e-05 * 0.956940335732209 / 2.384e-06, - 3.033466836073424e-01, - 1.662939224605090e+00, - - - -1.431e-06 * 0.970031253194544 / 2.384e-06, 9.9182e-05 * 0.970031253194544 / 2.384e-06, - 4.62532e-04 * 0.970031253194544 / 2.384e-06, -1.573563e-03 * 0.970031253194544 / 2.384e-06, - 3.3225536e-02 * 0.970031253194544 / 2.384e-06, 4.737377e-03 * 0.970031253194544 / 2.384e-06, 8.91685e-04 * 0.970031253194544 / 2.384e-06, 6.6280e-05 * 0.970031253194544 / 2.384e-06, /* 5 */ - 4.292e-06 * 0.970031253194544 / 2.384e-06, -1.3828e-05 * 0.970031253194544 / 2.384e-06, - 6.61850e-04 * 0.970031253194544 / 2.384e-06, 8.487225e-03 * 0.970031253194544 / 2.384e-06, - -2.7073860e-02 * 0.970031253194544 / 2.384e-06, -4.174709e-03 * 0.970031253194544 / 2.384e-06, - -5.76973e-04 * 0.970031253194544 / 2.384e-06, -3.4809e-05 * 0.970031253194544 / 2.384e-06, - 2.504869601913055e-01, - 1.763842528696710e+00, - - - -1.431e-06 * 0.98078528040323 / 2.384e-06, 9.5367e-05 * 0.98078528040323 / 2.384e-06, - 3.78609e-04 * 0.98078528040323 / 2.384e-06, -2.161503e-03 * 0.98078528040323 / 2.384e-06, - 3.2754898e-02 * 0.98078528040323 / 2.384e-06, 4.752159e-03 * 0.98078528040323 / 2.384e-06, 8.66413e-04 * 0.98078528040323 / 2.384e-06, 6.2943e-05 * 0.98078528040323 / 2.384e-06, /* 4 */ - 3.815e-06 * 0.98078528040323 / 2.384e-06, -2.718e-05 * 0.98078528040323 / 2.384e-06, - 5.22137e-04 * 0.98078528040323 / 2.384e-06, 7.703304e-03 * 0.98078528040323 / 2.384e-06, - -2.7815342e-02 * 0.98078528040323 / 2.384e-06, -4.290581e-03 * 0.98078528040323 / 2.384e-06, - -6.11782e-04 * 0.98078528040323 / 2.384e-06, -3.7670e-05 * 0.98078528040323 / 2.384e-06, - 1.989123673796580e-01, - 1.847759065022573e+00, - - - -1.907e-06 * 0.989176509964781 / 2.384e-06, 9.0122e-05 * 0.989176509964781 / 2.384e-06, - 2.88486e-04 * 0.989176509964781 / 2.384e-06, -2.774239e-03 * 0.989176509964781 / 2.384e-06, - 3.2248020e-02 * 0.989176509964781 / 2.384e-06, 4.748821e-03 * 0.989176509964781 / 2.384e-06, 8.38757e-04 * 0.989176509964781 / 2.384e-06, 5.9605e-05 * 0.989176509964781 / 2.384e-06, /* 3 */ - 3.338e-06 * 0.989176509964781 / 2.384e-06, -3.9577e-05 * 0.989176509964781 / 2.384e-06, - 3.88145e-04 * 0.989176509964781 / 2.384e-06, 6.937027e-03 * 0.989176509964781 / 2.384e-06, - -2.8532982e-02 * 0.989176509964781 / 2.384e-06, -4.395962e-03 * 0.989176509964781 / 2.384e-06, - -6.46591e-04 * 0.989176509964781 / 2.384e-06, -4.0531e-05 * 0.989176509964781 / 2.384e-06, - 1.483359875383474e-01, - 1.913880671464418e+00, - - - -1.907e-06 * 0.995184726672197 / 2.384e-06, 8.4400e-05 * 0.995184726672197 / 2.384e-06, - 1.91689e-04 * 0.995184726672197 / 2.384e-06, -3.411293e-03 * 0.995184726672197 / 2.384e-06, - 3.1706810e-02 * 0.995184726672197 / 2.384e-06, 4.728317e-03 * 0.995184726672197 / 2.384e-06, - 8.09669e-04 * 0.995184726672197 / 2.384e-06, 5.579e-05 * 0.995184726672197 / 2.384e-06, - 3.338e-06 * 0.995184726672197 / 2.384e-06, -5.0545e-05 * 0.995184726672197 / 2.384e-06, - 2.59876e-04 * 0.995184726672197 / 2.384e-06, 6.189346e-03 * 0.995184726672197 / 2.384e-06, - -2.9224873e-02 * 0.995184726672197 / 2.384e-06, -4.489899e-03 * 0.995184726672197 / 2.384e-06, - -6.80923e-04 * 0.995184726672197 / 2.384e-06, -4.3392e-05 * 0.995184726672197 / 2.384e-06, - 9.849140335716425e-02, - 1.961570560806461e+00, - - - -2.384e-06 * 0.998795456205172 / 2.384e-06, 7.7724e-05 * 0.998795456205172 / 2.384e-06, - 8.8215e-05 * 0.998795456205172 / 2.384e-06, -4.072189e-03 * 0.998795456205172 / 2.384e-06, - 3.1132698e-02 * 0.998795456205172 / 2.384e-06, 4.691124e-03 * 0.998795456205172 / 2.384e-06, - 7.79152e-04 * 0.998795456205172 / 2.384e-06, 5.2929e-05 * 0.998795456205172 / 2.384e-06, - 2.861e-06 * 0.998795456205172 / 2.384e-06, -6.0558e-05 * 0.998795456205172 / 2.384e-06, - 1.37329e-04 * 0.998795456205172 / 2.384e-06, 5.462170e-03 * 0.998795456205172 / 2.384e-06, - -2.9890060e-02 * 0.998795456205172 / 2.384e-06, -4.570484e-03 * 0.998795456205172 / 2.384e-06, - -7.14302e-04 * 0.998795456205172 / 2.384e-06, -4.6253e-05 * 0.998795456205172 / 2.384e-06, - 4.912684976946725e-02, - 1.990369453344394e+00, - - - 3.5780907e-02 * SQRT2 * 0.5 / 2.384e-06, 1.7876148e-02 * SQRT2 * 0.5 / 2.384e-06, - 3.134727e-03 * SQRT2 * 0.5 / 2.384e-06, 2.457142e-03 * SQRT2 * 0.5 / 2.384e-06, - 9.71317e-04 * SQRT2 * 0.5 / 2.384e-06, 2.18868e-04 * SQRT2 * 0.5 / 2.384e-06, - 1.01566e-04 * SQRT2 * 0.5 / 2.384e-06, 1.3828e-05 * SQRT2 * 0.5 / 2.384e-06, - - 3.0526638e-02 / 2.384e-06, 4.638195e-03 / 2.384e-06, 7.47204e-04 / 2.384e-06, - 4.9591e-05 / 2.384e-06, - 4.756451e-03 / 2.384e-06, 2.1458e-05 / 2.384e-06, -6.9618e-05 / 2.384e-06, /* 2.384e-06/2.384e-06 */ -}; -#endif - - -#define NS 12 -#define NL 36 - -static const FLOAT win[4][NL] = { - { - 2.382191739347913e-13, - 6.423305872147834e-13, - 9.400849094049688e-13, - 1.122435026096556e-12, - 1.183840321267481e-12, - 1.122435026096556e-12, - 9.400849094049690e-13, - 6.423305872147839e-13, - 2.382191739347918e-13, - - 5.456116108943412e-12, - 4.878985199565852e-12, - 4.240448995017367e-12, - 3.559909094758252e-12, - 2.858043359288075e-12, - 2.156177623817898e-12, - 1.475637723558783e-12, - 8.371015190102974e-13, - 2.599706096327376e-13, - - -5.456116108943412e-12, - -4.878985199565852e-12, - -4.240448995017367e-12, - -3.559909094758252e-12, - -2.858043359288076e-12, - -2.156177623817898e-12, - -1.475637723558783e-12, - -8.371015190102975e-13, - -2.599706096327376e-13, - - -2.382191739347923e-13, - -6.423305872147843e-13, - -9.400849094049696e-13, - -1.122435026096556e-12, - -1.183840321267481e-12, - -1.122435026096556e-12, - -9.400849094049694e-13, - -6.423305872147840e-13, - -2.382191739347918e-13, - }, - { - 2.382191739347913e-13, - 6.423305872147834e-13, - 9.400849094049688e-13, - 1.122435026096556e-12, - 1.183840321267481e-12, - 1.122435026096556e-12, - 9.400849094049688e-13, - 6.423305872147841e-13, - 2.382191739347918e-13, - - 5.456116108943413e-12, - 4.878985199565852e-12, - 4.240448995017367e-12, - 3.559909094758253e-12, - 2.858043359288075e-12, - 2.156177623817898e-12, - 1.475637723558782e-12, - 8.371015190102975e-13, - 2.599706096327376e-13, - - -5.461314069809755e-12, - -4.921085770524055e-12, - -4.343405037091838e-12, - -3.732668368707687e-12, - -3.093523840190885e-12, - -2.430835727329465e-12, - -1.734679010007751e-12, - -9.748253656609281e-13, - -2.797435120168326e-13, - - 0.000000000000000e+00, - 0.000000000000000e+00, - 0.000000000000000e+00, - 0.000000000000000e+00, - 0.000000000000000e+00, - 0.000000000000000e+00, - -2.283748241799531e-13, - -4.037858874020686e-13, - -2.146547464825323e-13, - }, - { - 1.316524975873958e-01, /* win[SHORT_TYPE] */ - 4.142135623730950e-01, - 7.673269879789602e-01, - - 1.091308501069271e+00, /* tantab_l */ - 1.303225372841206e+00, - 1.569685577117490e+00, - 1.920982126971166e+00, - 2.414213562373094e+00, - 3.171594802363212e+00, - 4.510708503662055e+00, - 7.595754112725146e+00, - 2.290376554843115e+01, - - 0.98480775301220802032, /* cx */ - 0.64278760968653936292, - 0.34202014332566882393, - 0.93969262078590842791, - -0.17364817766693030343, - -0.76604444311897790243, - 0.86602540378443870761, - 0.500000000000000e+00, - - -5.144957554275265e-01, /* ca */ - -4.717319685649723e-01, - -3.133774542039019e-01, - -1.819131996109812e-01, - -9.457419252642064e-02, - -4.096558288530405e-02, - -1.419856857247115e-02, - -3.699974673760037e-03, - - 8.574929257125442e-01, /* cs */ - 8.817419973177052e-01, - 9.496286491027329e-01, - 9.833145924917901e-01, - 9.955178160675857e-01, - 9.991605581781475e-01, - 9.998991952444470e-01, - 9.999931550702802e-01, - }, - { - 0.000000000000000e+00, - 0.000000000000000e+00, - 0.000000000000000e+00, - 0.000000000000000e+00, - 0.000000000000000e+00, - 0.000000000000000e+00, - 2.283748241799531e-13, - 4.037858874020686e-13, - 2.146547464825323e-13, - - 5.461314069809755e-12, - 4.921085770524055e-12, - 4.343405037091838e-12, - 3.732668368707687e-12, - 3.093523840190885e-12, - 2.430835727329466e-12, - 1.734679010007751e-12, - 9.748253656609281e-13, - 2.797435120168326e-13, - - -5.456116108943413e-12, - -4.878985199565852e-12, - -4.240448995017367e-12, - -3.559909094758253e-12, - -2.858043359288075e-12, - -2.156177623817898e-12, - -1.475637723558782e-12, - -8.371015190102975e-13, - -2.599706096327376e-13, - - -2.382191739347913e-13, - -6.423305872147834e-13, - -9.400849094049688e-13, - -1.122435026096556e-12, - -1.183840321267481e-12, - -1.122435026096556e-12, - -9.400849094049688e-13, - -6.423305872147841e-13, - -2.382191739347918e-13, - } -}; - -#define tantab_l (win[SHORT_TYPE]+3) -#define cx (win[SHORT_TYPE]+12) -#define ca (win[SHORT_TYPE]+20) -#define cs (win[SHORT_TYPE]+28) - -/************************************************************************ -* -* window_subband() -* -* PURPOSE: Overlapping window on PCM samples -* -* SEMANTICS: -* 32 16-bit pcm samples are scaled to fractional 2's complement and -* concatenated to the end of the window buffer #x#. The updated window -* buffer #x# is then windowed by the analysis window #c# to produce the -* windowed sample #z# -* -************************************************************************/ - -/* - * new IDCT routine written by Takehiro TOMINAGA - */ -static const int order[] = { - 0, 1, 16, 17, 8, 9, 24, 25, 4, 5, 20, 21, 12, 13, 28, 29, - 2, 3, 18, 19, 10, 11, 26, 27, 6, 7, 22, 23, 14, 15, 30, 31 -}; - - -/* returns sum_j=0^31 a[j]*cos(PI*j*(k+1/2)/32), 0<=k<32 */ -inline static void -window_subband(const sample_t * x1, FLOAT a[SBLIMIT]) -{ - int i; - FLOAT const *wp = enwindow + 10; - - const sample_t *x2 = &x1[238 - 14 - 286]; - - for (i = -15; i < 0; i++) { - FLOAT w, s, t; - - w = wp[-10]; - s = x2[-224] * w; - t = x1[224] * w; - w = wp[-9]; - s += x2[-160] * w; - t += x1[160] * w; - w = wp[-8]; - s += x2[-96] * w; - t += x1[96] * w; - w = wp[-7]; - s += x2[-32] * w; - t += x1[32] * w; - w = wp[-6]; - s += x2[32] * w; - t += x1[-32] * w; - w = wp[-5]; - s += x2[96] * w; - t += x1[-96] * w; - w = wp[-4]; - s += x2[160] * w; - t += x1[-160] * w; - w = wp[-3]; - s += x2[224] * w; - t += x1[-224] * w; - - w = wp[-2]; - s += x1[-256] * w; - t -= x2[256] * w; - w = wp[-1]; - s += x1[-192] * w; - t -= x2[192] * w; - w = wp[0]; - s += x1[-128] * w; - t -= x2[128] * w; - w = wp[1]; - s += x1[-64] * w; - t -= x2[64] * w; - w = wp[2]; - s += x1[0] * w; - t -= x2[0] * w; - w = wp[3]; - s += x1[64] * w; - t -= x2[-64] * w; - w = wp[4]; - s += x1[128] * w; - t -= x2[-128] * w; - w = wp[5]; - s += x1[192] * w; - t -= x2[-192] * w; - - /* - * this multiplyer could be removed, but it needs more 256 FLOAT data. - * thinking about the data cache performance, I think we should not - * use such a huge table. tt 2000/Oct/25 - */ - s *= wp[6]; - w = t - s; - a[30 + i * 2] = t + s; - a[31 + i * 2] = wp[7] * w; - wp += 18; - x1--; - x2++; - } - { - FLOAT s, t, u, v; - t = x1[-16] * wp[-10]; - s = x1[-32] * wp[-2]; - t += (x1[-48] - x1[16]) * wp[-9]; - s += x1[-96] * wp[-1]; - t += (x1[-80] + x1[48]) * wp[-8]; - s += x1[-160] * wp[0]; - t += (x1[-112] - x1[80]) * wp[-7]; - s += x1[-224] * wp[1]; - t += (x1[-144] + x1[112]) * wp[-6]; - s -= x1[32] * wp[2]; - t += (x1[-176] - x1[144]) * wp[-5]; - s -= x1[96] * wp[3]; - t += (x1[-208] + x1[176]) * wp[-4]; - s -= x1[160] * wp[4]; - t += (x1[-240] - x1[208]) * wp[-3]; - s -= x1[224]; - - u = s - t; - v = s + t; - - t = a[14]; - s = a[15] - t; - - a[31] = v + t; /* A0 */ - a[30] = u + s; /* A1 */ - a[15] = u - s; /* A2 */ - a[14] = v - t; /* A3 */ - } - { - FLOAT xr; - xr = a[28] - a[0]; - a[0] += a[28]; - a[28] = xr * wp[-2 * 18 + 7]; - xr = a[29] - a[1]; - a[1] += a[29]; - a[29] = xr * wp[-2 * 18 + 7]; - - xr = a[26] - a[2]; - a[2] += a[26]; - a[26] = xr * wp[-4 * 18 + 7]; - xr = a[27] - a[3]; - a[3] += a[27]; - a[27] = xr * wp[-4 * 18 + 7]; - - xr = a[24] - a[4]; - a[4] += a[24]; - a[24] = xr * wp[-6 * 18 + 7]; - xr = a[25] - a[5]; - a[5] += a[25]; - a[25] = xr * wp[-6 * 18 + 7]; - - xr = a[22] - a[6]; - a[6] += a[22]; - a[22] = xr * SQRT2; - xr = a[23] - a[7]; - a[7] += a[23]; - a[23] = xr * SQRT2 - a[7]; - a[7] -= a[6]; - a[22] -= a[7]; - a[23] -= a[22]; - - xr = a[6]; - a[6] = a[31] - xr; - a[31] = a[31] + xr; - xr = a[7]; - a[7] = a[30] - xr; - a[30] = a[30] + xr; - xr = a[22]; - a[22] = a[15] - xr; - a[15] = a[15] + xr; - xr = a[23]; - a[23] = a[14] - xr; - a[14] = a[14] + xr; - - xr = a[20] - a[8]; - a[8] += a[20]; - a[20] = xr * wp[-10 * 18 + 7]; - xr = a[21] - a[9]; - a[9] += a[21]; - a[21] = xr * wp[-10 * 18 + 7]; - - xr = a[18] - a[10]; - a[10] += a[18]; - a[18] = xr * wp[-12 * 18 + 7]; - xr = a[19] - a[11]; - a[11] += a[19]; - a[19] = xr * wp[-12 * 18 + 7]; - - xr = a[16] - a[12]; - a[12] += a[16]; - a[16] = xr * wp[-14 * 18 + 7]; - xr = a[17] - a[13]; - a[13] += a[17]; - a[17] = xr * wp[-14 * 18 + 7]; - - xr = -a[20] + a[24]; - a[20] += a[24]; - a[24] = xr * wp[-12 * 18 + 7]; - xr = -a[21] + a[25]; - a[21] += a[25]; - a[25] = xr * wp[-12 * 18 + 7]; - - xr = a[4] - a[8]; - a[4] += a[8]; - a[8] = xr * wp[-12 * 18 + 7]; - xr = a[5] - a[9]; - a[5] += a[9]; - a[9] = xr * wp[-12 * 18 + 7]; - - xr = a[0] - a[12]; - a[0] += a[12]; - a[12] = xr * wp[-4 * 18 + 7]; - xr = a[1] - a[13]; - a[1] += a[13]; - a[13] = xr * wp[-4 * 18 + 7]; - xr = a[16] - a[28]; - a[16] += a[28]; - a[28] = xr * wp[-4 * 18 + 7]; - xr = -a[17] + a[29]; - a[17] += a[29]; - a[29] = xr * wp[-4 * 18 + 7]; - - xr = SQRT2 * (a[2] - a[10]); - a[2] += a[10]; - a[10] = xr; - xr = SQRT2 * (a[3] - a[11]); - a[3] += a[11]; - a[11] = xr; - xr = SQRT2 * (-a[18] + a[26]); - a[18] += a[26]; - a[26] = xr - a[18]; - xr = SQRT2 * (-a[19] + a[27]); - a[19] += a[27]; - a[27] = xr - a[19]; - - xr = a[2]; - a[19] -= a[3]; - a[3] -= xr; - a[2] = a[31] - xr; - a[31] += xr; - xr = a[3]; - a[11] -= a[19]; - a[18] -= xr; - a[3] = a[30] - xr; - a[30] += xr; - xr = a[18]; - a[27] -= a[11]; - a[19] -= xr; - a[18] = a[15] - xr; - a[15] += xr; - - xr = a[19]; - a[10] -= xr; - a[19] = a[14] - xr; - a[14] += xr; - xr = a[10]; - a[11] -= xr; - a[10] = a[23] - xr; - a[23] += xr; - xr = a[11]; - a[26] -= xr; - a[11] = a[22] - xr; - a[22] += xr; - xr = a[26]; - a[27] -= xr; - a[26] = a[7] - xr; - a[7] += xr; - - xr = a[27]; - a[27] = a[6] - xr; - a[6] += xr; - - xr = SQRT2 * (a[0] - a[4]); - a[0] += a[4]; - a[4] = xr; - xr = SQRT2 * (a[1] - a[5]); - a[1] += a[5]; - a[5] = xr; - xr = SQRT2 * (a[16] - a[20]); - a[16] += a[20]; - a[20] = xr; - xr = SQRT2 * (a[17] - a[21]); - a[17] += a[21]; - a[21] = xr; - - xr = -SQRT2 * (a[8] - a[12]); - a[8] += a[12]; - a[12] = xr - a[8]; - xr = -SQRT2 * (a[9] - a[13]); - a[9] += a[13]; - a[13] = xr - a[9]; - xr = -SQRT2 * (a[25] - a[29]); - a[25] += a[29]; - a[29] = xr - a[25]; - xr = -SQRT2 * (a[24] + a[28]); - a[24] -= a[28]; - a[28] = xr - a[24]; - - xr = a[24] - a[16]; - a[24] = xr; - xr = a[20] - xr; - a[20] = xr; - xr = a[28] - xr; - a[28] = xr; - - xr = a[25] - a[17]; - a[25] = xr; - xr = a[21] - xr; - a[21] = xr; - xr = a[29] - xr; - a[29] = xr; - - xr = a[17] - a[1]; - a[17] = xr; - xr = a[9] - xr; - a[9] = xr; - xr = a[25] - xr; - a[25] = xr; - xr = a[5] - xr; - a[5] = xr; - xr = a[21] - xr; - a[21] = xr; - xr = a[13] - xr; - a[13] = xr; - xr = a[29] - xr; - a[29] = xr; - - xr = a[1] - a[0]; - a[1] = xr; - xr = a[16] - xr; - a[16] = xr; - xr = a[17] - xr; - a[17] = xr; - xr = a[8] - xr; - a[8] = xr; - xr = a[9] - xr; - a[9] = xr; - xr = a[24] - xr; - a[24] = xr; - xr = a[25] - xr; - a[25] = xr; - xr = a[4] - xr; - a[4] = xr; - xr = a[5] - xr; - a[5] = xr; - xr = a[20] - xr; - a[20] = xr; - xr = a[21] - xr; - a[21] = xr; - xr = a[12] - xr; - a[12] = xr; - xr = a[13] - xr; - a[13] = xr; - xr = a[28] - xr; - a[28] = xr; - xr = a[29] - xr; - a[29] = xr; - - xr = a[0]; - a[0] += a[31]; - a[31] -= xr; - xr = a[1]; - a[1] += a[30]; - a[30] -= xr; - xr = a[16]; - a[16] += a[15]; - a[15] -= xr; - xr = a[17]; - a[17] += a[14]; - a[14] -= xr; - xr = a[8]; - a[8] += a[23]; - a[23] -= xr; - xr = a[9]; - a[9] += a[22]; - a[22] -= xr; - xr = a[24]; - a[24] += a[7]; - a[7] -= xr; - xr = a[25]; - a[25] += a[6]; - a[6] -= xr; - xr = a[4]; - a[4] += a[27]; - a[27] -= xr; - xr = a[5]; - a[5] += a[26]; - a[26] -= xr; - xr = a[20]; - a[20] += a[11]; - a[11] -= xr; - xr = a[21]; - a[21] += a[10]; - a[10] -= xr; - xr = a[12]; - a[12] += a[19]; - a[19] -= xr; - xr = a[13]; - a[13] += a[18]; - a[18] -= xr; - xr = a[28]; - a[28] += a[3]; - a[3] -= xr; - xr = a[29]; - a[29] += a[2]; - a[2] -= xr; - } - -} - - -/*-------------------------------------------------------------------*/ -/* */ -/* Function: Calculation of the MDCT */ -/* In the case of long blocks (type 0,1,3) there are */ -/* 36 coefficents in the time domain and 18 in the frequency */ -/* domain. */ -/* In the case of short blocks (type 2) there are 3 */ -/* transformations with short length. This leads to 12 coefficents */ -/* in the time and 6 in the frequency domain. In this case the */ -/* results are stored side by side in the vector out[]. */ -/* */ -/* New layer3 */ -/* */ -/*-------------------------------------------------------------------*/ - -inline static void -mdct_short(FLOAT * inout) -{ - int l; - for (l = 0; l < 3; l++) { - FLOAT tc0, tc1, tc2, ts0, ts1, ts2; - - ts0 = inout[2 * 3] * win[SHORT_TYPE][0] - inout[5 * 3]; - tc0 = inout[0 * 3] * win[SHORT_TYPE][2] - inout[3 * 3]; - tc1 = ts0 + tc0; - tc2 = ts0 - tc0; - - ts0 = inout[5 * 3] * win[SHORT_TYPE][0] + inout[2 * 3]; - tc0 = inout[3 * 3] * win[SHORT_TYPE][2] + inout[0 * 3]; - ts1 = ts0 + tc0; - ts2 = -ts0 + tc0; - - tc0 = (inout[1 * 3] * win[SHORT_TYPE][1] - inout[4 * 3]) * 2.069978111953089e-11; /* tritab_s[1] */ - ts0 = (inout[4 * 3] * win[SHORT_TYPE][1] + inout[1 * 3]) * 2.069978111953089e-11; /* tritab_s[1] */ - - inout[3 * 0] = tc1 * 1.907525191737280e-11 /* tritab_s[2] */ + tc0; - inout[3 * 5] = -ts1 * 1.907525191737280e-11 /* tritab_s[0] */ + ts0; - - tc2 = tc2 * 0.86602540378443870761 * 1.907525191737281e-11 /* tritab_s[2] */ ; - ts1 = ts1 * 0.5 * 1.907525191737281e-11 + ts0; - inout[3 * 1] = tc2 - ts1; - inout[3 * 2] = tc2 + ts1; - - tc1 = tc1 * 0.5 * 1.907525191737281e-11 - tc0; - ts2 = ts2 * 0.86602540378443870761 * 1.907525191737281e-11 /* tritab_s[0] */ ; - inout[3 * 3] = tc1 + ts2; - inout[3 * 4] = tc1 - ts2; - - inout++; - } -} - -inline static void -mdct_long(FLOAT * out, FLOAT const *in) -{ - FLOAT ct, st; - { - FLOAT tc1, tc2, tc3, tc4, ts5, ts6, ts7, ts8; - /* 1,2, 5,6, 9,10, 13,14, 17 */ - tc1 = in[17] - in[9]; - tc3 = in[15] - in[11]; - tc4 = in[14] - in[12]; - ts5 = in[0] + in[8]; - ts6 = in[1] + in[7]; - ts7 = in[2] + in[6]; - ts8 = in[3] + in[5]; - - out[17] = (ts5 + ts7 - ts8) - (ts6 - in[4]); - st = (ts5 + ts7 - ts8) * cx[7] + (ts6 - in[4]); - ct = (tc1 - tc3 - tc4) * cx[6]; - out[5] = ct + st; - out[6] = ct - st; - - tc2 = (in[16] - in[10]) * cx[6]; - ts6 = ts6 * cx[7] + in[4]; - ct = tc1 * cx[0] + tc2 + tc3 * cx[1] + tc4 * cx[2]; - st = -ts5 * cx[4] + ts6 - ts7 * cx[5] + ts8 * cx[3]; - out[1] = ct + st; - out[2] = ct - st; - - ct = tc1 * cx[1] - tc2 - tc3 * cx[2] + tc4 * cx[0]; - st = -ts5 * cx[5] + ts6 - ts7 * cx[3] + ts8 * cx[4]; - out[9] = ct + st; - out[10] = ct - st; - - ct = tc1 * cx[2] - tc2 + tc3 * cx[0] - tc4 * cx[1]; - st = ts5 * cx[3] - ts6 + ts7 * cx[4] - ts8 * cx[5]; - out[13] = ct + st; - out[14] = ct - st; - } - { - FLOAT ts1, ts2, ts3, ts4, tc5, tc6, tc7, tc8; - - ts1 = in[8] - in[0]; - ts3 = in[6] - in[2]; - ts4 = in[5] - in[3]; - tc5 = in[17] + in[9]; - tc6 = in[16] + in[10]; - tc7 = in[15] + in[11]; - tc8 = in[14] + in[12]; - - out[0] = (tc5 + tc7 + tc8) + (tc6 + in[13]); - ct = (tc5 + tc7 + tc8) * cx[7] - (tc6 + in[13]); - st = (ts1 - ts3 + ts4) * cx[6]; - out[11] = ct + st; - out[12] = ct - st; - - ts2 = (in[7] - in[1]) * cx[6]; - tc6 = in[13] - tc6 * cx[7]; - ct = tc5 * cx[3] - tc6 + tc7 * cx[4] + tc8 * cx[5]; - st = ts1 * cx[2] + ts2 + ts3 * cx[0] + ts4 * cx[1]; - out[3] = ct + st; - out[4] = ct - st; - - ct = -tc5 * cx[5] + tc6 - tc7 * cx[3] - tc8 * cx[4]; - st = ts1 * cx[1] + ts2 - ts3 * cx[2] - ts4 * cx[0]; - out[7] = ct + st; - out[8] = ct - st; - - ct = -tc5 * cx[4] + tc6 - tc7 * cx[5] - tc8 * cx[3]; - st = ts1 * cx[0] - ts2 + ts3 * cx[1] - ts4 * cx[2]; - out[15] = ct + st; - out[16] = ct - st; - } -} - - -void -mdct_sub48(lame_internal_flags * gfc, const sample_t * w0, const sample_t * w1) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - EncStateVar_t *const esv = &gfc->sv_enc; - int gr, k, ch; - const sample_t *wk; - - wk = w0 + 286; - /* thinking cache performance, ch->gr loop is better than gr->ch loop */ - for (ch = 0; ch < cfg->channels_out; ch++) { - for (gr = 0; gr < cfg->mode_gr; gr++) { - int band; - gr_info *const gi = &(gfc->l3_side.tt[gr][ch]); - FLOAT *mdct_enc = gi->xr; - FLOAT *samp = esv->sb_sample[ch][1 - gr][0]; - - for (k = 0; k < 18 / 2; k++) { - window_subband(wk, samp); - window_subband(wk + 32, samp + 32); - samp += 64; - wk += 64; - /* - * Compensate for inversion in the analysis filter - */ - for (band = 1; band < 32; band += 2) { - samp[band - 32] *= -1; - } - } - - /* - * Perform imdct of 18 previous subband samples - * + 18 current subband samples - */ - for (band = 0; band < 32; band++, mdct_enc += 18) { - int type = gi->block_type; - FLOAT const *const band0 = esv->sb_sample[ch][gr][0] + order[band]; - FLOAT *const band1 = esv->sb_sample[ch][1 - gr][0] + order[band]; - if (gi->mixed_block_flag && band < 2) - type = 0; - if (esv->amp_filter[band] < 1e-12) { - memset(mdct_enc, 0, 18 * sizeof(FLOAT)); - } - else { - if (esv->amp_filter[band] < 1.0) { - for (k = 0; k < 18; k++) - band1[k * 32] *= esv->amp_filter[band]; - } - if (type == SHORT_TYPE) { - for (k = -NS / 4; k < 0; k++) { - FLOAT const w = win[SHORT_TYPE][k + 3]; - mdct_enc[k * 3 + 9] = band0[(9 + k) * 32] * w - band0[(8 - k) * 32]; - mdct_enc[k * 3 + 18] = band0[(14 - k) * 32] * w + band0[(15 + k) * 32]; - mdct_enc[k * 3 + 10] = band0[(15 + k) * 32] * w - band0[(14 - k) * 32]; - mdct_enc[k * 3 + 19] = band1[(2 - k) * 32] * w + band1[(3 + k) * 32]; - mdct_enc[k * 3 + 11] = band1[(3 + k) * 32] * w - band1[(2 - k) * 32]; - mdct_enc[k * 3 + 20] = band1[(8 - k) * 32] * w + band1[(9 + k) * 32]; - } - mdct_short(mdct_enc); - } - else { - FLOAT work[18]; - for (k = -NL / 4; k < 0; k++) { - FLOAT a, b; - a = win[type][k + 27] * band1[(k + 9) * 32] - + win[type][k + 36] * band1[(8 - k) * 32]; - b = win[type][k + 9] * band0[(k + 9) * 32] - - win[type][k + 18] * band0[(8 - k) * 32]; - work[k + 9] = a - b * tantab_l[k + 9]; - work[k + 18] = a * tantab_l[k + 9] + b; - } - - mdct_long(mdct_enc, work); - } - } - /* - * Perform aliasing reduction butterfly - */ - if (type != SHORT_TYPE && band != 0) { - for (k = 7; k >= 0; --k) { - FLOAT bu, bd; - bu = mdct_enc[k] * ca[k] + mdct_enc[-1 - k] * cs[k]; - bd = mdct_enc[k] * cs[k] - mdct_enc[-1 - k] * ca[k]; - - mdct_enc[-1 - k] = bu; - mdct_enc[k] = bd; - } - } - } - } - wk = w1 + 286; - if (cfg->mode_gr == 1) { - memcpy(esv->sb_sample[ch][0], esv->sb_sample[ch][1], 576 * sizeof(FLOAT)); - } - } -} diff --git a/platform/win32/msvc/external/lame/libmp3lame/newmdct.h b/platform/win32/msvc/external/lame/libmp3lame/newmdct.h deleted file mode 100644 index 0b58a954c88..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/newmdct.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * New Modified DCT include file - * - * Copyright (c) 1999 Takehiro TOMINAGA - * - * 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 LAME_NEWMDCT_H -#define LAME_NEWMDCT_H - -void mdct_sub48(lame_internal_flags * gfc, const sample_t * w0, const sample_t * w1); - -#endif /* LAME_NEWMDCT_H */ diff --git a/platform/win32/msvc/external/lame/libmp3lame/presets.c b/platform/win32/msvc/external/lame/libmp3lame/presets.c deleted file mode 100644 index 16f3a94f8aa..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/presets.c +++ /dev/null @@ -1,400 +0,0 @@ -/* - * presets.c -- Apply presets - * - * Copyright (c) 2002-2008 Gabriel Bouvigne - * Copyright (c) 2007-2011 Robert Hegemann - * - * 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 "lame.h" -#include "machine.h" -#include "set_get.h" -#include "encoder.h" -#include "util.h" -#include "lame_global_flags.h" - -#define SET_OPTION(opt, val, def) if (enforce) \ - (void) lame_set_##opt(gfp, val); \ - else if (!(fabs(lame_get_##opt(gfp) - def) > 0)) \ - (void) lame_set_##opt(gfp, val); - -#define SET__OPTION(opt, val, def) if (enforce) \ - lame_set_##opt(gfp, val); \ - else if (!(fabs(lame_get_##opt(gfp) - def) > 0)) \ - lame_set_##opt(gfp, val); - -#undef Min -#undef Max - -static inline int -min_int(int a, int b) -{ - if (a < b) { - return a; - } - return b; -} - -static inline int -max_int(int a, int b) -{ - if (a > b) { - return a; - } - return b; -} - - - -typedef struct { - int vbr_q; - int quant_comp; - int quant_comp_s; - int expY; - FLOAT st_lrm; /*short threshold */ - FLOAT st_s; - FLOAT masking_adj; - FLOAT masking_adj_short; - FLOAT ath_lower; - FLOAT ath_curve; - FLOAT ath_sensitivity; - FLOAT interch; - int safejoint; - int sfb21mod; - FLOAT msfix; - FLOAT minval; - FLOAT ath_fixpoint; -} vbr_presets_t; - - /* *INDENT-OFF* */ - - /* Switch mappings for VBR mode VBR_RH */ - static const vbr_presets_t vbr_old_switch_map[] = { - /*vbr_q qcomp_l qcomp_s expY st_lrm st_s mask adj_l adj_s ath_lower ath_curve ath_sens interChR safejoint sfb21mod msfix */ - {0, 9, 9, 0, 5.20, 125.0, -4.2, -6.3, 4.8, 1, 0, 0, 2, 21, 0.97, 5, 100}, - {1, 9, 9, 0, 5.30, 125.0, -3.6, -5.6, 4.5, 1.5, 0, 0, 2, 21, 1.35, 5, 100}, - {2, 9, 9, 0, 5.60, 125.0, -2.2, -3.5, 2.8, 2, 0, 0, 2, 21, 1.49, 5, 100}, - {3, 9, 9, 1, 5.80, 130.0, -1.8, -2.8, 2.6, 3, -4, 0, 2, 20, 1.64, 5, 100}, - {4, 9, 9, 1, 6.00, 135.0, -0.7, -1.1, 1.1, 3.5, -8, 0, 2, 0, 1.79, 5, 100}, - {5, 9, 9, 1, 6.40, 140.0, 0.5, 0.4, -7.5, 4, -12, 0.0002, 0, 0, 1.95, 5, 100}, - {6, 9, 9, 1, 6.60, 145.0, 0.67, 0.65, -14.7, 6.5, -19, 0.0004, 0, 0, 2.30, 5, 100}, - {7, 9, 9, 1, 6.60, 145.0, 0.8, 0.75, -19.7, 8, -22, 0.0006, 0, 0, 2.70, 5, 100}, - {8, 9, 9, 1, 6.60, 145.0, 1.2, 1.15, -27.5, 10, -23, 0.0007, 0, 0, 0, 5, 100}, - {9, 9, 9, 1, 6.60, 145.0, 1.6, 1.6, -36, 11, -25, 0.0008, 0, 0, 0, 5, 100}, - {10, 9, 9, 1, 6.60, 145.0, 2.0, 2.0, -36, 12, -25, 0.0008, 0, 0, 0, 5, 100} - }; - - static const vbr_presets_t vbr_mt_psy_switch_map[] = { - /*vbr_q qcomp_l qcomp_s expY st_lrm st_s mask adj_l adj_s ath_lower ath_curve ath_sens --- safejoint sfb21mod msfix */ - {0, 9, 9, 0, 4.20, 25.0, -6.8, -6.8, 7.1, 1, 0, 0, 2, 31, 1.000, 5, 100}, - {1, 9, 9, 0, 4.20, 25.0, -4.8, -4.8, 5.4, 1.4, -1, 0, 2, 27, 1.122, 5, 98}, - {2, 9, 9, 0, 4.20, 25.0, -2.6, -2.6, 3.7, 2.0, -3, 0, 2, 23, 1.288, 5, 97}, - {3, 9, 9, 1, 4.20, 25.0, -1.6, -1.6, 2.0, 2.0, -5, 0, 2, 18, 1.479, 5, 96}, - {4, 9, 9, 1, 4.20, 25.0, -0.0, -0.0, 0.0, 2.0, -8, 0, 2, 12, 1.698, 5, 95}, - {5, 9, 9, 1, 4.20, 25.0, 1.3, 1.3, -6, 3.5, -11, 0, 2, 8, 1.950, 5, 94.2}, -#if 0 - {6, 9, 9, 1, 4.50, 100.0, 1.5, 1.5, -24.0, 6.0, -14, 0, 2, 4, 2.239, 3, 93.9}, - {7, 9, 9, 1, 4.80, 200.0, 1.7, 1.7, -28.0, 9.0, -20, 0, 2, 0, 2.570, 1, 93.6}, -#else - {6, 9, 9, 1, 4.50, 100.0, 2.2, 2.3, -12.0, 6.0, -14, 0, 2, 4, 2.239, 3, 93.9}, - {7, 9, 9, 1, 4.80, 200.0, 2.7, 2.7, -18.0, 9.0, -17, 0, 2, 0, 2.570, 1, 93.6}, -#endif - {8, 9, 9, 1, 5.30, 300.0, 2.8, 2.8, -21.0, 10.0, -23, 0.0002, 0, 0, 2.951, 0, 93.3}, - {9, 9, 9, 1, 6.60, 300.0, 2.8, 2.8, -23.0, 11.0, -25, 0.0006, 0, 0, 3.388, 0, 93.3}, - {10, 9, 9, 1, 25.00, 300.0, 2.8, 2.8, -25.0, 12.0, -27, 0.0025, 0, 0, 3.500, 0, 93.3} - }; - - /* *INDENT-ON* */ - -static vbr_presets_t const* -get_vbr_preset(int v) -{ - switch (v) { - case vbr_mtrh: - case vbr_mt: - return &vbr_mt_psy_switch_map[0]; - default: - return &vbr_old_switch_map[0]; - } -} - -#define NOOP(m) (void)p.m -#define LERP(m) (p.m = p.m + x * (q.m - p.m)) - -static void -apply_vbr_preset(lame_global_flags * gfp, int a, int enforce) -{ - vbr_presets_t const *vbr_preset = get_vbr_preset(lame_get_VBR(gfp)); - float x = gfp->VBR_q_frac; - vbr_presets_t p = vbr_preset[a]; - vbr_presets_t q = vbr_preset[a + 1]; - vbr_presets_t const *set = &p; - - NOOP(vbr_q); - NOOP(quant_comp); - NOOP(quant_comp_s); - NOOP(expY); - LERP(st_lrm); - LERP(st_s); - LERP(masking_adj); - LERP(masking_adj_short); - LERP(ath_lower); - LERP(ath_curve); - LERP(ath_sensitivity); - LERP(interch); - NOOP(safejoint); - LERP(sfb21mod); - LERP(msfix); - LERP(minval); - LERP(ath_fixpoint); - - (void) lame_set_VBR_q(gfp, set->vbr_q); - SET_OPTION(quant_comp, set->quant_comp, -1); - SET_OPTION(quant_comp_short, set->quant_comp_s, -1); - if (set->expY) { - (void) lame_set_experimentalY(gfp, set->expY); - } - SET_OPTION(short_threshold_lrm, set->st_lrm, -1); - SET_OPTION(short_threshold_s, set->st_s, -1); - SET_OPTION(maskingadjust, set->masking_adj, 0); - SET_OPTION(maskingadjust_short, set->masking_adj_short, 0); - if (lame_get_VBR(gfp) == vbr_mt || lame_get_VBR(gfp) == vbr_mtrh) { - lame_set_ATHtype(gfp, 5); - } - SET_OPTION(ATHlower, set->ath_lower, 0); - SET_OPTION(ATHcurve, set->ath_curve, -1); - SET_OPTION(athaa_sensitivity, set->ath_sensitivity, 0); - if (set->interch > 0) { - SET_OPTION(interChRatio, set->interch, -1); - } - - /* parameters for which there is no proper set/get interface */ - if (set->safejoint > 0) { - (void) lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); - } - if (set->sfb21mod > 0) { - int const nsp = lame_get_exp_nspsytune(gfp); - int const val = (nsp >> 20) & 63; - if (val == 0) { - int const sf21mod = (set->sfb21mod << 20) | nsp; - (void) lame_set_exp_nspsytune(gfp, sf21mod); - } - } - SET__OPTION(msfix, set->msfix, -1); - - if (enforce == 0) { - gfp->VBR_q = a; - gfp->VBR_q_frac = x; - } - gfp->internal_flags->cfg.minval = set->minval; - gfp->internal_flags->cfg.ATHfixpoint = set->ath_fixpoint; -} - -static int -apply_abr_preset(lame_global_flags * gfp, int preset, int enforce) -{ - typedef struct { - int abr_kbps; - int quant_comp; - int quant_comp_s; - int safejoint; - FLOAT nsmsfix; - FLOAT st_lrm; /*short threshold */ - FLOAT st_s; - FLOAT scale; - FLOAT masking_adj; - FLOAT ath_lower; - FLOAT ath_curve; - FLOAT interch; - int sfscale; - } abr_presets_t; - - - /* *INDENT-OFF* */ - - /* - * Switch mappings for ABR mode - */ - const abr_presets_t abr_switch_map[] = { - /* kbps quant q_s safejoint nsmsfix st_lrm st_s scale msk ath_lwr ath_curve interch , sfscale */ - { 8, 9, 9, 0, 0, 6.60, 145, 0.95, 0, -30.0, 11, 0.0012, 1}, /* 8, impossible to use in stereo */ - { 16, 9, 9, 0, 0, 6.60, 145, 0.95, 0, -25.0, 11, 0.0010, 1}, /* 16 */ - { 24, 9, 9, 0, 0, 6.60, 145, 0.95, 0, -20.0, 11, 0.0010, 1}, /* 24 */ - { 32, 9, 9, 0, 0, 6.60, 145, 0.95, 0, -15.0, 11, 0.0010, 1}, /* 32 */ - { 40, 9, 9, 0, 0, 6.60, 145, 0.95, 0, -10.0, 11, 0.0009, 1}, /* 40 */ - { 48, 9, 9, 0, 0, 6.60, 145, 0.95, 0, -10.0, 11, 0.0009, 1}, /* 48 */ - { 56, 9, 9, 0, 0, 6.60, 145, 0.95, 0, -6.0, 11, 0.0008, 1}, /* 56 */ - { 64, 9, 9, 0, 0, 6.60, 145, 0.95, 0, -2.0, 11, 0.0008, 1}, /* 64 */ - { 80, 9, 9, 0, 0, 6.60, 145, 0.95, 0, .0, 8, 0.0007, 1}, /* 80 */ - { 96, 9, 9, 0, 2.50, 6.60, 145, 0.95, 0, 1.0, 5.5, 0.0006, 1}, /* 96 */ - {112, 9, 9, 0, 2.25, 6.60, 145, 0.95, 0, 2.0, 4.5, 0.0005, 1}, /* 112 */ - {128, 9, 9, 0, 1.95, 6.40, 140, 0.95, 0, 3.0, 4, 0.0002, 1}, /* 128 */ - {160, 9, 9, 1, 1.79, 6.00, 135, 0.95, -2, 5.0, 3.5, 0, 1}, /* 160 */ - {192, 9, 9, 1, 1.49, 5.60, 125, 0.97, -4, 7.0, 3, 0, 0}, /* 192 */ - {224, 9, 9, 1, 1.25, 5.20, 125, 0.98, -6, 9.0, 2, 0, 0}, /* 224 */ - {256, 9, 9, 1, 0.97, 5.20, 125, 1.00, -8, 10.0, 1, 0, 0}, /* 256 */ - {320, 9, 9, 1, 0.90, 5.20, 125, 1.00, -10, 12.0, 0, 0, 0} /* 320 */ - }; - - /* *INDENT-ON* */ - - /* Variables for the ABR stuff */ - int r; - int actual_bitrate = preset; - - r = nearestBitrateFullIndex(preset); - - (void) lame_set_VBR(gfp, vbr_abr); - (void) lame_set_VBR_mean_bitrate_kbps(gfp, (actual_bitrate)); - (void) lame_set_VBR_mean_bitrate_kbps(gfp, min_int(lame_get_VBR_mean_bitrate_kbps(gfp), 320)); - (void) lame_set_VBR_mean_bitrate_kbps(gfp, max_int(lame_get_VBR_mean_bitrate_kbps(gfp), 8)); - (void) lame_set_brate(gfp, lame_get_VBR_mean_bitrate_kbps(gfp)); - - - /* parameters for which there is no proper set/get interface */ - if (abr_switch_map[r].safejoint > 0) - (void) lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); /* safejoint */ - - if (abr_switch_map[r].sfscale > 0) - (void) lame_set_sfscale(gfp, 1); - - - SET_OPTION(quant_comp, abr_switch_map[r].quant_comp, -1); - SET_OPTION(quant_comp_short, abr_switch_map[r].quant_comp_s, -1); - - SET__OPTION(msfix, abr_switch_map[r].nsmsfix, -1); - - SET_OPTION(short_threshold_lrm, abr_switch_map[r].st_lrm, -1); - SET_OPTION(short_threshold_s, abr_switch_map[r].st_s, -1); - - /* ABR seems to have big problems with clipping, especially at low bitrates */ - /* so we compensate for that here by using a scale value depending on bitrate */ - lame_set_scale(gfp, lame_get_scale(gfp) * abr_switch_map[r].scale); - - SET_OPTION(maskingadjust, abr_switch_map[r].masking_adj, 0); - if (abr_switch_map[r].masking_adj > 0) { - SET_OPTION(maskingadjust_short, abr_switch_map[r].masking_adj * .9, 0); - } - else { - SET_OPTION(maskingadjust_short, abr_switch_map[r].masking_adj * 1.1, 0); - } - - - SET_OPTION(ATHlower, abr_switch_map[r].ath_lower, 0); - SET_OPTION(ATHcurve, abr_switch_map[r].ath_curve, -1); - - SET_OPTION(interChRatio, abr_switch_map[r].interch, -1); - - (void) abr_switch_map[r].abr_kbps; - - gfp->internal_flags->cfg.minval = 5. * (abr_switch_map[r].abr_kbps / 320.); - - return preset; -} - - - -int -apply_preset(lame_global_flags * gfp, int preset, int enforce) -{ - /*translate legacy presets */ - switch (preset) { - case R3MIX: - { - preset = V3; - (void) lame_set_VBR(gfp, vbr_mtrh); - break; - } - case MEDIUM: - case MEDIUM_FAST: - { - preset = V4; - (void) lame_set_VBR(gfp, vbr_mtrh); - break; - } - case STANDARD: - case STANDARD_FAST: - { - preset = V2; - (void) lame_set_VBR(gfp, vbr_mtrh); - break; - } - case EXTREME: - case EXTREME_FAST: - { - preset = V0; - (void) lame_set_VBR(gfp, vbr_mtrh); - break; - } - case INSANE: - { - preset = 320; - gfp->preset = preset; - (void) apply_abr_preset(gfp, preset, enforce); - lame_set_VBR(gfp, vbr_off); - return preset; - } - } - - gfp->preset = preset; - { - switch (preset) { - case V9: - apply_vbr_preset(gfp, 9, enforce); - return preset; - case V8: - apply_vbr_preset(gfp, 8, enforce); - return preset; - case V7: - apply_vbr_preset(gfp, 7, enforce); - return preset; - case V6: - apply_vbr_preset(gfp, 6, enforce); - return preset; - case V5: - apply_vbr_preset(gfp, 5, enforce); - return preset; - case V4: - apply_vbr_preset(gfp, 4, enforce); - return preset; - case V3: - apply_vbr_preset(gfp, 3, enforce); - return preset; - case V2: - apply_vbr_preset(gfp, 2, enforce); - return preset; - case V1: - apply_vbr_preset(gfp, 1, enforce); - return preset; - case V0: - apply_vbr_preset(gfp, 0, enforce); - return preset; - default: - break; - } - } - if (8 <= preset && preset <= 320) { - return apply_abr_preset(gfp, preset, enforce); - } - - gfp->preset = 0; /*no corresponding preset found */ - return preset; -} diff --git a/platform/win32/msvc/external/lame/libmp3lame/psymodel.c b/platform/win32/msvc/external/lame/libmp3lame/psymodel.c deleted file mode 100644 index d4c62b7bd58..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/psymodel.c +++ /dev/null @@ -1,2157 +0,0 @@ -/* - * psymodel.c - * - * Copyright (c) 1999-2000 Mark Taylor - * Copyright (c) 2001-2002 Naoki Shibata - * Copyright (c) 2000-2003 Takehiro Tominaga - * Copyright (c) 2000-2011 Robert Hegemann - * Copyright (c) 2000-2005 Gabriel Bouvigne - * Copyright (c) 2000-2005 Alexander Leidinger - * - * 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. - */ - -/* $Id: psymodel.c,v 1.209 2011/05/24 20:45:55 robert Exp $ */ - - -/* -PSYCHO ACOUSTICS - - -This routine computes the psycho acoustics, delayed by one granule. - -Input: buffer of PCM data (1024 samples). - -This window should be centered over the 576 sample granule window. -The routine will compute the psycho acoustics for -this granule, but return the psycho acoustics computed -for the *previous* granule. This is because the block -type of the previous granule can only be determined -after we have computed the psycho acoustics for the following -granule. - -Output: maskings and energies for each scalefactor band. -block type, PE, and some correlation measures. -The PE is used by CBR modes to determine if extra bits -from the bit reservoir should be used. The correlation -measures are used to determine mid/side or regular stereo. -*/ -/* -Notation: - -barks: a non-linear frequency scale. Mapping from frequency to - barks is given by freq2bark() - -scalefactor bands: The spectrum (frequencies) are broken into - SBMAX "scalefactor bands". Thes bands - are determined by the MPEG ISO spec. In - the noise shaping/quantization code, we allocate - bits among the partition bands to achieve the - best possible quality - -partition bands: The spectrum is also broken into about - 64 "partition bands". Each partition - band is about .34 barks wide. There are about 2-5 - partition bands for each scalefactor band. - -LAME computes all psycho acoustic information for each partition -band. Then at the end of the computations, this information -is mapped to scalefactor bands. The energy in each scalefactor -band is taken as the sum of the energy in all partition bands -which overlap the scalefactor band. The maskings can be computed -in the same way (and thus represent the average masking in that band) -or by taking the minmum value multiplied by the number of -partition bands used (which represents a minimum masking in that band). -*/ -/* -The general outline is as follows: - -1. compute the energy in each partition band -2. compute the tonality in each partition band -3. compute the strength of each partion band "masker" -4. compute the masking (via the spreading function applied to each masker) -5. Modifications for mid/side masking. - -Each partition band is considiered a "masker". The strength -of the i'th masker in band j is given by: - - s3(bark(i)-bark(j))*strength(i) - -The strength of the masker is a function of the energy and tonality. -The more tonal, the less masking. LAME uses a simple linear formula -(controlled by NMT and TMN) which says the strength is given by the -energy divided by a linear function of the tonality. -*/ -/* -s3() is the "spreading function". It is given by a formula -determined via listening tests. - -The total masking in the j'th partition band is the sum over -all maskings i. It is thus given by the convolution of -the strength with s3(), the "spreading function." - -masking(j) = sum_over_i s3(i-j)*strength(i) = s3 o strength - -where "o" = convolution operator. s3 is given by a formula determined -via listening tests. It is normalized so that s3 o 1 = 1. - -Note: instead of a simple convolution, LAME also has the -option of using "additive masking" - -The most critical part is step 2, computing the tonality of each -partition band. LAME has two tonality estimators. The first -is based on the ISO spec, and measures how predictiable the -signal is over time. The more predictable, the more tonal. -The second measure is based on looking at the spectrum of -a single granule. The more peaky the spectrum, the more -tonal. By most indications, the latter approach is better. - -Finally, in step 5, the maskings for the mid and side -channel are possibly increased. Under certain circumstances, -noise in the mid & side channels is assumed to also -be masked by strong maskers in the L or R channels. - - -Other data computed by the psy-model: - -ms_ratio side-channel / mid-channel masking ratio (for previous granule) -ms_ratio_next side-channel / mid-channel masking ratio for this granule - -percep_entropy[2] L and R values (prev granule) of PE - A measure of how - much pre-echo is in the previous granule -percep_entropy_MS[2] mid and side channel values (prev granule) of percep_entropy -energy[4] L,R,M,S energy in each channel, prev granule -blocktype_d[2] block type to use for previous granule -*/ - - - - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "lame.h" -#include "machine.h" -#include "encoder.h" -#include "util.h" -#include "psymodel.h" -#include "lame_global_flags.h" -#include "fft.h" -#include "lame-analysis.h" - - -#define NSFIRLEN 21 - -#ifdef M_LN10 -#define LN_TO_LOG10 (M_LN10/10) -#else -#define LN_TO_LOG10 0.2302585093 -#endif - - -/* - L3psycho_anal. Compute psycho acoustics. - - Data returned to the calling program must be delayed by one - granule. - - This is done in two places. - If we do not need to know the blocktype, the copying - can be done here at the top of the program: we copy the data for - the last granule (computed during the last call) before it is - overwritten with the new data. It looks like this: - - 0. static psymodel_data - 1. calling_program_data = psymodel_data - 2. compute psymodel_data - - For data which needs to know the blocktype, the copying must be - done at the end of this loop, and the old values must be saved: - - 0. static psymodel_data_old - 1. compute psymodel_data - 2. compute possible block type of this granule - 3. compute final block type of previous granule based on #2. - 4. calling_program_data = psymodel_data_old - 5. psymodel_data_old = psymodel_data -*/ - - - - - -/* psycho_loudness_approx - jd - 2001 mar 12 -in: energy - BLKSIZE/2 elements of frequency magnitudes ^ 2 - gfp - uses out_samplerate, ATHtype (also needed for ATHformula) -returns: loudness^2 approximation, a positive value roughly tuned for a value - of 1.0 for signals near clipping. -notes: When calibrated, feeding this function binary white noise at sample - values +32767 or -32768 should return values that approach 3. - ATHformula is used to approximate an equal loudness curve. -future: Data indicates that the shape of the equal loudness curve varies - with intensity. This function might be improved by using an equal - loudness curve shaped for typical playback levels (instead of the - ATH, that is shaped for the threshold). A flexible realization might - simply bend the existing ATH curve to achieve the desired shape. - However, the potential gain may not be enough to justify an effort. -*/ -static FLOAT -psycho_loudness_approx(FLOAT const *energy, FLOAT const *eql_w) -{ - int i; - FLOAT loudness_power; - - loudness_power = 0.0; - /* apply weights to power in freq. bands */ - for (i = 0; i < BLKSIZE / 2; ++i) - loudness_power += energy[i] * eql_w[i]; - loudness_power *= VO_SCALE; - - return loudness_power; -} - -/* mask_add optimization */ -/* init the limit values used to avoid computing log in mask_add when it is not necessary */ - -/* For example, with i = 10*log10(m2/m1)/10*16 (= log10(m2/m1)*16) - * - * abs(i)>8 is equivalent (as i is an integer) to - * abs(i)>=9 - * i>=9 || i<=-9 - * equivalent to (as i is the biggest integer smaller than log10(m2/m1)*16 - * or the smallest integer bigger than log10(m2/m1)*16 depending on the sign of log10(m2/m1)*16) - * log10(m2/m1)>=9/16 || log10(m2/m1)<=-9/16 - * exp10 is strictly increasing thus this is equivalent to - * m2/m1 >= 10^(9/16) || m2/m1<=10^(-9/16) which are comparisons to constants - */ - - -#define I1LIMIT 8 /* as in if(i>8) */ -#define I2LIMIT 23 /* as in if(i>24) -> changed 23 */ -#define MLIMIT 15 /* as in if(m<15) */ - -static FLOAT ma_max_i1; -static FLOAT ma_max_i2; -static FLOAT ma_max_m; - - /*This is the masking table: - According to tonality, values are going from 0dB (TMN) - to 9.3dB (NMT). - After additive masking computation, 8dB are added, so - final values are going from 8dB to 17.3dB - */ -static const FLOAT tab[] = { - 1.0 /*pow(10, -0) */ , - 0.79433 /*pow(10, -0.1) */ , - 0.63096 /*pow(10, -0.2) */ , - 0.63096 /*pow(10, -0.2) */ , - 0.63096 /*pow(10, -0.2) */ , - 0.63096 /*pow(10, -0.2) */ , - 0.63096 /*pow(10, -0.2) */ , - 0.25119 /*pow(10, -0.6) */ , - 0.11749 /*pow(10, -0.93) */ -}; - -static const int tab_mask_add_delta[] = { 2, 2, 2, 1, 1, 1, 0, 0, -1 }; -#define STATIC_ASSERT_EQUAL_DIMENSION(A,B) {extern char static_assert_##A[dimension_of(A) == dimension_of(B) ? 1 : -1];(void) static_assert_##A;} - -inline static int -mask_add_delta(int i) -{ - STATIC_ASSERT_EQUAL_DIMENSION(tab_mask_add_delta,tab); - assert(i < (int)dimension_of(tab)); - return tab_mask_add_delta[i]; -} - - -static void -init_mask_add_max_values(void) -{ - ma_max_i1 = pow(10, (I1LIMIT + 1) / 16.0); - ma_max_i2 = pow(10, (I2LIMIT + 1) / 16.0); - ma_max_m = pow(10, (MLIMIT) / 10.0); -} - - - - -/* addition of simultaneous masking Naoki Shibata 2000/7 */ -inline static FLOAT -vbrpsy_mask_add(FLOAT m1, FLOAT m2, int b, int delta) -{ - static const FLOAT table2[] = { - 1.33352 * 1.33352, 1.35879 * 1.35879, 1.38454 * 1.38454, 1.39497 * 1.39497, - 1.40548 * 1.40548, 1.3537 * 1.3537, 1.30382 * 1.30382, 1.22321 * 1.22321, - 1.14758 * 1.14758, - 1 - }; - - FLOAT ratio; - - if (m1 < 0) { - m1 = 0; - } - if (m2 < 0) { - m2 = 0; - } - if (m1 <= 0) { - return m2; - } - if (m2 <= 0) { - return m1; - } - if (m2 > m1) { - ratio = m2 / m1; - } - else { - ratio = m1 / m2; - } - if (abs(b) <= delta) { /* approximately, 1 bark = 3 partitions */ - /* originally 'if(i > 8)' */ - if (ratio >= ma_max_i1) { - return m1 + m2; - } - else { - int i = (int) (FAST_LOG10_X(ratio, 16.0f)); - return (m1 + m2) * table2[i]; - } - } - if (ratio < ma_max_i2) { - return m1 + m2; - } - if (m1 < m2) { - m1 = m2; - } - return m1; -} - - -/* short block threshold calculation (part 2) - - partition band bo_s[sfb] is at the transition from scalefactor - band sfb to the next one sfb+1; enn and thmm have to be split - between them -*/ -static void -convert_partition2scalefac(PsyConst_CB2SB_t const *const gd, FLOAT const *eb, FLOAT const *thr, - FLOAT enn_out[], FLOAT thm_out[]) -{ - FLOAT enn, thmm; - int sb, b, n = gd->n_sb; - enn = thmm = 0.0f; - for (sb = b = 0; sb < n; ++b, ++sb) { - int const bo_sb = gd->bo[sb]; - int const npart = gd->npart; - int const b_lim = bo_sb < npart ? bo_sb : npart; - while (b < b_lim) { - assert(eb[b] >= 0); /* iff failed, it may indicate some index error elsewhere */ - assert(thr[b] >= 0); - enn += eb[b]; - thmm += thr[b]; - b++; - } - if (b >= npart) { - enn_out[sb] = enn; - thm_out[sb] = thmm; - ++sb; - break; - } - assert(eb[b] >= 0); /* iff failed, it may indicate some index error elsewhere */ - assert(thr[b] >= 0); - { - /* at transition sfb -> sfb+1 */ - FLOAT const w_curr = gd->bo_weight[sb]; - FLOAT const w_next = 1.0f - w_curr; - enn += w_curr * eb[b]; - thmm += w_curr * thr[b]; - enn_out[sb] = enn; - thm_out[sb] = thmm; - enn = w_next * eb[b]; - thmm = w_next * thr[b]; - } - } - /* zero initialize the rest */ - for (; sb < n; ++sb) { - enn_out[sb] = 0; - thm_out[sb] = 0; - } -} - -static void -convert_partition2scalefac_s(lame_internal_flags * gfc, FLOAT const *eb, FLOAT const *thr, int chn, - int sblock) -{ - PsyStateVar_t *const psv = &gfc->sv_psy; - PsyConst_CB2SB_t const *const gds = &gfc->cd_psy->s; - FLOAT enn[SBMAX_s], thm[SBMAX_s]; - int sb; - convert_partition2scalefac(gds, eb, thr, enn, thm); - for (sb = 0; sb < SBMAX_s; ++sb) { - psv->en[chn].s[sb][sblock] = enn[sb]; - psv->thm[chn].s[sb][sblock] = thm[sb]; - } -} - -/* longblock threshold calculation (part 2) */ -static void -convert_partition2scalefac_l(lame_internal_flags * gfc, FLOAT const *eb, FLOAT const *thr, int chn) -{ - PsyStateVar_t *const psv = &gfc->sv_psy; - PsyConst_CB2SB_t const *const gdl = &gfc->cd_psy->l; - FLOAT *enn = &psv->en[chn].l[0]; - FLOAT *thm = &psv->thm[chn].l[0]; - convert_partition2scalefac(gdl, eb, thr, enn, thm); -} - -static void -convert_partition2scalefac_l_to_s(lame_internal_flags * gfc, FLOAT const *eb, FLOAT const *thr, - int chn) -{ - PsyStateVar_t *const psv = &gfc->sv_psy; - PsyConst_CB2SB_t const *const gds = &gfc->cd_psy->l_to_s; - FLOAT enn[SBMAX_s], thm[SBMAX_s]; - int sb, sblock; - convert_partition2scalefac(gds, eb, thr, enn, thm); - for (sb = 0; sb < SBMAX_s; ++sb) { - FLOAT const scale = 1. / 64.f; - FLOAT const tmp_enn = enn[sb]; - FLOAT const tmp_thm = thm[sb] * scale; - for (sblock = 0; sblock < 3; ++sblock) { - psv->en[chn].s[sb][sblock] = tmp_enn; - psv->thm[chn].s[sb][sblock] = tmp_thm; - } - } -} - - - -static inline FLOAT -NS_INTERP(FLOAT x, FLOAT y, FLOAT r) -{ - /* was pow((x),(r))*pow((y),1-(r)) */ - if (r >= 1.0f) - return x; /* 99.7% of the time */ - if (r <= 0.0f) - return y; - if (y > 0.0f) - return powf(x / y, r) * y; /* rest of the time */ - return 0.0f; /* never happens */ -} - - - -static FLOAT -pecalc_s(III_psy_ratio const *mr, FLOAT masking_lower) -{ - FLOAT pe_s; - static const FLOAT regcoef_s[] = { - 11.8, /* these values are tuned only for 44.1kHz... */ - 13.6, - 17.2, - 32, - 46.5, - 51.3, - 57.5, - 67.1, - 71.5, - 84.6, - 97.6, - 130, -/* 255.8 */ - }; - unsigned int sb, sblock; - - pe_s = 1236.28f / 4; - for (sb = 0; sb < SBMAX_s - 1; sb++) { - for (sblock = 0; sblock < 3; sblock++) { - FLOAT const thm = mr->thm.s[sb][sblock]; - assert(sb < dimension_of(regcoef_s)); - if (thm > 0.0f) { - FLOAT const x = thm * masking_lower; - FLOAT const en = mr->en.s[sb][sblock]; - if (en > x) { - if (en > x * 1e10f) { - pe_s += regcoef_s[sb] * (10.0f * LOG10); - } - else { - assert(x > 0); - pe_s += regcoef_s[sb] * FAST_LOG10(en / x); - } - } - } - } - } - - return pe_s; -} - -static FLOAT -pecalc_l(III_psy_ratio const *mr, FLOAT masking_lower) -{ - FLOAT pe_l; - static const FLOAT regcoef_l[] = { - 6.8, /* these values are tuned only for 44.1kHz... */ - 5.8, - 5.8, - 6.4, - 6.5, - 9.9, - 12.1, - 14.4, - 15, - 18.9, - 21.6, - 26.9, - 34.2, - 40.2, - 46.8, - 56.5, - 60.7, - 73.9, - 85.7, - 93.4, - 126.1, -/* 241.3 */ - }; - unsigned int sb; - - pe_l = 1124.23f / 4; - for (sb = 0; sb < SBMAX_l - 1; sb++) { - FLOAT const thm = mr->thm.l[sb]; - assert(sb < dimension_of(regcoef_l)); - if (thm > 0.0f) { - FLOAT const x = thm * masking_lower; - FLOAT const en = mr->en.l[sb]; - if (en > x) { - if (en > x * 1e10f) { - pe_l += regcoef_l[sb] * (10.0f * LOG10); - } - else { - assert(x > 0); - pe_l += regcoef_l[sb] * FAST_LOG10(en / x); - } - } - } - } - - return pe_l; -} - - -static void -calc_energy(PsyConst_CB2SB_t const *l, FLOAT const *fftenergy, FLOAT * eb, FLOAT * max, FLOAT * avg) -{ - int b, j; - - for (b = j = 0; b < l->npart; ++b) { - FLOAT ebb = 0, m = 0; - int i; - for (i = 0; i < l->numlines[b]; ++i, ++j) { - FLOAT const el = fftenergy[j]; - assert(el >= 0); - ebb += el; - if (m < el) - m = el; - } - eb[b] = ebb; - max[b] = m; - avg[b] = ebb * l->rnumlines[b]; - assert(l->rnumlines[b] >= 0); - assert(ebb >= 0); - assert(eb[b] >= 0); - assert(max[b] >= 0); - assert(avg[b] >= 0); - } -} - - -static void -calc_mask_index_l(lame_internal_flags const *gfc, FLOAT const *max, - FLOAT const *avg, unsigned char *mask_idx) -{ - PsyConst_CB2SB_t const *const gdl = &gfc->cd_psy->l; - FLOAT m, a; - int b, k; - int const last_tab_entry = sizeof(tab) / sizeof(tab[0]) - 1; - b = 0; - a = avg[b] + avg[b + 1]; - assert(a >= 0); - if (a > 0.0f) { - m = max[b]; - if (m < max[b + 1]) - m = max[b + 1]; - assert((gdl->numlines[b] + gdl->numlines[b + 1] - 1) > 0); - a = 20.0f * (m * 2.0f - a) - / (a * (gdl->numlines[b] + gdl->numlines[b + 1] - 1)); - k = (int) a; - if (k > last_tab_entry) - k = last_tab_entry; - mask_idx[b] = k; - } - else { - mask_idx[b] = 0; - } - - for (b = 1; b < gdl->npart - 1; b++) { - a = avg[b - 1] + avg[b] + avg[b + 1]; - assert(a >= 0); - if (a > 0.0f) { - m = max[b - 1]; - if (m < max[b]) - m = max[b]; - if (m < max[b + 1]) - m = max[b + 1]; - assert((gdl->numlines[b - 1] + gdl->numlines[b] + gdl->numlines[b + 1] - 1) > 0); - a = 20.0f * (m * 3.0f - a) - / (a * (gdl->numlines[b - 1] + gdl->numlines[b] + gdl->numlines[b + 1] - 1)); - k = (int) a; - if (k > last_tab_entry) - k = last_tab_entry; - mask_idx[b] = k; - } - else { - mask_idx[b] = 0; - } - } - assert(b > 0); - assert(b == gdl->npart - 1); - - a = avg[b - 1] + avg[b]; - assert(a >= 0); - if (a > 0.0f) { - m = max[b - 1]; - if (m < max[b]) - m = max[b]; - assert((gdl->numlines[b - 1] + gdl->numlines[b] - 1) > 0); - a = 20.0f * (m * 2.0f - a) - / (a * (gdl->numlines[b - 1] + gdl->numlines[b] - 1)); - k = (int) a; - if (k > last_tab_entry) - k = last_tab_entry; - mask_idx[b] = k; - } - else { - mask_idx[b] = 0; - } - assert(b == (gdl->npart - 1)); -} - - -static void -vbrpsy_compute_fft_l(lame_internal_flags * gfc, const sample_t * const buffer[2], int chn, - int gr_out, FLOAT fftenergy[HBLKSIZE], FLOAT(*wsamp_l)[BLKSIZE]) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - PsyStateVar_t *psv = &gfc->sv_psy; - plotting_data *plt = cfg->analysis ? gfc->pinfo : 0; - int j; - - if (chn < 2) { - fft_long(gfc, *wsamp_l, chn, buffer); - } - else if (chn == 2) { - FLOAT const sqrt2_half = SQRT2 * 0.5f; - /* FFT data for mid and side channel is derived from L & R */ - for (j = BLKSIZE - 1; j >= 0; --j) { - FLOAT const l = wsamp_l[0][j]; - FLOAT const r = wsamp_l[1][j]; - wsamp_l[0][j] = (l + r) * sqrt2_half; - wsamp_l[1][j] = (l - r) * sqrt2_half; - } - } - - /********************************************************************* - * compute energies - *********************************************************************/ - fftenergy[0] = wsamp_l[0][0]; - fftenergy[0] *= fftenergy[0]; - - for (j = BLKSIZE / 2 - 1; j >= 0; --j) { - FLOAT const re = (*wsamp_l)[BLKSIZE / 2 - j]; - FLOAT const im = (*wsamp_l)[BLKSIZE / 2 + j]; - fftenergy[BLKSIZE / 2 - j] = (re * re + im * im) * 0.5f; - } - /* total energy */ - { - FLOAT totalenergy = 0.0f; - for (j = 11; j < HBLKSIZE; j++) - totalenergy += fftenergy[j]; - - psv->tot_ener[chn] = totalenergy; - } - - if (plt) { - for (j = 0; j < HBLKSIZE; j++) { - plt->energy[gr_out][chn][j] = plt->energy_save[chn][j]; - plt->energy_save[chn][j] = fftenergy[j]; - } - } -} - - -static void -vbrpsy_compute_fft_s(lame_internal_flags const *gfc, const sample_t * const buffer[2], int chn, - int sblock, FLOAT(*fftenergy_s)[HBLKSIZE_s], FLOAT(*wsamp_s)[3][BLKSIZE_s]) -{ - int j; - - if (sblock == 0 && chn < 2) { - fft_short(gfc, *wsamp_s, chn, buffer); - } - if (chn == 2) { - FLOAT const sqrt2_half = SQRT2 * 0.5f; - /* FFT data for mid and side channel is derived from L & R */ - for (j = BLKSIZE_s - 1; j >= 0; --j) { - FLOAT const l = wsamp_s[0][sblock][j]; - FLOAT const r = wsamp_s[1][sblock][j]; - wsamp_s[0][sblock][j] = (l + r) * sqrt2_half; - wsamp_s[1][sblock][j] = (l - r) * sqrt2_half; - } - } - - /********************************************************************* - * compute energies - *********************************************************************/ - fftenergy_s[sblock][0] = (*wsamp_s)[sblock][0]; - fftenergy_s[sblock][0] *= fftenergy_s[sblock][0]; - for (j = BLKSIZE_s / 2 - 1; j >= 0; --j) { - FLOAT const re = (*wsamp_s)[sblock][BLKSIZE_s / 2 - j]; - FLOAT const im = (*wsamp_s)[sblock][BLKSIZE_s / 2 + j]; - fftenergy_s[sblock][BLKSIZE_s / 2 - j] = (re * re + im * im) * 0.5f; - } -} - - - /********************************************************************* - * compute loudness approximation (used for ATH auto-level adjustment) - *********************************************************************/ -static void -vbrpsy_compute_loudness_approximation_l(lame_internal_flags * gfc, int gr_out, int chn, - const FLOAT fftenergy[HBLKSIZE]) -{ - PsyStateVar_t *psv = &gfc->sv_psy; - if (chn < 2) { /*no loudness for mid/side ch */ - gfc->ov_psy.loudness_sq[gr_out][chn] = psv->loudness_sq_save[chn]; - psv->loudness_sq_save[chn] = psycho_loudness_approx(fftenergy, gfc->ATH->eql_w); - } -} - - - /********************************************************************** - * Apply HPF of fs/4 to the input signal. - * This is used for attack detection / handling. - **********************************************************************/ -static void -vbrpsy_attack_detection(lame_internal_flags * gfc, const sample_t * const buffer[2], int gr_out, - III_psy_ratio masking_ratio[2][2], III_psy_ratio masking_MS_ratio[2][2], - FLOAT energy[4], FLOAT sub_short_factor[4][3], int ns_attacks[4][4], - int uselongblock[2]) -{ - FLOAT ns_hpfsmpl[2][576]; - SessionConfig_t const *const cfg = &gfc->cfg; - PsyStateVar_t *const psv = &gfc->sv_psy; - plotting_data *plt = cfg->analysis ? gfc->pinfo : 0; - int const n_chn_out = cfg->channels_out; - /* chn=2 and 3 = Mid and Side channels */ - int const n_chn_psy = (cfg->mode == JOINT_STEREO) ? 4 : n_chn_out; - int chn, i, j; - - memset(&ns_hpfsmpl[0][0], 0, sizeof(ns_hpfsmpl)); - /* Don't copy the input buffer into a temporary buffer */ - /* unroll the loop 2 times */ - for (chn = 0; chn < n_chn_out; chn++) { - static const FLOAT fircoef[] = { - -8.65163e-18 * 2, -0.00851586 * 2, -6.74764e-18 * 2, 0.0209036 * 2, - -3.36639e-17 * 2, -0.0438162 * 2, -1.54175e-17 * 2, 0.0931738 * 2, - -5.52212e-17 * 2, -0.313819 * 2 - }; - /* apply high pass filter of fs/4 */ - const sample_t *const firbuf = &buffer[chn][576 - 350 - NSFIRLEN + 192]; - assert(dimension_of(fircoef) == ((NSFIRLEN - 1) / 2)); - for (i = 0; i < 576; i++) { - FLOAT sum1, sum2; - sum1 = firbuf[i + 10]; - sum2 = 0.0; - for (j = 0; j < ((NSFIRLEN - 1) / 2) - 1; j += 2) { - sum1 += fircoef[j] * (firbuf[i + j] + firbuf[i + NSFIRLEN - j]); - sum2 += fircoef[j + 1] * (firbuf[i + j + 1] + firbuf[i + NSFIRLEN - j - 1]); - } - ns_hpfsmpl[chn][i] = sum1 + sum2; - } - masking_ratio[gr_out][chn].en = psv->en[chn]; - masking_ratio[gr_out][chn].thm = psv->thm[chn]; - if (n_chn_psy > 2) { - /* MS maskings */ - /*percep_MS_entropy [chn-2] = gfc -> pe [chn]; */ - masking_MS_ratio[gr_out][chn].en = psv->en[chn + 2]; - masking_MS_ratio[gr_out][chn].thm = psv->thm[chn + 2]; - } - } - for (chn = 0; chn < n_chn_psy; chn++) { - FLOAT attack_intensity[12]; - FLOAT en_subshort[12]; - FLOAT en_short[4] = { 0, 0, 0, 0 }; - FLOAT const *pf = ns_hpfsmpl[chn & 1]; - int ns_uselongblock = 1; - - if (chn == 2) { - for (i = 0, j = 576; j > 0; ++i, --j) { - FLOAT const l = ns_hpfsmpl[0][i]; - FLOAT const r = ns_hpfsmpl[1][i]; - ns_hpfsmpl[0][i] = l + r; - ns_hpfsmpl[1][i] = l - r; - } - } - /*************************************************************** - * determine the block type (window type) - ***************************************************************/ - /* calculate energies of each sub-shortblocks */ - for (i = 0; i < 3; i++) { - en_subshort[i] = psv->last_en_subshort[chn][i + 6]; - assert(psv->last_en_subshort[chn][i + 4] > 0); - attack_intensity[i] = en_subshort[i] / psv->last_en_subshort[chn][i + 4]; - en_short[0] += en_subshort[i]; - } - - for (i = 0; i < 9; i++) { - FLOAT const *const pfe = pf + 576 / 9; - FLOAT p = 1.; - for (; pf < pfe; pf++) - if (p < fabs(*pf)) - p = fabs(*pf); - psv->last_en_subshort[chn][i] = en_subshort[i + 3] = p; - en_short[1 + i / 3] += p; - if (p > en_subshort[i + 3 - 2]) { - assert(en_subshort[i + 3 - 2] > 0); - p = p / en_subshort[i + 3 - 2]; - } - else if (en_subshort[i + 3 - 2] > p * 10.0f) { - assert(p > 0); - p = en_subshort[i + 3 - 2] / (p * 10.0f); - } - else { - p = 0.0; - } - attack_intensity[i + 3] = p; - } - - /* pulse like signal detection for fatboy.wav and so on */ - for (i = 0; i < 3; ++i) { - FLOAT const enn = - en_subshort[i * 3 + 3] + en_subshort[i * 3 + 4] + en_subshort[i * 3 + 5]; - FLOAT factor = 1.f; - if (en_subshort[i * 3 + 5] * 6 < enn) { - factor *= 0.5f; - if (en_subshort[i * 3 + 4] * 6 < enn) { - factor *= 0.5f; - } - } - sub_short_factor[chn][i] = factor; - } - - if (plt) { - FLOAT x = attack_intensity[0]; - for (i = 1; i < 12; i++) { - if (x < attack_intensity[i]) { - x = attack_intensity[i]; - } - } - plt->ers[gr_out][chn] = plt->ers_save[chn]; - plt->ers_save[chn] = x; - } - - /* compare energies between sub-shortblocks */ - { - FLOAT x = gfc->cd_psy->attack_threshold[chn]; - for (i = 0; i < 12; i++) { - if (ns_attacks[chn][i / 3] == 0) { - if (attack_intensity[i] > x) { - ns_attacks[chn][i / 3] = (i % 3) + 1; - } - } - } - } - /* should have energy change between short blocks, in order to avoid periodic signals */ - /* Good samples to show the effect are Trumpet test songs */ - /* GB: tuned (1) to avoid too many short blocks for test sample TRUMPET */ - /* RH: tuned (2) to let enough short blocks through for test sample FSOL and SNAPS */ - for (i = 1; i < 4; i++) { - FLOAT const u = en_short[i - 1]; - FLOAT const v = en_short[i]; - FLOAT const m = Max(u, v); - if (m < 40000) { /* (2) */ - if (u < 1.7f * v && v < 1.7f * u) { /* (1) */ - if (i == 1 && ns_attacks[chn][0] <= ns_attacks[chn][i]) { - ns_attacks[chn][0] = 0; - } - ns_attacks[chn][i] = 0; - } - } - } - - if (ns_attacks[chn][0] <= psv->last_attacks[chn]) { - ns_attacks[chn][0] = 0; - } - - if (psv->last_attacks[chn] == 3 || - ns_attacks[chn][0] + ns_attacks[chn][1] + ns_attacks[chn][2] + ns_attacks[chn][3]) { - ns_uselongblock = 0; - - if (ns_attacks[chn][1] && ns_attacks[chn][0]) { - ns_attacks[chn][1] = 0; - } - if (ns_attacks[chn][2] && ns_attacks[chn][1]) { - ns_attacks[chn][2] = 0; - } - if (ns_attacks[chn][3] && ns_attacks[chn][2]) { - ns_attacks[chn][3] = 0; - } - } - - if (chn < 2) { - uselongblock[chn] = ns_uselongblock; - } - else { - if (ns_uselongblock == 0) { - uselongblock[0] = uselongblock[1] = 0; - } - } - - /* there is a one granule delay. Copy maskings computed last call - * into masking_ratio to return to calling program. - */ - energy[chn] = psv->tot_ener[chn]; - } -} - - -static void -vbrpsy_skip_masking_s(lame_internal_flags * gfc, int chn, int sblock) -{ - if (sblock == 0) { - FLOAT *nbs2 = &gfc->sv_psy.nb_s2[chn][0]; - FLOAT *nbs1 = &gfc->sv_psy.nb_s1[chn][0]; - int const n = gfc->cd_psy->s.npart; - int b; - for (b = 0; b < n; b++) { - nbs2[b] = nbs1[b]; - } - } -} - - -static void -vbrpsy_calc_mask_index_s(lame_internal_flags const *gfc, FLOAT const *max, - FLOAT const *avg, unsigned char *mask_idx) -{ - PsyConst_CB2SB_t const *const gds = &gfc->cd_psy->s; - FLOAT m, a; - int b, k; - int const last_tab_entry = dimension_of(tab) - 1; - b = 0; - a = avg[b] + avg[b + 1]; - assert(a >= 0); - if (a > 0.0f) { - m = max[b]; - if (m < max[b + 1]) - m = max[b + 1]; - assert((gds->numlines[b] + gds->numlines[b + 1] - 1) > 0); - a = 20.0f * (m * 2.0f - a) - / (a * (gds->numlines[b] + gds->numlines[b + 1] - 1)); - k = (int) a; - if (k > last_tab_entry) - k = last_tab_entry; - mask_idx[b] = k; - } - else { - mask_idx[b] = 0; - } - - for (b = 1; b < gds->npart - 1; b++) { - a = avg[b - 1] + avg[b] + avg[b + 1]; - assert(b + 1 < gds->npart); - assert(a >= 0); - if (a > 0.0) { - m = max[b - 1]; - if (m < max[b]) - m = max[b]; - if (m < max[b + 1]) - m = max[b + 1]; - assert((gds->numlines[b - 1] + gds->numlines[b] + gds->numlines[b + 1] - 1) > 0); - a = 20.0f * (m * 3.0f - a) - / (a * (gds->numlines[b - 1] + gds->numlines[b] + gds->numlines[b + 1] - 1)); - k = (int) a; - if (k > last_tab_entry) - k = last_tab_entry; - mask_idx[b] = k; - } - else { - mask_idx[b] = 0; - } - } - assert(b > 0); - assert(b == gds->npart - 1); - - a = avg[b - 1] + avg[b]; - assert(a >= 0); - if (a > 0.0f) { - m = max[b - 1]; - if (m < max[b]) - m = max[b]; - assert((gds->numlines[b - 1] + gds->numlines[b] - 1) > 0); - a = 20.0f * (m * 2.0f - a) - / (a * (gds->numlines[b - 1] + gds->numlines[b] - 1)); - k = (int) a; - if (k > last_tab_entry) - k = last_tab_entry; - mask_idx[b] = k; - } - else { - mask_idx[b] = 0; - } - assert(b == (gds->npart - 1)); -} - - -static void -vbrpsy_compute_masking_s(lame_internal_flags * gfc, const FLOAT(*fftenergy_s)[HBLKSIZE_s], - FLOAT * eb, FLOAT * thr, int chn, int sblock) -{ - PsyStateVar_t *const psv = &gfc->sv_psy; - PsyConst_CB2SB_t const *const gds = &gfc->cd_psy->s; - FLOAT max[CBANDS], avg[CBANDS]; - int i, j, b; - unsigned char mask_idx_s[CBANDS]; - - memset(max, 0, sizeof(max)); - memset(avg, 0, sizeof(avg)); - - for (b = j = 0; b < gds->npart; ++b) { - FLOAT ebb = 0, m = 0; - int const n = gds->numlines[b]; - for (i = 0; i < n; ++i, ++j) { - FLOAT const el = fftenergy_s[sblock][j]; - ebb += el; - if (m < el) - m = el; - } - eb[b] = ebb; - assert(ebb >= 0); - max[b] = m; - assert(n > 0); - avg[b] = ebb * gds->rnumlines[b]; - assert(avg[b] >= 0); - } - assert(b == gds->npart); - assert(j == 129); - vbrpsy_calc_mask_index_s(gfc, max, avg, mask_idx_s); - for (j = b = 0; b < gds->npart; b++) { - int kk = gds->s3ind[b][0]; - int const last = gds->s3ind[b][1]; - int const delta = mask_add_delta(mask_idx_s[b]); - int dd, dd_n; - FLOAT x, ecb, avg_mask; - FLOAT const masking_lower = gds->masking_lower[b] * gfc->sv_qnt.masking_lower; - - dd = mask_idx_s[kk]; - dd_n = 1; - ecb = gds->s3[j] * eb[kk] * tab[mask_idx_s[kk]]; - ++j, ++kk; - while (kk <= last) { - dd += mask_idx_s[kk]; - dd_n += 1; - x = gds->s3[j] * eb[kk] * tab[mask_idx_s[kk]]; - ecb = vbrpsy_mask_add(ecb, x, kk - b, delta); - ++j, ++kk; - } - dd = (1 + 2 * dd) / (2 * dd_n); - avg_mask = tab[dd] * 0.5f; - ecb *= avg_mask; -#if 0 /* we can do PRE ECHO control now here, or do it later */ - if (psv->blocktype_old[chn & 0x01] == SHORT_TYPE) { - /* limit calculated threshold by even older granule */ - FLOAT const t1 = rpelev_s * psv->nb_s1[chn][b]; - FLOAT const t2 = rpelev2_s * psv->nb_s2[chn][b]; - FLOAT const tm = (t2 > 0) ? Min(ecb, t2) : ecb; - thr[b] = (t1 > 0) ? NS_INTERP(Min(tm, t1), ecb, 0.6) : ecb; - } - else { - /* limit calculated threshold by older granule */ - FLOAT const t1 = rpelev_s * psv->nb_s1[chn][b]; - thr[b] = (t1 > 0) ? NS_INTERP(Min(ecb, t1), ecb, 0.6) : ecb; - } -#else /* we do it later */ - thr[b] = ecb; -#endif - psv->nb_s2[chn][b] = psv->nb_s1[chn][b]; - psv->nb_s1[chn][b] = ecb; - { - /* if THR exceeds EB, the quantization routines will take the difference - * from other bands. in case of strong tonal samples (tonaltest.wav) - * this leads to heavy distortions. that's why we limit THR here. - */ - x = max[b]; - x *= gds->minval[b]; - x *= avg_mask; - if (thr[b] > x) { - thr[b] = x; - } - } - if (masking_lower > 1) { - thr[b] *= masking_lower; - } - if (thr[b] > eb[b]) { - thr[b] = eb[b]; - } - if (masking_lower < 1) { - thr[b] *= masking_lower; - } - - assert(thr[b] >= 0); - } - for (; b < CBANDS; ++b) { - eb[b] = 0; - thr[b] = 0; - } -} - - -static void -vbrpsy_compute_masking_l(lame_internal_flags * gfc, const FLOAT fftenergy[HBLKSIZE], - FLOAT eb_l[CBANDS], FLOAT thr[CBANDS], int chn) -{ - PsyStateVar_t *const psv = &gfc->sv_psy; - PsyConst_CB2SB_t const *const gdl = &gfc->cd_psy->l; - FLOAT max[CBANDS], avg[CBANDS]; - unsigned char mask_idx_l[CBANDS + 2]; - int k, b; - - /********************************************************************* - * Calculate the energy and the tonality of each partition. - *********************************************************************/ - calc_energy(gdl, fftenergy, eb_l, max, avg); - calc_mask_index_l(gfc, max, avg, mask_idx_l); - - /********************************************************************* - * convolve the partitioned energy and unpredictability - * with the spreading function, s3_l[b][k] - ********************************************************************/ - k = 0; - for (b = 0; b < gdl->npart; b++) { - FLOAT x, ecb, avg_mask, t; - FLOAT const masking_lower = gdl->masking_lower[b] * gfc->sv_qnt.masking_lower; - /* convolve the partitioned energy with the spreading function */ - int kk = gdl->s3ind[b][0]; - int const last = gdl->s3ind[b][1]; - int const delta = mask_add_delta(mask_idx_l[b]); - int dd = 0, dd_n = 0; - - dd = mask_idx_l[kk]; - dd_n += 1; - ecb = gdl->s3[k] * eb_l[kk] * tab[mask_idx_l[kk]]; - ++k, ++kk; - while (kk <= last) { - dd += mask_idx_l[kk]; - dd_n += 1; - x = gdl->s3[k] * eb_l[kk] * tab[mask_idx_l[kk]]; - t = vbrpsy_mask_add(ecb, x, kk - b, delta); -#if 0 - ecb += eb_l[kk]; - if (ecb > t) { - ecb = t; - } -#else - ecb = t; -#endif - ++k, ++kk; - } - dd = (1 + 2 * dd) / (2 * dd_n); - avg_mask = tab[dd] * 0.5f; - ecb *= avg_mask; - - /**** long block pre-echo control ****/ - /* dont use long block pre-echo control if previous granule was - * a short block. This is to avoid the situation: - * frame0: quiet (very low masking) - * frame1: surge (triggers short blocks) - * frame2: regular frame. looks like pre-echo when compared to - * frame0, but all pre-echo was in frame1. - */ - /* chn=0,1 L and R channels - chn=2,3 S and M channels. - */ - if (psv->blocktype_old[chn & 0x01] == SHORT_TYPE) { - FLOAT const ecb_limit = rpelev * psv->nb_l1[chn][b]; - if (ecb_limit > 0) { - thr[b] = Min(ecb, ecb_limit); - } - else { - /* Robert 071209: - Because we don't calculate long block psy when we know a granule - should be of short blocks, we don't have any clue how the granule - before would have looked like as a long block. So we have to guess - a little bit for this END_TYPE block. - Most of the time we get away with this sloppyness. (fingers crossed :) - The speed increase is worth it. - */ - thr[b] = Min(ecb, eb_l[b] * NS_PREECHO_ATT2); - } - } - else { - FLOAT ecb_limit_2 = rpelev2 * psv->nb_l2[chn][b]; - FLOAT ecb_limit_1 = rpelev * psv->nb_l1[chn][b]; - FLOAT ecb_limit; - if (ecb_limit_2 <= 0) { - ecb_limit_2 = ecb; - } - if (ecb_limit_1 <= 0) { - ecb_limit_1 = ecb; - } - if (psv->blocktype_old[chn & 0x01] == NORM_TYPE) { - ecb_limit = Min(ecb_limit_1, ecb_limit_2); - } - else { - ecb_limit = ecb_limit_1; - } - thr[b] = Min(ecb, ecb_limit); - } - psv->nb_l2[chn][b] = psv->nb_l1[chn][b]; - psv->nb_l1[chn][b] = ecb; - { - /* if THR exceeds EB, the quantization routines will take the difference - * from other bands. in case of strong tonal samples (tonaltest.wav) - * this leads to heavy distortions. that's why we limit THR here. - */ - x = max[b]; - x *= gdl->minval[b]; - x *= avg_mask; - if (thr[b] > x) { - thr[b] = x; - } - } - if (masking_lower > 1) { - thr[b] *= masking_lower; - } - if (thr[b] > eb_l[b]) { - thr[b] = eb_l[b]; - } - if (masking_lower < 1) { - thr[b] *= masking_lower; - } - assert(thr[b] >= 0); - } - for (; b < CBANDS; ++b) { - eb_l[b] = 0; - thr[b] = 0; - } -} - - -static void -vbrpsy_compute_block_type(SessionConfig_t const *cfg, int *uselongblock) -{ - int chn; - - if (cfg->short_blocks == short_block_coupled - /* force both channels to use the same block type */ - /* this is necessary if the frame is to be encoded in ms_stereo. */ - /* But even without ms_stereo, FhG does this */ - && !(uselongblock[0] && uselongblock[1])) - uselongblock[0] = uselongblock[1] = 0; - - for (chn = 0; chn < cfg->channels_out; chn++) { - /* disable short blocks */ - if (cfg->short_blocks == short_block_dispensed) { - uselongblock[chn] = 1; - } - if (cfg->short_blocks == short_block_forced) { - uselongblock[chn] = 0; - } - } -} - - -static void -vbrpsy_apply_block_type(PsyStateVar_t * psv, int nch, int const *uselongblock, int *blocktype_d) -{ - int chn; - - /* update the blocktype of the previous granule, since it depends on what - * happend in this granule */ - for (chn = 0; chn < nch; chn++) { - int blocktype = NORM_TYPE; - /* disable short blocks */ - - if (uselongblock[chn]) { - /* no attack : use long blocks */ - assert(psv->blocktype_old[chn] != START_TYPE); - if (psv->blocktype_old[chn] == SHORT_TYPE) - blocktype = STOP_TYPE; - } - else { - /* attack : use short blocks */ - blocktype = SHORT_TYPE; - if (psv->blocktype_old[chn] == NORM_TYPE) { - psv->blocktype_old[chn] = START_TYPE; - } - if (psv->blocktype_old[chn] == STOP_TYPE) - psv->blocktype_old[chn] = SHORT_TYPE; - } - - blocktype_d[chn] = psv->blocktype_old[chn]; /* value returned to calling program */ - psv->blocktype_old[chn] = blocktype; /* save for next call to l3psy_anal */ - } -} - - -/*************************************************************** - * compute M/S thresholds from Johnston & Ferreira 1992 ICASSP paper - ***************************************************************/ - -static void -vbrpsy_compute_MS_thresholds(const FLOAT eb[4][CBANDS], FLOAT thr[4][CBANDS], - const FLOAT cb_mld[CBANDS], const FLOAT ath_cb[CBANDS], FLOAT athlower, - FLOAT msfix, int n) -{ - FLOAT const msfix2 = msfix * 2.f; - FLOAT rside, rmid; - int b; - for (b = 0; b < n; ++b) { - FLOAT const ebM = eb[2][b]; - FLOAT const ebS = eb[3][b]; - FLOAT const thmL = thr[0][b]; - FLOAT const thmR = thr[1][b]; - FLOAT thmM = thr[2][b]; - FLOAT thmS = thr[3][b]; - - /* use this fix if L & R masking differs by 2db or less */ - /* if db = 10*log10(x2/x1) < 2 */ - /* if (x2 < 1.58*x1) { */ - if (thmL <= 1.58f * thmR && thmR <= 1.58f * thmL) { - FLOAT const mld_m = cb_mld[b] * ebS; - FLOAT const mld_s = cb_mld[b] * ebM; - FLOAT const tmp_m = Min(thmS, mld_m); - FLOAT const tmp_s = Min(thmM, mld_s); - rmid = Max(thmM, tmp_m); - rside = Max(thmS, tmp_s); - } - else { - rmid = thmM; - rside = thmS; - } - if (msfix > 0.f) { - /***************************************************************/ - /* Adjust M/S maskings if user set "msfix" */ - /***************************************************************/ - /* Naoki Shibata 2000 */ - FLOAT thmLR, thmMS; - FLOAT const ath = ath_cb[b] * athlower; - FLOAT const tmp_l = Max(thmL, ath); - FLOAT const tmp_r = Max(thmR, ath); - thmLR = Min(tmp_l, tmp_r); - thmM = Max(rmid, ath); - thmS = Max(rside, ath); - thmMS = thmM + thmS; - if (thmMS > 0.f && (thmLR * msfix2) < thmMS) { - FLOAT const f = thmLR * msfix2 / thmMS; - thmM *= f; - thmS *= f; - assert(thmMS > 0.f); - } - rmid = Min(thmM, rmid); - rside = Min(thmS, rside); - } - if (rmid > ebM) { - rmid = ebM; - } - if (rside > ebS) { - rside = ebS; - } - thr[2][b] = rmid; - thr[3][b] = rside; - } -} - - -/* - * NOTE: the bitrate reduction from the inter-channel masking effect is low - * compared to the chance of getting annyoing artefacts. L3psycho_anal_vbr does - * not use this feature. (Robert 071216) -*/ - -int -L3psycho_anal_vbr(lame_internal_flags * gfc, - const sample_t * const buffer[2], int gr_out, - III_psy_ratio masking_ratio[2][2], - III_psy_ratio masking_MS_ratio[2][2], - FLOAT percep_entropy[2], FLOAT percep_MS_entropy[2], - FLOAT energy[4], int blocktype_d[2]) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - PsyStateVar_t *const psv = &gfc->sv_psy; - PsyConst_CB2SB_t const *const gdl = &gfc->cd_psy->l; - PsyConst_CB2SB_t const *const gds = &gfc->cd_psy->s; - plotting_data *plt = cfg->analysis ? gfc->pinfo : 0; - - III_psy_xmin last_thm[4]; - - /* fft and energy calculation */ - FLOAT(*wsamp_l)[BLKSIZE]; - FLOAT(*wsamp_s)[3][BLKSIZE_s]; - FLOAT fftenergy[HBLKSIZE]; - FLOAT fftenergy_s[3][HBLKSIZE_s]; - FLOAT wsamp_L[2][BLKSIZE]; - FLOAT wsamp_S[2][3][BLKSIZE_s]; - FLOAT eb[4][CBANDS], thr[4][CBANDS]; - - FLOAT sub_short_factor[4][3]; - FLOAT thmm; - FLOAT const pcfact = 0.6f; - FLOAT const ath_factor = - (cfg->msfix > 0.f) ? (cfg->ATH_offset_factor * gfc->ATH->adjust_factor) : 1.f; - - const FLOAT(*const_eb)[CBANDS] = (const FLOAT(*)[CBANDS]) eb; - const FLOAT(*const_fftenergy_s)[HBLKSIZE_s] = (const FLOAT(*)[HBLKSIZE_s]) fftenergy_s; - - /* block type */ - int ns_attacks[4][4] = { {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} }; - int uselongblock[2]; - - /* usual variables like loop indices, etc.. */ - int chn, sb, sblock; - - /* chn=2 and 3 = Mid and Side channels */ - int const n_chn_psy = (cfg->mode == JOINT_STEREO) ? 4 : cfg->channels_out; - - memcpy(&last_thm[0], &psv->thm[0], sizeof(last_thm)); - - vbrpsy_attack_detection(gfc, buffer, gr_out, masking_ratio, masking_MS_ratio, energy, - sub_short_factor, ns_attacks, uselongblock); - - vbrpsy_compute_block_type(cfg, uselongblock); - - /* LONG BLOCK CASE */ - { - for (chn = 0; chn < n_chn_psy; chn++) { - int const ch01 = chn & 0x01; - - wsamp_l = wsamp_L + ch01; - vbrpsy_compute_fft_l(gfc, buffer, chn, gr_out, fftenergy, wsamp_l); - vbrpsy_compute_loudness_approximation_l(gfc, gr_out, chn, fftenergy); - vbrpsy_compute_masking_l(gfc, fftenergy, eb[chn], thr[chn], chn); - } - if (cfg->mode == JOINT_STEREO) { - if ((uselongblock[0] + uselongblock[1]) == 2) { - vbrpsy_compute_MS_thresholds(const_eb, thr, gdl->mld_cb, gfc->ATH->cb_l, - ath_factor, cfg->msfix, gdl->npart); - } - } - /* TODO: apply adaptive ATH masking here ?? */ - for (chn = 0; chn < n_chn_psy; chn++) { - convert_partition2scalefac_l(gfc, eb[chn], thr[chn], chn); - convert_partition2scalefac_l_to_s(gfc, eb[chn], thr[chn], chn); - } - } - /* SHORT BLOCKS CASE */ - { - int const force_short_block_calc = gfc->cd_psy->force_short_block_calc; - for (sblock = 0; sblock < 3; sblock++) { - for (chn = 0; chn < n_chn_psy; ++chn) { - int const ch01 = chn & 0x01; - if (uselongblock[ch01] && !force_short_block_calc) { - vbrpsy_skip_masking_s(gfc, chn, sblock); - } - else { - /* compute masking thresholds for short blocks */ - wsamp_s = wsamp_S + ch01; - vbrpsy_compute_fft_s(gfc, buffer, chn, sblock, fftenergy_s, wsamp_s); - vbrpsy_compute_masking_s(gfc, const_fftenergy_s, eb[chn], thr[chn], chn, - sblock); - } - } - if (cfg->mode == JOINT_STEREO) { - if ((uselongblock[0] + uselongblock[1]) == 0) { - vbrpsy_compute_MS_thresholds(const_eb, thr, gds->mld_cb, gfc->ATH->cb_s, - ath_factor, cfg->msfix, gds->npart); - } - } - /* TODO: apply adaptive ATH masking here ?? */ - for (chn = 0; chn < n_chn_psy; ++chn) { - int const ch01 = chn & 0x01; - if (!uselongblock[ch01] || force_short_block_calc) { - convert_partition2scalefac_s(gfc, eb[chn], thr[chn], chn, sblock); - } - } - } - - /**** short block pre-echo control ****/ - for (chn = 0; chn < n_chn_psy; chn++) { - for (sb = 0; sb < SBMAX_s; sb++) { - FLOAT new_thmm[3], prev_thm, t1, t2; - for (sblock = 0; sblock < 3; sblock++) { - thmm = psv->thm[chn].s[sb][sblock]; - thmm *= NS_PREECHO_ATT0; - - t1 = t2 = thmm; - - if (sblock > 0) { - prev_thm = new_thmm[sblock - 1]; - } - else { - prev_thm = last_thm[chn].s[sb][2]; - } - if (ns_attacks[chn][sblock] >= 2 || ns_attacks[chn][sblock + 1] == 1) { - t1 = NS_INTERP(prev_thm, thmm, NS_PREECHO_ATT1 * pcfact); - } - thmm = Min(t1, thmm); - if (ns_attacks[chn][sblock] == 1) { - t2 = NS_INTERP(prev_thm, thmm, NS_PREECHO_ATT2 * pcfact); - } - else if ((sblock == 0 && psv->last_attacks[chn] == 3) - || (sblock > 0 && ns_attacks[chn][sblock - 1] == 3)) { /* 2nd preceeding block */ - switch (sblock) { - case 0: - prev_thm = last_thm[chn].s[sb][1]; - break; - case 1: - prev_thm = last_thm[chn].s[sb][2]; - break; - case 2: - prev_thm = new_thmm[0]; - break; - } - t2 = NS_INTERP(prev_thm, thmm, NS_PREECHO_ATT2 * pcfact); - } - - thmm = Min(t1, thmm); - thmm = Min(t2, thmm); - - /* pulse like signal detection for fatboy.wav and so on */ - thmm *= sub_short_factor[chn][sblock]; - - new_thmm[sblock] = thmm; - } - for (sblock = 0; sblock < 3; sblock++) { - psv->thm[chn].s[sb][sblock] = new_thmm[sblock]; - } - } - } - } - for (chn = 0; chn < n_chn_psy; chn++) { - psv->last_attacks[chn] = ns_attacks[chn][2]; - } - - - /*************************************************************** - * determine final block type - ***************************************************************/ - vbrpsy_apply_block_type(psv, cfg->channels_out, uselongblock, blocktype_d); - - /********************************************************************* - * compute the value of PE to return ... no delay and advance - *********************************************************************/ - for (chn = 0; chn < n_chn_psy; chn++) { - FLOAT *ppe; - int type; - III_psy_ratio const *mr; - - if (chn > 1) { - ppe = percep_MS_entropy - 2; - type = NORM_TYPE; - if (blocktype_d[0] == SHORT_TYPE || blocktype_d[1] == SHORT_TYPE) - type = SHORT_TYPE; - mr = &masking_MS_ratio[gr_out][chn - 2]; - } - else { - ppe = percep_entropy; - type = blocktype_d[chn]; - mr = &masking_ratio[gr_out][chn]; - } - if (type == SHORT_TYPE) { - ppe[chn] = pecalc_s(mr, gfc->sv_qnt.masking_lower); - } - else { - ppe[chn] = pecalc_l(mr, gfc->sv_qnt.masking_lower); - } - - if (plt) { - plt->pe[gr_out][chn] = ppe[chn]; - } - } - return 0; -} - - - - -/* - * The spreading function. Values returned in units of energy - */ -static FLOAT -s3_func(FLOAT bark) -{ - FLOAT tempx, x, tempy, temp; - tempx = bark; - if (tempx >= 0) - tempx *= 3; - else - tempx *= 1.5; - - if (tempx >= 0.5 && tempx <= 2.5) { - temp = tempx - 0.5; - x = 8.0 * (temp * temp - 2.0 * temp); - } - else - x = 0.0; - tempx += 0.474; - tempy = 15.811389 + 7.5 * tempx - 17.5 * sqrt(1.0 + tempx * tempx); - - if (tempy <= -60.0) - return 0.0; - - tempx = exp((x + tempy) * LN_TO_LOG10); - - /* Normalization. The spreading function should be normalized so that: - +inf - / - | s3 [ bark ] d(bark) = 1 - / - -inf - */ - tempx /= .6609193; - return tempx; -} - -#if 0 -static FLOAT -norm_s3_func(void) -{ - double lim_a = 0, lim_b = 0; - double x = 0, l, h; - for (x = 0; s3_func(x) > 1e-20; x -= 1); - l = x; - h = 0; - while (fabs(h - l) > 1e-12) { - x = (h + l) / 2; - if (s3_func(x) > 0) { - h = x; - } - else { - l = x; - } - } - lim_a = l; - for (x = 0; s3_func(x) > 1e-20; x += 1); - l = 0; - h = x; - while (fabs(h - l) > 1e-12) { - x = (h + l) / 2; - if (s3_func(x) > 0) { - l = x; - } - else { - h = x; - } - } - lim_b = h; - { - double sum = 0; - int const m = 1000; - int i; - for (i = 0; i <= m; ++i) { - double x = lim_a + i * (lim_b - lim_a) / m; - double y = s3_func(x); - sum += y; - } - { - double norm = (m + 1) / (sum * (lim_b - lim_a)); - /*printf( "norm = %lf\n",norm); */ - return norm; - } - } -} -#endif - -static FLOAT -stereo_demask(double f) -{ - /* setup stereo demasking thresholds */ - /* formula reverse enginerred from plot in paper */ - double arg = freq2bark(f); - arg = (Min(arg, 15.5) / 15.5); - - return pow(10.0, 1.25 * (1 - cos(PI * arg)) - 2.5); -} - -static void -init_numline(PsyConst_CB2SB_t * gd, FLOAT sfreq, int fft_size, - int mdct_size, int sbmax, int const *scalepos) -{ - FLOAT b_frq[CBANDS + 1]; - FLOAT const mdct_freq_frac = sfreq / (2.0f * mdct_size); - FLOAT const deltafreq = fft_size / (2.0f * mdct_size); - int partition[HBLKSIZE] = { 0 }; - int i, j, ni; - int sfb; - sfreq /= fft_size; - j = 0; - ni = 0; - /* compute numlines, the number of spectral lines in each partition band */ - /* each partition band should be about DELBARK wide. */ - for (i = 0; i < CBANDS; i++) { - FLOAT bark1; - int j2, nl; - bark1 = freq2bark(sfreq * j); - - b_frq[i] = sfreq * j; - - for (j2 = j; freq2bark(sfreq * j2) - bark1 < DELBARK && j2 <= fft_size / 2; j2++); - - nl = j2 - j; - gd->numlines[i] = nl; - gd->rnumlines[i] = (nl > 0) ? (1.0f / nl) : 0; - - ni = i + 1; - - while (j < j2) { - assert(j < HBLKSIZE); - partition[j++] = i; - } - if (j > fft_size / 2) { - j = fft_size / 2; - ++i; - break; - } - } - assert(i < CBANDS); - b_frq[i] = sfreq * j; - - gd->n_sb = sbmax; - gd->npart = ni; - - { - j = 0; - for (i = 0; i < gd->npart; i++) { - int const nl = gd->numlines[i]; - FLOAT const freq = sfreq * (j + nl / 2); - gd->mld_cb[i] = stereo_demask(freq); - j += nl; - } - for (; i < CBANDS; ++i) { - gd->mld_cb[i] = 1; - } - } - for (sfb = 0; sfb < sbmax; sfb++) { - int i1, i2, bo; - int start = scalepos[sfb]; - int end = scalepos[sfb + 1]; - - i1 = floor(.5 + deltafreq * (start - .5)); - if (i1 < 0) - i1 = 0; - i2 = floor(.5 + deltafreq * (end - .5)); - - if (i2 > fft_size / 2) - i2 = fft_size / 2; - - bo = partition[i2]; - gd->bm[sfb] = (partition[i1] + partition[i2]) / 2; - gd->bo[sfb] = bo; - - /* calculate how much of this band belongs to current scalefactor band */ - { - FLOAT const f_tmp = mdct_freq_frac * end; - FLOAT bo_w = (f_tmp - b_frq[bo]) / (b_frq[bo + 1] - b_frq[bo]); - if (bo_w < 0) { - bo_w = 0; - } - else { - if (bo_w > 1) { - bo_w = 1; - } - } - gd->bo_weight[sfb] = bo_w; - } - gd->mld[sfb] = stereo_demask(mdct_freq_frac * start); - } -} - -static void -compute_bark_values(PsyConst_CB2SB_t const *gd, FLOAT sfreq, int fft_size, - FLOAT * bval, FLOAT * bval_width) -{ - /* compute bark values of each critical band */ - int k, j = 0, ni = gd->npart; - sfreq /= fft_size; - for (k = 0; k < ni; k++) { - int const w = gd->numlines[k]; - FLOAT bark1, bark2; - - bark1 = freq2bark(sfreq * (j)); - bark2 = freq2bark(sfreq * (j + w - 1)); - bval[k] = .5 * (bark1 + bark2); - - bark1 = freq2bark(sfreq * (j - .5)); - bark2 = freq2bark(sfreq * (j + w - .5)); - bval_width[k] = bark2 - bark1; - j += w; - } -} - -static int -init_s3_values(FLOAT ** p, int (*s3ind)[2], int npart, - FLOAT const *bval, FLOAT const *bval_width, FLOAT const *norm) -{ - FLOAT s3[CBANDS][CBANDS]; - /* The s3 array is not linear in the bark scale. - * bval[x] should be used to get the bark value. - */ - int i, j, k; - int numberOfNoneZero = 0; - - memset(&s3[0][0], 0, sizeof(s3)); - - /* s[i][j], the value of the spreading function, - * centered at band j (masker), for band i (maskee) - * - * i.e.: sum over j to spread into signal barkval=i - * NOTE: i and j are used opposite as in the ISO docs - */ - for (i = 0; i < npart; i++) { - for (j = 0; j < npart; j++) { - FLOAT v = s3_func(bval[i] - bval[j]) * bval_width[j]; - s3[i][j] = v * norm[i]; - } - } - for (i = 0; i < npart; i++) { - for (j = 0; j < npart; j++) { - if (s3[i][j] > 0.0f) - break; - } - s3ind[i][0] = j; - - for (j = npart - 1; j > 0; j--) { - if (s3[i][j] > 0.0f) - break; - } - s3ind[i][1] = j; - numberOfNoneZero += (s3ind[i][1] - s3ind[i][0] + 1); - } - *p = malloc(sizeof(FLOAT) * numberOfNoneZero); - if (!*p) - return -1; - - k = 0; - for (i = 0; i < npart; i++) - for (j = s3ind[i][0]; j <= s3ind[i][1]; j++) - (*p)[k++] = s3[i][j]; - - return 0; -} - -int -psymodel_init(lame_global_flags const *gfp) -{ - lame_internal_flags *const gfc = gfp->internal_flags; - SessionConfig_t *const cfg = &gfc->cfg; - PsyStateVar_t *const psv = &gfc->sv_psy; - PsyConst_t *gd; - int i, j, b, sb, k; - FLOAT bvl_a = 13, bvl_b = 24; - FLOAT snr_l_a = 0, snr_l_b = 0; - FLOAT snr_s_a = -8.25, snr_s_b = -4.5; - - FLOAT bval[CBANDS]; - FLOAT bval_width[CBANDS]; - FLOAT norm[CBANDS]; - FLOAT const sfreq = cfg->samplerate_out; - - FLOAT xav = 10, xbv = 12; - FLOAT const minval_low = (0.f - cfg->minval); - - if (gfc->cd_psy != 0) { - return 0; - } - memset(norm, 0, sizeof(norm)); - - gd = calloc(1, sizeof(PsyConst_t)); - gfc->cd_psy = gd; - - gd->force_short_block_calc = gfp->experimentalZ; - - psv->blocktype_old[0] = psv->blocktype_old[1] = NORM_TYPE; /* the vbr header is long blocks */ - - for (i = 0; i < 4; ++i) { - for (j = 0; j < CBANDS; ++j) { - psv->nb_l1[i][j] = 1e20; - psv->nb_l2[i][j] = 1e20; - psv->nb_s1[i][j] = psv->nb_s2[i][j] = 1.0; - } - for (sb = 0; sb < SBMAX_l; sb++) { - psv->en[i].l[sb] = 1e20; - psv->thm[i].l[sb] = 1e20; - } - for (j = 0; j < 3; ++j) { - for (sb = 0; sb < SBMAX_s; sb++) { - psv->en[i].s[sb][j] = 1e20; - psv->thm[i].s[sb][j] = 1e20; - } - psv->last_attacks[i] = 0; - } - for (j = 0; j < 9; j++) - psv->last_en_subshort[i][j] = 10.; - } - - - /* init. for loudness approx. -jd 2001 mar 27 */ - psv->loudness_sq_save[0] = psv->loudness_sq_save[1] = 0.0; - - - - /************************************************************************* - * now compute the psychoacoustic model specific constants - ************************************************************************/ - /* compute numlines, bo, bm, bval, bval_width, mld */ - init_numline(&gd->l, sfreq, BLKSIZE, 576, SBMAX_l, gfc->scalefac_band.l); - assert(gd->l.npart < CBANDS); - compute_bark_values(&gd->l, sfreq, BLKSIZE, bval, bval_width); - - /* compute the spreading function */ - for (i = 0; i < gd->l.npart; i++) { - double snr = snr_l_a; - if (bval[i] >= bvl_a) { - snr = snr_l_b * (bval[i] - bvl_a) / (bvl_b - bvl_a) - + snr_l_a * (bvl_b - bval[i]) / (bvl_b - bvl_a); - } - norm[i] = pow(10.0, snr / 10.0); - } - i = init_s3_values(&gd->l.s3, gd->l.s3ind, gd->l.npart, bval, bval_width, norm); - if (i) - return i; - - /* compute long block specific values, ATH and MINVAL */ - j = 0; - for (i = 0; i < gd->l.npart; i++) { - double x; - - /* ATH */ - x = FLOAT_MAX; - for (k = 0; k < gd->l.numlines[i]; k++, j++) { - FLOAT const freq = sfreq * j / (1000.0 * BLKSIZE); - FLOAT level; - /* freq = Min(.1,freq); *//* ATH below 100 Hz constant, not further climbing */ - level = ATHformula(cfg, freq * 1000) - 20; /* scale to FFT units; returned value is in dB */ - level = pow(10., 0.1 * level); /* convert from dB -> energy */ - level *= gd->l.numlines[i]; - if (x > level) - x = level; - } - gfc->ATH->cb_l[i] = x; - - /* MINVAL. - For low freq, the strength of the masking is limited by minval - this is an ISO MPEG1 thing, dont know if it is really needed */ - /* FIXME: it does work to reduce low-freq problems in S53-Wind-Sax - and lead-voice samples, but introduces some 3 kbps bit bloat too. - TODO: Further refinement of the shape of this hack. - */ - x = 20.0 * (bval[i] / xav - 1.0); - if (x > 6) { - x = 30; - } - if (x < minval_low) { - x = minval_low; - } - if (cfg->samplerate_out < 44000) { - x = 30; - } - x -= 8.; - gd->l.minval[i] = pow(10.0, x / 10.) * gd->l.numlines[i]; - } - - /************************************************************************ - * do the same things for short blocks - ************************************************************************/ - init_numline(&gd->s, sfreq, BLKSIZE_s, 192, SBMAX_s, gfc->scalefac_band.s); - assert(gd->s.npart < CBANDS); - compute_bark_values(&gd->s, sfreq, BLKSIZE_s, bval, bval_width); - - /* SNR formula. short block is normalized by SNR. is it still right ? */ - j = 0; - for (i = 0; i < gd->s.npart; i++) { - double x; - double snr = snr_s_a; - if (bval[i] >= bvl_a) { - snr = snr_s_b * (bval[i] - bvl_a) / (bvl_b - bvl_a) - + snr_s_a * (bvl_b - bval[i]) / (bvl_b - bvl_a); - } - norm[i] = pow(10.0, snr / 10.0); - - /* ATH */ - x = FLOAT_MAX; - for (k = 0; k < gd->s.numlines[i]; k++, j++) { - FLOAT const freq = sfreq * j / (1000.0 * BLKSIZE_s); - FLOAT level; - /* freq = Min(.1,freq); *//* ATH below 100 Hz constant, not further climbing */ - level = ATHformula(cfg, freq * 1000) - 20; /* scale to FFT units; returned value is in dB */ - level = pow(10., 0.1 * level); /* convert from dB -> energy */ - level *= gd->s.numlines[i]; - if (x > level) - x = level; - } - gfc->ATH->cb_s[i] = x; - - /* MINVAL. - For low freq, the strength of the masking is limited by minval - this is an ISO MPEG1 thing, dont know if it is really needed */ - x = 7.0 * (bval[i] / xbv - 1.0); - if (bval[i] > xbv) { - x *= 1 + log(1 + x) * 3.1; - } - if (bval[i] < xbv) { - x *= 1 + log(1 - x) * 2.3; - } - if (x > 6) { - x = 30; - } - if (x < minval_low) { - x = minval_low; - } - if (cfg->samplerate_out < 44000) { - x = 30; - } - x -= 8; - gd->s.minval[i] = pow(10.0, x / 10) * gd->s.numlines[i]; - } - - i = init_s3_values(&gd->s.s3, gd->s.s3ind, gd->s.npart, bval, bval_width, norm); - if (i) - return i; - - - init_mask_add_max_values(); - init_fft(gfc); - - /* setup temporal masking */ - gd->decay = exp(-1.0 * LOG10 / (temporalmask_sustain_sec * sfreq / 192.0)); - - { - FLOAT msfix; - msfix = NS_MSFIX; - if (cfg->use_safe_joint_stereo) - msfix = 1.0; - if (fabs(cfg->msfix) > 0.0) - msfix = cfg->msfix; - cfg->msfix = msfix; - - /* spread only from npart_l bands. Normally, we use the spreading - * function to convolve from npart_l down to npart_l bands - */ - for (b = 0; b < gd->l.npart; b++) - if (gd->l.s3ind[b][1] > gd->l.npart - 1) - gd->l.s3ind[b][1] = gd->l.npart - 1; - } - - /* prepare for ATH auto adjustment: - * we want to decrease the ATH by 12 dB per second - */ -#define frame_duration (576. * cfg->mode_gr / sfreq) - gfc->ATH->decay = pow(10., -12. / 10. * frame_duration); - gfc->ATH->adjust_factor = 0.01; /* minimum, for leading low loudness */ - gfc->ATH->adjust_limit = 1.0; /* on lead, allow adjust up to maximum */ -#undef frame_duration - - assert(gd->l.bo[SBMAX_l - 1] <= gd->l.npart); - assert(gd->s.bo[SBMAX_s - 1] <= gd->s.npart); - - if (cfg->ATHtype != -1) { - /* compute equal loudness weights (eql_w) */ - FLOAT freq; - FLOAT const freq_inc = (FLOAT) cfg->samplerate_out / (FLOAT) (BLKSIZE); - FLOAT eql_balance = 0.0; - freq = 0.0; - for (i = 0; i < BLKSIZE / 2; ++i) { - /* convert ATH dB to relative power (not dB) */ - /* to determine eql_w */ - freq += freq_inc; - gfc->ATH->eql_w[i] = 1. / pow(10, ATHformula(cfg, freq) / 10); - eql_balance += gfc->ATH->eql_w[i]; - } - eql_balance = 1.0 / eql_balance; - for (i = BLKSIZE / 2; --i >= 0;) { /* scale weights */ - gfc->ATH->eql_w[i] *= eql_balance; - } - } - { - for (b = j = 0; b < gd->s.npart; ++b) { - for (i = 0; i < gd->s.numlines[b]; ++i) { - ++j; - } - } - assert(j == 129); - for (b = j = 0; b < gd->l.npart; ++b) { - for (i = 0; i < gd->l.numlines[b]; ++i) { - ++j; - } - } - assert(j == 513); - } - /* short block attack threshold */ - { - float x = gfp->attackthre; - float y = gfp->attackthre_s; - if (x < 0) { - x = NSATTACKTHRE; - } - if (y < 0) { - y = NSATTACKTHRE_S; - } - gd->attack_threshold[0] = gd->attack_threshold[1] = gd->attack_threshold[2] = x; - gd->attack_threshold[3] = y; - } - { - float sk_s = -10.f, sk_l = -4.7f; - static float const sk[] = - { -7.4, -7.4, -7.4, -9.5, -7.4, -6.1, -5.5, -4.7, -4.7, -4.7, -4.7 }; - if (gfp->VBR_q < 4) { - sk_l = sk_s = sk[0]; - } - else { - sk_l = sk_s = sk[gfp->VBR_q] + gfp->VBR_q_frac * (sk[gfp->VBR_q] - sk[gfp->VBR_q + 1]); - } - b = 0; - for (; b < gd->s.npart; b++) { - float m = (float) (gd->s.npart - b) / gd->s.npart; - gd->s.masking_lower[b] = powf(10.f, sk_s * m * 0.1f); - } - for (; b < CBANDS; ++b) { - gd->s.masking_lower[b] = 1.f; - } - b = 0; - for (; b < gd->l.npart; b++) { - float m = (float) (gd->l.npart - b) / gd->l.npart; - gd->l.masking_lower[b] = powf(10.f, sk_l * m * 0.1f); - } - for (; b < CBANDS; ++b) { - gd->l.masking_lower[b] = 1.f; - } - } - memcpy(&gd->l_to_s, &gd->l, sizeof(gd->l_to_s)); - init_numline(&gd->l_to_s, sfreq, BLKSIZE, 192, SBMAX_s, gfc->scalefac_band.s); - return 0; -} diff --git a/platform/win32/msvc/external/lame/libmp3lame/psymodel.h b/platform/win32/msvc/external/lame/libmp3lame/psymodel.h deleted file mode 100644 index f46083cd832..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/psymodel.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * psymodel.h - * - * Copyright (c) 1999 Mark Taylor - * - * 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 LAME_PSYMODEL_H -#define LAME_PSYMODEL_H - - -int L3psycho_anal_ns(lame_internal_flags * gfc, - const sample_t *const buffer[2], int gr, - III_psy_ratio ratio[2][2], - III_psy_ratio MS_ratio[2][2], - FLOAT pe[2], FLOAT pe_MS[2], FLOAT ener[2], int blocktype_d[2]); - -int L3psycho_anal_vbr(lame_internal_flags * gfc, - const sample_t *const buffer[2], int gr, - III_psy_ratio ratio[2][2], - III_psy_ratio MS_ratio[2][2], - FLOAT pe[2], FLOAT pe_MS[2], FLOAT ener[2], int blocktype_d[2]); - - -int psymodel_init(lame_global_flags const* gfp); - - -#define rpelev 2 -#define rpelev2 16 -#define rpelev_s 2 -#define rpelev2_s 16 - -/* size of each partition band, in barks: */ -#define DELBARK .34 - - -/* tuned for output level (sensitive to energy scale) */ -#define VO_SCALE (1./( 14752*14752 )/(BLKSIZE/2)) - -#define temporalmask_sustain_sec 0.01 - -#define NS_PREECHO_ATT0 0.8 -#define NS_PREECHO_ATT1 0.6 -#define NS_PREECHO_ATT2 0.3 - -#define NS_MSFIX 3.5 -#define NSATTACKTHRE 4.4 -#define NSATTACKTHRE_S 25 - -#endif /* LAME_PSYMODEL_H */ diff --git a/platform/win32/msvc/external/lame/libmp3lame/quantize.c b/platform/win32/msvc/external/lame/libmp3lame/quantize.c deleted file mode 100644 index ffbc6bd011c..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/quantize.c +++ /dev/null @@ -1,2050 +0,0 @@ -/* - * MP3 quantization - * - * Copyright (c) 1999-2000 Mark Taylor - * Copyright (c) 1999-2003 Takehiro Tominaga - * Copyright (c) 2000-2011 Robert Hegemann - * Copyright (c) 2001-2005 Gabriel Bouvigne - * - * 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. - */ - -/* $Id: quantize.c,v 1.216.2.1 2012/01/08 23:49:58 robert Exp $ */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "lame.h" -#include "machine.h" -#include "encoder.h" -#include "util.h" -#include "quantize_pvt.h" -#include "reservoir.h" -#include "bitstream.h" -#include "vbrquantize.h" -#include "quantize.h" -#ifdef HAVE_XMMINTRIN_H -#include "vector/lame_intrin.h" -#endif - - - - -/* convert from L/R <-> Mid/Side */ -static void -ms_convert(III_side_info_t * l3_side, int gr) -{ - int i; - for (i = 0; i < 576; ++i) { - FLOAT l, r; - l = l3_side->tt[gr][0].xr[i]; - r = l3_side->tt[gr][1].xr[i]; - l3_side->tt[gr][0].xr[i] = (l + r) * (FLOAT) (SQRT2 * 0.5); - l3_side->tt[gr][1].xr[i] = (l - r) * (FLOAT) (SQRT2 * 0.5); - } -} - -/************************************************************************ - * - * init_outer_loop() - * mt 6/99 - * - * initializes cod_info, scalefac and xrpow - * - * returns 0 if all energies in xr are zero, else 1 - * - ************************************************************************/ - -static void -init_xrpow_core_c(gr_info * const cod_info, FLOAT xrpow[576], int upper, FLOAT * sum) -{ - int i; - FLOAT tmp; - *sum = 0; - for (i = 0; i <= upper; ++i) { - tmp = fabs(cod_info->xr[i]); - *sum += tmp; - xrpow[i] = sqrt(tmp * sqrt(tmp)); - - if (xrpow[i] > cod_info->xrpow_max) - cod_info->xrpow_max = xrpow[i]; - } -} - - - - - -void -init_xrpow_core_init(lame_internal_flags * const gfc) -{ - gfc->init_xrpow_core = init_xrpow_core_c; - -#if defined(HAVE_XMMINTRIN_H) - if (gfc->CPU_features.SSE) - gfc->init_xrpow_core = init_xrpow_core_sse; -#endif -#ifndef HAVE_NASM -#ifdef MIN_ARCH_SSE - gfc->init_xrpow_core = init_xrpow_core_sse; -#endif -#endif -} - - - -static int -init_xrpow(lame_internal_flags * gfc, gr_info * const cod_info, FLOAT xrpow[576]) -{ - FLOAT sum = 0; - int i; - int const upper = cod_info->max_nonzero_coeff; - - assert(xrpow != NULL); - cod_info->xrpow_max = 0; - - /* check if there is some energy we have to quantize - * and calculate xrpow matching our fresh scalefactors - */ - assert(0 <= upper && upper <= 575); - memset(&(xrpow[upper]), 0, (576 - upper) * sizeof(xrpow[0])); - - - gfc->init_xrpow_core(cod_info, xrpow, upper, &sum); - - /* return 1 if we have something to quantize, else 0 - */ - if (sum > (FLOAT) 1E-20) { - int j = 0; - if (gfc->sv_qnt.substep_shaping & 2) - j = 1; - - for (i = 0; i < cod_info->psymax; i++) - gfc->sv_qnt.pseudohalf[i] = j; - - return 1; - } - - memset(&cod_info->l3_enc[0], 0, sizeof(int) * 576); - return 0; -} - - - - - -/* -Gabriel Bouvigne feb/apr 2003 -Analog silence detection in partitionned sfb21 -or sfb12 for short blocks - -From top to bottom of sfb, changes to 0 -coeffs which are below ath. It stops on the first -coeff higher than ath. -*/ -static void -psfb21_analogsilence(lame_internal_flags const *gfc, gr_info * const cod_info) -{ - ATH_t const *const ATH = gfc->ATH; - FLOAT *const xr = cod_info->xr; - - if (cod_info->block_type != SHORT_TYPE) { /* NORM, START or STOP type, but not SHORT blocks */ - int gsfb; - int stop = 0; - for (gsfb = PSFB21 - 1; gsfb >= 0 && !stop; gsfb--) { - int const start = gfc->scalefac_band.psfb21[gsfb]; - int const end = gfc->scalefac_band.psfb21[gsfb + 1]; - int j; - FLOAT ath21; - ath21 = athAdjust(ATH->adjust_factor, ATH->psfb21[gsfb], ATH->floor, 0); - - if (gfc->sv_qnt.longfact[21] > 1e-12f) - ath21 *= gfc->sv_qnt.longfact[21]; - - for (j = end - 1; j >= start; j--) { - if (fabs(xr[j]) < ath21) - xr[j] = 0; - else { - stop = 1; - break; - } - } - } - } - else { - /*note: short blocks coeffs are reordered */ - int block; - for (block = 0; block < 3; block++) { - - int gsfb; - int stop = 0; - for (gsfb = PSFB12 - 1; gsfb >= 0 && !stop; gsfb--) { - int const start = gfc->scalefac_band.s[12] * 3 + - (gfc->scalefac_band.s[13] - gfc->scalefac_band.s[12]) * block + - (gfc->scalefac_band.psfb12[gsfb] - gfc->scalefac_band.psfb12[0]); - int const end = - start + (gfc->scalefac_band.psfb12[gsfb + 1] - gfc->scalefac_band.psfb12[gsfb]); - int j; - FLOAT ath12; - ath12 = athAdjust(ATH->adjust_factor, ATH->psfb12[gsfb], ATH->floor, 0); - - if (gfc->sv_qnt.shortfact[12] > 1e-12f) - ath12 *= gfc->sv_qnt.shortfact[12]; - - for (j = end - 1; j >= start; j--) { - if (fabs(xr[j]) < ath12) - xr[j] = 0; - else { - stop = 1; - break; - } - } - } - } - } - -} - - - - - -static void -init_outer_loop(lame_internal_flags const *gfc, gr_info * const cod_info) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - int sfb, j; - /* initialize fresh cod_info - */ - cod_info->part2_3_length = 0; - cod_info->big_values = 0; - cod_info->count1 = 0; - cod_info->global_gain = 210; - cod_info->scalefac_compress = 0; - /* mixed_block_flag, block_type was set in psymodel.c */ - cod_info->table_select[0] = 0; - cod_info->table_select[1] = 0; - cod_info->table_select[2] = 0; - cod_info->subblock_gain[0] = 0; - cod_info->subblock_gain[1] = 0; - cod_info->subblock_gain[2] = 0; - cod_info->subblock_gain[3] = 0; /* this one is always 0 */ - cod_info->region0_count = 0; - cod_info->region1_count = 0; - cod_info->preflag = 0; - cod_info->scalefac_scale = 0; - cod_info->count1table_select = 0; - cod_info->part2_length = 0; - if (cfg->samplerate_out <= 8000) { - cod_info->sfb_lmax = 17; - cod_info->sfb_smin = 9; - cod_info->psy_lmax = 17; - } - else { - cod_info->sfb_lmax = SBPSY_l; - cod_info->sfb_smin = SBPSY_s; - cod_info->psy_lmax = gfc->sv_qnt.sfb21_extra ? SBMAX_l : SBPSY_l; - } - cod_info->psymax = cod_info->psy_lmax; - cod_info->sfbmax = cod_info->sfb_lmax; - cod_info->sfbdivide = 11; - for (sfb = 0; sfb < SBMAX_l; sfb++) { - cod_info->width[sfb] - = gfc->scalefac_band.l[sfb + 1] - gfc->scalefac_band.l[sfb]; - cod_info->window[sfb] = 3; /* which is always 0. */ - } - if (cod_info->block_type == SHORT_TYPE) { - FLOAT ixwork[576]; - FLOAT *ix; - - cod_info->sfb_smin = 0; - cod_info->sfb_lmax = 0; - if (cod_info->mixed_block_flag) { - /* - * MPEG-1: sfbs 0-7 long block, 3-12 short blocks - * MPEG-2(.5): sfbs 0-5 long block, 3-12 short blocks - */ - cod_info->sfb_smin = 3; - cod_info->sfb_lmax = cfg->mode_gr * 2 + 4; - } - if (cfg->samplerate_out <= 8000) { - cod_info->psymax - = cod_info->sfb_lmax - + 3 * (9 - cod_info->sfb_smin); - cod_info->sfbmax = cod_info->sfb_lmax + 3 * (9 - cod_info->sfb_smin); - } - else { - cod_info->psymax - = cod_info->sfb_lmax - + 3 * ((gfc->sv_qnt.sfb21_extra ? SBMAX_s : SBPSY_s) - cod_info->sfb_smin); - cod_info->sfbmax = cod_info->sfb_lmax + 3 * (SBPSY_s - cod_info->sfb_smin); - } - cod_info->sfbdivide = cod_info->sfbmax - 18; - cod_info->psy_lmax = cod_info->sfb_lmax; - /* re-order the short blocks, for more efficient encoding below */ - /* By Takehiro TOMINAGA */ - /* - Within each scalefactor band, data is given for successive - time windows, beginning with window 0 and ending with window 2. - Within each window, the quantized values are then arranged in - order of increasing frequency... - */ - ix = &cod_info->xr[gfc->scalefac_band.l[cod_info->sfb_lmax]]; - memcpy(ixwork, cod_info->xr, 576 * sizeof(FLOAT)); - for (sfb = cod_info->sfb_smin; sfb < SBMAX_s; sfb++) { - int const start = gfc->scalefac_band.s[sfb]; - int const end = gfc->scalefac_band.s[sfb + 1]; - int window, l; - for (window = 0; window < 3; window++) { - for (l = start; l < end; l++) { - *ix++ = ixwork[3 * l + window]; - } - } - } - - j = cod_info->sfb_lmax; - for (sfb = cod_info->sfb_smin; sfb < SBMAX_s; sfb++) { - cod_info->width[j] = cod_info->width[j + 1] = cod_info->width[j + 2] - = gfc->scalefac_band.s[sfb + 1] - gfc->scalefac_band.s[sfb]; - cod_info->window[j] = 0; - cod_info->window[j + 1] = 1; - cod_info->window[j + 2] = 2; - j += 3; - } - } - - cod_info->count1bits = 0; - cod_info->sfb_partition_table = nr_of_sfb_block[0][0]; - cod_info->slen[0] = 0; - cod_info->slen[1] = 0; - cod_info->slen[2] = 0; - cod_info->slen[3] = 0; - - cod_info->max_nonzero_coeff = 575; - - /* fresh scalefactors are all zero - */ - memset(cod_info->scalefac, 0, sizeof(cod_info->scalefac)); - - if (cfg->vbr != vbr_mt && cfg->vbr != vbr_mtrh && cfg->vbr != vbr_abr && cfg->vbr != vbr_off) { - psfb21_analogsilence(gfc, cod_info); - } -} - - - -/************************************************************************ - * - * bin_search_StepSize() - * - * author/date?? - * - * binary step size search - * used by outer_loop to get a quantizer step size to start with - * - ************************************************************************/ - -typedef enum { - BINSEARCH_NONE, - BINSEARCH_UP, - BINSEARCH_DOWN -} binsearchDirection_t; - -static int -bin_search_StepSize(lame_internal_flags * const gfc, gr_info * const cod_info, - int desired_rate, const int ch, const FLOAT xrpow[576]) -{ - int nBits; - int CurrentStep = gfc->sv_qnt.CurrentStep[ch]; - int flag_GoneOver = 0; - int const start = gfc->sv_qnt.OldValue[ch]; - binsearchDirection_t Direction = BINSEARCH_NONE; - cod_info->global_gain = start; - desired_rate -= cod_info->part2_length; - - assert(CurrentStep); - for (;;) { - int step; - nBits = count_bits(gfc, xrpow, cod_info, 0); - - if (CurrentStep == 1 || nBits == desired_rate) - break; /* nothing to adjust anymore */ - - if (nBits > desired_rate) { - /* increase Quantize_StepSize */ - if (Direction == BINSEARCH_DOWN) - flag_GoneOver = 1; - - if (flag_GoneOver) - CurrentStep /= 2; - Direction = BINSEARCH_UP; - step = CurrentStep; - } - else { - /* decrease Quantize_StepSize */ - if (Direction == BINSEARCH_UP) - flag_GoneOver = 1; - - if (flag_GoneOver) - CurrentStep /= 2; - Direction = BINSEARCH_DOWN; - step = -CurrentStep; - } - cod_info->global_gain += step; - if (cod_info->global_gain < 0) { - cod_info->global_gain = 0; - flag_GoneOver = 1; - } - if (cod_info->global_gain > 255) { - cod_info->global_gain = 255; - flag_GoneOver = 1; - } - } - - assert(cod_info->global_gain >= 0); - assert(cod_info->global_gain < 256); - - while (nBits > desired_rate && cod_info->global_gain < 255) { - cod_info->global_gain++; - nBits = count_bits(gfc, xrpow, cod_info, 0); - } - gfc->sv_qnt.CurrentStep[ch] = (start - cod_info->global_gain >= 4) ? 4 : 2; - gfc->sv_qnt.OldValue[ch] = cod_info->global_gain; - cod_info->part2_3_length = nBits; - return nBits; -} - - - - -/************************************************************************ - * - * trancate_smallspectrums() - * - * Takehiro TOMINAGA 2002-07-21 - * - * trancate smaller nubmers into 0 as long as the noise threshold is allowed. - * - ************************************************************************/ -static int -floatcompare(const void *v1, const void *v2) -{ - const FLOAT *const a = v1, *const b = v2; - if (*a > *b) - return 1; - if (*a < *b) - return -1; - return 0; -} - -static void -trancate_smallspectrums(lame_internal_flags const *gfc, - gr_info * const gi, const FLOAT * const l3_xmin, FLOAT * const work) -{ - int sfb, j, width; - FLOAT distort[SFBMAX]; - calc_noise_result dummy; - - if ((!(gfc->sv_qnt.substep_shaping & 4) && gi->block_type == SHORT_TYPE) - || gfc->sv_qnt.substep_shaping & 0x80) - return; - (void) calc_noise(gi, l3_xmin, distort, &dummy, 0); - for (j = 0; j < 576; j++) { - FLOAT xr = 0.0; - if (gi->l3_enc[j] != 0) - xr = fabs(gi->xr[j]); - work[j] = xr; - } - - j = 0; - sfb = 8; - if (gi->block_type == SHORT_TYPE) - sfb = 6; - do { - FLOAT allowedNoise, trancateThreshold; - int nsame, start; - - width = gi->width[sfb]; - j += width; - if (distort[sfb] >= 1.0) - continue; - - qsort(&work[j - width], width, sizeof(FLOAT), floatcompare); - if (EQ(work[j - 1], 0.0)) - continue; /* all zero sfb */ - - allowedNoise = (1.0 - distort[sfb]) * l3_xmin[sfb]; - trancateThreshold = 0.0; - start = 0; - do { - FLOAT noise; - for (nsame = 1; start + nsame < width; nsame++) - if (NEQ(work[start + j - width], work[start + j + nsame - width])) - break; - - noise = work[start + j - width] * work[start + j - width] * nsame; - if (allowedNoise < noise) { - if (start != 0) - trancateThreshold = work[start + j - width - 1]; - break; - } - allowedNoise -= noise; - start += nsame; - } while (start < width); - if (EQ(trancateThreshold, 0.0)) - continue; - -/* printf("%e %e %e\n", */ -/* trancateThreshold/l3_xmin[sfb], */ -/* trancateThreshold/(l3_xmin[sfb]*start), */ -/* trancateThreshold/(l3_xmin[sfb]*(start+width)) */ -/* ); */ -/* if (trancateThreshold > 1000*l3_xmin[sfb]*start) */ -/* trancateThreshold = 1000*l3_xmin[sfb]*start; */ - - do { - if (fabs(gi->xr[j - width]) <= trancateThreshold) - gi->l3_enc[j - width] = 0; - } while (--width > 0); - } while (++sfb < gi->psymax); - - gi->part2_3_length = noquant_count_bits(gfc, gi, 0); -} - - -/************************************************************************* - * - * loop_break() - * - * author/date?? - * - * Function: Returns zero if there is a scalefac which has not been - * amplified. Otherwise it returns one. - * - *************************************************************************/ - -inline static int -loop_break(const gr_info * const cod_info) -{ - int sfb; - - for (sfb = 0; sfb < cod_info->sfbmax; sfb++) - if (cod_info->scalefac[sfb] - + cod_info->subblock_gain[cod_info->window[sfb]] == 0) - return 0; - - return 1; -} - - - - -/* mt 5/99: Function: Improved calc_noise for a single channel */ - -/************************************************************************* - * - * quant_compare() - * - * author/date?? - * - * several different codes to decide which quantization is better - * - *************************************************************************/ - -static double -penalties(double noise) -{ - return FAST_LOG10(0.368 + 0.632 * noise * noise * noise); -} - -static double -get_klemm_noise(const FLOAT * distort, const gr_info * const gi) -{ - int sfb; - double klemm_noise = 1E-37; - for (sfb = 0; sfb < gi->psymax; sfb++) - klemm_noise += penalties(distort[sfb]); - - return Max(1e-20, klemm_noise); -} - -inline static int -quant_compare(const int quant_comp, - const calc_noise_result * const best, - calc_noise_result * const calc, const gr_info * const gi, const FLOAT * distort) -{ - /* - noise is given in decibels (dB) relative to masking thesholds. - - over_noise: ??? (the previous comment is fully wrong) - tot_noise: ??? (the previous comment is fully wrong) - max_noise: max quantization noise - - */ - int better; - - switch (quant_comp) { - default: - case 9:{ - if (best->over_count > 0) { - /* there are distorted sfb */ - better = calc->over_SSD <= best->over_SSD; - if (calc->over_SSD == best->over_SSD) - better = calc->bits < best->bits; - } - else { - /* no distorted sfb */ - better = ((calc->max_noise < 0) && - ((calc->max_noise * 10 + calc->bits) <= - (best->max_noise * 10 + best->bits))); - } - break; - } - - case 0: - better = calc->over_count < best->over_count - || (calc->over_count == best->over_count && calc->over_noise < best->over_noise) - || (calc->over_count == best->over_count && - EQ(calc->over_noise, best->over_noise) && calc->tot_noise < best->tot_noise); - break; - - case 8: - calc->max_noise = get_klemm_noise(distort, gi); - /*lint --fallthrough */ - case 1: - better = calc->max_noise < best->max_noise; - break; - case 2: - better = calc->tot_noise < best->tot_noise; - break; - case 3: - better = (calc->tot_noise < best->tot_noise) - && (calc->max_noise < best->max_noise); - break; - case 4: - better = (calc->max_noise <= 0.0 && best->max_noise > 0.2) - || (calc->max_noise <= 0.0 && - best->max_noise < 0.0 && - best->max_noise > calc->max_noise - 0.2 && calc->tot_noise < best->tot_noise) - || (calc->max_noise <= 0.0 && - best->max_noise > 0.0 && - best->max_noise > calc->max_noise - 0.2 && - calc->tot_noise < best->tot_noise + best->over_noise) - || (calc->max_noise > 0.0 && - best->max_noise > -0.05 && - best->max_noise > calc->max_noise - 0.1 && - calc->tot_noise + calc->over_noise < best->tot_noise + best->over_noise) - || (calc->max_noise > 0.0 && - best->max_noise > -0.1 && - best->max_noise > calc->max_noise - 0.15 && - calc->tot_noise + calc->over_noise + calc->over_noise < - best->tot_noise + best->over_noise + best->over_noise); - break; - case 5: - better = calc->over_noise < best->over_noise - || (EQ(calc->over_noise, best->over_noise) && calc->tot_noise < best->tot_noise); - break; - case 6: - better = calc->over_noise < best->over_noise - || (EQ(calc->over_noise, best->over_noise) && - (calc->max_noise < best->max_noise - || (EQ(calc->max_noise, best->max_noise) && calc->tot_noise <= best->tot_noise) - )); - break; - case 7: - better = calc->over_count < best->over_count || calc->over_noise < best->over_noise; - break; - } - - - if (best->over_count == 0) { - /* - If no distorted bands, only use this quantization - if it is better, and if it uses less bits. - Unfortunately, part2_3_length is sometimes a poor - estimator of the final size at low bitrates. - */ - better = better && calc->bits < best->bits; - } - - - return better; -} - - - -/************************************************************************* - * - * amp_scalefac_bands() - * - * author/date?? - * - * Amplify the scalefactor bands that violate the masking threshold. - * See ISO 11172-3 Section C.1.5.4.3.5 - * - * distort[] = noise/masking - * distort[] > 1 ==> noise is not masked - * distort[] < 1 ==> noise is masked - * max_dist = maximum value of distort[] - * - * Three algorithms: - * noise_shaping_amp - * 0 Amplify all bands with distort[]>1. - * - * 1 Amplify all bands with distort[] >= max_dist^(.5); - * ( 50% in the db scale) - * - * 2 Amplify first band with distort[] >= max_dist; - * - * - * For algorithms 0 and 1, if max_dist < 1, then amplify all bands - * with distort[] >= .95*max_dist. This is to make sure we always - * amplify at least one band. - * - * - *************************************************************************/ -static void -amp_scalefac_bands(lame_internal_flags * gfc, - gr_info * const cod_info, FLOAT const *distort, FLOAT xrpow[576], int bRefine) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - int j, sfb; - FLOAT ifqstep34, trigger; - int noise_shaping_amp; - - if (cod_info->scalefac_scale == 0) { - ifqstep34 = 1.29683955465100964055; /* 2**(.75*.5) */ - } - else { - ifqstep34 = 1.68179283050742922612; /* 2**(.75*1) */ - } - - /* compute maximum value of distort[] */ - trigger = 0; - for (sfb = 0; sfb < cod_info->sfbmax; sfb++) { - if (trigger < distort[sfb]) - trigger = distort[sfb]; - } - - noise_shaping_amp = cfg->noise_shaping_amp; - if (noise_shaping_amp == 3) { - if (bRefine == 1) - noise_shaping_amp = 2; - else - noise_shaping_amp = 1; - } - switch (noise_shaping_amp) { - case 2: - /* amplify exactly 1 band */ - break; - - case 1: - /* amplify bands within 50% of max (on db scale) */ - if (trigger > 1.0) - trigger = pow(trigger, .5); - else - trigger *= .95; - break; - - case 0: - default: - /* ISO algorithm. amplify all bands with distort>1 */ - if (trigger > 1.0) - trigger = 1.0; - else - trigger *= .95; - break; - } - - j = 0; - for (sfb = 0; sfb < cod_info->sfbmax; sfb++) { - int const width = cod_info->width[sfb]; - int l; - j += width; - if (distort[sfb] < trigger) - continue; - - if (gfc->sv_qnt.substep_shaping & 2) { - gfc->sv_qnt.pseudohalf[sfb] = !gfc->sv_qnt.pseudohalf[sfb]; - if (!gfc->sv_qnt.pseudohalf[sfb] && cfg->noise_shaping_amp == 2) - return; - } - cod_info->scalefac[sfb]++; - for (l = -width; l < 0; l++) { - xrpow[j + l] *= ifqstep34; - if (xrpow[j + l] > cod_info->xrpow_max) - cod_info->xrpow_max = xrpow[j + l]; - } - - if (cfg->noise_shaping_amp == 2) - return; - } -} - -/************************************************************************* - * - * inc_scalefac_scale() - * - * Takehiro Tominaga 2000-xx-xx - * - * turns on scalefac scale and adjusts scalefactors - * - *************************************************************************/ - -static void -inc_scalefac_scale(gr_info * const cod_info, FLOAT xrpow[576]) -{ - int l, j, sfb; - const FLOAT ifqstep34 = 1.29683955465100964055; - - j = 0; - for (sfb = 0; sfb < cod_info->sfbmax; sfb++) { - int const width = cod_info->width[sfb]; - int s = cod_info->scalefac[sfb]; - if (cod_info->preflag) - s += pretab[sfb]; - j += width; - if (s & 1) { - s++; - for (l = -width; l < 0; l++) { - xrpow[j + l] *= ifqstep34; - if (xrpow[j + l] > cod_info->xrpow_max) - cod_info->xrpow_max = xrpow[j + l]; - } - } - cod_info->scalefac[sfb] = s >> 1; - } - cod_info->preflag = 0; - cod_info->scalefac_scale = 1; -} - - - -/************************************************************************* - * - * inc_subblock_gain() - * - * Takehiro Tominaga 2000-xx-xx - * - * increases the subblock gain and adjusts scalefactors - * - *************************************************************************/ - -static int -inc_subblock_gain(const lame_internal_flags * const gfc, gr_info * const cod_info, FLOAT xrpow[576]) -{ - int sfb, window; - int *const scalefac = cod_info->scalefac; - - /* subbloc_gain can't do anything in the long block region */ - for (sfb = 0; sfb < cod_info->sfb_lmax; sfb++) { - if (scalefac[sfb] >= 16) - return 1; - } - - for (window = 0; window < 3; window++) { - int s1, s2, l, j; - s1 = s2 = 0; - - for (sfb = cod_info->sfb_lmax + window; sfb < cod_info->sfbdivide; sfb += 3) { - if (s1 < scalefac[sfb]) - s1 = scalefac[sfb]; - } - for (; sfb < cod_info->sfbmax; sfb += 3) { - if (s2 < scalefac[sfb]) - s2 = scalefac[sfb]; - } - - if (s1 < 16 && s2 < 8) - continue; - - if (cod_info->subblock_gain[window] >= 7) - return 1; - - /* even though there is no scalefactor for sfb12 - * subblock gain affects upper frequencies too, that's why - * we have to go up to SBMAX_s - */ - cod_info->subblock_gain[window]++; - j = gfc->scalefac_band.l[cod_info->sfb_lmax]; - for (sfb = cod_info->sfb_lmax + window; sfb < cod_info->sfbmax; sfb += 3) { - FLOAT amp; - int const width = cod_info->width[sfb]; - int s = scalefac[sfb]; - assert(s >= 0); - s = s - (4 >> cod_info->scalefac_scale); - if (s >= 0) { - scalefac[sfb] = s; - j += width * 3; - continue; - } - - scalefac[sfb] = 0; - { - int const gain = 210 + (s << (cod_info->scalefac_scale + 1)); - amp = IPOW20(gain); - } - j += width * (window + 1); - for (l = -width; l < 0; l++) { - xrpow[j + l] *= amp; - if (xrpow[j + l] > cod_info->xrpow_max) - cod_info->xrpow_max = xrpow[j + l]; - } - j += width * (3 - window - 1); - } - - { - FLOAT const amp = IPOW20(202); - j += cod_info->width[sfb] * (window + 1); - for (l = -cod_info->width[sfb]; l < 0; l++) { - xrpow[j + l] *= amp; - if (xrpow[j + l] > cod_info->xrpow_max) - cod_info->xrpow_max = xrpow[j + l]; - } - } - } - return 0; -} - - - -/******************************************************************** - * - * balance_noise() - * - * Takehiro Tominaga /date?? - * Robert Hegemann 2000-09-06: made a function of it - * - * amplifies scalefactor bands, - * - if all are already amplified returns 0 - * - if some bands are amplified too much: - * * try to increase scalefac_scale - * * if already scalefac_scale was set - * try on short blocks to increase subblock gain - * - ********************************************************************/ -inline static int -balance_noise(lame_internal_flags * gfc, - gr_info * const cod_info, FLOAT const *distort, FLOAT xrpow[576], int bRefine) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - int status; - - amp_scalefac_bands(gfc, cod_info, distort, xrpow, bRefine); - - /* check to make sure we have not amplified too much - * loop_break returns 0 if there is an unamplified scalefac - * scale_bitcount returns 0 if no scalefactors are too large - */ - - status = loop_break(cod_info); - - if (status) - return 0; /* all bands amplified */ - - /* not all scalefactors have been amplified. so these - * scalefacs are possibly valid. encode them: - */ - status = scale_bitcount(gfc, cod_info); - - if (!status) - return 1; /* amplified some bands not exceeding limits */ - - /* some scalefactors are too large. - * lets try setting scalefac_scale=1 - */ - if (cfg->noise_shaping > 1) { - memset(&gfc->sv_qnt.pseudohalf[0], 0, sizeof(gfc->sv_qnt.pseudohalf)); - if (!cod_info->scalefac_scale) { - inc_scalefac_scale(cod_info, xrpow); - status = 0; - } - else { - if (cod_info->block_type == SHORT_TYPE && cfg->subblock_gain > 0) { - status = inc_subblock_gain(gfc, cod_info, xrpow) - || loop_break(cod_info); - } - } - } - - if (!status) { - status = scale_bitcount(gfc, cod_info); - } - return !status; -} - - - -/************************************************************************ - * - * outer_loop () - * - * Function: The outer iteration loop controls the masking conditions - * of all scalefactorbands. It computes the best scalefac and - * global gain. This module calls the inner iteration loop - * - * mt 5/99 completely rewritten to allow for bit reservoir control, - * mid/side channels with L/R or mid/side masking thresholds, - * and chooses best quantization instead of last quantization when - * no distortion free quantization can be found. - * - * added VBR support mt 5/99 - * - * some code shuffle rh 9/00 - ************************************************************************/ - -static int -outer_loop(lame_internal_flags * gfc, gr_info * const cod_info, const FLOAT * const l3_xmin, /* allowed distortion */ - FLOAT xrpow[576], /* coloured magnitudes of spectral */ - const int ch, const int targ_bits) -{ /* maximum allowed bits */ - SessionConfig_t const *const cfg = &gfc->cfg; - gr_info cod_info_w; - FLOAT save_xrpow[576]; - FLOAT distort[SFBMAX]; - calc_noise_result best_noise_info; - int huff_bits; - int better; - int age; - calc_noise_data prev_noise; - int best_part2_3_length = 9999999; - int bEndOfSearch = 0; - int bRefine = 0; - int best_ggain_pass1 = 0; - - (void) bin_search_StepSize(gfc, cod_info, targ_bits, ch, xrpow); - - if (!cfg->noise_shaping) - /* fast mode, no noise shaping, we are ready */ - return 100; /* default noise_info.over_count */ - - memset(&prev_noise, 0, sizeof(calc_noise_data)); - - - /* compute the distortion in this quantization */ - /* coefficients and thresholds both l/r (or both mid/side) */ - (void) calc_noise(cod_info, l3_xmin, distort, &best_noise_info, &prev_noise); - best_noise_info.bits = cod_info->part2_3_length; - - cod_info_w = *cod_info; - age = 0; - /* if (cfg->vbr == vbr_rh || cfg->vbr == vbr_mtrh) */ - memcpy(save_xrpow, xrpow, sizeof(FLOAT) * 576); - - while (!bEndOfSearch) { - /* BEGIN MAIN LOOP */ - do { - calc_noise_result noise_info; - int search_limit; - int maxggain = 255; - - /* When quantization with no distorted bands is found, - * allow up to X new unsuccesful tries in serial. This - * gives us more possibilities for different quant_compare modes. - * Much more than 3 makes not a big difference, it is only slower. - */ - - if (gfc->sv_qnt.substep_shaping & 2) { - search_limit = 20; - } - else { - search_limit = 3; - } - - - - /* Check if the last scalefactor band is distorted. - * in VBR mode we can't get rid of the distortion, so quit now - * and VBR mode will try again with more bits. - * (makes a 10% speed increase, the files I tested were - * binary identical, 2000/05/20 Robert Hegemann) - * distort[] > 1 means noise > allowed noise - */ - if (gfc->sv_qnt.sfb21_extra) { - if (distort[cod_info_w.sfbmax] > 1.0) - break; - if (cod_info_w.block_type == SHORT_TYPE - && (distort[cod_info_w.sfbmax + 1] > 1.0 - || distort[cod_info_w.sfbmax + 2] > 1.0)) - break; - } - - /* try a new scalefactor conbination on cod_info_w */ - if (balance_noise(gfc, &cod_info_w, distort, xrpow, bRefine) == 0) - break; - if (cod_info_w.scalefac_scale) - maxggain = 254; - - /* inner_loop starts with the initial quantization step computed above - * and slowly increases until the bits < huff_bits. - * Thus it is important not to start with too large of an inital - * quantization step. Too small is ok, but inner_loop will take longer - */ - huff_bits = targ_bits - cod_info_w.part2_length; - if (huff_bits <= 0) - break; - - /* increase quantizer stepsize until needed bits are below maximum - */ - while ((cod_info_w.part2_3_length - = count_bits(gfc, xrpow, &cod_info_w, &prev_noise)) > huff_bits - && cod_info_w.global_gain <= maxggain) - cod_info_w.global_gain++; - - if (cod_info_w.global_gain > maxggain) - break; - - if (best_noise_info.over_count == 0) { - - while ((cod_info_w.part2_3_length - = count_bits(gfc, xrpow, &cod_info_w, &prev_noise)) > best_part2_3_length - && cod_info_w.global_gain <= maxggain) - cod_info_w.global_gain++; - - if (cod_info_w.global_gain > maxggain) - break; - } - - /* compute the distortion in this quantization */ - (void) calc_noise(&cod_info_w, l3_xmin, distort, &noise_info, &prev_noise); - noise_info.bits = cod_info_w.part2_3_length; - - /* check if this quantization is better - * than our saved quantization */ - if (cod_info->block_type != SHORT_TYPE) /* NORM, START or STOP type */ - better = cfg->quant_comp; - else - better = cfg->quant_comp_short; - - - better = quant_compare(better, &best_noise_info, &noise_info, &cod_info_w, distort); - - - /* save data so we can restore this quantization later */ - if (better) { - best_part2_3_length = cod_info->part2_3_length; - best_noise_info = noise_info; - *cod_info = cod_info_w; - age = 0; - /* save data so we can restore this quantization later */ - /*if (cfg->vbr == vbr_rh || cfg->vbr == vbr_mtrh) */ { - /* store for later reuse */ - memcpy(save_xrpow, xrpow, sizeof(FLOAT) * 576); - } - } - else { - /* early stop? */ - if (cfg->full_outer_loop == 0) { - if (++age > search_limit && best_noise_info.over_count == 0) - break; - if ((cfg->noise_shaping_amp == 3) && bRefine && age > 30) - break; - if ((cfg->noise_shaping_amp == 3) && bRefine && - (cod_info_w.global_gain - best_ggain_pass1) > 15) - break; - } - } - } - while ((cod_info_w.global_gain + cod_info_w.scalefac_scale) < 255); - - if (cfg->noise_shaping_amp == 3) { - if (!bRefine) { - /* refine search */ - cod_info_w = *cod_info; - memcpy(xrpow, save_xrpow, sizeof(FLOAT) * 576); - age = 0; - best_ggain_pass1 = cod_info_w.global_gain; - - bRefine = 1; - } - else { - /* search already refined, stop */ - bEndOfSearch = 1; - } - - } - else { - bEndOfSearch = 1; - } - } - - assert((cod_info->global_gain + cod_info->scalefac_scale) <= 255); - /* finish up - */ - if (cfg->vbr == vbr_rh || cfg->vbr == vbr_mtrh || cfg->vbr == vbr_mt) - /* restore for reuse on next try */ - memcpy(xrpow, save_xrpow, sizeof(FLOAT) * 576); - /* do the 'substep shaping' - */ - else if (gfc->sv_qnt.substep_shaping & 1) - trancate_smallspectrums(gfc, cod_info, l3_xmin, xrpow); - - return best_noise_info.over_count; -} - - - - - -/************************************************************************ - * - * iteration_finish_one() - * - * Robert Hegemann 2000-09-06 - * - * update reservoir status after FINAL quantization/bitrate - * - ************************************************************************/ - -static void -iteration_finish_one(lame_internal_flags * gfc, int gr, int ch) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - III_side_info_t *const l3_side = &gfc->l3_side; - gr_info *const cod_info = &l3_side->tt[gr][ch]; - - /* try some better scalefac storage - */ - best_scalefac_store(gfc, gr, ch, l3_side); - - /* best huffman_divide may save some bits too - */ - if (cfg->use_best_huffman == 1) - best_huffman_divide(gfc, cod_info); - - /* update reservoir status after FINAL quantization/bitrate - */ - ResvAdjust(gfc, cod_info); -} - - - -/********************************************************************* - * - * VBR_encode_granule() - * - * 2000-09-04 Robert Hegemann - * - *********************************************************************/ - -static void -VBR_encode_granule(lame_internal_flags * gfc, gr_info * const cod_info, const FLOAT * const l3_xmin, /* allowed distortion of the scalefactor */ - FLOAT xrpow[576], /* coloured magnitudes of spectral values */ - const int ch, int min_bits, int max_bits) -{ - gr_info bst_cod_info; - FLOAT bst_xrpow[576]; - int const Max_bits = max_bits; - int real_bits = max_bits + 1; - int this_bits = (max_bits + min_bits) / 2; - int dbits, over, found = 0; - int const sfb21_extra = gfc->sv_qnt.sfb21_extra; - - assert(Max_bits <= MAX_BITS_PER_CHANNEL); - memset(bst_cod_info.l3_enc, 0, sizeof(bst_cod_info.l3_enc)); - - /* search within round about 40 bits of optimal - */ - do { - assert(this_bits >= min_bits); - assert(this_bits <= max_bits); - assert(min_bits <= max_bits); - - if (this_bits > Max_bits - 42) - gfc->sv_qnt.sfb21_extra = 0; - else - gfc->sv_qnt.sfb21_extra = sfb21_extra; - - over = outer_loop(gfc, cod_info, l3_xmin, xrpow, ch, this_bits); - - /* is quantization as good as we are looking for ? - * in this case: is no scalefactor band distorted? - */ - if (over <= 0) { - found = 1; - /* now we know it can be done with "real_bits" - * and maybe we can skip some iterations - */ - real_bits = cod_info->part2_3_length; - - /* store best quantization so far - */ - bst_cod_info = *cod_info; - memcpy(bst_xrpow, xrpow, sizeof(FLOAT) * 576); - - /* try with fewer bits - */ - max_bits = real_bits - 32; - dbits = max_bits - min_bits; - this_bits = (max_bits + min_bits) / 2; - } - else { - /* try with more bits - */ - min_bits = this_bits + 32; - dbits = max_bits - min_bits; - this_bits = (max_bits + min_bits) / 2; - - if (found) { - found = 2; - /* start again with best quantization so far - */ - *cod_info = bst_cod_info; - memcpy(xrpow, bst_xrpow, sizeof(FLOAT) * 576); - } - } - } while (dbits > 12); - - gfc->sv_qnt.sfb21_extra = sfb21_extra; - - /* found=0 => nothing found, use last one - * found=1 => we just found the best and left the loop - * found=2 => we restored a good one and have now l3_enc to restore too - */ - if (found == 2) { - memcpy(cod_info->l3_enc, bst_cod_info.l3_enc, sizeof(int) * 576); - } - assert(cod_info->part2_3_length <= Max_bits); - -} - - - -/************************************************************************ - * - * get_framebits() - * - * Robert Hegemann 2000-09-05 - * - * calculates - * * how many bits are available for analog silent granules - * * how many bits to use for the lowest allowed bitrate - * * how many bits each bitrate would provide - * - ************************************************************************/ - -static void -get_framebits(lame_internal_flags * gfc, int frameBits[15]) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - EncResult_t *const eov = &gfc->ov_enc; - int bitsPerFrame, i; - - /* always use at least this many bits per granule per channel - * unless we detect analog silence, see below - */ - eov->bitrate_index = cfg->vbr_min_bitrate_index; - bitsPerFrame = getframebits(gfc); - - /* bits for analog silence - */ - eov->bitrate_index = 1; - bitsPerFrame = getframebits(gfc); - - for (i = 1; i <= cfg->vbr_max_bitrate_index; i++) { - eov->bitrate_index = i; - frameBits[i] = ResvFrameBegin(gfc, &bitsPerFrame); - } -} - - - -/********************************************************************* - * - * VBR_prepare() - * - * 2000-09-04 Robert Hegemann - * - * * converts LR to MS coding when necessary - * * calculates allowed/adjusted quantization noise amounts - * * detects analog silent frames - * - * some remarks: - * - lower masking depending on Quality setting - * - quality control together with adjusted ATH MDCT scaling - * on lower quality setting allocate more noise from - * ATH masking, and on higher quality setting allocate - * less noise from ATH masking. - * - experiments show that going more than 2dB over GPSYCHO's - * limits ends up in very annoying artefacts - * - *********************************************************************/ - -/* RH: this one needs to be overhauled sometime */ - -static int -VBR_old_prepare(lame_internal_flags * gfc, - const FLOAT pe[2][2], FLOAT const ms_ener_ratio[2], - const III_psy_ratio ratio[2][2], - FLOAT l3_xmin[2][2][SFBMAX], - int frameBits[16], int min_bits[2][2], int max_bits[2][2], int bands[2][2]) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - EncResult_t *const eov = &gfc->ov_enc; - - FLOAT masking_lower_db, adjust = 0.0; - int gr, ch; - int analog_silence = 1; - int avg, mxb, bits = 0; - - eov->bitrate_index = cfg->vbr_max_bitrate_index; - avg = ResvFrameBegin(gfc, &avg) / cfg->mode_gr; - - get_framebits(gfc, frameBits); - - for (gr = 0; gr < cfg->mode_gr; gr++) { - mxb = on_pe(gfc, pe, max_bits[gr], avg, gr, 0); - if (gfc->ov_enc.mode_ext == MPG_MD_MS_LR) { - ms_convert(&gfc->l3_side, gr); - reduce_side(max_bits[gr], ms_ener_ratio[gr], avg, mxb); - } - for (ch = 0; ch < cfg->channels_out; ++ch) { - gr_info *const cod_info = &gfc->l3_side.tt[gr][ch]; - - if (cod_info->block_type != SHORT_TYPE) { /* NORM, START or STOP type */ - adjust = 1.28 / (1 + exp(3.5 - pe[gr][ch] / 300.)) - 0.05; - masking_lower_db = gfc->sv_qnt.mask_adjust - adjust; - } - else { - adjust = 2.56 / (1 + exp(3.5 - pe[gr][ch] / 300.)) - 0.14; - masking_lower_db = gfc->sv_qnt.mask_adjust_short - adjust; - } - gfc->sv_qnt.masking_lower = pow(10.0, masking_lower_db * 0.1); - - init_outer_loop(gfc, cod_info); - bands[gr][ch] = calc_xmin(gfc, &ratio[gr][ch], cod_info, l3_xmin[gr][ch]); - if (bands[gr][ch]) - analog_silence = 0; - - min_bits[gr][ch] = 126; - - bits += max_bits[gr][ch]; - } - } - for (gr = 0; gr < cfg->mode_gr; gr++) { - for (ch = 0; ch < cfg->channels_out; ch++) { - if (bits > frameBits[cfg->vbr_max_bitrate_index] && bits > 0) { - max_bits[gr][ch] *= frameBits[cfg->vbr_max_bitrate_index]; - max_bits[gr][ch] /= bits; - } - if (min_bits[gr][ch] > max_bits[gr][ch]) - min_bits[gr][ch] = max_bits[gr][ch]; - - } /* for ch */ - } /* for gr */ - - return analog_silence; -} - -static void -bitpressure_strategy(lame_internal_flags const *gfc, - FLOAT l3_xmin[2][2][SFBMAX], const int min_bits[2][2], int max_bits[2][2]) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - int gr, ch, sfb; - for (gr = 0; gr < cfg->mode_gr; gr++) { - for (ch = 0; ch < cfg->channels_out; ch++) { - gr_info const *const gi = &gfc->l3_side.tt[gr][ch]; - FLOAT *pxmin = l3_xmin[gr][ch]; - for (sfb = 0; sfb < gi->psy_lmax; sfb++) - *pxmin++ *= 1. + .029 * sfb * sfb / SBMAX_l / SBMAX_l; - - if (gi->block_type == SHORT_TYPE) { - for (sfb = gi->sfb_smin; sfb < SBMAX_s; sfb++) { - *pxmin++ *= 1. + .029 * sfb * sfb / SBMAX_s / SBMAX_s; - *pxmin++ *= 1. + .029 * sfb * sfb / SBMAX_s / SBMAX_s; - *pxmin++ *= 1. + .029 * sfb * sfb / SBMAX_s / SBMAX_s; - } - } - max_bits[gr][ch] = Max(min_bits[gr][ch], 0.9 * max_bits[gr][ch]); - } - } -} - -/************************************************************************ - * - * VBR_iteration_loop() - * - * tries to find out how many bits are needed for each granule and channel - * to get an acceptable quantization. An appropriate bitrate will then be - * choosed for quantization. rh 8/99 - * - * Robert Hegemann 2000-09-06 rewrite - * - ************************************************************************/ - -void -VBR_old_iteration_loop(lame_internal_flags * gfc, const FLOAT pe[2][2], - const FLOAT ms_ener_ratio[2], const III_psy_ratio ratio[2][2]) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - EncResult_t *const eov = &gfc->ov_enc; - FLOAT l3_xmin[2][2][SFBMAX]; - - FLOAT xrpow[576]; - int bands[2][2]; - int frameBits[15]; - int used_bits; - int bits; - int min_bits[2][2], max_bits[2][2]; - int mean_bits; - int ch, gr, analog_silence; - III_side_info_t *const l3_side = &gfc->l3_side; - - analog_silence = VBR_old_prepare(gfc, pe, ms_ener_ratio, ratio, - l3_xmin, frameBits, min_bits, max_bits, bands); - - /*---------------------------------*/ - for (;;) { - - /* quantize granules with lowest possible number of bits - */ - - used_bits = 0; - - for (gr = 0; gr < cfg->mode_gr; gr++) { - for (ch = 0; ch < cfg->channels_out; ch++) { - int ret; - gr_info *const cod_info = &l3_side->tt[gr][ch]; - - /* init_outer_loop sets up cod_info, scalefac and xrpow - */ - ret = init_xrpow(gfc, cod_info, xrpow); - if (ret == 0 || max_bits[gr][ch] == 0) { - /* xr contains no energy - * l3_enc, our encoding data, will be quantized to zero - */ - continue; /* with next channel */ - } - - VBR_encode_granule(gfc, cod_info, l3_xmin[gr][ch], xrpow, - ch, min_bits[gr][ch], max_bits[gr][ch]); - - /* do the 'substep shaping' - */ - if (gfc->sv_qnt.substep_shaping & 1) { - trancate_smallspectrums(gfc, &l3_side->tt[gr][ch], l3_xmin[gr][ch], xrpow); - } - - ret = cod_info->part2_3_length + cod_info->part2_length; - used_bits += ret; - } /* for ch */ - } /* for gr */ - - /* find lowest bitrate able to hold used bits - */ - if (analog_silence && !cfg->enforce_min_bitrate) - /* we detected analog silence and the user did not specify - * any hard framesize limit, so start with smallest possible frame - */ - eov->bitrate_index = 1; - else - eov->bitrate_index = cfg->vbr_min_bitrate_index; - - for (; eov->bitrate_index < cfg->vbr_max_bitrate_index; eov->bitrate_index++) { - if (used_bits <= frameBits[eov->bitrate_index]) - break; - } - bits = ResvFrameBegin(gfc, &mean_bits); - - if (used_bits <= bits) - break; - - bitpressure_strategy(gfc, l3_xmin, (const int (*)[2])min_bits, max_bits); - - } /* breaks adjusted */ - /*--------------------------------------*/ - - for (gr = 0; gr < cfg->mode_gr; gr++) { - for (ch = 0; ch < cfg->channels_out; ch++) { - iteration_finish_one(gfc, gr, ch); - } /* for ch */ - } /* for gr */ - ResvFrameEnd(gfc, mean_bits); -} - - - -static int -VBR_new_prepare(lame_internal_flags * gfc, - const FLOAT pe[2][2], const III_psy_ratio ratio[2][2], - FLOAT l3_xmin[2][2][SFBMAX], int frameBits[16], int max_bits[2][2], - int* max_resv) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - EncResult_t *const eov = &gfc->ov_enc; - - int gr, ch; - int analog_silence = 1; - int avg, bits = 0; - int maximum_framebits; - - if (!cfg->free_format) { - eov->bitrate_index = cfg->vbr_max_bitrate_index; - (void) ResvFrameBegin(gfc, &avg); - *max_resv = gfc->sv_enc.ResvMax; - - get_framebits(gfc, frameBits); - maximum_framebits = frameBits[cfg->vbr_max_bitrate_index]; - } - else { - eov->bitrate_index = 0; - maximum_framebits = ResvFrameBegin(gfc, &avg); - frameBits[0] = maximum_framebits; - *max_resv = gfc->sv_enc.ResvMax; - } - - for (gr = 0; gr < cfg->mode_gr; gr++) { - (void) on_pe(gfc, pe, max_bits[gr], avg, gr, 0); - if (gfc->ov_enc.mode_ext == MPG_MD_MS_LR) { - ms_convert(&gfc->l3_side, gr); - } - for (ch = 0; ch < cfg->channels_out; ++ch) { - gr_info *const cod_info = &gfc->l3_side.tt[gr][ch]; - - gfc->sv_qnt.masking_lower = pow(10.0, gfc->sv_qnt.mask_adjust * 0.1); - - init_outer_loop(gfc, cod_info); - if (0 != calc_xmin(gfc, &ratio[gr][ch], cod_info, l3_xmin[gr][ch])) - analog_silence = 0; - - bits += max_bits[gr][ch]; - } - } - for (gr = 0; gr < cfg->mode_gr; gr++) { - for (ch = 0; ch < cfg->channels_out; ch++) { - if (bits > maximum_framebits && bits > 0) { - max_bits[gr][ch] *= maximum_framebits; - max_bits[gr][ch] /= bits; - } - - } /* for ch */ - } /* for gr */ - if (analog_silence) { - *max_resv = 0; - } - return analog_silence; -} - - - -void -VBR_new_iteration_loop(lame_internal_flags * gfc, const FLOAT pe[2][2], - const FLOAT ms_ener_ratio[2], const III_psy_ratio ratio[2][2]) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - EncResult_t *const eov = &gfc->ov_enc; - FLOAT l3_xmin[2][2][SFBMAX]; - - FLOAT xrpow[2][2][576]; - int frameBits[15]; - int used_bits; - int max_bits[2][2]; - int ch, gr, analog_silence, pad; - III_side_info_t *const l3_side = &gfc->l3_side; - - const FLOAT (*const_l3_xmin)[2][SFBMAX] = (const FLOAT (*)[2][SFBMAX])l3_xmin; - const FLOAT (*const_xrpow)[2][576] = (const FLOAT (*)[2][576])xrpow; - const int (*const_max_bits)[2] = (const int (*)[2])max_bits; - - (void) ms_ener_ratio; /* not used */ - - memset(xrpow, 0, sizeof(xrpow)); - - analog_silence = VBR_new_prepare(gfc, pe, ratio, l3_xmin, frameBits, max_bits, &pad); - - for (gr = 0; gr < cfg->mode_gr; gr++) { - for (ch = 0; ch < cfg->channels_out; ch++) { - gr_info *const cod_info = &l3_side->tt[gr][ch]; - - /* init_outer_loop sets up cod_info, scalefac and xrpow - */ - if (0 == init_xrpow(gfc, cod_info, xrpow[gr][ch])) { - max_bits[gr][ch] = 0; /* silent granule needs no bits */ - } - } /* for ch */ - } /* for gr */ - - /* quantize granules with lowest possible number of bits - */ - - used_bits = VBR_encode_frame(gfc, const_xrpow, const_l3_xmin, const_max_bits); - - if (!cfg->free_format) { - int i, j; - - /* find lowest bitrate able to hold used bits - */ - if (analog_silence && !cfg->enforce_min_bitrate) { - /* we detected analog silence and the user did not specify - * any hard framesize limit, so start with smallest possible frame - */ - i = 1; - } - else { - i = cfg->vbr_min_bitrate_index; - } - - for (; i < cfg->vbr_max_bitrate_index; i++) { - if (used_bits <= frameBits[i]) - break; - } - if (i > cfg->vbr_max_bitrate_index) { - i = cfg->vbr_max_bitrate_index; - } - if (pad > 0) { - for (j = cfg->vbr_max_bitrate_index; j > i; --j) { - int const unused = frameBits[j] - used_bits; - if (unused <= pad) - break; - } - eov->bitrate_index = j; - } - else { - eov->bitrate_index = i; - } - } - else { -#if 0 - static int mmm = 0; - int fff = getFramesize_kbps(gfc, used_bits); - int hhh = getFramesize_kbps(gfc, MAX_BITS_PER_GRANULE * cfg->mode_gr); - if (mmm < fff) - mmm = fff; - printf("demand=%3d kbps max=%3d kbps limit=%3d kbps\n", fff, mmm, hhh); -#endif - eov->bitrate_index = 0; - } - if (used_bits <= frameBits[eov->bitrate_index]) { - /* update Reservoire status */ - int mean_bits, fullframebits; - fullframebits = ResvFrameBegin(gfc, &mean_bits); - assert(used_bits <= fullframebits); - for (gr = 0; gr < cfg->mode_gr; gr++) { - for (ch = 0; ch < cfg->channels_out; ch++) { - gr_info const *const cod_info = &l3_side->tt[gr][ch]; - ResvAdjust(gfc, cod_info); - } - } - ResvFrameEnd(gfc, mean_bits); - } - else { - /* SHOULD NOT HAPPEN INTERNAL ERROR - */ - ERRORF(gfc, "INTERNAL ERROR IN VBR NEW CODE, please send bug report\n"); - exit(-1); - } -} - - - - - -/******************************************************************** - * - * calc_target_bits() - * - * calculates target bits for ABR encoding - * - * mt 2000/05/31 - * - ********************************************************************/ - -static void -calc_target_bits(lame_internal_flags * gfc, - const FLOAT pe[2][2], - FLOAT const ms_ener_ratio[2], - int targ_bits[2][2], int *analog_silence_bits, int *max_frame_bits) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - EncResult_t *const eov = &gfc->ov_enc; - III_side_info_t const *const l3_side = &gfc->l3_side; - FLOAT res_factor; - int gr, ch, totbits, mean_bits; - int framesize = 576 * cfg->mode_gr; - - eov->bitrate_index = cfg->vbr_max_bitrate_index; - *max_frame_bits = ResvFrameBegin(gfc, &mean_bits); - - eov->bitrate_index = 1; - mean_bits = getframebits(gfc) - cfg->sideinfo_len * 8; - *analog_silence_bits = mean_bits / (cfg->mode_gr * cfg->channels_out); - - mean_bits = cfg->vbr_avg_bitrate_kbps * framesize * 1000; - if (gfc->sv_qnt.substep_shaping & 1) - mean_bits *= 1.09; - mean_bits /= cfg->samplerate_out; - mean_bits -= cfg->sideinfo_len * 8; - mean_bits /= (cfg->mode_gr * cfg->channels_out); - - /* - res_factor is the percentage of the target bitrate that should - be used on average. the remaining bits are added to the - bitreservoir and used for difficult to encode frames. - - Since we are tracking the average bitrate, we should adjust - res_factor "on the fly", increasing it if the average bitrate - is greater than the requested bitrate, and decreasing it - otherwise. Reasonable ranges are from .9 to 1.0 - - Until we get the above suggestion working, we use the following - tuning: - compression ratio res_factor - 5.5 (256kbps) 1.0 no need for bitreservoir - 11 (128kbps) .93 7% held for reservoir - - with linear interpolation for other values. - - */ - res_factor = .93 + .07 * (11.0 - cfg->compression_ratio) / (11.0 - 5.5); - if (res_factor < .90) - res_factor = .90; - if (res_factor > 1.00) - res_factor = 1.00; - - for (gr = 0; gr < cfg->mode_gr; gr++) { - int sum = 0; - for (ch = 0; ch < cfg->channels_out; ch++) { - targ_bits[gr][ch] = res_factor * mean_bits; - - if (pe[gr][ch] > 700) { - int add_bits = (pe[gr][ch] - 700) / 1.4; - - gr_info const *const cod_info = &l3_side->tt[gr][ch]; - targ_bits[gr][ch] = res_factor * mean_bits; - - /* short blocks use a little extra, no matter what the pe */ - if (cod_info->block_type == SHORT_TYPE) { - if (add_bits < mean_bits / 2) - add_bits = mean_bits / 2; - } - /* at most increase bits by 1.5*average */ - if (add_bits > mean_bits * 3 / 2) - add_bits = mean_bits * 3 / 2; - else if (add_bits < 0) - add_bits = 0; - - targ_bits[gr][ch] += add_bits; - } - if (targ_bits[gr][ch] > MAX_BITS_PER_CHANNEL) { - targ_bits[gr][ch] = MAX_BITS_PER_CHANNEL; - } - sum += targ_bits[gr][ch]; - } /* for ch */ - if (sum > MAX_BITS_PER_GRANULE) { - for (ch = 0; ch < cfg->channels_out; ++ch) { - targ_bits[gr][ch] *= MAX_BITS_PER_GRANULE; - targ_bits[gr][ch] /= sum; - } - } - } /* for gr */ - - if (gfc->ov_enc.mode_ext == MPG_MD_MS_LR) - for (gr = 0; gr < cfg->mode_gr; gr++) { - reduce_side(targ_bits[gr], ms_ener_ratio[gr], mean_bits * cfg->channels_out, - MAX_BITS_PER_GRANULE); - } - - /* sum target bits - */ - totbits = 0; - for (gr = 0; gr < cfg->mode_gr; gr++) { - for (ch = 0; ch < cfg->channels_out; ch++) { - if (targ_bits[gr][ch] > MAX_BITS_PER_CHANNEL) - targ_bits[gr][ch] = MAX_BITS_PER_CHANNEL; - totbits += targ_bits[gr][ch]; - } - } - - /* repartion target bits if needed - */ - if (totbits > *max_frame_bits && totbits > 0) { - for (gr = 0; gr < cfg->mode_gr; gr++) { - for (ch = 0; ch < cfg->channels_out; ch++) { - targ_bits[gr][ch] *= *max_frame_bits; - targ_bits[gr][ch] /= totbits; - } - } - } -} - - - - - - -/******************************************************************** - * - * ABR_iteration_loop() - * - * encode a frame with a disired average bitrate - * - * mt 2000/05/31 - * - ********************************************************************/ - -void -ABR_iteration_loop(lame_internal_flags * gfc, const FLOAT pe[2][2], - const FLOAT ms_ener_ratio[2], const III_psy_ratio ratio[2][2]) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - EncResult_t *const eov = &gfc->ov_enc; - FLOAT l3_xmin[SFBMAX]; - FLOAT xrpow[576]; - int targ_bits[2][2]; - int mean_bits, max_frame_bits; - int ch, gr, ath_over; - int analog_silence_bits; - gr_info *cod_info; - III_side_info_t *const l3_side = &gfc->l3_side; - - mean_bits = 0; - - calc_target_bits(gfc, pe, ms_ener_ratio, targ_bits, &analog_silence_bits, &max_frame_bits); - - /* encode granules - */ - for (gr = 0; gr < cfg->mode_gr; gr++) { - - if (gfc->ov_enc.mode_ext == MPG_MD_MS_LR) { - ms_convert(&gfc->l3_side, gr); - } - for (ch = 0; ch < cfg->channels_out; ch++) { - FLOAT adjust, masking_lower_db; - cod_info = &l3_side->tt[gr][ch]; - - if (cod_info->block_type != SHORT_TYPE) { /* NORM, START or STOP type */ - /* adjust = 1.28/(1+exp(3.5-pe[gr][ch]/300.))-0.05; */ - adjust = 0; - masking_lower_db = gfc->sv_qnt.mask_adjust - adjust; - } - else { - /* adjust = 2.56/(1+exp(3.5-pe[gr][ch]/300.))-0.14; */ - adjust = 0; - masking_lower_db = gfc->sv_qnt.mask_adjust_short - adjust; - } - gfc->sv_qnt.masking_lower = pow(10.0, masking_lower_db * 0.1); - - - /* cod_info, scalefac and xrpow get initialized in init_outer_loop - */ - init_outer_loop(gfc, cod_info); - if (init_xrpow(gfc, cod_info, xrpow)) { - /* xr contains energy we will have to encode - * calculate the masking abilities - * find some good quantization in outer_loop - */ - ath_over = calc_xmin(gfc, &ratio[gr][ch], cod_info, l3_xmin); - if (0 == ath_over) /* analog silence */ - targ_bits[gr][ch] = analog_silence_bits; - - (void) outer_loop(gfc, cod_info, l3_xmin, xrpow, ch, targ_bits[gr][ch]); - } - iteration_finish_one(gfc, gr, ch); - } /* ch */ - } /* gr */ - - /* find a bitrate which can refill the resevoir to positive size. - */ - for (eov->bitrate_index = cfg->vbr_min_bitrate_index; - eov->bitrate_index <= cfg->vbr_max_bitrate_index; eov->bitrate_index++) { - if (ResvFrameBegin(gfc, &mean_bits) >= 0) - break; - } - assert(eov->bitrate_index <= cfg->vbr_max_bitrate_index); - - ResvFrameEnd(gfc, mean_bits); -} - - - - - - -/************************************************************************ - * - * CBR_iteration_loop() - * - * author/date?? - * - * encodes one frame of MP3 data with constant bitrate - * - ************************************************************************/ - -void -CBR_iteration_loop(lame_internal_flags * gfc, const FLOAT pe[2][2], - const FLOAT ms_ener_ratio[2], const III_psy_ratio ratio[2][2]) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - FLOAT l3_xmin[SFBMAX]; - FLOAT xrpow[576]; - int targ_bits[2]; - int mean_bits, max_bits; - int gr, ch; - III_side_info_t *const l3_side = &gfc->l3_side; - gr_info *cod_info; - - (void) ResvFrameBegin(gfc, &mean_bits); - - /* quantize! */ - for (gr = 0; gr < cfg->mode_gr; gr++) { - - /* calculate needed bits - */ - max_bits = on_pe(gfc, pe, targ_bits, mean_bits, gr, gr); - - if (gfc->ov_enc.mode_ext == MPG_MD_MS_LR) { - ms_convert(&gfc->l3_side, gr); - reduce_side(targ_bits, ms_ener_ratio[gr], mean_bits, max_bits); - } - - for (ch = 0; ch < cfg->channels_out; ch++) { - FLOAT adjust, masking_lower_db; - cod_info = &l3_side->tt[gr][ch]; - - if (cod_info->block_type != SHORT_TYPE) { /* NORM, START or STOP type */ - /* adjust = 1.28/(1+exp(3.5-pe[gr][ch]/300.))-0.05; */ - adjust = 0; - masking_lower_db = gfc->sv_qnt.mask_adjust - adjust; - } - else { - /* adjust = 2.56/(1+exp(3.5-pe[gr][ch]/300.))-0.14; */ - adjust = 0; - masking_lower_db = gfc->sv_qnt.mask_adjust_short - adjust; - } - gfc->sv_qnt.masking_lower = pow(10.0, masking_lower_db * 0.1); - - /* init_outer_loop sets up cod_info, scalefac and xrpow - */ - init_outer_loop(gfc, cod_info); - if (init_xrpow(gfc, cod_info, xrpow)) { - /* xr contains energy we will have to encode - * calculate the masking abilities - * find some good quantization in outer_loop - */ - (void) calc_xmin(gfc, &ratio[gr][ch], cod_info, l3_xmin); - (void) outer_loop(gfc, cod_info, l3_xmin, xrpow, ch, targ_bits[ch]); - } - - iteration_finish_one(gfc, gr, ch); - assert(cod_info->part2_3_length <= MAX_BITS_PER_CHANNEL); - assert(cod_info->part2_3_length <= targ_bits[ch]); - } /* for ch */ - } /* for gr */ - - ResvFrameEnd(gfc, mean_bits); -} diff --git a/platform/win32/msvc/external/lame/libmp3lame/quantize.h b/platform/win32/msvc/external/lame/libmp3lame/quantize.h deleted file mode 100644 index 56edcc70309..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/quantize.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * MP3 quantization - * - * Copyright (c) 1999 Mark Taylor - * - * 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 LAME_QUANTIZE_H -#define LAME_QUANTIZE_H - -void CBR_iteration_loop(lame_internal_flags * gfc, const FLOAT pe[2][2], - const FLOAT ms_ratio[2], const III_psy_ratio ratio[2][2]); - -void VBR_old_iteration_loop(lame_internal_flags * gfc, const FLOAT pe[2][2], - const FLOAT ms_ratio[2], const III_psy_ratio ratio[2][2]); - -void VBR_new_iteration_loop(lame_internal_flags * gfc, const FLOAT pe[2][2], - const FLOAT ms_ratio[2], const III_psy_ratio ratio[2][2]); - -void ABR_iteration_loop(lame_internal_flags * gfc, const FLOAT pe[2][2], - const FLOAT ms_ratio[2], const III_psy_ratio ratio[2][2]); - - -#endif /* LAME_QUANTIZE_H */ diff --git a/platform/win32/msvc/external/lame/libmp3lame/quantize_pvt.c b/platform/win32/msvc/external/lame/libmp3lame/quantize_pvt.c deleted file mode 100644 index 26b4d2601d5..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/quantize_pvt.c +++ /dev/null @@ -1,1073 +0,0 @@ -/* - * quantize_pvt source file - * - * Copyright (c) 1999-2002 Takehiro Tominaga - * Copyright (c) 2000-2012 Robert Hegemann - * Copyright (c) 2001 Naoki Shibata - * Copyright (c) 2002-2005 Gabriel Bouvigne - * - * 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. - */ - -/* $Id: quantize_pvt.c,v 1.169.2.2 2012/02/07 13:40:37 robert Exp $ */ -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - - -#include "lame.h" -#include "machine.h" -#include "encoder.h" -#include "util.h" -#include "quantize_pvt.h" -#include "reservoir.h" -#include "lame-analysis.h" -#include <float.h> - - -#define NSATHSCALE 100 /* Assuming dynamic range=96dB, this value should be 92 */ - -/* - The following table is used to implement the scalefactor - partitioning for MPEG2 as described in section - 2.4.3.2 of the IS. The indexing corresponds to the - way the tables are presented in the IS: - - [table_number][row_in_table][column of nr_of_sfb] -*/ -const int nr_of_sfb_block[6][3][4] = { - { - {6, 5, 5, 5}, - {9, 9, 9, 9}, - {6, 9, 9, 9} - }, - { - {6, 5, 7, 3}, - {9, 9, 12, 6}, - {6, 9, 12, 6} - }, - { - {11, 10, 0, 0}, - {18, 18, 0, 0}, - {15, 18, 0, 0} - }, - { - {7, 7, 7, 0}, - {12, 12, 12, 0}, - {6, 15, 12, 0} - }, - { - {6, 6, 6, 3}, - {12, 9, 9, 6}, - {6, 12, 9, 6} - }, - { - {8, 8, 5, 0}, - {15, 12, 9, 0}, - {6, 18, 9, 0} - } -}; - - -/* Table B.6: layer3 preemphasis */ -const int pretab[SBMAX_l] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 2, 2, 3, 3, 3, 2, 0 -}; - -/* - Here are MPEG1 Table B.8 and MPEG2 Table B.1 - -- Layer III scalefactor bands. - Index into this using a method such as: - idx = fr_ps->header->sampling_frequency - + (fr_ps->header->version * 3) -*/ - - -const scalefac_struct sfBandIndex[9] = { - { /* Table B.2.b: 22.05 kHz */ - {0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464, - 522, 576}, - {0, 4, 8, 12, 18, 24, 32, 42, 56, 74, 100, 132, 174, 192} - , {0, 0, 0, 0, 0, 0, 0} /* sfb21 pseudo sub bands */ - , {0, 0, 0, 0, 0, 0, 0} /* sfb12 pseudo sub bands */ - }, - { /* Table B.2.c: 24 kHz */ /* docs: 332. mpg123(broken): 330 */ - {0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 114, 136, 162, 194, 232, 278, 332, 394, 464, - 540, 576}, - {0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 136, 180, 192} - , {0, 0, 0, 0, 0, 0, 0} /* sfb21 pseudo sub bands */ - , {0, 0, 0, 0, 0, 0, 0} /* sfb12 pseudo sub bands */ - }, - { /* Table B.2.a: 16 kHz */ - {0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464, - 522, 576}, - {0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 134, 174, 192} - , {0, 0, 0, 0, 0, 0, 0} /* sfb21 pseudo sub bands */ - , {0, 0, 0, 0, 0, 0, 0} /* sfb12 pseudo sub bands */ - }, - { /* Table B.8.b: 44.1 kHz */ - {0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 52, 62, 74, 90, 110, 134, 162, 196, 238, 288, 342, 418, - 576}, - {0, 4, 8, 12, 16, 22, 30, 40, 52, 66, 84, 106, 136, 192} - , {0, 0, 0, 0, 0, 0, 0} /* sfb21 pseudo sub bands */ - , {0, 0, 0, 0, 0, 0, 0} /* sfb12 pseudo sub bands */ - }, - { /* Table B.8.c: 48 kHz */ - {0, 4, 8, 12, 16, 20, 24, 30, 36, 42, 50, 60, 72, 88, 106, 128, 156, 190, 230, 276, 330, 384, - 576}, - {0, 4, 8, 12, 16, 22, 28, 38, 50, 64, 80, 100, 126, 192} - , {0, 0, 0, 0, 0, 0, 0} /* sfb21 pseudo sub bands */ - , {0, 0, 0, 0, 0, 0, 0} /* sfb12 pseudo sub bands */ - }, - { /* Table B.8.a: 32 kHz */ - {0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 54, 66, 82, 102, 126, 156, 194, 240, 296, 364, 448, 550, - 576}, - {0, 4, 8, 12, 16, 22, 30, 42, 58, 78, 104, 138, 180, 192} - , {0, 0, 0, 0, 0, 0, 0} /* sfb21 pseudo sub bands */ - , {0, 0, 0, 0, 0, 0, 0} /* sfb12 pseudo sub bands */ - }, - { /* MPEG-2.5 11.025 kHz */ - {0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464, - 522, 576}, - {0 / 3, 12 / 3, 24 / 3, 36 / 3, 54 / 3, 78 / 3, 108 / 3, 144 / 3, 186 / 3, 240 / 3, 312 / 3, - 402 / 3, 522 / 3, 576 / 3} - , {0, 0, 0, 0, 0, 0, 0} /* sfb21 pseudo sub bands */ - , {0, 0, 0, 0, 0, 0, 0} /* sfb12 pseudo sub bands */ - }, - { /* MPEG-2.5 12 kHz */ - {0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464, - 522, 576}, - {0 / 3, 12 / 3, 24 / 3, 36 / 3, 54 / 3, 78 / 3, 108 / 3, 144 / 3, 186 / 3, 240 / 3, 312 / 3, - 402 / 3, 522 / 3, 576 / 3} - , {0, 0, 0, 0, 0, 0, 0} /* sfb21 pseudo sub bands */ - , {0, 0, 0, 0, 0, 0, 0} /* sfb12 pseudo sub bands */ - }, - { /* MPEG-2.5 8 kHz */ - {0, 12, 24, 36, 48, 60, 72, 88, 108, 132, 160, 192, 232, 280, 336, 400, 476, 566, 568, 570, - 572, 574, 576}, - {0 / 3, 24 / 3, 48 / 3, 72 / 3, 108 / 3, 156 / 3, 216 / 3, 288 / 3, 372 / 3, 480 / 3, 486 / 3, - 492 / 3, 498 / 3, 576 / 3} - , {0, 0, 0, 0, 0, 0, 0} /* sfb21 pseudo sub bands */ - , {0, 0, 0, 0, 0, 0, 0} /* sfb12 pseudo sub bands */ - } -}; - - - -FLOAT pow20[Q_MAX + Q_MAX2 + 1]; -FLOAT ipow20[Q_MAX]; -FLOAT pow43[PRECALC_SIZE]; -/* initialized in first call to iteration_init */ -#ifdef TAKEHIRO_IEEE754_HACK -FLOAT adj43asm[PRECALC_SIZE]; -#else -FLOAT adj43[PRECALC_SIZE]; -#endif - -/* -compute the ATH for each scalefactor band -cd range: 0..96db - -Input: 3.3kHz signal 32767 amplitude (3.3kHz is where ATH is smallest = -5db) -longblocks: sfb=12 en0/bw=-11db max_en0 = 1.3db -shortblocks: sfb=5 -9db 0db - -Input: 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 (repeated) -longblocks: amp=1 sfb=12 en0/bw=-103 db max_en0 = -92db - amp=32767 sfb=12 -12 db -1.4db - -Input: 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 (repeated) -shortblocks: amp=1 sfb=5 en0/bw= -99 -86 - amp=32767 sfb=5 -9 db 4db - - -MAX energy of largest wave at 3.3kHz = 1db -AVE energy of largest wave at 3.3kHz = -11db -Let's take AVE: -11db = maximum signal in sfb=12. -Dynamic range of CD: 96db. Therefor energy of smallest audible wave -in sfb=12 = -11 - 96 = -107db = ATH at 3.3kHz. - -ATH formula for this wave: -5db. To adjust to LAME scaling, we need -ATH = ATH_formula - 103 (db) -ATH = ATH * 2.5e-10 (ener) - -*/ - -static FLOAT -ATHmdct(SessionConfig_t const *cfg, FLOAT f) -{ - FLOAT ath; - - ath = ATHformula(cfg, f); - - if (cfg->ATHfixpoint > 0) { - ath -= cfg->ATHfixpoint; - } - else { - ath -= NSATHSCALE; - } - ath += cfg->ATH_offset_db; - - /* modify the MDCT scaling for the ATH and convert to energy */ - ath = powf(10.0f, ath * 0.1f); - return ath; -} - -static void -compute_ath(lame_internal_flags const* gfc) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - FLOAT *const ATH_l = gfc->ATH->l; - FLOAT *const ATH_psfb21 = gfc->ATH->psfb21; - FLOAT *const ATH_s = gfc->ATH->s; - FLOAT *const ATH_psfb12 = gfc->ATH->psfb12; - int sfb, i, start, end; - FLOAT ATH_f; - FLOAT const samp_freq = cfg->samplerate_out; - - for (sfb = 0; sfb < SBMAX_l; sfb++) { - start = gfc->scalefac_band.l[sfb]; - end = gfc->scalefac_band.l[sfb + 1]; - ATH_l[sfb] = FLOAT_MAX; - for (i = start; i < end; i++) { - FLOAT const freq = i * samp_freq / (2 * 576); - ATH_f = ATHmdct(cfg, freq); /* freq in kHz */ - ATH_l[sfb] = Min(ATH_l[sfb], ATH_f); - } - } - - for (sfb = 0; sfb < PSFB21; sfb++) { - start = gfc->scalefac_band.psfb21[sfb]; - end = gfc->scalefac_band.psfb21[sfb + 1]; - ATH_psfb21[sfb] = FLOAT_MAX; - for (i = start; i < end; i++) { - FLOAT const freq = i * samp_freq / (2 * 576); - ATH_f = ATHmdct(cfg, freq); /* freq in kHz */ - ATH_psfb21[sfb] = Min(ATH_psfb21[sfb], ATH_f); - } - } - - for (sfb = 0; sfb < SBMAX_s; sfb++) { - start = gfc->scalefac_band.s[sfb]; - end = gfc->scalefac_band.s[sfb + 1]; - ATH_s[sfb] = FLOAT_MAX; - for (i = start; i < end; i++) { - FLOAT const freq = i * samp_freq / (2 * 192); - ATH_f = ATHmdct(cfg, freq); /* freq in kHz */ - ATH_s[sfb] = Min(ATH_s[sfb], ATH_f); - } - ATH_s[sfb] *= (gfc->scalefac_band.s[sfb + 1] - gfc->scalefac_band.s[sfb]); - } - - for (sfb = 0; sfb < PSFB12; sfb++) { - start = gfc->scalefac_band.psfb12[sfb]; - end = gfc->scalefac_band.psfb12[sfb + 1]; - ATH_psfb12[sfb] = FLOAT_MAX; - for (i = start; i < end; i++) { - FLOAT const freq = i * samp_freq / (2 * 192); - ATH_f = ATHmdct(cfg, freq); /* freq in kHz */ - ATH_psfb12[sfb] = Min(ATH_psfb12[sfb], ATH_f); - } - /*not sure about the following */ - ATH_psfb12[sfb] *= (gfc->scalefac_band.s[13] - gfc->scalefac_band.s[12]); - } - - - /* no-ATH mode: - * reduce ATH to -200 dB - */ - - if (cfg->noATH) { - for (sfb = 0; sfb < SBMAX_l; sfb++) { - ATH_l[sfb] = 1E-20; - } - for (sfb = 0; sfb < PSFB21; sfb++) { - ATH_psfb21[sfb] = 1E-20; - } - for (sfb = 0; sfb < SBMAX_s; sfb++) { - ATH_s[sfb] = 1E-20; - } - for (sfb = 0; sfb < PSFB12; sfb++) { - ATH_psfb12[sfb] = 1E-20; - } - } - - /* work in progress, don't rely on it too much - */ - gfc->ATH->floor = 10. * log10(ATHmdct(cfg, -1.)); - - /* - { FLOAT g=10000, t=1e30, x; - for ( f = 100; f < 10000; f++ ) { - x = ATHmdct( cfg, f ); - if ( t > x ) t = x, g = f; - } - printf("min=%g\n", g); - } */ -} - - -static float const payload_long[2][4] = -{ {-0.000f, -0.000f, -0.000f, +0.000f} -, {-0.500f, -0.250f, -0.025f, +0.500f} -}; -static float const payload_short[2][4] = -{ {-0.000f, -0.000f, -0.000f, +0.000f} -, {-2.000f, -1.000f, -0.050f, +0.500f} -}; - -/************************************************************************/ -/* initialization for iteration_loop */ -/************************************************************************/ -void -iteration_init(lame_internal_flags * gfc) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - III_side_info_t *const l3_side = &gfc->l3_side; - FLOAT adjust, db; - int i, sel; - - if (gfc->iteration_init_init == 0) { - gfc->iteration_init_init = 1; - - l3_side->main_data_begin = 0; - compute_ath(gfc); - - pow43[0] = 0.0; - for (i = 1; i < PRECALC_SIZE; i++) - pow43[i] = pow((FLOAT) i, 4.0 / 3.0); - -#ifdef TAKEHIRO_IEEE754_HACK - adj43asm[0] = 0.0; - for (i = 1; i < PRECALC_SIZE; i++) - adj43asm[i] = i - 0.5 - pow(0.5 * (pow43[i - 1] + pow43[i]), 0.75); -#else - for (i = 0; i < PRECALC_SIZE - 1; i++) - adj43[i] = (i + 1) - pow(0.5 * (pow43[i] + pow43[i + 1]), 0.75); - adj43[i] = 0.5; -#endif - for (i = 0; i < Q_MAX; i++) - ipow20[i] = pow(2.0, (double) (i - 210) * -0.1875); - for (i = 0; i <= Q_MAX + Q_MAX2; i++) - pow20[i] = pow(2.0, (double) (i - 210 - Q_MAX2) * 0.25); - - huffman_init(gfc); - init_xrpow_core_init(gfc); - - sel = 1;/* RH: all modes like vbr-new (cfg->vbr == vbr_mt || cfg->vbr == vbr_mtrh) ? 1 : 0;*/ - - /* long */ - db = cfg->adjust_bass_db + payload_long[sel][0]; - adjust = powf(10.f, db * 0.1f); - for (i = 0; i <= 6; ++i) { - gfc->sv_qnt.longfact[i] = adjust; - } - db = cfg->adjust_alto_db + payload_long[sel][1]; - adjust = powf(10.f, db * 0.1f); - for (; i <= 13; ++i) { - gfc->sv_qnt.longfact[i] = adjust; - } - db = cfg->adjust_treble_db + payload_long[sel][2]; - adjust = powf(10.f, db * 0.1f); - for (; i <= 20; ++i) { - gfc->sv_qnt.longfact[i] = adjust; - } - db = cfg->adjust_sfb21_db + payload_long[sel][3]; - adjust = powf(10.f, db * 0.1f); - for (; i < SBMAX_l; ++i) { - gfc->sv_qnt.longfact[i] = adjust; - } - - /* short */ - db = cfg->adjust_bass_db + payload_short[sel][0]; - adjust = powf(10.f, db * 0.1f); - for (i = 0; i <= 2; ++i) { - gfc->sv_qnt.shortfact[i] = adjust; - } - db = cfg->adjust_alto_db + payload_short[sel][1]; - adjust = powf(10.f, db * 0.1f); - for (; i <= 6; ++i) { - gfc->sv_qnt.shortfact[i] = adjust; - } - db = cfg->adjust_treble_db + payload_short[sel][2]; - adjust = powf(10.f, db * 0.1f); - for (; i <= 11; ++i) { - gfc->sv_qnt.shortfact[i] = adjust; - } - db = cfg->adjust_sfb21_db + payload_short[sel][3]; - adjust = powf(10.f, db * 0.1f); - for (; i < SBMAX_s; ++i) { - gfc->sv_qnt.shortfact[i] = adjust; - } - } -} - - - - - -/************************************************************************ - * allocate bits among 2 channels based on PE - * mt 6/99 - * bugfixes rh 8/01: often allocated more than the allowed 4095 bits - ************************************************************************/ -int -on_pe(lame_internal_flags * gfc, const FLOAT pe[][2], int targ_bits[2], int mean_bits, int gr, int cbr) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - int extra_bits = 0, tbits, bits; - int add_bits[2] = {0, 0}; - int max_bits; /* maximum allowed bits for this granule */ - int ch; - - /* allocate targ_bits for granule */ - ResvMaxBits(gfc, mean_bits, &tbits, &extra_bits, cbr); - max_bits = tbits + extra_bits; - if (max_bits > MAX_BITS_PER_GRANULE) /* hard limit per granule */ - max_bits = MAX_BITS_PER_GRANULE; - - for (bits = 0, ch = 0; ch < cfg->channels_out; ++ch) { - /****************************************************************** - * allocate bits for each channel - ******************************************************************/ - targ_bits[ch] = Min(MAX_BITS_PER_CHANNEL, tbits / cfg->channels_out); - - add_bits[ch] = targ_bits[ch] * pe[gr][ch] / 700.0 - targ_bits[ch]; - - /* at most increase bits by 1.5*average */ - if (add_bits[ch] > mean_bits * 3 / 4) - add_bits[ch] = mean_bits * 3 / 4; - if (add_bits[ch] < 0) - add_bits[ch] = 0; - - if (add_bits[ch] + targ_bits[ch] > MAX_BITS_PER_CHANNEL) - add_bits[ch] = Max(0, MAX_BITS_PER_CHANNEL - targ_bits[ch]); - - bits += add_bits[ch]; - } - if (bits > extra_bits && bits > 0) { - for (ch = 0; ch < cfg->channels_out; ++ch) { - add_bits[ch] = extra_bits * add_bits[ch] / bits; - } - } - - for (ch = 0; ch < cfg->channels_out; ++ch) { - targ_bits[ch] += add_bits[ch]; - extra_bits -= add_bits[ch]; - } - - for (bits = 0, ch = 0; ch < cfg->channels_out; ++ch) { - bits += targ_bits[ch]; - } - if (bits > MAX_BITS_PER_GRANULE) { - int sum = 0; - for (ch = 0; ch < cfg->channels_out; ++ch) { - targ_bits[ch] *= MAX_BITS_PER_GRANULE; - targ_bits[ch] /= bits; - sum += targ_bits[ch]; - } - assert(sum <= MAX_BITS_PER_GRANULE); - } - - return max_bits; -} - - - - -void -reduce_side(int targ_bits[2], FLOAT ms_ener_ratio, int mean_bits, int max_bits) -{ - int move_bits; - FLOAT fac; - - assert(max_bits <= MAX_BITS_PER_GRANULE); - assert(targ_bits[0] + targ_bits[1] <= MAX_BITS_PER_GRANULE); - - /* ms_ener_ratio = 0: allocate 66/33 mid/side fac=.33 - * ms_ener_ratio =.5: allocate 50/50 mid/side fac= 0 */ - /* 75/25 split is fac=.5 */ - /* float fac = .50*(.5-ms_ener_ratio[gr])/.5; */ - fac = .33 * (.5 - ms_ener_ratio) / .5; - if (fac < 0) - fac = 0; - if (fac > .5) - fac = .5; - - /* number of bits to move from side channel to mid channel */ - /* move_bits = fac*targ_bits[1]; */ - move_bits = fac * .5 * (targ_bits[0] + targ_bits[1]); - - if (move_bits > MAX_BITS_PER_CHANNEL - targ_bits[0]) { - move_bits = MAX_BITS_PER_CHANNEL - targ_bits[0]; - } - if (move_bits < 0) - move_bits = 0; - - if (targ_bits[1] >= 125) { - /* dont reduce side channel below 125 bits */ - if (targ_bits[1] - move_bits > 125) { - - /* if mid channel already has 2x more than average, dont bother */ - /* mean_bits = bits per granule (for both channels) */ - if (targ_bits[0] < mean_bits) - targ_bits[0] += move_bits; - targ_bits[1] -= move_bits; - } - else { - targ_bits[0] += targ_bits[1] - 125; - targ_bits[1] = 125; - } - } - - move_bits = targ_bits[0] + targ_bits[1]; - if (move_bits > max_bits) { - targ_bits[0] = (max_bits * targ_bits[0]) / move_bits; - targ_bits[1] = (max_bits * targ_bits[1]) / move_bits; - } - assert(targ_bits[0] <= MAX_BITS_PER_CHANNEL); - assert(targ_bits[1] <= MAX_BITS_PER_CHANNEL); - assert(targ_bits[0] + targ_bits[1] <= MAX_BITS_PER_GRANULE); -} - - -/** - * Robert Hegemann 2001-04-27: - * this adjusts the ATH, keeping the original noise floor - * affects the higher frequencies more than the lower ones - */ - -FLOAT -athAdjust(FLOAT a, FLOAT x, FLOAT athFloor, float ATHfixpoint) -{ - /* work in progress - */ - FLOAT const o = 90.30873362f; - FLOAT const p = (ATHfixpoint < 1.f) ? 94.82444863f : ATHfixpoint; - FLOAT u = FAST_LOG10_X(x, 10.0f); - FLOAT const v = a * a; - FLOAT w = 0.0f; - u -= athFloor; /* undo scaling */ - if (v > 1E-20f) - w = 1.f + FAST_LOG10_X(v, 10.0f / o); - if (w < 0) - w = 0.f; - u *= w; - u += athFloor + o - p; /* redo scaling */ - - return powf(10.f, 0.1f * u); -} - - - -/*************************************************************************/ -/* calc_xmin */ -/*************************************************************************/ - -/* - Calculate the allowed distortion for each scalefactor band, - as determined by the psychoacoustic model. - xmin(sb) = ratio(sb) * en(sb) / bw(sb) - - returns number of sfb's with energy > ATH -*/ - -int -calc_xmin(lame_internal_flags const *gfc, - III_psy_ratio const *const ratio, gr_info * const cod_info, FLOAT * pxmin) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - int sfb, gsfb, j = 0, ath_over = 0, k; - ATH_t const *const ATH = gfc->ATH; - const FLOAT *const xr = cod_info->xr; - int max_nonzero; - - for (gsfb = 0; gsfb < cod_info->psy_lmax; gsfb++) { - FLOAT en0, xmin; - FLOAT rh1, rh2, rh3; - int width, l; - - xmin = athAdjust(ATH->adjust_factor, ATH->l[gsfb], ATH->floor, cfg->ATHfixpoint); - xmin *= gfc->sv_qnt.longfact[gsfb]; - - width = cod_info->width[gsfb]; - rh1 = xmin / width; -#ifdef DBL_EPSILON - rh2 = DBL_EPSILON; -#else - rh2 = 2.2204460492503131e-016; -#endif - en0 = 0.0; - for (l = 0; l < width; ++l) { - FLOAT const xa = xr[j++]; - FLOAT const x2 = xa * xa; - en0 += x2; - rh2 += (x2 < rh1) ? x2 : rh1; - } - if (en0 > xmin) - ath_over++; - - if (en0 < xmin) { - rh3 = en0; - } - else if (rh2 < xmin) { - rh3 = xmin; - } - else { - rh3 = rh2; - } - xmin = rh3; - { - FLOAT const e = ratio->en.l[gsfb]; - if (e > 1e-12f) { - FLOAT x; - x = en0 * ratio->thm.l[gsfb] / e; - x *= gfc->sv_qnt.longfact[gsfb]; - if (xmin < x) - xmin = x; - } - } - xmin = Max(xmin, DBL_EPSILON); - cod_info->energy_above_cutoff[gsfb] = (en0 > xmin+1e-14f) ? 1 : 0; - *pxmin++ = xmin; - } /* end of long block loop */ - - - - - /*use this function to determine the highest non-zero coeff */ - max_nonzero = 0; - for (k = 575; k > 0; --k) { - if (fabs(xr[k]) > 1e-12f) { - max_nonzero = k; - break; - } - } - if (cod_info->block_type != SHORT_TYPE) { /* NORM, START or STOP type, but not SHORT */ - max_nonzero |= 1; /* only odd numbers */ - } - else { - max_nonzero /= 6; /* 3 short blocks */ - max_nonzero *= 6; - max_nonzero += 5; - } - - if (gfc->sv_qnt.sfb21_extra == 0 && cfg->samplerate_out < 44000) { - int const sfb_l = (cfg->samplerate_out <= 8000) ? 17 : 21; - int const sfb_s = (cfg->samplerate_out <= 8000) ? 9 : 12; - int limit = 575; - if (cod_info->block_type != SHORT_TYPE) { /* NORM, START or STOP type, but not SHORT */ - limit = gfc->scalefac_band.l[sfb_l]-1; - } - else { - limit = 3*gfc->scalefac_band.s[sfb_s]-1; - } - if (max_nonzero > limit) { - max_nonzero = limit; - } - } - cod_info->max_nonzero_coeff = max_nonzero; - - - - for (sfb = cod_info->sfb_smin; gsfb < cod_info->psymax; sfb++, gsfb += 3) { - int width, b, l; - FLOAT tmpATH; - - tmpATH = athAdjust(ATH->adjust_factor, ATH->s[sfb], ATH->floor, cfg->ATHfixpoint); - tmpATH *= gfc->sv_qnt.shortfact[sfb]; - - width = cod_info->width[gsfb]; - for (b = 0; b < 3; b++) { - FLOAT en0 = 0.0, xmin = tmpATH; - FLOAT rh1, rh2, rh3; - - rh1 = tmpATH / width; -#ifdef DBL_EPSILON - rh2 = DBL_EPSILON; -#else - rh2 = 2.2204460492503131e-016; -#endif - for (l = 0; l < width; ++l) { - FLOAT const xa = xr[j++]; - FLOAT const x2 = xa * xa; - en0 += x2; - rh2 += (x2 < rh1) ? x2 : rh1; - } - if (en0 > tmpATH) - ath_over++; - - if (en0 < tmpATH) { - rh3 = en0; - } - else if (rh2 < tmpATH) { - rh3 = tmpATH; - } - else { - rh3 = rh2; - } - xmin = rh3; - { - FLOAT const e = ratio->en.s[sfb][b]; - if (e > 1e-12f) { - FLOAT x; - x = en0 * ratio->thm.s[sfb][b] / e; - x *= gfc->sv_qnt.shortfact[sfb]; - if (xmin < x) - xmin = x; - } - } - xmin = Max(xmin, DBL_EPSILON); - cod_info->energy_above_cutoff[gsfb+b] = (en0 > xmin+1e-14f) ? 1 : 0; - *pxmin++ = xmin; - } /* b */ - if (cfg->use_temporal_masking_effect) { - if (pxmin[-3] > pxmin[-3 + 1]) - pxmin[-3 + 1] += (pxmin[-3] - pxmin[-3 + 1]) * gfc->cd_psy->decay; - if (pxmin[-3 + 1] > pxmin[-3 + 2]) - pxmin[-3 + 2] += (pxmin[-3 + 1] - pxmin[-3 + 2]) * gfc->cd_psy->decay; - } - } /* end of short block sfb loop */ - - return ath_over; -} - - -static FLOAT -calc_noise_core_c(const gr_info * const cod_info, int *startline, int l, FLOAT step) -{ - FLOAT noise = 0; - int j = *startline; - const int *const ix = cod_info->l3_enc; - - if (j > cod_info->count1) { - while (l--) { - FLOAT temp; - temp = cod_info->xr[j]; - j++; - noise += temp * temp; - temp = cod_info->xr[j]; - j++; - noise += temp * temp; - } - } - else if (j > cod_info->big_values) { - FLOAT ix01[2]; - ix01[0] = 0; - ix01[1] = step; - while (l--) { - FLOAT temp; - temp = fabs(cod_info->xr[j]) - ix01[ix[j]]; - j++; - noise += temp * temp; - temp = fabs(cod_info->xr[j]) - ix01[ix[j]]; - j++; - noise += temp * temp; - } - } - else { - while (l--) { - FLOAT temp; - temp = fabs(cod_info->xr[j]) - pow43[ix[j]] * step; - j++; - noise += temp * temp; - temp = fabs(cod_info->xr[j]) - pow43[ix[j]] * step; - j++; - noise += temp * temp; - } - } - - *startline = j; - return noise; -} - - -/*************************************************************************/ -/* calc_noise */ -/*************************************************************************/ - -/* -oo dB => -1.00 */ -/* - 6 dB => -0.97 */ -/* - 3 dB => -0.80 */ -/* - 2 dB => -0.64 */ -/* - 1 dB => -0.38 */ -/* 0 dB => 0.00 */ -/* + 1 dB => +0.49 */ -/* + 2 dB => +1.06 */ -/* + 3 dB => +1.68 */ -/* + 6 dB => +3.69 */ -/* +10 dB => +6.45 */ - -int -calc_noise(gr_info const *const cod_info, - FLOAT const *l3_xmin, - FLOAT * distort, calc_noise_result * const res, calc_noise_data * prev_noise) -{ - int sfb, l, over = 0; - FLOAT over_noise_db = 0; - FLOAT tot_noise_db = 0; /* 0 dB relative to masking */ - FLOAT max_noise = -20.0; /* -200 dB relative to masking */ - int j = 0; - const int *scalefac = cod_info->scalefac; - - res->over_SSD = 0; - - - for (sfb = 0; sfb < cod_info->psymax; sfb++) { - int const s = - cod_info->global_gain - (((*scalefac++) + (cod_info->preflag ? pretab[sfb] : 0)) - << (cod_info->scalefac_scale + 1)) - - cod_info->subblock_gain[cod_info->window[sfb]] * 8; - FLOAT const r_l3_xmin = 1.f / *l3_xmin++; - FLOAT distort_ = 0.0f; - FLOAT noise = 0.0f; - - if (prev_noise && (prev_noise->step[sfb] == s)) { - - /* use previously computed values */ - j += cod_info->width[sfb]; - distort_ = r_l3_xmin * prev_noise->noise[sfb]; - - noise = prev_noise->noise_log[sfb]; - - } - else { - FLOAT const step = POW20(s); - l = cod_info->width[sfb] >> 1; - - if ((j + cod_info->width[sfb]) > cod_info->max_nonzero_coeff) { - int usefullsize; - usefullsize = cod_info->max_nonzero_coeff - j + 1; - - if (usefullsize > 0) - l = usefullsize >> 1; - else - l = 0; - } - - noise = calc_noise_core_c(cod_info, &j, l, step); - - - if (prev_noise) { - /* save noise values */ - prev_noise->step[sfb] = s; - prev_noise->noise[sfb] = noise; - } - - distort_ = r_l3_xmin * noise; - - /* multiplying here is adding in dB, but can overflow */ - noise = FAST_LOG10(Max(distort_, 1E-20f)); - - if (prev_noise) { - /* save noise values */ - prev_noise->noise_log[sfb] = noise; - } - } - *distort++ = distort_; - - if (prev_noise) { - /* save noise values */ - prev_noise->global_gain = cod_info->global_gain;; - } - - - /*tot_noise *= Max(noise, 1E-20); */ - tot_noise_db += noise; - - if (noise > 0.0) { - int tmp; - - tmp = Max((int) (noise * 10 + .5), 1); - res->over_SSD += tmp * tmp; - - over++; - /* multiplying here is adding in dB -but can overflow */ - /*over_noise *= noise; */ - over_noise_db += noise; - } - max_noise = Max(max_noise, noise); - - } - - res->over_count = over; - res->tot_noise = tot_noise_db; - res->over_noise = over_noise_db; - res->max_noise = max_noise; - - return over; -} - - - - - - - - -/************************************************************************ - * - * set_pinfo() - * - * updates plotting data - * - * Mark Taylor 2000-??-?? - * - * Robert Hegemann: moved noise/distortion calc into it - * - ************************************************************************/ - -static void -set_pinfo(lame_internal_flags const *gfc, - gr_info * const cod_info, const III_psy_ratio * const ratio, const int gr, const int ch) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - int sfb, sfb2; - int j, i, l, start, end, bw; - FLOAT en0, en1; - FLOAT const ifqstep = (cod_info->scalefac_scale == 0) ? .5 : 1.0; - int const *const scalefac = cod_info->scalefac; - - FLOAT l3_xmin[SFBMAX], xfsf[SFBMAX]; - calc_noise_result noise; - - (void) calc_xmin(gfc, ratio, cod_info, l3_xmin); - (void) calc_noise(cod_info, l3_xmin, xfsf, &noise, 0); - - j = 0; - sfb2 = cod_info->sfb_lmax; - if (cod_info->block_type != SHORT_TYPE && !cod_info->mixed_block_flag) - sfb2 = 22; - for (sfb = 0; sfb < sfb2; sfb++) { - start = gfc->scalefac_band.l[sfb]; - end = gfc->scalefac_band.l[sfb + 1]; - bw = end - start; - for (en0 = 0.0; j < end; j++) - en0 += cod_info->xr[j] * cod_info->xr[j]; - en0 /= bw; - /* convert to MDCT units */ - en1 = 1e15; /* scaling so it shows up on FFT plot */ - gfc->pinfo->en[gr][ch][sfb] = en1 * en0; - gfc->pinfo->xfsf[gr][ch][sfb] = en1 * l3_xmin[sfb] * xfsf[sfb] / bw; - - if (ratio->en.l[sfb] > 0 && !cfg->ATHonly) - en0 = en0 / ratio->en.l[sfb]; - else - en0 = 0.0; - - gfc->pinfo->thr[gr][ch][sfb] = en1 * Max(en0 * ratio->thm.l[sfb], gfc->ATH->l[sfb]); - - /* there is no scalefactor bands >= SBPSY_l */ - gfc->pinfo->LAMEsfb[gr][ch][sfb] = 0; - if (cod_info->preflag && sfb >= 11) - gfc->pinfo->LAMEsfb[gr][ch][sfb] = -ifqstep * pretab[sfb]; - - if (sfb < SBPSY_l) { - assert(scalefac[sfb] >= 0); /* scfsi should be decoded by caller side */ - gfc->pinfo->LAMEsfb[gr][ch][sfb] -= ifqstep * scalefac[sfb]; - } - } /* for sfb */ - - if (cod_info->block_type == SHORT_TYPE) { - sfb2 = sfb; - for (sfb = cod_info->sfb_smin; sfb < SBMAX_s; sfb++) { - start = gfc->scalefac_band.s[sfb]; - end = gfc->scalefac_band.s[sfb + 1]; - bw = end - start; - for (i = 0; i < 3; i++) { - for (en0 = 0.0, l = start; l < end; l++) { - en0 += cod_info->xr[j] * cod_info->xr[j]; - j++; - } - en0 = Max(en0 / bw, 1e-20); - /* convert to MDCT units */ - en1 = 1e15; /* scaling so it shows up on FFT plot */ - - gfc->pinfo->en_s[gr][ch][3 * sfb + i] = en1 * en0; - gfc->pinfo->xfsf_s[gr][ch][3 * sfb + i] = en1 * l3_xmin[sfb2] * xfsf[sfb2] / bw; - if (ratio->en.s[sfb][i] > 0) - en0 = en0 / ratio->en.s[sfb][i]; - else - en0 = 0.0; - if (cfg->ATHonly || cfg->ATHshort) - en0 = 0; - - gfc->pinfo->thr_s[gr][ch][3 * sfb + i] = - en1 * Max(en0 * ratio->thm.s[sfb][i], gfc->ATH->s[sfb]); - - /* there is no scalefactor bands >= SBPSY_s */ - gfc->pinfo->LAMEsfb_s[gr][ch][3 * sfb + i] - = -2.0 * cod_info->subblock_gain[i]; - if (sfb < SBPSY_s) { - gfc->pinfo->LAMEsfb_s[gr][ch][3 * sfb + i] -= ifqstep * scalefac[sfb2]; - } - sfb2++; - } - } - } /* block type short */ - gfc->pinfo->LAMEqss[gr][ch] = cod_info->global_gain; - gfc->pinfo->LAMEmainbits[gr][ch] = cod_info->part2_3_length + cod_info->part2_length; - gfc->pinfo->LAMEsfbits[gr][ch] = cod_info->part2_length; - - gfc->pinfo->over[gr][ch] = noise.over_count; - gfc->pinfo->max_noise[gr][ch] = noise.max_noise * 10.0; - gfc->pinfo->over_noise[gr][ch] = noise.over_noise * 10.0; - gfc->pinfo->tot_noise[gr][ch] = noise.tot_noise * 10.0; - gfc->pinfo->over_SSD[gr][ch] = noise.over_SSD; -} - - -/************************************************************************ - * - * set_frame_pinfo() - * - * updates plotting data for a whole frame - * - * Robert Hegemann 2000-10-21 - * - ************************************************************************/ - -void -set_frame_pinfo(lame_internal_flags * gfc, const III_psy_ratio ratio[2][2]) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - int ch; - int gr; - - /* for every granule and channel patch l3_enc and set info - */ - for (gr = 0; gr < cfg->mode_gr; gr++) { - for (ch = 0; ch < cfg->channels_out; ch++) { - gr_info *const cod_info = &gfc->l3_side.tt[gr][ch]; - int scalefac_sav[SFBMAX]; - memcpy(scalefac_sav, cod_info->scalefac, sizeof(scalefac_sav)); - - /* reconstruct the scalefactors in case SCFSI was used - */ - if (gr == 1) { - int sfb; - for (sfb = 0; sfb < cod_info->sfb_lmax; sfb++) { - if (cod_info->scalefac[sfb] < 0) /* scfsi */ - cod_info->scalefac[sfb] = gfc->l3_side.tt[0][ch].scalefac[sfb]; - } - } - - set_pinfo(gfc, cod_info, &ratio[gr][ch], gr, ch); - memcpy(cod_info->scalefac, scalefac_sav, sizeof(scalefac_sav)); - } /* for ch */ - } /* for gr */ -} diff --git a/platform/win32/msvc/external/lame/libmp3lame/quantize_pvt.h b/platform/win32/msvc/external/lame/libmp3lame/quantize_pvt.h deleted file mode 100644 index b8333e7e9a4..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/quantize_pvt.h +++ /dev/null @@ -1,128 +0,0 @@ -/* - * quantize_pvt include file - * - * Copyright (c) 1999 Takehiro TOMINAGA - * - * 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 LAME_QUANTIZE_PVT_H -#define LAME_QUANTIZE_PVT_H - -#define IXMAX_VAL 8206 /* ix always <= 8191+15. see count_bits() */ - -/* buggy Winamp decoder cannot handle values > 8191 */ -/* #define IXMAX_VAL 8191 */ - -#define PRECALC_SIZE (IXMAX_VAL+2) - - -extern const int nr_of_sfb_block[6][3][4]; -extern const int pretab[SBMAX_l]; -extern const int slen1_tab[16]; -extern const int slen2_tab[16]; - -extern const scalefac_struct sfBandIndex[9]; - -extern FLOAT pow43[PRECALC_SIZE]; -#ifdef TAKEHIRO_IEEE754_HACK -extern FLOAT adj43asm[PRECALC_SIZE]; -#else -extern FLOAT adj43[PRECALC_SIZE]; -#endif - -#define Q_MAX (256+1) -#define Q_MAX2 116 /* minimum possible number of - -cod_info->global_gain - + ((scalefac[] + (cod_info->preflag ? pretab[sfb] : 0)) - << (cod_info->scalefac_scale + 1)) - + cod_info->subblock_gain[cod_info->window[sfb]] * 8; - - for long block, 0+((15+3)<<2) = 18*4 = 72 - for short block, 0+(15<<2)+7*8 = 15*4+56 = 116 - */ - -extern FLOAT pow20[Q_MAX + Q_MAX2 + 1]; -extern FLOAT ipow20[Q_MAX]; - -typedef struct calc_noise_result_t { - FLOAT over_noise; /* sum of quantization noise > masking */ - FLOAT tot_noise; /* sum of all quantization noise */ - FLOAT max_noise; /* max quantization noise */ - int over_count; /* number of quantization noise > masking */ - int over_SSD; /* SSD-like cost of distorted bands */ - int bits; -} calc_noise_result; - - -/** -* allows re-use of previously -* computed noise values -*/ -typedef struct calc_noise_data_t { - int global_gain; - int sfb_count1; - int step[39]; - FLOAT noise[39]; - FLOAT noise_log[39]; -} calc_noise_data; - - -int on_pe(lame_internal_flags * gfc, const FLOAT pe[2][2], - int targ_bits[2], int mean_bits, int gr, int cbr); - -void reduce_side(int targ_bits[2], FLOAT ms_ener_ratio, int mean_bits, int max_bits); - - -void iteration_init(lame_internal_flags * gfc); - - -int calc_xmin(lame_internal_flags const *gfc, - III_psy_ratio const *const ratio, gr_info * const cod_info, FLOAT * l3_xmin); - -int calc_noise(const gr_info * const cod_info, - const FLOAT * l3_xmin, - FLOAT * distort, calc_noise_result * const res, calc_noise_data * prev_noise); - -void set_frame_pinfo(lame_internal_flags * gfc, const III_psy_ratio ratio[2][2]); - - - - -/* takehiro.c */ - -int count_bits(lame_internal_flags const *const gfc, const FLOAT * const xr, - gr_info * const cod_info, calc_noise_data * prev_noise); -int noquant_count_bits(lame_internal_flags const *const gfc, - gr_info * const cod_info, calc_noise_data * prev_noise); - - -void best_huffman_divide(const lame_internal_flags * const gfc, gr_info * const cod_info); - -void best_scalefac_store(const lame_internal_flags * gfc, const int gr, const int ch, - III_side_info_t * const l3_side); - -int scale_bitcount(const lame_internal_flags * gfc, gr_info * cod_info); - -void huffman_init(lame_internal_flags * const gfc); - -void init_xrpow_core_init(lame_internal_flags * const gfc); - -FLOAT athAdjust(FLOAT a, FLOAT x, FLOAT athFloor, float ATHfixpoint); - -#define LARGE_BITS 100000 - -#endif /* LAME_QUANTIZE_PVT_H */ diff --git a/platform/win32/msvc/external/lame/libmp3lame/reservoir.c b/platform/win32/msvc/external/lame/libmp3lame/reservoir.c deleted file mode 100644 index 4fdaa8d33bc..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/reservoir.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - * bit reservoir source file - * - * Copyright (c) 1999-2000 Mark Taylor - * - * 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. - */ - -/* $Id: reservoir.c,v 1.45 2011/05/07 16:05:17 rbrito Exp $ */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - - -#include "lame.h" -#include "machine.h" -#include "encoder.h" -#include "util.h" -#include "reservoir.h" - -#include "bitstream.h" -#include "lame-analysis.h" -#include "lame_global_flags.h" - - -/* - ResvFrameBegin: - Called (repeatedly) at the beginning of a frame. Updates the maximum - size of the reservoir, and checks to make sure main_data_begin - was set properly by the formatter -*/ - -/* - * Background information: - * - * This is the original text from the ISO standard. Because of - * sooo many bugs and irritations correcting comments are added - * in brackets []. A '^W' means you should remove the last word. - * - * 1) The following rule can be used to calculate the maximum - * number of bits used for one granule [^W frame]: - * At the highest possible bitrate of Layer III (320 kbps - * per stereo signal [^W^W^W], 48 kHz) the frames must be of - * [^W^W^W are designed to have] constant length, i.e. - * one buffer [^W^W the frame] length is: - * - * 320 kbps * 1152/48 kHz = 7680 bit = 960 byte - * - * This value is used as the maximum buffer per channel [^W^W] at - * lower bitrates [than 320 kbps]. At 64 kbps mono or 128 kbps - * stereo the main granule length is 64 kbps * 576/48 kHz = 768 bit - * [per granule and channel] at 48 kHz sampling frequency. - * This means that there is a maximum deviation (short time buffer - * [= reservoir]) of 7680 - 2*2*768 = 4608 bits is allowed at 64 kbps. - * The actual deviation is equal to the number of bytes [with the - * meaning of octets] denoted by the main_data_end offset pointer. - * The actual maximum deviation is (2^9-1)*8 bit = 4088 bits - * [for MPEG-1 and (2^8-1)*8 bit for MPEG-2, both are hard limits]. - * ... The xchange of buffer bits between the left and right channel - * is allowed without restrictions [exception: dual channel]. - * Because of the [constructed] constraint on the buffer size - * main_data_end is always set to 0 in the case of bit_rate_index==14, - * i.e. data rate 320 kbps per stereo signal [^W^W^W]. In this case - * all data are allocated between adjacent header [^W sync] words - * [, i.e. there is no buffering at all]. - */ - -int -ResvFrameBegin(lame_internal_flags * gfc, int *mean_bits) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - EncStateVar_t *const esv = &gfc->sv_enc; - int fullFrameBits; - int resvLimit; - int maxmp3buf; - III_side_info_t *const l3_side = &gfc->l3_side; - int frameLength; - int meanBits; - - frameLength = getframebits(gfc); - meanBits = (frameLength - cfg->sideinfo_len * 8) / cfg->mode_gr; - -/* - * Meaning of the variables: - * resvLimit: (0, 8, ..., 8*255 (MPEG-2), 8*511 (MPEG-1)) - * Number of bits can be stored in previous frame(s) due to - * counter size constaints - * maxmp3buf: ( ??? ... 8*1951 (MPEG-1 and 2), 8*2047 (MPEG-2.5)) - * Number of bits allowed to encode one frame (you can take 8*511 bit - * from the bit reservoir and at most 8*1440 bit from the current - * frame (320 kbps, 32 kHz), so 8*1951 bit is the largest possible - * value for MPEG-1 and -2) - * - * maximum allowed granule/channel size times 4 = 8*2047 bits., - * so this is the absolute maximum supported by the format. - * - * - * fullFrameBits: maximum number of bits available for encoding - * the current frame. - * - * mean_bits: target number of bits per granule. - * - * frameLength: - * - * gfc->ResvMax: maximum allowed reservoir - * - * gfc->ResvSize: current reservoir size - * - * l3_side->resvDrain_pre: - * ancillary data to be added to previous frame: - * (only usefull in VBR modes if it is possible to have - * maxmp3buf < fullFrameBits)). Currently disabled, - * see #define NEW_DRAIN - * 2010-02-13: RH now enabled, it seems to be needed for CBR too, - * as there exists one example, where the FhG decoder - * can't decode a -b320 CBR file anymore. - * - * l3_side->resvDrain_post: - * ancillary data to be added to this frame: - * - */ - - /* main_data_begin has 9 bits in MPEG-1, 8 bits MPEG-2 */ - resvLimit = (8 * 256) * cfg->mode_gr - 8; - - /* maximum allowed frame size. dont use more than this number of - bits, even if the frame has the space for them: */ - maxmp3buf = cfg->buffer_constraint; - esv->ResvMax = maxmp3buf - frameLength; - if (esv->ResvMax > resvLimit) - esv->ResvMax = resvLimit; - if (esv->ResvMax < 0 || cfg->disable_reservoir) - esv->ResvMax = 0; - - fullFrameBits = meanBits * cfg->mode_gr + Min(esv->ResvSize, esv->ResvMax); - - if (fullFrameBits > maxmp3buf) - fullFrameBits = maxmp3buf; - - assert(0 == esv->ResvMax % 8); - assert(esv->ResvMax >= 0); - - l3_side->resvDrain_pre = 0; - - if (gfc->pinfo != NULL) { - gfc->pinfo->mean_bits = meanBits / 2; /* expected bits per channel per granule [is this also right for mono/stereo, MPEG-1/2 ?] */ - gfc->pinfo->resvsize = esv->ResvSize; - } - *mean_bits = meanBits; - return fullFrameBits; -} - - -/* - ResvMaxBits - returns targ_bits: target number of bits to use for 1 granule - extra_bits: amount extra available from reservoir - Mark Taylor 4/99 -*/ -void -ResvMaxBits(lame_internal_flags * gfc, int mean_bits, int *targ_bits, int *extra_bits, int cbr) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - EncStateVar_t *const esv = &gfc->sv_enc; - int add_bits, targBits, extraBits; - int ResvSize = esv->ResvSize, ResvMax = esv->ResvMax; - - /* conpensate the saved bits used in the 1st granule */ - if (cbr) - ResvSize += mean_bits; - - if (gfc->sv_qnt.substep_shaping & 1) - ResvMax *= 0.9; - - targBits = mean_bits; - - /* extra bits if the reservoir is almost full */ - if (ResvSize * 10 > ResvMax * 9) { - add_bits = ResvSize - (ResvMax * 9) / 10; - targBits += add_bits; - gfc->sv_qnt.substep_shaping |= 0x80; - } - else { - add_bits = 0; - gfc->sv_qnt.substep_shaping &= 0x7f; - /* build up reservoir. this builds the reservoir a little slower - * than FhG. It could simple be mean_bits/15, but this was rigged - * to always produce 100 (the old value) at 128kbs */ - /* *targ_bits -= (int) (mean_bits/15.2); */ - if (!cfg->disable_reservoir && !(gfc->sv_qnt.substep_shaping & 1)) - targBits -= .1 * mean_bits; - } - - - /* amount from the reservoir we are allowed to use. ISO says 6/10 */ - extraBits = (ResvSize < (esv->ResvMax * 6) / 10 ? ResvSize : (esv->ResvMax * 6) / 10); - extraBits -= add_bits; - - if (extraBits < 0) - extraBits = 0; - - *targ_bits = targBits; - *extra_bits = extraBits; -} - -/* - ResvAdjust: - Called after a granule's bit allocation. Readjusts the size of - the reservoir to reflect the granule's usage. -*/ -void -ResvAdjust(lame_internal_flags * gfc, gr_info const *gi) -{ - gfc->sv_enc.ResvSize -= gi->part2_3_length + gi->part2_length; -} - - -/* - ResvFrameEnd: - Called after all granules in a frame have been allocated. Makes sure - that the reservoir size is within limits, possibly by adding stuffing - bits. -*/ -void -ResvFrameEnd(lame_internal_flags * gfc, int mean_bits) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - EncStateVar_t *const esv = &gfc->sv_enc; - III_side_info_t *const l3_side = &gfc->l3_side; - int stuffingBits; - int over_bits; - - esv->ResvSize += mean_bits * cfg->mode_gr; - stuffingBits = 0; - l3_side->resvDrain_post = 0; - l3_side->resvDrain_pre = 0; - - /* we must be byte aligned */ - if ((over_bits = esv->ResvSize % 8) != 0) - stuffingBits += over_bits; - - - over_bits = (esv->ResvSize - stuffingBits) - esv->ResvMax; - if (over_bits > 0) { - assert(0 == over_bits % 8); - assert(over_bits >= 0); - stuffingBits += over_bits; - } - - - /* NOTE: enabling the NEW_DRAIN code fixes some problems with FhG decoder - shipped with MS Windows operating systems. Using this, it is even - possible to use Gabriel's lax buffer consideration again, which - assumes, any decoder should have a buffer large enough - for a 320 kbps frame at 32 kHz sample rate. - - old drain code: - lame -b320 BlackBird.wav ---> does not play with GraphEdit.exe using FhG decoder V1.5 Build 50 - - new drain code: - lame -b320 BlackBird.wav ---> plays fine with GraphEdit.exe using FhG decoder V1.5 Build 50 - - Robert Hegemann, 2010-02-13. - */ - /* drain as many bits as possible into previous frame ancillary data - * In particular, in VBR mode ResvMax may have changed, and we have - * to make sure main_data_begin does not create a reservoir bigger - * than ResvMax mt 4/00*/ - { - int mdb_bytes = Min(l3_side->main_data_begin * 8, stuffingBits) / 8; - l3_side->resvDrain_pre += 8 * mdb_bytes; - stuffingBits -= 8 * mdb_bytes; - esv->ResvSize -= 8 * mdb_bytes; - l3_side->main_data_begin -= mdb_bytes; - } - /* drain the rest into this frames ancillary data */ - l3_side->resvDrain_post += stuffingBits; - esv->ResvSize -= stuffingBits; -} diff --git a/platform/win32/msvc/external/lame/libmp3lame/reservoir.h b/platform/win32/msvc/external/lame/libmp3lame/reservoir.h deleted file mode 100644 index 7c585936466..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/reservoir.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * bit reservoir include file - * - * Copyright (c) 1999 Mark Taylor - * - * 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 LAME_RESERVOIR_H -#define LAME_RESERVOIR_H - -int ResvFrameBegin(lame_internal_flags * gfc, int *mean_bits); -void ResvMaxBits(lame_internal_flags * gfc, int mean_bits, int *targ_bits, int *max_bits, - int cbr); -void ResvAdjust(lame_internal_flags * gfc, gr_info const *gi); -void ResvFrameEnd(lame_internal_flags * gfc, int mean_bits); - -#endif /* LAME_RESERVOIR_H */ diff --git a/platform/win32/msvc/external/lame/libmp3lame/set_get.c b/platform/win32/msvc/external/lame/libmp3lame/set_get.c deleted file mode 100644 index 2c61f48f10d..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/set_get.c +++ /dev/null @@ -1,2277 +0,0 @@ -/* -*- mode: C; mode: fold -*- */ -/* - * set/get functions for lame_global_flags - * - * Copyright (c) 2001-2005 Alexander Leidinger - * - * 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. - */ - -/* $Id: set_get.c,v 1.98 2011/05/07 16:05:17 rbrito Exp $ */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "lame.h" -#include "machine.h" -#include "encoder.h" -#include "util.h" -#include "bitstream.h" /* because of compute_flushbits */ - -#include "set_get.h" -#include "lame_global_flags.h" - -/* - * input stream description - */ - - -/* number of samples */ -/* it's unlikely for this function to return an error */ -int -lame_set_num_samples(lame_global_flags * gfp, unsigned long num_samples) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 2^32-1 */ - gfp->num_samples = num_samples; - return 0; - } - return -1; -} - -unsigned long -lame_get_num_samples(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->num_samples; - } - return 0; -} - - -/* input samplerate */ -int -lame_set_in_samplerate(lame_global_flags * gfp, int in_samplerate) -{ - if (is_lame_global_flags_valid(gfp)) { - /* input sample rate in Hz, default = 44100 Hz */ - gfp->samplerate_in = in_samplerate; - return 0; - } - return -1; -} - -int -lame_get_in_samplerate(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->samplerate_in; - } - return 0; -} - - -/* number of channels in input stream */ -int -lame_set_num_channels(lame_global_flags * gfp, int num_channels) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 2 */ - if (2 < num_channels || 0 == num_channels) { - return -1; /* we don't support more than 2 channels */ - } - gfp->num_channels = num_channels; - return 0; - } - return -1; -} - -int -lame_get_num_channels(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->num_channels; - } - return 0; -} - - -/* scale the input by this amount before encoding (not used for decoding) */ -int -lame_set_scale(lame_global_flags * gfp, float scale) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 1 */ - gfp->scale = scale; - return 0; - } - return -1; -} - -float -lame_get_scale(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->scale; - } - return 0; -} - - -/* scale the channel 0 (left) input by this amount before - encoding (not used for decoding) */ -int -lame_set_scale_left(lame_global_flags * gfp, float scale) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 1 */ - gfp->scale_left = scale; - return 0; - } - return -1; -} - -float -lame_get_scale_left(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->scale_left; - } - return 0; -} - - -/* scale the channel 1 (right) input by this amount before - encoding (not used for decoding) */ -int -lame_set_scale_right(lame_global_flags * gfp, float scale) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 1 */ - gfp->scale_right = scale; - return 0; - } - return -1; -} - -float -lame_get_scale_right(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->scale_right; - } - return 0; -} - - -/* output sample rate in Hz */ -int -lame_set_out_samplerate(lame_global_flags * gfp, int out_samplerate) -{ - if (is_lame_global_flags_valid(gfp)) { - /* - * default = 0: LAME picks best value based on the amount - * of compression - * MPEG only allows: - * MPEG1 32, 44.1, 48khz - * MPEG2 16, 22.05, 24 - * MPEG2.5 8, 11.025, 12 - * - * (not used by decoding routines) - */ - gfp->samplerate_out = out_samplerate; - return 0; - } - return -1; -} - -int -lame_get_out_samplerate(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->samplerate_out; - } - return 0; -} - - - - -/* - * general control parameters - */ - -/* collect data for an MP3 frame analzyer */ -int -lame_set_analysis(lame_global_flags * gfp, int analysis) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 0 */ - - /* enforce disable/enable meaning, if we need more than two values - we need to switch to an enum to have an apropriate representation - of the possible meanings of the value */ - if (0 > analysis || 1 < analysis) - return -1; - gfp->analysis = analysis; - return 0; - } - return -1; -} - -int -lame_get_analysis(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - assert(0 <= gfp->analysis && 1 >= gfp->analysis); - return gfp->analysis; - } - return 0; -} - - -/* write a Xing VBR header frame */ -int -lame_set_bWriteVbrTag(lame_global_flags * gfp, int bWriteVbrTag) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 1 (on) for VBR/ABR modes, 0 (off) for CBR mode */ - - /* enforce disable/enable meaning, if we need more than two values - we need to switch to an enum to have an apropriate representation - of the possible meanings of the value */ - if (0 > bWriteVbrTag || 1 < bWriteVbrTag) - return -1; - gfp->write_lame_tag = bWriteVbrTag; - return 0; - } - return -1; -} - -int -lame_get_bWriteVbrTag(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - assert(0 <= gfp->write_lame_tag && 1 >= gfp->write_lame_tag); - return gfp->write_lame_tag; - } - return 0; -} - - - -/* decode only, use lame/mpglib to convert mp3 to wav */ -int -lame_set_decode_only(lame_global_flags * gfp, int decode_only) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 0 (disabled) */ - - /* enforce disable/enable meaning, if we need more than two values - we need to switch to an enum to have an apropriate representation - of the possible meanings of the value */ - if (0 > decode_only || 1 < decode_only) - return -1; - gfp->decode_only = decode_only; - return 0; - } - return -1; -} - -int -lame_get_decode_only(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - assert(0 <= gfp->decode_only && 1 >= gfp->decode_only); - return gfp->decode_only; - } - return 0; -} - - -#if DEPRECATED_OR_OBSOLETE_CODE_REMOVED -/* 1=encode a Vorbis .ogg file. default=0 */ -/* DEPRECATED */ -int CDECL lame_set_ogg(lame_global_flags *, int); -int CDECL lame_get_ogg(const lame_global_flags *); -#else -#endif - -/* encode a Vorbis .ogg file */ -/* DEPRECATED */ -int -lame_set_ogg(lame_global_flags * gfp, int ogg) -{ - (void) gfp; - (void) ogg; - return -1; -} - -int -lame_get_ogg(const lame_global_flags * gfp) -{ - (void) gfp; - return 0; -} - - -/* - * Internal algorithm selection. - * True quality is determined by the bitrate but this variable will effect - * quality by selecting expensive or cheap algorithms. - * quality=0..9. 0=best (very slow). 9=worst. - * recommended: 3 near-best quality, not too slow - * 5 good quality, fast - * 7 ok quality, really fast - */ -int -lame_set_quality(lame_global_flags * gfp, int quality) -{ - if (is_lame_global_flags_valid(gfp)) { - if (quality < 0) { - gfp->quality = 0; - } - else if (quality > 9) { - gfp->quality = 9; - } - else { - gfp->quality = quality; - } - return 0; - } - return -1; -} - -int -lame_get_quality(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->quality; - } - return 0; -} - - -/* mode = STEREO, JOINT_STEREO, DUAL_CHANNEL (not supported), MONO */ -int -lame_set_mode(lame_global_flags * gfp, MPEG_mode mode) -{ - if (is_lame_global_flags_valid(gfp)) { - int mpg_mode = mode; - /* default: lame chooses based on compression ratio and input channels */ - if (mpg_mode < 0 || MAX_INDICATOR <= mpg_mode) - return -1; /* Unknown MPEG mode! */ - gfp->mode = mode; - return 0; - } - return -1; -} - -MPEG_mode -lame_get_mode(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - assert(gfp->mode < MAX_INDICATOR); - return gfp->mode; - } - return NOT_SET; -} - - -#if DEPRECATED_OR_OBSOLETE_CODE_REMOVED -/* - mode_automs. Use a M/S mode with a switching threshold based on - compression ratio - DEPRECATED -*/ -int CDECL lame_set_mode_automs(lame_global_flags *, int); -int CDECL lame_get_mode_automs(const lame_global_flags *); -#else -#endif - -/* Us a M/S mode with a switching threshold based on compression ratio */ -/* DEPRECATED */ -int -lame_set_mode_automs(lame_global_flags * gfp, int mode_automs) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 0 (disabled) */ - - /* enforce disable/enable meaning, if we need more than two values - we need to switch to an enum to have an apropriate representation - of the possible meanings of the value */ - if (0 > mode_automs || 1 < mode_automs) - return -1; - lame_set_mode(gfp, JOINT_STEREO); - return 0; - } - return -1; -} - -int -lame_get_mode_automs(const lame_global_flags * gfp) -{ - (void) gfp; - return 1; -} - - -/* - * Force M/S for all frames. For testing only. - * Requires mode = 1. - */ -int -lame_set_force_ms(lame_global_flags * gfp, int force_ms) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 0 (disabled) */ - - /* enforce disable/enable meaning, if we need more than two values - we need to switch to an enum to have an apropriate representation - of the possible meanings of the value */ - if (0 > force_ms || 1 < force_ms) - return -1; - gfp->force_ms = force_ms; - return 0; - } - return -1; -} - -int -lame_get_force_ms(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - assert(0 <= gfp->force_ms && 1 >= gfp->force_ms); - return gfp->force_ms; - } - return 0; -} - - -/* Use free_format. */ -int -lame_set_free_format(lame_global_flags * gfp, int free_format) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 0 (disabled) */ - - /* enforce disable/enable meaning, if we need more than two values - we need to switch to an enum to have an apropriate representation - of the possible meanings of the value */ - if (0 > free_format || 1 < free_format) - return -1; - gfp->free_format = free_format; - return 0; - } - return -1; -} - -int -lame_get_free_format(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - assert(0 <= gfp->free_format && 1 >= gfp->free_format); - return gfp->free_format; - } - return 0; -} - - - -/* Perform ReplayGain analysis */ -int -lame_set_findReplayGain(lame_global_flags * gfp, int findReplayGain) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 0 (disabled) */ - - /* enforce disable/enable meaning, if we need more than two values - we need to switch to an enum to have an apropriate representation - of the possible meanings of the value */ - if (0 > findReplayGain || 1 < findReplayGain) - return -1; - gfp->findReplayGain = findReplayGain; - return 0; - } - return -1; -} - -int -lame_get_findReplayGain(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - assert(0 <= gfp->findReplayGain && 1 >= gfp->findReplayGain); - return gfp->findReplayGain; - } - return 0; -} - - -/* Decode on the fly. Find the peak sample. If ReplayGain analysis is - enabled then perform it on the decoded data. */ -int -lame_set_decode_on_the_fly(lame_global_flags * gfp, int decode_on_the_fly) -{ - if (is_lame_global_flags_valid(gfp)) { -#ifndef DECODE_ON_THE_FLY - return -1; -#else - /* default = 0 (disabled) */ - - /* enforce disable/enable meaning, if we need more than two values - we need to switch to an enum to have an apropriate representation - of the possible meanings of the value */ - if (0 > decode_on_the_fly || 1 < decode_on_the_fly) - return -1; - - gfp->decode_on_the_fly = decode_on_the_fly; - - return 0; -#endif - } - return -1; -} - -int -lame_get_decode_on_the_fly(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - assert(0 <= gfp->decode_on_the_fly && 1 >= gfp->decode_on_the_fly); - return gfp->decode_on_the_fly; - } - return 0; -} - -#if DEPRECATED_OR_OBSOLETE_CODE_REMOVED -/* DEPRECATED: now does the same as lame_set_findReplayGain() - default = 0 (disabled) */ -int CDECL lame_set_ReplayGain_input(lame_global_flags *, int); -int CDECL lame_get_ReplayGain_input(const lame_global_flags *); - -/* DEPRECATED: now does the same as - lame_set_decode_on_the_fly() && lame_set_findReplayGain() - default = 0 (disabled) */ -int CDECL lame_set_ReplayGain_decode(lame_global_flags *, int); -int CDECL lame_get_ReplayGain_decode(const lame_global_flags *); - -/* DEPRECATED: now does the same as lame_set_decode_on_the_fly() - default = 0 (disabled) */ -int CDECL lame_set_findPeakSample(lame_global_flags *, int); -int CDECL lame_get_findPeakSample(const lame_global_flags *); -#else -#endif - -/* DEPRECATED. same as lame_set_decode_on_the_fly() */ -int -lame_set_findPeakSample(lame_global_flags * gfp, int arg) -{ - return lame_set_decode_on_the_fly(gfp, arg); -} - -int -lame_get_findPeakSample(const lame_global_flags * gfp) -{ - return lame_get_decode_on_the_fly(gfp); -} - -/* DEPRECATED. same as lame_set_findReplayGain() */ -int -lame_set_ReplayGain_input(lame_global_flags * gfp, int arg) -{ - return lame_set_findReplayGain(gfp, arg); -} - -int -lame_get_ReplayGain_input(const lame_global_flags * gfp) -{ - return lame_get_findReplayGain(gfp); -} - -/* DEPRECATED. same as lame_set_decode_on_the_fly() && - lame_set_findReplayGain() */ -int -lame_set_ReplayGain_decode(lame_global_flags * gfp, int arg) -{ - if (lame_set_decode_on_the_fly(gfp, arg) < 0 || lame_set_findReplayGain(gfp, arg) < 0) - return -1; - else - return 0; -} - -int -lame_get_ReplayGain_decode(const lame_global_flags * gfp) -{ - if (lame_get_decode_on_the_fly(gfp) > 0 && lame_get_findReplayGain(gfp) > 0) - return 1; - else - return 0; -} - - -/* set and get some gapless encoding flags */ - -int -lame_set_nogap_total(lame_global_flags * gfp, int the_nogap_total) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->nogap_total = the_nogap_total; - return 0; - } - return -1; -} - -int -lame_get_nogap_total(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->nogap_total; - } - return 0; -} - -int -lame_set_nogap_currentindex(lame_global_flags * gfp, int the_nogap_index) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->nogap_current = the_nogap_index; - return 0; - } - return -1; -} - -int -lame_get_nogap_currentindex(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->nogap_current; - } - return 0; -} - - -/* message handlers */ -int -lame_set_errorf(lame_global_flags * gfp, void (*func) (const char *, va_list)) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->report.errorf = func; - return 0; - } - return -1; -} - -int -lame_set_debugf(lame_global_flags * gfp, void (*func) (const char *, va_list)) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->report.debugf = func; - return 0; - } - return -1; -} - -int -lame_set_msgf(lame_global_flags * gfp, void (*func) (const char *, va_list)) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->report.msgf = func; - return 0; - } - return -1; -} - - -/* - * Set one of - * - brate - * - compression ratio. - * - * Default is compression ratio of 11. - */ -int -lame_set_brate(lame_global_flags * gfp, int brate) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->brate = brate; - if (brate > 320) { - gfp->disable_reservoir = 1; - } - return 0; - } - return -1; -} - -int -lame_get_brate(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->brate; - } - return 0; -} - -int -lame_set_compression_ratio(lame_global_flags * gfp, float compression_ratio) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->compression_ratio = compression_ratio; - return 0; - } - return -1; -} - -float -lame_get_compression_ratio(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->compression_ratio; - } - return 0; -} - - - - -/* - * frame parameters - */ - -/* Mark as copyright protected. */ -int -lame_set_copyright(lame_global_flags * gfp, int copyright) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 0 (disabled) */ - - /* enforce disable/enable meaning, if we need more than two values - we need to switch to an enum to have an apropriate representation - of the possible meanings of the value */ - if (0 > copyright || 1 < copyright) - return -1; - gfp->copyright = copyright; - return 0; - } - return -1; -} - -int -lame_get_copyright(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - assert(0 <= gfp->copyright && 1 >= gfp->copyright); - return gfp->copyright; - } - return 0; -} - - -/* Mark as original. */ -int -lame_set_original(lame_global_flags * gfp, int original) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 1 (enabled) */ - - /* enforce disable/enable meaning, if we need more than two values - we need to switch to an enum to have an apropriate representation - of the possible meanings of the value */ - if (0 > original || 1 < original) - return -1; - gfp->original = original; - return 0; - } - return -1; -} - -int -lame_get_original(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - assert(0 <= gfp->original && 1 >= gfp->original); - return gfp->original; - } - return 0; -} - - -/* - * error_protection. - * Use 2 bytes from each frame for CRC checksum. - */ -int -lame_set_error_protection(lame_global_flags * gfp, int error_protection) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 0 (disabled) */ - - /* enforce disable/enable meaning, if we need more than two values - we need to switch to an enum to have an apropriate representation - of the possible meanings of the value */ - if (0 > error_protection || 1 < error_protection) - return -1; - gfp->error_protection = error_protection; - return 0; - } - return -1; -} - -int -lame_get_error_protection(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - assert(0 <= gfp->error_protection && 1 >= gfp->error_protection); - return gfp->error_protection; - } - return 0; -} - - -#if DEPRECATED_OR_OBSOLETE_CODE_REMOVED -/* padding_type. 0=pad no frames 1=pad all frames 2=adjust padding(default) */ -int CDECL lame_set_padding_type(lame_global_flags *, Padding_type); -Padding_type CDECL lame_get_padding_type(const lame_global_flags *); -#else -#endif - -/* - * padding_type. - * PAD_NO = pad no frames - * PAD_ALL = pad all frames - * PAD_ADJUST = adjust padding - */ -int -lame_set_padding_type(lame_global_flags * gfp, Padding_type padding_type) -{ - (void) gfp; - (void) padding_type; - return 0; -} - -Padding_type -lame_get_padding_type(const lame_global_flags * gfp) -{ - (void) gfp; - return PAD_ADJUST; -} - - -/* MP3 'private extension' bit. Meaningless. */ -int -lame_set_extension(lame_global_flags * gfp, int extension) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 0 (disabled) */ - /* enforce disable/enable meaning, if we need more than two values - we need to switch to an enum to have an apropriate representation - of the possible meanings of the value */ - if (0 > extension || 1 < extension) - return -1; - gfp->extension = extension; - return 0; - } - return -1; -} - -int -lame_get_extension(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - assert(0 <= gfp->extension && 1 >= gfp->extension); - return gfp->extension; - } - return 0; -} - - -/* Enforce strict ISO compliance. */ -int -lame_set_strict_ISO(lame_global_flags * gfp, int val) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 0 (disabled) */ - /* enforce disable/enable meaning, if we need more than two values - we need to switch to an enum to have an apropriate representation - of the possible meanings of the value */ - if (val < MDB_DEFAULT || MDB_MAXIMUM < val) - return -1; - gfp->strict_ISO = val; - return 0; - } - return -1; -} - -int -lame_get_strict_ISO(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->strict_ISO; - } - return 0; -} - - - - -/******************************************************************** - * quantization/noise shaping - ***********************************************************************/ - -/* Disable the bit reservoir. For testing only. */ -int -lame_set_disable_reservoir(lame_global_flags * gfp, int disable_reservoir) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 0 (disabled) */ - - /* enforce disable/enable meaning, if we need more than two values - we need to switch to an enum to have an apropriate representation - of the possible meanings of the value */ - if (0 > disable_reservoir || 1 < disable_reservoir) - return -1; - gfp->disable_reservoir = disable_reservoir; - return 0; - } - return -1; -} - -int -lame_get_disable_reservoir(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - assert(0 <= gfp->disable_reservoir && 1 >= gfp->disable_reservoir); - return gfp->disable_reservoir; - } - return 0; -} - - - - -int -lame_set_experimentalX(lame_global_flags * gfp, int experimentalX) -{ - if (is_lame_global_flags_valid(gfp)) { - lame_set_quant_comp(gfp, experimentalX); - lame_set_quant_comp_short(gfp, experimentalX); - return 0; - } - return -1; -} - -int -lame_get_experimentalX(const lame_global_flags * gfp) -{ - return lame_get_quant_comp(gfp); -} - - -/* Select a different "best quantization" function. default = 0 */ -int -lame_set_quant_comp(lame_global_flags * gfp, int quant_type) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->quant_comp = quant_type; - return 0; - } - return -1; -} - -int -lame_get_quant_comp(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->quant_comp; - } - return 0; -} - - -/* Select a different "best quantization" function. default = 0 */ -int -lame_set_quant_comp_short(lame_global_flags * gfp, int quant_type) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->quant_comp_short = quant_type; - return 0; - } - return -1; -} - -int -lame_get_quant_comp_short(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->quant_comp_short; - } - return 0; -} - - -/* Another experimental option. For testing only. */ -int -lame_set_experimentalY(lame_global_flags * gfp, int experimentalY) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->experimentalY = experimentalY; - return 0; - } - return -1; -} - -int -lame_get_experimentalY(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->experimentalY; - } - return 0; -} - - -int -lame_set_experimentalZ(lame_global_flags * gfp, int experimentalZ) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->experimentalZ = experimentalZ; - return 0; - } - return -1; -} - -int -lame_get_experimentalZ(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->experimentalZ; - } - return 0; -} - - -/* Naoki's psycho acoustic model. */ -int -lame_set_exp_nspsytune(lame_global_flags * gfp, int exp_nspsytune) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 0 (disabled) */ - gfp->exp_nspsytune = exp_nspsytune; - return 0; - } - return -1; -} - -int -lame_get_exp_nspsytune(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->exp_nspsytune; - } - return 0; -} - - - - -/******************************************************************** - * VBR control - ***********************************************************************/ - -/* Types of VBR. default = vbr_off = CBR */ -int -lame_set_VBR(lame_global_flags * gfp, vbr_mode VBR) -{ - if (is_lame_global_flags_valid(gfp)) { - int vbr_q = VBR; - if (0 > vbr_q || vbr_max_indicator <= vbr_q) - return -1; /* Unknown VBR mode! */ - gfp->VBR = VBR; - return 0; - } - return -1; -} - -vbr_mode -lame_get_VBR(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - assert(gfp->VBR < vbr_max_indicator); - return gfp->VBR; - } - return vbr_off; -} - - -/* - * VBR quality level. - * 0 = highest - * 9 = lowest - */ -int -lame_set_VBR_q(lame_global_flags * gfp, int VBR_q) -{ - if (is_lame_global_flags_valid(gfp)) { - int ret = 0; - - if (0 > VBR_q) { - ret = -1; /* Unknown VBR quality level! */ - VBR_q = 0; - } - if (9 < VBR_q) { - ret = -1; - VBR_q = 9; - } - gfp->VBR_q = VBR_q; - gfp->VBR_q_frac = 0; - return ret; - } - return -1; -} - -int -lame_get_VBR_q(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - assert(0 <= gfp->VBR_q && 10 > gfp->VBR_q); - return gfp->VBR_q; - } - return 0; -} - -int -lame_set_VBR_quality(lame_global_flags * gfp, float VBR_q) -{ - if (is_lame_global_flags_valid(gfp)) { - int ret = 0; - - if (0 > VBR_q) { - ret = -1; /* Unknown VBR quality level! */ - VBR_q = 0; - } - if (9.999 < VBR_q) { - ret = -1; - VBR_q = 9.999; - } - - gfp->VBR_q = (int) VBR_q; - gfp->VBR_q_frac = VBR_q - gfp->VBR_q; - - return ret; - } - return -1; -} - -float -lame_get_VBR_quality(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->VBR_q + gfp->VBR_q_frac; - } - return 0; -} - - -/* Ignored except for VBR = vbr_abr (ABR mode) */ -int -lame_set_VBR_mean_bitrate_kbps(lame_global_flags * gfp, int VBR_mean_bitrate_kbps) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->VBR_mean_bitrate_kbps = VBR_mean_bitrate_kbps; - return 0; - } - return -1; -} - -int -lame_get_VBR_mean_bitrate_kbps(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->VBR_mean_bitrate_kbps; - } - return 0; -} - -int -lame_set_VBR_min_bitrate_kbps(lame_global_flags * gfp, int VBR_min_bitrate_kbps) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->VBR_min_bitrate_kbps = VBR_min_bitrate_kbps; - return 0; - } - return -1; -} - -int -lame_get_VBR_min_bitrate_kbps(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->VBR_min_bitrate_kbps; - } - return 0; -} - -int -lame_set_VBR_max_bitrate_kbps(lame_global_flags * gfp, int VBR_max_bitrate_kbps) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->VBR_max_bitrate_kbps = VBR_max_bitrate_kbps; - return 0; - } - return -1; -} - -int -lame_get_VBR_max_bitrate_kbps(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->VBR_max_bitrate_kbps; - } - return 0; -} - - -/* - * Strictly enforce VBR_min_bitrate. - * Normally it will be violated for analog silence. - */ -int -lame_set_VBR_hard_min(lame_global_flags * gfp, int VBR_hard_min) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 0 (disabled) */ - - /* enforce disable/enable meaning, if we need more than two values - we need to switch to an enum to have an apropriate representation - of the possible meanings of the value */ - if (0 > VBR_hard_min || 1 < VBR_hard_min) - return -1; - - gfp->VBR_hard_min = VBR_hard_min; - - return 0; - } - return -1; -} - -int -lame_get_VBR_hard_min(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - assert(0 <= gfp->VBR_hard_min && 1 >= gfp->VBR_hard_min); - return gfp->VBR_hard_min; - } - return 0; -} - - -/******************************************************************** - * Filtering control - ***********************************************************************/ - -/* - * Freqency in Hz to apply lowpass. - * 0 = default = lame chooses - * -1 = disabled - */ -int -lame_set_lowpassfreq(lame_global_flags * gfp, int lowpassfreq) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->lowpassfreq = lowpassfreq; - return 0; - } - return -1; -} - -int -lame_get_lowpassfreq(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->lowpassfreq; - } - return 0; -} - - -/* - * Width of transition band (in Hz). - * default = one polyphase filter band - */ -int -lame_set_lowpasswidth(lame_global_flags * gfp, int lowpasswidth) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->lowpasswidth = lowpasswidth; - return 0; - } - return -1; -} - -int -lame_get_lowpasswidth(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->lowpasswidth; - } - return 0; -} - - -/* - * Frequency in Hz to apply highpass. - * 0 = default = lame chooses - * -1 = disabled - */ -int -lame_set_highpassfreq(lame_global_flags * gfp, int highpassfreq) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->highpassfreq = highpassfreq; - return 0; - } - return -1; -} - -int -lame_get_highpassfreq(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->highpassfreq; - } - return 0; -} - - -/* - * Width of transition band (in Hz). - * default = one polyphase filter band - */ -int -lame_set_highpasswidth(lame_global_flags * gfp, int highpasswidth) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->highpasswidth = highpasswidth; - return 0; - } - return -1; -} - -int -lame_get_highpasswidth(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->highpasswidth; - } - return 0; -} - - - - -/* - * psycho acoustics and other arguments which you should not change - * unless you know what you are doing - */ - - -/* Adjust masking values. */ -int -lame_set_maskingadjust(lame_global_flags * gfp, float adjust) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->maskingadjust = adjust; - return 0; - } - return -1; -} - -float -lame_get_maskingadjust(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->maskingadjust; - } - return 0; -} - -int -lame_set_maskingadjust_short(lame_global_flags * gfp, float adjust) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->maskingadjust_short = adjust; - return 0; - } - return -1; -} - -float -lame_get_maskingadjust_short(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->maskingadjust_short; - } - return 0; -} - -/* Only use ATH for masking. */ -int -lame_set_ATHonly(lame_global_flags * gfp, int ATHonly) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->ATHonly = ATHonly; - return 0; - } - return -1; -} - -int -lame_get_ATHonly(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->ATHonly; - } - return 0; -} - - -/* Only use ATH for short blocks. */ -int -lame_set_ATHshort(lame_global_flags * gfp, int ATHshort) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->ATHshort = ATHshort; - return 0; - } - return -1; -} - -int -lame_get_ATHshort(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->ATHshort; - } - return 0; -} - - -/* Disable ATH. */ -int -lame_set_noATH(lame_global_flags * gfp, int noATH) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->noATH = noATH; - return 0; - } - return -1; -} - -int -lame_get_noATH(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->noATH; - } - return 0; -} - - -/* Select ATH formula. */ -int -lame_set_ATHtype(lame_global_flags * gfp, int ATHtype) -{ - if (is_lame_global_flags_valid(gfp)) { - /* XXX: ATHtype should be converted to an enum. */ - gfp->ATHtype = ATHtype; - return 0; - } - return -1; -} - -int -lame_get_ATHtype(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->ATHtype; - } - return 0; -} - - -/* Select ATH formula 4 shape. */ -int -lame_set_ATHcurve(lame_global_flags * gfp, float ATHcurve) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->ATHcurve = ATHcurve; - return 0; - } - return -1; -} - -float -lame_get_ATHcurve(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->ATHcurve; - } - return 0; -} - - -/* Lower ATH by this many db. */ -int -lame_set_ATHlower(lame_global_flags * gfp, float ATHlower) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->ATH_lower_db = ATHlower; - return 0; - } - return -1; -} - -float -lame_get_ATHlower(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->ATH_lower_db; - } - return 0; -} - - -/* Select ATH adaptive adjustment scheme. */ -int -lame_set_athaa_type(lame_global_flags * gfp, int athaa_type) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->athaa_type = athaa_type; - return 0; - } - return -1; -} - -int -lame_get_athaa_type(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->athaa_type; - } - return 0; -} - - -#if DEPRECATED_OR_OBSOLETE_CODE_REMOVED -int CDECL lame_set_athaa_loudapprox(lame_global_flags * gfp, int athaa_loudapprox); -int CDECL lame_get_athaa_loudapprox(const lame_global_flags * gfp); -#else -#endif - -/* Select the loudness approximation used by the ATH adaptive auto-leveling. */ -int -lame_set_athaa_loudapprox(lame_global_flags * gfp, int athaa_loudapprox) -{ - (void) gfp; - (void) athaa_loudapprox; - return 0; -} - -int -lame_get_athaa_loudapprox(const lame_global_flags * gfp) -{ - (void) gfp; - /* obsolete, the type known under number 2 is the only survival */ - return 2; -} - - -/* Adjust (in dB) the point below which adaptive ATH level adjustment occurs. */ -int -lame_set_athaa_sensitivity(lame_global_flags * gfp, float athaa_sensitivity) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->athaa_sensitivity = athaa_sensitivity; - return 0; - } - return -1; -} - -float -lame_get_athaa_sensitivity(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->athaa_sensitivity; - } - return 0; -} - - -/* Predictability limit (ISO tonality formula) */ -int lame_set_cwlimit(lame_global_flags * gfp, int cwlimit); -int lame_get_cwlimit(const lame_global_flags * gfp); - -int -lame_set_cwlimit(lame_global_flags * gfp, int cwlimit) -{ - (void) gfp; - (void) cwlimit; - return 0; -} - -int -lame_get_cwlimit(const lame_global_flags * gfp) -{ - (void) gfp; - return 0; -} - - - -/* - * Allow blocktypes to differ between channels. - * default: - * 0 for jstereo => block types coupled - * 1 for stereo => block types may differ - */ -int -lame_set_allow_diff_short(lame_global_flags * gfp, int allow_diff_short) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->short_blocks = allow_diff_short ? short_block_allowed : short_block_coupled; - return 0; - } - return -1; -} - -int -lame_get_allow_diff_short(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - if (gfp->short_blocks == short_block_allowed) - return 1; /* short blocks allowed to differ */ - else - return 0; /* not set, dispensed, forced or coupled */ - } - return 0; -} - - -/* Use temporal masking effect */ -int -lame_set_useTemporal(lame_global_flags * gfp, int useTemporal) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 1 (enabled) */ - - /* enforce disable/enable meaning, if we need more than two values - we need to switch to an enum to have an apropriate representation - of the possible meanings of the value */ - if (0 <= useTemporal && useTemporal <= 1) { - gfp->useTemporal = useTemporal; - return 0; - } - } - return -1; -} - -int -lame_get_useTemporal(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - assert(0 <= gfp->useTemporal && 1 >= gfp->useTemporal); - return gfp->useTemporal; - } - return 0; -} - - -/* Use inter-channel masking effect */ -int -lame_set_interChRatio(lame_global_flags * gfp, float ratio) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 0.0 (no inter-channel maskin) */ - if (0 <= ratio && ratio <= 1.0) { - gfp->interChRatio = ratio; - return 0; - } - } - return -1; -} - -float -lame_get_interChRatio(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - assert((0 <= gfp->interChRatio && gfp->interChRatio <= 1.0) || EQ(gfp->interChRatio, -1)); - return gfp->interChRatio; - } - return 0; -} - - -/* Use pseudo substep shaping method */ -int -lame_set_substep(lame_global_flags * gfp, int method) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 0.0 (no substep noise shaping) */ - if (0 <= method && method <= 7) { - gfp->substep_shaping = method; - return 0; - } - } - return -1; -} - -int -lame_get_substep(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - assert(0 <= gfp->substep_shaping && gfp->substep_shaping <= 7); - return gfp->substep_shaping; - } - return 0; -} - -/* scalefactors scale */ -int -lame_set_sfscale(lame_global_flags * gfp, int val) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->noise_shaping = (val != 0) ? 2 : 1; - return 0; - } - return -1; -} - -int -lame_get_sfscale(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return (gfp->noise_shaping == 2) ? 1 : 0; - } - return 0; -} - -/* subblock gain */ -int -lame_set_subblock_gain(lame_global_flags * gfp, int sbgain) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->subblock_gain = sbgain; - return 0; - } - return -1; -} - -int -lame_get_subblock_gain(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->subblock_gain; - } - return 0; -} - - -/* Disable short blocks. */ -int -lame_set_no_short_blocks(lame_global_flags * gfp, int no_short_blocks) -{ - if (is_lame_global_flags_valid(gfp)) { - /* enforce disable/enable meaning, if we need more than two values - we need to switch to an enum to have an apropriate representation - of the possible meanings of the value */ - if (0 <= no_short_blocks && no_short_blocks <= 1) { - gfp->short_blocks = no_short_blocks ? short_block_dispensed : short_block_allowed; - return 0; - } - } - return -1; -} - -int -lame_get_no_short_blocks(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - switch (gfp->short_blocks) { - default: - case short_block_not_set: - return -1; - case short_block_dispensed: - return 1; - case short_block_allowed: - case short_block_coupled: - case short_block_forced: - return 0; - } - } - return -1; -} - - -/* Force short blocks. */ -int -lame_set_force_short_blocks(lame_global_flags * gfp, int short_blocks) -{ - if (is_lame_global_flags_valid(gfp)) { - /* enforce disable/enable meaning, if we need more than two values - we need to switch to an enum to have an apropriate representation - of the possible meanings of the value */ - if (0 > short_blocks || 1 < short_blocks) - return -1; - - if (short_blocks == 1) - gfp->short_blocks = short_block_forced; - else if (gfp->short_blocks == short_block_forced) - gfp->short_blocks = short_block_allowed; - - return 0; - } - return -1; -} - -int -lame_get_force_short_blocks(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - switch (gfp->short_blocks) { - default: - case short_block_not_set: - return -1; - case short_block_dispensed: - case short_block_allowed: - case short_block_coupled: - return 0; - case short_block_forced: - return 1; - } - } - return -1; -} - -int -lame_set_short_threshold_lrm(lame_global_flags * gfp, float lrm) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->attackthre = lrm; - return 0; - } - return -1; -} - -float -lame_get_short_threshold_lrm(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->attackthre; - } - return 0; -} - -int -lame_set_short_threshold_s(lame_global_flags * gfp, float s) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->attackthre_s = s; - return 0; - } - return -1; -} - -float -lame_get_short_threshold_s(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->attackthre_s; - } - return 0; -} - -int -lame_set_short_threshold(lame_global_flags * gfp, float lrm, float s) -{ - if (is_lame_global_flags_valid(gfp)) { - lame_set_short_threshold_lrm(gfp, lrm); - lame_set_short_threshold_s(gfp, s); - return 0; - } - return -1; -} - - -/* - * Input PCM is emphased PCM - * (for instance from one of the rarely emphased CDs). - * - * It is STRONGLY not recommended to use this, because psycho does not - * take it into account, and last but not least many decoders - * ignore these bits - */ -int -lame_set_emphasis(lame_global_flags * gfp, int emphasis) -{ - if (is_lame_global_flags_valid(gfp)) { - /* XXX: emphasis should be converted to an enum */ - if (0 <= emphasis && emphasis < 4) { - gfp->emphasis = emphasis; - return 0; - } - } - return -1; -} - -int -lame_get_emphasis(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - assert(0 <= gfp->emphasis && gfp->emphasis < 4); - return gfp->emphasis; - } - return 0; -} - - - - -/***************************************************************/ -/* internal variables, cannot be set... */ -/* provided because they may be of use to calling application */ -/***************************************************************/ - -/* MPEG version. - * 0 = MPEG-2 - * 1 = MPEG-1 - * (2 = MPEG-2.5) - */ -int -lame_get_version(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - lame_internal_flags const *const gfc = gfp->internal_flags; - if (is_lame_internal_flags_valid(gfc)) { - return gfc->cfg.version; - } - } - return 0; -} - - -/* Encoder delay. */ -int -lame_get_encoder_delay(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - lame_internal_flags const *const gfc = gfp->internal_flags; - if (is_lame_internal_flags_valid(gfc)) { - return gfc->ov_enc.encoder_delay; - } - } - return 0; -} - -/* padding added to the end of the input */ -int -lame_get_encoder_padding(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - lame_internal_flags const *const gfc = gfp->internal_flags; - if (is_lame_internal_flags_valid(gfc)) { - return gfc->ov_enc.encoder_padding; - } - } - return 0; -} - - -/* Size of MPEG frame. */ -int -lame_get_framesize(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - lame_internal_flags const *const gfc = gfp->internal_flags; - if (is_lame_internal_flags_valid(gfc)) { - SessionConfig_t const *const cfg = &gfc->cfg; - return 576 * cfg->mode_gr; - } - } - return 0; -} - - -/* Number of frames encoded so far. */ -int -lame_get_frameNum(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - lame_internal_flags const *const gfc = gfp->internal_flags; - if (is_lame_internal_flags_valid(gfc)) { - return gfc->ov_enc.frame_number; - } - } - return 0; -} - -int -lame_get_mf_samples_to_encode(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - lame_internal_flags const *const gfc = gfp->internal_flags; - if (is_lame_internal_flags_valid(gfc)) { - return gfc->sv_enc.mf_samples_to_encode; - } - } - return 0; -} - -int CDECL -lame_get_size_mp3buffer(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - lame_internal_flags const *const gfc = gfp->internal_flags; - if (is_lame_internal_flags_valid(gfc)) { - int size; - compute_flushbits(gfc, &size); - return size; - } - } - return 0; -} - -int -lame_get_RadioGain(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - lame_internal_flags const *const gfc = gfp->internal_flags; - if (is_lame_internal_flags_valid(gfc)) { - return gfc->ov_rpg.RadioGain; - } - } - return 0; -} - -int -lame_get_AudiophileGain(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - lame_internal_flags const *const gfc = gfp->internal_flags; - if (is_lame_internal_flags_valid(gfc)) { - return 0; - } - } - return 0; -} - -float -lame_get_PeakSample(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - lame_internal_flags const *const gfc = gfp->internal_flags; - if (is_lame_internal_flags_valid(gfc)) { - return (float) gfc->ov_rpg.PeakSample; - } - } - return 0; -} - -int -lame_get_noclipGainChange(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - lame_internal_flags const *const gfc = gfp->internal_flags; - if (is_lame_internal_flags_valid(gfc)) { - return gfc->ov_rpg.noclipGainChange; - } - } - return 0; -} - -float -lame_get_noclipScale(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - lame_internal_flags const *const gfc = gfp->internal_flags; - if (is_lame_internal_flags_valid(gfc)) { - return gfc->ov_rpg.noclipScale; - } - } - return 0; -} - - -/* - * LAME's estimate of the total number of frames to be encoded. - * Only valid if calling program set num_samples. - */ -int -lame_get_totalframes(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - lame_internal_flags const *const gfc = gfp->internal_flags; - if (is_lame_internal_flags_valid(gfc)) { - SessionConfig_t const *const cfg = &gfc->cfg; - unsigned long const pcm_samples_per_frame = 576 * cfg->mode_gr; - unsigned long pcm_samples_to_encode = gfp->num_samples; - unsigned long end_padding = 0; - - /* estimate based on user set num_samples: */ - if (pcm_samples_to_encode == (0ul-1ul)) { - return 0; - } - if (gfp->samplerate_in != gfp->samplerate_out && gfp->samplerate_in > 0) { - double const q = (double)gfp->samplerate_out / gfp->samplerate_in; - pcm_samples_to_encode *= q; - } - pcm_samples_to_encode += 576; - end_padding = pcm_samples_per_frame - (pcm_samples_to_encode % pcm_samples_per_frame); - if (end_padding < 576) { - end_padding += pcm_samples_per_frame; - } - pcm_samples_to_encode += end_padding; - /* check to see if we underestimated totalframes */ - /* if (totalframes < gfp->frameNum) */ - /* totalframes = gfp->frameNum; */ - return pcm_samples_to_encode / pcm_samples_per_frame; - } - } - return 0; -} - - - - - -int -lame_set_preset(lame_global_flags * gfp, int preset) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->preset = preset; - return apply_preset(gfp, preset, 1); - } - return -1; -} - - - -int -lame_set_asm_optimizations(lame_global_flags * gfp, int optim, int mode) -{ - if (is_lame_global_flags_valid(gfp)) { - mode = (mode == 1 ? 1 : 0); - switch (optim) { - case MMX:{ - gfp->asm_optimizations.mmx = mode; - return optim; - } - case AMD_3DNOW:{ - gfp->asm_optimizations.amd3dnow = mode; - return optim; - } - case SSE:{ - gfp->asm_optimizations.sse = mode; - return optim; - } - default: - return optim; - } - } - return -1; -} - - -void -lame_set_write_id3tag_automatic(lame_global_flags * gfp, int v) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->write_id3tag_automatic = v; - } -} - - -int -lame_get_write_id3tag_automatic(lame_global_flags const *gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->write_id3tag_automatic; - } - return 1; -} - - -/* - -UNDOCUMENTED, experimental settings. These routines are not prototyped -in lame.h. You should not use them, they are experimental and may -change. - -*/ - - -/* - * just another daily changing developer switch - */ -void CDECL lame_set_tune(lame_global_flags *, float); - -void -lame_set_tune(lame_global_flags * gfp, float val) -{ - if (is_lame_global_flags_valid(gfp)) { - gfp->tune_value_a = val; - gfp->tune = 1; - } -} - -/* Custom msfix hack */ -void -lame_set_msfix(lame_global_flags * gfp, double msfix) -{ - if (is_lame_global_flags_valid(gfp)) { - /* default = 0 */ - gfp->msfix = msfix; - } -} - -float -lame_get_msfix(const lame_global_flags * gfp) -{ - if (is_lame_global_flags_valid(gfp)) { - return gfp->msfix; - } - return 0; -} - -#if DEPRECATED_OR_OBSOLETE_CODE_REMOVED -int CDECL lame_set_preset_expopts(lame_global_flags *, int); -#else -#endif - -int -lame_set_preset_expopts(lame_global_flags * gfp, int preset_expopts) -{ - (void) gfp; - (void) preset_expopts; - return 0; -} - - -int -lame_set_preset_notune(lame_global_flags * gfp, int preset_notune) -{ - (void) gfp; - (void) preset_notune; - return 0; -} diff --git a/platform/win32/msvc/external/lame/libmp3lame/set_get.h b/platform/win32/msvc/external/lame/libmp3lame/set_get.h deleted file mode 100644 index 37e4bcdbe3e..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/set_get.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * set_get.h -- Internal set/get definitions - * - * Copyright (C) 2003 Gabriel Bouvigne / Lame project - * - * 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 __SET_GET_H__ -#define __SET_GET_H__ - -#include <lame.h> - -#if defined(__cplusplus) -extern "C" { -#endif - -/* select psychoacoustic model */ - -/* manage short blocks */ - int CDECL lame_set_short_threshold(lame_global_flags *, float, float); - int CDECL lame_set_short_threshold_lrm(lame_global_flags *, float); - float CDECL lame_get_short_threshold_lrm(const lame_global_flags *); - int CDECL lame_set_short_threshold_s(lame_global_flags *, float); - float CDECL lame_get_short_threshold_s(const lame_global_flags *); - - - int CDECL lame_set_maskingadjust(lame_global_flags *, float); - float CDECL lame_get_maskingadjust(const lame_global_flags *); - - int CDECL lame_set_maskingadjust_short(lame_global_flags *, float); - float CDECL lame_get_maskingadjust_short(const lame_global_flags *); - -/* select ATH formula 4 shape */ - int CDECL lame_set_ATHcurve(lame_global_flags *, float); - float CDECL lame_get_ATHcurve(const lame_global_flags *); - - int CDECL lame_set_preset_notune(lame_global_flags *, int); - -/* substep shaping method */ - int CDECL lame_set_substep(lame_global_flags *, int); - int CDECL lame_get_substep(const lame_global_flags *); - -/* scalefactors scale */ - int CDECL lame_set_sfscale(lame_global_flags *, int); - int CDECL lame_get_sfscale(const lame_global_flags *); - -/* subblock gain */ - int CDECL lame_set_subblock_gain(lame_global_flags *, int); - int CDECL lame_get_subblock_gain(const lame_global_flags *); - - - -/*presets*/ - int apply_preset(lame_global_flags *, int preset, int enforce); - - void CDECL lame_set_tune(lame_t, float); /* FOR INTERNAL USE ONLY */ - void CDECL lame_set_msfix(lame_t gfp, double msfix); - - -#if defined(__cplusplus) -} -#endif -#endif diff --git a/platform/win32/msvc/external/lame/libmp3lame/tables.c b/platform/win32/msvc/external/lame/libmp3lame/tables.c deleted file mode 100644 index a0230999f2f..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/tables.c +++ /dev/null @@ -1,564 +0,0 @@ -/* - * MPEG layer 3 tables source file - * - * Copyright (c) 1999 Albert L Faber - * - * 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. - */ - -/* $Id: tables.c,v 1.29 2011/05/07 16:05:17 rbrito Exp $ */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "machine.h" - -#include "lame.h" -#include "tables.h" - - -static const uint16_t t1HB[] = { - 1, 1, - 1, 0 -}; - -static const uint16_t t2HB[] = { - 1, 2, 1, - 3, 1, 1, - 3, 2, 0 -}; - -static const uint16_t t3HB[] = { - 3, 2, 1, - 1, 1, 1, - 3, 2, 0 -}; - -static const uint16_t t5HB[] = { - 1, 2, 6, 5, - 3, 1, 4, 4, - 7, 5, 7, 1, - 6, 1, 1, 0 -}; - -static const uint16_t t6HB[] = { - 7, 3, 5, 1, - 6, 2, 3, 2, - 5, 4, 4, 1, - 3, 3, 2, 0 -}; - -static const uint16_t t7HB[] = { - 1, 2, 10, 19, 16, 10, - 3, 3, 7, 10, 5, 3, - 11, 4, 13, 17, 8, 4, - 12, 11, 18, 15, 11, 2, - 7, 6, 9, 14, 3, 1, - 6, 4, 5, 3, 2, 0 -}; - -static const uint16_t t8HB[] = { - 3, 4, 6, 18, 12, 5, - 5, 1, 2, 16, 9, 3, - 7, 3, 5, 14, 7, 3, - 19, 17, 15, 13, 10, 4, - 13, 5, 8, 11, 5, 1, - 12, 4, 4, 1, 1, 0 -}; - -static const uint16_t t9HB[] = { - 7, 5, 9, 14, 15, 7, - 6, 4, 5, 5, 6, 7, - 7, 6, 8, 8, 8, 5, - 15, 6, 9, 10, 5, 1, - 11, 7, 9, 6, 4, 1, - 14, 4, 6, 2, 6, 0 -}; - -static const uint16_t t10HB[] = { - 1, 2, 10, 23, 35, 30, 12, 17, - 3, 3, 8, 12, 18, 21, 12, 7, - 11, 9, 15, 21, 32, 40, 19, 6, - 14, 13, 22, 34, 46, 23, 18, 7, - 20, 19, 33, 47, 27, 22, 9, 3, - 31, 22, 41, 26, 21, 20, 5, 3, - 14, 13, 10, 11, 16, 6, 5, 1, - 9, 8, 7, 8, 4, 4, 2, 0 -}; - -static const uint16_t t11HB[] = { - 3, 4, 10, 24, 34, 33, 21, 15, - 5, 3, 4, 10, 32, 17, 11, 10, - 11, 7, 13, 18, 30, 31, 20, 5, - 25, 11, 19, 59, 27, 18, 12, 5, - 35, 33, 31, 58, 30, 16, 7, 5, - 28, 26, 32, 19, 17, 15, 8, 14, - 14, 12, 9, 13, 14, 9, 4, 1, - 11, 4, 6, 6, 6, 3, 2, 0 -}; - -static const uint16_t t12HB[] = { - 9, 6, 16, 33, 41, 39, 38, 26, - 7, 5, 6, 9, 23, 16, 26, 11, - 17, 7, 11, 14, 21, 30, 10, 7, - 17, 10, 15, 12, 18, 28, 14, 5, - 32, 13, 22, 19, 18, 16, 9, 5, - 40, 17, 31, 29, 17, 13, 4, 2, - 27, 12, 11, 15, 10, 7, 4, 1, - 27, 12, 8, 12, 6, 3, 1, 0 -}; - -static const uint16_t t13HB[] = { - 1, 5, 14, 21, 34, 51, 46, 71, 42, 52, 68, 52, 67, 44, 43, 19, - 3, 4, 12, 19, 31, 26, 44, 33, 31, 24, 32, 24, 31, 35, 22, 14, - 15, 13, 23, 36, 59, 49, 77, 65, 29, 40, 30, 40, 27, 33, 42, 16, - 22, 20, 37, 61, 56, 79, 73, 64, 43, 76, 56, 37, 26, 31, 25, 14, - 35, 16, 60, 57, 97, 75, 114, 91, 54, 73, 55, 41, 48, 53, 23, 24, - 58, 27, 50, 96, 76, 70, 93, 84, 77, 58, 79, 29, 74, 49, 41, 17, - 47, 45, 78, 74, 115, 94, 90, 79, 69, 83, 71, 50, 59, 38, 36, 15, - 72, 34, 56, 95, 92, 85, 91, 90, 86, 73, 77, 65, 51, 44, 43, 42, - 43, 20, 30, 44, 55, 78, 72, 87, 78, 61, 46, 54, 37, 30, 20, 16, - 53, 25, 41, 37, 44, 59, 54, 81, 66, 76, 57, 54, 37, 18, 39, 11, - 35, 33, 31, 57, 42, 82, 72, 80, 47, 58, 55, 21, 22, 26, 38, 22, - 53, 25, 23, 38, 70, 60, 51, 36, 55, 26, 34, 23, 27, 14, 9, 7, - 34, 32, 28, 39, 49, 75, 30, 52, 48, 40, 52, 28, 18, 17, 9, 5, - 45, 21, 34, 64, 56, 50, 49, 45, 31, 19, 12, 15, 10, 7, 6, 3, - 48, 23, 20, 39, 36, 35, 53, 21, 16, 23, 13, 10, 6, 1, 4, 2, - 16, 15, 17, 27, 25, 20, 29, 11, 17, 12, 16, 8, 1, 1, 0, 1 -}; - -static const uint16_t t15HB[] = { - 7, 12, 18, 53, 47, 76, 124, 108, 89, 123, 108, 119, 107, 81, 122, 63, - 13, 5, 16, 27, 46, 36, 61, 51, 42, 70, 52, 83, 65, 41, 59, 36, - 19, 17, 15, 24, 41, 34, 59, 48, 40, 64, 50, 78, 62, 80, 56, 33, - 29, 28, 25, 43, 39, 63, 55, 93, 76, 59, 93, 72, 54, 75, 50, 29, - 52, 22, 42, 40, 67, 57, 95, 79, 72, 57, 89, 69, 49, 66, 46, 27, - 77, 37, 35, 66, 58, 52, 91, 74, 62, 48, 79, 63, 90, 62, 40, 38, - 125, 32, 60, 56, 50, 92, 78, 65, 55, 87, 71, 51, 73, 51, 70, 30, - 109, 53, 49, 94, 88, 75, 66, 122, 91, 73, 56, 42, 64, 44, 21, 25, - 90, 43, 41, 77, 73, 63, 56, 92, 77, 66, 47, 67, 48, 53, 36, 20, - 71, 34, 67, 60, 58, 49, 88, 76, 67, 106, 71, 54, 38, 39, 23, 15, - 109, 53, 51, 47, 90, 82, 58, 57, 48, 72, 57, 41, 23, 27, 62, 9, - 86, 42, 40, 37, 70, 64, 52, 43, 70, 55, 42, 25, 29, 18, 11, 11, - 118, 68, 30, 55, 50, 46, 74, 65, 49, 39, 24, 16, 22, 13, 14, 7, - 91, 44, 39, 38, 34, 63, 52, 45, 31, 52, 28, 19, 14, 8, 9, 3, - 123, 60, 58, 53, 47, 43, 32, 22, 37, 24, 17, 12, 15, 10, 2, 1, - 71, 37, 34, 30, 28, 20, 17, 26, 21, 16, 10, 6, 8, 6, 2, 0 -}; - -static const uint16_t t16HB[] = { - 1, 5, 14, 44, 74, 63, 110, 93, 172, 149, 138, 242, 225, 195, 376, 17, - 3, 4, 12, 20, 35, 62, 53, 47, 83, 75, 68, 119, 201, 107, 207, 9, - 15, 13, 23, 38, 67, 58, 103, 90, 161, 72, 127, 117, 110, 209, 206, 16, - 45, 21, 39, 69, 64, 114, 99, 87, 158, 140, 252, 212, 199, 387, 365, 26, - 75, 36, 68, 65, 115, 101, 179, 164, 155, 264, 246, 226, 395, 382, 362, 9, - 66, 30, 59, 56, 102, 185, 173, 265, 142, 253, 232, 400, 388, 378, 445, 16, - 111, 54, 52, 100, 184, 178, 160, 133, 257, 244, 228, 217, 385, 366, 715, 10, - 98, 48, 91, 88, 165, 157, 148, 261, 248, 407, 397, 372, 380, 889, 884, 8, - 85, 84, 81, 159, 156, 143, 260, 249, 427, 401, 392, 383, 727, 713, 708, 7, - 154, 76, 73, 141, 131, 256, 245, 426, 406, 394, 384, 735, 359, 710, 352, 11, - 139, 129, 67, 125, 247, 233, 229, 219, 393, 743, 737, 720, 885, 882, 439, 4, - 243, 120, 118, 115, 227, 223, 396, 746, 742, 736, 721, 712, 706, 223, 436, 6, - 202, 224, 222, 218, 216, 389, 386, 381, 364, 888, 443, 707, 440, 437, 1728, 4, - 747, 211, 210, 208, 370, 379, 734, 723, 714, 1735, 883, 877, 876, 3459, 865, 2, - 377, 369, 102, 187, 726, 722, 358, 711, 709, 866, 1734, 871, 3458, 870, 434, 0, - 12, 10, 7, 11, 10, 17, 11, 9, 13, 12, 10, 7, 5, 3, 1, 3 -}; - -static const uint16_t t24HB[] = { - 15, 13, 46, 80, 146, 262, 248, 434, 426, 669, 653, 649, 621, 517, 1032, 88, - 14, 12, 21, 38, 71, 130, 122, 216, 209, 198, 327, 345, 319, 297, 279, 42, - 47, 22, 41, 74, 68, 128, 120, 221, 207, 194, 182, 340, 315, 295, 541, 18, - 81, 39, 75, 70, 134, 125, 116, 220, 204, 190, 178, 325, 311, 293, 271, 16, - 147, 72, 69, 135, 127, 118, 112, 210, 200, 188, 352, 323, 306, 285, 540, 14, - 263, 66, 129, 126, 119, 114, 214, 202, 192, 180, 341, 317, 301, 281, 262, 12, - 249, 123, 121, 117, 113, 215, 206, 195, 185, 347, 330, 308, 291, 272, 520, 10, - 435, 115, 111, 109, 211, 203, 196, 187, 353, 332, 313, 298, 283, 531, 381, 17, - 427, 212, 208, 205, 201, 193, 186, 177, 169, 320, 303, 286, 268, 514, 377, 16, - 335, 199, 197, 191, 189, 181, 174, 333, 321, 305, 289, 275, 521, 379, 371, 11, - 668, 184, 183, 179, 175, 344, 331, 314, 304, 290, 277, 530, 383, 373, 366, 10, - 652, 346, 171, 168, 164, 318, 309, 299, 287, 276, 263, 513, 375, 368, 362, 6, - 648, 322, 316, 312, 307, 302, 292, 284, 269, 261, 512, 376, 370, 364, 359, 4, - 620, 300, 296, 294, 288, 282, 273, 266, 515, 380, 374, 369, 365, 361, 357, 2, - 1033, 280, 278, 274, 267, 264, 259, 382, 378, 372, 367, 363, 360, 358, 356, 0, - 43, 20, 19, 17, 15, 13, 11, 9, 7, 6, 4, 7, 5, 3, 1, 3 -}; - -static const uint16_t t32HB[] = { - 1 << 0, 5 << 1, 4 << 1, 5 << 2, 6 << 1, 5 << 2, 4 << 2, 4 << 3, - 7 << 1, 3 << 2, 6 << 2, 0 << 3, 7 << 2, 2 << 3, 3 << 3, 1 << 4 -}; - -static const uint16_t t33HB[] = { - 15 << 0, 14 << 1, 13 << 1, 12 << 2, 11 << 1, 10 << 2, 9 << 2, 8 << 3, - 7 << 1, 6 << 2, 5 << 2, 4 << 3, 3 << 2, 2 << 3, 1 << 3, 0 << 4 -}; - - -const uint8_t t1l[] = { - 1, 4, - 3, 5 -}; - -static const uint8_t t2l[] = { - 1, 4, 7, - 4, 5, 7, - 6, 7, 8 -}; - -static const uint8_t t3l[] = { - 2, 3, 7, - 4, 4, 7, - 6, 7, 8 -}; - -static const uint8_t t5l[] = { - 1, 4, 7, 8, - 4, 5, 8, 9, - 7, 8, 9, 10, - 8, 8, 9, 10 -}; - -static const uint8_t t6l[] = { - 3, 4, 6, 8, - 4, 4, 6, 7, - 5, 6, 7, 8, - 7, 7, 8, 9 -}; - -static const uint8_t t7l[] = { - 1, 4, 7, 9, 9, 10, - 4, 6, 8, 9, 9, 10, - 7, 7, 9, 10, 10, 11, - 8, 9, 10, 11, 11, 11, - 8, 9, 10, 11, 11, 12, - 9, 10, 11, 12, 12, 12 -}; - -static const uint8_t t8l[] = { - 2, 4, 7, 9, 9, 10, - 4, 4, 6, 10, 10, 10, - 7, 6, 8, 10, 10, 11, - 9, 10, 10, 11, 11, 12, - 9, 9, 10, 11, 12, 12, - 10, 10, 11, 11, 13, 13 -}; - -static const uint8_t t9l[] = { - 3, 4, 6, 7, 9, 10, - 4, 5, 6, 7, 8, 10, - 5, 6, 7, 8, 9, 10, - 7, 7, 8, 9, 9, 10, - 8, 8, 9, 9, 10, 11, - 9, 9, 10, 10, 11, 11 -}; - -static const uint8_t t10l[] = { - 1, 4, 7, 9, 10, 10, 10, 11, - 4, 6, 8, 9, 10, 11, 10, 10, - 7, 8, 9, 10, 11, 12, 11, 11, - 8, 9, 10, 11, 12, 12, 11, 12, - 9, 10, 11, 12, 12, 12, 12, 12, - 10, 11, 12, 12, 13, 13, 12, 13, - 9, 10, 11, 12, 12, 12, 13, 13, - 10, 10, 11, 12, 12, 13, 13, 13 -}; - -static const uint8_t t11l[] = { - 2, 4, 6, 8, 9, 10, 9, 10, - 4, 5, 6, 8, 10, 10, 9, 10, - 6, 7, 8, 9, 10, 11, 10, 10, - 8, 8, 9, 11, 10, 12, 10, 11, - 9, 10, 10, 11, 11, 12, 11, 12, - 9, 10, 11, 12, 12, 13, 12, 13, - 9, 9, 9, 10, 11, 12, 12, 12, - 9, 9, 10, 11, 12, 12, 12, 12 -}; - -static const uint8_t t12l[] = { - 4, 4, 6, 8, 9, 10, 10, 10, - 4, 5, 6, 7, 9, 9, 10, 10, - 6, 6, 7, 8, 9, 10, 9, 10, - 7, 7, 8, 8, 9, 10, 10, 10, - 8, 8, 9, 9, 10, 10, 10, 11, - 9, 9, 10, 10, 10, 11, 10, 11, - 9, 9, 9, 10, 10, 11, 11, 12, - 10, 10, 10, 11, 11, 11, 11, 12 -}; - -static const uint8_t t13l[] = { - 1, 5, 7, 8, 9, 10, 10, 11, 10, 11, 12, 12, 13, 13, 14, 14, - 4, 6, 8, 9, 10, 10, 11, 11, 11, 11, 12, 12, 13, 14, 14, 14, - 7, 8, 9, 10, 11, 11, 12, 12, 11, 12, 12, 13, 13, 14, 15, 15, - 8, 9, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 15, 15, - 9, 9, 11, 11, 12, 12, 13, 13, 12, 13, 13, 14, 14, 15, 15, 16, - 10, 10, 11, 12, 12, 12, 13, 13, 13, 13, 14, 13, 15, 15, 16, 16, - 10, 11, 12, 12, 13, 13, 13, 13, 13, 14, 14, 14, 15, 15, 16, 16, - 11, 11, 12, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 16, 18, 18, - 10, 10, 11, 12, 12, 13, 13, 14, 14, 14, 14, 15, 15, 16, 17, 17, - 11, 11, 12, 12, 13, 13, 13, 15, 14, 15, 15, 16, 16, 16, 18, 17, - 11, 12, 12, 13, 13, 14, 14, 15, 14, 15, 16, 15, 16, 17, 18, 19, - 12, 12, 12, 13, 14, 14, 14, 14, 15, 15, 15, 16, 17, 17, 17, 18, - 12, 13, 13, 14, 14, 15, 14, 15, 16, 16, 17, 17, 17, 18, 18, 18, - 13, 13, 14, 15, 15, 15, 16, 16, 16, 16, 16, 17, 18, 17, 18, 18, - 14, 14, 14, 15, 15, 15, 17, 16, 16, 19, 17, 17, 17, 19, 18, 18, - 13, 14, 15, 16, 16, 16, 17, 16, 17, 17, 18, 18, 21, 20, 21, 18 -}; - -static const uint8_t t15l[] = { - 3, 5, 6, 8, 8, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 14, - 5, 5, 7, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 13, - 6, 7, 7, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 13, - 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, - 8, 8, 9, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13, - 9, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 13, 13, 13, 14, - 10, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 14, 14, - 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 14, - 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 14, 14, 14, - 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, - 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 15, 14, - 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 15, - 12, 12, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 14, 14, 15, 15, - 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15, - 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 14, 15, - 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15, 15, 15 -}; - -static const uint8_t t16_5l[] = { - 1, 5, 7, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 11, - 4, 6, 8, 9, 10, 11, 11, 11, 12, 12, 12, 13, 14, 13, 14, 11, - 7, 8, 9, 10, 11, 11, 12, 12, 13, 12, 13, 13, 13, 14, 14, 12, - 9, 9, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 13, - 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 12, - 10, 10, 11, 11, 12, 13, 13, 14, 13, 14, 14, 15, 15, 15, 16, 13, - 11, 11, 11, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 16, 13, - 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 17, 17, 13, - 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 13, - 12, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 15, 16, 15, 14, - 12, 13, 12, 13, 14, 14, 14, 14, 15, 16, 16, 16, 17, 17, 16, 13, - 13, 13, 13, 13, 14, 14, 15, 16, 16, 16, 16, 16, 16, 15, 16, 14, - 13, 14, 14, 14, 14, 15, 15, 15, 15, 17, 16, 16, 16, 16, 18, 14, - 15, 14, 14, 14, 15, 15, 16, 16, 16, 18, 17, 17, 17, 19, 17, 14, - 14, 15, 13, 14, 16, 16, 15, 16, 16, 17, 18, 17, 19, 17, 16, 14, - 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 12 -}; - -static const uint8_t t16l[] = { - 1, 5, 7, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 10, - 4, 6, 8, 9, 10, 11, 11, 11, 12, 12, 12, 13, 14, 13, 14, 10, - 7, 8, 9, 10, 11, 11, 12, 12, 13, 12, 13, 13, 13, 14, 14, 11, - 9, 9, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 12, - 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 11, - 10, 10, 11, 11, 12, 13, 13, 14, 13, 14, 14, 15, 15, 15, 16, 12, - 11, 11, 11, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 16, 12, - 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 17, 17, 12, - 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 12, - 12, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 15, 16, 15, 13, - 12, 13, 12, 13, 14, 14, 14, 14, 15, 16, 16, 16, 17, 17, 16, 12, - 13, 13, 13, 13, 14, 14, 15, 16, 16, 16, 16, 16, 16, 15, 16, 13, - 13, 14, 14, 14, 14, 15, 15, 15, 15, 17, 16, 16, 16, 16, 18, 13, - 15, 14, 14, 14, 15, 15, 16, 16, 16, 18, 17, 17, 17, 19, 17, 13, - 14, 15, 13, 14, 16, 16, 15, 16, 16, 17, 18, 17, 19, 17, 16, 13, - 10, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 10 -}; - -static const uint8_t t24l[] = { - 4, 5, 7, 8, 9, 10, 10, 11, 11, 12, 12, 12, 12, 12, 13, 10, - 5, 6, 7, 8, 9, 10, 10, 11, 11, 11, 12, 12, 12, 12, 12, 10, - 7, 7, 8, 9, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 9, - 8, 8, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 9, - 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12, 12, 13, 9, - 10, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 9, - 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 9, - 11, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 10, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 10, - 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 10, - 12, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 10, - 12, 12, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 10, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 10, - 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 10, - 13, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 10, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 6 -}; - -const uint8_t t32l[] = { - 1 + 0, 4 + 1, 4 + 1, 5 + 2, 4 + 1, 6 + 2, 5 + 2, 6 + 3, - 4 + 1, 5 + 2, 5 + 2, 6 + 3, 5 + 2, 6 + 3, 6 + 3, 6 + 4 -}; - -const uint8_t t33l[] = { - 4 + 0, 4 + 1, 4 + 1, 4 + 2, 4 + 1, 4 + 2, 4 + 2, 4 + 3, - 4 + 1, 4 + 2, 4 + 2, 4 + 3, 4 + 2, 4 + 3, 4 + 3, 4 + 4 -}; - - -const struct huffcodetab ht[HTN] = { - /* xlen, linmax, table, hlen */ - {0, 0, NULL, NULL}, - {2, 0, t1HB, t1l}, - {3, 0, t2HB, t2l}, - {3, 0, t3HB, t3l}, - {0, 0, NULL, NULL}, /* Apparently not used */ - {4, 0, t5HB, t5l}, - {4, 0, t6HB, t6l}, - {6, 0, t7HB, t7l}, - {6, 0, t8HB, t8l}, - {6, 0, t9HB, t9l}, - {8, 0, t10HB, t10l}, - {8, 0, t11HB, t11l}, - {8, 0, t12HB, t12l}, - {16, 0, t13HB, t13l}, - {0, 0, NULL, t16_5l}, /* Apparently not used */ - {16, 0, t15HB, t15l}, - - {1, 1, t16HB, t16l}, - {2, 3, t16HB, t16l}, - {3, 7, t16HB, t16l}, - {4, 15, t16HB, t16l}, - {6, 63, t16HB, t16l}, - {8, 255, t16HB, t16l}, - {10, 1023, t16HB, t16l}, - {13, 8191, t16HB, t16l}, - - {4, 15, t24HB, t24l}, - {5, 31, t24HB, t24l}, - {6, 63, t24HB, t24l}, - {7, 127, t24HB, t24l}, - {8, 255, t24HB, t24l}, - {9, 511, t24HB, t24l}, - {11, 2047, t24HB, t24l}, - {13, 8191, t24HB, t24l}, - - {0, 0, t32HB, t32l}, - {0, 0, t33HB, t33l}, -}; - - - - - -/* for (i = 0; i < 16*16; i++) { - * largetbl[i] = ((ht[16].hlen[i]) << 16) + ht[24].hlen[i]; - * } - */ -const uint32_t largetbl[16 * 16] = { - 0x010004, 0x050005, 0x070007, 0x090008, 0x0a0009, 0x0a000a, 0x0b000a, 0x0b000b, - 0x0c000b, 0x0c000c, 0x0c000c, 0x0d000c, 0x0d000c, 0x0d000c, 0x0e000d, 0x0a000a, - 0x040005, 0x060006, 0x080007, 0x090008, 0x0a0009, 0x0b000a, 0x0b000a, 0x0b000b, - 0x0c000b, 0x0c000b, 0x0c000c, 0x0d000c, 0x0e000c, 0x0d000c, 0x0e000c, 0x0a000a, - 0x070007, 0x080007, 0x090008, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000b, - 0x0d000b, 0x0c000b, 0x0d000b, 0x0d000c, 0x0d000c, 0x0e000c, 0x0e000d, 0x0b0009, - 0x090008, 0x090008, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000a, 0x0c000b, - 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0c0009, - 0x0a0009, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000a, 0x0d000a, 0x0d000b, - 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000d, 0x0b0009, - 0x0a000a, 0x0a0009, 0x0b000a, 0x0b000a, 0x0c000a, 0x0d000a, 0x0d000b, 0x0e000b, - 0x0d000b, 0x0e000b, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x0c0009, - 0x0b000a, 0x0b000a, 0x0b000a, 0x0c000a, 0x0d000a, 0x0d000b, 0x0d000b, 0x0d000b, - 0x0e000b, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x10000d, 0x0c0009, - 0x0b000b, 0x0b000a, 0x0c000a, 0x0c000a, 0x0d000b, 0x0d000b, 0x0d000b, 0x0e000b, - 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x11000d, 0x11000d, 0x0c000a, - 0x0b000b, 0x0c000b, 0x0c000b, 0x0d000b, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000b, - 0x0f000b, 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x10000d, 0x10000d, 0x0c000a, - 0x0c000b, 0x0c000b, 0x0c000b, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000b, 0x0f000c, - 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x0f000d, 0x10000d, 0x0f000d, 0x0d000a, - 0x0c000c, 0x0d000b, 0x0c000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0e000c, - 0x0f000c, 0x10000c, 0x10000c, 0x10000d, 0x11000d, 0x11000d, 0x10000d, 0x0c000a, - 0x0d000c, 0x0d000c, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0f000c, 0x10000c, - 0x10000c, 0x10000c, 0x10000c, 0x10000d, 0x10000d, 0x0f000d, 0x10000d, 0x0d000a, - 0x0d000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, - 0x0f000c, 0x11000c, 0x10000d, 0x10000d, 0x10000d, 0x10000d, 0x12000d, 0x0d000a, - 0x0f000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x10000c, 0x10000c, - 0x10000d, 0x12000d, 0x11000d, 0x11000d, 0x11000d, 0x13000d, 0x11000d, 0x0d000a, - 0x0e000d, 0x0f000c, 0x0d000c, 0x0e000c, 0x10000c, 0x10000c, 0x0f000c, 0x10000d, - 0x10000d, 0x11000d, 0x12000d, 0x11000d, 0x13000d, 0x11000d, 0x10000d, 0x0d000a, - 0x0a0009, 0x0a0009, 0x0a0009, 0x0b0009, 0x0b0009, 0x0c0009, 0x0c0009, 0x0c0009, - 0x0d0009, 0x0d0009, 0x0d0009, 0x0d000a, 0x0d000a, 0x0d000a, 0x0d000a, 0x0a0006 -}; - -/* for (i = 0; i < 3*3; i++) { - * table23[i] = ((ht[2].hlen[i]) << 16) + ht[3].hlen[i]; - * } - */ -const uint32_t table23[3 * 3] = { - 0x010002, 0x040003, 0x070007, - 0x040004, 0x050004, 0x070007, - 0x060006, 0x070007, 0x080008 -}; - -/* for (i = 0; i < 4*4; i++) { - * table56[i] = ((ht[5].hlen[i]) << 16) + ht[6].hlen[i]; - * } - */ -const uint32_t table56[4 * 4] = { - 0x010003, 0x040004, 0x070006, 0x080008, 0x040004, 0x050004, 0x080006, 0x090007, - 0x070005, 0x080006, 0x090007, 0x0a0008, 0x080007, 0x080007, 0x090008, 0x0a0009 -}; - - - -/* - * 0: MPEG-2 LSF - * 1: MPEG-1 - * 2: MPEG-2.5 LSF FhG extention (1995-07-11 shn) - */ - -typedef enum { - MPEG_2 = 0, - MPEG_1 = 1, - MPEG_25 = 2 -} MPEG_t; - -const int bitrate_table[3][16] = { - {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, -1}, /* MPEG 2 */ - {0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1}, /* MPEG 1 */ - {0, 8, 16, 24, 32, 40, 48, 56, 64, -1, -1, -1, -1, -1, -1, -1}, /* MPEG 2.5 */ -}; - -const int samplerate_table[3][4] = { - {22050, 24000, 16000, -1}, /* MPEG 2 */ - {44100, 48000, 32000, -1}, /* MPEG 1 */ - {11025, 12000, 8000, -1}, /* MPEG 2.5 */ -}; - -int -lame_get_bitrate(int mpeg_version, int table_index) -{ - if (0 <= mpeg_version && mpeg_version <= 2) { - if (0 <= table_index && table_index <= 15) { - return bitrate_table[mpeg_version][table_index]; - } - } - return -1; -} - -int -lame_get_samplerate(int mpeg_version, int table_index) -{ - if (0 <= mpeg_version && mpeg_version <= 2) { - if (0 <= table_index && table_index <= 3) { - return samplerate_table[mpeg_version][table_index]; - } - } - return -1; -} - - -/* This is the scfsi_band table from 2.4.2.7 of the IS */ -const int scfsi_band[5] = { 0, 6, 11, 16, 21 }; - -/* end of tables.c */ diff --git a/platform/win32/msvc/external/lame/libmp3lame/tables.h b/platform/win32/msvc/external/lame/libmp3lame/tables.h deleted file mode 100644 index 0dd7deb2076..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/tables.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * MPEG layer 3 tables include file - * - * Copyright (c) 1999 Albert L Faber - * - * 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 LAME_TABLES_H -#define LAME_TABLES_H - -#if 0 -typedef struct { - unsigned char no; - unsigned char width; - unsigned char minval_2; - float quiet_thr; - float norm; - float bark; -} type1_t; - -typedef struct { - unsigned char no; - unsigned char width; - float quiet_thr; - float norm; - float SNR; - float bark; -} type2_t; - -typedef struct { - unsigned int no:5; - unsigned int cbw:3; - unsigned int bu:6; - unsigned int bo:6; - unsigned int w1_576:10; - unsigned int w2_576:10; -} type34_t; - -typedef struct { - size_t len1; - const type1_t *const tab1; - size_t len2; - const type2_t *const tab2; - size_t len3; - const type34_t *const tab3; - size_t len4; - const type34_t *const tab4; -} type5_t; - -extern const type5_t table5[6]; - -#endif - -#define HTN 34 - -struct huffcodetab { - const unsigned int xlen; /* max. x-index+ */ - const unsigned int linmax; /* max number to be stored in linbits */ - const uint16_t *table; /* pointer to array[xlen][ylen] */ - const uint8_t *hlen; /* pointer to array[xlen][ylen] */ -}; - -extern const struct huffcodetab ht[HTN]; - /* global memory block */ - /* array of all huffcodtable headers */ - /* 0..31 Huffman code table 0..31 */ - /* 32,33 count1-tables */ - -extern const uint8_t t32l[]; -extern const uint8_t t33l[]; - -extern const uint32_t largetbl[16 * 16]; -extern const uint32_t table23[3 * 3]; -extern const uint32_t table56[4 * 4]; - -extern const int scfsi_band[5]; - -extern const int bitrate_table [3][16]; -extern const int samplerate_table [3][ 4]; - -#endif /* LAME_TABLES_H */ diff --git a/platform/win32/msvc/external/lame/libmp3lame/takehiro.c b/platform/win32/msvc/external/lame/libmp3lame/takehiro.c deleted file mode 100644 index 9781feb22be..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/takehiro.c +++ /dev/null @@ -1,1375 +0,0 @@ -/* - * MP3 huffman table selecting and bit counting - * - * Copyright (c) 1999-2005 Takehiro TOMINAGA - * Copyright (c) 2002-2005 Gabriel Bouvigne - * - * 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. - */ - -/* $Id: takehiro.c,v 1.79 2011/05/07 16:05:17 rbrito Exp $ */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - - -#include "lame.h" -#include "machine.h" -#include "encoder.h" -#include "util.h" -#include "quantize_pvt.h" -#include "tables.h" - - -static const struct { - const int region0_count; - const int region1_count; -} subdv_table[23] = { - { - 0, 0}, /* 0 bands */ - { - 0, 0}, /* 1 bands */ - { - 0, 0}, /* 2 bands */ - { - 0, 0}, /* 3 bands */ - { - 0, 0}, /* 4 bands */ - { - 0, 1}, /* 5 bands */ - { - 1, 1}, /* 6 bands */ - { - 1, 1}, /* 7 bands */ - { - 1, 2}, /* 8 bands */ - { - 2, 2}, /* 9 bands */ - { - 2, 3}, /* 10 bands */ - { - 2, 3}, /* 11 bands */ - { - 3, 4}, /* 12 bands */ - { - 3, 4}, /* 13 bands */ - { - 3, 4}, /* 14 bands */ - { - 4, 5}, /* 15 bands */ - { - 4, 5}, /* 16 bands */ - { - 4, 6}, /* 17 bands */ - { - 5, 6}, /* 18 bands */ - { - 5, 6}, /* 19 bands */ - { - 5, 7}, /* 20 bands */ - { - 6, 7}, /* 21 bands */ - { - 6, 7}, /* 22 bands */ -}; - - - - - -/********************************************************************* - * nonlinear quantization of xr - * More accurate formula than the ISO formula. Takes into account - * the fact that we are quantizing xr -> ix, but we want ix^4/3 to be - * as close as possible to x^4/3. (taking the nearest int would mean - * ix is as close as possible to xr, which is different.) - * - * From Segher Boessenkool <segher@eastsite.nl> 11/1999 - * - * 09/2000: ASM code removed in favor of IEEE754 hack by Takehiro - * Tominaga. If you need the ASM code, check CVS circa Aug 2000. - * - * 01/2004: Optimizations by Gabriel Bouvigne - *********************************************************************/ - - - - - -static void -quantize_lines_xrpow_01(unsigned int l, FLOAT istep, const FLOAT * xr, int *ix) -{ - const FLOAT compareval0 = (1.0f - 0.4054f) / istep; - unsigned int i; - - assert(l > 0); - assert(l % 2 == 0); - for (i = 0; i < l; i += 2) { - FLOAT const xr_0 = xr[i+0]; - FLOAT const xr_1 = xr[i+1]; - int const ix_0 = (compareval0 > xr_0) ? 0 : 1; - int const ix_1 = (compareval0 > xr_1) ? 0 : 1; - ix[i+0] = ix_0; - ix[i+1] = ix_1; - } -} - - - -#ifdef TAKEHIRO_IEEE754_HACK - -typedef union { - float f; - int i; -} fi_union; - -#define MAGIC_FLOAT (65536*(128)) -#define MAGIC_INT 0x4b000000 - - -static void -quantize_lines_xrpow(unsigned int l, FLOAT istep, const FLOAT * xp, int *pi) -{ - fi_union *fi; - unsigned int remaining; - - assert(l > 0); - - fi = (fi_union *) pi; - - l = l >> 1; - remaining = l % 2; - l = l >> 1; - while (l--) { - double x0 = istep * xp[0]; - double x1 = istep * xp[1]; - double x2 = istep * xp[2]; - double x3 = istep * xp[3]; - - x0 += MAGIC_FLOAT; - fi[0].f = x0; - x1 += MAGIC_FLOAT; - fi[1].f = x1; - x2 += MAGIC_FLOAT; - fi[2].f = x2; - x3 += MAGIC_FLOAT; - fi[3].f = x3; - - fi[0].f = x0 + adj43asm[fi[0].i - MAGIC_INT]; - fi[1].f = x1 + adj43asm[fi[1].i - MAGIC_INT]; - fi[2].f = x2 + adj43asm[fi[2].i - MAGIC_INT]; - fi[3].f = x3 + adj43asm[fi[3].i - MAGIC_INT]; - - fi[0].i -= MAGIC_INT; - fi[1].i -= MAGIC_INT; - fi[2].i -= MAGIC_INT; - fi[3].i -= MAGIC_INT; - fi += 4; - xp += 4; - }; - if (remaining) { - double x0 = istep * xp[0]; - double x1 = istep * xp[1]; - - x0 += MAGIC_FLOAT; - fi[0].f = x0; - x1 += MAGIC_FLOAT; - fi[1].f = x1; - - fi[0].f = x0 + adj43asm[fi[0].i - MAGIC_INT]; - fi[1].f = x1 + adj43asm[fi[1].i - MAGIC_INT]; - - fi[0].i -= MAGIC_INT; - fi[1].i -= MAGIC_INT; - } - -} - - -#else - -/********************************************************************* - * XRPOW_FTOI is a macro to convert floats to ints. - * if XRPOW_FTOI(x) = nearest_int(x), then QUANTFAC(x)=adj43asm[x] - * ROUNDFAC= -0.0946 - * - * if XRPOW_FTOI(x) = floor(x), then QUANTFAC(x)=asj43[x] - * ROUNDFAC=0.4054 - * - * Note: using floor() or (int) is extremely slow. On machines where - * the TAKEHIRO_IEEE754_HACK code above does not work, it is worthwile - * to write some ASM for XRPOW_FTOI(). - *********************************************************************/ -#define XRPOW_FTOI(src,dest) ((dest) = (int)(src)) -#define QUANTFAC(rx) adj43[rx] -#define ROUNDFAC 0.4054 - - -static void -quantize_lines_xrpow(unsigned int l, FLOAT istep, const FLOAT * xr, int *ix) -{ - unsigned int remaining; - - assert(l > 0); - - l = l >> 1; - remaining = l % 2; - l = l >> 1; - while (l--) { - FLOAT x0, x1, x2, x3; - int rx0, rx1, rx2, rx3; - - x0 = *xr++ * istep; - x1 = *xr++ * istep; - XRPOW_FTOI(x0, rx0); - x2 = *xr++ * istep; - XRPOW_FTOI(x1, rx1); - x3 = *xr++ * istep; - XRPOW_FTOI(x2, rx2); - x0 += QUANTFAC(rx0); - XRPOW_FTOI(x3, rx3); - x1 += QUANTFAC(rx1); - XRPOW_FTOI(x0, *ix++); - x2 += QUANTFAC(rx2); - XRPOW_FTOI(x1, *ix++); - x3 += QUANTFAC(rx3); - XRPOW_FTOI(x2, *ix++); - XRPOW_FTOI(x3, *ix++); - }; - if (remaining) { - FLOAT x0, x1; - int rx0, rx1; - - x0 = *xr++ * istep; - x1 = *xr++ * istep; - XRPOW_FTOI(x0, rx0); - XRPOW_FTOI(x1, rx1); - x0 += QUANTFAC(rx0); - x1 += QUANTFAC(rx1); - XRPOW_FTOI(x0, *ix++); - XRPOW_FTOI(x1, *ix++); - } - -} - - - -#endif - - - -/********************************************************************* - * Quantization function - * This function will select which lines to quantize and call the - * proper quantization function - *********************************************************************/ - -static void -quantize_xrpow(const FLOAT * xp, int *pi, FLOAT istep, gr_info const *const cod_info, - calc_noise_data const *prev_noise) -{ - /* quantize on xr^(3/4) instead of xr */ - int sfb; - int sfbmax; - int j = 0; - int prev_data_use; - int *iData; - int accumulate = 0; - int accumulate01 = 0; - int *acc_iData; - const FLOAT *acc_xp; - - iData = pi; - acc_xp = xp; - acc_iData = iData; - - - /* Reusing previously computed data does not seems to work if global gain - is changed. Finding why it behaves this way would allow to use a cache of - previously computed values (let's 10 cached values per sfb) that would - probably provide a noticeable speedup */ - prev_data_use = (prev_noise && (cod_info->global_gain == prev_noise->global_gain)); - - if (cod_info->block_type == SHORT_TYPE) - sfbmax = 38; - else - sfbmax = 21; - - for (sfb = 0; sfb <= sfbmax; sfb++) { - int step = -1; - - if (prev_data_use || cod_info->block_type == NORM_TYPE) { - step = - cod_info->global_gain - - ((cod_info->scalefac[sfb] + (cod_info->preflag ? pretab[sfb] : 0)) - << (cod_info->scalefac_scale + 1)) - - cod_info->subblock_gain[cod_info->window[sfb]] * 8; - } - assert(cod_info->width[sfb] >= 0); - if (prev_data_use && (prev_noise->step[sfb] == step)) { - /* do not recompute this part, - but compute accumulated lines */ - if (accumulate) { - quantize_lines_xrpow(accumulate, istep, acc_xp, acc_iData); - accumulate = 0; - } - if (accumulate01) { - quantize_lines_xrpow_01(accumulate01, istep, acc_xp, acc_iData); - accumulate01 = 0; - } - } - else { /*should compute this part */ - int l; - l = cod_info->width[sfb]; - - if ((j + cod_info->width[sfb]) > cod_info->max_nonzero_coeff) { - /*do not compute upper zero part */ - int usefullsize; - usefullsize = cod_info->max_nonzero_coeff - j + 1; - memset(&pi[cod_info->max_nonzero_coeff], 0, - sizeof(int) * (576 - cod_info->max_nonzero_coeff)); - l = usefullsize; - - if (l < 0) { - l = 0; - } - - /* no need to compute higher sfb values */ - sfb = sfbmax + 1; - } - - /*accumulate lines to quantize */ - if (!accumulate && !accumulate01) { - acc_iData = iData; - acc_xp = xp; - } - if (prev_noise && - prev_noise->sfb_count1 > 0 && - sfb >= prev_noise->sfb_count1 && - prev_noise->step[sfb] > 0 && step >= prev_noise->step[sfb]) { - - if (accumulate) { - quantize_lines_xrpow(accumulate, istep, acc_xp, acc_iData); - accumulate = 0; - acc_iData = iData; - acc_xp = xp; - } - accumulate01 += l; - } - else { - if (accumulate01) { - quantize_lines_xrpow_01(accumulate01, istep, acc_xp, acc_iData); - accumulate01 = 0; - acc_iData = iData; - acc_xp = xp; - } - accumulate += l; - } - - if (l <= 0) { - /* rh: 20040215 - * may happen due to "prev_data_use" optimization - */ - if (accumulate01) { - quantize_lines_xrpow_01(accumulate01, istep, acc_xp, acc_iData); - accumulate01 = 0; - } - if (accumulate) { - quantize_lines_xrpow(accumulate, istep, acc_xp, acc_iData); - accumulate = 0; - } - - break; /* ends for-loop */ - } - } - if (sfb <= sfbmax) { - iData += cod_info->width[sfb]; - xp += cod_info->width[sfb]; - j += cod_info->width[sfb]; - } - } - if (accumulate) { /*last data part */ - quantize_lines_xrpow(accumulate, istep, acc_xp, acc_iData); - accumulate = 0; - } - if (accumulate01) { /*last data part */ - quantize_lines_xrpow_01(accumulate01, istep, acc_xp, acc_iData); - accumulate01 = 0; - } - -} - - - - -/*************************************************************************/ -/* ix_max */ -/*************************************************************************/ - -static int -ix_max(const int *ix, const int *end) -{ - int max1 = 0, max2 = 0; - - do { - int const x1 = *ix++; - int const x2 = *ix++; - if (max1 < x1) - max1 = x1; - - if (max2 < x2) - max2 = x2; - } while (ix < end); - if (max1 < max2) - max1 = max2; - return max1; -} - - - - - - - - -static int -count_bit_ESC(const int *ix, const int *const end, int t1, const int t2, unsigned int *const s) -{ - /* ESC-table is used */ - unsigned int const linbits = ht[t1].xlen * 65536u + ht[t2].xlen; - unsigned int sum = 0, sum2; - - do { - unsigned int x = *ix++; - unsigned int y = *ix++; - - if (x >= 15u) { - x = 15u; - sum += linbits; - } - if (y >= 15u) { - y = 15u; - sum += linbits; - } - x <<= 4u; - x += y; - sum += largetbl[x]; - } while (ix < end); - - sum2 = sum & 0xffffu; - sum >>= 16u; - - if (sum > sum2) { - sum = sum2; - t1 = t2; - } - - *s += sum; - return t1; -} - - -static int -count_bit_noESC(const int *ix, const int *end, int mx, unsigned int *s) -{ - /* No ESC-words */ - unsigned int sum1 = 0; - const uint8_t *const hlen1 = ht[1].hlen; - (void) mx; - - do { - unsigned int const x0 = *ix++; - unsigned int const x1 = *ix++; - sum1 += hlen1[ x0+x0 + x1 ]; - } while (ix < end); - - *s += sum1; - return 1; -} - - -static const int huf_tbl_noESC[] = { - 1, 2, 5, 7, 7, 10, 10, 13, 13, 13, 13, 13, 13, 13, 13 -}; - - -static int -count_bit_noESC_from2(const int *ix, const int *end, int max, unsigned int *s) -{ - int t1 = huf_tbl_noESC[max - 1]; - /* No ESC-words */ - const unsigned int xlen = ht[t1].xlen; - uint32_t const* table = (t1 == 2) ? &table23[0] : &table56[0]; - unsigned int sum = 0, sum2; - - do { - unsigned int const x0 = *ix++; - unsigned int const x1 = *ix++; - sum += table[ x0 * xlen + x1 ]; - } while (ix < end); - - sum2 = sum & 0xffffu; - sum >>= 16u; - - if (sum > sum2) { - sum = sum2; - t1++; - } - - *s += sum; - return t1; -} - - -inline static int -count_bit_noESC_from3(const int *ix, const int *end, int max, unsigned int * s) -{ - int t1 = huf_tbl_noESC[max - 1]; - /* No ESC-words */ - unsigned int sum1 = 0; - unsigned int sum2 = 0; - unsigned int sum3 = 0; - const unsigned int xlen = ht[t1].xlen; - const uint8_t *const hlen1 = ht[t1].hlen; - const uint8_t *const hlen2 = ht[t1 + 1].hlen; - const uint8_t *const hlen3 = ht[t1 + 2].hlen; - int t; - - do { - unsigned int x0 = *ix++; - unsigned int x1 = *ix++; - unsigned int x = x0 * xlen + x1; - sum1 += hlen1[x]; - sum2 += hlen2[x]; - sum3 += hlen3[x]; - } while (ix < end); - - t = t1; - if (sum1 > sum2) { - sum1 = sum2; - t++; - } - if (sum1 > sum3) { - sum1 = sum3; - t = t1 + 2; - } - *s += sum1; - - return t; -} - - -/*************************************************************************/ -/* choose table */ -/*************************************************************************/ - -/* - Choose the Huffman table that will encode ix[begin..end] with - the fewest bits. - - Note: This code contains knowledge about the sizes and characteristics - of the Huffman tables as defined in the IS (Table B.7), and will not work - with any arbitrary tables. -*/ -static int count_bit_null(const int* ix, const int* end, int max, unsigned int* s) -{ - (void) ix; - (void) end; - (void) max; - (void) s; - return 0; -} - -typedef int (*count_fnc)(const int* ix, const int* end, int max, unsigned int* s); - -static count_fnc count_fncs[] = -{ &count_bit_null -, &count_bit_noESC -, &count_bit_noESC_from2 -, &count_bit_noESC_from2 -, &count_bit_noESC_from3 -, &count_bit_noESC_from3 -, &count_bit_noESC_from3 -, &count_bit_noESC_from3 -, &count_bit_noESC_from3 -, &count_bit_noESC_from3 -, &count_bit_noESC_from3 -, &count_bit_noESC_from3 -, &count_bit_noESC_from3 -, &count_bit_noESC_from3 -, &count_bit_noESC_from3 -, &count_bit_noESC_from3 -}; - -static int -choose_table_nonMMX(const int *ix, const int *const end, int *const _s) -{ - unsigned int* s = (unsigned int*)_s; - unsigned int max; - int choice, choice2; - max = ix_max(ix, end); - - if (max <= 15) { - return count_fncs[max](ix, end, max, s); - } - /* try tables with linbits */ - if (max > IXMAX_VAL) { - *s = LARGE_BITS; - return -1; - } - max -= 15u; - for (choice2 = 24; choice2 < 32; choice2++) { - if (ht[choice2].linmax >= max) { - break; - } - } - - for (choice = choice2 - 8; choice < 24; choice++) { - if (ht[choice].linmax >= max) { - break; - } - } - return count_bit_ESC(ix, end, choice, choice2, s); -} - - - -/*************************************************************************/ -/* count_bit */ -/*************************************************************************/ -int -noquant_count_bits(lame_internal_flags const *const gfc, - gr_info * const gi, calc_noise_data * prev_noise) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - int bits = 0; - int i, a1, a2; - int const *const ix = gi->l3_enc; - - i = Min(576, ((gi->max_nonzero_coeff + 2) >> 1) << 1); - - if (prev_noise) - prev_noise->sfb_count1 = 0; - - /* Determine count1 region */ - for (; i > 1; i -= 2) - if (ix[i - 1] | ix[i - 2]) - break; - gi->count1 = i; - - /* Determines the number of bits to encode the quadruples. */ - a1 = a2 = 0; - for (; i > 3; i -= 4) { - int x4 = ix[i-4]; - int x3 = ix[i-3]; - int x2 = ix[i-2]; - int x1 = ix[i-1]; - int p; - /* hack to check if all values <= 1 */ - if ((unsigned int) (x4 | x3 | x2 | x1) > 1) - break; - - p = ((x4 * 2 + x3) * 2 + x2) * 2 + x1; - a1 += t32l[p]; - a2 += t33l[p]; - } - - bits = a1; - gi->count1table_select = 0; - if (a1 > a2) { - bits = a2; - gi->count1table_select = 1; - } - - gi->count1bits = bits; - gi->big_values = i; - if (i == 0) - return bits; - - if (gi->block_type == SHORT_TYPE) { - a1 = 3 * gfc->scalefac_band.s[3]; - if (a1 > gi->big_values) - a1 = gi->big_values; - a2 = gi->big_values; - - } - else if (gi->block_type == NORM_TYPE) { - assert(i <= 576); /* bv_scf has 576 entries (0..575) */ - a1 = gi->region0_count = gfc->sv_qnt.bv_scf[i - 2]; - a2 = gi->region1_count = gfc->sv_qnt.bv_scf[i - 1]; - - assert(a1 + a2 + 2 < SBPSY_l); - a2 = gfc->scalefac_band.l[a1 + a2 + 2]; - a1 = gfc->scalefac_band.l[a1 + 1]; - if (a2 < i) - gi->table_select[2] = gfc->choose_table(ix + a2, ix + i, &bits); - - } - else { - gi->region0_count = 7; - /*gi->region1_count = SBPSY_l - 7 - 1; */ - gi->region1_count = SBMAX_l - 1 - 7 - 1; - a1 = gfc->scalefac_band.l[7 + 1]; - a2 = i; - if (a1 > a2) { - a1 = a2; - } - } - - - /* have to allow for the case when bigvalues < region0 < region1 */ - /* (and region0, region1 are ignored) */ - a1 = Min(a1, i); - a2 = Min(a2, i); - - assert(a1 >= 0); - assert(a2 >= 0); - - /* Count the number of bits necessary to code the bigvalues region. */ - if (0 < a1) - gi->table_select[0] = gfc->choose_table(ix, ix + a1, &bits); - if (a1 < a2) - gi->table_select[1] = gfc->choose_table(ix + a1, ix + a2, &bits); - if (cfg->use_best_huffman == 2) { - gi->part2_3_length = bits; - best_huffman_divide(gfc, gi); - bits = gi->part2_3_length; - } - - - if (prev_noise) { - if (gi->block_type == NORM_TYPE) { - int sfb = 0; - while (gfc->scalefac_band.l[sfb] < gi->big_values) { - sfb++; - } - prev_noise->sfb_count1 = sfb; - } - } - - return bits; -} - -int -count_bits(lame_internal_flags const *const gfc, - const FLOAT * const xr, gr_info * const gi, calc_noise_data * prev_noise) -{ - int *const ix = gi->l3_enc; - - /* since quantize_xrpow uses table lookup, we need to check this first: */ - FLOAT const w = (IXMAX_VAL) / IPOW20(gi->global_gain); - - if (gi->xrpow_max > w) - return LARGE_BITS; - - quantize_xrpow(xr, ix, IPOW20(gi->global_gain), gi, prev_noise); - - if (gfc->sv_qnt.substep_shaping & 2) { - int sfb, j = 0; - /* 0.634521682242439 = 0.5946*2**(.5*0.1875) */ - int const gain = gi->global_gain + gi->scalefac_scale; - const FLOAT roundfac = 0.634521682242439 / IPOW20(gain); - for (sfb = 0; sfb < gi->sfbmax; sfb++) { - int const width = gi->width[sfb]; - assert(width >= 0); - if (!gfc->sv_qnt.pseudohalf[sfb]) { - j += width; - } - else { - int k; - for (k = j, j += width; k < j; ++k) { - ix[k] = (xr[k] >= roundfac) ? ix[k] : 0; - } - } - } - } - return noquant_count_bits(gfc, gi, prev_noise); -} - -/*********************************************************************** - re-calculate the best scalefac_compress using scfsi - the saved bits are kept in the bit reservoir. - **********************************************************************/ - - -inline static void -recalc_divide_init(const lame_internal_flags * const gfc, - gr_info const *cod_info, - int const *const ix, int r01_bits[], int r01_div[], int r0_tbl[], int r1_tbl[]) -{ - int r0, r1, bigv, r0t, r1t, bits; - - bigv = cod_info->big_values; - - for (r0 = 0; r0 <= 7 + 15; r0++) { - r01_bits[r0] = LARGE_BITS; - } - - for (r0 = 0; r0 < 16; r0++) { - int const a1 = gfc->scalefac_band.l[r0 + 1]; - int r0bits; - if (a1 >= bigv) - break; - r0bits = 0; - r0t = gfc->choose_table(ix, ix + a1, &r0bits); - - for (r1 = 0; r1 < 8; r1++) { - int const a2 = gfc->scalefac_band.l[r0 + r1 + 2]; - if (a2 >= bigv) - break; - - bits = r0bits; - r1t = gfc->choose_table(ix + a1, ix + a2, &bits); - if (r01_bits[r0 + r1] > bits) { - r01_bits[r0 + r1] = bits; - r01_div[r0 + r1] = r0; - r0_tbl[r0 + r1] = r0t; - r1_tbl[r0 + r1] = r1t; - } - } - } -} - -inline static void -recalc_divide_sub(const lame_internal_flags * const gfc, - const gr_info * cod_info2, - gr_info * const gi, - const int *const ix, - const int r01_bits[], const int r01_div[], const int r0_tbl[], const int r1_tbl[]) -{ - int bits, r2, a2, bigv, r2t; - - bigv = cod_info2->big_values; - - for (r2 = 2; r2 < SBMAX_l + 1; r2++) { - a2 = gfc->scalefac_band.l[r2]; - if (a2 >= bigv) - break; - - bits = r01_bits[r2 - 2] + cod_info2->count1bits; - if (gi->part2_3_length <= bits) - break; - - r2t = gfc->choose_table(ix + a2, ix + bigv, &bits); - if (gi->part2_3_length <= bits) - continue; - - memcpy(gi, cod_info2, sizeof(gr_info)); - gi->part2_3_length = bits; - gi->region0_count = r01_div[r2 - 2]; - gi->region1_count = r2 - 2 - r01_div[r2 - 2]; - gi->table_select[0] = r0_tbl[r2 - 2]; - gi->table_select[1] = r1_tbl[r2 - 2]; - gi->table_select[2] = r2t; - } -} - - - - -void -best_huffman_divide(const lame_internal_flags * const gfc, gr_info * const gi) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - int i, a1, a2; - gr_info cod_info2; - int const *const ix = gi->l3_enc; - - int r01_bits[7 + 15 + 1]; - int r01_div[7 + 15 + 1]; - int r0_tbl[7 + 15 + 1]; - int r1_tbl[7 + 15 + 1]; - - - /* SHORT BLOCK stuff fails for MPEG2 */ - if (gi->block_type == SHORT_TYPE && cfg->mode_gr == 1) - return; - - - memcpy(&cod_info2, gi, sizeof(gr_info)); - if (gi->block_type == NORM_TYPE) { - recalc_divide_init(gfc, gi, ix, r01_bits, r01_div, r0_tbl, r1_tbl); - recalc_divide_sub(gfc, &cod_info2, gi, ix, r01_bits, r01_div, r0_tbl, r1_tbl); - } - - i = cod_info2.big_values; - if (i == 0 || (unsigned int) (ix[i - 2] | ix[i - 1]) > 1) - return; - - i = gi->count1 + 2; - if (i > 576) - return; - - /* Determines the number of bits to encode the quadruples. */ - memcpy(&cod_info2, gi, sizeof(gr_info)); - cod_info2.count1 = i; - a1 = a2 = 0; - - assert(i <= 576); - - for (; i > cod_info2.big_values; i -= 4) { - int const p = ((ix[i - 4] * 2 + ix[i - 3]) * 2 + ix[i - 2]) * 2 + ix[i - 1]; - a1 += t32l[p]; - a2 += t33l[p]; - } - cod_info2.big_values = i; - - cod_info2.count1table_select = 0; - if (a1 > a2) { - a1 = a2; - cod_info2.count1table_select = 1; - } - - cod_info2.count1bits = a1; - - if (cod_info2.block_type == NORM_TYPE) - recalc_divide_sub(gfc, &cod_info2, gi, ix, r01_bits, r01_div, r0_tbl, r1_tbl); - else { - /* Count the number of bits necessary to code the bigvalues region. */ - cod_info2.part2_3_length = a1; - a1 = gfc->scalefac_band.l[7 + 1]; - if (a1 > i) { - a1 = i; - } - if (a1 > 0) - cod_info2.table_select[0] = - gfc->choose_table(ix, ix + a1, (int *) &cod_info2.part2_3_length); - if (i > a1) - cod_info2.table_select[1] = - gfc->choose_table(ix + a1, ix + i, (int *) &cod_info2.part2_3_length); - if (gi->part2_3_length > cod_info2.part2_3_length) - memcpy(gi, &cod_info2, sizeof(gr_info)); - } -} - -static const int slen1_n[16] = { 1, 1, 1, 1, 8, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16 }; -static const int slen2_n[16] = { 1, 2, 4, 8, 1, 2, 4, 8, 2, 4, 8, 2, 4, 8, 4, 8 }; -const int slen1_tab[16] = { 0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4 }; -const int slen2_tab[16] = { 0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3 }; - -static void -scfsi_calc(int ch, III_side_info_t * l3_side) -{ - unsigned int i; - int s1, s2, c1, c2; - int sfb; - gr_info *const gi = &l3_side->tt[1][ch]; - gr_info const *const g0 = &l3_side->tt[0][ch]; - - for (i = 0; i < (sizeof(scfsi_band) / sizeof(int)) - 1; i++) { - for (sfb = scfsi_band[i]; sfb < scfsi_band[i + 1]; sfb++) { - if (g0->scalefac[sfb] != gi->scalefac[sfb] - && gi->scalefac[sfb] >= 0) - break; - } - if (sfb == scfsi_band[i + 1]) { - for (sfb = scfsi_band[i]; sfb < scfsi_band[i + 1]; sfb++) { - gi->scalefac[sfb] = -1; - } - l3_side->scfsi[ch][i] = 1; - } - } - - s1 = c1 = 0; - for (sfb = 0; sfb < 11; sfb++) { - if (gi->scalefac[sfb] == -1) - continue; - c1++; - if (s1 < gi->scalefac[sfb]) - s1 = gi->scalefac[sfb]; - } - - s2 = c2 = 0; - for (; sfb < SBPSY_l; sfb++) { - if (gi->scalefac[sfb] == -1) - continue; - c2++; - if (s2 < gi->scalefac[sfb]) - s2 = gi->scalefac[sfb]; - } - - for (i = 0; i < 16; i++) { - if (s1 < slen1_n[i] && s2 < slen2_n[i]) { - int const c = slen1_tab[i] * c1 + slen2_tab[i] * c2; - if (gi->part2_length > c) { - gi->part2_length = c; - gi->scalefac_compress = (int)i; - } - } - } -} - -/* -Find the optimal way to store the scalefactors. -Only call this routine after final scalefactors have been -chosen and the channel/granule will not be re-encoded. - */ -void -best_scalefac_store(const lame_internal_flags * gfc, - const int gr, const int ch, III_side_info_t * const l3_side) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - /* use scalefac_scale if we can */ - gr_info *const gi = &l3_side->tt[gr][ch]; - int sfb, i, j, l; - int recalc = 0; - - /* remove scalefacs from bands with ix=0. This idea comes - * from the AAC ISO docs. added mt 3/00 */ - /* check if l3_enc=0 */ - j = 0; - for (sfb = 0; sfb < gi->sfbmax; sfb++) { - int const width = gi->width[sfb]; - assert(width >= 0); - for (l = j, j += width; l < j; ++l) { - if (gi->l3_enc[l] != 0) - break; - } - if (l == j) - gi->scalefac[sfb] = recalc = -2; /* anything goes. */ - /* only best_scalefac_store and calc_scfsi - * know--and only they should know--about the magic number -2. - */ - } - - if (!gi->scalefac_scale && !gi->preflag) { - int s = 0; - for (sfb = 0; sfb < gi->sfbmax; sfb++) - if (gi->scalefac[sfb] > 0) - s |= gi->scalefac[sfb]; - - if (!(s & 1) && s != 0) { - for (sfb = 0; sfb < gi->sfbmax; sfb++) - if (gi->scalefac[sfb] > 0) - gi->scalefac[sfb] >>= 1; - - gi->scalefac_scale = recalc = 1; - } - } - - if (!gi->preflag && gi->block_type != SHORT_TYPE && cfg->mode_gr == 2) { - for (sfb = 11; sfb < SBPSY_l; sfb++) - if (gi->scalefac[sfb] < pretab[sfb] && gi->scalefac[sfb] != -2) - break; - if (sfb == SBPSY_l) { - for (sfb = 11; sfb < SBPSY_l; sfb++) - if (gi->scalefac[sfb] > 0) - gi->scalefac[sfb] -= pretab[sfb]; - - gi->preflag = recalc = 1; - } - } - - for (i = 0; i < 4; i++) - l3_side->scfsi[ch][i] = 0; - - if (cfg->mode_gr == 2 && gr == 1 - && l3_side->tt[0][ch].block_type != SHORT_TYPE - && l3_side->tt[1][ch].block_type != SHORT_TYPE) { - scfsi_calc(ch, l3_side); - recalc = 0; - } - for (sfb = 0; sfb < gi->sfbmax; sfb++) { - if (gi->scalefac[sfb] == -2) { - gi->scalefac[sfb] = 0; /* if anything goes, then 0 is a good choice */ - } - } - if (recalc) { - (void) scale_bitcount(gfc, gi); - } -} - - -#ifndef NDEBUG -static int -all_scalefactors_not_negative(int const *scalefac, int n) -{ - int i; - for (i = 0; i < n; ++i) { - if (scalefac[i] < 0) - return 0; - } - return 1; -} -#endif - - -/* number of bits used to encode scalefacs */ - -/* 18*slen1_tab[i] + 18*slen2_tab[i] */ -static const int scale_short[16] = { - 0, 18, 36, 54, 54, 36, 54, 72, 54, 72, 90, 72, 90, 108, 108, 126 -}; - -/* 17*slen1_tab[i] + 18*slen2_tab[i] */ -static const int scale_mixed[16] = { - 0, 18, 36, 54, 51, 35, 53, 71, 52, 70, 88, 69, 87, 105, 104, 122 -}; - -/* 11*slen1_tab[i] + 10*slen2_tab[i] */ -static const int scale_long[16] = { - 0, 10, 20, 30, 33, 21, 31, 41, 32, 42, 52, 43, 53, 63, 64, 74 -}; - - -/*************************************************************************/ -/* scale_bitcount */ -/*************************************************************************/ - -/* Also calculates the number of bits necessary to code the scalefactors. */ - -static int -mpeg1_scale_bitcount(const lame_internal_flags * gfc, gr_info * const cod_info) -{ - int k, sfb, max_slen1 = 0, max_slen2 = 0; - - /* maximum values */ - const int *tab; - int *const scalefac = cod_info->scalefac; - - (void) gfc; - assert(all_scalefactors_not_negative(scalefac, cod_info->sfbmax)); - - if (cod_info->block_type == SHORT_TYPE) { - tab = scale_short; - if (cod_info->mixed_block_flag) - tab = scale_mixed; - } - else { /* block_type == 1,2,or 3 */ - tab = scale_long; - if (!cod_info->preflag) { - for (sfb = 11; sfb < SBPSY_l; sfb++) - if (scalefac[sfb] < pretab[sfb]) - break; - - if (sfb == SBPSY_l) { - cod_info->preflag = 1; - for (sfb = 11; sfb < SBPSY_l; sfb++) - scalefac[sfb] -= pretab[sfb]; - } - } - } - - for (sfb = 0; sfb < cod_info->sfbdivide; sfb++) - if (max_slen1 < scalefac[sfb]) - max_slen1 = scalefac[sfb]; - - for (; sfb < cod_info->sfbmax; sfb++) - if (max_slen2 < scalefac[sfb]) - max_slen2 = scalefac[sfb]; - - /* from Takehiro TOMINAGA <tominaga@isoternet.org> 10/99 - * loop over *all* posible values of scalefac_compress to find the - * one which uses the smallest number of bits. ISO would stop - * at first valid index */ - cod_info->part2_length = LARGE_BITS; - for (k = 0; k < 16; k++) { - if (max_slen1 < slen1_n[k] && max_slen2 < slen2_n[k] - && cod_info->part2_length > tab[k]) { - cod_info->part2_length = tab[k]; - cod_info->scalefac_compress = k; - } - } - return cod_info->part2_length == LARGE_BITS; -} - - - -/* - table of largest scalefactor values for MPEG2 -*/ -static const int max_range_sfac_tab[6][4] = { - {15, 15, 7, 7}, - {15, 15, 7, 0}, - {7, 3, 0, 0}, - {15, 31, 31, 0}, - {7, 7, 7, 0}, - {3, 3, 0, 0} -}; - - - - -/*************************************************************************/ -/* scale_bitcount_lsf */ -/*************************************************************************/ - -/* Also counts the number of bits to encode the scalefacs but for MPEG 2 */ -/* Lower sampling frequencies (24, 22.05 and 16 kHz.) */ - -/* This is reverse-engineered from section 2.4.3.2 of the MPEG2 IS, */ -/* "Audio Decoding Layer III" */ - -static int -mpeg2_scale_bitcount(const lame_internal_flags * gfc, gr_info * const cod_info) -{ - int table_number, row_in_table, partition, nr_sfb, window, over; - int i, sfb, max_sfac[4]; - const int *partition_table; - int const *const scalefac = cod_info->scalefac; - - /* - Set partition table. Note that should try to use table one, - but do not yet... - */ - if (cod_info->preflag) - table_number = 2; - else - table_number = 0; - - for (i = 0; i < 4; i++) - max_sfac[i] = 0; - - if (cod_info->block_type == SHORT_TYPE) { - row_in_table = 1; - partition_table = &nr_of_sfb_block[table_number][row_in_table][0]; - for (sfb = 0, partition = 0; partition < 4; partition++) { - nr_sfb = partition_table[partition] / 3; - for (i = 0; i < nr_sfb; i++, sfb++) - for (window = 0; window < 3; window++) - if (scalefac[sfb * 3 + window] > max_sfac[partition]) - max_sfac[partition] = scalefac[sfb * 3 + window]; - } - } - else { - row_in_table = 0; - partition_table = &nr_of_sfb_block[table_number][row_in_table][0]; - for (sfb = 0, partition = 0; partition < 4; partition++) { - nr_sfb = partition_table[partition]; - for (i = 0; i < nr_sfb; i++, sfb++) - if (scalefac[sfb] > max_sfac[partition]) - max_sfac[partition] = scalefac[sfb]; - } - } - - for (over = 0, partition = 0; partition < 4; partition++) { - if (max_sfac[partition] > max_range_sfac_tab[table_number][partition]) - over++; - } - if (!over) { - /* - Since no bands have been over-amplified, we can set scalefac_compress - and slen[] for the formatter - */ - static const int log2tab[] = { 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4 }; - - int slen1, slen2, slen3, slen4; - - cod_info->sfb_partition_table = nr_of_sfb_block[table_number][row_in_table]; - for (partition = 0; partition < 4; partition++) - cod_info->slen[partition] = log2tab[max_sfac[partition]]; - - /* set scalefac_compress */ - slen1 = cod_info->slen[0]; - slen2 = cod_info->slen[1]; - slen3 = cod_info->slen[2]; - slen4 = cod_info->slen[3]; - - switch (table_number) { - case 0: - cod_info->scalefac_compress = (((slen1 * 5) + slen2) << 4) - + (slen3 << 2) - + slen4; - break; - - case 1: - cod_info->scalefac_compress = 400 + (((slen1 * 5) + slen2) << 2) - + slen3; - break; - - case 2: - cod_info->scalefac_compress = 500 + (slen1 * 3) + slen2; - break; - - default: - ERRORF(gfc, "intensity stereo not implemented yet\n"); - break; - } - } -#ifdef DEBUG - if (over) - ERRORF(gfc, "---WARNING !! Amplification of some bands over limits\n"); -#endif - if (!over) { - assert(cod_info->sfb_partition_table); - cod_info->part2_length = 0; - for (partition = 0; partition < 4; partition++) - cod_info->part2_length += - cod_info->slen[partition] * cod_info->sfb_partition_table[partition]; - } - return over; -} - - -int -scale_bitcount(const lame_internal_flags * gfc, gr_info * cod_info) -{ - if (gfc->cfg.mode_gr == 2) { - return mpeg1_scale_bitcount(gfc, cod_info); - } - else { - return mpeg2_scale_bitcount(gfc, cod_info); - } -} - - -#ifdef MMX_choose_table -extern int choose_table_MMX(const int *ix, const int *const end, int *const s); -#endif - -void -huffman_init(lame_internal_flags * const gfc) -{ - int i; - - gfc->choose_table = choose_table_nonMMX; - -#ifdef MMX_choose_table - if (gfc->CPU_features.MMX) { - gfc->choose_table = choose_table_MMX; - } -#endif - - for (i = 2; i <= 576; i += 2) { - int scfb_anz = 0, bv_index; - while (gfc->scalefac_band.l[++scfb_anz] < i); - - bv_index = subdv_table[scfb_anz].region0_count; - while (gfc->scalefac_band.l[bv_index + 1] > i) - bv_index--; - - if (bv_index < 0) { - /* this is an indication that everything is going to - be encoded as region0: bigvalues < region0 < region1 - so lets set region0, region1 to some value larger - than bigvalues */ - bv_index = subdv_table[scfb_anz].region0_count; - } - - gfc->sv_qnt.bv_scf[i - 2] = bv_index; - - bv_index = subdv_table[scfb_anz].region1_count; - while (gfc->scalefac_band.l[bv_index + gfc->sv_qnt.bv_scf[i - 2] + 2] > i) - bv_index--; - - if (bv_index < 0) { - bv_index = subdv_table[scfb_anz].region1_count; - } - - gfc->sv_qnt.bv_scf[i - 1] = bv_index; - } -} diff --git a/platform/win32/msvc/external/lame/libmp3lame/util.c b/platform/win32/msvc/external/lame/libmp3lame/util.c deleted file mode 100644 index e0d48d3f697..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/util.c +++ /dev/null @@ -1,1009 +0,0 @@ -/* - * lame utility library source file - * - * Copyright (c) 1999 Albert L Faber - * Copyright (c) 2000-2005 Alexander Leidinger - * - * 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. - */ - -/* $Id: util.c,v 1.154.2.1 2012/01/08 23:49:58 robert Exp $ */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "lame.h" -#include "machine.h" -#include "encoder.h" -#include "util.h" -#include "tables.h" - -#define PRECOMPUTE -#if defined(__FreeBSD__) && !defined(__alpha__) -# include <machine/floatingpoint.h> -#endif - - -/*********************************************************************** -* -* Global Function Definitions -* -***********************************************************************/ -/*empty and close mallocs in gfc */ - -void -free_id3tag(lame_internal_flags * const gfc) -{ - if (gfc->tag_spec.title != 0) { - free(gfc->tag_spec.title); - gfc->tag_spec.title = 0; - } - if (gfc->tag_spec.artist != 0) { - free(gfc->tag_spec.artist); - gfc->tag_spec.artist = 0; - } - if (gfc->tag_spec.album != 0) { - free(gfc->tag_spec.album); - gfc->tag_spec.album = 0; - } - if (gfc->tag_spec.comment != 0) { - free(gfc->tag_spec.comment); - gfc->tag_spec.comment = 0; - } - - if (gfc->tag_spec.albumart != 0) { - free(gfc->tag_spec.albumart); - gfc->tag_spec.albumart = 0; - gfc->tag_spec.albumart_size = 0; - gfc->tag_spec.albumart_mimetype = MIMETYPE_NONE; - } - if (gfc->tag_spec.v2_head != 0) { - FrameDataNode *node = gfc->tag_spec.v2_head; - do { - void *p = node->dsc.ptr.b; - void *q = node->txt.ptr.b; - void *r = node; - node = node->nxt; - free(p); - free(q); - free(r); - } while (node != 0); - gfc->tag_spec.v2_head = 0; - gfc->tag_spec.v2_tail = 0; - } -} - - -static void -free_global_data(lame_internal_flags * gfc) -{ - if (gfc && gfc->cd_psy) { - if (gfc->cd_psy->l.s3) { - /* XXX allocated in psymodel_init() */ - free(gfc->cd_psy->l.s3); - } - if (gfc->cd_psy->s.s3) { - /* XXX allocated in psymodel_init() */ - free(gfc->cd_psy->s.s3); - } - free(gfc->cd_psy); - gfc->cd_psy = 0; - } -} - - -void -freegfc(lame_internal_flags * const gfc) -{ /* bit stream structure */ - int i; - - - for (i = 0; i <= 2 * BPC; i++) - if (gfc->sv_enc.blackfilt[i] != NULL) { - free(gfc->sv_enc.blackfilt[i]); - gfc->sv_enc.blackfilt[i] = NULL; - } - if (gfc->sv_enc.inbuf_old[0]) { - free(gfc->sv_enc.inbuf_old[0]); - gfc->sv_enc.inbuf_old[0] = NULL; - } - if (gfc->sv_enc.inbuf_old[1]) { - free(gfc->sv_enc.inbuf_old[1]); - gfc->sv_enc.inbuf_old[1] = NULL; - } - - if (gfc->bs.buf != NULL) { - free(gfc->bs.buf); - gfc->bs.buf = NULL; - } - - if (gfc->VBR_seek_table.bag) { - free(gfc->VBR_seek_table.bag); - gfc->VBR_seek_table.bag = NULL; - gfc->VBR_seek_table.size = 0; - } - if (gfc->ATH) { - free(gfc->ATH); - } - if (gfc->sv_rpg.rgdata) { - free(gfc->sv_rpg.rgdata); - } - if (gfc->sv_enc.in_buffer_0) { - free(gfc->sv_enc.in_buffer_0); - } - if (gfc->sv_enc.in_buffer_1) { - free(gfc->sv_enc.in_buffer_1); - } - free_id3tag(gfc); - -#ifdef DECODE_ON_THE_FLY - if (gfc->hip) { - hip_decode_exit(gfc->hip); - gfc->hip = 0; - } -#endif - - free_global_data(gfc); - - free(gfc); -} - -void -malloc_aligned(aligned_pointer_t * ptr, unsigned int size, unsigned int bytes) -{ - if (ptr) { - if (!ptr->pointer) { - ptr->pointer = malloc(size + bytes); - if (bytes > 0) { - ptr->aligned = (void *) ((((size_t) ptr->pointer + bytes - 1) / bytes) * bytes); - } - else { - ptr->aligned = ptr->pointer; - } - } - } -} - -void -free_aligned(aligned_pointer_t * ptr) -{ - if (ptr) { - if (ptr->pointer) { - free(ptr->pointer); - ptr->pointer = 0; - ptr->aligned = 0; - } - } -} - -/*those ATH formulas are returning -their minimum value for input = -1*/ - -static FLOAT -ATHformula_GB(FLOAT f, FLOAT value, FLOAT f_min, FLOAT f_max) -{ - /* from Painter & Spanias - modified by Gabriel Bouvigne to better fit the reality - ath = 3.640 * pow(f,-0.8) - - 6.800 * exp(-0.6*pow(f-3.4,2.0)) - + 6.000 * exp(-0.15*pow(f-8.7,2.0)) - + 0.6* 0.001 * pow(f,4.0); - - - In the past LAME was using the Painter &Spanias formula. - But we had some recurrent problems with HF content. - We measured real ATH values, and found the older formula - to be inacurate in the higher part. So we made this new - formula and this solved most of HF problematic testcases. - The tradeoff is that in VBR mode it increases a lot the - bitrate. */ - - -/*this curve can be udjusted according to the VBR scale: -it adjusts from something close to Painter & Spanias -on V9 up to Bouvigne's formula for V0. This way the VBR -bitrate is more balanced according to the -V value.*/ - - FLOAT ath; - - /* the following Hack allows to ask for the lowest value */ - if (f < -.3) - f = 3410; - - f /= 1000; /* convert to khz */ - f = Max(f_min, f); - f = Min(f_max, f); - - ath = 3.640 * pow(f, -0.8) - - 6.800 * exp(-0.6 * pow(f - 3.4, 2.0)) - + 6.000 * exp(-0.15 * pow(f - 8.7, 2.0)) - + (0.6 + 0.04 * value) * 0.001 * pow(f, 4.0); - return ath; -} - - - -FLOAT -ATHformula(SessionConfig_t const *cfg, FLOAT f) -{ - FLOAT ath; - switch (cfg->ATHtype) { - case 0: - ath = ATHformula_GB(f, 9, 0.1f, 24.0f); - break; - case 1: - ath = ATHformula_GB(f, -1, 0.1f, 24.0f); /*over sensitive, should probably be removed */ - break; - case 2: - ath = ATHformula_GB(f, 0, 0.1f, 24.0f); - break; - case 3: - ath = ATHformula_GB(f, 1, 0.1f, 24.0f) + 6; /*modification of GB formula by Roel */ - break; - case 4: - ath = ATHformula_GB(f, cfg->ATHcurve, 0.1f, 24.0f); - break; - case 5: - ath = ATHformula_GB(f, cfg->ATHcurve, 3.41f, 16.1f); - break; - default: - ath = ATHformula_GB(f, 0, 0.1f, 24.0f); - break; - } - return ath; -} - -/* see for example "Zwicker: Psychoakustik, 1982; ISBN 3-540-11401-7 */ -FLOAT -freq2bark(FLOAT freq) -{ - /* input: freq in hz output: barks */ - if (freq < 0) - freq = 0; - freq = freq * 0.001; - return 13.0 * atan(.76 * freq) + 3.5 * atan(freq * freq / (7.5 * 7.5)); -} - -#if 0 -extern FLOAT freq2cbw(FLOAT freq); - -/* see for example "Zwicker: Psychoakustik, 1982; ISBN 3-540-11401-7 */ -FLOAT -freq2cbw(FLOAT freq) -{ - /* input: freq in hz output: critical band width */ - freq = freq * 0.001; - return 25 + 75 * pow(1 + 1.4 * (freq * freq), 0.69); -} - -#endif - - - - -#define ABS(A) (((A)>0) ? (A) : -(A)) - -int -FindNearestBitrate(int bRate, /* legal rates from 8 to 320 */ - int version, int samplerate) -{ /* MPEG-1 or MPEG-2 LSF */ - int bitrate; - int i; - - if (samplerate < 16000) - version = 2; - - bitrate = bitrate_table[version][1]; - - for (i = 2; i <= 14; i++) { - if (bitrate_table[version][i] > 0) { - if (ABS(bitrate_table[version][i] - bRate) < ABS(bitrate - bRate)) - bitrate = bitrate_table[version][i]; - } - } - return bitrate; -} - - - - - -#ifndef Min -#define Min(A, B) ((A) < (B) ? (A) : (B)) -#endif -#ifndef Max -#define Max(A, B) ((A) > (B) ? (A) : (B)) -#endif - - -/* Used to find table index when - * we need bitrate-based values - * determined using tables - * - * bitrate in kbps - * - * Gabriel Bouvigne 2002-11-03 - */ -int -nearestBitrateFullIndex(uint16_t bitrate) -{ - /* borrowed from DM abr presets */ - - const int full_bitrate_table[] = - { 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 }; - - - int lower_range = 0, lower_range_kbps = 0, upper_range = 0, upper_range_kbps = 0; - - - int b; - - - /* We assume specified bitrate will be 320kbps */ - upper_range_kbps = full_bitrate_table[16]; - upper_range = 16; - lower_range_kbps = full_bitrate_table[16]; - lower_range = 16; - - /* Determine which significant bitrates the value specified falls between, - * if loop ends without breaking then we were correct above that the value was 320 - */ - for (b = 0; b < 16; b++) { - if ((Max(bitrate, full_bitrate_table[b + 1])) != bitrate) { - upper_range_kbps = full_bitrate_table[b + 1]; - upper_range = b + 1; - lower_range_kbps = full_bitrate_table[b]; - lower_range = (b); - break; /* We found upper range */ - } - } - - /* Determine which range the value specified is closer to */ - if ((upper_range_kbps - bitrate) > (bitrate - lower_range_kbps)) { - return lower_range; - } - return upper_range; -} - - - - - -/* map frequency to a valid MP3 sample frequency - * - * Robert Hegemann 2000-07-01 - */ -int -map2MP3Frequency(int freq) -{ - if (freq <= 8000) - return 8000; - if (freq <= 11025) - return 11025; - if (freq <= 12000) - return 12000; - if (freq <= 16000) - return 16000; - if (freq <= 22050) - return 22050; - if (freq <= 24000) - return 24000; - if (freq <= 32000) - return 32000; - if (freq <= 44100) - return 44100; - - return 48000; -} - -int -BitrateIndex(int bRate, /* legal rates from 32 to 448 kbps */ - int version, /* MPEG-1 or MPEG-2/2.5 LSF */ - int samplerate) -{ /* convert bitrate in kbps to index */ - int i; - if (samplerate < 16000) - version = 2; - for (i = 0; i <= 14; i++) { - if (bitrate_table[version][i] > 0) { - if (bitrate_table[version][i] == bRate) { - return i; - } - } - } - return -1; -} - -/* convert samp freq in Hz to index */ - -int -SmpFrqIndex(int sample_freq, int *const version) -{ - switch (sample_freq) { - case 44100: - *version = 1; - return 0; - case 48000: - *version = 1; - return 1; - case 32000: - *version = 1; - return 2; - case 22050: - *version = 0; - return 0; - case 24000: - *version = 0; - return 1; - case 16000: - *version = 0; - return 2; - case 11025: - *version = 0; - return 0; - case 12000: - *version = 0; - return 1; - case 8000: - *version = 0; - return 2; - default: - *version = 0; - return -1; - } -} - - -/***************************************************************************** -* -* End of bit_stream.c package -* -*****************************************************************************/ - - - - - - - - - - -/* resampling via FIR filter, blackman window */ -inline static FLOAT -blackman(FLOAT x, FLOAT fcn, int l) -{ - /* This algorithm from: - SIGNAL PROCESSING ALGORITHMS IN FORTRAN AND C - S.D. Stearns and R.A. David, Prentice-Hall, 1992 - */ - FLOAT bkwn, x2; - FLOAT const wcn = (PI * fcn); - - x /= l; - if (x < 0) - x = 0; - if (x > 1) - x = 1; - x2 = x - .5; - - bkwn = 0.42 - 0.5 * cos(2 * x * PI) + 0.08 * cos(4 * x * PI); - if (fabs(x2) < 1e-9) - return wcn / PI; - else - return (bkwn * sin(l * wcn * x2) / (PI * l * x2)); - - -} - - - - -/* gcd - greatest common divisor */ -/* Joint work of Euclid and M. Hendry */ - -static int -gcd(int i, int j) -{ - /* assert ( i > 0 && j > 0 ); */ - return j ? gcd(j, i % j) : i; -} - - - -static int -fill_buffer_resample(lame_internal_flags * gfc, - sample_t * outbuf, - int desired_len, sample_t const *inbuf, int len, int *num_used, int ch) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - EncStateVar_t *esv = &gfc->sv_enc; - double resample_ratio = (double)cfg->samplerate_in / (double)cfg->samplerate_out; - int BLACKSIZE; - FLOAT offset, xvalue; - int i, j = 0, k; - int filter_l; - FLOAT fcn, intratio; - FLOAT *inbuf_old; - int bpc; /* number of convolution functions to pre-compute */ - bpc = cfg->samplerate_out / gcd(cfg->samplerate_out, cfg->samplerate_in); - if (bpc > BPC) - bpc = BPC; - - intratio = (fabs(resample_ratio - floor(.5 + resample_ratio)) < .0001); - fcn = 1.00 / resample_ratio; - if (fcn > 1.00) - fcn = 1.00; - filter_l = 31; /* must be odd */ - filter_l += intratio; /* unless resample_ratio=int, it must be even */ - - - BLACKSIZE = filter_l + 1; /* size of data needed for FIR */ - - if (gfc->fill_buffer_resample_init == 0) { - esv->inbuf_old[0] = calloc(BLACKSIZE, sizeof(esv->inbuf_old[0][0])); - esv->inbuf_old[1] = calloc(BLACKSIZE, sizeof(esv->inbuf_old[0][0])); - for (i = 0; i <= 2 * bpc; ++i) - esv->blackfilt[i] = calloc(BLACKSIZE, sizeof(esv->blackfilt[0][0])); - - esv->itime[0] = 0; - esv->itime[1] = 0; - - /* precompute blackman filter coefficients */ - for (j = 0; j <= 2 * bpc; j++) { - FLOAT sum = 0.; - offset = (j - bpc) / (2. * bpc); - for (i = 0; i <= filter_l; i++) - sum += esv->blackfilt[j][i] = blackman(i - offset, fcn, filter_l); - for (i = 0; i <= filter_l; i++) - esv->blackfilt[j][i] /= sum; - } - gfc->fill_buffer_resample_init = 1; - } - - inbuf_old = esv->inbuf_old[ch]; - - /* time of j'th element in inbuf = itime + j/ifreq; */ - /* time of k'th element in outbuf = j/ofreq */ - for (k = 0; k < desired_len; k++) { - double time0 = k * resample_ratio; /* time of k'th output sample */ - int joff; - - j = floor(time0 - esv->itime[ch]); - - /* check if we need more input data */ - if ((filter_l + j - filter_l / 2) >= len) - break; - - /* blackman filter. by default, window centered at j+.5(filter_l%2) */ - /* but we want a window centered at time0. */ - offset = (time0 - esv->itime[ch] - (j + .5 * (filter_l % 2))); - assert(fabs(offset) <= .501); - - /* find the closest precomputed window for this offset: */ - joff = floor((offset * 2 * bpc) + bpc + .5); - - xvalue = 0.; - for (i = 0; i <= filter_l; ++i) { - int const j2 = i + j - filter_l / 2; - sample_t y; - assert(j2 < len); - assert(j2 + BLACKSIZE >= 0); - y = (j2 < 0) ? inbuf_old[BLACKSIZE + j2] : inbuf[j2]; -#ifdef PRECOMPUTE - xvalue += y * esv->blackfilt[joff][i]; -#else - xvalue += y * blackman(i - offset, fcn, filter_l); /* very slow! */ -#endif - } - outbuf[k] = xvalue; - } - - - /* k = number of samples added to outbuf */ - /* last k sample used data from [j-filter_l/2,j+filter_l-filter_l/2] */ - - /* how many samples of input data were used: */ - *num_used = Min(len, filter_l + j - filter_l / 2); - - /* adjust our input time counter. Incriment by the number of samples used, - * then normalize so that next output sample is at time 0, next - * input buffer is at time itime[ch] */ - esv->itime[ch] += *num_used - k * resample_ratio; - - /* save the last BLACKSIZE samples into the inbuf_old buffer */ - if (*num_used >= BLACKSIZE) { - for (i = 0; i < BLACKSIZE; i++) - inbuf_old[i] = inbuf[*num_used + i - BLACKSIZE]; - } - else { - /* shift in *num_used samples into inbuf_old */ - int const n_shift = BLACKSIZE - *num_used; /* number of samples to shift */ - - /* shift n_shift samples by *num_used, to make room for the - * num_used new samples */ - for (i = 0; i < n_shift; ++i) - inbuf_old[i] = inbuf_old[i + *num_used]; - - /* shift in the *num_used samples */ - for (j = 0; i < BLACKSIZE; ++i, ++j) - inbuf_old[i] = inbuf[j]; - - assert(j == *num_used); - } - return k; /* return the number samples created at the new samplerate */ -} - -int -isResamplingNecessary(SessionConfig_t const* cfg) -{ - int const l = cfg->samplerate_out * 0.9995f; - int const h = cfg->samplerate_out * 1.0005f; - return (cfg->samplerate_in < l) || (h < cfg->samplerate_in) ? 1 : 0; -} - -/* copy in new samples from in_buffer into mfbuf, with resampling - if necessary. n_in = number of samples from the input buffer that - were used. n_out = number of samples copied into mfbuf */ - -void -fill_buffer(lame_internal_flags * gfc, - sample_t * const mfbuf[2], sample_t const * const in_buffer[2], int nsamples, int *n_in, int *n_out) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - int mf_size = gfc->sv_enc.mf_size; - int framesize = 576 * cfg->mode_gr; - int nout, ch = 0; - int nch = cfg->channels_out; - - /* copy in new samples into mfbuf, with resampling if necessary */ - if (isResamplingNecessary(cfg)) { - do { - nout = - fill_buffer_resample(gfc, &mfbuf[ch][mf_size], - framesize, in_buffer[ch], nsamples, n_in, ch); - } while (++ch < nch); - *n_out = nout; - } - else { - nout = Min(framesize, nsamples); - do { - memcpy(&mfbuf[ch][mf_size], &in_buffer[ch][0], nout * sizeof(mfbuf[0][0])); - } while (++ch < nch); - *n_out = nout; - *n_in = nout; - } -} - - - - - - - -/*********************************************************************** -* -* Message Output -* -***********************************************************************/ - -void -lame_report_def(const char *format, va_list args) -{ - (void) vfprintf(stderr, format, args); - fflush(stderr); /* an debug function should flush immediately */ -} - -void -lame_report_fnc(lame_report_function print_f, const char *format, ...) -{ - if (print_f) { - va_list args; - va_start(args, format); - print_f(format, args); - va_end(args); - } -} - - -void -lame_debugf(const lame_internal_flags* gfc, const char *format, ...) -{ - if (gfc && gfc->report_dbg) { - va_list args; - va_start(args, format); - gfc->report_dbg(format, args); - va_end(args); - } -} - - -void -lame_msgf(const lame_internal_flags* gfc, const char *format, ...) -{ - if (gfc && gfc->report_msg) { - va_list args; - va_start(args, format); - gfc->report_msg(format, args); - va_end(args); - } -} - - -void -lame_errorf(const lame_internal_flags* gfc, const char *format, ...) -{ - if (gfc && gfc->report_err) { - va_list args; - va_start(args, format); - gfc->report_err(format, args); - va_end(args); - } -} - - - -/*********************************************************************** - * - * routines to detect CPU specific features like 3DNow, MMX, SSE - * - * donated by Frank Klemm - * added Robert Hegemann 2000-10-10 - * - ***********************************************************************/ - -#ifdef HAVE_NASM -extern int has_MMX_nasm(void); -extern int has_3DNow_nasm(void); -extern int has_SSE_nasm(void); -extern int has_SSE2_nasm(void); -#endif - -int -has_MMX(void) -{ -#ifdef HAVE_NASM - return has_MMX_nasm(); -#else - return 0; /* don't know, assume not */ -#endif -} - -int -has_3DNow(void) -{ -#ifdef HAVE_NASM - return has_3DNow_nasm(); -#else - return 0; /* don't know, assume not */ -#endif -} - -int -has_SSE(void) -{ -#ifdef HAVE_NASM - return has_SSE_nasm(); -#else -#if defined( _M_X64 ) || defined( MIN_ARCH_SSE ) - return 1; -#else - return 0; /* don't know, assume not */ -#endif -#endif -} - -int -has_SSE2(void) -{ -#ifdef HAVE_NASM - return has_SSE2_nasm(); -#else -#if defined( _M_X64 ) || defined( MIN_ARCH_SSE ) - return 1; -#else - return 0; /* don't know, assume not */ -#endif -#endif -} - -void -disable_FPE(void) -{ -/* extremly system dependent stuff, move to a lib to make the code readable */ -/*==========================================================================*/ - - - - /* - * Disable floating point exceptions - */ - - - - -#if defined(__FreeBSD__) && !defined(__alpha__) - { - /* seet floating point mask to the Linux default */ - fp_except_t mask; - mask = fpgetmask(); - /* if bit is set, we get SIGFPE on that error! */ - fpsetmask(mask & ~(FP_X_INV | FP_X_DZ)); - /* DEBUGF("FreeBSD mask is 0x%x\n",mask); */ - } -#endif - -#if defined(__riscos__) && !defined(ABORTFP) - /* Disable FPE's under RISC OS */ - /* if bit is set, we disable trapping that error! */ - /* _FPE_IVO : invalid operation */ - /* _FPE_DVZ : divide by zero */ - /* _FPE_OFL : overflow */ - /* _FPE_UFL : underflow */ - /* _FPE_INX : inexact */ - DisableFPETraps(_FPE_IVO | _FPE_DVZ | _FPE_OFL); -#endif - - /* - * Debugging stuff - * The default is to ignore FPE's, unless compiled with -DABORTFP - * so add code below to ENABLE FPE's. - */ - -#if defined(ABORTFP) -#if defined(_MSC_VER) - { -#if 0 - /* rh 061207 - the following fix seems to be a workaround for a problem in the - parent process calling LAME. It would be better to fix the broken - application => code disabled. - */ - - /* set affinity to a single CPU. Fix for EAC/lame on SMP systems from - "Todd Richmond" <todd.richmond@openwave.com> */ - SYSTEM_INFO si; - GetSystemInfo(&si); - SetProcessAffinityMask(GetCurrentProcess(), si.dwActiveProcessorMask); -#endif -#include <float.h> - unsigned int mask; - mask = _controlfp(0, 0); - mask &= ~(_EM_OVERFLOW | _EM_UNDERFLOW | _EM_ZERODIVIDE | _EM_INVALID); - mask = _controlfp(mask, _MCW_EM); - } -#elif defined(__CYGWIN__) -# define _FPU_GETCW(cw) __asm__ ("fnstcw %0" : "=m" (*&cw)) -# define _FPU_SETCW(cw) __asm__ ("fldcw %0" : : "m" (*&cw)) - -# define _EM_INEXACT 0x00000020 /* inexact (precision) */ -# define _EM_UNDERFLOW 0x00000010 /* underflow */ -# define _EM_OVERFLOW 0x00000008 /* overflow */ -# define _EM_ZERODIVIDE 0x00000004 /* zero divide */ -# define _EM_INVALID 0x00000001 /* invalid */ - { - unsigned int mask; - _FPU_GETCW(mask); - /* Set the FPU control word to abort on most FPEs */ - mask &= ~(_EM_OVERFLOW | _EM_ZERODIVIDE | _EM_INVALID); - _FPU_SETCW(mask); - } -# elif defined(__linux__) - { - -# include <fpu_control.h> -# ifndef _FPU_GETCW -# define _FPU_GETCW(cw) __asm__ ("fnstcw %0" : "=m" (*&cw)) -# endif -# ifndef _FPU_SETCW -# define _FPU_SETCW(cw) __asm__ ("fldcw %0" : : "m" (*&cw)) -# endif - - /* - * Set the Linux mask to abort on most FPE's - * if bit is set, we _mask_ SIGFPE on that error! - * mask &= ~( _FPU_MASK_IM | _FPU_MASK_ZM | _FPU_MASK_OM | _FPU_MASK_UM ); - */ - - unsigned int mask; - _FPU_GETCW(mask); - mask &= ~(_FPU_MASK_IM | _FPU_MASK_ZM | _FPU_MASK_OM); - _FPU_SETCW(mask); - } -#endif -#endif /* ABORTFP */ -} - - - - - -#ifdef USE_FAST_LOG -/*********************************************************************** - * - * Fast Log Approximation for log2, used to approximate every other log - * (log10 and log) - * maximum absolute error for log10 is around 10-6 - * maximum *relative* error can be high when x is almost 1 because error/log10(x) tends toward x/e - * - * use it if typical RESULT values are > 1e-5 (for example if x>1.00001 or x<0.99999) - * or if the relative precision in the domain around 1 is not important (result in 1 is exact and 0) - * - ***********************************************************************/ - - -#define LOG2_SIZE (512) -#define LOG2_SIZE_L2 (9) - -static ieee754_float32_t log_table[LOG2_SIZE + 1]; - - - -void -init_log_table(void) -{ - int j; - static int init = 0; - - /* Range for log2(x) over [1,2[ is [0,1[ */ - assert((1 << LOG2_SIZE_L2) == LOG2_SIZE); - - if (!init) { - for (j = 0; j < LOG2_SIZE + 1; j++) - log_table[j] = log(1.0f + j / (ieee754_float32_t) LOG2_SIZE) / log(2.0f); - } - init = 1; -} - - - -ieee754_float32_t -fast_log2(ieee754_float32_t x) -{ - ieee754_float32_t log2val, partial; - union { - ieee754_float32_t f; - int i; - } fi; - int mantisse; - fi.f = x; - mantisse = fi.i & 0x7fffff; - log2val = ((fi.i >> 23) & 0xFF) - 0x7f; - partial = (mantisse & ((1 << (23 - LOG2_SIZE_L2)) - 1)); - partial *= 1.0f / ((1 << (23 - LOG2_SIZE_L2))); - - - mantisse >>= (23 - LOG2_SIZE_L2); - - /* log2val += log_table[mantisse]; without interpolation the results are not good */ - log2val += log_table[mantisse] * (1.0f - partial) + log_table[mantisse + 1] * partial; - - return log2val; -} - -#else /* Don't use FAST_LOG */ - - -void -init_log_table(void) -{ -} - - -#endif - -/* end of util.c */ diff --git a/platform/win32/msvc/external/lame/libmp3lame/util.h b/platform/win32/msvc/external/lame/libmp3lame/util.h deleted file mode 100644 index 1b277d92fc8..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/util.h +++ /dev/null @@ -1,620 +0,0 @@ -/* - * lame utility library include file - * - * Copyright (c) 1999 Albert L Faber - * Copyright (c) 2008 Robert Hegemann - * - * 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 LAME_UTIL_H -#define LAME_UTIL_H - -#include "l3side.h" -#include "id3tag.h" -#include "lame_global_flags.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*********************************************************************** -* -* Global Definitions -* -***********************************************************************/ - -#ifndef FALSE -#define FALSE 0 -#endif - -#ifndef TRUE -#define TRUE (!FALSE) -#endif - -#ifdef UINT_MAX -# define MAX_U_32_NUM UINT_MAX -#else -# define MAX_U_32_NUM 0xFFFFFFFF -#endif - -#ifndef PI -# ifdef M_PI -# define PI M_PI -# else -# define PI 3.14159265358979323846 -# endif -#endif - - -#ifdef M_LN2 -# define LOG2 M_LN2 -#else -# define LOG2 0.69314718055994530942 -#endif - -#ifdef M_LN10 -# define LOG10 M_LN10 -#else -# define LOG10 2.30258509299404568402 -#endif - - -#ifdef M_SQRT2 -# define SQRT2 M_SQRT2 -#else -# define SQRT2 1.41421356237309504880 -#endif - - -#define CRC16_POLYNOMIAL 0x8005 - -#define MAX_BITS_PER_CHANNEL 4095 -#define MAX_BITS_PER_GRANULE 7680 - -/* "bit_stream.h" Definitions */ -#define BUFFER_SIZE LAME_MAXMP3BUFFER - -#define Min(A, B) ((A) < (B) ? (A) : (B)) -#define Max(A, B) ((A) > (B) ? (A) : (B)) - -/* log/log10 approximations */ -#ifdef USE_FAST_LOG -#define FAST_LOG10(x) (fast_log2(x)*(LOG2/LOG10)) -#define FAST_LOG(x) (fast_log2(x)*LOG2) -#define FAST_LOG10_X(x,y) (fast_log2(x)*(LOG2/LOG10*(y))) -#define FAST_LOG_X(x,y) (fast_log2(x)*(LOG2*(y))) -#else -#define FAST_LOG10(x) log10(x) -#define FAST_LOG(x) log(x) -#define FAST_LOG10_X(x,y) (log10(x)*(y)) -#define FAST_LOG_X(x,y) (log(x)*(y)) -#endif - - - struct replaygain_data; -#ifndef replaygain_data_defined -#define replaygain_data_defined - typedef struct replaygain_data replaygain_t; -#endif - struct plotting_data; -#ifndef plotting_data_defined -#define plotting_data_defined - typedef struct plotting_data plotting_data; -#endif - -/*********************************************************************** -* -* Global Type Definitions -* -***********************************************************************/ - - typedef struct { - void *aligned; /* pointer to ie. 128 bit aligned memory */ - void *pointer; /* to use with malloc/free */ - } aligned_pointer_t; - - void malloc_aligned(aligned_pointer_t * ptr, unsigned int size, unsigned int bytes); - void free_aligned(aligned_pointer_t * ptr); - - - typedef void (*iteration_loop_t) (lame_internal_flags * gfc, const FLOAT pe[2][2], - const FLOAT ms_ratio[2], const III_psy_ratio ratio[2][2]); - - - /* "bit_stream.h" Type Definitions */ - - typedef struct bit_stream_struc { - unsigned char *buf; /* bit stream buffer */ - int buf_size; /* size of buffer (in number of bytes) */ - int totbit; /* bit counter of bit stream */ - int buf_byte_idx; /* pointer to top byte in buffer */ - int buf_bit_idx; /* pointer to top bit of top byte in buffer */ - - /* format of file in rd mode (BINARY/ASCII) */ - } Bit_stream_struc; - - - - typedef struct { - int sum; /* what we have seen so far */ - int seen; /* how many frames we have seen in this chunk */ - int want; /* how many frames we want to collect into one chunk */ - int pos; /* actual position in our bag */ - int size; /* size of our bag */ - int *bag; /* pointer to our bag */ - unsigned int nVbrNumFrames; - unsigned long nBytesWritten; - /* VBR tag data */ - unsigned int TotalFrameSize; - } VBR_seek_info_t; - - - /** - * ATH related stuff, if something new ATH related has to be added, - * please plugg it here into the ATH_t struct - */ - typedef struct { - int use_adjust; /* method for the auto adjustment */ - FLOAT aa_sensitivity_p; /* factor for tuning the (sample power) - point below which adaptive threshold - of hearing adjustment occurs */ - FLOAT adjust_factor; /* lowering based on peak volume, 1 = no lowering */ - FLOAT adjust_limit; /* limit for dynamic ATH adjust */ - FLOAT decay; /* determined to lower x dB each second */ - FLOAT floor; /* lowest ATH value */ - FLOAT l[SBMAX_l]; /* ATH for sfbs in long blocks */ - FLOAT s[SBMAX_s]; /* ATH for sfbs in short blocks */ - FLOAT psfb21[PSFB21]; /* ATH for partitionned sfb21 in long blocks */ - FLOAT psfb12[PSFB12]; /* ATH for partitionned sfb12 in short blocks */ - FLOAT cb_l[CBANDS]; /* ATH for long block convolution bands */ - FLOAT cb_s[CBANDS]; /* ATH for short block convolution bands */ - FLOAT eql_w[BLKSIZE / 2]; /* equal loudness weights (based on ATH) */ - } ATH_t; - - /** - * PSY Model related stuff - */ - - typedef struct { - FLOAT masking_lower[CBANDS]; - FLOAT minval[CBANDS]; - FLOAT rnumlines[CBANDS]; - FLOAT mld_cb[CBANDS]; - FLOAT mld[Max(SBMAX_l,SBMAX_s)]; - FLOAT bo_weight[Max(SBMAX_l,SBMAX_s)]; /* band weight long scalefactor bands, at transition */ - FLOAT attack_threshold; /* short block tuning */ - int s3ind[CBANDS][2]; - int numlines[CBANDS]; - int bm[Max(SBMAX_l,SBMAX_s)]; - int bo[Max(SBMAX_l,SBMAX_s)]; - int npart; - int n_sb; /* SBMAX_l or SBMAX_s */ - FLOAT *s3; - } PsyConst_CB2SB_t; - - - /** - * global data constants - */ - typedef struct { - PsyConst_CB2SB_t l; - PsyConst_CB2SB_t s; - PsyConst_CB2SB_t l_to_s; - FLOAT attack_threshold[4]; - FLOAT decay; - int force_short_block_calc; - } PsyConst_t; - - - typedef struct { - - FLOAT nb_l1[4][CBANDS], nb_l2[4][CBANDS]; - FLOAT nb_s1[4][CBANDS], nb_s2[4][CBANDS]; - - III_psy_xmin thm[4]; - III_psy_xmin en[4]; - - /* loudness calculation (for adaptive threshold of hearing) */ - FLOAT loudness_sq_save[2]; /* account for granule delay of L3psycho_anal */ - - FLOAT tot_ener[4]; - - FLOAT last_en_subshort[4][9]; - int last_attacks[4]; - - int blocktype_old[2]; - } PsyStateVar_t; - - - typedef struct { - /* loudness calculation (for adaptive threshold of hearing) */ - FLOAT loudness_sq[2][2]; /* loudness^2 approx. per granule and channel */ - } PsyResult_t; - - - /* variables used by encoder.c */ - typedef struct { - /* variables for newmdct.c */ - FLOAT sb_sample[2][2][18][SBLIMIT]; - FLOAT amp_filter[32]; - - /* variables used by util.c */ - /* BPC = maximum number of filter convolution windows to precompute */ -#define BPC 320 - double itime[2]; /* float precision seems to be not enough */ - sample_t *inbuf_old[2]; - sample_t *blackfilt[2 * BPC + 1]; - - FLOAT pefirbuf[19]; - - /* used for padding */ - int frac_SpF; - int slot_lag; - - /* variables for bitstream.c */ - /* mpeg1: buffer=511 bytes smallest frame: 96-38(sideinfo)=58 - * max number of frames in reservoir: 8 - * mpeg2: buffer=255 bytes. smallest frame: 24-23bytes=1 - * with VBR, if you are encoding all silence, it is possible to - * have 8kbs/24khz frames with 1byte of data each, which means we need - * to buffer up to 255 headers! */ - /* also, max_header_buf has to be a power of two */ -#define MAX_HEADER_BUF 256 -#define MAX_HEADER_LEN 40 /* max size of header is 38 */ - struct { - int write_timing; - int ptr; - char buf[MAX_HEADER_LEN]; - } header[MAX_HEADER_BUF]; - - int h_ptr; - int w_ptr; - int ancillary_flag; - - /* variables for reservoir.c */ - int ResvSize; /* in bits */ - int ResvMax; /* in bits */ - - int in_buffer_nsamples; - sample_t *in_buffer_0; - sample_t *in_buffer_1; - -#ifndef MFSIZE -# define MFSIZE ( 3*1152 + ENCDELAY - MDCTDELAY ) -#endif - sample_t mfbuf[2][MFSIZE]; - - int mf_samples_to_encode; - int mf_size; - - } EncStateVar_t; - - - typedef struct { - /* simple statistics */ - int bitrate_channelmode_hist[16][4 + 1]; - int bitrate_blocktype_hist[16][4 + 1 + 1]; /*norm/start/short/stop/mixed(short)/sum */ - - int bitrate_index; - int frame_number; /* number of frames encoded */ - int padding; /* padding for the current frame? */ - int mode_ext; - int encoder_delay; - int encoder_padding; /* number of samples of padding appended to input */ - } EncResult_t; - - - /* variables used by quantize.c */ - typedef struct { - /* variables for nspsytune */ - FLOAT longfact[SBMAX_l]; - FLOAT shortfact[SBMAX_s]; - FLOAT masking_lower; - FLOAT mask_adjust; /* the dbQ stuff */ - FLOAT mask_adjust_short; /* the dbQ stuff */ - int OldValue[2]; - int CurrentStep[2]; - int pseudohalf[SFBMAX]; - int sfb21_extra; /* will be set in lame_init_params */ - int substep_shaping; /* 0 = no substep - 1 = use substep shaping at last step(VBR only) - (not implemented yet) - 2 = use substep inside loop - 3 = use substep inside loop and last step - */ - - - char bv_scf[576]; - } QntStateVar_t; - - - typedef struct { - replaygain_t *rgdata; - /* ReplayGain */ - } RpgStateVar_t; - - - typedef struct { - FLOAT noclipScale; /* user-specified scale factor required for preventing clipping */ - sample_t PeakSample; - int RadioGain; - int noclipGainChange; /* gain change required for preventing clipping */ - } RpgResult_t; - - - typedef struct { - int version; /* 0=MPEG-2/2.5 1=MPEG-1 */ - int samplerate_index; - int sideinfo_len; - - int noise_shaping; /* 0 = none - 1 = ISO AAC model - 2 = allow scalefac_select=1 - */ - - int subblock_gain; /* 0 = no, 1 = yes */ - int use_best_huffman; /* 0 = no. 1=outside loop 2=inside loop(slow) */ - int noise_shaping_amp; /* 0 = ISO model: amplify all distorted bands - 1 = amplify within 50% of max (on db scale) - 2 = amplify only most distorted band - 3 = method 1 and refine with method 2 - */ - - int noise_shaping_stop; /* 0 = stop at over=0, all scalefacs amplified or - a scalefac has reached max value - 1 = stop when all scalefacs amplified or - a scalefac has reached max value - 2 = stop when all scalefacs amplified - */ - - - int full_outer_loop; /* 0 = stop early after 0 distortion found. 1 = full search */ - - int lowpassfreq; - int highpassfreq; - int samplerate_in; /* input_samp_rate in Hz. default=44.1 kHz */ - int samplerate_out; /* output_samp_rate. */ - int channels_in; /* number of channels in the input data stream (PCM or decoded PCM) */ - int channels_out; /* number of channels in the output data stream (not used for decoding) */ - int mode_gr; /* granules per frame */ - int force_ms; /* force M/S mode. requires mode=1 */ - - int quant_comp; - int quant_comp_short; - - int use_temporal_masking_effect; - int use_safe_joint_stereo; - - int preset; - - vbr_mode vbr; - int vbr_avg_bitrate_kbps; - int vbr_min_bitrate_index; /* min bitrate index */ - int vbr_max_bitrate_index; /* max bitrate index */ - int avg_bitrate; - int enforce_min_bitrate; /* strictly enforce VBR_min_bitrate normaly, it will be violated for analog silence */ - - int findReplayGain; /* find the RG value? default=0 */ - int findPeakSample; - int decode_on_the_fly; /* decode on the fly? default=0 */ - int analysis; - int disable_reservoir; - int buffer_constraint; /* enforce ISO spec as much as possible */ - int free_format; - int write_lame_tag; /* add Xing VBR tag? */ - - int error_protection; /* use 2 bytes per frame for a CRC checksum. default=0 */ - int copyright; /* mark as copyright. default=0 */ - int original; /* mark as original. default=1 */ - int extension; /* the MP3 'private extension' bit. Meaningless */ - int emphasis; /* Input PCM is emphased PCM (for - instance from one of the rarely - emphased CDs), it is STRONGLY not - recommended to use this, because - psycho does not take it into account, - and last but not least many decoders - don't care about these bits */ - - - MPEG_mode mode; - short_block_t short_blocks; - - float interChRatio; - float msfix; /* Naoki's adjustment of Mid/Side maskings */ - float ATH_offset_db;/* add to ATH this many db */ - float ATH_offset_factor;/* change ATH by this factor, derived from ATH_offset_db */ - float ATHcurve; /* change ATH formula 4 shape */ - int ATHtype; - int ATHonly; /* only use ATH */ - int ATHshort; /* only use ATH for short blocks */ - int noATH; /* disable ATH */ - - float ATHfixpoint; - - float adjust_alto_db; - float adjust_bass_db; - float adjust_treble_db; - float adjust_sfb21_db; - - float compression_ratio; /* sizeof(wav file)/sizeof(mp3 file) */ - - /* lowpass and highpass filter control */ - FLOAT lowpass1, lowpass2; /* normalized frequency bounds of passband */ - FLOAT highpass1, highpass2; /* normalized frequency bounds of passband */ - - /* scale input by this amount before encoding at least not used for MP3 decoding */ - FLOAT pcm_transform[2][2]; - - FLOAT minval; - } SessionConfig_t; - - - struct lame_internal_flags { - - /******************************************************************** - * internal variables NOT set by calling program, and should not be * - * modified by the calling program * - ********************************************************************/ - - /* - * Some remarks to the Class_ID field: - * The Class ID is an Identifier for a pointer to this struct. - * It is very unlikely that a pointer to lame_global_flags has the same 32 bits - * in it's structure (large and other special properties, for instance prime). - * - * To test that the structure is right and initialized, use: - * if ( gfc -> Class_ID == LAME_ID ) ... - * Other remark: - * If you set a flag to 0 for uninit data and 1 for init data, the right test - * should be "if (flag == 1)" and NOT "if (flag)". Unintended modification - * of this element will be otherwise misinterpreted as an init. - */ -# define LAME_ID 0xFFF88E3B - unsigned long class_id; - - int lame_encode_frame_init; - int iteration_init_init; - int fill_buffer_resample_init; - - SessionConfig_t cfg; - - /* variables used by lame.c */ - Bit_stream_struc bs; - III_side_info_t l3_side; - - scalefac_struct scalefac_band; - - PsyStateVar_t sv_psy; /* DATA FROM PSYMODEL.C */ - PsyResult_t ov_psy; - EncStateVar_t sv_enc; /* DATA FROM ENCODER.C */ - EncResult_t ov_enc; - QntStateVar_t sv_qnt; /* DATA FROM QUANTIZE.C */ - - RpgStateVar_t sv_rpg; - RpgResult_t ov_rpg; - - /* optional ID3 tags, used in id3tag.c */ - struct id3tag_spec tag_spec; - uint16_t nMusicCRC; - - uint16_t _unused; - - /* CPU features */ - struct { - unsigned int MMX:1; /* Pentium MMX, Pentium II...IV, K6, K6-2, - K6-III, Athlon */ - unsigned int AMD_3DNow:1; /* K6-2, K6-III, Athlon */ - unsigned int SSE:1; /* Pentium III, Pentium 4 */ - unsigned int SSE2:1; /* Pentium 4, K8 */ - unsigned int _unused:28; - } CPU_features; - - - VBR_seek_info_t VBR_seek_table; /* used for Xing VBR header */ - - ATH_t *ATH; /* all ATH related stuff */ - - PsyConst_t *cd_psy; - - /* used by the frame analyzer */ - plotting_data *pinfo; - hip_t hip; - - iteration_loop_t iteration_loop; - - /* functions to replace with CPU feature optimized versions in takehiro.c */ - int (*choose_table) (const int *ix, const int *const end, int *const s); - void (*fft_fht) (FLOAT *, int); - void (*init_xrpow_core) (gr_info * const cod_info, FLOAT xrpow[576], int upper, - FLOAT * sum); - - lame_report_function report_msg; - lame_report_function report_dbg; - lame_report_function report_err; - }; - -#ifndef lame_internal_flags_defined -#define lame_internal_flags_defined - typedef struct lame_internal_flags lame_internal_flags; -#endif - - -/*********************************************************************** -* -* Global Function Prototype Declarations -* -***********************************************************************/ - void freegfc(lame_internal_flags * const gfc); - void free_id3tag(lame_internal_flags * const gfc); - extern int BitrateIndex(int, int, int); - extern int FindNearestBitrate(int, int, int); - extern int map2MP3Frequency(int freq); - extern int SmpFrqIndex(int, int *const); - extern int nearestBitrateFullIndex(uint16_t brate); - extern FLOAT ATHformula(SessionConfig_t const *cfg, FLOAT freq); - extern FLOAT freq2bark(FLOAT freq); - void disable_FPE(void); - -/* log/log10 approximations */ - extern void init_log_table(void); - extern ieee754_float32_t fast_log2(ieee754_float32_t x); - - int isResamplingNecessary(SessionConfig_t const* cfg); - - void fill_buffer(lame_internal_flags * gfc, - sample_t *const mfbuf[2], - sample_t const *const in_buffer[2], int nsamples, int *n_in, int *n_out); - -/* same as lame_decode1 (look in lame.h), but returns - unclipped raw floating-point samples. It is declared - here, not in lame.h, because it returns LAME's - internal type sample_t. No more than 1152 samples - per channel are allowed. */ - int hip_decode1_unclipped(hip_t hip, unsigned char *mp3buf, - size_t len, sample_t pcm_l[], sample_t pcm_r[]); - - - extern int has_MMX(void); - extern int has_3DNow(void); - extern int has_SSE(void); - extern int has_SSE2(void); - - - -/*********************************************************************** -* -* Macros about Message Printing and Exit -* -***********************************************************************/ - - extern void lame_report_def(const char* format, va_list args); - extern void lame_report_fnc(lame_report_function print_f, const char *, ...); - extern void lame_errorf(const lame_internal_flags * gfc, const char *, ...); - extern void lame_debugf(const lame_internal_flags * gfc, const char *, ...); - extern void lame_msgf(const lame_internal_flags * gfc, const char *, ...); -#define DEBUGF lame_debugf -#define ERRORF lame_errorf -#define MSGF lame_msgf - - int is_lame_internal_flags_valid(const lame_internal_flags * gfp); - - extern void hip_set_pinfo(hip_t hip, plotting_data* pinfo); - -#ifdef __cplusplus -} -#endif -#endif /* LAME_UTIL_H */ diff --git a/platform/win32/msvc/external/lame/libmp3lame/vbrquantize.c b/platform/win32/msvc/external/lame/libmp3lame/vbrquantize.c deleted file mode 100644 index e25e02d2703..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/vbrquantize.c +++ /dev/null @@ -1,1580 +0,0 @@ -/* - * MP3 quantization - * - * Copyright (c) 1999-2000 Mark Taylor - * Copyright (c) 2000-2012 Robert Hegemann - * - * 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. - */ - -/* $Id: vbrquantize.c,v 1.141.2.1 2012/02/07 13:40:37 robert Exp $ */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - - -#include "lame.h" -#include "machine.h" -#include "encoder.h" -#include "util.h" -#include "vbrquantize.h" -#include "quantize_pvt.h" - - - - -struct algo_s; -typedef struct algo_s algo_t; - -typedef void (*alloc_sf_f) (const algo_t *, const int *, const int *, int); -typedef uint8_t (*find_sf_f) (const FLOAT *, const FLOAT *, FLOAT, unsigned int, uint8_t); - -struct algo_s { - alloc_sf_f alloc; - find_sf_f find; - const FLOAT *xr34orig; - lame_internal_flags *gfc; - gr_info *cod_info; - int mingain_l; - int mingain_s[3]; -}; - - - -/* Remarks on optimizing compilers: - * - * the MSVC compiler may get into aliasing problems when accessing - * memory through the fi_union. declaring it volatile does the trick here - * - * the calc_sfb_noise_* functions are not inlined because the intel compiler - * optimized executeables won't work as expected anymore - */ - -#ifdef _MSC_VER -# if _MSC_VER < 1400 -# define VOLATILE volatile -# else -# define VOLATILE -# endif -#else -# define VOLATILE -#endif - -typedef VOLATILE union { - float f; - int i; -} fi_union; - - - -#ifdef TAKEHIRO_IEEE754_HACK -#define DOUBLEX double -#else -#define DOUBLEX FLOAT -#endif - -#define MAGIC_FLOAT_def (65536*(128)) -#define MAGIC_INT_def 0x4b000000 - -#ifdef TAKEHIRO_IEEE754_HACK -#else -/********************************************************************* - * XRPOW_FTOI is a macro to convert floats to ints. - * if XRPOW_FTOI(x) = nearest_int(x), then QUANTFAC(x)=adj43asm[x] - * ROUNDFAC= -0.0946 - * - * if XRPOW_FTOI(x) = floor(x), then QUANTFAC(x)=asj43[x] - * ROUNDFAC=0.4054 - *********************************************************************/ -# define QUANTFAC(rx) adj43[rx] -# define ROUNDFAC_def 0.4054f -# define XRPOW_FTOI(src,dest) ((dest) = (int)(src)) -#endif - -static int const MAGIC_INT = MAGIC_INT_def; -#ifndef TAKEHIRO_IEEE754_HACK -static DOUBLEX const ROUNDFAC = ROUNDFAC_def; -#endif -static DOUBLEX const MAGIC_FLOAT = MAGIC_FLOAT_def; - - -inline static float -vec_max_c(const float * xr34, unsigned int bw) -{ - float xfsf = 0; - unsigned int i = bw >> 2u; - unsigned int const remaining = (bw & 0x03u); - - while (i-- > 0) { - if (xfsf < xr34[0]) { - xfsf = xr34[0]; - } - if (xfsf < xr34[1]) { - xfsf = xr34[1]; - } - if (xfsf < xr34[2]) { - xfsf = xr34[2]; - } - if (xfsf < xr34[3]) { - xfsf = xr34[3]; - } - xr34 += 4; - } - switch( remaining ) { - case 3: if (xfsf < xr34[2]) xfsf = xr34[2]; - case 2: if (xfsf < xr34[1]) xfsf = xr34[1]; - case 1: if (xfsf < xr34[0]) xfsf = xr34[0]; - default: break; - } - return xfsf; -} - - -inline static uint8_t -find_lowest_scalefac(const FLOAT xr34) -{ - uint8_t sf_ok = 255; - uint8_t sf = 128, delsf = 64; - uint8_t i; - FLOAT const ixmax_val = IXMAX_VAL; - for (i = 0; i < 8; ++i) { - FLOAT const xfsf = ipow20[sf] * xr34; - if (xfsf <= ixmax_val) { - sf_ok = sf; - sf -= delsf; - } - else { - sf += delsf; - } - delsf >>= 1; - } - return sf_ok; -} - - -inline static void -k_34_4(DOUBLEX x[4], int l3[4]) -{ -#ifdef TAKEHIRO_IEEE754_HACK - fi_union fi[4]; - - assert(x[0] <= IXMAX_VAL && x[1] <= IXMAX_VAL && x[2] <= IXMAX_VAL && x[3] <= IXMAX_VAL); - x[0] += MAGIC_FLOAT; - fi[0].f = x[0]; - x[1] += MAGIC_FLOAT; - fi[1].f = x[1]; - x[2] += MAGIC_FLOAT; - fi[2].f = x[2]; - x[3] += MAGIC_FLOAT; - fi[3].f = x[3]; - fi[0].f = x[0] + adj43asm[fi[0].i - MAGIC_INT]; - fi[1].f = x[1] + adj43asm[fi[1].i - MAGIC_INT]; - fi[2].f = x[2] + adj43asm[fi[2].i - MAGIC_INT]; - fi[3].f = x[3] + adj43asm[fi[3].i - MAGIC_INT]; - l3[0] = fi[0].i - MAGIC_INT; - l3[1] = fi[1].i - MAGIC_INT; - l3[2] = fi[2].i - MAGIC_INT; - l3[3] = fi[3].i - MAGIC_INT; -#else - assert(x[0] <= IXMAX_VAL && x[1] <= IXMAX_VAL && x[2] <= IXMAX_VAL && x[3] <= IXMAX_VAL); - XRPOW_FTOI(x[0], l3[0]); - XRPOW_FTOI(x[1], l3[1]); - XRPOW_FTOI(x[2], l3[2]); - XRPOW_FTOI(x[3], l3[3]); - x[0] += QUANTFAC(l3[0]); - x[1] += QUANTFAC(l3[1]); - x[2] += QUANTFAC(l3[2]); - x[3] += QUANTFAC(l3[3]); - XRPOW_FTOI(x[0], l3[0]); - XRPOW_FTOI(x[1], l3[1]); - XRPOW_FTOI(x[2], l3[2]); - XRPOW_FTOI(x[3], l3[3]); -#endif -} - - - - - -/* do call the calc_sfb_noise_* functions only with sf values - * for which holds: sfpow34*xr34 <= IXMAX_VAL - */ - -static FLOAT -calc_sfb_noise_x34(const FLOAT * xr, const FLOAT * xr34, unsigned int bw, uint8_t sf) -{ - DOUBLEX x[4]; - int l3[4]; - const FLOAT sfpow = pow20[sf + Q_MAX2]; /*pow(2.0,sf/4.0); */ - const FLOAT sfpow34 = ipow20[sf]; /*pow(sfpow,-3.0/4.0); */ - - FLOAT xfsf = 0; - unsigned int i = bw >> 2u; - unsigned int const remaining = (bw & 0x03u); - - while (i-- > 0) { - x[0] = sfpow34 * xr34[0]; - x[1] = sfpow34 * xr34[1]; - x[2] = sfpow34 * xr34[2]; - x[3] = sfpow34 * xr34[3]; - - k_34_4(x, l3); - - x[0] = fabsf(xr[0]) - sfpow * pow43[l3[0]]; - x[1] = fabsf(xr[1]) - sfpow * pow43[l3[1]]; - x[2] = fabsf(xr[2]) - sfpow * pow43[l3[2]]; - x[3] = fabsf(xr[3]) - sfpow * pow43[l3[3]]; - xfsf += (x[0] * x[0] + x[1] * x[1]) + (x[2] * x[2] + x[3] * x[3]); - - xr += 4; - xr34 += 4; - } - if (remaining) { - x[0] = x[1] = x[2] = x[3] = 0; - switch( remaining ) { - case 3: x[2] = sfpow34 * xr34[2]; - case 2: x[1] = sfpow34 * xr34[1]; - case 1: x[0] = sfpow34 * xr34[0]; - } - - k_34_4(x, l3); - x[0] = x[1] = x[2] = x[3] = 0; - - switch( remaining ) { - case 3: x[2] = fabsf(xr[2]) - sfpow * pow43[l3[2]]; - case 2: x[1] = fabsf(xr[1]) - sfpow * pow43[l3[1]]; - case 1: x[0] = fabsf(xr[0]) - sfpow * pow43[l3[0]]; - } - xfsf += (x[0] * x[0] + x[1] * x[1]) + (x[2] * x[2] + x[3] * x[3]); - } - return xfsf; -} - - - -struct calc_noise_cache { - int valid; - FLOAT value; -}; - -typedef struct calc_noise_cache calc_noise_cache_t; - - -static uint8_t -tri_calc_sfb_noise_x34(const FLOAT * xr, const FLOAT * xr34, FLOAT l3_xmin, unsigned int bw, - uint8_t sf, calc_noise_cache_t * did_it) -{ - if (did_it[sf].valid == 0) { - did_it[sf].valid = 1; - did_it[sf].value = calc_sfb_noise_x34(xr, xr34, bw, sf); - } - if (l3_xmin < did_it[sf].value) { - return 1; - } - if (sf < 255) { - uint8_t const sf_x = sf + 1; - if (did_it[sf_x].valid == 0) { - did_it[sf_x].valid = 1; - did_it[sf_x].value = calc_sfb_noise_x34(xr, xr34, bw, sf_x); - } - if (l3_xmin < did_it[sf_x].value) { - return 1; - } - } - if (sf > 0) { - uint8_t const sf_x = sf - 1; - if (did_it[sf_x].valid == 0) { - did_it[sf_x].valid = 1; - did_it[sf_x].value = calc_sfb_noise_x34(xr, xr34, bw, sf_x); - } - if (l3_xmin < did_it[sf_x].value) { - return 1; - } - } - return 0; -} - - -/** - * Robert Hegemann 2001-05-01 - * calculates quantization step size determined by allowed masking - */ -static int -calc_scalefac(FLOAT l3_xmin, int bw) -{ - FLOAT const c = 5.799142446; /* 10 * 10^(2/3) * log10(4/3) */ - return 210 + (int) (c * log10f(l3_xmin / bw) - .5f); -} - -static uint8_t -guess_scalefac_x34(const FLOAT * xr, const FLOAT * xr34, FLOAT l3_xmin, unsigned int bw, uint8_t sf_min) -{ - int const guess = calc_scalefac(l3_xmin, bw); - if (guess < sf_min) return sf_min; - if (guess >= 255) return 255; - (void) xr; - (void) xr34; - return guess; -} - - -/* the find_scalefac* routines calculate - * a quantization step size which would - * introduce as much noise as is allowed. - * The larger the step size the more - * quantization noise we'll get. The - * scalefactors are there to lower the - * global step size, allowing limited - * differences in quantization step sizes - * per band (shaping the noise). - */ - -static uint8_t -find_scalefac_x34(const FLOAT * xr, const FLOAT * xr34, FLOAT l3_xmin, unsigned int bw, - uint8_t sf_min) -{ - calc_noise_cache_t did_it[256]; - uint8_t sf = 128, sf_ok = 255, delsf = 128, seen_good_one = 0, i; - memset(did_it, 0, sizeof(did_it)); - for (i = 0; i < 8; ++i) { - delsf >>= 1; - if (sf <= sf_min) { - sf += delsf; - } - else { - uint8_t const bad = tri_calc_sfb_noise_x34(xr, xr34, l3_xmin, bw, sf, did_it); - if (bad) { /* distortion. try a smaller scalefactor */ - sf -= delsf; - } - else { - sf_ok = sf; - sf += delsf; - seen_good_one = 1; - } - } - } - /* returning a scalefac without distortion, if possible - */ - if (seen_good_one > 0) { - sf = sf_ok; - } - if (sf <= sf_min) { - sf = sf_min; - } - return sf; -} - - - -/*********************************************************************** - * - * calc_short_block_vbr_sf() - * calc_long_block_vbr_sf() - * - * Mark Taylor 2000-??-?? - * Robert Hegemann 2000-10-25 made functions of it - * - ***********************************************************************/ - -/* a variation for vbr-mtrh */ -static int -block_sf(algo_t * that, const FLOAT l3_xmin[SFBMAX], int vbrsf[SFBMAX], int vbrsfmin[SFBMAX]) -{ - FLOAT max_xr34; - const FLOAT *const xr = &that->cod_info->xr[0]; - const FLOAT *const xr34_orig = &that->xr34orig[0]; - const int *const width = &that->cod_info->width[0]; - const char *const energy_above_cutoff = &that->cod_info->energy_above_cutoff[0]; - unsigned int const max_nonzero_coeff = (unsigned int) that->cod_info->max_nonzero_coeff; - uint8_t maxsf = 0; - int sfb = 0, m_o = -1; - unsigned int j = 0, i = 0; - int const psymax = that->cod_info->psymax; - - assert(that->cod_info->max_nonzero_coeff >= 0); - - that->mingain_l = 0; - that->mingain_s[0] = 0; - that->mingain_s[1] = 0; - that->mingain_s[2] = 0; - while (j <= max_nonzero_coeff) { - unsigned int const w = (unsigned int) width[sfb]; - unsigned int const m = (unsigned int) (max_nonzero_coeff - j + 1); - unsigned int l = w; - uint8_t m1, m2; - if (l > m) { - l = m; - } - max_xr34 = vec_max_c(&xr34_orig[j], l); - - m1 = find_lowest_scalefac(max_xr34); - vbrsfmin[sfb] = m1; - if (that->mingain_l < m1) { - that->mingain_l = m1; - } - if (that->mingain_s[i] < m1) { - that->mingain_s[i] = m1; - } - if (++i > 2) { - i = 0; - } - if (sfb < psymax && w > 2) { /* mpeg2.5 at 8 kHz doesn't use all scalefactors, unused have width 2 */ - if (energy_above_cutoff[sfb]) { - m2 = that->find(&xr[j], &xr34_orig[j], l3_xmin[sfb], l, m1); -#if 0 - if (0) { - /** Robert Hegemann 2007-09-29: - * It seems here is some more potential for speed improvements. - * Current find method does 11-18 quantization calculations. - * Using a "good guess" may help to reduce this amount. - */ - uint8_t guess = calc_scalefac(l3_xmin[sfb], l); - DEBUGF(that->gfc, "sfb=%3d guess=%3d found=%3d diff=%3d\n", sfb, guess, m2, - m2 - guess); - } -#endif - if (maxsf < m2) { - maxsf = m2; - } - if (m_o < m2 && m2 < 255) { - m_o = m2; - } - } - else { - m2 = 255; - maxsf = 255; - } - } - else { - if (maxsf < m1) { - maxsf = m1; - } - m2 = maxsf; - } - vbrsf[sfb] = m2; - ++sfb; - j += w; - } - for (; sfb < SFBMAX; ++sfb) { - vbrsf[sfb] = maxsf; - vbrsfmin[sfb] = 0; - } - if (m_o > -1) { - maxsf = m_o; - for (sfb = 0; sfb < SFBMAX; ++sfb) { - if (vbrsf[sfb] == 255) { - vbrsf[sfb] = m_o; - } - } - } - return maxsf; -} - - - -/*********************************************************************** - * - * quantize xr34 based on scalefactors - * - * block_xr34 - * - * Mark Taylor 2000-??-?? - * Robert Hegemann 2000-10-20 made functions of them - * - ***********************************************************************/ - -static void -quantize_x34(const algo_t * that) -{ - DOUBLEX x[4]; - const FLOAT *xr34_orig = that->xr34orig; - gr_info *const cod_info = that->cod_info; - int const ifqstep = (cod_info->scalefac_scale == 0) ? 2 : 4; - int *l3 = cod_info->l3_enc; - unsigned int j = 0, sfb = 0; - unsigned int const max_nonzero_coeff = (unsigned int) cod_info->max_nonzero_coeff; - - assert(cod_info->max_nonzero_coeff >= 0); - assert(cod_info->max_nonzero_coeff < 576); - - while (j <= max_nonzero_coeff) { - int const s = - (cod_info->scalefac[sfb] + (cod_info->preflag ? pretab[sfb] : 0)) * ifqstep - + cod_info->subblock_gain[cod_info->window[sfb]] * 8; - uint8_t const sfac = (uint8_t) (cod_info->global_gain - s); - FLOAT const sfpow34 = ipow20[sfac]; - unsigned int const w = (unsigned int) cod_info->width[sfb]; - unsigned int const m = (unsigned int) (max_nonzero_coeff - j + 1); - unsigned int i, remaining; - - assert((cod_info->global_gain - s) >= 0); - assert(cod_info->width[sfb] >= 0); - j += w; - ++sfb; - - i = (w <= m) ? w : m; - remaining = (i & 0x03u); - i >>= 2u; - - while (i-- > 0) { - x[0] = sfpow34 * xr34_orig[0]; - x[1] = sfpow34 * xr34_orig[1]; - x[2] = sfpow34 * xr34_orig[2]; - x[3] = sfpow34 * xr34_orig[3]; - - k_34_4(x, l3); - - l3 += 4; - xr34_orig += 4; - } - if (remaining) { - int tmp_l3[4]; - x[0] = x[1] = x[2] = x[3] = 0; - switch( remaining ) { - case 3: x[2] = sfpow34 * xr34_orig[2]; - case 2: x[1] = sfpow34 * xr34_orig[1]; - case 1: x[0] = sfpow34 * xr34_orig[0]; - } - - k_34_4(x, tmp_l3); - - switch( remaining ) { - case 3: l3[2] = tmp_l3[2]; - case 2: l3[1] = tmp_l3[1]; - case 1: l3[0] = tmp_l3[0]; - } - - l3 += remaining; - xr34_orig += remaining; - } - } -} - - - -static const uint8_t max_range_short[SBMAX_s * 3] = { - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 0, 0, 0 -}; - -static const uint8_t max_range_long[SBMAX_l] = { - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0 -}; - -static const uint8_t max_range_long_lsf_pretab[SBMAX_l] = { - 7, 7, 7, 7, 7, 7, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - - - -/* - sfb=0..5 scalefac < 16 - sfb>5 scalefac < 8 - - ifqstep = ( cod_info->scalefac_scale == 0 ) ? 2 : 4; - ol_sf = (cod_info->global_gain-210.0); - ol_sf -= 8*cod_info->subblock_gain[i]; - ol_sf -= ifqstep*scalefac[gr][ch].s[sfb][i]; -*/ - -static void -set_subblock_gain(gr_info * cod_info, const int mingain_s[3], int sf[]) -{ - const int maxrange1 = 15, maxrange2 = 7; - const int ifqstepShift = (cod_info->scalefac_scale == 0) ? 1 : 2; - int *const sbg = cod_info->subblock_gain; - unsigned int const psymax = (unsigned int) cod_info->psymax; - unsigned int psydiv = 18; - int sbg0, sbg1, sbg2; - unsigned int sfb, i; - int min_sbg = 7; - - if (psydiv > psymax) { - psydiv = psymax; - } - for (i = 0; i < 3; ++i) { - int maxsf1 = 0, maxsf2 = 0, minsf = 1000; - /* see if we should use subblock gain */ - for (sfb = i; sfb < psydiv; sfb += 3) { /* part 1 */ - int const v = -sf[sfb]; - if (maxsf1 < v) { - maxsf1 = v; - } - if (minsf > v) { - minsf = v; - } - } - for (; sfb < SFBMAX; sfb += 3) { /* part 2 */ - int const v = -sf[sfb]; - if (maxsf2 < v) { - maxsf2 = v; - } - if (minsf > v) { - minsf = v; - } - } - - /* boost subblock gain as little as possible so we can - * reach maxsf1 with scalefactors - * 8*sbg >= maxsf1 - */ - { - int const m1 = maxsf1 - (maxrange1 << ifqstepShift); - int const m2 = maxsf2 - (maxrange2 << ifqstepShift); - - maxsf1 = Max(m1, m2); - } - if (minsf > 0) { - sbg[i] = minsf >> 3; - } - else { - sbg[i] = 0; - } - if (maxsf1 > 0) { - int const m1 = sbg[i]; - int const m2 = (maxsf1 + 7) >> 3; - sbg[i] = Max(m1, m2); - } - if (sbg[i] > 0 && mingain_s[i] > (cod_info->global_gain - sbg[i] * 8)) { - sbg[i] = (cod_info->global_gain - mingain_s[i]) >> 3; - } - if (sbg[i] > 7) { - sbg[i] = 7; - } - if (min_sbg > sbg[i]) { - min_sbg = sbg[i]; - } - } - sbg0 = sbg[0] * 8; - sbg1 = sbg[1] * 8; - sbg2 = sbg[2] * 8; - for (sfb = 0; sfb < SFBMAX; sfb += 3) { - sf[sfb + 0] += sbg0; - sf[sfb + 1] += sbg1; - sf[sfb + 2] += sbg2; - } - if (min_sbg > 0) { - for (i = 0; i < 3; ++i) { - sbg[i] -= min_sbg; - } - cod_info->global_gain -= min_sbg * 8; - } -} - - - -/* - ifqstep = ( cod_info->scalefac_scale == 0 ) ? 2 : 4; - ol_sf = (cod_info->global_gain-210.0); - ol_sf -= ifqstep*scalefac[gr][ch].l[sfb]; - if (cod_info->preflag && sfb>=11) - ol_sf -= ifqstep*pretab[sfb]; -*/ -static void -set_scalefacs(gr_info * cod_info, const int *vbrsfmin, int sf[], const uint8_t * max_range) -{ - const int ifqstep = (cod_info->scalefac_scale == 0) ? 2 : 4; - const int ifqstepShift = (cod_info->scalefac_scale == 0) ? 1 : 2; - int *const scalefac = cod_info->scalefac; - int const sfbmax = cod_info->sfbmax; - int sfb; - int const *const sbg = cod_info->subblock_gain; - int const *const window = cod_info->window; - int const preflag = cod_info->preflag; - - if (preflag) { - for (sfb = 11; sfb < sfbmax; ++sfb) { - sf[sfb] += pretab[sfb] * ifqstep; - } - } - for (sfb = 0; sfb < sfbmax; ++sfb) { - int const gain = cod_info->global_gain - (sbg[window[sfb]] * 8) - - ((preflag ? pretab[sfb] : 0) * ifqstep); - - if (sf[sfb] < 0) { - int const m = gain - vbrsfmin[sfb]; - /* ifqstep*scalefac >= -sf[sfb], so round UP */ - scalefac[sfb] = (ifqstep - 1 - sf[sfb]) >> ifqstepShift; - - if (scalefac[sfb] > max_range[sfb]) { - scalefac[sfb] = max_range[sfb]; - } - if (scalefac[sfb] > 0 && (scalefac[sfb] << ifqstepShift) > m) { - scalefac[sfb] = m >> ifqstepShift; - } - } - else { - scalefac[sfb] = 0; - } - } - for (; sfb < SFBMAX; ++sfb) { - scalefac[sfb] = 0; /* sfb21 */ - } -} - - -#ifndef NDEBUG -static int -checkScalefactor(const gr_info * cod_info, const int vbrsfmin[SFBMAX]) -{ - int const ifqstep = cod_info->scalefac_scale == 0 ? 2 : 4; - int sfb; - for (sfb = 0; sfb < cod_info->psymax; ++sfb) { - const int s = - ((cod_info->scalefac[sfb] + - (cod_info->preflag ? pretab[sfb] : 0)) * ifqstep) + - cod_info->subblock_gain[cod_info->window[sfb]] * 8; - - if ((cod_info->global_gain - s) < vbrsfmin[sfb]) { - /* - fprintf( stdout, "sf %d\n", sfb ); - fprintf( stdout, "min %d\n", vbrsfmin[sfb] ); - fprintf( stdout, "ggain %d\n", cod_info->global_gain ); - fprintf( stdout, "scalefac %d\n", cod_info->scalefac[sfb] ); - fprintf( stdout, "pretab %d\n", (cod_info->preflag ? pretab[sfb] : 0) ); - fprintf( stdout, "scale %d\n", (cod_info->scalefac_scale + 1) ); - fprintf( stdout, "subgain %d\n", cod_info->subblock_gain[cod_info->window[sfb]] * 8 ); - fflush( stdout ); - exit(-1); - */ - return 0; - } - } - return 1; -} -#endif - - -/****************************************************************** - * - * short block scalefacs - * - ******************************************************************/ - -static void -short_block_constrain(const algo_t * that, const int vbrsf[SFBMAX], - const int vbrsfmin[SFBMAX], int vbrmax) -{ - gr_info *const cod_info = that->cod_info; - lame_internal_flags const *const gfc = that->gfc; - SessionConfig_t const *const cfg = &gfc->cfg; - int const maxminsfb = that->mingain_l; - int mover, maxover0 = 0, maxover1 = 0, delta = 0; - int v, v0, v1; - int sfb; - int const psymax = cod_info->psymax; - - for (sfb = 0; sfb < psymax; ++sfb) { - assert(vbrsf[sfb] >= vbrsfmin[sfb]); - v = vbrmax - vbrsf[sfb]; - if (delta < v) { - delta = v; - } - v0 = v - (4 * 14 + 2 * max_range_short[sfb]); - v1 = v - (4 * 14 + 4 * max_range_short[sfb]); - if (maxover0 < v0) { - maxover0 = v0; - } - if (maxover1 < v1) { - maxover1 = v1; - } - } - if (cfg->noise_shaping == 2) { - /* allow scalefac_scale=1 */ - mover = Min(maxover0, maxover1); - } - else { - mover = maxover0; - } - if (delta > mover) { - delta = mover; - } - vbrmax -= delta; - maxover0 -= mover; - maxover1 -= mover; - - if (maxover0 == 0) { - cod_info->scalefac_scale = 0; - } - else if (maxover1 == 0) { - cod_info->scalefac_scale = 1; - } - if (vbrmax < maxminsfb) { - vbrmax = maxminsfb; - } - cod_info->global_gain = vbrmax; - - if (cod_info->global_gain < 0) { - cod_info->global_gain = 0; - } - else if (cod_info->global_gain > 255) { - cod_info->global_gain = 255; - } - { - int sf_temp[SFBMAX]; - for (sfb = 0; sfb < SFBMAX; ++sfb) { - sf_temp[sfb] = vbrsf[sfb] - vbrmax; - } - set_subblock_gain(cod_info, &that->mingain_s[0], sf_temp); - set_scalefacs(cod_info, vbrsfmin, sf_temp, max_range_short); - } - assert(checkScalefactor(cod_info, vbrsfmin)); -} - - - -/****************************************************************** - * - * long block scalefacs - * - ******************************************************************/ - -static void -long_block_constrain(const algo_t * that, const int vbrsf[SFBMAX], const int vbrsfmin[SFBMAX], - int vbrmax) -{ - gr_info *const cod_info = that->cod_info; - lame_internal_flags const *const gfc = that->gfc; - SessionConfig_t const *const cfg = &gfc->cfg; - uint8_t const *max_rangep; - int const maxminsfb = that->mingain_l; - int sfb; - int maxover0, maxover1, maxover0p, maxover1p, mover, delta = 0; - int v, v0, v1, v0p, v1p, vm0p = 1, vm1p = 1; - int const psymax = cod_info->psymax; - - max_rangep = cfg->mode_gr == 2 ? max_range_long : max_range_long_lsf_pretab; - - maxover0 = 0; - maxover1 = 0; - maxover0p = 0; /* pretab */ - maxover1p = 0; /* pretab */ - - for (sfb = 0; sfb < psymax; ++sfb) { - assert(vbrsf[sfb] >= vbrsfmin[sfb]); - v = vbrmax - vbrsf[sfb]; - if (delta < v) { - delta = v; - } - v0 = v - 2 * max_range_long[sfb]; - v1 = v - 4 * max_range_long[sfb]; - v0p = v - 2 * (max_rangep[sfb] + pretab[sfb]); - v1p = v - 4 * (max_rangep[sfb] + pretab[sfb]); - if (maxover0 < v0) { - maxover0 = v0; - } - if (maxover1 < v1) { - maxover1 = v1; - } - if (maxover0p < v0p) { - maxover0p = v0p; - } - if (maxover1p < v1p) { - maxover1p = v1p; - } - } - if (vm0p == 1) { - int gain = vbrmax - maxover0p; - if (gain < maxminsfb) { - gain = maxminsfb; - } - for (sfb = 0; sfb < psymax; ++sfb) { - int const a = (gain - vbrsfmin[sfb]) - 2 * pretab[sfb]; - if (a <= 0) { - vm0p = 0; - vm1p = 0; - break; - } - } - } - if (vm1p == 1) { - int gain = vbrmax - maxover1p; - if (gain < maxminsfb) { - gain = maxminsfb; - } - for (sfb = 0; sfb < psymax; ++sfb) { - int const b = (gain - vbrsfmin[sfb]) - 4 * pretab[sfb]; - if (b <= 0) { - vm1p = 0; - break; - } - } - } - if (vm0p == 0) { - maxover0p = maxover0; - } - if (vm1p == 0) { - maxover1p = maxover1; - } - if (cfg->noise_shaping != 2) { - maxover1 = maxover0; - maxover1p = maxover0p; - } - mover = Min(maxover0, maxover0p); - mover = Min(mover, maxover1); - mover = Min(mover, maxover1p); - - if (delta > mover) { - delta = mover; - } - vbrmax -= delta; - if (vbrmax < maxminsfb) { - vbrmax = maxminsfb; - } - maxover0 -= mover; - maxover0p -= mover; - maxover1 -= mover; - maxover1p -= mover; - - if (maxover0 == 0) { - cod_info->scalefac_scale = 0; - cod_info->preflag = 0; - max_rangep = max_range_long; - } - else if (maxover0p == 0) { - cod_info->scalefac_scale = 0; - cod_info->preflag = 1; - } - else if (maxover1 == 0) { - cod_info->scalefac_scale = 1; - cod_info->preflag = 0; - max_rangep = max_range_long; - } - else if (maxover1p == 0) { - cod_info->scalefac_scale = 1; - cod_info->preflag = 1; - } - else { - assert(0); /* this should not happen */ - } - cod_info->global_gain = vbrmax; - if (cod_info->global_gain < 0) { - cod_info->global_gain = 0; - } - else if (cod_info->global_gain > 255) { - cod_info->global_gain = 255; - } - { - int sf_temp[SFBMAX]; - for (sfb = 0; sfb < SFBMAX; ++sfb) { - sf_temp[sfb] = vbrsf[sfb] - vbrmax; - } - set_scalefacs(cod_info, vbrsfmin, sf_temp, max_rangep); - } - assert(checkScalefactor(cod_info, vbrsfmin)); -} - - - -static void -bitcount(const algo_t * that) -{ - int rc = scale_bitcount(that->gfc, that->cod_info); - - if (rc == 0) { - return; - } - /* this should not happen due to the way the scalefactors are selected */ - ERRORF(that->gfc, "INTERNAL ERROR IN VBR NEW CODE (986), please send bug report\n"); - exit(-1); -} - - - -static int -quantizeAndCountBits(const algo_t * that) -{ - quantize_x34(that); - that->cod_info->part2_3_length = noquant_count_bits(that->gfc, that->cod_info, 0); - return that->cod_info->part2_3_length; -} - - - - - -static int -tryGlobalStepsize(const algo_t * that, const int sfwork[SFBMAX], - const int vbrsfmin[SFBMAX], int delta) -{ - FLOAT const xrpow_max = that->cod_info->xrpow_max; - int sftemp[SFBMAX], i, nbits; - int gain, vbrmax = 0; - for (i = 0; i < SFBMAX; ++i) { - gain = sfwork[i] + delta; - if (gain < vbrsfmin[i]) { - gain = vbrsfmin[i]; - } - if (gain > 255) { - gain = 255; - } - if (vbrmax < gain) { - vbrmax = gain; - } - sftemp[i] = gain; - } - that->alloc(that, sftemp, vbrsfmin, vbrmax); - bitcount(that); - nbits = quantizeAndCountBits(that); - that->cod_info->xrpow_max = xrpow_max; - return nbits; -} - - - -static void -searchGlobalStepsizeMax(const algo_t * that, const int sfwork[SFBMAX], - const int vbrsfmin[SFBMAX], int target) -{ - gr_info const *const cod_info = that->cod_info; - const int gain = cod_info->global_gain; - int curr = gain; - int gain_ok = 1024; - int nbits = LARGE_BITS; - int l = gain, r = 512; - - assert(gain >= 0); - while (l <= r) { - curr = (l + r) >> 1; - nbits = tryGlobalStepsize(that, sfwork, vbrsfmin, curr - gain); - if (nbits == 0 || (nbits + cod_info->part2_length) < target) { - r = curr - 1; - gain_ok = curr; - } - else { - l = curr + 1; - if (gain_ok == 1024) { - gain_ok = curr; - } - } - } - if (gain_ok != curr) { - curr = gain_ok; - nbits = tryGlobalStepsize(that, sfwork, vbrsfmin, curr - gain); - } -} - - - -static int -sfDepth(const int sfwork[SFBMAX]) -{ - int m = 0; - unsigned int i, j; - for (j = SFBMAX, i = 0; j > 0; --j, ++i) { - int const di = 255 - sfwork[i]; - if (m < di) { - m = di; - } - assert(sfwork[i] >= 0); - assert(sfwork[i] <= 255); - } - assert(m >= 0); - assert(m <= 255); - return m; -} - - -static void -cutDistribution(const int sfwork[SFBMAX], int sf_out[SFBMAX], int cut) -{ - unsigned int i, j; - for (j = SFBMAX, i = 0; j > 0; --j, ++i) { - int const x = sfwork[i]; - sf_out[i] = x < cut ? x : cut; - } -} - - -static int -flattenDistribution(const int sfwork[SFBMAX], int sf_out[SFBMAX], int dm, int k, int p) -{ - unsigned int i, j; - int x, sfmax = 0; - if (dm > 0) { - for (j = SFBMAX, i = 0; j > 0; --j, ++i) { - int const di = p - sfwork[i]; - x = sfwork[i] + (k * di) / dm; - if (x < 0) { - x = 0; - } - else { - if (x > 255) { - x = 255; - } - } - sf_out[i] = x; - if (sfmax < x) { - sfmax = x; - } - } - } - else { - for (j = SFBMAX, i = 0; j > 0u; --j, ++i) { - x = sfwork[i]; - sf_out[i] = x; - if (sfmax < x) { - sfmax = x; - } - } - } - return sfmax; -} - - -static int -tryThatOne(algo_t const* that, const int sftemp[SFBMAX], const int vbrsfmin[SFBMAX], int vbrmax) -{ - FLOAT const xrpow_max = that->cod_info->xrpow_max; - int nbits = LARGE_BITS; - that->alloc(that, sftemp, vbrsfmin, vbrmax); - bitcount(that); - nbits = quantizeAndCountBits(that); - nbits += that->cod_info->part2_length; - that->cod_info->xrpow_max = xrpow_max; - return nbits; -} - - -static void -outOfBitsStrategy(algo_t const* that, const int sfwork[SFBMAX], const int vbrsfmin[SFBMAX], int target) -{ - int wrk[SFBMAX]; - int const dm = sfDepth(sfwork); - int const p = that->cod_info->global_gain; - int nbits; - - /* PART 1 */ - { - int bi = dm / 2; - int bi_ok = -1; - int bu = 0; - int bo = dm; - for (;;) { - int const sfmax = flattenDistribution(sfwork, wrk, dm, bi, p); - nbits = tryThatOne(that, wrk, vbrsfmin, sfmax); - if (nbits <= target) { - bi_ok = bi; - bo = bi - 1; - } - else { - bu = bi + 1; - } - if (bu <= bo) { - bi = (bu + bo) / 2; - } - else { - break; - } - } - if (bi_ok >= 0) { - if (bi != bi_ok) { - int const sfmax = flattenDistribution(sfwork, wrk, dm, bi_ok, p); - nbits = tryThatOne(that, wrk, vbrsfmin, sfmax); - } - return; - } - } - - /* PART 2: */ - { - int bi = (255 + p) / 2; - int bi_ok = -1; - int bu = p; - int bo = 255; - for (;;) { - int const sfmax = flattenDistribution(sfwork, wrk, dm, dm, bi); - nbits = tryThatOne(that, wrk, vbrsfmin, sfmax); - if (nbits <= target) { - bi_ok = bi; - bo = bi - 1; - } - else { - bu = bi + 1; - } - if (bu <= bo) { - bi = (bu + bo) / 2; - } - else { - break; - } - } - if (bi_ok >= 0) { - if (bi != bi_ok) { - int const sfmax = flattenDistribution(sfwork, wrk, dm, dm, bi_ok); - nbits = tryThatOne(that, wrk, vbrsfmin, sfmax); - } - return; - } - } - - /* fall back to old code, likely to be never called */ - searchGlobalStepsizeMax(that, wrk, vbrsfmin, target); -} - - -static int -reduce_bit_usage(lame_internal_flags * gfc, int gr, int ch -#if 0 - , const FLOAT xr34orig[576], const FLOAT l3_xmin[SFBMAX], int maxbits -#endif - ) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - gr_info *const cod_info = &gfc->l3_side.tt[gr][ch]; - /* try some better scalefac storage - */ - best_scalefac_store(gfc, gr, ch, &gfc->l3_side); - - /* best huffman_divide may save some bits too - */ - if (cfg->use_best_huffman == 1) - best_huffman_divide(gfc, cod_info); - return cod_info->part2_3_length + cod_info->part2_length; -} - - - - -int -VBR_encode_frame(lame_internal_flags * gfc, const FLOAT xr34orig[2][2][576], - const FLOAT l3_xmin[2][2][SFBMAX], const int max_bits[2][2]) -{ - SessionConfig_t const *const cfg = &gfc->cfg; - int sfwork_[2][2][SFBMAX]; - int vbrsfmin_[2][2][SFBMAX]; - algo_t that_[2][2]; - int const ngr = cfg->mode_gr; - int const nch = cfg->channels_out; - int max_nbits_ch[2][2] = {{0, 0}, {0 ,0}}; - int max_nbits_gr[2] = {0, 0}; - int max_nbits_fr = 0; - int use_nbits_ch[2][2] = {{MAX_BITS_PER_CHANNEL+1, MAX_BITS_PER_CHANNEL+1} - ,{MAX_BITS_PER_CHANNEL+1, MAX_BITS_PER_CHANNEL+1}}; - int use_nbits_gr[2] = { MAX_BITS_PER_GRANULE+1, MAX_BITS_PER_GRANULE+1 }; - int use_nbits_fr = MAX_BITS_PER_GRANULE+MAX_BITS_PER_GRANULE; - int gr, ch; - int ok, sum_fr; - - /* set up some encoding parameters - */ - for (gr = 0; gr < ngr; ++gr) { - max_nbits_gr[gr] = 0; - for (ch = 0; ch < nch; ++ch) { - max_nbits_ch[gr][ch] = max_bits[gr][ch]; - use_nbits_ch[gr][ch] = 0; - max_nbits_gr[gr] += max_bits[gr][ch]; - max_nbits_fr += max_bits[gr][ch]; - that_[gr][ch].find = (cfg->full_outer_loop < 0) ? guess_scalefac_x34 : find_scalefac_x34; - that_[gr][ch].gfc = gfc; - that_[gr][ch].cod_info = &gfc->l3_side.tt[gr][ch]; - that_[gr][ch].xr34orig = xr34orig[gr][ch]; - if (that_[gr][ch].cod_info->block_type == SHORT_TYPE) { - that_[gr][ch].alloc = short_block_constrain; - } - else { - that_[gr][ch].alloc = long_block_constrain; - } - } /* for ch */ - } - /* searches scalefactors - */ - for (gr = 0; gr < ngr; ++gr) { - for (ch = 0; ch < nch; ++ch) { - if (max_bits[gr][ch] > 0) { - algo_t *that = &that_[gr][ch]; - int *sfwork = sfwork_[gr][ch]; - int *vbrsfmin = vbrsfmin_[gr][ch]; - int vbrmax; - - vbrmax = block_sf(that, l3_xmin[gr][ch], sfwork, vbrsfmin); - that->alloc(that, sfwork, vbrsfmin, vbrmax); - bitcount(that); - } - else { - /* xr contains no energy - * l3_enc, our encoding data, will be quantized to zero - * continue with next channel - */ - } - } /* for ch */ - } - /* encode 'as is' - */ - use_nbits_fr = 0; - for (gr = 0; gr < ngr; ++gr) { - use_nbits_gr[gr] = 0; - for (ch = 0; ch < nch; ++ch) { - algo_t const *that = &that_[gr][ch]; - if (max_bits[gr][ch] > 0) { - memset(&that->cod_info->l3_enc[0], 0, sizeof(that->cod_info->l3_enc)); - (void) quantizeAndCountBits(that); - } - else { - /* xr contains no energy - * l3_enc, our encoding data, will be quantized to zero - * continue with next channel - */ - } - use_nbits_ch[gr][ch] = reduce_bit_usage(gfc, gr, ch); - use_nbits_gr[gr] += use_nbits_ch[gr][ch]; - } /* for ch */ - use_nbits_fr += use_nbits_gr[gr]; - } - - /* check bit constrains - */ - if (use_nbits_fr <= max_nbits_fr) { - ok = 1; - for (gr = 0; gr < ngr; ++gr) { - if (use_nbits_gr[gr] > MAX_BITS_PER_GRANULE) { - /* violates the rule that every granule has to use no more - * bits than MAX_BITS_PER_GRANULE - */ - ok = 0; - } - for (ch = 0; ch < nch; ++ch) { - if (use_nbits_ch[gr][ch] > MAX_BITS_PER_CHANNEL) { - /* violates the rule that every gr_ch has to use no more - * bits than MAX_BITS_PER_CHANNEL - * - * This isn't explicitly stated in the ISO docs, but the - * part2_3_length field has only 12 bits, that makes it - * up to a maximum size of 4095 bits!!! - */ - ok = 0; - } - } - } - if (ok) { - return use_nbits_fr; - } - } - - /* OK, we are in trouble and have to define how many bits are - * to be used for each granule - */ - { - ok = 1; - sum_fr = 0; - - for (gr = 0; gr < ngr; ++gr) { - max_nbits_gr[gr] = 0; - for (ch = 0; ch < nch; ++ch) { - if (use_nbits_ch[gr][ch] > MAX_BITS_PER_CHANNEL) { - max_nbits_ch[gr][ch] = MAX_BITS_PER_CHANNEL; - } - else { - max_nbits_ch[gr][ch] = use_nbits_ch[gr][ch]; - } - max_nbits_gr[gr] += max_nbits_ch[gr][ch]; - } - if (max_nbits_gr[gr] > MAX_BITS_PER_GRANULE) { - float f[2] = {0.0f, 0.0f}, s = 0.0f; - for (ch = 0; ch < nch; ++ch) { - if (max_nbits_ch[gr][ch] > 0) { - f[ch] = sqrt(sqrt(max_nbits_ch[gr][ch])); - s += f[ch]; - } - else { - f[ch] = 0; - } - } - for (ch = 0; ch < nch; ++ch) { - if (s > 0) { - max_nbits_ch[gr][ch] = MAX_BITS_PER_GRANULE * f[ch] / s; - } - else { - max_nbits_ch[gr][ch] = 0; - } - } - if (nch > 1) { - if (max_nbits_ch[gr][0] > use_nbits_ch[gr][0] + 32) { - max_nbits_ch[gr][1] += max_nbits_ch[gr][0]; - max_nbits_ch[gr][1] -= use_nbits_ch[gr][0] + 32; - max_nbits_ch[gr][0] = use_nbits_ch[gr][0] + 32; - } - if (max_nbits_ch[gr][1] > use_nbits_ch[gr][1] + 32) { - max_nbits_ch[gr][0] += max_nbits_ch[gr][1]; - max_nbits_ch[gr][0] -= use_nbits_ch[gr][1] + 32; - max_nbits_ch[gr][1] = use_nbits_ch[gr][1] + 32; - } - if (max_nbits_ch[gr][0] > MAX_BITS_PER_CHANNEL) { - max_nbits_ch[gr][0] = MAX_BITS_PER_CHANNEL; - } - if (max_nbits_ch[gr][1] > MAX_BITS_PER_CHANNEL) { - max_nbits_ch[gr][1] = MAX_BITS_PER_CHANNEL; - } - } - max_nbits_gr[gr] = 0; - for (ch = 0; ch < nch; ++ch) { - max_nbits_gr[gr] += max_nbits_ch[gr][ch]; - } - } - sum_fr += max_nbits_gr[gr]; - } - if (sum_fr > max_nbits_fr) { - { - float f[2] = {0.0f, 0.0f}, s = 0.0f; - for (gr = 0; gr < ngr; ++gr) { - if (max_nbits_gr[gr] > 0) { - f[gr] = sqrt(max_nbits_gr[gr]); - s += f[gr]; - } - else { - f[gr] = 0; - } - } - for (gr = 0; gr < ngr; ++gr) { - if (s > 0) { - max_nbits_gr[gr] = max_nbits_fr * f[gr] / s; - } - else { - max_nbits_gr[gr] = 0; - } - } - } - if (ngr > 1) { - if (max_nbits_gr[0] > use_nbits_gr[0] + 125) { - max_nbits_gr[1] += max_nbits_gr[0]; - max_nbits_gr[1] -= use_nbits_gr[0] + 125; - max_nbits_gr[0] = use_nbits_gr[0] + 125; - } - if (max_nbits_gr[1] > use_nbits_gr[1] + 125) { - max_nbits_gr[0] += max_nbits_gr[1]; - max_nbits_gr[0] -= use_nbits_gr[1] + 125; - max_nbits_gr[1] = use_nbits_gr[1] + 125; - } - for (gr = 0; gr < ngr; ++gr) { - if (max_nbits_gr[gr] > MAX_BITS_PER_GRANULE) { - max_nbits_gr[gr] = MAX_BITS_PER_GRANULE; - } - } - } - for (gr = 0; gr < ngr; ++gr) { - float f[2] = {0.0f, 0.0f}, s = 0.0f; - for (ch = 0; ch < nch; ++ch) { - if (max_nbits_ch[gr][ch] > 0) { - f[ch] = sqrt(max_nbits_ch[gr][ch]); - s += f[ch]; - } - else { - f[ch] = 0; - } - } - for (ch = 0; ch < nch; ++ch) { - if (s > 0) { - max_nbits_ch[gr][ch] = max_nbits_gr[gr] * f[ch] / s; - } - else { - max_nbits_ch[gr][ch] = 0; - } - } - if (nch > 1) { - if (max_nbits_ch[gr][0] > use_nbits_ch[gr][0] + 32) { - max_nbits_ch[gr][1] += max_nbits_ch[gr][0]; - max_nbits_ch[gr][1] -= use_nbits_ch[gr][0] + 32; - max_nbits_ch[gr][0] = use_nbits_ch[gr][0] + 32; - } - if (max_nbits_ch[gr][1] > use_nbits_ch[gr][1] + 32) { - max_nbits_ch[gr][0] += max_nbits_ch[gr][1]; - max_nbits_ch[gr][0] -= use_nbits_ch[gr][1] + 32; - max_nbits_ch[gr][1] = use_nbits_ch[gr][1] + 32; - } - for (ch = 0; ch < nch; ++ch) { - if (max_nbits_ch[gr][ch] > MAX_BITS_PER_CHANNEL) { - max_nbits_ch[gr][ch] = MAX_BITS_PER_CHANNEL; - } - } - } - } - } - /* sanity check */ - sum_fr = 0; - for (gr = 0; gr < ngr; ++gr) { - int sum_gr = 0; - for (ch = 0; ch < nch; ++ch) { - sum_gr += max_nbits_ch[gr][ch]; - if (max_nbits_ch[gr][ch] > MAX_BITS_PER_CHANNEL) { - ok = 0; - } - } - sum_fr += sum_gr; - if (sum_gr > MAX_BITS_PER_GRANULE) { - ok = 0; - } - } - if (sum_fr > max_nbits_fr) { - ok = 0; - } - if (!ok) { - /* we must have done something wrong, fallback to 'on_pe' based constrain */ - for (gr = 0; gr < ngr; ++gr) { - for (ch = 0; ch < nch; ++ch) { - max_nbits_ch[gr][ch] = max_bits[gr][ch]; - } - } - } - } - - /* we already called the 'best_scalefac_store' function, so we need to reset some - * variables before we can do it again. - */ - for (ch = 0; ch < nch; ++ch) { - gfc->l3_side.scfsi[ch][0] = 0; - gfc->l3_side.scfsi[ch][1] = 0; - gfc->l3_side.scfsi[ch][2] = 0; - gfc->l3_side.scfsi[ch][3] = 0; - } - for (gr = 0; gr < ngr; ++gr) { - for (ch = 0; ch < nch; ++ch) { - gfc->l3_side.tt[gr][ch].scalefac_compress = 0; - } - } - - /* alter our encoded data, until it fits into the target bitrate - */ - use_nbits_fr = 0; - for (gr = 0; gr < ngr; ++gr) { - use_nbits_gr[gr] = 0; - for (ch = 0; ch < nch; ++ch) { - algo_t const *that = &that_[gr][ch]; - use_nbits_ch[gr][ch] = 0; - if (max_bits[gr][ch] > 0) { - int *sfwork = sfwork_[gr][ch]; - int const *vbrsfmin = vbrsfmin_[gr][ch]; - cutDistribution(sfwork, sfwork, that->cod_info->global_gain); - outOfBitsStrategy(that, sfwork, vbrsfmin, max_nbits_ch[gr][ch]); - } - use_nbits_ch[gr][ch] = reduce_bit_usage(gfc, gr, ch); - assert(use_nbits_ch[gr][ch] <= max_nbits_ch[gr][ch]); - use_nbits_gr[gr] += use_nbits_ch[gr][ch]; - } /* for ch */ - use_nbits_fr += use_nbits_gr[gr]; - } - - /* check bit constrains, but it should always be ok, iff there are no bugs ;-) - */ - if (use_nbits_fr <= max_nbits_fr) { - return use_nbits_fr; - } - - ERRORF(gfc, "INTERNAL ERROR IN VBR NEW CODE (1313), please send bug report\n" - "maxbits=%d usedbits=%d\n", max_nbits_fr, use_nbits_fr); - exit(-1); -} diff --git a/platform/win32/msvc/external/lame/libmp3lame/vbrquantize.h b/platform/win32/msvc/external/lame/libmp3lame/vbrquantize.h deleted file mode 100644 index 1c0d18f0775..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/vbrquantize.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * MP3 VBR quantization - * - * Copyright (c) 1999 Mark Taylor - * - * 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 LAME_VBRQUANTIZE_H -#define LAME_VBRQUANTIZE_H - -int VBR_encode_frame(lame_internal_flags * gfc, const FLOAT xr34orig[2][2][576], - const FLOAT l3_xmin[2][2][SFBMAX], const int maxbits[2][2]); - -#endif /* LAME_VBRQUANTIZE_H */ diff --git a/platform/win32/msvc/external/lame/libmp3lame/vector/Makefile.am b/platform/win32/msvc/external/lame/libmp3lame/vector/Makefile.am deleted file mode 100644 index ac595b1f635..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/vector/Makefile.am +++ /dev/null @@ -1,49 +0,0 @@ -## $Id: Makefile.am,v 1.1 2007/01/09 10:15:53 aleidinger Exp $ - -include $(top_srcdir)/Makefile.am.global - -if WITH_XMM -noinst_LTLIBRARIES = liblamevectorroutines.la -endif - -##liblamecpuroutines_la_LIBADD = -##liblamecpuroutines_la_LDFLAGS = - -INCLUDES = @INCLUDES@ \ - -I$(top_srcdir)/libmp3lame \ - -I$(top_srcdir)/mpglib \ - -I$(top_builddir) - -DEFS = @DEFS@ @CONFIG_DEFS@ - -xmm_sources = xmm_quantize_sub.c - -if WITH_XMM -liblamevectorroutines_la_SOURCES = $(xmm_sources) -endif - -noinst_HEADERS = lame_intrin.h - -EXTRA_liblamevectorroutines_la_SOURCES = $(xmm_sources) - -CLEANFILES = lclint.txt - -LCLINTFLAGS= \ - +posixlib \ - +showsummary \ - +showalluses \ - +whichlib \ - +forcehints \ - -fixedformalarray \ - +matchanyintegral \ - -Dlint - -lclint.txt: ${liblamecpuroutines_la_SOURCES} ${noinst_HEADERS} - @lclint ${LCLINTFLAGS} ${INCLUDES} ${DEFS} ${liblamecpuroutines_la_SOURCES} 2>&1 >lclint.txt || true - -lclint: lclint.txt - more lclint.txt - -#$(OBJECTS): libtool -#libtool: $(LIBTOOL_DEPS) -# $(SHELL) $(top_builddir)/config.status --recheck diff --git a/platform/win32/msvc/external/lame/libmp3lame/vector/Makefile.in b/platform/win32/msvc/external/lame/libmp3lame/vector/Makefile.in deleted file mode 100644 index 3916b1568ed..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/vector/Makefile.in +++ /dev/null @@ -1,548 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# global section for every Makefile.am - - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -ANSI2KNR = $(top_srcdir)/ansi2knr -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(top_srcdir)/Makefile.am.global -subdir = libmp3lame/vector -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -liblamevectorroutines_la_LIBADD = -am__liblamevectorroutines_la_SOURCES_DIST = xmm_quantize_sub.c -am__objects_1 = xmm_quantize_sub$U.lo -@WITH_XMM_TRUE@am_liblamevectorroutines_la_OBJECTS = $(am__objects_1) -liblamevectorroutines_la_OBJECTS = \ - $(am_liblamevectorroutines_la_OBJECTS) -@WITH_XMM_TRUE@am_liblamevectorroutines_la_rpath = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(liblamevectorroutines_la_SOURCES) \ - $(EXTRA_liblamevectorroutines_la_SOURCES) -DIST_SOURCES = $(am__liblamevectorroutines_la_SOURCES_DIST) \ - $(EXTRA_liblamevectorroutines_la_SOURCES) -HEADERS = $(noinst_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CONFIG_DEFS = @CONFIG_DEFS@ -CONFIG_MATH_LIB = @CONFIG_MATH_LIB@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CPUCCODE = @CPUCCODE@ -CPUTYPE = @CPUTYPE@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ @CONFIG_DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ -FRONTEND_LDADD = @FRONTEND_LDADD@ -FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ -GREP = @GREP@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_CONFIG = @GTK_CONFIG@ -GTK_LIBS = @GTK_LIBS@ -INCLUDES = @INCLUDES@ \ - -I$(top_srcdir)/libmp3lame \ - -I$(top_srcdir)/mpglib \ - -I$(top_builddir) - -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDADD = @LDADD@ -LDFLAGS = @LDFLAGS@ -LIBICONV = @LIBICONV@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ -LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBICONV = @LTLIBICONV@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEDEP = @MAKEDEP@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NASM = @NASM@ -NASM_FORMAT = @NASM_FORMAT@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -RM_F = @RM_F@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ -SNDFILE_LIBS = @SNDFILE_LIBS@ -STRIP = @STRIP@ -U = @U@ -VERSION = @VERSION@ -WITH_FRONTEND = @WITH_FRONTEND@ -WITH_MP3RTP = @WITH_MP3RTP@ -WITH_MP3X = @WITH_MP3X@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = 1.11 foreign $(top_srcdir)/ansi2knr -@WITH_XMM_TRUE@noinst_LTLIBRARIES = liblamevectorroutines.la -xmm_sources = xmm_quantize_sub.c -@WITH_XMM_TRUE@liblamevectorroutines_la_SOURCES = $(xmm_sources) -noinst_HEADERS = lame_intrin.h -EXTRA_liblamevectorroutines_la_SOURCES = $(xmm_sources) -CLEANFILES = lclint.txt -LCLINTFLAGS = \ - +posixlib \ - +showsummary \ - +showalluses \ - +whichlib \ - +forcehints \ - -fixedformalarray \ - +matchanyintegral \ - -Dlint - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libmp3lame/vector/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign libmp3lame/vector/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -liblamevectorroutines.la: $(liblamevectorroutines_la_OBJECTS) $(liblamevectorroutines_la_DEPENDENCIES) - $(LINK) $(am_liblamevectorroutines_la_rpath) $(liblamevectorroutines_la_OBJECTS) $(liblamevectorroutines_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c -$(top_srcdir)/ansi2knr: - $(am__cd) $(top_srcdir) && $(MAKE) $(AM_MAKEFLAGS) ./ansi2knr - -mostlyclean-kr: - -test "$U" = "" || rm -f *_.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmm_quantize_sub$U.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< -xmm_quantize_sub_.c: xmm_quantize_sub.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xmm_quantize_sub.c; then echo $(srcdir)/xmm_quantize_sub.c; else echo xmm_quantize_sub.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -xmm_quantize_sub_.$(OBJEXT) xmm_quantize_sub_.lo : $(ANSI2KNR) - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) $(HEADERS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: $(top_srcdir)/ansi2knr install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-kr \ - mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ - uninstall-am - - -# end global section - -lclint.txt: ${liblamecpuroutines_la_SOURCES} ${noinst_HEADERS} - @lclint ${LCLINTFLAGS} ${INCLUDES} ${DEFS} ${liblamecpuroutines_la_SOURCES} 2>&1 >lclint.txt || true - -lclint: lclint.txt - more lclint.txt - -#$(OBJECTS): libtool -#libtool: $(LIBTOOL_DEPS) -# $(SHELL) $(top_builddir)/config.status --recheck - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/platform/win32/msvc/external/lame/libmp3lame/vector/lame_intrin.h b/platform/win32/msvc/external/lame/libmp3lame/vector/lame_intrin.h deleted file mode 100644 index bc4c1899673..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/vector/lame_intrin.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * lame_intrin.h include file - * - * Copyright (c) 2006 Gabriel Bouvigne - * - * 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 LAME_INTRIN_H -#define LAME_INTRIN_H - - -void -init_xrpow_core_sse(gr_info * const cod_info, FLOAT xrpow[576], int upper, FLOAT * sum); - -void -fht_SSE2(FLOAT* , int); - -#endif diff --git a/platform/win32/msvc/external/lame/libmp3lame/vector/xmm_quantize_sub.c b/platform/win32/msvc/external/lame/libmp3lame/vector/xmm_quantize_sub.c deleted file mode 100644 index 1375aa22787..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/vector/xmm_quantize_sub.c +++ /dev/null @@ -1,232 +0,0 @@ -/* - * MP3 quantization, intrinsics functions - * - * Copyright (c) 2005-2006 Gabriel Bouvigne - * - * 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 "lame.h" -#include "machine.h" -#include "encoder.h" -#include "util.h" -#include "lame_intrin.h" - - - -#ifdef HAVE_XMMINTRIN_H - -#include <xmmintrin.h> - -typedef union { - int32_t _i_32[4]; /* unions are initialized by its first member */ - float _float[4]; - __m128 _m128; -} vecfloat_union; - -#define TRI_SIZE (5-1) /* 1024 = 4**5 */ -static const FLOAT costab[TRI_SIZE * 2] = { - 9.238795325112867e-01, 3.826834323650898e-01, - 9.951847266721969e-01, 9.801714032956060e-02, - 9.996988186962042e-01, 2.454122852291229e-02, - 9.999811752826011e-01, 6.135884649154475e-03 -}; - - - -void -init_xrpow_core_sse(gr_info * const cod_info, FLOAT xrpow[576], int upper, FLOAT * sum) -{ - int i; - float tmp_max = 0; - float tmp_sum = 0; - int upper4 = (upper / 4) * 4; - int rest = upper-upper4; - - const vecfloat_union fabs_mask = {{ 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF }}; - const __m128 vec_fabs_mask = _mm_loadu_ps(&fabs_mask._float[0]); - vecfloat_union vec_xrpow_max; - vecfloat_union vec_sum; - vecfloat_union vec_tmp; - - _mm_prefetch((char *) cod_info->xr, _MM_HINT_T0); - _mm_prefetch((char *) xrpow, _MM_HINT_T0); - - vec_xrpow_max._m128 = _mm_set_ps1(0); - vec_sum._m128 = _mm_set_ps1(0); - - for (i = 0; i < upper4; i += 4) { - vec_tmp._m128 = _mm_loadu_ps(&(cod_info->xr[i])); /* load */ - vec_tmp._m128 = _mm_and_ps(vec_tmp._m128, vec_fabs_mask); /* fabs */ - vec_sum._m128 = _mm_add_ps(vec_sum._m128, vec_tmp._m128); - vec_tmp._m128 = _mm_sqrt_ps(_mm_mul_ps(vec_tmp._m128, _mm_sqrt_ps(vec_tmp._m128))); - vec_xrpow_max._m128 = _mm_max_ps(vec_xrpow_max._m128, vec_tmp._m128); /* retrieve max */ - _mm_storeu_ps(&(xrpow[i]), vec_tmp._m128); /* store into xrpow[] */ - } - vec_tmp._m128 = _mm_set_ps1(0); - switch (rest) { - case 3: vec_tmp._float[2] = cod_info->xr[upper4+2]; - case 2: vec_tmp._float[1] = cod_info->xr[upper4+1]; - case 1: vec_tmp._float[0] = cod_info->xr[upper4+0]; - vec_tmp._m128 = _mm_and_ps(vec_tmp._m128, vec_fabs_mask); /* fabs */ - vec_sum._m128 = _mm_add_ps(vec_sum._m128, vec_tmp._m128); - vec_tmp._m128 = _mm_sqrt_ps(_mm_mul_ps(vec_tmp._m128, _mm_sqrt_ps(vec_tmp._m128))); - vec_xrpow_max._m128 = _mm_max_ps(vec_xrpow_max._m128, vec_tmp._m128); /* retrieve max */ - switch (rest) { - case 3: xrpow[upper4+2] = vec_tmp._float[2]; - case 2: xrpow[upper4+1] = vec_tmp._float[1]; - case 1: xrpow[upper4+0] = vec_tmp._float[0]; - default: - break; - } - default: - break; - } - tmp_sum = vec_sum._float[0] + vec_sum._float[1] + vec_sum._float[2] + vec_sum._float[3]; - { - float ma = vec_xrpow_max._float[0] > vec_xrpow_max._float[1] - ? vec_xrpow_max._float[0] : vec_xrpow_max._float[1]; - float mb = vec_xrpow_max._float[2] > vec_xrpow_max._float[3] - ? vec_xrpow_max._float[2] : vec_xrpow_max._float[3]; - tmp_max = ma > mb ? ma : mb; - } - cod_info->xrpow_max = tmp_max; - *sum = tmp_sum; -} - - -static void store4(__m128 v, float* f0, float* f1, float* f2, float* f3) -{ - vecfloat_union r; - r._m128 = v; - *f0 = r._float[0]; - *f1 = r._float[1]; - *f2 = r._float[2]; - *f3 = r._float[3]; -} - - -void -fht_SSE2(FLOAT * fz, int n) -{ - const FLOAT *tri = costab; - int k4; - FLOAT *fi, *gi; - FLOAT const *fn; - - n <<= 1; /* to get BLKSIZE, because of 3DNow! ASM routine */ - fn = fz + n; - k4 = 4; - do { - FLOAT s1, c1; - int i, k1, k2, k3, kx; - kx = k4 >> 1; - k1 = k4; - k2 = k4 << 1; - k3 = k2 + k1; - k4 = k2 << 1; - fi = fz; - gi = fi + kx; - do { - FLOAT f0, f1, f2, f3; - f1 = fi[0] - fi[k1]; - f0 = fi[0] + fi[k1]; - f3 = fi[k2] - fi[k3]; - f2 = fi[k2] + fi[k3]; - fi[k2] = f0 - f2; - fi[0] = f0 + f2; - fi[k3] = f1 - f3; - fi[k1] = f1 + f3; - f1 = gi[0] - gi[k1]; - f0 = gi[0] + gi[k1]; - f3 = SQRT2 * gi[k3]; - f2 = SQRT2 * gi[k2]; - gi[k2] = f0 - f2; - gi[0] = f0 + f2; - gi[k3] = f1 - f3; - gi[k1] = f1 + f3; - gi += k4; - fi += k4; - } while (fi < fn); - c1 = tri[0]; - s1 = tri[1]; - for (i = 1; i < kx; i++) { - __m128 v_s2; - __m128 v_c2; - __m128 v_c1; - __m128 v_s1; - FLOAT c2, s2, s1_2 = s1+s1; - c2 = 1 - s1_2 * s1; - s2 = s1_2 * c1; - fi = fz + i; - gi = fz + k1 - i; - v_c1 = _mm_set_ps1(c1); - v_s1 = _mm_set_ps1(s1); - v_c2 = _mm_set_ps1(c2); - v_s2 = _mm_set_ps1(s2); - { - static const vecfloat_union sign_mask = {{0x80000000,0,0,0}}; - v_c1 = _mm_xor_ps(sign_mask._m128, v_c1); /* v_c1 := {-c1, +c1, +c1, +c1} */ - } - { - static const vecfloat_union sign_mask = {{0,0x80000000,0,0}}; - v_s1 = _mm_xor_ps(sign_mask._m128, v_s1); /* v_s1 := {+s1, -s1, +s1, +s1} */ - } - { - static const vecfloat_union sign_mask = {{0,0,0x80000000,0x80000000}}; - v_c2 = _mm_xor_ps(sign_mask._m128, v_c2); /* v_c2 := {+c2, +c2, -c2, -c2} */ - } - do { - __m128 p, q, r; - - q = _mm_setr_ps(fi[k1], fi[k3], gi[k1], gi[k3]); /* Q := {fi_k1,fi_k3,gi_k1,gi_k3}*/ - p = _mm_mul_ps(_mm_set_ps1(s2), q); /* P := s2 * Q */ - q = _mm_mul_ps(v_c2, q); /* Q := c2 * Q */ - q = _mm_shuffle_ps(q, q, _MM_SHUFFLE(1,0,3,2)); /* Q := {-c2*gi_k1,-c2*gi_k3,c2*fi_k1,c2*fi_k3} */ - p = _mm_add_ps(p, q); - - r = _mm_setr_ps(gi[0], gi[k2], fi[0], fi[k2]); /* R := {gi_0,gi_k2,fi_0,fi_k2} */ - q = _mm_sub_ps(r, p); /* Q := {gi_0-p0,gi_k2-p1,fi_0-p2,fi_k2-p3} */ - r = _mm_add_ps(r, p); /* R := {gi_0+p0,gi_k2+p1,fi_0+p2,fi_k2+p3} */ - p = _mm_shuffle_ps(q, r, _MM_SHUFFLE(2,0,2,0)); /* P := {q0,q2,r0,r2} */ - p = _mm_shuffle_ps(p, p, _MM_SHUFFLE(3,1,2,0)); /* P := {q0,r0,q2,r2} */ - q = _mm_shuffle_ps(q, r, _MM_SHUFFLE(3,1,3,1)); /* Q := {q1,q3,r1,r3} */ - r = _mm_mul_ps(v_c1, q); - q = _mm_mul_ps(v_s1, q); - q = _mm_shuffle_ps(q, q, _MM_SHUFFLE(0,1,2,3)); /* Q := {q3,q2,q1,q0} */ - q = _mm_add_ps(q, r); - - store4(_mm_sub_ps(p, q), &gi[k3], &gi[k2], &fi[k3], &fi[k2]); - store4(_mm_add_ps(p, q), &gi[k1], &gi[ 0], &fi[k1], &fi[ 0]); - - gi += k4; - fi += k4; - } while (fi < fn); - c2 = c1; - c1 = c2 * tri[0] - s1 * tri[1]; - s1 = c2 * tri[1] + s1 * tri[0]; - } - tri += 2; - } while (k4 < n); -} - -#endif /* HAVE_XMMINTRIN_H */ - diff --git a/platform/win32/msvc/external/lame/libmp3lame/version.c b/platform/win32/msvc/external/lame/libmp3lame/version.c deleted file mode 100644 index 82058125b60..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/version.c +++ /dev/null @@ -1,254 +0,0 @@ -/* - * Version numbering for LAME. - * - * Copyright (c) 1999 A.L. Faber - * - * 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. - */ - -/*! - \file version.c - \brief Version numbering for LAME. - - Contains functions which describe the version of LAME. - - \author A.L. Faber - \version \$Id: version.c,v 1.32.2.2 2011/11/18 09:18:28 robert Exp $ - \ingroup libmp3lame -*/ - - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - - -#include "lame.h" -#include "machine.h" - -#include "version.h" /* macros of version numbers */ - - - - - -/*! Get the LAME version string. */ -/*! - \param void - \return a pointer to a string which describes the version of LAME. -*/ -const char * -get_lame_version(void) -{ /* primary to write screen reports */ - /* Here we can also add informations about compile time configurations */ - -#if LAME_ALPHA_VERSION - static /*@observer@ */ const char *const str = - STR(LAME_MAJOR_VERSION) "." STR(LAME_MINOR_VERSION) " " - "(alpha " STR(LAME_PATCH_VERSION) ", " __DATE__ " " __TIME__ ")"; -#elif LAME_BETA_VERSION - static /*@observer@ */ const char *const str = - STR(LAME_MAJOR_VERSION) "." STR(LAME_MINOR_VERSION) " " - "(beta " STR(LAME_PATCH_VERSION) ", " __DATE__ ")"; -#elif LAME_RELEASE_VERSION && (LAME_PATCH_VERSION > 0) - static /*@observer@ */ const char *const str = - STR(LAME_MAJOR_VERSION) "." STR(LAME_MINOR_VERSION) "." STR(LAME_PATCH_VERSION); -#else - static /*@observer@ */ const char *const str = - STR(LAME_MAJOR_VERSION) "." STR(LAME_MINOR_VERSION); -#endif - - return str; -} - - -/*! Get the short LAME version string. */ -/*! - It's mainly for inclusion into the MP3 stream. - - \param void - \return a pointer to the short version of the LAME version string. -*/ -const char * -get_lame_short_version(void) -{ - /* adding date and time to version string makes it harder for output - validation */ - -#if LAME_ALPHA_VERSION - static /*@observer@ */ const char *const str = - STR(LAME_MAJOR_VERSION) "." STR(LAME_MINOR_VERSION) " (alpha " STR(LAME_PATCH_VERSION) ")"; -#elif LAME_BETA_VERSION - static /*@observer@ */ const char *const str = - STR(LAME_MAJOR_VERSION) "." STR(LAME_MINOR_VERSION) " (beta " STR(LAME_PATCH_VERSION) ")"; -#elif LAME_RELEASE_VERSION && (LAME_PATCH_VERSION > 0) - static /*@observer@ */ const char *const str = - STR(LAME_MAJOR_VERSION) "." STR(LAME_MINOR_VERSION) "." STR(LAME_PATCH_VERSION); -#else - static /*@observer@ */ const char *const str = - STR(LAME_MAJOR_VERSION) "." STR(LAME_MINOR_VERSION); -#endif - - return str; -} - -/*! Get the _very_ short LAME version string. */ -/*! - It's used in the LAME VBR tag only. - - \param void - \return a pointer to the short version of the LAME version string. -*/ -const char * -get_lame_very_short_version(void) -{ - /* adding date and time to version string makes it harder for output - validation */ -#if LAME_ALPHA_VERSION -#define P "a" -#elif LAME_BETA_VERSION -#define P "b" -#elif LAME_RELEASE_VERSION && (LAME_PATCH_VERSION > 0) -#define P "r" -#else -#define P "" -#endif - static /*@observer@ */ const char *const str = -#if (LAME_PATCH_VERSION > 0) - "LAME" STR(LAME_MAJOR_VERSION) "." STR(LAME_MINOR_VERSION) P STR(LAME_PATCH_VERSION) -#else - "LAME" STR(LAME_MAJOR_VERSION) "." STR(LAME_MINOR_VERSION) P -#endif - ; - return str; -} - -/*! Get the _very_ short LAME version string. */ -/*! - It's used in the LAME VBR tag only, limited to 9 characters max. - Due to some 3rd party HW/SW decoders, it has to start with LAME. - - \param void - \return a pointer to the short version of the LAME version string. - */ -const char* -get_lame_tag_encoder_short_version(void) -{ - static /*@observer@ */ const char *const str = - /* FIXME: new scheme / new version counting / drop versioning here ? */ - "LAME" STR(LAME_MAJOR_VERSION) "." STR(LAME_MINOR_VERSION) P - ; - return str; -} - -/*! Get the version string for GPSYCHO. */ -/*! - \param void - \return a pointer to a string which describes the version of GPSYCHO. -*/ -const char * -get_psy_version(void) -{ -#if PSY_ALPHA_VERSION > 0 - static /*@observer@ */ const char *const str = - STR(PSY_MAJOR_VERSION) "." STR(PSY_MINOR_VERSION) - " (alpha " STR(PSY_ALPHA_VERSION) ", " __DATE__ " " __TIME__ ")"; -#elif PSY_BETA_VERSION > 0 - static /*@observer@ */ const char *const str = - STR(PSY_MAJOR_VERSION) "." STR(PSY_MINOR_VERSION) - " (beta " STR(PSY_BETA_VERSION) ", " __DATE__ ")"; -#else - static /*@observer@ */ const char *const str = - STR(PSY_MAJOR_VERSION) "." STR(PSY_MINOR_VERSION); -#endif - - return str; -} - - -/*! Get the URL for the LAME website. */ -/*! - \param void - \return a pointer to a string which is a URL for the LAME website. -*/ -const char * -get_lame_url(void) -{ - static /*@observer@ */ const char *const str = LAME_URL; - - return str; -} - - -/*! Get the numerical representation of the version. */ -/*! - Writes the numerical representation of the version of LAME and - GPSYCHO into lvp. - - \param lvp -*/ -void -get_lame_version_numerical(lame_version_t * lvp) -{ - static /*@observer@ */ const char *const features = ""; /* obsolete */ - - /* generic version */ - lvp->major = LAME_MAJOR_VERSION; - lvp->minor = LAME_MINOR_VERSION; -#if LAME_ALPHA_VERSION - lvp->alpha = LAME_PATCH_VERSION; - lvp->beta = 0; -#elif LAME_BETA_VERSION - lvp->alpha = 0; - lvp->beta = LAME_PATCH_VERSION; -#else - lvp->alpha = 0; - lvp->beta = 0; -#endif - - /* psy version */ - lvp->psy_major = PSY_MAJOR_VERSION; - lvp->psy_minor = PSY_MINOR_VERSION; - lvp->psy_alpha = PSY_ALPHA_VERSION; - lvp->psy_beta = PSY_BETA_VERSION; - - /* compile time features */ - /*@-mustfree@ */ - lvp->features = features; - /*@=mustfree@ */ -} - - -const char * -get_lame_os_bitness(void) -{ - static /*@observer@ */ const char *const strXX = ""; - static /*@observer@ */ const char *const str32 = "32bits"; - static /*@observer@ */ const char *const str64 = "64bits"; - - switch (sizeof(void *)) { - case 4: - return str32; - - case 8: - return str64; - - default: - return strXX; - } -} - -/* end of version.c */ diff --git a/platform/win32/msvc/external/lame/libmp3lame/version.h b/platform/win32/msvc/external/lame/libmp3lame/version.h deleted file mode 100644 index 640a0f343b4..00000000000 --- a/platform/win32/msvc/external/lame/libmp3lame/version.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Version numbering for LAME. - * - * Copyright (c) 1999 A.L. Faber - * - * 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 LAME_VERSION_H -#define LAME_VERSION_H - - -/* - * To make a string from a token, use the # operator: - */ -#ifndef STR -# define __STR(x) #x -# define STR(x) __STR(x) -#endif - -# define LAME_URL "http://lame.sf.net" - - -# define LAME_MAJOR_VERSION 3 /* Major version number */ -# define LAME_MINOR_VERSION 99 /* Minor version number */ -# define LAME_TYPE_VERSION 2 /* 0:alpha 1:beta 2:release */ -# define LAME_PATCH_VERSION 5 /* Patch level */ -# define LAME_ALPHA_VERSION (LAME_TYPE_VERSION==0) -# define LAME_BETA_VERSION (LAME_TYPE_VERSION==1) -# define LAME_RELEASE_VERSION (LAME_TYPE_VERSION==2) - -# define PSY_MAJOR_VERSION 1 /* Major version number */ -# define PSY_MINOR_VERSION 0 /* Minor version number */ -# define PSY_ALPHA_VERSION 0 /* Set number if this is an alpha version, otherwise zero */ -# define PSY_BETA_VERSION 0 /* Set number if this is a beta version, otherwise zero */ - -#if LAME_ALPHA_VERSION -#define LAME_PATCH_LEVEL_STRING " alpha " STR(LAME_PATCH_VERSION) -#endif -#if LAME_BETA_VERSION -#define LAME_PATCH_LEVEL_STRING " beta " STR(LAME_PATCH_VERSION) -#endif -#if LAME_RELEASE_VERSION -#if LAME_PATCH_VERSION -#define LAME_PATCH_LEVEL_STRING " release " STR(LAME_PATCH_VERSION) -#else -#define LAME_PATCH_LEVEL_STRING "" -#endif -#endif - -# define LAME_VERSION_STRING STR(LAME_MAJOR_VERSION) "." STR(LAME_MINOR_VERSION) LAME_PATCH_LEVEL_STRING - -#endif /* LAME_VERSION_H */ - -/* End of version.h */ diff --git a/platform/win32/msvc/external/lame/ltmain.sh b/platform/win32/msvc/external/lame/ltmain.sh deleted file mode 100644 index d41416a5b71..00000000000 --- a/platform/win32/msvc/external/lame/ltmain.sh +++ /dev/null @@ -1,8796 +0,0 @@ -# Generated from ltmain.m4sh. - -# libtool (GNU libtool) 2.2.10 -# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, -# 2007, 2008, 2009, 2010 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool 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. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, -# or obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -# Usage: $progname [OPTION]... [MODE-ARG]... -# -# Provide generalized library-building support services. -# -# --config show all configuration variables -# --debug enable verbose shell tracing -# -n, --dry-run display commands without modifying any files -# --features display basic configuration information and exit -# --mode=MODE use operation mode MODE -# --preserve-dup-deps don't remove duplicate dependency libraries -# --quiet, --silent don't print informational messages -# --no-quiet, --no-silent -# print informational messages (default) -# --tag=TAG use configuration variables from tag TAG -# -v, --verbose print more informational messages than default -# --no-verbose don't print the extra informational messages -# --version print version information -# -h, --help, --help-all print short, long, or detailed help message -# -# MODE must be one of the following: -# -# clean remove files from the build directory -# compile compile a source file into a libtool object -# execute automatically set library path, then run a program -# finish complete the installation of libtool libraries -# install install libraries or executables -# link create a library or an executable -# uninstall remove libraries from an installed directory -# -# MODE-ARGS vary depending on the MODE. When passed as first option, -# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. -# Try `$progname --help --mode=MODE' for a more detailed description of MODE. -# -# When reporting a bug, please describe a test case to reproduce it and -# include the following information: -# -# host-triplet: $host -# shell: $SHELL -# compiler: $LTCC -# compiler flags: $LTCFLAGS -# linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.2.10 -# automake: $automake_version -# autoconf: $autoconf_version -# -# Report bugs to <bug-libtool@gnu.org>. - -PROGRAM=libtool -PACKAGE=libtool -VERSION=2.2.10 -TIMESTAMP="" -package_revision=1.3175 - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} - -# NLS nuisances: We save the old values to restore during execute mode. -lt_user_locale= -lt_safe_locale= -for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -do - eval "if test \"\${$lt_var+set}\" = set; then - save_$lt_var=\$$lt_var - $lt_var=C - export $lt_var - lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" - lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" - fi" -done -LC_ALL=C -LANGUAGE=C -export LANGUAGE LC_ALL - -$lt_unset CDPATH - - -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath="$0" - - - -: ${CP="cp -f"} -test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} -: ${EGREP="grep -E"} -: ${FGREP="grep -F"} -: ${GREP="grep"} -: ${LN_S="ln -s"} -: ${MAKE="make"} -: ${MKDIR="mkdir"} -: ${MV="mv -f"} -: ${RM="rm -f"} -: ${SED="sed"} -: ${SHELL="${CONFIG_SHELL-/bin/sh}"} -: ${Xsed="$SED -e 1s/^X//"} - -# Global variables: -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. - -exit_status=$EXIT_SUCCESS - -# Make sure IFS has a sensible default -lt_nl=' -' -IFS=" $lt_nl" - -dirname="s,/[^/]*$,," -basename="s,^.*/,," - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi - func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` -} - -# Generated shell functions inserted here. - -# These SED scripts presuppose an absolute path with a trailing slash. -pathcar='s,^/\([^/]*\).*$,\1,' -pathcdr='s,^/[^/]*,,' -removedotparts=':dotsl - s@/\./@/@g - t dotsl - s,/\.$,/,' -collapseslashes='s@/\{1,\}@/@g' -finalslash='s,/*$,/,' - -# func_normal_abspath PATH -# Remove doubled-up and trailing slashes, "." path components, -# and cancel out any ".." path components in PATH after making -# it an absolute path. -# value returned in "$func_normal_abspath_result" -func_normal_abspath () -{ - # Start from root dir and reassemble the path. - func_normal_abspath_result= - func_normal_abspath_tpath=$1 - func_normal_abspath_altnamespace= - case $func_normal_abspath_tpath in - "") - # Empty path, that just means $cwd. - func_stripname '' '/' "`pwd`" - func_normal_abspath_result=$func_stripname_result - return - ;; - # The next three entries are used to spot a run of precisely - # two leading slashes without using negated character classes; - # we take advantage of case's first-match behaviour. - ///*) - # Unusual form of absolute path, do nothing. - ;; - //*) - # Not necessarily an ordinary path; POSIX reserves leading '//' - # and for example Cygwin uses it to access remote file shares - # over CIFS/SMB, so we conserve a leading double slash if found. - func_normal_abspath_altnamespace=/ - ;; - /*) - # Absolute path, do nothing. - ;; - *) - # Relative path, prepend $cwd. - func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath - ;; - esac - # Cancel out all the simple stuff to save iterations. We also want - # the path to end with a slash for ease of parsing, so make sure - # there is one (and only one) here. - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` - while :; do - # Processed it all yet? - if test "$func_normal_abspath_tpath" = / ; then - # If we ascended to the root using ".." the result may be empty now. - if test -z "$func_normal_abspath_result" ; then - func_normal_abspath_result=/ - fi - break - fi - func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcar"` - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcdr"` - # Figure out what to do with it - case $func_normal_abspath_tcomponent in - "") - # Trailing empty path component, ignore it. - ;; - ..) - # Parent dir; strip last assembled component from result. - func_dirname "$func_normal_abspath_result" - func_normal_abspath_result=$func_dirname_result - ;; - *) - # Actual path component, append it. - func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent - ;; - esac - done - # Restore leading double-slash if one was found on entry. - func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result -} - -# func_relative_path SRCDIR DSTDIR -# generates a relative path from SRCDIR to DSTDIR, with a trailing -# slash if non-empty, suitable for immediately appending a filename -# without needing to append a separator. -# value returned in "$func_relative_path_result" -func_relative_path () -{ - func_relative_path_result= - func_normal_abspath "$1" - func_relative_path_tlibdir=$func_normal_abspath_result - func_normal_abspath "$2" - func_relative_path_tbindir=$func_normal_abspath_result - - # Ascend the tree starting from libdir - while :; do - # check if we have found a prefix of bindir - case $func_relative_path_tbindir in - $func_relative_path_tlibdir) - # found an exact match - func_relative_path_tcancelled= - break - ;; - $func_relative_path_tlibdir*) - # found a matching prefix - func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" - func_relative_path_tcancelled=$func_stripname_result - if test -z "$func_relative_path_result"; then - func_relative_path_result=. - fi - break - ;; - *) - func_dirname $func_relative_path_tlibdir - func_relative_path_tlibdir=${func_dirname_result} - if test "x$func_relative_path_tlibdir" = x ; then - # Have to descend all the way to the root! - func_relative_path_result=../$func_relative_path_result - func_relative_path_tcancelled=$func_relative_path_tbindir - break - fi - func_relative_path_result=../$func_relative_path_result - ;; - esac - done - - # Now calculate path; take care to avoid doubling-up slashes. - func_stripname '' '/' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - func_stripname '/' '/' "$func_relative_path_tcancelled" - if test "x$func_stripname_result" != x ; then - func_relative_path_result=${func_relative_path_result}/${func_stripname_result} - fi - - # Normalisation. If bindir is libdir, return empty string, - # else relative path ending with a slash; either way, target - # file name can be directly appended. - if test ! -z "$func_relative_path_result"; then - func_stripname './' '' "$func_relative_path_result/" - func_relative_path_result=$func_stripname_result - fi -} - -# The name of this program: -func_dirname_and_basename "$progpath" -progname=$func_basename_result - -# Make sure we have an absolute path for reexecution: -case $progpath in - [\\/]*|[A-Za-z]:\\*) ;; - *[\\/]*) - progdir=$func_dirname_result - progdir=`cd "$progdir" && pwd` - progpath="$progdir/$progname" - ;; - *) - save_IFS="$IFS" - IFS=: - for progdir in $PATH; do - IFS="$save_IFS" - test -x "$progdir/$progname" && break - done - IFS="$save_IFS" - test -n "$progdir" || progdir=`pwd` - progpath="$progdir/$progname" - ;; -esac - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed="${SED}"' -e 1s/^X//' -sed_quote_subst='s/\([`"$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Re-`\' parameter expansions in output of double_quote_subst that were -# `\'-ed in input to the same. If an odd number of `\' preceded a '$' -# in input to double_quote_subst, that '$' was protected from expansion. -# Since each input `\' is now two `\'s, look for any number of runs of -# four `\'s followed by two `\'s and then a '$'. `\' that '$'. -bs='\\' -bs2='\\\\' -bs4='\\\\\\\\' -dollar='\$' -sed_double_backslash="\ - s/$bs4/&\\ -/g - s/^$bs2$dollar/$bs&/ - s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g - s/\n//g" - -# Standard options: -opt_dry_run=false -opt_help=false -opt_quiet=false -opt_verbose=false -opt_warning=: - -# func_echo arg... -# Echo program name prefixed message, along with the current mode -# name if it has been set yet. -func_echo () -{ - $ECHO "$progname${mode+: }$mode: $*" -} - -# func_verbose arg... -# Echo program name prefixed message in verbose mode only. -func_verbose () -{ - $opt_verbose && func_echo ${1+"$@"} - - # A bug in bash halts the script if the last line of a function - # fails when set -e is in force, so we need another command to - # work around that: - : -} - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -# func_error arg... -# Echo program name prefixed message to standard error. -func_error () -{ - $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 -} - -# func_warning arg... -# Echo program name prefixed warning message to standard error. -func_warning () -{ - $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 - - # bash bug again: - : -} - -# func_fatal_error arg... -# Echo program name prefixed message to standard error, and exit. -func_fatal_error () -{ - func_error ${1+"$@"} - exit $EXIT_FAILURE -} - -# func_fatal_help arg... -# Echo program name prefixed message to standard error, followed by -# a help hint, and exit. -func_fatal_help () -{ - func_error ${1+"$@"} - func_fatal_error "$help" -} -help="Try \`$progname --help' for more information." ## default - - -# func_grep expression filename -# Check whether EXPRESSION matches any line of FILENAME, without output. -func_grep () -{ - $GREP "$1" "$2" >/dev/null 2>&1 -} - - -# func_mkdir_p directory-path -# Make sure the entire path to DIRECTORY-PATH is available. -func_mkdir_p () -{ - my_directory_path="$1" - my_dir_list= - - if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then - - # Protect directory names starting with `-' - case $my_directory_path in - -*) my_directory_path="./$my_directory_path" ;; - esac - - # While some portion of DIR does not yet exist... - while test ! -d "$my_directory_path"; do - # ...make a list in topmost first order. Use a colon delimited - # list incase some portion of path contains whitespace. - my_dir_list="$my_directory_path:$my_dir_list" - - # If the last portion added has no slash in it, the list is done - case $my_directory_path in */*) ;; *) break ;; esac - - # ...otherwise throw away the child directory and loop - my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` - done - my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` - - save_mkdir_p_IFS="$IFS"; IFS=':' - for my_dir in $my_dir_list; do - IFS="$save_mkdir_p_IFS" - # mkdir can fail with a `File exist' error if two processes - # try to create one of the directories concurrently. Don't - # stop in that case! - $MKDIR "$my_dir" 2>/dev/null || : - done - IFS="$save_mkdir_p_IFS" - - # Bail out if we (or some other process) failed to create a directory. - test -d "$my_directory_path" || \ - func_fatal_error "Failed to create \`$1'" - fi -} - - -# func_mktempdir [string] -# Make a temporary directory that won't clash with other running -# libtool processes, and avoids race conditions if possible. If -# given, STRING is the basename for that directory. -func_mktempdir () -{ - my_template="${TMPDIR-/tmp}/${1-$progname}" - - if test "$opt_dry_run" = ":"; then - # Return a directory name, but don't create it in dry-run mode - my_tmpdir="${my_template}-$$" - else - - # If mktemp works, use that first and foremost - my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` - - if test ! -d "$my_tmpdir"; then - # Failing that, at least try and use $RANDOM to avoid a race - my_tmpdir="${my_template}-${RANDOM-0}$$" - - save_mktempdir_umask=`umask` - umask 0077 - $MKDIR "$my_tmpdir" - umask $save_mktempdir_umask - fi - - # If we're not in dry-run mode, bomb out on failure - test -d "$my_tmpdir" || \ - func_fatal_error "cannot create temporary directory \`$my_tmpdir'" - fi - - $ECHO "$my_tmpdir" -} - - -# func_quote_for_eval arg -# Aesthetically quote ARG to be evaled later. -# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT -# is double-quoted, suitable for a subsequent eval, whereas -# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters -# which are still active within double quotes backslashified. -func_quote_for_eval () -{ - case $1 in - *[\\\`\"\$]*) - func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; - *) - func_quote_for_eval_unquoted_result="$1" ;; - esac - - case $func_quote_for_eval_unquoted_result in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and and variable - # expansion for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" - ;; - *) - func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" - esac -} - - -# func_quote_for_expand arg -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () -{ - case $1 in - *[\\\`\"]*) - my_arg=`$ECHO "$1" | $SED \ - -e "$double_quote_subst" -e "$sed_double_backslash"` ;; - *) - my_arg="$1" ;; - esac - - case $my_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - my_arg="\"$my_arg\"" - ;; - esac - - func_quote_for_expand_result="$my_arg" -} - - -# func_show_eval cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. -func_show_eval () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$my_cmd" - my_status=$? - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - - -# func_show_eval_locale cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. Use the saved locale for evaluation. -func_show_eval_locale () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$lt_user_locale - $my_cmd" - my_status=$? - eval "$lt_safe_locale" - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - - -# func_version -# Echo version message to standard output and exit. -func_version () -{ - $SED -n '/(C)/!b go - :more - /\./!{ - N - s/\n# / / - b more - } - :go - /^# '$PROGRAM' (GNU /,/# warranty; / { - s/^# // - s/^# *$// - s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ - p - }' < "$progpath" - exit $? -} - -# func_usage -# Echo short help message to standard output and exit. -func_usage () -{ - $SED -n '/^# Usage:/,/^# *.*--help/ { - s/^# // - s/^# *$// - s/\$progname/'$progname'/ - p - }' < "$progpath" - echo - $ECHO "run \`$progname --help | more' for full usage" - exit $? -} - -# func_help [NOEXIT] -# Echo long help message to standard output and exit, -# unless 'noexit' is passed as argument. -func_help () -{ - $SED -n '/^# Usage:/,/# Report bugs to/ { - s/^# // - s/^# *$// - s*\$progname*'$progname'* - s*\$host*'"$host"'* - s*\$SHELL*'"$SHELL"'* - s*\$LTCC*'"$LTCC"'* - s*\$LTCFLAGS*'"$LTCFLAGS"'* - s*\$LD*'"$LD"'* - s/\$with_gnu_ld/'"$with_gnu_ld"'/ - s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ - s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ - p - }' < "$progpath" - ret=$? - if test -z "$1"; then - exit $ret - fi -} - -# func_missing_arg argname -# Echo program name prefixed message to standard error and set global -# exit_cmd. -func_missing_arg () -{ - func_error "missing argument for $1." - exit_cmd=exit -} - -exit_cmd=: - - - - - - -magic="%%%MAGIC variable%%%" -magic_exe="%%%MAGIC EXE variable%%%" - -# Global variables. -# $mode is unset -nonopt= -execute_dlfiles= -preserve_args= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" -extracted_archives= -extracted_serial=0 - -opt_dry_run=false -opt_duplicate_deps=false -opt_silent=false -opt_debug=: - -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= - -# func_fatal_configuration arg... -# Echo program name prefixed message to standard error, followed by -# a configuration failure hint, and exit. -func_fatal_configuration () -{ - func_error ${1+"$@"} - func_error "See the $PACKAGE documentation for more information." - func_fatal_error "Fatal configuration error." -} - - -# func_config -# Display the configuration for all the tags in this script. -func_config () -{ - re_begincf='^# ### BEGIN LIBTOOL' - re_endcf='^# ### END LIBTOOL' - - # Default configuration. - $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" - - # Now print the configurations for the tags. - for tagname in $taglist; do - $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" - done - - exit $? -} - -# func_features -# Display the features supported by this script. -func_features () -{ - echo "host: $host" - if test "$build_libtool_libs" = yes; then - echo "enable shared libraries" - else - echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then - echo "enable static libraries" - else - echo "disable static libraries" - fi - - exit $? -} - -# func_enable_tag tagname -# Verify that TAGNAME is valid, and either flag an error and exit, or -# enable the TAGNAME tag. We also add TAGNAME to the global $taglist -# variable here. -func_enable_tag () -{ - # Global variable: - tagname="$1" - - re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" - re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" - sed_extractcf="/$re_begincf/,/$re_endcf/p" - - # Validate tagname. - case $tagname in - *[!-_A-Za-z0-9,/]*) - func_fatal_error "invalid tag name: $tagname" - ;; - esac - - # Don't test for the "default" C tag, as we know it's - # there but not specially marked. - case $tagname in - CC) ;; - *) - if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then - taglist="$taglist $tagname" - - # Evaluate the configuration. Be careful to quote the path - # and the sed script, to avoid splitting on whitespace, but - # also don't use non-portable quotes within backquotes within - # quotes we have to do it in 2 steps: - extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` - eval "$extractedcf" - else - func_error "ignoring unknown tag $tagname" - fi - ;; - esac -} - -# Parse options once, thoroughly. This comes as soon as possible in -# the script to make things like `libtool --version' happen quickly. -{ - - # Shorthand for --mode=foo, only valid as the first argument - case $1 in - clean|clea|cle|cl) - shift; set dummy --mode clean ${1+"$@"}; shift - ;; - compile|compil|compi|comp|com|co|c) - shift; set dummy --mode compile ${1+"$@"}; shift - ;; - execute|execut|execu|exec|exe|ex|e) - shift; set dummy --mode execute ${1+"$@"}; shift - ;; - finish|finis|fini|fin|fi|f) - shift; set dummy --mode finish ${1+"$@"}; shift - ;; - install|instal|insta|inst|ins|in|i) - shift; set dummy --mode install ${1+"$@"}; shift - ;; - link|lin|li|l) - shift; set dummy --mode link ${1+"$@"}; shift - ;; - uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) - shift; set dummy --mode uninstall ${1+"$@"}; shift - ;; - esac - - # Parse non-mode specific arguments: - while test "$#" -gt 0; do - opt="$1" - shift - - case $opt in - --config) func_config ;; - - --debug) preserve_args="$preserve_args $opt" - func_echo "enabling shell trace mode" - opt_debug='set -x' - $opt_debug - ;; - - -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break - execute_dlfiles="$execute_dlfiles $1" - shift - ;; - - --dry-run | -n) opt_dry_run=: ;; - --features) func_features ;; - --finish) mode="finish" ;; - - --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break - case $1 in - # Valid mode arguments: - clean) ;; - compile) ;; - execute) ;; - finish) ;; - install) ;; - link) ;; - relink) ;; - uninstall) ;; - - # Catch anything else as an error - *) func_error "invalid argument for $opt" - exit_cmd=exit - break - ;; - esac - - mode="$1" - shift - ;; - - --preserve-dup-deps) - opt_duplicate_deps=: ;; - - --quiet|--silent) preserve_args="$preserve_args $opt" - opt_silent=: - opt_verbose=false - ;; - - --no-quiet|--no-silent) - preserve_args="$preserve_args $opt" - opt_silent=false - ;; - - --verbose| -v) preserve_args="$preserve_args $opt" - opt_silent=false - opt_verbose=: - ;; - - --no-verbose) preserve_args="$preserve_args $opt" - opt_verbose=false - ;; - - --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break - preserve_args="$preserve_args $opt $1" - func_enable_tag "$1" # tagname is set here - shift - ;; - - # Separate optargs to long options: - -dlopen=*|--mode=*|--tag=*) - func_opt_split "$opt" - set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} - shift - ;; - - -\?|-h) func_usage ;; - --help) opt_help=: ;; - --help-all) opt_help=': help-all' ;; - --version) func_version ;; - - -*) func_fatal_help "unrecognized option \`$opt'" ;; - - *) nonopt="$opt" - break - ;; - esac - done - - - case $host in - *cygwin* | *mingw* | *pw32* | *cegcc*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_duplicate_deps - ;; - esac - - # Having warned about all mis-specified options, bail out if - # anything was wrong. - $exit_cmd $EXIT_FAILURE -} - -# func_check_version_match -# Ensure that we are using m4 macros, and libtool script from the same -# release of libtool. -func_check_version_match () -{ - if test "$package_revision" != "$macro_revision"; then - if test "$VERSION" != "$macro_version"; then - if test -z "$macro_version"; then - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from an older release. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - fi - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, -$progname: but the definition of this LT_INIT comes from revision $macro_revision. -$progname: You should recreate aclocal.m4 with macros from revision $package_revision -$progname: of $PACKAGE $VERSION and run autoconf again. -_LT_EOF - fi - - exit $EXIT_MISMATCH - fi -} - - -## ----------- ## -## Main. ## -## ----------- ## - -$opt_help || { - # Sanity checks first: - func_check_version_match - - if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - func_fatal_configuration "not configured to build any kind of library" - fi - - test -z "$mode" && func_fatal_error "error: you must specify a MODE." - - - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" - - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$execute_dlfiles" && test "$mode" != execute; then - func_error "unrecognized option \`-dlopen'" - $ECHO "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$progname --help --mode=$mode' for more information." -} - - -# func_lalib_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_lalib_p () -{ - test -f "$1" && - $SED -e 4q "$1" 2>/dev/null \ - | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 -} - -# func_lalib_unsafe_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function implements the same check as func_lalib_p without -# resorting to external programs. To this end, it redirects stdin and -# closes it afterwards, without saving the original file descriptor. -# As a safety measure, use it only where a negative result would be -# fatal anyway. Works if `file' does not exist. -func_lalib_unsafe_p () -{ - lalib_p=no - if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then - for lalib_p_l in 1 2 3 4 - do - read lalib_p_line - case "$lalib_p_line" in - \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; - esac - done - exec 0<&5 5<&- - fi - test "$lalib_p" = yes -} - -# func_ltwrapper_script_p file -# True iff FILE is a libtool wrapper script -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_script_p () -{ - func_lalib_p "$1" -} - -# func_ltwrapper_executable_p file -# True iff FILE is a libtool wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_executable_p () -{ - func_ltwrapper_exec_suffix= - case $1 in - *.exe) ;; - *) func_ltwrapper_exec_suffix=.exe ;; - esac - $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 -} - -# func_ltwrapper_scriptname file -# Assumes file is an ltwrapper_executable -# uses $file to determine the appropriate filename for a -# temporary ltwrapper_script. -func_ltwrapper_scriptname () -{ - func_ltwrapper_scriptname_result="" - if func_ltwrapper_executable_p "$1"; then - func_dirname_and_basename "$1" "" "." - func_stripname '' '.exe' "$func_basename_result" - func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" - fi -} - -# func_ltwrapper_p file -# True iff FILE is a libtool wrapper script or wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_p () -{ - func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" -} - - -# func_execute_cmds commands fail_cmd -# Execute tilde-delimited COMMANDS. -# If FAIL_CMD is given, eval that upon failure. -# FAIL_CMD may read-access the current command in variable CMD! -func_execute_cmds () -{ - $opt_debug - save_ifs=$IFS; IFS='~' - for cmd in $1; do - IFS=$save_ifs - eval cmd=\"$cmd\" - func_show_eval "$cmd" "${2-:}" - done - IFS=$save_ifs -} - - -# func_source file -# Source FILE, adding directory component if necessary. -# Note that it is not necessary on cygwin/mingw to append a dot to -# FILE even if both FILE and FILE.exe exist: automatic-append-.exe -# behavior happens only for exec(3), not for open(2)! Also, sourcing -# `FILE.' does not work on cygwin managed mounts. -func_source () -{ - $opt_debug - case $1 in - */* | *\\*) . "$1" ;; - *) . "./$1" ;; - esac -} - - -# func_infer_tag arg -# Infer tagged configuration to use if any are available and -# if one wasn't chosen via the "--tag" command line option. -# Only attempt this if the compiler in the base compile -# command doesn't match the default compiler. -# arg is usually of the form 'gcc ...' -func_infer_tag () -{ - $opt_debug - - # FreeBSD-specific: where we install compilers with non-standard names - tag_compilers_CC="*cc cc* *gcc gcc* clang" - tag_compilers_CXX="*c++ c++* *g++ g++* clang++" - base_compiler=`set -- "$@"; echo $1` - - # If $tagname isn't set, then try to infer if the default "CC" tag applies - if test -z "$tagname"; then - for zp in $tag_compilers_CC; do - case $base_compiler in - $zp) tagname="CC"; break;; - esac - done - fi - - if test -n "$available_tags" && test -z "$tagname"; then - CC_quoted= - for arg in $CC; do - func_quote_for_eval "$arg" - CC_quoted="$CC_quoted $func_quote_for_eval_result" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case $@ in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" - CC_quoted= - for arg in $CC; do - # Double-quote args containing other shell metacharacters. - func_quote_for_eval "$arg" - CC_quoted="$CC_quoted $func_quote_for_eval_result" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case "$@ " in - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) - # The compiler in the base compile command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - - # FreeBSD-specific: try compilers based on inferred tag - if test -z "$tagname"; then - eval "tag_compilers=\$tag_compilers_${z}" - if test -n "$tag_compilers"; then - for zp in $tag_compilers; do - case $base_compiler in - $zp) tagname=$z; break;; - esac - done - if test -n "$tagname"; then - break - fi - fi - fi - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - func_echo "unable to infer tagged configuration" - func_fatal_error "specify a tag with \`--tag'" -# else -# func_verbose "using $tagname tagged configuration" - fi - ;; - esac - fi -} - - - -# func_write_libtool_object output_name pic_name nonpic_name -# Create a libtool object file (analogous to a ".la" file), -# but don't create it if we're doing a dry run. -func_write_libtool_object () -{ - write_libobj=${1} - if test "$build_libtool_libs" = yes; then - write_lobj=\'${2}\' - else - write_lobj=none - fi - - if test "$build_old_libs" = yes; then - write_oldobj=\'${3}\' - else - write_oldobj=none - fi - - $opt_dry_run || { - cat >${write_libobj}T <<EOF -# $write_libobj - a libtool object file -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object=$write_lobj - -# Name of the non-PIC object -non_pic_object=$write_oldobj - -EOF - $MV "${write_libobj}T" "${write_libobj}" - } -} - -# func_mode_compile arg... -func_mode_compile () -{ - $opt_debug - # Get the compilation command and the source file. - base_compile= - srcfile="$nonopt" # always keep a non-empty value in "srcfile" - suppress_opt=yes - suppress_output= - arg_mode=normal - libobj= - later= - pie_flag= - - for arg - do - case $arg_mode in - arg ) - # do not "continue". Instead, add this to base_compile - lastarg="$arg" - arg_mode=normal - ;; - - target ) - libobj="$arg" - arg_mode=normal - continue - ;; - - normal ) - # Accept any command-line options. - case $arg in - -o) - test -n "$libobj" && \ - func_fatal_error "you cannot specify \`-o' more than once" - arg_mode=target - continue - ;; - - -pie | -fpie | -fPIE) - pie_flag="$pie_flag $arg" - continue - ;; - - -shared | -static | -prefer-pic | -prefer-non-pic) - later="$later $arg" - continue - ;; - - -no-suppress) - suppress_opt=no - continue - ;; - - -Xcompiler) - arg_mode=arg # the next one goes into the "base_compile" arg list - continue # The current "srcfile" will either be retained or - ;; # replaced later. I would guess that would be a bug. - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - lastarg= - save_ifs="$IFS"; IFS=',' - for arg in $args; do - IFS="$save_ifs" - func_quote_for_eval "$arg" - lastarg="$lastarg $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$lastarg" - lastarg=$func_stripname_result - - # Add the arguments to base_compile. - base_compile="$base_compile $lastarg" - continue - ;; - - *) - # Accept the current argument as the source file. - # The previous "srcfile" becomes the current argument. - # - lastarg="$srcfile" - srcfile="$arg" - ;; - esac # case $arg - ;; - esac # case $arg_mode - - # Aesthetically quote the previous argument. - func_quote_for_eval "$lastarg" - base_compile="$base_compile $func_quote_for_eval_result" - done # for arg - - case $arg_mode in - arg) - func_fatal_error "you must specify an argument for -Xcompile" - ;; - target) - func_fatal_error "you must specify a target with \`-o'" - ;; - *) - # Get the name of the library object. - test -z "$libobj" && { - func_basename "$srcfile" - libobj="$func_basename_result" - } - ;; - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - case $libobj in - *.[cCFSifmso] | \ - *.ada | *.adb | *.ads | *.asm | \ - *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ - *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup) - func_xform "$libobj" - libobj=$func_xform_result - ;; - esac - - case $libobj in - *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; - *) - func_fatal_error "cannot determine name of library object from \`$libobj'" - ;; - esac - - func_infer_tag $base_compile - - for arg in $later; do - case $arg in - -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" - build_old_libs=no - continue - ;; - - -static) - build_libtool_libs=no - build_old_libs=yes - continue - ;; - - -prefer-pic) - pic_mode=yes - continue - ;; - - -prefer-non-pic) - pic_mode=no - continue - ;; - esac - done - - func_quote_for_eval "$libobj" - test "X$libobj" != "X$func_quote_for_eval_result" \ - && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ - && func_warning "libobj name \`$libobj' may not contain shell special characters." - func_dirname_and_basename "$obj" "/" "" - objname="$func_basename_result" - xdir="$func_dirname_result" - lobj=${xdir}$objdir/$objname - - test -z "$base_compile" && \ - func_fatal_help "you must specify a compilation command" - - # Delete any leftover library objects. - if test "$build_old_libs" = yes; then - removelist="$obj $lobj $libobj ${libobj}T" - else - removelist="$lobj $libobj ${libobj}T" - fi - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in - cygwin* | mingw* | pw32* | os2* | cegcc*) - pic_mode=default - ;; - esac - if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then - # non-PIC code in shared libraries is not supported - pic_mode=default - fi - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test "$compiler_c_o" = no; then - output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} - lockfile="$output_obj.lock" - else - output_obj= - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test "$need_locks" = yes; then - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - elif test "$need_locks" = warn; then - if test -f "$lockfile"; then - $ECHO "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - removelist="$removelist $output_obj" - $ECHO "$srcfile" > "$lockfile" - fi - - $opt_dry_run || $RM $removelist - removelist="$removelist $lockfile" - trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 - - if test -n "$fix_srcfile_path"; then - eval srcfile=\"$fix_srcfile_path\" - fi - func_quote_for_eval "$srcfile" - qsrcfile=$func_quote_for_eval_result - - # Only build a PIC object if we are building libtool libraries. - if test "$build_libtool_libs" = yes; then - # Without this assignment, base_compile gets emptied. - fbsd_hideous_sh_bug=$base_compile - - if test "$pic_mode" != no; then - command="$base_compile $qsrcfile $pic_flag" - else - # Don't build PIC code - command="$base_compile $qsrcfile" - fi - - func_mkdir_p "$xdir$objdir" - - if test -z "$output_obj"; then - # Place PIC objects in $objdir - command="$command -o $lobj" - fi - - func_show_eval_locale "$command" \ - 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed, then go on to compile the next one - if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - func_show_eval '$MV "$output_obj" "$lobj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - - # Allow error messages only from the first compilation. - if test "$suppress_opt" = yes; then - suppress_output=' >/dev/null 2>&1' - fi - fi - - # Only build a position-dependent object if we build old libraries. - if test "$build_old_libs" = yes; then - if test "$pic_mode" != yes; then - # Don't build PIC code - command="$base_compile $qsrcfile$pie_flag" - else - command="$base_compile $qsrcfile $pic_flag" - fi - if test "$compiler_c_o" = yes; then - command="$command -o $obj" - fi - - # Suppress compiler output if we already did a PIC compilation. - command="$command$suppress_output" - func_show_eval_locale "$command" \ - '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed - if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - func_show_eval '$MV "$output_obj" "$obj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - fi - - $opt_dry_run || { - func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" - - # Unlock the critical section if it was locked - if test "$need_locks" != no; then - removelist=$lockfile - $RM "$lockfile" - fi - } - - exit $EXIT_SUCCESS -} - -$opt_help || { - test "$mode" = compile && func_mode_compile ${1+"$@"} -} - -func_mode_help () -{ - # We need to display help for each of the modes. - case $mode in - "") - # Generic help is extracted from the usage comments - # at the start of this file. - func_help - ;; - - clean) - $ECHO \ -"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - - compile) - $ECHO \ -"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -no-suppress do not suppress compiler output for multiple passes - -prefer-pic try to build PIC objects only - -prefer-non-pic try to build non-PIC objects only - -shared do not build a \`.o' file suitable for static linking - -static only build a \`.o' file suitable for static linking - -Wc,FLAG pass FLAG directly to the compiler - -COMPILE-COMMAND is a command to be used in creating a \`standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." - ;; - - execute) - $ECHO \ -"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to \`-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - - finish) - $ECHO \ -"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." - ;; - - install) - $ECHO \ -"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. - -The following components of INSTALL-COMMAND are treated specially: - - -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - - link) - $ECHO \ -"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -bindir BINDIR specify path to binaries directory (for systems where - libraries must be found in the PATH setting at runtime) - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects - -precious-files-regex REGEX - don't remove output files matching REGEX - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -shared only do dynamic linking of libtool libraries - -shrext SUFFIX override the standard shared library file extension - -static do not do any dynamic linking of uninstalled libtool libraries - -static-libtool-libs - do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -weak LIBNAME declare that the target provides the LIBNAME interface - -Wc,FLAG - -Xcompiler FLAG pass linker-specific FLAG directly to the compiler - -Wl,FLAG - -Xlinker FLAG pass linker-specific FLAG directly to the linker - -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) - -All other options (arguments beginning with \`-') are ignored. - -Every other argument is treated as a filename. Files ending in \`.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. - -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -is created, otherwise an executable program is created." - ;; - - uninstall) - $ECHO \ -"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - - *) - func_fatal_help "invalid operation mode \`$mode'" - ;; - esac - - echo - $ECHO "Try \`$progname --help' for more information about other modes." -} - -# Now that we've collected a possible --mode arg, show help if necessary -if $opt_help; then - if test "$opt_help" = :; then - func_mode_help - else - { - func_help noexit - for mode in compile link execute install finish uninstall clean; do - func_mode_help - done - } | sed -n '1p; 2,$s/^Usage:/ or: /p' - { - func_help noexit - for mode in compile link execute install finish uninstall clean; do - echo - func_mode_help - done - } | - sed '1d - /^When reporting/,/^Report/{ - H - d - } - $x - /information about other modes/d - /more detailed .*MODE/d - s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' - fi - exit $? -fi - - -# func_mode_execute arg... -func_mode_execute () -{ - $opt_debug - # The first argument is the command name. - cmd="$nonopt" - test -z "$cmd" && \ - func_fatal_help "you must specify a COMMAND" - - # Handle -dlopen flags immediately. - for file in $execute_dlfiles; do - test -f "$file" \ - || func_fatal_help "\`$file' is not a file" - - dir= - case $file in - *.la) - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$lib' is not a valid libtool archive" - - # Read the libtool library. - dlname= - library_names= - func_source "$file" - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && \ - func_warning "\`$file' was not linked with \`-export-dynamic'" - continue - fi - - func_dirname "$file" "" "." - dir="$func_dirname_result" - - if test -f "$dir/$objdir/$dlname"; then - dir="$dir/$objdir" - else - if test ! -f "$dir/$dlname"; then - func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" - fi - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - func_dirname "$file" "" "." - dir="$func_dirname_result" - ;; - - *) - func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic="$magic" - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -* | *.la | *.lo ) ;; - *) - # Do a test to see if this is really a libtool program. - if func_ltwrapper_script_p "$file"; then - func_source "$file" - # Transform arg to wrapped name. - file="$progdir/$program" - elif func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - func_source "$func_ltwrapper_scriptname_result" - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - func_quote_for_eval "$file" - args="$args $func_quote_for_eval_result" - done - - if test "X$opt_dry_run" = Xfalse; then - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved environment variables - for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES - do - eval "if test \"\${save_$lt_var+set}\" = set; then - $lt_var=\$save_$lt_var; export $lt_var - else - $lt_unset $lt_var - fi" - done - - # Now prepare to actually exec the command. - exec_cmd="\$cmd$args" - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - echo "export $shlibpath_var" - fi - $ECHO "$cmd$args" - exit $EXIT_SUCCESS - fi -} - -test "$mode" = execute && func_mode_execute ${1+"$@"} - - -# func_mode_finish arg... -func_mode_finish () -{ - $opt_debug - libdirs="$nonopt" - admincmds= - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for dir - do - libdirs="$libdirs $dir" - done - - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - func_execute_cmds "$finish_cmds" 'admincmds="$admincmds -'"$cmd"'"' - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $opt_dry_run || eval "$cmds" || admincmds="$admincmds - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - $opt_silent && exit $EXIT_SUCCESS - - echo "----------------------------------------------------------------------" - echo "Libraries have been installed in:" - for libdir in $libdirs; do - $ECHO " $libdir" - done - echo - echo "If you ever happen to want to link against installed libraries" - echo "in a given directory, LIBDIR, you must either use libtool, and" - echo "specify the full pathname of the library, or use the \`-LLIBDIR'" - echo "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - echo " - add LIBDIR to the \`$shlibpath_var' environment variable" - echo " during execution" - fi - if test -n "$runpath_var"; then - echo " - add LIBDIR to the \`$runpath_var' environment variable" - echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - $ECHO " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then - $ECHO " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" - fi - echo - - echo "See any operating system documentation about shared libraries for" - case $host in - solaris2.[6789]|solaris2.1[0-9]) - echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" - echo "pages." - ;; - *) - echo "more information, such as the ld(1) and ld.so(8) manual pages." - ;; - esac - echo "----------------------------------------------------------------------" - exit $EXIT_SUCCESS -} - -test "$mode" = finish && func_mode_finish ${1+"$@"} - - -# func_mode_install arg... -func_mode_install () -{ - $opt_debug - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || - # Allow the use of GNU shtool's install command. - case $nonopt in *shtool*) :;; *) false;; esac; then - # Aesthetically quote it. - func_quote_for_eval "$nonopt" - install_prog="$func_quote_for_eval_result " - arg=$1 - shift - else - install_prog= - arg=$nonopt - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - func_quote_for_eval "$arg" - install_prog="$install_prog$func_quote_for_eval_result" - install_shared_prog=$install_prog - case " $install_prog " in - *[\\\ /]cp\ *) install_cp=: ;; - *) install_cp=false ;; - esac - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=no - stripme= - no_mode=: - for arg - do - arg2= - if test -n "$dest"; then - files="$files $dest" - dest=$arg - continue - fi - - case $arg in - -d) isdir=yes ;; - -f) - if $install_cp; then :; else - prev=$arg - fi - ;; - -g | -m | -o) - prev=$arg - ;; - -s) - stripme=" -s" - continue - ;; - -*) - ;; - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - if test "x$prev" = x-m && test -n "$install_override_mode"; then - arg2=$install_override_mode - no_mode=false - fi - prev= - else - dest=$arg - continue - fi - ;; - esac - - # Aesthetically quote the argument. - func_quote_for_eval "$arg" - install_prog="$install_prog $func_quote_for_eval_result" - if test -n "$arg2"; then - func_quote_for_eval "$arg2" - fi - install_shared_prog="$install_shared_prog $func_quote_for_eval_result" - done - - test -z "$install_prog" && \ - func_fatal_help "you must specify an install program" - - test -n "$prev" && \ - func_fatal_help "the \`$prev' option requires an argument" - - if test -n "$install_override_mode" && $no_mode; then - if $install_cp; then :; else - func_quote_for_eval "$install_override_mode" - install_shared_prog="$install_shared_prog -m $func_quote_for_eval_result" - fi - fi - - if test -z "$files"; then - if test -z "$dest"; then - func_fatal_help "no file or destination specified" - else - func_fatal_help "you must specify a destination" - fi - fi - - # Strip any trailing slash from the destination. - func_stripname '' '/' "$dest" - dest=$func_stripname_result - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" - destname= - else - func_dirname_and_basename "$dest" "" "." - destdir="$func_dirname_result" - destname="$func_basename_result" - - # Not a directory, so check to see that there is only one file specified. - set dummy $files; shift - test "$#" -gt 1 && \ - func_fatal_help "\`$dest' is not a directory" - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - func_fatal_help "\`$destdir' must be an absolute directory name" - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - staticlibs="$staticlibs $file" - ;; - - *.la) - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$file' is not a valid libtool archive" - - library_names= - old_library= - relink_command= - func_source "$file" - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) current_libdirs="$current_libdirs $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) future_libdirs="$future_libdirs $libdir" ;; - esac - fi - - func_dirname "$file" "/" "" - dir="$func_dirname_result" - dir="$dir$objdir" - - if test -n "$relink_command"; then - # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` - - # Don't allow the user to place us outside of our expected - # location b/c this prevents finding dependent libraries that - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - test "$inst_prefix_dir" = "$destdir" && \ - func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi - - func_warning "relinking \`$file'" - func_show_eval "$relink_command" \ - 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' - fi - - # See the names of the shared library. - set dummy $library_names; shift - if test -n "$1"; then - realname="$1" - shift - - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T - - # Install the shared library and build the symlinks. - func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ - 'exit $?' - tstripme="$stripme" - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - case $realname in - *.dll.a) - tstripme="" - ;; - esac - ;; - esac - if test -n "$tstripme" && test -n "$striplib"; then - func_show_eval "$striplib $destdir/$realname" 'exit $?' - fi - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - # Try `ln -sf' first, because the `ln' binary might depend on - # the symlink we replace! Solaris /bin/ln does not understand -f, - # so we also need to try rm && ln -s. - for linkname - do - test "$linkname" != "$realname" \ - && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" - done - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - func_execute_cmds "$postinstall_cmds" 'exit $?' - fi - - # Install the pseudo-library for information purposes. - func_basename "$file" - name="$func_basename_result" - instname="$dir/$name"i - func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' - - # Maybe install the static library, too. - test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - func_lo2o "$destfile" - staticdest=$func_lo2o_result - ;; - *.$objext) - staticdest="$destfile" - destfile= - ;; - *) - func_fatal_help "cannot copy a libtool object to \`$destfile'" - ;; - esac - - # Install the libtool object if requested. - test -n "$destfile" && \ - func_show_eval "$install_prog $file $destfile" 'exit $?' - - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - func_lo2o "$file" - staticobj=$func_lo2o_result - func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' - fi - exit $EXIT_SUCCESS - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext="" - case $file in - *.exe) - if test ! -f "$file"; then - func_stripname '' '.exe' "$file" - file=$func_stripname_result - stripped_ext=".exe" - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin* | *mingw*) - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - wrapper=$func_ltwrapper_scriptname_result - else - func_stripname '' '.exe' "$file" - wrapper=$func_stripname_result - fi - ;; - *) - wrapper=$file - ;; - esac - if func_ltwrapper_script_p "$wrapper"; then - notinst_deplibs= - relink_command= - - func_source "$wrapper" - - # Check the variables that should have been set. - test -z "$generated_by_libtool_version" && \ - func_fatal_error "invalid libtool wrapper script \`$wrapper'" - - finalize=yes - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - func_source "$lib" - fi - libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test - if test -n "$libdir" && test ! -f "$libfile"; then - func_warning "\`$lib' has not been installed in \`$libdir'" - finalize=no - fi - done - - relink_command= - func_source "$wrapper" - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - $opt_dry_run || { - if test "$finalize" = yes; then - tmpdir=`func_mktempdir` - func_basename "$file$stripped_ext" - file="$func_basename_result" - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` - - $opt_silent || { - func_quote_for_expand "$relink_command" - eval "func_echo $func_quote_for_expand_result" - } - if eval "$relink_command"; then : - else - func_error "error: relink \`$file' with the above command before installing it" - $opt_dry_run || ${RM}r "$tmpdir" - continue - fi - file="$outputname" - else - func_warning "cannot relink \`$file'" - fi - } - else - # Install the binary that we compiled earlier. - file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyway - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - func_stripname '' '.exe' "$destfile" - destfile=$func_stripname_result - ;; - esac - ;; - esac - func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' - $opt_dry_run || if test -n "$outputname"; then - ${RM}r "$tmpdir" - fi - ;; - esac - done - - for file in $staticlibs; do - func_basename "$file" - name="$func_basename_result" - - # Set up the ranlib parameters. - oldlib="$destdir/$name" - - func_show_eval "$install_prog \$file \$oldlib" 'exit $?' - - if test -n "$stripme" && test -n "$old_striplib"; then - func_show_eval "$old_striplib $oldlib" 'exit $?' - fi - - # Do each command in the postinstall commands. - func_execute_cmds "$old_postinstall_cmds" 'exit $?' - done - - test -n "$future_libdirs" && \ - func_warning "remember to run \`$progname --finish$future_libdirs'" - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - $opt_dry_run && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi -} - -test "$mode" = install && func_mode_install ${1+"$@"} - - -# func_generate_dlsyms outputname originator pic_p -# Extract symbols from dlprefiles and create ${outputname}S.o with -# a dlpreopen symbol table. -func_generate_dlsyms () -{ - $opt_debug - my_outputname="$1" - my_originator="$2" - my_pic_p="${3-no}" - my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` - my_dlsyms= - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - my_dlsyms="${my_outputname}S.c" - else - func_error "not configured to extract global symbols from dlpreopened files" - fi - fi - - if test -n "$my_dlsyms"; then - case $my_dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${my_outputname}.nm" - - func_show_eval "$RM $nlist ${nlist}S ${nlist}T" - - # Parse the name list into a source file. - func_verbose "creating $output_objdir/$my_dlsyms" - - $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ -/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) -#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" -#endif - -/* External symbol declarations for the compiler. */\ -" - - if test "$dlself" = yes; then - func_verbose "generating symbol list for \`$output'" - - $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` - for progfile in $progfiles; do - func_verbose "extracting global C symbols from \`$progfile'" - $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $opt_dry_run || { - eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - if test -n "$export_symbols_regex"; then - $opt_dry_run || { - eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols="$output_objdir/$outputname.exp" - $opt_dry_run || { - $RM $export_symbols - eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' - ;; - esac - } - else - $opt_dry_run || { - eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' - ;; - esac - } - fi - fi - - for dlprefile in $dlprefiles; do - func_verbose "extracting global C symbols from \`$dlprefile'" - func_basename "$dlprefile" - name="$func_basename_result" - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - done - - $opt_dry_run || { - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $MV "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if $GREP -v "^: " < "$nlist" | - if sort -k 3 </dev/null >/dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - $GREP -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' - else - echo '/* NONE */' >> "$output_objdir/$my_dlsyms" - fi - - echo >> "$output_objdir/$my_dlsyms" "\ - -/* The mapping between symbol names and symbols. */ -typedef struct { - const char *name; - void *address; -} lt_dlsymlist; -" - case $host in - *cygwin* | *mingw* | *cegcc* ) - echo >> "$output_objdir/$my_dlsyms" "\ -/* DATA imports from DLLs on WIN32 con't be const, because - runtime relocations are performed -- see ld's documentation - on pseudo-relocs. */" - lt_dlsym_const= ;; - *osf5*) - echo >> "$output_objdir/$my_dlsyms" "\ -/* This system does not cope well with relocations in const data */" - lt_dlsym_const= ;; - *) - lt_dlsym_const=const ;; - esac - - echo >> "$output_objdir/$my_dlsyms" "\ -extern $lt_dlsym_const lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[]; -$lt_dlsym_const lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[] = -{\ - { \"$my_originator\", (void *) 0 }," - - case $need_lib_prefix in - no) - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - *) - eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - esac - echo >> "$output_objdir/$my_dlsyms" "\ - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_${my_prefix}_LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - } # !$opt_dry_run - - pic_flag_for_symtable= - case "$compile_command " in - *" -static "*) ;; - *) - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; - *-*-hpux*) - pic_flag_for_symtable=" $pic_flag" ;; - *) - if test "X$my_pic_p" != Xno; then - pic_flag_for_symtable=" $pic_flag" - fi - ;; - esac - ;; - esac - symtab_cflags= - for arg in $LTCFLAGS; do - case $arg in - -pie | -fpie | -fPIE) ;; - *) symtab_cflags="$symtab_cflags $arg" ;; - esac - done - - # Now compile the dynamic symbol file. - func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' - - # Clean up the generated files. - func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' - - # Transform the symbol file into the correct name. - symfileobj="$output_objdir/${my_outputname}S.$objext" - case $host in - *cygwin* | *mingw* | *cegcc* ) - if test -f "$output_objdir/$my_outputname.def"; then - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - else - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - fi - ;; - *) - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - ;; - esac - ;; - *-*-freebsd*) - # FreeBSD doesn't need this... - ;; - *) - func_fatal_error "unknown suffix for \`$my_dlsyms'" - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` - fi -} - -# func_win32_libid arg -# return the library type of file 'arg' -# -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -# Despite the name, also deal with 64 bit binaries. -func_win32_libid () -{ - $opt_debug - win32_libid_type="unknown" - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then - win32_nmres=`eval $NM -f posix -A $1 | - $SED -n -e ' - 1,100{ - / I /{ - s,.*,import, - p - q - } - }'` - case $win32_nmres in - import*) win32_libid_type="x86 archive import";; - *) win32_libid_type="x86 archive static";; - esac - fi - ;; - *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" - ;; - esac - ;; - esac - $ECHO "$win32_libid_type" -} - - - -# func_extract_an_archive dir oldlib -func_extract_an_archive () -{ - $opt_debug - f_ex_an_ar_dir="$1"; shift - f_ex_an_ar_oldlib="$1" - if test "$lock_old_archive_extraction" = yes; then - lockfile=$f_ex_an_ar_oldlib.lock - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - fi - func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ - 'stat=$?; rm -f "$lockfile"; exit $stat' - if test "$lock_old_archive_extraction" = yes; then - $opt_dry_run || rm -f "$lockfile" - fi - if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then - : - else - func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" - fi -} - - -# func_extract_archives gentop oldlib ... -func_extract_archives () -{ - $opt_debug - my_gentop="$1"; shift - my_oldlibs=${1+"$@"} - my_oldobjs="" - my_xlib="" - my_xabs="" - my_xdir="" - - for my_xlib in $my_oldlibs; do - # Extract the objects. - case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; - *) my_xabs=`pwd`"/$my_xlib" ;; - esac - func_basename "$my_xlib" - my_xlib="$func_basename_result" - my_xlib_u=$my_xlib - while :; do - case " $extracted_archives " in - *" $my_xlib_u "*) - func_arith $extracted_serial + 1 - extracted_serial=$func_arith_result - my_xlib_u=lt$extracted_serial-$my_xlib ;; - *) break ;; - esac - done - extracted_archives="$extracted_archives $my_xlib_u" - my_xdir="$my_gentop/$my_xlib_u" - - func_mkdir_p "$my_xdir" - - case $host in - *-darwin*) - func_verbose "Extracting $my_xabs" - # Do not bother doing anything if just a dry run - $opt_dry_run || { - darwin_orig_dir=`pwd` - cd $my_xdir || exit $? - darwin_archive=$my_xabs - darwin_curdir=`pwd` - darwin_base_archive=`basename "$darwin_archive"` - darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` - if test -n "$darwin_arches"; then - darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` - darwin_arch= - func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches ; do - func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" - $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" - cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" - func_extract_an_archive "`pwd`" "${darwin_base_archive}" - cd "$darwin_curdir" - $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" - done # $darwin_arches - ## Okay now we've a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` - $LIPO -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - $RM -rf unfat-$$ - cd "$darwin_orig_dir" - else - cd $darwin_orig_dir - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - } # !$opt_dry_run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` - done - - func_extract_archives_result="$my_oldobjs" -} - - -# func_emit_wrapper [arg=no] -# -# Emit a libtool wrapper script on stdout. -# Don't directly open a file because we may want to -# incorporate the script contents within a cygwin/mingw -# wrapper executable. Must ONLY be called from within -# func_mode_link because it depends on a number of variables -# set therein. -# -# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR -# variable will take. If 'yes', then the emitted script -# will assume that the directory in which it is stored is -# the $objdir directory. This is a cygwin/mingw-specific -# behavior. -func_emit_wrapper () -{ - func_emit_wrapper_arg1=${1-no} - - $ECHO "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='$sed_quote_subst' - -# Be Bourne compatible -if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variables: - generated_by_libtool_version='$macro_version' - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$ECHO are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - file=\"\$0\"" - - qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` - $ECHO "\ - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - ECHO=\"$qECHO\" - fi - -# Very basic option parsing. These options are (a) specific to -# the libtool wrapper, (b) are identical between the wrapper -# /script/ and the wrapper /executable/ which is used only on -# windows platforms, and (c) all begin with the string "--lt-" -# (application programs are unlikely to have options which match -# this pattern). -# -# There are only two supported options: --lt-debug and -# --lt-dump-script. There is, deliberately, no --lt-help. -# -# The first argument to this parsing function should be the -# script's $0 value, followed by "$@". -lt_option_debug= -func_parse_lt_options () -{ - lt_script_arg0=\$0 - shift - for lt_opt - do - case \"\$lt_opt\" in - --lt-debug) lt_option_debug=1 ;; - --lt-dump-script) - lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` - test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. - lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` - cat \"\$lt_dump_D/\$lt_dump_F\" - exit 0 - ;; - --lt-*) - \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 - exit 1 - ;; - esac - done - - # Print the debug banner immediately: - if test -n \"\$lt_option_debug\"; then - echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 - fi -} - -# Used when --lt-debug. Prints its arguments to stdout -# (redirection is the responsibility of the caller) -func_lt_dump_args () -{ - lt_dump_args_N=1; - for lt_arg - do - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" - lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` - done -} - -# Core function for launching the target application -func_exec_program_core () -{ -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2* | *-cegcc*) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -" - ;; - - *) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir/\$program\" \${1+\"\$@\"} -" - ;; - esac - $ECHO "\ - \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 - exit 1 -} - -# A function to encapsulate launching the target application -# Strips options in the --lt-* namespace from \$@ and -# launches target application with the remaining arguments. -func_exec_program () -{ - for lt_wr_arg - do - case \$lt_wr_arg in - --lt-*) ;; - *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; - esac - shift - done - func_exec_program_core \${1+\"\$@\"} -} - - # Parse options - func_parse_lt_options \"\$0\" \${1+\"\$@\"} - - # Find the directory that this script lives in. - thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` - done - - # Usually 'no', except on cygwin/mingw when embedded into - # the cwrapper. - WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 - if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then - # special case for '.' - if test \"\$thisdir\" = \".\"; then - thisdir=\`pwd\` - fi - # remove .libs from thisdir - case \"\$thisdir\" in - *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; - $objdir ) thisdir=. ;; - esac - fi - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test "$fast_install" = yes; then - $ECHO "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $MKDIR \"\$progdir\" - else - $RM \"\$progdir/\$file\" - fi" - - $ECHO "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - $ECHO \"\$relink_command_output\" >&2 - $RM \"\$progdir/\$file\" - exit 1 - fi - fi - - $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $RM \"\$progdir/\$program\"; - $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $RM \"\$progdir/\$file\" - fi" - else - $ECHO "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $ECHO "\ - - if test -f \"\$progdir/\$program\"; then" - - # Export our shlibpath_var if we have one. - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $ECHO "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` - - export $shlibpath_var -" - fi - - # fixup the dll searchpath if we need to. - if test -n "$dllsearchpath"; then - $ECHO "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - - $ECHO "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. - func_exec_program \${1+\"\$@\"} - fi - else - # The program doesn't exist. - \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 - \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 - \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 - exit 1 - fi -fi\ -" -} - - -# func_to_host_path arg -# -# Convert paths to host format when used with build tools. -# Intended for use with "native" mingw (where libtool itself -# is running under the msys shell), or in the following cross- -# build environments: -# $build $host -# mingw (msys) mingw [e.g. native] -# cygwin mingw -# *nix + wine mingw -# where wine is equipped with the `winepath' executable. -# In the native mingw case, the (msys) shell automatically -# converts paths for any non-msys applications it launches, -# but that facility isn't available from inside the cwrapper. -# Similar accommodations are necessary for $host mingw and -# $build cygwin. Calling this function does no harm for other -# $host/$build combinations not listed above. -# -# ARG is the path (on $build) that should be converted to -# the proper representation for $host. The result is stored -# in $func_to_host_path_result. -func_to_host_path () -{ - func_to_host_path_result="$1" - if test -n "$1"; then - case $host in - *mingw* ) - lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - case $build in - *mingw* ) # actually, msys - # awkward: cmd appends spaces to result - func_to_host_path_result=`( cmd //c echo "$1" ) 2>/dev/null | - $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` - ;; - *cygwin* ) - func_to_host_path_result=`cygpath -w "$1" | - $SED -e "$lt_sed_naive_backslashify"` - ;; - * ) - # Unfortunately, winepath does not exit with a non-zero - # error code, so we are forced to check the contents of - # stdout. On the other hand, if the command is not - # found, the shell will set an exit code of 127 and print - # *an error message* to stdout. So we must check for both - # error code of zero AND non-empty stdout, which explains - # the odd construction: - func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` - if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then - func_to_host_path_result=`$ECHO "$func_to_host_path_tmp1" | - $SED -e "$lt_sed_naive_backslashify"` - else - # Allow warning below. - func_to_host_path_result= - fi - ;; - esac - if test -z "$func_to_host_path_result" ; then - func_error "Could not determine host path corresponding to" - func_error " \`$1'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback: - func_to_host_path_result="$1" - fi - ;; - esac - fi -} -# end: func_to_host_path - -# func_to_host_pathlist arg -# -# Convert pathlists to host format when used with build tools. -# See func_to_host_path(), above. This function supports the -# following $build/$host combinations (but does no harm for -# combinations not listed here): -# $build $host -# mingw (msys) mingw [e.g. native] -# cygwin mingw -# *nix + wine mingw -# -# Path separators are also converted from $build format to -# $host format. If ARG begins or ends with a path separator -# character, it is preserved (but converted to $host format) -# on output. -# -# ARG is a pathlist (on $build) that should be converted to -# the proper representation on $host. The result is stored -# in $func_to_host_pathlist_result. -func_to_host_pathlist () -{ - func_to_host_pathlist_result="$1" - if test -n "$1"; then - case $host in - *mingw* ) - lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - # Remove leading and trailing path separator characters from - # ARG. msys behavior is inconsistent here, cygpath turns them - # into '.;' and ';.', and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_pathlist_tmp1=$func_stripname_result - case $build in - *mingw* ) # Actually, msys. - # Awkward: cmd appends spaces to result. - func_to_host_pathlist_result=` - ( cmd //c echo "$func_to_host_pathlist_tmp1" ) 2>/dev/null | - $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` - ;; - *cygwin* ) - func_to_host_pathlist_result=`cygpath -w -p "$func_to_host_pathlist_tmp1" | - $SED -e "$lt_sed_naive_backslashify"` - ;; - * ) - # unfortunately, winepath doesn't convert pathlists - func_to_host_pathlist_result="" - func_to_host_pathlist_oldIFS=$IFS - IFS=: - for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do - IFS=$func_to_host_pathlist_oldIFS - if test -n "$func_to_host_pathlist_f" ; then - func_to_host_path "$func_to_host_pathlist_f" - if test -n "$func_to_host_path_result" ; then - if test -z "$func_to_host_pathlist_result" ; then - func_to_host_pathlist_result="$func_to_host_path_result" - else - func_append func_to_host_pathlist_result ";$func_to_host_path_result" - fi - fi - fi - done - IFS=$func_to_host_pathlist_oldIFS - ;; - esac - if test -z "$func_to_host_pathlist_result"; then - func_error "Could not determine the host path(s) corresponding to" - func_error " \`$1'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback. This may break if $1 contains DOS-style drive - # specifications. The fix is not to complicate the expression - # below, but for the user to provide a working wine installation - # with winepath so that path translation in the cross-to-mingw - # case works properly. - lt_replace_pathsep_nix_to_dos="s|:|;|g" - func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ - $SED -e "$lt_replace_pathsep_nix_to_dos"` - fi - # Now, add the leading and trailing path separators back - case "$1" in - :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" - ;; - esac - case "$1" in - *: ) func_append func_to_host_pathlist_result ";" - ;; - esac - ;; - esac - fi -} -# end: func_to_host_pathlist - -# func_emit_cwrapperexe_src -# emit the source code for a wrapper executable on stdout -# Must ONLY be called from within func_mode_link because -# it depends on a number of variable set therein. -func_emit_cwrapperexe_src () -{ - cat <<EOF - -/* $cwrappersource - temporary wrapper executable for $objdir/$outputname - Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION - - The $output program cannot be directly executed until all the libtool - libraries that it depends on are installed. - - This wrapper executable should never be moved out of the build directory. - If it is, it will not operate correctly. -*/ -EOF - cat <<"EOF" -#ifdef _MSC_VER -# define _CRT_SECURE_NO_DEPRECATE 1 -#endif -#include <stdio.h> -#include <stdlib.h> -#ifdef _MSC_VER -# include <direct.h> -# include <process.h> -# include <io.h> -#else -# include <unistd.h> -# include <stdint.h> -# ifdef __CYGWIN__ -# include <io.h> -# endif -#endif -#include <malloc.h> -#include <stdarg.h> -#include <assert.h> -#include <string.h> -#include <ctype.h> -#include <errno.h> -#include <fcntl.h> -#include <sys/stat.h> - -/* declarations of non-ANSI functions */ -#if defined(__MINGW32__) -# ifdef __STRICT_ANSI__ -int _putenv (const char *); -# endif -#elif defined(__CYGWIN__) -# ifdef __STRICT_ANSI__ -char *realpath (const char *, char *); -int putenv (char *); -int setenv (const char *, const char *, int); -# endif -/* #elif defined (other platforms) ... */ -#endif - -/* portability defines, excluding path handling macros */ -#if defined(_MSC_VER) -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -# define S_IXUSR _S_IEXEC -# ifndef _INTPTR_T_DEFINED -# define _INTPTR_T_DEFINED -# define intptr_t int -# endif -#elif defined(__MINGW32__) -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -#elif defined(__CYGWIN__) -# define HAVE_SETENV -# define FOPEN_WB "wb" -/* #elif defined (other platforms) ... */ -#endif - -#if defined(PATH_MAX) -# define LT_PATHMAX PATH_MAX -#elif defined(MAXPATHLEN) -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef S_IXOTH -# define S_IXOTH 0 -#endif -#ifndef S_IXGRP -# define S_IXGRP 0 -#endif - -/* path handling portability macros */ -#ifndef DIR_SEPARATOR -# define DIR_SEPARATOR '/' -# define PATH_SEPARATOR ':' -#endif - -#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) -# define HAVE_DOS_BASED_FILE_SYSTEM -# define FOPEN_WB "wb" -# ifndef DIR_SEPARATOR_2 -# define DIR_SEPARATOR_2 '\\' -# endif -# ifndef PATH_SEPARATOR_2 -# define PATH_SEPARATOR_2 ';' -# endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#ifndef FOPEN_WB -# define FOPEN_WB "w" -#endif -#ifndef _O_BINARY -# define _O_BINARY 0 -#endif - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ -} while (0) - -#if defined(LT_DEBUGWRAPPER) -static int lt_debug = 1; -#else -static int lt_debug = 0; -#endif - -const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ - -void *xmalloc (size_t num); -char *xstrdup (const char *string); -const char *base_name (const char *name); -char *find_executable (const char *wrapper); -char *chase_symlinks (const char *pathspec); -int make_executable (const char *path); -int check_executable (const char *path); -char *strendzap (char *str, const char *pat); -void lt_debugprintf (const char *file, int line, const char *fmt, ...); -void lt_fatal (const char *file, int line, const char *message, ...); -static const char *nonnull (const char *s); -static const char *nonempty (const char *s); -void lt_setenv (const char *name, const char *value); -char *lt_extend_str (const char *orig_value, const char *add, int to_end); -void lt_update_exe_path (const char *name, const char *value); -void lt_update_lib_path (const char *name, const char *value); -char **prepare_spawn (char **argv); -void lt_dump_script (FILE *f); -EOF - - cat <<EOF -const char * MAGIC_EXE = "$magic_exe"; -const char * LIB_PATH_VARNAME = "$shlibpath_var"; -EOF - - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - func_to_host_pathlist "$temp_rpath" - cat <<EOF -const char * LIB_PATH_VALUE = "$func_to_host_pathlist_result"; -EOF - else - cat <<"EOF" -const char * LIB_PATH_VALUE = ""; -EOF - fi - - if test -n "$dllsearchpath"; then - func_to_host_pathlist "$dllsearchpath:" - cat <<EOF -const char * EXE_PATH_VARNAME = "PATH"; -const char * EXE_PATH_VALUE = "$func_to_host_pathlist_result"; -EOF - else - cat <<"EOF" -const char * EXE_PATH_VARNAME = ""; -const char * EXE_PATH_VALUE = ""; -EOF - fi - - if test "$fast_install" = yes; then - cat <<EOF -const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ -EOF - else - cat <<EOF -const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ -EOF - fi - - - cat <<"EOF" - -#define LTWRAPPER_OPTION_PREFIX "--lt-" - -static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; -static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; -static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; - -int -main (int argc, char *argv[]) -{ - char **newargz; - int newargc; - char *tmp_pathspec; - char *actual_cwrapper_path; - char *actual_cwrapper_name; - char *target_name; - char *lt_argv_zero; - intptr_t rval = 127; - - int i; - - program_name = (char *) xstrdup (base_name (argv[0])); - newargz = XMALLOC (char *, argc + 1); - - /* very simple arg parsing; don't want to rely on getopt - * also, copy all non cwrapper options to newargz, except - * argz[0], which is handled differently - */ - newargc=0; - for (i = 1; i < argc; i++) - { - if (strcmp (argv[i], dumpscript_opt) == 0) - { -EOF - case "$host" in - *mingw* | *cygwin* ) - # make stdout use "unix" line endings - echo " setmode(1,_O_BINARY);" - ;; - esac - - cat <<"EOF" - lt_dump_script (stdout); - return 0; - } - if (strcmp (argv[i], debug_opt) == 0) - { - lt_debug = 1; - continue; - } - if (strcmp (argv[i], ltwrapper_option_prefix) == 0) - { - /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX - namespace, but it is not one of the ones we know about and - have already dealt with, above (inluding dump-script), then - report an error. Otherwise, targets might begin to believe - they are allowed to use options in the LTWRAPPER_OPTION_PREFIX - namespace. The first time any user complains about this, we'll - need to make LTWRAPPER_OPTION_PREFIX a configure-time option - or a configure.ac-settable value. - */ - lt_fatal (__FILE__, __LINE__, - "unrecognized %s option: '%s'", - ltwrapper_option_prefix, argv[i]); - } - /* otherwise ... */ - newargz[++newargc] = xstrdup (argv[i]); - } - newargz[++newargc] = NULL; - -EOF - cat <<EOF - /* The GNU banner must be the first non-error debug message */ - lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n"); -EOF - cat <<"EOF" - lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); - lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); - - tmp_pathspec = find_executable (argv[0]); - if (tmp_pathspec == NULL) - lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); - lt_debugprintf (__FILE__, __LINE__, - "(main) found exe (before symlink chase) at: %s\n", - tmp_pathspec); - - actual_cwrapper_path = chase_symlinks (tmp_pathspec); - lt_debugprintf (__FILE__, __LINE__, - "(main) found exe (after symlink chase) at: %s\n", - actual_cwrapper_path); - XFREE (tmp_pathspec); - - actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); - strendzap (actual_cwrapper_path, actual_cwrapper_name); - - /* wrapper name transforms */ - strendzap (actual_cwrapper_name, ".exe"); - tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); - XFREE (actual_cwrapper_name); - actual_cwrapper_name = tmp_pathspec; - tmp_pathspec = 0; - - /* target_name transforms -- use actual target program name; might have lt- prefix */ - target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); - strendzap (target_name, ".exe"); - tmp_pathspec = lt_extend_str (target_name, ".exe", 1); - XFREE (target_name); - target_name = tmp_pathspec; - tmp_pathspec = 0; - - lt_debugprintf (__FILE__, __LINE__, - "(main) libtool target name: %s\n", - target_name); -EOF - - cat <<EOF - newargz[0] = - XMALLOC (char, (strlen (actual_cwrapper_path) + - strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); - strcpy (newargz[0], actual_cwrapper_path); - strcat (newargz[0], "$objdir"); - strcat (newargz[0], "/"); -EOF - - cat <<"EOF" - /* stop here, and copy so we don't have to do this twice */ - tmp_pathspec = xstrdup (newargz[0]); - - /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ - strcat (newargz[0], actual_cwrapper_name); - - /* DO want the lt- prefix here if it exists, so use target_name */ - lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); - XFREE (tmp_pathspec); - tmp_pathspec = NULL; -EOF - - case $host_os in - mingw*) - cat <<"EOF" - { - char* p; - while ((p = strchr (newargz[0], '\\')) != NULL) - { - *p = '/'; - } - while ((p = strchr (lt_argv_zero, '\\')) != NULL) - { - *p = '/'; - } - } -EOF - ;; - esac - - cat <<"EOF" - XFREE (target_name); - XFREE (actual_cwrapper_path); - XFREE (actual_cwrapper_name); - - lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ - lt_setenv ("DUALCASE", "1"); /* for MSK sh */ - lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); - lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); - - lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", - nonnull (lt_argv_zero)); - for (i = 0; i < newargc; i++) - { - lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", - i, nonnull (newargz[i])); - } - -EOF - - case $host_os in - mingw*) - cat <<"EOF" - /* execv doesn't actually work on mingw as expected on unix */ - newargz = prepare_spawn (newargz); - rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); - if (rval == -1) - { - /* failed to start process */ - lt_debugprintf (__FILE__, __LINE__, - "(main) failed to launch target \"%s\": %s\n", - lt_argv_zero, nonnull (strerror (errno))); - return 127; - } - return rval; -EOF - ;; - *) - cat <<"EOF" - execv (lt_argv_zero, newargz); - return rval; /* =127, but avoids unused variable warning */ -EOF - ;; - esac - - cat <<"EOF" -} - -void * -xmalloc (size_t num) -{ - void *p = (void *) malloc (num); - if (!p) - lt_fatal (__FILE__, __LINE__, "memory exhausted"); - - return p; -} - -char * -xstrdup (const char *string) -{ - return string ? strcpy ((char *) xmalloc (strlen (string) + 1), - string) : NULL; -} - -const char * -base_name (const char *name) -{ - const char *base; - -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - /* Skip over the disk name in MSDOS pathnames. */ - if (isalpha ((unsigned char) name[0]) && name[1] == ':') - name += 2; -#endif - - for (base = name; *name; name++) - if (IS_DIR_SEPARATOR (*name)) - base = name + 1; - return base; -} - -int -check_executable (const char *path) -{ - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if ((stat (path, &st) >= 0) - && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) - return 1; - else - return 0; -} - -int -make_executable (const char *path) -{ - int rval = 0; - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if (stat (path, &st) >= 0) - { - rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); - } - return rval; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise - Does not chase symlinks, even on platforms that support them. -*/ -char * -find_executable (const char *wrapper) -{ - int has_slash = 0; - const char *p; - const char *p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - int tmp_len; - char *concat_name; - - lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", - nonempty (wrapper)); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char *path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char *q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR (*q)) - break; - p_len = q - p; - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = - XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = - XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - return NULL; -} - -char * -chase_symlinks (const char *pathspec) -{ -#ifndef S_ISLNK - return xstrdup (pathspec); -#else - char buf[LT_PATHMAX]; - struct stat s; - char *tmp_pathspec = xstrdup (pathspec); - char *p; - int has_symlinks = 0; - while (strlen (tmp_pathspec) && !has_symlinks) - { - lt_debugprintf (__FILE__, __LINE__, - "checking path component for symlinks: %s\n", - tmp_pathspec); - if (lstat (tmp_pathspec, &s) == 0) - { - if (S_ISLNK (s.st_mode) != 0) - { - has_symlinks = 1; - break; - } - - /* search backwards for last DIR_SEPARATOR */ - p = tmp_pathspec + strlen (tmp_pathspec) - 1; - while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - p--; - if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - { - /* no more DIR_SEPARATORS left */ - break; - } - *p = '\0'; - } - else - { - lt_fatal (__FILE__, __LINE__, - "error accessing file \"%s\": %s", - tmp_pathspec, nonnull (strerror (errno))); - } - } - XFREE (tmp_pathspec); - - if (!has_symlinks) - { - return xstrdup (pathspec); - } - - tmp_pathspec = realpath (pathspec, buf); - if (tmp_pathspec == 0) - { - lt_fatal (__FILE__, __LINE__, - "could not follow symlinks for %s", pathspec); - } - return xstrdup (tmp_pathspec); -#endif -} - -char * -strendzap (char *str, const char *pat) -{ - size_t len, patlen; - - assert (str != NULL); - assert (pat != NULL); - - len = strlen (str); - patlen = strlen (pat); - - if (patlen <= len) - { - str += len - patlen; - if (strcmp (str, pat) == 0) - *str = '\0'; - } - return str; -} - -void -lt_debugprintf (const char *file, int line, const char *fmt, ...) -{ - va_list args; - if (lt_debug) - { - (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); - va_start (args, fmt); - (void) vfprintf (stderr, fmt, args); - va_end (args); - } -} - -static void -lt_error_core (int exit_status, const char *file, - int line, const char *mode, - const char *message, va_list ap) -{ - fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *file, int line, const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); - va_end (ap); -} - -static const char * -nonnull (const char *s) -{ - return s ? s : "(null)"; -} - -static const char * -nonempty (const char *s) -{ - return (s && !*s) ? "(empty)" : nonnull (s); -} - -void -lt_setenv (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_setenv) setting '%s' to '%s'\n", - nonnull (name), nonnull (value)); - { -#ifdef HAVE_SETENV - /* always make a copy, for consistency with !HAVE_SETENV */ - char *str = xstrdup (value); - setenv (name, str, 1); -#else - int len = strlen (name) + 1 + strlen (value) + 1; - char *str = XMALLOC (char, len); - sprintf (str, "%s=%s", name, value); - if (putenv (str) != EXIT_SUCCESS) - { - XFREE (str); - } -#endif - } -} - -char * -lt_extend_str (const char *orig_value, const char *add, int to_end) -{ - char *new_value; - if (orig_value && *orig_value) - { - int orig_value_len = strlen (orig_value); - int add_len = strlen (add); - new_value = XMALLOC (char, add_len + orig_value_len + 1); - if (to_end) - { - strcpy (new_value, orig_value); - strcpy (new_value + orig_value_len, add); - } - else - { - strcpy (new_value, add); - strcpy (new_value + add_len, orig_value); - } - } - else - { - new_value = xstrdup (add); - } - return new_value; -} - -void -lt_update_exe_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - /* some systems can't cope with a ':'-terminated path #' */ - int len = strlen (new_value); - while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) - { - new_value[len-1] = '\0'; - } - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -void -lt_update_lib_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -EOF - case $host_os in - mingw*) - cat <<"EOF" - -/* Prepares an argument vector before calling spawn(). - Note that spawn() does not by itself call the command interpreter - (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : - ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&v); - v.dwPlatformId == VER_PLATFORM_WIN32_NT; - }) ? "cmd.exe" : "command.com"). - Instead it simply concatenates the arguments, separated by ' ', and calls - CreateProcess(). We must quote the arguments since Win32 CreateProcess() - interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a - special way: - - Space and tab are interpreted as delimiters. They are not treated as - delimiters if they are surrounded by double quotes: "...". - - Unescaped double quotes are removed from the input. Their only effect is - that within double quotes, space and tab are treated like normal - characters. - - Backslashes not followed by double quotes are not special. - - But 2*n+1 backslashes followed by a double quote become - n backslashes followed by a double quote (n >= 0): - \" -> " - \\\" -> \" - \\\\\" -> \\" - */ -#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -char ** -prepare_spawn (char **argv) -{ - size_t argc; - char **new_argv; - size_t i; - - /* Count number of arguments. */ - for (argc = 0; argv[argc] != NULL; argc++) - ; - - /* Allocate new argument vector. */ - new_argv = XMALLOC (char *, argc + 1); - - /* Put quoted arguments into the new argument vector. */ - for (i = 0; i < argc; i++) - { - const char *string = argv[i]; - - if (string[0] == '\0') - new_argv[i] = xstrdup ("\"\""); - else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) - { - int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); - size_t length; - unsigned int backslashes; - const char *s; - char *quoted_string; - char *p; - - length = 0; - backslashes = 0; - if (quote_around) - length++; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - length += backslashes + 1; - length++; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - length += backslashes + 1; - - quoted_string = XMALLOC (char, length + 1); - - p = quoted_string; - backslashes = 0; - if (quote_around) - *p++ = '"'; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - { - unsigned int j; - for (j = backslashes + 1; j > 0; j--) - *p++ = '\\'; - } - *p++ = c; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - { - unsigned int j; - for (j = backslashes; j > 0; j--) - *p++ = '\\'; - *p++ = '"'; - } - *p = '\0'; - - new_argv[i] = quoted_string; - } - else - new_argv[i] = (char *) string; - } - new_argv[argc] = NULL; - - return new_argv; -} -EOF - ;; - esac - - cat <<"EOF" -void lt_dump_script (FILE* f) -{ -EOF - func_emit_wrapper yes | - $SED -e 's/\([\\"]\)/\\\1/g' \ - -e 's/^/ fputs ("/' -e 's/$/\\n", f);/' - - cat <<"EOF" -} -EOF -} -# end: func_emit_cwrapperexe_src - -# func_win32_import_lib_p ARG -# True if ARG is an import lib, as indicated by $file_magic_cmd -func_win32_import_lib_p () -{ - $opt_debug - case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in - *import*) : ;; - *) false ;; - esac -} - -# func_mode_link arg... -func_mode_link () -{ - $opt_debug - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - # It is impossible to link a dll without this setting, and - # we shouldn't force the makefile maintainer to figure out - # which system we are compiling for in order to pass an extra - # flag for every libtool invocation. - # allow_undefined=no - - # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll which has undefined symbols, in which case not - # even a static library is built. For now, we need to specify - # -no-undefined on the libtool link line when we can be certain - # that all symbols are satisfied, otherwise we get a static library. - allow_undefined=yes - ;; - *) - allow_undefined=yes - ;; - esac - libtool_args=$nonopt - base_compile="$nonopt $@" - compile_command=$nonopt - finalize_command=$nonopt - - compile_rpath= - finalize_rpath= - compile_shlibpath= - finalize_shlibpath= - convenience= - old_convenience= - deplibs= - old_deplibs= - compiler_flags= - linker_flags= - dllsearchpath= - lib_search_path=`pwd` - inst_prefix_dir= - new_inherited_linker_flags= - - avoid_version=no - bindir= - dlfiles= - dlprefiles= - dlself=no - export_dynamic=no - export_symbols= - export_symbols_regex= - generated= - libobjs= - ltlibs= - module=no - no_install=no - objs= - non_pic_objects= - precious_files_regex= - prefer_static_libs=no - preload=no - prev= - prevarg= - release= - rpath= - xrpath= - perm_rpath= - temp_rpath= - thread_safe=no - vinfo= - vinfo_number=no - weak_libs= - single_module="${wl}-single_module" - func_infer_tag $base_compile - - # We need to know -static, to get the right output filenames. - for arg - do - case $arg in - -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" - build_old_libs=no - break - ;; - -all-static | -static | -static-libtool-libs) - case $arg in - -all-static) - if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then - func_warning "complete static linking is impossible in this configuration" - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - -static) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=built - ;; - -static-libtool-libs) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - esac - build_libtool_libs=no - build_old_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg="$1" - shift - func_quote_for_eval "$arg" - qarg=$func_quote_for_eval_unquoted_result - func_append libtool_args " $func_quote_for_eval_result" - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - func_append compile_command " @OUTPUT@" - func_append finalize_command " @OUTPUT@" - ;; - esac - - case $prev in - bindir) - bindir="$arg" - prev= - continue - ;; - dlfiles|dlprefiles) - if test "$preload" = no; then - # Add the symbol object into the linking commands. - func_append compile_command " @SYMFILE@" - func_append finalize_command " @SYMFILE@" - preload=yes - fi - case $arg in - *.la | *.lo) ;; # We handle these cases below. - force) - if test "$dlself" = no; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test "$prev" = dlprefiles; then - dlself=yes - elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" - else - dlprefiles="$dlprefiles $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols="$arg" - test -f "$arg" \ - || func_fatal_error "symbol file \`$arg' does not exist" - prev= - continue - ;; - expsyms_regex) - export_symbols_regex="$arg" - prev= - continue - ;; - framework) - case $host in - *-*-darwin*) - case "$deplibs " in - *" $qarg.ltframework "*) ;; - *) deplibs="$deplibs $qarg.ltframework" # this is fixed later - ;; - esac - ;; - esac - prev= - continue - ;; - inst_prefix) - inst_prefix_dir="$arg" - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat "$save_arg"` - do -# moreargs="$moreargs $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - done - else - func_fatal_error "link input file \`$arg' does not exist" - fi - arg=$save_arg - prev= - continue - ;; - precious_regex) - precious_files_regex="$arg" - prev= - continue - ;; - release) - release="-$arg" - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - if test "$prev" = rpath; then - case "$rpath " in - *" $arg "*) ;; - *) rpath="$rpath $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) xrpath="$xrpath $arg" ;; - esac - fi - prev= - continue - ;; - shrext) - shrext_cmds="$arg" - prev= - continue - ;; - weak) - weak_libs="$weak_libs $arg" - prev= - continue - ;; - xcclinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xcompiler) - compiler_flags="$compiler_flags $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xlinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $wl$qarg" - prev= - func_append compile_command " $wl$qarg" - func_append finalize_command " $wl$qarg" - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi # test -n "$prev" - - prevarg="$arg" - - case $arg in - -all-static) - if test -n "$link_static_flag"; then - # See comment for -static flag below, for more details. - func_append compile_command " $link_static_flag" - func_append finalize_command " $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - func_fatal_error "\`-allow-undefined' must not be used because it is the default" - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -bindir) - prev=bindir - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - func_fatal_error "more than one -exported-symbols argument is not allowed" - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -framework) - prev=framework - continue - ;; - - -inst-prefix-dir) - prev=inst_prefix - continue - ;; - - # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* - # so, if we see these flags be careful not to treat them like -L - -L[A-Z][A-Z]*:*) - case $with_gcc/$host in - no/*-*-irix* | /*-*-irix*) - func_append compile_command " $arg" - func_append finalize_command " $arg" - ;; - esac - continue - ;; - - -L*) - func_stripname '-L' '' "$arg" - dir=$func_stripname_result - if test -z "$dir"; then - if test "$#" -gt 0; then - func_fatal_error "require no space between \`-L' and \`$1'" - else - func_fatal_error "need path for \`-L' option" - fi - fi - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - test -z "$absdir" && \ - func_fatal_error "cannot determine absolute directory name of \`$dir'" - dir="$absdir" - ;; - esac - case "$deplibs " in - *" -L$dir "*) ;; - *) - deplibs="$deplibs -L$dir" - lib_search_path="$lib_search_path $dir" - ;; - esac - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$dir:"*) ;; - ::) dllsearchpath=$dir;; - *) dllsearchpath="$dllsearchpath:$dir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) dllsearchpath="$dllsearchpath:$testbindir";; - esac - ;; - esac - continue - ;; - - -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-os2*) - # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework - deplibs="$deplibs System.ltframework" - continue - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - test "X$arg" = "X-lc" && continue - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - test "X$arg" = "X-lc" && continue - ;; - esac - elif test "X$arg" = "X-lc_r"; then - case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - deplibs="$deplibs $arg" - continue - ;; - - -module) - module=yes - continue - ;; - - # Tru64 UNIX uses -model [arg] to determine the layout of C++ - # classes, name mangling, and exception handling. - # Darwin uses the -arch flag to determine output architecture. - -model|-arch|-isysroot) - compiler_flags="$compiler_flags $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - prev=xcompiler - continue - ;; - - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) - compiler_flags="$compiler_flags $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - case "$new_inherited_linker_flags " in - *" $arg "*) ;; - * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; - esac - deplibs="$deplibs $arg" - continue - ;; - - -multi_module) - single_module="${wl}-multi_module" - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) - # The PATH hackery in wrapper scripts is required on Windows - # and Darwin in order for the loader to find any dlls it needs. - func_warning "\`-no-install' is ignored for $host" - func_warning "assuming \`-no-fast-install' instead" - fast_install=no - ;; - *) no_install=yes ;; - esac - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -objectlist) - prev=objectlist - continue - ;; - - -o) prev=output ;; - - -precious-files-regex) - prev=precious_regex - continue - ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - func_stripname '-R' '' "$arg" - dir=$func_stripname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - continue - ;; - - -shared) - # The effects of -shared are defined in a previous loop. - continue - ;; - - -shrext) - prev=shrext - continue - ;; - - -static | -static-libtool-libs) - # The effects of -static are defined in a previous loop. - # We used to do the same as -all-static on platforms that - # didn't have a PIC flag, but the assumption that the effects - # would be equivalent was wrong. It would break on at least - # Digital Unix and AIX. - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - - -version-number) - prev=vinfo - vinfo_number=yes - continue - ;; - - -weak) - prev=weak - continue - ;; - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - arg="$arg $func_quote_for_eval_result" - compiler_flags="$compiler_flags $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Wl,*) - func_stripname '-Wl,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - arg="$arg $wl$func_quote_for_eval_result" - compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" - linker_flags="$linker_flags $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Xcompiler) - prev=xcompiler - continue - ;; - - -Xlinker) - prev=xlinker - continue - ;; - - -XCClinker) - prev=xcclinker - continue - ;; - - # -msg_* for osf cc - -msg_*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - # Flags to be passed through unchanged, with rationale: - # -64, -mips[0-9] enable 64-bit mode for the SGI compiler - # -r[0-9][0-9]* specify processor for the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler - # +DA*, +DD* enable 64-bit mode for the HP compiler - # -q* compiler args for the IBM compiler - # -m*, -t[45]*, -txscale* architecture-specific flags for GCC - # -F/path path to uninstalled frameworks, gcc on darwin - # -p, -pg, --coverage, -fprofile-* profiling flags for GCC - # @file GCC response files - # -tp=* Portland pgcc target processor selection - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - func_append compile_command " $arg" - func_append finalize_command " $arg" - compiler_flags="$compiler_flags $arg" - continue - ;; - - # Some other compiler flag. - -* | +*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - *.$objext) - # A standard object. - objs="$objs $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - ;; - - *.$libext) - # An archive. - deplibs="$deplibs $arg" - old_deplibs="$old_deplibs $arg" - continue - ;; - - *.la) - # A libtool-controlled library. - - if test "$prev" = dlfiles; then - # This library was specified with -dlopen. - dlfiles="$dlfiles $arg" - prev= - elif test "$prev" = dlprefiles; then - # The library was specified with -dlpreopen. - dlprefiles="$dlprefiles $arg" - prev= - else - deplibs="$deplibs $arg" - fi - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - esac # arg - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - done # argument parsing loop - - test -n "$prev" && \ - func_fatal_help "the \`$prevarg' option requires an argument" - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - func_basename "$output" - outputname="$func_basename_result" - libobjs_save="$libobjs" - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` - else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - - func_dirname "$output" "/" "" - output_objdir="$func_dirname_result$objdir" - # Create the object directory. - func_mkdir_p "$output_objdir" - - # Determine the type of output - case $output in - "") - func_fatal_help "you must specify an output file" - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - esac - - specialdeplibs= - - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do - if $opt_duplicate_deps ; then - case "$libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - libs="$libs $deplib" - done - - if test "$linkmode" = lib; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" - - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if $opt_duplicate_compiler_generated_deps; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; - esac - pre_post_deps="$pre_post_deps $pre_post_dep" - done - fi - pre_post_deps= - fi - - deplibs= - newdependency_libs= - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries - notinst_path= # paths that contain not-installed libtool libraries - - case $linkmode in - lib) - passes="conv dlpreopen link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" - ;; - esac - done - ;; - prog) - compile_deplibs= - finalize_deplibs= - alldeplibs=no - newdlfiles= - newdlprefiles= - passes="conv scan dlopen dlpreopen link" - ;; - *) passes="conv" - ;; - esac - - for pass in $passes; do - # The preopen pass in lib mode reverses $deplibs; put it back here - # so that -L comes before libs that need it for instance... - if test "$linkmode,$pass" = "lib,link"; then - ## FIXME: Find the place where the list is rebuilt in the wrong - ## order, and fix it there properly - tmp_deplibs= - for deplib in $deplibs; do - tmp_deplibs="$deplib $tmp_deplibs" - done - deplibs="$tmp_deplibs" - fi - - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan"; then - libs="$deplibs" - deplibs= - fi - if test "$linkmode" = prog; then - case $pass in - dlopen) libs="$dlfiles" ;; - dlpreopen) libs="$dlprefiles" ;; - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; - esac - fi - if test "$linkmode,$pass" = "lib,dlpreopen"; then - # Collect and forward deplibs of preopened libtool libs - for lib in $dlprefiles; do - # Ignore non-libtool-libs - dependency_libs= - case $lib in - *.la) func_source "$lib" ;; - esac - - # Collect preopened libtool deplibs, except any this library - # has declared as weak libs - for deplib in $dependency_libs; do - func_basename "$deplib" - deplib_base=$func_basename_result - case " $weak_libs " in - *" $deplib_base "*) ;; - *) deplibs="$deplibs $deplib" ;; - esac - done - done - libs="$dlprefiles" - fi - if test "$pass" = dlopen; then - # Collect dlpreopened libraries - save_deplibs="$deplibs" - deplibs= - fi - - for deplib in $libs; do - lib= - found=no - case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - compiler_flags="$compiler_flags $deplib" - fi - - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test "$pass" = conv && continue - newdependency_libs="$deplib $newdependency_libs" - ;; - prog) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - if test "$pass" = scan; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - ;; - *) - ;; - esac # linkmode - - continue - ;; - -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - func_warning "\`-l' is ignored for archives/objects" - continue - fi - func_stripname '-l' '' "$deplib" - name=$func_stripname_result - if test "$linkmode" = lib; then - searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" - else - searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" - fi - for searchdir in $searchdirs; do - for search_ext in .la $std_shrext .so .a; do - # Search the libtool library - lib="$searchdir/lib${name}${search_ext}" - if test -f "$lib"; then - if test "$search_ext" = ".la"; then - found=yes - else - found=no - fi - break 2 - fi - done - done - if test "$found" != yes; then - # deplib doesn't seem to be a libtool library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - else # deplib is a libtool library - # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, - # We need to do some special things here, and not later. - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $deplib "*) - if func_lalib_p "$lib"; then - library_names= - old_library= - func_source "$lib" - for l in $old_library $library_names; do - ll="$l" - done - if test "X$ll" = "X$old_library" ; then # only static version available - found=no - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - lib=$ladir/$old_library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - fi - ;; - *) ;; - esac - fi - fi - ;; # -l - *.ltframework) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; - esac - fi - fi - continue - ;; - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test "$pass" = conv && continue - newdependency_libs="$deplib $newdependency_libs" - func_stripname '-L' '' "$deplib" - newlib_search_path="$newlib_search_path $func_stripname_result" - ;; - prog) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - if test "$pass" = scan; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - func_stripname '-L' '' "$deplib" - newlib_search_path="$newlib_search_path $func_stripname_result" - ;; - *) - func_warning "\`-L' is ignored for archives/objects" - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test "$pass" = link; then - func_stripname '-R' '' "$deplib" - dir=$func_stripname_result - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; - *.la) lib="$deplib" ;; - *.$libext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - # Linking convenience modules into shared libraries is allowed, - # but linking other static libraries is non-portable. - case " $dlpreconveniencelibs " in - *" $deplib "*) ;; - *) - valid_a_lib=no - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=yes - fi - ;; - pass_all) - valid_a_lib=yes - ;; - esac - if test "$valid_a_lib" != yes; then - echo - $ECHO "*** Warning: Trying to link with static lib archive $deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because the file extensions .$libext of this argument makes me believe" - echo "*** that it is just a static archive that I should not use here." - else - echo - $ECHO "*** Warning: Linking the shared library $output against the" - $ECHO "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - fi - ;; - esac - continue - ;; - prog) - if test "$pass" != link; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - continue - ;; - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - elif test "$linkmode" = prog; then - if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then - # If there is no dlopen support or we're linking statically, - # we need to preload. - newdlprefiles="$newdlprefiles $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - newdlfiles="$newdlfiles $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=yes - continue - ;; - esac # case $deplib - - if test "$found" = yes || test -f "$lib"; then : - else - func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" - fi - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$lib" \ - || func_fatal_error "\`$lib' is not a valid libtool archive" - - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - inherited_linker_flags= - # If the library was installed with an old release of libtool, - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no - avoidtemprpath= - - - # Read the .la file - func_source "$lib" - - # Convert "-framework foo" to "foo.ltframework" - if test -n "$inherited_linker_flags"; then - tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` - for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do - case " $new_inherited_linker_flags " in - *" $tmp_inherited_linker_flag "*) ;; - *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; - esac - done - fi - dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || - { test "$linkmode" != prog && test "$linkmode" != lib; }; then - test -n "$dlopen" && dlfiles="$dlfiles $dlopen" - test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" - fi - - if test "$pass" = conv; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - # It is a libtool convenience library, so add in its objects. - convenience="$convenience $ladir/$objdir/$old_library" - old_convenience="$old_convenience $ladir/$objdir/$old_library" - elif test "$linkmode" != prog && test "$linkmode" != lib; then - func_fatal_error "\`$lib' is not a convenience library" - fi - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_duplicate_deps ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= - for l in $old_library $library_names; do - linklib="$l" - done - if test -z "$linklib"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - - # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - func_fatal_error "cannot -dlopen a convenience library: \`$lib'" - fi - if test -z "$dlname" || - test "$dlopen_support" != yes || - test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. - dlprefiles="$dlprefiles $lib $dependency_libs" - else - newdlfiles="$newdlfiles $lib" - fi - continue - fi # $pass = dlopen - - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; - *) - abs_ladir=`cd "$ladir" && pwd` - if test -z "$abs_ladir"; then - func_warning "cannot determine absolute directory name of \`$ladir'" - func_warning "passing it literally to the linker, although it might fail" - abs_ladir="$ladir" - fi - ;; - esac - func_basename "$lib" - laname="$func_basename_result" - - # Find the relevant object directory and library name. - if test "X$installed" = Xyes; then - if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - func_warning "library \`$lib' was moved." - dir="$ladir" - absdir="$abs_ladir" - libdir="$abs_ladir" - else - dir="$libdir" - absdir="$libdir" - fi - test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes - else - if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir="$ladir" - absdir="$abs_ladir" - # Remove this search path later - notinst_path="$notinst_path $abs_ladir" - else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" - # Remove this search path later - notinst_path="$notinst_path $abs_ladir" - fi - fi # $installed = yes - func_stripname 'lib' '.la' "$laname" - name=$func_stripname_result - - # This library was specified with -dlpreopen. - if test "$pass" = dlpreopen; then - if test -z "$libdir" && test "$linkmode" = prog; then - func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" - fi - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - newdlprefiles="$newdlprefiles $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - newdlprefiles="$newdlprefiles $dir/$dlname" - else - newdlprefiles="$newdlprefiles $dir/$linklib" - fi - fi # $pass = dlpreopen - - if test -z "$libdir"; then - # Link the convenience library - if test "$linkmode" = lib; then - deplibs="$dir/$old_library $deplibs" - elif test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi - - - if test "$linkmode" = prog && test "$pass" != link; then - newlib_search_path="$newlib_search_path $ladir" - deplibs="$lib $deplibs" - - linkalldeplibs=no - if test "$link_all_deplibs" != no || test -z "$library_names" || - test "$build_libtool_libs" = no; then - linkalldeplibs=yes - fi - - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - newlib_search_path="$newlib_search_path $func_stripname_result" - ;; - esac - # Need to link against all dependency_libs? - if test "$linkalldeplibs" = yes; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi - if $opt_duplicate_deps ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done # for deplib - continue - fi # $linkmode = prog... - - if test "$linkmode,$pass" = "prog,link"; then - if test -n "$library_names" && - { { test "$prefer_static_libs" = no || - test "$prefer_static_libs,$installed" = "built,yes"; } || - test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath:" in - *"$absdir:"*) ;; - *) temp_rpath="$temp_rpath$absdir:" ;; - esac - fi - - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" - esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if test "$alldeplibs" = yes && - { test "$deplibs_check_method" = pass_all || - { test "$build_libtool_libs" = yes && - test -n "$library_names"; }; }; then - # We only need to search for static libraries - continue - fi - fi - - link_static=no # Whether the deplib will be linked statically - use_static_libs=$prefer_static_libs - if test "$use_static_libs" = built && test "$installed" = yes; then - use_static_libs=no - fi - if test -n "$library_names" && - { test "$use_static_libs" = no || test -z "$old_library"; }; then - case $host in - *cygwin* | *mingw* | *cegcc*) - # No point in relinking DLLs because paths are not encoded - notinst_deplibs="$notinst_deplibs $lib" - need_relink=no - ;; - *) - if test "$installed" = no; then - notinst_deplibs="$notinst_deplibs $lib" - need_relink=yes - fi - ;; - esac - # This is a shared library - - # Warn about portability, can't link against -module's on some - # systems (darwin). Don't bleat about dlopened modules though! - dlopenmodule="" - for dlpremoduletest in $dlprefiles; do - if test "X$dlpremoduletest" = "X$lib"; then - dlopenmodule="$dlpremoduletest" - break - fi - done - if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then - echo - if test "$linkmode" = prog; then - $ECHO "*** Warning: Linking the executable $output against the loadable module" - else - $ECHO "*** Warning: Linking the shared library $output against the loadable module" - fi - $ECHO "*** $linklib is not portable!" - fi - if test "$linkmode" = lib && - test "$hardcode_into_libs" = yes; then - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - shift - realname="$1" - shift - libname=`eval "\\$ECHO \"$libname_spec\""` - # use dlname if we got it. it's perfectly good, no? - if test -n "$dlname"; then - soname="$dlname" - elif test -n "$soname_spec"; then - # bleh windows - case $host in - *cygwin* | mingw* | *cegcc*) - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - esac - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - - # Make a new name for the extract_expsyms_cmds to use - soroot="$soname" - func_basename "$soroot" - soname="$func_basename_result" - func_stripname 'lib' '.dll' "$soname" - newlib=libimp-$func_stripname_result.a - - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - func_verbose "extracting exported symbol list from \`$soname'" - func_execute_cmds "$extract_expsyms_cmds" 'exit $?' - fi - - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - func_verbose "generating import library for \`$soname'" - func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' - fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" - - if test "$linkmode" = prog || test "$mode" != relink; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" - case $host in - *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; - *-*-sysv4*uw2*) add_dir="-L$dir" ;; - *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ - *-*-unixware7*) add_dir="-L$dir" ;; - *-*-darwin* ) - # if the lib is a (non-dlopened) module then we can not - # link against it, someone is ignoring the earlier warnings - if /usr/bin/file -L $add 2> /dev/null | - $GREP ": [^:]* bundle" >/dev/null ; then - if test "X$dlopenmodule" != "X$lib"; then - $ECHO "*** Warning: lib $linklib is a module, not a shared library" - if test -z "$old_library" ; then - echo - echo "*** And there doesn't seem to be a static archive available" - echo "*** The link will probably fail, sorry" - else - add="$dir/$old_library" - fi - elif test -n "$old_library"; then - add="$dir/$old_library" - fi - fi - esac - elif test "$hardcode_minus_L" = no; then - case $host in - *-*-sunos*) add_shlibpath="$dir" ;; - esac - add_dir="-L$dir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = no; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - relink) - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$dir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - *) lib_linked=no ;; - esac - - if test "$lib_linked" != yes; then - func_fatal_configuration "unsupported hardcode properties" - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; - esac - fi - if test "$linkmode" = prog; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test "$hardcode_direct" != yes && - test "$hardcode_minus_L" != yes && - test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; - esac - fi - fi - fi - - if test "$linkmode" = prog || test "$mode" = relink; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; - esac - add="-l$name" - elif test "$hardcode_automatic" = yes; then - if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" - else - add="$libdir/$linklib" - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir="-L$libdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - fi - - if test "$linkmode" = prog; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" - test -n "$add" && finalize_deplibs="$add $finalize_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - fi - fi - elif test "$linkmode" = prog; then - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" - compile_deplibs="$dir/$linklib $compile_deplibs" - finalize_deplibs="$dir/$linklib $finalize_deplibs" - else - compile_deplibs="-l$name -L$dir $compile_deplibs" - finalize_deplibs="-l$name -L$dir $finalize_deplibs" - fi - elif test "$build_libtool_libs" = yes; then - # Not a shared library - if test "$deplibs_check_method" != pass_all; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. - echo - $ECHO "*** Warning: This system can not link to static lib archive $lib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have." - if test "$module" = yes; then - echo "*** But as you try to build a module library, libtool will still create " - echo "*** a static module, that should work as long as the dlopening application" - echo "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - else - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - - if test "$linkmode" = lib; then - if test -n "$dependency_libs" && - { test "$hardcode_into_libs" != yes || - test "$build_old_libs" = yes || - test "$link_static" = yes; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) func_stripname '-R' '' "$libdir" - temp_xrpath=$func_stripname_result - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) xrpath="$xrpath $temp_xrpath";; - esac;; - *) temp_deplibs="$temp_deplibs $libdir";; - esac - done - dependency_libs="$temp_deplibs" - fi - - newlib_search_path="$newlib_search_path $absdir" - # Link against this library - test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" - # ... and its dependency_libs - tmp_libs= - for deplib in $dependency_libs; do - newdependency_libs="$deplib $newdependency_libs" - if $opt_duplicate_deps ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done - - if test "$link_all_deplibs" != no; then - # Add the search paths of all dependency libraries - for deplib in $dependency_libs; do - path= - case $deplib in - -L*) path="$deplib" ;; - *.la) - func_dirname "$deplib" "" "." - dir="$func_dirname_result" - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - func_warning "cannot determine absolute directory name of \`$dir'" - absdir="$dir" - fi - ;; - esac - if $GREP "^installed=no" $deplib > /dev/null; then - case $host in - *-*-darwin*) - depdepl= - eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names" ; then - for tmp in $deplibrary_names ; do - depdepl=$tmp - done - if test -f "$absdir/$objdir/$depdepl" ; then - depdepl="$absdir/$objdir/$depdepl" - darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - if test -z "$darwin_install_name"; then - darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - fi - compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" - linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" - path= - fi - fi - ;; - *) - path="-L$absdir/$objdir" - ;; - esac - else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - test "$absdir" != "$libdir" && \ - func_warning "\`$deplib' seems to be moved" - - path="-L$absdir" - fi - ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$path $deplibs" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - if test "$pass" = link; then - if test "$linkmode" = "prog"; then - compile_deplibs="$new_inherited_linker_flags $compile_deplibs" - finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" - else - compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - fi - fi - dependency_libs="$newdependency_libs" - if test "$pass" = dlpreopen; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test "$pass" != dlopen; then - if test "$pass" != conv; then - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; - *) lib_search_path="$lib_search_path $dir" ;; - esac - done - newlib_search_path= - fi - - if test "$linkmode,$pass" != "prog,link"; then - vars="deplibs" - else - vars="compile_deplibs finalize_deplibs" - fi - for var in $vars dependency_libs; do - # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" - new_libs= - for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; - *) tmp_libs="$tmp_libs $deplib" ;; - esac - ;; - *) tmp_libs="$tmp_libs $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - # Last step: remove runtime libs from dependency_libs - # (they stay in deplibs) - tmp_libs= - for i in $dependency_libs ; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i="" - ;; - esac - if test -n "$i" ; then - tmp_libs="$tmp_libs $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test "$linkmode" = prog; then - dlfiles="$newdlfiles" - fi - if test "$linkmode" = prog || test "$linkmode" = lib; then - dlprefiles="$newdlprefiles" - fi - - case $linkmode in - oldlib) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for archives" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for archives" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for archives" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for archives" - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for archives" - - test -n "$release" && \ - func_warning "\`-release' is ignored for archives" - - test -n "$export_symbols$export_symbols_regex" && \ - func_warning "\`-export-symbols' is ignored for archives" - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs="$output" - objs="$objs$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form `libNAME.la'. - case $outputname in - lib*) - func_stripname 'lib' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - ;; - *) - test "$module" = no && \ - func_fatal_help "libtool library \`$output' must begin with \`lib'" - - if test "$need_lib_prefix" != no; then - # Add the "lib" prefix for modules if required - func_stripname '' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - else - func_stripname '' '.la' "$outputname" - libname=$func_stripname_result - fi - ;; - esac - - if test -n "$objs"; then - if test "$deplibs_check_method" != pass_all; then - func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" - else - echo - $ECHO "*** Warning: Linking the shared library $output against the non-libtool" - $ECHO "*** objects $objs is not portable!" - libobjs="$libobjs $objs" - fi - fi - - test "$dlself" != no && \ - func_warning "\`-dlopen self' is ignored for libtool libraries" - - set dummy $rpath - shift - test "$#" -gt 1 && \ - func_warning "ignoring multiple \`-rpath's for a libtool library" - - install_libdir="$1" - - oldlibs= - if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then - # Building a libtool convenience library. - # Some compilers have problems with a `.al' extension so - # convenience libraries should have the same extension an - # archive normally would. - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for convenience libraries" - - test -n "$release" && \ - func_warning "\`-release' is ignored for convenience libraries" - else - - # Parse the version information argument. - save_ifs="$IFS"; IFS=':' - set dummy $vinfo 0 0 0 - shift - IFS="$save_ifs" - - test -n "$7" && \ - func_fatal_help "too many parameters to \`-version-info'" - - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible - - case $vinfo_number in - yes) - number_major="$1" - number_minor="$2" - number_revision="$3" - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # which has an extra 1 added just for fun - # - case $version_type in - darwin|linux|osf|windows|none) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_revision" - ;; - freebsd-aout|freebsd-elf|qnx|sunos) - current="$number_major" - revision="$number_minor" - age="0" - ;; - irix|nonstopux) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_minor" - lt_irix_increment=no - ;; - esac - ;; - no) - current="$1" - revision="$2" - age="$3" - ;; - esac - - # Check that each of the things are valid numbers. - case $current in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "CURRENT \`$current' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $revision in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "REVISION \`$revision' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $age in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "AGE \`$age' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - if test "$age" -gt "$current"; then - func_error "AGE \`$age' is greater than the current interface number \`$current'" - func_fatal_error "\`$vinfo' is not valid version information" - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case $version_type in - none) ;; - - darwin) - # Like Linux, but with the current version available in - # verstring for coding it into the library header - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - # Darwin ld doesn't like 0 for these options... - func_arith $current + 1 - minor_current=$func_arith_result - xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - ;; - - freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; - ;; - - freebsd-elf) - major=".$current" - versuffix=".$current" - ;; - - irix | nonstopux) - if test "X$lt_irix_increment" = "Xno"; then - func_arith $current - $age - else - func_arith $current - $age + 1 - fi - major=$func_arith_result - - case $version_type in - nonstopux) verstring_prefix=nonstopux ;; - *) verstring_prefix=sgi ;; - esac - verstring="$verstring_prefix$major.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test "$loop" -ne 0; do - func_arith $revision - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring_prefix$major.$iface:$verstring" - done - - # Before this point, $major must not contain `.'. - major=.$major - versuffix="$major.$revision" - ;; - - linux) - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - ;; - - osf) - func_arith $current - $age - major=.$func_arith_result - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$age - while test "$loop" -ne 0; do - func_arith $current - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring:${iface}.0" - done - - # Make executables depend on our current version. - verstring="$verstring:${current}.0" - ;; - - qnx) - major=".$current" - versuffix=".$current" - ;; - - sunos) - major=".$current" - versuffix=".$current.$revision" - ;; - - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 filesystems. - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - - *) - func_fatal_configuration "unknown library version type \`$version_type'" - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - case $version_type in - darwin) - # we can't check for "0.0" in archive_cmds due to quoting - # problems, so we reset it completely - verstring= - ;; - *) - verstring="0.0" - ;; - esac - if test "$need_version" = no; then - versuffix= - else - versuffix=".0.0" - fi - fi - - # Remove version info from name if versioning should be avoided - if test "$avoid_version" = yes && test "$need_version" = no; then - major= - versuffix= - verstring="" - fi - - # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - func_warning "undefined symbols not allowed in $host shared libraries" - build_libtool_libs=no - build_old_libs=yes - fi - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" - fi - - fi - - func_generate_dlsyms "$libname" "$libname" "yes" - libobjs="$libobjs $symfileobj" - test "X$libobjs" = "X " && libobjs= - - if test "$mode" != relink; then - # Remove our outputs, but don't remove object files since they - # may have been created when compiling PIC objects. - removelist= - tempremovelist=`$ECHO "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext | *.gcno) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) - if test "X$precious_files_regex" != "X"; then - if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then - continue - fi - fi - removelist="$removelist $p" - ;; - *) ;; - esac - done - test -n "$removelist" && \ - func_show_eval "${RM}r \$removelist" - fi - - # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - oldlibs="$oldlibs $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` - fi - - # Eliminate all temporary directories. - #for path in $notinst_path; do - # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` - # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` - # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` - #done - - if test -n "$xrpath"; then - # If the user specified any rpath flags, then add them. - temp_xrpath= - for libdir in $xrpath; do - temp_xrpath="$temp_xrpath -R$libdir" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; - esac - done - if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi - - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles="$dlfiles" - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; - *) dlfiles="$dlfiles $lib" ;; - esac - done - - # Make sure dlprefiles contains only unique files - old_dlprefiles="$dlprefiles" - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; - *) dlprefiles="$dlprefiles $lib" ;; - esac - done - - if test "$build_libtool_libs" = yes; then - if test -n "$rpath"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - deplibs="$deplibs System.ltframework" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then - deplibs="$deplibs -lc" - fi - ;; - esac - fi - - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release="" - versuffix="" - major="" - newdeplibs= - droppeddeps=no - case $deplibs_check_method in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $opt_dry_run || $RM conftest.c - cat > conftest.c <<EOF - int main() { return 0; } -EOF - $opt_dry_run || $RM conftest - if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then - ldd_output=`ldd conftest` - for i in $deplibs; do - case $i in - -l*) - func_stripname -l '' "$i" - name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $i "*) - newdeplibs="$newdeplibs $i" - i="" - ;; - esac - fi - if test -n "$i" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` - set dummy $deplib_matches; shift - deplib_match=$1 - if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then - newdeplibs="$newdeplibs $i" - else - droppeddeps=yes - echo - $ECHO "*** Warning: dynamic linker does not accept needed library $i." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which I believe you do not have" - echo "*** because a test_compile did reveal that the linker did not use it for" - echo "*** its dynamic dependency list that programs get resolved with at runtime." - fi - fi - ;; - *) - newdeplibs="$newdeplibs $i" - ;; - esac - done - else - # Error occurred in the first compile. Let's try to salvage - # the situation: Compile a separate program for each library. - for i in $deplibs; do - case $i in - -l*) - func_stripname -l '' "$i" - name=$func_stripname_result - $opt_dry_run || $RM conftest - if $LTCC $LTCFLAGS -o conftest conftest.c $i; then - ldd_output=`ldd conftest` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $i "*) - newdeplibs="$newdeplibs $i" - i="" - ;; - esac - fi - if test -n "$i" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` - set dummy $deplib_matches; shift - deplib_match=$1 - if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then - newdeplibs="$newdeplibs $i" - else - droppeddeps=yes - echo - $ECHO "*** Warning: dynamic linker does not accept needed library $i." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because a test_compile did reveal that the linker did not use this one" - echo "*** as a dynamic dependency that programs can get resolved with at runtime." - fi - fi - else - droppeddeps=yes - echo - $ECHO "*** Warning! Library $i is needed by this library but I was not able to" - echo "*** make it link in! You will probably need to install it or some" - echo "*** library that it depends on before this library will be fully" - echo "*** functional. Installing it before continuing would be even better." - fi - ;; - *) - newdeplibs="$newdeplibs $i" - ;; - esac - done - fi - ;; - file_magic*) - set dummy $deplibs_check_method; shift - file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - for a_deplib in $deplibs; do - case $a_deplib in - -l*) - func_stripname -l '' "$a_deplib" - name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null | - $GREP " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib="$potent_lib" - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | - $SED -e 10q | - $EGREP "$file_magic_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for file magic test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a file magic. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - for a_deplib in $deplibs; do - case $a_deplib in - -l*) - func_stripname -l '' "$a_deplib" - name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib="$potent_lib" # see symlink-check above in file_magic test - if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ - $EGREP "$match_pattern_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a regex pattern. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs="" - tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - for i in $predeps $postdeps ; do - # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` - done - fi - case $tmp_deplibs in - *[!\ \ ]*) - echo - if test "X$deplibs_check_method" = "Xnone"; then - echo "*** Warning: inter-library dependencies are not supported in this platform." - else - echo "*** Warning: inter-library dependencies are not known to be supported." - fi - echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - ;; - esac - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library with the System framework - newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - if test "$droppeddeps" = yes; then - if test "$module" = yes; then - echo - echo "*** Warning: libtool could not satisfy all declared inter-library" - $ECHO "*** dependencies of module $libname. Therefore, libtool will create" - echo "*** a static module, that should work as long as the dlopening" - echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - echo "*** The inter-library dependencies that have been dropped here will be" - echo "*** automatically added whenever a program is linked with this library" - echo "*** or is declared to -dlopen it." - - if test "$allow_undefined" = no; then - echo - echo "*** Since this library must not contain undefined symbols," - echo "*** because either the platform does not support them or" - echo "*** it was explicitly requested with -no-undefined," - echo "*** libtool will only create a static version of it." - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - case $host in - *-*-darwin*) - newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $deplibs " in - *" -L$path/$objdir "*) - new_libs="$new_libs -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$new_libs $deplib" ;; - esac - ;; - *) new_libs="$new_libs $deplib" ;; - esac - done - deplibs="$new_libs" - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then - if test "$hardcode_into_libs" = yes; then - # Hardcode the library paths - hardcode_libdirs= - dep_rpath= - rpath="$finalize_rpath" - test "$mode" != relink && rpath="$compile_rpath$rpath" - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - dep_rpath="$dep_rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - if test -n "$hardcode_libdir_flag_spec_ld"; then - eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" - else - eval dep_rpath=\"$hardcode_libdir_flag_spec\" - fi - fi - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" - fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath="$finalize_shlibpath" - test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - - # Get the real and link names of the library. - eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - shift - realname="$1" - shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - if test -z "$dlname"; then - dlname=$soname - fi - - lib="$output_objdir/$realname" - linknames= - for link - do - linknames="$linknames $link" - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` - test "X$libobjs" = "X " && libobjs= - - delfiles= - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" - export_symbols="$output_objdir/$libname.uexp" - delfiles="$delfiles $export_symbols" - fi - - orig_export_symbols= - case $host_os in - cygwin* | mingw* | cegcc*) - if test -n "$export_symbols" && test -z "$export_symbols_regex"; then - # exporting using user supplied symfile - if test "x`$SED 1q $export_symbols`" != xEXPORTS; then - # and it's NOT already a .def file. Must figure out - # which of the given symbols are data symbols and tag - # them as such. So, trigger use of export_symbols_cmds. - # export_symbols gets reassigned inside the "prepare - # the list of exported symbols" if statement, so the - # include_expsyms logic still works. - orig_export_symbols="$export_symbols" - export_symbols= - always_export_symbols=yes - fi - fi - ;; - esac - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - func_len " $cmd" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - func_show_eval "$cmd" 'exit $?' - skipped_export=false - else - # The command line is too long to execute in one step. - func_verbose "using reloadable object file for export list..." - skipped_export=: - # Break out early, otherwise skipped_export may be - # set to false by a later but shorter cmd. - break - fi - done - IFS="$save_ifs" - if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - tmp_deplibs="$tmp_deplibs $test_deplib" - ;; - esac - done - deplibs="$tmp_deplibs" - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec" && - test "$compiler_needs_object" = yes && - test -z "$libobjs"; then - # extract the archives, so we have objects to list. - # TODO: could optimize this to just extract one archive. - whole_archive_flag_spec= - fi - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - else - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - func_extract_archives $gentop $convenience - libobjs="$libobjs $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - fi - - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - linker_flags="$linker_flags $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test "$mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval test_cmds=\"$module_expsym_cmds\" - cmds=$module_expsym_cmds - else - eval test_cmds=\"$module_cmds\" - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" - cmds=$archive_expsym_cmds - else - eval test_cmds=\"$archive_cmds\" - cmds=$archive_cmds - fi - fi - - if test "X$skipped_export" != "X:" && - func_len " $test_cmds" && - len=$func_len_result && - test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise - # or, if using GNU ld and skipped_export is not :, use a linker - # script. - - # Save the value of $output and $libobjs because we want to - # use them later. If we have whole_archive_flag_spec, we - # want to use save_libobjs as it was before - # whole_archive_flag_spec was expanded, because we can't - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - fi - save_output=$output - func_basename "$output" - output_la=$func_basename_result - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - last_robj= - k=1 - - if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then - output=${output_objdir}/${output_la}.lnkscript - func_verbose "creating GNU ld script: $output" - echo 'INPUT (' > $output - for obj in $save_libobjs - do - $ECHO "$obj" >> $output - done - echo ')' >> $output - delfiles="$delfiles $output" - elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then - output=${output_objdir}/${output_la}.lnk - func_verbose "creating linker input file list: $output" - : > $output - set x $save_libobjs - shift - firstobj= - if test "$compiler_needs_object" = yes; then - firstobj="$1 " - shift - fi - for obj - do - $ECHO "$obj" >> $output - done - delfiles="$delfiles $output" - output=$firstobj\"$file_list_spec$output\" - else - if test -n "$save_libobjs"; then - func_verbose "creating reloadable object files..." - output=$output_objdir/$output_la-${k}.$objext - eval test_cmds=\"$reload_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - if test "X$objlist" = X || - test "$len" -lt "$max_cmd_len"; then - func_append objlist " $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test "$k" -eq 1 ; then - # The first file doesn't have a previous command to add. - reload_objs=$objlist - eval concat_cmds=\"$reload_cmds\" - else - # All subsequent reloadable object files will link in - # the last one created. - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" - fi - last_robj=$output_objdir/$output_la-${k}.$objext - func_arith $k + 1 - k=$func_arith_result - output=$output_objdir/$output_la-${k}.$objext - objlist=" $obj" - func_len " $last_robj" - func_arith $len0 + $func_len_result - len=$func_arith_result - fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\${concat_cmds}$reload_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" - fi - delfiles="$delfiles $output" - - else - output= - fi - - if ${skipped_export-false}; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - libobjs=$output - # Append the command to create the export file. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" - fi - fi - - test -n "$save_libobjs" && - func_verbose "creating a temporary reloadable object file: $output" - - # Loop through the commands generated above and execute them. - save_ifs="$IFS"; IFS='~' - for cmd in $concat_cmds; do - IFS="$save_ifs" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - if test -n "$export_symbols_regex" && ${skipped_export-false}; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - - if ${skipped_export-false}; then - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - fi - - libobjs=$output - # Restore the value of output. - output=$save_output - - if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - fi - # Expand the library linking commands again to reset the - # value of $libobjs for piecewise linking. - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - cmds=$module_expsym_cmds - else - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - cmds=$archive_expsym_cmds - else - cmds=$archive_cmds - fi - fi - fi - - if test -n "$delfiles"; then - # Append the command to remove temporary files to $cmds. - eval cmds=\"\$cmds~\$RM $delfiles\" - fi - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - func_extract_archives $gentop $dlprefiles - libobjs="$libobjs $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? - - if test -n "$convenience"; then - if test -z "$whole_archive_flag_spec"; then - func_show_eval '${RM}r "$gentop"' - fi - fi - - exit $EXIT_SUCCESS - fi - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test "$module" = yes || test "$export_dynamic" = yes; then - # On all known operating systems, these are identical. - dlname="$soname" - fi - fi - ;; - - obj) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for objects" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for objects" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for objects" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for objects" - - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for objects" - - test -n "$release" && \ - func_warning "\`-release' is ignored for objects" - - case $output in - *.lo) - test -n "$objs$old_deplibs" && \ - func_fatal_error "cannot build library object \`$output' from non-libtool objects" - - libobj=$output - func_lo2o "$libobj" - obj=$func_lo2o_result - ;; - *) - libobj= - obj="$output" - ;; - esac - - # Delete the old objects. - $opt_dry_run || $RM $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec and hope we can get by with - # turning comma into space.. - wl= - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` - else - gentop="$output_objdir/${obj}x" - generated="$generated $gentop" - - func_extract_archives $gentop $convenience - reload_conv_objs="$reload_objs $func_extract_archives_result" - fi - fi - - # Create the old-style object. - reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test - - output="$obj" - func_execute_cmds "$reload_cmds" 'exit $?' - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - fi - - if test "$build_libtool_libs" != yes; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? - exit $EXIT_SUCCESS - fi - - if test -n "$pic_flag" || test "$pic_mode" != default; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output="$libobj" - func_execute_cmds "$reload_cmds" 'exit $?' - fi - - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - ;; - - prog) - case $host in - *cygwin*) func_stripname '' '.exe' "$output" - output=$func_stripname_result.exe;; - esac - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for programs" - - test -n "$release" && \ - func_warning "\`-release' is ignored for programs" - - test "$preload" = yes \ - && test "$dlopen_support" = unknown \ - && test "$dlopen_self" = unknown \ - && test "$dlopen_self_static" = unknown && \ - func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - case $host in - *-*-darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - # But is supposedly fixed on 10.4 or later (yay!). - if test "$tagname" = CXX ; then - case ${MACOSX_DEPLOYMENT_TARGET-10.0} in - 10.[0123]) - compile_command="$compile_command ${wl}-bind_at_load" - finalize_command="$finalize_command ${wl}-bind_at_load" - ;; - esac - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $compile_deplibs " in - *" -L$path/$objdir "*) - new_libs="$new_libs -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $compile_deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$new_libs $deplib" ;; - esac - ;; - *) new_libs="$new_libs $deplib" ;; - esac - done - compile_deplibs="$new_libs" - - - compile_command="$compile_command $compile_deplibs" - finalize_command="$finalize_command $finalize_deplibs" - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$libdir:"*) ;; - ::) dllsearchpath=$libdir;; - *) dllsearchpath="$dllsearchpath:$libdir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) dllsearchpath="$dllsearchpath:$testbindir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath="$rpath" - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath="$rpath" - - if test -n "$libobjs" && test "$build_old_libs" = yes; then - # Transform all the library objects into standard objects. - compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - fi - - func_generate_dlsyms "$outputname" "@PROGRAM@" "no" - - # template prelinking step - if test -n "$prelink_cmds"; then - func_execute_cmds "$prelink_cmds" 'exit $?' - fi - - wrappers_required=yes - case $host in - *cegcc* | *mingw32ce*) - # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. - wrappers_required=no - ;; - *cygwin* | *mingw* ) - if test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - *) - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - esac - if test "$wrappers_required" = no; then - # Replace the output file specification. - compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" - - # We have no uninstalled library dependencies, so finalize right now. - exit_status=0 - func_show_eval "$link_command" 'exit_status=$?' - - # Delete the generated files. - if test -f "$output_objdir/${outputname}S.${objext}"; then - func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' - fi - - exit $exit_status - fi - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - rpath="$rpath$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test "$no_install" = yes; then - # We don't need to create a wrapper script. - link_command="$compile_var$compile_command$compile_rpath" - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - # Delete the old output file. - $opt_dry_run || $RM $output - # Link the executable and exit - func_show_eval "$link_command" 'exit $?' - exit $EXIT_SUCCESS - fi - - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - - func_warning "this platform does not like uninstalled shared libraries" - func_warning "\`$output' will be relinked during installation" - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - fi - fi - - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname - - func_show_eval "$link_command" 'exit $?' - - # Now create the wrapper script. - func_verbose "creating $output" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - fi - - # Only actually do things if not in dry run mode. - $opt_dry_run || { - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) func_stripname '' '.exe' "$output" - output=$func_stripname_result ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin*) - exeext=.exe - func_stripname '' '.exe' "$outputname" - outputname=$func_stripname_result ;; - *) exeext= ;; - esac - case $host in - *cygwin* | *mingw* ) - func_dirname_and_basename "$output" "" "." - output_name=$func_basename_result - output_path=$func_dirname_result - cwrappersource="$output_path/$objdir/lt-$output_name.c" - cwrapper="$output_path/$output_name.exe" - $RM $cwrappersource $cwrapper - trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 - - func_emit_cwrapperexe_src > $cwrappersource - - # The wrapper executable is built using the $host compiler, - # because it contains $host paths and files. If cross- - # compiling, it, like the target executable, must be - # executed on the $host or under an emulation environment. - $opt_dry_run || { - $LTCC $LTCFLAGS -o $cwrapper $cwrappersource - $STRIP $cwrapper - } - - # Now, create the wrapper script for func_source use: - func_ltwrapper_scriptname $cwrapper - $RM $func_ltwrapper_scriptname_result - trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 - $opt_dry_run || { - # note: this script will not be executed, so do not chmod. - if test "x$build" = "x$host" ; then - $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result - else - func_emit_wrapper no > $func_ltwrapper_scriptname_result - fi - } - ;; - * ) - $RM $output - trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 - - func_emit_wrapper no > $output - chmod +x $output - ;; - esac - } - exit $EXIT_SUCCESS - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save $symfileobj" - addlibs="$convenience" - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" - build_libtool_libs=no - else - oldobjs="$old_deplibs $non_pic_objects" - if test "$preload" = yes && test -f "$symfileobj"; then - oldobjs="$oldobjs $symfileobj" - fi - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - func_extract_archives $gentop $addlibs - oldobjs="$oldobjs $func_extract_archives_result" - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - cmds=$old_archive_from_new_cmds - else - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - func_extract_archives $gentop $dlprefiles - oldobjs="$oldobjs $func_extract_archives_result" - fi - - # POSIX demands no paths to be encoded in archives. We have - # to avoid creating archives with duplicate basenames if we - # might have to extract them afterwards, e.g., when creating a - # static archive out of a convenience library, or when linking - # the entirety of a libtool archive into another (currently - # not supported by libtool). - if (for obj in $oldobjs - do - func_basename "$obj" - $ECHO "$func_basename_result" - done | sort | sort -uc >/dev/null 2>&1); then - : - else - echo "copying selected object files to avoid basename conflicts..." - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - func_mkdir_p "$gentop" - save_oldobjs=$oldobjs - oldobjs= - counter=1 - for obj in $save_oldobjs - do - func_basename "$obj" - objbase="$func_basename_result" - case " $oldobjs " in - " ") oldobjs=$obj ;; - *[\ /]"$objbase "*) - while :; do - # Make sure we don't pick an alternate name that also - # overlaps. - newobj=lt$counter-$objbase - func_arith $counter + 1 - counter=$func_arith_result - case " $oldobjs " in - *[\ /]"$newobj "*) ;; - *) if test ! -f "$gentop/$newobj"; then break; fi ;; - esac - done - func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - oldobjs="$oldobjs $gentop/$newobj" - ;; - *) oldobjs="$oldobjs $obj" ;; - esac - done - fi - eval cmds=\"$old_archive_cmds\" - - func_len " $cmds" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - cmds=$old_archive_cmds - else - # the command line is too long to link in one step, link in parts - func_verbose "using piecewise archive linking..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs - oldobjs= - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj - done - eval test_cmds=\"$old_archive_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - for obj in $save_oldobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - func_append objlist " $obj" - if test "$len" -lt "$max_cmd_len"; then - : - else - # the above command should be used before it gets too long - oldobjs=$objlist - if test "$obj" = "$last_oldobj" ; then - RANLIB=$save_RANLIB - fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" - objlist= - len=$len0 - fi - done - RANLIB=$save_RANLIB - oldobjs=$objlist - if test "X$oldobjs" = "X" ; then - eval cmds=\"\$concat_cmds\" - else - eval cmds=\"\$concat_cmds~\$old_archive_cmds\" - fi - fi - fi - func_execute_cmds "$cmds" 'exit $?' - done - - test -n "$generated" && \ - func_show_eval "${RM}r$generated" - - # Now create the libtool archive. - case $output in - *.la) - old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" - func_verbose "creating $output" - - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - if test "$hardcode_automatic" = yes ; then - relink_command= - fi - - # Only create the output if not a dry run. - $opt_dry_run || { - for installed in no yes; do - if test "$installed" = yes; then - if test -z "$install_libdir"; then - break - fi - output="$output_objdir/$outputname"i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - func_basename "$deplib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - newdependency_libs="$newdependency_libs $libdir/$name" - ;; - *) newdependency_libs="$newdependency_libs $deplib" ;; - esac - done - dependency_libs="$newdependency_libs" - newdlfiles= - - for lib in $dlfiles; do - case $lib in - *.la) - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - newdlfiles="$newdlfiles $libdir/$name" - ;; - *) newdlfiles="$newdlfiles $lib" ;; - esac - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - *.la) - # Only pass preopened files to the pseudo-archive (for - # eventual linking with the app. that links it) if we - # didn't already link the preopened objects directly into - # the library: - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - newdlprefiles="$newdlprefiles $libdir/$name" - ;; - esac - done - dlprefiles="$newdlprefiles" - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - newdlfiles="$newdlfiles $abs" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - newdlprefiles="$newdlprefiles $abs" - done - dlprefiles="$newdlprefiles" - fi - $RM $output - # place dlname in correct position for cygwin - # In fact, it would be nice if we could use this code for all target - # systems that can't hard-code library paths into their executables - # and that have no shared library path variable independent of PATH, - # but it turns out we can't easily determine that from inspecting - # libtool variables, so we have to hard-code the OSs to which it - # applies here; at the moment, that means platforms that use the PE - # object format with DLL files. See the long comment at the top of - # tests/bindir.at for full details. - tdlname=$dlname - case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) - # If a -bindir argument was supplied, place the dll there. - if test "x$bindir" != x ; - then - func_relative_path "$install_libdir" "$bindir" - tdlname=$func_relative_path_result$dlname - else - # Otherwise fall back on heuristic. - tdlname=../bin/$dlname - fi - ;; - esac - $ECHO > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$tdlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Linker flags that can not go in dependency_libs. -inherited_linker_flags='$new_inherited_linker_flags' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Names of additional weak libraries provided by this library -weak_library_names='$weak_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Should we warn about portability when linking against -modules? -shouldnotlink=$module - -# Files to dlopen/dlpreopen -dlopen='$dlfiles' -dlpreopen='$dlprefiles' - -# Directory that this library needs to be installed in: -libdir='$install_libdir'" - if test "$installed" = no && test "$need_relink" = yes; then - $ECHO >> $output "\ -relink_command=\"$relink_command\"" - fi - done - } - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' - ;; - esac - exit $EXIT_SUCCESS -} - -{ test "$mode" = link || test "$mode" = relink; } && - func_mode_link ${1+"$@"} - - -# func_mode_uninstall arg... -func_mode_uninstall () -{ - $opt_debug - RM="$nonopt" - files= - rmforce= - exit_status=0 - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - for arg - do - case $arg in - -f) RM="$RM $arg"; rmforce=yes ;; - -*) RM="$RM $arg" ;; - *) files="$files $arg" ;; - esac - done - - test -z "$RM" && \ - func_fatal_help "you must specify an RM program" - - rmdirs= - - origobjdir="$objdir" - for file in $files; do - func_dirname "$file" "" "." - dir="$func_dirname_result" - if test "X$dir" = X.; then - objdir="$origobjdir" - else - objdir="$dir/$origobjdir" - fi - func_basename "$file" - name="$func_basename_result" - test "$mode" = uninstall && objdir="$dir" - - # Remember objdir for removal later, being careful to avoid duplicates - if test "$mode" = clean; then - case " $rmdirs " in - *" $objdir "*) ;; - *) rmdirs="$rmdirs $objdir" ;; - esac - fi - - # Don't error if the file doesn't exist and rm -f was used. - if { test -L "$file"; } >/dev/null 2>&1 || - { test -h "$file"; } >/dev/null 2>&1 || - test -f "$file"; then - : - elif test -d "$file"; then - exit_status=1 - continue - elif test "$rmforce" = yes; then - continue - fi - - rmfiles="$file" - - case $name in - *.la) - # Possibly a libtool archive, so verify it. - if func_lalib_p "$file"; then - func_source $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - rmfiles="$rmfiles $objdir/$n" - done - test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" - - case "$mode" in - clean) - case " $library_names " in - # " " in the beginning catches empty $dlname - *" $dlname "*) ;; - *) rmfiles="$rmfiles $objdir/$dlname" ;; - esac - test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" - ;; - uninstall) - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - # FIXME: should reinstall the best remaining shared library. - ;; - esac - fi - ;; - - *.lo) - # Possibly a libtool object, so verify it. - if func_lalib_p "$file"; then - - # Read the .lo file - func_source $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" && - test "$pic_object" != none; then - rmfiles="$rmfiles $dir/$pic_object" - fi - - # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" && - test "$non_pic_object" != none; then - rmfiles="$rmfiles $dir/$non_pic_object" - fi - fi - ;; - - *) - if test "$mode" = clean ; then - noexename=$name - case $file in - *.exe) - func_stripname '' '.exe' "$file" - file=$func_stripname_result - func_stripname '' '.exe' "$name" - noexename=$func_stripname_result - # $file with .exe has already been added to rmfiles, - # add $file without .exe - rmfiles="$rmfiles $file" - ;; - esac - # Do a test to see if this is a libtool program. - if func_ltwrapper_p "$file"; then - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - relink_command= - func_source $func_ltwrapper_scriptname_result - rmfiles="$rmfiles $func_ltwrapper_scriptname_result" - else - relink_command= - func_source $dir/$noexename - fi - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles - rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" - if test "$fast_install" = yes && test -n "$relink_command"; then - rmfiles="$rmfiles $objdir/lt-$name" - fi - if test "X$noexename" != "X$name" ; then - rmfiles="$rmfiles $objdir/lt-${noexename}.c" - fi - fi - fi - ;; - esac - func_show_eval "$RM $rmfiles" 'exit_status=1' - done - objdir="$origobjdir" - - # Try to remove the ${objdir}s in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - func_show_eval "rmdir $dir >/dev/null 2>&1" - fi - done - - exit $exit_status -} - -{ test "$mode" = uninstall || test "$mode" = clean; } && - func_mode_uninstall ${1+"$@"} - -test -z "$mode" && { - help="$generic_help" - func_fatal_help "you must specify a MODE" -} - -test -z "$exec_cmd" && \ - func_fatal_help "invalid operation mode \`$mode'" - -if test -n "$exec_cmd"; then - eval exec "$exec_cmd" - exit $EXIT_FAILURE -fi - -exit $exit_status - - -# The TAGs below are defined such that we never get into a situation -# in which we disable both kinds of libraries. Given conflicting -# choices, we go for a static library, that is the most portable, -# since we can't tell whether shared libraries were disabled because -# the user asked for that or because the platform doesn't support -# them. This is particularly important on AIX, because we don't -# support having both static and shared libraries enabled at the same -# time on that platform, so we default to a shared-only configuration. -# If a disable-shared tag is given, we'll fallback to a static-only -# configuration. But we'll never go from static-only to shared-only. - -# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -build_libtool_libs=no -build_old_libs=yes -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: -# vi:sw=2 - diff --git a/platform/win32/msvc/external/lame/misc/Lame.vbs b/platform/win32/msvc/external/lame/misc/Lame.vbs deleted file mode 100644 index 4e42002e756..00000000000 --- a/platform/win32/msvc/external/lame/misc/Lame.vbs +++ /dev/null @@ -1,158 +0,0 @@ -' lame.vbs WindowsScript wrapper v0.5, 06/15/2001 -' $id$ -' -' *Purpose* -' Use this WindowsScript to encode WAVs using drag&drop: -' 0. make sure you have windows script host v5.1 on your system -' (enter 'cscript' in a DOS-Box and compare version number) -' 1. adjust the path settings below to fit your needs -' 2a. put this file somewhere on the desktop -' 3a. drag one or more wav-files on the icon and watch them being lamed. -' -' 2b. start->execute, enter "sendto", drag the script or a link to it in -' sendto window (adjust names and icon as you like) -' 3b. select wave-file(s) and send it via the send-to menu to LAME! -' -' You may wish to create copies of this file with different options set. -' -' If you would like a GUI: try to enable the HTML UI (see below) -' -' Ralf Kempkens, ralf.kempkens@epost.de -' -' -' *History* -' V0.5 * lame.vbs will automatically decode if the file has a .mp3 extension -' * now explicitly refuses to accept folders -' V0.4 * creates single .mp3 extensions, now ID3 options in HTML interface -' V0.3 * fixed bug that prevented lame.exe to be located in a path that -' contained a space -' * experimental HTML UI support (disabled by default) -' V0.2 added multiple file support -' V0.1 initial release - -' *** change path to your needs *** - path = "D:\Audio\Lame\Lame386\" '!!! must end with a backslash !!! - lame = "lame.exe" - -' *** change default options to your needs *** - opts = "--preset hifi" - -' *** HTML GUI (experimental) *** - useGUI = False -' it set to True, opens file lameGUI.html residing in the same path as lame.exe -' to choose options. Please look at the example HTML-file for further information. - -' no changes needed below this line -' ########################################################################## -Dim wsh, args, infile, fs -title="LAME Script" - -' get input files -Set wsh = WScript.CreateObject("WScript.Shell") -Set args = WScript.Arguments -If args.Count = 0 Then - MsgBox "LAME mp3 encoder/decoder frontend script." & vbCR & _ - "Please use drag & drop to specify input files.", vbInformation, title - WScript.Quit -End If - -' check path -Set fso = CreateObject("Scripting.FileSystemObject") -If Not fso.FileExists(path & lame) Then - MsgBox "Could not find LAME!" & vbCR & "(looked for '" & path & lame & "')", vbCritical, title - WScript.Quit -End If - -' start GUI -if useGUI Then - set ie=WScript.CreateObject("InternetExplorer.Application", "ie_") - ie.navigate(path & "lameGUI.html") - do - WScript.Sleep 100 - loop until ie.ReadyState=4 'wait for GUI - - ie.Width=640 - ie.Height=600 - ie.Toolbar=false - ie.Statusbar=false - ie.visible=true - - 'link to GUI - set document=ie.document - document.forms.lameform.okbutton.onClick=GetRef("okbutton") - - 'wait for user pressing ok... - do - WScript.Sleep 300 - loop until process -end if - -'process files -For i = 0 To args.Count-1 - infile = args(i) - ' check input file - If fso.FolderExists(infile) Then - MsgBox "'" & infile & "' is a folder!" & vbCR & _ - title & " only handles proper files.", vbInformation, title - Else - If Not fso.FileExists(infile) Then - MsgBox "Error opening input-file" & vbCR & "'" & infile & "'", vbCritical , title - Else - ' run lame - If(LCase(getExtension(infile))="mp3") Then 'decode - ret = wsh.Run(Chr(34) & path & lame & CHR(34) & " --decode " & _ - Chr(34) & infile & Chr(34) & Chr(32) & Chr(34) & _ - getBasename(infile) & ".wav" & Chr(34), 1, True) - Else ' encode - ret = wsh.Run(Chr(34) & path & lame & CHR(34) & Chr(32) & opts & Chr(32) & _ - Chr(34) & infile & Chr(34) & Chr(32) & Chr(34) & _ - getBasename(infile) & ".mp3" & Chr(34), 1, True) - End If - ' diagnostics - Select Case ret - Case (0) 'okeydokey - Case (-1) - MsgBox "LAME aborted by user!", vbExclamation, title - Case (1) - MsgBox "Error returned by LAME!" & vbCR & "(Check LAME options and input file formats.)" & vbCR & "Used Options: " & opts, vbCritical, title - Case Else - MsgBox "Received unknown LAME return-code: " & ret, vbCritical, title - End Select - End If - End If -Next - -WScript.Quit -' ******************************************************************* -' utility functions - -Function getBasename(filespec) - Dim fso - Set fso = CreateObject("Scripting.FileSystemObject") - Set f = fso.GetFile(filespec) - - getBasename = f.ParentFolder & "\" & fso.GetBaseName(filespec) -End Function - -Function getExtension(filespec) - Dim fso - Set fso = CreateObject("Scripting.FileSystemObject") - Set f = fso.GetFile(filespec) - - getExtension = fso.GetExtensionName(filespec) -End Function - -' ******************************************************************* -' manage link to IE HTML-interface - -sub okbutton - 'process inputs - opts=document.all.lameoptions.Value - ie.Quit - MsgBox "LAME options:" & vbCR & opts, vbInformation, title -end sub - -sub ie_onQuit - process=True -end sub -'eof diff --git a/platform/win32/msvc/external/lame/misc/Makefile.am b/platform/win32/msvc/external/lame/misc/Makefile.am deleted file mode 100644 index 3e00fcd270a..00000000000 --- a/platform/win32/msvc/external/lame/misc/Makefile.am +++ /dev/null @@ -1,28 +0,0 @@ -## $Id: Makefile.am,v 1.11 2011/11/05 16:32:13 robert Exp $ - -include $(top_srcdir)/Makefile.am.global - -EXTRA_PROGRAMS = abx ath scalartest - -CLEANFILES = $(EXTRA_PROGRAMS) - -EXTRA_SCRIPTS = \ - auenc \ - lameid3.pl \ - mugeco.sh \ - mlame \ - mk_mp3.sh - -EXTRA_DIST = \ - $(EXTRA_SCRIPTS) \ - Lame.vbs \ - lameGUI.html \ - lame4dos.bat \ - mlame_corr.c - -abx_SOURCES = abx.c - -ath_SOURCES = ath.c - -scalartest_SOURCES = scalartest.c - diff --git a/platform/win32/msvc/external/lame/misc/Makefile.in b/platform/win32/msvc/external/lame/misc/Makefile.in deleted file mode 100644 index 3d5487d0be1..00000000000 --- a/platform/win32/msvc/external/lame/misc/Makefile.in +++ /dev/null @@ -1,539 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# global section for every Makefile.am -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -ANSI2KNR = $(top_srcdir)/ansi2knr -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/Makefile.am.global depcomp -EXTRA_PROGRAMS = abx$(EXEEXT) ath$(EXEEXT) scalartest$(EXEEXT) -subdir = misc -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am_abx_OBJECTS = abx$U.$(OBJEXT) -abx_OBJECTS = $(am_abx_OBJECTS) -abx_LDADD = $(LDADD) -abx_DEPENDENCIES = -am_ath_OBJECTS = ath$U.$(OBJEXT) -ath_OBJECTS = $(am_ath_OBJECTS) -ath_LDADD = $(LDADD) -ath_DEPENDENCIES = -am_scalartest_OBJECTS = scalartest$U.$(OBJEXT) -scalartest_OBJECTS = $(am_scalartest_OBJECTS) -scalartest_LDADD = $(LDADD) -scalartest_DEPENDENCIES = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(abx_SOURCES) $(ath_SOURCES) $(scalartest_SOURCES) -DIST_SOURCES = $(abx_SOURCES) $(ath_SOURCES) $(scalartest_SOURCES) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CONFIG_DEFS = @CONFIG_DEFS@ -CONFIG_MATH_LIB = @CONFIG_MATH_LIB@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CPUCCODE = @CPUCCODE@ -CPUTYPE = @CPUTYPE@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ -FRONTEND_LDADD = @FRONTEND_LDADD@ -FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ -GREP = @GREP@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_CONFIG = @GTK_CONFIG@ -GTK_LIBS = @GTK_LIBS@ -INCLUDES = @INCLUDES@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDADD = @LDADD@ -LDFLAGS = @LDFLAGS@ -LIBICONV = @LIBICONV@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ -LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBICONV = @LTLIBICONV@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEDEP = @MAKEDEP@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NASM = @NASM@ -NASM_FORMAT = @NASM_FORMAT@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -RM_F = @RM_F@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ -SNDFILE_LIBS = @SNDFILE_LIBS@ -STRIP = @STRIP@ -U = @U@ -VERSION = @VERSION@ -WITH_FRONTEND = @WITH_FRONTEND@ -WITH_MP3RTP = @WITH_MP3RTP@ -WITH_MP3X = @WITH_MP3X@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = 1.11 foreign $(top_srcdir)/ansi2knr -CLEANFILES = $(EXTRA_PROGRAMS) -EXTRA_SCRIPTS = \ - auenc \ - lameid3.pl \ - mugeco.sh \ - mlame \ - mk_mp3.sh - -EXTRA_DIST = \ - $(EXTRA_SCRIPTS) \ - Lame.vbs \ - lameGUI.html \ - lame4dos.bat \ - mlame_corr.c - -abx_SOURCES = abx.c -ath_SOURCES = ath.c -scalartest_SOURCES = scalartest.c -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign misc/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign misc/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -abx$(EXEEXT): $(abx_OBJECTS) $(abx_DEPENDENCIES) - @rm -f abx$(EXEEXT) - $(LINK) $(abx_OBJECTS) $(abx_LDADD) $(LIBS) -ath$(EXEEXT): $(ath_OBJECTS) $(ath_DEPENDENCIES) - @rm -f ath$(EXEEXT) - $(LINK) $(ath_OBJECTS) $(ath_LDADD) $(LIBS) -scalartest$(EXEEXT): $(scalartest_OBJECTS) $(scalartest_DEPENDENCIES) - @rm -f scalartest$(EXEEXT) - $(LINK) $(scalartest_OBJECTS) $(scalartest_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c -$(top_srcdir)/ansi2knr: - $(am__cd) $(top_srcdir) && $(MAKE) $(AM_MAKEFLAGS) ./ansi2knr - -mostlyclean-kr: - -test "$U" = "" || rm -f *_.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/abx$U.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ath$U.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scalartest$U.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< -abx_.c: abx.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/abx.c; then echo $(srcdir)/abx.c; else echo abx.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -ath_.c: ath.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ath.c; then echo $(srcdir)/ath.c; else echo ath.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -scalartest_.c: scalartest.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/scalartest.c; then echo $(srcdir)/scalartest.c; else echo scalartest.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -abx_.$(OBJEXT) abx_.lo ath_.$(OBJEXT) ath_.lo scalartest_.$(OBJEXT) \ -scalartest_.lo : $(ANSI2KNR) - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: $(top_srcdir)/ansi2knr install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool ctags distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-kr mostlyclean-libtool pdf \ - pdf-am ps ps-am tags uninstall uninstall-am - - -# end global section - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/platform/win32/msvc/external/lame/misc/abx.c b/platform/win32/msvc/external/lame/misc/abx.c deleted file mode 100644 index c06364d564d..00000000000 --- a/platform/win32/msvc/external/lame/misc/abx.c +++ /dev/null @@ -1,1323 +0,0 @@ -/* - * Usage: abx original_file test_file - * - * Ask you as long as the probability is below the given percentage that - * you recognize differences - * - * Example: abx music.wav music.mp3 - * abx music.wav music.mp3 --help - * - * Note: several 'decoding' utilites must be on the 'right' place - * - * Bugs: - * fix path of decoding utilities - * only 16 bit support - * only support of the same sample frequency - * no exact WAV file header analysis - * no mouse or joystick support - * don't uses functionality of ath.c - * only 2 files are comparable - * worse user interface - * quick & dirty hack - * wastes memory - * compile time warnings - * buffer overruns possible - * no dithering if recalcs are necessary - * correlation only done with one channel (2 channels, sum, what is better?) - * lowpass+highpass filtering (300 Hz+2*5 kHz) before delay+amplitude corr - * cross fade at start/stop - * non portable keyboard - * fade out on quit, fade in on start - * level/delay ajustment should be switchable - * pause key missing - * problems with digital silence files (division by 0) - * Gr��e cross corr fenster 2^16...18 - * Stellensuche, ab 0*len oder 0.1*len oder 0.25*len, nach Effektiv oder Spitzenwert - * Absturz bei LPAC feeding, warum? - * Als 'B' beim Ratespiel sollte auch '0'...'9' verwendbar sein - * Oder mit einem Filter 300 Hz...3 kHz vorher filtern? - * Multiple encoded differenziertes Signal - * Amplitudenanpassung schaltbar machen? - * Direkt auf der Kommandozeile kodieren: - * abx "test.wav" "!lame -b128 test.wav -" - */ - -// If the program should increase it priority while playing define USE_NICE. -// Program must be installed SUID root. Decompressing phase is using NORMAL priority -#define USE_NICE - -// Not only increase priority but change to relatime scheduling. Program must be installed SUID root -#define USE_REALTIME - -// Path of the programs: mpg123, mppdec, faad, ac3dec, ogg123, lpac, shorten, MAC, flac -//#define PATH_OF_EXTERNAL_TOOLS_FOR_UNCOMPRESSING "/usr/local/bin/" -#define PATH_OF_EXTERNAL_TOOLS_FOR_UNCOMPRESSING "" - - -#if defined HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <ctype.h> -#include <fcntl.h> -#include <limits.h> -#include <math.h> -#include <memory.h> -#include <signal.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <termios.h> -#include <time.h> -#include <unistd.h> -#include <sys/ioctl.h> -#include <sys/mman.h> -#include <sys/stat.h> -#include <sys/time.h> -#include <sys/types.h> - -#define MAX (1<<17) - -#if defined HAVE_SYS_SOUNDCARD_H -# include <sys/soundcard.h> -#elif defined HAVE_LINUX_SOUNDCARD_H -# include <linux/soundcard.h> -#else -# include <linux/soundcard.h> /* stand alone compilable for my tests */ -#endif - -#if defined USE_NICE -# include <sys/resource.h> -#endif -#if defined USE_REALTIME -# include <sched.h> -#endif - -#define BF ((freq)/25) -#define MAX_LEN (210 * 44100) -#define DMA_SAMPLES 512 /* My Linux driver uses a DMA buffer of 65536*16 bit, which is 32768 samples in 16 bit stereo mode */ - -void Set_Realtime ( void ) -{ -#if defined USE_REALTIME - struct sched_param sp; - int ret; - - memset ( &sp, 0, sizeof(sp) ); - seteuid ( 0 ); - sp.sched_priority = sched_get_priority_min ( SCHED_FIFO ); - ret = sched_setscheduler ( 0, SCHED_RR, &sp ); - seteuid ( getuid() ); -#endif - -#if defined USE_NICE - seteuid ( 0 ); - setpriority ( PRIO_PROCESS, getpid(), -20 ); - seteuid ( getuid() ); -#endif -} - -int verbose = 0; - -static struct termios stored_settings; - - -void reset ( void ) -{ - tcsetattr ( 0, TCSANOW, &stored_settings ); -} - - -void set ( void ) -{ - struct termios new_settings; - - tcgetattr ( 0, &stored_settings ); - new_settings = stored_settings; - - new_settings.c_lflag &= ~ECHO; - /* Disable canonical mode, and set buffer size to 1 byte */ - new_settings.c_lflag &= ~ICANON; - new_settings.c_cc[VTIME] = 0; - new_settings.c_cc[VMIN] = 1; - - tcsetattr(0,TCSANOW,&new_settings); - return; -} - - -int sel ( void ) -{ - struct timeval t; - fd_set fd [1]; - int ret; - unsigned char c; - - FD_SET (0, fd); - t.tv_sec = 0; - t.tv_usec = 0; - - ret = select ( 1, fd, NULL, NULL, &t ); - - switch ( ret ) { - case 0: - return -1; - case 1: - ret = read (0, &c, 1); - return ret == 1 ? c : -1; - default: - return -2; - } -} - -#define FFT_ERR_OK 0 // no error -#define FFT_ERR_LD 1 // len is not a power of 2 -#define FFT_ERR_MAX 2 // len too large - -typedef float f_t; -typedef f_t compl [2]; -compl root [MAX >> 1]; // Sinus-/Kosinustabelle -size_t shuffle [MAX >> 1] [2]; // Shuffle-Tabelle -size_t shuffle_len; - -// Bitinversion - -size_t swap ( size_t number, int bits ) -{ - size_t ret; - for ( ret = 0; bits--; number >>= 1 ) { - ret = ret + ret + (number & 1); - } - return ret; -} - -// Bestimmen des Logarithmus dualis - -int ld ( size_t number ) -{ - size_t i; - for ( i = 0; i < sizeof(size_t)*CHAR_BIT; i++ ) - if ( ((size_t)1 << i) == number ) - return i; - return -1; -} - -// Die eigentliche FFT - -int fft ( compl* fn, const size_t newlen ) -{ - static size_t len = 0; - static int bits = 0; - size_t i; - size_t j; - size_t k; - size_t p; - - /* Tabellen initialisieren */ - - if ( newlen != len ) { - len = newlen; - - if ( (bits=ld(len)) == -1 ) - return FFT_ERR_LD; - - for ( i = 0; i < len; i++ ) { - j = swap ( i, bits ); - if ( i < j ) { - shuffle [shuffle_len] [0] = i; - shuffle [shuffle_len] [1] = j; - shuffle_len++; - } - } - for ( i = 0; i < (len>>1); i++ ) { - double x = (double) swap ( i+i, bits ) * 2*M_PI/len; - root [i] [0] = cos (x); - root [i] [1] = sin (x); - } - } - - /* Eigentliche Transformation */ - - p = len >> 1; - do { - f_t* bp = (f_t*) root; - f_t* si = (f_t*) fn; - f_t* di = (f_t*) fn+p+p; - - do { - k = p; - do { - f_t mulr = bp[0]*di[0] - bp[1]*di[1]; - f_t muli = bp[1]*di[0] + bp[0]*di[1]; - - di[0] = si[0] - mulr; - di[1] = si[1] - muli; - si[0] += mulr; - si[1] += muli; - - si += 2, di += 2; - } while ( --k ); - si += p+p, di += p+p, bp += 2; - } while ( si < &fn[len][0] ); - } while (p >>= 1); - - /* Bitinversion */ - - for ( k = 0; k < shuffle_len; k++ ) { - f_t tmp; - i = shuffle [k] [0]; - j = shuffle [k] [1]; - tmp = fn [i][0]; fn [i][0] = fn [j][0]; fn [j][0] = tmp; - tmp = fn [i][1]; fn [i][1] = fn [j][1]; fn [j][1] = tmp; - } - - return FFT_ERR_OK; -} - -void printnumber ( long double x ) -{ - unsigned exp = 0; - - if ( x < 9.999995 ) fprintf ( stderr, "%7.5f", (double)x ); - else if ( x < 99.99995 ) fprintf ( stderr, "%7.4f", (double)x ); - else if ( x < 999.9995 ) fprintf ( stderr, "%7.3f", (double)x ); - else if ( x < 9999.995 ) fprintf ( stderr, "%7.2f", (double)x ); - else if ( x < 99999.95 ) fprintf ( stderr, "%7.1f", (double)x ); - else if ( x < 999999.5 ) fprintf ( stderr, "%6.0f.", (double)x ); - else if ( x < 9999999.5 ) fprintf ( stderr, "%7.0f", (double)x ); - else if ( x < 9.9995e9 ) { - while ( x >= 9.9995 ) exp++ , x /= 10; - fprintf ( stderr, "%5.3fe%01u", (double)x, exp ); - } else if ( x < 9.995e99 ) { - while ( x >= 9.5e6 ) exp+=6 , x /= 1.e6; - while ( x >= 9.995 ) exp++ , x /= 10; - fprintf ( stderr, "%4.2fe%02u", (double)x, exp ); - } else if ( x < 9.95e999L ) { - while ( x >= 9.5e18 ) exp+=18, x /= 1.e18; - while ( x >= 9.95 ) exp++ , x /= 10; - fprintf ( stderr, "%3.1fe%03u", (double)x, exp ); - } else { - while ( x >= 9.5e48 ) exp+=48, x /= 1.e48; - while ( x >= 9.5 ) exp++ , x /= 10; - fprintf ( stderr, "%1.0f.e%04u", (double)x, exp ); - } -} - -double logdual ( long double x ) -{ - unsigned exp = 0; - - while ( x >= 18446744073709551616. ) - x /= 18446744073709551616., exp += 64; - while ( x >= 256. ) - x /= 256., exp += 8; - while ( x >= 2. ) - x /= 2., exp += 1; - return exp + log (x)/log(2); -} - -int random_number ( void ) -{ - struct timeval t; - unsigned long val; - - gettimeofday ( &t, NULL ); - - val = t.tv_sec ^ t.tv_usec ^ rand(); - val ^= val >> 16; - val ^= val >> 8; - val ^= val >> 4; - val ^= val >> 2; - val ^= val >> 1; - - return val & 1; -} - -long double prob ( int last, int total ) -{ - long double sum = 0.; - long double tmp = 1.; - int i; - int j = total; - - if ( 2*last == total ) - return 1.; - if ( 2*last > total ) - last = total - last; - - for ( i = 0; i <= last; i++ ) { - sum += tmp; - tmp = tmp * (total-i) / (1+i); - while ( j > 0 && tmp > 1 ) - j--, sum *= 0.5, tmp *= 0.5; - } - while ( j > 0 ) - j--, sum *= 0.5; - - return 2.*sum; -} - - -void eval ( int right ) -{ - static int count = 0; - static int okay = 0; - long double val; - - count ++; - okay += right; - - val = 1.L / prob ( okay, count ); - - fprintf (stderr, " %s %5u/%-5u ", right ? "OK" : "- " , okay, count ); - printnumber (val); - if ( count > 1 ) - fprintf (stderr, " %4.2f bit", 0.01 * (int)(logdual(val) / (count-1) * 100.) ); - fprintf ( stderr, "\n" ); -} - - -typedef signed short sample_t; -typedef sample_t mono_t [1]; -typedef sample_t stereo_t [2]; -typedef struct { - unsigned long n; - long double x; - long double x2; - long double y; - long double y2; - long double xy; -} korr_t; - - -void analyze_stereo ( const stereo_t* p1, const stereo_t* p2, size_t len, korr_t* const k ) -{ - long double _x = 0, _x2 = 0, _y = 0, _y2 = 0, _xy = 0; - double t1; - double t2; - - k -> n += 2*len; - - for ( ; len--; p1++, p2++ ) { - _x += (t1 = (*p1)[0]); _x2 += t1 * t1; - _y += (t2 = (*p2)[0]); _y2 += t2 * t2; - _xy += t1 * t2; - _x += (t1 = (*p1)[1]); _x2 += t1 * t1; - _y += (t2 = (*p2)[1]); _y2 += t2 * t2; - _xy += t1 * t2; - } - - k -> x += _x ; - k -> x2 += _x2; - k -> y += _y ; - k -> y2 += _y2; - k -> xy += _xy; -} - -int sgn ( double x ) -{ - if ( x == 0 ) return 0; - if ( x < 0 ) return -1; - return +1; -} - -long double report ( const korr_t* const k ) -{ - long double r; - long double sx; - long double sy; - long double x; - long double y; - long double b; - - r = (k->x2*k->n - k->x*k->x) * (k->y2*k->n - k->y*k->y); - r = r > 0.l ? (k->xy*k->n - k->x*k->y) / sqrt (r) : 1.l; - sx = k->n > 1 ? sqrt ( (k->x2 - k->x*k->x/k->n) / (k->n - 1) ) : 0.l; - sy = k->n > 1 ? sqrt ( (k->y2 - k->y*k->y/k->n) / (k->n - 1) ) : 0.l; - x = k->n > 0 ? k->x/k->n : 0.l; - y = k->n > 0 ? k->y/k->n : 0.l; - - b = sx != 0 ? sy/sx * sgn(r) : 0.l; - if (verbose) - fprintf ( stderr, "r=%Lf sx=%Lf sy=%Lf x=%Lf y=%Lf b=%Lf\n", r, sx, sy, x, y, b ); - return b; -} - - -/* Input: an unsigned short n. - * Output: the swapped bytes of n if the arch is big-endian or n itself - * if the arch is little-endian. - * Comment: should be replaced latter with a better solution than this - * home-brewed hack (rbrito). The name should be better also. - */ -inline unsigned short be16_le(unsigned short n) -{ -#ifdef _WORDS_BIGENDIAN - return (n << 8) | (n >> 8); -#else - return n; -#endif -} - - -int feed ( int fd, const stereo_t* p, int len ) -{ - int i; - stereo_t tmp[30000]; /* An arbitrary size--to be changed latter */ - - if (len > sizeof(tmp)/sizeof(*tmp)) - len = sizeof(tmp)/sizeof(*tmp); - - for (i = 0; i < len; i++) { - tmp[i][0] = be16_le(p[i][0]); - tmp[i][1] = be16_le(p[i][1]); - } - - write ( fd, tmp, sizeof(stereo_t) * len ); - return len; -} - - -short round ( double f ) -{ - long x = (long) floor ( f + 0.5 ); - return x == (short)x ? (short)x : (short) ((x >> 31) ^ 0x7FFF); -} - - -int feed2 ( int fd, const stereo_t* p1, const stereo_t* p2, int len ) -{ - stereo_t tmp [30000]; /* An arbitrary size, hope that no overruns occure */ - int i; - - if (len > sizeof(tmp)/sizeof(*tmp)) - len = sizeof(tmp)/sizeof(*tmp); - for ( i = 0; i < len; i++ ) { - double f = cos ( M_PI/2*i/len ); - f *= f; - tmp [i] [0] = be16_le(round ( p1 [i] [0] * f + p2 [i] [0] * (1. - f) )); - tmp [i] [1] = be16_le(round ( p1 [i] [1] * f + p2 [i] [1] * (1. - f) )); - } - - write ( fd, tmp, sizeof(stereo_t) * len ); - return len; -} - - -int feedfac ( int fd, const stereo_t* p1, const stereo_t* p2, int len, double fac1, double fac2 ) -{ - stereo_t tmp [30000]; /* An arbitrary size, hope that no overruns occure */ - int i; - - if (len > sizeof(tmp)/sizeof(*tmp)) - len = sizeof(tmp)/sizeof(*tmp); - for ( i = 0; i < len; i++ ) { - tmp [i] [0] = be16_le(round ( p1 [i] [0] * fac1 + p2 [i] [0] * fac2 )); - tmp [i] [1] = be16_le(round ( p1 [i] [1] * fac1 + p2 [i] [1] * fac2 )); - } - - write ( fd, tmp, sizeof(stereo_t) * len ); - return len; -} - - -void setup ( int fdd, int samples, long freq ) -{ - int status, org, arg; - - // Nach vorn verschoben - if ( -1 == (status = ioctl (fdd, SOUND_PCM_SYNC, 0)) ) - perror ("SOUND_PCM_SYNC ioctl failed"); - - org = arg = 2; - if ( -1 == (status = ioctl (fdd, SOUND_PCM_WRITE_CHANNELS, &arg)) ) - perror ("SOUND_PCM_WRITE_CHANNELS ioctl failed"); - if (arg != org) - perror ("unable to set number of channels"); - fprintf (stderr, "%1u*", arg); - - org = arg = AFMT_S16_LE; - if ( -1 == ioctl (fdd, SNDCTL_DSP_SETFMT, &arg) ) - perror ("SNDCTL_DSP_SETFMT ioctl failed"); - if ((arg & org) == 0) - perror ("unable to set data format"); - - org = arg = freq; - if ( -1 == (status = ioctl (fdd, SNDCTL_DSP_SPEED, &arg)) ) - perror ("SNDCTL_DSP_SPEED ioctl failed"); - fprintf (stderr, "%5u Hz*%.3f sec\n", arg, (double)samples/arg ); - -} - - -void Message ( const char* s, size_t index, long freq, size_t start, size_t stop ) -{ - unsigned long norm_index = 100lu * index / freq; - unsigned long norm_start = 100lu * start / freq; - unsigned long norm_stop = 100lu * stop / freq; - - fprintf ( stderr, "\rListening %s %2lu:%02lu.%02lu (%1lu:%02lu.%02lu...%1lu:%02lu.%02lu)%*.*s\rListening %s", - s, - norm_index / 6000, norm_index / 100 % 60, norm_index % 100, - norm_start / 6000, norm_start / 100 % 60, norm_start % 100, - norm_stop / 6000, norm_stop / 100 % 60, norm_stop % 100, - 36 - (int)strlen(s), 36 - (int)strlen(s), "", - s ); - - fflush ( stderr ); -} - - -size_t calc_true_index ( size_t index, size_t start, size_t stop ) -{ - if ( start >= stop ) - return start; - while ( index - start < DMA_SAMPLES ) - index += stop - start; - return index - DMA_SAMPLES; -} - - -void testing ( const stereo_t* A, const stereo_t* B, size_t len, long freq ) -{ - int c; - int fd = open ( "/dev/dsp", O_WRONLY ); - int rnd = random_number (); /* Auswahl von X */ - int state = 0; /* derzeitiger F�ttungsmodus */ - float fac1 = 0.5; - float fac2 = 0.5; - size_t start = 0; - size_t stop = len; - size_t index = start; /* derzeitiger Offset auf den Audiostr�men */ - char message [80] = "A "; - - setup ( fd, len, freq ); - - while ( 1 ) { - c = sel (); - if ( c == 27 ) - c = sel () + 0x100; - - switch ( c ) { - case 'A' : - case 'a' : - strcpy ( message, "A " ); - if ( state != 0 ) - state = 2; - break; - - case 0x100+'0' : - case '0' : - case 'B' : - case 'b' : - strcpy ( message, " B" ); - if ( state != 1 ) - state = 3; - break; - - case 'X' : - case 'x' : - strcpy ( message, " X " ); - if ( state != rnd ) - state = rnd + 2; - break; - - case 'm' : - state = 8; - break; - - case 'M' : - state = (state & 1) + 4; - break; - - case 'x'&0x1F: - state = (state & 1) + 6; - break; - - case ' ': - start = 0; - stop = len; - break; - - case 'o' : - start = calc_true_index ( index, start, stop); - break; - case 'p' : - stop = calc_true_index ( index, start, stop); - break; - case 'h' : - if ( start > freq/100 ) - start -= freq/100; - else - start = 0; - index = start; - continue; - case 'j' : - if ( start < stop-freq/100 ) - start += freq/100; - else - start = stop; - index = start; - continue; - case 'k' : - if ( stop > start+freq/100 ) - stop -= freq/100; - else - stop = start; - continue; - case 'l' : - if ( stop < len-freq/100 ) - stop += freq/100; - else - stop = len; - continue; - case '\n': - index = start; - continue; - - case 'D'+0x100: - strcpy ( message, "Difference (+40 dB)" ); - state = 9; - fac1 = -100.; - fac2 = +100.; - break; - - case 'd'+0x100: - strcpy ( message, "Difference (+30 dB)" ); - state = 9; - fac1 = -32.; - fac2 = +32.; - break; - - case 'D' & 0x1F : - strcpy ( message, "Difference (+20 dB)" ); - state = 9; - fac1 = -10.; - fac2 = +10.; - break; - - case 'D' : - strcpy ( message, "Difference (+10 dB)" ); - state = 9; - fac1 = -3.; - fac2 = +3.; - break; - - case 'd' : - strcpy ( message, "Difference ( 0 dB)" ); - state = 9; - fac1 = -1.; - fac2 = +1.; - break; - - case 0x100+'1' : - case 0x100+'2' : - case 0x100+'3' : - case 0x100+'4' : - case 0x100+'5' : - case 0x100+'6' : - case 0x100+'7' : - case 0x100+'8' : - case 0x100+'9' : - sprintf ( message, " B (Errors -%c dB)", (char)c ); - state = 9; - fac2 = pow (10., -0.05*(c-0x100-'0') ); - fac1 = 1. - fac2; - break; - - case '1' : - case '2' : - case '3' : - case '4' : - case '5' : - case '6' : - case '7' : - case '8' : - case '9' : - sprintf ( message, " B (Errors +%c dB)", c ); - state = 9; - fac2 = pow (10., 0.05*(c-'0') ); - fac1 = 1. - fac2; - break; - - case 'A' & 0x1F: - fprintf (stderr, " Vote for X:=A" ); - eval ( rnd == 0 ); - rnd = random_number (); - if ( state == 6 && state == 7 ) - state = 6 + rnd; - else if ( state != rnd ) - state = rnd + 2; - strcpy ( message," X " ); - break; - - case 'B' & 0x1F: - fprintf (stderr, " Vote for X:=B" ); - eval ( rnd == 1 ); - rnd = random_number (); - if ( state == 6 && state == 7 ) - state = 6 + rnd; - else if ( state != rnd ) - state = rnd + 2; - strcpy ( message," X " ); - break; - - case -1: - break; - - default: - fprintf (stderr, "\a" ); - break; - - case 'Q': - case 'q': - fprintf ( stderr, "\n%-79.79s\r", "Quit program" ); - close (fd); - fprintf ( stderr, "\n\n"); - return; - } - - switch (state) { - case 0: /* A */ - if ( index + BF >= stop ) - index += feed (fd, A+index, stop-index ); - else - index += feed (fd, A+index, BF ); - break; - - case 1: /* B */ - if ( index + BF >= stop ) - index += feed (fd, B+index, stop-index ); - else - index += feed (fd, B+index, BF ); - break; - - case 2: /* B => A */ - if ( index + BF >= stop ) - index += feed2 (fd, B+index, A+index, stop-index ); - else - index += feed2 (fd, B+index, A+index, BF ); - state = 0; - break; - - case 3: /* A => B */ - if ( index + BF >= stop ) - index += feed2 (fd, A+index, B+index, stop-index ); - else - index += feed2 (fd, A+index, B+index, BF ); - state = 1; - break; - - case 4: /* A */ - strcpy ( message, "A " ); - if ( index + BF >= stop ) - index += feed (fd, A+index, stop-index ), - state++; - else - index += feed (fd, A+index, BF ); - break; - - case 5: /* B */ - strcpy ( message, " B" ); - if ( index + BF >= stop ) - index += feed (fd, B+index, stop-index ), - state--; - else - index += feed (fd, B+index, BF ); - break; - - case 6: /* X */ - strcpy ( message, " X " ); - if ( index + BF >= stop ) - index += feed (fd, (rnd ? B : A)+index, stop-index ), - state++; - else - index += feed (fd, (rnd ? B : A)+index, BF ); - break; - - case 7: /* !X */ - strcpy ( message, "!X " ); - if ( index + BF >= stop ) - index += feed (fd, (rnd ? A : B)+index, stop-index ), - state--; - else - index += feed (fd, (rnd ? A : B)+index, BF ); - break; - - case 8: - if ( index + BF/2 >= stop ) - index += feed2 (fd, A+index, B+index, stop-index ); - else - index += feed2 (fd, A+index, B+index, BF/2 ); - Message ( " B", index, freq, start, stop ); - if ( index + BF >= stop ) - index += feed (fd, B+index, stop-index ); - else - index += feed (fd, B+index, BF ); - if ( index + BF/2 >= stop ) - index += feed2 (fd, B+index, A+index, stop-index ); - else - index += feed2 (fd, B+index, A+index, BF/2 ); - Message ( "A ", index, freq, start, stop ); - if ( index + BF >= stop ) - index += feed (fd, A+index, stop-index ); - else - index += feed (fd, A+index, BF ); - break; - - case 9: /* Liko */ - if ( index + BF >= stop ) - index += feedfac (fd, A+index, B+index, stop-index, fac1, fac2 ); - else - index += feedfac (fd, A+index, B+index, BF , fac1, fac2 ); - break; - - default: - assert (0); - } - - if (index >= stop) - index = start; - Message ( message, calc_true_index ( index, start, stop), freq, start, stop ); - } -} - - -int has_ext ( const char* name, const char* ext ) -{ - if ( strlen (name) < strlen (ext) ) - return 0; - name += strlen (name) - strlen (ext); - return strcasecmp (name, ext) ? 0 : 1; -} - - -typedef struct { - const char* const extention; - const char* const command; -} decoder_t; - - -#define REDIR " 2> /dev/null" -#define STDOUT "/dev/fd/1" -#define PATH PATH_OF_EXTERNAL_TOOLS_FOR_UNCOMPRESSING - -const decoder_t decoder [] = { - { ".mp1" , PATH"mpg123 -w - %s" REDIR }, // MPEG Layer I : www.iis.fhg.de, www.mpeg.org - { ".mp2" , PATH"mpg123 -w - %s" REDIR }, // MPEG Layer II : www.iis.fhg.de, www.uq.net.au/~zzmcheng, www.mpeg.org - { ".mp3" , PATH"mpg123 -w - %s" REDIR }, // MPEG Layer III : www.iis.fhg.de, www.mp3dev.org, www.mpeg.org - { ".mp3pro" , PATH"mpg123 -w - %s" REDIR }, // MPEG Layer III : www.iis.fhg.de, www.mp3dev.org, www.mpeg.org - { ".mpt" , PATH"mpg123 -w - %s" REDIR }, // MPEG Layer III : www.iis.fhg.de, www.mp3dev.org, www.mpeg.org - { ".mpp" , PATH"mppdec %s -" REDIR }, // MPEGplus : www.stud.uni-hannover.de/user/73884 - { ".mpc" , PATH"mppdec %s -" REDIR }, // MPEGplus : www.stud.uni-hannover.de/user/73884 - { ".mp+" , PATH"mppdec %s -" REDIR }, // MPEGplus : www.stud.uni-hannover.de/user/73884 - { ".aac" , PATH"faad -t.wav -w %s" REDIR }, // Advanced Audio Coding: psytel.hypermart.net, www.aac-tech.com, sourceforge.net/projects/faac, www.aac-audio.com, www.mpeg.org - { "aac.lqt" , PATH"faad -t.wav -w %s" REDIR }, // Advanced Audio Coding: psytel.hypermart.net, www.aac-tech.com, sourceforge.net/projects/faac, www.aac-audio.com, www.mpeg.org - { ".ac3" , PATH"ac3dec %s" REDIR }, // Dolby AC3 : www.att.com - { "ac3.lqt" , PATH"ac3dec %s" REDIR }, // Dolby AC3 : www.att.com - { ".ogg" , PATH"ogg123 -d wav -o file:"STDOUT" %s" REDIR }, // Ogg Vorbis : www.xiph.org/ogg/vorbis/index.html - { ".pac" , PATH"lpac -x %s "STDOUT REDIR }, // Lossless predictive Audio Compression: www-ft.ee.tu-berlin.de/~liebchen/lpac.html (liebchen@ft.ee.tu-berlin.de) - { ".shn" , PATH"shorten -x < %s" REDIR }, // Shorten : shnutils.freeshell.org, www.softsound.com/Shorten.html (shnutils@freeshell.org, shorten@softsound.com) - { ".wav.gz" , PATH"gzip -d < %s | sox -twav - -twav -sw -"REDIR }, // gziped WAV - { ".wav.sz" , PATH"szip -d < %s | sox -twav - -twav -sw -"REDIR }, // sziped WAV - { ".wav.sz2", PATH"szip2 -d < %s | sox -twav - -twav -sw -"REDIR }, // sziped WAV - { ".raw" , PATH"sox -r44100 -sw -c2 -traw %s -twav -sw -"REDIR }, // raw files are treated as CD like audio - { ".cdr" , PATH"sox -r44100 -sw -c2 -traw %s -twav -sw -"REDIR }, // CD-DA files are treated as CD like audio, no preemphasis info available - { ".rm" , "echo %s '???'" REDIR }, // Real Audio : www.real.com - { ".epc" , "echo %s '???'" REDIR }, // ePAC : www.audioveda.com, www.lucent.com/ldr - { ".mov" , "echo %s '???'" REDIR }, // QDesign Music 2 : www.qdesign.com - { ".vqf" , "echo %s '???'" REDIR }, // TwinVQ : www.yamaha-xg.com/english/xg/SoundVQ, www.vqf.com, sound.splab.ecl.ntt.co.jp/twinvq-e - { ".wma" , "echo %s '???'" REDIR }, // Microsoft Media Audio: www.windowsmedia.com, www.microsoft.com/windows/windowsmedia - { ".flac" , PATH"flac -c -d %s" REDIR }, // Free Lossless Audio Coder: flac.sourceforge.net/ - { ".fla" , PATH"flac -c -d %s" REDIR }, // Free Lossless Audio Coder: flac.sourceforge.net/ - { ".ape" , "( "PATH"MAC %s _._.wav -d > /dev/null; cat _._.wav; rm _._.wav )" REDIR }, // Monkey's Audio Codec : www.monkeysaudio.com (email@monkeysaudio.com) - { ".rka" , "( "PATH"rkau %s _._.wav > /dev/null; cat _._.wav; rm _._.wav )" REDIR }, // RK Audio: - { ".rkau" , "( "PATH"rkau %s _._.wav > /dev/null; cat _._.wav; rm _._.wav )" REDIR }, // RK Audio: - { ".mod" , PATH"xmp -b16 -c -f44100 --stereo -o- %s | sox -r44100 -sw -c2 -traw - -twav -sw -" - REDIR }, // Amiga's Music on Disk: - { "" , PATH"sox %s -twav -sw -" REDIR }, // Rest, may be sox can handle it -}; - -#undef REDIR -#undef STDOUT -#undef PATH - - -int readwave ( stereo_t* buff, size_t maxlen, const char* name, size_t* len ) -{ - char* command = malloc (2*strlen(name) + 512); - char* name_q = malloc (2*strlen(name) + 128); - unsigned short header [22]; - FILE* fp; - size_t i; - size_t j; - - // The *nice* shell quoting - i = j = 0; - if ( name[i] == '-' ) - name_q[j++] = '.', - name_q[j++] = '/'; - - while (name[i]) { - if ( !isalnum (name[i]) && name[i]!='-' && name[i]!='_' && name[i]!='.' ) - name_q[j++] = '\\'; - name_q[j++] = name[i++]; - } - name_q[j] = '\0'; - - fprintf (stderr, "Reading %s", name ); - for ( i = 0; i < sizeof(decoder)/sizeof(*decoder); i++ ) - if ( has_ext (name, decoder[i].extention) ) { - sprintf ( command, decoder[i].command, name_q ); - break; - } - - free (name_q); - if ( (fp = popen (command, "r")) == NULL ) { - fprintf (stderr, "Can't exec:\n%s\n", command ); - exit (1); - } - free (command); - - fprintf (stderr, " ..." ); - fread ( header, sizeof(*header), sizeof(header)/sizeof(*header), fp ); - - switch (be16_le(header[11])) { - case 2: - *len = fread ( buff, sizeof(stereo_t), maxlen, fp ); - for (i = 0; i < *len; i ++) { - buff[i][0] = be16_le(buff[i][0]); - buff[i][1] = be16_le(buff[i][1]); - } - break; - case 1: - *len = fread ( buff, sizeof(sample_t), maxlen, fp ); - for ( i = *len; i-- > 0; ) - buff[i][0] = buff[i][1] = ((sample_t*)buff) [i]; - break; - case 0: - fprintf (stderr, "\b\b\b\b, Standard Open Source Bug detected, try murksaround ..." ); - *len = fread ( buff, sizeof(stereo_t), maxlen, fp ); - header[11] = 2; - header[12] = 65534; /* use that of the other channel */ - break; - default: - fprintf (stderr, "Only 1 or 2 channels are supported, not %u\n", header[11] ); - pclose (fp); - return -1; - } - pclose ( fp ); - fprintf (stderr, "\n" ); - return be16_le(header[12]) ? be16_le(header[12]) : 65534; -} - - -double cross_analyze ( const stereo_t* p1, const stereo_t *p2, size_t len ) -{ - float P1 [MAX] [2]; - float P2 [MAX] [2]; - int i; - int maxindex; - double sum1; - double sum2; - double max; - double y1; - double y2; - double y3; - double yo; - double xo; - double tmp; - double tmp1; - double tmp2; - int ret = 0; - int cnt = 5; - - // Calculating effective voltage - sum1 = sum2 = 0.; - for ( i = 0; i < len; i++ ) { - sum1 += (double)p1[i][0] * p1[i][0]; - sum2 += (double)p2[i][0] * p2[i][0]; - } - sum1 = sqrt ( sum1/len ); - sum2 = sqrt ( sum2/len ); - - // Searching beginning of signal (not stable for pathological signals) - for ( i = 0; i < len; i++ ) - if ( abs (p1[i][0]) >= sum1 && abs (p2[i][0]) >= sum2 ) - break; - p1 += i; - p2 += i; - len -= i; - - if ( len <= MAX ) - return 0; - - // Filling arrays for FFT - do { - sum1 = sum2 = 0.; - for ( i = 0; i < MAX; i++ ) { -#ifdef USEDIFF - tmp1 = p1 [i][0] - p1 [i+1][0]; - tmp2 = p2 [i+ret][0] - p2 [i+ret+1][0]; -#else - tmp1 = p1 [i][0]; - tmp2 = p2 [i+ret][0]; -#endif - sum1 += tmp1*tmp1; - sum2 += tmp2*tmp2; - P1 [i][0] = tmp1; - P2 [i][0] = tmp2; - P1 [i][1] = 0.; - P2 [i][1] = 0.; - } - - fft (P1, MAX); - fft (P2, MAX); - - for ( i = 0; i < MAX; i++ ) { - double a0 = P1 [i][0]; - double a1 = P1 [i][1]; - double b0 = P2 [(MAX-i)&(MAX-1)][0]; - double b1 = P2 [(MAX-i)&(MAX-1)][1]; - P1 [i][0] = a0*b0 - a1*b1; - P1 [i][1] = a0*b1 + a1*b0; - } - - fft (P1, MAX); - - max = P1 [maxindex = 0][0]; - for ( i = 1; i < MAX; i++ ) - if ( P1[i][0] > max ) - max = P1 [maxindex = i][0]; - - y2 = P1 [ maxindex ][0]; - y1 = P1 [(maxindex-1)&(MAX-1)][0] - y2; - y3 = P1 [(maxindex+1)&(MAX-1)][0] - y2; - - xo = 0.5 * (y1-y3) / (y1+y3); - yo = 0.5 * ( (y1+y3)*xo + (y3-y1) ) * xo; - - if (maxindex > MAX/2 ) - maxindex -= MAX; - - ret += maxindex; - tmp = 100./MAX/sqrt(sum1*sum2); - if (verbose) - printf ( "[%5d]%8.4f [%5d]%8.4f [%5d]%8.4f [%10.4f]%8.4f\n", - ret- 1, (y1+y2)*tmp, - ret , y2 *tmp, - ret+ 1, (y3+y2)*tmp, - ret+xo, (yo+y2)*tmp ); - - } while ( maxindex && cnt-- ); - - return ret + xo; -} - - -short to_short ( int x ) -{ - return x == (short)x ? (short)x : (short) ((x >> 31) ^ 0x7FFF); -} - - -void DC_cancel ( stereo_t* p, size_t len ) -{ - double sum1 = 0; - double sum2 = 0; - size_t i; - int diff1; - int diff2; - - for (i = 0; i < len; i++ ) { - sum1 += p[i][0]; - sum2 += p[i][1]; - } - if ( fabs(sum1) < len && fabs(sum2) < len ) - return; - - diff1 = round ( sum1 / len ); - diff2 = round ( sum2 / len ); - if (verbose) - fprintf (stderr, "Removing DC (left=%d, right=%d)\n", diff1, diff2 ); - - for (i = 0; i < len; i++ ) { - p[i][0] = to_short ( p[i][0] - diff1); - p[i][1] = to_short ( p[i][1] - diff2); - } -} - -void multiply ( char c, stereo_t* p, size_t len, double fact ) -{ - size_t i; - - if ( fact == 1. ) - return; - if (verbose) - fprintf (stderr, "Multiplying %c by %7.5f\n", c, fact ); - - for (i = 0; i < len; i++ ) { - p[i][0] = to_short ( p[i][0] * fact ); - p[i][1] = to_short ( p[i][1] * fact ); - } -} - - -int maximum ( stereo_t* p, size_t len ) -{ - int max = 0; - size_t i; - - for (i = 0; i < len; i++ ) { - if (abs(p[i][0]) > max) max = abs(p[i][0]); - if (abs(p[i][1]) > max) max = abs(p[i][1]); - } - return max; -} - - -void usage ( void ) -{ - fprintf ( stderr, - "usage: abx [-v] File_A File_B\n" - "\n" - "File_A and File_B loaded and played. File_A should be the better/reference\n" - "file, File_B the other. You can press the following keys:\n" - "\n" - " a/A: Listen to File A\n" - " b/B: Listen to File B\n" - " x/X: Listen to the randomly selected File X, which is A or B\n" - " Ctrl-A: You vote for X=A\n" - " Ctrl-B: You vote for X=B\n" - " m: Alternating playing A and B. Fast switching\n" - " M: Alternating playing A and B. Slow switching\n" - " d/D/Ctrl-D/Alt-d/Alt-D:\n" - " Listen to the difference A-B (+0 dB...+40 dB)\n" - " o/p: Chunk select\n" - " hjkl: Chunk fine adjust (hj: start, kl: stop)\n" - " Space: Chunk deselect\n" - " 0...9: Listen to B, but difference A-B is amplified by 0-9 dB\n" - " Q: Quit the program\n" - "\n" - ); -} - - -int main ( int argc, char** argv ) -{ - stereo_t* _A = calloc ( MAX_LEN, sizeof(stereo_t) ); - stereo_t* _B = calloc ( MAX_LEN, sizeof(stereo_t) ); - stereo_t* A = _A; - stereo_t* B = _B; - size_t len_A; - size_t len_B; - size_t len; - int max_A; - int max_B; - int max; - long freq1; - long freq2; - int shift; - double fshift; - double ampl; - int ampl_X; - korr_t k; - - if (argc > 1 && 0 == strcmp (argv[1], "-v") ) { - verbose = 1; - argc--; - argv++; - } - - switch ( argc ) { - case 0: - case 1: - case 2: - default: - usage (); - return 1; - case 3: - usage(); - break; - } - - freq1 = readwave ( A, MAX_LEN, argv[1], &len_A ); - DC_cancel ( A, len_A ); - freq2 = readwave ( B, MAX_LEN, argv[2], &len_B ); - DC_cancel ( B, len_B ); - - if ( freq1 == 65534 && freq2 != 65534 ) - freq1 = freq2; - else if ( freq2 == 65534 && freq1 != 65534 ) - freq2 = freq1; - else if ( freq1 == 65534 && freq2 == 65534 ) - freq1 = freq2 = 44100; - - if ( freq1 != freq2 ) { - fprintf ( stderr, "Different sample frequencies currently not supported\n"); - fprintf ( stderr, "A: %ld, B: %ld\n", freq1, freq2 ); - return 2; - } - - len = len_A < len_B ? len_A : len_B; - fshift = cross_analyze ( A, B, len ); - shift = floor ( fshift + 0.5 ); - - if ( verbose ) { - fprintf ( stderr, "Delay Ch1 is %.4f samples\n", fshift ); - fprintf ( stderr, "Delay Ch2 is %.4f samples\n", - cross_analyze ( (stereo_t*)(((sample_t*)A)+1), (stereo_t*)(((sample_t*)B)+1), len ) ); - } - - if (shift > 0) { - if (verbose) - fprintf ( stderr, "Delaying A by %d samples\n", +shift); - B += shift; - len_B -= shift; - } - if (shift < 0) { - if (verbose) - fprintf ( stderr, "Delaying B by %d samples\n", -shift); - A -= shift; - len_A += shift; - } - - len = len_A < len_B ? len_A : len_B; - memset ( &k, 0, sizeof(k) ); - analyze_stereo ( A, B, len, &k ); - ampl = report (&k); - max_A = maximum ( A, len ); - max_B = maximum ( B, len ); - - if ( ampl <= 0.98855 ) { /* < -0.05 dB */ - max = max_A*ampl < max_B ? max_B : max_A*ampl; - ampl_X = (int)(29203 / max); - if ( ampl_X < 2 ) ampl_X = 1; - multiply ( 'A', A, len, ampl*ampl_X ); - multiply ( 'B', B, len, ampl_X ); - } else if ( ampl >= 1.01158 ) { /* > +0.05 dB */ - max = max_A < max_B/ampl ? max_B/ampl : max_A; - ampl_X = (int)(29203 / max); - if ( ampl_X < 2 ) ampl_X = 1; - multiply ( 'A', A, len, ampl_X ); - multiply ( 'B', B, len, 1./ampl*ampl_X ); - } else { - max = max_A < max_B ? max_B : max_A; - ampl_X = (int)(29203 / max); - if ( ampl_X < 2 ) ampl_X = 1; - multiply ( 'A', A, len, ampl_X ); - multiply ( 'B', B, len, ampl_X ); - } - - set (); - Set_Realtime (); - testing ( A, B, len, freq1 ); - reset (); - - free (_A); - free (_B); - return 0; -} - -/* end of abx.c */ diff --git a/platform/win32/msvc/external/lame/misc/ath.c b/platform/win32/msvc/external/lame/misc/ath.c deleted file mode 100644 index ee6cfda0f60..00000000000 --- a/platform/win32/msvc/external/lame/misc/ath.c +++ /dev/null @@ -1,839 +0,0 @@ -/* $Id: ath.c,v 1.12 2000/12/05 15:37:26 aleidinger Exp $ */ -/* - * Known bugs (sorted by importance): - * - human delay (ca. 200 ms or more???) and buffering delay (341 ms @48 kHz/64 KByte) - * should be subtracted - * - error handling - * - cos slope on direction changes - * - calibration file of soundcard/amplifier/head phone - * - worse handling - * - +/- handling via mouse (do you have code?) in a dark room - * - ENTER as direction change - * - finer precalculated ATH for pre-emphasis - */ - -/* - * Suggested level ranges: - * 180 Hz...13.5 kHz: 50...70 dB - * 100 Hz...15.0 kHz: 40...70 dB - * 70 Hz...16.0 kHz: 30...70 dB - * 45 Hz...16.5 kHz: 20...70 dB - * 30 Hz...17.5 kHz: 10...70 dB - * 25 Hz...18.0 kHz: 5...75 dB - * 20 Hz...19.0 kHz: 0...80 dB - * 16 Hz...20.0 kHz: -10...80 dB - */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <errno.h> -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <string.h> -#include <fcntl.h> -#include <limits.h> -#include <termios.h> -#include <math.h> -#include <time.h> -#include <signal.h> -#include <sys/ioctl.h> -#include <sys/time.h> -#include <sys/types.h> -#include <sys/stat.h> -#ifdef HAVE_SYS_SOUNDCARD_H -# include <sys/soundcard.h> -#elif defined(HAVE_LINUX_SOUNDCARD_H) -# include <linux/soundcard.h> -#else -# error no soundcard include -#endif - - - -#define AUDIO_DEVICE "/dev/dsp" -//#define COOLEDIT_FILE "/mnt/dosd/cooledit.wav" -#define DELAY_UNTIL_XCHG 2.5 -#define TURN_STEPS 2400 - -/****************************************************************************************************** - * soundcard stuff - ******************************************************************************************************/ - -const double dither_coeff [] [16] = { - { /* 48 kHz */ 3.35185352775391591311, 4.24914379295482032978, 1.78042251729150153086, -0.92601381419186201184, -1.37308596104182343645, -1.85951915999247704829, -3.28074437872632330526, -3.05496670185702990882, -1.22855462839450528837, -0.30291531959171267015, -0.18598486195652600770, 0.42010512205702003790, 0.92278786111368653452, 0.62102380451771775193, 0.14312897206650044828, -0.00454721508203927746 }, - { /* 56 kHz */ 3.86404134982280628749, 6.67195592701613291071, 5.90576195467245802046, 1.57589705921487261981, -2.10618201389737372178, -2.74191788822507184395, -2.62175070636849999396, -3.78505226463032808863, -4.45698848578010438284, -2.76825966243460536110, -0.26509931375584007312, 0.67853812028968716799, 0.17633528441477021892, -0.28511417191837823770, -0.21866605100975608470, -0.04751674094456833719 }, - { /* 64 kHz */ 4.09276938880098092172, 8.27424044674659812937, 10.11503162292146762880, 7.19159801569544317353, 1.39770070291739556523, -2.86595901981244688601, -3.76567274050094691362, -3.58051445684472378298, -4.78262917738758022539, -6.53075750894777650899, -6.31330514306857055627, -3.69971382767763534195, -0.78125094191744878298, 0.59027508113837267217, 0.53500264009607367648, 0.14860043567206217506 }, - { /* 72 kHz */ 4.13833553801985235465, 9.02461778089340082437, 12.93090366932740510782, 12.66372285767699051948, 7.76122176702274149630, 1.30617257555732278296, -2.92859120887121285358, -4.02438598495837830627, -4.16673068132491936262, -5.55618065300129916574, -7.82657788611231653103, -8.83055904466106668035, -7.34884789347713815672, -4.33977664906048314891, -1.67711310288611975398, -0.33086687044710235420 }, - { /* 80 kHz */ 4.22135293342667005517, 9.76639846582539722375, 15.46562682418357478290, 17.54378549927855248346, 13.29112084313158963396, 3.51512441998252657470, -7.51025671462502577300,-14.84164320864536219368,-16.10306907358826504148,-12.54775907691866414402, -7.40560667268782655149, -3.34708029482052565732, -1.19572214872925790860, -0.39582185216275086786, -0.14803160816846603424, -0.04292818488627011881 }, - { /* 88 kHz */ 4.18521467865996935325, 9.96765821475909556942, 16.91905760389390617551, 21.74016824668913557689, 20.96457146354060682367, 13.28640453421253890542, 0.85116933842171101587,-11.66054516261007127469,-19.62750656985581800169,-20.98831962473015904508,-16.95374072505042825458,-10.68848180295390154146, -5.17169792984369678908, -1.79975409439650319129, -0.38057073791415898674, -0.02672653932844656975 }, - { /* 96 kHz */ 4.09418877324899473189, 9.77977364010870211207, 17.10120082680385341159, 23.37356217615995036818, 25.27121942060722374276, 20.64059991613550174190, 9.99721445051475610371, -3.39833000550997938512,-15.03410054392933377278,-21.36704201000683067679,-21.40772859969388741685,-16.79355426136657673808,-10.48570200688141622163, -5.07642951516127438486, -1.75555240936989159436, -0.33817997298586054131 }, -}; - -typedef struct { - const char* device; - int fd; - long double sample_freq; - const double* dither; - int channels; - int bits; -} soundcard_t; - -typedef signed short sample_t; -typedef sample_t stereo_t [2]; - -int open_soundcard ( - soundcard_t* const k, - const char* device, - const int channels, - const int bits, - const long double freq ) -{ - int arg; - int org; - int index; - int status; - - k->device = device; - if ( -1 == (k->fd = open ( k->device, O_WRONLY )) ) { - perror("opening of audio device failed"); - return -1; - } - - if ( -1 == (status = ioctl (k->fd, SOUND_PCM_SYNC, 0))) { - fprintf ( stderr, "%s: SOUND_PCM_SYNC ioctl failed: %s\n", k->device, strerror (errno)); - return -1; - } - - org = arg = channels; - if ( -1 == (status = ioctl (k->fd, SOUND_PCM_WRITE_CHANNELS, &arg)) ) { - fprintf ( stderr, "%s: SOUND_PCM_WRITE_CHANNELS (%d) ioctl failed: %s\n" , k->device, channels, strerror (errno) ); - return -1; - } - if (arg != org) { - fprintf ( stderr, "%s: unable to set number of channels: %d instead of %d\n", k->device, arg, org ); - return -1; - } - k->channels = arg; - - org = arg = bits; - if ( -1 == (status = ioctl (k->fd, SOUND_PCM_WRITE_BITS, &arg)) ) { - fprintf ( stderr, "%s: SOUND_PCM_WRITE_BITS ioctl failed\n", k->device ); - return -1; - } - if (arg != org) { - fprintf ( stderr, "%s: unable to set sample size: %d instead of %d\n", k->device, arg, org ); - return -1; - } - k->bits = arg; - - org = arg = k->bits <= 8 ? AFMT_U8 : AFMT_S16_LE; - if ( -1 == ioctl (k->fd, SNDCTL_DSP_SETFMT, &arg) ) { - fprintf ( stderr, "%s: SNDCTL_DSP_SETFMT ioctl failed\n", k->device ); - return -1; - } - if ((arg & org) == 0) { - fprintf ( stderr, "%s: unable to set data format\n", k->device ); - return -1; - } - - org = arg = (int) floor ( freq + 0.5 ); - if ( -1 == (status = ioctl (k->fd, SOUND_PCM_WRITE_RATE, &arg)) ) { - fprintf ( stderr, "%s: SOUND_PCM_WRITE_WRITE ioctl failed\n", k->device ); - return -1; - } - k->sample_freq = (long double)arg; - index = (arg - 44000) / 8000; - if ( index < 0 ) index = 0; - if ( index >= sizeof(dither_coeff)/sizeof(*dither_coeff) ) index = sizeof(dither_coeff)/sizeof(*dither_coeff) - 1; - k->dither = dither_coeff [ index ]; - return 0; -} - -int play_soundcard ( soundcard_t* const k, stereo_t* samples, size_t length ) -{ - size_t bytes = length * sizeof (*samples); - -#ifdef COOLEDIT_FILE - static int fd = -1; - if ( fd < 0 ) fd = open ( COOLEDIT_FILE, O_WRONLY | O_CREAT ); - write ( fd, samples, bytes ); -#endif - - return write ( k->fd, samples, bytes ) == bytes ? 0 : -1; -} - -int close_soundcard ( soundcard_t* const k ) -{ - return close (k->fd); -} - - -/****************************************************************************************************** - * frequency stuff - ******************************************************************************************************/ - -typedef enum { - linear = 0, - logarithm = 1, - square = 2, - cubic = 3, - erb = 4, - recip = 5 -} genmode_t; - -static long double linear_f ( long double x ) { return x > 0.L ? x : 0.0L; } -static long double logarithm_f ( long double x ) { return x > 0.L ? log10 (x) : -3.5L; } -static long double square_f ( long double x ) { return x > 0.L ? sqrt (x) : 0.0L; } -static long double cubic_f ( long double x ) { return x > 0.L ? pow (x,1/3.) : 0.0L; } -static long double erb_f ( long double x ) { return log (1. + 0.00437*x); } -static long double recip_f ( long double x ) { return x > 1.L ? 1.L/x : 1.0L; } - -static long double inv_linear_f ( long double x ) { return x; } -static long double inv_logarithm_f ( long double x ) { return pow (10., x); } -static long double inv_square_f ( long double x ) { return x*x; } -static long double inv_cubic_f ( long double x ) { return x*x*x; } -static long double inv_erb_f ( long double x ) { return (exp(x) - 1.) * (1./0.00437); } -static long double inv_recip_f ( long double x ) { return x > 1.L ? 1.L/x : 1.0L; } - -typedef long double (*converter_fn_t) ( long double ); - -const converter_fn_t func [] = { linear_f, logarithm_f, square_f, cubic_f , erb_f , recip_f }; -const converter_fn_t inv_func [] = { inv_linear_f, inv_logarithm_f, inv_square_f, inv_cubic_f, inv_erb_f, inv_recip_f }; - -typedef struct { - genmode_t genmode; - long double start_freq; - long double stop_freq; - long double sample_freq; - unsigned long duration; - - long double phase; - long double param1; - long double param2; - unsigned long counter; -} generator_t; - -int open_generator ( - generator_t* const g, - const soundcard_t* const s, - const genmode_t genmode, - const long double duration, - const long double start_freq, - const long double stop_freq ) -{ - g->sample_freq = s->sample_freq; - g->genmode = genmode; - g->start_freq = start_freq; - g->stop_freq = stop_freq; - g->duration = (unsigned long) floor ( duration * g->sample_freq + 0.5 ); - - if ( g->duration < 2 ) - return -1; - - if ( g->genmode >= sizeof (func)/sizeof(*func) ) - return -1; - - g->param1 = func [g->genmode] ( g->start_freq / g->sample_freq ); - g->param2 = ( func [ g->genmode ] ( g->stop_freq / g->sample_freq ) - g->param1 ) - / ( g->duration - 1 ); - g->phase = 0.L; - g->counter= 0; - - return 0; -} - -long double iterate_generator ( generator_t* const g ) -{ - long double freq; - - freq = inv_func [ g->genmode ] ( g->param1 + g->counter++ * g->param2 ); - - g->phase += freq; - if (g->phase > 15.) - g->phase -= 16.; - return sin ( 2.*M_PI * g->phase ); -} - -long double get_sine ( generator_t* const g ) -{ - return sin ( 2.*M_PI * g->phase ); -} - -long double get_cosine ( generator_t* const g ) -{ - return cos ( 2.*M_PI * g->phase ); -} - - -long double frequency ( const generator_t* const g ) -{ - return inv_func [ g->genmode ] ( g->param1 + g->counter * g->param2 ) * g->sample_freq; -} - -int close_generator ( generator_t* const g ) -{ - return 0; -} - -/****************************************************************************************************** - * amplitude stuff - ******************************************************************************************************/ - -typedef enum { - up = 0, - down = 1, - turn_up = 2, - turn_down = 3, - still_up = 4, - still_down = 5, - change = 6 -} direction_t; - - -typedef struct { - long double sample_freq; - direction_t direction; // down, up, still_up, still_down, turn_down, turn_up - int multiplier; // -TURN_STEPS: down, +TURN_STEPS up - long double amplitude; - long double delta_amplitude; - long direction_change; -} amplitude_t; - -int open_amplifier ( - amplitude_t* const a, - const soundcard_t* const s, - const long double start_ampl, - const double dB_per_sec ) -{ - a->sample_freq = s->sample_freq; - a->direction = up; - a->multiplier = +TURN_STEPS; - a->amplitude = start_ampl * 32767.; - a->delta_amplitude = dB_per_sec * 0.1151292546497022842 / s->sample_freq / TURN_STEPS; - a->direction_change = 0; - - srand ( time (NULL) ); - return 0; -} - -long double iterate_amplifier ( amplitude_t* const a ) -{ - switch ( a->direction ) { - case still_up: - assert (a->multiplier == +TURN_STEPS); - if (a->direction_change > 0 ) - a->direction_change--; - else - a->direction = turn_down; - break; - case still_down: - assert (a->multiplier == -TURN_STEPS); - if (a->direction_change > 0 ) - a->direction_change--; - else - a->direction = turn_up; - break; - case turn_up: - assert (a->direction_change == 0); - if ( a->multiplier < +TURN_STEPS ) - a->multiplier++; - else - a->direction = up; - break; - case turn_down: - assert (a->direction_change == 0); - if ( a->multiplier > -TURN_STEPS ) - a->multiplier--; - else - a->direction = down; - break; - case up: - assert (a->multiplier == +TURN_STEPS); - assert (a->direction_change == 0); - break; - case down: - assert (a->multiplier == -TURN_STEPS); - assert (a->direction_change == 0); - break; - default: - fprintf ( stderr, "\n\r*** Bug! ***\n"); - break; - } - - a->amplitude *= 1.L + a->delta_amplitude * a->multiplier; - return a->amplitude; -} - -long double amplitude ( const amplitude_t* const a ) -{ - return a->amplitude / 32767.; -} - -int change_direction ( amplitude_t* const a, direction_t new_direction ) -{ - switch ( new_direction ) { - case up: - if (a->direction == down) { - a->direction = still_down; - } else { - fprintf ( stderr, "Direction not down, so ignored\n" ); - return -1; - } - break; - case down: - if (a->direction == up) { - a->direction = still_up; - } else { - fprintf ( stderr, "Direction not up, so ignored\n" ); - return -1; - } - break; - case change: - switch ( a->direction ) { - case up: - a->direction = still_up; - break; - case down: - a->direction = still_down; - break; - default: - fprintf ( stderr, "Direction still changing, so ignored\n" ); - return -1; - } - break; - - default: - fprintf ( stderr, "Direction unknown, so ignored\n" ); - return -1; - } - - a->direction_change = 1 + rand () * (a->sample_freq * DELAY_UNTIL_XCHG / RAND_MAX); - return 0; -} - -int close_amplifier ( amplitude_t* const a ) -{ - return 0; -} - - -double ATH ( double freq ) -{ - static float tab [] = { - /* 10.0 */ 96.69, 96.69, 96.26, 95.12, - /* 12.6 */ 93.53, 91.13, 88.82, 86.76, - /* 15.8 */ 84.69, 82.43, 79.97, 77.48, - /* 20.0 */ 74.92, 72.39, 70.00, 67.62, - /* 25.1 */ 65.29, 63.02, 60.84, 59.00, - /* 31.6 */ 57.17, 55.34, 53.51, 51.67, - /* 39.8 */ 50.04, 48.12, 46.38, 44.66, - /* 50.1 */ 43.10, 41.73, 40.50, 39.22, - /* 63.1 */ 37.23, 35.77, 34.51, 32.81, - /* 79.4 */ 31.32, 30.36, 29.02, 27.60, - /* 100.0 */ 26.58, 25.91, 24.41, 23.01, - /* 125.9 */ 22.12, 21.25, 20.18, 19.00, - /* 158.5 */ 17.70, 16.82, 15.94, 15.12, - /* 199.5 */ 14.30, 13.41, 12.60, 11.98, - /* 251.2 */ 11.36, 10.57, 9.98, 9.43, - /* 316.2 */ 8.87, 8.46, 7.44, 7.12, - /* 398.1 */ 6.93, 6.68, 6.37, 6.06, - /* 501.2 */ 5.80, 5.55, 5.29, 5.02, - /* 631.0 */ 4.75, 4.48, 4.22, 3.98, - /* 794.3 */ 3.75, 3.51, 3.27, 3.22, - /* 1000.0 */ 3.12, 3.01, 2.91, 2.68, - /* 1258.9 */ 2.46, 2.15, 1.82, 1.46, - /* 1584.9 */ 1.07, 0.61, 0.13, -0.35, - /* 1995.3 */ -0.96, -1.56, -1.79, -2.35, - /* 2511.9 */ -2.95, -3.50, -4.01, -4.21, - /* 3162.3 */ -4.46, -4.99, -5.32, -5.35, - /* 3981.1 */ -5.13, -4.76, -4.31, -3.13, - /* 5011.9 */ -1.79, 0.08, 2.03, 4.03, - /* 6309.6 */ 5.80, 7.36, 8.81, 10.22, - /* 7943.3 */ 11.54, 12.51, 13.48, 14.21, - /* 10000.0 */ 14.79, 13.99, 12.85, 11.93, - /* 12589.3 */ 12.87, 15.19, 19.14, 23.69, - /* 15848.9 */ 33.52, 48.65, 59.42, 61.77, - /* 19952.6 */ 63.85, 66.04, 68.33, 70.09, - /* 25118.9 */ 70.66, 71.27, 71.91, 72.60, - }; - double freq_log; - double dB; - unsigned index; - - if ( freq < 10. ) freq = 10.; - if ( freq > 25000. ) freq = 25000.; - - freq_log = 40. * log10 (0.1 * freq); /* 4 steps per third, starting at 10 Hz */ - index = (unsigned) freq_log; - assert ( index < sizeof(tab)/sizeof(*tab) ); - dB = tab [index] * (1 + index - freq_log) + tab [index+1] * (freq_log - index); - return pow ( 10., 0.05*dB ); -} - -/****************************************************************************************************** - * keyboard stuff - ******************************************************************************************************/ - -typedef struct { - int init; - struct termios stored_setting; - struct termios current_setting; -} keyboard_t; - -static keyboard_t* __k; - -/* Restore term-settings to those saved when term_init was called */ - -static void term_restore (void) -{ - tcsetattr ( 0, TCSANOW, &(__k->stored_setting) ); -} /* term_restore */ - -/* Clean up terminal; called on exit */ - -static void term_exit ( int sig ) -{ - term_restore (); -} /* term_exit */ - -/* Will be called when ctrl-Z is pressed, this correctly handles the terminal */ - -static void term_ctrl_z ( int sig ) -{ - signal ( SIGTSTP, term_ctrl_z ); - term_restore (); - kill ( getpid(), SIGSTOP ); -} /* term_ctrl_z */ - -/* Will be called when application is continued after having been stopped */ - -static void term_cont ( int sig ) -{ - signal ( SIGCONT, term_cont ); - tcsetattr ( 0, TCSANOW, &(__k->current_setting) ); -} /* term_cont() */ - -int open_keyboard ( keyboard_t* const k ) -{ - __k = k; - tcgetattr ( 0, &(k->stored_setting) ); - tcgetattr ( 0, &(k->current_setting) ); - - signal ( SIGINT, term_exit ); /* We _must_ clean up when we exit */ - signal ( SIGQUIT, term_exit ); - signal ( SIGTSTP, term_ctrl_z ); /* Ctrl-Z must also be handled */ - signal ( SIGCONT, term_cont ); -// atexit ( term_exit ); - - /* One or more characters are sufficient to cause a read to return */ - cfmakeraw ( &(k->current_setting) ); - k->current_setting.c_oflag |= ONLCR | OPOST; /* enables NL => CRLF on output */ - - tcsetattr ( 0, TCSANOW, &(k->current_setting) ); - return 0; -} - -int getchar_keyboard ( keyboard_t* const k ) -{ - struct timeval t; - fd_set fd [1]; - int ret; - unsigned char c; - - FD_SET (0, fd); - t.tv_sec = 0; - t.tv_usec = 0; - - ret = select ( 1, fd, NULL, NULL, &t ); - - switch ( ret ) { - case 0: - return -1; - case 1: - ret = read (0, &c, 1); - return ret == 1 ? c : -1; - default: - return -2; - } -} - -int close_keyboard ( keyboard_t* const k ) -{ - term_restore (); - return 0; -} - - -/****************************************************************************************************** - * reporting stuff - ******************************************************************************************************/ - -int report_open ( void ) -{ - static char buff [32767]; - fflush ( stdout ); - setvbuf ( stdout, buff, _IOFBF, sizeof(buff) ); - return 0; -} - -int report ( const generator_t* const g, const amplitude_t* const a ) -{ - static double last_freq = -1.; - static double last_level = -1.; - double freq; - double level; - - freq = frequency (g); - level = 20. * log10 (amplitude (a) * ATH (freq) ) + 80.; - - if ( last_freq >= 0 ) - printf ( "%11.3f %8.2f\n", sqrt (freq*last_freq), 0.5 * (level+last_level) ); - printf ( "# %9.3f %8.2f\n", freq, level ); - - fflush ( stdout ); - - last_freq = freq; - last_level = level; - return 0; -} - -int report_close ( void ) -{ - printf ( "%%%%\n\n" ); - fflush ( stdout ); - close ( dup ( fileno(stdout) ) ); - setvbuf ( stdout, NULL, _IONBF, 0 ); - return 0; -} - - -/****************************************************************************************************** - * main stuff - ******************************************************************************************************/ - -typedef enum { - left = 0, - right = 1, - phase0 = 2, - both = 2, - phase90 = 3, - phase180 = 4, - phasemod = 5 -} earmode_t; - -static long double scalar ( const double* a, const double* b ) -{ - return a[ 0]*b[ 0] + a[ 1]*b[ 1] + a[ 2]*b[ 2] + a[ 3]*b[ 3] - +a[ 4]*b[ 4] + a[ 5]*b[ 5] + a[ 6]*b[ 6] + a[ 7]*b[ 7] - +a[ 8]*b[ 8] + a[ 9]*b[ 9] + a[10]*b[10] + a[11]*b[11] - +a[12]*b[12] + a[13]*b[13] + a[14]*b[14] + a[15]*b[15]; -} - -int experiment ( generator_t* const g, - amplitude_t* const a, - keyboard_t* const k, - soundcard_t* const s, - earmode_t earmode ) -{ - long i; - int j; - stereo_t samples [512]; - static double quant_errors [2] [16]; - long double val; - double ampl; - long ival; - - fprintf ( stderr, "\r+++ up +++" ); - for ( i = 0; i < g->duration; i += sizeof(samples)/sizeof(*samples) ) { - fprintf ( stderr, "%3lu%%\b\b\b\b", i*100lu/g->duration ); - - for (j = 0; j < sizeof(samples)/sizeof(*samples); j++ ) { - ampl = iterate_amplifier (a) * ATH (frequency (g)); - val = ampl * iterate_generator (g); - ival = (long) floor ( val + 0.5 + scalar (quant_errors[0], s->dither) ); - - if ( ival != (sample_t) ival ) { - report (g, a); - fprintf ( stderr, "\rOverrun \n\n" ); - return -1; - } - memmove ( & quant_errors [0] [1], & quant_errors [0] [0], - sizeof(quant_errors[0]) - sizeof(quant_errors[0][0]) ); - quant_errors [0] [0] = val - ival; - switch ( earmode ) { - case both: - samples [j] [0] = samples [j] [1] = ival; - break; - case left: - samples [j] [0] = ival; - samples [j] [1] = 0; - break; - case right: - samples [j] [0] = 0; - samples [j] [1] = ival; - break; - case phase180: - samples [j] [0] = ival == -32768 ? 32767 : -ival; - samples [j] [1] = +ival; - break; - case phase90: - samples [j] [0] = ival; - val = ampl * get_cosine (g); - ival = (long) floor ( val + 0.5 + scalar (quant_errors[1], s->dither) ); - if ( ival != (sample_t) ival ) { - report (g, a); - fprintf ( stderr, "\rOverrun \n\n" ); - return -1; - } - memmove ( & quant_errors [1] [1], & quant_errors [1] [0], - sizeof(quant_errors[1]) - sizeof(quant_errors[1][0]) ); - quant_errors [1] [0] = val - ival; - samples [j] [1] = ival; - break; - default: - assert (0); - return -1; - } - } - play_soundcard ( s, samples, sizeof(samples)/sizeof(*samples) ); - if ( amplitude (a) * ATH (frequency (g)) <= 3.16227766e-6 ) { - report (g, a); - fprintf ( stderr, "\rUnderrun \n\n" ); - return -1; - } - - switch ( getchar_keyboard (k) ) { - case '+': - fprintf ( stderr, "\r+++ up +++" ); - report (g, a); - change_direction ( a, up ); - break; - case '-': - fprintf ( stderr, "\r--- down ---" ); - report (g, a); - change_direction ( a, down ); - break; - case '\r': - case '\n': - fprintf ( stderr, "\r** change **" ); - report (g, a); - change_direction ( a, change ); - break; - case 'C'&0x1F: - case 'q': - case 'Q': - case 'x': - case 'X': - fprintf ( stderr, "\rBreak \n\n" ); - fflush ( stderr ); - return -1; - default: - fprintf ( stderr, "\a" ); - break; - case -1: - break; - } - } - - fprintf ( stderr, "\rReady \n\n" ); - return 0; -} - -static void usage ( void ) -{ - static const char help[] = - "'Absolute Threshold of Hearing' -- Version 0.07 (C) Frank Klemm 2000\n" - "\n" - "usage:\n" - " ath type minfreq maxfreq duration ampl_speed [start_level [earmode] > reportfile\n" - "\n" - " type: linear, logarithm, square, cubic, erb, recip\n" - " minfreq: initial frequency [Hz]\n" - " maxfreq: end frequency [Hz]\n" - " duration: duration of the experiment [s]\n" - " ampl_speed: amplitude slope speed [phon/s]\n" - " start_level: absolute level at startup [0...1]\n" - " earmode: left, right, both, phase90, phase180\n" - "\n" - "example:\n" - " ath erb 700 22000 600 3 0.0001 > result1\n" - " ath erb 1400 16 360 3 0.0001 > result2\n" - "\n" - "handling:\n" - " press '-' once when you start hearing a tone\n" - " press '+' once when you stop hearing a tone\n" - " press 'q' to early leave the program\n" - " on errors the pressed key is ignored\n"; - - fprintf ( stderr, "%s\n", help ); -} - -int main ( int argc, char** argv ) -{ - generator_t g; - amplitude_t a; - soundcard_t s; - keyboard_t k; - genmode_t genmode; - earmode_t earmode; - - if ( argc == 1 ) { - usage (); - system ( "./ath erb 700 22000 600 3 0.0001 > result1" ); - system ( "./ath erb 1400 16 360 3 0.0001 > result2" ); - system ( "xmgr result1 result2 &> /dev/null &" ); - return 0; - } - - if ( argc < 6 ) { - usage (); - return 1; - } - - if ( 0 == strncmp ( argv[1], "li" , 2) ) genmode = linear; - else if ( 0 == strncmp ( argv[1], "lo" , 2) ) genmode = logarithm; - else if ( 0 == strncmp ( argv[1], "sq" , 2) ) genmode = square; - else if ( 0 == strncmp ( argv[1], "cu" , 2) ) genmode = cubic; - else if ( 0 == strncmp ( argv[1], "er" , 2) ) genmode = erb; - else if ( 0 == strncmp ( argv[1], "re" , 2) ) genmode = recip; - else { - usage (); - return 1; - } - - if ( argc < 8 ) earmode = both; - else if ( 0 == strncmp ( argv[7], "le" , 2) ) earmode = left; - else if ( 0 == strncmp ( argv[7], "ri" , 2) ) earmode = right; - else if ( 0 == strncmp ( argv[7], "bo" , 2) ) earmode = both; - else if ( 0 == strncmp ( argv[7], "phase9" , 6) ) earmode = phase90; - else if ( 0 == strncmp ( argv[7], "phase1" , 6) ) earmode = phase180; - else { - usage (); - return 1; - } - - - open_soundcard ( &s, AUDIO_DEVICE, sizeof(stereo_t)/sizeof(sample_t), CHAR_BIT*sizeof(sample_t), 96000.0 ); - open_generator ( &g, &s, genmode, atof (argv[4]), atof (argv[2]), atof (argv[3]) ); - open_amplifier ( &a, &s, argc > 6 ? atof (argv[6]) : 0.0001, atof (argv[5]) ); - open_keyboard ( &k ); - - report_open ( ); - experiment ( &g, &a, &k, &s, earmode ); - report_close ( ); - - close_keyboard ( &k ); - close_amplifier( &a ); - close_generator( &g ); - close_soundcard( &s ); - - return 0; -} - -/* end of ath.c */ - - diff --git a/platform/win32/msvc/external/lame/misc/auenc b/platform/win32/msvc/external/lame/misc/auenc deleted file mode 100644 index 50d9c81a43d..00000000000 --- a/platform/win32/msvc/external/lame/misc/auenc +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/sh -# -# auenc -- version 0.1 -# -# A wrapper for lame to encode multiple files. By default, a .wav -# extension is removed and replaced by .mp3 . -# -# (C) 1999 Gerhard Wesp <gwesp@cosy.sbg.ac.at> under the GPL. - -# set the variables below according to your taste -LAME=lame -LAME_OPTS="-S -h -v -V 0 -b 256" # high quality, silent operation - -if [ $# -lt 1 ] ; then - exec 1>&2 - cat << _EOF_ -usage: $0 [options] file... -options: - -d --delete: delete original file after successful encoding -_EOF_ - exit 1 -fi - -unset DELETE -case "$1" in - -d | --delete ) DELETE=1 ; shift ;; -esac - -for f -do - $LAME $LAME_OPTS "$f" `basename "$f" .wav`.mp3 || { - exec 1>&2 - echo "encoding of $f failed, aborting..." - exit 1 - } - if [ -n "$DELETE" ] ; then - rm -f "$f" - fi -done diff --git a/platform/win32/msvc/external/lame/misc/depcomp b/platform/win32/msvc/external/lame/misc/depcomp deleted file mode 100644 index df8eea7e4ce..00000000000 --- a/platform/win32/msvc/external/lame/misc/depcomp +++ /dev/null @@ -1,630 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2009-04-28.21; # UTC - -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free -# Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. - -case $1 in - '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: depcomp [--help] [--version] PROGRAM [ARGS] - -Run PROGRAMS ARGS to compile a file, generating dependencies -as side-effects. - -Environment variables: - depmode Dependency tracking mode. - source Source file read by `PROGRAMS ARGS'. - object Object file output by `PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. - tmpdepfile Temporary file to use when outputing dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to <bug-automake@gnu.org>. -EOF - exit $? - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit $? - ;; -esac - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi - -# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -depfile=${depfile-`echo "$object" | - sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -cygpath_u="cygpath -u -f -" -if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u="sed s,\\\\\\\\,/,g" - depmode=msvisualcpp -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. -## Unfortunately, FreeBSD c89 acceptance of flags depends upon -## the command line argument order; so add the flags where they -## appear in depend2.am. Note that the slowdown incurred here -## affects only configure: in makefiles, %FASTDEP% shortcuts this. - for arg - do - case $arg in - -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; - *) set fnord "$@" "$arg" ;; - esac - shift # fnord - shift # $arg - done - "$@" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the `deleted header file' problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. - tr ' ' ' -' < "$tmpdepfile" | -## Some versions of gcc put a space before the `:'. On the theory -## that the space means something, we add a space to the output as -## well. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" - - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like `#:fec' to the end of the - # dependency line. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr ' -' ' ' >> "$depfile" - echo >> "$depfile" - - # The second pass generates a dummy entry for each header file. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts `$object:' at the - # start of each line; $object doesn't have directory information. - # Version 6 uses the directory in both cases. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.u - tmpdepfile2=$base.u - tmpdepfile3=$dir.libs/$base.u - "$@" -Wc,-M - else - tmpdepfile1=$dir$base.u - tmpdepfile2=$dir$base.u - tmpdepfile3=$dir$base.u - "$@" -M - fi - stat=$? - - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - # Each line is of the form `foo.o: dependent.h'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -icc) - # Intel's C compiler understands `-MD -MF file'. However on - # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want: - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using \ : - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form `foo.o: dependent.h', - # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | - sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp2) - # The "hp" stanza above does not work with aCC (C++) and HP's ia64 - # compilers, which have integrated preprocessors. The correct option - # to use with these is +Maked; it writes dependencies to a file named - # 'foo.d', which lands next to the object file, wherever that - # happens to be. - # Much of this is similar to the tru64 case; see comments there. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir.libs/$base.d - "$@" -Wc,+Maked - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - "$@" +Maked - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" - # Add `dependent.h:' lines. - sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" "$tmpdepfile2" - ;; - -tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in `foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - # With Tru64 cc, shared objects can also be used to make a - # static library. This mechanism is used in libtool 1.4 series to - # handle both shared and static libraries in a single compilation. - # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. - # - # With libtool 1.5 this exception was removed, and libtool now - # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 - tmpdepfile2=$dir$base.o.d # libtool 1.5 - tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 - tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.o.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - tmpdepfile4=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for `:' - # in the target name. This is to cope with DOS-style filenames: - # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. - "$@" $dashmflag | - sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - tr ' ' ' -' < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - "$@" || exit $? - # Remove any Libtool call - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no eat=no - for arg - do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - if test $eat = yes; then - eat=no - continue - fi - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - # Strip any option that makedepend may not understand. Remove - # the object too, otherwise makedepend will parse it as a source file. - -arch) - eat=yes ;; - -*|$object) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done - obj_suffix=`echo "$object" | sed 's/^.*\././'` - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' ' -' | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - "$@" -E | - sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - IFS=" " - for arg - do - case "$arg" in - -o) - shift - ;; - $object) - shift - ;; - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E 2>/dev/null | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" - echo " " >> "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvcmsys) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/platform/win32/msvc/external/lame/misc/lame4dos.bat b/platform/win32/msvc/external/lame/misc/lame4dos.bat deleted file mode 100644 index b15cb3e6922..00000000000 --- a/platform/win32/msvc/external/lame/misc/lame4dos.bat +++ /dev/null @@ -1,41 +0,0 @@ -@echo off -rem --------------------------------------------- -rem PURPOSE: -rem - put this Batch-Command on your Desktop, -rem so you can drag and drop wave files on it -rem and LAME will encode them to mp3 format. -rem - put this Batch-Command in a place mentioned -rem in your PATH environment, start the DOS-BOX -rem and change to a directory where your wave -rem files are located. the following line will -rem encode all your wave files to mp3 -rem "lame.bat *.wav" -rem --------------------------------------------- -rem C2000 Robert Hegemann -rem --------------------------------------------- -rem Changes to support long filenames using 4DOS -rem by Alexander Stumpf <dropdachalupa@gmx.net> -rem --------------------------------------------- -rem please set LAME and LAMEOPTS -rem LAME - where the executeable is -rem OPTS - options you like LAME to use - - set LAME=c:\progra~1\sound&~1\lame\lame.exe - set OPTS=-h --lowpass-width 2 --lowpass 20.5 -b 112 --abr 180 - -rem --------------------------------------------- - - set thecmd=%LAME% %OPTS% - for %%f in (%&) do (%thecmd% %@sfn[%%f]^(ren %@sfn[%%f].mp3 "%@lfn[%%f].mp_">NUL)) - ren *.mp3.mp_ *.new.mp3 >& NUL - ren *.wav.mp_ *.mp3 >& NUL - goto endmark -:errormark - echo. - echo. - echo ERROR processing %1 - echo. -:endmark -rem -rem finished -rem diff --git a/platform/win32/msvc/external/lame/misc/lameGUI.html b/platform/win32/msvc/external/lame/misc/lameGUI.html deleted file mode 100644 index db90fd022d7..00000000000 --- a/platform/win32/msvc/external/lame/misc/lameGUI.html +++ /dev/null @@ -1,403 +0,0 @@ -<html> - -<head> -<meta http-equiv="Content-Type" -content="text/html; charset=iso-8859-1"> -<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0"> -<title>Lame - - - - - - - -
-

LAME Frontend

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Fixed Bitrate 
bitrate (-b) high quality (-h)
 fast (no noise shaping)
  
Variable Bitrate 
variable - bitrate (-v)VBR quality (-V)
maximum bitrate (-B) enforce min. bitrate (-F)
  
General 
mode (-m) disable all filters (-k)
copyrighted (-c)non-original (-o)
  
ID3-Tag 
title (--tt) artist (--ta)
album (--tl) year (--ty) track (--tn)
comment (--tc) genre (--tg)
   
-
- - - - - - -
[LAME HELP] [LAME Readme] [LAME History] [LAME - Homepage] 
- - diff --git a/platform/win32/msvc/external/lame/misc/lameid3.pl b/platform/win32/msvc/external/lame/misc/lameid3.pl deleted file mode 100644 index 53528779fd0..00000000000 --- a/platform/win32/msvc/external/lame/misc/lameid3.pl +++ /dev/null @@ -1,55 +0,0 @@ -# -# From: Per Bolmstedt -# -# AC> If someone has scripts that read input ID3 tags and convert -# AC> them to args for lame (which then encodes the tags into the -# AC> output files), let me know, too! -# -# This is easy peasy using Perl. Especially using Chris Nandor's excellent -# MP3::Info package (available on CPAN). Here's a program I just wrote that -# I think does what you want. Invoke it with " [options]" -# (where the options can include an output filename), like for example: -# -# lameid3.pl HQ.mp3 LQ.mp3 -fv -# -# (Note how the syntax differs from that of Lame's.) The program will -# extract ID3 tags from the input file and invoke Lame with arguments for -# including them. (This program has not undergone any real testing..) - -use MP3::Info; -use strict; - -my %flds = ( - TITLE => 'tt', - ARTIST => 'ta', - ALBUM => 'tl', - YEAR => 'ty', - COMMENT => 'tc', - GENRE => 'tg', - TRACKNUM => 'tn' - ); - -my $f = shift @ARGV; -my $s = "lame ${f} " . &makeid3args( $f ) . join ' ', @ARGV; -print STDERR "[${s}]\n"; -system( $s ); - -sub makeid3args( $ ) -{ - my $s; - if ( my $tag = get_mp3tag( @_->[ 0 ] ) ) - { - for ( keys %flds ) - { - if ( $tag->{ $_ } ) - { - $s .= sprintf( - "--%s \"%s\" ", - %flds->{ $_ }, - $tag->{ $_ } ); - } - } - } - return $s || ""; -} - diff --git a/platform/win32/msvc/external/lame/misc/mk_mp3.sh b/platform/win32/msvc/external/lame/misc/mk_mp3.sh deleted file mode 100644 index 36b7b1b020f..00000000000 --- a/platform/win32/msvc/external/lame/misc/mk_mp3.sh +++ /dev/null @@ -1,170 +0,0 @@ -### (c)2000-2011 Robert Hegemann -### -### ///-/ -### -### SRC_ROOT : where the CD are located -### DST_ROOT : where newly encoded tracks should go -### DONE_ROOT : where verified encoded tracks are located -### LAME_EXE : points to program -### LAME_OPT : what options to use -################################################################ -_V=2 -SRC_ROOT=/windows/W/CD -DST_ROOT=/windows/Z/mp3v${_V}wg -DONE_ROOT=/windows/Z/mp3v${_V}wg -LAME_EXE=lame-399 -LAME_OPT="-V${_V} --quiet --noreplaygain --id3v2-only" - -SKIP_DONE_FOLDER_EXISTS=1 -SKIP_DEST_FOLDER_EXISTS=1 -SCAN_ALBUM_GAIN_ONLY=0 - -case "$0" in - mk_album_gain.sh) SCAN_ALBUM_GAIN_ONLY=1;; -esac -case "$1" in - --scan-gain-only) SCAN_ALBUM_GAIN_ONLY=1;; -esac -if [ $SCAN_ALBUM_GAIN_ONLY = 1 ] -then - SKIP_DONE_FOLDER_EXISTS=0 - SKIP_DEST_FOLDER_EXISTS=0 -fi - -if (test -e "${SRC_ROOT}") -then - if test -e "${DST_ROOT}" - then - : - else - mkdir "${DST_ROOT}" - fi - - for _artist in "${SRC_ROOT}"/* - do - _ARTIST=$(basename "${_artist}") - DST_ARTIST=${DST_ROOT}/${_ARTIST} - DS2_ARTIST=${DONE_ROOT}/${_ARTIST} - echo "${_ARTIST}" - - VARIOUS_ARTISTS_MODE=0 - case "${_ARTIST}" in - "Various" | "Various Artists" ) - VARIOUS_ARTISTS_MODE=1 - ID3_ALBUM_ARTIST="Various Artists" - ;; - "Musik Express" ) - VARIOUS_ARTISTS_MODE=2 - ID3_ALBUM_ARTIST="Various (ME)" - ;; - *) - VARIOUS_ARTISTS_MODE=0 - ID3_ALBUM_ARTIST=${_ARTIST} - ;; - esac - - for _cd in "${_artist}"/* - do - _CD=$(basename "${_cd}") - DST_CD=${DST_ARTIST}/${_CD} - DS2_CD=${DS2_ARTIST}/${_CD} - ID3_YR=`echo "${_CD}"|cut -b 1-4` - ID3_CD=`echo "${_CD}"|cut -b 6-` - if [ $SKIP_DONE_FOLDER_EXISTS = 1 ] - then - if test -e "${DS2_CD}" - then - continue - fi - fi - if [ $SKIP_DEST_FOLDER_EXISTS = 1 ] - then - if test -e "${DST_CD}" - then - continue - fi - fi - echo "${_ARTIST} / ${_CD}" - - ALBUM_GAIN="1.0" - if test -e "${_cd}/album_gain_scale.txt" - then - ALBUM_GAIN=`cat "${_cd}/album_gain_scale.txt"` - elif test -e "${DS2_CD}/album_gain_scale.txt" - then - ALBUM_GAIN=`cat "${DS2_CD}/album_gain_scale.txt"` - elif test -e "${DST_CD}/album_gain_scale.txt" - then - ALBUM_GAIN=`cat "${DST_CD}/album_gain_scale.txt"` - else - unset ALBUM_GAIN - fi - if [ "${ALBUM_GAIN}" = "" ] - then - if test -e "${DST_ARTIST}" - then - : - else - mkdir "${DST_ARTIST}" - fi - if test -e "${DST_CD}" - then - : - else - mkdir "${DST_CD}" - fi - ALBUM_GAIN=`wavegain -x -a "${_cd}"/ 2>/dev/null` - echo ${ALBUM_GAIN} > "${DST_CD}/album_gain_scale.txt" - fi - if [ $SCAN_ALBUM_GAIN_ONLY = 1 ] - then - continue - fi - - for _song in "${_cd}"/*.wav - do - _SONG=$(basename "${_song}" .wav) - DST_SONG=${DST_CD}/$(basename "${_song}" .wav).mp3 - if test -e "${DST_SONG}" - then - : - else - if test -e "${DST_ARTIST}" - then - : - else - mkdir "${DST_ARTIST}" - fi - if test -e "${DST_CD}" - then - : - else - mkdir "${DST_CD}" - fi - ID3_TRACK=`echo "${_SONG}"|cut -b 1-2` - if [ $VARIOUS_ARTISTS_MODE = 0 ] - then - ID3_TITLE=`echo "${_SONG}"|cut -b 4-` - ID3_TRACK_ARTIST=${_ARTIST} - else - ID3_TITLE=`echo "${_SONG% - *}"|cut -b 4-` - ID3_TRACK_ARTIST=`echo "${_SONG#* - }"` - fi - ${LAME_EXE} ${LAME_OPT} \ - --scale ${ALBUM_GAIN} \ - --ta "${ID3_TRACK_ARTIST}" \ - --tl "${ID3_CD}" \ - --ty "${ID3_YR}" \ - --tt "${ID3_TITLE}" \ - --tn "${ID3_TRACK}" \ - --tv "TXXX=ALBUM ARTIST=${ID3_ALBUM_ARTIST}" \ - --tv "TXXX=LAME SCALE=${ALBUM_GAIN}" \ - "${_song}" "${DST_SONG}" & - fi - done - wait - done - done -else - echo Quellverzeichnis ${SRC_ROOT} existiert nicht. -fi diff --git a/platform/win32/msvc/external/lame/misc/mlame b/platform/win32/msvc/external/lame/misc/mlame deleted file mode 100644 index 23beab5f79e..00000000000 --- a/platform/win32/msvc/external/lame/misc/mlame +++ /dev/null @@ -1,195 +0,0 @@ -#!/bin/sh - -############################################################################ -# -# Run the LAME encoder on multiple files, with option to delete .wav files -# after encoding. "mlame -?" will give instructions. -# -# Robert Hegemann -# modified on request: Frank Klemm <pfk@uni-jena.de> -# -############################################################################ - -# encoder path to use -mp3coder="lame" -mp3analyzer="mlame_corr" - -# default options to use -options_low="-h -d -mj -b 128" -options_high="-h -d -mj -V 1 -b 112 -B 320" -options=$options_high - -# remove source? -removesource=false - -# force overwrite of destination -testoverwrite=true - -# waiting after error report n seconds -errordelay=1 - -helptext="\n\ -This script runs the LAME mp3 encoder on multiple files: \n\n\ - $0 [options] <file 1> ... <file n>\n\ -\n\ - options:\n\ - -? this help text\n\ - -r remove files after encoding\n\ - -f force overwrite of destination if exists\n\ - -l low quality settings\n\ - -h high quality settings\n\ - -o \"<lame options>\" overrides script default options -\n\ - example:\n\ - $0 -r -f -o \"-v -V 0 -b 112\" a*.wav z*.aif g*.mp?\n\ -\n\ -" - -# process command-line options -# this could be extended to fake the -# commandline interface of the mp3encoder - -while getopts ":o:r:h:l:f" optn; do - case $optn in - o ) options=$OPTARG # replace default options - echo New lame options are \'$options\' - ;; - r ) removesource=true - echo Removing source files after successfully converting - ;; - f ) testoverwrite=false - echo Force overwriting existing destination files - ;; - h ) options=$options_high - ;; - l ) options=$options_low - ;; - \? ) printf "$helptext" - sleep $errordelay - exit 1 - ;; - esac -done -shift $(($OPTIND - 1)) - -# no files remaining? - -if [ "$1" = "" ]; then - printf "$helptext" - sleep $errordelay - exit 1 -fi - -# process input-files - -for src in "$@"; do - - case $src in - *[.][wW][aA][vV] ) - dst=${src%[.][wW][aA][vV]}.mp3 - if [ -f "$src" ]; then - if [ $testoverwrite = true -a -f "$dst" ]; then - echo \'$dst\' already exists, skipping - sleep $errordelay - elif $mp3coder $options `$mp3analyzer "$src"` "$src" "$dst"; then - if [ $removesource = true ]; then - rm -f "$src" - fi - else - echo converting of \'$src\' to \'$dst\' failed - sleep $errordelay - fi - else - echo No source file \'$src\' found. - sleep $errordelay - fi - ;; - - *[.][aA][iI][fF] ) - dst=${src%[.][aA][iI][fF]}.mp3 - if [ -f "$src" ]; then - if [ $testoverwrite = true -a -f "$dst" ]; then - echo \'$dst\' already exists, skipping - sleep $errordelay - elif $mp3coder $options "$src" "$dst"; then - if [ $removesource = true ]; then - rm -f "$src" - fi - else - echo converting of \'$src\' to \'$dst\' failed - sleep $errordelay - fi - else - echo No source file \'$src\' found. - sleep $errordelay - fi - ;; - - *[.][aA][iI][fF][fF] ) - dst=${src%[.][aA][iI][fF][fF]}.mp3 - if [ -f "$src" ]; then - if [ $testoverwrite = true -a -f "$dst" ]; then - echo \'$dst\' already exists, skipping - sleep $errordelay - elif $mp3coder $options "$src" "$dst"; then - if [ $removesource = true ]; then - rm -f "$src" - fi - else - echo converting of \'$src\' to \'$dst\' failed - sleep $errordelay - fi - else - echo No source file \'$src\' found. - sleep $errordelay - fi - ;; - - *[.][mM][pP][gG12] ) - dst=${src%[.][mM][pP][gG12]}.mp3 - if [ -f "$src" ]; then - if [ $testoverwrite = true -a -f "$dst" ]; then - echo \'$dst\' already exists, skipping - sleep $errordelay - elif $mp3coder $options "$src" "$dst"; then - if [ $removesource = true ]; then - rm -f "$src" - fi - else - echo converting of \'$src\' to \'$dst\' failed - sleep $errordelay - fi - else - echo No source file \'$src\' found. - sleep $errordelay - fi - ;; - - *[.][mM][pP]3 ) - dst=${src%[.][mM][pP]3}-new-converted-file.${src##*.} - if [ -f "$src" ]; then - if [ $testoverwrite = true -a -f "$dst" ]; then - echo \'$dst\' already exists, skipping - sleep $errordelay - elif $mp3coder $options "$src" "$dst"; then - if [ $removesource = true ]; then - mv -f "$dst" "$src" - fi - else - echo converting of \'$src\' to \'$dst\' failed - sleep $errordelay - fi - else - echo No source file \'$src\' found. - sleep $errordelay - fi - ;; - - * ) # the rest - echo warning: File extention \'.${src##*.}\' not supported - sleep $errordelay - ;; - - esac - -done diff --git a/platform/win32/msvc/external/lame/misc/mlame_corr.c b/platform/win32/msvc/external/lame/misc/mlame_corr.c deleted file mode 100644 index 4305b632221..00000000000 --- a/platform/win32/msvc/external/lame/misc/mlame_corr.c +++ /dev/null @@ -1,220 +0,0 @@ -/* - Bug: - - runs only on little endian machines for WAV files - - Not all WAV files are recognized - */ - -#include <stdio.h> -#include <unistd.h> -#include <math.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <memory.h> - -typedef signed short stereo [2]; -typedef signed short mono; -typedef struct { - unsigned long long n; - long double x; - long double x2; - long double y; - long double y2; - long double xy; -} korr_t; - -void analyze_stereo ( const stereo* p, size_t len, korr_t* k ) -{ - long double _x = 0, _x2 = 0, _y = 0, _y2 = 0, _xy = 0; - double t1; - double t2; - - k -> n += len; - - for ( ; len--; p++ ) { - _x += (t1 = (*p)[0]); _x2 += t1 * t1; - _y += (t2 = (*p)[1]); _y2 += t2 * t2; - _xy += t1 * t2; - } - - k -> x += _x ; - k -> x2 += _x2; - k -> y += _y ; - k -> y2 += _y2; - k -> xy += _xy; -} - -void analyze_dstereo ( const stereo* p, size_t len, korr_t* k ) -{ - static double l0 = 0; - static double l1 = 0; - long double _x = 0, _x2 = 0, _y = 0, _y2 = 0, _xy = 0; - double t1; - double t2; - - k -> n += len; - - for ( ; len--; p++ ) { - _x += (t1 = (*p)[0] - l0); _x2 += t1 * t1; - _y += (t2 = (*p)[1] - l1); _y2 += t2 * t2; - _xy += t1 * t2; - l0 = (*p)[0]; - l1 = (*p)[1]; - } - - k -> x += _x ; - k -> x2 += _x2; - k -> y += _y ; - k -> y2 += _y2; - k -> xy += _xy; -} - - -void analyze_mono ( const mono* p, size_t len, korr_t* k ) -{ - long double _x = 0, _x2 = 0; - double t1; - - k -> n += len; - - for ( ; len--; p++ ) { - _x += (t1 = (*p)); _x2 += t1 * t1; - } - - k -> x += _x ; - k -> x2 += _x2; - k -> y += _x ; - k -> y2 += _x2; - k -> xy += _x2; -} - -void analyze_dmono ( const mono* p, size_t len, korr_t* k ) -{ - static double l0 = 0; - long double _x = 0, _x2 = 0; - double t1; - - k -> n += len; - - for ( ; len--; p++ ) { - _x += (t1 = (*p) - l0); _x2 += t1 * t1; - l0 = *p; - } - - k -> x += _x ; - k -> x2 += _x2; - k -> y += _x ; - k -> y2 += _x2; - k -> xy += _x2; -} - -int sgn ( long double x ) -{ - if ( x > 0 ) return +1; - if ( x < 0 ) return -1; - return 0; -} - -int report ( const korr_t* k ) -{ - long double scale = sqrt ( 1.e5 / (1<<29) ); // Sine Full Scale is +10 dB, 7327 = 100% - long double r; - long double rd; - long double sx; - long double sy; - long double x; - long double y; - long double b; - - r = (k->x2*k->n - k->x*k->x) * (k->y2*k->n - k->y*k->y); - r = r > 0.l ? (k->xy*k->n - k->x*k->y) / sqrt (r) : 1.l; - sx = k->n > 1 ? sqrt ( (k->x2 - k->x*k->x/k->n) / (k->n - 1) ) : 0.l; - sy = k->n > 1 ? sqrt ( (k->y2 - k->y*k->y/k->n) / (k->n - 1) ) : 0.l; - x = k->n > 0 ? k->x/k->n : 0.l; - y = k->n > 0 ? k->y/k->n : 0.l; - - b = atan2 ( sy, sx * sgn (r) ) * ( 8 / M_PI); - -// 6 5 4 3 2 -// _______________________________ -// |\ | /| -// 7 | \ | / | 1 -// | \ | / | -// | \ | / | -// | \ | / | -// 8 |--------------+--------------| 0 -// | / | \ | -// | / | \ | -// -7 | / | \ | -1 -// | / | \ | -// |/_____________|_____________\| -// -// -6 -5 -4 -3 -2 - - if ( r > 0.98 ) { - printf ("-mm"); // disguised mono file - return; - } - if ( fabs (b-2) > 0.666 ) { - printf ("-ms"); // low profit for joint stereo - return; - } - if ( r < 0.333 ) { - printf ("-ms"); // low profit for joint stereo - return; - } -} - -void readfile ( const char* name, int fd ) -{ - unsigned short header [22]; - stereo s [4096]; - mono m [8192]; - size_t samples; - korr_t k0; - korr_t k1; - - memset ( &k0, 0, sizeof(k0) ); - memset ( &k1, 0, sizeof(k1) ); - - read ( fd, header, sizeof(header) ); - - switch ( header[11] ) { - case 1: - printf ("-mm\n"); - break; - - case 2: - while ( ( samples = read (fd, s, sizeof(s)) ) > 0 ) { - analyze_stereo ( s, samples / sizeof (*s), &k0 ); - analyze_dstereo ( s, samples / sizeof (*s), &k1 ); - } - report (&k0); - report (&k1); - break; - - default: - fprintf ( stderr, "%u Channels not supported: %s\n", header[11], name ); - break; - } -} - -int main ( int argc, char** argv ) -{ - char* name; - int fd; - - if (argc < 2) - readfile ( "<stdin>", 0 ); - else - while ( (name = *++argv) != NULL ) { - if ( (fd = open ( name, O_RDONLY )) >= 0 ) { - readfile ( name, fd ); - close ( fd ); - } else { - fprintf ( stderr, "Can't open: %s\n", name ); - } - } - - return 0; -} diff --git a/platform/win32/msvc/external/lame/misc/mugeco.sh b/platform/win32/msvc/external/lame/misc/mugeco.sh deleted file mode 100644 index 6be2774eb06..00000000000 --- a/platform/win32/msvc/external/lame/misc/mugeco.sh +++ /dev/null @@ -1,137 +0,0 @@ -#!/bin/sh -progname=mugeco version=0.1 -programr='Alexander Leidinger' -progdate='7 Dec 2000' -progdesc='MUltiGEnerationCOding' -# NEEDS: getopt, lame -# Please have a look at the DEFAULTS section. - -# $Id: mugeco.sh,v 1.6 2000/12/08 13:47:56 aleidinger Exp $ - -usage() { -cat << EOF -** $progname v$version, $progdate ** -by $programr -$progdesc -usage: $progname [ <flags> ] -g <num> <file> - -v use builtin VBR options - -g <num> number of generations - -h help - - used - - env vars: - * LAME : alternative encoder binary - * LAMEOPT: alternative encoder options - - VBR opts: $enc_vbr_opts - - CBR opts: $enc_cbr_opts -EOF -} - -# DEFAULTS - -# if you can, use getopt(1) (c)1997 by Frodo Looijaard <frodol@dds.nl> -# it's in most modern unixen, or look at http://huizen.dds.nl/~frodol/ -: ${GETOPT=getopt} # helper program -# mktemp (optional) is also in most modern unixen (originally from OpenBSD) -: ${MKTEMP=mktemp} # helper program -: ${TMPDIR:=/tmp} # set default temp directory -: ${LAME:=lame} # path to LAME - -enc_cbr_opts="-b192 -h --lowpass 18 --lowpass-width 0" -enc_vbr_opts="--vbr-mtrh --nspsytune -v -h -d -Y -X3" -enc_opts=${LAMEOPT:-$enc_cbr_opts} -num= # default number of generations - -# DEFINE FUNCTIONS - -e() { echo "$progname: $*"; } -die() { # usage: die [ <exitcode> [ <errormessage> ] ] - trap '' 1 2 3 13 15 - exitcode=0 - [ $# -gt 0 ] && { exitcode=$1; shift; } - [ $# -gt 0 ] && e "Error: $*" >&2 - exit $exitcode -} - -# tfile() -# this function creates temporary files. 'tfile temp' will make a tempfile -# and put the path to it in the variable $temp (defaults to variable $tf) -trap 'for f in $ztfiles; do rm -f "$f"; done' 0 -trap 'trap "" 1 2 3 13 15; exit 10' 1 2 3 13 15 -unset ztfiles -tfile() { # usage: tfile <variable_name> - ztf=`$MKTEMP -q $TMPDIR/$progname.XXXXXX 2>/dev/null` # try mktemp - if [ $? -gt 0 -o -z "$ztf" ]; then # if mktemp fails, do it unsafely - ztf=$TMPDIR/$LOGNAME.$progname.$$ - [ -e "$ztf" ] && ztf= || { touch $ztf && chmod 600 $ztf; } - fi - [ "$ztf" -a -f "$ztf" ] || { echo Could not make tempfile; exit 8; } - ztfiles="$ztfiles $ztf" - eval ${1:-tf}='$ztf' -} - -# PARSE COMMAND LINE - -options="g:vh" # option string for getopt(1) -help=; [ "$1" = -h -o "$1" = -help -o "$1" = --help ] && help=yes -[ "$help" ] && { usage; die; } -$GETOPT -T >/dev/null 2>&1 -[ $? -eq 4 ] && GETOPT="$GETOPT -n $progname -s sh" #frodol's getopt? -eval set -- `$GETOPT "$options" "$@"` -[ $# -lt 1 ] && { die 9 getopt failed; } -while [ $# -gt 0 ]; do - case "$1" in - -g) num=$2; shift ;; - -v) enc_opts=$enc_cbr_opts ;; - -h) help=y ;; - --) shift; break ;; - *) usage; die 9 "invalid command line syntax!" ;; - esac - shift -done -[ "$help" ] && { usage; die; } -[ $# -eq 0 ] && { usage; die 9 no arguments; } #change or remove if desired -# sanity checking -[ "$num" ] && echo "$num"|grep -q '^[0-9]*$' && [ $num -ge 1 ] \ - || die 1 please use the -g flag with a valid number - -# MAIN PROGRAM - -# what version of lame are we using? -lame_vers=`$LAME 2>&1 | awk 'NR==1{print $3}'` - -# check filename -[ -f "$1" ] || die 2 "'$1' isn't a file" -echo "$1"|grep -qi '\.wav$' || die 2 "'$1' isn't a .wav" - -# make tempfiles -base=`echo "$1"|sed 's/\.[^.]*$//'` -dest=${base}_generation_$num.wav -[ -e "$dest" ] && die 2 "'$dest' already exists" -touch "$dest" || die 2 "couldn't create '$dest'" -TMPDIR=. tfile tmpwav -TMPDIR=. tfile tmpmp3 -cp -f "$1" "$tmpwav" - -# do the loop -start=`date` -i=1 -while [ $i -le $num ]; do - e "Working on file '$1', generation number $i..." - - $LAME $enc_opts --tc "lame $lame_vers; Generation: $i" \ - "$tmpwav" "$tmpmp3" || die 3 encoding failed - $LAME --decode --mp3input "$tmpmp3" "$tmpwav" || die 3 decoding failed - - i=`expr $i + 1` -done -end=`date` - -# save the result -ln -f "$tmpwav" "$dest" - -echo -e "Start: $start" -e "Stop : $end" - -die diff --git a/platform/win32/msvc/external/lame/misc/scalartest.c b/platform/win32/msvc/external/lame/misc/scalartest.c deleted file mode 100644 index 01680d0c36d..00000000000 --- a/platform/win32/msvc/external/lame/misc/scalartest.c +++ /dev/null @@ -1,166 +0,0 @@ -#include <stdio.h> -#include <math.h> -#include <asm/msr.h> -#include "resample.h" - -#define CLK 300.e6 -#define LOOPS 20000 - - -typedef double ( *ddf ) ( double ); - - -float a1 [256]; -float a2 [256]; - -void init ( void ) -{ - int i; - - for ( i = 0; i < sizeof(a1)/sizeof(*a1); i++ ) { - a1 [i] = sin(i)+0.2*sin(1.8*i)+log(2+i); - a2 [i] = cos(0.1*i); - } -} - -void test ( int no, scalar_t f ) -{ - unsigned long long t1; - unsigned long long t2; - unsigned long long t3; - unsigned long long t4; - int l; - double last = 0; - double curr = 0; - - printf ( "[%3u] %22.14f\t\t", no, (double)f (a1,a2) ); - fflush ( stdout ); - - do { - rdtscll (t1); - l = LOOPS; - do - ; - while (--l); - rdtscll (t2); - rdtscll (t3); - l = LOOPS; - do - f(a1,a2), f(a1,a2), f(a1,a2), f(a1,a2); - while (--l); - rdtscll (t4); - last = curr; - curr = (t4-t3-t2+t1) / CLK / LOOPS / 4 * 1.e9; - } while ( fabs(curr-last) > 1.e-4 * (curr+last) ); - printf ("%8.2f ns\n", (curr+last) / 2 ); -} - -void testn ( scalarn_t f ) -{ - unsigned long long t1; - unsigned long long t2; - unsigned long long t3; - unsigned long long t4; - int l; - int i; - double last = 0; - double curr = 0; - - for ( i = 1; i <= 64; i += i<6 ? 1 : i<8 ? 2 : i ) { - printf ( "[%3u] %22.14f\t\t", 4*i, (double)f (a1,a2,i) ); - fflush ( stdout ); - - do { - rdtscll (t1); - l = LOOPS; - do - ; - while (--l); - rdtscll (t2); - rdtscll (t3); - l = LOOPS; - do - f(a1,a2,i), f(a1,a2,i), f(a1,a2,i), f(a1,a2,i); - while (--l); - rdtscll (t4); - last = curr; - curr = (t4-t3-t2+t1) / CLK / LOOPS / 4 * 1.e9; - } while ( fabs(curr-last) > 1.e-4 * (curr+last) ); - printf ("%8.2f ns\n", (curr+last) / 2 ); - } -} - -void test2 ( const char* name, ddf f ) -{ - int i; - double x; - - printf ( "\n%%%% %s\n\n", name ); - - for ( i = -1000; i <= 1000; i++ ) { - x = 1.e-3 * i; - printf ( "%5d\t%12.8f\t%12.8f\t%12.8f\n", i, f(x), (f(x+5.e-5) - f(x-5.e-5))*1.e+4, (f(x+1.e-4) + f(x-1.e-4) - 2*f(x))*5.e+7 ); - } - printf ( "%%%%\n" ); - fflush ( stdout ); -} - - -int main ( int argc, char** argv ) -{ - -#if 0 - - test2 ( "Hann", hanning ); - test2 ( "Hamm", hamming ); - test2 ( "BM", blackman ); - test2 ( "BM1",blackman1 ); - test2 ( "BM2",blackman2 ); - test2 ( "BMH N",blackmanharris_nuttall ); - test2 ( "MNH Min",blackmanharris_min4 ); - -#else - - init (); - - test ( 4, scalar04_float32 ); - test ( 4, scalar04_float32_i387 ); - test ( 4, scalar04_float32_3DNow ); - test ( 4, scalar04_float32_SIMD ); - - test ( 8, scalar08_float32 ); - test ( 8, scalar08_float32_i387 ); - test ( 8, scalar08_float32_3DNow ); - test ( 8, scalar08_float32_SIMD ); - - test ( 12, scalar12_float32 ); - test ( 12, scalar12_float32_i387 ); - test ( 12, scalar12_float32_3DNow ); - test ( 12, scalar12_float32_SIMD ); - - test ( 16, scalar16_float32 ); - test ( 16, scalar16_float32_i387 ); - test ( 16, scalar16_float32_3DNow ); - test ( 16, scalar16_float32_SIMD ); - - test ( 20, scalar20_float32 ); - test ( 20, scalar20_float32_i387 ); - test ( 20, scalar20_float32_3DNow ); - test ( 20, scalar20_float32_SIMD ); - - test ( 24, scalar24_float32 ); - test ( 24, scalar24_float32_i387 ); - test ( 24, scalar24_float32_3DNow ); - test ( 24, scalar24_float32_SIMD ); - - testn( scalar4n_float32 ); - testn( scalar4n_float32_i387 ); - testn( scalar4n_float32_3DNow ); - testn( scalar4n_float32_SIMD ); - -#endif - - return 0; -} - -/* end of scalartest.c */ diff --git a/platform/win32/msvc/external/lame/missing b/platform/win32/msvc/external/lame/missing deleted file mode 100644 index 28055d2ae6f..00000000000 --- a/platform/win32/msvc/external/lame/missing +++ /dev/null @@ -1,376 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. - -scriptversion=2009-04-28.21; # UTC - -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, -# 2008, 2009 Free Software Foundation, Inc. -# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, 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, see <http://www.gnu.org/licenses/>. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 -fi - -run=: -sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' -sed_minuso='s/.* -o \([^ ]*\).*/\1/p' - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi - -msg="missing on your system" - -case $1 in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - # Exit code 63 means version mismatch. This often happens - # when the user try to use an ancient version of a tool on - # a file that requires a minimum version. In this case we - # we should proceed has if the program had been absent, or - # if --run hadn't been passed. - if test $? = 63; then - run=: - msg="probably too old" - fi - ;; - - -h|--h|--he|--hel|--help) - echo "\ -$0 [OPTION]... PROGRAM [ARGUMENT]... - -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. - -Options: - -h, --help display this help and exit - -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails - -Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - autom4te touch the output file, or create a stub one - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - tar try tar, gnutar, gtar, then tar without non-portable flags - yacc create \`y.tab.[ch]', if possible, from existing .[ch] - -Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and -\`g' are ignored when checking the name. - -Send bug reports to <bug-automake@gnu.org>." - exit $? - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing $scriptversion (GNU Automake)" - exit $? - ;; - - -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 - ;; - -esac - -# normalize program name to check for. -program=`echo "$1" | sed ' - s/^gnu-//; t - s/^gnu//; t - s/^g//; t'` - -# Now exit if we have it, but it failed. Also exit now if we -# don't have it and --version was passed (most likely to detect -# the program). This is about non-GNU programs, so use $1 not -# $program. -case $1 in - lex*|yacc*) - # Not GNU programs, they don't have --version. - ;; - - tar*) - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - exit 1 - fi - ;; - - *) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - # Could not run --version or --help. This is probably someone - # running `$TOOL --version' or `$TOOL --help' to check whether - # $TOOL exists and not knowing $TOOL uses missing. - exit 1 - fi - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case $program in - aclocal*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case $f in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te*) - echo 1>&2 "\ -WARNING: \`$1' is needed, but is $msg. - You might have modified some files without having the - proper tools for further handling them. - You can get \`$1' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison*|yacc*) - echo 1>&2 "\ -WARNING: \`$1' $msg. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if test $# -ne 1; then - eval LASTARG="\${$#}" - case $LASTARG in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if test ! -f y.tab.h; then - echo >y.tab.h - fi - if test ! -f y.tab.c; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex*|flex*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if test $# -ne 1; then - eval LASTARG="\${$#}" - case $LASTARG in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if test ! -f lex.yy.c; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit $? - fi - ;; - - makeinfo*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - # The file to touch is that specified with -o ... - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -z "$file"; then - # ... or it is the one specified with @setfilename ... - infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n ' - /^@setfilename/{ - s/.* \([^ ]*\) *$/\1/ - p - q - }' $infile` - # ... or it is derived from the source name (dir/f.texi becomes f.info) - test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info - fi - # If the file does not exist, the user really needs makeinfo; - # let's fail without touching anything. - test -f $file || exit 1 - touch $file - ;; - - tar*) - shift - - # We have already tried tar in the generic part. - # Look for gnutar/gtar before invocation to avoid ugly error - # messages. - if (gnutar --version > /dev/null 2>&1); then - gnutar "$@" && exit 0 - fi - if (gtar --version > /dev/null 2>&1); then - gtar "$@" && exit 0 - fi - firstarg="$1" - if shift; then - case $firstarg in - *o*) - firstarg=`echo "$firstarg" | sed s/o//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - case $firstarg in - *h*) - firstarg=`echo "$firstarg" | sed s/h//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - fi - - echo 1>&2 "\ -WARNING: I can't seem to be able to run \`tar' with the given arguments. - You may want to install GNU tar or Free paxutils, or check the - command line arguments." - exit 1 - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and is $msg. - You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequisites for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac - -exit 0 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/platform/win32/msvc/external/lame/mpglib/AUTHORS b/platform/win32/msvc/external/lame/mpglib/AUTHORS deleted file mode 100644 index 0a6a10b07d6..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/AUTHORS +++ /dev/null @@ -1,16 +0,0 @@ -Michael Hipp <mh@mpg123.de> Author of orignal mpglib version 0.2a. - -Albert L. Faber <afaber@users.sf.net> -Aleksander Korzynski <olcios@users.sf.net> -Alexander Leidinger <aleidinger@users.sf.net> -Frank Klemm <pfk@users.sf.net> -Gabriel Bouvigne <bouvigne@users.sf.net> -Leigh Smith <leighsmith@users.sf.net> -Mark Taylor <markt@users.sf.net> -Myers Carpenter <myers@users.sf.net> -Naoki Shibata <shibatch@users.sf.net> -Robert Hegemann <robert@users.sf.net> -Sigbjorn Skjaeret <cisc@users.sf.net> -Stefan Bellon <sbellon@users.sf.net> -Steve Lhomme <robux4@users.sf.net> -Takehiro TOMINAGA <takehiro@users.sf.net> diff --git a/platform/win32/msvc/external/lame/mpglib/Makefile.am b/platform/win32/msvc/external/lame/mpglib/Makefile.am deleted file mode 100644 index b521f208663..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/Makefile.am +++ /dev/null @@ -1,55 +0,0 @@ -## $Id: Makefile.am,v 1.18 2010/10/30 13:21:02 robert Exp $ - -include $(top_srcdir)/Makefile.am.global - -INCLUDES = @INCLUDES@ -I$(top_srcdir)/libmp3lame -I$(top_builddir) - -EXTRA_DIST = \ - AUTHORS \ - README - -DEFS = @DEFS@ @CONFIG_DEFS@ - -noinst_LTLIBRARIES = libmpgdecoder.la - -libmpgdecoder_la_SOURCES = common.c \ - dct64_i386.c \ - decode_i386.c \ - interface.c \ - layer1.c \ - layer2.c \ - layer3.c \ - tabinit.c - -noinst_HEADERS = common.h \ - dct64_i386.h \ - decode_i386.h \ - huffman.h \ - interface.h \ - l2tables.h \ - layer1.h \ - layer2.h \ - layer3.h \ - mpg123.h \ - mpglib.h \ - tabinit.h - -LCLINTFLAGS= \ - +posixlib \ - +showsummary \ - +showalluses \ - +whichlib \ - +forcehints \ - -fixedformalarray \ - +matchanyintegral \ - -Dlint - -lclint.txt: ${libmpgdecoder_la_SOURCES} ${noinst_HEADERS} - @lclint ${LCLINTFLAGS} ${INCLUDES} ${DEFS} ${libmpgdecoder_la_SOURCES} 2>&1 >lclint.txt || true - -lclint: lclint.txt - more lclint.txt - -#$(OBJECTS): libtool -#libtool: $(LIBTOOL_DEPS) -# $(SHELL) $(top_builddir)/config.status --recheck diff --git a/platform/win32/msvc/external/lame/mpglib/Makefile.in b/platform/win32/msvc/external/lame/mpglib/Makefile.in deleted file mode 100644 index bb97abbea68..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/Makefile.in +++ /dev/null @@ -1,586 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# global section for every Makefile.am - - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -ANSI2KNR = $(top_srcdir)/ansi2knr -DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(top_srcdir)/Makefile.am.global AUTHORS \ - depcomp -subdir = mpglib -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libmpgdecoder_la_LIBADD = -am_libmpgdecoder_la_OBJECTS = common$U.lo dct64_i386$U.lo \ - decode_i386$U.lo interface$U.lo layer1$U.lo layer2$U.lo \ - layer3$U.lo tabinit$U.lo -libmpgdecoder_la_OBJECTS = $(am_libmpgdecoder_la_OBJECTS) -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libmpgdecoder_la_SOURCES) -DIST_SOURCES = $(libmpgdecoder_la_SOURCES) -HEADERS = $(noinst_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CONFIG_DEFS = @CONFIG_DEFS@ -CONFIG_MATH_LIB = @CONFIG_MATH_LIB@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CPUCCODE = @CPUCCODE@ -CPUTYPE = @CPUTYPE@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ @CONFIG_DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ -FRONTEND_LDADD = @FRONTEND_LDADD@ -FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ -GREP = @GREP@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_CONFIG = @GTK_CONFIG@ -GTK_LIBS = @GTK_LIBS@ -INCLUDES = @INCLUDES@ -I$(top_srcdir)/libmp3lame -I$(top_builddir) -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDADD = @LDADD@ -LDFLAGS = @LDFLAGS@ -LIBICONV = @LIBICONV@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ -LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBICONV = @LTLIBICONV@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEDEP = @MAKEDEP@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NASM = @NASM@ -NASM_FORMAT = @NASM_FORMAT@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -RM_F = @RM_F@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ -SNDFILE_LIBS = @SNDFILE_LIBS@ -STRIP = @STRIP@ -U = @U@ -VERSION = @VERSION@ -WITH_FRONTEND = @WITH_FRONTEND@ -WITH_MP3RTP = @WITH_MP3RTP@ -WITH_MP3X = @WITH_MP3X@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = 1.11 foreign $(top_srcdir)/ansi2knr -EXTRA_DIST = \ - AUTHORS \ - README - -noinst_LTLIBRARIES = libmpgdecoder.la -libmpgdecoder_la_SOURCES = common.c \ - dct64_i386.c \ - decode_i386.c \ - interface.c \ - layer1.c \ - layer2.c \ - layer3.c \ - tabinit.c - -noinst_HEADERS = common.h \ - dct64_i386.h \ - decode_i386.h \ - huffman.h \ - interface.h \ - l2tables.h \ - layer1.h \ - layer2.h \ - layer3.h \ - mpg123.h \ - mpglib.h \ - tabinit.h - -LCLINTFLAGS = \ - +posixlib \ - +showsummary \ - +showalluses \ - +whichlib \ - +forcehints \ - -fixedformalarray \ - +matchanyintegral \ - -Dlint - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mpglib/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign mpglib/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libmpgdecoder.la: $(libmpgdecoder_la_OBJECTS) $(libmpgdecoder_la_DEPENDENCIES) - $(LINK) $(libmpgdecoder_la_OBJECTS) $(libmpgdecoder_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c -$(top_srcdir)/ansi2knr: - $(am__cd) $(top_srcdir) && $(MAKE) $(AM_MAKEFLAGS) ./ansi2knr - -mostlyclean-kr: - -test "$U" = "" || rm -f *_.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/common$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dct64_i386$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/decode_i386$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interface$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/layer1$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/layer2$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/layer3$U.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tabinit$U.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< -common_.c: common.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/common.c; then echo $(srcdir)/common.c; else echo common.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -dct64_i386_.c: dct64_i386.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/dct64_i386.c; then echo $(srcdir)/dct64_i386.c; else echo dct64_i386.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -decode_i386_.c: decode_i386.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/decode_i386.c; then echo $(srcdir)/decode_i386.c; else echo decode_i386.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -interface_.c: interface.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/interface.c; then echo $(srcdir)/interface.c; else echo interface.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -layer1_.c: layer1.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/layer1.c; then echo $(srcdir)/layer1.c; else echo layer1.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -layer2_.c: layer2.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/layer2.c; then echo $(srcdir)/layer2.c; else echo layer2.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -layer3_.c: layer3.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/layer3.c; then echo $(srcdir)/layer3.c; else echo layer3.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -tabinit_.c: tabinit.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/tabinit.c; then echo $(srcdir)/tabinit.c; else echo tabinit.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -common_.$(OBJEXT) common_.lo dct64_i386_.$(OBJEXT) dct64_i386_.lo \ -decode_i386_.$(OBJEXT) decode_i386_.lo interface_.$(OBJEXT) \ -interface_.lo layer1_.$(OBJEXT) layer1_.lo layer2_.$(OBJEXT) \ -layer2_.lo layer3_.$(OBJEXT) layer3_.lo tabinit_.$(OBJEXT) tabinit_.lo \ -: $(ANSI2KNR) - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) $(HEADERS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: $(top_srcdir)/ansi2knr install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-kr \ - mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ - uninstall-am - - -# end global section - -lclint.txt: ${libmpgdecoder_la_SOURCES} ${noinst_HEADERS} - @lclint ${LCLINTFLAGS} ${INCLUDES} ${DEFS} ${libmpgdecoder_la_SOURCES} 2>&1 >lclint.txt || true - -lclint: lclint.txt - more lclint.txt - -#$(OBJECTS): libtool -#libtool: $(LIBTOOL_DEPS) -# $(SHELL) $(top_builddir)/config.status --recheck - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/platform/win32/msvc/external/lame/mpglib/README b/platform/win32/msvc/external/lame/mpglib/README deleted file mode 100644 index 7155d004c7d..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/README +++ /dev/null @@ -1,26 +0,0 @@ -hip - Hip Isn't a Player -A LGPLed mpeg audio decoding library. - -Based off of Michael Hipp's mpglib 0.2a <http://www.mpg123.de/>, with many -improvements by the lame development team (see AUTHORS). - -The interface to the library is based off of vorbisfile. If you add mp3 -support to your app using this library it should be a snap to add Ogg Vorbis -support as well. - -This isn't as fast as mpg123 will be for decoding as none of it is in -assmbler. - -Seeking currently isn't implemented. - - -From mpglib's orginal README: -============================= - -PLEASE NOTE: This software may contain patented algorithms (at least - patented in some countries). It may be not allowed to sell/use products - based on this source code in these countries. Check this out first! - -COPYRIGHT of MP3 music: - Please note, that the duplicating of copyrighted music without explicit - permission violates the rights of the owner. diff --git a/platform/win32/msvc/external/lame/mpglib/common.c b/platform/win32/msvc/external/lame/mpglib/common.c deleted file mode 100644 index 3cc136bf946..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/common.c +++ /dev/null @@ -1,359 +0,0 @@ -/* - * common.c: some common bitstream operations - * - * Copyright (C) 1999-2010 The L.A.M.E. project - * - * Initially written by Michael Hipp, see also AUTHORS and README. - * - * 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. - */ - -/* $Id: common.c,v 1.40 2010/03/22 14:30:19 robert Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <ctype.h> -#include <stdlib.h> -#include <signal.h> - -#ifdef HAVE_FCNTL_H -#include <fcntl.h> -#endif - -#ifdef macintosh -#include <types.h> -#include <stat.h> -#else -#include <sys/types.h> -#include <sys/stat.h> -#endif - -#include <assert.h> - -#include "common.h" - -#ifdef WITH_DMALLOC -#include <dmalloc.h> -#endif - -/* In C++ the array first must be prototyped, why ? */ - - - /* *INDENT-OFF* */ -const int tabsel_123 [2] [3] [16] = { - { {0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,}, - {0,32,48,56, 64, 80, 96,112,128,160,192,224,256,320,384,}, - {0,32,40,48, 56, 64, 80, 96,112,128,160,192,224,256,320,} }, - - { {0,32,48,56,64,80,96,112,128,144,160,176,192,224,256,}, - {0,8,16,24,32,40,48,56,64,80,96,112,128,144,160,}, - {0,8,16,24,32,40,48,56,64,80,96,112,128,144,160,} } -}; - -const long freqs[9] = { 44100, 48000, 32000, - 22050, 24000, 16000, - 11025, 12000, 8000 }; - - /* *INDENT-ON* */ - - -real muls[27][64]; - -#if 0 -static void -get_II_stuff(struct frame *fr) -{ - /* *INDENT-OFF* */ - static const int translate [3] [2] [16] = /* char ? */ - { { { 0,2,2,2,2,2,2,0,0,0,1,1,1,1,1,0 } , - { 0,2,2,0,0,0,1,1,1,1,1,1,1,1,1,0 } } , - { { 0,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0 } , - { 0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0 } } , - { { 0,3,3,3,3,3,3,0,0,0,1,1,1,1,1,0 } , - { 0,3,3,0,0,0,1,1,1,1,1,1,1,1,1,0 } } }; - /* *INDENT-ON* */ - - int table, sblim; - static const struct al_table2 *tables[5] = { alloc_0, alloc_1, alloc_2, alloc_3, alloc_4 }; - static int sblims[5] = { 27, 30, 8, 12, 30 }; - - if (fr->lsf) - table = 4; - else - table = translate[fr->sampling_frequency][2 - fr->stereo][fr->bitrate_index]; - sblim = sblims[table]; - - fr->alloc = tables[table]; - fr->II_sblimit = sblim; -} -#endif - -#define HDRCMPMASK 0xfffffd00 - -#define MAX_INPUT_FRAMESIZE 4096 - -int -head_check(unsigned long head, int check_layer) -{ - /* - look for a valid header. - if check_layer > 0, then require that - nLayer = check_layer. - */ - - /* bits 13-14 = layer 3 */ - int nLayer = 4 - ((head >> 17) & 3); - - if ((head & 0xffe00000) != 0xffe00000) { - /* syncword */ - return FALSE; - } - - if (nLayer == 4) - return FALSE; - - if (check_layer > 0 && nLayer != check_layer) - return FALSE; - - if (((head >> 12) & 0xf) == 0xf) { - /* bits 16,17,18,19 = 1111 invalid bitrate */ - return FALSE; - } - if (((head >> 10) & 0x3) == 0x3) { - /* bits 20,21 = 11 invalid sampling freq */ - return FALSE; - } - if ((head & 0x3) == 0x2) - /* invalid emphasis */ - return FALSE; - return TRUE; -} - - -#if 0 -static void -print_header(PMPSTR mp, struct frame *fr) -{ - static const char *modes[4] = { "Stereo", "Joint-Stereo", "Dual-Channel", "Single-Channel" }; - static const char *layers[4] = { "Unknown", "I", "II", "III" }; - - lame_report_fnc(mp->report_msg, "MPEG %s, Layer: %s, Freq: %ld, mode: %s, modext: %d, BPF : %d\n", - fr->mpeg25 ? "2.5" : (fr->lsf ? "2.0" : "1.0"), - layers[fr->lay], freqs[fr->sampling_frequency], - modes[fr->mode], fr->mode_ext, fr->framesize + 4); - lame_report_fnc(mp->report_msg, "Channels: %d, copyright: %s, original: %s, CRC: %s, emphasis: %d.\n", - fr->stereo, fr->copyright ? "Yes" : "No", - fr->original ? "Yes" : "No", fr->error_protection ? "Yes" : "No", fr->emphasis); - lame_report_fnc(mp->report_msg, "Bitrate: %d Kbits/s, Extension value: %d\n", - tabsel_123[fr->lsf][fr->lay - 1][fr->bitrate_index], fr->extension); -} - -static void -print_header_compact(PMPSTR mp, struct frame *fr) -{ - static const char *modes[4] = { "stereo", "joint-stereo", "dual-channel", "mono" }; - static const char *layers[4] = { "Unknown", "I", "II", "III" }; - - lame_report_fnc(mp->report_err, "MPEG %s layer %s, %d kbit/s, %ld Hz %s\n", - fr->mpeg25 ? "2.5" : (fr->lsf ? "2.0" : "1.0"), - layers[fr->lay], - tabsel_123[fr->lsf][fr->lay - 1][fr->bitrate_index], - freqs[fr->sampling_frequency], modes[fr->mode]); -} - -#endif - -/* - * decode a header and write the information - * into the frame structure - */ -int -decode_header(PMPSTR mp, struct frame *fr, unsigned long newhead) -{ - - - if (newhead & (1 << 20)) { - fr->lsf = (newhead & (1 << 19)) ? 0x0 : 0x1; - fr->mpeg25 = 0; - } - else { - fr->lsf = 1; - fr->mpeg25 = 1; - } - - - fr->lay = 4 - ((newhead >> 17) & 3); - if (((newhead >> 10) & 0x3) == 0x3) { - lame_report_fnc(mp->report_err, "Stream error\n"); - exit(1); - } - if (fr->mpeg25) { - fr->sampling_frequency = 6 + ((newhead >> 10) & 0x3); - } - else - fr->sampling_frequency = ((newhead >> 10) & 0x3) + (fr->lsf * 3); - - fr->error_protection = ((newhead >> 16) & 0x1) ^ 0x1; - - if (fr->mpeg25) /* allow Bitrate change for 2.5 ... */ - fr->bitrate_index = ((newhead >> 12) & 0xf); - - fr->bitrate_index = ((newhead >> 12) & 0xf); - fr->padding = ((newhead >> 9) & 0x1); - fr->extension = ((newhead >> 8) & 0x1); - fr->mode = ((newhead >> 6) & 0x3); - fr->mode_ext = ((newhead >> 4) & 0x3); - fr->copyright = ((newhead >> 3) & 0x1); - fr->original = ((newhead >> 2) & 0x1); - fr->emphasis = newhead & 0x3; - - fr->stereo = (fr->mode == MPG_MD_MONO) ? 1 : 2; - - switch (fr->lay) { - case 1: - fr->framesize = (long) tabsel_123[fr->lsf][0][fr->bitrate_index] * 12000; - fr->framesize /= freqs[fr->sampling_frequency]; - fr->framesize = ((fr->framesize + fr->padding) << 2) - 4; - fr->down_sample = 0; - fr->down_sample_sblimit = SBLIMIT >> (fr->down_sample); - break; - - case 2: - fr->framesize = (long) tabsel_123[fr->lsf][1][fr->bitrate_index] * 144000; - fr->framesize /= freqs[fr->sampling_frequency]; - fr->framesize += fr->padding - 4; - fr->down_sample = 0; - fr->down_sample_sblimit = SBLIMIT >> (fr->down_sample); - break; - - case 3: -#if 0 - fr->do_layer = do_layer3; - if (fr->lsf) - ssize = (fr->stereo == 1) ? 9 : 17; - else - ssize = (fr->stereo == 1) ? 17 : 32; -#endif - -#if 0 - if (fr->error_protection) - ssize += 2; -#endif - if (fr->framesize > MAX_INPUT_FRAMESIZE) { - lame_report_fnc(mp->report_err, "Frame size too big.\n"); - fr->framesize = MAX_INPUT_FRAMESIZE; - return (0); - } - - - if (fr->bitrate_index == 0) - fr->framesize = 0; - else { - fr->framesize = (long) tabsel_123[fr->lsf][2][fr->bitrate_index] * 144000; - fr->framesize /= freqs[fr->sampling_frequency] << (fr->lsf); - fr->framesize = fr->framesize + fr->padding - 4; - } - break; - default: - lame_report_fnc(mp->report_err, "Sorry, layer %d not supported\n", fr->lay); - return (0); - } - /* print_header(mp, fr); */ - - return 1; -} - - -unsigned int -getbits(PMPSTR mp, int number_of_bits) -{ - unsigned long rval; - - if (number_of_bits <= 0 || !mp->wordpointer) - return 0; - - { - rval = mp->wordpointer[0]; - rval <<= 8; - rval |= mp->wordpointer[1]; - rval <<= 8; - rval |= mp->wordpointer[2]; - rval <<= mp->bitindex; - rval &= 0xffffff; - - mp->bitindex += number_of_bits; - - rval >>= (24 - number_of_bits); - - mp->wordpointer += (mp->bitindex >> 3); - mp->bitindex &= 7; - } - return rval; -} - -unsigned int -getbits_fast(PMPSTR mp, int number_of_bits) -{ - unsigned long rval; - - { - rval = mp->wordpointer[0]; - rval <<= 8; - rval |= mp->wordpointer[1]; - rval <<= mp->bitindex; - rval &= 0xffff; - mp->bitindex += number_of_bits; - - rval >>= (16 - number_of_bits); - - mp->wordpointer += (mp->bitindex >> 3); - mp->bitindex &= 7; - } - return rval; -} - -unsigned char -get_leq_8_bits(PMPSTR mp, unsigned int number_of_bits) -{ - assert(number_of_bits <= 8); - return (unsigned char) getbits_fast(mp, number_of_bits); -} - -unsigned short -get_leq_16_bits(PMPSTR mp, unsigned int number_of_bits) -{ - assert(number_of_bits <= 16); - return (unsigned short) getbits_fast(mp, number_of_bits); -} - -int -set_pointer(PMPSTR mp, long backstep) -{ - unsigned char *bsbufold; - - if (mp->fsizeold < 0 && backstep > 0) { - lame_report_fnc(mp->report_err, "hip: Can't step back %ld bytes!\n", backstep); - return MP3_ERR; - } - bsbufold = mp->bsspace[1 - mp->bsnum] + 512; - mp->wordpointer -= backstep; - if (backstep) - memcpy(mp->wordpointer, bsbufold + mp->fsizeold - backstep, (size_t) backstep); - mp->bitindex = 0; - return MP3_OK; -} diff --git a/platform/win32/msvc/external/lame/mpglib/common.h b/platform/win32/msvc/external/lame/mpglib/common.h deleted file mode 100644 index 62cf17e5300..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/common.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 1999-2010 The L.A.M.E. project - * - * Initially written by Michael Hipp, see also AUTHORS and README. - * - * 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 COMMON_H_INCLUDED -#define COMMON_H_INCLUDED - -#include "mpg123.h" -#include "mpglib.h" - -extern const int tabsel_123[2][3][16]; -extern const long freqs[9]; - -extern real muls[27][64]; - - -int head_check(unsigned long head, int check_layer); -int decode_header(PMPSTR mp, struct frame *fr, unsigned long newhead); -unsigned int getbits(PMPSTR mp, int number_of_bits); -unsigned int getbits_fast(PMPSTR mp, int number_of_bits); -unsigned char get_leq_8_bits(PMPSTR mp, unsigned int number_of_bits); -unsigned short get_leq_16_bits(PMPSTR mp, unsigned int number_of_bits); -int set_pointer(PMPSTR mp, long backstep); - -#endif diff --git a/platform/win32/msvc/external/lame/mpglib/dct64_i386.c b/platform/win32/msvc/external/lame/mpglib/dct64_i386.c deleted file mode 100644 index 0bf1509ed25..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/dct64_i386.c +++ /dev/null @@ -1,348 +0,0 @@ -/* - * dct64_i368.c - * - * Copyright (C) 1999-2010 The L.A.M.E. project - * - * Initially written by Michael Hipp, see also AUTHORS and README. - * - * 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. - * - * - * Discrete Cosine Tansform (DCT) for subband synthesis - * optimized for machines with no auto-increment. - * The performance is highly compiler dependend. Maybe - * the dct64.c version for 'normal' processor may be faster - * even for Intel processors. - */ - -/* $Id: dct64_i386.c,v 1.14 2010/03/22 14:30:19 robert Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include "dct64_i386.h" -#include "tabinit.h" - -#ifdef WITH_DMALLOC -#include <dmalloc.h> -#endif - -static void -dct64_1(real * out0, real * out1, real * b1, real * b2, real * samples) -{ - - { - real *costab = pnts[0]; - - b1[0x00] = samples[0x00] + samples[0x1F]; - b1[0x1F] = (samples[0x00] - samples[0x1F]) * costab[0x0]; - - b1[0x01] = samples[0x01] + samples[0x1E]; - b1[0x1E] = (samples[0x01] - samples[0x1E]) * costab[0x1]; - - b1[0x02] = samples[0x02] + samples[0x1D]; - b1[0x1D] = (samples[0x02] - samples[0x1D]) * costab[0x2]; - - b1[0x03] = samples[0x03] + samples[0x1C]; - b1[0x1C] = (samples[0x03] - samples[0x1C]) * costab[0x3]; - - b1[0x04] = samples[0x04] + samples[0x1B]; - b1[0x1B] = (samples[0x04] - samples[0x1B]) * costab[0x4]; - - b1[0x05] = samples[0x05] + samples[0x1A]; - b1[0x1A] = (samples[0x05] - samples[0x1A]) * costab[0x5]; - - b1[0x06] = samples[0x06] + samples[0x19]; - b1[0x19] = (samples[0x06] - samples[0x19]) * costab[0x6]; - - b1[0x07] = samples[0x07] + samples[0x18]; - b1[0x18] = (samples[0x07] - samples[0x18]) * costab[0x7]; - - b1[0x08] = samples[0x08] + samples[0x17]; - b1[0x17] = (samples[0x08] - samples[0x17]) * costab[0x8]; - - b1[0x09] = samples[0x09] + samples[0x16]; - b1[0x16] = (samples[0x09] - samples[0x16]) * costab[0x9]; - - b1[0x0A] = samples[0x0A] + samples[0x15]; - b1[0x15] = (samples[0x0A] - samples[0x15]) * costab[0xA]; - - b1[0x0B] = samples[0x0B] + samples[0x14]; - b1[0x14] = (samples[0x0B] - samples[0x14]) * costab[0xB]; - - b1[0x0C] = samples[0x0C] + samples[0x13]; - b1[0x13] = (samples[0x0C] - samples[0x13]) * costab[0xC]; - - b1[0x0D] = samples[0x0D] + samples[0x12]; - b1[0x12] = (samples[0x0D] - samples[0x12]) * costab[0xD]; - - b1[0x0E] = samples[0x0E] + samples[0x11]; - b1[0x11] = (samples[0x0E] - samples[0x11]) * costab[0xE]; - - b1[0x0F] = samples[0x0F] + samples[0x10]; - b1[0x10] = (samples[0x0F] - samples[0x10]) * costab[0xF]; - } - - - { - real *costab = pnts[1]; - - b2[0x00] = b1[0x00] + b1[0x0F]; - b2[0x0F] = (b1[0x00] - b1[0x0F]) * costab[0]; - b2[0x01] = b1[0x01] + b1[0x0E]; - b2[0x0E] = (b1[0x01] - b1[0x0E]) * costab[1]; - b2[0x02] = b1[0x02] + b1[0x0D]; - b2[0x0D] = (b1[0x02] - b1[0x0D]) * costab[2]; - b2[0x03] = b1[0x03] + b1[0x0C]; - b2[0x0C] = (b1[0x03] - b1[0x0C]) * costab[3]; - b2[0x04] = b1[0x04] + b1[0x0B]; - b2[0x0B] = (b1[0x04] - b1[0x0B]) * costab[4]; - b2[0x05] = b1[0x05] + b1[0x0A]; - b2[0x0A] = (b1[0x05] - b1[0x0A]) * costab[5]; - b2[0x06] = b1[0x06] + b1[0x09]; - b2[0x09] = (b1[0x06] - b1[0x09]) * costab[6]; - b2[0x07] = b1[0x07] + b1[0x08]; - b2[0x08] = (b1[0x07] - b1[0x08]) * costab[7]; - - b2[0x10] = b1[0x10] + b1[0x1F]; - b2[0x1F] = (b1[0x1F] - b1[0x10]) * costab[0]; - b2[0x11] = b1[0x11] + b1[0x1E]; - b2[0x1E] = (b1[0x1E] - b1[0x11]) * costab[1]; - b2[0x12] = b1[0x12] + b1[0x1D]; - b2[0x1D] = (b1[0x1D] - b1[0x12]) * costab[2]; - b2[0x13] = b1[0x13] + b1[0x1C]; - b2[0x1C] = (b1[0x1C] - b1[0x13]) * costab[3]; - b2[0x14] = b1[0x14] + b1[0x1B]; - b2[0x1B] = (b1[0x1B] - b1[0x14]) * costab[4]; - b2[0x15] = b1[0x15] + b1[0x1A]; - b2[0x1A] = (b1[0x1A] - b1[0x15]) * costab[5]; - b2[0x16] = b1[0x16] + b1[0x19]; - b2[0x19] = (b1[0x19] - b1[0x16]) * costab[6]; - b2[0x17] = b1[0x17] + b1[0x18]; - b2[0x18] = (b1[0x18] - b1[0x17]) * costab[7]; - } - - { - real *costab = pnts[2]; - - b1[0x00] = b2[0x00] + b2[0x07]; - b1[0x07] = (b2[0x00] - b2[0x07]) * costab[0]; - b1[0x01] = b2[0x01] + b2[0x06]; - b1[0x06] = (b2[0x01] - b2[0x06]) * costab[1]; - b1[0x02] = b2[0x02] + b2[0x05]; - b1[0x05] = (b2[0x02] - b2[0x05]) * costab[2]; - b1[0x03] = b2[0x03] + b2[0x04]; - b1[0x04] = (b2[0x03] - b2[0x04]) * costab[3]; - - b1[0x08] = b2[0x08] + b2[0x0F]; - b1[0x0F] = (b2[0x0F] - b2[0x08]) * costab[0]; - b1[0x09] = b2[0x09] + b2[0x0E]; - b1[0x0E] = (b2[0x0E] - b2[0x09]) * costab[1]; - b1[0x0A] = b2[0x0A] + b2[0x0D]; - b1[0x0D] = (b2[0x0D] - b2[0x0A]) * costab[2]; - b1[0x0B] = b2[0x0B] + b2[0x0C]; - b1[0x0C] = (b2[0x0C] - b2[0x0B]) * costab[3]; - - b1[0x10] = b2[0x10] + b2[0x17]; - b1[0x17] = (b2[0x10] - b2[0x17]) * costab[0]; - b1[0x11] = b2[0x11] + b2[0x16]; - b1[0x16] = (b2[0x11] - b2[0x16]) * costab[1]; - b1[0x12] = b2[0x12] + b2[0x15]; - b1[0x15] = (b2[0x12] - b2[0x15]) * costab[2]; - b1[0x13] = b2[0x13] + b2[0x14]; - b1[0x14] = (b2[0x13] - b2[0x14]) * costab[3]; - - b1[0x18] = b2[0x18] + b2[0x1F]; - b1[0x1F] = (b2[0x1F] - b2[0x18]) * costab[0]; - b1[0x19] = b2[0x19] + b2[0x1E]; - b1[0x1E] = (b2[0x1E] - b2[0x19]) * costab[1]; - b1[0x1A] = b2[0x1A] + b2[0x1D]; - b1[0x1D] = (b2[0x1D] - b2[0x1A]) * costab[2]; - b1[0x1B] = b2[0x1B] + b2[0x1C]; - b1[0x1C] = (b2[0x1C] - b2[0x1B]) * costab[3]; - } - - { - real const cos0 = pnts[3][0]; - real const cos1 = pnts[3][1]; - - b2[0x00] = b1[0x00] + b1[0x03]; - b2[0x03] = (b1[0x00] - b1[0x03]) * cos0; - b2[0x01] = b1[0x01] + b1[0x02]; - b2[0x02] = (b1[0x01] - b1[0x02]) * cos1; - - b2[0x04] = b1[0x04] + b1[0x07]; - b2[0x07] = (b1[0x07] - b1[0x04]) * cos0; - b2[0x05] = b1[0x05] + b1[0x06]; - b2[0x06] = (b1[0x06] - b1[0x05]) * cos1; - - b2[0x08] = b1[0x08] + b1[0x0B]; - b2[0x0B] = (b1[0x08] - b1[0x0B]) * cos0; - b2[0x09] = b1[0x09] + b1[0x0A]; - b2[0x0A] = (b1[0x09] - b1[0x0A]) * cos1; - - b2[0x0C] = b1[0x0C] + b1[0x0F]; - b2[0x0F] = (b1[0x0F] - b1[0x0C]) * cos0; - b2[0x0D] = b1[0x0D] + b1[0x0E]; - b2[0x0E] = (b1[0x0E] - b1[0x0D]) * cos1; - - b2[0x10] = b1[0x10] + b1[0x13]; - b2[0x13] = (b1[0x10] - b1[0x13]) * cos0; - b2[0x11] = b1[0x11] + b1[0x12]; - b2[0x12] = (b1[0x11] - b1[0x12]) * cos1; - - b2[0x14] = b1[0x14] + b1[0x17]; - b2[0x17] = (b1[0x17] - b1[0x14]) * cos0; - b2[0x15] = b1[0x15] + b1[0x16]; - b2[0x16] = (b1[0x16] - b1[0x15]) * cos1; - - b2[0x18] = b1[0x18] + b1[0x1B]; - b2[0x1B] = (b1[0x18] - b1[0x1B]) * cos0; - b2[0x19] = b1[0x19] + b1[0x1A]; - b2[0x1A] = (b1[0x19] - b1[0x1A]) * cos1; - - b2[0x1C] = b1[0x1C] + b1[0x1F]; - b2[0x1F] = (b1[0x1F] - b1[0x1C]) * cos0; - b2[0x1D] = b1[0x1D] + b1[0x1E]; - b2[0x1E] = (b1[0x1E] - b1[0x1D]) * cos1; - } - - { - real const cos0 = pnts[4][0]; - - b1[0x00] = b2[0x00] + b2[0x01]; - b1[0x01] = (b2[0x00] - b2[0x01]) * cos0; - b1[0x02] = b2[0x02] + b2[0x03]; - b1[0x03] = (b2[0x03] - b2[0x02]) * cos0; - b1[0x02] += b1[0x03]; - - b1[0x04] = b2[0x04] + b2[0x05]; - b1[0x05] = (b2[0x04] - b2[0x05]) * cos0; - b1[0x06] = b2[0x06] + b2[0x07]; - b1[0x07] = (b2[0x07] - b2[0x06]) * cos0; - b1[0x06] += b1[0x07]; - b1[0x04] += b1[0x06]; - b1[0x06] += b1[0x05]; - b1[0x05] += b1[0x07]; - - b1[0x08] = b2[0x08] + b2[0x09]; - b1[0x09] = (b2[0x08] - b2[0x09]) * cos0; - b1[0x0A] = b2[0x0A] + b2[0x0B]; - b1[0x0B] = (b2[0x0B] - b2[0x0A]) * cos0; - b1[0x0A] += b1[0x0B]; - - b1[0x0C] = b2[0x0C] + b2[0x0D]; - b1[0x0D] = (b2[0x0C] - b2[0x0D]) * cos0; - b1[0x0E] = b2[0x0E] + b2[0x0F]; - b1[0x0F] = (b2[0x0F] - b2[0x0E]) * cos0; - b1[0x0E] += b1[0x0F]; - b1[0x0C] += b1[0x0E]; - b1[0x0E] += b1[0x0D]; - b1[0x0D] += b1[0x0F]; - - b1[0x10] = b2[0x10] + b2[0x11]; - b1[0x11] = (b2[0x10] - b2[0x11]) * cos0; - b1[0x12] = b2[0x12] + b2[0x13]; - b1[0x13] = (b2[0x13] - b2[0x12]) * cos0; - b1[0x12] += b1[0x13]; - - b1[0x14] = b2[0x14] + b2[0x15]; - b1[0x15] = (b2[0x14] - b2[0x15]) * cos0; - b1[0x16] = b2[0x16] + b2[0x17]; - b1[0x17] = (b2[0x17] - b2[0x16]) * cos0; - b1[0x16] += b1[0x17]; - b1[0x14] += b1[0x16]; - b1[0x16] += b1[0x15]; - b1[0x15] += b1[0x17]; - - b1[0x18] = b2[0x18] + b2[0x19]; - b1[0x19] = (b2[0x18] - b2[0x19]) * cos0; - b1[0x1A] = b2[0x1A] + b2[0x1B]; - b1[0x1B] = (b2[0x1B] - b2[0x1A]) * cos0; - b1[0x1A] += b1[0x1B]; - - b1[0x1C] = b2[0x1C] + b2[0x1D]; - b1[0x1D] = (b2[0x1C] - b2[0x1D]) * cos0; - b1[0x1E] = b2[0x1E] + b2[0x1F]; - b1[0x1F] = (b2[0x1F] - b2[0x1E]) * cos0; - b1[0x1E] += b1[0x1F]; - b1[0x1C] += b1[0x1E]; - b1[0x1E] += b1[0x1D]; - b1[0x1D] += b1[0x1F]; - } - - out0[0x10 * 16] = b1[0x00]; - out0[0x10 * 12] = b1[0x04]; - out0[0x10 * 8] = b1[0x02]; - out0[0x10 * 4] = b1[0x06]; - out0[0x10 * 0] = b1[0x01]; - out1[0x10 * 0] = b1[0x01]; - out1[0x10 * 4] = b1[0x05]; - out1[0x10 * 8] = b1[0x03]; - out1[0x10 * 12] = b1[0x07]; - - b1[0x08] += b1[0x0C]; - out0[0x10 * 14] = b1[0x08]; - b1[0x0C] += b1[0x0a]; - out0[0x10 * 10] = b1[0x0C]; - b1[0x0A] += b1[0x0E]; - out0[0x10 * 6] = b1[0x0A]; - b1[0x0E] += b1[0x09]; - out0[0x10 * 2] = b1[0x0E]; - b1[0x09] += b1[0x0D]; - out1[0x10 * 2] = b1[0x09]; - b1[0x0D] += b1[0x0B]; - out1[0x10 * 6] = b1[0x0D]; - b1[0x0B] += b1[0x0F]; - out1[0x10 * 10] = b1[0x0B]; - out1[0x10 * 14] = b1[0x0F]; - - b1[0x18] += b1[0x1C]; - out0[0x10 * 15] = b1[0x10] + b1[0x18]; - out0[0x10 * 13] = b1[0x18] + b1[0x14]; - b1[0x1C] += b1[0x1a]; - out0[0x10 * 11] = b1[0x14] + b1[0x1C]; - out0[0x10 * 9] = b1[0x1C] + b1[0x12]; - b1[0x1A] += b1[0x1E]; - out0[0x10 * 7] = b1[0x12] + b1[0x1A]; - out0[0x10 * 5] = b1[0x1A] + b1[0x16]; - b1[0x1E] += b1[0x19]; - out0[0x10 * 3] = b1[0x16] + b1[0x1E]; - out0[0x10 * 1] = b1[0x1E] + b1[0x11]; - b1[0x19] += b1[0x1D]; - out1[0x10 * 1] = b1[0x11] + b1[0x19]; - out1[0x10 * 3] = b1[0x19] + b1[0x15]; - b1[0x1D] += b1[0x1B]; - out1[0x10 * 5] = b1[0x15] + b1[0x1D]; - out1[0x10 * 7] = b1[0x1D] + b1[0x13]; - b1[0x1B] += b1[0x1F]; - out1[0x10 * 9] = b1[0x13] + b1[0x1B]; - out1[0x10 * 11] = b1[0x1B] + b1[0x17]; - out1[0x10 * 13] = b1[0x17] + b1[0x1F]; - out1[0x10 * 15] = b1[0x1F]; -} - -/* - * the call via dct64 is a trick to force GCC to use - * (new) registers for the b1,b2 pointer to the bufs[xx] field - */ -void -dct64(real * a, real * b, real * c) -{ - real bufs[0x40]; - dct64_1(a, b, bufs, bufs + 0x20, c); -} diff --git a/platform/win32/msvc/external/lame/mpglib/dct64_i386.h b/platform/win32/msvc/external/lame/mpglib/dct64_i386.h deleted file mode 100644 index a140ee71f7b..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/dct64_i386.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (C) 1999-2010 The L.A.M.E. project - * - * Initially written by Michael Hipp, see also AUTHORS and README. - * - * 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 MPGLIB_DCT64_I386_H_INCLUDED -#define MPGLIB_DCT64_I386_H_INCLUDED - -#include "common.h" - -void dct64(real * a, real * b, real * c); - - -#endif diff --git a/platform/win32/msvc/external/lame/mpglib/decode_i386.c b/platform/win32/msvc/external/lame/mpglib/decode_i386.c deleted file mode 100644 index 8ffcab36c35..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/decode_i386.c +++ /dev/null @@ -1,224 +0,0 @@ -/* - * decode_i396.c: Mpeg Layer-1,2,3 audio decoder - * - * Copyright (C) 1999-2010 The L.A.M.E. project - * - * Initially written by Michael Hipp, see also AUTHORS and README. - * - * 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. - * - * - * Slighlty optimized for machines without autoincrement/decrement. - * The performance is highly compiler dependend. Maybe - * the decode.c version for 'normal' processor may be faster - * even for Intel processors. - */ - -/* $Id: decode_i386.c,v 1.22 2010/03/22 14:30:19 robert Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#ifdef STDC_HEADERS -# include <stdlib.h> -# include <string.h> -#else -# ifndef HAVE_STRCHR -# define strchr index -# define strrchr rindex -# endif -char *strchr(), *strrchr(); -# ifndef HAVE_MEMCPY -# define memcpy(d, s, n) bcopy ((s), (d), (n)) -# define memmove(d, s, n) bcopy ((s), (d), (n)) -# endif -#endif - -#if defined(__riscos__) && defined(FPA10) -#include "ymath.h" -#else -#include <math.h> -#endif - -#include "decode_i386.h" -#include "dct64_i386.h" -#include "tabinit.h" - -#ifdef WITH_DMALLOC -#include <dmalloc.h> -#endif - - - /* old WRITE_SAMPLE_CLIPPED */ -#define WRITE_SAMPLE_CLIPPED(TYPE,samples,sum,clip) \ - if( (sum) > 32767.0) { *(samples) = 0x7fff; (clip)++; } \ - else if( (sum) < -32768.0) { *(samples) = -0x8000; (clip)++; } \ - else { *(samples) = (TYPE)((sum)>0 ? (sum)+0.5 : (sum)-0.5) ; } - -#define WRITE_SAMPLE_UNCLIPPED(TYPE,samples,sum,clip) \ - *samples = (TYPE)sum; - - /* *INDENT-OFF* */ - - /* versions: clipped (when TYPE == short) and unclipped (when TYPE == real) of synth_1to1_mono* functions */ -#define SYNTH_1TO1_MONO_CLIPCHOICE(TYPE,SYNTH_1TO1) \ - TYPE samples_tmp[64]; \ - TYPE *tmp1 = samples_tmp; \ - int i,ret; \ - int pnt1 = 0; \ - \ - ret = SYNTH_1TO1 (mp,bandPtr,0,(unsigned char *) samples_tmp,&pnt1); \ - out += *pnt; \ - \ - for(i=0;i<32;i++) { \ - *( (TYPE *) out) = *tmp1; \ - out += sizeof(TYPE); \ - tmp1 += 2; \ - } \ - *pnt += 32*sizeof(TYPE); \ - \ - return ret; - - /* *INDENT-ON* */ - - -int -synth_1to1_mono(PMPSTR mp, real * bandPtr, unsigned char *out, int *pnt) -{ - SYNTH_1TO1_MONO_CLIPCHOICE(short, synth_1to1) -} int -synth_1to1_mono_unclipped(PMPSTR mp, real * bandPtr, unsigned char *out, int *pnt) -{ - SYNTH_1TO1_MONO_CLIPCHOICE(real, synth_1to1_unclipped) -} - - /* *INDENT-OFF* */ -/* versions: clipped (when TYPE == short) and unclipped (when TYPE == real) of synth_1to1* functions */ -#define SYNTH_1TO1_CLIPCHOICE(TYPE,WRITE_SAMPLE) \ - static const int step = 2; \ - int bo; \ - TYPE *samples = (TYPE *) (out + *pnt); \ - \ - real *b0,(*buf)[0x110]; \ - int clip = 0; \ - int bo1; \ - \ - bo = mp->synth_bo; \ - \ - if(!channel) { \ - bo--; \ - bo &= 0xf; \ - buf = mp->synth_buffs[0]; \ - } \ - else { \ - samples++; \ - buf = mp->synth_buffs[1]; \ - } \ - \ - if(bo & 0x1) { \ - b0 = buf[0]; \ - bo1 = bo; \ - dct64(buf[1]+((bo+1)&0xf),buf[0]+bo,bandPtr); \ - } \ - else { \ - b0 = buf[1]; \ - bo1 = bo+1; \ - dct64(buf[0]+bo,buf[1]+bo+1,bandPtr); \ - } \ - \ - mp->synth_bo = bo; \ - \ - { \ - int j; \ - real *window = decwin + 16 - bo1; \ - \ - for (j=16;j;j--,b0+=0x10,window+=0x20,samples+=step) \ - { \ - real sum; \ - sum = window[0x0] * b0[0x0]; \ - sum -= window[0x1] * b0[0x1]; \ - sum += window[0x2] * b0[0x2]; \ - sum -= window[0x3] * b0[0x3]; \ - sum += window[0x4] * b0[0x4]; \ - sum -= window[0x5] * b0[0x5]; \ - sum += window[0x6] * b0[0x6]; \ - sum -= window[0x7] * b0[0x7]; \ - sum += window[0x8] * b0[0x8]; \ - sum -= window[0x9] * b0[0x9]; \ - sum += window[0xA] * b0[0xA]; \ - sum -= window[0xB] * b0[0xB]; \ - sum += window[0xC] * b0[0xC]; \ - sum -= window[0xD] * b0[0xD]; \ - sum += window[0xE] * b0[0xE]; \ - sum -= window[0xF] * b0[0xF]; \ - \ - WRITE_SAMPLE (TYPE,samples,sum,clip); \ - } \ - \ - { \ - real sum; \ - sum = window[0x0] * b0[0x0]; \ - sum += window[0x2] * b0[0x2]; \ - sum += window[0x4] * b0[0x4]; \ - sum += window[0x6] * b0[0x6]; \ - sum += window[0x8] * b0[0x8]; \ - sum += window[0xA] * b0[0xA]; \ - sum += window[0xC] * b0[0xC]; \ - sum += window[0xE] * b0[0xE]; \ - WRITE_SAMPLE (TYPE,samples,sum,clip); \ - b0-=0x10,window-=0x20,samples+=step; \ - } \ - window += bo1<<1; \ - \ - for (j=15;j;j--,b0-=0x10,window-=0x20,samples+=step) \ - { \ - real sum; \ - sum = -window[-0x1] * b0[0x0]; \ - sum -= window[-0x2] * b0[0x1]; \ - sum -= window[-0x3] * b0[0x2]; \ - sum -= window[-0x4] * b0[0x3]; \ - sum -= window[-0x5] * b0[0x4]; \ - sum -= window[-0x6] * b0[0x5]; \ - sum -= window[-0x7] * b0[0x6]; \ - sum -= window[-0x8] * b0[0x7]; \ - sum -= window[-0x9] * b0[0x8]; \ - sum -= window[-0xA] * b0[0x9]; \ - sum -= window[-0xB] * b0[0xA]; \ - sum -= window[-0xC] * b0[0xB]; \ - sum -= window[-0xD] * b0[0xC]; \ - sum -= window[-0xE] * b0[0xD]; \ - sum -= window[-0xF] * b0[0xE]; \ - sum -= window[-0x0] * b0[0xF]; \ - \ - WRITE_SAMPLE (TYPE,samples,sum,clip); \ - } \ - } \ - *pnt += 64*sizeof(TYPE); \ - \ - return clip; - /* *INDENT-ON* */ - - -int -synth_1to1(PMPSTR mp, real * bandPtr, int channel, unsigned char *out, int *pnt) -{ - SYNTH_1TO1_CLIPCHOICE(short, WRITE_SAMPLE_CLIPPED) -} int -synth_1to1_unclipped(PMPSTR mp, real * bandPtr, int channel, unsigned char *out, int *pnt) -{ - SYNTH_1TO1_CLIPCHOICE(real, WRITE_SAMPLE_UNCLIPPED) -} diff --git a/platform/win32/msvc/external/lame/mpglib/decode_i386.h b/platform/win32/msvc/external/lame/mpglib/decode_i386.h deleted file mode 100644 index 8fc9dbe8c62..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/decode_i386.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 1999-2010 The L.A.M.E. project - * - * Initially written by Michael Hipp, see also AUTHORS and README. - * - * 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 DECODE_I386_H_INCLUDED -#define DECODE_I386_H_INCLUDED - -#include "common.h" - -int synth_1to1_mono(PMPSTR mp, real * bandPtr, unsigned char *out, int *pnt); -int synth_1to1(PMPSTR mp, real * bandPtr, int channel, unsigned char *out, int *pnt); - -int synth_1to1_mono_unclipped(PMPSTR mp, real * bandPtr, unsigned char *out, int *pnt); -int synth_1to1_unclipped(PMPSTR mp, real * bandPtr, int channel, unsigned char *out, int *pnt); - -#endif diff --git a/platform/win32/msvc/external/lame/mpglib/depcomp b/platform/win32/msvc/external/lame/mpglib/depcomp deleted file mode 100644 index df8eea7e4ce..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/depcomp +++ /dev/null @@ -1,630 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2009-04-28.21; # UTC - -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free -# Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. - -case $1 in - '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: depcomp [--help] [--version] PROGRAM [ARGS] - -Run PROGRAMS ARGS to compile a file, generating dependencies -as side-effects. - -Environment variables: - depmode Dependency tracking mode. - source Source file read by `PROGRAMS ARGS'. - object Object file output by `PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. - tmpdepfile Temporary file to use when outputing dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to <bug-automake@gnu.org>. -EOF - exit $? - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit $? - ;; -esac - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi - -# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -depfile=${depfile-`echo "$object" | - sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -cygpath_u="cygpath -u -f -" -if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u="sed s,\\\\\\\\,/,g" - depmode=msvisualcpp -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. -## Unfortunately, FreeBSD c89 acceptance of flags depends upon -## the command line argument order; so add the flags where they -## appear in depend2.am. Note that the slowdown incurred here -## affects only configure: in makefiles, %FASTDEP% shortcuts this. - for arg - do - case $arg in - -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; - *) set fnord "$@" "$arg" ;; - esac - shift # fnord - shift # $arg - done - "$@" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the `deleted header file' problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. - tr ' ' ' -' < "$tmpdepfile" | -## Some versions of gcc put a space before the `:'. On the theory -## that the space means something, we add a space to the output as -## well. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" - - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like `#:fec' to the end of the - # dependency line. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr ' -' ' ' >> "$depfile" - echo >> "$depfile" - - # The second pass generates a dummy entry for each header file. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts `$object:' at the - # start of each line; $object doesn't have directory information. - # Version 6 uses the directory in both cases. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.u - tmpdepfile2=$base.u - tmpdepfile3=$dir.libs/$base.u - "$@" -Wc,-M - else - tmpdepfile1=$dir$base.u - tmpdepfile2=$dir$base.u - tmpdepfile3=$dir$base.u - "$@" -M - fi - stat=$? - - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - # Each line is of the form `foo.o: dependent.h'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -icc) - # Intel's C compiler understands `-MD -MF file'. However on - # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want: - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using \ : - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form `foo.o: dependent.h', - # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | - sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp2) - # The "hp" stanza above does not work with aCC (C++) and HP's ia64 - # compilers, which have integrated preprocessors. The correct option - # to use with these is +Maked; it writes dependencies to a file named - # 'foo.d', which lands next to the object file, wherever that - # happens to be. - # Much of this is similar to the tru64 case; see comments there. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir.libs/$base.d - "$@" -Wc,+Maked - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - "$@" +Maked - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" - # Add `dependent.h:' lines. - sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" "$tmpdepfile2" - ;; - -tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in `foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - # With Tru64 cc, shared objects can also be used to make a - # static library. This mechanism is used in libtool 1.4 series to - # handle both shared and static libraries in a single compilation. - # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. - # - # With libtool 1.5 this exception was removed, and libtool now - # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 - tmpdepfile2=$dir$base.o.d # libtool 1.5 - tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 - tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.o.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - tmpdepfile4=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for `:' - # in the target name. This is to cope with DOS-style filenames: - # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. - "$@" $dashmflag | - sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - tr ' ' ' -' < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - "$@" || exit $? - # Remove any Libtool call - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no eat=no - for arg - do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - if test $eat = yes; then - eat=no - continue - fi - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - # Strip any option that makedepend may not understand. Remove - # the object too, otherwise makedepend will parse it as a source file. - -arch) - eat=yes ;; - -*|$object) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done - obj_suffix=`echo "$object" | sed 's/^.*\././'` - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' ' -' | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - "$@" -E | - sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - IFS=" " - for arg - do - case "$arg" in - -o) - shift - ;; - $object) - shift - ;; - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E 2>/dev/null | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" - echo " " >> "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvcmsys) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/platform/win32/msvc/external/lame/mpglib/huffman.h b/platform/win32/msvc/external/lame/mpglib/huffman.h deleted file mode 100644 index 7d73a74baf3..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/huffman.h +++ /dev/null @@ -1,353 +0,0 @@ -/* - * Copyright (C) 1999-2010 The L.A.M.E. project - * - * Initially written by Michael Hipp, see also AUTHORS and README. - * - * 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. - * - * huffman tables ... recalcualted to work with my optimzed - * decoder scheme (MH) - * - * probably we could save a few bytes of memory, because the - * smaller tables are often the part of a bigger table - */ - -/* *INDENT-OFF* */ - - -struct newhuff -{ - const unsigned int linbits; - const short * const table; -}; - -static const short tab0[] = -{ - 0 -}; - -static const short tab1[] = -{ - -5, -3, -1, 17, 1, 16, 0 -}; - -static const short tab2[] = -{ - -15, -11, -9, -5, -3, -1, 34, 2, 18, -1, 33, 32, 17, -1, 1, 16, 0 -}; - -static const short tab3[] = -{ - -13, -11, -9, -5, -3, -1, 34, 2, 18, -1, 33, 32, 16, 17, -1, - 1, 0 -}; - -static const short tab5[] = -{ - -29, -25, -23, -15, -7, -5, -3, -1, 51, 35, 50, 49, -3, -1, 19, - 3, -1, 48, 34, -3, -1, 18, 33, -1, 2, 32, 17, -1, 1, 16, - 0 -}; - -static const short tab6[] = -{ - -25, -19, -13, -9, -5, -3, -1, 51, 3, 35, -1, 50, 48, -1, 19, - 49, -3, -1, 34, 2, 18, -3, -1, 33, 32, 1, -1, 17, -1, 16, - 0 -}; - -static const short tab7[] = -{ - -69, -65, -57, -39, -29, -17, -11, -7, -3, -1, 85, 69, -1, 84, 83, - -1, 53, 68, -3, -1, 37, 82, 21, -5, -1, 81, -1, 5, 52, -1, - 80, -1, 67, 51, -5, -3, -1, 36, 66, 20, -1, 65, 64, -11, -7, - -3, -1, 4, 35, -1, 50, 3, -1, 19, 49, -3, -1, 48, 34, 18, - -5, -1, 33, -1, 2, 32, 17, -1, 1, 16, 0 -}; - -static const short tab8[] = -{ - -65, -63, -59, -45, -31, -19, -13, -7, -5, -3, -1, 85, 84, 69, 83, - -3, -1, 53, 68, 37, -3, -1, 82, 5, 21, -5, -1, 81, -1, 52, - 67, -3, -1, 80, 51, 36, -5, -3, -1, 66, 20, 65, -3, -1, 4, - 64, -1, 35, 50, -9, -7, -3, -1, 19, 49, -1, 3, 48, 34, -1, - 2, 32, -1, 18, 33, 17, -3, -1, 1, 16, 0 -}; - -static const short tab9[] = -{ - -63, -53, -41, -29, -19, -11, -5, -3, -1, 85, 69, 53, -1, 83, -1, - 84, 5, -3, -1, 68, 37, -1, 82, 21, -3, -1, 81, 52, -1, 67, - -1, 80, 4, -7, -3, -1, 36, 66, -1, 51, 64, -1, 20, 65, -5, - -3, -1, 35, 50, 19, -1, 49, -1, 3, 48, -5, -3, -1, 34, 2, - 18, -1, 33, 32, -3, -1, 17, 1, -1, 16, 0 -}; - -static const short tab10[] = -{ --125,-121,-111, -83, -55, -35, -21, -13, -7, -3, -1, 119, 103, -1, 118, - 87, -3, -1, 117, 102, 71, -3, -1, 116, 86, -1, 101, 55, -9, -3, - -1, 115, 70, -3, -1, 85, 84, 99, -1, 39, 114, -11, -5, -3, -1, - 100, 7, 112, -1, 98, -1, 69, 53, -5, -1, 6, -1, 83, 68, 23, - -17, -5, -1, 113, -1, 54, 38, -5, -3, -1, 37, 82, 21, -1, 81, - -1, 52, 67, -3, -1, 22, 97, -1, 96, -1, 5, 80, -19, -11, -7, - -3, -1, 36, 66, -1, 51, 4, -1, 20, 65, -3, -1, 64, 35, -1, - 50, 3, -3, -1, 19, 49, -1, 48, 34, -7, -3, -1, 18, 33, -1, - 2, 32, 17, -1, 1, 16, 0 -}; - -static const short tab11[] = -{ --121,-113, -89, -59, -43, -27, -17, -7, -3, -1, 119, 103, -1, 118, 117, - -3, -1, 102, 71, -1, 116, -1, 87, 85, -5, -3, -1, 86, 101, 55, - -1, 115, 70, -9, -7, -3, -1, 69, 84, -1, 53, 83, 39, -1, 114, - -1, 100, 7, -5, -1, 113, -1, 23, 112, -3, -1, 54, 99, -1, 96, - -1, 68, 37, -13, -7, -5, -3, -1, 82, 5, 21, 98, -3, -1, 38, - 6, 22, -5, -1, 97, -1, 81, 52, -5, -1, 80, -1, 67, 51, -1, - 36, 66, -15, -11, -7, -3, -1, 20, 65, -1, 4, 64, -1, 35, 50, - -1, 19, 49, -5, -3, -1, 3, 48, 34, 33, -5, -1, 18, -1, 2, - 32, 17, -3, -1, 1, 16, 0 -}; - -static const short tab12[] = -{ --115, -99, -73, -45, -27, -17, -9, -5, -3, -1, 119, 103, 118, -1, 87, - 117, -3, -1, 102, 71, -1, 116, 101, -3, -1, 86, 55, -3, -1, 115, - 85, 39, -7, -3, -1, 114, 70, -1, 100, 23, -5, -1, 113, -1, 7, - 112, -1, 54, 99, -13, -9, -3, -1, 69, 84, -1, 68, -1, 6, 5, - -1, 38, 98, -5, -1, 97, -1, 22, 96, -3, -1, 53, 83, -1, 37, - 82, -17, -7, -3, -1, 21, 81, -1, 52, 67, -5, -3, -1, 80, 4, - 36, -1, 66, 20, -3, -1, 51, 65, -1, 35, 50, -11, -7, -5, -3, - -1, 64, 3, 48, 19, -1, 49, 34, -1, 18, 33, -7, -5, -3, -1, - 2, 32, 0, 17, -1, 1, 16 -}; - -static const short tab13[] = -{ --509,-503,-475,-405,-333,-265,-205,-153,-115, -83, -53, -35, -21, -13, -9, - -7, -5, -3, -1, 254, 252, 253, 237, 255, -1, 239, 223, -3, -1, 238, - 207, -1, 222, 191, -9, -3, -1, 251, 206, -1, 220, -1, 175, 233, -1, - 236, 221, -9, -5, -3, -1, 250, 205, 190, -1, 235, 159, -3, -1, 249, - 234, -1, 189, 219, -17, -9, -3, -1, 143, 248, -1, 204, -1, 174, 158, - -5, -1, 142, -1, 127, 126, 247, -5, -1, 218, -1, 173, 188, -3, -1, - 203, 246, 111, -15, -7, -3, -1, 232, 95, -1, 157, 217, -3, -1, 245, - 231, -1, 172, 187, -9, -3, -1, 79, 244, -3, -1, 202, 230, 243, -1, - 63, -1, 141, 216, -21, -9, -3, -1, 47, 242, -3, -1, 110, 156, 15, - -5, -3, -1, 201, 94, 171, -3, -1, 125, 215, 78, -11, -5, -3, -1, - 200, 214, 62, -1, 185, -1, 155, 170, -1, 31, 241, -23, -13, -5, -1, - 240, -1, 186, 229, -3, -1, 228, 140, -1, 109, 227, -5, -1, 226, -1, - 46, 14, -1, 30, 225, -15, -7, -3, -1, 224, 93, -1, 213, 124, -3, - -1, 199, 77, -1, 139, 184, -7, -3, -1, 212, 154, -1, 169, 108, -1, - 198, 61, -37, -21, -9, -5, -3, -1, 211, 123, 45, -1, 210, 29, -5, - -1, 183, -1, 92, 197, -3, -1, 153, 122, 195, -7, -5, -3, -1, 167, - 151, 75, 209, -3, -1, 13, 208, -1, 138, 168, -11, -7, -3, -1, 76, - 196, -1, 107, 182, -1, 60, 44, -3, -1, 194, 91, -3, -1, 181, 137, - 28, -43, -23, -11, -5, -1, 193, -1, 152, 12, -1, 192, -1, 180, 106, - -5, -3, -1, 166, 121, 59, -1, 179, -1, 136, 90, -11, -5, -1, 43, - -1, 165, 105, -1, 164, -1, 120, 135, -5, -1, 148, -1, 119, 118, 178, - -11, -3, -1, 27, 177, -3, -1, 11, 176, -1, 150, 74, -7, -3, -1, - 58, 163, -1, 89, 149, -1, 42, 162, -47, -23, -9, -3, -1, 26, 161, - -3, -1, 10, 104, 160, -5, -3, -1, 134, 73, 147, -3, -1, 57, 88, - -1, 133, 103, -9, -3, -1, 41, 146, -3, -1, 87, 117, 56, -5, -1, - 131, -1, 102, 71, -3, -1, 116, 86, -1, 101, 115, -11, -3, -1, 25, - 145, -3, -1, 9, 144, -1, 72, 132, -7, -5, -1, 114, -1, 70, 100, - 40, -1, 130, 24, -41, -27, -11, -5, -3, -1, 55, 39, 23, -1, 113, - -1, 85, 7, -7, -3, -1, 112, 54, -1, 99, 69, -3, -1, 84, 38, - -1, 98, 53, -5, -1, 129, -1, 8, 128, -3, -1, 22, 97, -1, 6, - 96, -13, -9, -5, -3, -1, 83, 68, 37, -1, 82, 5, -1, 21, 81, - -7, -3, -1, 52, 67, -1, 80, 36, -3, -1, 66, 51, 20, -19, -11, - -5, -1, 65, -1, 4, 64, -3, -1, 35, 50, 19, -3, -1, 49, 3, - -1, 48, 34, -3, -1, 18, 33, -1, 2, 32, -3, -1, 17, 1, 16, - 0 -}; - -static const short tab15[] = -{ --495,-445,-355,-263,-183,-115, -77, -43, -27, -13, -7, -3, -1, 255, 239, - -1, 254, 223, -1, 238, -1, 253, 207, -7, -3, -1, 252, 222, -1, 237, - 191, -1, 251, -1, 206, 236, -7, -3, -1, 221, 175, -1, 250, 190, -3, - -1, 235, 205, -1, 220, 159, -15, -7, -3, -1, 249, 234, -1, 189, 219, - -3, -1, 143, 248, -1, 204, 158, -7, -3, -1, 233, 127, -1, 247, 173, - -3, -1, 218, 188, -1, 111, -1, 174, 15, -19, -11, -3, -1, 203, 246, - -3, -1, 142, 232, -1, 95, 157, -3, -1, 245, 126, -1, 231, 172, -9, - -3, -1, 202, 187, -3, -1, 217, 141, 79, -3, -1, 244, 63, -1, 243, - 216, -33, -17, -9, -3, -1, 230, 47, -1, 242, -1, 110, 240, -3, -1, - 31, 241, -1, 156, 201, -7, -3, -1, 94, 171, -1, 186, 229, -3, -1, - 125, 215, -1, 78, 228, -15, -7, -3, -1, 140, 200, -1, 62, 109, -3, - -1, 214, 227, -1, 155, 185, -7, -3, -1, 46, 170, -1, 226, 30, -5, - -1, 225, -1, 14, 224, -1, 93, 213, -45, -25, -13, -7, -3, -1, 124, - 199, -1, 77, 139, -1, 212, -1, 184, 154, -7, -3, -1, 169, 108, -1, - 198, 61, -1, 211, 210, -9, -5, -3, -1, 45, 13, 29, -1, 123, 183, - -5, -1, 209, -1, 92, 208, -1, 197, 138, -17, -7, -3, -1, 168, 76, - -1, 196, 107, -5, -1, 182, -1, 153, 12, -1, 60, 195, -9, -3, -1, - 122, 167, -1, 166, -1, 192, 11, -1, 194, -1, 44, 91, -55, -29, -15, - -7, -3, -1, 181, 28, -1, 137, 152, -3, -1, 193, 75, -1, 180, 106, - -5, -3, -1, 59, 121, 179, -3, -1, 151, 136, -1, 43, 90, -11, -5, - -1, 178, -1, 165, 27, -1, 177, -1, 176, 105, -7, -3, -1, 150, 74, - -1, 164, 120, -3, -1, 135, 58, 163, -17, -7, -3, -1, 89, 149, -1, - 42, 162, -3, -1, 26, 161, -3, -1, 10, 160, 104, -7, -3, -1, 134, - 73, -1, 148, 57, -5, -1, 147, -1, 119, 9, -1, 88, 133, -53, -29, - -13, -7, -3, -1, 41, 103, -1, 118, 146, -1, 145, -1, 25, 144, -7, - -3, -1, 72, 132, -1, 87, 117, -3, -1, 56, 131, -1, 102, 71, -7, - -3, -1, 40, 130, -1, 24, 129, -7, -3, -1, 116, 8, -1, 128, 86, - -3, -1, 101, 55, -1, 115, 70, -17, -7, -3, -1, 39, 114, -1, 100, - 23, -3, -1, 85, 113, -3, -1, 7, 112, 54, -7, -3, -1, 99, 69, - -1, 84, 38, -3, -1, 98, 22, -3, -1, 6, 96, 53, -33, -19, -9, - -5, -1, 97, -1, 83, 68, -1, 37, 82, -3, -1, 21, 81, -3, -1, - 5, 80, 52, -7, -3, -1, 67, 36, -1, 66, 51, -1, 65, -1, 20, - 4, -9, -3, -1, 35, 50, -3, -1, 64, 3, 19, -3, -1, 49, 48, - 34, -9, -7, -3, -1, 18, 33, -1, 2, 32, 17, -3, -1, 1, 16, - 0 -}; - -static const short tab16[] = -{ --509,-503,-461,-323,-103, -37, -27, -15, -7, -3, -1, 239, 254, -1, 223, - 253, -3, -1, 207, 252, -1, 191, 251, -5, -1, 175, -1, 250, 159, -3, - -1, 249, 248, 143, -7, -3, -1, 127, 247, -1, 111, 246, 255, -9, -5, - -3, -1, 95, 245, 79, -1, 244, 243, -53, -1, 240, -1, 63, -29, -19, - -13, -7, -5, -1, 206, -1, 236, 221, 222, -1, 233, -1, 234, 217, -1, - 238, -1, 237, 235, -3, -1, 190, 205, -3, -1, 220, 219, 174, -11, -5, - -1, 204, -1, 173, 218, -3, -1, 126, 172, 202, -5, -3, -1, 201, 125, - 94, 189, 242, -93, -5, -3, -1, 47, 15, 31, -1, 241, -49, -25, -13, - -5, -1, 158, -1, 188, 203, -3, -1, 142, 232, -1, 157, 231, -7, -3, - -1, 187, 141, -1, 216, 110, -1, 230, 156, -13, -7, -3, -1, 171, 186, - -1, 229, 215, -1, 78, -1, 228, 140, -3, -1, 200, 62, -1, 109, -1, - 214, 155, -19, -11, -5, -3, -1, 185, 170, 225, -1, 212, -1, 184, 169, - -5, -1, 123, -1, 183, 208, 227, -7, -3, -1, 14, 224, -1, 93, 213, - -3, -1, 124, 199, -1, 77, 139, -75, -45, -27, -13, -7, -3, -1, 154, - 108, -1, 198, 61, -3, -1, 92, 197, 13, -7, -3, -1, 138, 168, -1, - 153, 76, -3, -1, 182, 122, 60, -11, -5, -3, -1, 91, 137, 28, -1, - 192, -1, 152, 121, -1, 226, -1, 46, 30, -15, -7, -3, -1, 211, 45, - -1, 210, 209, -5, -1, 59, -1, 151, 136, 29, -7, -3, -1, 196, 107, - -1, 195, 167, -1, 44, -1, 194, 181, -23, -13, -7, -3, -1, 193, 12, - -1, 75, 180, -3, -1, 106, 166, 179, -5, -3, -1, 90, 165, 43, -1, - 178, 27, -13, -5, -1, 177, -1, 11, 176, -3, -1, 105, 150, -1, 74, - 164, -5, -3, -1, 120, 135, 163, -3, -1, 58, 89, 42, -97, -57, -33, - -19, -11, -5, -3, -1, 149, 104, 161, -3, -1, 134, 119, 148, -5, -3, - -1, 73, 87, 103, 162, -5, -1, 26, -1, 10, 160, -3, -1, 57, 147, - -1, 88, 133, -9, -3, -1, 41, 146, -3, -1, 118, 9, 25, -5, -1, - 145, -1, 144, 72, -3, -1, 132, 117, -1, 56, 131, -21, -11, -5, -3, - -1, 102, 40, 130, -3, -1, 71, 116, 24, -3, -1, 129, 128, -3, -1, - 8, 86, 55, -9, -5, -1, 115, -1, 101, 70, -1, 39, 114, -5, -3, - -1, 100, 85, 7, 23, -23, -13, -5, -1, 113, -1, 112, 54, -3, -1, - 99, 69, -1, 84, 38, -3, -1, 98, 22, -1, 97, -1, 6, 96, -9, - -5, -1, 83, -1, 53, 68, -1, 37, 82, -1, 81, -1, 21, 5, -33, - -23, -13, -7, -3, -1, 52, 67, -1, 80, 36, -3, -1, 66, 51, 20, - -5, -1, 65, -1, 4, 64, -1, 35, 50, -3, -1, 19, 49, -3, -1, - 3, 48, 34, -3, -1, 18, 33, -1, 2, 32, -3, -1, 17, 1, 16, - 0 -}; - -static const short tab24[] = -{ --451,-117, -43, -25, -15, -7, -3, -1, 239, 254, -1, 223, 253, -3, -1, - 207, 252, -1, 191, 251, -5, -1, 250, -1, 175, 159, -1, 249, 248, -9, - -5, -3, -1, 143, 127, 247, -1, 111, 246, -3, -1, 95, 245, -1, 79, - 244, -71, -7, -3, -1, 63, 243, -1, 47, 242, -5, -1, 241, -1, 31, - 240, -25, -9, -1, 15, -3, -1, 238, 222, -1, 237, 206, -7, -3, -1, - 236, 221, -1, 190, 235, -3, -1, 205, 220, -1, 174, 234, -15, -7, -3, - -1, 189, 219, -1, 204, 158, -3, -1, 233, 173, -1, 218, 188, -7, -3, - -1, 203, 142, -1, 232, 157, -3, -1, 217, 126, -1, 231, 172, 255,-235, --143, -77, -45, -25, -15, -7, -3, -1, 202, 187, -1, 141, 216, -5, -3, - -1, 14, 224, 13, 230, -5, -3, -1, 110, 156, 201, -1, 94, 186, -9, - -5, -1, 229, -1, 171, 125, -1, 215, 228, -3, -1, 140, 200, -3, -1, - 78, 46, 62, -15, -7, -3, -1, 109, 214, -1, 227, 155, -3, -1, 185, - 170, -1, 226, 30, -7, -3, -1, 225, 93, -1, 213, 124, -3, -1, 199, - 77, -1, 139, 184, -31, -15, -7, -3, -1, 212, 154, -1, 169, 108, -3, - -1, 198, 61, -1, 211, 45, -7, -3, -1, 210, 29, -1, 123, 183, -3, - -1, 209, 92, -1, 197, 138, -17, -7, -3, -1, 168, 153, -1, 76, 196, - -3, -1, 107, 182, -3, -1, 208, 12, 60, -7, -3, -1, 195, 122, -1, - 167, 44, -3, -1, 194, 91, -1, 181, 28, -57, -35, -19, -7, -3, -1, - 137, 152, -1, 193, 75, -5, -3, -1, 192, 11, 59, -3, -1, 176, 10, - 26, -5, -1, 180, -1, 106, 166, -3, -1, 121, 151, -3, -1, 160, 9, - 144, -9, -3, -1, 179, 136, -3, -1, 43, 90, 178, -7, -3, -1, 165, - 27, -1, 177, 105, -1, 150, 164, -17, -9, -5, -3, -1, 74, 120, 135, - -1, 58, 163, -3, -1, 89, 149, -1, 42, 162, -7, -3, -1, 161, 104, - -1, 134, 119, -3, -1, 73, 148, -1, 57, 147, -63, -31, -15, -7, -3, - -1, 88, 133, -1, 41, 103, -3, -1, 118, 146, -1, 25, 145, -7, -3, - -1, 72, 132, -1, 87, 117, -3, -1, 56, 131, -1, 102, 40, -17, -7, - -3, -1, 130, 24, -1, 71, 116, -5, -1, 129, -1, 8, 128, -1, 86, - 101, -7, -5, -1, 23, -1, 7, 112, 115, -3, -1, 55, 39, 114, -15, - -7, -3, -1, 70, 100, -1, 85, 113, -3, -1, 54, 99, -1, 69, 84, - -7, -3, -1, 38, 98, -1, 22, 97, -5, -3, -1, 6, 96, 53, -1, - 83, 68, -51, -37, -23, -15, -9, -3, -1, 37, 82, -1, 21, -1, 5, - 80, -1, 81, -1, 52, 67, -3, -1, 36, 66, -1, 51, 20, -9, -5, - -1, 65, -1, 4, 64, -1, 35, 50, -1, 19, 49, -7, -5, -3, -1, - 3, 48, 34, 18, -1, 33, -1, 2, 32, -3, -1, 17, 1, -1, 16, - 0 -}; - -static const short tab_c0[] = -{ - -29, -21, -13, -7, -3, -1, 11, 15, -1, 13, 14, -3, -1, 7, 5, - 9, -3, -1, 6, 3, -1, 10, 12, -3, -1, 2, 1, -1, 4, 8, - 0 -}; - -static const short tab_c1[] = -{ - -15, -7, -3, -1, 15, 14, -1, 13, 12, -3, -1, 11, 10, -1, 9, - 8, -7, -3, -1, 7, 6, -1, 5, 4, -3, -1, 3, 2, -1, 1, - 0 -}; - - - -static const struct newhuff ht[] = -{ - { /* 0 */ 0 , tab0 } , - { /* 2 */ 0 , tab1 } , - { /* 3 */ 0 , tab2 } , - { /* 3 */ 0 , tab3 } , - { /* 0 */ 0 , tab0 } , - { /* 4 */ 0 , tab5 } , - { /* 4 */ 0 , tab6 } , - { /* 6 */ 0 , tab7 } , - { /* 6 */ 0 , tab8 } , - { /* 6 */ 0 , tab9 } , - { /* 8 */ 0 , tab10 } , - { /* 8 */ 0 , tab11 } , - { /* 8 */ 0 , tab12 } , - { /* 16 */ 0 , tab13 } , - { /* 0 */ 0 , tab0 } , - { /* 16 */ 0 , tab15 } , - - { /* 16 */ 1 , tab16 } , - { /* 16 */ 2 , tab16 } , - { /* 16 */ 3 , tab16 } , - { /* 16 */ 4 , tab16 } , - { /* 16 */ 6 , tab16 } , - { /* 16 */ 8 , tab16 } , - { /* 16 */ 10, tab16 } , - { /* 16 */ 13, tab16 } , - { /* 16 */ 4 , tab24 } , - { /* 16 */ 5 , tab24 } , - { /* 16 */ 6 , tab24 } , - { /* 16 */ 7 , tab24 } , - { /* 16 */ 8 , tab24 } , - { /* 16 */ 9 , tab24 } , - { /* 16 */ 11, tab24 } , - { /* 16 */ 13, tab24 } -}; - -static const struct newhuff htc[] = -{ - { /* 1 , 1 , */ 0 , tab_c0 } , - { /* 1 , 1 , */ 0 , tab_c1 } -}; - - /* *INDENT-ON* */ diff --git a/platform/win32/msvc/external/lame/mpglib/interface.c b/platform/win32/msvc/external/lame/mpglib/interface.c deleted file mode 100644 index e916440925b..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/interface.c +++ /dev/null @@ -1,711 +0,0 @@ -/* - * interface.c - * - * Copyright (C) 1999-2010 The L.A.M.E. project - * - * Initially written by Michael Hipp, see also AUTHORS and README. - * - * 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. - */ -/* $Id: interface.c,v 1.64 2010/03/22 14:30:19 robert Exp $ */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdlib.h> -#include <stdio.h> - -#include "common.h" -#include "interface.h" -#include "tabinit.h" -#include "layer3.h" -#include "lame.h" -#include "machine.h" -#include "VbrTag.h" -#include "decode_i386.h" - -#include "layer1.h" -#include "layer2.h" - -#ifdef WITH_DMALLOC -#include <dmalloc.h> -#endif - -extern void lame_report_def(const char* format, va_list args); - -/* #define HIP_DEBUG */ - -int -InitMP3(PMPSTR mp) -{ - hip_init_tables_layer1(); - hip_init_tables_layer2(); - hip_init_tables_layer3(); - - memset(mp, 0, sizeof(MPSTR)); - - mp->framesize = 0; - mp->num_frames = 0; - mp->enc_delay = -1; - mp->enc_padding = -1; - mp->vbr_header = 0; - mp->header_parsed = 0; - mp->side_parsed = 0; - mp->data_parsed = 0; - mp->free_format = 0; - mp->old_free_format = 0; - mp->ssize = 0; - mp->dsize = 0; - mp->fsizeold = -1; - mp->bsize = 0; - mp->head = mp->tail = NULL; - mp->fr.single = -1; - mp->bsnum = 0; - mp->wordpointer = mp->bsspace[mp->bsnum] + 512; - mp->bitindex = 0; - mp->synth_bo = 1; - mp->sync_bitstream = 1; - - mp->report_dbg = &lame_report_def; - mp->report_err = &lame_report_def; - mp->report_msg = &lame_report_def; - - make_decode_tables(32767); - - return 1; -} - -void -ExitMP3(PMPSTR mp) -{ - struct buf *b, *bn; - - b = mp->tail; - while (b) { - free(b->pnt); - bn = b->next; - free(b); - b = bn; - } -} - -static struct buf * -addbuf(PMPSTR mp, unsigned char *buf, int size) -{ - struct buf *nbuf; - - nbuf = (struct buf *) malloc(sizeof(struct buf)); - if (!nbuf) { - lame_report_fnc(mp->report_err, "hip: addbuf() Out of memory!\n"); - return NULL; - } - nbuf->pnt = (unsigned char *) malloc((size_t) size); - if (!nbuf->pnt) { - free(nbuf); - return NULL; - } - nbuf->size = size; - memcpy(nbuf->pnt, buf, (size_t) size); - nbuf->next = NULL; - nbuf->prev = mp->head; - nbuf->pos = 0; - - if (!mp->tail) { - mp->tail = nbuf; - } - else { - mp->head->next = nbuf; - } - - mp->head = nbuf; - mp->bsize += size; - - return nbuf; -} - -void -remove_buf(PMPSTR mp) -{ - struct buf *buf = mp->tail; - - mp->tail = buf->next; - if (mp->tail) - mp->tail->prev = NULL; - else { - mp->tail = mp->head = NULL; - } - - free(buf->pnt); - free(buf); - -} - -static int -read_buf_byte(PMPSTR mp) -{ - unsigned int b; - - int pos; - - - pos = mp->tail->pos; - while (pos >= mp->tail->size) { - remove_buf(mp); - if (!mp->tail) { - lame_report_fnc(mp->report_err, "hip: Fatal error! tried to read past mp buffer\n"); - exit(1); - } - pos = mp->tail->pos; - } - - b = mp->tail->pnt[pos]; - mp->bsize--; - mp->tail->pos++; - - - return b; -} - - - -static void -read_head(PMPSTR mp) -{ - unsigned long head; - - head = read_buf_byte(mp); - head <<= 8; - head |= read_buf_byte(mp); - head <<= 8; - head |= read_buf_byte(mp); - head <<= 8; - head |= read_buf_byte(mp); - - mp->header = head; -} - - - - -static void -copy_mp(PMPSTR mp, int size, unsigned char *ptr) -{ - int len = 0; - - while (len < size && mp->tail) { - int nlen; - int blen = mp->tail->size - mp->tail->pos; - if ((size - len) <= blen) { - nlen = size - len; - } - else { - nlen = blen; - } - memcpy(ptr + len, mp->tail->pnt + mp->tail->pos, (size_t) nlen); - len += nlen; - mp->tail->pos += nlen; - mp->bsize -= nlen; - if (mp->tail->pos == mp->tail->size) { - remove_buf(mp); - } - } -} - -/* number of bytes needed by GetVbrTag to parse header */ -#define XING_HEADER_SIZE 194 - -/* -traverse mp data structure without changing it -(just like sync_buffer) -pull out Xing bytes -call vbr header check code from LAME -if we find a header, parse it and also compute the VBR header size -if no header, do nothing. - -bytes = number of bytes before MPEG header. skip this many bytes -before starting to read -return value: number of bytes in VBR header, including syncword -*/ -static int -check_vbr_header(PMPSTR mp, int bytes) -{ - int i, pos; - struct buf *buf = mp->tail; - unsigned char xing[XING_HEADER_SIZE]; - VBRTAGDATA pTagData; - - pos = buf->pos; - /* skip to valid header */ - for (i = 0; i < bytes; ++i) { - while (pos >= buf->size) { - buf = buf->next; - if (!buf) - return -1; /* fatal error */ - pos = buf->pos; - } - ++pos; - } - /* now read header */ - for (i = 0; i < XING_HEADER_SIZE; ++i) { - while (pos >= buf->size) { - buf = buf->next; - if (!buf) - return -1; /* fatal error */ - pos = buf->pos; - } - xing[i] = buf->pnt[pos]; - ++pos; - } - - /* check first bytes for Xing header */ - mp->vbr_header = GetVbrTag(&pTagData, xing); - if (mp->vbr_header) { - mp->num_frames = pTagData.frames; - mp->enc_delay = pTagData.enc_delay; - mp->enc_padding = pTagData.enc_padding; - - /* lame_report_fnc(mp->report_msg,"hip: delays: %i %i \n",mp->enc_delay,mp->enc_padding); */ - /* lame_report_fnc(mp->report_msg,"hip: Xing VBR header dectected. MP3 file has %i frames\n", pTagData.frames); */ - if (pTagData.headersize < 1) - return 1; - return pTagData.headersize; - } - return 0; -} - - - - - -static int -sync_buffer(PMPSTR mp, int free_match) -{ - /* traverse mp structure without modifying pointers, looking - * for a frame valid header. - * if free_format, valid header must also have the same - * samplerate. - * return number of bytes in mp, before the header - * return -1 if header is not found - */ - unsigned int b[4] = { 0, 0, 0, 0 }; - int i, h, pos; - struct buf *buf = mp->tail; - if (!buf) - return -1; - - pos = buf->pos; - for (i = 0; i < mp->bsize; i++) { - /* get 4 bytes */ - - b[0] = b[1]; - b[1] = b[2]; - b[2] = b[3]; - while (pos >= buf->size) { - buf = buf->next; - pos = buf->pos; - if (!buf) { - return -1; - /* not enough data to read 4 bytes */ - } - } - b[3] = buf->pnt[pos]; - ++pos; - - if (i >= 3) { - struct frame *fr = &mp->fr; - unsigned long head; - - head = b[0]; - head <<= 8; - head |= b[1]; - head <<= 8; - head |= b[2]; - head <<= 8; - head |= b[3]; - h = head_check(head, fr->lay); - - if (h && free_match) { - /* just to be even more thorough, match the sample rate */ - int mode, stereo, sampling_frequency, mpeg25, lsf; - - if (head & (1 << 20)) { - lsf = (head & (1 << 19)) ? 0x0 : 0x1; - mpeg25 = 0; - } - else { - lsf = 1; - mpeg25 = 1; - } - - mode = ((head >> 6) & 0x3); - stereo = (mode == MPG_MD_MONO) ? 1 : 2; - - if (mpeg25) - sampling_frequency = 6 + ((head >> 10) & 0x3); - else - sampling_frequency = ((head >> 10) & 0x3) + (lsf * 3); - h = ((stereo == fr->stereo) && (lsf == fr->lsf) && (mpeg25 == fr->mpeg25) && - (sampling_frequency == fr->sampling_frequency)); - } - - if (h) { - return i - 3; - } - } - } - return -1; -} - - -void -decode_reset(PMPSTR mp) -{ -#if 0 - remove_buf(mp); - /* start looking for next frame */ - /* mp->fsizeold = mp->framesize; */ - mp->fsizeold = -1; - mp->old_free_format = mp->free_format; - mp->framesize = 0; - mp->header_parsed = 0; - mp->side_parsed = 0; - mp->data_parsed = 0; - mp->sync_bitstream = 1; /* TODO check if this is right */ -#else - InitMP3(mp); /* Less error prone to just to reinitialise. */ -#endif -} - -int -audiodata_precedesframes(PMPSTR mp) -{ - if (mp->fr.lay == 3) - return layer3_audiodata_precedesframes(mp); - else - return 0; /* For Layer 1 & 2 the audio data starts at the frame that describes it, so no audio data precedes. */ -} - -static int -decodeMP3_clipchoice(PMPSTR mp, unsigned char *in, int isize, char *out, int *done, - int (*synth_1to1_mono_ptr) (PMPSTR, real *, unsigned char *, int *), - int (*synth_1to1_ptr) (PMPSTR, real *, int, unsigned char *, int *)) -{ - int i, iret, bits, bytes; - - if (in && isize && addbuf(mp, in, isize) == NULL) - return MP3_ERR; - - /* First decode header */ - if (!mp->header_parsed) { - - if (mp->fsizeold == -1 || mp->sync_bitstream) { - int vbrbytes; - mp->sync_bitstream = 0; - - /* This is the very first call. sync with anything */ - /* bytes= number of bytes before header */ - bytes = sync_buffer(mp, 0); - - /* now look for Xing VBR header */ - if (mp->bsize >= bytes + XING_HEADER_SIZE) { - /* vbrbytes = number of bytes in entire vbr header */ - vbrbytes = check_vbr_header(mp, bytes); - } - else { - /* not enough data to look for Xing header */ -#ifdef HIP_DEBUG - lame_report_fnc(mp->report_dbg, "hip: not enough data to look for Xing header\n"); -#endif - return MP3_NEED_MORE; - } - - if (mp->vbr_header) { - /* do we have enough data to parse entire Xing header? */ - if (bytes + vbrbytes > mp->bsize) { - /* lame_report_fnc(mp->report_err,"hip: not enough data to parse entire Xing header\n"); */ - return MP3_NEED_MORE; - } - - /* read in Xing header. Buffer data in case it - * is used by a non zero main_data_begin for the next - * frame, but otherwise dont decode Xing header */ -#ifdef HIP_DEBUG - lame_report_fnc(mp->report_dbg, "hip: found xing header, skipping %i bytes\n", vbrbytes + bytes); -#endif - for (i = 0; i < vbrbytes + bytes; ++i) - read_buf_byte(mp); - /* now we need to find another syncword */ - /* just return and make user send in more data */ - - return MP3_NEED_MORE; - } - } - else { - /* match channels, samplerate, etc, when syncing */ - bytes = sync_buffer(mp, 1); - } - - /* buffer now synchronized */ - if (bytes < 0) { - /* lame_report_fnc(mp->report_err,"hip: need more bytes %d\n", bytes); */ - return MP3_NEED_MORE; - } - if (bytes > 0) { - /* there were some extra bytes in front of header. - * bitstream problem, but we are now resynced - * should try to buffer previous data in case new - * frame has nonzero main_data_begin, but we need - * to make sure we do not overflow buffer - */ - int size; - lame_report_fnc(mp->report_err, "hip: bitstream problem, resyncing skipping %d bytes...\n", bytes); - mp->old_free_format = 0; -#if 1 - /* FIXME: correct ??? */ - mp->sync_bitstream = 1; -#endif - /* skip some bytes, buffer the rest */ - size = (int) (mp->wordpointer - (mp->bsspace[mp->bsnum] + 512)); - - if (size > MAXFRAMESIZE) { - /* wordpointer buffer is trashed. probably cant recover, but try anyway */ - lame_report_fnc(mp->report_err, "hip: wordpointer trashed. size=%i (%i) bytes=%i \n", - size, MAXFRAMESIZE, bytes); - size = 0; - mp->wordpointer = mp->bsspace[mp->bsnum] + 512; - } - - /* buffer contains 'size' data right now - we want to add 'bytes' worth of data, but do not - exceed MAXFRAMESIZE, so we through away 'i' bytes */ - i = (size + bytes) - MAXFRAMESIZE; - for (; i > 0; --i) { - --bytes; - read_buf_byte(mp); - } - - copy_mp(mp, bytes, mp->wordpointer); - mp->fsizeold += bytes; - } - - read_head(mp); - decode_header(mp, &mp->fr, mp->header); - mp->header_parsed = 1; - mp->framesize = mp->fr.framesize; - mp->free_format = (mp->framesize == 0); - - if (mp->fr.lsf) - mp->ssize = (mp->fr.stereo == 1) ? 9 : 17; - else - mp->ssize = (mp->fr.stereo == 1) ? 17 : 32; - if (mp->fr.error_protection) - mp->ssize += 2; - - mp->bsnum = 1 - mp->bsnum; /* toggle buffer */ - mp->wordpointer = mp->bsspace[mp->bsnum] + 512; - mp->bitindex = 0; - - /* for very first header, never parse rest of data */ - if (mp->fsizeold == -1) { -#ifdef HIP_DEBUG - lame_report_fnc(mp->report_dbg, "hip: not parsing the rest of the data of the first header\n"); -#endif - return MP3_NEED_MORE; - } - } /* end of header parsing block */ - - /* now decode side information */ - if (!mp->side_parsed) { - - /* Layer 3 only */ - if (mp->fr.lay == 3) { - if (mp->bsize < mp->ssize) - return MP3_NEED_MORE; - - copy_mp(mp, mp->ssize, mp->wordpointer); - - if (mp->fr.error_protection) - getbits(mp, 16); - bits = decode_layer3_sideinfo(mp); - /* bits = actual number of bits needed to parse this frame */ - /* can be negative, if all bits needed are in the reservoir */ - if (bits < 0) - bits = 0; - - /* read just as many bytes as necessary before decoding */ - mp->dsize = (bits + 7) / 8; - - if (!mp->free_format) { - /* do not read more than framsize data */ - int framesize = mp->fr.framesize - mp->ssize; - if (mp->dsize > framesize) { - lame_report_fnc(mp->report_err, - "hip: error audio data exceeds framesize by %d bytes\n", - mp->dsize - framesize); - mp->dsize = framesize; - } - } -#ifdef HIP_DEBUG - lame_report_fnc(mp->report_dbg, - "hip: %d bits needed to parse layer III frame, number of bytes to read before decoding dsize = %d\n", - bits, mp->dsize); -#endif - - /* this will force mpglib to read entire frame before decoding */ - /* mp->dsize= mp->framesize - mp->ssize; */ - - } - else { - /* Layers 1 and 2 */ - - /* check if there is enough input data */ - if (mp->fr.framesize > mp->bsize) - return MP3_NEED_MORE; - - /* takes care that the right amount of data is copied into wordpointer */ - mp->dsize = mp->fr.framesize; - mp->ssize = 0; - } - - mp->side_parsed = 1; - } - - /* now decode main data */ - iret = MP3_NEED_MORE; - if (!mp->data_parsed) { - if (mp->dsize > mp->bsize) { - return MP3_NEED_MORE; - } - - copy_mp(mp, mp->dsize, mp->wordpointer); - - *done = 0; - - /*do_layer3(&mp->fr,(unsigned char *) out,done); */ - switch (mp->fr.lay) { - case 1: - if (mp->fr.error_protection) - getbits(mp, 16); - - decode_layer1_frame(mp, (unsigned char *) out, done); - break; - - case 2: - if (mp->fr.error_protection) - getbits(mp, 16); - - decode_layer2_frame(mp, (unsigned char *) out, done); - break; - - case 3: - decode_layer3_frame(mp, (unsigned char *) out, done, synth_1to1_mono_ptr, synth_1to1_ptr); - break; - default: - lame_report_fnc(mp->report_err, "hip: invalid layer %d\n", mp->fr.lay); - } - - mp->wordpointer = mp->bsspace[mp->bsnum] + 512 + mp->ssize + mp->dsize; - - mp->data_parsed = 1; - iret = MP3_OK; - } - - - /* remaining bits are ancillary data, or reservoir for next frame - * If free format, scan stream looking for next frame to determine - * mp->framesize */ - if (mp->free_format) { - if (mp->old_free_format) { - /* free format. bitrate must not vary */ - mp->framesize = mp->fsizeold_nopadding + (mp->fr.padding); - } - else { - bytes = sync_buffer(mp, 1); - if (bytes < 0) - return iret; - mp->framesize = bytes + mp->ssize + mp->dsize; - mp->fsizeold_nopadding = mp->framesize - mp->fr.padding; -#if 0 - lame_report_fnc(mp->report_dbg,"hip: freeformat bitstream: estimated bitrate=%ikbs \n", - 8*(4+mp->framesize)*freqs[mp->fr.sampling_frequency]/ - (1000*576*(2-mp->fr.lsf))); -#endif - } - } - - /* buffer the ancillary data and reservoir for next frame */ - bytes = mp->framesize - (mp->ssize + mp->dsize); - if (bytes > mp->bsize) { - return iret; - } - - if (bytes > 0) { - int size; -#if 1 - /* FIXME: while loop OK ??? */ - while (bytes > 512) { - read_buf_byte(mp); - bytes--; - mp->framesize--; - } -#endif - copy_mp(mp, bytes, mp->wordpointer); - mp->wordpointer += bytes; - - size = (int) (mp->wordpointer - (mp->bsspace[mp->bsnum] + 512)); - if (size > MAXFRAMESIZE) { - lame_report_fnc(mp->report_err, "hip: fatal error. MAXFRAMESIZE not large enough.\n"); - } - - } - - /* the above frame is completely parsed. start looking for next frame */ - mp->fsizeold = mp->framesize; - mp->old_free_format = mp->free_format; - mp->framesize = 0; - mp->header_parsed = 0; - mp->side_parsed = 0; - mp->data_parsed = 0; - - return iret; -} - -int -decodeMP3(PMPSTR mp, unsigned char *in, int isize, char *out, int osize, int *done) -{ - if (osize < 4608) { - lame_report_fnc(mp->report_err, "hip: Insufficient memory for decoding buffer %d\n", osize); - return MP3_ERR; - } - - /* passing pointers to the functions which clip the samples */ - return decodeMP3_clipchoice(mp, in, isize, out, done, synth_1to1_mono, synth_1to1); -} - -int -decodeMP3_unclipped(PMPSTR mp, unsigned char *in, int isize, char *out, int osize, int *done) -{ - /* we forbid input with more than 1152 samples per channel for output in unclipped mode */ - if (osize < (int) (1152 * 2 * sizeof(real))) { - lame_report_fnc(mp->report_err, "hip: out space too small for unclipped mode\n"); - return MP3_ERR; - } - - /* passing pointers to the functions which don't clip the samples */ - return decodeMP3_clipchoice(mp, in, isize, out, done, synth_1to1_mono_unclipped, - synth_1to1_unclipped); -} diff --git a/platform/win32/msvc/external/lame/mpglib/interface.h b/platform/win32/msvc/external/lame/mpglib/interface.h deleted file mode 100644 index f713b46655f..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/interface.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 1999-2010 The L.A.M.E. project - * - * Initially written by Michael Hipp, see also AUTHORS and README. - * - * 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 INTERFACE_H_INCLUDED -#define INTERFACE_H_INCLUDED - -#ifdef __cplusplus -extern "C" { -#endif - -#include "common.h" - - int InitMP3(PMPSTR mp); - int decodeMP3(PMPSTR mp, unsigned char *inmemory, int inmemsize, char *outmemory, - int outmemsize, int *done); - void ExitMP3(PMPSTR mp); - -/* added decodeMP3_unclipped to support returning raw floating-point values of samples. The representation - of the floating-point numbers is defined in mpg123.h as #define real. It is 64-bit double by default. - No more than 1152 samples per channel are allowed. */ - int decodeMP3_unclipped(PMPSTR mp, unsigned char *inmemory, int inmemsize, char *outmemory, - int outmemsize, int *done); - -/* added remove_buf to support mpglib seeking */ - void remove_buf(PMPSTR mp); - -/* added audiodata_precedesframes to return the number of bitstream frames the audio data will precede the - current frame by for Layer 3 data. Aids seeking. - */ - int audiodata_precedesframes(PMPSTR mp); - -/* Resets decoding. Aids seeking. */ - void decode_reset(PMPSTR mp); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/platform/win32/msvc/external/lame/mpglib/l2tables.h b/platform/win32/msvc/external/lame/mpglib/l2tables.h deleted file mode 100644 index 6a3deace2aa..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/l2tables.h +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Copyright (C) 1999-2010 The L.A.M.E. project - * - * Initially written by Michael Hipp, see also AUTHORS and README. - * - * 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. - * - * Layer 2 Alloc tables .. - * most other tables are calculated on program start (which is (of course) - * not ISO-conform) .. - * Layer-3 huffman table is in huffman.h - */ - -const struct al_table2 alloc_0[] = { - {4, 0}, {5, 3}, {3, -3}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, {9, -255}, {10, - -511}, - {11, -1023}, {12, -2047}, {13, -4095}, {14, -8191}, {15, -16383}, {16, -32767}, - {4, 0}, {5, 3}, {3, -3}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, {9, -255}, {10, - -511}, - {11, -1023}, {12, -2047}, {13, -4095}, {14, -8191}, {15, -16383}, {16, -32767}, - {4, 0}, {5, 3}, {3, -3}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, {9, -255}, {10, - -511}, - {11, -1023}, {12, -2047}, {13, -4095}, {14, -8191}, {15, -16383}, {16, -32767}, - {4, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, - {9, -255}, {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {16, -32767}, - {4, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, - {9, -255}, {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {16, -32767}, - {4, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, - {9, -255}, {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {16, -32767}, - {4, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, - {9, -255}, {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {16, -32767}, - {4, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, - {9, -255}, {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {16, -32767}, - {4, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, - {9, -255}, {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {16, -32767}, - {4, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, - {9, -255}, {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {16, -32767}, - {4, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, - {9, -255}, {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {2, 0}, {5, 3}, {7, 5}, {16, -32767}, - {2, 0}, {5, 3}, {7, 5}, {16, -32767}, - {2, 0}, {5, 3}, {7, 5}, {16, -32767}, - {2, 0}, {5, 3}, {7, 5}, {16, -32767} -}; - -const struct al_table2 alloc_1[] = { - {4, 0}, {5, 3}, {3, -3}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, {9, -255}, {10, - -511}, - {11, -1023}, {12, -2047}, {13, -4095}, {14, -8191}, {15, -16383}, {16, -32767}, - {4, 0}, {5, 3}, {3, -3}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, {9, -255}, {10, - -511}, - {11, -1023}, {12, -2047}, {13, -4095}, {14, -8191}, {15, -16383}, {16, -32767}, - {4, 0}, {5, 3}, {3, -3}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, {9, -255}, {10, - -511}, - {11, -1023}, {12, -2047}, {13, -4095}, {14, -8191}, {15, -16383}, {16, -32767}, - {4, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, - {9, -255}, {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {16, -32767}, - {4, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, - {9, -255}, {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {16, -32767}, - {4, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, - {9, -255}, {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {16, -32767}, - {4, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, - {9, -255}, {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {16, -32767}, - {4, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, - {9, -255}, {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {16, -32767}, - {4, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, - {9, -255}, {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {16, -32767}, - {4, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, - {9, -255}, {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {16, -32767}, - {4, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, - {9, -255}, {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {3, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {16, -32767}, - {2, 0}, {5, 3}, {7, 5}, {16, -32767}, - {2, 0}, {5, 3}, {7, 5}, {16, -32767}, - {2, 0}, {5, 3}, {7, 5}, {16, -32767}, - {2, 0}, {5, 3}, {7, 5}, {16, -32767}, - {2, 0}, {5, 3}, {7, 5}, {16, -32767}, - {2, 0}, {5, 3}, {7, 5}, {16, -32767}, - {2, 0}, {5, 3}, {7, 5}, {16, -32767} -}; - -const struct al_table2 alloc_2[] = { - {4, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, {9, -255}, - {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {14, -8191}, {15, -16383}, - {4, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, {9, -255}, - {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {14, -8191}, {15, -16383}, - {3, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, - {3, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, - {3, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, - {3, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, - {3, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, - {3, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63} -}; - -const struct al_table2 alloc_3[] = { - {4, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, {9, -255}, - {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {14, -8191}, {15, -16383}, - {4, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, {9, -255}, - {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {14, -8191}, {15, -16383}, - {3, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, - {3, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, - {3, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, - {3, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, - {3, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, - {3, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, - {3, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, - {3, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, - {3, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, - {3, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63} -}; - -const struct al_table2 alloc_4[] = { - {4, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, - {9, -255}, {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {14, -8191}, - {4, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, - {9, -255}, {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {14, -8191}, - {4, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, - {9, -255}, {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {14, -8191}, - {4, 0}, {5, 3}, {7, 5}, {3, -3}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, {8, -127}, - {9, -255}, {10, -511}, {11, -1023}, {12, -2047}, {13, -4095}, {14, -8191}, - {3, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, - {3, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, - {3, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, - {3, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, - {3, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, - {3, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, - {3, 0}, {5, 3}, {7, 5}, {10, 9}, {4, -7}, {5, -15}, {6, -31}, {7, -63}, - {2, 0}, {5, 3}, {7, 5}, {10, 9}, - {2, 0}, {5, 3}, {7, 5}, {10, 9}, - {2, 0}, {5, 3}, {7, 5}, {10, 9}, - {2, 0}, {5, 3}, {7, 5}, {10, 9}, - {2, 0}, {5, 3}, {7, 5}, {10, 9}, - {2, 0}, {5, 3}, {7, 5}, {10, 9}, - {2, 0}, {5, 3}, {7, 5}, {10, 9}, - {2, 0}, {5, 3}, {7, 5}, {10, 9}, - {2, 0}, {5, 3}, {7, 5}, {10, 9}, - {2, 0}, {5, 3}, {7, 5}, {10, 9}, - {2, 0}, {5, 3}, {7, 5}, {10, 9}, - {2, 0}, {5, 3}, {7, 5}, {10, 9}, - {2, 0}, {5, 3}, {7, 5}, {10, 9}, - {2, 0}, {5, 3}, {7, 5}, {10, 9}, - {2, 0}, {5, 3}, {7, 5}, {10, 9}, - {2, 0}, {5, 3}, {7, 5}, {10, 9}, - {2, 0}, {5, 3}, {7, 5}, {10, 9}, - {2, 0}, {5, 3}, {7, 5}, {10, 9}, - {2, 0}, {5, 3}, {7, 5}, {10, 9} -}; diff --git a/platform/win32/msvc/external/lame/mpglib/layer1.c b/platform/win32/msvc/external/lame/mpglib/layer1.c deleted file mode 100644 index 770eec3027b..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/layer1.c +++ /dev/null @@ -1,221 +0,0 @@ -/* - * layer1.c: Mpeg Layer-1 audio decoder - * - * Copyright (C) 1999-2010 The L.A.M.E. project - * - * Initially written by Michael Hipp, see also AUTHORS and README. - * - * 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. - */ - -/* $Id: layer1.c,v 1.30 2010/03/22 14:30:19 robert Exp $ */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include "common.h" -#include "decode_i386.h" - -#ifdef WITH_DMALLOC -#include <dmalloc.h> -#endif - -#include "layer1.h" - -static int gd_are_hip_tables_layer1_initialized = 0; - -void -hip_init_tables_layer1(void) -{ - if (gd_are_hip_tables_layer1_initialized) { - return; - } - gd_are_hip_tables_layer1_initialized = 1; -} - -typedef struct sideinfo_layer_I_struct -{ - unsigned char allocation[SBLIMIT][2]; - unsigned char scalefactor[SBLIMIT][2]; -} sideinfo_layer_I; - -static void -I_step_one(PMPSTR mp, sideinfo_layer_I* si) -{ - struct frame *fr = &(mp->fr); - int jsbound = (fr->mode == MPG_MD_JOINT_STEREO) ? (fr->mode_ext << 2) + 4 : 32; - int i; - memset(si, 0, sizeof(*si)); - assert(fr->stereo == 1 || fr->stereo == 2); - - if (fr->stereo == 2) { - for (i = 0; i < jsbound; i++) { - unsigned char b0 = get_leq_8_bits(mp, 4); /* values 0-15 */ - unsigned char b1 = get_leq_8_bits(mp, 4); /* values 0-15 */ - si->allocation[i][0] = b0; - si->allocation[i][1] = b1; - } - for (i = jsbound; i < SBLIMIT; i++) { - unsigned char b = get_leq_8_bits(mp, 4); /* values 0-15 */ - si->allocation[i][0] = b; - si->allocation[i][1] = b; - } - for (i = 0; i < SBLIMIT; i++) { - unsigned char n0 = si->allocation[i][0]; - unsigned char n1 = si->allocation[i][1]; - unsigned char b0 = n0 ? get_leq_8_bits(mp, 6) : 0; /* values 0-63 */ - unsigned char b1 = n1 ? get_leq_8_bits(mp, 6) : 0; /* values 0-63 */ - si->scalefactor[i][0] = b0; - si->scalefactor[i][1] = b1; - } - } - else { - for (i = 0; i < SBLIMIT; i++) { - unsigned char b0 = get_leq_8_bits(mp, 4); /* values 0-15 */ - si->allocation[i][0] = b0; - } - for (i = 0; i < SBLIMIT; i++) { - unsigned char n0 = si->allocation[i][0]; - unsigned char b0 = n0 ? get_leq_8_bits(mp, 6) : 0; /* values 0-63 */ - si->scalefactor[i][0] = b0; - } - } -} - -static void -I_step_two(PMPSTR mp, sideinfo_layer_I *si, real fraction[2][SBLIMIT]) -{ - double r0, r1; - struct frame *fr = &(mp->fr); - int ds_limit = fr->down_sample_sblimit; - int i; - - assert(fr->stereo == 1 || fr->stereo == 2); - if (fr->stereo == 2) { - int jsbound = (fr->mode == MPG_MD_JOINT_STEREO) ? (fr->mode_ext << 2) + 4 : 32; - for (i = 0; i < jsbound; i++) { - unsigned char i0 = si->scalefactor[i][0]; - unsigned char i1 = si->scalefactor[i][1]; - unsigned char n0 = si->allocation[i][0]; - unsigned char n1 = si->allocation[i][1]; - assert( i0 < 64 ); - assert( i1 < 64 ); - assert( n0 < 16 ); - assert( n1 < 16 ); - if (n0 > 0) { - unsigned short v = get_leq_16_bits(mp, n0 + 1); /* 0-65535 */ - r0 = (((-1) << n0) + v + 1) * muls[n0 + 1][i0]; - } - else { - r0 = 0; - } - if (n1 > 0) { - unsigned short v = get_leq_16_bits(mp, n1 + 1); /* 0-65535 */ - r1 = (((-1) << n1) + v + 1) * muls[n1 + 1][i1]; - } - else { - r1 = 0; - } - fraction[0][i] = (real)r0; - fraction[1][i] = (real)r1; - } - for (i = jsbound; i < SBLIMIT; i++) { - unsigned char i0 = si->scalefactor[i][0]; - unsigned char i1 = si->scalefactor[i][1]; - unsigned char n = si->allocation[i][0]; - assert( i0 < 64 ); - assert( i1 < 64 ); - assert( n < 16 ); - if (n > 0) { - unsigned short v = get_leq_16_bits(mp, n + 1); /* 0-65535 */ - unsigned int w = (((-1) << n) + v + 1); - r0 = w * muls[n + 1][i0]; - r1 = w * muls[n + 1][i1]; - } - else { - r0 = r1 = 0; - } - fraction[0][i] = (real)r0; - fraction[1][i] = (real)r1; - } - for (i = ds_limit; i < SBLIMIT; i++) { - fraction[0][i] = 0.0; - fraction[1][i] = 0.0; - } - } - else { - for (i = 0; i < SBLIMIT; i++) { - unsigned char n = si->allocation[i][0]; - unsigned char j = si->scalefactor[i][0]; - assert( j < 64 ); - assert( n < 16 ); - if (n > 0) { - unsigned short v = get_leq_16_bits(mp, n + 1); - r0 = (((-1) << n) + v + 1) * muls[n + 1][j]; - } - else { - r0 = 0; - } - fraction[0][i] = (real)r0; - } - for (i = ds_limit; i < SBLIMIT; i++) { - fraction[0][i] = 0.0; - } - } -} - -int -decode_layer1_sideinfo(PMPSTR mp) -{ - (void) mp; - /* FIXME: extract side information and check values */ - return 0; -} - -int -decode_layer1_frame(PMPSTR mp, unsigned char *pcm_sample, int *pcm_point) -{ - real fraction[2][SBLIMIT]; /* FIXME: change real -> double ? */ - sideinfo_layer_I si; - struct frame *fr = &(mp->fr); - int single = fr->single; - int i, clip = 0; - - I_step_one(mp, &si); - - if (fr->stereo == 1 || single == 3) - single = 0; - - if (single >= 0) { - /* decoding one of possibly two channels */ - for (i = 0; i < SCALE_BLOCK; i++) { - I_step_two(mp, &si, fraction); - clip += synth_1to1_mono(mp, (real *) fraction[single], pcm_sample, pcm_point); - } - } - else { - for (i = 0; i < SCALE_BLOCK; i++) { - int p1 = *pcm_point; - I_step_two(mp, &si, fraction); - clip += synth_1to1(mp, (real *) fraction[0], 0, pcm_sample, &p1); - clip += synth_1to1(mp, (real *) fraction[1], 1, pcm_sample, pcm_point); - } - } - - return clip; -} diff --git a/platform/win32/msvc/external/lame/mpglib/layer1.h b/platform/win32/msvc/external/lame/mpglib/layer1.h deleted file mode 100644 index 308c437947e..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/layer1.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (C) 1999-2010 The L.A.M.E. project - * - * Initially written by Michael Hipp, see also AUTHORS and README. - * - * 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 LAYER1_H_INCLUDED -#define LAYER1_H_INCLUDED - -void hip_init_tables_layer1(void); -int decode_layer1_sideinfo(PMPSTR mp); -int decode_layer1_frame(PMPSTR mp, unsigned char *pcm_sample, int *pcm_point); - -#endif diff --git a/platform/win32/msvc/external/lame/mpglib/layer2.c b/platform/win32/msvc/external/lame/mpglib/layer2.c deleted file mode 100644 index 442ccfeabb6..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/layer2.c +++ /dev/null @@ -1,400 +0,0 @@ -/* - * layer2.c: Mpeg Layer-2 audio decoder - * - * Copyright (C) 1999-2010 The L.A.M.E. project - * - * Initially written by Michael Hipp, see also AUTHORS and README. - * - * 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. - */ -/* $Id: layer2.c,v 1.32 2011/05/24 20:40:56 robert Exp $ */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "common.h" -#include "layer2.h" -#include "l2tables.h" -#include "decode_i386.h" - -#ifdef WITH_DMALLOC -#include <dmalloc.h> -#endif -#include <assert.h> - -static int gd_are_hip_tables_layer2_initialized = 0; - -static unsigned char grp_3tab[32 * 3] = { 0, }; /* used: 27 */ -static unsigned char grp_5tab[128 * 3] = { 0, }; /* used: 125 */ -static unsigned char grp_9tab[1024 * 3] = { 0, }; /* used: 729 */ - - -void -hip_init_tables_layer2(void) -{ - static const double mulmul[27] = { - 0.0, -2.0 / 3.0, 2.0 / 3.0, - 2.0 / 7.0, 2.0 / 15.0, 2.0 / 31.0, 2.0 / 63.0, 2.0 / 127.0, 2.0 / 255.0, - 2.0 / 511.0, 2.0 / 1023.0, 2.0 / 2047.0, 2.0 / 4095.0, 2.0 / 8191.0, - 2.0 / 16383.0, 2.0 / 32767.0, 2.0 / 65535.0, - -4.0 / 5.0, -2.0 / 5.0, 2.0 / 5.0, 4.0 / 5.0, - -8.0 / 9.0, -4.0 / 9.0, -2.0 / 9.0, 2.0 / 9.0, 4.0 / 9.0, 8.0 / 9.0 - }; - static const unsigned char base[3][9] = { - {1, 0, 2,}, - {17, 18, 0, 19, 20,}, - {21, 1, 22, 23, 0, 24, 25, 2, 26} - }; - int i, j, k, l, len; - real *table; - static const int tablen[3] = { 3, 5, 9 }; - static unsigned char *itable, *tables[3] = { grp_3tab, grp_5tab, grp_9tab }; - - if (gd_are_hip_tables_layer2_initialized) { - return; - } - gd_are_hip_tables_layer2_initialized = 1; - - for (i = 0; i < 3; i++) { - itable = tables[i]; - len = tablen[i]; - for (j = 0; j < len; j++) - for (k = 0; k < len; k++) - for (l = 0; l < len; l++) { - *itable++ = base[i][l]; - *itable++ = base[i][k]; - *itable++ = base[i][j]; - } - } - - for (k = 0; k < 27; k++) { - double m = mulmul[k]; - table = muls[k]; - for (j = 3, i = 0; i < 63; i++, j--) - *table++ = (real) (m * pow(2.0, (double) j / 3.0)); - *table++ = 0.0; - } -} - - -static unsigned char* -grp_table_select(short d1, unsigned int idx) -{ - /* RH: it seems to be common, that idx is larger than the table's sizes. - is it OK to return a zero vector in this case? FIXME - /*/ - static unsigned char dummy_table[] = { 0,0,0 }; - unsigned int x; - switch (d1) { - case 3: - x = 3*3*3; - idx = idx < x ? idx : x; - return &grp_3tab[3 * idx]; - case 5: - x = 5*5*5; - idx = idx < x ? idx : x; - return &grp_5tab[3 * idx]; - case 9: - x = 9*9*9; - idx = idx < x ? idx : x; - return &grp_9tab[3 * idx]; - default: - /* fatal error */ - assert(0); - } - return &dummy_table[0]; -} - -typedef struct sideinfo_layer_II_struct -{ - unsigned char allocation[SBLIMIT][2]; - unsigned char scalefactor[SBLIMIT][2][3]; /* subband / channel / block */ -} sideinfo_layer_II; - - - -static void -II_step_one(PMPSTR mp, sideinfo_layer_II *si, struct frame *fr) -{ - int nch = fr->stereo; - int sblimit = fr->II_sblimit; - int jsbound = (fr->mode == MPG_MD_JOINT_STEREO) ? (fr->mode_ext << 2) + 4 : fr->II_sblimit; - struct al_table2 const *alloc1 = fr->alloc; - unsigned char scfsi[SBLIMIT][2]; - int i, ch; - - memset(si, 0, sizeof(*si)); - - if (nch == 2) { - for (i = 0; i < jsbound; ++i) { - short step = alloc1->bits; - unsigned char b0 = get_leq_8_bits(mp, step); - unsigned char b1 = get_leq_8_bits(mp, step); - alloc1 += (1 << step); - si->allocation[i][0] = b0; - si->allocation[i][1] = b1; - } - for (i = jsbound; i < sblimit; ++i) { - short step = alloc1->bits; - unsigned char b0 = get_leq_8_bits(mp, step); - alloc1 += (1 << step); - si->allocation[i][0] = b0; - si->allocation[i][1] = b0; - } - for (i = 0; i < sblimit; ++i) { - unsigned char n0 = si->allocation[i][0]; - unsigned char n1 = si->allocation[i][1]; - unsigned char b0 = n0 ? get_leq_8_bits(mp, 2) : 0; - unsigned char b1 = n1 ? get_leq_8_bits(mp, 2) : 0; - scfsi[i][0] = b0; - scfsi[i][1] = b1; - } - } - else { /* mono */ - for (i = 0; i < sblimit; ++i) { - short step = alloc1->bits; - unsigned char b0 = get_leq_8_bits(mp, step); - alloc1 += (1 << step); - si->allocation[i][0] = b0; - } - for (i = 0; i < sblimit; ++i) { - unsigned char n0 = si->allocation[i][0]; - unsigned char b0 = n0 ? get_leq_8_bits(mp, 2) : 0; - scfsi[i][0] = b0; - } - } - for (i = 0; i < sblimit; ++i) { - for (ch = 0; ch < nch; ++ch) { - unsigned char s0 = 0, s1 = 0, s2 = 0; - if (si->allocation[i][ch]) { - switch (scfsi[i][ch]) { - case 0: - s0 = get_leq_8_bits(mp, 6); - s1 = get_leq_8_bits(mp, 6); - s2 = get_leq_8_bits(mp, 6); - break; - case 1: - s0 = get_leq_8_bits(mp, 6); - s1 = s0; - s2 = get_leq_8_bits(mp, 6); - break; - case 2: - s0 = get_leq_8_bits(mp, 6); - s1 = s0; - s2 = s0; - break; - case 3: - s0 = get_leq_8_bits(mp, 6); - s1 = get_leq_8_bits(mp, 6); - s2 = s1; - break; - default: - assert(0); - } - } - si->scalefactor[i][ch][0] = s0; - si->scalefactor[i][ch][1] = s1; - si->scalefactor[i][ch][2] = s2; - } - } -} - -static void -II_step_two(PMPSTR mp, sideinfo_layer_II* si, struct frame *fr, int gr, real fraction[2][4][SBLIMIT]) -{ - struct al_table2 const *alloc1 = fr->alloc; - int sblimit = fr->II_sblimit; - int jsbound = (fr->mode == MPG_MD_JOINT_STEREO) ? (fr->mode_ext << 2) + 4 : fr->II_sblimit; - int i, ch, nch = fr->stereo; - double cm, r0, r1, r2; - - for (i = 0; i < jsbound; ++i) { - short step = alloc1->bits; - for (ch = 0; ch < nch; ++ch) { - unsigned char ba = si->allocation[i][ch]; - if (ba) { - unsigned char x1 = si->scalefactor[i][ch][gr]; - struct al_table2 const *alloc2 = alloc1 + ba; - short k = alloc2->bits; - short d1 = alloc2->d; - assert( k <= 16 ); - k = (k <= 16) ? k : 16; - assert( x1 < 64 ); - x1 = (x1 < 64) ? x1 : 63; - if (d1 < 0) { - int v0 = getbits(mp, k); - int v1 = getbits(mp, k); - int v2 = getbits(mp, k); - cm = muls[k][x1]; - r0 = (v0 + d1) * cm; - r1 = (v1 + d1) * cm; - r2 = (v2 + d1) * cm; - } - else { - unsigned int idx = getbits(mp, k); - unsigned char *tab = grp_table_select(d1, idx); - unsigned char k0 = tab[0]; - unsigned char k1 = tab[1]; - unsigned char k2 = tab[2]; - r0 = muls[k0][x1]; - r1 = muls[k1][x1]; - r2 = muls[k2][x1]; - } - fraction[ch][0][i] = (real) r0; - fraction[ch][1][i] = (real) r1; - fraction[ch][2][i] = (real) r2; - } - else { - fraction[ch][0][i] = fraction[ch][1][i] = fraction[ch][2][i] = 0.0; - } - } - alloc1 += (1 << step); - } - - for (i = jsbound; i < sblimit; i++) { - short step = alloc1->bits; - unsigned char ba = si->allocation[i][0]; - if (ba) { - struct al_table2 const *alloc2 = alloc1 + ba; - short k = alloc2->bits; - short d1 = alloc2->d; - assert( k <= 16 ); - k = (k <= 16) ? k : 16; - if (d1 < 0) { - int v0 = getbits(mp, k); - int v1 = getbits(mp, k); - int v2 = getbits(mp, k); - for (ch = 0; ch < nch; ++ch) { - unsigned char x1 = si->scalefactor[i][ch][gr]; - assert( x1 < 64 ); - x1 = (x1 < 64) ? x1 : 63; - cm = muls[k][x1]; - r0 = (v0 + d1) * cm; - r1 = (v1 + d1) * cm; - r2 = (v2 + d1) * cm; - fraction[ch][0][i] = (real) r0; - fraction[ch][1][i] = (real) r1; - fraction[ch][2][i] = (real) r2; - } - } - else { - unsigned int idx = getbits(mp, k); - unsigned char *tab = grp_table_select(d1, idx); - unsigned char k0 = tab[0]; - unsigned char k1 = tab[1]; - unsigned char k2 = tab[2]; - for (ch = 0; ch < nch; ++ch) { - unsigned char x1 = si->scalefactor[i][ch][gr]; - assert( x1 < 64 ); - x1 = (x1 < 64) ? x1 : 63; - r0 = muls[k0][x1]; - r1 = muls[k1][x1]; - r2 = muls[k2][x1]; - fraction[ch][0][i] = (real) r0; - fraction[ch][1][i] = (real) r1; - fraction[ch][2][i] = (real) r2; - } - } - } - else { - fraction[0][0][i] = fraction[0][1][i] = fraction[0][2][i] = 0.0; - fraction[1][0][i] = fraction[1][1][i] = fraction[1][2][i] = 0.0; - } - alloc1 += (1 << step); - } - if (sblimit > fr->down_sample_sblimit) { - sblimit = fr->down_sample_sblimit; - } - for (ch = 0; ch < nch; ++ch) { - for (i = sblimit; i < SBLIMIT; ++i) { - fraction[ch][0][i] = fraction[ch][1][i] = fraction[ch][2][i] = 0.0; - } - } -} - -static void -II_select_table(struct frame *fr) -{ - /* *INDENT-OFF* */ - static const int translate[3][2][16] = - { { { 0,2,2,2,2,2,2,0,0,0,1,1,1,1,1,0 } , - { 0,2,2,0,0,0,1,1,1,1,1,1,1,1,1,0 } } , - { { 0,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0 } , - { 0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0 } } , - { { 0,3,3,3,3,3,3,0,0,0,1,1,1,1,1,0 } , - { 0,3,3,0,0,0,1,1,1,1,1,1,1,1,1,0 } } }; - /* *INDENT-ON* */ - - int table, sblim; - static const struct al_table2 *tables[5] = { alloc_0, alloc_1, alloc_2, alloc_3, alloc_4 }; - static const int sblims[5] = { 27, 30, 8, 12, 30 }; - - if (fr->lsf) - table = 4; - else - table = translate[fr->sampling_frequency][2 - fr->stereo][fr->bitrate_index]; - sblim = sblims[table]; - - fr->alloc = (struct al_table2 const *) tables[table]; - fr->II_sblimit = sblim; -} - - -int -decode_layer2_sideinfo(PMPSTR mp) -{ - (void) mp; - /* FIXME: extract side information and check values */ - return 0; -} - -int -decode_layer2_frame(PMPSTR mp, unsigned char *pcm_sample, int *pcm_point) -{ - real fraction[2][4][SBLIMIT]; /* pick_table clears unused subbands */ - sideinfo_layer_II si; - struct frame *fr = &(mp->fr); - int single = fr->single; - int i, j, clip = 0; - - II_select_table(fr); - II_step_one(mp, &si, fr); - - if (fr->stereo == 1 || single == 3) - single = 0; - - if (single >= 0) { - for (i = 0; i < SCALE_BLOCK; i++) { - II_step_two(mp, &si, fr, i >> 2, fraction); - for (j = 0; j < 3; j++) { - clip += synth_1to1_mono(mp, fraction[single][j], pcm_sample, pcm_point); - } - } - } - else { - for (i = 0; i < SCALE_BLOCK; i++) { - II_step_two(mp, &si, fr, i >> 2, fraction); - for (j = 0; j < 3; j++) { - int p1 = *pcm_point; - clip += synth_1to1(mp, fraction[0][j], 0, pcm_sample, &p1); - clip += synth_1to1(mp, fraction[1][j], 1, pcm_sample, pcm_point); - } - } - } - - return clip; -} diff --git a/platform/win32/msvc/external/lame/mpglib/layer2.h b/platform/win32/msvc/external/lame/mpglib/layer2.h deleted file mode 100644 index fafc9a73fda..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/layer2.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (C) 1999-2010 The L.A.M.E. project - * - * Initially written by Michael Hipp, see also AUTHORS and README. - * - * 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 LAYER2_H_INCLUDED -#define LAYER2_H_INCLUDED - - -struct al_table2 { - short bits; - short d; -}; - - - -void hip_init_tables_layer2(void); -int decode_layer2_sideinfo(PMPSTR mp); -int decode_layer2_frame(PMPSTR mp, unsigned char *pcm_sample, int *pcm_point); - - -#endif diff --git a/platform/win32/msvc/external/lame/mpglib/layer3.c b/platform/win32/msvc/external/lame/mpglib/layer3.c deleted file mode 100644 index dd7216cbf9e..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/layer3.c +++ /dev/null @@ -1,1871 +0,0 @@ -/* - * layer3.c: Mpeg Layer-3 audio decoder - * - * Copyright (C) 1999-2010 The L.A.M.E. project - * - * Initially written by Michael Hipp, see also AUTHORS and README. - * - * 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. - */ -/* $Id: layer3.c,v 1.63.2.1 2012/02/11 11:03:20 robert Exp $ */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdlib.h> -#include "common.h" -#include "huffman.h" -#include "lame.h" -#include "machine.h" -#include "encoder.h" -#include "lame-analysis.h" -#include "decode_i386.h" -#include "layer3.h" - -#ifdef WITH_DMALLOC -#include <dmalloc.h> -#endif - - -static int gd_are_hip_tables_layer3_initialized = 0; - -static real ispow[8207]; -static real aa_ca[8], aa_cs[8]; -static real COS1[12][6]; -static real win[4][36]; -static real win1[4][36]; -static real gainpow2[256 + 118 + 4]; -static real COS9[9]; -static real COS6_1, COS6_2; -static real tfcos36[9]; -static real tfcos12[3]; - -struct bandInfoStruct { - short longIdx[23]; - short longDiff[22]; - short shortIdx[14]; - short shortDiff[13]; -}; - -static int longLimit[9][23]; -static int shortLimit[9][14]; - -/* *INDENT-OFF* */ - -static const struct bandInfoStruct bandInfo[9] = { - -/* MPEG 1.0 */ - { {0,4,8,12,16,20,24,30,36,44,52,62,74, 90,110,134,162,196,238,288,342,418,576}, - {4,4,4,4,4,4,6,6,8, 8,10,12,16,20,24,28,34,42,50,54, 76,158}, - {0,4*3,8*3,12*3,16*3,22*3,30*3,40*3,52*3,66*3, 84*3,106*3,136*3,192*3}, - {4,4,4,4,6,8,10,12,14,18,22,30,56} } , - - { {0,4,8,12,16,20,24,30,36,42,50,60,72, 88,106,128,156,190,230,276,330,384,576}, - {4,4,4,4,4,4,6,6,6, 8,10,12,16,18,22,28,34,40,46,54, 54,192}, - {0,4*3,8*3,12*3,16*3,22*3,28*3,38*3,50*3,64*3, 80*3,100*3,126*3,192*3}, - {4,4,4,4,6,6,10,12,14,16,20,26,66} } , - - { {0,4,8,12,16,20,24,30,36,44,54,66,82,102,126,156,194,240,296,364,448,550,576} , - {4,4,4,4,4,4,6,6,8,10,12,16,20,24,30,38,46,56,68,84,102, 26} , - {0,4*3,8*3,12*3,16*3,22*3,30*3,42*3,58*3,78*3,104*3,138*3,180*3,192*3} , - {4,4,4,4,6,8,12,16,20,26,34,42,12} } , - -/* MPEG 2.0 */ - { {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, - {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54 } , - {0,4*3,8*3,12*3,18*3,24*3,32*3,42*3,56*3,74*3,100*3,132*3,174*3,192*3} , - {4,4,4,6,6,8,10,14,18,26,32,42,18 } } , - /* docs: 332. mpg123: 330 */ - { {0,6,12,18,24,30,36,44,54,66,80,96,114,136,162,194,232,278,332,394,464,540,576}, - {6,6,6,6,6,6,8,10,12,14,16,18,22,26,32,38,46,54,62,70,76,36 } , - {0,4*3,8*3,12*3,18*3,26*3,36*3,48*3,62*3,80*3,104*3,136*3,180*3,192*3} , - {4,4,4,6,8,10,12,14,18,24,32,44,12 } } , - - { {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, - {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54 }, - {0,4*3,8*3,12*3,18*3,26*3,36*3,48*3,62*3,80*3,104*3,134*3,174*3,192*3}, - {4,4,4,6,8,10,12,14,18,24,30,40,18 } } , -/* MPEG 2.5 */ - { {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576} , - {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54}, - {0,12,24,36,54,78,108,144,186,240,312,402,522,576}, - {4,4,4,6,8,10,12,14,18,24,30,40,18} }, - { {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576} , - {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54}, - {0,12,24,36,54,78,108,144,186,240,312,402,522,576}, - {4,4,4,6,8,10,12,14,18,24,30,40,18} }, - { {0,12,24,36,48,60,72,88,108,132,160,192,232,280,336,400,476,566,568,570,572,574,576}, - {12,12,12,12,12,12,16,20,24,28,32,40,48,56,64,76,90,2,2,2,2,2}, - {0, 24, 48, 72,108,156,216,288,372,480,486,492,498,576}, - {8,8,8,12,16,20,24,28,36,2,2,2,26} } , -}; -/* *INDENT-ON* */ - -static int mapbuf0[9][152]; -static int mapbuf1[9][156]; -static int mapbuf2[9][44]; -static int *map[9][3]; -static int *mapend[9][3]; - -static unsigned int n_slen2[512]; /* MPEG 2.0 slen for 'normal' mode */ -static unsigned int i_slen2[256]; /* MPEG 2.0 slen for intensity stereo */ - -static real tan1_1[16], tan2_1[16], tan1_2[16], tan2_2[16]; -static real pow1_1[2][16], pow2_1[2][16], pow1_2[2][16], pow2_2[2][16]; - -static unsigned int -get1bit(PMPSTR mp) -{ - unsigned char rval; - rval = *mp->wordpointer << mp->bitindex; - - mp->bitindex++; - mp->wordpointer += (mp->bitindex >> 3); - mp->bitindex &= 7; - - return rval >> 7; -} - - - - -/* - * init tables for layer-3 - */ -void -hip_init_tables_layer3(void) -{ - int i, j, k; - - if (gd_are_hip_tables_layer3_initialized) { - return; - } - gd_are_hip_tables_layer3_initialized = 1; - - for (i = -256; i < 118 + 4; i++) - gainpow2[i + 256] = pow((double) 2.0, -0.25 * (double) (i + 210)); - - for (i = 0; i < 8207; i++) - ispow[i] = pow((double) i, (double) 4.0 / 3.0); - - for (i = 0; i < 8; i++) { - static const double Ci[8] = { -0.6, -0.535, -0.33, -0.185, -0.095, -0.041, -0.0142, -0.0037 }; - double sq = sqrt(1.0 + Ci[i] * Ci[i]); - aa_cs[i] = 1.0 / sq; - aa_ca[i] = Ci[i] / sq; - } - - for (i = 0; i < 18; i++) { - win[0][i] = win[1][i] = - 0.5 * sin(M_PI / 72.0 * (double) (2 * (i + 0) + 1)) / cos(M_PI * - (double) (2 * (i + 0) + - 19) / 72.0); - win[0][i + 18] = win[3][i + 18] = - 0.5 * sin(M_PI / 72.0 * (double) (2 * (i + 18) + 1)) / cos(M_PI * - (double) (2 * (i + 18) + - 19) / 72.0); - } - for (i = 0; i < 6; i++) { - win[1][i + 18] = 0.5 / cos(M_PI * (double) (2 * (i + 18) + 19) / 72.0); - win[3][i + 12] = 0.5 / cos(M_PI * (double) (2 * (i + 12) + 19) / 72.0); - win[1][i + 24] = - 0.5 * sin(M_PI / 24.0 * (double) (2 * i + 13)) / cos(M_PI * - (double) (2 * (i + 24) + - 19) / 72.0); - win[1][i + 30] = win[3][i] = 0.0; - win[3][i + 6] = - 0.5 * sin(M_PI / 24.0 * (double) (2 * i + 1)) / cos(M_PI * (double) (2 * (i + 6) + 19) / - 72.0); - } - - for (i = 0; i < 9; i++) - COS9[i] = cos(M_PI / 18.0 * (double) i); - - for (i = 0; i < 9; i++) - tfcos36[i] = 0.5 / cos(M_PI * (double) (i * 2 + 1) / 36.0); - for (i = 0; i < 3; i++) - tfcos12[i] = 0.5 / cos(M_PI * (double) (i * 2 + 1) / 12.0); - - COS6_1 = cos(M_PI / 6.0 * (double) 1); - COS6_2 = cos(M_PI / 6.0 * (double) 2); - - for (i = 0; i < 12; i++) { - win[2][i] = - 0.5 * sin(M_PI / 24.0 * (double) (2 * i + 1)) / cos(M_PI * (double) (2 * i + 7) / 24.0); - for (j = 0; j < 6; j++) - COS1[i][j] = cos(M_PI / 24.0 * (double) ((2 * i + 7) * (2 * j + 1))); - } - - for (j = 0; j < 4; j++) { - static int const len[4] = { 36, 36, 12, 36 }; - for (i = 0; i < len[j]; i += 2) - win1[j][i] = +win[j][i]; - for (i = 1; i < len[j]; i += 2) - win1[j][i] = -win[j][i]; - } - - for (i = 0; i < 16; i++) { - double t = tan((double) i * M_PI / 12.0); - tan1_1[i] = t / (1.0 + t); - tan2_1[i] = 1.0 / (1.0 + t); - tan1_2[i] = M_SQRT2 * t / (1.0 + t); - tan2_2[i] = M_SQRT2 / (1.0 + t); - - for (j = 0; j < 2; j++) { - double base = pow(2.0, -0.25 * (j + 1.0)); - double p1 = 1.0, p2 = 1.0; - if (i > 0) { - if (i & 1) - p1 = pow(base, (i + 1.0) * 0.5); - else - p2 = pow(base, i * 0.5); - } - pow1_1[j][i] = p1; - pow2_1[j][i] = p2; - pow1_2[j][i] = M_SQRT2 * p1; - pow2_2[j][i] = M_SQRT2 * p2; - } - } - - for (j = 0; j < 9; j++) { - struct bandInfoStruct const *bi = (struct bandInfoStruct const *) &bandInfo[j]; - int *mp; - int cb, lwin; - short const *bdf; - - mp = map[j][0] = mapbuf0[j]; - bdf = bi->longDiff; - for (i = 0, cb = 0; cb < 8; cb++, i += *bdf++) { - *mp++ = (*bdf) >> 1; - *mp++ = i; - *mp++ = 3; - *mp++ = cb; - } - bdf = bi->shortDiff + 3; - for (cb = 3; cb < 13; cb++) { - int l = (*bdf++) >> 1; - for (lwin = 0; lwin < 3; lwin++) { - *mp++ = l; - *mp++ = i + lwin; - *mp++ = lwin; - *mp++ = cb; - } - i += 6 * l; - } - mapend[j][0] = mp; - - mp = map[j][1] = mapbuf1[j]; - bdf = bi->shortDiff + 0; - for (i = 0, cb = 0; cb < 13; cb++) { - int l = (*bdf++) >> 1; - for (lwin = 0; lwin < 3; lwin++) { - *mp++ = l; - *mp++ = i + lwin; - *mp++ = lwin; - *mp++ = cb; - } - i += 6 * l; - } - mapend[j][1] = mp; - - mp = map[j][2] = mapbuf2[j]; - bdf = bi->longDiff; - for (cb = 0; cb < 22; cb++) { - *mp++ = (*bdf++) >> 1; - *mp++ = cb; - } - mapend[j][2] = mp; - - } - - for (j = 0; j < 9; j++) { - for (i = 0; i < 23; i++) { - longLimit[j][i] = (bandInfo[j].longIdx[i] - 1 + 8) / 18 + 1; - if (longLimit[j][i] > SBLIMIT) - longLimit[j][i] = SBLIMIT; - } - for (i = 0; i < 14; i++) { - shortLimit[j][i] = (bandInfo[j].shortIdx[i] - 1) / 18 + 1; - if (shortLimit[j][i] > SBLIMIT) - shortLimit[j][i] = SBLIMIT; - } - } - - for (i = 0; i < 5; i++) { - for (j = 0; j < 6; j++) { - for (k = 0; k < 6; k++) { - int n = k + j * 6 + i * 36; - i_slen2[n] = i | (j << 3) | (k << 6) | (3 << 12); - } - } - } - for (i = 0; i < 4; i++) { - for (j = 0; j < 4; j++) { - for (k = 0; k < 4; k++) { - int n = k + j * 4 + i * 16; - i_slen2[n + 180] = i | (j << 3) | (k << 6) | (4 << 12); - } - } - } - for (i = 0; i < 4; i++) { - for (j = 0; j < 3; j++) { - int n = j + i * 3; - i_slen2[n + 244] = i | (j << 3) | (5 << 12); - n_slen2[n + 500] = i | (j << 3) | (2 << 12) | (1 << 15); - } - } - - for (i = 0; i < 5; i++) { - for (j = 0; j < 5; j++) { - for (k = 0; k < 4; k++) { - int l; - for (l = 0; l < 4; l++) { - int n = l + k * 4 + j * 16 + i * 80; - n_slen2[n] = i | (j << 3) | (k << 6) | (l << 9) | (0 << 12); - } - } - } - } - for (i = 0; i < 5; i++) { - for (j = 0; j < 5; j++) { - for (k = 0; k < 4; k++) { - int n = k + j * 4 + i * 20; - n_slen2[n + 400] = i | (j << 3) | (k << 6) | (1 << 12); - } - } - } -} - -/* - * read additional side information - */ - -static void -III_get_side_info_1(PMPSTR mp, int stereo, - int ms_stereo, long sfreq, int single) -{ - int ch, gr; - int powdiff = (single == 3) ? 4 : 0; - - mp->sideinfo.main_data_begin = getbits(mp, 9); - if (stereo == 1) - mp->sideinfo.private_bits = getbits_fast(mp, 5); - else - mp->sideinfo.private_bits = getbits_fast(mp, 3); - - for (ch = 0; ch < stereo; ch++) { - mp->sideinfo.ch[ch].gr[0].scfsi = -1; - mp->sideinfo.ch[ch].gr[1].scfsi = getbits_fast(mp, 4); - } - - for (gr = 0; gr < 2; gr++) { - for (ch = 0; ch < stereo; ch++) { - struct gr_info_s *gr_infos = &(mp->sideinfo.ch[ch].gr[gr]); - - gr_infos->part2_3_length = getbits(mp, 12); - gr_infos->big_values = getbits_fast(mp, 9); - if (gr_infos->big_values > 288) { - lame_report_fnc(mp->report_err, "big_values too large! %i\n", gr_infos->big_values); - gr_infos->big_values = 288; - } - { - unsigned int qss = getbits_fast(mp, 8); - gr_infos->pow2gain = gainpow2 + 256 - qss + powdiff; - if (mp->pinfo != NULL) { - mp->pinfo->qss[gr][ch] = qss; - } - } - if (ms_stereo) - gr_infos->pow2gain += 2; - gr_infos->scalefac_compress = getbits_fast(mp, 4); -/* window-switching flag == 1 for block_Type != 0 .. and block-type == 0 -> win-sw-flag = 0 */ - if (get1bit(mp)) { - int i; - gr_infos->block_type = getbits_fast(mp, 2); - gr_infos->mixed_block_flag = get1bit(mp); - gr_infos->table_select[0] = getbits_fast(mp, 5); - gr_infos->table_select[1] = getbits_fast(mp, 5); - - - /* - * table_select[2] not needed, because there is no region2, - * but to satisfy some verifications tools we set it either. - */ - gr_infos->table_select[2] = 0; - for (i = 0; i < 3; i++) { - unsigned int sbg = (getbits_fast(mp, 3) << 3); - gr_infos->full_gain[i] = gr_infos->pow2gain + sbg; - if (mp->pinfo != NULL) - mp->pinfo->sub_gain[gr][ch][i] = sbg / 8; - } - - if (gr_infos->block_type == 0) { - lame_report_fnc(mp->report_err, "Blocktype == 0 and window-switching == 1 not allowed.\n"); - /* error seems to be very good recoverable, so don't exit */ - /* exit(1); */ - } - /* region_count/start parameters are implicit in this case. */ - gr_infos->region1start = 36 >> 1; - gr_infos->region2start = 576 >> 1; - } - else { - unsigned int i, r0c, r1c, region0index, region1index; - for (i = 0; i < 3; i++) - gr_infos->table_select[i] = getbits_fast(mp, 5); - r0c = getbits_fast(mp, 4); - r1c = getbits_fast(mp, 3); - region0index = r0c+1; - if (region0index > 22) { - region0index = 22; - lame_report_fnc(mp->report_err, "region0index > 22\n"); - } - region1index = r0c+1 + r1c+1; - if (region1index > 22) { - region1index = 22; - lame_report_fnc(mp->report_err, "region1index > 22\n"); - } - gr_infos->region1start = bandInfo[sfreq].longIdx[region0index] >> 1; - gr_infos->region2start = bandInfo[sfreq].longIdx[region1index] >> 1; - gr_infos->block_type = 0; - gr_infos->mixed_block_flag = 0; - } - gr_infos->preflag = get1bit(mp); - gr_infos->scalefac_scale = get1bit(mp); - gr_infos->count1table_select = get1bit(mp); - } - } -} - -/* - * Side Info for MPEG 2.0 / LSF - */ -static void -III_get_side_info_2(PMPSTR mp, int stereo, int ms_stereo, long sfreq, int single) -{ - int ch; - int powdiff = (single == 3) ? 4 : 0; - - mp->sideinfo.main_data_begin = getbits(mp, 8); - - if (stereo == 1) - mp->sideinfo.private_bits = get1bit(mp); - else - mp->sideinfo.private_bits = getbits_fast(mp, 2); - - for (ch = 0; ch < stereo; ch++) { - struct gr_info_s *gr_infos = &(mp->sideinfo.ch[ch].gr[0]); - unsigned int qss; - - gr_infos->part2_3_length = getbits(mp, 12); - gr_infos->big_values = getbits_fast(mp, 9); - if (gr_infos->big_values > 288) { - lame_report_fnc(mp->report_err, "big_values too large! %i\n", gr_infos->big_values); - gr_infos->big_values = 288; - } - qss = getbits_fast(mp, 8); - gr_infos->pow2gain = gainpow2 + 256 - qss + powdiff; - if (mp->pinfo != NULL) { - mp->pinfo->qss[0][ch] = qss; - } - - - if (ms_stereo) - gr_infos->pow2gain += 2; - gr_infos->scalefac_compress = getbits(mp, 9); -/* window-switching flag == 1 for block_Type != 0 .. and block-type == 0 -> win-sw-flag = 0 */ - if (get1bit(mp)) { - int i; - gr_infos->block_type = getbits_fast(mp, 2); - gr_infos->mixed_block_flag = get1bit(mp); - gr_infos->table_select[0] = getbits_fast(mp, 5); - gr_infos->table_select[1] = getbits_fast(mp, 5); - /* - * table_select[2] not needed, because there is no region2, - * but to satisfy some verifications tools we set it either. - */ - gr_infos->table_select[2] = 0; - for (i = 0; i < 3; i++) { - unsigned int sbg = (getbits_fast(mp, 3) << 3); - gr_infos->full_gain[i] = gr_infos->pow2gain + sbg; - if (mp->pinfo != NULL) - mp->pinfo->sub_gain[0][ch][i] = sbg / 8; - - } - - if (gr_infos->block_type == 0) { - lame_report_fnc(mp->report_err, "Blocktype == 0 and window-switching == 1 not allowed.\n"); - /* error seems to be very good recoverable, so don't exit */ - /* exit(1); */ - } - /* region_count/start parameters are implicit in this case. */ -/* check this again! */ - if (gr_infos->block_type == 2) { - if (sfreq == 8) - gr_infos->region1start = 36; - else - gr_infos->region1start = 36 >> 1; - } - else if (sfreq == 8) -/* check this for 2.5 and sfreq=8 */ - gr_infos->region1start = 108 >> 1; - else - gr_infos->region1start = 54 >> 1; - gr_infos->region2start = 576 >> 1; - } - else { - unsigned int i, r0c, r1c, region0index, region1index; - for (i = 0; i < 3; i++) - gr_infos->table_select[i] = getbits_fast(mp, 5); - r0c = getbits_fast(mp, 4); - r1c = getbits_fast(mp, 3); - region0index = r0c+1; - if (region0index > 22) { - region0index = 22; - lame_report_fnc(mp->report_err, "region0index > 22\n"); - } - region1index = r0c+1 + r1c+1; - if (region1index > 22) { - region1index = 22; - lame_report_fnc(mp->report_err, "region1index > 22\n"); - } - gr_infos->region1start = bandInfo[sfreq].longIdx[region0index] >> 1; - gr_infos->region2start = bandInfo[sfreq].longIdx[region1index] >> 1; - gr_infos->block_type = 0; - gr_infos->mixed_block_flag = 0; - } - gr_infos->scalefac_scale = get1bit(mp); - gr_infos->count1table_select = get1bit(mp); - } -} - -/* - * read scalefactors - */ - -static int -III_get_scale_factors_1(PMPSTR mp, int *scf, struct gr_info_s *gr_infos) -{ - static const unsigned char slen[2][16] = { - {0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4}, - {0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3} - }; - int numbits; - int num0 = slen[0][gr_infos->scalefac_compress]; - int num1 = slen[1][gr_infos->scalefac_compress]; - - if (gr_infos->block_type == 2) { - int i = 18; - numbits = (num0 + num1) * 18; - - if (gr_infos->mixed_block_flag) { - for (i = 8; i; i--) - *scf++ = getbits_fast(mp, num0); - i = 9; - numbits -= num0; /* num0 * 17 + num1 * 18 */ - } - - for (; i; i--) - *scf++ = getbits_fast(mp, num0); - for (i = 18; i; i--) - *scf++ = getbits_fast(mp, num1); - *scf++ = 0; - *scf++ = 0; - *scf++ = 0; /* short[13][0..2] = 0 */ - } - else { - int i; - int scfsi = gr_infos->scfsi; - - if (scfsi < 0) { /* scfsi < 0 => granule == 0 */ - for (i = 11; i; i--) - *scf++ = getbits_fast(mp, num0); - for (i = 10; i; i--) - *scf++ = getbits_fast(mp, num1); - numbits = (num0 + num1) * 10 + num0; - } - else { - numbits = 0; - if (!(scfsi & 0x8)) { - for (i = 6; i; i--) - *scf++ = getbits_fast(mp, num0); - numbits += num0 * 6; - } - else { - scf += 6; - } - - if (!(scfsi & 0x4)) { - for (i = 5; i; i--) - *scf++ = getbits_fast(mp, num0); - numbits += num0 * 5; - } - else { - scf += 5; - } - - if (!(scfsi & 0x2)) { - for (i = 5; i; i--) - *scf++ = getbits_fast(mp, num1); - numbits += num1 * 5; - } - else { - scf += 5; - } - - if (!(scfsi & 0x1)) { - for (i = 5; i; i--) - *scf++ = getbits_fast(mp, num1); - numbits += num1 * 5; - } - else { - scf += 5; - } - } - - *scf++ = 0; /* no l[21] in original sources */ - } - return numbits; -} - - -static int -III_get_scale_factors_2(PMPSTR mp, int *scf, struct gr_info_s *gr_infos, int i_stereo) -{ - unsigned char const *pnt; - int i, j; - unsigned int slen; - int n = 0; - int numbits = 0; - - /* *INDENT-OFF* */ - static const unsigned char stab[3][6][4] = { - { { 6, 5, 5,5 } , { 6, 5, 7,3 } , { 11,10,0,0} , - { 7, 7, 7,0 } , { 6, 6, 6,3 } , { 8, 8,5,0} } , - { { 9, 9, 9,9 } , { 9, 9,12,6 } , { 18,18,0,0} , - {12,12,12,0 } , {12, 9, 9,6 } , { 15,12,9,0} } , - { { 6, 9, 9,9 } , { 6, 9,12,6 } , { 15,18,0,0} , - { 6,15,12,0 } , { 6,12, 9,6 } , { 6,18,9,0} } }; - /* *INDENT-ON* */ - - if (i_stereo) /* i_stereo AND second channel -> do_layer3() checks this */ - slen = i_slen2[gr_infos->scalefac_compress >> 1]; - else - slen = n_slen2[gr_infos->scalefac_compress]; - - gr_infos->preflag = (slen >> 15) & 0x1; - - n = 0; - if (gr_infos->block_type == 2) { - n++; - if (gr_infos->mixed_block_flag) - n++; - } - - pnt = (unsigned char const *) stab[n][(slen >> 12) & 0x7]; - - for (i = 0; i < 4; i++) { - int num = slen & 0x7; - slen >>= 3; - if (num) { - for (j = 0; j < (int) (pnt[i]); j++) - *scf++ = getbits_fast(mp, num); - numbits += pnt[i] * num; - } - else { - for (j = 0; j < (int) (pnt[i]); j++) - *scf++ = 0; - } - } - - n = (n << 1) + 1; - for (i = 0; i < n; i++) - *scf++ = 0; - - return numbits; -} - -/* *INDENT-OFF* */ -static const int pretab1 [22] = {0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,3,3,3,2,0}; /* char enough ? */ -static const int pretab2 [22] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; -/* *INDENT-ON* */ - -/* - * don't forget to apply the same changes to III_dequantize_sample_ms() !!! - */ -static int -III_dequantize_sample(PMPSTR mp, real xr[SBLIMIT][SSLIMIT], int *scf, - struct gr_info_s *gr_infos, int sfreq, int part2bits) -{ - int shift = 1 + gr_infos->scalefac_scale; - real *xrpnt = (real *) xr; - int l[3], l3; - int part2remain = gr_infos->part2_3_length - part2bits; - int *me; - - /* lame_report_fnc(mp->report_dbg,"part2remain = %d, gr_infos->part2_3_length = %d, part2bits = %d\n", - part2remain, gr_infos->part2_3_length, part2bits); */ - - { - int i; - - for (i = (&xr[SBLIMIT][0] - xrpnt) >> 1; i > 0; i--) { - *xrpnt++ = 0.0; - *xrpnt++ = 0.0; - } - - xrpnt = (real *) xr; - } - - { - int bv = gr_infos->big_values; - int region1 = gr_infos->region1start; - int region2 = gr_infos->region2start; - - l3 = ((576 >> 1) - bv) >> 1; -/* - * we may lose the 'odd' bit here !! - * check this later again - */ - if (bv <= region1) { - l[0] = bv; - l[1] = 0; - l[2] = 0; - } - else { - l[0] = region1; - if (bv <= region2) { - l[1] = bv - l[0]; - l[2] = 0; - } - else { - l[1] = region2 - l[0]; - l[2] = bv - region2; - } - } - } - /* MDH crash fix */ - { - int i; - for (i = 0; i < 3; i++) { - if (l[i] < 0) { - lame_report_fnc(mp->report_err, "hip: Bogus region length (%d)\n", l[i]); - l[i] = 0; - } - } - } - /* end MDH crash fix */ - - if (gr_infos->block_type == 2) { - /* - * decoding with short or mixed mode BandIndex table - */ - int i, max[4]; - int step = 0, lwin = 0, cb = 0; - real v = 0.0; - int *m, mc; - - if (gr_infos->mixed_block_flag) { - max[3] = -1; - max[0] = max[1] = max[2] = 2; - m = map[sfreq][0]; - me = mapend[sfreq][0]; - } - else { - max[0] = max[1] = max[2] = max[3] = -1; - /* max[3] not really needed in this case */ - m = map[sfreq][1]; - me = mapend[sfreq][1]; - } - - mc = 0; - for (i = 0; i < 2; i++) { - int lp = l[i]; - struct newhuff const *h = (struct newhuff const *) (ht + gr_infos->table_select[i]); - for (; lp; lp--, mc--) { - int x, y; - if ((!mc)) { - mc = *m++; - xrpnt = ((real *) xr) + (*m++); - lwin = *m++; - cb = *m++; - if (lwin == 3) { - v = gr_infos->pow2gain[(*scf++) << shift]; - step = 1; - } - else { - v = gr_infos->full_gain[lwin][(*scf++) << shift]; - step = 3; - } - } - { - short const *val = (short const *) h->table; - while ((y = *val++) < 0) { - if (get1bit(mp)) - val -= y; - part2remain--; - } - x = y >> 4; - y &= 0xf; - } - if (x == 15) { - max[lwin] = cb; - part2remain -= h->linbits + 1; - x += getbits(mp, (int) h->linbits); - if (get1bit(mp)) - *xrpnt = -ispow[x] * v; - else - *xrpnt = ispow[x] * v; - } - else if (x) { - max[lwin] = cb; - if (get1bit(mp)) - *xrpnt = -ispow[x] * v; - else - *xrpnt = ispow[x] * v; - part2remain--; - } - else - *xrpnt = 0.0; - xrpnt += step; - if (y == 15) { - max[lwin] = cb; - part2remain -= h->linbits + 1; - y += getbits(mp, (int) h->linbits); - if (get1bit(mp)) - *xrpnt = -ispow[y] * v; - else - *xrpnt = ispow[y] * v; - } - else if (y) { - max[lwin] = cb; - if (get1bit(mp)) - *xrpnt = -ispow[y] * v; - else - *xrpnt = ispow[y] * v; - part2remain--; - } - else - *xrpnt = 0.0; - xrpnt += step; - } - } - for (; l3 && (part2remain > 0); l3--) { - struct newhuff const *h = (struct newhuff const *) (htc + gr_infos->count1table_select); - short const *val = (short const *) h->table; - short a; - - while ((a = *val++) < 0) { - part2remain--; - if (part2remain < 0) { - part2remain++; - a = 0; - break; - } - if (get1bit(mp)) - val -= a; - } - for (i = 0; i < 4; i++) { - if (!(i & 1)) { - if (!mc) { - mc = *m++; - xrpnt = ((real *) xr) + (*m++); - lwin = *m++; - cb = *m++; - if (lwin == 3) { - v = gr_infos->pow2gain[(*scf++) << shift]; - step = 1; - } - else { - v = gr_infos->full_gain[lwin][(*scf++) << shift]; - step = 3; - } - } - mc--; - } - if ((a & (0x8 >> i))) { - max[lwin] = cb; - part2remain--; - if (part2remain < 0) { - part2remain++; - break; - } - if (get1bit(mp)) - *xrpnt = -v; - else - *xrpnt = v; - } - else - *xrpnt = 0.0; - xrpnt += step; - } - } - - while (m < me) { - if (!mc) { - mc = *m++; - xrpnt = ((real *) xr) + *m++; - if ((*m++) == 3) - step = 1; - else - step = 3; - m++; /* cb */ - } - mc--; - *xrpnt = 0.0; - xrpnt += step; - *xrpnt = 0.0; - xrpnt += step; -/* we could add a little opt. here: - * if we finished a band for window 3 or a long band - * further bands could copied in a simple loop without a - * special 'map' decoding - */ - } - - gr_infos->maxband[0] = max[0] + 1; - gr_infos->maxband[1] = max[1] + 1; - gr_infos->maxband[2] = max[2] + 1; - gr_infos->maxbandl = max[3] + 1; - - { - int rmax = max[0] > max[1] ? max[0] : max[1]; - rmax = (rmax > max[2] ? rmax : max[2]) + 1; - gr_infos->maxb = rmax ? shortLimit[sfreq][rmax] : longLimit[sfreq][max[3] + 1]; - } - - } - else { - /* - * decoding with 'long' BandIndex table (block_type != 2) - */ - int const *pretab = (int const *) (gr_infos->preflag ? pretab1 : pretab2); - int i, max = -1; - int cb = 0; - int *m = map[sfreq][2]; - real v = 0.0; - int mc = 0; - - /* - * long hash table values - */ - for (i = 0; i < 3; i++) { - int lp = l[i]; - struct newhuff const *h = (struct newhuff const *) (ht + gr_infos->table_select[i]); - - for (; lp; lp--, mc--) { - int x, y; - - if (!mc) { - mc = *m++; - v = gr_infos->pow2gain[((*scf++) + (*pretab++)) << shift]; - cb = *m++; - } - { - short const *val = (short const *) h->table; - while ((y = *val++) < 0) { - if (get1bit(mp)) - val -= y; - part2remain--; - } - x = y >> 4; - y &= 0xf; - } - if (x == 15) { - max = cb; - part2remain -= h->linbits + 1; - x += getbits(mp, (int) h->linbits); - if (get1bit(mp)) - *xrpnt++ = -ispow[x] * v; - else - *xrpnt++ = ispow[x] * v; - } - else if (x) { - max = cb; - if (get1bit(mp)) - *xrpnt++ = -ispow[x] * v; - else - *xrpnt++ = ispow[x] * v; - part2remain--; - } - else - *xrpnt++ = 0.0; - - if (y == 15) { - max = cb; - part2remain -= h->linbits + 1; - y += getbits(mp, (int) h->linbits); - if (get1bit(mp)) - *xrpnt++ = -ispow[y] * v; - else - *xrpnt++ = ispow[y] * v; - } - else if (y) { - max = cb; - if (get1bit(mp)) - *xrpnt++ = -ispow[y] * v; - else - *xrpnt++ = ispow[y] * v; - part2remain--; - } - else - *xrpnt++ = 0.0; - } - } - - /* - * short (count1table) values - */ - for (; l3 && (part2remain > 0); l3--) { - struct newhuff const *h = (struct newhuff const *) (htc + gr_infos->count1table_select); - short const *val = (short const *) h->table; - short a; - - while ((a = *val++) < 0) { - part2remain--; - if (part2remain < 0) { - part2remain++; - a = 0; - break; - } - if (get1bit(mp)) - val -= a; - } - for (i = 0; i < 4; i++) { - if (!(i & 1)) { - if (!mc) { - mc = *m++; - cb = *m++; - v = gr_infos->pow2gain[((*scf++) + (*pretab++)) << shift]; - } - mc--; - } - if ((a & (0x8 >> i))) { - max = cb; - part2remain--; - if (part2remain < 0) { - part2remain++; - break; - } - if (get1bit(mp)) - *xrpnt++ = -v; - else - *xrpnt++ = v; - } - else - *xrpnt++ = 0.0; - } - } - - /* - * zero part - */ - for (i = (&xr[SBLIMIT][0] - xrpnt) >> 1; i; i--) { - *xrpnt++ = 0.0; - *xrpnt++ = 0.0; - } - - gr_infos->maxbandl = max + 1; - gr_infos->maxb = longLimit[sfreq][gr_infos->maxbandl]; - } - - while (part2remain > 16) { - getbits(mp, 16); /* Dismiss stuffing Bits */ - part2remain -= 16; - } - if (part2remain > 0) - getbits(mp, part2remain); - else if (part2remain < 0) { - lame_report_fnc(mp->report_err, "hip: Can't rewind stream by %d bits!\n", -part2remain); - return 1; /* -> error */ - } - return 0; -} - - -/* - * III_stereo: calculate real channel values for Joint-I-Stereo-mode - */ -static void -III_i_stereo(real xr_buf[2][SBLIMIT][SSLIMIT], int *scalefac, - struct gr_info_s *gr_infos, int sfreq, int ms_stereo, int lsf) -{ - real(*xr)[SBLIMIT * SSLIMIT] = (real(*)[SBLIMIT * SSLIMIT]) xr_buf; - struct bandInfoStruct const *bi = (struct bandInfoStruct const *) &bandInfo[sfreq]; - real *tabl1, *tabl2; - - if (lsf) { - int p = gr_infos->scalefac_compress & 0x1; - if (ms_stereo) { - tabl1 = pow1_2[p]; - tabl2 = pow2_2[p]; - } - else { - tabl1 = pow1_1[p]; - tabl2 = pow2_1[p]; - } - } - else { - if (ms_stereo) { - tabl1 = tan1_2; - tabl2 = tan2_2; - } - else { - tabl1 = tan1_1; - tabl2 = tan2_1; - } - } - - if (gr_infos->block_type == 2) { - int lwin, do_l = 0; - if (gr_infos->mixed_block_flag) - do_l = 1; - - for (lwin = 0; lwin < 3; lwin++) { /* process each window */ - /* get first band with zero values */ - int is_p, sb, idx, sfb = gr_infos->maxband[lwin]; /* sfb is minimal 3 for mixed mode */ - if (sfb > 3) - do_l = 0; - - for (; sfb < 12; sfb++) { - is_p = scalefac[sfb * 3 + lwin - gr_infos->mixed_block_flag]; /* scale: 0-15 */ - if (is_p != 7) { - real t1, t2; - sb = bi->shortDiff[sfb]; - idx = bi->shortIdx[sfb] + lwin; - t1 = tabl1[is_p]; - t2 = tabl2[is_p]; - for (; sb > 0; sb--, idx += 3) { - real v = xr[0][idx]; - xr[0][idx] = v * t1; - xr[1][idx] = v * t2; - } - } - } - -#if 1 -/* in the original: copy 10 to 11 , here: copy 11 to 12 -maybe still wrong??? (copy 12 to 13?) */ - is_p = scalefac[11 * 3 + lwin - gr_infos->mixed_block_flag]; /* scale: 0-15 */ - sb = bi->shortDiff[12]; - idx = bi->shortIdx[12] + lwin; -#else - is_p = scalefac[10 * 3 + lwin - gr_infos->mixed_block_flag]; /* scale: 0-15 */ - sb = bi->shortDiff[11]; - idx = bi->shortIdx[11] + lwin; -#endif - if (is_p != 7) { - real t1, t2; - t1 = tabl1[is_p]; - t2 = tabl2[is_p]; - for (; sb > 0; sb--, idx += 3) { - real v = xr[0][idx]; - xr[0][idx] = v * t1; - xr[1][idx] = v * t2; - } - } - } /* end for(lwin; .. ; . ) */ - - if (do_l) { -/* also check l-part, if ALL bands in the three windows are 'empty' - * and mode = mixed_mode - */ - int sfb = gr_infos->maxbandl; - int idx = bi->longIdx[sfb]; - - for (; sfb < 8; sfb++) { - int sb = bi->longDiff[sfb]; - int is_p = scalefac[sfb]; /* scale: 0-15 */ - if (is_p != 7) { - real t1, t2; - t1 = tabl1[is_p]; - t2 = tabl2[is_p]; - for (; sb > 0; sb--, idx++) { - real v = xr[0][idx]; - xr[0][idx] = v * t1; - xr[1][idx] = v * t2; - } - } - else - idx += sb; - } - } - } - else { /* ((gr_infos->block_type != 2)) */ - - int sfb = gr_infos->maxbandl; - int is_p, idx = bi->longIdx[sfb]; - for (; sfb < 21; sfb++) { - int sb = bi->longDiff[sfb]; - is_p = scalefac[sfb]; /* scale: 0-15 */ - if (is_p != 7) { - real t1, t2; - t1 = tabl1[is_p]; - t2 = tabl2[is_p]; - for (; sb > 0; sb--, idx++) { - real v = xr[0][idx]; - xr[0][idx] = v * t1; - xr[1][idx] = v * t2; - } - } - else - idx += sb; - } - - is_p = scalefac[20]; /* copy l-band 20 to l-band 21 */ - if (is_p != 7) { - int sb; - real t1 = tabl1[is_p], t2 = tabl2[is_p]; - - for (sb = bi->longDiff[21]; sb > 0; sb--, idx++) { - real v = xr[0][idx]; - xr[0][idx] = v * t1; - xr[1][idx] = v * t2; - } - } - } /* ... */ -} - -static void -III_antialias(real xr[SBLIMIT][SSLIMIT], struct gr_info_s *gr_infos) -{ - int sblim; - - if (gr_infos->block_type == 2) { - if (!gr_infos->mixed_block_flag) - return; - sblim = 1; - } - else { - sblim = gr_infos->maxb - 1; - } - - /* 31 alias-reduction operations between each pair of sub-bands */ - /* with 8 butterflies between each pair */ - - { - int sb; - real *xr1 = (real *) xr[1]; - - for (sb = sblim; sb; sb--, xr1 += 10) { - int ss; - real *cs = aa_cs, *ca = aa_ca; - real *xr2 = xr1; - - for (ss = 7; ss >= 0; ss--) { /* upper and lower butterfly inputs */ - real bu = *--xr2, bd = *xr1; - *xr2 = (bu * (*cs)) - (bd * (*ca)); - *xr1++ = (bd * (*cs++)) + (bu * (*ca++)); - } - } - } -} - - -/* *INDENT-OFF* */ - -/* - DCT insipired by Jeff Tsay's DCT from the maplay package - this is an optimized version with manual unroll. - - References: - [1] S. Winograd: "On Computing the Discrete Fourier Transform", - Mathematics of Computation, Volume 32, Number 141, January 1978, - Pages 175-199 -*/ - -static void dct36(real *inbuf,real *o1,real *o2,real *wintab,real *tsbuf) -{ - { - real *in = inbuf; - - in[17]+=in[16]; in[16]+=in[15]; in[15]+=in[14]; - in[14]+=in[13]; in[13]+=in[12]; in[12]+=in[11]; - in[11]+=in[10]; in[10]+=in[9]; in[9] +=in[8]; - in[8] +=in[7]; in[7] +=in[6]; in[6] +=in[5]; - in[5] +=in[4]; in[4] +=in[3]; in[3] +=in[2]; - in[2] +=in[1]; in[1] +=in[0]; - - in[17]+=in[15]; in[15]+=in[13]; in[13]+=in[11]; in[11]+=in[9]; - in[9] +=in[7]; in[7] +=in[5]; in[5] +=in[3]; in[3] +=in[1]; - - { - -#define MACRO0(v) { \ - real tmp; \ - out2[9+(v)] = (tmp = sum0 + sum1) * w[27+(v)]; \ - out2[8-(v)] = tmp * w[26-(v)]; } \ - sum0 -= sum1; \ - ts[SBLIMIT*(8-(v))] = out1[8-(v)] + sum0 * w[8-(v)]; \ - ts[SBLIMIT*(9+(v))] = out1[9+(v)] + sum0 * w[9+(v)]; -#define MACRO1(v) { \ - real sum0,sum1; \ - sum0 = tmp1a + tmp2a; \ - sum1 = (tmp1b + tmp2b) * tfcos36[(v)]; \ - MACRO0(v); } -#define MACRO2(v) { \ - real sum0,sum1; \ - sum0 = tmp2a - tmp1a; \ - sum1 = (tmp2b - tmp1b) * tfcos36[(v)]; \ - MACRO0(v); } - - const real *c = COS9; - real *out2 = o2; - real *w = wintab; - real *out1 = o1; - real *ts = tsbuf; - - real ta33,ta66,tb33,tb66; - - ta33 = in[2*3+0] * c[3]; - ta66 = in[2*6+0] * c[6]; - tb33 = in[2*3+1] * c[3]; - tb66 = in[2*6+1] * c[6]; - - { - real tmp1a,tmp2a,tmp1b,tmp2b; - tmp1a = in[2*1+0] * c[1] + ta33 + in[2*5+0] * c[5] + in[2*7+0] * c[7]; - tmp1b = in[2*1+1] * c[1] + tb33 + in[2*5+1] * c[5] + in[2*7+1] * c[7]; - tmp2a = in[2*0+0] + in[2*2+0] * c[2] + in[2*4+0] * c[4] + ta66 + in[2*8+0] * c[8]; - tmp2b = in[2*0+1] + in[2*2+1] * c[2] + in[2*4+1] * c[4] + tb66 + in[2*8+1] * c[8]; - - MACRO1(0); - MACRO2(8); - } - - { - real tmp1a,tmp2a,tmp1b,tmp2b; - tmp1a = ( in[2*1+0] - in[2*5+0] - in[2*7+0] ) * c[3]; - tmp1b = ( in[2*1+1] - in[2*5+1] - in[2*7+1] ) * c[3]; - tmp2a = ( in[2*2+0] - in[2*4+0] - in[2*8+0] ) * c[6] - in[2*6+0] + in[2*0+0]; - tmp2b = ( in[2*2+1] - in[2*4+1] - in[2*8+1] ) * c[6] - in[2*6+1] + in[2*0+1]; - - MACRO1(1); - MACRO2(7); - } - - { - real tmp1a,tmp2a,tmp1b,tmp2b; - tmp1a = in[2*1+0] * c[5] - ta33 - in[2*5+0] * c[7] + in[2*7+0] * c[1]; - tmp1b = in[2*1+1] * c[5] - tb33 - in[2*5+1] * c[7] + in[2*7+1] * c[1]; - tmp2a = in[2*0+0] - in[2*2+0] * c[8] - in[2*4+0] * c[2] + ta66 + in[2*8+0] * c[4]; - tmp2b = in[2*0+1] - in[2*2+1] * c[8] - in[2*4+1] * c[2] + tb66 + in[2*8+1] * c[4]; - - MACRO1(2); - MACRO2(6); - } - - { - real tmp1a,tmp2a,tmp1b,tmp2b; - tmp1a = in[2*1+0] * c[7] - ta33 + in[2*5+0] * c[1] - in[2*7+0] * c[5]; - tmp1b = in[2*1+1] * c[7] - tb33 + in[2*5+1] * c[1] - in[2*7+1] * c[5]; - tmp2a = in[2*0+0] - in[2*2+0] * c[4] + in[2*4+0] * c[8] + ta66 - in[2*8+0] * c[2]; - tmp2b = in[2*0+1] - in[2*2+1] * c[4] + in[2*4+1] * c[8] + tb66 - in[2*8+1] * c[2]; - - MACRO1(3); - MACRO2(5); - } - - { - real sum0,sum1; - sum0 = in[2*0+0] - in[2*2+0] + in[2*4+0] - in[2*6+0] + in[2*8+0]; - sum1 = (in[2*0+1] - in[2*2+1] + in[2*4+1] - in[2*6+1] + in[2*8+1] ) * tfcos36[4]; - MACRO0(4); - } - } - - } -} - - -/* - * new DCT12 - */ -static void dct12(real *in,real *rawout1,real *rawout2,real *wi,real *ts) -{ -#define DCT12_PART1 \ - in5 = in[5*3]; \ - in5 += (in4 = in[4*3]); \ - in4 += (in3 = in[3*3]); \ - in3 += (in2 = in[2*3]); \ - in2 += (in1 = in[1*3]); \ - in1 += (in0 = in[0*3]); \ - \ - in5 += in3; in3 += in1; \ - \ - in2 *= COS6_1; \ - in3 *= COS6_1; \ - -#define DCT12_PART2 \ - in0 += in4 * COS6_2; \ - \ - in4 = in0 + in2; \ - in0 -= in2; \ - \ - in1 += in5 * COS6_2; \ - \ - in5 = (in1 + in3) * tfcos12[0]; \ - in1 = (in1 - in3) * tfcos12[2]; \ - \ - in3 = in4 + in5; \ - in4 -= in5; \ - \ - in2 = in0 + in1; \ - in0 -= in1; - - - { - real in0,in1,in2,in3,in4,in5; - real *out1 = rawout1; - ts[SBLIMIT*0] = out1[0]; ts[SBLIMIT*1] = out1[1]; ts[SBLIMIT*2] = out1[2]; - ts[SBLIMIT*3] = out1[3]; ts[SBLIMIT*4] = out1[4]; ts[SBLIMIT*5] = out1[5]; - - DCT12_PART1 - - { - real tmp0,tmp1 = (in0 - in4); - { - real tmp2 = (in1 - in5) * tfcos12[1]; - tmp0 = tmp1 + tmp2; - tmp1 -= tmp2; - } - ts[(17-1)*SBLIMIT] = out1[17-1] + tmp0 * wi[11-1]; - ts[(12+1)*SBLIMIT] = out1[12+1] + tmp0 * wi[6+1]; - ts[(6 +1)*SBLIMIT] = out1[6 +1] + tmp1 * wi[1]; - ts[(11-1)*SBLIMIT] = out1[11-1] + tmp1 * wi[5-1]; - } - - DCT12_PART2 - - ts[(17-0)*SBLIMIT] = out1[17-0] + in2 * wi[11-0]; - ts[(12+0)*SBLIMIT] = out1[12+0] + in2 * wi[6+0]; - ts[(12+2)*SBLIMIT] = out1[12+2] + in3 * wi[6+2]; - ts[(17-2)*SBLIMIT] = out1[17-2] + in3 * wi[11-2]; - - ts[(6+0)*SBLIMIT] = out1[6+0] + in0 * wi[0]; - ts[(11-0)*SBLIMIT] = out1[11-0] + in0 * wi[5-0]; - ts[(6+2)*SBLIMIT] = out1[6+2] + in4 * wi[2]; - ts[(11-2)*SBLIMIT] = out1[11-2] + in4 * wi[5-2]; - } - - in++; - - { - real in0,in1,in2,in3,in4,in5; - real *out2 = rawout2; - - DCT12_PART1 - - { - real tmp0,tmp1 = (in0 - in4); - { - real tmp2 = (in1 - in5) * tfcos12[1]; - tmp0 = tmp1 + tmp2; - tmp1 -= tmp2; - } - out2[5-1] = tmp0 * wi[11-1]; - out2[0+1] = tmp0 * wi[6+1]; - ts[(12+1)*SBLIMIT] += tmp1 * wi[1]; - ts[(17-1)*SBLIMIT] += tmp1 * wi[5-1]; - } - - DCT12_PART2 - - out2[5-0] = in2 * wi[11-0]; - out2[0+0] = in2 * wi[6+0]; - out2[0+2] = in3 * wi[6+2]; - out2[5-2] = in3 * wi[11-2]; - - ts[(12+0)*SBLIMIT] += in0 * wi[0]; - ts[(17-0)*SBLIMIT] += in0 * wi[5-0]; - ts[(12+2)*SBLIMIT] += in4 * wi[2]; - ts[(17-2)*SBLIMIT] += in4 * wi[5-2]; - } - - in++; - - { - real in0,in1,in2,in3,in4,in5; - real *out2 = rawout2; - out2[12]=out2[13]=out2[14]=out2[15]=out2[16]=out2[17]=0.0; - - DCT12_PART1 - - { - real tmp0,tmp1 = (in0 - in4); - { - real tmp2 = (in1 - in5) * tfcos12[1]; - tmp0 = tmp1 + tmp2; - tmp1 -= tmp2; - } - out2[11-1] = tmp0 * wi[11-1]; - out2[6 +1] = tmp0 * wi[6+1]; - out2[0+1] += tmp1 * wi[1]; - out2[5-1] += tmp1 * wi[5-1]; - } - - DCT12_PART2 - - out2[11-0] = in2 * wi[11-0]; - out2[6 +0] = in2 * wi[6+0]; - out2[6 +2] = in3 * wi[6+2]; - out2[11-2] = in3 * wi[11-2]; - - out2[0+0] += in0 * wi[0]; - out2[5-0] += in0 * wi[5-0]; - out2[0+2] += in4 * wi[2]; - out2[5-2] += in4 * wi[5-2]; - } -} -/* *INDENT-ON* */ - -/* - * III_hybrid - */ -static void -III_hybrid(PMPSTR mp, real fsIn[SBLIMIT][SSLIMIT], real tsOut[SSLIMIT][SBLIMIT], - int ch, struct gr_info_s *gr_infos) -{ - real *tspnt = (real *) tsOut; - real(*block)[2][SBLIMIT * SSLIMIT] = mp->hybrid_block; - int *blc = mp->hybrid_blc; - real *rawout1, *rawout2; - int bt; - int sb = 0; - - { - int b = blc[ch]; - rawout1 = block[b][ch]; - b = -b + 1; - rawout2 = block[b][ch]; - blc[ch] = b; - } - - - if (gr_infos->mixed_block_flag) { - sb = 2; - dct36(fsIn[0], rawout1, rawout2, win[0], tspnt); - dct36(fsIn[1], rawout1 + 18, rawout2 + 18, win1[0], tspnt + 1); - rawout1 += 36; - rawout2 += 36; - tspnt += 2; - } - - bt = gr_infos->block_type; - if (bt == 2) { - for (; sb < (int) gr_infos->maxb; sb += 2, tspnt += 2, rawout1 += 36, rawout2 += 36) { - dct12(fsIn[sb], rawout1, rawout2, win[2], tspnt); - dct12(fsIn[sb + 1], rawout1 + 18, rawout2 + 18, win1[2], tspnt + 1); - } - } - else { - for (; sb < (int) gr_infos->maxb; sb += 2, tspnt += 2, rawout1 += 36, rawout2 += 36) { - dct36(fsIn[sb], rawout1, rawout2, win[bt], tspnt); - dct36(fsIn[sb + 1], rawout1 + 18, rawout2 + 18, win1[bt], tspnt + 1); - } - } - - for (; sb < SBLIMIT; sb++, tspnt++) { - int i; - for (i = 0; i < SSLIMIT; i++) { - tspnt[i * SBLIMIT] = *rawout1++; - *rawout2++ = 0.0; - } - } -} - -/* - * main layer3 handler - */ - -int -layer3_audiodata_precedesframes(PMPSTR mp) -{ - int audioDataInFrame; - int framesToBacktrack; - - /* specific to Layer 3, since Layer 1 & 2 the audio data starts at the frame that describes it. */ - /* determine how many bytes and therefore bitstream frames the audio data precedes it's matching frame */ - /* lame_report_fnc(mp->report_err, "hip: main_data_begin = %d, mp->bsize %d, mp->fsizeold %d, mp->ssize %d\n", - sideinfo.main_data_begin, mp->bsize, mp->fsizeold, mp->ssize); */ - /* compute the number of frames to backtrack, 4 for the header, ssize already holds the CRC */ - /* TODO Erroneously assumes current frame is same as previous frame. */ - audioDataInFrame = mp->bsize - 4 - mp->ssize; - framesToBacktrack = (mp->sideinfo.main_data_begin + audioDataInFrame - 1) / audioDataInFrame; - /* lame_report_fnc(mp->report_err, "hip: audioDataInFrame %d framesToBacktrack %d\n", audioDataInFrame, framesToBacktrack); */ - return framesToBacktrack; -} - -int -decode_layer3_sideinfo(PMPSTR mp) -{ - struct frame *fr = &mp->fr; - int stereo = fr->stereo; - int single = fr->single; - int ms_stereo; - int sfreq = fr->sampling_frequency; - int granules; - int ch, gr, databits; - - if (stereo == 1) { /* stream is mono */ - single = 0; - } - - if (fr->mode == MPG_MD_JOINT_STEREO) { - ms_stereo = fr->mode_ext & 0x2; - } - else - ms_stereo = 0; - - - if (fr->lsf) { - granules = 1; - III_get_side_info_2(mp, stereo, ms_stereo, sfreq, single); - } - else { - granules = 2; - III_get_side_info_1(mp, stereo, ms_stereo, sfreq, single); - } - - databits = 0; - for (gr = 0; gr < granules; ++gr) { - for (ch = 0; ch < stereo; ++ch) { - struct gr_info_s *gr_infos = &(mp->sideinfo.ch[ch].gr[gr]); - databits += gr_infos->part2_3_length; - } - } - return databits - 8 * mp->sideinfo.main_data_begin; -} - - - -int -decode_layer3_frame(PMPSTR mp, unsigned char *pcm_sample, int *pcm_point, - int (*synth_1to1_mono_ptr) (PMPSTR, real *, unsigned char *, int *), - int (*synth_1to1_ptr) (PMPSTR, real *, int, unsigned char *, int *)) -{ - int gr, ch, ss, clip = 0; - int scalefacs[2][39]; /* max 39 for short[13][3] mode, mixed: 38, long: 22 */ - /* struct III_sideinfo sideinfo; */ - struct frame *fr = &(mp->fr); - int stereo = fr->stereo; - int single = fr->single; - int ms_stereo, i_stereo; - int sfreq = fr->sampling_frequency; - int stereo1, granules; - real hybridIn[2][SBLIMIT][SSLIMIT]; - real hybridOut[2][SSLIMIT][SBLIMIT]; - - if (set_pointer(mp, (int) mp->sideinfo.main_data_begin) == MP3_ERR) - return 0; - - if (stereo == 1) { /* stream is mono */ - stereo1 = 1; - single = 0; - } - else if (single >= 0) /* stream is stereo, but force to mono */ - stereo1 = 1; - else - stereo1 = 2; - - if (fr->mode == MPG_MD_JOINT_STEREO) { - ms_stereo = fr->mode_ext & 0x2; - i_stereo = fr->mode_ext & 0x1; - } - else - ms_stereo = i_stereo = 0; - - - if (fr->lsf) { - granules = 1; - } - else { - granules = 2; - } - - for (gr = 0; gr < granules; gr++) { - - { - struct gr_info_s *gr_infos = &(mp->sideinfo.ch[0].gr[gr]); - long part2bits; - - if (fr->lsf) - part2bits = III_get_scale_factors_2(mp, scalefacs[0], gr_infos, 0); - else { - part2bits = III_get_scale_factors_1(mp, scalefacs[0], gr_infos); - } - - if (mp->pinfo != NULL) { - int i; - mp->pinfo->sfbits[gr][0] = part2bits; - for (i = 0; i < 39; i++) - mp->pinfo->sfb_s[gr][0][i] = scalefacs[0][i]; - } - - /* lame_report_fnc(mp->report_err, "calling III dequantize sample 1 gr_infos->part2_3_length %d\n", gr_infos->part2_3_length); */ - if (III_dequantize_sample(mp, hybridIn[0], scalefacs[0], gr_infos, sfreq, part2bits)) - return clip; - } - if (stereo == 2) { - struct gr_info_s *gr_infos = &(mp->sideinfo.ch[1].gr[gr]); - long part2bits; - if (fr->lsf) - part2bits = III_get_scale_factors_2(mp, scalefacs[1], gr_infos, i_stereo); - else { - part2bits = III_get_scale_factors_1(mp, scalefacs[1], gr_infos); - } - if (mp->pinfo != NULL) { - int i; - mp->pinfo->sfbits[gr][1] = part2bits; - for (i = 0; i < 39; i++) - mp->pinfo->sfb_s[gr][1][i] = scalefacs[1][i]; - } - - /* lame_report_fnc(mp->report_err, "calling III dequantize sample 2 gr_infos->part2_3_length %d\n", gr_infos->part2_3_length); */ - if (III_dequantize_sample(mp, hybridIn[1], scalefacs[1], gr_infos, sfreq, part2bits)) - return clip; - - if (ms_stereo) { - int i; - for (i = 0; i < SBLIMIT * SSLIMIT; i++) { - real tmp0, tmp1; - tmp0 = ((real *) hybridIn[0])[i]; - tmp1 = ((real *) hybridIn[1])[i]; - ((real *) hybridIn[1])[i] = tmp0 - tmp1; - ((real *) hybridIn[0])[i] = tmp0 + tmp1; - } - } - - if (i_stereo) - III_i_stereo(hybridIn, scalefacs[1], gr_infos, sfreq, ms_stereo, fr->lsf); - - if (ms_stereo || i_stereo || (single == 3)) { - if (gr_infos->maxb > mp->sideinfo.ch[0].gr[gr].maxb) - mp->sideinfo.ch[0].gr[gr].maxb = gr_infos->maxb; - else - gr_infos->maxb = mp->sideinfo.ch[0].gr[gr].maxb; - } - - switch (single) { - case 3: - { - int i; - real *in0 = (real *) hybridIn[0], *in1 = (real *) hybridIn[1]; - for (i = 0; i < (int) (SSLIMIT * gr_infos->maxb); i++, in0++) - *in0 = (*in0 + *in1++); /* *0.5 done by pow-scale */ - } - break; - case 1: - { - int i; - real *in0 = (real *) hybridIn[0], *in1 = (real *) hybridIn[1]; - for (i = 0; i < (int) (SSLIMIT * gr_infos->maxb); i++) - *in0++ = *in1++; - } - break; - } - } - - if (mp->pinfo != NULL) { - int i, sb; - float ifqstep; - - mp->pinfo->bitrate = tabsel_123[fr->lsf][fr->lay - 1][fr->bitrate_index]; - mp->pinfo->sampfreq = freqs[sfreq]; - mp->pinfo->emph = fr->emphasis; - mp->pinfo->crc = fr->error_protection; - mp->pinfo->padding = fr->padding; - mp->pinfo->stereo = fr->stereo; - mp->pinfo->js = (fr->mode == MPG_MD_JOINT_STEREO); - mp->pinfo->ms_stereo = ms_stereo; - mp->pinfo->i_stereo = i_stereo; - mp->pinfo->maindata = mp->sideinfo.main_data_begin; - - for (ch = 0; ch < stereo1; ch++) { - struct gr_info_s *gr_infos = &(mp->sideinfo.ch[ch].gr[gr]); - mp->pinfo->big_values[gr][ch] = gr_infos->big_values; - mp->pinfo->scalefac_scale[gr][ch] = gr_infos->scalefac_scale; - mp->pinfo->mixed[gr][ch] = gr_infos->mixed_block_flag; - mp->pinfo->mpg123blocktype[gr][ch] = gr_infos->block_type; - mp->pinfo->mainbits[gr][ch] = gr_infos->part2_3_length; - mp->pinfo->preflag[gr][ch] = gr_infos->preflag; - if (gr == 1) - mp->pinfo->scfsi[ch] = gr_infos->scfsi; - } - - - for (ch = 0; ch < stereo1; ch++) { - struct gr_info_s *gr_infos = &(mp->sideinfo.ch[ch].gr[gr]); - ifqstep = (mp->pinfo->scalefac_scale[gr][ch] == 0) ? .5 : 1.0; - if (2 == gr_infos->block_type) { - for (i = 0; i < 3; i++) { - for (sb = 0; sb < 12; sb++) { - int j = 3 * sb + i; - /* - is_p = scalefac[sfb*3+lwin-gr_infos->mixed_block_flag]; - */ - /* scalefac was copied into pinfo->sfb_s[] above */ - mp->pinfo->sfb_s[gr][ch][j] = - -ifqstep * mp->pinfo->sfb_s[gr][ch][j - gr_infos->mixed_block_flag]; - mp->pinfo->sfb_s[gr][ch][j] -= 2 * (mp->pinfo->sub_gain[gr][ch][i]); - } - mp->pinfo->sfb_s[gr][ch][3 * sb + i] = - -2 * (mp->pinfo->sub_gain[gr][ch][i]); - } - } - else { - for (sb = 0; sb < 21; sb++) { - /* scalefac was copied into pinfo->sfb[] above */ - mp->pinfo->sfb[gr][ch][sb] = mp->pinfo->sfb_s[gr][ch][sb]; - if (gr_infos->preflag) - mp->pinfo->sfb[gr][ch][sb] += pretab1[sb]; - mp->pinfo->sfb[gr][ch][sb] *= -ifqstep; - } - mp->pinfo->sfb[gr][ch][21] = 0; - } - } - - - - for (ch = 0; ch < stereo1; ch++) { - int j = 0; - for (sb = 0; sb < SBLIMIT; sb++) - for (ss = 0; ss < SSLIMIT; ss++, j++) - mp->pinfo->mpg123xr[gr][ch][j] = hybridIn[ch][sb][ss]; - } - } - - - for (ch = 0; ch < stereo1; ch++) { - struct gr_info_s *gr_infos = &(mp->sideinfo.ch[ch].gr[gr]); - III_antialias(hybridIn[ch], gr_infos); - III_hybrid(mp, hybridIn[ch], hybridOut[ch], ch, gr_infos); - } - - for (ss = 0; ss < SSLIMIT; ss++) { - if (single >= 0) { - clip += (*synth_1to1_mono_ptr) (mp, hybridOut[0][ss], pcm_sample, pcm_point); - } - else { - int p1 = *pcm_point; - clip += (*synth_1to1_ptr) (mp, hybridOut[0][ss], 0, pcm_sample, &p1); - clip += (*synth_1to1_ptr) (mp, hybridOut[1][ss], 1, pcm_sample, pcm_point); - } - } - } - - return clip; -} diff --git a/platform/win32/msvc/external/lame/mpglib/layer3.h b/platform/win32/msvc/external/lame/mpglib/layer3.h deleted file mode 100644 index 2e3019207fd..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/layer3.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (C) 1999-2010 The L.A.M.E. project - * - * Initially written by Michael Hipp, see also AUTHORS and README. - * - * 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 LAYER3_H_INCLUDED -#define LAYER3_H_INCLUDED - -void hip_init_tables_layer3(void); -int decode_layer3_sideinfo(PMPSTR mp); -int decode_layer3_frame(PMPSTR mp, unsigned char *pcm_sample, int *pcm_point, - int (*synth_1to1_mono_ptr) (PMPSTR, real *, unsigned char *, int *), - int (*synth_1to1_ptr) (PMPSTR, real *, int, unsigned char *, int *)); -int layer3_audiodata_precedesframes(PMPSTR mp); - -#endif diff --git a/platform/win32/msvc/external/lame/mpglib/mpg123.h b/platform/win32/msvc/external/lame/mpglib/mpg123.h deleted file mode 100644 index 6ac8b67c50f..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/mpg123.h +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright (C) 1999-2010 The L.A.M.E. project - * - * Initially written by Michael Hipp, see also AUTHORS and README. - * - * 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 MPG123_H_INCLUDED -#define MPG123_H_INCLUDED - -#include <stdio.h> - -#ifdef STDC_HEADERS -# include <string.h> -#else -# ifndef HAVE_STRCHR -# define strchr index -# define strrchr rindex -# endif -char *strchr(), *strrchr(); -# ifndef HAVE_MEMCPY -# define memcpy(d, s, n) bcopy ((s), (d), (n)) -# define memmove(d, s, n) bcopy ((s), (d), (n)) -# endif -#endif - -#include <signal.h> - - -#if defined(__riscos__) && defined(FPA10) -#include "ymath.h" -#else -#include <math.h> -#endif - -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif -#ifndef M_SQRT2 -#define M_SQRT2 1.41421356237309504880 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif -#ifndef TRUE -#define TRUE 1 -#endif - -#undef REAL_IS_FLOAT -#define REAL_IS_FLOAT - -#ifdef REAL_IS_FLOAT -# define real float -#elif defined(REAL_IS_LONG_DOUBLE) -# define real long double -#else -# define real double -#endif - -#define FALSE 0 -#define TRUE 1 - -#define SBLIMIT 32 -#define SSLIMIT 18 - -#define MPG_MD_STEREO 0 -#define MPG_MD_JOINT_STEREO 1 -#define MPG_MD_DUAL_CHANNEL 2 -#define MPG_MD_MONO 3 - -#define MAXFRAMESIZE 2880 - -/* AF: ADDED FOR LAYER1/LAYER2 */ -#define SCALE_BLOCK 12 - - -/* Pre Shift fo 16 to 8 bit converter table */ -#define AUSHIFT (3) - -struct frame { - int stereo; - int single; /* single channel (monophonic) */ - int lsf; /* 0 = MPEG-1, 1 = MPEG-2/2.5 */ - int mpeg25; /* 1 = MPEG-2.5, 0 = MPEG-1/2 */ - int header_change; - int lay; /* Layer */ - int error_protection; /* 1 = CRC-16 code following header */ - int bitrate_index; - int sampling_frequency; /* sample rate of decompressed audio in Hz */ - int padding; - int extension; - int mode; - int mode_ext; - int copyright; - int original; - int emphasis; - int framesize; /* computed framesize */ - - /* AF: ADDED FOR LAYER1/LAYER2 */ - int II_sblimit; - struct al_table2 const *alloc; - int down_sample_sblimit; - int down_sample; - - -}; - -struct gr_info_s { - int scfsi; - unsigned part2_3_length; - unsigned big_values; - unsigned scalefac_compress; - unsigned block_type; - unsigned mixed_block_flag; - unsigned table_select[3]; - unsigned subblock_gain[3]; - unsigned maxband[3]; - unsigned maxbandl; - unsigned maxb; - unsigned region1start; - unsigned region2start; - unsigned preflag; - unsigned scalefac_scale; - unsigned count1table_select; - real *full_gain[3]; - real *pow2gain; -}; - -struct III_sideinfo { - unsigned main_data_begin; - unsigned private_bits; - struct { - struct gr_info_s gr[2]; - } ch[2]; -}; - - -#endif diff --git a/platform/win32/msvc/external/lame/mpglib/mpglib.h b/platform/win32/msvc/external/lame/mpglib/mpglib.h deleted file mode 100644 index 7ab4d5f43ab..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/mpglib.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (C) 1999-2010 The L.A.M.E. project - * - * Initially written by Michael Hipp, see also AUTHORS and README. - * - * 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 _MPGLIB_H_ -#define _MPGLIB_H_ - -#include "lame.h" - -#ifndef plotting_data_defined -#define plotting_data_defined -struct plotting_data; -typedef struct plotting_data plotting_data; -#endif - - -extern void lame_report_fnc(lame_report_function f, const char *format, ...); - -struct buf { - unsigned char *pnt; - long size; - long pos; - struct buf *next; - struct buf *prev; -}; - -struct framebuf { - struct buf *buf; - long pos; - struct frame *next; - struct frame *prev; -}; - -typedef struct mpstr_tag { - struct buf *head, *tail; /* buffer linked list pointers, tail points to oldest buffer */ - int vbr_header; /* 1 if valid Xing vbr header detected */ - int num_frames; /* set if vbr header present */ - int enc_delay; /* set if vbr header present */ - int enc_padding; /* set if vbr header present */ - /* header_parsed, side_parsed and data_parsed must be all set 1 - before the full frame has been parsed */ - int header_parsed; /* 1 = header of current frame has been parsed */ - int side_parsed; /* 1 = header of sideinfo of current frame has been parsed */ - int data_parsed; - int free_format; /* 1 = free format frame */ - int old_free_format; /* 1 = last frame was free format */ - int bsize; - int framesize; - int ssize; /* number of bytes used for side information, including 2 bytes for CRC-16 if present */ - int dsize; - int fsizeold; /* size of previous frame, -1 for first */ - int fsizeold_nopadding; - struct frame fr; /* holds the parameters decoded from the header */ - struct III_sideinfo sideinfo; - unsigned char bsspace[2][MAXFRAMESIZE + 1024]; /* bit stream space used ???? */ /* MAXFRAMESIZE */ - real hybrid_block[2][2][SBLIMIT * SSLIMIT]; - int hybrid_blc[2]; - unsigned long header; - int bsnum; - real synth_buffs[2][2][0x110]; - int synth_bo; - int sync_bitstream; /* 1 = bitstream is yet to be synchronized */ - - int bitindex; - unsigned char *wordpointer; - plotting_data *pinfo; - - lame_report_function report_msg; - lame_report_function report_dbg; - lame_report_function report_err; -} MPSTR, *PMPSTR; - - -#define MP3_ERR -1 -#define MP3_OK 0 -#define MP3_NEED_MORE 1 - - - -#endif /* _MPGLIB_H_ */ diff --git a/platform/win32/msvc/external/lame/mpglib/tabinit.c b/platform/win32/msvc/external/lame/mpglib/tabinit.c deleted file mode 100644 index 813e4ff0c87..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/tabinit.c +++ /dev/null @@ -1,146 +0,0 @@ -/* - * tabinit.c - * - * Copyright (C) 1999-2010 The L.A.M.E. project - * - * Initially written by Michael Hipp, see also AUTHORS and README. - * - * 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. - */ -/* $Id: tabinit.c,v 1.16 2010/03/22 14:30:19 robert Exp $ */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdlib.h> -#include "tabinit.h" -#include "mpg123.h" - -#ifdef WITH_DMALLOC -#include <dmalloc.h> -#endif - -real decwin[512 + 32]; -static real cos64[16], cos32[8], cos16[4], cos8[2], cos4[1]; -real *pnts[] = { cos64, cos32, cos16, cos8, cos4 }; - -/* *INDENT-OFF* */ - -static const double dewin[512] = { - 0.000000000,-0.000015259,-0.000015259,-0.000015259, - -0.000015259,-0.000015259,-0.000015259,-0.000030518, - -0.000030518,-0.000030518,-0.000030518,-0.000045776, - -0.000045776,-0.000061035,-0.000061035,-0.000076294, - -0.000076294,-0.000091553,-0.000106812,-0.000106812, - -0.000122070,-0.000137329,-0.000152588,-0.000167847, - -0.000198364,-0.000213623,-0.000244141,-0.000259399, - -0.000289917,-0.000320435,-0.000366211,-0.000396729, - -0.000442505,-0.000473022,-0.000534058,-0.000579834, - -0.000625610,-0.000686646,-0.000747681,-0.000808716, - -0.000885010,-0.000961304,-0.001037598,-0.001113892, - -0.001205444,-0.001296997,-0.001388550,-0.001480103, - -0.001586914,-0.001693726,-0.001785278,-0.001907349, - -0.002014160,-0.002120972,-0.002243042,-0.002349854, - -0.002456665,-0.002578735,-0.002685547,-0.002792358, - -0.002899170,-0.002990723,-0.003082275,-0.003173828, - -0.003250122,-0.003326416,-0.003387451,-0.003433228, - -0.003463745,-0.003479004,-0.003479004,-0.003463745, - -0.003417969,-0.003372192,-0.003280640,-0.003173828, - -0.003051758,-0.002883911,-0.002700806,-0.002487183, - -0.002227783,-0.001937866,-0.001617432,-0.001266479, - -0.000869751,-0.000442505, 0.000030518, 0.000549316, - 0.001098633, 0.001693726, 0.002334595, 0.003005981, - 0.003723145, 0.004486084, 0.005294800, 0.006118774, - 0.007003784, 0.007919312, 0.008865356, 0.009841919, - 0.010848999, 0.011886597, 0.012939453, 0.014022827, - 0.015121460, 0.016235352, 0.017349243, 0.018463135, - 0.019577026, 0.020690918, 0.021789551, 0.022857666, - 0.023910522, 0.024932861, 0.025909424, 0.026840210, - 0.027725220, 0.028533936, 0.029281616, 0.029937744, - 0.030532837, 0.031005859, 0.031387329, 0.031661987, - 0.031814575, 0.031845093, 0.031738281, 0.031478882, - 0.031082153, 0.030517578, 0.029785156, 0.028884888, - 0.027801514, 0.026535034, 0.025085449, 0.023422241, - 0.021575928, 0.019531250, 0.017257690, 0.014801025, - 0.012115479, 0.009231567, 0.006134033, 0.002822876, - -0.000686646,-0.004394531,-0.008316040,-0.012420654, - -0.016708374,-0.021179199,-0.025817871,-0.030609131, - -0.035552979,-0.040634155,-0.045837402,-0.051132202, - -0.056533813,-0.061996460,-0.067520142,-0.073059082, - -0.078628540,-0.084182739,-0.089706421,-0.095169067, - -0.100540161,-0.105819702,-0.110946655,-0.115921021, - -0.120697021,-0.125259399,-0.129562378,-0.133590698, - -0.137298584,-0.140670776,-0.143676758,-0.146255493, - -0.148422241,-0.150115967,-0.151306152,-0.151962280, - -0.152069092,-0.151596069,-0.150497437,-0.148773193, - -0.146362305,-0.143264771,-0.139450073,-0.134887695, - -0.129577637,-0.123474121,-0.116577148,-0.108856201, - -0.100311279,-0.090927124,-0.080688477,-0.069595337, - -0.057617187,-0.044784546,-0.031082153,-0.016510010, - -0.001068115, 0.015228271, 0.032379150, 0.050354004, - 0.069168091, 0.088775635, 0.109161377, 0.130310059, - 0.152206421, 0.174789429, 0.198059082, 0.221984863, - 0.246505737, 0.271591187, 0.297210693, 0.323318481, - 0.349868774, 0.376800537, 0.404083252, 0.431655884, - 0.459472656, 0.487472534, 0.515609741, 0.543823242, - 0.572036743, 0.600219727, 0.628295898, 0.656219482, - 0.683914185, 0.711318970, 0.738372803, 0.765029907, - 0.791213989, 0.816864014, 0.841949463, 0.866363525, - 0.890090942, 0.913055420, 0.935195923, 0.956481934, - 0.976852417, 0.996246338, 1.014617920, 1.031936646, - 1.048156738, 1.063217163, 1.077117920, 1.089782715, - 1.101211548, 1.111373901, 1.120223999, 1.127746582, - 1.133926392, 1.138763428, 1.142211914, 1.144287109, - 1.144989014 -}; -/* *INDENT-ON* */ - -void -make_decode_tables(long scaleval) -{ - int i, j, k, kr, divv; - real *table, *costab; - - - for (i = 0; i < 5; i++) { - kr = 0x10 >> i; - divv = 0x40 >> i; - costab = pnts[i]; - for (k = 0; k < kr; k++) - costab[k] = (real) (1.0 / (2.0 * cos(M_PI * ((double) k * 2.0 + 1.0) / (double) divv))); - } - - table = decwin; - scaleval = -scaleval; - for (i = 0, j = 0; i < 256; i++, j++, table += 32) { - if (table < decwin + 512 + 16) - table[16] = table[0] = (real) (dewin[j] * scaleval); - if (i % 32 == 31) - table -= 1023; - if (i % 64 == 63) - scaleval = -scaleval; - } - - for ( /* i=256 */ ; i < 512; i++, j--, table += 32) { - if (table < decwin + 512 + 16) - table[16] = table[0] = (real) (dewin[j] * scaleval); - if (i % 32 == 31) - table -= 1023; - if (i % 64 == 63) - scaleval = -scaleval; - } -} diff --git a/platform/win32/msvc/external/lame/mpglib/tabinit.h b/platform/win32/msvc/external/lame/mpglib/tabinit.h deleted file mode 100644 index 76f4c42a6ed..00000000000 --- a/platform/win32/msvc/external/lame/mpglib/tabinit.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (C) 1999-2010 The L.A.M.E. project - * - * Initially written by Michael Hipp, see also AUTHORS and README. - * - * 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 MPGLIB_TABINIT_H_INCLUDED -#define MPGLIB_TABINIT_H_INCLUDED - -#include "mpg123.h" - -extern real decwin[512 + 32]; -extern real *pnts[5]; - -void make_decode_tables(long scale); - -#endif diff --git a/platform/win32/msvc/external/lame/testcase.mp3 b/platform/win32/msvc/external/lame/testcase.mp3 deleted file mode 100644 index 8c062142c76..00000000000 Binary files a/platform/win32/msvc/external/lame/testcase.mp3 and /dev/null differ diff --git a/platform/win32/msvc/external/lame/testcase.wav b/platform/win32/msvc/external/lame/testcase.wav deleted file mode 100644 index 7c835f71eb1..00000000000 Binary files a/platform/win32/msvc/external/lame/testcase.wav and /dev/null differ diff --git a/platform/win32/msvc/external/lame/vc_solution/Makefile.am b/platform/win32/msvc/external/lame/vc_solution/Makefile.am deleted file mode 100644 index d11cb50fb57..00000000000 --- a/platform/win32/msvc/external/lame/vc_solution/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -## $Id: Makefile.am,v 1.2 2010/03/14 17:23:35 robert Exp $ - -include $(top_srcdir)/Makefile.am.global - -EXTRA_DIST = *.sln \ - *.vcproj \ - *.vsprops \ - *.rules diff --git a/platform/win32/msvc/external/lame/vc_solution/Makefile.in b/platform/win32/msvc/external/lame/vc_solution/Makefile.in deleted file mode 100644 index 28e6d8dd76d..00000000000 --- a/platform/win32/msvc/external/lame/vc_solution/Makefile.in +++ /dev/null @@ -1,390 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# global section for every Makefile.am -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/Makefile.am.global -subdir = vc_solution -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CONFIG_DEFS = @CONFIG_DEFS@ -CONFIG_MATH_LIB = @CONFIG_MATH_LIB@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CPUCCODE = @CPUCCODE@ -CPUTYPE = @CPUTYPE@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ -FRONTEND_LDADD = @FRONTEND_LDADD@ -FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ -GREP = @GREP@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_CONFIG = @GTK_CONFIG@ -GTK_LIBS = @GTK_LIBS@ -INCLUDES = @INCLUDES@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDADD = @LDADD@ -LDFLAGS = @LDFLAGS@ -LIBICONV = @LIBICONV@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ -LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBICONV = @LTLIBICONV@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEDEP = @MAKEDEP@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NASM = @NASM@ -NASM_FORMAT = @NASM_FORMAT@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -RM_F = @RM_F@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ -SNDFILE_LIBS = @SNDFILE_LIBS@ -STRIP = @STRIP@ -U = @U@ -VERSION = @VERSION@ -WITH_FRONTEND = @WITH_FRONTEND@ -WITH_MP3RTP = @WITH_MP3RTP@ -WITH_MP3X = @WITH_MP3X@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = 1.11 foreign $(top_srcdir)/ansi2knr -EXTRA_DIST = *.sln \ - *.vcproj \ - *.vsprops \ - *.rules - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign vc_solution/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign vc_solution/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am - - -# end global section - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/platform/win32/msvc/external/lame/vc_solution/arch_nasm.vsprops b/platform/win32/msvc/external/lame/vc_solution/arch_nasm.vsprops deleted file mode 100644 index 542977435b0..00000000000 --- a/platform/win32/msvc/external/lame/vc_solution/arch_nasm.vsprops +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioPropertySheet - ProjectType="Visual C++" - Version="8.00" - Name="arch_nasm" - > - <Tool - Name="VCCLCompilerTool" - PreprocessorDefinitions="TAKEHIRO_IEEE754_HACK;HAVE_NASM;MMX_choose_table" - /> -</VisualStudioPropertySheet> diff --git a/platform/win32/msvc/external/lame/vc_solution/arch_sse2.vsprops b/platform/win32/msvc/external/lame/vc_solution/arch_sse2.vsprops deleted file mode 100644 index af6183a6816..00000000000 --- a/platform/win32/msvc/external/lame/vc_solution/arch_sse2.vsprops +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioPropertySheet - ProjectType="Visual C++" - Version="8.00" - Name="arch_sse2" - > - <Tool - Name="VCCLCompilerTool" - PreprocessorDefinitions="HAVE_XMMINTRIN_H;MIN_ARCH_SSE" - EnableEnhancedInstructionSet="2" - FloatingPointModel="2" - /> -</VisualStudioPropertySheet> diff --git a/platform/win32/msvc/external/lame/vc_solution/arch_x87.vsprops b/platform/win32/msvc/external/lame/vc_solution/arch_x87.vsprops deleted file mode 100644 index 39ebb09a605..00000000000 --- a/platform/win32/msvc/external/lame/vc_solution/arch_x87.vsprops +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioPropertySheet - ProjectType="Visual C++" - Version="8.00" - Name="arch_x87" - > - <Tool - Name="VCCLCompilerTool" - PreprocessorDefinitions="TAKEHIRO_IEEE754_HACK" - /> -</VisualStudioPropertySheet> diff --git a/platform/win32/msvc/external/lame/vc_solution/vc9_lame_acm.vcproj b/platform/win32/msvc/external/lame/vc_solution/vc9_lame_acm.vcproj deleted file mode 100644 index 9c4608bb0ae..00000000000 --- a/platform/win32/msvc/external/lame/vc_solution/vc9_lame_acm.vcproj +++ /dev/null @@ -1,433 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9,00" - Name="ACM" - ProjectGUID="{FC3D65E7-B7CB-406E-B6C9-0B26E30FE7F4}" - TargetFrameworkVersion="0" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Release|Win32" - ConfigurationType="2" - InheritedPropertySheets=".\vc9_lame_config.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - PreprocessorDefinitions="NDEBUG" - MkTypLibCompatible="true" - SuppressStartupBanner="true" - TargetEnvironment="1" - TypeLibraryName=".\..\output\Release/lameACM.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - InlineFunctionExpansion="2" - AdditionalIncludeDirectories="../include,../mpglib,../ACM,../ACM/ddk" - PreprocessorDefinitions="NDEBUG;_BLADEDLL;_WINDOWS;WIN32;LAME_ACM" - StringPooling="true" - RuntimeLibrary="2" - StructMemberAlignment="2" - TreatWChar_tAsBuiltInType="false" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - IgnoreImportLibrary="true" - AdditionalDependencies="libmp3lame.lib url.lib winmm.lib" - OutputFile="..\output\Release\lameACM.acm" - LinkIncremental="1" - AdditionalLibraryDirectories="" - IgnoreAllDefaultLibraries="false" - ModuleDefinitionFile="..\ACM\lameACM.def" - SubSystem="2" - ImportLibrary="$(IntDir)/$(TargetName).lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - Description="ACM config files" - CommandLine="copy ..\ACM\lameacm.inf $(TargetDir)*.* copy ..\ACM\lame_acm.xml $(TargetDir)*.* " - /> - </Configuration> - <Configuration - Name="Debug|Win32" - ConfigurationType="2" - InheritedPropertySheets=".\vc9_lame_config.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - PreprocessorDefinitions="_DEBUG" - MkTypLibCompatible="true" - SuppressStartupBanner="true" - TargetEnvironment="1" - TypeLibraryName="..\output\Debug\lameACM.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="../include,../mpglib,../ACM,../ACM/ddk" - PreprocessorDefinitions="_DEBUG;_BLADEDLL;_WINDOWS;WIN32;LAME_ACM" - StringPooling="true" - RuntimeLibrary="3" - StructMemberAlignment="2" - TreatWChar_tAsBuiltInType="false" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - IgnoreImportLibrary="true" - AdditionalDependencies="libmp3lame.lib url.lib winmm.lib" - OutputFile="..\output\Debug\lameACM.acm" - AdditionalLibraryDirectories="" - IgnoreAllDefaultLibraries="false" - ModuleDefinitionFile="..\ACM\lameACM.def" - GenerateDebugInformation="true" - SubSystem="2" - ImportLibrary="$(IntDir)/$(TargetName).lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - Description="ACM config files" - CommandLine="copy ..\ACM\lameacm.inf $(TargetDir)*.* copy ..\ACM\lame_acm.xml $(TargetDir)*.* " - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source" - Filter="c;cpp" - > - <File - RelativePath="..\ACM\ACM.cpp" - > - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\ACM\ACMStream.cpp" - > - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\ACM\AEncodeProperties.cpp" - > - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\ACM\DecodeStream.cpp" - > - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\ACM\lameACM.def" - > - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\ACM\main.cpp" - > - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - </File> - </Filter> - <Filter - Name="Include" - Filter="h" - > - <File - RelativePath="..\ACM\ACM.h" - > - </File> - <File - RelativePath="..\ACM\ACMStream.h" - > - </File> - <File - RelativePath="..\ACM\adebug.h" - > - </File> - <File - RelativePath="..\ACM\AEncodeProperties.h" - > - </File> - <File - RelativePath="..\ACM\DecodeStream.h" - > - </File> - </Filter> - <Filter - Name="Resource" - Filter="rc" - > - <File - RelativePath="..\ACM\acm.rc" - > - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\ACM\lame.ico" - > - </File> - </Filter> - <Filter - Name="Install" - Filter="inf;acm" - > - <File - RelativePath="..\ACM\LameACM.inf" - > - </File> - </Filter> - <File - RelativePath="..\ACM\readme.txt" - > - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\ACM\TODO" - > - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - </File> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/platform/win32/msvc/external/lame/vc_solution/vc9_lame_acm_adbg.vcproj b/platform/win32/msvc/external/lame/vc_solution/vc9_lame_acm_adbg.vcproj deleted file mode 100644 index 0f6b75c7c0e..00000000000 --- a/platform/win32/msvc/external/lame/vc_solution/vc9_lame_acm_adbg.vcproj +++ /dev/null @@ -1,178 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9,00" - Name="ACM ADbg" - ProjectGUID="{0D7CAB1B-AE57-4BA1-BDBF-D7391AAA81AA}" - TargetFrameworkVersion="0" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - ConfigurationType="4" - InheritedPropertySheets=".\vc9_lame_config.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" - StringPooling="true" - RuntimeLibrary="3" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="$(IntDir)\$(ProjectName).lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - ConfigurationType="4" - InheritedPropertySheets=".\vc9_lame_config.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="1" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS" - StringPooling="true" - RuntimeLibrary="2" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="$(IntDir)\$(ProjectName).lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Sources" - Filter="cpp" - > - <File - RelativePath="..\ACM\ADbg\ADbg.cpp" - > - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - PreprocessorDefinitions="" - /> - </FileConfiguration> - </File> - </Filter> - <Filter - Name="Headers" - Filter="h" - > - <File - RelativePath="..\ACM\ADbg\ADbg.h" - > - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/platform/win32/msvc/external/lame/vc_solution/vc9_lame_acm_tinyxml.vcproj b/platform/win32/msvc/external/lame/vc_solution/vc9_lame_acm_tinyxml.vcproj deleted file mode 100644 index 3072ddd46e3..00000000000 --- a/platform/win32/msvc/external/lame/vc_solution/vc9_lame_acm_tinyxml.vcproj +++ /dev/null @@ -1,250 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9,00" - Name="ACM tinyxml" - ProjectGUID="{30219289-3B7F-4E02-BC34-C1DBD08CD848}" - TargetFrameworkVersion="0" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Release|Win32" - ConfigurationType="4" - InheritedPropertySheets=".\vc9_lame_config.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="1" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS" - StringPooling="true" - RuntimeLibrary="2" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="$(IntDir)\$(ProjectName).lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|Win32" - ConfigurationType="4" - InheritedPropertySheets=".\vc9_lame_config.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" - StringPooling="true" - RuntimeLibrary="3" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="$(IntDir)\$(ProjectName).lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <File - RelativePath="..\ACM\tinyxml\changes.txt" - > - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\ACM\tinyxml\readme.txt" - > - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\ACM\tinyxml\tinyxml.cpp" - > - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - PreprocessorDefinitions="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\ACM\tinyxml\tinyxml.h" - > - </File> - <File - RelativePath="..\ACM\tinyxml\tinyxmlerror.cpp" - > - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - PreprocessorDefinitions="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\ACM\tinyxml\tinyxmlparser.cpp" - > - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - PreprocessorDefinitions="" - /> - </FileConfiguration> - </File> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/platform/win32/msvc/external/lame/vc_solution/vc9_lame_config.vsprops b/platform/win32/msvc/external/lame/vc_solution/vc9_lame_config.vsprops deleted file mode 100644 index cbb7dcc98f5..00000000000 --- a/platform/win32/msvc/external/lame/vc_solution/vc9_lame_config.vsprops +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioPropertySheet - ProjectType="Visual C++" - Version="8.00" - Name="vc9_lame_config" - OutputDirectory="$(SolutionDir)..\output\$(ConfigurationName)" - IntermediateDirectory="$(SolutionDir)..\obj\$(ConfigurationName)\$(ProjectName)" - > - <Tool - Name="VCBscMakeTool" - OutputFile="$(IntDir)/$(ProjectName).bsc" - /> - <Tool - Name="VCCLCompilerTool" - PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATED" - StringPooling="true" - EnableFunctionLevelLinking="true" - AssemblerListingLocation="$(IntDir)\" - BrowseInformation="1" - WarningLevel="4" - DisableSpecificWarnings="4995;4996" - /> - <Tool - Name="VCLinkerTool" - LinkIncremental="1" - AdditionalLibraryDirectories="$(OutDir)" - ProgramDatabaseFile="$(OutDir)/$(TargetName).pdb" - OptimizeReferences="2" - /> -</VisualStudioPropertySheet> diff --git a/platform/win32/msvc/external/lame/vc_solution/vc9_lame_dll.vcproj b/platform/win32/msvc/external/lame/vc_solution/vc9_lame_dll.vcproj deleted file mode 100644 index e7ca678132c..00000000000 --- a/platform/win32/msvc/external/lame/vc_solution/vc9_lame_dll.vcproj +++ /dev/null @@ -1,243 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9,00" - Name="lame_enc_dll" - ProjectGUID="{0E4820D3-DBE3-477A-910B-7C020D6066D1}" - RootNamespace="lame_enc_dll" - TargetFrameworkVersion="0" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - ConfigurationType="2" - InheritedPropertySheets=".\vc9_lame_config.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - PreprocessorDefinitions="_DEBUG" - MkTypLibCompatible="true" - SuppressStartupBanner="true" - TargetEnvironment="1" - TypeLibraryName="..\output\Debug/LameDll.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="../include" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;LAMEMP3ENCDLL_EXPORTS" - StringPooling="true" - RuntimeLibrary="3" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="libmp3lame.lib odbc32.lib odbccp32.lib" - OutputFile="..\output\Debug\lame_enc.dll" - AdditionalLibraryDirectories="" - GenerateDebugInformation="true" - ImportLibrary="$(OutDir)/lame_enc.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - ConfigurationType="2" - InheritedPropertySheets=".\vc9_lame_config.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - PreprocessorDefinitions="NDEBUG" - MkTypLibCompatible="true" - SuppressStartupBanner="true" - TargetEnvironment="1" - TypeLibraryName="..\output\Release/LameDll.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - InlineFunctionExpansion="2" - AdditionalIncludeDirectories="../include" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LAMEMP3ENCDLL_EXPORTS" - StringPooling="true" - RuntimeLibrary="2" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="libmp3lame.lib" - OutputFile="..\output\Release\lame_enc.dll" - LinkIncremental="1" - AdditionalLibraryDirectories="" - ImportLibrary="$(OutDir)/lame_enc.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" - > - <File - RelativePath="..\Dll\BladeMP3EncDLL.c" - > - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\Dll\BladeMP3EncDLL.def" - > - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - </File> - </Filter> - <Filter - Name="Header Files" - Filter="h;hpp;hxx;hm;inl" - > - <File - RelativePath="..\Dll\BladeMP3EncDLL.h" - > - </File> - </Filter> - <Filter - Name="Resource Files" - Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" - > - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/platform/win32/msvc/external/lame/vc_solution/vc9_lame_dll_example.vcproj b/platform/win32/msvc/external/lame/vc_solution/vc9_lame_dll_example.vcproj deleted file mode 100644 index 9655c4a3f20..00000000000 --- a/platform/win32/msvc/external/lame/vc_solution/vc9_lame_dll_example.vcproj +++ /dev/null @@ -1,187 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9,00" - Name="lame_enc_dll_example" - ProjectGUID="{D169F06E-6607-4A9F-A075-2335717B9AB5}" - RootNamespace="lame_enc_dll_example" - TargetFrameworkVersion="0" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Release|Win32" - ConfigurationType="1" - InheritedPropertySheets=".\vc9_lame_config.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TypeLibraryName="..\obj\Release\LameMp3EncDll/Example.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - InlineFunctionExpansion="2" - PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" - StringPooling="true" - RuntimeLibrary="2" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalLibraryDirectories="" - SubSystem="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|Win32" - ConfigurationType="1" - InheritedPropertySheets=".\vc9_lame_config.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TypeLibraryName="..\obj\Debug\LameMp3EncDll/Example.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" - StringPooling="true" - RuntimeLibrary="3" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalLibraryDirectories="" - GenerateDebugInformation="true" - SubSystem="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <File - RelativePath="..\Dll\Example.cpp" - > - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - PreprocessorDefinitions="" - /> - </FileConfiguration> - </File> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/platform/win32/msvc/external/lame/vc_solution/vc9_lame_dshow.vcproj b/platform/win32/msvc/external/lame/vc_solution/vc9_lame_dshow.vcproj deleted file mode 100644 index 9480419b4f3..00000000000 --- a/platform/win32/msvc/external/lame/vc_solution/vc9_lame_dshow.vcproj +++ /dev/null @@ -1,487 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9,00" - Name="DShow" - ProjectGUID="{6D348A4E-8B40-4FB0-BB57-C982D51FFA01}" - TargetFrameworkVersion="0" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - ConfigurationType="2" - InheritedPropertySheets=".\vc9_lame_config.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - PreprocessorDefinitions="_DEBUG" - MkTypLibCompatible="true" - SuppressStartupBanner="true" - TargetEnvironment="1" - TypeLibraryName="..\obj\Debug/dshow.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\include,..\DShow" - PreprocessorDefinitions="DEBUG;INC_OLE2;WINVER=0x0400;_X86_=1;STRICT;_WINDOWS;WIN32;STDC_HEADERS" - StringPooling="true" - RuntimeLibrary="3" - DebugInformationFormat="3" - CallingConvention="2" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - IgnoreImportLibrary="true" - AdditionalDependencies="libmp3lame.lib ..\DShow\strmbasD.lib vfw32.lib winmm.lib version.lib Comdlg32.lib comctl32.lib quartz.lib msvcrtd.lib" - OutputFile="..\output\Debug\lame.ax" - AdditionalLibraryDirectories="" - IgnoreAllDefaultLibraries="true" - ModuleDefinitionFile="..\DShow\Mpegac.def" - GenerateDebugInformation="true" - SubSystem="2" - EntryPointSymbol="DllEntryPoint@12" - BaseAddress="0x1c400000" - RandomizedBaseAddress="1" - ImportLibrary="$(IntDir)/$(TargetName).lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - ConfigurationType="2" - InheritedPropertySheets=".\vc9_lame_config.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - PreprocessorDefinitions="NDEBUG" - MkTypLibCompatible="true" - TargetEnvironment="1" - TypeLibraryName="..\obj\Release/dshow.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="1" - AdditionalIncludeDirectories="../include,../DShow" - PreprocessorDefinitions="NDEBUG;INC_OLE2;STRICT;WINVER=0x0400;_X86_=1;_WINDOWS;WIN32;STDC_HEADERS" - StringPooling="true" - RuntimeLibrary="2" - CallingConvention="2" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - IgnoreImportLibrary="true" - AdditionalDependencies="libmp3lame.lib ..\DShow\strmbase.lib vfw32.lib winmm.lib version.lib Comdlg32.lib comctl32.lib quartz.lib msvcrt.lib" - OutputFile="..\output\Release\lame.ax" - Version="0.3" - LinkIncremental="1" - AdditionalLibraryDirectories="" - IgnoreAllDefaultLibraries="true" - ModuleDefinitionFile="..\DShow\Mpegac.def" - SubSystem="2" - EntryPointSymbol="DllEntryPoint@12" - BaseAddress="0x1c400000" - RandomizedBaseAddress="1" - ImportLibrary="$(IntDir)/$(TargetName).lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90" - > - <File - RelativePath="..\DShow\aboutprp.cpp" - > - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\DShow\Encoder.cpp" - > - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\DShow\Mpegac.cpp" - > - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\DShow\Mpegac.def" - > - </File> - <File - RelativePath="..\DShow\Property.rc" - > - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\DShow\PropPage.cpp" - > - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\DShow\PropPage_adv.cpp" - > - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\DShow\REG.CPP" - > - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - </File> - </Filter> - <Filter - Name="Header Files" - Filter="h;hpp;hxx;hm;inl;fi;fd" - > - <File - RelativePath="..\DShow\aboutprp.h" - > - </File> - <File - RelativePath="..\DShow\Encoder.h" - > - </File> - <File - RelativePath="..\DShow\iaudioprops.h" - > - </File> - <File - RelativePath="..\DShow\Mpegac.h" - > - </File> - <File - RelativePath="..\DShow\PropPage.h" - > - </File> - <File - RelativePath="..\DShow\PropPage_adv.h" - > - </File> - <File - RelativePath="..\DShow\reg.h" - > - </File> - <File - RelativePath="..\DShow\resource.h" - > - </File> - <File - RelativePath="..\DShow\uids.h" - > - </File> - </Filter> - <Filter - Name="Resource Files" - Filter="ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" - > - <File - RelativePath="..\DShow\elogo.ico" - > - </File> - </Filter> - <File - RelativePath="..\include\lame.h" - > - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\output\libmp3lame-dynamic.lib" - > - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\DShow\README" - > - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\DShow\STRMBASE.lib" - > - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - </File> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/platform/win32/msvc/external/lame/vc_solution/vc9_lame_lame.vcproj b/platform/win32/msvc/external/lame/vc_solution/vc9_lame_lame.vcproj deleted file mode 100644 index 87a8faa533e..00000000000 --- a/platform/win32/msvc/external/lame/vc_solution/vc9_lame_lame.vcproj +++ /dev/null @@ -1,383 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9,00" - Name="app lame" - ProjectGUID="{EEF5B49E-DBD1-4E1B-8B86-C5D64FCBAD38}" - RootNamespace="lame" - TargetFrameworkVersion="0" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="ReleaseNASM|Win32" - ConfigurationType="1" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_nasm.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TypeLibraryName="..\output\ReleaseNASM/lame.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="3" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - AdditionalIncludeDirectories="..,../mpglib,../libmp3lame,../include,../" - PreprocessorDefinitions="NDEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H;HAVE_NASM;MMX_choose_table" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG;_APP=$(TargetFileName)" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - OutputFile="$(OutDir)\lame.exe" - SubSystem="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|Win32" - ConfigurationType="1" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_x87.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TypeLibraryName="..\output\Debug/lame.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="../,../mpglib,../libmp3lame,../include" - PreprocessorDefinitions="_DEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H" - RuntimeLibrary="1" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG;_APP=$(TargetFileName)" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - OutputFile="$(OutDir)\lame.exe" - GenerateDebugInformation="true" - SubSystem="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - ConfigurationType="1" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_x87.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TypeLibraryName="..\output\Release/lame.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="3" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - AdditionalIncludeDirectories="..,../mpglib,../libmp3lame,../include,../" - PreprocessorDefinitions="NDEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG;_APP=$(TargetFileName)" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - OutputFile="$(OutDir)\lame.exe" - SubSystem="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="ReleaseSSE2|Win32" - ConfigurationType="1" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_sse2.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TypeLibraryName="..\output\Release/lame.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="3" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - AdditionalIncludeDirectories="..,../mpglib,../libmp3lame,../include,../" - PreprocessorDefinitions="NDEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG;_APP=$(TargetFileName)" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - OutputFile="$(OutDir)\lame.exe" - SubSystem="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" - > - <File - RelativePath="..\frontend\brhist.c" - > - </File> - <File - RelativePath="..\frontend\console.c" - > - </File> - <File - RelativePath="..\frontend\get_audio.c" - > - </File> - <File - RelativePath="..\frontend\lame_main.c" - > - </File> - <File - RelativePath="..\frontend\lametime.c" - > - </File> - <File - RelativePath="..\frontend\main.c" - > - </File> - <File - RelativePath="..\frontend\parse.c" - > - </File> - <File - RelativePath="..\frontend\timestatus.c" - > - </File> - </Filter> - <Filter - Name="Header Files" - Filter="h;hpp;hxx;hm;inl" - > - <File - RelativePath="..\frontend\brhist.h" - > - </File> - <File - RelativePath="..\frontend\console.h" - > - </File> - <File - RelativePath="..\frontend\get_audio.h" - > - </File> - <File - RelativePath="..\frontend\lametime.h" - > - </File> - <File - RelativePath="..\frontend\main.h" - > - </File> - <File - RelativePath="..\frontend\parse.h" - > - </File> - <File - RelativePath="..\frontend\timestatus.h" - > - </File> - </Filter> - <File - RelativePath="..\libmp3lame\lame.rc" - > - </File> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/platform/win32/msvc/external/lame/vc_solution/vc9_lame_mp3rtp.vcproj b/platform/win32/msvc/external/lame/vc_solution/vc9_lame_mp3rtp.vcproj deleted file mode 100644 index cb82813800f..00000000000 --- a/platform/win32/msvc/external/lame/vc_solution/vc9_lame_mp3rtp.vcproj +++ /dev/null @@ -1,395 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9,00" - Name="app mp3rtp" - ProjectGUID="{C04BA4EA-F719-456D-A332-6C3AF92D7BEA}" - RootNamespace="mp3rtp" - TargetFrameworkVersion="0" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="ReleaseNASM|Win32" - ConfigurationType="1" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_nasm.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TypeLibraryName="..\output\ReleaseNASM/mp3rtp.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="3" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - AdditionalIncludeDirectories="..,../mpglib,../libmp3lame,../include,../" - PreprocessorDefinitions="NDEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H;HAVE_NASM;MMX_choose_table" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG;_APP=$(TargetFileName)" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="wsock32.lib" - OutputFile="$(OutDir)\mp3rtp.exe" - SubSystem="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|Win32" - ConfigurationType="1" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_x87.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TypeLibraryName="..\output\Debug/mp3rtp.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="../,../mpglib,../libmp3lame,../include" - PreprocessorDefinitions="_DEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H" - RuntimeLibrary="1" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG;_APP=$(TargetFileName)" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="wsock32.lib" - OutputFile="$(OutDir)\mp3rtp.exe" - GenerateDebugInformation="true" - SubSystem="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - ConfigurationType="1" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_x87.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TypeLibraryName="..\output\Release/mp3rtp.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="3" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - AdditionalIncludeDirectories="..,../mpglib,../libmp3lame,../include,../" - PreprocessorDefinitions="NDEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG;_APP=$(TargetFileName)" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="wsock32.lib" - OutputFile="$(OutDir)\mp3rtp.exe" - SubSystem="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="ReleaseSSE2|Win32" - ConfigurationType="1" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_sse2.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TypeLibraryName="..\output\Release/mp3rtp.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="3" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - AdditionalIncludeDirectories="..,../mpglib,../libmp3lame,../include,../" - PreprocessorDefinitions="NDEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG;_APP=$(TargetFileName)" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="wsock32.lib" - OutputFile="$(OutDir)\mp3rtp.exe" - SubSystem="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" - > - <File - RelativePath="..\frontend\brhist.c" - > - </File> - <File - RelativePath="..\frontend\console.c" - > - </File> - <File - RelativePath="..\frontend\get_audio.c" - > - </File> - <File - RelativePath="..\frontend\lametime.c" - > - </File> - <File - RelativePath="..\frontend\main.c" - > - </File> - <File - RelativePath="..\frontend\mp3rtp.c" - > - </File> - <File - RelativePath="..\frontend\parse.c" - > - </File> - <File - RelativePath="..\frontend\rtp.c" - > - </File> - <File - RelativePath="..\frontend\timestatus.c" - > - </File> - </Filter> - <Filter - Name="Header Files" - Filter="h;hpp;hxx;hm;inl" - > - <File - RelativePath="..\frontend\brhist.h" - > - </File> - <File - RelativePath="..\frontend\console.h" - > - </File> - <File - RelativePath="..\frontend\get_audio.h" - > - </File> - <File - RelativePath="..\frontend\lametime.h" - > - </File> - <File - RelativePath="..\frontend\main.h" - > - </File> - <File - RelativePath="..\frontend\parse.h" - > - </File> - <File - RelativePath="..\frontend\rtp.h" - > - </File> - <File - RelativePath="..\frontend\timestatus.h" - > - </File> - </Filter> - <File - RelativePath="..\libmp3lame\lame.rc" - > - </File> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/platform/win32/msvc/external/lame/vc_solution/vc9_lame_mp3x.vcproj b/platform/win32/msvc/external/lame/vc_solution/vc9_lame_mp3x.vcproj deleted file mode 100644 index 86844efc9a3..00000000000 --- a/platform/win32/msvc/external/lame/vc_solution/vc9_lame_mp3x.vcproj +++ /dev/null @@ -1,421 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9,00" - Name="app mp3x" - ProjectGUID="{E745EB1A-070A-45ED-B8BD-D9F794E23CFA}" - RootNamespace="mp3x" - TargetFrameworkVersion="0" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="ReleaseNASM|Win32" - ConfigurationType="1" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_nasm.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TypeLibraryName="..\output\ReleaseNASM/mp3x.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="3" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - AdditionalIncludeDirectories="./WinGTK/gtk-plus,./WinGTK/glib-1.2,./WinGtk/src/gtk+,./WinGtk/src/glib,./WinGtk/src/gtk+/gdk,../include,../libmp3lame,../mp3x,../frontend,.." - PreprocessorDefinitions="NDEBUG;LAMEPARSE;WIN32;_CONSOLE;HAVE_MPGLIB;LAMESNDFILE;BRHIST;HAVE_CONFIG_H" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG;_APP=$(TargetFileName)" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="odbc32.lib odbccp32.lib gdk-1.3.lib gtk-1.3.lib glib-1.3.lib" - OutputFile="$(OutDir)\mp3x.exe" - AdditionalLibraryDirectories="./WinGtk/src/gtk+/gtk,./WinGtk/src/gtk+/gdk,./WinGtk/src/glib" - GenerateMapFile="true" - MapFileName="..\obj\ReleaseNASM\frontend/mp3x.map" - SubSystem="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|Win32" - ConfigurationType="1" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_x87.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TypeLibraryName="..\output\Debug/mp3x.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="./WinGtk/src/gtk+,./WinGtk/src/glib,./WinGtk/src/gtk+/gdk,../include,../libmp3lame,../mp3x,../frontend,.." - PreprocessorDefinitions="LAMESNDFILE;BRHIST;_DEBUG;WIN32;_CONSOLE;HAVE_MPGLIB;HAVE_CONFIG_H" - RuntimeLibrary="1" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="odbc32.lib odbccp32.lib gdk-1.3.lib gtk-1.3.lib glib-1.3.lib" - OutputFile="$(OutDir)\mp3x.exe" - AdditionalLibraryDirectories="./WinGtk/src/gtk+/gtk,./WinGtk/src/gtk+/gdk,./WinGtk/src/glib" - GenerateDebugInformation="true" - SubSystem="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - ConfigurationType="1" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_x87.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TypeLibraryName="..\output\Release/mp3x.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="3" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - AdditionalIncludeDirectories="./WinGTK/gtk-plus,./WinGTK/glib-1.2,./WinGtk/src/gtk+,./WinGtk/src/glib,./WinGtk/src/gtk+/gdk,../include,../libmp3lame,../mp3x,../frontend,.." - PreprocessorDefinitions="NDEBUG;LAMEPARSE;WIN32;_CONSOLE;HAVE_MPGLIB;LAMESNDFILE;BRHIST;HAVE_CONFIG_H" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="odbc32.lib odbccp32.lib gdk-1.3.lib gtk-1.3.lib glib-1.3.lib" - OutputFile="$(OutDir)\mp3x.exe" - AdditionalLibraryDirectories="./WinGtk/src/gtk+/gtk,./WinGtk/src/gtk+/gdk,./WinGtk/src/glib" - GenerateMapFile="true" - MapFileName="..\obj\Release\frontend/mp3x.map" - SubSystem="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="ReleaseSSE2|Win32" - ConfigurationType="1" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_sse2.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TypeLibraryName="..\output\ReleaseSSE2/mp3x.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="3" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - AdditionalIncludeDirectories="./WinGTK/gtk-plus,./WinGTK/glib-1.2,./WinGtk/src/gtk+,./WinGtk/src/glib,./WinGtk/src/gtk+/gdk,../include,../libmp3lame,../mp3x,../frontend,.." - PreprocessorDefinitions="NDEBUG;LAMEPARSE;WIN32;_CONSOLE;HAVE_MPGLIB;LAMESNDFILE;BRHIST;HAVE_CONFIG_H" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="odbc32.lib odbccp32.lib gdk-1.3.lib gtk-1.3.lib glib-1.3.lib" - OutputFile="$(OutDir)\mp3x.exe" - AdditionalLibraryDirectories="./WinGtk/src/gtk+/gtk,./WinGtk/src/gtk+/gdk,./WinGtk/src/glib" - GenerateMapFile="true" - MapFileName="..\obj\ReleaseSSE2\frontend/mp3x.map" - SubSystem="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source" - Filter="c" - > - <File - RelativePath="..\frontend\brhist.c" - > - </File> - <File - RelativePath="..\frontend\console.c" - > - </File> - <File - RelativePath="..\frontend\get_audio.c" - > - </File> - <File - RelativePath="..\frontend\gpkplotting.c" - > - </File> - <File - RelativePath="..\frontend\gtkanal.c" - > - </File> - <File - RelativePath="..\frontend\lametime.c" - > - </File> - <File - RelativePath="..\frontend\main.c" - > - </File> - <File - RelativePath="..\frontend\mp3x.c" - > - </File> - <File - RelativePath="..\frontend\parse.c" - > - </File> - <File - RelativePath="..\frontend\timestatus.c" - > - </File> - </Filter> - <Filter - Name="Include" - Filter="h" - > - <File - RelativePath="..\frontend\brhist.h" - > - </File> - <File - RelativePath="..\frontend\..\configMS.h" - > - </File> - <File - RelativePath="..\frontend\console.h" - > - </File> - <File - RelativePath="..\frontend\get_audio.h" - > - </File> - <File - RelativePath="..\frontend\gpkplotting.h" - > - </File> - <File - RelativePath="..\frontend\lametime.h" - > - </File> - <File - RelativePath="..\frontend\main.h" - > - </File> - <File - RelativePath="..\frontend\parse.h" - > - </File> - <File - RelativePath="..\frontend\timestatus.h" - > - </File> - </Filter> - <File - RelativePath="..\libmp3lame\lame.rc" - > - </File> - <File - RelativePath="..\frontend\..\README.WINGTK" - > - </File> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/platform/win32/msvc/external/lame/vc_solution/vc9_lame_test.vcproj b/platform/win32/msvc/external/lame/vc_solution/vc9_lame_test.vcproj deleted file mode 100644 index df2e6c00573..00000000000 --- a/platform/win32/msvc/external/lame/vc_solution/vc9_lame_test.vcproj +++ /dev/null @@ -1,185 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9,00" - Name="lame_test" - ProjectGUID="{2FE9808B-2B03-48D9-94FC-6C907D39E2AC}" - RootNamespace="lame_test" - TargetFrameworkVersion="0" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Release|Win32" - ConfigurationType="1" - InheritedPropertySheets=".\vc9_lame_config.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - InlineFunctionExpansion="2" - AdditionalIncludeDirectories="..\include" - PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" - StringPooling="true" - RuntimeLibrary="2" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalLibraryDirectories="" - SubSystem="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|Win32" - ConfigurationType="1" - InheritedPropertySheets=".\vc9_lame_config.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\include" - PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" - StringPooling="true" - RuntimeLibrary="3" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalLibraryDirectories="" - GenerateDebugInformation="true" - SubSystem="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <File - RelativePath="..\test\lame_test.cpp" - > - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - PreprocessorDefinitions="" - /> - </FileConfiguration> - </File> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/platform/win32/msvc/external/lame/vc_solution/vc9_libmp3lame.vcproj b/platform/win32/msvc/external/lame/vc_solution/vc9_libmp3lame.vcproj deleted file mode 100644 index 79fd114a1b6..00000000000 --- a/platform/win32/msvc/external/lame/vc_solution/vc9_libmp3lame.vcproj +++ /dev/null @@ -1,1451 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9,00" - Name="libmp3lame-static" - ProjectGUID="{20536101-3B0E-43EF-94F9-080D595DAC57}" - RootNamespace="libmp3lame" - TargetFrameworkVersion="0" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - <ToolFile - RelativePath=".\vc9_nasm.rules" - /> - </ToolFiles> - <Configurations> - <Configuration - Name="ReleaseNASM|Win32" - ConfigurationType="4" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_nasm.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="NASM" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="3" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - AdditionalIncludeDirectories="../mpglib,../include,.." - PreprocessorDefinitions="NDEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H;HAVE_NASM;MMX_choose_table;_CRT_SECURE_NO_DEPRECATE" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="$(OutDir)/libmp3lame-static.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - ConfigurationType="4" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_x87.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="NASM" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="3" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - AdditionalIncludeDirectories="../mpglib,../include,.." - PreprocessorDefinitions="NDEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="$(OutDir)/libmp3lame-static.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|Win32" - ConfigurationType="4" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_x87.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="NASM" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="../mpglib,../include,.." - PreprocessorDefinitions="_DEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H" - RuntimeLibrary="1" - ProgramDataBaseFileName="$(OutDir)\$(TargetName).pdb" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="$(OutDir)/libmp3lame-static.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="ReleaseSSE2|Win32" - ConfigurationType="4" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_sse2.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="NASM" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="3" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - AdditionalIncludeDirectories="../mpglib,../include,.." - PreprocessorDefinitions="NDEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="$(OutDir)/libmp3lame-static.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source" - Filter="c" - > - <File - RelativePath="..\libmp3lame\bitstream.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\encoder.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\fft.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\gain_analysis.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\id3tag.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\lame.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\mpglib_interface.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\newmdct.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\presets.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\psymodel.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\quantize.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\quantize_pvt.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\reservoir.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\set_get.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\tables.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - WarningLevel="1" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - WarningLevel="1" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - WarningLevel="1" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - WarningLevel="1" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\takehiro.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\util.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\vbrquantize.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\VbrTag.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\version.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\.\vector\xmm_quantize_sub.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="../libmp3lame" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="../libmp3lame" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="../libmp3lame" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="../libmp3lame" - /> - </FileConfiguration> - </File> - </Filter> - <Filter - Name="Include" - Filter="h" - > - <File - RelativePath="..\libmp3lame\bitstream.h" - > - </File> - <File - RelativePath="..\libmp3lame\..\configMS.h" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCustomBuildTool" - Description="Performing Custom Build Step on $(InputName)" - CommandLine="copy ..\configMS.h ..\config.h " - Outputs="..\config.h" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCustomBuildTool" - Description="Performing Custom Build Step on $(InputName)" - CommandLine="copy ..\configMS.h ..\config.h " - Outputs="..\config.h" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCustomBuildTool" - Description="Performing Custom Build Step on $(InputName)" - CommandLine="copy ..\configMS.h ..\config.h " - Outputs="..\config.h" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCustomBuildTool" - Description="Performing Custom Build Step on $(InputName)" - CommandLine="copy ..\configMS.h ..\config.h " - Outputs="..\config.h" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\encoder.h" - > - </File> - <File - RelativePath="..\libmp3lame\fft.h" - > - </File> - <File - RelativePath="..\libmp3lame\gain_analysis.h" - > - </File> - <File - RelativePath="..\libmp3lame\id3tag.h" - > - </File> - <File - RelativePath="..\libmp3lame\l3side.h" - > - </File> - <File - RelativePath="..\libmp3lame\lame-analysis.h" - > - </File> - <File - RelativePath="..\libmp3lame\lame_global_flags.h" - > - </File> - <File - RelativePath="..\libmp3lame\.\vector\lame_intrin.h" - > - </File> - <File - RelativePath="..\libmp3lame\lameerror.h" - > - </File> - <File - RelativePath="..\libmp3lame\machine.h" - > - </File> - <File - RelativePath="..\libmp3lame\newmdct.h" - > - </File> - <File - RelativePath="..\libmp3lame\psymodel.h" - > - </File> - <File - RelativePath="..\libmp3lame\quantize.h" - > - </File> - <File - RelativePath="..\libmp3lame\quantize_pvt.h" - > - </File> - <File - RelativePath="..\libmp3lame\reservoir.h" - > - </File> - <File - RelativePath="..\libmp3lame\set_get.h" - > - </File> - <File - RelativePath="..\libmp3lame\tables.h" - > - </File> - <File - RelativePath="..\libmp3lame\util.h" - > - </File> - <File - RelativePath="..\libmp3lame\vbrquantize.h" - > - </File> - <File - RelativePath="..\libmp3lame\VbrTag.h" - > - </File> - <File - RelativePath="..\libmp3lame\version.h" - > - </File> - </Filter> - <Filter - Name="Asm" - Filter=".nas" - > - <File - RelativePath="..\libmp3lame\i386\choose_table.nas" - > - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\i386\cpu_feat.nas" - > - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\i386\fft.nas" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\i386\fft3dn.nas" - > - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\i386\fftfpu.nas" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\i386\fftsse.nas" - > - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\i386\ffttbl.nas" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\i386\scalar.nas" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="NASM" - /> - </FileConfiguration> - </File> - </Filter> - <File - RelativePath="..\include\lame.h" - > - </File> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/platform/win32/msvc/external/lame/vc_solution/vc9_libmp3lame_dll.vcproj b/platform/win32/msvc/external/lame/vc_solution/vc9_libmp3lame_dll.vcproj deleted file mode 100644 index 66bca67c350..00000000000 --- a/platform/win32/msvc/external/lame/vc_solution/vc9_libmp3lame_dll.vcproj +++ /dev/null @@ -1,374 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9,00" - Name="libmp3lame" - ProjectGUID="{92BD50AA-04D6-4FBF-ACE1-468FAF6778F2}" - RootNamespace="libmp3lameDLL" - TargetFrameworkVersion="0" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - <ToolFile - RelativePath=".\vc9_nasm.rules" - /> - </ToolFiles> - <Configurations> - <Configuration - Name="Release|Win32" - ConfigurationType="2" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_x87.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="NASM" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TypeLibraryName="..\output\Release/libmp3lame_dll.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="3" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - AdditionalIncludeDirectories="../libmp3lame,../,../mpglib,../include,.." - PreprocessorDefinitions="NDEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H" - RuntimeLibrary="2" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_VC80_UPGRADE=0x0600;_DLL=$(TargetFileName)" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - UseLibraryDependencyInputs="false" - OutputFile="$(OutDir)/libmp3lame.dll" - ModuleDefinitionFile="..\include\lame.def" - ImportLibrary="$(OutDir)/libmp3lame.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="ReleaseNASM|Win32" - ConfigurationType="2" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_nasm.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="NASM" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TypeLibraryName="..\output\ReleaseNASM/libmp3lame_dll.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="3" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - AdditionalIncludeDirectories="../libmp3lame,../,../mpglib,../include,.." - PreprocessorDefinitions="NDEBUG;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H;WIN32;_CRT_SECURE_NO_DEPRECATE" - RuntimeLibrary="2" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_VC80_UPGRADE=0x0600;_DLL=$(TargetFileName)" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - UseLibraryDependencyInputs="false" - OutputFile="$(OutDir)/libmp3lame.dll" - ModuleDefinitionFile="..\include\lame.def" - ImportLibrary="$(OutDir)/libmp3lame.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|Win32" - ConfigurationType="2" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_x87.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="NASM" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TypeLibraryName="..\output\Debug/libmp3lame_dll.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="../libmp3lame,../,../mpglib,../include,.." - PreprocessorDefinitions="_DEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H" - RuntimeLibrary="3" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_VC80_UPGRADE=0x0600;_DLL=$(TargetFileName);_DEBUG" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - UseLibraryDependencyInputs="false" - OutputFile="$(OutDir)/libmp3lame.dll" - ModuleDefinitionFile="..\include\lame.def" - GenerateDebugInformation="true" - ImportLibrary="$(OutDir)/libmp3lame.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="ReleaseSSE2|Win32" - ConfigurationType="2" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_sse2.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="NASM" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TypeLibraryName="..\output\Release/libmp3lame_dll.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="3" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - AdditionalIncludeDirectories="../libmp3lame,../,../mpglib,../include,.." - PreprocessorDefinitions="NDEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H" - RuntimeLibrary="2" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_VC80_UPGRADE=0x0600;_DLL=$(TargetFileName)" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - OutputFile="$(OutDir)/libmp3lame.dll" - ModuleDefinitionFile="..\include\lame.def" - ImportLibrary="$(OutDir)/libmp3lame.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <File - RelativePath="..\libmp3lame\..\include\lame.def" - > - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseNASM|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\libmp3lame\lame.rc" - > - </File> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/platform/win32/msvc/external/lame/vc_solution/vc9_mpglib.vcproj b/platform/win32/msvc/external/lame/vc_solution/vc9_mpglib.vcproj deleted file mode 100644 index 133d90f96f9..00000000000 --- a/platform/win32/msvc/external/lame/vc_solution/vc9_mpglib.vcproj +++ /dev/null @@ -1,659 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9,00" - Name="libmpghip-static" - ProjectGUID="{E2DAB91A-8248-4625-8A85-2C2C2A390DD8}" - RootNamespace="libmpghip" - TargetFrameworkVersion="0" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="ReleaseNASM|Win32" - ConfigurationType="4" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_nasm.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="3" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - AdditionalIncludeDirectories="../libmp3lame,../include,.." - PreprocessorDefinitions="NDEBUG;HAVE_MPGLIB;_WINDOWS;USE_LAYER_2;WIN32;HAVE_CONFIG_H" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="$(OutDir)/libmpghip-static.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - ConfigurationType="4" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_x87.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="3" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - AdditionalIncludeDirectories="../libmp3lame,../include,.." - PreprocessorDefinitions="NDEBUG;HAVE_MPGLIB;_WINDOWS;USE_LAYER_2;WIN32;HAVE_CONFIG_H" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="$(OutDir)/libmpghip-static.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|Win32" - ConfigurationType="4" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_x87.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="../libmp3lame,../include,.." - PreprocessorDefinitions="_DEBUG;_WINDOWS;USE_LAYER_2;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H" - RuntimeLibrary="1" - ProgramDataBaseFileName="$(OutDir)\$(TargetName).pdb" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="$(OutDir)/libmpghip-static.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="ReleaseSSE2|Win32" - ConfigurationType="4" - InheritedPropertySheets=".\vc9_lame_config.vsprops;.\arch_sse2.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="3" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - AdditionalIncludeDirectories="../libmp3lame,../include,.." - PreprocessorDefinitions="NDEBUG;HAVE_MPGLIB;_WINDOWS;USE_LAYER_2;WIN32;HAVE_CONFIG_H" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="$(OutDir)/libmpghip-static.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source" - Filter="c" - > - <File - RelativePath="..\mpglib\common.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\mpglib\dct64_i386.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\mpglib\decode_i386.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\mpglib\interface.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\mpglib\layer1.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\mpglib\layer2.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\mpglib\layer3.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\mpglib\tabinit.c" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - /> - </FileConfiguration> - </File> - </Filter> - <Filter - Name="Include" - Filter="h" - > - <File - RelativePath="..\mpglib\common.h" - > - </File> - <File - RelativePath="..\mpglib\..\configMS.h" - > - <FileConfiguration - Name="ReleaseNASM|Win32" - > - <Tool - Name="VCCustomBuildTool" - Description="Performing Custom Build Step on $(InputName)" - CommandLine="copy ..\configMS.h ..\config.h " - Outputs="..\config.h" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCustomBuildTool" - Description="Performing Custom Build Step on $(InputName)" - CommandLine="copy ..\configMS.h ..\config.h " - Outputs="..\config.h" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCustomBuildTool" - Description="Performing Custom Build Step on $(InputName)" - CommandLine="copy ..\configMS.h ..\config.h " - Outputs="..\config.h" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseSSE2|Win32" - > - <Tool - Name="VCCustomBuildTool" - Description="Performing Custom Build Step on $(InputName)" - CommandLine="copy ..\configMS.h ..\config.h " - Outputs="..\config.h" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\mpglib\dct64_i386.h" - > - </File> - <File - RelativePath="..\mpglib\decode_i386.h" - > - </File> - <File - RelativePath="..\mpglib\huffman.h" - > - </File> - <File - RelativePath="..\mpglib\interface.h" - > - </File> - <File - RelativePath="..\mpglib\l2tables.h" - > - </File> - <File - RelativePath="..\mpglib\layer1.h" - > - </File> - <File - RelativePath="..\mpglib\layer2.h" - > - </File> - <File - RelativePath="..\mpglib\layer3.h" - > - </File> - <File - RelativePath="..\mpglib\mpg123.h" - > - </File> - <File - RelativePath="..\mpglib\mpglib.h" - > - </File> - <File - RelativePath="..\mpglib\tabinit.h" - > - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/platform/win32/msvc/external/lame/vc_solution/vc9_nasm.rules b/platform/win32/msvc/external/lame/vc_solution/vc9_nasm.rules deleted file mode 100644 index 8b7f64e7364..00000000000 --- a/platform/win32/msvc/external/lame/vc_solution/vc9_nasm.rules +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<VisualStudioToolFile - Name="NASM " - Version="8,00" - > - <Rules> - <CustomBuildRule - Name="NASM" - DisplayName="NASM" - CommandLine="nasmw [BinFormat] [IncludeDir] [Defines] -o [OutFile] $(InputPath)" - Outputs="[OutFile]" - FileExtensions="*.nas" - ExecutionDescription="Assembling $(InputName)..." - ShowOnlyRuleProperties="false" - > - <Properties> - <StringProperty - Name="OutFile" - DisplayName="output file path" - Switch="[value]" - DefaultValue="$(IntDir)\$(InputName).obj" - /> - <StringProperty - Name="BinFormat" - DisplayName="Binary format" - Switch="-f [value]" - DefaultValue="win32" - /> - <StringProperty - Name="IncludeDir" - DisplayName="Additional include directories" - Switch="-i [value]" - DefaultValue="$(InputDir)" - Delimited="true" - /> - <StringProperty - Name="Defines" - DisplayName="Defines" - Switch="-D[value]" - DefaultValue="WIN32" - Delimited="true" - Delimiters=" ;," - /> - </Properties> - </CustomBuildRule> - </Rules> -</VisualStudioToolFile> diff --git a/platform/win32/msvc/external/pthreads.2/ANNOUNCE b/platform/win32/msvc/external/pthreads.2/ANNOUNCE deleted file mode 100644 index 23dbb9561dd..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ANNOUNCE +++ /dev/null @@ -1,483 +0,0 @@ -PTHREADS-WIN32 RELEASE 2.9.0 (2012-05-25) ------------------------------------------ -Web Site: http://sourceware.org/pthreads-win32/ -FTP Site: ftp://sourceware.org/pub/pthreads-win32 -Maintainer: Ross Johnson <ross.johnson@loungebythelake.net> - - -We are pleased to announce the availability of a new release of -Pthreads-win32, an Open Source Software implementation of the -Threads component of the POSIX 1003.1 2001 Standard for Microsoft's -Win32 environment. Some functions from other sections of POSIX -1003.1 2001 are also supported including semaphores and scheduling -functions. - -Some common non-portable functions are also implemented for -additional compatibility, as are a few functions specific -to pthreads-win32 for easier integration with Win32 applications. - -Pthreads-win32 is free software, distributed under the GNU Lesser -General Public License (LGPL). - - -Acknowledgements ----------------- -This library is based originally on a Win32 pthreads -implementation contributed by John Bossom. - -The implementation of Condition Variables uses algorithms developed -by Alexander Terekhov and Louis Thomas. - -The implementation of POSIX mutexes has been improved by Thomas Pfaff -and later by Alexander Terekhov. - -The implementation of Spinlocks and Barriers was contributed -by Ross Johnson. - -The implementation of read/write locks was contributed by -Aurelio Medina and improved by Alexander Terekhov. - -Many others have contributed significant time and effort to solve crutial -problems in order to make the library workable, robust and reliable. - -Thanks to Xavier Leroy for granting permission to use and modify his -LinuxThreads manual pages. - -Thanks to The Open Group for making the Single Unix Specification -publicly available - many of the manual pages included in the package -were extracted from it. - -There is also a separate CONTRIBUTORS file. This file and others are -on the web site: - - http://sourceware.org/pthreads-win32 - -As much as possible, the ChangeLog file acknowledges contributions to the -code base in more detail. - - -Changes since the last release ------------------------------- -These are now documented in the NEWS file. -See the ChangeLog file also. - - -Known Bugs ----------- -These are now documented in the BUGS file. - - -Level of standards conformance ------------------------------- - -The following POSIX 1003.1 2001 options are defined and set to 200112L: - - _POSIX_THREADS - _POSIX_THREAD_SAFE_FUNCTIONS - _POSIX_THREAD_ATTR_STACKSIZE - _POSIX_THREAD_PRIORITY_SCHEDULING - _POSIX_SEMAPHORES - _POSIX_READER_WRITER_LOCKS - _POSIX_SPIN_LOCKS - _POSIX_BARRIERS - - -The following POSIX 1003.1 2001 options are defined and set to -1: - - _POSIX_THREAD_ATTR_STACKADDR - _POSIX_THREAD_PRIO_INHERIT - _POSIX_THREAD_PRIO_PROTECT - _POSIX_THREAD_PROCESS_SHARED - - -The following POSIX 1003.1 2001 limits are defined and set: - - _POSIX_THREAD_THREADS_MAX - _POSIX_SEM_VALUE_MAX - _POSIX_SEM_NSEMS_MAX - _POSIX_THREAD_KEYS_MAX - _POSIX_THREAD_DESTRUCTOR_ITERATIONS - PTHREAD_STACK_MIN - PTHREAD_THREADS_MAX - SEM_VALUE_MAX - SEM_NSEMS_MAX - PTHREAD_KEYS_MAX - PTHREAD_DESTRUCTOR_ITERATIONS - - -The following functions are implemented: - - --------------------------- - PThreads - --------------------------- - pthread_attr_init - pthread_attr_destroy - pthread_attr_getdetachstate - pthread_attr_getstackaddr - pthread_attr_getstacksize - pthread_attr_setdetachstate - pthread_attr_setstackaddr - pthread_attr_setstacksize - - pthread_create - pthread_detach - pthread_equal - pthread_exit - pthread_join - pthread_once - pthread_self - - pthread_cancel - pthread_cleanup_pop - pthread_cleanup_push - pthread_setcancelstate - pthread_setcanceltype - pthread_testcancel - - --------------------------- - Thread Specific Data - --------------------------- - pthread_key_create - pthread_key_delete - pthread_setspecific - pthread_getspecific - - --------------------------- - Mutexes - --------------------------- - pthread_mutexattr_init - pthread_mutexattr_destroy - pthread_mutexattr_getpshared - pthread_mutexattr_setpshared - pthread_mutexattr_gettype - pthread_mutexattr_settype (types: PTHREAD_MUTEX_DEFAULT - PTHREAD_MUTEX_NORMAL - PTHREAD_MUTEX_ERRORCHECK - PTHREAD_MUTEX_RECURSIVE ) - pthread_mutexattr_getrobust - pthread_mutexattr_setrobust (values: PTHREAD_MUTEX_STALLED - PTHREAD_MUTEX_ROBUST) - pthread_mutex_init - pthread_mutex_destroy - pthread_mutex_lock - pthread_mutex_trylock - pthread_mutex_timedlock - pthread_mutex_unlock - pthread_mutex_consistent - - --------------------------- - Condition Variables - --------------------------- - pthread_condattr_init - pthread_condattr_destroy - pthread_condattr_getpshared - pthread_condattr_setpshared - - pthread_cond_init - pthread_cond_destroy - pthread_cond_wait - pthread_cond_timedwait - pthread_cond_signal - pthread_cond_broadcast - - --------------------------- - Read/Write Locks - --------------------------- - pthread_rwlock_init - pthread_rwlock_destroy - pthread_rwlock_tryrdlock - pthread_rwlock_trywrlock - pthread_rwlock_rdlock - pthread_rwlock_timedrdlock - pthread_rwlock_rwlock - pthread_rwlock_timedwrlock - pthread_rwlock_unlock - pthread_rwlockattr_init - pthread_rwlockattr_destroy - pthread_rwlockattr_getpshared - pthread_rwlockattr_setpshared - - --------------------------- - Spin Locks - --------------------------- - pthread_spin_init - pthread_spin_destroy - pthread_spin_lock - pthread_spin_unlock - pthread_spin_trylock - - --------------------------- - Barriers - --------------------------- - pthread_barrier_init - pthread_barrier_destroy - pthread_barrier_wait - pthread_barrierattr_init - pthread_barrierattr_destroy - pthread_barrierattr_getpshared - pthread_barrierattr_setpshared - - --------------------------- - Semaphores - --------------------------- - sem_init - sem_destroy - sem_post - sem_wait - sem_trywait - sem_timedwait - sem_getvalue (# free if +ve, # of waiters if -ve) - sem_open (returns an error ENOSYS) - sem_close (returns an error ENOSYS) - sem_unlink (returns an error ENOSYS) - - --------------------------- - RealTime Scheduling - --------------------------- - pthread_attr_getschedparam - pthread_attr_setschedparam - pthread_attr_getinheritsched - pthread_attr_setinheritsched - pthread_attr_getschedpolicy (only supports SCHED_OTHER) - pthread_attr_setschedpolicy (only supports SCHED_OTHER) - pthread_getschedparam - pthread_setschedparam - pthread_getconcurrency - pthread_setconcurrency - pthread_attr_getscope - pthread_attr_setscope (only supports PTHREAD_SCOPE_SYSTEM) - sched_get_priority_max - sched_get_priority_min - sched_rr_get_interval (returns an error ENOTSUP) - sched_setscheduler (only supports SCHED_OTHER) - sched_getscheduler (only supports SCHED_OTHER) - sched_yield - - --------------------------- - Signals - --------------------------- - pthread_sigmask - pthread_kill (only supports zero sig value, - for thread validity checking) - - --------------------------- - Non-portable routines (see the README.NONPORTABLE file for usage) - --------------------------- - pthread_getw32threadhandle_np - pthread_timechange_handler_np - pthread_delay_np - pthread_getunique_np - pthread_mutexattr_getkind_np - pthread_mutexattr_setkind_np (types: PTHREAD_MUTEX_FAST_NP, - PTHREAD_MUTEX_ERRORCHECK_NP, - PTHREAD_MUTEX_RECURSIVE_NP, - PTHREAD_MUTEX_ADAPTIVE_NP, - PTHREAD_MUTEX_TIMED_NP) - pthread_num_processors_np - (The following four routines may be required when linking statically. - The process_* routines should not be needed for MSVC or GCC.) - pthread_win32_process_attach_np - pthread_win32_process_detach_np - (The following routines should only be needed to manage implicit - POSIX handles i.e. when Win native threads call POSIX thread routines - (other than pthread_create)) - pthread_win32_thread_attach_np - pthread_win32_thread_detach_np - - --------------------------- - Static Initializers - --------------------------- - PTHREAD_ONCE_INIT - PTHREAD_MUTEX_INITIALIZER - PTHREAD_RECURSIVE_MUTEX_INITIALIZER - PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP - PTHREAD_ERRORCHECK_MUTEX_INITIALIZER - PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP - PTHREAD_COND_INITIALIZER - PTHREAD_RWLOCK_INITIALIZER - PTHREAD_SPINLOCK_INITIALIZER - - -The library includes two non-API functions for creating cancellation -points in applications and libraries: - - pthreadCancelableWait - pthreadCancelableTimedWait - - -The following functions are not implemented: - - --------------------------- - RealTime Scheduling - --------------------------- - pthread_mutex_getprioceiling - pthread_mutex_setprioceiling - pthread_mutex_attr_getprioceiling - pthread_mutex_attr_getprotocol - pthread_mutex_attr_setprioceiling - pthread_mutex_attr_setprotocol - - --------------------------- - Fork Handlers - --------------------------- - pthread_atfork - - --------------------------- - Stdio - --------------------------- - flockfile - ftrylockfile - funlockfile - getc_unlocked - getchar_unlocked - putc_unlocked - putchar_unlocked - - --------------------------- - Thread-Safe C Runtime Library - --------------------------- - readdir_r - getgrgid_r - getgrnam_r - getpwuid_r - getpwnam_r - - --------------------------- - Signals - --------------------------- - sigtimedwait - sigwait - sigwaitinfo - - --------------------------- - General - --------------------------- - sysconf - - --------------------------- - Thread-Safe C Runtime Library (macros) - --------------------------- - strtok_r - asctime_r - ctime_r - gmtime_r - localtime_r - rand_r - - -Availability ------------- - -The prebuilt DLL, export libs (for both MSVC and Mingw32), and the header -files (pthread.h, semaphore.h, sched.h) are available along with the -complete source code. - -The source code can be found at: - - ftp://sources.redhat.com/pub/pthreads-win32 - -and as individual source code files at - - ftp://sources.redhat.com/pub/pthreads-win32/source - -The pre-built DLL, export libraries and include files can be found at: - - ftp://sources.redhat.com/pub/pthreads-win32/dll-latest - - - -Mailing List ------------- - -There is a mailing list for discussing pthreads on Win32. To join, -send email to: - - pthreads-win32-subscribe@sourceware.cygnus.com - - -Application Development Environments ------------------------------------- - -See the README file for more information. - -MSVC: -MSVC using SEH works. Distribute pthreadVSE.dll with your application. -MSVC using C++ EH works. Distribute pthreadVCE.dll with your application. -MSVC using C setjmp/longjmp works. Distribute pthreadVC.dll with your application. - - -Mingw32: -See the FAQ, Questions 6 and 10. - -Mingw using C++ EH works. Distribute pthreadGCE.dll with your application. -Mingw using C setjmp/longjmp works. Distribute pthreadGC.dll with your application. - - -Cygwin: (http://sourceware.cygnus.com/cygwin/) -Developers using Cygwin do not need pthreads-win32 since it has POSIX threads -support. Refer to its documentation for details and extent. - - -UWIN: -UWIN is a complete Unix-like environment for Windows from AT&T. Pthreads-win32 -doesn't currently support UWIN (and vice versa), but that may change in the -future. - -Generally: -For convenience, the following pre-built files are available on the FTP site -(see Availability above): - - pthread.h - for POSIX threads - semaphore.h - for POSIX semaphores - sched.h - for POSIX scheduling - pthreadVCE.dll - built with MSVC++ compiler using C++ EH - pthreadVCE.lib - pthreadVC.dll - built with MSVC compiler using C setjmp/longjmp - pthreadVC.lib - pthreadVSE.dll - built with MSVC compiler using SEH - pthreadVSE.lib - pthreadGCE.dll - built with Mingw32 G++ 2.95.2-1 - pthreadGC.dll - built with Mingw32 GCC 2.95.2-1 using setjmp/longjmp - libpthreadGCE.a - derived from pthreadGCE.dll - libpthreadGC.a - derived from pthreadGC.dll - gcc.dll - needed if distributing applications that use - pthreadGCE.dll (but see the FAQ Q 10 for the latest - related information) - -These are the only files you need in order to build POSIX threads -applications for Win32 using either MSVC or Mingw32. - -See the FAQ file in the source tree for additional information. - - -Documentation -------------- - -For the authoritative reference, see the online POSIX -standard reference at: - - http://www.OpenGroup.org - -For POSIX Thread API programming, several reference books are -available: - - Programming with POSIX Threads - David R. Butenhof - Addison-Wesley (pub) - - Pthreads Programming - By Bradford Nichols, Dick Buttlar & Jacqueline Proulx Farrell - O'Reilly (pub) - -On the web: see the links at the bottom of the pthreads-win32 site: - - http://sources.redhat.com/pthreads-win32/ - - Currently, there is no documentation included in the package apart - from the copious comments in the source code. - - - -Enjoy! - -Ross Johnson diff --git a/platform/win32/msvc/external/pthreads.2/BUGS b/platform/win32/msvc/external/pthreads.2/BUGS deleted file mode 100644 index 5bdc2a989a2..00000000000 --- a/platform/win32/msvc/external/pthreads.2/BUGS +++ /dev/null @@ -1,141 +0,0 @@ ----------- -Known bugs ----------- - -1. Not strictly a bug, more of a gotcha. - - Under MS VC++ (only tested with version 6.0), a term_func - set via the standard C++ set_terminate() function causes the - application to abort. - - Notes from the MSVC++ manual: - 1) A term_func() should call exit(), otherwise - abort() will be called on return to the caller. - A call to abort() raises SIGABRT and the default signal handler - for all signals terminates the calling program with - exit code 3. - 2) A term_func() must not throw an exception. Therefore - term_func() should not call pthread_exit(), which - works by throwing an exception (pthreadVCE or pthreadVSE) - or by calling longjmp (pthreadVC). - - Workaround: avoid using pthread_exit() in C++ applications. Exit - threads by dropping through the end of the thread routine. - -2. Cancellation problems in C++ builds - - Milan Gardian - - [Note: It's not clear if this problem isn't simply due to the context - switch in pthread_cancel() which occurs unless the QueueUserAPCEx - library and driver are installed and used. Just like setjmp/longjmp, - this is probably not going to work well in C++. In any case, unless for - some very unusual reason you really must use the C++ build then please - use the C build pthreadVC2.dll or pthreadGC2.dll, i.e. for C++ - applications.] - - This is suspected to be a compiler bug in VC6.0, and also seen in - VC7.0 and VS .NET 2003. The GNU C++ compiler does not have a problem - with this, and it has been reported that the Intel C++ 8.1 compiler - and Visual C++ 2005 Express Edition Beta2 pass tests\semaphore4.c - (which exposes the bug). - - Workaround [rpj - 2 Feb 2002] - ----------------------------- - [Please note: this workaround did not solve a similar problem in - snapshot-2004-11-03 or later, even though similar symptoms were seen. - tests\semaphore4.c fails in that snapshot for the VCE version of the - DLL.] - - The problem disappears when /Ob0 is used, i.e. /O2 /Ob0 works OK, - but if you want to use inlining optimisation you can be much more - specific about where it's switched off and on by using a pragma. - - So the inlining optimisation is interfering with the way that cleanup - handlers are run. It appears to relate to auto-inlining of class methods - since this is the only auto inlining that is performed at /O1 optimisation - (functions with the "inline" qualifier are also inlined, but the problem - doesn't appear to involve any such functions in the library or testsuite). - - In order to confirm the inlining culprit, the following use of pragmas - eliminate the problem but I don't know how to make it transparent, putting - it in, say, pthread.h where pthread_cleanup_push defined as a macro. - - #pragma inline_depth(0) - pthread_cleanup_push(handlerFunc, (void *) &arg); - - /* ... */ - - pthread_cleanup_pop(0); - #pragma inline_depth() - - Note the empty () pragma value after the pop macro. This resets depth to the - default. Or you can specify a non-zero depth here. - - The pragma is also needed (and now used) within the library itself wherever - cleanup handlers are used (condvar.c and rwlock.c). - - Use of these pragmas allows compiler optimisations /O1 and /O2 to be - used for either or both the library and applications. - - Experimenting further, I found that wrapping the actual cleanup handler - function with #pragma auto_inline(off|on) does NOT work. - - MSVC6.0 doesn't appear to support the C99 standard's _Pragma directive, - however, later versions may. This form is embeddable inside #define - macros, which would be ideal because it would mean that it could be added - to the push/pop macro definitions in pthread.h and hidden from the - application programmer. - - [/rpj] - - Original problem description - ---------------------------- - - The cancellation (actually, cleanup-after-cancel) tests fail when using VC - (professional) optimisation switches (/O1 or /O2) in pthreads library. I - have not investigated which concrete optimisation technique causes this - problem (/Og, /Oi, /Ot, /Oy, /Ob1, /Gs, /Gf, /Gy, etc.), but here is a - summary of builds and corresponding failures: - - * pthreads VSE (optimised tests): OK - * pthreads VCE (optimised tests): Failed "cleanup1" test (runtime) - - * pthreads VSE (DLL in CRT, optimised tests): OK - * pthreads VCE (DLL in CRT, optimised tests): Failed "cleanup1" test - (runtime) - - Please note that while in VSE version of the pthreads library the - optimisation does not really have any impact on the tests (they pass OK), in - VCE version addition of optimisation (/O2 in this case) causes the tests to - fail uniformly - either in "cleanup0" or "cleanup1" test cases. - - Please note that all the tests above use default pthreads DLL (no - optimisations, linked with either static or DLL CRT, based on test type). - Therefore the problem lies not within the pthreads DLL but within the - compiled client code (the application using pthreads -> involvement of - "pthread.h"). - - I think the message of this section is that usage of VCE version of pthreads - in applications relying on cancellation/cleanup AND using optimisations for - creation of production code is highly unreliable for the current version of - the pthreads library. - -3. The Borland Builder 5.5 version of the library produces memory read exceptions -in some tests. - -4. pthread_barrier_wait() can deadlock if the number of potential calling -threads for a particular barrier is greater than the barrier count parameter -given to pthread_barrier_init() for that barrier. - -This is due to the very lightweight implementation of pthread-win32 barriers. -To cope with more than "count" possible waiters, barriers must effectively -implement all the same safeguards as condition variables, making them much -"heavier" than at present. - -The workaround is to ensure that no more than "count" threads attempt to wait -at the barrier. - -5. Canceling a thread blocked on pthread_once appears not to work in the MSVC++ -version of the library "pthreadVCE.dll". The test case "once3.c" hangs. I have no -clues on this at present. All other versions pass this test ok - pthreadsVC.dll, -pthreadsVSE.dll, pthreadsGC.dll and pthreadsGCE.dll. diff --git a/platform/win32/msvc/external/pthreads.2/Bmakefile b/platform/win32/msvc/external/pthreads.2/Bmakefile deleted file mode 100644 index b293994e7da..00000000000 --- a/platform/win32/msvc/external/pthreads.2/Bmakefile +++ /dev/null @@ -1,268 +0,0 @@ -# This makefile is compatible with BCB make. Use "make -fBMakefile" to compile. -# -# The variables $DLLDEST and $LIBDEST hold the destination directories for the -# dll and the lib, respectively. Probably all that needs to change is $DEVROOT. -# -# Currently only the recommended pthreadBC.dll is built by this makefile. -# - - -DLL_VER = 2 - -DEVROOT = . - -DLLDEST = $(DEVROOT)\DLL -LIBDEST = $(DEVROOT)\DLL - -DLLS = pthreadBC$(DLL_VER).dll - -OPTIM = /O2 - -RC = brcc32 -RCFLAGS = -i. - -CFLAGS = /q /I. /D_WIN32_WINNT=0x400 /DHAVE_PTW32_CONFIG_H=1 /4 /tWD /tWM \ - /w-aus /w-asc /w-par - -#C cleanup code -BCFLAGS = $(PTW32_FLAGS) $(CFLAGS) - -# Agregate modules for inlinability -DLL_OBJS = \ - attr.obj \ - barrier.obj \ - cancel.obj \ - cleanup.obj \ - condvar.obj \ - create.obj \ - dll.obj \ - errno.obj \ - exit.obj \ - fork.obj \ - global.obj \ - misc.obj \ - mutex.obj \ - nonportable.obj \ - private.obj \ - rwlock.obj \ - sched.obj \ - semaphore.obj \ - signal.obj \ - spin.obj \ - sync.obj \ - tsd.obj - -INCL = config.h implement.h semaphore.h pthread.h need_errno.h - -ATTR_SRCS = \ - pthread_attr_init.c \ - pthread_attr_destroy.c \ - pthread_attr_getdetachstate.c \ - pthread_attr_setdetachstate.c \ - pthread_attr_getstackaddr.c \ - pthread_attr_setstackaddr.c \ - pthread_attr_getstacksize.c \ - pthread_attr_setstacksize.c \ - pthread_attr_getscope.c \ - pthread_attr_setscope.c - -BARRIER_SRCS = \ - pthread_barrier_init.c \ - pthread_barrier_destroy.c \ - pthread_barrier_wait.c \ - pthread_barrierattr_init.c \ - pthread_barrierattr_destroy.c \ - pthread_barrierattr_setpshared.c \ - pthread_barrierattr_getpshared.c - -CANCEL_SRCS = \ - pthread_setcancelstate.c \ - pthread_setcanceltype.c \ - pthread_testcancel.c \ - pthread_cancel.c - -CONDVAR_SRCS = \ - ptw32_cond_check_need_init.c \ - pthread_condattr_destroy.c \ - pthread_condattr_getpshared.c \ - pthread_condattr_init.c \ - pthread_condattr_setpshared.c \ - pthread_cond_destroy.c \ - pthread_cond_init.c \ - pthread_cond_signal.c \ - pthread_cond_wait.c - -EXIT_SRCS = \ - pthread_exit.c - -MISC_SRCS = \ - pthread_equal.c \ - pthread_getconcurrency.c \ - pthread_once.c \ - pthread_self.c \ - pthread_setconcurrency.c \ - ptw32_calloc.c \ - ptw32_MCS_lock.c \ - ptw32_new.c \ - w32_CancelableWait.c - -MUTEX_SRCS = \ - ptw32_mutex_check_need_init.c \ - pthread_mutex_init.c \ - pthread_mutex_destroy.c \ - pthread_mutexattr_init.c \ - pthread_mutexattr_destroy.c \ - pthread_mutexattr_getpshared.c \ - pthread_mutexattr_setpshared.c \ - pthread_mutexattr_settype.c \ - pthread_mutexattr_gettype.c \ - pthread_mutexattr_setrobust.c \ - pthread_mutexattr_getrobust.c \ - pthread_mutex_lock.c \ - pthread_mutex_timedlock.c \ - pthread_mutex_unlock.c \ - pthread_mutex_trylock.c \ - pthread_mutex_consistent.c - -NONPORTABLE_SRCS = \ - pthread_mutexattr_setkind_np.c \ - pthread_mutexattr_getkind_np.c \ - pthread_getw32threadhandle_np.c \ - pthread_delay_np.c \ - pthread_num_processors_np.c \ - pthread_win32_attach_detach_np.c \ - pthread_timechange_handler_np.c - -PRIVATE_SRCS = \ - ptw32_is_attr.c \ - ptw32_processInitialize.c \ - ptw32_processTerminate.c \ - ptw32_threadStart.c \ - ptw32_threadDestroy.c \ - ptw32_tkAssocCreate.c \ - ptw32_tkAssocDestroy.c \ - ptw32_callUserDestroyRoutines.c \ - ptw32_timespec.c \ - ptw32_relmillisecs.c \ - ptw32_throw.c \ - ptw32_getprocessors.c - -RWLOCK_SRCS = \ - ptw32_rwlock_check_need_init.c \ - ptw32_rwlock_cancelwrwait.c \ - pthread_rwlock_init.c \ - pthread_rwlock_destroy.c \ - pthread_rwlockattr_init.c \ - pthread_rwlockattr_destroy.c \ - pthread_rwlockattr_getpshared.c \ - pthread_rwlockattr_setpshared.c \ - pthread_rwlock_rdlock.c \ - pthread_rwlock_timedrdlock.c \ - pthread_rwlock_wrlock.c \ - pthread_rwlock_timedwrlock.c \ - pthread_rwlock_unlock.c \ - pthread_rwlock_tryrdlock.c \ - pthread_rwlock_trywrlock.c - -SCHED_SRCS = \ - pthread_attr_setschedpolicy.c \ - pthread_attr_getschedpolicy.c \ - pthread_attr_setschedparam.c \ - pthread_attr_getschedparam.c \ - pthread_attr_setinheritsched.c \ - pthread_attr_getinheritsched.c \ - pthread_setschedparam.c \ - pthread_getschedparam.c \ - sched_get_priority_max.c \ - sched_get_priority_min.c \ - sched_setscheduler.c \ - sched_getscheduler.c \ - sched_yield.c - -SEMAPHORE_SRCS = \ - sem_init.c \ - sem_destroy.c \ - sem_trywait.c \ - sem_timedwait.c \ - sem_wait.c \ - sem_post.c \ - sem_post_multiple.c \ - sem_getvalue.c \ - sem_open.c \ - sem_close.c \ - sem_unlink.c - -SPIN_SRCS = \ - ptw32_spinlock_check_need_init.c \ - pthread_spin_init.c \ - pthread_spin_destroy.c \ - pthread_spin_lock.c \ - pthread_spin_unlock.c \ - pthread_spin_trylock.c - -SYNC_SRCS = \ - pthread_detach.c \ - pthread_join.c - -TSD_SRCS = \ - pthread_key_create.c \ - pthread_key_delete.c \ - pthread_setspecific.c \ - pthread_getspecific.c - - -all: clean $(DLLS) - -realclean: clean - if exist pthread*.dll del pthread*.dll - if exist pthread*.lib del pthread*.lib - if exist *.stamp del *.stamp - -clean: - if exist *.obj del *.obj - if exist *.ilk del *.ilk - if exist *.ilc del *.ilc - if exist *.ild del *.ild - if exist *.ilf del *.ilf - if exist *.ils del *.ils - if exist *.tds del *.tds - if exist *.pdb del *.pdb - if exist *.exp del *.exp - if exist *.map del *.map - if exist *.o del *.o - if exist *.i del *.i - if exist *.res del *.res - - -install: $(DLLS) - copy pthread*.dll $(DLLDEST) - copy pthread*.lib $(LIBDEST) - -$(DLLS): $(DLL_OBJS) version.res - ilink32 /Tpd /Gi c0d32x.obj $(DLL_OBJS), \ - $@, ,\ - cw32mti.lib import32.lib, ,\ - version.res - -.c.obj: - $(CC) $(OPTIM) $(BCFLAGS) -c $< - -.rc.res: - $(RC) $(RCFLAGS) $< - -attr.obj: attr.c $(ATTR_SRCS) $(INCL) -barrier.obj: barrier.c $(BARRIER_SRCS) $(INCL) -cancel.obj: cancel.c $(CANCEL_SRCS) $(INCL) -condvar.obj: condvar.c $(CONDVAR_SRCS) $(INCL) -exit.obj: exit.c $(EXIT_SRCS) $(INCL) -misc.obj: misc.c $(MISC_SRCS) $(INCL) -mutex.obj: mutex.c $(MUTEX_SRCS) $(INCL) -nonportable.obj: nonportable.c $(NONPORTABLE_SRCS) $(INCL) -private.obj: private.c $(PRIVATE_SRCS) $(INCL) -rwlock.obj: rwlock.c $(RWLOCK_SRCS) $(INCL) -sched.obj: sched.c $(SCHED_SRCS) $(INCL) -semaphore.obj: semaphore.c $(SEMAPHORE_SRCS) $(INCL) -spin.obj: spin.c $(SPIN_SRCS) $(INCL) -sync.obj: sync.c $(SYNC_SRCS) $(INCL) -tsd.obj: tsd.c $(TSD_SRCS) $(INCL) -version.res: version.rc $(INCL) diff --git a/platform/win32/msvc/external/pthreads.2/CONTRIBUTORS b/platform/win32/msvc/external/pthreads.2/CONTRIBUTORS deleted file mode 100644 index 0f8a2742693..00000000000 --- a/platform/win32/msvc/external/pthreads.2/CONTRIBUTORS +++ /dev/null @@ -1,140 +0,0 @@ -Contributors (in approximate order of appearance) - -[See also the ChangeLog file where individuals are -attributed in log entries. Likewise in the FAQ file.] - -Ben Elliston bje at cygnus dot com - Initiated the project; - setup the project infrastructure (CVS, web page, etc.); - early prototype routines. -Ross Johnson Ross dot Johnson at dot homemail dot com dot au - early prototype routines; - ongoing project coordination/maintenance; - implementation of spin locks and barriers; - various enhancements; - bug fixes; - documentation; - testsuite. -Robert Colquhoun rjc at trump dot net dot au - Early bug fixes. -John E. Bossom John dot Bossom at cognos dot com - Contributed substantial original working implementation; - bug fixes; - ongoing guidance and standards interpretation. -Anders Norlander anorland at hem2 dot passagen dot se - Early enhancements and runtime checking for supported - Win32 routines. -Tor Lillqvist tml at iki dot fi - General enhancements; - early bug fixes to condition variables. -Scott Lightner scott at curriculum dot com - Bug fix. -Kevin Ruland Kevin dot Ruland at anheuser-busch dot com - Various bug fixes. -Mike Russo miker at eai dot com - Bug fix. -Mark E. Armstrong avail at pacbell dot net - Bug fixes. -Lorin Hochstein lmh at xiphos dot ca - general bug fixes; bug fixes to condition variables. -Peter Slacik Peter dot Slacik at tatramed dot sk - Bug fixes. -Mumit Khan khan at xraylith dot wisc dot edu - Fixes to work with Mingw32. -Milan Gardian mg at tatramed dot sk - Bug fixes and reports/analyses of obscure problems. -Aurelio Medina aureliom at crt dot com - First implementation of read-write locks. -Graham Dumpleton Graham dot Dumpleton at ra dot pad dot otc dot telstra dot com dot au - Bug fix in condition variables. -Tristan Savatier tristan at mpegtv dot com - WinCE port. -Erik Hensema erik at hensema dot xs4all dot nl - Bug fixes. -Rich Peters rpeters at micro-magic dot com -Todd Owen towen at lucidcalm dot dropbear dot id dot au - Bug fixes to dll loading. -Jason Nye jnye at nbnet dot nb dot ca - Implementation of async cancelation. -Fred Forester fforest at eticomm dot net -Kevin D. Clark kclark at cabletron dot com -David Baggett dmb at itasoftware dot com - Bug fixes. -Paul Redondo paul at matchvision dot com -Scott McCaskill scott at 3dfx dot com - Bug fixes. -Jef Gearhart jgearhart at tpssys dot com - Bug fix. -Arthur Kantor akantor at bexusa dot com - Mutex enhancements. -Steven Reddie smr at essemer dot com dot au - Bug fix. -Alexander Terekhov TEREKHOV at de dot ibm dot com - Re-implemented and improved read-write locks; - (with Louis Thomas) re-implemented and improved - condition variables; - enhancements to semaphores; - enhancements to mutexes; - new mutex implementation in 'futex' style; - suggested a robust implementation of pthread_once - similar to that implemented by V.Kliathcko; - system clock change handling re CV timeouts; - bug fixes. -Thomas Pfaff tpfaff at gmx dot net - Changes to make C version usable with C++ applications; - re-implemented mutex routines to avoid Win32 mutexes - and TryEnterCriticalSection; - procedure to fix Mingw32 thread-safety issues. -Franco Bez franco dot bez at gmx dot de - procedure to fix Mingw32 thread-safety issues. -Louis Thomas lthomas at arbitrade dot com - (with Alexander Terekhov) re-implemented and improved - condition variables. -David Korn dgk at research dot att dot com - Ported to UWIN. -Phil Frisbie, Jr. phil at hawksoft dot com - Bug fix. -Ralf Brese Ralf dot Brese at pdb4 dot siemens dot de - Bug fix. -prionx at juno dot com prionx at juno dot com - Bug fixes. -Max Woodbury mtew at cds dot duke dot edu - POSIX versioning conditionals; - reduced namespace pollution; - idea to separate routines to reduce statically - linked image sizes. -Rob Fanner rfanner at stonethree dot com - Bug fix. -Michael Johnson michaelj at maine dot rr dot com - Bug fix. -Nicolas Barry boozai at yahoo dot com - Bug fixes. -Piet van Bruggen pietvb at newbridges dot nl - Bug fix. -Makoto Kato raven at oldskool dot jp - AMD64 port. -Panagiotis E. Hadjidoukas peh at hpclab dot ceid dot upatras dot gr - phadjido at cs dot uoi dot gr - Contributed the QueueUserAPCEx package which - makes preemptive async cancelation possible. -Will Bryant will dot bryant at ecosm dot com - Borland compiler patch and makefile. -Anuj Goyal anuj dot goyal at gmail dot com - Port to Digital Mars compiler. -Gottlob Frege gottlobfrege at gmail dot com - re-implemented pthread_once (version 2) - (pthread_once cancellation added by rpj). -Vladimir Kliatchko vladimir at kliatchko dot com - reimplemented pthread_once with the same form - as described by A.Terekhov (later version 2); - implementation of MCS (Mellor-Crummey/Scott) locks. -Ramiro Polla ramiro.polla at gmail dot com - static library auto init/cleanup on application - start/exit via RT hooks (MSC and GCC compilers only). -Daniel Richard G. skunk at iSKUNK dot org - Patches and cleanups for x86 and x64, particularly - across a range of MS build environments. -John Kamp john dot kamp at globalgraphics dot com - Patches to fix various problems on x64; brutal testing - particularly using high memory run environments. - diff --git a/platform/win32/msvc/external/pthreads.2/COPYING b/platform/win32/msvc/external/pthreads.2/COPYING deleted file mode 100644 index af8e3db9129..00000000000 --- a/platform/win32/msvc/external/pthreads.2/COPYING +++ /dev/null @@ -1,150 +0,0 @@ - pthreads-win32 - a POSIX threads library for Microsoft Windows - - -This file is Copyrighted ------------------------- - - This file is covered under the following Copyright: - - Copyright (C) 2001,2006 Ross P. Johnson - All rights reserved. - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -Pthreads-win32 is covered by the GNU Lesser General Public License ------------------------------------------------------------------- - - Pthreads-win32 is open software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License - as published by the Free Software Foundation version 2.1 of the - License. - - Pthreads-win32 is several binary link libraries, several modules, - associated interface definition files and scripts used to control - its compilation and installation. - - Pthreads-win32 is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - A copy of the GNU Lesser General Public License is distributed with - pthreads-win32 under the filename: - - COPYING.LIB - - You should have received a copy of the version 2.1 GNU Lesser General - Public License with pthreads-win32; if not, write to: - - Free Software Foundation, Inc. - 59 Temple Place - Suite 330 - Boston, MA 02111-1307 - USA - - The contact addresses for pthreads-win32 is as follows: - - Web: http://sources.redhat.com/pthreads-win32 - Email: Ross Johnson - Please use: Firstname.Lastname@homemail.com.au - - - -Pthreads-win32 copyrights and exception files ---------------------------------------------- - - With the exception of the files listed below, Pthreads-win32 - is covered under the following GNU Lesser General Public License - Copyrights: - - Pthreads-win32 - POSIX Threads Library for Win32 - Copyright(C) 1998 John E. Bossom - Copyright(C) 1999,2006 Pthreads-win32 contributors - - The current list of contributors is contained - in the file CONTRIBUTORS included with the source - code distribution. The current list of CONTRIBUTORS - can also be seen at the following WWW location: - http://sources.redhat.com/pthreads-win32/contributors.html - - Contact Email: Ross Johnson - Please use: Firstname.Lastname@homemail.com.au - - These files are not covered under one of the Copyrights listed above: - - COPYING - COPYING.LIB - tests/rwlock7.c - - This file, COPYING, is distributed under the Copyright found at the - top of this file. It is important to note that you may distribute - verbatim copies of this file but you may not modify this file. - - The file COPYING.LIB, which contains a copy of the version 2.1 - GNU Lesser General Public License, is itself copyrighted by the - Free Software Foundation, Inc. Please note that the Free Software - Foundation, Inc. does NOT have a copyright over Pthreads-win32, - only the COPYING.LIB that is supplied with pthreads-win32. - - The file tests/rwlock7.c is derived from code written by - Dave Butenhof for his book 'Programming With POSIX(R) Threads'. - The original code was obtained by free download from his website - http://home.earthlink.net/~anneart/family/Threads/source.html - and did not contain a copyright or author notice. It is assumed to - be freely distributable. - - In all cases one may use and distribute these exception files freely. - And because one may freely distribute the LGPL covered files, the - entire pthreads-win32 source may be freely used and distributed. - - - -General Copyleft and License info ---------------------------------- - - For general information on Copylefts, see: - - http://www.gnu.org/copyleft/ - - For information on GNU Lesser General Public Licenses, see: - - http://www.gnu.org/copyleft/lesser.html - http://www.gnu.org/copyleft/lesser.txt - - -Why pthreads-win32 did not use the GNU General Public License -------------------------------------------------------------- - - The goal of the pthreads-win32 project has been to - provide a quality and complete implementation of the POSIX - threads API for Microsoft Windows within the limits imposed - by virtue of it being a stand-alone library and not - linked directly to other POSIX compliant libraries. For - example, some functions and features, such as those based - on POSIX signals, are missing. - - Pthreads-win32 is a library, available in several different - versions depending on supported compilers, and may be used - as a dynamically linked module or a statically linked set of - binary modules. It is not an application on it's own. - - It was fully intended that pthreads-win32 be usable with - commercial software not covered by either the GPL or the LGPL - licenses. Pthreads-win32 has many contributors to it's - code base, many of whom have done so because they have - used the library in commercial or proprietry software - projects. - - Releasing pthreads-win32 under the LGPL ensures that the - library can be used widely, while at the same time ensures - that bug fixes and improvements to the pthreads-win32 code - itself is returned to benefit all current and future users - of the library. - - Although pthreads-win32 makes it possible for applications - that use POSIX threads to be ported to Win32 platforms, the - broader goal of the project is to encourage the use of open - standards, and in particular, to make it just a little easier - for developers writing Win32 applications to consider - widening the potential market for their products. diff --git a/platform/win32/msvc/external/pthreads.2/COPYING.LIB b/platform/win32/msvc/external/pthreads.2/COPYING.LIB deleted file mode 100644 index cbee875ba6d..00000000000 --- a/platform/win32/msvc/external/pthreads.2/COPYING.LIB +++ /dev/null @@ -1,504 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - <one line to give the library's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -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/platform/win32/msvc/external/pthreads.2/ChangeLog b/platform/win32/msvc/external/pthreads.2/ChangeLog deleted file mode 100644 index 7c6ba3956f7..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ChangeLog +++ /dev/null @@ -1,5211 +0,0 @@ -2012-03-18 Ross Johnson <ross dot johnson at homemail dot com dot au> - - * create.c (pthread_create): add __cdecl attribute to thread routine - arg - * implement.h (pthread_key_t): add __cdecl attribute to destructor - element - (ThreadParms): likewise for start element - * pthread.h (pthread_create): add __cdecl to prototype start arg - (pthread_once): likewise for init_routine arg - (pthread_key_create): likewise for destructor arg - (ptw32_cleanup_push): replace type of routine arg with previously - defined ptw32_cleanup_callback_t - * pthread_key_create.c: add __cdecl attribute to destructor arg - * pthread_once.c: add __cdecl attribute to init_routine arg - * ptw32_threadStart.c (start): add __cdecl to start variable type - - -2011-07-06 Ross Johnson <ross dot johnson at homemail dot com dot au> - - * pthread_cond_wait.c (pragma inline_depth): this is almost redundant - now nevertheless fixed thei controlling MSC_VER from "< 800" to - "< 1400" (i.e. any prior to VC++ 8.0). - * pthread_once.ci (pragma inline_depth): Likewise. - * pthread_rwlock_timedwrlock.ci (pragma inline_depth): Likewise. - * pthread_rwlock_wrlock.ci (pragma inline_depth): Likewise. - * sem_timedwait.ci (pragma inline_depth): Likewise. - * sem_wait.ci (pragma inline_depth): Likewise. - -2011-07-05 Ross Johnson <ross dot johnson at homemail dot com dot au> - - * pthread_win32_attach_detach_np.c: Use strncat_s if available - to removei a compile warning; MingW supports this routine but we - continue to use strncat anyway there because it is secure if - given the correct parameters; fix strncat param 3 to avoid - buffer overrun exploitation potential. - -2011-07-03 Ross Johnson <ross dot johnson at homemail dot com dot au> - - * pthread_spin_unlock.c (EPERM): Return success if unlocking a lock - that is not locked, because single CPU machines wrap a - PTHREAD_MUTEX_NORMAL mutex, which returns success in this case. - * pthread_win32_attach_detach_np.c (QUSEREX.DLL): Load from an - absolute path only which must be the Windows System folder. - -2011-07-03 Daniel Richard G. <skunk at iskunk dot org> - - * Makefile (_WIN32_WINNT): Removed; duplicate definition in - implement.h; more cleanup and enhancements. - -2011-07-02 Daniel Richard G. <skunk at iskunk dot org> - - * Makefile: Cleanups and implovements. - * ptw32_MCS_locks.c: Casting fixes. - * implement.h: Interlocked call and argument casting macro fixes - to support older and newer build environments. - -2011-07-01 Ross Johnson <ross dot johnson at homemail dot com dot au> - - * *.[ch] (PTW32_INTERLOCKED_*): Redo 23 and 64 bit versions of these - macros and re-apply in code to undo the incorrect changes from - 2011-06-29; remove some size_t casts which should not be required - and may be problematic.a - There are now two sets of macros: - PTW32_INTERLOCKED_*_LONG which work only on 32 bit integer variables; - PTW32_INTERLOCKED_*_SIZE which work on size_t integer variables, i.e. - LONG for 32 bit systems and LONGLONG for 64 bit systems. - * implement.h (MCS locks): nextFlag and waitFlag are now HANDLE type. - * ptw32_MCS_locks.c: Likewise. - * pthread.h (#include <setjmp.h>): Removed. - * ptw32_throw.c (#include <setjmp.h>): Added. - * ptw32_threadStart.c (#include <setjmp.h>): Added. - * implement.h (#include <setjmp.h>): Added. - -2011-06-30 Ross Johnson <ross dot johnson at homemail dot com dot au> - - * pthread_once.c: Tighten 'if' statement casting; fix interlocked - pointer cast for 64 bit compatibility (missed yesterday); remove - the superfluous static cleanup routine and call the release routine - directly if popped. - * create.c (stackSize): Now type size_t. - * pthread.h (struct ptw32_thread_t_): Rearrange to fix element alignments. - -2011-06-29 Daniel Richard G. <skunk at iskunk dot org> - - * ptw32_relmillisecs.c (ftime): - _ftime64_s() is only available in MSVC 2005 or later; - _ftime64() is available in MinGW or MSVC 2002 or later; - _ftime() is always available. - * pthread.h (long long): Not defined in older MSVC 6. - * implement.h (long long): Likewise. - * pthread_getunique_np.c (long long): Likewise. - -2011-06-29 Ross Johnson <ross dot johnson at homemail dot com dot au> - - * *.[ch] (PTW32_INTERLOCKED_*): These macros should now work for - both 32 and 64 bit builds. The MingW versions are all inlined asm - while the MSVC versions expand to their Interlocked* or Interlocked*64 - counterparts appropriately. The argument type have also been changed - to cast to the appropriate value or pointer size for the architecture. - -2011-05-29 Ross Johnson <ross dot johnson at homemail dot com dot au> - - * *.[ch] (#ifdef): Extended cleanup to whole project. - -2011-05-29 Daniel Richard G. <skunk at iskunk dot org> - - * Makefile (CC): Define CC to allow use of other compatible - compilers such as the Intel compilter icl. - * implement.h (#if): Fix forms like #if HAVE_SOMETHING. - * pthread.h: Likewise. - * sched.h: Likewise; PTW32_LEVEL_* becomes PTW32_SCHED_LEVEL_*. - * semaphore.h: Likewise. - -2011-05-11 Ross Johnson <ross.johnson at homemail.com.au> - - * ptw32_callUserDestroyRoutines.c (terminate): Altered includes - to match ptw32_threadStart.c. - * GNUmakefile (GCE-inlined-debug, DOPT): Fixed. - -2011-04-31 Ross Johnson <ross.johnson at homemail.com.au> - - * (robust mutexes): Added this API. The API is not - mandatory for implementations that don't support PROCESS_SHARED - mutexes, nevertheless it was considered useful both functionally - and for source-level compatibility. - -2011-03-26 Ross Johnson <ross.johnson at homemail.com.au> - - * pthread_getunique_np.c: New non-POSIX interface for compatibility - with some other implementations; returns a 64 bit sequence number - that is unique to each thread in the process. - * pthread.h (pthread_getunique_np): Added. - * global.c: Add global sequence counter for above. - * implement.h: Likewise. - -2011-03-25 Ross Johnson <ross.johnson at homemail.com.au> - - * (cancelLock): Convert to an MCS lock and rename to stateLock. - * (threadLock): Likewise. - * (keyLock): Likewise. - * pthread_mutex*.c: First working robust mutexes. - -2011-03-11 Ross Johnson <ross.johnson at homemail.com.au> - - * implement.h (PTW32_INTERLOCKED_*CREMENT macros): increment/decrement - using ++/-- instead of add/subtract 1. - * ptw32_MCS_lock.c: Make casts consistent. - -2011-03-09 Ross Johnson <ross.johnson at homemail.com.au> - - * implement.h (ptw32_thread_t_): Add process unique sequence number. - * global.c: Replace global Critical Section objects with MCS - queue locks. - * implement.h: Likewise. - * pthread_cond_destroy.c: Likewise. - * pthread_cond_init.c: Likewise. - * pthread_detach.c: Likewise. - * pthread_join.c: Likewise. - * pthread_kill.c: Likewise. - * pthread_mutex_destroy.c: Likewise. - * pthread_rwlock_destroy.c: Likewise. - * pthread_spin_destroy.c: Likewise. - * pthread_timechange_handler_np.c: Likewise. - * ptw32_cond_check_need_init.c: Likewise. - * ptw32_mutex_check_need_init.c: Likewise. - * ptw32_processInitialize.c: Likewise. - * ptw32_processTerminate.c: Likewise. - * ptw32_reuse.c: Likewise. - * ptw32_rwlock_check_need_init.c: Likewise. - * ptw32_spinlock_check_need_init.c: Likewise. - -2011-03-06 Ross Johnson <ross.johnson at homemail.com.au> - - * several (MINGW64): Cast and call fixups for 64 bit compatibility; - clean build via x86_64-w64-mingw32 cross toolchain on Linux i686 - targeting x86_64 win64. - * ptw32_threadStart.c (ptw32_threadStart): Routine no longer attempts - to pass [unexpected C++] exceptions out of scope but ends the thread - normally setting EINTR as the exit status. - * ptw32_throw.c: Fix C++ exception throwing warnings; ignore - informational warning. - * implement.h: Likewise with the corresponding header definition. - -2011-03-04 Ross Johnson <ross.johnson at homemail.com.au> - - * implement.h (PTW32_INTERLOCKED_*): Mingw32 does not provide - the __sync_* intrinsics so implemented them here as macro - assembler routines. MSVS Interlocked* are emmitted as intrinsics - wherever possible, so we want mingw to match it; Extended to - include all interlocked routines used by the library; implemented - x86_64 versions also. - * ptw32_InterlockedCompareExchange.c: No code remaining here. - * ptw32_MCS_lock.c: Converted interlocked calls to use new macros. - * pthread_barrier_wait.c: Likewise. - * pthread_once.c: Likewise. - * ptw32_MCS_lock.c (ptw32_mcs_node_substitute): Name changed to - ptw32_mcs_node_transfer. - -2011-02-28 Ross Johnson <ross.johnson at homemail.com.au> - - * ptw32_relmillisecs.c: If possible, use _ftime64_s or _ftime64 - before resorting to _ftime. - -2011-02-27 Ross Johnson <ross.johnson at homemail.com.au> - - * sched_setscheduler.c: Ensure the handle is closed after use. - * sched_getscheduler.c: Likewise. - * pthread.h: Remove POSIX compatibility macros; don't define - timespec if already defined. - * context.h: Changes for 64 bit. - * pthread_cancel.c: Likewise. - * pthread_exit.c: Likewise. - * pthread_spin_destroy.c: Likewise. - * pthread_timechange_handler_np.c: Likewise. - * ptw32_MCS_lock.c: Likewise; some of these changes may - not be compatible with pre Windows 2000 systems; reverse the order of - the includes. - * ptw32_threadStart.c: Likewise. - * ptw32_throw.c: Likewise. - -2011-02-13 Ross Johnson <ross.johnson at homemail.com.au> - - * pthread_self: Add comment re returning 'nil' value to - indicate failure only to win32 threads that call us. - * pthread_attr_setstackaddr: Fix comments; note this - function and it's compliment are now removed from SUSv4. - -2011-02-12 Ross Johnson <ross.johnson at homemail.com.au> - - README.NONPORTABLE: Record a description of an obvious - method for nulling/comparing/hashing pthread_t using a - union; plus and investigation of a change of type for - pthread_t (to a union) to neutralise any padding bits and - bytes if they occur in pthread_t (the current pthread_t struct - does not contain padding AFAIK, but porting the library to a - future architecture may introduce them). Padding affects - byte-by-byte copies and compare operations. - -2010-11-16 Ross Johnson <ross.johnson at homemail.com.au> - - * ChangeLog: Add this entry ;-) - Restore entries from 2007 through 2009 that went missing - at the last update. - -2010-06-19 Ross Johnson <ross.johnson at homemail.com.au> - - * ptw32_MCS_lock.c (ptw32_mcs_node_substitute): Fix variable - names to avoid using C++ keyword ("new"). - * implement.h (ptw32_mcs_node_substitute): Likewise. - * pthread_barrier_wait.c: Fix signed/unsigned comparison warning. - -2010-06-18 Ramiro Polla <ramiro.polla at gmail.com > - - * autostatic.c: New file; call pthread_win32_process_*() - libary init/cleanup routines automatically on application start - when statically linked. - * pthread.c (autostatic.c): Included. - * pthread.h (declspec): Remove import/export defines if compiler - is MINGW. - * sched.h (declspec): Likewise. - * semaphore.h (declspec): Likewise. - * need_errno.h (declspec): Likewise. - * Makefile (autostatic.obj): Add for small static builds. - * GNUmakefile (autostatic.o): Likewise. - * NEWS (Version 2.9.0): Add changes. - * README.NONPORTABLE (pthread_win32_process_*): Update - description. - -2010-06-15 Ramiro Polla <ramiro.polla at gmail.com > - - * Makefile: Remove linkage with the winsock library by default. - * GNUmakefile: Likewise. - * pthread_getspecific.c: Likewise by removing calls to WSA - functions. - * config.h (RETAIN_WSALASTERROR): Can be defined if necessary. - -2010-01-26 Ross Johnson <ross.johnson at homemail.com.au> - - * ptw32_MCS_lock.c (ptw32_mcs_node_substitute): New routine - to allow relocating the lock owners thread-local node to somewhere - else, e.g. to global space so that another thread can release the - lock. Used in pthread_barrier_wait. - (ptw32_mcs_lock_try_acquire): New routine. - * pthread_barrier_init: Only one semaphore is used now. - * pthread_barrier_wait: Added an MCS guard lock with the last thread - to leave the barrier releasing the lock. This removes a deadlock bug - observed when there are greater than barrier-count threads - attempting to cross. - * pthread_barrier_destroy: Added an MCS guard lock. - -2009-03-03 Stephan O'Farrill <stephan dot ofarrill at gmail dot com> - - * pthread_attr_getschedpolicy.c: Add "const" to function parameter - in accordance with SUSv3 (POSIX). - * pthread_attr_getinheritsched.c: Likewise. - * pthread_mutexattr_gettype.c: Likewise. - -2008-06-06 Robert Kindred <RKindred at SwRI dot edu> - - * ptw32_throw.c (ptw32_throw): Remove possible reference to NULL - pointer. (At the same time made the switch block conditionally - included only if exitCode is needed - RPJ.) - * pthread_testcancel.c (pthread_testcancel): Remove duplicate and - misplaced pthread_mutex_unlock(). - -2008-02-21 Sebastian Gottschalk <seppig_relay at gmx dot de> - - * pthread_attr_getdetachstate.c (pthread_attr_getdetachstate): - Remove potential and superfluous null pointer assignment. - -2007-11-22 Ivan Pizhenko <ivanp4 at ua dot fm> - - * pthread.h (gmtime_r): gmtime returns 0 if tm represents a time - prior to 1/1/1970. Notice this to prevent raising an exception. - * pthread.h (localtime_r): Likewise for localtime. - -2007-07-14 Marcel Ruff <mr at marcelruff dot info> - - * errno.c (_errno): Fix test for pthread_self() success. - * need_errno.h: Remove unintentional line wrap from #if line. - -2007-07-14 Mike Romanchuk <mromanchuk at empirix dot com> - - * pthread.h (timespec): Fix tv_sec type. - -2007-01-07 Sinan Kaya <sinan.kaya at siemens dot com> - - * need_errno.h: Fix declaration of _errno - the local version of - _errno() is used, e.g. by WinCE. - -2007-01-06 Ross Johnson <ross.johnson at homemail dot com dot au> - - * ptw32_semwait.c: Add check for invalid sem_t after acquiring the - sem_t state guard mutex and before affecting changes to sema state. - -2007-01-06 Marcel Ruff <mr at marcelruff dot info> - - * error.c: Fix reference to pthread handle exitStatus member for - builds that use NEED_ERRNO (i.e. WINCE). - * context.h: Add support for ARM processor (WinCE). - * mutex.c (process.h): Exclude for WINCE. - * create.c: Likewise. - * exit.c: Likewise. - * implement.h: Likewise. - * pthread_detach.c (signal.h): Exclude for WINCE. - * pthread_join.c: Likewise. - * pthread_kill.c: Likewise. - * pthread_rwlock_init.c (errno.h): Remove - included by pthread.h. - * pthread_rwlock_destroy.c: Likewise. - * pthread_rwlock_rdlock.c: Likewise. - * pthread_rwlock_timedrdlock.c: Likewise. - * pthread_rwlock_timedwrlock.c: Likewise. - * pthread_rwlock_tryrdlock.c: Likewise. - * pthread_rwlock_trywrlock.c: likewise. - * pthread_rwlock_unlock.c: Likewise. - * pthread_rwlock_wrlock.c: Likewise. - * pthread_rwlockattr_destroy.c: Likewise. - * pthread_rwlockattr_getpshared.c: Likewise. - * pthread_rwlockattr_init.c: Likewise. - * pthread_rwlockattr_setpshared.c: Likewise. - -2007-01-06 Romano Paolo Tenca <rotenca at telvia dot it> - - * pthread_cond_destroy.c: Replace sem_wait() with non-cancelable - ptw32_semwait() since pthread_cond_destroy() is not a cancelation - point. - * implement.h (ptw32_spinlock_check_need_init): Add prototype. - * ptw32_MCS_lock.c: Reverse order of includes. - -2007-01-06 Eric Berge <eric dot berge at quantum dot com> - - * pthread_cond_destroy.c: Add LeaveCriticalSection before returning - after errors. - -2007-01-04 Ross Johnson <ross.johnson at homemail dot com dot au> - - * ptw32_InterlockedCompareExchange.c: Conditionally skip for - Win64 as not required. - * pthread_win32_attach_detach_np.c (pthread_win32_process_attach_np): - Test for InterlockedCompareExchange is not required for Win64. - * context.h: New file. Included by pthread_cancel.h and any tests - that need it (e.g. context1.c). - * pthread_cancel.c: Architecture-dependent context macros moved - to context.h. - -2007-01-04 Kip Streithorst <KSTREITH at ball dot com> - - * implement.h (PTW32_INTERLOCKED_COMPARE_EXCHANGE): Add Win64 - support. - -2006-12-20 Ross Johnson <ross.johnson at homemail.com.au> - - * sem_destroy.c: Fix the race involving invalidation of the sema; - fix incorrect return of EBUSY resulting from the mutex trylock - on the private mutex guard. - * sem_wait.c: Add check for invalid sem_t after acquiring the - sem_t state guard mutex and before affecting changes to sema state. - * sem_trywait.c: Likewise. - * sem_timedwait.c: Likewise. - * sem_getvalue.c: Likewise. - * sem_post.c: Similar. - * sem_post_multiple.c: Likewise. - * sem_init.c: Set max Win32 semaphore count to SEM_VALUE_MAX (was - _POSIX_SEM_VALUE_MAX, which is a lower value - the minimum). - - * pthread_win32_attach_detach_np.c (pthread_win32_process_attach_np): - Load COREDLL.DLL under WINCE to check existence of - InterlockedCompareExchange() routine. This used to be done to test - for TryEnterCriticalSection() but was removed when this was no - longer needed. - -2006-01-25 Prashant Thakre <prashant.thakre at gmail.com> - - * pthread_cancel.c: Added _M_IA64 register context support. - -2005-05-13 Ross Johnson <ross at callisto.canberra.edu.au> - - * pthread_kill.c (pthread_kill): Remove check for Win32 thread - priority (to confirm HANDLE validity). Useless since thread HANDLEs - a not recycle-unique. - -2005-05-30 Vladimir Kliatchko <vladimir at kliatchko.com> - - * pthread_once.c: Re-implement using an MCS queue-based lock. The form - of pthread_once is as proposed by Alexander Terekhov (see entry of - 2005-03-13). The MCS lock implementation does not require a unique - 'name' to identify the lock between threads. Attempts to get the Event - or Semaphore based versions of pthread_once to a satisfactory level - of robustness have thus far failed. The last problem (avoiding races - involving non recycle-unique Win32 HANDLEs) was giving everyone - grey hair trying to solve it. - - * ptw32_MCS_lock.c: New MCS queue-based lock implementation. These - locks are efficient: they have very low overhead in the uncontended case; - are efficient in contention and minimise cache-coherence updates in - managing the user level FIFO queue; do not require an ABI change in the - library. - -2005-05-27 Alexander Gottwald <alexander.gottwald at s1999.tu-chemnitz.de> - - * pthread.h: Some things, like HANDLE, were only defined if - PTW32_LEVEL was >= 3. They should always be defined. - -2005-05-25 Vladimir Kliatchko <vladimir at kliatchko.com> - - * pthread_once.c: Eliminate all priority operations and other - complexity by replacing the event with a semaphore. The advantage - of the change is the ability to release just one waiter if the - init_routine thread is cancelled yet still release all waiters when - done. Simplify once_control state checks to improve efficiency - further. - -2005-05-24 Mikael Magnusson <mikaelmagnusson at glocalnet.net> - - * GNUmakefile: Patched to allow cross-compile with mingw32 on Linux. - It uses macros instead of referencing dlltool, gcc and g++ directly; - added a call to ranlib. For example the GC static library can be - built with: - make CC=i586-mingw32msvc-gcc RC=i586-mingw32msvc-windres \ - RANLIB=i586-mingw32msvc-ranlib clean GC-static - -2005-05-13 Ross Johnson <ross at callisto.canberra.edu.au> - - * pthread_win32_attach_detach_np.c (pthread_win32_thread_detach_np): - Move on-exit-only stuff from ptw32_threadDestroy() to here. - * ptw32_threadDestroy.c: It's purpose is now only to reclaim thread - resources for detached threads, or via pthread_join() or - pthread_detach() on joinable threads. - * ptw32_threadStart.c: Calling user destruct routines has moved to - pthread_win32_thread_detach_np(); call pthread_win32_thread_detach_np() - directly if statically linking, otherwise do so via dllMain; store - thread return value in thread struct for all cases, including - cancellation and exception exits; thread abnormal exits go via - pthread_win32_thread_detach_np. - * pthread_join.c (pthread_join): Don't try to get return code from - Win32 thread - always get it from he thread struct. - * pthread_detach.c (pthread_detach): reduce extent of the thread - existence check since we now don't care if the Win32 thread HANDLE has - been closed; reclaim thread resources if the thread has exited already. - * ptw32_throw.c (ptw32_throw): For Win32 threads that are not implicit, - only Call thread cleanup if statically linking, otherwise leave it to - dllMain. - * sem_post.c (_POSIX_SEM_VALUE_MAX): Change to SEM_VALUE_MAX. - * sem_post_multiple.c: Likewise. - * sem_init.c: Likewise. - -2005-05-10 Ross Johnson <ross at callisto.canberra.edu.au> - - * pthread_join.c (pthread_join): Add missing check for thread ID - reference count in thread existence test; reduce extent of the - existence test since we don't care if the Win32 thread HANDLE has - been closed. - -2005-05-09 Ross Johnson <ross at callisto.canberra.edu.au> - - * ptw32_callUserDestroyRoutines.c: Run destructor process (i.e. - loop over all keys calling destructors) up to - PTHREAD_DESTRUCTOR_ITERATIONS times if TSD value isn't NULL yet; - modify assoc management. - * pthread_key_delete.c: Modify assoc management. - * ptw32_tkAssocDestroy.c: Fix error in assoc removal from chains. - * pthread.h - (_POSIX_THREAD_DESTRUCTOR_ITERATIONS): Define to value specified by - POSIX. - (_POSIX_THREAD_KEYS_MAX): Define to value specified by POSIX. - (PTHREAD_KEYS_MAX): Redefine [upward] to minimum required by POSIX. - (SEM_NSEMS_MAX): Define to implementation value. - (SEM_VALUE_MAX): Define to implementation value. - (_POSIX_SEM_NSEMS_MAX): Redefine to value specified by POSIX. - (_POSIX_SEM_VALUE_MAX): Redefine to value specified by POSIX. - -2005-05-06 Ross Johnson <ross at callisto.canberra.edu.au> - - * signal.c (sigwait): Add a cancellation point to this otherwise - no-op. - * sem_init.c (sem_init): Check for and return ERANGE error. - * sem_post.c (sem_post): Likewise. - * sem_post_multiple.c (sem_post_multiple): Likewise. - * manual (directory): Added; see ChangeLog inside. - -2005-05-02 Ross Johnson <ross at callisto.canberra.edu.au> - - * implement.h (struct pthread_key_t_): Change threadsLock to keyLock - so as not to be confused with the per thread lock 'threadlock'; - change all references to it. - * implement.h (struct ThreadKeyAssoc): Remove lock; add prevKey - and prevThread pointers; re-implemented all routines that use this - struct. The effect of this is to save one handle per association, - which could potentially equal the number of keys multiplied by the - number of threads, accumulating over time - and to free the - association memory as soon as it is no longer referenced by either - the key or the thread. Previously, the handle and memory were - released only after BOTH key and thread no longer referenced the - association. That is, often no association resources were released - until the process itself exited. In addition, at least one race - condition has been removed - where two threads could attempt to - release the association resources simultaneously - one via - ptw32_callUserDestroyRoutines and the other via - pthread_key_delete. - - thanks to Richard Hughes at Aculab for discovering the problem. - * pthread_key_create.c: See above. - * pthread_key_delete.c: See above. - * pthread_setspecific.c: See above. - * ptw32_callUserDestroyRoutines.c: See above. - * ptw32_tkAssocCreate.c: See above. - * ptw32_tkAssocDestroy.c: See above. - -2005-04-27 Ross Johnson <ross at callisto.canberra.edu.au> - - * sem_wait.c (ptw32_sem_wait_cleanup): after cancellation re-attempt - to acquire the semaphore to avoid a race with a late sem_post. - * sem_timedwait.c: Modify comments. - -2005-04-25 Ross Johnson <ross at callisto.canberra.edu.au> - - * ptw32_relmillisecs.c: New module; converts future abstime to - milliseconds relative to 'now'. - * pthread_mutex_timedlock.c: Use new ptw32_relmillisecs routine in - place of internal code; remove the NEED_SEM code - this routine is now - implemented for builds that define NEED_SEM (WinCE etc) - * sem_timedwait.c: Likewise; after timeout or cancellation, - re-attempt to acquire the semaphore in case one has been posted since - the timeout/cancel occurred. Thanks to Stefan Mueller. - * Makefile: Add ptw32_relmillisecs.c module; remove - ptw32_{in,de}crease_semaphore.c modules. - * GNUmakefile: Likewise. - * Bmakefile: Likewise. - - * sem_init.c: Re-write the NEED_SEM code to be consistent with the - non-NEED_SEM code, but retaining use of an event in place of the w32 sema - for w32 systems that don't include semaphores (WinCE); - the NEED_SEM versions of semaphores has been broken for a long time but is - now fixed and supports all of the same routines as the non-NEED_SEM case. - * sem_destroy.c: Likewise. - * sem_wait.c: Likewise. - * sem_post.c: Likewise. - * sem_post_multple.c: Likewise. - * implement.h: Likewise. - * sem_timedwait.c: Likewise; this routine is now - implemented for builds that define NEED_SEM (WinCE etc). - * sem_trywait.c: Likewise. - * sem_getvalue.c: Likewise. - - * pthread_once.c: Yet more changes, reverting closer to Gottlob Frege's - first design, but retaining cancellation, priority boosting, and adding - preservation of W32 error codes to make pthread_once transparent to - GetLastError. - -2005-04-11 Ross Johnson <ross at callisto.canberra.edu.au> - - * pthread_once.c (pthread_once): Added priority boosting to - solve starvation problem after once_routine cancellation. - See notes in file. - -2005-04-06 Kevin Lussier <Kevin at codegreennetworks.com> - - * Makefile: Added debug targets for all versions of the library. - -2005-04-01 Ross Johnson <ross at callisto.canberra.edu.au> - - * GNUmakefile: Add target to build libpthreadGC1.a as a static link - library. - * Makefile: Likewise for pthreadGC1.lib. - -2005-04-01 Kevin Lussier <Kevin at codegreennetworks.com> - - * sem_timedwait.c (sem_timedwait): Increase size of temp variables to - avoid int overflows for large timeout values. - * implement.h (int64_t): Include or define. - -2005-03-31 Dimitar Panayotov <develop at mail.bg>^M - - * pthread.h: Fix conditional defines for static linking. - * sched.h: Liekwise. - * semaphore.h: Likewise. - * dll.c (PTW32_STATIC_LIB): Module is conditionally included - in the build. - -2005-03-16 Ross Johnson <ross at callisto.canberra.edu.au>^M - - * pthread_setcancelstate.c: Undo the last change. - -2005-03-16 Ross Johnson <ross at callisto.canberra.edu.au>^M - - * pthread_setcancelstate.c: Don't check for an async cancel event - if the library is using alertable async cancel.. - -2005-03-14 Ross Johnson <ross at callisto.canberra.edu.au> - - * pthread_once.c (pthread_once): Downgrade interlocked operations to simple - memory operations where these are protected by the critical section; edit - comments. - -2005-03-13 Ross Johnson <rpj at callisto.canberra.edu.au> - - * pthread_once.c (pthread_once): Completely redesigned; a change was - required to the ABI (pthread_once_t_), and resulting in a version - compatibility index increment. - - NOTES: - The design (based on pseudo code contributed by Gottlob Frege) avoids - creating a kernel object if there is no contention. See URL for details:- - http://sources.redhat.com/ml/pthreads-win32/2005/msg00029.html - This uses late initialisation similar to the technique already used for - pthreads-win32 mutexes and semaphores (from Alexander Terekhov). - - The subsequent cancelation cleanup additions (by rpj) could not be implemented - without sacrificing some of the efficiency in Gottlob's design. In particular, - although each once_control uses it's own event to block on, a global CS is - required to manage it - since the event must be either re-usable or - re-creatable under cancelation. This is not needed in the non-cancelable - design because it is able to mark the event as closed (forever). - - When uncontested, a CS operation is equivalent to an Interlocked operation - in speed. So, in the final design with cancelability, an uncontested - once_control operation involves a minimum of five interlocked operations - (including the LeaveCS operation). - - ALTERNATIVES: - An alternative design from Alexander Terekhov proposed using a named mutex, - as sketched below:- - - if (!once_control) { // May be in TLS - named_mutex::guard guard(&once_control2); - if (!once_control2) { - <init> - once_control2 = true; - } - once_control = true; - } - - A more detailed description of this can be found here:- - http://groups.yahoo.com/group/boost/message/15442 - - [Although the definition of a suitable PTHREAD_ONCE_INIT precludes use of the - TLS located flag, this is not critical.] - - There are three primary concerns though:- - 1) The [named] mutex is 'created' even in the uncontended case. - 2) A system wide unique name must be generated. - 3) Win32 mutexes are VERY slow even in the uncontended case. An uncontested - Win32 mutex lock operation can be 50 (or more) times slower than an - uncontested EnterCS operation. - - Ultimately, the named mutex trick is making use of the global locks maintained - by the kernel. - - * pthread.h (pthread_once_t_): One flag and an event HANDLE added. - (PTHREAD_ONCE_INIT): Additional values included. - -2005-03-08 Ross Johnson <rpj at callisto.canberra.edu.au> - - * pthread_once.c (pthread_once): Redesigned to elliminate potential - starvation problem. - - reported by Gottlob Frege <gottlobfrege at gmail.com> - - * ptw32_threadDestroy.c (ptw32_threadDestroy): Implicit threads were - not closing their Win32 thread duplicate handle. - - reported by Dmitrii Semii <bogolt at gmail.com> - -2005-01-25 Ralf Kubis <RKubis at mc.com> - - * Attempted acquisition of recursive mutex was causing waiting - threads to not be woken when the mutex is released. - - * GNUmakefile (GCE): Generate correct version resource comments. - -2005-01-01 Konstantin Voronkov <beowinkle at yahoo.com> - - * pthread_mutex_lock.c (pthread_mutex_lock): The new atomic exchange - mutex algorithm is known to allow a thread to steal the lock off - FIFO waiting threads. The next waiting FIFO thread gets a spurious - wake-up and must attempt to re-acquire the lock. The woken thread - was setting itself as the mutex's owner before the re-acquisition. - -2004-11-22 Ross Johnson <rpj at callisto.canberra.edu.au> - - * pthread_cond_wait.c (ptw32_cond_wait_cleanup): Undo change - from 2004-11-02. - * Makefile (DLL_VER): Added for DLL naming suffix - see README. - * GNUmakefile (DLL_VER): Likewise. - * Wmakefile (DLL_VER): Likewise. - * Bmakefile (DLL_VER): Likewise. - * pthread.dsw (version.rc): Added to MSVS workspace. - -2004-11-20 Boudewijn Dekker <b.dekker at ellipsis.nl> - - * pthread_getspecific.c (pthread_getspecific): Check for - invalid (NULL) key argument. - -2004-11-19 Ross Johnson <rpj at callisto.canberra.edu.au> - - * config.h (PTW32_THREAD_ID_REUSE_INCREMENT): Added to allow - building the library for either unique thread IDs like Solaris - or non-unique thread IDs like Linux; allows application developers - to override the library's default insensitivity to some apps - that may not be strictly POSIX compliant. - * version.rc: New resource module to encode version information - within the DLL. - * pthread.h: Added PTW32_VERSION* defines and grouped sections - required by resource compiler together; bulk of file is skipped - if RC_INVOKED. Defined some error numbers and other names for - Borland compiler. - -2004-11-02 Ross Johnson <rpj at callisto.canberra.edu.au> - - * pthread_cond_wait.c (ptw32_cond_wait_cleanup): Lock CV mutex at - start of cleanup handler rather than at the end. - * implement.h (PTW32_THREAD_REUSE_EMPTY): Renamed from *_BOTTOM. - (ptw32_threadReuseBottom): New global variable. - * global.c (ptw32_threadReuseBottom): Declare new variable. - * ptw32_reuse.c (ptw32_reuse): Change reuse LIFO stack to LILO queue - to more evenly distribute use of reusable thread IDs; use renamed - PTW32_THREAD_REUSE_EMPTY. - * ptw32_processTerminate.c (ptw2_processTerminate): Use renamed - PTW32_THREAD_REUSE_EMPTY. - -2004-10-31 Ross Johnson <rpj at callisto.canberra.edu.au> - - * implement.h (PThreadState): Add new state value - 'PThreadStateCancelPending'. - * pthread_testcancel.c (pthread_testcancel): Use new thread - 'PThreadStateCancelPending' state as short cut to avoid entering - kernel space via WaitForSingleObject() call. This was obviated - by user space sema acquisition in sem_wait() and sem_timedwait(), - which are also cancelation points. A call to pthread_testcancel() - was required, which introduced a kernel call, effectively nullifying - any gains made by the user space sem acquisition checks. - * pthread_cancel.c (pthread_cancel): Set new thread - 'PThreadStateCancelPending' state. - -2004-10-29 Ross Johnson <rpj at callisto.canberra.edu.au> - - * implement.h (pthread_t): Renamed to ptw32_thread_t; struct contains - all thread state. - * pthread.h (ptw32_handle_t): New general purpose struct to serve - as a handle for various reusable object IDs - currently only used - by pthread_t; contains a pointer to ptw32_thread_t (thread state) - and a general purpose uint for use as a reuse counter or flags etc. - (pthread_t): typedef'ed to ptw32_handle_t; the uint is the reuse - counter that allows the library to maintain unique POSIX thread IDs. - When the pthread struct reuse stack was introduced, threads would - often acquire an identical ID to a previously destroyed thread. The - same was true for the pre-reuse stack library, by virtue of pthread_t - being the address of the thread struct. The new pthread_t retains - the reuse stack but provides virtually unique thread IDs. - * sem_wait.c (ptw32_sem_wait_cleanup): New routine used for - cancelation cleanup. - * sem_timedwait.c (ptw32_sem_timedwait_cleanup): Likewise. - -2004-10-22 Ross Johnson <rpj at callisto.canberra.edu.au> - - * sem_init.c (sem_init): Introduce a 'lock' element in order to - replace the interlocked operations with conventional serialisation. - This is needed in order to be able to atomically modify the sema - value and perform Win32 sema release operations. Win32 semaphores are - used instead of events in order to support efficient multiple posting. - If the whole modify/release isn't atomic, a race between - sem_timedwait() and sem_post() could result in a release when there is - no waiting semaphore, which would cause too many threads to proceed. - * sem_wait.c (sem_wait): Use new 'lock'element. - * sem_timedwait.c (sem_timedwait): Likewise. - * sem_trywait.c (sem_trywait): Likewise. - * sem_post.c (sem_post): Likewise. - * sem_post_multiple.c (sem_post_multiple): Likewise. - * sem_getvalue.c (sem_getvalue): Likewise. - * ptw32_semwait.c (ptw32_semwait): Likewise. - * sem_destroy.c (sem_destroy): Likewise; also tightened the conditions - for semaphore destruction; in particular, a semaphore will not be - destroyed if it has waiters. - * sem_timedwait.c (sem_timedwait): Added cancel cleanup handler to - restore sema value when cancelled. - * sem_wait.c (sem_wait): Likewise. - -2004-10-21 Ross Johnson <rpj at callisto.canberra.edu.au> - - * pthread_mutex_unlock.c (pthread_mutex_unlock): Must use PulseEvent() - rather than SetEvent() to reset the event if there are no waiters. - -2004-10-19 Ross Johnson <rpj at callisto.canberra.edu.au> - - * sem_init.c (sem_init): New semaphore model based on the same idea - as mutexes, i.e. user space interlocked check to avoid - unnecessarily entering kernel space. Wraps the Win32 semaphore and - keeps it's own counter. Although the motivation to do this has existed - for a long time, credit goes to Alexander Terekhov for providing - the logic. I have deviated slightly from AT's logic to add the waiters - count, which has made the code more complicated by adding cancelation - cleanup. This also appears to have broken the VCE (C++ EH) version of - the library (the same problem as previously reported - see BUGS #2), - only apparently not fixable using the usual workaround, nor by turning - all optimisation off. The GCE version works fine, so it is presumed to - be a bug in MSVC++ 6.0. The cancelation exception is thrown and caught - correctly, but the cleanup class destructor is never called. The failing - test is tests\semaphore4.c. - * sem_wait.c (sem_wait): Implemented user space check model. - * sem_post.c (sem_post): Likewise. - * sem_trywait.c (sem_trywait): Likewise. - * sem_timedwait.c (sem_timedwait): Likewise. - * sem_post_multiple.c (sem_post_multiple): Likewise. - * sem_getvalue.c (sem_getvalue): Likewise. - * ptw32_semwait.c (ptw32_semwait): Likewise. - * implement.h (sem_t_): Add counter element. - -2004-10-15 Ross Johnson <rpj at callisto.canberra.edu.au> - - * implement.h (pthread_mutex_t_): Use an event in place of - the POSIX semaphore. - * pthread_mutex_init.c: Create the event; remove semaphore init. - * pthread_mutex_destroy.c: Delete the event. - * pthread_mutex_lock.c: Replace the semaphore wait with the event wait. - * pthread_mutex_trylock.c: Likewise. - * pthread_mutex_timedlock.c: Likewise. - * pthread_mutex_unlock.c: Set the event. - -2004-10-14 Ross Johnson <rpj at callisto.canberra.edu.au> - - * pthread_mutex_lock.c (pthread_mutex_lock): New algorithm using - Terekhov's xchg based variation of Drepper's cmpxchg model. - Theoretically, xchg uses fewer clock cycles than cmpxchg (using IA-32 - as a reference), however, in my opinion bus locking dominates the - equation on smp systems, so the model with the least number of bus - lock operations in the execution path should win, which is Terekhov's - variant. On IA-32 uni-processor systems, it's faster to use the - CMPXCHG instruction without locking the bus than to use the XCHG - instruction, which always locks the bus. This makes the two variants - equal for the non-contended lock (fast lane) execution path on up - IA-32. Testing shows that the xchg variant is faster on up IA-32 as - well if the test forces higher lock contention frequency, even though - kernel calls should be dominating the times (on up IA-32, both - variants used CMPXCHG instructions and neither locked the bus). - * pthread_mutex_timedlock.c pthread_mutex_timedlock(): Similarly. - * pthread_mutex_trylock.c (pthread_mutex_trylock): Similarly. - * pthread_mutex_unlock.c (pthread_mutex_unlock): Similarly. - * ptw32_InterlockedCompareExchange.c (ptw32_InterlockExchange): New - function. - (PTW32_INTERLOCKED_EXCHANGE): Sets up macro to use inlined - ptw32_InterlockedExchange. - * implement.h (PTW32_INTERLOCKED_EXCHANGE): Set default to - InterlockedExchange(). - * Makefile: Building using /Ob2 so that asm sections within inline - functions are inlined. - -2004-10-08 Ross Johnson <rpj at callisto.canberra.edu.au> - - * pthread_mutex_destroy.c (pthread_mutex_destroy): Critical Section - element is no longer required. - * pthread_mutex_init.c (pthread_mutex_init): Likewise. - * pthread_mutex_lock.c (pthread_mutex_lock): New algorithm following - Drepper's paper at http://people.redhat.com/drepper/futex.pdf, but - using the existing semaphore in place of the futex described in the - paper. Idea suggested by Alexander Terekhov - see: - http://sources.redhat.com/ml/pthreads-win32/2003/msg00108.html - * pthread_mutex_timedlock.c pthread_mutex_timedlock(): Similarly. - * pthread_mutex_trylock.c (pthread_mutex_trylock): Similarly. - * pthread_mutex_unlock.c (pthread_mutex_unlock): Similarly. - * pthread_barrier_wait.c (pthread_barrier_wait): Use inlined version - of InterlockedCompareExchange() if possible - determined at - build-time. - * pthread_spin_destroy.c pthread_spin_destroy(): Likewise. - * pthread_spin_lock.c pthread_spin_lock():Likewise. - * pthread_spin_trylock.c (pthread_spin_trylock):Likewise. - * pthread_spin_unlock.c (pthread_spin_unlock):Likewise. - * ptw32_InterlockedCompareExchange.c: Sets up macro for inlined use. - * implement.h (pthread_mutex_t_): Remove Critical Section element. - (PTW32_INTERLOCKED_COMPARE_EXCHANGE): Set to default non-inlined - version of InterlockedCompareExchange(). - * private.c: Include ptw32_InterlockedCompareExchange.c first for - inlining. - * GNUmakefile: Add commandline option to use inlined - InterlockedCompareExchange(). - * Makefile: Likewise. - -2004-09-27 Ross Johnson <rpj at callisto.canberra.edu.au> - - * pthread_mutex_lock.c (pthread_mutex_lock): Separate - PTHREAD_MUTEX_NORMAL logic since we do not need to keep or check some - state required by other mutex types; do not check mutex pointer arg - for validity - leave this to the system since we are only checking - for NULL pointers. This should improve speed of NORMAL mutexes and - marginally improve speed of other type. - * pthread_mutex_trylock.c (pthread_mutex_trylock): Likewise. - * pthread_mutex_unlock.c (pthread_mutex_unlock): Likewise; also avoid - entering the critical section for the no-waiters case, with approx. - 30% reduction in lock/unlock overhead for this case. - * pthread_mutex_timedlock.c (pthread_mutex_timedlock): Likewise; also - no longer keeps mutex if post-timeout second attempt succeeds - this - will assist applications that wish to impose strict lock deadlines, - rather than simply to escape from frozen locks. - -2004-09-09 Tristan Savatier <tristan at mpegtv.com> - * pthread.h (struct pthread_once_t_): Qualify the 'done' element - as 'volatile'. - * pthread_once.c: Concerned about possible race condition, - specifically on MPU systems re concurrent access to multibyte types. - [Maintainer's note: the race condition is harmless on SPU systems - and only a problem on MPU systems if concurrent access results in an - exception (presumably generated by a hardware interrupt). There are - other instances of similar harmless race conditions that have not - been identified as issues.] - -2004-09-09 Ross Johnson <rpj at callisto.canberra.edu.au> - - * pthread.h: Declare additional types as volatile. - -2004-08-27 Ross Johnson <rpj at callisto.canberra.edu.au> - - * pthread_barrier_wait.c (pthread_barrier_wait): Remove excessive code - by substituting the internal non-cancelable version of sem_wait - (ptw32_semwait). - -2004-08-25 Ross Johnson <rpj at callisto.canberra.edu.au> - - * pthread_join.c (pthread_join): Rewrite and re-order the conditional - tests in an attempt to improve efficiency and remove a race - condition. - -2004-08-23 Ross Johnson <rpj at callisto.canberra.edu.au> - - * create.c (pthread_create): Don't create a thread if the thread - id pointer location (first arg) is inaccessible. A memory - protection fault will result if the thread id arg isn't an accessible - location. This is consistent with GNU/Linux but different to - Solaris or MKS (and possibly others), which accept NULL as meaning - 'don't return the created thread's ID'. Applications that run - using pthreads-win32 will run on all other POSIX threads - implementations, at least w.r.t. this feature. - - It was decided not to copy the Solaris et al behaviour because, - although it would have simplified some application porting (but only - from Solaris to Windows), the feature is not technically necessary, - and the alternative segfault behaviour helps avoid buggy application - code. - -2004-07-01 Anuj Goyal <anuj.goyal at gmail.com> - - * builddmc.bat: New; Windows bat file to build the library. - * config.h (__DMC__): Support for Digital Mars compiler. - * create.c (__DMC__): Likewise. - * pthread_exit.c (__DMC__): Likewise. - * pthread_join.c (__DMC__): Likewise. - * ptw32_threadDestroy.c (__DMC__): Likewise. - * ptw32_threadStart.c (__DMC__): Likewise. - * ptw32_throw.c (__DMC__): Likewise. - -2004-06-29 Anuj Goyal <anuj.goyal at gmail.com> - - * pthread.h (__DMC__): Initial support for Digital Mars compiler. - -2004-06-29 Will Bryant <will.bryant at ecosm.com> - - * README.Borland: New; description of Borland changes. - * Bmakefile: New makefile for the Borland make utility. - * ptw32_InterlockedCompareExchange.c: - Add Borland compatible asm code. - -2004-06-26 Jason Bard <BardJA at Npt.NUWC.Navy.Mil> - - * pthread.h (HAVE_STRUCT_TIMESPEC): If undefined, define it - to avoid timespec struct redefined errors elsewhere in an - application. - -2004-06-21 Ross Johnson <rpj at callisto.canberra.edu.au> - - * pthread.h (PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Mutex - initialiser added for compatibility with Linux threads and - others; currently not included in SUSV3. - * pthread.h (PTHREAD_ERRORCHECK_MUTEX_INITIALIZER): Likewise. - * pthread.h (PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP): Likewise. - * pthread.h (PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP): Likewise. - - * ptw32_mutex_check_need_init.c (ptw32_mutex_check_need_init): - Add new initialisers. - - * pthread_mutex_lock.c (pthread_mutex_lock): Check for new - initialisers. - * pthread_mutex_trylock.c (pthread_mutex_trylock): Likewise. - * pthread_mutex_timedlock.c (pthread_mutex_timedlock): Likewise. - * pthread_mutex_unlock.c (pthread_mutex_unlock): Likewise. - * pthread_mutex_destroy.c (pthread_mutex_destroy): Likewise. - -2004-05-20 Ross Johnson <rpj at callisto.canberra.edu.au> - - * README.NONPORTABLE: Document pthread_win32_test_features_np(). - * FAQ: Update various answers. - -2004-05-19 Ross Johnson <rpj at callisto.canberra.edu.au> - - * Makefile: Don't define _WIN32_WINNT on compiler command line. - * GNUmakefile: Likewise. - -2004-05-16 Ross Johnson <rpj at callisto.canberra.edu.au> - - * pthread_cancel.c (pthread_cancel): Adapted to use auto-detected - QueueUserAPCEx features at run-time. - (ptw32_RegisterCancelation): Drop in replacement for QueueUserAPCEx() - if it can't be used. Provides older style non-preemptive async - cancelation. - * pthread_win32_attach_detach_np.c (pthread_win32_attach_np): - Auto-detect quserex.dll and the availability of alertdrv.sys; - initialise and close on process attach/detach. - * global.c (ptw32_register_cancelation): Pointer to either - QueueUserAPCEx() or ptw32_RegisterCancelation() depending on - availability. QueueUserAPCEx makes pre-emptive async cancelation - possible. - * implement.h: Add definitions and prototypes related to QueueUserAPC. - -2004-05-16 Panagiotis E. Hadjidoukas <peh at hpclab.ceid.upatras.gr> - - * QueueUserAPCEx (separate contributed package): Provides preemptive - APC feature. - * pthread_cancel.c (pthread_cancel): Initial integration of - QueueUserAPCEx into pthreads-win32 to provide true pre-emptive - async cancelation of threads, including blocked threads. - -2004-05-06 Makoto Kato <raven at oldskool.jp> - - * pthread.h (DWORD_PTR): Define typedef for older MSVC. - * pthread_cancel.c (AMD64): Add architecture specific Context register. - * ptw32_getprocessors.c: Use correct types (DWORD_PTR) for mask - variables. - -2004-04-06 P. van Bruggen <pietvb at newbridges.nl> - - * ptw32_threadDestroy.c: Destroy threadLock mutex to - close a memory leak. - -2004-02-13 Gustav Hallberg <gustav at virtutech.com> - - * pthread_equal.c: Remove redundant equality logic. - -2003-12-10 Philippe Di Cristo <philipped at voicebox.com> - - * sem_timedwait.c (sem_timedwait): Fix timeout calculations. - -2003-10-20 Alexander Terekhov <TEREKHOV at de.ibm.com> - - * pthread_mutex_timedlock.c (ptw32_semwait): Move to individual module. - * ptw32_semwait.c: New module. - * pthread_cond_wait.c (ptw32_cond_wait_cleanup): Replace cancelable - sem_wait() call with non-cancelable ptw32_semwait() call. - * pthread.c (private.c): Re-order for inlining. GNU C warned that - function ptw32_semwait() was defined 'inline' after it was called. - * pthread_cond_signal.c (ptw32_cond_unblock): Likewise. - * pthread_delay_np.c: Disable Watcom warning with comment. - * *.c (process.h): Remove include from .c files. This is conditionally - included by the common project include files. - -2003-10-20 James Ewing <james.ewing at sveasoft.com> - - * ptw32_getprocessors.c: Some Win32 environments don't have - GetProcessAffinityMask(), so always return CPU count = 1 for them. - * config.h (NEED_PROCESSOR_AFFINITY_MASK): Define for WinCE. - -2003-10-15 Ross Johnson <ross at callisto.canberra.edu.au> - - * Re-indented all .c files using default GNU style to remove assorted - editor ugliness (used GNU indent utility in default style). - -2003-10-15 Alex Blanco <Alex.Blanco at motorola.com> - - * sem_init.c (sem_init): Would call CreateSemaphore even if the sema - struct calloc failed; was not freeing calloced memory if either - CreateSemaphore or CreateEvent failed. - -2003-10-14 Ross Johnson <ross at callisto.canberra.edu.au> - - * pthread.h: Add Watcom compiler compatibility. Esssentially just add - the cdecl attribute to all exposed function prototypes so that Watcom - generates function call code compatible with non-Watcom built libraries. - By default, Watcom uses registers to pass function args if possible rather - than pushing to stack. - * semaphore.h: Likewise. - * sched.h: Likewise. - * pthread_cond_wait.c (ptw32_cond_wait_cleanup): Define with cdecl attribute - for Watcom compatibility. This routine is called via pthread_cleanup_push so - it had to match function arg definition. - * Wmakefile: New makefile for Watcom builds. - -2003-09-14 Ross Johnson <rpj at callisto.canberra.edu.au> - - * pthread_setschedparam.c (pthread_setschedparam): Attempt to map - all priority levels between max and min (as returned by - sched_get_priority_min/max) to reasonable Win32 priority levels - i.e. - levels between THREAD_PRIORITY_LOWEST/IDLE to THREAD_PRIORITY_LOWEST and - between THREAD_PRIORITY_HIGHEST/TIME_CRITICAL to THREAD_PRIORITY_HIGHEST - while others remain unchanged; record specified thread priority level - for return by pthread_getschedparam. - - Note that, previously, specified levels not matching Win32 priority levels - would silently leave the current thread priority unaltered. - - * pthread_getschedparam.c (pthread_getschedparam): Return the priority - level specified by the latest pthread_setschedparam or pthread_create rather - than the actual running thread priority as returned by GetThreadPriority - as - required by POSIX. I.e. temporary or adjusted actual priority levels are not - returned by this routine. - - * pthread_create.c (pthread_create): For priority levels specified via - pthread attributes, attempt to map all priority levels between max and - min (as returned by sched_get_priority_min/max) to reasonable Win32 - priority levels; record priority level given via attributes, or - inherited from parent thread, for later return by pthread_getschedparam. - - * ptw32_new.c (ptw32_new): Initialise pthread_t_ sched_priority element. - - * pthread_self.c (pthread_self): Set newly created implicit POSIX thread - sched_priority to Win32 thread's current actual priority. Temporarily - altered priorities can't be avoided in this case. - - * implement.h (struct pthread_t_): Add new sched_priority element. - -2003-09-12 Ross Johnson <rpj at callisto.canberra.edu.au> - - * sched_get_priority_min.c (sched_get_priority_min): On error should return -1 - with errno set. - * sched_get_priority_max.c (sched_get_priority_max): Likewise. - -2003-09-03 Ross Johnson <rpj at callisto.canberra.edu.au> - - * w32_cancelableWait.c (ptw32_cancelable_wait): Allow cancelation - of implicit POSIX threads as well. - -2003-09-02 Ross Johnson <rpj at callisto.canberra.edu.au> - - * pthread_win32_attach_detach_np.c (pthread_win32_thread_detach_np): - Add comment. - - * pthread_exit.c (pthread_exit): Fix to recycle the POSIX thread handle in - addition to calling user TSD destructors. Move the implicit POSIX thread exit - handling to ptw32_throw to centralise the logic. - - * ptw32_throw.c (ptw32_throw): Implicit POSIX threads have no point - to jump or throw to, so cleanup and exit the thread here in this case. For - processes using the C runtime, the exit code will be set to the POSIX - reason for the throw (i.e. PTHREAD_CANCEL or the value given to pthread_exit). - Note that pthread_exit() already had similar logic, which has been moved to - here. - - * ptw32_threadDestroy.c (ptw32_threadDestroy): Don't close the Win32 handle - of implicit POSIX threads - expect this to be done by Win32? - -2003-09-01 Ross Johnson <rpj at callisto.canberra.edu.au> - - * pthread_self.c (pthread_self): The newly aquired pthread_t must be - assigned to the reuse stack, not freed, if the routine fails somehow. - -2003-08-13 Ross Johnson <rpj at ise.canberra.edu.au> - - * pthread_getschedparam.c (pthread_getschedparam): An invalid thread ID - parameter was returning an incorrect error value; now uses a more exhaustive - check for validity. - - * pthread_setschedparam.c (pthread_setschedparam): Likewise. - - * pthread_join.c (pthread_join): Now uses a more exhaustive - check for validity. - - * pthread_detach.c (pthread_detach): Likewise. - - * pthread_cancel.c (pthread_cancel): Likewise. - - * ptw32_threadDestroy.c (ptw32_threadDestroy): pthread_t structs are - never freed - push them onto a stack for reuse. - - * ptw32_new.c (ptw32_new): Check for reusable pthread_t before dynamically - allocating new memory for the struct. - - * pthread_kill.c (pthread_kill): New file; new routine; takes only a zero - signal arg so that applications can check the thread arg for validity; checks - that the underlying Win32 thread HANDLE is valid. - - * pthread.h (pthread_kill): Add prototype. - - * ptw32_reuse.c (ptw32_threadReusePop): New file; new routine; pop a - pthread_t off the reuse stack. pthread_t_ structs that have been destroyed, i.e. - have exited detached or have been joined, are cleaned up and put onto a reuse - stack. Consequently, thread IDs are no longer freed once calloced. The library - will attempt to get a struct off this stack before asking the system to alloc - new memory when creating threads. The stack is guarded by a global mutex. - (ptw32_threadReusePush): New routine; push a pthread_t onto the reuse stack. - - * implement.h (ptw32_threadReusePush): Add new prototype. - (ptw32_threadReusePop): Likewise. - (pthread_t): Add new element. - - * ptw32_processTerminate.c (ptw32_processTerminate): Delete the thread - reuse lock; free all thread ID structs on the thread reuse stack. - - * ptw32_processInitialize.c (ptw32_processInitialize): Initialise the - thread reuse lock. - -2003-07-19 Ross Johnson <rpj at ise.canberra.edu.au> - - * GNUmakefile: modified to work under MsysDTK environment. - * pthread_spin_lock.c (pthread_spin_lock): Check for NULL arg. - * pthread_spin_unlock.c (pthread_spin_unlock): Likewise. - * pthread_spin_trylock.c (pthread_spin_trylock): Likewise; - fix incorrect pointer value if lock is dynamically initialised by - this function. - * sem_init.c (sem_init): Initialise sem_t value to quell compiler warning. - * sem_destroy.c (sem_destroy): Likewise. - * ptw32_threadStart.c (non-MSVC code sections): Include <exception> rather - than old-style <new.h>; fix all std:: namespace entities such as - std::terminate_handler instances and associated methods. - * ptw32_callUserDestroyRoutines.c (non-MSVC code sections): Likewise. - -2003-06-24 Piet van Bruggen <pietvb at newbridges.nl> - - * pthread_spin_destroy.c (pthread_spin_destroy): Was not freeing the - spinlock struct. - -2003-06-22 Nicolas Barry <boozai at yahoo.com> - - * pthread_mutex_destroy.c (pthread_mutex_destroy): When called - with a recursive mutex that was locked by the current thread, the - function was failing with a success return code. - -2003-05-15 Steven Reddie <Steven.Reddie at ca.com> - - * pthread_win32_attach_detach_np.c (pthread_win32_process_detach_np): - NULLify ptw32_selfThreadKey after the thread is destroyed, otherwise - destructors calling pthreads routines might resurrect it again, creating - memory leaks. Call the underlying Win32 Tls routine directly rather than - pthread_setspecific(). - (pthread_win32_thread_detach_np): Likewise. - -2003-05-14 Viv <vcotirlea at hotmail.com> - - * pthread.dsp: Change /MT compile flag to /MD. - -2003-03-04 Alexander Terekhov <TEREKHOV at de.ibm.com> - - * pthread_mutex_timedlock.c (pthread_mutex_timedlock): Fix failure to - set ownership of mutex on second grab after abstime timeout. - - bug reported by Robert Strycek <strycek at posam.sk> - -2002-12-17 Thomas Pfaff <tpfaff at gmx.net> - - * pthread_mutex_lock.c (ptw32_semwait): New static routine to provide - a non-cancelable sem_wait() function. This is consistent with the - way that pthread_mutex_timedlock.c does it. - (pthread_mutex_lock): Use ptw32_semwait() instead of sem_wait(). - -2002-12-11 Thomas Pfaff <tpfaff at gmx.net> - - * pthread_mutex_trylock.c: Should return EBUSY rather than EDEADLK. - * pthread_mutex_destroy.c: Remove redundant ownership test (the - trylock call does this for us); do not destroy a recursively locked - mutex. - -2002-09-20 Michael Johnson <michaelj at maine.rr.com> - - * pthread_cond_destroy.c (pthread_cond_destroy): - When two different threads exist, and one is attempting to - destroy a condition variable while the other is attempting to - initialize a condition variable that was created with - PTHREAD_COND_INITIALIZER, a deadlock can occur. Shrink - the ptw32_cond_list_lock critical section to fix it. - -2002-07-31 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * ptw32_threadStart.c (ptw32_threadStart): Thread cancelLock - destruction moved to ptw32_threadDestroy(). - - * ptw32_threadDestroy.c (ptw32_threadDestroy): Destroy - the thread's cancelLock. Moved here from ptw32_threadStart.c - to cleanup implicit threads as well. - -2002-07-30 Alexander Terekhov <TEREKHOV at de.ibm.com> - - * pthread_cond_wait.c (ptw32_cond_wait_cleanup): - Remove code designed to avoid/prevent spurious wakeup - problems. It is believed that the sem_timedwait() call - is consuming a CV signal that it shouldn't and this is - breaking the avoidance logic. - -2002-07-30 Ross Johnson <rpj at ise.canberra.edu.au> - - * sem_timedwait.c (sem_timedwait): Tighten checks for - unreasonable abstime values - that would result in - unexpected timeout values. - - * w32_CancelableWait.c (ptw32_cancelable_wait): - Tighten up return value checking and add comments. - - -2002-06-08 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * sem_getvalue.c (sem_getvalue): Now returns a value for the - NEED_SEM version (i.e. earlier versions of WinCE). - - -2002-06-04 Rob Fanner <rfanner at stonethree.com> - - * sem_getvalue.c (sem_getvalue): The Johnson M. Hart - approach didn't work - we are forced to take an - intrusive approach. We try to decrement the sema - and then immediately release it again to get the - value. There is a small probability that this may - block other threads, but only momentarily. - -2002-06-03 Ross Johnson <rpj at ise.canberra.edu.au> - - * sem_init.c (sem_init): Initialise Win32 semaphores - to _POSIX_SEM_VALUE_MAX (which this implementation - defines in pthread.h) so that sem_getvalue() can use - the trick described in the comments in sem_getvalue(). - * pthread.h (_POSIX_SEM_VALUE_MAX): Defined. - (_POSIX_SEM_NSEMS_MAX): Defined - not used but may be - useful for source code portability. - -2002-06-03 Rob Fanner <rfanner at stonethree.com> - - * sem_getvalue.c (sem_getvalue): Did not work on NT. - Use approach suggested by Johnson M. Hart in his book - "Win32 System Programming". - -2002-02-28 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * errno.c: Compiler directive was incorrectly including code. - * pthread.h: Conditionally added some #defines from config.h - needed when not building the library. e.g. NEED_ERRNO, NEED_SEM. - (PTW32_DLLPORT): Now only defined if _DLL defined. - (_errno): Compiler directive was incorrectly including prototype. - * sched.h: Conditionally added some #defines from config.h - needed when not building the library. - * semaphore.h: Replace an instance of NEED_SEM that should - have been NEED_ERRNO. This change currently has nil effect. - - * GNUmakefile: Correct some recent changes. - - * Makefile: Add rule to generate pre-processor output. - -2002-02-23 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * pthread_rwlock_timedrdlock.c: New - untested. - * pthread_rwlock_timedwrlock.c: New - untested. - - * Testsuite passed (except known MSVC++ problems) - - * pthread_cond_destroy.c: Expand the time change - critical section to solve deadlock problem. - - * pthread.c: Add all remaining C modules. - * pthread.h: Use dllexport/dllimport attributes on functions - to avoid using pthread.def. - * sched.h: Likewise. - * semaphore.h: Likewise. - * GNUmakefile: Add new targets for single translation - unit build to maximise inlining potential; generate - pthread.def automatically. - * Makefile: Likewise, but no longer uses pthread.def. - -2002-02-20 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * pthread_cond_destroy.c (pthread_cond_destroy): - Enter the time change critical section earlier. - -2002-02-17 Ross Johnson <rpj at setup1.ise.canberra.edu.au - - * Testsuite passed. - - * pthread_timechange_handler_np.c: New; following - a suggestion from Alexander Terekhov that CVs should - be broadcast so that they all re-evaluate their - condition variables and reset a new timeout if - required, whenever an application receives a - WM_TIMECHANGE message. This message indicates that - the system time has been changed. Therefore, CVs - waiting for a timeout set as an abs_time will possibly - not wake up at the expected time. Some applications - may not be tolerant of this. - * pthread_cond_init.c: Add CV to linked list. - * pthread_cond_destroy.c: Remove CV from linked list. - * global.c (ptw32_cond_list_head): New variable. - (ptw32_cond_list_tail): New variable. - (ptw32_cond_list_cs): New critical section. - * ptw32_processInitialize (ptw32_cond_list_cs): Initialize. - * ptw32_processTerminate (ptw32_cond_list_cs): Delete. - - - * Reduce executable size. - ----------------------- - When linking with the static library, only those - routines actually called, either directly or indirectly - should be included. - - [Gcc has the -ffunction-segments option to do this but MSVC - doesn't have this feature as far as I can determine. Other - compilers are undetermined as well. - rpj] - - * spin.c: Split file into function segments. - * ptw32_spinlock_check_need_init.c: Separated routine from spin.c. - * pthread_spin_init.c: Likewise. - * pthread_spin_destroy.c: Likewise. - * pthread_spin_lock.c: Likewise. - * pthread_spin_unlock.c: Likewise. - * pthread_spin_trylock.c: Likewise. - - * sync.c: Split file into function segments. - * pthread_detach.c: Separated routine from sync.c. - * pthread_join.c: Likewise. - - * tsd.c: Split file into function segments. - * pthread_key_create.c: Separated routine from tsd.c. - * pthread_key_delete.c: Likewise. - * pthread_setspecific.c: Likewise. - * pthread_getspecific.c: Likewise. - - * sched.c: Split file into function segments. - * pthread_attr_setschedpolicy.c: Separated routine from sched.c. - * pthread_attr_getschedpolicy.c: Likewise. - * pthread_attr_setschedparam.c: Likewise. - * pthread_attr_getschedparam.c: Likewise. - * pthread_attr_setinheritsched.c: Likewise. - * pthread_attr_getinheritsched.c: Likewise. - * pthread_setschedparam.c: Likewise. - * pthread_getschedparam.c: Likewise. - * sched_get_priority_max.c: Likewise. - * sched_get_priority_min.c: Likewise. - * sched_setscheduler.c: Likewise. - * sched_getscheduler.c: Likewise. - * sched_yield.c: Likewise. - - -2002-02-16 Ross Johnson <rpj at setup1.ise.canberra.edu.au - - Reduce executable size. - ----------------------- - When linking with the static library, only those - routines actually called, either directly or indirectly - should be included. - - [Gcc has the -ffunction-segments option to do this but MSVC - doesn't have this feature as far as I can determine. Other - compilers are undetermined as well. - rpj] - - * mutex.c: Split file into function segments. - * pthread_mutexattr_destroy.c: Separated routine from mutex.c - * pthread_mutexattr_getpshared.c: Likewise. - * pthread_mutexattr_gettype.c: Likewise. - * pthread_mutexattr_init.c: Likewise. - * pthread_mutexattr_setpshared.c: Likewise. - * pthread_mutexattr_settype.c: Likewise. - * ptw32_mutex_check_need_init.c: Likewise. - * pthread_mutex_destroy.c: Likewise. - * pthread_mutex_init.c: Likewise. - * pthread_mutex_lock.c: Likewise. - * pthread_mutex_timedlock.c: Likewise. - * pthread_mutex_trylock.c: Likewise. - * pthread_mutex_unlock.c: Likewise. - - * private.c: Split file into function segments. - * ptw32_InterlockedCompareExchange.c: Separated routine from private.c - * ptw32_callUserDestroyRoutines.c: Likewise. - * ptw32_getprocessors.c: Likewise. - * ptw32_processInitialize.c: Likewise. - * ptw32_processTerminate.c: Likewise. - * ptw32_threadDestroy.c: Likewise. - * ptw32_threadStart.c: Likewise. - * ptw32_throw.c: Likewise. - * ptw32_timespec.c: Likewise. - * ptw32_tkAssocCreate.c: Likewise. - * ptw32_tkAssocDestroy.c: Likewise. - - * rwlock.c: Split file into function segments. - * pthread_rwlockattr_destroy.c: Separated routine from rwlock.c - * pthread_rwlockattr_getpshared.c: Likewise. - * pthread_rwlockattr_init.c: Likewise. - * pthread_rwlockattr_setpshared.c: Likewise. - * ptw32_rwlock_check_need_init.c: Likewise. - * pthread_rwlock_destroy.c: Likewise. - * pthread_rwlock_init.c: Likewise. - * pthread_rwlock_rdlock.c: Likewise. - * pthread_rwlock_tryrdlock.c: Likewise. - * pthread_rwlock_trywrlock.c: Likewise. - * pthread_rwlock_unlock.c: Likewise. - * pthread_rwlock_wrlock.c: Likewise. - -2002-02-10 Ross Johnson <rpj at setup1.ise.canberra.edu.au - - Reduce executable size. - ----------------------- - When linking with the static library, only those - routines actually called, either directly or indirectly - should be included. - - [Gcc has the -ffunction-segments option to do this but MSVC - doesn't have this feature as far as I can determine. Other - compilers are undetermined as well. - rpj] - - * nonportable.c: Split file into function segments. - * np_delay.c: Separated routine from nonportable.c - * np_getw32threadhandle.c: Likewise. - * np_mutexattr_setkind.c: Likewise. - * np_mutexattr_getkind.c: Likewise. - * np_num_processors.c: Likewise. - * np_win32_attach_detach.c: Likewise. - - * misc.c: Split file into function segments. - * pthread_equal.c: Separated routine from nonportable.c. - * pthread_getconcurrency.c: Likewise. - * pthread_once.c: Likewise. - * pthread_self.c: Likewise. - * pthread_setconcurrency.c: Likewise. - * ptw32_calloc.c: Likewise. - * ptw32_new.c: Likewise. - * w32_CancelableWait.c: Likewise. - -2002-02-09 Ross Johnson <rpj at setup1.ise.canberra.edu.au - - Reduce executable size. - ----------------------- - When linking with the static library, only those - routines actually called, either directly or indirectly - should be included. - - [Gcc has the -ffunction-segments option to do this but MSVC - doesn't have this feature as far as I can determine. Other - compilers are undetermined as well. - rpj] - - * condvar.c: Split file into function segments. - * pthread_condattr_destroy.c: Separated routine from condvar.c. - * pthread_condattr_getpshared.c: Likewise. - * pthread_condattr_init.c: Likewise. - * pthread_condattr_setpshared.c: Likewise. - * ptw32_cond_check_need_init.c: Likewise. - * pthread_cond_destroy.c: Likewise. - * pthread_cond_init.c: Likewise. - * pthread_cond_signal.c: Likewise. - * pthread_cond_wait.c: Likewise. - -2002-02-07 Alexander Terekhov<TEREKHOV at de.ibm.com> - - * nonportable.c (pthread_delay_np): Make a true - cancelation point. Deferred cancels will interrupt the - wait. - -2002-02-07 Ross Johnson <rpj at setup1.ise.canberra.edu.au - - * misc.c (ptw32_new): Add creation of cancelEvent so that - implicit POSIX threads (Win32 threads with a POSIX face) - are cancelable; mainly so that pthread_delay_np doesn't fail - if called from the main thread. - * create.c (pthread_create): Remove creation of cancelEvent - from here; now in ptw32_new(). - - Reduce executable size. - ----------------------- - When linking with the static library, only those - routines actually called, either directly or indirectly - should be included. - - [Gcc has the -ffunction-segments option to do this but MSVC - doesn't have this feature as far as I can determine. Other - compilers are undetermined as well. - rpj] - - * barrier.c: All routines are now in separate compilation units; - This file is used to congregate the separate modules for - potential inline optimisation and backward build compatibility. - * cancel.c: Likewise. - * pthread_barrierattr_destroy.c: Separated routine from cancel.c. - * pthread_barrierattr_getpshared.c: Likewise. - * pthread_barrierattr_init.c: Likewise. - * pthread_barrierattr_setpshared.c: Likewise. - * pthread_barrier_destroy.c: Likewise. - * pthread_barrier_init.c: Likewise. - * pthread_barrier_wait.c: Likewise. - * pthread_cancel.c: Likewise. - * pthread_setcancelstate.c: Likewise. - * pthread_setcanceltype.c: Likewise. - * pthread_testcancel.c: Likewise. - -2002-02-04 Max Woodbury <mtew at cds.duke.edu> - - Reduced name space pollution. - ----------------------------- - When the appropriate symbols are defined, the headers - will restrict the definitions of new names. In particular, - it must be possible to NOT include the <windows.h> - header and related definitions with some combination - of symbol definitions. Secondly, it should be possible - that additional definitions should be limited to POSIX - compliant symbols by the definition of appropriate symbols. - - * pthread.h: POSIX conditionals. - * sched.h: POSIX conditionals. - * semaphore.h: POSIX conditionals. - - * semaphore.c: Included <limits.h>. - (sem_init): Changed magic 0x7FFFFFFFL to INT_MAX. - (sem_getvalue): Trial version. - - Reduce executable size. - ----------------------- - When linking with the static library, only those - routines actually called, either directly or indirectly - should be included. - - [Gcc has the -ffunction-segments option to do this but MSVC - doesn't have this feature as far as I can determine. Other - compilers are undetermined as well. - rpj] - - * semaphore.c: All routines are now in separate compilation units; - This file is used to congregate the separate modules for - potential inline optimisation and backward build compatibility. - * sem_close.c: Separated routine from semaphore.c. - * ptw32_decrease_semaphore.c: Likewise. - * sem_destroy.c: Likewise. - * sem_getvalue.c: Likewise. - * ptw32_increase_semaphore.c: Likewise. - * sem_init.c: Likewise. - * sem_open.c: Likewise. - * sem_post.c: Likewise. - * sem_post_multiple.c: Likewise. - * sem_timedwait.c: Likewise. - * sem_trywait.c: Likewise. - * sem_unlink.c: Likewise. - * sem_wait.c: Likewise. - -2002-02-04 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - The following extends the idea above to the rest of pthreads-win32 - rpj - - * attr.c: All routines are now in separate compilation units; - This file is used to congregate the separate modules for - potential inline optimisation and backward build compatibility. - * pthread_attr_destroy.c: Separated routine from attr.c. - * pthread_attr_getdetachstate.c: Likewise. - * pthread_attr_getscope.c: Likewise. - * pthread_attr_getstackaddr.c: Likewise. - * pthread_attr_getstacksize.c: Likewise. - * pthread_attr_init.c: Likewise. - * pthread_attr_is_attr.c: Likewise. - * pthread_attr_setdetachstate.c: Likewise. - * pthread_attr_setscope.c: Likewise. - * pthread_attr_setstackaddr.c: Likewise. - * pthread_attr_setstacksize.c: Likewise. - - * pthread.c: Agregation of agregate modules for super-inlineability. - -2002-02-02 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * cancel.c: Rearranged some code and introduced checks - to disable cancelation at the start of a thread's cancelation - run to prevent double cancelation. The main problem - arises if a thread is canceling and then receives a subsequent - async cancel request. - * private.c: Likewise. - * condvar.c: Place pragmas around cleanup_push/pop to turn - off inline optimisation (/Obn where n>0 - MSVC only). Various - optimisation switches in MSVC turn this on, which interferes with - the way that cleanup handlers are run in C++ EH and SEH - code. Application code compiled with inline optimisation must - also wrap cleanup_push/pop blocks with the pragmas, e.g. - #pragma inline_depth(0) - pthread_cleanup_push(...) - ... - pthread_cleanup_pop(...) - #pragma inline_depth(8) - * rwlock.c: Likewise. - * mutex.c: Remove attempts to inline some functions. - * signal.c: Modify misleading comment. - -2002-02-01 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * semaphore.c (sem_trywait): Fix missing errno return - for systems that define NEED_SEM (e.g. early WinCE). - * mutex.c (pthread_mutex_timedlock): Return ENOTSUP - for systems that define NEED_SEM since they don't - have sem_trywait(). - -2002-01-27 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * mutex.c (pthread_mutex_timedlock): New function suggested by - Alexander Terekhov. The logic required to implement this - properly came from Alexander, with some collaboration - with Thomas Pfaff. - (pthread_mutex_unlock): Wrap the waiters check and sema - post in a critical section to prevent a race with - pthread_mutex_timedlock. - (ptw32_timed_semwait): New function; - returns a special result if the absolute timeout parameter - represents a time already passed when called; used by - pthread_mutex_timedwait(). Have deliberately not reused - the name "ptw32_sem_timedwait" because they are not the same - routine. - * condvar.c (ptw32_cond_timedwait): Use the new sem_timedwait() - instead of ptw32_sem_timedwait(), which now has a different - function. See previous. - * implement.h: Remove prototype for ptw32_sem_timedwait. - See next. - (pthread_mutex_t_): Add critical section element for access - to lock_idx during mutex post-timeout processing. - * semaphore.h (sem_timedwait): See next. - * semaphore.c (sem_timedwait): See next. - * private.c (ptw32_sem_timedwait): Move to semaphore.c - and rename as sem_timedwait(). - -2002-01-18 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * sync.c (pthread_join): Was getting the exit code from the - calling thread rather than the joined thread if - defined(__MINGW32__) && !defined(__MSVCRT__). - -2002-01-15 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * pthread.h: Unless the build explicitly defines __CLEANUP_SEH, - __CLEANUP_CXX, or __CLEANUP_C, then the build defaults to - __CLEANUP_C style cleanup. This style uses setjmp/longjmp - in the cancelation and thread exit implementations and therefore - won't do stack unwinding if linked to applications that have it - (e.g. C++ apps). This is currently consistent with most/all - commercial Unix POSIX threads implementations. - - * spin.c (pthread_spin_init): Edit renamed function call. - * nonportable.c (pthread_num_processors_np): New. - (pthread_getprocessors_np): Renamed to ptw32_getprocessors - and moved to private.c. - * private.c (pthread_getprocessors): Moved here from - nonportable.c. - * pthread.def (pthread_getprocessors_np): Removed - from export list. - - * rwlock.c (pthread_rwlockattr_init): New. - (pthread_rwlockattr_destroy): New. - (pthread_rwlockattr_getpshared): New. - (pthread_rwlockattr_setpshared): New. - -2002-01-14 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * attr.c (pthread_attr_setscope): Fix struct pointer - indirection error introduced 2002-01-04. - (pthread_attr_getscope): Likewise. - -2002-01-12 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * pthread.dsp (SOURCE): Add missing source files. - -2002-01-08 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * mutex.c (pthread_mutex_trylock): use - ptw32_interlocked_compare_exchange function pointer - rather than ptw32_InterlockedCompareExchange() directly - to retain portability to non-iX86 processors, - e.g. WinCE etc. The pointer will point to the native - OS version of InterlockedCompareExchange() if the - OS supports it (see ChangeLog entry of 2001-10-17). - -2002-01-07 Thomas Pfaff <tpfaff at gmx.net>, Alexander Terekhov <TEREKHOV at de.ibm.com> - - * mutex.c (pthread_mutex_init): Remove critical - section calls. - (pthread_mutex_destroy): Likewise. - (pthread_mutex_unlock): Likewise. - (pthread_mutex_trylock): Likewise; uses - ptw32_InterlockedCompareExchange() to avoid need for - critical section; library is no longer i386 compatible; - recursive mutexes now increment the lock count rather - than return EBUSY; errorcheck mutexes return EDEADLCK - rather than EBUSY. This behaviour is consistent with the - Solaris pthreads implementation. - * implement.h (pthread_mutex_t_): Remove critical - section element - no longer needed. - - -2002-01-04 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * attr.c (pthread_attr_setscope): Add more error - checking and actually store the scope value even - though it's not really necessary. - (pthread_attr_getscope): Return stored value. - * implement.h (pthread_attr_t_): Add new scope element. - * ANNOUNCE: Fix out of date comment next to - pthread_attr_setscope in conformance section. - -2001-12-21 Alexander Terekhov <TEREKHOV at de.ibm.com> - - * mutex.c (pthread_mutex_lock): Decrementing lock_idx was - not thread-safe. - (pthread_mutex_trylock): Likewise. - -2001-10-26 prionx@juno.com - - * semaphore.c (sem_init): Fix typo and missing bracket - in conditionally compiled code. Only older versions of - WinCE require this code, hence it doesn't normally get - tested; somehow when sem_t reverted to an opaque struct - the calloc NULL check was left in the conditionally included - section. - (sem_destroy): Likewise, the calloced sem_t wasn't being freed. - -2001-10-25 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * GNUmakefile (libwsock32): Add to linker flags for - WSAGetLastError() and WSASetLastError(). - * Makefile (wsock32.lib): Likewise. - * create.c: Minor mostly inert changes. - * implement.h (PTW32_MAX): Move into here and renamed - from sched.h. - (PTW32_MIN): Likewise. - * GNUmakefile (TEST_ICE): Define if testing internal - implementation of InterlockedCompareExchange. - * Makefile (TEST_ICE): Likewise. - * private.c (TEST_ICE): Likewise. - -2001-10-24 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * attr.c (pthread_attr_setstacksize): Quell warning - from LCC by conditionally compiling the stacksize - validity check. LCC correctly warns that the condition - (stacksize < PTHREAD_STACK_MIN) is suspicious - because STACK_MIN is 0 and stacksize is of type - size_t (or unsigned int). - -2001-10-17 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * barrier.c: Move _LONG and _LPLONG defines into - implement.h; rename to PTW32_INTERLOCKED_LONG and - PTW32_INTERLOCKED_LPLONG respectively. - * spin.c: Likewise; ptw32_interlocked_compare_exchange used - in place of InterlockedCompareExchange directly. - * global.c (ptw32_interlocked_compare_exchange): Add - prototype for this new routine pointer to be used when - InterlockedCompareExchange isn't supported by Windows. - * nonportable.c (pthread_win32_process_attach_np): Check for - support of InterlockedCompareExchange in kernel32 and assign its - address to ptw32_interlocked_compare_exchange if it exists, or - our own ix86 specific implementation ptw32_InterlockedCompareExchange. - *private.c (ptw32_InterlockedCompareExchange): An - implementation of InterlockedCompareExchange() which is - specific to ix86; written directly in assembler for either - MSVC or GNU C; needed because Windows 95 doesn't support - InterlockedCompareExchange(). - - * sched.c (sched_get_priority_min): Extend to return - THREAD_PRIORITY_IDLE. - (sched_get_priority_max): Extend to return - THREAD_PRIORITY_CRITICAL. - -2001-10-15 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * spin.c (pthread_spin_lock): PTHREAD_SPINLOCK_INITIALIZER - was causing a program fault. - (pthread_spin_init): Could have alloced memory - without freeing under some error conditions. - - * mutex.c (pthread_mutex_init): Move memory - allocation of mutex struct after checking for - PROCESS_SHARED. - -2001-10-12 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * spin.c (pthread_spin_unlock): Was not returning - EPERM if the spinlock was not locked, for multi CPU - machines. - -2001-10-08 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * spin.c (pthread_spin_trylock): Was not returning - EBUSY for multi CPU machines. - -2001-08-24 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * condvar.c (pthread_cond_destroy): Remove cv element - that is no longer used. - * implement.h: Likewise. - -2001-08-23 Alexander Terekhov <TEREKHOV at de.ibm.com> - - * condvar.c (pthread_cond_destroy): fix bug with - respect to deadlock in the case of concurrent - _destroy/_unblock; a condition variable can be destroyed - immediately after all the threads that are blocked on - it are awakened. - -2001-08-23 Phil Frisbie, Jr. <phil at hawksoft.com> - - * tsd.c (pthread_getspecific): Preserve the last - winsock error [from WSAGetLastError()]. - -2001-07-18 Scott McCaskill <scott at magruder.org> - - * mutex.c (pthread_mutexattr_init): Return ENOMEM - immediately and don't dereference the NULL pointer - if calloc fails. - (pthread_mutexattr_getpshared): Don't dereference - a pointer that is possibly NULL. - * barrier.c (pthread_barrierattr_init): Likewise - (pthread_barrierattr_getpshared): Don't dereference - a pointer that is possibly NULL. - * condvar.c (pthread_condattr_getpshared): Don't dereference - a pointer that is possibly NULL. - -2001-07-15 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * rwlock.c (pthread_rwlock_wrlock): Is allowed to be - a cancelation point; re-enable deferred cancelability - around the CV call. - -2001-07-10 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * barrier.c: Still more revamping. The exclusive access - mutex isn't really needed so it has been removed and replaced - by an InterlockedDecrement(). nSerial has been removed. - iStep is now dual-purpose. The process shared attribute - is now stored in the barrier struct. - * implement.h (pthread_barrier_t_): Lost some/gained one - elements. - * private.c (ptw32_threadStart): Removed some comments. - -2001-07-10 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * barrier.c: Revamped to fix the race condition. Two alternating - semaphores are used instead of the PulseEvent. Also improved - overall throughput by returning PTHREAD_BARRIER_SERIAL_THREAD - to the first waking thread. - * implement.h (pthread_barrier_t_): Revamped. - -2001-07-09 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * barrier.c: Fix several bugs in all routines. Now passes - tests/barrier5.c which is fairly rigorous. There is still - a non-optimal work-around for a race condition between - the barrier breeched event signal and event wait. Basically - the last (signalling) thread to hit the barrier yields - to allow any other threads, which may have lost the race, - to complete. - -2001-07-07 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * barrier.c: Changed synchronisation mechanism to a - Win32 manual reset Event and use PulseEvent to signal - waiting threads. If the implementation continued to use - a semaphore it would require a second semaphore and - some management to use them alternately as barriers. A - single semaphore allows threads to cascade from one barrier - through the next, leaving some threads blocked at the first. - * implement.h (pthread_barrier_t_): As per above. - * general: Made a number of other routines inlinable. - -2001-07-07 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * spin.c: Revamped and working; included static initialiser. - Now beta level. - * barrier.c: Likewise. - * condvar.c: Macro constant change; inline auto init routine. - * mutex.c: Likewise. - * rwlock.c: Likewise. - * private.c: Add support for spinlock initialiser. - * global.c: Likewise. - * implement.h: Likewise. - * pthread.h (PTHREAD_SPINLOCK_INITIALIZER): Fix typo. - -2001-07-05 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * barrier.c: Remove static initialisation - irrelevent - for this object. - * pthread.h (PTHREAD_BARRIER_INITIALIZER): Removed. - * rwlock.c (pthread_rwlock_wrlock): This routine is - not a cancelation point - disable deferred - cancelation around call to pthread_cond_wait(). - -2001-07-05 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * spin.c: New module implementing spin locks. - * barrier.c: New module implementing barriers. - * pthread.h (_POSIX_SPIN_LOCKS): defined. - (_POSIX_BARRIERS): Defined. - (pthread_spin_*): Defined. - (pthread_barrier*): Defined. - (PTHREAD_BARRIER_SERIAL_THREAD): Defined. - * implement.h (pthread_spinlock_t_): Defined. - (pthread_barrier_t_): Defined. - (pthread_barrierattr_t_): Defined. - - * mutex.c (pthread_mutex_lock): Return with the error - if an auto-initialiser initialisation fails. - - * nonportable.c (pthread_getprocessors_np): New; gets the - number of available processors for the current process. - -2001-07-03 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * pthread.h (_POSIX_READER_WRITER_LOCKS): Define it - if not already defined. - -2001-07-01 Alexander Terekhov <TEREKHOV at de.ibm.com> - - * condvar.c: Fixed lost signal bug reported by Timur Aydin - (taydin@snet.net). - [RPJ (me) didn't translate the original algorithm - correctly.] - * semaphore.c: Added sem_post_multiple; this is a useful - routine, but it doesn't appear to be standard. For now it's - not an exported function. - -2001-06-25 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * create.c (pthread_create): Add priority inheritance - attributes. - * mutex.c (pthread_mutex_lock): Remove some overhead for - PTHREAD_MUTEX_NORMAL mutex types. Specifically, avoid - calling pthread_self() and pthread_equal() to check/set - the mutex owner. Introduce a new pseudo owner for this - type. Test results suggest increases in speed of up to - 90% for non-blocking locks. - This is the default type of mutex used internally by other - synchronising objects, ie. condition variables and - read-write locks. The test rwlock7.c shows about a - 30-35% speed increase over snapshot 2001-06-06. The - price of this is that the application developer - must ensure correct behaviour, or explicitly set the - mutex to a safer type such as PTHREAD_MUTEX_ERRORCHECK. - For example, PTHREAD_MUTEX_NORMAL (or PTHREAD_MUTEX_DEFAULT) - type mutexes will not return an error if a thread which is not - the owner calls pthread_mutex_unlock. The call will succeed - in unlocking the mutex if it is currently locked, but a - subsequent unlock by the true owner will then fail with EPERM. - This is however consistent with some other implementations. - (pthread_mutex_unlock): Likewise. - (pthread_mutex_trylock): Likewise. - (pthread_mutex_destroy): Likewise. - * attr.c (pthread_attr_init): PTHREAD_EXPLICIT_SCHED is the - default inheritance attribute; THREAD_PRIORITY_NORMAL is - the default priority for new threads. - * sched.c (pthread_attr_setschedpolicy): Added routine. - (pthread_attr_getschedpolicy): Added routine. - (pthread_attr_setinheritsched): Added routine. - (pthread_attr_getinheritsched): Added routine. - * pthread.h (sched_rr_set_interval): Added as a macro; - returns -1 with errno set to ENOSYS. - -2001-06-23 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - *sched.c (pthread_attr_setschedparam): Add priority range - check. - (sched_setscheduler): New function; checks for a valid - pid and policy; checks for permission to set information - in the target process; expects pid to be a Win32 process ID, - not a process handle; the only scheduler policy allowed is - SCHED_OTHER. - (sched_getscheduler): Likewise, but checks for permission - to query. - * pthread.h (SCHED_*): Moved to sched.h as defined in the - POSIX standard. - * sched.h (SCHED_*): Moved from pthread.h. - (pid_t): Defined if necessary. - (sched_setscheduler): Defined. - (sched_getscheduler): Defined. - * pthread.def (sched_setscheduler): Exported. - (sched_getscheduler): Likewise. - -2001-06-23 Ralf Brese <Ralf.Brese at pdb4.siemens.de> - - * create.c (pthread_create): Set thread priority from - thread attributes. - -2001-06-18 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * Made organisational-only changes to UWIN additions. - * dll.c (dllMain): Moved UWIN process attach code - to pthread_win32_process_attach_np(); moved - instance of pthread_count to global.c. - * global.c (pthread_count): Moved from dll.c. - * nonportable.c (pthread_win32_process_attach_np): - Moved _UWIN code to here from dll.c. - * implement.h (pthread_count): Define extern int. - * create.c (pthread_count): Remove extern int. - * private.c (pthread_count): Likewise. - * exit.c (pthread_count): Likewise. - -2001-06-18 David Korn <dgk at research.att.com> - - * dll.c: Added changes necessary to work with UWIN. - * create.c: Likewise. - * pthread.h: Likewise. - * misc.c: Likewise. - * exit.c: Likewise. - * private.c: Likewise. - * implement.h: Likewise. - There is some room at the start of struct pthread_t_ - to implement the signal semantics in UWIN's posix.dll - although this is not yet complete. - * Nmakefile: Compatible with UWIN's Nmake utility. - * Nmakefile.tests: Likewise - for running the tests. - -2001-06-08 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * semaphore.h (sem_t): Fixed for compile and test. - * implement.h (sem_t_): Likewise. - * semaphore.c: Likewise. - * private.c (ptw32_sem_timedwait): Updated to use new - opaque sem_t. - -2001-06-06 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * semaphore.h (sem_t): Is now an opaque pointer; - moved actual definition to implement.h. - * implement.h (sem_t_): Move here from semaphore.h; - was the definition of sem_t. - * semaphore.c: Wherever necessary, changed use of sem - from that of a pointer to a pointer-pointer; added - extra checks for a valid sem_t; NULL sem_t when - it is destroyed; added extra checks when creating - and destroying sem_t elements in the NEED_SEM - code branches; changed from using a pthread_mutex_t - ((*sem)->mutex) to CRITICAL_SECTION ((*sem)->sem_lock_cs) - in NEED_SEM branches for access serialisation. - -2001-06-06 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * mutex.c (pthread_mutexattr_init): Remove - ptw32_mutex_default_kind. - -2001-06-05 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * nonportable.c (pthread_mutex_setdefaultkind_np): - Remove - should not have been included in the first place. - (pthread_mutex_getdefaultkind_np): Likewise. - * global.c (ptw32_mutex_default_kind): Likewise. - * mutex.c (pthread_mutex_init): Remove use of - ptw32_mutex_default_kind. - * pthread.h (pthread_mutex_setdefaultkind_np): Likewise. - (pthread_mutex_getdefaultkind_np): Likewise. - * pthread.def (pthread_mutexattr_setkind_np): Added. - (pthread_mutexattr_getkind_np): Likewise. - - * README: Many changes that should have gone in before - the last snapshot. - * README.NONPORTABLE: New - referred to by ANNOUNCE - but never created; documents the non-portable routines - included in the library - moved from README with new - routines added. - * ANNOUNCE (pthread_mutexattr_setkind_np): Added to - compliance list. - (pthread_mutexattr_getkind_np): Likewise. - -2001-06-04 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * condvar.c: Add original description of the algorithm as - developed by Terekhov and Thomas, plus reference to - README.CV. - -2001-06-03 Alexander Terekhov <TEREKHOV at de.ibm.com>, Louis Thomas <lthomas at arbitrade.com> - - * condvar.c (pthread_cond_init): Completely revamped. - (pthread_cond_destroy): Likewise. - (ptw32_cond_wait_cleanup): Likewise. - (ptw32_cond_timedwait): Likewise. - (ptw32_cond_unblock): New general signaling routine. - (pthread_cond_signal): Now calls ptw32_cond_unblock. - (pthread_cond_broadcast): Likewise. - * implement.h (pthread_cond_t_): Revamped. - * README.CV: New; explanation of the above changes. - -2001-05-30 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * pthread.h (rand_r): Fake using _seed argument to quell - compiler warning (compiler should optimise this away later). - - * GNUmakefile (OPT): Leave symbolic information out of the library - and increase optimisation level - for smaller faster prebuilt - dlls. - -2001-05-29 Milan Gardian <Milan.Gardian at LEIBINGER.com> - - * Makefile: fix typo. - * pthreads.h: Fix problems with stdcall/cdecl conventions, in particular - remove the need for PT_STDCALL everywhere; remove warning supression. - * (errno): Fix the longstanding "inconsistent dll linkage" problem - with errno; now also works with /MD debugging libs - - warnings emerged when compiling pthreads library with /MD (or /MDd) - compiler switch, instead of /MT (or /MTd) (i.e. when compiling pthreads - using Multithreaded DLL CRT instead of Multithreaded statically linked - CRT). - * create.c (pthread_create): Likewise; fix typo. - * private.c (ptw32_threadStart): Eliminate use of terminate() which doesn't - throw exceptions. - * Remove unnecessary #includes from a number of modules - - [I had to #include malloc.h in implement.h for gcc - rpj]. - -2001-05-29 Thomas Pfaff <tpfaff at gmx.net> - - * pthread.h (PTHREAD_MUTEX_DEFAULT): New; equivalent to - PTHREAD_MUTEX_DEFAULT_NP. - * (PTHREAD_MUTEX_NORMAL): Similarly. - * (PTHREAD_MUTEX_ERRORCHECK): Similarly. - * (PTHREAD_MUTEX_RECURSIVE): Similarly. - * (pthread_mutex_setdefaultkind_np): New; Linux compatibility stub - for pthread_mutexattr_settype. - * (pthread_mutexattr_getkind_np): New; Linux compatibility stub - for pthread_mutexattr_gettype. - * mutex.c (pthread_mutexattr_settype): New; allow - the following types of mutex: - PTHREAD_MUTEX_DEFAULT_NP - PTHREAD_MUTEX_NORMAL_NP - PTHREAD_MUTEX_ERRORCHECK_NP - PTHREAD_MUTEX_RECURSIVE_NP - * Note that PTHREAD_MUTEX_DEFAULT is equivalent to - PTHREAD_MUTEX_NORMAL - ie. mutexes should no longer - be recursive by default, and a thread will deadlock if it - tries to relock a mutex it already owns. This is inline with - other pthreads implementations. - * (pthread_mutex_lock): Process the lock request - according to the mutex type. - * (pthread_mutex_init): Eliminate use of Win32 mutexes as the - basis of POSIX mutexes - instead, a combination of one critical section - and one semaphore are used in conjunction with Win32 Interlocked* routines. - * (pthread_mutex_destroy): Likewise. - * (pthread_mutex_lock): Likewise. - * (pthread_mutex_trylock): Likewise. - * (pthread_mutex_unlock): Likewise. - * Use longjmp/setjmp to implement cancelation when building the library - using a C compiler which doesn't support exceptions, e.g. gcc -x c (note - that gcc -x c++ uses exceptions). - * Also fixed some of the same typos and eliminated PT_STDCALL as - Milan Gardian's patches above. - -2001-02-07 Alexander Terekhov <TEREKHOV at de.ibm.com> - - * rwlock.c: Revamped. - * implement.h (pthread_rwlock_t_): Redefined. - This implementation does not have reader/writer starvation problem. - Rwlock attempts to behave more like a normal mutex with - races and scheduling policy determining who is more important; - It also supports recursive locking, - has less synchronization overhead (no broadcasts at all, - readers are not blocked on any condition variable) and seem to - be faster than the current implementation [W98 appears to be - approximately 15 percent faster at least - on top of speed increase - from Thomas Pfaff's changes to mutex.c - rpj]. - -2000-12-29 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * Makefile: Back-out "for" loops which don't work. - - * GNUmakefile: Remove the fake.a target; add the "realclean" - target; don't remove built libs under the "clean" target. - - * config.h: Add a guard against multiple inclusion. - - * semaphore.h: Add some defines from config.h to make - semaphore.h independent of config.h when building apps. - - * pthread.h (_errno): Back-out previous fix until we know how to - fix it properly. - - * implement.h (lockCount): Add missing element to pthread_mutex_t_. - - * sync.c (pthread_join): Spelling fix in comment. - - * private.c (ptw32_threadStart): Reset original termination - function (C++). - (ptw32_threadStart): Cleanup detached threads early in case - the library is statically linked. - (ptw32_callUserDestroyRoutines): Remove [SEH] __try block from - destructor call so that unhandled exceptions will be passed through - to the system; call terminate() from [C++] try block for the same - reason. - - * tsd.c (pthread_getspecific): Add comment. - - * mutex.c (pthread_mutex_init): Initialise new elements in - pthread_mutex_t. - (pthread_mutex_unlock): Invert "pthread_equal()" test. - -2000-12-28 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * semaphore.c (mode_t): Use ifndef HAVE_MODE_T to include definition. - - * config.h.in (HAVE_MODE_T): Added. - (_UWIN): Start adding defines for the UWIN package. - - * private.c (ptw32_threadStart): Unhandled exceptions are - now passed through to the system to deal with. This is consistent - with normal Windows behaviour. C++ applications may use - set_terminate() to override the default behaviour which is - to call ptw32_terminate(). Ptw32_terminate() cleans up some - POSIX thread stuff before calling the system default function - which calls abort(). The users termination function should conform - to standard C++ semantics which is to not return. It should - exit the thread (call pthread_exit()) or exit the application. - * private.c (ptw32_terminate): Added as the default set_terminate() - function. It calls the system default function after cleaning up - some POSIX thread stuff. - - * implement.h (ptw32_try_enter_critical_section): Move - declaration. - * global.c (ptw32_try_enter_critical_section): Moved - from dll.c. - * dll.c: Move process and thread attach/detach code into - functions in nonportable.c. - * nonportable.c (pthread_win32_process_attach_np): Process - attach code from dll.c is now available to static linked - applications. - * nonportable.c (pthread_win32_process_detach_np): Likewise. - * nonportable.c (pthread_win32_thread_attach_np): Likewise. - * nonportable.c (pthread_win32_thread_detach_np): Likewise. - - * pthread.h: Add new non-portable prototypes for static - linked applications. - - * GNUmakefile (OPT): Increase optimisation flag and remove - debug info flag. - - * pthread.def: Add new non-portable exports for static - linked applications. - -2000-12-11 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * FAQ: Update Answer 6 re getting a fully working - Mingw32 built library. - -2000-10-10 Steven Reddie <smr at essemer.com.au> - - * misc.c (pthread_self): Restore Win32 "last error" - cleared by TlsGetValue() call in - pthread_getspecific() - -2000-09-20 Arthur Kantor <akantor at bexusa.com> - - * mutex.c (pthread_mutex_lock): Record the owner - of the mutex. This requires also keeping count of - recursive locks ourselves rather than leaving it - to Win32 since we need to know when to NULL the - thread owner when the mutex is unlocked. - (pthread_mutex_trylock): Likewise. - (pthread_mutex_unlock): Check that the calling - thread owns the mutex, decrement the recursive - lock count, and NULL the owner if zero. Return - EPERM if the mutex is owned by another thread. - * implement.h (pthread_mutex_t_): Add ownerThread - and lockCount members. - -2000-09-13 Jef Gearhart <jgearhart at tpssys.com> - - * mutex.c (pthread_mutex_init): Call - TryEnterCriticalSection through the pointer - rather than directly so that the dll can load - on Windows versions that can't resolve the - function, eg. Windows 95 - -2000-09-09 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * pthread.h (ctime_r): Fix arg. - -2000-09-08 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * GNUmakefile(_WIN32_WINNT=0x400): Define in CFLAGS; - doesn't seem to be needed though. - - * cancel.c (pthread_cancel): Must get "self" through - calling pthread_self() which will ensure a POSIX thread - struct is built for non-POSIX threads; return an error - if this fails - - Ollie Leahy <ollie at mpt.ie> - (pthread_setcancelstate): Likewise. - (pthread_setcanceltype): Likewise. - * misc.c (ptw32_cancelable_wait): Likewise. - - * private.c (ptw32_tkAssocCreate): Remove unused #if 0 - wrapped code. - - * pthread.h (ptw32_get_exception_services_code): - Needed to be forward declared unconditionally. - -2000-09-06 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * cancel.c (pthread_cancel): If called from the main - thread "self" would be NULL; get "self" via pthread_self() - instead of directly from TLS so that an implicit - pthread object is created. - - * misc.c (pthread_equal): Strengthen test for NULLs. - -2000-09-02 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * condvar.c (ptw32_cond_wait_cleanup): Ensure that all - waking threads check if they are the last, and notify - the broadcaster if so - even if an error occurs in the - waiter. - - * semaphore.c (_decrease_semaphore): Should be - a call to ptw32_decrease_semaphore. - (_increase_semaphore): Should be a call to - ptw32_increase_semaphore. - - * misc.c (ptw32_cancelable_wait): Renamed from - CancelableWait. - * rwlock.c (_rwlock_check*): Renamed to - ptw32_rwlock_check*. - * mutex.c (_mutex_check*): Renamed to ptw32_mutex_check*. - * condvar.c (cond_timed*): Renamed to ptw32_cond_timed*. - (_cond_check*): Renamed to ptw32_cond_check*. - (cond_wait_cleanup*): Rename to ptw32_cond_wait_cleanup*. - (ptw32_cond_timedwait): Add comments. - -2000-08-22 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * private.c (ptw32_throw): Fix exception test; - move exceptionInformation declaration. - - * tsd.c (pthread_key_create): newkey wrongly declared. - - * pthread.h: Fix comment block. - -2000-08-18 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * mutex.c (pthread_mutex_destroy): Check that the mutex isn't - held; invalidate the mutex as early as possible to avoid - contention; not perfect - FIXME! - - * rwlock.c (pthread_rwlock_init): Remove redundant assignment - to "rw". - (pthread_rwlock_destroy): Invalidate the rwlock before - freeing up any of it's resources - to avoid contention. - - * private.c (ptw32_tkAssocCreate): Change assoc->lock - to use a dynamically initialised mutex - only consumes - a W32 mutex or critical section when first used, - not before. - - * mutex.c (pthread_mutex_init): Remove redundant assignment - to "mx". - (pthread_mutexattr_destroy): Set attribute to NULL - before freeing it's memory - to avoid contention. - - * implement.h (PTW32_EPS_CANCEL/PTW32_EPS_EXIT): - Must be defined for all compilers - used as generic - exception selectors by ptw32_throw(). - - * Several: Fix typos from scripted edit session - yesterday. - - * nonportable.c (pthread_mutexattr_setforcecs_np): - Moved this function from mutex.c. - (pthread_getw32threadhandle_np): New function to - return the win32 thread handle that the POSIX - thread is using. - * mutex.c (pthread_mutexattr_setforcecs_np): - Moved to new file "nonportable.c". - - * pthread.h (PTW32_BUILD): Only redefine __except - and catch compiler keywords if we aren't building - the library (ie. PTW32_BUILD is not defined) - - this is safer than defining and then undefining - if not building the library. - * implement.h: Remove __except and catch undefines. - * Makefile (CFLAGS): Define PTW32_BUILD. - * GNUmakefile (CFLAGS): Define PTW32_BUILD. - - * All appropriate: Change Pthread_exception* to - ptw32_exception* to be consistent with internal - identifier naming. - - * private.c (ptw32_throw): New function to provide - a generic exception throw for all internal - exceptions and EH schemes. - (ptw32_threadStart): pthread_exit() value is now - returned via the thread structure exitStatus - element. - * exit.c (pthread_exit): pthread_exit() value is now - returned via the thread structure exitStatus - element. - * cancel.c (ptw32_cancel_self): Now uses ptw32_throw. - (pthread_setcancelstate): Ditto. - (pthread_setcanceltype): Ditto. - (pthread_testcancel): Ditto. - (pthread_cancel): Ditto. - * misc.c (CancelableWait): Ditto. - * exit.c (pthread_exit): Ditto. - * All applicable: Change PTW32_ prefix to - PTW32_ prefix to remove leading underscores - from private library identifiers. - -2000-08-17 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * All applicable: Change _pthread_ prefix to - ptw32_ prefix to remove leading underscores - from private library identifiers (single - and double leading underscores are reserved in the - ANSI C standard for compiler implementations). - - * tsd.c (pthread_create_key): Initialise temporary - key before returning it's address to avoid race - conditions. - -2000-08-13 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * errno.c: Add _MD precompile condition; thus far - had no effect when using /MD compile option but I - thnk it should be there. - - * exit.c: Add __cplusplus to various #if lines; - was compiling SEH code even when VC++ had - C++ compile options. - - * private.c: ditto. - - * create.c (pthread_create): Add PT_STDCALL macro to - function pointer arg in _beginthread(). - - * pthread.h: PT_STDCALL really does need to be defined - in both this and impliment.h; don't set it to __cdecl - - this macro is only used to extend function pointer - casting for functions that will be passed as parameters. - (~PThreadCleanup): add cast and group expression. - (_errno): Add _MD compile conditional. - (PtW32NoCatchWarn): Change pragma message. - - * implement.h: Move and change PT_STDCALL define. - - * need_errno.h: Add _MD to compilation conditional. - - * GNUmakefile: Substantial rewrite for new naming - convention; set for nil optimisation (turn it up - when we have a working library build; add target - "fake.a" to build a libpthreadw32.a from the VC++ - built DLL pthreadVCE.dll. - - * pthread.def (LIBRARY): Don't specify in the .def - file - it is specified on the linker command line - since we now use the same .def file for variously - named .dlls. - - * Makefile: Substantial rewrite for new naming - convention; default nmake target only issues a - help message; run nmake with specific target - corresponding to the EH scheme being used. - - * README: Update information; add naming convention - explanation. - - * ANNOUNCE: Update information. - -2000-08-12 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * pthread.h: Add compile-time message when using - MSC_VER compiler and C++ EH to warn application - programmers to use PtW32Catch instead of catch(...) - if they want cancelation and pthread_exit to work. - - * implement.h: Remove #include <semaphore.h>; we - use our own local semaphore.h. - -2000-08-10 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * cleanup.c (pthread_pop_cleanup): Remove _pthread - prefix from __except and catch keywords; implement.h - now simply undefines ptw32__except and - ptw32_catch if defined; VC++ was not textually - substituting ptw32_catch etc back to catch as - it was redefined; the reason for using the prefixed - version was to make it clear that it was not using - the pthread.h redefined catch keyword. - - * private.c (ptw32_threadStart): Ditto. - (ptw32_callUserDestroyRoutines): Ditto. - - * implement.h (ptw32__except): Remove #define. - (ptw32_catch): Remove #define. - - * GNUmakefile (pthread.a): New target to build - libpthread32.a from pthread.dll using dlltool. - - * buildlib.bat: Duplicate cl commands with args to - build C++ EH version of pthread.dll; use of .bat - files is redundant now that nmake compatible - Makefile is included; used as a kludge only now. - - * Makefile: Localise some macros and fix up the clean: - target to extend it and work properly. - - * CONTRIBUTORS: Add contributors. - - * ANNOUNCE: Updated. - - * README: Updated. - -2000-08-06 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * pthread.h: Remove #warning - VC++ doesn't accept it. - -2000-08-05 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * pthread.h (PtW32CatchAll): Add macro. When compiling - applications using VC++ with C++ EH rather than SEH - 'PtW32CatchAll' must be used in place of any 'catch( ... )' - if the application wants pthread cancelation or - pthread_exit() to work. - -2000-08-03 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * pthread.h: Add a base class ptw32_exception for - library internal exceptions and change the "catch" - re-define macro to use it. - -2000-08-02 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * GNUmakefile (CFLAGS): Add -mthreads. - Add new targets to generate cpp and asm output. - - * sync.c (pthread_join): Remove dead code. - -2000-07-25 Tristan Savatier <tristan at mpegtv.com> - - * sched.c (sched_get_priority_max): Handle different WinCE and - Win32 priority values together. - (sched_get_priority_min): Ditto. - -2000-07-25 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * create.c (pthread_create): Force new threads to wait until - pthread_create has the new thread's handle; we also retain - a local copy of the handle for internal use until - pthread_create returns. - - * private.c (ptw32_threadStart): Initialise ei[]. - (ptw32_threadStart): When beginthread is used to start the - thread, force waiting until the creator thread had the - thread handle. - - * cancel.c (ptw32_cancel_thread): Include context switch - code for defined(_X86_) environments in addition to _M_IX86. - - * rwlock.c (pthread_rwlock_destroy): Assignment changed - to avoid compiler warning. - - * private.c (ptw32_get_exception_services_code): Cast - NULL return value to avoid compiler warning. - - * cleanup.c (pthread_pop_cleanup): Initialise "cleanup" variable - to avoid compiler warnings. - - * misc.c (ptw32_new): Change "new" variable to "t" to avoid - confusion with the C++ keyword of the same name. - - * condvar.c (cond_wait_cleanup): Initialise lastWaiter variable. - (cond_timedwait): Remove unused local variables. to avoid - compiler warnings. - - * dll.c (dllMain): Remove 2000-07-21 change - problem - appears to be in pthread_create(). - -2000-07-22 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * tsd.c (pthread_key_create): If a destructor was given - and the pthread_mutex_init failed, then would try to - reference a NULL pointer (*key); eliminate this section of - code by using a dynamically initialised mutex - (PTHREAD_MUTEX_INITIALIZER). - - * tsd.c (pthread_setspecific): Return an error if - unable to set the value; simplify cryptic conditional. - - * tsd.c (pthread_key_delete): Locking threadsLock relied - on mutex_lock returning an error if the key has no destructor. - ThreadsLock is only initialised if the key has a destructor. - Making this mutex a static could reduce the number of mutexes - used by an application since it is actually created only at - first use and it's often destroyed soon after. - -2000-07-22 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * FAQ: Added Q5 and Q6. - -2000-07-21 David Baggett <dmb at itasoftware.com> - - * dll.c: Include resource leakage work-around. This is a - partial FIXME which doesn't stop all leakage. The real - problem needs to be found and fixed. - -2000-07-21 Ross Johnson <rpj at setup1.ise.canberra.edu.au> - - * create.c (pthread_create): Set threadH to 0 (zero) - everywhere. Some assignments were using NULL. Maybe - it should be NULL everywhere - need to check. (I know - they are nearly always the same thing - but not by - definition.) - - * misc.c (pthread_self): Try to catch NULL thread handles - at the point where they might be generated, even though - they should always be valid at this point. - - * tsd.c (pthread_setspecific): return an error value if - pthread_self() returns NULL. - - * sync.c (pthread_join): return an error value if - pthread_self() returns NULL. - - * signal.c (pthread_sigmask): return an error value if - pthread_self() returns NULL. - -2000-03-02 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * attr.c (pthread_attr_init): Set default stacksize to zero (0) - rather than PTHREAD_STACK_MIN even though these are now the same. - - * pthread.h (PTHREAD_STACK_MIN): Lowered to 0. - -2000-01-28 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * mutex.c (pthread_mutex_init): Free mutex if it has been alloced; - if critical sections can be used instead of Win32 mutexes, test - that the critical section works and return an error if not. - -2000-01-07 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * cleanup.c (pthread_pop_cleanup): Include SEH code only if MSC is not - compiling as C++. - (pthread_push_cleanup): Include SEH code only if MSC is not - compiling as C++. - - * pthread.h: Include SEH code only if MSC is not - compiling as C++. - - * implement.h: Include SEH code only if MSC is not - compiling as C++. - - * cancel.c (ptw32_cancel_thread): Add _M_IX86 check. - (pthread_testcancel): Include SEH code only if MSC is not - compiling as C++. - (ptw32_cancel_self): Include SEH code only if MSC is not - compiling as C++. - -2000-01-06 Erik Hensema <erik.hensema at group2000.nl> - - * Makefile: Remove inconsistencies in 'cl' args - -2000-01-04 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * private.c (ptw32_get_exception_services_code): New; returns - value of EXCEPTION_PTW32_SERVICES. - (ptw32_processInitialize): Remove initialisation of - ptw32_exception_services which is no longer needed. - - * pthread.h (ptw32_exception_services): Remove extern. - (ptw32_get_exception_services_code): Add function prototype; - use this to return EXCEPTION_PTW32_SERVICES value instead of - using the ptw32_exception_services variable which I had - trouble exporting through pthread.def. - - * global.c (ptw32_exception_services): Remove declaration. - -1999-11-22 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * implement.h: Forward declare ptw32_new(); - - * misc.c (ptw32_new): New; alloc and initialise a new pthread_t. - (pthread_self): New thread struct is generated by new routine - ptw32_new(). - - * create.c (pthread_create): New thread struct is generated - by new routine ptw32_new(). - -1999-11-21 Ross Johnson <rpj at special.ise.canberra.edu.au> - - * global.c (ptw32_exception_services): Declare new variable. - - * private.c (ptw32_threadStart): Destroy thread's - cancelLock mutex; make 'catch' and '__except' usageimmune to - redfinitions in pthread.h. - (ptw32_processInitialize): Init new constant ptw32_exception_services. - - * create.c (pthread_create): Initialise thread's cancelLock - mutex. - - * cleanup.c (pthread_pop_cleanup): Make 'catch' and '__except' - usage immune to redfinition s in pthread.h. - - * private.c: Ditto. - - * pthread.h (catch): Redefine 'catch' so that C++ applications - won't catch our internal exceptions. - (__except): ditto for __except. - - * implement.h (ptw32_catch): Define internal version - of 'catch' because 'catch' is redefined by pthread.h. - (__except): ditto for __except. - (struct pthread_t_): Add cancelLock mutex for async cancel - safety. - -1999-11-21 Jason Nye <jnye at nbnet.nb.ca>, Erik Hensema <erik.hensema at group2000.nl> - - * cancel.c (ptw32_cancel_self): New; part of the async - cancellation implementation. - (ptw32_cancel_thread): Ditto; this function is X86 - processor specific. - (pthread_setcancelstate): Add check for pending async - cancel request and cancel the calling thread if - required; add async-cancel safety lock. - (pthread_setcanceltype): Ditto. - -1999-11-13 Erik Hensema <erik.hensema at group2000.nl> - - * configure.in (AC_OUTPUT): Put generated output into GNUmakefile - rather than Makefile. Makefile will become the MSC nmake compatible - version - -1999-11-13 John Bossom (John.Bossom@cognos.com> - - * misc.c (pthread_self): Add a note about GetCurrentThread - returning a pseudo-handle - -1999-11-10 Todd Owen <towen at lucidcalm.dropbear.id.au> - - * dll.c (dllMain): Free kernel32 ASAP. - If TryEnterCriticalSection is not being used, then free - the kernel32.dll handle now, rather than leaving it until - DLL_PROCESS_DETACH. - - Note: this is not a pedantic exercise in freeing unused - resources! It is a work-around for a bug in Windows 95 - (see microsoft knowledge base article, Q187684) which - does Bad Things when FreeLibrary is called within - the DLL_PROCESS_DETACH code, in certain situations. - Since w95 just happens to be a platform which does not - provide TryEnterCriticalSection, the bug will be - effortlessly avoided. - -1999-11-10 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * sync.c (pthread_join): Make it a deferred cancelation point. - - * misc.c (pthread_self): Explicitly initialise implicitly - created thread state to default values. - -1999-11-05 Tristan Savatier <tristan at mpegtv.com> - - * pthread.h (winsock.h): Include unconditionally. - (ETIMEDOUT): Change fallback value to that defined by winsock.h. - - * general: Patched for portability to WinCE. The details are - described in the file WinCE-PORT. Follow the instructions - in README.WinCE to make the appropriate changes in config.h. - -1999-10-30 Erik Hensema <erik.hensema at group2000.nl> - - * create.c (pthread_create): Explicitly initialise thread state to - default values. - - * cancel.c (pthread_setcancelstate): Check for NULL 'oldstate' - for compatibility with Solaris pthreads; - (pthread_setcanceltype): ditto: - -1999-10-23 Erik Hensema <erik.hensema at group2000.nl> - - * pthread.h (ctime_r): Fix incorrect argument "_tm" - -1999-10-21 Aurelio Medina <aureliom at crt.com> - - * pthread.h (_POSIX_THREADS): Only define it if it isn't - already defined. Projects may need to define this on - the CC command line under Win32 as it doesn't have unistd.h - -1999-10-17 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * rwlock.c (pthread_rwlock_destroy): Add cast to remove compile - warning. - - * condvar.c (pthread_cond_broadcast): Only release semaphores - if there are waiting threads. - -1999-10-15 Lorin Hochstein <lmh at xiphos.ca>, Peter Slacik <Peter.Slacik at tatramed.sk> - - * condvar.c (cond_wait_cleanup): New static cleanup handler for - cond_timedwait; - (cond_timedwait): pthread_cleanup_push args changed; - canceling a thread while it's in pthread_cond_wait - will now decrement the waiters count and cleanup if it's the - last waiter. - -1999-10-15 Graham Dumpleton <Graham.Dumpleton at ra.pad.otc.telstra.com.au> - - * condvar.c (cond_wait_cleanup): the last waiter will now reset the CV's - wasBroadcast flag - -Thu Sep 16 1999 Ross Johnson <rpj at swan.canberra.edu.au> - - * rwlock.c (pthread_rwlock_destroy): Add serialisation. - (_rwlock_check_need_init): Check for detroyed rwlock. - * rwlock.c: Check return codes from _rwlock_check_need_init(); - modify comments; serialise access to rwlock objects during - operations; rename rw_mutex to rw_lock. - * implement.h: Rename rw_mutex to rw_lock. - * mutex.c (pthread_mutex_destroy): Add serialisation. - (_mutex_check_need_init): Check for detroyed mutex. - * condvar.c (pthread_cond_destroy): Add serialisation. - (_cond_check_need_init): Check for detroyed condvar. - * mutex.c: Modify comments. - * condvar.c: Modify comments. - -1999-08-10 Aurelio Medina <aureliom at crt.com> - - * implement.h (pthread_rwlock_t_): Add. - * pthread.h (pthread_rwlock_t): Add. - (PTHREAD_RWLOCK_INITIALIZER): Add. - Add rwlock function prototypes. - * rwlock.c: New module. - * pthread.def: Add new rwlock functions. - * private.c (ptw32_processInitialize): initialise - ptw32_rwlock_test_init_lock critical section. - * global.c (ptw32_rwlock_test_init_lock): Add. - - * mutex.c (pthread_mutex_destroy): Don't free mutex memory - if mutex is PTHREAD_MUTEX_INITIALIZER and has not been - initialised yet. - -1999-08-08 Milan Gardian <mg at tatramed.sk> - - * mutex.c (pthread_mutex_destroy): Free mutex memory. - -1999-08-22 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * exit.c (pthread_exit): Fix reference to potentially - uninitialised pointer. - -1999-08-21 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * private.c (ptw32_threadStart): Apply fix of 1999-08-19 - this time to C++ and non-trapped C versions. Ommitted to - do this the first time through. - -1999-08-19 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * private.c (ptw32_threadStart): Return exit status from - the application thread startup routine. - - Milan Gardian <mg at tatramed.sk> - -1999-08-18 John Bossom <john.Bossom at cognos.com> - - * exit.c (pthread_exit): Put status into pthread_t->exitStatus - * private.c (ptw32_threadStart): Set pthread->exitStatus - on exit of try{} block. - * sync.c (pthread_join): use pthread_exitStatus value if the - thread exit doesn't return a value (for Mingw32 CRTDLL - which uses endthread instead of _endthreadex). - -Tue Aug 17 20:17:58 CDT 1999 Mumit Khan <khan at xraylith.wisc.edu> - - * create.c (pthread_create): Add CRTDLL suppport. - * exit.c (pthread_exit): Likewise. - * private.c (ptw32_threadStart): Likewise. - (ptw32_threadDestroy): Likewise. - * sync.c (pthread_join): Likewise. - * tests/join1.c (main): Warn about partial support for CRTDLL. - -Tue Aug 17 20:00:08 1999 Mumit Khan <khan at xraylith.wisc.edu> - - * Makefile.in (LD): Delete entry point. - * acconfig.h (STDCALL): Delete unused macro. - * configure.in: Remove test for STDCALL. - * config.h.in: Regenerate. - * errno.c (_errno): Fix self type. - * pthread.h (PT_STDCALL): Move from here to - * implement.h (PT_STDCALL): here. - (ptw32_threadStart): Fix prototype. - * private.c (ptw32_threadStart): Likewise. - -1999-08-14 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * exit.c (pthread_exit): Don't call pthread_self() but - get thread handle directly from TSD for efficiency. - -1999-08-12 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * private.c (ptw32_threadStart): ei[] only declared if _MSC_VER. - - * exit.c (pthread_exit): Check for implicitly created threads - to avoid raising an unhandled exception. - -1999-07-12 Peter Slacik <Peter.Slacik at tatramed.sk> - - * condvar.c (pthread_cond_destroy): Add critical section. - (cond_timedwait): Add critical section; check for timeout - waiting on semaphore. - (pthread_cond_broadcast): Add critical section. - -1999-07-09 Lorin Hochstein <lmh at xiphos.ca>, John Bossom <John.Bossom at Cognos.COM> - - The problem was that cleanup handlers were not executed when - pthread_exit() was called. - - * implement.h (pthread_t_): Add exceptionInformation element for - C++ per-thread exception information. - (general): Define and rename exceptions. - -1999-07-09 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * misc.c (CancelableWait): PTW32_EPS_CANCEL (SEH) and - ptw32_exception_cancel (C++) used to identify the exception. - - * cancel.c (pthread_testcancel): PTW32_EPS_CANCEL (SEH) and - ptw32_exception_cancel (C++) used to identify the exception. - - * exit.c (pthread_exit): throw/raise an exception to return to - ptw32_threadStart() to exit the thread. PTW32_EPS_EXIT (SEH) - and ptw32_exception_exit (C++) used to identify the exception. - - * private.c (ptw32_threadStart): Add pthread_exit exception trap; - clean up and exit the thread directly rather than via pthread_exit(). - -Sun May 30 00:25:02 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * semaphore.h (mode_t): Conditionally typedef it. - -Fri May 28 13:33:05 1999 Mark E. Armstrong <avail at pacbell.net> - - * condvar.c (pthread_cond_broadcast): Fix possible memory fault - -Thu May 27 13:08:46 1999 Peter Slacik <Peter.Slacik at tatramed.sk> - - * condvar.c (pthread_cond_broadcast): Fix logic bug - -Thu May 27 13:08:46 1999 Bossom, John <John.Bossom at Cognos.COM> - - * condvar.c (pthread_cond_broadcast): optimise sem_post loop - -Fri May 14 12:13:18 1999 Mike Russo <miker at eai.com> - - * attr.c (pthread_attr_setdetachstate): Fix logic bug - -Sat May 8 09:42:30 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * pthread.def (sem_open): Add. - (sem_close): Add. - (sem_unlink): Add. - (sem_getvalue): Add. - - * FAQ (Question 3): Add. - -Thu Apr 8 01:16:23 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * semaphore.c (sem_open): New function; returns an error (ENOSYS). - (sem_close): ditto. - (sem_unlink): ditto. - (sem_getvalue): ditto. - - * semaphore.h (_POSIX_SEMAPHORES): define. - -Wed Apr 7 14:09:52 1999 Ross Johnson <rpj at swan.canberra.edu.au> - - * errno.c (_REENTRANT || _MT): Invert condition. - - * pthread.h (_errno): Conditionally include prototype. - -Wed Apr 7 09:37:00 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * *.c (comments): Remove individual attributions - these are - documented sufficiently elsewhere. - - * implement.h (pthread.h): Remove extraneous include. - -Sun Apr 4 11:05:57 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * sched.c (sched.h): Include. - - * sched.h: New file for POSIX 1b scheduling. - - * pthread.h: Move opaque structures to implement.h; move sched_* - prototypes out and into sched.h. - - * implement.h: Add opaque structures from pthread.h. - - * sched.c (sched_yield): New function. - - * condvar.c (ptw32_sem_*): Rename to sem_*; except for - ptw32_sem_timedwait which is an private function. - -Sat Apr 3 23:28:00 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * Makefile.in (OBJS): Add errno.o. - -Fri Apr 2 11:08:50 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * implement.h (ptw32_sem_*): Remove prototypes now defined in - semaphore.h. - - * pthread.h (sempahore.h): Include. - - * semaphore.h: New file for POSIX 1b semaphores. - - * semaphore.c (ptw32_sem_timedwait): Moved to private.c. - - * pthread.h (ptw32_sem_t): Change to sem_t. - - * private.c (ptw32_sem_timedwait): Moved from semaphore.c; - set errno on error. - - * pthread.h (pthread_t_): Add per-thread errno element. - -Fri Apr 2 11:08:50 1999 John Bossom <jebossom at cognos.com> - - * semaphore.c (ptw32_sem_*): Change to sem_*; these functions - will be exported from the library; set errno on error. - - * errno.c (_errno): New file. New function. - -Fri Mar 26 14:11:45 1999 Tor Lillqvist <tml at iki.fi> - - * semaphore.c (ptw32_sem_timedwait): Check for negative - milliseconds. - -Wed Mar 24 11:32:07 1999 John Bossom <jebossom at cognos.com> - - * misc.c (CancelableWait): Initialise exceptionInformation[2]. - (pthread_self): Get a real Win32 thread handle for implicit threads. - - * cancel.c (pthread_testcancel): Initialise exceptionInformation[2]. - - * implement.h (SE_INFORMATION): Fix values. - - * private.c (ptw32_threadDestroy): Close the thread handle. - -Fri Mar 19 12:57:27 1999 Ross Johnson <rpj at swan.canberra.edu.au> - - * cancel.c (comments): Update and cleanup. - -Fri Mar 19 09:12:59 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * private.c (ptw32_threadStart): status returns PTHREAD_CANCELED. - - * pthread.h (PTHREAD_CANCELED): defined. - -Tue Mar 16 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * all: Add GNU LGPL and Copyright and Warranty. - -Mon Mar 15 00:20:13 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * condvar.c (pthread_cond_init): fix possible uninitialised use - of cv. - -Sun Mar 14 21:01:59 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * condvar.c (pthread_cond_destroy): don't do full cleanup if - static initialised cv has never been used. - (cond_timedwait): check result of auto-initialisation. - -Thu Mar 11 09:01:48 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * pthread.h (pthread_mutex_t): revert to (pthread_mutex_t *); - define a value to serve as PTHREAD_MUTEX_INITIALIZER. - (pthread_mutex_t_): remove staticinit and valid elements. - (pthread_cond_t): revert to (pthread_cond_t_ *); - define a value to serve as PTHREAD_COND_INITIALIZER. - (pthread_cond_t_): remove staticinit and valid elements. - - * mutex.c (pthread_mutex_t args): adjust indirection of references. - (all functions): check for PTHREAD_MUTEX_INITIALIZER value; - check for NULL (invalid). - - * condvar.c (pthread_cond_t args): adjust indirection of references. - (all functions): check for PTHREAD_COND_INITIALIZER value; - check for NULL (invalid). - -Wed Mar 10 17:18:12 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * misc.c (CancelableWait): Undo changes from Mar 8 and 7. - -Mon Mar 8 11:18:59 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * misc.c (CancelableWait): Ensure cancelEvent handle is the lowest - indexed element in the handles array. Enhance test for abandoned - objects. - - * pthread.h (PTHREAD_MUTEX_INITIALIZER): Trailing elements not - initialised are set to zero by the compiler. This avoids the - problem of initialising the opaque critical section element in it. - (PTHREAD_COND_INITIALIZER): Ditto. - - * semaphore.c (ptw32_sem_timedwait): Check sem == NULL earlier. - -Sun Mar 7 12:31:14 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * condvar.c (pthread_cond_init): set semaphore initial value - to 0, not 1. cond_timedwait was returning signaled immediately. - - * misc.c (CancelableWait): Place the cancel event handle first - in the handle table for WaitForMultipleObjects. This ensures that - the cancel event is recognised and acted apon if both objects - happen to be signaled together. - - * private.c (ptw32_cond_test_init_lock): Initialise and destroy. - - * implement.h (ptw32_cond_test_init_lock): Add extern. - - * global.c (ptw32_cond_test_init_lock): Add declaration. - - * condvar.c (pthread_cond_destroy): check for valid initialised CV; - flag destroyed CVs as invalid. - (pthread_cond_init): pthread_cond_t is no longer just a pointer. - This is because PTHREAD_COND_INITIALIZER needs state info to reside - in pthread_cond_t so that it can initialise on first use. Will work on - making pthread_cond_t (and other objects like it) opaque again, if - possible, later. - (cond_timedwait): add check for statically initialisation of - CV; initialise on first use. - (pthread_cond_signal): check for valid CV. - (pthread_cond_broadcast): check for valid CV. - (_cond_check_need_init): Add. - - * pthread.h (PTHREAD_COND_INITIALIZER): Fix. - (pthread_cond_t): no longer a pointer to pthread_cond_t_. - (pthread_cond_t_): add 'staticinit' and 'valid' elements. - -Sat Mar 6 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * implement.h: Undate comments. - -Sun Feb 21 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * pthread.h (PTHREAD_MUTEX_INITIALIZER): missing braces around - cs element initialiser. - -1999-02-21 Ben Elliston <bje at cygnus.com> - - * pthread.h (pthread_exit): The return type of this function is - void, not int. - - * exit.c (pthread_exit): Do not return 0. - -Sat Feb 20 16:03:30 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * dll.c (DLLMain): Expand TryEnterCriticalSection support test. - - * mutex.c (pthread_mutex_trylock): The check for - ptw32_try_enter_critical_section == NULL should have been - removed long ago. - -Fri Feb 19 16:03:30 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * sync.c (pthread_join): Fix pthread_equal() test. - - * mutex.c (pthread_mutex_trylock): Check mutex != NULL before - using it. - -Thu Feb 18 16:17:30 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * misc.c (pthread_equal): Fix inverted result. - - * Makefile.in: Use libpthread32.a as the name of the DLL export - library instead of pthread.lib. - - * condvar.c (pthread_cond_init): cv could have been used unitialised; - initialise. - - * create.c (pthread_create): parms could have been used unitialised; - initialise. - - * pthread.h (struct pthread_once_t_): Remove redefinition. - -Sat Feb 13 03:03:30 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * pthread.h (struct pthread_once_t_): Replaced. - - * misc.c (pthread_once): Replace with John Bossom's version; - has lighter weight serialisation; fixes problem of not holding - competing threads until after the init_routine completes. - -Thu Feb 11 13:34:14 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * misc.c (CancelableWait): Change C++ exception throw. - - * sync.c (pthread_join): Change FIXME comment - issue resolved. - -Wed Feb 10 12:49:11 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * configure: Various temporary changes. - - Kevin Ruland <Kevin.Ruland at anheuser-busch.com> - - * README: Update. - - * pthread.def (pthread_attr_getstackaddr): uncomment - (pthread_attr_setstackaddr): uncomment - -Fri Feb 5 13:42:30 1999 Ross Johnson <rpj at swan.canberra.edu.au> - - * semaphore.c: Comment format changes. - -Thu Feb 4 10:07:28 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * global.c: Remove ptw32_exception instantiation. - - * cancel.c (pthread_testcancel): Change C++ exception throw. - - * implement.h: Remove extern declaration. - -Wed Feb 3 13:04:44 1999 Ross Johnson <rpj at swan.canberra.edu.au> - - * cleanup.c: Rename ptw32_*_cleanup() to pthread_*_cleanup(). - - * pthread.def: Ditto. - - * pthread.h: Ditto. - - * pthread.def (pthread_cleanup_push): Remove from export list; - the function is defined as a macro under all compilers. - (pthread_cleanup_pop): Ditto. - - * pthread.h: Remove #if defined(). - -Wed Feb 3 10:13:48 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * sync.c (pthread_join): Check for NULL value_ptr arg; - check for detached threads. - -Tue Feb 2 18:07:43 1999 Ross Johnson <rpj at swan.canberra.edu.au> - - * implement.h: Add #include <pthread.h>. - Change sem_t to ptw32_sem_t. - -Tue Feb 2 18:07:43 1999 Kevin Ruland <Kevin.Ruland at anheuser-busch.com> - - * signal.c (pthread_sigmask): Add and modify casts. - Reverse LHS/RHS bitwise assignments. - - * pthread.h: Remove #include <semaphore.h>. - (PTW32_ATTR_VALID): Add cast. - (struct pthread_t_): Add sigmask element. - - * dll.c: Add "extern C" for DLLMain. - (DllMain): Add cast. - - * create.c (pthread_create): Set sigmask in thread. - - * condvar.c: Remove #include. Change sem_* to ptw32_sem_*. - - * attr.c: Changed #include. - - * Makefile.in: Additional targets and changes to build the library - as a DLL. - -Fri Jan 29 11:56:28 1999 Ross Johnson <rpj at swan.canberra.edu.au> - - * Makefile.in (OBJS): Add semaphore.o to list. - - * semaphore.c (ptw32_sem_timedwait): Move from private.c. - Rename sem_* to ptw32_sem_*. - - * pthread.h (pthread_cond_t): Change type of sem_t. - _POSIX_SEMAPHORES no longer defined. - - * semaphore.h: Contents moved to implement.h. - Removed from source tree. - - * implement.h: Add semaphore function prototypes and rename all - functions to prepend 'ptw32_'. They are - now private to the pthreads-win32 implementation. - - * private.c: Change #warning. - Move ptw32_sem_timedwait() to semaphore.c. - - * cleanup.c: Change #warning. - - * misc.c: Remove #include <errno.h> - - * pthread.def: Cleanup CVS merge conflicts. - - * global.c: Ditto. - - * ChangeLog: Ditto. - - * cleanup.c: Ditto. - -Sun Jan 24 01:34:52 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * semaphore.c (sem_wait): Remove second arg to - pthreadCancelableWait() call. - -Sat Jan 23 17:36:40 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * pthread.def: Add new functions to export list. - - * pthread.h (PTHREAD_MUTEX_AUTO_CS_NP): New. - (PTHREAD_MUTEX_FORCE_CS_NP): New. - - * README: Updated. - -Fri Jan 22 14:31:59 1999 Ross Johnson <rpj at swan.canberra.edu.au> - - * Makefile.in (CFLAGS): Remove -fhandle-exceptions. Not needed - with egcs. Add -g for debugging. - - * create.c (pthread_create): Replace __stdcall with PT_STDCALL - macro. This is a hack and must be fixed. - - * misc.c (CancelableWait): Remove redundant statement. - - * mutex.c (pthread_mutexattr_init): Cast calloc return value. - - * misc.c (CancelableWait): Add cast. - (pthread_self): Add cast. - - * exit.c (pthread_exit): Add cast. - - * condvar.c (pthread_condattr_init): Cast calloc return value. - - * cleanup.c: Reorganise conditional compilation. - - * attr.c (pthread_attr_init): Remove unused 'result'. - Cast malloc return value. - - * private.c (ptw32_callUserDestroyRoutines): Redo conditional - compilation. - - * misc.c (CancelableWait): C++ version uses 'throw'. - - * cancel.c (pthread_testcancel): Ditto. - - * implement.h (class ptw32_exception): Define for C++. - - * pthread.h: Fix C, C++, and Win32 SEH condition compilation - mayhem around pthread_cleanup_* defines. C++ version now uses John - Bossom's cleanup handlers. - (pthread_attr_t): Make 'valid' unsigned. - Define '_timeb' as 'timeb' for Ming32. - Define PT_STDCALL as nothing for Mingw32. May be temporary. - - * cancel.c (pthread_testcancel): Cast return value. - -Wed Jan 20 09:31:28 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * pthread.h (pthread_mutexattr_t): Changed to a pointer. - - * mutex.c (pthread_mutex_init): Conditionally create Win32 mutex - - from John Bossom's implementation. - (pthread_mutex_destroy): Conditionally close Win32 mutex - - from John Bossom's implementation. - (pthread_mutexattr_init): Replaced by John Bossom's version. - (pthread_mutexattr_destroy): Ditto. - (pthread_mutexattr_getpshared): New function from John Bossom's - implementation. - (pthread_mutexattr_setpshared): New function from John Bossom's - implementation. - -Tue Jan 19 18:27:42 1999 Ross Johnson <rpj at swan.canberra.edu.au> - - * pthread.h (pthreadCancelableTimedWait): New prototype. - (pthreadCancelableWait): Remove second argument. - - * misc.c (CancelableWait): New static function is - pthreadCancelableWait() renamed. - (pthreadCancelableWait): Now just calls CancelableWait() with - INFINITE timeout. - (pthreadCancelableTimedWait): Just calls CancelableWait() - with passed in timeout. - -Tue Jan 19 18:27:42 1999 Scott Lightner <scott at curriculum.com> - - * private.c (ptw32_sem_timedwait): 'abstime' arg really is - absolute time. Calculate relative time to wait from current - time before passing timeout to new routine - pthreadCancelableTimedWait(). - -Tue Jan 19 10:27:39 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * pthread.h (pthread_mutexattr_setforcecs_np): New prototype. - - * mutex.c (pthread_mutexattr_init): Init 'pshared' and 'forcecs' - attributes to 0. - (pthread_mutexattr_setforcecs_np): New function (not portable). - - * pthread.h (pthread_mutex_t): - Add 'mutex' element. Set to NULL in PTHREAD_MUTEX_INITIALIZER. - The pthread_mutex_*() routines will try to optimise performance - by choosing either mutexes or critical sections as the basis - for pthread mutexes for each indevidual mutex. - (pthread_mutexattr_t_): Add 'forcecs' element. - Some applications may choose to force use of critical sections - if they know that:- - the mutex is PROCESS_PRIVATE and, - either the OS supports TryEnterCriticalSection() or - pthread_mutex_trylock() will never be called on the mutex. - This attribute will be setable via a non-portable routine. - - Note: We don't yet support PROCESS_SHARED mutexes, so the - implementation as it stands will default to Win32 mutexes only if - the OS doesn't support TryEnterCriticalSection. On Win9x, and early - versions of NT 'forcecs' will need to be set in order to get - critical section based mutexes. - -Sun Jan 17 12:01:26 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * pthread.h (PTHREAD_MUTEX_INITIALIZER): Init new 'staticinit' - value to '1' and existing 'valid' value to '1'. - - * global.c (ptw32_mutex_test_init_lock): Add. - - * implement.h (ptw32_mutex_test_init_lock.): Add extern. - - * private.c (ptw32_processInitialize): Init critical section for - global lock used by _mutex_check_need_init(). - (ptw32_processTerminate): Ditto (:s/Init/Destroy/). - - * dll.c (dllMain): Move call to FreeLibrary() so that it is only - called once when the process detaches. - - * mutex.c (_mutex_check_need_init): New static function to test - and init PTHREAD_MUTEX_INITIALIZER mutexes. Provides serialised - access to the internal state of the uninitialised static mutex. - Called from pthread_mutex_trylock() and pthread_mutex_lock() which - do a quick unguarded test to check if _mutex_check_need_init() - needs to be called. This is safe as the test is conservative - and is repeated inside the guarded section of - _mutex_check_need_init(). Thus in all calls except the first - calls to lock static mutexes, the additional overhead to lock any - mutex is a single memory fetch and test for zero. - - * pthread.h (pthread_mutex_t_): Add 'staticinit' member. Mutexes - initialised by PTHREAD_MUTEX_INITIALIZER aren't really initialised - until the first attempt to lock it. Using the 'valid' - flag (which flags the mutex as destroyed or not) to record this - information would be messy. It is possible for a statically - initialised mutex such as this to be destroyed before ever being - used. - - * mutex.c (pthread_mutex_trylock): Call _mutex_check_need_init() - to test/init PTHREAD_MUTEX_INITIALIZER mutexes. - (pthread_mutex_lock): Ditto. - (pthread_mutex_unlock): Add check to ensure we don't try to unlock - an unitialised static mutex. - (pthread_mutex_destroy): Add check to ensure we don't try to delete - a critical section that we never created. Allows us to destroy - a static mutex that has never been locked (and hence initialised). - (pthread_mutex_init): Set 'staticinit' flag to 0 for the new mutex. - -Sun Jan 17 12:01:26 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * private.c (ptw32_sem_timedwait): Move from semaphore.c. - - * semaphore.c : Remove redundant #includes. - (ptw32_sem_timedwait): Move to private.c. - (sem_wait): Add missing abstime arg to pthreadCancelableWait() call. - -Fri Jan 15 23:38:05 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * condvar.c (cond_timedwait): Remove comment. - -Fri Jan 15 15:41:28 1999 Ross Johnson <rpj at swan.canberra.edu.au> - - * pthread.h: Add new 'abstime' arg to pthreadCancelableWait() - prototype. - - * condvar.c (cond_timedwait): New generalised function called by - both pthread_cond_wait() and pthread_cond_timedwait(). This is - essentially pthread_cond_wait() renamed and modified to add the - 'abstime' arg and call the new ptw32_sem_timedwait() instead of - sem_wait(). - (pthread_cond_wait): Now just calls the internal static - function cond_timedwait() with an INFINITE wait. - (pthread_cond_timedwait): Now implemented. Calls the internal - static function cond_timedwait(). - - * implement.h (ptw32_sem_timedwait): New internal function - prototype. - - * misc.c (pthreadCancelableWait): Added new 'abstime' argument - to allow shorter than INFINITE wait. - - * semaphore.c (ptw32_sem_timedwait): New function for internal - use. This is essentially sem_wait() modified to add the - 'abstime' arg and call the modified (see above) - pthreadCancelableWait(). - -Thu Jan 14 14:27:13 1999 Ross Johnson <rpj at swan.canberra.edu.au> - - * cleanup.c: Correct _cplusplus to __cplusplus wherever used. - - * Makefile.in: Add CC=g++ and add -fhandle-exceptions to CFLAGS. - The derived Makefile will compile all units of the package as C++ - so that those which include try/catch exception handling should work - properly. The package should compile ok if CC=gcc, however, exception - handling will not be included and thus thread cancellation, for - example, will not work. - - * cleanup.c (ptw32_pop_cleanup): Add #warning to compile this - file as C++ if using a cygwin32 environment. Perhaps the whole package - should be compiled using g++ under cygwin. - - * private.c (ptw32_threadStart): Change #error directive - into #warning and bracket for __CYGWIN__ and derivative compilers. - -Wed Jan 13 09:34:52 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * build.bat: Delete old binaries before compiling/linking. - -Tue Jan 12 09:58:38 1999 Tor Lillqvist <tml at iki.fi> - - * dll.c: The Microsoft compiler pragmas probably are more - appropriately protected by _MSC_VER than by _WIN32. - - * pthread.h: Define ETIMEDOUT. This should be returned by - pthread_cond_timedwait which is not implemented yet as of - snapshot-1999-01-04-1305. It was implemented in the older version. - The Microsoft compiler pragmas probably are more appropriately - protected by _MSC_VER than by _WIN32. - - * pthread.def: pthread_mutex_destroy was missing from the def file - - * condvar.c (pthread_cond_broadcast): Ensure we only wait on threads - if there were any waiting on the condition. - I think pthread_cond_broadcast should do the WaitForSingleObject - only if cv->waiters > 0? Otherwise it seems to hang, at least in the - testg thread program from glib. - -Tue Jan 12 09:58:38 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * condvar.c (pthread_cond_timedwait): Fix function description - comments. - - * semaphore.c (sem_post): Correct typo in comment. - -Mon Jan 11 20:33:19 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * pthread.h: Re-arrange conditional compile of pthread_cleanup-* - macros. - - * cleanup.c (ptw32_push_cleanup): Provide conditional - compile of cleanup->prev. - -1999-01-11 Tor Lillqvist <tml at iki.fi> - - * condvar.c (pthread_cond_init): Invert logic when testing the - return value from calloc(). - -Sat Jan 9 14:32:08 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * implement.h: Compile-time switch for CYGWIN derived environments - to use CreateThread instead of _beginthreadex. Ditto for ExitThread. - Patch provided by Anders Norlander <anorland at hem2.passagen.se>. - -Tue Jan 5 16:33:04 1999 Ross Johnson <rpj at swan.canberra.edu.au> - - * cleanup.c (ptw32_pop_cleanup): Add C++ version of __try/__except - block. Move trailing "}" out of #ifdef _WIN32 block left there by - (rpj's) mistake. - - * private.c: Remove #include <errno.h> which is included by pthread.h. - -1998-12-11 Ben Elliston <bje at toilet.to.cygnus.com> - - * README: Update info about subscribing to the mailing list. - -Mon Jan 4 11:23:40 1999 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * all: No code changes, just cleanup. - - remove #if 0 /* Pre Bossom */ enclosed code. - - Remove some redundant #includes. - * pthread.h: Update implemented/unimplemented routines list. - * Tag the bossom merge branch getting ready to merge back to main - trunk. - -Tue Dec 29 13:11:16 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * implement.h: Move the following struct definitions to pthread.h: - pthread_t_, pthread_attr_t_, pthread_mutex_t_, pthread_mutex_t_, - pthread_mutexattr_t_, pthread_key_t_, pthread_cond_t_, - pthread_condattr_t_, pthread_once_t_. - - * pthread.h: Add "_" prefix to pthread_push_cleanup and - pthread_pop_cleanup internal routines, and associated struct and - typedefs. - - * buildlib.bat: Add compile command for semaphore.c - - * pthread.def: Comment out pthread_atfork routine name. - Now unimplemented. - - * tsd.c (pthread_setspecific): Rename tkAssocCreate to - ptw32_tkAssocCreate. - (pthread_key_delete): Rename tkAssocDestroy to - ptw32_tkAssocDestroy. - - * sync.c (pthread_join): Rename threadDestroy to ptw32_threadDestroy - - * sched.c (is_attr): attr is now **attr (was *attr), so add extra - NULL pointer test. - (pthread_attr_setschedparam): Increase redirection for attr which is - now a **. - (pthread_attr_getschedparam): Ditto. - (pthread_setschedparam): Change thread validation and rename "thread" - Win32 thread Handle element name to match John Bossom's version. - (pthread_getschedparam): Ditto. - - * private.c (ptw32_threadDestroy): Rename call to - callUserDestroyRoutines() as ptw32_callUserDestroyRoutines() - - * misc.c: Add #include "implement.h". - - * dll.c: Remove defined(KLUDGE) wrapped code. - - * fork.c: Remove redefinition of ENOMEM. - Remove pthread_atfork() and fork() with #if 0/#endif. - - * create.c (pthread_create): Rename threadStart and threadDestroy calls - to ptw32_threadStart and ptw32_threadDestroy. - - * implement.h: Rename "detachedstate" to "detachstate". - - * attr.c: Rename "detachedstate" to "detachstate". - -Mon Dec 28 09:54:39 1998 John Bossom - - * semaphore.c: Initial version. - * semaphore.h: Initial version. - -Mon Dec 28 09:54:39 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * pthread.h (pthread_attr_t_): Change to *pthread_attr_t. - -Mon Dec 28 09:54:39 1998 John Bossom, Ben Elliston - - * attr.c (pthread_attr_setstacksize): Merge with John's version. - (pthread_attr_getstacksize): Merge with John's version. - (pthread_attr_setstackaddr): Merge with John's version. - (pthread_attr_getstackaddr): Merge with John's version. - (pthread_attr_init): Merge with John's version. - (pthread_attr_destroy): Merge with John's version. - (pthread_attr_getdetachstate): Merge with John's version. - (pthread_attr_setdetachstate): Merge with John's version. - (is_attr): attr is now **attr (was *attr), so add extra NULL pointer - test. - -Mon Dec 28 09:54:39 1998 Ross Johnson - - * implement.h (pthread_attr_t_): Add and rename elements in JEB's - version to correspond to original, so that it can be used with - original attr routines. - - * pthread.h: Add #endif at end which was truncated in merging. - -Sun Dec 20 14:51:58 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * misc.c (pthreadCancelableWait): New function by John Bossom. Non-standard - but provides a hook that can be used to implement cancellation points in - applications that use this library. - - * pthread.h (pthread_cleanup_pop): C++ (non-WIN32) version uses - try/catch to emulate John Bossom's WIN32 __try/__finally behaviour. - In the WIN32 version __finally block, add a test for AbnormalTermination otherwise - cleanup is only run if the cleanup_pop execute arg is non-zero. Cancellation - should cause the cleanup to run irrespective of the execute arg. - - * condvar.c (pthread_condattr_init): Replaced by John Bossom's version. - (pthread_condattr_destroy): Replaced by John Bossom's version. - (pthread_condattr_getpshared): Replaced by John Bossom's version. - (pthread_condattr_setpshared): Replaced by John Bossom's version. - (pthread_cond_init): Replaced by John Bossom's version. - Fix comment (refered to mutex rather than condition variable). - (pthread_cond_destroy): Replaced by John Bossom's version. - (pthread_cond_wait): Replaced by John Bossom's version. - (pthread_cond_timedwait): Replaced by John Bossom's version. - (pthread_cond_signal): Replaced by John Bossom's version. - (pthread_cond_broadcast): Replaced by John Bossom's version. - -Thu Dec 17 19:10:46 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * tsd.c (pthread_key_create): Replaced by John Bossom's version. - (pthread_key_delete): Replaced by John Bossom's version. - (pthread_setspecific): Replaced by John Bossom's version. - (pthread_getspecific): Replaced by John Bossom's version. - -Mon Dec 7 09:44:40 1998 John Bossom - - * cancel.c (pthread_setcancelstate): Replaced. - (pthread_setcanceltype): Replaced. - (pthread_testcancel): Replaced. - (pthread_cancel): Replaced. - - * exit.c (pthread_exit): Replaced. - - * misc.c (pthread_self): Replaced. - (pthread_equal): Replaced. - - * sync.c (pthread_detach): Replaced. - (pthread_join): Replaced. - - * create.c (pthread_create): Replaced. - - * private.c (ptw32_processInitialize): New. - (ptw32_processTerminate): New. - (ptw32_threadStart): New. - (ptw32_threadDestroy): New. - (ptw32_cleanupStack): New. - (ptw32_tkAssocCreate): New. - (ptw32_tkAssocDestroy): New. - (ptw32_callUserDestroyRoutines): New. - - * implement.h: Added non-API structures and declarations. - - * dll.c (PthreadsEntryPoint): Cast return value of GetProcAddress - to resolve compile warning from MSVC. - - * dll.c (DLLmain): Replaced. - * dll.c (PthreadsEntryPoint): - Re-applied Anders Norlander's patch:- - Initialize ptw32_try_enter_critical_section at startup - and release kernel32 handle when DLL is being unloaded. - -Sun Dec 6 21:54:35 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * buildlib.bat: Fix args to CL when building the .DLL - - * cleanup.c (ptw32_destructor_run_all): Fix TSD key management. - This is a tidy-up before TSD and Thread management is completely - replaced by John Bossom's code. - - * tsd.c (pthread_key_create): Fix TSD key management. - - * global.c (ptw32_key_virgin_next): Initialise. - - * build.bat: New DOS script to compile and link a pthreads app - using Microsoft's CL compiler linker. - * buildlib.bat: New DOS script to compile all the object files - and create pthread.lib and pthread.dll using Microsoft's CL - compiler linker. - -1998-12-05 Anders Norlander <anorland at hem2.passagen.se> - - * implement.h (ptw32_try_enter_critical_section): New extern - * dll.c (ptw32_try_enter_critical_section): New pointer to - TryEnterCriticalSection if it exists; otherwise NULL. - * dll.c (PthreadsEntryPoint): - Initialize ptw32_try_enter_critical_section at startup - and release kernel32 handle when DLL is being unloaded. - * mutex.c (pthread_mutex_trylock): Replaced check for NT with - a check if ptw32_try_enter_critical_section is valid - pointer to a function. Call ptw32_try_enter_critical_section - instead of TryEnterCriticalSection to avoid errors on Win95. - -Thu Dec 3 13:32:00 1998 Ross Johnson <rpj at ise.canberra.edu.au> - - * README: Correct cygwin32 compatibility statement. - -Sun Nov 15 21:24:06 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * cleanup.c (ptw32_destructor_run_all): Declare missing void * arg. - Fixup CVS merge conflicts. - -1998-10-30 Ben Elliston <bje at cygnus.com> - - * condvar.c (cond_wait): Fix semantic error. Test for equality - instead of making an assignment. - -Fri Oct 30 15:15:50 1998 Ross Johnson <rpj at swan.canberra.edu.au> - - * cleanup.c (ptw32_handler_push): Fixed bug appending new - handler to list reported by Peter Slacik - <Peter.Slacik at leibinger.freinet.de>. - (new_thread): Rename poorly named local variable to - "new_handler". - -Sat Oct 24 18:34:59 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * global.c: Add TSD key management array and index declarations. - - * implement.h: Ditto for externs. - -Fri Oct 23 00:08:09 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * implement.h (PTW32_TSD_KEY_REUSE): Add enum. - - * private.c (ptw32_delete_thread): Add call to - ptw32_destructor_run_all() to clean up the threads keys. - - * cleanup.c (ptw32_destructor_run_all): Check for no more dirty - keys to run destructors on. Assume that the destructor call always - succeeds and set the key value to NULL. - -Thu Oct 22 21:44:44 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * tsd.c (pthread_setspecific): Add key management code. - (pthread_key_create): Ditto. - (pthread_key_delete): Ditto. - - * implement.h (struct ptw32_tsd_key): Add status member. - - * tsd.c: Add description of pthread_key_delete() from the - standard as a comment. - -Fri Oct 16 17:38:47 1998 Ross Johnson <rpj at swan.canberra.edu.au> - - * cleanup.c (ptw32_destructor_run_all): Fix and improve - stepping through the key table. - -Thu Oct 15 14:05:01 1998 Ross Johnson <rpj at swan.canberra.edu.au> - - * private.c (ptw32_new_thread): Remove init of destructorstack. - No longer an element of pthread_t. - - * tsd.c (pthread_setspecific): Fix type declaration and cast. - (pthread_getspecific): Ditto. - (pthread_getspecific): Change error return value to NULL if key - is not in use. - -Thu Oct 15 11:53:21 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * global.c (ptw32_tsd_key_table): Fix declaration. - - * implement.h(ptw32_TSD_keys_TlsIndex): Add missing extern. - (ptw32_tsd_mutex): Ditto. - - * create.c (ptw32_start_call): Fix "keys" array declaration. - Add comment. - - * tsd.c (pthread_setspecific): Fix type declaration and cast. - (pthread_getspecific): Ditto. - - * cleanup.c (ptw32_destructor_run_all): Declare missing loop - counter. - -Wed Oct 14 21:09:24 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * private.c (ptw32_new_thread): Increment ptw32_threads_count. - (ptw32_delete_thread): Decrement ptw32_threads_count. - Remove some comments. - - * exit.c (ptw32_exit): : Fix two pthread_mutex_lock() calls that - should have been pthread_mutex_unlock() calls. - (ptw32_vacuum): Remove call to ptw32_destructor_pop_all(). - - * create.c (pthread_create): Fix two pthread_mutex_lock() calls that - should have been pthread_mutex_unlock() calls. - - * global.c (ptw32_tsd_mutex): Add mutex for TSD operations. - - * tsd.c (pthread_key_create): Add critical section. - (pthread_setspecific): Ditto. - (pthread_getspecific): Ditto. - (pthread_key_delete): Ditto. - - * sync.c (pthread_join): Fix two pthread_mutex_lock() calls that - should have been pthread_mutex_unlock() calls. - -Mon Oct 12 00:00:44 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * implement.h (ptw32_tsd_key_table): New. - - * create.c (ptw32_start_call): Initialise per-thread TSD keys - to NULL. - - * misc.c (pthread_once): Correct typo in comment. - - * implement.h (ptw32_destructor_push): Remove. - (ptw32_destructor_pop): Remove. - (ptw32_destructor_run_all): Rename from ptw32_destructor_pop_all. - (PTW32_TSD_KEY_DELETED): Add enum. - (PTW32_TSD_KEY_INUSE): Add enum. - - * cleanup.c (ptw32_destructor_push): Remove. - (ptw32_destructor_pop): Remove. - (ptw32_destructor_run_all): Totally revamped TSD. - - * dll.c (ptw32_TSD_keys_TlsIndex): Initialise. - - * tsd.c (pthread_setspecific): Totally revamped TSD. - (pthread_getspecific): Ditto. - (pthread_create): Ditto. - (pthread_delete): Ditto. - -Sun Oct 11 22:44:55 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * global.c (ptw32_tsd_key_table): Add new global. - - * implement.h (ptw32_tsd_key_t and struct ptw32_tsd_key): - Add. - (struct _pthread): Remove destructorstack. - - * cleanup.c (ptw32_destructor_run_all): Rename from - ptw32_destructor_pop_all. The key destructor stack was made - global rather than per-thread. No longer removes destructor nodes - from the stack. Comments updated. - -1998-10-06 Ben Elliston <bje at cygnus.com> - - * condvar.c (cond_wait): Use POSIX, not Win32 mutex calls. - (pthread_cond_broadcast): Likewise. - (pthread_cond_signal): Likewise. - -1998-10-05 Ben Elliston <bje at cygnus.com> - - * pthread.def: Update. Some functions aren't available yet, others - are macros in <pthread.h>. - - * tests/join.c: Remove; useless. - -Mon Oct 5 14:25:08 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * pthread.def: New file for building the DLL. - -1998-10-05 Ben Elliston <bje at cygnus.com> - - * misc.c (pthread_equal): Correct inverted logic bug. - (pthread_once): Use the POSIX mutex primitives, not Win32. Remove - irrelevant FIXME comment. - - * global.c (PTHREAD_MUTEX_INITIALIZER): Move to pthread.h. - - * pthread.h (PTHREAD_MUTEX_INITIALIZER): Define. - (pthread_mutex_t): Reimplement as a struct containing a valid - flag. If the flag is ever down upon entry to a mutex operation, - we call pthread_mutex_create() to initialise the object. This - fixes the problem of how to handle statically initialised objects - that can't call InitializeCriticalSection() due to their context. - (PTHREAD_ONCE_INIT): Define. - - * mutex.c (pthread_mutex_init): Set valid flag. - (pthread_mutex_destroy): Clear valid flag. - (pthread_mutex_lock): Check and handle the valid flag. - (pthread_mutex_unlock): Likewise. - (pthread_mutex_trylock): Likewise. - - * tests/mutex3.c: New file; test for the static initialisation - macro. Passes. - - * tests/create1.c: New file; test pthread_create(). Passes. - - * tests/equal.c: Poor test; remove. - - * tests/equal1.c New file; test pthread_equal(). Passes. - - * tests/once1.c: New file; test for pthread_once(). Passes. - - * tests/self.c: Remove; rename to self1.c. - - * tests/self1.c: This is the old self.c. - - * tests/self2.c: New file. Test pthread_self() with a single - thread. Passes. - - * tests/self3.c: New file. Test pthread_self() with a couple of - threads to ensure their thread IDs differ. Passes. - -1998-10-04 Ben Elliston <bje at cygnus.com> - - * tests/mutex2.c: Test pthread_mutex_trylock(). Passes. - - * tests/mutex1.c: New basic test for mutex functions (it passes). - (main): Eliminate warning. - - * configure.in: Test for __stdcall, not _stdcall. Typo. - - * configure: Regenerate. - - * attr.c (pthread_attr_setstackaddr): Remove FIXME comment. Win32 - does know about ENOSYS after all. - (pthread_attr_setstackaddr): Likewise. - -1998-10-03 Ben Elliston <bje at cygnus.com> - - * configure.in: Test for the `_stdcall' keyword. Define `STDCALL' - to `_stdcall' if we have it, null otherwise. - - * configure: Regenerate. - - * acconfig.h (STDCALL): New define. - - * config.h.in: Regenerate. - - * create.c (ptw32_start_call): Add STDCALL prefix. - - * mutex.c (pthread_mutex_init): Correct function signature. - - * attr.c (pthread_attr_init): Only zero out the `sigmask' member - if we have the sigset_t type. - - * pthread.h: No need to include <unistd.h>. It doesn't even exist - on Win32! Again, an artifact of cross-compilation. - (pthread_sigmask): Only provide if we have the sigset_t type. - - * process.h: Remove. This was a stand-in before we started doing - native compilation under Win32. - - * pthread.h (pthread_mutex_init): Make `attr' argument const. - -1998-10-02 Ben Elliston <bje at cygnus.com> - - * COPYING: Remove. - - * COPYING.LIB: Add. This library is under the LGPL. - -1998-09-13 Ben Elliston <bje at cygnus.com> - - * configure.in: Test for required system features. - - * configure: Generate. - - * acconfig.h: New file. - - * config.h.in: Generate. - - * Makefile.in: Renamed from Makefile. - - * COPYING: Import from a recent GNU package. - - * config.guess: Likewise. - - * config.sub: Likewise. - - * install-sh: Likewise. - - * config.h: Remove. - - * Makefile: Likewise. - -1998-09-12 Ben Elliston <bje at cygnus.com> - - * windows.h: No longer needed; remove. - - * windows.c: Likewise. - -Sat Sep 12 20:09:24 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * windows.h: Remove error number definitions. These are in <errno.h> - - * tsd.c: Add comment explaining rationale for not building - POSIX TSD on top of Win32 TLS. - -1998-09-12 Ben Elliston <bje at cygnus.com> - - * {most}.c: Include <errno.h> to get POSIX error values. - - * signal.c (pthread_sigmask): Only provide if HAVE_SIGSET_T is - defined. - - * config.h: #undef features, don't #define them. This will be - generated by autoconf very soon. - -1998-08-11 Ben Elliston <bje at cygnus.com> - - * Makefile (LIB): Define. - (clean): Define target. - (all): Build a library not just the object files. - - * pthread.h: Provide a definition for struct timespec if we don't - already have one. - - * windows.c (TlsGetValue): Bug fix. - -Thu Aug 6 15:19:22 1998 Ross Johnson <rpj at swan.canberra.edu.au> - - * misc.c (pthread_once): Fix arg 1 of EnterCriticalSection() - and LeaveCriticalSection() calls to pass address-of lock. - - * fork.c (pthread_atfork): Typecast (void (*)(void *)) funcptr - in each ptw32_handler_push() call. - - * exit.c (ptw32_exit): Fix attr arg in - pthread_attr_getdetachstate() call. - - * private.c (ptw32_new_thread): Typecast (HANDLE) NULL. - (ptw32_delete_thread): Ditto. - - * implement.h: (PTW32_MAX_THREADS): Add define. This keeps - changing in an attempt to make thread administration data types - opaque and cleanup DLL startup. - - * dll.c (PthreadsEntryPoint): - (ptw32_virgins): Remove malloc() and free() calls. - (ptw32_reuse): Ditto. - (ptw32_win32handle_map): Ditto. - (ptw32_threads_mutex_table): Ditto. - - * global.c (_POSIX_THREAD_THREADS_MAX): Initialise with - PTW32_MAX_THREADS. - (ptw32_virgins): Ditto. - (ptw32_reuse): Ditto. - (ptw32_win32handle_map): Ditto. - (ptw32_threads_mutex_table): Ditto. - - * create.c (pthread_create): Typecast (HANDLE) NULL. - Typecast (unsigned (*)(void *)) start_routine. - - * condvar.c (pthread_cond_init): Add address-of operator & to - arg 1 of pthread_mutex_init() call. - (pthread_cond_destroy): Add address-of operator & to - arg 1 of pthread_mutex_destroy() call. - - * cleanup.c (ptw32_destructor_pop_all): Add (int) cast to - pthread_getspecific() arg. - (ptw32_destructor_pop): Add (void *) cast to "if" conditional. - (ptw32_destructor_push): Add (void *) cast to - ptw32_handler_push() "key" arg. - (malloc.h): Add include. - - * implement.h (ptw32_destructor_pop): Add prototype. - - * tsd.c (implement.h): Add include. - - * sync.c (pthread_join): Remove target_thread_mutex and it's - initialisation. Rename getdetachedstate to getdetachstate. - Remove unused variable "exitcode". - (pthread_detach): Remove target_thread_mutex and it's - initialisation. Rename getdetachedstate to getdetachstate. - Rename setdetachedstate to setdetachstate. - - * signal.c (pthread_sigmask): Rename SIG_SET to SIG_SETMASK. - Cast "set" to (long *) in assignment to passify compiler warning. - Add address-of operator & to thread->attr.sigmask in memcpy() call - and assignment. - (pthread_sigmask): Add address-of operator & to thread->attr.sigmask - in memcpy() call and assignment. - - * windows.h (THREAD_PRIORITY_ERROR_RETURN): Add. - (THREAD_PRIORITY_LOWEST): Add. - (THREAD_PRIORITY_HIGHEST): Add. - - * sched.c (is_attr): Add function. - (implement.h): Add include. - (pthread_setschedparam): Rename all instances of "sched_policy" - to "sched_priority". - (pthread_getschedparam): Ditto. - -Tue Aug 4 16:57:58 1998 Ross Johnson <rpj at swan.canberra.edu.au> - - * private.c (ptw32_delete_thread): Fix typo. Add missing ';'. - - * global.c (ptw32_virgins): Change types from pointer to - array pointer. - (ptw32_reuse): Ditto. - (ptw32_win32handle_map): Ditto. - (ptw32_threads_mutex_table): Ditto. - - * implement.h(ptw32_virgins): Change types from pointer to - array pointer. - (ptw32_reuse): Ditto. - (ptw32_win32handle_map): Ditto. - (ptw32_threads_mutex_table): Ditto. - - * private.c (ptw32_delete_thread): Fix "entry" should be "thread". - - * misc.c (pthread_self): Add extern for ptw32_threadID_TlsIndex. - - * global.c: Add comment. - - * misc.c (pthread_once): Fix member -> dereferences. - Change ptw32_once_flag to once_control->flag in "if" test. - -Tue Aug 4 00:09:30 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * implement.h(ptw32_virgins): Add extern. - (ptw32_virgin_next): Ditto. - (ptw32_reuse): Ditto. - (ptw32_reuse_top): Ditto. - (ptw32_win32handle_map): Ditto. - (ptw32_threads_mutex_table): Ditto. - - * global.c (ptw32_virgins): Changed from array to pointer. - Storage allocation for the array moved into dll.c. - (ptw32_reuse): Ditto. - (ptw32_win32handle_map): Ditto. - (ptw32_threads_mutex_table): Ditto. - - * dll.c (PthreadsEntryPoint): Set up thread admin storage when - DLL is loaded. - - * fork.c (pthread_atfork): Fix function pointer arg to all - ptw32_handler_push() calls. Change "arg" arg to NULL in child push. - - * exit.c: Add windows.h and process.h includes. - (ptw32_exit): Add local detachstate declaration. - (ptw32_exit): Fix incorrect name for pthread_attr_getdetachstate(). - - * pthread.h (_POSIX_THREAD_ATTR_STACKSIZE): Move from global.c - (_POSIX_THREAD_ATTR_STACKADDR): Ditto. - - * create.c (pthread_create): Fix #if should be #ifdef. - (ptw32_start_call): Remove usused variables. - - * process.h: Create. - - * windows.h: Move _beginthreadex and _endthreadex into - process.h - -Mon Aug 3 21:19:57 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * condvar.c (pthread_cond_init): Add NULL attr to - pthread_mutex_init() call - default attributes will be used. - (cond_wait): Fix typo. - (cond_wait): Fix typo - cv was ev. - (pthread_cond_broadcast): Fix two identical typos. - - * cleanup.c (ptw32_destructor_pop_all): Remove _ prefix from - PTHREAD_DESTRUCTOR_ITERATIONS. - - * pthread.h: Move _POSIX_* values into posix.h - - * pthread.h: Fix typo in pthread_mutex_init() prototype. - - * attr.c (pthread_attr_init): Fix error in priority member init. - - * windows.h (THREAD_PRIORITY_NORMAL): Add. - - * pthread.h (sched_param): Add missing ';' to struct definition. - - * attr.c (pthread_attr_init): Remove obsolete pthread_attr_t - member initialisation - cancelstate, canceltype, cancel_pending. - (is_attr): Make arg "attr" a const. - - * implement.h (PTW32_HANDLER_POP_LIFO): Remove definition. - (PTW32_HANDLER_POP_FIFO): Ditto. - (PTW32_VALID): Add missing newline escape (\). - (ptw32_handler_node): Make element "next" a pointer. - -1998-08-02 Ben Elliston <bje at cygnus.com> - - * windows.h: Remove duplicate TlsSetValue() prototype. Add - TlsGetValue() prototype. - (FALSE): Define. - (TRUE): Likewise. - Add forgotten errno values. Guard against multiple #includes. - - * windows.c: New file. Implement stubs for Win32 functions. - - * Makefile (SRCS): Remove. Not explicitly needed. - (CFLAGS): Add -Wall for all warnings with GCC. - -Sun Aug 2 19:03:42 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * config.h: Create. This is a temporary stand-in for autoconf yet - to be done. - (HAVE_SIGNAL_H): Add. - - * pthread.h: Minor rearrangement for temporary config.h. - -Fri Jul 31 14:00:29 1998 Ross Johnson <rpj at swan.canberra.edu.au> - - * cleanup.c (ptw32_destructor_pop): Implement. Removes - destructors associated with a key without executing them. - (ptw32_destructor_pop_all): Add FIXME comment. - - * tsd.c (pthread_key_delete): Add call to ptw32_destructor_pop(). - -Fri Jul 31 00:05:45 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * tsd.c (pthread_key_create): Update to properly associate - the destructor routine with the key. - (pthread_key_delete): Add FIXME comment. - - * exit.c (ptw32_vacuum): Add call to - ptw32_destructor_pop_all(). - - * implement.h (ptw32_handler_pop_all): Add prototype. - (ptw32_destructor_pop_all): Ditto. - - * cleanup.c (ptw32_destructor_push): Implement. This is just a - call to ptw32_handler_push(). - (ptw32_destructor_pop_all): Implement. This is significantly - different to ptw32_handler_pop_all(). - - * Makefile (SRCS): Create. Preliminary. - - * windows.h: Create. Contains Win32 definitions for compile - testing. This is just a standin for the real one. - - * pthread.h (SIG_UNBLOCK): Fix typo. Was SIG_BLOCK. - (windows.h): Add include. Required for CRITICAL_SECTION. - (pthread_cond_t): Move enum declaration outside of struct - definition. - (unistd.h): Add include - may be temporary. - - * condvar.c (windows.h): Add include. - - * implement.h (PTW32_THIS): Remove - no longer required. - (PTW32_STACK): Use pthread_self() instead of PTW32_THIS. - -Thu Jul 30 23:12:45 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * implement.h: Remove ptw32_find_entry() prototype. - - * private.c: Extend comments. - Remove ptw32_find_entry() - no longer needed. - - * create.c (ptw32_start_call): Add call to TlsSetValue() to - store the thread ID. - - * dll.c (PthreadsEntryPoint): Implement. This is called - whenever a process loads the DLL. Used to initialise thread - local storage. - - * implement.h: Add ptw32_threadID_TlsIndex. - Add ()s around PTW32_VALID expression. - - * misc.c (pthread_self): Re-implement using Win32 TLS to store - the threads own ID. - -Wed Jul 29 11:39:03 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * private.c: Corrections in comments. - (ptw32_new_thread): Alter "if" flow to be more natural. - - * cleanup.c (ptw32_handler_push): Same as below. - - * create.c (pthread_create): Same as below. - - * private.c (ptw32_new_thread): Rename "new" to "new_thread". - Since when has a C programmer been required to know C++? - -Tue Jul 28 14:04:29 1998 Ross Johnson <rpj at swan.canberra.edu.au> - - * implement.h: Add PTW32_VALID macro. - - * sync.c (pthread_join): Modify to use the new thread - type and ptw32_delete_thread(). Rename "target" to "thread". - Remove extra local variable "target". - (pthread_detach): Ditto. - - * signal.c (pthread_sigmask): Move init of "us" out of inner block. - Fix instance of "this" should have been "us". Rename "us" to "thread". - - * sched.c (pthread_setschedparam): Modify to use the new thread - type. - (pthread_getschedparam): Ditto. - - * private.c (ptw32_find_thread): Fix return type and arg. - - * implement.h: Remove PTW32_YES and PTW32_NO. - (ptw32_new_thread): Add prototype. - (ptw32_find_thread): Ditto. - (ptw32_delete_thread): Ditto. - (ptw32_new_thread_entry): Remove prototype. - (ptw32_find_thread_entry): Ditto. - (ptw32_delete_thread_entry): Ditto. - ( PTW32_NEW, PTW32_INUSE, PTW32_EXITED, PTW32_REUSE): - Add. - - - * create.c (pthread_create): Minor rename "us" to "new" (I need - these cues but it doesn't stop me coming out with some major bugs - at times). - Load start_routine and arg into the thread so the wrapper can - call it. - - * exit.c (pthread_exit): Fix pthread_this should be pthread_self. - - * cancel.c (pthread_setcancelstate): Change - ptw32_threads_thread_t * to pthread_t and init with - pthread_this(). - (pthread_setcanceltype): Ditto. - - * exit.c (ptw32_exit): Add new pthread_t arg. - Rename ptw32_delete_thread_entry to ptw32_delete_thread. - Rename "us" to "thread". - (pthread_exit): Call ptw32_exit with added thread arg. - - * create.c (ptw32_start_call): Insert missing ")". - Add "us" arg to ptw32_exit() call. - (pthread_create): Modify to use new thread allocation scheme. - - * private.c: Added detailed explanation of the new thread - allocation scheme. - (ptw32_new_thread): Totally rewritten to use - new thread allocation scheme. - (ptw32_delete_thread): Ditto. - (ptw32_find_thread): Obsolete. - -Mon Jul 27 17:46:37 1998 Ross Johnson <rpj at swan.canberra.edu.au> - - * create.c (pthread_create): Start of rewrite. Not completed yet. - - * private.c (ptw32_new_thread_entry): Start of rewrite. Not - complete. - - * implement.h (ptw32_threads_thread): Rename, remove thread - member, add win32handle and ptstatus members. - (ptw32_t): Add. - - * pthread.h: pthread_t is no longer mapped directly to a Win32 - HANDLE type. This is so we can let the Win32 thread terminate and - reuse the HANDLE while pthreads holds it's own thread ID until - the last waiting join exits. - -Mon Jul 27 00:20:37 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * private.c (ptw32_delete_thread_entry): Destroy the thread - entry attribute object before deleting the thread entry itself. - - * attr.c (pthread_attr_init): Initialise cancel_pending = FALSE. - (pthread_attr_setdetachstate): Rename "detached" to "detachedstate". - (pthread_attr_getdetachstate): Ditto. - - * exit.c (ptw32_exit): Fix incorrect check for detachedstate. - - * implement.h (ptw32_call_t): Remove env member. - -Sun Jul 26 13:06:12 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * implement.h (ptw32_new_thread_entry): Fix prototype. - (ptw32_find_thread_entry): Ditto. - (ptw32_delete_thread_entry): Ditto. - (ptw32_exit): Add prototype. - - * exit.c (ptw32_exit): New function. Called from pthread_exit() - and ptw32_start_call() to exit the thread. It allows an extra - argument which is the return code passed to _endthreadex(). - (ptw32_exit): Move thread entry delete call from ptw32_vacuum() - into here. Add more explanation of thread entry deletion. - (ptw32_exit): Clarify comment. - - * create.c (ptw32_start_call): Change pthread_exit() call to - ptw32_exit() call. - - * exit.c (ptw32_vacuum): Add thread entry deletion code - moved from ptw32_start_call(). See next item. - (pthread_exit): Remove longjmp(). Add mutex lock around thread table - manipulation code. This routine now calls _enthreadex(). - - * create.c (ptw32_start_call): Remove setjmp() call and move - cleanup code out. Call pthread_exit(NULL) to terminate the thread. - -1998-07-26 Ben Elliston <bje at cygnus.com> - - * tsd.c (pthread_getspecific): Update comments. - - * mutex.c (pthread_mutexattr_setpshared): Not supported; remove. - (pthread_mutexattr_getpshared): Likewise. - - * pthread.h (pthread_mutexattr_setpshared): Remove prototype. - (pthread_mutexattr_getpshared): Likewise. - -Sun Jul 26 00:09:59 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * sync.c: Rename all instances of ptw32_count_mutex to - ptw32_table_mutex. - - * implement.h: Rename ptw32_count_mutex to - ptw32_table_mutex. - - * global.c: Rename ptw32_count_mutex to - ptw32_table_mutex. - - * create.c (pthread_create): Add critical sections. - (ptw32_start_call): Rename ptw32_count_mutex to - ptw32_table_mutex. - - * cancel.c (pthread_setcancelstate): Fix indirection bug and rename - "this" to "us". - - * signal.c (pthread_sigmask): Rename "this" to "us" and fix some - minor syntax errors. Declare "us" and initialise it. - - * sync.c (pthread_detach): Rename "this" to "target". - - * pthread.h: Converting PTHREAD_* defines to alias the (const int) - values in global.c. - - * global.c: Started converting PTHREAD_* defines to (const int) as - a part of making the eventual pthreads DLL binary compatible - through version changes. - - * condvar.c (cond_wait): Add cancelation point. This applies the - point to both pthread_cond_wait() and pthread_cond_timedwait(). - - * exit.c (pthread_exit): Rename "this" to "us". - - * implement.h: Add comment. - - * sync.c (pthread_join): I've satisfied myself that pthread_detach() - does set the detached attribute in the thread entry attributes - to PTHREAD_CREATE_DETACHED. "if" conditions were changed to test - that attribute instead of a separate flag. - - * create.c (pthread_create): Rename "this" to "us". - (pthread_create): cancelstate and canceltype are not attributes - so the copy to thread entry attribute storage was removed. - Only the thread itself can change it's cancelstate or canceltype, - ie. the thread must exist already. - - * private.c (ptw32_delete_thread_entry): Mutex locks removed. - Mutexes must be applied at the caller level. - (ptw32_new_thread_entry): Ditto. - (ptw32_new_thread_entry): Init cancelstate, canceltype, and - cancel_pending to default values. - (ptw32_new_thread_entry): Rename "this" to "new". - (ptw32_find_thread_entry): Rename "this" to "entry". - (ptw32_delete_thread_entry): Rename "thread_entry" to "entry". - - * create.c (ptw32_start_call): Mutexes changed to - ptw32_count_mutex. All access to the threads table entries is - under the one mutex. Otherwise chaos reigns. - -Sat Jul 25 23:16:51 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * implement.h (ptw32_threads_thread): Move cancelstate and - canceltype members out of pthread_attr_t into here. - - * fork.c (fork): Add comment. - -1998-07-25 Ben Elliston <bje at cygnus.com> - - * fork.c (fork): Autoconfiscate. - -Sat Jul 25 00:00:13 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * create.c (ptw32_start_call): Set thread priority. Ensure our - thread entry is removed from the thread table but only if - pthread_detach() was called and there are no waiting joins. - (pthread_create): Set detach flag in thread entry if the - thread is created PTHREAD_CREATE_DETACHED. - - * pthread.h (pthread_attr_t): Rename member "detachedstate". - - * attr.c (pthread_attr_init): Rename attr members. - - * exit.c (pthread_exit): Fix indirection mistake. - - * implement.h (PTW32_THREADS_TABLE_INDEX): Add. - - * exit.c (ptw32_vacuum): Fix incorrect args to - ptw32_handler_pop_all() calls. - Make thread entry removal conditional. - - * sync.c (pthread_join): Add multiple join and async detach handling. - - * implement.h (PTW32_THREADS_TABLE_INDEX): Add. - - * global.c (ptw32_threads_mutex_table): Add. - - * implement.h (ptw32_once_flag): Remove. - (ptw32_once_lock): Ditto. - (ptw32_threads_mutex_table): Add. - - * global.c (ptw32_once_flag): Remove. - (ptw32_once_lock): Ditto. - - * sync.c (pthread_join): Fix tests involving new return value - from ptw32_find_thread_entry(). - (pthread_detach): Ditto. - - * private.c (ptw32_find_thread_entry): Failure return code - changed from -1 to NULL. - -Fri Jul 24 23:09:33 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * create.c (pthread_create): Change . to -> in sigmask memcpy() args. - - * pthread.h: (pthread_cancel): Add function prototype. - (pthread_testcancel): Ditto. - -1998-07-24 Ben Elliston <bje at cygnus.com> - - * pthread.h (pthread_condattr_t): Rename dummy structure member. - (pthread_mutexattr_t): Likewise. - -Fri Jul 24 21:13:55 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * cancel.c (pthread_cancel): Implement. - (pthread_testcancel): Implement. - - * exit.c (pthread_exit): Add comment explaining the longjmp(). - - * implement.h (ptw32_threads_thread_t): New member cancelthread. - (PTW32_YES): Define. - (PTW32_NO): Define. - (RND_SIZEOF): Remove. - - * create.c (pthread_create): Rename cancelability to cancelstate. - - * pthread.h (pthread_attr_t): Rename cancelability to cancelstate. - (PTHREAD_CANCELED): Define. - -1998-07-24 Ben Elliston <bje at cygnus.com> - - * pthread.h (SIG_BLOCK): Define if not already defined. - (SIG_UNBLOCK): Likewise. - (SIG_SETMASK): Likewise. - (pthread_attr_t): Add signal mask member. - (pthread_sigmask): Add function prototype. - - * signal.c (pthread_sigmask): Implement. - - * create.c: #include <string.h> to get a prototype for memcpy(). - (pthread_create): New threads inherit their creator's signal - mask. Copy the signal mask to the new thread structure if we know - about signals. - -Fri Jul 24 16:33:17 1998 Ross Johnson <rpj at swan.canberra.edu.au> - - * fork.c (pthread_atfork): Add all the necessary push calls. - Local implementation semantics: - If we get an ENOMEM at any time then ALL handlers - (including those from previous pthread_atfork() calls) will be - popped off each of the three atfork stacks before we return. - (fork): Add all the necessary pop calls. Add the thread cancellation - and join calls to the child fork. - Add #includes. - - * implement.h: (ptw32_handler_push): Fix return type and stack arg - type in prototype. - (ptw32_handler_pop): Fix stack arg type in prototype. - (ptw32_handler_pop_all): Fix stack arg type in prototype. - - * cleanup.c (ptw32_handler_push): Change return type to int and - return ENOMEM if malloc() fails. - - * sync.c (pthread_detach): Use equality test, not assignment. - - * create.c (ptw32_start_call): Add call to Win32 CloseHandle() - if thread is detached. - -1998-07-24 Ben Elliston <bje at cygnus.com> - - * sync.c (pthread_detach): Close the Win32 thread handle to - emulate detached (or daemon) threads. - -Fri Jul 24 03:00:25 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * sync.c (pthread_join): Save valueptr arg in joinvalueptr for - pthread_exit() to use. - - * private.c (ptw32_new_thread_entry): Initialise joinvalueptr to - NULL. - - * create.c (ptw32_start_call): Rewrite to facilitate joins. - pthread_exit() will do a longjmp() back to here. Does appropriate - cleanup and exit/return from the thread. - (pthread_create): _beginthreadex() now passes a pointer to our - thread table entry instead of just the call member of that entry. - - * implement.h (ptw32_threads_thread): New member - void ** joinvalueptr. - (ptw32_call_t): New member jmpbuf env. - - * exit.c (pthread_exit): Major rewrite to handle joins and handing - value pointer to joining thread. Uses longjmp() back to - ptw32_start_call(). - - * create.c (pthread_create): Ensure values of new attribute members - are copied to the thread attribute object. - - * attr.c (pthread_attr_destroy): Fix merge conflicts. - (pthread_attr_getdetachstate): Fix merge conflicts. - (pthread_attr_setdetachstate): Fix merge conflicts. - - * pthread.h: Fix merge conflicts. - - * sync.c (pthread_join): Fix merge conflicts. - -Fri Jul 24 00:21:21 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * sync.c (pthread_join): Add check for valid and joinable - thread. - (pthread_detach): Implement. After checking for a valid and joinable - thread, it's still a no-op. - - * private.c (ptw32_find_thread_entry): Bug prevented returning - an error value in some cases. - - * attr.c (pthread_attr_setdetachedstate): Implement. - (pthread_attr_getdetachedstate): Implement. - - * implement.h: Move more hidden definitions into here from - pthread.h. - -1998-07-24 Ben Elliston <bje at cygnus.com> - - * pthread.h (PTHREAD_CREATE_JOINABLE): Define. - (PTHREAD_CREATE_DETACHED): Likewise. - (pthread_attr_t): Add new structure member `detached'. - (pthread_attr_getdetachstate): Add function prototype. - (pthread_attr_setdetachstate): Likewise. - - * sync.c (pthread_join): Return if the target thread is detached. - - * attr.c (pthread_attr_init): Initialise cancelability and - canceltype structure members. - (pthread_attr_getdetachstate): Implement. - (pthread_attr_setdetachstate): Likewise. - - * implement.h (PTW32_CANCEL_DEFAULTS): Remove. Bit fields - proved to be too cumbersome. Set the defaults in attr.c using the - public PTHREAD_CANCEL_* constants. - - * cancel.c: New file. - - * pthread.h (sched_param): Define this type. - (pthread_attr_getschedparam): Add function prototype. - (pthread_attr_setschedparam): Likewise. - (pthread_setcancelstate): Likewise. - (pthread_setcanceltype): Likewise. - (sched_get_priority_min): Likewise. - (sched_get_priority_max): Likewise. - (pthread_mutexattr_setprotocol): Remove; not supported. - (pthread_mutexattr_getprotocol): Likewise. - (pthread_mutexattr_setprioceiling): Likewise. - (pthread_mutexattr_getprioceiling): Likewise. - (pthread_attr_t): Add canceltype member. Update comments. - (SCHED_OTHER): Define this scheduling policy constant. - (SCHED_FIFO): Likewise. - (SCHED_RR): Likewise. - (SCHED_MIN): Define the lowest possible value for this constant. - (SCHED_MAX): Likewise, the maximum possible value. - (PTHREAD_CANCEL_ASYNCHRONOUS): Redefine. - (PTHREAD_CANCEL_DEFERRED): Likewise. - - * sched.c: New file. - (pthread_setschedparam): Implement. - (pthread_getschedparam): Implement. - (sched_get_priority_max): Validate policy argument. - (sched_get_priority_min): Likewise. - - * mutex.c (pthread_mutexattr_setprotocol): Remove; not supported. - (pthread_mutexattr_getprotocol): Likewise. - (pthread_mutexattr_setprioceiling): Likewise. - (pthread_mutexattr_getprioceiling): Likewise. - -Fri Jul 24 00:21:21 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * create.c (pthread_create): Arg to ptw32_new_thread_entry() - changed. See next entry. Move mutex locks out. Changes made yesterday - and today allow us to start the new thread running rather than - temporarily suspended. - - * private.c (ptw32_new_thread_entry): ptw32_thread_table - was changed back to a table of thread structures rather than pointers. - As such we're trading storage for increaded speed. This routine - was modified to work with the new table. Mutex lock put in around - global data accesses. - (ptw32_find_thread_entry): Ditto - (ptw32_delete_thread_entry): Ditto - -Thu Jul 23 23:25:30 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * global.c: New. Global data objects declared here. These moved from - pthread.h. - - * pthread.h: Move implementation hidden definitions into - implement.h. - - * implement.h: Move implementation hidden definitions from - pthread.h. Add constants to index into the different handler stacks. - - * cleanup.c (ptw32_handler_push): Simplify args. Restructure. - (ptw32_handler_pop): Simplify args. Restructure. - (ptw32_handler_pop_all): Simplify args. Restructure. - -Wed Jul 22 00:16:22 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * attr.c, implement.h, pthread.h, ChangeLog: Resolve CVS merge - conflicts. - - * private.c (ptw32_find_thread_entry): Changes to return type - to support leaner ptw32_threads_table[] which now only stores - ptw32_thread_thread_t *. - (ptw32_new_thread_entry): Internal changes. - (ptw32_delete_thread_entry): Internal changes to avoid contention. - Calling routines changed accordingly. - - * pthread.h: Modified cleanup macros to use new generic push and pop. - Added destructor and atfork stacks to ptw32_threads_thread_t. - - * cleanup.c (ptw32_handler_push, ptw32_handler_pop, - ptw32_handler_pop_all): Renamed cleanup push and pop routines - and made generic to handle destructors and atfork handlers as - well. - - * create.c (ptw32_start_call): New function is a wrapper for - all new threads. It allows us to do some cleanup when the thread - returns, ie. that is otherwise only done if the thread is cancelled. - - * exit.c (ptw32_vacuum): New function contains code from - pthread_exit() that we need in the new ptw32_start_call() - as well. - - * implement.h: Various additions and minor changes. - - * pthread.h: Various additions and minor changes. - Change cleanup handler macros to use generic handler push and pop - functions. - - * attr.c: Minor mods to all functions. - (is_attr): Implemented missing function. - - * create.c (pthread_create): More clean up. - - * private.c (ptw32_find_thread_entry): Implement. - (ptw32_delete_thread_entry): Implement. - (ptw32_new_thread_entry): Implement. - These functions manipulate the implementations internal thread - table and are part of general code cleanup and modularisation. - They replace ptw32_getthreadindex() which was removed. - - * exit.c (pthread_exit): Changed to use the new code above. - - * pthread.h: Add cancelability constants. Update comments. - -1998-07-22 Ben Elliston <bje at cygnus.com> - - * attr.c (pthread_setstacksize): Update test of attr argument. - (pthread_getstacksize): Likewise. - (pthread_setstackaddr): Likewise. - (pthread_getstackaddr): Likewise. - (pthread_attr_init): No need to allocate any storage. - (pthread_attr_destroy): No need to free any storage. - - * mutex.c (is_attr): Not likely to be needed; remove. - (remove_attr): Likewise. - (insert_attr): Likewise. - - * implement.h (ptw32_mutexattr_t): Moved to a public definition - in pthread.h. There was little gain in hiding these details. - (ptw32_condattr_t): Likewise. - (ptw32_attr_t): Likewise. - - * pthread.h (pthread_atfork): Add function prototype. - (pthread_attr_t): Moved here from implement.h. - - * fork.c (pthread_atfork): Preliminary implementation. - (ptw32_fork): Likewise. - -Wed Jul 22 00:16:22 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * cleanup.c (ptw32_cleanup_push): Implement. - (ptw32_cleanup_pop): Implement. - (ptw32_do_cancellation): Implement. - These are private to the implementation. The real cleanup functions - are macros. See below. - - * pthread.h (pthread_cleanup_push): Implement as a macro. - (pthread_cleanup_pop): Implement as a macro. - Because these are macros which start and end a block, the POSIX scoping - requirement is observed. See the comment in the file. - - * exit.c (pthread_exit): Refine the code. - - * create.c (pthread_create): Code cleanup. - - * implement.h (RND_SIZEOF): Add RND_SIZEOF(T) to round sizeof(T) - up to multiple of DWORD. - Add function prototypes. - - * private.c (ptw32_getthreadindex): "*thread" should have been - "thread". Detect empty slot fail condition. - -1998-07-20 Ben Elliston <bje at cygnus.com> - - * misc.c (pthread_once): Implement. Don't use a per-application - flag and mutex--make `pthread_once_t' contain these elements in - their structure. The earlier version had incorrect semantics. - - * pthread.h (ptw32_once_flag): Add new variable. Remove. - (ptw32_once_lock): Add new mutex lock to ensure integrity of - access to ptw32_once_flag. Remove. - (pthread_once): Add function prototype. - (pthread_once_t): Define this type. - -Mon Jul 20 02:31:05 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * private.c (ptw32_getthreadindex): Implement. - - * pthread.h: Add application static data dependent on - _PTHREADS_BUILD_DLL define. This is needed to avoid allocating - non-sharable static data within the pthread DLL. - - * implement.h: Add ptw32_cleanup_stack_t, ptw32_cleanup_node_t - and PTW32_HASH_INDEX. - - * exit.c (pthread_exit): Begin work on cleanup and de-allocate - thread-private storage. - - * create.c (pthread_create): Add thread to thread table. - Keep a thread-private copy of the attributes with default values - filled in when necessary. Same for the cleanup stack. Make - pthread_create C run-time library friendly by using _beginthreadex() - instead of CreateThread(). Fix error returns. - -Sun Jul 19 16:26:23 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * implement.h: Rename pthreads_thread_count to ptw32_threads_count. - Create ptw32_threads_thread_t struct to keep thread specific data. - - * create.c: Rename pthreads_thread_count to ptw32_threads_count. - (pthread_create): Handle errors from CreateThread(). - -1998-07-19 Ben Elliston <bje at cygnus.com> - - * condvar.c (pthread_cond_wait): Generalise. Moved from here .. - (cond_wait): To here. - (pthread_cond_timedwait): Implement; use generalised cond_wait(). - - * pthread.h (pthread_key_t): Define this type. - (pthread_key_create): Add function prototype. - (pthread_setspecific): Likewise. - (pthread_getspecific): Likwise. - (pthread_key_delete): Likewise. - - * tsd.c (pthread_key_create): Implement. - (pthread_setspecific): Likewise. - (pthread_getspecific): Likewise. - (pthread_key_delete): Likewise. - - * mutex.c (pthread_mutex_trylock): Return ENOSYS if this function - is called on a Win32 platform which is not Windows NT. - -1998-07-18 Ben Elliston <bje at cygnus.com> - - * condvar.c (pthread_condattr_init): Do not attempt to malloc any - storage; none is needed now that condattr_t is an empty struct. - (pthread_condattr_destory): Likewise; do not free storage. - (pthread_condattr_setpshared): No longer supported; return ENOSYS. - (pthread_condattr_getpshared): Likewise. - (pthread_cond_init): Implement with help from Douglas Schmidt. - Remember to initialise the cv's internal mutex. - (pthread_cond_wait): Likewise. - (pthread_cond_signal): Likewise. - (pthread_cond_broadcast): Likewise. - (pthread_cond_timedwait): Preliminary implementation, but I need - to see some API documentation for `WaitForMultipleObject'. - (pthread_destory): Implement. - - * pthread.h (pthread_cond_init): Add function protoype. - (pthread_cond_broadcast): Likewise. - (pthread_cond_signal): Likewise. - (pthread_cond_timedwait): Likewise. - (pthread_cond_wait): Likewise. - (pthread_cond_destroy): Likewise. - (pthread_cond_t): Define this type. Fix for u_int. Do not assume - that the mutex contained withing the pthread_cond_t structure will - be a critical section. Use our new POSIX type! - - * implement.h (ptw32_condattr_t): Remove shared attribute. - -1998-07-17 Ben Elliston <bje at cygnus.com> - - * pthread.h (PTHREADS_PROCESS_PRIVATE): Remove. - (PTHREAD_PROCESS_SHARED): Likewise. No support for mutexes shared - across processes for now. - (pthread_mutex_t): Use a Win32 CRITICAL_SECTION type for better - performance. - - * implement.h (ptw32_mutexattr_t): Remove shared attribute. - - * mutex.c (pthread_mutexattr_setpshared): This optional function - is no longer supported, since we want to implement POSIX mutex - variables using the much more efficient Win32 critical section - primitives. Critical section objects in Win32 cannot be shared - between processes. - (pthread_mutexattr_getpshared): Likewise. - (pthread_mutexattr_init): No need to malloc any storage; the - attributes structure is now empty. - (pthread_mutexattr_destroy): This is now a nop. - (pthread_mutex_init): Use InitializeCriticalSection(). - (pthread_mutex_destroy): Use DeleteCriticalSection(). - (pthread_mutex_lock): Use EnterCriticalSection(). - (pthread_mutex_trylock): Use TryEnterCriticalSection(). This is - not supported by Windows 9x, but trylock is a hack anyway, IMHO. - (pthread_mutex_unlock): Use LeaveCriticalSection(). - -1998-07-14 Ben Elliston <bje at cygnus.com> - - * attr.c (pthread_attr_setstacksize): Implement. - (pthread_attr_getstacksize): Likewise. - (pthread_attr_setstackaddr): Likewise. - (pthread_attr_getstackaddr): Likewise. - (pthread_attr_init): Likewise. - (pthread_attr_destroy): Likewise. - - * condvar.c (pthread_condattr_init): Add `_cond' to function name. - - * mutex.c (pthread_mutex_lock): Add `_mutex' to function name. - (pthread_mutex_trylock): Likewise. - (pthread_mutex_unlock): Likewise. - - * pthread.h (pthread_condattr_setpshared): Fix typo. - (pthread_attr_init): Add function prototype. - (pthread_attr_destroy): Likewise. - (pthread_attr_setstacksize): Likewise. - (pthread_attr_getstacksize): Likewise. - (pthread_attr_setstackaddr): Likewise. - (pthread_attr_getstackaddr): Likewise. - -Mon Jul 13 01:09:55 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * implement.h: Wrap in #ifndef _IMPLEMENT_H - - * create.c (pthread_create): Map stacksize attr to Win32. - - * mutex.c: Include implement.h - -1998-07-13 Ben Elliston <bje at cygnus.com> - - * condvar.c (pthread_condattr_init): Implement. - (pthread_condattr_destroy): Likewise. - (pthread_condattr_setpshared): Likewise. - (pthread_condattr_getpshared): Likewise. - - * implement.h (PTHREAD_THREADS_MAX): Remove trailing semicolon. - (PTHREAD_STACK_MIN): Specify; needs confirming. - (ptw32_attr_t): Define this type. - (ptw32_condattr_t): Likewise. - - * pthread.h (pthread_mutex_t): Define this type. - (pthread_condattr_t): Likewise. - (pthread_mutex_destroy): Add function prototype. - (pthread_lock): Likewise. - (pthread_trylock): Likewise. - (pthread_unlock): Likewise. - (pthread_condattr_init): Likewise. - (pthread_condattr_destroy): Likewise. - (pthread_condattr_setpshared): Likewise. - (pthread_condattr_getpshared): Likewise. - - * mutex.c (pthread_mutex_init): Implement. - (pthread_mutex_destroy): Likewise. - (pthread_lock): Likewise. - (pthread_trylock): Likewise. - (pthread_unlock): Likewise. - -1998-07-12 Ben Elliston <bje at cygnus.com> - - * implement.h (ptw32_mutexattr_t): Define this implementation - internal type. Application programmers only see a mutex attribute - object as a void pointer. - - * pthread.h (pthread_mutexattr_t): Define this type. - (pthread_mutexattr_init): Add function prototype. - (pthread_mutexattr_destroy): Likewise. - (pthread_mutexattr_setpshared): Likewise. - (pthread_mutexattr_getpshared): Likewise. - (pthread_mutexattr_setprotocol): Likewise. - (pthread_mutexattr_getprotocol): Likewise. - (pthread_mutexattr_setprioceiling): Likewise. - (pthread_mutexattr_getprioceiling): Likewise. - (PTHREAD_PROCESS_PRIVATE): Define. - (PTHREAD_PROCESS_SHARED): Define. - - * mutex.c (pthread_mutexattr_init): Implement. - (pthread_mutexattr_destroy): Implement. - (pthread_mutexattr_setprotocol): Implement. - (pthread_mutexattr_getprotocol): Likewise. - (pthread_mutexattr_setprioceiling): Likewise. - (pthread_mutexattr_getprioceiling): Likewise. - (pthread_mutexattr_setpshared): Likewise. - (pthread_mutexattr_getpshared): Likewise. - (insert_attr): New function; very preliminary implementation! - (is_attr): Likewise. - (remove_attr): Likewise. - -Sat Jul 11 14:48:54 1998 Ross Johnson <rpj at ixobrychus.canberra.edu.au> - - * implement.h: Preliminary implementation specific defines. - - * create.c (pthread_create): Preliminary implementation. - -1998-07-11 Ben Elliston <bje at cygnus.com> - - * sync.c (pthread_join): Implement. - - * misc.c (pthread_equal): Likewise. - - * pthread.h (pthread_join): Add function prototype. - (pthread_equal): Likewise. - -1998-07-10 Ben Elliston <bje at cygnus.com> - - * misc.c (pthread_self): Implement. - - * exit.c (pthread_exit): Implement. - - * pthread.h (pthread_exit): Add function prototype. - (pthread_self): Likewise. - (pthread_t): Define this type. - -1998-07-09 Ben Elliston <bje at cygnus.com> - - * create.c (pthread_create): A dummy stub right now. - - * pthread.h (pthread_create): Add function prototype. diff --git a/platform/win32/msvc/external/pthreads.2/FAQ b/platform/win32/msvc/external/pthreads.2/FAQ deleted file mode 100644 index d7399c3ef05..00000000000 --- a/platform/win32/msvc/external/pthreads.2/FAQ +++ /dev/null @@ -1,451 +0,0 @@ - ========================================= - PTHREADS-WIN32 Frequently Asked Questions - ========================================= - -INDEX ------ - -Q 1 What is it? - -Q 2 Which of the several dll versions do I use? - or, - What are all these pthread*.dll and pthread*.lib files? - -Q 3 What is the library naming convention? - -Q 4 Cleanup code default style or: it used to work when I built - the library myself, but now it doesn't - why? - -Q 5 Why is the default library version now less exception-friendly? - -Q 6 Should I use Cygwin or Mingw32 as a development environment? - -Q 7 Now that pthreads-win32 builds under Mingw32, why do I get - memory access violations (segfaults)? - -Q 8 How do I use pthread.dll for Win32 (Visual C++ 5.0) - -Q 9 Cancelation doesn't work for me, why? - -Q 10 How do I generate pthreadGCE.dll and libpthreadw32.a for use - with Mingw32? - -Q 11 Why isn't pthread_t defined as a scalar (e.g. pointer or int) - like it is for other POSIX threads implementations? - -============================================================================= - -Q 1 What is it? ---- - -Pthreads-win32 is an Open Source Software implementation of the -Threads component of the POSIX 1003.1c 1995 Standard for Microsoft's -Win32 environment. Some functions from POSIX 1003.1b are also -supported including semaphores. Other related functions include -the set of read-write lock functions. The library also supports -some of the functionality of the Open Group's Single Unix -specification, version 2, namely mutex types. - -See the file "ANNOUNCE" for more information including standards -conformance details and list of supported routines. - - ------------------------------------------------------------------------------- - -Q 2 Which of the several dll versions do I use? ---- or, - What are all these pthread*.dll and pthread*.lib files? - -Simply, you only use one of them, but you need to choose carefully. - -The most important choice you need to make is whether to use a -version that uses exceptions internally, or not (there are versions -of the library that use exceptions as part of the thread -cancelation and cleanup implementation, and one that uses -setjmp/longjmp instead). - -There is some contension amongst POSIX threads experts as -to how POSIX threads cancelation and exit should work -with languages that include exceptions and handlers, e.g. -C++ and even C (Microsoft's Structured Exceptions). - -The issue is: should cancelation of a thread in, say, -a C++ application cause object destructors and C++ exception -handlers to be invoked as the stack unwinds during thread -exit, or not? - -There seems to be more opinion in favour of using the -standard C version of the library (no EH) with C++ applications -since this appears to be the assumption commercial pthreads -implementations make. Therefore, if you use an EH version -of pthreads-win32 then you may be under the illusion that -your application will be portable, when in fact it is likely to -behave very differently linked with other pthreads libraries. - -Now you may be asking: why have you kept the EH versions of -the library? - -There are a couple of reasons: -- there is division amongst the experts and so the code may - be needed in the future. (Yes, it's in the repository and we - can get it out anytime in the future, but ...) -- pthreads-win32 is one of the few implementations, and possibly - the only freely available one, that has EH versions. It may be - useful to people who want to play with or study application - behaviour under these conditions. - - ------------------------------------------------------------------------------- - -Q 3 What is the library naming convention? ---- - -Because the library is being built using various exception -handling schemes and compilers - and because the library -may not work reliably if these are mixed in an application, -each different version of the library has it's own name. - -Note 1: the incompatibility is really between EH implementations -of the different compilers. It should be possible to use the -standard C version from either compiler with C++ applications -built with a different compiler. If you use an EH version of -the library, then you must use the same compiler for the -application. This is another complication and dependency that -can be avoided by using only the standard C library version. - -Note 2: if you use a standard C pthread*.dll with a C++ -application, then any functions that you define that are -intended to be called via pthread_cleanup_push() must be -__cdecl. - -Note 3: the intention is to also name either the VC or GC -version (it should be arbitrary) as pthread.dll, including -pthread.lib and libpthread.a as appropriate. - -In general: - pthread[VG]{SE,CE,C}.dll - pthread[VG]{SE,CE,C}.lib - -where: - [VG] indicates the compiler - V - MS VC - G - GNU C - - {SE,CE,C} indicates the exception handling scheme - SE - Structured EH - CE - C++ EH - C - no exceptions - uses setjmp/longjmp - -For example: - pthreadVSE.dll (MSVC/SEH) - pthreadGCE.dll (GNUC/C++ EH) - pthreadGC.dll (GNUC/not dependent on exceptions) - -The GNU library archive file names have changed to: - - libpthreadGCE.a - libpthreadGC.a - - ------------------------------------------------------------------------------- - -Q 4 Cleanup code default style or: it used to work when I built ---- the library myself, but now it doesn't - why? - -Up to and including snapshot 2001-07-12, if not defined, the cleanup -style was determined automatically from the compiler used, and one -of the following was defined accordingly: - - __CLEANUP_SEH MSVC only - __CLEANUP_CXX C++, including MSVC++, GNU G++ - __CLEANUP_C C, including GNU GCC, not MSVC - -These defines determine the style of cleanup (see pthread.h) and, -most importantly, the way that cancelation and thread exit (via -pthread_exit) is performed (see the routine ptw32_throw() in private.c). - -In short, the exceptions versions of the library throw an exception -when a thread is canceled or exits (via pthread_exit()), which is -caught by a handler in the thread startup routine, so that the -the correct stack unwinding occurs regardless of where the thread -is when it's canceled or exits via pthread_exit(). - -After snapshot 2001-07-12, unless your build explicitly defines (e.g. -via a compiler option) __CLEANUP_SEH, __CLEANUP_CXX, or __CLEANUP_C, then -the build now ALWAYS defaults to __CLEANUP_C style cleanup. This style -uses setjmp/longjmp in the cancelation and pthread_exit implementations, -and therefore won't do stack unwinding even when linked to applications -that have it (e.g. C++ apps). This is for consistency with most/all -commercial Unix POSIX threads implementations. - -Although it was not clearly documented before, it is still necessary to -build your application using the same __CLEANUP_* define as was -used for the version of the library that you link with, so that the -correct parts of pthread.h are included. That is, the possible -defines require the following library versions: - - __CLEANUP_SEH pthreadVSE.dll - __CLEANUP_CXX pthreadVCE.dll or pthreadGCE.dll - __CLEANUP_C pthreadVC.dll or pthreadGC.dll - -THE POINT OF ALL THIS IS: if you have not been defining one of these -explicitly, then the defaults have been set according to the compiler -and language you are using, as described at the top of this -section. - -THIS NOW CHANGES, as has been explained above. For example: - -If you were building your application with MSVC++ i.e. using C++ -exceptions (rather than SEH) and not explicitly defining one of -__CLEANUP_*, then __CLEANUP_C++ was defined for you in pthread.h. -You should have been linking with pthreadVCE.dll, which does -stack unwinding. - -If you now build your application as you had before, pthread.h will now -set __CLEANUP_C as the default style, and you will need to link -with pthreadVC.dll. Stack unwinding will now NOT occur when a -thread is canceled, nor when the thread calls pthread_exit(). - -Your application will now most likely behave differently to previous -versions, and in non-obvious ways. Most likely is that local -objects may not be destroyed or cleaned up after a thread -is canceled. - -If you want the same behaviour as before, then you must now define -__CLEANUP_C++ explicitly using a compiler option and link with -pthreadVCE.dll as you did before. - - ------------------------------------------------------------------------------- - -Q 5 Why is the default library version now less exception-friendly? ---- - -Because most commercial Unix POSIX threads implementations don't allow you to -choose to have stack unwinding. (Compaq's TRU64 Unix is possibly an exception.) - -Therefore, providing it in pthread-win32 as a default could be dangerous -and non-portable. We still provide the choice but you must now consciously -make it. - -WHY NOT REMOVE THE EXCEPTIONS VERSIONS OF THE LIBRARY ALTOGETHER? -There are a few reasons: -- because there are well respected POSIX threads people who believe - that POSIX threads implementations should be exceptions-aware and - do the expected thing in that context. (There are equally respected - people who believe it should not be easily accessible, if it's there - at all.) -- because pthreads-win32 is one of the few implementations that has - the choice, perhaps the only freely available one, and so offers - a laboratory to people who may want to explore the effects; -- although the code will always be around somewhere for anyone who - wants it, once it's removed from the current version it will not be - nearly as visible to people who may have a use for it. - - ------------------------------------------------------------------------------- - -Q 6 Should I use Cygwin or Mingw32 as a development environment? ---- - -Important: see Q7 also. - -Use Mingw32 with the MSVCRT library to build applications that use -the pthreads DLL. - -Cygwin's own internal support for POSIX threads is growing. -Consult that project's documentation for more information. - ------------------------------------------------------------------------------- - -Q 7 Now that pthreads-win32 builds under Mingw32, why do I get ---- memory access violations (segfaults)? - -The latest Mingw32 package has thread-safe exception handling (see Q10). -Also, see Q6 above. - ------------------------------------------------------------------------------- - -Q 8 How do I use pthread.dll for Win32 (Visual C++ 5.0) ---- - -> -> I'm a "rookie" when it comes to your pthread implementation. I'm currently -> desperately trying to install the prebuilt .dll file into my MSVC compiler. -> Could you please provide me with explicit instructions on how to do this (or -> direct me to a resource(s) where I can acquire such information)? -> -> Thank you, -> - -You should have a .dll, .lib, .def, and three .h files. It is recommended -that you use pthreadVC.dll, rather than pthreadVCE.dll or pthreadVSE.dll -(see Q2 above). - -The .dll can go in any directory listed in your PATH environment -variable, so putting it into C:\WINDOWS should work. - -The .lib file can go in any directory listed in your LIB environment -variable. - -The .h files can go in any directory listed in your INCLUDE -environment variable. - -Or you might prefer to put the .lib and .h files into a new directory -and add its path to LIB and INCLUDE. You can probably do this easiest -by editing the file:- - -C:\Program Files\DevStudio\vc\bin\vcvars32.bat - -The .def file isn't used by anything in the pre-compiled version but -is included for information. - -Cheers. -Ross - ------------------------------------------------------------------------------- - -Q 9 Cancelation doesn't work for me, why? ---- - -> I'm investigating a problem regarding thread cancelation. The thread I want -> to cancel has PTHREAD_CANCEL_ASYNCHRONOUS, however, this piece of code -> blocks on the join(): -> -> if ((retv = Pthread_cancel( recvThread )) == 0) -> { -> retv = Pthread_join( recvThread, 0 ); -> } -> -> Pthread_* are just macro's; they call pthread_*. -> -> The thread recvThread seems to block on a select() call. It doesn't get -> cancelled. -> -> Two questions: -> -> 1) is this normal behaviour? -> -> 2) if not, how does the cancel mechanism work? I'm not very familliar to -> win32 programming, so I don't really understand how the *Event() family of -> calls work. - -The answer to your first question is, normal POSIX behaviour would -be to asynchronously cancel the thread. However, even that doesn't -guarantee cancelation as the standard only says it should be -cancelled as soon as possible. - -Snapshot 99-11-02 or earlier only partially supports asynchronous cancellation. -Snapshots since then simulate async cancelation by poking the address of -a cancelation routine into the PC of the threads context. This requires -the thread to be resumed in some way for the cancelation to actually -proceed. This is not true async cancelation, but it is as close as we've -been able to get to it. - -If the thread you're trying to cancel is blocked (for instance, it could be -waiting for data from the network), it will only get cancelled when it unblocks -(when the data arrives). For true pre-emptive cancelation in these cases, -pthreads-win32 from snapshot 2004-05-16 can automatically recognise and use the -QueueUserAPCEx package by Panagiotis E. Hadjidoukas. This package is available -from the pthreads-win32 ftp site and is included in the pthreads-win32 -self-unpacking zip from 2004-05-16 onwards. - -Using deferred cancelation would normally be the way to go, however, -even though the POSIX threads standard lists a number of C library -functions that are defined as deferred cancelation points, there is -no hookup between those which are provided by Windows and the -pthreads-win32 library. - -Incidently, it's worth noting for code portability that the older POSIX -threads standards cancelation point lists didn't include "select" because -(as I read in Butenhof) it wasn't part of POSIX. However, it does appear in -the SUSV3. - -Effectively, the only mandatory cancelation points that pthreads-win32 -recognises are those the library implements itself, ie. - - pthread_testcancel - pthread_cond_wait - pthread_cond_timedwait - pthread_join - sem_wait - sem_timedwait - pthread_delay_np - -The following routines from the non-mandatory list in SUSV3 are -cancelation points in pthreads-win32: - - pthread_rwlock_wrlock - pthread_rwlock_timedwrlock - -The following routines from the non-mandatory list in SUSV3 are not -cancelation points in pthreads-win32: - - pthread_rwlock_rdlock - pthread_rwlock_timedrdlock - -Pthreads-win32 also provides two functions that allow you to create -cancelation points within your application, but only for cases where -a thread is going to block on a Win32 handle. These are: - - pthreadCancelableWait(HANDLE waitHandle) /* Infinite wait */ - - pthreadCancelableTimedWait(HANDLE waitHandle, DWORD timeout) - ------------------------------------------------------------------------------- - - -Q 10 How do I create thread-safe applications using ----- pthreadGCE.dll, libpthreadw32.a and Mingw32? - -This should not be a problem with recent versions of MinGW32. - -For early versions, see Thomas Pfaff's email at: -http://sources.redhat.com/ml/pthreads-win32/2002/msg00000.html ------------------------------------------------------------------------------- - -Q 11 Why isn't pthread_t defined as a scalar (e.g. pointer or int) - like it is for other POSIX threads implementations? ----- - -Originally pthread_t was defined as a pointer (to the opaque pthread_t_ -struct) and later it was changed to a struct containing the original -pointer plus a sequence counter. This is allowed under both the original -POSIX Threads Standard and the current Single Unix Specification. - -When pthread_t is a simple pointer to a struct some very difficult to -debug problems arise from the process of freeing and later allocing -thread structs because new pthread_t handles can acquire the identity of -previously detached threads. The change to a struct was made, along with -some changes to their internal managment, in order to guarantee (for -practical applications) that the pthread_t handle will be unique over the -life of the running process. - -Where application code attempts to compare one pthread_t against another -directly, a compiler error will be emitted because structs can't be -compared at that level. This should signal a potentially serious problem -in the code design, which would go undetected if pthread_t was a scalar. - -The POSIX Threading API provides a function named pthread_equal() to -compare pthread_t thread handles. - -Other pthreads implementations, such as Sun's, use an int as the handle -but do guarantee uniqueness within the process scope. Win32 scalar typed -thread handles also guarantee uniqueness in system scope. It wasn't clear -how well the internal management of these handles would scale as the -number of threads and the fragmentation of the sequence numbering -increased for applications where thousands or millions of threads are -created and detached over time. The current management of threads within -pthreads-win32 using structs for pthread_t, and reusing without ever -freeing them, reduces the management time overheads to a constant, which -could be important given that pthreads-win32 threads are built on top of -Win32 threads and will therefore include that management overhead on top -of their own. The cost is that the memory resources used for thread -handles will remain at the peak level until the process exits. - -While it may be inconvenient for developers to be forced away from making -assumptions about the internals of pthread_t, the advantage for the -future development of pthread-win32, as well as those applications that -use it and other pthread implementations, is that the library is free to -change pthread_t internals and management as better methods arise. - diff --git a/platform/win32/msvc/external/pthreads.2/GNUmakefile b/platform/win32/msvc/external/pthreads.2/GNUmakefile deleted file mode 100644 index 8ea825032b0..00000000000 --- a/platform/win32/msvc/external/pthreads.2/GNUmakefile +++ /dev/null @@ -1,593 +0,0 @@ -# -# -------------------------------------------------------------------------- -# -# Pthreads-win32 - POSIX Threads Library for Win32 -# Copyright(C) 1998 John E. Bossom -# Copyright(C) 1999,2005 Pthreads-win32 contributors -# -# Contact Email: rpj@callisto.canberra.edu.au -# -# The current list of contributors is contained -# in the file CONTRIBUTORS included with the source -# code distribution. The list can also be seen at the -# following World Wide Web location: -# http://sources.redhat.com/pthreads-win32/contributors.html -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library in the file COPYING.LIB; -# if not, write to the Free Software Foundation, Inc., -# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA -# - -DLL_VER = 2 -DLL_VERD= $(DLL_VER)d - -DEVROOT = C:\PTHREADS - -DLLDEST = $(DEVROOT)\DLL -LIBDEST = $(DEVROOT)\DLL - -# If Running MsysDTK -RM = rm -f -MV = mv -f -CP = cp -f - -# If not. -#RM = erase -#MV = rename -#CP = copy - -# For cross compiling use e.g. -# make CROSS=x86_64-w64-mingw32- clean GC-inlined -CROSS = - -AR = $(CROSS)ar -DLLTOOL = $(CROSS)dlltool -CC = $(CROSS)gcc -CXX = $(CROSS)g++ -RANLIB = $(CROSS)ranlib -RC = $(CROSS)windres - -OPT = $(CLEANUP) -O3 # -finline-functions -findirect-inlining -XOPT = - -RCFLAGS = --include-dir=. -# Uncomment this if config.h defines RETAIN_WSALASTERROR -#LFLAGS = -lws2_32 - -# ---------------------------------------------------------------------- -# The library can be built with some alternative behaviour to -# facilitate development of applications on Win32 that will be ported -# to other POSIX systems. Nothing definable here will make the library -# non-compliant, but applications that make assumptions that POSIX -# does not garrantee may fail or misbehave under some settings. -# -# PTW32_THREAD_ID_REUSE_INCREMENT -# Purpose: -# POSIX says that applications should assume that thread IDs can be -# recycled. However, Solaris and some other systems use a [very large] -# sequence number as the thread ID, which provides virtual uniqueness. -# Pthreads-win32 provides pseudo-unique IDs when the default increment -# (1) is used, but pthread_t is not a scalar type like Solaris's. -# -# Usage: -# Set to any value in the range: 0 <= value <= 2^wordsize -# -# Examples: -# Set to 0 to emulate non recycle-unique behaviour like Linux or *BSD. -# Set to 1 for recycle-unique thread IDs (this is the default). -# Set to some other +ve value to emulate smaller word size types -# (i.e. will wrap sooner). -# -#PTW32_FLAGS = "-DPTW32_THREAD_ID_REUSE_INCREMENT=0" -# -# ---------------------------------------------------------------------- - -GC_CFLAGS = $(PTW32_FLAGS) -GCE_CFLAGS = $(PTW32_FLAGS) -mthreads - -## Mingw -MAKE ?= make -CFLAGS = $(OPT) $(XOPT) -I. -DHAVE_PTW32_CONFIG_H -Wall - -DLL_INLINED_OBJS = \ - pthread.o \ - version.o - -# Agregate modules for inlinability -DLL_OBJS = \ - attr.o \ - barrier.o \ - cancel.o \ - cleanup.o \ - condvar.o \ - create.o \ - dll.o \ - errno.o \ - exit.o \ - fork.o \ - global.o \ - misc.o \ - mutex.o \ - nonportable.o \ - private.o \ - rwlock.o \ - sched.o \ - semaphore.o \ - signal.o \ - spin.o \ - sync.o \ - tsd.o \ - version.o - -# Separate modules for minimum size statically linked images -SMALL_STATIC_OBJS = \ - pthread_attr_init.o \ - pthread_attr_destroy.o \ - pthread_attr_getdetachstate.o \ - pthread_attr_setdetachstate.o \ - pthread_attr_getstackaddr.o \ - pthread_attr_setstackaddr.o \ - pthread_attr_getstacksize.o \ - pthread_attr_setstacksize.o \ - pthread_attr_getscope.o \ - pthread_attr_setscope.o \ - pthread_attr_setschedpolicy.o \ - pthread_attr_getschedpolicy.o \ - pthread_attr_setschedparam.o \ - pthread_attr_getschedparam.o \ - pthread_attr_setinheritsched.o \ - pthread_attr_getinheritsched.o \ - pthread_barrier_init.o \ - pthread_barrier_destroy.o \ - pthread_barrier_wait.o \ - pthread_barrierattr_init.o \ - pthread_barrierattr_destroy.o \ - pthread_barrierattr_setpshared.o \ - pthread_barrierattr_getpshared.o \ - pthread_setcancelstate.o \ - pthread_setcanceltype.o \ - pthread_testcancel.o \ - pthread_cancel.o \ - cleanup.o \ - pthread_condattr_destroy.o \ - pthread_condattr_getpshared.o \ - pthread_condattr_init.o \ - pthread_condattr_setpshared.o \ - pthread_cond_destroy.o \ - pthread_cond_init.o \ - pthread_cond_signal.o \ - pthread_cond_wait.o \ - create.o \ - dll.o \ - autostatic.o \ - errno.o \ - pthread_exit.o \ - fork.o \ - global.o \ - pthread_mutex_init.o \ - pthread_mutex_destroy.o \ - pthread_mutexattr_init.o \ - pthread_mutexattr_destroy.o \ - pthread_mutexattr_getpshared.o \ - pthread_mutexattr_setpshared.o \ - pthread_mutexattr_settype.o \ - pthread_mutexattr_gettype.o \ - pthread_mutexattr_setrobust.o \ - pthread_mutexattr_getrobust.o \ - pthread_mutex_lock.o \ - pthread_mutex_timedlock.o \ - pthread_mutex_unlock.o \ - pthread_mutex_trylock.o \ - pthread_mutex_consistent.o \ - pthread_mutexattr_setkind_np.o \ - pthread_mutexattr_getkind_np.o \ - pthread_getw32threadhandle_np.o \ - pthread_getunique_np.o \ - pthread_delay_np.o \ - pthread_num_processors_np.o \ - pthread_win32_attach_detach_np.o \ - pthread_equal.o \ - pthread_getconcurrency.o \ - pthread_once.o \ - pthread_self.o \ - pthread_setconcurrency.o \ - pthread_rwlock_init.o \ - pthread_rwlock_destroy.o \ - pthread_rwlockattr_init.o \ - pthread_rwlockattr_destroy.o \ - pthread_rwlockattr_getpshared.o \ - pthread_rwlockattr_setpshared.o \ - pthread_rwlock_rdlock.o \ - pthread_rwlock_wrlock.o \ - pthread_rwlock_unlock.o \ - pthread_rwlock_tryrdlock.o \ - pthread_rwlock_trywrlock.o \ - pthread_setschedparam.o \ - pthread_getschedparam.o \ - pthread_timechange_handler_np.o \ - ptw32_is_attr.o \ - ptw32_cond_check_need_init.o \ - ptw32_MCS_lock.o \ - ptw32_mutex_check_need_init.o \ - ptw32_processInitialize.o \ - ptw32_processTerminate.o \ - ptw32_threadStart.o \ - ptw32_threadDestroy.o \ - ptw32_tkAssocCreate.o \ - ptw32_tkAssocDestroy.o \ - ptw32_callUserDestroyRoutines.o \ - ptw32_timespec.o \ - ptw32_throw.o \ - ptw32_getprocessors.o \ - ptw32_calloc.o \ - ptw32_new.o \ - ptw32_reuse.o \ - ptw32_semwait.o \ - ptw32_relmillisecs.o \ - ptw32_rwlock_check_need_init.o \ - sched_get_priority_max.o \ - sched_get_priority_min.o \ - sched_setscheduler.o \ - sched_getscheduler.o \ - sched_yield.o \ - sem_init.o \ - sem_destroy.o \ - sem_trywait.o \ - sem_timedwait.o \ - sem_wait.o \ - sem_post.o \ - sem_post_multiple.o \ - sem_getvalue.o \ - sem_open.o \ - sem_close.o \ - sem_unlink.o \ - signal.o \ - pthread_kill.o \ - ptw32_spinlock_check_need_init.o \ - pthread_spin_init.o \ - pthread_spin_destroy.o \ - pthread_spin_lock.o \ - pthread_spin_unlock.o \ - pthread_spin_trylock.o \ - pthread_detach.o \ - pthread_join.o \ - pthread_key_create.o \ - pthread_key_delete.o \ - pthread_setspecific.o \ - pthread_getspecific.o \ - w32_CancelableWait.o \ - version.o - -INCL = \ - config.h \ - implement.h \ - semaphore.h \ - pthread.h \ - need_errno.h - -ATTR_SRCS = \ - pthread_attr_init.c \ - pthread_attr_destroy.c \ - pthread_attr_getdetachstate.c \ - pthread_attr_setdetachstate.c \ - pthread_attr_getstackaddr.c \ - pthread_attr_setstackaddr.c \ - pthread_attr_getstacksize.c \ - pthread_attr_setstacksize.c \ - pthread_attr_getscope.c \ - pthread_attr_setscope.c - -BARRIER_SRCS = \ - pthread_barrier_init.c \ - pthread_barrier_destroy.c \ - pthread_barrier_wait.c \ - pthread_barrierattr_init.c \ - pthread_barrierattr_destroy.c \ - pthread_barrierattr_setpshared.c \ - pthread_barrierattr_getpshared.c - -CANCEL_SRCS = \ - pthread_setcancelstate.c \ - pthread_setcanceltype.c \ - pthread_testcancel.c \ - pthread_cancel.c - -CONDVAR_SRCS = \ - ptw32_cond_check_need_init.c \ - pthread_condattr_destroy.c \ - pthread_condattr_getpshared.c \ - pthread_condattr_init.c \ - pthread_condattr_setpshared.c \ - pthread_cond_destroy.c \ - pthread_cond_init.c \ - pthread_cond_signal.c \ - pthread_cond_wait.c - -EXIT_SRCS = \ - pthread_exit.c - -MISC_SRCS = \ - pthread_equal.c \ - pthread_getconcurrency.c \ - pthread_kill.c \ - pthread_once.c \ - pthread_self.c \ - pthread_setconcurrency.c \ - ptw32_calloc.c \ - ptw32_MCS_lock.c \ - ptw32_new.c \ - ptw32_reuse.c \ - w32_CancelableWait.c - -MUTEX_SRCS = \ - ptw32_mutex_check_need_init.c \ - pthread_mutex_init.c \ - pthread_mutex_destroy.c \ - pthread_mutexattr_init.c \ - pthread_mutexattr_destroy.c \ - pthread_mutexattr_getpshared.c \ - pthread_mutexattr_setpshared.c \ - pthread_mutexattr_settype.c \ - pthread_mutexattr_gettype.c \ - pthread_mutexattr_setrobust.c \ - pthread_mutexattr_getrobust.c \ - pthread_mutex_lock.c \ - pthread_mutex_timedlock.c \ - pthread_mutex_unlock.c \ - pthread_mutex_trylock.c \ - pthread_mutex_consistent.c - -NONPORTABLE_SRCS = \ - pthread_mutexattr_setkind_np.c \ - pthread_mutexattr_getkind_np.c \ - pthread_getw32threadhandle_np.c \ - pthread_getunique_np.c \ - pthread_delay_np.c \ - pthread_num_processors_np.c \ - pthread_win32_attach_detach_np.c \ - pthread_timechange_handler_np.c - -PRIVATE_SRCS = \ - ptw32_is_attr.c \ - ptw32_processInitialize.c \ - ptw32_processTerminate.c \ - ptw32_threadStart.c \ - ptw32_threadDestroy.c \ - ptw32_tkAssocCreate.c \ - ptw32_tkAssocDestroy.c \ - ptw32_callUserDestroyRoutines.c \ - ptw32_semwait.c \ - ptw32_relmillisecs.c \ - ptw32_timespec.c \ - ptw32_throw.c \ - ptw32_getprocessors.c - -RWLOCK_SRCS = \ - ptw32_rwlock_check_need_init.c \ - ptw32_rwlock_cancelwrwait.c \ - pthread_rwlock_init.c \ - pthread_rwlock_destroy.c \ - pthread_rwlockattr_init.c \ - pthread_rwlockattr_destroy.c \ - pthread_rwlockattr_getpshared.c \ - pthread_rwlockattr_setpshared.c \ - pthread_rwlock_rdlock.c \ - pthread_rwlock_timedrdlock.c \ - pthread_rwlock_wrlock.c \ - pthread_rwlock_timedwrlock.c \ - pthread_rwlock_unlock.c \ - pthread_rwlock_tryrdlock.c \ - pthread_rwlock_trywrlock.c - -SCHED_SRCS = \ - pthread_attr_setschedpolicy.c \ - pthread_attr_getschedpolicy.c \ - pthread_attr_setschedparam.c \ - pthread_attr_getschedparam.c \ - pthread_attr_setinheritsched.c \ - pthread_attr_getinheritsched.c \ - pthread_setschedparam.c \ - pthread_getschedparam.c \ - sched_get_priority_max.c \ - sched_get_priority_min.c \ - sched_setscheduler.c \ - sched_getscheduler.c \ - sched_yield.c - -SEMAPHORE_SRCS = \ - sem_init.c \ - sem_destroy.c \ - sem_trywait.c \ - sem_timedwait.c \ - sem_wait.c \ - sem_post.c \ - sem_post_multiple.c \ - sem_getvalue.c \ - sem_open.c \ - sem_close.c \ - sem_unlink.c - -SPIN_SRCS = \ - ptw32_spinlock_check_need_init.c \ - pthread_spin_init.c \ - pthread_spin_destroy.c \ - pthread_spin_lock.c \ - pthread_spin_unlock.c \ - pthread_spin_trylock.c - -SYNC_SRCS = \ - pthread_detach.c \ - pthread_join.c - -TSD_SRCS = \ - pthread_key_create.c \ - pthread_key_delete.c \ - pthread_setspecific.c \ - pthread_getspecific.c - - -GCE_DLL = pthreadGCE$(DLL_VER).dll -GCED_DLL= pthreadGCE$(DLL_VERD).dll -GCE_LIB = libpthreadGCE$(DLL_VER).a -GCED_LIB= libpthreadGCE$(DLL_VERD).a -GCE_INLINED_STAMP = pthreadGCE$(DLL_VER).stamp -GCED_INLINED_STAMP = pthreadGCE$(DLL_VERD).stamp -GCE_STATIC_STAMP = libpthreadGCE$(DLL_VER).stamp -GCED_STATIC_STAMP = libpthreadGCE$(DLL_VERD).stamp - -GC_DLL = pthreadGC$(DLL_VER).dll -GCD_DLL = pthreadGC$(DLL_VERD).dll -GC_LIB = libpthreadGC$(DLL_VER).a -GCD_LIB = libpthreadGC$(DLL_VERD).a -GC_INLINED_STAMP = pthreadGC$(DLL_VER).stamp -GCD_INLINED_STAMP = pthreadGC$(DLL_VERD).stamp -GC_STATIC_STAMP = libpthreadGC$(DLL_VER).stamp -GCD_STATIC_STAMP = libpthreadGC$(DLL_VERD).stamp - -PTHREAD_DEF = pthread.def - -help: - @ echo "Run one of the following command lines:" - @ echo "make clean GC (to build the GNU C dll with C cleanup code)" - @ echo "make clean GCE (to build the GNU C dll with C++ exception handling)" - @ echo "make clean GC-inlined (to build the GNU C inlined dll with C cleanup code)" - @ echo "make clean GCE-inlined (to build the GNU C inlined dll with C++ exception handling)" - @ echo "make clean GC-static (to build the GNU C inlined static lib with C cleanup code)" - @ echo "make clean GC-debug (to build the GNU C debug dll with C cleanup code)" - @ echo "make clean GCE-debug (to build the GNU C debug dll with C++ exception handling)" - @ echo "make clean GC-inlined-debug (to build the GNU C inlined debug dll with C cleanup code)" - @ echo "make clean GCE-inlined-debug (to build the GNU C inlined debug dll with C++ exception handling)" - @ echo "make clean GC-static-debug (to build the GNU C inlined static debug lib with C cleanup code)" - -all: - @ $(MAKE) clean GCE - @ $(MAKE) clean GC - -GC: - $(MAKE) CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_OBJS)" $(GC_DLL) - -GC-debug: - $(MAKE) CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_OBJS)" DLL_VER=$(DLL_VERD) OPT="-D__CLEANUP_C -g -O0" $(GCD_DLL) - -GCE: - $(MAKE) CC=$(CXX) CLEANUP=-D__CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_OBJS)" $(GCE_DLL) - -GCE-debug: - $(MAKE) CC=$(CXX) CLEANUP=-D__CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_OBJS)" DLL_VER=$(DLL_VERD) OPT="-D__CLEANUP_CXX -g -O0" $(GCED_DLL) - -GC-inlined: - $(MAKE) XOPT="-DPTW32_BUILD_INLINED" CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" $(GC_INLINED_STAMP) - -GC-inlined-debug: - $(MAKE) XOPT="-DPTW32_BUILD_INLINED" CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" DLL_VER=$(DLL_VERD) OPT="-D__CLEANUP_C -g -O0" $(GCD_INLINED_STAMP) - -GCE-inlined: - $(MAKE) CC=$(CXX) XOPT="-DPTW32_BUILD_INLINED" CLEANUP=-D__CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" $(GCE_INLINED_STAMP) - -GCE-inlined-debug: - $(MAKE) CC=$(CXX) XOPT="-DPTW32_BUILD_INLINED" CLEANUP=-D__CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" DLL_VER=$(DLL_VERD) OPT="-D__CLEANUP_CXX -g -O0" $(GCED_INLINED_STAMP) - -GC-static: - $(MAKE) XOPT="-DPTW32_BUILD_INLINED -DPTW32_STATIC_LIB" CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" $(GC_STATIC_STAMP) - -GC-static-debug: - $(MAKE) XOPT="-DPTW32_BUILD_INLINED -DPTW32_STATIC_LIB" CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" DLL_VER=$(DLL_VERD) OPT="-D__CLEANUP_C -g -O0" $(GCD_STATIC_STAMP) - -tests: - @ cd tests - @ $(MAKE) auto - -%.pre: %.c - $(CC) -E -o $@ $(CFLAGS) $^ - -%.s: %.c - $(CC) -c $(CFLAGS) -DPTW32_BUILD_INLINED -Wa,-ahl $^ > $@ - -%.o: %.rc - $(RC) $(RCFLAGS) $(CLEANUP) -o $@ -i $< - -.SUFFIXES: .dll .rc .c .o - -.c.o:; $(CC) -c -o $@ $(CFLAGS) $(XC_FLAGS) $< - - -$(GC_DLL) $(GCD_DLL): $(DLL_OBJS) - $(CC) $(OPT) -shared -o $(GC_DLL) $(DLL_OBJS) $(LFLAGS) - $(DLLTOOL) -z pthread.def $(DLL_OBJS) - $(DLLTOOL) -k --dllname $@ --output-lib $(GC_LIB) --def $(PTHREAD_DEF) - -$(GCE_DLL): $(DLL_OBJS) - $(CC) $(OPT) -mthreads -shared -o $(GCE_DLL) $(DLL_OBJS) $(LFLAGS) - $(DLLTOOL) -z pthread.def $(DLL_OBJS) - $(DLLTOOL) -k --dllname $@ --output-lib $(GCE_LIB) --def $(PTHREAD_DEF) - -$(GC_INLINED_STAMP) $(GCD_INLINED_STAMP): $(DLL_INLINED_OBJS) - $(CC) $(OPT) $(XOPT) -shared -o $(GC_DLL) $(DLL_INLINED_OBJS) $(LFLAGS) - $(DLLTOOL) -z pthread.def $(DLL_INLINED_OBJS) - $(DLLTOOL) -k --dllname $(GC_DLL) --output-lib $(GC_LIB) --def $(PTHREAD_DEF) - echo touched > $(GC_INLINED_STAMP) - -$(GCE_INLINED_STAMP) $(GCED_INLINED_STAMP): $(DLL_INLINED_OBJS) - $(CC) $(OPT) $(XOPT) -mthreads -shared -o $(GCE_DLL) $(DLL_INLINED_OBJS) $(LFLAGS) - $(DLLTOOL) -z pthread.def $(DLL_INLINED_OBJS) - $(DLLTOOL) -k --dllname $(GCE_DLL) --output-lib $(GCE_LIB) --def $(PTHREAD_DEF) - echo touched > $(GCE_INLINED_STAMP) - -$(GC_STATIC_STAMP) $(GCD_STATIC_STAMP): $(DLL_INLINED_OBJS) - $(RM) $(GC_LIB) - $(AR) -rv $(GC_LIB) $(DLL_INLINED_OBJS) - $(RANLIB) $(GC_LIB) - echo touched > $(GC_STATIC_STAMP) - -clean: - -$(RM) *~ - -$(RM) *.i - -$(RM) *.s - -$(RM) *.o - -$(RM) *.obj - -$(RM) *.exe - -$(RM) $(PTHREAD_DEF) - -realclean: clean - -$(RM) $(GC_LIB) - -$(RM) $(GCE_LIB) - -$(RM) $(GC_DLL) - -$(RM) $(GCE_DLL) - -$(RM) $(GC_INLINED_STAMP) - -$(RM) $(GCE_INLINED_STAMP) - -$(RM) $(GC_STATIC_STAMP) - -$(RM) $(GCD_LIB) - -$(RM) $(GCED_LIB) - -$(RM) $(GCD_DLL) - -$(RM) $(GCED_DLL) - -$(RM) $(GCD_INLINED_STAMP) - -$(RM) $(GCED_INLINED_STAMP) - -$(RM) $(GCD_STATIC_STAMP) - -attr.o: attr.c $(ATTR_SRCS) $(INCL) -barrier.o: barrier.c $(BARRIER_SRCS) $(INCL) -cancel.o: cancel.c $(CANCEL_SRCS) $(INCL) -condvar.o: condvar.c $(CONDVAR_SRCS) $(INCL) -exit.o: exit.c $(EXIT_SRCS) $(INCL) -misc.o: misc.c $(MISC_SRCS) $(INCL) -mutex.o: mutex.c $(MUTEX_SRCS) $(INCL) -nonportable.o: nonportable.c $(NONPORTABLE_SRCS) $(INCL) -private.o: private.c $(PRIVATE_SRCS) $(INCL) -rwlock.o: rwlock.c $(RWLOCK_SRCS) $(INCL) -sched.o: sched.c $(SCHED_SRCS) $(INCL) -semaphore.o: semaphore.c $(SEMAPHORE_SRCS) $(INCL) -spin.o: spin.c $(SPIN_SRCS) $(INCL) -sync.o: sync.c $(SYNC_SRCS) $(INCL) -tsd.o: tsd.c $(TSD_SRCS) $(INCL) -version.o: version.rc $(INCL) diff --git a/platform/win32/msvc/external/pthreads.2/MAINTAINERS b/platform/win32/msvc/external/pthreads.2/MAINTAINERS deleted file mode 100644 index 5b04e43f88b..00000000000 --- a/platform/win32/msvc/external/pthreads.2/MAINTAINERS +++ /dev/null @@ -1,4 +0,0 @@ -CVS Repository maintainers - -Ross Johnson rpj@ise.canberra.edu.au -Ben Elliston bje@cygnus.com diff --git a/platform/win32/msvc/external/pthreads.2/Makefile b/platform/win32/msvc/external/pthreads.2/Makefile deleted file mode 100644 index ccd9df2c338..00000000000 --- a/platform/win32/msvc/external/pthreads.2/Makefile +++ /dev/null @@ -1,514 +0,0 @@ -# This makefile is compatible with MS nmake and can be used as a -# replacement for buildlib.bat. I've changed the target from an ordinary dll -# (/LD) to a debugging dll (/LDd). -# -# The variables $DLLDEST and $LIBDEST hold the destination directories for the -# dll and the lib, respectively. Probably all that needs to change is $DEVROOT. - - -# DLL_VER: -# See pthread.h and README - This number is computed as 'current - age' -DLL_VER = 2 -DLL_VERD= $(DLL_VER)d - -DEVROOT = C:\pthreads - -DLLDEST = $(DEVROOT)\dll -LIBDEST = $(DEVROOT)\lib -HDRDEST = $(DEVROOT)\include - -DLLS = pthreadVCE$(DLL_VER).dll pthreadVSE$(DLL_VER).dll pthreadVC$(DLL_VER).dll \ - pthreadVCE$(DLL_VERD).dll pthreadVSE$(DLL_VERD).dll pthreadVC$(DLL_VERD).dll -INLINED_STAMPS = pthreadVCE$(DLL_VER).stamp pthreadVSE$(DLL_VER).stamp pthreadVC$(DLL_VER).stamp \ - pthreadVCE$(DLL_VERD).stamp pthreadVSE$(DLL_VERD).stamp pthreadVC$(DLL_VERD).stamp -STATIC_STAMPS = pthreadVCE$(DLL_VER).static pthreadVSE$(DLL_VER).static pthreadVC$(DLL_VER).static \ - pthreadVCE$(DLL_VERD).static pthreadVSE$(DLL_VERD).static pthreadVC$(DLL_VERD).static - -CC = cl -CPPFLAGS = /I. /DHAVE_PTW32_CONFIG_H -XCFLAGS = /W3 /MD /nologo -CFLAGS = /O2 /Ob2 $(XCFLAGS) -CFLAGSD = /Z7 /MDd /W3 /nologo - -# Uncomment this if config.h defines RETAIN_WSALASTERROR -#XLIBS = wsock32.lib - -# Default cleanup style -CLEANUP = __CLEANUP_C - -# C++ Exceptions -VCEFLAGS = /EHsc /TP $(CPPFLAGS) $(CFLAGS) -VCEFLAGSD = /EHsc /TP $(CPPFLAGS) $(CFLAGSD) -#Structured Exceptions -VSEFLAGS = $(CPPFLAGS) $(CFLAGS) -VSEFLAGSD = $(CPPFLAGS) $(CFLAGSD) -#C cleanup code -VCFLAGS = $(CPPFLAGS) $(CFLAGS) -VCFLAGSD = $(CPPFLAGS) $(CFLAGSD) - -DLL_INLINED_OBJS = \ - pthread.obj \ - version.res - -# Aggregate modules for inlinability -DLL_OBJS = \ - attr.obj \ - barrier.obj \ - cancel.obj \ - cleanup.obj \ - condvar.obj \ - create.obj \ - dll.obj \ - autostatic.obj \ - errno.obj \ - exit.obj \ - fork.obj \ - global.obj \ - misc.obj \ - mutex.obj \ - nonportable.obj \ - private.obj \ - rwlock.obj \ - sched.obj \ - semaphore.obj \ - signal.obj \ - spin.obj \ - sync.obj \ - tsd.obj \ - version.res - -# Separate modules for minimising the size of statically linked images -SMALL_STATIC_OBJS = \ - pthread_attr_init.obj \ - pthread_attr_destroy.obj \ - pthread_attr_getdetachstate.obj \ - pthread_attr_setdetachstate.obj \ - pthread_attr_getstackaddr.obj \ - pthread_attr_setstackaddr.obj \ - pthread_attr_getstacksize.obj \ - pthread_attr_setstacksize.obj \ - pthread_attr_getscope.obj \ - pthread_attr_setscope.obj \ - pthread_attr_setschedpolicy.obj \ - pthread_attr_getschedpolicy.obj \ - pthread_attr_setschedparam.obj \ - pthread_attr_getschedparam.obj \ - pthread_attr_setinheritsched.obj \ - pthread_attr_getinheritsched.obj \ - pthread_barrier_init.obj \ - pthread_barrier_destroy.obj \ - pthread_barrier_wait.obj \ - pthread_barrierattr_init.obj \ - pthread_barrierattr_destroy.obj \ - pthread_barrierattr_setpshared.obj \ - pthread_barrierattr_getpshared.obj \ - pthread_setcancelstate.obj \ - pthread_setcanceltype.obj \ - pthread_testcancel.obj \ - pthread_cancel.obj \ - cleanup.obj \ - pthread_condattr_destroy.obj \ - pthread_condattr_getpshared.obj \ - pthread_condattr_init.obj \ - pthread_condattr_setpshared.obj \ - pthread_cond_destroy.obj \ - pthread_cond_init.obj \ - pthread_cond_signal.obj \ - pthread_cond_wait.obj \ - create.obj \ - dll.obj \ - autostatic.obj \ - errno.obj \ - pthread_exit.obj \ - fork.obj \ - global.obj \ - pthread_mutex_init.obj \ - pthread_mutex_destroy.obj \ - pthread_mutexattr_init.obj \ - pthread_mutexattr_destroy.obj \ - pthread_mutexattr_getpshared.obj \ - pthread_mutexattr_setpshared.obj \ - pthread_mutexattr_settype.obj \ - pthread_mutexattr_gettype.obj \ - pthread_mutexattr_setrobust.obj \ - pthread_mutexattr_getrobust.obj \ - pthread_mutex_lock.obj \ - pthread_mutex_timedlock.obj \ - pthread_mutex_unlock.obj \ - pthread_mutex_trylock.obj \ - pthread_mutex_consistent.obj \ - pthread_mutexattr_setkind_np.obj \ - pthread_mutexattr_getkind_np.obj \ - pthread_getw32threadhandle_np.obj \ - pthread_getunique_np.obj \ - pthread_delay_np.obj \ - pthread_num_processors_np.obj \ - pthread_win32_attach_detach_np.obj \ - pthread_equal.obj \ - pthread_getconcurrency.obj \ - pthread_once.obj \ - pthread_self.obj \ - pthread_setconcurrency.obj \ - pthread_rwlock_init.obj \ - pthread_rwlock_destroy.obj \ - pthread_rwlockattr_init.obj \ - pthread_rwlockattr_destroy.obj \ - pthread_rwlockattr_getpshared.obj \ - pthread_rwlockattr_setpshared.obj \ - pthread_rwlock_rdlock.obj \ - pthread_rwlock_wrlock.obj \ - pthread_rwlock_unlock.obj \ - pthread_rwlock_tryrdlock.obj \ - pthread_rwlock_trywrlock.obj \ - pthread_setschedparam.obj \ - pthread_getschedparam.obj \ - pthread_timechange_handler_np.obj \ - ptw32_is_attr.obj \ - ptw32_processInitialize.obj \ - ptw32_processTerminate.obj \ - ptw32_threadStart.obj \ - ptw32_threadDestroy.obj \ - ptw32_tkAssocCreate.obj \ - ptw32_tkAssocDestroy.obj \ - ptw32_callUserDestroyRoutines.obj \ - ptw32_timespec.obj \ - ptw32_throw.obj \ - ptw32_getprocessors.obj \ - ptw32_calloc.obj \ - ptw32_new.obj \ - ptw32_reuse.obj \ - ptw32_rwlock_check_need_init.obj \ - ptw32_cond_check_need_init.obj \ - ptw32_mutex_check_need_init.obj \ - ptw32_semwait.obj \ - ptw32_relmillisecs.obj \ - ptw32_MCS_lock.obj \ - sched_get_priority_max.obj \ - sched_get_priority_min.obj \ - sched_setscheduler.obj \ - sched_getscheduler.obj \ - sched_yield.obj \ - sem_init.obj \ - sem_destroy.obj \ - sem_trywait.obj \ - sem_timedwait.obj \ - sem_wait.obj \ - sem_post.obj \ - sem_post_multiple.obj \ - sem_getvalue.obj \ - sem_open.obj \ - sem_close.obj \ - sem_unlink.obj \ - signal.obj \ - pthread_kill.obj \ - ptw32_spinlock_check_need_init.obj \ - pthread_spin_init.obj \ - pthread_spin_destroy.obj \ - pthread_spin_lock.obj \ - pthread_spin_unlock.obj \ - pthread_spin_trylock.obj \ - pthread_detach.obj \ - pthread_join.obj \ - pthread_key_create.obj \ - pthread_key_delete.obj \ - pthread_setspecific.obj \ - pthread_getspecific.obj \ - w32_CancelableWait.obj \ - version.res - -INCL = config.h implement.h semaphore.h pthread.h need_errno.h - -ATTR_SRCS = \ - pthread_attr_init.c \ - pthread_attr_destroy.c \ - pthread_attr_getdetachstate.c \ - pthread_attr_setdetachstate.c \ - pthread_attr_getstackaddr.c \ - pthread_attr_setstackaddr.c \ - pthread_attr_getstacksize.c \ - pthread_attr_setstacksize.c \ - pthread_attr_getscope.c \ - pthread_attr_setscope.c - -BARRIER_SRCS = \ - pthread_barrier_init.c \ - pthread_barrier_destroy.c \ - pthread_barrier_wait.c \ - pthread_barrierattr_init.c \ - pthread_barrierattr_destroy.c \ - pthread_barrierattr_setpshared.c \ - pthread_barrierattr_getpshared.c - -CANCEL_SRCS = \ - pthread_setcancelstate.c \ - pthread_setcanceltype.c \ - pthread_testcancel.c \ - pthread_cancel.c - -CONDVAR_SRCS = \ - ptw32_cond_check_need_init.c \ - pthread_condattr_destroy.c \ - pthread_condattr_getpshared.c \ - pthread_condattr_init.c \ - pthread_condattr_setpshared.c \ - pthread_cond_destroy.c \ - pthread_cond_init.c \ - pthread_cond_signal.c \ - pthread_cond_wait.c - -EXIT_SRCS = \ - pthread_exit.c - -MISC_SRCS = \ - pthread_equal.c \ - pthread_getconcurrency.c \ - pthread_kill.c \ - pthread_once.c \ - pthread_self.c \ - pthread_setconcurrency.c \ - ptw32_calloc.c \ - ptw32_MCS_lock.c \ - ptw32_new.c \ - ptw32_reuse.c \ - ptw32_relmillisecs.c \ - w32_CancelableWait.c - -MUTEX_SRCS = \ - ptw32_mutex_check_need_init.c \ - pthread_mutex_init.c \ - pthread_mutex_destroy.c \ - pthread_mutexattr_init.c \ - pthread_mutexattr_destroy.c \ - pthread_mutexattr_getpshared.c \ - pthread_mutexattr_setpshared.c \ - pthread_mutexattr_settype.c \ - pthread_mutexattr_gettype.c \ - pthread_mutexattr_setrobust.c \ - pthread_mutexattr_getrobust.c \ - pthread_mutex_lock.c \ - pthread_mutex_timedlock.c \ - pthread_mutex_unlock.c \ - pthread_mutex_trylock.c \ - pthread_mutex_consistent.c - -NONPORTABLE_SRCS = \ - pthread_mutexattr_setkind_np.c \ - pthread_mutexattr_getkind_np.c \ - pthread_getw32threadhandle_np.c \ - pthread_getunique_np.c \ - pthread_delay_np.c \ - pthread_num_processors_np.c \ - pthread_win32_attach_detach_np.c \ - pthread_timechange_handler_np.c - -PRIVATE_SRCS = \ - ptw32_is_attr.c \ - ptw32_processInitialize.c \ - ptw32_processTerminate.c \ - ptw32_threadStart.c \ - ptw32_threadDestroy.c \ - ptw32_tkAssocCreate.c \ - ptw32_tkAssocDestroy.c \ - ptw32_callUserDestroyRoutines.c \ - ptw32_semwait.c \ - ptw32_timespec.c \ - ptw32_throw.c \ - ptw32_getprocessors.c - -RWLOCK_SRCS = \ - ptw32_rwlock_check_need_init.c \ - ptw32_rwlock_cancelwrwait.c \ - pthread_rwlock_init.c \ - pthread_rwlock_destroy.c \ - pthread_rwlockattr_init.c \ - pthread_rwlockattr_destroy.c \ - pthread_rwlockattr_getpshared.c \ - pthread_rwlockattr_setpshared.c \ - pthread_rwlock_rdlock.c \ - pthread_rwlock_timedrdlock.c \ - pthread_rwlock_wrlock.c \ - pthread_rwlock_timedwrlock.c \ - pthread_rwlock_unlock.c \ - pthread_rwlock_tryrdlock.c \ - pthread_rwlock_trywrlock.c - -SCHED_SRCS = \ - pthread_attr_setschedpolicy.c \ - pthread_attr_getschedpolicy.c \ - pthread_attr_setschedparam.c \ - pthread_attr_getschedparam.c \ - pthread_attr_setinheritsched.c \ - pthread_attr_getinheritsched.c \ - pthread_setschedparam.c \ - pthread_getschedparam.c \ - sched_get_priority_max.c \ - sched_get_priority_min.c \ - sched_setscheduler.c \ - sched_getscheduler.c \ - sched_yield.c - -SEMAPHORE_SRCS = \ - sem_init.c \ - sem_destroy.c \ - sem_trywait.c \ - sem_timedwait.c \ - sem_wait.c \ - sem_post.c \ - sem_post_multiple.c \ - sem_getvalue.c \ - sem_open.c \ - sem_close.c \ - sem_unlink.c - -SPIN_SRCS = \ - ptw32_spinlock_check_need_init.c \ - pthread_spin_init.c \ - pthread_spin_destroy.c \ - pthread_spin_lock.c \ - pthread_spin_unlock.c \ - pthread_spin_trylock.c - -SYNC_SRCS = \ - pthread_detach.c \ - pthread_join.c - -TSD_SRCS = \ - pthread_key_create.c \ - pthread_key_delete.c \ - pthread_setspecific.c \ - pthread_getspecific.c - - -help: - @ echo Run one of the following command lines: - @ echo nmake clean VCE (to build the MSVC dll with C++ exception handling) - @ echo nmake clean VSE (to build the MSVC dll with structured exception handling) - @ echo nmake clean VC (to build the MSVC dll with C cleanup code) - @ echo nmake clean VCE-inlined (to build the MSVC inlined dll with C++ exception handling) - @ echo nmake clean VSE-inlined (to build the MSVC inlined dll with structured exception handling) - @ echo nmake clean VC-inlined (to build the MSVC inlined dll with C cleanup code) - @ echo nmake clean VC-static (to build the MSVC static lib with C cleanup code) - @ echo nmake clean VCE-debug (to build the debug MSVC dll with C++ exception handling) - @ echo nmake clean VSE-debug (to build the debug MSVC dll with structured exception handling) - @ echo nmake clean VC-debug (to build the debug MSVC dll with C cleanup code) - @ echo nmake clean VCE-inlined-debug (to build the debug MSVC inlined dll with C++ exception handling) - @ echo nmake clean VSE-inlined-debug (to build the debug MSVC inlined dll with structured exception handling) - @ echo nmake clean VC-inlined-debug (to build the debug MSVC inlined dll with C cleanup code) - @ echo nmake clean VC-static-debug (to build the debug MSVC static lib with C cleanup code) - -all: - @ $(MAKE) /E clean VCE-inlined - @ $(MAKE) /E clean VSE-inlined - @ $(MAKE) /E clean VC-inlined - @ $(MAKE) /E clean VCE-inlined-debug - @ $(MAKE) /E clean VSE-inlined-debug - @ $(MAKE) /E clean VC-inlined-debug - -VCE: - @ $(MAKE) /E /nologo EHFLAGS="$(VCEFLAGS)" CLEANUP=__CLEANUP_CXX pthreadVCE$(DLL_VER).dll - -VCE-debug: - @ $(MAKE) /E /nologo EHFLAGS="$(VCEFLAGSD)" CLEANUP=__CLEANUP_CXX pthreadVCE$(DLL_VERD).dll - -VSE: - @ $(MAKE) /E /nologo EHFLAGS="$(VSEFLAGS)" CLEANUP=__CLEANUP_SEH pthreadVSE$(DLL_VER).dll - -VSE-debug: - @ $(MAKE) /E /nologo EHFLAGS="$(VSEFLAGSD)" CLEANUP=__CLEANUP_SEH pthreadVSE$(DLL_VERD).dll - -VC: - @ $(MAKE) /E /nologo EHFLAGS="$(VCFLAGS)" CLEANUP=__CLEANUP_C pthreadVC$(DLL_VER).dll - -VC-debug: - @ $(MAKE) /E /nologo EHFLAGS="$(VCFLAGSD)" CLEANUP=__CLEANUP_C pthreadVC$(DLL_VERD).dll - -# -# The so-called inlined DLL is just a single translation unit with -# inlining optimisation turned on. -# -VCE-inlined: - @ $(MAKE) /E /nologo EHFLAGS="$(VCEFLAGS) /DPTW32_BUILD_INLINED" CLEANUP=__CLEANUP_CXX pthreadVCE$(DLL_VER).stamp - -VCE-inlined-debug: - @ $(MAKE) /E /nologo EHFLAGS="$(VCEFLAGSD) /DPTW32_BUILD_INLINED" CLEANUP=__CLEANUP_CXX pthreadVCE$(DLL_VERD).stamp - -VSE-inlined: - @ $(MAKE) /E /nologo EHFLAGS="$(VSEFLAGS) /DPTW32_BUILD_INLINED" CLEANUP=__CLEANUP_SEH pthreadVSE$(DLL_VER).stamp - -VSE-inlined-debug: - @ $(MAKE) /E /nologo EHFLAGS="$(VSEFLAGSD) /DPTW32_BUILD_INLINED" CLEANUP=__CLEANUP_SEH pthreadVSE$(DLL_VERD).stamp - -VC-inlined: - @ $(MAKE) /E /nologo EHFLAGS="$(VCFLAGS) /DPTW32_BUILD_INLINED" CLEANUP=__CLEANUP_C pthreadVC$(DLL_VER).stamp - -VC-inlined-debug: - @ $(MAKE) /E /nologo EHFLAGS="$(VCFLAGSD) /DPTW32_BUILD_INLINED" CLEANUP=__CLEANUP_C pthreadVC$(DLL_VERD).stamp - -VC-static: - @ $(MAKE) /E /nologo EHFLAGS="$(VCFLAGS) /DPTW32_BUILD_INLINED /DPTW32_STATIC_LIB" CLEANUP=__CLEANUP_C pthreadVC$(DLL_VER).static - -VC-static-debug: - @ $(MAKE) /E /nologo EHFLAGS="$(VCFLAGSD) /DPTW32_BUILD_INLINED /DPTW32_STATIC_LIB" CLEANUP=__CLEANUP_C pthreadVC$(DLL_VERD).static - -realclean: clean - if exist pthread*.dll del pthread*.dll - if exist pthread*.lib del pthread*.lib - if exist *.manifest del *.manifest - if exist *.stamp del *.stamp - -clean: - if exist *.obj del *.obj - if exist *.def del *.def - if exist *.ilk del *.ilk - if exist *.pdb del *.pdb - if exist *.exp del *.exp - if exist *.map del *.map - if exist *.o del *.o - if exist *.i del *.i - if exist *.res del *.res - - -install: - copy pthread*.dll $(DLLDEST) - copy pthread*.lib $(LIBDEST) - copy pthread.h $(HDRDEST) - copy sched.h $(HDRDEST) - copy semaphore.h $(HDRDEST) - -$(DLLS): $(DLL_OBJS) - $(CC) /LDd /Zi /nologo $(DLL_OBJS) /link /implib:$*.lib $(XLIBS) /out:$@ - -$(INLINED_STAMPS): $(DLL_INLINED_OBJS) - $(CC) /LDd /Zi /nologo $(DLL_INLINED_OBJS) /link /implib:$*.lib $(XLIBS) /out:$*.dll - -$(STATIC_STAMPS): $(DLL_INLINED_OBJS) - if exist $*.lib del $*.lib - lib $(DLL_INLINED_OBJS) /out:$*.lib - -.c.obj: - $(CC) $(EHFLAGS) /D$(CLEANUP) -c $< - -# TARGET_CPU is an environment variable set by Visual Studio Command Prompt -# as provided by the SDK -.rc.res: - rc /dPTW32_ARCH$(TARGET_CPU) /dPTW32_RC_MSC /d$(CLEANUP) $< - -.c.i: - $(CC) /P /O2 /Ob1 $(VCFLAGS) $< - -attr.obj: attr.c $(ATTR_SRCS) $(INCL) -barrier.obj: barrier.c $(BARRIER_SRCS) $(INCL) -cancel.obj: cancel.c $(CANCEL_SRCS) $(INCL) -condvar.obj: condvar.c $(CONDVAR_SRCS) $(INCL) -exit.obj: exit.c $(EXIT_SRCS) $(INCL) -misc.obj: misc.c $(MISC_SRCS) $(INCL) -mutex.obj: mutex.c $(MUTEX_SRCS) $(INCL) -nonportable.obj: nonportable.c $(NONPORTABLE_SRCS) $(INCL) -private.obj: private.c $(PRIVATE_SRCS) $(INCL) -rwlock.obj: rwlock.c $(RWLOCK_SRCS) $(INCL) -sched.obj: sched.c $(SCHED_SRCS) $(INCL) -semaphore.obj: semaphore.c $(SEMAPHORE_SRCS) $(INCL) -spin.obj: spin.c $(SPIN_SRCS) $(INCL) -sync.obj: sync.c $(SYNC_SRCS) $(INCL) -tsd.obj: tsd.c $(TSD_SRCS) $(INCL) -version.res: version.rc $(INCL) diff --git a/platform/win32/msvc/external/pthreads.2/NEWS b/platform/win32/msvc/external/pthreads.2/NEWS deleted file mode 100644 index 5ed91378622..00000000000 --- a/platform/win32/msvc/external/pthreads.2/NEWS +++ /dev/null @@ -1,1241 +0,0 @@ -RELEASE 2.9.0 -------------- -(2012-05-25) - -General -------- -New bug fixes in this release since 2.8.0 have NOT been applied to the -1.x.x series. - -Some changes post 2011-02-26 in CVS may not be compatible with pre -Windows 2000 systems. - -Use of other than the "C" version of the library is now discouraged. -That is, the "C++" version fails some tests and does not provide any -additional functionality. - -Testing and verification ------------------------- -This version has been tested on SMP architecture (Intel x64 Hex Core) -by completing the included test suite, stress and bench tests. - -New Features ------------- -DLL properties now properly includes the target architecture, i.e. -right-click on the file pthreadVC2.dll in explorer and choose the Detail -tab will show the compiler and architecture in the description field, e.g. -"MS C x64" or "MS C x86". -- Ross Johnson - -(MSC and GNU builds) The statically linked library now automatically -initialises and cleans up on program start/exit, i.e. statically linked -applications need not call the routines pthread_win32_process_attach_np() -and pthread_win32_process_detach_np() explicitly. The per-thread routine -pthread_win32_thread_detach_np() is also called at program exit to cleanup -POSIX resources acquired by the primary Windows native thread, if I (RJ) -understand the process correctly. Other Windows native threads that call -POSIX API routines may need to call the thread detach routine on thread -exit if the application depends on reclaimed POSIX resources or running -POSIX TSD (TLS) destructors. -See README.NONPORTABLE for descriptions of these routines. -- Ramiro Polla - -Robust mutexes are implemented within the PROCESS_PRIVATE scope. NOTE that -pthread_mutex_* functions may return different error codes for robust -mutexes than they otherwise do in normal usage, e.g. pthread_mutex_unlock -is required to check ownership for all mutex types when the mutex is -robust, whereas this does not occur for the "normal" non-robust mutex type. -- Ross Johnson - -pthread_getunique_np is implemented for source level compatibility -with some other implementations. This routine returns a 64 bit -sequence number that is uniquely associated with a thread. It can be -used by applications to order or hash POSIX thread handles. -- Ross Johnson - -Bug fixes ---------- -Many more changes for 64 bit systems. -- Kai Tietz - -Various modifications and fixes to build and test for WinCE. -- Marcel Ruff, Sinan Kaya - -Fix pthread_cond_destroy() - should not be a cancellation point. Other -minor build problems fixed. -- Romano Paolo Tenca - -Remove potential deadlock condition from pthread_cond_destroy(). -- Eric Berge - -Various modifications to build and test for Win64. -- Kip Streithorst - -Various fixes to the QueueUserAPCEx async cancellation helper DLL -(this is a separate download) and pthreads code cleanups. -- Sebastian Gottschalk - -Removed potential NULL pointer reference. -- Robert Kindred - -Removed the requirement that applications restrict the number of threads -calling pthread_barrier_wait to just the barrier count. Also reduced the -contention between barrier_wait and barrier_destroy. This change will have -slowed barriers down slightly but halves the number of semaphores consumed -per barrier to one. -- Ross Johnson - -Fixed a handle leak in sched_[gs]etscheduler. -- Mark Pizzolato - -Removed all of the POSIX re-entrant function compatibility macros from pthread.h. -Some were simply not semanticly correct. -- Igor Lubashev - -Threads no longer attempt to pass uncaught exceptions out of thread scope (C++ -and SEH builds only). Uncaught exceptions now cause the thread to exit with -the return code PTHREAD_CANCELED. -- Ross Johnson - -Lots of casting fixes particularly for x64, Interlocked fixes and reworking -for x64. -- Daniel Richard G., John Kamp - -Other changes -------------- -Dependence on the winsock library is now discretionary via -#define RETAIN_WSALASTERROR in config.h. It is undefined by default unless -WINCE is defined (because RJ is unsure of the dependency there). -- Ramiro Polla - -Several static POSIX mutexes used for internal management were replaced by -MCS queue-based locks to reduce resource consumption, in particular use of Win32 -objects. -- Ross Johnson - -For security, the QuserEx.dll if used must now be installed in the Windows System -folder. -- Ross Johnson - -New tests ---------- -robust[1-5].c - Robust mutexes -sequence1.c - per-thread unique sequence numbers - -Modified tests and benchtests ------------------------------ -All mutex*.c tests wherever appropriate have been modified to also test -robust mutexes under the same conditions. -Added robust mutex benchtests to benchtest*.c wherever appropriate. - - -RELEASE 2.8.0 -------------- -(2006-12-22) - -General -------- -New bug fixes in this release since 2.7.0 have not been applied to the -version 1.x.x series. It is probably time to drop version 1. - -Testing and verification ------------------------- -This release has not yet been tested on SMP architechtures. All tests pass -on a uni-processor system. - -Bug fixes ---------- -Sem_destroy could return EBUSY even though no threads were waiting on the -semaphore. Other races around invalidating semaphore structs (internally) -have been removed as well. - -New tests ---------- -semaphore5.c - tests the bug fix referred to above. - - -RELEASE 2.7.0 -------------- -(2005-06-04) - -General -------- -All new features in this release have been back-ported in release 1.11.0, -including the incorporation of MCS locks in pthread_once, however, versions -1 and 2 remain incompatible even though they are now identical in -performance and functionality. - -Testing and verification ------------------------- -This release has been tested (passed the test suite) on both uni-processor -and multi-processor systems. -- Tim Theisen - -Bug fixes ---------- -Pthread_once has been re-implemented to remove priority boosting and other -complexity to improve robustness. Races for Win32 handles that are not -recycle-unique have been removed. The general form of pthread_once is now -the same as that suggested earlier by Alexander Terekhov, but instead of the -'named mutex', a queue-based lock has been implemented which has the required -properties of dynamic self initialisation and destruction. This lock is also -efficient. The ABI is unaffected in as much as the size of pthread_once_t has -not changed and PTHREAD_ONCE_INIT has not changed, however, applications that -peek inside pthread_once_t, which is supposed to be opaque, will break. -- Vladimir Kliatchko - -New features ------------- -* Support for Mingw cross development tools added to GNUmakefile. -Mingw cross tools allow building the libraries on Linux. -- Mikael Magnusson - - -RELEASE 2.6.0 -------------- -(2005-05-19) - -General -------- -All of the bug fixes and new features in this release have been -back-ported in release 1.10.0. - -Testing and verification ------------------------- -This release has been tested (passed the test suite) on both uni-processor -and multi-processor systems. Thanks to Tim Theisen at TomoTherapy for -exhaustively running the MP tests and for providing crutial observations -and data when faults are detected. - -Bugs fixed ----------- - -* pthread_detach() now reclaims remaining thread resources if called after -the target thread has terminated. Previously, this routine did nothing in -this case. - -New tests ---------- - -* detach1.c - tests that pthread_detach properly invalidates the target -thread, which indicates that the thread resources have been reclaimed. - - -RELEASE 2.5.0 -------------- -(2005-05-09) - -General -------- - -The package now includes a reference documentation set consisting of -HTML formatted Unix-style manual pages that have been edited for -consistency with Pthreads-w32. The set can also be read online at: -http://sources.redhat.com/pthreads-win32/manual/index.html - -Thanks again to Tim Theisen for running the test suite pre-release -on an MP system. - -All of the bug fixes and new features in this release have been -back-ported in release 1.9.0. - -Bugs fixed ----------- - -* Thread Specific Data (TSD) key management has been ammended to -eliminate a source of (what was effectively) resource leakage (a HANDLE -plus memory for each key destruct routine/thread association). This was -not a true leak because these resources were eventually reclaimed when -pthread_key_delete was run AND each thread referencing the key had exited. -The problem was that these two conditions are often not met until very -late, and often not until the process is about to exit. - -The ammended implementation avoids the need for the problematic HANDLE -and reclaims the memory as soon as either the key is deleted OR the -thread exits, whichever is first. - -Thanks to Richard Hughes at Aculab for identifying and locating the leak. - -* TSD key destructors are now processed up to PTHREAD_DESTRUCTOR_ITERATIONS -times instead of just once. PTHREAD_DESTRUCTOR_ITERATIONS has been -defined in pthread.h for some time but not used. - -* Fix a semaphore accounting race between sem_post/sem_post_multiple -and sem_wait cancellation. This is the same issue as with -sem_timedwait that was fixed in the last release. - -* sem_init, sem_post, and sem_post_multiple now check that the -semaphore count never exceeds _POSIX_SEM_VALUE_MAX. - -* Although sigwait() is nothing more than a no-op, it should at least -be a cancellation point to be consistent with the standard. - -New tests ---------- - -* stress1.c - attempts to expose problems in condition variable -and semaphore timed wait logic. This test was inspired by Stephan -Mueller's sample test code used to identify the sem_timedwait bug -from the last release. It's not a part of the regular test suite -because it can take awhile to run. To run it: -nmake clean VC-stress - -* tsd2.c - tests that key destructors are re-run if the tsd key value is -not NULL after the destructor routine has run. Also tests that -pthread_setspecific() and pthread_getspecific() are callable from -destructors. - - -RELEASE 2.4.0 -------------- -(2005-04-26) - -General -------- - -There is now no plan to release a version 3.0.0 to fix problems in -pthread_once(). Other possible implementations of pthread_once -will still be investigated for a possible future release in an attempt -to reduce the current implementation's complexity. - -All of the bug fixes and new features in this release have been -back-ported for release 1.8.0. - -Bugs fixed ----------- - -* Fixed pthread_once race (failures on an MP system). Thanks to -Tim Theisen for running exhaustive pre-release testing on his MP system -using a range of compilers: - VC++ 6 - VC++ 7.1 - Intel C++ version 8.0 -All tests passed. -Some minor speed improvements were also done. - -* Fix integer overrun error in pthread_mutex_timedlock() - missed when -sem_timedwait() was fixed in release 2.2.0. This routine no longer returns -ENOTSUP when NEED_SEM is defined - it is supported (NEED_SEM is only -required for WinCE versions prior to 3.0). - -* Fix timeout bug in sem_timedwait(). -- Thanks to Stephan Mueller for reporting, providing diagnostic output -and test code. - -* Fix several problems in the NEED_SEM conditionally included code. -NEED_SEM included code is provided for systems that don't implement W32 -semaphores, such as WinCE prior to version 3.0. An alternate implementation -of POSIX semaphores is built using W32 events for these systems when -NEED_SEM is defined. This code has been completely rewritten in this -release to reuse most of the default POSIX semaphore code, and particularly, -to implement all of the sem_* routines supported by pthreads-win32. Tim -Theisen also run the test suite over the NEED_SEM code on his MP system. All -tests passed. - -* The library now builds without errors for the Borland Builder 5.5 compiler. - -New features ------------- - -* pthread_mutex_timedlock() and all sem_* routines provided by -pthreads-win32 are now implemented for WinCE versions prior to 3.0. Those -versions did not implement W32 semaphores. Define NEED_SEM in config.h when -building the library for these systems. - -Known issues in this release ----------------------------- - -* pthread_once is too complicated - but it works as far as testing can -determine.. - -* The Borland version of the dll fails some of the tests with a memory read -exception. The cause is not yet known but a compiler bug has not been ruled -out. - - -RELEASE 2.3.0 -------------- -(2005-04-12) - -General -------- - -Release 1.7.0 is a backport of features and bug fixes new in -this release. See earlier notes under Release 2.0.0/General. - -Bugs fixed ----------- - -* Fixed pthread_once potential for post once_routine cancellation -hanging due to starvation. See comments in pthread_once.c. -Momentary priority boosting is used to ensure that, after a -once_routine is cancelled, the thread that will run the -once_routine is not starved by higher priority waiting threads at -critical times. Priority boosting occurs only AFTER a once_routine -cancellation, and is applied only to that once_control. The -once_routine is run at the thread's normal base priority. - -New tests ---------- - -* once4.c: Aggressively tests pthread_once() under realtime -conditions using threads with varying priorities. Windows' -random priority boosting does not occur for threads with realtime -priority levels. - - -RELEASE 2.2.0 -------------- -(2005-04-04) - -General -------- - -* Added makefile targets to build static link versions of the library. -Both MinGW and MSVC. Please note that this does not imply any change -to the LGPL licensing, which still imposes psecific conditions on -distributing software that has been statically linked with this library. - -* There is a known bug in pthread_once(). Cancellation of the init_routine -exposes a potential starvation (i.e. deadlock) problem if a waiting thread -has a higher priority than the initting thread. This problem will be fixed -in version 3.0.0 of the library. - -Bugs fixed ----------- - -* Fix integer overrun error in sem_timedwait(). -Kevin Lussier - -* Fix preprocessor directives for static linking. -Dimitar Panayotov - - -RELEASE 2.1.0 -------------- -(2005-03-16) - -Bugs fixed ----------- - -* Reverse change to pthread_setcancelstate() in 2.0.0. - - -RELEASE 2.0.0 -------------- -(2005-03-16) - -General -------- - -This release represents an ABI change and the DLL version naming has -incremented from 1 to 2, e.g. pthreadVC2.dll. - -Version 1.4.0 back-ports the new functionality included in this -release. Please distribute DLLs built from that version with updates -to applications built on pthreads-win32 version 1.x.x. - -The package naming has changed, replacing the snapshot date with -the version number + descriptive information. E.g. this -release is "pthreads-w32-2-0-0-release". - -Bugs fixed ----------- - -* pthread_setcancelstate() no longer checks for a pending -async cancel event if the library is using alertable async -cancel. See the README file (Prerequisites section) for info -on adding alertable async cancelation. - -New features ------------- - -* pthread_once() now supports init_routine cancellability. - -New tests ---------- - -* Agressively test pthread_once() init_routine cancellability. - - -SNAPSHOT 2005-03-08 -------------------- -Version 1.3.0 - -Bug reports (fixed) -------------------- - -* Implicitly created threads leave Win32 handles behind after exiting. -- Dmitrii Semii - -* pthread_once() starvation problem. -- Gottlob Frege - -New tests ---------- - -* More intense testing of pthread_once(). - - -SNAPSHOT 2005-01-25 -------------------- -Version 1.2.0 - -Bug fixes ---------- - -* Attempted acquisition of a recursive mutex could cause waiting threads -to not be woken when the mutex was released. -- Ralf Kubis <RKubis at mc.com> - -* Various package omissions have been fixed. - - -SNAPSHOT 2005-01-03 -------------------- -Version 1.1.0 - -Bug fixes ---------- - -* Unlocking recursive or errorcheck mutexes would sometimes -unexpectedly return an EPERM error (bug introduced in -snapshot-2004-11-03). -- Konstantin Voronkov <beowinkle at yahoo.com> - - -SNAPSHOT 2004-11-22 -------------------- -Version 1.0.0 - -This snapshot primarily fixes the condvar bug introduced in -snapshot-2004-11-03. DLL versioning has also been included to allow -applications to runtime check the Microsoft compatible DLL version -information, and to extend the DLL naming system for ABI and major -(non-backward compatible) API changes. See the README file for details. - -Bug fixes ---------- - -* Condition variables no longer deadlock (bug introduced in -snapshot-2004-11-03). -- Alexander Kotliarov and Nicolas at saintmac - -* DLL naming extended to avoid 'DLL hell' in the future, and to -accommodate the ABI change introduced in snapshot-2004-11-03. Snapshot -2004-11-03 will be removed from FTP sites. - -New features ------------- - -* A Microsoft-style version resource has been added to the DLL for -applications that wish to check DLL compatibility at runtime. - -* Pthreads-win32 DLL naming has been extended to allow incompatible DLL -versions to co-exist in the same filesystem. See the README file for details, -but briefly: while the version information inside the DLL will change with -each release from now on, the DLL version names will only change if the new -DLL is not backward compatible with older applications. - -The versioning scheme has been borrowed from GNU Libtool, and the DLL -naming scheme is from Cygwin. Provided the Libtool-style numbering rules are -honoured, the Cygwin DLL naming scheme automatcally ensures that DLL name -changes are minimal and that applications will not load an incompatible -pthreads-win32 DLL. - -Those who use the pre-built DLLs will find that the DLL/LIB names have a new -suffix (1) in this snapshot. E.g. pthreadVC1.dll etc. - -* The POSIX thread ID reuse uniqueness feature introduced in the last snapshot -has been kept as default, but the behaviour can now be controlled when the DLL -is built to effectively switch it off. This makes the library much more -sensitive to applications that assume that POSIX thread IDs are unique, i.e. -are not strictly compliant with POSIX. See the PTW32_THREAD_ID_REUSE_INCREMENT -macro comments in config.h for details. - -Other changes -------------- -Certain POSIX macros have changed. - -These changes are intended to conform to the Single Unix Specification version 3, -which states that, if set to 0 (zero) or not defined, then applications may use -sysconf() to determine their values at runtime. Pthreads-win32 does not -implement sysconf(). - -The following macros are no longer undefined, but defined and set to -1 -(not implemented): - - _POSIX_THREAD_ATTR_STACKADDR - _POSIX_THREAD_PRIO_INHERIT - _POSIX_THREAD_PRIO_PROTECT - _POSIX_THREAD_PROCESS_SHARED - -The following macros are defined and set to 200112L (implemented): - - _POSIX_THREADS - _POSIX_THREAD_SAFE_FUNCTIONS - _POSIX_THREAD_ATTR_STACKSIZE - _POSIX_THREAD_PRIORITY_SCHEDULING - _POSIX_SEMAPHORES - _POSIX_READER_WRITER_LOCKS - _POSIX_SPIN_LOCKS - _POSIX_BARRIERS - -The following macros are defined and set to appropriate values: - - _POSIX_THREAD_THREADS_MAX - _POSIX_SEM_VALUE_MAX - _POSIX_SEM_NSEMS_MAX - PTHREAD_DESTRUCTOR_ITERATIONS - PTHREAD_KEYS_MAX - PTHREAD_STACK_MIN - PTHREAD_THREADS_MAX - - -SNAPSHOT 2004-11-03 -------------------- - -DLLs produced from this snapshot cannot be used with older applications without -recompiling the application, due to a change to pthread_t to provide unique POSIX -thread IDs. - -Although this snapshot passes the extended test suite, many of the changes are -fairly major, and some applications may show different behaviour than previously, -so adopt with care. Hopefully, any changed behaviour will be due to the library -being better at it's job, not worse. - -Bug fixes ---------- - -* pthread_create() no longer accepts NULL as the thread reference arg. -A segfault (memory access fault) will result, and no thread will be -created. - -* pthread_barrier_wait() no longer acts as a cancelation point. - -* Fix potential race condition in pthread_once() -- Tristan Savatier <tristan at mpegtv.com> - -* Changes to pthread_cond_destroy() exposed some coding weaknesses in several -test suite mini-apps because pthread_cond_destroy() now returns EBUSY if the CV -is still in use. - -New features ------------- - -* Added for compatibility: -PTHREAD_RECURSIVE_MUTEX_INITIALIZER, -PTHREAD_ERRORCHECK_MUTEX_INITIALIZER, -PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP, -PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP - -* Initial support for Digital Mars compiler -- Anuj Goyal <anuj.goyal at gmail.com> - -* Faster Mutexes. These have been been rewritten following a model provided by -Alexander Terekhov that reduces kernel space checks, and eliminates some additional -critical sections used to manage a race between timedlock expiration and unlock. -Please be aware that the new mutexes do not enforce strict absolute FIFO scheduling -of mutexes, however any out-of-order lock acquisition should be very rare. - -* Faster semaphores. Following a similar model to mutexes above, these have been -rewritten to use preliminary users space checks. - -* sem_getvalue() now returns the number of waiters. - -* The POSIX thread ID now has much stronger uniqueness characteristics. The library -garrantees not to reuse the same thread ID for at least 2^(wordsize) thread -destruction/creation cycles. - -New tests ---------- - -* semaphore4.c: Tests cancelation of the new sem_wait(). - -* semaphore4t.c: Likewise for sem_timedwait(). - -* rwlock8.c: Tests and times the slow execution paths of r/w locks, and the CVs, -mutexes, and semaphores that they're built on. - - -SNAPSHOT 2004-05-16 -------------------- - -Attempt to add Watcom to the list of compilers that can build the library. -This failed in the end due to it's non-thread-aware errno. The library -builds but the test suite fails. See README.Watcom for more details. - -Bug fixes ---------- -* Bug and memory leak in sem_init() -- Alex Blanco <Alex.Blanco at motorola.com> - -* ptw32_getprocessors() now returns CPU count of 1 for WinCE. -- James Ewing <james.ewing at sveasoft.com> - -* pthread_cond_wait() could be canceled at a point where it should not -be cancelable. Fixed. -- Alexander Terekhov <TEREKHOV at de.ibm.com> - -* sem_timedwait() had an incorrect timeout calculation. -- Philippe Di Cristo <philipped at voicebox.com> - -* Fix a memory leak left behind after threads are destroyed. -- P. van Bruggen <pietvb at newbridges.nl> - -New features ------------- -* Ported to AMD64. -- Makoto Kato <raven at oldskool.jp> - -* True pre-emptive asynchronous cancelation of threads. This is optional -and requires that Panagiotis E. Hadjidoukas's QueueUserAPCEx package be -installed. This package is included in the pthreads-win32 self-unpacking -Zip archive starting from this snapshot. See the README.txt file inside -the package for installation details. - -Note: If you don't use async cancelation in your application, or don't need -to cancel threads that are blocked on system resources such as network I/O, -then the default non-preemptive async cancelation is probably good enough. -However, pthreads-win32 auto-detects the availability of these components -at run-time, so you don't need to rebuild the library from source if you -change your mind later. - -All of the advice available in books and elsewhere on the undesirability -of using async cancelation in any application still stands, but this -feature is a welcome addition with respect to the library's conformance to -the POSIX standard. - -SNAPSHOT 2003-09-18 -------------------- - -Cleanup of thread priority management. In particular, setting of thread -priority now attempts to map invalid Win32 values within the range returned -by sched_get_priority_min/max() to useful values. See README.NONPORTABLE -under "Thread priority". - -Bug fixes ---------- -* pthread_getschedparam() now returns the priority given by the most recent -call to pthread_setschedparam() or established by pthread_create(), as -required by the standard. Previously, pthread_getschedparam() incorrectly -returned the running thread priority at the time of the call, which may have -been adjusted or temporarily promoted/demoted. - -* sched_get_priority_min() and sched_get_priority_max() now return -1 on error -and set errno. Previously, they incorrectly returned the error value directly. - - -SNAPSHOT 2003-09-04 -------------------- - -Bug fixes ---------- -* ptw32_cancelableWait() now allows cancelation of waiting implicit POSIX -threads. - -New test --------- -* cancel8.c tests cancelation of Win32 threads waiting at a POSIX cancelation -point. - - -SNAPSHOT 2003-09-03 -------------------- - -Bug fixes ---------- -* pthread_self() would free the newly created implicit POSIX thread handle if -DuplicateHandle failed instead of recycle it (very unlikely). - -* pthread_exit() was neither freeing nor recycling the POSIX thread struct -for implicit POSIX threads. - -New feature - Cancelation of/by Win32 (non-POSIX) threads ---------------------------------------------------------- -Since John Bossom's original implementation, the library has allowed non-POSIX -initialised threads (Win32 threads) to call pthreads-win32 routines and -therefore interact with POSIX threads. This is done by creating an on-the-fly -POSIX thread ID for the Win32 thread that, once created, allows fully -reciprical interaction. This did not extend to thread cancelation (async or -deferred). Now it does. - -Any thread can be canceled by any other thread (Win32 or POSIX) if the former -thread's POSIX pthread_t value is known. It's TSD destructors and POSIX -cleanup handlers will be run before the thread exits with an exit code of -PTHREAD_CANCELED (retrieved with GetExitCodeThread()). - -This allows a Win32 thread to, for example, call POSIX CV routines in the same way -that POSIX threads would/should, with pthread_cond_wait() cancelability and -cleanup handlers (pthread_cond_wait() is a POSIX cancelation point). - -By adding cancelation, Win32 threads should now be able to call all POSIX -threads routines that make sense including semaphores, mutexes, condition -variables, read/write locks, barriers, spinlocks, tsd, cleanup push/pop, -cancelation, pthread_exit, scheduling, etc. - -Note that these on-the-fly 'implicit' POSIX thread IDs are initialised as detached -(not joinable) with deferred cancelation type. The POSIX thread ID will be created -automatically by any POSIX routines that need a POSIX handle (unless the routine -needs a pthread_t as a parameter of course). A Win32 thread can discover it's own -POSIX thread ID by calling pthread_self(), which will create the handle if -necessary and return the pthread_t value. - -New tests ---------- -Test the above new feature. - - -SNAPSHOT 2003-08-19 -------------------- - -This snapshot fixes some accidental corruption to new test case sources. -There are no changes to the library source code. - - -SNAPSHOT 2003-08-15 -------------------- - -Bug fixes ---------- - -* pthread.dsp now uses correct compile flags (/MD). -- Viv <vcotirlea@hotmail.com> - -* pthread_win32_process_detach_np() fixed memory leak. -- Steven Reddie <Steven.Reddie@ca.com> - -* pthread_mutex_destroy() fixed incorrect return code. -- Nicolas Barry <boozai@yahoo.com> - -* pthread_spin_destroy() fixed memory leak. -- Piet van Bruggen <pietvb@newbridges.nl> - -* Various changes to tighten arg checking, and to work with later versions of -MinGW32 and MsysDTK. - -* pthread_getschedparam() etc, fixed dangerous thread validity checking. -- Nicolas Barry <boozai@yahoo.com> - -* POSIX thread handles are now reused and their memory is not freed on thread exit. -This allows for stronger thread validity checking. - -New standard routine --------------------- - -* pthread_kill() added to provide thread validity checking to applications. -It does not accept any non zero values for the signal arg. - -New test cases --------------- - -* New test cases to confirm validity checking, pthread_kill(), and thread reuse. - - -SNAPSHOT 2003-05-10 -------------------- - -Bug fixes ---------- - -* pthread_mutex_trylock() now returns correct error values. -pthread_mutex_destroy() will no longer destroy a recursively locked mutex. -pthread_mutex_lock() is no longer inadvertantly behaving as a cancelation point. -- Thomas Pfaff <tpfaff@gmx.net> - -* pthread_mutex_timedlock() no longer occasionally sets incorrect mutex -ownership, causing deadlocks in some applications. -- Robert Strycek <strycek@posam.sk> and Alexander Terekhov <TEREKHOV@de.ibm.com> - - -SNAPSHOT 2002-11-04 -------------------- - -Bug fixes ---------- - -* sem_getvalue() now returns the correct value under Win NT and WinCE. -- Rob Fanner <rfanner@stonethree.com> - -* sem_timedwait() now uses tighter checks for unreasonable -abstime values - that would result in unexpected timeout values. - -* ptw32_cond_wait_cleanup() no longer mysteriously consumes -CV signals but may produce more spurious wakeups. It is believed -that the sem_timedwait() call is consuming a CV signal that it -shouldn't. -- Alexander Terekhov <TEREKHOV@de.ibm.com> - -* Fixed a memory leak in ptw32_threadDestroy() for implicit threads. - -* Fixed potential for deadlock in pthread_cond_destroy(). -A deadlock could occur for statically declared CVs (PTHREAD_COND_INITIALIZER), -when one thread is attempting to destroy the condition variable while another -is attempting to dynamically initialize it. -- Michael Johnson <michaelj@maine.rr.com> - - -SNAPSHOT 2002-03-02 -------------------- - -Cleanup code default style. (IMPORTANT) ----------------------------------------------------------------------- -Previously, if not defined, the cleanup style was determined automatically -from the compiler/language, and one of the following was defined accordingly: - - __CLEANUP_SEH MSVC only - __CLEANUP_CXX C++, including MSVC++, GNU G++ - __CLEANUP_C C, including GNU GCC, not MSVC - -These defines determine the style of cleanup (see pthread.h) and, -most importantly, the way that cancelation and thread exit (via -pthread_exit) is performed (see the routine ptw32_throw() in private.c). - -In short, the exceptions versions of the library throw an exception -when a thread is canceled or exits (via pthread_exit()), which is -caught by a handler in the thread startup routine, so that the -the correct stack unwinding occurs regardless of where the thread -is when it's canceled or exits via pthread_exit(). - -In this and future snapshots, unless the build explicitly defines (e.g. -via a compiler option) __CLEANUP_SEH, __CLEANUP_CXX, or __CLEANUP_C, then -the build NOW always defaults to __CLEANUP_C style cleanup. This style -uses setjmp/longjmp in the cancelation and pthread_exit implementations, -and therefore won't do stack unwinding even when linked to applications -that have it (e.g. C++ apps). This is for consistency with most -current commercial Unix POSIX threads implementations. Compaq's TRU64 -may be an exception (no pun intended) and possible future trend. - -Although it was not clearly documented before, it is still necessary to -build your application using the same __CLEANUP_* define as was -used for the version of the library that you link with, so that the -correct parts of pthread.h are included. That is, the possible -defines require the following library versions: - - __CLEANUP_SEH pthreadVSE.dll - __CLEANUP_CXX pthreadVCE.dll or pthreadGCE.dll - __CLEANUP_C pthreadVC.dll or pthreadGC.dll - -E.g. regardless of whether your app is C or C++, if you link with -pthreadVC.lib or libpthreadGC.a, then you must define __CLEANUP_C. - - -THE POINT OF ALL THIS IS: if you have not been defining one of these -explicitly, then the defaults as described at the top of this -section were being used. - -THIS NOW CHANGES, as has been explained above, but to try to make this -clearer here's an example: - -If you were building your application with MSVC++ i.e. using C++ -exceptions and not explicitly defining one of __CLEANUP_*, then -__CLEANUP_C++ was automatically defined for you in pthread.h. -You should have been linking with pthreadVCE.dll, which does -stack unwinding. - -If you now build your application as you had before, pthread.h will now -automatically set __CLEANUP_C as the default style, and you will need to -link with pthreadVC.dll. Stack unwinding will now NOT occur when a thread -is canceled, or the thread calls pthread_exit(). - -Your application will now most likely behave differently to previous -versions, and in non-obvious ways. Most likely is that locally -instantiated objects may not be destroyed or cleaned up after a thread -is canceled. - -If you want the same behaviour as before, then you must now define -__CLEANUP_C++ explicitly using a compiler option and link with -pthreadVCE.dll as you did before. - - -WHY ARE WE MAKING THE DEFAULT STYLE LESS EXCEPTION-FRIENDLY? -Because no commercial Unix POSIX threads implementation allows you to -choose to have stack unwinding. Therefore, providing it in pthread-win32 -as a default is dangerous. We still provide the choice but unless -you consciously choose to do otherwise, your pthreads applications will -now run or crash in similar ways irrespective of the threads platform -you use. Or at least this is the hope. - - -WHY NOT REMOVE THE EXCEPTIONS VERSIONS OF THE LIBRARY ALTOGETHER? -There are a few reasons: -- because there are well respected POSIX threads people who believe - that POSIX threads implementations should be exceptions aware and - do the expected thing in that context. (There are equally respected - people who believe it should not be easily accessible, if it's there - at all, for unconditional conformity to other implementations.) -- because pthreads-win32 is one of the few implementations that has - the choice, perhaps the only freely available one, and so offers - a laboratory to people who may want to explore the effects; -- although the code will always be around somewhere for anyone who - wants it, once it's removed from the current version it will not be - nearly as visible to people who may have a use for it. - - -Source module splitting ------------------------ -In order to enable smaller image sizes to be generated -for applications that link statically with the library, -most routines have been separated out into individual -source code files. - -This is being done in such a way as to be backward compatible. -The old source files are reused to congregate the individual -routine files into larger translation units (via a bunch of -# includes) so that the compiler can still optimise wherever -possible, e.g. through inlining, which can only be done -within the same translation unit. - -It is also possible to build the entire library by compiling -the single file named "pthread.c", which just #includes all -the secondary congregation source files. The compiler -may be able to use this to do more inlining of routines. - -Although the GNU compiler is able to produce libraries with -the necessary separation (the -ffunction-segments switch), -AFAIK, the MSVC and other compilers don't have this feature. - -Finally, since I use makefiles and command-line compilation, -I don't know what havoc this reorganisation may wreak amongst -IDE project file users. You should be able to continue -using your existing project files without modification. - - -New non-portable functions --------------------------- -pthread_num_processors_np(): - Returns the number of processors in the system that are - available to the process, as determined from the processor - affinity mask. - -pthread_timechange_handler_np(): - To improve tolerance against operator or time service initiated - system clock changes. - - This routine can be called by an application when it - receives a WM_TIMECHANGE message from the system. At present - it broadcasts all condition variables so that waiting threads - can wake up and re-evaluate their conditions and restart - their timed waits if required. - - Suggested by Alexander Terekhov - - -Platform dependence -------------------- -As Win95 doesn't provide one, the library now contains -it's own InterlockedCompareExchange() routine, which is used -whenever Windows doesn't provide it. InterlockedCompareExchange() -is used to implement spinlocks and barriers, and also in mutexes. -This routine relies on the CMPXCHG machine instruction which -is not available on i386 CPUs. This library (from snapshot -20010712 onwards) is therefore no longer supported on i386 -processor platforms. - - -New standard routines ---------------------- -For source code portability only - rwlocks cannot be process shared yet. - - pthread_rwlockattr_init() - pthread_rwlockattr_destroy() - pthread_rwlockattr_setpshared() - pthread_rwlockattr_getpshared() - -As defined in the new POSIX standard, and the Single Unix Spec version 3: - - sem_timedwait() - pthread_mutex_timedlock() - Alexander Terekhov and Thomas Pfaff - pthread_rwlock_timedrdlock() - adapted from pthread_rwlock_rdlock() - pthread_rwlock_timedwrlock() - adapted from pthread_rwlock_wrlock() - - -pthread.h no longer includes windows.h --------------------------------------- -[Not yet for G++] - -This was done to prevent conflicts. - -HANDLE, DWORD, and NULL are temporarily defined within pthread.h if -they are not already. - - -pthread.h, sched.h and semaphore.h now use dllexport/dllimport --------------------------------------------------------------- -Not only to avoid the need for the pthread.def file, but to -improve performance. Apparently, declaring functions with dllimport -generates a direct call to the function and avoids the overhead -of a stub function call. - -Bug fixes ---------- -* Fixed potential NULL pointer dereferences in pthread_mutexattr_init, -pthread_mutexattr_getpshared, pthread_barrierattr_init, -pthread_barrierattr_getpshared, and pthread_condattr_getpshared. -- Scott McCaskill <scott@magruder.org> - -* Removed potential race condition in pthread_mutex_trylock and -pthread_mutex_lock; -- Alexander Terekhov <TEREKHOV@de.ibm.com> - -* The behaviour of pthread_mutex_trylock in relation to -recursive mutexes was inconsistent with commercial implementations. -Trylock would return EBUSY if the lock was owned already by the -calling thread regardless of mutex type. Trylock now increments the -recursion count and returns 0 for RECURSIVE mutexes, and will -return EDEADLK rather than EBUSY for ERRORCHECK mutexes. This is -consistent with Solaris. -- Thomas Pfaff <tpfaff@gmx.net> - -* Found a fix for the library and workaround for applications for -the known bug #2, i.e. where __CLEANUP_CXX or __CLEANUP_SEH is defined. -See the "Known Bugs in this snapshot" section below. - -This could be made transparent to applications by replacing the macros that -define the current C++ and SEH versions of pthread_cleanup_push/pop -with the C version, but AFAIK cleanup handlers would not then run in the -correct sequence with destructors and exception cleanup handlers when -an exception occurs. - -* Cancelation once started in a thread cannot now be inadvertantly -double canceled. That is, once a thread begins it's cancelation run, -cancelation is disabled and a subsequent cancel request will -return an error (ESRCH). - -* errno: An incorrect compiler directive caused a local version -of errno to be used instead of the Win32 errno. Both instances are -thread-safe but applications checking errno after a pthreads-win32 -call would be wrong. Fixing this also fixed a bad compiler -option in the testsuite (/MT should have been /MD) which is -needed to link with the correct library MSVCRT.LIB. - - -SNAPSHOT 2001-07-12 -------------------- - -To be added - - -SNAPSHOT 2001-07-03 -------------------- - -To be added - - -SNAPSHOT 2000-08-13 -------------------- - -New: -- Renamed DLL and LIB files: - pthreadVSE.dll (MS VC++/Structured EH) - pthreadVSE.lib - pthreadVCE.dll (MS VC++/C++ EH) - pthreadVCE.lib - pthreadGCE.dll (GNU G++/C++ EH) - libpthreadw32.a - - Both your application and the pthread dll should use the - same exception handling scheme. - -Bugs fixed: -- MSVC++ C++ exception handling. - -Some new tests have been added. - - -SNAPSHOT 2000-08-10 -------------------- - -New: -- asynchronous cancelation on X86 (Jason Nye) -- Makefile compatible with MS nmake to replace - buildlib.bat -- GNUmakefile for Mingw32 -- tests/Makefile for MS nmake replaces runall.bat -- tests/GNUmakefile for Mingw32 - -Bugs fixed: -- kernel32 load/free problem -- attempt to hide internel exceptions from application - exception handlers (__try/__except and try/catch blocks) -- Win32 thread handle leakage bug - (David Baggett/Paul Redondo/Eyal Lebedinsky) - -Some new tests have been added. - - -SNAPSHOT 1999-11-02 -------------------- - -Bugs fixed: -- ctime_r macro had an incorrect argument (Erik Hensema), -- threads were not being created - PTHREAD_CANCEL_DEFERRED. This should have - had little effect as deferred is the only - supported type. (Ross Johnson). - -Some compatibility improvements added, eg. -- pthread_setcancelstate accepts NULL pointer - for the previous value argument. Ditto for - pthread_setcanceltype. This is compatible - with Solaris but should not affect - standard applications (Erik Hensema) - -Some new tests have been added. - - -SNAPSHOT 1999-10-17 -------------------- - -Bug fix - Cancelation of threads waiting on condition variables -now works properly (Lorin Hochstein and Peter Slacik) - - -SNAPSHOT 1999-08-12 -------------------- - -Fixed exception stack cleanup if calling pthread_exit() -- (Lorin Hochstein and John Bossom). - -Fixed bugs in condition variables - (Peter Slacik): - - additional contention checks - - properly adjust number of waiting threads after timed - condvar timeout. - - -SNAPSHOT 1999-05-30 -------------------- - -Some minor bugs have been fixed. See the ChangeLog file for details. - -Some more POSIX 1b functions are now included but ony return an -error (ENOSYS) if called. They are: - - sem_open - sem_close - sem_unlink - sem_getvalue - - -SNAPSHOT 1999-04-07 -------------------- - -Some POSIX 1b functions which were internally supported are now -available as exported functions: - - sem_init - sem_destroy - sem_wait - sem_trywait - sem_post - sched_yield - sched_get_priority_min - sched_get_priority_max - -Some minor bugs have been fixed. See the ChangeLog file for details. - - -SNAPSHOT 1999-03-16 -------------------- - -Initial release. - diff --git a/platform/win32/msvc/external/pthreads.2/Nmakefile b/platform/win32/msvc/external/pthreads.2/Nmakefile deleted file mode 100644 index 180bb77d190..00000000000 --- a/platform/win32/msvc/external/pthreads.2/Nmakefile +++ /dev/null @@ -1,24 +0,0 @@ -/* - * nmake file for uwin pthread library - */ - -VERSION = - -CCFLAGS = -V -g $(CC.DLL) -HAVE_PTW32_CONFIG_H == 1 -_MT == 1 -_timeb == timeb -_ftime == ftime -_errno == _ast_errno - -$(INCLUDEDIR) :INSTALLDIR: pthread.h sched.h - -pthread $(VERSION) :LIBRARY: attr.c barrier.c cancel.c cleanup.c condvar.c \ - create.c dll.c exit.c fork.c global.c misc.c mutex.c private.c \ - rwlock.c sched.c semaphore.c spin.c sync.c tsd.c nonportable.c - -:: ANNOUNCE CONTRIBUTORS COPYING.LIB ChangeLog FAQ GNUmakefile MAINTAINERS \ - Makefile Makefile.in Makefile.vc NEWS PROGRESS README README.WinCE \ - TODO WinCE-PORT install-sh errno.c tests tests.mk acconfig.h \ - config.guess config.h.in config.sub configure configure.in signal.c \ - README.CV README.NONPORTABLE pthread.dsp pthread.dsw - diff --git a/platform/win32/msvc/external/pthreads.2/Nmakefile.tests b/platform/win32/msvc/external/pthreads.2/Nmakefile.tests deleted file mode 100644 index 4647273b803..00000000000 --- a/platform/win32/msvc/external/pthreads.2/Nmakefile.tests +++ /dev/null @@ -1,260 +0,0 @@ -/* for running tests */ -CCFLAGS = -g -_MT == 1 -_timeb == timeb -_ftime == ftime - -.SOURCE: tests -/* -:PACKAGE: pthread -*/ - -set keepgoing - -":test:" : .MAKE .OPERATOR - local I - $(<:D:B:S=.pass) : .IMPLICIT $(>:D:B:S=.pass) - for I $(<) $(>) - $(I:D:B:S=.pass) : .VIRTUAL .FORCE $(I) - $(>) - end -sizes:: sizes.c -loadfree:: loadfree.c -mutex1:: mutex1.c -mutex1e:: mutex1e.c -mutex1n:: mutex1n.c -mutex1r:: mutex1r.c -mutex2:: mutex2.c -mutex2r:: mutex2r.c -mutex2e:: mutex2e.c -exit1:: exit1.c -condvar1:: condvar1.c -condvar1_1:: condvar1_1.c -condvar1_2:: condvar1_2.c -self1:: self1.c -condvar2:: condvar2.c -condvar2_1:: condvar2_1.c -condvar3_1:: condvar3_1.c -condvar3_2:: condvar3_2.c -condvar3_3:: condvar3_3.c -create1.:: create1.c -create2.:: create2.c -cancel1:: cancel1.c -cancel2:: cancel2.c -mutex3:: mutex3.c -mutex3r:: mutex3r.c -mutex3e:: mutex3e.c -mutex4:: mutex4.c -mutex5:: mutex5.c -mutex6:: mutex6.c -mutex6e:: mutex6e.c -mutex6n:: mutex6n.c -mutex6r:: mutex6r.c -mutex7:: mutex7.c -mutex6s:: mutex6s.c -mutex6rs:: mutex6rs.c -mutex6es:: mutex6es.c -mutex7e:: mutex7e.c -mutex7n:: mutex7n.c -mutex7r:: mutex7r.c -mutex8:: mutex8.c -mutex8e:: mutex8e.c -mutex8n:: mutex8n.c -mutex8r:: mutex8r.c -equal1:: equal1.c -exit2:: exit2.c -exit3:: exit3.c -exit4:: exit4.c -exit5:: exit5.c -join0:: join0.c -join1:: join1.c -join2:: join2.c -join3:: join3.c -kill1:: kill1.c -count1:: count1.c -once1:: once1.c -tsd1:: tsd1.c -self2:: self2.c -eyal1:: eyal1.c -condvar3:: condvar3.c -condvar4:: condvar4.c -condvar5:: condvar5.c -condvar6:: condvar6.c -condvar7:: condvar7.c -condvar8:: condvar8.c -condvar9:: condvar9.c -errno1:: errno1.c -reuse1.:: reuse1.c -reuse2.:: reuse2.c -rwlock1:: rwlock1.c -rwlock2:: rwlock2.c -rwlock3:: rwlock3.c -rwlock4:: rwlock4.c -rwlock5:: rwlock5.c -rwlock6:: rwlock6.c -rwlock7:: rwlock7.c -rwlock8:: rwlock8.c -rwlock2_t:: rwlock2_t.c -rwlock3_t:: rwlock3_t.c -rwlock4_t:: rwlock4_t.c -rwlock5_t:: rwlock5_t.c -rwlock6_t:: rwlock6_t.c -rwlock6_t2:: rwlock6_t2.c -semaphore1:: semaphore1.c -semaphore2:: semaphore2.c -semaphore3:: semaphore3.c -context1:: context1.c -cancel3:: cancel3.c -cancel4:: cancel4.c -cancel5:: cancel5.c -cancel6a:: cancel6a.c -cancel6d:: cancel6d.c -cancel7:: cancel7.c -cleanup0:: cleanup0.c -cleanup1:: cleanup1.c -cleanup2:: cleanup2.c -cleanup3:: cleanup3.c -priority1:: priority1.c -priority2:: priority2.c -inherit1:: inherit1.c -spin1:: spin1.c -spin2:: spin2.c -spin3:: spin3.c -spin4:: spin4.c -barrier1:: barrier1.c -barrier2:: barrier2.c -barrier3:: barrier3.c -barrier4:: barrier4.c -barrier5:: barrier5.c -exception1:: exception1.c -exception2:: exception2.c -exception3:: exception3.c -benchtest1:: benchtest1.c -benchtest2:: benchtest2.c -benchtest3:: benchtest3.c -benchtest4:: benchtest4.c -benchtest5:: benchtest5.c -valid1:: valid1.c -valid2:: valid2.c -cancel9:: cancel9.c - -sizes: :test: sizes -loadfree: :test: -mutex5 :test: loadfree -mutex1 :test: loadfree -mutex1n :test: loadfree -mutex1r :test: loadfree -mutex1e :test: loadfree -semaphore1 :test: loadfree -semaphore2 :test: loadfree -semaphore3 :test: loadfree -mutex2 :test: loadfree -mutex2r :test: loadfree -mutex2e :test: loadfree -exit1 :test: loadfree -condvar1 :test: loadfree -kill1 :test: loadfree -condvar1_1 :test: condvar1 -condvar1_2 :test: join2 -self1 :test: loadfree -condvar2 :test: condvar1 -condvar2_1 :test: condvar2 -create1 :test: mutex2 -create2 :test: create1 -reuse1 :test: create2 -reuse2 :test: reuse1 -cancel1 :test: create1 -cancel2 :test: cancel1 -mutex3 :test: create1 -mutex3r :test: create1 -mutex3e :test: create1 -mutex4 :test: mutex3 -mutex6 :test: mutex4 -mutex6n :test: mutex4 -mutex6e :test: mutex4 -mutex6r :test: mutex4 -mutex6s :test: mutex6 -mutex6rs :test: mutex6r -mutex6es :test: mutex6e -mutex7 :test: mutex6 -mutex7n :test: mutex6n -mutex7e :test: mutex6e -mutex7r :test: mutex6r -mutex8 :test: mutex7 -mutex8n :test: mutex7n -mutex8e :test: mutex7e -mutex8r :test: mutex7r -equal1 :test: create1 -exit2 :test: create1 -exit3 :test: create1 -exit4 :test: kill1 -exit5 :test: exit4 -join0 :test: create1 -join1 :test: create1 -join2 :test: create1 -join3 :test: join2 -count1 :test: join1 -once1 :test: create1 -tsd1 :test: join1 -self2 :test: create1 -eyal1 :test: tsd1 -condvar3 :test: create1 -condvar3_1 :test: condvar3 -condvar3_2 :test: condvar3_1 -condvar3_3 :test: condvar3_2 -condvar4 :test: create1 -condvar5 :test: condvar4 -condvar6 :test: condvar5 -condvar7 :test: condvar6 cleanup1 -condvar8 :test: condvar7 -condvar9 :test: condvar8 -errno1 :test: mutex3 -rwlock1 :test: condvar6 -rwlock2 :test: rwlock1 -rwlock3 :test: rwlock2 -rwlock4 :test: rwlock3 -rwlock5 :test: rwlock4 -rwlock6 :test: rwlock5 -rwlock7 :test: rwlock6 -rwlock8 :test: rwlock7 -rwlock2_t :test: rwlock2 -rwlock3_t :test: rwlock2_t -rwlock4_t :test: rwlock3_t -rwlock5_t :test: rwlock4_t -rwlock6_t :test: rwlock5_t -rwlock6_t2 :test: rwlock6_t -context1 :test: cancel2 -cancel3 :test: context1 -cancel4 :test: cancel3 -cancel5 :test: cancel3 -cancel6a :test: cancel3 -cancel6d :test: cancel3 -cancel7 :test: kill1 -cleanup0 :test: cancel5 -cleanup1 :test: cleanup0 -cleanup2 :test: cleanup1 -cleanup3 :test: cleanup2 -priority1 :test: join1 -priority2 :test: priority1 -inherit1 :test: join1 -spin1 :test: -spin2 :test: spin1.c -spin3 :test: spin2.c -spin4 :test: spin3.c -barrier1 :test: -barrier2 :test: barrier1.c -barrier3 :test: barrier2.c -barrier4 :test: barrier3.c -barrier5 :test: barrier4.c -benchtest1 :test: mutex3 -benchtest2 :test: benchtest1 -benchtest3 :test: benchtest2 -benchtest4 :test: benchtest3 -benchtest5 :test: benchtest4 -exception1 :test: cancel4 -exception2 :test: exception1 -exception3 :test: exception2 -exit4 :test: exit3 -valid1 :test: join1 -valid2 :test: valid1 -cancel9 :test: cancel8 diff --git a/platform/win32/msvc/external/pthreads.2/PROGRESS b/platform/win32/msvc/external/pthreads.2/PROGRESS deleted file mode 100644 index 3e90bec7ec4..00000000000 --- a/platform/win32/msvc/external/pthreads.2/PROGRESS +++ /dev/null @@ -1,4 +0,0 @@ -Please see the ANNOUNCE file "Level of Standards Conformance" -or the web page: - -http://sources.redhat.com/pthreads-win32/conformance.html diff --git a/platform/win32/msvc/external/pthreads.2/README b/platform/win32/msvc/external/pthreads.2/README deleted file mode 100644 index 3436789be12..00000000000 --- a/platform/win32/msvc/external/pthreads.2/README +++ /dev/null @@ -1,601 +0,0 @@ -PTHREADS-WIN32 -============== - -Pthreads-win32 is free software, distributed under the GNU Lesser -General Public License (LGPL). See the file 'COPYING.LIB' for terms -and conditions. Also see the file 'COPYING' for information -specific to pthreads-win32, copyrights and the LGPL. - - -What is it? ------------ - -Pthreads-win32 is an Open Source Software implementation of the -Threads component of the POSIX 1003.1c 1995 Standard (or later) -for Microsoft's Win32 environment. Some functions from POSIX -1003.1b are also supported including semaphores. Other related -functions include the set of read-write lock functions. The -library also supports some of the functionality of the Open -Group's Single Unix specification, version 2, namely mutex types, -plus some common and pthreads-win32 specific non-portable -routines (see README.NONPORTABLE). - -See the file "ANNOUNCE" for more information including standards -conformance details and the list of supported and unsupported -routines. - - -Prerequisites -------------- -MSVC or GNU C (MinGW32 MSys development kit) - To build from source. - -QueueUserAPCEx by Panagiotis E. Hadjidoukas - To support any thread cancelation in C++ library builds or - to support cancelation of blocked threads in any build. - This library is not required otherwise. - - For true async cancelation of threads (including blocked threads). - This is a DLL and Windows driver that provides pre-emptive APC - by forcing threads into an alertable state when the APC is queued. - Both the DLL and driver are provided with the pthreads-win32.exe - self-unpacking ZIP, and on the pthreads-win32 FTP site (in source - and pre-built forms). Currently this is a separate LGPL package to - pthreads-win32. See the README in the QueueUserAPCEx folder for - installation instructions. - - Pthreads-win32 will automatically detect if the QueueUserAPCEx DLL - QuserEx.DLL is available and whether the driver AlertDrv.sys is - loaded. If it is not available, pthreads-win32 will simulate async - cancelation, which means that it can async cancel only threads that - are runnable. The simulated async cancellation cannot cancel blocked - threads. - - [FOR SECURITY] To be found Quserex.dll MUST be installed in the - Windows System Folder. This is not an unreasonable constraint given a - driver must also be installed and loaded at system startup. - - -Library naming --------------- - -Because the library is being built using various exception -handling schemes and compilers - and because the library -may not work reliably if these are mixed in an application, -each different version of the library has it's own name. - -Note 1: the incompatibility is really between EH implementations -of the different compilers. It should be possible to use the -standard C version from either compiler with C++ applications -built with a different compiler. If you use an EH version of -the library, then you must use the same compiler for the -application. This is another complication and dependency that -can be avoided by using only the standard C library version. - -Note 2: if you use a standard C pthread*.dll with a C++ -application, then any functions that you define that are -intended to be called via pthread_cleanup_push() must be -__cdecl. - -Note 3: the intention was to also name either the VC or GC -version (it should be arbitrary) as pthread.dll, including -pthread.lib and libpthread.a as appropriate. This is no longer -likely to happen. - -Note 4: the compatibility number was added so that applications -can differentiate between binary incompatible versions of the -libs and dlls. - -In general: - pthread[VG]{SE,CE,C}[c].dll - pthread[VG]{SE,CE,C}[c].lib - -where: - [VG] indicates the compiler - V - MS VC, or - G - GNU C - - {SE,CE,C} indicates the exception handling scheme - SE - Structured EH, or - CE - C++ EH, or - C - no exceptions - uses setjmp/longjmp - - c - DLL compatibility number indicating ABI and API - compatibility with applications built against - a snapshot with the same compatibility number. - See 'Version numbering' below. - -The name may also be suffixed by a 'd' to indicate a debugging version -of the library. E.g. pthreadVC2d.lib. Debugging versions contain -additional information for debugging (symbols etc) and are often not -optimised in any way (compiled with optimisation turned off). - -Examples: - pthreadVSE.dll (MSVC/SEH) - pthreadGCE.dll (GNUC/C++ EH) - pthreadGC.dll (GNUC/not dependent on exceptions) - pthreadVC1.dll (MSVC/not dependent on exceptions - not binary - compatible with pthreadVC.dll) - pthreadVC2.dll (MSVC/not dependent on exceptions - not binary - compatible with pthreadVC1.dll or pthreadVC.dll) - -The GNU library archive file names have correspondingly changed to: - - libpthreadGCEc.a - libpthreadGCc.a - - -Versioning numbering --------------------- - -Version numbering is separate from the snapshot dating system, and -is the canonical version identification system embedded within the -DLL using the Microsoft version resource system. The versioning -system chosen follows the GNU Libtool system. See -http://www.gnu.org/software/libtool/manual.html section 6.2. - -See the resource file 'version.rc'. - -Microsoft version numbers use 4 integers: - - 0.0.0.0 - -Pthreads-win32 uses the first 3 following the Libtool convention. -The fourth is commonly used for the build number, but will be reserved -for future use. - - current.revision.age.0 - -The numbers are changed as follows: - -1. If the library source code has changed at all since the last update, - then increment revision (`c:r:a' becomes `c:r+1:a'). -2. If any interfaces have been added, removed, or changed since the last - update, increment current, and set revision to 0. -3. If any interfaces have been added since the last public release, then - increment age. -4. If any interfaces have been removed or changed since the last public - release, then set age to 0. - - -DLL compatibility numbering is an attempt to ensure that applications -always load a compatible pthreads-win32 DLL by using a DLL naming system -that is consistent with the version numbering system. It also allows -older and newer DLLs to coexist in the same filesystem so that older -applications can continue to be used. For pre .NET Windows systems, -this inevitably requires incompatible versions of the same DLLs to have -different names. - -Pthreads-win32 has adopted the Cygwin convention of appending a single -integer number to the DLL name. The number used is based on the library -version number and is computed as 'current' - 'age'. - -(See http://home.att.net/~perlspinr/libversioning.html for a nicely -detailed explanation.) - -Using this method, DLL name/s will only change when the DLL's -backwards compatibility changes. Note that the addition of new -'interfaces' will not of itself change the DLL's compatibility for older -applications. - - -Which of the several dll versions to use? ------------------------------------------ -or, ---- -What are all these pthread*.dll and pthread*.lib files? -------------------------------------------------------- - -Simple, use either pthreadGCv.* if you use GCC, or pthreadVCv.* if you -use MSVC - where 'v' is the DLL versioning (compatibility) number. - -Otherwise, you need to choose carefully and know WHY. - -The most important choice you need to make is whether to use a -version that uses exceptions internally, or not. There are versions -of the library that use exceptions as part of the thread -cancelation and exit implementation. The default version uses -setjmp/longjmp. - -There is some contension amongst POSIX threads experts as -to how POSIX threads cancelation and exit should work -with languages that use exceptions, e.g. C++ and even C -(Microsoft's Structured Exceptions). - -The issue is: should cancelation of a thread in, say, -a C++ application cause object destructors and C++ exception -handlers to be invoked as the stack unwinds during thread -exit, or not? - -There seems to be more opinion in favour of using the -standard C version of the library (no EH) with C++ applications -for the reason that this appears to be the assumption commercial -pthreads implementations make. Therefore, if you use an EH version -of pthreads-win32 then you may be under the illusion that -your application will be portable, when in fact it is likely to -behave differently when linked with other pthreads libraries. - -Now you may be asking: then why have you kept the EH versions of -the library? - -There are a couple of reasons: -- there is division amongst the experts and so the code may - be needed in the future. Yes, it's in the repository and we - can get it out anytime in the future, but it would be difficult - to find. -- pthreads-win32 is one of the few implementations, and possibly - the only freely available one, that has EH versions. It may be - useful to people who want to play with or study application - behaviour under these conditions. - -Notes: - -[If you use either pthreadVCE or pthreadGCE] - -1. [See also the discussion in the FAQ file - Q2, Q4, and Q5] - -If your application contains catch(...) blocks in your POSIX -threads then you will need to replace the "catch(...)" with the macro -"PtW32Catch", eg. - - #ifdef PtW32Catch - PtW32Catch { - ... - } - #else - catch(...) { - ... - } - #endif - -Otherwise neither pthreads cancelation nor pthread_exit() will work -reliably when using versions of the library that use C++ exceptions -for cancelation and thread exit. - -This is due to what is believed to be a C++ compliance error in VC++ -whereby you may not have multiple handlers for the same exception in -the same try/catch block. GNU G++ doesn't have this restriction. - - -Other name changes ------------------- - -All snapshots prior to and including snapshot 2000-08-13 -used "_pthread_" as the prefix to library internal -functions, and "_PTHREAD_" to many library internal -macros. These have now been changed to "ptw32_" and "PTW32_" -respectively so as to not conflict with the ANSI standard's -reservation of identifiers beginning with "_" and "__" for -use by compiler implementations only. - -If you have written any applications and you are linking -statically with the pthreads-win32 library then you may have -included a call to _pthread_processInitialize. You will -now have to change that to ptw32_processInitialize. - - -Cleanup code default style --------------------------- - -Previously, if not defined, the cleanup style was determined automatically -from the compiler used, and one of the following was defined accordingly: - - __CLEANUP_SEH MSVC only - __CLEANUP_CXX C++, including MSVC++, GNU G++ - __CLEANUP_C C, including GNU GCC, not MSVC - -These defines determine the style of cleanup (see pthread.h) and, -most importantly, the way that cancelation and thread exit (via -pthread_exit) is performed (see the routine ptw32_throw()). - -In short, the exceptions versions of the library throw an exception -when a thread is canceled, or exits via pthread_exit(). This exception is -caught by a handler in the thread startup routine, so that the -the correct stack unwinding occurs regardless of where the thread -is when it's canceled or exits via pthread_exit(). - -In this snapshot, unless the build explicitly defines (e.g. via a -compiler option) __CLEANUP_SEH, __CLEANUP_CXX, or __CLEANUP_C, then -the build NOW always defaults to __CLEANUP_C style cleanup. This style -uses setjmp/longjmp in the cancelation and pthread_exit implementations, -and therefore won't do stack unwinding even when linked to applications -that have it (e.g. C++ apps). This is for consistency with most/all -commercial Unix POSIX threads implementations. - -Although it was not clearly documented before, it is still necessary to -build your application using the same __CLEANUP_* define as was -used for the version of the library that you link with, so that the -correct parts of pthread.h are included. That is, the possible -defines require the following library versions: - - __CLEANUP_SEH pthreadVSE.dll - __CLEANUP_CXX pthreadVCE.dll or pthreadGCE.dll - __CLEANUP_C pthreadVC.dll or pthreadGC.dll - -It is recommended that you let pthread.h use it's default __CLEANUP_C -for both library and application builds. That is, don't define any of -the above, and then link with pthreadVC.lib (MSVC or MSVC++) and -libpthreadGC.a (MinGW GCC or G++). The reason is explained below, but -another reason is that the prebuilt pthreadVCE.dll is currently broken. -Versions built with MSVC++ later than version 6 may not be broken, but I -can't verify this yet. - -WHY ARE WE MAKING THE DEFAULT STYLE LESS EXCEPTION-FRIENDLY? -Because no commercial Unix POSIX threads implementation allows you to -choose to have stack unwinding. Therefore, providing it in pthread-win32 -as a default is dangerous. We still provide the choice but unless -you consciously choose to do otherwise, your pthreads applications will -now run or crash in similar ways irrespective of the pthreads platform -you use. Or at least this is the hope. - - -Building under VC++ using C++ EH, Structured EH, or just C ----------------------------------------------------------- - -From the source directory run nmake without any arguments to list -help information. E.g. - -$ nmake - -Microsoft (R) Program Maintenance Utility Version 6.00.8168.0 -Copyright (C) Microsoft Corp 1988-1998. All rights reserved. - -Run one of the following command lines: -nmake clean VCE (to build the MSVC dll with C++ exception handling) -nmake clean VSE (to build the MSVC dll with structured exception handling) -nmake clean VC (to build the MSVC dll with C cleanup code) -nmake clean VCE-inlined (to build the MSVC inlined dll with C++ exception handling) -nmake clean VSE-inlined (to build the MSVC inlined dll with structured exception handling) -nmake clean VC-inlined (to build the MSVC inlined dll with C cleanup code) -nmake clean VC-static (to build the MSVC static lib with C cleanup code) -nmake clean VCE-debug (to build the debug MSVC dll with C++ exception handling) -nmake clean VSE-debug (to build the debug MSVC dll with structured exception handling) -nmake clean VC-debug (to build the debug MSVC dll with C cleanup code) -nmake clean VCE-inlined-debug (to build the debug MSVC inlined dll with C++ exception handling) -nmake clean VSE-inlined-debug (to build the debug MSVC inlined dll with structured exception handling) -nmake clean VC-inlined-debug (to build the debug MSVC inlined dll with C cleanup code) -nmake clean VC-static-debug (to build the debug MSVC static lib with C cleanup code) - - -The pre-built dlls are normally built using the *-inlined targets. - -You can run the testsuite by changing to the "tests" directory and -running nmake. E.g.: - -$ cd tests -$ nmake - -Microsoft (R) Program Maintenance Utility Version 6.00.8168.0 -Copyright (C) Microsoft Corp 1988-1998. All rights reserved. - -Run one of the following command lines: -nmake clean VC (to test using VC dll with VC (no EH) applications) -nmake clean VCX (to test using VC dll with VC++ (EH) applications) -nmake clean VCE (to test using the VCE dll with VC++ EH applications) -nmake clean VSE (to test using VSE dll with VC (SEH) applications) -nmake clean VC-bench (to benchtest using VC dll with C bench app) -nmake clean VCX-bench (to benchtest using VC dll with C++ bench app) -nmake clean VCE-bench (to benchtest using VCE dll with C++ bench app) -nmake clean VSE-bench (to benchtest using VSE dll with SEH bench app) -nmake clean VC-static (to test using VC static lib with VC (no EH) applications) - - -Building under Mingw32 ----------------------- - -The dll can be built easily with recent versions of Mingw32. -(The distributed versions are built using Mingw32 and MsysDTK -from www.mingw32.org.) - -From the source directory, run make for help information. E.g.: - -$ make -Run one of the following command lines: -make clean GC (to build the GNU C dll with C cleanup code) -make clean GCE (to build the GNU C dll with C++ exception handling) -make clean GC-inlined (to build the GNU C inlined dll with C cleanup code) -make clean GCE-inlined (to build the GNU C inlined dll with C++ exception handling) -make clean GC-static (to build the GNU C inlined static lib with C cleanup code) -make clean GC-debug (to build the GNU C debug dll with C cleanup code) -make clean GCE-debug (to build the GNU C debug dll with C++ exception handling) -make clean GC-inlined-debug (to build the GNU C inlined debug dll with C cleanup code) -make clean GCE-inlined-debug (to build the GNU C inlined debug dll with C++ exception handling) -make clean GC-static-debug (to build the GNU C inlined static debug lib with C cleanup code) - - -The pre-built dlls are normally built using the *-inlined targets. - -You can run the testsuite by changing to the "tests" directory and -running make for help information. E.g.: - -$ cd tests -$ make -Run one of the following command lines: -make clean GC (to test using GC dll with C (no EH) applications) -make clean GCX (to test using GC dll with C++ (EH) applications) -make clean GCE (to test using GCE dll with C++ (EH) applications) -make clean GC-bench (to benchtest using GNU C dll with C cleanup code) -make clean GCE-bench (to benchtest using GNU C dll with C++ exception handling) -make clean GC-static (to test using GC static lib with C (no EH) applications) - - -Building under Linux using the Mingw32 cross development tools --------------------------------------------------------------- - -You can build the library without leaving Linux by using the Mingw32 cross -development toolchain. See http://www.libsdl.org/extras/win32/cross/ for -tools and info. The GNUmakefile contains some support for this, for example: - -make CROSS=i386-mingw32msvc- clean GC-inlined - -will build pthreadGCn.dll and libpthreadGCn.a (n=version#), provided your -cross-tools/bin directory is in your PATH (or use the cross-make.sh script -at the URL above). - - -Building the library as a statically linkable library ------------------------------------------------------ - -General: PTW32_STATIC_LIB must be defined for both the library build and the -application build. The makefiles supplied and used by the following 'make' -command lines will define this for you. - -MSVC (creates pthreadVCn.lib as a static link lib): - -nmake clean VC-static - - -MinGW32 (creates libpthreadGCn.a as a static link lib): - -make clean GC-static - - -Define PTW32_STATIC_LIB when building your application. Also, your -application must call a two non-portable routines to initialise the -some state on startup and cleanup before exit. One other routine needs -to be called to cleanup after any Win32 threads have called POSIX API -routines. See README.NONPORTABLE or the html reference manual pages for -details on these routines: - -BOOL pthread_win32_process_attach_np (void); -BOOL pthread_win32_process_detach_np (void); -BOOL pthread_win32_thread_attach_np (void); // Currently a no-op -BOOL pthread_win32_thread_detach_np (void); - - -The tests makefiles have the same targets but only check that the -static library is statically linkable. They don't run the full -testsuite. To run the full testsuite, build the dlls and run the -dll test targets. - - -Building the library under Cygwin ---------------------------------- - -Cygwin is implementing it's own POSIX threads routines and these -will be the ones to use if you develop using Cygwin. - - -Ready to run binaries ---------------------- - -For convenience, the following ready-to-run files can be downloaded -from the FTP site (see under "Availability" below): - - pthread.h - semaphore.h - sched.h - pthreadVC.dll - built with MSVC compiler using C setjmp/longjmp - pthreadVC.lib - pthreadVCE.dll - built with MSVC++ compiler using C++ EH - pthreadVCE.lib - pthreadVSE.dll - built with MSVC compiler using SEH - pthreadVSE.lib - pthreadGC.dll - built with Mingw32 GCC - libpthreadGC.a - derived from pthreadGC.dll - pthreadGCE.dll - built with Mingw32 G++ - libpthreadGCE.a - derived from pthreadGCE.dll - -As of August 2003 pthreads-win32 pthreadG* versions are built and tested -using the MinGW + MsysDTK environment current as of that date or later. -The following file MAY be needed for older MinGW environments. - - gcc.dll - needed to build and run applications that use - pthreadGCE.dll. - - -Building applications with GNU compilers ----------------------------------------- - -If you're using pthreadGC.dll: - -With the three header files, pthreadGC.dll and libpthreadGC.a in the -same directory as your application myapp.c, you could compile, link -and run myapp.c under Mingw32 as follows: - - gcc -o myapp.exe myapp.c -I. -L. -lpthreadGC - myapp - -Or put pthreadGC.dll in an appropriate directory in your PATH, -put libpthreadGC.a in your system lib directory, and -put the three header files in your system include directory, -then use: - - gcc -o myapp.exe myapp.c -lpthreadGC - myapp - - -If you're using pthreadGCE.dll: - -With the three header files, pthreadGCE.dll, gcc.dll and libpthreadGCE.a -in the same directory as your application myapp.c, you could compile, -link and run myapp.c under Mingw32 as follows: - - gcc -x c++ -o myapp.exe myapp.c -I. -L. -lpthreadGCE - myapp - -Or put pthreadGCE.dll and gcc.dll in an appropriate directory in -your PATH, put libpthreadGCE.a in your system lib directory, and -put the three header files in your system include directory, -then use: - - gcc -x c++ -o myapp.exe myapp.c -lpthreadGCE - myapp - - -Availability ------------- - -The complete source code in either unbundled, self-extracting -Zip file, or tar/gzipped format can be found at: - - ftp://sources.redhat.com/pub/pthreads-win32 - -The pre-built DLL, export libraries and matching pthread.h can -be found at: - - ftp://sources.redhat.com/pub/pthreads-win32/dll-latest - -Home page: - - http://sources.redhat.com/pthreads-win32/ - - -Mailing list ------------- - -There is a mailing list for discussing pthreads on Win32. -To join, send email to: - - pthreads-win32-subscribe@sources.redhat.com - -Unsubscribe by sending mail to: - - pthreads-win32-unsubscribe@sources.redhat.com - - -Acknowledgements ----------------- - -See the ANNOUNCE file for acknowledgements. -See the 'CONTRIBUTORS' file for the list of contributors. - -As much as possible, the ChangeLog file attributes -contributions and patches that have been incorporated -in the library to the individuals responsible. - -Finally, thanks to all those who work on and contribute to the -POSIX and Single Unix Specification standards. The maturity of an -industry can be measured by it's open standards. - ----- -Ross Johnson -<rpj@callisto.canberra.edu.au> - - - - - - - - diff --git a/platform/win32/msvc/external/pthreads.2/README.Borland b/platform/win32/msvc/external/pthreads.2/README.Borland deleted file mode 100644 index 5f836cd17ad..00000000000 --- a/platform/win32/msvc/external/pthreads.2/README.Borland +++ /dev/null @@ -1,57 +0,0 @@ -In ptw32_InterlockedCompareExchange.c, I've added a section for -Borland's compiler; it's identical to that for the MS compiler except -that it uses /* ... */ comments instead of ; comments. - -[RPJ: need to define HAVE_TASM32 in config.h to use the above.] - - -The other file is a makefile suitable for use with Borland's compiler -(run "make -fBmakefile" in the directory). It builds a single version -of the library, pthreadBC.dll and the corresponding pthreadBC.lib -import library, which is comparable to the pthreadVC version; I can't -personally see any demand for the versions that include structured or -C++ exception cancellation handling so I haven't attempted to build -those versions of the library. (I imagine a static version might be -of use to some, but we can't legally use that on my commercial -projects so I can't try that out, unfortunately.) - -[RPJ: Added tests\Bmakefile as well.] - -Borland C++ doesn't define the ENOSYS constant used by pthreads-win32; -rather than make more extensive patches to the pthreads-win32 source I -have a mostly-arbitrary constant for it in the makefile. However this -doesn't make it visible to the application using the library, so if -anyone actually wants to use this constant in their apps (why?) -someone might like to make a seperate NEED_BCC_something define to add -this stuff. - -The makefile also #defines EDEADLK as EDEADLOCK, _timeb as timeb, and -_ftime as ftime, to deal with the minor differences between the two -RTLs' naming conventions, and sets the compiler flags as required to -get a normal compile of the library. - -[RPJ: Moved errno values and _timeb etc to pthread.h, so apps will also -use them.] - -(While I'm on the subject, the reason Borland users should recompile -the library, rather than using the impdef/implib technique suggested -previously on the mailing list, is that a) the errno constants are -different, so the results returned by the pthread_* functions can be -meaningless, and b) the errno variable/pseudo-variable itself is -different in the MS & BCC runtimes, so you can't access the -pthreadVC's errno from a Borland C++-compiled host application -correctly - I imagine there are other potential problems from the RTL -mismatch too.) - -[RPJ: Make sure you use the same RTL in both dll and application builds. -The dll and tests Bmakefiles use cw32mti.lib. Having some trouble with -memory read exceptions running the test suite using BCC55.] - -Best regards, -Will - --- -Will Bryant -Systems Architect, eCOSM Limited -Cell +64 21 655 443, office +64 3 365 4176 -http://www.ecosm.com/ diff --git a/platform/win32/msvc/external/pthreads.2/README.CV b/platform/win32/msvc/external/pthreads.2/README.CV deleted file mode 100644 index 522fa602b87..00000000000 --- a/platform/win32/msvc/external/pthreads.2/README.CV +++ /dev/null @@ -1,3036 +0,0 @@ -README.CV -- Condition Variables --------------------------------- - -The original implementation of condition variables in -pthreads-win32 was based on a discussion paper: - -"Strategies for Implementing POSIX Condition Variables -on Win32": http://www.cs.wustl.edu/~schmidt/win32-cv-1.html - -The changes suggested below were made on Feb 6 2001. This -file is included in the package for the benefit of anyone -interested in understanding the pthreads-win32 implementation -of condition variables and the (sometimes subtle) issues that -it attempts to resolve. - -Thanks go to the individuals whose names appear throughout -the following text. - -Ross Johnson - --------------------------------------------------------------------- - -fyi.. (more detailed problem description/demos + possible fix/patch) - -regards, -alexander. - - -Alexander Terekhov -31.01.2001 17:43 - -To: ace-bugs@cs.wustl.edu -cc: -From: Alexander Terekhov/Germany/IBM@IBMDE -Subject: Implementation of POSIX CVs: spur.wakeups/lost - signals/deadlocks/unfairness - - - - ACE VERSION: - - 5.1.12 (pthread-win32 snapshot 2000-12-29) - - HOST MACHINE and OPERATING SYSTEM: - - IBM IntelliStation Z Pro, 2 x XEON 1GHz, Win2K - - TARGET MACHINE and OPERATING SYSTEM, if different from HOST: - COMPILER NAME AND VERSION (AND PATCHLEVEL): - - Microsoft Visual C++ 6.0 - - AREA/CLASS/EXAMPLE AFFECTED: - - Implementation of POSIX condition variables - OS.cpp/.h - - DOES THE PROBLEM AFFECT: - - EXECUTION? YES! - - SYNOPSIS: - - a) spurious wakeups (minor problem) - b) lost signals - c) broadcast deadlock - d) unfairness (minor problem) - - DESCRIPTION: - - Please see attached copy of discussion thread - from comp.programming.threads for more details on - some reported problems. (i've also posted a "fyi" - message to ace-users a week or two ago but - unfortunately did not get any response so far). - - It seems that current implementation suffers from - two essential problems: - - 1) cond.waiters_count does not accurately reflect - number of waiters blocked on semaphore - w/o - proper synchronisation that could result (in the - time window when counter is not accurate) - in spurious wakeups organised by subsequent - _signals and _broadcasts. - - 2) Always having (with no e.g. copy_and_clear/..) - the same queue in use (semaphore+counter) - neither signal nor broadcast provide 'atomic' - behaviour with respect to other threads/subsequent - calls to signal/broadcast/wait. - - Each problem and combination of both could produce - various nasty things: - - a) spurious wakeups (minor problem) - - it is possible that waiter(s) which was already - unblocked even so is still counted as blocked - waiter. signal and broadcast will release - semaphore which will produce a spurious wakeup - for a 'real' waiter coming later. - - b) lost signals - - signalling thread ends up consuming its own - signal. please see demo/discussion below. - - c) broadcast deadlock - - last_waiter processing code does not correctly - handle the case with multiple threads - waiting for the end of broadcast. - please see demo/discussion below. - - d) unfairness (minor problem) - - without SignalObjectAndWait some waiter(s) - may end up consuming broadcasted signals - multiple times (spurious wakeups) because waiter - thread(s) can be preempted before they call - semaphore wait (but after count++ and mtx.unlock). - - REPEAT BY: - - See below... run problem demos programs (tennis.cpp and - tennisb.cpp) number of times concurrently (on multiprocessor) - and in multiple sessions or just add a couple of "Sleep"s - as described in the attached copy of discussion thread - from comp.programming.threads - - SAMPLE FIX/WORKAROUND: - - See attached patch to pthread-win32.. well, I can not - claim that it is completely bug free but at least my - test and tests provided by pthreads-win32 seem to work. - Perhaps that will help. - - regards, - alexander. - - ->> Forum: comp.programming.threads ->> Thread: pthread_cond_* implementation questions -. -. -. -David Schwartz <davids@webmaster.com> wrote: - -> terekhov@my-deja.com wrote: -> ->> BTW, could you please also share your view on other perceived ->> "problems" such as nested broadcast deadlock, spurious wakeups ->> and (the latest one) lost signals?? -> ->I'm not sure what you mean. The standard allows an implementation ->to do almost whatever it likes. In fact, you could implement ->pthread_cond_wait by releasing the mutex, sleeping a random ->amount of time, and then reacquiring the mutex. Of course, ->this would be a pretty poor implementation, but any code that ->didn't work under that implementation wouldn't be strictly ->compliant. - -The implementation you suggested is indeed correct -one (yes, now I see it :). However it requires from -signal/broadcast nothing more than to "{ return 0; }" -That is not the case for pthread-win32 and ACE -implementations. I do think that these implementations -(basically the same implementation) have some serious -problems with wait/signal/broadcast calls. I am looking -for help to clarify whether these problems are real -or not. I think that I can demonstrate what I mean -using one or two small sample programs. -. -. -. -========== -tennis.cpp -========== - -#include "ace/Synch.h" -#include "ace/Thread.h" - -enum GAME_STATE { - - START_GAME, - PLAYER_A, // Player A playes the ball - PLAYER_B, // Player B playes the ball - GAME_OVER, - ONE_PLAYER_GONE, - BOTH_PLAYERS_GONE - -}; - -enum GAME_STATE eGameState; -ACE_Mutex* pmtxGameStateLock; -ACE_Condition< ACE_Mutex >* pcndGameStateChange; - -void* - playerA( - void* pParm - ) -{ - - // For access to game state variable - pmtxGameStateLock->acquire(); - - // Play loop - while ( eGameState < GAME_OVER ) { - - // Play the ball - cout << endl << "PLAYER-A" << endl; - - // Now its PLAYER-B's turn - eGameState = PLAYER_B; - - // Signal to PLAYER-B that now it is his turn - pcndGameStateChange->signal(); - - // Wait until PLAYER-B finishes playing the ball - do { - - pcndGameStateChange->wait(); - - if ( PLAYER_B == eGameState ) - cout << endl << "----PLAYER-A: SPURIOUS WAKEUP!!!" << endl; - - } while ( PLAYER_B == eGameState ); - - } - - // PLAYER-A gone - eGameState = (GAME_STATE)(eGameState+1); - cout << endl << "PLAYER-A GONE" << endl; - - // No more access to state variable needed - pmtxGameStateLock->release(); - - // Signal PLAYER-A gone event - pcndGameStateChange->broadcast(); - - return 0; - -} - -void* - playerB( - void* pParm - ) -{ - - // For access to game state variable - pmtxGameStateLock->acquire(); - - // Play loop - while ( eGameState < GAME_OVER ) { - - // Play the ball - cout << endl << "PLAYER-B" << endl; - - // Now its PLAYER-A's turn - eGameState = PLAYER_A; - - // Signal to PLAYER-A that now it is his turn - pcndGameStateChange->signal(); - - // Wait until PLAYER-A finishes playing the ball - do { - - pcndGameStateChange->wait(); - - if ( PLAYER_A == eGameState ) - cout << endl << "----PLAYER-B: SPURIOUS WAKEUP!!!" << endl; - - } while ( PLAYER_A == eGameState ); - - } - - // PLAYER-B gone - eGameState = (GAME_STATE)(eGameState+1); - cout << endl << "PLAYER-B GONE" << endl; - - // No more access to state variable needed - pmtxGameStateLock->release(); - - // Signal PLAYER-B gone event - pcndGameStateChange->broadcast(); - - return 0; - -} - - -int -main (int, ACE_TCHAR *[]) -{ - - pmtxGameStateLock = new ACE_Mutex(); - pcndGameStateChange = new ACE_Condition< ACE_Mutex >( *pmtxGameStateLock -); - - // Set initial state - eGameState = START_GAME; - - // Create players - ACE_Thread::spawn( playerA ); - ACE_Thread::spawn( playerB ); - - // Give them 5 sec. to play - Sleep( 5000 );//sleep( 5 ); - - // Set game over state - pmtxGameStateLock->acquire(); - eGameState = GAME_OVER; - - // Let them know - pcndGameStateChange->broadcast(); - - // Wait for players to stop - do { - - pcndGameStateChange->wait(); - - } while ( eGameState < BOTH_PLAYERS_GONE ); - - // Cleanup - cout << endl << "GAME OVER" << endl; - pmtxGameStateLock->release(); - delete pcndGameStateChange; - delete pmtxGameStateLock; - - return 0; - -} - -=========== -tennisb.cpp -=========== -#include "ace/Synch.h" -#include "ace/Thread.h" - -enum GAME_STATE { - - START_GAME, - PLAYER_A, // Player A playes the ball - PLAYER_B, // Player B playes the ball - GAME_OVER, - ONE_PLAYER_GONE, - BOTH_PLAYERS_GONE - -}; - -enum GAME_STATE eGameState; -ACE_Mutex* pmtxGameStateLock; -ACE_Condition< ACE_Mutex >* pcndGameStateChange; - -void* - playerA( - void* pParm - ) -{ - - // For access to game state variable - pmtxGameStateLock->acquire(); - - // Play loop - while ( eGameState < GAME_OVER ) { - - // Play the ball - cout << endl << "PLAYER-A" << endl; - - // Now its PLAYER-B's turn - eGameState = PLAYER_B; - - // Signal to PLAYER-B that now it is his turn - pcndGameStateChange->broadcast(); - - // Wait until PLAYER-B finishes playing the ball - do { - - pcndGameStateChange->wait(); - - if ( PLAYER_B == eGameState ) - cout << endl << "----PLAYER-A: SPURIOUS WAKEUP!!!" << endl; - - } while ( PLAYER_B == eGameState ); - - } - - // PLAYER-A gone - eGameState = (GAME_STATE)(eGameState+1); - cout << endl << "PLAYER-A GONE" << endl; - - // No more access to state variable needed - pmtxGameStateLock->release(); - - // Signal PLAYER-A gone event - pcndGameStateChange->broadcast(); - - return 0; - -} - -void* - playerB( - void* pParm - ) -{ - - // For access to game state variable - pmtxGameStateLock->acquire(); - - // Play loop - while ( eGameState < GAME_OVER ) { - - // Play the ball - cout << endl << "PLAYER-B" << endl; - - // Now its PLAYER-A's turn - eGameState = PLAYER_A; - - // Signal to PLAYER-A that now it is his turn - pcndGameStateChange->broadcast(); - - // Wait until PLAYER-A finishes playing the ball - do { - - pcndGameStateChange->wait(); - - if ( PLAYER_A == eGameState ) - cout << endl << "----PLAYER-B: SPURIOUS WAKEUP!!!" << endl; - - } while ( PLAYER_A == eGameState ); - - } - - // PLAYER-B gone - eGameState = (GAME_STATE)(eGameState+1); - cout << endl << "PLAYER-B GONE" << endl; - - // No more access to state variable needed - pmtxGameStateLock->release(); - - // Signal PLAYER-B gone event - pcndGameStateChange->broadcast(); - - return 0; - -} - - -int -main (int, ACE_TCHAR *[]) -{ - - pmtxGameStateLock = new ACE_Mutex(); - pcndGameStateChange = new ACE_Condition< ACE_Mutex >( *pmtxGameStateLock -); - - // Set initial state - eGameState = START_GAME; - - // Create players - ACE_Thread::spawn( playerA ); - ACE_Thread::spawn( playerB ); - - // Give them 5 sec. to play - Sleep( 5000 );//sleep( 5 ); - - // Make some noise - pmtxGameStateLock->acquire(); - cout << endl << "---Noise ON..." << endl; - pmtxGameStateLock->release(); - for ( int i = 0; i < 100000; i++ ) - pcndGameStateChange->broadcast(); - cout << endl << "---Noise OFF" << endl; - - // Set game over state - pmtxGameStateLock->acquire(); - eGameState = GAME_OVER; - cout << endl << "---Stopping the game..." << endl; - - // Let them know - pcndGameStateChange->broadcast(); - - // Wait for players to stop - do { - - pcndGameStateChange->wait(); - - } while ( eGameState < BOTH_PLAYERS_GONE ); - - // Cleanup - cout << endl << "GAME OVER" << endl; - pmtxGameStateLock->release(); - delete pcndGameStateChange; - delete pmtxGameStateLock; - - return 0; - -} -. -. -. -David Schwartz <davids@webmaster.com> wrote: ->> > It's compliant ->> ->> That is really good. -> ->> Tomorrow (I have to go urgently now) I will try to ->> demonstrate the lost-signal "problem" of current ->> pthread-win32 and ACE-(variant w/o SingleObjectAndWait) ->> implementations: players start suddenly drop their balls :-) ->> (with no change in source code). -> ->Signals aren't lost, they're going to the main thread, ->which isn't coded correctly to handle them. Try this: -> -> // Wait for players to stop -> do { -> -> pthread_cond_wait( &cndGameStateChange,&mtxGameStateLock ); ->printf("Main thread stole a signal\n"); -> -> } while ( eGameState < BOTH_PLAYERS_GONE ); -> ->I bet everytime you thing a signal is lost, you'll see that printf. ->The signal isn't lost, it was stolen by another thread. - -well, you can probably loose your bet.. it was indeed stolen -by "another" thread but not the one you seem to think of. - -I think that what actually happens is the following: - -H:\SA\UXX\pt\PTHREADS\TESTS>tennis3.exe - -PLAYER-A - -PLAYER-B - -----PLAYER-B: SPURIOUS WAKEUP!!! - -PLAYER-A GONE - -PLAYER-B GONE - -GAME OVER - -H:\SA\UXX\pt\PTHREADS\TESTS> - -here you can see that PLAYER-B after playing his first -ball (which came via signal from PLAYER-A) just dropped -it down. What happened is that his signal to player A -was consumed as spurious wakeup by himself (player B). - -The implementation has a problem: - -================ -waiting threads: -================ - -{ /** Critical Section - - inc cond.waiters_count - -} - - /* - /* Atomic only if using Win32 SignalObjectAndWait - /* - cond.mtx.release - - /*** ^^-- A THREAD WHICH DID SIGNAL MAY ACQUIRE THE MUTEX, - /*** GO INTO WAIT ON THE SAME CONDITION AND OVERTAKE - /*** ORIGINAL WAITER(S) CONSUMING ITS OWN SIGNAL! - - cond.sem.wait - -Player-A after playing game's initial ball went into -wait (called _wait) but was pre-empted before reaching -wait semaphore. He was counted as waiter but was not -actually waiting/blocked yet. - -=============== -signal threads: -=============== - -{ /** Critical Section - - waiters_count = cond.waiters_count - -} - - if ( waiters_count != 0 ) - - sem.post 1 - - endif - -Player-B after he received signal/ball from Player A -called _signal. The _signal did see that there was -one waiter blocked on the condition (Player-A) and -released the semaphore.. (but it did not unblock -Player-A because he was not actually blocked). -Player-B thread continued its execution, called _wait, -was counted as second waiter BUT was allowed to slip -through opened semaphore gate (which was opened for -Player-B) and received his own signal. Player B remained -blocked followed by Player A. Deadlock happened which -lasted until main thread came in and said game over. - -It seems to me that the implementation fails to -correctly implement the following statement -from specification: - -http://www.opengroup.org/ -onlinepubs/007908799/xsh/pthread_cond_wait.html - -"These functions atomically release mutex and cause -the calling thread to block on the condition variable -cond; atomically here means "atomically with respect -to access by another thread to the mutex and then the -condition variable". That is, if another thread is -able to acquire the mutex after the about-to-block -thread has released it, then a subsequent call to -pthread_cond_signal() or pthread_cond_broadcast() -in that thread behaves as if it were issued after -the about-to-block thread has blocked." - -Question: Am I right? - -(I produced the program output above by simply -adding ?Sleep( 1 )?: - -================ -waiting threads: -================ - -{ /** Critical Section - - inc cond.waiters_count - -} - - /* - /* Atomic only if using Win32 SignalObjectAndWait - /* - cond.mtx.release - -Sleep( 1 ); // Win32 - - /*** ^^-- A THREAD WHICH DID SIGNAL MAY ACQUIRE THE MUTEX, - /*** GO INTO WAIT ON THE SAME CONDITION AND OVERTAKE - /*** ORIGINAL WAITER(S) CONSUMING ITS OWN SIGNAL! - - cond.sem.wait - -to the source code of pthread-win32 implementation: - -http://sources.redhat.com/cgi-bin/cvsweb.cgi/pthreads/ -condvar.c?rev=1.36&content-type=text/ -x-cvsweb-markup&cvsroot=pthreads-win32 - - - /* - * We keep the lock held just long enough to increment the count of - * waiters by one (above). - * Note that we can't keep it held across the - * call to sem_wait since that will deadlock other calls - * to pthread_cond_signal - */ - cleanup_args.mutexPtr = mutex; - cleanup_args.cv = cv; - cleanup_args.resultPtr = &result; - - pthread_cleanup_push (ptw32_cond_wait_cleanup, (void *) -&cleanup_args); - - if ((result = pthread_mutex_unlock (mutex)) == 0) - {((result -Sleep( 1 ); // @AT - - /* - * Wait to be awakened by - * pthread_cond_signal, or - * pthread_cond_broadcast, or - * a timeout - * - * Note: - * ptw32_sem_timedwait is a cancelation point, - * hence providing the - * mechanism for making pthread_cond_wait a cancelation - * point. We use the cleanup mechanism to ensure we - * re-lock the mutex and decrement the waiters count - * if we are canceled. - */ - if (ptw32_sem_timedwait (&(cv->sema), abstime) == -1) { - result = errno; - } - } - - pthread_cleanup_pop (1); /* Always cleanup */ - - -BTW, on my system (2 CPUs) I can manage to get -signals lost even without any source code modification -if I run the tennis program many times in different -shell sessions. -. -. -. -David Schwartz <davids@webmaster.com> wrote: ->terekhov@my-deja.com wrote: -> ->> well, it might be that the program is in fact buggy. ->> but you did not show me any bug. -> ->You're right. I was close but not dead on. I was correct, however, ->that the code is buggy because it uses 'pthread_cond_signal' even ->though not any thread waiting on the condition variable can do the ->job. I was wrong in which thread could be waiting on the cv but ->unable to do the job. - -Okay, lets change 'pthread_cond_signal' to 'pthread_cond_broadcast' -but also add some noise from main() right before declaring the game -to be over (I need it in order to demonstrate another problem of -pthread-win32/ACE implementations - broadcast deadlock)... -. -. -. -It is my understanding of POSIX conditions, -that on correct implementation added noise -in form of unnecessary broadcasts from main, -should not break the tennis program. The -only 'side effect' of added noise on correct -implementation would be 'spurious wakeups' of -players (in fact they are not spurious, -players just see them as spurious) unblocked, -not by another player but by main before -another player had a chance to acquire the -mutex and change the game state variable: -. -. -. - -PLAYER-B - -PLAYER-A - ----Noise ON... - -PLAYER-B - -PLAYER-A - -. -. -. - -PLAYER-B - -PLAYER-A - -----PLAYER-A: SPURIOUS WAKEUP!!! - -PLAYER-B - -PLAYER-A - ----Noise OFF - -PLAYER-B - ----Stopping the game... - -PLAYER-A GONE - -PLAYER-B GONE - -GAME OVER - -H:\SA\UXX\pt\PTHREADS\TESTS> - -On pthread-win32/ACE implementations the -program could stall: - -. -. -. - -PLAYER-A - -PLAYER-B - -PLAYER-A - -PLAYER-B - -PLAYER-A - -PLAYER-B - -PLAYER-A - -PLAYER-B - ----Noise ON... - -PLAYER-A - ----Noise OFF -^C -H:\SA\UXX\pt\PTHREADS\TESTS> - - -The implementation has problems: - -================ -waiting threads: -================ - -{ /** Critical Section - - inc cond.waiters_count - -} - - /* - /* Atomic only if using Win32 SignalObjectAndWait - /* - cond.mtx.release - cond.sem.wait - - /*** ^^-- WAITER CAN BE PREEMPTED AFTER BEING UNBLOCKED... - -{ /** Critical Section - - dec cond.waiters_count - - /*** ^^- ...AND BEFORE DECREMENTING THE COUNT (1) - - last_waiter = ( cond.was_broadcast && - cond.waiters_count == 0 ) - - if ( last_waiter ) - - cond.was_broadcast = FALSE - - endif - -} - - if ( last_waiter ) - - /* - /* Atomic only if using Win32 SignalObjectAndWait - /* - cond.auto_reset_event_or_sem.post /* Event for Win32 - cond.mtx.acquire - - /*** ^^-- ...AND BEFORE CALL TO mtx.acquire (2) - - /*** ^^-- NESTED BROADCASTS RESULT IN A DEADLOCK - - - else - - cond.mtx.acquire - - /*** ^^-- ...AND BEFORE CALL TO mtx.acquire (3) - - endif - - -================== -broadcast threads: -================== - -{ /** Critical Section - - waiters_count = cond.waiters_count - - if ( waiters_count != 0 ) - - cond.was_broadcast = TRUE - - endif - -} - -if ( waiters_count != 0 ) - - cond.sem.post waiters_count - - /*** ^^^^^--- SPURIOUS WAKEUPS DUE TO (1) - - cond.auto_reset_event_or_sem.wait /* Event for Win32 - - /*** ^^^^^--- DEADLOCK FOR FURTHER BROADCASTS IF THEY - HAPPEN TO GO INTO WAIT WHILE PREVIOUS - BROADCAST IS STILL IN PROGRESS/WAITING - -endif - -a) cond.waiters_count does not accurately reflect -number of waiters blocked on semaphore - that could -result (in the time window when counter is not accurate) -in spurios wakeups organised by subsequent _signals -and _broadcasts. From standard compliance point of view -that is OK but that could be a real problem from -performance/efficiency point of view. - -b) If subsequent broadcast happen to go into wait on -cond.auto_reset_event_or_sem before previous -broadcast was unblocked from cond.auto_reset_event_or_sem -by its last waiter, one of two blocked threads will -remain blocked because last_waiter processing code -fails to unblock both threads. - -In the situation with tennisb.c the Player-B was put -in a deadlock by noise (broadcast) coming from main -thread. And since Player-B holds the game state -mutex when it calls broadcast, the whole program -stalled: Player-A was deadlocked on mutex and -main thread after finishing with producing the noise -was deadlocked on mutex too (needed to declare the -game over) - -(I produced the program output above by simply -adding ?Sleep( 1 )?: - -================== -broadcast threads: -================== - -{ /** Critical Section - - waiters_count = cond.waiters_count - - if ( waiters_count != 0 ) - - cond.was_broadcast = TRUE - - endif - -} - -if ( waiters_count != 0 ) - -Sleep( 1 ); //Win32 - - cond.sem.post waiters_count - - /*** ^^^^^--- SPURIOUS WAKEUPS DUE TO (1) - - cond.auto_reset_event_or_sem.wait /* Event for Win32 - - /*** ^^^^^--- DEADLOCK FOR FURTHER BROADCASTS IF THEY - HAPPEN TO GO INTO WAIT WHILE PREVIOUS - BROADCAST IS STILL IN PROGRESS/WAITING - -endif - -to the source code of pthread-win32 implementation: - -http://sources.redhat.com/cgi-bin/cvsweb.cgi/pthreads/ -condvar.c?rev=1.36&content-type=text/ -x-cvsweb-markup&cvsroot=pthreads-win32 - - if (wereWaiters) - {(wereWaiters)sroot=pthreads-win32eb.cgi/pthreads/Yem...m - /* - * Wake up all waiters - */ - -Sleep( 1 ); //@AT - -#ifdef NEED_SEM - - result = (ptw32_increase_semaphore( &cv->sema, cv->waiters ) - ? 0 - : EINVAL); - -#else /* NEED_SEM */ - - result = (ReleaseSemaphore( cv->sema, cv->waiters, NULL ) - ? 0 - : EINVAL); - -#endif /* NEED_SEM */ - - } - - (void) pthread_mutex_unlock(&(cv->waitersLock)); - - if (wereWaiters && result == 0) - {(wereWaiters - /* - * Wait for all the awakened threads to acquire their part of - * the counting semaphore - */ - - if (WaitForSingleObject (cv->waitersDone, INFINITE) - == WAIT_OBJECT_0) - { - result = 0; - } - else - { - result = EINVAL; - } - - } - - return (result); - -} - -BTW, on my system (2 CPUs) I can manage to get -the program stalled even without any source code -modification if I run the tennisb program many -times in different shell sessions. - -=================== -pthread-win32 patch -=================== -struct pthread_cond_t_ { - long nWaitersBlocked; /* Number of threads blocked -*/ - long nWaitersUnblocked; /* Number of threads unblocked -*/ - long nWaitersToUnblock; /* Number of threads to unblock -*/ - sem_t semBlockQueue; /* Queue up threads waiting for the -*/ - /* condition to become signalled -*/ - sem_t semBlockLock; /* Semaphore that guards access to -*/ - /* | waiters blocked count/block queue -*/ - /* +-> Mandatory Sync.LEVEL-1 -*/ - pthread_mutex_t mtxUnblockLock; /* Mutex that guards access to -*/ - /* | waiters (to)unblock(ed) counts -*/ - /* +-> Optional* Sync.LEVEL-2 -*/ -}; /* Opt*) for _timedwait and -cancellation*/ - -int -pthread_cond_init (pthread_cond_t * cond, const pthread_condattr_t * attr) - int result = EAGAIN; - pthread_cond_t cv = NULL; - - if (cond == NULL) - {(cond - return EINVAL; - } - - if ((attr != NULL && *attr != NULL) && - ((*attr)->pshared == PTHREAD_PROCESS_SHARED)) - { - /* - * Creating condition variable that can be shared between - * processes. - */ - result = ENOSYS; - - goto FAIL0; - } - - cv = (pthread_cond_t) calloc (1, sizeof (*cv)); - - if (cv == NULL) - {(cv - result = ENOMEM; - goto FAIL0; - } - - cv->nWaitersBlocked = 0; - cv->nWaitersUnblocked = 0; - cv->nWaitersToUnblock = 0; - - if (sem_init (&(cv->semBlockLock), 0, 1) != 0) - {(sem_init - goto FAIL0; - } - - if (sem_init (&(cv->semBlockQueue), 0, 0) != 0) - {(sem_init - goto FAIL1; - } - - if (pthread_mutex_init (&(cv->mtxUnblockLock), 0) != 0) - {(pthread_mutex_init - goto FAIL2; - } - - - result = 0; - - goto DONE; - - /* - * ------------- - * Failed... - * ------------- - */ -FAIL2: - (void) sem_destroy (&(cv->semBlockQueue)); - -FAIL1: - (void) sem_destroy (&(cv->semBlockLock)); - -FAIL0: -DONE: - *cond = cv; - - return (result); - -} /* pthread_cond_init */ - -int -pthread_cond_destroy (pthread_cond_t * cond) -{ - int result = 0; - pthread_cond_t cv; - - /* - * Assuming any race condition here is harmless. - */ - if (cond == NULL - || *cond == NULL) - { - return EINVAL; - } - - if (*cond != (pthread_cond_t) PTW32_OBJECT_AUTO_INIT) - {(*cond - cv = *cond; - - /* - * Synchronize access to waiters blocked count (LEVEL-1) - */ - if (sem_wait(&(cv->semBlockLock)) != 0) - {(sem_wait(&(cv->semBlockLock)) - return errno; - } - - /* - * Synchronize access to waiters (to)unblock(ed) counts (LEVEL-2) - */ - if ((result = pthread_mutex_lock(&(cv->mtxUnblockLock))) != 0) - {((result - (void) sem_post(&(cv->semBlockLock)); - return result; - } - - /* - * Check whether cv is still busy (still has waiters blocked) - */ - if (cv->nWaitersBlocked - cv->nWaitersUnblocked > 0) - {(cv->nWaitersBlocked - (void) sem_post(&(cv->semBlockLock)); - (void) pthread_mutex_unlock(&(cv->mtxUnblockLock)); - return EBUSY; - } - - /* - * Now it is safe to destroy - */ - (void) sem_destroy (&(cv->semBlockLock)); - (void) sem_destroy (&(cv->semBlockQueue)); - (void) pthread_mutex_unlock (&(cv->mtxUnblockLock)); - (void) pthread_mutex_destroy (&(cv->mtxUnblockLock)); - - free(cv); - *cond = NULL; - } - else - { - /* - * See notes in ptw32_cond_check_need_init() above also. - */ - EnterCriticalSection(&ptw32_cond_test_init_lock); - - /* - * Check again. - */ - if (*cond == (pthread_cond_t) PTW32_OBJECT_AUTO_INIT) - {(*cond - /* - * This is all we need to do to destroy a statically - * initialised cond that has not yet been used (initialised). - * If we get to here, another thread - * waiting to initialise this cond will get an EINVAL. - */ - *cond = NULL; - } - else - { - /* - * The cv has been initialised while we were waiting - * so assume it's in use. - */ - result = EBUSY; - } - - LeaveCriticalSection(&ptw32_cond_test_init_lock); - } - - return (result); -} - -/* - * Arguments for cond_wait_cleanup, since we can only pass a - * single void * to it. - */ -typedef struct { - pthread_mutex_t * mutexPtr; - pthread_cond_t cv; - int * resultPtr; -} ptw32_cond_wait_cleanup_args_t; - -static void -ptw32_cond_wait_cleanup(void * args) -{ - ptw32_cond_wait_cleanup_args_t * cleanup_args = -(ptw32_cond_wait_cleanup_args_t *) args; - pthread_cond_t cv = cleanup_args->cv; - int * resultPtr = cleanup_args->resultPtr; - int eLastSignal; /* enum: 1=yes 0=no -1=cancelled/timedout w/o signal(s) -*/ - int result; - - /* - * Whether we got here as a result of signal/broadcast or because of - * timeout on wait or thread cancellation we indicate that we are no - * longer waiting. The waiter is responsible for adjusting waiters - * (to)unblock(ed) counts (protected by unblock lock). - * Unblock lock/Sync.LEVEL-2 supports _timedwait and cancellation. - */ - if ((result = pthread_mutex_lock(&(cv->mtxUnblockLock))) != 0) - {((result - *resultPtr = result; - return; - } - - cv->nWaitersUnblocked++; - - eLastSignal = (cv->nWaitersToUnblock == 0) ? - -1 : (--cv->nWaitersToUnblock == 0); - - /* - * No more LEVEL-2 access to waiters (to)unblock(ed) counts needed - */ - if ((result = pthread_mutex_unlock(&(cv->mtxUnblockLock))) != 0) - {((result - *resultPtr = result; - return; - } - - /* - * If last signal... - */ - if (eLastSignal == 1) - {(eLastSignal - /* - * ...it means that we have end of 'atomic' signal/broadcast - */ - if (sem_post(&(cv->semBlockLock)) != 0) - {(sem_post(&(cv->semBlockLock)) - *resultPtr = errno; - return; - } - } - /* - * If not last signal and not timed out/cancelled wait w/o signal... - */ - else if (eLastSignal == 0) - { - /* - * ...it means that next waiter can go through semaphore - */ - if (sem_post(&(cv->semBlockQueue)) != 0) - {(sem_post(&(cv->semBlockQueue)) - *resultPtr = errno; - return; - } - } - - /* - * XSH: Upon successful return, the mutex has been locked and is owned - * by the calling thread - */ - if ((result = pthread_mutex_lock(cleanup_args->mutexPtr)) != 0) - {((result - *resultPtr = result; - } - -} /* ptw32_cond_wait_cleanup */ - -static int -ptw32_cond_timedwait (pthread_cond_t * cond, - pthread_mutex_t * mutex, - const struct timespec *abstime) -{ - int result = 0; - pthread_cond_t cv; - ptw32_cond_wait_cleanup_args_t cleanup_args; - - if (cond == NULL || *cond == NULL) - {(cond - return EINVAL; - } - - /* - * We do a quick check to see if we need to do more work - * to initialise a static condition variable. We check - * again inside the guarded section of ptw32_cond_check_need_init() - * to avoid race conditions. - */ - if (*cond == (pthread_cond_t) PTW32_OBJECT_AUTO_INIT) - {(*cond - result = ptw32_cond_check_need_init(cond); - } - - if (result != 0 && result != EBUSY) - {(result - return result; - } - - cv = *cond; - - /* - * Synchronize access to waiters blocked count (LEVEL-1) - */ - if (sem_wait(&(cv->semBlockLock)) != 0) - {(sem_wait(&(cv->semBlockLock)) - return errno; - } - - cv->nWaitersBlocked++; - - /* - * Thats it. Counted means waiting, no more access needed - */ - if (sem_post(&(cv->semBlockLock)) != 0) - {(sem_post(&(cv->semBlockLock)) - return errno; - } - - /* - * Setup this waiter cleanup handler - */ - cleanup_args.mutexPtr = mutex; - cleanup_args.cv = cv; - cleanup_args.resultPtr = &result; - - pthread_cleanup_push (ptw32_cond_wait_cleanup, (void *) &cleanup_args); - - /* - * Now we can release 'mutex' and... - */ - if ((result = pthread_mutex_unlock (mutex)) == 0) - {((result - - /* - * ...wait to be awakened by - * pthread_cond_signal, or - * pthread_cond_broadcast, or - * timeout, or - * thread cancellation - * - * Note: - * - * ptw32_sem_timedwait is a cancellation point, - * hence providing the mechanism for making - * pthread_cond_wait a cancellation point. - * We use the cleanup mechanism to ensure we - * re-lock the mutex and adjust (to)unblock(ed) waiters - * counts if we are cancelled, timed out or signalled. - */ - if (ptw32_sem_timedwait (&(cv->semBlockQueue), abstime) != 0) - {(ptw32_sem_timedwait - result = errno; - } - } - - /* - * Always cleanup - */ - pthread_cleanup_pop (1); - - - /* - * "result" can be modified by the cleanup handler. - */ - return (result); - -} /* ptw32_cond_timedwait */ - - -static int -ptw32_cond_unblock (pthread_cond_t * cond, - int unblockAll) -{ - int result; - pthread_cond_t cv; - - if (cond == NULL || *cond == NULL) - {(cond - return EINVAL; - } - - cv = *cond; - - /* - * No-op if the CV is static and hasn't been initialised yet. - * Assuming that any race condition is harmless. - */ - if (cv == (pthread_cond_t) PTW32_OBJECT_AUTO_INIT) - {(cv - return 0; - } - - /* - * Synchronize access to waiters blocked count (LEVEL-1) - */ - if (sem_wait(&(cv->semBlockLock)) != 0) - {(sem_wait(&(cv->semBlockLock)) - return errno; - } - - /* - * Synchronize access to waiters (to)unblock(ed) counts (LEVEL-2) - * This sync.level supports _timedwait and cancellation - */ - if ((result = pthread_mutex_lock(&(cv->mtxUnblockLock))) != 0) - {((result - return result; - } - - /* - * Adjust waiters blocked and unblocked counts (collect garbage) - */ - if (cv->nWaitersUnblocked != 0) - {(cv->nWaitersUnblocked - cv->nWaitersBlocked -= cv->nWaitersUnblocked; - cv->nWaitersUnblocked = 0; - } - - /* - * If (after adjustment) there are still some waiters blocked counted... - */ - if ( cv->nWaitersBlocked > 0) - {( - /* - * We will unblock first waiter and leave semBlockLock/LEVEL-1 locked - * LEVEL-1 access is left disabled until last signal/unblock -completes - */ - cv->nWaitersToUnblock = (unblockAll) ? cv->nWaitersBlocked : 1; - - /* - * No more LEVEL-2 access to waiters (to)unblock(ed) counts needed - * This sync.level supports _timedwait and cancellation - */ - if ((result = pthread_mutex_unlock(&(cv->mtxUnblockLock))) != 0) - {((result - return result; - } - - - /* - * Now, with LEVEL-2 lock released let first waiter go through -semaphore - */ - if (sem_post(&(cv->semBlockQueue)) != 0) - {(sem_post(&(cv->semBlockQueue)) - return errno; - } - } - /* - * No waiter blocked - no more LEVEL-1 access to blocked count needed... - */ - else if (sem_post(&(cv->semBlockLock)) != 0) - { - return errno; - } - /* - * ...and no more LEVEL-2 access to waiters (to)unblock(ed) counts needed -too - * This sync.level supports _timedwait and cancellation - */ - else - { - result = pthread_mutex_unlock(&(cv->mtxUnblockLock)); - } - - return(result); - -} /* ptw32_cond_unblock */ - -int -pthread_cond_wait (pthread_cond_t * cond, - pthread_mutex_t * mutex) -{ - /* The NULL abstime arg means INFINITE waiting. */ - return(ptw32_cond_timedwait(cond, mutex, NULL)); -} /* pthread_cond_wait */ - - -int -pthread_cond_timedwait (pthread_cond_t * cond, - pthread_mutex_t * mutex, - const struct timespec *abstime) -{ - if (abstime == NULL) - {(abstime - return EINVAL; - } - - return(ptw32_cond_timedwait(cond, mutex, abstime)); -} /* pthread_cond_timedwait */ - - -int -pthread_cond_signal (pthread_cond_t * cond) -{ - /* The '0'(FALSE) unblockAll arg means unblock ONE waiter. */ - return(ptw32_cond_unblock(cond, 0)); -} /* pthread_cond_signal */ - -int -pthread_cond_broadcast (pthread_cond_t * cond) -{ - /* The '1'(TRUE) unblockAll arg means unblock ALL waiters. */ - return(ptw32_cond_unblock(cond, 1)); -} /* pthread_cond_broadcast */ - - - - -TEREKHOV@de.ibm.com on 17.01.2001 01:00:57 - -Please respond to TEREKHOV@de.ibm.com - -To: pthreads-win32@sourceware.cygnus.com -cc: schmidt@uci.edu -Subject: win32 conditions: sem+counter+event = broadcast_deadlock + - spur.wakeup/unfairness/incorrectness ?? - - - - - - - -Hi, - -Problem 1: broadcast_deadlock - -It seems that current implementation does not provide "atomic" -broadcasts. That may lead to "nested" broadcasts... and it seems -that nested case is not handled correctly -> producing a broadcast -DEADLOCK as a result. - -Scenario: - -N (>1) waiting threads W1..N are blocked (in _wait) on condition's -semaphore. - -Thread B1 calls pthread_cond_broadcast, which results in "releasing" N -W threads via incrementing semaphore counter by N (stored in -cv->waiters) BUT cv->waiters counter does not change!! The caller -thread B1 remains blocked on cv->waitersDone event (auto-reset!!) BUT -condition is not protected from starting another broadcast (when called -on another thread) while still waiting for the "old" broadcast to -complete on thread B1. - -M (>=0, <N) W threads are fast enough to go thru their _wait call and -decrement cv->waiters counter. - -L (N-M) "late" waiter W threads are a) still blocked/not returned from -their semaphore wait call or b) were preempted after sem_wait but before -lock( &cv->waitersLock ) or c) are blocked on cv->waitersLock. - -cv->waiters is still > 0 (= L). - -Another thread B2 (or some W thread from M group) calls -pthread_cond_broadcast and gains access to counter... neither a) nor b) -prevent thread B2 in pthread_cond_broadcast from gaining access to -counter and starting another broadcast ( for c) - it depends on -cv->waitersLock scheduling rules: FIFO=OK, PRTY=PROBLEM,... ) - -That call to pthread_cond_broadcast (on thread B2) will result in -incrementing semaphore by cv->waiters (=L) which is INCORRECT (all -W1..N were in fact already released by thread B1) and waiting on -_auto-reset_ event cv->waitersDone which is DEADLY WRONG (produces a -deadlock)... - -All late W1..L threads now have a chance to complete their _wait call. -Last W_L thread sets an auto-reselt event cv->waitersDone which will -release either B1 or B2 leaving one of B threads in a deadlock. - -Problem 2: spur.wakeup/unfairness/incorrectness - -It seems that: - -a) because of the same problem with counter which does not reflect the -actual number of NOT RELEASED waiters, the signal call may increment -a semaphore counter w/o having a waiter blocked on it. That will result -in (best case) spurious wake ups - performance degradation due to -unnecessary context switches and predicate re-checks and (in worth case) -unfairness/incorrectness problem - see b) - -b) neither signal nor broadcast prevent other threads - "new waiters" -(and in the case of signal, the caller thread as well) from going into -_wait and overtaking "old" waiters (already released but still not returned -from sem_wait on condition's semaphore). Win semaphore just [API DOC]: -"Maintains a count between zero and some maximum value, limiting the number -of threads that are simultaneously accessing a shared resource." Calling -ReleaseSemaphore does not imply (at least not documented) that on return -from ReleaseSemaphore all waiters will in fact become released (returned -from their Wait... call) and/or that new waiters calling Wait... afterwards -will become less importance. It is NOT documented to be an atomic release -of -waiters... And even if it would be there is still a problem with a thread -being preempted after Wait on semaphore and before Wait on cv->waitersLock -and scheduling rules for cv->waitersLock itself -(??WaitForMultipleObjects??) -That may result in unfairness/incorrectness problem as described -for SetEvent impl. in "Strategies for Implementing POSIX Condition -Variables -on Win32": http://www.cs.wustl.edu/~schmidt/win32-cv-1.html - -Unfairness -- The semantics of the POSIX pthread_cond_broadcast function is -to wake up all threads currently blocked in wait calls on the condition -variable. The awakened threads then compete for the external_mutex. To -ensure -fairness, all of these threads should be released from their -pthread_cond_wait calls and allowed to recheck their condition expressions -before other threads can successfully complete a wait on the condition -variable. - -Unfortunately, the SetEvent implementation above does not guarantee that -all -threads sleeping on the condition variable when cond_broadcast is called -will -acquire the external_mutex and check their condition expressions. Although -the Pthreads specification does not mandate this degree of fairness, the -lack of fairness can cause starvation. - -To illustrate the unfairness problem, imagine there are 2 threads, C1 and -C2, -that are blocked in pthread_cond_wait on condition variable not_empty_ that -is guarding a thread-safe message queue. Another thread, P1 then places two -messages onto the queue and calls pthread_cond_broadcast. If C1 returns -from -pthread_cond_wait, dequeues and processes the message, and immediately -waits -again then it and only it may end up acquiring both messages. Thus, C2 will -never get a chance to dequeue a message and run. - -The following illustrates the sequence of events: - -1. Thread C1 attempts to dequeue and waits on CV non_empty_ -2. Thread C2 attempts to dequeue and waits on CV non_empty_ -3. Thread P1 enqueues 2 messages and broadcasts to CV not_empty_ -4. Thread P1 exits -5. Thread C1 wakes up from CV not_empty_, dequeues a message and runs -6. Thread C1 waits again on CV not_empty_, immediately dequeues the 2nd - message and runs -7. Thread C1 exits -8. Thread C2 is the only thread left and blocks forever since - not_empty_ will never be signaled - -Depending on the algorithm being implemented, this lack of fairness may -yield -concurrent programs that have subtle bugs. Of course, application -developers -should not rely on the fairness semantics of pthread_cond_broadcast. -However, -there are many cases where fair implementations of condition variables can -simplify application code. - -Incorrectness -- A variation on the unfairness problem described above -occurs -when a third consumer thread, C3, is allowed to slip through even though it -was not waiting on condition variable not_empty_ when a broadcast occurred. - -To illustrate this, we will use the same scenario as above: 2 threads, C1 -and -C2, are blocked dequeuing messages from the message queue. Another thread, -P1 -then places two messages onto the queue and calls pthread_cond_broadcast. -C1 -returns from pthread_cond_wait, dequeues and processes the message. At this -time, C3 acquires the external_mutex, calls pthread_cond_wait and waits on -the events in WaitForMultipleObjects. Since C2 has not had a chance to run -yet, the BROADCAST event is still signaled. C3 then returns from -WaitForMultipleObjects, and dequeues and processes the message in the -queue. -Thus, C2 will never get a chance to dequeue a message and run. - -The following illustrates the sequence of events: - -1. Thread C1 attempts to dequeue and waits on CV non_empty_ -2. Thread C2 attempts to dequeue and waits on CV non_empty_ -3. Thread P1 enqueues 2 messages and broadcasts to CV not_empty_ -4. Thread P1 exits -5. Thread C1 wakes up from CV not_empty_, dequeues a message and runs -6. Thread C1 exits -7. Thread C3 waits on CV not_empty_, immediately dequeues the 2nd - message and runs -8. Thread C3 exits -9. Thread C2 is the only thread left and blocks forever since - not_empty_ will never be signaled - -In the above case, a thread that was not waiting on the condition variable -when a broadcast occurred was allowed to proceed. This leads to incorrect -semantics for a condition variable. - - -COMMENTS??? - -regards, -alexander. - ------------------------------------------------------------------------------ - -Subject: RE: FYI/comp.programming.threads/Re: pthread_cond_* - implementation questions -Date: Wed, 21 Feb 2001 11:54:47 +0100 -From: TEREKHOV@de.ibm.com -To: lthomas@arbitrade.com -CC: rpj@ise.canberra.edu.au, Thomas Pfaff <tpfaff@gmx.net>, - Nanbor Wang <nanbor@cs.wustl.edu> - -Hi Louis, - -generation number 8.. - -had some time to revisit timeouts/spurious wakeup problem.. -found some bugs (in 7.b/c/d) and something to improve -(7a - using IPC semaphores but it should speedup Win32 -version as well). - -regards, -alexander. - ----------- Algorithm 8a / IMPL_SEM,UNBLOCK_STRATEGY == UNBLOCK_ALL ------ -given: -semBlockLock - bin.semaphore -semBlockQueue - semaphore -mtxExternal - mutex or CS -mtxUnblockLock - mutex or CS -nWaitersGone - int -nWaitersBlocked - int -nWaitersToUnblock - int - -wait( timeout ) { - - [auto: register int result ] // error checking omitted - [auto: register int nSignalsWasLeft ] - [auto: register int nWaitersWasGone ] - - sem_wait( semBlockLock ); - nWaitersBlocked++; - sem_post( semBlockLock ); - - unlock( mtxExternal ); - bTimedOut = sem_wait( semBlockQueue,timeout ); - - lock( mtxUnblockLock ); - if ( 0 != (nSignalsWasLeft = nWaitersToUnblock) ) { - if ( bTimeout ) { // timeout (or canceled) - if ( 0 != nWaitersBlocked ) { - nWaitersBlocked--; - } - else { - nWaitersGone++; // count spurious wakeups - } - } - if ( 0 == --nWaitersToUnblock ) { - if ( 0 != nWaitersBlocked ) { - sem_post( semBlockLock ); // open the gate - nSignalsWasLeft = 0; // do not open the gate below -again - } - else if ( 0 != (nWaitersWasGone = nWaitersGone) ) { - nWaitersGone = 0; - } - } - } - else if ( INT_MAX/2 == ++nWaitersGone ) { // timeout/canceled or spurious -semaphore :-) - sem_wait( semBlockLock ); - nWaitersBlocked -= nWaitersGone; // something is going on here - -test of timeouts? :-) - sem_post( semBlockLock ); - nWaitersGone = 0; - } - unlock( mtxUnblockLock ); - - if ( 1 == nSignalsWasLeft ) { - if ( 0 != nWaitersWasGone ) { - // sem_adjust( -nWaitersWasGone ); - while ( nWaitersWasGone-- ) { - sem_wait( semBlockLock ); // better now than spurious -later - } - } - sem_post( semBlockLock ); // open the gate - } - - lock( mtxExternal ); - - return ( bTimedOut ) ? ETIMEOUT : 0; -} - -signal(bAll) { - - [auto: register int result ] - [auto: register int nSignalsToIssue] - - lock( mtxUnblockLock ); - - if ( 0 != nWaitersToUnblock ) { // the gate is closed!!! - if ( 0 == nWaitersBlocked ) { // NO-OP - return unlock( mtxUnblockLock ); - } - if (bAll) { - nWaitersToUnblock += nSignalsToIssue=nWaitersBlocked; - nWaitersBlocked = 0; - } - else { - nSignalsToIssue = 1; - nWaitersToUnblock++; - nWaitersBlocked--; - } - } - else if ( nWaitersBlocked > nWaitersGone ) { // HARMLESS RACE CONDITION! - sem_wait( semBlockLock ); // close the gate - if ( 0 != nWaitersGone ) { - nWaitersBlocked -= nWaitersGone; - nWaitersGone = 0; - } - if (bAll) { - nSignalsToIssue = nWaitersToUnblock = nWaitersBlocked; - nWaitersBlocked = 0; - } - else { - nSignalsToIssue = nWaitersToUnblock = 1; - nWaitersBlocked--; - } - } - else { // NO-OP - return unlock( mtxUnblockLock ); - } - - unlock( mtxUnblockLock ); - sem_post( semBlockQueue,nSignalsToIssue ); - return result; -} - ----------- Algorithm 8b / IMPL_SEM,UNBLOCK_STRATEGY == UNBLOCK_ONEBYONE ------- -given: -semBlockLock - bin.semaphore -semBlockQueue - bin.semaphore -mtxExternal - mutex or CS -mtxUnblockLock - mutex or CS -nWaitersGone - int -nWaitersBlocked - int -nWaitersToUnblock - int - -wait( timeout ) { - - [auto: register int result ] // error checking omitted - [auto: register int nWaitersWasGone ] - [auto: register int nSignalsWasLeft ] - - sem_wait( semBlockLock ); - nWaitersBlocked++; - sem_post( semBlockLock ); - - unlock( mtxExternal ); - bTimedOut = sem_wait( semBlockQueue,timeout ); - - lock( mtxUnblockLock ); - if ( 0 != (nSignalsWasLeft = nWaitersToUnblock) ) { - if ( bTimeout ) { // timeout (or canceled) - if ( 0 != nWaitersBlocked ) { - nWaitersBlocked--; - nSignalsWasLeft = 0; // do not unblock next waiter -below (already unblocked) - } - else { - nWaitersGone = 1; // spurious wakeup pending!! - } - } - if ( 0 == --nWaitersToUnblock && - if ( 0 != nWaitersBlocked ) { - sem_post( semBlockLock ); // open the gate - nSignalsWasLeft = 0; // do not open the gate below -again - } - else if ( 0 != (nWaitersWasGone = nWaitersGone) ) { - nWaitersGone = 0; - } - } - } - else if ( INT_MAX/2 == ++nWaitersGone ) { // timeout/canceled or spurious -semaphore :-) - sem_wait( semBlockLock ); - nWaitersBlocked -= nWaitersGone; // something is going on here - -test of timeouts? :-) - sem_post( semBlockLock ); - nWaitersGone = 0; - } - unlock( mtxUnblockLock ); - - if ( 1 == nSignalsWasLeft ) { - if ( 0 != nWaitersWasGone ) { - // sem_adjust( -1 ); - sem_wait( semBlockQueue ); // better now than spurious -later - } - sem_post( semBlockLock ); // open the gate - } - else if ( 0 != nSignalsWasLeft ) { - sem_post( semBlockQueue ); // unblock next waiter - } - - lock( mtxExternal ); - - return ( bTimedOut ) ? ETIMEOUT : 0; -} - -signal(bAll) { - - [auto: register int result ] - - lock( mtxUnblockLock ); - - if ( 0 != nWaitersToUnblock ) { // the gate is closed!!! - if ( 0 == nWaitersBlocked ) { // NO-OP - return unlock( mtxUnblockLock ); - } - if (bAll) { - nWaitersToUnblock += nWaitersBlocked; - nWaitersBlocked = 0; - } - else { - nWaitersToUnblock++; - nWaitersBlocked--; - } - unlock( mtxUnblockLock ); - } - else if ( nWaitersBlocked > nWaitersGone ) { // HARMLESS RACE CONDITION! - sem_wait( semBlockLock ); // close the gate - if ( 0 != nWaitersGone ) { - nWaitersBlocked -= nWaitersGone; - nWaitersGone = 0; - } - if (bAll) { - nWaitersToUnblock = nWaitersBlocked; - nWaitersBlocked = 0; - } - else { - nWaitersToUnblock = 1; - nWaitersBlocked--; - } - unlock( mtxUnblockLock ); - sem_post( semBlockQueue ); - } - else { // NO-OP - unlock( mtxUnblockLock ); - } - - return result; -} - ----------- Algorithm 8c / IMPL_EVENT,UNBLOCK_STRATEGY == UNBLOCK_ONEBYONE ---------- -given: -hevBlockLock - auto-reset event -hevBlockQueue - auto-reset event -mtxExternal - mutex or CS -mtxUnblockLock - mutex or CS -nWaitersGone - int -nWaitersBlocked - int -nWaitersToUnblock - int - -wait( timeout ) { - - [auto: register int result ] // error checking omitted - [auto: register int nSignalsWasLeft ] - [auto: register int nWaitersWasGone ] - - wait( hevBlockLock,INFINITE ); - nWaitersBlocked++; - set_event( hevBlockLock ); - - unlock( mtxExternal ); - bTimedOut = wait( hevBlockQueue,timeout ); - - lock( mtxUnblockLock ); - if ( 0 != (SignalsWasLeft = nWaitersToUnblock) ) { - if ( bTimeout ) { // timeout (or canceled) - if ( 0 != nWaitersBlocked ) { - nWaitersBlocked--; - nSignalsWasLeft = 0; // do not unblock next waiter -below (already unblocked) - } - else { - nWaitersGone = 1; // spurious wakeup pending!! - } - } - if ( 0 == --nWaitersToUnblock ) - if ( 0 != nWaitersBlocked ) { - set_event( hevBlockLock ); // open the gate - nSignalsWasLeft = 0; // do not open the gate below -again - } - else if ( 0 != (nWaitersWasGone = nWaitersGone) ) { - nWaitersGone = 0; - } - } - } - else if ( INT_MAX/2 == ++nWaitersGone ) { // timeout/canceled or spurious -event :-) - wait( hevBlockLock,INFINITE ); - nWaitersBlocked -= nWaitersGone; // something is going on here - -test of timeouts? :-) - set_event( hevBlockLock ); - nWaitersGone = 0; - } - unlock( mtxUnblockLock ); - - if ( 1 == nSignalsWasLeft ) { - if ( 0 != nWaitersWasGone ) { - reset_event( hevBlockQueue ); // better now than spurious -later - } - set_event( hevBlockLock ); // open the gate - } - else if ( 0 != nSignalsWasLeft ) { - set_event( hevBlockQueue ); // unblock next waiter - } - - lock( mtxExternal ); - - return ( bTimedOut ) ? ETIMEOUT : 0; -} - -signal(bAll) { - - [auto: register int result ] - - lock( mtxUnblockLock ); - - if ( 0 != nWaitersToUnblock ) { // the gate is closed!!! - if ( 0 == nWaitersBlocked ) { // NO-OP - return unlock( mtxUnblockLock ); - } - if (bAll) { - nWaitersToUnblock += nWaitersBlocked; - nWaitersBlocked = 0; - } - else { - nWaitersToUnblock++; - nWaitersBlocked--; - } - unlock( mtxUnblockLock ); - } - else if ( nWaitersBlocked > nWaitersGone ) { // HARMLESS RACE CONDITION! - wait( hevBlockLock,INFINITE ); // close the gate - if ( 0 != nWaitersGone ) { - nWaitersBlocked -= nWaitersGone; - nWaitersGone = 0; - } - if (bAll) { - nWaitersToUnblock = nWaitersBlocked; - nWaitersBlocked = 0; - } - else { - nWaitersToUnblock = 1; - nWaitersBlocked--; - } - unlock( mtxUnblockLock ); - set_event( hevBlockQueue ); - } - else { // NO-OP - unlock( mtxUnblockLock ); - } - - return result; -} - ----------- Algorithm 8d / IMPL_EVENT,UNBLOCK_STRATEGY == UNBLOCK_ALL ------ -given: -hevBlockLock - auto-reset event -hevBlockQueueS - auto-reset event // for signals -hevBlockQueueB - manual-reset even // for broadcasts -mtxExternal - mutex or CS -mtxUnblockLock - mutex or CS -eBroadcast - int // 0: no broadcast, 1: broadcast, 2: -broadcast after signal(s) -nWaitersGone - int -nWaitersBlocked - int -nWaitersToUnblock - int - -wait( timeout ) { - - [auto: register int result ] // error checking omitted - [auto: register int eWasBroadcast ] - [auto: register int nSignalsWasLeft ] - [auto: register int nWaitersWasGone ] - - wait( hevBlockLock,INFINITE ); - nWaitersBlocked++; - set_event( hevBlockLock ); - - unlock( mtxExternal ); - bTimedOut = waitformultiple( hevBlockQueueS,hevBlockQueueB,timeout,ONE ); - - lock( mtxUnblockLock ); - if ( 0 != (SignalsWasLeft = nWaitersToUnblock) ) { - if ( bTimeout ) { // timeout (or canceled) - if ( 0 != nWaitersBlocked ) { - nWaitersBlocked--; - nSignalsWasLeft = 0; // do not unblock next waiter -below (already unblocked) - } - else if ( 1 != eBroadcast ) { - nWaitersGone = 1; - } - } - if ( 0 == --nWaitersToUnblock ) { - if ( 0 != nWaitersBlocked ) { - set_event( hevBlockLock ); // open the gate - nSignalsWasLeft = 0; // do not open the gate below -again - } - else { - if ( 0 != (eWasBroadcast = eBroadcast) ) { - eBroadcast = 0; - } - if ( 0 != (nWaitersWasGone = nWaitersGone ) { - nWaitersGone = 0; - } - } - } - else if ( 0 != eBroadcast ) { - nSignalsWasLeft = 0; // do not unblock next waiter -below (already unblocked) - } - } - else if ( INT_MAX/2 == ++nWaitersGone ) { // timeout/canceled or spurious -event :-) - wait( hevBlockLock,INFINITE ); - nWaitersBlocked -= nWaitersGone; // something is going on here - -test of timeouts? :-) - set_event( hevBlockLock ); - nWaitersGone = 0; - } - unlock( mtxUnblockLock ); - - if ( 1 == nSignalsWasLeft ) { - if ( 0 != eWasBroadcast ) { - reset_event( hevBlockQueueB ); - } - if ( 0 != nWaitersWasGone ) { - reset_event( hevBlockQueueS ); // better now than spurious -later - } - set_event( hevBlockLock ); // open the gate - } - else if ( 0 != nSignalsWasLeft ) { - set_event( hevBlockQueueS ); // unblock next waiter - } - - lock( mtxExternal ); - - return ( bTimedOut ) ? ETIMEOUT : 0; -} - -signal(bAll) { - - [auto: register int result ] - [auto: register HANDLE hevBlockQueue ] - - lock( mtxUnblockLock ); - - if ( 0 != nWaitersToUnblock ) { // the gate is closed!!! - if ( 0 == nWaitersBlocked ) { // NO-OP - return unlock( mtxUnblockLock ); - } - if (bAll) { - nWaitersToUnblock += nWaitersBlocked; - nWaitersBlocked = 0; - eBroadcast = 2; - hevBlockQueue = hevBlockQueueB; - } - else { - nWaitersToUnblock++; - nWaitersBlocked--; - return unlock( mtxUnblockLock ); - } - } - else if ( nWaitersBlocked > nWaitersGone ) { // HARMLESS RACE CONDITION! - wait( hevBlockLock,INFINITE ); // close the gate - if ( 0 != nWaitersGone ) { - nWaitersBlocked -= nWaitersGone; - nWaitersGone = 0; - } - if (bAll) { - nWaitersToUnblock = nWaitersBlocked; - nWaitersBlocked = 0; - eBroadcast = 1; - hevBlockQueue = hevBlockQueueB; - } - else { - nWaitersToUnblock = 1; - nWaitersBlocked--; - hevBlockQueue = hevBlockQueueS; - } - } - else { // NO-OP - return unlock( mtxUnblockLock ); - } - - unlock( mtxUnblockLock ); - set_event( hevBlockQueue ); - return result; -} ----------------------- Forwarded by Alexander Terekhov/Germany/IBM on -02/21/2001 09:13 AM --------------------------- - -Alexander Terekhov -02/20/2001 04:33 PM - -To: Louis Thomas <lthomas@arbitrade.com> -cc: - -From: Alexander Terekhov/Germany/IBM@IBMDE -Subject: RE: FYI/comp.programming.threads/Re: pthread_cond_* implementatio - n questions -Importance: Normal - ->Sorry, gotta take a break and work on something else for a while. ->Real work ->calls, unfortunately. I'll get back to you in two or three days. - -ok. no problem. here is some more stuff for pauses you might have -in between :) - ----------- Algorithm 7d / IMPL_EVENT,UNBLOCK_STRATEGY == UNBLOCK_ALL ------ -given: -hevBlockLock - auto-reset event -hevBlockQueueS - auto-reset event // for signals -hevBlockQueueB - manual-reset even // for broadcasts -mtxExternal - mutex or CS -mtxUnblockLock - mutex or CS -bBroadcast - int -nWaitersGone - int -nWaitersBlocked - int -nWaitersToUnblock - int - -wait( timeout ) { - - [auto: register int result ] // error checking omitted - [auto: register int bWasBroadcast ] - [auto: register int nSignalsWasLeft ] - - wait( hevBlockLock,INFINITE ); - nWaitersBlocked++; - set_event( hevBlockLock ); - - unlock( mtxExternal ); - bTimedOut = waitformultiple( hevBlockQueueS,hevBlockQueueB,timeout,ONE ); - - lock( mtxUnblockLock ); - if ( 0 != (SignalsWasLeft = nWaitersToUnblock) ) { - if ( bTimeout ) { // timeout (or canceled) - if ( 0 != nWaitersBlocked ) { - nWaitersBlocked--; - nSignalsWasLeft = 0; // do not unblock next waiter -below (already unblocked) - } - else if ( !bBroadcast ) { - wait( hevBlockQueueS,INFINITE ); // better now than spurious -later - } - } - if ( 0 == --nWaitersToUnblock ) { - if ( 0 != nWaitersBlocked ) { - if ( bBroadcast ) { - reset_event( hevBlockQueueB ); - bBroadcast = false; - } - set_event( hevBlockLock ); // open the gate - nSignalsWasLeft = 0; // do not open the gate below -again - } - else if ( false != (bWasBroadcast = bBroadcast) ) { - bBroadcast = false; - } - } - else { - bWasBroadcast = bBroadcast; - } - } - else if ( INT_MAX/2 == ++nWaitersGone ) { // timeout/canceled or spurious -event :-) - wait( hevBlockLock,INFINITE ); - nWaitersBlocked -= nWaitersGone; // something is going on here - -test of timeouts? :-) - set_event( hevBlockLock ); - nWaitersGone = 0; - } - unlock( mtxUnblockLock ); - - if ( 1 == nSignalsWasLeft ) { - if ( bWasBroadcast ) { - reset_event( hevBlockQueueB ); - } - set_event( hevBlockLock ); // open the gate - } - else if ( 0 != nSignalsWasLeft && !bWasBroadcast ) { - set_event( hevBlockQueueS ); // unblock next waiter - } - - lock( mtxExternal ); - - return ( bTimedOut ) ? ETIMEOUT : 0; -} - -signal(bAll) { - - [auto: register int result ] - [auto: register HANDLE hevBlockQueue ] - - lock( mtxUnblockLock ); - - if ( 0 != nWaitersToUnblock ) { // the gate is closed!!! - if ( 0 == nWaitersBlocked ) { // NO-OP - return unlock( mtxUnblockLock ); - } - if (bAll) { - nWaitersToUnblock += nWaitersBlocked; - nWaitersBlocked = 0; - bBroadcast = true; - hevBlockQueue = hevBlockQueueB; - } - else { - nWaitersToUnblock++; - nWaitersBlocked--; - return unlock( mtxUnblockLock ); - } - } - else if ( nWaitersBlocked > nWaitersGone ) { // HARMLESS RACE CONDITION! - wait( hevBlockLock,INFINITE ); // close the gate - if ( 0 != nWaitersGone ) { - nWaitersBlocked -= nWaitersGone; - nWaitersGone = 0; - } - if (bAll) { - nWaitersToUnblock = nWaitersBlocked; - nWaitersBlocked = 0; - bBroadcast = true; - hevBlockQueue = hevBlockQueueB; - } - else { - nWaitersToUnblock = 1; - nWaitersBlocked--; - hevBlockQueue = hevBlockQueueS; - } - } - else { // NO-OP - return unlock( mtxUnblockLock ); - } - - unlock( mtxUnblockLock ); - set_event( hevBlockQueue ); - return result; -} - - ----------------------------------------------------------------------------- - -Subject: RE: FYI/comp.programming.threads/Re: pthread_cond_* implementatio - n questions -Date: Mon, 26 Feb 2001 22:20:12 -0600 -From: Louis Thomas <lthomas@arbitrade.com> -To: "'TEREKHOV@de.ibm.com'" <TEREKHOV@de.ibm.com> -CC: rpj@ise.canberra.edu.au, Thomas Pfaff <tpfaff@gmx.net>, - Nanbor Wang - <nanbor@cs.wustl.edu> - -Sorry all. Busy week. - -> this insures the fairness -> which POSIX does not (e.g. two subsequent broadcasts - the gate does -insure -> that first wave waiters will start the race for the mutex before waiters -> from the second wave - Linux pthreads process/unblock both waves -> concurrently...) - -I'm not sure how we are any more fair about this than Linux. We certainly -don't guarantee that the threads released by the first broadcast will get -the external mutex before the threads of the second wave. In fact, it is -possible that those threads will never get the external mutex if there is -enough contention for it. - -> e.g. i was thinking about implementation with a pool of -> N semaphores/counters [...] - -I considered that too. The problem is as you mentioned in a). You really -need to assign threads to semaphores once you know how you want to wake them -up, not when they first begin waiting which is the only time you can assign -them. - -> well, i am not quite sure that i've fully understood your scenario, - -Hmm. Well, it think it's an important example, so I'll try again. First, we -have thread A which we KNOW is waiting on a condition. As soon as it becomes -unblocked for any reason, we will know because it will set a flag. Since the -flag is not set, we are 100% confident that thread A is waiting on the -condition. We have another thread, thread B, which has acquired the mutex -and is about to wait on the condition. Thus it is pretty clear that at any -point, either just A is waiting, or A and B are waiting. Now thread C comes -along. C is about to do a broadcast on the condition. A broadcast is -guaranteed to unblock all threads currently waiting on a condition, right? -Again, we said that either just A is waiting, or A and B are both waiting. -So, when C does its broadcast, depending upon whether B has started waiting -or not, thread C will unblock A or unblock A and B. Either way, C must -unblock A, right? - -Now, you said anything that happens is correct so long as a) "a signal is -not lost between unlocking the mutex and waiting on the condition" and b) "a -thread must not steal a signal it sent", correct? Requirement b) is easy to -satisfy: in this scenario, thread C will never wait on the condition, so it -won't steal any signals. Requirement a) is not hard either. The only way we -could fail to meet requirement a) in this scenario is if thread B was -started waiting but didn't wake up because a signal was lost. This will not -happen. - -Now, here is what happens. Assume thread C beats thread B. Thread C looks to -see how many threads are waiting on the condition. Thread C sees just one -thread, thread A, waiting. It does a broadcast waking up just one thread -because just one thread is waiting. Next, before A can become unblocked, -thread B begins waiting. Now there are two threads waiting, but only one -will be unblocked. Suppose B wins. B will become unblocked. A will not -become unblocked, because C only unblocked one thread (sema_post cond, 1). -So at the end, B finishes and A remains blocked. - -We have met both of your requirements, so by your rules, this is an -acceptable outcome. However, I think that the spec says this is an -unacceptable outcome! We know for certain that A was waiting and that C did -a broadcast, but A did not become unblocked! Yet, the spec says that a -broadcast wakes up all waiting threads. This did not happen. Do you agree -that this shows your rules are not strict enough? - -> and what about N2? :) this one does allow almost everything. - -Don't get me started about rule #2. I'll NEVER advocate an algorithm that -uses rule 2 as an excuse to suck! - -> but it is done (decrement)under mutex protection - this is not a subject -> of a race condition. - -You are correct. My mistake. - -> i would remove "_bTimedOut=false".. after all, it was a real timeout.. - -I disagree. A thread that can't successfully retract its waiter status can't -really have timed out. If a thread can't return without executing extra code -to deal with the fact that someone tried to unblock it, I think it is a poor -idea to pretend we -didn't realize someone was trying to signal us. After all, a signal is more -important than a time out. - -> when nSignaled != 0, it is possible to update nWaiters (--) and do not -> touch nGone - -I realize this, but I was thinking that writing it the other ways saves -another if statement. - -> adjust only if nGone != 0 and save one cache memory write - probably much -slower than 'if' - -Hmm. You are probably right. - -> well, in a strange (e.g. timeout test) program you may (theoretically) -> have an overflow of nWaiters/nGone counters (with waiters repeatedly -timing -> out and no signals at all). - -Also true. Not only that, but you also have the possibility that one could -overflow the number of waiters as well! However, considering the limit you -have chosen for nWaitersGone, I suppose it is unlikely that anyone would be -able to get INT_MAX/2 threads waiting on a single condition. :) - -Analysis of 8a: - -It looks correct to me. - -What are IPC semaphores? - -In the line where you state, "else if ( nWaitersBlocked > nWaitersGone ) { -// HARMLESS RACE CONDITION!" there is no race condition for nWaitersGone -because nWaitersGone is never modified without holding mtxUnblockLock. You -are correct that there is a harmless race on nWaitersBlocked, which can -increase and make the condition become true just after we check it. If this -happens, we interpret it as the wait starting after the signal. - -I like your optimization of this. You could improve Alg. 6 as follows: ----------- Algorithm 6b ---------- -signal(bAll) { - _nSig=0 - lock counters - // this is safe because nWaiting can only be decremented by a thread that - // owns counters and nGone can only be changed by a thread that owns -counters. - if (nWaiting>nGone) { - if (0==nSignaled) { - sema_wait gate // close gate if not already closed - } - if (nGone>0) { - nWaiting-=nGone - nGone=0 - } - _nSig=bAll?nWaiting:1 - nSignaled+=_nSig - nWaiting-=_nSig - } - unlock counters - if (0!=_nSig) { - sema_post queue, _nSig - } -} ----------- ---------- ---------- -I guess this wouldn't apply to Alg 8a because nWaitersGone changes meanings -depending upon whether the gate is open or closed. - -In the loop "while ( nWaitersWasGone-- ) {" you do a sema_wait on -semBlockLock. Perhaps waiting on semBlockQueue would be a better idea. - -What have you gained by making the last thread to be signaled do the waits -for all the timed out threads, besides added complexity? It took me a long -time to figure out what your objective was with this, to realize you were -using nWaitersGone to mean two different things, and to verify that you -hadn't introduced any bug by doing this. Even now I'm not 100% sure. - -What has all this playing about with nWaitersGone really gained us besides a -lot of complexity (it is much harder to verify that this solution is -correct), execution overhead (we now have a lot more if statements to -evaluate), and space overhead (more space for the extra code, and another -integer in our data)? We did manage to save a lock/unlock pair in an -uncommon case (when a time out occurs) at the above mentioned expenses in -the common cases. - -As for 8b, c, and d, they look ok though I haven't studied them thoroughly. -What would you use them for? - - Later, - -Louis! :) - ------------------------------------------------------------------------------ - -Subject: RE: FYI/comp.programming.threads/Re: pthread_cond_* implementatio - n questions -Date: Tue, 27 Feb 2001 15:51:28 +0100 -From: TEREKHOV@de.ibm.com -To: Louis Thomas <lthomas@arbitrade.com> -CC: rpj@ise.canberra.edu.au, Thomas Pfaff <tpfaff@gmx.net>, - Nanbor Wang <nanbor@cs.wustl.edu> - -Hi Louis, - ->> that first wave waiters will start the race for the mutex before waiters ->> from the second wave - Linux pthreads process/unblock both waves ->> concurrently...) -> ->I'm not sure how we are any more fair about this than Linux. We certainly ->don't guarantee that the threads released by the first broadcast will get ->the external mutex before the threads of the second wave. In fact, it is ->possible that those threads will never get the external mutex if there is ->enough contention for it. - -correct. but gate is nevertheless more fair than Linux because of the -barrier it establishes between two races (1st and 2nd wave waiters) for -the mutex which under 'normal' circumstances (e.g. all threads of equal -priorities,..) will 'probably' result in fair behaviour with respect to -mutex ownership. - ->> well, i am not quite sure that i've fully understood your scenario, -> ->Hmm. Well, it think it's an important example, so I'll try again. ... - -ok. now i seem to understand this example. well, now it seems to me -that the only meaningful rule is just: - -a) "a signal is not lost between unlocking the mutex and waiting on the -condition" - -and that the rule - -b) "a thread must not steal a signal it sent" - -is not needed at all because a thread which violates b) also violates a). - -i'll try to explain.. - -i think that the most important thing is how POSIX defines waiter's -visibility: - -"if another thread is able to acquire the mutex after the about-to-block -thread -has released it, then a subsequent call to pthread_cond_signal() or -pthread_cond_broadcast() in that thread behaves as if it were issued after -the about-to-block thread has blocked. " - -my understanding is the following: - -1) there is no guarantees whatsoever with respect to whether -signal/broadcast -will actually unblock any 'waiter' if it is done w/o acquiring the mutex -first -(note that a thread may release it before signal/broadcast - it does not -matter). - -2) it is guaranteed that waiters become 'visible' - eligible for unblock as -soon -as signalling thread acquires the mutex (but not before!!) - -so.. - ->So, when C does its broadcast, depending upon whether B has started -waiting ->or not, thread C will unblock A or unblock A and B. Either way, C must ->unblock A, right? - -right. but only if C did acquire the mutex prior to broadcast (it may -release it before broadcast as well). - -implementation will violate waiters visibility rule (signal will become -lost) -if C will not unblock A. - ->Now, here is what happens. Assume thread C beats thread B. Thread C looks -to ->see how many threads are waiting on the condition. Thread C sees just one ->thread, thread A, waiting. It does a broadcast waking up just one thread ->because just one thread is waiting. Next, before A can become unblocked, ->thread B begins waiting. Now there are two threads waiting, but only one ->will be unblocked. Suppose B wins. B will become unblocked. A will not ->become unblocked, because C only unblocked one thread (sema_post cond, 1). ->So at the end, B finishes and A remains blocked. - -thread C did acquire the mutex ("Thread C sees just one thread, thread A, -waiting"). beginning from that moment it is guaranteed that subsequent -broadcast will unblock A. Otherwise we will have a lost signal with respect -to A. I do think that it does not matter whether the signal was physically -(completely) lost or was just stolen by another thread (B) - in both cases -it was simply lost with respect to A. - ->..Do you agree that this shows your rules are not strict enough? - -probably the opposite.. :-) i think that it shows that the only meaningful -rule is - -a) "a signal is not lost between unlocking the mutex and waiting on the -condition" - -with clarification of waiters visibility as defined by POSIX above. - ->> i would remove "_bTimedOut=false".. after all, it was a real timeout.. -> ->I disagree. A thread that can't successfully retract its waiter status -can't ->really have timed out. If a thread can't return without executing extra -code ->to deal with the fact that someone tried to unblock it, I think it is a -poor ->idea to pretend we ->didn't realize someone was trying to signal us. After all, a signal is -more ->important than a time out. - -a) POSIX does allow timed out thread to consume a signal (cancelled is -not). -b) ETIMEDOUT status just says that: "The time specified by abstime to -pthread_cond_timedwait() has passed." -c) it seem to me that hiding timeouts would violate "The -pthread_cond_timedwait() -function is the same as pthread_cond_wait() except that an error is -returned if -the absolute time specified by abstime passes (that is, system time equals -or -exceeds abstime) before the condition cond is signaled or broadcasted" -because -the abs. time did really pass before cond was signaled (waiter was -released via semaphore). however, if it really matters, i could imaging -that we -can save an abs. time of signal/broadcast and compare it with timeout after -unblock to find out whether it was a 'real' timeout or not. absent this -check -i do think that hiding timeouts would result in technical violation of -specification.. but i think that this check is not important and we can -simply -trust timeout error code provided by wait since we are not trying to make -'hard' realtime implementation. - ->What are IPC semaphores? - -<sys/sem.h> -int semctl(int, int, int, ...); -int semget(key_t, int, int); -int semop(int, struct sembuf *, size_t); - -they support adjustment of semaphore counter (semvalue) -in one single call - imaging Win32 ReleaseSemaphore( hsem,-N ) - ->In the line where you state, "else if ( nWaitersBlocked > nWaitersGone ) { ->// HARMLESS RACE CONDITION!" there is no race condition for nWaitersGone ->because nWaitersGone is never modified without holding mtxUnblockLock. You ->are correct that there is a harmless race on nWaitersBlocked, which can ->increase and make the condition become true just after we check it. If -this ->happens, we interpret it as the wait starting after the signal. - -well, the reason why i've asked on comp.programming.threads whether this -race -condition is harmless or not is that in order to be harmless it should not -violate the waiters visibility rule (see above). Fortunately, we increment -the counter under protection of external mutex.. so that any (signalling) -thread which will acquire the mutex next, should see the updated counter -(in signal) according to POSIX memory visibility rules and mutexes -(memory barriers). But i am not so sure how it actually works on -Win32/INTEL -which does not explicitly define any memory visibility rules :( - ->I like your optimization of this. You could improve Alg. 6 as follows: ->---------- Algorithm 6b ---------- ->signal(bAll) { -> _nSig=0 -> lock counters -> // this is safe because nWaiting can only be decremented by a thread -that -> // owns counters and nGone can only be changed by a thread that owns ->counters. -> if (nWaiting>nGone) { -> if (0==nSignaled) { -> sema_wait gate // close gate if not already closed -> } -> if (nGone>0) { -> nWaiting-=nGone -> nGone=0 -> } -> _nSig=bAll?nWaiting:1 -> nSignaled+=_nSig -> nWaiting-=_nSig -> } -> unlock counters -> if (0!=_nSig) { -> sema_post queue, _nSig -> } ->} ->---------- ---------- ---------- ->I guess this wouldn't apply to Alg 8a because nWaitersGone changes -meanings ->depending upon whether the gate is open or closed. - -agree. - ->In the loop "while ( nWaitersWasGone-- ) {" you do a sema_wait on ->semBlockLock. Perhaps waiting on semBlockQueue would be a better idea. - -you are correct. my mistake. - ->What have you gained by making the last thread to be signaled do the waits ->for all the timed out threads, besides added complexity? It took me a long ->time to figure out what your objective was with this, to realize you were ->using nWaitersGone to mean two different things, and to verify that you ->hadn't introduced any bug by doing this. Even now I'm not 100% sure. -> ->What has all this playing about with nWaitersGone really gained us besides -a ->lot of complexity (it is much harder to verify that this solution is ->correct), execution overhead (we now have a lot more if statements to ->evaluate), and space overhead (more space for the extra code, and another ->integer in our data)? We did manage to save a lock/unlock pair in an ->uncommon case (when a time out occurs) at the above mentioned expenses in ->the common cases. - -well, please consider the following: - -1) with multiple waiters unblocked (but some timed out) the trick with -counter -seem to ensure potentially higher level of concurrency by not delaying -most of unblocked waiters for semaphore cleanup - only the last one -will be delayed but all others would already contend/acquire/release -the external mutex - the critical section protected by mtxUnblockLock is -made smaller (increment + couple of IFs is faster than system/kernel call) -which i think is good in general. however, you are right, this is done -at expense of 'normal' waiters.. - -2) some semaphore APIs (e.g. POSIX IPC sems) do allow to adjust the -semaphore counter in one call => less system/kernel calls.. imagine: - -if ( 1 == nSignalsWasLeft ) { - if ( 0 != nWaitersWasGone ) { - ReleaseSemaphore( semBlockQueue,-nWaitersWasGone ); // better now -than spurious later - } - sem_post( semBlockLock ); // open the gate - } - -3) even on win32 a single thread doing multiple cleanup calls (to wait) -will probably result in faster execution (because of processor caching) -than multiple threads each doing a single call to wait. - ->As for 8b, c, and d, they look ok though I haven't studied them -thoroughly. ->What would you use them for? - -8b) for semaphores which do not allow to unblock multiple waiters -in a single call to post/release (e.g. POSIX realtime semaphores - -<semaphore.h>) - -8c/8d) for WinCE prior to 3.0 (WinCE 3.0 does have semaphores) - -ok. so, which one is the 'final' algorithm(s) which we should use in -pthreads-win32?? - -regards, -alexander. - ----------------------------------------------------------------------------- - -Louis Thomas <lthomas@arbitrade.com> on 02/27/2001 05:20:12 AM - -Please respond to Louis Thomas <lthomas@arbitrade.com> - -To: Alexander Terekhov/Germany/IBM@IBMDE -cc: rpj@ise.canberra.edu.au, Thomas Pfaff <tpfaff@gmx.net>, Nanbor Wang - <nanbor@cs.wustl.edu> -Subject: RE: FYI/comp.programming.threads/Re: pthread_cond_* implementatio - n questions - -Sorry all. Busy week. - -> this insures the fairness -> which POSIX does not (e.g. two subsequent broadcasts - the gate does -insure -> that first wave waiters will start the race for the mutex before waiters -> from the second wave - Linux pthreads process/unblock both waves -> concurrently...) - -I'm not sure how we are any more fair about this than Linux. We certainly -don't guarantee that the threads released by the first broadcast will get -the external mutex before the threads of the second wave. In fact, it is -possible that those threads will never get the external mutex if there is -enough contention for it. - -> e.g. i was thinking about implementation with a pool of -> N semaphores/counters [...] - -I considered that too. The problem is as you mentioned in a). You really -need to assign threads to semaphores once you know how you want to wake -them -up, not when they first begin waiting which is the only time you can assign -them. - -> well, i am not quite sure that i've fully understood your scenario, - -Hmm. Well, it think it's an important example, so I'll try again. First, we -have thread A which we KNOW is waiting on a condition. As soon as it -becomes -unblocked for any reason, we will know because it will set a flag. Since -the -flag is not set, we are 100% confident that thread A is waiting on the -condition. We have another thread, thread B, which has acquired the mutex -and is about to wait on the condition. Thus it is pretty clear that at any -point, either just A is waiting, or A and B are waiting. Now thread C comes -along. C is about to do a broadcast on the condition. A broadcast is -guaranteed to unblock all threads currently waiting on a condition, right? -Again, we said that either just A is waiting, or A and B are both waiting. -So, when C does its broadcast, depending upon whether B has started waiting -or not, thread C will unblock A or unblock A and B. Either way, C must -unblock A, right? - -Now, you said anything that happens is correct so long as a) "a signal is -not lost between unlocking the mutex and waiting on the condition" and b) -"a -thread must not steal a signal it sent", correct? Requirement b) is easy to -satisfy: in this scenario, thread C will never wait on the condition, so it -won't steal any signals. Requirement a) is not hard either. The only way -we -could fail to meet requirement a) in this scenario is if thread B was -started waiting but didn't wake up because a signal was lost. This will not -happen. - -Now, here is what happens. Assume thread C beats thread B. Thread C looks -to -see how many threads are waiting on the condition. Thread C sees just one -thread, thread A, waiting. It does a broadcast waking up just one thread -because just one thread is waiting. Next, before A can become unblocked, -thread B begins waiting. Now there are two threads waiting, but only one -will be unblocked. Suppose B wins. B will become unblocked. A will not -become unblocked, because C only unblocked one thread (sema_post cond, 1). -So at the end, B finishes and A remains blocked. - -We have met both of your requirements, so by your rules, this is an -acceptable outcome. However, I think that the spec says this is an -unacceptable outcome! We know for certain that A was waiting and that C did -a broadcast, but A did not become unblocked! Yet, the spec says that a -broadcast wakes up all waiting threads. This did not happen. Do you agree -that this shows your rules are not strict enough? - -> and what about N2? :) this one does allow almost everything. - -Don't get me started about rule #2. I'll NEVER advocate an algorithm that -uses rule 2 as an excuse to suck! - -> but it is done (decrement)under mutex protection - this is not a subject -> of a race condition. - -You are correct. My mistake. - -> i would remove "_bTimedOut=false".. after all, it was a real timeout.. - -I disagree. A thread that can't successfully retract its waiter status -can't -really have timed out. If a thread can't return without executing extra -code -to deal with the fact that someone tried to unblock it, I think it is a -poor -idea to pretend we -didn't realize someone was trying to signal us. After all, a signal is more -important than a time out. - -> when nSignaled != 0, it is possible to update nWaiters (--) and do not -> touch nGone - -I realize this, but I was thinking that writing it the other ways saves -another if statement. - -> adjust only if nGone != 0 and save one cache memory write - probably much -slower than 'if' - -Hmm. You are probably right. - -> well, in a strange (e.g. timeout test) program you may (theoretically) -> have an overflow of nWaiters/nGone counters (with waiters repeatedly -timing -> out and no signals at all). - -Also true. Not only that, but you also have the possibility that one could -overflow the number of waiters as well! However, considering the limit you -have chosen for nWaitersGone, I suppose it is unlikely that anyone would be -able to get INT_MAX/2 threads waiting on a single condition. :) - -Analysis of 8a: - -It looks correct to me. - -What are IPC semaphores? - -In the line where you state, "else if ( nWaitersBlocked > nWaitersGone ) { -// HARMLESS RACE CONDITION!" there is no race condition for nWaitersGone -because nWaitersGone is never modified without holding mtxUnblockLock. You -are correct that there is a harmless race on nWaitersBlocked, which can -increase and make the condition become true just after we check it. If this -happens, we interpret it as the wait starting after the signal. - -I like your optimization of this. You could improve Alg. 6 as follows: ----------- Algorithm 6b ---------- -signal(bAll) { - _nSig=0 - lock counters - // this is safe because nWaiting can only be decremented by a thread that - // owns counters and nGone can only be changed by a thread that owns -counters. - if (nWaiting>nGone) { - if (0==nSignaled) { - sema_wait gate // close gate if not already closed - } - if (nGone>0) { - nWaiting-=nGone - nGone=0 - } - _nSig=bAll?nWaiting:1 - nSignaled+=_nSig - nWaiting-=_nSig - } - unlock counters - if (0!=_nSig) { - sema_post queue, _nSig - } -} ----------- ---------- ---------- -I guess this wouldn't apply to Alg 8a because nWaitersGone changes meanings -depending upon whether the gate is open or closed. - -In the loop "while ( nWaitersWasGone-- ) {" you do a sema_wait on -semBlockLock. Perhaps waiting on semBlockQueue would be a better idea. - -What have you gained by making the last thread to be signaled do the waits -for all the timed out threads, besides added complexity? It took me a long -time to figure out what your objective was with this, to realize you were -using nWaitersGone to mean two different things, and to verify that you -hadn't introduced any bug by doing this. Even now I'm not 100% sure. - -What has all this playing about with nWaitersGone really gained us besides -a -lot of complexity (it is much harder to verify that this solution is -correct), execution overhead (we now have a lot more if statements to -evaluate), and space overhead (more space for the extra code, and another -integer in our data)? We did manage to save a lock/unlock pair in an -uncommon case (when a time out occurs) at the above mentioned expenses in -the common cases. - -As for 8b, c, and d, they look ok though I haven't studied them thoroughly. -What would you use them for? - - Later, - -Louis! :) - diff --git a/platform/win32/msvc/external/pthreads.2/README.NONPORTABLE b/platform/win32/msvc/external/pthreads.2/README.NONPORTABLE deleted file mode 100644 index 0821104d89d..00000000000 --- a/platform/win32/msvc/external/pthreads.2/README.NONPORTABLE +++ /dev/null @@ -1,783 +0,0 @@ -This file documents non-portable functions and other issues. - -Non-portable functions included in pthreads-win32 -------------------------------------------------- - -BOOL -pthread_win32_test_features_np(int mask) - - This routine allows an application to check which - run-time auto-detected features are available within - the library. - - The possible features are: - - PTW32_SYSTEM_INTERLOCKED_COMPARE_EXCHANGE - Return TRUE if the native version of - InterlockedCompareExchange() is being used. - This feature is not meaningful in recent - library versions as MSVC builds only support - system implemented ICE. Note that all Mingw - builds use inlined asm versions of all the - Interlocked routines. - PTW32_ALERTABLE_ASYNC_CANCEL - Return TRUE is the QueueUserAPCEx package - QUSEREX.DLL is available and the AlertDrv.sys - driver is loaded into Windows, providing - alertable (pre-emptive) asyncronous threads - cancelation. If this feature returns FALSE - then the default async cancel scheme is in - use, which cannot cancel blocked threads. - - Features may be Or'ed into the mask parameter, in which case - the routine returns TRUE if any of the Or'ed features would - return TRUE. At this stage it doesn't make sense to Or features - but it may some day. - - -void * -pthread_timechange_handler_np(void *) - - To improve tolerance against operator or time service - initiated system clock changes. - - This routine can be called by an application when it - receives a WM_TIMECHANGE message from the system. At - present it broadcasts all condition variables so that - waiting threads can wake up and re-evaluate their - conditions and restart their timed waits if required. - - It has the same return type and argument type as a - thread routine so that it may be called directly - through pthread_create(), i.e. as a separate thread. - - Parameters - - Although a parameter must be supplied, it is ignored. - The value NULL can be used. - - Return values - - It can return an error EAGAIN to indicate that not - all condition variables were broadcast for some reason. - Otherwise, 0 is returned. - - If run as a thread, the return value is returned - through pthread_join(). - - The return value should be cast to an integer. - - -HANDLE -pthread_getw32threadhandle_np(pthread_t thread); - - Returns the win32 thread handle that the POSIX - thread "thread" is running as. - - Applications can use the win32 handle to set - win32 specific attributes of the thread. - -DWORD -pthread_getw32threadid_np (pthread_t thread) - - Returns the Windows native thread ID that the POSIX - thread "thread" is running as. - - Only valid when the library is built where - ! (defined(__MINGW64__) || defined(__MINGW32__)) || defined (__MSVCRT__) || defined (__DMC__) - and otherwise returns 0. - - -int -pthread_mutexattr_setkind_np(pthread_mutexattr_t * attr, int kind) - -int -pthread_mutexattr_getkind_np(pthread_mutexattr_t * attr, int *kind) - - These two routines are included for Linux compatibility - and are direct equivalents to the standard routines - pthread_mutexattr_settype - pthread_mutexattr_gettype - - pthread_mutexattr_setkind_np accepts the following - mutex kinds: - PTHREAD_MUTEX_FAST_NP - PTHREAD_MUTEX_ERRORCHECK_NP - PTHREAD_MUTEX_RECURSIVE_NP - - These are really just equivalent to (respectively): - PTHREAD_MUTEX_NORMAL - PTHREAD_MUTEX_ERRORCHECK - PTHREAD_MUTEX_RECURSIVE - -int -pthread_delay_np (const struct timespec *interval); - - This routine causes a thread to delay execution for a specific period of time. - This period ends at the current time plus the specified interval. The routine - will not return before the end of the period is reached, but may return an - arbitrary amount of time after the period has gone by. This can be due to - system load, thread priorities, and system timer granularity. - - Specifying an interval of zero (0) seconds and zero (0) nanoseconds is - allowed and can be used to force the thread to give up the processor or to - deliver a pending cancelation request. - - This routine is a cancelation point. - - The timespec structure contains the following two fields: - - tv_sec is an integer number of seconds. - tv_nsec is an integer number of nanoseconds. - - Return Values - - If an error condition occurs, this routine returns an integer value - indicating the type of error. Possible return values are as follows: - - 0 Successful completion. - [EINVAL] The value specified by interval is invalid. - -int -pthread_num_processors_np (void) - - This routine (found on HPUX systems) returns the number of processors - in the system. This implementation actually returns the number of - processors available to the process, which can be a lower number - than the system's number, depending on the process's affinity mask. - -BOOL -pthread_win32_process_attach_np (void); - -BOOL -pthread_win32_process_detach_np (void); - -BOOL -pthread_win32_thread_attach_np (void); - -BOOL -pthread_win32_thread_detach_np (void); - - These functions contain the code normally run via dllMain - when the library is used as a dll but which need to be - called explicitly by an application when the library - is statically linked. As of version 2.9.0 of the library, static - builds using either MSC or GCC will call pthread_win32_process_* - automatically at application startup and exit respectively. - - Otherwise, you will need to call pthread_win32_process_attach_np() - before you can call any pthread routines when statically linking. - You should call pthread_win32_process_detach_np() before - exiting your application to clean up. - - pthread_win32_thread_attach_np() is currently a no-op, but - pthread_win32_thread_detach_np() is needed to clean up - the implicit pthread handle that is allocated to a Win32 thread if - it calls any pthreads routines. Call this routine when the - Win32 thread exits. - - Threads created through pthread_create() do not need to call - pthread_win32_thread_detach_np(). - - These functions invariably return TRUE except for - pthread_win32_process_attach_np() which will return FALSE - if pthreads-win32 initialisation fails. - -int -pthreadCancelableWait (HANDLE waitHandle); - -int -pthreadCancelableTimedWait (HANDLE waitHandle, DWORD timeout); - - These two functions provide hooks into the pthread_cancel - mechanism that will allow you to wait on a Windows handle - and make it a cancellation point. Both functions block - until either the given w32 handle is signaled, or - pthread_cancel has been called. It is implemented using - WaitForMultipleObjects on 'waitHandle' and a manually - reset w32 event used to implement pthread_cancel. - - -Non-portable issues -------------------- - -Thread priority - - POSIX defines a single contiguous range of numbers that determine a - thread's priority. Win32 defines priority classes and priority - levels relative to these classes. Classes are simply priority base - levels that the defined priority levels are relative to such that, - changing a process's priority class will change the priority of all - of it's threads, while the threads retain the same relativity to each - other. - - A Win32 system defines a single contiguous monotonic range of values - that define system priority levels, just like POSIX. However, Win32 - restricts individual threads to a subset of this range on a - per-process basis. - - The following table shows the base priority levels for combinations - of priority class and priority value in Win32. - - Process Priority Class Thread Priority Level - ----------------------------------------------------------------- - 1 IDLE_PRIORITY_CLASS THREAD_PRIORITY_IDLE - 1 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_IDLE - 1 NORMAL_PRIORITY_CLASS THREAD_PRIORITY_IDLE - 1 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_IDLE - 1 HIGH_PRIORITY_CLASS THREAD_PRIORITY_IDLE - 2 IDLE_PRIORITY_CLASS THREAD_PRIORITY_LOWEST - 3 IDLE_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL - 4 IDLE_PRIORITY_CLASS THREAD_PRIORITY_NORMAL - 4 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_LOWEST - 5 IDLE_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL - 5 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL - 5 Background NORMAL_PRIORITY_CLASS THREAD_PRIORITY_LOWEST - 6 IDLE_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST - 6 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_NORMAL - 6 Background NORMAL_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL - 7 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL - 7 Background NORMAL_PRIORITY_CLASS THREAD_PRIORITY_NORMAL - 7 Foreground NORMAL_PRIORITY_CLASS THREAD_PRIORITY_LOWEST - 8 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST - 8 NORMAL_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL - 8 Foreground NORMAL_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL - 8 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_LOWEST - 9 NORMAL_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST - 9 Foreground NORMAL_PRIORITY_CLASS THREAD_PRIORITY_NORMAL - 9 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL - 10 Foreground NORMAL_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL - 10 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_NORMAL - 11 Foreground NORMAL_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST - 11 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL - 11 HIGH_PRIORITY_CLASS THREAD_PRIORITY_LOWEST - 12 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST - 12 HIGH_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL - 13 HIGH_PRIORITY_CLASS THREAD_PRIORITY_NORMAL - 14 HIGH_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL - 15 HIGH_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST - 15 HIGH_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL - 15 IDLE_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL - 15 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL - 15 NORMAL_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL - 15 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL - 16 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_IDLE - 17 REALTIME_PRIORITY_CLASS -7 - 18 REALTIME_PRIORITY_CLASS -6 - 19 REALTIME_PRIORITY_CLASS -5 - 20 REALTIME_PRIORITY_CLASS -4 - 21 REALTIME_PRIORITY_CLASS -3 - 22 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_LOWEST - 23 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL - 24 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_NORMAL - 25 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL - 26 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST - 27 REALTIME_PRIORITY_CLASS 3 - 28 REALTIME_PRIORITY_CLASS 4 - 29 REALTIME_PRIORITY_CLASS 5 - 30 REALTIME_PRIORITY_CLASS 6 - 31 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL - - Windows NT: Values -7, -6, -5, -4, -3, 3, 4, 5, and 6 are not supported. - - - As you can see, the real priority levels available to any individual - Win32 thread are non-contiguous. - - An application using pthreads-win32 should not make assumptions about - the numbers used to represent thread priority levels, except that they - are monotonic between the values returned by sched_get_priority_min() - and sched_get_priority_max(). E.g. Windows 95, 98, NT, 2000, XP make - available a non-contiguous range of numbers between -15 and 15, while - at least one version of WinCE (3.0) defines the minimum priority - (THREAD_PRIORITY_LOWEST) as 5, and the maximum priority - (THREAD_PRIORITY_HIGHEST) as 1. - - Internally, pthreads-win32 maps any priority levels between - THREAD_PRIORITY_IDLE and THREAD_PRIORITY_LOWEST to THREAD_PRIORITY_LOWEST, - or between THREAD_PRIORITY_TIME_CRITICAL and THREAD_PRIORITY_HIGHEST to - THREAD_PRIORITY_HIGHEST. Currently, this also applies to - REALTIME_PRIORITY_CLASSi even if levels -7, -6, -5, -4, -3, 3, 4, 5, and 6 - are supported. - - If it wishes, a Win32 application using pthreads-win32 can use the Win32 - defined priority macros THREAD_PRIORITY_IDLE through - THREAD_PRIORITY_TIME_CRITICAL. - - -The opacity of the pthread_t datatype -------------------------------------- -and possible solutions for portable null/compare/hash, etc ----------------------------------------------------------- - -Because pthread_t is an opague datatype an implementation is permitted to define -pthread_t in any way it wishes. That includes defining some bits, if it is -scalar, or members, if it is an aggregate, to store information that may be -extra to the unique identifying value of the ID. As a result, pthread_t values -may not be directly comparable. - -If you want your code to be portable you must adhere to the following contraints: - -1) Don't assume it is a scalar data type, e.g. an integer or pointer value. There -are several other implementations where pthread_t is also a struct. See our FAQ -Question 11 for our reasons for defining pthread_t as a struct. - -2) You must not compare them using relational or equality operators. You must use -the API function pthread_equal() to test for equality. - -3) Never attempt to reference individual members. - - -The problem - -Certain applications would like to be able to access only the 'pure' pthread_t -id values, primarily to use as keys into data structures to manage threads or -thread-related data, but this is not possible in a maximally portable and -standards compliant way for current POSIX threads implementations. - -For implementations that define pthread_t as a scalar, programmers often employ -direct relational and equality operators on pthread_t. This code will break when -ported to an implementation that defines pthread_t as an aggregate type. - -For implementations that define pthread_t as an aggregate, e.g. a struct, -programmers can use memcmp etc., but then face the prospect that the struct may -include alignment padding bytes or bits as well as extra implementation-specific -members that are not part of the unique identifying value. - -[While this is not currently the case for pthreads-win32, opacity also -means that an implementation is free to change the definition, which should -generally only require that applications be recompiled and relinked, not -rewritten.] - - -Doesn't the compiler take care of padding? - -The C89 and later standards only effectively guarrantee element-by-element -equivalence following an assignment or pass by value of a struct or union, -therefore undefined areas of any two otherwise equivalent pthread_t instances -can still compare differently, e.g. attempting to compare two such pthread_t -variables byte-by-byte, e.g. memcmp(&t1, &t2, sizeof(pthread_t) may give an -incorrect result. In practice I'm reasonably confident that compilers routinely -also copy the padding bytes, mainly because assignment of unions would be far -too complicated otherwise. But it just isn't guarranteed by the standard. - -Illustration: - -We have two thread IDs t1 and t2 - -pthread_t t1, t2; - -In an application we create the threads and intend to store the thread IDs in an -ordered data structure (linked list, tree, etc) so we need to be able to compare -them in order to insert them initially and also to traverse. - -Suppose pthread_t contains undefined padding bits and our compiler copies our -pthread_t [struct] element-by-element, then for the assignment: - -pthread_t temp = t1; - -temp and t1 will be equivalent and correct but a byte-for-byte comparison such as -memcmp(&temp, &t1, sizeof(pthread_t)) == 0 may not return true as we expect because -the undefined bits may not have the same values in the two variable instances. - -Similarly if passing by value under the same conditions. - -If, on the other hand, the undefined bits are at least constant through every -assignment and pass-by-value then the byte-for-byte comparison -memcmp(&temp, &t1, sizeof(pthread_t)) == 0 will always return the expected result. -How can we force the behaviour we need? - - -Solutions - -Adding new functions to the standard API or as non-portable extentions is -the only reliable and portable way to provide the necessary operations. -Remember also that POSIX is not tied to the C language. The most common -functions that have been suggested are: - -pthread_null() -pthread_compare() -pthread_hash() - -A single more general purpose function could also be defined as a -basis for at least the last two of the above functions. - -First we need to list the freedoms and constraints with restpect -to pthread_t so that we can be sure our solution is compatible with the -standard. - -What is known or may be deduced from the standard: -1) pthread_t must be able to be passed by value, so it must be a single object. -2) from (1) it must be copyable so cannot embed thread-state information, locks -or other volatile objects required to manage the thread it associates with. -3) pthread_t may carry additional information, e.g. for debugging or to manage -itself. -4) there is an implicit requirement that the size of pthread_t is determinable -at compile-time and size-invariant, because it must be able to copy the object -(i.e. through assignment and pass-by-value). Such copies must be genuine -duplicates, not merely a copy of a pointer to a common instance such as -would be the case if pthread_t were defined as an array. - - -Suppose we define the following function: - -/* This function shall return it's argument */ -pthread_t* pthread_normalize(pthread_t* thread); - -For scalar or aggregate pthread_t types this function would simply zero any bits -within the pthread_t that don't uniquely identify the thread, including padding, -such that client code can return consistent results from operations done on the -result. If the additional bits are a pointer to an associate structure then -this function would ensure that the memory used to store that associate -structure does not leak. After normalization the following compare would be -valid and repeatable: - -memcmp(pthread_normalize(&t1),pthread_normalize(&t2),sizeof(pthread_t)) - -Note 1: such comparisons are intended merely to order and sort pthread_t values -and allow them to index various data structures. They are not intended to reveal -anything about the relationships between threads, like startup order. - -Note 2: the normalized pthread_t is also a valid pthread_t that uniquely -identifies the same thread. - -Advantages: -1) In most existing implementations this function would reduce to a no-op that -emits no additional instructions, i.e after in-lining or optimisation, or if -defined as a macro: -#define pthread_normalise(tptr) (tptr) - -2) This single function allows an application to portably derive -application-level versions of any of the other required functions. - -3) It is a generic function that could enable unanticipated uses. - -Disadvantages: -1) Less efficient than dedicated compare or hash functions for implementations -that include significant extra non-id elements in pthread_t. - -2) Still need to be concerned about padding if copying normalized pthread_t. -See the later section on defining pthread_t to neutralise padding issues. - -Generally a pthread_t may need to be normalized every time it is used, -which could have a significant impact. However, this is a design decision -for the implementor in a competitive environment. An implementation is free -to define a pthread_t in a way that minimises or eliminates padding or -renders this function a no-op. - -Hazards: -1) Pass-by-reference directly modifies 'thread' so the application must -synchronise access or ensure that the pointer refers to a copy. The alternative -of pass-by-value/return-by-value was considered but then this requires two copy -operations, disadvantaging implementations where this function is not a no-op -in terms of speed of execution. This function is intended to be used in high -frequency situations and needs to be efficient, or at least not unnecessarily -inefficient. The alternative also sits awkwardly with functions like memcmp. - -2) [Non-compliant] code that uses relational and equality operators on -arithmetic or pointer style pthread_t types would need to be rewritten, but it -should be rewritten anyway. - - -C implementation of null/compare/hash functions using pthread_normalize(): - -/* In pthread.h */ -pthread_t* pthread_normalize(pthread_t* thread); - -/* In user code */ -/* User-level bitclear function - clear bits in loc corresponding to mask */ -void* bitclear (void* loc, void* mask, size_t count); - -typedef unsigned int hash_t; - -/* User-level hash function */ -hash_t hash(void* ptr, size_t count); - -/* - * User-level pthr_null function - modifies the origin thread handle. - * The concept of a null pthread_t is highly implementation dependent - * and this design may be far from the mark. For example, in an - * implementation "null" may mean setting a special value inside one - * element of pthread_t to mean "INVALID". However, if that value was zero and - * formed part of the id component then we may get away with this design. - */ -pthread_t* pthr_null(pthread_t* tp) -{ - /* - * This should have the same effect as memset(tp, 0, sizeof(pthread_t)) - * We're just showing that we can do it. - */ - void* p = (void*) pthread_normalize(tp); - return (pthread_t*) bitclear(p, p, sizeof(pthread_t)); -} - -/* - * Safe user-level pthr_compare function - modifies temporary thread handle copies - */ -int pthr_compare_safe(pthread_t thread1, pthread_t thread2) -{ - return memcmp(pthread_normalize(&thread1), pthread_normalize(&thread2), sizeof(pthread_t)); -} - -/* - * Fast user-level pthr_compare function - modifies origin thread handles - */ -int pthr_compare_fast(pthread_t* thread1, pthread_t* thread2) -{ - return memcmp(pthread_normalize(&thread1), pthread_normalize(&thread2), sizeof(pthread_t)); -} - -/* - * Safe user-level pthr_hash function - modifies temporary thread handle copy - */ -hash_t pthr_hash_safe(pthread_t thread) -{ - return hash((void *) pthread_normalize(&thread), sizeof(pthread_t)); -} - -/* - * Fast user-level pthr_hash function - modifies origin thread handle - */ -hash_t pthr_hash_fast(pthread_t thread) -{ - return hash((void *) pthread_normalize(&thread), sizeof(pthread_t)); -} - -/* User-level bitclear function - modifies the origin array */ -void* bitclear(void* loc, void* mask, size_t count) -{ - int i; - for (i=0; i < count; i++) { - (unsigned char) *loc++ &= ~((unsigned char) *mask++); - } -} - -/* Donald Knuth hash */ -hash_t hash(void* str, size_t count) -{ - hash_t hash = (hash_t) count; - unsigned int i = 0; - - for(i = 0; i < len; str++, i++) - { - hash = ((hash << 5) ^ (hash >> 27)) ^ (*str); - } - return hash; -} - -/* Example of advantage point (3) - split a thread handle into its id and non-id values */ -pthread_t id = thread, non-id = thread; -bitclear((void*) &non-id, (void*) pthread_normalize(&id), sizeof(pthread_t)); - - -A pthread_t type change proposal to neutralise the effects of padding - -Even if pthread_nornalize() is available, padding is still a problem because -the standard only garrantees element-by-element equivalence through -copy operations (assignment and pass-by-value). So padding bit values can -still change randomly after calls to pthread_normalize(). - -[I suspect that most compilers take the easy path and always byte-copy anyway, -partly because it becomes too complex to do (e.g. unions that contain sub-aggregates) -but also because programmers can easily design their aggregates to minimise and -often eliminate padding]. - -How can we eliminate the problem of padding bytes in structs? Could -defining pthread_t as a union rather than a struct provide a solution? - -In fact, the Linux pthread.h defines most of it's pthread_*_t objects (but not -pthread_t itself) as unions, possibly for this and/or other reasons. We'll -borrow some element naming from there but the ideas themselves are well known -- the __align element used to force alignment of the union comes from K&R's -storage allocator example. - -/* Essentially our current pthread_t renamed */ -typedef struct { - struct thread_state_t * __p; - long __x; /* sequence counter */ -} thread_id_t; - -Ensuring that the last element in the above struct is a long ensures that the -overall struct size is a multiple of sizeof(long), so there should be no trailing -padding in this struct or the union we define below. -(Later we'll see that we can handle internal but not trailing padding.) - -/* New pthread_t */ -typedef union { - char __size[sizeof(thread_id_t)]; /* array as the first element */ - thread_id_t __tid; - long __align; /* Ensure that the union starts on long boundary */ -} pthread_t; - -This guarrantees that, during an assignment or pass-by-value, the compiler copies -every byte in our thread_id_t because the compiler guarrantees that the __size -array, which we have ensured is the equal-largest element in the union, retains -equivalence. - -This means that pthread_t values stored, assigned and passed by value will at least -carry the value of any undefined padding bytes along and therefore ensure that -those values remain consistent. Our comparisons will return consistent results and -our hashes of [zero initialised] pthread_t values will also return consistent -results. - -We have also removed the need for a pthread_null() function; we can initialise -at declaration time or easily create our own const pthread_t to use in assignments -later: - -const pthread_t null_tid = {0}; /* braces are required */ - -pthread_t t; -... -t = null_tid; - - -Note that we don't have to explicitly make use of the __size array at all. It's -there just to force the compiler behaviour we want. - - -Partial solutions without a pthread_normalize function - - -An application-level pthread_null and pthread_compare proposal -(and pthread_hash proposal by extention) - -In order to deal with the problem of scalar/aggregate pthread_t type disparity in -portable code I suggest using an old-fashioned union, e.g.: - -Contraints: -- there is no padding, or padding values are preserved through assignment and - pass-by-value (see above); -- there are no extra non-id values in the pthread_t. - - -Example 1: A null initialiser for pthread_t variables... - -typedef union { - unsigned char b[sizeof(pthread_t)]; - pthread_t t; -} init_t; - -const init_t initial = {0}; - -pthread_t tid = initial.t; /* init tid to all zeroes */ - - -Example 2: A comparison function for pthread_t values - -typedef union { - unsigned char b[sizeof(pthread_t)]; - pthread_t t; -} pthcmp_t; - -int pthcmp(pthread_t left, pthread_t right) -{ - /* - * Compare two pthread handles in a way that imposes a repeatable but arbitrary - * ordering on them. - * I.e. given the same set of pthread_t handles the ordering should be the same - * each time but the order has no particular meaning other than that. E.g. - * the ordering does not imply the thread start sequence, or any other - * relationship between threads. - * - * Return values are: - * 1 : left is greater than right - * 0 : left is equal to right - * -1 : left is less than right - */ - int i; - pthcmp_t L, R; - L.t = left; - R.t = right; - for (i = 0; i < sizeof(pthread_t); i++) - { - if (L.b[i] > R.b[i]) - return 1; - else if (L.b[i] < R.b[i]) - return -1; - } - return 0; -} - -It has been pointed out that the C99 standard allows for the possibility that -integer types also may include padding bits, which could invalidate the above -method. This addition to C99 was specifically included after it was pointed -out that there was one, presumably not particularly well known, architecture -that included a padding bit in it's 32 bit integer type. See section 6.2.6.2 -of both the standard and the rationale, specifically the paragraph starting at -line 16 on page 43 of the rationale. - - -An aside - -Certain compilers, e.g. gcc and one of the IBM compilers, include a feature -extention: provided the union contains a member of the same type as the -object then the object may be cast to the union itself. - -We could use this feature to speed up the pthrcmp() function from example 2 -above by casting rather than assigning the pthread_t arguments to the union, e.g.: - -int pthcmp(pthread_t left, pthread_t right) -{ - /* - * Compare two pthread handles in a way that imposes a repeatable but arbitrary - * ordering on them. - * I.e. given the same set of pthread_t handles the ordering should be the same - * each time but the order has no particular meaning other than that. E.g. - * the ordering does not imply the thread start sequence, or any other - * relationship between threads. - * - * Return values are: - * 1 : left is greater than right - * 0 : left is equal to right - * -1 : left is less than right - */ - int i; - for (i = 0; i < sizeof(pthread_t); i++) - { - if (((pthcmp_t)left).b[i] > ((pthcmp_t)right).b[i]) - return 1; - else if (((pthcmp_t)left).b[i] < ((pthcmp_t)right).b[i]) - return -1; - } - return 0; -} - - -Result thus far - -We can't remove undefined bits if they are there in pthread_t already, but we have -attempted to render them inert for comparison and hashing functions by making them -consistent through assignment, copy and pass-by-value. - -Note: Hashing pthread_t values requires that all pthread_t variables be initialised -to the same value (usually all zeros) before being assigned a proper thread ID, i.e. -to ensure that any padding bits are zero, or at least the same value for all -pthread_t. Since all pthread_t values are generated by the library in the first -instance this need not be an application-level operation. - - -Conclusion - -I've attempted to resolve the multiple issues of type opacity and the possible -presence of undefined bits and bytes in pthread_t values, which prevent -applications from comparing or hashing pthread handles. - -Two complimentary partial solutions have been proposed, one an application-level -scheme to handle both scalar and aggregate pthread_t types equally, plus a -definition of pthread_t itself that neutralises padding bits and bytes by -coercing semantics out of the compiler to eliminate variations in the values of -padding bits. - -I have not provided any solution to the problem of handling extra values embedded -in pthread_t, e.g. debugging or trap information that an implementation is entitled -to include. Therefore none of this replaces the portability and flexibility of API -functions but what functions are needed? The threads standard is unlikely to -include that can be implemented by a combination of existing features and more -generic functions (several references in the threads rationale suggest this. -Therefore I propose that the following function could replace the several functions -that have been suggested in conversations: - -pthread_t * pthread_normalize(pthread_t * handle); - -For most existing pthreads implementations this function, or macro, would reduce to -a no-op with zero call overhead. diff --git a/platform/win32/msvc/external/pthreads.2/README.Watcom b/platform/win32/msvc/external/pthreads.2/README.Watcom deleted file mode 100644 index 24955165fcc..00000000000 --- a/platform/win32/msvc/external/pthreads.2/README.Watcom +++ /dev/null @@ -1,62 +0,0 @@ -Watcom compiler notes -===================== - -Status ------- -Not yet usable. Although the library builds under Watcom it -substantially fails the test suite. - -There is a working Wmakefile for wmake for the library build. - -invoke as any of: -wmake -f Wmakefile clean WC -wmake -f Wmakefile clean WC-inlined -wmake -f Wmakefile clean WCE -wmake -f Wmakefile clean WCE-inlined - -These build pthreadWC.dll and pthreadWCE.dll. - -There is a working Wmakefile for wmake for the test suite. - -invoke as any of: -wmake -f Wmakefile clean WC -wmake -f Wmakefile clean WCX -wmake -f Wmakefile clean WCE -wmake -f Wmakefile clean WC-bench -wmake -f Wmakefile clean WCX-bench -wmake -f Wmakefile clean WCE-bench - - -Current known problems ----------------------- - -Library build: -The Watcom compiler uses a different default call convention to MS C or GNU C and so -applications are not compatible with pthreadVC.dll etc using pre 2003-10-14 versions -of pthread.h, sched.h, or semaphore.h. The cdecl attribute can be used on exposed -function prototypes to force compatibility with MS C built DLLs. - -However, there appear to be other incompatibilities. Errno.h, for example, defines -different values for the standard C and POSIX errors to those defined by the MS C -errno.h. It may be that references to Watcom's threads compatible 'errno' do set -and return translated numbers consistently, but I have not verified this. - -Watcom defines errno as a dereferenced pointer returned by the function -_get_errno_ptr(). This is similar to both the MS and GNU C environments for -multithreaded use. However, the Watcom version appears to have a number of problems: - -- different threads return the same pointer value. Compare with the MS and GNU C -versions which correctly return different values (since each thread must maintain -a thread specific errno value). - -- an errno value set within the DLL appears as zero in the application even though -both share the same thread. - -Therefore applications built using the Watcom compiler may need to use -a Watcom built version of the library (pthreadWC.dll). If this is the case, then -the cdecl function attribute should not be required. - -Application builds: -The test suite fails with the Watcom compiler. - -Test semaphore1.c fails for pthreadWC.dll because errno returns 0 instead of EAGAIN. diff --git a/platform/win32/msvc/external/pthreads.2/README.WinCE b/platform/win32/msvc/external/pthreads.2/README.WinCE deleted file mode 100644 index 1e064297122..00000000000 --- a/platform/win32/msvc/external/pthreads.2/README.WinCE +++ /dev/null @@ -1,6 +0,0 @@ -WinCE port ----------- -(See the file WinCE-PORT for a detailed explanation.) - -Make sure you define "WINCE" amongst your compiler flags (eg. -DWINCE). -The config.h file will define all the necessary defines for you. diff --git a/platform/win32/msvc/external/pthreads.2/TODO b/platform/win32/msvc/external/pthreads.2/TODO deleted file mode 100644 index f798e769e57..00000000000 --- a/platform/win32/msvc/external/pthreads.2/TODO +++ /dev/null @@ -1,7 +0,0 @@ - Things that aren't done yet - --------------------------- - -1. Implement PTHREAD_PROCESS_SHARED for semaphores, mutexes, - condition variables, read/write locks, barriers. - - diff --git a/platform/win32/msvc/external/pthreads.2/WinCE-PORT b/platform/win32/msvc/external/pthreads.2/WinCE-PORT deleted file mode 100644 index 16daa8d342b..00000000000 --- a/platform/win32/msvc/external/pthreads.2/WinCE-PORT +++ /dev/null @@ -1,222 +0,0 @@ -NOTE: The comments in this file relate to the original WinCE port -done by Tristan Savatier. The semaphore routines have been -completely rewritten since (2005-04-25), having been progressively -broken more and more by changes to the library. All of the semaphore -routines implemented for W9x/WNT/2000 and up should now also work for -WinCE. Also, pthread_mutex_timedlock should now work. - -Additional WinCE updates have been applied since this as well. Check the -ChangeLog file and search for WINCE for example. (2007-01-07) - -[RPJ] - ----- - -Some interesting news: - -I have been able to port pthread-win32 to Windows-CE, -which uses a subset of the WIN32 API. - -Since we intend to keep using pthread-win32 for our -Commercial WinCE developments, I would be very interested -if WinCE support could be added to the main source tree -of pthread-win32. Also, I would like to be credited -for this port :-) - -Now, here is the story... - -The port was performed and tested on a Casio "Cassiopeia" -PalmSize PC, which runs a MIP processor. The OS in the -Casio is WinCE version 2.11, but I used VC++ 6.0 with -the WinCE SDK for version 2.01. - -I used pthread-win32 to port a heavily multithreaded -commercial application (real-time MPEG video player) -from Linux to WinCE. I consider the changes that -I have done to be quite well tested. - -Overall the modifications that we had to do are minor. - -The WinCE port were based on pthread-win32-snap-1999-05-30, -but I am certain that they can be integrated very easiely -to more recent versions of the source. - -I have attached the modified source code: -pthread-win32-snap-1999-05-30-WinCE. - -All the changes do not affect the code compiled on non-WinCE -environment, provided that the macros used for WinCE compilation -are not used, of course! - -Overall description of the WinCE port: -------------------------------------- - -Most of the changes had to be made in areas where -pthread-win32 was relying on some standard-C librairies -(e.g. _ftime, calloc, errno), which are not available -on WinCE. We have changed the code to use native Win32 -API instead (or in some cases we made wrappers). - -The Win32 Semaphores are not available, -so we had to re-implement Semaphores using mutexes -and events. - -Limitations / known problems of the WinCE port: ----------------------------------------------- - -Not all the semaphore routines have been ported -(semaphores are defined by Posix but are not part -pf pthread). I have just done enough to make -pthread routines (that rely internally on semaphores) -work, like signal conditions. - -I noticed that the Win32 threads work slightly -differently on WinCE. This may have some impact -on some tricky parts of pthread-win32, but I have -not really investigated. For example, on WinCE, -the process is killed if the main thread falls off -the bottom (or calls pthread_exit), regardless -of the existence of any other detached thread. -Microsoft manual indicates that this behavior is -deffirent from that of Windows Threads for other -Win32 platforms. - - -Detailed descriptions of the changes and rationals: - ------------------------------------- -- use a new macro NEED_ERRNO. - -If defined, the code in errno.c that defines a reentrant errno -is compiled, regardless of _MT and _REENTRANT. - -Rational: On WinCE, there is no support for <stdio.h>, <errno.h> or -any other standard C library, i.e. even if _MT or _REENTRANT -is defined, errno is not provided by any library. NEED_ERRNO -must be set to compile for WinCE. - ------------------------------------- -- In implement.h, change #include <semaphore.h> to #include "semaphore.h". - -Rational: semaphore.h is provided in pthread-win32 and should not -be searched in the systems standard include. would not compile. -This change does not seem to create problems on "classic" win32 -(e.g. win95). - ------------------------------------- -- use a new macro NEED_CALLOC. - -If defined, some code in misc.c will provide a replacement -for calloc, which is not available on Win32. - - ------------------------------------- -- use a new macro NEED_CREATETHREAD. - -If defined, implement.h defines the macro _beginthreadex -and _endthreadex. - -Rational: On WinCE, the wrappers _beginthreadex and _endthreadex -do not exist. The native Win32 routines must be used. - ------------------------------------- -- in misc.c: - -#ifdef NEED_DUPLICATEHANDLE - /* DuplicateHandle does not exist on WinCE */ - self->threadH = GetCurrentThread(); -#else - if( !DuplicateHandle( - GetCurrentProcess(), - GetCurrentThread(), - GetCurrentProcess(), - &self->threadH, - 0, - FALSE, - DUPLICATE_SAME_ACCESS ) ) - { - free( self ); - return (NULL); - } -#endif - -Rational: On WinCE, DuplicateHandle does not exist. I could not understand -why DuplicateHandle must be used. It seems to me that getting the current -thread handle with GetCurrentThread() is sufficient, and it seems to work -perfectly fine, so maybe DuplicateHandle was just plain useless to begin with ? - ------------------------------------- -- In private.c, added some code at the beginning of ptw32_processInitialize -to detect the case of multiple calls to ptw32_processInitialize. - -Rational: In order to debug pthread-win32, it is easier to compile -it as a regular library (it is not possible to debug DLL's on winCE). -In that case, the application must call ptw32_rocessInitialize() -explicitely, to initialize pthread-win32. It is safer in this circumstance -to handle the case where ptw32_processInitialize() is called on -an already initialized library: - -int -ptw32_processInitialize (void) -{ - if (ptw32_processInitialized) { - /* - * ignore if already initialized. this is useful for - * programs that uses a non-dll pthread - * library. such programs must call ptw32_processInitialize() explicitely, - * since this initialization routine is automatically called only when - * the dll is loaded. - */ - return TRUE; - } - ptw32_processInitialized = TRUE; - [...] -} - ------------------------------------- -- in private.c, if macro NEED_FTIME is defined, add routines to -convert timespec_to_filetime and filetime_to_timespec, and modified -code that was using _ftime() to use Win32 API instead. - -Rational: _ftime is not available on WinCE. It is necessary to use -the native Win32 time API instead. - -Note: the routine timespec_to_filetime is provided as a convenience and a mean -to test that filetime_to_timespec works, but it is not used by the library. - ------------------------------------- -- in semaphore.c, if macro NEED_SEM is defined, add code for the routines -_increase_semaphore and _decrease_semaphore, and modify significantly -the implementation of the semaphores so that it does not use CreateSemaphore. - -Rational: CreateSemaphore is not available on WinCE. I had to re-implement -semaphores using mutexes and Events. - -Note: Only the semaphore routines that are used by pthread are implemented -(i.e. signal conditions rely on a subset of the semaphores routines, and -this subset works). Some other semaphore routines (e.g. sem_trywait) are -not yet supported on my WinCE port (and since I don't need them, I am not -planning to do anything about them). - ------------------------------------- -- in tsd.c, changed the code that defines TLS_OUT_OF_INDEXES - -/* TLS_OUT_OF_INDEXES not defined on WinCE */ -#ifndef TLS_OUT_OF_INDEXES -#define TLS_OUT_OF_INDEXES 0xffffffff -#endif - -Rational: TLS_OUT_OF_INDEXES is not defined in any standard include file -on WinCE. - ------------------------------------- -- added file need_errno.h - -Rational: On WinCE, there is no errno.h file. need_errno.h is just a -copy of windows version of errno.h, with minor modifications due to the fact -that some of the error codes are defined by the WinCE socket library. -In pthread.h, if NEED_ERRNO is defined, the file need_errno.h is -included (instead of <errno.h>). - - --- eof diff --git a/platform/win32/msvc/external/pthreads.2/attr.c b/platform/win32/msvc/external/pthreads.2/attr.c deleted file mode 100644 index 0d0b5600abf..00000000000 --- a/platform/win32/msvc/external/pthreads.2/attr.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * attr.c - * - * Description: - * This translation unit agregates operations on thread attribute objects. - * It is used for inline optimisation. - * - * The included modules are used separately when static executable sizes - * must be minimised. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -#include "pthread_attr_init.c" -#include "pthread_attr_destroy.c" -#include "pthread_attr_getdetachstate.c" -#include "pthread_attr_setdetachstate.c" -#include "pthread_attr_getstackaddr.c" -#include "pthread_attr_setstackaddr.c" -#include "pthread_attr_getstacksize.c" -#include "pthread_attr_setstacksize.c" -#include "pthread_attr_getscope.c" -#include "pthread_attr_setscope.c" diff --git a/platform/win32/msvc/external/pthreads.2/autostatic.c b/platform/win32/msvc/external/pthreads.2/autostatic.c deleted file mode 100644 index 185f25023b8..00000000000 --- a/platform/win32/msvc/external/pthreads.2/autostatic.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * autostatic.c - * - * Description: - * This translation unit implements static auto-init and auto-exit logic. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#if defined(PTW32_STATIC_LIB) - -#if defined(__MINGW64__) || defined(__MINGW32__) || defined(_MSC_VER) - -#include "pthread.h" -#include "implement.h" - -static void on_process_init(void) -{ - pthread_win32_process_attach_np (); -} - -static void on_process_exit(void) -{ - pthread_win32_thread_detach_np (); - pthread_win32_process_detach_np (); -} - -#if defined(__MINGW64__) || defined(__MINGW32__) -# define attribute_section(a) __attribute__((section(a))) -#elif defined(_MSC_VER) -# define attribute_section(a) __pragma(section(a,long,read)); __declspec(allocate(a)) -#endif - -attribute_section(".ctors") void *gcc_ctor = on_process_init; -attribute_section(".dtors") void *gcc_dtor = on_process_exit; - -attribute_section(".CRT$XCU") void *msc_ctor = on_process_init; -attribute_section(".CRT$XPU") void *msc_dtor = on_process_exit; - -#endif /* defined(__MINGW64__) || defined(__MINGW32__) || defined(_MSC_VER) */ - -#endif /* PTW32_STATIC_LIB */ diff --git a/platform/win32/msvc/external/pthreads.2/barrier.c b/platform/win32/msvc/external/pthreads.2/barrier.c deleted file mode 100644 index f95f4bde98e..00000000000 --- a/platform/win32/msvc/external/pthreads.2/barrier.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - * barrier.c - * - * Description: - * This translation unit implements barrier primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -#include "pthread_barrier_init.c" -#include "pthread_barrier_destroy.c" -#include "pthread_barrier_wait.c" -#include "pthread_barrierattr_init.c" -#include "pthread_barrierattr_destroy.c" -#include "pthread_barrierattr_getpshared.c" -#include "pthread_barrierattr_setpshared.c" diff --git a/platform/win32/msvc/external/pthreads.2/builddmc.bat b/platform/win32/msvc/external/pthreads.2/builddmc.bat deleted file mode 100644 index 4d4a548a32d..00000000000 --- a/platform/win32/msvc/external/pthreads.2/builddmc.bat +++ /dev/null @@ -1,9 +0,0 @@ -; Build the pthreads library with the Digital Mars Compiler -; -set DMCDIR=c:\dm - -; RELEASE -%DMCDIR%\bin\dmc -D_WIN32_WINNT -D_MT -DHAVE_PTW32_CONFIG_H -I.;c:\dm\include -o+all -WD pthread.c user32.lib+kernel32.lib+wsock32.lib -L/impl -L/NODEBUG -L/SU:WINDOWS - -; DEBUG -%DMCDIR%\bin\dmc -g -D_WIN32_WINNT -D_MT -DHAVE_PTW32_CONFIG_H -I.;c:\dm\include -o+all -WD pthread.c user32.lib+kernel32.lib+wsock32.lib -L/impl -L/SU:WINDOWS diff --git a/platform/win32/msvc/external/pthreads.2/cancel.c b/platform/win32/msvc/external/pthreads.2/cancel.c deleted file mode 100644 index 28cf4ebc5eb..00000000000 --- a/platform/win32/msvc/external/pthreads.2/cancel.c +++ /dev/null @@ -1,44 +0,0 @@ -/* - * cancel.c - * - * Description: - * POSIX thread functions related to thread cancellation. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -#include "pthread_setcancelstate.c" -#include "pthread_setcanceltype.c" -#include "pthread_testcancel.c" -#include "pthread_cancel.c" diff --git a/platform/win32/msvc/external/pthreads.2/cleanup.c b/platform/win32/msvc/external/pthreads.2/cleanup.c deleted file mode 100644 index 8f65c5ee5dc..00000000000 --- a/platform/win32/msvc/external/pthreads.2/cleanup.c +++ /dev/null @@ -1,148 +0,0 @@ -/* - * cleanup.c - * - * Description: - * This translation unit implements routines associated - * with cleaning up threads. - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -/* - * The functions ptw32_pop_cleanup and ptw32_push_cleanup - * are implemented here for applications written in C with no - * SEH or C++ destructor support. - */ - -ptw32_cleanup_t * -ptw32_pop_cleanup (int execute) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function pops the most recently pushed cleanup - * handler. If execute is nonzero, then the cleanup handler - * is executed if non-null. - * - * PARAMETERS - * execute - * if nonzero, execute the cleanup handler - * - * - * DESCRIPTION - * This function pops the most recently pushed cleanup - * handler. If execute is nonzero, then the cleanup handler - * is executed if non-null. - * NOTE: specify 'execute' as nonzero to avoid duplication - * of common cleanup code. - * - * RESULTS - * N/A - * - * ------------------------------------------------------ - */ -{ - ptw32_cleanup_t *cleanup; - - cleanup = (ptw32_cleanup_t *) pthread_getspecific (ptw32_cleanupKey); - - if (cleanup != NULL) - { - if (execute && (cleanup->routine != NULL)) - { - - (*cleanup->routine) (cleanup->arg); - - } - - pthread_setspecific (ptw32_cleanupKey, (void *) cleanup->prev); - - } - - return (cleanup); - -} /* ptw32_pop_cleanup */ - - -void -ptw32_push_cleanup (ptw32_cleanup_t * cleanup, - ptw32_cleanup_callback_t routine, void *arg) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function pushes a new cleanup handler onto the thread's stack - * of cleanup handlers. Each cleanup handler pushed onto the stack is - * popped and invoked with the argument 'arg' when - * a) the thread exits by calling 'pthread_exit', - * b) when the thread acts on a cancellation request, - * c) or when the thread calls pthread_cleanup_pop with a nonzero - * 'execute' argument - * - * PARAMETERS - * cleanup - * a pointer to an instance of pthread_cleanup_t, - * - * routine - * pointer to a cleanup handler, - * - * arg - * parameter to be passed to the cleanup handler - * - * - * DESCRIPTION - * This function pushes a new cleanup handler onto the thread's stack - * of cleanup handlers. Each cleanup handler pushed onto the stack is - * popped and invoked with the argument 'arg' when - * a) the thread exits by calling 'pthread_exit', - * b) when the thread acts on a cancellation request, - * c) or when the thrad calls pthread_cleanup_pop with a nonzero - * 'execute' argument - * NOTE: pthread_push_cleanup, ptw32_pop_cleanup must be paired - * in the same lexical scope. - * - * RESULTS - * pthread_cleanup_t * - * pointer to the previous cleanup - * - * ------------------------------------------------------ - */ -{ - cleanup->routine = routine; - cleanup->arg = arg; - - cleanup->prev = (ptw32_cleanup_t *) pthread_getspecific (ptw32_cleanupKey); - - pthread_setspecific (ptw32_cleanupKey, (void *) cleanup); - -} /* ptw32_push_cleanup */ diff --git a/platform/win32/msvc/external/pthreads.2/condvar.c b/platform/win32/msvc/external/pthreads.2/condvar.c deleted file mode 100644 index 449235c5adc..00000000000 --- a/platform/win32/msvc/external/pthreads.2/condvar.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * condvar.c - * - * Description: - * This translation unit implements condition variables and their primitives. - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - */ - -#include "pthread.h" -#include "implement.h" - -#include "ptw32_cond_check_need_init.c" -#include "pthread_condattr_init.c" -#include "pthread_condattr_destroy.c" -#include "pthread_condattr_getpshared.c" -#include "pthread_condattr_setpshared.c" -#include "pthread_cond_init.c" -#include "pthread_cond_destroy.c" -#include "pthread_cond_wait.c" -#include "pthread_cond_signal.c" diff --git a/platform/win32/msvc/external/pthreads.2/config.h b/platform/win32/msvc/external/pthreads.2/config.h deleted file mode 100644 index e231724e333..00000000000 --- a/platform/win32/msvc/external/pthreads.2/config.h +++ /dev/null @@ -1,153 +0,0 @@ -/* config.h */ - -#ifndef PTW32_CONFIG_H -#define PTW32_CONFIG_H - -/********************************************************************* - * Defaults: see target specific redefinitions below. - *********************************************************************/ - -/* We're building the pthreads-win32 library */ -#define PTW32_BUILD - -/* Do we know about the C type sigset_t? */ -#undef HAVE_SIGSET_T - -/* Define if you have the <signal.h> header file. */ -#undef HAVE_SIGNAL_H - -/* Define if you have the Borland TASM32 or compatible assembler. */ -#undef HAVE_TASM32 - -/* Define if you don't have Win32 DuplicateHandle. (eg. WinCE) */ -#undef NEED_DUPLICATEHANDLE - -/* Define if you don't have Win32 _beginthreadex. (eg. WinCE) */ -#undef NEED_CREATETHREAD - -/* Define if you don't have Win32 errno. (eg. WinCE) */ -#undef NEED_ERRNO - -/* Define if you don't have Win32 calloc. (eg. WinCE) */ -#undef NEED_CALLOC - -/* Define if you don't have Win32 ftime. (eg. WinCE) */ -#undef NEED_FTIME - -/* Define if you don't have Win32 semaphores. (eg. WinCE 2.1 or earlier) */ -#undef NEED_SEM - -/* Define if you need to convert string parameters to unicode. (eg. WinCE) */ -#undef NEED_UNICODE_CONSTS - -/* Define if your C (not C++) compiler supports "inline" functions. */ -#undef HAVE_C_INLINE - -/* Do we know about type mode_t? */ -#undef HAVE_MODE_T - -/* - * Define if GCC has atomic builtins, i.e. __sync_* intrinsics - * __sync_lock_* is implemented in mingw32 gcc 4.5.2 at least - * so this define does not turn those on or off. If you get an - * error from __sync_lock* then consider upgrading your gcc. - */ -#undef HAVE_GCC_ATOMIC_BUILTINS - -/* Define if you have the timespec struct */ -#undef HAVE_STRUCT_TIMESPEC - -/* Define if you don't have the GetProcessAffinityMask() */ -#undef NEED_PROCESS_AFFINITY_MASK - -/* Define if your version of Windows TLSGetValue() clears WSALastError - * and calling SetLastError() isn't enough restore it. You'll also need to - * link against wsock32.lib (or libwsock32.a for MinGW). - */ -#undef RETAIN_WSALASTERROR - -/* -# ---------------------------------------------------------------------- -# The library can be built with some alternative behaviour to better -# facilitate development of applications on Win32 that will be ported -# to other POSIX systems. -# -# Nothing described here will make the library non-compliant and strictly -# compliant applications will not be affected in any way, but -# applications that make assumptions that POSIX does not guarantee are -# not strictly compliant and may fail or misbehave with some settings. -# -# PTW32_THREAD_ID_REUSE_INCREMENT -# Purpose: -# POSIX says that applications should assume that thread IDs can be -# recycled. However, Solaris (and some other systems) use a [very large] -# sequence number as the thread ID, which provides virtual uniqueness. -# This provides a very high but finite level of safety for applications -# that are not meticulous in tracking thread lifecycles e.g. applications -# that call functions which target detached threads without some form of -# thread exit synchronisation. -# -# Usage: -# Set to any value in the range: 0 <= value < 2^wordsize. -# Set to 0 to emulate reusable thread ID behaviour like Linux or *BSD. -# Set to 1 for unique thread IDs like Solaris (this is the default). -# Set to some factor of 2^wordsize to emulate smaller word size types -# (i.e. will wrap sooner). This might be useful to emulate some embedded -# systems. -# -# define PTW32_THREAD_ID_REUSE_INCREMENT 0 -# -# ---------------------------------------------------------------------- - */ -#undef PTW32_THREAD_ID_REUSE_INCREMENT - - -/********************************************************************* - * Target specific groups - * - * If you find that these are incorrect or incomplete please report it - * to the pthreads-win32 maintainer. Thanks. - *********************************************************************/ -#if defined(WINCE) -#define NEED_DUPLICATEHANDLE -#define NEED_CREATETHREAD -#define NEED_ERRNO -#define NEED_CALLOC -#define NEED_FTIME -/* #define NEED_SEM */ -#define NEED_UNICODE_CONSTS -#define NEED_PROCESS_AFFINITY_MASK -/* This may not be needed */ -#define RETAIN_WSALASTERROR -#endif - -#if defined(_UWIN) -#define HAVE_MODE_T -#define HAVE_STRUCT_TIMESPEC -#endif - -#if defined(__GNUC__) -#define HAVE_C_INLINE -#endif - -#if defined(__MINGW64__) -#define HAVE_MODE_T -#define HAVE_STRUCT_TIMESPEC -#elif defined(__MINGW32__) -#define HAVE_MODE_T -#endif - -#if defined(__BORLANDC__) -#endif - -#if defined(__WATCOMC__) -#endif - -#if defined(__DMC__) -#define HAVE_SIGNAL_H -#define HAVE_C_INLINE -#endif - - - -#endif diff --git a/platform/win32/msvc/external/pthreads.2/context.h b/platform/win32/msvc/external/pthreads.2/context.h deleted file mode 100644 index 57af38e07b3..00000000000 --- a/platform/win32/msvc/external/pthreads.2/context.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * context.h - * - * Description: - * POSIX thread macros related to thread cancellation. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#ifndef PTW32_CONTEXT_H -#define PTW32_CONTEXT_H - -#undef PTW32_PROGCTR - -#if defined(_M_IX86) || (defined(_X86_) && !defined(__amd64__)) -#define PTW32_PROGCTR(Context) ((Context).Eip) -#endif - -#if defined (_M_IA64) || defined(_IA64) -#define PTW32_PROGCTR(Context) ((Context).StIIP) -#endif - -#if defined(_MIPS_) || defined(MIPS) -#define PTW32_PROGCTR(Context) ((Context).Fir) -#endif - -#if defined(_ALPHA_) -#define PTW32_PROGCTR(Context) ((Context).Fir) -#endif - -#if defined(_PPC_) -#define PTW32_PROGCTR(Context) ((Context).Iar) -#endif - -#if defined(_AMD64_) || defined(__amd64__) -#define PTW32_PROGCTR(Context) ((Context).Rip) -#endif - -#if defined(_ARM_) || defined(ARM) -#define PTW32_PROGCTR(Context) ((Context).Pc) -#endif - -#if !defined(PTW32_PROGCTR) -#error Module contains CPU-specific code; modify and recompile. -#endif - -#endif diff --git a/platform/win32/msvc/external/pthreads.2/create.c b/platform/win32/msvc/external/pthreads.2/create.c deleted file mode 100644 index da4cad1fa33..00000000000 --- a/platform/win32/msvc/external/pthreads.2/create.c +++ /dev/null @@ -1,308 +0,0 @@ -/* - * create.c - * - * Description: - * This translation unit implements routines associated with spawning a new - * thread. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" -#if ! defined(_UWIN) && ! defined(WINCE) -#include <process.h> -#endif - -int -pthread_create (pthread_t * tid, - const pthread_attr_t * attr, - void *(PTW32_CDECL *start) (void *), void *arg) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function creates a thread running the start function, - * passing it the parameter value, 'arg'. The 'attr' - * argument specifies optional creation attributes. - * The identity of the new thread is returned - * via 'tid', which should not be NULL. - * - * PARAMETERS - * tid - * pointer to an instance of pthread_t - * - * attr - * optional pointer to an instance of pthread_attr_t - * - * start - * pointer to the starting routine for the new thread - * - * arg - * optional parameter passed to 'start' - * - * - * DESCRIPTION - * This function creates a thread running the start function, - * passing it the parameter value, 'arg'. The 'attr' - * argument specifies optional creation attributes. - * The identity of the new thread is returned - * via 'tid', which should not be the NULL pointer. - * - * RESULTS - * 0 successfully created thread, - * EINVAL attr invalid, - * EAGAIN insufficient resources. - * - * ------------------------------------------------------ - */ -{ - pthread_t thread; - ptw32_thread_t * tp; - register pthread_attr_t a; - HANDLE threadH = 0; - int result = EAGAIN; - int run = PTW32_TRUE; - ThreadParms *parms = NULL; - unsigned int stackSize; - int priority; - pthread_t self; - - /* - * Before doing anything, check that tid can be stored through - * without invoking a memory protection error (segfault). - * Make sure that the assignment below can't be optimised out by the compiler. - * This is assured by conditionally assigning *tid again at the end. - */ - tid->x = 0; - - if (attr != NULL) - { - a = *attr; - } - else - { - a = NULL; - } - - if ((thread = ptw32_new ()).p == NULL) - { - goto FAIL0; - } - - tp = (ptw32_thread_t *) thread.p; - - priority = tp->sched_priority; - - if ((parms = (ThreadParms *) malloc (sizeof (*parms))) == NULL) - { - goto FAIL0; - } - - parms->tid = thread; - parms->start = start; - parms->arg = arg; - -#if defined(HAVE_SIGSET_T) - - /* - * Threads inherit their initial sigmask from their creator thread. - */ - self = pthread_self(); - tp->sigmask = ((ptw32_thread_t *)self.p)->sigmask; - -#endif /* HAVE_SIGSET_T */ - - - if (a != NULL) - { - stackSize = (unsigned int)a->stacksize; - tp->detachState = a->detachstate; - priority = a->param.sched_priority; - -#if (THREAD_PRIORITY_LOWEST > THREAD_PRIORITY_NORMAL) - /* WinCE */ -#else - /* Everything else */ - - /* - * Thread priority must be set to a valid system level - * without altering the value set by pthread_attr_setschedparam(). - */ - - /* - * PTHREAD_EXPLICIT_SCHED is the default because Win32 threads - * don't inherit their creator's priority. They are started with - * THREAD_PRIORITY_NORMAL (win32 value). The result of not supplying - * an 'attr' arg to pthread_create() is equivalent to defaulting to - * PTHREAD_EXPLICIT_SCHED and priority THREAD_PRIORITY_NORMAL. - */ - if (PTHREAD_INHERIT_SCHED == a->inheritsched) - { - /* - * If the thread that called pthread_create() is a Win32 thread - * then the inherited priority could be the result of a temporary - * system adjustment. This is not the case for POSIX threads. - */ -#if ! defined(HAVE_SIGSET_T) - self = pthread_self (); -#endif - priority = ((ptw32_thread_t *) self.p)->sched_priority; - } - -#endif - - } - else - { - /* - * Default stackSize - */ - stackSize = PTHREAD_STACK_MIN; - } - - tp->state = run ? PThreadStateInitial : PThreadStateSuspended; - - tp->keys = NULL; - - /* - * Threads must be started in suspended mode and resumed if necessary - * after _beginthreadex returns us the handle. Otherwise we set up a - * race condition between the creating and the created threads. - * Note that we also retain a local copy of the handle for use - * by us in case thread.p->threadH gets NULLed later but before we've - * finished with it here. - */ - -#if ! (defined (__MINGW64__) || defined(__MINGW32__)) || defined (__MSVCRT__) || defined (__DMC__) - - tp->threadH = - threadH = - (HANDLE) _beginthreadex ((void *) NULL, /* No security info */ - stackSize, /* default stack size */ - ptw32_threadStart, - parms, - (unsigned) - CREATE_SUSPENDED, - (unsigned *) &(tp->thread)); - - if (threadH != 0) - { - if (a != NULL) - { - (void) ptw32_setthreadpriority (thread, SCHED_OTHER, priority); - } - - if (run) - { - ResumeThread (threadH); - } - } - -#else - - { - ptw32_mcs_local_node_t stateLock; - - /* - * This lock will force pthread_threadStart() to wait until we have - * the thread handle and have set the priority. - */ - ptw32_mcs_lock_acquire(&tp->stateLock, &stateLock); - - tp->threadH = - threadH = - (HANDLE) _beginthread (ptw32_threadStart, stackSize, /* default stack size */ - parms); - - /* - * Make the return code match _beginthreadex's. - */ - if (threadH == (HANDLE) - 1L) - { - tp->threadH = threadH = 0; - } - else - { - if (!run) - { - /* - * beginthread does not allow for create flags, so we do it now. - * Note that beginthread itself creates the thread in SUSPENDED - * mode, and then calls ResumeThread to start it. - */ - SuspendThread (threadH); - } - - if (a != NULL) - { - (void) ptw32_setthreadpriority (thread, SCHED_OTHER, priority); - } - } - - ptw32_mcs_lock_release (&stateLock); - } -#endif - - result = (threadH != 0) ? 0 : EAGAIN; - - /* - * Fall Through Intentionally - */ - - /* - * ------------ - * Failure Code - * ------------ - */ - -FAIL0: - if (result != 0) - { - - ptw32_threadDestroy (thread); - tp = NULL; - - if (parms != NULL) - { - free (parms); - } - } - else - { - *tid = thread; - } - -#if defined(_UWIN) - if (result == 0) - pthread_count++; -#endif - return (result); - -} /* pthread_create */ diff --git a/platform/win32/msvc/external/pthreads.2/dll.c b/platform/win32/msvc/external/pthreads.2/dll.c deleted file mode 100644 index 3370a99a3f1..00000000000 --- a/platform/win32/msvc/external/pthreads.2/dll.c +++ /dev/null @@ -1,92 +0,0 @@ -/* - * dll.c - * - * Description: - * This translation unit implements DLL initialisation. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#if !defined(PTW32_STATIC_LIB) - -#include "pthread.h" -#include "implement.h" - -#if defined(_MSC_VER) -/* - * lpvReserved yields an unreferenced formal parameter; - * ignore it - */ -#pragma warning( disable : 4100 ) -#endif - -#if defined(__cplusplus) -/* - * Dear c++: Please don't mangle this name. -thanks - */ -extern "C" -#endif /* __cplusplus */ - BOOL WINAPI -DllMain (HINSTANCE hinstDll, DWORD fdwReason, LPVOID lpvReserved) -{ - BOOL result = PTW32_TRUE; - - switch (fdwReason) - { - - case DLL_PROCESS_ATTACH: - result = pthread_win32_process_attach_np (); - break; - - case DLL_THREAD_ATTACH: - /* - * A thread is being created - */ - result = pthread_win32_thread_attach_np (); - break; - - case DLL_THREAD_DETACH: - /* - * A thread is exiting cleanly - */ - result = pthread_win32_thread_detach_np (); - break; - - case DLL_PROCESS_DETACH: - (void) pthread_win32_thread_detach_np (); - result = pthread_win32_process_detach_np (); - break; - } - - return (result); - -} /* DllMain */ - -#endif /* PTW32_STATIC_LIB */ diff --git a/platform/win32/msvc/external/pthreads.2/errno.c b/platform/win32/msvc/external/pthreads.2/errno.c deleted file mode 100644 index 2f8a317f022..00000000000 --- a/platform/win32/msvc/external/pthreads.2/errno.c +++ /dev/null @@ -1,94 +0,0 @@ -/* - * errno.c - * - * Description: - * This translation unit implements routines associated with spawning a new - * thread. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#if defined(NEED_ERRNO) - -#include "pthread.h" -#include "implement.h" - -static int reallyBad = ENOMEM; - -/* - * Re-entrant errno. - * - * Each thread has it's own errno variable in pthread_t. - * - * The benefit of using the pthread_t structure - * instead of another TSD key is TSD keys are limited - * on Win32 to 64 per process. Secondly, to implement - * it properly without using pthread_t you'd need - * to dynamically allocate an int on starting the thread - * and store it manually into TLS and then ensure that you free - * it on thread termination. We get all that for free - * by simply storing the errno on the pthread_t structure. - * - * MSVC and Mingw32 already have their own thread-safe errno. - * - * #if defined( _REENTRANT ) || defined( _MT ) - * #define errno *_errno() - * - * int *_errno( void ); - * #else - * extern int errno; - * #endif - * - */ - -int * -_errno (void) -{ - pthread_t self; - int *result; - - if ((self = pthread_self ()).p == NULL) - { - /* - * Yikes! unable to allocate a thread! - * Throw an exception? return an error? - */ - result = &reallyBad; - } - else - { - result = (int *)(&self.p->exitStatus); - } - - return (result); - -} /* _errno */ - -#endif /* (NEED_ERRNO) */ diff --git a/platform/win32/msvc/external/pthreads.2/exit.c b/platform/win32/msvc/external/pthreads.2/exit.c deleted file mode 100644 index 9a19acdce83..00000000000 --- a/platform/win32/msvc/external/pthreads.2/exit.c +++ /dev/null @@ -1,44 +0,0 @@ -/* - * exit.c - * - * Description: - * This translation unit implements routines associated with exiting from - * a thread. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" -#if ! defined(_UWIN) && ! defined(WINCE) -# include <process.h> -#endif - -#include "pthread_exit.c" diff --git a/platform/win32/msvc/external/pthreads.2/fork.c b/platform/win32/msvc/external/pthreads.2/fork.c deleted file mode 100644 index 97d9ec23ae9..00000000000 --- a/platform/win32/msvc/external/pthreads.2/fork.c +++ /dev/null @@ -1,39 +0,0 @@ -/* - * fork.c - * - * Description: - * Implementation of fork() for POSIX threads. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - - -#include "pthread.h" -#include "implement.h" diff --git a/platform/win32/msvc/external/pthreads.2/global.c b/platform/win32/msvc/external/pthreads.2/global.c deleted file mode 100644 index 0d01d3c5abc..00000000000 --- a/platform/win32/msvc/external/pthreads.2/global.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - * global.c - * - * Description: - * This translation unit instantiates data associated with the implementation - * as a whole. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int ptw32_processInitialized = PTW32_FALSE; -ptw32_thread_t * ptw32_threadReuseTop = PTW32_THREAD_REUSE_EMPTY; -ptw32_thread_t * ptw32_threadReuseBottom = PTW32_THREAD_REUSE_EMPTY; -pthread_key_t ptw32_selfThreadKey = NULL; -pthread_key_t ptw32_cleanupKey = NULL; -pthread_cond_t ptw32_cond_list_head = NULL; -pthread_cond_t ptw32_cond_list_tail = NULL; - -int ptw32_concurrency = 0; - -/* What features have been auto-detected */ -int ptw32_features = 0; - -/* - * Global [process wide] thread sequence Number - */ -unsigned __int64 ptw32_threadSeqNumber = 0; - -/* - * Function pointer to QueueUserAPCEx if it exists, otherwise - * it will be set at runtime to a substitute routine which cannot unblock - * blocked threads. - */ -DWORD (*ptw32_register_cancelation) (PAPCFUNC, HANDLE, DWORD) = NULL; - -/* - * Global lock for managing pthread_t struct reuse. - */ -ptw32_mcs_lock_t ptw32_thread_reuse_lock = 0; - -/* - * Global lock for testing internal state of statically declared mutexes. - */ -ptw32_mcs_lock_t ptw32_mutex_test_init_lock = 0; - -/* - * Global lock for testing internal state of PTHREAD_COND_INITIALIZER - * created condition variables. - */ -ptw32_mcs_lock_t ptw32_cond_test_init_lock = 0; - -/* - * Global lock for testing internal state of PTHREAD_RWLOCK_INITIALIZER - * created read/write locks. - */ -ptw32_mcs_lock_t ptw32_rwlock_test_init_lock = 0; - -/* - * Global lock for testing internal state of PTHREAD_SPINLOCK_INITIALIZER - * created spin locks. - */ -ptw32_mcs_lock_t ptw32_spinlock_test_init_lock = 0; - -/* - * Global lock for condition variable linked list. The list exists - * to wake up CVs when a WM_TIMECHANGE message arrives. See - * w32_TimeChangeHandler.c. - */ -ptw32_mcs_lock_t ptw32_cond_list_lock = 0; - -#if defined(_UWIN) -/* - * Keep a count of the number of threads. - */ -int pthread_count = 0; -#endif diff --git a/platform/win32/msvc/external/pthreads.2/implement.h b/platform/win32/msvc/external/pthreads.2/implement.h deleted file mode 100644 index 49c3172b28c..00000000000 --- a/platform/win32/msvc/external/pthreads.2/implement.h +++ /dev/null @@ -1,943 +0,0 @@ -/* - * implement.h - * - * Definitions that don't need to be public. - * - * Keeps all the internals out of pthread.h - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: Ross.Johnson@homemail.com.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#if !defined(_IMPLEMENT_H) -#define _IMPLEMENT_H - -#if !defined(_WIN32_WINNT) -#define _WIN32_WINNT 0x0400 -#endif - -#include <windows.h> - -/* - * In case windows.h doesn't define it (e.g. WinCE perhaps) - */ -#if defined(WINCE) -typedef VOID (APIENTRY *PAPCFUNC)(DWORD dwParam); -#endif - -/* - * note: ETIMEDOUT is correctly defined in winsock.h - */ -#include <winsock.h> - -/* - * In case ETIMEDOUT hasn't been defined above somehow. - */ -#if !defined(ETIMEDOUT) -# define ETIMEDOUT 10060 /* This is the value in winsock.h. */ -#endif - -#if !defined(malloc) -#include <malloc.h> -#endif - -#if defined(__CLEANUP_C) -# include <setjmp.h> -#endif - -#if !defined(INT_MAX) -#include <limits.h> -#endif - -/* use local include files during development */ -#include "semaphore.h" -#include "sched.h" - -#if defined(HAVE_C_INLINE) || defined(__cplusplus) -#define INLINE inline -#else -#define INLINE -#endif - -#if defined(_MSC_VER) && _MSC_VER < 1300 -/* - * MSVC 6 does not use the "volatile" qualifier - */ -#define PTW32_INTERLOCKED_VOLATILE -#else -#define PTW32_INTERLOCKED_VOLATILE volatile -#endif -#define PTW32_INTERLOCKED_LONG long -#define PTW32_INTERLOCKED_SIZE size_t -#define PTW32_INTERLOCKED_PVOID PVOID -#define PTW32_INTERLOCKED_LONGPTR PTW32_INTERLOCKED_VOLATILE long* -#define PTW32_INTERLOCKED_SIZEPTR PTW32_INTERLOCKED_VOLATILE size_t* -#define PTW32_INTERLOCKED_PVOID_PTR PTW32_INTERLOCKED_VOLATILE PVOID* - -#if defined(__MINGW64__) || defined(__MINGW32__) -# include <stdint.h> -#elif defined(__BORLANDC__) -# define int64_t ULONGLONG -#else -# define int64_t _int64 -# if defined(_MSC_VER) && _MSC_VER < 1300 - typedef long intptr_t; -# endif -#endif - -typedef enum -{ - /* - * This enumeration represents the state of the thread; - * The thread is still "alive" if the numeric value of the - * state is greater or equal "PThreadStateRunning". - */ - PThreadStateInitial = 0, /* Thread not running */ - PThreadStateRunning, /* Thread alive & kicking */ - PThreadStateSuspended, /* Thread alive but suspended */ - PThreadStateCancelPending, /* Thread alive but */ - /* has cancelation pending. */ - PThreadStateCanceling, /* Thread alive but is */ - /* in the process of terminating */ - /* due to a cancellation request */ - PThreadStateExiting, /* Thread alive but exiting */ - /* due to an exception */ - PThreadStateLast, /* All handlers have been run and now */ - /* final cleanup can be done. */ - PThreadStateReuse /* In reuse pool. */ -} -PThreadState; - -typedef struct ptw32_mcs_node_t_ ptw32_mcs_local_node_t; -typedef struct ptw32_mcs_node_t_* ptw32_mcs_lock_t; -typedef struct ptw32_robust_node_t_ ptw32_robust_node_t; -typedef struct ptw32_thread_t_ ptw32_thread_t; - - -struct ptw32_thread_t_ -{ - unsigned __int64 seqNumber; /* Process-unique thread sequence number */ - HANDLE threadH; /* Win32 thread handle - POSIX thread is invalid if threadH == 0 */ - pthread_t ptHandle; /* This thread's permanent pthread_t handle */ - ptw32_thread_t * prevReuse; /* Links threads on reuse stack */ - volatile PThreadState state; - ptw32_mcs_lock_t threadLock; /* Used for serialised access to public thread state */ - ptw32_mcs_lock_t stateLock; /* Used for async-cancel safety */ - HANDLE cancelEvent; - void *exitStatus; - void *parms; - void *keys; - void *nextAssoc; -#if defined(__CLEANUP_C) - jmp_buf start_mark; /* Jump buffer follows void* so should be aligned */ -#endif /* __CLEANUP_C */ -#if defined(HAVE_SIGSET_T) - sigset_t sigmask; -#endif /* HAVE_SIGSET_T */ - ptw32_mcs_lock_t - robustMxListLock; /* robustMxList lock */ - ptw32_robust_node_t* - robustMxList; /* List of currenty held robust mutexes */ - int ptErrno; - int detachState; - int sched_priority; /* As set, not as currently is */ - int cancelState; - int cancelType; - int implicit:1; - DWORD thread; /* Win32 thread ID */ -#if defined(_UWIN) - DWORD dummy[5]; -#endif - size_t align; /* Force alignment if this struct is packed */ -}; - - -/* - * Special value to mark attribute objects as valid. - */ -#define PTW32_ATTR_VALID ((unsigned long) 0xC4C0FFEE) - -struct pthread_attr_t_ -{ - unsigned long valid; - void *stackaddr; - size_t stacksize; - int detachstate; - struct sched_param param; - int inheritsched; - int contentionscope; -#if defined(HAVE_SIGSET_T) - sigset_t sigmask; -#endif /* HAVE_SIGSET_T */ -}; - - -/* - * ==================== - * ==================== - * Semaphores, Mutexes and Condition Variables - * ==================== - * ==================== - */ - -struct sem_t_ -{ - int value; - pthread_mutex_t lock; - HANDLE sem; -#if defined(NEED_SEM) - int leftToUnblock; -#endif -}; - -#define PTW32_OBJECT_AUTO_INIT ((void *)(size_t) -1) -#define PTW32_OBJECT_INVALID NULL - -struct pthread_mutex_t_ -{ - LONG lock_idx; /* Provides exclusive access to mutex state - via the Interlocked* mechanism. - 0: unlocked/free. - 1: locked - no other waiters. - -1: locked - with possible other waiters. - */ - int recursive_count; /* Number of unlocks a thread needs to perform - before the lock is released (recursive - mutexes only). */ - int kind; /* Mutex type. */ - pthread_t ownerThread; - HANDLE event; /* Mutex release notification to waiting - threads. */ - ptw32_robust_node_t* - robustNode; /* Extra state for robust mutexes */ -}; - -enum ptw32_robust_state_t_ -{ - PTW32_ROBUST_CONSISTENT, - PTW32_ROBUST_INCONSISTENT, - PTW32_ROBUST_NOTRECOVERABLE -}; - -typedef enum ptw32_robust_state_t_ ptw32_robust_state_t; - -/* - * Node used to manage per-thread lists of currently-held robust mutexes. - */ -struct ptw32_robust_node_t_ -{ - pthread_mutex_t mx; - ptw32_robust_state_t stateInconsistent; - ptw32_robust_node_t* prev; - ptw32_robust_node_t* next; -}; - -struct pthread_mutexattr_t_ -{ - int pshared; - int kind; - int robustness; -}; - -/* - * Possible values, other than PTW32_OBJECT_INVALID, - * for the "interlock" element in a spinlock. - * - * In this implementation, when a spinlock is initialised, - * the number of cpus available to the process is checked. - * If there is only one cpu then "interlock" is set equal to - * PTW32_SPIN_USE_MUTEX and u.mutex is an initialised mutex. - * If the number of cpus is greater than 1 then "interlock" - * is set equal to PTW32_SPIN_UNLOCKED and the number is - * stored in u.cpus. This arrangement allows the spinlock - * routines to attempt an InterlockedCompareExchange on "interlock" - * immediately and, if that fails, to try the inferior mutex. - * - * "u.cpus" isn't used for anything yet, but could be used at - * some point to optimise spinlock behaviour. - */ -#define PTW32_SPIN_INVALID (0) -#define PTW32_SPIN_UNLOCKED (1) -#define PTW32_SPIN_LOCKED (2) -#define PTW32_SPIN_USE_MUTEX (3) - -struct pthread_spinlock_t_ -{ - long interlock; /* Locking element for multi-cpus. */ - union - { - int cpus; /* No. of cpus if multi cpus, or */ - pthread_mutex_t mutex; /* mutex if single cpu. */ - } u; -}; - -/* - * MCS lock queue node - see ptw32_MCS_lock.c - */ -struct ptw32_mcs_node_t_ -{ - struct ptw32_mcs_node_t_ **lock; /* ptr to tail of queue */ - struct ptw32_mcs_node_t_ *next; /* ptr to successor in queue */ - HANDLE readyFlag; /* set after lock is released by - predecessor */ - HANDLE nextFlag; /* set after 'next' ptr is set by - successor */ -}; - - -struct pthread_barrier_t_ -{ - unsigned int nCurrentBarrierHeight; - unsigned int nInitialBarrierHeight; - int pshared; - sem_t semBarrierBreeched; - ptw32_mcs_lock_t lock; - ptw32_mcs_local_node_t proxynode; -}; - -struct pthread_barrierattr_t_ -{ - int pshared; -}; - -struct pthread_key_t_ -{ - DWORD key; - void (PTW32_CDECL *destructor) (void *); - ptw32_mcs_lock_t keyLock; - void *threads; -}; - - -typedef struct ThreadParms ThreadParms; - -struct ThreadParms -{ - pthread_t tid; - void *(PTW32_CDECL *start) (void *); - void *arg; -}; - - -struct pthread_cond_t_ -{ - long nWaitersBlocked; /* Number of threads blocked */ - long nWaitersGone; /* Number of threads timed out */ - long nWaitersToUnblock; /* Number of threads to unblock */ - sem_t semBlockQueue; /* Queue up threads waiting for the */ - /* condition to become signalled */ - sem_t semBlockLock; /* Semaphore that guards access to */ - /* | waiters blocked count/block queue */ - /* +-> Mandatory Sync.LEVEL-1 */ - pthread_mutex_t mtxUnblockLock; /* Mutex that guards access to */ - /* | waiters (to)unblock(ed) counts */ - /* +-> Optional* Sync.LEVEL-2 */ - pthread_cond_t next; /* Doubly linked list */ - pthread_cond_t prev; -}; - - -struct pthread_condattr_t_ -{ - int pshared; -}; - -#define PTW32_RWLOCK_MAGIC 0xfacade2 - -struct pthread_rwlock_t_ -{ - pthread_mutex_t mtxExclusiveAccess; - pthread_mutex_t mtxSharedAccessCompleted; - pthread_cond_t cndSharedAccessCompleted; - int nSharedAccessCount; - int nExclusiveAccessCount; - int nCompletedSharedAccessCount; - int nMagic; -}; - -struct pthread_rwlockattr_t_ -{ - int pshared; -}; - -typedef struct ThreadKeyAssoc ThreadKeyAssoc; - -struct ThreadKeyAssoc -{ - /* - * Purpose: - * This structure creates an association between a thread and a key. - * It is used to implement the implicit invocation of a user defined - * destroy routine for thread specific data registered by a user upon - * exiting a thread. - * - * Graphically, the arrangement is as follows, where: - * - * K - Key with destructor - * (head of chain is key->threads) - * T - Thread that has called pthread_setspecific(Kn) - * (head of chain is thread->keys) - * A - Association. Each association is a node at the - * intersection of two doubly-linked lists. - * - * T1 T2 T3 - * | | | - * | | | - * K1 -----+-----A-----A-----> - * | | | - * | | | - * K2 -----A-----A-----+-----> - * | | | - * | | | - * K3 -----A-----+-----A-----> - * | | | - * | | | - * V V V - * - * Access to the association is guarded by two locks: the key's - * general lock (guarding the row) and the thread's general - * lock (guarding the column). This avoids the need for a - * dedicated lock for each association, which not only consumes - * more handles but requires that the lock resources persist - * until both the key is deleted and the thread has called the - * destructor. The two-lock arrangement allows those resources - * to be freed as soon as either thread or key is concluded. - * - * To avoid deadlock, whenever both locks are required both the - * key and thread locks are acquired consistently in the order - * "key lock then thread lock". An exception to this exists - * when a thread calls the destructors, however, this is done - * carefully (but inelegantly) to avoid deadlock. - * - * An association is created when a thread first calls - * pthread_setspecific() on a key that has a specified - * destructor. - * - * An association is destroyed either immediately after the - * thread calls the key destructor function on thread exit, or - * when the key is deleted. - * - * Attributes: - * thread - * reference to the thread that owns the - * association. This is actually the pointer to the - * thread struct itself. Since the association is - * destroyed before the thread exits, this can never - * point to a different logical thread to the one that - * created the assoc, i.e. after thread struct reuse. - * - * key - * reference to the key that owns the association. - * - * nextKey - * The pthread_t->keys attribute is the head of a - * chain of associations that runs through the nextKey - * link. This chain provides the 1 to many relationship - * between a pthread_t and all pthread_key_t on which - * it called pthread_setspecific. - * - * prevKey - * Similarly. - * - * nextThread - * The pthread_key_t->threads attribute is the head of - * a chain of associations that runs through the - * nextThreads link. This chain provides the 1 to many - * relationship between a pthread_key_t and all the - * PThreads that have called pthread_setspecific for - * this pthread_key_t. - * - * prevThread - * Similarly. - * - * Notes: - * 1) As soon as either the key or the thread is no longer - * referencing the association, it can be destroyed. The - * association will be removed from both chains. - * - * 2) Under WIN32, an association is only created by - * pthread_setspecific if the user provided a - * destroyRoutine when they created the key. - * - * - */ - ptw32_thread_t * thread; - pthread_key_t key; - ThreadKeyAssoc *nextKey; - ThreadKeyAssoc *nextThread; - ThreadKeyAssoc *prevKey; - ThreadKeyAssoc *prevThread; -}; - - -#if defined(__CLEANUP_SEH) -/* - * -------------------------------------------------------------- - * MAKE_SOFTWARE_EXCEPTION - * This macro constructs a software exception code following - * the same format as the standard Win32 error codes as defined - * in WINERROR.H - * Values are 32 bit values laid out as follows: - * - * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 - * +---+-+-+-----------------------+-------------------------------+ - * |Sev|C|R| Facility | Code | - * +---+-+-+-----------------------+-------------------------------+ - * - * Severity Values: - */ -#define SE_SUCCESS 0x00 -#define SE_INFORMATION 0x01 -#define SE_WARNING 0x02 -#define SE_ERROR 0x03 - -#define MAKE_SOFTWARE_EXCEPTION( _severity, _facility, _exception ) \ -( (DWORD) ( ( (_severity) << 30 ) | /* Severity code */ \ - ( 1 << 29 ) | /* MS=0, User=1 */ \ - ( 0 << 28 ) | /* Reserved */ \ - ( (_facility) << 16 ) | /* Facility Code */ \ - ( (_exception) << 0 ) /* Exception Code */ \ - ) ) - -/* - * We choose one specific Facility/Error code combination to - * identify our software exceptions vs. WIN32 exceptions. - * We store our actual component and error code within - * the optional information array. - */ -#define EXCEPTION_PTW32_SERVICES \ - MAKE_SOFTWARE_EXCEPTION( SE_ERROR, \ - PTW32_SERVICES_FACILITY, \ - PTW32_SERVICES_ERROR ) - -#define PTW32_SERVICES_FACILITY 0xBAD -#define PTW32_SERVICES_ERROR 0xDEED - -#endif /* __CLEANUP_SEH */ - -/* - * Services available through EXCEPTION_PTW32_SERVICES - * and also used [as parameters to ptw32_throw()] as - * generic exception selectors. - */ - -#define PTW32_EPS_EXIT (1) -#define PTW32_EPS_CANCEL (2) - - -/* Useful macros */ -#define PTW32_MAX(a,b) ((a)<(b)?(b):(a)) -#define PTW32_MIN(a,b) ((a)>(b)?(b):(a)) - - -/* Declared in pthread_cancel.c */ -extern DWORD (*ptw32_register_cancelation) (PAPCFUNC, HANDLE, DWORD); - -/* Thread Reuse stack bottom marker. Must not be NULL or any valid pointer to memory. */ -#define PTW32_THREAD_REUSE_EMPTY ((ptw32_thread_t *)(size_t) 1) - -extern int ptw32_processInitialized; -extern ptw32_thread_t * ptw32_threadReuseTop; -extern ptw32_thread_t * ptw32_threadReuseBottom; -extern pthread_key_t ptw32_selfThreadKey; -extern pthread_key_t ptw32_cleanupKey; -extern pthread_cond_t ptw32_cond_list_head; -extern pthread_cond_t ptw32_cond_list_tail; - -extern int ptw32_mutex_default_kind; - -extern unsigned __int64 ptw32_threadSeqNumber; - -extern int ptw32_concurrency; - -extern int ptw32_features; - -extern ptw32_mcs_lock_t ptw32_thread_reuse_lock; -extern ptw32_mcs_lock_t ptw32_mutex_test_init_lock; -extern ptw32_mcs_lock_t ptw32_cond_list_lock; -extern ptw32_mcs_lock_t ptw32_cond_test_init_lock; -extern ptw32_mcs_lock_t ptw32_rwlock_test_init_lock; -extern ptw32_mcs_lock_t ptw32_spinlock_test_init_lock; - -#if defined(_UWIN) -extern int pthread_count; -#endif - -#if defined(__cplusplus) -extern "C" -{ -#endif /* __cplusplus */ - -/* - * ===================== - * ===================== - * Forward Declarations - * ===================== - * ===================== - */ - - int ptw32_is_attr (const pthread_attr_t * attr); - - int ptw32_cond_check_need_init (pthread_cond_t * cond); - int ptw32_mutex_check_need_init (pthread_mutex_t * mutex); - int ptw32_rwlock_check_need_init (pthread_rwlock_t * rwlock); - - int ptw32_robust_mutex_inherit(pthread_mutex_t * mutex); - void ptw32_robust_mutex_add(pthread_mutex_t* mutex, pthread_t self); - void ptw32_robust_mutex_remove(pthread_mutex_t* mutex, ptw32_thread_t* otp); - - DWORD - ptw32_RegisterCancelation (PAPCFUNC callback, - HANDLE threadH, DWORD callback_arg); - - int ptw32_processInitialize (void); - - void ptw32_processTerminate (void); - - void ptw32_threadDestroy (pthread_t tid); - - void ptw32_pop_cleanup_all (int execute); - - pthread_t ptw32_new (void); - - pthread_t ptw32_threadReusePop (void); - - void ptw32_threadReusePush (pthread_t thread); - - int ptw32_getprocessors (int *count); - - int ptw32_setthreadpriority (pthread_t thread, int policy, int priority); - - void ptw32_rwlock_cancelwrwait (void *arg); - -#if ! (defined (__MINGW64__) || defined(__MINGW32__)) || (defined(__MSVCRT__) && ! defined(__DMC__)) - unsigned __stdcall -#else - void -#endif - ptw32_threadStart (void *vthreadParms); - - void ptw32_callUserDestroyRoutines (pthread_t thread); - - int ptw32_tkAssocCreate (ptw32_thread_t * thread, pthread_key_t key); - - void ptw32_tkAssocDestroy (ThreadKeyAssoc * assoc); - - int ptw32_semwait (sem_t * sem); - - DWORD ptw32_relmillisecs (const struct timespec * abstime); - - void ptw32_mcs_lock_acquire (ptw32_mcs_lock_t * lock, ptw32_mcs_local_node_t * node); - - int ptw32_mcs_lock_try_acquire (ptw32_mcs_lock_t * lock, ptw32_mcs_local_node_t * node); - - void ptw32_mcs_lock_release (ptw32_mcs_local_node_t * node); - - void ptw32_mcs_node_transfer (ptw32_mcs_local_node_t * new_node, ptw32_mcs_local_node_t * old_node); - -#if defined(NEED_FTIME) - void ptw32_timespec_to_filetime (const struct timespec *ts, FILETIME * ft); - void ptw32_filetime_to_timespec (const FILETIME * ft, struct timespec *ts); -#endif - -/* Declared in misc.c */ -#if defined(NEED_CALLOC) -#define calloc(n, s) ptw32_calloc(n, s) - void *ptw32_calloc (size_t n, size_t s); -#endif - -/* Declared in private.c */ -#if defined(_MSC_VER) -/* - * Ignore the warning: - * "C++ exception specification ignored except to indicate that - * the function is not __declspec(nothrow)." - */ -#pragma warning(disable:4290) -#endif - void ptw32_throw (DWORD exception) -#if defined(__CLEANUP_CXX) - throw(ptw32_exception_cancel,ptw32_exception_exit) -#endif -; - -#if defined(__cplusplus) -} -#endif /* __cplusplus */ - - -#if defined(_UWIN_) -# if defined(_MT) -# if defined(__cplusplus) -extern "C" -{ -# endif - _CRTIMP unsigned long __cdecl _beginthread (void (__cdecl *) (void *), - unsigned, void *); - _CRTIMP void __cdecl _endthread (void); - _CRTIMP unsigned long __cdecl _beginthreadex (void *, unsigned, - unsigned (__stdcall *) (void *), - void *, unsigned, unsigned *); - _CRTIMP void __cdecl _endthreadex (unsigned); -# if defined(__cplusplus) -} -# endif -# endif -#else -# include <process.h> -# endif - - -/* - * Use intrinsic versions wherever possible. VC will do this - * automatically where possible and GCC define these if available: - * __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 - * __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 - * __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 - * __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 - * __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 - * - * The full set of Interlocked intrinsics in GCC are (check versions): - * type __sync_fetch_and_add (type *ptr, type value, ...) - * type __sync_fetch_and_sub (type *ptr, type value, ...) - * type __sync_fetch_and_or (type *ptr, type value, ...) - * type __sync_fetch_and_and (type *ptr, type value, ...) - * type __sync_fetch_and_xor (type *ptr, type value, ...) - * type __sync_fetch_and_nand (type *ptr, type value, ...) - * type __sync_add_and_fetch (type *ptr, type value, ...) - * type __sync_sub_and_fetch (type *ptr, type value, ...) - * type __sync_or_and_fetch (type *ptr, type value, ...) - * type __sync_and_and_fetch (type *ptr, type value, ...) - * type __sync_xor_and_fetch (type *ptr, type value, ...) - * type __sync_nand_and_fetch (type *ptr, type value, ...) - * bool __sync_bool_compare_and_swap (type *ptr, type oldval type newval, ...) - * type __sync_val_compare_and_swap (type *ptr, type oldval type newval, ...) - * __sync_synchronize (...) // Full memory barrier - * type __sync_lock_test_and_set (type *ptr, type value, ...) // Acquire barrier - * void __sync_lock_release (type *ptr, ...) // Release barrier - * - * These are all overloaded and take 1,2,4,8 byte scalar or pointer types. - * - * The above aren't available in Mingw32 as of gcc 4.5.2 so define our own. - */ -#if defined(__GNUC__) -# if defined(_WIN64) -# define PTW32_INTERLOCKED_COMPARE_EXCHANGE_64(location, value, comparand) \ - ({ \ - __typeof (value) _result; \ - __asm__ __volatile__ \ - ( \ - "lock\n\t" \ - "cmpxchgq %2,(%1)" \ - :"=a" (_result) \ - :"r" (location), "r" (value), "a" (comparand) \ - :"memory", "cc"); \ - _result; \ - }) -# define PTW32_INTERLOCKED_EXCHANGE_64(location, value) \ - ({ \ - __typeof (value) _result; \ - __asm__ __volatile__ \ - ( \ - "xchgq %0,(%1)" \ - :"=r" (_result) \ - :"r" (location), "0" (value) \ - :"memory", "cc"); \ - _result; \ - }) -# define PTW32_INTERLOCKED_EXCHANGE_ADD_64(location, value) \ - ({ \ - __typeof (value) _result; \ - __asm__ __volatile__ \ - ( \ - "lock\n\t" \ - "xaddq %0,(%1)" \ - :"=r" (_result) \ - :"r" (location), "0" (value) \ - :"memory", "cc"); \ - _result; \ - }) -# define PTW32_INTERLOCKED_INCREMENT_64(location) \ - ({ \ - PTW32_INTERLOCKED_LONG _temp = 1; \ - __asm__ __volatile__ \ - ( \ - "lock\n\t" \ - "xaddq %0,(%1)" \ - :"+r" (_temp) \ - :"r" (location) \ - :"memory", "cc"); \ - ++_temp; \ - }) -# define PTW32_INTERLOCKED_DECREMENT_64(location) \ - ({ \ - PTW32_INTERLOCKED_LONG _temp = -1; \ - __asm__ __volatile__ \ - ( \ - "lock\n\t" \ - "xaddq %2,(%1)" \ - :"+r" (_temp) \ - :"r" (location) \ - :"memory", "cc"); \ - --_temp; \ - }) -#endif -# define PTW32_INTERLOCKED_COMPARE_EXCHANGE_LONG(location, value, comparand) \ - ({ \ - __typeof (value) _result; \ - __asm__ __volatile__ \ - ( \ - "lock\n\t" \ - "cmpxchgl %2,(%1)" \ - :"=a" (_result) \ - :"r" (location), "r" (value), "a" (comparand) \ - :"memory", "cc"); \ - _result; \ - }) -# define PTW32_INTERLOCKED_EXCHANGE_LONG(location, value) \ - ({ \ - __typeof (value) _result; \ - __asm__ __volatile__ \ - ( \ - "xchgl %0,(%1)" \ - :"=r" (_result) \ - :"r" (location), "0" (value) \ - :"memory", "cc"); \ - _result; \ - }) -# define PTW32_INTERLOCKED_EXCHANGE_ADD_LONG(location, value) \ - ({ \ - __typeof (value) _result; \ - __asm__ __volatile__ \ - ( \ - "lock\n\t" \ - "xaddl %0,(%1)" \ - :"=r" (_result) \ - :"r" (location), "0" (value) \ - :"memory", "cc"); \ - _result; \ - }) -# define PTW32_INTERLOCKED_INCREMENT_LONG(location) \ - ({ \ - PTW32_INTERLOCKED_LONG _temp = 1; \ - __asm__ __volatile__ \ - ( \ - "lock\n\t" \ - "xaddl %0,(%1)" \ - :"+r" (_temp) \ - :"r" (location) \ - :"memory", "cc"); \ - ++_temp; \ - }) -# define PTW32_INTERLOCKED_DECREMENT_LONG(location) \ - ({ \ - PTW32_INTERLOCKED_LONG _temp = -1; \ - __asm__ __volatile__ \ - ( \ - "lock\n\t" \ - "xaddl %0,(%1)" \ - :"+r" (_temp) \ - :"r" (location) \ - :"memory", "cc"); \ - --_temp; \ - }) -# define PTW32_INTERLOCKED_COMPARE_EXCHANGE_PTR(location, value, comparand) \ - PTW32_INTERLOCKED_COMPARE_EXCHANGE_SIZE((PTW32_INTERLOCKED_SIZEPTR)location, \ - (PTW32_INTERLOCKED_SIZE)value, \ - (PTW32_INTERLOCKED_SIZE)comparand) -# define PTW32_INTERLOCKED_EXCHANGE_PTR(location, value) \ - PTW32_INTERLOCKED_EXCHANGE_SIZE((PTW32_INTERLOCKED_SIZEPTR)location, \ - (PTW32_INTERLOCKED_SIZE)value) -#else -# if defined(_WIN64) -# define PTW32_INTERLOCKED_COMPARE_EXCHANGE_64 InterlockedCompareExchange64 -# define PTW32_INTERLOCKED_EXCHANGE_64 InterlockedExchange64 -# define PTW32_INTERLOCKED_EXCHANGE_ADD_64 InterlockedExchangeAdd64 -# define PTW32_INTERLOCKED_INCREMENT_64 InterlockedIncrement64 -# define PTW32_INTERLOCKED_DECREMENT_64 InterlockedDecrement64 -# endif -# if defined(_MSC_VER) && _MSC_VER < 1300 && !defined(_WIN64) /* MSVC 6 */ -# define PTW32_INTERLOCKED_COMPARE_EXCHANGE_LONG(location, value, comparand) \ - ((LONG)InterlockedCompareExchange((PVOID *)(location), (PVOID)(value), (PVOID)(comparand))) -# else -# define PTW32_INTERLOCKED_COMPARE_EXCHANGE_LONG InterlockedCompareExchange -# endif -# define PTW32_INTERLOCKED_EXCHANGE_LONG InterlockedExchange -# define PTW32_INTERLOCKED_EXCHANGE_ADD_LONG InterlockedExchangeAdd -# define PTW32_INTERLOCKED_INCREMENT_LONG InterlockedIncrement -# define PTW32_INTERLOCKED_DECREMENT_LONG InterlockedDecrement -# if defined(_MSC_VER) && _MSC_VER < 1300 && !defined(_WIN64) /* MSVC 6 */ -# define PTW32_INTERLOCKED_COMPARE_EXCHANGE_PTR InterlockedCompareExchange -# define PTW32_INTERLOCKED_EXCHANGE_PTR(location, value) \ - ((PVOID)InterlockedExchange((LPLONG)(location), (LONG)(value))) -# else -# define PTW32_INTERLOCKED_COMPARE_EXCHANGE_PTR InterlockedCompareExchangePointer -# define PTW32_INTERLOCKED_EXCHANGE_PTR InterlockedExchangePointer -# endif -#endif -#if defined(_WIN64) -# define PTW32_INTERLOCKED_COMPARE_EXCHANGE_SIZE PTW32_INTERLOCKED_COMPARE_EXCHANGE_64 -# define PTW32_INTERLOCKED_EXCHANGE_SIZE PTW32_INTERLOCKED_EXCHANGE_64 -# define PTW32_INTERLOCKED_EXCHANGE_ADD_SIZE PTW32_INTERLOCKED_EXCHANGE_ADD_64 -# define PTW32_INTERLOCKED_INCREMENT_SIZE PTW32_INTERLOCKED_INCREMENT_64 -# define PTW32_INTERLOCKED_DECREMENT_SIZE PTW32_INTERLOCKED_DECREMENT_64 -#else -# define PTW32_INTERLOCKED_COMPARE_EXCHANGE_SIZE PTW32_INTERLOCKED_COMPARE_EXCHANGE_LONG -# define PTW32_INTERLOCKED_EXCHANGE_SIZE PTW32_INTERLOCKED_EXCHANGE_LONG -# define PTW32_INTERLOCKED_EXCHANGE_ADD_SIZE PTW32_INTERLOCKED_EXCHANGE_ADD_LONG -# define PTW32_INTERLOCKED_INCREMENT_SIZE PTW32_INTERLOCKED_INCREMENT_LONG -# define PTW32_INTERLOCKED_DECREMENT_SIZE PTW32_INTERLOCKED_DECREMENT_LONG -#endif - -#if defined(NEED_CREATETHREAD) - -/* - * Macro uses args so we can cast start_proc to LPTHREAD_START_ROUTINE - * in order to avoid warnings because of return type - */ - -#define _beginthreadex(security, \ - stack_size, \ - start_proc, \ - arg, \ - flags, \ - pid) \ - CreateThread(security, \ - stack_size, \ - (LPTHREAD_START_ROUTINE) start_proc, \ - arg, \ - flags, \ - pid) - -#define _endthreadex ExitThread - -#endif /* NEED_CREATETHREAD */ - - -#endif /* _IMPLEMENT_H */ diff --git a/platform/win32/msvc/external/pthreads.2/manual/ChangeLog b/platform/win32/msvc/external/pthreads.2/manual/ChangeLog deleted file mode 100644 index 356e40b515f..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/ChangeLog +++ /dev/null @@ -1,74 +0,0 @@ -2011-03-26 Ross Johnson <ross at homemail dot com dot au> - - * pthread_nutex_init.html (robust mutexes): Added - descriptions for newly implemented interface. - * pthread_mutexattr_init.html (robust mutexes): Likewise. - * pthread_getsequence_np.html: New. - * index.html: Updated. - -2008-06-30 Ross Johnson <ross at callisto.canberra.edu.au> - - * pthread_setschedparam.html: Fix "see also" links. - -2005-05-06 Ross Johnson <ross at callisto.canberra.edu.au> - - * PortabilityIssues.html: Was nonPortableIssues.html. - * index.html: Updated; add table of contents at top. - * *.html: Add Pthreads-win32 header info; add link back to the - index page 'index.html'. - -2005-05-06 Ross Johnson <ross at callisto.canberra.edu.au> - - * index.html: New. - * nonPortableIssues.html: New. - * pthread_attr_init.html: New. - * pthread_attr_setstackaddr.html: New. - * pthread_attr_setstacksize.html: New. - * pthread_barrierattr_init.html: New. - * pthread_barrierattr_setpshared.html: New. - * pthread_barrier_init.html: New. - * pthread_barrier_wait.html: New. - * pthreadCancelableWait.html: New. - * pthread_cancel.html: New. - * pthread_cleanup_push.html: New. - * pthread_condattr_init.html: New. - * pthread_condattr_setpshared.html: New. - * pthread_cond_init.html: New. - * pthread_create.html: New. - * pthread_delay_np.html: New. - * pthread_detach.html: New. - * pthread_equal.html: New. - * pthread_exit.html: New. - * pthread_getw32threadhandle_np.html: New. - * pthread_join.html: New. - * pthread_key_create.html: New. - * pthread_kill.html: New. - * pthread_mutexattr_init.html: New. - * pthread_mutexattr_setpshared.html: New. - * pthread_mutex_init.html: New. - * pthread_num_processors_np.html: New. - * pthread_once.html: New. - * pthread_rwlockattr_init.html: New. - * pthread_rwlockattr_setpshared.html: New. - * pthread_rwlock_init.html: New. - * pthread_rwlock_rdlock.html: New. - * pthread_rwlock_timedrdlock.html: New. - * pthread_rwlock_timedwrlock.html: New. - * pthread_rwlock_unlock.html: New. - * pthread_rwlock_wrlock.html: New. - * pthread_self.html: New. - * pthread_setcancelstate.html: New. - * pthread_setcanceltype.html: New. - * pthread_setconcurrency.html: New. - * pthread_setschedparam.html: New. - * pthread_spin_init.html: New. - * pthread_spin_lock.html: New. - * pthread_spin_unlock.html: New. - * pthread_timechange_handler_np.html: New. - * pthread_win32_attach_detach_np.html: New. - * pthread_win32_test_features_np.html: New. - * sched_get_priority_max.html: New. - * sched_getscheduler.html: New. - * sched_setscheduler.html: New. - * sched_yield.html: New. - * sem_init.html: New. diff --git a/platform/win32/msvc/external/pthreads.2/manual/PortabilityIssues.html b/platform/win32/msvc/external/pthreads.2/manual/PortabilityIssues.html deleted file mode 100644 index d97d0bdeafe..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/PortabilityIssues.html +++ /dev/null @@ -1,718 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> -<HTML> -<HEAD> - <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8"> - <TITLE>PORTABILITYISSUES manual page - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

Portability issues

-

Synopsis

-

Thread priority

-

Description

-

Thread priority

-

POSIX defines a single contiguous range -of numbers that determine a thread's priority. Win32 defines priority -classes - and priority levels relative to these classes. Classes are -simply priority base levels that the defined priority levels are -relative to such that, changing a process's priority class will -change the priority of all of it's threads, while the threads retain -the same relativity to each other.

-

A Win32 system defines a single -contiguous monotonic range of values that define system priority -levels, just like POSIX. However, Win32 restricts individual threads -to a subset of this range on a per-process basis.

-

The following table shows the base -priority levels for combinations of priority class and priority value -in Win32.

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-


-

-
-

Process Priority Class

-
-

Thread Priority Level

-
-

1

-
-

IDLE_PRIORITY_CLASS

-
-

THREAD_PRIORITY_IDLE

-
-

1

-
-

BELOW_NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_IDLE

-
-

1

-
-

NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_IDLE

-
-

1

-
-

ABOVE_NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_IDLE

-
-

1

-
-

HIGH_PRIORITY_CLASS

-
-

THREAD_PRIORITY_IDLE

-
-

2

-
-

IDLE_PRIORITY_CLASS

-
-

THREAD_PRIORITY_LOWEST

-
-

3

-
-

IDLE_PRIORITY_CLASS

-
-

THREAD_PRIORITY_BELOW_NORMAL

-
-

4

-
-

IDLE_PRIORITY_CLASS

-
-

THREAD_PRIORITY_NORMAL

-
-

4

-
-

BELOW_NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_LOWEST

-
-

5

-
-

IDLE_PRIORITY_CLASS

-
-

THREAD_PRIORITY_ABOVE_NORMAL

-
-

5

-
-

BELOW_NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_BELOW_NORMAL

-
-

5

-
-

Background NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_LOWEST

-
-

6

-
-

IDLE_PRIORITY_CLASS

-
-

THREAD_PRIORITY_HIGHEST

-
-

6

-
-

BELOW_NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_NORMAL

-
-

6

-
-

Background NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_BELOW_NORMAL

-
-

7

-
-

BELOW_NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_ABOVE_NORMAL

-
-

7

-
-

Background NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_NORMAL

-
-

7

-
-

Foreground NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_LOWEST

-
-

8

-
-

BELOW_NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_HIGHEST

-
-

8

-
-

NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_ABOVE_NORMAL

-
-

8

-
-

Foreground NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_BELOW_NORMAL

-
-

8

-
-

ABOVE_NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_LOWEST

-
-

9

-
-

NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_HIGHEST

-
-

9

-
-

Foreground NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_NORMAL

-
-

9

-
-

ABOVE_NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_BELOW_NORMAL

-
-

10

-
-

Foreground NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_ABOVE_NORMAL

-
-

10

-
-

ABOVE_NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_NORMAL

-
-

11

-
-

Foreground NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_HIGHEST

-
-

11

-
-

ABOVE_NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_ABOVE_NORMAL

-
-

11

-
-

HIGH_PRIORITY_CLASS

-
-

THREAD_PRIORITY_LOWEST

-
-

12

-
-

ABOVE_NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_HIGHEST

-
-

12

-
-

HIGH_PRIORITY_CLASS

-
-

THREAD_PRIORITY_BELOW_NORMAL

-
-

13

-
-

HIGH_PRIORITY_CLASS

-
-

THREAD_PRIORITY_NORMAL

-
-

14

-
-

HIGH_PRIORITY_CLASS

-
-

THREAD_PRIORITY_ABOVE_NORMAL

-
-

15

-
-

HIGH_PRIORITY_CLASS

-
-

THREAD_PRIORITY_HIGHEST

-
-

15

-
-

HIGH_PRIORITY_CLASS

-
-

THREAD_PRIORITY_TIME_CRITICAL

-
-

15

-
-

IDLE_PRIORITY_CLASS

-
-

THREAD_PRIORITY_TIME_CRITICAL

-
-

15

-
-

BELOW_NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_TIME_CRITICAL

-
-

15

-
-

NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_TIME_CRITICAL

-
-

15

-
-

ABOVE_NORMAL_PRIORITY_CLASS

-
-

THREAD_PRIORITY_TIME_CRITICAL

-
-

16

-
-

REALTIME_PRIORITY_CLASS

-
-

THREAD_PRIORITY_IDLE

-
-

17

-
-

REALTIME_PRIORITY_CLASS

-
-

-7

-
-

18

-
-

REALTIME_PRIORITY_CLASS

-
-

-6

-
-

19

-
-

REALTIME_PRIORITY_CLASS

-
-

-5

-
-

20

-
-

REALTIME_PRIORITY_CLASS

-
-

-4

-
-

21

-
-

REALTIME_PRIORITY_CLASS

-
-

-3

-
-

22

-
-

REALTIME_PRIORITY_CLASS

-
-

THREAD_PRIORITY_LOWEST

-
-

23

-
-

REALTIME_PRIORITY_CLASS

-
-

THREAD_PRIORITY_BELOW_NORMAL

-
-

24

-
-

REALTIME_PRIORITY_CLASS

-
-

THREAD_PRIORITY_NORMAL

-
-

25

-
-

REALTIME_PRIORITY_CLASS

-
-

THREAD_PRIORITY_ABOVE_NORMAL

-
-

26

-
-

REALTIME_PRIORITY_CLASS

-
-

THREAD_PRIORITY_HIGHEST

-
-

27

-
-

REALTIME_PRIORITY_CLASS

-
-

3

-
-

28

-
-

REALTIME_PRIORITY_CLASS

-
-

4

-
-

29

-
-

REALTIME_PRIORITY_CLASS

-
-

5

-
-

30

-
-

REALTIME_PRIORITY_CLASS

-
-

6

-
-

31

-
-

REALTIME_PRIORITY_CLASS

-
-

THREAD_PRIORITY_TIME_CRITICAL

-
-
-
-

Windows NT: Values -7, -6, -5, -4, -3, 3, -4, 5, and 6 are not supported.

-

As you can see, the real priority levels -available to any individual Win32 thread are non-contiguous.

-

An application using Pthreads-w32 should -not make assumptions about the numbers used to represent thread -priority levels, except that they are monotonic between the values -returned by sched_get_priority_min() and sched_get_priority_max(). -E.g. Windows 95, 98, NT, 2000, XP make available a non-contiguous -range of numbers between -15 and 15, while at least one version of -WinCE (3.0) defines the minimum priority (THREAD_PRIORITY_LOWEST) as -5, and the maximum priority (THREAD_PRIORITY_HIGHEST) as 1.

-

Internally, pthreads-win32 maps any -priority levels between THREAD_PRIORITY_IDLE and -THREAD_PRIORITY_LOWEST to THREAD_PRIORITY_LOWEST, or between -THREAD_PRIORITY_TIME_CRITICAL and THREAD_PRIORITY_HIGHEST to -THREAD_PRIORITY_HIGHEST. Currently, this also applies to -REALTIME_PRIORITY_CLASS even if levels -7, -6, -5, -4, -3, 3, 4, 5, -and 6 are supported.

-

If it wishes, a Win32 application using -pthreads-w32 can use the Win32 defined priority macros -THREAD_PRIORITY_IDLE through THREAD_PRIORITY_TIME_CRITICAL.

-

Author

-

Ross Johnson for use with Pthreads-w32.

-

See also

-



-

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/index.html b/platform/win32/msvc/external/pthreads.2/manual/index.html deleted file mode 100644 index 15510369b5b..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/index.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - - - - - - -

POSIX Threads for Windows – REFERENCE - -Pthreads-w32

-

Table of Contents

-

POSIX -threads API reference
Miscellaneous -POSIX thread safe routines provided by Pthreads-w32
Non-portable -Pthreads-w32 routines
Other

-

POSIX threads API -reference

-

pthread_attr_destroy

-

pthread_attr_getdetachstate

-

pthread_attr_getinheritsched

-

pthread_attr_getschedparam

-

pthread_attr_getschedpolicy

-

pthread_attr_getscope

-

pthread_attr_getstackaddr

-

pthread_attr_getstacksize

-

pthread_attr_init

-

pthread_attr_setdetachstate

-

pthread_attr_setinheritsched

-

pthread_attr_setschedparam

-

pthread_attr_setschedpolicy

-

pthread_attr_setscope

-

pthread_attr_setstackaddr

-

pthread_attr_setstacksize

-

pthread_barrierattr_destroy

-

pthread_barrierattr_getpshared

-

pthread_barrierattr_init

-

pthread_barrierattr_setpshared

-

pthread_barrier_destroy

-

pthread_barrier_init

-

pthread_barrier_wait

-

pthread_cancel

-

pthread_cleanup_pop

-

pthread_cleanup_push

-

pthread_condattr_destroy

-

pthread_condattr_getpshared

-

pthread_condattr_init

-

pthread_condattr_setpshared

-

pthread_cond_broadcast

-

pthread_cond_destroy

-

pthread_cond_init

-

pthread_cond_signal

-

pthread_cond_timedwait

-

pthread_cond_wait

-

pthread_create

-

pthread_detach

-

pthread_equal

-

pthread_exit

-

pthread_getconcurrency

-

pthread_getschedparam

-

pthread_getunique_np

-

pthread_getspecific

-

pthread_join

-

pthread_key_create

-

pthread_key_delete

-

pthread_kill

-

pthread_mutexattr_destroy

-

pthread_mutexattr_getkind_np

-

pthread_mutexattr_getpshared

-

pthread_mutexattr_getrobust

-

pthread_mutexattr_gettype

-

pthread_mutexattr_init

-

pthread_mutexattr_setkind_np

-

pthread_mutexattr_setpshared

-

pthread_mutexattr_setrobust

-

pthread_mutexattr_settype

-

pthread_mutex_consistent

-

pthread_mutex_destroy

-

pthread_mutex_init

-

pthread_mutex_lock

-

pthread_mutex_timedlock

-

pthread_mutex_trylock

-

pthread_mutex_unlock

-

pthread_once

-

pthread_rwlockattr_destroy

-

pthread_rwlockattr_getpshared

-

pthread_rwlockattr_init

-

pthread_rwlockattr_setpshared

-

pthread_rwlock_destroy

-

pthread_rwlock_init

-

pthread_rwlock_rdlock

-

pthread_rwlock_timedrdlock

-

pthread_rwlock_timedwrlock

-

pthread_rwlock_tryrdlock

-

pthread_rwlock_trywrlock

-

pthread_rwlock_unlock

-

pthread_rwlock_wrlock

-

pthread_self

-

pthread_setcancelstate

-

pthread_setcanceltype

-

pthread_setconcurrency

-

pthread_setschedparam

-

pthread_setspecific

-

pthread_sigmask

-

pthread_spin_destroy

-

pthread_spin_init

-

pthread_spin_lock

-

pthread_spin_trylock

-

pthread_spin_unlock

-

pthread_testcancel

-

sched_get_priority_max

-

sched_get_priority_min

-

sched_getscheduler

-

sched_setscheduler

-

sched_yield

-

sem_close

-

sem_destroy

-

sem_getvalue

-

sem_init

-

sem_open

-

sem_post

-

sem_post_multiple

-

sem_timedwait

-

sem_trywait

-

sem_unlink

-

sem_wait

-

sigwait

-

Non-portable -Pthreads-w32 routines

-

pthreadCancelableTimedWait

-

pthreadCancelableWait

-

pthread_delay_np

-

pthread_getw32threadhandle_np

-

pthread_num_processors_np

-

pthread_win32_test_features_np

-

pthread_timechange_handler_np

-

pthread_win32_process_attach_np

-

pthread_win32_process_detach_np

-

pthread_win32_thread_attach_np

-

pthread_win32_thread_detach_np

-

Other

-

Portability -issues

- - \ No newline at end of file diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthreadCancelableWait.html b/platform/win32/msvc/external/pthreads.2/manual/pthreadCancelableWait.html deleted file mode 100644 index ae5e80d964d..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthreadCancelableWait.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - PTHREADCANCELLABLEWAIT manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthreadCancelableTimedWait, -pthreadCancelableWait – provide cancellation hooks for user Win32 -routines

-

Synopsis

-

#include <pthread.h> -

-

int pthreadCancelableTimedWait (HANDLE waitHandle, -DWORD timeout);

-

int pthreadCancelableWait (HANDLE waitHandle);

-

Description

-

These two functions provide hooks into the pthread_cancel() -mechanism that will allow you to wait on a Windows handle and make it -a cancellation point. Both functions block until either the given -Win32 HANDLE is signalled, or pthread_cancel() -has been called. They are implemented using WaitForMultipleObjects -on waitHandle and the manually reset Win32 event handle that -is the target of pthread_cancel(). -These routines may be called from Win32 native threads but -pthread_cancel() will -require that thread's POSIX thread ID that the thread must retrieve -using pthread_self().

-

pthreadCancelableTimedWait is the timed version that will -return with the code ETIMEDOUT if the interval timeout -milliseconds elapses before waitHandle is signalled.

-

Cancellation

-

These routines allow routines that block on Win32 HANDLEs to be -cancellable via pthread_cancel().

-

Return Value

-



-

-

Errors

-

The pthreadCancelableTimedWait function returns the -following error code on error: -

-
-
-
ETIMEDOUT -
-
-

-The interval timeout milliseconds elapsed before waitHandle -was signalled.

-

Author

-

Ross Johnson for use with Pthreads-w32.

-

See also

-

pthread_cancel(), -pthread_self()

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_attr_init.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_attr_init.html deleted file mode 100644 index 7da0248f654..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_attr_init.html +++ /dev/null @@ -1,280 +0,0 @@ - - - - - PTHREAD_ATTR_INIT(3) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_attr_init, pthread_attr_destroy, -pthread_attr_setdetachstate, pthread_attr_getdetachstate, -pthread_attr_setschedparam, pthread_attr_getschedparam, -pthread_attr_setschedpolicy, pthread_attr_getschedpolicy, -pthread_attr_setinheritsched, pthread_attr_getinheritsched, -pthread_attr_setscope, pthread_attr_getscope - thread creation -attributes -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_attr_init(pthread_attr_t *attr); -

-

int pthread_attr_destroy(pthread_attr_t *attr); -

-

int pthread_attr_setdetachstate(pthread_attr_t *attr, -int detachstate); -

-

int pthread_attr_getdetachstate(const pthread_attr_t *attr, -int *detachstate); -

-

int pthread_attr_setschedpolicy(pthread_attr_t *attr, -int policy); -

-

int pthread_attr_getschedpolicy(const pthread_attr_t *attr, -int *policy); -

-

int pthread_attr_setschedparam(pthread_attr_t *attr, -const struct sched_param *param); -

-

int pthread_attr_getschedparam(const pthread_attr_t *attr, -struct sched_param *param); -

-

int pthread_attr_setinheritsched(pthread_attr_t *attr, -int inherit); -

-

int pthread_attr_getinheritsched(const pthread_attr_t *attr, -int *inherit); -

-

int pthread_attr_setscope(pthread_attr_t *attr, -int scope); -

-

int pthread_attr_getscope(const pthread_attr_t *attr, -int *scope); -

-

Description

-

Setting attributes for threads is achieved by filling a thread -attribute object attr of type pthread_attr_t, then -passing it as second argument to pthread_create(3) -. Passing NULL is equivalent to passing a thread attribute -object with all attributes set to their default values. -

-

pthread_attr_init initializes the thread attribute object -attr and fills it with default values for the attributes. (The -default values are listed below for each attribute.) -

-

Each attribute attrname (see below for a list of all -attributes) can be individually set using the function -pthread_attr_setattrname and retrieved using the -function pthread_attr_getattrname. -

-

pthread_attr_destroy destroys a thread attribute object, -which must not then be reused until it is reinitialized. -

-

Attribute objects are consulted only when creating a new thread. -The same attribute object can be used for creating several threads. -Modifying an attribute object after a call to pthread_create -does not change the attributes of the thread previously created. -

-

The following thread attributes are supported: -

-

detachstate

-

Control whether the thread is created in the joinable state (value -PTHREAD_CREATE_JOINABLE) or in the detached state ( -PTHREAD_CREATE_DETACHED). -

-

Default value: PTHREAD_CREATE_JOINABLE. -

-

In the joinable state, another thread can synchronize on the -thread termination and recover its termination code using -pthread_join(3) . When a -joinable thread terminates, some of the thread resources are kept -allocated, and released only when another thread performs -pthread_join(3) on that -thread. -

-

In the detached state, the thread's resources are released -immediately when it terminates. pthread_join(3) -cannot be used to synchronize on the thread termination. -

-

A thread created in the joinable state can later be put in the -detached thread using pthread_detach(3) -. -

-

schedpolicy

-

Select the scheduling policy for the thread: one of SCHED_OTHER -(regular, non-real-time scheduling), SCHED_RR (real-time, -round-robin) or SCHED_FIFO (real-time, first-in first-out). -

-

Pthreads-w32 only supports SCHED_OTHER - attempting -to set one of the other policies will return an error ENOTSUP.

-

Default value: SCHED_OTHER. -

-

Pthreads-w32 only supports SCHED_OTHER - attempting -to set one of the other policies will return an error ENOTSUP.

-

The scheduling policy of a thread can be changed after creation -with pthread_setschedparam(3) -. -

-

schedparam

-

Contain the scheduling parameters (essentially, the scheduling -priority) for the thread.

-

Pthreads-w32 supports the priority levels defined by the -Windows system it is running on. Under Windows, thread priorities are -relative to the process priority class, which must be set via the -Windows W32 API.

-

Default value: priority is 0 (Win32 level THREAD_PRIORITY_NORMAL). -

-

The scheduling priority of a thread can be changed after creation -with pthread_setschedparam(3) -. -

-

inheritsched

-

Indicate whether the scheduling policy and scheduling parameters -for the newly created thread are determined by the values of the -schedpolicy and schedparam attributes (value -PTHREAD_EXPLICIT_SCHED) or are inherited from the parent -thread (value PTHREAD_INHERIT_SCHED). -

-

Default value: PTHREAD_EXPLICIT_SCHED. -

-

scope

-

Define the scheduling contention scope for the created thread. The -only value supported in the Pthreads-w32 implementation is -PTHREAD_SCOPE_SYSTEM, meaning that the threads contend for CPU -time with all processes running on the machine. The other value -specified by the standard, PTHREAD_SCOPE_PROCESS, means that -scheduling contention occurs only between the threads of the running -process.

-

Pthreads-w32 only supports PTHREAD_SCOPE_SYSTEM.

-

Default value: PTHREAD_SCOPE_SYSTEM. -

-

Return Value

-

All functions return 0 on success and a non-zero error code on -error. On success, the pthread_attr_getattrname -functions also store the current value of the attribute attrname -in the location pointed to by their second argument. -

-

Errors

-

The pthread_attr_setdetachstate function returns the -following error codes on error: -

-
-
-
EINVAL -
- the specified detachstate is not one of - PTHREAD_CREATE_JOINABLE or PTHREAD_CREATE_DETACHED. -
-
-

-The pthread_attr_setschedparam function returns the following -error codes on error: -

-
-
-
EINVAL -
- the priority specified in param is outside the range of - allowed priorities for the scheduling policy currently in attr - (1 to 99 for SCHED_FIFO and SCHED_RR; 0 for - SCHED_OTHER). -
-
-

-The pthread_attr_setschedpolicy function returns the following -error codes on error: -

-
-
-
EINVAL -
- the specified policy is not one of SCHED_OTHER, - SCHED_FIFO, or SCHED_RR. -
- ENOTSUP -
- policy is not SCHED_OTHER, the only value supported - by Pthreads-w32.
-
-

-The pthread_attr_setinheritsched function returns the -following error codes on error: -

-
-
-
EINVAL -
- the specified inherit is not one of PTHREAD_INHERIT_SCHED - or PTHREAD_EXPLICIT_SCHED. -
-
-

-The pthread_attr_setscope function returns the following error -codes on error: -

-
-
-
EINVAL -
- the specified scope is not one of PTHREAD_SCOPE_SYSTEM - or PTHREAD_SCOPE_PROCESS. -
- ENOTSUP -
- the specified scope is PTHREAD_SCOPE_PROCESS (not - supported by Pthreads-w32). -
-
-

-Author

-

Xavier Leroy <Xavier.Leroy@inria.fr> -

-

Modified by Ross Johnson for use with Pthreads-w32.

-

See Also

-

pthread_create(3) , -pthread_join(3) , -pthread_detach(3) , -pthread_setschedparam(3) -. -

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_attr_setstackaddr.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_attr_setstackaddr.html deleted file mode 100644 index 38a4355f0bb..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_attr_setstackaddr.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - "PTHREAD_ATTR_GETSTACKADDR"(P) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_attr_getstackaddr, pthread_attr_setstackaddr - get and set -the stackaddr attribute -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_attr_getstackaddr(const pthread_attr_t *restrict -attr, void **restrict stackaddr);
int -pthread_attr_setstackaddr(pthread_attr_t *
attr, void -*stackaddr); -

-

Description

-

The pthread_attr_getstackaddr and pthread_attr_setstackaddr -functions, respectively, shall get and set the thread creation -stackaddr attribute in the attr object. -

-

The stackaddr attribute specifies the location of storage -to be used for the created thread’s stack. The size of the storage -shall be at least {PTHREAD_STACK_MIN}. -

-

Pthreads-w32 defines _POSIX_THREAD_ATTR_STACKADDR in -pthread.h as -1 to indicate that these routines are implemented but -cannot used to set or get the stack address. These routines always -return the error ENOSYS when called.

-

Return Value

-

Upon successful completion, pthread_attr_getstackaddr and -pthread_attr_setstackaddr shall return a value of 0; -otherwise, an error number shall be returned to indicate the error. -

-

The pthread_attr_getstackaddr function stores the stackaddr -attribute value in stackaddr if successful. -

-

Errors

-

The pthread_attr_setstackaddr function always returns the -following error code: -

-
-
-
ENOSYS
- The function is not supported. -
-
-

-The pthread_attr_getstackaddr function always returns the -following error code: -

-
-
-
ENOSYS
- The function is not supported. -
-
-

-These functions shall not return an error code of [EINTR]. -

-

The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

The specification of the stackaddr attribute presents -several ambiguities that make portable use of these interfaces -impossible. The description of the single address parameter as a -"stack" does not specify a particular relationship between -the address and the "stack" implied by that address. For -example, the address may be taken as the low memory address of a -buffer intended for use as a stack, or it may be taken as the address -to be used as the initial stack pointer register value for the new -thread. These two are not the same except for a machine on which the -stack grows "up" from low memory to high, and on which a -"push" operation first stores the value in memory and then -increments the stack pointer register. Further, on a machine where -the stack grows "down" from high memory to low, -interpretation of the address as the "low memory" address -requires a determination of the intended size of the stack. -IEEE Std 1003.1-2001 has introduced the new interfaces -pthread_attr_setstack(3) -and pthread_attr_getstack(3) -to resolve these ambiguities. -

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

See Also

-

pthread_attr_destroy(3) -, pthread_attr_getdetachstate(3) -, pthread_attr_getstack(3) -, pthread_attr_getstacksize(3) -, pthread_attr_setstack(3) -, pthread_create(3) , the -Base Definitions volume of IEEE Std 1003.1-2001, -<limits.h>, <pthread.h> -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_attr_setstacksize.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_attr_setstacksize.html deleted file mode 100644 index 0d9672b0356..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_attr_setstacksize.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - "PTHREAD_ATTR_GETSTACKSIZE"(P) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_attr_getstacksize, pthread_attr_setstacksize - get and set -the stacksize attribute -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_attr_getstacksize(const pthread_attr_t *restrict -attr, size_t *restrict stacksize);
int -pthread_attr_setstacksize(pthread_attr_t *
attr, size_t -stacksize); -

-

Description

-

The pthread_attr_getstacksize and pthread_attr_setstacksize -functions, respectively, shall get and set the thread creation -stacksize attribute in the attr object. -

-

The stacksize attribute shall define the minimum stack size -(in bytes) allocated for the created threads stack. -

-

Pthreads-w32 defines _POSIX_THREAD_ATTR_STACKSIZE in -pthread.h to indicate that these routines are implemented and may be -used to set or get the stack size.

-

Default value: 0 (in Pthreads-w32 a value of 0 means the stack -will grow as required)

-

Return Value

-

Upon successful completion, pthread_attr_getstacksize and -pthread_attr_setstacksize shall return a value of 0; -otherwise, an error number shall be returned to indicate the error. -

-

The pthread_attr_getstacksize function stores the stacksize -attribute value in stacksize if successful. -

-

Errors

-

The pthread_attr_setstacksize function shall fail if: -

-
-
EINVAL -
- The value of stacksize is less than {PTHREAD_STACK_MIN} or - exceeds a system-imposed limit. -
-

-These functions shall not return an error code of [EINTR]. -

-

The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

None. -

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

See Also

-

pthread_attr_destroy(3) -, pthread_attr_getstackaddr(3) -, pthread_attr_getdetachstate(3) -, pthread_create(3) , -the Base Definitions volume of IEEE Std 1003.1-2001, -<limits.h>, <pthread.h> -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_barrier_init.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_barrier_init.html deleted file mode 100644 index 637630ea5e4..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_barrier_init.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - "PTHREAD_BARRIER_DESTROY"(P) manual page - - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_barrier_destroy, pthread_barrier_init - destroy and -initialize a barrier object (ADVANCED REALTIME THREADS) -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_barrier_destroy(pthread_barrier_t *barrier); -
int pthread_barrier_init(pthread_barrier_t *restrict
barrier, -const pthread_barrierattr_t *restrict attr, unsigned -count); -

-

Description

-

The pthread_barrier_destroy function shall destroy the -barrier referenced by barrier and release any resources used -by the barrier. The effect of subsequent use of the barrier is -undefined until the barrier is reinitialized by another call to -pthread_barrier_init . An implementation may use this function -to set barrier to an invalid value. An error code is returned if pthread_barrier_destroy is called when any thread is -blocked on the barrier, or if this function is called with an -uninitialized barrier. -

-

The pthread_barrier_init function shall allocate any -resources required to use the barrier referenced by barrier -and shall initialize the barrier with attributes referenced by attr. -If attr is NULL, the default barrier attributes shall be used; -the effect is the same as passing the address of a default barrier -attributes object. The results are undefined if pthread_barrier_init -is called when any thread is blocked on the barrier (that is, has not -returned from the pthread_barrier_wait(3) -call). The results are undefined if a barrier is used without first -being initialized. The results are undefined if pthread_barrier_init -is called specifying an already initialized barrier. -

-

The count argument specifies the number of threads that -must call pthread_barrier_wait(3) -before any of them successfully return from the call. The value -specified by count must be greater than zero. -

-

If the pthread_barrier_init function fails, the barrier -shall not be initialized and the contents of barrier are -undefined. -

-

Only the object referenced by barrier may be used for -performing synchronization. The result of referring to copies of that -object in calls to pthread_barrier_destroy or -pthread_barrier_wait(3) -is undefined.

-

Return Value

-

Upon successful completion, these functions shall return zero; -otherwise, an error number shall be returned to indicate the error. -

-

Errors

-

The pthread_barrier_destroy function may fail if: -

-
-
EBUSY -
- The implementation has detected an attempt to destroy a barrier - while it is in use (for example, while being used in a - pthread_barrier_wait(3) - call) by another thread. -
- EINVAL -
- The value specified by barrier is invalid. -
-

-The pthread_barrier_init function shall fail if: -

-
-
EAGAIN -
- The system lacks the necessary resources to initialize another - barrier. -
- EINVAL -
- The value specified by count is equal to zero. -
- ENOMEM -
- Insufficient memory exists to initialize the barrier. -
-

-The pthread_barrier_init function may fail if: -

-
-
EBUSY -
- The implementation has detected an attempt to reinitialize a barrier - while it is in use (for example, while being used in a - pthread_barrier_wait(3) - call) by another thread. -
- EINVAL -
- The value specified by attr is invalid. -
-

-These functions shall not return an error code of [EINTR]. -

-

The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

The pthread_barrier_destroy and pthread_barrier_init -functions are part of the Barriers option and need not be provided on -all implementations. -

-

Pthreads-w32 defines _POSIX_BARRIERS to indicate -that these routines are implemented and may be used.

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

Known Bugs

-
-
In - pthreads-win32, - the behaviour of threads which enter pthread_barrier_wait(3) - while the barrier is being destroyed is undefined. -
-

-See Also

-

pthread_barrier_wait(3) -, the Base Definitions volume of IEEE Std 1003.1-2001, -<pthread.h> -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - \ No newline at end of file diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_barrier_wait.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_barrier_wait.html deleted file mode 100644 index e8eb2d16cbb..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_barrier_wait.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - "PTHREAD_BARRIER_WAIT"(P) manual page - - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_barrier_wait - synchronize at a barrier (ADVANCED -REALTIME THREADS) -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_barrier_wait(pthread_barrier_t *barrier); - -

-

Description

-

The pthread_barrier_wait function shall synchronize -participating threads at the barrier referenced by barrier. -The calling thread shall block until the required number of threads -have called pthread_barrier_wait specifying the barrier. -

-

When the required number of threads have called -pthread_barrier_wait specifying the barrier, the constant -PTHREAD_BARRIER_SERIAL_THREAD shall be returned to one -unspecified thread and zero shall be returned to each of the -remaining threads. At this point, the barrier shall be reset to the -state it had as a result of the most recent pthread_barrier_init(3) -function that referenced it. -

-

The constant PTHREAD_BARRIER_SERIAL_THREAD is defined in -<pthread.h> and its value shall be distinct from any -other value returned by pthread_barrier_wait . -

-

The results are undefined if this function is called with an -uninitialized barrier. -

-

If a signal is delivered to a thread blocked on a barrier, upon -return from the signal handler the thread shall resume waiting at the -barrier if the barrier wait has not completed (that is, if the -required number of threads have not arrived at the barrier during the -execution of the signal handler); otherwise, the thread shall -continue as normal from the completed barrier wait. Until the thread -in the signal handler returns from it, it is unspecified whether -other threads may proceed past the barrier once they have all reached -it. -

-

A thread that has blocked on a barrier shall not prevent any -unblocked thread that is eligible to use the same processing -resources from eventually making forward progress in its execution. -Eligibility for processing resources shall be determined by the -scheduling policy. -

-

Return Value

-

Upon successful completion, the pthread_barrier_wait -function shall return PTHREAD_BARRIER_SERIAL_THREAD for a -single (arbitrary) thread synchronized at the barrier and zero for -each of the other threads. Otherwise, an error number shall be -returned to indicate the error. -

-

Errors

-

The pthread_barrier_wait function may fail if: -

-
-
EINVAL -
- The value specified by barrier does not refer to an - initialized barrier object. -
-

-This function shall not return an error code of [EINTR]. -

-

The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

Applications using this function may be subject to priority -inversion, as discussed in the Base Definitions volume of -IEEE Std 1003.1-2001, Section 3.285, Priority Inversion. -

-

The pthread_barrier_wait function is part of the Barriers -option and need not be provided on all implementations. -

-

Pthreads-w32 defines _POSIX_BARRIERS to indicate -that this routine is implemented and may be used.

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

Known Bugs

-
- None.
-

-See Also

-

pthread_barrier_destroy(3), -pthread_barrier_init(3), -the Base Definitions volume of IEEE Std 1003.1-2001, -<pthread.h> -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - \ No newline at end of file diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_barrierattr_init.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_barrierattr_init.html deleted file mode 100644 index 87f846f2394..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_barrierattr_init.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - "PTHREAD_BARRIERATTR_DESTROY"(P) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_barrierattr_destroy, pthread_barrierattr_init - destroy -and initialize the barrier attributes object (ADVANCED REALTIME -THREADS) -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_barrierattr_destroy(pthread_barrierattr_t *attr); -
int pthread_barrierattr_init(pthread_barrierattr_t *
attr); - -

-

Description

-

The pthread_barrierattr_destroy function shall destroy a -barrier attributes object. A destroyed attr attributes object -can be reinitialized using pthread_barrierattr_init ; the -results of otherwise referencing the object after it has been -destroyed are undefined. An implementation may cause -pthread_barrierattr_destroy to set the object referenced by -attr to an invalid value. -

-

The pthread_barrierattr_init function shall initialize a -barrier attributes object attr with the default value for all -of the attributes defined by the implementation. -

-

Results are undefined if pthread_barrierattr_init is called -specifying an already initialized attr attributes object. -

-

After a barrier attributes object has been used to initialize one -or more barriers, any function affecting the attributes object -(including destruction) shall not affect any previously initialized -barrier. -

-

Return Value

-

If successful, the pthread_barrierattr_destroy and -pthread_barrierattr_init functions shall return zero; -otherwise, an error number shall be returned to indicate the error. -

-

Errors

-

The pthread_barrierattr_destroy function may fail if: -

-
-
EINVAL -
- The value specified by attr is invalid. -
-

-The pthread_barrierattr_init function shall fail if: -

-
-
ENOMEM -
- Insufficient memory exists to initialize the barrier attributes - object. -
-

-These functions shall not return an error code of [EINTR]. -

-

The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

The pthread_barrierattr_destroy and -pthread_barrierattr_init functions are part of the Barriers -option and need not be provided on all implementations. -

-

Pthreads-w32 defines _POSIX_BARRIERS to indicate -that these routines are implemented and may be used.

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

See Also

-

pthread_barrierattr_getpshared(3) -, pthread_barrierattr_setpshared(3) -, the Base Definitions volume of IEEE Std 1003.1-2001, -<pthread.h>. -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_barrierattr_setpshared.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_barrierattr_setpshared.html deleted file mode 100644 index dc965438684..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_barrierattr_setpshared.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - "PTHREAD_BARRIERATTR_GETPSHARED"(P) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_barrierattr_getpshared, pthread_barrierattr_setpshared - -get and set the process-shared attribute of the barrier attributes -object (ADVANCED REALTIME THREADS) -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_barrierattr_getpshared(const pthread_barrierattr_t -* restrict attr, int *restrict pshared); -
int pthread_barrierattr_setpshared(pthread_barrierattr_t *
attr, -int pshared); -

-

Description

-

The pthread_barrierattr_getpshared function shall obtain -the value of the process-shared attribute from the attributes -object referenced by attr. The pthread_barrierattr_setpshared -function shall set the process-shared attribute in an -initialized attributes object referenced by attr. -

-

The process-shared attribute is set to -PTHREAD_PROCESS_SHARED to permit a barrier to be operated upon by any -thread that has access to the memory where the barrier is allocated. -If the process-shared attribute is PTHREAD_PROCESS_PRIVATE, -the barrier shall only be operated upon by threads created within the -same process as the thread that initialized the barrier; if threads -of different processes attempt to operate on such a barrier, the -behavior is undefined. The default value of the attribute shall be -PTHREAD_PROCESS_PRIVATE. Both constants PTHREAD_PROCESS_SHARED and -PTHREAD_PROCESS_PRIVATE are defined in <pthread.h>. -

-

Pthreads-w32 defines _POSIX_THREAD_PROCESS_SHARED in -pthread.h as -1 to indicate that these routines are implemented but -that the process shared attribute is not supported.

-

Additional attributes, their default values, and the names of the -associated functions to get and set those attribute values are -implementation-defined. -

-

Return Value

-

If successful, the pthread_barrierattr_getpshared function -shall return zero and store the value of the process-shared -attribute of attr into the object referenced by the pshared -parameter. Otherwise, an error number shall be returned to indicate -the error. -

-

If successful, the pthread_barrierattr_setpshared function -shall return zero; otherwise, an error number shall be returned to -indicate the error. -

-

Errors

-

These functions may fail if: -

-
-
EINVAL -
- The value specified by attr is invalid. -
- The pthread_barrierattr_setpshared function may fail if: -
- EINVAL -
- The new value specified for the process-shared attribute is - not one of the legal values PTHREAD_PROCESS_SHARED or - PTHREAD_PROCESS_PRIVATE. -
- ENOSYS -
- The value specified by attr was PTHREAD_PROCESS_SHARED - (Pthreads-w32).
-

-These functions shall not return an error code of [EINTR]. -

-

The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

The pthread_barrierattr_getpshared and -pthread_barrierattr_setpshared functions are part of the -Barriers option and need not be provided on all implementations. -

-

Pthreads-w32 defines _POSIX_BARRIERS and -_POSIX_THREAD_PROCESS_SHARED in pthread.h as -1 to indicate -that these routines are implemented and may be used, but do not -support the process shared option.

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

See Also

-

pthread_barrier_destroy(3) -, pthread_barrierattr_destroy(3) -, pthread_barrierattr_init(3) -, the Base Definitions volume of IEEE Std 1003.1-2001, -<pthread.h> -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_cancel.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_cancel.html deleted file mode 100644 index 99b55536233..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_cancel.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - PTHREAD_CANCEL(3) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_cancel, pthread_setcancelstate, pthread_setcanceltype, -pthread_testcancel - thread cancellation -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_cancel(pthread_t thread); -

-

int pthread_setcancelstate(int state, int -*oldstate); -

-

int pthread_setcanceltype(int type, int -*oldtype); -

-

void pthread_testcancel(void); -

-

Description

-

Cancellation is the mechanism by which a thread can terminate the -execution of another thread. More precisely, a thread can send a -cancellation request to another thread. Depending on its settings, -the target thread can then either ignore the request, honor it -immediately, or defer it until it reaches a cancellation point. -

-

When a thread eventually honors a cancellation request, it -performs as if pthread_exit(PTHREAD_CANCELED) has been called -at that point: all cleanup handlers are executed in reverse order, -destructor functions for thread-specific data are called, and finally -the thread stops executing with the return value PTHREAD_CANCELED. -See pthread_exit(3) for more -information. -

-

pthread_cancel sends a cancellation request to the thread -denoted by the thread argument. -

-

pthread_setcancelstate changes the cancellation state for -the calling thread -- that is, whether cancellation requests are -ignored or not. The state argument is the new cancellation -state: either PTHREAD_CANCEL_ENABLE to enable cancellation, or -PTHREAD_CANCEL_DISABLE to disable cancellation (cancellation -requests are ignored). If oldstate is not NULL, the -previous cancellation state is stored in the location pointed to by -oldstate, and can thus be restored later by another call to -pthread_setcancelstate. -

-

pthread_setcanceltype changes the type of responses to -cancellation requests for the calling thread: asynchronous -(immediate) or deferred. The type argument is the new -cancellation type: either PTHREAD_CANCEL_ASYNCHRONOUS to -cancel the calling thread as soon as the cancellation request is -received, or PTHREAD_CANCEL_DEFERRED to keep the cancellation -request pending until the next cancellation point. If oldtype -is not NULL, the previous cancellation state is stored in the -location pointed to by oldtype, and can thus be restored later -by another call to pthread_setcanceltype. -

-

Pthreads-w32 provides two levels of support for -PTHREAD_CANCEL_ASYNCHRONOUS: full and partial. Full support -requires an additional DLL and driver be installed on the Windows -system (see the See Also section below) that allows blocked threads -to be cancelled immediately. Partial support means that the target -thread will not cancel until it resumes execution naturally. Partial -support is provided if either the DLL or the driver are not -automatically detected by the pthreads-w32 library at run-time.

-

Threads are always created by pthread_create(3) -with cancellation enabled and deferred. That is, the initial -cancellation state is PTHREAD_CANCEL_ENABLE and the initial -type is PTHREAD_CANCEL_DEFERRED. -

-

Cancellation points are those points in the program execution -where a test for pending cancellation requests is performed and -cancellation is executed if positive. The following POSIX threads -functions are cancellation points: -

-

pthread_join(3) -
pthread_cond_wait(3) -
pthread_cond_timedwait(3) -
pthread_testcancel(3)
sem_wait(3) -
sem_timedwait(3)
sigwait(3)

-

Pthreads-w32 provides two functions to enable additional -cancellation points to be created in user functions that block on -Win32 HANDLEs:

-

pthreadCancelableWait() -
pthreadCancelableTimedWait()

-

All other POSIX threads functions are guaranteed not to be -cancellation points. That is, they never perform cancellation in -deferred cancellation mode. -

-

pthread_testcancel does nothing except testing for pending -cancellation and executing it. Its purpose is to introduce explicit -checks for cancellation in long sequences of code that do not call -cancellation point functions otherwise. -

-

Return Value

-

pthread_cancel, pthread_setcancelstate and -pthread_setcanceltype return 0 on success and a non-zero error -code on error. -

-

Errors

-

pthread_cancel returns the following error code on error: -

-
-
-
ESRCH -
- no thread could be found corresponding to that specified by the - thread ID. -
-
-

-pthread_setcancelstate returns the following error code on -error: -

-
-
-
EINVAL -
- the state argument is not -
-
-
-PTHREAD_CANCEL_ENABLE nor PTHREAD_CANCEL_DISABLE -
-

pthread_setcanceltype returns the following error code on -error: -

-
-
-
EINVAL -
- the type argument is not -
-
-
-PTHREAD_CANCEL_DEFERRED nor PTHREAD_CANCEL_ASYNCHRONOUS -
-

Author

-

Xavier Leroy <Xavier.Leroy@inria.fr> -

-

Modified by Ross Johnson for use with Pthreads-w32.

-

See Also

-

pthread_exit(3) , -pthread_cleanup_push(3) -, pthread_cleanup_pop(3) -, Pthreads-w32 package README file 'Prerequisites' section. -

-

Bugs

-

POSIX specifies that a number of system calls (basically, all -system calls that may block, such as read(2) -, write(2) , wait(2) -, etc.) and library functions that may call these system calls (e.g. -fprintf(3) ) are cancellation -points. Pthreads-win32 is not integrated enough with the C -library to implement this, and thus none of the C library functions -is a cancellation point. -

-

A workaround for these calls is to temporarily switch to -asynchronous cancellation (assuming full asynchronous cancellation -support is installed). So, checking for cancellation during a read -system call, for instance, can be achieved as follows: -

-


-
-
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &oldCancelType);
-read(fd, buffer, length);
-pthread_setcanceltype(oldCancelType, NULL);
-
-
Table of Contents
- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_cleanup_push.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_cleanup_push.html deleted file mode 100644 index 052ea6e9737..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_cleanup_push.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - PTHREAD_CLEANUP(3) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_cleanup_push, pthread_cleanup_pop - install and remove -cleanup handlers -

-

Synopsis

-

#include <pthread.h> -

-

void pthread_cleanup_push(void (*routine) (void -*), void *arg); -

-

void pthread_cleanup_pop(int execute); -

-

Description

-

Cleanup handlers are functions that get called when a thread -terminates, either by calling pthread_exit(3) -or because of cancellation. Cleanup handlers are installed and -removed following a stack-like discipline. -

-

The purpose of cleanup handlers is to free the resources that a -thread may hold at the time it terminates. In particular, if a thread -exits or is cancelled while it owns a locked mutex, the mutex will -remain locked forever and prevent other threads from executing -normally. The best way to avoid this is, just before locking the -mutex, to install a cleanup handler whose effect is to unlock the -mutex. Cleanup handlers can be used similarly to free blocks -allocated with malloc(3) or close -file descriptors on thread termination. -

-

pthread_cleanup_push installs the routine function -with argument arg as a cleanup handler. From this point on to -the matching pthread_cleanup_pop, the function routine -will be called with arguments arg when the thread terminates, -either through pthread_exit(3) -or by cancellation. If several cleanup handlers are active at that -point, they are called in LIFO order: the most recently installed -handler is called first. -

-

pthread_cleanup_pop removes the most recently installed -cleanup handler. If the execute argument is not 0, it also -executes the handler, by calling the routine function with -arguments arg. If the execute argument is 0, the -handler is only removed but not executed. -

-

Matching pairs of pthread_cleanup_push and -pthread_cleanup_pop must occur in the same function, at the -same level of block nesting. Actually, pthread_cleanup_push -and pthread_cleanup_pop are macros, and the expansion of -pthread_cleanup_push introduces an open brace { with -the matching closing brace } being introduced by the expansion -of the matching pthread_cleanup_pop. -

-

Return Value

-
None. -
-

Errors

-
None. -
-

Author

-
Xavier Leroy -<Xavier.Leroy@inria.fr> -
-
Modified by -Ross Johnson for use with Pthreads-w32.
-

See Also

-
pthread_exit(3) -, pthread_cancel(3) , -pthread_setcanceltype(3) . -
-

Example

-
Here is how -to lock a mutex mut in such a way that it will be unlocked if -the thread is canceled while mut is locked: -
-
pthread_cleanup_push(pthread_mutex_unlock, (void *) &mut);
-pthread_mutex_lock(&mut);
-/* do some work */
-pthread_mutex_unlock(&mut);
-pthread_cleanup_pop(0);
-Equivalently, the last two lines can be replaced by -
-
pthread_cleanup_pop(1);
-Notice that the code above is safe only in deferred cancellation mode -(see pthread_setcanceltype(3) -). In asynchronous cancellation mode, a cancellation can occur -between pthread_cleanup_push and pthread_mutex_lock, or -between pthread_mutex_unlock and pthread_cleanup_pop, -resulting in both cases in the thread trying to unlock a mutex not -locked by the current thread. This is the main reason why -asynchronous cancellation is difficult to use. -
-
If the code -above must also work in asynchronous cancellation mode, then it must -switch to deferred mode for locking and unlocking the mutex: -
-
pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &oldtype);
-pthread_cleanup_push(pthread_mutex_unlock, (void *) &mut);
-pthread_mutex_lock(&mut);
-/* do some work */
-pthread_cleanup_pop(1);
-pthread_setcanceltype(oldtype, NULL);
-
-
-Table of Contents
- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_cond_init.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_cond_init.html deleted file mode 100644 index ecbf6aecf59..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_cond_init.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - PTHREAD_COND(3) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_cond_init, pthread_cond_destroy, pthread_cond_signal, -pthread_cond_broadcast, pthread_cond_wait, pthread_cond_timedwait - -operations on conditions -

-

Synopsis

-

#include <pthread.h> -

-

pthread_cond_t cond = PTHREAD_COND_INITIALIZER; -

-

int pthread_cond_init(pthread_cond_t *cond, -pthread_condattr_t *cond_attr); -

-

int pthread_cond_signal(pthread_cond_t *cond); -

-

int pthread_cond_broadcast(pthread_cond_t *cond); -

-

int pthread_cond_wait(pthread_cond_t *cond, -pthread_mutex_t *mutex); -

-

int pthread_cond_timedwait(pthread_cond_t *cond, -pthread_mutex_t *mutex, const struct timespec -*abstime); -

-

int pthread_cond_destroy(pthread_cond_t *cond); -

-

Description

-

A condition (short for ‘‘condition variable’’) is a -synchronization device that allows threads to suspend execution and -relinquish the processors until some predicate on shared data is -satisfied. The basic operations on conditions are: signal the -condition (when the predicate becomes true), and wait for the -condition, suspending the thread execution until another thread -signals the condition. -

-

A condition variable must always be associated with a mutex, to -avoid the race condition where a thread prepares to wait on a -condition variable and another thread signals the condition just -before the first thread actually waits on it. -

-

pthread_cond_init initializes the condition variable cond, -using the condition attributes specified in cond_attr, or -default attributes if cond_attr is NULL. -

-

Variables of type pthread_cond_t can also be initialized -statically, using the constant PTHREAD_COND_INITIALIZER. In -the Pthreads-w32 implementation, an application should still -call pthread_cond_destroy at some point to ensure that any -resources consumed by the condition variable are released.

-

pthread_cond_signal restarts one of the threads that are -waiting on the condition variable cond. If no threads are -waiting on cond, nothing happens. If several threads are -waiting on cond, exactly one is restarted, but it is not -specified which. -

-

pthread_cond_broadcast restarts all the threads that are -waiting on the condition variable cond. Nothing happens if no -threads are waiting on cond. -

-

pthread_cond_wait atomically unlocks the mutex (as -per pthread_unlock_mutex) and waits for the condition variable -cond to be signalled. The thread execution is suspended and -does not consume any CPU time until the condition variable is -signalled. The mutex must be locked by the calling thread on -entrance to pthread_cond_wait. Before returning to the calling -thread, pthread_cond_wait re-acquires mutex (as per -pthread_lock_mutex). -

-

Unlocking the mutex and suspending on the condition variable is -done atomically. Thus, if all threads always acquire the mutex before -signalling the condition, this guarantees that the condition cannot -be signalled (and thus ignored) between the time a thread locks the -mutex and the time it waits on the condition variable. -

-

pthread_cond_timedwait atomically unlocks mutex and -waits on cond, as pthread_cond_wait does, but it also -bounds the duration of the wait. If cond has not been -signalled within the amount of time specified by abstime, the -mutex mutex is re-acquired and pthread_cond_timedwait -returns the error ETIMEDOUT. The abstime parameter -specifies an absolute time, with the same origin as time(2) -and gettimeofday(2). -

-

pthread_cond_destroy destroys a condition variable, freeing -the resources it might hold. No threads must be waiting on the -condition variable on entrance to pthread_cond_destroy.

-

Cancellation

-

pthread_cond_wait and pthread_cond_timedwait are -cancellation points. If a thread is cancelled while suspended in one -of these functions, the thread immediately resumes execution, then -locks again the mutex argument to pthread_cond_wait and -pthread_cond_timedwait, and finally executes the cancellation. -Consequently, cleanup handlers are assured that mutex is -locked when they are called. -

-

Async-signal Safety

-

The condition functions are not async-signal safe, and should not -be called from a signal handler. In particular, calling -pthread_cond_signal or pthread_cond_broadcast from a -signal handler may deadlock the calling thread. -

-

Return Value

-

All condition variable functions return 0 on success and a -non-zero error code on error. -

-

Errors

-

pthread_cond_init, pthread_cond_signal, -pthread_cond_broadcast, and pthread_cond_wait never -return an error code. -

-

The pthread_cond_init function returns the following error -codes on error: -

-
-
-
EINVAL -
- The cond argument is invalid. -
- ENOMEM -
-
-
-There was not enough memory to allocate the condition variable. -
-

The pthread_cond_signal function returns the following -error codes on error: -

-
-
-
EINVAL -
- The cond argument is invalid. -
-
-

-The pthread_cond_broadcast function returns the following -error codes on error: -

-
-
-
EINVAL -
- The cond argument is invalid. -
-
-

-The pthread_cond_wait function returns the following error -codes on error: -

-
-
-
EINVAL -
- The cond argument is invalid. -
- ENOMEM -
-
-
-There was not enough memory to allocate the statically initialised -condition variable. Statically initialised condition variables are -dynamically allocated by the first thread to wait on them.
-

The pthread_cond_timedwait function returns the following -error codes on error: -

-
-
-
EINVAL -
-
-

-The cond argument is invalid. -

-
-
-
ETIMEDOUT -
- The condition variable was not signalled before the timeout - specified by abstime -
- ENOMEM -
-
-
-There was not enough memory to allocate the statically initialised -condition variable. Statically initialised condition variables are -dynamically allocated by the first thread to wait on them. -
-

The pthread_cond_destroy function returns the following -error code on error: -

-
-
-
EINVAL -
-
-

-The cond argument is invalid. -

-
-
-
EBUSY -
- Some threads are currently waiting on cond. -
-
-

-Author

-

Xavier Leroy <Xavier.Leroy@inria.fr> -

-

Modified by Ross Johnson for use with Pthreads-w32.

-

See Also

-

pthread_condattr_init(3) -, pthread_mutex_lock(3) -, pthread_mutex_unlock(3) -, pthread_cancel(3). -

-

Example

-

Consider two shared variables x and y, protected by -the mutex mut, and a condition variable cond that is to -be signaled whenever x becomes greater than y. -

-
int x,y;
-pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
-pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
-Waiting until x is greater than y is performed as -follows: -
-
pthread_mutex_lock(&mut);
-while (x <= y) {
-        pthread_cond_wait(&cond, &mut);
-}
-/* operate on x and y */
-pthread_mutex_unlock(&mut);
-Modifications on x and y that may cause x to -become greater than y should signal the condition if needed: -
-
pthread_mutex_lock(&mut);
-/* modify x and y */
-if (x > y) pthread_cond_broadcast(&cond);
-pthread_mutex_unlock(&mut);
-If it can be proved that at most one waiting thread needs to be waken -up (for instance, if there are only two threads communicating through -x and y), pthread_cond_signal can be used as a -slightly more efficient alternative to pthread_cond_broadcast. -If in doubt, use pthread_cond_broadcast. -
-
To wait for x to -become greater than y with a timeout of 5 seconds, do: -
-
struct timeval now;
-struct timespec timeout;
-int retcode;
-pthread_mutex_lock(&mut);
-gettimeofday(&now);
-timeout.tv_sec = now.tv_sec + 5;
-timeout.tv_nsec = now.tv_usec * 1000;
-retcode = 0;
-while (x <= y && retcode != ETIMEDOUT) {
-        retcode = pthread_cond_timedwait(&cond, &mut, &timeout);
-}
-if (retcode == ETIMEDOUT) {
-        /* timeout occurred */
-} else {
-        /* operate on x and y */
-}
-pthread_mutex_unlock(&mut);
-
-
-Table of Contents
- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_condattr_init.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_condattr_init.html deleted file mode 100644 index b799e18bcd3..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_condattr_init.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - PTHREAD_CONDATTR(3) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_condattr_init, pthread_condattr_destroy - condition -creation -

-

attributes -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_condattr_init(pthread_condattr_t *attr); -

-

int pthread_condattr_destroy(pthread_condattr_t *attr); -

-

Description

-

Condition attributes can be specified at condition creation time, -by passing a condition attribute object as second argument to -pthread_cond_init(3) . -Passing NULL is equivalent to passing a condition attribute -object with all attributes set to their default values. -

-

pthread_condattr_init initializes the condition attribute -object attr and fills it with default values for the -attributes. pthread_condattr_destroy destroys a condition -attribute object, which must not be reused until it is reinitialized.

-

Pthreads-w32 defines _POSIX_THREAD_PROCESS_SHARED in -pthread.h as -1 to indicate that the attribute routines are -implemented but that the process shared attribute is not supported.

-

Return Value

-

All condition variable functions return 0 on success and a -non-zero error code on error.

-

Errors

-

The pthread_condattr_init function returns the following -error code on error: -

-
-
-
ENOMEM -
- The was insufficient memory to create the attribute. - -
-
-

-The pthread_condattr_destroy function returns the following -error code on error: -

-
-
-
EINVAL -
- The attr argument is not valid. - -
-
-

-Author

-

Xavier Leroy <Xavier.Leroy@inria.fr> -

-

Modified by Ross Johnson for use with Pthreads-w32.

-

See Also

-

pthread_cond_init(3) . -

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_condattr_setpshared.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_condattr_setpshared.html deleted file mode 100644 index ff4fe223df3..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_condattr_setpshared.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - "PTHREAD_CONDATTR_GETPSHARED"(P) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_condattr_getpshared, pthread_condattr_setpshared - get and -set the process-shared condition variable attributes -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_condattr_getpshared(const pthread_condattr_t -*restrict attr, int *restrict pshared); -
int pthread_condattr_setpshared(pthread_condattr_t *
attr, -int pshared); -

-

Description

-

The pthread_condattr_getpshared function shall obtain the -value of the process-shared attribute from the attributes -object referenced by attr. The pthread_condattr_setpshared -function shall set the process-shared attribute in an -initialized attributes object referenced by attr. -

-

The process-shared attribute is set to -PTHREAD_PROCESS_SHARED to permit a condition variable to be -operated upon by any thread that has access to the memory where the -condition variable is allocated, even if the condition variable is -allocated in memory that is shared by multiple processes. If the -process-shared attribute is PTHREAD_PROCESS_PRIVATE, -the condition variable shall only be operated upon by threads created -within the same process as the thread that initialized the condition -variable; if threads of differing processes attempt to operate on -such a condition variable, the behavior is undefined. The default -value of the attribute is PTHREAD_PROCESS_PRIVATE. -

-

Pthreads-w32 defines _POSIX_THREAD_PROCESS_SHARED in -pthread.h as -1 to indicate that these routines are implemented but -that the process shared attribute is not supported.

-

Return Value

-

If successful, the pthread_condattr_setpshared function -shall return zero; otherwise, an error number shall be returned to -indicate the error. -

-

If successful, the pthread_condattr_getpshared function -shall return zero and store the value of the process-shared -attribute of attr into the object referenced by the pshared -parameter. Otherwise, an error number shall be returned to indicate -the error. -

-

Errors

-

The pthread_condattr_getpshared and -pthread_condattr_setpshared functions may fail if: -

-
-
EINVAL -
- The value specified by attr is invalid. -
-

-The pthread_condattr_setpshared function may fail if: -

-
-
EINVAL -
- The new value specified for the attribute is outside the range of - legal values for that attribute. -
- ENOSYS -
- The value specified by attr was PTHREAD_PROCESS_SHARED - (Pthreads-w32).
-

-These functions shall not return an error code of [EINTR]. -

-

The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

Pthreads-w32 defines _POSIX_THREAD_PROCESS_SHARED in -pthread.h as -1 to indicate that these routines are implemented and -may be used, but do not support the process shared option.

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

See Also

-

pthread_create(3) , -pthread_cond_destroy(3) , -pthread_condattr_destroy(3) -, pthread_mutex_destroy(3) -, the Base Definitions volume of IEEE Std 1003.1-2001, -<pthread.h> -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_create.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_create.html deleted file mode 100644 index c5d80ba6ec0..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_create.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - PTHREAD_CREATE(3) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_create - create a new thread -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_create(pthread_t * thread, -pthread_attr_t * attr, void * (*start_routine)(void -*), void * arg); -

-

Description

-

pthread_create creates a new thread of control that -executes concurrently with the calling thread. The new thread applies -the function start_routine passing it arg as first -argument. The new thread terminates either explicitly, by calling -pthread_exit(3) , or -implicitly, by returning from the start_routine function. The -latter case is equivalent to calling pthread_exit(3) -with the result returned by start_routine as exit code. -

-

The initial signal state of the new thread is inherited from it's -creating thread and there are no pending signals. Pthreads-w32 -does not yet implement signals.

-

The attr argument specifies thread attributes to be applied -to the new thread. See pthread_attr_init(3) -for a complete list of thread attributes. The attr argument -can also be NULL, in which case default attributes are used: -the created thread is joinable (not detached) and has default (non -real-time) scheduling policy. -

-

Return Value

-

On success, the identifier of the newly created thread is stored -in the location pointed by the thread argument, and a 0 is -returned. On error, a non-zero error code is returned. -

-

Errors

-
-
EAGAIN -
-
-
- Not enough system resources to create a process for the new - thread, or
more than PTHREAD_THREADS_MAX threads are - already active. -
-
-
-

-Author

-

Xavier Leroy <Xavier.Leroy@inria.fr> -

-

Modified by Ross Johnson for use with Pthreads-w32.

-

See Also

-

pthread_exit(3) , -pthread_join(3) , -pthread_detach(3) , -pthread_attr_init(3) . -

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_delay_np.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_delay_np.html deleted file mode 100644 index 99d5f39a234..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_delay_np.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - PTHREAD_DELAY_NP manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_delay_np – suspend the -thread for a specified period

-

Synopsis

-

#include <pthread.h> -

-

int pthread_delay_np (const struct timespec *interval);

-

Description

-

pthread_delay_np causes a thread to delay execution for a -specific period of time. This period ends at the current time plus -the specified interval. The routine will not return before the end of -the period is reached, but may return an arbitrary amount of time -after the period has gone by. This can be due to system load, thread -priorities, and system timer granularity.

-

Specifying an interval of zero (0) seconds and zero (0) -nanoseconds is allowed and can be used to force the thread to give up -the processor or to deliver a pending cancellation request.

-

Cancellation

-

pthread_delay_np is a cancellation point.

-

Return Value

-

If an error condition occurs, pthread_delay_np returns an -integer value indicating the type of error.

-

Errors

-

The pthread_delay_np function returns the following error -code on error: -

-
-
-
EINVAL -
-
-

-The value specified by interval is invalid.

-

Author

-

Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_detach.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_detach.html deleted file mode 100644 index 4a588b411ed..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_detach.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - PTHREAD_DETACH(3) manual page - - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_detach - put a running thread in the detached state -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_detach(pthread_t th); -

-

Description

-

pthread_detach puts the thread th in the detached -state. This guarantees that the resources consumed by th will -be freed immediately when th terminates. However, this -prevents other threads from synchronizing on the termination of th -using pthread_join. If, when pthread_detach is called, -th has already terminated, all of th's remaining -resources will be freed.

-

A thread can be created initially in the detached state, using the -detachstate attribute to pthread_create(3) -. In contrast, pthread_detach applies to threads created in -the joinable state, and which need to be put in the detached state -later. -

-

After pthread_detach completes, subsequent attempts to -perform pthread_join on th will fail. If another thread -is already joining the thread th at the time pthread_detach -is called, th will be detached and pthread_join will -eventually return when th terminates but may not return with -th's correct return code. -

-

Return Value

-

On success, 0 is returned. On error, a non-zero error code is -returned. -

-

Errors

-
-
ESRCH -
- No thread could be found corresponding to that specified by th -
- EINVAL -
- the thread th is already in the detached state -
-

-Author

-

Xavier Leroy <Xavier.Leroy@inria.fr> -

-

Modified by Ross Johnson for use with Pthreads-w32.

-

See Also

-

pthread_create(3) , -pthread_join(3) , -pthread_attr_setdetachstate(3) -

-
-

Table of Contents

- - - \ No newline at end of file diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_equal.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_equal.html deleted file mode 100644 index 0817909d512..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_equal.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - -PTHREAD_EQUAL(3) manual page - - -Table of Contents

- -

-

Name

-pthread_equal - compare two thread identifiers -

-

Synopsis

-#include <pthread.h> - -

int pthread_equal(pthread_t thread1, pthread_t thread2); -

-

Description

-pthread_equal -determines if two thread identifiers refer to the same thread. -

-

Return Value

-A -non-zero value is returned if thread1 and thread2 refer to the same thread. -Otherwise, 0 is returned. -

-

Author

-Xavier Leroy <Xavier.Leroy@inria.fr> -

-

See Also

-pthread_self(3) -. -

- -


-Table of Contents

-

- - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_exit.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_exit.html deleted file mode 100644 index f5aac31eefe..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_exit.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -PTHREAD_EXIT(3) manual page - - -Table of Contents

- -

-

Name

-pthread_exit - terminate the calling thread -

-

Synopsis

-#include <pthread.h> - -

void pthread_exit(void *retval); -

-

Description

-pthread_exit terminates the -execution of the calling thread. All cleanup handlers that have been set -for the calling thread with pthread_cleanup_push(3) - are executed in reverse -order (the most recently pushed handler is executed first). Finalization -functions for thread-specific data are then called for all keys that have -non- NULL values associated with them in the calling thread (see pthread_key_create(3) -). -Finally, execution of the calling thread is stopped. -

The retval argument -is the return value of the thread. It can be consulted from another thread -using pthread_join(3) -. -

-

Return Value

-The pthread_exit function never returns. - -

-

Author

-Xavier Leroy <Xavier.Leroy@inria.fr> -

-

See Also

-pthread_create(3) -, pthread_join(3) -. -

- -


-Table of Contents

-

- - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_getunique_np.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_getunique_np.html deleted file mode 100644 index 2ac6f9ae1ed..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_getunique_np.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - PTHREAD_GETW32THREADHANDLE_NP manual page - - - - - - - - - - -

POSIX Threads for Windows – REFERENCE - -Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_getunique_np – get the -unique sequence number associated with a thread

-

Synopsis

-

#include <pthread.h> -

-

unsigned long long pthread_getunique_np(pthread_t thread);

-

Description

-

Returns the unique 64 bit -sequence number assigned to thread.

-

In Pthreads-win32:

-
    -
  • the value returned is not reused after the thread terminates - so it is unique for the life of the process

    -
  • Windows native threads may obtain their own POSIX thread - sequence number by first retrieving their pthread_t handle - via pthread_self to use as the thread argument.

    -
-

This function was added for source code compatibility with some -other POSIX threads implementations.

-

Cancellation

-

None.

-

Return Value

-

pthread_getunique_np returns the unique sequence number for -thread.

-

Errors

-

None.

-

Author

-

Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - \ No newline at end of file diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_getw32threadhandle_np.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_getw32threadhandle_np.html deleted file mode 100644 index bc7b87ab932..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_getw32threadhandle_np.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - PTHREAD_GETW32THREADHANDLE_NP manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_getw32threadhandle_np – get -the Win32 thread handle associated with a thread

-

Synopsis

-

#include <pthread.h> -

-

HANDLE pthread_getw32threadhandle_np(pthread_t thread);

-

Description

-

Returns the Win32 native thread HANDLE that the POSIX -thread thread is running as.

-

Applications can use the Win32 handle to set Win32 specific -attributes of the thread.

-

Cancellation

-

None.

-

Return Value

-

pthread_getw32threadhandle_np returns the Win32 native -thread HANDLE for the specified POSIX thread thread.

-

Errors

-

None.

-

Author

-

Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_join.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_join.html deleted file mode 100644 index a66d4d4cff2..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_join.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - PTHREAD_JOIN(3) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_join - wait for termination of another thread -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_join(pthread_t th, void -**thread_return); -

-

Description

-

pthread_join suspends the execution of the calling thread -until the thread identified by th terminates, either by -calling pthread_exit(3) or by -being cancelled. -

-

If thread_return is not NULL, the return value of th -is stored in the location pointed to by thread_return. The -return value of th is either the argument it gave to -pthread_exit(3) , or -PTHREAD_CANCELED if th was cancelled. -

-

The joined thread th must be in the joinable state: it must -not have been detached using pthread_detach(3) -or the PTHREAD_CREATE_DETACHED attribute to pthread_create(3) -. -

-

When a joinable thread terminates, its memory resources (thread -descriptor and stack) are not deallocated until another thread -performs pthread_join on it. Therefore, pthread_join -must be called once for each joinable thread created to avoid memory -leaks. -

-

At most one thread can wait for the termination of a given thread. -Calling pthread_join on a thread th on which another -thread is already waiting for termination returns an error. -

-

Cancellation

-

pthread_join is a cancellation point. If a thread is -cancelled while suspended in pthread_join, the thread -execution resumes immediately and the cancellation is executed -without waiting for the th thread to terminate. If -cancellation occurs during pthread_join, the th thread -remains not joined. -

-

Return Value

-

On success, the return value of th is stored in the -location pointed to by thread_return, and 0 is returned. On -error, a non-zero error code is returned. -

-

Errors

-
-
ESRCH -
- No thread could be found corresponding to that specified by th. -
- EINVAL -
- The th thread has been detached. -
- EINVAL -
- Another thread is already waiting on termination of th. -
- EDEADLK -
- The th argument refers to the calling thread. -
-

-Author

-

Xavier Leroy <Xavier.Leroy@inria.fr> -

-

See Also

-

pthread_exit(3) , -pthread_detach(3) , -pthread_create(3) , -pthread_attr_setdetachstate(3) -, pthread_cleanup_push(3) -, pthread_key_create(3) -. -

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_key_create.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_key_create.html deleted file mode 100644 index a94d6e6be4c..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_key_create.html +++ /dev/null @@ -1,211 +0,0 @@ - - - - - PTHREAD_SPECIFIC(3) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_key_create, pthread_key_delete, pthread_setspecific, -pthread_getspecific - management of thread-specific data -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_key_create(pthread_key_t *key, void -(*destr_function) (void *)); -

-

int pthread_key_delete(pthread_key_t key); -

-

int pthread_setspecific(pthread_key_t key, const -void *pointer); -

-

void * pthread_getspecific(pthread_key_t key); -

-

Description

-

Programs often need global or static variables that have different -values in different threads. Since threads share one memory space, -this cannot be achieved with regular variables. Thread-specific data -is the POSIX threads answer to this need. -

-

Each thread possesses a private memory block, the thread-specific -data area, or TSD area for short. This area is indexed by TSD keys. -The TSD area associates values of type void * to TSD keys. TSD -keys are common to all threads, but the value associated with a given -TSD key can be different in each thread. -

-

For concreteness, the TSD areas can be viewed as arrays of void -* pointers, TSD keys as integer indices into these arrays, and -the value of a TSD key as the value of the corresponding array -element in the calling thread. -

-

When a thread is created, its TSD area initially associates NULL -with all keys. -

-

pthread_key_create allocates a new TSD key. The key is -stored in the location pointed to by key. There is a limit of -PTHREAD_KEYS_MAX on the number of keys allocated at a given -time. The value initially associated with the returned key is NULL -in all currently executing threads. -

-

The destr_function argument, if not NULL, specifies -a destructor function associated with the key. When a thread -terminates via pthread_exit or by cancellation, destr_function -is called with arguments the value associated with the key in that -thread. The destr_function is not called if that value is NULL -or the key has been deleted. The order in which destructor -functions are called at thread termination time is unspecified. -

-

Before the destructor function is called, the NULL value is -associated with the key in the current thread. A destructor function -might, however, re-associate non- NULL values to that key or -some other key. To deal with this, if after all the destructors have -been called for all non- NULL values, there are still some -non- NULL values with associated destructors, then the process -is repeated.

-

pthread_key_delete deallocates a TSD key. It does not check -whether non- NULL values are associated with that key in the -currently executing threads, nor call the destructor function -associated with the key. -

-

pthread_setspecific changes the value associated with key -in the calling thread, storing the given pointer instead. -

-

pthread_getspecific returns the value currently associated -with key in the calling thread. -

-

The routines pthread_setspecific, pthread_getspecific, -and pthread_key_delete can be called from destr_function -targeting any valid key including the key on which destr_function -is currently operating. If pthread_getspecific is called on -the key whose thread specific data is being destroyed, the value NULL -is returned, unless pthread_setspecific was called previously -on that key from within destr_function to set the value to -non-NULL. For some implementations the effect of calling -pthread_setspecific from within destr_function can be -either memory leakage or infinite loops if destr_function has -already been called at least PTHREAD_DESTRUCTOR_ITERATIONS -times.

-

Pthreads-w32 stops running key -destr_function routines after PTHREAD_DESTRUCTOR_ITERATIONS -iterations, even if some non- NULL values with associated -descriptors remain. If memory is allocated and associated with a key -from within destr_function, that memory may not be reclaimed -because that key's destr_function, may not run again.

-

Return Value

-

pthread_key_create, pthread_key_delete, and -pthread_setspecific return 0 on success and a non-zero error -code on failure. If successful, pthread_key_create stores the -newly allocated key in the location pointed to by its key -argument. -

-

pthread_getspecific returns the value associated with key -on success, and NULL on error. -

-

Errors

-

pthread_key_create returns the following error code on -error: -

-
-
-
EAGAIN -
-
-
-PTHREAD_KEYS_MAX keys are already allocated -
-
-
-
ENOMEM -
-
-
-Insufficient memory to allocate the key. -
-

pthread_key_delete and pthread_setspecific return -the following error code on error: -

-
-
-
EINVAL -
- key is not a valid, allocated TSD key -
-
-

-pthread_getspecific returns NULL if key is not a -valid, allocated TSD key. -

-

Author

-

Xavier Leroy <Xavier.Leroy@inria.fr> -

-

Modified by Ross Johnson for use with Pthreads-w32.

-

See Also

-

pthread_create(3) , -pthread_exit(3) , -pthread_testcancel(3) . -

-

Example

-

The following code fragment allocates a thread-specific array of -100 characters, with automatic reclamation at thread exit: -

-


-
-
/* Key for the thread-specific buffer */
-static pthread_key_t buffer_key;
-/* Once-only initialisation of the key */
-static pthread_once_t buffer_key_once = PTHREAD_ONCE_INIT;
-/* Allocate the thread-specific buffer */
-void buffer_alloc(void)
-{
-  pthread_once(&buffer_key_once, buffer_key_alloc);
-  pthread_setspecific(buffer_key, malloc(100));
-}
-/* Return the thread-specific buffer */
-char * get_buffer(void)
-{
-  return (char *) pthread_getspecific(buffer_key);
-}
-/* Allocate the key */
-static void buffer_key_alloc()
-{
-  pthread_key_create(&buffer_key, buffer_destroy);
-}
-/* Free the thread-specific buffer */
-static void buffer_destroy(void * buf)
-{
-  free(buf);
-}
-
-
-Table of Contents
- - - \ No newline at end of file diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_kill.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_kill.html deleted file mode 100644 index 4a66e0e1041..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_kill.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - PTHREAD_SIGNAL(3) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_sigmask, pthread_kill, sigwait - handling of signals in -threads -

-

Synopsis

-

#include <pthread.h>
#include <signal.h> -

-

int pthread_sigmask(int how, const sigset_t -*newmask, sigset_t *oldmask); -

-

int pthread_kill(pthread_t thread, int signo); -

-

int sigwait(const sigset_t *set, int *sig);

-

Description

-

pthread_sigmask changes the signal mask for the calling -thread as described by the how and newmask arguments. -If oldmask is not NULL, the previous signal mask is -stored in the location pointed to by oldmask. Pthreads-w32 -implements this function but no other function uses the signal mask -yet.

-

The meaning of the how and newmask arguments is the -same as for sigprocmask(2). -If how is SIG_SETMASK, the signal mask is set to -newmask. If how is SIG_BLOCK, the signals -specified to newmask are added to the current signal mask. If -how is SIG_UNBLOCK, the signals specified to newmask -are removed from the current signal mask. -

-

Recall that signal masks are set on a per-thread basis, but signal -actions and signal handlers, as set with sigaction(2), are -shared between all threads. -

-

pthread_kill send signal number signo to the thread -thread. Pthreads-w32 only supports signal number 0, -which does not send any signal but causes pthread_kill to -return an error if thread is not valid.

-

sigwait suspends the calling thread until one of the -signals in set is delivered to the calling thread. It then -stores the number of the signal received in the location pointed to -by sig and returns. The signals in set must be blocked -and not ignored on entrance to sigwait. If the delivered -signal has a signal handler function attached, that function is not -called. Pthreads-w32 implements this function as a -cancellation point only - it does not wait for any signals and does -not change the location pointed to by sig.

-

Cancellation

-

sigwait is a cancellation point. -

-

Return Value

-

On success, 0 is returned. On failure, a non-zero error code is -returned. -

-

Errors

-

The pthread_sigmask function returns the following error -codes on error: -

-
-
-
EINVAL -
- how is not one of SIG_SETMASK, SIG_BLOCK, or - SIG_UNBLOCK -
-
-

-The pthread_kill function returns the following error codes on -error: -

-
-
-
EINVAL -
- signo is not a valid signal number or is unsupported.
- ESRCH -
- the thread thread does not exist (e.g. it has already - terminated) -
-
-

-The sigwait function never returns an error. -

-

Author

-

Xavier Leroy <Xavier.Leroy@inria.fr> -

-

Modified by Ross Johnson for use with Pthreads-w32.

-

See Also

-

-

-

Notes

-

In any implementation, for sigwait to work reliably, the -signals being waited for must be blocked in all threads, not only in -the calling thread, since otherwise the POSIX semantics for signal -delivery do not guarantee that it’s the thread doing the sigwait -that will receive the signal. The best way to achieve this is to -block those signals before any threads are created, and never unblock -them in the program other than by calling sigwait. This works -because all threads inherit their initial sigmask from their creating -thread.

-

Bugs

-

Pthreads-w32 does not implement signals yet and so these -routines have almost no use except to prevent the compiler or linker -from complaining. pthread_kill is useful in determining if the -thread is a valid thread, but since many threads implementations -reuse thread IDs, the valid thread may no longer be the thread you -think it is, and so this method of determining thread validity is not -portable, and very risky. Pthreads-w32 from version 1.0.0 -onwards implements pseudo-unique thread IDs, so applications that use -this technique (but really shouldn't) have some protection.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_mutex_init.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_mutex_init.html deleted file mode 100644 index c98124e7345..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_mutex_init.html +++ /dev/null @@ -1,356 +0,0 @@ - - - - - PTHREAD_MUTEX(3) manual page - - - - - - - - - - - -

POSIX Threads for Windows – REFERENCE - -Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_mutex_init, pthread_mutex_lock, pthread_mutex_trylock, -pthread_mutex_timedlock, pthread_mutex_unlock, -pthread_mutex_consistent, pthread_mutex_destroy - operations on -mutexes -

-

Synopsis

-

#include <pthread.h> -

-

#include <time.h>

-

pthread_mutex_t fastmutex = -PTHREAD_MUTEX_INITIALIZER; -

-

pthread_mutex_t recmutex = -PTHREAD_RECURSIVE_MUTEX_INITIALIZER; -

-

pthread_mutex_t errchkmutex = -PTHREAD_ERRORCHECK_MUTEX_INITIALIZER; -

-

pthread_mutex_t recmutex = -PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; -

-

pthread_mutex_t errchkmutex = -PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP; -

-

int pthread_mutex_init(pthread_mutex_t *mutex, -const pthread_mutexattr_t *mutexattr); -

-

int pthread_mutex_lock(pthread_mutex_t *mutex); -

-

int pthread_mutex_trylock(pthread_mutex_t *mutex); -

-

int pthread_mutex_timedlock(pthread_mutex_t *mutex, -const struct timespec *abs_timeout); -

-

int pthread_mutex_unlock(pthread_mutex_t *mutex); -

-

int pthread_mutex_consistent(pthread_mutex_t *mutex); -

-

int pthread_mutex_destroy(pthread_mutex_t *mutex); -

-

Description

-

A mutex is a MUTual EXclusion device, and is useful for protecting -shared data structures from concurrent modifications, and -implementing critical sections and monitors. -

-

A mutex has two possible states: unlocked (not owned by any -thread), and locked (owned by one thread). A mutex can never be owned -by two different threads simultaneously. A thread attempting to lock -a mutex that is already locked by another thread is suspended until -the owning thread unlocks the mutex first. -

-

pthread_mutex_init initializes the mutex object pointed to -by mutex according to the mutex attributes specified in -mutexattr. If mutexattr is NULL, default -attributes are used instead. -

-

The type of a mutex determines whether it can be locked again by a -thread that already owns it. The default type is “normalâ€. See -pthread_mutexattr_init(3) -for more information on mutex attributes. -

-

Variables of type pthread_mutex_t can also be initialized -statically, using the constants PTHREAD_MUTEX_INITIALIZER (for -normal “fast†mutexes), PTHREAD_RECURSIVE_MUTEX_INITIALIZER -(for recursive mutexes), and PTHREAD_ERRORCHECK_MUTEX_INITIALIZER -(for error checking mutexes). In -the Pthreads-w32 implementation, -an application should still call pthread_mutex_destroy -at some point to ensure that any -resources consumed by the mutex are released.

-

Any mutex type can be -initialized as a robust mutex. -See pthread_mutexattr_init(3) -for more information as well as the -section Robust Mutexes -below.

-

pthread_mutex_lock locks the given mutex. If the mutex is -currently unlocked, it becomes locked and owned by the calling -thread, and pthread_mutex_lock returns immediately. If the -mutex is already locked by another thread, pthread_mutex_lock -suspends the calling thread until the mutex is unlocked.

-

If the mutex is already locked by the calling thread, the behavior -of pthread_mutex_lock depends on the type of the mutex. If the -mutex is of the “normal†type, the calling thread is suspended -until the mutex is unlocked, thus effectively causing the calling -thread to deadlock. If the mutex is of the ‘‘error checking’’ -type, pthread_mutex_lock returns immediately with the error -code EDEADLK. If the mutex is of the ‘‘recursive’’ -type, pthread_mutex_lock succeeds and returns immediately, -recording the number of times the calling thread has locked the -mutex. An equal number of pthread_mutex_unlock operations must -be performed before the mutex returns to the unlocked state. -

-

pthread_mutex_trylock behaves identically to -pthread_mutex_lock, except that it does not block the calling -thread if the mutex is already locked by another thread (or by the -calling thread in the case of a “normal†or “errorcheck†-mutex). Instead, pthread_mutex_trylock returns immediately -with the error code EBUSY. -

-

pthread_mutex_timedlock behaves identically to -pthread_mutex_lock, except that if it cannot acquire the lock -before the abs_timeout time, the call returns with the error -code ETIMEDOUT. If the mutex can be locked immediately it is, -and the abs_timeout parameter is ignored.

-

pthread_mutex_consistent may only be called for -PTHREAD_MUTEX_ROBUST mutexes. It simply marks the mutex as -consistent. See Robust Mutexes below.

-

pthread_mutex_unlock unlocks the given mutex. The mutex is -assumed to be locked and owned by the calling thread on entrance to -pthread_mutex_unlock. If the mutex is of the “normal†-type, pthread_mutex_unlock always returns it to the unlocked -state. If it is of the ‘‘recursive’’ type, it decrements the -locking count of the mutex (number of pthread_mutex_lock -operations performed on it by the calling thread), and only when this -count reaches zero is the mutex actually unlocked. In Pthreads-win32, -non-robust normal or default mutex types do not check the owner of -the mutex. For all types of robust mutexes the owner is checked and -an error code is returned if the calling thread does not own the -mutex.

-

On ‘‘error checking’’ mutexes, pthread_mutex_unlock -actually checks at run-time that the mutex is locked on entrance, and -that it was locked by the same thread that is now calling -pthread_mutex_unlock. If these conditions are not met, an -error code is returned and the mutex remains unchanged. ‘‘Normal’’ -[non-robust] mutexes perform no such checks, thus allowing a locked -mutex to be unlocked by a thread other than its owner. This is -non-portable behavior and is not meant to be used as a feature.

-

pthread_mutex_destroy destroys a mutex object, freeing the -resources it might hold. The mutex must be unlocked on entrance.

-

Robust Mutexes

-

If the mutex is PTHREAD_MUTEX_ROBUST and the owning thread -terminates without unlocking the mutex the implementation will wake -one waiting thread, if any. The next thread to acquire the mutex will -receive the error code EOWNERDEAD, -in which case that thread should if possible ensure that the state -protected by the mutex is consistent and then call -pthread_mutex_consistent before -unlocking. The mutex may then be used normally from then on.

-

If the thread cannot recover the -state then it must call pthread_mutex_unlock -without calling pthread_mutex_consistent. -This will mark the mutex as unusable and wake all currently waiting -threads with the return code ENOTRECOVERABLE. -The error indicates that the mutex is no longer usable and any -threads that receive this error code from any lock operation have not -acquired the mutex. The mutex can be made consistent by calling -pthread_mutex_destroy to -uninitialize the mutex, and calling pthread_mutex_int -to reinitialize the mutex. However, -the state that was protected by the mutex remains inconsistent and -some form of application recovery is required.

-

If a thread that receives the -EOWNERDEAD error code -itself terminates without unlocking the mutex then this behaviour -repeats for the next acquiring thread.

-

Applications must ensure that -they check the return values from all calls targeting robust mutexes.

-

Robust mutexes are slower because they -require some additional overhead, however they are not very much -slower than the non-robust recursive type.

-

Cancellation

-

None of the mutex functions is a cancellation point, not even -pthread_mutex_lock, in spite of the fact that it can suspend a -thread for arbitrary durations. This way, the status of mutexes at -cancellation points is predictable, allowing cancellation handlers to -unlock precisely those mutexes that need to be unlocked before the -thread stops executing. Consequently, threads using deferred -cancellation should never hold a mutex for extended periods of time. -

-

Async-signal Safety

-

The mutex functions are not async-signal safe. What this means is -that they should not be called from a signal handler. In particular, -calling pthread_mutex_lock or pthread_mutex_unlock from -a signal handler may deadlock the calling thread. -

-

Return Value

-

pthread_mutex_init always returns 0. The other mutex -functions return 0 on success and a non-zero error code on error. -

-

Errors

-

The pthread_mutex_lock function returns the following error -code on error: -

-
-
-
EINVAL
- the mutex has not been properly initialized. -
- EDEADLK
- the mutex is already locked by the calling thread (‘‘error - checking’’ mutexes only). -
- EOWNERDEAD
- the robust mutex is now locked by the calling thread after the - previous owner terminated without unlocking it.
- ENOTRECOVERABLE
- the robust mutex is not locked and is no longer usable after the - previous owner unlocked it without calling - pthread_mutex_consistent.
-
- The pthread_mutex_trylock function returns the following - error codes on error: -
-
- EBUSY -
- the mutex could not be acquired because it was currently locked. -
- EINVAL -
- the mutex has not been properly initialized. -
- EOWNERDEAD
- the robust mutex is now locked by the calling thread after the - previous owner terminated without unlocking it.
- ENOTRECOVERABLE
- the robust mutex is not locked and is no longer usable after the - previous owner unlocked it without calling - pthread_mutex_consistent.
-
-

-The pthread_mutex_timedlock function returns the following -error codes on error: -

-
-
-
ETIMEDOUT -
- the mutex could not be acquired before the abs_timeout time - arrived. -
- EINVAL -
- the mutex has not been properly initialized. -
- EOWNERDEAD
- the robust mutex is now locked by the calling thread after the - previous owner terminated without unlocking it.
- ENOTRECOVERABLE
- the robust mutex is not locked and is no longer usable after the - previous owner unlocked it without calling - pthread_mutex_consistent.
-
-

-The pthread_mutex_unlock function returns the following error -code on error: -

-
-
-
EINVAL -
- the mutex has not been properly initialized. -
- EPERM -
- the calling thread does not own the mutex (‘‘error checking’’ - mutexes only). -
-
-

-The pthread_mutex_destroy function returns the following error -code on error: -

-
-
-
EBUSY -
- the mutex is currently locked. -
-
-

-Author

-

Xavier Leroy <Xavier.Leroy@inria.fr> -

-

Modified by Ross Johnson for use with Pthreads-w32.

-

See Also

-

pthread_mutexattr_init(3) -, pthread_mutexattr_settype(3) -, pthread_cancel(3) . -

-

Example

-

A shared global variable x can be protected by a mutex as -follows: -

-
int x;
-pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
-All accesses and modifications to x should be bracketed by -calls to pthread_mutex_lock and pthread_mutex_unlock as -follows: -
-
pthread_mutex_lock(&mut);
-/* operate on x */
-pthread_mutex_unlock(&mut);
-
-
Table -of Contents
- - - \ No newline at end of file diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_mutexattr_init.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_mutexattr_init.html deleted file mode 100644 index 760521f4108..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_mutexattr_init.html +++ /dev/null @@ -1,207 +0,0 @@ - - - - - PTHREAD_MUTEXATTR(3) manual page - - - - - - - - - -

POSIX Threads for Windows – REFERENCE - -Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_mutexattr_init, pthread_mutexattr_destroy, -pthread_mutexattr_settype, pthread_mutexattr_gettype - mutex creation -attributes -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_mutexattr_init(pthread_mutexattr_t *attr); -

-

int pthread_mutexattr_destroy(pthread_mutexattr_t *attr); -

-

int pthread_mutexattr_settype(pthread_mutexattr_t *attr, -int type); -

-

int pthread_mutexattr_gettype(const pthread_mutexattr_t *attr, -int *type); -

-

int pthread_mutexattr_setkind_np(pthread_mutexattr_t *attr, -int type); -

-

int pthread_mutexattr_getkind_np(const pthread_mutexattr_t -*attr, int *type); -

-

int pthread_mutexattr_setrobust(pthread_mutexattr_t *attr, -int robust); -

-

int pthread_mutexattr_getrobust(pthread_mutexattr_t *attr, -int *robust); -

-

Description

-

Mutex attributes can be specified at mutex creation time, by -passing a mutex attribute object as second argument to -pthread_mutex_init(3) . -Passing NULL is equivalent to passing a mutex attribute object -with all attributes set to their default values. -

-

pthread_mutexattr_init initializes the mutex attribute -object attr and fills it with default values for the -attributes. -

-

pthread_mutexattr_destroy destroys a mutex attribute -object, which must not be reused until it is reinitialized.

-

pthread_mutexattr_settype sets the mutex type attribute in -attr to the value specified by type. -

-

pthread_mutexattr_gettype retrieves the current value of -the mutex kind attribute in attr and stores it in the location -pointed to by type. -

-

Pthreads-w32 also recognises the following equivalent -functions that are used in Linux:

-

pthread_mutexattr_setkind_np is an alias for -pthread_mutexattr_settype. -

-

pthread_mutexattr_getkind_np is -an alias for pthread_mutexattr_gettype. -

-

The following mutex types are supported:

-

PTHREAD_MUTEX_NORMAL - for -‘‘fast’’ mutexes.

-

PTHREAD_MUTEX_RECURSIVE - for -‘‘recursive’’ mutexes.

-

PTHREAD_MUTEX_ERRORCHECK - for -‘‘error checking’’ mutexes.

-

The mutex type determines what happens if a thread attempts to -lock a mutex it already owns with pthread_mutex_lock(3) -. If the mutex is of the “normal†or “fast†type, -pthread_mutex_lock(3) -simply suspends the calling thread forever. If the mutex is of the -‘‘error checking’’ type, pthread_mutex_lock(3) -returns immediately with the error code EDEADLK. If the mutex -is of the ‘‘recursive’’ type, the call to -pthread_mutex_lock(3) -returns immediately with a success return code. The number of times -the thread owning the mutex has locked it is recorded in the mutex. -The owning thread must call pthread_mutex_unlock(3) -the same number of times before the mutex returns to the unlocked -state. -

-

The default mutex type is PTHREAD_MUTEX_NORMAL

-

Pthreads-w32 also recognises the following equivalent types -that are used by Linux:

-

PTHREAD_MUTEX_FAST_NP -– equivalent to PTHREAD_MUTEX_NORMAL

-

PTHREAD_MUTEX_RECURSIVE_NP

-

PTHREAD_MUTEX_ERRORCHECK_NP

-

pthread_mutexattr_setrobust -sets the robustness attribute to the value given by robust.

-

pthread_mutexattr_getrobust -returns the current robustness value to the location given by -*robust.

-

The possible values for robust -are:

-

PTHREAD_MUTEX_STALLED -- when the owner of the mutex terminates without unlocking the mutex, -all subsequent calls to pthread_mutex_*lock() are blocked from -progress in an unspecified manner.

-

PTHREAD_MUTEX_ROBUST -- when the owner of the mutex terminates without unlocking the mutex, -the mutex is unlocked. The next owner of this mutex acquires the -mutex with an error return of EOWNERDEAD.

-

Return Value

-

On success all functions return -0, otherwise they return an error code as follows:

-

pthread_mutexattr_init

-

ENOMEM -- insufficient memory for attr.

-

pthread_mutexattr_destroy

-

EINVAL -- attr -is invalid.

-

pthread_mutexattr_gettype

-

EINVAL -- attr -is invalid.

-

pthread_mutexattr_settype

-
-
-
-
EINVAL - attr - is invalid or type - is none of:
-
-
- PTHREAD_MUTEX_NORMAL
PTHREAD_MUTEX_FAST_NP
PTHREAD_MUTEX_RECURSIVE
PTHREAD_MUTEX_RECURSIVE_NP
PTHREAD_MUTEX_ERRORCHECK
PTHREAD_MUTEX_ERRORCHECK_NP
-
-
-
-
-
-
-

-pthread_mutexattr_getrobust

-

EINVAL -– attr -or robust -is invalid.

-

pthread_mutexattr_setrobust

-

EINVAL -– attr -or robust -is invalid.

-

Author

-

Xavier Leroy <Xavier.Leroy@inria.fr> -

-

Modified by Ross Johnson for use with Pthreads-w32.

-

See Also

-

pthread_mutex_init(3) -, pthread_mutex_lock(3) -, pthread_mutex_unlock(3) -. -

-

Notes

-

For speed, Pthreads-w32 never checks the thread ownership -of non-robust mutexes of type PTHREAD_MUTEX_NORMAL (or -PTHREAD_MUTEX_FAST_NP) when performing operations on the -mutex. It is therefore possible for one thread to lock such a mutex -and another to unlock it.

-

When developing code, it is a common -precaution to substitute the error checking type, then drop in the -normal type for release if the extra performance is required.

-
-

Table of Contents

- - - \ No newline at end of file diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_mutexattr_setpshared.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_mutexattr_setpshared.html deleted file mode 100644 index 78b36b46caf..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_mutexattr_setpshared.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - "PTHREAD_MUTEXATTR_GETPSHARED"(P) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_mutexattr_getpshared, pthread_mutexattr_setpshared - get -and set the process-shared attribute -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_mutexattr_getpshared(const pthread_mutexattr_t * -restrict attr, int *restrict pshared); -
int pthread_mutexattr_setpshared(pthread_mutexattr_t *
attr, -int pshared); -

-

Description

-

The pthread_mutexattr_getpshared function shall obtain the -value of the process-shared attribute from the attributes -object referenced by attr. The pthread_mutexattr_setpshared -function shall set the process-shared attribute in an -initialized attributes object referenced by attr. -

-

The process-shared attribute is set to -PTHREAD_PROCESS_SHARED to permit a mutex to be operated upon -by any thread that has access to the memory where the mutex is -allocated, even if the mutex is allocated in memory that is shared by -multiple processes. If the process-shared attribute is -PTHREAD_PROCESS_PRIVATE, the mutex shall only be operated upon -by threads created within the same process as the thread that -initialized the mutex; if threads of differing processes attempt to -operate on such a mutex, the behavior is undefined. The default value -of the attribute shall be PTHREAD_PROCESS_PRIVATE. -

-

Pthreads-w32 defines _POSIX_THREAD_PROCESS_SHARED in -pthread.h as -1 to indicate that these routines are implemented but -the process shared option is not supported.

-

Return Value

-

Upon successful completion, pthread_mutexattr_setpshared -shall return zero; otherwise, an error number shall be returned to -indicate the error. -

-

Upon successful completion, pthread_mutexattr_getpshared -shall return zero and store the value of the process-shared -attribute of attr into the object referenced by the pshared -parameter. Otherwise, an error number shall be returned to indicate -the error. -

-

Errors

-

The pthread_mutexattr_getpshared and -pthread_mutexattr_setpshared functions may fail if: -

-
-
EINVAL -
- The value specified by attr is invalid. -
-

-The pthread_mutexattr_setpshared function may fail if: -

-
-
EINVAL -
- The new value specified for the attribute is outside the range of - legal values for that attribute. -
- ENOTSUP -
- The new value specified for the attribute is PTHREAD_PROCESS_SHARED. -
-

-These functions shall not return an error code of [EINTR]. -

-

The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

None. -

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

See Also

-

pthread_cond_destroy(3) -, pthread_create(3) , -pthread_mutex_destroy(3) -, pthread_mutexattr_destroy(3) -, the Base Definitions volume of IEEE Std 1003.1-2001, -<pthread.h> -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_num_processors_np.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_num_processors_np.html deleted file mode 100644 index 20d3b835b52..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_num_processors_np.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - PTHREAD_NUM_PROCESSORS_NP manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_num_processors_np – get the -number of processors (CPUs) in use by the process

-

Synopsis

-

#include <pthread.h> -

-

int pthread_num_processors_np(void);

-

Description

-

pthread_num_processors_np returns the number of processors -in the system. This implementation actually returns the number of -processors available to the process, which can be a lower number than -the system's number, depending on the process's affinity mask.

-

Cancellation

-

None.

-

Return Value

-

pthread_num_processors_np returns the number of processors -currently available to the process.

-

Errors

-

None.

-

Author

-

Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_once.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_once.html deleted file mode 100644 index 67b25e7ee01..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_once.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - PTHREAD_ONCE(3) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_once - once-only initialization -

-

Synopsis

-

#include <pthread.h> -

-

pthread_once_t once_control = PTHREAD_ONCE_INIT; -

-

int pthread_once(pthread_once_t *once_control, -void (*init_routine) (void)); -

-

Description

-

The purpose of pthread_once is to ensure that a piece of -initialization code is executed at most once. The once_control -argument points to a static or extern variable statically initialized -to PTHREAD_ONCE_INIT. -

-

The first time pthread_once is called with a given -once_control argument, it calls init_routine with no -argument and changes the value of the once_control variable to -record that initialization has been performed. Subsequent calls to -pthread_once with the same once_control argument do -nothing. -

-

Cancellation

-

While pthread_once is not a cancellation point, -init_routine can be. The effect on once_control of a -cancellation inside the init_routine is to leave it as if -pthread_once had not been called by the cancelled thread.

-

Return Value

-

pthread_once -returns 0 on success, or an error code on failure.

-

Errors

-

The pthread_once function returns the following error code -on error: -

-
-
-
EINVAL -
-
-

-The once_control or init_routine parameter is NULL.

-

Author

-

Xavier Leroy <Xavier.Leroy@inria.fr> -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - \ No newline at end of file diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlock_init.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlock_init.html deleted file mode 100644 index ef83b4443b1..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlock_init.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - "PTHREAD_RWLOCK_DESTROY"(P) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_rwlock_destroy, pthread_rwlock_init - destroy and -initialize a read-write lock object -

-

Synopsis

-

#include <pthread.h> -

-

pthread_wrlock_t rwlock = -PTHREAD_RWLOCK_INITIALIZER;

-

int pthread_rwlock_destroy(pthread_rwlock_t *rwlock); -
int pthread_rwlock_init(pthread_rwlock_t *restrict
rwlock, -const pthread_rwlockattr_t *restrict attr); -

-

Description

-

The pthread_rwlock_destroy function shall destroy the -read-write lock object referenced by rwlock and release any -resources used by the lock. The effect of subsequent use of the lock -is undefined until the lock is reinitialized by another call to -pthread_rwlock_init. An implementation may cause -pthread_rwlock_destroy to set the object referenced by rwlock -to an invalid value. Results are undefined if pthread_rwlock_destroy -is called when any thread holds rwlock. Attempting to destroy -an uninitialized read-write lock results in undefined behavior. -

-

The pthread_rwlock_init function shall allocate any -resources required to use the read-write lock referenced by rwlock -and initializes the lock to an unlocked state with attributes -referenced by attr. If attr is NULL, the default -read-write lock attributes shall be used; the effect is the same as -passing the address of a default read-write lock attributes object. -Once initialized, the lock can be used any number of times without -being reinitialized. Results are undefined if pthread_rwlock_init -is called specifying an already initialized read-write lock. Results -are undefined if a read-write lock is used without first being -initialized. -

-

If the pthread_rwlock_init function fails, rwlock -shall not be initialized and the contents of rwlock are -undefined. -

-

Pthreads-w32 supports statically initialized rwlock -objects using PTHREAD_RWLOCK_INITIALIZER. -An application should still call pthread_rwlock_destroy at -some point to ensure that any resources consumed by the read/write -lock are released.

-

Only the object referenced by rwlock may be used for -performing synchronization. The result of referring to copies of that -object in calls to pthread_rwlock_destroy , -pthread_rwlock_rdlock , pthread_rwlock_timedrdlock , -pthread_rwlock_timedwrlock , pthread_rwlock_tryrdlock , -pthread_rwlock_trywrlock , pthread_rwlock_unlock , or -pthread_rwlock_wrlock is undefined. -

-

Pthreads-w32 defines _POSIX_READER_WRITER_LOCKS in -pthread.h as 200112L to indicate that the reader/writer routines are -implemented and may be used.

-

Return Value

-

If successful, the pthread_rwlock_destroy and -pthread_rwlock_init functions shall return zero; otherwise, an -error number shall be returned to indicate the error. -

-

The [EBUSY] and [EINVAL] error checks, if implemented, act as if -they were performed immediately at the beginning of processing for -the function and caused an error return prior to modifying the state -of the read-write lock specified by rwlock. -

-

Errors

-

The pthread_rwlock_destroy function may fail if: -

-
-
EBUSY -
- The implementation has detected an attempt to destroy the object - referenced by rwlock while it is locked. -
- EINVAL -
- The value specified by rwlock is invalid. -
-

-The pthread_rwlock_init function shall fail if: -

-
-
EAGAIN -
- The system lacked the necessary resources (other than memory) to - initialize another read-write lock. -
- ENOMEM -
- Insufficient memory exists to initialize the read-write lock. -
-

-
-

-The pthread_rwlock_init function may fail if: -

-
-
EINVAL -
- The value specified by attr is invalid. -
-

-These functions shall not return an error code of [EINTR]. -

-

The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

Applications using these and related read-write lock functions may -be subject to priority inversion, as discussed in the Base -Definitions volume of IEEE Std 1003.1-2001, Section 3.285, -Priority Inversion. -

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

See Also

-

pthread_rwlock_rdlock(3) -, pthread_rwlock_timedrdlock(3) -, pthread_rwlock_timedwrlock(3) -, pthread_rwlock_tryrdlock(3) -, pthread_rwlock_trywrlock(3) -, pthread_rwlock_unlock(3) -, pthread_rwlock_wrlock(3) -, the Base Definitions volume of IEEE Std 1003.1-2001, -<pthread.h> -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlock_rdlock.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlock_rdlock.html deleted file mode 100644 index b6e79a8f1ea..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlock_rdlock.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - "PTHREAD_RWLOCK_RDLOCK"(P) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_rwlock_rdlock, pthread_rwlock_tryrdlock - lock a -read-write lock object for reading -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock); -
int pthread_rwlock_tryrdlock(pthread_rwlock_t *rwlock); - -

-

Description

-

The pthread_rwlock_rdlock function shall apply a read lock -to the read-write lock referenced by rwlock. The calling -thread acquires the read lock if a writer does not hold the lock and -there are no writers blocked on the lock. -

-

Pthreads-win32 does not prefer either writers or readers in -acquiring the lock – all threads enter a single prioritised FIFO -queue. While this may not be optimally efficient for some -applications, it does ensure that one type does not starve the other.

-

A thread may hold multiple concurrent read locks on rwlock -(that is, successfully call the pthread_rwlock_rdlock function -n times). If so, the application shall ensure that the thread -performs matching unlocks (that is, it calls the -pthread_rwlock_unlock(3) -function n times). -

-

The pthread_rwlock_tryrdlock function shall apply a read -lock as in the pthread_rwlock_rdlock function, with the -exception that the function shall fail if the equivalent -pthread_rwlock_rdlock call would have blocked the calling -thread. In no case shall the pthread_rwlock_tryrdlock function -ever block; it always either acquires the lock or fails and returns -immediately. -

-

Results are undefined if any of these functions are called with an -uninitialized read-write lock. -

-

Pthreads-w32 does not detect deadlock if the thread already -owns the lock for writing.

-

Pthreads-w32 defines _POSIX_READER_WRITER_LOCKS in -pthread.h as 200112L to indicate that the reader/writer routines are -implemented and may be used.

-

Return Value

-

If successful, the pthread_rwlock_rdlock function shall -return zero; otherwise, an error number shall be returned to indicate -the error. -

-

The pthread_rwlock_tryrdlock function shall return zero if -the lock for reading on the read-write lock object referenced by -rwlock is acquired. Otherwise, an error number shall be -returned to indicate the error. -

-

Errors

-

The pthread_rwlock_tryrdlock function shall fail if: -

-
-
EBUSY -
- The read-write lock could not be acquired for reading because a - writer holds the lock or a writer with the appropriate priority was - blocked on it. -
-

-The pthread_rwlock_rdlock and pthread_rwlock_tryrdlock -functions may fail if: -

-
-
EINVAL -
- The value specified by rwlock does not refer to an - initialized read-write lock object. -
- EAGAIN -
- The read lock could not be acquired because the maximum number of - read locks for rwlock has been exceeded. -
-

-These functions shall not return an error code of [EINTR]. -

-

The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

Applications using these functions may be subject to priority -inversion, as discussed in the Base Definitions volume of -IEEE Std 1003.1-2001, Section 3.285, Priority Inversion. -

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

See Also

-

pthread_rwlock_destroy(3) -, pthread_rwlock_timedrdlock(3) -, pthread_rwlock_timedwrlock(3) -, pthread_rwlock_trywrlock(3) -, pthread_rwlock_unlock(3) -, pthread_rwlock_wrlock(3) -, the Base Definitions volume of IEEE Std 1003.1-2001, -<pthread.h> -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlock_timedrdlock.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlock_timedrdlock.html deleted file mode 100644 index 88bf8f8d25b..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlock_timedrdlock.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - "PTHREAD_RWLOCK_TIMEDRDLOCK"(P) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_rwlock_timedrdlock - lock a read-write lock for reading -

-

Synopsis

-

#include <pthread.h>
#include <time.h> -

-

int pthread_rwlock_timedrdlock(pthread_rwlock_t *restrict -rwlock, const struct timespec *restrict abs_timeout); - -

-

Description

-

The pthread_rwlock_timedrdlock function shall apply a read -lock to the read-write lock referenced by rwlock as in the -pthread_rwlock_rdlock(3) -function. However, if the lock cannot be acquired without waiting for -other threads to unlock the lock, this wait shall be terminated when -the specified timeout expires. The timeout shall expire when the -absolute time specified by abs_timeout passes, as measured by -the clock on which timeouts are based (that is, when the value of -that clock equals or exceeds abs_timeout), or if the absolute -time specified by abs_timeout has already been passed at the -time of the call. -

-

The timespec data type is defined in the <time.h> -header. Under no circumstances shall the function fail with a timeout -if the lock can be acquired immediately. The validity of the -abs_timeout parameter need not be checked if the lock can be -immediately acquired. -

-

The calling thread may deadlock if at the time the call is made it -holds a write lock on rwlock. The results are undefined if -this function is called with an uninitialized read-write lock. -

-

Pthreads-w32 defines _POSIX_READER_WRITER_LOCKS in -pthread.h as 200112L to indicate that the reader/writer routines are -implemented and may be used.

-

Return Value

-

The pthread_rwlock_timedrdlock function shall return zero -if the lock for reading on the read-write lock object referenced by -rwlock is acquired. Otherwise, an error number shall be -returned to indicate the error. -

-

Errors

-

The pthread_rwlock_timedrdlock function shall fail if: -

-
-
ETIMEDOUT -
- The lock could not be acquired before the specified timeout expired. -
-

-The pthread_rwlock_timedrdlock function may fail if: -

-
-
EAGAIN -
- The read lock could not be acquired because the maximum number of - read locks for lock would be exceeded. -
- EINVAL -
- The value specified by rwlock does not refer to an - initialized read-write lock object, or the abs_timeout - nanosecond value is less than zero or greater than or equal to 1000 - million. -
-

-This function shall not return an error code of [EINTR]. -

-

The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

Applications using this function may be subject to priority -inversion, as discussed in the Base Definitions volume of -IEEE Std 1003.1-2001, Section 3.285, Priority Inversion. -

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

See Also

-

pthread_rwlock_destroy(3) -, pthread_rwlock_rdlock(3) -, pthread_rwlock_timedwrlock(3) -, pthread_rwlock_tryrdlock(3) -, pthread_rwlock_trywrlock(3) -, pthread_rwlock_unlock(3) -, pthread_rwlock_wrlock(3) -, the Base Definitions volume of IEEE Std 1003.1-2001, -<pthread.h>, <time.h> -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlock_timedwrlock.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlock_timedwrlock.html deleted file mode 100644 index 2f72c559d6d..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlock_timedwrlock.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - "PTHREAD_RWLOCK_TIMEDWRLOCK"(P) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_rwlock_timedwrlock - lock a read-write lock for writing -

-

Synopsis

-

#include <pthread.h>
#include <time.h> -

-

int pthread_rwlock_timedwrlock(pthread_rwlock_t *restrict -rwlock, const struct timespec *restrict abs_timeout); - -

-

Description

-

The pthread_rwlock_timedwrlock function shall apply a write -lock to the read-write lock referenced by rwlock as in the -pthread_rwlock_wrlock(3) -function. However, if the lock cannot be acquired without waiting for -other threads to unlock the lock, this wait shall be terminated when -the specified timeout expires. The timeout shall expire when the -absolute time specified by abs_timeout passes, as measured by -the clock on which timeouts are based (that is, when the value of -that clock equals or exceeds abs_timeout), or if the absolute -time specified by abs_timeout has already been passed at the -time of the call. -

-

The timespec data type is defined in the <time.h> -header. Under no circumstances shall the function fail with a timeout -if the lock can be acquired immediately. The validity of the -abs_timeout parameter need not be checked if the lock can be -immediately acquired. -

-

The calling thread may deadlock if at the time the call is made it -holds the read-write lock. The results are undefined if this function -is called with an uninitialized read-write lock. -

-

Pthreads-w32 defines _POSIX_READER_WRITER_LOCKS in -pthread.h as 200112L to indicate that the reader/writer routines are -implemented and may be used.

-

Return Value

-

The pthread_rwlock_timedwrlock function shall return zero -if the lock for writing on the read-write lock object referenced by -rwlock is acquired. Otherwise, an error number shall be -returned to indicate the error. -

-

Errors

-

The pthread_rwlock_timedwrlock function shall fail if: -

-
-
ETIMEDOUT -
- The lock could not be acquired before the specified timeout expired. -
-

-The pthread_rwlock_timedwrlock function may fail if: -

-
-
EINVAL -
- The value specified by rwlock does not refer to an initialized - read-write lock object, or the abs_timeout nanosecond value - is less than zero or greater than or equal to 1000 million. -
-

-This function shall not return an error code of [EINTR]. -

-

The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

Applications using this function may be subject to priority -inversion, as discussed in the Base Definitions volume of -IEEE Std 1003.1-2001, Section 3.285, Priority Inversion. -

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

See Also

-

pthread_rwlock_destroy(3) -, pthread_rwlock_rdlock(3) -, pthread_rwlock_timedrdlock(3) -, pthread_rwlock_tryrdlock(3) -, pthread_rwlock_trywrlock(3) -, pthread_rwlock_unlock(3) -, pthread_rwlock_wrlock(3) -, the Base Definitions volume of IEEE Std 1003.1-2001, -<pthread.h>, <time.h> -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlock_unlock.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlock_unlock.html deleted file mode 100644 index 6c8d25a468a..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlock_unlock.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - "PTHREAD_RWLOCK_UNLOCK"(P) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_rwlock_unlock - unlock a read-write lock object -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_rwlock_unlock(pthread_rwlock_t *rwlock); - -

-

Description

-

The pthread_rwlock_unlock function shall release a lock -held on the read-write lock object referenced by rwlock. -Results are undefined if the read-write lock rwlock is not -held by the calling thread. -

-

If this function is called to release a read lock from the -read-write lock object and there are other read locks currently held -on this read-write lock object, the read-write lock object remains in -the read locked state. If this function releases the last read lock -for this read-write lock object, the read-write lock object shall be -put in the unlocked state with no owners. -

-

If this function is called to release a write lock for this -read-write lock object, the read-write lock object shall be put in -the unlocked state. -

-

Pthreads-win32 does not prefer either writers or readers in -acquiring the lock – all threads enter a single prioritised FIFO -queue. While this may not be optimally efficient for some -applications, it does ensure that one type does not starve the other.

-

Results are undefined if any of these functions are called with an -uninitialized read-write lock. -

-

Pthreads-w32 defines _POSIX_READER_WRITER_LOCKS in -pthread.h as 200112L to indicate that the reader/writer routines are -implemented and may be used.

-

Return Value

-

If successful, the pthread_rwlock_unlock function shall -return zero; otherwise, an error number shall be returned to indicate -the error. -

-

Errors

-

The pthread_rwlock_unlock function may fail if: -

-
-
EINVAL -
- The value specified by rwlock does not refer to an - initialized read-write lock object. -
-

-
-

-The pthread_rwlock_unlock function shall not return an error -code of [EINTR]. -

-

The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

None. -

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

See Also

-

pthread_rwlock_destroy(3) -, pthread_rwlock_rdlock(3) -, pthread_rwlock_timedrdlock(3) -, pthread_rwlock_timedwrlock(3) -, pthread_rwlock_tryrdlock(3) -, pthread_rwlock_trywrlock(3) -, pthread_rwlock_wrlock(3) -, the Base Definitions volume of IEEE Std 1003.1-2001, -<pthread.h> -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlock_wrlock.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlock_wrlock.html deleted file mode 100644 index f4ef7829477..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlock_wrlock.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - "PTHREAD_RWLOCK_TRYWRLOCK"(P) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_rwlock_trywrlock, pthread_rwlock_wrlock - lock a -read-write lock object for writing -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_rwlock_trywrlock(pthread_rwlock_t *rwlock); -
int pthread_rwlock_wrlock(pthread_rwlock_t *
rwlock); - -

-

Description

-

The pthread_rwlock_trywrlock function shall apply a write -lock like the pthread_rwlock_wrlock function, with the -exception that the function shall fail if any thread currently holds -rwlock (for reading or writing). -

-

The pthread_rwlock_wrlock function shall apply a write lock -to the read-write lock referenced by rwlock. The calling -thread acquires the write lock if no other thread (reader or writer) -holds the read-write lock rwlock. Otherwise, the thread shall -block until it can acquire the lock. The calling thread may deadlock -if at the time the call is made it holds the read-write lock (whether -a read or write lock). -

-

Pthreads-win32 does not prefer either writers or readers in -acquiring the lock – all threads enter a single prioritised FIFO -queue. While this may not be optimally efficient for some -applications, it does ensure that one type does not starve the other.

-

Results are undefined if any of these functions are called with an -uninitialized read-write lock. -

-

Pthreads-w32 defines _POSIX_READER_WRITER_LOCKS in -pthread.h as 200112L to indicate that the reader/writer routines are -implemented and may be used.

-

Return Value

-

The pthread_rwlock_trywrlock function shall return zero if -the lock for writing on the read-write lock object referenced by -rwlock is acquired. Otherwise, an error number shall be -returned to indicate the error. -

-

If successful, the pthread_rwlock_wrlock function shall -return zero; otherwise, an error number shall be returned to indicate -the error. -

-

Errors

-

The pthread_rwlock_trywrlock function shall fail if: -

-
-
EBUSY -
- The read-write lock could not be acquired for writing because it was - already locked for reading or writing. -
-

-The pthread_rwlock_trywrlock and pthread_rwlock_wrlock -functions may fail if: -

-
-
EINVAL -
- The value specified by rwlock does not refer to an - initialized read-write lock object. -
-

-These functions shall not return an error code of [EINTR]. -

-

The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

Applications using these functions may be subject to priority -inversion, as discussed in the Base Definitions volume of -IEEE Std 1003.1-2001, Section 3.285, Priority Inversion. -

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

See Also

-

pthread_rwlock_destroy(3) -, pthread_rwlock_rdlock(3) -, pthread_rwlock_timedrdlock(3) -, pthread_rwlock_timedwrlock(3) -, pthread_rwlock_tryrdlock(3) -, pthread_rwlock_unlock(3) -, the Base Definitions volume of IEEE Std 1003.1-2001, -<pthread.h> -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlockattr_init.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlockattr_init.html deleted file mode 100644 index 4a24f7b8d4f..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlockattr_init.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - "PTHREAD_RWLOCKATTR_DESTROY"(P) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_rwlockattr_destroy, pthread_rwlockattr_init - destroy and -initialize the read-write lock attributes object -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_rwlockattr_destroy(pthread_rwlockattr_t *attr); -
int pthread_rwlockattr_init(pthread_rwlockattr_t *
attr); - -

-

Description

-

The pthread_rwlockattr_destroy function shall destroy a -read-write lock attributes object. A destroyed attr attributes -object can be reinitialized using pthread_rwlockattr_init ; -the results of otherwise referencing the object after it has been -destroyed are undefined. An implementation may cause -pthread_rwlockattr_destroy to set the object referenced by -attr to an invalid value. -

-

The pthread_rwlockattr_init function shall initialize a -read-write lock attributes object attr with the default value -for all of the attributes defined by the implementation. -

-

Results are undefined if pthread_rwlockattr_init is called -specifying an already initialized attr attributes object. -

-

After a read-write lock attributes object has been used to -initialize one or more read-write locks, any function affecting the -attributes object (including destruction) shall not affect any -previously initialized read-write locks. -

-

Pthreads-w32 defines _POSIX_READER_WRITER_LOCKS in -pthread.h as 200112L to indicate that the reader/writer routines are -implemented and may be used.

-

Return Value

-

If successful, the pthread_rwlockattr_destroy and -pthread_rwlockattr_init functions shall return zero; -otherwise, an error number shall be returned to indicate the error. -

-

Errors

-

The pthread_rwlockattr_destroy function may fail if: -

-
-
EINVAL -
- The value specified by attr is invalid. -
-

-The pthread_rwlockattr_init function shall fail if: -

-
-
ENOMEM -
- Insufficient memory exists to initialize the read-write lock - attributes object. -
-

-These functions shall not return an error code of [EINTR]. -

-

The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

None. -

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

See Also

-

pthread_rwlock_destroy(3) -, pthread_rwlockattr_getpshared(3) -, pthread_rwlockattr_setpshared(3) -, the Base Definitions volume of IEEE Std 1003.1-2001, -<pthread.h> -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlockattr_setpshared.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlockattr_setpshared.html deleted file mode 100644 index 2a427fe9e9f..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_rwlockattr_setpshared.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - "PTHREAD_RWLOCKATTR_GETPSHARED"(P) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_rwlockattr_getpshared, pthread_rwlockattr_setpshared - get -and set the process-shared attribute of the read-write lock -attributes object -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t * -restrict attr, int *restrict pshared); -
int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *
attr, -int pshared); -

-

Description

-

The pthread_rwlockattr_getpshared function shall obtain the -value of the process-shared attribute from the initialized -attributes object referenced by attr. The -pthread_rwlockattr_setpshared function shall set the -process-shared attribute in an initialized attributes object -referenced by attr. -

-

The process-shared attribute shall be set to -PTHREAD_PROCESS_SHARED to permit a read-write lock to be -operated upon by any thread that has access to the memory where the -read-write lock is allocated, even if the read-write lock is -allocated in memory that is shared by multiple processes. If the -process-shared attribute is PTHREAD_PROCESS_PRIVATE, -the read-write lock shall only be operated upon by threads created -within the same process as the thread that initialized the read-write -lock; if threads of differing processes attempt to operate on such a -read-write lock, the behavior is undefined. The default value of the -process-shared attribute shall be PTHREAD_PROCESS_PRIVATE. -

-

Pthreads-w32 defines _POSIX_THREAD_PROCESS_SHARED in -pthread.h as -1 to indicate that these routines are implemented but -they do not support the process shared option.

-

Additional attributes, their default values, and the names of the -associated functions to get and set those attribute values are -implementation-defined. -

-

Pthreads-w32 defines _POSIX_READER_WRITER_LOCKS in -pthread.h as 200112L to indicate that the reader/writer routines are -implemented and may be used.

-

Return Value

-

Upon successful completion, the pthread_rwlockattr_getpshared -function shall return zero and store the value of the process-shared -attribute of attr into the object referenced by the pshared -parameter. Otherwise, an error number shall be returned to indicate -the error. -

-

If successful, the pthread_rwlockattr_setpshared function -shall return zero; otherwise, an error number shall be returned to -indicate the error. -

-

Errors

-

The pthread_rwlockattr_getpshared and -pthread_rwlockattr_setpshared functions may fail if: -

-
-
EINVAL -
- The value specified by attr is invalid. -
-

-The pthread_rwlockattr_setpshared function may fail if: -

-
-
EINVAL -
- The new value specified for the attribute is outside the range of - legal values for that attribute. -
- ENOTSUP -
- The new value specified for the attribute is PTHREAD_PROCESS_SHARED. -
-

-These functions shall not return an error code of [EINTR]. -

-

The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

None. -

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

See Also

-

pthread_rwlock_destroy(3) -, pthread_rwlockattr_destroy(3) -, pthread_rwlockattr_init(3) -, the Base Definitions volume of IEEE Std 1003.1-2001, -<pthread.h> -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_self.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_self.html deleted file mode 100644 index 5af3cd59031..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_self.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - PTHREAD_SELF(3) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_self - return identifier of current thread -

-

Synopsis

-

#include <pthread.h> -

-

pthread_t pthread_self(void); -

-

Description

-

pthread_self return the thread identifier for the calling -thread. -

-

Pthreads-w32 also provides support for Win32 native -threads to interact with POSIX threads through the pthreads API. -Whereas all threads created via a call to pthread_create have a POSIX -thread ID and thread state, the library ensures that any Win32 native -threads that interact through the Pthreads API also generate a POSIX -thread ID and thread state when and if necessary. This provides full -reciprocity between Win32 and POSIX -threads. Win32 native threads that generate a POSIX thread ID and -state are treated by the library as having been created with the -PTHREAD_CREATE_DETACHED attribute.

-

Any Win32 native thread may call pthread_self directly to -return it's POSIX thread identifier. The ID and state will be -generated if it does not already exist. Win32 native threads do not -need to call pthread_self before calling Pthreads-w32 routines -unless that routine requires a pthread_t parameter.

-

Author

-

Xavier Leroy <Xavier.Leroy@inria.fr> -

-

Modified by Ross Johnson for use with Pthreads-w32.

-

See Also

-

pthread_equal(3) , -pthread_join(3) , -pthread_detach(3) , -pthread_setschedparam(3) -, pthread_getschedparam(3) -. -

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_setcancelstate.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_setcancelstate.html deleted file mode 100644 index 1dd9ec3558b..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_setcancelstate.html +++ /dev/null @@ -1,207 +0,0 @@ - - - - - PTHREAD_CANCEL(3) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_cancel, pthread_setcancelstate, pthread_setcanceltype, -pthread_testcancel - thread cancellation -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_cancel(pthread_t thread); -

-

int pthread_setcancelstate(int state, int -*oldstate); -

-

int pthread_setcanceltype(int type, int -*oldtype); -

-

void pthread_testcancel(void); -

-

Description

-

Cancellation is the mechanism by which a thread can terminate the -execution of another thread. More precisely, a thread can send a -cancellation request to another thread. Depending on its settings, -the target thread can then either ignore the request, honor it -immediately, or defer it until it reaches a cancellation point. -

-

When a thread eventually honors a cancellation request, it -performs as if pthread_exit(PTHREAD_CANCELED) has been called -at that point: all cleanup handlers are executed in reverse order, -destructor functions for thread-specific data are called, and finally -the thread stops executing with the return value PTHREAD_CANCELED. -See pthread_exit(3) for more -information. -

-

pthread_cancel sends a cancellation request to the thread -denoted by the thread argument. -

-

pthread_setcancelstate changes the cancellation state for -the calling thread -- that is, whether cancellation requests are -ignored or not. The state argument is the new cancellation -state: either PTHREAD_CANCEL_ENABLE to enable cancellation, or -PTHREAD_CANCEL_DISABLE to disable cancellation (cancellation -requests are ignored). If oldstate is not NULL, the -previous cancellation state is stored in the location pointed to by -oldstate, and can thus be restored later by another call to -pthread_setcancelstate. -

-

pthread_setcanceltype changes the type of responses to -cancellation requests for the calling thread: asynchronous -(immediate) or deferred. The type argument is the new -cancellation type: either PTHREAD_CANCEL_ASYNCHRONOUS to -cancel the calling thread as soon as the cancellation request is -received, or PTHREAD_CANCEL_DEFERRED to keep the cancellation -request pending until the next cancellation point. If oldtype -is not NULL, the previous cancellation state is stored in the -location pointed to by oldtype, and can thus be restored later -by another call to pthread_setcanceltype. -

-

Pthreads-w32 provides two levels of support for -PTHREAD_CANCEL_ASYNCHRONOUS: full and partial. Full support -requires an additional DLL and driver be installed on the Windows -system (see the See Also section below) that allows blocked threads -to be cancelled immediately. Partial support means that the target -thread will not cancel until it resumes execution naturally. Partial -support is provided if either the DLL or the driver are not -automatically detected by the pthreads-w32 library at run-time.

-

Threads are always created by pthread_create(3) -with cancellation enabled and deferred. That is, the initial -cancellation state is PTHREAD_CANCEL_ENABLE and the initial -type is PTHREAD_CANCEL_DEFERRED. -

-

Cancellation points are those points in the program execution -where a test for pending cancellation requests is performed and -cancellation is executed if positive. The following POSIX threads -functions are cancellation points: -

-

pthread_join(3) -
pthread_cond_wait(3) -
pthread_cond_timedwait(3) -
pthread_testcancel(3) -
sem_wait(3)
sem_timedwait(3) -
sigwait(3) (not supported under -Pthreads-w32)

-

Pthreads-w32 provides two functions to enable additional -cancellation points to be created in user functions that block on -Win32 HANDLEs:

-

pthreadCancelableWait() -
pthreadCancelableTimedWait()

-

All other POSIX threads functions are guaranteed not to be -cancellation points. That is, they never perform cancellation in -deferred cancellation mode. -

-

pthread_testcancel does nothing except testing for pending -cancellation and executing it. Its purpose is to introduce explicit -checks for cancellation in long sequences of code that do not call -cancellation point functions otherwise. -

-

Return Value

-

pthread_cancel, pthread_setcancelstate and -pthread_setcanceltype return 0 on success and a non-zero error -code on error. -

-

Errors

-

pthread_cancel returns the following error code on error: -

-
-
-
ESRCH -
- no thread could be found corresponding to that specified by the - thread ID. -
-
-

-pthread_setcancelstate returns the following error code on -error: -

-
-
-
EINVAL -
- the state argument is not -
-
-
-PTHREAD_CANCEL_ENABLE nor PTHREAD_CANCEL_DISABLE -
-

pthread_setcanceltype returns the following error code on -error: -

-
-
-
EINVAL -
- the type argument is not -
-
-
-PTHREAD_CANCEL_DEFERRED nor PTHREAD_CANCEL_ASYNCHRONOUS -
-

Author

-

Xavier Leroy <Xavier.Leroy@inria.fr> -

-

Modified by Ross Johnson for use with Pthreads-w32.

-

See Also

-

pthread_exit(3) , -pthread_cleanup_push(3) -, pthread_cleanup_pop(3) -, Pthreads-w32 package README file 'Prerequisites' section. -

-

Bugs

-

POSIX specifies that a number of system calls (basically, all -system calls that may block, such as read(2) -, write(2) , wait(2) -, etc.) and library functions that may call these system calls (e.g. -fprintf(3) ) are cancellation -points. Pthreads-win32 is not integrated enough with the C -library to implement this, and thus none of the C library functions -is a cancellation point. -

-

A workaround for these calls is to temporarily switch to -asynchronous cancellation (assuming full asynchronous cancellation -support is installed). So, checking for cancellation during a read -system call, for instance, can be achieved as follows: -

-


-
-
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &oldCancelType);
-read(fd, buffer, length);
-pthread_setcanceltype(oldCancelType, NULL);
-
-
Table of Contents
- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_setcanceltype.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_setcanceltype.html deleted file mode 100644 index 27bb1e355b9..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_setcanceltype.html +++ /dev/null @@ -1,207 +0,0 @@ - - - - - PTHREAD_CANCEL(3) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_cancel, pthread_setcancelstate, pthread_setcanceltype, -pthread_testcancel - thread cancellation -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_cancel(pthread_t thread); -

-

int pthread_setcancelstate(int state, int -*oldstate); -

-

int pthread_setcanceltype(int type, int -*oldtype); -

-

void pthread_testcancel(void); -

-

Description

-

Cancellation is the mechanism by which a thread can terminate the -execution of another thread. More precisely, a thread can send a -cancellation request to another thread. Depending on its settings, -the target thread can then either ignore the request, honor it -immediately, or defer it until it reaches a cancellation point. -

-

When a thread eventually honors a cancellation request, it -performs as if pthread_exit(PTHREAD_CANCELED) has been called -at that point: all cleanup handlers are executed in reverse order, -destructor functions for thread-specific data are called, and finally -the thread stops executing with the return value PTHREAD_CANCELED. -See pthread_exit(3) for more -information. -

-

pthread_cancel sends a cancellation request to the thread -denoted by the thread argument. -

-

pthread_setcancelstate changes the cancellation state for -the calling thread -- that is, whether cancellation requests are -ignored or not. The state argument is the new cancellation -state: either PTHREAD_CANCEL_ENABLE to enable cancellation, or -PTHREAD_CANCEL_DISABLE to disable cancellation (cancellation -requests are ignored). If oldstate is not NULL, the -previous cancellation state is stored in the location pointed to by -oldstate, and can thus be restored later by another call to -pthread_setcancelstate. -

-

pthread_setcanceltype changes the type of responses to -cancellation requests for the calling thread: asynchronous -(immediate) or deferred. The type argument is the new -cancellation type: either PTHREAD_CANCEL_ASYNCHRONOUS to -cancel the calling thread as soon as the cancellation request is -received, or PTHREAD_CANCEL_DEFERRED to keep the cancellation -request pending until the next cancellation point. If oldtype -is not NULL, the previous cancellation state is stored in the -location pointed to by oldtype, and can thus be restored later -by another call to pthread_setcanceltype. -

-

Pthreads-w32 provides two levels of support for -PTHREAD_CANCEL_ASYNCHRONOUS: full and partial. Full support -requires an additional DLL and driver be installed on the Windows -system (see the See Also section below) that allows blocked threads -to be cancelled immediately. Partial support means that the target -thread will not cancel until it resumes execution naturally. Partial -support is provided if either the DLL or the driver are not -automatically detected by the pthreads-w32 library at run-time.

-

Threads are always created by pthread_create(3) -with cancellation enabled and deferred. That is, the initial -cancellation state is PTHREAD_CANCEL_ENABLE and the initial -type is PTHREAD_CANCEL_DEFERRED. -

-

Cancellation points are those points in the program execution -where a test for pending cancellation requests is performed and -cancellation is executed if positive. The following POSIX threads -functions are cancellation points: -

-

pthread_join(3) -
pthread_cond_wait(3) -
pthread_cond_timedwait(3) -
pthread_testcancel(3) -
sem_wait(3)
sem_timedwait(3) -
sigwait(3) (not supported under -Pthreads-w32)

-

Pthreads-w32 provides two functions to enable additional -cancellation points to be created in user functions that block on -Win32 HANDLEs:

-

pthreadCancelableWait() -
pthreadCancelableTimedWait()

-

All other POSIX threads functions are guaranteed not to be -cancellation points. That is, they never perform cancellation in -deferred cancellation mode. -

-

pthread_testcancel does nothing except testing for pending -cancellation and executing it. Its purpose is to introduce explicit -checks for cancellation in long sequences of code that do not call -cancellation point functions otherwise. -

-

Return Value

-

pthread_cancel, pthread_setcancelstate and -pthread_setcanceltype return 0 on success and a non-zero error -code on error. -

-

Errors

-

pthread_cancel returns the following error code on error: -

-
-
-
ESRCH -
- no thread could be found corresponding to that specified by the - thread ID. -
-
-

-pthread_setcancelstate returns the following error code on -error: -

-
-
-
EINVAL -
- the state argument is not -
-
-
-PTHREAD_CANCEL_ENABLE nor PTHREAD_CANCEL_DISABLE -
-

pthread_setcanceltype returns the following error code on -error: -

-
-
-
EINVAL -
- the type argument is not -
-
-
-PTHREAD_CANCEL_DEFERRED nor PTHREAD_CANCEL_ASYNCHRONOUS -
-

Author

-

Xavier Leroy <Xavier.Leroy@inria.fr> -

-

Modified by Ross Johnson for use with Pthreads-w32.

-

See Also

-

pthread_exit(3) , -pthread_cleanup_push(3) -, pthread_cleanup_pop(3) -, Pthreads-w32 package README file 'Prerequisites' section. -

-

Bugs

-

POSIX specifies that a number of system calls (basically, all -system calls that may block, such as read(2) -, write(2) , wait(2) -, etc.) and library functions that may call these system calls (e.g. -fprintf(3) ) are cancellation -points. Pthreads-win32 is not integrated enough with the C -library to implement this, and thus none of the C library functions -is a cancellation point. -

-

A workaround for these calls is to temporarily switch to -asynchronous cancellation (assuming full asynchronous cancellation -support is installed). So, checking for cancellation during a read -system call, for instance, can be achieved as follows: -

-


-
-
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &oldCancelType);
-read(fd, buffer, length);
-pthread_setcanceltype(oldCancelType, NULL);
-
-
Table of Contents
- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_setconcurrency.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_setconcurrency.html deleted file mode 100644 index f3f598f978e..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_setconcurrency.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - "PTHREAD_GETCONCURRENCY"(P) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_getconcurrency, pthread_setconcurrency - get and set the -level of concurrency -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_getconcurrency(void);
int -pthread_setconcurrency(int new_level); -

-

Description

-

Unbound threads in a process may or may not be required to be -simultaneously active. By default, the threads implementation ensures -that a sufficient number of threads are active so that the process -can continue to make progress. While this conserves system resources, -it may not produce the most effective level of concurrency. -

-

The pthread_setconcurrency function allows an application -to inform the threads implementation of its desired concurrency -level, new_level. The actual level of concurrency provided by -the implementation as a result of this function call is unspecified. -

-

If new_level is zero, it causes the implementation to -maintain the concurrency level at its discretion as if -pthread_setconcurrency had never been called. -

-

The pthread_getconcurrency function shall return the value -set by a previous call to the pthread_setconcurrency function. -If the pthread_setconcurrency function was not previously -called, this function shall return zero to indicate that the -implementation is maintaining the concurrency level. -

-

A call to pthread_setconcurrency shall inform the -implementation of its desired concurrency level. The implementation -shall use this as a hint, not a requirement. -

-

If an implementation does not support multiplexing of user threads -on top of several kernel-scheduled entities, the -pthread_setconcurrency and pthread_getconcurrency -functions are provided for source code compatibility but they shall -have no effect when called. To maintain the function semantics, the -new_level parameter is saved when pthread_setconcurrency -is called so that a subsequent call to pthread_getconcurrency -shall return the same value. -

-

Pthreads-w32 provides these routines for source code -compatibility only, as described in the previous paragraph.

-

Return Value

-

If successful, the pthread_setconcurrency function shall -return zero; otherwise, an error number shall be returned to indicate -the error. -

-

The pthread_getconcurrency function shall always return the -concurrency level set by a previous call to pthread_setconcurrency -. If the pthread_setconcurrency function has never been -called, pthread_getconcurrency shall return zero. -

-

Errors

-

The pthread_setconcurrency function shall fail if: -

-
-
EINVAL -
- The value specified by new_level is negative. -
- EAGAIN -
- The value specific by new_level would cause a system resource - to be exceeded. -
-

-These functions shall not return an error code of [EINTR]. -

-

The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

Use of these functions changes the state of the underlying -concurrency upon which the application depends. Library developers -are advised to not use the pthread_getconcurrency and -pthread_setconcurrency functions since their use may conflict -with an applications use of these functions. -

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

See Also

-

The Base Definitions volume of IEEE Std 1003.1-2001, -<pthread.h> -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_setschedparam.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_setschedparam.html deleted file mode 100644 index 35fd7a2685a..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_setschedparam.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - PTHREAD_SETSCHEDPARAM(3) manual page - - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_setschedparam, pthread_getschedparam - control thread -scheduling -

-

parameters -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_setschedparam(pthread_t target_thread, -int policy, const struct sched_param *param); -

-

int pthread_getschedparam(pthread_t target_thread, -int *policy, struct sched_param *param); -

-

Description

-

pthread_setschedparam sets the scheduling parameters for -the thread target_thread as indicated by policy and -param. policy can be either SCHED_OTHER -(regular, non-real-time scheduling), SCHED_RR (real-time, -round-robin) or SCHED_FIFO (real-time, first-in first-out). -param specifies the scheduling priority for the two real-time -policies.

-

Pthreads-w32 only supports SCHED_OTHER and does not support -the real-time scheduling policies SCHED_RR and SCHED_FIFO. -

-

pthread_getschedparam retrieves the scheduling policy and -scheduling parameters for the thread target_thread and stores -them in the locations pointed to by policy and param, -respectively. -

-

Return Value

-

pthread_setschedparam and pthread_getschedparam -return 0 on success and a non-zero error code on error. -

-

Errors

-

On error, pthread_setschedparam returns the following error -codes: -

-
-
-
ENOTSUP -
- policy is not SCHED_OTHER.
- EINVAL -
- One of the arguments is invalid, or the priority value specified by - param is not valid for the specified policy.
- ESRCH -
- The target_thread is invalid or has already terminated -
-
-

-On error, pthread_getschedparam returns the following error -codes: -

-
-
-
ESRCH -
- the target_thread is invalid or has already terminated -
-
-

-Author

-

Xavier Leroy <Xavier.Leroy@inria.fr> -

-

Modified by Ross Johnson for use with Pthreads-w32.

-

See Also

-

sched_setscheduler(2) -, sched_getscheduler(2) -, sched_getparam(2) , -pthread_attr_setschedpolicy(3) -, pthread_attr_setschedparam(3) -. -

-
-

Table of Contents

- - - \ No newline at end of file diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_spin_init.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_spin_init.html deleted file mode 100644 index dbf21d56c09..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_spin_init.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - "PTHREAD_SPIN_DESTROY"(P) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_spin_destroy, pthread_spin_init - destroy or initialize a -spin lock object (ADVANCED REALTIME THREADS) -

-

Synopsis

-

#include <pthread.h> -

-

pthread_spinlock_t lock = -PTHREAD_SPINLOCK_INITIALIZER;

-

int pthread_spin_destroy(pthread_spinlock_t *lock); -
int pthread_spin_init(pthread_spinlock_t *
lock, int -pshared); -

-

Description

-

The pthread_spin_destroy function shall destroy the spin -lock referenced by lock and release any resources used by the -lock. The effect of subsequent use of the lock is undefined until the -lock is reinitialized by another call to pthread_spin_init . -The results are undefined if pthread_spin_destroy is called -when a thread holds the lock, or if this function is called with an -uninitialized thread spin lock. -

-

The pthread_spin_init function shall allocate any resources -required to use the spin lock referenced by lock and -initialize the lock to an unlocked state. -

-

Pthreads-w32 supports single and multiple processor systems -as well as process CPU affinity masking by checking the mask when the -spin lock is initialized. If the process is using only a single -processor at the time pthread_spin_init is called then the -spin lock is initialized as a PTHREAD_MUTEX_NORMAL mutex object. A -thread that calls pthread_spin_lock(3) -will block rather than spin in this case. If the process CPU affinity -mask is altered after the spin lock has been initialised, the spin -lock is not modified, and may no longer be optimal for the number of -CPUs available.

-

Pthreads-w32 defines _POSIX_THREAD_PROCESS_SHARED in -pthread.h as -1 to indicate that these routines do not support the -PTHREAD_PROCESS_SHARED attribute. pthread_spin_init -will return the error ENOTSUP if the value of pshared -is not PTHREAD_PROCESS_PRIVATE.

-

The results are undefined if pthread_spin_init is called -specifying an already initialized spin lock. The results are -undefined if a spin lock is used without first being initialized. -

-

If the pthread_spin_init function fails, the lock is not -initialized and the contents of lock are undefined. -

-

Only the object referenced by lock may be used for -performing synchronization. -

-

The result of referring to copies of that object in calls to -pthread_spin_destroy , pthread_spin_lock(3) -, pthread_spin_trylock(3), -or pthread_spin_unlock(3) -is undefined. -

-

Pthreads-w32 supports statically initialized spin locks -using PTHREAD_SPINLOCK_INITIALIZER. An application should -still call pthread_spin_destroy at some point to ensure that -any resources consumed by the spin lock are released.

-

Return Value

-

Upon successful completion, these functions shall return zero; -otherwise, an error number shall be returned to indicate the error. -

-

Errors

-

These functions may fail if: -

-
-
EBUSY -
- The implementation has detected an attempt to initialize or destroy - a spin lock while it is in use (for example, while being used in a - pthread_spin_lock(3) - call) by another thread. -
- EINVAL -
- The value specified by lock is invalid. -
-

-The pthread_spin_init function shall fail if: -

-
-
ENOTSUP -
- The value of pshared is not PTHREAD_PROCESS_PRIVATE.
- ENOMEM -
- Insufficient memory exists to initialize the lock. -
-

-These functions shall not return an error code of [EINTR]. -

-

The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

The pthread_spin_destroy and pthread_spin_init -functions are part of the Spin Locks option and need not be provided -on all implementations. -

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

See Also

-

pthread_spin_lock(3) , -pthread_spin_unlock(3) -, the Base Definitions volume of IEEE Std 1003.1-2001, -<pthread.h> -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_spin_lock.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_spin_lock.html deleted file mode 100644 index 398d2e4f156..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_spin_lock.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - "PTHREAD_SPIN_LOCK"(P) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_spin_lock, pthread_spin_trylock - lock a spin lock object -(ADVANCED REALTIME THREADS) -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_spin_lock(pthread_spinlock_t *lock); -
int pthread_spin_trylock(pthread_spinlock_t *
lock); - -

-

Description

-

The pthread_spin_lock function shall lock the spin lock -referenced by lock. The calling thread shall acquire the lock -if it is not held by another thread. Otherwise, the thread shall spin -(that is, shall not return from the pthread_spin_lock call) -until the lock becomes available. The results are undefined if the -calling thread holds the lock at the time the call is made.

-

Pthreads-w32 supports single and multiple processor systems -as well as process CPU affinity masking by checking the mask when the -spin lock is initialized. If the process is using only a single -processor at the time pthread_spin_init(3) -is called then the spin lock is initialized as a PTHREAD_MUTEX_NORMAL -mutex object. A thread that calls pthread_spin_lock will block -rather than spin in this case. If the process CPU affinity mask is -altered after the spin lock has been initialised, the spin lock is -not modified, and may no longer be optimal for the number of CPUs -available.

-

The pthread_spin_trylock function shall lock the spin lock -referenced by lock if it is not held by any thread. Otherwise, -the function shall fail. -

-

The results are undefined if any of these functions is called with -an uninitialized spin lock. -

-

Return Value

-

Upon successful completion, these functions shall return zero; -otherwise, an error number shall be returned to indicate the error. -

-

Errors

-

These functions may fail if: -

-
-
EINVAL -
- The value specified by lock does not refer to an initialized - spin lock object. -
-

-The pthread_spin_trylock function shall fail if: -

-
-
EBUSY -
- A thread currently holds the lock. -
-

-These functions shall not return an error code of [EINTR]. -

-

The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

Applications using this function may be subject to priority -inversion, as discussed in the Base Definitions volume of -IEEE Std 1003.1-2001, Section 3.285, Priority Inversion. -

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

See Also

-

pthread_spin_destroy(3) -, pthread_spin_unlock(3) -, the Base Definitions volume of IEEE Std 1003.1-2001, -<pthread.h> -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_spin_unlock.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_spin_unlock.html deleted file mode 100644 index cf8c4b1858b..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_spin_unlock.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - "PTHREAD_SPIN_UNLOCK"(P) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_spin_unlock - unlock a spin lock object (ADVANCED -REALTIME THREADS) -

-

Synopsis

-

#include <pthread.h> -

-

int pthread_spin_unlock(pthread_spinlock_t *lock); - -

-

Description

-

The pthread_spin_unlock function shall release the spin -lock referenced by lock which was locked via the -pthread_spin_lock(3) or -pthread_spin_trylock(3) -functions. If there are threads spinning on the lock when -pthread_spin_unlock is called, the lock becomes available and -an unspecified spinning thread shall acquire the lock. -

-

Pthreads-w32 does not check ownership of the lock and it is -therefore possible for a thread other than the locker to unlock the -spin lock. This is not a feature that should be exploited.

-

The results are undefined if this function is called with an -uninitialized thread spin lock. -

-

Return Value

-

Upon successful completion, the pthread_spin_unlock -function shall return zero; otherwise, an error number shall be -returned to indicate the error. -

-

Errors

-

The pthread_spin_unlock function may fail if: -

-
-
EINVAL -
- An invalid argument was specified. -
-
-
-

-This function shall not return an error code of [EINTR]. -

-

The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

Pthreads-w32 does not check ownership of the lock and it is -therefore possible for a thread other than the locker to unlock the -spin lock. This is not a feature that should be exploited.

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

See Also

-

pthread_spin_destroy(3) -, pthread_spin_lock(3) -, the Base Definitions volume of IEEE Std 1003.1-2001, -<pthread.h> -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_timechange_handler_np.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_timechange_handler_np.html deleted file mode 100644 index 2f9fc5d5622..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_timechange_handler_np.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - PTHREAD_TIMECHANGE_HANDLER_NP manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_timechange_handler_np – -alert timed waiting condition variables to system time changes.

-

Synopsis

-

#include <pthread.h> -

-

void * pthread_timechange_handler_np(void * dummy);

-

Description

-

To improve tolerance against operator or time service initiated -system clock changes.

-

pthread_timechange_handler_np can be called by an -application when it receives a WM_TIMECHANGE message from the system. -At present it broadcasts all condition variables so that waiting -threads can wake up and re-evaluate their conditions and restart -their timed waits if required.

-

pthread_timechange_handler_np has the same return type and -argument type as a thread routine so that it may be called directly -through pthread_create(), i.e. as a separate thread. If run as a -thread, the return code must be retrieved through pthread_join().

-

Although the dummy parameter is required it is not used and -any value including NULL can be given.

-

Cancellation

-

None.

-

Return Value

-

pthread_timechange_handler_np returns 0 on success, or an -error code.

-

Errors

-

The pthread_timechange_handler_np function returns the -following error code on error: -

-
-
-
EAGAIN -
-
-

-To indicate that not all condition variables were signalled for some -reason.

-

Author

-

Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_win32_attach_detach_np.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_win32_attach_detach_np.html deleted file mode 100644 index 583468e2acd..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_win32_attach_detach_np.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - PTHREAD_WIN32_ATTACH_DETACH_NP manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_win32_process_attach_np, -pthread_win32_process_detach_np, pthread_win32_thread_attach_np, -pthread_win32_thread_detach_np – exposed versions of the -pthreads-w32 DLL dllMain() switch functionality for use when -statically linking the library.

-

Synopsis

-

#include <pthread.h> -

-

BOOL pthread_win32_process_attach_np (void);

-

BOOL pthread_win32_process_detach_np (void);

-

BOOL pthread_win32_thread_attach_np (void);

-

BOOL pthread_win32_thread_detach_np (void);

-

Description

-

These functions contain the code normally run via dllMain -when the library is used as a dll but which need to be called -explicitly by an application when the library is statically linked. As of version 2.9.0, the static library built using either MSC or GCC includes RT hooks which will call the pthread_win32_process_*_np routines automatically on start/exit of the application.

-

You will need to call pthread_win32_process_attach_np -before you can call any pthread routines when statically linking. You -should call pthread_win32_process_detach_np before exiting -your application to clean up.

-

pthread_win32_thread_attach_np is currently a no-op, but -pthread_win32_thread_detach_np is needed to clean up the -implicit pthread handle that is allocated to a Win32 thread if it -calls certain pthreads routines. Call this routine when the Win32 -thread exits.

-

These functions invariably return TRUE except for -pthread_win32_process_attach_np which will return FALSE if -pthreads-w32 initialisation fails.

-

Cancellation

-

None.

-

Return Value

-

These routines return TRUE (non-zero) on success, or FALSE (0) if -they fail.

-

Errors

-

None.

-

Author

-

Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/pthread_win32_test_features_np.html b/platform/win32/msvc/external/pthreads.2/manual/pthread_win32_test_features_np.html deleted file mode 100644 index 7e6c665682c..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/pthread_win32_test_features_np.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - - PTHREAD_WIN32_TEST_FEATURES_NP manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

pthread_win32_test_features_np – -find out what features were detected at process attach time.

-

Synopsis

-

#include <pthread.h> -

-

BOOL pthread_win32_test_features_np(int mask);

-

Description

-

pthread_win32_test_features_np allows an application to -check which run-time auto-detected features are available within the -library.

-

The possible features are:

-

PTW32_SYSTEM_INTERLOCKED_COMPARE_EXCHANGE

-

Return TRUE if the Win32 version of -InterlockedCompareExchange() is being used. On IA32 systems the -library can use optimised and inlinable assembler versions of -InterlockedExchange() and InterlockedCompareExchange().

-

PTW32_ALERTABLE_ASYNC_CANCEL

-

Return TRUE if the QueueUserAPCEx package -QUSEREX.DLL and the AlertDrv.sys driver was detected. This package -provides alertable (pre-emptive) asynchronous threads cancellation. -If this feature returns FALSE then the default async cancel scheme is -in use, which cannot cancel blocked threads.

-

Cancellation

-

None.

-

Return Value

-

pthread_win32_test_features_np returns TRUE (non-zero) if -the specified feature is present, and FALSE (0) otherwise.

-

Errors

-

None.

-

Author

-

Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - \ No newline at end of file diff --git a/platform/win32/msvc/external/pthreads.2/manual/sched_get_priority_max.html b/platform/win32/msvc/external/pthreads.2/manual/sched_get_priority_max.html deleted file mode 100644 index f79f59b0331..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/sched_get_priority_max.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - "SCHED_GET_PRIORITY_MAX"(P) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

sched_get_priority_max, sched_get_priority_min - get priority -limits (REALTIME) -

-

Synopsis

-

#include <sched.h> -

-

int sched_get_priority_max(int policy);
int -sched_get_priority_min(int
policy); -

-

Description

-

The sched_get_priority_max and sched_get_priority_min -functions shall return the appropriate maximum or minimum, -respectively, for the scheduling policy specified by policy. -

-

The value of policy shall be one of the scheduling policy -values defined in <sched.h>. -

-

Return Value

-

If successful, the sched_get_priority_max and -sched_get_priority_min functions shall return the appropriate -maximum or minimum values, respectively. If unsuccessful, they shall -return a value of -1 and set errno to indicate the error. -

-

Errors

-

The sched_get_priority_max and sched_get_priority_min -functions shall fail if: -

-
-
EINVAL -
- The value of the policy parameter does not represent a - defined scheduling policy. -
-

-The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

None. -

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

See Also

-

sched_getscheduler(3) -, sched_setscheduler(3) -, the Base Definitions volume of IEEE Std 1003.1-2001, -<sched.h> -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - \ No newline at end of file diff --git a/platform/win32/msvc/external/pthreads.2/manual/sched_getscheduler.html b/platform/win32/msvc/external/pthreads.2/manual/sched_getscheduler.html deleted file mode 100644 index dd1d964e22d..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/sched_getscheduler.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - "SCHED_GETSCHEDULER"(P) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

sched_getscheduler - get scheduling policy (REALTIME) -

-

Synopsis

-

#include <sched.h> -

-

int sched_getscheduler(pid_t pid); -

-

Description

-

The sched_getscheduler function shall return the scheduling -policy of the process specified by pid. If the value of pid -is negative, the behavior of the sched_getscheduler function -is unspecified. -

-

The values that can be returned by sched_getscheduler are -defined in the <sched.h> header. -

-

Pthreads-w32 only supports the SCHED_OTHER policy, -which is the only value that can be returned. However, checks on pid -and permissions are performed first so that the other useful side -effects of this routine are retained.

-

If a process specified by pid exists, and if the calling -process has permission, the scheduling policy shall be returned for -the process whose process ID is equal to pid. -

-

If pid is zero, the scheduling policy shall be returned for -the calling process. -

-

Return Value

-

Upon successful completion, the sched_getscheduler function -shall return the scheduling policy of the specified process. If -unsuccessful, the function shall return -1 and set errno to -indicate the error. -

-

Errors

-

The sched_getscheduler function shall fail if: -

-
-
EPERM -
- The requesting process does not have permission to determine the - scheduling policy of the specified process. -
- ESRCH -
- No process can be found corresponding to that specified by pid. -
-

-The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

None. -

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

See Also

-

sched_setscheduler(3) -, the Base Definitions volume of IEEE Std 1003.1-2001, -<sched.h> -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/sched_setscheduler.html b/platform/win32/msvc/external/pthreads.2/manual/sched_setscheduler.html deleted file mode 100644 index 206508d62a8..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/sched_setscheduler.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - "SCHED_SETSCHEDULER"(P) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

sched_setscheduler - set scheduling policy and parameters -(REALTIME) -

-

Synopsis

-

#include <sched.h> -

-

int sched_setscheduler(pid_t pid, int policy, -const struct sched_param *param); -

-

Description

-

The sched_setscheduler function shall set the scheduling -policy and scheduling parameters of the process specified by pid -to policy and the parameters specified in the sched_param -structure pointed to by param, respectively. The value of the -sched_priority member in the sched_param structure -shall be any integer within the inclusive priority range for the -scheduling policy specified by policy. If the value of pid -is negative, the behavior of the sched_setscheduler function -is unspecified. -

-

The possible values for the policy parameter are defined in -the <sched.h> header. -

-

Pthreads-w32 only supports the SCHED_OTHER policy. -Any other value for policy will return failure with errno set -to ENOSYS. However, checks on pid and permissions are -performed first so that the other useful side effects of this routine -are retained.

-

If a process specified by pid exists, and if the calling -process has permission, the scheduling policy and scheduling -parameters shall be set for the process whose process ID is equal to -pid. -

-

If pid is zero, the scheduling policy and scheduling -parameters shall be set for the calling process. -

-

Implementations may require that the requesting process have -permission to set its own scheduling parameters or those of another -process. Additionally, implementation-defined restrictions may apply -as to the appropriate privileges required to set a process’ own -scheduling policy, or another process’ scheduling policy, to a -particular value. -

-

The sched_setscheduler function shall be considered -successful if it succeeds in setting the scheduling policy and -scheduling parameters of the process specified by pid to the -values specified by policy and the structure pointed to by -param, respectively. -

-

The effect of this function on individual threads is dependent on -the scheduling contention scope of the threads: -

-
-
* -
- For threads with system scheduling contention scope, these functions - shall have no effect on their scheduling. -
- * -
- For threads with process scheduling contention scope, the threads’ - scheduling policy and associated parameters shall not be affected. - However, the scheduling of these threads with respect to threads in - other processes may be dependent on the scheduling parameters of - their process, which are governed using these functions. -
-

-This function is not atomic with respect to other threads in the -process. Threads may continue to execute while this function call is -in the process of changing the scheduling policy and associated -scheduling parameters for the underlying kernel-scheduled entities -used by the process contention scope threads. -

-

Return Value

-

Upon successful completion, the function shall return the former -scheduling policy of the specified process. If the sched_setscheduler -function fails to complete successfully, the policy and scheduling -parameters shall remain unchanged, and the function shall return a -value of -1 and set errno to indicate the error. -

-

Errors

-

The sched_setscheduler function shall fail if: -

-
-
EINVAL -
- The value of the policy parameter is invalid, or one or more - of the parameters contained in param is outside the valid - range for the specified scheduling policy. -
- EPERM -
- The requesting process does not have permission to set either or - both of the scheduling parameters or the scheduling policy of the - specified process. -
- ESRCH -
- No process can be found corresponding to that specified by pid. -
-

-The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

None. -

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

See Also

-

sched_getscheduler(3) -, the Base Definitions volume of IEEE Std 1003.1-2001, -<sched.h> -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-

Modified by Ross Johnson for use with Pthreads-w32.

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/sched_yield.html b/platform/win32/msvc/external/pthreads.2/manual/sched_yield.html deleted file mode 100644 index 1691afb4c75..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/sched_yield.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - "SCHED_YIELD"(P) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

sched_yield - yield the processor -

-

Synopsis

-

#include <sched.h> -

-

int sched_yield(void); -

-

Description

-

The sched_yield function shall force the running thread to -relinquish the processor until it again becomes the head of its -thread list. It takes no arguments. -

-

Return Value

-

The sched_yield function shall return 0 if it completes -successfully; otherwise, it shall return a value of -1 and set errno -to indicate the error. -

-

Errors

-

No errors are defined. -

-

The following sections are informative. -

-

Examples

-

None. -

-

Application Usage

-

None. -

-

Rationale

-

None. -

-

Future Directions

-

None. -

-

See Also

-

The Base Definitions volume of IEEE Std 1003.1-2001, -<sched.h> -

-

Copyright

-

Portions of this text are reprinted and reproduced in electronic -form from IEEE Std 1003.1, 2003 Edition, Standard for Information -Technology -- Portable Operating System Interface (POSIX), The Open -Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the -Institute of Electrical and Electronics Engineers, Inc and The Open -Group. In the event of any discrepancy between this version and the -original IEEE and The Open Group Standard, the original IEEE and The -Open Group Standard is the referee document. The original Standard -can be obtained online at http://www.opengroup.org/unix/online.html -. -

-
-

Table of Contents

- - - diff --git a/platform/win32/msvc/external/pthreads.2/manual/sem_init.html b/platform/win32/msvc/external/pthreads.2/manual/sem_init.html deleted file mode 100644 index 338867e7bfa..00000000000 --- a/platform/win32/msvc/external/pthreads.2/manual/sem_init.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - SEMAPHORES(3) manual page - - - - - - - -

POSIX Threads for Windows – REFERENCE - Pthreads-w32

-

Reference Index

-

Table of Contents

-

Name

-

sem_init, sem_wait, sem_trywait, sem_post, sem_getvalue, -sem_destroy - operations on semaphores -

-

Synopsis

-

#include <semaphore.h> -

-

int sem_init(sem_t *sem, int pshared, -unsigned int value); -

-

int sem_wait(sem_t * sem); -

-

int sem_timedwait(sem_t * sem, const struct -timespec *abstime); -

-

int sem_trywait(sem_t * sem); -

-

int sem_post(sem_t * sem); -

-

int sem_post_multiple(sem_t * sem, int -number); -

-

int sem_getvalue(sem_t * sem, int * sval); -

-

int sem_destroy(sem_t * sem); -

-

Description

-

Semaphores are counters for resources shared between threads. The -basic operations on semaphores are: increment the counter atomically, -and wait until the counter is non-null and decrement it atomically. -

-

sem_init initializes the semaphore object pointed to by -sem. The count associated with the semaphore is set initially -to value. The pshared argument indicates whether the -semaphore is local to the current process ( pshared is zero) -or is to be shared between several processes ( pshared is not -zero).

-

Pthreads-w32 currently does not support process-shared -semaphores, thus sem_init always returns with error EPERM -if pshared is not zero. -

-

sem_wait atomically decrements sem's count if it is -greater than 0 and returns immediately or it suspends the calling -thread until it can resume following a call to sem_post or -sem_post_multiple.

-

sem_timedwait atomically decrements sem's count if -it is greater than 0 and returns immediately, or it suspends the -calling thread. If abstime time arrives before the thread can -resume following a call to sem_post or sem_post_multiple, -then sem_timedwait returns with a return code of -1 after -having set errno to ETIMEDOUT. If the call can return -without suspending then abstime is not checked.

-

sem_trywait atomically decrements sem's count if it -is greater than 0 and returns immediately, or it returns immediately -with a return code of -1 after having set errno to EAGAIN. -sem_trywait never blocks.

-

sem_post either releases one thread if there are any -waiting on sem, or it atomically increments sem's -count.

-

sem_post_multiple either releases multiple threads if there -are any waiting on sem and/or it atomically increases sem's -count. If there are currently n waiters, where n the -largest number less than or equal to number, then n -waiters are released and sem's count is incremented by number -minus n.

-

sem_getvalue stores in the location pointed to by sval -the current count of the semaphore sem. In the Pthreads-w32 -implementation: if the value returned in sval is greater than -or equal to 0 it was the sem's count at some point during the -call to sem_getvalue. If the value returned in sval is -less than 0 then it's absolute value represents the number of threads -waiting on sem at some point during the call to sem_getvalue. -POSIX does not require an implementation of sem_getvalue -to return a value in sval that is less than 0, but if it does -then it's absolute value must represent the number of waiters.

-

sem_destroy destroys a semaphore object, freeing the -resources it might hold. No threads should be waiting on the -semaphore at the time sem_destroy is called.

-

Cancellation

-

sem_wait and sem_timedwait are cancellation points. -

-

Async-signal Safety

-

These routines are not async-cancel safe.

-

Return Value

-

All semaphore functions return 0 on success, or -1 on error in -which case they write an error code in errno. -

-

Errors

-

The sem_init function sets errno to the following -codes on error: -

-
-
-
EINVAL -
- value exceeds the maximal counter value SEM_VALUE_MAX -
- ENOSYS -
-
-
-pshared is not zero -
-

The sem_timedwait function sets errno to the -following error code on error: -

-
-
-
ETIMEDOUT -
-
-
-if abstime arrives before the waiting thread can resume -following a call to sem_post or sem_post_multiple. -
-

The sem_trywait function sets errno to the following -error code on error: -

-
-
-
EAGAIN -
-
-
-if the semaphore count is currently 0 -
-

The sem_post and sem_post_multiple functions set -errno to the following error code on error: -

-
-
-
ERANGE -
- if after incrementing, the semaphore count would exceed - SEM_VALUE_MAX (the semaphore count is left unchanged in this - case) -
-
-

-The sem_destroy function sets errno to the following -error code on error: -

-
-
-
EBUSY -
- if some threads are currently blocked waiting on the semaphore. -
-
-

-Author

-

Xavier Leroy <Xavier.Leroy@inria.fr> -

-

Modified by Ross Johnson for use with Pthreads-w32.

-

See Also

-

pthread_mutex_init(3) -, pthread_cond_init(3) , -pthread_cancel(3) . -

-
-

Table of Contents

- - - \ No newline at end of file diff --git a/platform/win32/msvc/external/pthreads.2/misc.c b/platform/win32/msvc/external/pthreads.2/misc.c deleted file mode 100644 index 5853569a70b..00000000000 --- a/platform/win32/msvc/external/pthreads.2/misc.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * misc.c - * - * Description: - * This translation unit implements miscellaneous thread functions. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -#include "pthread_kill.c" -#include "pthread_once.c" -#include "pthread_self.c" -#include "pthread_equal.c" -#include "pthread_setconcurrency.c" -#include "pthread_getconcurrency.c" -#include "ptw32_new.c" -#include "ptw32_calloc.c" -#include "ptw32_reuse.c" -#include "w32_CancelableWait.c" diff --git a/platform/win32/msvc/external/pthreads.2/mutex.c b/platform/win32/msvc/external/pthreads.2/mutex.c deleted file mode 100644 index b4da4a4d492..00000000000 --- a/platform/win32/msvc/external/pthreads.2/mutex.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * mutex.c - * - * Description: - * This translation unit implements mutual exclusion (mutex) primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#if ! defined(_UWIN) && ! defined(WINCE) -# include -#endif -#if !defined(NEED_FTIME) -#include -#endif -#include "pthread.h" -#include "implement.h" - - -#include "ptw32_mutex_check_need_init.c" -#include "pthread_mutex_init.c" -#include "pthread_mutex_destroy.c" -#include "pthread_mutexattr_init.c" -#include "pthread_mutexattr_destroy.c" -#include "pthread_mutexattr_getpshared.c" -#include "pthread_mutexattr_setpshared.c" -#include "pthread_mutexattr_settype.c" -#include "pthread_mutexattr_gettype.c" -#include "pthread_mutexattr_setrobust.c" -#include "pthread_mutexattr_getrobust.c" -#include "pthread_mutex_lock.c" -#include "pthread_mutex_timedlock.c" -#include "pthread_mutex_unlock.c" -#include "pthread_mutex_trylock.c" -#include "pthread_mutex_consistent.c" diff --git a/platform/win32/msvc/external/pthreads.2/need_errno.h b/platform/win32/msvc/external/pthreads.2/need_errno.h deleted file mode 100644 index b91af82529b..00000000000 --- a/platform/win32/msvc/external/pthreads.2/need_errno.h +++ /dev/null @@ -1,145 +0,0 @@ -/*** -* errno.h - system wide error numbers (set by system calls) -* -* Copyright (c) 1985-1997, Microsoft Corporation. All rights reserved. -* -* Purpose: -* This file defines the system-wide error numbers (set by -* system calls). Conforms to the XENIX standard. Extended -* for compatibility with Uniforum standard. -* [System V] -* -* [Public] -* -****/ - -#if _MSC_VER > 1000 -#pragma once -#endif - -#if !defined(_INC_ERRNO) -#define _INC_ERRNO - -#if !defined(_WIN32) -#error ERROR: Only Win32 targets supported! -#endif - -#include - -#if defined(__cplusplus) -extern "C" { -#endif - - - -/* Define _CRTIMP */ - -#ifndef _CRTIMP -#if defined(_DLL) -#define _CRTIMP __declspec(dllimport) -#else /* ndef _DLL */ -#define _CRTIMP -#endif /* _DLL */ -#endif /* _CRTIMP */ - - -/* Define __cdecl for non-Microsoft compilers */ - -#if ( !defined(_MSC_VER) && !defined(__cdecl) ) -#define __cdecl -#endif - -/* Define _CRTAPI1 (for compatibility with the NT SDK) */ - -#if !defined(_CRTAPI1) -#if _MSC_VER >= 800 && _M_IX86 >= 300 -#define _CRTAPI1 __cdecl -#else -#define _CRTAPI1 -#endif -#endif - -#if !defined(PTW32_STATIC_LIB) -# if defined(PTW32_BUILD) -# define PTW32_DLLPORT __declspec (dllexport) -# else -# define PTW32_DLLPORT __declspec (dllimport) -# endif -#else -# define PTW32_DLLPORT -#endif - -/* declare reference to errno */ - -#if (defined(_MT) || defined(_MD) || defined(_DLL)) && !defined(_MAC) -PTW32_DLLPORT int * __cdecl _errno(void); -#define errno (*_errno()) -#else /* ndef _MT && ndef _MD && ndef _DLL */ -_CRTIMP extern int errno; -#endif /* _MT || _MD || _DLL */ - -/* Error Codes */ - -#define EPERM 1 -#define ENOENT 2 -#define ESRCH 3 -#define EINTR 4 -#define EIO 5 -#define ENXIO 6 -#define E2BIG 7 -#define ENOEXEC 8 -#define EBADF 9 -#define ECHILD 10 -#define EAGAIN 11 -#define ENOMEM 12 -#define EACCES 13 -#define EFAULT 14 -#define EBUSY 16 -#define EEXIST 17 -#define EXDEV 18 -#define ENODEV 19 -#define ENOTDIR 20 -#define EISDIR 21 -#define EINVAL 22 -#define ENFILE 23 -#define EMFILE 24 -#define ENOTTY 25 -#define EFBIG 27 -#define ENOSPC 28 -#define ESPIPE 29 -#define EROFS 30 -#define EMLINK 31 -#define EPIPE 32 -#define EDOM 33 -#define ERANGE 34 -#define EDEADLK 36 - -/* defined differently in winsock.h on WinCE */ -#if !defined(ENAMETOOLONG) -#define ENAMETOOLONG 38 -#endif - -#define ENOLCK 39 -#define ENOSYS 40 - -/* defined differently in winsock.h on WinCE */ -#if !defined(ENOTEMPTY) -#define ENOTEMPTY 41 -#endif - -#define EILSEQ 42 - -/* POSIX 2008 - robust mutexes */ -#define EOWNERDEAD 43 -#define ENOTRECOVERABLE 44 - -/* - * Support EDEADLOCK for compatibiity with older MS-C versions. - */ -#define EDEADLOCK EDEADLK - -#if defined(__cplusplus) -} -#endif - -#endif /* _INC_ERRNO */ diff --git a/platform/win32/msvc/external/pthreads.2/nonportable.c b/platform/win32/msvc/external/pthreads.2/nonportable.c deleted file mode 100644 index fdbbd8e6581..00000000000 --- a/platform/win32/msvc/external/pthreads.2/nonportable.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - * nonportable.c - * - * Description: - * This translation unit implements non-portable thread functions. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -#include "pthread_mutexattr_setkind_np.c" -#include "pthread_mutexattr_getkind_np.c" -#include "pthread_getw32threadhandle_np.c" -#include "pthread_getunique_np.c" -#include "pthread_delay_np.c" -#include "pthread_num_processors_np.c" -#include "pthread_win32_attach_detach_np.c" -#include "pthread_timechange_handler_np.c" diff --git a/platform/win32/msvc/external/pthreads.2/private.c b/platform/win32/msvc/external/pthreads.2/private.c deleted file mode 100644 index 1c4ff396ca0..00000000000 --- a/platform/win32/msvc/external/pthreads.2/private.c +++ /dev/null @@ -1,54 +0,0 @@ -/* - * private.c - * - * Description: - * This translation unit implements routines which are private to - * the implementation and may be used throughout it. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -#include "ptw32_MCS_lock.c" -#include "ptw32_is_attr.c" -#include "ptw32_processInitialize.c" -#include "ptw32_processTerminate.c" -#include "ptw32_threadStart.c" -#include "ptw32_threadDestroy.c" -#include "ptw32_tkAssocCreate.c" -#include "ptw32_tkAssocDestroy.c" -#include "ptw32_callUserDestroyRoutines.c" -#include "ptw32_semwait.c" -#include "ptw32_timespec.c" -#include "ptw32_relmillisecs.c" -#include "ptw32_throw.c" -#include "ptw32_getprocessors.c" diff --git a/platform/win32/msvc/external/pthreads.2/pthread.c b/platform/win32/msvc/external/pthreads.2/pthread.c deleted file mode 100644 index 0456aa6d3ee..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - * pthread.c - * - * Description: - * This translation unit agregates pthreads-win32 translation units. - * It is used for inline optimisation of the library, - * maximising for speed at the expense of size. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -/* The following are ordered for inlining */ - -#include "private.c" -#include "attr.c" -#include "barrier.c" -#include "cancel.c" -#include "cleanup.c" -#include "condvar.c" -#include "create.c" -#include "dll.c" -#include "autostatic.c" -#include "errno.c" -#include "exit.c" -#include "fork.c" -#include "global.c" -#include "misc.c" -#include "mutex.c" -#include "nonportable.c" -#include "rwlock.c" -#include "sched.c" -#include "semaphore.c" -#include "signal.c" -#include "spin.c" -#include "sync.c" -#include "tsd.c" diff --git a/platform/win32/msvc/external/pthreads.2/pthread.dsp b/platform/win32/msvc/external/pthreads.2/pthread.dsp deleted file mode 100644 index 3f7b860de30..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread.dsp +++ /dev/null @@ -1,142 +0,0 @@ -# Microsoft Developer Studio Project File - Name="pthread" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=pthread - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "pthread.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "pthread.mak" CFG="pthread - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "pthread - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "pthread - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "pthread - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "." -# PROP Intermediate_Dir "." -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PTW32_BUILD" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /D "__CLEANUP_C" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PTW32_BUILD" /YX /FD /c -# SUBTRACT CPP /u -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x809 /d "NDEBUG" -# ADD RSC /l 0x409 /i "." /d "NDEBUG" /d "PTW32_RC_MSC" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib ws2_32.lib /nologo /dll /pdb:none /machine:I386 /out:".\pthreadVC2.dll" - -!ELSEIF "$(CFG)" == "pthread - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "." -# PROP Intermediate_Dir "." -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PTW32_BUILD" /YX /FD /GZ /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "__CLEANUP_C" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PTW32_BUILD" /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x809 /d "_DEBUG" -# ADD RSC /l 0x409 /i "." /d "_DEBUG" /d "PTW32_RC_MSC" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib ws2_32.lib /nologo /dll /map /debug /machine:I386 /out:".\pthreadVC2.dll" /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "pthread - Win32 Release" -# Name "pthread - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\pthread.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\implement.h -# End Source File -# Begin Source File - -SOURCE=.\pthread.h -# End Source File -# Begin Source File - -SOURCE=.\sched.h -# End Source File -# Begin Source File - -SOURCE=.\semaphore.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# Begin Source File - -SOURCE=.\version.rc - -!IF "$(CFG)" == "pthread - Win32 Release" - -# ADD BASE RSC /l 0xc09 -# ADD RSC /l 0x409 /i "." /d "PTW32_RC_MSC" - -!ELSEIF "$(CFG)" == "pthread - Win32 Debug" - -# ADD BASE RSC /l 0xc09 -# ADD RSC /l 0x409 /i "." /d "PTW32_RC_MSC" - -!ENDIF - -# End Source File -# End Group -# End Target -# End Project diff --git a/platform/win32/msvc/external/pthreads.2/pthread.dsw b/platform/win32/msvc/external/pthreads.2/pthread.dsw deleted file mode 100644 index 9ff68b7535e..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "pthread"=.\pthread.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/platform/win32/msvc/external/pthreads.2/pthread.h b/platform/win32/msvc/external/pthreads.2/pthread.h deleted file mode 100644 index 436ea8b6b1f..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread.h +++ /dev/null @@ -1,1368 +0,0 @@ -/* This is an implementation of the threads API of POSIX 1003.1-2001. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#if !defined( PTHREAD_H ) -#define PTHREAD_H - -/* - * See the README file for an explanation of the pthreads-win32 version - * numbering scheme and how the DLL is named etc. - */ -#define PTW32_VERSION 2,9,1,0 -#define PTW32_VERSION_STRING "2, 9, 1, 0\0" - -/* There are three implementations of cancel cleanup. - * Note that pthread.h is included in both application - * compilation units and also internally for the library. - * The code here and within the library aims to work - * for all reasonable combinations of environments. - * - * The three implementations are: - * - * WIN32 SEH - * C - * C++ - * - * Please note that exiting a push/pop block via - * "return", "exit", "break", or "continue" will - * lead to different behaviour amongst applications - * depending upon whether the library was built - * using SEH, C++, or C. For example, a library built - * with SEH will call the cleanup routine, while both - * C++ and C built versions will not. - */ - -/* - * Define defaults for cleanup code. - * Note: Unless the build explicitly defines one of the following, then - * we default to standard C style cleanup. This style uses setjmp/longjmp - * in the cancelation and thread exit implementations and therefore won't - * do stack unwinding if linked to applications that have it (e.g. - * C++ apps). This is currently consistent with most/all commercial Unix - * POSIX threads implementations. - */ -#if !defined( __CLEANUP_SEH ) && !defined( __CLEANUP_CXX ) && !defined( __CLEANUP_C ) -# define __CLEANUP_C -#endif - -#if defined( __CLEANUP_SEH ) && ( !defined( _MSC_VER ) && !defined(PTW32_RC_MSC)) -#error ERROR [__FILE__, line __LINE__]: SEH is not supported for this compiler. -#endif - -/* - * Stop here if we are being included by the resource compiler. - */ -#if !defined(RC_INVOKED) - -#undef PTW32_LEVEL - -#if defined(_POSIX_SOURCE) -#define PTW32_LEVEL 0 -/* Early POSIX */ -#endif - -#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199309 -#undef PTW32_LEVEL -#define PTW32_LEVEL 1 -/* Include 1b, 1c and 1d */ -#endif - -#if defined(INCLUDE_NP) -#undef PTW32_LEVEL -#define PTW32_LEVEL 2 -/* Include Non-Portable extensions */ -#endif - -#define PTW32_LEVEL_MAX 3 - -#if ( defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112 ) || !defined(PTW32_LEVEL) -#define PTW32_LEVEL PTW32_LEVEL_MAX -/* Include everything */ -#endif - -#if defined(_UWIN) -# define HAVE_STRUCT_TIMESPEC 1 -# define HAVE_SIGNAL_H 1 -# undef HAVE_PTW32_CONFIG_H -# pragma comment(lib, "pthread") -#endif - -/* - * ------------------------------------------------------------- - * - * - * Module: pthread.h - * - * Purpose: - * Provides an implementation of PThreads based upon the - * standard: - * - * POSIX 1003.1-2001 - * and - * The Single Unix Specification version 3 - * - * (these two are equivalent) - * - * in order to enhance code portability between Windows, - * various commercial Unix implementations, and Linux. - * - * See the ANNOUNCE file for a full list of conforming - * routines and defined constants, and a list of missing - * routines and constants not defined in this implementation. - * - * Authors: - * There have been many contributors to this library. - * The initial implementation was contributed by - * John Bossom, and several others have provided major - * sections or revisions of parts of the implementation. - * Often significant effort has been contributed to - * find and fix important bugs and other problems to - * improve the reliability of the library, which sometimes - * is not reflected in the amount of code which changed as - * result. - * As much as possible, the contributors are acknowledged - * in the ChangeLog file in the source code distribution - * where their changes are noted in detail. - * - * Contributors are listed in the CONTRIBUTORS file. - * - * As usual, all bouquets go to the contributors, and all - * brickbats go to the project maintainer. - * - * Maintainer: - * The code base for this project is coordinated and - * eventually pre-tested, packaged, and made available by - * - * Ross Johnson - * - * QA Testers: - * Ultimately, the library is tested in the real world by - * a host of competent and demanding scientists and - * engineers who report bugs and/or provide solutions - * which are then fixed or incorporated into subsequent - * versions of the library. Each time a bug is fixed, a - * test case is written to prove the fix and ensure - * that later changes to the code don't reintroduce the - * same error. The number of test cases is slowly growing - * and therefore so is the code reliability. - * - * Compliance: - * See the file ANNOUNCE for the list of implemented - * and not-implemented routines and defined options. - * Of course, these are all defined is this file as well. - * - * Web site: - * The source code and other information about this library - * are available from - * - * http://sources.redhat.com/pthreads-win32/ - * - * ------------------------------------------------------------- - */ - -/* Try to avoid including windows.h */ -#if (defined(__MINGW64__) || defined(__MINGW32__)) && defined(__cplusplus) -#define PTW32_INCLUDE_WINDOWS_H -#endif - -#if defined(PTW32_INCLUDE_WINDOWS_H) -#include -#endif - -#if defined(_MSC_VER) && _MSC_VER < 1300 || defined(__DMC__) -/* - * VC++6.0 or early compiler's header has no DWORD_PTR type. - */ -typedef unsigned long DWORD_PTR; -typedef unsigned long ULONG_PTR; -#endif -/* - * ----------------- - * autoconf switches - * ----------------- - */ - -#if defined(HAVE_PTW32_CONFIG_H) -#include "config.h" -#endif /* HAVE_PTW32_CONFIG_H */ - -#if !defined(NEED_FTIME) -#include -#else /* NEED_FTIME */ -/* use native WIN32 time API */ -#endif /* NEED_FTIME */ - -#if defined(HAVE_SIGNAL_H) -#include -#endif /* HAVE_SIGNAL_H */ - -#include - -/* - * Boolean values to make us independent of system includes. - */ -enum { - PTW32_FALSE = 0, - PTW32_TRUE = (! PTW32_FALSE) -}; - -/* - * This is a duplicate of what is in the autoconf config.h, - * which is only used when building the pthread-win32 libraries. - */ - -#if !defined(PTW32_CONFIG_H) -# if defined(WINCE) -# define NEED_ERRNO -# define NEED_SEM -# endif -# if defined(__MINGW64__) -# define HAVE_STRUCT_TIMESPEC -# define HAVE_MODE_T -# elif defined(_UWIN) || defined(__MINGW32__) -# define HAVE_MODE_T -# endif -#endif - -/* - * - */ - -#if PTW32_LEVEL >= PTW32_LEVEL_MAX -#if defined(NEED_ERRNO) -#include "need_errno.h" -#else -#include -#endif -#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */ - -/* - * Several systems don't define some error numbers. - */ -#if !defined(ENOTSUP) -# define ENOTSUP 48 /* This is the value in Solaris. */ -#endif - -#if !defined(ETIMEDOUT) -# define ETIMEDOUT 10060 /* Same as WSAETIMEDOUT */ -#endif - -#if !defined(ENOSYS) -# define ENOSYS 140 /* Semi-arbitrary value */ -#endif - -#if !defined(EDEADLK) -# if defined(EDEADLOCK) -# define EDEADLK EDEADLOCK -# else -# define EDEADLK 36 /* This is the value in MSVC. */ -# endif -#endif - -/* POSIX 2008 - related to robust mutexes */ -#if !defined(EOWNERDEAD) -# define EOWNERDEAD 43 -#endif -#if !defined(ENOTRECOVERABLE) -# define ENOTRECOVERABLE 44 -#endif - -#include - -/* - * To avoid including windows.h we define only those things that we - * actually need from it. - */ -#if !defined(PTW32_INCLUDE_WINDOWS_H) -#if !defined(HANDLE) -# define PTW32__HANDLE_DEF -# define HANDLE void * -#endif -#if !defined(DWORD) -# define PTW32__DWORD_DEF -# define DWORD unsigned long -#endif -#endif - -#if !defined(HAVE_STRUCT_TIMESPEC) -#define HAVE_STRUCT_TIMESPEC -#if !defined(_TIMESPEC_DEFINED) -#define _TIMESPEC_DEFINED -struct timespec { - time_t tv_sec; - long tv_nsec; -}; -#endif /* _TIMESPEC_DEFINED */ -#endif /* HAVE_STRUCT_TIMESPEC */ - -#if !defined(SIG_BLOCK) -#define SIG_BLOCK 0 -#endif /* SIG_BLOCK */ - -#if !defined(SIG_UNBLOCK) -#define SIG_UNBLOCK 1 -#endif /* SIG_UNBLOCK */ - -#if !defined(SIG_SETMASK) -#define SIG_SETMASK 2 -#endif /* SIG_SETMASK */ - -#if defined(__cplusplus) -extern "C" -{ -#endif /* __cplusplus */ - -/* - * ------------------------------------------------------------- - * - * POSIX 1003.1-2001 Options - * ========================= - * - * Options are normally set in , which is not provided - * with pthreads-win32. - * - * For conformance with the Single Unix Specification (version 3), all of the - * options below are defined, and have a value of either -1 (not supported) - * or 200112L (supported). - * - * These options can neither be left undefined nor have a value of 0, because - * either indicates that sysconf(), which is not implemented, may be used at - * runtime to check the status of the option. - * - * _POSIX_THREADS (== 200112L) - * If == 200112L, you can use threads - * - * _POSIX_THREAD_ATTR_STACKSIZE (== 200112L) - * If == 200112L, you can control the size of a thread's - * stack - * pthread_attr_getstacksize - * pthread_attr_setstacksize - * - * _POSIX_THREAD_ATTR_STACKADDR (== -1) - * If == 200112L, you can allocate and control a thread's - * stack. If not supported, the following functions - * will return ENOSYS, indicating they are not - * supported: - * pthread_attr_getstackaddr - * pthread_attr_setstackaddr - * - * _POSIX_THREAD_PRIORITY_SCHEDULING (== -1) - * If == 200112L, you can use realtime scheduling. - * This option indicates that the behaviour of some - * implemented functions conforms to the additional TPS - * requirements in the standard. E.g. rwlocks favour - * writers over readers when threads have equal priority. - * - * _POSIX_THREAD_PRIO_INHERIT (== -1) - * If == 200112L, you can create priority inheritance - * mutexes. - * pthread_mutexattr_getprotocol + - * pthread_mutexattr_setprotocol + - * - * _POSIX_THREAD_PRIO_PROTECT (== -1) - * If == 200112L, you can create priority ceiling mutexes - * Indicates the availability of: - * pthread_mutex_getprioceiling - * pthread_mutex_setprioceiling - * pthread_mutexattr_getprioceiling - * pthread_mutexattr_getprotocol + - * pthread_mutexattr_setprioceiling - * pthread_mutexattr_setprotocol + - * - * _POSIX_THREAD_PROCESS_SHARED (== -1) - * If set, you can create mutexes and condition - * variables that can be shared with another - * process.If set, indicates the availability - * of: - * pthread_mutexattr_getpshared - * pthread_mutexattr_setpshared - * pthread_condattr_getpshared - * pthread_condattr_setpshared - * - * _POSIX_THREAD_SAFE_FUNCTIONS (== 200112L) - * If == 200112L you can use the special *_r library - * functions that provide thread-safe behaviour - * - * _POSIX_READER_WRITER_LOCKS (== 200112L) - * If == 200112L, you can use read/write locks - * - * _POSIX_SPIN_LOCKS (== 200112L) - * If == 200112L, you can use spin locks - * - * _POSIX_BARRIERS (== 200112L) - * If == 200112L, you can use barriers - * - * + These functions provide both 'inherit' and/or - * 'protect' protocol, based upon these macro - * settings. - * - * ------------------------------------------------------------- - */ - -/* - * POSIX Options - */ -#undef _POSIX_THREADS -#define _POSIX_THREADS 200809L - -#undef _POSIX_READER_WRITER_LOCKS -#define _POSIX_READER_WRITER_LOCKS 200809L - -#undef _POSIX_SPIN_LOCKS -#define _POSIX_SPIN_LOCKS 200809L - -#undef _POSIX_BARRIERS -#define _POSIX_BARRIERS 200809L - -#undef _POSIX_THREAD_SAFE_FUNCTIONS -#define _POSIX_THREAD_SAFE_FUNCTIONS 200809L - -#undef _POSIX_THREAD_ATTR_STACKSIZE -#define _POSIX_THREAD_ATTR_STACKSIZE 200809L - -/* - * The following options are not supported - */ -#undef _POSIX_THREAD_ATTR_STACKADDR -#define _POSIX_THREAD_ATTR_STACKADDR -1 - -#undef _POSIX_THREAD_PRIO_INHERIT -#define _POSIX_THREAD_PRIO_INHERIT -1 - -#undef _POSIX_THREAD_PRIO_PROTECT -#define _POSIX_THREAD_PRIO_PROTECT -1 - -/* TPS is not fully supported. */ -#undef _POSIX_THREAD_PRIORITY_SCHEDULING -#define _POSIX_THREAD_PRIORITY_SCHEDULING -1 - -#undef _POSIX_THREAD_PROCESS_SHARED -#define _POSIX_THREAD_PROCESS_SHARED -1 - - -/* - * POSIX 1003.1-2001 Limits - * =========================== - * - * These limits are normally set in , which is not provided with - * pthreads-win32. - * - * PTHREAD_DESTRUCTOR_ITERATIONS - * Maximum number of attempts to destroy - * a thread's thread-specific data on - * termination (must be at least 4) - * - * PTHREAD_KEYS_MAX - * Maximum number of thread-specific data keys - * available per process (must be at least 128) - * - * PTHREAD_STACK_MIN - * Minimum supported stack size for a thread - * - * PTHREAD_THREADS_MAX - * Maximum number of threads supported per - * process (must be at least 64). - * - * SEM_NSEMS_MAX - * The maximum number of semaphores a process can have. - * (must be at least 256) - * - * SEM_VALUE_MAX - * The maximum value a semaphore can have. - * (must be at least 32767) - * - */ -#undef _POSIX_THREAD_DESTRUCTOR_ITERATIONS -#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4 - -#undef PTHREAD_DESTRUCTOR_ITERATIONS -#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS - -#undef _POSIX_THREAD_KEYS_MAX -#define _POSIX_THREAD_KEYS_MAX 128 - -#undef PTHREAD_KEYS_MAX -#define PTHREAD_KEYS_MAX _POSIX_THREAD_KEYS_MAX - -#undef PTHREAD_STACK_MIN -#define PTHREAD_STACK_MIN 0 - -#undef _POSIX_THREAD_THREADS_MAX -#define _POSIX_THREAD_THREADS_MAX 64 - - /* Arbitrary value */ -#undef PTHREAD_THREADS_MAX -#define PTHREAD_THREADS_MAX 2019 - -#undef _POSIX_SEM_NSEMS_MAX -#define _POSIX_SEM_NSEMS_MAX 256 - - /* Arbitrary value */ -#undef SEM_NSEMS_MAX -#define SEM_NSEMS_MAX 1024 - -#undef _POSIX_SEM_VALUE_MAX -#define _POSIX_SEM_VALUE_MAX 32767 - -#undef SEM_VALUE_MAX -#define SEM_VALUE_MAX INT_MAX - - -#if defined(__GNUC__) && !defined(__declspec) -# error Please upgrade your GNU compiler to one that supports __declspec. -#endif - -/* - * When building the library, you should define PTW32_BUILD so that - * the variables/functions are exported correctly. When using the library, - * do NOT define PTW32_BUILD, and then the variables/functions will - * be imported correctly. - */ -#if !defined(PTW32_STATIC_LIB) -# if defined(PTW32_BUILD) -# define PTW32_DLLPORT __declspec (dllexport) -# else -# define PTW32_DLLPORT __declspec (dllimport) -# endif -#else -# define PTW32_DLLPORT -#endif - -/* - * The Open Watcom C/C++ compiler uses a non-standard calling convention - * that passes function args in registers unless __cdecl is explicitly specified - * in exposed function prototypes. - * - * We force all calls to cdecl even though this could slow Watcom code down - * slightly. If you know that the Watcom compiler will be used to build both - * the DLL and application, then you can probably define this as a null string. - * Remember that pthread.h (this file) is used for both the DLL and application builds. - */ -#define PTW32_CDECL __cdecl - -#if defined(_UWIN) && PTW32_LEVEL >= PTW32_LEVEL_MAX -# include -#else -/* - * Generic handle type - intended to extend uniqueness beyond - * that available with a simple pointer. It should scale for either - * IA-32 or IA-64. - */ -typedef struct { - void * p; /* Pointer to actual object */ - unsigned int x; /* Extra information - reuse count etc */ -} ptw32_handle_t; - -typedef ptw32_handle_t pthread_t; -typedef struct pthread_attr_t_ * pthread_attr_t; -typedef struct pthread_once_t_ pthread_once_t; -typedef struct pthread_key_t_ * pthread_key_t; -typedef struct pthread_mutex_t_ * pthread_mutex_t; -typedef struct pthread_mutexattr_t_ * pthread_mutexattr_t; -typedef struct pthread_cond_t_ * pthread_cond_t; -typedef struct pthread_condattr_t_ * pthread_condattr_t; -#endif -typedef struct pthread_rwlock_t_ * pthread_rwlock_t; -typedef struct pthread_rwlockattr_t_ * pthread_rwlockattr_t; -typedef struct pthread_spinlock_t_ * pthread_spinlock_t; -typedef struct pthread_barrier_t_ * pthread_barrier_t; -typedef struct pthread_barrierattr_t_ * pthread_barrierattr_t; - -/* - * ==================== - * ==================== - * POSIX Threads - * ==================== - * ==================== - */ - -enum { -/* - * pthread_attr_{get,set}detachstate - */ - PTHREAD_CREATE_JOINABLE = 0, /* Default */ - PTHREAD_CREATE_DETACHED = 1, - -/* - * pthread_attr_{get,set}inheritsched - */ - PTHREAD_INHERIT_SCHED = 0, - PTHREAD_EXPLICIT_SCHED = 1, /* Default */ - -/* - * pthread_{get,set}scope - */ - PTHREAD_SCOPE_PROCESS = 0, - PTHREAD_SCOPE_SYSTEM = 1, /* Default */ - -/* - * pthread_setcancelstate paramters - */ - PTHREAD_CANCEL_ENABLE = 0, /* Default */ - PTHREAD_CANCEL_DISABLE = 1, - -/* - * pthread_setcanceltype parameters - */ - PTHREAD_CANCEL_ASYNCHRONOUS = 0, - PTHREAD_CANCEL_DEFERRED = 1, /* Default */ - -/* - * pthread_mutexattr_{get,set}pshared - * pthread_condattr_{get,set}pshared - */ - PTHREAD_PROCESS_PRIVATE = 0, - PTHREAD_PROCESS_SHARED = 1, - -/* - * pthread_mutexattr_{get,set}robust - */ - PTHREAD_MUTEX_STALLED = 0, /* Default */ - PTHREAD_MUTEX_ROBUST = 1, - -/* - * pthread_barrier_wait - */ - PTHREAD_BARRIER_SERIAL_THREAD = -1 -}; - -/* - * ==================== - * ==================== - * Cancelation - * ==================== - * ==================== - */ -#define PTHREAD_CANCELED ((void *)(size_t) -1) - - -/* - * ==================== - * ==================== - * Once Key - * ==================== - * ==================== - */ -#define PTHREAD_ONCE_INIT { PTW32_FALSE, 0, 0, 0} - -struct pthread_once_t_ -{ - int done; /* indicates if user function has been executed */ - void * lock; - int reserved1; - int reserved2; -}; - - -/* - * ==================== - * ==================== - * Object initialisers - * ==================== - * ==================== - */ -#define PTHREAD_MUTEX_INITIALIZER ((pthread_mutex_t)(size_t) -1) -#define PTHREAD_RECURSIVE_MUTEX_INITIALIZER ((pthread_mutex_t)(size_t) -2) -#define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER ((pthread_mutex_t)(size_t) -3) - -/* - * Compatibility with LinuxThreads - */ -#define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP PTHREAD_RECURSIVE_MUTEX_INITIALIZER -#define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP PTHREAD_ERRORCHECK_MUTEX_INITIALIZER - -#define PTHREAD_COND_INITIALIZER ((pthread_cond_t)(size_t) -1) - -#define PTHREAD_RWLOCK_INITIALIZER ((pthread_rwlock_t)(size_t) -1) - -#define PTHREAD_SPINLOCK_INITIALIZER ((pthread_spinlock_t)(size_t) -1) - - -/* - * Mutex types. - */ -enum -{ - /* Compatibility with LinuxThreads */ - PTHREAD_MUTEX_FAST_NP, - PTHREAD_MUTEX_RECURSIVE_NP, - PTHREAD_MUTEX_ERRORCHECK_NP, - PTHREAD_MUTEX_TIMED_NP = PTHREAD_MUTEX_FAST_NP, - PTHREAD_MUTEX_ADAPTIVE_NP = PTHREAD_MUTEX_FAST_NP, - /* For compatibility with POSIX */ - PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_FAST_NP, - PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP, - PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP, - PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL -}; - - -typedef struct ptw32_cleanup_t ptw32_cleanup_t; - -#if defined(_MSC_VER) -/* Disable MSVC 'anachronism used' warning */ -#pragma warning( disable : 4229 ) -#endif - -typedef void (* PTW32_CDECL ptw32_cleanup_callback_t)(void *); - -#if defined(_MSC_VER) -#pragma warning( default : 4229 ) -#endif - -struct ptw32_cleanup_t -{ - ptw32_cleanup_callback_t routine; - void *arg; - struct ptw32_cleanup_t *prev; -}; - -#if defined(__CLEANUP_SEH) - /* - * WIN32 SEH version of cancel cleanup. - */ - -#define pthread_cleanup_push( _rout, _arg ) \ - { \ - ptw32_cleanup_t _cleanup; \ - \ - _cleanup.routine = (ptw32_cleanup_callback_t)(_rout); \ - _cleanup.arg = (_arg); \ - __try \ - { \ - -#define pthread_cleanup_pop( _execute ) \ - } \ - __finally \ - { \ - if( _execute || AbnormalTermination()) \ - { \ - (*(_cleanup.routine))( _cleanup.arg ); \ - } \ - } \ - } - -#else /* __CLEANUP_SEH */ - -#if defined(__CLEANUP_C) - - /* - * C implementation of PThreads cancel cleanup - */ - -#define pthread_cleanup_push( _rout, _arg ) \ - { \ - ptw32_cleanup_t _cleanup; \ - \ - ptw32_push_cleanup( &_cleanup, (ptw32_cleanup_callback_t) (_rout), (_arg) ); \ - -#define pthread_cleanup_pop( _execute ) \ - (void) ptw32_pop_cleanup( _execute ); \ - } - -#else /* __CLEANUP_C */ - -#if defined(__CLEANUP_CXX) - - /* - * C++ version of cancel cleanup. - * - John E. Bossom. - */ - - class PThreadCleanup { - /* - * PThreadCleanup - * - * Purpose - * This class is a C++ helper class that is - * used to implement pthread_cleanup_push/ - * pthread_cleanup_pop. - * The destructor of this class automatically - * pops the pushed cleanup routine regardless - * of how the code exits the scope - * (i.e. such as by an exception) - */ - ptw32_cleanup_callback_t cleanUpRout; - void * obj; - int executeIt; - - public: - PThreadCleanup() : - cleanUpRout( 0 ), - obj( 0 ), - executeIt( 0 ) - /* - * No cleanup performed - */ - { - } - - PThreadCleanup( - ptw32_cleanup_callback_t routine, - void * arg ) : - cleanUpRout( routine ), - obj( arg ), - executeIt( 1 ) - /* - * Registers a cleanup routine for 'arg' - */ - { - } - - ~PThreadCleanup() - { - if ( executeIt && ((void *) cleanUpRout != (void *) 0) ) - { - (void) (*cleanUpRout)( obj ); - } - } - - void execute( int exec ) - { - executeIt = exec; - } - }; - - /* - * C++ implementation of PThreads cancel cleanup; - * This implementation takes advantage of a helper - * class who's destructor automatically calls the - * cleanup routine if we exit our scope weirdly - */ -#define pthread_cleanup_push( _rout, _arg ) \ - { \ - PThreadCleanup cleanup((ptw32_cleanup_callback_t)(_rout), \ - (void *) (_arg) ); - -#define pthread_cleanup_pop( _execute ) \ - cleanup.execute( _execute ); \ - } - -#else - -#error ERROR [__FILE__, line __LINE__]: Cleanup type undefined. - -#endif /* __CLEANUP_CXX */ - -#endif /* __CLEANUP_C */ - -#endif /* __CLEANUP_SEH */ - -/* - * =============== - * =============== - * Methods - * =============== - * =============== - */ - -/* - * PThread Attribute Functions - */ -PTW32_DLLPORT int PTW32_CDECL pthread_attr_init (pthread_attr_t * attr); - -PTW32_DLLPORT int PTW32_CDECL pthread_attr_destroy (pthread_attr_t * attr); - -PTW32_DLLPORT int PTW32_CDECL pthread_attr_getdetachstate (const pthread_attr_t * attr, - int *detachstate); - -PTW32_DLLPORT int PTW32_CDECL pthread_attr_getstackaddr (const pthread_attr_t * attr, - void **stackaddr); - -PTW32_DLLPORT int PTW32_CDECL pthread_attr_getstacksize (const pthread_attr_t * attr, - size_t * stacksize); - -PTW32_DLLPORT int PTW32_CDECL pthread_attr_setdetachstate (pthread_attr_t * attr, - int detachstate); - -PTW32_DLLPORT int PTW32_CDECL pthread_attr_setstackaddr (pthread_attr_t * attr, - void *stackaddr); - -PTW32_DLLPORT int PTW32_CDECL pthread_attr_setstacksize (pthread_attr_t * attr, - size_t stacksize); - -PTW32_DLLPORT int PTW32_CDECL pthread_attr_getschedparam (const pthread_attr_t *attr, - struct sched_param *param); - -PTW32_DLLPORT int PTW32_CDECL pthread_attr_setschedparam (pthread_attr_t *attr, - const struct sched_param *param); - -PTW32_DLLPORT int PTW32_CDECL pthread_attr_setschedpolicy (pthread_attr_t *, - int); - -PTW32_DLLPORT int PTW32_CDECL pthread_attr_getschedpolicy (const pthread_attr_t *, - int *); - -PTW32_DLLPORT int PTW32_CDECL pthread_attr_setinheritsched(pthread_attr_t * attr, - int inheritsched); - -PTW32_DLLPORT int PTW32_CDECL pthread_attr_getinheritsched(const pthread_attr_t * attr, - int * inheritsched); - -PTW32_DLLPORT int PTW32_CDECL pthread_attr_setscope (pthread_attr_t *, - int); - -PTW32_DLLPORT int PTW32_CDECL pthread_attr_getscope (const pthread_attr_t *, - int *); - -/* - * PThread Functions - */ -PTW32_DLLPORT int PTW32_CDECL pthread_create (pthread_t * tid, - const pthread_attr_t * attr, - void *(PTW32_CDECL *start) (void *), - void *arg); - -PTW32_DLLPORT int PTW32_CDECL pthread_detach (pthread_t tid); - -PTW32_DLLPORT int PTW32_CDECL pthread_equal (pthread_t t1, - pthread_t t2); - -PTW32_DLLPORT void PTW32_CDECL pthread_exit (void *value_ptr); - -PTW32_DLLPORT int PTW32_CDECL pthread_join (pthread_t thread, - void **value_ptr); - -PTW32_DLLPORT pthread_t PTW32_CDECL pthread_self (void); - -PTW32_DLLPORT int PTW32_CDECL pthread_cancel (pthread_t thread); - -PTW32_DLLPORT int PTW32_CDECL pthread_setcancelstate (int state, - int *oldstate); - -PTW32_DLLPORT int PTW32_CDECL pthread_setcanceltype (int type, - int *oldtype); - -PTW32_DLLPORT void PTW32_CDECL pthread_testcancel (void); - -PTW32_DLLPORT int PTW32_CDECL pthread_once (pthread_once_t * once_control, - void (PTW32_CDECL *init_routine) (void)); - -#if PTW32_LEVEL >= PTW32_LEVEL_MAX -PTW32_DLLPORT ptw32_cleanup_t * PTW32_CDECL ptw32_pop_cleanup (int execute); - -PTW32_DLLPORT void PTW32_CDECL ptw32_push_cleanup (ptw32_cleanup_t * cleanup, - ptw32_cleanup_callback_t routine, - void *arg); -#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */ - -/* - * Thread Specific Data Functions - */ -PTW32_DLLPORT int PTW32_CDECL pthread_key_create (pthread_key_t * key, - void (PTW32_CDECL *destructor) (void *)); - -PTW32_DLLPORT int PTW32_CDECL pthread_key_delete (pthread_key_t key); - -PTW32_DLLPORT int PTW32_CDECL pthread_setspecific (pthread_key_t key, - const void *value); - -PTW32_DLLPORT void * PTW32_CDECL pthread_getspecific (pthread_key_t key); - - -/* - * Mutex Attribute Functions - */ -PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_init (pthread_mutexattr_t * attr); - -PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_destroy (pthread_mutexattr_t * attr); - -PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_getpshared (const pthread_mutexattr_t - * attr, - int *pshared); - -PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_setpshared (pthread_mutexattr_t * attr, - int pshared); - -PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_settype (pthread_mutexattr_t * attr, int kind); -PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_gettype (const pthread_mutexattr_t * attr, int *kind); - -PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_setrobust( - pthread_mutexattr_t *attr, - int robust); -PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_getrobust( - const pthread_mutexattr_t * attr, - int * robust); - -/* - * Barrier Attribute Functions - */ -PTW32_DLLPORT int PTW32_CDECL pthread_barrierattr_init (pthread_barrierattr_t * attr); - -PTW32_DLLPORT int PTW32_CDECL pthread_barrierattr_destroy (pthread_barrierattr_t * attr); - -PTW32_DLLPORT int PTW32_CDECL pthread_barrierattr_getpshared (const pthread_barrierattr_t - * attr, - int *pshared); - -PTW32_DLLPORT int PTW32_CDECL pthread_barrierattr_setpshared (pthread_barrierattr_t * attr, - int pshared); - -/* - * Mutex Functions - */ -PTW32_DLLPORT int PTW32_CDECL pthread_mutex_init (pthread_mutex_t * mutex, - const pthread_mutexattr_t * attr); - -PTW32_DLLPORT int PTW32_CDECL pthread_mutex_destroy (pthread_mutex_t * mutex); - -PTW32_DLLPORT int PTW32_CDECL pthread_mutex_lock (pthread_mutex_t * mutex); - -PTW32_DLLPORT int PTW32_CDECL pthread_mutex_timedlock(pthread_mutex_t * mutex, - const struct timespec *abstime); - -PTW32_DLLPORT int PTW32_CDECL pthread_mutex_trylock (pthread_mutex_t * mutex); - -PTW32_DLLPORT int PTW32_CDECL pthread_mutex_unlock (pthread_mutex_t * mutex); - -PTW32_DLLPORT int PTW32_CDECL pthread_mutex_consistent (pthread_mutex_t * mutex); - -/* - * Spinlock Functions - */ -PTW32_DLLPORT int PTW32_CDECL pthread_spin_init (pthread_spinlock_t * lock, int pshared); - -PTW32_DLLPORT int PTW32_CDECL pthread_spin_destroy (pthread_spinlock_t * lock); - -PTW32_DLLPORT int PTW32_CDECL pthread_spin_lock (pthread_spinlock_t * lock); - -PTW32_DLLPORT int PTW32_CDECL pthread_spin_trylock (pthread_spinlock_t * lock); - -PTW32_DLLPORT int PTW32_CDECL pthread_spin_unlock (pthread_spinlock_t * lock); - -/* - * Barrier Functions - */ -PTW32_DLLPORT int PTW32_CDECL pthread_barrier_init (pthread_barrier_t * barrier, - const pthread_barrierattr_t * attr, - unsigned int count); - -PTW32_DLLPORT int PTW32_CDECL pthread_barrier_destroy (pthread_barrier_t * barrier); - -PTW32_DLLPORT int PTW32_CDECL pthread_barrier_wait (pthread_barrier_t * barrier); - -/* - * Condition Variable Attribute Functions - */ -PTW32_DLLPORT int PTW32_CDECL pthread_condattr_init (pthread_condattr_t * attr); - -PTW32_DLLPORT int PTW32_CDECL pthread_condattr_destroy (pthread_condattr_t * attr); - -PTW32_DLLPORT int PTW32_CDECL pthread_condattr_getpshared (const pthread_condattr_t * attr, - int *pshared); - -PTW32_DLLPORT int PTW32_CDECL pthread_condattr_setpshared (pthread_condattr_t * attr, - int pshared); - -/* - * Condition Variable Functions - */ -PTW32_DLLPORT int PTW32_CDECL pthread_cond_init (pthread_cond_t * cond, - const pthread_condattr_t * attr); - -PTW32_DLLPORT int PTW32_CDECL pthread_cond_destroy (pthread_cond_t * cond); - -PTW32_DLLPORT int PTW32_CDECL pthread_cond_wait (pthread_cond_t * cond, - pthread_mutex_t * mutex); - -PTW32_DLLPORT int PTW32_CDECL pthread_cond_timedwait (pthread_cond_t * cond, - pthread_mutex_t * mutex, - const struct timespec *abstime); - -PTW32_DLLPORT int PTW32_CDECL pthread_cond_signal (pthread_cond_t * cond); - -PTW32_DLLPORT int PTW32_CDECL pthread_cond_broadcast (pthread_cond_t * cond); - -/* - * Scheduling - */ -PTW32_DLLPORT int PTW32_CDECL pthread_setschedparam (pthread_t thread, - int policy, - const struct sched_param *param); - -PTW32_DLLPORT int PTW32_CDECL pthread_getschedparam (pthread_t thread, - int *policy, - struct sched_param *param); - -PTW32_DLLPORT int PTW32_CDECL pthread_setconcurrency (int); - -PTW32_DLLPORT int PTW32_CDECL pthread_getconcurrency (void); - -/* - * Read-Write Lock Functions - */ -PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_init(pthread_rwlock_t *lock, - const pthread_rwlockattr_t *attr); - -PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_destroy(pthread_rwlock_t *lock); - -PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_tryrdlock(pthread_rwlock_t *); - -PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_trywrlock(pthread_rwlock_t *); - -PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_rdlock(pthread_rwlock_t *lock); - -PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_timedrdlock(pthread_rwlock_t *lock, - const struct timespec *abstime); - -PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_wrlock(pthread_rwlock_t *lock); - -PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_timedwrlock(pthread_rwlock_t *lock, - const struct timespec *abstime); - -PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_unlock(pthread_rwlock_t *lock); - -PTW32_DLLPORT int PTW32_CDECL pthread_rwlockattr_init (pthread_rwlockattr_t * attr); - -PTW32_DLLPORT int PTW32_CDECL pthread_rwlockattr_destroy (pthread_rwlockattr_t * attr); - -PTW32_DLLPORT int PTW32_CDECL pthread_rwlockattr_getpshared (const pthread_rwlockattr_t * attr, - int *pshared); - -PTW32_DLLPORT int PTW32_CDECL pthread_rwlockattr_setpshared (pthread_rwlockattr_t * attr, - int pshared); - -#if PTW32_LEVEL >= PTW32_LEVEL_MAX - 1 - -/* - * Signal Functions. Should be defined in but MSVC and MinGW32 - * already have signal.h that don't define these. - */ -PTW32_DLLPORT int PTW32_CDECL pthread_kill(pthread_t thread, int sig); - -/* - * Non-portable functions - */ - -/* - * Compatibility with Linux. - */ -PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_setkind_np(pthread_mutexattr_t * attr, - int kind); -PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_getkind_np(pthread_mutexattr_t * attr, - int *kind); - -/* - * Possibly supported by other POSIX threads implementations - */ -PTW32_DLLPORT int PTW32_CDECL pthread_delay_np (struct timespec * interval); -PTW32_DLLPORT int PTW32_CDECL pthread_num_processors_np(void); -PTW32_DLLPORT unsigned __int64 PTW32_CDECL pthread_getunique_np(pthread_t thread); - -/* - * Useful if an application wants to statically link - * the lib rather than load the DLL at run-time. - */ -PTW32_DLLPORT int PTW32_CDECL pthread_win32_process_attach_np(void); -PTW32_DLLPORT int PTW32_CDECL pthread_win32_process_detach_np(void); -PTW32_DLLPORT int PTW32_CDECL pthread_win32_thread_attach_np(void); -PTW32_DLLPORT int PTW32_CDECL pthread_win32_thread_detach_np(void); - -/* - * Features that are auto-detected at load/run time. - */ -PTW32_DLLPORT int PTW32_CDECL pthread_win32_test_features_np(int); -enum ptw32_features { - PTW32_SYSTEM_INTERLOCKED_COMPARE_EXCHANGE = 0x0001, /* System provides it. */ - PTW32_ALERTABLE_ASYNC_CANCEL = 0x0002 /* Can cancel blocked threads. */ -}; - -/* - * Register a system time change with the library. - * Causes the library to perform various functions - * in response to the change. Should be called whenever - * the application's top level window receives a - * WM_TIMECHANGE message. It can be passed directly to - * pthread_create() as a new thread if desired. - */ -PTW32_DLLPORT void * PTW32_CDECL pthread_timechange_handler_np(void *); - -#endif /*PTW32_LEVEL >= PTW32_LEVEL_MAX - 1 */ - -#if PTW32_LEVEL >= PTW32_LEVEL_MAX - -/* - * Returns the Win32 HANDLE for the POSIX thread. - */ -PTW32_DLLPORT HANDLE PTW32_CDECL pthread_getw32threadhandle_np(pthread_t thread); -/* - * Returns the win32 thread ID for POSIX thread. - */ -PTW32_DLLPORT DWORD PTW32_CDECL pthread_getw32threadid_np (pthread_t thread); - - -/* - * Protected Methods - * - * This function blocks until the given WIN32 handle - * is signaled or pthread_cancel had been called. - * This function allows the caller to hook into the - * PThreads cancel mechanism. It is implemented using - * - * WaitForMultipleObjects - * - * on 'waitHandle' and a manually reset WIN32 Event - * used to implement pthread_cancel. The 'timeout' - * argument to TimedWait is simply passed to - * WaitForMultipleObjects. - */ -PTW32_DLLPORT int PTW32_CDECL pthreadCancelableWait (HANDLE waitHandle); -PTW32_DLLPORT int PTW32_CDECL pthreadCancelableTimedWait (HANDLE waitHandle, - DWORD timeout); - -#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */ - -/* - * Thread-Safe C Runtime Library Mappings. - */ -#if !defined(_UWIN) -# if defined(NEED_ERRNO) - PTW32_DLLPORT int * PTW32_CDECL _errno( void ); -# else -# if !defined(errno) -# if (defined(_MT) || defined(_DLL)) - __declspec(dllimport) extern int * __cdecl _errno(void); -# define errno (*_errno()) -# endif -# endif -# endif -#endif - -/* - * Some compiler environments don't define some things. - */ -#if defined(__BORLANDC__) -# define _ftime ftime -# define _timeb timeb -#endif - -#if defined(__cplusplus) - -/* - * Internal exceptions - */ -class ptw32_exception {}; -class ptw32_exception_cancel : public ptw32_exception {}; -class ptw32_exception_exit : public ptw32_exception {}; - -#endif - -#if PTW32_LEVEL >= PTW32_LEVEL_MAX - -/* FIXME: This is only required if the library was built using SEH */ -/* - * Get internal SEH tag - */ -PTW32_DLLPORT DWORD PTW32_CDECL ptw32_get_exception_services_code(void); - -#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */ - -#if !defined(PTW32_BUILD) - -#if defined(__CLEANUP_SEH) - -/* - * Redefine the SEH __except keyword to ensure that applications - * propagate our internal exceptions up to the library's internal handlers. - */ -#define __except( E ) \ - __except( ( GetExceptionCode() == ptw32_get_exception_services_code() ) \ - ? EXCEPTION_CONTINUE_SEARCH : ( E ) ) - -#endif /* __CLEANUP_SEH */ - -#if defined(__CLEANUP_CXX) - -/* - * Redefine the C++ catch keyword to ensure that applications - * propagate our internal exceptions up to the library's internal handlers. - */ -#if defined(_MSC_VER) - /* - * WARNING: Replace any 'catch( ... )' with 'PtW32CatchAll' - * if you want Pthread-Win32 cancelation and pthread_exit to work. - */ - -#if !defined(PtW32NoCatchWarn) - -#pragma message("Specify \"/DPtW32NoCatchWarn\" compiler flag to skip this message.") -#pragma message("------------------------------------------------------------------") -#pragma message("When compiling applications with MSVC++ and C++ exception handling:") -#pragma message(" Replace any 'catch( ... )' in routines called from POSIX threads") -#pragma message(" with 'PtW32CatchAll' or 'CATCHALL' if you want POSIX thread") -#pragma message(" cancelation and pthread_exit to work. For example:") -#pragma message("") -#pragma message(" #if defined(PtW32CatchAll)") -#pragma message(" PtW32CatchAll") -#pragma message(" #else") -#pragma message(" catch(...)") -#pragma message(" #endif") -#pragma message(" {") -#pragma message(" /* Catchall block processing */") -#pragma message(" }") -#pragma message("------------------------------------------------------------------") - -#endif - -#define PtW32CatchAll \ - catch( ptw32_exception & ) { throw; } \ - catch( ... ) - -#else /* _MSC_VER */ - -#define catch( E ) \ - catch( ptw32_exception & ) { throw; } \ - catch( E ) - -#endif /* _MSC_VER */ - -#endif /* __CLEANUP_CXX */ - -#endif /* ! PTW32_BUILD */ - -#if defined(__cplusplus) -} /* End of extern "C" */ -#endif /* __cplusplus */ - -#if defined(PTW32__HANDLE_DEF) -# undef HANDLE -#endif -#if defined(PTW32__DWORD_DEF) -# undef DWORD -#endif - -#undef PTW32_LEVEL -#undef PTW32_LEVEL_MAX - -#endif /* ! RC_INVOKED */ - -#endif /* PTHREAD_H */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_attr_destroy.c b/platform/win32/msvc/external/pthreads.2/pthread_attr_destroy.c deleted file mode 100644 index 0ae40b55520..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_attr_destroy.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - * pthread_attr_destroy.c - * - * Description: - * This translation unit implements operations on thread attribute objects. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_attr_destroy (pthread_attr_t * attr) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * Destroys a thread attributes object. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_attr_t - * - * - * DESCRIPTION - * Destroys a thread attributes object. - * - * NOTES: - * 1) Does not affect threads created with 'attr'. - * - * RESULTS - * 0 successfully destroyed attr, - * EINVAL 'attr' is invalid. - * - * ------------------------------------------------------ - */ -{ - if (ptw32_is_attr (attr) != 0) - { - return EINVAL; - } - - /* - * Set the attribute object to a specific invalid value. - */ - (*attr)->valid = 0; - free (*attr); - *attr = NULL; - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_attr_getdetachstate.c b/platform/win32/msvc/external/pthreads.2/pthread_attr_getdetachstate.c deleted file mode 100644 index ce56bab7f62..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_attr_getdetachstate.c +++ /dev/null @@ -1,86 +0,0 @@ -/* - * pthread_attr_getdetachstate.c - * - * Description: - * This translation unit implements operations on thread attribute objects. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_attr_getdetachstate (const pthread_attr_t * attr, int *detachstate) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function determines whether threads created with - * 'attr' will run detached. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_attr_t - * - * detachstate - * pointer to an integer into which is returned one - * of: - * - * PTHREAD_CREATE_JOINABLE - * Thread ID is valid, must be joined - * - * PTHREAD_CREATE_DETACHED - * Thread ID is invalid, cannot be joined, - * canceled, or modified - * - * - * DESCRIPTION - * This function determines whether threads created with - * 'attr' will run detached. - * - * NOTES: - * 1) You cannot join or cancel detached threads. - * - * RESULTS - * 0 successfully retrieved detach state, - * EINVAL 'attr' is invalid - * - * ------------------------------------------------------ - */ -{ - if (ptw32_is_attr (attr) != 0 || detachstate == NULL) - { - return EINVAL; - } - - *detachstate = (*attr)->detachstate; - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_attr_getinheritsched.c b/platform/win32/msvc/external/pthreads.2/pthread_attr_getinheritsched.c deleted file mode 100644 index 81a55b6052d..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_attr_getinheritsched.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * pthread_attr_getinheritsched.c - * - * Description: - * POSIX thread functions that deal with thread scheduling. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" -#include "sched.h" - -int -pthread_attr_getinheritsched (const pthread_attr_t * attr, int *inheritsched) -{ - if (ptw32_is_attr (attr) != 0 || inheritsched == NULL) - { - return EINVAL; - } - - *inheritsched = (*attr)->inheritsched; - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_attr_getschedparam.c b/platform/win32/msvc/external/pthreads.2/pthread_attr_getschedparam.c deleted file mode 100644 index 7ec68cbcdf4..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_attr_getschedparam.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * pthread_attr_getschedparam.c - * - * Description: - * POSIX thread functions that deal with thread scheduling. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" -#include "sched.h" - -int -pthread_attr_getschedparam (const pthread_attr_t * attr, - struct sched_param *param) -{ - if (ptw32_is_attr (attr) != 0 || param == NULL) - { - return EINVAL; - } - - memcpy (param, &(*attr)->param, sizeof (*param)); - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_attr_getschedpolicy.c b/platform/win32/msvc/external/pthreads.2/pthread_attr_getschedpolicy.c deleted file mode 100644 index e743f15ecf8..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_attr_getschedpolicy.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * pthread_attr_getschedpolicy.c - * - * Description: - * POSIX thread functions that deal with thread scheduling. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" -#include "sched.h" - -int -pthread_attr_getschedpolicy (const pthread_attr_t * attr, int *policy) -{ - if (ptw32_is_attr (attr) != 0 || policy == NULL) - { - return EINVAL; - } - - /* - * Validate the policy arg. - * Check that a policy constant wasn't passed rather than &policy. - */ - if (policy <= (int *) SCHED_MAX) - { - return EINVAL; - } - - *policy = SCHED_OTHER; - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_attr_getscope.c b/platform/win32/msvc/external/pthreads.2/pthread_attr_getscope.c deleted file mode 100644 index e2e1b59e178..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_attr_getscope.c +++ /dev/null @@ -1,54 +0,0 @@ -/* - * pthread_attr_getscope.c - * - * Description: - * This translation unit implements operations on thread attribute objects. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -/* ignore warning "unreferenced formal parameter" */ -#if defined(_MSC_VER) -#pragma warning( disable : 4100 ) -#endif - -int -pthread_attr_getscope (const pthread_attr_t * attr, int *contentionscope) -{ -#if defined(_POSIX_THREAD_PRIORITY_SCHEDULING) - *contentionscope = (*attr)->contentionscope; - return 0; -#else - return ENOSYS; -#endif -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_attr_getstackaddr.c b/platform/win32/msvc/external/pthreads.2/pthread_attr_getstackaddr.c deleted file mode 100644 index 0b9b91eb2d3..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_attr_getstackaddr.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - * pthread_attr_getstackaddr.c - * - * Description: - * This translation unit implements operations on thread attribute objects. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -/* ignore warning "unreferenced formal parameter" */ -#if defined(_MSC_VER) -#pragma warning( disable : 4100 ) -#endif - -int -pthread_attr_getstackaddr (const pthread_attr_t * attr, void **stackaddr) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function determines the address of the stack - * on which threads created with 'attr' will run. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_attr_t - * - * stackaddr - * pointer into which is returned the stack address. - * - * - * DESCRIPTION - * This function determines the address of the stack - * on which threads created with 'attr' will run. - * - * NOTES: - * 1) Function supported only if this macro is - * defined: - * - * _POSIX_THREAD_ATTR_STACKADDR - * - * 2) Create only one thread for each stack - * address.. - * - * RESULTS - * 0 successfully retreived stack address, - * EINVAL 'attr' is invalid - * ENOSYS function not supported - * - * ------------------------------------------------------ - */ -{ -#if defined( _POSIX_THREAD_ATTR_STACKADDR ) - - if (ptw32_is_attr (attr) != 0) - { - return EINVAL; - } - - *stackaddr = (*attr)->stackaddr; - return 0; - -#else - - return ENOSYS; - -#endif /* _POSIX_THREAD_ATTR_STACKADDR */ -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_attr_getstacksize.c b/platform/win32/msvc/external/pthreads.2/pthread_attr_getstacksize.c deleted file mode 100644 index 14650b30863..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_attr_getstacksize.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - * pthread_attr_getstacksize.c - * - * Description: - * This translation unit implements operations on thread attribute objects. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -/* ignore warning "unreferenced formal parameter" */ -#if defined(_MSC_VER) -#pragma warning( disable : 4100 ) -#endif - -int -pthread_attr_getstacksize (const pthread_attr_t * attr, size_t * stacksize) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function determines the size of the stack on - * which threads created with 'attr' will run. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_attr_t - * - * stacksize - * pointer to size_t into which is returned the - * stack size, in bytes. - * - * - * DESCRIPTION - * This function determines the size of the stack on - * which threads created with 'attr' will run. - * - * NOTES: - * 1) Function supported only if this macro is - * defined: - * - * _POSIX_THREAD_ATTR_STACKSIZE - * - * 2) Use on newly created attributes object to - * find the default stack size. - * - * RESULTS - * 0 successfully retrieved stack size, - * EINVAL 'attr' is invalid - * ENOSYS function not supported - * - * ------------------------------------------------------ - */ -{ -#if defined(_POSIX_THREAD_ATTR_STACKSIZE) - - if (ptw32_is_attr (attr) != 0) - { - return EINVAL; - } - - /* Everything is okay. */ - *stacksize = (*attr)->stacksize; - return 0; - -#else - - return ENOSYS; - -#endif /* _POSIX_THREAD_ATTR_STACKSIZE */ - -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_attr_init.c b/platform/win32/msvc/external/pthreads.2/pthread_attr_init.c deleted file mode 100644 index df8aad1a00a..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_attr_init.c +++ /dev/null @@ -1,117 +0,0 @@ -/* - * pthread_attr_init.c - * - * Description: - * This translation unit implements operations on thread attribute objects. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_attr_init (pthread_attr_t * attr) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * Initializes a thread attributes object with default - * attributes. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_attr_t - * - * - * DESCRIPTION - * Initializes a thread attributes object with default - * attributes. - * - * NOTES: - * 1) Used to define thread attributes - * - * RESULTS - * 0 successfully initialized attr, - * ENOMEM insufficient memory for attr. - * - * ------------------------------------------------------ - */ -{ - pthread_attr_t attr_result; - - if (attr == NULL) - { - /* This is disallowed. */ - return EINVAL; - } - - attr_result = (pthread_attr_t) malloc (sizeof (*attr_result)); - - if (attr_result == NULL) - { - return ENOMEM; - } - -#if defined(_POSIX_THREAD_ATTR_STACKSIZE) - /* - * Default to zero size. Unless changed explicitly this - * will allow Win32 to set the size to that of the - * main thread. - */ - attr_result->stacksize = 0; -#endif - -#if defined(_POSIX_THREAD_ATTR_STACKADDR) - /* FIXME: Set this to something sensible when we support it. */ - attr_result->stackaddr = NULL; -#endif - - attr_result->detachstate = PTHREAD_CREATE_JOINABLE; - -#if defined(HAVE_SIGSET_T) - memset (&(attr_result->sigmask), 0, sizeof (sigset_t)); -#endif /* HAVE_SIGSET_T */ - - /* - * Win32 sets new threads to THREAD_PRIORITY_NORMAL and - * not to that of the parent thread. We choose to default to - * this arrangement. - */ - attr_result->param.sched_priority = THREAD_PRIORITY_NORMAL; - attr_result->inheritsched = PTHREAD_EXPLICIT_SCHED; - attr_result->contentionscope = PTHREAD_SCOPE_SYSTEM; - - attr_result->valid = PTW32_ATTR_VALID; - - *attr = attr_result; - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_attr_setdetachstate.c b/platform/win32/msvc/external/pthreads.2/pthread_attr_setdetachstate.c deleted file mode 100644 index d96c20c92a6..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_attr_setdetachstate.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - * pthread_attr_setdetachstate.c - * - * Description: - * This translation unit implements operations on thread attribute objects. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_attr_setdetachstate (pthread_attr_t * attr, int detachstate) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function specifies whether threads created with - * 'attr' will run detached. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_attr_t - * - * detachstate - * an integer containing one of: - * - * PTHREAD_CREATE_JOINABLE - * Thread ID is valid, must be joined - * - * PTHREAD_CREATE_DETACHED - * Thread ID is invalid, cannot be joined, - * canceled, or modified - * - * - * DESCRIPTION - * This function specifies whether threads created with - * 'attr' will run detached. - * - * NOTES: - * 1) You cannot join or cancel detached threads. - * - * RESULTS - * 0 successfully set detach state, - * EINVAL 'attr' or 'detachstate' is invalid - * - * ------------------------------------------------------ - */ -{ - if (ptw32_is_attr (attr) != 0) - { - return EINVAL; - } - - if (detachstate != PTHREAD_CREATE_JOINABLE && - detachstate != PTHREAD_CREATE_DETACHED) - { - return EINVAL; - } - - (*attr)->detachstate = detachstate; - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_attr_setinheritsched.c b/platform/win32/msvc/external/pthreads.2/pthread_attr_setinheritsched.c deleted file mode 100644 index 8f92559a455..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_attr_setinheritsched.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * pthread_attr_setinheritsched.c - * - * Description: - * POSIX thread functions that deal with thread scheduling. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" -#include "sched.h" - -int -pthread_attr_setinheritsched (pthread_attr_t * attr, int inheritsched) -{ - if (ptw32_is_attr (attr) != 0) - { - return EINVAL; - } - - if (PTHREAD_INHERIT_SCHED != inheritsched - && PTHREAD_EXPLICIT_SCHED != inheritsched) - { - return EINVAL; - } - - (*attr)->inheritsched = inheritsched; - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_attr_setschedparam.c b/platform/win32/msvc/external/pthreads.2/pthread_attr_setschedparam.c deleted file mode 100644 index cf380577db9..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_attr_setschedparam.c +++ /dev/null @@ -1,63 +0,0 @@ -/* - * pthread_attr_setschedparam.c - * - * Description: - * POSIX thread functions that deal with thread scheduling. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" -#include "sched.h" - -int -pthread_attr_setschedparam (pthread_attr_t * attr, - const struct sched_param *param) -{ - int priority; - - if (ptw32_is_attr (attr) != 0 || param == NULL) - { - return EINVAL; - } - - priority = param->sched_priority; - - /* Validate priority level. */ - if (priority < sched_get_priority_min (SCHED_OTHER) || - priority > sched_get_priority_max (SCHED_OTHER)) - { - return EINVAL; - } - - memcpy (&(*attr)->param, param, sizeof (*param)); - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_attr_setschedpolicy.c b/platform/win32/msvc/external/pthreads.2/pthread_attr_setschedpolicy.c deleted file mode 100644 index 3a1ed6679b4..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_attr_setschedpolicy.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * pthread_attr_setschedpolicy.c - * - * Description: - * POSIX thread functions that deal with thread scheduling. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" -#include "sched.h" - -int -pthread_attr_setschedpolicy (pthread_attr_t * attr, int policy) -{ - if (ptw32_is_attr (attr) != 0) - { - return EINVAL; - } - - if (policy != SCHED_OTHER) - { - return ENOTSUP; - } - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_attr_setscope.c b/platform/win32/msvc/external/pthreads.2/pthread_attr_setscope.c deleted file mode 100644 index 69208d3f442..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_attr_setscope.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * pthread_attr_setscope.c - * - * Description: - * This translation unit implements operations on thread attribute objects. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -/* ignore warning "unreferenced formal parameter" */ -#if defined(_MSC_VER) -#pragma warning( disable : 4100 ) -#endif - -int -pthread_attr_setscope (pthread_attr_t * attr, int contentionscope) -{ -#if defined(_POSIX_THREAD_PRIORITY_SCHEDULING) - switch (contentionscope) - { - case PTHREAD_SCOPE_SYSTEM: - (*attr)->contentionscope = contentionscope; - return 0; - case PTHREAD_SCOPE_PROCESS: - return ENOTSUP; - default: - return EINVAL; - } -#else - return ENOSYS; -#endif -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_attr_setstackaddr.c b/platform/win32/msvc/external/pthreads.2/pthread_attr_setstackaddr.c deleted file mode 100644 index 32e338df51c..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_attr_setstackaddr.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - * pthread_attr_setstackaddr.c - * - * Description: - * This translation unit implements operations on thread attribute objects. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_attr_setstackaddr (pthread_attr_t * attr, void *stackaddr) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * Threads created with 'attr' will run on the stack - * starting at 'stackaddr'. - * Stack must be at least PTHREAD_STACK_MIN bytes. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_attr_t - * - * stackaddr - * the address of the stack to use - * - * - * DESCRIPTION - * Threads created with 'attr' will run on the stack - * starting at 'stackaddr'. - * Stack must be at least PTHREAD_STACK_MIN bytes. - * - * NOTES: - * 1) Function supported only if this macro is - * defined: - * - * _POSIX_THREAD_ATTR_STACKADDR - * - * 2) Create only one thread for each stack - * address.. - * - * 3) Ensure that stackaddr is aligned. - * - * RESULTS - * 0 successfully set stack address, - * EINVAL 'attr' is invalid - * ENOSYS function not supported - * - * ------------------------------------------------------ - */ -{ -#if defined( _POSIX_THREAD_ATTR_STACKADDR ) - - if (ptw32_is_attr (attr) != 0) - { - return EINVAL; - } - - (*attr)->stackaddr = stackaddr; - return 0; - -#else - - return ENOSYS; - -#endif /* _POSIX_THREAD_ATTR_STACKADDR */ -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_attr_setstacksize.c b/platform/win32/msvc/external/pthreads.2/pthread_attr_setstacksize.c deleted file mode 100644 index af05885b7ad..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_attr_setstacksize.c +++ /dev/null @@ -1,110 +0,0 @@ -/* - * pthread_attr_setstacksize.c - * - * Description: - * This translation unit implements operations on thread attribute objects. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_attr_setstacksize (pthread_attr_t * attr, size_t stacksize) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function specifies the size of the stack on - * which threads created with 'attr' will run. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_attr_t - * - * stacksize - * stack size, in bytes. - * - * - * DESCRIPTION - * This function specifies the size of the stack on - * which threads created with 'attr' will run. - * - * NOTES: - * 1) Function supported only if this macro is - * defined: - * - * _POSIX_THREAD_ATTR_STACKSIZE - * - * 2) Find the default first (using - * pthread_attr_getstacksize), then increase - * by multiplying. - * - * 3) Only use if thread needs more than the - * default. - * - * RESULTS - * 0 successfully set stack size, - * EINVAL 'attr' is invalid or stacksize too - * small or too big. - * ENOSYS function not supported - * - * ------------------------------------------------------ - */ -{ -#if defined(_POSIX_THREAD_ATTR_STACKSIZE) - -#if PTHREAD_STACK_MIN > 0 - - /* Verify that the stack size is within range. */ - if (stacksize < PTHREAD_STACK_MIN) - { - return EINVAL; - } - -#endif - - if (ptw32_is_attr (attr) != 0) - { - return EINVAL; - } - - /* Everything is okay. */ - (*attr)->stacksize = stacksize; - return 0; - -#else - - return ENOSYS; - -#endif /* _POSIX_THREAD_ATTR_STACKSIZE */ - -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_barrier_destroy.c b/platform/win32/msvc/external/pthreads.2/pthread_barrier_destroy.c deleted file mode 100644 index d4460fe43b7..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_barrier_destroy.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - * pthread_barrier_destroy.c - * - * Description: - * This translation unit implements barrier primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -int -pthread_barrier_destroy (pthread_barrier_t * barrier) -{ - int result = 0; - pthread_barrier_t b; - ptw32_mcs_local_node_t node; - - if (barrier == NULL || *barrier == (pthread_barrier_t) PTW32_OBJECT_INVALID) - { - return EINVAL; - } - - if (0 != ptw32_mcs_lock_try_acquire(&(*barrier)->lock, &node)) - { - return EBUSY; - } - - b = *barrier; - - if (b->nCurrentBarrierHeight < b->nInitialBarrierHeight) - { - result = EBUSY; - } - else - { - if (0 == (result = sem_destroy (&(b->semBarrierBreeched)))) - { - *barrier = (pthread_barrier_t) PTW32_OBJECT_INVALID; - /* - * Release the lock before freeing b. - * - * FIXME: There may be successors which, when we release the lock, - * will be linked into b->lock, which will be corrupted at some - * point with undefined results for the application. To fix this - * will require changing pthread_barrier_t from a pointer to - * pthread_barrier_t_ to an instance. This is a change to the ABI - * and will require a major version number increment. - */ - ptw32_mcs_lock_release(&node); - (void) free (b); - return 0; - } - else - { - /* - * This should not ever be reached. - * Restore the barrier to working condition before returning. - */ - (void) sem_init (&(b->semBarrierBreeched), b->pshared, 0); - } - - if (result != 0) - { - /* - * The barrier still exists and is valid - * in the event of any error above. - */ - result = EBUSY; - } - } - - ptw32_mcs_lock_release(&node); - return (result); -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_barrier_init.c b/platform/win32/msvc/external/pthreads.2/pthread_barrier_init.c deleted file mode 100644 index 59a30f4a4fb..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_barrier_init.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * pthread_barrier_init.c - * - * Description: - * This translation unit implements barrier primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_barrier_init (pthread_barrier_t * barrier, - const pthread_barrierattr_t * attr, unsigned int count) -{ - pthread_barrier_t b; - - if (barrier == NULL || count == 0) - { - return EINVAL; - } - - if (NULL != (b = (pthread_barrier_t) calloc (1, sizeof (*b)))) - { - b->pshared = (attr != NULL && *attr != NULL - ? (*attr)->pshared : PTHREAD_PROCESS_PRIVATE); - - b->nCurrentBarrierHeight = b->nInitialBarrierHeight = count; - b->lock = 0; - - if (0 == sem_init (&(b->semBarrierBreeched), b->pshared, 0)) - { - *barrier = b; - return 0; - } - (void) free (b); - } - - return ENOMEM; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_barrier_wait.c b/platform/win32/msvc/external/pthreads.2/pthread_barrier_wait.c deleted file mode 100644 index b8fa0ddfff8..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_barrier_wait.c +++ /dev/null @@ -1,104 +0,0 @@ -/* - * pthread_barrier_wait.c - * - * Description: - * This translation unit implements barrier primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_barrier_wait (pthread_barrier_t * barrier) -{ - int result; - pthread_barrier_t b; - - ptw32_mcs_local_node_t node; - - if (barrier == NULL || *barrier == (pthread_barrier_t) PTW32_OBJECT_INVALID) - { - return EINVAL; - } - - ptw32_mcs_lock_acquire(&(*barrier)->lock, &node); - - b = *barrier; - if (--b->nCurrentBarrierHeight == 0) - { - /* - * We are the last thread to arrive at the barrier before it releases us. - * Move our MCS local node to the global scope barrier handle so that the - * last thread out (not necessarily us) can release the lock. - */ - ptw32_mcs_node_transfer(&b->proxynode, &node); - - /* - * Any threads that have not quite entered sem_wait below when the - * multiple_post has completed will nevertheless continue through - * the semaphore (barrier). - */ - result = (b->nInitialBarrierHeight > 1 - ? sem_post_multiple (&(b->semBarrierBreeched), - b->nInitialBarrierHeight - 1) : 0); - } - else - { - ptw32_mcs_lock_release(&node); - /* - * Use the non-cancelable version of sem_wait(). - * - * It is possible that all nInitialBarrierHeight-1 threads are - * at this point when the last thread enters the barrier, resets - * nCurrentBarrierHeight = nInitialBarrierHeight and leaves. - * If pthread_barrier_destroy is called at that moment then the - * barrier will be destroyed along with the semas. - */ - result = ptw32_semwait (&(b->semBarrierBreeched)); - } - - if ((PTW32_INTERLOCKED_LONG)PTW32_INTERLOCKED_INCREMENT_LONG((PTW32_INTERLOCKED_LONGPTR)&b->nCurrentBarrierHeight) - == (PTW32_INTERLOCKED_LONG)b->nInitialBarrierHeight) - { - /* - * We are the last thread to cross this barrier - */ - ptw32_mcs_lock_release(&b->proxynode); - if (0 == result) - { - result = PTHREAD_BARRIER_SERIAL_THREAD; - } - } - - return (result); -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_barrierattr_destroy.c b/platform/win32/msvc/external/pthreads.2/pthread_barrierattr_destroy.c deleted file mode 100644 index aabfc5fca18..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_barrierattr_destroy.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * pthread_barrier_attr_destroy.c - * - * Description: - * This translation unit implements barrier primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_barrierattr_destroy (pthread_barrierattr_t * attr) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * Destroys a barrier attributes object. The object can - * no longer be used. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_barrierattr_t - * - * - * DESCRIPTION - * Destroys a barrier attributes object. The object can - * no longer be used. - * - * NOTES: - * 1) Does not affect barrieres created using 'attr' - * - * RESULTS - * 0 successfully released attr, - * EINVAL 'attr' is invalid. - * - * ------------------------------------------------------ - */ -{ - int result = 0; - - if (attr == NULL || *attr == NULL) - { - result = EINVAL; - } - else - { - pthread_barrierattr_t ba = *attr; - - *attr = NULL; - free (ba); - } - - return (result); -} /* pthread_barrierattr_destroy */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_barrierattr_getpshared.c b/platform/win32/msvc/external/pthreads.2/pthread_barrierattr_getpshared.c deleted file mode 100644 index 93f7d41815d..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_barrierattr_getpshared.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * pthread_barrier_attr_getpshared.c - * - * Description: - * This translation unit implements barrier primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_barrierattr_getpshared (const pthread_barrierattr_t * attr, - int *pshared) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * Determine whether barriers created with 'attr' can be - * shared between processes. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_barrierattr_t - * - * pshared - * will be set to one of: - * - * PTHREAD_PROCESS_SHARED - * May be shared if in shared memory - * - * PTHREAD_PROCESS_PRIVATE - * Cannot be shared. - * - * - * DESCRIPTION - * Mutexes creatd with 'attr' can be shared between - * processes if pthread_barrier_t variable is allocated - * in memory shared by these processes. - * NOTES: - * 1) pshared barriers MUST be allocated in shared - * memory. - * 2) The following macro is defined if shared barriers - * are supported: - * _POSIX_THREAD_PROCESS_SHARED - * - * RESULTS - * 0 successfully retrieved attribute, - * EINVAL 'attr' is invalid, - * - * ------------------------------------------------------ - */ -{ - int result; - - if ((attr != NULL && *attr != NULL) && (pshared != NULL)) - { - *pshared = (*attr)->pshared; - result = 0; - } - else - { - result = EINVAL; - } - - return (result); -} /* pthread_barrierattr_getpshared */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_barrierattr_init.c b/platform/win32/msvc/external/pthreads.2/pthread_barrierattr_init.c deleted file mode 100644 index 1b880f1b2b3..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_barrierattr_init.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * pthread_barrier_attr_init.c - * - * Description: - * This translation unit implements barrier primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_barrierattr_init (pthread_barrierattr_t * attr) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * Initializes a barrier attributes object with default - * attributes. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_barrierattr_t - * - * - * DESCRIPTION - * Initializes a barrier attributes object with default - * attributes. - * - * NOTES: - * 1) Used to define barrier types - * - * RESULTS - * 0 successfully initialized attr, - * ENOMEM insufficient memory for attr. - * - * ------------------------------------------------------ - */ -{ - pthread_barrierattr_t ba; - int result = 0; - - ba = (pthread_barrierattr_t) calloc (1, sizeof (*ba)); - - if (ba == NULL) - { - result = ENOMEM; - } - else - { - ba->pshared = PTHREAD_PROCESS_PRIVATE; - } - - *attr = ba; - - return (result); -} /* pthread_barrierattr_init */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_barrierattr_setpshared.c b/platform/win32/msvc/external/pthreads.2/pthread_barrierattr_setpshared.c deleted file mode 100644 index 0ab999227db..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_barrierattr_setpshared.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - * pthread_barrier_attr_setpshared.c - * - * Description: - * This translation unit implements barrier primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_barrierattr_setpshared (pthread_barrierattr_t * attr, int pshared) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * Barriers created with 'attr' can be shared between - * processes if pthread_barrier_t variable is allocated - * in memory shared by these processes. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_barrierattr_t - * - * pshared - * must be one of: - * - * PTHREAD_PROCESS_SHARED - * May be shared if in shared memory - * - * PTHREAD_PROCESS_PRIVATE - * Cannot be shared. - * - * DESCRIPTION - * Mutexes creatd with 'attr' can be shared between - * processes if pthread_barrier_t variable is allocated - * in memory shared by these processes. - * - * NOTES: - * 1) pshared barriers MUST be allocated in shared - * memory. - * - * 2) The following macro is defined if shared barriers - * are supported: - * _POSIX_THREAD_PROCESS_SHARED - * - * RESULTS - * 0 successfully set attribute, - * EINVAL 'attr' or pshared is invalid, - * ENOSYS PTHREAD_PROCESS_SHARED not supported, - * - * ------------------------------------------------------ - */ -{ - int result; - - if ((attr != NULL && *attr != NULL) && - ((pshared == PTHREAD_PROCESS_SHARED) || - (pshared == PTHREAD_PROCESS_PRIVATE))) - { - if (pshared == PTHREAD_PROCESS_SHARED) - { - -#if !defined( _POSIX_THREAD_PROCESS_SHARED ) - - result = ENOSYS; - pshared = PTHREAD_PROCESS_PRIVATE; - -#else - - result = 0; - -#endif /* _POSIX_THREAD_PROCESS_SHARED */ - - } - else - { - result = 0; - } - - (*attr)->pshared = pshared; - } - else - { - result = EINVAL; - } - - return (result); - -} /* pthread_barrierattr_setpshared */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_cancel.c b/platform/win32/msvc/external/pthreads.2/pthread_cancel.c deleted file mode 100644 index 57dcc29556e..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_cancel.c +++ /dev/null @@ -1,189 +0,0 @@ -/* - * pthread_cancel.c - * - * Description: - * POSIX thread functions related to thread cancellation. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" -#include "context.h" - -static void -ptw32_cancel_self (void) -{ - ptw32_throw (PTW32_EPS_CANCEL); - - /* Never reached */ -} - -static void CALLBACK -ptw32_cancel_callback (ULONG_PTR unused) -{ - ptw32_throw (PTW32_EPS_CANCEL); - - /* Never reached */ -} - -/* - * ptw32_RegisterCancelation() - - * Must have args of same type as QueueUserAPCEx because this function - * is a substitute for QueueUserAPCEx if it's not available. - */ -DWORD -ptw32_RegisterCancelation (PAPCFUNC unused1, HANDLE threadH, DWORD unused2) -{ - CONTEXT context; - - context.ContextFlags = CONTEXT_CONTROL; - GetThreadContext (threadH, &context); - PTW32_PROGCTR (context) = (DWORD_PTR) ptw32_cancel_self; - SetThreadContext (threadH, &context); - return 0; -} - -int -pthread_cancel (pthread_t thread) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function requests cancellation of 'thread'. - * - * PARAMETERS - * thread - * reference to an instance of pthread_t - * - * - * DESCRIPTION - * This function requests cancellation of 'thread'. - * NOTE: cancellation is asynchronous; use pthread_join to - * wait for termination of 'thread' if necessary. - * - * RESULTS - * 0 successfully requested cancellation, - * ESRCH no thread found corresponding to 'thread', - * ENOMEM implicit self thread create failed. - * ------------------------------------------------------ - */ -{ - int result; - int cancel_self; - pthread_t self; - ptw32_thread_t * tp; - ptw32_mcs_local_node_t stateLock; - - result = pthread_kill (thread, 0); - - if (0 != result) - { - return result; - } - - if ((self = pthread_self ()).p == NULL) - { - return ENOMEM; - }; - - /* - * For self cancellation we need to ensure that a thread can't - * deadlock itself trying to cancel itself asynchronously - * (pthread_cancel is required to be an async-cancel - * safe function). - */ - cancel_self = pthread_equal (thread, self); - - tp = (ptw32_thread_t *) thread.p; - - /* - * Lock for async-cancel safety. - */ - ptw32_mcs_lock_acquire (&tp->stateLock, &stateLock); - - if (tp->cancelType == PTHREAD_CANCEL_ASYNCHRONOUS - && tp->cancelState == PTHREAD_CANCEL_ENABLE - && tp->state < PThreadStateCanceling) - { - if (cancel_self) - { - tp->state = PThreadStateCanceling; - tp->cancelState = PTHREAD_CANCEL_DISABLE; - - ptw32_mcs_lock_release (&stateLock); - ptw32_throw (PTW32_EPS_CANCEL); - - /* Never reached */ - } - else - { - HANDLE threadH = tp->threadH; - - SuspendThread (threadH); - - if (WaitForSingleObject (threadH, 0) == WAIT_TIMEOUT) - { - tp->state = PThreadStateCanceling; - tp->cancelState = PTHREAD_CANCEL_DISABLE; - /* - * If alertdrv and QueueUserAPCEx is available then the following - * will result in a call to QueueUserAPCEx with the args given, otherwise - * this will result in a call to ptw32_RegisterCancelation and only - * the threadH arg will be used. - */ - ptw32_register_cancelation ((PAPCFUNC)ptw32_cancel_callback, threadH, 0); - ptw32_mcs_lock_release (&stateLock); - ResumeThread (threadH); - } - } - } - else - { - /* - * Set for deferred cancellation. - */ - if (tp->state < PThreadStateCancelPending) - { - tp->state = PThreadStateCancelPending; - if (!SetEvent (tp->cancelEvent)) - { - result = ESRCH; - } - } - else if (tp->state >= PThreadStateCanceling) - { - result = ESRCH; - } - - ptw32_mcs_lock_release (&stateLock); - } - - return (result); -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_cond_destroy.c b/platform/win32/msvc/external/pthreads.2/pthread_cond_destroy.c deleted file mode 100644 index 71bb07690bc..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_cond_destroy.c +++ /dev/null @@ -1,253 +0,0 @@ -/* - * pthread_cond_destroy.c - * - * Description: - * This translation unit implements condition variables and their primitives. - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -int -pthread_cond_destroy (pthread_cond_t * cond) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function destroys a condition variable - * - * - * PARAMETERS - * cond - * pointer to an instance of pthread_cond_t - * - * - * DESCRIPTION - * This function destroys a condition variable. - * - * NOTES: - * 1) A condition variable can be destroyed - * immediately after all the threads that - * are blocked on it are awakened. e.g. - * - * struct list { - * pthread_mutex_t lm; - * ... - * } - * - * struct elt { - * key k; - * int busy; - * pthread_cond_t notbusy; - * ... - * } - * - * - * struct elt * - * list_find(struct list *lp, key k) - * { - * struct elt *ep; - * - * pthread_mutex_lock(&lp->lm); - * while ((ep = find_elt(l,k) != NULL) && ep->busy) - * pthread_cond_wait(&ep->notbusy, &lp->lm); - * if (ep != NULL) - * ep->busy = 1; - * pthread_mutex_unlock(&lp->lm); - * return(ep); - * } - * - * delete_elt(struct list *lp, struct elt *ep) - * { - * pthread_mutex_lock(&lp->lm); - * assert(ep->busy); - * ... remove ep from list ... - * ep->busy = 0; - * (A) pthread_cond_broadcast(&ep->notbusy); - * pthread_mutex_unlock(&lp->lm); - * (B) pthread_cond_destroy(&rp->notbusy); - * free(ep); - * } - * - * In this example, the condition variable - * and its list element may be freed (line B) - * immediately after all threads waiting for - * it are awakened (line A), since the mutex - * and the code ensure that no other thread - * can touch the element to be deleted. - * - * RESULTS - * 0 successfully released condition variable, - * EINVAL 'cond' is invalid, - * EBUSY 'cond' is in use, - * - * ------------------------------------------------------ - */ -{ - pthread_cond_t cv; - int result = 0, result1 = 0, result2 = 0; - - /* - * Assuming any race condition here is harmless. - */ - if (cond == NULL || *cond == NULL) - { - return EINVAL; - } - - if (*cond != PTHREAD_COND_INITIALIZER) - { - ptw32_mcs_local_node_t node; - ptw32_mcs_lock_acquire(&ptw32_cond_list_lock, &node); - - cv = *cond; - - /* - * Close the gate; this will synchronize this thread with - * all already signaled waiters to let them retract their - * waiter status - SEE NOTE 1 ABOVE!!! - */ - if (ptw32_semwait (&(cv->semBlockLock)) != 0) /* Non-cancelable */ - { - result = errno; - } - else - { - /* - * !TRY! lock mtxUnblockLock; try will detect busy condition - * and will not cause a deadlock with respect to concurrent - * signal/broadcast. - */ - if ((result = pthread_mutex_trylock (&(cv->mtxUnblockLock))) != 0) - { - (void) sem_post (&(cv->semBlockLock)); - } - } - - if (result != 0) - { - ptw32_mcs_lock_release(&node); - return result; - } - - /* - * Check whether cv is still busy (still has waiters) - */ - if (cv->nWaitersBlocked > cv->nWaitersGone) - { - if (sem_post (&(cv->semBlockLock)) != 0) - { - result = errno; - } - result1 = pthread_mutex_unlock (&(cv->mtxUnblockLock)); - result2 = EBUSY; - } - else - { - /* - * Now it is safe to destroy - */ - *cond = NULL; - - if (sem_destroy (&(cv->semBlockLock)) != 0) - { - result = errno; - } - if (sem_destroy (&(cv->semBlockQueue)) != 0) - { - result1 = errno; - } - if ((result2 = pthread_mutex_unlock (&(cv->mtxUnblockLock))) == 0) - { - result2 = pthread_mutex_destroy (&(cv->mtxUnblockLock)); - } - - /* Unlink the CV from the list */ - - if (ptw32_cond_list_head == cv) - { - ptw32_cond_list_head = cv->next; - } - else - { - cv->prev->next = cv->next; - } - - if (ptw32_cond_list_tail == cv) - { - ptw32_cond_list_tail = cv->prev; - } - else - { - cv->next->prev = cv->prev; - } - - (void) free (cv); - } - - ptw32_mcs_lock_release(&node); - } - else - { - ptw32_mcs_local_node_t node; - /* - * See notes in ptw32_cond_check_need_init() above also. - */ - ptw32_mcs_lock_acquire(&ptw32_cond_test_init_lock, &node); - - /* - * Check again. - */ - if (*cond == PTHREAD_COND_INITIALIZER) - { - /* - * This is all we need to do to destroy a statically - * initialised cond that has not yet been used (initialised). - * If we get to here, another thread waiting to initialise - * this cond will get an EINVAL. That's OK. - */ - *cond = NULL; - } - else - { - /* - * The cv has been initialised while we were waiting - * so assume it's in use. - */ - result = EBUSY; - } - - ptw32_mcs_lock_release(&node); - } - - return ((result != 0) ? result : ((result1 != 0) ? result1 : result2)); -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_cond_init.c b/platform/win32/msvc/external/pthreads.2/pthread_cond_init.c deleted file mode 100644 index ade6bea8bb4..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_cond_init.c +++ /dev/null @@ -1,167 +0,0 @@ -/* - * pthread_cond_init.c - * - * Description: - * This translation unit implements condition variables and their primitives. - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_cond_init (pthread_cond_t * cond, const pthread_condattr_t * attr) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function initializes a condition variable. - * - * PARAMETERS - * cond - * pointer to an instance of pthread_cond_t - * - * attr - * specifies optional creation attributes. - * - * - * DESCRIPTION - * This function initializes a condition variable. - * - * RESULTS - * 0 successfully created condition variable, - * EINVAL 'attr' is invalid, - * EAGAIN insufficient resources (other than - * memory, - * ENOMEM insufficient memory, - * EBUSY 'cond' is already initialized, - * - * ------------------------------------------------------ - */ -{ - int result; - pthread_cond_t cv = NULL; - - if (cond == NULL) - { - return EINVAL; - } - - if ((attr != NULL && *attr != NULL) && - ((*attr)->pshared == PTHREAD_PROCESS_SHARED)) - { - /* - * Creating condition variable that can be shared between - * processes. - */ - result = ENOSYS; - goto DONE; - } - - cv = (pthread_cond_t) calloc (1, sizeof (*cv)); - - if (cv == NULL) - { - result = ENOMEM; - goto DONE; - } - - cv->nWaitersBlocked = 0; - cv->nWaitersToUnblock = 0; - cv->nWaitersGone = 0; - - if (sem_init (&(cv->semBlockLock), 0, 1) != 0) - { - result = errno; - goto FAIL0; - } - - if (sem_init (&(cv->semBlockQueue), 0, 0) != 0) - { - result = errno; - goto FAIL1; - } - - if ((result = pthread_mutex_init (&(cv->mtxUnblockLock), 0)) != 0) - { - goto FAIL2; - } - - result = 0; - - goto DONE; - - /* - * ------------- - * Failed... - * ------------- - */ -FAIL2: - (void) sem_destroy (&(cv->semBlockQueue)); - -FAIL1: - (void) sem_destroy (&(cv->semBlockLock)); - -FAIL0: - (void) free (cv); - cv = NULL; - -DONE: - if (0 == result) - { - ptw32_mcs_local_node_t node; - - ptw32_mcs_lock_acquire(&ptw32_cond_list_lock, &node); - - cv->next = NULL; - cv->prev = ptw32_cond_list_tail; - - if (ptw32_cond_list_tail != NULL) - { - ptw32_cond_list_tail->next = cv; - } - - ptw32_cond_list_tail = cv; - - if (ptw32_cond_list_head == NULL) - { - ptw32_cond_list_head = cv; - } - - ptw32_mcs_lock_release(&node); - } - - *cond = cv; - - return result; - -} /* pthread_cond_init */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_cond_signal.c b/platform/win32/msvc/external/pthreads.2/pthread_cond_signal.c deleted file mode 100644 index e147831d41a..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_cond_signal.c +++ /dev/null @@ -1,231 +0,0 @@ -/* - * pthread_cond_signal.c - * - * Description: - * This translation unit implements condition variables and their primitives. - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * ------------------------------------------------------------- - * Algorithm: - * See the comments at the top of pthread_cond_wait.c. - */ - -#include "pthread.h" -#include "implement.h" - -static INLINE int -ptw32_cond_unblock (pthread_cond_t * cond, int unblockAll) - /* - * Notes. - * - * Does not use the external mutex for synchronisation, - * therefore semBlockLock is needed. - * mtxUnblockLock is for LEVEL-2 synch. LEVEL-2 is the - * state where the external mutex is not necessarily locked by - * any thread, ie. between cond_wait unlocking and re-acquiring - * the lock after having been signaled or a timeout or - * cancellation. - * - * Uses the following CV elements: - * nWaitersBlocked - * nWaitersToUnblock - * nWaitersGone - * mtxUnblockLock - * semBlockLock - * semBlockQueue - */ -{ - int result; - pthread_cond_t cv; - int nSignalsToIssue; - - if (cond == NULL || *cond == NULL) - { - return EINVAL; - } - - cv = *cond; - - /* - * No-op if the CV is static and hasn't been initialised yet. - * Assuming that any race condition is harmless. - */ - if (cv == PTHREAD_COND_INITIALIZER) - { - return 0; - } - - if ((result = pthread_mutex_lock (&(cv->mtxUnblockLock))) != 0) - { - return result; - } - - if (0 != cv->nWaitersToUnblock) - { - if (0 == cv->nWaitersBlocked) - { - return pthread_mutex_unlock (&(cv->mtxUnblockLock)); - } - if (unblockAll) - { - cv->nWaitersToUnblock += (nSignalsToIssue = cv->nWaitersBlocked); - cv->nWaitersBlocked = 0; - } - else - { - nSignalsToIssue = 1; - cv->nWaitersToUnblock++; - cv->nWaitersBlocked--; - } - } - else if (cv->nWaitersBlocked > cv->nWaitersGone) - { - /* Use the non-cancellable version of sem_wait() */ - if (ptw32_semwait (&(cv->semBlockLock)) != 0) - { - result = errno; - (void) pthread_mutex_unlock (&(cv->mtxUnblockLock)); - return result; - } - if (0 != cv->nWaitersGone) - { - cv->nWaitersBlocked -= cv->nWaitersGone; - cv->nWaitersGone = 0; - } - if (unblockAll) - { - nSignalsToIssue = cv->nWaitersToUnblock = cv->nWaitersBlocked; - cv->nWaitersBlocked = 0; - } - else - { - nSignalsToIssue = cv->nWaitersToUnblock = 1; - cv->nWaitersBlocked--; - } - } - else - { - return pthread_mutex_unlock (&(cv->mtxUnblockLock)); - } - - if ((result = pthread_mutex_unlock (&(cv->mtxUnblockLock))) == 0) - { - if (sem_post_multiple (&(cv->semBlockQueue), nSignalsToIssue) != 0) - { - result = errno; - } - } - - return result; - -} /* ptw32_cond_unblock */ - -int -pthread_cond_signal (pthread_cond_t * cond) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function signals a condition variable, waking - * one waiting thread. - * If SCHED_FIFO or SCHED_RR policy threads are waiting - * the highest priority waiter is awakened; otherwise, - * an unspecified waiter is awakened. - * - * PARAMETERS - * cond - * pointer to an instance of pthread_cond_t - * - * - * DESCRIPTION - * This function signals a condition variable, waking - * one waiting thread. - * If SCHED_FIFO or SCHED_RR policy threads are waiting - * the highest priority waiter is awakened; otherwise, - * an unspecified waiter is awakened. - * - * NOTES: - * - * 1) Use when any waiter can respond and only one need - * respond (all waiters being equal). - * - * RESULTS - * 0 successfully signaled condition, - * EINVAL 'cond' is invalid, - * - * ------------------------------------------------------ - */ -{ - /* - * The '0'(FALSE) unblockAll arg means unblock ONE waiter. - */ - return (ptw32_cond_unblock (cond, 0)); - -} /* pthread_cond_signal */ - -int -pthread_cond_broadcast (pthread_cond_t * cond) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function broadcasts the condition variable, - * waking all current waiters. - * - * PARAMETERS - * cond - * pointer to an instance of pthread_cond_t - * - * - * DESCRIPTION - * This function signals a condition variable, waking - * all waiting threads. - * - * NOTES: - * - * 1) Use when more than one waiter may respond to - * predicate change or if any waiting thread may - * not be able to respond - * - * RESULTS - * 0 successfully signalled condition to all - * waiting threads, - * EINVAL 'cond' is invalid - * ENOSPC a required resource has been exhausted, - * - * ------------------------------------------------------ - */ -{ - /* - * The TRUE unblockAll arg means unblock ALL waiters. - */ - return (ptw32_cond_unblock (cond, PTW32_TRUE)); - -} /* pthread_cond_broadcast */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_cond_wait.c b/platform/win32/msvc/external/pthreads.2/pthread_cond_wait.c deleted file mode 100644 index 6a4c1d9514c..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_cond_wait.c +++ /dev/null @@ -1,567 +0,0 @@ -/* - * pthread_cond_wait.c - * - * Description: - * This translation unit implements condition variables and their primitives. - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * ------------------------------------------------------------- - * Algorithm: - * The algorithm used in this implementation is that developed by - * Alexander Terekhov in colaboration with Louis Thomas. The bulk - * of the discussion is recorded in the file README.CV, which contains - * several generations of both colaborators original algorithms. The final - * algorithm used here is the one referred to as - * - * Algorithm 8a / IMPL_SEM,UNBLOCK_STRATEGY == UNBLOCK_ALL - * - * presented below in pseudo-code as it appeared: - * - * - * given: - * semBlockLock - bin.semaphore - * semBlockQueue - semaphore - * mtxExternal - mutex or CS - * mtxUnblockLock - mutex or CS - * nWaitersGone - int - * nWaitersBlocked - int - * nWaitersToUnblock - int - * - * wait( timeout ) { - * - * [auto: register int result ] // error checking omitted - * [auto: register int nSignalsWasLeft ] - * [auto: register int nWaitersWasGone ] - * - * sem_wait( semBlockLock ); - * nWaitersBlocked++; - * sem_post( semBlockLock ); - * - * unlock( mtxExternal ); - * bTimedOut = sem_wait( semBlockQueue,timeout ); - * - * lock( mtxUnblockLock ); - * if ( 0 != (nSignalsWasLeft = nWaitersToUnblock) ) { - * if ( bTimeout ) { // timeout (or canceled) - * if ( 0 != nWaitersBlocked ) { - * nWaitersBlocked--; - * } - * else { - * nWaitersGone++; // count spurious wakeups. - * } - * } - * if ( 0 == --nWaitersToUnblock ) { - * if ( 0 != nWaitersBlocked ) { - * sem_post( semBlockLock ); // open the gate. - * nSignalsWasLeft = 0; // do not open the gate - * // below again. - * } - * else if ( 0 != (nWaitersWasGone = nWaitersGone) ) { - * nWaitersGone = 0; - * } - * } - * } - * else if ( INT_MAX/2 == ++nWaitersGone ) { // timeout/canceled or - * // spurious semaphore :-) - * sem_wait( semBlockLock ); - * nWaitersBlocked -= nWaitersGone; // something is going on here - * // - test of timeouts? :-) - * sem_post( semBlockLock ); - * nWaitersGone = 0; - * } - * unlock( mtxUnblockLock ); - * - * if ( 1 == nSignalsWasLeft ) { - * if ( 0 != nWaitersWasGone ) { - * // sem_adjust( semBlockQueue,-nWaitersWasGone ); - * while ( nWaitersWasGone-- ) { - * sem_wait( semBlockQueue ); // better now than spurious later - * } - * } sem_post( semBlockLock ); // open the gate - * } - * - * lock( mtxExternal ); - * - * return ( bTimedOut ) ? ETIMEOUT : 0; - * } - * - * signal(bAll) { - * - * [auto: register int result ] - * [auto: register int nSignalsToIssue] - * - * lock( mtxUnblockLock ); - * - * if ( 0 != nWaitersToUnblock ) { // the gate is closed!!! - * if ( 0 == nWaitersBlocked ) { // NO-OP - * return unlock( mtxUnblockLock ); - * } - * if (bAll) { - * nWaitersToUnblock += nSignalsToIssue=nWaitersBlocked; - * nWaitersBlocked = 0; - * } - * else { - * nSignalsToIssue = 1; - * nWaitersToUnblock++; - * nWaitersBlocked--; - * } - * } - * else if ( nWaitersBlocked > nWaitersGone ) { // HARMLESS RACE CONDITION! - * sem_wait( semBlockLock ); // close the gate - * if ( 0 != nWaitersGone ) { - * nWaitersBlocked -= nWaitersGone; - * nWaitersGone = 0; - * } - * if (bAll) { - * nSignalsToIssue = nWaitersToUnblock = nWaitersBlocked; - * nWaitersBlocked = 0; - * } - * else { - * nSignalsToIssue = nWaitersToUnblock = 1; - * nWaitersBlocked--; - * } - * } - * else { // NO-OP - * return unlock( mtxUnblockLock ); - * } - * - * unlock( mtxUnblockLock ); - * sem_post( semBlockQueue,nSignalsToIssue ); - * return result; - * } - * ------------------------------------------------------------- - * - * Algorithm 9 / IMPL_SEM,UNBLOCK_STRATEGY == UNBLOCK_ALL - * - * presented below in pseudo-code; basically 8a... - * ...BUT W/O "spurious wakes" prevention: - * - * - * given: - * semBlockLock - bin.semaphore - * semBlockQueue - semaphore - * mtxExternal - mutex or CS - * mtxUnblockLock - mutex or CS - * nWaitersGone - int - * nWaitersBlocked - int - * nWaitersToUnblock - int - * - * wait( timeout ) { - * - * [auto: register int result ] // error checking omitted - * [auto: register int nSignalsWasLeft ] - * - * sem_wait( semBlockLock ); - * ++nWaitersBlocked; - * sem_post( semBlockLock ); - * - * unlock( mtxExternal ); - * bTimedOut = sem_wait( semBlockQueue,timeout ); - * - * lock( mtxUnblockLock ); - * if ( 0 != (nSignalsWasLeft = nWaitersToUnblock) ) { - * --nWaitersToUnblock; - * } - * else if ( INT_MAX/2 == ++nWaitersGone ) { // timeout/canceled or - * // spurious semaphore :-) - * sem_wait( semBlockLock ); - * nWaitersBlocked -= nWaitersGone; // something is going on here - * // - test of timeouts? :-) - * sem_post( semBlockLock ); - * nWaitersGone = 0; - * } - * unlock( mtxUnblockLock ); - * - * if ( 1 == nSignalsWasLeft ) { - * sem_post( semBlockLock ); // open the gate - * } - * - * lock( mtxExternal ); - * - * return ( bTimedOut ) ? ETIMEOUT : 0; - * } - * - * signal(bAll) { - * - * [auto: register int result ] - * [auto: register int nSignalsToIssue] - * - * lock( mtxUnblockLock ); - * - * if ( 0 != nWaitersToUnblock ) { // the gate is closed!!! - * if ( 0 == nWaitersBlocked ) { // NO-OP - * return unlock( mtxUnblockLock ); - * } - * if (bAll) { - * nWaitersToUnblock += nSignalsToIssue=nWaitersBlocked; - * nWaitersBlocked = 0; - * } - * else { - * nSignalsToIssue = 1; - * ++nWaitersToUnblock; - * --nWaitersBlocked; - * } - * } - * else if ( nWaitersBlocked > nWaitersGone ) { // HARMLESS RACE CONDITION! - * sem_wait( semBlockLock ); // close the gate - * if ( 0 != nWaitersGone ) { - * nWaitersBlocked -= nWaitersGone; - * nWaitersGone = 0; - * } - * if (bAll) { - * nSignalsToIssue = nWaitersToUnblock = nWaitersBlocked; - * nWaitersBlocked = 0; - * } - * else { - * nSignalsToIssue = nWaitersToUnblock = 1; - * --nWaitersBlocked; - * } - * } - * else { // NO-OP - * return unlock( mtxUnblockLock ); - * } - * - * unlock( mtxUnblockLock ); - * sem_post( semBlockQueue,nSignalsToIssue ); - * return result; - * } - * ------------------------------------------------------------- - * - */ - -#include "pthread.h" -#include "implement.h" - -/* - * Arguments for cond_wait_cleanup, since we can only pass a - * single void * to it. - */ -typedef struct -{ - pthread_mutex_t *mutexPtr; - pthread_cond_t cv; - int *resultPtr; -} ptw32_cond_wait_cleanup_args_t; - -static void PTW32_CDECL -ptw32_cond_wait_cleanup (void *args) -{ - ptw32_cond_wait_cleanup_args_t *cleanup_args = - (ptw32_cond_wait_cleanup_args_t *) args; - pthread_cond_t cv = cleanup_args->cv; - int *resultPtr = cleanup_args->resultPtr; - int nSignalsWasLeft; - int result; - - /* - * Whether we got here as a result of signal/broadcast or because of - * timeout on wait or thread cancellation we indicate that we are no - * longer waiting. The waiter is responsible for adjusting waiters - * (to)unblock(ed) counts (protected by unblock lock). - */ - if ((result = pthread_mutex_lock (&(cv->mtxUnblockLock))) != 0) - { - *resultPtr = result; - return; - } - - if (0 != (nSignalsWasLeft = cv->nWaitersToUnblock)) - { - --(cv->nWaitersToUnblock); - } - else if (INT_MAX / 2 == ++(cv->nWaitersGone)) - { - /* Use the non-cancellable version of sem_wait() */ - if (ptw32_semwait (&(cv->semBlockLock)) != 0) - { - *resultPtr = errno; - /* - * This is a fatal error for this CV, - * so we deliberately don't unlock - * cv->mtxUnblockLock before returning. - */ - return; - } - cv->nWaitersBlocked -= cv->nWaitersGone; - if (sem_post (&(cv->semBlockLock)) != 0) - { - *resultPtr = errno; - /* - * This is a fatal error for this CV, - * so we deliberately don't unlock - * cv->mtxUnblockLock before returning. - */ - return; - } - cv->nWaitersGone = 0; - } - - if ((result = pthread_mutex_unlock (&(cv->mtxUnblockLock))) != 0) - { - *resultPtr = result; - return; - } - - if (1 == nSignalsWasLeft) - { - if (sem_post (&(cv->semBlockLock)) != 0) - { - *resultPtr = errno; - return; - } - } - - /* - * XSH: Upon successful return, the mutex has been locked and is owned - * by the calling thread. - */ - if ((result = pthread_mutex_lock (cleanup_args->mutexPtr)) != 0) - { - *resultPtr = result; - } -} /* ptw32_cond_wait_cleanup */ - -static INLINE int -ptw32_cond_timedwait (pthread_cond_t * cond, - pthread_mutex_t * mutex, const struct timespec *abstime) -{ - int result = 0; - pthread_cond_t cv; - ptw32_cond_wait_cleanup_args_t cleanup_args; - - if (cond == NULL || *cond == NULL) - { - return EINVAL; - } - - /* - * We do a quick check to see if we need to do more work - * to initialise a static condition variable. We check - * again inside the guarded section of ptw32_cond_check_need_init() - * to avoid race conditions. - */ - if (*cond == PTHREAD_COND_INITIALIZER) - { - result = ptw32_cond_check_need_init (cond); - } - - if (result != 0 && result != EBUSY) - { - return result; - } - - cv = *cond; - - /* Thread can be cancelled in sem_wait() but this is OK */ - if (sem_wait (&(cv->semBlockLock)) != 0) - { - return errno; - } - - ++(cv->nWaitersBlocked); - - if (sem_post (&(cv->semBlockLock)) != 0) - { - return errno; - } - - /* - * Setup this waiter cleanup handler - */ - cleanup_args.mutexPtr = mutex; - cleanup_args.cv = cv; - cleanup_args.resultPtr = &result; - -#if defined(_MSC_VER) && _MSC_VER < 1400 -#pragma inline_depth(0) -#endif - pthread_cleanup_push (ptw32_cond_wait_cleanup, (void *) &cleanup_args); - - /* - * Now we can release 'mutex' and... - */ - if ((result = pthread_mutex_unlock (mutex)) == 0) - { - - /* - * ...wait to be awakened by - * pthread_cond_signal, or - * pthread_cond_broadcast, or - * timeout, or - * thread cancellation - * - * Note: - * - * sem_timedwait is a cancellation point, - * hence providing the mechanism for making - * pthread_cond_wait a cancellation point. - * We use the cleanup mechanism to ensure we - * re-lock the mutex and adjust (to)unblock(ed) waiters - * counts if we are cancelled, timed out or signalled. - */ - if (sem_timedwait (&(cv->semBlockQueue), abstime) != 0) - { - result = errno; - } - } - - /* - * Always cleanup - */ - pthread_cleanup_pop (1); -#if defined(_MSC_VER) && _MSC_VER < 1400 -#pragma inline_depth() -#endif - - /* - * "result" can be modified by the cleanup handler. - */ - return result; - -} /* ptw32_cond_timedwait */ - - -int -pthread_cond_wait (pthread_cond_t * cond, pthread_mutex_t * mutex) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function waits on a condition variable until - * awakened by a signal or broadcast. - * - * Caller MUST be holding the mutex lock; the - * lock is released and the caller is blocked waiting - * on 'cond'. When 'cond' is signaled, the mutex - * is re-acquired before returning to the caller. - * - * PARAMETERS - * cond - * pointer to an instance of pthread_cond_t - * - * mutex - * pointer to an instance of pthread_mutex_t - * - * - * DESCRIPTION - * This function waits on a condition variable until - * awakened by a signal or broadcast. - * - * NOTES: - * - * 1) The function must be called with 'mutex' LOCKED - * by the calling thread, or undefined behaviour - * will result. - * - * 2) This routine atomically releases 'mutex' and causes - * the calling thread to block on the condition variable. - * The blocked thread may be awakened by - * pthread_cond_signal or - * pthread_cond_broadcast. - * - * Upon successful completion, the 'mutex' has been locked and - * is owned by the calling thread. - * - * - * RESULTS - * 0 caught condition; mutex released, - * EINVAL 'cond' or 'mutex' is invalid, - * EINVAL different mutexes for concurrent waits, - * EINVAL mutex is not held by the calling thread, - * - * ------------------------------------------------------ - */ -{ - /* - * The NULL abstime arg means INFINITE waiting. - */ - return (ptw32_cond_timedwait (cond, mutex, NULL)); - -} /* pthread_cond_wait */ - - -int -pthread_cond_timedwait (pthread_cond_t * cond, - pthread_mutex_t * mutex, - const struct timespec *abstime) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function waits on a condition variable either until - * awakened by a signal or broadcast; or until the time - * specified by abstime passes. - * - * PARAMETERS - * cond - * pointer to an instance of pthread_cond_t - * - * mutex - * pointer to an instance of pthread_mutex_t - * - * abstime - * pointer to an instance of (const struct timespec) - * - * - * DESCRIPTION - * This function waits on a condition variable either until - * awakened by a signal or broadcast; or until the time - * specified by abstime passes. - * - * NOTES: - * 1) The function must be called with 'mutex' LOCKED - * by the calling thread, or undefined behaviour - * will result. - * - * 2) This routine atomically releases 'mutex' and causes - * the calling thread to block on the condition variable. - * The blocked thread may be awakened by - * pthread_cond_signal or - * pthread_cond_broadcast. - * - * - * RESULTS - * 0 caught condition; mutex released, - * EINVAL 'cond', 'mutex', or abstime is invalid, - * EINVAL different mutexes for concurrent waits, - * EINVAL mutex is not held by the calling thread, - * ETIMEDOUT abstime ellapsed before cond was signaled. - * - * ------------------------------------------------------ - */ -{ - if (abstime == NULL) - { - return EINVAL; - } - - return (ptw32_cond_timedwait (cond, mutex, abstime)); - -} /* pthread_cond_timedwait */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_condattr_destroy.c b/platform/win32/msvc/external/pthreads.2/pthread_condattr_destroy.c deleted file mode 100644 index 2ca11b4edf3..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_condattr_destroy.c +++ /dev/null @@ -1,86 +0,0 @@ -/* - * condvar_attr_destroy.c - * - * Description: - * This translation unit implements condition variables and their primitives. - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_condattr_destroy (pthread_condattr_t * attr) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * Destroys a condition variable attributes object. - * The object can no longer be used. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_condattr_t - * - * - * DESCRIPTION - * Destroys a condition variable attributes object. - * The object can no longer be used. - * - * NOTES: - * 1) Does not affect condition variables created - * using 'attr' - * - * RESULTS - * 0 successfully released attr, - * EINVAL 'attr' is invalid. - * - * ------------------------------------------------------ - */ -{ - int result = 0; - - if (attr == NULL || *attr == NULL) - { - result = EINVAL; - } - else - { - (void) free (*attr); - - *attr = NULL; - result = 0; - } - - return result; - -} /* pthread_condattr_destroy */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_condattr_getpshared.c b/platform/win32/msvc/external/pthreads.2/pthread_condattr_getpshared.c deleted file mode 100644 index b7b854fb446..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_condattr_getpshared.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - * pthread_condattr_getpshared.c - * - * Description: - * This translation unit implements condition variables and their primitives. - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_condattr_getpshared (const pthread_condattr_t * attr, int *pshared) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * Determine whether condition variables created with 'attr' - * can be shared between processes. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_condattr_t - * - * pshared - * will be set to one of: - * - * PTHREAD_PROCESS_SHARED - * May be shared if in shared memory - * - * PTHREAD_PROCESS_PRIVATE - * Cannot be shared. - * - * - * DESCRIPTION - * Condition Variables created with 'attr' can be shared - * between processes if pthread_cond_t variable is allocated - * in memory shared by these processes. - * NOTES: - * 1) pshared condition variables MUST be allocated in - * shared memory. - * - * 2) The following macro is defined if shared mutexes - * are supported: - * _POSIX_THREAD_PROCESS_SHARED - * - * RESULTS - * 0 successfully retrieved attribute, - * EINVAL 'attr' or 'pshared' is invalid, - * - * ------------------------------------------------------ - */ -{ - int result; - - if ((attr != NULL && *attr != NULL) && (pshared != NULL)) - { - *pshared = (*attr)->pshared; - result = 0; - } - else - { - result = EINVAL; - } - - return result; - -} /* pthread_condattr_getpshared */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_condattr_init.c b/platform/win32/msvc/external/pthreads.2/pthread_condattr_init.c deleted file mode 100644 index da79e219585..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_condattr_init.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * pthread_condattr_init.c - * - * Description: - * This translation unit implements condition variables and their primitives. - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_condattr_init (pthread_condattr_t * attr) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * Initializes a condition variable attributes object - * with default attributes. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_condattr_t - * - * - * DESCRIPTION - * Initializes a condition variable attributes object - * with default attributes. - * - * NOTES: - * 1) Use to define condition variable types - * 2) It is up to the application to ensure - * that it doesn't re-init an attribute - * without destroying it first. Otherwise - * a memory leak is created. - * - * RESULTS - * 0 successfully initialized attr, - * ENOMEM insufficient memory for attr. - * - * ------------------------------------------------------ - */ -{ - pthread_condattr_t attr_result; - int result = 0; - - attr_result = (pthread_condattr_t) calloc (1, sizeof (*attr_result)); - - if (attr_result == NULL) - { - result = ENOMEM; - } - - *attr = attr_result; - - return result; - -} /* pthread_condattr_init */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_condattr_setpshared.c b/platform/win32/msvc/external/pthreads.2/pthread_condattr_setpshared.c deleted file mode 100644 index b8b22132668..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_condattr_setpshared.c +++ /dev/null @@ -1,117 +0,0 @@ -/* - * pthread_condattr_setpshared.c - * - * Description: - * This translation unit implements condition variables and their primitives. - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_condattr_setpshared (pthread_condattr_t * attr, int pshared) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * Mutexes created with 'attr' can be shared between - * processes if pthread_mutex_t variable is allocated - * in memory shared by these processes. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_mutexattr_t - * - * pshared - * must be one of: - * - * PTHREAD_PROCESS_SHARED - * May be shared if in shared memory - * - * PTHREAD_PROCESS_PRIVATE - * Cannot be shared. - * - * DESCRIPTION - * Mutexes creatd with 'attr' can be shared between - * processes if pthread_mutex_t variable is allocated - * in memory shared by these processes. - * - * NOTES: - * 1) pshared mutexes MUST be allocated in shared - * memory. - * - * 2) The following macro is defined if shared mutexes - * are supported: - * _POSIX_THREAD_PROCESS_SHARED - * - * RESULTS - * 0 successfully set attribute, - * EINVAL 'attr' or pshared is invalid, - * ENOSYS PTHREAD_PROCESS_SHARED not supported, - * - * ------------------------------------------------------ - */ -{ - int result; - - if ((attr != NULL && *attr != NULL) - && ((pshared == PTHREAD_PROCESS_SHARED) - || (pshared == PTHREAD_PROCESS_PRIVATE))) - { - if (pshared == PTHREAD_PROCESS_SHARED) - { - -#if !defined( _POSIX_THREAD_PROCESS_SHARED ) - result = ENOSYS; - pshared = PTHREAD_PROCESS_PRIVATE; -#else - result = 0; - -#endif /* _POSIX_THREAD_PROCESS_SHARED */ - - } - else - { - result = 0; - } - - (*attr)->pshared = pshared; - } - else - { - result = EINVAL; - } - - return result; - -} /* pthread_condattr_setpshared */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_delay_np.c b/platform/win32/msvc/external/pthreads.2/pthread_delay_np.c deleted file mode 100644 index 7e3b2b1db82..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_delay_np.c +++ /dev/null @@ -1,172 +0,0 @@ -/* - * pthreads_delay_np.c - * - * Description: - * This translation unit implements non-portable thread functions. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -/* - * pthread_delay_np - * - * DESCRIPTION - * - * This routine causes a thread to delay execution for a specific period of time. - * This period ends at the current time plus the specified interval. The routine - * will not return before the end of the period is reached, but may return an - * arbitrary amount of time after the period has gone by. This can be due to - * system load, thread priorities, and system timer granularity. - * - * Specifying an interval of zero (0) seconds and zero (0) nanoseconds is - * allowed and can be used to force the thread to give up the processor or to - * deliver a pending cancelation request. - * - * The timespec structure contains the following two fields: - * - * tv_sec is an integer number of seconds. - * tv_nsec is an integer number of nanoseconds. - * - * Return Values - * - * If an error condition occurs, this routine returns an integer value indicating - * the type of error. Possible return values are as follows: - * - * 0 - * Successful completion. - * [EINVAL] - * The value specified by interval is invalid. - * - * Example - * - * The following code segment would wait for 5 and 1/2 seconds - * - * struct timespec tsWait; - * int intRC; - * - * tsWait.tv_sec = 5; - * tsWait.tv_nsec = 500000000L; - * intRC = pthread_delay_np(&tsWait); - */ -int -pthread_delay_np (struct timespec *interval) -{ - DWORD wait_time; - DWORD secs_in_millisecs; - DWORD millisecs; - DWORD status; - pthread_t self; - ptw32_thread_t * sp; - - if (interval == NULL) - { - return EINVAL; - } - - if (interval->tv_sec == 0L && interval->tv_nsec == 0L) - { - pthread_testcancel (); - Sleep (0); - pthread_testcancel (); - return (0); - } - - /* convert secs to millisecs */ - secs_in_millisecs = (DWORD)interval->tv_sec * 1000L; - - /* convert nanosecs to millisecs (rounding up) */ - millisecs = (interval->tv_nsec + 999999L) / 1000000L; - -#if defined(__WATCOMC__) -#pragma disable_message (124) -#endif - - /* - * Most compilers will issue a warning 'comparison always 0' - * because the variable type is unsigned, but we need to keep this - * for some reason I can't recall now. - */ - if (0 > (wait_time = secs_in_millisecs + millisecs)) - { - return EINVAL; - } - -#if defined(__WATCOMC__) -#pragma enable_message (124) -#endif - - if (NULL == (self = pthread_self ()).p) - { - return ENOMEM; - } - - sp = (ptw32_thread_t *) self.p; - - if (sp->cancelState == PTHREAD_CANCEL_ENABLE) - { - /* - * Async cancelation won't catch us until wait_time is up. - * Deferred cancelation will cancel us immediately. - */ - if (WAIT_OBJECT_0 == - (status = WaitForSingleObject (sp->cancelEvent, wait_time))) - { - ptw32_mcs_local_node_t stateLock; - /* - * Canceling! - */ - ptw32_mcs_lock_acquire (&sp->stateLock, &stateLock); - if (sp->state < PThreadStateCanceling) - { - sp->state = PThreadStateCanceling; - sp->cancelState = PTHREAD_CANCEL_DISABLE; - ptw32_mcs_lock_release (&stateLock); - - ptw32_throw (PTW32_EPS_CANCEL); - } - - ptw32_mcs_lock_release (&stateLock); - return ESRCH; - } - else if (status != WAIT_TIMEOUT) - { - return EINVAL; - } - } - else - { - Sleep (wait_time); - } - - return (0); -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_detach.c b/platform/win32/msvc/external/pthreads.2/pthread_detach.c deleted file mode 100644 index 7b95f141f90..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_detach.c +++ /dev/null @@ -1,136 +0,0 @@ -/* - * pthread_detach.c - * - * Description: - * This translation unit implements functions related to thread - * synchronisation. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -/* - * Not needed yet, but defining it should indicate clashes with build target - * environment that should be fixed. - */ -#if !defined(WINCE) -# include -#endif - - -int -pthread_detach (pthread_t thread) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function detaches the given thread. - * - * PARAMETERS - * thread - * an instance of a pthread_t - * - * - * DESCRIPTION - * This function detaches the given thread. You may use it to - * detach the main thread or to detach a joinable thread. - * NOTE: detached threads cannot be joined; - * storage is freed immediately on termination. - * - * RESULTS - * 0 successfully detached the thread, - * EINVAL thread is not a joinable thread, - * ENOSPC a required resource has been exhausted, - * ESRCH no thread could be found for 'thread', - * - * ------------------------------------------------------ - */ -{ - int result; - BOOL destroyIt = PTW32_FALSE; - ptw32_thread_t * tp = (ptw32_thread_t *) thread.p; - ptw32_mcs_local_node_t node; - - ptw32_mcs_lock_acquire(&ptw32_thread_reuse_lock, &node); - - if (NULL == tp - || thread.x != tp->ptHandle.x) - { - result = ESRCH; - } - else if (PTHREAD_CREATE_DETACHED == tp->detachState) - { - result = EINVAL; - } - else - { - ptw32_mcs_local_node_t stateLock; - /* - * Joinable ptw32_thread_t structs are not scavenged until - * a join or detach is done. The thread may have exited already, - * but all of the state and locks etc are still there. - */ - result = 0; - - ptw32_mcs_lock_acquire (&tp->stateLock, &stateLock); - if (tp->state != PThreadStateLast) - { - tp->detachState = PTHREAD_CREATE_DETACHED; - } - else if (tp->detachState != PTHREAD_CREATE_DETACHED) - { - /* - * Thread is joinable and has exited or is exiting. - */ - destroyIt = PTW32_TRUE; - } - ptw32_mcs_lock_release (&stateLock); - } - - ptw32_mcs_lock_release(&node); - - if (result == 0) - { - /* Thread is joinable */ - - if (destroyIt) - { - /* The thread has exited or is exiting but has not been joined or - * detached. Need to wait in case it's still exiting. - */ - (void) WaitForSingleObject(tp->threadH, INFINITE); - ptw32_threadDestroy (thread); - } - } - - return (result); - -} /* pthread_detach */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_equal.c b/platform/win32/msvc/external/pthreads.2/pthread_equal.c deleted file mode 100644 index ac710deaf3e..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_equal.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - * pthread_equal.c - * - * Description: - * This translation unit implements miscellaneous thread functions. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_equal (pthread_t t1, pthread_t t2) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function returns nonzero if t1 and t2 are equal, else - * returns zero - * - * PARAMETERS - * t1, - * t2 - * thread IDs - * - * - * DESCRIPTION - * This function returns nonzero if t1 and t2 are equal, else - * returns zero. - * - * RESULTS - * non-zero if t1 and t2 refer to the same thread, - * 0 t1 and t2 do not refer to the same thread - * - * ------------------------------------------------------ - */ -{ - int result; - - /* - * We also accept NULL == NULL - treating NULL as a thread - * for this special case, because there is no error that we can return. - */ - result = ( t1.p == t2.p && t1.x == t2.x ); - - return (result); - -} /* pthread_equal */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_exit.c b/platform/win32/msvc/external/pthreads.2/pthread_exit.c deleted file mode 100644 index f6d3fb78224..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_exit.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * pthread_exit.c - * - * Description: - * This translation unit implements routines associated with exiting from - * a thread. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" -#if !defined(_UWIN) -/*# include */ -#endif - -void -pthread_exit (void *value_ptr) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function terminates the calling thread, returning - * the value 'value_ptr' to any joining thread. - * - * PARAMETERS - * value_ptr - * a generic data value (i.e. not the address of a value) - * - * - * DESCRIPTION - * This function terminates the calling thread, returning - * the value 'value_ptr' to any joining thread. - * NOTE: thread should be joinable. - * - * RESULTS - * N/A - * - * ------------------------------------------------------ - */ -{ - ptw32_thread_t * sp; - - /* - * Don't use pthread_self() to avoid creating an implicit POSIX thread handle - * unnecessarily. - */ - sp = (ptw32_thread_t *) pthread_getspecific (ptw32_selfThreadKey); - -#if defined(_UWIN) - if (--pthread_count <= 0) - exit ((int) value_ptr); -#endif - - if (NULL == sp) - { - /* - * A POSIX thread handle was never created. I.e. this is a - * Win32 thread that has never called a pthreads-win32 routine that - * required a POSIX handle. - * - * Implicit POSIX handles are cleaned up in ptw32_throw() now. - */ - -#if ! (defined (__MINGW64__) || defined(__MINGW32__)) || defined (__MSVCRT__) || defined (__DMC__) - _endthreadex ((unsigned) (size_t) value_ptr); -#else - _endthread (); -#endif - - /* Never reached */ - } - - sp->exitStatus = value_ptr; - - ptw32_throw (PTW32_EPS_EXIT); - - /* Never reached. */ - -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_getconcurrency.c b/platform/win32/msvc/external/pthreads.2/pthread_getconcurrency.c deleted file mode 100644 index 52430c6f8a8..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_getconcurrency.c +++ /dev/null @@ -1,45 +0,0 @@ -/* - * pthread_getconcurrency.c - * - * Description: - * This translation unit implements miscellaneous thread functions. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_getconcurrency (void) -{ - return ptw32_concurrency; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_getschedparam.c b/platform/win32/msvc/external/pthreads.2/pthread_getschedparam.c deleted file mode 100644 index 997978f07cd..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_getschedparam.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * sched_getschedparam.c - * - * Description: - * POSIX thread functions that deal with thread scheduling. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" -#include "sched.h" - -int -pthread_getschedparam (pthread_t thread, int *policy, - struct sched_param *param) -{ - int result; - - /* Validate the thread id. */ - result = pthread_kill (thread, 0); - if (0 != result) - { - return result; - } - - /* - * Validate the policy and param args. - * Check that a policy constant wasn't passed rather than &policy. - */ - if (policy <= (int *) SCHED_MAX || param == NULL) - { - return EINVAL; - } - - /* Fill out the policy. */ - *policy = SCHED_OTHER; - - /* - * This function must return the priority value set by - * the most recent pthread_setschedparam() or pthread_create() - * for the target thread. It must not return the actual thread - * priority as altered by any system priority adjustments etc. - */ - param->sched_priority = ((ptw32_thread_t *)thread.p)->sched_priority; - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_getspecific.c b/platform/win32/msvc/external/pthreads.2/pthread_getspecific.c deleted file mode 100644 index 51a15ba13ca..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_getspecific.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * pthread_getspecific.c - * - * Description: - * POSIX thread functions which implement thread-specific data (TSD). - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -void * -pthread_getspecific (pthread_key_t key) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function returns the current value of key in the - * calling thread. If no value has been set for 'key' in - * the thread, NULL is returned. - * - * PARAMETERS - * key - * an instance of pthread_key_t - * - * - * DESCRIPTION - * This function returns the current value of key in the - * calling thread. If no value has been set for 'key' in - * the thread, NULL is returned. - * - * RESULTS - * key value or NULL on failure - * - * ------------------------------------------------------ - */ -{ - void * ptr; - - if (key == NULL) - { - ptr = NULL; - } - else - { - int lasterror = GetLastError (); -#if defined(RETAIN_WSALASTERROR) - int lastWSAerror = WSAGetLastError (); -#endif - ptr = TlsGetValue (key->key); - - SetLastError (lasterror); -#if defined(RETAIN_WSALASTERROR) - WSASetLastError (lastWSAerror); -#endif - } - - return ptr; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_getunique_np.c b/platform/win32/msvc/external/pthreads.2/pthread_getunique_np.c deleted file mode 100644 index 1215f25f92b..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_getunique_np.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - * pthread_getunique_np.c - * - * Description: - * This translation unit implements non-portable thread functions. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -/* - * - */ -unsigned __int64 -pthread_getunique_np (pthread_t thread) -{ - return ((ptw32_thread_t*)thread.p)->seqNumber; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_getw32threadhandle_np.c b/platform/win32/msvc/external/pthreads.2/pthread_getw32threadhandle_np.c deleted file mode 100644 index cdca10141c5..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_getw32threadhandle_np.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * pthread_getw32threadhandle_np.c - * - * Description: - * This translation unit implements non-portable thread functions. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -/* - * pthread_getw32threadhandle_np() - * - * Returns the win32 thread handle that the POSIX - * thread "thread" is running as. - * - * Applications can use the win32 handle to set - * win32 specific attributes of the thread. - */ -HANDLE -pthread_getw32threadhandle_np (pthread_t thread) -{ - return ((ptw32_thread_t *)thread.p)->threadH; -} - -/* - * pthread_getw32threadid_np() - * - * Returns the win32 thread id that the POSIX - * thread "thread" is running as. - */ -DWORD -pthread_getw32threadid_np (pthread_t thread) -{ - return ((ptw32_thread_t *)thread.p)->thread; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_join.c b/platform/win32/msvc/external/pthreads.2/pthread_join.c deleted file mode 100644 index 02de18818d6..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_join.c +++ /dev/null @@ -1,157 +0,0 @@ -/* - * pthread_join.c - * - * Description: - * This translation unit implements functions related to thread - * synchronisation. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -/* - * Not needed yet, but defining it should indicate clashes with build target - * environment that should be fixed. - */ -#if !defined(WINCE) -# include -#endif - - -int -pthread_join (pthread_t thread, void **value_ptr) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function waits for 'thread' to terminate and - * returns the thread's exit value if 'value_ptr' is not - * NULL. This also detaches the thread on successful - * completion. - * - * PARAMETERS - * thread - * an instance of pthread_t - * - * value_ptr - * pointer to an instance of pointer to void - * - * - * DESCRIPTION - * This function waits for 'thread' to terminate and - * returns the thread's exit value if 'value_ptr' is not - * NULL. This also detaches the thread on successful - * completion. - * NOTE: detached threads cannot be joined or canceled - * - * RESULTS - * 0 'thread' has completed - * EINVAL thread is not a joinable thread, - * ESRCH no thread could be found with ID 'thread', - * ENOENT thread couldn't find it's own valid handle, - * EDEADLK attempt to join thread with self - * - * ------------------------------------------------------ - */ -{ - int result; - pthread_t self; - ptw32_thread_t * tp = (ptw32_thread_t *) thread.p; - ptw32_mcs_local_node_t node; - - ptw32_mcs_lock_acquire(&ptw32_thread_reuse_lock, &node); - - if (NULL == tp - || thread.x != tp->ptHandle.x) - { - result = ESRCH; - } - else if (PTHREAD_CREATE_DETACHED == tp->detachState) - { - result = EINVAL; - } - else - { - result = 0; - } - - ptw32_mcs_lock_release(&node); - - if (result == 0) - { - /* - * The target thread is joinable and can't be reused before we join it. - */ - self = pthread_self(); - - if (NULL == self.p) - { - result = ENOENT; - } - else if (pthread_equal (self, thread)) - { - result = EDEADLK; - } - else - { - /* - * Pthread_join is a cancelation point. - * If we are canceled then our target thread must not be - * detached (destroyed). This is guarranteed because - * pthreadCancelableWait will not return if we - * are canceled. - */ - result = pthreadCancelableWait (tp->threadH); - - if (0 == result) - { - if (value_ptr != NULL) - { - *value_ptr = tp->exitStatus; - } - - /* - * The result of making multiple simultaneous calls to - * pthread_join() or pthread_detach() specifying the same - * target is undefined. - */ - result = pthread_detach (thread); - } - else - { - result = ESRCH; - } - } - } - - return (result); - -} /* pthread_join */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_key_create.c b/platform/win32/msvc/external/pthreads.2/pthread_key_create.c deleted file mode 100644 index 0d64abebaeb..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_key_create.c +++ /dev/null @@ -1,108 +0,0 @@ -/* - * pthread_key_create.c - * - * Description: - * POSIX thread functions which implement thread-specific data (TSD). - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -/* TLS_OUT_OF_INDEXES not defined on WinCE */ -#if !defined(TLS_OUT_OF_INDEXES) -#define TLS_OUT_OF_INDEXES 0xffffffff -#endif - -int -pthread_key_create (pthread_key_t * key, void (PTW32_CDECL *destructor) (void *)) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function creates a thread-specific data key visible - * to all threads. All existing and new threads have a value - * NULL for key until set using pthread_setspecific. When any - * thread with a non-NULL value for key terminates, 'destructor' - * is called with key's current value for that thread. - * - * PARAMETERS - * key - * pointer to an instance of pthread_key_t - * - * - * DESCRIPTION - * This function creates a thread-specific data key visible - * to all threads. All existing and new threads have a value - * NULL for key until set using pthread_setspecific. When any - * thread with a non-NULL value for key terminates, 'destructor' - * is called with key's current value for that thread. - * - * RESULTS - * 0 successfully created semaphore, - * EAGAIN insufficient resources or PTHREAD_KEYS_MAX - * exceeded, - * ENOMEM insufficient memory to create the key, - * - * ------------------------------------------------------ - */ -{ - int result = 0; - pthread_key_t newkey; - - if ((newkey = (pthread_key_t) calloc (1, sizeof (*newkey))) == NULL) - { - result = ENOMEM; - } - else if ((newkey->key = TlsAlloc ()) == TLS_OUT_OF_INDEXES) - { - result = EAGAIN; - - free (newkey); - newkey = NULL; - } - else if (destructor != NULL) - { - /* - * Have to manage associations between thread and key; - * Therefore, need a lock that allows competing threads - * to gain exclusive access to the key->threads list. - * - * The mutex will only be created when it is first locked. - */ - newkey->keyLock = 0; - newkey->destructor = destructor; - } - - *key = newkey; - - return (result); -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_key_delete.c b/platform/win32/msvc/external/pthreads.2/pthread_key_delete.c deleted file mode 100644 index 48cde0d1664..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_key_delete.c +++ /dev/null @@ -1,125 +0,0 @@ -/* - * pthread_key_delete.c - * - * Description: - * POSIX thread functions which implement thread-specific data (TSD). - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_key_delete (pthread_key_t key) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function deletes a thread-specific data key. This - * does not change the value of the thread specific data key - * for any thread and does not run the key's destructor - * in any thread so it should be used with caution. - * - * PARAMETERS - * key - * pointer to an instance of pthread_key_t - * - * - * DESCRIPTION - * This function deletes a thread-specific data key. This - * does not change the value of the thread specific data key - * for any thread and does not run the key's destructor - * in any thread so it should be used with caution. - * - * RESULTS - * 0 successfully deleted the key, - * EINVAL key is invalid, - * - * ------------------------------------------------------ - */ -{ - ptw32_mcs_local_node_t keyLock; - int result = 0; - - if (key != NULL) - { - if (key->threads != NULL && key->destructor != NULL) - { - ThreadKeyAssoc *assoc; - ptw32_mcs_lock_acquire (&(key->keyLock), &keyLock); - /* - * Run through all Thread<-->Key associations - * for this key. - * - * While we hold at least one of the locks guarding - * the assoc, we know that the assoc pointed to by - * key->threads is valid. - */ - while ((assoc = (ThreadKeyAssoc *) key->threads) != NULL) - { - ptw32_mcs_local_node_t threadLock; - ptw32_thread_t * thread = assoc->thread; - - if (assoc == NULL) - { - /* Finished */ - break; - } - - ptw32_mcs_lock_acquire (&(thread->threadLock), &threadLock); - /* - * Since we are starting at the head of the key's threads - * chain, this will also point key->threads at the next assoc. - * While we hold key->keyLock, no other thread can insert - * a new assoc via pthread_setspecific. - */ - ptw32_tkAssocDestroy (assoc); - ptw32_mcs_lock_release (&threadLock); - ptw32_mcs_lock_release (&keyLock); - } - } - - TlsFree (key->key); - if (key->destructor != NULL) - { - /* A thread could be holding the keyLock */ - ptw32_mcs_lock_acquire (&(key->keyLock), &keyLock); - ptw32_mcs_lock_release (&keyLock); - } - -#if defined( _DEBUG ) - memset ((char *) key, 0, sizeof (*key)); -#endif - free (key); - } - - return (result); -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_kill.c b/platform/win32/msvc/external/pthreads.2/pthread_kill.c deleted file mode 100644 index 228aa00e92c..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_kill.c +++ /dev/null @@ -1,105 +0,0 @@ -/* - * pthread_kill.c - * - * Description: - * This translation unit implements the pthread_kill routine. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -/* - * Not needed yet, but defining it should indicate clashes with build target - * environment that should be fixed. - */ -#if !defined(WINCE) -# include -#endif - -int -pthread_kill (pthread_t thread, int sig) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function requests that a signal be delivered to the - * specified thread. If sig is zero, error checking is - * performed but no signal is actually sent such that this - * function can be used to check for a valid thread ID. - * - * PARAMETERS - * thread reference to an instances of pthread_t - * sig signal. Currently only a value of 0 is supported. - * - * - * DESCRIPTION - * This function requests that a signal be delivered to the - * specified thread. If sig is zero, error checking is - * performed but no signal is actually sent such that this - * function can be used to check for a valid thread ID. - * - * RESULTS - * ESRCH the thread is not a valid thread ID, - * EINVAL the value of the signal is invalid - * or unsupported. - * 0 the signal was successfully sent. - * - * ------------------------------------------------------ - */ -{ - int result = 0; - ptw32_thread_t * tp; - ptw32_mcs_local_node_t node; - - ptw32_mcs_lock_acquire(&ptw32_thread_reuse_lock, &node); - - tp = (ptw32_thread_t *) thread.p; - - if (NULL == tp - || thread.x != tp->ptHandle.x - || NULL == tp->threadH) - { - result = ESRCH; - } - - ptw32_mcs_lock_release(&node); - - if (0 == result && 0 != sig) - { - /* - * Currently does not support any signals. - */ - result = EINVAL; - } - - return result; - -} /* pthread_kill */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_mutex_consistent.c b/platform/win32/msvc/external/pthreads.2/pthread_mutex_consistent.c deleted file mode 100644 index 3e05635007e..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_mutex_consistent.c +++ /dev/null @@ -1,190 +0,0 @@ -/* - * pthread_mutex_consistent.c - * - * Description: - * This translation unit implements mutual exclusion (mutex) primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -/* - * From the Sun Multi-threaded Programming Guide - * - * robustness defines the behavior when the owner of the mutex terminates without unlocking the - * mutex, usually because its process terminated abnormally. The value of robustness that is - * defined in pthread.h is PTHREAD_MUTEX_ROBUST or PTHREAD_MUTEX_STALLED. The - * default value is PTHREAD_MUTEX_STALLED . - * ■ PTHREAD_MUTEX_STALLED - * When the owner of the mutex terminates without unlocking the mutex, all subsequent calls - * to pthread_mutex_lock() are blocked from progress in an unspecified manner. - * ■ PTHREAD_MUTEX_ROBUST - * When the owner of the mutex terminates without unlocking the mutex, the mutex is - * unlocked. The next owner of this mutex acquires the mutex with an error return of - * EOWNERDEAD. - * Note – Your application must always check the return code from pthread_mutex_lock() for - * a mutex initialized with the PTHREAD_MUTEX_ROBUST attribute. - * ■ The new owner of this mutex should make the state protected by the mutex consistent. - * This state might have been left inconsistent when the previous owner terminated. - * ■ If the new owner is able to make the state consistent, call - * pthread_mutex_consistent() for the mutex before unlocking the mutex. This - * marks the mutex as consistent and subsequent calls to pthread_mutex_lock() and - * pthread_mutex_unlock() will behave in the normal manner. - * ■ If the new owner is not able to make the state consistent, do not call - * pthread_mutex_consistent() for the mutex, but unlock the mutex. - * All waiters are woken up and all subsequent calls to pthread_mutex_lock() fail to - * acquire the mutex. The return code is ENOTRECOVERABLE. The mutex can be made - * consistent by calling pthread_mutex_destroy() to uninitialize the mutex, and calling - * pthread_mutex_int() to reinitialize the mutex.However, the state that was protected - * by the mutex remains inconsistent and some form of application recovery is required. - * ■ If the thread that acquires the lock with EOWNERDEAD terminates without unlocking the - * mutex, the next owner acquires the lock with an EOWNERDEAD return code. - */ -#if !defined(_UWIN) -/*# include */ -#endif -#include "pthread.h" -#include "implement.h" - -INLINE -int -ptw32_robust_mutex_inherit(pthread_mutex_t * mutex) -{ - int result; - pthread_mutex_t mx = *mutex; - ptw32_robust_node_t* robust = mx->robustNode; - - switch ((LONG)PTW32_INTERLOCKED_COMPARE_EXCHANGE_LONG( - (PTW32_INTERLOCKED_LONGPTR)&robust->stateInconsistent, - (PTW32_INTERLOCKED_LONG)PTW32_ROBUST_INCONSISTENT, - (PTW32_INTERLOCKED_LONG)-1 /* The terminating thread sets this */)) - { - case -1L: - result = EOWNERDEAD; - break; - case (LONG)PTW32_ROBUST_NOTRECOVERABLE: - result = ENOTRECOVERABLE; - break; - default: - result = 0; - break; - } - - return result; -} - -/* - * The next two internal support functions depend on only being - * called by the thread that owns the robust mutex. This enables - * us to avoid additional locks. - * Any mutex currently in the thread's robust mutex list is held - * by the thread, again eliminating the need for locks. - * The forward/backward links allow the thread to unlock mutexes - * in any order, not necessarily the reverse locking order. - * This is all possible because it is an error if a thread that - * does not own the [robust] mutex attempts to unlock it. - */ - -INLINE -void -ptw32_robust_mutex_add(pthread_mutex_t* mutex, pthread_t self) -{ - ptw32_robust_node_t** list; - pthread_mutex_t mx = *mutex; - ptw32_thread_t* tp = (ptw32_thread_t*)self.p; - ptw32_robust_node_t* robust = mx->robustNode; - - list = &tp->robustMxList; - mx->ownerThread = self; - if (NULL == *list) - { - robust->prev = NULL; - robust->next = NULL; - *list = robust; - } - else - { - robust->prev = NULL; - robust->next = *list; - (*list)->prev = robust; - *list = robust; - } -} - -INLINE -void -ptw32_robust_mutex_remove(pthread_mutex_t* mutex, ptw32_thread_t* otp) -{ - ptw32_robust_node_t** list; - pthread_mutex_t mx = *mutex; - ptw32_robust_node_t* robust = mx->robustNode; - - list = &(((ptw32_thread_t*)mx->ownerThread.p)->robustMxList); - mx->ownerThread.p = otp; - if (robust->next != NULL) - { - robust->next->prev = robust->prev; - } - if (robust->prev != NULL) - { - robust->prev->next = robust->next; - } - if (*list == robust) - { - *list = robust->next; - } -} - - -int -pthread_mutex_consistent (pthread_mutex_t* mutex) -{ - pthread_mutex_t mx = *mutex; - int result = 0; - - /* - * Let the system deal with invalid pointers. - */ - if (mx == NULL) - { - return EINVAL; - } - - if (mx->kind >= 0 - || (PTW32_INTERLOCKED_LONG)PTW32_ROBUST_INCONSISTENT != PTW32_INTERLOCKED_COMPARE_EXCHANGE_LONG( - (PTW32_INTERLOCKED_LONGPTR)&mx->robustNode->stateInconsistent, - (PTW32_INTERLOCKED_LONG)PTW32_ROBUST_CONSISTENT, - (PTW32_INTERLOCKED_LONG)PTW32_ROBUST_INCONSISTENT)) - { - result = EINVAL; - } - - return (result); -} - diff --git a/platform/win32/msvc/external/pthreads.2/pthread_mutex_destroy.c b/platform/win32/msvc/external/pthreads.2/pthread_mutex_destroy.c deleted file mode 100644 index da4225da824..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_mutex_destroy.c +++ /dev/null @@ -1,148 +0,0 @@ -/* - * pthread_mutex_destroy.c - * - * Description: - * This translation unit implements mutual exclusion (mutex) primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_mutex_destroy (pthread_mutex_t * mutex) -{ - int result = 0; - pthread_mutex_t mx; - - /* - * Let the system deal with invalid pointers. - */ - - /* - * Check to see if we have something to delete. - */ - if (*mutex < PTHREAD_ERRORCHECK_MUTEX_INITIALIZER) - { - mx = *mutex; - - result = pthread_mutex_trylock (&mx); - - /* - * If trylock succeeded and the mutex is not recursively locked it - * can be destroyed. - */ - if (0 == result || ENOTRECOVERABLE == result) - { - if (mx->kind != PTHREAD_MUTEX_RECURSIVE || 1 == mx->recursive_count) - { - /* - * FIXME!!! - * The mutex isn't held by another thread but we could still - * be too late invalidating the mutex below since another thread - * may already have entered mutex_lock and the check for a valid - * *mutex != NULL. - */ - *mutex = NULL; - - result = (0 == result)?pthread_mutex_unlock(&mx):0; - - if (0 == result) - { - if (mx->robustNode != NULL) - { - free(mx->robustNode); - } - if (!CloseHandle (mx->event)) - { - *mutex = mx; - result = EINVAL; - } - else - { - free (mx); - } - } - else - { - /* - * Restore the mutex before we return the error. - */ - *mutex = mx; - } - } - else /* mx->recursive_count > 1 */ - { - /* - * The mutex must be recursive and already locked by us (this thread). - */ - mx->recursive_count--; /* Undo effect of pthread_mutex_trylock() above */ - result = EBUSY; - } - } - } - else - { - ptw32_mcs_local_node_t node; - - /* - * See notes in ptw32_mutex_check_need_init() above also. - */ - - ptw32_mcs_lock_acquire(&ptw32_mutex_test_init_lock, &node); - - /* - * Check again. - */ - if (*mutex >= PTHREAD_ERRORCHECK_MUTEX_INITIALIZER) - { - /* - * This is all we need to do to destroy a statically - * initialised mutex that has not yet been used (initialised). - * If we get to here, another thread - * waiting to initialise this mutex will get an EINVAL. - */ - *mutex = NULL; - } - else - { - /* - * The mutex has been initialised while we were waiting - * so assume it's in use. - */ - result = EBUSY; - } - ptw32_mcs_lock_release(&node); - } - - return (result); -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_mutex_init.c b/platform/win32/msvc/external/pthreads.2/pthread_mutex_init.c deleted file mode 100644 index cbdd8424931..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_mutex_init.c +++ /dev/null @@ -1,130 +0,0 @@ -/* - * pthread_mutex_init.c - * - * Description: - * This translation unit implements mutual exclusion (mutex) primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_mutex_init (pthread_mutex_t * mutex, const pthread_mutexattr_t * attr) -{ - int result = 0; - pthread_mutex_t mx; - - if (mutex == NULL) - { - return EINVAL; - } - - if (attr != NULL && *attr != NULL) - { - if ((*attr)->pshared == PTHREAD_PROCESS_SHARED) - { - /* - * Creating mutex that can be shared between - * processes. - */ -#if _POSIX_THREAD_PROCESS_SHARED >= 0 - - /* - * Not implemented yet. - */ - -#error ERROR [__FILE__, line __LINE__]: Process shared mutexes are not supported yet. - -#else - - return ENOSYS; - -#endif /* _POSIX_THREAD_PROCESS_SHARED */ - } - } - - mx = (pthread_mutex_t) calloc (1, sizeof (*mx)); - - if (mx == NULL) - { - result = ENOMEM; - } - else - { - mx->lock_idx = 0; - mx->recursive_count = 0; - mx->robustNode = NULL; - if (attr == NULL || *attr == NULL) - { - mx->kind = PTHREAD_MUTEX_DEFAULT; - } - else - { - mx->kind = (*attr)->kind; - if ((*attr)->robustness == PTHREAD_MUTEX_ROBUST) - { - /* - * Use the negative range to represent robust types. - * Replaces a memory fetch with a register negate and incr - * in pthread_mutex_lock etc. - * - * Map 0,1,..,n to -1,-2,..,(-n)-1 - */ - mx->kind = -mx->kind - 1; - - mx->robustNode = (ptw32_robust_node_t*) malloc(sizeof(ptw32_robust_node_t)); - mx->robustNode->stateInconsistent = PTW32_ROBUST_CONSISTENT; - mx->robustNode->mx = mx; - mx->robustNode->next = NULL; - mx->robustNode->prev = NULL; - } - } - - mx->ownerThread.p = NULL; - - mx->event = CreateEvent (NULL, PTW32_FALSE, /* manual reset = No */ - PTW32_FALSE, /* initial state = not signaled */ - NULL); /* event name */ - - if (0 == mx->event) - { - result = ENOSPC; - free (mx); - mx = NULL; - } - } - - *mutex = mx; - - return (result); -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_mutex_lock.c b/platform/win32/msvc/external/pthreads.2/pthread_mutex_lock.c deleted file mode 100644 index 09a4117a0d0..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_mutex_lock.c +++ /dev/null @@ -1,269 +0,0 @@ -/* - * pthread_mutex_lock.c - * - * Description: - * This translation unit implements mutual exclusion (mutex) primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#if !defined(_UWIN) -/*# include */ -#endif -#include "pthread.h" -#include "implement.h" - -int -pthread_mutex_lock (pthread_mutex_t * mutex) -{ - int kind; - pthread_mutex_t mx; - int result = 0; - - /* - * Let the system deal with invalid pointers. - */ - if (*mutex == NULL) - { - return EINVAL; - } - - /* - * We do a quick check to see if we need to do more work - * to initialise a static mutex. We check - * again inside the guarded section of ptw32_mutex_check_need_init() - * to avoid race conditions. - */ - if (*mutex >= PTHREAD_ERRORCHECK_MUTEX_INITIALIZER) - { - if ((result = ptw32_mutex_check_need_init (mutex)) != 0) - { - return (result); - } - } - - mx = *mutex; - kind = mx->kind; - - if (kind >= 0) - { - /* Non-robust */ - if (PTHREAD_MUTEX_NORMAL == kind) - { - if ((PTW32_INTERLOCKED_LONG) PTW32_INTERLOCKED_EXCHANGE_LONG( - (PTW32_INTERLOCKED_LONGPTR) &mx->lock_idx, - (PTW32_INTERLOCKED_LONG) 1) != 0) - { - while ((PTW32_INTERLOCKED_LONG) PTW32_INTERLOCKED_EXCHANGE_LONG( - (PTW32_INTERLOCKED_LONGPTR) &mx->lock_idx, - (PTW32_INTERLOCKED_LONG) -1) != 0) - { - if (WAIT_OBJECT_0 != WaitForSingleObject (mx->event, INFINITE)) - { - result = EINVAL; - break; - } - } - } - } - else - { - pthread_t self = pthread_self(); - - if ((PTW32_INTERLOCKED_LONG) PTW32_INTERLOCKED_COMPARE_EXCHANGE_LONG( - (PTW32_INTERLOCKED_LONGPTR) &mx->lock_idx, - (PTW32_INTERLOCKED_LONG) 1, - (PTW32_INTERLOCKED_LONG) 0) == 0) - { - mx->recursive_count = 1; - mx->ownerThread = self; - } - else - { - if (pthread_equal (mx->ownerThread, self)) - { - if (kind == PTHREAD_MUTEX_RECURSIVE) - { - mx->recursive_count++; - } - else - { - result = EDEADLK; - } - } - else - { - while ((PTW32_INTERLOCKED_LONG) PTW32_INTERLOCKED_EXCHANGE_LONG( - (PTW32_INTERLOCKED_LONGPTR) &mx->lock_idx, - (PTW32_INTERLOCKED_LONG) -1) != 0) - { - if (WAIT_OBJECT_0 != WaitForSingleObject (mx->event, INFINITE)) - { - result = EINVAL; - break; - } - } - - if (0 == result) - { - mx->recursive_count = 1; - mx->ownerThread = self; - } - } - } - } - } - else - { - /* - * Robust types - * All types record the current owner thread. - * The mutex is added to a per thread list when ownership is acquired. - */ - ptw32_robust_state_t* statePtr = &mx->robustNode->stateInconsistent; - - if ((PTW32_INTERLOCKED_LONG)PTW32_ROBUST_NOTRECOVERABLE == PTW32_INTERLOCKED_EXCHANGE_ADD_LONG( - (PTW32_INTERLOCKED_LONGPTR)statePtr, - (PTW32_INTERLOCKED_LONG)0)) - { - result = ENOTRECOVERABLE; - } - else - { - pthread_t self = pthread_self(); - - kind = -kind - 1; /* Convert to non-robust range */ - - if (PTHREAD_MUTEX_NORMAL == kind) - { - if ((PTW32_INTERLOCKED_LONG) PTW32_INTERLOCKED_EXCHANGE_LONG( - (PTW32_INTERLOCKED_LONGPTR) &mx->lock_idx, - (PTW32_INTERLOCKED_LONG) 1) != 0) - { - while (0 == (result = ptw32_robust_mutex_inherit(mutex)) - && (PTW32_INTERLOCKED_LONG) PTW32_INTERLOCKED_EXCHANGE_LONG( - (PTW32_INTERLOCKED_LONGPTR) &mx->lock_idx, - (PTW32_INTERLOCKED_LONG) -1) != 0) - { - if (WAIT_OBJECT_0 != WaitForSingleObject (mx->event, INFINITE)) - { - result = EINVAL; - break; - } - if ((PTW32_INTERLOCKED_LONG)PTW32_ROBUST_NOTRECOVERABLE == - PTW32_INTERLOCKED_EXCHANGE_ADD_LONG( - (PTW32_INTERLOCKED_LONGPTR)statePtr, - (PTW32_INTERLOCKED_LONG)0)) - { - /* Unblock the next thread */ - SetEvent(mx->event); - result = ENOTRECOVERABLE; - break; - } - } - } - if (0 == result || EOWNERDEAD == result) - { - /* - * Add mutex to the per-thread robust mutex currently-held list. - * If the thread terminates, all mutexes in this list will be unlocked. - */ - ptw32_robust_mutex_add(mutex, self); - } - } - else - { - if ((PTW32_INTERLOCKED_LONG) PTW32_INTERLOCKED_COMPARE_EXCHANGE_LONG( - (PTW32_INTERLOCKED_LONGPTR) &mx->lock_idx, - (PTW32_INTERLOCKED_LONG) 1, - (PTW32_INTERLOCKED_LONG) 0) == 0) - { - mx->recursive_count = 1; - /* - * Add mutex to the per-thread robust mutex currently-held list. - * If the thread terminates, all mutexes in this list will be unlocked. - */ - ptw32_robust_mutex_add(mutex, self); - } - else - { - if (pthread_equal (mx->ownerThread, self)) - { - if (PTHREAD_MUTEX_RECURSIVE == kind) - { - mx->recursive_count++; - } - else - { - result = EDEADLK; - } - } - else - { - while (0 == (result = ptw32_robust_mutex_inherit(mutex)) - && (PTW32_INTERLOCKED_LONG) PTW32_INTERLOCKED_EXCHANGE_LONG( - (PTW32_INTERLOCKED_LONGPTR) &mx->lock_idx, - (PTW32_INTERLOCKED_LONG) -1) != 0) - { - if (WAIT_OBJECT_0 != WaitForSingleObject (mx->event, INFINITE)) - { - result = EINVAL; - break; - } - if ((PTW32_INTERLOCKED_LONG)PTW32_ROBUST_NOTRECOVERABLE == - PTW32_INTERLOCKED_EXCHANGE_ADD_LONG( - (PTW32_INTERLOCKED_LONGPTR)statePtr, - (PTW32_INTERLOCKED_LONG)0)) - { - /* Unblock the next thread */ - SetEvent(mx->event); - result = ENOTRECOVERABLE; - break; - } - } - - if (0 == result || EOWNERDEAD == result) - { - mx->recursive_count = 1; - /* - * Add mutex to the per-thread robust mutex currently-held list. - * If the thread terminates, all mutexes in this list will be unlocked. - */ - ptw32_robust_mutex_add(mutex, self); - } - } - } - } - } - } - - return (result); -} - diff --git a/platform/win32/msvc/external/pthreads.2/pthread_mutex_timedlock.c b/platform/win32/msvc/external/pthreads.2/pthread_mutex_timedlock.c deleted file mode 100644 index 71362311956..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_mutex_timedlock.c +++ /dev/null @@ -1,324 +0,0 @@ -/* - * pthread_mutex_timedlock.c - * - * Description: - * This translation unit implements mutual exclusion (mutex) primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -static INLINE int -ptw32_timed_eventwait (HANDLE event, const struct timespec *abstime) - /* - * ------------------------------------------------------ - * DESCRIPTION - * This function waits on an event until signaled or until - * abstime passes. - * If abstime has passed when this routine is called then - * it returns a result to indicate this. - * - * If 'abstime' is a NULL pointer then this function will - * block until it can successfully decrease the value or - * until interrupted by a signal. - * - * This routine is not a cancelation point. - * - * RESULTS - * 0 successfully signaled, - * ETIMEDOUT abstime passed - * EINVAL 'event' is not a valid event, - * - * ------------------------------------------------------ - */ -{ - - DWORD milliseconds; - DWORD status; - - if (event == NULL) - { - return EINVAL; - } - else - { - if (abstime == NULL) - { - milliseconds = INFINITE; - } - else - { - /* - * Calculate timeout as milliseconds from current system time. - */ - milliseconds = ptw32_relmillisecs (abstime); - } - - status = WaitForSingleObject (event, milliseconds); - - if (status == WAIT_OBJECT_0) - { - return 0; - } - else if (status == WAIT_TIMEOUT) - { - return ETIMEDOUT; - } - else - { - return EINVAL; - } - } - - return 0; - -} /* ptw32_timed_semwait */ - - -int -pthread_mutex_timedlock (pthread_mutex_t * mutex, - const struct timespec *abstime) -{ - pthread_mutex_t mx; - int kind; - int result = 0; - - /* - * Let the system deal with invalid pointers. - */ - - /* - * We do a quick check to see if we need to do more work - * to initialise a static mutex. We check - * again inside the guarded section of ptw32_mutex_check_need_init() - * to avoid race conditions. - */ - if (*mutex >= PTHREAD_ERRORCHECK_MUTEX_INITIALIZER) - { - if ((result = ptw32_mutex_check_need_init (mutex)) != 0) - { - return (result); - } - } - - mx = *mutex; - kind = mx->kind; - - if (kind >= 0) - { - if (mx->kind == PTHREAD_MUTEX_NORMAL) - { - if ((PTW32_INTERLOCKED_LONG) PTW32_INTERLOCKED_EXCHANGE_LONG( - (PTW32_INTERLOCKED_LONGPTR) &mx->lock_idx, - (PTW32_INTERLOCKED_LONG) 1) != 0) - { - while ((PTW32_INTERLOCKED_LONG) PTW32_INTERLOCKED_EXCHANGE_LONG( - (PTW32_INTERLOCKED_LONGPTR) &mx->lock_idx, - (PTW32_INTERLOCKED_LONG) -1) != 0) - { - if (0 != (result = ptw32_timed_eventwait (mx->event, abstime))) - { - return result; - } - } - } - } - else - { - pthread_t self = pthread_self(); - - if ((PTW32_INTERLOCKED_LONG) PTW32_INTERLOCKED_COMPARE_EXCHANGE_LONG( - (PTW32_INTERLOCKED_LONGPTR) &mx->lock_idx, - (PTW32_INTERLOCKED_LONG) 1, - (PTW32_INTERLOCKED_LONG) 0) == 0) - { - mx->recursive_count = 1; - mx->ownerThread = self; - } - else - { - if (pthread_equal (mx->ownerThread, self)) - { - if (mx->kind == PTHREAD_MUTEX_RECURSIVE) - { - mx->recursive_count++; - } - else - { - return EDEADLK; - } - } - else - { - while ((PTW32_INTERLOCKED_LONG) PTW32_INTERLOCKED_EXCHANGE_LONG( - (PTW32_INTERLOCKED_LONGPTR) &mx->lock_idx, - (PTW32_INTERLOCKED_LONG) -1) != 0) - { - if (0 != (result = ptw32_timed_eventwait (mx->event, abstime))) - { - return result; - } - } - - mx->recursive_count = 1; - mx->ownerThread = self; - } - } - } - } - else - { - /* - * Robust types - * All types record the current owner thread. - * The mutex is added to a per thread list when ownership is acquired. - */ - ptw32_robust_state_t* statePtr = &mx->robustNode->stateInconsistent; - - if ((PTW32_INTERLOCKED_LONG)PTW32_ROBUST_NOTRECOVERABLE == PTW32_INTERLOCKED_EXCHANGE_ADD_LONG( - (PTW32_INTERLOCKED_LONGPTR)statePtr, - (PTW32_INTERLOCKED_LONG)0)) - { - result = ENOTRECOVERABLE; - } - else - { - pthread_t self = pthread_self(); - - kind = -kind - 1; /* Convert to non-robust range */ - - if (PTHREAD_MUTEX_NORMAL == kind) - { - if ((PTW32_INTERLOCKED_LONG) PTW32_INTERLOCKED_EXCHANGE_LONG( - (PTW32_INTERLOCKED_LONGPTR) &mx->lock_idx, - (PTW32_INTERLOCKED_LONG) 1) != 0) - { - while (0 == (result = ptw32_robust_mutex_inherit(mutex)) - && (PTW32_INTERLOCKED_LONG) PTW32_INTERLOCKED_EXCHANGE_LONG( - (PTW32_INTERLOCKED_LONGPTR) &mx->lock_idx, - (PTW32_INTERLOCKED_LONG) -1) != 0) - { - if (0 != (result = ptw32_timed_eventwait (mx->event, abstime))) - { - return result; - } - if ((PTW32_INTERLOCKED_LONG)PTW32_ROBUST_NOTRECOVERABLE == - PTW32_INTERLOCKED_EXCHANGE_ADD_LONG( - (PTW32_INTERLOCKED_LONGPTR)statePtr, - (PTW32_INTERLOCKED_LONG)0)) - { - /* Unblock the next thread */ - SetEvent(mx->event); - result = ENOTRECOVERABLE; - break; - } - } - - if (0 == result || EOWNERDEAD == result) - { - /* - * Add mutex to the per-thread robust mutex currently-held list. - * If the thread terminates, all mutexes in this list will be unlocked. - */ - ptw32_robust_mutex_add(mutex, self); - } - } - } - else - { - pthread_t self = pthread_self(); - - if (0 == (PTW32_INTERLOCKED_LONG) PTW32_INTERLOCKED_COMPARE_EXCHANGE_LONG( - (PTW32_INTERLOCKED_LONGPTR) &mx->lock_idx, - (PTW32_INTERLOCKED_LONG) 1, - (PTW32_INTERLOCKED_LONG) 0)) - { - mx->recursive_count = 1; - /* - * Add mutex to the per-thread robust mutex currently-held list. - * If the thread terminates, all mutexes in this list will be unlocked. - */ - ptw32_robust_mutex_add(mutex, self); - } - else - { - if (pthread_equal (mx->ownerThread, self)) - { - if (PTHREAD_MUTEX_RECURSIVE == kind) - { - mx->recursive_count++; - } - else - { - return EDEADLK; - } - } - else - { - while (0 == (result = ptw32_robust_mutex_inherit(mutex)) - && (PTW32_INTERLOCKED_LONG) PTW32_INTERLOCKED_EXCHANGE_LONG( - (PTW32_INTERLOCKED_LONGPTR) &mx->lock_idx, - (PTW32_INTERLOCKED_LONG) -1) != 0) - { - if (0 != (result = ptw32_timed_eventwait (mx->event, abstime))) - { - return result; - } - } - - if ((PTW32_INTERLOCKED_LONG)PTW32_ROBUST_NOTRECOVERABLE == - PTW32_INTERLOCKED_EXCHANGE_ADD_LONG( - (PTW32_INTERLOCKED_LONGPTR)statePtr, - (PTW32_INTERLOCKED_LONG)0)) - { - /* Unblock the next thread */ - SetEvent(mx->event); - result = ENOTRECOVERABLE; - } - else if (0 == result || EOWNERDEAD == result) - { - mx->recursive_count = 1; - /* - * Add mutex to the per-thread robust mutex currently-held list. - * If the thread terminates, all mutexes in this list will be unlocked. - */ - ptw32_robust_mutex_add(mutex, self); - } - } - } - } - } - } - - return result; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_mutex_trylock.c b/platform/win32/msvc/external/pthreads.2/pthread_mutex_trylock.c deleted file mode 100644 index 4c786c9629e..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_mutex_trylock.c +++ /dev/null @@ -1,154 +0,0 @@ -/* - * pthread_mutex_trylock.c - * - * Description: - * This translation unit implements mutual exclusion (mutex) primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_mutex_trylock (pthread_mutex_t * mutex) -{ - pthread_mutex_t mx; - int kind; - int result = 0; - - /* - * Let the system deal with invalid pointers. - */ - - /* - * We do a quick check to see if we need to do more work - * to initialise a static mutex. We check - * again inside the guarded section of ptw32_mutex_check_need_init() - * to avoid race conditions. - */ - if (*mutex >= PTHREAD_ERRORCHECK_MUTEX_INITIALIZER) - { - if ((result = ptw32_mutex_check_need_init (mutex)) != 0) - { - return (result); - } - } - - mx = *mutex; - kind = mx->kind; - - if (kind >= 0) - { - /* Non-robust */ - if (0 == (PTW32_INTERLOCKED_LONG) PTW32_INTERLOCKED_COMPARE_EXCHANGE_LONG ( - (PTW32_INTERLOCKED_LONGPTR) &mx->lock_idx, - (PTW32_INTERLOCKED_LONG) 1, - (PTW32_INTERLOCKED_LONG) 0)) - { - if (kind != PTHREAD_MUTEX_NORMAL) - { - mx->recursive_count = 1; - mx->ownerThread = pthread_self (); - } - } - else - { - if (kind == PTHREAD_MUTEX_RECURSIVE && - pthread_equal (mx->ownerThread, pthread_self ())) - { - mx->recursive_count++; - } - else - { - result = EBUSY; - } - } - } - else - { - /* - * Robust types - * All types record the current owner thread. - * The mutex is added to a per thread list when ownership is acquired. - */ - pthread_t self; - ptw32_robust_state_t* statePtr = &mx->robustNode->stateInconsistent; - - if ((PTW32_INTERLOCKED_LONG)PTW32_ROBUST_NOTRECOVERABLE == - PTW32_INTERLOCKED_EXCHANGE_ADD_LONG( - (PTW32_INTERLOCKED_LONGPTR)statePtr, - (PTW32_INTERLOCKED_LONG)0)) - { - return ENOTRECOVERABLE; - } - - self = pthread_self(); - kind = -kind - 1; /* Convert to non-robust range */ - - if (0 == (PTW32_INTERLOCKED_LONG) PTW32_INTERLOCKED_COMPARE_EXCHANGE_LONG ( - (PTW32_INTERLOCKED_LONGPTR) &mx->lock_idx, - (PTW32_INTERLOCKED_LONG) 1, - (PTW32_INTERLOCKED_LONG) 0)) - { - if (kind != PTHREAD_MUTEX_NORMAL) - { - mx->recursive_count = 1; - } - ptw32_robust_mutex_add(mutex, self); - } - else - { - if (PTHREAD_MUTEX_RECURSIVE == kind && - pthread_equal (mx->ownerThread, pthread_self ())) - { - mx->recursive_count++; - } - else - { - if (EOWNERDEAD == (result = ptw32_robust_mutex_inherit(mutex))) - { - mx->recursive_count = 1; - ptw32_robust_mutex_add(mutex, self); - } - else - { - if (0 == result) - { - result = EBUSY; - } - } - } - } - } - - return (result); -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_mutex_unlock.c b/platform/win32/msvc/external/pthreads.2/pthread_mutex_unlock.c deleted file mode 100644 index 9806af31cfb..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_mutex_unlock.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * pthread_mutex_unlock.c - * - * Description: - * This translation unit implements mutual exclusion (mutex) primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_mutex_unlock (pthread_mutex_t * mutex) -{ - int result = 0; - int kind; - pthread_mutex_t mx; - - /* - * Let the system deal with invalid pointers. - */ - - mx = *mutex; - - /* - * If the thread calling us holds the mutex then there is no - * race condition. If another thread holds the - * lock then we shouldn't be in here. - */ - if (mx < PTHREAD_ERRORCHECK_MUTEX_INITIALIZER) - { - kind = mx->kind; - - if (kind >= 0) - { - if (kind == PTHREAD_MUTEX_NORMAL) - { - LONG idx; - - idx = (LONG) PTW32_INTERLOCKED_EXCHANGE_LONG ((PTW32_INTERLOCKED_LONGPTR)&mx->lock_idx, - (PTW32_INTERLOCKED_LONG)0); - if (idx != 0) - { - if (idx < 0) - { - /* - * Someone may be waiting on that mutex. - */ - if (SetEvent (mx->event) == 0) - { - result = EINVAL; - } - } - } - } - else - { - if (pthread_equal (mx->ownerThread, pthread_self())) - { - if (kind != PTHREAD_MUTEX_RECURSIVE - || 0 == --mx->recursive_count) - { - mx->ownerThread.p = NULL; - - if ((LONG) PTW32_INTERLOCKED_EXCHANGE_LONG ((PTW32_INTERLOCKED_LONGPTR)&mx->lock_idx, - (PTW32_INTERLOCKED_LONG)0) < 0L) - { - /* Someone may be waiting on that mutex */ - if (SetEvent (mx->event) == 0) - { - result = EINVAL; - } - } - } - } - else - { - result = EPERM; - } - } - } - else - { - /* Robust types */ - pthread_t self = pthread_self(); - kind = -kind - 1; /* Convert to non-robust range */ - - /* - * The thread must own the lock regardless of type if the mutex - * is robust. - */ - if (pthread_equal (mx->ownerThread, self)) - { - PTW32_INTERLOCKED_COMPARE_EXCHANGE_LONG((PTW32_INTERLOCKED_LONGPTR) &mx->robustNode->stateInconsistent, - (PTW32_INTERLOCKED_LONG)PTW32_ROBUST_NOTRECOVERABLE, - (PTW32_INTERLOCKED_LONG)PTW32_ROBUST_INCONSISTENT); - if (PTHREAD_MUTEX_NORMAL == kind) - { - ptw32_robust_mutex_remove(mutex, NULL); - - if ((LONG) PTW32_INTERLOCKED_EXCHANGE_LONG((PTW32_INTERLOCKED_LONGPTR) &mx->lock_idx, - (PTW32_INTERLOCKED_LONG) 0) < 0) - { - /* - * Someone may be waiting on that mutex. - */ - if (SetEvent (mx->event) == 0) - { - result = EINVAL; - } - } - } - else - { - if (kind != PTHREAD_MUTEX_RECURSIVE - || 0 == --mx->recursive_count) - { - ptw32_robust_mutex_remove(mutex, NULL); - - if ((LONG) PTW32_INTERLOCKED_EXCHANGE_LONG((PTW32_INTERLOCKED_LONGPTR) &mx->lock_idx, - (PTW32_INTERLOCKED_LONG) 0) < 0) - { - /* - * Someone may be waiting on that mutex. - */ - if (SetEvent (mx->event) == 0) - { - result = EINVAL; - } - } - } - } - } - else - { - result = EPERM; - } - } - } - else if (mx != PTHREAD_MUTEX_INITIALIZER) - { - result = EINVAL; - } - - return (result); -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_destroy.c b/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_destroy.c deleted file mode 100644 index 5821f41396f..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_destroy.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * pthread_mutexattr_destroy.c - * - * Description: - * This translation unit implements mutual exclusion (mutex) primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_mutexattr_destroy (pthread_mutexattr_t * attr) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * Destroys a mutex attributes object. The object can - * no longer be used. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_mutexattr_t - * - * - * DESCRIPTION - * Destroys a mutex attributes object. The object can - * no longer be used. - * - * NOTES: - * 1) Does not affect mutexes created using 'attr' - * - * RESULTS - * 0 successfully released attr, - * EINVAL 'attr' is invalid. - * - * ------------------------------------------------------ - */ -{ - int result = 0; - - if (attr == NULL || *attr == NULL) - { - result = EINVAL; - } - else - { - pthread_mutexattr_t ma = *attr; - - *attr = NULL; - free (ma); - } - - return (result); -} /* pthread_mutexattr_destroy */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_getkind_np.c b/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_getkind_np.c deleted file mode 100644 index 51508fe7538..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_getkind_np.c +++ /dev/null @@ -1,44 +0,0 @@ -/* - * pthread_mutexattr_getkind_np.c - * - * Description: - * This translation unit implements non-portable thread functions. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -int -pthread_mutexattr_getkind_np (pthread_mutexattr_t * attr, int *kind) -{ - return pthread_mutexattr_gettype (attr, kind); -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_getpshared.c b/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_getpshared.c deleted file mode 100644 index 64d195254e1..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_getpshared.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * pthread_mutexattr_getpshared.c - * - * Description: - * This translation unit implements mutual exclusion (mutex) primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_mutexattr_getpshared (const pthread_mutexattr_t * attr, int *pshared) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * Determine whether mutexes created with 'attr' can be - * shared between processes. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_mutexattr_t - * - * pshared - * will be set to one of: - * - * PTHREAD_PROCESS_SHARED - * May be shared if in shared memory - * - * PTHREAD_PROCESS_PRIVATE - * Cannot be shared. - * - * - * DESCRIPTION - * Mutexes creatd with 'attr' can be shared between - * processes if pthread_mutex_t variable is allocated - * in memory shared by these processes. - * NOTES: - * 1) pshared mutexes MUST be allocated in shared - * memory. - * 2) The following macro is defined if shared mutexes - * are supported: - * _POSIX_THREAD_PROCESS_SHARED - * - * RESULTS - * 0 successfully retrieved attribute, - * EINVAL 'attr' is invalid, - * - * ------------------------------------------------------ - */ -{ - int result; - - if ((attr != NULL && *attr != NULL) && (pshared != NULL)) - { - *pshared = (*attr)->pshared; - result = 0; - } - else - { - result = EINVAL; - } - - return (result); - -} /* pthread_mutexattr_getpshared */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_getrobust.c b/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_getrobust.c deleted file mode 100644 index 989bc2ab40a..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_getrobust.c +++ /dev/null @@ -1,113 +0,0 @@ -/* - * pthread_mutexattr_getrobust.c - * - * Description: - * This translation unit implements mutual exclusion (mutex) primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_mutexattr_getrobust (const pthread_mutexattr_t * attr, int * robust) - /* - * ------------------------------------------------------ - * - * DOCPUBLIC - * The pthread_mutexattr_setrobust() and - * pthread_mutexattr_getrobust() functions respectively set and - * get the mutex robust attribute. This attribute is set in the - * robust parameter to these functions. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_mutexattr_t - * - * robust - * must be one of: - * - * PTHREAD_MUTEX_STALLED - * - * PTHREAD_MUTEX_ROBUST - * - * DESCRIPTION - * The pthread_mutexattr_setrobust() and - * pthread_mutexattr_getrobust() functions respectively set and - * get the mutex robust attribute. This attribute is set in the - * robust parameter to these functions. The default value of the - * robust attribute is PTHREAD_MUTEX_STALLED. - * - * The robustness of mutex is contained in the robustness attribute - * of the mutex attributes. Valid mutex robustness values are: - * - * PTHREAD_MUTEX_STALLED - * No special actions are taken if the owner of the mutex is - * terminated while holding the mutex lock. This can lead to - * deadlocks if no other thread can unlock the mutex. - * This is the default value. - * - * PTHREAD_MUTEX_ROBUST - * If the process containing the owning thread of a robust mutex - * terminates while holding the mutex lock, the next thread that - * acquires the mutex shall be notified about the termination by - * the return value [EOWNERDEAD] from the locking function. If the - * owning thread of a robust mutex terminates while holding the mutex - * lock, the next thread that acquires the mutex may be notified - * about the termination by the return value [EOWNERDEAD]. The - * notified thread can then attempt to mark the state protected by - * the mutex as consistent again by a call to - * pthread_mutex_consistent(). After a subsequent successful call to - * pthread_mutex_unlock(), the mutex lock shall be released and can - * be used normally by other threads. If the mutex is unlocked without - * a call to pthread_mutex_consistent(), it shall be in a permanently - * unusable state and all attempts to lock the mutex shall fail with - * the error [ENOTRECOVERABLE]. The only permissible operation on such - * a mutex is pthread_mutex_destroy(). - * - * RESULTS - * 0 successfully set attribute, - * EINVAL 'attr' or 'robust' is invalid, - * - * ------------------------------------------------------ - */ -{ - int result = EINVAL; - - if ((attr != NULL && *attr != NULL && robust != NULL)) - { - *robust = (*attr)->robustness; - result = 0; - } - - return (result); -} /* pthread_mutexattr_getrobust */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_gettype.c b/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_gettype.c deleted file mode 100644 index 6f805e503e3..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_gettype.c +++ /dev/null @@ -1,56 +0,0 @@ -/* - * pthread_mutexattr_gettype.c - * - * Description: - * This translation unit implements mutual exclusion (mutex) primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_mutexattr_gettype (const pthread_mutexattr_t * attr, int *kind) -{ - int result = 0; - - if (attr != NULL && *attr != NULL && kind != NULL) - { - *kind = (*attr)->kind; - } - else - { - result = EINVAL; - } - - return (result); -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_init.c b/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_init.c deleted file mode 100644 index 3e7a1a27e9d..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_init.c +++ /dev/null @@ -1,86 +0,0 @@ -/* - * pthread_mutexattr_init.c - * - * Description: - * This translation unit implements mutual exclusion (mutex) primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_mutexattr_init (pthread_mutexattr_t * attr) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * Initializes a mutex attributes object with default - * attributes. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_mutexattr_t - * - * - * DESCRIPTION - * Initializes a mutex attributes object with default - * attributes. - * - * NOTES: - * 1) Used to define mutex types - * - * RESULTS - * 0 successfully initialized attr, - * ENOMEM insufficient memory for attr. - * - * ------------------------------------------------------ - */ -{ - int result = 0; - pthread_mutexattr_t ma; - - ma = (pthread_mutexattr_t) calloc (1, sizeof (*ma)); - - if (ma == NULL) - { - result = ENOMEM; - } - else - { - ma->pshared = PTHREAD_PROCESS_PRIVATE; - ma->kind = PTHREAD_MUTEX_DEFAULT; - } - - *attr = ma; - - return (result); -} /* pthread_mutexattr_init */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_setkind_np.c b/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_setkind_np.c deleted file mode 100644 index 25549ddea94..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_setkind_np.c +++ /dev/null @@ -1,44 +0,0 @@ -/* - * pthread_mutexattr_setkind_np.c - * - * Description: - * This translation unit implements non-portable thread functions. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -int -pthread_mutexattr_setkind_np (pthread_mutexattr_t * attr, int kind) -{ - return pthread_mutexattr_settype (attr, kind); -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_setpshared.c b/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_setpshared.c deleted file mode 100644 index 7ca78d10b49..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_setpshared.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - * pthread_mutexattr_setpshared.c - * - * Description: - * This translation unit implements mutual exclusion (mutex) primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_mutexattr_setpshared (pthread_mutexattr_t * attr, int pshared) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * Mutexes created with 'attr' can be shared between - * processes if pthread_mutex_t variable is allocated - * in memory shared by these processes. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_mutexattr_t - * - * pshared - * must be one of: - * - * PTHREAD_PROCESS_SHARED - * May be shared if in shared memory - * - * PTHREAD_PROCESS_PRIVATE - * Cannot be shared. - * - * DESCRIPTION - * Mutexes creatd with 'attr' can be shared between - * processes if pthread_mutex_t variable is allocated - * in memory shared by these processes. - * - * NOTES: - * 1) pshared mutexes MUST be allocated in shared - * memory. - * - * 2) The following macro is defined if shared mutexes - * are supported: - * _POSIX_THREAD_PROCESS_SHARED - * - * RESULTS - * 0 successfully set attribute, - * EINVAL 'attr' or pshared is invalid, - * ENOSYS PTHREAD_PROCESS_SHARED not supported, - * - * ------------------------------------------------------ - */ -{ - int result; - - if ((attr != NULL && *attr != NULL) && - ((pshared == PTHREAD_PROCESS_SHARED) || - (pshared == PTHREAD_PROCESS_PRIVATE))) - { - if (pshared == PTHREAD_PROCESS_SHARED) - { - -#if !defined( _POSIX_THREAD_PROCESS_SHARED ) - - result = ENOSYS; - pshared = PTHREAD_PROCESS_PRIVATE; - -#else - - result = 0; - -#endif /* _POSIX_THREAD_PROCESS_SHARED */ - - } - else - { - result = 0; - } - - (*attr)->pshared = pshared; - } - else - { - result = EINVAL; - } - - return (result); - -} /* pthread_mutexattr_setpshared */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_setrobust.c b/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_setrobust.c deleted file mode 100644 index 0e8f3332ca0..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_setrobust.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - * pthread_mutexattr_setrobust.c - * - * Description: - * This translation unit implements mutual exclusion (mutex) primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_mutexattr_setrobust (pthread_mutexattr_t * attr, int robust) - /* - * ------------------------------------------------------ - * - * DOCPUBLIC - * The pthread_mutexattr_setrobust() and - * pthread_mutexattr_getrobust() functions respectively set and - * get the mutex robust attribute. This attribute is set in the - * robust parameter to these functions. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_mutexattr_t - * - * robust - * must be one of: - * - * PTHREAD_MUTEX_STALLED - * - * PTHREAD_MUTEX_ROBUST - * - * DESCRIPTION - * The pthread_mutexattr_setrobust() and - * pthread_mutexattr_getrobust() functions respectively set and - * get the mutex robust attribute. This attribute is set in the - * robust parameter to these functions. The default value of the - * robust attribute is PTHREAD_MUTEX_STALLED. - * - * The robustness of mutex is contained in the robustness attribute - * of the mutex attributes. Valid mutex robustness values are: - * - * PTHREAD_MUTEX_STALLED - * No special actions are taken if the owner of the mutex is - * terminated while holding the mutex lock. This can lead to - * deadlocks if no other thread can unlock the mutex. - * This is the default value. - * - * PTHREAD_MUTEX_ROBUST - * If the process containing the owning thread of a robust mutex - * terminates while holding the mutex lock, the next thread that - * acquires the mutex shall be notified about the termination by - * the return value [EOWNERDEAD] from the locking function. If the - * owning thread of a robust mutex terminates while holding the mutex - * lock, the next thread that acquires the mutex may be notified - * about the termination by the return value [EOWNERDEAD]. The - * notified thread can then attempt to mark the state protected by - * the mutex as consistent again by a call to - * pthread_mutex_consistent(). After a subsequent successful call to - * pthread_mutex_unlock(), the mutex lock shall be released and can - * be used normally by other threads. If the mutex is unlocked without - * a call to pthread_mutex_consistent(), it shall be in a permanently - * unusable state and all attempts to lock the mutex shall fail with - * the error [ENOTRECOVERABLE]. The only permissible operation on such - * a mutex is pthread_mutex_destroy(). - * - * RESULTS - * 0 successfully set attribute, - * EINVAL 'attr' or 'robust' is invalid, - * - * ------------------------------------------------------ - */ -{ - int result = EINVAL; - - if ((attr != NULL && *attr != NULL)) - { - switch (robust) - { - case PTHREAD_MUTEX_STALLED: - case PTHREAD_MUTEX_ROBUST: - (*attr)->robustness = robust; - result = 0; - break; - } - } - - return (result); -} /* pthread_mutexattr_setrobust */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_settype.c b/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_settype.c deleted file mode 100644 index 62f77ba2ae8..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_mutexattr_settype.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - * pthread_mutexattr_settype.c - * - * Description: - * This translation unit implements mutual exclusion (mutex) primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_mutexattr_settype (pthread_mutexattr_t * attr, int kind) - /* - * ------------------------------------------------------ - * - * DOCPUBLIC - * The pthread_mutexattr_settype() and - * pthread_mutexattr_gettype() functions respectively set and - * get the mutex type attribute. This attribute is set in the - * type parameter to these functions. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_mutexattr_t - * - * type - * must be one of: - * - * PTHREAD_MUTEX_DEFAULT - * - * PTHREAD_MUTEX_NORMAL - * - * PTHREAD_MUTEX_ERRORCHECK - * - * PTHREAD_MUTEX_RECURSIVE - * - * DESCRIPTION - * The pthread_mutexattr_settype() and - * pthread_mutexattr_gettype() functions respectively set and - * get the mutex type attribute. This attribute is set in the - * type parameter to these functions. The default value of the - * type attribute is PTHREAD_MUTEX_DEFAULT. - * - * The type of mutex is contained in the type attribute of the - * mutex attributes. Valid mutex types include: - * - * PTHREAD_MUTEX_NORMAL - * This type of mutex does not detect deadlock. A - * thread attempting to relock this mutex without - * first unlocking it will deadlock. Attempting to - * unlock a mutex locked by a different thread - * results in undefined behavior. Attempting to - * unlock an unlocked mutex results in undefined - * behavior. - * - * PTHREAD_MUTEX_ERRORCHECK - * This type of mutex provides error checking. A - * thread attempting to relock this mutex without - * first unlocking it will return with an error. A - * thread attempting to unlock a mutex which another - * thread has locked will return with an error. A - * thread attempting to unlock an unlocked mutex will - * return with an error. - * - * PTHREAD_MUTEX_DEFAULT - * Same as PTHREAD_MUTEX_NORMAL. - * - * PTHREAD_MUTEX_RECURSIVE - * A thread attempting to relock this mutex without - * first unlocking it will succeed in locking the - * mutex. The relocking deadlock which can occur with - * mutexes of type PTHREAD_MUTEX_NORMAL cannot occur - * with this type of mutex. Multiple locks of this - * mutex require the same number of unlocks to - * release the mutex before another thread can - * acquire the mutex. A thread attempting to unlock a - * mutex which another thread has locked will return - * with an error. A thread attempting to unlock an - * unlocked mutex will return with an error. This - * type of mutex is only supported for mutexes whose - * process shared attribute is - * PTHREAD_PROCESS_PRIVATE. - * - * RESULTS - * 0 successfully set attribute, - * EINVAL 'attr' or 'type' is invalid, - * - * ------------------------------------------------------ - */ -{ - int result = 0; - - if ((attr != NULL && *attr != NULL)) - { - switch (kind) - { - case PTHREAD_MUTEX_FAST_NP: - case PTHREAD_MUTEX_RECURSIVE_NP: - case PTHREAD_MUTEX_ERRORCHECK_NP: - (*attr)->kind = kind; - break; - default: - result = EINVAL; - break; - } - } - else - { - result = EINVAL; - } - - return (result); -} /* pthread_mutexattr_settype */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_num_processors_np.c b/platform/win32/msvc/external/pthreads.2/pthread_num_processors_np.c deleted file mode 100644 index 897a1b260a7..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_num_processors_np.c +++ /dev/null @@ -1,56 +0,0 @@ -/* - * pthread_num_processors_np.c - * - * Description: - * This translation unit implements non-portable thread functions. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -/* - * pthread_num_processors_np() - * - * Get the number of CPUs available to the process. - */ -int -pthread_num_processors_np (void) -{ - int count; - - if (ptw32_getprocessors (&count) != 0) - { - count = 1; - } - - return (count); -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_once.c b/platform/win32/msvc/external/pthreads.2/pthread_once.c deleted file mode 100644 index bebabe952c5..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_once.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - * pthread_once.c - * - * Description: - * This translation unit implements miscellaneous thread functions. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -int -pthread_once (pthread_once_t * once_control, void (PTW32_CDECL *init_routine) (void)) -{ - if (once_control == NULL || init_routine == NULL) - { - return EINVAL; - } - - if ((PTW32_INTERLOCKED_LONG)PTW32_FALSE == - (PTW32_INTERLOCKED_LONG)PTW32_INTERLOCKED_EXCHANGE_ADD_LONG((PTW32_INTERLOCKED_LONGPTR)&once_control->done, - (PTW32_INTERLOCKED_LONG)0)) /* MBR fence */ - { - ptw32_mcs_local_node_t node; - - ptw32_mcs_lock_acquire((ptw32_mcs_lock_t *)&once_control->lock, &node); - - if (!once_control->done) - { - -#if defined(_MSC_VER) && _MSC_VER < 1400 -#pragma inline_depth(0) -#endif - - pthread_cleanup_push(ptw32_mcs_lock_release, &node); - (*init_routine)(); - pthread_cleanup_pop(0); - -#if defined(_MSC_VER) && _MSC_VER < 1400 -#pragma inline_depth() -#endif - - once_control->done = PTW32_TRUE; - } - - ptw32_mcs_lock_release(&node); - } - - return 0; - -} /* pthread_once */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_rwlock_destroy.c b/platform/win32/msvc/external/pthreads.2/pthread_rwlock_destroy.c deleted file mode 100644 index 423365878c4..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_rwlock_destroy.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - * pthread_rwlock_destroy.c - * - * Description: - * This translation unit implements read/write lock primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include - -#include "pthread.h" -#include "implement.h" - -int -pthread_rwlock_destroy (pthread_rwlock_t * rwlock) -{ - pthread_rwlock_t rwl; - int result = 0, result1 = 0, result2 = 0; - - if (rwlock == NULL || *rwlock == NULL) - { - return EINVAL; - } - - if (*rwlock != PTHREAD_RWLOCK_INITIALIZER) - { - rwl = *rwlock; - - if (rwl->nMagic != PTW32_RWLOCK_MAGIC) - { - return EINVAL; - } - - if ((result = pthread_mutex_lock (&(rwl->mtxExclusiveAccess))) != 0) - { - return result; - } - - if ((result = - pthread_mutex_lock (&(rwl->mtxSharedAccessCompleted))) != 0) - { - (void) pthread_mutex_unlock (&(rwl->mtxExclusiveAccess)); - return result; - } - - /* - * Check whether any threads own/wait for the lock (wait for ex.access); - * report "BUSY" if so. - */ - if (rwl->nExclusiveAccessCount > 0 - || rwl->nSharedAccessCount > rwl->nCompletedSharedAccessCount) - { - result = pthread_mutex_unlock (&(rwl->mtxSharedAccessCompleted)); - result1 = pthread_mutex_unlock (&(rwl->mtxExclusiveAccess)); - result2 = EBUSY; - } - else - { - rwl->nMagic = 0; - - if ((result = - pthread_mutex_unlock (&(rwl->mtxSharedAccessCompleted))) != 0) - { - pthread_mutex_unlock (&rwl->mtxExclusiveAccess); - return result; - } - - if ((result = - pthread_mutex_unlock (&(rwl->mtxExclusiveAccess))) != 0) - { - return result; - } - - *rwlock = NULL; /* Invalidate rwlock before anything else */ - result = pthread_cond_destroy (&(rwl->cndSharedAccessCompleted)); - result1 = pthread_mutex_destroy (&(rwl->mtxSharedAccessCompleted)); - result2 = pthread_mutex_destroy (&(rwl->mtxExclusiveAccess)); - (void) free (rwl); - } - } - else - { - ptw32_mcs_local_node_t node; - /* - * See notes in ptw32_rwlock_check_need_init() above also. - */ - ptw32_mcs_lock_acquire(&ptw32_rwlock_test_init_lock, &node); - - /* - * Check again. - */ - if (*rwlock == PTHREAD_RWLOCK_INITIALIZER) - { - /* - * This is all we need to do to destroy a statically - * initialised rwlock that has not yet been used (initialised). - * If we get to here, another thread - * waiting to initialise this rwlock will get an EINVAL. - */ - *rwlock = NULL; - } - else - { - /* - * The rwlock has been initialised while we were waiting - * so assume it's in use. - */ - result = EBUSY; - } - - ptw32_mcs_lock_release(&node); - } - - return ((result != 0) ? result : ((result1 != 0) ? result1 : result2)); -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_rwlock_init.c b/platform/win32/msvc/external/pthreads.2/pthread_rwlock_init.c deleted file mode 100644 index c1d703d4d1b..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_rwlock_init.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * pthread_rwlock_init.c - * - * Description: - * This translation unit implements read/write lock primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include - -#include "pthread.h" -#include "implement.h" - -int -pthread_rwlock_init (pthread_rwlock_t * rwlock, - const pthread_rwlockattr_t * attr) -{ - int result; - pthread_rwlock_t rwl = 0; - - if (rwlock == NULL) - { - return EINVAL; - } - - if (attr != NULL && *attr != NULL) - { - result = EINVAL; /* Not supported */ - goto DONE; - } - - rwl = (pthread_rwlock_t) calloc (1, sizeof (*rwl)); - - if (rwl == NULL) - { - result = ENOMEM; - goto DONE; - } - - rwl->nSharedAccessCount = 0; - rwl->nExclusiveAccessCount = 0; - rwl->nCompletedSharedAccessCount = 0; - - result = pthread_mutex_init (&rwl->mtxExclusiveAccess, NULL); - if (result != 0) - { - goto FAIL0; - } - - result = pthread_mutex_init (&rwl->mtxSharedAccessCompleted, NULL); - if (result != 0) - { - goto FAIL1; - } - - result = pthread_cond_init (&rwl->cndSharedAccessCompleted, NULL); - if (result != 0) - { - goto FAIL2; - } - - rwl->nMagic = PTW32_RWLOCK_MAGIC; - - result = 0; - goto DONE; - -FAIL2: - (void) pthread_mutex_destroy (&(rwl->mtxSharedAccessCompleted)); - -FAIL1: - (void) pthread_mutex_destroy (&(rwl->mtxExclusiveAccess)); - -FAIL0: - (void) free (rwl); - rwl = NULL; - -DONE: - *rwlock = rwl; - - return result; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_rwlock_rdlock.c b/platform/win32/msvc/external/pthreads.2/pthread_rwlock_rdlock.c deleted file mode 100644 index 54221764204..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_rwlock_rdlock.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * pthread_rwlock_rdlock.c - * - * Description: - * This translation unit implements read/write lock primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include - -#include "pthread.h" -#include "implement.h" - -int -pthread_rwlock_rdlock (pthread_rwlock_t * rwlock) -{ - int result; - pthread_rwlock_t rwl; - - if (rwlock == NULL || *rwlock == NULL) - { - return EINVAL; - } - - /* - * We do a quick check to see if we need to do more work - * to initialise a static rwlock. We check - * again inside the guarded section of ptw32_rwlock_check_need_init() - * to avoid race conditions. - */ - if (*rwlock == PTHREAD_RWLOCK_INITIALIZER) - { - result = ptw32_rwlock_check_need_init (rwlock); - - if (result != 0 && result != EBUSY) - { - return result; - } - } - - rwl = *rwlock; - - if (rwl->nMagic != PTW32_RWLOCK_MAGIC) - { - return EINVAL; - } - - if ((result = pthread_mutex_lock (&(rwl->mtxExclusiveAccess))) != 0) - { - return result; - } - - if (++rwl->nSharedAccessCount == INT_MAX) - { - if ((result = - pthread_mutex_lock (&(rwl->mtxSharedAccessCompleted))) != 0) - { - (void) pthread_mutex_unlock (&(rwl->mtxExclusiveAccess)); - return result; - } - - rwl->nSharedAccessCount -= rwl->nCompletedSharedAccessCount; - rwl->nCompletedSharedAccessCount = 0; - - if ((result = - pthread_mutex_unlock (&(rwl->mtxSharedAccessCompleted))) != 0) - { - (void) pthread_mutex_unlock (&(rwl->mtxExclusiveAccess)); - return result; - } - } - - return (pthread_mutex_unlock (&(rwl->mtxExclusiveAccess))); -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_rwlock_timedrdlock.c b/platform/win32/msvc/external/pthreads.2/pthread_rwlock_timedrdlock.c deleted file mode 100644 index d46998628b2..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_rwlock_timedrdlock.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * pthread_rwlock_timedrdlock.c - * - * Description: - * This translation unit implements read/write lock primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include - -#include "pthread.h" -#include "implement.h" - -int -pthread_rwlock_timedrdlock (pthread_rwlock_t * rwlock, - const struct timespec *abstime) -{ - int result; - pthread_rwlock_t rwl; - - if (rwlock == NULL || *rwlock == NULL) - { - return EINVAL; - } - - /* - * We do a quick check to see if we need to do more work - * to initialise a static rwlock. We check - * again inside the guarded section of ptw32_rwlock_check_need_init() - * to avoid race conditions. - */ - if (*rwlock == PTHREAD_RWLOCK_INITIALIZER) - { - result = ptw32_rwlock_check_need_init (rwlock); - - if (result != 0 && result != EBUSY) - { - return result; - } - } - - rwl = *rwlock; - - if (rwl->nMagic != PTW32_RWLOCK_MAGIC) - { - return EINVAL; - } - - if ((result = - pthread_mutex_timedlock (&(rwl->mtxExclusiveAccess), abstime)) != 0) - { - return result; - } - - if (++rwl->nSharedAccessCount == INT_MAX) - { - if ((result = - pthread_mutex_timedlock (&(rwl->mtxSharedAccessCompleted), - abstime)) != 0) - { - if (result == ETIMEDOUT) - { - ++rwl->nCompletedSharedAccessCount; - } - (void) pthread_mutex_unlock (&(rwl->mtxExclusiveAccess)); - return result; - } - - rwl->nSharedAccessCount -= rwl->nCompletedSharedAccessCount; - rwl->nCompletedSharedAccessCount = 0; - - if ((result = - pthread_mutex_unlock (&(rwl->mtxSharedAccessCompleted))) != 0) - { - (void) pthread_mutex_unlock (&(rwl->mtxExclusiveAccess)); - return result; - } - } - - return (pthread_mutex_unlock (&(rwl->mtxExclusiveAccess))); -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_rwlock_timedwrlock.c b/platform/win32/msvc/external/pthreads.2/pthread_rwlock_timedwrlock.c deleted file mode 100644 index 3d985092a43..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_rwlock_timedwrlock.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * pthread_rwlock_timedwrlock.c - * - * Description: - * This translation unit implements read/write lock primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include - -#include "pthread.h" -#include "implement.h" - -int -pthread_rwlock_timedwrlock (pthread_rwlock_t * rwlock, - const struct timespec *abstime) -{ - int result; - pthread_rwlock_t rwl; - - if (rwlock == NULL || *rwlock == NULL) - { - return EINVAL; - } - - /* - * We do a quick check to see if we need to do more work - * to initialise a static rwlock. We check - * again inside the guarded section of ptw32_rwlock_check_need_init() - * to avoid race conditions. - */ - if (*rwlock == PTHREAD_RWLOCK_INITIALIZER) - { - result = ptw32_rwlock_check_need_init (rwlock); - - if (result != 0 && result != EBUSY) - { - return result; - } - } - - rwl = *rwlock; - - if (rwl->nMagic != PTW32_RWLOCK_MAGIC) - { - return EINVAL; - } - - if ((result = - pthread_mutex_timedlock (&(rwl->mtxExclusiveAccess), abstime)) != 0) - { - return result; - } - - if ((result = - pthread_mutex_timedlock (&(rwl->mtxSharedAccessCompleted), - abstime)) != 0) - { - (void) pthread_mutex_unlock (&(rwl->mtxExclusiveAccess)); - return result; - } - - if (rwl->nExclusiveAccessCount == 0) - { - if (rwl->nCompletedSharedAccessCount > 0) - { - rwl->nSharedAccessCount -= rwl->nCompletedSharedAccessCount; - rwl->nCompletedSharedAccessCount = 0; - } - - if (rwl->nSharedAccessCount > 0) - { - rwl->nCompletedSharedAccessCount = -rwl->nSharedAccessCount; - - /* - * This routine may be a cancelation point - * according to POSIX 1003.1j section 18.1.2. - */ -#if defined(_MSC_VER) && _MSC_VER < 1400 -#pragma inline_depth(0) -#endif - pthread_cleanup_push (ptw32_rwlock_cancelwrwait, (void *) rwl); - - do - { - result = - pthread_cond_timedwait (&(rwl->cndSharedAccessCompleted), - &(rwl->mtxSharedAccessCompleted), - abstime); - } - while (result == 0 && rwl->nCompletedSharedAccessCount < 0); - - pthread_cleanup_pop ((result != 0) ? 1 : 0); -#if defined(_MSC_VER) && _MSC_VER < 1400 -#pragma inline_depth() -#endif - - if (result == 0) - { - rwl->nSharedAccessCount = 0; - } - } - } - - if (result == 0) - { - rwl->nExclusiveAccessCount++; - } - - return result; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_rwlock_tryrdlock.c b/platform/win32/msvc/external/pthreads.2/pthread_rwlock_tryrdlock.c deleted file mode 100644 index 95dcca50766..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_rwlock_tryrdlock.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * pthread_rwlock_tryrdlock.c - * - * Description: - * This translation unit implements read/write lock primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include - -#include "pthread.h" -#include "implement.h" - -int -pthread_rwlock_tryrdlock (pthread_rwlock_t * rwlock) -{ - int result; - pthread_rwlock_t rwl; - - if (rwlock == NULL || *rwlock == NULL) - { - return EINVAL; - } - - /* - * We do a quick check to see if we need to do more work - * to initialise a static rwlock. We check - * again inside the guarded section of ptw32_rwlock_check_need_init() - * to avoid race conditions. - */ - if (*rwlock == PTHREAD_RWLOCK_INITIALIZER) - { - result = ptw32_rwlock_check_need_init (rwlock); - - if (result != 0 && result != EBUSY) - { - return result; - } - } - - rwl = *rwlock; - - if (rwl->nMagic != PTW32_RWLOCK_MAGIC) - { - return EINVAL; - } - - if ((result = pthread_mutex_trylock (&(rwl->mtxExclusiveAccess))) != 0) - { - return result; - } - - if (++rwl->nSharedAccessCount == INT_MAX) - { - if ((result = - pthread_mutex_lock (&(rwl->mtxSharedAccessCompleted))) != 0) - { - (void) pthread_mutex_unlock (&(rwl->mtxExclusiveAccess)); - return result; - } - - rwl->nSharedAccessCount -= rwl->nCompletedSharedAccessCount; - rwl->nCompletedSharedAccessCount = 0; - - if ((result = - pthread_mutex_unlock (&(rwl->mtxSharedAccessCompleted))) != 0) - { - (void) pthread_mutex_unlock (&(rwl->mtxExclusiveAccess)); - return result; - } - } - - return (pthread_mutex_unlock (&rwl->mtxExclusiveAccess)); -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_rwlock_trywrlock.c b/platform/win32/msvc/external/pthreads.2/pthread_rwlock_trywrlock.c deleted file mode 100644 index 3c6fccaa1ae..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_rwlock_trywrlock.c +++ /dev/null @@ -1,122 +0,0 @@ -/* - * pthread_rwlock_trywrlock.c - * - * Description: - * This translation unit implements read/write lock primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include - -#include "pthread.h" -#include "implement.h" - -int -pthread_rwlock_trywrlock (pthread_rwlock_t * rwlock) -{ - int result, result1; - pthread_rwlock_t rwl; - - if (rwlock == NULL || *rwlock == NULL) - { - return EINVAL; - } - - /* - * We do a quick check to see if we need to do more work - * to initialise a static rwlock. We check - * again inside the guarded section of ptw32_rwlock_check_need_init() - * to avoid race conditions. - */ - if (*rwlock == PTHREAD_RWLOCK_INITIALIZER) - { - result = ptw32_rwlock_check_need_init (rwlock); - - if (result != 0 && result != EBUSY) - { - return result; - } - } - - rwl = *rwlock; - - if (rwl->nMagic != PTW32_RWLOCK_MAGIC) - { - return EINVAL; - } - - if ((result = pthread_mutex_trylock (&(rwl->mtxExclusiveAccess))) != 0) - { - return result; - } - - if ((result = - pthread_mutex_trylock (&(rwl->mtxSharedAccessCompleted))) != 0) - { - result1 = pthread_mutex_unlock (&(rwl->mtxExclusiveAccess)); - return ((result1 != 0) ? result1 : result); - } - - if (rwl->nExclusiveAccessCount == 0) - { - if (rwl->nCompletedSharedAccessCount > 0) - { - rwl->nSharedAccessCount -= rwl->nCompletedSharedAccessCount; - rwl->nCompletedSharedAccessCount = 0; - } - - if (rwl->nSharedAccessCount > 0) - { - if ((result = - pthread_mutex_unlock (&(rwl->mtxSharedAccessCompleted))) != 0) - { - (void) pthread_mutex_unlock (&(rwl->mtxExclusiveAccess)); - return result; - } - - if ((result = - pthread_mutex_unlock (&(rwl->mtxExclusiveAccess))) == 0) - { - result = EBUSY; - } - } - else - { - rwl->nExclusiveAccessCount = 1; - } - } - else - { - result = EBUSY; - } - - return result; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_rwlock_unlock.c b/platform/win32/msvc/external/pthreads.2/pthread_rwlock_unlock.c deleted file mode 100644 index 4a9db569ff2..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_rwlock_unlock.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - * pthread_rwlock_unlock.c - * - * Description: - * This translation unit implements read/write lock primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include - -#include "pthread.h" -#include "implement.h" - -int -pthread_rwlock_unlock (pthread_rwlock_t * rwlock) -{ - int result, result1; - pthread_rwlock_t rwl; - - if (rwlock == NULL || *rwlock == NULL) - { - return (EINVAL); - } - - if (*rwlock == PTHREAD_RWLOCK_INITIALIZER) - { - /* - * Assume any race condition here is harmless. - */ - return 0; - } - - rwl = *rwlock; - - if (rwl->nMagic != PTW32_RWLOCK_MAGIC) - { - return EINVAL; - } - - if (rwl->nExclusiveAccessCount == 0) - { - if ((result = - pthread_mutex_lock (&(rwl->mtxSharedAccessCompleted))) != 0) - { - return result; - } - - if (++rwl->nCompletedSharedAccessCount == 0) - { - result = pthread_cond_signal (&(rwl->cndSharedAccessCompleted)); - } - - result1 = pthread_mutex_unlock (&(rwl->mtxSharedAccessCompleted)); - } - else - { - rwl->nExclusiveAccessCount--; - - result = pthread_mutex_unlock (&(rwl->mtxSharedAccessCompleted)); - result1 = pthread_mutex_unlock (&(rwl->mtxExclusiveAccess)); - - } - - return ((result != 0) ? result : result1); -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_rwlock_wrlock.c b/platform/win32/msvc/external/pthreads.2/pthread_rwlock_wrlock.c deleted file mode 100644 index 6fa2ddbfec9..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_rwlock_wrlock.c +++ /dev/null @@ -1,133 +0,0 @@ -/* - * pthread_rwlock_wrlock.c - * - * Description: - * This translation unit implements read/write lock primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include - -#include "pthread.h" -#include "implement.h" - -int -pthread_rwlock_wrlock (pthread_rwlock_t * rwlock) -{ - int result; - pthread_rwlock_t rwl; - - if (rwlock == NULL || *rwlock == NULL) - { - return EINVAL; - } - - /* - * We do a quick check to see if we need to do more work - * to initialise a static rwlock. We check - * again inside the guarded section of ptw32_rwlock_check_need_init() - * to avoid race conditions. - */ - if (*rwlock == PTHREAD_RWLOCK_INITIALIZER) - { - result = ptw32_rwlock_check_need_init (rwlock); - - if (result != 0 && result != EBUSY) - { - return result; - } - } - - rwl = *rwlock; - - if (rwl->nMagic != PTW32_RWLOCK_MAGIC) - { - return EINVAL; - } - - if ((result = pthread_mutex_lock (&(rwl->mtxExclusiveAccess))) != 0) - { - return result; - } - - if ((result = pthread_mutex_lock (&(rwl->mtxSharedAccessCompleted))) != 0) - { - (void) pthread_mutex_unlock (&(rwl->mtxExclusiveAccess)); - return result; - } - - if (rwl->nExclusiveAccessCount == 0) - { - if (rwl->nCompletedSharedAccessCount > 0) - { - rwl->nSharedAccessCount -= rwl->nCompletedSharedAccessCount; - rwl->nCompletedSharedAccessCount = 0; - } - - if (rwl->nSharedAccessCount > 0) - { - rwl->nCompletedSharedAccessCount = -rwl->nSharedAccessCount; - - /* - * This routine may be a cancelation point - * according to POSIX 1003.1j section 18.1.2. - */ -#if defined(_MSC_VER) && _MSC_VER < 1400 -#pragma inline_depth(0) -#endif - pthread_cleanup_push (ptw32_rwlock_cancelwrwait, (void *) rwl); - - do - { - result = pthread_cond_wait (&(rwl->cndSharedAccessCompleted), - &(rwl->mtxSharedAccessCompleted)); - } - while (result == 0 && rwl->nCompletedSharedAccessCount < 0); - - pthread_cleanup_pop ((result != 0) ? 1 : 0); -#if defined(_MSC_VER) && _MSC_VER < 1400 -#pragma inline_depth() -#endif - - if (result == 0) - { - rwl->nSharedAccessCount = 0; - } - } - } - - if (result == 0) - { - rwl->nExclusiveAccessCount++; - } - - return result; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_rwlockattr_destroy.c b/platform/win32/msvc/external/pthreads.2/pthread_rwlockattr_destroy.c deleted file mode 100644 index 1e0aa2fdc79..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_rwlockattr_destroy.c +++ /dev/null @@ -1,84 +0,0 @@ -/* - * pthread_rwlockattr_destroy.c - * - * Description: - * This translation unit implements read/write lock primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include - -#include "pthread.h" -#include "implement.h" - -int -pthread_rwlockattr_destroy (pthread_rwlockattr_t * attr) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * Destroys a rwlock attributes object. The object can - * no longer be used. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_rwlockattr_t - * - * - * DESCRIPTION - * Destroys a rwlock attributes object. The object can - * no longer be used. - * - * NOTES: - * 1) Does not affect rwlockss created using 'attr' - * - * RESULTS - * 0 successfully released attr, - * EINVAL 'attr' is invalid. - * - * ------------------------------------------------------ - */ -{ - int result = 0; - - if (attr == NULL || *attr == NULL) - { - result = EINVAL; - } - else - { - pthread_rwlockattr_t rwa = *attr; - - *attr = NULL; - free (rwa); - } - - return (result); -} /* pthread_rwlockattr_destroy */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_rwlockattr_getpshared.c b/platform/win32/msvc/external/pthreads.2/pthread_rwlockattr_getpshared.c deleted file mode 100644 index 1198e48084c..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_rwlockattr_getpshared.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - * pthread_rwlockattr_getpshared.c - * - * Description: - * This translation unit implements read/write lock primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include - -#include "pthread.h" -#include "implement.h" - -int -pthread_rwlockattr_getpshared (const pthread_rwlockattr_t * attr, - int *pshared) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * Determine whether rwlocks created with 'attr' can be - * shared between processes. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_rwlockattr_t - * - * pshared - * will be set to one of: - * - * PTHREAD_PROCESS_SHARED - * May be shared if in shared memory - * - * PTHREAD_PROCESS_PRIVATE - * Cannot be shared. - * - * - * DESCRIPTION - * Rwlocks creatd with 'attr' can be shared between - * processes if pthread_rwlock_t variable is allocated - * in memory shared by these processes. - * NOTES: - * 1) pshared rwlocks MUST be allocated in shared - * memory. - * 2) The following macro is defined if shared rwlocks - * are supported: - * _POSIX_THREAD_PROCESS_SHARED - * - * RESULTS - * 0 successfully retrieved attribute, - * EINVAL 'attr' is invalid, - * - * ------------------------------------------------------ - */ -{ - int result; - - if ((attr != NULL && *attr != NULL) && (pshared != NULL)) - { - *pshared = (*attr)->pshared; - result = 0; - } - else - { - result = EINVAL; - } - - return (result); - -} /* pthread_rwlockattr_getpshared */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_rwlockattr_init.c b/platform/win32/msvc/external/pthreads.2/pthread_rwlockattr_init.c deleted file mode 100644 index 6edbbb6a7ad..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_rwlockattr_init.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * pthread_rwlockattr_init.c - * - * Description: - * This translation unit implements read/write lock primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include - -#include "pthread.h" -#include "implement.h" - -int -pthread_rwlockattr_init (pthread_rwlockattr_t * attr) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * Initializes a rwlock attributes object with default - * attributes. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_rwlockattr_t - * - * - * DESCRIPTION - * Initializes a rwlock attributes object with default - * attributes. - * - * RESULTS - * 0 successfully initialized attr, - * ENOMEM insufficient memory for attr. - * - * ------------------------------------------------------ - */ -{ - int result = 0; - pthread_rwlockattr_t rwa; - - rwa = (pthread_rwlockattr_t) calloc (1, sizeof (*rwa)); - - if (rwa == NULL) - { - result = ENOMEM; - } - else - { - rwa->pshared = PTHREAD_PROCESS_PRIVATE; - } - - *attr = rwa; - - return (result); -} /* pthread_rwlockattr_init */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_rwlockattr_setpshared.c b/platform/win32/msvc/external/pthreads.2/pthread_rwlockattr_setpshared.c deleted file mode 100644 index 76d71fabe6e..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_rwlockattr_setpshared.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * pthread_rwlockattr_setpshared.c - * - * Description: - * This translation unit implements read/write lock primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include - -#include "pthread.h" -#include "implement.h" - -int -pthread_rwlockattr_setpshared (pthread_rwlockattr_t * attr, int pshared) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * Rwlocks created with 'attr' can be shared between - * processes if pthread_rwlock_t variable is allocated - * in memory shared by these processes. - * - * PARAMETERS - * attr - * pointer to an instance of pthread_rwlockattr_t - * - * pshared - * must be one of: - * - * PTHREAD_PROCESS_SHARED - * May be shared if in shared memory - * - * PTHREAD_PROCESS_PRIVATE - * Cannot be shared. - * - * DESCRIPTION - * Rwlocks creatd with 'attr' can be shared between - * processes if pthread_rwlock_t variable is allocated - * in memory shared by these processes. - * - * NOTES: - * 1) pshared rwlocks MUST be allocated in shared - * memory. - * - * 2) The following macro is defined if shared rwlocks - * are supported: - * _POSIX_THREAD_PROCESS_SHARED - * - * RESULTS - * 0 successfully set attribute, - * EINVAL 'attr' or pshared is invalid, - * ENOSYS PTHREAD_PROCESS_SHARED not supported, - * - * ------------------------------------------------------ - */ -{ - int result; - - if ((attr != NULL && *attr != NULL) && - ((pshared == PTHREAD_PROCESS_SHARED) || - (pshared == PTHREAD_PROCESS_PRIVATE))) - { - if (pshared == PTHREAD_PROCESS_SHARED) - { - -#if !defined( _POSIX_THREAD_PROCESS_SHARED ) - - result = ENOSYS; - pshared = PTHREAD_PROCESS_PRIVATE; - -#else - - result = 0; - -#endif /* _POSIX_THREAD_PROCESS_SHARED */ - - } - else - { - result = 0; - } - - (*attr)->pshared = pshared; - } - else - { - result = EINVAL; - } - - return (result); - -} /* pthread_rwlockattr_setpshared */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_self.c b/platform/win32/msvc/external/pthreads.2/pthread_self.c deleted file mode 100644 index f98dbb103b2..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_self.c +++ /dev/null @@ -1,141 +0,0 @@ -/* - * pthread_self.c - * - * Description: - * This translation unit implements miscellaneous thread functions. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -pthread_t -pthread_self (void) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function returns a reference to the current running - * thread. - * - * PARAMETERS - * N/A - * - * - * DESCRIPTION - * This function returns a reference to the current running - * thread. - * - * RESULTS - * pthread_t reference to the current thread - * - * ------------------------------------------------------ - */ -{ - pthread_t self; - pthread_t nil = {NULL, 0}; - ptw32_thread_t * sp; - -#if defined(_UWIN) - if (!ptw32_selfThreadKey) - return nil; -#endif - - sp = (ptw32_thread_t *) pthread_getspecific (ptw32_selfThreadKey); - - if (sp != NULL) - { - self = sp->ptHandle; - } - else - { - /* - * Need to create an implicit 'self' for the currently - * executing thread. - */ - self = ptw32_new (); - sp = (ptw32_thread_t *) self.p; - - if (sp != NULL) - { - /* - * This is a non-POSIX thread which has chosen to call - * a POSIX threads function for some reason. We assume that - * it isn't joinable, but we do assume that it's - * (deferred) cancelable. - */ - sp->implicit = 1; - sp->detachState = PTHREAD_CREATE_DETACHED; - sp->thread = GetCurrentThreadId (); - -#if defined(NEED_DUPLICATEHANDLE) - /* - * DuplicateHandle does not exist on WinCE. - * - * NOTE: - * GetCurrentThread only returns a pseudo-handle - * which is only valid in the current thread context. - * Therefore, you should not pass the handle to - * other threads for whatever purpose. - */ - sp->threadH = GetCurrentThread (); -#else - if (!DuplicateHandle (GetCurrentProcess (), - GetCurrentThread (), - GetCurrentProcess (), - &sp->threadH, - 0, FALSE, DUPLICATE_SAME_ACCESS)) - { - /* - * Should not do this, but we have no alternative if - * we can't get a Win32 thread handle. - * Thread structs are never freed. - */ - ptw32_threadReusePush (self); - /* - * As this is a win32 thread calling us and we have failed, - * return a value that makes sense to win32. - */ - return nil; - } -#endif - - /* - * No need to explicitly serialise access to sched_priority - * because the new handle is not yet public. - */ - sp->sched_priority = GetThreadPriority (sp->threadH); - pthread_setspecific (ptw32_selfThreadKey, (void *) sp); - } - } - - return (self); - -} /* pthread_self */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_setcancelstate.c b/platform/win32/msvc/external/pthreads.2/pthread_setcancelstate.c deleted file mode 100644 index 8bc91026d23..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_setcancelstate.c +++ /dev/null @@ -1,125 +0,0 @@ -/* - * pthread_setcancelstate.c - * - * Description: - * POSIX thread functions related to thread cancellation. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_setcancelstate (int state, int *oldstate) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function atomically sets the calling thread's - * cancelability state to 'state' and returns the previous - * cancelability state at the location referenced by - * 'oldstate' - * - * PARAMETERS - * state, - * oldstate - * PTHREAD_CANCEL_ENABLE - * cancellation is enabled, - * - * PTHREAD_CANCEL_DISABLE - * cancellation is disabled - * - * - * DESCRIPTION - * This function atomically sets the calling thread's - * cancelability state to 'state' and returns the previous - * cancelability state at the location referenced by - * 'oldstate'. - * - * NOTES: - * 1) Use to disable cancellation around 'atomic' code that - * includes cancellation points - * - * COMPATIBILITY ADDITIONS - * If 'oldstate' is NULL then the previous state is not returned - * but the function still succeeds. (Solaris) - * - * RESULTS - * 0 successfully set cancelability type, - * EINVAL 'state' is invalid - * - * ------------------------------------------------------ - */ -{ - ptw32_mcs_local_node_t stateLock; - int result = 0; - pthread_t self = pthread_self (); - ptw32_thread_t * sp = (ptw32_thread_t *) self.p; - - if (sp == NULL - || (state != PTHREAD_CANCEL_ENABLE && state != PTHREAD_CANCEL_DISABLE)) - { - return EINVAL; - } - - /* - * Lock for async-cancel safety. - */ - ptw32_mcs_lock_acquire (&sp->stateLock, &stateLock); - - if (oldstate != NULL) - { - *oldstate = sp->cancelState; - } - - sp->cancelState = state; - - /* - * Check if there is a pending asynchronous cancel - */ - if (state == PTHREAD_CANCEL_ENABLE - && sp->cancelType == PTHREAD_CANCEL_ASYNCHRONOUS - && WaitForSingleObject (sp->cancelEvent, 0) == WAIT_OBJECT_0) - { - sp->state = PThreadStateCanceling; - sp->cancelState = PTHREAD_CANCEL_DISABLE; - ResetEvent (sp->cancelEvent); - ptw32_mcs_lock_release (&stateLock); - ptw32_throw (PTW32_EPS_CANCEL); - - /* Never reached */ - } - - ptw32_mcs_lock_release (&stateLock); - - return (result); - -} /* pthread_setcancelstate */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_setcanceltype.c b/platform/win32/msvc/external/pthreads.2/pthread_setcanceltype.c deleted file mode 100644 index 0398dde30b7..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_setcanceltype.c +++ /dev/null @@ -1,126 +0,0 @@ -/* - * pthread_setcanceltype.c - * - * Description: - * POSIX thread functions related to thread cancellation. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_setcanceltype (int type, int *oldtype) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function atomically sets the calling thread's - * cancelability type to 'type' and returns the previous - * cancelability type at the location referenced by - * 'oldtype' - * - * PARAMETERS - * type, - * oldtype - * PTHREAD_CANCEL_DEFERRED - * only deferred cancelation is allowed, - * - * PTHREAD_CANCEL_ASYNCHRONOUS - * Asynchronous cancellation is allowed - * - * - * DESCRIPTION - * This function atomically sets the calling thread's - * cancelability type to 'type' and returns the previous - * cancelability type at the location referenced by - * 'oldtype' - * - * NOTES: - * 1) Use with caution; most code is not safe for use - * with asynchronous cancelability. - * - * COMPATIBILITY ADDITIONS - * If 'oldtype' is NULL then the previous type is not returned - * but the function still succeeds. (Solaris) - * - * RESULTS - * 0 successfully set cancelability type, - * EINVAL 'type' is invalid - * - * ------------------------------------------------------ - */ -{ - ptw32_mcs_local_node_t stateLock; - int result = 0; - pthread_t self = pthread_self (); - ptw32_thread_t * sp = (ptw32_thread_t *) self.p; - - if (sp == NULL - || (type != PTHREAD_CANCEL_DEFERRED - && type != PTHREAD_CANCEL_ASYNCHRONOUS)) - { - return EINVAL; - } - - /* - * Lock for async-cancel safety. - */ - ptw32_mcs_lock_acquire (&sp->stateLock, &stateLock); - - if (oldtype != NULL) - { - *oldtype = sp->cancelType; - } - - sp->cancelType = type; - - /* - * Check if there is a pending asynchronous cancel - */ - if (sp->cancelState == PTHREAD_CANCEL_ENABLE - && type == PTHREAD_CANCEL_ASYNCHRONOUS - && WaitForSingleObject (sp->cancelEvent, 0) == WAIT_OBJECT_0) - { - sp->state = PThreadStateCanceling; - sp->cancelState = PTHREAD_CANCEL_DISABLE; - ResetEvent (sp->cancelEvent); - ptw32_mcs_lock_release (&stateLock); - ptw32_throw (PTW32_EPS_CANCEL); - - /* Never reached */ - } - - ptw32_mcs_lock_release (&stateLock); - - return (result); - -} /* pthread_setcanceltype */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_setconcurrency.c b/platform/win32/msvc/external/pthreads.2/pthread_setconcurrency.c deleted file mode 100644 index b1693da1ff1..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_setconcurrency.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * pthread_setconcurrency.c - * - * Description: - * This translation unit implements miscellaneous thread functions. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_setconcurrency (int level) -{ - if (level < 0) - { - return EINVAL; - } - else - { - ptw32_concurrency = level; - return 0; - } -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_setschedparam.c b/platform/win32/msvc/external/pthreads.2/pthread_setschedparam.c deleted file mode 100644 index 7c7b79ee426..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_setschedparam.c +++ /dev/null @@ -1,123 +0,0 @@ -/* - * sched_setschedparam.c - * - * Description: - * POSIX thread functions that deal with thread scheduling. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" -#include "sched.h" - -int -pthread_setschedparam (pthread_t thread, int policy, - const struct sched_param *param) -{ - int result; - - /* Validate the thread id. */ - result = pthread_kill (thread, 0); - if (0 != result) - { - return result; - } - - /* Validate the scheduling policy. */ - if (policy < SCHED_MIN || policy > SCHED_MAX) - { - return EINVAL; - } - - /* Ensure the policy is SCHED_OTHER. */ - if (policy != SCHED_OTHER) - { - return ENOTSUP; - } - - return (ptw32_setthreadpriority (thread, policy, param->sched_priority)); -} - - -int -ptw32_setthreadpriority (pthread_t thread, int policy, int priority) -{ - int prio; - ptw32_mcs_local_node_t threadLock; - int result = 0; - ptw32_thread_t * tp = (ptw32_thread_t *) thread.p; - - prio = priority; - - /* Validate priority level. */ - if (prio < sched_get_priority_min (policy) || - prio > sched_get_priority_max (policy)) - { - return EINVAL; - } - -#if (THREAD_PRIORITY_LOWEST > THREAD_PRIORITY_NORMAL) -/* WinCE */ -#else -/* Everything else */ - - if (THREAD_PRIORITY_IDLE < prio && THREAD_PRIORITY_LOWEST > prio) - { - prio = THREAD_PRIORITY_LOWEST; - } - else if (THREAD_PRIORITY_TIME_CRITICAL > prio - && THREAD_PRIORITY_HIGHEST < prio) - { - prio = THREAD_PRIORITY_HIGHEST; - } - -#endif - - ptw32_mcs_lock_acquire (&tp->threadLock, &threadLock); - - /* If this fails, the current priority is unchanged. */ - if (0 == SetThreadPriority (tp->threadH, prio)) - { - result = EINVAL; - } - else - { - /* - * Must record the thread's sched_priority as given, - * not as finally adjusted. - */ - tp->sched_priority = priority; - } - - ptw32_mcs_lock_release (&threadLock); - - return result; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_setspecific.c b/platform/win32/msvc/external/pthreads.2/pthread_setspecific.c deleted file mode 100644 index eb04b83c2d0..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_setspecific.c +++ /dev/null @@ -1,167 +0,0 @@ -/* - * pthread_setspecific.c - * - * Description: - * POSIX thread functions which implement thread-specific data (TSD). - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_setspecific (pthread_key_t key, const void *value) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function sets the value of the thread specific - * key in the calling thread. - * - * PARAMETERS - * key - * an instance of pthread_key_t - * value - * the value to set key to - * - * - * DESCRIPTION - * This function sets the value of the thread specific - * key in the calling thread. - * - * RESULTS - * 0 successfully set value - * EAGAIN could not set value - * ENOENT SERIOUS!! - * - * ------------------------------------------------------ - */ -{ - pthread_t self; - int result = 0; - - if (key != ptw32_selfThreadKey) - { - /* - * Using pthread_self will implicitly create - * an instance of pthread_t for the current - * thread if one wasn't explicitly created - */ - self = pthread_self (); - if (self.p == NULL) - { - return ENOENT; - } - } - else - { - /* - * Resolve catch-22 of registering thread with selfThread - * key - */ - ptw32_thread_t * sp = (ptw32_thread_t *) pthread_getspecific (ptw32_selfThreadKey); - - if (sp == NULL) - { - if (value == NULL) - { - return ENOENT; - } - self = *((pthread_t *) value); - } - else - { - self = sp->ptHandle; - } - } - - result = 0; - - if (key != NULL) - { - if (self.p != NULL && key->destructor != NULL && value != NULL) - { - ptw32_mcs_local_node_t keyLock; - ptw32_mcs_local_node_t threadLock; - ptw32_thread_t * sp = (ptw32_thread_t *) self.p; - /* - * Only require associations if we have to - * call user destroy routine. - * Don't need to locate an existing association - * when setting data to NULL for WIN32 since the - * data is stored with the operating system; not - * on the association; setting assoc to NULL short - * circuits the search. - */ - ThreadKeyAssoc *assoc; - - ptw32_mcs_lock_acquire(&(key->keyLock), &keyLock); - ptw32_mcs_lock_acquire(&(sp->threadLock), &threadLock); - - assoc = (ThreadKeyAssoc *) sp->keys; - /* - * Locate existing association - */ - while (assoc != NULL) - { - if (assoc->key == key) - { - /* - * Association already exists - */ - break; - } - assoc = assoc->nextKey; - } - - /* - * create an association if not found - */ - if (assoc == NULL) - { - result = ptw32_tkAssocCreate (sp, key); - } - - ptw32_mcs_lock_release(&threadLock); - ptw32_mcs_lock_release(&keyLock); - } - - if (result == 0) - { - if (!TlsSetValue (key->key, (LPVOID) value)) - { - result = EAGAIN; - } - } - } - - return (result); -} /* pthread_setspecific */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_spin_destroy.c b/platform/win32/msvc/external/pthreads.2/pthread_spin_destroy.c deleted file mode 100644 index 578e565483f..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_spin_destroy.c +++ /dev/null @@ -1,111 +0,0 @@ -/* - * pthread_spin_destroy.c - * - * Description: - * This translation unit implements spin lock primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_spin_destroy (pthread_spinlock_t * lock) -{ - register pthread_spinlock_t s; - int result = 0; - - if (lock == NULL || *lock == NULL) - { - return EINVAL; - } - - if ((s = *lock) != PTHREAD_SPINLOCK_INITIALIZER) - { - if (s->interlock == PTW32_SPIN_USE_MUTEX) - { - result = pthread_mutex_destroy (&(s->u.mutex)); - } - else if ((PTW32_INTERLOCKED_LONG) PTW32_SPIN_UNLOCKED != - PTW32_INTERLOCKED_COMPARE_EXCHANGE_LONG ((PTW32_INTERLOCKED_LONGPTR) &s->interlock, - (PTW32_INTERLOCKED_LONG) PTW32_SPIN_INVALID, - (PTW32_INTERLOCKED_LONG) PTW32_SPIN_UNLOCKED)) - { - result = EINVAL; - } - - if (0 == result) - { - /* - * We are relying on the application to ensure that all other threads - * have finished with the spinlock before destroying it. - */ - *lock = NULL; - (void) free (s); - } - } - else - { - /* - * See notes in ptw32_spinlock_check_need_init() above also. - */ - ptw32_mcs_local_node_t node; - - ptw32_mcs_lock_acquire(&ptw32_spinlock_test_init_lock, &node); - - /* - * Check again. - */ - if (*lock == PTHREAD_SPINLOCK_INITIALIZER) - { - /* - * This is all we need to do to destroy a statically - * initialised spinlock that has not yet been used (initialised). - * If we get to here, another thread - * waiting to initialise this mutex will get an EINVAL. - */ - *lock = NULL; - } - else - { - /* - * The spinlock has been initialised while we were waiting - * so assume it's in use. - */ - result = EBUSY; - } - - ptw32_mcs_lock_release(&node); - } - - return (result); -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_spin_init.c b/platform/win32/msvc/external/pthreads.2/pthread_spin_init.c deleted file mode 100644 index 5d574f3ee0b..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_spin_init.c +++ /dev/null @@ -1,123 +0,0 @@ -/* - * pthread_spin_init.c - * - * Description: - * This translation unit implements spin lock primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_spin_init (pthread_spinlock_t * lock, int pshared) -{ - pthread_spinlock_t s; - int cpus = 0; - int result = 0; - - if (lock == NULL) - { - return EINVAL; - } - - if (0 != ptw32_getprocessors (&cpus)) - { - cpus = 1; - } - - if (cpus > 1) - { - if (pshared == PTHREAD_PROCESS_SHARED) - { - /* - * Creating spinlock that can be shared between - * processes. - */ -#if _POSIX_THREAD_PROCESS_SHARED >= 0 - - /* - * Not implemented yet. - */ - -#error ERROR [__FILE__, line __LINE__]: Process shared spin locks are not supported yet. - -#else - - return ENOSYS; - -#endif /* _POSIX_THREAD_PROCESS_SHARED */ - - } - } - - s = (pthread_spinlock_t) calloc (1, sizeof (*s)); - - if (s == NULL) - { - return ENOMEM; - } - - if (cpus > 1) - { - s->u.cpus = cpus; - s->interlock = PTW32_SPIN_UNLOCKED; - } - else - { - pthread_mutexattr_t ma; - result = pthread_mutexattr_init (&ma); - - if (0 == result) - { - ma->pshared = pshared; - result = pthread_mutex_init (&(s->u.mutex), &ma); - if (0 == result) - { - s->interlock = PTW32_SPIN_USE_MUTEX; - } - } - (void) pthread_mutexattr_destroy (&ma); - } - - if (0 == result) - { - *lock = s; - } - else - { - (void) free (s); - *lock = NULL; - } - - return (result); -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_spin_lock.c b/platform/win32/msvc/external/pthreads.2/pthread_spin_lock.c deleted file mode 100644 index 0d061512979..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_spin_lock.c +++ /dev/null @@ -1,80 +0,0 @@ -/* - * pthread_spin_lock.c - * - * Description: - * This translation unit implements spin lock primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_spin_lock (pthread_spinlock_t * lock) -{ - register pthread_spinlock_t s; - - if (NULL == lock || NULL == *lock) - { - return (EINVAL); - } - - if (*lock == PTHREAD_SPINLOCK_INITIALIZER) - { - int result; - - if ((result = ptw32_spinlock_check_need_init (lock)) != 0) - { - return (result); - } - } - - s = *lock; - - while ((PTW32_INTERLOCKED_LONG) PTW32_SPIN_LOCKED == - PTW32_INTERLOCKED_COMPARE_EXCHANGE_LONG ((PTW32_INTERLOCKED_LONGPTR) &s->interlock, - (PTW32_INTERLOCKED_LONG) PTW32_SPIN_LOCKED, - (PTW32_INTERLOCKED_LONG) PTW32_SPIN_UNLOCKED)) - { - } - - if (s->interlock == PTW32_SPIN_LOCKED) - { - return 0; - } - else if (s->interlock == PTW32_SPIN_USE_MUTEX) - { - return pthread_mutex_lock (&(s->u.mutex)); - } - - return EINVAL; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_spin_trylock.c b/platform/win32/msvc/external/pthreads.2/pthread_spin_trylock.c deleted file mode 100644 index 987ad112168..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_spin_trylock.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - * pthread_spin_trylock.c - * - * Description: - * This translation unit implements spin lock primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_spin_trylock (pthread_spinlock_t * lock) -{ - register pthread_spinlock_t s; - - if (NULL == lock || NULL == *lock) - { - return (EINVAL); - } - - if (*lock == PTHREAD_SPINLOCK_INITIALIZER) - { - int result; - - if ((result = ptw32_spinlock_check_need_init (lock)) != 0) - { - return (result); - } - } - - s = *lock; - - switch ((long) - PTW32_INTERLOCKED_COMPARE_EXCHANGE_LONG ((PTW32_INTERLOCKED_LONGPTR) &s->interlock, - (PTW32_INTERLOCKED_LONG) PTW32_SPIN_LOCKED, - (PTW32_INTERLOCKED_LONG) PTW32_SPIN_UNLOCKED)) - { - case PTW32_SPIN_UNLOCKED: - return 0; - case PTW32_SPIN_LOCKED: - return EBUSY; - case PTW32_SPIN_USE_MUTEX: - return pthread_mutex_trylock (&(s->u.mutex)); - } - - return EINVAL; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_spin_unlock.c b/platform/win32/msvc/external/pthreads.2/pthread_spin_unlock.c deleted file mode 100644 index 7c09b0f5884..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_spin_unlock.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * pthread_spin_unlock.c - * - * Description: - * This translation unit implements spin lock primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -pthread_spin_unlock (pthread_spinlock_t * lock) -{ - register pthread_spinlock_t s; - - if (NULL == lock || NULL == *lock) - { - return (EINVAL); - } - - s = *lock; - - if (s == PTHREAD_SPINLOCK_INITIALIZER) - { - return EPERM; - } - - switch ((long) - PTW32_INTERLOCKED_COMPARE_EXCHANGE_LONG ((PTW32_INTERLOCKED_LONGPTR) &s->interlock, - (PTW32_INTERLOCKED_LONG) PTW32_SPIN_UNLOCKED, - (PTW32_INTERLOCKED_LONG) PTW32_SPIN_LOCKED)) - { - case PTW32_SPIN_LOCKED: - case PTW32_SPIN_UNLOCKED: - return 0; - case PTW32_SPIN_USE_MUTEX: - return pthread_mutex_unlock (&(s->u.mutex)); - } - - return EINVAL; -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_testcancel.c b/platform/win32/msvc/external/pthreads.2/pthread_testcancel.c deleted file mode 100644 index f81347336f4..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_testcancel.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - * pthread_testcancel.c - * - * Description: - * POSIX thread functions related to thread cancellation. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -void -pthread_testcancel (void) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function creates a deferred cancellation point - * in the calling thread. The call has no effect if the - * current cancelability state is - * PTHREAD_CANCEL_DISABLE - * - * PARAMETERS - * N/A - * - * - * DESCRIPTION - * This function creates a deferred cancellation point - * in the calling thread. The call has no effect if the - * current cancelability state is - * PTHREAD_CANCEL_DISABLE - * - * NOTES: - * 1) Cancellation is asynchronous. Use pthread_join - * to wait for termination of thread if necessary - * - * RESULTS - * N/A - * - * ------------------------------------------------------ - */ -{ - ptw32_mcs_local_node_t stateLock; - pthread_t self = pthread_self (); - ptw32_thread_t * sp = (ptw32_thread_t *) self.p; - - if (sp == NULL) - { - return; - } - - /* - * Pthread_cancel() will have set sp->state to PThreadStateCancelPending - * and set an event, so no need to enter kernel space if - * sp->state != PThreadStateCancelPending - that only slows us down. - */ - if (sp->state != PThreadStateCancelPending) - { - return; - } - - ptw32_mcs_lock_acquire (&sp->stateLock, &stateLock); - - if (sp->cancelState != PTHREAD_CANCEL_DISABLE) - { - ResetEvent(sp->cancelEvent); - sp->state = PThreadStateCanceling; - sp->cancelState = PTHREAD_CANCEL_DISABLE; - ptw32_mcs_lock_release (&stateLock); - ptw32_throw (PTW32_EPS_CANCEL); - /* Never returns here */ - } - - ptw32_mcs_lock_release (&stateLock); -} /* pthread_testcancel */ diff --git a/platform/win32/msvc/external/pthreads.2/pthread_timechange_handler_np.c b/platform/win32/msvc/external/pthreads.2/pthread_timechange_handler_np.c deleted file mode 100644 index be8df882408..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_timechange_handler_np.c +++ /dev/null @@ -1,108 +0,0 @@ -/* - * pthread_timechange_handler_np.c - * - * Description: - * This translation unit implements miscellaneous thread functions. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -/* - * Notes on handling system time adjustments (especially negative ones). - * --------------------------------------------------------------------- - * - * This solution was suggested by Alexander Terekhov, but any errors - * in the implementation are mine - [Ross Johnson] - * - * 1) The problem: threads doing a timedwait on a CV may expect to timeout - * at a specific absolute time according to a system timer. If the - * system clock is adjusted backwards then those threads sleep longer than - * expected. Also, pthreads-win32 converts absolute times to intervals in - * order to make use of the underlying Win32, and so waiting threads may - * awake before their proper abstimes. - * - * 2) We aren't able to distinquish between threads on timed or untimed waits, - * so we wake them all at the time of the adjustment so that they can - * re-evaluate their conditions and re-compute their timeouts. - * - * 3) We rely on correctly written applications for this to work. Specifically, - * they must be able to deal properly with spurious wakeups. That is, - * they must re-test their condition upon wakeup and wait again if - * the condition is not satisfied. - */ - -void * -pthread_timechange_handler_np (void *arg) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * Broadcasts all CVs to force re-evaluation and - * new timeouts if required. - * - * PARAMETERS - * NONE - * - * - * DESCRIPTION - * Broadcasts all CVs to force re-evaluation and - * new timeouts if required. - * - * This routine may be passed directly to pthread_create() - * as a new thread in order to run asynchronously. - * - * - * RESULTS - * 0 successfully broadcast all CVs - * EAGAIN Not all CVs were broadcast - * - * ------------------------------------------------------ - */ -{ - int result = 0; - pthread_cond_t cv; - ptw32_mcs_local_node_t node; - - ptw32_mcs_lock_acquire(&ptw32_cond_list_lock, &node); - - cv = ptw32_cond_list_head; - - while (cv != NULL && 0 == result) - { - result = pthread_cond_broadcast (&cv); - cv = cv->next; - } - - ptw32_mcs_lock_release(&node); - - return (void *) (size_t) (result != 0 ? EAGAIN : 0); -} diff --git a/platform/win32/msvc/external/pthreads.2/pthread_win32_attach_detach_np.c b/platform/win32/msvc/external/pthreads.2/pthread_win32_attach_detach_np.c deleted file mode 100644 index b11ba652cca..00000000000 --- a/platform/win32/msvc/external/pthreads.2/pthread_win32_attach_detach_np.c +++ /dev/null @@ -1,256 +0,0 @@ -/* - * pthread_win32_attach_detach_np.c - * - * Description: - * This translation unit implements non-portable thread functions. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -/* - * Handle to quserex.dll - */ -static HINSTANCE ptw32_h_quserex; - -BOOL -pthread_win32_process_attach_np () -{ - TCHAR QuserExDLLPathBuf[1024]; - BOOL result = TRUE; - - result = ptw32_processInitialize (); - -#if defined(_UWIN) - pthread_count++; -#endif - -#if defined(__GNUC__) - ptw32_features = 0; -#else - /* - * This is obsolete now. - */ - ptw32_features = PTW32_SYSTEM_INTERLOCKED_COMPARE_EXCHANGE; -#endif - - /* - * Load QUSEREX.DLL and try to get address of QueueUserAPCEx. - * Because QUSEREX.DLL requires a driver to be installed we will - * assume the DLL is in the system directory. - * - * This should take care of any security issues. - */ -#if defined(__GNUC__) || _MSC_VER < 1400 - if(GetSystemDirectory(QuserExDLLPathBuf, sizeof(QuserExDLLPathBuf))) - { - (void) strncat(QuserExDLLPathBuf, - "\\QUSEREX.DLL", - sizeof(QuserExDLLPathBuf) - strlen(QuserExDLLPathBuf) - 1); - ptw32_h_quserex = LoadLibrary(QuserExDLLPathBuf); - } -#else - /* strncat is secure - this is just to avoid a warning */ - if(GetSystemDirectory(QuserExDLLPathBuf, sizeof(QuserExDLLPathBuf)) && - 0 == strncat_s(QuserExDLLPathBuf, sizeof(QuserExDLLPathBuf), "\\QUSEREX.DLL", 12)) - { - ptw32_h_quserex = LoadLibrary(QuserExDLLPathBuf); - } -#endif - - if (ptw32_h_quserex != NULL) - { - ptw32_register_cancelation = (DWORD (*)(PAPCFUNC, HANDLE, DWORD)) -#if defined(NEED_UNICODE_CONSTS) - GetProcAddress (ptw32_h_quserex, - (const TCHAR *) TEXT ("QueueUserAPCEx")); -#else - GetProcAddress (ptw32_h_quserex, (LPCSTR) "QueueUserAPCEx"); -#endif - } - - if (NULL == ptw32_register_cancelation) - { - ptw32_register_cancelation = ptw32_RegisterCancelation; - - if (ptw32_h_quserex != NULL) - { - (void) FreeLibrary (ptw32_h_quserex); - } - ptw32_h_quserex = 0; - } - else - { - /* Initialise QueueUserAPCEx */ - BOOL (*queue_user_apc_ex_init) (VOID); - - queue_user_apc_ex_init = (BOOL (*)(VOID)) -#if defined(NEED_UNICODE_CONSTS) - GetProcAddress (ptw32_h_quserex, - (const TCHAR *) TEXT ("QueueUserAPCEx_Init")); -#else - GetProcAddress (ptw32_h_quserex, (LPCSTR) "QueueUserAPCEx_Init"); -#endif - - if (queue_user_apc_ex_init == NULL || !queue_user_apc_ex_init ()) - { - ptw32_register_cancelation = ptw32_RegisterCancelation; - - (void) FreeLibrary (ptw32_h_quserex); - ptw32_h_quserex = 0; - } - } - - if (ptw32_h_quserex) - { - ptw32_features |= PTW32_ALERTABLE_ASYNC_CANCEL; - } - - return result; -} - - -BOOL -pthread_win32_process_detach_np () -{ - if (ptw32_processInitialized) - { - ptw32_thread_t * sp = (ptw32_thread_t *) pthread_getspecific (ptw32_selfThreadKey); - - if (sp != NULL) - { - /* - * Detached threads have their resources automatically - * cleaned up upon exit (others must be 'joined'). - */ - if (sp->detachState == PTHREAD_CREATE_DETACHED) - { - ptw32_threadDestroy (sp->ptHandle); - TlsSetValue (ptw32_selfThreadKey->key, NULL); - } - } - - /* - * The DLL is being unmapped from the process's address space - */ - ptw32_processTerminate (); - - if (ptw32_h_quserex) - { - /* Close QueueUserAPCEx */ - BOOL (*queue_user_apc_ex_fini) (VOID); - - queue_user_apc_ex_fini = (BOOL (*)(VOID)) -#if defined(NEED_UNICODE_CONSTS) - GetProcAddress (ptw32_h_quserex, - (const TCHAR *) TEXT ("QueueUserAPCEx_Fini")); -#else - GetProcAddress (ptw32_h_quserex, (LPCSTR) "QueueUserAPCEx_Fini"); -#endif - - if (queue_user_apc_ex_fini != NULL) - { - (void) queue_user_apc_ex_fini (); - } - (void) FreeLibrary (ptw32_h_quserex); - } - } - - return TRUE; -} - -BOOL -pthread_win32_thread_attach_np () -{ - return TRUE; -} - -BOOL -pthread_win32_thread_detach_np () -{ - if (ptw32_processInitialized) - { - /* - * Don't use pthread_self() - to avoid creating an implicit POSIX thread handle - * unnecessarily. - */ - ptw32_thread_t * sp = (ptw32_thread_t *) pthread_getspecific (ptw32_selfThreadKey); - - if (sp != NULL) // otherwise Win32 thread with no implicit POSIX handle. - { - ptw32_mcs_local_node_t stateLock; - ptw32_callUserDestroyRoutines (sp->ptHandle); - - ptw32_mcs_lock_acquire (&sp->stateLock, &stateLock); - sp->state = PThreadStateLast; - /* - * If the thread is joinable at this point then it MUST be joined - * or detached explicitly by the application. - */ - ptw32_mcs_lock_release (&stateLock); - - /* - * Robust Mutexes - */ - while (sp->robustMxList != NULL) - { - pthread_mutex_t mx = sp->robustMxList->mx; - ptw32_robust_mutex_remove(&mx, sp); - (void) PTW32_INTERLOCKED_EXCHANGE_LONG( - (PTW32_INTERLOCKED_LONGPTR)&mx->robustNode->stateInconsistent, - (PTW32_INTERLOCKED_LONG)-1); - /* - * If there are no waiters then the next thread to block will - * sleep, wakeup immediately and then go back to sleep. - * See pthread_mutex_lock.c. - */ - SetEvent(mx->event); - } - - - if (sp->detachState == PTHREAD_CREATE_DETACHED) - { - ptw32_threadDestroy (sp->ptHandle); - - TlsSetValue (ptw32_selfThreadKey->key, NULL); - } - } - } - - return TRUE; -} - -BOOL -pthread_win32_test_features_np (int feature_mask) -{ - return ((ptw32_features & feature_mask) == feature_mask); -} diff --git a/platform/win32/msvc/external/pthreads.2/ptw32_MCS_lock.c b/platform/win32/msvc/external/pthreads.2/ptw32_MCS_lock.c deleted file mode 100644 index 4a06ed91cab..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ptw32_MCS_lock.c +++ /dev/null @@ -1,278 +0,0 @@ -/* - * ptw32_MCS_lock.c - * - * Description: - * This translation unit implements queue-based locks. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -/* - * About MCS locks: - * - * MCS locks are queue-based locks, where the queue nodes are local to the - * thread. The 'lock' is nothing more than a global pointer that points to - * the last node in the queue, or is NULL if the queue is empty. - * - * Originally designed for use as spin locks requiring no kernel resources - * for synchronisation or blocking, the implementation below has adapted - * the MCS spin lock for use as a general mutex that will suspend threads - * when there is lock contention. - * - * Because the queue nodes are thread-local, most of the memory read/write - * operations required to add or remove nodes from the queue do not trigger - * cache-coherence updates. - * - * Like 'named' mutexes, MCS locks consume system resources transiently - - * they are able to acquire and free resources automatically - but MCS - * locks do not require any unique 'name' to identify the lock to all - * threads using it. - * - * Usage of MCS locks: - * - * - you need a global ptw32_mcs_lock_t instance initialised to 0 or NULL. - * - you need a local thread-scope ptw32_mcs_local_node_t instance, which - * may serve several different locks but you need at least one node for - * every lock held concurrently by a thread. - * - * E.g.: - * - * ptw32_mcs_lock_t lock1 = 0; - * ptw32_mcs_lock_t lock2 = 0; - * - * void *mythread(void *arg) - * { - * ptw32_mcs_local_node_t node; - * - * ptw32_mcs_acquire (&lock1, &node); - * ptw32_mcs_lock_release (&node); - * - * ptw32_mcs_lock_acquire (&lock2, &node); - * ptw32_mcs_lock_release (&node); - * { - * ptw32_mcs_local_node_t nodex; - * - * ptw32_mcs_lock_acquire (&lock1, &node); - * ptw32_mcs_lock_acquire (&lock2, &nodex); - * - * ptw32_mcs_lock_release (&nodex); - * ptw32_mcs_lock_release (&node); - * } - * return (void *)0; - * } - */ - -#include "pthread.h" -#include "sched.h" -#include "implement.h" - -/* - * ptw32_mcs_flag_set -- notify another thread about an event. - * - * Set event if an event handle has been stored in the flag, and - * set flag to -1 otherwise. Note that -1 cannot be a valid handle value. - */ -INLINE void -ptw32_mcs_flag_set (HANDLE * flag) -{ - HANDLE e = (HANDLE)(PTW32_INTERLOCKED_SIZE)PTW32_INTERLOCKED_COMPARE_EXCHANGE_SIZE( - (PTW32_INTERLOCKED_SIZEPTR)flag, - (PTW32_INTERLOCKED_SIZE)-1, - (PTW32_INTERLOCKED_SIZE)0); - if ((HANDLE)0 != e) - { - /* another thread has already stored an event handle in the flag */ - SetEvent(e); - } -} - -/* - * ptw32_mcs_flag_set -- wait for notification from another. - * - * Store an event handle in the flag and wait on it if the flag has not been - * set, and proceed without creating an event otherwise. - */ -INLINE void -ptw32_mcs_flag_wait (HANDLE * flag) -{ - if ((PTW32_INTERLOCKED_LONG)0 == - PTW32_INTERLOCKED_EXCHANGE_ADD_SIZE((PTW32_INTERLOCKED_SIZEPTR)flag, - (PTW32_INTERLOCKED_SIZE)0)) /* MBR fence */ - { - /* the flag is not set. create event. */ - - HANDLE e = CreateEvent(NULL, PTW32_FALSE, PTW32_FALSE, NULL); - - if ((PTW32_INTERLOCKED_SIZE)0 == PTW32_INTERLOCKED_COMPARE_EXCHANGE_SIZE( - (PTW32_INTERLOCKED_SIZEPTR)flag, - (PTW32_INTERLOCKED_SIZE)e, - (PTW32_INTERLOCKED_SIZE)0)) - { - /* stored handle in the flag. wait on it now. */ - WaitForSingleObject(e, INFINITE); - } - - CloseHandle(e); - } -} - -/* - * ptw32_mcs_lock_acquire -- acquire an MCS lock. - * - * See: - * J. M. Mellor-Crummey and M. L. Scott. - * Algorithms for Scalable Synchronization on Shared-Memory Multiprocessors. - * ACM Transactions on Computer Systems, 9(1):21-65, Feb. 1991. - */ -#if defined(PTW32_BUILD_INLINED) -INLINE -#endif /* PTW32_BUILD_INLINED */ -void -ptw32_mcs_lock_acquire (ptw32_mcs_lock_t * lock, ptw32_mcs_local_node_t * node) -{ - ptw32_mcs_local_node_t *pred; - - node->lock = lock; - node->nextFlag = 0; - node->readyFlag = 0; - node->next = 0; /* initially, no successor */ - - /* queue for the lock */ - pred = (ptw32_mcs_local_node_t *)PTW32_INTERLOCKED_EXCHANGE_PTR((PTW32_INTERLOCKED_PVOID_PTR)lock, - (PTW32_INTERLOCKED_PVOID)node); - - if (0 != pred) - { - /* the lock was not free. link behind predecessor. */ - pred->next = node; - ptw32_mcs_flag_set(&pred->nextFlag); - ptw32_mcs_flag_wait(&node->readyFlag); - } -} - -/* - * ptw32_mcs_lock_release -- release an MCS lock. - * - * See: - * J. M. Mellor-Crummey and M. L. Scott. - * Algorithms for Scalable Synchronization on Shared-Memory Multiprocessors. - * ACM Transactions on Computer Systems, 9(1):21-65, Feb. 1991. - */ -#if defined(PTW32_BUILD_INLINED) -INLINE -#endif /* PTW32_BUILD_INLINED */ -void -ptw32_mcs_lock_release (ptw32_mcs_local_node_t * node) -{ - ptw32_mcs_lock_t *lock = node->lock; - ptw32_mcs_local_node_t *next = - (ptw32_mcs_local_node_t *) - PTW32_INTERLOCKED_EXCHANGE_ADD_SIZE((PTW32_INTERLOCKED_SIZEPTR)&node->next, (PTW32_INTERLOCKED_SIZE)0); /* MBR fence */ - - if (0 == next) - { - /* no known successor */ - - if (node == (ptw32_mcs_local_node_t *) - PTW32_INTERLOCKED_COMPARE_EXCHANGE_PTR((PTW32_INTERLOCKED_PVOID_PTR)lock, - (PTW32_INTERLOCKED_PVOID)0, - (PTW32_INTERLOCKED_PVOID)node)) - { - /* no successor, lock is free now */ - return; - } - - /* A successor has started enqueueing behind us so wait for them to link to us */ - ptw32_mcs_flag_wait(&node->nextFlag); - next = (ptw32_mcs_local_node_t *) - PTW32_INTERLOCKED_EXCHANGE_ADD_SIZE((PTW32_INTERLOCKED_SIZEPTR)&node->next, (PTW32_INTERLOCKED_SIZE)0); /* MBR fence */ - } - - /* pass the lock */ - ptw32_mcs_flag_set(&next->readyFlag); -} - -/* - * ptw32_mcs_lock_try_acquire - */ -#if defined(PTW32_BUILD_INLINED) -INLINE -#endif /* PTW32_BUILD_INLINED */ -int -ptw32_mcs_lock_try_acquire (ptw32_mcs_lock_t * lock, ptw32_mcs_local_node_t * node) -{ - node->lock = lock; - node->nextFlag = 0; - node->readyFlag = 0; - node->next = 0; /* initially, no successor */ - - return ((PTW32_INTERLOCKED_PVOID)PTW32_INTERLOCKED_COMPARE_EXCHANGE_PTR((PTW32_INTERLOCKED_PVOID_PTR)lock, - (PTW32_INTERLOCKED_PVOID)node, - (PTW32_INTERLOCKED_PVOID)0) - == (PTW32_INTERLOCKED_PVOID)0) ? 0 : EBUSY; -} - -/* - * ptw32_mcs_node_transfer -- move an MCS lock local node, usually from thread - * space to, for example, global space so that another thread can release - * the lock on behalf of the current lock owner. - * - * Example: used in pthread_barrier_wait where we want the last thread out of - * the barrier to release the lock owned by the last thread to enter the barrier - * (the one that releases all threads but not necessarily the last to leave). - * - * Should only be called by the thread that has the lock. - */ -#if defined(PTW32_BUILD_INLINED) -INLINE -#endif /* PTW32_BUILD_INLINED */ -void -ptw32_mcs_node_transfer (ptw32_mcs_local_node_t * new_node, ptw32_mcs_local_node_t * old_node) -{ - new_node->lock = old_node->lock; - new_node->nextFlag = 0; /* Not needed - used only in initial Acquire */ - new_node->readyFlag = 0; /* Not needed - we were waiting on this */ - new_node->next = 0; - - if ((ptw32_mcs_local_node_t *)PTW32_INTERLOCKED_COMPARE_EXCHANGE_PTR((PTW32_INTERLOCKED_PVOID_PTR)new_node->lock, - (PTW32_INTERLOCKED_PVOID)new_node, - (PTW32_INTERLOCKED_PVOID)old_node) - != old_node) - { - /* - * A successor has queued after us, so wait for them to link to us - */ - while (old_node->next == 0) - { - sched_yield(); - } - new_node->next = old_node->next; - } -} diff --git a/platform/win32/msvc/external/pthreads.2/ptw32_OLL_lock.c b/platform/win32/msvc/external/pthreads.2/ptw32_OLL_lock.c deleted file mode 100644 index 3a4295c66a7..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ptw32_OLL_lock.c +++ /dev/null @@ -1,734 +0,0 @@ -/* - * ptw32_OLL_lock.c - * - * Description: - * This translation unit implements extended reader/writer queue-based locks. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -/* - * About the OLL lock (Scalable Reader-Writer Lock): - * - * OLL locks are queue-based locks similar to the MCS queue lock, where the queue - * nodes are local to the thread but where reader threads can enter the critical - * section immediately without going through a central guard lock if there are - * already readers holding the lock. - * - * Covered by United States Patent Application 20100241774 (Oracle) - */ - -#include "pthread.h" -#include "sched.h" -#include "implement.h" - -/* - * C-SNZI support - */ -typedef union ptw32_oll_counter_t_ ptw32_oll_counter_t; -typedef struct ptw32_oll_snziRoot_t_ ptw32_oll_snziRoot_t; -typedef struct ptw32_oll_snziNode_t_ ptw32_oll_snziNode_t; -typedef union ptw32_oll_snziNodeOrRoot_t_ ptw32_oll_snziNodeOrRoot_t; -typedef struct ptw32_oll_queryResult_t_ ptw32_oll_queryResult_t; -typedef struct ptw32_oll_ticket_t_ ptw32_oll_ticket_t; -typedef struct ptw32_oll_csnzi_t_ ptw32_oll_csnzi_t; - -enum -{ - ptw32_archWidth = sizeof(size_t)*8, - ptw32_oll_countWidth = ptw32_archWidth-2 -}; - -#define PTW32_OLL_MAXREADERS (((size_t)2<<(ptw32_oll_countWidth-1))-1) - -union ptw32_oll_counter_t_ -{ - size_t word : ptw32_archWidth; - struct - { - /* - * This needs to be a single word - * - * ------------------------------------ - * | STATE | ROOT | COUNT (readers) | - * ------------------------------------ - * 63 / 31 62 / 30 61 / 29 .. 0 - */ - size_t count : ptw32_oll_countWidth; - size_t root : 1; /* ROOT or NODE */ - size_t state : 1; /* OPEN or CLOSED (root only) */ - } internal; -}; - -struct ptw32_oll_snziRoot_t_ -{ - /* - * "counter" must be at same offset in both - * ptw32_oll_snziNode_t and ptw32_oll_snziRoot_t - */ - ptw32_oll_counter_t counter; -}; - -enum -{ - ptw32_oll_snziRoot_open = 0, - ptw32_oll_snziRoot_closed = 1 -}; - -enum -{ - ptw32_oll_snzi_root = 0, - ptw32_oll_snzi_node = 1 -}; - -/* - * Some common SNZI root whole-word states that can be used to set or compare - * root words with a single operation. - */ -ptw32_oll_snziRoot_t ptw32_oll_snziRoot_openAndZero = {.counter.internal.count = 0, - .counter.internal.root = ptw32_oll_snzi_root, - .counter.internal.state = ptw32_oll_snziRoot_open}; -ptw32_oll_snziRoot_t ptw32_oll_snziRoot_closedAndZero = {.counter.internal.count = 0, - .counter.internal.root = ptw32_oll_snzi_root, - .counter.internal.state = ptw32_oll_snziRoot_closed}; - -struct ptw32_oll_queryResult_t_ -{ - BOOL nonZero; - BOOL open; -}; - -union ptw32_oll_snziNodeOrRoot_t_ -{ - ptw32_oll_snziRoot_t* rootPtr; - ptw32_oll_snziNode_t* nodePtr; -}; - -struct ptw32_oll_snziNode_t_ -{ - /* "counter" must be at same offset in both - * ptw32_oll_snziNode_t and ptw32_oll_snziRoot_t - */ - ptw32_oll_counter_t counter; - ptw32_oll_snziNodeOrRoot_t parentPtr; -}; - -struct ptw32_oll_ticket_t_ -{ - ptw32_oll_snziNodeOrRoot_t snziNodeOrRoot; -}; - -ptw32_oll_ticket_t ptw32_oll_ticket_null = {NULL}; - -struct ptw32_oll_csnzi_t_ -{ - ptw32_oll_snziRoot_t proxyRoot; - ptw32_oll_snziNode_t leafs[]; -}; - -/* - * FOLL lock support - */ - -typedef struct ptw32_foll_node_t_ ptw32_foll_node_t; -typedef struct ptw32_foll_local_t_ ptw32_foll_local_t; -typedef struct ptw32_foll_rwlock_t_ ptw32_foll_rwlock_t; - -enum -{ - ptw32_srwl_reader, - ptw32_srwl_writer -}; - -enum -{ - ptw32_srwl_free, - ptw32_srwl_in_use -}; - -struct ptw32_foll_node_t_ -{ - ptw32_foll_node_t* qNextPtr; - ptw32_oll_csnzi_t* csnziPtr; - ptw32_foll_node_t* nextPtr; - int kind; - int allocState; - BOOL spin; -}; - -struct ptw32_foll_local_t_ -{ - ptw32_foll_node_t* rNodePtr; // Default read node. Immutable - ptw32_foll_node_t* wNodePtr; // Write node. Immutable. - ptw32_foll_node_t* departFromPtr; // List node we last arrived at. - ptw32_oll_ticket_t ticket; // C-SNZI ticket -}; - -struct ptw32_foll_rwlock_t_ -{ - ptw32_foll_node_t* tailPtr; - ptw32_foll_node_t* rNodesPtr; // Head of reader node -}; - -/* - * ShouldArriveAtTree() returns true if: - * the compare_exchange in Arrive() fails too often under read access; or - * ?? - * Note that this is measured across all access to - * this lock, not just this attempt, so that highly - * read-contended locks will use C-SNZI. Lightly - * read-contended locks can reduce memory usage and some - * processing by using the root directly. - */ -BOOL -ptw32_oll_ShouldArriveAtTree() -{ - return PTW32_FALSE; -} - -size_t -ptw32_oll_GetLeafForThread() -{ - return 0; -} - -/* - * Only readers call ptw32_oll_Arrive() - * - * Checks whether the C-SNZI state is OPEN, and if so, - * increments the surplus of the C-SNZI by either directly - * arriving at the root node, or calling TreeArrive on one - * of the leaf nodes. Returns a ticket pointing to the node - * that was arrived at. If the state is CLOSED, makes no - * change and returns a ticket that contains no pointer. - */ -ptw32_oll_ticket_t -ptw32_oll_Arrive(ptw32_oll_csnzi_t* csnzi) -{ - for (;;) - { - ptw32_oll_ticket_t ticket; - ptw32_oll_snziRoot_t oldProxy = csnzi->proxyRoot; - if (oldProxy.counter.internal.state != ptw32_oll_snziRoot_open) - { - ticket.snziNodeOrRoot.rootPtr = (ptw32_oll_snziRoot_t*)NULL; - return ticket; - } - if (!ptw32_oll_ShouldArriveAtTree()) - { - ptw32_oll_snziRoot_t newProxy = oldProxy; - newProxy.counter.internal.count++; - if (PTW32_INTERLOCKED_COMPARE_EXCHANGE_SIZE( - (PTW32_INTERLOCKED_SIZEPTR)&csnzi->proxyRoot.counter, - (PTW32_INTERLOCKED_SIZE)newProxy.counter.word, - (PTW32_INTERLOCKED_SIZE)oldProxy.counter.word) - == (PTW32_INTERLOCKED_SIZE)oldProxy.counter.word) - { - /* Exchange successful */ - ticket.snziNodeOrRoot.rootPtr = &csnzi->proxyRoot; - return ticket; - } - } - else - { - ptw32_oll_snziNode_t* leafPtr = &csnzi->leafs[ptw32_oll_GetLeafForThread()]; - ticket.snziNodeOrRoot.nodePtr = (ptw32_oll_TreeArrive(leafPtr) ? leafPtr : (ptw32_oll_snziNode_t*)NULL); - return ticket; - } - } -} - -/* - * Decrements the C-SNZI surplus. Returns false iff the - * resulting state is CLOSED and the surplus is zero. - * Ticket must have been returned by an arrival. Must have - * received this ticket from Arrive more times than Depart - * has been called with the ticket. (Thus, the surplus - * must be greater than zero.) - */ -BOOL -ptw32_oll_Depart(ptw32_oll_ticket_t ticket) -{ - return ptw32_oll_TreeDepart(ticket.snziNodeOrRoot); -} - -/* - * Increments the C-SNZI surplus and returns true if the - * C-SNZI is open or has a surplus. Calls TreeArrive - * recursively on the node’s parent if needed. - * Otherwise, returns false without making any changes. - */ -BOOL -ptw32_oll_TreeArrive(ptw32_oll_snziNodeOrRoot_t snziNodeOrRoot) -{ - if (snziNodeOrRoot.nodePtr->counter.internal.root != ptw32_oll_snzi_root) - { - /* Non-root node */ - ptw32_oll_counter_t newCounter, oldCounter; - BOOL arrivedAtParent = PTW32_FALSE; - do - { - oldCounter = snziNodeOrRoot.nodePtr->counter; - if (0 == oldCounter.internal.count && !arrivedAtParent) - { - if (ptw32_oll_TreeArrive(snziNodeOrRoot.nodePtr->parentPtr)) - arrivedAtParent = PTW32_TRUE; - else - return PTW32_FALSE; - } - newCounter = oldCounter; - newCounter.internal.count++; - } while (PTW32_INTERLOCKED_COMPARE_EXCHANGE_SIZE( - (PTW32_INTERLOCKED_SIZEPTR)&snziNodeOrRoot.nodePtr->counter, - (PTW32_INTERLOCKED_SIZE)newCounter.word, - (PTW32_INTERLOCKED_SIZE)oldCounter.word) - != (PTW32_INTERLOCKED_SIZE)oldCounter.word); - if (newCounter.internal.count != 0 && arrivedAtParent) - ptw32_oll_TreeDepart(snziNodeOrRoot.nodePtr->parentPtr); - return PTW32_TRUE; - } - else - { - /* Root node */ - ptw32_oll_snziRoot_t newRoot, oldRoot; - do - { - oldRoot = *(ptw32_oll_snziRoot_t*)snziNodeOrRoot.rootPtr; - if (oldRoot.counter.word == ptw32_oll_snziRoot_closedAndZero.counter.word) - return PTW32_FALSE; - newRoot = oldRoot; - newRoot.counter.internal.count++; - } while (PTW32_INTERLOCKED_COMPARE_EXCHANGE_SIZE( - (PTW32_INTERLOCKED_SIZEPTR)&snziNodeOrRoot.rootPtr->counter, - (PTW32_INTERLOCKED_SIZE)newRoot.counter.word, - (PTW32_INTERLOCKED_SIZE)oldRoot.counter.word) - != (PTW32_INTERLOCKED_SIZE)oldRoot.counter.word); - return PTW32_TRUE; - } -} - -/* - * Decrements the C-SNZI surplus, calling TreeDepart - * recursively on the node’s parent if needed. Returns - * false iff the resulting state of the C-SNZI is CLOSED - * and the surplus is zero. Otherwise, returns true. - */ -BOOL -ptw32_oll_TreeDepart(ptw32_oll_snziNodeOrRoot_t snziNodeOrRoot) -{ - if (snziNodeOrRoot.nodePtr->counter.internal.root != ptw32_oll_snzi_root) - { - /* Non-root node */ - ptw32_oll_counter_t newCounter, oldCounter; - do - { - newCounter = oldCounter = snziNodeOrRoot.nodePtr->counter; - newCounter.internal.count--; - } while (PTW32_INTERLOCKED_COMPARE_EXCHANGE_SIZE( - (PTW32_INTERLOCKED_SIZEPTR)&snziNodeOrRoot.nodePtr->counter, - (PTW32_INTERLOCKED_SIZE)newCounter.word, - (PTW32_INTERLOCKED_SIZE)oldCounter.word) - != (PTW32_INTERLOCKED_SIZE)oldCounter.word); - return (0 == newCounter.internal.count) - ? ptw32_oll_TreeDepart(snziNodeOrRoot.nodePtr->parentPtr) - : PTW32_TRUE; - } - else - { - /* Root node */ - ptw32_oll_snziRoot_t newRoot, oldRoot; - do - { - newRoot = oldRoot = *(ptw32_oll_snziRoot_t*)snziNodeOrRoot.rootPtr; - newRoot.counter.internal.count--; - } while (PTW32_INTERLOCKED_COMPARE_EXCHANGE_SIZE( - (PTW32_INTERLOCKED_SIZEPTR)&snziNodeOrRoot.rootPtr->counter, - (PTW32_INTERLOCKED_SIZE)newRoot.counter.word, - (PTW32_INTERLOCKED_SIZE)oldRoot.counter.word) - != (PTW32_INTERLOCKED_SIZE)oldRoot.counter.word); - return (newRoot.counter.word != ptw32_oll_snziRoot_closedAndZero.counter.word); - } -} - -/* - * Opens a C-SNZI object. Requires C-SNZI state to be - * CLOSED and the surplus to be zero. - */ -void -ptw32_oll_Open(ptw32_oll_csnzi_t* csnziPtr) -{ - csnziPtr->proxyRoot = ptw32_oll_snziRoot_openAndZero; -} - -/* - * Opens a C-SNZI object while atomically performing count - * arrivals. Requires C-SNZI state to be CLOSED and - * the surplus to be zero. - */ -void -ptw32_oll_OpenWithArrivals(ptw32_oll_csnzi_t* csnziPtr, size_t count, BOOL close) -{ - csnziPtr->proxyRoot.counter.internal.count = count; - csnziPtr->proxyRoot.counter.internal.state = (close ? ptw32_oll_snziRoot_closed : ptw32_oll_snziRoot_open); -} - -/* - * Closes a C-SNZI object. Returns true iff the C-SNZI - * state changed from OPEN to CLOSED and the surplus is - * zero. - */ -BOOL -ptw32_oll_Close(ptw32_oll_csnzi_t* csnziPtr) -{ - ptw32_oll_snziRoot_t newProxy, oldProxy; - do - { - oldProxy = csnziPtr->proxyRoot; - if (oldProxy.counter.internal.state != ptw32_oll_snziRoot_open) - { - return PTW32_FALSE; - } - newProxy = oldProxy; - newProxy.counter.internal.state = ptw32_oll_snziRoot_closed; - } while (PTW32_INTERLOCKED_COMPARE_EXCHANGE_SIZE( - (PTW32_INTERLOCKED_SIZEPTR)&csnziPtr->proxyRoot.counter, - (PTW32_INTERLOCKED_SIZE)newProxy.counter.word, - (PTW32_INTERLOCKED_SIZE)oldProxy.counter.word) - != (PTW32_INTERLOCKED_SIZE)oldProxy.counter.word); - return (newProxy.counter.word == ptw32_oll_snziRoot_closedAndZero.counter.word); -} - -/* - * Closes a C-SNZI if its surplus is zero. Otherwise, does - * nothing. Returns true iff C-SNZI state changed from - * OPEN to CLOSED. - */ -BOOL -ptw32_oll_CloseIfEmpty(ptw32_oll_csnzi_t* csnziPtr) -{ - ptw32_oll_snziRoot_t newProxy, oldProxy; - do - { - oldProxy = csnziPtr->proxyRoot; - if (oldProxy.counter.word != ptw32_oll_snziRoot_openAndZero.counter.word) - { - return PTW32_FALSE; - } - newProxy = ptw32_oll_snziRoot_closedAndZero; - } while (PTW32_INTERLOCKED_COMPARE_EXCHANGE_SIZE( - (PTW32_INTERLOCKED_SIZEPTR)&csnziPtr->proxyRoot.counter, - (PTW32_INTERLOCKED_SIZE)newProxy.counter.word, - (PTW32_INTERLOCKED_SIZE)oldProxy.counter.word) - != (PTW32_INTERLOCKED_SIZE)oldProxy.counter.word); - return PTW32_TRUE; -} - -/* - * Returns whether the C-SNZI has a nonzero surplus and - * whether the C-SNZI is open. - * "nonZero" doesn't appear to be used anywhere in the algorithms. - */ -ptw32_oll_queryResult_t -ptw32_oll_Query(ptw32_oll_csnzi_t* csnziPtr) -{ - ptw32_oll_queryResult_t query; - ptw32_oll_snziRoot_t proxy = csnziPtr->proxyRoot; - - query.nonZero = (proxy.counter.internal.count > 0); - query.open = (proxy.counter.internal.state == ptw32_oll_snziRoot_open); - return query; -} - -/* - * Returns whether the Arrive operation that returned - * the ticket succeeded. - */ -BOOL -ptw32_oll_Arrived(ptw32_oll_ticket_t t) -{ - return (t.snziNodeOrRoot.nodePtr != NULL); -} - -/* - * Constructs and returns a ticket that can be used to - * depart from the root node. - */ -ptw32_oll_ticket_t -ptw32_oll_DirectTicket(ptw32_oll_csnzi_t* csnziPtr) -{ - ptw32_oll_ticket_t ticket; - ticket.snziNodeOrRoot.rootPtr = &csnziPtr->proxyRoot; - return ticket; -} - -/* Scalable RW Locks */ - -typedef struct ptw32_srwl_rwlock_t_ ptw32_srwl_rwlock_t; -typedef struct ptw32_srwl_node_t_ ptw32_srwl_node_t; -typedef struct ptw32_srwl_local_t_ ptw32_srwl_local_t; - -enum -{ - ptw32_srwl_reader = 0, - ptw32_srwl_writer = 1 -}; - -enum -{ - ptw32_srwl_free = 0, - ptw32_srwl_in_use = 1 -}; - -struct ptw32_srwl_rwlock_t_ -{ - ptw32_srwl_node_t* tailPtr; - ptw32_srwl_node_t* readerNodePtr; -}; - -struct ptw32_srwl_node_t_ -{ - ptw32_srwl_node_t* qNextPtr; - ptw32_oll_csnzi_t* csnziPtr; - ptw32_srwl_node_t* nextReaderPtr; - int kind; /* ptw32_srwl_reader, ptw32_srwl_writer */ - int allocState; /* ptw32_srwl_free, ptw32_srwl_in_use */ - BOOL spin; -}; - -/* - * When a ptw32_srwl_local_t is instantiated the "kind" of each of - * rNode and wNode must be set as appropriate. This is the only - * time "kind" is set. - */ -struct ptw32_srwl_local_t_ -{ - ptw32_srwl_node_t* rNodePtr; - ptw32_srwl_node_t* wNodePtr; - ptw32_srwl_node_t* departFromPtr; - ptw32_oll_ticket_t ticket; -}; - -/* Allocates a new reader node. */ -ptw32_srwl_node_t* -ptw32_srwl_AllocReaderNode(ptw32_srwl_local_t* local) -{ - ptw32_srwl_node_t* currNodePtr = local->rNodePtr; - for (;;) - { - if (currNodePtr->allocState == ptw32_srwl_free) - { - if (PTW32_INTERLOCKED_COMPARE_EXCHANGE_LONG( - (PTW32_INTERLOCKED_LONGPTR)&currNodePtr->allocState, - (PTW32_INTERLOCKED_LONG)ptw32_srwl_in_use, - (PTW32_INTERLOCKED_LONG)ptw32_srwl_free) - == (PTW32_INTERLOCKED_LONG)ptw32_srwl_in_use) - { - return currNodePtr; - } - } - currNodePtr = currNodePtr->next; - } -} - -/* - * Frees a reader node. Requires that its allocState - * is ptw32_srwl_in_use. - */ -void -ptw32_srwl_FreeReaderNode(ptw32_srwl_node_t* nodePtr) -{ - nodePtr->allocState := ptw32_srwl_free; -} - -void -ptw32_srwl_WriterLock(ptw32_srwl_rwlock_t* lockPtr, ptw32_srwl_local_t* localPtr) -{ - oldTailPtr = (ptw32_srwl_rwlock_t*)PTW32_INTERLOCKED_EXCHANGE_PTR( - (PTW32_INTERLOCKED_PVOID_PTR)&lockPtr->tailPtr, - (PTW32_INTERLOCKED_PVOID)localPtr->wNodePtr); - if (oldTailPtr != NULL) - { - localPtr->wNodePtr->spin := PTW32_TRUE; - oldTailPtr->qNextPtr = localPtr->wNodePtr; - if (oldTailPtr->kind == ptw32_srwl_writer) - { - while (localPtr->wNodePtr->spin); - } - else - { - /* Wait until node is properly recycled */ - while (ptw32_oll_Query(oldTailPtr->csnzi).open); - /* - * Close C-SNZI of previous reader node. - * If there are no readers to signal us, spin on - * previous node and free it before entering - * critical section. - */ - if (ptw32_oll_Close(oldTailPtr->csnzi)) - { - while (oldTailPtr->spin); - ptw32_srwl_FreeReaderNode(oldTailPtr); - } - else - { - while (localPtr->wNodePtr->spin); - } - } - } -} - -void -ptw32_srwl_WriterUnlock(ptw32_srwl_rwlock_t* lockPtr, ptw32_srwl_local_t* localPtr) -{ - if (localPtr->wNodePtr->qNextPtr == NULL) - { - if (PTW32_INTERLOCKED_COMPARE_EXCHANGE_PTR( - (PTW32_INTERLOCKED_PVOIDPTR)&lockPtr->tailPtr, - (PTW32_INTERLOCKED_PVOID)NULL, - (PTW32_INTERLOCKED_PVOID)localPtr->wNodePtr) - == (PTW32_INTERLOCKED_PVOID)NULL) - { - return; - } - else - { - while (localPtr->wNodePtr->qNextPtr == NULL); - } - } - /* Clean up */ - localPtr->wNodePtr->qNextPtr->spin = PTW32_FALSE; - localPtr->wNodePtr->qNextPtr = NULL; -} - -void -ptw32_srwl_ReaderLock(ptw32_srwl_rwlock_t* lockPtr, ptw32_srwl_local_t* localPtr) -{ - ptw32_srwl_node_t* rNodePtr = NULL; - for (;;) - { - ptw32_srwl_node_t* tailPtr = lockPtr->tailPtr; - /* If no nodes are in the queue */ - if (tailPtr == NULL) - { - if (rNodePtr == NULL) - { - rNodePtr = ptw32_srwl_AllocReaderNode(localPtr); - } - rNodePtr->spin = PTW32_FALSE; - if (PTW32_INTERLOCKED_COMPARE_EXCHANGE_PTR( - (PTW32_INTERLOCKED_PVOIDPTR)&lockPtr->tailPtr, - (PTW32_INTERLOCKED_PVOID)rNodePtr, - (PTW32_INTERLOCKED_PVOID)NULL) - == (PTW32_INTERLOCKED_PVOID)rNodePtr) - { - ptw32_oll_Open(rNodePtr->csnzi); - localPtr->ticket = ptw32_oll_Arrive(rNodePtr->csnzi); - if (ptw32_oll_Arrived(localPtr->ticket)) - { - localPtr->departFromPtr = rNodePtr; - return; - } - /* Avoid reusing inserted node */ - rNodePtr = NULL; - } - } - /* Otherwise, there is a node in the queue */ - else - { - /* Is last node a writer node? */ - if (tailPtr->kind == ptw32_srwl_writer) - { - if (rNodePtr == NULL) - { - rNodePtr = ptw32_srwl_AllocReaderNode(localPtr); - } - rNodePtr->spin = PTW32_TRUE; - if (PTW32_INTERLOCKED_COMPARE_EXCHANGE_PTR( - (PTW32_INTERLOCKED_PVOIDPTR)&lockPtr->tailPtr, - (PTW32_INTERLOCKED_PVOID)rNodePtr, - (PTW32_INTERLOCKED_PVOID)tailPtr) - == (PTW32_INTERLOCKED_PVOID)rNodePtr) - { - tailPtr->qNextPtr = rNodePtr; - localPtr->ticket = ptw32_oll_Arrive(rNodePtr->csnzi); - if (ptw32_oll_Arrived(localPtr->ticket)) - { - localPtr->departFromPtr = rNodePtr; - while (rNodePtr->spin); - return; - } - /* Avoid reusing inserted node */ - rNodePtr = NULL; - } - } - /* - * Otherwise, last node is a reader node. - * (tailPtr->kind == ptw32_srwl_reader) - */ - else - { - localPtr->ticket = ptw32_oll_Arrive(tailPtr->csnzi); - if (ptw32_oll_Arrived(localPtr->ticket)) - { - if (rNodePtr != NULL) - { - ptw32_srwl_FreeReaderNode(rNodePtr); - } - localPtr->departFromPtr = tailPtr; - while (tailPtr->spin); - return; - } - } - } - } -} - -void -ptw32_srwl_ReaderUnlock(ptw32_srwl_rwlock_t* lockPtr, ptw32_srwl_local_t* localPtr) -{ - if (ptw32_oll_Depart(localPtr->departFromPtr->csnzi, localPtr->ticket)) - { - return; - } - /* Clean up */ - localPtr->departFromPtr->qNextPtr->spin = PTW32_FALSE; - localPtr->departFromPtr->qNextPtr = NULL; - ptw32_srwl_FreeReaderNode(localPtr->departFromPtr); -} - - -#include - -int main() -{ - printf("%lx\n", PTW32_OLL_MAXREADERS); - return 0; -} - diff --git a/platform/win32/msvc/external/pthreads.2/ptw32_callUserDestroyRoutines.c b/platform/win32/msvc/external/pthreads.2/ptw32_callUserDestroyRoutines.c deleted file mode 100644 index cf46158af82..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ptw32_callUserDestroyRoutines.c +++ /dev/null @@ -1,232 +0,0 @@ -/* - * ptw32_callUserDestroyRoutines.c - * - * Description: - * This translation unit implements routines which are private to - * the implementation and may be used throughout it. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -#if defined(__CLEANUP_CXX) -# if defined(_MSC_VER) -# include -# elif defined(__WATCOMC__) -# include -# include -# else -# if defined(__GNUC__) && __GNUC__ < 3 -# include -# else -# include - using - std::terminate; -# endif -# endif -#endif - -void -ptw32_callUserDestroyRoutines (pthread_t thread) - /* - * ------------------------------------------------------------------- - * DOCPRIVATE - * - * This the routine runs through all thread keys and calls - * the destroy routines on the user's data for the current thread. - * It simulates the behaviour of POSIX Threads. - * - * PARAMETERS - * thread - * an instance of pthread_t - * - * RETURNS - * N/A - * ------------------------------------------------------------------- - */ -{ - ThreadKeyAssoc * assoc; - - if (thread.p != NULL) - { - ptw32_mcs_local_node_t threadLock; - ptw32_mcs_local_node_t keyLock; - int assocsRemaining; - int iterations = 0; - ptw32_thread_t * sp = (ptw32_thread_t *) thread.p; - - /* - * Run through all Thread<-->Key associations - * for the current thread. - * - * Do this process at most PTHREAD_DESTRUCTOR_ITERATIONS times. - */ - do - { - assocsRemaining = 0; - iterations++; - - ptw32_mcs_lock_acquire(&(sp->threadLock), &threadLock); - /* - * The pointer to the next assoc is stored in the thread struct so that - * the assoc destructor in pthread_key_delete can adjust it - * if it deletes this assoc. This can happen if we fail to acquire - * both locks below, and are forced to release all of our locks, - * leaving open the opportunity for pthread_key_delete to get in - * before us. - */ - sp->nextAssoc = sp->keys; - ptw32_mcs_lock_release(&threadLock); - - for (;;) - { - void * value; - pthread_key_t k; - void (*destructor) (void *); - - /* - * First we need to serialise with pthread_key_delete by locking - * both assoc guards, but in the reverse order to our convention, - * so we must be careful to avoid deadlock. - */ - ptw32_mcs_lock_acquire(&(sp->threadLock), &threadLock); - - if ((assoc = (ThreadKeyAssoc *)sp->nextAssoc) == NULL) - { - /* Finished */ - ptw32_mcs_lock_release(&threadLock); - break; - } - else - { - /* - * assoc->key must be valid because assoc can't change or be - * removed from our chain while we hold at least one lock. If - * the assoc was on our key chain then the key has not been - * deleted yet. - * - * Now try to acquire the second lock without deadlocking. - * If we fail, we need to relinquish the first lock and the - * processor and then try to acquire them all again. - */ - if (ptw32_mcs_lock_try_acquire(&(assoc->key->keyLock), &keyLock) == EBUSY) - { - ptw32_mcs_lock_release(&threadLock); - Sleep(0); - /* - * Go around again. - * If pthread_key_delete has removed this assoc in the meantime, - * sp->nextAssoc will point to a new assoc. - */ - continue; - } - } - - /* We now hold both locks */ - - sp->nextAssoc = assoc->nextKey; - - /* - * Key still active; pthread_key_delete - * will block on these same mutexes before - * it can release actual key; therefore, - * key is valid and we can call the destroy - * routine; - */ - k = assoc->key; - destructor = k->destructor; - value = TlsGetValue(k->key); - TlsSetValue (k->key, NULL); - - // Every assoc->key exists and has a destructor - if (value != NULL && iterations <= PTHREAD_DESTRUCTOR_ITERATIONS) - { - /* - * Unlock both locks before the destructor runs. - * POSIX says pthread_key_delete can be run from destructors, - * and that probably includes with this key as target. - * pthread_setspecific can also be run from destructors and - * also needs to be able to access the assocs. - */ - ptw32_mcs_lock_release(&threadLock); - ptw32_mcs_lock_release(&keyLock); - - assocsRemaining++; - -#if defined(__cplusplus) - - try - { - /* - * Run the caller's cleanup routine. - */ - destructor (value); - } - catch (...) - { - /* - * A system unexpected exception has occurred - * running the user's destructor. - * We get control back within this block in case - * the application has set up it's own terminate - * handler. Since we are leaving the thread we - * should not get any internal pthreads - * exceptions. - */ - terminate (); - } - -#else /* __cplusplus */ - - /* - * Run the caller's cleanup routine. - */ - destructor (value); - -#endif /* __cplusplus */ - - } - else - { - /* - * Remove association from both the key and thread chains - * and reclaim it's memory resources. - */ - ptw32_tkAssocDestroy (assoc); - ptw32_mcs_lock_release(&threadLock); - ptw32_mcs_lock_release(&keyLock); - } - } - } - while (assocsRemaining); - } -} /* ptw32_callUserDestroyRoutines */ diff --git a/platform/win32/msvc/external/pthreads.2/ptw32_calloc.c b/platform/win32/msvc/external/pthreads.2/ptw32_calloc.c deleted file mode 100644 index bdac89e9a3e..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ptw32_calloc.c +++ /dev/null @@ -1,56 +0,0 @@ -/* - * ptw32_calloc.c - * - * Description: - * This translation unit implements miscellaneous thread functions. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -#if defined(NEED_CALLOC) -void * -ptw32_calloc (size_t n, size_t s) -{ - unsigned int m = n * s; - void *p; - - p = malloc (m); - if (p == NULL) - return NULL; - - memset (p, 0, m); - - return p; -} -#endif diff --git a/platform/win32/msvc/external/pthreads.2/ptw32_cond_check_need_init.c b/platform/win32/msvc/external/pthreads.2/ptw32_cond_check_need_init.c deleted file mode 100644 index 210c7632e40..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ptw32_cond_check_need_init.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * ptw32_cond_check_need_init.c - * - * Description: - * This translation unit implements condition variables and their primitives. - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -INLINE int -ptw32_cond_check_need_init (pthread_cond_t * cond) -{ - int result = 0; - ptw32_mcs_local_node_t node; - - /* - * The following guarded test is specifically for statically - * initialised condition variables (via PTHREAD_OBJECT_INITIALIZER). - */ - ptw32_mcs_lock_acquire(&ptw32_cond_test_init_lock, &node); - - /* - * We got here possibly under race - * conditions. Check again inside the critical section. - * If a static cv has been destroyed, the application can - * re-initialise it only by calling pthread_cond_init() - * explicitly. - */ - if (*cond == PTHREAD_COND_INITIALIZER) - { - result = pthread_cond_init (cond, NULL); - } - else if (*cond == NULL) - { - /* - * The cv has been destroyed while we were waiting to - * initialise it, so the operation that caused the - * auto-initialisation should fail. - */ - result = EINVAL; - } - - ptw32_mcs_lock_release(&node); - - return result; -} diff --git a/platform/win32/msvc/external/pthreads.2/ptw32_getprocessors.c b/platform/win32/msvc/external/pthreads.2/ptw32_getprocessors.c deleted file mode 100644 index 7772ec7fbfa..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ptw32_getprocessors.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - * ptw32_getprocessors.c - * - * Description: - * This translation unit implements routines which are private to - * the implementation and may be used throughout it. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -/* - * ptw32_getprocessors() - * - * Get the number of CPUs available to the process. - * - * If the available number of CPUs is 1 then pthread_spin_lock() - * will block rather than spin if the lock is already owned. - * - * pthread_spin_init() calls this routine when initialising - * a spinlock. If the number of available processors changes - * (after a call to SetProcessAffinityMask()) then only - * newly initialised spinlocks will notice. - */ -int -ptw32_getprocessors (int *count) -{ - DWORD_PTR vProcessCPUs; - DWORD_PTR vSystemCPUs; - int result = 0; - -#if defined(NEED_PROCESS_AFFINITY_MASK) - - *count = 1; - -#else - - if (GetProcessAffinityMask (GetCurrentProcess (), - &vProcessCPUs, &vSystemCPUs)) - { - DWORD_PTR bit; - int CPUs = 0; - - for (bit = 1; bit != 0; bit <<= 1) - { - if (vProcessCPUs & bit) - { - CPUs++; - } - } - *count = CPUs; - } - else - { - result = EAGAIN; - } - -#endif - - return (result); -} diff --git a/platform/win32/msvc/external/pthreads.2/ptw32_is_attr.c b/platform/win32/msvc/external/pthreads.2/ptw32_is_attr.c deleted file mode 100644 index fc6fd6b8a6a..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ptw32_is_attr.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - * ptw32_is_attr.c - * - * Description: - * This translation unit implements operations on thread attribute objects. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -int -ptw32_is_attr (const pthread_attr_t * attr) -{ - /* Return 0 if the attr object is valid, non-zero otherwise. */ - - return (attr == NULL || - *attr == NULL || (*attr)->valid != PTW32_ATTR_VALID); -} diff --git a/platform/win32/msvc/external/pthreads.2/ptw32_mutex_check_need_init.c b/platform/win32/msvc/external/pthreads.2/ptw32_mutex_check_need_init.c deleted file mode 100644 index 1615bc5e035..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ptw32_mutex_check_need_init.c +++ /dev/null @@ -1,92 +0,0 @@ -/* - * ptw32_mutex_check_need_init.c - * - * Description: - * This translation unit implements mutual exclusion (mutex) primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -static struct pthread_mutexattr_t_ ptw32_recursive_mutexattr_s = - {PTHREAD_PROCESS_PRIVATE, PTHREAD_MUTEX_RECURSIVE}; -static struct pthread_mutexattr_t_ ptw32_errorcheck_mutexattr_s = - {PTHREAD_PROCESS_PRIVATE, PTHREAD_MUTEX_ERRORCHECK}; -static pthread_mutexattr_t ptw32_recursive_mutexattr = &ptw32_recursive_mutexattr_s; -static pthread_mutexattr_t ptw32_errorcheck_mutexattr = &ptw32_errorcheck_mutexattr_s; - - -INLINE int -ptw32_mutex_check_need_init (pthread_mutex_t * mutex) -{ - register int result = 0; - register pthread_mutex_t mtx; - ptw32_mcs_local_node_t node; - - ptw32_mcs_lock_acquire(&ptw32_mutex_test_init_lock, &node); - - /* - * We got here possibly under race - * conditions. Check again inside the critical section - * and only initialise if the mutex is valid (not been destroyed). - * If a static mutex has been destroyed, the application can - * re-initialise it only by calling pthread_mutex_init() - * explicitly. - */ - mtx = *mutex; - - if (mtx == PTHREAD_MUTEX_INITIALIZER) - { - result = pthread_mutex_init (mutex, NULL); - } - else if (mtx == PTHREAD_RECURSIVE_MUTEX_INITIALIZER) - { - result = pthread_mutex_init (mutex, &ptw32_recursive_mutexattr); - } - else if (mtx == PTHREAD_ERRORCHECK_MUTEX_INITIALIZER) - { - result = pthread_mutex_init (mutex, &ptw32_errorcheck_mutexattr); - } - else if (mtx == NULL) - { - /* - * The mutex has been destroyed while we were waiting to - * initialise it, so the operation that caused the - * auto-initialisation should fail. - */ - result = EINVAL; - } - - ptw32_mcs_lock_release(&node); - - return (result); -} diff --git a/platform/win32/msvc/external/pthreads.2/ptw32_new.c b/platform/win32/msvc/external/pthreads.2/ptw32_new.c deleted file mode 100644 index e1bb3c8eefe..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ptw32_new.c +++ /dev/null @@ -1,94 +0,0 @@ -/* - * ptw32_new.c - * - * Description: - * This translation unit implements miscellaneous thread functions. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -pthread_t -ptw32_new (void) -{ - pthread_t t; - pthread_t nil = {NULL, 0}; - ptw32_thread_t * tp; - - /* - * If there's a reusable pthread_t then use it. - */ - t = ptw32_threadReusePop (); - - if (NULL != t.p) - { - tp = (ptw32_thread_t *) t.p; - } - else - { - /* No reuse threads available */ - tp = (ptw32_thread_t *) calloc (1, sizeof(ptw32_thread_t)); - - if (tp == NULL) - { - return nil; - } - - /* ptHandle.p needs to point to it's parent ptw32_thread_t. */ - t.p = tp->ptHandle.p = tp; - t.x = tp->ptHandle.x = 0; - } - - /* Set default state. */ - tp->seqNumber = ++ptw32_threadSeqNumber; - tp->sched_priority = THREAD_PRIORITY_NORMAL; - tp->detachState = PTHREAD_CREATE_JOINABLE; - tp->cancelState = PTHREAD_CANCEL_ENABLE; - tp->cancelType = PTHREAD_CANCEL_DEFERRED; - tp->stateLock = 0; - tp->threadLock = 0; - tp->robustMxListLock = 0; - tp->robustMxList = NULL; - tp->cancelEvent = CreateEvent (0, (int) PTW32_TRUE, /* manualReset */ - (int) PTW32_FALSE, /* setSignaled */ - NULL); - - if (tp->cancelEvent == NULL) - { - ptw32_threadReusePush (tp->ptHandle); - return nil; - } - - return t; - -} diff --git a/platform/win32/msvc/external/pthreads.2/ptw32_processInitialize.c b/platform/win32/msvc/external/pthreads.2/ptw32_processInitialize.c deleted file mode 100644 index cb020375fa3..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ptw32_processInitialize.c +++ /dev/null @@ -1,92 +0,0 @@ -/* - * ptw32_processInitialize.c - * - * Description: - * This translation unit implements routines which are private to - * the implementation and may be used throughout it. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -ptw32_processInitialize (void) - /* - * ------------------------------------------------------ - * DOCPRIVATE - * This function performs process wide initialization for - * the pthread library. - * - * PARAMETERS - * N/A - * - * DESCRIPTION - * This function performs process wide initialization for - * the pthread library. - * If successful, this routine sets the global variable - * ptw32_processInitialized to TRUE. - * - * RESULTS - * TRUE if successful, - * FALSE otherwise - * - * ------------------------------------------------------ - */ -{ - if (ptw32_processInitialized) - { - /* - * Ignore if already initialized. this is useful for - * programs that uses a non-dll pthread - * library. Such programs must call ptw32_processInitialize() explicitly, - * since this initialization routine is automatically called only when - * the dll is loaded. - */ - return PTW32_TRUE; - } - - ptw32_processInitialized = PTW32_TRUE; - - /* - * Initialize Keys - */ - if ((pthread_key_create (&ptw32_selfThreadKey, NULL) != 0) || - (pthread_key_create (&ptw32_cleanupKey, NULL) != 0)) - { - - ptw32_processTerminate (); - } - - return (ptw32_processInitialized); - -} /* processInitialize */ diff --git a/platform/win32/msvc/external/pthreads.2/ptw32_processTerminate.c b/platform/win32/msvc/external/pthreads.2/ptw32_processTerminate.c deleted file mode 100644 index f761fe727c8..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ptw32_processTerminate.c +++ /dev/null @@ -1,105 +0,0 @@ -/* - * ptw32_processTerminate.c - * - * Description: - * This translation unit implements routines which are private to - * the implementation and may be used throughout it. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -void -ptw32_processTerminate (void) - /* - * ------------------------------------------------------ - * DOCPRIVATE - * This function performs process wide termination for - * the pthread library. - * - * PARAMETERS - * N/A - * - * DESCRIPTION - * This function performs process wide termination for - * the pthread library. - * This routine sets the global variable - * ptw32_processInitialized to FALSE - * - * RESULTS - * N/A - * - * ------------------------------------------------------ - */ -{ - if (ptw32_processInitialized) - { - ptw32_thread_t * tp, * tpNext; - ptw32_mcs_local_node_t node; - - if (ptw32_selfThreadKey != NULL) - { - /* - * Release ptw32_selfThreadKey - */ - pthread_key_delete (ptw32_selfThreadKey); - - ptw32_selfThreadKey = NULL; - } - - if (ptw32_cleanupKey != NULL) - { - /* - * Release ptw32_cleanupKey - */ - pthread_key_delete (ptw32_cleanupKey); - - ptw32_cleanupKey = NULL; - } - - ptw32_mcs_lock_acquire(&ptw32_thread_reuse_lock, &node); - - tp = ptw32_threadReuseTop; - while (tp != PTW32_THREAD_REUSE_EMPTY) - { - tpNext = tp->prevReuse; - free (tp); - tp = tpNext; - } - - ptw32_mcs_lock_release(&node); - - ptw32_processInitialized = PTW32_FALSE; - } - -} /* processTerminate */ diff --git a/platform/win32/msvc/external/pthreads.2/ptw32_relmillisecs.c b/platform/win32/msvc/external/pthreads.2/ptw32_relmillisecs.c deleted file mode 100644 index 9f1b62fbe5f..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ptw32_relmillisecs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * ptw32_relmillisecs.c - * - * Description: - * This translation unit implements miscellaneous thread functions. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" -#if !defined(NEED_FTIME) -#include -#endif - - -#if defined(PTW32_BUILD_INLINED) -INLINE -#endif /* PTW32_BUILD_INLINED */ -DWORD -ptw32_relmillisecs (const struct timespec * abstime) -{ - const int64_t NANOSEC_PER_MILLISEC = 1000000; - const int64_t MILLISEC_PER_SEC = 1000; - DWORD milliseconds; - int64_t tmpAbsMilliseconds; - int64_t tmpCurrMilliseconds; -#if defined(NEED_FTIME) - struct timespec currSysTime; - FILETIME ft; - SYSTEMTIME st; -#else /* ! NEED_FTIME */ -#if ( defined(_MSC_VER) && _MSC_VER >= 1300 ) || \ - ( (defined(__MINGW64__) || defined(__MINGW32__)) && __MSVCRT_VERSION__ >= 0x0601 ) - struct __timeb64 currSysTime; -#else - struct _timeb currSysTime; -#endif -#endif /* NEED_FTIME */ - - - /* - * Calculate timeout as milliseconds from current system time. - */ - - /* - * subtract current system time from abstime in a way that checks - * that abstime is never in the past, or is never equivalent to the - * defined INFINITE value (0xFFFFFFFF). - * - * Assume all integers are unsigned, i.e. cannot test if less than 0. - */ - tmpAbsMilliseconds = (int64_t)abstime->tv_sec * MILLISEC_PER_SEC; - tmpAbsMilliseconds += ((int64_t)abstime->tv_nsec + (NANOSEC_PER_MILLISEC/2)) / NANOSEC_PER_MILLISEC; - - /* get current system time */ - -#if defined(NEED_FTIME) - - GetSystemTime(&st); - SystemTimeToFileTime(&st, &ft); - /* - * GetSystemTimeAsFileTime(&ft); would be faster, - * but it does not exist on WinCE - */ - - ptw32_filetime_to_timespec(&ft, &currSysTime); - - tmpCurrMilliseconds = (int64_t)currSysTime.tv_sec * MILLISEC_PER_SEC; - tmpCurrMilliseconds += ((int64_t)currSysTime.tv_nsec + (NANOSEC_PER_MILLISEC/2)) - / NANOSEC_PER_MILLISEC; - -#else /* ! NEED_FTIME */ - -#if defined(_MSC_VER) && _MSC_VER >= 1400 - _ftime64_s(&currSysTime); -#elif ( defined(_MSC_VER) && _MSC_VER >= 1300 ) || \ - ( (defined(__MINGW64__) || defined(__MINGW32__)) && __MSVCRT_VERSION__ >= 0x0601 ) - _ftime64(&currSysTime); -#else - _ftime(&currSysTime); -#endif - - tmpCurrMilliseconds = (int64_t) currSysTime.time * MILLISEC_PER_SEC; - tmpCurrMilliseconds += (int64_t) currSysTime.millitm; - -#endif /* NEED_FTIME */ - - if (tmpAbsMilliseconds > tmpCurrMilliseconds) - { - milliseconds = (DWORD) (tmpAbsMilliseconds - tmpCurrMilliseconds); - if (milliseconds == INFINITE) - { - /* Timeouts must be finite */ - milliseconds--; - } - } - else - { - /* The abstime given is in the past */ - milliseconds = 0; - } - - return milliseconds; -} diff --git a/platform/win32/msvc/external/pthreads.2/ptw32_reuse.c b/platform/win32/msvc/external/pthreads.2/ptw32_reuse.c deleted file mode 100644 index 1f02a80e560..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ptw32_reuse.c +++ /dev/null @@ -1,151 +0,0 @@ -/* - * ptw32_threadReuse.c - * - * Description: - * This translation unit implements miscellaneous thread functions. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -/* - * How it works: - * A pthread_t is a struct (2x32 bit scalar types on IA-32, 2x64 bit on IA-64) - * which is normally passed/returned by value to/from pthreads routines. - * Applications are therefore storing a copy of the struct as it is at that - * time. - * - * The original pthread_t struct plus all copies of it contain the address of - * the thread state struct ptw32_thread_t_ (p), plus a reuse counter (x). Each - * ptw32_thread_t contains the original copy of it's pthread_t. - * Once malloced, a ptw32_thread_t_ struct is not freed until the process exits. - * - * The thread reuse stack is a simple LILO stack managed through a singly - * linked list element in the ptw32_thread_t. - * - * Each time a thread is destroyed, the ptw32_thread_t address is pushed onto the - * reuse stack after it's ptHandle's reuse counter has been incremented. - * - * The following can now be said from this: - * - two pthread_t's are identical if their ptw32_thread_t reference pointers - * are equal and their reuse counters are equal. That is, - * - * equal = (a.p == b.p && a.x == b.x) - * - * - a pthread_t copy refers to a destroyed thread if the reuse counter in - * the copy is not equal to the reuse counter in the original. - * - * threadDestroyed = (copy.x != ((ptw32_thread_t *)copy.p)->ptHandle.x) - * - */ - -/* - * Pop a clean pthread_t struct off the reuse stack. - */ -pthread_t -ptw32_threadReusePop (void) -{ - pthread_t t = {NULL, 0}; - ptw32_mcs_local_node_t node; - - ptw32_mcs_lock_acquire(&ptw32_thread_reuse_lock, &node); - - if (PTW32_THREAD_REUSE_EMPTY != ptw32_threadReuseTop) - { - ptw32_thread_t * tp; - - tp = ptw32_threadReuseTop; - - ptw32_threadReuseTop = tp->prevReuse; - - if (PTW32_THREAD_REUSE_EMPTY == ptw32_threadReuseTop) - { - ptw32_threadReuseBottom = PTW32_THREAD_REUSE_EMPTY; - } - - tp->prevReuse = NULL; - - t = tp->ptHandle; - } - - ptw32_mcs_lock_release(&node); - - return t; - -} - -/* - * Push a clean pthread_t struct onto the reuse stack. - * Must be re-initialised when reused. - * All object elements (mutexes, events etc) must have been either - * detroyed before this, or never initialised. - */ -void -ptw32_threadReusePush (pthread_t thread) -{ - ptw32_thread_t * tp = (ptw32_thread_t *) thread.p; - pthread_t t; - ptw32_mcs_local_node_t node; - - ptw32_mcs_lock_acquire(&ptw32_thread_reuse_lock, &node); - - t = tp->ptHandle; - memset(tp, 0, sizeof(ptw32_thread_t)); - - /* Must restore the original POSIX handle that we just wiped. */ - tp->ptHandle = t; - - /* Bump the reuse counter now */ -#if defined(PTW32_THREAD_ID_REUSE_INCREMENT) - tp->ptHandle.x += PTW32_THREAD_ID_REUSE_INCREMENT; -#else - tp->ptHandle.x++; -#endif - - tp->state = PThreadStateReuse; - - tp->prevReuse = PTW32_THREAD_REUSE_EMPTY; - - if (PTW32_THREAD_REUSE_EMPTY != ptw32_threadReuseBottom) - { - ptw32_threadReuseBottom->prevReuse = tp; - } - else - { - ptw32_threadReuseTop = tp; - } - - ptw32_threadReuseBottom = tp; - - ptw32_mcs_lock_release(&node); -} diff --git a/platform/win32/msvc/external/pthreads.2/ptw32_rwlock_cancelwrwait.c b/platform/win32/msvc/external/pthreads.2/ptw32_rwlock_cancelwrwait.c deleted file mode 100644 index 7649a3eb1e8..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ptw32_rwlock_cancelwrwait.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * ptw32_rwlock_cancelwrwait.c - * - * Description: - * This translation unit implements read/write lock primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -void -ptw32_rwlock_cancelwrwait (void *arg) -{ - pthread_rwlock_t rwl = (pthread_rwlock_t) arg; - - rwl->nSharedAccessCount = -rwl->nCompletedSharedAccessCount; - rwl->nCompletedSharedAccessCount = 0; - - (void) pthread_mutex_unlock (&(rwl->mtxSharedAccessCompleted)); - (void) pthread_mutex_unlock (&(rwl->mtxExclusiveAccess)); -} diff --git a/platform/win32/msvc/external/pthreads.2/ptw32_rwlock_check_need_init.c b/platform/win32/msvc/external/pthreads.2/ptw32_rwlock_check_need_init.c deleted file mode 100644 index 06d432d5c53..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ptw32_rwlock_check_need_init.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - * pthread_rwlock_check_need_init.c - * - * Description: - * This translation unit implements read/write lock primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -INLINE int -ptw32_rwlock_check_need_init (pthread_rwlock_t * rwlock) -{ - int result = 0; - ptw32_mcs_local_node_t node; - - /* - * The following guarded test is specifically for statically - * initialised rwlocks (via PTHREAD_RWLOCK_INITIALIZER). - */ - ptw32_mcs_lock_acquire(&ptw32_rwlock_test_init_lock, &node); - - /* - * We got here possibly under race - * conditions. Check again inside the critical section - * and only initialise if the rwlock is valid (not been destroyed). - * If a static rwlock has been destroyed, the application can - * re-initialise it only by calling pthread_rwlock_init() - * explicitly. - */ - if (*rwlock == PTHREAD_RWLOCK_INITIALIZER) - { - result = pthread_rwlock_init (rwlock, NULL); - } - else if (*rwlock == NULL) - { - /* - * The rwlock has been destroyed while we were waiting to - * initialise it, so the operation that caused the - * auto-initialisation should fail. - */ - result = EINVAL; - } - - ptw32_mcs_lock_release(&node); - - return result; -} diff --git a/platform/win32/msvc/external/pthreads.2/ptw32_semwait.c b/platform/win32/msvc/external/pthreads.2/ptw32_semwait.c deleted file mode 100644 index 45d1ff9b89a..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ptw32_semwait.c +++ /dev/null @@ -1,135 +0,0 @@ -/* - * ptw32_semwait.c - * - * Description: - * This translation unit implements mutual exclusion (mutex) primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#if !defined(_UWIN) -/*# include */ -#endif -#include "pthread.h" -#include "implement.h" - - -int -ptw32_semwait (sem_t * sem) - /* - * ------------------------------------------------------ - * DESCRIPTION - * This function waits on a POSIX semaphore. If the - * semaphore value is greater than zero, it decreases - * its value by one. If the semaphore value is zero, then - * the calling thread (or process) is blocked until it can - * successfully decrease the value. - * - * Unlike sem_wait(), this routine is non-cancelable. - * - * RESULTS - * 0 successfully decreased semaphore, - * -1 failed, error in errno. - * ERRNO - * EINVAL 'sem' is not a valid semaphore, - * ENOSYS semaphores are not supported, - * EINTR the function was interrupted by a signal, - * EDEADLK a deadlock condition was detected. - * - * ------------------------------------------------------ - */ -{ - int result = 0; - sem_t s = *sem; - - if (s == NULL) - { - result = EINVAL; - } - else - { - if ((result = pthread_mutex_lock (&s->lock)) == 0) - { - int v; - - /* See sem_destroy.c - */ - if (*sem == NULL) - { - (void) pthread_mutex_unlock (&s->lock); - errno = EINVAL; - return -1; - } - - v = --s->value; - (void) pthread_mutex_unlock (&s->lock); - - if (v < 0) - { - /* Must wait */ - if (WaitForSingleObject (s->sem, INFINITE) == WAIT_OBJECT_0) - { -#if defined(NEED_SEM) - if (pthread_mutex_lock (&s->lock) == 0) - { - if (*sem == NULL) - { - (void) pthread_mutex_unlock (&s->lock); - errno = EINVAL; - return -1; - } - - if (s->leftToUnblock > 0) - { - --s->leftToUnblock; - SetEvent(s->sem); - } - (void) pthread_mutex_unlock (&s->lock); - } -#endif - return 0; - } - } - else - { - return 0; - } - } - } - - if (result != 0) - { - errno = result; - return -1; - } - - return 0; - -} /* ptw32_semwait */ diff --git a/platform/win32/msvc/external/pthreads.2/ptw32_spinlock_check_need_init.c b/platform/win32/msvc/external/pthreads.2/ptw32_spinlock_check_need_init.c deleted file mode 100644 index 53cd8a702cd..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ptw32_spinlock_check_need_init.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * ptw32_spinlock_check_need_init.c - * - * Description: - * This translation unit implements spin lock primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -INLINE int -ptw32_spinlock_check_need_init (pthread_spinlock_t * lock) -{ - int result = 0; - ptw32_mcs_local_node_t node; - - /* - * The following guarded test is specifically for statically - * initialised spinlocks (via PTHREAD_SPINLOCK_INITIALIZER). - */ - ptw32_mcs_lock_acquire(&ptw32_spinlock_test_init_lock, &node); - - /* - * We got here possibly under race - * conditions. Check again inside the critical section - * and only initialise if the spinlock is valid (not been destroyed). - * If a static spinlock has been destroyed, the application can - * re-initialise it only by calling pthread_spin_init() - * explicitly. - */ - if (*lock == PTHREAD_SPINLOCK_INITIALIZER) - { - result = pthread_spin_init (lock, PTHREAD_PROCESS_PRIVATE); - } - else if (*lock == NULL) - { - /* - * The spinlock has been destroyed while we were waiting to - * initialise it, so the operation that caused the - * auto-initialisation should fail. - */ - result = EINVAL; - } - - ptw32_mcs_lock_release(&node); - - return (result); -} diff --git a/platform/win32/msvc/external/pthreads.2/ptw32_threadDestroy.c b/platform/win32/msvc/external/pthreads.2/ptw32_threadDestroy.c deleted file mode 100644 index 2b684a4dc6c..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ptw32_threadDestroy.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - * ptw32_threadDestroy.c - * - * Description: - * This translation unit implements routines which are private to - * the implementation and may be used throughout it. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -void -ptw32_threadDestroy (pthread_t thread) -{ - ptw32_thread_t * tp = (ptw32_thread_t *) thread.p; - ptw32_thread_t threadCopy; - - if (tp != NULL) - { - /* - * Copy thread state so that the thread can be atomically NULLed. - */ - memcpy (&threadCopy, tp, sizeof (threadCopy)); - - /* - * Thread ID structs are never freed. They're NULLed and reused. - * This also sets the thread to PThreadStateInitial (invalid). - */ - ptw32_threadReusePush (thread); - - /* Now work on the copy. */ - if (threadCopy.cancelEvent != NULL) - { - CloseHandle (threadCopy.cancelEvent); - } - -#if ! (defined(__MINGW64__) || defined(__MINGW32__)) || defined (__MSVCRT__) || defined (__DMC__) - /* - * See documentation for endthread vs endthreadex. - */ - if (threadCopy.threadH != 0) - { - CloseHandle (threadCopy.threadH); - } -#endif - - } -} /* ptw32_threadDestroy */ - diff --git a/platform/win32/msvc/external/pthreads.2/ptw32_threadStart.c b/platform/win32/msvc/external/pthreads.2/ptw32_threadStart.c deleted file mode 100644 index 9683affcf16..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ptw32_threadStart.c +++ /dev/null @@ -1,357 +0,0 @@ -/* - * ptw32_threadStart.c - * - * Description: - * This translation unit implements routines which are private to - * the implementation and may be used throughout it. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" -#include - -#if defined(__CLEANUP_C) -# include -#endif - -#if defined(__CLEANUP_SEH) - -static DWORD -ExceptionFilter (EXCEPTION_POINTERS * ep, DWORD * ei) -{ - switch (ep->ExceptionRecord->ExceptionCode) - { - case EXCEPTION_PTW32_SERVICES: - { - DWORD param; - DWORD numParams = ep->ExceptionRecord->NumberParameters; - - numParams = (numParams > 3) ? 3 : numParams; - - for (param = 0; param < numParams; param++) - { - ei[param] = ep->ExceptionRecord->ExceptionInformation[param]; - } - - return EXCEPTION_EXECUTE_HANDLER; - break; - } - default: - { - /* - * A system unexpected exception has occurred running the user's - * routine. We need to cleanup before letting the exception - * out of thread scope. - */ - pthread_t self = pthread_self (); - - ptw32_callUserDestroyRoutines (self); - - return EXCEPTION_CONTINUE_SEARCH; - break; - } - } -} - -#elif defined(__CLEANUP_CXX) - -#if defined(_MSC_VER) -# include -#elif defined(__WATCOMC__) -# include -# include -typedef terminate_handler - terminate_function; -#else -# if defined(__GNUC__) && __GNUC__ < 3 -# include -# else -# include -using - std::terminate_handler; -using - std::terminate; -using - std::set_terminate; -# endif -typedef terminate_handler - terminate_function; -#endif - -static terminate_function - ptw32_oldTerminate; - -void -ptw32_terminate () -{ - set_terminate (ptw32_oldTerminate); - (void) pthread_win32_thread_detach_np (); - terminate (); -} - -#endif - -#if ! (defined(__MINGW64__) || defined(__MINGW32__)) || (defined (__MSVCRT__) && ! defined (__DMC__)) -unsigned - __stdcall -#else -void -#endif -ptw32_threadStart (void *vthreadParms) -{ - ThreadParms * threadParms = (ThreadParms *) vthreadParms; - pthread_t self; - ptw32_thread_t * sp; - void * (PTW32_CDECL *start) (void *); - void * arg; - -#if defined(__CLEANUP_SEH) - DWORD - ei[] = { 0, 0, 0 }; -#endif - -#if defined(__CLEANUP_C) - int setjmp_rc; -#endif - - ptw32_mcs_local_node_t stateLock; - void * status = (void *) 0; - - self = threadParms->tid; - sp = (ptw32_thread_t *) self.p; - start = threadParms->start; - arg = threadParms->arg; - - free (threadParms); - -#if (defined(__MINGW64__) || defined(__MINGW32__)) && ! defined (__MSVCRT__) - /* - * beginthread does not return the thread id and is running - * before it returns us the thread handle, and so we do it here. - */ - sp->thread = GetCurrentThreadId (); - /* - * Here we're using stateLock as a general-purpose lock - * to make the new thread wait until the creating thread - * has the new handle. - */ - ptw32_mcs_lock_acquire (&sp->stateLock, &stateLock); - pthread_setspecific (ptw32_selfThreadKey, sp); -#else - pthread_setspecific (ptw32_selfThreadKey, sp); - ptw32_mcs_lock_acquire (&sp->stateLock, &stateLock); -#endif - - sp->state = PThreadStateRunning; - ptw32_mcs_lock_release (&stateLock); - -#if defined(__CLEANUP_SEH) - - __try - { - /* - * Run the caller's routine; - */ - status = sp->exitStatus = (*start) (arg); - sp->state = PThreadStateExiting; - -#if defined(_UWIN) - if (--pthread_count <= 0) - exit (0); -#endif - - } - __except (ExceptionFilter (GetExceptionInformation (), ei)) - { - switch (ei[0]) - { - case PTW32_EPS_CANCEL: - status = sp->exitStatus = PTHREAD_CANCELED; -#if defined(_UWIN) - if (--pthread_count <= 0) - exit (0); -#endif - break; - case PTW32_EPS_EXIT: - status = sp->exitStatus; - break; - default: - status = sp->exitStatus = PTHREAD_CANCELED; - break; - } - } - -#else /* __CLEANUP_SEH */ - -#if defined(__CLEANUP_C) - - setjmp_rc = setjmp (sp->start_mark); - - if (0 == setjmp_rc) - { - - /* - * Run the caller's routine; - */ - status = sp->exitStatus = (*start) (arg); - sp->state = PThreadStateExiting; - } - else - { - switch (setjmp_rc) - { - case PTW32_EPS_CANCEL: - status = sp->exitStatus = PTHREAD_CANCELED; - break; - case PTW32_EPS_EXIT: - status = sp->exitStatus; - break; - default: - status = sp->exitStatus = PTHREAD_CANCELED; - break; - } - } - -#else /* __CLEANUP_C */ - -#if defined(__CLEANUP_CXX) - - ptw32_oldTerminate = set_terminate (&ptw32_terminate); - - try - { - /* - * Run the caller's routine in a nested try block so that we - * can run the user's terminate function, which may call - * pthread_exit() or be canceled. - */ - try - { - status = sp->exitStatus = (*start) (arg); - sp->state = PThreadStateExiting; - } - catch (ptw32_exception &) - { - /* - * Pass these through to the outer block. - */ - throw; - } - catch (...) - { - /* - * We want to run the user's terminate function if supplied. - * That function may call pthread_exit() or be canceled, which will - * be handled by the outer try block. - * - * ptw32_terminate() will be called if there is no user - * supplied function. - */ - terminate_function - term_func = set_terminate (0); - set_terminate (term_func); - - if (term_func != 0) - { - term_func (); - } - throw; - } - } - catch (ptw32_exception_cancel &) - { - /* - * Thread was canceled. - */ - status = sp->exitStatus = PTHREAD_CANCELED; - } - catch (ptw32_exception_exit &) - { - /* - * Thread was exited via pthread_exit(). - */ - status = sp->exitStatus; - } - catch (...) - { - /* - * A system unexpected exception has occurred running the user's - * terminate routine. We get control back within this block - * and exit with a substitute status. If the thread was not - * cancelled then this indicates the unhandled exception. - */ - status = sp->exitStatus = PTHREAD_CANCELED; - } - - (void) set_terminate (ptw32_oldTerminate); - -#else - -#error ERROR [__FILE__, line __LINE__]: Cleanup type undefined. - -#endif /* __CLEANUP_CXX */ -#endif /* __CLEANUP_C */ -#endif /* __CLEANUP_SEH */ - -#if defined(PTW32_STATIC_LIB) - /* - * We need to cleanup the pthread now if we have - * been statically linked, in which case the cleanup - * in dllMain won't get done. Joinable threads will - * only be partially cleaned up and must be fully cleaned - * up by pthread_join() or pthread_detach(). - * - * Note: if this library has been statically linked, - * implicitly created pthreads (those created - * for Win32 threads which have called pthreads routines) - * must be cleaned up explicitly by the application - * (by calling pthread_win32_thread_detach_np()). - * For the dll, dllMain will do the cleanup automatically. - */ - (void) pthread_win32_thread_detach_np (); -#endif - -#if ! (defined(__MINGW64__) || defined(__MINGW32__)) || defined (__MSVCRT__) || defined (__DMC__) - _endthreadex ((unsigned)(size_t) status); -#else - _endthread (); -#endif - - /* - * Never reached. - */ - -#if ! (defined(__MINGW64__) || defined(__MINGW32__)) || defined (__MSVCRT__) || defined (__DMC__) - return (unsigned)(size_t) status; -#endif - -} /* ptw32_threadStart */ diff --git a/platform/win32/msvc/external/pthreads.2/ptw32_throw.c b/platform/win32/msvc/external/pthreads.2/ptw32_throw.c deleted file mode 100644 index f998b722065..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ptw32_throw.c +++ /dev/null @@ -1,189 +0,0 @@ -/* - * ptw32_throw.c - * - * Description: - * This translation unit implements routines which are private to - * the implementation and may be used throughout it. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - -#if defined(__CLEANUP_C) -# include -#endif - -/* - * ptw32_throw - * - * All canceled and explicitly exited POSIX threads go through - * here. This routine knows how to exit both POSIX initiated threads and - * 'implicit' POSIX threads for each of the possible language modes (C, - * C++, and SEH). - */ -#if defined(_MSC_VER) -/* - * Ignore the warning: - * "C++ exception specification ignored except to indicate that - * the function is not __declspec(nothrow)." - */ -#pragma warning(disable:4290) -#endif -void -ptw32_throw (DWORD exception) -#if defined(__CLEANUP_CXX) - throw(ptw32_exception_cancel,ptw32_exception_exit) -#endif -{ - /* - * Don't use pthread_self() to avoid creating an implicit POSIX thread handle - * unnecessarily. - */ - ptw32_thread_t * sp = (ptw32_thread_t *) pthread_getspecific (ptw32_selfThreadKey); - -#if defined(__CLEANUP_SEH) - DWORD exceptionInformation[3]; -#endif - - sp->state = PThreadStateExiting; - - if (exception != PTW32_EPS_CANCEL && exception != PTW32_EPS_EXIT) - { - /* Should never enter here */ - exit (1); - } - - if (NULL == sp || sp->implicit) - { - /* - * We're inside a non-POSIX initialised Win32 thread - * so there is no point to jump or throw back to. Just do an - * explicit thread exit here after cleaning up POSIX - * residue (i.e. cleanup handlers, POSIX thread handle etc). - */ -#if ! (defined(__MINGW64__) || defined(__MINGW32__)) || defined (__MSVCRT__) || defined (__DMC__) - unsigned exitCode = 0; - - switch (exception) - { - case PTW32_EPS_CANCEL: - exitCode = (unsigned)(size_t) PTHREAD_CANCELED; - break; - case PTW32_EPS_EXIT: - if (NULL != sp) - { - exitCode = (unsigned)(size_t) sp->exitStatus; - } - break; - } -#endif - -#if defined(PTW32_STATIC_LIB) - - pthread_win32_thread_detach_np (); - -#endif - -#if ! (defined(__MINGW64__) || defined(__MINGW32__)) || defined (__MSVCRT__) || defined (__DMC__) - _endthreadex (exitCode); -#else - _endthread (); -#endif - - } - -#if defined(__CLEANUP_SEH) - - - exceptionInformation[0] = (DWORD) (exception); - exceptionInformation[1] = (DWORD) (0); - exceptionInformation[2] = (DWORD) (0); - - RaiseException (EXCEPTION_PTW32_SERVICES, 0, 3, exceptionInformation); - -#else /* __CLEANUP_SEH */ - -#if defined(__CLEANUP_C) - - ptw32_pop_cleanup_all (1); - longjmp (sp->start_mark, exception); - -#else /* __CLEANUP_C */ - -#if defined(__CLEANUP_CXX) - - switch (exception) - { - case PTW32_EPS_CANCEL: - throw ptw32_exception_cancel (); - break; - case PTW32_EPS_EXIT: - throw ptw32_exception_exit (); - break; - } - -#else - -#error ERROR [__FILE__, line __LINE__]: Cleanup type undefined. - -#endif /* __CLEANUP_CXX */ - -#endif /* __CLEANUP_C */ - -#endif /* __CLEANUP_SEH */ - - /* Never reached */ -} - - -void -ptw32_pop_cleanup_all (int execute) -{ - while (NULL != ptw32_pop_cleanup (execute)) - { - } -} - - -DWORD -ptw32_get_exception_services_code (void) -{ -#if defined(__CLEANUP_SEH) - - return EXCEPTION_PTW32_SERVICES; - -#else - - return (DWORD)0; - -#endif -} diff --git a/platform/win32/msvc/external/pthreads.2/ptw32_timespec.c b/platform/win32/msvc/external/pthreads.2/ptw32_timespec.c deleted file mode 100644 index 2531b05425d..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ptw32_timespec.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * ptw32_timespec.c - * - * Description: - * This translation unit implements routines which are private to - * the implementation and may be used throughout it. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -#if defined(NEED_FTIME) - -/* - * time between jan 1, 1601 and jan 1, 1970 in units of 100 nanoseconds - */ -#define PTW32_TIMESPEC_TO_FILETIME_OFFSET \ - ( ((int64_t) 27111902 << 32) + (int64_t) 3577643008 ) - -INLINE void -ptw32_timespec_to_filetime (const struct timespec *ts, FILETIME * ft) - /* - * ------------------------------------------------------------------- - * converts struct timespec - * where the time is expressed in seconds and nanoseconds from Jan 1, 1970. - * into FILETIME (as set by GetSystemTimeAsFileTime), where the time is - * expressed in 100 nanoseconds from Jan 1, 1601, - * ------------------------------------------------------------------- - */ -{ - *(int64_t *) ft = ts->tv_sec * 10000000 - + (ts->tv_nsec + 50) / 100 + PTW32_TIMESPEC_TO_FILETIME_OFFSET; -} - -INLINE void -ptw32_filetime_to_timespec (const FILETIME * ft, struct timespec *ts) - /* - * ------------------------------------------------------------------- - * converts FILETIME (as set by GetSystemTimeAsFileTime), where the time is - * expressed in 100 nanoseconds from Jan 1, 1601, - * into struct timespec - * where the time is expressed in seconds and nanoseconds from Jan 1, 1970. - * ------------------------------------------------------------------- - */ -{ - ts->tv_sec = - (int) ((*(int64_t *) ft - PTW32_TIMESPEC_TO_FILETIME_OFFSET) / 10000000); - ts->tv_nsec = - (int) ((*(int64_t *) ft - PTW32_TIMESPEC_TO_FILETIME_OFFSET - - ((int64_t) ts->tv_sec * (int64_t) 10000000)) * 100); -} - -#endif /* NEED_FTIME */ diff --git a/platform/win32/msvc/external/pthreads.2/ptw32_tkAssocCreate.c b/platform/win32/msvc/external/pthreads.2/ptw32_tkAssocCreate.c deleted file mode 100644 index 7e792c7dd25..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ptw32_tkAssocCreate.c +++ /dev/null @@ -1,118 +0,0 @@ -/* - * ptw32_tkAssocCreate.c - * - * Description: - * This translation unit implements routines which are private to - * the implementation and may be used throughout it. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -int -ptw32_tkAssocCreate (ptw32_thread_t * sp, pthread_key_t key) - /* - * ------------------------------------------------------------------- - * This routine creates an association that - * is unique for the given (thread,key) combination.The association - * is referenced by both the thread and the key. - * This association allows us to determine what keys the - * current thread references and what threads a given key - * references. - * See the detailed description - * at the beginning of this file for further details. - * - * Notes: - * 1) New associations are pushed to the beginning of the - * chain so that the internal ptw32_selfThreadKey association - * is always last, thus allowing selfThreadExit to - * be implicitly called last by pthread_exit. - * 2) - * - * Parameters: - * thread - * current running thread. - * key - * key on which to create an association. - * Returns: - * 0 - if successful, - * ENOMEM - not enough memory to create assoc or other object - * EINVAL - an internal error occurred - * ENOSYS - an internal error occurred - * ------------------------------------------------------------------- - */ -{ - ThreadKeyAssoc *assoc; - - /* - * Have to create an association and add it - * to both the key and the thread. - * - * Both key->keyLock and thread->threadLock are locked before - * entry to this routine. - */ - assoc = (ThreadKeyAssoc *) calloc (1, sizeof (*assoc)); - - if (assoc == NULL) - { - return ENOMEM; - } - - assoc->thread = sp; - assoc->key = key; - - /* - * Register assoc with key - */ - assoc->prevThread = NULL; - assoc->nextThread = (ThreadKeyAssoc *) key->threads; - if (assoc->nextThread != NULL) - { - assoc->nextThread->prevThread = assoc; - } - key->threads = (void *) assoc; - - /* - * Register assoc with thread - */ - assoc->prevKey = NULL; - assoc->nextKey = (ThreadKeyAssoc *) sp->keys; - if (assoc->nextKey != NULL) - { - assoc->nextKey->prevKey = assoc; - } - sp->keys = (void *) assoc; - - return (0); - -} /* ptw32_tkAssocCreate */ diff --git a/platform/win32/msvc/external/pthreads.2/ptw32_tkAssocDestroy.c b/platform/win32/msvc/external/pthreads.2/ptw32_tkAssocDestroy.c deleted file mode 100644 index 97f124343e1..00000000000 --- a/platform/win32/msvc/external/pthreads.2/ptw32_tkAssocDestroy.c +++ /dev/null @@ -1,114 +0,0 @@ -/* - * ptw32_tkAssocDestroy.c - * - * Description: - * This translation unit implements routines which are private to - * the implementation and may be used throughout it. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -void -ptw32_tkAssocDestroy (ThreadKeyAssoc * assoc) - /* - * ------------------------------------------------------------------- - * This routine releases all resources for the given ThreadKeyAssoc - * once it is no longer being referenced - * ie) either the key or thread has stopped referencing it. - * - * Parameters: - * assoc - * an instance of ThreadKeyAssoc. - * Returns: - * N/A - * ------------------------------------------------------------------- - */ -{ - - /* - * Both key->keyLock and thread->threadLock are locked before - * entry to this routine. - */ - if (assoc != NULL) - { - ThreadKeyAssoc * prev, * next; - - /* Remove assoc from thread's keys chain */ - prev = assoc->prevKey; - next = assoc->nextKey; - if (prev != NULL) - { - prev->nextKey = next; - } - if (next != NULL) - { - next->prevKey = prev; - } - - if (assoc->thread->keys == assoc) - { - /* We're at the head of the thread's keys chain */ - assoc->thread->keys = next; - } - if (assoc->thread->nextAssoc == assoc) - { - /* - * Thread is exiting and we're deleting the assoc to be processed next. - * Hand thread the assoc after this one. - */ - assoc->thread->nextAssoc = next; - } - - /* Remove assoc from key's threads chain */ - prev = assoc->prevThread; - next = assoc->nextThread; - if (prev != NULL) - { - prev->nextThread = next; - } - if (next != NULL) - { - next->prevThread = prev; - } - - if (assoc->key->threads == assoc) - { - /* We're at the head of the key's threads chain */ - assoc->key->threads = next; - } - - free (assoc); - } - -} /* ptw32_tkAssocDestroy */ diff --git a/platform/win32/msvc/external/pthreads.2/rwlock.c b/platform/win32/msvc/external/pthreads.2/rwlock.c deleted file mode 100644 index 85d39c75b40..00000000000 --- a/platform/win32/msvc/external/pthreads.2/rwlock.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * rwlock.c - * - * Description: - * This translation unit implements read/write lock primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "ptw32_rwlock_check_need_init.c" -#include "ptw32_rwlock_cancelwrwait.c" -#include "pthread_rwlock_init.c" -#include "pthread_rwlock_destroy.c" -#include "pthread_rwlockattr_init.c" -#include "pthread_rwlockattr_destroy.c" -#include "pthread_rwlockattr_getpshared.c" -#include "pthread_rwlockattr_setpshared.c" -#include "pthread_rwlock_rdlock.c" -#include "pthread_rwlock_timedrdlock.c" -#include "pthread_rwlock_wrlock.c" -#include "pthread_rwlock_timedwrlock.c" -#include "pthread_rwlock_unlock.c" -#include "pthread_rwlock_tryrdlock.c" -#include "pthread_rwlock_trywrlock.c" diff --git a/platform/win32/msvc/external/pthreads.2/sched.c b/platform/win32/msvc/external/pthreads.2/sched.c deleted file mode 100644 index ec90e85f38f..00000000000 --- a/platform/win32/msvc/external/pthreads.2/sched.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * sched.c - * - * Description: - * POSIX thread functions that deal with thread scheduling. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" -#include "sched.h" - -#include "pthread_attr_setschedpolicy.c" -#include "pthread_attr_getschedpolicy.c" -#include "pthread_attr_setschedparam.c" -#include "pthread_attr_getschedparam.c" -#include "pthread_attr_setinheritsched.c" -#include "pthread_attr_getinheritsched.c" -#include "pthread_setschedparam.c" -#include "pthread_getschedparam.c" -#include "sched_get_priority_max.c" -#include "sched_get_priority_min.c" -#include "sched_setscheduler.c" -#include "sched_getscheduler.c" -#include "sched_yield.c" diff --git a/platform/win32/msvc/external/pthreads.2/sched.h b/platform/win32/msvc/external/pthreads.2/sched.h deleted file mode 100644 index e25eb56b05c..00000000000 --- a/platform/win32/msvc/external/pthreads.2/sched.h +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Module: sched.h - * - * Purpose: - * Provides an implementation of POSIX realtime extensions - * as defined in - * - * POSIX 1003.1b-1993 (POSIX.1b) - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ -#if !defined(_SCHED_H) -#define _SCHED_H - -#undef PTW32_SCHED_LEVEL - -#if defined(_POSIX_SOURCE) -#define PTW32_SCHED_LEVEL 0 -/* Early POSIX */ -#endif - -#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199309 -#undef PTW32_SCHED_LEVEL -#define PTW32_SCHED_LEVEL 1 -/* Include 1b, 1c and 1d */ -#endif - -#if defined(INCLUDE_NP) -#undef PTW32_SCHED_LEVEL -#define PTW32_SCHED_LEVEL 2 -/* Include Non-Portable extensions */ -#endif - -#define PTW32_SCHED_LEVEL_MAX 3 - -#if ( defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112 ) || !defined(PTW32_SCHED_LEVEL) -#define PTW32_SCHED_LEVEL PTW32_SCHED_LEVEL_MAX -/* Include everything */ -#endif - - -#if defined(__GNUC__) && !defined(__declspec) -# error Please upgrade your GNU compiler to one that supports __declspec. -#endif - -/* - * When building the library, you should define PTW32_BUILD so that - * the variables/functions are exported correctly. When using the library, - * do NOT define PTW32_BUILD, and then the variables/functions will - * be imported correctly. - */ -#if !defined(PTW32_STATIC_LIB) -# if defined(PTW32_BUILD) -# define PTW32_DLLPORT __declspec (dllexport) -# else -# define PTW32_DLLPORT __declspec (dllimport) -# endif -#else -# define PTW32_DLLPORT -#endif - -/* - * This is a duplicate of what is in the autoconf config.h, - * which is only used when building the pthread-win32 libraries. - */ - -#if !defined(PTW32_CONFIG_H) -# if defined(WINCE) -# define NEED_ERRNO -# define NEED_SEM -# endif -# if defined(__MINGW64__) -# define HAVE_STRUCT_TIMESPEC -# define HAVE_MODE_T -# elif defined(_UWIN) || defined(__MINGW32__) -# define HAVE_MODE_T -# endif -#endif - -/* - * - */ - -#if PTW32_SCHED_LEVEL >= PTW32_SCHED_LEVEL_MAX -#if defined(NEED_ERRNO) -#include "need_errno.h" -#else -#include -#endif -#endif /* PTW32_SCHED_LEVEL >= PTW32_SCHED_LEVEL_MAX */ - -#if (defined(__MINGW64__) || defined(__MINGW32__)) || defined(_UWIN) -# if PTW32_SCHED_LEVEL >= PTW32_SCHED_LEVEL_MAX -/* For pid_t */ -# include -/* Required by Unix 98 */ -# include -# else - typedef int pid_t; -# endif -#else - typedef int pid_t; -#endif - -/* Thread scheduling policies */ - -enum { - SCHED_OTHER = 0, - SCHED_FIFO, - SCHED_RR, - SCHED_MIN = SCHED_OTHER, - SCHED_MAX = SCHED_RR -}; - -struct sched_param { - int sched_priority; -}; - -#if defined(__cplusplus) -extern "C" -{ -#endif /* __cplusplus */ - -PTW32_DLLPORT int __cdecl sched_yield (void); - -PTW32_DLLPORT int __cdecl sched_get_priority_min (int policy); - -PTW32_DLLPORT int __cdecl sched_get_priority_max (int policy); - -PTW32_DLLPORT int __cdecl sched_setscheduler (pid_t pid, int policy); - -PTW32_DLLPORT int __cdecl sched_getscheduler (pid_t pid); - -/* - * Note that this macro returns ENOTSUP rather than - * ENOSYS as might be expected. However, returning ENOSYS - * should mean that sched_get_priority_{min,max} are - * not implemented as well as sched_rr_get_interval. - * This is not the case, since we just don't support - * round-robin scheduling. Therefore I have chosen to - * return the same value as sched_setscheduler when - * SCHED_RR is passed to it. - */ -#define sched_rr_get_interval(_pid, _interval) \ - ( errno = ENOTSUP, (int) -1 ) - - -#if defined(__cplusplus) -} /* End of extern "C" */ -#endif /* __cplusplus */ - -#undef PTW32_SCHED_LEVEL -#undef PTW32_SCHED_LEVEL_MAX - -#endif /* !_SCHED_H */ - diff --git a/platform/win32/msvc/external/pthreads.2/sched_get_priority_max.c b/platform/win32/msvc/external/pthreads.2/sched_get_priority_max.c deleted file mode 100644 index b69f82e21d9..00000000000 --- a/platform/win32/msvc/external/pthreads.2/sched_get_priority_max.c +++ /dev/null @@ -1,134 +0,0 @@ -/* - * sched_get_priority_max.c - * - * Description: - * POSIX thread functions that deal with thread scheduling. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" -#include "sched.h" - -/* - * On Windows98, THREAD_PRIORITY_LOWEST is (-2) and - * THREAD_PRIORITY_HIGHEST is 2, and everything works just fine. - * - * On WinCE 3.0, it so happen that THREAD_PRIORITY_LOWEST is 5 - * and THREAD_PRIORITY_HIGHEST is 1 (yes, I know, it is funny: - * highest priority use smaller numbers) and the following happens: - * - * sched_get_priority_min() returns 5 - * sched_get_priority_max() returns 1 - * - * The following table shows the base priority levels for combinations - * of priority class and priority value in Win32. - * - * Process Priority Class Thread Priority Level - * ----------------------------------------------------------------- - * 1 IDLE_PRIORITY_CLASS THREAD_PRIORITY_IDLE - * 1 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_IDLE - * 1 NORMAL_PRIORITY_CLASS THREAD_PRIORITY_IDLE - * 1 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_IDLE - * 1 HIGH_PRIORITY_CLASS THREAD_PRIORITY_IDLE - * 2 IDLE_PRIORITY_CLASS THREAD_PRIORITY_LOWEST - * 3 IDLE_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL - * 4 IDLE_PRIORITY_CLASS THREAD_PRIORITY_NORMAL - * 4 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_LOWEST - * 5 IDLE_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL - * 5 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL - * 5 Background NORMAL_PRIORITY_CLASS THREAD_PRIORITY_LOWEST - * 6 IDLE_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST - * 6 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_NORMAL - * 6 Background NORMAL_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL - * 7 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL - * 7 Background NORMAL_PRIORITY_CLASS THREAD_PRIORITY_NORMAL - * 7 Foreground NORMAL_PRIORITY_CLASS THREAD_PRIORITY_LOWEST - * 8 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST - * 8 NORMAL_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL - * 8 Foreground NORMAL_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL - * 8 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_LOWEST - * 9 NORMAL_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST - * 9 Foreground NORMAL_PRIORITY_CLASS THREAD_PRIORITY_NORMAL - * 9 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL - * 10 Foreground NORMAL_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL - * 10 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_NORMAL - * 11 Foreground NORMAL_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST - * 11 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL - * 11 HIGH_PRIORITY_CLASS THREAD_PRIORITY_LOWEST - * 12 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST - * 12 HIGH_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL - * 13 HIGH_PRIORITY_CLASS THREAD_PRIORITY_NORMAL - * 14 HIGH_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL - * 15 HIGH_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST - * 15 HIGH_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL - * 15 IDLE_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL - * 15 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL - * 15 NORMAL_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL - * 15 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL - * 16 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_IDLE - * 17 REALTIME_PRIORITY_CLASS -7 - * 18 REALTIME_PRIORITY_CLASS -6 - * 19 REALTIME_PRIORITY_CLASS -5 - * 20 REALTIME_PRIORITY_CLASS -4 - * 21 REALTIME_PRIORITY_CLASS -3 - * 22 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_LOWEST - * 23 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL - * 24 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_NORMAL - * 25 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL - * 26 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST - * 27 REALTIME_PRIORITY_CLASS 3 - * 28 REALTIME_PRIORITY_CLASS 4 - * 29 REALTIME_PRIORITY_CLASS 5 - * 30 REALTIME_PRIORITY_CLASS 6 - * 31 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL - * - * Windows NT: Values -7, -6, -5, -4, -3, 3, 4, 5, and 6 are not supported. - */ - - -int -sched_get_priority_max (int policy) -{ - if (policy < SCHED_MIN || policy > SCHED_MAX) - { - errno = EINVAL; - return -1; - } - -#if (THREAD_PRIORITY_LOWEST > THREAD_PRIORITY_NORMAL) - /* WinCE? */ - return PTW32_MAX (THREAD_PRIORITY_IDLE, THREAD_PRIORITY_TIME_CRITICAL); -#else - /* This is independent of scheduling policy in Win32. */ - return PTW32_MAX (THREAD_PRIORITY_IDLE, THREAD_PRIORITY_TIME_CRITICAL); -#endif -} diff --git a/platform/win32/msvc/external/pthreads.2/sched_get_priority_min.c b/platform/win32/msvc/external/pthreads.2/sched_get_priority_min.c deleted file mode 100644 index 3c6d24aa4c1..00000000000 --- a/platform/win32/msvc/external/pthreads.2/sched_get_priority_min.c +++ /dev/null @@ -1,135 +0,0 @@ -/* - * sched_get_priority_min.c - * - * Description: - * POSIX thread functions that deal with thread scheduling. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" -#include "sched.h" - -/* - * On Windows98, THREAD_PRIORITY_LOWEST is (-2) and - * THREAD_PRIORITY_HIGHEST is 2, and everything works just fine. - * - * On WinCE 3.0, it so happen that THREAD_PRIORITY_LOWEST is 5 - * and THREAD_PRIORITY_HIGHEST is 1 (yes, I know, it is funny: - * highest priority use smaller numbers) and the following happens: - * - * sched_get_priority_min() returns 5 - * sched_get_priority_max() returns 1 - * - * The following table shows the base priority levels for combinations - * of priority class and priority value in Win32. - * - * Process Priority Class Thread Priority Level - * ----------------------------------------------------------------- - * 1 IDLE_PRIORITY_CLASS THREAD_PRIORITY_IDLE - * 1 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_IDLE - * 1 NORMAL_PRIORITY_CLASS THREAD_PRIORITY_IDLE - * 1 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_IDLE - * 1 HIGH_PRIORITY_CLASS THREAD_PRIORITY_IDLE - * 2 IDLE_PRIORITY_CLASS THREAD_PRIORITY_LOWEST - * 3 IDLE_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL - * 4 IDLE_PRIORITY_CLASS THREAD_PRIORITY_NORMAL - * 4 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_LOWEST - * 5 IDLE_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL - * 5 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL - * 5 Background NORMAL_PRIORITY_CLASS THREAD_PRIORITY_LOWEST - * 6 IDLE_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST - * 6 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_NORMAL - * 6 Background NORMAL_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL - * 7 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL - * 7 Background NORMAL_PRIORITY_CLASS THREAD_PRIORITY_NORMAL - * 7 Foreground NORMAL_PRIORITY_CLASS THREAD_PRIORITY_LOWEST - * 8 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST - * 8 NORMAL_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL - * 8 Foreground NORMAL_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL - * 8 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_LOWEST - * 9 NORMAL_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST - * 9 Foreground NORMAL_PRIORITY_CLASS THREAD_PRIORITY_NORMAL - * 9 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL - * 10 Foreground NORMAL_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL - * 10 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_NORMAL - * 11 Foreground NORMAL_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST - * 11 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL - * 11 HIGH_PRIORITY_CLASS THREAD_PRIORITY_LOWEST - * 12 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST - * 12 HIGH_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL - * 13 HIGH_PRIORITY_CLASS THREAD_PRIORITY_NORMAL - * 14 HIGH_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL - * 15 HIGH_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST - * 15 HIGH_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL - * 15 IDLE_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL - * 15 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL - * 15 NORMAL_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL - * 15 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL - * 16 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_IDLE - * 17 REALTIME_PRIORITY_CLASS -7 - * 18 REALTIME_PRIORITY_CLASS -6 - * 19 REALTIME_PRIORITY_CLASS -5 - * 20 REALTIME_PRIORITY_CLASS -4 - * 21 REALTIME_PRIORITY_CLASS -3 - * 22 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_LOWEST - * 23 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL - * 24 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_NORMAL - * 25 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL - * 26 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST - * 27 REALTIME_PRIORITY_CLASS 3 - * 28 REALTIME_PRIORITY_CLASS 4 - * 29 REALTIME_PRIORITY_CLASS 5 - * 30 REALTIME_PRIORITY_CLASS 6 - * 31 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL - * - * Windows NT: Values -7, -6, -5, -4, -3, 3, 4, 5, and 6 are not supported. - * - */ - - -int -sched_get_priority_min (int policy) -{ - if (policy < SCHED_MIN || policy > SCHED_MAX) - { - errno = EINVAL; - return -1; - } - -#if (THREAD_PRIORITY_LOWEST > THREAD_PRIORITY_NORMAL) - /* WinCE? */ - return PTW32_MIN (THREAD_PRIORITY_IDLE, THREAD_PRIORITY_TIME_CRITICAL); -#else - /* This is independent of scheduling policy in Win32. */ - return PTW32_MIN (THREAD_PRIORITY_IDLE, THREAD_PRIORITY_TIME_CRITICAL); -#endif -} diff --git a/platform/win32/msvc/external/pthreads.2/sched_getscheduler.c b/platform/win32/msvc/external/pthreads.2/sched_getscheduler.c deleted file mode 100644 index 5af18bb37d3..00000000000 --- a/platform/win32/msvc/external/pthreads.2/sched_getscheduler.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * sched_getscheduler.c - * - * Description: - * POSIX thread functions that deal with thread scheduling. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" -#include "sched.h" - -int -sched_getscheduler (pid_t pid) -{ - /* - * Win32 only has one policy which we call SCHED_OTHER. - * However, we try to provide other valid side-effects - * such as EPERM and ESRCH errors. - */ - if (0 != pid) - { - int selfPid = (int) GetCurrentProcessId (); - - if (pid != selfPid) - { - HANDLE h = - OpenProcess (PROCESS_QUERY_INFORMATION, PTW32_FALSE, (DWORD) pid); - - if (NULL == h) - { - errno = - (GetLastError () == - (0xFF & ERROR_ACCESS_DENIED)) ? EPERM : ESRCH; - return -1; - } - else - CloseHandle(h); - } - } - - return SCHED_OTHER; -} diff --git a/platform/win32/msvc/external/pthreads.2/sched_setscheduler.c b/platform/win32/msvc/external/pthreads.2/sched_setscheduler.c deleted file mode 100644 index 0f85b9f6a8a..00000000000 --- a/platform/win32/msvc/external/pthreads.2/sched_setscheduler.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * sched_setscheduler.c - * - * Description: - * POSIX thread functions that deal with thread scheduling. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" -#include "sched.h" - -int -sched_setscheduler (pid_t pid, int policy) -{ - /* - * Win32 only has one policy which we call SCHED_OTHER. - * However, we try to provide other valid side-effects - * such as EPERM and ESRCH errors. Choosing to check - * for a valid policy last allows us to get the most value out - * of this function. - */ - if (0 != pid) - { - int selfPid = (int) GetCurrentProcessId (); - - if (pid != selfPid) - { - HANDLE h = - OpenProcess (PROCESS_SET_INFORMATION, PTW32_FALSE, (DWORD) pid); - - if (NULL == h) - { - errno = - (GetLastError () == - (0xFF & ERROR_ACCESS_DENIED)) ? EPERM : ESRCH; - return -1; - } - else - CloseHandle(h); - } - } - - if (SCHED_OTHER != policy) - { - errno = ENOSYS; - return -1; - } - - /* - * Don't set anything because there is nothing to set. - * Just return the current (the only possible) value. - */ - return SCHED_OTHER; -} diff --git a/platform/win32/msvc/external/pthreads.2/sched_yield.c b/platform/win32/msvc/external/pthreads.2/sched_yield.c deleted file mode 100644 index 4220cc67fca..00000000000 --- a/platform/win32/msvc/external/pthreads.2/sched_yield.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * sched_yield.c - * - * Description: - * POSIX thread functions that deal with thread scheduling. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" -#include "sched.h" - -int -sched_yield (void) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function indicates that the calling thread is - * willing to give up some time slices to other threads. - * - * PARAMETERS - * N/A - * - * - * DESCRIPTION - * This function indicates that the calling thread is - * willing to give up some time slices to other threads. - * NOTE: Since this is part of POSIX 1003.1b - * (realtime extensions), it is defined as returning - * -1 if an error occurs and sets errno to the actual - * error. - * - * RESULTS - * 0 successfully created semaphore, - * ENOSYS sched_yield not supported, - * - * ------------------------------------------------------ - */ -{ - Sleep (0); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/sem_close.c b/platform/win32/msvc/external/pthreads.2/sem_close.c deleted file mode 100644 index d54aa4f4da5..00000000000 --- a/platform/win32/msvc/external/pthreads.2/sem_close.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * ------------------------------------------------------------- - * - * Module: sem_close.c - * - * Purpose: - * Semaphores aren't actually part of the PThreads standard. - * They are defined by the POSIX Standard: - * - * POSIX 1003.1b-1993 (POSIX.1b) - * - * ------------------------------------------------------------- - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "semaphore.h" -#include "implement.h" - -/* ignore warning "unreferenced formal parameter" */ -#if defined(_MSC_VER) -#pragma warning( disable : 4100 ) -#endif - -int -sem_close (sem_t * sem) -{ - errno = ENOSYS; - return -1; -} /* sem_close */ diff --git a/platform/win32/msvc/external/pthreads.2/sem_destroy.c b/platform/win32/msvc/external/pthreads.2/sem_destroy.c deleted file mode 100644 index e2bdf86ca83..00000000000 --- a/platform/win32/msvc/external/pthreads.2/sem_destroy.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - * ------------------------------------------------------------- - * - * Module: sem_destroy.c - * - * Purpose: - * Semaphores aren't actually part of the PThreads standard. - * They are defined by the POSIX Standard: - * - * POSIX 1003.1b-1993 (POSIX.1b) - * - * ------------------------------------------------------------- - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "semaphore.h" -#include "implement.h" - - -int -sem_destroy (sem_t * sem) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function destroys an unnamed semaphore. - * - * PARAMETERS - * sem - * pointer to an instance of sem_t - * - * DESCRIPTION - * This function destroys an unnamed semaphore. - * - * RESULTS - * 0 successfully destroyed semaphore, - * -1 failed, error in errno - * ERRNO - * EINVAL 'sem' is not a valid semaphore, - * ENOSYS semaphores are not supported, - * EBUSY threads (or processes) are currently - * blocked on 'sem' - * - * ------------------------------------------------------ - */ -{ - int result = 0; - sem_t s = NULL; - - if (sem == NULL || *sem == NULL) - { - result = EINVAL; - } - else - { - s = *sem; - - if ((result = pthread_mutex_lock (&s->lock)) == 0) - { - if (s->value < 0) - { - (void) pthread_mutex_unlock (&s->lock); - result = EBUSY; - } - else - { - /* There are no threads currently blocked on this semaphore. */ - - if (!CloseHandle (s->sem)) - { - (void) pthread_mutex_unlock (&s->lock); - result = EINVAL; - } - else - { - /* - * Invalidate the semaphore handle when we have the lock. - * Other sema operations should test this after acquiring the lock - * to check that the sema is still valid, i.e. before performing any - * operations. This may only be necessary before the sema op routine - * returns so that the routine can return EINVAL - e.g. if setting - * s->value to SEM_VALUE_MAX below does force a fall-through. - */ - *sem = NULL; - - /* Prevent anyone else actually waiting on or posting this sema. - */ - s->value = SEM_VALUE_MAX; - - (void) pthread_mutex_unlock (&s->lock); - - do - { - /* Give other threads a chance to run and exit any sema op - * routines. Due to the SEM_VALUE_MAX value, if sem_post or - * sem_wait were blocked by us they should fall through. - */ - Sleep(0); - } - while (pthread_mutex_destroy (&s->lock) == EBUSY); - } - } - } - } - - if (result != 0) - { - errno = result; - return -1; - } - - free (s); - - return 0; - -} /* sem_destroy */ diff --git a/platform/win32/msvc/external/pthreads.2/sem_getvalue.c b/platform/win32/msvc/external/pthreads.2/sem_getvalue.c deleted file mode 100644 index 233635b139b..00000000000 --- a/platform/win32/msvc/external/pthreads.2/sem_getvalue.c +++ /dev/null @@ -1,110 +0,0 @@ -/* - * ------------------------------------------------------------- - * - * Module: sem_getvalue.c - * - * Purpose: - * Semaphores aren't actually part of PThreads. - * They are defined by the POSIX Standard: - * - * POSIX 1003.1-2001 - * - * ------------------------------------------------------------- - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "semaphore.h" -#include "implement.h" - - -int -sem_getvalue (sem_t * sem, int *sval) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function stores the current count value of the - * semaphore. - * RESULTS - * - * Return value - * - * 0 sval has been set. - * -1 failed, error in errno - * - * in global errno - * - * EINVAL 'sem' is not a valid semaphore, - * ENOSYS this function is not supported, - * - * - * PARAMETERS - * - * sem pointer to an instance of sem_t - * - * sval pointer to int. - * - * DESCRIPTION - * This function stores the current count value of the semaphore - * pointed to by sem in the int pointed to by sval. - */ -{ - if (sem == NULL || *sem == NULL || sval == NULL) - { - errno = EINVAL; - return -1; - } - else - { - long value; - register sem_t s = *sem; - int result = 0; - - if ((result = pthread_mutex_lock(&s->lock)) == 0) - { - /* See sem_destroy.c - */ - if (*sem == NULL) - { - (void) pthread_mutex_unlock (&s->lock); - errno = EINVAL; - return -1; - } - - value = s->value; - (void) pthread_mutex_unlock(&s->lock); - *sval = value; - } - - return result; - } - -} /* sem_getvalue */ diff --git a/platform/win32/msvc/external/pthreads.2/sem_init.c b/platform/win32/msvc/external/pthreads.2/sem_init.c deleted file mode 100644 index a3b62982b0c..00000000000 --- a/platform/win32/msvc/external/pthreads.2/sem_init.c +++ /dev/null @@ -1,169 +0,0 @@ -/* - * ------------------------------------------------------------- - * - * Module: sem_init.c - * - * Purpose: - * Semaphores aren't actually part of PThreads. - * They are defined by the POSIX Standard: - * - * POSIX 1003.1-2001 - * - * ------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "semaphore.h" -#include "implement.h" - -int -sem_init (sem_t * sem, int pshared, unsigned int value) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function initializes a semaphore. The - * initial value of the semaphore is 'value' - * - * PARAMETERS - * sem - * pointer to an instance of sem_t - * - * pshared - * if zero, this semaphore may only be shared between - * threads in the same process. - * if nonzero, the semaphore can be shared between - * processes - * - * value - * initial value of the semaphore counter - * - * DESCRIPTION - * This function initializes a semaphore. The - * initial value of the semaphore is set to 'value'. - * - * RESULTS - * 0 successfully created semaphore, - * -1 failed, error in errno - * ERRNO - * EINVAL 'sem' is not a valid semaphore, or - * 'value' >= SEM_VALUE_MAX - * ENOMEM out of memory, - * ENOSPC a required resource has been exhausted, - * ENOSYS semaphores are not supported, - * EPERM the process lacks appropriate privilege - * - * ------------------------------------------------------ - */ -{ - int result = 0; - sem_t s = NULL; - - if (pshared != 0) - { - /* - * Creating a semaphore that can be shared between - * processes - */ - result = EPERM; - } - else if (value > (unsigned int)SEM_VALUE_MAX) - { - result = EINVAL; - } - else - { - s = (sem_t) calloc (1, sizeof (*s)); - - if (NULL == s) - { - result = ENOMEM; - } - else - { - - s->value = value; - if (pthread_mutex_init(&s->lock, NULL) == 0) - { - -#if defined(NEED_SEM) - - s->sem = CreateEvent (NULL, - PTW32_FALSE, /* auto (not manual) reset */ - PTW32_FALSE, /* initial state is unset */ - NULL); - - if (0 == s->sem) - { - free (s); - (void) pthread_mutex_destroy(&s->lock); - result = ENOSPC; - } - else - { - s->leftToUnblock = 0; - } - -#else /* NEED_SEM */ - - if ((s->sem = CreateSemaphore (NULL, /* Always NULL */ - (long) 0, /* Force threads to wait */ - (long) SEM_VALUE_MAX, /* Maximum value */ - NULL)) == 0) /* Name */ - { - (void) pthread_mutex_destroy(&s->lock); - result = ENOSPC; - } - -#endif /* NEED_SEM */ - - } - else - { - result = ENOSPC; - } - - if (result != 0) - { - free(s); - } - } - } - - if (result != 0) - { - errno = result; - return -1; - } - - *sem = s; - - return 0; - -} /* sem_init */ diff --git a/platform/win32/msvc/external/pthreads.2/sem_open.c b/platform/win32/msvc/external/pthreads.2/sem_open.c deleted file mode 100644 index a0067b7c0ef..00000000000 --- a/platform/win32/msvc/external/pthreads.2/sem_open.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * ------------------------------------------------------------- - * - * Module: sem_open.c - * - * Purpose: - * Semaphores aren't actually part of the PThreads standard. - * They are defined by the POSIX Standard: - * - * POSIX 1003.1b-1993 (POSIX.1b) - * - * ------------------------------------------------------------- - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "semaphore.h" -#include "implement.h" - -/* ignore warning "unreferenced formal parameter" */ -#if defined(_MSC_VER) -#pragma warning( disable : 4100 ) -#endif - -int -sem_open (const char *name, int oflag, mode_t mode, unsigned int value) -{ - errno = ENOSYS; - return -1; -} /* sem_open */ diff --git a/platform/win32/msvc/external/pthreads.2/sem_post.c b/platform/win32/msvc/external/pthreads.2/sem_post.c deleted file mode 100644 index 40b55686c81..00000000000 --- a/platform/win32/msvc/external/pthreads.2/sem_post.c +++ /dev/null @@ -1,128 +0,0 @@ -/* - * ------------------------------------------------------------- - * - * Module: sem_post.c - * - * Purpose: - * Semaphores aren't actually part of the PThreads standard. - * They are defined by the POSIX Standard: - * - * POSIX 1003.1b-1993 (POSIX.1b) - * - * ------------------------------------------------------------- - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "semaphore.h" -#include "implement.h" - - -int -sem_post (sem_t * sem) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function posts a wakeup to a semaphore. - * - * PARAMETERS - * sem - * pointer to an instance of sem_t - * - * DESCRIPTION - * This function posts a wakeup to a semaphore. If there - * are waiting threads (or processes), one is awakened; - * otherwise, the semaphore value is incremented by one. - * - * RESULTS - * 0 successfully posted semaphore, - * -1 failed, error in errno - * ERRNO - * EINVAL 'sem' is not a valid semaphore, - * ENOSYS semaphores are not supported, - * ERANGE semaphore count is too big - * - * ------------------------------------------------------ - */ -{ - int result = 0; - sem_t s = *sem; - - if (s == NULL) - { - result = EINVAL; - } - else if ((result = pthread_mutex_lock (&s->lock)) == 0) - { - /* See sem_destroy.c - */ - if (*sem == NULL) - { - (void) pthread_mutex_unlock (&s->lock); - result = EINVAL; - return -1; - } - - if (s->value < SEM_VALUE_MAX) - { -#if defined(NEED_SEM) - if (++s->value <= 0 - && !SetEvent(s->sem)) - { - s->value--; - result = EINVAL; - } -#else - if (++s->value <= 0 - && !ReleaseSemaphore (s->sem, 1, NULL)) - { - s->value--; - result = EINVAL; - } -#endif /* NEED_SEM */ - } - else - { - result = ERANGE; - } - - (void) pthread_mutex_unlock (&s->lock); - } - - if (result != 0) - { - errno = result; - return -1; - } - - return 0; - -} /* sem_post */ diff --git a/platform/win32/msvc/external/pthreads.2/sem_post_multiple.c b/platform/win32/msvc/external/pthreads.2/sem_post_multiple.c deleted file mode 100644 index 248b6fc8963..00000000000 --- a/platform/win32/msvc/external/pthreads.2/sem_post_multiple.c +++ /dev/null @@ -1,142 +0,0 @@ -/* - * ------------------------------------------------------------- - * - * Module: sem_post_multiple.c - * - * Purpose: - * Semaphores aren't actually part of the PThreads standard. - * They are defined by the POSIX Standard: - * - * POSIX 1003.1b-1993 (POSIX.1b) - * - * ------------------------------------------------------------- - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "semaphore.h" -#include "implement.h" - - -int -sem_post_multiple (sem_t * sem, int count) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function posts multiple wakeups to a semaphore. - * - * PARAMETERS - * sem - * pointer to an instance of sem_t - * - * count - * counter, must be greater than zero. - * - * DESCRIPTION - * This function posts multiple wakeups to a semaphore. If there - * are waiting threads (or processes), n <= count are awakened; - * the semaphore value is incremented by count - n. - * - * RESULTS - * 0 successfully posted semaphore, - * -1 failed, error in errno - * ERRNO - * EINVAL 'sem' is not a valid semaphore - * or count is less than or equal to zero. - * ERANGE semaphore count is too big - * - * ------------------------------------------------------ - */ -{ - int result = 0; - long waiters; - sem_t s = *sem; - - if (s == NULL || count <= 0) - { - result = EINVAL; - } - else if ((result = pthread_mutex_lock (&s->lock)) == 0) - { - /* See sem_destroy.c - */ - if (*sem == NULL) - { - (void) pthread_mutex_unlock (&s->lock); - result = EINVAL; - return -1; - } - - if (s->value <= (SEM_VALUE_MAX - count)) - { - waiters = -s->value; - s->value += count; - if (waiters > 0) - { -#if defined(NEED_SEM) - if (SetEvent(s->sem)) - { - waiters--; - s->leftToUnblock += count - 1; - if (s->leftToUnblock > waiters) - { - s->leftToUnblock = waiters; - } - } -#else - if (ReleaseSemaphore (s->sem, (waiters<=count)?waiters:count, 0)) - { - /* No action */ - } -#endif - else - { - s->value -= count; - result = EINVAL; - } - } - } - else - { - result = ERANGE; - } - (void) pthread_mutex_unlock (&s->lock); - } - - if (result != 0) - { - errno = result; - return -1; - } - - return 0; - -} /* sem_post_multiple */ diff --git a/platform/win32/msvc/external/pthreads.2/sem_timedwait.c b/platform/win32/msvc/external/pthreads.2/sem_timedwait.c deleted file mode 100644 index 8e5f218c9a7..00000000000 --- a/platform/win32/msvc/external/pthreads.2/sem_timedwait.c +++ /dev/null @@ -1,238 +0,0 @@ -/* - * ------------------------------------------------------------- - * - * Module: sem_timedwait.c - * - * Purpose: - * Semaphores aren't actually part of the PThreads standard. - * They are defined by the POSIX Standard: - * - * POSIX 1003.1b-1993 (POSIX.1b) - * - * ------------------------------------------------------------- - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "semaphore.h" -#include "implement.h" - - -typedef struct { - sem_t sem; - int * resultPtr; -} sem_timedwait_cleanup_args_t; - - -static void PTW32_CDECL -ptw32_sem_timedwait_cleanup (void * args) -{ - sem_timedwait_cleanup_args_t * a = (sem_timedwait_cleanup_args_t *)args; - sem_t s = a->sem; - - if (pthread_mutex_lock (&s->lock) == 0) - { - /* - * We either timed out or were cancelled. - * If someone has posted between then and now we try to take the semaphore. - * Otherwise the semaphore count may be wrong after we - * return. In the case of a cancellation, it is as if we - * were cancelled just before we return (after taking the semaphore) - * which is ok. - */ - if (WaitForSingleObject(s->sem, 0) == WAIT_OBJECT_0) - { - /* We got the semaphore on the second attempt */ - *(a->resultPtr) = 0; - } - else - { - /* Indicate we're no longer waiting */ - s->value++; -#if defined(NEED_SEM) - if (s->value > 0) - { - s->leftToUnblock = 0; - } -#else - /* - * Don't release the W32 sema, it doesn't need adjustment - * because it doesn't record the number of waiters. - */ -#endif - } - (void) pthread_mutex_unlock (&s->lock); - } -} - - -int -sem_timedwait (sem_t * sem, const struct timespec *abstime) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function waits on a semaphore possibly until - * 'abstime' time. - * - * PARAMETERS - * sem - * pointer to an instance of sem_t - * - * abstime - * pointer to an instance of struct timespec - * - * DESCRIPTION - * This function waits on a semaphore. If the - * semaphore value is greater than zero, it decreases - * its value by one. If the semaphore value is zero, then - * the calling thread (or process) is blocked until it can - * successfully decrease the value or until interrupted by - * a signal. - * - * If 'abstime' is a NULL pointer then this function will - * block until it can successfully decrease the value or - * until interrupted by a signal. - * - * RESULTS - * 0 successfully decreased semaphore, - * -1 failed, error in errno - * ERRNO - * EINVAL 'sem' is not a valid semaphore, - * ENOSYS semaphores are not supported, - * EINTR the function was interrupted by a signal, - * EDEADLK a deadlock condition was detected. - * ETIMEDOUT abstime elapsed before success. - * - * ------------------------------------------------------ - */ -{ - int result = 0; - sem_t s = *sem; - - pthread_testcancel(); - - if (sem == NULL) - { - result = EINVAL; - } - else - { - DWORD milliseconds; - - if (abstime == NULL) - { - milliseconds = INFINITE; - } - else - { - /* - * Calculate timeout as milliseconds from current system time. - */ - milliseconds = ptw32_relmillisecs (abstime); - } - - if ((result = pthread_mutex_lock (&s->lock)) == 0) - { - int v; - - /* See sem_destroy.c - */ - if (*sem == NULL) - { - (void) pthread_mutex_unlock (&s->lock); - errno = EINVAL; - return -1; - } - - v = --s->value; - (void) pthread_mutex_unlock (&s->lock); - - if (v < 0) - { -#if defined(NEED_SEM) - int timedout; -#endif - sem_timedwait_cleanup_args_t cleanup_args; - - cleanup_args.sem = s; - cleanup_args.resultPtr = &result; - -#if defined(_MSC_VER) && _MSC_VER < 1400 -#pragma inline_depth(0) -#endif - /* Must wait */ - pthread_cleanup_push(ptw32_sem_timedwait_cleanup, (void *) &cleanup_args); -#if defined(NEED_SEM) - timedout = -#endif - result = pthreadCancelableTimedWait (s->sem, milliseconds); - pthread_cleanup_pop(result); -#if defined(_MSC_VER) && _MSC_VER < 1400 -#pragma inline_depth() -#endif - -#if defined(NEED_SEM) - - if (!timedout && pthread_mutex_lock (&s->lock) == 0) - { - if (*sem == NULL) - { - (void) pthread_mutex_unlock (&s->lock); - errno = EINVAL; - return -1; - } - - if (s->leftToUnblock > 0) - { - --s->leftToUnblock; - SetEvent(s->sem); - } - (void) pthread_mutex_unlock (&s->lock); - } - -#endif /* NEED_SEM */ - - } - } - - } - - if (result != 0) - { - - errno = result; - return -1; - - } - - return 0; - -} /* sem_timedwait */ diff --git a/platform/win32/msvc/external/pthreads.2/sem_trywait.c b/platform/win32/msvc/external/pthreads.2/sem_trywait.c deleted file mode 100644 index a9169c00b48..00000000000 --- a/platform/win32/msvc/external/pthreads.2/sem_trywait.c +++ /dev/null @@ -1,117 +0,0 @@ -/* - * ------------------------------------------------------------- - * - * Module: sem_trywait.c - * - * Purpose: - * Semaphores aren't actually part of the PThreads standard. - * They are defined by the POSIX Standard: - * - * POSIX 1003.1b-1993 (POSIX.1b) - * - * ------------------------------------------------------------- - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "semaphore.h" -#include "implement.h" - - -int -sem_trywait (sem_t * sem) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function tries to wait on a semaphore. - * - * PARAMETERS - * sem - * pointer to an instance of sem_t - * - * DESCRIPTION - * This function tries to wait on a semaphore. If the - * semaphore value is greater than zero, it decreases - * its value by one. If the semaphore value is zero, then - * this function returns immediately with the error EAGAIN - * - * RESULTS - * 0 successfully decreased semaphore, - * -1 failed, error in errno - * ERRNO - * EAGAIN the semaphore was already locked, - * EINVAL 'sem' is not a valid semaphore, - * ENOTSUP sem_trywait is not supported, - * EINTR the function was interrupted by a signal, - * EDEADLK a deadlock condition was detected. - * - * ------------------------------------------------------ - */ -{ - int result = 0; - sem_t s = *sem; - - if (s == NULL) - { - result = EINVAL; - } - else if ((result = pthread_mutex_lock (&s->lock)) == 0) - { - /* See sem_destroy.c - */ - if (*sem == NULL) - { - (void) pthread_mutex_unlock (&s->lock); - errno = EINVAL; - return -1; - } - - if (s->value > 0) - { - s->value--; - } - else - { - result = EAGAIN; - } - - (void) pthread_mutex_unlock (&s->lock); - } - - if (result != 0) - { - errno = result; - return -1; - } - - return 0; - -} /* sem_trywait */ diff --git a/platform/win32/msvc/external/pthreads.2/sem_unlink.c b/platform/win32/msvc/external/pthreads.2/sem_unlink.c deleted file mode 100644 index 2986262a2b8..00000000000 --- a/platform/win32/msvc/external/pthreads.2/sem_unlink.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * ------------------------------------------------------------- - * - * Module: sem_unlink.c - * - * Purpose: - * Semaphores aren't actually part of the PThreads standard. - * They are defined by the POSIX Standard: - * - * POSIX 1003.1b-1993 (POSIX.1b) - * - * ------------------------------------------------------------- - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "semaphore.h" -#include "implement.h" - -/* ignore warning "unreferenced formal parameter" */ -#if defined(_MSC_VER) -#pragma warning( disable : 4100 ) -#endif - -int -sem_unlink (const char *name) -{ - errno = ENOSYS; - return -1; -} /* sem_unlink */ diff --git a/platform/win32/msvc/external/pthreads.2/sem_wait.c b/platform/win32/msvc/external/pthreads.2/sem_wait.c deleted file mode 100644 index c3f0c47a6fb..00000000000 --- a/platform/win32/msvc/external/pthreads.2/sem_wait.c +++ /dev/null @@ -1,187 +0,0 @@ -/* - * ------------------------------------------------------------- - * - * Module: sem_wait.c - * - * Purpose: - * Semaphores aren't actually part of the PThreads standard. - * They are defined by the POSIX Standard: - * - * POSIX 1003.1b-1993 (POSIX.1b) - * - * ------------------------------------------------------------- - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "semaphore.h" -#include "implement.h" - - -static void PTW32_CDECL -ptw32_sem_wait_cleanup(void * sem) -{ - sem_t s = (sem_t) sem; - - if (pthread_mutex_lock (&s->lock) == 0) - { - /* - * If sema is destroyed do nothing, otherwise:- - * If the sema is posted between us being cancelled and us locking - * the sema again above then we need to consume that post but cancel - * anyway. If we don't get the semaphore we indicate that we're no - * longer waiting. - */ - if (*((sem_t *)sem) != NULL && !(WaitForSingleObject(s->sem, 0) == WAIT_OBJECT_0)) - { - ++s->value; -#if defined(NEED_SEM) - if (s->value > 0) - { - s->leftToUnblock = 0; - } -#else - /* - * Don't release the W32 sema, it doesn't need adjustment - * because it doesn't record the number of waiters. - */ -#endif /* NEED_SEM */ - } - (void) pthread_mutex_unlock (&s->lock); - } -} - -int -sem_wait (sem_t * sem) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function waits on a semaphore. - * - * PARAMETERS - * sem - * pointer to an instance of sem_t - * - * DESCRIPTION - * This function waits on a semaphore. If the - * semaphore value is greater than zero, it decreases - * its value by one. If the semaphore value is zero, then - * the calling thread (or process) is blocked until it can - * successfully decrease the value or until interrupted by - * a signal. - * - * RESULTS - * 0 successfully decreased semaphore, - * -1 failed, error in errno - * ERRNO - * EINVAL 'sem' is not a valid semaphore, - * ENOSYS semaphores are not supported, - * EINTR the function was interrupted by a signal, - * EDEADLK a deadlock condition was detected. - * - * ------------------------------------------------------ - */ -{ - int result = 0; - sem_t s = *sem; - - pthread_testcancel(); - - if (s == NULL) - { - result = EINVAL; - } - else - { - if ((result = pthread_mutex_lock (&s->lock)) == 0) - { - int v; - - /* See sem_destroy.c - */ - if (*sem == NULL) - { - (void) pthread_mutex_unlock (&s->lock); - errno = EINVAL; - return -1; - } - - v = --s->value; - (void) pthread_mutex_unlock (&s->lock); - - if (v < 0) - { -#if defined(_MSC_VER) && _MSC_VER < 1400 -#pragma inline_depth(0) -#endif - /* Must wait */ - pthread_cleanup_push(ptw32_sem_wait_cleanup, (void *) s); - result = pthreadCancelableWait (s->sem); - /* Cleanup if we're canceled or on any other error */ - pthread_cleanup_pop(result); -#if defined(_MSC_VER) && _MSC_VER < 1400 -#pragma inline_depth() -#endif - } -#if defined(NEED_SEM) - - if (!result && pthread_mutex_lock (&s->lock) == 0) - { - if (*sem == NULL) - { - (void) pthread_mutex_unlock (&s->lock); - errno = EINVAL; - return -1; - } - - if (s->leftToUnblock > 0) - { - --s->leftToUnblock; - SetEvent(s->sem); - } - (void) pthread_mutex_unlock (&s->lock); - } - -#endif /* NEED_SEM */ - - } - - } - - if (result != 0) - { - errno = result; - return -1; - } - - return 0; - -} /* sem_wait */ diff --git a/platform/win32/msvc/external/pthreads.2/semaphore.c b/platform/win32/msvc/external/pthreads.2/semaphore.c deleted file mode 100644 index 5768ea7b287..00000000000 --- a/platform/win32/msvc/external/pthreads.2/semaphore.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * ------------------------------------------------------------- - * - * Module: semaphore.c - * - * Purpose: - * Concatenated version of separate modules to allow - * inlining optimisation, which it is assumed can only - * be effective within a single module. - * - * Semaphores aren't actually part of the PThreads standard. - * They are defined by the POSIX Standard: - * - * POSIX 1003.1b-1993 (POSIX.1b) - * - * ------------------------------------------------------------- - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#if !defined(NEED_FTIME) -# include -#endif - -#include - -#include "pthread.h" -#include "semaphore.h" -#include "implement.h" - - -#include "sem_init.c" -#include "sem_destroy.c" -#include "sem_trywait.c" -#include "sem_wait.c" -#include "sem_timedwait.c" -#include "sem_post.c" -#include "sem_post_multiple.c" -#include "sem_getvalue.c" -#include "sem_open.c" -#include "sem_close.c" -#include "sem_unlink.c" diff --git a/platform/win32/msvc/external/pthreads.2/semaphore.h b/platform/win32/msvc/external/pthreads.2/semaphore.h deleted file mode 100644 index f7a4286e45c..00000000000 --- a/platform/win32/msvc/external/pthreads.2/semaphore.h +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Module: semaphore.h - * - * Purpose: - * Semaphores aren't actually part of the PThreads standard. - * They are defined by the POSIX Standard: - * - * POSIX 1003.1b-1993 (POSIX.1b) - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ -#if !defined( SEMAPHORE_H ) -#define SEMAPHORE_H - -#undef PTW32_SEMAPHORE_LEVEL - -#if defined(_POSIX_SOURCE) -#define PTW32_SEMAPHORE_LEVEL 0 -/* Early POSIX */ -#endif - -#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199309 -#undef PTW32_SEMAPHORE_LEVEL -#define PTW32_SEMAPHORE_LEVEL 1 -/* Include 1b, 1c and 1d */ -#endif - -#if defined(INCLUDE_NP) -#undef PTW32_SEMAPHORE_LEVEL -#define PTW32_SEMAPHORE_LEVEL 2 -/* Include Non-Portable extensions */ -#endif - -#define PTW32_SEMAPHORE_LEVEL_MAX 3 - -#if !defined(PTW32_SEMAPHORE_LEVEL) -#define PTW32_SEMAPHORE_LEVEL PTW32_SEMAPHORE_LEVEL_MAX -/* Include everything */ -#endif - -#if defined(__GNUC__) && ! defined (__declspec) -# error Please upgrade your GNU compiler to one that supports __declspec. -#endif - -/* - * When building the library, you should define PTW32_BUILD so that - * the variables/functions are exported correctly. When using the library, - * do NOT define PTW32_BUILD, and then the variables/functions will - * be imported correctly. - */ -#if !defined(PTW32_STATIC_LIB) -# if defined(PTW32_BUILD) -# define PTW32_DLLPORT __declspec (dllexport) -# else -# define PTW32_DLLPORT __declspec (dllimport) -# endif -#else -# define PTW32_DLLPORT -#endif - -/* - * This is a duplicate of what is in the autoconf config.h, - * which is only used when building the pthread-win32 libraries. - */ - -#if !defined(PTW32_CONFIG_H) -# if defined(WINCE) -# define NEED_ERRNO -# define NEED_SEM -# endif -# if defined(__MINGW64__) -# define HAVE_STRUCT_TIMESPEC -# define HAVE_MODE_T -# elif defined(_UWIN) || defined(__MINGW32__) -# define HAVE_MODE_T -# endif -#endif - -/* - * - */ - -#if PTW32_SEMAPHORE_LEVEL >= PTW32_SEMAPHORE_LEVEL_MAX -#if defined(NEED_ERRNO) -#include "need_errno.h" -#else -#include -#endif -#endif /* PTW32_SEMAPHORE_LEVEL >= PTW32_SEMAPHORE_LEVEL_MAX */ - -#define _POSIX_SEMAPHORES - -#if defined(__cplusplus) -extern "C" -{ -#endif /* __cplusplus */ - -#if !defined(HAVE_MODE_T) -typedef unsigned int mode_t; -#endif - - -typedef struct sem_t_ * sem_t; - -PTW32_DLLPORT int __cdecl sem_init (sem_t * sem, - int pshared, - unsigned int value); - -PTW32_DLLPORT int __cdecl sem_destroy (sem_t * sem); - -PTW32_DLLPORT int __cdecl sem_trywait (sem_t * sem); - -PTW32_DLLPORT int __cdecl sem_wait (sem_t * sem); - -PTW32_DLLPORT int __cdecl sem_timedwait (sem_t * sem, - const struct timespec * abstime); - -PTW32_DLLPORT int __cdecl sem_post (sem_t * sem); - -PTW32_DLLPORT int __cdecl sem_post_multiple (sem_t * sem, - int count); - -PTW32_DLLPORT int __cdecl sem_open (const char * name, - int oflag, - mode_t mode, - unsigned int value); - -PTW32_DLLPORT int __cdecl sem_close (sem_t * sem); - -PTW32_DLLPORT int __cdecl sem_unlink (const char * name); - -PTW32_DLLPORT int __cdecl sem_getvalue (sem_t * sem, - int * sval); - -#if defined(__cplusplus) -} /* End of extern "C" */ -#endif /* __cplusplus */ - -#undef PTW32_SEMAPHORE_LEVEL -#undef PTW32_SEMAPHORE_LEVEL_MAX - -#endif /* !SEMAPHORE_H */ diff --git a/platform/win32/msvc/external/pthreads.2/signal.c b/platform/win32/msvc/external/pthreads.2/signal.c deleted file mode 100644 index 8073fb3e15c..00000000000 --- a/platform/win32/msvc/external/pthreads.2/signal.c +++ /dev/null @@ -1,179 +0,0 @@ -/* - * signal.c - * - * Description: - * Thread-aware signal functions. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -/* - * Possible future strategy for implementing pthread_kill() - * ======================================================== - * - * Win32 does not implement signals. - * Signals are simply software interrupts. - * pthread_kill() asks the system to deliver a specified - * signal (interrupt) to a specified thread in the same - * process. - * Signals are always asynchronous (no deferred signals). - * Pthread-win32 has an async cancelation mechanism. - * A similar system can be written to deliver signals - * within the same process (on ix86 processors at least). - * - * Each thread maintains information about which - * signals it will respond to. Handler routines - * are set on a per-process basis - not per-thread. - * When signalled, a thread will check it's sigmask - * and, if the signal is not being ignored, call the - * handler routine associated with the signal. The - * thread must then (except for some signals) return to - * the point where it was interrupted. - * - * Ideally the system itself would check the target thread's - * mask before possibly needlessly bothering the thread - * itself. This could be done by pthread_kill(), that is, - * in the signaling thread since it has access to - * all pthread_t structures. It could also retrieve - * the handler routine address to minimise the target - * threads response overhead. This may also simplify - * serialisation of the access to the per-thread signal - * structures. - * - * pthread_kill() eventually calls a routine similar to - * ptw32_cancel_thread() which manipulates the target - * threads processor context to cause the thread to - * run the handler launcher routine. pthread_kill() must - * save the target threads current context so that the - * handler launcher routine can restore the context after - * the signal handler has returned. Some handlers will not - * return, eg. the default SIGKILL handler may simply - * call pthread_exit(). - * - * The current context is saved in the target threads - * pthread_t structure. - */ - -#include "pthread.h" -#include "implement.h" - -#if defined(HAVE_SIGSET_T) - -static void -ptw32_signal_thread () -{ -} - -static void -ptw32_signal_callhandler () -{ -} - -int -pthread_sigmask (int how, sigset_t const *set, sigset_t * oset) -{ - pthread_t thread = pthread_self (); - - if (thread.p == NULL) - { - return ENOENT; - } - - /* Validate the `how' argument. */ - if (set != NULL) - { - switch (how) - { - case SIG_BLOCK: - break; - case SIG_UNBLOCK: - break; - case SIG_SETMASK: - break; - default: - /* Invalid `how' argument. */ - return EINVAL; - } - } - - /* Copy the old mask before modifying it. */ - if (oset != NULL) - { - memcpy (oset, &(thread.p->sigmask), sizeof (sigset_t)); - } - - if (set != NULL) - { - unsigned int i; - - /* FIXME: this code assumes that sigmask is an even multiple of - the size of a long integer. */ - - unsigned long *src = (unsigned long const *) set; - unsigned long *dest = (unsigned long *) &(thread.p->sigmask); - - switch (how) - { - case SIG_BLOCK: - for (i = 0; i < (sizeof (sigset_t) / sizeof (unsigned long)); i++) - { - /* OR the bit field longword-wise. */ - *dest++ |= *src++; - } - break; - case SIG_UNBLOCK: - for (i = 0; i < (sizeof (sigset_t) / sizeof (unsigned long)); i++) - { - /* XOR the bitfield longword-wise. */ - *dest++ ^= *src++; - } - case SIG_SETMASK: - /* Replace the whole sigmask. */ - memcpy (&(thread.p->sigmask), set, sizeof (sigset_t)); - break; - } - } - - return 0; -} - -int -sigwait (const sigset_t * set, int *sig) -{ - /* This routine is a cancellation point */ - pthread_test_cancel(); -} - -int -sigaction (int signum, const struct sigaction *act, struct sigaction *oldact) -{ -} - -#endif /* HAVE_SIGSET_T */ diff --git a/platform/win32/msvc/external/pthreads.2/spin.c b/platform/win32/msvc/external/pthreads.2/spin.c deleted file mode 100644 index 92b9bed9d40..00000000000 --- a/platform/win32/msvc/external/pthreads.2/spin.c +++ /dev/null @@ -1,46 +0,0 @@ -/* - * spin.c - * - * Description: - * This translation unit implements spin lock primitives. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -#include "ptw32_spinlock_check_need_init.c" -#include "pthread_spin_init.c" -#include "pthread_spin_destroy.c" -#include "pthread_spin_lock.c" -#include "pthread_spin_unlock.c" -#include "pthread_spin_trylock.c" diff --git a/platform/win32/msvc/external/pthreads.2/sync.c b/platform/win32/msvc/external/pthreads.2/sync.c deleted file mode 100644 index 03c9881910a..00000000000 --- a/platform/win32/msvc/external/pthreads.2/sync.c +++ /dev/null @@ -1,43 +0,0 @@ -/* - * sync.c - * - * Description: - * This translation unit implements functions related to thread - * synchronisation. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -#include "pthread_detach.c" -#include "pthread_join.c" diff --git a/platform/win32/msvc/external/pthreads.2/tests/Bmakefile b/platform/win32/msvc/external/pthreads.2/tests/Bmakefile deleted file mode 100644 index 15cb02a3f4e..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/Bmakefile +++ /dev/null @@ -1,358 +0,0 @@ -# Makefile for the pthreads test suite. -# If all of the .pass files can be created, the test suite has passed. -# -# -------------------------------------------------------------------------- -# -# Pthreads-win32 - POSIX Threads Library for Win32 -# Copyright(C) 1998 John E. Bossom -# Copyright(C) 1999,2005 Pthreads-win32 contributors -# -# Contact Email: rpj@callisto.canberra.edu.au -# -# The current list of contributors is contained -# in the file CONTRIBUTORS included with the source -# code distribution. The list can also be seen at the -# following World Wide Web location: -# http://sources.redhat.com/pthreads-win32/contributors.html -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library in the file COPYING.LIB; -# if not, write to the Free Software Foundation, Inc., -# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA -# - -DLL_VER = 2 - -CP = copy -RM = erase -CAT = type -MKDIR = mkdir -TOUCH = echo Passed > -ECHO = @echo - -# The next path is relative to $BUILD_DIR -QAPC = # ..\QueueUserAPCEx\User\quserex.dll - -CPHDR = pthread.h semaphore.h sched.h - -OPTIM = -O2 - -XXLIBS = cw32mti.lib ws2_32.lib - -# C++ Exceptions -BCEFLAGS = -P -DPtW32NoCatchWarn -D__CLEANUP_CXX -BCELIB = pthreadBCE$(DLL_VER).lib -BCEDLL = pthreadBCE$(DLL_VER).dll -# C cleanup code -BCFLAGS = -D__CLEANUP_C -BCLIB = pthreadBC$(DLL_VER).lib -BCDLL = pthreadBC$(DLL_VER).dll -# C++ Exceptions in application - using VC version of pthreads dll -BCXFLAGS = -D__CLEANUP_C - -# Defaults -CPLIB = $(BCLIB) -CPDLL = $(BCDLL) - -CFLAGS= -q $(OPTIM) /D_WIN32_WINNT=0x400 -w -tWC -tWM -4 -w-aus -w-asc -w-par -LFLAGS= -INCLUDES=-I. -BUILD_DIR=.. - -COPYFILES = $(CPHDR) $(CPLIB) $(CPDLL) $(QAPC) - -EHFLAGS = - -# If a test case returns a non-zero exit code to the shell, make will -# stop. - -PASSES= loadfree.pass \ - errno1.pass \ - self1.pass mutex5.pass \ - mutex1.pass mutex1n.pass mutex1e.pass mutex1r.pass \ - semaphore1.pass semaphore2.pass semaphore3.pass \ - mutex2.pass mutex3.pass \ - mutex2r.pass mutex2e.pass mutex3r.pass mutex3e.pass \ - condvar1.pass condvar1_1.pass condvar1_2.pass condvar2.pass condvar2_1.pass \ - exit1.pass create1.pass create2.pass reuse1.pass reuse2.pass equal1.pass \ - sequence1.pass kill1.pass valid1.pass valid2.pass \ - exit2.pass exit3.pass exit4.pass exit5.pass \ - join0.pass join1.pass detach1.pass join2.pass join3.pass \ - mutex4.pass mutex6.pass mutex6n.pass mutex6e.pass mutex6r.pass \ - mutex6s.pass mutex6es.pass mutex6rs.pass \ - mutex7.pass mutex7n.pass mutex7e.pass mutex7r.pass \ - mutex8.pass mutex8n.pass mutex8e.pass mutex8r.pass \ - robust1.pass robust2.pass robust3.pass robust4.pass robust5.pass \ - count1.pass \ - once1.pass once2.pass once3.pass once4.pass \ - self2.pass \ - cancel1.pass cancel2.pass \ - semaphore4.pass semaphore4t.pass semaphore5.pass \ - barrier1.pass barrier2.pass barrier3.pass barrier4.pass barrier5.pass barrier6.pass \ - tsd1.pass tsd2.pass delay1.pass delay2.pass eyal1.pass \ - condvar3.pass condvar3_1.pass condvar3_2.pass condvar3_3.pass \ - condvar4.pass condvar5.pass condvar6.pass \ - condvar7.pass condvar8.pass condvar9.pass \ - rwlock1.pass rwlock2.pass rwlock3.pass rwlock4.pass \ - rwlock5.pass rwlock6.pass rwlock7.pass rwlock8.pass \ - rwlock2_t.pass rwlock3_t.pass rwlock4_t.pass rwlock5_t.pass rwlock6_t.pass rwlock6_t2.pass \ - context1.pass \ - cancel3.pass cancel4.pass cancel5.pass cancel6a.pass cancel6d.pass \ - cancel7.pass cancel8.pass \ - cleanup0.pass cleanup1.pass cleanup2.pass cleanup3.pass \ - priority1.pass priority2.pass inherit1.pass \ - spin1.pass spin2.pass spin3.pass spin4.pass \ - exception1.pass exception2.pass exception3.pass \ - cancel9.pass stress1.pass - -BENCHRESULTS = \ - benchtest1.bench benchtest2.bench benchtest3.bench benchtest4.bench benchtest5.bench - -help: - @ $(ECHO) Run one of the following command lines: - @ $(ECHO) make clean BC (to test using BC dll with VC (no EH) applications) - @ $(ECHO) make clean BCX (to test using BC dll with VC++ (EH) applications) - @ $(ECHO) make clean BCE (to test using the BCE dll with VC++ EH applications) - @ $(ECHO) make clean BC-bench (to benchtest using BC dll with C bench app) - @ $(ECHO) make clean BCX-bench (to benchtest using BC dll with C++ bench app) - @ $(ECHO) make clean BCE-bench (to benchtest using BCE dll with C++ bench app) - -all: - @ make clean BC - @ make clean BCX - @ make clean BCE - @ make clean BC-bench - -# This allows an individual test application to be made using the default lib. -# e.g. make clean test cancel3.exe -test: $(CPLIB) $(CPDLL) $(CPHDR) $(QAPC) - -tests: $(CPLIB) $(CPDLL) $(CPHDR) $(QAPC) sizes.pass $(PASSES) - @ $(ECHO) ALL TESTS PASSED! Congratulations! - -benchtests: $(CPLIB) $(CPDLL) $(CPHDR) $(BENCHRESULTS) - @ $(ECHO) ALL BENCH TESTS DONE. - -sizes.pass: sizes.exe - @ $(ECHO) ... Running $(TEST) test: $*.exe - @ .\$*.exe > SIZES.$(TEST) - @ $(CAT) SIZES.$(TEST) - @ $(ECHO) ...... Passed - @ $(TOUCH) $*.pass - -BCE: - @ make -f Bmakefile TEST="$@" CPLIB="$(BCELIB)" CPDLL="$(BCEDLL)" EHFLAGS="$(BCEFLAGS)" tests - -BC: - @ make -f Bmakefile TEST="$@" CPLIB="$(BCLIB)" CPDLL="$(BCDLL)" EHFLAGS="$(BCFLAGS)" tests - -BCX: - @ make -f Bmakefile TEST="$@" CPLIB="$(BCLIB)" CPDLL="$(BCDLL)" EHFLAGS="$(BCXFLAGS)" tests - -BCE-bench: - @ make -f Bmakefile TEST="$@" CPLIB="$(BCELIB)" CPDLL="$(BCEDLL)" EHFLAGS="$(BCEFLAGS)" XXLIBS="benchlib.o" benchtests - -BC-bench: - @ make -f Bmakefile TEST="$@" CPLIB="$(BCLIB)" CPDLL="$(BCDLL)" EHFLAGS="$(BCFLAGS)" XXLIBS="benchlib.o" benchtests - -BCX-bench: - @ make -f Bmakefile TEST="$@" CPLIB="$(BCLIB)" CPDLL="$(BCDLL)" EHFLAGS="$(BCXFLAGS)" XXLIBS="benchlib.o" benchtests - -.exe.pass: - @ $(ECHO) ... Running $(TEST) test: $< - @ .\$< - @ $(ECHO) ...... Passed - @ $(TOUCH) $@ - -.exe.bench: - @ $(ECHO) ... Running $(TEST) benchtest: $< - @ .\$< - @ $(ECHO) ...... Done - @ $(TOUCH) $@ - -.c.exe: - @ $(ECHO) $(CC) $(EHFLAGS) $(CFLAGS) $(INCLUDES) $< -e$@ $(LFLAGS) $(CPLIB) $(XXLIBS) - @ $(CC) $(EHFLAGS) $(CFLAGS) $(INCLUDES) $< -e$@ $(LFLAGS) $(CPLIB) $(XXLIBS) - -.c.o: - @ $(ECHO) $(CC) $(EHFLAGS) -c $(CFLAGS) $(INCLUDES) $< -o$@ - @ $(CC) $(EHFLAGS) $(CFLAGS) -c $(INCLUDES) $< -o$@ - - -.c.i: - @ $(CC) /P $(EHFLAGS) $(CFLAGS) $(INCLUDES) $< - -$(COPYFILES): - @ $(ECHO) Copying $(BUILD_DIR)\$@ - @ $(CP) $(BUILD_DIR)\$@ . - -pthread.dll: $(CPDLL) - @ $(CP) $(CPDLL) pthread.dll - @ $(CP) $(CPLIB) pthread.lib - -clean: - - $(RM) *.dll - - $(RM) *.lib - - $(RM) pthread.h - - $(RM) semaphore.h - - $(RM) sched.h - - $(RM) *.e - - $(RM) *.i - - $(RM) *.obj - - $(RM) *.tds - - $(RM) *.pdb - - $(RM) *.o - - $(RM) *.asm - - $(RM) *.exe - - $(RM) *.pass - - $(RM) *.bench - - $(RM) *.log - -benchtest1.bench: -benchtest2.bench: -benchtest3.bench: -benchtest4.bench: -benchtest5.bench: -barrier1.pass: semaphore4.pass -barrier2.pass: barrier1.pass -barrier3.pass: barrier2.pass -barrier4.pass: barrier3.pass -barrier5.pass: barrier4.pass -barrier6.pass: barrier5.pass -cancel1.pass: create1.pass -cancel2.pass: cancel1.pass -cancel3.pass: context1.pass -cancel4.pass: cancel3.pass -cancel5.pass: cancel3.pass -cancel6a.pass: cancel3.pass -cancel6d.pass: cancel3.pass -cancel7.pass: kill1.pass -cancel8.pass: cancel7.pass -cancel9.pass: cancel8.pass -cleanup0.pass: cancel5.pass -cleanup1.pass: cleanup0.pass -cleanup2.pass: cleanup1.pass -cleanup3.pass: cleanup2.pass -condvar1.pass: -condvar1_1.pass: condvar1.pass -condvar1_2.pass: join2.pass -condvar2.pass: condvar1.pass -condvar2_1.pass: condvar2.pass join2.pass -condvar3.pass: create1.pass condvar2.pass -condvar3_1.pass: condvar3.pass join2.pass -condvar3_2.pass: condvar3_1.pass -condvar3_3.pass: condvar3_2.pass -condvar4.pass: create1.pass -condvar5.pass: condvar4.pass -condvar6.pass: condvar5.pass -condvar7.pass: condvar6.pass cleanup1.pass -condvar8.pass: condvar7.pass -condvar9.pass: condvar8.pass -context1.pass: cancel1.pass -count1.pass: join1.pass -create1.pass: mutex2.pass -create2.pass: create1.pass -delay1.pass: -delay2.pass: delay1.pass -detach1.pass: join0.pass -equal1.pass: create1.pass -errno1.pass: mutex3.pass -exception1.pass: cancel4.pass -exception2.pass: exception1.pass -exception3.pass: exception2.pass -exit1.pass: -exit2.pass: create1.pass -exit3.pass: create1.pass -exit4.pass: -exit5.pass: kill1.pass -eyal1.pass: tsd1.pass -inherit1.pass: join1.pass priority1.pass -join0.pass: create1.pass -join1.pass: create1.pass -join2.pass: create1.pass -join3.pass: join2.pass -kill1.pass: -loadfree.pass: pthread.dll -mutex1.pass: self1.pass -mutex1n.pass: mutex1.pass -mutex1e.pass: mutex1.pass -mutex1r.pass: mutex1.pass -mutex2.pass: mutex1.pass -mutex2r.pass: mutex2.pass -mutex2e.pass: mutex2.pass -mutex3.pass: create1.pass -mutex3r.pass: mutex3.pass -mutex3e.pass: mutex3.pass -mutex4.pass: mutex3.pass -mutex5.pass: -mutex6.pass: mutex4.pass -mutex6n.pass: mutex4.pass -mutex6e.pass: mutex4.pass -mutex6r.pass: mutex4.pass -mutex6s.pass: mutex6.pass -mutex6rs.pass: mutex6r.pass -mutex6es.pass: mutex6e.pass -mutex7.pass: mutex6.pass -mutex7n.pass: mutex6n.pass -mutex7e.pass: mutex6e.pass -mutex7r.pass: mutex6r.pass -mutex8.pass: mutex7.pass -mutex8n.pass: mutex7n.pass -mutex8e.pass: mutex7e.pass -mutex8r.pass: mutex7r.pass -once1.pass: create1.pass -once2.pass: once1.pass -once3.pass: once2.pass -once4.pass: once3.pass -priority1.pass: join1.pass -priority2.pass: priority1.pass barrier3.pass -reuse1.pass: create2.pass -reuse2.pass: reuse1.pass -robust1.pass: mutex8r.pass -robust2.pass: mutex8r.pass -robust3.pass: robust2.pass -robust4.pass: robust3.pass -robust5.pass: robust4.pass -rwlock1.pass: condvar6.pass -rwlock2.pass: rwlock1.pass -rwlock3.pass: rwlock2.pass join2.pass -rwlock4.pass: rwlock3.pass -rwlock5.pass: rwlock4.pass -rwlock6.pass: rwlock5.pass -rwlock7.pass: rwlock6.pass -rwlock8.pass: rwlock7.pass -rwlock2_t.pass: rwlock2.pass -rwlock3_t.pass: rwlock2_t.pass -rwlock4_t.pass: rwlock3_t.pass -rwlock5_t.pass: rwlock4_t.pass -rwlock6_t.pass: rwlock5_t.pass -rwlock6_t2.pass: rwlock6_t.pass -self1.pass: -self2.pass: create1.pass -semaphore1.pass: -semaphore2.pass: -semaphore3.pass: semaphore2.pass -semaphore4.pass: semaphore3.pass cancel1.pass -semaphore4t.pass: semaphore4.pass -semaphore5.pass: semaphore4.pass -sequence1.pass: reuse2.pass -sizes.pass: -spin1.pass: -spin2.pass: spin1.pass -spin3.pass: spin2.pass -spin4.pass: spin3.pass -stress1.pass: -tsd1.pass: barrier5.pass join1.pass -tsd2.pass: tsd1.pass -valid1.pass: join1.pass -valid2.pass: valid1.pass diff --git a/platform/win32/msvc/external/pthreads.2/tests/ChangeLog b/platform/win32/msvc/external/pthreads.2/tests/ChangeLog deleted file mode 100644 index 6db8283e490..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/ChangeLog +++ /dev/null @@ -1,1000 +0,0 @@ -2011-07-03 Ross Johnson - - * create3.c: Removed; testing a condition that is not in the library's - scope and was more trouble than it was worth. - * cancel2.c: Ensure this test only runs for Structured or C++ EH. - * exit2.c: Shorten Sleep() time. - * exit3.c: Likewise. - * cancel1.c: Likewise. - * cancel3.c: Likewise. - * exception3.c: Likewise; make terminate routine consistent for all - build environments. - -2011-07-02 Ross Johnson - - * spin3.c: Unlock the unlocked spinlock now returns success. - * rwlock3.c: Join the thread to ensure it's completed. - * rwlock4.c: Likewise. - * rwlock5.c: Likewise. - * Makefile: Adjust prerequisites. - * GNUmakefile: Likewise. - * Bmakefile: Likewise. - * Wmakefile: Likewise. - -2011-07-02 Daniel Richard G. - - * *.[ch]: Cleanups around timeb struct, mainly centralising - macro definitions in test.h. - * Makefile: Fix annoying nmake warning. - -2011-06-30 Ross Johnson - - * sequence1.c: Fix loop overrun. - -2011-05-11 Ross Johnson - - * GNUmakefile (GCE-debug): New target; expects pthreadGCE2d.dll. - -2011-05-05 Ross Johnson - - * openmp1.c: Add missing test; used to comfirm that this - library works with libgomp; if this test produces a segfault - then try upgrading your version of libgomp/gcc; gcc version - 4.5.2 passes this test. - -2011-03-26 Ross Johnson - - * sequence1.c: New test for new pthread_getsequence_np(). - -2011-03-24 Ross Johnson - - * mutex*.c: Include tests for robust mutexes wherever - appropriate. - * benchtest*.c: Include comparisons for robust mutexes. - * robust1.c: New test for robust mutex handling. - * robust2.c: Likewise. - * robust3.c: Likewise. - * robust4.c: Likewise. - * robust5.c: Likewise. - * GNUmakefile: Include new tests. - * Makefile: Likewise. - * Bmakefile: Likewise (not tested). - * Wmakefile: Likewise (not tested). - -2011-03-06 Ross Johnson - - * several (MINGW64): Cast and call fixups for 64 bit compatibility; - clean build via x86_64-w64-mingw32 cross toolchain on Linux - i686 targeting x86_64 win64. - -2011-03-04 Ross Johnson - - * condvar3_2.c: abstime.tv_sec operation warning fixed. - * several: Use correct casting on pthread_join result arg - and associated declaration and usage; assumed that 64 bit - gcc gave some warnings for it. - -2011-02-28 Ross Johnson - - * test.h: Define FTIME to be _ftime64_s or _ftime64 or _ftime - in that order of preference where supported. - * several: Replace calls to _ftime with the FTIME macro. - -2010-06-19 Ross Johnson - - * Makefile (STATICRESULTS): Add all tests into suite for static - library. - * GNUmakefile (STATICTESTS): Likewise, except for openmp1.c which - has a DLL dependency. - -2010-02-04 Ross Johnson - - * openmp1.c: New; for libgomp compatibility (OpenMP). - * barrier5.c: Rewrite after changes to barriers. - * barrier6.c: New. - * benchtest6.c: New; timing barriers. - * GNUMakefile: Update for new tests. - * Makefile: Ditto. - * BMakefile: Ditto. - * once3.c: Improve cancelation testing. - * stress1.c: Fix comment. - -2007-01-04 Ross Johnson - - * context1.c: Include context.h from library sources and remove - x86 dependence in main(). - -2005-06-12 Ross Johnson - - * stress1.c (millisecondsFromNow): Remove limit 0 <= millisecs < 1000; - now works for -INT_MAX <= millisecs <= INT_MAX; not needed for - stress1.c but should be general anyway. - -2005-05-18 Ross Johnson - - * reuse2.c (main): Must use a read with memory barrier semantics - when polling 'done' to force the cache into coherence on MP systems. - -2005-05-15 Ross Johnson - - * detach1.c: New test. - * join1.c: Reduce sleep times. - * join0.c: Remove MSVCRT conditional compile - join should always - return the thread exit code. - * join1.c: Likewise. - * join2.c: Likewise. - * join3.c: Likewise. - -2005-04-18 Ross Johnson - - * condvar3.c: Remove locks from around signalling calls - should not - be required for normal operation and only serve to mask deficiencies; - ensure that CV destruction is not premature after removing guards. - * condvar3_1.c: Likewise. - * condvar3_2.c: Likewise. - * condvar3_3.c: Likewise. - * condvar4.c: Likewise. - * condvar5.c: Likewise. - * condvar6.c: Likewise. - * condvar7.c: Likewise. - * condvar8.c: Likewise. - * condvar9.c: Likewise. - -2005-04-11 Ross Johnson - - * once4.c: New test; tries to test priority adjustments - in pthread_once(); set priority class to realtime so that - any failures can be seen. - -2005-04-06 Ross Johnson - - * cleanup0.c: Fix unguarded global variable accesses. - * cleanup1.c: Likewise. - * cleanup2.c: Likewise. - * cleanup3.c: Likewise. - * once2.c: Likewise. - * once3.c: Likewise. - -2005-04-01 Ross Johnson - - * GNUmakefile: Add target to test linking static link library. - * Makefile: Likewise. - * self1.c: Run process attach/detach routines when static linked. - -2005-03-16 Ross Johnson - - * mutex5.c: Prevent optimiser from removing asserts. - -2005-03-12 Ross Johnson - - * once3.c: New test. - -2005-03-08 Ross Johnson - - * once2.c: New test. - -2004-11-19 Ross Johnson - - * Bmakefile: New makefile for Borland. - * Makefile (DLL_VER): Added. - * GNUmakefile (DLL_VER): Added. - * Wmakefile (DLL_VER): Added. - -2004-10-29 Ross Johnson - - * semaphore4.c: New test. - * semaphore4t.c: New test. - * Debug.dsp (et al): Created MSVC Workspace project to aid debugging. - * All: Many tests have been modified to work with the new pthread - ID type; some other corrections were made after some library - functions were semantically strengthened. For example, - pthread_cond_destroy() no longer destroys a busy CV, which - required minor redesigns of some tests, including some where - the mutex associated with the CV was not locked during - signaling and broadcasting. - -2004-10-23 Ross Johnson - - * condvar3.c: Fixed mutex operations that were incorrectly - placed in relation to their condition variable operations. - The error became evident after sem_destroy() was rewritten - and conditions for destroing the semaphore were tightened. - As a result, pthread_cond_destroy() was not able to - destroy the cv queueing sempahore. - * condvar3_1.c: Likewise. - * condvar3_2.c: Likewise. - * condvar4.c: Likewise. - * condvar5.c: Likewise. - * condvar6.c: Likewise. - * condvar7.c: Likewise. - * condvar8.c: Likewise. - * condvar9.c: Likewise. - -2004-10-19 Ross Johnson - - * semaphore3.c: New test. - -2004-10-14 Ross Johnson - - * rwlock7.c (main): Tidy up statistics reporting; randomise - update accesses. - * rwlock8.c: New test. - -2004-09-08 Alexandre Girao - - * cancel7.c (main): Win98 wants a valid (non-NULL) location - for the last arg of _beginthreadex(). - * cancel8.c (main): Likewise. - * exit4.c (main): Likewise. - * exit5.c (main): Likewise. - -2004-08-26 Ross Johnson - - * create3.c: New test. - -2004-06-21 Ross Johnson - - * mutex2r.c: New test. - * mutex2e.c: New test. - * mutex3r.c: New test. - * mutex3e.c: New test. - * mutex6s.c: New test. - * mutex6rs.c: New test. - * mutex6es.c: New test. - -2004-05-21 Ross Johnson - - * join3.c: New test. - -2004-05-16 Ross Johnson - - * condvar2.c (WIN32_WINNT): Define to avoid redefinition warning - from inclusion of implement.h. - * convar2_1.c: Likewise. - * condvar3_1.c: Likewise. - * condvar3_2.c: Likewise. - * context1.c: Likewise. - * sizes.c: Likewise. - * Makefile: Don't define _WIN32_WINNT on compiler command line. - * GNUmakefile: Likewise. - * priority1.c (main): Add column to output for actual win32 - priority. - -2004-05-16 Ross Johnson - - * cancel9.c: New test. - * cancel3.c: Remove inappropriate conditional compilation; - GNU C version of test suite no longer quietly skips this test. - * cancel5.c: Likewise. - * GNUmakefile: Can now build individual test app using default - C version of library using 'make clean testname.c'. - * Makefile: Likewise for VC using 'nmake clean test testname.c'. - -2003-10-14 Ross Johnson - - * Wmakefile: New makefile for Watcom testing. - -2003-09-18 Ross Johnson - - * benchtest.h: Move old mutex code into benchlib.c. - * benchlib.c: New statically linked module to ensure that - bench apps don't inline the code and therefore have an unfair - advantage over the pthreads lib routines. Made little or no - difference. - * benchtest1.c: Minor change to avoid compiler warnings. - * benchtest5.c: Likewise. - * benchtest2.c: Fix misinformation in output report. - * README.BENCH: Add comments on results. - -2003-09-14 Ross Johnson - - * priority1.c: Reworked to comply with modified priority - management and provide additional output. - * priority2.c: Likewise. - * inherit1.c: Likewise. - -2003-09-03 Ross Johnson - - * exit4.c: New test. - * exit5.c: New test. - * cancel7.c: New test. - * cancel8.c: New test. - -2003-08-13 Ross Johnson - - * reuse1.c: New test. - * reuse1.c: New test. - * valid1.c: New test. - * valid2.c: New test. - * kill1.c: New test. - * create2.c: Now included in test regime. - -2003-07-19 Ross Johnson - - * eyal1.c (waste_time): Make threads do more work to ensure that - all threads get to do some work. - * semaphore1.c: Make it clear that certain errors are expected. - * exception2.c (non_MSVC code sections): Change to include - C++ standard include file, i.e. change to . - * exception3.c (non_MSVC code sections): Likewise; qualify std:: - namespace entities where necessary. - * GNUmakefile: modified to work in the MsysDTK (newer MinGW) - environment; define CC as gcc or g++ as appropriate because - using gcc -x c++ doesn't link with required c++ libs by default, - but g++ does. - -2002-12-11 Ross Johnson - - * mutex7e.c: Assert EBUSY return instead of EDEADLK. - -2002-06-03 Ross Johnson - - * semaphore2.c: New test. - -2002-03-02 Ross Johnson - - * Makefile (CFLAGS): Changed /MT to /MD to link with - the correct library MSVCRT.LIB. Otherwise errno doesn't - work. - -2002-02-28 Ross Johnson - - * exception3.c: Correct recent change. - - * semaphore1.c: New test. - - * Makefile: Add rule to generate pre-processor output. - -2002-02-28 Ross Johnson - - * exception3.c (terminateFunction): For MSVC++, call - exit() rather than pthread_exit(). Add comments to explain - why. - * Notes from the MSVC++ manual: - * 1) A term_func() should call exit(), otherwise - * abort() will be called on return to the caller. - * abort() raises SIGABRT. The default signal handler - * for all signals terminates the calling program with - * exit code 3. - * 2) A term_func() must not throw an exception. Therefore - * term_func() should not call pthread_exit() if an - * an exception-using version of pthreads-win32 library - * is being used (i.e. either pthreadVCE or pthreadVSE). - - -2002-02-23 Ross Johnson - - * rwlock2_t.c: New test. - * rwlock3_t.c: New test. - * rwlock4_t.c: New test. - * rwlock5_t.c: New test. - * rwlock6_t.c: New test. - * rwlock6_t2.c: New test. - * rwlock6.c (main): Swap thread and result variables - to correspond to actual thread functions. - * rwlock1.c: Change test description comment to correspond - to the actual test. - - * condvar1_2.c: Loop over the test many times in the hope - of detecting any intermittent deadlocks. This is to - test a fixed problem in pthread_cond_destroy.c. - - * spin4.c: Remove unused variable. - -2002-02-17 Ross Johnson - - * condvar1_1.c: New test. - * condvar1_2.c: New test. - -2002-02-07 Ross Johnson - - * delay1.c: New test. - * delay2.c: New test. - * exit4.c: New test. - -2002-02-02 Ross Johnson - - * mutex8: New test. - * mutex8n: New test. - * mutex8e: New test. - * mutex8r: New test. - * cancel6a: New test. - * cancel6d: New test. - * cleanup0.c: Add pragmas for inline optimisation control. - * cleanup1.c: Add pragmas for inline optimisation control. - * cleanup2.c: Add pragmas for inline optimisation control. - * cleanup3.c: Add pragmas for inline optimisation control. - * condvar7.c: Add pragmas for inline optimisation control. - * condvar8.c: Add pragmas for inline optimisation control. - * condvar9.c: Add pragmas for inline optimisation control. - -2002-01-30 Ross Johnson - - * cleanup1.c (): Must be declared __cdecl when compiled - as C++ AND testing the standard C library version. - -2002-01-16 Ross Johnson - - * spin4.c (main): Fix renamed function call. - -2002-01-14 Ross Johnson - - * exception3.c (main): Shorten wait time. - -2002-01-09 Ross Johnson - - * mutex7.c: New test. - * mutex7n.c: New test. - * mutex7e.c: New test. - * mutex7r.c: New test. - * mutex6.c: Modified to avoid leaving the locked mutex - around on exit. - -2001-10-25 Ross Johnson - - * condvar2.c: Remove reference to cv->nWaitersUnblocked. - * condvar2_1.c: Likewise; lower NUMTHREADS from 60 to 30. - * condvar3_1.c: Likewise. - * condvar3_2.c: Likewise. - * count1.c: lower NUMTHREADS from 60 to 30. - * inherit1.c: Determine valid priority values and then - assert values returned by POSIX routines are the same. - * priority1.c: Likewise. - * priority2.c: Likewise. - -2001-07-12 Ross Johnson - - * barrier5.c: Assert that precisely one thread receives - PTHREAD_BARRIER_SERIAL_THREAD at each barrier. - -2001-07-09 Ross Johnson - - * barrier3.c: Fixed. - * barrier4.c: Fixed. - * barrier5.c: New; proves that all threads in the group - reaching the barrier wait and then resume together. Repeats the test - using groups of 1 to 16 threads. Each group of threads must negotiate - a large number of barriers (10000). - * spin4.c: Fixed. - * test.h (error_string): Modified the success (0) value. - -2001-07-07 Ross Johnson - - * spin3.c: Changed test and fixed. - * spin4.c: Fixed. - * barrier3.c: Fixed. - * barrier4.c: Fixed. - -2001-07-05 Ross Johnson - - * spin1.c: New; testing spinlocks. - * spin2.c: New; testing spinlocks. - * spin3.c: New; testing spinlocks. - * spin4.c: New; testing spinlocks. - * barrier1.c: New; testing barriers. - * barrier2.c: New; testing barriers. - * barrier3.c: New; testing barriers. - * barrier4.c: New; testing barriers. - * GNUmakefile: Add new tests. - * Makefile: Add new tests. - -2001-07-01 Ross Johnson - - * benchtest3.c: New; timing mutexes. - * benchtest4.c: New; time mutexes. - * condvar3_1.c: Fixed bug - Alexander Terekhov - * condvar3_3.c: New test. - -2001-06-25 Ross Johnson - - * priority1.c: New test. - * priority2.c: New test. - * inherit1.c: New test. - * benchtest1.c: New; timing mutexes. - * benchtest2.c: New; timing mutexes. - * mutex4.c: Modified to test all mutex types. - -2001-06-8 Ross Johnson - - * mutex5.c: Insert inert change to quell compiler warnings. - * condvar3_2.c: Remove unused variable. - -2001-06-3 Ross Johnson - - * condvar2_1.c: New test. - * condvar3_1.c: New test. - * condvar3_2.c: New test. - -2001-05-30 Ross Johnson - - * mutex1n.c: New test. - * mutex1e.c: New test. - * mutex1r.c: New test. - * mutex4.c: Now locks and unlocks a mutex. - * mutex5.c: New test. - * mutex6.c: New test. - * mutex6n.c: New test. - * mutex6e.c: New test. - * mutex6r.c: New test. - * Makefile: Added new tests; reorganised. - * GNUmakefile: Likewise. - * rwlock6.c: Fix to properly prove read-while-write locking - and single writer locking. - -2001-05-29 Ross Johnson - - * Makefile: Reorganisation. - * GNUmakefile: Likewise. - - Thomas Pfaff - - * exception1.c: Add stdio.h include to define fprintf and stderr - in non-exception C version of main(). - * exception2.c: Likewise. - * exception3.c: Likewise. - - * Makefile (rwlock7): Add new test. - * GNUmakefile (rwlock7): Add new test. - * rwlock7.c: New test. - * rwlock6.c: Changed to test that writer has priority. - - * eyal1.c (main): Unlock each mutex_start lock before destroying - it. - -2000-12-29 Ross Johnson - - * GNUmakefile: Add mutex4 test; ensure libpthreadw32.a is - removed for "clean" target. - * Makefile: Add mutex4 test. - - * exception3.c: Remove SEH code; automatically pass the test - under SEH (which is an N/A environment). - - * mutex4.c: New test. - - * eyal1.c (do_work_unit): Add a dummy "if" to force the - optimiser to retain code; reduce thread work loads. - - * condvar8.c (main): Add an additional "assert" for debugging; - increase pthread_cond_signal timeout. - -2000-12-28 Ross Johnson - - * eyal1.c: Increase thread work loads. - * exception2.c: New test. - * exception3.c: New test. - * Makefile: Add new tests exception2.c and exception3.c. - * GNUmakefile: Likewise. - -2000-12-11 Ross Johnson - - * cleanup3.c: Remove unused variable. - * cleanup2.c: Likewise. - * exception1.c: Throw an exception rather than use - a deliberate zero divide so that catch(...) will - handle it under Mingw32. Mingw32 now builds the - library correctly to pass all tests - see Thomas - Pfaff's detailed instructions re needed changes - to Mingw32 in the Pthreads-Win32 FAQ. - -2000-09-08 Ross Johnson - - * cancel5.c: New; tests calling pthread_cancel() - from the main thread without first creating a - POSIX thread struct for the non-POSIX main thread - - this forces pthread_cancel() to create one via - pthread_self(). - * Makefile (cancel5): Add new test. - * GNUmakefile (cancel5): Likewise. - -2000-08-17 Ross Johnson - - * create2.c: New; Test that pthread_t contains - the W32 HANDLE before it calls the thread routine - proper. - -2000-08-13 Ross Johnson - - * condvar3.c: Minor change to eliminate compiler - warning. - - * condvar4.c: ditto. - - * condvar5.c: ditto. - - * condvar6.c: ditto. - - * condvar7.c: ditto. - - * condvar8.c: ditto. - - * condvar9.c: ditto. - - * exit1.c: Function needed return statement. - - * cleanup1.c: Remove unnecessary printf arg. - - * cleanup2.c: Fix cast. - - * rwlock6.c: Fix casts. - - * exception1.c (PtW32CatchAll): Had the wrong name; - fix casts. - - * cancel3.c: Remove unused waitLock variable. - - * GNUmakefile: Change library/dll naming; add new tests; - general minor changes. - - * Makefile: Change library/dll naming; add targets for - testing each of the two VC++ EH scheme versions; - default target now issues help message; compile warnings - now interpreted as errors to stop the make; add new - tests; restructure to remove prerequisites needed - otherwise. - - * README: Updated. - - -2000-08-10 Ross Johnson - - * eyal1.c (main): Change implicit cast to explicit - cast when passing "print_server" function pointer; - G++ no longer allows implicit func parameter casts. - - * cleanup1.c: Remove unused "waitLock". - (main): Fix implicit parameter cast. - - * cancel2.c (main): Fix implicit parameter cast. - - * cancel4.c (main): Fix implicit parameter cast. - - * cancel3.c (main): Fix implicit parameter cast. - - * GNUmakefile: Renamed from Makefile; Add missing - cancel1 and cancel2 test targets. - - * Makefile: Converted for use with MS nmake. - -2000-08-06 Ross Johnson - - * ccl.bat: Add /nologo to remove extraneous output. - - * exception1.c (exceptionedThread): Init 'dummy'; - put expression into if condition to prevent optimising away; - remove unused variable. - - * cancel4.c (mythread): Cast return value to avoid warnings. - - * cancel2.c (mythread): Missing #endif. - - * condvar9.c (mythread): Cast return value to avoid warnings. - - * condvar8.c (mythread): Cast return value to avoid warnings. - - * condvar7.c (mythread): Cast return value to avoid warnings. - - * cleanup3.c (mythread): Cast return value to avoid warnings. - - * cleanup2.c (mythread): Cast return value to avoid warnings. - - * cleanup1.c (mythread): Cast return value to avoid warnings. - - * condvar5.c (mythread): Cast return value to avoid warnings. - - * condvar3.c (mythread): Cast return value to avoid warnings. - - * condvar6.c (mythread): Cast return value to avoid warnings. - - * condvar4.c (mythread): Cast return value to avoid warnings. - -2000-08-05 Ross Johnson - - * cancel2.c: Use PtW32CatchAll macro if defined. - - * exception1.c: Use PtW32CatchAll macro if defined. - -2000-08-02 Ross Johnson - - * tsd1.c: Fix typecasts of &result [g++ is now very fussy]. - - * test.h (assert): Return 0's explicitly to allay - g++ errors. - - * join2.c: Add explicit typecasts. - - * join1.c: Add explicit typecasts. - - * join0.c: Add explicit typecasts. - - * eyal1.c: Add explicit typecasts. - - * count1.c (main): Add type cast to remove g++ parse warning - [gcc-2.95.2 seems to have tightened up on this]. - - * Makefile (GLANG): Use c++ explicitly. - Remove MSVC sections (was commented out). - Add target to generate cpp output. - -2000-07-25 Ross Johnson - - * runtest.bat: modified to work under W98. - - * runall.bat: Add new tests; modified to work under W98. - It was ok under NT. - - * Makefile: Add new tests. - - * exception1.c: New; Test passing exceptions back to the - application and retaining library internal exceptions. - - * join0.c: New; Test a single join. - -2000-01-06 Ross Johnson - - * cleanup1.c: New; Test cleanup handler executes (when thread is - canceled). - - * cleanup2.c: New; Test cleanup handler executes (when thread is - not canceled). - - * cleanup3.c: New; Test cleanup handler does not execute - (when thread is not canceled). - -2000-01-04 Ross Johnson - - * cancel4.c: New; Test cancelation does not occur in deferred - cancelation threads with no cancelation points. - - * cancel3.c: New; Test asynchronous cancelation. - - * context1.c: New; Test context switching method for async - cancelation. - -1999-11-23 Ross Johnson - - * test.h: Add header includes; include local header versions rather - than system versions; rearrange the assert macro defines. - -1999-11-07 Ross Johnson - - * loadfree.c: New. Test loading and freeing the library (DLL). - -1999-10-30 Ross Johnson - - * cancel1.c: New. Test pthread_setcancelstate and - pthread_setcanceltype functions. - * eyal1.c (waste_time): Change calculation to avoid FP exception - on Aplhas - - Rich Peters - -Oct 14 1999 Ross Johnson - - * condvar7.c: New. Test broadcast after waiting thread is canceled. - * condvar8.c: New. Test multiple broadcasts. - * condvar9.c: New. Test multiple broadcasts with thread - cancelation. - -Sep 16 1999 Ross Johnson - - * rwlock6.c: New test. - -Sep 15 1999 Ross Johnson - - * rwlock1.c: New test. - * rwlock2.c: New test. - * rwlock3.c: New test. - * rwlock4.c: New test. - * rwlock5.c: New test. - -Aug 22 1999 Ross Johnson - - * runall.bat (join2): Add test. - -Aug 19 1999 Ross Johnson - - * join2.c: New test. - -Wed Aug 12 1999 Ross Johnson - - * Makefile (LIBS): Add -L. - -Mon May 31 10:25:01 1999 Ross Johnson - - * Makefile (GLANG): Add GCC language option. - -Sat May 29 23:29:04 1999 Ross Johnson - - * runall.bat (condvar5): Add new test. - - * runall.bat (condvar6): Add new test. - - * Makefile (condvar5) : Add new test. - - * Makefile (condvar6) : Add new test. - - * condvar5.c: New test for pthread_cond_broadcast(). - - * condvar6.c: New test for pthread_cond_broadcast(). - -Sun Apr 4 12:04:28 1999 Ross Johnson - - * tsd1.c (mythread): Change Sleep(0) to sched_yield(). - (sched.h): Include. - - * condvar3.c (mythread): Remove redundant Sleep(). - - * runtest.bat: Re-organised to make more informative. - -Fri Mar 19 1999 Ross Johnson - - * *.bat: redirect unwanted output to nul: - - * runall.bat: new. - - * cancel1.c: new. Not part of suite yet. - -Mon Mar 15 00:17:55 1999 Ross Johnson - - * mutex1.c: only test mutex init and destroy; add assertions. - - * count1.c: raise number of spawned threads to 60 (appears to - be the limit under Win98). - -Sun Mar 14 21:31:02 1999 Ross Johnson - - * test.h (assert): add assertion trace option. - Use: - "#define ASSERT_TRACE 1" to turn it on, - "#define ASSERT_TRACE 0" to turn it off (default). - - * condvar3.c (main): add more assertions. - - * condvar4.c (main): add more assertions. - - * condvar1.c (main): add more assertions. - -Fri Mar 12 08:34:15 1999 Ross Johnson - - * condvar4.c (cvthing): switch the order of the INITIALIZERs. - - * eyal1.c (main): Fix trylock loop; was not waiting for thread to lock - the "started" mutex. - -Wed Mar 10 10:41:52 1999 Ross Johnson - - * tryentercs.c: Apply typo patch from bje. - - * tryentercs2.c: Ditto. - -Sun Mar 7 10:41:52 1999 Ross Johnson - - * Makefile (condvar3, condvar4): Add tests. - - * condvar4.c (General): Reduce to simple test case; prerequisite - is condvar3.c; add description. - - * condvar3.c (General): Reduce to simple test case; prerequisite - is condvar2.c; add description. - - * condvar2.c (General): Reduce to simple test case; prerequisite - is condvar1.c; add description. - - * condvar1.c (General): Reduce to simple test case; add - description. - - * Template.c (Comments): Add generic test detail. - -1999-02-23 Ross Johnson - - * Template.c: Revamp. - - * condvar1.c: Add. - - * condvar2.c: Add. - - * Makefile: Add condvar1 condvar2 tests. - - * exit1.c, exit2.c, exit3.c: Cosmetic changes. - -1999-02-23 Ross Johnson - - * Makefile: Some refinement. - - * *.c: More exhaustive checking through assertions; clean up; - add some more tests. - - * Makefile: Now actually runs the tests. - - * tests.h: Define our own assert macro. The Mingw32 - version pops up a dialog but we want to run non-interactively. - - * equal1.c: use assert a little more directly so that it - prints the actual call statement. - - * exit1.c: Modify to return 0 on success, 1 on failure. - -1999-02-22 Ross Johnson - - * self2.c: Bring up to date. - - * self3.c: Ditto. - -1999-02-21 Ben Elliston - - * README: Update. - - * Makefile: New file. Run all tests automatically. Primitive tests - are run first; more complex tests are run last. - - * count1.c: New test. Validate the thread count. - - * exit2.c: Perform a simpler test. - - * exit3.c: New test. Replaces exit2.c, since exit2.c needs to - perform simpler checking first. - - * create1.c: Update to use the new testsuite exiting convention. - - * equal1.c: Likewise. - - * mutex1.c: Likewise. - - * mutex2.c: Likewise. - - * once1.c: Likewise. - - * self2.c: Likewise. - - * self3.c: Likewise. - - * tsd1.c: Likewise. - -1999-02-20 Ross Johnson - - * mutex2.c: Test static mutex initialisation. - - * test.h: New. Declares a table mapping error numbers to - error names. - -1999-01-17 Ross Johnson - - * runtest: New script to build and run a test in the tests directory. - -Wed Dec 30 11:22:44 1998 Ross Johnson - - * tsd1.c: Re-written. See comments at start of file. - * Template.c: New. Contains skeleton code and comment template - intended to fully document the test. - -Fri Oct 16 17:59:49 1998 Ross Johnson - - * tsd1.c (destroy_key): Add function. Change diagnostics. - -Thu Oct 15 17:42:37 1998 Ross Johnson - - * tsd1.c (mythread): Fix some casts and add some message - output. Fix inverted conditional. - -Mon Oct 12 02:12:29 1998 Ross Johnson - - * tsd1.c: New. Test TSD using 1 key and 2 threads. - -1998-09-13 Ben Elliston - - * eyal1.c: New file; contributed by Eyal Lebedinsky - . - -1998-09-12 Ben Elliston - - * exit2.c (func): Return a value. - (main): Call the right thread entry function. - -1998-07-22 Ben Elliston - - * exit2.c (main): Fix size of pthread_t array. - -1998-07-10 Ben Elliston - - * exit2.c: New file; test pthread_exit() harder. - - * exit1.c: New file; test pthread_exit(). diff --git a/platform/win32/msvc/external/pthreads.2/tests/Debug.dsp b/platform/win32/msvc/external/pthreads.2/tests/Debug.dsp deleted file mode 100644 index 7a35ffd6403..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/Debug.dsp +++ /dev/null @@ -1,93 +0,0 @@ -# Microsoft Developer Studio Project File - Name="Debug" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=Debug - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "Debug.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "Debug.mak" CFG="Debug - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "Debug - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "Debug - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "Debug - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0xc09 /d "NDEBUG" -# ADD RSC /l 0xc09 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "Debug - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MDd /W3 /WX /Gm /ZI /Od /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "CLEANUP_C" /FR /YX /FD /GZ /c -# ADD BASE RSC /l 0xc09 /d "_DEBUG" -# ADD RSC /l 0xc09 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib pthreadVC2d.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:".." - -!ENDIF - -# Begin Target - -# Name "Debug - Win32 Release" -# Name "Debug - Win32 Debug" -# Begin Source File - -SOURCE=.\Debug.txt -# End Source File -# Begin Source File - -SOURCE=.\semaphore1.c -# End Source File -# End Target -# End Project diff --git a/platform/win32/msvc/external/pthreads.2/tests/Debug.dsw b/platform/win32/msvc/external/pthreads.2/tests/Debug.dsw deleted file mode 100644 index cb90db8f83e..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/Debug.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "Debug"=.\Debug.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/platform/win32/msvc/external/pthreads.2/tests/Debug.plg b/platform/win32/msvc/external/pthreads.2/tests/Debug.plg deleted file mode 100644 index 05be869a946..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/Debug.plg +++ /dev/null @@ -1,32 +0,0 @@ - - -
-

Build Log

-

---------------------Configuration: Debug - Win32 Debug-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\RSP9.tmp" with contents -[ -/nologo /MDd /W3 /WX /Gm /ZI /Od /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "CLEANUP_C" /FR"Debug/" /Fp"Debug/Debug.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c -"E:\PTHREADS\pthreads.2\tests\semaphore1.c" -] -Creating command line "cl.exe @C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\RSP9.tmp" -Creating temporary file "C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\RSPA.tmp" with contents -[ -kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib pthreadVC2d.lib /nologo /subsystem:console /incremental:yes /pdb:"Debug/Debug.pdb" /debug /machine:I386 /out:"Debug/Debug.exe" /pdbtype:sept /libpath:".." -.\Debug\semaphore1.obj -] -Creating command line "link.exe @C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\RSPA.tmp" -

Output Window

-Compiling... -semaphore1.c -Linking... - - - -

Results

-Debug.exe - 0 error(s), 0 warning(s) -
- - diff --git a/platform/win32/msvc/external/pthreads.2/tests/Debug.txt b/platform/win32/msvc/external/pthreads.2/tests/Debug.txt deleted file mode 100644 index 16b1da7596f..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/Debug.txt +++ /dev/null @@ -1,6 +0,0 @@ -This project is used to debug individual test case programs. - -To build and debug a test case: -- add the .c file to this project; -- remove any .c files from other test cases from this project. -- build and debug as usual. \ No newline at end of file diff --git a/platform/win32/msvc/external/pthreads.2/tests/GNUmakefile b/platform/win32/msvc/external/pthreads.2/tests/GNUmakefile deleted file mode 100644 index cbb4e32081f..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/GNUmakefile +++ /dev/null @@ -1,447 +0,0 @@ -# Makefile for the pthreads test suite. -# If all of the .pass files can be created, the test suite has passed. -# -# -------------------------------------------------------------------------- -# -# Pthreads-win32 - POSIX Threads Library for Win32 -# Copyright(C) 1998 John E. Bossom -# Copyright(C) 1999,2005 Pthreads-win32 contributors -# -# Contact Email: rpj@callisto.canberra.edu.au -# -# The current list of contributors is contained -# in the file CONTRIBUTORS included with the source -# code distribution. The list can also be seen at the -# following World Wide Web location: -# http://sources.redhat.com/pthreads-win32/contributors.html -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library in the file COPYING.LIB; -# if not, write to the Free Software Foundation, Inc., -# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA -# - -DLL_VER = 2 - -CP = cp -f -MV = mv -f -RM = rm -f -CAT = cat -MKDIR = mkdir -TOUCH = echo Passed > -ECHO = @echo -MAKE = make -k - -# For cross compiling use e.g. -# # make CROSS=i386-mingw32msvc- clean GC -CROSS = - -# For cross testing use e.g. -# # make RUN=wine CROSS=i386-mingw32msvc- clean GC -RUN = - -AR = $(CROSS)ar -DLLTOOL = $(CROSS)dlltool -CC = $(CROSS)gcc -CXX = $(CROSS)g++ -RANLIB = $(CROSS)ranlib - -# -# Mingw32 -# -XXCFLAGS = -XXLIBS = -lws2_32 -lgomp -OPT = -O3 -DOPT = -g -O0 -#CFLAGS = -O3 -UNDEBUG -Wall $(XXCFLAGS) -CFLAGS = ${OPT} -UNDEBUG -Wall $(XXCFLAGS) -BUILD_DIR = .. -INCLUDES = -I. - -.INTERMEDIATE: %.exe %.pass -.SECONDARY: %.exe %.pass -.PRECIOUS: %.exe %.pass - -TEST = GC - -# Default lib version -GCX = $(TEST)$(DLL_VER) - -# Files we need to run the tests -# - paths are relative to pthreads build dir. -HDR = pthread.h semaphore.h sched.h -LIB = libpthread$(GCX).a -DLL = pthread$(GCX).dll -# The next path is relative to $BUILD_DIR -QAPC = # ../QueueUserAPCEx/User/quserex.dll - -COPYFILES = $(HDR) $(LIB) $(DLL) $(QAPC) - -# If a test case returns a non-zero exit code to the shell, make will -# stop. - -TESTS = \ - sizes loadfree \ - self1 mutex5 mutex1 mutex1e mutex1n mutex1r \ - semaphore1 semaphore2 semaphore3 \ - condvar1 condvar1_1 condvar1_2 condvar2 condvar2_1 exit1 \ - create1 create2 create3 reuse1 reuse2 equal1 \ - sequence1 kill1 valid1 valid2 \ - exit2 exit3 exit4 exit5 \ - join0 join1 detach1 join2 join3 \ - mutex2 mutex2r mutex2e mutex3 mutex3r mutex3e \ - mutex4 mutex6 mutex6n mutex6e mutex6r \ - mutex6s mutex6es mutex6rs \ - mutex7 mutex7n mutex7e mutex7r mutex8 mutex8n mutex8e mutex8r \ - robust1 robust2 robust3 robust4 robust5 \ - count1 \ - once1 once2 once3 once4 self2 \ - cancel1 cancel2 \ - semaphore4 semaphore4t semaphore5 \ - barrier1 barrier2 barrier3 barrier4 barrier5 barrier6 \ - tsd1 tsd2 openmp1 delay1 delay2 eyal1 \ - condvar3 condvar3_1 condvar3_2 condvar3_3 \ - condvar4 condvar5 condvar6 condvar7 condvar8 condvar9 \ - errno1 \ - rwlock1 rwlock2 rwlock3 rwlock4 rwlock5 rwlock6 rwlock7 rwlock8 \ - rwlock2_t rwlock3_t rwlock4_t rwlock5_t rwlock6_t rwlock6_t2 \ - context1 cancel3 cancel4 cancel5 cancel6a cancel6d \ - cancel7 cancel8 \ - cleanup0 cleanup1 cleanup2 cleanup3 \ - priority1 priority2 inherit1 \ - spin1 spin2 spin3 spin4 \ - exception1 exception2 exception3 \ - cancel9 stress1 - -STRESSTESTS = \ - stress1 - -BENCHTESTS = \ - benchtest1 benchtest2 benchtest3 benchtest4 benchtest5 - -STATICTESTS = \ - sizes \ - self1 mutex5 mutex1 mutex1e mutex1n mutex1r \ - semaphore1 semaphore2 semaphore3 \ - condvar1 condvar1_1 condvar1_2 condvar2 condvar2_1 exit1 \ - create1 create2 create3 reuse1 reuse2 equal1 \ - sequence1 kill1 valid1 valid2 \ - exit2 exit3 exit4 exit5 \ - join0 join1 detach1 join2 join3 \ - mutex2 mutex2r mutex2e mutex3 mutex3r mutex3e \ - mutex4 mutex6 mutex6n mutex6e mutex6r \ - mutex6s mutex6es mutex6rs \ - mutex7 mutex7n mutex7e mutex7r mutex8 mutex8n mutex8e mutex8r \ - robust1 robust2 robust3 robust4 robust5 \ - count1 \ - once1 once2 once3 once4 self2 \ - cancel1 cancel2 \ - semaphore4 semaphore4t semaphore5 \ - barrier1 barrier2 barrier3 barrier4 barrier5 barrier6 \ - tsd1 tsd2 delay1 delay2 eyal1 \ - condvar3 condvar3_1 condvar3_2 condvar3_3 \ - condvar4 condvar5 condvar6 condvar7 condvar8 condvar9 \ - errno1 \ - rwlock1 rwlock2 rwlock3 rwlock4 rwlock5 rwlock6 rwlock7 rwlock8 \ - rwlock2_t rwlock3_t rwlock4_t rwlock5_t rwlock6_t rwlock6_t2 \ - context1 cancel3 cancel4 cancel5 cancel6a cancel6d \ - cancel7 cancel8 \ - cleanup0 cleanup1 cleanup2 cleanup3 \ - priority1 priority2 inherit1 \ - spin1 spin2 spin3 spin4 \ - exception1 exception2 exception3 \ - cancel9 stress1 - -ALLTESTS = $(TESTS) $(BENCHTESTS) - -ASM = $(ALLTESTS:%=%.s) -PASSES = $(TESTS:%=%.pass) -BENCHRESULTS = $(BENCHTESTS:%=%.bench) -STRESSRESULTS = $(STRESSTESTS:%=%.pass) -STATICRESULTS = $(STATICTESTS:%=%.pass) - -help: - @ $(ECHO) "Run one of the following command lines:" - @ $(ECHO) "make clean GC (to test using GC dll with C (no EH) applications)" - @ $(ECHO) "make clean GCX (to test using GC dll with C++ (EH) applications)" - @ $(ECHO) "make clean GCE (to test using GCE dll with C++ (EH) applications)" - @ $(ECHO) "make clean GC-bench (to benchtest using GNU C dll with C cleanup code)" - @ $(ECHO) "make clean GCE-bench (to benchtest using GNU C dll with C++ exception handling)" - @ $(ECHO) "make clean GC-stress (to stresstest using GNU C dll with C cleanup code)" - @ $(ECHO) "make clean GCE-stress (to stresstest using GNU C dll with C++ exception handling)" - @ $(ECHO) "make clean GC-static (to test using GC static lib with C (no EH) applications)" - @ $(ECHO) "make clean GC-debug (to test using GC dll with C (no EH) applications)" - -all: - @ $(MAKE) clean GC - @ $(MAKE) clean GCX - @ $(MAKE) clean GCE - -GC: - $(MAKE) TEST=GC CC=$(CC) XXCFLAGS="-fopenmp -D__CLEANUP_C" all-pass - -GC-asm: - $(MAKE) TEST=GC CC=$(CC) XXCFLAGS="-fopenmp -D__CLEANUP_C" all-asm - -GCE: - $(MAKE) TEST=GCE CC=$(CXX) XXCFLAGS="-fopenmp -mthreads -D__CLEANUP_CXX" all-pass - -GCX: - $(MAKE) TEST=GC CC=$(CXX) XXCFLAGS="-fopenmp -mthreads -D__CLEANUP_C" all-pass - -GC-bench: - $(MAKE) TEST=GC CC=$(CC) XXCFLAGS="-D__CLEANUP_C" XXLIBS="benchlib.o" all-bench - -GCE-bench: - $(MAKE) TEST=GCE CC=$(CXX) XXCFLAGS="-mthreads -D__CLEANUP_CXX" XXLIBS="benchlib." all-bench - -GC-debug: - $(MAKE) TEST=GC CC=$(CC) XXCFLAGS="-fopenmp -D__CLEANUP_C" OPT="${DOPT}" DLL_VER="$(DLL_VER)d" all-pass - -GCE-debug: - $(MAKE) TEST=GCE CC=$(CXX) XXCFLAGS="-fopenmp -D__CLEANUP_CXX" OPT="${DOPT}" DLL_VER="$(DLL_VER)d" all-pass - -GC-bench-debug: - $(MAKE) TEST=GC CC=$(CC) XXCFLAGS="-D__CLEANUP_C" XXLIBS="benchlib.o" OPT="${OPT}" DLL_VER="$(DLL_VER)d" all-bench - -GC-static: - $(MAKE) TEST=GC CC=$(CC) XXCFLAGS="-D__CLEANUP_C -DPTW32_STATIC_LIB" XXLIBS="-lws2_32" DLL="" all-static - -GC-stress: - $(ECHO) Stress tests can take a long time since they are trying to - $(ECHO) expose weaknesses that may be intermittant or statistically rare. - $(ECHO) A pass does not prove correctness, but may give greater confidence. - $(MAKE) TEST=GC CC=$(CC) XXCFLAGS="-D__CLEANUP_C" XXLIBS="" all-stress - -GCE-stress: - $(MAKE) TEST=GCE CC=$(CXX) XXCFLAGS="-mthreads -D__CLEANUP_CXX" XXLIBS="" all-stress - -all-asm: $(ASM) - @ $(ECHO) ALL TESTS PASSED! Congratulations! - -all-pass: $(PASSES) - @ $(ECHO) ALL TESTS PASSED! Congratulations! - -all-bench: $(BENCHRESULTS) - @ $(ECHO) BENCH TESTS COMPLETED. - -all-stress: $(STRESSRESULTS) - @ $(ECHO) STRESS TESTS COMPLETED. - -all-static: $(STATICRESULTS) - @ $(ECHO) ALL STATIC TESTS PASSED! Congratulations! - -benchtest1.bench: -benchtest2.bench: -benchtest3.bench: -benchtest4.bench: -benchtest5.bench: - -barrier1.pass: semaphore4.pass -barrier2.pass: barrier1.pass -barrier3.pass: barrier2.pass -barrier4.pass: barrier3.pass -barrier5.pass: barrier4.pass -barrier6.pass: barrier5.pass -cancel1.pass: create1.pass -cancel2.pass: cancel1.pass -cancel3.pass: context1.pass -cancel4.pass: cancel3.pass -cancel5.pass: cancel3.pass -cancel6a.pass: cancel3.pass -cancel6d.pass: cancel3.pass -cancel7.pass: kill1.pass -cancel8.pass: cancel7.pass -cancel9.pass: cancel8.pass -cleanup0.pass: cancel5.pass -cleanup1.pass: cleanup0.pass -cleanup2.pass: cleanup1.pass -cleanup3.pass: cleanup2.pass -condvar1.pass: -condvar1_1.pass: condvar1.pass -condvar1_2.pass: join2.pass -condvar2.pass: condvar1.pass -condvar2_1.pass: condvar2.pass join2.pass -condvar3.pass: create1.pass condvar2.pass -condvar3_1.pass: condvar3.pass join2.pass -condvar3_2.pass: condvar3_1.pass -condvar3_3.pass: condvar3_2.pass -condvar4.pass: create1.pass -condvar5.pass: condvar4.pass -condvar6.pass: condvar5.pass -condvar7.pass: condvar6.pass cleanup1.pass -condvar8.pass: condvar7.pass -condvar9.pass: condvar8.pass -context1.pass: cancel1.pass -count1.pass: join1.pass -create1.pass: mutex2.pass -create2.pass: create1.pass -create3.pass: create2.pass -delay1.pass: -delay2.pass: delay1.pass -detach1.pass: join0.pass -equal1.pass: create1.pass -errno1.pass: mutex3.pass -exception1.pass: cancel4.pass -exception2.pass: exception1.pass -exception3.pass: exception2.pass -exit1.pass: -exit2.pass: create1.pass -exit3.pass: create1.pass -exit4.pass: -exit5.pass: exit4.pass kill1.pass -eyal1.pass: tsd1.pass -inherit1.pass: join1.pass priority1.pass -join0.pass: create1.pass -join1.pass: create1.pass -join2.pass: create1.pass -join3.pass: join2.pass -kill1.pass: -loadfree.pass: pthread.dll -mutex1.pass: self1.pass -mutex1n.pass: mutex1.pass -mutex1e.pass: mutex1.pass -mutex1r.pass: mutex1.pass -mutex2.pass: mutex1.pass -mutex2r.pass: mutex2.pass -mutex2e.pass: mutex2.pass -mutex3.pass: create1.pass -mutex3r.pass: mutex3.pass -mutex3e.pass: mutex3.pass -mutex4.pass: mutex3.pass -mutex5.pass: -mutex6.pass: mutex4.pass -mutex6n.pass: mutex4.pass -mutex6e.pass: mutex4.pass -mutex6r.pass: mutex4.pass -mutex6s.pass: mutex6.pass -mutex6rs.pass: mutex6r.pass -mutex6es.pass: mutex6e.pass -mutex7.pass: mutex6.pass -mutex7n.pass: mutex6n.pass -mutex7e.pass: mutex6e.pass -mutex7r.pass: mutex6r.pass -mutex8.pass: mutex7.pass -mutex8n.pass: mutex7n.pass -mutex8e.pass: mutex7e.pass -mutex8r.pass: mutex7r.pass -once1.pass: create1.pass -once2.pass: once1.pass -once3.pass: once2.pass -once4.pass: once3.pass -openmp1.pass: tsd2.pass -priority1.pass: join1.pass -priority2.pass: priority1.pass barrier3.pass -reuse1.pass: create3.pass -reuse2.pass: reuse1.pass -robust1.pass: mutex8r.pass -robust2.pass: mutex8r.pass -robust3.pass: robust2.pass -robust4.pass: robust3.pass -robust5.pass: robust4.pass -rwlock1.pass: condvar6.pass -rwlock2.pass: rwlock1.pass -rwlock3.pass: rwlock2.pass join2.pass -rwlock4.pass: rwlock3.pass -rwlock5.pass: rwlock4.pass -rwlock6.pass: rwlock5.pass -rwlock7.pass: rwlock6.pass -rwlock8.pass: rwlock7.pass -rwlock2_t.pass: rwlock2.pass -rwlock3_t.pass: rwlock2_t.pass -rwlock4_t.pass: rwlock3_t.pass -rwlock5_t.pass: rwlock4_t.pass -rwlock6_t.pass: rwlock5_t.pass -rwlock6_t2.pass: rwlock6_t.pass -self1.pass: -self2.pass: create1.pass -semaphore1.pass: -semaphore2.pass: -semaphore3.pass: semaphore2.pass -semaphore4.pass: semaphore3.pass cancel1.pass -semaphore4t.pass: semaphore4.pass -semaphore5.pass: semaphore4.pass -sequence1.pass: reuse2.pass -sizes.pass: -spin1.pass: -spin2.pass: spin1.pass -spin3.pass: spin2.pass -spin4.pass: spin3.pass -stress1.pass: -tsd1.pass: barrier5.pass join1.pass -tsd2.pass: tsd1.pass -valid1.pass: join1.pass -valid2.pass: valid1.pass - -sizes.pass: sizes.exe - @ $(ECHO) Running $* - @ $(RUN) ./$< > SIZES.$(TEST) - @ $(CAT) SIZES.$(TEST) - @ $(ECHO) Passed - @ $(TOUCH) $@ - -%.pass: %.exe - @ $(ECHO) Running $* - @ $(RUN) ./$* - @ $(ECHO) Passed - @ $(TOUCH) $@ - -%.bench: $(LIB) $(DLL) $(HDR) $(QAPC) $(XXLIBS) %.exe - @ $(ECHO) Running $* - @ $(RUN) ./$* - @ $(ECHO) Done - @ $(TOUCH) $@ - -%.exe: %.c $(LIB) $(DLL) $(HDR) $(QAPC) - @ $(ECHO) Compiling $@ - @ $(ECHO) $(CC) $(CFLAGS) -o $@ $< $(INCLUDES) -L. -lpthread$(GCX) -lsupc++ $(XXLIBS) - @ $(CC) $(CFLAGS) -o $@ $< $(INCLUDES) -L. -lpthread$(GCX) -lsupc++ $(XXLIBS) - -%.pre: %.c $(HDR) - @ $(CC) -E $(CFLAGS) -o $@ $< $(INCLUDES) - -%.s: %.c $(HDR) - @ $(ECHO) Compiling $@ - @ $(CC) -S $(CFLAGS) -o $@ $< $(INCLUDES) - -$(COPYFILES): - @ $(ECHO) Copying $(BUILD_DIR)/$@ - @ $(CP) $(BUILD_DIR)/$@ . - -benchlib.o: benchlib.c - @ $(ECHO) Compiling $@ - @ $(ECHO) $(CC) -c $(CFLAGS) $< $(INCLUDES) - @ $(CC) -c $(CFLAGS) $< $(INCLUDES) - -pthread.dll: $(DLL) - @ $(CP) $(DLL) $@ - -clean: - - $(RM) *.dll - - $(RM) *.lib - - $(RM) pthread.h - - $(RM) semaphore.h - - $(RM) sched.h - - $(RM) *.a - - $(RM) *.e - - $(RM) *.i - - $(RM) *.o - - $(RM) *.s - - $(RM) *.so - - $(RM) *.obj - - $(RM) *.pdb - - $(RM) *.exe - - $(RM) *.pass - - $(RM) *.bench - - $(RM) *.static - - $(RM) *.log diff --git a/platform/win32/msvc/external/pthreads.2/tests/README b/platform/win32/msvc/external/pthreads.2/tests/README deleted file mode 100644 index 9ab4f58dc8f..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/README +++ /dev/null @@ -1,44 +0,0 @@ -Running test cases in this directory ------------------------------------- - -These make scripts expect to be able to copy the dll, library -and header files from this directory's parent directory, -which should be the pthreads-win32 source directory. - -MS VC nmake -------------- - -Run the target corresponding to the DLL version being tested: - -nmake clean VC - -or: - -nmake clean VS - - -GNU GCC make ------------- - -Run "make clean" and then "make". See the "Known bugs" section -in ..\README. - - -Writing Test Cases ------------------- - -Tests written in this test suite should behave in the following manner: - - * If a test fails, leave main() with a result of 1. - - * If a test succeeds, leave main() with a result of 0. - - * No diagnostic output should appear when the test is succeeding. - Diagnostic output may be emitted if something in the test - fails, to help determine the cause of the test failure. - -Notes: ------- - -Many test cases use knowledge of implementation internals which are supposed -to be opaque to portable applications. diff --git a/platform/win32/msvc/external/pthreads.2/tests/README.BENCHTESTS b/platform/win32/msvc/external/pthreads.2/tests/README.BENCHTESTS deleted file mode 100644 index adb8cbdf15a..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/README.BENCHTESTS +++ /dev/null @@ -1,74 +0,0 @@ - ------------- -Benchmarking ------------- -There is a set a benchmarking programs in the -"tests" directory. These should be runnable using the -following command-lines corresponding to each of the possible -library builds: - -MSVC: -nmake clean VC-bench -nmake clean VCE-bench -nmake clean VSE-bench - -Mingw32: -make clean GC-bench -make clean GCE-bench - -UWIN: -The benchtests are run as part of the testsuite. - - -Mutex benchtests ----------------- - -benchtest1 - Lock plus unlock on an unlocked mutex. -benchtest2 - Lock plus unlock on a locked mutex. -benchtest3 - Trylock on a locked mutex. -benchtest4 - Trylock plus unlock on an unlocked mutex. - - -Each test times up to three alternate synchronisation -implementations as a reference, and then times each of -the four mutex types provided by the library. Each is -described below: - -Simple Critical Section -- uses a simple Win32 critical section. There is no -additional overhead for this case as there is in the -remaining cases. - -POSIX mutex implemented using a Critical Section -- The old implementation which uses runtime adaptation -depending on the Windows variant being run on. When -the pthreads DLL was run on WinNT or higher then -POSIX mutexes would use Win32 Critical Sections. - -POSIX mutex implemented using a Win32 Mutex -- The old implementation which uses runtime adaptation -depending on the Windows variant being run on. When -the pthreads DLL was run on Win9x then POSIX mutexes -would use Win32 Mutexes (because TryEnterCriticalSection -is not implemented on Win9x). - -PTHREAD_MUTEX_DEFAULT -PTHREAD_MUTEX_NORMAL -PTHREAD_MUTEX_ERRORCHECK -PTHREAD_MUTEX_RECURSIVE -- The current implementation supports these mutex types. -The underlying basis of POSIX mutexes is now the same -irrespective of the Windows variant, and should therefore -have consistent performance. - - -Semaphore benchtests --------------------- - -benchtest5 - Timing for various uncontended cases. - - -In all benchtests, the operation is repeated a large -number of times and an average is calculated. Loop -overhead is measured and subtracted from all test times. - diff --git a/platform/win32/msvc/external/pthreads.2/tests/SIZES.GC b/platform/win32/msvc/external/pthreads.2/tests/SIZES.GC deleted file mode 100644 index d5ddf363f05..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/SIZES.GC +++ /dev/null @@ -1,21 +0,0 @@ -Sizes of pthreads-win32 structs -------------------------------- - pthread_t 8 - ptw32_thread_t 160 - pthread_attr_t_ 28 - sem_t_ 12 - pthread_mutex_t_ 28 - pthread_mutexattr_t_ 12 - pthread_spinlock_t_ 8 - pthread_barrier_t_ 36 - pthread_barrierattr_t_ 4 - pthread_key_t_ 16 - pthread_cond_t_ 32 - pthread_condattr_t_ 4 - pthread_rwlock_t_ 28 - pthread_rwlockattr_t_ 4 - pthread_once_t_ 16 - ptw32_cleanup_t 12 - ptw32_mcs_node_t_ 16 - sched_param 4 -------------------------------- diff --git a/platform/win32/msvc/external/pthreads.2/tests/SIZES.GCE b/platform/win32/msvc/external/pthreads.2/tests/SIZES.GCE deleted file mode 100644 index 709114d5200..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/SIZES.GCE +++ /dev/null @@ -1,21 +0,0 @@ -Sizes of pthreads-win32 structs -------------------------------- - pthread_t 8 - ptw32_thread_t 96 - pthread_attr_t_ 28 - sem_t_ 12 - pthread_mutex_t_ 28 - pthread_mutexattr_t_ 12 - pthread_spinlock_t_ 8 - pthread_barrier_t_ 36 - pthread_barrierattr_t_ 4 - pthread_key_t_ 16 - pthread_cond_t_ 32 - pthread_condattr_t_ 4 - pthread_rwlock_t_ 28 - pthread_rwlockattr_t_ 4 - pthread_once_t_ 16 - ptw32_cleanup_t 12 - ptw32_mcs_node_t_ 16 - sched_param 4 -------------------------------- diff --git a/platform/win32/msvc/external/pthreads.2/tests/SIZES.VC b/platform/win32/msvc/external/pthreads.2/tests/SIZES.VC deleted file mode 100644 index 5780197f622..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/SIZES.VC +++ /dev/null @@ -1,21 +0,0 @@ -Sizes of pthreads-win32 structs -------------------------------- - pthread_t 16 - ptw32_thread_t 432 - pthread_attr_t_ 40 - sem_t_ 24 - pthread_mutex_t_ 48 - pthread_mutexattr_t_ 12 - pthread_spinlock_t_ 16 - pthread_barrier_t_ 64 - pthread_barrierattr_t_ 4 - pthread_key_t_ 32 - pthread_cond_t_ 56 - pthread_condattr_t_ 4 - pthread_rwlock_t_ 40 - pthread_rwlockattr_t_ 4 - pthread_once_t_ 24 - ptw32_cleanup_t 24 - ptw32_mcs_node_t_ 32 - sched_param 4 -------------------------------- diff --git a/platform/win32/msvc/external/pthreads.2/tests/SIZES.VCE b/platform/win32/msvc/external/pthreads.2/tests/SIZES.VCE deleted file mode 100644 index 709114d5200..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/SIZES.VCE +++ /dev/null @@ -1,21 +0,0 @@ -Sizes of pthreads-win32 structs -------------------------------- - pthread_t 8 - ptw32_thread_t 96 - pthread_attr_t_ 28 - sem_t_ 12 - pthread_mutex_t_ 28 - pthread_mutexattr_t_ 12 - pthread_spinlock_t_ 8 - pthread_barrier_t_ 36 - pthread_barrierattr_t_ 4 - pthread_key_t_ 16 - pthread_cond_t_ 32 - pthread_condattr_t_ 4 - pthread_rwlock_t_ 28 - pthread_rwlockattr_t_ 4 - pthread_once_t_ 16 - ptw32_cleanup_t 12 - ptw32_mcs_node_t_ 16 - sched_param 4 -------------------------------- diff --git a/platform/win32/msvc/external/pthreads.2/tests/SIZES.VSE b/platform/win32/msvc/external/pthreads.2/tests/SIZES.VSE deleted file mode 100644 index 709114d5200..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/SIZES.VSE +++ /dev/null @@ -1,21 +0,0 @@ -Sizes of pthreads-win32 structs -------------------------------- - pthread_t 8 - ptw32_thread_t 96 - pthread_attr_t_ 28 - sem_t_ 12 - pthread_mutex_t_ 28 - pthread_mutexattr_t_ 12 - pthread_spinlock_t_ 8 - pthread_barrier_t_ 36 - pthread_barrierattr_t_ 4 - pthread_key_t_ 16 - pthread_cond_t_ 32 - pthread_condattr_t_ 4 - pthread_rwlock_t_ 28 - pthread_rwlockattr_t_ 4 - pthread_once_t_ 16 - ptw32_cleanup_t 12 - ptw32_mcs_node_t_ 16 - sched_param 4 -------------------------------- diff --git a/platform/win32/msvc/external/pthreads.2/tests/Wmakefile b/platform/win32/msvc/external/pthreads.2/tests/Wmakefile deleted file mode 100644 index a9272a03c60..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/Wmakefile +++ /dev/null @@ -1,355 +0,0 @@ -# Watcom makefile for the pthreads test suite. -# If all of the .pass files can be created, the test suite has passed. -# -# -------------------------------------------------------------------------- -# -# Pthreads-win32 - POSIX Threads Library for Win32 -# Copyright(C) 1998 John E. Bossom -# Copyright(C) 1999,2005 Pthreads-win32 contributors -# -# Contact Email: rpj@callisto.canberra.edu.au -# -# The current list of contributors is contained -# in the file CONTRIBUTORS included with the source -# code distribution. The list can also be seen at the -# following World Wide Web location: -# http://sources.redhat.com/pthreads-win32/contributors.html -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library in the file COPYING.LIB; -# if not, write to the Free Software Foundation, Inc., -# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA -# - - -DLL_VER = 2 - -.EXTENSIONS: - -.EXTENSIONS: .pass .exe .obj .i .c - -CP = copy -RM = erase -CAT = type -MKDIR = mkdir -TOUCH = echo Passed > -ECHO = @echo - -CPHDR = pthread.h semaphore.h sched.h - -OPTIM = -od - -XXLIBS = - -# C++ Exceptions -WCEFLAGS = -xs -dPtW32NoCatchWarn -d__CLEANUP_CXX -WCELIB = pthreadWCE$(DLL_VER).lib -WCEDLL = pthreadWCE$(DLL_VER).dll -# C cleanup code -WCFLAGS = -d__CLEANUP_C -WCLIB = pthreadWC$(DLL_VER).lib -WCDLL = pthreadWC$(DLL_VER).dll -# C++ Exceptions in application - using WC version of pthreads dll -WCXFLAGS = -xs -d__CLEANUP_C - -CFLAGS= -w4 -e25 -d_WIN32_WINNT=0x400 -d_REENTRANT -zq -bm $(OPTIM) -5r -bt=nt -mf -d2 - -LFLAGS= -INCLUDES= -i=. -BUILD_DIR=.. - -# The next path is relative to $BUILD_DIR -QAPC = # ..\QueueUserAPCEx\User\quserex.dll - -COPYFILES = $(CPHDR) $(CPLIB) $(CPDLL) $(QAPC) - -TEST = -EHFLAGS = - -# If a test case returns a non-zero exit code to the shell, make will -# stop. - -PASSES = sizes.pass loadfree.pass & - self1.pass mutex5.pass & - mutex1.pass mutex1n.pass mutex1e.pass mutex1r.pass & - semaphore1.pass semaphore2.pass semaphore3.pass & - mutex2.pass mutex3.pass & - mutex2r.pass mutex2e.pass mutex3r.pass mutex3e.pass & - condvar1.pass condvar1_1.pass condvar1_2.pass condvar2.pass condvar2_1.pass & - exit1.pass create1.pass create2.pass reuse1.pass reuse2.pass equal1.pass & - sequence1.pass kill1.pass valid1.pass valid2.pass & - exit2.pass exit3.pass exit4 exit5 & - join0.pass join1.pass detach1.pass join2.pass join3.pass & - mutex4.pass mutex6.pass mutex6n.pass mutex6e.pass mutex6r.pass & - mutex6s.pass mutex6es.pass mutex6rs.pass & - mutex7.pass mutex7n.pass mutex7e.pass mutex7r.pass & - mutex8.pass mutex8n.pass mutex8e.pass mutex8r.pass & - robust1.pass robust2.pass robust3.pass robust4.pass robust5.pass & - count1.pass & - once1.pass once2.pass once3.pass once4.pass tsd1.pass & - self2.pass & - cancel1.pass cancel2.pass & - semaphore4.pass semaphore4t.pass semaphore5.pass & - delay1.pass delay2.pass eyal1.pass & - condvar3.pass condvar3_1.pass condvar3_2.pass condvar3_3.pass & - condvar4.pass condvar5.pass condvar6.pass & - condvar7.pass condvar8.pass condvar9.pass & - errno1.pass & - rwlock1.pass rwlock2.pass rwlock3.pass rwlock4.pass rwlock5.pass & - rwlock6.pass rwlock7.pass rwlock8.pass & - rwlock2_t.pass rwlock3_t.pass rwlock4_t.pass rwlock5_t.pass rwlock6_t.pass rwlock6_t2.pass & - context1.pass & - cancel3.pass cancel4.pass cancel5.pass cancel6a.pass cancel6d.pass & - cancel7 cancel8 & - cleanup0.pass cleanup1.pass cleanup2.pass cleanup3.pass & - priority1.pass priority2.pass inherit1.pass & - spin1.pass spin2.pass spin3.pass spin4.pass & - barrier1.pass barrier2.pass barrier3.pass barrier4.pass barrier5.pass & - exception1.pass exception2.pass exception3.pass & - cancel9.pass stress1.pass - -BENCHRESULTS = & - benchtest1.bench benchtest2.bench benchtest3.bench benchtest4.bench benchtest5.bench - -help: .SYMBOLIC - @ $(ECHO) Run one of the following command lines: - @ $(ECHO) wmake /f Wmakefile clean WC (to test using WC dll with wcc386 (no EH) applications) - @ $(ECHO) wmake /f Wmakefile clean WCX (to test using WC dll with wpp386 (EH) applications) - @ $(ECHO) wmake /f Wmakefile clean WCE (to test using the WCE dll with wpp386 EH applications) - @ $(ECHO) wmake /f Wmakefile clean WC-bench (to benchtest using WC dll with C bench app) - @ $(ECHO) wmake /f Wmakefile clean WCX-bench (to benchtest using WC dll with C++ bench app) - @ $(ECHO) wmake /f Wmakefile clean WCE-bench (to benchtest using WCE dll with C++ bench app) - -all: .SYMBOLIC - @ wmake /f Wmakefile clean WC - @ wmake /f Wmakefile clean WCX - @ wmake /f Wmakefile clean WCE - @ wmake /f Wmakefile clean WSE - @ wmake /f Wmakefile clean WC-bench - -tests: $(CPLIB) $(CPDLL) $(CPHDR) $(PASSES) .SYMBOLIC - @ $(ECHO) ALL TESTS PASSED! Congratulations! - -benchtests: $(CPLIB) $(CPDLL) $(CPHDR) $(XXLIBS) $(BENCHRESULTS) .SYMBOLIC - @ $(ECHO) ALL BENCH TESTS DONE. - -$(BENCHRESULTS): ($[*).exe - @ $(ECHO) ... Running $(TEST) benchtest: ($[*).exe - @ .\($[*).exe - @ $(ECHO) ...... Done - @ $(TOUCH) ($[*).bench - -WCE: .SYMBOLIC - @ wmake /f Wmakefile CC=wpp386 TEST="$@" CPLIB="$(WCELIB)" CPDLL="$(WCEDLL)" EHFLAGS="$(WCEFLAGS)" tests - -WC: .SYMBOLIC - @ wmake /f Wmakefile CC=wcc386 TEST="$@" CPLIB="$(WCLIB)" CPDLL="$(WCDLL)" EHFLAGS="$(WCFLAGS)" tests - -WCX: .SYMBOLIC - @ wmake /f Wmakefile CC=wpp386 TEST="$@" CPLIB="$(WCLIB)" CPDLL="$(WCDLL)" EHFLAGS="$(WCXFLAGS)" tests - -WCE-bench: .SYMBOLIC - @ wmake /f Wmakefile CC=wpp386 TEST="$@" CPLIB="$(WCELIB)" CPDLL="$(WCEDLL)" EHFLAGS="$(WCEFLAGS)" XXLIBS="benchlib.o" benchtests - -WC-bench: .SYMBOLIC - @ wmake /f Wmakefile CC=wcc386 TEST="$@" CPLIB="$(WCLIB)" CPDLL="$(WCDLL)" EHFLAGS="$(WCFLAGS)" XXLIBS="benchlib.o" benchtests - -WCX-bench: .SYMBOLIC - @ wmake /f Wmakefile CC=wpp386 TEST="$@" CPLIB="$(WCLIB)" CPDLL="$(WCDLL)" EHFLAGS="$(WCXFLAGS)" XXLIBS="benchlib.o" benchtests - -sizes.pass: sizes.exe - @ $(ECHO) ... Running $(TEST) test: $^* - @ $[@ > SIZES.$(TEST) - @ $(CAT) SIZES.$(TEST) - @ $(ECHO) ...... Passed - @ $(TOUCH) $^@ - -.exe.pass: - @ $(ECHO) ... Running $(TEST) test: $^* - @ $[@ - @ $(ECHO) ...... Passed - @ $(TOUCH) $^@ - -.obj.exe: - @ $(ECHO) wlink NAME $^@ FILE $[@ LIBRARY $(CPLIB) OPTION quiet - @ wlink NAME $^@ FILE $[@ LIBRARY $(CPLIB) OPTION quiet - -.c.obj: - @ $(ECHO) $(CC) $^* $(EHFLAGS) $(CFLAGS) $(INCLUDES) - @ $(CC) $^* $(EHFLAGS) $(CFLAGS) $(INCLUDES) - -.c.i: - @ $(CC) /P $(EHFLAGS) $(CFLAGS) $(INCLUDES) $< - -$(COPYFILES): .SYMBOLIC - @ $(ECHO) Copying $(BUILD_DIR)\$@ - @ $(CP) $(BUILD_DIR)\$@ . - -pthread.dll: - @ $(CP) $(CPDLL) $*.dll - @ $(CP) $(CPLIB) $*.lib - -clean: .SYMBOLIC - @ if exist *.dll $(RM) *.dll - @ if exist *.lib $(RM) *.lib - @ if exist *.err $(RM) *.err - @ if exist pthread.h $(RM) pthread.h - @ if exist semaphore.h $(RM) semaphore.h - @ if exist sched.h $(RM) sched.h - @ if exist *.e $(RM) *.e - @ if exist *.i $(RM) *.i - @ if exist *.obj $(RM) *.obj - @ if exist *.pdb $(RM) *.pdb - @ if exist *.o $(RM) *.o - @ if exist *.asm $(RM) *.asm - @ if exist *.exe $(RM) *.exe - @ if exist *.pass $(RM) *.pass - @ if exist *.bench $(RM) *.bench - @ if exist *.log $(RM) *.log - @ $(ECHO) Clean completed. - -benchtest1.bench: -benchtest2.bench: -benchtest3.bench: -benchtest4.bench: -benchtest5.bench: -barrier1.pass: -barrier2.pass: barrier1.pass -barrier3.pass: barrier2.pass -barrier4.pass: barrier3.pass -barrier5.pass: barrier4.pass -cancel1.pass: create1.pass -cancel2.pass: cancel1.pass -cancel3.pass: context1.pass -cancel4.pass: cancel3.pass -cancel5.pass: cancel3.pass -cancel6a.pass: cancel3.pass -cancel6d.pass: cancel3.pass -cancel7.pass: kill1.pass -cancel8.pass: cancel7.pass -cleanup0.pass: cancel5.pass -cleanup1.pass: cleanup0.pass -cleanup2.pass: cleanup1.pass -cleanup3.pass: cleanup2.pass -condvar1.pass: -condvar1_1.pass: condvar1.pass -condvar1_2.pass: join2.pass -condvar2.pass: condvar1.pass -condvar2_1.pass: condvar2.pass join2.pass -condvar3.pass: create1.pass condvar2.pass -condvar3_1.pass: condvar3.pass join2.pass -condvar3_2.pass: condvar3_1.pass -condvar3_3.pass: condvar3_2.pass -condvar4.pass: create1.pass -condvar5.pass: condvar4.pass -condvar6.pass: condvar5.pass -condvar7.pass: condvar6.pass cleanup1.pass -condvar8.pass: condvar7.pass -condvar9.pass: condvar8.pass -context1.pass: cancel1.pass -count1.pass: join1.pass -create1.pass: mutex2.pass -create2.pass: create1.pass -delay1.pass: -delay2.pass: delay1.pass -detach1.pass: join0.pass -equal1.pass: create1.pass -errno1.pass: mutex3.pass -exception1.pass: cancel4.pass -exception2.pass: exception1.pass -exception3.pass: exception2.pass -exit1.pass: -exit2.pass: create1.pass -exit3.pass: create1.pass -exit4.pass: -exit5.pass: kill1.pass -eyal1.pass: tsd1.pass -inherit1.pass: join1.pass priority1.pass -join0.pass: create1.pass -join1.pass: create1.pass -join2.pass: create1.pass -join3.pass: join2.pass -kill1.pass: -loadfree.pass: pthread.dll -mutex1.pass: self1.pass -mutex1n.pass: mutex1.pass -mutex1e.pass: mutex1.pass -mutex1r.pass: mutex1.pass -mutex2.pass: mutex1.pass -mutex2r.pass: mutex2.pass -mutex2e.pass: mutex2.pass -mutex3.pass: create1.pass -mutex3r.pass: mutex3.pass -mutex3e.pass: mutex3.pass -mutex4.pass: mutex3.pass -mutex5.pass: -mutex6.pass: mutex4.pass -mutex6n.pass: mutex4.pass -mutex6e.pass: mutex4.pass -mutex6r.pass: mutex4.pass -mutex6s.pass: mutex6.pass -mutex6rs.pass: mutex6r.pass -mutex6es.pass: mutex6e.pass -mutex7.pass: mutex6.pass -mutex7n.pass: mutex6n.pass -mutex7e.pass: mutex6e.pass -mutex7r.pass: mutex6r.pass -mutex8.pass: mutex7.pass -mutex8n.pass: mutex7n.pass -mutex8e.pass: mutex7e.pass -mutex8r.pass: mutex7r.pass -once1.pass: create1.pass -once2.pass: once1.pass -once3.pass: once2.pass -once4.pass: once3.pass -priority1.pass: join1.pass -priority2.pass: priority1.pass barrier3.pass -reuse1.pass: create2.pass -reuse2.pass: reuse1.pass -robust1.pass: mutex8r.pass -robust2.pass: mutex8r.pass -robust3.pass: robust2.pass -robust4.pass: robust3.pass -robust5.pass: robust4.pass -rwlock1.pass: condvar6.pass -rwlock2.pass: rwlock1.pass -rwlock3.pass: rwlock2.pass join2.pass -rwlock4.pass: rwlock3.pass -rwlock5.pass: rwlock4.pass -rwlock6.pass: rwlock5.pass -rwlock7.pass: rwlock6.pass -rwlock2_t.pass: rwlock2.pass -rwlock3_t.pass: rwlock2_t.pass -rwlock4_t.pass: rwlock3_t.pass -rwlock5_t.pass: rwlock4_t.pass -rwlock6_t.pass: rwlock5_t.pass -rwlock6_t2.pass: rwlock6_t.pass -self1.pass: -self2.pass: create1.pass -semaphore1.pass: -semaphore2.pass: -semaphore3.pass: semaphore2.pass -semaphore4.pass: semaphore3.pass cancel1.pass -semaphore4t.pass: semaphore4.pass -semaphore5.pass: semaphore4.pass -sequence1.pass: reuse2.pass -sizes.pass: -spin1.pass: -spin2.pass: spin1.pass -spin3.pass: spin2.pass -spin4.pass: spin3.pass -stress1.pass: -tsd1.pass: join1.pass -valid1.pass: join1.pass -valid2.pass: valid1.pass -cancel9.pass: cancel8.pass diff --git a/platform/win32/msvc/external/pthreads.2/tests/barrier1.c b/platform/win32/msvc/external/pthreads.2/tests/barrier1.c deleted file mode 100644 index 4854e1ac62c..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/barrier1.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * barrier1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Create a barrier object and then destroy it. - * - */ - -#include "test.h" - -pthread_barrier_t barrier = NULL; - -int -main() -{ - assert(barrier == NULL); - - assert(pthread_barrier_init(&barrier, NULL, 1) == 0); - - assert(barrier != NULL); - - assert(pthread_barrier_destroy(&barrier) == 0); - - assert(barrier == NULL); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/barrier2.c b/platform/win32/msvc/external/pthreads.2/tests/barrier2.c deleted file mode 100644 index a35a4ce656a..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/barrier2.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * barrier2.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Declare a single barrier object, wait on it, - * and then destroy it. - * - */ - -#include "test.h" - -pthread_barrier_t barrier = NULL; - -int -main() -{ - assert(pthread_barrier_init(&barrier, NULL, 1) == 0); - - assert(pthread_barrier_wait(&barrier) == PTHREAD_BARRIER_SERIAL_THREAD); - - assert(pthread_barrier_destroy(&barrier) == 0); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/barrier3.c b/platform/win32/msvc/external/pthreads.2/tests/barrier3.c deleted file mode 100644 index ed2f23e63c9..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/barrier3.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * barrier3.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Declare a single barrier object with barrier attribute, wait on it, - * and then destroy it. - * - */ - -#include "test.h" - -pthread_barrier_t barrier = NULL; -static void* result = (void*)1; - -void * func(void * arg) -{ - return (void *) (size_t)pthread_barrier_wait(&barrier); -} - -int -main() -{ - pthread_t t; - pthread_barrierattr_t ba; - - assert(pthread_barrierattr_init(&ba) == 0); - assert(pthread_barrierattr_setpshared(&ba, PTHREAD_PROCESS_PRIVATE) == 0); - assert(pthread_barrier_init(&barrier, &ba, 1) == 0); - - assert(pthread_create(&t, NULL, func, NULL) == 0); - - assert(pthread_join(t, &result) == 0); - - assert((int)(size_t)result == PTHREAD_BARRIER_SERIAL_THREAD); - - assert(pthread_barrier_destroy(&barrier) == 0); - assert(pthread_barrierattr_destroy(&ba) == 0); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/barrier4.c b/platform/win32/msvc/external/pthreads.2/tests/barrier4.c deleted file mode 100644 index 30f4380ed3a..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/barrier4.c +++ /dev/null @@ -1,110 +0,0 @@ -/* - * barrier4.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Declare a single barrier object, multiple wait on it, - * and then destroy it. - * - */ - -#include "test.h" - -enum { - NUMTHREADS = 16 -}; - -pthread_barrier_t barrier = NULL; -pthread_mutex_t mx = PTHREAD_MUTEX_INITIALIZER; -static int serialThreadCount = 0; -static int otherThreadCount = 0; - -void * -func(void * arg) -{ - int result = pthread_barrier_wait(&barrier); - - assert(pthread_mutex_lock(&mx) == 0); - - if (result == PTHREAD_BARRIER_SERIAL_THREAD) - { - serialThreadCount++; - } - else if (0 == result) - { - otherThreadCount++; - } - else - { - printf("Barrier wait failed: error = %s\n", error_string[result]); - fflush(stdout); - return NULL; - } - assert(pthread_mutex_unlock(&mx) == 0); - - return NULL; -} - -int -main() -{ - int i, j; - pthread_t t[NUMTHREADS + 1]; - - for (j = 1; j <= NUMTHREADS; j++) - { - printf("Barrier height = %d\n", j); - - serialThreadCount = 0; - - assert(pthread_barrier_init(&barrier, NULL, j) == 0); - - for (i = 1; i <= j; i++) - { - assert(pthread_create(&t[i], NULL, func, NULL) == 0); - } - - for (i = 1; i <= j; i++) - { - assert(pthread_join(t[i], NULL) == 0); - } - - assert(serialThreadCount == 1); - - assert(pthread_barrier_destroy(&barrier) == 0); - } - - assert(pthread_mutex_destroy(&mx) == 0); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/barrier5.c b/platform/win32/msvc/external/pthreads.2/tests/barrier5.c deleted file mode 100644 index fb6c142a4d2..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/barrier5.c +++ /dev/null @@ -1,118 +0,0 @@ -/* - * barrier5.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Set up a series of barriers at different heights and test various numbers - * of threads accessing, especially cases where there are more threads than the - * barrier height (count), i.e. test contention when the barrier is released. - */ - -#include "test.h" - -enum { - NUMTHREADS = 15, - HEIGHT = 10, - BARRIERMULTIPLE = 1000 -}; - -pthread_barrier_t barrier = NULL; -pthread_mutex_t mx = PTHREAD_MUTEX_INITIALIZER; -LONG totalThreadCrossings; - -void * -func(void * crossings) -{ - int result; - int serialThreads = 0; - - while ((LONG)(size_t)crossings >= (LONG)InterlockedIncrement((LPLONG)&totalThreadCrossings)) - { - result = pthread_barrier_wait(&barrier); - - if (result == PTHREAD_BARRIER_SERIAL_THREAD) - { - serialThreads++; - } - else if (result != 0) - { - printf("Barrier failed: result = %s\n", error_string[result]); - fflush(stdout); - return NULL; - } - } - - return (void*)(size_t)serialThreads; -} - -int -main() -{ - int i, j; - void* result; - int serialThreadsTotal; - LONG Crossings; - pthread_t t[NUMTHREADS + 1]; - - for (j = 1; j <= NUMTHREADS; j++) - { - int height = j -#include - -#ifdef __GNUC__ -#include -#endif - -#include "benchtest.h" - -int old_mutex_use = OLD_WIN32CS; - -BOOL (WINAPI *ptw32_try_enter_critical_section)(LPCRITICAL_SECTION) = NULL; -HINSTANCE ptw32_h_kernel32; - -void -dummy_call(int * a) -{ -} - -void -interlocked_inc_with_conditionals(int * a) -{ - if (a != NULL) - if (InterlockedIncrement((long *) a) == -1) - { - *a = 0; - } -} - -void -interlocked_dec_with_conditionals(int * a) -{ - if (a != NULL) - if (InterlockedDecrement((long *) a) == -1) - { - *a = 0; - } -} - -int -old_mutex_init(old_mutex_t *mutex, const old_mutexattr_t *attr) -{ - int result = 0; - old_mutex_t mx; - - if (mutex == NULL) - { - return EINVAL; - } - - mx = (old_mutex_t) calloc(1, sizeof(*mx)); - - if (mx == NULL) - { - result = ENOMEM; - goto FAIL0; - } - - mx->mutex = 0; - - if (attr != NULL - && *attr != NULL - && (*attr)->pshared == PTHREAD_PROCESS_SHARED - ) - { - result = ENOSYS; - } - else - { - CRITICAL_SECTION cs; - - /* - * Load KERNEL32 and try to get address of TryEnterCriticalSection - */ - ptw32_h_kernel32 = LoadLibrary(TEXT("KERNEL32.DLL")); - ptw32_try_enter_critical_section = (BOOL (WINAPI *)(LPCRITICAL_SECTION)) - -#if defined(NEED_UNICODE_CONSTS) - GetProcAddress(ptw32_h_kernel32, - (const TCHAR *)TEXT("TryEnterCriticalSection")); -#else - GetProcAddress(ptw32_h_kernel32, - (LPCSTR) "TryEnterCriticalSection"); -#endif - - if (ptw32_try_enter_critical_section != NULL) - { - InitializeCriticalSection(&cs); - if ((*ptw32_try_enter_critical_section)(&cs)) - { - LeaveCriticalSection(&cs); - } - else - { - /* - * Not really supported (Win98?). - */ - ptw32_try_enter_critical_section = NULL; - } - DeleteCriticalSection(&cs); - } - - if (ptw32_try_enter_critical_section == NULL) - { - (void) FreeLibrary(ptw32_h_kernel32); - ptw32_h_kernel32 = 0; - } - - if (old_mutex_use == OLD_WIN32CS) - { - InitializeCriticalSection(&mx->cs); - } - else if (old_mutex_use == OLD_WIN32MUTEX) - { - mx->mutex = CreateMutex (NULL, - FALSE, - NULL); - - if (mx->mutex == 0) - { - result = EAGAIN; - } - } - else - { - result = EINVAL; - } - } - - if (result != 0 && mx != NULL) - { - free(mx); - mx = NULL; - } - -FAIL0: - *mutex = mx; - - return(result); -} - - -int -old_mutex_lock(old_mutex_t *mutex) -{ - int result = 0; - old_mutex_t mx; - - if (mutex == NULL || *mutex == NULL) - { - return EINVAL; - } - - if (*mutex == (old_mutex_t) PTW32_OBJECT_AUTO_INIT) - { - /* - * Don't use initialisers when benchtesting. - */ - result = EINVAL; - } - - mx = *mutex; - - if (result == 0) - { - if (mx->mutex == 0) - { - EnterCriticalSection(&mx->cs); - } - else - { - result = (WaitForSingleObject(mx->mutex, INFINITE) - == WAIT_OBJECT_0) - ? 0 - : EINVAL; - } - } - - return(result); -} - -int -old_mutex_unlock(old_mutex_t *mutex) -{ - int result = 0; - old_mutex_t mx; - - if (mutex == NULL || *mutex == NULL) - { - return EINVAL; - } - - mx = *mutex; - - if (mx != (old_mutex_t) PTW32_OBJECT_AUTO_INIT) - { - if (mx->mutex == 0) - { - LeaveCriticalSection(&mx->cs); - } - else - { - result = (ReleaseMutex (mx->mutex) ? 0 : EINVAL); - } - } - else - { - result = EINVAL; - } - - return(result); -} - - -int -old_mutex_trylock(old_mutex_t *mutex) -{ - int result = 0; - old_mutex_t mx; - - if (mutex == NULL || *mutex == NULL) - { - return EINVAL; - } - - if (*mutex == (old_mutex_t) PTW32_OBJECT_AUTO_INIT) - { - /* - * Don't use initialisers when benchtesting. - */ - result = EINVAL; - } - - mx = *mutex; - - if (result == 0) - { - if (mx->mutex == 0) - { - if (ptw32_try_enter_critical_section == NULL) - { - result = 0; - } - else if ((*ptw32_try_enter_critical_section)(&mx->cs) != TRUE) - { - result = EBUSY; - } - } - else - { - DWORD status; - - status = WaitForSingleObject (mx->mutex, 0); - - if (status != WAIT_OBJECT_0) - { - result = ((status == WAIT_TIMEOUT) - ? EBUSY - : EINVAL); - } - } - } - - return(result); -} - - -int -old_mutex_destroy(old_mutex_t *mutex) -{ - int result = 0; - old_mutex_t mx; - - if (mutex == NULL - || *mutex == NULL) - { - return EINVAL; - } - - if (*mutex != (old_mutex_t) PTW32_OBJECT_AUTO_INIT) - { - mx = *mutex; - - if ((result = old_mutex_trylock(&mx)) == 0) - { - *mutex = NULL; - - (void) old_mutex_unlock(&mx); - - if (mx->mutex == 0) - { - DeleteCriticalSection(&mx->cs); - } - else - { - result = (CloseHandle (mx->mutex) ? 0 : EINVAL); - } - - if (result == 0) - { - mx->mutex = 0; - free(mx); - } - else - { - *mutex = mx; - } - } - } - else - { - result = EINVAL; - } - - if (ptw32_try_enter_critical_section != NULL) - { - (void) FreeLibrary(ptw32_h_kernel32); - ptw32_h_kernel32 = 0; - } - - return(result); -} - -/****************************************************************************************/ diff --git a/platform/win32/msvc/external/pthreads.2/tests/benchtest.h b/platform/win32/msvc/external/pthreads.2/tests/benchtest.h deleted file mode 100644 index 93b3125a9a0..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/benchtest.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - */ - -#include "../config.h" - -enum { - OLD_WIN32CS, - OLD_WIN32MUTEX -}; - -extern int old_mutex_use; - -struct old_mutex_t_ { - HANDLE mutex; - CRITICAL_SECTION cs; -}; - -typedef struct old_mutex_t_ * old_mutex_t; - -struct old_mutexattr_t_ { - int pshared; -}; - -typedef struct old_mutexattr_t_ * old_mutexattr_t; - -extern BOOL (WINAPI *ptw32_try_enter_critical_section)(LPCRITICAL_SECTION); -extern HINSTANCE ptw32_h_kernel32; - -#define PTW32_OBJECT_AUTO_INIT ((void *) -1) - -void dummy_call(int * a); -void interlocked_inc_with_conditionals(int *a); -void interlocked_dec_with_conditionals(int *a); -int old_mutex_init(old_mutex_t *mutex, const old_mutexattr_t *attr); -int old_mutex_lock(old_mutex_t *mutex); -int old_mutex_unlock(old_mutex_t *mutex); -int old_mutex_trylock(old_mutex_t *mutex); -int old_mutex_destroy(old_mutex_t *mutex); -/****************************************************************************************/ diff --git a/platform/win32/msvc/external/pthreads.2/tests/benchtest1.c b/platform/win32/msvc/external/pthreads.2/tests/benchtest1.c deleted file mode 100644 index 2df785c7875..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/benchtest1.c +++ /dev/null @@ -1,266 +0,0 @@ -/* - * benchtest1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Measure time taken to complete an elementary operation. - * - * - Mutex - * Single thread iteration over lock/unlock for each mutex type. - */ - -#include "test.h" -#include - -#ifdef __GNUC__ -#include -#endif - -#include "benchtest.h" - -#define PTW32_MUTEX_TYPES -#define ITERATIONS 10000000L - -pthread_mutex_t mx; -pthread_mutexattr_t ma; -PTW32_STRUCT_TIMEB currSysTimeStart; -PTW32_STRUCT_TIMEB currSysTimeStop; -long durationMilliSecs; -long overHeadMilliSecs = 0; -int two = 2; -int one = 1; -int zero = 0; -int iter; - -#define GetDurationMilliSecs(_TStart, _TStop) ((long)((_TStop.time*1000+_TStop.millitm) \ - - (_TStart.time*1000+_TStart.millitm))) - -/* - * Dummy use of j, otherwise the loop may be removed by the optimiser - * when doing the overhead timing with an empty loop. - */ -#define TESTSTART \ - { int i, j = 0, k = 0; PTW32_FTIME(&currSysTimeStart); for (i = 0; i < ITERATIONS; i++) { j++; - -#define TESTSTOP \ - }; PTW32_FTIME(&currSysTimeStop); if (j + k == i) j++; } - - -void -runTest (char * testNameString, int mType) -{ -#ifdef PTW32_MUTEX_TYPES - assert(pthread_mutexattr_settype(&ma, mType) == 0); -#endif - assert(pthread_mutex_init(&mx, &ma) == 0); - - TESTSTART - assert((pthread_mutex_lock(&mx),1) == one); - assert((pthread_mutex_unlock(&mx),2) == two); - TESTSTOP - - assert(pthread_mutex_destroy(&mx) == 0); - - durationMilliSecs = GetDurationMilliSecs(currSysTimeStart, currSysTimeStop) - overHeadMilliSecs; - - printf( "%-45s %15ld %15.3f\n", - testNameString, - durationMilliSecs, - (float) durationMilliSecs * 1E3 / ITERATIONS); -} - - -int -main (int argc, char *argv[]) -{ - int i = 0; - CRITICAL_SECTION cs; - old_mutex_t ox; - pthread_mutexattr_init(&ma); - - printf( "=============================================================================\n"); - printf( "\nLock plus unlock on an unlocked mutex.\n%ld iterations\n\n", - ITERATIONS); - printf( "%-45s %15s %15s\n", - "Test", - "Total(msec)", - "average(usec)"); - printf( "-----------------------------------------------------------------------------\n"); - - /* - * Time the loop overhead so we can subtract it from the actual test times. - */ - TESTSTART - assert(1 == one); - assert(2 == two); - TESTSTOP - - durationMilliSecs = GetDurationMilliSecs(currSysTimeStart, currSysTimeStop) - overHeadMilliSecs; - overHeadMilliSecs = durationMilliSecs; - - - TESTSTART - assert((dummy_call(&i), 1) == one); - assert((dummy_call(&i), 2) == two); - TESTSTOP - - durationMilliSecs = GetDurationMilliSecs(currSysTimeStart, currSysTimeStop) - overHeadMilliSecs; - - printf( "%-45s %15ld %15.3f\n", - "Dummy call x 2", - durationMilliSecs, - (float) (durationMilliSecs * 1E3 / ITERATIONS)); - - - TESTSTART - assert((interlocked_inc_with_conditionals(&i), 1) == one); - assert((interlocked_dec_with_conditionals(&i), 2) == two); - TESTSTOP - - durationMilliSecs = GetDurationMilliSecs(currSysTimeStart, currSysTimeStop) - overHeadMilliSecs; - - printf( "%-45s %15ld %15.3f\n", - "Dummy call -> Interlocked with cond x 2", - durationMilliSecs, - (float) durationMilliSecs * 1E3 / ITERATIONS); - - - TESTSTART - assert((InterlockedIncrement((LPLONG)&i), 1) == (LONG)one); - assert((InterlockedDecrement((LPLONG)&i), 2) == (LONG)two); - TESTSTOP - - durationMilliSecs = GetDurationMilliSecs(currSysTimeStart, currSysTimeStop) - overHeadMilliSecs; - - printf( "%-45s %15ld %15.3f\n", - "InterlockedOp x 2", - durationMilliSecs, - (float) durationMilliSecs * 1E3 / ITERATIONS); - - - InitializeCriticalSection(&cs); - - TESTSTART - assert((EnterCriticalSection(&cs), 1) == one); - assert((LeaveCriticalSection(&cs), 2) == two); - TESTSTOP - - DeleteCriticalSection(&cs); - - durationMilliSecs = GetDurationMilliSecs(currSysTimeStart, currSysTimeStop) - overHeadMilliSecs; - - printf( "%-45s %15ld %15.3f\n", - "Simple Critical Section", - durationMilliSecs, - (float) durationMilliSecs * 1E3 / ITERATIONS); - - - old_mutex_use = OLD_WIN32CS; - assert(old_mutex_init(&ox, NULL) == 0); - - TESTSTART - assert(old_mutex_lock(&ox) == zero); - assert(old_mutex_unlock(&ox) == zero); - TESTSTOP - - assert(old_mutex_destroy(&ox) == 0); - - durationMilliSecs = GetDurationMilliSecs(currSysTimeStart, currSysTimeStop) - overHeadMilliSecs; - - printf( "%-45s %15ld %15.3f\n", - "Old PT Mutex using a Critical Section (WNT)", - durationMilliSecs, - (float) durationMilliSecs * 1E3 / ITERATIONS); - - - old_mutex_use = OLD_WIN32MUTEX; - assert(old_mutex_init(&ox, NULL) == 0); - - TESTSTART - assert(old_mutex_lock(&ox) == zero); - assert(old_mutex_unlock(&ox) == zero); - TESTSTOP - - assert(old_mutex_destroy(&ox) == 0); - - durationMilliSecs = GetDurationMilliSecs(currSysTimeStart, currSysTimeStop) - overHeadMilliSecs; - - printf( "%-45s %15ld %15.3f\n", - "Old PT Mutex using a Win32 Mutex (W9x)", - durationMilliSecs, - (float) durationMilliSecs * 1E3 / ITERATIONS); - - printf( ".............................................................................\n"); - - /* - * Now we can start the actual tests - */ -#ifdef PTW32_MUTEX_TYPES - runTest("PTHREAD_MUTEX_DEFAULT", PTHREAD_MUTEX_DEFAULT); - - runTest("PTHREAD_MUTEX_NORMAL", PTHREAD_MUTEX_NORMAL); - - runTest("PTHREAD_MUTEX_ERRORCHECK", PTHREAD_MUTEX_ERRORCHECK); - - runTest("PTHREAD_MUTEX_RECURSIVE", PTHREAD_MUTEX_RECURSIVE); -#else - runTest("Non-blocking lock", 0); -#endif - - printf( ".............................................................................\n"); - - pthread_mutexattr_setrobust(&ma, PTHREAD_MUTEX_ROBUST); - -#ifdef PTW32_MUTEX_TYPES - runTest("PTHREAD_MUTEX_DEFAULT (Robust)", PTHREAD_MUTEX_DEFAULT); - - runTest("PTHREAD_MUTEX_NORMAL (Robust)", PTHREAD_MUTEX_NORMAL); - - runTest("PTHREAD_MUTEX_ERRORCHECK (Robust)", PTHREAD_MUTEX_ERRORCHECK); - - runTest("PTHREAD_MUTEX_RECURSIVE (Robust)", PTHREAD_MUTEX_RECURSIVE); -#else - runTest("Non-blocking lock", 0); -#endif - - printf( "=============================================================================\n"); - - /* - * End of tests. - */ - - pthread_mutexattr_destroy(&ma); - - one = i; /* Dummy assignment to avoid 'variable unused' warning */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/benchtest2.c b/platform/win32/msvc/external/pthreads.2/tests/benchtest2.c deleted file mode 100644 index f6878dae736..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/benchtest2.c +++ /dev/null @@ -1,327 +0,0 @@ -/* - * benchtest1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Measure time taken to complete an elementary operation. - * - * - Mutex - * Two threads iterate over lock/unlock for each mutex type. - * The two threads are forced into lock-step using two mutexes, - * forcing the threads to block on each lock operation. The - * time measured is therefore the worst case senario. - */ - -#include "test.h" -#include - -#ifdef __GNUC__ -#include -#endif - -#include "benchtest.h" - -#define PTW32_MUTEX_TYPES -#define ITERATIONS 100000L - -pthread_mutex_t gate1, gate2; -old_mutex_t ox1, ox2; -CRITICAL_SECTION cs1, cs2; -pthread_mutexattr_t ma; -long durationMilliSecs; -long overHeadMilliSecs = 0; -PTW32_STRUCT_TIMEB currSysTimeStart; -PTW32_STRUCT_TIMEB currSysTimeStop; -pthread_t worker; -int running = 0; - -#define GetDurationMilliSecs(_TStart, _TStop) ((long)((_TStop.time*1000+_TStop.millitm) \ - - (_TStart.time*1000+_TStart.millitm))) - -/* - * Dummy use of j, otherwise the loop may be removed by the optimiser - * when doing the overhead timing with an empty loop. - */ -#define TESTSTART \ - { int i, j = 0, k = 0; PTW32_FTIME(&currSysTimeStart); for (i = 0; i < ITERATIONS; i++) { j++; - -#define TESTSTOP \ - }; PTW32_FTIME(&currSysTimeStop); if (j + k == i) j++; } - - -void * -overheadThread(void * arg) -{ - do - { - sched_yield(); - } - while (running); - - return NULL; -} - - -void * -oldThread(void * arg) -{ - do - { - (void) old_mutex_lock(&ox1); - (void) old_mutex_lock(&ox2); - (void) old_mutex_unlock(&ox1); - sched_yield(); - (void) old_mutex_unlock(&ox2); - } - while (running); - - return NULL; -} - -void * -workerThread(void * arg) -{ - do - { - (void) pthread_mutex_lock(&gate1); - (void) pthread_mutex_lock(&gate2); - (void) pthread_mutex_unlock(&gate1); - sched_yield(); - (void) pthread_mutex_unlock(&gate2); - } - while (running); - - return NULL; -} - -void * -CSThread(void * arg) -{ - do - { - EnterCriticalSection(&cs1); - EnterCriticalSection(&cs2); - LeaveCriticalSection(&cs1); - sched_yield(); - LeaveCriticalSection(&cs2); - } - while (running); - - return NULL; -} - -void -runTest (char * testNameString, int mType) -{ -#ifdef PTW32_MUTEX_TYPES - assert(pthread_mutexattr_settype(&ma, mType) == 0); -#endif - assert(pthread_mutex_init(&gate1, &ma) == 0); - assert(pthread_mutex_init(&gate2, &ma) == 0); - assert(pthread_mutex_lock(&gate1) == 0); - assert(pthread_mutex_lock(&gate2) == 0); - running = 1; - assert(pthread_create(&worker, NULL, workerThread, NULL) == 0); - TESTSTART - (void) pthread_mutex_unlock(&gate1); - sched_yield(); - (void) pthread_mutex_unlock(&gate2); - (void) pthread_mutex_lock(&gate1); - (void) pthread_mutex_lock(&gate2); - TESTSTOP - running = 0; - assert(pthread_mutex_unlock(&gate2) == 0); - assert(pthread_mutex_unlock(&gate1) == 0); - assert(pthread_join(worker, NULL) == 0); - assert(pthread_mutex_destroy(&gate2) == 0); - assert(pthread_mutex_destroy(&gate1) == 0); - durationMilliSecs = GetDurationMilliSecs(currSysTimeStart, currSysTimeStop) - overHeadMilliSecs; - printf( "%-45s %15ld %15.3f\n", - testNameString, - durationMilliSecs, - (float) durationMilliSecs * 1E3 / ITERATIONS / 4 /* Four locks/unlocks per iteration */); -} - - -int -main (int argc, char *argv[]) -{ - assert(pthread_mutexattr_init(&ma) == 0); - - printf( "=============================================================================\n"); - printf( "\nLock plus unlock on a locked mutex.\n"); - printf("%ld iterations, four locks/unlocks per iteration.\n\n", ITERATIONS); - - printf( "%-45s %15s %15s\n", - "Test", - "Total(msec)", - "average(usec)"); - printf( "-----------------------------------------------------------------------------\n"); - - /* - * Time the loop overhead so we can subtract it from the actual test times. - */ - - running = 1; - assert(pthread_create(&worker, NULL, overheadThread, NULL) == 0); - TESTSTART - sched_yield(); - sched_yield(); - TESTSTOP - running = 0; - assert(pthread_join(worker, NULL) == 0); - durationMilliSecs = GetDurationMilliSecs(currSysTimeStart, currSysTimeStop) - overHeadMilliSecs; - overHeadMilliSecs = durationMilliSecs; - - - InitializeCriticalSection(&cs1); - InitializeCriticalSection(&cs2); - EnterCriticalSection(&cs1); - EnterCriticalSection(&cs2); - running = 1; - assert(pthread_create(&worker, NULL, CSThread, NULL) == 0); - TESTSTART - LeaveCriticalSection(&cs1); - sched_yield(); - LeaveCriticalSection(&cs2); - EnterCriticalSection(&cs1); - EnterCriticalSection(&cs2); - TESTSTOP - running = 0; - LeaveCriticalSection(&cs2); - LeaveCriticalSection(&cs1); - assert(pthread_join(worker, NULL) == 0); - DeleteCriticalSection(&cs2); - DeleteCriticalSection(&cs1); - durationMilliSecs = GetDurationMilliSecs(currSysTimeStart, currSysTimeStop) - overHeadMilliSecs; - printf( "%-45s %15ld %15.3f\n", - "Simple Critical Section", - durationMilliSecs, - (float) durationMilliSecs * 1E3 / ITERATIONS / 4 ); - - - old_mutex_use = OLD_WIN32CS; - assert(old_mutex_init(&ox1, NULL) == 0); - assert(old_mutex_init(&ox2, NULL) == 0); - assert(old_mutex_lock(&ox1) == 0); - assert(old_mutex_lock(&ox2) == 0); - running = 1; - assert(pthread_create(&worker, NULL, oldThread, NULL) == 0); - TESTSTART - (void) old_mutex_unlock(&ox1); - sched_yield(); - (void) old_mutex_unlock(&ox2); - (void) old_mutex_lock(&ox1); - (void) old_mutex_lock(&ox2); - TESTSTOP - running = 0; - assert(old_mutex_unlock(&ox1) == 0); - assert(old_mutex_unlock(&ox2) == 0); - assert(pthread_join(worker, NULL) == 0); - assert(old_mutex_destroy(&ox2) == 0); - assert(old_mutex_destroy(&ox1) == 0); - durationMilliSecs = GetDurationMilliSecs(currSysTimeStart, currSysTimeStop) - overHeadMilliSecs; - printf( "%-45s %15ld %15.3f\n", - "Old PT Mutex using a Critical Section (WNT)", - durationMilliSecs, - (float) durationMilliSecs * 1E3 / ITERATIONS / 4); - - - old_mutex_use = OLD_WIN32MUTEX; - assert(old_mutex_init(&ox1, NULL) == 0); - assert(old_mutex_init(&ox2, NULL) == 0); - assert(old_mutex_lock(&ox1) == 0); - assert(old_mutex_lock(&ox2) == 0); - running = 1; - assert(pthread_create(&worker, NULL, oldThread, NULL) == 0); - TESTSTART - (void) old_mutex_unlock(&ox1); - sched_yield(); - (void) old_mutex_unlock(&ox2); - (void) old_mutex_lock(&ox1); - (void) old_mutex_lock(&ox2); - TESTSTOP - running = 0; - assert(old_mutex_unlock(&ox1) == 0); - assert(old_mutex_unlock(&ox2) == 0); - assert(pthread_join(worker, NULL) == 0); - assert(old_mutex_destroy(&ox2) == 0); - assert(old_mutex_destroy(&ox1) == 0); - durationMilliSecs = GetDurationMilliSecs(currSysTimeStart, currSysTimeStop) - overHeadMilliSecs; - printf( "%-45s %15ld %15.3f\n", - "Old PT Mutex using a Win32 Mutex (W9x)", - durationMilliSecs, - (float) durationMilliSecs * 1E3 / ITERATIONS / 4); - - printf( ".............................................................................\n"); - - /* - * Now we can start the actual tests - */ -#ifdef PTW32_MUTEX_TYPES - runTest("PTHREAD_MUTEX_DEFAULT", PTHREAD_MUTEX_DEFAULT); - - runTest("PTHREAD_MUTEX_NORMAL", PTHREAD_MUTEX_NORMAL); - - runTest("PTHREAD_MUTEX_ERRORCHECK", PTHREAD_MUTEX_ERRORCHECK); - - runTest("PTHREAD_MUTEX_RECURSIVE", PTHREAD_MUTEX_RECURSIVE); -#else - runTest("Non-blocking lock", 0); -#endif - - printf( ".............................................................................\n"); - - pthread_mutexattr_setrobust(&ma, PTHREAD_MUTEX_ROBUST); - -#ifdef PTW32_MUTEX_TYPES - runTest("PTHREAD_MUTEX_DEFAULT (Robust)", PTHREAD_MUTEX_DEFAULT); - - runTest("PTHREAD_MUTEX_NORMAL (Robust)", PTHREAD_MUTEX_NORMAL); - - runTest("PTHREAD_MUTEX_ERRORCHECK (Robust)", PTHREAD_MUTEX_ERRORCHECK); - - runTest("PTHREAD_MUTEX_RECURSIVE (Robust)", PTHREAD_MUTEX_RECURSIVE); -#else - runTest("Non-blocking lock", 0); -#endif - - printf( "=============================================================================\n"); - /* - * End of tests. - */ - - pthread_mutexattr_destroy(&ma); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/benchtest3.c b/platform/win32/msvc/external/pthreads.2/tests/benchtest3.c deleted file mode 100644 index 7d05f08bdd6..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/benchtest3.c +++ /dev/null @@ -1,217 +0,0 @@ -/* - * benchtest3.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Measure time taken to complete an elementary operation. - * - * - Mutex - * Single thread iteration over a trylock on a locked mutex for each mutex type. - */ - -#include "test.h" -#include - -#ifdef __GNUC__ -#include -#endif - -#include "benchtest.h" - -#define PTW32_MUTEX_TYPES -#define ITERATIONS 10000000L - -pthread_mutex_t mx; -old_mutex_t ox; -pthread_mutexattr_t ma; -PTW32_STRUCT_TIMEB currSysTimeStart; -PTW32_STRUCT_TIMEB currSysTimeStop; -long durationMilliSecs; -long overHeadMilliSecs = 0; - -#define GetDurationMilliSecs(_TStart, _TStop) ((long)((_TStop.time*1000+_TStop.millitm) \ - - (_TStart.time*1000+_TStart.millitm))) - -/* - * Dummy use of j, otherwise the loop may be removed by the optimiser - * when doing the overhead timing with an empty loop. - */ -#define TESTSTART \ - { int i, j = 0, k = 0; PTW32_FTIME(&currSysTimeStart); for (i = 0; i < ITERATIONS; i++) { j++; - -#define TESTSTOP \ - }; PTW32_FTIME(&currSysTimeStop); if (j + k == i) j++; } - - -void * -trylockThread (void * arg) -{ - TESTSTART - (void) pthread_mutex_trylock(&mx); - TESTSTOP - - return NULL; -} - - -void * -oldTrylockThread (void * arg) -{ - TESTSTART - (void) old_mutex_trylock(&ox); - TESTSTOP - - return NULL; -} - - -void -runTest (char * testNameString, int mType) -{ - pthread_t t; - -#ifdef PTW32_MUTEX_TYPES - (void) pthread_mutexattr_settype(&ma, mType); -#endif - assert(pthread_mutex_init(&mx, &ma) == 0); - assert(pthread_mutex_lock(&mx) == 0); - assert(pthread_create(&t, NULL, trylockThread, 0) == 0); - assert(pthread_join(t, NULL) == 0); - assert(pthread_mutex_unlock(&mx) == 0); - assert(pthread_mutex_destroy(&mx) == 0); - - durationMilliSecs = GetDurationMilliSecs(currSysTimeStart, currSysTimeStop) - overHeadMilliSecs; - - printf( "%-45s %15ld %15.3f\n", - testNameString, - durationMilliSecs, - (float) durationMilliSecs * 1E3 / ITERATIONS); -} - - -int -main (int argc, char *argv[]) -{ - pthread_t t; - - assert(pthread_mutexattr_init(&ma) == 0); - - printf( "=============================================================================\n"); - printf( "\nTrylock on a locked mutex.\n"); - printf( "%ld iterations.\n\n", ITERATIONS); - printf( "%-45s %15s %15s\n", - "Test", - "Total(msec)", - "average(usec)"); - printf( "-----------------------------------------------------------------------------\n"); - - /* - * Time the loop overhead so we can subtract it from the actual test times. - */ - - TESTSTART - TESTSTOP - - durationMilliSecs = GetDurationMilliSecs(currSysTimeStart, currSysTimeStop) - overHeadMilliSecs; - overHeadMilliSecs = durationMilliSecs; - - - old_mutex_use = OLD_WIN32CS; - assert(old_mutex_init(&ox, NULL) == 0); - assert(old_mutex_lock(&ox) == 0); - assert(pthread_create(&t, NULL, oldTrylockThread, 0) == 0); - assert(pthread_join(t, NULL) == 0); - assert(old_mutex_unlock(&ox) == 0); - assert(old_mutex_destroy(&ox) == 0); - durationMilliSecs = GetDurationMilliSecs(currSysTimeStart, currSysTimeStop) - overHeadMilliSecs; - printf( "%-45s %15ld %15.3f\n", - "Old PT Mutex using a Critical Section (WNT)", - durationMilliSecs, - (float) durationMilliSecs * 1E3 / ITERATIONS); - - old_mutex_use = OLD_WIN32MUTEX; - assert(old_mutex_init(&ox, NULL) == 0); - assert(old_mutex_lock(&ox) == 0); - assert(pthread_create(&t, NULL, oldTrylockThread, 0) == 0); - assert(pthread_join(t, NULL) == 0); - assert(old_mutex_unlock(&ox) == 0); - assert(old_mutex_destroy(&ox) == 0); - durationMilliSecs = GetDurationMilliSecs(currSysTimeStart, currSysTimeStop) - overHeadMilliSecs; - printf( "%-45s %15ld %15.3f\n", - "Old PT Mutex using a Win32 Mutex (W9x)", - durationMilliSecs, - (float) durationMilliSecs * 1E3 / ITERATIONS); - - printf( ".............................................................................\n"); - - /* - * Now we can start the actual tests - */ -#ifdef PTW32_MUTEX_TYPES - runTest("PTHREAD_MUTEX_DEFAULT", PTHREAD_MUTEX_DEFAULT); - - runTest("PTHREAD_MUTEX_NORMAL", PTHREAD_MUTEX_NORMAL); - - runTest("PTHREAD_MUTEX_ERRORCHECK", PTHREAD_MUTEX_ERRORCHECK); - - runTest("PTHREAD_MUTEX_RECURSIVE", PTHREAD_MUTEX_RECURSIVE); -#else - runTest("Non-blocking lock", 0); -#endif - - printf( ".............................................................................\n"); - - pthread_mutexattr_setrobust(&ma, PTHREAD_MUTEX_ROBUST); - -#ifdef PTW32_MUTEX_TYPES - runTest("PTHREAD_MUTEX_DEFAULT (Robust)", PTHREAD_MUTEX_DEFAULT); - - runTest("PTHREAD_MUTEX_NORMAL (Robust)", PTHREAD_MUTEX_NORMAL); - - runTest("PTHREAD_MUTEX_ERRORCHECK (Robust)", PTHREAD_MUTEX_ERRORCHECK); - - runTest("PTHREAD_MUTEX_RECURSIVE (Robust)", PTHREAD_MUTEX_RECURSIVE); -#else - runTest("Non-blocking lock", 0); -#endif - - printf( "=============================================================================\n"); - - /* - * End of tests. - */ - - pthread_mutexattr_destroy(&ma); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/benchtest4.c b/platform/win32/msvc/external/pthreads.2/tests/benchtest4.c deleted file mode 100644 index b8270959f94..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/benchtest4.c +++ /dev/null @@ -1,198 +0,0 @@ -/* - * benchtest4.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Measure time taken to complete an elementary operation. - * - * - Mutex - * Single thread iteration over trylock/unlock for each mutex type. - */ - -#include "test.h" -#include - -#ifdef __GNUC__ -#include -#endif - -#include "benchtest.h" - -#define PTW32_MUTEX_TYPES -#define ITERATIONS 10000000L - -pthread_mutex_t mx; -old_mutex_t ox; -pthread_mutexattr_t ma; -PTW32_STRUCT_TIMEB currSysTimeStart; -PTW32_STRUCT_TIMEB currSysTimeStop; -long durationMilliSecs; -long overHeadMilliSecs = 0; - -#define GetDurationMilliSecs(_TStart, _TStop) ((long)((_TStop.time*1000+_TStop.millitm) \ - - (_TStart.time*1000+_TStart.millitm))) - -/* - * Dummy use of j, otherwise the loop may be removed by the optimiser - * when doing the overhead timing with an empty loop. - */ -#define TESTSTART \ - { int i, j = 0, k = 0; PTW32_FTIME(&currSysTimeStart); for (i = 0; i < ITERATIONS; i++) { j++; - -#define TESTSTOP \ - }; PTW32_FTIME(&currSysTimeStop); if (j + k == i) j++; } - - -void -oldRunTest (char * testNameString, int mType) -{ -} - - -void -runTest (char * testNameString, int mType) -{ -#ifdef PTW32_MUTEX_TYPES - pthread_mutexattr_settype(&ma, mType); -#endif - pthread_mutex_init(&mx, &ma); - - TESTSTART - (void) pthread_mutex_trylock(&mx); - (void) pthread_mutex_unlock(&mx); - TESTSTOP - - pthread_mutex_destroy(&mx); - - durationMilliSecs = GetDurationMilliSecs(currSysTimeStart, currSysTimeStop) - overHeadMilliSecs; - - printf( "%-45s %15ld %15.3f\n", - testNameString, - durationMilliSecs, - (float) durationMilliSecs * 1E3 / ITERATIONS); -} - - -int -main (int argc, char *argv[]) -{ - pthread_mutexattr_init(&ma); - - printf( "=============================================================================\n"); - printf( "Trylock plus unlock on an unlocked mutex.\n"); - printf( "%ld iterations.\n\n", ITERATIONS); - printf( "%-45s %15s %15s\n", - "Test", - "Total(msec)", - "average(usec)"); - printf( "-----------------------------------------------------------------------------\n"); - - /* - * Time the loop overhead so we can subtract it from the actual test times. - */ - - TESTSTART - TESTSTOP - - durationMilliSecs = GetDurationMilliSecs(currSysTimeStart, currSysTimeStop) - overHeadMilliSecs; - overHeadMilliSecs = durationMilliSecs; - - old_mutex_use = OLD_WIN32CS; - assert(old_mutex_init(&ox, NULL) == 0); - TESTSTART - (void) old_mutex_trylock(&ox); - (void) old_mutex_unlock(&ox); - TESTSTOP - assert(old_mutex_destroy(&ox) == 0); - durationMilliSecs = GetDurationMilliSecs(currSysTimeStart, currSysTimeStop) - overHeadMilliSecs; - printf( "%-45s %15ld %15.3f\n", - "Old PT Mutex using a Critical Section (WNT)", - durationMilliSecs, - (float) durationMilliSecs * 1E3 / ITERATIONS); - - old_mutex_use = OLD_WIN32MUTEX; - assert(old_mutex_init(&ox, NULL) == 0); - TESTSTART - (void) old_mutex_trylock(&ox); - (void) old_mutex_unlock(&ox); - TESTSTOP - assert(old_mutex_destroy(&ox) == 0); - durationMilliSecs = GetDurationMilliSecs(currSysTimeStart, currSysTimeStop) - overHeadMilliSecs; - printf( "%-45s %15ld %15.3f\n", - "Old PT Mutex using a Win32 Mutex (W9x)", - durationMilliSecs, - (float) durationMilliSecs * 1E3 / ITERATIONS); - - printf( ".............................................................................\n"); - - /* - * Now we can start the actual tests - */ -#ifdef PTW32_MUTEX_TYPES - runTest("PTHREAD_MUTEX_DEFAULT", PTHREAD_MUTEX_DEFAULT); - - runTest("PTHREAD_MUTEX_NORMAL", PTHREAD_MUTEX_NORMAL); - - runTest("PTHREAD_MUTEX_ERRORCHECK", PTHREAD_MUTEX_ERRORCHECK); - - runTest("PTHREAD_MUTEX_RECURSIVE", PTHREAD_MUTEX_RECURSIVE); -#else - runTest("Non-blocking lock", 0); -#endif - - printf( ".............................................................................\n"); - - pthread_mutexattr_setrobust(&ma, PTHREAD_MUTEX_ROBUST); - -#ifdef PTW32_MUTEX_TYPES - runTest("PTHREAD_MUTEX_DEFAULT (Robust)", PTHREAD_MUTEX_DEFAULT); - - runTest("PTHREAD_MUTEX_NORMAL (Robust)", PTHREAD_MUTEX_NORMAL); - - runTest("PTHREAD_MUTEX_ERRORCHECK (Robust)", PTHREAD_MUTEX_ERRORCHECK); - - runTest("PTHREAD_MUTEX_RECURSIVE (Robust)", PTHREAD_MUTEX_RECURSIVE); -#else - runTest("Non-blocking lock", 0); -#endif - - printf( "=============================================================================\n"); - - /* - * End of tests. - */ - - pthread_mutexattr_destroy(&ma); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/benchtest5.c b/platform/win32/msvc/external/pthreads.2/tests/benchtest5.c deleted file mode 100644 index 8034846e1c1..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/benchtest5.c +++ /dev/null @@ -1,159 +0,0 @@ -/* - * benchtest5.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Measure time taken to complete an elementary operation. - * - * - Semaphore - * Single thread iteration over post/wait for a semaphore. - */ - -#include "test.h" -#include - -#ifdef __GNUC__ -#include -#endif - -#include "benchtest.h" - -#define ITERATIONS 1000000L - -sem_t sema; -HANDLE w32sema; - -PTW32_STRUCT_TIMEB currSysTimeStart; -PTW32_STRUCT_TIMEB currSysTimeStop; -long durationMilliSecs; -long overHeadMilliSecs = 0; -int one = 1; -int zero = 0; - -#define GetDurationMilliSecs(_TStart, _TStop) ((long)((_TStop.time*1000+_TStop.millitm) \ - - (_TStart.time*1000+_TStart.millitm))) - -/* - * Dummy use of j, otherwise the loop may be removed by the optimiser - * when doing the overhead timing with an empty loop. - */ -#define TESTSTART \ - { int i, j = 0, k = 0; PTW32_FTIME(&currSysTimeStart); for (i = 0; i < ITERATIONS; i++) { j++; - -#define TESTSTOP \ - }; PTW32_FTIME(&currSysTimeStop); if (j + k == i) j++; } - - -void -reportTest (char * testNameString) -{ - durationMilliSecs = GetDurationMilliSecs(currSysTimeStart, currSysTimeStop) - overHeadMilliSecs; - - printf( "%-45s %15ld %15.3f\n", - testNameString, - durationMilliSecs, - (float) durationMilliSecs * 1E3 / ITERATIONS); -} - - -int -main (int argc, char *argv[]) -{ - printf( "=============================================================================\n"); - printf( "\nOperations on a semaphore.\n%ld iterations\n\n", - ITERATIONS); - printf( "%-45s %15s %15s\n", - "Test", - "Total(msec)", - "average(usec)"); - printf( "-----------------------------------------------------------------------------\n"); - - /* - * Time the loop overhead so we can subtract it from the actual test times. - */ - - TESTSTART - assert(1 == one); - TESTSTOP - - durationMilliSecs = GetDurationMilliSecs(currSysTimeStart, currSysTimeStop) - overHeadMilliSecs; - overHeadMilliSecs = durationMilliSecs; - - - /* - * Now we can start the actual tests - */ - assert((w32sema = CreateSemaphore(NULL, (long) 0, (long) ITERATIONS, NULL)) != 0); - TESTSTART - assert((ReleaseSemaphore(w32sema, 1, NULL),1) == one); - TESTSTOP - assert(CloseHandle(w32sema) != 0); - - reportTest("W32 Post with no waiters"); - - - assert((w32sema = CreateSemaphore(NULL, (long) ITERATIONS, (long) ITERATIONS, NULL)) != 0); - TESTSTART - assert((WaitForSingleObject(w32sema, INFINITE),1) == one); - TESTSTOP - assert(CloseHandle(w32sema) != 0); - - reportTest("W32 Wait without blocking"); - - - assert(sem_init(&sema, 0, 0) == 0); - TESTSTART - assert((sem_post(&sema),1) == one); - TESTSTOP - assert(sem_destroy(&sema) == 0); - - reportTest("POSIX Post with no waiters"); - - - assert(sem_init(&sema, 0, ITERATIONS) == 0); - TESTSTART - assert((sem_wait(&sema),1) == one); - TESTSTOP - assert(sem_destroy(&sema) == 0); - - reportTest("POSIX Wait without blocking"); - - - printf( "=============================================================================\n"); - - /* - * End of tests. - */ - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/cancel1.c b/platform/win32/msvc/external/pthreads.2/tests/cancel1.c deleted file mode 100644 index 82fe63d4a64..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/cancel1.c +++ /dev/null @@ -1,179 +0,0 @@ -/* - * File: cancel1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Test setting cancel state and cancel type. - * - - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - pthread_setcancelstate function - * - pthread_setcanceltype function - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - pthread_create, pthread_self work. - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" - -/* - * Create NUMTHREADS threads in addition to the Main thread. - */ -enum { - NUMTHREADS = 2 -}; - -typedef struct bag_t_ bag_t; -struct bag_t_ { - int threadnum; - int started; - /* Add more per-thread state variables here */ -}; - -static bag_t threadbag[NUMTHREADS + 1]; - -void * -mythread(void * arg) -{ - bag_t * bag = (bag_t *) arg; - - assert(bag == &threadbag[bag->threadnum]); - assert(bag->started == 0); - bag->started = 1; - - /* ... */ - { - int oldstate; - int oldtype; - - assert(pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &oldstate) == 0); - assert(oldstate == PTHREAD_CANCEL_ENABLE); /* Check default */ - assert(pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL) == 0); - assert(pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL) == 0); - assert(pthread_setcancelstate(oldstate, &oldstate) == 0); - assert(oldstate == PTHREAD_CANCEL_DISABLE); /* Check setting */ - - assert(pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &oldtype) == 0); - assert(oldtype == PTHREAD_CANCEL_DEFERRED); /* Check default */ - assert(pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL) == 0); - assert(pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL) == 0); - assert(pthread_setcanceltype(oldtype, &oldtype) == 0); - assert(oldtype == PTHREAD_CANCEL_ASYNCHRONOUS); /* Check setting */ - } - - return 0; -} - -int -main() -{ - int failed = 0; - int i; - pthread_t t[NUMTHREADS + 1]; - - assert((t[0] = pthread_self()).p != NULL); - - for (i = 1; i <= NUMTHREADS; i++) - { - threadbag[i].started = 0; - threadbag[i].threadnum = i; - assert(pthread_create(&t[i], NULL, mythread, (void *) &threadbag[i]) == 0); - } - - /* - * Code to control or munipulate child threads should probably go here. - */ - - /* - * Give threads time to run. - */ - Sleep(NUMTHREADS * 100); - - /* - * Standard check that all threads started. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - failed = !threadbag[i].started; - - if (failed) - { - fprintf(stderr, "Thread %d: started %d\n", i, threadbag[i].started); - } - } - - assert(!failed); - - /* - * Check any results here. Set "failed" and only print ouput on failure. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - /* ... */ - } - - assert(!failed); - - /* - * Success. - */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/cancel2.c b/platform/win32/msvc/external/pthreads.2/tests/cancel2.c deleted file mode 100644 index ae34b87ec06..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/cancel2.c +++ /dev/null @@ -1,258 +0,0 @@ -/* - * File: cancel2.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Test SEH or C++ cancel exception handling within - * application exception blocks. - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - have working pthread_create, pthread_self, pthread_mutex_lock/unlock - * pthread_testcancel, pthread_cancel, pthread_join - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -/* - * Don't know how to identify if we are using SEH so it's only C++ for now - */ -#if defined(__cplusplus) - -#include "test.h" - -/* - * Create NUMTHREADS threads in addition to the Main thread. - */ -enum { - NUMTHREADS = 4 -}; - -typedef struct bag_t_ bag_t; -struct bag_t_ { - int threadnum; - int started; - /* Add more per-thread state variables here */ -}; - -static bag_t threadbag[NUMTHREADS + 1]; - -static pthread_mutex_t waitLock = PTHREAD_MUTEX_INITIALIZER; - -void * -mythread(void * arg) -{ - int result = 0; - bag_t * bag = (bag_t *) arg; - - assert(bag == &threadbag[bag->threadnum]); - assert(bag->started == 0); - bag->started = 1; - - /* Set to known state and type */ - - assert(pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL) == 0); - - switch (bag->threadnum % 2) - { - case 0: - assert(pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL) == 0); - result = 0; - break; - case 1: - assert(pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL) == 0); - result = 1; - break; - } - -#if !defined(__cplusplus) - __try -#else - try -#endif - { - /* Wait for go from main */ - assert(pthread_mutex_lock(&waitLock) == 0); - assert(pthread_mutex_unlock(&waitLock) == 0); - sched_yield(); - - for (;;) - { - pthread_testcancel(); - } - } -#if !defined(__cplusplus) - __except(EXCEPTION_EXECUTE_HANDLER) -#else -#if defined(PtW32CatchAll) - PtW32CatchAll -#else - catch(...) -#endif -#endif - { - /* - * Should not get into here. - */ - result += 100; - } - - /* - * Should not get to here either. - */ - result += 1000; - - return (void *) (size_t)result; -} - -int -main() -{ - int failed = 0; - int i; - pthread_t t[NUMTHREADS + 1]; - - assert((t[0] = pthread_self()).p != NULL); - assert(pthread_mutex_lock(&waitLock) == 0); - - for (i = 1; i <= NUMTHREADS; i++) - { - threadbag[i].started = 0; - threadbag[i].threadnum = i; - assert(pthread_create(&t[i], NULL, mythread, (void *) &threadbag[i]) == 0); - } - - /* - * Code to control or munipulate child threads should probably go here. - */ - Sleep(500); - - assert(pthread_mutex_unlock(&waitLock) == 0); - - Sleep(500); - - for (i = 1; i <= NUMTHREADS; i++) - { - assert(pthread_cancel(t[i]) == 0); - } - - /* - * Give threads time to run. - */ - Sleep(NUMTHREADS * 100); - - /* - * Standard check that all threads started. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - if (!threadbag[i].started) - { - failed |= !threadbag[i].started; - fprintf(stderr, "Thread %d: started %d\n", i, threadbag[i].started); - } - } - - assert(!failed); - - /* - * Check any results here. Set "failed" and only print output on failure. - */ - failed = 0; - for (i = 1; i <= NUMTHREADS; i++) - { - int fail = 0; - void* result = (void*)0; - - assert(pthread_join(t[i], &result) == 0); - fail = ((int)(size_t)result != (int) PTHREAD_CANCELED); - if (fail) - { - fprintf(stderr, "Thread %d: started %d: location %d: cancel type %s\n", - i, - threadbag[i].started, - (int)(size_t)result, - (((int)(size_t)result % 2) == 0) ? "ASYNCHRONOUS" : "DEFERRED"); - } - failed |= fail; - } - - assert(!failed); - - /* - * Success. - */ - return 0; -} - -#else /* defined(__cplusplus) */ - -#include - -int -main() -{ - fprintf(stderr, "Test N/A for this compiler environment.\n"); - return 0; -} - -#endif /* defined(__cplusplus) */ - diff --git a/platform/win32/msvc/external/pthreads.2/tests/cancel3.c b/platform/win32/msvc/external/pthreads.2/tests/cancel3.c deleted file mode 100644 index 6d4b3498df0..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/cancel3.c +++ /dev/null @@ -1,201 +0,0 @@ -/* - * File: cancel3.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Test asynchronous cancelation (alertable or non-alertable). - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - Async cancel if thread is not blocked (i.e. voluntarily resumes if blocked). - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - have working pthread_create, pthread_self, pthread_mutex_lock/unlock - * pthread_testcancel, pthread_cancel, pthread_join. - * - quserex.dll and alertdrv.sys are not available. - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" - -/* - * Create NUMTHREADS threads in addition to the Main thread. - */ -enum -{ - NUMTHREADS = 4 -}; - -typedef struct bag_t_ bag_t; -struct bag_t_ -{ - int threadnum; - int started; - /* Add more per-thread state variables here */ - int count; -}; - -static bag_t threadbag[NUMTHREADS + 1]; - -void * -mythread (void *arg) -{ - void* result = (void*)((int)(size_t)PTHREAD_CANCELED + 1); - bag_t *bag = (bag_t *) arg; - - assert (bag == &threadbag[bag->threadnum]); - assert (bag->started == 0); - bag->started = 1; - - /* Set to known state and type */ - - assert (pthread_setcancelstate (PTHREAD_CANCEL_ENABLE, NULL) == 0); - - assert (pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, NULL) == 0); - - /* - * We wait up to 10 seconds, waking every 0.1 seconds, - * for a cancelation to be applied to us. - */ - for (bag->count = 0; bag->count < 100; bag->count++) - Sleep (100); - - return result; -} - -int -main () -{ - int failed = 0; - int i; - pthread_t t[NUMTHREADS + 1]; - - assert ((t[0] = pthread_self ()).p != NULL); - - for (i = 1; i <= NUMTHREADS; i++) - { - threadbag[i].started = 0; - threadbag[i].threadnum = i; - assert (pthread_create (&t[i], NULL, mythread, (void *) &threadbag[i]) - == 0); - } - - /* - * Code to control or munipulate child threads should probably go here. - */ - Sleep (NUMTHREADS * 100); - - for (i = 1; i <= NUMTHREADS; i++) - { - assert (pthread_cancel (t[i]) == 0); - } - - /* - * Give threads time to complete. - */ - Sleep (NUMTHREADS * 100); - - /* - * Standard check that all threads started. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - if (!threadbag[i].started) - { - failed |= !threadbag[i].started; - fprintf (stderr, "Thread %d: started %d\n", i, - threadbag[i].started); - } - } - - assert (!failed); - - /* - * Check any results here. Set "failed" and only print output on failure. - */ - failed = 0; - for (i = 1; i <= NUMTHREADS; i++) - { - int fail = 0; - void* result = (void*)0; - - /* - * The thread does not contain any cancelation points, so - * a return value of PTHREAD_CANCELED confirms that async - * cancelation succeeded. - */ - assert (pthread_join (t[i], &result) == 0); - - fail = (result != PTHREAD_CANCELED); - - if (fail) - { - fprintf (stderr, "Thread %d: started %d: count %d\n", - i, threadbag[i].started, threadbag[i].count); - } - failed = (failed || fail); - } - - assert (!failed); - - /* - * Success. - */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/cancel4.c b/platform/win32/msvc/external/pthreads.2/tests/cancel4.c deleted file mode 100644 index f4429bdd3a0..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/cancel4.c +++ /dev/null @@ -1,203 +0,0 @@ -/* - * File: cancel4.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Test cancelation does not occur in deferred - * cancelation threads with no cancelation points. - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - pthread_create - * pthread_self - * pthread_cancel - * pthread_join - * pthread_setcancelstate - * pthread_setcanceltype - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" - -/* - * Create NUMTHREADS threads in addition to the Main thread. - */ -enum { - NUMTHREADS = 4 -}; - -typedef struct bag_t_ bag_t; -struct bag_t_ { - int threadnum; - int started; - /* Add more per-thread state variables here */ - int count; -}; - -static bag_t threadbag[NUMTHREADS + 1]; - -void * -mythread(void * arg) -{ - void* result = (void*)((int)(size_t)PTHREAD_CANCELED + 1); - bag_t * bag = (bag_t *) arg; - - assert(bag == &threadbag[bag->threadnum]); - assert(bag->started == 0); - bag->started = 1; - - /* Set to known state and type */ - - assert(pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL) == 0); - - assert(pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL) == 0); - - /* - * We wait up to 2 seconds, waking every 0.1 seconds, - * for a cancelation to be applied to us. - */ - for (bag->count = 0; bag->count < 20; bag->count++) - Sleep(100); - - return result; -} - -int -main() -{ - int failed = 0; - int i; - pthread_t t[NUMTHREADS + 1]; - - assert((t[0] = pthread_self()).p != NULL); - - for (i = 1; i <= NUMTHREADS; i++) - { - threadbag[i].started = 0; - threadbag[i].threadnum = i; - assert(pthread_create(&t[i], NULL, mythread, (void *) &threadbag[i]) == 0); - } - - /* - * Code to control or munipulate child threads should probably go here. - */ - Sleep(500); - - for (i = 1; i <= NUMTHREADS; i++) - { - assert(pthread_cancel(t[i]) == 0); - } - - /* - * Give threads time to run. - */ - Sleep(NUMTHREADS * 100); - - /* - * Standard check that all threads started. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - if (!threadbag[i].started) - { - failed |= !threadbag[i].started; - fprintf(stderr, "Thread %d: started %d\n", i, threadbag[i].started); - } - } - - assert(!failed); - - /* - * Check any results here. Set "failed" and only print output on failure. - */ - failed = 0; - for (i = 1; i <= NUMTHREADS; i++) - { - int fail = 0; - void* result = (void*)0; - - /* - * The thread does not contain any cancelation points, so - * a return value of PTHREAD_CANCELED indicates that async - * cancelation occurred. - */ - assert(pthread_join(t[i], &result) == 0); - - fail = (result == PTHREAD_CANCELED); - - if (fail) - { - fprintf(stderr, "Thread %d: started %d: count %d\n", - i, - threadbag[i].started, - threadbag[i].count); - } - failed = (failed || fail); - } - - assert(!failed); - - /* - * Success. - */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/cancel5.c b/platform/win32/msvc/external/pthreads.2/tests/cancel5.c deleted file mode 100644 index 724bd2d26bd..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/cancel5.c +++ /dev/null @@ -1,199 +0,0 @@ -/* - * File: cancel5.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Test calling pthread_cancel from the main thread - * without calling pthread_self() in main. - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - have working pthread_create, pthread_self, pthread_mutex_lock/unlock - * pthread_testcancel, pthread_cancel, pthread_join - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" - -/* - * Create NUMTHREADS threads in addition to the Main thread. - */ -enum -{ - NUMTHREADS = 4 -}; - -typedef struct bag_t_ bag_t; -struct bag_t_ -{ - int threadnum; - int started; - /* Add more per-thread state variables here */ - int count; -}; - -static bag_t threadbag[NUMTHREADS + 1]; - -void * -mythread (void *arg) -{ - void* result = (void*)((int)(size_t)PTHREAD_CANCELED + 1); - bag_t *bag = (bag_t *) arg; - - assert (bag == &threadbag[bag->threadnum]); - assert (bag->started == 0); - bag->started = 1; - - /* Set to known state and type */ - - assert (pthread_setcancelstate (PTHREAD_CANCEL_ENABLE, NULL) == 0); - - assert (pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, NULL) == 0); - - /* - * We wait up to 10 seconds, waking every 0.1 seconds, - * for a cancelation to be applied to us. - */ - for (bag->count = 0; bag->count < 100; bag->count++) - Sleep (100); - - return result; -} - -int -main () -{ - int failed = 0; - int i; - pthread_t t[NUMTHREADS + 1]; - - for (i = 1; i <= NUMTHREADS; i++) - { - threadbag[i].started = 0; - threadbag[i].threadnum = i; - assert (pthread_create (&t[i], NULL, mythread, (void *) &threadbag[i]) - == 0); - } - - /* - * Code to control or munipulate child threads should probably go here. - */ - Sleep (500); - - for (i = 1; i <= NUMTHREADS; i++) - { - assert (pthread_cancel (t[i]) == 0); - } - - /* - * Give threads time to run. - */ - Sleep (NUMTHREADS * 100); - - /* - * Standard check that all threads started. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - if (!threadbag[i].started) - { - failed |= !threadbag[i].started; - fprintf (stderr, "Thread %d: started %d\n", i, - threadbag[i].started); - } - } - - assert (!failed); - - /* - * Check any results here. Set "failed" and only print output on failure. - */ - failed = 0; - for (i = 1; i <= NUMTHREADS; i++) - { - int fail = 0; - void* result = (void*)((int)(size_t)PTHREAD_CANCELED + 1); - - /* - * The thread does not contain any cancelation points, so - * a return value of PTHREAD_CANCELED confirms that async - * cancelation succeeded. - */ - assert (pthread_join (t[i], &result) == 0); - - fail = (result != PTHREAD_CANCELED); - - if (fail) - { - fprintf (stderr, "Thread %d: started %d: count %d\n", - i, threadbag[i].started, threadbag[i].count); - } - failed = (failed || fail); - } - - assert (!failed); - - /* - * Success. - */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/cancel6a.c b/platform/win32/msvc/external/pthreads.2/tests/cancel6a.c deleted file mode 100644 index eea37848676..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/cancel6a.c +++ /dev/null @@ -1,191 +0,0 @@ -/* - * File: cancel6a.c - * - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright (C) 1998 Ben Elliston and Ross Johnson - * Copyright (C) 1999,2000,2001 Ross Johnson - * - * Contact Email: rpj@ise.canberra.edu.au - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Test double cancelation - asynchronous. - * Second attempt should fail (ESRCH). - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - have working pthread_create, pthread_self, pthread_mutex_lock/unlock - * pthread_testcancel, pthread_cancel, pthread_join - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" - -/* - * Create NUMTHREADS threads in addition to the Main thread. - */ -enum { - NUMTHREADS = 4 -}; - -typedef struct bag_t_ bag_t; -struct bag_t_ { - int threadnum; - int started; - /* Add more per-thread state variables here */ - int count; -}; - -static bag_t threadbag[NUMTHREADS + 1]; - -void * -mythread(void * arg) -{ - void* result = (void*)((int)(size_t)PTHREAD_CANCELED + 1); - bag_t * bag = (bag_t *) arg; - - assert(bag == &threadbag[bag->threadnum]); - assert(bag->started == 0); - bag->started = 1; - - /* Set to known state and type */ - - assert(pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL) == 0); - - assert(pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL) == 0); - - /* - * We wait up to 10 seconds, waking every 0.1 seconds, - * for a cancelation to be applied to us. - */ - for (bag->count = 0; bag->count < 100; bag->count++) - Sleep(100); - - return result; -} - -int -main() -{ - int failed = 0; - int i; - pthread_t t[NUMTHREADS + 1]; - - assert((t[0] = pthread_self()).p != NULL); - - for (i = 1; i <= NUMTHREADS; i++) - { - threadbag[i].started = 0; - threadbag[i].threadnum = i; - assert(pthread_create(&t[i], NULL, mythread, (void *) &threadbag[i]) == 0); - } - - /* - * Code to control or munipulate child threads should probably go here. - */ - Sleep(500); - - for (i = 1; i <= NUMTHREADS; i++) - { - assert(pthread_cancel(t[i]) == 0); - assert(pthread_cancel(t[i]) == ESRCH); - } - - /* - * Give threads time to run. - */ - Sleep(NUMTHREADS * 100); - - /* - * Standard check that all threads started. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - if (!threadbag[i].started) - { - failed |= !threadbag[i].started; - fprintf(stderr, "Thread %d: started %d\n", i, threadbag[i].started); - } - } - - assert(!failed); - - /* - * Check any results here. Set "failed" and only print output on failure. - */ - failed = 0; - for (i = 1; i <= NUMTHREADS; i++) - { - int fail = 0; - void* result = (void*)0; - - /* - * The thread does not contain any cancelation points, so - * a return value of PTHREAD_CANCELED confirms that async - * cancelation succeeded. - */ - assert(pthread_join(t[i], &result) == 0); - - fail = (result != PTHREAD_CANCELED); - - if (fail) - { - fprintf(stderr, "Thread %d: started %d: count %d\n", - i, - threadbag[i].started, - threadbag[i].count); - } - failed = (failed || fail); - } - - assert(!failed); - - /* - * Success. - */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/cancel6d.c b/platform/win32/msvc/external/pthreads.2/tests/cancel6d.c deleted file mode 100644 index 50c84024e47..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/cancel6d.c +++ /dev/null @@ -1,193 +0,0 @@ -/* - * File: cancel6d.c - * - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright (C) 1998 Ben Elliston and Ross Johnson - * Copyright (C) 1999,2000,2001 Ross Johnson - * - * Contact Email: rpj@ise.canberra.edu.au - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Test double cancelation - deferred. - * Second attempt should succeed (unless the canceled thread has started - * cancelation already - not tested here). - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - have working pthread_create, pthread_self, pthread_mutex_lock/unlock - * pthread_testcancel, pthread_cancel, pthread_join - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" - -/* - * Create NUMTHREADS threads in addition to the Main thread. - */ -enum { - NUMTHREADS = 4 -}; - -typedef struct bag_t_ bag_t; -struct bag_t_ { - int threadnum; - int started; - /* Add more per-thread state variables here */ - int count; -}; - -static bag_t threadbag[NUMTHREADS + 1]; - -void * -mythread(void * arg) -{ - void* result = (void*)((int)(size_t)PTHREAD_CANCELED + 1); - bag_t * bag = (bag_t *) arg; - - assert(bag == &threadbag[bag->threadnum]); - assert(bag->started == 0); - bag->started = 1; - - /* Set to known state and type */ - - assert(pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL) == 0); - - assert(pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL) == 0); - - /* - * We wait up to 10 seconds, waking every 0.1 seconds, - * for a cancelation to be applied to us. - */ - for (bag->count = 0; bag->count < 100; bag->count++) - { - Sleep(100); - pthread_testcancel(); - } - - return result; -} - -int -main() -{ - int failed = 0; - int i; - pthread_t t[NUMTHREADS + 1]; - - assert((t[0] = pthread_self()).p != NULL); - - for (i = 1; i <= NUMTHREADS; i++) - { - threadbag[i].started = 0; - threadbag[i].threadnum = i; - assert(pthread_create(&t[i], NULL, mythread, (void *)(size_t) &threadbag[i]) == 0); - } - - /* - * Code to control or munipulate child threads should probably go here. - */ - Sleep(500); - - for (i = 1; i <= NUMTHREADS; i++) - { - assert(pthread_cancel(t[i]) == 0); - if (pthread_cancel(t[i]) != 0) - { - printf("Second cancelation failed but this is expected sometimes.\n"); - } - } - - /* - * Give threads time to run. - */ - Sleep(NUMTHREADS * 100); - - /* - * Standard check that all threads started. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - if (!threadbag[i].started) - { - failed |= !threadbag[i].started; - fprintf(stderr, "Thread %d: started %d\n", i, threadbag[i].started); - } - } - - assert(!failed); - - /* - * Check any results here. Set "failed" and only print output on failure. - */ - failed = 0; - for (i = 1; i <= NUMTHREADS; i++) - { - int fail = 0; - void* result = (void*)0; - - assert(pthread_join(t[i], &result) == 0); - - fail = (result != PTHREAD_CANCELED); - - if (fail) - { - fprintf(stderr, "Thread %d: started %d: count %d\n", - i, - threadbag[i].started, - threadbag[i].count); - } - failed = (failed || fail); - } - - assert(!failed); - - /* - * Success. - */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/cancel7.c b/platform/win32/msvc/external/pthreads.2/tests/cancel7.c deleted file mode 100644 index 9c09752da7e..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/cancel7.c +++ /dev/null @@ -1,218 +0,0 @@ -/* - * File: cancel7.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Test canceling a Win32 thread having created an - * implicit POSIX handle for it. - * - * Test Method (Validation or Falsification): - * - Validate return value and that POSIX handle is created and destroyed. - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - have working pthread_create, pthread_self, pthread_mutex_lock/unlock - * pthread_testcancel, pthread_cancel - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" -#ifndef _UWIN -#include -#endif - -/* - * Create NUMTHREADS threads in addition to the Main thread. - */ -enum { - NUMTHREADS = 4 -}; - -typedef struct bag_t_ bag_t; -struct bag_t_ { - int threadnum; - int started; - /* Add more per-thread state variables here */ - int count; - pthread_t self; -}; - -static bag_t threadbag[NUMTHREADS + 1]; - -#if ! defined (__MINGW32__) || defined (__MSVCRT__) -unsigned __stdcall -#else -void -#endif -Win32thread(void * arg) -{ - int i; - bag_t * bag = (bag_t *) arg; - - assert(bag == &threadbag[bag->threadnum]); - assert(bag->started == 0); - bag->started = 1; - - assert((bag->self = pthread_self()).p != NULL); - assert(pthread_kill(bag->self, 0) == 0); - - for (i = 0; i < 100; i++) - { - Sleep(100); - pthread_testcancel(); - } - -#if ! defined (__MINGW32__) || defined (__MSVCRT__) - return 0; -#endif -} - -int -main() -{ - int failed = 0; - int i; - HANDLE h[NUMTHREADS + 1]; - unsigned thrAddr; /* Dummy variable to pass a valid location to _beginthreadex (Win98). */ - - for (i = 1; i <= NUMTHREADS; i++) - { - threadbag[i].started = 0; - threadbag[i].threadnum = i; -#if ! defined (__MINGW32__) || defined (__MSVCRT__) - h[i] = (HANDLE) _beginthreadex(NULL, 0, Win32thread, (void *) &threadbag[i], 0, &thrAddr); -#else - h[i] = (HANDLE) _beginthread(Win32thread, 0, (void *) &threadbag[i]); -#endif - } - - /* - * Code to control or munipulate child threads should probably go here. - */ - Sleep(500); - - /* - * Cancel all threads. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - assert(pthread_kill(threadbag[i].self, 0) == 0); - assert(pthread_cancel(threadbag[i].self) == 0); - } - - /* - * Give threads time to run. - */ - Sleep(NUMTHREADS * 100); - - /* - * Standard check that all threads started. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - if (!threadbag[i].started) - { - failed |= !threadbag[i].started; - fprintf(stderr, "Thread %d: started %d\n", i, threadbag[i].started); - } - } - - assert(!failed); - - /* - * Check any results here. Set "failed" and only print output on failure. - */ - failed = 0; - for (i = 1; i <= NUMTHREADS; i++) - { - int fail = 0; - int result = 0; - -#if ! defined (__MINGW32__) || defined (__MSVCRT__) - assert(GetExitCodeThread(h[i], (LPDWORD) &result) == TRUE); -#else - /* - * Can't get a result code. - */ - result = (int)(size_t)PTHREAD_CANCELED; -#endif - - assert(threadbag[i].self.p != NULL); - assert(pthread_kill(threadbag[i].self, 0) == ESRCH); - - fail = (result != (int)(size_t)PTHREAD_CANCELED); - - if (fail) - { - fprintf(stderr, "Thread %d: started %d: count %d\n", - i, - threadbag[i].started, - threadbag[i].count); - } - failed = (failed || fail); - } - - assert(!failed); - - /* - * Success. - */ - return 0; -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/cancel8.c b/platform/win32/msvc/external/pthreads.2/tests/cancel8.c deleted file mode 100644 index aa190bb78b7..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/cancel8.c +++ /dev/null @@ -1,219 +0,0 @@ -/* - * File: cancel8.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Test cancelling a blocked Win32 thread having created an - * implicit POSIX handle for it. - * - * Test Method (Validation or Falsification): - * - Validate return value and that POSIX handle is created and destroyed. - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - have working pthread_create, pthread_self, pthread_mutex_lock/unlock - * pthread_testcancel, pthread_cancel - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" -#ifndef _UWIN -#include -#endif - -/* - * Create NUMTHREADS threads in addition to the Main thread. - */ -enum { - NUMTHREADS = 4 -}; - -typedef struct bag_t_ bag_t; -struct bag_t_ { - int threadnum; - int started; - /* Add more per-thread state variables here */ - int count; - pthread_t self; -}; - -static bag_t threadbag[NUMTHREADS + 1]; - -pthread_cond_t CV = PTHREAD_COND_INITIALIZER; -pthread_mutex_t CVLock = PTHREAD_MUTEX_INITIALIZER; - -#if ! defined (__MINGW32__) || defined (__MSVCRT__) -unsigned __stdcall -#else -void -#endif -Win32thread(void * arg) -{ - bag_t * bag = (bag_t *) arg; - - assert(bag == &threadbag[bag->threadnum]); - assert(bag->started == 0); - bag->started = 1; - - assert((bag->self = pthread_self()).p != NULL); - assert(pthread_kill(bag->self, 0) == 0); - - assert(pthread_mutex_lock(&CVLock) == 0); - pthread_cleanup_push(pthread_mutex_unlock, &CVLock); - pthread_cond_wait(&CV, &CVLock); - pthread_cleanup_pop(1); - -#if ! defined (__MINGW32__) || defined (__MSVCRT__) - return 0; -#endif -} - -int -main() -{ - int failed = 0; - int i; - HANDLE h[NUMTHREADS + 1]; - unsigned thrAddr; /* Dummy variable to pass a valid location to _beginthreadex (Win98). */ - - for (i = 1; i <= NUMTHREADS; i++) - { - threadbag[i].started = 0; - threadbag[i].threadnum = i; -#if ! defined (__MINGW32__) || defined (__MSVCRT__) - h[i] = (HANDLE) _beginthreadex(NULL, 0, Win32thread, (void *) &threadbag[i], 0, &thrAddr); -#else - h[i] = (HANDLE) _beginthread(Win32thread, 0, (void *) &threadbag[i]); -#endif - } - - /* - * Code to control or munipulate child threads should probably go here. - */ - Sleep(500); - - /* - * Cancel all threads. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - assert(pthread_kill(threadbag[i].self, 0) == 0); - assert(pthread_cancel(threadbag[i].self) == 0); - } - - /* - * Give threads time to run. - */ - Sleep(NUMTHREADS * 100); - - /* - * Standard check that all threads started. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - if (!threadbag[i].started) - { - failed |= !threadbag[i].started; - fprintf(stderr, "Thread %d: started %d\n", i, threadbag[i].started); - } - } - - assert(!failed); - - /* - * Check any results here. Set "failed" and only print output on failure. - */ - failed = 0; - for (i = 1; i <= NUMTHREADS; i++) - { - int fail = 0; - int result = 0; - -#if ! defined (__MINGW32__) || defined (__MSVCRT__) - assert(GetExitCodeThread(h[i], (LPDWORD) &result) == TRUE); -#else - /* - * Can't get a result code. - */ - result = (int)(size_t)PTHREAD_CANCELED; -#endif - - assert(threadbag[i].self.p != NULL); - assert(pthread_kill(threadbag[i].self, 0) == ESRCH); - - fail = (result != (int)(size_t)PTHREAD_CANCELED); - - if (fail) - { - fprintf(stderr, "Thread %d: started %d: count %d\n", - i, - threadbag[i].started, - threadbag[i].count); - } - failed = (failed || fail); - } - - assert(!failed); - - /* - * Success. - */ - return 0; -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/cancel9.c b/platform/win32/msvc/external/pthreads.2/tests/cancel9.c deleted file mode 100644 index 3e980d4df08..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/cancel9.c +++ /dev/null @@ -1,202 +0,0 @@ -/* - * File: cancel9.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Test true asynchronous cancelation with Alert driver. - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - Cancel threads, including those blocked on system recources - * such as network I/O. - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - have working pthread_create, pthread_self, pthread_mutex_lock/unlock - * pthread_testcancel, pthread_cancel, pthread_join - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" -#include - - -void * -test_udp (void *arg) -{ - struct sockaddr_in serverAddress; - struct sockaddr_in clientAddress; - SOCKET UDPSocket; - int addr_len; - int nbyte, bytes; - char buffer[4096]; - WORD wsaVersion = MAKEWORD (2, 2); - WSADATA wsaData; - - pthread_setcancelstate (PTHREAD_CANCEL_ENABLE, NULL); - pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, NULL); - - if (WSAStartup (wsaVersion, &wsaData) != 0) - { - return NULL; - } - - UDPSocket = socket (AF_INET, SOCK_DGRAM, 0); - if ((int)UDPSocket == -1) - { - printf ("Server: socket ERROR \n"); - exit (-1); - } - - serverAddress.sin_family = AF_INET; - serverAddress.sin_addr.s_addr = INADDR_ANY; - serverAddress.sin_port = htons (9003); - - if (bind - (UDPSocket, (struct sockaddr *) &serverAddress, - sizeof (struct sockaddr_in))) - { - printf ("Server: ERROR can't bind UDPSocket"); - exit (-1); - } - - addr_len = sizeof (struct sockaddr); - - nbyte = 512; - - bytes = - recvfrom (UDPSocket, (char *) buffer, nbyte, 0, - (struct sockaddr *) &clientAddress, &addr_len); - - closesocket (UDPSocket); - WSACleanup (); - - return NULL; -} - - -void * -test_sleep (void *arg) -{ - pthread_setcancelstate (PTHREAD_CANCEL_ENABLE, NULL); - pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, NULL); - - Sleep (1000); - return NULL; - -} - -void * -test_wait (void *arg) -{ - HANDLE hEvent; - DWORD dwEvent; - - pthread_setcancelstate (PTHREAD_CANCEL_ENABLE, NULL); - pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, NULL); - - hEvent = CreateEvent (NULL, FALSE, FALSE, NULL); - - dwEvent = WaitForSingleObject (hEvent, 1000); /* WAIT_IO_COMPLETION */ - - return NULL; -} - - -int -main () -{ - pthread_t t; - void *result; - - if (pthread_win32_test_features_np (PTW32_ALERTABLE_ASYNC_CANCEL)) - { - printf ("Cancel sleeping thread.\n"); - assert (pthread_create (&t, NULL, test_sleep, NULL) == 0); - /* Sleep for a while; then cancel */ - Sleep (100); - assert (pthread_cancel (t) == 0); - assert (pthread_join (t, &result) == 0); - assert (result == PTHREAD_CANCELED && "test_sleep" != NULL); - - printf ("Cancel waiting thread.\n"); - assert (pthread_create (&t, NULL, test_wait, NULL) == 0); - /* Sleep for a while; then cancel. */ - Sleep (100); - assert (pthread_cancel (t) == 0); - assert (pthread_join (t, &result) == 0); - assert (result == PTHREAD_CANCELED && "test_wait"); - - printf ("Cancel blocked thread (blocked on network I/O).\n"); - assert (pthread_create (&t, NULL, test_udp, NULL) == 0); - /* Sleep for a while; then cancel. */ - Sleep (100); - assert (pthread_cancel (t) == 0); - assert (pthread_join (t, &result) == 0); - assert (result == PTHREAD_CANCELED && "test_udp" != NULL); - } - else - { - printf ("Alertable async cancel not available.\n"); - } - - /* - * Success. - */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/cleanup0.c b/platform/win32/msvc/external/pthreads.2/tests/cleanup0.c deleted file mode 100644 index ca2729af50b..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/cleanup0.c +++ /dev/null @@ -1,229 +0,0 @@ -/* - * File: cleanup1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Test cleanup handler executes (when thread is not canceled). - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - have working pthread_create, pthread_self, pthread_mutex_lock/unlock - * pthread_testcancel, pthread_cancel, pthread_join - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#if defined(_MSC_VER) || defined(__cplusplus) - -#include "test.h" - -/* - * Create NUMTHREADS threads in addition to the Main thread. - */ -enum { - NUMTHREADS = 10 -}; - -typedef struct bag_t_ bag_t; -struct bag_t_ { - int threadnum; - int started; - /* Add more per-thread state variables here */ - int count; -}; - -static bag_t threadbag[NUMTHREADS + 1]; - -typedef struct { - int i; - CRITICAL_SECTION cs; -} sharedInt_t; - -static sharedInt_t pop_count = {0, {0}}; - -static void -increment_pop_count(void * arg) -{ - sharedInt_t * sI = (sharedInt_t *) arg; - - EnterCriticalSection(&sI->cs); - sI->i++; - LeaveCriticalSection(&sI->cs); -} - -void * -mythread(void * arg) -{ - int result = 0; - bag_t * bag = (bag_t *) arg; - - assert(bag == &threadbag[bag->threadnum]); - assert(bag->started == 0); - bag->started = 1; - - /* Set to known state and type */ - - assert(pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL) == 0); - - assert(pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL) == 0); - -#ifdef _MSC_VER -#pragma inline_depth(0) -#endif - pthread_cleanup_push(increment_pop_count, (void *) &pop_count); - - Sleep(100); - - pthread_cleanup_pop(1); -#ifdef _MSC_VER -#pragma inline_depth() -#endif - - return (void *) (size_t)result; -} - -int -main() -{ - int failed = 0; - int i; - pthread_t t[NUMTHREADS + 1]; - - InitializeCriticalSection(&pop_count.cs); - - assert((t[0] = pthread_self()).p != NULL); - - for (i = 1; i <= NUMTHREADS; i++) - { - threadbag[i].started = 0; - threadbag[i].threadnum = i; - assert(pthread_create(&t[i], NULL, mythread, (void *) &threadbag[i]) == 0); - } - - /* - * Code to control or munipulate child threads should probably go here. - */ - Sleep(500); - - /* - * Give threads time to run. - */ - Sleep(NUMTHREADS * 100); - - /* - * Standard check that all threads started. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - if (!threadbag[i].started) - { - failed |= !threadbag[i].started; - fprintf(stderr, "Thread %d: started %d\n", i, threadbag[i].started); - } - } - - assert(!failed); - - /* - * Check any results here. Set "failed" and only print output on failure. - */ - failed = 0; - for (i = 1; i <= NUMTHREADS; i++) - { - int fail = 0; - void* result = (void*)0; - - assert(pthread_join(t[i], &result) == 0); - - fail = ((int)(size_t)result == (int) PTHREAD_CANCELED); - - if (fail) - { - fprintf(stderr, "Thread %d: started %d: result %d\n", - i, - threadbag[i].started, - (int)(size_t)result); - fflush(stderr); - } - failed = (failed || fail); - } - - assert(!failed); - - assert(pop_count.i == NUMTHREADS); - - DeleteCriticalSection(&pop_count.cs); - - /* - * Success. - */ - return 0; -} - -#else /* defined(_MSC_VER) || defined(__cplusplus) */ - -int -main() -{ - return 0; -} - -#endif /* defined(_MSC_VER) || defined(__cplusplus) */ diff --git a/platform/win32/msvc/external/pthreads.2/tests/cleanup1.c b/platform/win32/msvc/external/pthreads.2/tests/cleanup1.c deleted file mode 100644 index 2ff3917becc..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/cleanup1.c +++ /dev/null @@ -1,242 +0,0 @@ -/* - * File: cleanup1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Test cleanup handler executes (when thread is canceled). - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - have working pthread_create, pthread_self, pthread_mutex_lock/unlock - * pthread_testcancel, pthread_cancel, pthread_join - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#if defined(_MSC_VER) || defined(__cplusplus) - -#include "test.h" - -/* - * Create NUMTHREADS threads in addition to the Main thread. - */ -enum { - NUMTHREADS = 10 -}; - -typedef struct bag_t_ bag_t; -struct bag_t_ { - int threadnum; - int started; - /* Add more per-thread state variables here */ - int count; -}; - -static bag_t threadbag[NUMTHREADS + 1]; - -typedef struct { - int i; - CRITICAL_SECTION cs; -} sharedInt_t; - -static sharedInt_t pop_count = {0, {0}}; - -static void -#ifdef __CLEANUP_C -__cdecl -#endif -increment_pop_count(void * arg) -{ - sharedInt_t * sI = (sharedInt_t *) arg; - - EnterCriticalSection(&sI->cs); - sI->i++; - LeaveCriticalSection(&sI->cs); -} - -void * -mythread(void * arg) -{ - int result = 0; - bag_t * bag = (bag_t *) arg; - - assert(bag == &threadbag[bag->threadnum]); - assert(bag->started == 0); - bag->started = 1; - - /* Set to known state and type */ - - assert(pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL) == 0); - - assert(pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL) == 0); - -#ifdef _MSC_VER -#pragma inline_depth(0) -#endif - pthread_cleanup_push(increment_pop_count, (void *) &pop_count); - /* - * We don't have true async cancelation - it relies on the thread - * at least re-entering the run state at some point. - * We wait up to 10 seconds, waking every 0.1 seconds, - * for a cancelation to be applied to us. - */ - for (bag->count = 0; bag->count < 100; bag->count++) - Sleep(100); - - pthread_cleanup_pop(0); -#ifdef _MSC_VER -#pragma inline_depth() -#endif - - return (void *) (size_t)result; -} - -int -main() -{ - int failed = 0; - int i; - pthread_t t[NUMTHREADS + 1]; - - InitializeCriticalSection(&pop_count.cs); - - assert((t[0] = pthread_self()).p != NULL); - - for (i = 1; i <= NUMTHREADS; i++) - { - threadbag[i].started = 0; - threadbag[i].threadnum = i; - assert(pthread_create(&t[i], NULL, mythread, (void *) &threadbag[i]) == 0); - } - - /* - * Code to control or munipulate child threads should probably go here. - */ - Sleep(500); - - for (i = 1; i <= NUMTHREADS; i++) - { - assert(pthread_cancel(t[i]) == 0); - } - - /* - * Give threads time to run. - */ - Sleep(NUMTHREADS * 100); - - /* - * Standard check that all threads started. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - if (!threadbag[i].started) - { - failed |= !threadbag[i].started; - fprintf(stderr, "Thread %d: started %d\n", i, threadbag[i].started); - } - } - - assert(!failed); - - /* - * Check any results here. Set "failed" and only print output on failure. - */ - failed = 0; - for (i = 1; i <= NUMTHREADS; i++) - { - int fail = 0; - void* result = (void*)0; - - assert(pthread_join(t[i], &result) == 0); - - fail = ((int)(size_t)result != (int) PTHREAD_CANCELED); - - if (fail) - { - fprintf(stderr, "Thread %d: started %d: result %d\n", - i, - threadbag[i].started, - (int)(size_t)result); - } - failed = (failed || fail); - } - - assert(!failed); - - assert(pop_count.i == NUMTHREADS); - - DeleteCriticalSection(&pop_count.cs); - - /* - * Success. - */ - return 0; -} - -#else /* defined(_MSC_VER) || defined(__cplusplus) */ - -int -main() -{ - return 0; -} - -#endif /* defined(_MSC_VER) || defined(__cplusplus) */ diff --git a/platform/win32/msvc/external/pthreads.2/tests/cleanup2.c b/platform/win32/msvc/external/pthreads.2/tests/cleanup2.c deleted file mode 100644 index 6c9e50156b6..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/cleanup2.c +++ /dev/null @@ -1,217 +0,0 @@ -/* - * File: cleanup2.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Test cleanup handler executes (when thread is not canceled). - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - have working pthread_create, pthread_self, pthread_mutex_lock/unlock - * pthread_testcancel, pthread_cancel, pthread_join - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#if defined(_MSC_VER) || defined(__cplusplus) - -#include "test.h" - -/* - * Create NUMTHREADS threads in addition to the Main thread. - */ -enum { - NUMTHREADS = 10 -}; - -typedef struct bag_t_ bag_t; -struct bag_t_ { - int threadnum; - int started; - /* Add more per-thread state variables here */ - int count; -}; - -static bag_t threadbag[NUMTHREADS + 1]; - -typedef struct { - int i; - CRITICAL_SECTION cs; -} sharedInt_t; - -static sharedInt_t pop_count = {0, {0}}; - -static void -increment_pop_count(void * arg) -{ - sharedInt_t * sI = (sharedInt_t *) arg; - - EnterCriticalSection(&sI->cs); - sI->i++; - LeaveCriticalSection(&sI->cs); -} - -void * -mythread(void * arg) -{ - int result = 0; - bag_t * bag = (bag_t *) arg; - - assert(bag == &threadbag[bag->threadnum]); - assert(bag->started == 0); - bag->started = 1; - -#ifdef _MSC_VER -#pragma inline_depth(0) -#endif - pthread_cleanup_push(increment_pop_count, (void *) &pop_count); - - sched_yield(); - - pthread_cleanup_pop(1); -#ifdef _MSC_VER -#pragma inline_depth() -#endif - - return (void *) (size_t)result; -} - -int -main() -{ - int failed = 0; - int i; - pthread_t t[NUMTHREADS + 1]; - - InitializeCriticalSection(&pop_count.cs); - - assert((t[0] = pthread_self()).p != NULL); - - for (i = 1; i <= NUMTHREADS; i++) - { - threadbag[i].started = 0; - threadbag[i].threadnum = i; - assert(pthread_create(&t[i], NULL, mythread, (void *) &threadbag[i]) == 0); - } - - /* - * Code to control or munipulate child threads should probably go here. - */ - Sleep(1000); - - /* - * Standard check that all threads started. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - if (!threadbag[i].started) - { - failed |= !threadbag[i].started; - fprintf(stderr, "Thread %d: started %d\n", i, threadbag[i].started); - } - } - - assert(!failed); - - /* - * Check any results here. Set "failed" and only print output on failure. - */ - failed = 0; - for (i = 1; i <= NUMTHREADS; i++) - { - int fail = 0; - void* result = (void*)0; - - assert(pthread_join(t[i], &result) == 0); - - fail = ((int)(size_t)result != 0); - - if (fail) - { - fprintf(stderr, "Thread %d: started %d: result: %d\n", - i, - threadbag[i].started, - (int)(size_t)result); - } - failed = (failed || fail); - } - - assert(!failed); - - assert(pop_count.i == NUMTHREADS); - - DeleteCriticalSection(&pop_count.cs); - - /* - * Success. - */ - return 0; -} - -#else /* defined(_MSC_VER) || defined(__cplusplus) */ - -int -main() -{ - return 0; -} - -#endif /* defined(_MSC_VER) || defined(__cplusplus) */ diff --git a/platform/win32/msvc/external/pthreads.2/tests/cleanup3.c b/platform/win32/msvc/external/pthreads.2/tests/cleanup3.c deleted file mode 100644 index 0aa945b1702..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/cleanup3.c +++ /dev/null @@ -1,222 +0,0 @@ -/* - * File: cleanup3.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Test cleanup handler does not execute (when thread is - * not canceled). - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - have working pthread_create, pthread_self, pthread_mutex_lock/unlock - * pthread_testcancel, pthread_cancel, pthread_join - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#if defined(_MSC_VER) || defined(__cplusplus) - -#include "test.h" - -/* - * Create NUMTHREADS threads in addition to the Main thread. - */ -enum { - NUMTHREADS = 10 -}; - -typedef struct bag_t_ bag_t; -struct bag_t_ { - int threadnum; - int started; - /* Add more per-thread state variables here */ - int count; -}; - -static bag_t threadbag[NUMTHREADS + 1]; - -typedef struct { - int i; - CRITICAL_SECTION cs; -} sharedInt_t; - -static sharedInt_t pop_count = {0, {0}}; - -static void -increment_pop_count(void * arg) -{ - sharedInt_t * sI = (sharedInt_t *) arg; - - EnterCriticalSection(&sI->cs); - sI->i++; - LeaveCriticalSection(&sI->cs); -} - -void * -mythread(void * arg) -{ - int result = 0; - bag_t * bag = (bag_t *) arg; - - assert(bag == &threadbag[bag->threadnum]); - assert(bag->started == 0); - bag->started = 1; - -#ifdef _MSC_VER -#pragma inline_depth(0) -#endif - pthread_cleanup_push(increment_pop_count, (void *) &pop_count); - - sched_yield(); - - EnterCriticalSection(&pop_count.cs); - pop_count.i--; - LeaveCriticalSection(&pop_count.cs); - - pthread_cleanup_pop(0); -#ifdef _MSC_VER -#pragma inline_depth() -#endif - - return (void *) (size_t)result; -} - -int -main() -{ - int failed = 0; - int i; - pthread_t t[NUMTHREADS + 1]; - - InitializeCriticalSection(&pop_count.cs); - - assert((t[0] = pthread_self()).p != NULL); - - for (i = 1; i <= NUMTHREADS; i++) - { - threadbag[i].started = 0; - threadbag[i].threadnum = i; - assert(pthread_create(&t[i], NULL, mythread, (void *) &threadbag[i]) == 0); - } - - /* - * Code to control or munipulate child threads should probably go here. - */ - Sleep(1000); - - /* - * Standard check that all threads started. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - if (!threadbag[i].started) - { - failed |= !threadbag[i].started; - fprintf(stderr, "Thread %d: started %d\n", i, threadbag[i].started); - } - } - - assert(!failed); - - /* - * Check any results here. Set "failed" and only print output on failure. - */ - failed = 0; - for (i = 1; i <= NUMTHREADS; i++) - { - int fail = 0; - void* result = (void*)0; - - assert(pthread_join(t[i], &result) == 0); - - fail = ((int)(size_t)result != 0); - - if (fail) - { - fprintf(stderr, "Thread %d: started %d: result: %d\n", - i, - threadbag[i].started, - (int)(size_t)result); - } - failed = (failed || fail); - } - - assert(!failed); - - assert(pop_count.i == -(NUMTHREADS)); - - DeleteCriticalSection(&pop_count.cs); - - /* - * Success. - */ - return 0; -} - -#else /* defined(_MSC_VER) || defined(__cplusplus) */ - -int -main() -{ - return 0; -} - -#endif /* defined(_MSC_VER) || defined(__cplusplus) */ diff --git a/platform/win32/msvc/external/pthreads.2/tests/condvar1.c b/platform/win32/msvc/external/pthreads.2/tests/condvar1.c deleted file mode 100644 index 4dcdff02d59..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/condvar1.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - * File: condvar1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Test initialisation and destruction of a CV. - * - * Test Method (Validation or Falsification): - * - Validation - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - Creates and then imediately destroys a CV. Does not - * test the CV. - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - pthread_cond_init returns 0, and - * - pthread_cond_destroy returns 0. - * - Process returns zero exit status. - * - * Fail Criteria: - * - pthread_cond_init returns non-zero, or - * - pthread_cond_destroy returns non-zero. - * - Process returns non-zero exit status. - */ - -#include "test.h" - -static pthread_cond_t cv = NULL; - -int -main() -{ - assert(cv == NULL); - - assert(pthread_cond_init(&cv, NULL) == 0); - - assert(cv != NULL); - - assert(pthread_cond_destroy(&cv) == 0); - - assert(cv == NULL); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/condvar1_1.c b/platform/win32/msvc/external/pthreads.2/tests/condvar1_1.c deleted file mode 100644 index 5cf19e3237c..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/condvar1_1.c +++ /dev/null @@ -1,115 +0,0 @@ -/* - * File: condvar1_1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Test CV linked list management. - * - * Test Method (Validation or Falsification): - * - Validation: - * Initiate and destroy several CVs in random order. - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - Creates and then imediately destroys a CV. Does not - * test the CV. - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - All initialised CVs destroyed without segfault. - * - Successfully broadcasts all remaining CVs after - * each CV is removed. - * - * Fail Criteria: - */ - -#include -#include "test.h" - -enum { - NUM_CV = 100 -}; - -static pthread_cond_t cv[NUM_CV]; - -int -main() -{ - int i, j; - - for (i = 0; i < NUM_CV; i++) - { - /* Traverse the list before every init of a CV. */ - assert(pthread_timechange_handler_np(NULL) == (void *) 0); - assert(pthread_cond_init(&cv[i], NULL) == 0); - } - - j = NUM_CV; - (void) srand((unsigned)time(NULL)); - - do - { - i = (NUM_CV - 1) * rand() / RAND_MAX; - if (cv[i] != NULL) - { - j--; - assert(pthread_cond_destroy(&cv[i]) == 0); - /* Traverse the list every time we remove a CV. */ - assert(pthread_timechange_handler_np(NULL) == (void *) 0); - } - } - while (j > 0); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/condvar1_2.c b/platform/win32/msvc/external/pthreads.2/tests/condvar1_2.c deleted file mode 100644 index 3921287fe6a..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/condvar1_2.c +++ /dev/null @@ -1,124 +0,0 @@ -/* - * File: condvar1_2.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Test CV linked list management and serialisation. - * - * Test Method (Validation or Falsification): - * - Validation: - * Initiate and destroy several CVs in random order. - * Asynchronously traverse the CV list and broadcast. - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - Creates and then imediately destroys a CV. Does not - * test the CV. - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - All initialised CVs destroyed without segfault. - * - Successfully broadcasts all remaining CVs after - * each CV is removed. - * - * Fail Criteria: - */ - -#include -#include "test.h" - -enum { - NUM_CV = 5, - NUM_LOOPS = 5 -}; - -static pthread_cond_t cv[NUM_CV]; - -int -main() -{ - int i, j, k; - void* result = (void*)-1; - pthread_t t; - - for (k = 0; k < NUM_LOOPS; k++) - { - for (i = 0; i < NUM_CV; i++) - { - assert(pthread_cond_init(&cv[i], NULL) == 0); - } - - j = NUM_CV; - (void) srand((unsigned)time(NULL)); - - /* Traverse the list asynchronously. */ - assert(pthread_create(&t, NULL, pthread_timechange_handler_np, NULL) == 0); - - do - { - i = (NUM_CV - 1) * rand() / RAND_MAX; - if (cv[i] != NULL) - { - j--; - assert(pthread_cond_destroy(&cv[i]) == 0); - } - } - while (j > 0); - - assert(pthread_join(t, &result) == 0); - assert ((int)(size_t)result == 0); - } - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/condvar2.c b/platform/win32/msvc/external/pthreads.2/tests/condvar2.c deleted file mode 100644 index 908805c1e77..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/condvar2.c +++ /dev/null @@ -1,125 +0,0 @@ -/* - * File: condvar2.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Test timed wait on a CV. - * - * Test Method (Validation or Falsification): - * - Validation - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - Because the CV is never signaled, we expect the wait to time out. - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - pthread_cond_timedwait returns ETIMEDOUT. - * - Process returns zero exit status. - * - * Fail Criteria: - * - pthread_cond_timedwait does not return ETIMEDOUT. - * - Process returns non-zero exit status. - */ - -#define _WIN32_WINNT 0x400 - -#include "test.h" -#include - -pthread_cond_t cv; -pthread_mutex_t mutex; - -#include "../implement.h" - -int -main() -{ - struct timespec abstime = { 0, 0 }; - PTW32_STRUCT_TIMEB currSysTime; - const DWORD NANOSEC_PER_MILLISEC = 1000000; - - assert(pthread_cond_init(&cv, NULL) == 0); - - assert(pthread_mutex_init(&mutex, NULL) == 0); - - assert(pthread_mutex_lock(&mutex) == 0); - - /* get current system time */ - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = (long)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - - abstime.tv_sec += 1; - - assert(pthread_cond_timedwait(&cv, &mutex, &abstime) == ETIMEDOUT); - - assert(pthread_mutex_unlock(&mutex) == 0); - - { - int result = pthread_cond_destroy(&cv); - if (result != 0) - { - fprintf(stderr, "Result = %s\n", error_string[result]); - fprintf(stderr, "\tWaitersBlocked = %ld\n", cv->nWaitersBlocked); - fprintf(stderr, "\tWaitersGone = %ld\n", cv->nWaitersGone); - fprintf(stderr, "\tWaitersToUnblock = %ld\n", cv->nWaitersToUnblock); - fflush(stderr); - } - assert(result == 0); - } - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/condvar2_1.c b/platform/win32/msvc/external/pthreads.2/tests/condvar2_1.c deleted file mode 100644 index a2ce702648b..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/condvar2_1.c +++ /dev/null @@ -1,153 +0,0 @@ -/* - * File: condvar2_1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Test timeout of multiple waits on a CV with no signal/broadcast. - * - * Test Method (Validation or Falsification): - * - Validation - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - Because the CV is never signaled, we expect the waits to time out. - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - pthread_cond_timedwait returns ETIMEDOUT. - * - Process returns zero exit status. - * - * Fail Criteria: - * - pthread_cond_timedwait does not return ETIMEDOUT. - * - Process returns non-zero exit status. - */ - -#define _WIN32_WINNT 0x400 - -#include "test.h" -#include - -static pthread_cond_t cv; -static pthread_mutex_t mutex; -static struct timespec abstime = { 0, 0 }; - -enum { - NUMTHREADS = 30 -}; - -void * -mythread(void * arg) -{ - assert(pthread_mutex_lock(&mutex) == 0); - - assert(pthread_cond_timedwait(&cv, &mutex, &abstime) == ETIMEDOUT); - - assert(pthread_mutex_unlock(&mutex) == 0); - - return arg; -} - -#include "../implement.h" - -int -main() -{ - int i; - pthread_t t[NUMTHREADS + 1]; - void* result = (void*)0; - PTW32_STRUCT_TIMEB currSysTime; - const DWORD NANOSEC_PER_MILLISEC = 1000000; - - assert(pthread_cond_init(&cv, NULL) == 0); - - assert(pthread_mutex_init(&mutex, NULL) == 0); - - /* get current system time */ - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = (long)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - - abstime.tv_sec += 5; - - assert(pthread_mutex_lock(&mutex) == 0); - - for (i = 1; i <= NUMTHREADS; i++) - { - assert(pthread_create(&t[i], NULL, mythread, (void *)(size_t)i) == 0); - } - - assert(pthread_mutex_unlock(&mutex) == 0); - - for (i = 1; i <= NUMTHREADS; i++) - { - assert(pthread_join(t[i], &result) == 0); - assert((int)(size_t)result == i); - } - - { - int result = pthread_cond_destroy(&cv); - if (result != 0) - { - fprintf(stderr, "Result = %s\n", error_string[result]); - fprintf(stderr, "\tWaitersBlocked = %ld\n", cv->nWaitersBlocked); - fprintf(stderr, "\tWaitersGone = %ld\n", cv->nWaitersGone); - fprintf(stderr, "\tWaitersToUnblock = %ld\n", cv->nWaitersToUnblock); - fflush(stderr); - } - assert(result == 0); - } - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/condvar3.c b/platform/win32/msvc/external/pthreads.2/tests/condvar3.c deleted file mode 100644 index 25aa3870a15..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/condvar3.c +++ /dev/null @@ -1,148 +0,0 @@ -/* - * File: condvar3.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Test basic function of a CV - * - * Test Method (Validation or Falsification): - * - Validation - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - The primary thread takes the lock before creating any threads. - * The secondary thread blocks on the lock allowing the primary - * thread to enter the cv wait state which releases the lock. - * The secondary thread then takes the lock and signals the waiting - * primary thread. - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - pthread_cond_timedwait returns 0. - * - Process returns zero exit status. - * - * Fail Criteria: - * - pthread_cond_timedwait returns ETIMEDOUT. - * - Process returns non-zero exit status. - */ - -#include "test.h" -#include - -static pthread_cond_t cv; -static pthread_mutex_t mutex; -static int shared = 0; - -enum { - NUMTHREADS = 2 /* Including the primary thread. */ -}; - -void * -mythread(void * arg) -{ - int result = 0; - - assert(pthread_mutex_lock(&mutex) == 0); - shared++; - assert(pthread_mutex_unlock(&mutex) == 0); - - if ((result = pthread_cond_signal(&cv)) != 0) - { - printf("Error = %s\n", error_string[result]); - } - assert(result == 0); - - - return (void *) 0; -} - -int -main() -{ - pthread_t t[NUMTHREADS]; - struct timespec abstime = { 0, 0 }; - PTW32_STRUCT_TIMEB currSysTime; - const DWORD NANOSEC_PER_MILLISEC = 1000000; - - assert((t[0] = pthread_self()).p != NULL); - - assert(pthread_cond_init(&cv, NULL) == 0); - - assert(pthread_mutex_init(&mutex, NULL) == 0); - - assert(pthread_mutex_lock(&mutex) == 0); - - /* get current system time */ - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = (long)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - - assert(pthread_create(&t[1], NULL, mythread, (void *) 1) == 0); - - abstime.tv_sec += 5; - - while (! (shared > 0)) - assert(pthread_cond_timedwait(&cv, &mutex, &abstime) == 0); - - assert(shared > 0); - - assert(pthread_mutex_unlock(&mutex) == 0); - - assert(pthread_join(t[1], NULL) == 0); - - assert(pthread_cond_destroy(&cv) == 0); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/condvar3_1.c b/platform/win32/msvc/external/pthreads.2/tests/condvar3_1.c deleted file mode 100644 index 032b263adcc..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/condvar3_1.c +++ /dev/null @@ -1,201 +0,0 @@ -/* - * File: condvar3_1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Test timeout of multiple waits on a CV with some signaled. - * - * Test Method (Validation or Falsification): - * - Validation - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - Because some CVs are never signaled, we expect their waits to time out. - * Some are signaled, the rest time out. Pthread_cond_destroy() will fail - * unless all are accounted for, either signaled or timedout. - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - pthread_cond_timedwait returns ETIMEDOUT. - * - Process returns zero exit status. - * - * Fail Criteria: - * - pthread_cond_timedwait does not return ETIMEDOUT. - * - Process returns non-zero exit status. - */ - -#define _WIN32_WINNT 0x400 - -#include "test.h" -#include - -static pthread_cond_t cv; -static pthread_cond_t cv1; -static pthread_mutex_t mutex; -static pthread_mutex_t mutex1; -static struct timespec abstime = { 0, 0 }; -static int timedout = 0; -static int signaled = 0; -static int awoken = 0; -static int waiting = 0; - -enum { - NUMTHREADS = 30 -}; - -void * -mythread(void * arg) -{ - int result; - - assert(pthread_mutex_lock(&mutex1) == 0); - ++waiting; - assert(pthread_mutex_unlock(&mutex1) == 0); - assert(pthread_cond_signal(&cv1) == 0); - - assert(pthread_mutex_lock(&mutex) == 0); - result = pthread_cond_timedwait(&cv, &mutex, &abstime); - if (result == ETIMEDOUT) - { - timedout++; - } - else - { - awoken++; - } - assert(pthread_mutex_unlock(&mutex) == 0); - - return arg; -} - -#include "../implement.h" - -int -main() -{ - int i; - pthread_t t[NUMTHREADS + 1]; - void* result = (void*)0; - PTW32_STRUCT_TIMEB currSysTime; - const DWORD NANOSEC_PER_MILLISEC = 1000000; - - assert(pthread_cond_init(&cv, NULL) == 0); - assert(pthread_cond_init(&cv1, NULL) == 0); - - assert(pthread_mutex_init(&mutex, NULL) == 0); - assert(pthread_mutex_init(&mutex1, NULL) == 0); - - /* get current system time */ - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = (long)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - - abstime.tv_sec += 5; - - assert(pthread_mutex_lock(&mutex1) == 0); - - for (i = 1; i <= NUMTHREADS; i++) - { - assert(pthread_create(&t[i], NULL, mythread, (void *)(size_t)i) == 0); - } - - do { - assert(pthread_cond_wait(&cv1,&mutex1) == 0); - } while ( NUMTHREADS > waiting ); - - assert(pthread_mutex_unlock(&mutex1) == 0); - - for (i = NUMTHREADS/3; i <= 2*NUMTHREADS/3; i++) - { -// assert(pthread_mutex_lock(&mutex) == 0); - assert(pthread_cond_signal(&cv) == 0); -// assert(pthread_mutex_unlock(&mutex) == 0); - - signaled++; - } - - for (i = 1; i <= NUMTHREADS; i++) - { - assert(pthread_join(t[i], &result) == 0); - assert((int)(size_t)result == i); - } - - fprintf(stderr, "awk = %d\n", awoken); - fprintf(stderr, "sig = %d\n", signaled); - fprintf(stderr, "tot = %d\n", timedout); - - assert(signaled == awoken); - assert(timedout == NUMTHREADS - signaled); - - assert(pthread_cond_destroy(&cv1) == 0); - - { - int result = pthread_cond_destroy(&cv); - if (result != 0) - { - fprintf(stderr, "Result = %s\n", error_string[result]); - fprintf(stderr, "\tWaitersBlocked = %ld\n", cv->nWaitersBlocked); - fprintf(stderr, "\tWaitersGone = %ld\n", cv->nWaitersGone); - fprintf(stderr, "\tWaitersToUnblock = %ld\n", cv->nWaitersToUnblock); - fflush(stderr); - } - assert(result == 0); - } - - assert(pthread_mutex_destroy(&mutex1) == 0); - assert(pthread_mutex_destroy(&mutex) == 0); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/condvar3_2.c b/platform/win32/msvc/external/pthreads.2/tests/condvar3_2.c deleted file mode 100644 index 7cf3a80eb51..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/condvar3_2.c +++ /dev/null @@ -1,193 +0,0 @@ -/* - * File: condvar3_2.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Test timeout of multiple waits on a CV with remainder broadcast awoken. - * - * Test Method (Validation or Falsification): - * - Validation - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - Because some CVs are never signaled, we expect their waits to time out. - * Some time out, the rest are broadcast signaled. Pthread_cond_destroy() will fail - * unless all are accounted for, either signaled or timedout. - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - pthread_cond_timedwait returns ETIMEDOUT. - * - Process returns zero exit status. - * - * Fail Criteria: - * - pthread_cond_timedwait does not return ETIMEDOUT. - * - Process returns non-zero exit status. - */ - -#define _WIN32_WINNT 0x400 - -#include "test.h" -#include - -static pthread_cond_t cv; -static pthread_mutex_t mutex; -static struct timespec abstime = { 0, 0 }; -static struct timespec abstime2 = { 0, 0 }; -static int timedout = 0; -static int awoken = 0; - -enum { - NUMTHREADS = 30 -}; - -void * -mythread(void * arg) -{ - int result; - - assert(pthread_mutex_lock(&mutex) == 0); - - abstime2.tv_sec = abstime.tv_sec; - - if ((int) (size_t)arg % 3 == 0) - { - abstime2.tv_sec += 2; - } - - result = pthread_cond_timedwait(&cv, &mutex, &abstime2); - assert(pthread_mutex_unlock(&mutex) == 0); - if (result == ETIMEDOUT) - { - InterlockedIncrement((LPLONG)&timedout); - } - else - { - InterlockedIncrement((LPLONG)&awoken); - } - - - return arg; -} - -#include "../implement.h" - -int -main() -{ - int i; - pthread_t t[NUMTHREADS + 1]; - void* result = (void*)0; - PTW32_STRUCT_TIMEB currSysTime; - const DWORD NANOSEC_PER_MILLISEC = 1000000; - - assert(pthread_cond_init(&cv, NULL) == 0); - - assert(pthread_mutex_init(&mutex, NULL) == 0); - - /* get current system time */ - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = abstime2.tv_sec = (long)currSysTime.time + 5; - abstime.tv_nsec = abstime2.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - - assert(pthread_mutex_lock(&mutex) == 0); - - for (i = 1; i <= NUMTHREADS; i++) - { - assert(pthread_create(&t[i], NULL, mythread, (void *)(size_t)i) == 0); - } - - assert(pthread_mutex_unlock(&mutex) == 0); - - for (i = 1; i <= NUMTHREADS; i++) - { - assert(pthread_join(t[i], &result) == 0); - assert((int)(size_t)result == i); - /* - * Approximately 2/3rds of the threads are expected to time out. - * Signal the remainder after some threads have woken up and exited - * and while some are still waking up after timeout. - * Also tests that redundant broadcasts don't return errors. - */ - -// assert(pthread_mutex_lock(&mutex) == 0); - - if (InterlockedExchangeAdd((LPLONG)&awoken, 0L) > NUMTHREADS/3) - { - assert(pthread_cond_broadcast(&cv) == 0); - } - -// assert(pthread_mutex_unlock(&mutex) == 0); - - } - - assert(awoken == NUMTHREADS - timedout); - - { - int result = pthread_cond_destroy(&cv); - if (result != 0) - { - fprintf(stderr, "Result = %s\n", error_string[result]); - fprintf(stderr, "\tWaitersBlocked = %ld\n", cv->nWaitersBlocked); - fprintf(stderr, "\tWaitersGone = %ld\n", cv->nWaitersGone); - fprintf(stderr, "\tWaitersToUnblock = %ld\n", cv->nWaitersToUnblock); - fflush(stderr); - } - assert(result == 0); - } - - assert(pthread_mutex_destroy(&mutex) == 0); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/condvar3_3.c b/platform/win32/msvc/external/pthreads.2/tests/condvar3_3.c deleted file mode 100644 index bc8a3e08714..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/condvar3_3.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * File: condvar3_3.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Test timeouts and lost signals on a CV. - * - * Test Method (Validation or Falsification): - * - Validation - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - pthread_cond_timedwait returns ETIMEDOUT. - * - Process returns zero exit status. - * - * Fail Criteria: - * - pthread_cond_timedwait does not return ETIMEDOUT. - * - Process returns non-zero exit status. - */ - -/* Timur Aydin (taydin@snet.net) */ - -#include "test.h" - -#include - -pthread_cond_t cnd; -pthread_mutex_t mtx; - -int main() -{ - int rc; - - struct timespec abstime = { 0, 0 }; - PTW32_STRUCT_TIMEB currSysTime; - const DWORD NANOSEC_PER_MILLISEC = 1000000; - - assert(pthread_cond_init(&cnd, 0) == 0); - assert(pthread_mutex_init(&mtx, 0) == 0); - - /* get current system time */ - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = (long)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - abstime.tv_sec += 1; - - /* Here pthread_cond_timedwait should time out after one second. */ - - assert(pthread_mutex_lock(&mtx) == 0); - - assert((rc = pthread_cond_timedwait(&cnd, &mtx, &abstime)) == ETIMEDOUT); - - assert(pthread_mutex_unlock(&mtx) == 0); - - /* Here, the condition variable is signaled, but there are no - threads waiting on it. The signal should be lost and - the next pthread_cond_timedwait should time out too. */ - -// assert(pthread_mutex_lock(&mtx) == 0); - - assert((rc = pthread_cond_signal(&cnd)) == 0); - -// assert(pthread_mutex_unlock(&mtx) == 0); - - assert(pthread_mutex_lock(&mtx) == 0); - - abstime.tv_sec = (long)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - abstime.tv_sec += 1; - - assert((rc = pthread_cond_timedwait(&cnd, &mtx, &abstime)) == ETIMEDOUT); - - assert(pthread_mutex_unlock(&mtx) == 0); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/condvar4.c b/platform/win32/msvc/external/pthreads.2/tests/condvar4.c deleted file mode 100644 index 81eb36ee736..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/condvar4.c +++ /dev/null @@ -1,169 +0,0 @@ -/* - * File: condvar4.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Test PTHREAD_COND_INITIALIZER. - * - * Test Method (Validation or Falsification): - * - Validation - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - Test basic CV function but starting with a static initialised - * CV. - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - pthread_cond_timedwait returns 0. - * - Process returns zero exit status. - * - * Fail Criteria: - * - pthread_cond_timedwait returns ETIMEDOUT. - * - Process returns non-zero exit status. - */ - -#include "test.h" -#include - -typedef struct cvthing_t_ cvthing_t; - -struct cvthing_t_ { - pthread_cond_t notbusy; - pthread_mutex_t lock; - int shared; -}; - -static cvthing_t cvthing = { - PTHREAD_COND_INITIALIZER, - PTHREAD_MUTEX_INITIALIZER, - 0 -}; - -enum { - NUMTHREADS = 2 -}; - -void * -mythread(void * arg) -{ - assert(pthread_mutex_lock(&cvthing.lock) == 0); - cvthing.shared++; - assert(pthread_mutex_unlock(&cvthing.lock) == 0); - - assert(pthread_cond_signal(&cvthing.notbusy) == 0); - - return (void *) 0; -} - -int -main() -{ - pthread_t t[NUMTHREADS]; - struct timespec abstime = { 0, 0 }; - PTW32_STRUCT_TIMEB currSysTime; - const DWORD NANOSEC_PER_MILLISEC = 1000000; - - cvthing.shared = 0; - - assert((t[0] = pthread_self()).p != NULL); - - assert(cvthing.notbusy == PTHREAD_COND_INITIALIZER); - - assert(cvthing.lock == PTHREAD_MUTEX_INITIALIZER); - - assert(pthread_mutex_lock(&cvthing.lock) == 0); - - assert(cvthing.lock != PTHREAD_MUTEX_INITIALIZER); - - /* get current system time */ - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = (long)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - - abstime.tv_sec += 5; - - assert(pthread_cond_timedwait(&cvthing.notbusy, &cvthing.lock, &abstime) == ETIMEDOUT); - - assert(cvthing.notbusy != PTHREAD_COND_INITIALIZER); - - assert(pthread_create(&t[1], NULL, mythread, (void *) 1) == 0); - - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = (long)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - - abstime.tv_sec += 5; - - while (! (cvthing.shared > 0)) - assert(pthread_cond_timedwait(&cvthing.notbusy, &cvthing.lock, &abstime) == 0); - - assert(cvthing.shared > 0); - - assert(pthread_mutex_unlock(&cvthing.lock) == 0); - - assert(pthread_join(t[1], NULL) == 0); - - assert(pthread_mutex_destroy(&cvthing.lock) == 0); - - assert(cvthing.lock == NULL); - - assert(pthread_cond_destroy(&cvthing.notbusy) == 0); - - assert(cvthing.notbusy == NULL); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/condvar5.c b/platform/win32/msvc/external/pthreads.2/tests/condvar5.c deleted file mode 100644 index f746cc365af..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/condvar5.c +++ /dev/null @@ -1,168 +0,0 @@ -/* - * File: condvar5.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Test pthread_cond_broadcast. - * - * Test Method (Validation or Falsification): - * - Validation - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - Test broadcast with one waiting CV. - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - pthread_cond_timedwait returns 0. - * - Process returns zero exit status. - * - * Fail Criteria: - * - pthread_cond_timedwait returns ETIMEDOUT. - * - Process returns non-zero exit status. - */ - -#include "test.h" -#include - -typedef struct cvthing_t_ cvthing_t; - -struct cvthing_t_ { - pthread_cond_t notbusy; - pthread_mutex_t lock; - int shared; -}; - -static cvthing_t cvthing = { - PTHREAD_COND_INITIALIZER, - PTHREAD_MUTEX_INITIALIZER, - 0 -}; - -enum { - NUMTHREADS = 2 -}; - -void * -mythread(void * arg) -{ - assert(pthread_mutex_lock(&cvthing.lock) == 0); - cvthing.shared++; - assert(pthread_mutex_unlock(&cvthing.lock) == 0); - - assert(pthread_cond_broadcast(&cvthing.notbusy) == 0); - - return (void *) 0; -} - -int -main() -{ - pthread_t t[NUMTHREADS]; - struct timespec abstime = { 0, 0 }; - PTW32_STRUCT_TIMEB currSysTime; - const DWORD NANOSEC_PER_MILLISEC = 1000000; - - cvthing.shared = 0; - - assert((t[0] = pthread_self()).p != NULL); - - assert(cvthing.notbusy == PTHREAD_COND_INITIALIZER); - - assert(cvthing.lock == PTHREAD_MUTEX_INITIALIZER); - - assert(pthread_mutex_lock(&cvthing.lock) == 0); - - assert(cvthing.lock != PTHREAD_MUTEX_INITIALIZER); - - /* get current system time */ - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = (long)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - - abstime.tv_sec += 5; - - assert(pthread_cond_timedwait(&cvthing.notbusy, &cvthing.lock, &abstime) == ETIMEDOUT); - - assert(cvthing.notbusy != PTHREAD_COND_INITIALIZER); - - assert(pthread_create(&t[1], NULL, mythread, (void *) 1) == 0); - - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = (long)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - - abstime.tv_sec += 5; - - while (! (cvthing.shared > 0)) - assert(pthread_cond_timedwait(&cvthing.notbusy, &cvthing.lock, &abstime) == 0); - - assert(cvthing.shared > 0); - - assert(pthread_mutex_unlock(&cvthing.lock) == 0); - - assert(pthread_join(t[1], NULL) == 0); - - assert(pthread_mutex_destroy(&cvthing.lock) == 0); - - assert(cvthing.lock == NULL); - - assert(pthread_cond_destroy(&cvthing.notbusy) == 0); - - assert(cvthing.notbusy == NULL); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/condvar6.c b/platform/win32/msvc/external/pthreads.2/tests/condvar6.c deleted file mode 100644 index 74122283039..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/condvar6.c +++ /dev/null @@ -1,242 +0,0 @@ -/* - * File: condvar6.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Test pthread_cond_broadcast. - * - * Test Method (Validation or Falsification): - * - Validation - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - Test broadcast with NUMTHREADS (=5) waiting CVs. - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" -#include - -/* - * Create NUMTHREADS threads in addition to the Main thread. - */ -enum { - NUMTHREADS = 5 -}; - -typedef struct bag_t_ bag_t; -struct bag_t_ { - int threadnum; - int started; - /* Add more per-thread state variables here */ -}; - -static bag_t threadbag[NUMTHREADS + 1]; - -typedef struct cvthing_t_ cvthing_t; - -struct cvthing_t_ { - pthread_cond_t notbusy; - pthread_mutex_t lock; - int shared; -}; - -static cvthing_t cvthing = { - PTHREAD_COND_INITIALIZER, - PTHREAD_MUTEX_INITIALIZER, - 0 -}; - -static pthread_mutex_t start_flag = PTHREAD_MUTEX_INITIALIZER; - -static struct timespec abstime = { 0, 0 }; - -static int awoken; - -void * -mythread(void * arg) -{ - bag_t * bag = (bag_t *) arg; - - assert(bag == &threadbag[bag->threadnum]); - assert(bag->started == 0); - bag->started = 1; - - /* Wait for the start gun */ - assert(pthread_mutex_lock(&start_flag) == 0); - assert(pthread_mutex_unlock(&start_flag) == 0); - - assert(pthread_mutex_lock(&cvthing.lock) == 0); - - while (! (cvthing.shared > 0)) - assert(pthread_cond_timedwait(&cvthing.notbusy, &cvthing.lock, &abstime) == 0); - - assert(cvthing.shared > 0); - - awoken++; - - assert(pthread_mutex_unlock(&cvthing.lock) == 0); - - return (void *) 0; -} - -int -main() -{ - int failed = 0; - int i; - pthread_t t[NUMTHREADS + 1]; - - PTW32_STRUCT_TIMEB currSysTime; - const DWORD NANOSEC_PER_MILLISEC = 1000000; - - cvthing.shared = 0; - - assert((t[0] = pthread_self()).p != NULL); - - assert(cvthing.notbusy == PTHREAD_COND_INITIALIZER); - - assert(cvthing.lock == PTHREAD_MUTEX_INITIALIZER); - - assert(pthread_mutex_lock(&start_flag) == 0); - - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = (long)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - - abstime.tv_sec += 5; - - assert((t[0] = pthread_self()).p != NULL); - - awoken = 0; - - for (i = 1; i <= NUMTHREADS; i++) - { - threadbag[i].started = 0; - threadbag[i].threadnum = i; - assert(pthread_create(&t[i], NULL, mythread, (void *) &threadbag[i]) == 0); - } - - /* - * Code to control or munipulate child threads should probably go here. - */ - - assert(pthread_mutex_unlock(&start_flag) == 0); - - /* - * Give threads time to start. - */ - Sleep(1000); - - assert(pthread_mutex_lock(&cvthing.lock) == 0); - cvthing.shared++; - assert(pthread_mutex_unlock(&cvthing.lock) == 0); - - assert(pthread_cond_broadcast(&cvthing.notbusy) == 0); - - /* - * Give threads time to complete. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - assert(pthread_join(t[i], NULL) == 0); - } - - /* - * Cleanup the CV. - */ - - assert(pthread_mutex_destroy(&cvthing.lock) == 0); - - assert(cvthing.lock == NULL); - - assert(pthread_cond_destroy(&cvthing.notbusy) == 0); - - assert(cvthing.notbusy == NULL); - - /* - * Standard check that all threads started. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - failed = !threadbag[i].started; - - if (failed) - { - fprintf(stderr, "Thread %d: started %d\n", i, threadbag[i].started); - } - } - - assert(!failed); - - /* - * Check any results here. - */ - - assert(awoken == NUMTHREADS); - - /* - * Success. - */ - return 0; -} - - diff --git a/platform/win32/msvc/external/pthreads.2/tests/condvar7.c b/platform/win32/msvc/external/pthreads.2/tests/condvar7.c deleted file mode 100644 index c1cbd10346f..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/condvar7.c +++ /dev/null @@ -1,257 +0,0 @@ -/* - * File: condvar7.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Test pthread_cond_broadcast with thread cancelation. - * - * Test Method (Validation or Falsification): - * - Validation - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - Test broadcast with NUMTHREADS (=5) waiting CVs, one is canceled while waiting. - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" -#include - -/* - * Create NUMTHREADS threads in addition to the Main thread. - */ -enum { - NUMTHREADS = 5 -}; - -typedef struct bag_t_ bag_t; -struct bag_t_ { - int threadnum; - int started; - /* Add more per-thread state variables here */ -}; - -static bag_t threadbag[NUMTHREADS + 1]; - -typedef struct cvthing_t_ cvthing_t; - -struct cvthing_t_ { - pthread_cond_t notbusy; - pthread_mutex_t lock; - int shared; -}; - -static cvthing_t cvthing = { - PTHREAD_COND_INITIALIZER, - PTHREAD_MUTEX_INITIALIZER, - 0 -}; - -static pthread_mutex_t start_flag = PTHREAD_MUTEX_INITIALIZER; - -static struct timespec abstime = { 0, 0 }; - -static int awoken; - -void * -mythread(void * arg) -{ - bag_t * bag = (bag_t *) arg; - - assert(bag == &threadbag[bag->threadnum]); - assert(bag->started == 0); - bag->started = 1; - - /* Wait for the start gun */ - assert(pthread_mutex_lock(&start_flag) == 0); - assert(pthread_mutex_unlock(&start_flag) == 0); - - assert(pthread_mutex_lock(&cvthing.lock) == 0); - -#ifdef _MSC_VER -#pragma inline_depth(0) -#endif - pthread_cleanup_push(pthread_mutex_unlock, (void *) &cvthing.lock); - - while (! (cvthing.shared > 0)) - assert(pthread_cond_timedwait(&cvthing.notbusy, &cvthing.lock, &abstime) == 0); - - pthread_cleanup_pop(0); -#ifdef _MSC_VER -#pragma inline_depth() -#endif - - assert(cvthing.shared > 0); - - awoken++; - - assert(pthread_mutex_unlock(&cvthing.lock) == 0); - - return (void *) 0; -} - -int -main() -{ - int failed = 0; - int i; - pthread_t t[NUMTHREADS + 1]; - - PTW32_STRUCT_TIMEB currSysTime; - const DWORD NANOSEC_PER_MILLISEC = 1000000; - - cvthing.shared = 0; - - assert((t[0] = pthread_self()).p != NULL); - - assert(cvthing.notbusy == PTHREAD_COND_INITIALIZER); - - assert(cvthing.lock == PTHREAD_MUTEX_INITIALIZER); - - assert(pthread_mutex_lock(&start_flag) == 0); - - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = (time_t)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - - abstime.tv_sec += 10; - - assert((t[0] = pthread_self()).p != NULL); - - awoken = 0; - - for (i = 1; i <= NUMTHREADS; i++) - { - threadbag[i].started = 0; - threadbag[i].threadnum = i; - assert(pthread_create(&t[i], NULL, mythread, (void *) &threadbag[i]) == 0); - } - - /* - * Code to control or munipulate child threads should probably go here. - */ - - assert(pthread_mutex_unlock(&start_flag) == 0); - - /* - * Give threads time to start. - */ - Sleep(1000); - - /* - * Cancel one of the threads. - */ - assert(pthread_cancel(t[1]) == 0); - assert(pthread_join(t[1], NULL) == 0); - - assert(pthread_mutex_lock(&cvthing.lock) == 0); - cvthing.shared++; - assert(pthread_mutex_unlock(&cvthing.lock) == 0); - - /* - * Signal all remaining waiting threads. - */ - assert(pthread_cond_broadcast(&cvthing.notbusy) == 0); - - /* - * Wait for all threads to complete. - */ - for (i = 2; i <= NUMTHREADS; i++) - assert(pthread_join(t[i], NULL) == 0); - - /* - * Cleanup the CV. - */ - - assert(pthread_mutex_destroy(&cvthing.lock) == 0); - - assert(cvthing.lock == NULL); - - assert(pthread_cond_destroy(&cvthing.notbusy) == 0); - - assert(cvthing.notbusy == NULL); - - /* - * Standard check that all threads started. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - failed = !threadbag[i].started; - - if (failed) - { - fprintf(stderr, "Thread %d: started %d\n", i, threadbag[i].started); - } - } - - assert(!failed); - - /* - * Check any results here. - */ - - assert(awoken == (NUMTHREADS - 1)); - - /* - * Success. - */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/condvar8.c b/platform/win32/msvc/external/pthreads.2/tests/condvar8.c deleted file mode 100644 index 676106fb233..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/condvar8.c +++ /dev/null @@ -1,258 +0,0 @@ -/* - * File: condvar8.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Test multiple pthread_cond_broadcasts. - * - * Test Method (Validation or Falsification): - * - Validation - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - Make NUMTHREADS threads wait on CV, broadcast signal them, and then repeat. - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" -#include - -/* - * Create NUMTHREADS threads in addition to the Main thread. - */ -enum { - NUMTHREADS = 5 -}; - -typedef struct bag_t_ bag_t; -struct bag_t_ { - int threadnum; - int started; - /* Add more per-thread state variables here */ -}; - -static bag_t threadbag[NUMTHREADS + 1]; - -typedef struct cvthing_t_ cvthing_t; - -struct cvthing_t_ { - pthread_cond_t notbusy; - pthread_mutex_t lock; - int shared; -}; - -static cvthing_t cvthing = { - PTHREAD_COND_INITIALIZER, - PTHREAD_MUTEX_INITIALIZER, - 0 -}; - -static pthread_mutex_t start_flag = PTHREAD_MUTEX_INITIALIZER; - -static struct timespec abstime = { 0, 0 }; - -static int awoken; - -static void * -mythread(void * arg) -{ - bag_t * bag = (bag_t *) arg; - - assert(bag == &threadbag[bag->threadnum]); - assert(bag->started == 0); - bag->started = 1; - - /* Wait for the start gun */ - assert(pthread_mutex_lock(&start_flag) == 0); - assert(pthread_mutex_unlock(&start_flag) == 0); - - assert(pthread_mutex_lock(&cvthing.lock) == 0); - -#ifdef _MSC_VER -#pragma inline_depth(0) -#endif - pthread_cleanup_push(pthread_mutex_unlock, (void *) &cvthing.lock); - - while (! (cvthing.shared > 0)) - assert(pthread_cond_timedwait(&cvthing.notbusy, &cvthing.lock, &abstime) == 0); - - pthread_cleanup_pop(0); -#ifdef _MSC_VER -#pragma inline_depth() -#endif - - assert(cvthing.shared > 0); - - awoken++; - - assert(pthread_mutex_unlock(&cvthing.lock) == 0); - - return (void *) 0; -} - -int -main() -{ - int failed = 0; - int i; - int first, last; - pthread_t t[NUMTHREADS + 1]; - - PTW32_STRUCT_TIMEB currSysTime; - const DWORD NANOSEC_PER_MILLISEC = 1000000; - - assert((t[0] = pthread_self()).p != NULL); - - assert(cvthing.notbusy == PTHREAD_COND_INITIALIZER); - - assert(cvthing.lock == PTHREAD_MUTEX_INITIALIZER); - - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = (long)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - - abstime.tv_sec += 10; - - assert((t[0] = pthread_self()).p != NULL); - - awoken = 0; - - for (first = 1, last = NUMTHREADS / 2; - first < NUMTHREADS; - first = last + 1, last = NUMTHREADS) - { - assert(pthread_mutex_lock(&start_flag) == 0); - - for (i = first; i <= last; i++) - { - threadbag[i].started = 0; - threadbag[i].threadnum = i; - assert(pthread_create(&t[i], NULL, mythread, (void *) &threadbag[i]) == 0); - } - - /* - * Code to control or munipulate child threads should probably go here. - */ - cvthing.shared = 0; - - assert(pthread_mutex_unlock(&start_flag) == 0); - - /* - * Give threads time to start. - */ - Sleep(100); - - assert(pthread_mutex_lock(&cvthing.lock) == 0); - cvthing.shared++; - assert(pthread_mutex_unlock(&cvthing.lock) == 0); - - assert(pthread_cond_broadcast(&cvthing.notbusy) == 0); - - /* - * Give threads time to complete. - */ - for (i = first; i <= last; i++) - { - assert(pthread_join(t[i], NULL) == 0); - } - - assert(awoken == (i - 1)); - } - - - /* - * Standard check that all threads started. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - failed = !threadbag[i].started; - - if (failed) - { - fprintf(stderr, "Thread %d: started %d\n", i, threadbag[i].started); - } - } - - /* - * Cleanup the CV. - */ - - assert(pthread_mutex_destroy(&cvthing.lock) == 0); - - assert(cvthing.lock == NULL); - - assert(pthread_cond_destroy(&cvthing.notbusy) == 0); - - assert(cvthing.notbusy == NULL); - - assert(!failed); - - /* - * Check any results here. - */ - - assert(awoken == NUMTHREADS); - - /* - * Success. - */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/condvar9.c b/platform/win32/msvc/external/pthreads.2/tests/condvar9.c deleted file mode 100644 index 529509be761..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/condvar9.c +++ /dev/null @@ -1,267 +0,0 @@ -/* - * File: condvar9.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Test multiple pthread_cond_broadcasts with thread cancelation. - * - * Test Method (Validation or Falsification): - * - Validation - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - Make NUMTHREADS threads wait on CV, cancel one, broadcast signal them, - * and then repeat. - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" -#include - -/* - * Create NUMTHREADS threads in addition to the Main thread. - */ -enum { - NUMTHREADS = 9 -}; - -typedef struct bag_t_ bag_t; -struct bag_t_ { - int threadnum; - int started; - int finished; - /* Add more per-thread state variables here */ -}; - -static bag_t threadbag[NUMTHREADS + 1]; - -typedef struct cvthing_t_ cvthing_t; - -struct cvthing_t_ { - pthread_cond_t notbusy; - pthread_mutex_t lock; - int shared; -}; - -static cvthing_t cvthing = { - PTHREAD_COND_INITIALIZER, - PTHREAD_MUTEX_INITIALIZER, - 0 -}; - -static pthread_mutex_t start_flag = PTHREAD_MUTEX_INITIALIZER; - -static struct timespec abstime = { 0, 0 }; - -static int awoken; - -static void * -mythread(void * arg) -{ - bag_t * bag = (bag_t *) arg; - - assert(bag == &threadbag[bag->threadnum]); - assert(bag->started == 0); - bag->started = 1; - - /* Wait for the start gun */ - assert(pthread_mutex_lock(&start_flag) == 0); - assert(pthread_mutex_unlock(&start_flag) == 0); - - assert(pthread_mutex_lock(&cvthing.lock) == 0); - - /* - * pthread_cond_timedwait is a cancelation point and we're - * going to cancel some threads deliberately. - */ -#ifdef _MSC_VER -#pragma inline_depth(0) -#endif - pthread_cleanup_push(pthread_mutex_unlock, (void *) &cvthing.lock); - - while (! (cvthing.shared > 0)) - assert(pthread_cond_timedwait(&cvthing.notbusy, &cvthing.lock, &abstime) == 0); - - pthread_cleanup_pop(0); -#ifdef _MSC_VER -#pragma inline_depth() -#endif - - assert(cvthing.shared > 0); - - awoken++; - bag->finished = 1; - - assert(pthread_mutex_unlock(&cvthing.lock) == 0); - - return (void *) 0; -} - -int -main() -{ - int failed = 0; - int i; - int first, last; - int canceledThreads = 0; - pthread_t t[NUMTHREADS + 1]; - - PTW32_STRUCT_TIMEB currSysTime; - const DWORD NANOSEC_PER_MILLISEC = 1000000; - - assert((t[0] = pthread_self()).p != NULL); - - assert(cvthing.notbusy == PTHREAD_COND_INITIALIZER); - - assert(cvthing.lock == PTHREAD_MUTEX_INITIALIZER); - - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = (long)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - - abstime.tv_sec += 5; - - assert((t[0] = pthread_self()).p != NULL); - - awoken = 0; - - for (first = 1, last = NUMTHREADS / 2; - first < NUMTHREADS; - first = last + 1, last = NUMTHREADS) - { - int ct; - - assert(pthread_mutex_lock(&start_flag) == 0); - - for (i = first; i <= last; i++) - { - threadbag[i].started = threadbag[i].finished = 0; - threadbag[i].threadnum = i; - assert(pthread_create(&t[i], NULL, mythread, (void *) &threadbag[i]) == 0); - } - - /* - * Code to control or munipulate child threads should probably go here. - */ - cvthing.shared = 0; - - assert(pthread_mutex_unlock(&start_flag) == 0); - - /* - * Give threads time to start. - */ - Sleep(1000); - - ct = (first + last) / 2; - assert(pthread_cancel(t[ct]) == 0); - canceledThreads++; - assert(pthread_join(t[ct], NULL) == 0); - - assert(pthread_mutex_lock(&cvthing.lock) == 0); - cvthing.shared++; - assert(pthread_mutex_unlock(&cvthing.lock) == 0); - - assert(pthread_cond_broadcast(&cvthing.notbusy) == 0); - - /* - * Standard check that all threads started - and wait for them to finish. - */ - for (i = first; i <= last; i++) - { - failed = !threadbag[i].started; - - if (failed) - { - fprintf(stderr, "Thread %d: started %d\n", i, threadbag[i].started); - } - else - { - assert(pthread_join(t[i], NULL) == 0 || threadbag[i].finished == 0); -// fprintf(stderr, "Thread %d: finished %d\n", i, threadbag[i].finished); - } - } - } - - /* - * Cleanup the CV. - */ - - assert(pthread_mutex_destroy(&cvthing.lock) == 0); - - assert(cvthing.lock == NULL); - - assert_e(pthread_cond_destroy(&cvthing.notbusy), ==, 0); - - assert(cvthing.notbusy == NULL); - - assert(!failed); - - /* - * Check any results here. - */ - - assert(awoken == NUMTHREADS - canceledThreads); - - /* - * Success. - */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/context1.c b/platform/win32/msvc/external/pthreads.2/tests/context1.c deleted file mode 100644 index db38ec3a1c0..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/context1.c +++ /dev/null @@ -1,142 +0,0 @@ -/* - * File: context1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Test context switching method. - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - pthread_create - * pthread_exit - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#define _WIN32_WINNT 0x400 - -#include "test.h" -#include "../implement.h" -#include "../context.h" - -static int washere = 0; - -static void * func(void * arg) -{ - washere = 1; - - Sleep(1000); - - return 0; -} - -static void -anotherEnding () -{ - /* - * Switched context - */ - washere++; - - pthread_exit(0); -} - -int -main() -{ - pthread_t t; - HANDLE hThread; - - assert(pthread_create(&t, NULL, func, NULL) == 0); - - hThread = ((ptw32_thread_t *)t.p)->threadH; - - Sleep(500); - - SuspendThread(hThread); - - if (WaitForSingleObject(hThread, 0) == WAIT_TIMEOUT) - { - /* - * Ok, thread did not exit before we got to it. - */ - CONTEXT context; - - context.ContextFlags = CONTEXT_CONTROL; - - GetThreadContext(hThread, &context); - PTW32_PROGCTR (context) = (DWORD_PTR) anotherEnding; - SetThreadContext(hThread, &context); - ResumeThread(hThread); - } - else - { - printf("Exited early\n"); - fflush(stdout); - } - - Sleep(1000); - - assert(washere == 2); - - return 0; -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/count1.c b/platform/win32/msvc/external/pthreads.2/tests/count1.c deleted file mode 100644 index d1508ccae4e..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/count1.c +++ /dev/null @@ -1,90 +0,0 @@ -/* - * count1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Description: - * Test some basic assertions about the number of threads at runtime. - */ - -#include "test.h" - -#define NUMTHREADS (30) - -static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; -static pthread_t threads[NUMTHREADS]; -static unsigned numThreads = 0; - -void * -myfunc(void *arg) -{ - pthread_mutex_lock(&lock); - numThreads++; - pthread_mutex_unlock(&lock); - - Sleep(1000); - return 0; -} -int -main() -{ - int i; - int maxThreads = sizeof(threads) / sizeof(pthread_t); - - /* - * Spawn NUMTHREADS threads. Each thread should increment the - * numThreads variable, sleep for one second. - */ - for (i = 0; i < maxThreads; i++) - { - assert(pthread_create(&threads[i], NULL, myfunc, 0) == 0); - } - - /* - * Wait for all the threads to exit. - */ - for (i = 0; i < maxThreads; i++) - { - assert(pthread_join(threads[i], NULL) == 0); - } - - /* - * Check the number of threads created. - */ - assert((int) numThreads == maxThreads); - - /* - * Success. - */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/create1.c b/platform/win32/msvc/external/pthreads.2/tests/create1.c deleted file mode 100644 index 61fc9be356e..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/create1.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - * create1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Description: - * Create a thread and check that it ran. - * - * Depends on API functions: None. - */ - -#include "test.h" - -static int washere = 0; - -void * func(void * arg) -{ - washere = 1; - return 0; -} - -int -main() -{ - pthread_t t; - - assert(pthread_create(&t, NULL, func, NULL) == 0); - - /* A dirty hack, but we cannot rely on pthread_join in this - primitive test. */ - Sleep(2000); - - assert(washere == 1); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/create2.c b/platform/win32/msvc/external/pthreads.2/tests/create2.c deleted file mode 100644 index b622f970a7d..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/create2.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * File: create2.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Test that threads have a Win32 handle when started. - * - * Test Method (Validation or Falsification): - * - Statistical, not absolute (depends on sample size). - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" - -enum { - NUMTHREADS = 10000 -}; - -static int washere = 0; - -void * func(void * arg) -{ - washere = 1; - return (void *) 0; -} - -int -main() -{ - pthread_t t; - pthread_attr_t attr; - void * result = NULL; - int i; - - pthread_attr_init(&attr); - pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); - - for (i = 0; i < NUMTHREADS; i++) - { - washere = 0; - assert(pthread_create(&t, &attr, func, NULL) == 0); - assert(pthread_join(t, &result) == 0); - assert((int)(size_t)result == 0); - assert(washere == 1); - } - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/create3.c b/platform/win32/msvc/external/pthreads.2/tests/create3.c deleted file mode 100644 index 94da1001112..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/create3.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * File: create3.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Test passing arg to thread function. - * - * Test Method (Validation or Falsification): - * - Statistical, not absolute (depends on sample size). - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" - -enum { - NUMTHREADS = 10000 -}; - -static int washere = 0; - -void * func(void * arg) -{ - washere = (int)(size_t)arg; - return (void *) 0; -} - -int -main() -{ - pthread_t t; - pthread_attr_t attr; - void * result = NULL; - int i; - - pthread_attr_init(&attr); - pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); - - for (i = 0; i < NUMTHREADS; i++) - { - washere = 0; - assert(pthread_create(&t, &attr, func, (void *)(size_t)1) == 0); - assert(pthread_join(t, &result) == 0); - assert((int)(size_t)result == 0); - assert(washere == 1); - } - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/delay1.c b/platform/win32/msvc/external/pthreads.2/tests/delay1.c deleted file mode 100644 index aaf58d8f913..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/delay1.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * delay1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Depends on API functions: - * pthread_delay_np - */ - -#include "test.h" - -int -main(int argc, char * argv[]) -{ - struct timespec interval = {1L, 500000000L}; - - assert(pthread_delay_np(&interval) == 0); - - return 0; -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/delay2.c b/platform/win32/msvc/external/pthreads.2/tests/delay2.c deleted file mode 100644 index 79637f6c17d..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/delay2.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * delay1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Depends on API functions: - * pthread_delay_np - */ - -#include "test.h" - -pthread_mutex_t mx = PTHREAD_MUTEX_INITIALIZER; - -void * -func(void * arg) -{ - struct timespec interval = {5, 500000000L}; - - assert(pthread_mutex_lock(&mx) == 0); - -#ifdef _MSC_VER -#pragma inline_depth(0) -#endif - pthread_cleanup_push(pthread_mutex_unlock, &mx); - assert(pthread_delay_np(&interval) == 0); - pthread_cleanup_pop(1); -#ifdef _MSC_VER -#pragma inline_depth() -#endif - - return (void *)(size_t)1; -} - -int -main(int argc, char * argv[]) -{ - pthread_t t; - void* result = (void*)0; - - assert(pthread_mutex_lock(&mx) == 0); - - assert(pthread_create(&t, NULL, func, NULL) == 0); - assert(pthread_cancel(t) == 0); - - assert(pthread_mutex_unlock(&mx) == 0); - - assert(pthread_join(t, &result) == 0); - assert(result == (void*)PTHREAD_CANCELED); - - return 0; -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/detach1.c b/platform/win32/msvc/external/pthreads.2/tests/detach1.c deleted file mode 100644 index cb3bcc85454..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/detach1.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Test for pthread_detach(). - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Depends on API functions: pthread_create(), pthread_detach(), pthread_exit(). - */ - -#include "test.h" - - -enum { - NUMTHREADS = 100 -}; - -void * -func(void * arg) -{ - int i = (int)(size_t)arg; - - Sleep(i * 10); - - pthread_exit(arg); - - /* Never reached. */ - exit(1); -} - -int -main(int argc, char * argv[]) -{ - pthread_t id[NUMTHREADS]; - int i; - - /* Create a few threads and then exit. */ - for (i = 0; i < NUMTHREADS; i++) - { - assert(pthread_create(&id[i], NULL, func, (void *)(size_t)i) == 0); - } - - /* Some threads will finish before they are detached, some after. */ - Sleep(NUMTHREADS/2 * 10 + 50); - - for (i = 0; i < NUMTHREADS; i++) - { - assert(pthread_detach(id[i]) == 0); - } - - Sleep(NUMTHREADS * 10 + 100); - - /* - * Check that all threads are now invalid. - * This relies on unique thread IDs - e.g. works with - * pthreads-w32 or Solaris, but may not work for Linux, BSD etc. - */ - for (i = 0; i < NUMTHREADS; i++) - { - assert(pthread_kill(id[i], 0) == ESRCH); - } - - /* Success. */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/equal1.c b/platform/win32/msvc/external/pthreads.2/tests/equal1.c deleted file mode 100644 index 01639d97cd2..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/equal1.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Test for pthread_equal. - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Depends on functions: pthread_create(). - */ - -#include "test.h" - -void * func(void * arg) -{ - Sleep(2000); - return 0; -} - -int -main() -{ - pthread_t t1, t2; - - assert(pthread_create(&t1, NULL, func, (void *) 1) == 0); - - assert(pthread_create(&t2, NULL, func, (void *) 2) == 0); - - assert(pthread_equal(t1, t2) == 0); - - assert(pthread_equal(t1,t1) != 0); - - /* This is a hack. We don't want to rely on pthread_join - yet if we can help it. */ - Sleep(4000); - - /* Success. */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/errno1.c b/platform/win32/msvc/external/pthreads.2/tests/errno1.c deleted file mode 100644 index 7f10cb084c1..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/errno1.c +++ /dev/null @@ -1,177 +0,0 @@ -/* - * File: errno1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Test thread-safety of errno - * - - * - * Test Method (Validation or Falsification): - * - Validation - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" - -/* - * Create NUMTHREADS threads in addition to the Main thread. - */ -enum { - NUMTHREADS = 3 -}; - -typedef struct bag_t_ bag_t; -struct bag_t_ { - int threadnum; - int started; - /* Add more per-thread state variables here */ -}; - -static bag_t threadbag[NUMTHREADS + 1]; - -pthread_mutex_t stop_here = PTHREAD_MUTEX_INITIALIZER; - -void * -mythread(void * arg) -{ - bag_t * bag = (bag_t *) arg; - - assert(bag == &threadbag[bag->threadnum]); - assert(bag->started == 0); - bag->started = 1; - - errno = bag->threadnum; - - Sleep(1000); - - pthread_mutex_lock(&stop_here); - - assert(errno == bag->threadnum); - - pthread_mutex_unlock(&stop_here); - - Sleep(1000); - - return 0; -} - -int -main() -{ - int failed = 0; - int i; - pthread_t t[NUMTHREADS + 1]; - - pthread_mutex_lock(&stop_here); - errno = 0; - - assert((t[0] = pthread_self()).p != NULL); - - for (i = 1; i <= NUMTHREADS; i++) - { - threadbag[i].started = 0; - threadbag[i].threadnum = i; - assert(pthread_create(&t[i], NULL, mythread, (void *) &threadbag[i]) == 0); - } - - /* - * Code to control or munipulate child threads should probably go here. - */ - Sleep(2000); - pthread_mutex_unlock(&stop_here); - - /* - * Give threads time to run. - */ - Sleep(NUMTHREADS * 1000); - - /* - * Standard check that all threads started. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - failed = !threadbag[i].started; - - if (failed) - { - fprintf(stderr, "Thread %d: started %d\n", i, threadbag[i].started); - } - } - - assert(!failed); - - /* - * Check any results here. Set "failed" and only print ouput on failure. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - /* ... */ - } - - assert(!failed); - - /* - * Success. - */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/exception1.c b/platform/win32/msvc/external/pthreads.2/tests/exception1.c deleted file mode 100644 index ffca4957669..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/exception1.c +++ /dev/null @@ -1,263 +0,0 @@ -/* - * File: exception1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Test passing of exceptions back to the application. - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - have working pthread_create, pthread_self, pthread_mutex_lock/unlock - * pthread_testcancel, pthread_cancel, pthread_join - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#if defined(_MSC_VER) || defined(__cplusplus) - -#include "test.h" - -/* - * Create NUMTHREADS threads in addition to the Main thread. - */ -enum { - NUMTHREADS = 4 -}; - -void * -exceptionedThread(void * arg) -{ - int dummy = 0; - void* result = (void*)((int)(size_t)PTHREAD_CANCELED + 1); - /* Set to async cancelable */ - - assert(pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL) == 0); - - assert(pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL) == 0); - - Sleep(100); - -#if defined(_MSC_VER) && !defined(__cplusplus) - __try - { - int zero = (int) (size_t)arg; /* Passed in from arg to avoid compiler error */ - int one = 1; - /* - * The deliberate exception condition (zero divide) is - * in an "if" to avoid being optimised out. - */ - if (dummy == one/zero) - Sleep(0); - } - __except (EXCEPTION_EXECUTE_HANDLER) - { - /* Should get into here. */ - result = (void*)((int)(size_t)PTHREAD_CANCELED + 2); - } -#elif defined(__cplusplus) - try - { - /* - * I had a zero divide exception here but it - * wasn't being caught by the catch(...) - * below under Mingw32. That could be a problem. - */ - throw dummy; - } -#if defined(PtW32CatchAll) - PtW32CatchAll -#else - catch (...) -#endif - { - /* Should get into here. */ - result = (void*)((int)(size_t)PTHREAD_CANCELED + 2); - } -#endif - - return (void *) (size_t)result; -} - -void * -canceledThread(void * arg) -{ - void* result = (void*)((int)(size_t)PTHREAD_CANCELED + 1); - int count; - - /* Set to async cancelable */ - - assert(pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL) == 0); - - assert(pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL) == 0); - -#if defined(_MSC_VER) && !defined(__cplusplus) - __try - { - /* - * We wait up to 10 seconds, waking every 0.1 seconds, - * for a cancelation to be applied to us. - */ - for (count = 0; count < 100; count++) - Sleep(100); - } - __except (EXCEPTION_EXECUTE_HANDLER) - { - /* Should NOT get into here. */ - result = (void*)((int)(size_t)PTHREAD_CANCELED + 2); - } -#elif defined(__cplusplus) - try - { - /* - * We wait up to 10 seconds, waking every 0.1 seconds, - * for a cancelation to be applied to us. - */ - for (count = 0; count < 100; count++) - Sleep(100); - } -#if defined(PtW32CatchAll) - PtW32CatchAll -#else - catch (...) -#endif - { - /* Should NOT get into here. */ - result = (void*)((int)(size_t)PTHREAD_CANCELED + 2); - } -#endif - - return (void *) (size_t)result; -} - -int -main() -{ - int failed = 0; - int i; - pthread_t mt; - pthread_t et[NUMTHREADS]; - pthread_t ct[NUMTHREADS]; - - assert((mt = pthread_self()).p != NULL); - - for (i = 0; i < NUMTHREADS; i++) - { - assert(pthread_create(&et[i], NULL, exceptionedThread, (void *) 0) == 0); - assert(pthread_create(&ct[i], NULL, canceledThread, NULL) == 0); - } - - /* - * Code to control or munipulate child threads should probably go here. - */ - Sleep(1000); - - for (i = 0; i < NUMTHREADS; i++) - { - assert(pthread_cancel(ct[i]) == 0); - } - - /* - * Give threads time to run. - */ - Sleep(NUMTHREADS * 1000); - - /* - * Check any results here. Set "failed" and only print output on failure. - */ - failed = 0; - for (i = 0; i < NUMTHREADS; i++) - { - int fail = 0; - void* result = (void*)0; - - /* Canceled thread */ - assert(pthread_join(ct[i], &result) == 0); - assert(!(fail = (result != PTHREAD_CANCELED))); - - failed = (failed || fail); - - /* Exceptioned thread */ - assert(pthread_join(et[i], &result) == 0); - assert(!(fail = (result != (void*)((int)(size_t)PTHREAD_CANCELED + 2)))); - - failed = (failed || fail); - } - - assert(!failed); - - /* - * Success. - */ - return 0; -} - -#else /* defined(_MSC_VER) || defined(__cplusplus) */ - -#include - -int -main() -{ - fprintf(stderr, "Test N/A for this compiler environment.\n"); - return 0; -} - -#endif /* defined(_MSC_VER) || defined(__cplusplus) */ diff --git a/platform/win32/msvc/external/pthreads.2/tests/exception2.c b/platform/win32/msvc/external/pthreads.2/tests/exception2.c deleted file mode 100644 index d2ab8199e30..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/exception2.c +++ /dev/null @@ -1,158 +0,0 @@ -/* - * File: exception2.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Test passing of exceptions out of thread scope. - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - have working pthread_create, pthread_self, pthread_mutex_lock/unlock - * pthread_testcancel, pthread_cancel - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - - -#if defined(_MSC_VER) || defined(__cplusplus) - -#if defined(_MSC_VER) && defined(__cplusplus) -#include -#elif defined(__cplusplus) -#include -#endif - -#ifdef __GNUC__ -#include -#endif - -#include "test.h" - -/* - * Create NUMTHREADS threads in addition to the Main thread. - */ -enum { - NUMTHREADS = 1 -}; - - -void * -exceptionedThread(void * arg) -{ - int dummy = 0x1; - -#if defined(_MSC_VER) && !defined(__cplusplus) - - RaiseException(dummy, 0, 0, NULL); - -#elif defined(__cplusplus) - - throw dummy; - -#endif - - return (void *) 100; -} - -int -main(int argc, char* argv[]) -{ - int i; - pthread_t mt; - pthread_t et[NUMTHREADS]; - - if (argc <= 1) - { - int result; - - printf("You should see an \"abnormal termination\" message\n"); - fflush(stdout); - result = system("exception2.exe die"); - exit(0); - } - - assert((mt = pthread_self()).p != NULL); - - for (i = 0; i < NUMTHREADS; i++) - { - assert(pthread_create(&et[i], NULL, exceptionedThread, NULL) == 0); - } - - Sleep(1000); - - /* - * Success. - */ - return 0; -} - -#else /* defined(_MSC_VER) || defined(__cplusplus) */ - -#include - -int -main() -{ - fprintf(stderr, "Test N/A for this compiler environment.\n"); - return 0; -} - -#endif /* defined(_MSC_VER) || defined(__cplusplus) */ diff --git a/platform/win32/msvc/external/pthreads.2/tests/exception3.c b/platform/win32/msvc/external/pthreads.2/tests/exception3.c deleted file mode 100644 index e2d9762c83a..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/exception3.c +++ /dev/null @@ -1,183 +0,0 @@ -/* - * File: exception3.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Test running of user supplied terminate() function. - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - have working pthread_create, pthread_self, pthread_mutex_lock/unlock - * pthread_testcancel, pthread_cancel - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" - -#if defined(__cplusplus) - -#if defined(_MSC_VER) -# include -#else -# if defined(__GNUC__) && __GNUC__ < 3 -# include -# else -# include - using std::set_terminate; -# endif -#endif - -/* - * Create NUMTHREADS threads in addition to the Main thread. - */ -enum { - NUMTHREADS = 1 -}; - -int caught = 0; -pthread_mutex_t caughtLock; - -void -terminateFunction () -{ - assert(pthread_mutex_lock(&caughtLock) == 0); - caught++; -#if 0 - { - FILE * fp = fopen("pthread.log", "a"); - fprintf(fp, "Caught = %d\n", caught); - fclose(fp); - } -#endif - assert(pthread_mutex_unlock(&caughtLock) == 0); - - /* - * Notes from the MSVC++ manual: - * 1) A term_func() should call exit(), otherwise - * abort() will be called on return to the caller. - * abort() raises SIGABRT. The default signal handler - * for all signals terminates the calling program with - * exit code 3. - * 2) A term_func() must not throw an exception. Dev: Therefore - * term_func() should not call pthread_exit() if an - * exception-using version of pthreads-win32 library - * is being used (i.e. either pthreadVCE or pthreadVSE). - */ - exit(0); -} - -void * -exceptionedThread(void * arg) -{ - int dummy = 0x1; - - (void) set_terminate(&terminateFunction); - - throw dummy; - - return (void *) 0; -} - -int -main() -{ - int i; - pthread_t mt; - pthread_t et[NUMTHREADS]; - pthread_mutexattr_t ma; - - assert((mt = pthread_self()).p != NULL); - - printf("See the notes inside of exception3.c re term_funcs.\n"); - - assert(pthread_mutexattr_init(&ma) == 0); - assert(pthread_mutexattr_settype(&ma, PTHREAD_MUTEX_ERRORCHECK) == 0); - assert(pthread_mutex_init(&caughtLock, &ma) == 0); - assert(pthread_mutexattr_destroy(&ma) == 0); - - for (i = 0; i < NUMTHREADS; i++) - { - assert(pthread_create(&et[i], NULL, exceptionedThread, NULL) == 0); - } - - Sleep(NUMTHREADS * 100); - - assert(caught == NUMTHREADS); - - /* - * Success. - */ - return 0; -} - -#else /* defined(__cplusplus) */ - -#include - -int -main() -{ - fprintf(stderr, "Test N/A for this compiler environment.\n"); - return 0; -} - -#endif /* defined(__cplusplus) */ diff --git a/platform/win32/msvc/external/pthreads.2/tests/exit1.c b/platform/win32/msvc/external/pthreads.2/tests/exit1.c deleted file mode 100644 index 715aedd0c08..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/exit1.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Test for pthread_exit(). - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Depends on API functions: None. - */ - -#include "test.h" - -int -main(int argc, char * argv[]) -{ - /* A simple test first. */ - pthread_exit((void *) 0); - - /* Not reached */ - assert(0); - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/exit2.c b/platform/win32/msvc/external/pthreads.2/tests/exit2.c deleted file mode 100644 index fccf57d0c9f..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/exit2.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Test for pthread_exit(). - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Depends on API functions: - * pthread_create() - * pthread_exit() - */ - -#include "test.h" - -void * -func(void * arg) -{ - pthread_exit(arg); - - /* Never reached. */ - assert(0); - - return NULL; -} - -int -main(int argc, char * argv[]) -{ - pthread_t t; - - assert(pthread_create(&t, NULL, func, (void *) NULL) == 0); - - Sleep(100); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/exit3.c b/platform/win32/msvc/external/pthreads.2/tests/exit3.c deleted file mode 100644 index 03122d5f3e7..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/exit3.c +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Test for pthread_exit(). - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Depends on API functions: pthread_create(). - */ - -#include "test.h" - -void * -func(void * arg) -{ - pthread_exit(arg); - - /* Never reached. */ - assert(0); - - return NULL; -} - -int -main(int argc, char * argv[]) -{ - pthread_t id[4]; - int i; - - /* Create a few threads and then exit. */ - for (i = 0; i < 4; i++) - { - assert(pthread_create(&id[i], NULL, func, (void *)(size_t)i) == 0); - } - - Sleep(400); - - /* Success. */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/exit4.c b/platform/win32/msvc/external/pthreads.2/tests/exit4.c deleted file mode 100644 index ca4a53d6e68..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/exit4.c +++ /dev/null @@ -1,199 +0,0 @@ -/* - * File: exit4.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Test calling pthread_exit from a Win32 thread - * without having created an implicit POSIX handle for it. - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - have working pthread_create, pthread_self, pthread_mutex_lock/unlock - * pthread_testcancel, pthread_cancel - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" -#ifndef _UWIN -#include -#endif - -/* - * Create NUMTHREADS threads in addition to the Main thread. - */ -enum { - NUMTHREADS = 4 -}; - -typedef struct bag_t_ bag_t; -struct bag_t_ { - int threadnum; - int started; - /* Add more per-thread state variables here */ - int count; -}; - -static bag_t threadbag[NUMTHREADS + 1]; - -#if ! defined (__MINGW32__) || defined (__MSVCRT__) -unsigned __stdcall -#else -void -#endif -Win32thread(void * arg) -{ - int result = 1; - bag_t * bag = (bag_t *) arg; - - assert(bag == &threadbag[bag->threadnum]); - assert(bag->started == 0); - bag->started = 1; - - /* - * Doesn't return and doesn't create an implicit POSIX handle. - */ - pthread_exit((void *)(size_t)result); - - return 0; -} - -int -main() -{ - int failed = 0; - int i; - HANDLE h[NUMTHREADS + 1]; - unsigned thrAddr; /* Dummy variable to pass a valid location to _beginthreadex (Win98). */ - - for (i = 1; i <= NUMTHREADS; i++) - { - threadbag[i].started = 0; - threadbag[i].threadnum = i; -#if ! defined (__MINGW32__) || defined (__MSVCRT__) - h[i] = (HANDLE) _beginthreadex(NULL, 0, Win32thread, (void *) &threadbag[i], 0, &thrAddr); -#else - h[i] = (HANDLE) _beginthread(Win32thread, 0, (void *) &threadbag[i]); -#endif - } - - /* - * Code to control or munipulate child threads should probably go here. - */ - Sleep(500); - - /* - * Give threads time to run. - */ - Sleep(NUMTHREADS * 100); - - /* - * Standard check that all threads started. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - if (!threadbag[i].started) - { - failed |= !threadbag[i].started; - fprintf(stderr, "Thread %d: started %d\n", i, threadbag[i].started); - } - } - - assert(!failed); - - /* - * Check any results here. Set "failed" and only print output on failure. - */ - failed = 0; - for (i = 1; i <= NUMTHREADS; i++) - { - int fail = 0; - int result = 0; - -#if ! defined (__MINGW32__) || defined (__MSVCRT__) - assert(GetExitCodeThread(h[i], (LPDWORD) &result) == TRUE); -#else - /* - * Can't get a result code. - */ - result = 1; -#endif - - fail = (result != 1); - - if (fail) - { - fprintf(stderr, "Thread %d: started %d: count %d\n", - i, - threadbag[i].started, - threadbag[i].count); - } - failed = (failed || fail); - } - - assert(!failed); - - /* - * Success. - */ - return 0; -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/exit5.c b/platform/win32/msvc/external/pthreads.2/tests/exit5.c deleted file mode 100644 index 916b20246c1..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/exit5.c +++ /dev/null @@ -1,205 +0,0 @@ -/* - * File: exit5.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Test calling pthread_exit from a Win32 thread - * having created an implicit POSIX handle for it. - * - * Test Method (Validation or Falsification): - * - Validate return value and that POSIX handle is created and destroyed. - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - have working pthread_create, pthread_self, pthread_mutex_lock/unlock - * pthread_testcancel, pthread_cancel - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" -#ifndef _UWIN -#include -#endif - -/* - * Create NUMTHREADS threads in addition to the Main thread. - */ -enum { - NUMTHREADS = 4 -}; - -typedef struct bag_t_ bag_t; -struct bag_t_ { - int threadnum; - int started; - /* Add more per-thread state variables here */ - int count; - pthread_t self; -}; - -static bag_t threadbag[NUMTHREADS + 1]; - -#if ! defined (__MINGW32__) || defined (__MSVCRT__) -unsigned __stdcall -#else -void -#endif -Win32thread(void * arg) -{ - int result = 1; - bag_t * bag = (bag_t *) arg; - - assert(bag == &threadbag[bag->threadnum]); - assert(bag->started == 0); - bag->started = 1; - - assert((bag->self = pthread_self()).p != NULL); - assert(pthread_kill(bag->self, 0) == 0); - - /* - * Doesn't return. - */ - pthread_exit((void *)(size_t)result); - - return 0; -} - -int -main() -{ - int failed = 0; - int i; - HANDLE h[NUMTHREADS + 1]; - unsigned thrAddr; /* Dummy variable to pass a valid location to _beginthreadex (Win98). */ - - for (i = 1; i <= NUMTHREADS; i++) - { - threadbag[i].started = 0; - threadbag[i].threadnum = i; -#if ! defined (__MINGW32__) || defined (__MSVCRT__) - h[i] = (HANDLE) _beginthreadex(NULL, 0, Win32thread, (void *) &threadbag[i], 0, &thrAddr); -#else - h[i] = (HANDLE) _beginthread(Win32thread, 0, (void *) &threadbag[i]); -#endif - } - - /* - * Code to control or munipulate child threads should probably go here. - */ - Sleep(500); - - /* - * Give threads time to run. - */ - Sleep(NUMTHREADS * 100); - - /* - * Standard check that all threads started. - */ - for (i = 1; i <= NUMTHREADS; i++) - { - if (!threadbag[i].started) - { - failed |= !threadbag[i].started; - fprintf(stderr, "Thread %d: started %d\n", i, threadbag[i].started); - } - } - - assert(!failed); - - /* - * Check any results here. Set "failed" and only print output on failure. - */ - failed = 0; - for (i = 1; i <= NUMTHREADS; i++) - { - int fail = 0; - int result = 0; - -#if ! defined (__MINGW32__) || defined (__MSVCRT__) - assert(GetExitCodeThread(h[i], (LPDWORD) &result) == TRUE); -#else - /* - * Can't get a result code. - */ - result = 1; -#endif - - assert(threadbag[i].self.p != NULL && pthread_kill(threadbag[i].self, 0) == ESRCH); - - fail = (result != 1); - - if (fail) - { - fprintf(stderr, "Thread %d: started %d: count %d\n", - i, - threadbag[i].started, - threadbag[i].count); - } - failed = (failed || fail); - } - - assert(!failed); - - /* - * Success. - */ - return 0; -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/eyal1.c b/platform/win32/msvc/external/pthreads.2/tests/eyal1.c deleted file mode 100644 index d18b731caa1..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/eyal1.c +++ /dev/null @@ -1,367 +0,0 @@ -/* Simple POSIX threads program. - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Author: Eyal Lebedinsky eyal@eyal.emu.id.au - * Written: Sep 1998. - * Version Date: 12 Sep 1998 - * - * Do we need to lock stdout or is it thread safe? - * - * Used: - * pthread_t - * pthread_attr_t - * pthread_create() - * pthread_join() - * pthread_mutex_t - * PTHREAD_MUTEX_INITIALIZER - * pthread_mutex_init() [not used now] - * pthread_mutex_destroy() - * pthread_mutex_lock() - * pthread_mutex_trylock() - * pthread_mutex_unlock() - * - * What this program does is establish a work queue (implemented using - * four mutexes for each thread). It then schedules work (by storing - * a number in 'todo') and releases the threads. When the work is done - * the threads will block. The program then repeats the same thing once - * more (just to test the logic) and when the work is done it destroyes - * the threads. - * - * The 'work' we do is simply burning CPU cycles in a loop. - * The 'todo' work queue is trivial - each threads pops one element - * off it by incrementing it, the poped number is the 'work' to do. - * When 'todo' reaches the limit (nwork) the queue is considered - * empty. - * - * The number displayed at the end is the amount of work each thread - * did, so we can see if the load was properly distributed. - * - * The program was written to test a threading setup (not seen here) - * rather than to demonstrate correct usage of the pthread facilities. - * - * Note how each thread is given access to a thread control structure - * (TC) which is used for communicating to/from the main program (e.g. - * the threads knows its 'id' and also filles in the 'work' done). -*/ - -#include "test.h" - -#include -#include - -struct thread_control { - int id; - pthread_t thread; /* thread id */ - pthread_mutex_t mutex_start; - pthread_mutex_t mutex_started; - pthread_mutex_t mutex_end; - pthread_mutex_t mutex_ended; - long work; /* work done */ - int stat; /* pthread_init status */ -}; - -typedef struct thread_control TC; - -static TC *tcs = NULL; -static int nthreads = 10; -static int nwork = 100; -static int quiet = 0; - -static int todo = -1; - -static pthread_mutex_t mutex_todo = PTHREAD_MUTEX_INITIALIZER; -static pthread_mutex_t mutex_stdout = PTHREAD_MUTEX_INITIALIZER; - - -static void -die (int ret) -{ - if (NULL != tcs) - { - free (tcs); - tcs = NULL; - } - - if (ret) - exit (ret); -} - - -static double -waste_time (int n) -{ - int i; - double f, g, h, s; - - s = 0.0; - - /* - * Useless work. - */ - for (i = n*100; i > 0; --i) - { - f = rand (); - g = rand (); - h = rand (); - s += 2.0 * f * g / (h != 0.0 ? (h * h) : 1.0); - } - return s; -} - -static int -do_work_unit (int who, int n) -{ - int i; - static int nchars = 0; - double f = 0.0; - - if (quiet) - i = 0; - else { - /* - * get lock on stdout - */ - assert(pthread_mutex_lock (&mutex_stdout) == 0); - - /* - * do our job - */ - i = printf ("%c", "0123456789abcdefghijklmnopqrstuvwxyz"[who]); - - if (!(++nchars % 50)) - printf ("\n"); - - fflush (stdout); - - /* - * release lock on stdout - */ - assert(pthread_mutex_unlock (&mutex_stdout) == 0); - } - - n = rand () % 10000; /* ignore incoming 'n' */ - f = waste_time (n); - - /* This prevents the statement above from being optimised out */ - if (f > 0.0) - return(n); - - return (n); -} - -static int -print_server (void *ptr) -{ - int mywork; - int n; - TC *tc = (TC *)ptr; - - assert(pthread_mutex_lock (&tc->mutex_started) == 0); - - for (;;) - { - assert(pthread_mutex_lock (&tc->mutex_start) == 0); - assert(pthread_mutex_unlock (&tc->mutex_start) == 0); - assert(pthread_mutex_lock (&tc->mutex_ended) == 0); - assert(pthread_mutex_unlock (&tc->mutex_started) == 0); - - for (;;) - { - - /* - * get lock on todo list - */ - assert(pthread_mutex_lock (&mutex_todo) == 0); - - mywork = todo; - if (todo >= 0) - { - ++todo; - if (todo >= nwork) - todo = -1; - } - assert(pthread_mutex_unlock (&mutex_todo) == 0); - - if (mywork < 0) - break; - - assert((n = do_work_unit (tc->id, mywork)) >= 0); - tc->work += n; - } - - assert(pthread_mutex_lock (&tc->mutex_end) == 0); - assert(pthread_mutex_unlock (&tc->mutex_end) == 0); - assert(pthread_mutex_lock (&tc->mutex_started) == 0); - assert(pthread_mutex_unlock (&tc->mutex_ended) == 0); - - if (-2 == mywork) - break; - } - - assert(pthread_mutex_unlock (&tc->mutex_started) == 0); - - return (0); -} - -static void -dosync (void) -{ - int i; - - for (i = 0; i < nthreads; ++i) - { - assert(pthread_mutex_lock (&tcs[i].mutex_end) == 0); - assert(pthread_mutex_unlock (&tcs[i].mutex_start) == 0); - assert(pthread_mutex_lock (&tcs[i].mutex_started) == 0); - assert(pthread_mutex_unlock (&tcs[i].mutex_started) == 0); - } - - /* - * Now threads do their work - */ - for (i = 0; i < nthreads; ++i) - { - assert(pthread_mutex_lock (&tcs[i].mutex_start) == 0); - assert(pthread_mutex_unlock (&tcs[i].mutex_end) == 0); - assert(pthread_mutex_lock (&tcs[i].mutex_ended) == 0); - assert(pthread_mutex_unlock (&tcs[i].mutex_ended) == 0); - } -} - -static void -dowork (void) -{ - todo = 0; - dosync(); - - todo = 0; - dosync(); -} - -int -main (int argc, char *argv[]) -{ - int i; - - assert(NULL != (tcs = (TC *) calloc (nthreads, sizeof (*tcs)))); - - /* - * Launch threads - */ - for (i = 0; i < nthreads; ++i) - { - tcs[i].id = i; - - assert(pthread_mutex_init (&tcs[i].mutex_start, NULL) == 0); - assert(pthread_mutex_init (&tcs[i].mutex_started, NULL) == 0); - assert(pthread_mutex_init (&tcs[i].mutex_end, NULL) == 0); - assert(pthread_mutex_init (&tcs[i].mutex_ended, NULL) == 0); - - tcs[i].work = 0; - - assert(pthread_mutex_lock (&tcs[i].mutex_start) == 0); - assert((tcs[i].stat = - pthread_create (&tcs[i].thread, - NULL, - (void *(*)(void *))print_server, - (void *) &tcs[i]) - ) == 0); - - /* - * Wait for thread initialisation - */ - { - int trylock = 0; - - while (trylock == 0) - { - trylock = pthread_mutex_trylock(&tcs[i].mutex_started); - assert(trylock == 0 || trylock == EBUSY); - - if (trylock == 0) - { - assert(pthread_mutex_unlock (&tcs[i].mutex_started) == 0); - } - } - } - } - - dowork (); - - /* - * Terminate threads - */ - todo = -2; /* please terminate */ - dosync(); - - for (i = 0; i < nthreads; ++i) - { - if (0 == tcs[i].stat) - assert(pthread_join (tcs[i].thread, NULL) == 0); - } - - /* - * destroy locks - */ - assert(pthread_mutex_destroy (&mutex_stdout) == 0); - assert(pthread_mutex_destroy (&mutex_todo) == 0); - - /* - * Cleanup - */ - printf ("\n"); - - /* - * Show results - */ - for (i = 0; i < nthreads; ++i) - { - printf ("%2d ", i); - if (0 == tcs[i].stat) - printf ("%10ld\n", tcs[i].work); - else - printf ("failed %d\n", tcs[i].stat); - - assert(pthread_mutex_unlock(&tcs[i].mutex_start) == 0); - - assert(pthread_mutex_destroy (&tcs[i].mutex_start) == 0); - assert(pthread_mutex_destroy (&tcs[i].mutex_started) == 0); - assert(pthread_mutex_destroy (&tcs[i].mutex_end) == 0); - assert(pthread_mutex_destroy (&tcs[i].mutex_ended) == 0); - } - - die (0); - - return (0); -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/inherit1.c b/platform/win32/msvc/external/pthreads.2/tests/inherit1.c deleted file mode 100644 index 91574f0771f..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/inherit1.c +++ /dev/null @@ -1,177 +0,0 @@ -/* - * File: inherit1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Test thread priority inheritance. - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" - -enum { - PTW32TEST_THREAD_INIT_PRIO = 0, - PTW32TEST_MAXPRIORITIES = 512 -}; - -int minPrio; -int maxPrio; -int validPriorities[PTW32TEST_MAXPRIORITIES]; - - -void * func(void * arg) -{ - int policy; - struct sched_param param; - - assert(pthread_getschedparam(pthread_self(), &policy, ¶m) == 0); - return (void *) (size_t)param.sched_priority; -} - - -void * -getValidPriorities(void * arg) -{ - int prioSet; - pthread_t thread = pthread_self(); - HANDLE threadH = pthread_getw32threadhandle_np(thread); - struct sched_param param; - - for (prioSet = minPrio; - prioSet <= maxPrio; - prioSet++) - { - /* - * If prioSet is invalid then the threads priority is unchanged - * from the previous value. Make the previous value a known - * one so that we can check later. - */ - param.sched_priority = prioSet; - assert(pthread_setschedparam(thread, SCHED_OTHER, ¶m) == 0); - validPriorities[prioSet+(PTW32TEST_MAXPRIORITIES/2)] = GetThreadPriority(threadH); - } - - return (void *) 0; -} - - -int -main() -{ - pthread_t t; - pthread_t mainThread = pthread_self(); - pthread_attr_t attr; - void * result = NULL; - struct sched_param param; - struct sched_param mainParam; - int prio; - int policy; - int inheritsched = -1; - pthread_t threadID = pthread_self(); - HANDLE threadH = pthread_getw32threadhandle_np(threadID); - - assert((maxPrio = sched_get_priority_max(SCHED_OTHER)) != -1); - assert((minPrio = sched_get_priority_min(SCHED_OTHER)) != -1); - - assert(pthread_create(&t, NULL, getValidPriorities, NULL) == 0); - assert(pthread_join(t, &result) == 0); - - assert(pthread_attr_init(&attr) == 0); - assert(pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED) == 0); - assert(pthread_attr_getinheritsched(&attr, &inheritsched) == 0); - assert(inheritsched == PTHREAD_INHERIT_SCHED); - - for (prio = minPrio; prio <= maxPrio; prio++) - { - mainParam.sched_priority = prio; - - /* Set the thread's priority to a known initial value. */ - SetThreadPriority(threadH, PTW32TEST_THREAD_INIT_PRIO); - - /* Change the main thread priority */ - assert(pthread_setschedparam(mainThread, SCHED_OTHER, &mainParam) == 0); - assert(pthread_getschedparam(mainThread, &policy, &mainParam) == 0); - assert(policy == SCHED_OTHER); - /* Priority returned below should be the level set by pthread_setschedparam(). */ - assert(mainParam.sched_priority == prio); - assert(GetThreadPriority(threadH) == - validPriorities[prio+(PTW32TEST_MAXPRIORITIES/2)]); - - for (param.sched_priority = prio; - param.sched_priority <= maxPrio; - param.sched_priority++) - { - /* The new thread create should ignore this new priority */ - assert(pthread_attr_setschedparam(&attr, ¶m) == 0); - assert(pthread_create(&t, &attr, func, NULL) == 0); - pthread_join(t, &result); - assert((int)(size_t) result == mainParam.sched_priority); - } - } - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/join0.c b/platform/win32/msvc/external/pthreads.2/tests/join0.c deleted file mode 100644 index 0e2eb284cc0..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/join0.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Test for pthread_join(). - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Depends on API functions: pthread_create(), pthread_exit(). - */ - -#include "test.h" - -void * -func(void * arg) -{ - Sleep(2000); - - pthread_exit(arg); - - /* Never reached. */ - exit(1); -} - -int -main(int argc, char * argv[]) -{ - pthread_t id; - void* result = (void*)0; - - /* Create a single thread and wait for it to exit. */ - assert(pthread_create(&id, NULL, func, (void *) 123) == 0); - - assert(pthread_join(id, &result) == 0); - - assert((int)(size_t)result == 123); - - /* Success. */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/join1.c b/platform/win32/msvc/external/pthreads.2/tests/join1.c deleted file mode 100644 index 078e52f3971..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/join1.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Test for pthread_join(). - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Depends on API functions: pthread_create(), pthread_join(), pthread_exit(). - */ - -#include "test.h" - -void * -func(void * arg) -{ - int i = (int)(size_t)arg; - - Sleep(i * 100); - - pthread_exit(arg); - - /* Never reached. */ - exit(1); -} - -int -main(int argc, char * argv[]) -{ - pthread_t id[4]; - int i; - void* result = (void*)-1; - - /* Create a few threads and then exit. */ - for (i = 0; i < 4; i++) - { - assert(pthread_create(&id[i], NULL, func, (void *)(size_t)i) == 0); - } - - /* Some threads will finish before they are joined, some after. */ - Sleep(2 * 100 + 50); - - for (i = 0; i < 4; i++) - { - assert(pthread_join(id[i], &result) == 0); - assert((int)(size_t)result == i); - } - - /* Success. */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/join2.c b/platform/win32/msvc/external/pthreads.2/tests/join2.c deleted file mode 100644 index 2ba35b465e6..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/join2.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Test for pthread_join() returning return value from threads. - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Depends on API functions: pthread_create(). - */ - -#include "test.h" - -void * -func(void * arg) -{ - Sleep(1000); - return arg; -} - -int -main(int argc, char * argv[]) -{ - pthread_t id[4]; - int i; - void* result = (void*)-1; - - /* Create a few threads and then exit. */ - for (i = 0; i < 4; i++) - { - assert(pthread_create(&id[i], NULL, func, (void *)(size_t)i) == 0); - } - - for (i = 0; i < 4; i++) - { - assert(pthread_join(id[i], &result) == 0); - assert((int)(size_t)result == i); - } - - /* Success. */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/join3.c b/platform/win32/msvc/external/pthreads.2/tests/join3.c deleted file mode 100644 index 913ebfedf38..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/join3.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Test for pthread_join() returning return value from threads. - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Depends on API functions: pthread_create(). - */ - -#include "test.h" - -void * -func(void * arg) -{ - sched_yield(); - return arg; -} - -int -main(int argc, char * argv[]) -{ - pthread_t id[4]; - int i; - void* result = (void*)-1; - - /* Create a few threads and then exit. */ - for (i = 0; i < 4; i++) - { - assert(pthread_create(&id[i], NULL, func, (void *)(size_t)i) == 0); - } - - /* - * Let threads exit before we join them. - * We should still retrieve the exit code for the threads. - */ - Sleep(1000); - - for (i = 0; i < 4; i++) - { - assert(pthread_join(id[i], &result) == 0); - assert((int)(size_t)result == i); - } - - /* Success. */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/kill1.c b/platform/win32/msvc/external/pthreads.2/tests/kill1.c deleted file mode 100644 index a1e1a8366a3..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/kill1.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * File: kill1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - pthread_kill() does not support non zero signals.. - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" - - -int -main() -{ - assert(pthread_kill(pthread_self(), 1) == EINVAL); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/loadfree.c b/platform/win32/msvc/external/pthreads.2/tests/loadfree.c deleted file mode 100644 index f7f3b72c7c2..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/loadfree.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * From: Todd Owen - * To: pthreads-win32@sourceware.cygnus.com - * Subject: invalid page fault when using LoadLibrary/FreeLibrary - * - * hi, - * for me, pthread.dll consistently causes an "invalid page fault in - * kernel32.dll" when I load it "explicitly"...to be precise, loading (with - * LoadLibrary) isn't a problem, it gives the error when I call FreeLibrary. - * I guess that the dll's cleanup must be causing the error. - * - * Implicit linkage of the dll has never given me this problem. Here's a - * program (console application) that gives me the error. - * - * I compile with: mingw32 (gcc-2.95 release), with the MSVCRT add-on (not - * that the compiler should make much difference in this case). - * PTHREAD.DLL: is the precompiled 1999-11-02 one (I tried an older one as - * well, with the same result). - * - * Fascinatingly, if you have your own dll (mycode.dll) which implicitly - * loads pthread.dll, and then do LoadLibrary/FreeLibrary on _this_ dll, the - * same thing happens. - * - */ - -#include "test.h" - -int main() { - HINSTANCE hinst; - - assert((hinst = LoadLibrary("pthread")) != (HINSTANCE) 0); - - Sleep(100); - - FreeLibrary(hinst); - return 0; -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex1.c b/platform/win32/msvc/external/pthreads.2/tests/mutex1.c deleted file mode 100644 index 3ed2c44fb59..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex1.c +++ /dev/null @@ -1,68 +0,0 @@ -/* - * mutex1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Create a simple mutex object, lock it, and then unlock it again. - * This is the simplest test of the pthread mutex family that we can do. - * - * Depends on API functions: - * pthread_mutex_init() - * pthread_mutex_lock() - * pthread_mutex_unlock() - * pthread_mutex_destroy() - */ - -#include "test.h" - -pthread_mutex_t mutex = NULL; - -int -main() -{ - assert(mutex == NULL); - - assert(pthread_mutex_init(&mutex, NULL) == 0); - - assert(mutex != NULL); - - assert(pthread_mutex_lock(&mutex) == 0); - - assert(pthread_mutex_unlock(&mutex) == 0); - - assert(pthread_mutex_destroy(&mutex) == 0); - - assert(mutex == NULL); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex1e.c b/platform/win32/msvc/external/pthreads.2/tests/mutex1e.c deleted file mode 100644 index e6920ad8a13..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex1e.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * mutex1e.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * As for mutex1.c but with type set to PTHREAD_MUTEX_ERRORCHECK. - * - * Create a simple mutex object, lock it, unlock it, then destroy it. - * This is the simplest test of the pthread mutex family that we can do. - * - * Depends on API functions: - * pthread_mutexattr_settype() - * pthread_mutex_init() - * pthread_mutex_destroy() - */ - -#include "test.h" - -pthread_mutex_t mutex = NULL; -pthread_mutexattr_t mxAttr; - -int -main() -{ - assert(pthread_mutexattr_init(&mxAttr) == 0); - - BEGIN_MUTEX_STALLED_ROBUST(mxAttr) - - assert(pthread_mutexattr_settype(&mxAttr, PTHREAD_MUTEX_ERRORCHECK) == 0); - - assert(mutex == NULL); - - assert(pthread_mutex_init(&mutex, &mxAttr) == 0); - - assert(mutex != NULL); - - assert(pthread_mutex_lock(&mutex) == 0); - - assert(pthread_mutex_unlock(&mutex) == 0); - - assert(pthread_mutex_destroy(&mutex) == 0); - - assert(mutex == NULL); - - END_MUTEX_STALLED_ROBUST(mxAttr) - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex1n.c b/platform/win32/msvc/external/pthreads.2/tests/mutex1n.c deleted file mode 100644 index 697ca5fe5aa..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex1n.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * mutex1n.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * As for mutex1.c but with type set to PTHREAD_MUTEX_NORMAL. - * - * Create a simple mutex object, lock it, unlock it, then destroy it. - * This is the simplest test of the pthread mutex family that we can do. - * - * Depends on API functions: - * pthread_mutexattr_settype() - * pthread_mutex_init() - * pthread_mutex_destroy() - */ - -#include "test.h" - -pthread_mutex_t mutex = NULL; -pthread_mutexattr_t mxAttr; - -int -main() -{ - assert(pthread_mutexattr_init(&mxAttr) == 0); - - BEGIN_MUTEX_STALLED_ROBUST(mxAttr) - - assert(pthread_mutexattr_settype(&mxAttr, PTHREAD_MUTEX_NORMAL) == 0); - - assert(mutex == NULL); - - assert(pthread_mutex_init(&mutex, &mxAttr) == 0); - - assert(mutex != NULL); - - assert(pthread_mutex_lock(&mutex) == 0); - - assert(pthread_mutex_unlock(&mutex) == 0); - - assert(pthread_mutex_destroy(&mutex) == 0); - - assert(mutex == NULL); - - END_MUTEX_STALLED_ROBUST(mxAttr) - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex1r.c b/platform/win32/msvc/external/pthreads.2/tests/mutex1r.c deleted file mode 100644 index 8421c8882f9..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex1r.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * mutex1r.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * As for mutex1.c but with type set to PTHREAD_MUTEX_RECURSIVE. - * - * Create a simple mutex object, lock it, unlock it, then destroy it. - * This is the simplest test of the pthread mutex family that we can do. - * - * Depends on API functions: - * pthread_mutexattr_settype() - * pthread_mutex_init() - * pthread_mutex_destroy() - */ - -#include "test.h" - -pthread_mutex_t mutex = NULL; -pthread_mutexattr_t mxAttr; - -int -main() -{ - assert(pthread_mutexattr_init(&mxAttr) == 0); - - BEGIN_MUTEX_STALLED_ROBUST(mxAttr) - - assert(pthread_mutexattr_settype(&mxAttr, PTHREAD_MUTEX_RECURSIVE) == 0); - - assert(mutex == NULL); - - assert(pthread_mutex_init(&mutex, &mxAttr) == 0); - - assert(mutex != NULL); - - assert(pthread_mutex_lock(&mutex) == 0); - - assert(pthread_mutex_unlock(&mutex) == 0); - - assert(pthread_mutex_destroy(&mutex) == 0); - - assert(mutex == NULL); - - END_MUTEX_STALLED_ROBUST(mxAttr) - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex2.c b/platform/win32/msvc/external/pthreads.2/tests/mutex2.c deleted file mode 100644 index 68dda97029e..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex2.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - * mutex2.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Declare a static mutex object, lock it, - * and then unlock it again. - * - * Depends on API functions: - * pthread_mutex_lock() - * pthread_mutex_unlock() - */ - -#include "test.h" - -pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; - -int -main() -{ - assert(mutex == PTHREAD_MUTEX_INITIALIZER); - - assert(pthread_mutex_lock(&mutex) == 0); - - assert(mutex != PTHREAD_MUTEX_INITIALIZER); - - assert(mutex != NULL); - - assert(pthread_mutex_unlock(&mutex) == 0); - - assert(pthread_mutex_destroy(&mutex) == 0); - - assert(mutex == NULL); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex2e.c b/platform/win32/msvc/external/pthreads.2/tests/mutex2e.c deleted file mode 100644 index ef7389e5097..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex2e.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - * mutex2e.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Declare a static mutex object, lock it, - * and then unlock it again. - * - * Depends on API functions: - * pthread_mutex_lock() - * pthread_mutex_unlock() - */ - -#include "test.h" - -pthread_mutex_t mutex = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER; - -int -main() -{ - assert(mutex == PTHREAD_ERRORCHECK_MUTEX_INITIALIZER); - - assert(pthread_mutex_lock(&mutex) == 0); - - assert(mutex != PTHREAD_ERRORCHECK_MUTEX_INITIALIZER); - - assert(mutex != NULL); - - assert(pthread_mutex_unlock(&mutex) == 0); - - assert(pthread_mutex_destroy(&mutex) == 0); - - assert(mutex == NULL); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex2r.c b/platform/win32/msvc/external/pthreads.2/tests/mutex2r.c deleted file mode 100644 index 126166a4a83..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex2r.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - * mutex2r.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Declare a static mutex object, lock it, - * and then unlock it again. - * - * Depends on API functions: - * pthread_mutex_lock() - * pthread_mutex_unlock() - */ - -#include "test.h" - -pthread_mutex_t mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER; - -int -main() -{ - assert(mutex == PTHREAD_RECURSIVE_MUTEX_INITIALIZER); - - assert(pthread_mutex_lock(&mutex) == 0); - - assert(mutex != PTHREAD_RECURSIVE_MUTEX_INITIALIZER); - - assert(mutex != NULL); - - assert(pthread_mutex_unlock(&mutex) == 0); - - assert(pthread_mutex_destroy(&mutex) == 0); - - assert(mutex == NULL); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex3.c b/platform/win32/msvc/external/pthreads.2/tests/mutex3.c deleted file mode 100644 index 98b30384e45..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex3.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * mutex3.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Declare a static mutex object, lock it, trylock it, - * and then unlock it again. - * - * Depends on API functions: - * pthread_mutex_lock() - * pthread_mutex_trylock() - * pthread_mutex_unlock() - */ - -#include "test.h" - -pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER; - -static int washere = 0; - -void * func(void * arg) -{ - assert(pthread_mutex_trylock(&mutex1) == EBUSY); - - washere = 1; - - return 0; -} - -int -main() -{ - pthread_t t; - - assert(pthread_mutex_lock(&mutex1) == 0); - - assert(pthread_create(&t, NULL, func, NULL) == 0); - assert(pthread_join(t, NULL) == 0); - - assert(pthread_mutex_unlock(&mutex1) == 0); - - assert(washere == 1); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex3e.c b/platform/win32/msvc/external/pthreads.2/tests/mutex3e.c deleted file mode 100644 index 20271ec8fa1..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex3e.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * mutex3e.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Declare a static mutex object, lock it, trylock it, - * and then unlock it again. - * - * Depends on API functions: - * pthread_mutex_lock() - * pthread_mutex_trylock() - * pthread_mutex_unlock() - */ - -#include "test.h" - -pthread_mutex_t mutex1 = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER; - -static int washere = 0; - -void * func(void * arg) -{ - assert(pthread_mutex_trylock(&mutex1) == EBUSY); - - washere = 1; - - return 0; -} - -int -main() -{ - pthread_t t; - - assert(pthread_mutex_lock(&mutex1) == 0); - - assert(pthread_create(&t, NULL, func, NULL) == 0); - assert(pthread_join(t, NULL) == 0); - - assert(pthread_mutex_unlock(&mutex1) == 0); - - assert(washere == 1); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex3r.c b/platform/win32/msvc/external/pthreads.2/tests/mutex3r.c deleted file mode 100644 index eeafb3e1598..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex3r.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * mutex3r.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Declare a static mutex object, lock it, trylock it, - * and then unlock it again. - * - * Depends on API functions: - * pthread_mutex_lock() - * pthread_mutex_trylock() - * pthread_mutex_unlock() - */ - -#include "test.h" - -pthread_mutex_t mutex1 = PTHREAD_RECURSIVE_MUTEX_INITIALIZER; - -static int washere = 0; - -void * func(void * arg) -{ - assert(pthread_mutex_trylock(&mutex1) == EBUSY); - - washere = 1; - - return 0; -} - -int -main() -{ - pthread_t t; - - assert(pthread_mutex_lock(&mutex1) == 0); - - assert(pthread_create(&t, NULL, func, NULL) == 0); - assert(pthread_join(t, NULL) == 0); - - assert(pthread_mutex_unlock(&mutex1) == 0); - - assert(washere == 1); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex4.c b/platform/win32/msvc/external/pthreads.2/tests/mutex4.c deleted file mode 100644 index e500f7f2887..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex4.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * mutex4.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Thread A locks mutex - thread B tries to unlock. - * - * Depends on API functions: - * pthread_mutex_lock() - * pthread_mutex_trylock() - * pthread_mutex_unlock() - */ - -#include "test.h" - -static int wasHere = 0; - -static pthread_mutex_t mutex1; - -void * unlocker(void * arg) -{ - int expectedResult = (int)(size_t)arg; - - wasHere++; - assert(pthread_mutex_unlock(&mutex1) == expectedResult); - wasHere++; - return NULL; -} - -int -main() -{ - pthread_t t; - pthread_mutexattr_t ma; - - assert(pthread_mutexattr_init(&ma) == 0); - - BEGIN_MUTEX_STALLED_ROBUST(ma) - - wasHere = 0; - assert(pthread_mutexattr_settype(&ma, PTHREAD_MUTEX_DEFAULT) == 0); - assert(pthread_mutex_init(&mutex1, &ma) == 0); - assert(pthread_mutex_lock(&mutex1) == 0); - assert(pthread_create(&t, NULL, unlocker, (void *)(size_t)(IS_ROBUST?EPERM:0)) == 0); - assert(pthread_join(t, NULL) == 0); - assert(pthread_mutex_unlock(&mutex1) == 0); - assert(wasHere == 2); - - wasHere = 0; - assert(pthread_mutexattr_settype(&ma, PTHREAD_MUTEX_NORMAL) == 0); - assert(pthread_mutex_init(&mutex1, &ma) == 0); - assert(pthread_mutex_lock(&mutex1) == 0); - assert(pthread_create(&t, NULL, unlocker, (void *)(size_t)(IS_ROBUST?EPERM:0)) == 0); - assert(pthread_join(t, NULL) == 0); - assert(pthread_mutex_unlock(&mutex1) == 0); - assert(wasHere == 2); - - wasHere = 0; - assert(pthread_mutexattr_settype(&ma, PTHREAD_MUTEX_ERRORCHECK) == 0); - assert(pthread_mutex_init(&mutex1, &ma) == 0); - assert(pthread_mutex_lock(&mutex1) == 0); - assert(pthread_create(&t, NULL, unlocker, (void *)(size_t) EPERM) == 0); - assert(pthread_join(t, NULL) == 0); - assert(pthread_mutex_unlock(&mutex1) == 0); - assert(wasHere == 2); - - wasHere = 0; - assert(pthread_mutexattr_settype(&ma, PTHREAD_MUTEX_RECURSIVE) == 0); - assert(pthread_mutex_init(&mutex1, &ma) == 0); - assert(pthread_mutex_lock(&mutex1) == 0); - assert(pthread_create(&t, NULL, unlocker, (void *)(size_t) EPERM) == 0); - assert(pthread_join(t, NULL) == 0); - assert(pthread_mutex_unlock(&mutex1) == 0); - assert(wasHere == 2); - - END_MUTEX_STALLED_ROBUST(ma) - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex5.c b/platform/win32/msvc/external/pthreads.2/tests/mutex5.c deleted file mode 100644 index 4df9356e4fe..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex5.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * mutex5.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Confirm the equality/inequality of the various mutex types, - * and the default not-set value. - */ - -#include "test.h" - -static pthread_mutexattr_t mxAttr; - -/* Prevent optimiser from removing dead or obvious asserts. */ -int _optimiseFoil; -#define FOIL(x) (_optimiseFoil = x) - -int -main() -{ - int mxType = -1; - - assert(FOIL(PTHREAD_MUTEX_DEFAULT) == PTHREAD_MUTEX_NORMAL); - assert(FOIL(PTHREAD_MUTEX_DEFAULT) != PTHREAD_MUTEX_ERRORCHECK); - assert(FOIL(PTHREAD_MUTEX_DEFAULT) != PTHREAD_MUTEX_RECURSIVE); - assert(FOIL(PTHREAD_MUTEX_RECURSIVE) != PTHREAD_MUTEX_ERRORCHECK); - - assert(FOIL(PTHREAD_MUTEX_NORMAL) == PTHREAD_MUTEX_FAST_NP); - assert(FOIL(PTHREAD_MUTEX_RECURSIVE) == PTHREAD_MUTEX_RECURSIVE_NP); - assert(FOIL(PTHREAD_MUTEX_ERRORCHECK) == PTHREAD_MUTEX_ERRORCHECK_NP); - - assert(pthread_mutexattr_init(&mxAttr) == 0); - assert(pthread_mutexattr_gettype(&mxAttr, &mxType) == 0); - assert(mxType == PTHREAD_MUTEX_NORMAL); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex6.c b/platform/win32/msvc/external/pthreads.2/tests/mutex6.c deleted file mode 100644 index 2452c4aebf9..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex6.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - * mutex6.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test the default (type not set) mutex type. - * Should be the same as PTHREAD_MUTEX_NORMAL. - * Thread locks mutex twice (recursive lock). - * Locking thread should deadlock on second attempt. - * - * Depends on API functions: - * pthread_mutex_lock() - * pthread_mutex_trylock() - * pthread_mutex_unlock() - */ - -#include "test.h" - -static int lockCount = 0; - -static pthread_mutex_t mutex; - -void * locker(void * arg) -{ - assert(pthread_mutex_lock(&mutex) == 0); - lockCount++; - - /* Should wait here (deadlocked) */ - assert(pthread_mutex_lock(&mutex) == 0); - lockCount++; - assert(pthread_mutex_unlock(&mutex) == 0); - - return 0; -} - -int -main() -{ - pthread_t t; - - assert(pthread_mutex_init(&mutex, NULL) == 0); - - assert(pthread_create(&t, NULL, locker, NULL) == 0); - - Sleep(1000); - - assert(lockCount == 1); - - /* - * Should succeed even though we don't own the lock - * because FAST mutexes don't check ownership. - */ - assert(pthread_mutex_unlock(&mutex) == 0); - - Sleep (1000); - - assert(lockCount == 2); - - exit(0); - - /* Never reached */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex6e.c b/platform/win32/msvc/external/pthreads.2/tests/mutex6e.c deleted file mode 100644 index bb0c6723c8a..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex6e.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * mutex6e.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Tests PTHREAD_MUTEX_ERRORCHECK mutex type. - * Thread locks mutex twice (recursive lock). - * This should fail with an EDEADLK error. - * The second unlock attempt should fail with an EPERM error. - * - * Depends on API functions: - * pthread_create() - * pthread_join() - * pthread_mutexattr_init() - * pthread_mutexattr_destroy() - * pthread_mutexattr_settype() - * pthread_mutexattr_gettype() - * pthread_mutex_init() - * pthread_mutex_destroy() - * pthread_mutex_lock() - * pthread_mutex_unlock() - */ - -#include "test.h" - -static int lockCount; - -static pthread_mutex_t mutex; -static pthread_mutexattr_t mxAttr; - -void * locker(void * arg) -{ - assert(pthread_mutex_lock(&mutex) == 0); - lockCount++; - assert(pthread_mutex_lock(&mutex) == EDEADLK); - lockCount++; - assert(pthread_mutex_unlock(&mutex) == 0); - assert(pthread_mutex_unlock(&mutex) == EPERM); - - return (void *) 555; -} - -int -main() -{ - pthread_t t; - void* result = (void*)0; - int mxType = -1; - - assert(pthread_mutexattr_init(&mxAttr) == 0); - - BEGIN_MUTEX_STALLED_ROBUST(mxAttr) - - lockCount = 0; - assert(pthread_mutexattr_settype(&mxAttr, PTHREAD_MUTEX_ERRORCHECK) == 0); - assert(pthread_mutexattr_gettype(&mxAttr, &mxType) == 0); - assert(mxType == PTHREAD_MUTEX_ERRORCHECK); - - assert(pthread_mutex_init(&mutex, &mxAttr) == 0); - - assert(pthread_create(&t, NULL, locker, NULL) == 0); - - assert(pthread_join(t, &result) == 0); - assert((int)(size_t)result == 555); - - assert(lockCount == 2); - - assert(pthread_mutex_destroy(&mutex) == 0); - - END_MUTEX_STALLED_ROBUST(mxAttr) - - assert(pthread_mutexattr_destroy(&mxAttr) == 0); - - exit(0); - - /* Never reached */ - return 0; -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex6es.c b/platform/win32/msvc/external/pthreads.2/tests/mutex6es.c deleted file mode 100644 index 559f7b94357..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex6es.c +++ /dev/null @@ -1,94 +0,0 @@ -/* - * mutex6es.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Tests PTHREAD_MUTEX_ERRORCHECK static mutex type. - * Thread locks mutex twice (recursive lock). - * This should fail with an EDEADLK error. - * The second unlock attempt should fail with an EPERM error. - * - * Depends on API functions: - * pthread_create() - * pthread_join() - * pthread_mutexattr_init() - * pthread_mutexattr_destroy() - * pthread_mutexattr_settype() - * pthread_mutexattr_gettype() - * pthread_mutex_init() - * pthread_mutex_destroy() - * pthread_mutex_lock() - * pthread_mutex_unlock() - */ - -#include "test.h" - -static int lockCount = 0; - -static pthread_mutex_t mutex = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER; - -void * locker(void * arg) -{ - assert(pthread_mutex_lock(&mutex) == 0); - lockCount++; - assert(pthread_mutex_lock(&mutex) == EDEADLK); - lockCount++; - assert(pthread_mutex_unlock(&mutex) == 0); - assert(pthread_mutex_unlock(&mutex) == EPERM); - - return (void *) 555; -} - -int -main() -{ - pthread_t t; - void* result = (void*)0; - - assert(mutex == PTHREAD_ERRORCHECK_MUTEX_INITIALIZER); - - assert(pthread_create(&t, NULL, locker, NULL) == 0); - - assert(pthread_join(t, &result) == 0); - assert((int)(size_t)result == 555); - - assert(lockCount == 2); - - assert(pthread_mutex_destroy(&mutex) == 0); - - exit(0); - - /* Never reached */ - return 0; -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex6n.c b/platform/win32/msvc/external/pthreads.2/tests/mutex6n.c deleted file mode 100644 index a19e254fcad..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex6n.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - * mutex6n.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Tests PTHREAD_MUTEX_NORMAL mutex type. - * Thread locks mutex twice (recursive lock). - * The thread should deadlock. - * - * Depends on API functions: - * pthread_create() - * pthread_mutexattr_init() - * pthread_mutexattr_settype() - * pthread_mutexattr_gettype() - * pthread_mutex_init() - * pthread_mutex_lock() - * pthread_mutex_unlock() - */ - -#include "test.h" - -static int lockCount; - -static pthread_mutex_t mutex; -static pthread_mutexattr_t mxAttr; - -void * locker(void * arg) -{ - assert(pthread_mutex_lock(&mutex) == 0); - lockCount++; - - /* Should wait here (deadlocked) */ - assert(pthread_mutex_lock(&mutex) == 0); - - lockCount++; - assert(pthread_mutex_unlock(&mutex) == 0); - - return (void *) 555; -} - -int -main() -{ - pthread_t t; - int mxType = -1; - - assert(pthread_mutexattr_init(&mxAttr) == 0); - - BEGIN_MUTEX_STALLED_ROBUST(mxAttr) - - lockCount = 0; - assert(pthread_mutexattr_settype(&mxAttr, PTHREAD_MUTEX_NORMAL) == 0); - assert(pthread_mutexattr_gettype(&mxAttr, &mxType) == 0); - assert(mxType == PTHREAD_MUTEX_NORMAL); - - assert(pthread_mutex_init(&mutex, &mxAttr) == 0); - - assert(pthread_create(&t, NULL, locker, NULL) == 0); - - Sleep(100); - - assert(lockCount == 1); - - assert(pthread_mutex_unlock(&mutex) == IS_ROBUST?EPERM:0); - - Sleep (100); - - assert(lockCount == IS_ROBUST?1:2); - - END_MUTEX_STALLED_ROBUST(mxAttr) - - exit(0); - - /* Never reached */ - return 0; -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex6r.c b/platform/win32/msvc/external/pthreads.2/tests/mutex6r.c deleted file mode 100644 index a75eaadd446..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex6r.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - * mutex6r.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Tests PTHREAD_MUTEX_RECURSIVE mutex type. - * Thread locks mutex twice (recursive lock). - * Both locks and unlocks should succeed. - * - * Depends on API functions: - * pthread_create() - * pthread_join() - * pthread_mutexattr_init() - * pthread_mutexattr_destroy() - * pthread_mutexattr_settype() - * pthread_mutexattr_gettype() - * pthread_mutex_init() - * pthread_mutex_destroy() - * pthread_mutex_lock() - * pthread_mutex_unlock() - */ - -#include "test.h" - -static int lockCount; - -static pthread_mutex_t mutex; -static pthread_mutexattr_t mxAttr; - -void * locker(void * arg) -{ - assert(pthread_mutex_lock(&mutex) == 0); - lockCount++; - assert(pthread_mutex_lock(&mutex) == 0); - lockCount++; - assert(pthread_mutex_unlock(&mutex) == 0); - assert(pthread_mutex_unlock(&mutex) == 0); - - return (void *) 555; -} - -int -main() -{ - pthread_t t; - void* result = (void*)0; - int mxType = -1; - - assert(pthread_mutexattr_init(&mxAttr) == 0); - - BEGIN_MUTEX_STALLED_ROBUST(mxAttr) - - lockCount = 0; - assert(pthread_mutexattr_settype(&mxAttr, PTHREAD_MUTEX_RECURSIVE) == 0); - assert(pthread_mutexattr_gettype(&mxAttr, &mxType) == 0); - assert(mxType == PTHREAD_MUTEX_RECURSIVE); - - assert(pthread_mutex_init(&mutex, &mxAttr) == 0); - - assert(pthread_create(&t, NULL, locker, NULL) == 0); - - assert(pthread_join(t, &result) == 0); - assert((int)(size_t)result == 555); - - assert(lockCount == 2); - - assert(pthread_mutex_destroy(&mutex) == 0); - - END_MUTEX_STALLED_ROBUST(mxAttr) - - assert(pthread_mutexattr_destroy(&mxAttr) == 0); - - exit(0); - - /* Never reached */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex6rs.c b/platform/win32/msvc/external/pthreads.2/tests/mutex6rs.c deleted file mode 100644 index b4fb32a863b..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex6rs.c +++ /dev/null @@ -1,92 +0,0 @@ -/* - * mutex6rs.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Tests PTHREAD_MUTEX_RECURSIVE static mutex type. - * Thread locks mutex twice (recursive lock). - * Both locks and unlocks should succeed. - * - * Depends on API functions: - * pthread_create() - * pthread_join() - * pthread_mutexattr_init() - * pthread_mutexattr_destroy() - * pthread_mutexattr_settype() - * pthread_mutexattr_gettype() - * pthread_mutex_init() - * pthread_mutex_destroy() - * pthread_mutex_lock() - * pthread_mutex_unlock() - */ - -#include "test.h" - -static int lockCount = 0; - -static pthread_mutex_t mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER; - -void * locker(void * arg) -{ - assert(pthread_mutex_lock(&mutex) == 0); - lockCount++; - assert(pthread_mutex_lock(&mutex) == 0); - lockCount++; - assert(pthread_mutex_unlock(&mutex) == 0); - assert(pthread_mutex_unlock(&mutex) == 0); - - return (void *) 555; -} - -int -main() -{ - pthread_t t; - void* result = (void*)0; - - assert(mutex == PTHREAD_RECURSIVE_MUTEX_INITIALIZER); - - assert(pthread_create(&t, NULL, locker, NULL) == 0); - - assert(pthread_join(t, &result) == 0); - assert((int)(size_t)result == 555); - - assert(lockCount == 2); - - assert(pthread_mutex_destroy(&mutex) == 0); - - exit(0); - - /* Never reached */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex6s.c b/platform/win32/msvc/external/pthreads.2/tests/mutex6s.c deleted file mode 100644 index 31f2b5d9f91..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex6s.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - * mutex6s.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test the default (type not set) static mutex type. - * Should be the same as PTHREAD_MUTEX_NORMAL. - * Thread locks mutex twice (recursive lock). - * Locking thread should deadlock on second attempt. - * - * Depends on API functions: - * pthread_mutex_lock() - * pthread_mutex_trylock() - * pthread_mutex_unlock() - */ - -#include "test.h" - -static int lockCount = 0; - -static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; - -void * locker(void * arg) -{ - assert(pthread_mutex_lock(&mutex) == 0); - lockCount++; - - /* Should wait here (deadlocked) */ - assert(pthread_mutex_lock(&mutex) == 0); - lockCount++; - assert(pthread_mutex_unlock(&mutex) == 0); - - return 0; -} - -int -main() -{ - pthread_t t; - - assert(mutex == PTHREAD_MUTEX_INITIALIZER); - - assert(pthread_create(&t, NULL, locker, NULL) == 0); - - Sleep(1000); - - assert(lockCount == 1); - - /* - * Should succeed even though we don't own the lock - * because FAST mutexes don't check ownership. - */ - assert(pthread_mutex_unlock(&mutex) == 0); - - Sleep (1000); - - assert(lockCount == 2); - - exit(0); - - /* Never reached */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex7.c b/platform/win32/msvc/external/pthreads.2/tests/mutex7.c deleted file mode 100644 index bbe32363438..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex7.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * mutex7.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test the default (type not set) mutex type. - * Should be the same as PTHREAD_MUTEX_NORMAL. - * Thread locks then trylocks mutex (attempted recursive lock). - * The thread should lock first time and EBUSY second time. - * - * Depends on API functions: - * pthread_mutex_lock() - * pthread_mutex_trylock() - * pthread_mutex_unlock() - */ - -#include "test.h" - -static int lockCount = 0; - -static pthread_mutex_t mutex; - -void * locker(void * arg) -{ - assert(pthread_mutex_lock(&mutex) == 0); - lockCount++; - assert(pthread_mutex_trylock(&mutex) == EBUSY); - lockCount++; - assert(pthread_mutex_unlock(&mutex) == 0); - assert(pthread_mutex_unlock(&mutex) == 0); - - return 0; -} - -int -main() -{ - pthread_t t; - - assert(pthread_mutex_init(&mutex, NULL) == 0); - - assert(pthread_create(&t, NULL, locker, NULL) == 0); - - Sleep(1000); - - assert(lockCount == 2); - - exit(0); - - /* Never reached */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex7e.c b/platform/win32/msvc/external/pthreads.2/tests/mutex7e.c deleted file mode 100644 index 0552d65647f..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex7e.c +++ /dev/null @@ -1,108 +0,0 @@ -/* - * mutex7e.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Tests PTHREAD_MUTEX_ERRORCHECK mutex type. - * Thread locks and then trylocks mutex (attempted recursive lock). - * Trylock should fail with an EBUSY error. - * The second unlock attempt should fail with an EPERM error. - * - * Depends on API functions: - * pthread_create() - * pthread_join() - * pthread_mutexattr_init() - * pthread_mutexattr_destroy() - * pthread_mutexattr_settype() - * pthread_mutexattr_gettype() - * pthread_mutex_init() - * pthread_mutex_destroy() - * pthread_mutex_lock() - * pthread_mutex_unlock() - */ - -#include "test.h" - -static int lockCount; - -static pthread_mutex_t mutex; -static pthread_mutexattr_t mxAttr; - -void * locker(void * arg) -{ - assert(pthread_mutex_lock(&mutex) == 0); - lockCount++; - assert(pthread_mutex_trylock(&mutex) == EBUSY); - lockCount++; - assert(pthread_mutex_unlock(&mutex) == 0); - - return (void *) 555; -} - -int -main() -{ - pthread_t t; - void* result = (void*)0; - int mxType = -1; - - assert(pthread_mutexattr_init(&mxAttr) == 0); - - BEGIN_MUTEX_STALLED_ROBUST(mxAttr) - - lockCount = 0; - assert(pthread_mutexattr_settype(&mxAttr, PTHREAD_MUTEX_ERRORCHECK) == 0); - assert(pthread_mutexattr_gettype(&mxAttr, &mxType) == 0); - assert(mxType == PTHREAD_MUTEX_ERRORCHECK); - - assert(pthread_mutex_init(&mutex, &mxAttr) == 0); - - assert(pthread_create(&t, NULL, locker, NULL) == 0); - - assert(pthread_join(t, &result) == 0); - assert((int)(size_t)result == 555); - - assert(lockCount == 2); - - assert(pthread_mutex_destroy(&mutex) == 0); - - END_MUTEX_STALLED_ROBUST(mxAttr) - - assert(pthread_mutexattr_destroy(&mxAttr) == 0); - - exit(0); - - /* Never reached */ - return 0; -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex7n.c b/platform/win32/msvc/external/pthreads.2/tests/mutex7n.c deleted file mode 100644 index 7cb0ddc8619..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex7n.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - * mutex7n.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Tests PTHREAD_MUTEX_NORMAL mutex type. - * Thread locks then trylocks mutex (attempted recursive lock). - * The thread should lock first time and EBUSY second time. - * - * Depends on API functions: - * pthread_create() - * pthread_mutexattr_init() - * pthread_mutexattr_settype() - * pthread_mutexattr_gettype() - * pthread_mutex_init() - * pthread_mutex_lock() - * pthread_mutex_unlock() - */ - -#include "test.h" - -static int lockCount; - -static pthread_mutex_t mutex; -static pthread_mutexattr_t mxAttr; - -void * locker(void * arg) -{ - assert(pthread_mutex_lock(&mutex) == 0); - lockCount++; - assert(pthread_mutex_trylock(&mutex) == EBUSY); - lockCount++; - assert(pthread_mutex_unlock(&mutex) == 0); - - return (void *) 555; -} - -int -main() -{ - pthread_t t; - int mxType = -1; - - assert(pthread_mutexattr_init(&mxAttr) == 0); - - BEGIN_MUTEX_STALLED_ROBUST(mxAttr) - - lockCount = 0; - assert(pthread_mutexattr_settype(&mxAttr, PTHREAD_MUTEX_NORMAL) == 0); - assert(pthread_mutexattr_gettype(&mxAttr, &mxType) == 0); - assert(mxType == PTHREAD_MUTEX_NORMAL); - - assert(pthread_mutex_init(&mutex, &mxAttr) == 0); - - assert(pthread_create(&t, NULL, locker, NULL) == 0); - - Sleep(100); - - assert(lockCount == 2); - - END_MUTEX_STALLED_ROBUST(mxAttr) - - assert(pthread_mutexattr_destroy(&mxAttr) == 0); - - exit(0); - - /* Never reached */ - return 0; -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex7r.c b/platform/win32/msvc/external/pthreads.2/tests/mutex7r.c deleted file mode 100644 index d1d6fd13340..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex7r.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - * mutex7r.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Tests PTHREAD_MUTEX_RECURSIVE mutex type. - * Thread locks mutex then trylocks mutex (recursive lock twice). - * Both locks and unlocks should succeed. - * - * Depends on API functions: - * pthread_create() - * pthread_join() - * pthread_mutexattr_init() - * pthread_mutexattr_destroy() - * pthread_mutexattr_settype() - * pthread_mutexattr_gettype() - * pthread_mutex_init() - * pthread_mutex_destroy() - * pthread_mutex_lock() - * pthread_mutex_unlock() - */ - -#include "test.h" - -static int lockCount; - -static pthread_mutex_t mutex; -static pthread_mutexattr_t mxAttr; - -void * locker(void * arg) -{ - assert(pthread_mutex_lock(&mutex) == 0); - lockCount++; - assert(pthread_mutex_trylock(&mutex) == 0); - lockCount++; - assert(pthread_mutex_unlock(&mutex) == 0); - assert(pthread_mutex_unlock(&mutex) == 0); - - return (void *) 555; -} - -int -main() -{ - pthread_t t; - void* result = (void*)0; - int mxType = -1; - - assert(pthread_mutexattr_init(&mxAttr) == 0); - - BEGIN_MUTEX_STALLED_ROBUST(mxAttr) - - lockCount = 0; - assert(pthread_mutexattr_settype(&mxAttr, PTHREAD_MUTEX_RECURSIVE) == 0); - assert(pthread_mutexattr_gettype(&mxAttr, &mxType) == 0); - assert(mxType == PTHREAD_MUTEX_RECURSIVE); - - assert(pthread_mutex_init(&mutex, &mxAttr) == 0); - - assert(pthread_create(&t, NULL, locker, NULL) == 0); - - assert(pthread_join(t, &result) == 0); - assert((int)(size_t)result == 555); - - assert(lockCount == 2); - - assert(pthread_mutex_destroy(&mutex) == 0); - - END_MUTEX_STALLED_ROBUST(mxAttr) - - assert(pthread_mutexattr_destroy(&mxAttr) == 0); - - exit(0); - - /* Never reached */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex8.c b/platform/win32/msvc/external/pthreads.2/tests/mutex8.c deleted file mode 100644 index 608e3ac0171..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex8.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * mutex8.c - * - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright (C) 1998 Ben Elliston and Ross Johnson - * Copyright (C) 1999,2000,2001 Ross Johnson - * - * Contact Email: rpj@ise.canberra.edu.au - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * -------------------------------------------------------------------------- - * - * Test the default (type not set) mutex type exercising timedlock. - * Thread locks mutex, another thread timedlocks the mutex. - * Timed thread should timeout. - * - * Depends on API functions: - * pthread_mutex_lock() - * pthread_mutex_timedlock() - * pthread_mutex_unlock() - */ - -#include "test.h" -#include - -static int lockCount = 0; - -static pthread_mutex_t mutex; - -void * locker(void * arg) -{ - struct timespec abstime = { 0, 0 }; - PTW32_STRUCT_TIMEB currSysTime; - const DWORD NANOSEC_PER_MILLISEC = 1000000; - - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = (long)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - - abstime.tv_sec += 1; - - assert(pthread_mutex_timedlock(&mutex, &abstime) == ETIMEDOUT); - - lockCount++; - - return 0; -} - -int -main() -{ - pthread_t t; - - assert(pthread_mutex_init(&mutex, NULL) == 0); - - assert(pthread_mutex_lock(&mutex) == 0); - - assert(pthread_create(&t, NULL, locker, NULL) == 0); - - Sleep(2000); - - assert(lockCount == 1); - - assert(pthread_mutex_unlock(&mutex) == 0); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex8e.c b/platform/win32/msvc/external/pthreads.2/tests/mutex8e.c deleted file mode 100644 index d3068ec4200..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex8e.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - * mutex8e.c - * - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright (C) 1998 Ben Elliston and Ross Johnson - * Copyright (C) 1999,2000,2001 Ross Johnson - * - * Contact Email: rpj@ise.canberra.edu.au - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * -------------------------------------------------------------------------- - * - * Tests PTHREAD_MUTEX_ERRORCHECK mutex type exercising timedlock. - * Thread locks mutex, another thread timedlocks the mutex. - * Timed thread should timeout. - * - * Depends on API functions: - * pthread_create() - * pthread_mutexattr_init() - * pthread_mutexattr_destroy() - * pthread_mutexattr_settype() - * pthread_mutexattr_gettype() - * pthread_mutex_init() - * pthread_mutex_destroy() - * pthread_mutex_lock() - * pthread_mutex_timedlock() - * pthread_mutex_unlock() - */ - -#include "test.h" -#include - -static int lockCount; - -static pthread_mutex_t mutex; -static pthread_mutexattr_t mxAttr; - -void * locker(void * arg) -{ - struct timespec abstime = { 0, 0 }; - PTW32_STRUCT_TIMEB currSysTime; - const DWORD NANOSEC_PER_MILLISEC = 1000000; - - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = (long)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - - abstime.tv_sec += 1; - - assert(pthread_mutex_timedlock(&mutex, &abstime) == ETIMEDOUT); - - lockCount++; - - return 0; -} - -int -main() -{ - pthread_t t; - int mxType = -1; - - assert(pthread_mutexattr_init(&mxAttr) == 0); - - BEGIN_MUTEX_STALLED_ROBUST(mxAttr) - - lockCount = 0; - assert(pthread_mutexattr_settype(&mxAttr, PTHREAD_MUTEX_ERRORCHECK) == 0); - assert(pthread_mutexattr_gettype(&mxAttr, &mxType) == 0); - assert(mxType == PTHREAD_MUTEX_ERRORCHECK); - - assert(pthread_mutex_init(&mutex, &mxAttr) == 0); - - assert(pthread_mutex_lock(&mutex) == 0); - - assert(pthread_create(&t, NULL, locker, NULL) == 0); - - Sleep(2000); - - assert(lockCount == 1); - - assert(pthread_mutex_unlock(&mutex) == 0); - - END_MUTEX_STALLED_ROBUST(mxAttr) - - return 0; -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex8n.c b/platform/win32/msvc/external/pthreads.2/tests/mutex8n.c deleted file mode 100644 index 21af6a48ca1..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex8n.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - * mutex8n.c - * - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright (C) 1998 Ben Elliston and Ross Johnson - * Copyright (C) 1999,2000,2001 Ross Johnson - * - * Contact Email: rpj@ise.canberra.edu.au - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * -------------------------------------------------------------------------- - * - * Tests PTHREAD_MUTEX_NORMAL mutex type exercising timedlock. - * Thread locks mutex, another thread timedlocks the mutex. - * Timed thread should timeout. - * - * Depends on API functions: - * pthread_create() - * pthread_mutexattr_init() - * pthread_mutexattr_destroy() - * pthread_mutexattr_settype() - * pthread_mutexattr_gettype() - * pthread_mutex_init() - * pthread_mutex_destroy() - * pthread_mutex_lock() - * pthread_mutex_timedlock() - * pthread_mutex_unlock() - */ - -#include "test.h" -#include - -static int lockCount; - -static pthread_mutex_t mutex; -static pthread_mutexattr_t mxAttr; - -void * locker(void * arg) -{ - struct timespec abstime = { 0, 0 }; - PTW32_STRUCT_TIMEB currSysTime; - const DWORD NANOSEC_PER_MILLISEC = 1000000; - - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = (long)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - - abstime.tv_sec += 1; - - assert(pthread_mutex_timedlock(&mutex, &abstime) == ETIMEDOUT); - - lockCount++; - - return 0; -} - -int -main() -{ - pthread_t t; - int mxType = -1; - - assert(pthread_mutexattr_init(&mxAttr) == 0); - - BEGIN_MUTEX_STALLED_ROBUST(mxAttr) - - lockCount = 0; - assert(pthread_mutexattr_settype(&mxAttr, PTHREAD_MUTEX_NORMAL) == 0); - assert(pthread_mutexattr_gettype(&mxAttr, &mxType) == 0); - assert(mxType == PTHREAD_MUTEX_NORMAL); - - assert(pthread_mutex_init(&mutex, &mxAttr) == 0); - - assert(pthread_mutex_lock(&mutex) == 0); - - assert(pthread_create(&t, NULL, locker, NULL) == 0); - - Sleep(2000); - - assert(lockCount == 1); - - assert(pthread_mutex_unlock(&mutex) == 0); - - END_MUTEX_STALLED_ROBUST(mxAttr) - - return 0; -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/mutex8r.c b/platform/win32/msvc/external/pthreads.2/tests/mutex8r.c deleted file mode 100644 index f97b2b4b560..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/mutex8r.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - * mutex8r.c - * - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright (C) 1998 Ben Elliston and Ross Johnson - * Copyright (C) 1999,2000,2001 Ross Johnson - * - * Contact Email: rpj@ise.canberra.edu.au - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * -------------------------------------------------------------------------- - * - * Tests PTHREAD_MUTEX_RECURSIVE mutex type exercising timedlock. - * Thread locks mutex, another thread timedlocks the mutex. - * Timed thread should timeout. - * - * Depends on API functions: - * pthread_create() - * pthread_mutexattr_init() - * pthread_mutexattr_destroy() - * pthread_mutexattr_settype() - * pthread_mutexattr_gettype() - * pthread_mutex_init() - * pthread_mutex_destroy() - * pthread_mutex_lock() - * pthread_mutex_timedlock() - * pthread_mutex_unlock() - */ - -#include "test.h" -#include - -static int lockCount; - -static pthread_mutex_t mutex; -static pthread_mutexattr_t mxAttr; - -void * locker(void * arg) -{ - struct timespec abstime = { 0, 0 }; - PTW32_STRUCT_TIMEB currSysTime; - const DWORD NANOSEC_PER_MILLISEC = 1000000; - - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = (long)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - - abstime.tv_sec += 1; - - assert(pthread_mutex_timedlock(&mutex, &abstime) == ETIMEDOUT); - - lockCount++; - - return 0; -} - -int -main() -{ - pthread_t t; - int mxType = -1; - - assert(pthread_mutexattr_init(&mxAttr) == 0); - - BEGIN_MUTEX_STALLED_ROBUST(mxAttr) - - lockCount = 0; - assert(pthread_mutexattr_settype(&mxAttr, PTHREAD_MUTEX_RECURSIVE) == 0); - assert(pthread_mutexattr_gettype(&mxAttr, &mxType) == 0); - assert(mxType == PTHREAD_MUTEX_RECURSIVE); - - assert(pthread_mutex_init(&mutex, &mxAttr) == 0); - - assert(pthread_mutex_lock(&mutex) == 0); - - assert(pthread_create(&t, NULL, locker, NULL) == 0); - - Sleep(2000); - - assert(lockCount == 1); - - assert(pthread_mutex_unlock(&mutex) == 0); - - END_MUTEX_STALLED_ROBUST(mxAttr) - - return 0; -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/once1.c b/platform/win32/msvc/external/pthreads.2/tests/once1.c deleted file mode 100644 index ac58e63971c..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/once1.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - * once1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Create a static pthread_once and test that it calls myfunc once. - * - * Depends on API functions: - * pthread_once() - * pthread_create() - */ - -#include "test.h" - -pthread_once_t once = PTHREAD_ONCE_INIT; - -static int washere = 0; - -void -myfunc(void) -{ - washere++; -} - -void * -mythread(void * arg) -{ - assert(pthread_once(&once, myfunc) == 0); - - return 0; -} - -int -main() -{ - pthread_t t1, t2; - - assert(pthread_create(&t1, NULL, mythread, NULL) == 0); - - assert(pthread_create(&t2, NULL, mythread, NULL) == 0); - - Sleep(2000); - - assert(washere == 1); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/once2.c b/platform/win32/msvc/external/pthreads.2/tests/once2.c deleted file mode 100644 index beb78e41d7a..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/once2.c +++ /dev/null @@ -1,113 +0,0 @@ -/* - * once2.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Create several static pthread_once objects and channel several threads - * through each. - * - * Depends on API functions: - * pthread_once() - * pthread_create() - */ - -#include "test.h" - -#define NUM_THREADS 100 /* Targeting each once control */ -#define NUM_ONCE 10 - -pthread_once_t o = PTHREAD_ONCE_INIT; -pthread_once_t once[NUM_ONCE]; - -typedef struct { - int i; - CRITICAL_SECTION cs; -} sharedInt_t; - -static sharedInt_t numOnce = {0, {0}}; -static sharedInt_t numThreads = {0, {0}}; - -void -myfunc(void) -{ - EnterCriticalSection(&numOnce.cs); - numOnce.i++; - LeaveCriticalSection(&numOnce.cs); - /* Simulate slow once routine so that following threads pile up behind it */ - Sleep(100); -} - -void * -mythread(void * arg) -{ - assert(pthread_once(&once[(int)(size_t)arg], myfunc) == 0); - EnterCriticalSection(&numThreads.cs); - numThreads.i++; - LeaveCriticalSection(&numThreads.cs); - return (void*)(size_t)0; -} - -int -main() -{ - pthread_t t[NUM_THREADS][NUM_ONCE]; - int i, j; - - InitializeCriticalSection(&numThreads.cs); - InitializeCriticalSection(&numOnce.cs); - - for (j = 0; j < NUM_ONCE; j++) - { - once[j] = o; - - for (i = 0; i < NUM_THREADS; i++) - { - /* GCC build: create was failing with EAGAIN after 790 threads */ - while (0 != pthread_create(&t[i][j], NULL, mythread, (void *)(size_t)j)) - sched_yield(); - } - } - - for (j = 0; j < NUM_ONCE; j++) - for (i = 0; i < NUM_THREADS; i++) - if (pthread_join(t[i][j], NULL) != 0) - printf("Join failed for [thread,once] = [%d,%d]\n", i, j); - - assert(numOnce.i == NUM_ONCE); - assert(numThreads.i == NUM_THREADS * NUM_ONCE); - - DeleteCriticalSection(&numOnce.cs); - DeleteCriticalSection(&numThreads.cs); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/once3.c b/platform/win32/msvc/external/pthreads.2/tests/once3.c deleted file mode 100644 index 3a91a305c38..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/once3.c +++ /dev/null @@ -1,134 +0,0 @@ -/* - * once3.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Create several pthread_once objects and channel several threads - * through each. Make the init_routine cancelable and cancel them with - * waiters waiting. - * - * Depends on API functions: - * pthread_once() - * pthread_create() - * pthread_testcancel() - * pthread_cancel() - * pthread_once() - */ - -/* #define ASSERT_TRACE */ - -#include "test.h" - -#define NUM_THREADS 100 /* Targeting each once control */ -#define NUM_ONCE 10 - -static pthread_once_t o = PTHREAD_ONCE_INIT; -static pthread_once_t once[NUM_ONCE]; - -typedef struct { - int i; - CRITICAL_SECTION cs; -} sharedInt_t; - -static sharedInt_t numOnce = {0, {0}}; -static sharedInt_t numThreads = {0, {0}}; - -void -myfunc(void) -{ - EnterCriticalSection(&numOnce.cs); - numOnce.i++; - assert(numOnce.i > 0); - LeaveCriticalSection(&numOnce.cs); - /* Simulate slow once routine so that following threads pile up behind it */ - Sleep(10); - /* test for cancelation late so we're sure to have waiters. */ - pthread_testcancel(); -} - -void * -mythread(void * arg) -{ - /* - * Cancel every thread. These threads are deferred cancelable only, so - * only the thread performing the once routine (my_func) will see it (there are - * no other cancelation points here). The result will be that every thread - * eventually cancels only when it becomes the new 'once' thread. - */ - assert(pthread_cancel(pthread_self()) == 0); - assert(pthread_once(&once[(int)(size_t)arg], myfunc) == 0); - EnterCriticalSection(&numThreads.cs); - numThreads.i++; - LeaveCriticalSection(&numThreads.cs); - return (void*)(size_t)0; -} - -int -main() -{ - pthread_t t[NUM_THREADS][NUM_ONCE]; - int i, j; - - InitializeCriticalSection(&numThreads.cs); - InitializeCriticalSection(&numOnce.cs); - - for (j = 0; j < NUM_ONCE; j++) - { - once[j] = o; - - for (i = 0; i < NUM_THREADS; i++) - { - /* GCC build: create was failing with EAGAIN after 790 threads */ - while (0 != pthread_create(&t[i][j], NULL, mythread, (void *)(size_t)j)) - sched_yield(); - } - } - - for (j = 0; j < NUM_ONCE; j++) - for (i = 0; i < NUM_THREADS; i++) - if (pthread_join(t[i][j], NULL) != 0) - printf("Join failed for [thread,once] = [%d,%d]\n", i, j); - - /* - * All threads will cancel, none will return normally from - * pthread_once and so numThreads should never be incremented. However, - * numOnce should be incremented by every thread (NUM_THREADS*NUM_ONCE). - */ - assert(numOnce.i == NUM_ONCE * NUM_THREADS); - assert(numThreads.i == 0); - - DeleteCriticalSection(&numOnce.cs); - DeleteCriticalSection(&numThreads.cs); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/once4.c b/platform/win32/msvc/external/pthreads.2/tests/once4.c deleted file mode 100644 index b7ef3690fd6..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/once4.c +++ /dev/null @@ -1,193 +0,0 @@ -/* - * once4.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Create several pthread_once objects and channel several threads - * through each. Make the init_routine cancelable and cancel them - * waiters waiting. Vary the priorities. - * - * Depends on API functions: - * pthread_once() - * pthread_create() - * pthread_testcancel() - * pthread_cancel() - * pthread_once() - */ - -#include "test.h" - -#define NUM_THREADS 100 /* Targeting each once control */ -#define NUM_ONCE 10 - -pthread_once_t o = PTHREAD_ONCE_INIT; -pthread_once_t once[NUM_ONCE]; - -typedef struct { - int i; - CRITICAL_SECTION cs; -} sharedInt_t; - -static sharedInt_t numOnce = {0, {0}}; -static sharedInt_t numThreads = {0, {0}}; - -typedef struct { - int threadnum; - int oncenum; - int myPrio; - HANDLE w32Thread; -} bag_t; - -static bag_t threadbag[NUM_THREADS][NUM_ONCE]; - -CRITICAL_SECTION print_lock; - -void -mycleanupfunc(void * arg) -{ - bag_t * bag = (bag_t *) arg; - EnterCriticalSection(&print_lock); - /* once thrd prio error */ - printf("%4d %4d %4d %4d\n", - bag->oncenum, - bag->threadnum, - bag->myPrio, - bag->myPrio - GetThreadPriority(bag->w32Thread)); - LeaveCriticalSection(&print_lock); -} - -void -myinitfunc(void) -{ - EnterCriticalSection(&numOnce.cs); - numOnce.i++; - LeaveCriticalSection(&numOnce.cs); - /* Simulate slow once routine so that following threads pile up behind it */ - Sleep(10); - /* test for cancelation late so we're sure to have waiters. */ - pthread_testcancel(); -} - -void * -mythread(void * arg) -{ - bag_t * bag = (bag_t *) arg; - struct sched_param param; - - /* - * Cancel every thread. These threads are deferred cancelable only, so - * only the thread performing the init_routine will see it (there are - * no other cancelation points here). The result will be that every thread - * eventually cancels only when it becomes the new initter. - */ - pthread_t self = pthread_self(); - bag->w32Thread = pthread_getw32threadhandle_np(self); - /* - * Set priority between -2 and 2 inclusive. - */ - bag->myPrio = (bag->threadnum % 5) - 2; - param.sched_priority = bag->myPrio; - pthread_setschedparam(self, SCHED_OTHER, ¶m); - - /* Trigger a cancellation at the next cancellation point in this thread */ - pthread_cancel(self); -#if 0 - pthread_cleanup_push(mycleanupfunc, arg); - assert(pthread_once(&once[bag->oncenum], myinitfunc) == 0); - pthread_cleanup_pop(1); -#else - assert(pthread_once(&once[bag->oncenum], myinitfunc) == 0); -#endif - EnterCriticalSection(&numThreads.cs); - numThreads.i++; - LeaveCriticalSection(&numThreads.cs); - return 0; -} - -int -main() -{ - pthread_t t[NUM_THREADS][NUM_ONCE]; - int i, j; - - InitializeCriticalSection(&print_lock); - InitializeCriticalSection(&numThreads.cs); - InitializeCriticalSection(&numOnce.cs); - -#if 0 - /* once thrd prio change */ - printf("once thrd prio error\n"); -#endif - - /* - * Set the priority class to realtime - otherwise normal - * Windows random priority boosting will obscure any problems. - */ - SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS); - /* Set main thread to lower prio than threads */ - SetThreadPriority(GetCurrentThread(), -2); - - for (j = 0; j < NUM_ONCE; j++) - { - once[j] = o; - - for (i = 0; i < NUM_THREADS; i++) - { - bag_t * bag = &threadbag[i][j]; - bag->threadnum = i; - bag->oncenum = j; - /* GCC build: create was failing with EAGAIN after 790 threads */ - while (0 != pthread_create(&t[i][j], NULL, mythread, (void *)bag)) - sched_yield(); - } - } - - for (j = 0; j < NUM_ONCE; j++) - for (i = 0; i < NUM_THREADS; i++) - if (pthread_join(t[i][j], NULL) != 0) - printf("Join failed for [thread,once] = [%d,%d]\n", i, j); - - /* - * All threads will cancel, none will return normally from - * pthread_once and so numThreads should never be incremented. However, - * numOnce should be incremented by every thread (NUM_THREADS*NUM_ONCE). - */ - assert(numOnce.i == NUM_ONCE * NUM_THREADS); - assert(numThreads.i == 0); - - DeleteCriticalSection(&numOnce.cs); - DeleteCriticalSection(&numThreads.cs); - DeleteCriticalSection(&print_lock); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/openmp1.c b/platform/win32/msvc/external/pthreads.2/tests/openmp1.c deleted file mode 100644 index 611cae18711..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/openmp1.c +++ /dev/null @@ -1,140 +0,0 @@ -#include -#include -#ifdef _OPENMP -# include -#endif -#include - -enum { - Size = 10000 -}; - -const int ShouldSum = (Size-1)*Size/2; - -short Verbose = 1; - -short ThreadOK[3] = {0,0,0}; // Main, Thread1, Thread2 - -// Thread -void *_thread(void* Id) { - int i; - int x[Size]; - -#ifdef _OPENMP -# pragma omp parallel for -#endif - for ( i = 0; i < Size; i++ ) { -#ifdef _OPENMP - if (Verbose && i%1000==0) { - int tid = omp_get_thread_num(); -# pragma omp critical - printf("thread %d : tid %d handles %d\n",(int)Id,tid,i); - } -#endif - - x[i] = i; - } - - int Sum=0; - for ( i = 0; i < Size; i++ ) { - Sum += x[i]; - } - if (Verbose) { -#ifdef _OPENMP -# pragma omp critical -#endif - printf("Id %d : %s : %d(should be %d)\n",(int)Id, __FUNCTION__, Sum,ShouldSum); - } - if (Sum == ShouldSum) ThreadOK[(int)Id] = 1; - return NULL; -} - -// MainThread -void MainThread() { - int i; - -#ifdef _OPENMP -# pragma omp parallel for -#endif - for ( i = 0; i < 4; i++ ) { -#ifdef _OPENMP - int tid = omp_get_thread_num(); -# pragma omp critical - printf("Main : tid %d\n",tid); - _thread((void *)tid); -#endif - } - return; -} - -// Comment in/out for checking the effect of multiple threads. -#define SPAWN_THREADS - -// main -int main(int argc, char *argv[]) { - - if (argc>1) Verbose = 1; - -#ifdef _OPENMP - omp_set_nested(-1); - printf("%s%s%s\n", "Nested parallel blocks are ", omp_get_nested()?" ":"NOT ", "supported."); -#endif - - MainThread(); - -#ifdef SPAWN_THREADS - { - pthread_t a_thr; - pthread_t b_thr; - int status; - - printf("%s:%d - %s - a_thr:%p - b_thr:%p\n", - __FILE__,__LINE__,__FUNCTION__,a_thr.p,b_thr.p); - - status = pthread_create(&a_thr, NULL, _thread, (void*) 1 ); - if ( status != 0 ) { - printf("Failed to create thread 1\n"); - return (-1); - } - - status = pthread_create(&b_thr, NULL, _thread, (void*) 2 ); - if ( status != 0 ) { - printf("Failed to create thread 2\n"); - return (-1); - } - - status = pthread_join(a_thr, NULL); - if ( status != 0 ) { - printf("Failed to join thread 1\n"); - return (-1); - } - printf("Joined thread1\n"); - - status = pthread_join(b_thr, NULL); - if ( status != 0 ) { - printf("Failed to join thread 2\n"); - return (-1); - } - printf("Joined thread2\n"); - } -#endif // SPAWN_THREADS - - short OK = 0; - // Check that we have OpenMP before declaring things OK formally. -#ifdef _OPENMP - OK = 1; - { - short i; - for (i=0;i<3;i++) OK &= ThreadOK[i]; - } - if (OK) printf("OMP : All looks good\n"); - else printf("OMP : Error\n"); -#else - printf("OpenMP seems not enabled ...\n"); -#endif - - return OK?0:1; -} - -//g++ -fopenmp omp_test.c -o omp_test -lpthread - diff --git a/platform/win32/msvc/external/pthreads.2/tests/priority1.c b/platform/win32/msvc/external/pthreads.2/tests/priority1.c deleted file mode 100644 index c0a5d187be6..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/priority1.c +++ /dev/null @@ -1,172 +0,0 @@ -/* - * File: priority1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Test thread priority explicit setting using thread attribute. - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" - -enum { - PTW32TEST_THREAD_INIT_PRIO = 0, - PTW32TEST_MAXPRIORITIES = 512 -}; - -int minPrio; -int maxPrio; -int validPriorities[PTW32TEST_MAXPRIORITIES]; - -void * -func(void * arg) -{ - int policy; - struct sched_param param; - pthread_t threadID = pthread_self(); - - assert(pthread_getschedparam(threadID, &policy, ¶m) == 0); - assert(policy == SCHED_OTHER); - return (void *) (size_t)(param.sched_priority); -} - -void * -getValidPriorities(void * arg) -{ - int prioSet; - pthread_t threadID = pthread_self(); - HANDLE threadH = pthread_getw32threadhandle_np(threadID); - - printf("Using GetThreadPriority\n"); - printf("%10s %10s\n", "Set value", "Get value"); - - for (prioSet = minPrio; - prioSet <= maxPrio; - prioSet++) - { - /* - * If prioSet is invalid then the threads priority is unchanged - * from the previous value. Make the previous value a known - * one so that we can check later. - */ - if (prioSet < 0) - SetThreadPriority(threadH, THREAD_PRIORITY_LOWEST); - else - SetThreadPriority(threadH, THREAD_PRIORITY_HIGHEST); - SetThreadPriority(threadH, prioSet); - validPriorities[prioSet+(PTW32TEST_MAXPRIORITIES/2)] = GetThreadPriority(threadH); - printf("%10d %10d\n", prioSet, validPriorities[prioSet+(PTW32TEST_MAXPRIORITIES/2)]); - } - - return (void *) 0; -} - - -int -main() -{ - pthread_t t; - pthread_attr_t attr; - void * result = NULL; - struct sched_param param; - - assert((maxPrio = sched_get_priority_max(SCHED_OTHER)) != -1); - assert((minPrio = sched_get_priority_min(SCHED_OTHER)) != -1); - - assert(pthread_create(&t, NULL, getValidPriorities, NULL) == 0); - assert(pthread_join(t, &result) == 0); - - assert(pthread_attr_init(&attr) == 0); - assert(pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED) == 0); - - /* Set the thread's priority to a known initial value. */ - SetThreadPriority(pthread_getw32threadhandle_np(pthread_self()), - PTW32TEST_THREAD_INIT_PRIO); - - printf("Using pthread_getschedparam\n"); - printf("%10s %10s %10s\n", "Set value", "Get value", "Win priority"); - - for (param.sched_priority = minPrio; - param.sched_priority <= maxPrio; - param.sched_priority++) - { - int prio; - - assert(pthread_attr_setschedparam(&attr, ¶m) == 0); - assert(pthread_create(&t, &attr, func, (void *) &attr) == 0); - - assert((prio = GetThreadPriority(pthread_getw32threadhandle_np(t))) - == validPriorities[param.sched_priority+(PTW32TEST_MAXPRIORITIES/2)]); - - assert(pthread_join(t, &result) == 0); - - assert(param.sched_priority == (int)(size_t) result); - printf("%10d %10d %10d\n", param.sched_priority, (int)(size_t) result, prio); - } - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/priority2.c b/platform/win32/msvc/external/pthreads.2/tests/priority2.c deleted file mode 100644 index ca3330dc6e9..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/priority2.c +++ /dev/null @@ -1,169 +0,0 @@ -/* - * File: priority2.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Test thread priority setting after creation. - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" - -enum { - PTW32TEST_THREAD_INIT_PRIO = 0, - PTW32TEST_MAXPRIORITIES = 512 -}; - -int minPrio; -int maxPrio; -int validPriorities[PTW32TEST_MAXPRIORITIES]; -pthread_barrier_t startBarrier, endBarrier; - -void * func(void * arg) -{ - int policy; - int result; - struct sched_param param; - - result = pthread_barrier_wait(&startBarrier); - assert(result == 0 || result == PTHREAD_BARRIER_SERIAL_THREAD); - assert(pthread_getschedparam(pthread_self(), &policy, ¶m) == 0); - assert(policy == SCHED_OTHER); - result = pthread_barrier_wait(&endBarrier); - assert(result == 0 || result == PTHREAD_BARRIER_SERIAL_THREAD); - return (void *) (size_t)param.sched_priority; -} - - -void * -getValidPriorities(void * arg) -{ - int prioSet; - pthread_t thread = pthread_self(); - HANDLE threadH = pthread_getw32threadhandle_np(thread); - struct sched_param param; - - for (prioSet = minPrio; - prioSet <= maxPrio; - prioSet++) - { - /* - * If prioSet is invalid then the threads priority is unchanged - * from the previous value. Make the previous value a known - * one so that we can check later. - */ - param.sched_priority = prioSet; - assert(pthread_setschedparam(thread, SCHED_OTHER, ¶m) == 0); - validPriorities[prioSet+(PTW32TEST_MAXPRIORITIES/2)] = GetThreadPriority(threadH); - } - - return (void *) 0; -} - - -int -main() -{ - pthread_t t; - void * result = NULL; - int result2; - struct sched_param param; - - assert((maxPrio = sched_get_priority_max(SCHED_OTHER)) != -1); - assert((minPrio = sched_get_priority_min(SCHED_OTHER)) != -1); - - assert(pthread_create(&t, NULL, getValidPriorities, NULL) == 0); - assert(pthread_join(t, &result) == 0); - - assert(pthread_barrier_init(&startBarrier, NULL, 2) == 0); - assert(pthread_barrier_init(&endBarrier, NULL, 2) == 0); - - /* Set the thread's priority to a known initial value. - * If the new priority is invalid then the threads priority - * is unchanged from the previous value. - */ - SetThreadPriority(pthread_getw32threadhandle_np(pthread_self()), - PTW32TEST_THREAD_INIT_PRIO); - - for (param.sched_priority = minPrio; - param.sched_priority <= maxPrio; - param.sched_priority++) - { - assert(pthread_create(&t, NULL, func, NULL) == 0); - assert(pthread_setschedparam(t, SCHED_OTHER, ¶m) == 0); - result2 = pthread_barrier_wait(&startBarrier); - assert(result2 == 0 || result2 == PTHREAD_BARRIER_SERIAL_THREAD); - result2 = pthread_barrier_wait(&endBarrier); - assert(result2 == 0 || result2 == PTHREAD_BARRIER_SERIAL_THREAD); - assert(GetThreadPriority(pthread_getw32threadhandle_np(t)) == - validPriorities[param.sched_priority+(PTW32TEST_MAXPRIORITIES/2)]); - pthread_join(t, &result); - assert(param.sched_priority == (int)(size_t)result); - } - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/reuse1.c b/platform/win32/msvc/external/pthreads.2/tests/reuse1.c deleted file mode 100644 index cc9830ae65d..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/reuse1.c +++ /dev/null @@ -1,124 +0,0 @@ -/* - * File: reuse1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Confirm that thread reuse works for joined threads. - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" - -enum { - NUMTHREADS = 100 -}; - -static int washere = 0; - -void * func(void * arg) -{ - washere = 1; - return arg; -} - -int -main() -{ - pthread_t t, - last_t; - pthread_attr_t attr; - void * result = NULL; - int i; - - assert(pthread_attr_init(&attr) == 0);; - assert(pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE) == 0); - - washere = 0; - assert(pthread_create(&t, &attr, func, NULL) == 0); - assert(pthread_join(t, &result) == 0);; - assert((int)(size_t)result == 0); - assert(washere == 1); - last_t = t; - - for (i = 1; i < NUMTHREADS; i++) - { - washere = 0; - assert(pthread_create(&t, &attr, func, (void *)(size_t)i) == 0); - pthread_join(t, &result); - assert((int)(size_t) result == i); - assert(washere == 1); - /* thread IDs should be unique */ - assert(!pthread_equal(t, last_t)); - /* thread struct pointers should be the same */ - assert(t.p == last_t.p); - /* thread handle reuse counter should be different by one */ - assert(t.x == last_t.x+1); - last_t = t; - } - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/reuse2.c b/platform/win32/msvc/external/pthreads.2/tests/reuse2.c deleted file mode 100644 index 2d7431190e6..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/reuse2.c +++ /dev/null @@ -1,168 +0,0 @@ -/* - * File: reuse2.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Test that thread reuse works for detached threads. - * - Analyse thread struct reuse. - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - This test is implementation specific - * because it uses knowledge of internals that should be - * opaque to an application. - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" - -/* - */ - -enum { - NUMTHREADS = 10000 -}; - - -static long done = 0; - -void * func(void * arg) -{ - sched_yield(); - - InterlockedIncrement(&done); - - return (void *) 0; -} - -int -main() -{ - pthread_t t[NUMTHREADS]; - pthread_attr_t attr; - int i; - unsigned int notUnique = 0, - totalHandles = 0, - reuseMax = 0, - reuseMin = NUMTHREADS; - - assert(pthread_attr_init(&attr) == 0); - assert(pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED) == 0); - - for (i = 0; i < NUMTHREADS; i++) - { - while(pthread_create(&t[i], &attr, func, NULL) != 0) - Sleep(1); - } - - while (NUMTHREADS > InterlockedExchangeAdd((LPLONG)&done, 0L)) - Sleep(100); - - Sleep(100); - - /* - * Analyse reuse by computing min and max number of times pthread_create() - * returned the same pthread_t value. - */ - for (i = 0; i < NUMTHREADS; i++) - { - if (t[i].p != NULL) - { - unsigned int j, thisMax; - - thisMax = t[i].x; - - for (j = i+1; j < NUMTHREADS; j++) - if (t[i].p == t[j].p) - { - if (t[i].x == t[j].x) - notUnique++; - if (thisMax < t[j].x) - thisMax = t[j].x; - t[j].p = NULL; - } - - if (reuseMin > thisMax) - reuseMin = thisMax; - - if (reuseMax < thisMax) - reuseMax = thisMax; - } - } - - for (i = 0; i < NUMTHREADS; i++) - if (t[i].p != NULL) - totalHandles++; - - /* - * pthread_t reuse counts start at 0, so we need to add 1 - * to the max and min values derived above. - */ - printf("For %d total threads:\n", NUMTHREADS); - printf("Non-unique IDs = %d\n", notUnique); - printf("Reuse maximum = %d\n", reuseMax + 1); - printf("Reuse minimum = %d\n", reuseMin + 1); - printf("Total handles = %d\n", totalHandles); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/robust1.c b/platform/win32/msvc/external/pthreads.2/tests/robust1.c deleted file mode 100644 index 0e80ee247cf..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/robust1.c +++ /dev/null @@ -1,141 +0,0 @@ -/* - * robust1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * For all robust mutex types. - * Thread A locks mutex - * Thread A terminates with no threads waiting on robust mutex - * Thread B acquires (inherits) mutex and unlocks - * Main attempts to lock mutex with unrecovered state. - * - * Depends on API functions: - * pthread_create() - * pthread_join() - * pthread_mutex_init() - * pthread_mutex_lock() - * pthread_mutex_unlock() - * pthread_mutex_destroy() - * pthread_mutexattr_init() - * pthread_mutexattr_setrobust() - * pthread_mutexattr_settype() - * pthread_mutexattr_destroy() - */ - -#include "test.h" - -static int lockCount; - -static pthread_mutex_t mutex; - -void * owner(void * arg) -{ - assert(pthread_mutex_lock(&mutex) == 0); - lockCount++; - - return 0; -} - -void * inheritor(void * arg) -{ - assert(pthread_mutex_lock(&mutex) == EOWNERDEAD); - lockCount++; - assert(pthread_mutex_unlock(&mutex) == 0); - - return 0; -} - -int -main() -{ - pthread_t to, ti; - pthread_mutexattr_t ma; - - assert(pthread_mutexattr_init(&ma) == 0); - assert(pthread_mutexattr_setrobust(&ma, PTHREAD_MUTEX_ROBUST) == 0); - - /* Default (NORMAL) type */ - lockCount = 0; - assert(pthread_mutex_init(&mutex, &ma) == 0); - assert(pthread_create(&to, NULL, owner, NULL) == 0); - assert(pthread_join(to, NULL) == 0); - assert(pthread_create(&ti, NULL, inheritor, NULL) == 0); - assert(pthread_join(ti, NULL) == 0); - assert(lockCount == 2); - assert(pthread_mutex_lock(&mutex) == ENOTRECOVERABLE); - assert(pthread_mutex_unlock(&mutex) == EPERM); - assert(pthread_mutex_destroy(&mutex) == 0); - - /* NORMAL type */ - lockCount = 0; - assert(pthread_mutexattr_settype(&ma, PTHREAD_MUTEX_NORMAL) == 0); - assert(pthread_mutex_init(&mutex, &ma) == 0); - assert(pthread_create(&to, NULL, owner, NULL) == 0); - assert(pthread_join(to, NULL) == 0); - assert(pthread_create(&ti, NULL, inheritor, NULL) == 0); - assert(pthread_join(ti, NULL) == 0); - assert(lockCount == 2); - assert(pthread_mutex_lock(&mutex) == ENOTRECOVERABLE); - assert(pthread_mutex_unlock(&mutex) == EPERM); - assert(pthread_mutex_destroy(&mutex) == 0); - - /* ERRORCHECK type */ - lockCount = 0; - assert(pthread_mutexattr_settype(&ma, PTHREAD_MUTEX_ERRORCHECK) == 0); - assert(pthread_mutex_init(&mutex, &ma) == 0); - assert(pthread_create(&to, NULL, owner, NULL) == 0); - assert(pthread_join(to, NULL) == 0); - assert(pthread_create(&ti, NULL, inheritor, NULL) == 0); - assert(pthread_join(ti, NULL) == 0); - assert(lockCount == 2); - assert(pthread_mutex_lock(&mutex) == ENOTRECOVERABLE); - assert(pthread_mutex_unlock(&mutex) == EPERM); - assert(pthread_mutex_destroy(&mutex) == 0); - - /* RECURSIVE type */ - lockCount = 0; - assert(pthread_mutexattr_settype(&ma, PTHREAD_MUTEX_RECURSIVE) == 0); - assert(pthread_mutex_init(&mutex, &ma) == 0); - assert(pthread_create(&to, NULL, owner, NULL) == 0); - assert(pthread_join(to, NULL) == 0); - assert(pthread_create(&ti, NULL, inheritor, NULL) == 0); - assert(pthread_join(ti, NULL) == 0); - assert(lockCount == 2); - assert(pthread_mutex_lock(&mutex) == ENOTRECOVERABLE); - assert(pthread_mutex_unlock(&mutex) == EPERM); - assert(pthread_mutex_destroy(&mutex) == 0); - - assert(pthread_mutexattr_destroy(&ma) == 0); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/robust2.c b/platform/win32/msvc/external/pthreads.2/tests/robust2.c deleted file mode 100644 index 01b038d87f7..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/robust2.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - * robust2.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * For all robust mutex types. - * Thread A locks mutex - * Thread B blocks on mutex - * Thread A terminates with threads waiting on robust mutex - * Thread B awakes and inherits mutex and unlocks - * Main attempts to lock mutex with unrecovered state. - * - * Depends on API functions: - * pthread_create() - * pthread_join() - * pthread_mutex_init() - * pthread_mutex_lock() - * pthread_mutex_unlock() - * pthread_mutex_destroy() - * pthread_mutexattr_init() - * pthread_mutexattr_setrobust() - * pthread_mutexattr_settype() - * pthread_mutexattr_destroy() - */ - -#include "test.h" - -static int lockCount; - -static pthread_mutex_t mutex; - -void * owner(void * arg) -{ - assert(pthread_mutex_lock(&mutex) == 0); - lockCount++; - Sleep(200); - - return 0; -} - -void * inheritor(void * arg) -{ - assert(pthread_mutex_lock(&mutex) == EOWNERDEAD); - lockCount++; - assert(pthread_mutex_unlock(&mutex) == 0); - - return 0; -} - -int -main() -{ - pthread_t to, ti; - pthread_mutexattr_t ma; - - assert(pthread_mutexattr_init(&ma) == 0); - assert(pthread_mutexattr_setrobust(&ma, PTHREAD_MUTEX_ROBUST) == 0); - - /* Default (NORMAL) type */ - lockCount = 0; - assert(pthread_mutex_init(&mutex, &ma) == 0); - assert(pthread_create(&to, NULL, owner, NULL) == 0); - Sleep(100); - assert(pthread_create(&ti, NULL, inheritor, NULL) == 0); - assert(pthread_join(to, NULL) == 0); - assert(pthread_join(ti, NULL) == 0); - assert(lockCount == 2); - assert(pthread_mutex_lock(&mutex) == ENOTRECOVERABLE); - assert(pthread_mutex_destroy(&mutex) == 0); - - /* NORMAL type */ - lockCount = 0; - assert(pthread_mutexattr_settype(&ma, PTHREAD_MUTEX_NORMAL) == 0); - assert(pthread_mutex_init(&mutex, &ma) == 0); - assert(pthread_create(&to, NULL, owner, NULL) == 0); - Sleep(100); - assert(pthread_create(&ti, NULL, inheritor, NULL) == 0); - assert(pthread_join(to, NULL) == 0); - assert(pthread_join(ti, NULL) == 0); - assert(lockCount == 2); - assert(pthread_mutex_lock(&mutex) == ENOTRECOVERABLE); - assert(pthread_mutex_destroy(&mutex) == 0); - - /* ERRORCHECK type */ - lockCount = 0; - assert(pthread_mutexattr_settype(&ma, PTHREAD_MUTEX_ERRORCHECK) == 0); - assert(pthread_mutex_init(&mutex, &ma) == 0); - assert(pthread_create(&to, NULL, owner, NULL) == 0); - Sleep(100); - assert(pthread_create(&ti, NULL, inheritor, NULL) == 0); - assert(pthread_join(to, NULL) == 0); - assert(pthread_join(ti, NULL) == 0); - assert(lockCount == 2); - assert(pthread_mutex_lock(&mutex) == ENOTRECOVERABLE); - assert(pthread_mutex_destroy(&mutex) == 0); - - /* RECURSIVE type */ - lockCount = 0; - assert(pthread_mutexattr_settype(&ma, PTHREAD_MUTEX_RECURSIVE) == 0); - assert(pthread_mutex_init(&mutex, &ma) == 0); - assert(pthread_create(&to, NULL, owner, NULL) == 0); - Sleep(100); - assert(pthread_create(&ti, NULL, inheritor, NULL) == 0); - assert(pthread_join(to, NULL) == 0); - assert(pthread_join(ti, NULL) == 0); - assert(lockCount == 2); - assert(pthread_mutex_lock(&mutex) == ENOTRECOVERABLE); - assert(pthread_mutex_destroy(&mutex) == 0); - - assert(pthread_mutexattr_destroy(&ma) == 0); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/robust3.c b/platform/win32/msvc/external/pthreads.2/tests/robust3.c deleted file mode 100644 index e9a661ebef6..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/robust3.c +++ /dev/null @@ -1,149 +0,0 @@ -/* - * robust3.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * For all robust mutex types. - * Thread A locks mutex - * Thread B blocks on mutex - * Thread A terminates with threads waiting on robust mutex - * Thread B awakes and inherits mutex, sets consistent and unlocks - * Main acquires mutex with recovered state. - * - * Depends on API functions: - * pthread_create() - * pthread_join() - * pthread_mutex_init() - * pthread_mutex_lock() - * pthread_mutex_unlock() - * pthread_mutex_consistent() - * pthread_mutex_destroy() - * pthread_mutexattr_init() - * pthread_mutexattr_setrobust() - * pthread_mutexattr_settype() - * pthread_mutexattr_destroy() - */ - -#include "test.h" - -static int lockCount; - -static pthread_mutex_t mutex; - -void * owner(void * arg) -{ - assert(pthread_mutex_lock(&mutex) == 0); - lockCount++; - Sleep(200); - - return 0; -} - -void * inheritor(void * arg) -{ - assert(pthread_mutex_lock(&mutex) == EOWNERDEAD); - lockCount++; - assert(pthread_mutex_consistent(&mutex) == 0); - assert(pthread_mutex_unlock(&mutex) == 0); - - return 0; -} - -int -main() -{ - pthread_t to, ti; - pthread_mutexattr_t ma; - - assert(pthread_mutexattr_init(&ma) == 0); - assert(pthread_mutexattr_setrobust(&ma, PTHREAD_MUTEX_ROBUST) == 0); - - /* Default (NORMAL) type */ - lockCount = 0; - assert(pthread_mutex_init(&mutex, &ma) == 0); - assert(pthread_create(&to, NULL, owner, NULL) == 0); - Sleep(100); - assert(pthread_create(&ti, NULL, inheritor, NULL) == 0); - assert(pthread_join(to, NULL) == 0); - assert(pthread_join(ti, NULL) == 0); - assert(lockCount == 2); - assert(pthread_mutex_lock(&mutex) == 0); - assert(pthread_mutex_unlock(&mutex) == 0); - assert(pthread_mutex_destroy(&mutex) == 0); - - /* NORMAL type */ - lockCount = 0; - assert(pthread_mutexattr_settype(&ma, PTHREAD_MUTEX_NORMAL) == 0); - assert(pthread_mutex_init(&mutex, &ma) == 0); - assert(pthread_create(&to, NULL, owner, NULL) == 0); - Sleep(100); - assert(pthread_create(&ti, NULL, inheritor, NULL) == 0); - assert(pthread_join(to, NULL) == 0); - assert(pthread_join(ti, NULL) == 0); - assert(lockCount == 2); - assert(pthread_mutex_lock(&mutex) == 0); - assert(pthread_mutex_unlock(&mutex) == 0); - assert(pthread_mutex_destroy(&mutex) == 0); - - /* ERRORCHECK type */ - lockCount = 0; - assert(pthread_mutexattr_settype(&ma, PTHREAD_MUTEX_ERRORCHECK) == 0); - assert(pthread_mutex_init(&mutex, &ma) == 0); - assert(pthread_create(&to, NULL, owner, NULL) == 0); - Sleep(100); - assert(pthread_create(&ti, NULL, inheritor, NULL) == 0); - assert(pthread_join(to, NULL) == 0); - assert(pthread_join(ti, NULL) == 0); - assert(lockCount == 2); - assert(pthread_mutex_lock(&mutex) == 0); - assert(pthread_mutex_unlock(&mutex) == 0); - assert(pthread_mutex_destroy(&mutex) == 0); - - /* RECURSIVE type */ - lockCount = 0; - assert(pthread_mutexattr_settype(&ma, PTHREAD_MUTEX_RECURSIVE) == 0); - assert(pthread_mutex_init(&mutex, &ma) == 0); - assert(pthread_create(&to, NULL, owner, NULL) == 0); - Sleep(100); - assert(pthread_create(&ti, NULL, inheritor, NULL) == 0); - assert(pthread_join(to, NULL) == 0); - assert(pthread_join(ti, NULL) == 0); - assert(lockCount == 2); - assert(pthread_mutex_lock(&mutex) == 0); - assert(pthread_mutex_unlock(&mutex) == 0); - assert(pthread_mutex_destroy(&mutex) == 0); - - assert(pthread_mutexattr_destroy(&ma) == 0); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/robust4.c b/platform/win32/msvc/external/pthreads.2/tests/robust4.c deleted file mode 100644 index e459f91b48c..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/robust4.c +++ /dev/null @@ -1,199 +0,0 @@ -/* - * robust4.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Thread A locks multiple robust mutexes - * Thread B blocks on same mutexes in different orderings - * Thread A terminates with thread waiting on mutexes - * Thread B awakes and inherits each mutex in turn, sets consistent and unlocks - * Main acquires mutexes with recovered state. - * - * Depends on API functions: - * pthread_create() - * pthread_join() - * pthread_mutex_init() - * pthread_mutex_lock() - * pthread_mutex_unlock() - * pthread_mutex_destroy() - * pthread_mutexattr_init() - * pthread_mutexattr_setrobust() - * pthread_mutexattr_settype() - * pthread_mutexattr_destroy() - */ - -#include "test.h" - -static int lockCount; - -static pthread_mutex_t mutex[3]; - -void * owner(void * arg) -{ - assert(pthread_mutex_lock(&mutex[0]) == 0); - lockCount++; - assert(pthread_mutex_lock(&mutex[1]) == 0); - lockCount++; - assert(pthread_mutex_lock(&mutex[2]) == 0); - lockCount++; - Sleep(200); - - return 0; -} - -void * inheritor(void * arg) -{ - int* o = (int*)arg; - - assert(pthread_mutex_lock(&mutex[o[0]]) == EOWNERDEAD); - lockCount++; - assert(pthread_mutex_lock(&mutex[o[1]]) == EOWNERDEAD); - lockCount++; - assert(pthread_mutex_lock(&mutex[o[2]]) == EOWNERDEAD); - lockCount++; - assert(pthread_mutex_consistent(&mutex[o[2]]) == 0); - assert(pthread_mutex_consistent(&mutex[o[1]]) == 0); - assert(pthread_mutex_consistent(&mutex[o[0]]) == 0); - assert(pthread_mutex_unlock(&mutex[o[2]]) == 0); - assert(pthread_mutex_unlock(&mutex[o[1]]) == 0); - assert(pthread_mutex_unlock(&mutex[o[0]]) == 0); - - return 0; -} - -int -main() -{ - pthread_t to, ti; - pthread_mutexattr_t ma; - int order[3]; - - assert(pthread_mutexattr_init(&ma) == 0); - assert(pthread_mutexattr_setrobust(&ma, PTHREAD_MUTEX_ROBUST) == 0); - - order[0]=0; - order[1]=1; - order[2]=2; - lockCount = 0; - assert(pthread_mutex_init(&mutex[0], &ma) == 0); - assert(pthread_mutex_init(&mutex[1], &ma) == 0); - assert(pthread_mutex_init(&mutex[2], &ma) == 0); - assert(pthread_create(&to, NULL, owner, NULL) == 0); - Sleep(100); - assert(pthread_create(&ti, NULL, inheritor, (void *)order) == 0); - assert(pthread_join(to, NULL) == 0); - assert(pthread_join(ti, NULL) == 0); - assert(lockCount == 6); - assert(pthread_mutex_lock(&mutex[0]) == 0); - assert(pthread_mutex_unlock(&mutex[0]) == 0); - assert(pthread_mutex_destroy(&mutex[0]) == 0); - assert(pthread_mutex_lock(&mutex[1]) == 0); - assert(pthread_mutex_unlock(&mutex[1]) == 0); - assert(pthread_mutex_destroy(&mutex[1]) == 0); - assert(pthread_mutex_lock(&mutex[2]) == 0); - assert(pthread_mutex_unlock(&mutex[2]) == 0); - assert(pthread_mutex_destroy(&mutex[2]) == 0); - - order[0]=1; - order[1]=0; - order[2]=2; - lockCount = 0; - assert(pthread_mutex_init(&mutex[0], &ma) == 0); - assert(pthread_mutex_init(&mutex[1], &ma) == 0); - assert(pthread_mutex_init(&mutex[2], &ma) == 0); - assert(pthread_create(&to, NULL, owner, NULL) == 0); - Sleep(100); - assert(pthread_create(&ti, NULL, inheritor, (void *)order) == 0); - assert(pthread_join(to, NULL) == 0); - assert(pthread_join(ti, NULL) == 0); - assert(lockCount == 6); - assert(pthread_mutex_lock(&mutex[0]) == 0); - assert(pthread_mutex_unlock(&mutex[0]) == 0); - assert(pthread_mutex_destroy(&mutex[0]) == 0); - assert(pthread_mutex_lock(&mutex[1]) == 0); - assert(pthread_mutex_unlock(&mutex[1]) == 0); - assert(pthread_mutex_destroy(&mutex[1]) == 0); - assert(pthread_mutex_lock(&mutex[2]) == 0); - assert(pthread_mutex_unlock(&mutex[2]) == 0); - assert(pthread_mutex_destroy(&mutex[2]) == 0); - - order[0]=0; - order[1]=2; - order[2]=1; - lockCount = 0; - assert(pthread_mutex_init(&mutex[0], &ma) == 0); - assert(pthread_mutex_init(&mutex[1], &ma) == 0); - assert(pthread_mutex_init(&mutex[2], &ma) == 0); - assert(pthread_create(&to, NULL, owner, NULL) == 0); - Sleep(100); - assert(pthread_create(&ti, NULL, inheritor, (void *)order) == 0); - assert(pthread_join(to, NULL) == 0); - assert(pthread_join(ti, NULL) == 0); - assert(lockCount == 6); - assert(pthread_mutex_lock(&mutex[0]) == 0); - assert(pthread_mutex_unlock(&mutex[0]) == 0); - assert(pthread_mutex_destroy(&mutex[0]) == 0); - assert(pthread_mutex_lock(&mutex[1]) == 0); - assert(pthread_mutex_unlock(&mutex[1]) == 0); - assert(pthread_mutex_destroy(&mutex[1]) == 0); - assert(pthread_mutex_lock(&mutex[2]) == 0); - assert(pthread_mutex_unlock(&mutex[2]) == 0); - assert(pthread_mutex_destroy(&mutex[2]) == 0); - - order[0]=2; - order[1]=1; - order[2]=0; - lockCount = 0; - assert(pthread_mutex_init(&mutex[0], &ma) == 0); - assert(pthread_mutex_init(&mutex[1], &ma) == 0); - assert(pthread_mutex_init(&mutex[2], &ma) == 0); - assert(pthread_create(&to, NULL, owner, NULL) == 0); - Sleep(100); - assert(pthread_create(&ti, NULL, inheritor, (void *)order) == 0); - assert(pthread_join(to, NULL) == 0); - assert(pthread_join(ti, NULL) == 0); - assert(lockCount == 6); - assert(pthread_mutex_lock(&mutex[0]) == 0); - assert(pthread_mutex_unlock(&mutex[0]) == 0); - assert(pthread_mutex_destroy(&mutex[0]) == 0); - assert(pthread_mutex_lock(&mutex[1]) == 0); - assert(pthread_mutex_unlock(&mutex[1]) == 0); - assert(pthread_mutex_destroy(&mutex[1]) == 0); - assert(pthread_mutex_lock(&mutex[2]) == 0); - assert(pthread_mutex_unlock(&mutex[2]) == 0); - assert(pthread_mutex_destroy(&mutex[2]) == 0); - - assert(pthread_mutexattr_destroy(&ma) == 0); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/robust5.c b/platform/win32/msvc/external/pthreads.2/tests/robust5.c deleted file mode 100644 index b473fd743b1..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/robust5.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * robust5.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Thread A locks multiple robust mutexes - * Thread B blocks on same mutexes - * Thread A terminates with thread waiting on mutexes - * Thread B awakes and inherits each mutex in turn - * Thread B terminates leaving orphaned mutexes - * Main inherits mutexes, sets consistent and unlocks. - * - * Depends on API functions: - * pthread_create() - * pthread_join() - * pthread_mutex_init() - * pthread_mutex_lock() - * pthread_mutex_unlock() - * pthread_mutex_destroy() - * pthread_mutexattr_init() - * pthread_mutexattr_setrobust() - * pthread_mutexattr_settype() - * pthread_mutexattr_destroy() - */ - -#include "test.h" - -static int lockCount; - -static pthread_mutex_t mutex[3]; - -void * owner(void * arg) -{ - assert(pthread_mutex_lock(&mutex[0]) == 0); - lockCount++; - assert(pthread_mutex_lock(&mutex[1]) == 0); - lockCount++; - assert(pthread_mutex_lock(&mutex[2]) == 0); - lockCount++; - - return 0; -} - -void * inheritor(void * arg) -{ - assert(pthread_mutex_lock(&mutex[0]) == EOWNERDEAD); - lockCount++; - assert(pthread_mutex_lock(&mutex[1]) == EOWNERDEAD); - lockCount++; - assert(pthread_mutex_lock(&mutex[2]) == EOWNERDEAD); - lockCount++; - - return 0; -} - -int -main() -{ - pthread_t to, ti; - pthread_mutexattr_t ma; - - assert(pthread_mutexattr_init(&ma) == 0); - assert(pthread_mutexattr_setrobust(&ma, PTHREAD_MUTEX_ROBUST) == 0); - - lockCount = 0; - assert(pthread_mutex_init(&mutex[0], &ma) == 0); - assert(pthread_mutex_init(&mutex[1], &ma) == 0); - assert(pthread_mutex_init(&mutex[2], &ma) == 0); - assert(pthread_create(&to, NULL, owner, NULL) == 0); - assert(pthread_join(to, NULL) == 0); - assert(pthread_create(&ti, NULL, inheritor, NULL) == 0); - assert(pthread_join(ti, NULL) == 0); - assert(lockCount == 6); - assert(pthread_mutex_lock(&mutex[0]) == EOWNERDEAD); - assert(pthread_mutex_consistent(&mutex[0]) == 0); - assert(pthread_mutex_unlock(&mutex[0]) == 0); - assert(pthread_mutex_destroy(&mutex[0]) == 0); - assert(pthread_mutex_lock(&mutex[1]) == EOWNERDEAD); - assert(pthread_mutex_consistent(&mutex[1]) == 0); - assert(pthread_mutex_unlock(&mutex[1]) == 0); - assert(pthread_mutex_destroy(&mutex[1]) == 0); - assert(pthread_mutex_lock(&mutex[2]) == EOWNERDEAD); - assert(pthread_mutex_consistent(&mutex[2]) == 0); - assert(pthread_mutex_unlock(&mutex[2]) == 0); - assert(pthread_mutex_destroy(&mutex[2]) == 0); - - assert(pthread_mutexattr_destroy(&ma) == 0); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/rwlock1.c b/platform/win32/msvc/external/pthreads.2/tests/rwlock1.c deleted file mode 100644 index 4b74a125ae2..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/rwlock1.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * rwlock1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Create a simple rwlock object and then destroy it. - * - * Depends on API functions: - * pthread_rwlock_init() - * pthread_rwlock_destroy() - */ - -#include "test.h" - -pthread_rwlock_t rwlock = NULL; - -int -main() -{ - assert(rwlock == NULL); - - assert(pthread_rwlock_init(&rwlock, NULL) == 0); - - assert(rwlock != NULL); - - assert(pthread_rwlock_destroy(&rwlock) == 0); - - assert(rwlock == NULL); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/rwlock2.c b/platform/win32/msvc/external/pthreads.2/tests/rwlock2.c deleted file mode 100644 index 9f02240d18d..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/rwlock2.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - * rwlock2.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Declare a static rwlock object, lock it, - * and then unlock it again. - * - * Depends on API functions: - * pthread_rwlock_rdlock() - * pthread_rwlock_unlock() - */ - -#include "test.h" - -pthread_rwlock_t rwlock = PTHREAD_RWLOCK_INITIALIZER; - -int -main() -{ - assert(rwlock == PTHREAD_RWLOCK_INITIALIZER); - - assert(pthread_rwlock_rdlock(&rwlock) == 0); - - assert(rwlock != PTHREAD_RWLOCK_INITIALIZER); - - assert(rwlock != NULL); - - assert(pthread_rwlock_unlock(&rwlock) == 0); - - assert(pthread_rwlock_destroy(&rwlock) == 0); - - assert(rwlock == NULL); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/rwlock2_t.c b/platform/win32/msvc/external/pthreads.2/tests/rwlock2_t.c deleted file mode 100644 index 404e807c65c..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/rwlock2_t.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * rwlock2_t.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Declare a static rwlock object, timed-lock it, - * and then unlock it again. - * - * Depends on API functions: - * pthread_rwlock_timedrdlock() - * pthread_rwlock_unlock() - */ - -#include "test.h" -#include - -pthread_rwlock_t rwlock = PTHREAD_RWLOCK_INITIALIZER; - -int -main() -{ - struct timespec abstime = { 0, 0 }; - PTW32_STRUCT_TIMEB currSysTime; - const DWORD NANOSEC_PER_MILLISEC = 1000000; - - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = (long)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - - abstime.tv_sec += 1; - - assert(rwlock == PTHREAD_RWLOCK_INITIALIZER); - - assert(pthread_rwlock_timedrdlock(&rwlock, &abstime) == 0); - - assert(rwlock != PTHREAD_RWLOCK_INITIALIZER); - - assert(rwlock != NULL); - - assert(pthread_rwlock_unlock(&rwlock) == 0); - - assert(pthread_rwlock_destroy(&rwlock) == 0); - - assert(rwlock == NULL); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/rwlock3.c b/platform/win32/msvc/external/pthreads.2/tests/rwlock3.c deleted file mode 100644 index 286b3e0341f..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/rwlock3.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * rwlock3.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Declare a static rwlock object, wrlock it, trywrlock it, - * and then unlock it again. - * - * Depends on API functions: - * pthread_create() - * pthread_join() - * pthread_rwlock_wrlock() - * pthread_rwlock_trywrlock() - * pthread_rwlock_unlock() - */ - -#include "test.h" - -pthread_rwlock_t rwlock1 = PTHREAD_RWLOCK_INITIALIZER; - -static int washere = 0; - -void * func(void * arg) -{ - assert(pthread_rwlock_trywrlock(&rwlock1) == EBUSY); - - washere = 1; - - return 0; -} - -int -main() -{ - pthread_t t; - - assert(pthread_rwlock_wrlock(&rwlock1) == 0); - - assert(pthread_create(&t, NULL, func, NULL) == 0); - - assert(pthread_join(t, NULL) == 0); - - assert(pthread_rwlock_unlock(&rwlock1) == 0); - - assert(washere == 1); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/rwlock3_t.c b/platform/win32/msvc/external/pthreads.2/tests/rwlock3_t.c deleted file mode 100644 index 04b03d1be31..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/rwlock3_t.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * rwlock3_t.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Declare a static rwlock object, timed-wrlock it, trywrlock it, - * and then unlock it again. - * - * Depends on API functions: - * pthread_rwlock_timedwrlock() - * pthread_rwlock_trywrlock() - * pthread_rwlock_unlock() - */ - -#include "test.h" -#include - -pthread_rwlock_t rwlock1 = PTHREAD_RWLOCK_INITIALIZER; - -static int washere = 0; - -void * func(void * arg) -{ - assert(pthread_rwlock_trywrlock(&rwlock1) == EBUSY); - - washere = 1; - - return 0; -} - -int -main() -{ - pthread_t t; - struct timespec abstime = { 0, 0 }; - PTW32_STRUCT_TIMEB currSysTime; - const DWORD NANOSEC_PER_MILLISEC = 1000000; - - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = (long)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - - abstime.tv_sec += 1; - - assert(pthread_rwlock_timedwrlock(&rwlock1, &abstime) == 0); - - assert(pthread_create(&t, NULL, func, NULL) == 0); - - Sleep(2000); - - assert(pthread_rwlock_unlock(&rwlock1) == 0); - - assert(washere == 1); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/rwlock4.c b/platform/win32/msvc/external/pthreads.2/tests/rwlock4.c deleted file mode 100644 index fb33fc5fd2e..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/rwlock4.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * rwlock4.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Declare a static rwlock object, rdlock it, trywrlock it, - * and then unlock it again. - * - * Depends on API functions: - * pthread_create() - * pthread_join() - * pthread_rwlock_rdlock() - * pthread_rwlock_trywrlock() - * pthread_rwlock_unlock() - */ - -#include "test.h" - -pthread_rwlock_t rwlock1 = PTHREAD_RWLOCK_INITIALIZER; - -static int washere = 0; - -void * func(void * arg) -{ - assert(pthread_rwlock_trywrlock(&rwlock1) == EBUSY); - - washere = 1; - - return 0; -} - -int -main() -{ - pthread_t t; - - assert(pthread_rwlock_rdlock(&rwlock1) == 0); - - assert(pthread_create(&t, NULL, func, NULL) == 0); - - assert(pthread_join(t, NULL) == 0); - - assert(pthread_rwlock_unlock(&rwlock1) == 0); - - assert(washere == 1); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/rwlock4_t.c b/platform/win32/msvc/external/pthreads.2/tests/rwlock4_t.c deleted file mode 100644 index 5e509bd9d3e..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/rwlock4_t.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * rwlock4_t.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Declare a static rwlock object, timed-rdlock it, trywrlock it, - * and then unlock it again. - * - * Depends on API functions: - * pthread_rwlock_timedrdlock() - * pthread_rwlock_trywrlock() - * pthread_rwlock_unlock() - */ - -#include "test.h" -#include - -pthread_rwlock_t rwlock1 = PTHREAD_RWLOCK_INITIALIZER; - -static int washere = 0; - -void * func(void * arg) -{ - assert(pthread_rwlock_trywrlock(&rwlock1) == EBUSY); - - washere = 1; - - return 0; -} - -int -main() -{ - pthread_t t; - struct timespec abstime = { 0, 0 }; - PTW32_STRUCT_TIMEB currSysTime; - const DWORD NANOSEC_PER_MILLISEC = 1000000; - - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = (long)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - - abstime.tv_sec += 1; - - assert(pthread_rwlock_timedrdlock(&rwlock1, &abstime) == 0); - - assert(pthread_create(&t, NULL, func, NULL) == 0); - - Sleep(2000); - - assert(pthread_rwlock_unlock(&rwlock1) == 0); - - assert(washere == 1); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/rwlock5.c b/platform/win32/msvc/external/pthreads.2/tests/rwlock5.c deleted file mode 100644 index 5c67092881f..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/rwlock5.c +++ /dev/null @@ -1,80 +0,0 @@ -/* - * rwlock5.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Declare a static rwlock object, rdlock it, tryrdlock it, - * and then unlock it again. - * - * Depends on API functions: - * pthread_create() - * pthread_join() - * pthread_rwlock_rdlock() - * pthread_rwlock_tryrdlock() - * pthread_rwlock_unlock() - */ - -#include "test.h" - -pthread_rwlock_t rwlock1 = PTHREAD_RWLOCK_INITIALIZER; - -static int washere = 0; - -void * func(void * arg) -{ - assert(pthread_rwlock_tryrdlock(&rwlock1) == 0); - - assert(pthread_rwlock_unlock(&rwlock1) == 0); - - washere = 1; - - return 0; -} - -int -main() -{ - pthread_t t; - - assert(pthread_rwlock_rdlock(&rwlock1) == 0); - - assert(pthread_create(&t, NULL, func, NULL) == 0); - - assert(pthread_join(t, NULL) == 0); - - assert(pthread_rwlock_unlock(&rwlock1) == 0); - - assert(washere == 1); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/rwlock5_t.c b/platform/win32/msvc/external/pthreads.2/tests/rwlock5_t.c deleted file mode 100644 index 438aec1210f..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/rwlock5_t.c +++ /dev/null @@ -1,89 +0,0 @@ -/* - * rwlock5_t.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Declare a static rwlock object, timed-rdlock it, tryrdlock it, - * and then unlock it again. - * - * Depends on API functions: - * pthread_rwlock_timedrdlock() - * pthread_rwlock_tryrdlock() - * pthread_rwlock_unlock() - */ - -#include "test.h" -#include - -pthread_rwlock_t rwlock1 = PTHREAD_RWLOCK_INITIALIZER; - -static int washere = 0; - -void * func(void * arg) -{ - assert(pthread_rwlock_tryrdlock(&rwlock1) == 0); - - assert(pthread_rwlock_unlock(&rwlock1) == 0); - - washere = 1; - - return 0; -} - -int -main() -{ - pthread_t t; - struct timespec abstime = { 0, 0 }; - PTW32_STRUCT_TIMEB currSysTime; - const DWORD NANOSEC_PER_MILLISEC = 1000000; - - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = (long)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - - abstime.tv_sec += 1; - - assert(pthread_rwlock_timedrdlock(&rwlock1, &abstime) == 0); - - assert(pthread_create(&t, NULL, func, NULL) == 0); - - Sleep(2000); - - assert(pthread_rwlock_unlock(&rwlock1) == 0); - - assert(washere == 1); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/rwlock6.c b/platform/win32/msvc/external/pthreads.2/tests/rwlock6.c deleted file mode 100644 index d3fcbabcfe9..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/rwlock6.c +++ /dev/null @@ -1,101 +0,0 @@ -/* - * rwlock6.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Check writer and reader locking - * - * Depends on API functions: - * pthread_rwlock_rdlock() - * pthread_rwlock_wrlock() - * pthread_rwlock_unlock() - */ - -#include "test.h" - -static pthread_rwlock_t rwlock1 = PTHREAD_RWLOCK_INITIALIZER; - -static int bankAccount = 0; - -void * wrfunc(void * arg) -{ - int ba; - - assert(pthread_rwlock_wrlock(&rwlock1) == 0); - Sleep(200); - bankAccount += 10; - ba = bankAccount; - assert(pthread_rwlock_unlock(&rwlock1) == 0); - - return ((void *)(size_t)ba); -} - -void * rdfunc(void * arg) -{ - int ba; - - assert(pthread_rwlock_rdlock(&rwlock1) == 0); - ba = bankAccount; - assert(pthread_rwlock_unlock(&rwlock1) == 0); - - return ((void *)(size_t)ba); -} - -int -main() -{ - pthread_t wrt1; - pthread_t wrt2; - pthread_t rdt; - void* wr1Result = (void*)0; - void* wr2Result = (void*)0; - void* rdResult = (void*)0; - - bankAccount = 0; - - assert(pthread_create(&wrt1, NULL, wrfunc, NULL) == 0); - Sleep(50); - assert(pthread_create(&rdt, NULL, rdfunc, NULL) == 0); - Sleep(50); - assert(pthread_create(&wrt2, NULL, wrfunc, NULL) == 0); - - assert(pthread_join(wrt1, &wr1Result) == 0); - assert(pthread_join(rdt, &rdResult) == 0); - assert(pthread_join(wrt2, &wr2Result) == 0); - - assert((int)(size_t)wr1Result == 10); - assert((int)(size_t)rdResult == 10); - assert((int)(size_t)wr2Result == 20); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/rwlock6_t.c b/platform/win32/msvc/external/pthreads.2/tests/rwlock6_t.c deleted file mode 100644 index 12de45d1f98..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/rwlock6_t.c +++ /dev/null @@ -1,126 +0,0 @@ -/* - * rwlock6_t.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Check writer and reader locking with reader timeouts - * - * Depends on API functions: - * pthread_rwlock_timedrdlock() - * pthread_rwlock_wrlock() - * pthread_rwlock_unlock() - */ - -#include "test.h" -#include - -static pthread_rwlock_t rwlock1 = PTHREAD_RWLOCK_INITIALIZER; - -static int bankAccount = 0; - -void * wrfunc(void * arg) -{ - assert(pthread_rwlock_wrlock(&rwlock1) == 0); - Sleep(2000); - bankAccount += 10; - assert(pthread_rwlock_unlock(&rwlock1) == 0); - - return ((void *)(size_t)bankAccount); -} - -void * rdfunc(void * arg) -{ - int ba = -1; - struct timespec abstime = { 0, 0 }; - PTW32_STRUCT_TIMEB currSysTime; - const DWORD NANOSEC_PER_MILLISEC = 1000000; - - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = (long)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - - - if ((int) (size_t)arg == 1) - { - abstime.tv_sec += 1; - assert(pthread_rwlock_timedrdlock(&rwlock1, &abstime) == ETIMEDOUT); - ba = 0; - } - else if ((int) (size_t)arg == 2) - { - abstime.tv_sec += 3; - assert(pthread_rwlock_timedrdlock(&rwlock1, &abstime) == 0); - ba = bankAccount; - assert(pthread_rwlock_unlock(&rwlock1) == 0); - } - - return ((void *)(size_t)ba); -} - -int -main() -{ - pthread_t wrt1; - pthread_t wrt2; - pthread_t rdt1; - pthread_t rdt2; - void* wr1Result = (void*)0; - void* wr2Result = (void*)0; - void* rd1Result = (void*)0; - void* rd2Result = (void*)0; - - bankAccount = 0; - - assert(pthread_create(&wrt1, NULL, wrfunc, NULL) == 0); - Sleep(500); - assert(pthread_create(&rdt1, NULL, rdfunc, (void *)(size_t)1) == 0); - Sleep(500); - assert(pthread_create(&wrt2, NULL, wrfunc, NULL) == 0); - Sleep(500); - assert(pthread_create(&rdt2, NULL, rdfunc, (void *)(size_t)2) == 0); - - assert(pthread_join(wrt1, &wr1Result) == 0); - assert(pthread_join(rdt1, &rd1Result) == 0); - assert(pthread_join(wrt2, &wr2Result) == 0); - assert(pthread_join(rdt2, &rd2Result) == 0); - - assert((int)(size_t)wr1Result == 10); - assert((int)(size_t)rd1Result == 0); - assert((int)(size_t)wr2Result == 20); - assert((int)(size_t)rd2Result == 20); - - return 0; -} - - diff --git a/platform/win32/msvc/external/pthreads.2/tests/rwlock6_t2.c b/platform/win32/msvc/external/pthreads.2/tests/rwlock6_t2.c deleted file mode 100644 index 6944e31ce77..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/rwlock6_t2.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - * rwlock6_t2.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Check writer and reader timeouts. - * - * Depends on API functions: - * pthread_rwlock_timedrdlock() - * pthread_rwlock_timedwrlock() - * pthread_rwlock_unlock() - */ - -#include "test.h" -#include - -static pthread_rwlock_t rwlock1 = PTHREAD_RWLOCK_INITIALIZER; - -static int bankAccount = 0; -struct timespec abstime = { 0, 0 }; - -void * wrfunc(void * arg) -{ - int result; - - result = pthread_rwlock_timedwrlock(&rwlock1, &abstime); - if ((int) (size_t)arg == 1) - { - assert(result == 0); - Sleep(2000); - bankAccount += 10; - assert(pthread_rwlock_unlock(&rwlock1) == 0); - return ((void *)(size_t)bankAccount); - } - else if ((int) (size_t)arg == 2) - { - assert(result == ETIMEDOUT); - return ((void *) 100); - } - - return ((void *)(size_t)-1); -} - -void * rdfunc(void * arg) -{ - int ba = 0; - - assert(pthread_rwlock_timedrdlock(&rwlock1, &abstime) == ETIMEDOUT); - - return ((void *)(size_t)ba); -} - -int -main() -{ - pthread_t wrt1; - pthread_t wrt2; - pthread_t rdt; - void* wr1Result = (void*)0; - void* wr2Result = (void*)0; - void* rdResult = (void*)0; - PTW32_STRUCT_TIMEB currSysTime; - const DWORD NANOSEC_PER_MILLISEC = 1000000; - - PTW32_FTIME(&currSysTime); - - abstime.tv_sec = (long)currSysTime.time; - abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; - - abstime.tv_sec += 1; - - bankAccount = 0; - - assert(pthread_create(&wrt1, NULL, wrfunc, (void *)(size_t)1) == 0); - Sleep(100); - assert(pthread_create(&rdt, NULL, rdfunc, NULL) == 0); - Sleep(100); - assert(pthread_create(&wrt2, NULL, wrfunc, (void *)(size_t)2) == 0); - - assert(pthread_join(wrt1, &wr1Result) == 0); - assert(pthread_join(rdt, &rdResult) == 0); - assert(pthread_join(wrt2, &wr2Result) == 0); - - assert((int)(size_t)wr1Result == 10); - assert((int)(size_t)rdResult == 0); - assert((int)(size_t)wr2Result == 100); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/rwlock7.c b/platform/win32/msvc/external/pthreads.2/tests/rwlock7.c deleted file mode 100644 index eccb859130e..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/rwlock7.c +++ /dev/null @@ -1,199 +0,0 @@ -/* - * rwlock7.c - * - * Hammer on a bunch of rwlocks to test robustness and fairness. - * Printed stats should be roughly even for each thread. - */ - -#include "test.h" -#include - -#ifdef __GNUC__ -#include -#endif - -#define THREADS 5 -#define DATASIZE 7 -#define ITERATIONS 1000000 - -/* - * Keep statistics for each thread. - */ -typedef struct thread_tag { - int thread_num; - pthread_t thread_id; - int updates; - int reads; - int changed; - int seed; -} thread_t; - -/* - * Read-write lock and shared data - */ -typedef struct data_tag { - pthread_rwlock_t lock; - int data; - int updates; -} data_t; - -static thread_t threads[THREADS]; -static data_t data[DATASIZE]; - -/* - * Thread start routine that uses read-write locks - */ -void *thread_routine (void *arg) -{ - thread_t *self = (thread_t*)arg; - int iteration; - int element = 0; - int seed = self->seed; - int interval = 1 + rand_r (&seed) % 71; - - self->changed = 0; - - for (iteration = 0; iteration < ITERATIONS; iteration++) - { - if (iteration % (ITERATIONS / 10) == 0) - { - putchar('.'); - fflush(stdout); - } - /* - * Each "self->interval" iterations, perform an - * update operation (write lock instead of read - * lock). - */ - if ((iteration % interval) == 0) - { - assert(pthread_rwlock_wrlock (&data[element].lock) == 0); - data[element].data = self->thread_num; - data[element].updates++; - self->updates++; - interval = 1 + rand_r (&seed) % 71; - assert(pthread_rwlock_unlock (&data[element].lock) == 0); - } else { - /* - * Look at the current data element to see whether - * the current thread last updated it. Count the - * times, to report later. - */ - assert(pthread_rwlock_rdlock (&data[element].lock) == 0); - - self->reads++; - - if (data[element].data != self->thread_num) - { - self->changed++; - interval = 1 + self->changed % 71; - } - - assert(pthread_rwlock_unlock (&data[element].lock) == 0); - } - - element = (element + 1) % DATASIZE; - - } - - return NULL; -} - -int -main (int argc, char *argv[]) -{ - int count; - int data_count; - int thread_updates = 0; - int data_updates = 0; - int seed = 1; - - PTW32_STRUCT_TIMEB currSysTime1; - PTW32_STRUCT_TIMEB currSysTime2; - - /* - * Initialize the shared data. - */ - for (data_count = 0; data_count < DATASIZE; data_count++) - { - data[data_count].data = 0; - data[data_count].updates = 0; - - assert(pthread_rwlock_init (&data[data_count].lock, NULL) == 0); - } - - PTW32_FTIME(&currSysTime1); - - /* - * Create THREADS threads to access shared data. - */ - for (count = 0; count < THREADS; count++) - { - threads[count].thread_num = count; - threads[count].updates = 0; - threads[count].reads = 0; - threads[count].seed = 1 + rand_r (&seed) % 71; - - assert(pthread_create (&threads[count].thread_id, - NULL, thread_routine, (void*)(size_t)&threads[count]) == 0); - } - - /* - * Wait for all threads to complete, and collect - * statistics. - */ - for (count = 0; count < THREADS; count++) - { - assert(pthread_join (threads[count].thread_id, NULL) == 0); - } - - putchar('\n'); - fflush(stdout); - - for (count = 0; count < THREADS; count++) - { - if (threads[count].changed > 0) - { - printf ("Thread %d found changed elements %d times\n", - count, threads[count].changed); - } - } - - putchar('\n'); - fflush(stdout); - - for (count = 0; count < THREADS; count++) - { - thread_updates += threads[count].updates; - printf ("%02d: seed %d, updates %d, reads %d\n", - count, threads[count].seed, - threads[count].updates, threads[count].reads); - } - - putchar('\n'); - fflush(stdout); - - /* - * Collect statistics for the data. - */ - for (data_count = 0; data_count < DATASIZE; data_count++) - { - data_updates += data[data_count].updates; - printf ("data %02d: value %d, %d updates\n", - data_count, data[data_count].data, data[data_count].updates); - assert(pthread_rwlock_destroy (&data[data_count].lock) == 0); - } - - printf ("%d thread updates, %d data updates\n", - thread_updates, data_updates); - - PTW32_FTIME(&currSysTime2); - - printf( "\nstart: %ld/%d, stop: %ld/%d, duration:%ld\n", - (long)currSysTime1.time,currSysTime1.millitm, - (long)currSysTime2.time,currSysTime2.millitm, - ((long)((currSysTime2.time*1000+currSysTime2.millitm) - - (currSysTime1.time*1000+currSysTime1.millitm)))); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/rwlock8.c b/platform/win32/msvc/external/pthreads.2/tests/rwlock8.c deleted file mode 100644 index 7e3d6064337..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/rwlock8.c +++ /dev/null @@ -1,205 +0,0 @@ -/* - * rwlock8.c - * - * Hammer on a bunch of rwlocks to test robustness and fairness. - * Printed stats should be roughly even for each thread. - * - * Yield during each access to exercise lock contention code paths - * more than rwlock7.c does (particularly on uni-processor systems). - */ - -#include "test.h" -#include - -#ifdef __GNUC__ -#include -#endif - -#define THREADS 5 -#define DATASIZE 7 -#define ITERATIONS 100000 - -/* - * Keep statistics for each thread. - */ -typedef struct thread_tag { - int thread_num; - pthread_t thread_id; - int updates; - int reads; - int changed; - int seed; -} thread_t; - -/* - * Read-write lock and shared data - */ -typedef struct data_tag { - pthread_rwlock_t lock; - int data; - int updates; -} data_t; - -static thread_t threads[THREADS]; -static data_t data[DATASIZE]; - -/* - * Thread start routine that uses read-write locks - */ -void *thread_routine (void *arg) -{ - thread_t *self = (thread_t*)arg; - int iteration; - int element = 0; - int seed = self->seed; - int interval = 1 + rand_r (&seed) % 71; - - self->changed = 0; - - for (iteration = 0; iteration < ITERATIONS; iteration++) - { - if (iteration % (ITERATIONS / 10) == 0) - { - putchar('.'); - fflush(stdout); - } - /* - * Each "self->interval" iterations, perform an - * update operation (write lock instead of read - * lock). - */ - if ((iteration % interval) == 0) - { - assert(pthread_rwlock_wrlock (&data[element].lock) == 0); - data[element].data = self->thread_num; - data[element].updates++; - self->updates++; - interval = 1 + rand_r (&seed) % 71; - sched_yield(); - assert(pthread_rwlock_unlock (&data[element].lock) == 0); - } else { - /* - * Look at the current data element to see whether - * the current thread last updated it. Count the - * times, to report later. - */ - assert(pthread_rwlock_rdlock (&data[element].lock) == 0); - - self->reads++; - - if (data[element].data != self->thread_num) - { - self->changed++; - interval = 1 + self->changed % 71; - } - - sched_yield(); - - assert(pthread_rwlock_unlock (&data[element].lock) == 0); - } - - element = (element + 1) % DATASIZE; - - } - - return NULL; -} - -int -main (int argc, char *argv[]) -{ - int count; - int data_count; - int thread_updates = 0; - int data_updates = 0; - int seed = 1; - - PTW32_STRUCT_TIMEB currSysTime1; - PTW32_STRUCT_TIMEB currSysTime2; - - /* - * Initialize the shared data. - */ - for (data_count = 0; data_count < DATASIZE; data_count++) - { - data[data_count].data = 0; - data[data_count].updates = 0; - - assert(pthread_rwlock_init (&data[data_count].lock, NULL) == 0); - } - - PTW32_FTIME(&currSysTime1); - - /* - * Create THREADS threads to access shared data. - */ - for (count = 0; count < THREADS; count++) - { - threads[count].thread_num = count; - threads[count].updates = 0; - threads[count].reads = 0; - threads[count].seed = 1 + rand_r (&seed) % 71; - - assert(pthread_create (&threads[count].thread_id, - NULL, thread_routine, (void*)(size_t)&threads[count]) == 0); - } - - /* - * Wait for all threads to complete, and collect - * statistics. - */ - for (count = 0; count < THREADS; count++) - { - assert(pthread_join (threads[count].thread_id, NULL) == 0); - } - - putchar('\n'); - fflush(stdout); - - for (count = 0; count < THREADS; count++) - { - if (threads[count].changed > 0) - { - printf ("Thread %d found changed elements %d times\n", - count, threads[count].changed); - } - } - - putchar('\n'); - fflush(stdout); - - for (count = 0; count < THREADS; count++) - { - thread_updates += threads[count].updates; - printf ("%02d: seed %d, updates %d, reads %d\n", - count, threads[count].seed, - threads[count].updates, threads[count].reads); - } - - putchar('\n'); - fflush(stdout); - - /* - * Collect statistics for the data. - */ - for (data_count = 0; data_count < DATASIZE; data_count++) - { - data_updates += data[data_count].updates; - printf ("data %02d: value %d, %d updates\n", - data_count, data[data_count].data, data[data_count].updates); - assert(pthread_rwlock_destroy (&data[data_count].lock) == 0); - } - - printf ("%d thread updates, %d data updates\n", - thread_updates, data_updates); - - PTW32_FTIME(&currSysTime2); - - printf( "\nstart: %ld/%d, stop: %ld/%d, duration:%ld\n", - (long)currSysTime1.time,currSysTime1.millitm, - (long)currSysTime2.time,currSysTime2.millitm, - ((long)((currSysTime2.time*1000+currSysTime2.millitm) - - (currSysTime1.time*1000+currSysTime1.millitm)))); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/self1.c b/platform/win32/msvc/external/pthreads.2/tests/self1.c deleted file mode 100644 index c0946f725c4..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/self1.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * self1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test for pthread_self(). - * - * Depends on API functions: - * pthread_self() - * - * Implicitly depends on: - * pthread_getspecific() - * pthread_setspecific() - */ - -#include "test.h" - -int -main(int argc, char * argv[]) -{ - /* - * This should always succeed unless the system has no - * resources (memory) left. - */ - pthread_t self; - -#if defined(PTW32_STATIC_LIB) && !(defined(_MSC_VER) || defined(__MINGW32__)) - pthread_win32_process_attach_np(); -#endif - - self = pthread_self(); - - assert(self.p != NULL); - -#if defined(PTW32_STATIC_LIB) && !(defined(_MSC_VER) || defined(__MINGW32__)) - pthread_win32_process_detach_np(); -#endif - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/self2.c b/platform/win32/msvc/external/pthreads.2/tests/self2.c deleted file mode 100644 index abb0528bb2c..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/self2.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * self2.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test for pthread_self(). - * - * Depends on API functions: - * pthread_create() - * pthread_self() - * - * Implicitly depends on: - * pthread_getspecific() - * pthread_setspecific() - */ - -#include "test.h" -#include - -static pthread_t me; - -void * -entry(void * arg) -{ - me = pthread_self(); - - return arg; -} - -int -main() -{ - pthread_t t; - - assert(pthread_create(&t, NULL, entry, NULL) == 0); - - Sleep(100); - - assert(pthread_equal(t, me) != 0); - - /* Success. */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/semaphore1.c b/platform/win32/msvc/external/pthreads.2/tests/semaphore1.c deleted file mode 100644 index 37e6b41154d..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/semaphore1.c +++ /dev/null @@ -1,150 +0,0 @@ -/* - * File: semaphore1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Verify trywait() returns -1 and sets EAGAIN. - * - - * - * Test Method (Validation or Falsification): - * - Validation - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" - -void * -thr(void * arg) -{ - sem_t s; - int result; - - assert(sem_init(&s, PTHREAD_PROCESS_PRIVATE, 0) == 0); - - assert((result = sem_trywait(&s)) == -1); - - if ( result == -1 ) - { - int err = errno; - if (err != EAGAIN) - { - printf("thread: sem_trywait 1: expecting error %s: got %s\n", - error_string[EAGAIN], error_string[err]); fflush(stdout); - } - assert(err == EAGAIN); - } - else - { - printf("thread: ok 1\n"); - } - - assert((result = sem_post(&s)) == 0); - - assert((result = sem_trywait(&s)) == 0); - - assert(sem_post(&s) == 0); - - return NULL; -} - - -int -main() -{ - pthread_t t; - sem_t s; - void* result1 = (void*)-1; - int result2; - - assert(pthread_create(&t, NULL, thr, NULL) == 0); - assert(pthread_join(t, &result1) == 0); - assert((int)(size_t)result1 == 0); - - assert(sem_init(&s, PTHREAD_PROCESS_PRIVATE, 0) == 0); - - assert((result2 = sem_trywait(&s)) == -1); - - if (result2 == -1) - { - int err = errno; - if (err != EAGAIN) - { - printf("main: sem_trywait 1: expecting error %s: got %s\n", - error_string[EAGAIN], error_string[err]); fflush(stdout); - } - assert(err == EAGAIN); - } - else - { - printf("main: ok 1\n"); - } - - assert((result2 = sem_post(&s)) == 0); - - assert((result2 = sem_trywait(&s)) == 0); - - assert(sem_post(&s) == 0); - - return 0; -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/semaphore2.c b/platform/win32/msvc/external/pthreads.2/tests/semaphore2.c deleted file mode 100644 index 5075415368f..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/semaphore2.c +++ /dev/null @@ -1,108 +0,0 @@ -/* - * File: semaphore2.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Verify sem_getvalue returns the correct value. - * - - * - * Test Method (Validation or Falsification): - * - Validation - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" - -#define MAX_COUNT 100 - -int -main() -{ - sem_t s; - int value = 0; - int i; - - assert(sem_init(&s, PTHREAD_PROCESS_PRIVATE, MAX_COUNT) == 0); - assert(sem_getvalue(&s, &value) == 0); - assert(value == MAX_COUNT); -// printf("Value = %ld\n", value); - - for (i = MAX_COUNT - 1; i >= 0; i--) - { - assert(sem_wait(&s) == 0); - assert(sem_getvalue(&s, &value) == 0); -// printf("Value = %ld\n", value); - assert(value == i); - } - - for (i = 1; i <= MAX_COUNT; i++) - { - assert(sem_post(&s) == 0); - assert(sem_getvalue(&s, &value) == 0); -// printf("Value = %ld\n", value); - assert(value == i); - } - - return 0; -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/semaphore3.c b/platform/win32/msvc/external/pthreads.2/tests/semaphore3.c deleted file mode 100644 index dd1ccc39a9d..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/semaphore3.c +++ /dev/null @@ -1,121 +0,0 @@ -/* - * File: semaphore3.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Verify sem_getvalue returns the correct number of waiters. - * - - * - * Test Method (Validation or Falsification): - * - Validation - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" - -#define MAX_COUNT 100 - -sem_t s; - -void * -thr (void * arg) -{ - assert(sem_wait(&s) == 0); - assert(pthread_detach(pthread_self()) == 0); - return NULL; -} - -int -main() -{ - int value = 0; - int i; - pthread_t t[MAX_COUNT+1]; - - assert(sem_init(&s, PTHREAD_PROCESS_PRIVATE, 0) == 0); - assert(sem_getvalue(&s, &value) == 0); -// printf("Value = %d\n", value); fflush(stdout); - assert(value == 0); - - for (i = 1; i <= MAX_COUNT; i++) - { - assert(pthread_create(&t[i], NULL, thr, NULL) == 0); - do { - sched_yield(); - assert(sem_getvalue(&s, &value) == 0); - } while (value != -i); -// printf("Value = %d\n", value); fflush(stdout); - assert(-value == i); - } - - for (i = MAX_COUNT - 1; i >= 0; i--) - { - assert(sem_post(&s) == 0); - assert(sem_getvalue(&s, &value) == 0); -// printf("Value = %d\n", value); fflush(stdout); - assert(-value == i); - } - - return 0; -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/semaphore4.c b/platform/win32/msvc/external/pthreads.2/tests/semaphore4.c deleted file mode 100644 index d7ac65d9046..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/semaphore4.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * File: semaphore4.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Verify sem_getvalue returns the correct number of waiters - * after threads are cancelled. - * - - * - * Test Method (Validation or Falsification): - * - Validation - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" - -#define MAX_COUNT 100 - -sem_t s; - -void * -thr (void * arg) -{ - assert(sem_wait(&s) == 0); - return NULL; -} - -int -main() -{ - int value = 0; - int i; - pthread_t t[MAX_COUNT+1]; - - assert(sem_init(&s, PTHREAD_PROCESS_PRIVATE, 0) == 0); - assert(sem_getvalue(&s, &value) == 0); - assert(value == 0); - - for (i = 1; i <= MAX_COUNT; i++) - { - assert(pthread_create(&t[i], NULL, thr, NULL) == 0); - do { - sched_yield(); - assert(sem_getvalue(&s, &value) == 0); - } while (value != -i); - assert(-value == i); - } - - assert(sem_getvalue(&s, &value) == 0); - assert(-value == MAX_COUNT); - assert(pthread_cancel(t[50]) == 0); - { - void* result; - assert(pthread_join(t[50], &result) == 0); - } - assert(sem_getvalue(&s, &value) == 0); - assert(-value == (MAX_COUNT - 1)); - - for (i = MAX_COUNT - 2; i >= 0; i--) - { - assert(sem_post(&s) == 0); - assert(sem_getvalue(&s, &value) == 0); - assert(-value == i); - } - - for (i = 1; i <= MAX_COUNT; i++) - if (i != 50) - assert(pthread_join(t[i], NULL) == 0); - - return 0; -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/semaphore4t.c b/platform/win32/msvc/external/pthreads.2/tests/semaphore4t.c deleted file mode 100644 index a6a96b0bd17..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/semaphore4t.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * File: semaphore4t.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Verify sem_getvalue returns the correct number of waiters - * after threads are cancelled. - * - - * - * Test Method (Validation or Falsification): - * - Validation - * - * Requirements Tested: - * - sem_timedwait cancellation. - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" - -#define MAX_COUNT 100 - -sem_t s; - -void * -thr (void * arg) -{ - assert(sem_timedwait(&s, NULL) == 0); - return NULL; -} - -int -main() -{ - int value = 0; - int i; - pthread_t t[MAX_COUNT+1]; - - assert(sem_init(&s, PTHREAD_PROCESS_PRIVATE, 0) == 0); - assert(sem_getvalue(&s, &value) == 0); - assert(value == 0); - - for (i = 1; i <= MAX_COUNT; i++) - { - assert(pthread_create(&t[i], NULL, thr, NULL) == 0); - do { - sched_yield(); - assert(sem_getvalue(&s, &value) == 0); - } while (value != -i); - assert(-value == i); - } - - assert(sem_getvalue(&s, &value) == 0); - assert(-value == MAX_COUNT); - assert(pthread_cancel(t[50]) == 0); - assert(pthread_join(t[50], NULL) == 0); - assert(sem_getvalue(&s, &value) == 0); - assert(-value == MAX_COUNT - 1); - - for (i = MAX_COUNT - 2; i >= 0; i--) - { - assert(sem_post(&s) == 0); - assert(sem_getvalue(&s, &value) == 0); - assert(-value == i); - } - - for (i = 1; i <= MAX_COUNT; i++) - if (i != 50) - assert(pthread_join(t[i], NULL) == 0); - - return 0; -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/semaphore5.c b/platform/win32/msvc/external/pthreads.2/tests/semaphore5.c deleted file mode 100644 index 8127234338d..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/semaphore5.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - * File: semaphore5.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Verify sem_destroy EBUSY race avoidance - * - - * - * Test Method (Validation or Falsification): - * - Validation - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -// #define ASSERT_TRACE - -#include "test.h" - -void * -thr(void * arg) -{ - assert(sem_post((sem_t *)arg) == 0); - - return 0; -} - - -int -main() -{ - pthread_t t; - sem_t s; - - assert(sem_init(&s, PTHREAD_PROCESS_PRIVATE, 0) == 0); - assert(pthread_create(&t, NULL, thr, (void *)&s) == 0); - - assert(sem_wait(&s) == 0); - assert(sem_destroy(&s) == 0); - - assert(pthread_join(t, NULL) == 0); - - return 0; -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/sequence1.c b/platform/win32/msvc/external/pthreads.2/tests/sequence1.c deleted file mode 100644 index 78ad5c14a2b..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/sequence1.c +++ /dev/null @@ -1,142 +0,0 @@ -/* - * File: sequence1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - that unique thread sequence numbers are generated. - * - Analyse thread struct reuse. - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - This test is implementation specific - * because it uses knowledge of internals that should be - * opaque to an application. - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - analysis output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - unique sequence numbers are generated for every new thread. - * - * Fail Criteria: - * - - */ - -#include "test.h" - -/* - */ - -enum { - NUMTHREADS = 10000 -}; - - -static long done = 0; -/* - * seqmap should have 1 in every element except [0] - * Thread sequence numbers start at 1 and we will also - * include this main thread so we need NUMTHREADS+2 - * elements. - */ -static UINT64 seqmap[NUMTHREADS+2]; - -void * func(void * arg) -{ - sched_yield(); - seqmap[(int)pthread_getunique_np(pthread_self())] = 1; - InterlockedIncrement(&done); - - return (void *) 0; -} - -int -main() -{ - pthread_t t[NUMTHREADS]; - pthread_attr_t attr; - int i; - - assert(pthread_attr_init(&attr) == 0); - assert(pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED) == 0); - - for (i = 0; i < NUMTHREADS+2; i++) - { - seqmap[i] = 0; - } - - for (i = 0; i < NUMTHREADS; i++) - { - if (NUMTHREADS/2 == i) - { - /* Include this main thread, which will be an implicit pthread_t */ - seqmap[(int)pthread_getunique_np(pthread_self())] = 1; - } - assert(pthread_create(&t[i], &attr, func, NULL) == 0); - } - - while (NUMTHREADS > InterlockedExchangeAdd((LPLONG)&done, 0L)) - Sleep(100); - - Sleep(100); - - assert(seqmap[0] == 0); - for (i = 1; i < NUMTHREADS+2; i++) - { - assert(seqmap[i] == 1); - } - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/sizes.c b/platform/win32/msvc/external/pthreads.2/tests/sizes.c deleted file mode 100644 index abd233faeda..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/sizes.c +++ /dev/null @@ -1,32 +0,0 @@ -#define _WIN32_WINNT 0x400 - -#include "test.h" -#include "../implement.h" - -int -main() -{ - printf("Sizes of pthreads-win32 structs\n"); - printf("-------------------------------\n"); - printf("%30s %4d\n", "pthread_t", (int)sizeof(pthread_t)); - printf("%30s %4d\n", "ptw32_thread_t", (int)sizeof(ptw32_thread_t)); - printf("%30s %4d\n", "pthread_attr_t_", (int)sizeof(struct pthread_attr_t_)); - printf("%30s %4d\n", "sem_t_", (int)sizeof(struct sem_t_)); - printf("%30s %4d\n", "pthread_mutex_t_", (int)sizeof(struct pthread_mutex_t_)); - printf("%30s %4d\n", "pthread_mutexattr_t_", (int)sizeof(struct pthread_mutexattr_t_)); - printf("%30s %4d\n", "pthread_spinlock_t_", (int)sizeof(struct pthread_spinlock_t_)); - printf("%30s %4d\n", "pthread_barrier_t_", (int)sizeof(struct pthread_barrier_t_)); - printf("%30s %4d\n", "pthread_barrierattr_t_", (int)sizeof(struct pthread_barrierattr_t_)); - printf("%30s %4d\n", "pthread_key_t_", (int)sizeof(struct pthread_key_t_)); - printf("%30s %4d\n", "pthread_cond_t_", (int)sizeof(struct pthread_cond_t_)); - printf("%30s %4d\n", "pthread_condattr_t_", (int)sizeof(struct pthread_condattr_t_)); - printf("%30s %4d\n", "pthread_rwlock_t_", (int)sizeof(struct pthread_rwlock_t_)); - printf("%30s %4d\n", "pthread_rwlockattr_t_", (int)sizeof(struct pthread_rwlockattr_t_)); - printf("%30s %4d\n", "pthread_once_t_", (int)sizeof(struct pthread_once_t_)); - printf("%30s %4d\n", "ptw32_cleanup_t", (int)sizeof(struct ptw32_cleanup_t)); - printf("%30s %4d\n", "ptw32_mcs_node_t_", (int)sizeof(struct ptw32_mcs_node_t_)); - printf("%30s %4d\n", "sched_param", (int)sizeof(struct sched_param)); - printf("-------------------------------\n"); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/spin1.c b/platform/win32/msvc/external/pthreads.2/tests/spin1.c deleted file mode 100644 index 01d760d57d7..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/spin1.c +++ /dev/null @@ -1,59 +0,0 @@ -/* - * spin1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Create a simple spinlock object, lock it, and then unlock it again. - * This is the simplest test of the pthread mutex family that we can do. - * - */ - -#include "test.h" - -pthread_spinlock_t lock; - -int -main() -{ - assert(pthread_spin_init(&lock, PTHREAD_PROCESS_PRIVATE) == 0); - - assert(pthread_spin_lock(&lock) == 0); - - assert(pthread_spin_unlock(&lock) == 0); - - assert(pthread_spin_destroy(&lock) == 0); - - assert(pthread_spin_lock(&lock) == EINVAL); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/spin2.c b/platform/win32/msvc/external/pthreads.2/tests/spin2.c deleted file mode 100644 index c65d30e320d..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/spin2.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * spin2.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Declare a spinlock object, lock it, trylock it, - * and then unlock it again. - * - */ - -#include "test.h" - -pthread_spinlock_t lock = NULL; - -static int washere = 0; - -void * func(void * arg) -{ - assert(pthread_spin_trylock(&lock) == EBUSY); - - washere = 1; - - return 0; -} - -int -main() -{ - pthread_t t; - - assert(pthread_spin_init(&lock, PTHREAD_PROCESS_PRIVATE) == 0); - - assert(pthread_spin_lock(&lock) == 0); - - assert(pthread_create(&t, NULL, func, NULL) == 0); - assert(pthread_join(t, NULL) == 0); - - assert(pthread_spin_unlock(&lock) == 0); - - assert(pthread_spin_destroy(&lock) == 0); - - assert(washere == 1); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/spin3.c b/platform/win32/msvc/external/pthreads.2/tests/spin3.c deleted file mode 100644 index 5f3973cab66..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/spin3.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - * spin3.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Thread A locks spin - thread B tries to unlock. - * This should succeed, but it's undefined behaviour. - * - */ - -#include "test.h" - -static int wasHere = 0; - -static pthread_spinlock_t spin; - -void * unlocker(void * arg) -{ - int expectedResult = (int)(size_t)arg; - - wasHere++; - assert(pthread_spin_unlock(&spin) == expectedResult); - wasHere++; - return NULL; -} - -int -main() -{ - pthread_t t; - - wasHere = 0; - assert(pthread_spin_init(&spin, PTHREAD_PROCESS_PRIVATE) == 0); - assert(pthread_spin_lock(&spin) == 0); - assert(pthread_create(&t, NULL, unlocker, (void*)0) == 0); - assert(pthread_join(t, NULL) == 0); - /* - * Our spinlocks don't record the owner thread so any thread can unlock the spinlock, - * but nor is it an error for any thread to unlock a spinlock that is not locked. - */ - assert(pthread_spin_unlock(&spin) == 0); - assert(pthread_spin_destroy(&spin) == 0); - assert(wasHere == 2); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/spin4.c b/platform/win32/msvc/external/pthreads.2/tests/spin4.c deleted file mode 100644 index 03b09f9bcb3..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/spin4.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - * spin4.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Declare a static spinlock object, lock it, spin on it, - * and then unlock it again. - */ - -#include "test.h" -#include - -pthread_spinlock_t lock = PTHREAD_SPINLOCK_INITIALIZER; -PTW32_STRUCT_TIMEB currSysTimeStart; -PTW32_STRUCT_TIMEB currSysTimeStop; - -#define GetDurationMilliSecs(_TStart, _TStop) ((_TStop.time*1000+_TStop.millitm) \ - - (_TStart.time*1000+_TStart.millitm)) - -static int washere = 0; - -void * func(void * arg) -{ - PTW32_FTIME(&currSysTimeStart); - washere = 1; - assert(pthread_spin_lock(&lock) == 0); - assert(pthread_spin_unlock(&lock) == 0); - PTW32_FTIME(&currSysTimeStop); - - return (void *)(size_t)GetDurationMilliSecs(currSysTimeStart, currSysTimeStop); -} - -int -main() -{ - void* result = (void*)0; - pthread_t t; - int CPUs; - PTW32_STRUCT_TIMEB sysTime; - - if ((CPUs = pthread_num_processors_np()) == 1) - { - printf("Test not run - it requires multiple CPUs.\n"); - exit(0); - } - - assert(pthread_spin_lock(&lock) == 0); - - assert(pthread_create(&t, NULL, func, NULL) == 0); - - while (washere == 0) - { - sched_yield(); - } - - do - { - sched_yield(); - PTW32_FTIME(&sysTime); - } - while (GetDurationMilliSecs(currSysTimeStart, sysTime) <= 1000); - - assert(pthread_spin_unlock(&lock) == 0); - - assert(pthread_join(t, &result) == 0); - assert((int)(size_t)result > 1000); - - assert(pthread_spin_destroy(&lock) == 0); - - assert(washere == 1); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/stress1.c b/platform/win32/msvc/external/pthreads.2/tests/stress1.c deleted file mode 100644 index 072fce098f6..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/stress1.c +++ /dev/null @@ -1,278 +0,0 @@ -/* - * stress1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Stress test condition variables, mutexes, semaphores. - * - * Test Method (Validation or Falsification): - * - Validation - * - * Requirements Tested: - * - Correct accounting of semaphore and condition variable waiters. - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * Attempting to expose race conditions in cond vars, semaphores etc. - * - Master attempts to signal slave close to when timeout is due. - * - Master and slave do battle continuously until main tells them to stop. - * - Afterwards, the CV must be successfully destroyed (will return an - * error if there are waiters (including any internal semaphore waiters, - * which, if there are, cannot be real waiters). - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - CV is successfully destroyed. - * - * Fail Criteria: - * - CV destroy fails. - */ - -#include "test.h" -#include -#include - - -const unsigned int ITERATIONS = 1000; - -static pthread_t master, slave; -typedef struct { - int value; - pthread_cond_t cv; - pthread_mutex_t mx; -} mysig_t; - -static int allExit; -static mysig_t control = {0, PTHREAD_COND_INITIALIZER, PTHREAD_MUTEX_INITIALIZER}; -static pthread_barrier_t startBarrier, readyBarrier, holdBarrier; -static int timeoutCount = 0; -static int signalsTakenCount = 0; -static int signalsSent = 0; -static int bias = 0; -static int timeout = 10; // Must be > 0 - -enum { - CTL_STOP = -1 -}; - -/* - * Returns abstime 'milliseconds' from 'now'. - * - * Works for: -INT_MAX <= millisecs <= INT_MAX - */ -struct timespec * -millisecondsFromNow (struct timespec * time, int millisecs) -{ - PTW32_STRUCT_TIMEB currSysTime; - int64_t nanosecs, secs; - const int64_t NANOSEC_PER_MILLISEC = 1000000; - const int64_t NANOSEC_PER_SEC = 1000000000; - - /* get current system time and add millisecs */ - PTW32_FTIME(&currSysTime); - - secs = (int64_t)(currSysTime.time) + (millisecs / 1000); - nanosecs = ((int64_t) (millisecs%1000 + currSysTime.millitm)) * NANOSEC_PER_MILLISEC; - if (nanosecs >= NANOSEC_PER_SEC) - { - secs++; - nanosecs -= NANOSEC_PER_SEC; - } - else if (nanosecs < 0) - { - secs--; - nanosecs += NANOSEC_PER_SEC; - } - - time->tv_nsec = (long)nanosecs; - time->tv_sec = (long)secs; - - return time; -} - -void * -masterThread (void * arg) -{ - int dither = (int)(size_t)arg; - - timeout = (int)(size_t)arg; - - pthread_barrier_wait(&startBarrier); - - do - { - int sleepTime; - - assert(pthread_mutex_lock(&control.mx) == 0); - control.value = timeout; - assert(pthread_mutex_unlock(&control.mx) == 0); - - /* - * We are attempting to send the signal close to when the slave - * is due to timeout. We feel around by adding some [non-random] dither. - * - * dither is in the range 2*timeout peak-to-peak - * sleep time is the average of timeout plus dither. - * e.g. - * if timeout = 10 then dither = 20 and - * sleep millisecs is: 5 <= ms <= 15 - * - * The bias value attempts to apply some negative feedback to keep - * the ratio of timeouts to signals taken close to 1:1. - * bias changes more slowly than dither so as to average more. - * - * Finally, if abs(bias) exceeds timeout then timeout is incremented. - */ - if (signalsSent % timeout == 0) - { - if (timeoutCount > signalsTakenCount) - { - bias++; - } - else if (timeoutCount < signalsTakenCount) - { - bias--; - } - if (bias < -timeout || bias > timeout) - { - timeout++; - } - } - dither = (dither + 1 ) % (timeout * 2); - sleepTime = (timeout - bias + dither) / 2; - Sleep(sleepTime); - assert(pthread_cond_signal(&control.cv) == 0); - signalsSent++; - - pthread_barrier_wait(&holdBarrier); - pthread_barrier_wait(&readyBarrier); - } - while (!allExit); - - return NULL; -} - -void * -slaveThread (void * arg) -{ - struct timespec time; - - pthread_barrier_wait(&startBarrier); - - do - { - assert(pthread_mutex_lock(&control.mx) == 0); - if (pthread_cond_timedwait(&control.cv, - &control.mx, - millisecondsFromNow(&time, control.value)) == ETIMEDOUT) - { - timeoutCount++; - } - else - { - signalsTakenCount++; - } - assert(pthread_mutex_unlock(&control.mx) == 0); - - pthread_barrier_wait(&holdBarrier); - pthread_barrier_wait(&readyBarrier); - } - while (!allExit); - - return NULL; -} - -int -main () -{ - unsigned int i; - - assert(pthread_barrier_init(&startBarrier, NULL, 3) == 0); - assert(pthread_barrier_init(&readyBarrier, NULL, 3) == 0); - assert(pthread_barrier_init(&holdBarrier, NULL, 3) == 0); - - assert(pthread_create(&master, NULL, masterThread, (void *)(size_t)timeout) == 0); - assert(pthread_create(&slave, NULL, slaveThread, NULL) == 0); - - allExit = FALSE; - - pthread_barrier_wait(&startBarrier); - - for (i = 1; !allExit; i++) - { - pthread_barrier_wait(&holdBarrier); - if (i >= ITERATIONS) - { - allExit = TRUE; - } - pthread_barrier_wait(&readyBarrier); - } - - assert(pthread_join(slave, NULL) == 0); - assert(pthread_join(master, NULL) == 0); - - printf("Signals sent = %d\nWait timeouts = %d\nSignals taken = %d\nBias = %d\nTimeout = %d\n", - signalsSent, - timeoutCount, - signalsTakenCount, - (int) bias, - timeout); - - /* Cleanup */ - assert(pthread_barrier_destroy(&holdBarrier) == 0); - assert(pthread_barrier_destroy(&readyBarrier) == 0); - assert(pthread_barrier_destroy(&startBarrier) == 0); - assert(pthread_cond_destroy(&control.cv) == 0); - assert(pthread_mutex_destroy(&control.mx) == 0); - - /* Success. */ - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/test.h b/platform/win32/msvc/external/pthreads.2/tests/test.h deleted file mode 100644 index 42bfd2cd513..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/test.h +++ /dev/null @@ -1,182 +0,0 @@ -/* - * test.h - * - * Useful definitions and declarations for tests. - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - */ - -#ifndef _PTHREAD_TEST_H_ -#define _PTHREAD_TEST_H_ - -#include "pthread.h" -#include "sched.h" -#include "semaphore.h" - -#include -#include - -#define PTW32_THREAD_NULL_ID {NULL,0} - -/* - * Some non-thread POSIX API substitutes - */ -#define rand_r( _seed ) \ - ( _seed == _seed? rand() : rand() ) - -#if defined(__MINGW32__) -#include -#elif defined(__BORLANDC__) -#define int64_t ULONGLONG -#else -#define int64_t _int64 -#endif - -#if defined(_MSC_VER) && _MSC_VER >= 1400 -# define PTW32_FTIME(x) _ftime64_s(x) -# define PTW32_STRUCT_TIMEB struct __timeb64 -#elif ( defined(_MSC_VER) && _MSC_VER >= 1300 ) || \ - ( defined(__MINGW32__) && __MSVCRT_VERSION__ >= 0x0601 ) -# define PTW32_FTIME(x) _ftime64(x) -# define PTW32_STRUCT_TIMEB struct __timeb64 -#else -# define PTW32_FTIME(x) _ftime(x) -# define PTW32_STRUCT_TIMEB struct _timeb -#endif - - -const char * error_string[] = { - "ZERO_or_EOK", - "EPERM", - "ENOFILE_or_ENOENT", - "ESRCH", - "EINTR", - "EIO", - "ENXIO", - "E2BIG", - "ENOEXEC", - "EBADF", - "ECHILD", - "EAGAIN", - "ENOMEM", - "EACCES", - "EFAULT", - "UNKNOWN_15", - "EBUSY", - "EEXIST", - "EXDEV", - "ENODEV", - "ENOTDIR", - "EISDIR", - "EINVAL", - "ENFILE", - "EMFILE", - "ENOTTY", - "UNKNOWN_26", - "EFBIG", - "ENOSPC", - "ESPIPE", - "EROFS", - "EMLINK", - "EPIPE", - "EDOM", - "ERANGE", - "UNKNOWN_35", - "EDEADLOCK_or_EDEADLK", - "UNKNOWN_37", - "ENAMETOOLONG", - "ENOLCK", - "ENOSYS", - "ENOTEMPTY", - "EILSEQ", - "EOWNERDEAD", - "ENOTRECOVERABLE" -}; - -/* - * The Mingw32 assert macro calls the CRTDLL _assert function - * which pops up a dialog. We want to run in batch mode so - * we define our own assert macro. - */ -#ifdef assert -# undef assert -#endif - -#ifndef ASSERT_TRACE -# define ASSERT_TRACE 0 -#else -# undef ASSERT_TRACE -# define ASSERT_TRACE 1 -#endif - -# define assert(e) \ - ((e) ? ((ASSERT_TRACE) ? fprintf(stderr, \ - "Assertion succeeded: (%s), file %s, line %d\n", \ - #e, __FILE__, (int) __LINE__), \ - fflush(stderr) : \ - 0) : \ - (fprintf(stderr, "Assertion failed: (%s), file %s, line %d\n", \ - #e, __FILE__, (int) __LINE__), exit(1), 0)) - -int assertE; -# define assert_e(e, o, r) \ - (((assertE = e) o (r)) ? ((ASSERT_TRACE) ? fprintf(stderr, \ - "Assertion succeeded: (%s), file %s, line %d\n", \ - #e, __FILE__, (int) __LINE__), \ - fflush(stderr) : \ - 0) : \ - (fprintf(stderr, "Assertion failed: (%s %s %s), file %s, line %d, error %s\n", \ - #e,#o,#r, __FILE__, (int) __LINE__, error_string[assertE]), exit(1), 0)) - -#endif - -# define BEGIN_MUTEX_STALLED_ROBUST(mxAttr) \ - for(;;) \ - { \ - static int _i=0; \ - static int _robust; \ - pthread_mutexattr_getrobust(&(mxAttr), &_robust); - -# define END_MUTEX_STALLED_ROBUST(mxAttr) \ - printf("Pass %s\n", _robust==PTHREAD_MUTEX_ROBUST?"Robust":"Non-robust"); \ - if (++_i > 1) \ - break; \ - else \ - { \ - pthread_mutexattr_t *pma, *pmaEnd; \ - for(pma = &(mxAttr), pmaEnd = pma + sizeof(mxAttr)/sizeof(pthread_mutexattr_t); \ - pma < pmaEnd; \ - pthread_mutexattr_setrobust(pma++, PTHREAD_MUTEX_ROBUST)); \ - } \ - } - -# define IS_ROBUST (_robust==PTHREAD_MUTEX_ROBUST) diff --git a/platform/win32/msvc/external/pthreads.2/tests/tryentercs.c b/platform/win32/msvc/external/pthreads.2/tests/tryentercs.c deleted file mode 100644 index 4ba36018250..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/tryentercs.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - * tryentercs.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * See if we have the TryEnterCriticalSection function. - * Does not use any part of pthreads. - */ - -#include -#include -#include - -/* - * Function pointer to TryEnterCriticalSection if it exists - * - otherwise NULL - */ -BOOL (WINAPI *_try_enter_critical_section)(LPCRITICAL_SECTION) = -NULL; - -/* - * Handle to kernel32.dll - */ -static HINSTANCE _h_kernel32; - - -int -main() -{ - CRITICAL_SECTION cs; - - SetLastError(0); - - printf("Last Error [main enter] %ld\n", (long) GetLastError()); - - /* - * Load KERNEL32 and try to get address of TryEnterCriticalSection - */ - _h_kernel32 = LoadLibrary(TEXT("KERNEL32.DLL")); - _try_enter_critical_section = - (BOOL (PT_STDCALL *)(LPCRITICAL_SECTION)) - GetProcAddress(_h_kernel32, - (LPCSTR) "TryEnterCriticalSection"); - - if (_try_enter_critical_section != NULL) - { - InitializeCriticalSection(&cs); - - SetLastError(0); - - if ((*_try_enter_critical_section)(&cs) != 0) - { - LeaveCriticalSection(&cs); - } - else - { - printf("Last Error [try enter] %ld\n", (long) GetLastError()); - - _try_enter_critical_section = NULL; - } - DeleteCriticalSection(&cs); - } - - (void) FreeLibrary(_h_kernel32); - - printf("This system %s TryEnterCriticalSection.\n", - (_try_enter_critical_section == NULL) ? "DOES NOT SUPPORT" : "SUPPORTS"); - printf("POSIX Mutexes will be based on Win32 %s.\n", - (_try_enter_critical_section == NULL) ? "Mutexes" : "Critical Sections"); - - return(0); -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/tryentercs2.c b/platform/win32/msvc/external/pthreads.2/tests/tryentercs2.c deleted file mode 100644 index 487c757c1e4..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/tryentercs2.c +++ /dev/null @@ -1,92 +0,0 @@ -/* - * tryentercs.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * See if we have the TryEnterCriticalSection function. - * Does not use any part of pthreads. - */ - -#include -#include -#include - -/* - * Function pointer to TryEnterCriticalSection if it exists - * - otherwise NULL - */ -BOOL (WINAPI *_try_enter_critical_section)(LPCRITICAL_SECTION) = NULL; - -/* - * Handle to kernel32.dll - */ -static HINSTANCE _h_kernel32; - - -int -main() -{ - LPCRITICAL_SECTION lpcs = NULL; - - SetLastError(0); - - printf("Last Error [main enter] %ld\n", (long) GetLastError()); - - /* - * Load KERNEL32 and try to get address of TryEnterCriticalSection - */ - _h_kernel32 = LoadLibrary(TEXT("KERNEL32.DLL")); - _try_enter_critical_section = - (BOOL (PT_STDCALL *)(LPCRITICAL_SECTION)) - GetProcAddress(_h_kernel32, - (LPCSTR) "TryEnterCriticalSection"); - - if (_try_enter_critical_section != NULL) - { - SetLastError(0); - - (*_try_enter_critical_section)(lpcs); - - printf("Last Error [try enter] %ld\n", (long) GetLastError()); - } - - (void) FreeLibrary(_h_kernel32); - - printf("This system %s TryEnterCriticalSection.\n", - (_try_enter_critical_section == NULL) ? "DOES NOT SUPPORT" : "SUPPORTS"); - printf("POSIX Mutexes will be based on Win32 %s.\n", - (_try_enter_critical_section == NULL) ? "Mutexes" : "Critical Sections"); - - return(0); -} - diff --git a/platform/win32/msvc/external/pthreads.2/tests/tsd1.c b/platform/win32/msvc/external/pthreads.2/tests/tsd1.c deleted file mode 100644 index 285a2d565a0..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/tsd1.c +++ /dev/null @@ -1,209 +0,0 @@ -/* - * tsd1.c - * - * Test Thread Specific Data (TSD) key creation and destruction. - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * - * -------------------------------------------------------------------------- - * - * Description: - * - - * - * Test Method (validation or falsification): - * - validation - * - * Requirements Tested: - * - keys are created for each existing thread including the main thread - * - keys are created for newly created threads - * - keys are thread specific - * - destroy routine is called on each thread exit including the main thread - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Environment: - * - - * - * Input: - * - none - * - * Output: - * - text to stdout - * - * Assumptions: - * - already validated: pthread_create() - * pthread_once() - * - main thread also has a POSIX thread identity - * - * Pass Criteria: - * - stdout matches file reference/tsd1.out - * - * Fail Criteria: - * - fails to match file reference/tsd1.out - * - output identifies failed component - */ - -#include -#include "test.h" - -enum { - NUM_THREADS = 100 -}; - -static pthread_key_t key = NULL; -static int accesscount[NUM_THREADS]; -static int thread_set[NUM_THREADS]; -static int thread_destroyed[NUM_THREADS]; -static pthread_barrier_t startBarrier; - -static void -destroy_key(void * arg) -{ - int * j = (int *) arg; - - (*j)++; - - assert(*j == 2); - - thread_destroyed[j - accesscount] = 1; -} - -static void -setkey(void * arg) -{ - int * j = (int *) arg; - - thread_set[j - accesscount] = 1; - - assert(*j == 0); - - assert(pthread_getspecific(key) == NULL); - - assert(pthread_setspecific(key, arg) == 0); - assert(pthread_setspecific(key, arg) == 0); - assert(pthread_setspecific(key, arg) == 0); - - assert(pthread_getspecific(key) == arg); - - (*j)++; - - assert(*j == 1); -} - -static void * -mythread(void * arg) -{ - (void) pthread_barrier_wait(&startBarrier); - - setkey(arg); - - return 0; - - /* Exiting the thread will call the key destructor. */ -} - -int -main() -{ - int i; - int fail = 0; - pthread_t thread[NUM_THREADS]; - - assert(pthread_barrier_init(&startBarrier, NULL, NUM_THREADS/2) == 0); - - for (i = 1; i < NUM_THREADS/2; i++) - { - accesscount[i] = thread_set[i] = thread_destroyed[i] = 0; - assert(pthread_create(&thread[i], NULL, mythread, (void *)&accesscount[i]) == 0); - } - - /* - * Here we test that existing threads will get a key created - * for them. - */ - assert(pthread_key_create(&key, destroy_key) == 0); - - (void) pthread_barrier_wait(&startBarrier); - - /* - * Test main thread key. - */ - accesscount[0] = 0; - setkey((void *) &accesscount[0]); - - /* - * Here we test that new threads will get a key created - * for them. - */ - for (i = NUM_THREADS/2; i < NUM_THREADS; i++) - { - accesscount[i] = thread_set[i] = thread_destroyed[i] = 0; - assert(pthread_create(&thread[i], NULL, mythread, (void *)&accesscount[i]) == 0); - } - - /* - * Wait for all threads to complete. - */ - for (i = 1; i < NUM_THREADS; i++) - { - assert(pthread_join(thread[i], NULL) == 0); - } - - assert(pthread_key_delete(key) == 0); - - assert(pthread_barrier_destroy(&startBarrier) == 0); - - for (i = 1; i < NUM_THREADS; i++) - { - /* - * The counter is incremented once when the key is set to - * a value, and again when the key is destroyed. If the key - * doesn't get set for some reason then it will still be - * NULL and the destroy function will not be called, and - * hence accesscount will not equal 2. - */ - if (accesscount[i] != 2) - { - fail++; - fprintf(stderr, "Thread %d key, set = %d, destroyed = %d\n", - i, thread_set[i], thread_destroyed[i]); - } - } - - fflush(stderr); - - return (fail); -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/tsd2.c b/platform/win32/msvc/external/pthreads.2/tests/tsd2.c deleted file mode 100644 index 0e74f7ab9d3..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/tsd2.c +++ /dev/null @@ -1,213 +0,0 @@ -/* - * tsd2.c - * - * Test Thread Specific Data (TSD) key creation and destruction. - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * - * -------------------------------------------------------------------------- - * - * Description: - * - - * - * Test Method (validation or falsification): - * - validation - * - * Requirements Tested: - * - keys are created for each existing thread including the main thread - * - keys are created for newly created threads - * - keys are thread specific - * - destroy routine is called on each thread exit including the main thread - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Environment: - * - - * - * Input: - * - none - * - * Output: - * - text to stdout - * - * Assumptions: - * - already validated: pthread_create() - * pthread_once() - * - main thread also has a POSIX thread identity - * - * Pass Criteria: - * - stdout matches file reference/tsd1.out - * - * Fail Criteria: - * - fails to match file reference/tsd1.out - * - output identifies failed component - */ - -#include -#include "test.h" - -enum { - NUM_THREADS = 100 -}; - -static pthread_key_t key = NULL; -static int accesscount[NUM_THREADS]; -static int thread_set[NUM_THREADS]; -static int thread_destroyed[NUM_THREADS]; -static pthread_barrier_t startBarrier; - -static void -destroy_key(void * arg) -{ - int * j = (int *) arg; - - (*j)++; - - /* Set TSD key from the destructor to test destructor iteration */ - if (*j == 2) - assert(pthread_setspecific(key, arg) == 0); - else - assert(*j == 3); - - thread_destroyed[j - accesscount] = 1; -} - -static void -setkey(void * arg) -{ - int * j = (int *) arg; - - thread_set[j - accesscount] = 1; - - assert(*j == 0); - - assert(pthread_getspecific(key) == NULL); - - assert(pthread_setspecific(key, arg) == 0); - assert(pthread_setspecific(key, arg) == 0); - assert(pthread_setspecific(key, arg) == 0); - - assert(pthread_getspecific(key) == arg); - - (*j)++; - - assert(*j == 1); -} - -static void * -mythread(void * arg) -{ - (void) pthread_barrier_wait(&startBarrier); - - setkey(arg); - - return 0; - - /* Exiting the thread will call the key destructor. */ -} - -int -main() -{ - int i; - int fail = 0; - pthread_t thread[NUM_THREADS]; - - assert(pthread_barrier_init(&startBarrier, NULL, NUM_THREADS/2) == 0); - - for (i = 1; i < NUM_THREADS/2; i++) - { - accesscount[i] = thread_set[i] = thread_destroyed[i] = 0; - assert(pthread_create(&thread[i], NULL, mythread, (void *)&accesscount[i]) == 0); - } - - /* - * Here we test that existing threads will get a key created - * for them. - */ - assert(pthread_key_create(&key, destroy_key) == 0); - - (void) pthread_barrier_wait(&startBarrier); - - /* - * Test main thread key. - */ - accesscount[0] = 0; - setkey((void *) &accesscount[0]); - - /* - * Here we test that new threads will get a key created - * for them. - */ - for (i = NUM_THREADS/2; i < NUM_THREADS; i++) - { - accesscount[i] = thread_set[i] = thread_destroyed[i] = 0; - assert(pthread_create(&thread[i], NULL, mythread, (void *)&accesscount[i]) == 0); - } - - /* - * Wait for all threads to complete. - */ - for (i = 1; i < NUM_THREADS; i++) - { - assert(pthread_join(thread[i], NULL) == 0); - } - - assert(pthread_key_delete(key) == 0); - - assert(pthread_barrier_destroy(&startBarrier) == 0); - - for (i = 1; i < NUM_THREADS; i++) - { - /* - * The counter is incremented once when the key is set to - * a value, and again when the key is destroyed. If the key - * doesn't get set for some reason then it will still be - * NULL and the destroy function will not be called, and - * hence accesscount will not equal 2. - */ - if (accesscount[i] != 3) - { - fail++; - fprintf(stderr, "Thread %d key, set = %d, destroyed = %d\n", - i, thread_set[i], thread_destroyed[i]); - } - } - - fflush(stderr); - - return (fail); -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/valid1.c b/platform/win32/msvc/external/pthreads.2/tests/valid1.c deleted file mode 100644 index 2a39b7a01f4..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/valid1.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - * File: valid1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Test that thread validation works. - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" - -enum { - NUMTHREADS = 1 -}; - -static int washere = 0; - -void * func(void * arg) -{ - washere = 1; - return (void *) 0; -} - -int -main() -{ - pthread_t t; - void * result = NULL; - - washere = 0; - assert(pthread_create(&t, NULL, func, NULL) == 0); - assert(pthread_join(t, &result) == 0); - assert((int)(size_t)result == 0); - assert(washere == 1); - sched_yield(); - assert(pthread_kill(t, 0) == ESRCH); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tests/valid2.c b/platform/win32/msvc/external/pthreads.2/tests/valid2.c deleted file mode 100644 index 19d2fa09b3d..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tests/valid2.c +++ /dev/null @@ -1,84 +0,0 @@ -/* - * File: valid2.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: - * - Confirm that thread validation fails for garbage thread ID. - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#include "test.h" - -int -main() -{ - pthread_t NullThread = PTW32_THREAD_NULL_ID; - - assert(pthread_kill(NullThread, 0) == ESRCH); - - return 0; -} diff --git a/platform/win32/msvc/external/pthreads.2/tsd.c b/platform/win32/msvc/external/pthreads.2/tsd.c deleted file mode 100644 index ef49d4e4752..00000000000 --- a/platform/win32/msvc/external/pthreads.2/tsd.c +++ /dev/null @@ -1,44 +0,0 @@ -/* - * tsd.c - * - * Description: - * POSIX thread functions which implement thread-specific data (TSD). - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -#include "pthread_key_create.c" -#include "pthread_key_delete.c" -#include "pthread_setspecific.c" -#include "pthread_getspecific.c" diff --git a/platform/win32/msvc/external/pthreads.2/version.rc b/platform/win32/msvc/external/pthreads.2/version.rc deleted file mode 100644 index 7710d8b4608..00000000000 --- a/platform/win32/msvc/external/pthreads.2/version.rc +++ /dev/null @@ -1,394 +0,0 @@ -/* This is an implementation of the threads API of POSIX 1003.1-2001. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include -#include "pthread.h" - -/* - * Note: the correct __CLEANUP_* macro must be defined corresponding to - * the definition used for the object file builds. This is done in the - * relevent makefiles for the command line builds, but users should ensure - * that their resource compiler knows what it is too. - * If using the default (no __CLEANUP_* defined), pthread.h will define it - * as __CLEANUP_C. - */ - -#if defined(__MINGW64__) -# define PTW32_ARCH "x64 (mingw64)" -#elif defined (__MINGW32__) -# define PTW32_ARCH "x86 (mingw32)" -#endif -#if defined(PTW32_ARCHx64) -# define PTW32_ARCH "x64" -#elif defined(PTW32_ARCHx86) -# define PTW32_ARCH "x86" -#endif - -#if defined(PTW32_RC_MSC) -# if defined(__CLEANUP_C) -# define PTW32_VERSIONINFO_NAME "pthreadVC2.DLL\0" -# define PTW32_VERSIONINFO_DESCRIPTION "MS C " PTW32_ARCH "\0" -# elif defined(__CLEANUP_CXX) -# define PTW32_VERSIONINFO_NAME "pthreadVCE2.DLL\0" -# define PTW32_VERSIONINFO_DESCRIPTION "MS C++ " PTW32_ARCH "\0" -# elif defined(__CLEANUP_SEH) -# define PTW32_VERSIONINFO_NAME "pthreadVSE2.DLL\0" -# define PTW32_VERSIONINFO_DESCRIPTION "MS C SEH " PTW32_ARCH "\0" -# else -# error Resource compiler doesn't know which cleanup style you're using - see version.rc -# endif -#elif defined(__GNUC__) -# if defined(__CLEANUP_C) -# define PTW32_VERSIONINFO_NAME "pthreadGC2.DLL\0" -# define PTW32_VERSIONINFO_DESCRIPTION "GNU C " PTW32_ARCH "\0" -# elif defined(__CLEANUP_CXX) -# define PTW32_VERSIONINFO_NAME "pthreadGCE2.DLL\0" -# define PTW32_VERSIONINFO_DESCRIPTION "GNU C++ " PTW32_ARCH "\0" -# else -# error Resource compiler doesn't know which cleanup style you're using - see version.rc -# endif -#elif defined(__BORLANDC__) -# if defined(__CLEANUP_C) -# define PTW32_VERSIONINFO_NAME "pthreadBC2.DLL\0" -# define PTW32_VERSIONINFO_DESCRIPTION "BORLAND C " PTW32_ARCH "\0" -# elif defined(__CLEANUP_CXX) -# define PTW32_VERSIONINFO_NAME "pthreadBCE2.DLL\0" -# define PTW32_VERSIONINFO_DESCRIPTION "BORLAND C++ " PTW32_ARCH "\0" -# else -# error Resource compiler doesn't know which cleanup style you're using - see version.rc -# endif -#elif defined(__WATCOMC__) -# if defined(__CLEANUP_C) -# define PTW32_VERSIONINFO_NAME "pthreadWC2.DLL\0" -# define PTW32_VERSIONINFO_DESCRIPTION "WATCOM C " PTW32_ARCH "\0" -# elif defined(__CLEANUP_CXX) -# define PTW32_VERSIONINFO_NAME "pthreadWCE2.DLL\0" -# define PTW32_VERSIONINFO_DESCRIPTION "WATCOM C++ " PTW32_ARCH "\0" -# else -# error Resource compiler doesn't know which cleanup style you're using - see version.rc -# endif -#else -# error Resource compiler doesn't know which compiler you're using - see version.rc -#endif - - -VS_VERSION_INFO VERSIONINFO - FILEVERSION PTW32_VERSION - PRODUCTVERSION PTW32_VERSION - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK - FILEFLAGS 0 - FILEOS VOS__WINDOWS32 - FILETYPE VFT_DLL -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "ProductName", "POSIX Threads for Windows LPGL\0" - VALUE "ProductVersion", PTW32_VERSION_STRING - VALUE "FileVersion", PTW32_VERSION_STRING - VALUE "FileDescription", PTW32_VERSIONINFO_DESCRIPTION - VALUE "InternalName", PTW32_VERSIONINFO_NAME - VALUE "OriginalFilename", PTW32_VERSIONINFO_NAME - VALUE "CompanyName", "Open Source Software community LGPL\0" - VALUE "LegalCopyright", "Copyright (C) Project contributors 2012\0" - VALUE "Comments", "http://sourceware.org/pthreads-win32/\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END - -/* -VERSIONINFO Resource - -The VERSIONINFO resource-definition statement creates a version-information -resource. The resource contains such information about the file as its -version number, its intended operating system, and its original filename. -The resource is intended to be used with the Version Information functions. - -versionID VERSIONINFO fixed-info { block-statement...} - -versionID - Version-information resource identifier. This value must be 1. - -fixed-info - Version information, such as the file version and the intended operating - system. This parameter consists of the following statements. - - - Statement Description - -------------------------------------------------------------------------- - FILEVERSION - version Binary version number for the file. The version - consists of two 32-bit integers, defined by four - 16-bit integers. For example, "FILEVERSION 3,10,0,61" - is translated into two doublewords: 0x0003000a and - 0x0000003d, in that order. Therefore, if version is - defined by the DWORD values dw1 and dw2, they need - to appear in the FILEVERSION statement as follows: - HIWORD(dw1), LOWORD(dw1), HIWORD(dw2), LOWORD(dw2). - PRODUCTVERSION - version Binary version number for the product with which the - file is distributed. The version parameter is two - 32-bit integers, defined by four 16-bit integers. - For more information about version, see the - FILEVERSION description. - FILEFLAGSMASK - fileflagsmask Bits in the FILEFLAGS statement are valid. If a bit - is set, the corresponding bit in FILEFLAGS is valid. - FILEFLAGSfileflags Attributes of the file. The fileflags parameter must - be the combination of all the file flags that are - valid at compile time. For 16-bit Windows, this - value is 0x3f. - FILEOSfileos Operating system for which this file was designed. - The fileos parameter can be one of the operating - system values given in the Remarks section. - FILETYPEfiletype General type of file. The filetype parameter can be - one of the file type values listed in the Remarks - section. - FILESUBTYPE - subtype Function of the file. The subtype parameter is zero - unless the type parameter in the FILETYPE statement - is VFT_DRV, VFT_FONT, or VFT_VXD. For a list of file - subtype values, see the Remarks section. - -block-statement - Specifies one or more version-information blocks. A block can contain - string information or variable information. For more information, see - StringFileInfo Block or VarFileInfo Block. - -Remarks - -To use the constants specified with the VERSIONINFO statement, you must -include the Winver.h or Windows.h header file in the resource-definition file. - -The following list describes the parameters used in the VERSIONINFO statement: - -fileflags - A combination of the following values. - - Value Description - - VS_FF_DEBUG File contains debugging information or is compiled - with debugging features enabled. - VS_FF_PATCHED File has been modified and is not identical to the - original shipping file of the same version number. - VS_FF_PRERELEASE File is a development version, not a commercially - released product. - VS_FF_PRIVATEBUILD File was not built using standard release procedures. - If this value is given, the StringFileInfo block must - contain a PrivateBuild string. - VS_FF_SPECIALBUILD File was built by the original company using standard - release procedures but is a variation of the standard - file of the same version number. If this value is - given, the StringFileInfo block must contain a - SpecialBuild string. - -fileos - One of the following values. - - Value Description - - VOS_UNKNOWN The operating system for which the file was designed - is unknown. - VOS_DOS File was designed for MS-DOS. - VOS_NT File was designed for Windows Server 2003 family, - Windows XP, Windows 2000, or Windows NT. - VOS__WINDOWS16 File was designed for 16-bit Windows. - VOS__WINDOWS32 File was designed for 32-bit Windows. - VOS_DOS_WINDOWS16 File was designed for 16-bit Windows running with - MS-DOS. - VOS_DOS_WINDOWS32 File was designed for 32-bit Windows running with - MS-DOS. - VOS_NT_WINDOWS32 File was designed for Windows Server 2003 family, - Windows XP, Windows 2000, or Windows NT. - - The values 0x00002L, 0x00003L, 0x20000L and 0x30000L are reserved. - -filetype - One of the following values. - - Value Description - - VFT_UNKNOWN File type is unknown. - VFT_APP File contains an application. - VFT_DLL File contains a dynamic-link library (DLL). - VFT_DRV File contains a device driver. If filetype is - VFT_DRV, subtype contains a more specific - description of the driver. - VFT_FONT File contains a font. If filetype is VFT_FONT, - subtype contains a more specific description of the - font. - VFT_VXD File contains a virtual device. - VFT_STATIC_LIB File contains a static-link library. - - All other values are reserved for use by Microsoft. - -subtype - Additional information about the file type. - - If filetype specifies VFT_DRV, this parameter can be one of the - following values. - - Value Description - - VFT2_UNKNOWN Driver type is unknown. - VFT2_DRV_COMM File contains a communications driver. - VFT2_DRV_PRINTER File contains a printer driver. - VFT2_DRV_KEYBOARD File contains a keyboard driver. - VFT2_DRV_LANGUAGE File contains a language driver. - VFT2_DRV_DISPLAY File contains a display driver. - VFT2_DRV_MOUSE File contains a mouse driver. - VFT2_DRV_NETWORK File contains a network driver. - VFT2_DRV_SYSTEM File contains a system driver. - VFT2_DRV_INSTALLABLE File contains an installable driver. - VFT2_DRV_SOUND File contains a sound driver. - VFT2_DRV_VERSIONED_PRINTER File contains a versioned printer driver. - - If filetype specifies VFT_FONT, this parameter can be one of the - following values. - - Value Description - - VFT2_UNKNOWN Font type is unknown. - VFT2_FONT_RASTER File contains a raster font. - VFT2_FONT_VECTOR File contains a vector font. - VFT2_FONT_TRUETYPE File contains a TrueType font. - - If filetype specifies VFT_VXD, this parameter must be the virtual-device - identifier included in the virtual-device control block. - - All subtype values not listed here are reserved for use by Microsoft. - -langID - One of the following language codes. - - Code Language Code Language - - 0x0401 Arabic 0x0415 Polish - 0x0402 Bulgarian 0x0416 Portuguese (Brazil) - 0x0403 Catalan 0x0417 Rhaeto-Romanic - 0x0404 Traditional Chinese 0x0418 Romanian - 0x0405 Czech 0x0419 Russian - 0x0406 Danish 0x041A Croato-Serbian (Latin) - 0x0407 German 0x041B Slovak - 0x0408 Greek 0x041C Albanian - 0x0409 U.S. English 0x041D Swedish - 0x040A Castilian Spanish 0x041E Thai - 0x040B Finnish 0x041F Turkish - 0x040C French 0x0420 Urdu - 0x040D Hebrew 0x0421 Bahasa - 0x040E Hungarian 0x0804 Simplified Chinese - 0x040F Icelandic 0x0807 Swiss German - 0x0410 Italian 0x0809 U.K. English - 0x0411 Japanese 0x080A Mexican Spanish - 0x0412 Korean 0x080C Belgian French - 0x0413 Dutch 0x0C0C Canadian French - 0x0414 Norwegian – Bokmal 0x100C Swiss French - 0x0810 Swiss Italian 0x0816 Portuguese (Portugal) - 0x0813 Belgian Dutch 0x081A Serbo-Croatian (Cyrillic) - 0x0814 Norwegian – Nynorsk - -charsetID - One of the following character-set identifiers. - - Identifier Character Set - - 0 7-bit ASCII - 932 Japan (Shift %G–%@ JIS X-0208) - 949 Korea (Shift %G–%@ KSC 5601) - 950 Taiwan (Big5) - 1200 Unicode - 1250 Latin-2 (Eastern European) - 1251 Cyrillic - 1252 Multilingual - 1253 Greek - 1254 Turkish - 1255 Hebrew - 1256 Arabic - -string-name - One of the following predefined names. - - Name Description - - Comments Additional information that should be displayed for - diagnostic purposes. - CompanyName Company that produced the file%G—%@for example, - "Microsoft Corporation" or "Standard Microsystems - Corporation, Inc." This string is required. - FileDescription File description to be presented to users. This - string may be displayed in a list box when the user - is choosing files to install%G—%@for example, - "Keyboard Driver for AT-Style Keyboards". This - string is required. - FileVersion Version number of the file%G—%@for example, - "3.10" or "5.00.RC2". This string is required. - InternalName Internal name of the file, if one exists — for - example, a module name if the file is a dynamic-link - library. If the file has no internal name, this - string should be the original filename, without - extension. This string is required. - LegalCopyright Copyright notices that apply to the file. This - should include the full text of all notices, legal - symbols, copyright dates, and so on — for example, - "Copyright (C) Microsoft Corporation 1990–1999". - This string is optional. - LegalTrademarks Trademarks and registered trademarks that apply to - the file. This should include the full text of all - notices, legal symbols, trademark numbers, and so on. - This string is optional. - OriginalFilename Original name of the file, not including a path. - This information enables an application to determine - whether a file has been renamed by a user. The - format of the name depends on the file system for - which the file was created. This string is required. - PrivateBuild Information about a private version of the file — for - example, "Built by TESTER1 on \TESTBED". This string - should be present only if VS_FF_PRIVATEBUILD is - specified in the fileflags parameter of the root - block. - ProductName Name of the product with which the file is - distributed. This string is required. - ProductVersion Version of the product with which the file is - distributed — for example, "3.10" or "5.00.RC2". - This string is required. - SpecialBuild Text that indicates how this version of the file - differs from the standard version — for example, - "Private build for TESTER1 solving mouse problems - on M250 and M250E computers". This string should be - present only if VS_FF_SPECIALBUILD is specified in - the fileflags parameter of the root block. - */ diff --git a/platform/win32/msvc/external/pthreads.2/w32_CancelableWait.c b/platform/win32/msvc/external/pthreads.2/w32_CancelableWait.c deleted file mode 100644 index 51c48410ce3..00000000000 --- a/platform/win32/msvc/external/pthreads.2/w32_CancelableWait.c +++ /dev/null @@ -1,161 +0,0 @@ -/* - * w32_CancelableWait.c - * - * Description: - * This translation unit implements miscellaneous thread functions. - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "pthread.h" -#include "implement.h" - - -static INLINE int -ptw32_cancelable_wait (HANDLE waitHandle, DWORD timeout) - /* - * ------------------------------------------------------------------- - * This provides an extra hook into the pthread_cancel - * mechanism that will allow you to wait on a Windows handle and make it a - * cancellation point. This function blocks until the given WIN32 handle is - * signaled or pthread_cancel has been called. It is implemented using - * WaitForMultipleObjects on 'waitHandle' and a manually reset WIN32 - * event used to implement pthread_cancel. - * - * Given this hook it would be possible to implement more of the cancellation - * points. - * ------------------------------------------------------------------- - */ -{ - int result; - pthread_t self; - ptw32_thread_t * sp; - HANDLE handles[2]; - DWORD nHandles = 1; - DWORD status; - - handles[0] = waitHandle; - - self = pthread_self(); - sp = (ptw32_thread_t *) self.p; - - if (sp != NULL) - { - /* - * Get cancelEvent handle - */ - if (sp->cancelState == PTHREAD_CANCEL_ENABLE) - { - - if ((handles[1] = sp->cancelEvent) != NULL) - { - nHandles++; - } - } - } - else - { - handles[1] = NULL; - } - - status = WaitForMultipleObjects (nHandles, handles, PTW32_FALSE, timeout); - - switch (status - WAIT_OBJECT_0) - { - case 0: - /* - * Got the handle. - * In the event that both handles are signalled, the smallest index - * value (us) is returned. As it has been arranged, this ensures that - * we don't drop a signal that we should act on (i.e. semaphore, - * mutex, or condition variable etc). - */ - result = 0; - break; - - case 1: - /* - * Got cancel request. - * In the event that both handles are signaled, the cancel will - * be ignored (see case 0 comment). - */ - ResetEvent (handles[1]); - - if (sp != NULL) - { - ptw32_mcs_local_node_t stateLock; - /* - * Should handle POSIX and implicit POSIX threads.. - * Make sure we haven't been async-canceled in the meantime. - */ - ptw32_mcs_lock_acquire (&sp->stateLock, &stateLock); - if (sp->state < PThreadStateCanceling) - { - sp->state = PThreadStateCanceling; - sp->cancelState = PTHREAD_CANCEL_DISABLE; - ptw32_mcs_lock_release (&stateLock); - ptw32_throw (PTW32_EPS_CANCEL); - - /* Never reached */ - } - ptw32_mcs_lock_release (&stateLock); - } - - /* Should never get to here. */ - result = EINVAL; - break; - - default: - if (status == WAIT_TIMEOUT) - { - result = ETIMEDOUT; - } - else - { - result = EINVAL; - } - break; - } - - return (result); - -} /* CancelableWait */ - -int -pthreadCancelableWait (HANDLE waitHandle) -{ - return (ptw32_cancelable_wait (waitHandle, INFINITE)); -} - -int -pthreadCancelableTimedWait (HANDLE waitHandle, DWORD timeout) -{ - return (ptw32_cancelable_wait (waitHandle, timeout)); -} diff --git a/platform/win32/msvc/external/taglib/.gitignore b/platform/win32/msvc/external/taglib/.gitignore deleted file mode 100644 index e776f4dd78a..00000000000 --- a/platform/win32/msvc/external/taglib/.gitignore +++ /dev/null @@ -1,16 +0,0 @@ -CMakeCache.txt -CMakeFiles -bindings -Doxyfile -cmake_install.cmake -cmake_uninstall.cmake -taglib-config -taglib_config.h -Makefile -config.h -install_manifest.txt -examples/Makefile -examples/cmake_install.cmake -taglib/cmake_install.cmake -taglib/tag.dll.resource.txt -include/taglib/* diff --git a/platform/win32/msvc/external/taglib/AUTHORS b/platform/win32/msvc/external/taglib/AUTHORS deleted file mode 100644 index 3683f3fba82..00000000000 --- a/platform/win32/msvc/external/taglib/AUTHORS +++ /dev/null @@ -1,15 +0,0 @@ -Scott Wheeler - Author, maintainer -Lukas Lalinsky - Implementation of multiple new file formats, many bug fixes, maintainer -Ismael Orenstein - Xing header implementation -Allan Sandfeld Jensen - FLAC metadata implementation -Teemu Tervo - Numerous bug reports and fixes -Mathias Panzenböck - Mod, S3M, IT and XM metadata implementations - -Please send all patches and questions to taglib-devel@kde.org rather than to -individual developers! diff --git a/platform/win32/msvc/external/taglib/CMakeLists.txt b/platform/win32/msvc/external/taglib/CMakeLists.txt deleted file mode 100644 index 20a1141b1cd..00000000000 --- a/platform/win32/msvc/external/taglib/CMakeLists.txt +++ /dev/null @@ -1,108 +0,0 @@ -project(taglib) - -cmake_minimum_required(VERSION 2.6.0 FATAL_ERROR) - -option(ENABLE_STATIC "Make static version of libtag" OFF) -if(ENABLE_STATIC) - add_definitions(-DTAGLIB_STATIC) - set(BUILD_SHARED_LIBS OFF) -else() - set(BUILD_SHARED_LIBS ON) -endif() -OPTION(ENABLE_STATIC_RUNTIME "Visual Studio, link with runtime statically" OFF) - -option(VISIBILITY_HIDDEN "Build with -fvisibility=hidden" OFF) -if(VISIBILITY_HIDDEN) - add_definitions (-fvisibility=hidden) -endif() - -option(BUILD_TESTS "Build the test suite" OFF) -option(BUILD_EXAMPLES "Build the examples" OFF) - -option(NO_ITUNES_HACKS "Disable workarounds for iTunes bugs" OFF) - -add_definitions(-DHAVE_CONFIG_H) -set(TESTS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/tests/") - -## the following are directories where stuff will be installed to -set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)") -set(EXEC_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE PATH "Base directory for executables and libraries" FORCE) -set(BIN_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/bin" CACHE PATH "The subdirectory to the binaries prefix (default prefix/bin)" FORCE) -set(LIB_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib${LIB_SUFFIX})" FORCE) -set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "The subdirectory to the header prefix" FORCE) - -if(APPLE) - option(BUILD_FRAMEWORK "Build an OS X framework" OFF) - set(FRAMEWORK_INSTALL_DIR "/Library/Frameworks" CACHE STRING "Directory to install frameworks to.") -endif() - -if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") -endif() -if (MSVC AND ENABLE_STATIC_RUNTIME) - foreach(flag_var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) - string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") - endforeach(flag_var) -endif() - -set(TAGLIB_LIB_MAJOR_VERSION "1") -set(TAGLIB_LIB_MINOR_VERSION "8") -set(TAGLIB_LIB_PATCH_VERSION "0") - -set(TAGLIB_LIB_VERSION_STRING "${TAGLIB_LIB_MAJOR_VERSION}.${TAGLIB_LIB_MINOR_VERSION}.${TAGLIB_LIB_PATCH_VERSION}") - -# 1. If the library source code has changed at all since the last update, then increment revision. -# 2. If any interfaces have been added, removed, or changed since the last update, increment current, and set revision to 0. -# 3. If any interfaces have been added since the last public release, then increment age. -# 4. If any interfaces have been removed since the last public release, then set age to 0. -set(TAGLIB_SOVERSION_CURRENT 13) -set(TAGLIB_SOVERSION_REVISION 0) -set(TAGLIB_SOVERSION_AGE 12) - -math(EXPR TAGLIB_SOVERSION_MAJOR "${TAGLIB_SOVERSION_CURRENT} - ${TAGLIB_SOVERSION_AGE}") -math(EXPR TAGLIB_SOVERSION_MINOR "${TAGLIB_SOVERSION_AGE}") -math(EXPR TAGLIB_SOVERSION_PATCH "${TAGLIB_SOVERSION_REVISION}") - -include(ConfigureChecks.cmake) - -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/taglib-config.cmake ${CMAKE_CURRENT_BINARY_DIR}/taglib-config ) -install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/taglib-config DESTINATION ${BIN_INSTALL_DIR}) - -if(NOT WIN32 AND NOT BUILD_FRAMEWORK) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/taglib.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/taglib.pc ) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/taglib.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) -endif() - -include_directories(${CMAKE_CURRENT_BINARY_DIR}) -configure_file(config-taglib.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h) - -if(WITH_ASF) - set(TAGLIB_WITH_ASF TRUE) -endif() -if(WITH_MP4) - set(TAGLIB_WITH_MP4 TRUE) -endif() - -configure_file(taglib/taglib_config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/taglib_config.h) - -add_subdirectory(taglib) -add_subdirectory(bindings) -if(BUILD_TESTS) - enable_testing() - add_subdirectory(tests) -endif(BUILD_TESTS) -add_subdirectory(examples) - -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.cmake ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) -file(COPY doc/taglib.png DESTINATION doc) -add_custom_target(docs doxygen) - -# uninstall target -configure_file( - "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" - IMMEDIATE @ONLY) - -add_custom_target(uninstall - COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") diff --git a/platform/win32/msvc/external/taglib/COPYING.LGPL b/platform/win32/msvc/external/taglib/COPYING.LGPL deleted file mode 100644 index 4362b49151d..00000000000 --- a/platform/win32/msvc/external/taglib/COPYING.LGPL +++ /dev/null @@ -1,502 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/platform/win32/msvc/external/taglib/COPYING.MPL b/platform/win32/msvc/external/taglib/COPYING.MPL deleted file mode 100644 index 7714141d154..00000000000 --- a/platform/win32/msvc/external/taglib/COPYING.MPL +++ /dev/null @@ -1,470 +0,0 @@ - MOZILLA PUBLIC LICENSE - Version 1.1 - - --------------- - -1. Definitions. - - 1.0.1. "Commercial Use" means distribution or otherwise making the - Covered Code available to a third party. - - 1.1. "Contributor" means each entity that creates or contributes to - the creation of Modifications. - - 1.2. "Contributor Version" means the combination of the Original - Code, prior Modifications used by a Contributor, and the Modifications - made by that particular Contributor. - - 1.3. "Covered Code" means the Original Code or Modifications or the - combination of the Original Code and Modifications, in each case - including portions thereof. - - 1.4. "Electronic Distribution Mechanism" means a mechanism generally - accepted in the software development community for the electronic - transfer of data. - - 1.5. "Executable" means Covered Code in any form other than Source - Code. - - 1.6. "Initial Developer" means the individual or entity identified - as the Initial Developer in the Source Code notice required by Exhibit - A. - - 1.7. "Larger Work" means a work which combines Covered Code or - portions thereof with code not governed by the terms of this License. - - 1.8. "License" means this document. - - 1.8.1. "Licensable" means having the right to grant, to the maximum - extent possible, whether at the time of the initial grant or - subsequently acquired, any and all of the rights conveyed herein. - - 1.9. "Modifications" means any addition to or deletion from the - substance or structure of either the Original Code or any previous - Modifications. When Covered Code is released as a series of files, a - Modification is: - A. Any addition to or deletion from the contents of a file - containing Original Code or previous Modifications. - - B. Any new file that contains any part of the Original Code or - previous Modifications. - - 1.10. "Original Code" means Source Code of computer software code - which is described in the Source Code notice required by Exhibit A as - Original Code, and which, at the time of its release under this - License is not already Covered Code governed by this License. - - 1.10.1. "Patent Claims" means any patent claim(s), now owned or - hereafter acquired, including without limitation, method, process, - and apparatus claims, in any patent Licensable by grantor. - - 1.11. "Source Code" means the preferred form of the Covered Code for - making modifications to it, including all modules it contains, plus - any associated interface definition files, scripts used to control - compilation and installation of an Executable, or source code - differential comparisons against either the Original Code or another - well known, available Covered Code of the Contributor's choice. The - Source Code can be in a compressed or archival form, provided the - appropriate decompression or de-archiving software is widely available - for no charge. - - 1.12. "You" (or "Your") means an individual or a legal entity - exercising rights under, and complying with all of the terms of, this - License or a future version of this License issued under Section 6.1. - For legal entities, "You" includes any entity which controls, is - controlled by, or is under common control with You. For purposes of - this definition, "control" means (a) the power, direct or indirect, - to cause the direction or management of such entity, whether by - contract or otherwise, or (b) ownership of more than fifty percent - (50%) of the outstanding shares or beneficial ownership of such - entity. - -2. Source Code License. - - 2.1. The Initial Developer Grant. - The Initial Developer hereby grants You a world-wide, royalty-free, - non-exclusive license, subject to third party intellectual property - claims: - (a) under intellectual property rights (other than patent or - trademark) Licensable by Initial Developer to use, reproduce, - modify, display, perform, sublicense and distribute the Original - Code (or portions thereof) with or without Modifications, and/or - as part of a Larger Work; and - - (b) under Patents Claims infringed by the making, using or - selling of Original Code, to make, have made, use, practice, - sell, and offer for sale, and/or otherwise dispose of the - Original Code (or portions thereof). - - (c) the licenses granted in this Section 2.1(a) and (b) are - effective on the date Initial Developer first distributes - Original Code under the terms of this License. - - (d) Notwithstanding Section 2.1(b) above, no patent license is - granted: 1) for code that You delete from the Original Code; 2) - separate from the Original Code; or 3) for infringements caused - by: i) the modification of the Original Code or ii) the - combination of the Original Code with other software or devices. - - 2.2. Contributor Grant. - Subject to third party intellectual property claims, each Contributor - hereby grants You a world-wide, royalty-free, non-exclusive license - - (a) under intellectual property rights (other than patent or - trademark) Licensable by Contributor, to use, reproduce, modify, - display, perform, sublicense and distribute the Modifications - created by such Contributor (or portions thereof) either on an - unmodified basis, with other Modifications, as Covered Code - and/or as part of a Larger Work; and - - (b) under Patent Claims infringed by the making, using, or - selling of Modifications made by that Contributor either alone - and/or in combination with its Contributor Version (or portions - of such combination), to make, use, sell, offer for sale, have - made, and/or otherwise dispose of: 1) Modifications made by that - Contributor (or portions thereof); and 2) the combination of - Modifications made by that Contributor with its Contributor - Version (or portions of such combination). - - (c) the licenses granted in Sections 2.2(a) and 2.2(b) are - effective on the date Contributor first makes Commercial Use of - the Covered Code. - - (d) Notwithstanding Section 2.2(b) above, no patent license is - granted: 1) for any code that Contributor has deleted from the - Contributor Version; 2) separate from the Contributor Version; - 3) for infringements caused by: i) third party modifications of - Contributor Version or ii) the combination of Modifications made - by that Contributor with other software (except as part of the - Contributor Version) or other devices; or 4) under Patent Claims - infringed by Covered Code in the absence of Modifications made by - that Contributor. - -3. Distribution Obligations. - - 3.1. Application of License. - The Modifications which You create or to which You contribute are - governed by the terms of this License, including without limitation - Section 2.2. The Source Code version of Covered Code may be - distributed only under the terms of this License or a future version - of this License released under Section 6.1, and You must include a - copy of this License with every copy of the Source Code You - distribute. You may not offer or impose any terms on any Source Code - version that alters or restricts the applicable version of this - License or the recipients' rights hereunder. However, You may include - an additional document offering the additional rights described in - Section 3.5. - - 3.2. Availability of Source Code. - Any Modification which You create or to which You contribute must be - made available in Source Code form under the terms of this License - either on the same media as an Executable version or via an accepted - Electronic Distribution Mechanism to anyone to whom you made an - Executable version available; and if made available via Electronic - Distribution Mechanism, must remain available for at least twelve (12) - months after the date it initially became available, or at least six - (6) months after a subsequent version of that particular Modification - has been made available to such recipients. You are responsible for - ensuring that the Source Code version remains available even if the - Electronic Distribution Mechanism is maintained by a third party. - - 3.3. Description of Modifications. - You must cause all Covered Code to which You contribute to contain a - file documenting the changes You made to create that Covered Code and - the date of any change. You must include a prominent statement that - the Modification is derived, directly or indirectly, from Original - Code provided by the Initial Developer and including the name of the - Initial Developer in (a) the Source Code, and (b) in any notice in an - Executable version or related documentation in which You describe the - origin or ownership of the Covered Code. - - 3.4. Intellectual Property Matters - (a) Third Party Claims. - If Contributor has knowledge that a license under a third party's - intellectual property rights is required to exercise the rights - granted by such Contributor under Sections 2.1 or 2.2, - Contributor must include a text file with the Source Code - distribution titled "LEGAL" which describes the claim and the - party making the claim in sufficient detail that a recipient will - know whom to contact. If Contributor obtains such knowledge after - the Modification is made available as described in Section 3.2, - Contributor shall promptly modify the LEGAL file in all copies - Contributor makes available thereafter and shall take other steps - (such as notifying appropriate mailing lists or newsgroups) - reasonably calculated to inform those who received the Covered - Code that new knowledge has been obtained. - - (b) Contributor APIs. - If Contributor's Modifications include an application programming - interface and Contributor has knowledge of patent licenses which - are reasonably necessary to implement that API, Contributor must - also include this information in the LEGAL file. - - (c) Representations. - Contributor represents that, except as disclosed pursuant to - Section 3.4(a) above, Contributor believes that Contributor's - Modifications are Contributor's original creation(s) and/or - Contributor has sufficient rights to grant the rights conveyed by - this License. - - 3.5. Required Notices. - You must duplicate the notice in Exhibit A in each file of the Source - Code. If it is not possible to put such notice in a particular Source - Code file due to its structure, then You must include such notice in a - location (such as a relevant directory) where a user would be likely - to look for such a notice. If You created one or more Modification(s) - You may add your name as a Contributor to the notice described in - Exhibit A. You must also duplicate this License in any documentation - for the Source Code where You describe recipients' rights or ownership - rights relating to Covered Code. You may choose to offer, and to - charge a fee for, warranty, support, indemnity or liability - obligations to one or more recipients of Covered Code. However, You - may do so only on Your own behalf, and not on behalf of the Initial - Developer or any Contributor. You must make it absolutely clear than - any such warranty, support, indemnity or liability obligation is - offered by You alone, and You hereby agree to indemnify the Initial - Developer and every Contributor for any liability incurred by the - Initial Developer or such Contributor as a result of warranty, - support, indemnity or liability terms You offer. - - 3.6. Distribution of Executable Versions. - You may distribute Covered Code in Executable form only if the - requirements of Section 3.1-3.5 have been met for that Covered Code, - and if You include a notice stating that the Source Code version of - the Covered Code is available under the terms of this License, - including a description of how and where You have fulfilled the - obligations of Section 3.2. The notice must be conspicuously included - in any notice in an Executable version, related documentation or - collateral in which You describe recipients' rights relating to the - Covered Code. You may distribute the Executable version of Covered - Code or ownership rights under a license of Your choice, which may - contain terms different from this License, provided that You are in - compliance with the terms of this License and that the license for the - Executable version does not attempt to limit or alter the recipient's - rights in the Source Code version from the rights set forth in this - License. If You distribute the Executable version under a different - license You must make it absolutely clear that any terms which differ - from this License are offered by You alone, not by the Initial - Developer or any Contributor. You hereby agree to indemnify the - Initial Developer and every Contributor for any liability incurred by - the Initial Developer or such Contributor as a result of any such - terms You offer. - - 3.7. Larger Works. - You may create a Larger Work by combining Covered Code with other code - not governed by the terms of this License and distribute the Larger - Work as a single product. In such a case, You must make sure the - requirements of this License are fulfilled for the Covered Code. - -4. Inability to Comply Due to Statute or Regulation. - - If it is impossible for You to comply with any of the terms of this - License with respect to some or all of the Covered Code due to - statute, judicial order, or regulation then You must: (a) comply with - the terms of this License to the maximum extent possible; and (b) - describe the limitations and the code they affect. Such description - must be included in the LEGAL file described in Section 3.4 and must - be included with all distributions of the Source Code. Except to the - extent prohibited by statute or regulation, such description must be - sufficiently detailed for a recipient of ordinary skill to be able to - understand it. - -5. Application of this License. - - This License applies to code to which the Initial Developer has - attached the notice in Exhibit A and to related Covered Code. - -6. Versions of the License. - - 6.1. New Versions. - Netscape Communications Corporation ("Netscape") may publish revised - and/or new versions of the License from time to time. Each version - will be given a distinguishing version number. - - 6.2. Effect of New Versions. - Once Covered Code has been published under a particular version of the - License, You may always continue to use it under the terms of that - version. You may also choose to use such Covered Code under the terms - of any subsequent version of the License published by Netscape. No one - other than Netscape has the right to modify the terms applicable to - Covered Code created under this License. - - 6.3. Derivative Works. - If You create or use a modified version of this License (which you may - only do in order to apply it to code which is not already Covered Code - governed by this License), You must (a) rename Your license so that - the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", - "MPL", "NPL" or any confusingly similar phrase do not appear in your - license (except to note that your license differs from this License) - and (b) otherwise make it clear that Your version of the license - contains terms which differ from the Mozilla Public License and - Netscape Public License. (Filling in the name of the Initial - Developer, Original Code or Contributor in the notice described in - Exhibit A shall not of themselves be deemed to be modifications of - this License.) - -7. DISCLAIMER OF WARRANTY. - - COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, - WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF - DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. - THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE - IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, - YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE - COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER - OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF - ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -8. TERMINATION. - - 8.1. This License and the rights granted hereunder will terminate - automatically if You fail to comply with terms herein and fail to cure - such breach within 30 days of becoming aware of the breach. All - sublicenses to the Covered Code which are properly granted shall - survive any termination of this License. Provisions which, by their - nature, must remain in effect beyond the termination of this License - shall survive. - - 8.2. If You initiate litigation by asserting a patent infringement - claim (excluding declatory judgment actions) against Initial Developer - or a Contributor (the Initial Developer or Contributor against whom - You file such action is referred to as "Participant") alleging that: - - (a) such Participant's Contributor Version directly or indirectly - infringes any patent, then any and all rights granted by such - Participant to You under Sections 2.1 and/or 2.2 of this License - shall, upon 60 days notice from Participant terminate prospectively, - unless if within 60 days after receipt of notice You either: (i) - agree in writing to pay Participant a mutually agreeable reasonable - royalty for Your past and future use of Modifications made by such - Participant, or (ii) withdraw Your litigation claim with respect to - the Contributor Version against such Participant. If within 60 days - of notice, a reasonable royalty and payment arrangement are not - mutually agreed upon in writing by the parties or the litigation claim - is not withdrawn, the rights granted by Participant to You under - Sections 2.1 and/or 2.2 automatically terminate at the expiration of - the 60 day notice period specified above. - - (b) any software, hardware, or device, other than such Participant's - Contributor Version, directly or indirectly infringes any patent, then - any rights granted to You by such Participant under Sections 2.1(b) - and 2.2(b) are revoked effective as of the date You first made, used, - sold, distributed, or had made, Modifications made by that - Participant. - - 8.3. If You assert a patent infringement claim against Participant - alleging that such Participant's Contributor Version directly or - indirectly infringes any patent where such claim is resolved (such as - by license or settlement) prior to the initiation of patent - infringement litigation, then the reasonable value of the licenses - granted by such Participant under Sections 2.1 or 2.2 shall be taken - into account in determining the amount or value of any payment or - license. - - 8.4. In the event of termination under Sections 8.1 or 8.2 above, - all end user license agreements (excluding distributors and resellers) - which have been validly granted by You or any distributor hereunder - prior to termination shall survive termination. - -9. LIMITATION OF LIABILITY. - - UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT - (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL - DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, - OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR - ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY - CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, - WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER - COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN - INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF - LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY - RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW - PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE - EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO - THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. - -10. U.S. GOVERNMENT END USERS. - - The Covered Code is a "commercial item," as that term is defined in - 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer - software" and "commercial computer software documentation," as such - terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 - C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), - all U.S. Government End Users acquire Covered Code with only those - rights set forth herein. - -11. MISCELLANEOUS. - - This License represents the complete agreement concerning subject - matter hereof. If any provision of this License is held to be - unenforceable, such provision shall be reformed only to the extent - necessary to make it enforceable. This License shall be governed by - California law provisions (except to the extent applicable law, if - any, provides otherwise), excluding its conflict-of-law provisions. - With respect to disputes in which at least one party is a citizen of, - or an entity chartered or registered to do business in the United - States of America, any litigation relating to this License shall be - subject to the jurisdiction of the Federal Courts of the Northern - District of California, with venue lying in Santa Clara County, - California, with the losing party responsible for costs, including - without limitation, court costs and reasonable attorneys' fees and - expenses. The application of the United Nations Convention on - Contracts for the International Sale of Goods is expressly excluded. - Any law or regulation which provides that the language of a contract - shall be construed against the drafter shall not apply to this - License. - -12. RESPONSIBILITY FOR CLAIMS. - - As between Initial Developer and the Contributors, each party is - responsible for claims and damages arising, directly or indirectly, - out of its utilization of rights under this License and You agree to - work with Initial Developer and Contributors to distribute such - responsibility on an equitable basis. Nothing herein is intended or - shall be deemed to constitute any admission of liability. - -13. MULTIPLE-LICENSED CODE. - - Initial Developer may designate portions of the Covered Code as - "Multiple-Licensed". "Multiple-Licensed" means that the Initial - Developer permits you to utilize portions of the Covered Code under - Your choice of the NPL or the alternative licenses, if any, specified - by the Initial Developer in the file described in Exhibit A. - -EXHIBIT A -Mozilla Public License. - - ``The contents of this file are subject to the Mozilla Public License - Version 1.1 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the - License for the specific language governing rights and limitations - under the License. - - The Original Code is ______________________________________. - - The Initial Developer of the Original Code is ________________________. - Portions created by ______________________ are Copyright (C) ______ - _______________________. All Rights Reserved. - - Contributor(s): ______________________________________. - - Alternatively, the contents of this file may be used under the terms - of the _____ license (the "[___] License"), in which case the - provisions of [______] License are applicable instead of those - above. If you wish to allow use of your version of this file only - under the terms of the [____] License and not to allow others to use - your version of this file under the MPL, indicate your decision by - deleting the provisions above and replace them with the notice and - other provisions required by the [___] License. If you do not delete - the provisions above, a recipient may use your version of this file - under either the MPL or the [___] License." - - [NOTE: The text of this Exhibit A may differ slightly from the text of - the notices in the Source Code files of the Original Code. You should - use the text of this Exhibit A rather than the text found in the - Original Code Source Code for Your Modifications.] - diff --git a/platform/win32/msvc/external/taglib/ConfigureChecks.cmake b/platform/win32/msvc/external/taglib/ConfigureChecks.cmake deleted file mode 100644 index e4a6d1fac59..00000000000 --- a/platform/win32/msvc/external/taglib/ConfigureChecks.cmake +++ /dev/null @@ -1,23 +0,0 @@ -include(CheckIncludeFile) -include(CheckIncludeFiles) -include(CheckSymbolExists) -include(CheckFunctionExists) -include(CheckLibraryExists) -include(CheckTypeSize) -include(CheckCXXSourceCompiles) - -# check for libz using the cmake supplied FindZLIB.cmake -find_package(ZLIB) -if(ZLIB_FOUND) - set(HAVE_ZLIB 1) -else() - set(HAVE_ZLIB 0) -endif() - -set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules) -find_package(CppUnit) -if(NOT CppUnit_FOUND AND BUILD_TESTS) - message(STATUS "CppUnit not found, disabling tests.") - set(BUILD_TESTS OFF) -endif() - diff --git a/platform/win32/msvc/external/taglib/Doxyfile.cmake b/platform/win32/msvc/external/taglib/Doxyfile.cmake deleted file mode 100644 index 6da30bb5d57..00000000000 --- a/platform/win32/msvc/external/taglib/Doxyfile.cmake +++ /dev/null @@ -1,210 +0,0 @@ -# Doxyfile 1.3.4 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = TagLib -PROJECT_NUMBER = ${TAGLIB_LIB_VERSION_STRING} -OUTPUT_DIRECTORY = doc -OUTPUT_LANGUAGE = English -USE_WINDOWS_ENCODING = NO -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = NO -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = NO -INHERIT_DOCS = YES -DISTRIBUTE_GROUP_DOC = NO -TAB_SIZE = 4 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = NO -OPTIMIZE_OUTPUT_JAVA = NO -SUBGROUPING = YES -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = YES -EXTRACT_PRIVATE = NO -EXTRACT_STATIC = NO -EXTRACT_LOCAL_CLASSES = NO -HIDE_UNDOC_MEMBERS = NO -HIDE_UNDOC_CLASSES = NO -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = YES -CASE_SENSE_NAMES = YES -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -GENERATE_TODOLIST = NO -GENERATE_TESTLIST = NO -GENERATE_BUGLIST = NO -GENERATE_DEPRECATEDLIST= NO -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = YES -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = NO -WARN_IF_DOC_ERROR = YES -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = @CMAKE_SOURCE_DIR@/taglib -FILE_PATTERNS = *.h \ - *.hh \ - *.H -RECURSIVE = YES -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = -INPUT_FILTER = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = NO -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = YES -REFERENCES_RELATION = YES -VERBATIM_HEADERS = YES -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = YES -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = html -HTML_FILE_EXTENSION = .html -HTML_HEADER = @CMAKE_SOURCE_DIR@/doc/api-header.html -HTML_FOOTER = @CMAKE_SOURCE_DIR@/doc/api-footer.html -HTML_STYLESHEET = @CMAKE_SOURCE_DIR@/doc/taglib-api.css -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -BINARY_TOC = NO -TOC_EXPAND = NO -DISABLE_INDEX = YES -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = NO -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = letter -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = YES -USE_PDFLATEX = YES -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = NO -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = DO_NOT_DOCUMENT \ - DOXYGEN \ - WITH_MP4 \ - WITH_ASF -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::addtions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES -HIDE_UNDOC_RELATIONS = YES -HAVE_DOT = YES -CLASS_GRAPH = YES -COLLABORATION_GRAPH = YES -UML_LOOK = NO -TEMPLATE_RELATIONS = YES -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = YES -CALL_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DOT_IMAGE_FORMAT = png -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1024 -MAX_DOT_GRAPH_DEPTH = 0 -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::addtions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO diff --git a/platform/win32/msvc/external/taglib/INSTALL b/platform/win32/msvc/external/taglib/INSTALL deleted file mode 100644 index 3be4d1316a8..00000000000 --- a/platform/win32/msvc/external/taglib/INSTALL +++ /dev/null @@ -1,70 +0,0 @@ -TagLib Installation -=================== - -TagLib uses the CMake build system. As a user, you will most likely want to -build TagLib in release mode and install it into a system-wide location. -This can be done using the following commands: - - cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_RELEASE_TYPE=Release . - make - sudo make install - -In order to build the included examples, use the BUILD_EXAMPLES option: - - cmake -DBUILD_EXAMPLES=ON [...] - -See http://www.cmake.org/cmake/help/runningcmake.html for generic help on -running CMake. - -Mac OS X --------- - -On Mac OS X, you might want to build a framework that can be easily integrated -into your application. If you set the BUILD_FRAMEWORK option on, it will compile -TagLib as a framework. For example, the following command can be used to build -an Universal Binary framework with Mac OS X 10.4 as the deployment target: - - cmake -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_FRAMEWORK=ON \ - -DCMAKE_C_COMPILER=/usr/bin/gcc-4.0 \ - -DCMAKE_CXX_COMPILER=/usr/bin/c++-4.0 \ - -DCMAKE_OSX_SYSROOT=/Developer/SDKs/MacOSX10.4u.sdk/ \ - -DCMAKE_OSX_DEPLOYMENT_TARGET=10.4 \ - -DCMAKE_OSX_ARCHITECTURES="ppc;i386;x86_64" - -For a 10.6 Snow Leopard static library with both 32-bit and 64-bit code, use: - - cmake -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_OSX_DEPLOYMENT_TARGET=10.6 \ - -DCMAKE_OSX_ARCHITECTURES="i386;x86_64" \ - -DENABLE_STATIC=ON \ - -DCMAKE_INSTALL_PREFIX="" - -After 'make', and 'make install', add libtag.a to your XCode project, and add -the include folder to the project's User Header Search Paths. - -Windows -------- - -For building a static library on Windows with Visual Studio 2010, cd to -the TagLib folder then: - - cmake -DENABLE_STATIC=ON -DENABLE_STATIC_RUNTIME=ON -G "Visual Studio 10" ... - -Including ENABLE_STATIC_RUNTIME=ON indicates you want TagLib built using the -static runtime library, rather than the DLL form of the runtime. -CMake will create a Visual Studio solution, taglib.sln that you can open and -build as normal. - -Unit Tests ----------- - -If you want to run the test suite to make sure TagLib works properly on your -system, you need to have cppunit installed. To build the tests, include -the option -DBUILD_TESTS=on when running cmake. - -The test suite has a custom target in the build system, so you can run -the tests using make: - - make check - diff --git a/platform/win32/msvc/external/taglib/NEWS b/platform/win32/msvc/external/taglib/NEWS deleted file mode 100644 index fa750f69684..00000000000 --- a/platform/win32/msvc/external/taglib/NEWS +++ /dev/null @@ -1,158 +0,0 @@ -TagLib 1.8 (Sep 6, 2012) -============================== - -1.8: - - * Added support for OWNE ID3 frames. - * Changed key validation in the new PropertyMap API. - * ID3v1::Tag::setStringHandler will no londer delete the previous handler, - the caller is responsible for this. - * File objects will also no longer delete the passed IOStream objects. It - should be done in the caller code after the File object is no longer - used. - * Added ID3v2::Tag::setLatin1StringHandler for custom handling of - latin1-encoded text in ID3v2 frames. - * Fixed validation of ID3v2 frame IDs (IDs with '0' were ignored). - -1.8 BETA: - - * New API for accessing tags by name. - * New abstract I/O stream layer to allow custom I/O handlers. - * Support for writing ID3v2.3 tags. - * Support for various module file formats (MOD, S3M, IT, XM). - * Support for MP4 and ASF is now enabled by default. - * Started using atomic int operations for reference counting. - * Added methods for checking if WMA and MP4 files are DRM-protected. - * Added taglib_free to the C bindings. - * New method to allow removing pictures from FLAC files. - * Support for reading audio properties from ALAC and Musepack SV8 files. - * Added replay-gain information to Musepack audio properties. - * Support for APEv2 binary tags. - * Many AudioProperties subclasses now provide information about the total number of samples. - * Various small bug fixes. - -TagLib 1.7.2 (Apr 20, 2012) -=========================== - - * Fixed division by zero while parsing corrupted MP4 files (CVE-2012-2396). - * Fixed compilation on Haiku. - -TagLib 1.7.1 (Mar 17, 2012) -=========================== - - * Improved parsing of corrupted WMA, RIFF and OGG files. - * Fixed a memory leak in the WMA parser. - * Fixed a memory leak in the FLAC parser. - * Fixed a possible division by zero in the APE parser. - * Added detection of TTA2 files. - * Fixed saving of multiple identically named tags to Vorbis Comments. - -TagLib 1.7 (Mar 11, 2011) -========================= - -1.7: - - * Fixed memory leaks in the FLAC file format parser. - * Fixed bitrate calculation for WAV files. - -1.7 RC1: - - * Support for reading/writing tags from Monkey's Audio files. (BUG:210404) - * Support for reading/writing embedded pictures from WMA files. - * Support for reading/writing embedded pictures from FLAC files (BUG:218696). - * Implemented APE::Tag::isEmpty() to check for all APE tags, not just the - basic ones. - * Added reading of WAV audio length. (BUG:116033) - * Exposed FLAC MD5 signature of the uncompressed audio stream via - FLAC::Properties::signature(). (BUG:160172) - * Added function ByteVector::toHex() for hex-encoding of byte vectors. - * WavPack reader now tries to get the audio length by finding the final - block, if the header doesn't have the information. (BUG:258016) - * Fixed a memory leak in the ID3v2.2 PIC frame parser. (BUG:257007) - * Fixed writing of RIFF files with even chunk sizes. (BUG:243954) - * Fixed compilation on MSVC 2010. - * Removed support for building using autoconf/automake. - * API docs can be now built using "make docs". - -TagLib 1.6.3 (Apr 17, 2010) -=========================== - - * Fixed definitions of the TAGLIB_WITH_MP4 and TAGLIB_WITH_ASF macros. - * Fixed upgrading of ID3v2.3 genre frame with ID3v1 code 0 (Blues). - * New method `int String::toInt(bool *ok)` which can return whether the - conversion to a number was successfull. - * Fixed parsing of incorrectly written lengths in ID3v2 (affects mainly - compressed frames). (BUG:231075) - -TagLib 1.6.2 (Apr 9, 2010) -========================== - - * Read Vorbis Comments from the first FLAC metadata block, if there are - multipe ones. (BUG:211089) - * Fixed a memory leak in FileRef's OGA format detection. - * Fixed compilation with the Sun Studio compiler. (BUG:215225) - * Handle WM/TrackNumber attributes with DWORD content in WMA files. - (BUG:218526) - * More strict check if something is a valid MP4 file. (BUG:216819) - * Correctly save MP4 int-pair atoms with flags set to 0. - * Fixed compilation of the test runner on Windows. - * Store ASF attributes larger than 64k in the metadata library object. - * Ignore trailing non-data atoms when parsing MP4 covr atoms. - * Don't upgrade ID3v2.2 frame TDA to TDRC. (BUG:228968) - -TagLib 1.6.1 (Oct 31, 2009) -=========================== - - * Better detection of the audio codec of .oga files in FileRef. - * Fixed saving of Vorbis comments to Ogg FLAC files. TagLib tried to - include the Vorbis framing bit, which is only correct for Ogg Vorbis. - * Public symbols now have explicitly set visibility to "default" on GCC. - * Added missing exports for static ID3v1 functions. - * Fixed a typo in taglib_c.pc - * Fixed a failing test on ppc64. - * Support for binary 'covr' atom in MP4 files. TagLib 1.6 treated them - as text atoms, which corrupted them in some cases. - * Fixed ID3v1-style genre to string conversion in MP4 files. - -TagLib 1.6 (Sep 13, 2009) -========================= - -1.6: - - * New CMake option to build a static version - ENABLE_STATIC. - * Added support for disabling dllimport/dllexport on Windows using the - TAGLIB_STATIC macro. - * Support for parsing the obsolete 'gnre' MP4 atom. - * New cpp macros TAGLIB_WITH_MP4 and TAGLIB_WITH_ASF to determin if - TagLib was built with MP4/ASF support. - -1.6 RC1: - - * Split Ogg packets larger than 64k into multiple pages. (BUG:171957) - * TagLib can now use FLAC padding block. (BUG:107659) - * ID3v2.2 frames are now not incorrectly saved. (BUG:176373) - * Support for ID3v2.2 PIC frames. (BUG:167786) - * Fixed a bug in ByteVectorList::split(). - * XiphComment::year() now falls back to YEAR if DATE doesn't exist - and XiphComment::year() falls back to TRACKNUM if TRACKNUMBER doesn't - exist. (BUG:144396) - * Improved ID3v2.3 genre parsing. (BUG:188578) - * Better checking of corrupted ID3v2 APIC data. (BUG:168382) - * Bitrate calculating using the Xing header now uses floating point - numbers. (BUG:172556) - * New TagLib::String method rfind(). - * Added support for MP4 file format with iTunes-style metadata [optional]. - * Added support for ASF (WMA) file format [optional]. - * Fixed crash when saving a Locator APEv2 tag. (BUG:169810) - * Fixed a possible crash in the non-const version of String::operator[] - and in String::operator+=. (BUG:169389) - * Added support for PRIV ID3v2 frames. - * Empty ID3v2 genres are no longer treated as numeric ID3v1 genres. - * Added support for the POPM (rating/playcount) ID3v2 frame. - * Generic RIFF file format support: - * Support for AIFF files with ID3v2 tags. - * Support for WAV files with ID3v2 tags. - * Fixed crash on handling unsupported ID3v2 frames, e.g. on encrypted - frames. (BUG:161721) - * Fixed overflow while calculating bitrate of FLAC files with a very - high bitrate. diff --git a/platform/win32/msvc/external/taglib/bindings/CMakeLists.txt b/platform/win32/msvc/external/taglib/bindings/CMakeLists.txt deleted file mode 100644 index d019843ec0a..00000000000 --- a/platform/win32/msvc/external/taglib/bindings/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_subdirectory(c) diff --git a/platform/win32/msvc/external/taglib/bindings/README b/platform/win32/msvc/external/taglib/bindings/README deleted file mode 100644 index bfbd44ae031..00000000000 --- a/platform/win32/msvc/external/taglib/bindings/README +++ /dev/null @@ -1,6 +0,0 @@ -There are a few other people that have done bindings externally that I have -been made aware of. I have not personally reviewed these bindings, but I'm -listing them here so that those who find them useful are able to find them: - -http://developer.kde.org/~wheeler/taglib.html#bindings - diff --git a/platform/win32/msvc/external/taglib/bindings/c/CMakeLists.txt b/platform/win32/msvc/external/taglib/bindings/c/CMakeLists.txt deleted file mode 100644 index 2d9dafc496e..00000000000 --- a/platform/win32/msvc/external/taglib/bindings/c/CMakeLists.txt +++ /dev/null @@ -1,68 +0,0 @@ -include_directories( - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/toolkit - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/asf - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/mpeg - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/ogg - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/ogg/vorbis - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/ogg/flac - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/flac - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/mpc - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/mp4 - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/mpeg/id3v2 - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/mpeg/id3v2/frames - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/wavpack - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/ogg/speex - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/trueaudio -) - -set(tag_c_HDRS tag_c.h) - -add_library(tag_c tag_c.cpp ${tag_c_HDRS}) - -target_link_libraries(tag_c tag) -set_target_properties(tag_c PROPERTIES PUBLIC_HEADER "${tag_c_HDRS}") -if(BUILD_FRAMEWORK) - set_target_properties(tag_c PROPERTIES FRAMEWORK TRUE) -endif() - -# On Solaris we need to explicitly add the C++ standard and runtime -# libraries to the libs used by the C bindings, because those C bindings -# themselves won't pull in the C++ libs -- and if a C application is -# using the C bindings then we get link errors. -check_library_exists(Crun __RTTI___ "" HAVE_CRUN_LIB) -if(HAVE_CRUN_LIB) - # Which libraries to link depends critically on which - # STL version is going to be used by your application - # and which runtime is in use. While Crun is pretty much - # the only game in town, the three available STLs -- Cstd, - # stlport4 and stdcxx -- make this a mess. The KDE-Solaris - # team supports stdcxx (Apache RogueWave stdcxx 4.1.3). - - # According to http://bugs.kde.org/show_bug.cgi?id=215225 the library can have the following two names: - find_library(ROGUEWAVE_STDCXX_LIBRARY NAMES stdcxx4 stdcxx) - if(NOT ROGUEWAVE_STDCXX_LIBRARY) - message(FATAL_ERROR "Did not find supported STL library (tried stdcxx4 and stdcxx)") - endif() - target_link_libraries(tag_c ${ROGUEWAVE_STDCXX_LIBRARY} Crun) -endif() - -set_target_properties(tag_c PROPERTIES - VERSION 0.0.0 - SOVERSION 0 - DEFINE_SYMBOL MAKE_TAGLIB_C_LIB - INSTALL_NAME_DIR ${LIB_INSTALL_DIR} -) -install(TARGETS tag_c - FRAMEWORK DESTINATION ${FRAMEWORK_INSTALL_DIR} - LIBRARY DESTINATION ${LIB_INSTALL_DIR} - RUNTIME DESTINATION ${BIN_INSTALL_DIR} - ARCHIVE DESTINATION ${LIB_INSTALL_DIR} - PUBLIC_HEADER DESTINATION ${INCLUDE_INSTALL_DIR}/taglib -) - -if(NOT WIN32 AND NOT BUILD_FRAMEWORK) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/taglib_c.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/taglib_c.pc) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/taglib_c.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) -endif() - diff --git a/platform/win32/msvc/external/taglib/bindings/c/tag_c.cpp b/platform/win32/msvc/external/taglib/bindings/c/tag_c.cpp deleted file mode 100644 index b1af613cf28..00000000000 --- a/platform/win32/msvc/external/taglib/bindings/c/tag_c.cpp +++ /dev/null @@ -1,294 +0,0 @@ -/*************************************************************************** - copyright : (C) 2003 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * - * USA * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "tag_c.h" - -using namespace TagLib; - -static List strings; -static bool unicodeStrings = true; -static bool stringManagementEnabled = true; - -void taglib_set_strings_unicode(BOOL unicode) -{ - unicodeStrings = bool(unicode); -} - -void taglib_set_string_management_enabled(BOOL management) -{ - stringManagementEnabled = bool(management); -} - -void taglib_free(void* pointer) -{ - free(pointer); -} - -//////////////////////////////////////////////////////////////////////////////// -// TagLib::File wrapper -//////////////////////////////////////////////////////////////////////////////// - -TagLib_File *taglib_file_new(const char *filename) -{ - return reinterpret_cast(FileRef::create(filename)); -} - -TagLib_File *taglib_file_new_type(const char *filename, TagLib_File_Type type) -{ - switch(type) { - case TagLib_File_MPEG: - return reinterpret_cast(new MPEG::File(filename)); - case TagLib_File_OggVorbis: - return reinterpret_cast(new Ogg::Vorbis::File(filename)); - case TagLib_File_FLAC: - return reinterpret_cast(new FLAC::File(filename)); - case TagLib_File_MPC: - return reinterpret_cast(new MPC::File(filename)); - case TagLib_File_OggFlac: - return reinterpret_cast(new Ogg::FLAC::File(filename)); - case TagLib_File_WavPack: - return reinterpret_cast(new WavPack::File(filename)); - case TagLib_File_Speex: - return reinterpret_cast(new Ogg::Speex::File(filename)); - case TagLib_File_TrueAudio: - return reinterpret_cast(new TrueAudio::File(filename)); - case TagLib_File_MP4: - return reinterpret_cast(new MP4::File(filename)); - case TagLib_File_ASF: - return reinterpret_cast(new ASF::File(filename)); - default: - return 0; - } - - return 0; -} - -void taglib_file_free(TagLib_File *file) -{ - delete reinterpret_cast(file); -} - -BOOL taglib_file_is_valid(const TagLib_File *file) -{ - return reinterpret_cast(file)->isValid(); -} - -TagLib_Tag *taglib_file_tag(const TagLib_File *file) -{ - const File *f = reinterpret_cast(file); - return reinterpret_cast(f->tag()); -} - -const TagLib_AudioProperties *taglib_file_audioproperties(const TagLib_File *file) -{ - const File *f = reinterpret_cast(file); - return reinterpret_cast(f->audioProperties()); -} - -BOOL taglib_file_save(TagLib_File *file) -{ - return reinterpret_cast(file)->save(); -} - -//////////////////////////////////////////////////////////////////////////////// -// TagLib::Tag wrapper -//////////////////////////////////////////////////////////////////////////////// - -char *taglib_tag_title(const TagLib_Tag *tag) -{ - const Tag *t = reinterpret_cast(tag); - char *s = ::strdup(t->title().toCString(unicodeStrings)); - if(stringManagementEnabled) - strings.append(s); - return s; -} - -char *taglib_tag_artist(const TagLib_Tag *tag) -{ - const Tag *t = reinterpret_cast(tag); - char *s = ::strdup(t->artist().toCString(unicodeStrings)); - if(stringManagementEnabled) - strings.append(s); - return s; -} - -char *taglib_tag_album(const TagLib_Tag *tag) -{ - const Tag *t = reinterpret_cast(tag); - char *s = ::strdup(t->album().toCString(unicodeStrings)); - if(stringManagementEnabled) - strings.append(s); - return s; -} - -char *taglib_tag_comment(const TagLib_Tag *tag) -{ - const Tag *t = reinterpret_cast(tag); - char *s = ::strdup(t->comment().toCString(unicodeStrings)); - if(stringManagementEnabled) - strings.append(s); - return s; -} - -char *taglib_tag_genre(const TagLib_Tag *tag) -{ - const Tag *t = reinterpret_cast(tag); - char *s = ::strdup(t->genre().toCString(unicodeStrings)); - if(stringManagementEnabled) - strings.append(s); - return s; -} - -unsigned int taglib_tag_year(const TagLib_Tag *tag) -{ - const Tag *t = reinterpret_cast(tag); - return t->year(); -} - -unsigned int taglib_tag_track(const TagLib_Tag *tag) -{ - const Tag *t = reinterpret_cast(tag); - return t->track(); -} - -void taglib_tag_set_title(TagLib_Tag *tag, const char *title) -{ - Tag *t = reinterpret_cast(tag); - t->setTitle(String(title, unicodeStrings ? String::UTF8 : String::Latin1)); -} - -void taglib_tag_set_artist(TagLib_Tag *tag, const char *artist) -{ - Tag *t = reinterpret_cast(tag); - t->setArtist(String(artist, unicodeStrings ? String::UTF8 : String::Latin1)); -} - -void taglib_tag_set_album(TagLib_Tag *tag, const char *album) -{ - Tag *t = reinterpret_cast(tag); - t->setAlbum(String(album, unicodeStrings ? String::UTF8 : String::Latin1)); -} - -void taglib_tag_set_comment(TagLib_Tag *tag, const char *comment) -{ - Tag *t = reinterpret_cast(tag); - t->setComment(String(comment, unicodeStrings ? String::UTF8 : String::Latin1)); -} - -void taglib_tag_set_genre(TagLib_Tag *tag, const char *genre) -{ - Tag *t = reinterpret_cast(tag); - t->setGenre(String(genre, unicodeStrings ? String::UTF8 : String::Latin1)); -} - -void taglib_tag_set_year(TagLib_Tag *tag, unsigned int year) -{ - Tag *t = reinterpret_cast(tag); - t->setYear(year); -} - -void taglib_tag_set_track(TagLib_Tag *tag, unsigned int track) -{ - Tag *t = reinterpret_cast(tag); - t->setTrack(track); -} - -void taglib_tag_free_strings() -{ - if(!stringManagementEnabled) - return; - - for(List::Iterator it = strings.begin(); it != strings.end(); ++it) - free(*it); - strings.clear(); -} - -//////////////////////////////////////////////////////////////////////////////// -// TagLib::AudioProperties wrapper -//////////////////////////////////////////////////////////////////////////////// - -int taglib_audioproperties_length(const TagLib_AudioProperties *audioProperties) -{ - const AudioProperties *p = reinterpret_cast(audioProperties); - return p->length(); -} - -int taglib_audioproperties_bitrate(const TagLib_AudioProperties *audioProperties) -{ - const AudioProperties *p = reinterpret_cast(audioProperties); - return p->bitrate(); -} - -int taglib_audioproperties_samplerate(const TagLib_AudioProperties *audioProperties) -{ - const AudioProperties *p = reinterpret_cast(audioProperties); - return p->sampleRate(); -} - -int taglib_audioproperties_channels(const TagLib_AudioProperties *audioProperties) -{ - const AudioProperties *p = reinterpret_cast(audioProperties); - return p->channels(); -} - -void taglib_id3v2_set_default_text_encoding(TagLib_ID3v2_Encoding encoding) -{ - String::Type type = String::Latin1; - - switch(encoding) - { - case TagLib_ID3v2_Latin1: - type = String::Latin1; - break; - case TagLib_ID3v2_UTF16: - type = String::UTF16; - break; - case TagLib_ID3v2_UTF16BE: - type = String::UTF16BE; - break; - case TagLib_ID3v2_UTF8: - type = String::UTF8; - break; - } - - ID3v2::FrameFactory::instance()->setDefaultTextEncoding(type); -} diff --git a/platform/win32/msvc/external/taglib/bindings/c/tag_c.h b/platform/win32/msvc/external/taglib/bindings/c/tag_c.h deleted file mode 100644 index ab5dd20207d..00000000000 --- a/platform/win32/msvc/external/taglib/bindings/c/tag_c.h +++ /dev/null @@ -1,297 +0,0 @@ -/*************************************************************************** - copyright : (C) 2003 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * - * USA * - ***************************************************************************/ - -#ifndef TAGLIB_TAG_C -#define TAGLIB_TAG_C - -/* Do not include this in the main TagLib documentation. */ -#ifndef DO_NOT_DOCUMENT - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(_WIN32) || defined(_WIN64) -#ifdef MAKE_TAGLIB_C_LIB -#define TAGLIB_C_EXPORT __declspec(dllexport) -#else -#define TAGLIB_C_EXPORT __declspec(dllimport) -#endif -#elif defined(__GNUC__) && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 1) -#define TAGLIB_C_EXPORT __attribute__ ((visibility("default"))) -#else -#define TAGLIB_C_EXPORT -#endif - -#ifndef BOOL -#define BOOL int -#endif - -/******************************************************************************* - * [ TagLib C Binding ] - * - * This is an interface to TagLib's "simple" API, meaning that you can read and - * modify media files in a generic, but not specialized way. This is a rough - * representation of TagLib::File and TagLib::Tag, for which the documentation - * is somewhat more complete and worth consulting. - *******************************************************************************/ - -/* - * These are used for type provide some type safety to the C API (as opposed to - * using void *, but pointers to them are simply cast to the corresponding C++ - * types in the implementation. - */ - -typedef struct { int dummy; } TagLib_File; -typedef struct { int dummy; } TagLib_Tag; -typedef struct { int dummy; } TagLib_AudioProperties; - -/*! - * By default all strings coming into or out of TagLib's C API are in UTF8. - * However, it may be desirable for TagLib to operate on Latin1 (ISO-8859-1) - * strings in which case this should be set to FALSE. - */ -TAGLIB_C_EXPORT void taglib_set_strings_unicode(BOOL unicode); - -/*! - * TagLib can keep track of strings that are created when outputting tag values - * and clear them using taglib_tag_clear_strings(). This is enabled by default. - * However if you wish to do more fine grained management of strings, you can do - * so by setting \a management to FALSE. - */ -TAGLIB_C_EXPORT void taglib_set_string_management_enabled(BOOL management); - -/*! - * Explicitly free a string returned from TagLib - */ -TAGLIB_C_EXPORT void taglib_free(void* pointer); - -/******************************************************************************* - * File API - ******************************************************************************/ - -typedef enum { - TagLib_File_MPEG, - TagLib_File_OggVorbis, - TagLib_File_FLAC, - TagLib_File_MPC, - TagLib_File_OggFlac, - TagLib_File_WavPack, - TagLib_File_Speex, - TagLib_File_TrueAudio, - TagLib_File_MP4, - TagLib_File_ASF -} TagLib_File_Type; - -/*! - * Creates a TagLib file based on \a filename. TagLib will try to guess the file - * type. - * - * \returns NULL if the file type cannot be determined or the file cannot - * be opened. - */ -TAGLIB_C_EXPORT TagLib_File *taglib_file_new(const char *filename); - -/*! - * Creates a TagLib file based on \a filename. Rather than attempting to guess - * the type, it will use the one specified by \a type. - */ -TAGLIB_C_EXPORT TagLib_File *taglib_file_new_type(const char *filename, TagLib_File_Type type); - -/*! - * Frees and closes the file. - */ -TAGLIB_C_EXPORT void taglib_file_free(TagLib_File *file); - -/*! - * Returns true if the file is open and readble and valid information for - * the Tag and / or AudioProperties was found. - */ - -TAGLIB_C_EXPORT BOOL taglib_file_is_valid(const TagLib_File *file); - -/*! - * Returns a pointer to the tag associated with this file. This will be freed - * automatically when the file is freed. - */ -TAGLIB_C_EXPORT TagLib_Tag *taglib_file_tag(const TagLib_File *file); - -/*! - * Returns a pointer to the the audio properties associated with this file. This - * will be freed automatically when the file is freed. - */ -TAGLIB_C_EXPORT const TagLib_AudioProperties *taglib_file_audioproperties(const TagLib_File *file); - -/*! - * Saves the \a file to disk. - */ -TAGLIB_C_EXPORT BOOL taglib_file_save(TagLib_File *file); - -/****************************************************************************** - * Tag API - ******************************************************************************/ - -/*! - * Returns a string with this tag's title. - * - * \note By default this string should be UTF8 encoded and its memory should be - * freed using taglib_tag_free_strings(). - */ -TAGLIB_C_EXPORT char *taglib_tag_title(const TagLib_Tag *tag); - -/*! - * Returns a string with this tag's artist. - * - * \note By default this string should be UTF8 encoded and its memory should be - * freed using taglib_tag_free_strings(). - */ -TAGLIB_C_EXPORT char *taglib_tag_artist(const TagLib_Tag *tag); - -/*! - * Returns a string with this tag's album name. - * - * \note By default this string should be UTF8 encoded and its memory should be - * freed using taglib_tag_free_strings(). - */ -TAGLIB_C_EXPORT char *taglib_tag_album(const TagLib_Tag *tag); - -/*! - * Returns a string with this tag's comment. - * - * \note By default this string should be UTF8 encoded and its memory should be - * freed using taglib_tag_free_strings(). - */ -TAGLIB_C_EXPORT char *taglib_tag_comment(const TagLib_Tag *tag); - -/*! - * Returns a string with this tag's genre. - * - * \note By default this string should be UTF8 encoded and its memory should be - * freed using taglib_tag_free_strings(). - */ -TAGLIB_C_EXPORT char *taglib_tag_genre(const TagLib_Tag *tag); - -/*! - * Returns the tag's year or 0 if year is not set. - */ -TAGLIB_C_EXPORT unsigned int taglib_tag_year(const TagLib_Tag *tag); - -/*! - * Returns the tag's track number or 0 if track number is not set. - */ -TAGLIB_C_EXPORT unsigned int taglib_tag_track(const TagLib_Tag *tag); - -/*! - * Sets the tag's title. - * - * \note By default this string should be UTF8 encoded. - */ -TAGLIB_C_EXPORT void taglib_tag_set_title(TagLib_Tag *tag, const char *title); - -/*! - * Sets the tag's artist. - * - * \note By default this string should be UTF8 encoded. - */ -TAGLIB_C_EXPORT void taglib_tag_set_artist(TagLib_Tag *tag, const char *artist); - -/*! - * Sets the tag's album. - * - * \note By default this string should be UTF8 encoded. - */ -TAGLIB_C_EXPORT void taglib_tag_set_album(TagLib_Tag *tag, const char *album); - -/*! - * Sets the tag's comment. - * - * \note By default this string should be UTF8 encoded. - */ -TAGLIB_C_EXPORT void taglib_tag_set_comment(TagLib_Tag *tag, const char *comment); - -/*! - * Sets the tag's genre. - * - * \note By default this string should be UTF8 encoded. - */ -TAGLIB_C_EXPORT void taglib_tag_set_genre(TagLib_Tag *tag, const char *genre); - -/*! - * Sets the tag's year. 0 indicates that this field should be cleared. - */ -TAGLIB_C_EXPORT void taglib_tag_set_year(TagLib_Tag *tag, unsigned int year); - -/*! - * Sets the tag's track number. 0 indicates that this field should be cleared. - */ -TAGLIB_C_EXPORT void taglib_tag_set_track(TagLib_Tag *tag, unsigned int track); - -/*! - * Frees all of the strings that have been created by the tag. - */ -TAGLIB_C_EXPORT void taglib_tag_free_strings(void); - -/****************************************************************************** - * Audio Properties API - ******************************************************************************/ - -/*! - * Returns the length of the file in seconds. - */ -TAGLIB_C_EXPORT int taglib_audioproperties_length(const TagLib_AudioProperties *audioProperties); - -/*! - * Returns the bitrate of the file in kb/s. - */ -TAGLIB_C_EXPORT int taglib_audioproperties_bitrate(const TagLib_AudioProperties *audioProperties); - -/*! - * Returns the sample rate of the file in Hz. - */ -TAGLIB_C_EXPORT int taglib_audioproperties_samplerate(const TagLib_AudioProperties *audioProperties); - -/*! - * Returns the number of channels in the audio stream. - */ -TAGLIB_C_EXPORT int taglib_audioproperties_channels(const TagLib_AudioProperties *audioProperties); - -/******************************************************************************* - * Special convenience ID3v2 functions - *******************************************************************************/ - -typedef enum { - TagLib_ID3v2_Latin1, - TagLib_ID3v2_UTF16, - TagLib_ID3v2_UTF16BE, - TagLib_ID3v2_UTF8 -} TagLib_ID3v2_Encoding; - -/*! - * This sets the default encoding for ID3v2 frames that are written to tags. - */ - -TAGLIB_C_EXPORT void taglib_id3v2_set_default_text_encoding(TagLib_ID3v2_Encoding encoding); - -#ifdef __cplusplus -} -#endif -#endif /* DO_NOT_DOCUMENT */ -#endif diff --git a/platform/win32/msvc/external/taglib/bindings/c/taglib_c.pc.cmake b/platform/win32/msvc/external/taglib/bindings/c/taglib_c.pc.cmake deleted file mode 100644 index 61764fc323e..00000000000 --- a/platform/win32/msvc/external/taglib/bindings/c/taglib_c.pc.cmake +++ /dev/null @@ -1,12 +0,0 @@ -prefix=${CMAKE_INSTALL_PREFIX} -exec_prefix=${CMAKE_INSTALL_PREFIX} -libdir=${LIB_INSTALL_DIR} -includedir=${INCLUDE_INSTALL_DIR} - - -Name: TagLib C Bindings -Description: Audio meta-data library (C bindings) -Requires: taglib -Version: ${TAGLIB_LIB_MAJOR_VERSION}.${TAGLIB_LIB_MINOR_VERSION}.${TAGLIB_LIB_PATCH_VERSION} -Libs: -L${LIB_INSTALL_DIR} -ltag_c -Cflags: -I${INCLUDE_INSTALL_DIR}/taglib diff --git a/platform/win32/msvc/external/taglib/cmake/modules/FindCppUnit.cmake b/platform/win32/msvc/external/taglib/cmake/modules/FindCppUnit.cmake deleted file mode 100644 index adaaeb61452..00000000000 --- a/platform/win32/msvc/external/taglib/cmake/modules/FindCppUnit.cmake +++ /dev/null @@ -1,69 +0,0 @@ -# - Try to find the libcppunit libraries -# Once done this will define -# -# CppUnit_FOUND - system has libcppunit -# CPPUNIT_INCLUDE_DIR - the libcppunit include directory -# CPPUNIT_LIBRARIES - libcppunit library - -include (MacroEnsureVersion) - -if(NOT CPPUNIT_MIN_VERSION) - SET(CPPUNIT_MIN_VERSION 1.12.0) -endif(NOT CPPUNIT_MIN_VERSION) - -FIND_PROGRAM(CPPUNIT_CONFIG_EXECUTABLE cppunit-config ) - -IF(CPPUNIT_INCLUDE_DIR AND CPPUNIT_LIBRARIES) - - # in cache already - SET(CppUnit_FOUND TRUE) - -ELSE(CPPUNIT_INCLUDE_DIR AND CPPUNIT_LIBRARIES) - - SET(CPPUNIT_INCLUDE_DIR) - SET(CPPUNIT_LIBRARIES) - - IF(CPPUNIT_CONFIG_EXECUTABLE) - EXEC_PROGRAM(${CPPUNIT_CONFIG_EXECUTABLE} ARGS --cflags RETURN_VALUE _return_VALUE OUTPUT_VARIABLE CPPUNIT_CFLAGS) - EXEC_PROGRAM(${CPPUNIT_CONFIG_EXECUTABLE} ARGS --libs RETURN_VALUE _return_VALUE OUTPUT_VARIABLE CPPUNIT_LIBRARIES) - EXEC_PROGRAM(${CPPUNIT_CONFIG_EXECUTABLE} ARGS --version RETURN_VALUE _return_VALUE OUTPUT_VARIABLE CPPUNIT_INSTALLED_VERSION) - STRING(REGEX REPLACE "-I(.+)" "\\1" CPPUNIT_CFLAGS "${CPPUNIT_CFLAGS}") - ELSE(CPPUNIT_CONFIG_EXECUTABLE) - # in case win32 needs to find it the old way? - FIND_PATH(CPPUNIT_CFLAGS cppunit/TestRunner.h PATHS /usr/include /usr/local/include ) - FIND_LIBRARY(CPPUNIT_LIBRARIES NAMES cppunit PATHS /usr/lib /usr/local/lib ) - # how can we find cppunit version? - MESSAGE (STATUS "Ensure you cppunit installed version is at least ${CPPUNIT_MIN_VERSION}") - SET (CPPUNIT_INSTALLED_VERSION ${CPPUNIT_MIN_VERSION}) - ENDIF(CPPUNIT_CONFIG_EXECUTABLE) - - SET(CPPUNIT_INCLUDE_DIR ${CPPUNIT_CFLAGS} "${CPPUNIT_CFLAGS}/cppunit") - -ENDIF(CPPUNIT_INCLUDE_DIR AND CPPUNIT_LIBRARIES) - -IF(CPPUNIT_INCLUDE_DIR AND CPPUNIT_LIBRARIES) - - SET(CppUnit_FOUND TRUE) - - if(NOT CppUnit_FIND_QUIETLY) - MESSAGE (STATUS "Found cppunit: ${CPPUNIT_LIBRARIES}") - endif(NOT CppUnit_FIND_QUIETLY) - - IF(CPPUNIT_CONFIG_EXECUTABLE) - EXEC_PROGRAM(${CPPUNIT_CONFIG_EXECUTABLE} ARGS --version RETURN_VALUE _return_VALUE OUTPUT_VARIABLE CPPUNIT_INSTALLED_VERSION) - ENDIF(CPPUNIT_CONFIG_EXECUTABLE) - - macro_ensure_version( ${CPPUNIT_MIN_VERSION} ${CPPUNIT_INSTALLED_VERSION} CPPUNIT_INSTALLED_VERSION_OK ) - - IF(NOT CPPUNIT_INSTALLED_VERSION_OK) - MESSAGE ("** CppUnit version is too old: found ${CPPUNIT_INSTALLED_VERSION} installed, ${CPPUNIT_MIN_VERSION} or major is required") - SET(CppUnit_FOUND FALSE) - ENDIF(NOT CPPUNIT_INSTALLED_VERSION_OK) - -ELSE(CPPUNIT_INCLUDE_DIR AND CPPUNIT_LIBRARIES) - - SET(CppUnit_FOUND FALSE CACHE BOOL "Not found cppunit library") - -ENDIF(CPPUNIT_INCLUDE_DIR AND CPPUNIT_LIBRARIES) - -MARK_AS_ADVANCED(CPPUNIT_INCLUDE_DIR CPPUNIT_LIBRARIES) diff --git a/platform/win32/msvc/external/taglib/cmake/modules/MacroEnsureVersion.cmake b/platform/win32/msvc/external/taglib/cmake/modules/MacroEnsureVersion.cmake deleted file mode 100644 index c6df537a4f1..00000000000 --- a/platform/win32/msvc/external/taglib/cmake/modules/MacroEnsureVersion.cmake +++ /dev/null @@ -1,71 +0,0 @@ -# This macro compares version numbers of the form "x.y.z" -# MACRO_ENSURE_VERSION( FOO_MIN_VERSION FOO_VERSION_FOUND FOO_VERSION_OK) -# will set FOO_VERSIN_OK to true if FOO_VERSION_FOUND >= FOO_MIN_VERSION -# where both have to be in a 3-part-version format, leading and trailing -# text is ok, e.g. -# MACRO_ENSURE_VERSION( "2.5.31" "flex 2.5.4a" VERSION_OK) -# which means 2.5.31 is required and "flex 2.5.4a" is what was found on the system - -# Copyright (c) 2006, David Faure, -# -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - -MACRO(MACRO_ENSURE_VERSION requested_version found_version var_too_old) - - # parse the parts of the version string - STRING(REGEX REPLACE "([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" req_major_vers "${requested_version}") - STRING(REGEX REPLACE "[0-9]+\\.([0-9]+)\\.[0-9]+" "\\1" req_minor_vers "${requested_version}") - STRING(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" req_patch_vers "${requested_version}") - - STRING(REGEX REPLACE "[^0-9]*([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" found_major_vers "${found_version}") - STRING(REGEX REPLACE "[^0-9]*[0-9]+\\.([0-9]+)\\.[0-9]+.*" "\\1" found_minor_vers "${found_version}") - STRING(REGEX REPLACE "[^0-9]*[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" found_patch_vers "${found_version}") - - # compute an overall version number which can be compared at once - MATH(EXPR req_vers_num "${req_major_vers}*10000 + ${req_minor_vers}*100 + ${req_patch_vers}") - MATH(EXPR found_vers_num "${found_major_vers}*10000 + ${found_minor_vers}*100 + ${found_patch_vers}") - - if (found_vers_num LESS req_vers_num) - set( ${var_too_old} FALSE ) - else (found_vers_num LESS req_vers_num) - set( ${var_too_old} TRUE ) - endif (found_vers_num LESS req_vers_num) - -ENDMACRO(MACRO_ENSURE_VERSION) - - -# This macro compares version numbers of the form "x.y" -# MACRO_ENSURE_VERSION( FOO_MIN_VERSION FOO_VERSION_FOUND FOO_VERSION_OK) -# will set FOO_VERSIN_OK to true if FOO_VERSION_FOUND >= FOO_MIN_VERSION -# where both have to be in a 2-part-version format, leading and trailing -# text is ok, e.g. -# MACRO_ENSURE_VERSION( "0.5" "foo 0.6" VERSION_OK) -# which means 0.5 is required and "foo 0.6" is what was found on the system - -# Copyright (c) 2006, David Faure, -# Copyright (c) 2007, Pino Toscano, -# -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - -MACRO(MACRO_ENSURE_VERSION2 requested_version found_version var_too_old) - - # parse the parts of the version string - STRING(REGEX REPLACE "([0-9]+)\\.[0-9]+" "\\1" req_major_vers "${requested_version}") - STRING(REGEX REPLACE "[0-9]+\\.([0-9]+)" "\\1" req_minor_vers "${requested_version}") - - STRING(REGEX REPLACE "[^0-9]*([0-9]+)\\.[0-9]+.*" "\\1" found_major_vers "${found_version}") - STRING(REGEX REPLACE "[^0-9]*[0-9]+\\.([0-9]+).*" "\\1" found_minor_vers "${found_version}") - - # compute an overall version number which can be compared at once - MATH(EXPR req_vers_num "${req_major_vers}*100 + ${req_minor_vers}") - MATH(EXPR found_vers_num "${found_major_vers}*100 + ${found_minor_vers}") - - if (found_vers_num LESS req_vers_num) - set( ${var_too_old} FALSE ) - else (found_vers_num LESS req_vers_num) - set( ${var_too_old} TRUE ) - endif (found_vers_num LESS req_vers_num) - -ENDMACRO(MACRO_ENSURE_VERSION2) diff --git a/platform/win32/msvc/external/taglib/cmake_uninstall.cmake.in b/platform/win32/msvc/external/taglib/cmake_uninstall.cmake.in deleted file mode 100644 index 72e030fb33f..00000000000 --- a/platform/win32/msvc/external/taglib/cmake_uninstall.cmake.in +++ /dev/null @@ -1,21 +0,0 @@ -if (NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") - message(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"") -endif() - -file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) -string(REGEX REPLACE "\n" ";" files "${files}") -foreach (file ${files}) - message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") - if (EXISTS "$ENV{DESTDIR}${file}") - execute_process( - COMMAND @CMAKE_COMMAND@ -E remove "$ENV{DESTDIR}${file}" - OUTPUT_VARIABLE rm_out - RESULT_VARIABLE rm_retval - ) - if(NOT ${rm_retval} EQUAL 0) - message(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") - endif () - else () - message(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.") - endif () -endforeach() diff --git a/platform/win32/msvc/external/taglib/config-taglib.h.cmake b/platform/win32/msvc/external/taglib/config-taglib.h.cmake deleted file mode 100644 index 9c2f487d1de..00000000000 --- a/platform/win32/msvc/external/taglib/config-taglib.h.cmake +++ /dev/null @@ -1,11 +0,0 @@ -/* config-taglib.h. Generated by cmake from config-taglib.h.cmake */ - -/* Define if you have libz */ -#cmakedefine HAVE_ZLIB 1 - -#cmakedefine NO_ITUNES_HACKS 1 -#cmakedefine WITH_ASF 1 -#cmakedefine WITH_MP4 1 - -#cmakedefine TESTS_DIR "@TESTS_DIR@" - diff --git a/platform/win32/msvc/external/taglib/doc/README b/platform/win32/msvc/external/taglib/doc/README deleted file mode 100644 index b2ebd36d68c..00000000000 --- a/platform/win32/msvc/external/taglib/doc/README +++ /dev/null @@ -1 +0,0 @@ -Run "make docs" in the parent directory to generate the TagLib API documentation. diff --git a/platform/win32/msvc/external/taglib/doc/api-footer.html b/platform/win32/msvc/external/taglib/doc/api-footer.html deleted file mode 100644 index 9b151ee8970..00000000000 --- a/platform/win32/msvc/external/taglib/doc/api-footer.html +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/platform/win32/msvc/external/taglib/doc/api-header.html b/platform/win32/msvc/external/taglib/doc/api-header.html deleted file mode 100644 index ab133c2587f..00000000000 --- a/platform/win32/msvc/external/taglib/doc/api-header.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - $title ($projectname) - - - - - -
- - - - - - -
- - -
- - - - - -

TagLib $projectnumber ($title)

- -
-
-
- -
diff --git a/platform/win32/msvc/external/taglib/doc/taglib-api.css b/platform/win32/msvc/external/taglib/doc/taglib-api.css deleted file mode 100644 index 3fa820e25ee..00000000000 --- a/platform/win32/msvc/external/taglib/doc/taglib-api.css +++ /dev/null @@ -1,395 +0,0 @@ -body { - font-family: sans-serif; - background: white; - color: black; - margin: 0px; - padding: 15px; -} - -a:link { - font-weight: bold; - text-decoration: none; - color: gray; -} - -a:visited { - font-weight: bold; - text-decoration: none; - color: gray; -} - -a:hover { - color: #cccccc; - text-decoration: underline; -} - -a:active { - color: #cccccc; - text-decoration: underline; -} - -img { - border-style: none; -} - -h1 { - font-family: sans-serif; -} - -h2 { - font-family: sans-serif; -} - -h3 { - font-family: sans-serif; -} - -/* container */ - -#container { - position: absolute; - border-width: thin; - border-style: solid; - width: 95%; -} - -/* intro */ - -#intro { - padding: 5px; - margin: 0px; - background: #cccccc; - border-width: medium; - border-style: solid; -} - -#intro h1 { - margin: 5px; - padding: 5px; -} - -/* links */ - -#links { - font-size: x-small; - vertical-align: bottom; -} - -#links a { - border-width: thin; - border-style: dotted; - border-color: white; - /* margin: 0px 10px 0px 0px; */ - margin: 1px; - padding: 3px; - line-height: 230% -} - -#links a:hover { - color: black; - text-decoration: underline; -} - -#links h3 { - outline-width: thin; - border-style: solid; - padding: 2px; - margin: 3px 0px 3px 0px; -} - -/* menu */ - -#menu h3 { - text-align: center; -} - -/* text */ - -#text { - margin: 0px; - padding: 5px 5px 0px 5px; - float: left; -} - -#text h3 { - border-width: thin; - border-style: solid; - padding: 2px; - margin: 3px 0px 3px 0px; -} - -#text li { - margin: 0px 0px 10px 0px; -} - -#text ul { - margin: 5px; - padding: 0px 0px 0px 20px; -} - -#leftcolumn { - float: left; - width: 300px; - margin: 0px 10px 0px 0px; - padding: 0px; -} - -#rightcolumn { - float: right; - width: 210px; - margin: 0px; - padding: 0px; -} - -/* vspacer */ - -.vspacer { - height: 10px; -} - -.silver { - border-width: thin; - border-color: black; - border-style: solid; - background: #cccccc; -} - -a.code { - text-decoration: none; - font-weight: normal; - color: #4444ee -} - -a.codeRef { - font-weight: normal; - color: #4444ee -} - -div.fragment { - width: 98%; - border: 1px solid #CCCCCC; - background-color: #f5f5f5; - padding-left: 4px; - margin: 4px; -} - -div.ah { - background-color: black; - font-weight: bold; color: #ffffff; - margin-bottom: 3px; - margin-top: 3px -} - -#text td { - width: auto; -} - -div.memdoc { - margin-top: 0px; - margin-bottom: 20px; - padding: 10px 10px 10px 40px; -} - -div.memproto { - border: thin solid black; - background-color: #f2f2ff; - width: 100%; - margin-top: 20px; - padding-top: 10px; - padding-bottom: 10px; -} - -td.paramtype { - color: #602020; -} - -table.memname { - font-weight: bold; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - margin-bottom: 6px; - font-weight: bold -} - -div.groupText { - margin-left: 16px; - font-style: italic; - font-size: smaller -} - -body { - background: white; - color: black; - margin-right: 20px; - margin-left: 20px; -} - -td.indexkey { - background-color: #eeeeff; - font-weight: bold; - padding-right : 10px; - padding-top : 2px; - padding-left : 10px; - padding-bottom : 2px; - margin-left : 0px; - margin-right : 0px; - margin-top : 2px; - margin-bottom : 2px -} - -td.indexvalue { - background-color: #eeeeff; - font-style: italic; - padding-right : 10px; - padding-top : 2px; - padding-left : 10px; - padding-bottom : 2px; - margin-left : 0px; - margin-right : 0px; - margin-top : 2px; - margin-bottom : 2px -} - -tr.memlist { - background-color: #f0f0f0; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl { - vertical-align: middle; -} - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -.mdTable { - border: 1px solid #868686; - background-color: #f2f2ff; -} - -.mdRow { - padding: 8px 20px; -} - -.mdescLeft { - font-size: smaller; - font-family: Arial, Helvetica, sans-serif; - background-color: #FAFAFA; - padding-left: 8px; - border-top: 1px none #E0E0E0; - border-right: 1px none #E0E0E0; - border-bottom: 1px none #E0E0E0; - border-left: 1px none #E0E0E0; - margin: 0px; -} - -.mdescRight { - font-size: smaller; - font-family: Arial, Helvetica, sans-serif; - font-style: italic; - background-color: #FAFAFA; - padding-left: 4px; - border-top: 1px none #E0E0E0; - border-right: 1px none #E0E0E0; - border-bottom: 1px none #E0E0E0; - border-left: 1px none #E0E0E0; - margin: 0px; - padding-bottom: 0px; - padding-right: 8px; -} - -.memItemLeft { - padding: 1px 0px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-style: solid; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - background-color: #FAFAFA; - font-family: Geneva, Arial, Helvetica, sans-serif; - font-size: 12px; -} - -.memItemRight { - padding: 1px 0px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-style: solid; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - background-color: #FAFAFA; - font-family: Geneva, Arial, Helvetica, sans-serif; - font-size: 13px; -} - -.search { - color: #0000ee; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #eeeeff; -} - -td.tiny { - font-size: 75%; -} diff --git a/platform/win32/msvc/external/taglib/doc/taglib.png b/platform/win32/msvc/external/taglib/doc/taglib.png deleted file mode 100644 index 2791cc88767..00000000000 Binary files a/platform/win32/msvc/external/taglib/doc/taglib.png and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/examples/CMakeLists.txt b/platform/win32/msvc/external/taglib/examples/CMakeLists.txt deleted file mode 100644 index 17d4bd6bc8a..00000000000 --- a/platform/win32/msvc/external/taglib/examples/CMakeLists.txt +++ /dev/null @@ -1,50 +0,0 @@ -if(BUILD_EXAMPLES) -INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR}/../taglib - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/toolkit - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ape - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpeg - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpeg/id3v1 - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpeg/id3v2 - ${CMAKE_CURRENT_SOURCE_DIR}/../bindings/c/ ) - -if(ENABLE_STATIC) - add_definitions(-DTAGLIB_STATIC) -endif(ENABLE_STATIC) - -########### next target ############### - -ADD_EXECUTABLE(tagreader tagreader.cpp) - -TARGET_LINK_LIBRARIES(tagreader tag ) - - -########### next target ############### - -ADD_EXECUTABLE(tagreader_c tagreader_c.c) - -TARGET_LINK_LIBRARIES(tagreader_c tag_c ) - - -########### next target ############### - -ADD_EXECUTABLE(tagwriter tagwriter.cpp) - -TARGET_LINK_LIBRARIES(tagwriter tag ) - - -########### next target ############### - -ADD_EXECUTABLE(framelist framelist.cpp) - -TARGET_LINK_LIBRARIES(framelist tag ) - - -########### next target ############### - -ADD_EXECUTABLE(strip-id3v1 strip-id3v1.cpp) - -TARGET_LINK_LIBRARIES(strip-id3v1 tag ) - - -endif(BUILD_EXAMPLES) - diff --git a/platform/win32/msvc/external/taglib/examples/framelist.cpp b/platform/win32/msvc/external/taglib/examples/framelist.cpp deleted file mode 100644 index dbe80feb828..00000000000 --- a/platform/win32/msvc/external/taglib/examples/framelist.cpp +++ /dev/null @@ -1,106 +0,0 @@ -/* Copyright (C) 2003 Scott Wheeler - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include - -#include - -#include - -#include -#include -#include - -#include - -#include - -using namespace std; -using namespace TagLib; - -int main(int argc, char *argv[]) -{ - // process the command line args - - - for(int i = 1; i < argc; i++) { - - cout << "******************** \"" << argv[i] << "\"********************" << endl; - - MPEG::File f(argv[i]); - - ID3v2::Tag *id3v2tag = f.ID3v2Tag(); - - if(id3v2tag) { - - cout << "ID3v2." - << id3v2tag->header()->majorVersion() - << "." - << id3v2tag->header()->revisionNumber() - << ", " - << id3v2tag->header()->tagSize() - << " bytes in tag" - << endl; - - ID3v2::FrameList::ConstIterator it = id3v2tag->frameList().begin(); - for(; it != id3v2tag->frameList().end(); it++) - cout << (*it)->frameID() << " - \"" << (*it)->toString() << "\"" << endl; - } - else - cout << "file does not have a valid id3v2 tag" << endl; - - cout << endl << "ID3v1" << endl; - - ID3v1::Tag *id3v1tag = f.ID3v1Tag(); - - if(id3v1tag) { - cout << "title - \"" << id3v1tag->title() << "\"" << endl; - cout << "artist - \"" << id3v1tag->artist() << "\"" << endl; - cout << "album - \"" << id3v1tag->album() << "\"" << endl; - cout << "year - \"" << id3v1tag->year() << "\"" << endl; - cout << "comment - \"" << id3v1tag->comment() << "\"" << endl; - cout << "track - \"" << id3v1tag->track() << "\"" << endl; - cout << "genre - \"" << id3v1tag->genre() << "\"" << endl; - } - else - cout << "file does not have a valid id3v1 tag" << endl; - - APE::Tag *ape = f.APETag(); - - cout << endl << "APE" << endl; - - if(ape) { - for(APE::ItemListMap::ConstIterator it = ape->itemListMap().begin(); - it != ape->itemListMap().end(); ++it) - { - cout << (*it).first << " - \"" << (*it).second.toString() << "\"" << endl; - } - } - else - cout << "file does not have a valid APE tag" << endl; - - cout << endl; - } -} diff --git a/platform/win32/msvc/external/taglib/examples/strip-id3v1.cpp b/platform/win32/msvc/external/taglib/examples/strip-id3v1.cpp deleted file mode 100644 index ab36d7117b3..00000000000 --- a/platform/win32/msvc/external/taglib/examples/strip-id3v1.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright (C) 2003 Scott Wheeler - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include - -using namespace TagLib; - -int main(int argc, char *argv[]) -{ - for(int i = 1; i < argc; i++) { - - std::cout << "******************** Stripping ID3v1 Tag From: \"" << argv[i] << "\"********************" << std::endl; - - MPEG::File f(argv[i]); - f.strip(MPEG::File::ID3v1); - } -} diff --git a/platform/win32/msvc/external/taglib/examples/tagreader.cpp b/platform/win32/msvc/external/taglib/examples/tagreader.cpp deleted file mode 100644 index 76fe0d1a3bf..00000000000 --- a/platform/win32/msvc/external/taglib/examples/tagreader.cpp +++ /dev/null @@ -1,77 +0,0 @@ -/* Copyright (C) 2003 Scott Wheeler - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include - -#include -#include - -using namespace std; - -TagLib::String formatSeconds(int seconds) -{ - char secondsString[3]; - sprintf(secondsString, "%02i", seconds); - return secondsString; -} - -int main(int argc, char *argv[]) -{ - for(int i = 1; i < argc; i++) { - - cout << "******************** \"" << argv[i] << "\" ********************" << endl; - - TagLib::FileRef f(argv[i]); - - if(!f.isNull() && f.tag()) { - - TagLib::Tag *tag = f.tag(); - - cout << "-- TAG --" << endl; - cout << "title - \"" << tag->title() << "\"" << endl; - cout << "artist - \"" << tag->artist() << "\"" << endl; - cout << "album - \"" << tag->album() << "\"" << endl; - cout << "year - \"" << tag->year() << "\"" << endl; - cout << "comment - \"" << tag->comment() << "\"" << endl; - cout << "track - \"" << tag->track() << "\"" << endl; - cout << "genre - \"" << tag->genre() << "\"" << endl; - } - - if(!f.isNull() && f.audioProperties()) { - - TagLib::AudioProperties *properties = f.audioProperties(); - - int seconds = properties->length() % 60; - int minutes = (properties->length() - seconds) / 60; - - cout << "-- AUDIO --" << endl; - cout << "bitrate - " << properties->bitrate() << endl; - cout << "sample rate - " << properties->sampleRate() << endl; - cout << "channels - " << properties->channels() << endl; - cout << "length - " << minutes << ":" << formatSeconds(seconds) << endl; - } - } - return 0; -} diff --git a/platform/win32/msvc/external/taglib/examples/tagreader_c.c b/platform/win32/msvc/external/taglib/examples/tagreader_c.c deleted file mode 100644 index 0436992649c..00000000000 --- a/platform/win32/msvc/external/taglib/examples/tagreader_c.c +++ /dev/null @@ -1,81 +0,0 @@ -/* Copyright (C) 2003 Scott Wheeler - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include - -#ifndef FALSE -#define FALSE 0 -#endif - -int main(int argc, char *argv[]) -{ - int i; - int seconds; - int minutes; - TagLib_File *file; - TagLib_Tag *tag; - const TagLib_AudioProperties *properties; - - taglib_set_strings_unicode(FALSE); - - for(i = 1; i < argc; i++) { - printf("******************** \"%s\" ********************\n", argv[i]); - - file = taglib_file_new(argv[i]); - - if(file == NULL) - break; - - tag = taglib_file_tag(file); - properties = taglib_file_audioproperties(file); - - if(tag != NULL) { - printf("-- TAG --\n"); - printf("title - \"%s\"\n", taglib_tag_title(tag)); - printf("artist - \"%s\"\n", taglib_tag_artist(tag)); - printf("album - \"%s\"\n", taglib_tag_album(tag)); - printf("year - \"%i\"\n", taglib_tag_year(tag)); - printf("comment - \"%s\"\n", taglib_tag_comment(tag)); - printf("track - \"%i\"\n", taglib_tag_track(tag)); - printf("genre - \"%s\"\n", taglib_tag_genre(tag)); - } - - if(properties != NULL) { - seconds = taglib_audioproperties_length(properties) % 60; - minutes = (taglib_audioproperties_length(properties) - seconds) / 60; - - printf("-- AUDIO --\n"); - printf("bitrate - %i\n", taglib_audioproperties_bitrate(properties)); - printf("sample rate - %i\n", taglib_audioproperties_samplerate(properties)); - printf("channels - %i\n", taglib_audioproperties_channels(properties)); - printf("length - %i:%02i\n", minutes, seconds); - } - - taglib_tag_free_strings(); - taglib_file_free(file); - } - - return 0; -} diff --git a/platform/win32/msvc/external/taglib/examples/tagwriter.cpp b/platform/win32/msvc/external/taglib/examples/tagwriter.cpp deleted file mode 100644 index 63163fbedc5..00000000000 --- a/platform/win32/msvc/external/taglib/examples/tagwriter.cpp +++ /dev/null @@ -1,139 +0,0 @@ -/* Copyright (C) 2004 Scott Wheeler - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include - -using namespace std; - -bool isArgument(const char *s) -{ - return strlen(s) == 2 && s[0] == '-'; -} - -bool isFile(const char *s) -{ - struct stat st; -#ifdef _WIN32 - return ::stat(s, &st) == 0 && (st.st_mode & (S_IFREG)); -#else - return ::stat(s, &st) == 0 && (st.st_mode & (S_IFREG | S_IFLNK)); -#endif -} - -void usage() -{ - cout << endl; - cout << "Usage: tagwriter " << endl; - cout << endl; - cout << "Where the valid fields are:" << endl; - cout << " -t " << endl; - cout << " -a <artist>" << endl; - cout << " -A <album>" << endl; - cout << " -c <comment>" << endl; - cout << " -g <genre>" << endl; - cout << " -y <year>" << endl; - cout << " -T <track>" << endl; - cout << endl; - - exit(1); -} - -int main(int argc, char *argv[]) -{ - TagLib::List<TagLib::FileRef> fileList; - - while(argc > 0 && isFile(argv[argc - 1])) { - - TagLib::FileRef f(argv[argc - 1]); - - if(!f.isNull() && f.tag()) - fileList.append(f); - - argc--; - } - - if(fileList.isEmpty()) - usage(); - - for(int i = 1; i < argc - 1; i += 2) { - - if(isArgument(argv[i]) && i + 1 < argc && !isArgument(argv[i + 1])) { - - char field = argv[i][1]; - TagLib::String value = argv[i + 1]; - - TagLib::List<TagLib::FileRef>::Iterator it; - for(it = fileList.begin(); it != fileList.end(); ++it) { - - TagLib::Tag *t = (*it).tag(); - - switch (field) { - case 't': - t->setTitle(value); - break; - case 'a': - t->setArtist(value); - break; - case 'A': - t->setAlbum(value); - break; - case 'c': - t->setComment(value); - break; - case 'g': - t->setGenre(value); - break; - case 'y': - t->setYear(value.toInt()); - break; - case 'T': - t->setTrack(value.toInt()); - break; - default: - usage(); - break; - } - } - } - else - usage(); - } - - TagLib::List<TagLib::FileRef>::Iterator it; - for(it = fileList.begin(); it != fileList.end(); ++it) - (*it).file()->save(); - - return 0; -} diff --git a/platform/win32/msvc/external/taglib/taglib-config.cmake b/platform/win32/msvc/external/taglib/taglib-config.cmake deleted file mode 100644 index 2c2d2dbc49f..00000000000 --- a/platform/win32/msvc/external/taglib/taglib-config.cmake +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/sh - -usage() -{ - echo "usage: $0 [OPTIONS]" -cat << EOH - -options: - [--libs] - [--cflags] - [--version] - [--prefix] -EOH - exit 1; -} - -prefix=${CMAKE_INSTALL_PREFIX} -exec_prefix=${CMAKE_INSTALL_PREFIX} -libdir=${LIB_INSTALL_DIR} -includedir=${INCLUDE_INSTALL_DIR} - -flags="" - -if test $# -eq 0 ; then - usage -fi - -while test $# -gt 0 -do - case $1 in - --libs) - flags="$flags -L$libdir -ltag" - ;; - --cflags) - flags="$flags -I$includedir/taglib" - ;; - --version) - echo ${TAGLIB_LIB_MAJOR_VERSION}.${TAGLIB_LIB_MINOR_VERSION}.${TAGLIB_LIB_PATCH_VERSION} - ;; - --prefix) - echo $prefix - ;; - *) - echo "$0: unknown option $1" - echo - usage - ;; - esac - shift -done - -if test -n "$flags" -then - echo $flags -fi diff --git a/platform/win32/msvc/external/taglib/taglib.pc.cmake b/platform/win32/msvc/external/taglib/taglib.pc.cmake deleted file mode 100644 index 909b8fcfc50..00000000000 --- a/platform/win32/msvc/external/taglib/taglib.pc.cmake +++ /dev/null @@ -1,11 +0,0 @@ -prefix=${CMAKE_INSTALL_PREFIX} -exec_prefix=${CMAKE_INSTALL_PREFIX} -libdir=${LIB_INSTALL_DIR} -includedir=${INCLUDE_INSTALL_DIR} - -Name: TagLib -Description: Audio meta-data library -Requires: -Version: ${TAGLIB_LIB_MAJOR_VERSION}.${TAGLIB_LIB_MINOR_VERSION}.${TAGLIB_LIB_PATCH_VERSION} -Libs: -L${LIB_INSTALL_DIR} -ltag -Cflags: -I${INCLUDE_INSTALL_DIR}/taglib diff --git a/platform/win32/msvc/external/taglib/taglib/CMakeLists.txt b/platform/win32/msvc/external/taglib/taglib/CMakeLists.txt deleted file mode 100644 index 61bcb49e193..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/CMakeLists.txt +++ /dev/null @@ -1,321 +0,0 @@ -set(CMAKE_INCLUDE_CURRENT_DIR ON) -include_directories( - ${CMAKE_CURRENT_SOURCE_DIR}/toolkit - ${CMAKE_CURRENT_SOURCE_DIR}/asf - ${CMAKE_CURRENT_SOURCE_DIR}/mpeg - ${CMAKE_CURRENT_SOURCE_DIR}/ogg - ${CMAKE_CURRENT_SOURCE_DIR}/ogg/flac - ${CMAKE_CURRENT_SOURCE_DIR}/flac - ${CMAKE_CURRENT_SOURCE_DIR}/mpc - ${CMAKE_CURRENT_SOURCE_DIR}/mp4 - ${CMAKE_CURRENT_SOURCE_DIR}/ogg/vorbis - ${CMAKE_CURRENT_SOURCE_DIR}/ogg/speex - ${CMAKE_CURRENT_SOURCE_DIR}/mpeg/id3v2 - ${CMAKE_CURRENT_SOURCE_DIR}/mpeg/id3v2/frames - ${CMAKE_CURRENT_SOURCE_DIR}/mpeg/id3v1 - ${CMAKE_CURRENT_SOURCE_DIR}/ape - ${CMAKE_CURRENT_SOURCE_DIR}/wavpack - ${CMAKE_CURRENT_SOURCE_DIR}/trueaudio - ${CMAKE_CURRENT_SOURCE_DIR}/riff - ${CMAKE_CURRENT_SOURCE_DIR}/riff/aiff - ${CMAKE_CURRENT_SOURCE_DIR}/riff/wav - ${CMAKE_CURRENT_SOURCE_DIR}/mod - ${CMAKE_CURRENT_SOURCE_DIR}/s3m - ${CMAKE_CURRENT_SOURCE_DIR}/it - ${CMAKE_CURRENT_SOURCE_DIR}/xm -) - -if(ZLIB_FOUND) - include_directories(${ZLIB_INCLUDE_DIR}) -endif() - -set(tag_HDRS - tag.h - fileref.h - audioproperties.h - taglib_export.h - ${CMAKE_BINARY_DIR}/taglib_config.h - toolkit/taglib.h - toolkit/tstring.h - toolkit/tlist.h - toolkit/tlist.tcc - toolkit/tstringlist.h - toolkit/tbytevector.h - toolkit/tbytevectorlist.h - toolkit/tbytevectorstream.h - toolkit/tiostream.h - toolkit/tfile.h - toolkit/tfilestream.h - toolkit/tmap.h - toolkit/tmap.tcc - toolkit/tpropertymap.h - mpeg/mpegfile.h - mpeg/mpegproperties.h - mpeg/mpegheader.h - mpeg/xingheader.h - mpeg/id3v1/id3v1tag.h - mpeg/id3v1/id3v1genres.h - mpeg/id3v2/id3v2extendedheader.h - mpeg/id3v2/id3v2frame.h - mpeg/id3v2/id3v2header.h - mpeg/id3v2/id3v2synchdata.h - mpeg/id3v2/id3v2footer.h - mpeg/id3v2/id3v2framefactory.h - mpeg/id3v2/id3v2tag.h - mpeg/id3v2/frames/attachedpictureframe.h - mpeg/id3v2/frames/commentsframe.h - mpeg/id3v2/frames/generalencapsulatedobjectframe.h - mpeg/id3v2/frames/ownershipframe.h - mpeg/id3v2/frames/popularimeterframe.h - mpeg/id3v2/frames/privateframe.h - mpeg/id3v2/frames/relativevolumeframe.h - mpeg/id3v2/frames/textidentificationframe.h - mpeg/id3v2/frames/uniquefileidentifierframe.h - mpeg/id3v2/frames/unknownframe.h - mpeg/id3v2/frames/unsynchronizedlyricsframe.h - mpeg/id3v2/frames/urllinkframe.h - ogg/oggfile.h - ogg/oggpage.h - ogg/oggpageheader.h - ogg/xiphcomment.h - ogg/vorbis/vorbisfile.h - ogg/vorbis/vorbisproperties.h - ogg/flac/oggflacfile.h - ogg/speex/speexfile.h - ogg/speex/speexproperties.h - flac/flacfile.h - flac/flacpicture.h - flac/flacproperties.h - flac/flacmetadatablock.h - ape/apefile.h - ape/apeproperties.h - ape/apetag.h - ape/apefooter.h - ape/apeitem.h - mpc/mpcfile.h - mpc/mpcproperties.h - wavpack/wavpackfile.h - wavpack/wavpackproperties.h - trueaudio/trueaudiofile.h - trueaudio/trueaudioproperties.h - riff/rifffile.h - riff/aiff/aifffile.h - riff/aiff/aiffproperties.h - riff/wav/wavfile.h - riff/wav/wavproperties.h - asf/asffile.h - asf/asfproperties.h - asf/asftag.h - asf/asfattribute.h - asf/asfpicture.h - mp4/mp4file.h - mp4/mp4atom.h - mp4/mp4tag.h - mp4/mp4item.h - mp4/mp4properties.h - mp4/mp4coverart.h - mod/modfilebase.h - mod/modfile.h - mod/modtag.h - mod/modproperties.h - it/itfile.h - it/itproperties.h - s3m/s3mfile.h - s3m/s3mproperties.h - xm/xmfile.h - xm/xmproperties.h -) - -set(mpeg_SRCS - mpeg/mpegfile.cpp - mpeg/mpegproperties.cpp - mpeg/mpegheader.cpp - mpeg/xingheader.cpp -) - -set(id3v1_SRCS - mpeg/id3v1/id3v1tag.cpp - mpeg/id3v1/id3v1genres.cpp -) - -set(id3v2_SRCS - mpeg/id3v2/id3v2framefactory.cpp - mpeg/id3v2/id3v2synchdata.cpp - mpeg/id3v2/id3v2tag.cpp - mpeg/id3v2/id3v2header.cpp - mpeg/id3v2/id3v2frame.cpp - mpeg/id3v2/id3v2footer.cpp - mpeg/id3v2/id3v2extendedheader.cpp - ) - -set(frames_SRCS - mpeg/id3v2/frames/attachedpictureframe.cpp - mpeg/id3v2/frames/commentsframe.cpp - mpeg/id3v2/frames/generalencapsulatedobjectframe.cpp - mpeg/id3v2/frames/ownershipframe.cpp - mpeg/id3v2/frames/popularimeterframe.cpp - mpeg/id3v2/frames/privateframe.cpp - mpeg/id3v2/frames/relativevolumeframe.cpp - mpeg/id3v2/frames/textidentificationframe.cpp - mpeg/id3v2/frames/uniquefileidentifierframe.cpp - mpeg/id3v2/frames/unknownframe.cpp - mpeg/id3v2/frames/unsynchronizedlyricsframe.cpp - mpeg/id3v2/frames/urllinkframe.cpp -) - -set(ogg_SRCS - ogg/oggfile.cpp - ogg/oggpage.cpp - ogg/oggpageheader.cpp - ogg/xiphcomment.cpp -) - -set(vorbis_SRCS - ogg/vorbis/vorbisfile.cpp - ogg/vorbis/vorbisproperties.cpp -) - -set(flacs_SRCS - flac/flacfile.cpp - flac/flacpicture.cpp - flac/flacproperties.cpp - flac/flacmetadatablock.cpp - flac/flacunknownmetadatablock.cpp -) - -set(oggflacs_SRCS - ogg/flac/oggflacfile.cpp -) - -set(mpc_SRCS - mpc/mpcfile.cpp - mpc/mpcproperties.cpp -) - -set(mp4_SRCS - mp4/mp4file.cpp - mp4/mp4atom.cpp - mp4/mp4tag.cpp - mp4/mp4item.cpp - mp4/mp4properties.cpp - mp4/mp4coverart.cpp -) - -set(ape_SRCS - ape/apetag.cpp - ape/apefooter.cpp - ape/apeitem.cpp - ape/apefile.cpp - ape/apeproperties.cpp -) - -set(wavpack_SRCS - wavpack/wavpackfile.cpp - wavpack/wavpackproperties.cpp -) - -set(speex_SRCS - ogg/speex/speexfile.cpp - ogg/speex/speexproperties.cpp -) - -set(trueaudio_SRCS - trueaudio/trueaudiofile.cpp - trueaudio/trueaudioproperties.cpp -) - -set(asf_SRCS - asf/asftag.cpp - asf/asffile.cpp - asf/asfproperties.cpp - asf/asfattribute.cpp - asf/asfpicture.cpp -) - -set(riff_SRCS - riff/rifffile.cpp -) - -set(aiff_SRCS - riff/aiff/aifffile.cpp - riff/aiff/aiffproperties.cpp -) - -set(wav_SRCS - riff/wav/wavfile.cpp - riff/wav/wavproperties.cpp -) - -set(mod_SRCS - mod/modfilebase.cpp - mod/modfile.cpp - mod/modtag.cpp - mod/modproperties.cpp -) - -set(s3m_SRCS - s3m/s3mfile.cpp - s3m/s3mproperties.cpp -) - -set(it_SRCS - it/itfile.cpp - it/itproperties.cpp -) - -set(xm_SRCS - xm/xmfile.cpp - xm/xmproperties.cpp -) - -set(toolkit_SRCS - toolkit/tstring.cpp - toolkit/tstringlist.cpp - toolkit/tbytevector.cpp - toolkit/tbytevectorlist.cpp - toolkit/tbytevectorstream.cpp - toolkit/tiostream.cpp - toolkit/tfile.cpp - toolkit/tfilestream.cpp - toolkit/tdebug.cpp - toolkit/tpropertymap.cpp - toolkit/unicode.cpp -) - -set(tag_LIB_SRCS - ${mpeg_SRCS} ${id3v1_SRCS} ${id3v2_SRCS} ${frames_SRCS} ${ogg_SRCS} - ${vorbis_SRCS} ${oggflacs_SRCS} ${mpc_SRCS} ${ape_SRCS} ${toolkit_SRCS} ${flacs_SRCS} - ${wavpack_SRCS} ${speex_SRCS} ${trueaudio_SRCS} ${riff_SRCS} ${aiff_SRCS} ${wav_SRCS} - ${asf_SRCS} ${mp4_SRCS} ${mod_SRCS} ${s3m_SRCS} ${it_SRCS} ${xm_SRCS} - tag.cpp - tagunion.cpp - fileref.cpp - audioproperties.cpp -) - -add_library(tag ${tag_LIB_SRCS} ${tag_HDRS}) - -if(ZLIB_FOUND) - target_link_libraries(tag ${ZLIB_LIBRARIES}) -endif() - -set_target_properties(tag PROPERTIES - VERSION ${TAGLIB_SOVERSION_MAJOR}.${TAGLIB_SOVERSION_MINOR}.${TAGLIB_SOVERSION_PATCH} - SOVERSION ${TAGLIB_SOVERSION_MAJOR} - INSTALL_NAME_DIR ${LIB_INSTALL_DIR} - DEFINE_SYMBOL MAKE_TAGLIB_LIB - LINK_INTERFACE_LIBRARIES "" - PUBLIC_HEADER "${tag_HDRS}" -) -if(BUILD_FRAMEWORK) - set_target_properties(tag PROPERTIES FRAMEWORK TRUE) -endif() - -install(TARGETS tag - FRAMEWORK DESTINATION ${FRAMEWORK_INSTALL_DIR} - LIBRARY DESTINATION ${LIB_INSTALL_DIR} - RUNTIME DESTINATION ${BIN_INSTALL_DIR} - ARCHIVE DESTINATION ${LIB_INSTALL_DIR} - PUBLIC_HEADER DESTINATION ${INCLUDE_INSTALL_DIR}/taglib -) - diff --git a/platform/win32/msvc/external/taglib/taglib/ape/ape-tag-format.txt b/platform/win32/msvc/external/taglib/taglib/ape/ape-tag-format.txt deleted file mode 100644 index 21ff1c8617d..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ape/ape-tag-format.txt +++ /dev/null @@ -1,170 +0,0 @@ -================================================================================ -= APE Tag Specification, Version 2.000 -================================================================================ - -Original Content (C) 2004, Frank Klemm <frank.klemm@elster.offl.uni-jena.de> -Formatting / Editing (C) 2004, Scott Wheeler <wheeler@kde.org> - -================================================================================ -= Contents -================================================================================ - -1 - APE Tag General Structure -2 - APE Tag Header / Footer Format -3 - APE Tag Flags -4 - APE Tag Item Format -5 - APE Tag Item Supported Keys -6 - APE Tag Item Content -7 - Data Types -7.1 - Data Types / UTF-8 -7.2 - Data Types / Dates -7.3 - Data Types / Timestamps - -================================================================================ -= 1 - APE Tag General Structure -================================================================================ - -Member of Basic Components of SV8 Stream Note: - -It is strongly recommended that the data size be stored in the tags. The size -should normally be in the roughly one kilobyte, never more than 8 kilobytes. - -Larger data should be stored externally using link entries. Linked data is much -easier to process by normal programs, so for instance JPEG data should not be -included inside the audio file. - -APE Tag Version 2.000 (with header, recommended): - -/================================\ -| APE Tag Header | 32 bytes | -|-------------------|------------| -| APE Tag Item 1 | > 10 bytes | -| APE Tag Item 2 | > 10 bytes | -| APE Tag Item n-1 | > 10 bytes | -| APE Tag Item n | > 10 bytes | -|-------------------|------------| -| APE Tag Footer | 32 bytes | -\================================/ - - -APE tag items should be sorted ascending by size. When streaming, parts of the -APE tag may be dropped to reduce the danger of drop outs between tracks. This -is not required, but is strongly recommended. It would be desirable for the i -tems to be sorted by importance / size, but this is not feasible. This -convention should only be broken when adding less important small items and it -is not desirable to rewrite the entire tag. An APE tag at the end of a file -(the recommended location) must have at least a footer; an APE tag at the -beginning of a file (strongly discouraged) must have at least a header. - -APE Tag Version 1.000 (without header, deprecated) - -/================================\ -| APE Tag Item 1 | > 10 bytes | -| APE Tag Item 2 | > 10 bytes | -| APE Tag Item n-1 | > 10 bytes | -| APE Tag Item n | > 10 bytes | -|-------------------|------------| -| APE Tag Footer | 32 bytes | -\================================/ - -================================================================================ -= 2 - APE Tag Header / Footer Format -================================================================================ - -Contains number, length and attributes of all tag items - -Header and Footer are different in 1 bit in the Tags Flags to distinguish -between them. - -Member of APE Tag 2.0 - -/===========================================================================\ -| Preamble | 8 bytes | { 'A', 'P', 'E', 'T', 'A', 'G', 'E', 'X' } | -|----------------|---------|------------------------------------------------| -| Version Number | 4 bytes | 1000 = Version 1.000, 2000 = Version 2.000 | -|----------------|---------|------------------------------------------------| -| Tag Size | 4 bytes | Tag size in bytes including footer and all tag | -| | | items excluding the header (for 1.000 | -| | | compatibility) | -|----------------|---------|------------------------------------------------| -| Item Count | 4 bytes | Number of items in the tag | -|----------------|---------|------------------------------------------------| -| Tag Flags | 4 bytes | Global flags | -|----------------|---------|------------------------------------------------| -| Reserved | 8 bytes | Must be zeroed | -\===========================================================================/ - -================================================================================ -= 3 - APE Tag Flags -================================================================================ - -The general flag structure for either items or headers / footers is the same. -Bits 31, 30 and 29 are specific to headers / footers, whereas 2 through 0 are -item specific. - -Note: APE Tags from Version 1.0 do not use any of the following. All flags in -that version are zeroed and ignored when reading. - -/=================================================================\ -| Contains Header | Bit 31 | 1 - has header | 0 - no header | -|-----------------|-------------|---------------------------------| -| Contains Footer | Bit 30 | 1 - has footer | 0 - no footer | -|-----------------|-------------|---------------------------------| -| Is Header | Bit 29 | 1 - is header | 0 - is footer | -|-----------------|-------------|---------------------------------| -| Undefined | Bits 28 - 3 | Undefined, must be zeroed | -|-----------------|-------------|---------------------------------| -| Encoding | Bits 2 - 1 | 00 - UTF-8 | -| | | 01 - Binary Data * | -| | | 10 - External Reference ** | -| | | 11 - Reserved | -|-----------------|-------------|---------------------------------| -| Read Only | Bit 0 | 1 - read only | 0 - read/write | -\=================================================================/ - - (*) Should be ignored by tools for editing text values -(**) Allowed external reference formats: - - http://host/directory/filename.ext - - ftp://host/directory/filename.ext - - filename.ext - - /directory/filename.ext - - DRIVE:/directory/filename.ext - - Note: External references are also UTF-8 encoded. - -================================================================================ -= 4 - APE Tag Item Format -================================================================================ - -APE Tag Items are stored as key-value pairs. APE Tags Item Key are case -sensitive, however it is illegal to use keys which only differ in case and -it is recommended that tag reading not be case sensitive. - -Every key can only occur (at most) once. It is not possible to repeat a key -to signify updated contents. - -Tags can be partially or completely repeated in the streaming format. This -makes it possible to display an artist and / or title if it was missed at the -beginning of the stream. It is recommended that the important information like -artist, album and title should occur approximately every 2 minutes in the -stream and again 5 to 10 seconds before the end. However, care should be tak -en not to replicate this information too often or during passages with high -bitrate demands to avoid unnecessary drop-outs. - -/==============================================================================\ -| Content Size | 4 bytes | Length of the value in bytes | -|----------------|---------------|---------------------------------------------| -| Flags | 4 bytes | Item flags | -|----------------|---------------|---------------------------------------------| -| Key | 2 - 255 bytes | Item key | -|----------------|---------------|---------------------------------------------| -| Key Terminator | 1 byte | Null byte that indicates the end of the key | -|----------------|---------------|---------------------------------------------| -| Value | variable | Content (formatted according to the flags) | -\==============================================================================/ - -================================================================================ - -Sections 5 - 7 haven't yet been converted from: - -http://www.personal.uni-jena.de/~pfk/mpp/sv8/apetag.html diff --git a/platform/win32/msvc/external/taglib/taglib/ape/apefile.cpp b/platform/win32/msvc/external/taglib/taglib/ape/apefile.cpp deleted file mode 100644 index cb652242743..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ape/apefile.cpp +++ /dev/null @@ -1,305 +0,0 @@ -/*************************************************************************** - copyright : (C) 2010 by Alex Novichkov - email : novichko@atnet.ru - - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - (original WavPack implementation) - - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - (original MPC implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tbytevector.h> -#include <tstring.h> -#include <tdebug.h> -#include <tagunion.h> -#include <id3v1tag.h> -#include <tpropertymap.h> - -#include "apefile.h" - -#include "apetag.h" -#include "apefooter.h" - -using namespace TagLib; - -namespace -{ - enum { ApeAPEIndex, ApeID3v1Index }; -} - -class APE::File::FilePrivate -{ -public: - FilePrivate() : - APELocation(-1), - APESize(0), - ID3v1Location(-1), - properties(0), - hasAPE(false), - hasID3v1(false) {} - - ~FilePrivate() - { - delete properties; - } - - long APELocation; - uint APESize; - - long ID3v1Location; - - TagUnion tag; - - Properties *properties; - - // These indicate whether the file *on disk* has these tags, not if - // this data structure does. This is used in computing offsets. - - bool hasAPE; - bool hasID3v1; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -APE::File::File(FileName file, bool readProperties, - Properties::ReadStyle propertiesStyle) : TagLib::File(file) -{ - d = new FilePrivate; - read(readProperties, propertiesStyle); -} - -APE::File::File(IOStream *stream, bool readProperties, - Properties::ReadStyle propertiesStyle) : TagLib::File(stream) -{ - d = new FilePrivate; - read(readProperties, propertiesStyle); -} - -APE::File::~File() -{ - delete d; -} - -TagLib::Tag *APE::File::tag() const -{ - return &d->tag; -} - -PropertyMap APE::File::properties() const -{ - if(d->hasAPE) - return d->tag.access<APE::Tag>(ApeAPEIndex, false)->properties(); - if(d->hasID3v1) - return d->tag.access<ID3v1::Tag>(ApeID3v1Index, false)->properties(); - return PropertyMap(); -} - -void APE::File::removeUnsupportedProperties(const StringList &properties) -{ - if(d->hasAPE) - d->tag.access<APE::Tag>(ApeAPEIndex, false)->removeUnsupportedProperties(properties); - if(d->hasID3v1) - d->tag.access<ID3v1::Tag>(ApeID3v1Index, false)->removeUnsupportedProperties(properties); -} - -PropertyMap APE::File::setProperties(const PropertyMap &properties) -{ - if(d->hasAPE) - return d->tag.access<APE::Tag>(ApeAPEIndex, false)->setProperties(properties); - else if(d->hasID3v1) - return d->tag.access<ID3v1::Tag>(ApeID3v1Index, false)->setProperties(properties); - else - return d->tag.access<APE::Tag>(ApeAPEIndex, true)->setProperties(properties); -} - -APE::Properties *APE::File::audioProperties() const -{ - return d->properties; -} - -bool APE::File::save() -{ - if(readOnly()) { - debug("APE::File::save() -- File is read only."); - return false; - } - - // Update ID3v1 tag - - if(ID3v1Tag()) { - if(d->hasID3v1) { - seek(d->ID3v1Location); - writeBlock(ID3v1Tag()->render()); - } - else { - seek(0, End); - d->ID3v1Location = tell(); - writeBlock(ID3v1Tag()->render()); - d->hasID3v1 = true; - } - } - else { - if(d->hasID3v1) { - removeBlock(d->ID3v1Location, 128); - d->hasID3v1 = false; - if(d->hasAPE) { - if(d->APELocation > d->ID3v1Location) - d->APELocation -= 128; - } - } - } - - // Update APE tag - - if(APETag()) { - if(d->hasAPE) - insert(APETag()->render(), d->APELocation, d->APESize); - else { - if(d->hasID3v1) { - insert(APETag()->render(), d->ID3v1Location, 0); - d->APESize = APETag()->footer()->completeTagSize(); - d->hasAPE = true; - d->APELocation = d->ID3v1Location; - d->ID3v1Location += d->APESize; - } - else { - seek(0, End); - d->APELocation = tell(); - writeBlock(APETag()->render()); - d->APESize = APETag()->footer()->completeTagSize(); - d->hasAPE = true; - } - } - } - else { - if(d->hasAPE) { - removeBlock(d->APELocation, d->APESize); - d->hasAPE = false; - if(d->hasID3v1) { - if(d->ID3v1Location > d->APELocation) { - d->ID3v1Location -= d->APESize; - } - } - } - } - - return true; -} - -ID3v1::Tag *APE::File::ID3v1Tag(bool create) -{ - return d->tag.access<ID3v1::Tag>(ApeID3v1Index, create); -} - -APE::Tag *APE::File::APETag(bool create) -{ - return d->tag.access<APE::Tag>(ApeAPEIndex, create); -} - -void APE::File::strip(int tags) -{ - if(tags & ID3v1) { - d->tag.set(ApeID3v1Index, 0); - APETag(true); - } - - if(tags & APE) { - d->tag.set(ApeAPEIndex, 0); - - if(!ID3v1Tag()) - APETag(true); - } -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void APE::File::read(bool readProperties, Properties::ReadStyle /* propertiesStyle */) -{ - // Look for an ID3v1 tag - - d->ID3v1Location = findID3v1(); - - if(d->ID3v1Location >= 0) { - d->tag.set(ApeID3v1Index, new ID3v1::Tag(this, d->ID3v1Location)); - d->hasID3v1 = true; - } - - // Look for an APE tag - - d->APELocation = findAPE(); - - if(d->APELocation >= 0) { - d->tag.set(ApeAPEIndex, new APE::Tag(this, d->APELocation)); - d->APESize = APETag()->footer()->completeTagSize(); - d->APELocation = d->APELocation + APETag()->footer()->size() - d->APESize; - d->hasAPE = true; - } - - if(!d->hasID3v1) - APETag(true); - - // Look for APE audio properties - - if(readProperties) { - d->properties = new Properties(this); - } -} - -long APE::File::findAPE() -{ - if(!isValid()) - return -1; - - if(d->hasID3v1) - seek(-160, End); - else - seek(-32, End); - - long p = tell(); - - if(readBlock(8) == APE::Tag::fileIdentifier()) - return p; - - return -1; -} - -long APE::File::findID3v1() -{ - if(!isValid()) - return -1; - - seek(-128, End); - long p = tell(); - - if(readBlock(3) == ID3v1::Tag::fileIdentifier()) - return p; - - return -1; -} diff --git a/platform/win32/msvc/external/taglib/taglib/ape/apefile.h b/platform/win32/msvc/external/taglib/taglib/ape/apefile.h deleted file mode 100644 index 8b187f6a63c..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ape/apefile.h +++ /dev/null @@ -1,201 +0,0 @@ -/*************************************************************************** - copyright : (C) 2010 by Alex Novichkov - email : novichko@atnet.ru - - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - (original WavPack implementation) - - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - (original MPC implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_APEFILE_H -#define TAGLIB_APEFILE_H - -#include "tfile.h" -#include "taglib_export.h" -#include "apeproperties.h" - -namespace TagLib { - - class Tag; - - namespace ID3v1 { class Tag; } - namespace APE { class Tag; } - - //! An implementation of APE metadata - - /*! - * This is implementation of APE metadata. - * - * This supports ID3v1 and APE (v1 and v2) style comments as well as reading stream - * properties from the file. - */ - - namespace APE { - - //! An implementation of TagLib::File with APE specific methods - - /*! - * This implements and provides an interface APE WavPack files to the - * TagLib::Tag and TagLib::AudioProperties interfaces by way of implementing - * the abstract TagLib::File API as well as providing some additional - * information specific to APE files. - */ - - class TAGLIB_EXPORT File : public TagLib::File - { - public: - /*! - * This set of flags is used for various operations and is suitable for - * being OR-ed together. - */ - enum TagTypes { - //! Empty set. Matches no tag types. - NoTags = 0x0000, - //! Matches ID3v1 tags. - ID3v1 = 0x0001, - //! Matches APE tags. - APE = 0x0002, - //! Matches all tag types. - AllTags = 0xffff - }; - - /*! - * Contructs an WavPack file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - */ - File(FileName file, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Contructs an WavPack file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - */ - File(IOStream *stream, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Destroys this instance of the File. - */ - virtual ~File(); - - /*! - * Returns the Tag for this file. This will be an APE tag, an ID3v1 tag - * or a combination of the two. - */ - virtual TagLib::Tag *tag() const; - - /*! - * Implements the unified property interface -- export function. - * If the file contains both an APE and an ID3v1 tag, only APE - * will be converted to the PropertyMap. - */ - PropertyMap properties() const; - - /*! - * Removes unsupported properties. Forwards to the actual Tag's - * removeUnsupportedProperties() function. - */ - void removeUnsupportedProperties(const StringList &properties); - - /*! - * Implements the unified property interface -- import function. - * As for the export, only one tag is taken into account. If the file - * has no tag at all, APE will be created. - */ - PropertyMap setProperties(const PropertyMap &); - /*! - * Returns the APE::Properties for this file. If no audio properties - * were read then this will return a null pointer. - */ - virtual Properties *audioProperties() const; - - /*! - * Saves the file. - * - * \note According to the official Monkey's Audio SDK, an APE file - * can only have either ID3V1 or APE tags, so a parameter is used here. - */ - virtual bool save(); - - /*! - * Returns a pointer to the ID3v1 tag of the file. - * - * If \a create is false (the default) this will return a null pointer - * if there is no valid ID3v1 tag. If \a create is true it will create - * an ID3v1 tag if one does not exist. If there is already an APE tag, the - * new ID3v1 tag will be placed after it. - * - * \note The Tag <b>is still</b> owned by the APE::File and should not be - * deleted by the user. It will be deleted when the file (object) is - * destroyed. - */ - ID3v1::Tag *ID3v1Tag(bool create = false); - - /*! - * Returns a pointer to the APE tag of the file. - * - * If \a create is false (the default) this will return a null pointer - * if there is no valid APE tag. If \a create is true it will create - * a APE tag if one does not exist. - * - * \note The Tag <b>is still</b> owned by the APE::File and should not be - * deleted by the user. It will be deleted when the file (object) is - * destroyed. - */ - APE::Tag *APETag(bool create = false); - - /*! - * This will remove the tags that match the OR-ed together TagTypes from the - * file. By default it removes all tags. - * - * \note This will also invalidate pointers to the tags - * as their memory will be freed. - * \note In order to make the removal permanent save() still needs to be called - */ - void strip(int tags = AllTags); - - private: - File(const File &); - File &operator=(const File &); - - void read(bool readProperties, Properties::ReadStyle propertiesStyle); - void scan(); - long findID3v1(); - long findAPE(); - - class FilePrivate; - FilePrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/ape/apefooter.cpp b/platform/win32/msvc/external/taglib/taglib/ape/apefooter.cpp deleted file mode 100644 index 68864901686..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ape/apefooter.cpp +++ /dev/null @@ -1,236 +0,0 @@ -/*************************************************************************** - copyright : (C) 2004 by Allan Sandfeld Jensen - (C) 2002 - 2008 by Scott Wheeler (id3v2header.cpp) - email : kde@carewolf.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <iostream> -#include <bitset> - -#include <tstring.h> -#include <tdebug.h> - -#include "apefooter.h" - -using namespace TagLib; -using namespace APE; - -class APE::Footer::FooterPrivate -{ -public: - FooterPrivate() : version(0), - footerPresent(true), - headerPresent(false), - isHeader(false), - itemCount(0), - tagSize(0) {} - - ~FooterPrivate() {} - - uint version; - - bool footerPresent; - bool headerPresent; - - bool isHeader; - - uint itemCount; - uint tagSize; - - static const uint size = 32; -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -TagLib::uint APE::Footer::size() -{ - return FooterPrivate::size; -} - -ByteVector APE::Footer::fileIdentifier() -{ - return ByteVector::fromCString("APETAGEX"); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -APE::Footer::Footer() -{ - d = new FooterPrivate; -} - -APE::Footer::Footer(const ByteVector &data) -{ - d = new FooterPrivate; - parse(data); -} - -APE::Footer::~Footer() -{ - delete d; -} - -TagLib::uint APE::Footer::version() const -{ - return d->version; -} - -bool APE::Footer::headerPresent() const -{ - return d->headerPresent; -} - -bool APE::Footer::footerPresent() const -{ - return d->footerPresent; -} - -bool APE::Footer::isHeader() const -{ - return d->isHeader; -} - -void APE::Footer::setHeaderPresent(bool b) const -{ - d->headerPresent = b; -} - -TagLib::uint APE::Footer::itemCount() const -{ - return d->itemCount; -} - -void APE::Footer::setItemCount(uint s) -{ - d->itemCount = s; -} - -TagLib::uint APE::Footer::tagSize() const -{ - return d->tagSize; -} - -TagLib::uint APE::Footer::completeTagSize() const -{ - if(d->headerPresent) - return d->tagSize + d->size; - else - return d->tagSize; -} - -void APE::Footer::setTagSize(uint s) -{ - d->tagSize = s; -} - -void APE::Footer::setData(const ByteVector &data) -{ - parse(data); -} - -ByteVector APE::Footer::renderFooter() const -{ - return render(false); -} - -ByteVector APE::Footer::renderHeader() const -{ - if (!d->headerPresent) return ByteVector(); - - return render(true); -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void APE::Footer::parse(const ByteVector &data) -{ - if(data.size() < size()) - return; - - // The first eight bytes, data[0..7], are the File Identifier, "APETAGEX". - - // Read the version number - - d->version = data.mid(8, 4).toUInt(false); - - // Read the tag size - - d->tagSize = data.mid(12, 4).toUInt(false); - - // Read the item count - - d->itemCount = data.mid(16, 4).toUInt(false); - - // Read the flags - - std::bitset<32> flags(TAGLIB_CONSTRUCT_BITSET(data.mid(20, 4).toUInt(false))); - - d->headerPresent = flags[31]; - d->footerPresent = !flags[30]; - d->isHeader = flags[29]; - -} - -ByteVector APE::Footer::render(bool isHeader) const -{ - ByteVector v; - - // add the file identifier -- "APETAGEX" - - v.append(fileIdentifier()); - - // add the version number -- we always render a 2.000 tag regardless of what - // the tag originally was. - - v.append(ByteVector::fromUInt(2000, false)); - - // add the tag size - - v.append(ByteVector::fromUInt(d->tagSize, false)); - - // add the item count - - v.append(ByteVector::fromUInt(d->itemCount, false)); - - // render and add the flags - - std::bitset<32> flags; - - flags[31] = d->headerPresent; - flags[30] = false; // footer is always present - flags[29] = isHeader; - - v.append(ByteVector::fromUInt(flags.to_ulong(), false)); - - // add the reserved 64bit - - v.append(ByteVector::fromLongLong(0)); - - return v; -} diff --git a/platform/win32/msvc/external/taglib/taglib/ape/apefooter.h b/platform/win32/msvc/external/taglib/taglib/ape/apefooter.h deleted file mode 100644 index 080f93006eb..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ape/apefooter.h +++ /dev/null @@ -1,173 +0,0 @@ -/*************************************************************************** - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_APEFOOTER_H -#define TAGLIB_APEFOOTER_H - -#include "tbytevector.h" -#include "taglib_export.h" - -namespace TagLib { - - namespace APE { - - //! An implementation of APE footers - - /*! - * This class implements APE footers (and headers). It attempts to follow, both - * semantically and programatically, the structure specified in - * the APE v2.0 standard. The API is based on the properties of APE footer and - * headers specified there. - */ - - class TAGLIB_EXPORT Footer - { - public: - /*! - * Constructs an empty APE footer. - */ - Footer(); - - /*! - * Constructs an APE footer based on \a data. parse() is called - * immediately. - */ - Footer(const ByteVector &data); - - /*! - * Destroys the footer. - */ - virtual ~Footer(); - - /*! - * Returns the version number. (Note: This is the 1000 or 2000.) - */ - uint version() const; - - /*! - * Returns true if a header is present in the tag. - */ - bool headerPresent() const; - - /*! - * Returns true if a footer is present in the tag. - */ - bool footerPresent() const; - - /*! - * Returns true this is actually the header. - */ - bool isHeader() const; - - /*! - * Sets whether the header should be rendered or not - */ - void setHeaderPresent(bool b) const; - - /*! - * Returns the number of items in the tag. - */ - uint itemCount() const; - - /*! - * Set the item count to \a s. - * \see itemCount() - */ - void setItemCount(uint s); - - /*! - * Returns the tag size in bytes. This is the size of the frame content and footer. - * The size of the \e entire tag will be this plus the header size, if present. - * - * \see completeTagSize() - */ - uint tagSize() const; - - /*! - * Returns the tag size, including if present, the header - * size. - * - * \see tagSize() - */ - uint completeTagSize() const; - - /*! - * Set the tag size to \a s. - * \see tagSize() - */ - void setTagSize(uint s); - - /*! - * Returns the size of the footer. Presently this is always 32 bytes. - */ - static uint size(); - - /*! - * Returns the string used to identify an APE tag inside of a file. - * Presently this is always "APETAGEX". - */ - static ByteVector fileIdentifier(); - - /*! - * Sets the data that will be used as the footer. 32 bytes, - * starting from \a data will be used. - */ - void setData(const ByteVector &data); - - /*! - * Renders the footer back to binary format. - */ - ByteVector renderFooter() const; - - /*! - * Renders the header corresponding to the footer. If headerPresent is - * set to false, it returns an empty ByteVector. - */ - ByteVector renderHeader() const; - - protected: - /*! - * Called by setData() to parse the footer data. It makes this information - * available through the public API. - */ - void parse(const ByteVector &data); - - /*! - * Called by renderFooter and renderHeader - */ - ByteVector render(bool isHeader) const; - - private: - Footer(const Footer &); - Footer &operator=(const Footer &); - - class FooterPrivate; - FooterPrivate *d; - }; - - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/ape/apeitem.cpp b/platform/win32/msvc/external/taglib/taglib/ape/apeitem.cpp deleted file mode 100644 index 9d9647ec3d7..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ape/apeitem.cpp +++ /dev/null @@ -1,276 +0,0 @@ -/*************************************************************************** - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tbytevectorlist.h> -#include <tdebug.h> - -#include "apeitem.h" - -using namespace TagLib; -using namespace APE; - -class APE::Item::ItemPrivate -{ -public: - ItemPrivate() : type(Text), readOnly(false) {} - - Item::ItemTypes type; - String key; - ByteVector value; - StringList text; - bool readOnly; -}; - -APE::Item::Item() -{ - d = new ItemPrivate; -} - -APE::Item::Item(const String &key, const String &value) -{ - d = new ItemPrivate; - d->key = key; - d->text.append(value); -} - -APE::Item::Item(const String &key, const StringList &values) -{ - d = new ItemPrivate; - d->key = key; - d->text = values; -} - -APE::Item::Item(const String &key, const ByteVector &value, bool binary) -{ - d = new ItemPrivate; - d->key = key; - if(binary) { - d->type = Binary; - d->value = value; - } - else - d->text.append(value); -} - -APE::Item::Item(const Item &item) -{ - d = new ItemPrivate(*item.d); -} - -APE::Item::~Item() -{ - delete d; -} - -Item &APE::Item::operator=(const Item &item) -{ - delete d; - d = new ItemPrivate(*item.d); - return *this; -} - -void APE::Item::setReadOnly(bool readOnly) -{ - d->readOnly = readOnly; -} - -bool APE::Item::isReadOnly() const -{ - return d->readOnly; -} - -void APE::Item::setType(APE::Item::ItemTypes val) -{ - d->type = val; -} - -APE::Item::ItemTypes APE::Item::type() const -{ - return d->type; -} - -String APE::Item::key() const -{ - return d->key; -} - -ByteVector APE::Item::binaryData() const -{ - return d->value; -} - -void APE::Item::setBinaryData(const ByteVector &value) -{ - d->type = Binary; - d->value = value; -} - -ByteVector APE::Item::value() const -{ - // This seems incorrect as it won't be actually rendering the value to keep it - // up to date. - - return d->value; -} - -void APE::Item::setKey(const String &key) -{ - d->key = key; -} - -void APE::Item::setValue(const String &value) -{ - d->type = Text; - d->text = value; -} - -void APE::Item::setValues(const StringList &value) -{ - d->type = Text; - d->text = value; -} - -void APE::Item::appendValue(const String &value) -{ - d->type = Text; - d->text.append(value); -} - -void APE::Item::appendValues(const StringList &values) -{ - d->type = Text; - d->text.append(values); -} - -int APE::Item::size() const -{ - // SFB: Why is d->key.size() used when size() returns the length in UniChars and not UTF-8? - int result = 8 + d->key.size() /* d->key.data(String::UTF8).size() */ + 1; - switch (d->type) { - case Text: - if(d->text.size()) { - StringList::ConstIterator it = d->text.begin(); - - result += it->data(String::UTF8).size(); - it++; - for(; it != d->text.end(); ++it) - result += 1 + it->data(String::UTF8).size(); - } - break; - - case Binary: - case Locator: - result += d->value.size(); - break; - } - return result; -} - -StringList APE::Item::toStringList() const -{ - return d->text; -} - -StringList APE::Item::values() const -{ - return d->text; -} - -String APE::Item::toString() const -{ - return isEmpty() ? String::null : d->text.front(); -} - -bool APE::Item::isEmpty() const -{ - switch(d->type) { - case Text: - if(d->text.isEmpty()) - return true; - if(d->text.size() == 1 && d->text.front().isEmpty()) - return true; - return false; - case Binary: - case Locator: - return d->value.isEmpty(); - default: - return false; - } -} - -void APE::Item::parse(const ByteVector &data) -{ - // 11 bytes is the minimum size for an APE item - - if(data.size() < 11) { - debug("APE::Item::parse() -- no data in item"); - return; - } - - uint valueLength = data.mid(0, 4).toUInt(false); - uint flags = data.mid(4, 4).toUInt(false); - - d->key = String(data.mid(8), String::UTF8); - - d->value = data.mid(8 + d->key.size() + 1, valueLength); - - setReadOnly(flags & 1); - setType(ItemTypes((flags >> 1) & 3)); - - if(Text == d->type) - d->text = StringList(ByteVectorList::split(d->value, '\0'), String::UTF8); -} - -ByteVector APE::Item::render() const -{ - ByteVector data; - TagLib::uint flags = ((d->readOnly) ? 1 : 0) | (d->type << 1); - ByteVector value; - - if(isEmpty()) - return data; - - if(d->type == Text) { - StringList::ConstIterator it = d->text.begin(); - - value.append(it->data(String::UTF8)); - it++; - for(; it != d->text.end(); ++it) { - value.append('\0'); - value.append(it->data(String::UTF8)); - } - d->value = value; - } - else - value.append(d->value); - - data.append(ByteVector::fromUInt(value.size(), false)); - data.append(ByteVector::fromUInt(flags, false)); - data.append(d->key.data(String::UTF8)); - data.append(ByteVector('\0')); - data.append(value); - - return data; -} diff --git a/platform/win32/msvc/external/taglib/taglib/ape/apeitem.h b/platform/win32/msvc/external/taglib/taglib/ape/apeitem.h deleted file mode 100644 index f7fd05e3cbe..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ape/apeitem.h +++ /dev/null @@ -1,217 +0,0 @@ -/*************************************************************************** - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_APEITEM_H -#define TAGLIB_APEITEM_H - -#include "tbytevector.h" -#include "tstring.h" -#include "tstringlist.h" - -namespace TagLib { - - namespace APE { - - //! An implementation of APE-items - - /*! - * This class provides the features of items in the APEv2 standard. - */ - class TAGLIB_EXPORT Item - { - public: - /*! - * Enum of types an Item can have. The value of 3 is reserved. - */ - enum ItemTypes { - //! Item contains text information coded in UTF-8 - Text = 0, - //! Item contains binary information - Binary = 1, - //! Item is a locator of external stored information - Locator = 2 - }; - /*! - * Constructs an empty item. - */ - Item(); - - /*! - * Constructs a text item with \a key and \a value. - */ - // BIC: Remove this, StringList has a constructor from a single string - Item(const String &key, const String &value); - - /*! - * Constructs a text item with \a key and \a values. - */ - Item(const String &key, const StringList &values); - - /*! - * Constructs an item with \a key and \a value. - * If \a binary is true a Binary item will be created, otherwise \a value will be interpreted as text - */ - Item(const String &key, const ByteVector &value, bool binary); - - /*! - * Construct an item as a copy of \a item. - */ - Item(const Item &item); - - /*! - * Destroys the item. - */ - virtual ~Item(); - - /*! - * Copies the contents of \a item into this item. - */ - Item &operator=(const Item &item); - - /*! - * Returns the key. - */ - String key() const; - - /*! - * Returns the binary value. - * If the item type is not \a Binary, the returned contents are undefined - */ - ByteVector binaryData() const; - - /*! - * Set the binary value to \a value - * The item's type will also be set to \a Binary - */ - void setBinaryData(const ByteVector &value); - -#ifndef DO_NOT_DOCUMENT - /* Remove in next binary incompatible release */ - ByteVector value() const; -#endif - - /*! - * Sets the key for the item to \a key. - */ - void setKey(const String &key); - - /*! - * Sets the text value of the item to \a value and clears any previous contents. - * - * \see toString() - */ - void setValue(const String &value); - - /*! - * Sets the text value of the item to the list of values in \a value and clears - * any previous contents. - * - * \see toStringList() - */ - void setValues(const StringList &values); - - /*! - * Appends \a value to create (or extend) the current list of text values. - * - * \see toString() - */ - void appendValue(const String &value); - - /*! - * Appends \a values to extend the current list of text values. - * - * \see toStringList() - */ - void appendValues(const StringList &values); - - /*! - * Returns the size of the full item. - */ - int size() const; - - /*! - * Returns the value as a single string. In case of multiple strings, - * the first is returned. - */ - String toString() const; - -#ifndef DO_NOT_DOCUMENT - /* Remove in next binary incompatible release */ - StringList toStringList() const; -#endif - - /*! - * Returns the list of text values. - */ - StringList values() const; - - /*! - * Render the item to a ByteVector. - */ - ByteVector render() const; - - /*! - * Parse the item from the ByteVector \a data. - */ - void parse(const ByteVector& data); - - /*! - * Set the item to read-only. - */ - void setReadOnly(bool readOnly); - - /*! - * Return true if the item is read-only. - */ - bool isReadOnly() const; - - /*! - * Sets the type of the item to \a type. - * - * \see ItemTypes - */ - void setType(ItemTypes type); - - /*! - * Returns the type of the item. - */ - ItemTypes type() const; - - /*! - * Returns if the item has any real content. - */ - bool isEmpty() const; - - private: - class ItemPrivate; - ItemPrivate *d; - }; - } - -} - -#endif - - diff --git a/platform/win32/msvc/external/taglib/taglib/ape/apeproperties.cpp b/platform/win32/msvc/external/taglib/taglib/ape/apeproperties.cpp deleted file mode 100644 index b4fcec6add6..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ape/apeproperties.cpp +++ /dev/null @@ -1,231 +0,0 @@ -/*************************************************************************** - copyright : (C) 2010 by Alex Novichkov - email : novichko@atnet.ru - - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - (original WavPack implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tstring.h> -#include <tdebug.h> -#include <bitset> -#include "id3v2tag.h" -#include "apeproperties.h" -#include "apefile.h" - -using namespace TagLib; - -class APE::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate(File *file, long streamLength) : - length(0), - bitrate(0), - sampleRate(0), - channels(0), - version(0), - bitsPerSample(0), - sampleFrames(0), - file(file), - streamLength(streamLength) {} - - int length; - int bitrate; - int sampleRate; - int channels; - int version; - int bitsPerSample; - uint sampleFrames; - File *file; - long streamLength; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -APE::Properties::Properties(File *file, ReadStyle style) : AudioProperties(style) -{ - d = new PropertiesPrivate(file, file->length()); - read(); -} - -APE::Properties::~Properties() -{ - delete d; -} - -int APE::Properties::length() const -{ - return d->length; -} - -int APE::Properties::bitrate() const -{ - return d->bitrate; -} - -int APE::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int APE::Properties::channels() const -{ - return d->channels; -} - -int APE::Properties::version() const -{ - return d->version; -} - -int APE::Properties::bitsPerSample() const -{ - return d->bitsPerSample; -} - -TagLib::uint APE::Properties::sampleFrames() const -{ - return d->sampleFrames; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - - -void APE::Properties::read() -{ - // First we are searching the descriptor - long offset = findDescriptor(); - if(offset < 0) - return; - - // Then we read the header common for all versions of APE - d->file->seek(offset); - ByteVector commonHeader=d->file->readBlock(6); - if(!commonHeader.startsWith("MAC ")) - return; - d->version = commonHeader.mid(4).toUInt(false); - - if(d->version >= 3980) { - analyzeCurrent(); - } - else { - analyzeOld(); - } -} - -long APE::Properties::findDescriptor() -{ - long ID3v2Location = findID3v2(); - long ID3v2OriginalSize = 0; - bool hasID3v2 = false; - if(ID3v2Location >= 0) { - ID3v2::Tag tag(d->file, ID3v2Location); - ID3v2OriginalSize = tag.header()->completeTagSize(); - if(tag.header()->tagSize() > 0) - hasID3v2 = true; - } - - long offset = 0; - if(hasID3v2) - offset = d->file->find("MAC ", ID3v2Location + ID3v2OriginalSize); - else - offset = d->file->find("MAC "); - - if(offset < 0) { - debug("APE::Properties::findDescriptor() -- APE descriptor not found"); - return -1; - } - - return offset; -} - -long APE::Properties::findID3v2() -{ - if(!d->file->isValid()) - return -1; - - d->file->seek(0); - - if(d->file->readBlock(3) == ID3v2::Header::fileIdentifier()) - return 0; - - return -1; -} - -void APE::Properties::analyzeCurrent() -{ - // Read the descriptor - d->file->seek(2, File::Current); - ByteVector descriptor = d->file->readBlock(44); - uint descriptorBytes = descriptor.mid(0,4).toUInt(false); - - if ((descriptorBytes - 52) > 0) - d->file->seek(descriptorBytes - 52, File::Current); - - // Read the header - ByteVector header = d->file->readBlock(24); - - // Get the APE info - d->channels = header.mid(18, 2).toShort(false); - d->sampleRate = header.mid(20, 4).toUInt(false); - d->bitsPerSample = header.mid(16, 2).toShort(false); - //d->compressionLevel = - - uint totalFrames = header.mid(12, 4).toUInt(false); - uint blocksPerFrame = header.mid(4, 4).toUInt(false); - uint finalFrameBlocks = header.mid(8, 4).toUInt(false); - d->sampleFrames = totalFrames > 0 ? (totalFrames - 1) * blocksPerFrame + finalFrameBlocks : 0; - d->length = d->sampleRate > 0 ? d->sampleFrames / d->sampleRate : 0; - d->bitrate = d->length > 0 ? ((d->streamLength * 8L) / d->length) / 1000 : 0; -} - -void APE::Properties::analyzeOld() -{ - ByteVector header = d->file->readBlock(26); - uint totalFrames = header.mid(18, 4).toUInt(false); - - // Fail on 0 length APE files (catches non-finalized APE files) - if(totalFrames == 0) - return; - - short compressionLevel = header.mid(0, 2).toShort(false); - uint blocksPerFrame; - if(d->version >= 3950) - blocksPerFrame = 73728 * 4; - else if(d->version >= 3900 || (d->version >= 3800 && compressionLevel == 4000)) - blocksPerFrame = 73728; - else - blocksPerFrame = 9216; - d->channels = header.mid(4, 2).toShort(false); - d->sampleRate = header.mid(6, 4).toUInt(false); - uint finalFrameBlocks = header.mid(22, 4).toUInt(false); - uint totalBlocks = totalFrames > 0 ? (totalFrames - 1) * blocksPerFrame + finalFrameBlocks : 0; - d->length = totalBlocks / d->sampleRate; - d->bitrate = d->length > 0 ? ((d->streamLength * 8L) / d->length) / 1000 : 0; -} - diff --git a/platform/win32/msvc/external/taglib/taglib/ape/apeproperties.h b/platform/win32/msvc/external/taglib/taglib/ape/apeproperties.h deleted file mode 100644 index f154ec34249..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ape/apeproperties.h +++ /dev/null @@ -1,99 +0,0 @@ -/*************************************************************************** - copyright : (C) 2010 by Alex Novichkov - email : novichko@atnet.ru - - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - (original WavPack implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_APEPROPERTIES_H -#define TAGLIB_APEPROPERTIES_H - -#include "taglib_export.h" -#include "audioproperties.h" - -namespace TagLib { - - namespace APE { - - class File; - - //! An implementation of audio property reading for APE - - /*! - * This reads the data from an APE stream found in the AudioProperties - * API. - */ - - class TAGLIB_EXPORT Properties : public AudioProperties - { - public: - /*! - * Create an instance of APE::Properties with the data read from the - * ByteVector \a data. - */ - Properties(File *f, ReadStyle style = Average); - - /*! - * Destroys this APE::Properties instance. - */ - virtual ~Properties(); - - // Reimplementations. - - virtual int length() const; - virtual int bitrate() const; - virtual int sampleRate() const; - virtual int channels() const; - - /*! - * Returns number of bits per sample. - */ - int bitsPerSample() const; - uint sampleFrames() const; - - /*! - * Returns APE version. - */ - int version() const; - - private: - Properties(const Properties &); - Properties &operator=(const Properties &); - - void read(); - - long findDescriptor(); - long findID3v2(); - - void analyzeCurrent(); - void analyzeOld(); - - class PropertiesPrivate; - PropertiesPrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/ape/apetag.cpp b/platform/win32/msvc/external/taglib/taglib/ape/apetag.cpp deleted file mode 100644 index 664ee3a8166..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ape/apetag.cpp +++ /dev/null @@ -1,383 +0,0 @@ -/*************************************************************************** - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifdef __SUNPRO_CC -// Sun Studio finds multiple specializations of Map because -// it considers specializations with and without class types -// to be different; this define forces Map to use only the -// specialization with the class keyword. -#define WANT_CLASS_INSTANTIATION_OF_MAP (1) -#endif - -#include <tfile.h> -#include <tstring.h> -#include <tmap.h> -#include <tpropertymap.h> - -#include "apetag.h" -#include "apefooter.h" -#include "apeitem.h" - -using namespace TagLib; -using namespace APE; - -class APE::Tag::TagPrivate -{ -public: - TagPrivate() : file(0), footerLocation(-1), tagLength(0) {} - - TagLib::File *file; - long footerLocation; - long tagLength; - - Footer footer; - - ItemListMap itemListMap; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public methods -//////////////////////////////////////////////////////////////////////////////// - -APE::Tag::Tag() : TagLib::Tag() -{ - d = new TagPrivate; -} - -APE::Tag::Tag(TagLib::File *file, long footerLocation) : TagLib::Tag() -{ - d = new TagPrivate; - d->file = file; - d->footerLocation = footerLocation; - - read(); -} - -APE::Tag::~Tag() -{ - delete d; -} - -ByteVector APE::Tag::fileIdentifier() -{ - return ByteVector::fromCString("APETAGEX"); -} - -String APE::Tag::title() const -{ - if(d->itemListMap["TITLE"].isEmpty()) - return String::null; - return d->itemListMap["TITLE"].toString(); -} - -String APE::Tag::artist() const -{ - if(d->itemListMap["ARTIST"].isEmpty()) - return String::null; - return d->itemListMap["ARTIST"].toString(); -} - -String APE::Tag::album() const -{ - if(d->itemListMap["ALBUM"].isEmpty()) - return String::null; - return d->itemListMap["ALBUM"].toString(); -} - -String APE::Tag::comment() const -{ - if(d->itemListMap["COMMENT"].isEmpty()) - return String::null; - return d->itemListMap["COMMENT"].toString(); -} - -String APE::Tag::genre() const -{ - if(d->itemListMap["GENRE"].isEmpty()) - return String::null; - return d->itemListMap["GENRE"].toString(); -} - -TagLib::uint APE::Tag::year() const -{ - if(d->itemListMap["YEAR"].isEmpty()) - return 0; - return d->itemListMap["YEAR"].toString().toInt(); -} - -TagLib::uint APE::Tag::track() const -{ - if(d->itemListMap["TRACK"].isEmpty()) - return 0; - return d->itemListMap["TRACK"].toString().toInt(); -} - -void APE::Tag::setTitle(const String &s) -{ - addValue("TITLE", s, true); -} - -void APE::Tag::setArtist(const String &s) -{ - addValue("ARTIST", s, true); -} - -void APE::Tag::setAlbum(const String &s) -{ - addValue("ALBUM", s, true); -} - -void APE::Tag::setComment(const String &s) -{ - addValue("COMMENT", s, true); -} - -void APE::Tag::setGenre(const String &s) -{ - addValue("GENRE", s, true); -} - -void APE::Tag::setYear(uint i) -{ - if(i <= 0) - removeItem("YEAR"); - else - addValue("YEAR", String::number(i), true); -} - -void APE::Tag::setTrack(uint i) -{ - if(i <= 0) - removeItem("TRACK"); - else - addValue("TRACK", String::number(i), true); -} - -// conversions of tag keys between what we use in PropertyMap and what's usual -// for APE tags -static const TagLib::uint keyConversionsSize = 5; //usual, APE -static const char *keyConversions[][2] = {{"TRACKNUMBER", "TRACK" }, - {"DATE", "YEAR" }, - {"ALBUMARTIST", "ALBUM ARTIST"}, - {"DISCNUMBER", "DISC" }, - {"REMIXER", "MIXARTIST" }}; - -PropertyMap APE::Tag::properties() const -{ - PropertyMap properties; - ItemListMap::ConstIterator it = itemListMap().begin(); - for(; it != itemListMap().end(); ++it) { - String tagName = it->first.upper(); - // if the item is Binary or Locator, or if the key is an invalid string, - // add to unsupportedData - if(it->second.type() != Item::Text || tagName.isNull()) - properties.unsupportedData().append(it->first); - else { - // Some tags need to be handled specially - for(uint i = 0; i < keyConversionsSize; ++i) - if(tagName == keyConversions[i][1]) - tagName = keyConversions[i][0]; - properties[tagName].append(it->second.toStringList()); - } - } - return properties; -} - -void APE::Tag::removeUnsupportedProperties(const StringList &properties) -{ - StringList::ConstIterator it = properties.begin(); - for(; it != properties.end(); ++it) - removeItem(*it); -} - -PropertyMap APE::Tag::setProperties(const PropertyMap &origProps) -{ - PropertyMap properties(origProps); // make a local copy that can be modified - - // see comment in properties() - for(uint i = 0; i < keyConversionsSize; ++i) - if(properties.contains(keyConversions[i][0])) { - properties.insert(keyConversions[i][1], properties[keyConversions[i][0]]); - properties.erase(keyConversions[i][0]); - } - - // first check if tags need to be removed completely - StringList toRemove; - ItemListMap::ConstIterator remIt = itemListMap().begin(); - for(; remIt != itemListMap().end(); ++remIt) { - String key = remIt->first.upper(); - // only remove if a) key is valid, b) type is text, c) key not contained in new properties - if(!key.isNull() && remIt->second.type() == APE::Item::Text && !properties.contains(key)) - toRemove.append(remIt->first); - } - - for (StringList::Iterator removeIt = toRemove.begin(); removeIt != toRemove.end(); removeIt++) - removeItem(*removeIt); - - // now sync in the "forward direction" - PropertyMap::ConstIterator it = properties.begin(); - PropertyMap invalid; - for(; it != properties.end(); ++it) { - const String &tagName = it->first; - if(!checkKey(tagName)) - invalid.insert(it->first, it->second); - else if(!(itemListMap().contains(tagName)) || !(itemListMap()[tagName].values() == it->second)) { - if(it->second.size() == 0) - removeItem(tagName); - else { - StringList::ConstIterator valueIt = it->second.begin(); - addValue(tagName, *valueIt, true); - ++valueIt; - for(; valueIt != it->second.end(); ++valueIt) - addValue(tagName, *valueIt, false); - } - } - } - return invalid; -} - -bool APE::Tag::checkKey(const String &key) -{ - if(key.size() < 2 || key.size() > 16) - return false; - for(String::ConstIterator it = key.begin(); it != key.end(); it++) - // only allow printable ASCII including space (32..127) - if (*it < 32 || *it >= 128) - return false; - String upperKey = key.upper(); - if (upperKey=="ID3" || upperKey=="TAG" || upperKey=="OGGS" || upperKey=="MP+") - return false; - return true; -} - -APE::Footer *APE::Tag::footer() const -{ - return &d->footer; -} - -const APE::ItemListMap& APE::Tag::itemListMap() const -{ - return d->itemListMap; -} - -void APE::Tag::removeItem(const String &key) -{ - Map<const String, Item>::Iterator it = d->itemListMap.find(key.upper()); - if(it != d->itemListMap.end()) - d->itemListMap.erase(it); -} - -void APE::Tag::addValue(const String &key, const String &value, bool replace) -{ - if(replace) - removeItem(key); - if(!key.isEmpty() && !value.isEmpty()) { - if(!replace && d->itemListMap.contains(key)) { - // Text items may contain more than one value - if(APE::Item::Text == d->itemListMap.begin()->second.type()) - d->itemListMap[key.upper()].appendValue(value); - // Binary or locator items may have only one value - else - setItem(key, Item(key, value)); - } - else - setItem(key, Item(key, value)); - } -} - -void APE::Tag::setData(const String &key, const ByteVector &value) -{ - removeItem(key); - if(!key.isEmpty() && !value.isEmpty()) - setItem(key, Item(key, value, true)); -} - -void APE::Tag::setItem(const String &key, const Item &item) -{ - if(!key.isEmpty()) - d->itemListMap.insert(key.upper(), item); -} - -bool APE::Tag::isEmpty() const -{ - return d->itemListMap.isEmpty(); -} - -//////////////////////////////////////////////////////////////////////////////// -// protected methods -//////////////////////////////////////////////////////////////////////////////// - -void APE::Tag::read() -{ - if(d->file && d->file->isValid()) { - - d->file->seek(d->footerLocation); - d->footer.setData(d->file->readBlock(Footer::size())); - - if(d->footer.tagSize() <= Footer::size() || - d->footer.tagSize() > uint(d->file->length())) - return; - - d->file->seek(d->footerLocation + Footer::size() - d->footer.tagSize()); - parse(d->file->readBlock(d->footer.tagSize() - Footer::size())); - } -} - -ByteVector APE::Tag::render() const -{ - ByteVector data; - uint itemCount = 0; - - { - for(Map<const String, Item>::ConstIterator it = d->itemListMap.begin(); - it != d->itemListMap.end(); ++it) - { - data.append(it->second.render()); - itemCount++; - } - } - - d->footer.setItemCount(itemCount); - d->footer.setTagSize(data.size() + Footer::size()); - d->footer.setHeaderPresent(true); - - return d->footer.renderHeader() + data + d->footer.renderFooter(); -} - -void APE::Tag::parse(const ByteVector &data) -{ - uint pos = 0; - - // 11 bytes is the minimum size for an APE item - - for(uint i = 0; i < d->footer.itemCount() && pos <= data.size() - 11; i++) { - APE::Item item; - item.parse(data.mid(pos)); - - d->itemListMap.insert(item.key().upper(), item); - - pos += item.size(); - } -} diff --git a/platform/win32/msvc/external/taglib/taglib/ape/apetag.h b/platform/win32/msvc/external/taglib/taglib/ape/apetag.h deleted file mode 100644 index c1f12e296d9..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ape/apetag.h +++ /dev/null @@ -1,208 +0,0 @@ -/*************************************************************************** - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_APETAG_H -#define TAGLIB_APETAG_H - -#include "tag.h" -#include "tbytevector.h" -#include "tmap.h" -#include "tstring.h" -#include "taglib_export.h" - -#include "apeitem.h" - -namespace TagLib { - - class File; - - //! An implementation of the APE tagging format - - namespace APE { - - class Footer; - - /*! - * A mapping between a list of item names, or keys, and the associated item. - * - * \see APE::Tag::itemListMap() - */ - typedef Map<const String, Item> ItemListMap; - - - //! An APE tag implementation - - class TAGLIB_EXPORT Tag : public TagLib::Tag - { - public: - /*! - * Create an APE tag with default values. - */ - Tag(); - - /*! - * Create an APE tag and parse the data in \a file with APE footer at - * \a tagOffset. - */ - Tag(TagLib::File *file, long footerLocation); - - /*! - * Destroys this Tag instance. - */ - virtual ~Tag(); - - /*! - * Renders the in memory values to a ByteVector suitable for writing to - * the file. - */ - ByteVector render() const; - - /*! - * Returns the string "APETAGEX" suitable for usage in locating the tag in a - * file. - */ - static ByteVector fileIdentifier(); - - // Reimplementations. - - virtual String title() const; - virtual String artist() const; - virtual String album() const; - virtual String comment() const; - virtual String genre() const; - virtual uint year() const; - virtual uint track() const; - - virtual void setTitle(const String &s); - virtual void setArtist(const String &s); - virtual void setAlbum(const String &s); - virtual void setComment(const String &s); - virtual void setGenre(const String &s); - virtual void setYear(uint i); - virtual void setTrack(uint i); - - /*! - * Implements the unified tag dictionary interface -- export function. - * APE tags are perfectly compatible with the dictionary interface because they - * support both arbitrary tag names and multiple values. Currently only - * APE items of type *Text* are handled by the dictionary interface; all *Binary* - * and *Locator* items will be put into the unsupportedData list and can be - * deleted on request using removeUnsupportedProperties(). The same happens - * to Text items if their key is invalid for PropertyMap (which should actually - * never happen). - * - * The only conversion done by this export function is to rename the APE tags - * TRACK to TRACKNUMBER, YEAR to DATE, and ALBUM ARTIST to ALBUMARTIST, respectively, - * in order to be compliant with the names used in other formats. - */ - PropertyMap properties() const; - - void removeUnsupportedProperties(const StringList &properties); - - /*! - * Implements the unified tag dictionary interface -- import function. The same - * comments as for the export function apply; additionally note that the APE tag - * specification requires keys to have between 2 and 16 printable ASCII characters - * with the exception of the fixed strings "ID3", "TAG", "OGGS", and "MP+". - */ - PropertyMap setProperties(const PropertyMap &); - - /*! - * Check if the given String is a valid APE tag key. - */ - static bool checkKey(const String&); - - /*! - * Returns a pointer to the tag's footer. - */ - Footer *footer() const; - - /*! - * Returns a reference to the item list map. This is an ItemListMap of - * all of the items in the tag. - * - * This is the most powerfull structure for accessing the items of the tag. - * - * APE tags are case-insensitive, all keys in this map have been converted - * to upper case. - * - * \warning You should not modify this data structure directly, instead - * use setItem() and removeItem(). - */ - const ItemListMap &itemListMap() const; - - /*! - * Removes the \a key item from the tag - */ - void removeItem(const String &key); - - /*! - * Adds to the text item specified by \a key the data \a value. If \a replace - * is true, then all of the other values on the same key will be removed - * first. If a binary item exists for \a key it will be removed first. - */ - void addValue(const String &key, const String &value, bool replace = true); - - /*! - * Set the binary data for the key specified by \a item to \a value - * This will convert the item to type \a Binary if it isn't already and - * all of the other values on the same key will be removed. - */ - void setData(const String &key, const ByteVector &value); - - /*! - * Sets the \a key item to the value of \a item. If an item with the \a key is already - * present, it will be replaced. - */ - void setItem(const String &key, const Item &item); - - /*! - * Returns true if the tag does not contain any data. - */ - bool isEmpty() const; - - protected: - - /*! - * Reads from the file specified in the constructor. - */ - void read(); - - /*! - * Parses the body of the tag in \a data. - */ - void parse(const ByteVector &data); - - private: - Tag(const Tag &); - Tag &operator=(const Tag &); - - class TagPrivate; - TagPrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/asf/asfattribute.cpp b/platform/win32/msvc/external/taglib/taglib/asf/asfattribute.cpp deleted file mode 100644 index 2cfada7b0fa..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/asf/asfattribute.cpp +++ /dev/null @@ -1,353 +0,0 @@ -/************************************************************************** - copyright : (C) 2005-2007 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <taglib.h> -#include <tdebug.h> -#include "asfattribute.h" -#include "asffile.h" - -using namespace TagLib; - -class ASF::Attribute::AttributePrivate : public RefCounter -{ -public: - AttributePrivate() - : pictureValue(ASF::Picture::fromInvalid()), - stream(0), - language(0) {} - AttributeTypes type; - String stringValue; - ByteVector byteVectorValue; - ASF::Picture pictureValue; - union { - unsigned int intValue; - unsigned short shortValue; - unsigned long long longLongValue; - bool boolValue; - }; - int stream; - int language; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -ASF::Attribute::Attribute() -{ - d = new AttributePrivate; - d->type = UnicodeType; -} - -ASF::Attribute::Attribute(const ASF::Attribute &other) - : d(other.d) -{ - d->ref(); -} - -ASF::Attribute &ASF::Attribute::operator=(const ASF::Attribute &other) -{ - if(d->deref()) - delete d; - d = other.d; - d->ref(); - return *this; -} - -ASF::Attribute::~Attribute() -{ - if(d->deref()) - delete d; -} - -ASF::Attribute::Attribute(const String &value) -{ - d = new AttributePrivate; - d->type = UnicodeType; - d->stringValue = value; -} - -ASF::Attribute::Attribute(const ByteVector &value) -{ - d = new AttributePrivate; - d->type = BytesType; - d->byteVectorValue = value; -} - -ASF::Attribute::Attribute(const ASF::Picture &value) -{ - d = new AttributePrivate; - d->type = BytesType; - d->pictureValue = value; -} - -ASF::Attribute::Attribute(unsigned int value) -{ - d = new AttributePrivate; - d->type = DWordType; - d->intValue = value; -} - -ASF::Attribute::Attribute(unsigned long long value) -{ - d = new AttributePrivate; - d->type = QWordType; - d->longLongValue = value; -} - -ASF::Attribute::Attribute(unsigned short value) -{ - d = new AttributePrivate; - d->type = WordType; - d->shortValue = value; -} - -ASF::Attribute::Attribute(bool value) -{ - d = new AttributePrivate; - d->type = BoolType; - d->boolValue = value; -} - -ASF::Attribute::AttributeTypes ASF::Attribute::type() const -{ - return d->type; -} - -String ASF::Attribute::toString() const -{ - return d->stringValue; -} - -ByteVector ASF::Attribute::toByteVector() const -{ - if(d->pictureValue.isValid()) - return d->pictureValue.render(); - return d->byteVectorValue; -} - -unsigned short ASF::Attribute::toBool() const -{ - return d->shortValue; -} - -unsigned short ASF::Attribute::toUShort() const -{ - return d->shortValue; -} - -unsigned int ASF::Attribute::toUInt() const -{ - return d->intValue; -} - -unsigned long long ASF::Attribute::toULongLong() const -{ - return d->longLongValue; -} - -ASF::Picture ASF::Attribute::toPicture() const -{ - return d->pictureValue; -} - -String ASF::Attribute::parse(ASF::File &f, int kind) -{ - uint size, nameLength; - String name; - d->pictureValue = Picture::fromInvalid(); - // extended content descriptor - if(kind == 0) { - nameLength = f.readWORD(); - name = f.readString(nameLength); - d->type = ASF::Attribute::AttributeTypes(f.readWORD()); - size = f.readWORD(); - } - // metadata & metadata library - else { - int temp = f.readWORD(); - // metadata library - if(kind == 2) { - d->language = temp; - } - d->stream = f.readWORD(); - nameLength = f.readWORD(); - d->type = ASF::Attribute::AttributeTypes(f.readWORD()); - size = f.readDWORD(); - name = f.readString(nameLength); - } - - if(kind != 2 && size > 65535) { - debug("ASF::Attribute::parse() -- Value larger than 64kB"); - } - - switch(d->type) { - case WordType: - d->shortValue = f.readWORD(); - break; - - case BoolType: - if(kind == 0) { - d->boolValue = f.readDWORD() == 1; - } - else { - d->boolValue = f.readWORD() == 1; - } - break; - - case DWordType: - d->intValue = f.readDWORD(); - break; - - case QWordType: - d->longLongValue = f.readQWORD(); - break; - - case UnicodeType: - d->stringValue = f.readString(size); - break; - - case BytesType: - case GuidType: - d->byteVectorValue = f.readBlock(size); - break; - } - - if(d->type == BytesType && name == "WM/Picture") { - d->pictureValue.parse(d->byteVectorValue); - if(d->pictureValue.isValid()) { - d->byteVectorValue.clear(); - } - } - - return name; -} - -int ASF::Attribute::dataSize() const -{ - switch (d->type) { - case WordType: - return 2; - case BoolType: - return 4; - case DWordType: - return 4; - case QWordType: - return 5; - case UnicodeType: - return d->stringValue.size() * 2 + 2; - case BytesType: - if(d->pictureValue.isValid()) - return d->pictureValue.dataSize(); - case GuidType: - return d->byteVectorValue.size(); - } - return 0; -} - -ByteVector ASF::Attribute::render(const String &name, int kind) const -{ - ByteVector data; - - switch (d->type) { - case WordType: - data.append(ByteVector::fromShort(d->shortValue, false)); - break; - - case BoolType: - if(kind == 0) { - data.append(ByteVector::fromUInt(d->boolValue ? 1 : 0, false)); - } - else { - data.append(ByteVector::fromShort(d->boolValue ? 1 : 0, false)); - } - break; - - case DWordType: - data.append(ByteVector::fromUInt(d->intValue, false)); - break; - - case QWordType: - data.append(ByteVector::fromLongLong(d->longLongValue, false)); - break; - - case UnicodeType: - data.append(File::renderString(d->stringValue)); - break; - - case BytesType: - if(d->pictureValue.isValid()) { - data.append(d->pictureValue.render()); - break; - } - case GuidType: - data.append(d->byteVectorValue); - break; - } - - if(kind == 0) { - data = File::renderString(name, true) + - ByteVector::fromShort((int)d->type, false) + - ByteVector::fromShort(data.size(), false) + - data; - } - else { - ByteVector nameData = File::renderString(name); - data = ByteVector::fromShort(kind == 2 ? d->language : 0, false) + - ByteVector::fromShort(d->stream, false) + - ByteVector::fromShort(nameData.size(), false) + - ByteVector::fromShort((int)d->type, false) + - ByteVector::fromUInt(data.size(), false) + - nameData + - data; - } - - return data; -} - -int ASF::Attribute::language() const -{ - return d->language; -} - -void ASF::Attribute::setLanguage(int value) -{ - d->language = value; -} - -int ASF::Attribute::stream() const -{ - return d->stream; -} - -void ASF::Attribute::setStream(int value) -{ - d->stream = value; -} - diff --git a/platform/win32/msvc/external/taglib/taglib/asf/asfattribute.h b/platform/win32/msvc/external/taglib/taglib/asf/asfattribute.h deleted file mode 100644 index 54eb0c7d104..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/asf/asfattribute.h +++ /dev/null @@ -1,203 +0,0 @@ -/************************************************************************** - copyright : (C) 2005-2007 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_ASFATTRIBUTE_H -#define TAGLIB_ASFATTRIBUTE_H - -#include "tstring.h" -#include "tbytevector.h" -#include "taglib_export.h" -#include "asfpicture.h" - -namespace TagLib -{ - - namespace ASF - { - - class File; - class Picture; - - class TAGLIB_EXPORT Attribute - { - public: - - /*! - * Enum of types an Attribute can have. - */ - enum AttributeTypes { - UnicodeType = 0, - BytesType = 1, - BoolType = 2, - DWordType = 3, - QWordType = 4, - WordType = 5, - GuidType = 6 - }; - - /*! - * Constructs an empty attribute. - */ - Attribute(); - - /*! - * Constructs an attribute with \a key and a UnicodeType \a value. - */ - Attribute(const String &value); - - /*! - * Constructs an attribute with \a key and a BytesType \a value. - */ - Attribute(const ByteVector &value); - - /*! - * Constructs an attribute with \a key and a Picture \a value. - * - * This attribute is compatible with the ID3 frame, APIC. The ID3 specification for the APIC frame stipulates that, - * while there may be any number of APIC frames associated with a file, - * only one may be of type 1 and only one may be of type 2. - * - * The specification also states that the description of the picture can be no longer than 64 characters, but can be empty. - * WM/Picture attributes added with TagLib::ASF are not automatically validated to conform to ID3 specifications. - * You must add code in your application to perform validations if you want to maintain complete compatibility with ID3. - */ - Attribute(const Picture &value); - - /*! - * Constructs an attribute with \a key and a DWordType \a value. - */ - Attribute(unsigned int value); - - /*! - * Constructs an attribute with \a key and a QWordType \a value. - */ - Attribute(unsigned long long value); - - /*! - * Constructs an attribute with \a key and a WordType \a value. - */ - Attribute(unsigned short value); - - /*! - * Constructs an attribute with \a key and a BoolType \a value. - */ - Attribute(bool value); - - /*! - * Construct an attribute as a copy of \a other. - */ - Attribute(const Attribute &item); - - /*! - * Copies the contents of \a other into this item. - */ - ASF::Attribute &operator=(const Attribute &other); - - /*! - * Destroys the attribute. - */ - virtual ~Attribute(); - - /*! - * Returns type of the value. - */ - AttributeTypes type() const; - - /*! - * Returns the BoolType \a value. - */ - unsigned short toBool() const; - - /*! - * Returns the WordType \a value. - */ - unsigned short toUShort() const; - - /*! - * Returns the DWordType \a value. - */ - unsigned int toUInt() const; - - /*! - * Returns the QWordType \a value. - */ - unsigned long long toULongLong() const; - - /*! - * Returns the UnicodeType \a value. - */ - String toString() const; - - /*! - * Returns the BytesType \a value. - */ - ByteVector toByteVector() const; - - /*! - * Returns the Picture \a value. - */ - Picture toPicture() const; - - /*! - * Returns the language number, or 0 is no stream number was set. - */ - int language() const; - - /*! - * Sets the language number. - */ - void setLanguage(int value); - - /*! - * Returns the stream number, or 0 is no stream number was set. - */ - int stream() const; - - /*! - * Sets the stream number. - */ - void setStream(int value); - -#ifndef DO_NOT_DOCUMENT - /* THIS IS PRIVATE, DON'T TOUCH IT! */ - String parse(ASF::File &file, int kind = 0); -#endif - - //! Returns the size of the stored data - int dataSize() const; - - private: - friend class File; - - ByteVector render(const String &name, int kind = 0) const; - - class AttributePrivate; - AttributePrivate *d; - }; - } - -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/asf/asffile.cpp b/platform/win32/msvc/external/taglib/taglib/asf/asffile.cpp deleted file mode 100644 index 455631f82f6..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/asf/asffile.cpp +++ /dev/null @@ -1,615 +0,0 @@ -/************************************************************************** - copyright : (C) 2005-2007 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <tdebug.h> -#include <tbytevectorlist.h> -#include <tstring.h> -#include "asffile.h" -#include "asftag.h" -#include "asfproperties.h" - -using namespace TagLib; - -class ASF::File::FilePrivate -{ -public: - FilePrivate(): - size(0), - tag(0), - properties(0), - contentDescriptionObject(0), - extendedContentDescriptionObject(0), - headerExtensionObject(0), - metadataObject(0), - metadataLibraryObject(0) {} - unsigned long long size; - ASF::Tag *tag; - ASF::Properties *properties; - List<ASF::File::BaseObject *> objects; - ASF::File::ContentDescriptionObject *contentDescriptionObject; - ASF::File::ExtendedContentDescriptionObject *extendedContentDescriptionObject; - ASF::File::HeaderExtensionObject *headerExtensionObject; - ASF::File::MetadataObject *metadataObject; - ASF::File::MetadataLibraryObject *metadataLibraryObject; -}; - -static ByteVector headerGuid("\x30\x26\xB2\x75\x8E\x66\xCF\x11\xA6\xD9\x00\xAA\x00\x62\xCE\x6C", 16); -static ByteVector filePropertiesGuid("\xA1\xDC\xAB\x8C\x47\xA9\xCF\x11\x8E\xE4\x00\xC0\x0C\x20\x53\x65", 16); -static ByteVector streamPropertiesGuid("\x91\x07\xDC\xB7\xB7\xA9\xCF\x11\x8E\xE6\x00\xC0\x0C\x20\x53\x65", 16); -static ByteVector contentDescriptionGuid("\x33\x26\xB2\x75\x8E\x66\xCF\x11\xA6\xD9\x00\xAA\x00\x62\xCE\x6C", 16); -static ByteVector extendedContentDescriptionGuid("\x40\xA4\xD0\xD2\x07\xE3\xD2\x11\x97\xF0\x00\xA0\xC9\x5E\xA8\x50", 16); -static ByteVector headerExtensionGuid("\xb5\x03\xbf_.\xa9\xcf\x11\x8e\xe3\x00\xc0\x0c Se", 16); -static ByteVector metadataGuid("\xEA\xCB\xF8\xC5\xAF[wH\204g\xAA\214D\xFAL\xCA", 16); -static ByteVector metadataLibraryGuid("\224\034#D\230\224\321I\241A\x1d\x13NEpT", 16); -static ByteVector contentEncryptionGuid("\xFB\xB3\x11\x22\x23\xBD\xD2\x11\xB4\xB7\x00\xA0\xC9\x55\xFC\x6E", 16); -static ByteVector extendedContentEncryptionGuid("\x14\xE6\x8A\x29\x22\x26 \x17\x4C\xB9\x35\xDA\xE0\x7E\xE9\x28\x9C", 16); -static ByteVector advancedContentEncryptionGuid("\xB6\x9B\x07\x7A\xA4\xDA\x12\x4E\xA5\xCA\x91\xD3\x8D\xC1\x1A\x8D", 16); - -class ASF::File::BaseObject -{ -public: - ByteVector data; - virtual ~BaseObject() {} - virtual ByteVector guid() = 0; - virtual void parse(ASF::File *file, unsigned int size); - virtual ByteVector render(ASF::File *file); -}; - -class ASF::File::UnknownObject : public ASF::File::BaseObject -{ - ByteVector myGuid; -public: - UnknownObject(const ByteVector &guid); - ByteVector guid(); -}; - -class ASF::File::FilePropertiesObject : public ASF::File::BaseObject -{ -public: - ByteVector guid(); - void parse(ASF::File *file, uint size); -}; - -class ASF::File::StreamPropertiesObject : public ASF::File::BaseObject -{ -public: - ByteVector guid(); - void parse(ASF::File *file, uint size); -}; - -class ASF::File::ContentDescriptionObject : public ASF::File::BaseObject -{ -public: - ByteVector guid(); - void parse(ASF::File *file, uint size); - ByteVector render(ASF::File *file); -}; - -class ASF::File::ExtendedContentDescriptionObject : public ASF::File::BaseObject -{ -public: - ByteVectorList attributeData; - ByteVector guid(); - void parse(ASF::File *file, uint size); - ByteVector render(ASF::File *file); -}; - -class ASF::File::MetadataObject : public ASF::File::BaseObject -{ -public: - ByteVectorList attributeData; - ByteVector guid(); - void parse(ASF::File *file, uint size); - ByteVector render(ASF::File *file); -}; - -class ASF::File::MetadataLibraryObject : public ASF::File::BaseObject -{ -public: - ByteVectorList attributeData; - ByteVector guid(); - void parse(ASF::File *file, uint size); - ByteVector render(ASF::File *file); -}; - -class ASF::File::HeaderExtensionObject : public ASF::File::BaseObject -{ -public: - List<ASF::File::BaseObject *> objects; - ~HeaderExtensionObject(); - ByteVector guid(); - void parse(ASF::File *file, uint size); - ByteVector render(ASF::File *file); -}; - -ASF::File::HeaderExtensionObject::~HeaderExtensionObject() -{ - for(unsigned int i = 0; i < objects.size(); i++) { - delete objects[i]; - } -} - -void ASF::File::BaseObject::parse(ASF::File *file, unsigned int size) -{ - data.clear(); - if (size > 24 && size <= (unsigned int)(file->length())) - data = file->readBlock(size - 24); - else - data = ByteVector::null; -} - -ByteVector ASF::File::BaseObject::render(ASF::File * /*file*/) -{ - return guid() + ByteVector::fromLongLong(data.size() + 24, false) + data; -} - -ASF::File::UnknownObject::UnknownObject(const ByteVector &guid) : myGuid(guid) -{ -} - -ByteVector ASF::File::UnknownObject::guid() -{ - return myGuid; -} - -ByteVector ASF::File::FilePropertiesObject::guid() -{ - return filePropertiesGuid; -} - -void ASF::File::FilePropertiesObject::parse(ASF::File *file, uint size) -{ - BaseObject::parse(file, size); - file->d->properties->setLength((int)(data.mid(40, 8).toLongLong(false) / 10000000L - data.mid(56, 8).toLongLong(false) / 1000L)); -} - -ByteVector ASF::File::StreamPropertiesObject::guid() -{ - return streamPropertiesGuid; -} - -void ASF::File::StreamPropertiesObject::parse(ASF::File *file, uint size) -{ - BaseObject::parse(file, size); - file->d->properties->setChannels(data.mid(56, 2).toShort(false)); - file->d->properties->setSampleRate(data.mid(58, 4).toUInt(false)); - file->d->properties->setBitrate(data.mid(62, 4).toUInt(false) * 8 / 1000); -} - -ByteVector ASF::File::ContentDescriptionObject::guid() -{ - return contentDescriptionGuid; -} - -void ASF::File::ContentDescriptionObject::parse(ASF::File *file, uint /*size*/) -{ - file->d->contentDescriptionObject = this; - int titleLength = file->readWORD(); - int artistLength = file->readWORD(); - int copyrightLength = file->readWORD(); - int commentLength = file->readWORD(); - int ratingLength = file->readWORD(); - file->d->tag->setTitle(file->readString(titleLength)); - file->d->tag->setArtist(file->readString(artistLength)); - file->d->tag->setCopyright(file->readString(copyrightLength)); - file->d->tag->setComment(file->readString(commentLength)); - file->d->tag->setRating(file->readString(ratingLength)); -} - -ByteVector ASF::File::ContentDescriptionObject::render(ASF::File *file) -{ - ByteVector v1 = file->renderString(file->d->tag->title()); - ByteVector v2 = file->renderString(file->d->tag->artist()); - ByteVector v3 = file->renderString(file->d->tag->copyright()); - ByteVector v4 = file->renderString(file->d->tag->comment()); - ByteVector v5 = file->renderString(file->d->tag->rating()); - data.clear(); - data.append(ByteVector::fromShort(v1.size(), false)); - data.append(ByteVector::fromShort(v2.size(), false)); - data.append(ByteVector::fromShort(v3.size(), false)); - data.append(ByteVector::fromShort(v4.size(), false)); - data.append(ByteVector::fromShort(v5.size(), false)); - data.append(v1); - data.append(v2); - data.append(v3); - data.append(v4); - data.append(v5); - return BaseObject::render(file); -} - -ByteVector ASF::File::ExtendedContentDescriptionObject::guid() -{ - return extendedContentDescriptionGuid; -} - -void ASF::File::ExtendedContentDescriptionObject::parse(ASF::File *file, uint /*size*/) -{ - file->d->extendedContentDescriptionObject = this; - int count = file->readWORD(); - while(count--) { - ASF::Attribute attribute; - String name = attribute.parse(*file); - file->d->tag->addAttribute(name, attribute); - } -} - -ByteVector ASF::File::ExtendedContentDescriptionObject::render(ASF::File *file) -{ - data.clear(); - data.append(ByteVector::fromShort(attributeData.size(), false)); - data.append(attributeData.toByteVector(ByteVector::null)); - return BaseObject::render(file); -} - -ByteVector ASF::File::MetadataObject::guid() -{ - return metadataGuid; -} - -void ASF::File::MetadataObject::parse(ASF::File *file, uint /*size*/) -{ - file->d->metadataObject = this; - int count = file->readWORD(); - while(count--) { - ASF::Attribute attribute; - String name = attribute.parse(*file, 1); - file->d->tag->addAttribute(name, attribute); - } -} - -ByteVector ASF::File::MetadataObject::render(ASF::File *file) -{ - data.clear(); - data.append(ByteVector::fromShort(attributeData.size(), false)); - data.append(attributeData.toByteVector(ByteVector::null)); - return BaseObject::render(file); -} - -ByteVector ASF::File::MetadataLibraryObject::guid() -{ - return metadataLibraryGuid; -} - -void ASF::File::MetadataLibraryObject::parse(ASF::File *file, uint /*size*/) -{ - file->d->metadataLibraryObject = this; - int count = file->readWORD(); - while(count--) { - ASF::Attribute attribute; - String name = attribute.parse(*file, 2); - file->d->tag->addAttribute(name, attribute); - } -} - -ByteVector ASF::File::MetadataLibraryObject::render(ASF::File *file) -{ - data.clear(); - data.append(ByteVector::fromShort(attributeData.size(), false)); - data.append(attributeData.toByteVector(ByteVector::null)); - return BaseObject::render(file); -} - -ByteVector ASF::File::HeaderExtensionObject::guid() -{ - return headerExtensionGuid; -} - -void ASF::File::HeaderExtensionObject::parse(ASF::File *file, uint /*size*/) -{ - file->d->headerExtensionObject = this; - file->seek(18, File::Current); - long long dataSize = file->readDWORD(); - long long dataPos = 0; - while(dataPos < dataSize) { - ByteVector guid = file->readBlock(16); - if(guid.size() != 16) { - file->setValid(false); - break; - } - bool ok; - long long size = file->readQWORD(&ok); - if(!ok) { - file->setValid(false); - break; - } - BaseObject *obj; - if(guid == metadataGuid) { - obj = new MetadataObject(); - } - else if(guid == metadataLibraryGuid) { - obj = new MetadataLibraryObject(); - } - else { - obj = new UnknownObject(guid); - } - obj->parse(file, (unsigned int)size); - objects.append(obj); - dataPos += size; - } -} - -ByteVector ASF::File::HeaderExtensionObject::render(ASF::File *file) -{ - data.clear(); - for(unsigned int i = 0; i < objects.size(); i++) { - data.append(objects[i]->render(file)); - } - data = ByteVector("\x11\xD2\xD3\xAB\xBA\xA9\xcf\x11\x8E\xE6\x00\xC0\x0C\x20\x53\x65\x06\x00", 18) + ByteVector::fromUInt(data.size(), false) + data; - return BaseObject::render(file); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -ASF::File::File(FileName file, bool readProperties, Properties::ReadStyle propertiesStyle) - : TagLib::File(file) -{ - d = new FilePrivate; - read(readProperties, propertiesStyle); -} - -ASF::File::File(IOStream *stream, bool readProperties, Properties::ReadStyle propertiesStyle) - : TagLib::File(stream) -{ - d = new FilePrivate; - read(readProperties, propertiesStyle); -} - -ASF::File::~File() -{ - for(unsigned int i = 0; i < d->objects.size(); i++) { - delete d->objects[i]; - } - if(d->tag) { - delete d->tag; - } - if(d->properties) { - delete d->properties; - } - delete d; -} - -ASF::Tag *ASF::File::tag() const -{ - return d->tag; -} - -ASF::Properties *ASF::File::audioProperties() const -{ - return d->properties; -} - -void ASF::File::read(bool /*readProperties*/, Properties::ReadStyle /*propertiesStyle*/) -{ - if(!isValid()) - return; - - ByteVector guid = readBlock(16); - if(guid != headerGuid) { - debug("ASF: Not an ASF file."); - setValid(false); - return; - } - - d->tag = new ASF::Tag(); - d->properties = new ASF::Properties(); - - bool ok; - d->size = readQWORD(&ok); - if(!ok) { - setValid(false); - return; - } - int numObjects = readDWORD(&ok); - if(!ok) { - setValid(false); - return; - } - seek(2, Current); - - for(int i = 0; i < numObjects; i++) { - ByteVector guid = readBlock(16); - if(guid.size() != 16) { - setValid(false); - break; - } - long size = (long)readQWORD(&ok); - if(!ok) { - setValid(false); - break; - } - BaseObject *obj; - if(guid == filePropertiesGuid) { - obj = new FilePropertiesObject(); - } - else if(guid == streamPropertiesGuid) { - obj = new StreamPropertiesObject(); - } - else if(guid == contentDescriptionGuid) { - obj = new ContentDescriptionObject(); - } - else if(guid == extendedContentDescriptionGuid) { - obj = new ExtendedContentDescriptionObject(); - } - else if(guid == headerExtensionGuid) { - obj = new HeaderExtensionObject(); - } - else { - if(guid == contentEncryptionGuid || - guid == extendedContentEncryptionGuid || - guid == advancedContentEncryptionGuid) { - d->properties->setEncrypted(true); - } - obj = new UnknownObject(guid); - } - obj->parse(this, size); - d->objects.append(obj); - } -} - -bool ASF::File::save() -{ - if(readOnly()) { - debug("ASF::File::save() -- File is read only."); - return false; - } - - if(!isValid()) { - debug("ASF::File::save() -- Trying to save invalid file."); - return false; - } - - if(!d->contentDescriptionObject) { - d->contentDescriptionObject = new ContentDescriptionObject(); - d->objects.append(d->contentDescriptionObject); - } - if(!d->extendedContentDescriptionObject) { - d->extendedContentDescriptionObject = new ExtendedContentDescriptionObject(); - d->objects.append(d->extendedContentDescriptionObject); - } - if(!d->headerExtensionObject) { - d->headerExtensionObject = new HeaderExtensionObject(); - d->objects.append(d->headerExtensionObject); - } - if(!d->metadataObject) { - d->metadataObject = new MetadataObject(); - d->headerExtensionObject->objects.append(d->metadataObject); - } - if(!d->metadataLibraryObject) { - d->metadataLibraryObject = new MetadataLibraryObject(); - d->headerExtensionObject->objects.append(d->metadataLibraryObject); - } - - ASF::AttributeListMap::ConstIterator it = d->tag->attributeListMap().begin(); - for(; it != d->tag->attributeListMap().end(); it++) { - const String &name = it->first; - const AttributeList &attributes = it->second; - bool inExtendedContentDescriptionObject = false; - bool inMetadataObject = false; - for(unsigned int j = 0; j < attributes.size(); j++) { - const Attribute &attribute = attributes[j]; - bool largeValue = attribute.dataSize() > 65535; - if(!inExtendedContentDescriptionObject && !largeValue && attribute.language() == 0 && attribute.stream() == 0) { - d->extendedContentDescriptionObject->attributeData.append(attribute.render(name)); - inExtendedContentDescriptionObject = true; - } - else if(!inMetadataObject && !largeValue && attribute.language() == 0 && attribute.stream() != 0) { - d->metadataObject->attributeData.append(attribute.render(name, 1)); - inMetadataObject = true; - } - else { - d->metadataLibraryObject->attributeData.append(attribute.render(name, 2)); - } - } - } - - ByteVector data; - for(unsigned int i = 0; i < d->objects.size(); i++) { - data.append(d->objects[i]->render(this)); - } - data = headerGuid + ByteVector::fromLongLong(data.size() + 30, false) + ByteVector::fromUInt(d->objects.size(), false) + ByteVector("\x01\x02", 2) + data; - insert(data, 0, (TagLib::ulong)d->size); - - return true; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -int ASF::File::readBYTE(bool *ok) -{ - ByteVector v = readBlock(1); - if(v.size() != 1) { - if(ok) *ok = false; - return 0; - } - if(ok) *ok = true; - return v[0]; -} - -int ASF::File::readWORD(bool *ok) -{ - ByteVector v = readBlock(2); - if(v.size() != 2) { - if(ok) *ok = false; - return 0; - } - if(ok) *ok = true; - return v.toUShort(false); -} - -unsigned int ASF::File::readDWORD(bool *ok) -{ - ByteVector v = readBlock(4); - if(v.size() != 4) { - if(ok) *ok = false; - return 0; - } - if(ok) *ok = true; - return v.toUInt(false); -} - -long long ASF::File::readQWORD(bool *ok) -{ - ByteVector v = readBlock(8); - if(v.size() != 8) { - if(ok) *ok = false; - return 0; - } - if(ok) *ok = true; - return v.toLongLong(false); -} - -String ASF::File::readString(int length) -{ - ByteVector data = readBlock(length); - unsigned int size = data.size(); - while (size >= 2) { - if(data[size - 1] != '\0' || data[size - 2] != '\0') { - break; - } - size -= 2; - } - if(size != data.size()) { - data.resize(size); - } - return String(data, String::UTF16LE); -} - -ByteVector ASF::File::renderString(const String &str, bool includeLength) -{ - ByteVector data = str.data(String::UTF16LE) + ByteVector::fromShort(0, false); - if(includeLength) { - data = ByteVector::fromShort(data.size(), false) + data; - } - return data; -} - diff --git a/platform/win32/msvc/external/taglib/taglib/asf/asffile.h b/platform/win32/msvc/external/taglib/taglib/asf/asffile.h deleted file mode 100644 index 3a7eef565ed..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/asf/asffile.h +++ /dev/null @@ -1,136 +0,0 @@ -/************************************************************************** - copyright : (C) 2005-2007 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_ASFFILE_H -#define TAGLIB_ASFFILE_H - -#include "tag.h" -#include "tfile.h" -#include "taglib_export.h" -#include "asfproperties.h" -#include "asftag.h" - -namespace TagLib { - - //! An implementation of ASF (WMA) metadata - namespace ASF { - - /*! - * This implements and provides an interface for ASF files to the - * TagLib::Tag and TagLib::AudioProperties interfaces by way of implementing - * the abstract TagLib::File API as well as providing some additional - * information specific to ASF files. - */ - class TAGLIB_EXPORT File : public TagLib::File - { - public: - - /*! - * Contructs an ASF file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - * - * \note In the current implementation, both \a readProperties and - * \a propertiesStyle are ignored. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - */ - File(FileName file, bool readProperties = true, Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Contructs an ASF file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - * - * \note In the current implementation, both \a readProperties and - * \a propertiesStyle are ignored. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - */ - File(IOStream *stream, bool readProperties = true, Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Destroys this instance of the File. - */ - virtual ~File(); - - /*! - * Returns a pointer to the ASF tag of the file. - * - * ASF::Tag implements the tag interface, so this serves as the - * reimplementation of TagLib::File::tag(). - * - * \note The Tag <b>is still</b> owned by the ASF::File and should not be - * deleted by the user. It will be deleted when the file (object) is - * destroyed. - */ - virtual Tag *tag() const; - - /*! - * Returns the ASF audio properties for this file. - */ - virtual Properties *audioProperties() const; - - /*! - * Save the file. - * - * This returns true if the save was successful. - */ - virtual bool save(); - - private: - - int readBYTE(bool *ok = 0); - int readWORD(bool *ok = 0); - unsigned int readDWORD(bool *ok = 0); - long long readQWORD(bool *ok = 0); - static ByteVector renderString(const String &str, bool includeLength = false); - String readString(int len); - void read(bool readProperties, Properties::ReadStyle propertiesStyle); - - friend class Attribute; - friend class Picture; - - class BaseObject; - class UnknownObject; - class FilePropertiesObject; - class StreamPropertiesObject; - class ContentDescriptionObject; - class ExtendedContentDescriptionObject; - class HeaderExtensionObject; - class MetadataObject; - class MetadataLibraryObject; - - class FilePrivate; - FilePrivate *d; - }; - - } - -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/asf/asfpicture.cpp b/platform/win32/msvc/external/taglib/taglib/asf/asfpicture.cpp deleted file mode 100644 index c36ffa3a924..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/asf/asfpicture.cpp +++ /dev/null @@ -1,182 +0,0 @@ -/************************************************************************** - copyright : (C) 2010 by Anton Sergunov - email : setosha@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <taglib.h> -#include <tdebug.h> -#include "asfattribute.h" -#include "asffile.h" -#include "asfpicture.h" - -using namespace TagLib; - -class ASF::Picture::PicturePrivate : public RefCounter -{ -public: - bool valid; - Type type; - String mimeType; - String description; - ByteVector picture; -}; - -//////////////////////////////////////////////////////////////////////////////// -// Picture class members -//////////////////////////////////////////////////////////////////////////////// - -ASF::Picture::Picture() -{ - d = new PicturePrivate(); - d->valid = true; -} - -ASF::Picture::Picture(const Picture& other) - : d(other.d) -{ - d->ref(); -} - -ASF::Picture::~Picture() -{ - if(d->deref()) - delete d; -} - -bool ASF::Picture::isValid() const -{ - return d->valid; -} - -String ASF::Picture::mimeType() const -{ - return d->mimeType; -} - -void ASF::Picture::setMimeType(const String &value) -{ - d->mimeType = value; -} - -ASF::Picture::Type ASF::Picture::type() const -{ - return d->type; -} - -void ASF::Picture::setType(const ASF::Picture::Type& t) -{ - d->type = t; -} - -String ASF::Picture::description() const -{ - return d->description; -} - -void ASF::Picture::setDescription(const String &desc) -{ - d->description = desc; -} - -ByteVector ASF::Picture::picture() const -{ - return d->picture; -} - -void ASF::Picture::setPicture(const ByteVector &p) -{ - d->picture = p; -} - -int ASF::Picture::dataSize() const -{ - return - 9 + (d->mimeType.length() + d->description.length()) * 2 + - d->picture.size(); -} - -ASF::Picture& ASF::Picture::operator=(const ASF::Picture& other) -{ - if(other.d != d) { - if(d->deref()) - delete d; - d = other.d; - d->ref(); - } - return *this; -} - -ByteVector ASF::Picture::render() const -{ - if(!isValid()) - return ByteVector::null; - return - ByteVector((char)d->type) + - ByteVector::fromUInt(d->picture.size(), false) + - ASF::File::renderString(d->mimeType) + - ASF::File::renderString(d->description) + - d->picture; -} - -void ASF::Picture::parse(const ByteVector& bytes) -{ - d->valid = false; - if(bytes.size() < 9) - return; - int pos = 0; - d->type = (Type)bytes[0]; ++pos; - uint dataLen = bytes.mid(pos, 4).toUInt(false); pos+=4; - - const ByteVector nullStringTerminator(2, 0); - - int endPos = bytes.find(nullStringTerminator, pos, 2); - if(endPos < 0) - return; - d->mimeType = String(bytes.mid(pos, endPos - pos), String::UTF16LE); - pos = endPos+2; - - endPos = bytes.find(nullStringTerminator, pos, 2); - if(endPos < 0) - return; - d->description = String(bytes.mid(pos, endPos - pos), String::UTF16LE); - pos = endPos+2; - - if(dataLen + pos != bytes.size()) - return; - - d->picture = bytes.mid(pos, dataLen); - d->valid = true; - return; -} - -ASF::Picture ASF::Picture::fromInvalid() -{ - Picture ret; - ret.d->valid = false; - return ret; -} - diff --git a/platform/win32/msvc/external/taglib/taglib/asf/asfpicture.h b/platform/win32/msvc/external/taglib/taglib/asf/asfpicture.h deleted file mode 100644 index aa0a060c19f..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/asf/asfpicture.h +++ /dev/null @@ -1,217 +0,0 @@ -/************************************************************************** - copyright : (C) 2010 by Anton Sergunov - email : setosha@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef ASFPICTURE_H -#define ASFPICTURE_H - -#include "tstring.h" -#include "tbytevector.h" -#include "taglib_export.h" -#include "attachedpictureframe.h" - -namespace TagLib -{ - namespace ASF - { - - //! An ASF attached picture interface implementation - - /*! - * This is an implementation of ASF attached pictures interface. Pictures may be - * included in attributes, one per WM/Picture attribute (but there may be multiple WM/Picture - * attribute in a single tag). These pictures are usually in either JPEG or - * PNG format. - * \see Attribute::toPicture() - * \see Attribute::Attribute(const Picture& picture) - */ - class TAGLIB_EXPORT Picture { - public: - - /*! - * This describes the function or content of the picture. - */ - enum Type { - //! A type not enumerated below - Other = 0x00, - //! 32x32 PNG image that should be used as the file icon - FileIcon = 0x01, - //! File icon of a different size or format - OtherFileIcon = 0x02, - //! Front cover image of the album - FrontCover = 0x03, - //! Back cover image of the album - BackCover = 0x04, - //! Inside leaflet page of the album - LeafletPage = 0x05, - //! Image from the album itself - Media = 0x06, - //! Picture of the lead artist or soloist - LeadArtist = 0x07, - //! Picture of the artist or performer - Artist = 0x08, - //! Picture of the conductor - Conductor = 0x09, - //! Picture of the band or orchestra - Band = 0x0A, - //! Picture of the composer - Composer = 0x0B, - //! Picture of the lyricist or text writer - Lyricist = 0x0C, - //! Picture of the recording location or studio - RecordingLocation = 0x0D, - //! Picture of the artists during recording - DuringRecording = 0x0E, - //! Picture of the artists during performance - DuringPerformance = 0x0F, - //! Picture from a movie or video related to the track - MovieScreenCapture = 0x10, - //! Picture of a large, coloured fish - ColouredFish = 0x11, - //! Illustration related to the track - Illustration = 0x12, - //! Logo of the band or performer - BandLogo = 0x13, - //! Logo of the publisher (record company) - PublisherLogo = 0x14 - }; - - /*! - * Constructs an empty picture. - */ - Picture(); - - /*! - * Construct an picture as a copy of \a other. - */ - Picture(const Picture& other); - - /*! - * Destroys the picture. - */ - virtual ~Picture(); - - /*! - * Copies the contents of \a other into this picture. - */ - Picture& operator=(const Picture& other); - - /*! - * Returns true if Picture stores valid picture - */ - bool isValid() const; - - /*! - * Returns the mime type of the image. This should in most cases be - * "image/png" or "image/jpeg". - * \see setMimeType(const String &) - * \see picture() - * \see setPicture(const ByteArray&) - */ - String mimeType() const; - - /*! - * Sets the mime type of the image. This should in most cases be - * "image/png" or "image/jpeg". - * \see setMimeType(const String &) - * \see picture() - * \see setPicture(const ByteArray&) - */ - void setMimeType(const String &value); - - /*! - * Returns the type of the image. - * - * \see Type - * \see setType() - */ - Type type() const; - - /*! - * Sets the type for the image. - * - * \see Type - * \see type() - */ - void setType(const ASF::Picture::Type& t); - - /*! - * Returns a text description of the image. - * - * \see setDescription() - */ - String description() const; - - /*! - * Sets a textual description of the image to \a desc. - * - * \see description() - */ - void setDescription(const String &desc); - - /*! - * Returns the image data as a ByteVector. - * - * \note ByteVector has a data() method that returns a const char * which - * should make it easy to export this data to external programs. - * - * \see setPicture() - * \see mimeType() - */ - ByteVector picture() const; - - /*! - * Sets the image data to \a p. \a p should be of the type specified in - * this frame's mime-type specification. - * - * \see picture() - * \see mimeType() - * \see setMimeType() - */ - void setPicture(const ByteVector &p); - - /*! - * Returns picture as binary raw data \a value - */ - ByteVector render() const; - - /*! - * Returns picture as binary raw data \a value - */ - int dataSize() const; - -#ifndef DO_NOT_DOCUMENT - /* THIS IS PRIVATE, DON'T TOUCH IT! */ - void parse(const ByteVector& ); - static Picture fromInvalid(); - friend class Attribute; -#endif - private: - class PicturePrivate; - PicturePrivate *d; - }; - } -} - -#endif // ASFPICTURE_H diff --git a/platform/win32/msvc/external/taglib/taglib/asf/asfproperties.cpp b/platform/win32/msvc/external/taglib/taglib/asf/asfproperties.cpp deleted file mode 100644 index 835cbdf9891..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/asf/asfproperties.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/************************************************************************** - copyright : (C) 2005-2007 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <tdebug.h> -#include <tstring.h> -#include "asfproperties.h" - -using namespace TagLib; - -class ASF::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate(): length(0), bitrate(0), sampleRate(0), channels(0), encrypted(false) {} - int length; - int bitrate; - int sampleRate; - int channels; - bool encrypted; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -ASF::Properties::Properties() : AudioProperties(AudioProperties::Average) -{ - d = new PropertiesPrivate; -} - -ASF::Properties::~Properties() -{ - if(d) - delete d; -} - -int ASF::Properties::length() const -{ - return d->length; -} - -int ASF::Properties::bitrate() const -{ - return d->bitrate; -} - -int ASF::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int ASF::Properties::channels() const -{ - return d->channels; -} - -bool ASF::Properties::isEncrypted() const -{ - return d->encrypted; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void ASF::Properties::setLength(int length) -{ - d->length = length; -} - -void ASF::Properties::setBitrate(int length) -{ - d->bitrate = length; -} - -void ASF::Properties::setSampleRate(int length) -{ - d->sampleRate = length; -} - -void ASF::Properties::setChannels(int length) -{ - d->channels = length; -} - -void ASF::Properties::setEncrypted(bool encrypted) -{ - d->encrypted = encrypted; -} - diff --git a/platform/win32/msvc/external/taglib/taglib/asf/asfproperties.h b/platform/win32/msvc/external/taglib/taglib/asf/asfproperties.h deleted file mode 100644 index 95730d8eaf6..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/asf/asfproperties.h +++ /dev/null @@ -1,76 +0,0 @@ -/************************************************************************** - copyright : (C) 2005-2007 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_ASFPROPERTIES_H -#define TAGLIB_ASFPROPERTIES_H - -#include "audioproperties.h" -#include "tstring.h" -#include "taglib_export.h" - -namespace TagLib { - - namespace ASF { - - //! An implementation of ASF audio properties - class TAGLIB_EXPORT Properties : public AudioProperties - { - public: - - /*! - * Create an instance of ASF::Properties. - */ - Properties(); - - /*! - * Destroys this ASF::Properties instance. - */ - virtual ~Properties(); - - // Reimplementations. - virtual int length() const; - virtual int bitrate() const; - virtual int sampleRate() const; - virtual int channels() const; - bool isEncrypted() const; - -#ifndef DO_NOT_DOCUMENT - void setLength(int value); - void setBitrate(int value); - void setSampleRate(int value); - void setChannels(int value); - void setEncrypted(bool value); -#endif - - private: - class PropertiesPrivate; - PropertiesPrivate *d; - }; - - } - -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/asf/asftag.cpp b/platform/win32/msvc/external/taglib/taglib/asf/asftag.cpp deleted file mode 100644 index b7b541fcbe4..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/asf/asftag.cpp +++ /dev/null @@ -1,198 +0,0 @@ -/************************************************************************** - copyright : (C) 2005-2007 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include "asftag.h" - -using namespace TagLib; - -class ASF::Tag::TagPrivate -{ -public: - String title; - String artist; - String copyright; - String comment; - String rating; - AttributeListMap attributeListMap; -}; - -ASF::Tag::Tag() -: TagLib::Tag() -{ - d = new TagPrivate; -} - -ASF::Tag::~Tag() -{ - if(d) - delete d; -} - -String ASF::Tag::title() const -{ - return d->title; -} - -String ASF::Tag::artist() const -{ - return d->artist; -} - -String ASF::Tag::album() const -{ - if(d->attributeListMap.contains("WM/AlbumTitle")) - return d->attributeListMap["WM/AlbumTitle"][0].toString(); - return String::null; -} - -String ASF::Tag::copyright() const -{ - return d->copyright; -} - -String ASF::Tag::comment() const -{ - return d->comment; -} - -String ASF::Tag::rating() const -{ - return d->rating; -} - -unsigned int ASF::Tag::year() const -{ - if(d->attributeListMap.contains("WM/Year")) - return d->attributeListMap["WM/Year"][0].toString().toInt(); - return 0; -} - -unsigned int ASF::Tag::track() const -{ - if(d->attributeListMap.contains("WM/TrackNumber")) { - const ASF::Attribute attr = d->attributeListMap["WM/TrackNumber"][0]; - if(attr.type() == ASF::Attribute::DWordType) - return attr.toUInt(); - else - return attr.toString().toInt(); - } - if(d->attributeListMap.contains("WM/Track")) - return d->attributeListMap["WM/Track"][0].toUInt(); - return 0; -} - -String ASF::Tag::genre() const -{ - if(d->attributeListMap.contains("WM/Genre")) - return d->attributeListMap["WM/Genre"][0].toString(); - return String::null; -} - -void ASF::Tag::setTitle(const String &value) -{ - d->title = value; -} - -void ASF::Tag::setArtist(const String &value) -{ - d->artist = value; -} - -void ASF::Tag::setCopyright(const String &value) -{ - d->copyright = value; -} - -void ASF::Tag::setComment(const String &value) -{ - d->comment = value; -} - -void ASF::Tag::setRating(const String &value) -{ - d->rating = value; -} - -void ASF::Tag::setAlbum(const String &value) -{ - setAttribute("WM/AlbumTitle", value); -} - -void ASF::Tag::setGenre(const String &value) -{ - setAttribute("WM/Genre", value); -} - -void ASF::Tag::setYear(uint value) -{ - setAttribute("WM/Year", String::number(value)); -} - -void ASF::Tag::setTrack(uint value) -{ - setAttribute("WM/TrackNumber", String::number(value)); -} - -ASF::AttributeListMap& ASF::Tag::attributeListMap() -{ - return d->attributeListMap; -} - -void ASF::Tag::removeItem(const String &key) -{ - AttributeListMap::Iterator it = d->attributeListMap.find(key); - if(it != d->attributeListMap.end()) - d->attributeListMap.erase(it); -} - -void ASF::Tag::setAttribute(const String &name, const Attribute &attribute) -{ - AttributeList value; - value.append(attribute); - d->attributeListMap.insert(name, value); -} - -void ASF::Tag::addAttribute(const String &name, const Attribute &attribute) -{ - if(d->attributeListMap.contains(name)) { - d->attributeListMap[name].append(attribute); - } - else { - setAttribute(name, attribute); - } -} - -bool ASF::Tag::isEmpty() const -{ - return TagLib::Tag::isEmpty() && - copyright().isEmpty() && - rating().isEmpty() && - d->attributeListMap.isEmpty(); -} - diff --git a/platform/win32/msvc/external/taglib/taglib/asf/asftag.h b/platform/win32/msvc/external/taglib/taglib/asf/asftag.h deleted file mode 100644 index 6b2d2bf3592..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/asf/asftag.h +++ /dev/null @@ -1,186 +0,0 @@ -/************************************************************************** - copyright : (C) 2005-2007 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_ASFTAG_H -#define TAGLIB_ASFTAG_H - -#include "tag.h" -#include "tlist.h" -#include "tmap.h" -#include "taglib_export.h" -#include "asfattribute.h" - -namespace TagLib { - - namespace ASF { - - typedef List<Attribute> AttributeList; - typedef Map<String, AttributeList> AttributeListMap; - - class TAGLIB_EXPORT Tag : public TagLib::Tag { - - friend class File; - - public: - - Tag(); - - virtual ~Tag(); - - /*! - * Returns the track name. - */ - virtual String title() const; - - /*! - * Returns the artist name. - */ - virtual String artist() const; - - /*! - * Returns the album name; if no album name is present in the tag - * String::null will be returned. - */ - virtual String album() const; - - /*! - * Returns the track comment. - */ - virtual String comment() const; - - /*! - * Returns the genre name; if no genre is present in the tag String::null - * will be returned. - */ - virtual String genre() const; - - /*! - * Returns the rating. - */ - virtual String rating() const; - - /*! - * Returns the genre name; if no genre is present in the tag String::null - * will be returned. - */ - virtual String copyright() const; - - /*! - * Returns the year; if there is no year set, this will return 0. - */ - virtual uint year() const; - - /*! - * Returns the track number; if there is no track number set, this will - * return 0. - */ - virtual uint track() const; - - /*! - * Sets the title to \a s. - */ - virtual void setTitle(const String &s); - - /*! - * Sets the artist to \a s. - */ - virtual void setArtist(const String &s); - - /*! - * Sets the album to \a s. If \a s is String::null then this value will be - * cleared. - */ - virtual void setAlbum(const String &s); - - /*! - * Sets the comment to \a s. - */ - virtual void setComment(const String &s); - - /*! - * Sets the rating to \a s. - */ - virtual void setRating(const String &s); - - /*! - * Sets the copyright to \a s. - */ - virtual void setCopyright(const String &s); - - /*! - * Sets the genre to \a s. - */ - virtual void setGenre(const String &s); - - /*! - * Sets the year to \a i. If \a s is 0 then this value will be cleared. - */ - virtual void setYear(uint i); - - /*! - * Sets the track to \a i. If \a s is 0 then this value will be cleared. - */ - virtual void setTrack(uint i); - - /*! - * Returns true if the tag does not contain any data. This should be - * reimplemented in subclasses that provide more than the basic tagging - * abilities in this class. - */ - virtual bool isEmpty() const; - - /*! - * Returns a reference to the item list map. This is an AttributeListMap of - * all of the items in the tag. - * - * This is the most powerfull structure for accessing the items of the tag. - */ - AttributeListMap &attributeListMap(); - - /*! - * Removes the \a key attribute from the tag - */ - void removeItem(const String &name); - - /*! - * Sets the \a key attribute to the value of \a attribute. If an attribute - * with the \a key is already present, it will be replaced. - */ - void setAttribute(const String &name, const Attribute &attribute); - - /*! - * Sets the \a key attribute to the value of \a attribute. If an attribute - * with the \a key is already present, it will be added to the list. - */ - void addAttribute(const String &name, const Attribute &attribute); - - private: - - class TagPrivate; - TagPrivate *d; - }; - } -} -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/audioproperties.cpp b/platform/win32/msvc/external/taglib/taglib/audioproperties.cpp deleted file mode 100644 index 298b97da129..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/audioproperties.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include "audioproperties.h" - -using namespace TagLib; - -class AudioProperties::AudioPropertiesPrivate -{ - -}; - -//////////////////////////////////////////////////////////////////////////////// -// public methods -//////////////////////////////////////////////////////////////////////////////// - -AudioProperties::~AudioProperties() -{ - -} - -//////////////////////////////////////////////////////////////////////////////// -// protected methods -//////////////////////////////////////////////////////////////////////////////// - -AudioProperties::AudioProperties(ReadStyle) -{ - -} diff --git a/platform/win32/msvc/external/taglib/taglib/audioproperties.h b/platform/win32/msvc/external/taglib/taglib/audioproperties.h deleted file mode 100644 index e9844fa0c77..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/audioproperties.h +++ /dev/null @@ -1,110 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_AUDIOPROPERTIES_H -#define TAGLIB_AUDIOPROPERTIES_H - -#include "taglib_export.h" - -namespace TagLib { - - //! A simple, abstract interface to common audio properties - - /*! - * The values here are common to most audio formats. For more specific, codec - * dependant values, please see see the subclasses APIs. This is meant to - * compliment the TagLib::File and TagLib::Tag APIs in providing a simple - * interface that is sufficient for most applications. - */ - - class TAGLIB_EXPORT AudioProperties - { - public: - - /*! - * Reading audio properties from a file can sometimes be very time consuming - * and for the most accurate results can often involve reading the entire - * file. Because in many situations speed is critical or the accuracy of the - * values is not particularly important this allows the level of desired - * accuracy to be set. - */ - enum ReadStyle { - //! Read as little of the file as possible - Fast, - //! Read more of the file and make better values guesses - Average, - //! Read as much of the file as needed to report accurate values - Accurate - }; - - /*! - * Destroys this AudioProperties instance. - */ - virtual ~AudioProperties(); - - /*! - * Returns the length of the file in seconds. - */ - virtual int length() const = 0; - - /*! - * Returns the most appropriate bit rate for the file in kb/s. For constant - * bitrate formats this is simply the bitrate of the file. For variable - * bitrate formats this is either the average or nominal bitrate. - */ - virtual int bitrate() const = 0; - - /*! - * Returns the sample rate in Hz. - */ - virtual int sampleRate() const = 0; - - /*! - * Returns the number of audio channels. - */ - virtual int channels() const = 0; - - protected: - - /*! - * Construct an audio properties instance. This is protected as this class - * should not be instantiated directly, but should be instantiated via its - * subclasses and can be fetched from the FileRef or File APIs. - * - * \see ReadStyle - */ - AudioProperties(ReadStyle style); - - private: - AudioProperties(const AudioProperties &); - AudioProperties &operator=(const AudioProperties &); - - class AudioPropertiesPrivate; - AudioPropertiesPrivate *d; - }; - -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/fileref.cpp b/platform/win32/msvc/external/taglib/taglib/fileref.cpp deleted file mode 100644 index 5c42ed4c1e6..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/fileref.cpp +++ /dev/null @@ -1,279 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - - copyright : (C) 2010 by Alex Novichkov - email : novichko@atnet.ru - (added APE file support) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <tfile.h> -#include <tstring.h> -#include <tdebug.h> - -#include "fileref.h" -#include "asffile.h" -#include "mpegfile.h" -#include "vorbisfile.h" -#include "flacfile.h" -#include "oggflacfile.h" -#include "mpcfile.h" -#include "mp4file.h" -#include "wavpackfile.h" -#include "speexfile.h" -#include "trueaudiofile.h" -#include "aifffile.h" -#include "wavfile.h" -#include "apefile.h" -#include "modfile.h" -#include "s3mfile.h" -#include "itfile.h" -#include "xmfile.h" - -using namespace TagLib; - -class FileRef::FileRefPrivate : public RefCounter -{ -public: - FileRefPrivate(File *f) : RefCounter(), file(f) {} - ~FileRefPrivate() { - delete file; - } - - File *file; - static List<const FileTypeResolver *> fileTypeResolvers; -}; - -List<const FileRef::FileTypeResolver *> FileRef::FileRefPrivate::fileTypeResolvers; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -FileRef::FileRef() -{ - d = new FileRefPrivate(0); -} - -FileRef::FileRef(FileName fileName, bool readAudioProperties, - AudioProperties::ReadStyle audioPropertiesStyle) -{ - d = new FileRefPrivate(create(fileName, readAudioProperties, audioPropertiesStyle)); -} - -FileRef::FileRef(File *file) -{ - d = new FileRefPrivate(file); -} - -FileRef::FileRef(const FileRef &ref) : d(ref.d) -{ - d->ref(); -} - -FileRef::~FileRef() -{ - if(d->deref()) - delete d; -} - -Tag *FileRef::tag() const -{ - if(isNull()) { - debug("FileRef::tag() - Called without a valid file."); - return 0; - } - return d->file->tag(); -} - -AudioProperties *FileRef::audioProperties() const -{ - if(isNull()) { - debug("FileRef::audioProperties() - Called without a valid file."); - return 0; - } - return d->file->audioProperties(); -} - -File *FileRef::file() const -{ - return d->file; -} - -bool FileRef::save() -{ - if(isNull()) { - debug("FileRef::save() - Called without a valid file."); - return false; - } - return d->file->save(); -} - -const FileRef::FileTypeResolver *FileRef::addFileTypeResolver(const FileRef::FileTypeResolver *resolver) // static -{ - FileRefPrivate::fileTypeResolvers.prepend(resolver); - return resolver; -} - -StringList FileRef::defaultFileExtensions() -{ - StringList l; - - l.append("ogg"); - l.append("flac"); - l.append("oga"); - l.append("mp3"); - l.append("mpc"); - l.append("wv"); - l.append("spx"); - l.append("tta"); - l.append("m4a"); - l.append("m4r"); - l.append("m4b"); - l.append("m4p"); - l.append("3g2"); - l.append("mp4"); - l.append("wma"); - l.append("asf"); - l.append("aif"); - l.append("aiff"); - l.append("wav"); - l.append("ape"); - l.append("mod"); - l.append("module"); // alias for "mod" - l.append("nst"); // alias for "mod" - l.append("wow"); // alias for "mod" - l.append("s3m"); - l.append("it"); - l.append("xm"); - - return l; -} - -bool FileRef::isNull() const -{ - return !d->file || !d->file->isValid(); -} - -FileRef &FileRef::operator=(const FileRef &ref) -{ - if(&ref == this) - return *this; - - if(d->deref()) - delete d; - - d = ref.d; - d->ref(); - - return *this; -} - -bool FileRef::operator==(const FileRef &ref) const -{ - return ref.d->file == d->file; -} - -bool FileRef::operator!=(const FileRef &ref) const -{ - return ref.d->file != d->file; -} - -File *FileRef::create(FileName fileName, bool readAudioProperties, - AudioProperties::ReadStyle audioPropertiesStyle) // static -{ - - List<const FileTypeResolver *>::ConstIterator it = FileRefPrivate::fileTypeResolvers.begin(); - - for(; it != FileRefPrivate::fileTypeResolvers.end(); ++it) { - File *file = (*it)->createFile(fileName, readAudioProperties, audioPropertiesStyle); - if(file) - return file; - } - - // Ok, this is really dumb for now, but it works for testing. - - String s; - -#ifdef _WIN32 - s = (wcslen((const wchar_t *) fileName) > 0) ? String((const wchar_t *) fileName) : String((const char *) fileName); -#else - s = fileName; -#endif - - // If this list is updated, the method defaultFileExtensions() should also be - // updated. However at some point that list should be created at the same time - // that a default file type resolver is created. - - int pos = s.rfind("."); - if(pos != -1) { - String ext = s.substr(pos + 1).upper(); - if(ext == "MP3") - return new MPEG::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "OGG") - return new Ogg::Vorbis::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "OGA") { - /* .oga can be any audio in the Ogg container. First try FLAC, then Vorbis. */ - File *file = new Ogg::FLAC::File(fileName, readAudioProperties, audioPropertiesStyle); - if (file->isValid()) - return file; - delete file; - return new Ogg::Vorbis::File(fileName, readAudioProperties, audioPropertiesStyle); - } - if(ext == "FLAC") - return new FLAC::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "MPC") - return new MPC::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "WV") - return new WavPack::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "SPX") - return new Ogg::Speex::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "TTA") - return new TrueAudio::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "M4A" || ext == "M4R" || ext == "M4B" || ext == "M4P" || ext == "MP4" || ext == "3G2") - return new MP4::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "WMA" || ext == "ASF") - return new ASF::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "AIF" || ext == "AIFF") - return new RIFF::AIFF::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "WAV") - return new RIFF::WAV::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "APE") - return new APE::File(fileName, readAudioProperties, audioPropertiesStyle); - // module, nst and wow are possible but uncommon extensions - if(ext == "MOD" || ext == "MODULE" || ext == "NST" || ext == "WOW") - return new Mod::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "S3M") - return new S3M::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "IT") - return new IT::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "XM") - return new XM::File(fileName, readAudioProperties, audioPropertiesStyle); - } - - return 0; -} diff --git a/platform/win32/msvc/external/taglib/taglib/fileref.h b/platform/win32/msvc/external/taglib/taglib/fileref.h deleted file mode 100644 index 0f0c21a4dc7..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/fileref.h +++ /dev/null @@ -1,263 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_FILEREF_H -#define TAGLIB_FILEREF_H - -#include "tfile.h" -#include "tstringlist.h" - -#include "taglib_export.h" -#include "audioproperties.h" - -namespace TagLib { - - class Tag; - - //! This class provides a simple abstraction for creating and handling files - - /*! - * FileRef exists to provide a minimal, generic and value-based wrapper around - * a File. It is lightweight and implicitly shared, and as such suitable for - * pass-by-value use. This hides some of the uglier details of TagLib::File - * and the non-generic portions of the concrete file implementations. - * - * This class is useful in a "simple usage" situation where it is desirable - * to be able to get and set some of the tag information that is similar - * across file types. - * - * Also note that it is probably a good idea to plug this into your mime - * type system rather than using the constructor that accepts a file name using - * the FileTypeResolver. - * - * \see FileTypeResolver - * \see addFileTypeResolver() - */ - - class TAGLIB_EXPORT FileRef - { - public: - - //! A class for pluggable file type resolution. - - /*! - * This class is used to add extend TagLib's very basic file name based file - * type resolution. - * - * This can be accomplished with: - * - * \code - * - * class MyFileTypeResolver : FileTypeResolver - * { - * TagLib::File *createFile(TagLib::FileName *fileName, bool, AudioProperties::ReadStyle) - * { - * if(someCheckForAnMP3File(fileName)) - * return new TagLib::MPEG::File(fileName); - * return 0; - * } - * } - * - * FileRef::addFileTypeResolver(new MyFileTypeResolver); - * - * \endcode - * - * Naturally a less contrived example would be slightly more complex. This - * can be used to plug in mime-type detection systems or to add new file types - * to TagLib. - */ - - class TAGLIB_EXPORT FileTypeResolver - { - TAGLIB_IGNORE_MISSING_DESTRUCTOR - public: - /*! - * This method must be overridden to provide an additional file type - * resolver. If the resolver is able to determine the file type it should - * return a valid File object; if not it should return 0. - * - * \note The created file is then owned by the FileRef and should not be - * deleted. Deletion will happen automatically when the FileRef passes - * out of scope. - */ - virtual File *createFile(FileName fileName, - bool readAudioProperties = true, - AudioProperties::ReadStyle - audioPropertiesStyle = AudioProperties::Average) const = 0; - }; - - /*! - * Creates a null FileRef. - */ - FileRef(); - - /*! - * Create a FileRef from \a fileName. If \a readAudioProperties is true then - * the audio properties will be read using \a audioPropertiesStyle. If - * \a readAudioProperties is false then \a audioPropertiesStyle will be - * ignored. - * - * Also see the note in the class documentation about why you may not want to - * use this method in your application. - */ - explicit FileRef(FileName fileName, - bool readAudioProperties = true, - AudioProperties::ReadStyle - audioPropertiesStyle = AudioProperties::Average); - - /*! - * Contruct a FileRef using \a file. The FileRef now takes ownership of the - * pointer and will delete the File when it passes out of scope. - */ - explicit FileRef(File *file); - - /*! - * Make a copy of \a ref. - */ - FileRef(const FileRef &ref); - - /*! - * Destroys this FileRef instance. - */ - virtual ~FileRef(); - - /*! - * Returns a pointer to represented file's tag. - * - * \warning This pointer will become invalid when this FileRef and all - * copies pass out of scope. - * - * \warning Do not cast it to any subclasses of \class Tag. - * Use tag returning methods of appropriate subclasses of \class File instead. - * - * \see File::tag() - */ - Tag *tag() const; - - /*! - * Returns the audio properties for this FileRef. If no audio properties - * were read then this will returns a null pointer. - */ - AudioProperties *audioProperties() const; - - /*! - * Returns a pointer to the file represented by this handler class. - * - * As a general rule this call should be avoided since if you need to work - * with file objects directly, you are probably better served instantiating - * the File subclasses (i.e. MPEG::File) manually and working with their APIs. - * - * This <i>handle</i> exists to provide a minimal, generic and value-based - * wrapper around a File. Accessing the file directly generally indicates - * a moving away from this simplicity (and into things beyond the scope of - * FileRef). - * - * \warning This pointer will become invalid when this FileRef and all - * copies pass out of scope. - */ - File *file() const; - - /*! - * Saves the file. Returns true on success. - */ - bool save(); - - /*! - * Adds a FileTypeResolver to the list of those used by TagLib. Each - * additional FileTypeResolver is added to the front of a list of resolvers - * that are tried. If the FileTypeResolver returns zero the next resolver - * is tried. - * - * Returns a pointer to the added resolver (the same one that's passed in -- - * this is mostly so that static inialializers have something to use for - * assignment). - * - * \see FileTypeResolver - */ - static const FileTypeResolver *addFileTypeResolver(const FileTypeResolver *resolver); - - /*! - * As is mentioned elsewhere in this class's documentation, the default file - * type resolution code provided by TagLib only works by comparing file - * extensions. - * - * This method returns the list of file extensions that are used by default. - * - * The extensions are all returned in lowercase, though the comparison used - * by TagLib for resolution is case-insensitive. - * - * \note This does not account for any additional file type resolvers that - * are plugged in. Also note that this is not intended to replace a propper - * mime-type resolution system, but is just here for reference. - * - * \see FileTypeResolver - */ - static StringList defaultFileExtensions(); - - /*! - * Returns true if the file (and as such other pointers) are null. - */ - bool isNull() const; - - /*! - * Assign the file pointed to by \a ref to this FileRef. - */ - FileRef &operator=(const FileRef &ref); - - /*! - * Returns true if this FileRef and \a ref point to the same File object. - */ - bool operator==(const FileRef &ref) const; - - /*! - * Returns true if this FileRef and \a ref do not point to the same File - * object. - */ - bool operator!=(const FileRef &ref) const; - - /*! - * A simple implementation of file type guessing. If \a readAudioProperties - * is true then the audio properties will be read using - * \a audioPropertiesStyle. If \a readAudioProperties is false then - * \a audioPropertiesStyle will be ignored. - * - * \note You generally shouldn't use this method, but instead the constructor - * directly. - * - * \deprecated - */ - static File *create(FileName fileName, - bool readAudioProperties = true, - AudioProperties::ReadStyle audioPropertiesStyle = AudioProperties::Average); - - - private: - class FileRefPrivate; - FileRefPrivate *d; - }; - -} // namespace TagLib - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/flac/flacfile.cpp b/platform/win32/msvc/external/taglib/taglib/flac/flacfile.cpp deleted file mode 100644 index a02770a8bd8..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/flac/flacfile.cpp +++ /dev/null @@ -1,557 +0,0 @@ -/*************************************************************************** - copyright : (C) 2003-2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tbytevector.h> -#include <tstring.h> -#include <tlist.h> -#include <tdebug.h> -#include <tagunion.h> -#include <tpropertymap.h> - -#include <id3v2header.h> -#include <id3v2tag.h> -#include <id3v1tag.h> -#include <xiphcomment.h> - -#include "flacpicture.h" -#include "flacfile.h" -#include "flacmetadatablock.h" -#include "flacunknownmetadatablock.h" - -using namespace TagLib; - -namespace -{ - enum { FlacXiphIndex = 0, FlacID3v2Index = 1, FlacID3v1Index = 2 }; - enum { MinPaddingLength = 4096 }; - enum { LastBlockFlag = 0x80 }; -} - -class FLAC::File::FilePrivate -{ -public: - FilePrivate() : - ID3v2FrameFactory(ID3v2::FrameFactory::instance()), - ID3v2Location(-1), - ID3v2OriginalSize(0), - ID3v1Location(-1), - properties(0), - flacStart(0), - streamStart(0), - streamLength(0), - scanned(false), - hasXiphComment(false), - hasID3v2(false), - hasID3v1(false) - { - } - - ~FilePrivate() - { - for(uint i = 0; i < blocks.size(); i++) { - delete blocks[i]; - } - delete properties; - } - - const ID3v2::FrameFactory *ID3v2FrameFactory; - long ID3v2Location; - uint ID3v2OriginalSize; - - long ID3v1Location; - - TagUnion tag; - - Properties *properties; - ByteVector streamInfoData; - ByteVector xiphCommentData; - List<MetadataBlock *> blocks; - - long flacStart; - long streamStart; - long streamLength; - bool scanned; - - bool hasXiphComment; - bool hasID3v2; - bool hasID3v1; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -FLAC::File::File(FileName file, bool readProperties, - Properties::ReadStyle propertiesStyle) : - TagLib::File(file) -{ - d = new FilePrivate; - read(readProperties, propertiesStyle); -} - -FLAC::File::File(FileName file, ID3v2::FrameFactory *frameFactory, - bool readProperties, Properties::ReadStyle propertiesStyle) : - TagLib::File(file) -{ - d = new FilePrivate; - d->ID3v2FrameFactory = frameFactory; - read(readProperties, propertiesStyle); -} - -FLAC::File::File(IOStream *stream, ID3v2::FrameFactory *frameFactory, - bool readProperties, Properties::ReadStyle propertiesStyle) : - TagLib::File(stream) -{ - d = new FilePrivate; - d->ID3v2FrameFactory = frameFactory; - read(readProperties, propertiesStyle); -} - -FLAC::File::~File() -{ - delete d; -} - -TagLib::Tag *FLAC::File::tag() const -{ - return &d->tag; -} - -PropertyMap FLAC::File::properties() const -{ - // once Tag::properties() is virtual, this case distinction could actually be done - // within TagUnion. - if(d->hasXiphComment) - return d->tag.access<Ogg::XiphComment>(FlacXiphIndex, false)->properties(); - if(d->hasID3v2) - return d->tag.access<ID3v2::Tag>(FlacID3v2Index, false)->properties(); - if(d->hasID3v1) - return d->tag.access<ID3v1::Tag>(FlacID3v1Index, false)->properties(); - return PropertyMap(); -} - -void FLAC::File::removeUnsupportedProperties(const StringList &unsupported) -{ - if(d->hasXiphComment) - d->tag.access<Ogg::XiphComment>(FlacXiphIndex, false)->removeUnsupportedProperties(unsupported); - if(d->hasID3v2) - d->tag.access<ID3v2::Tag>(FlacID3v2Index, false)->removeUnsupportedProperties(unsupported); - if(d->hasID3v1) - d->tag.access<ID3v1::Tag>(FlacID3v1Index, false)->removeUnsupportedProperties(unsupported); -} - -PropertyMap FLAC::File::setProperties(const PropertyMap &properties) -{ - if(d->hasXiphComment) - return d->tag.access<Ogg::XiphComment>(FlacXiphIndex, false)->setProperties(properties); - else if(d->hasID3v2) - return d->tag.access<ID3v2::Tag>(FlacID3v2Index, false)->setProperties(properties); - else if(d->hasID3v1) - return d->tag.access<ID3v1::Tag>(FlacID3v1Index, false)->setProperties(properties); - else - return d->tag.access<Ogg::XiphComment>(FlacXiphIndex, true)->setProperties(properties); -} - -FLAC::Properties *FLAC::File::audioProperties() const -{ - return d->properties; -} - - -bool FLAC::File::save() -{ - if(readOnly()) { - debug("FLAC::File::save() - Cannot save to a read only file."); - return false; - } - - if(!isValid()) { - debug("FLAC::File::save() -- Trying to save invalid file."); - return false; - } - - // Create new vorbis comments - - Tag::duplicate(&d->tag, xiphComment(true), false); - - d->xiphCommentData = xiphComment()->render(false); - - // Replace metadata blocks - - bool foundVorbisCommentBlock = false; - List<MetadataBlock *> newBlocks; - for(uint i = 0; i < d->blocks.size(); i++) { - MetadataBlock *block = d->blocks[i]; - if(block->code() == MetadataBlock::VorbisComment) { - // Set the new Vorbis Comment block - delete block; - block = new UnknownMetadataBlock(MetadataBlock::VorbisComment, d->xiphCommentData); - foundVorbisCommentBlock = true; - } - if(block->code() == MetadataBlock::Padding) { - delete block; - continue; - } - newBlocks.append(block); - } - if(!foundVorbisCommentBlock) { - newBlocks.append(new UnknownMetadataBlock(MetadataBlock::VorbisComment, d->xiphCommentData)); - foundVorbisCommentBlock = true; - } - d->blocks = newBlocks; - - // Render data for the metadata blocks - - ByteVector data; - for(uint i = 0; i < newBlocks.size(); i++) { - FLAC::MetadataBlock *block = newBlocks[i]; - ByteVector blockData = block->render(); - ByteVector blockHeader = ByteVector::fromUInt(blockData.size()); - blockHeader[0] = block->code(); - data.append(blockHeader); - data.append(blockData); - } - - // Adjust the padding block(s) - - long originalLength = d->streamStart - d->flacStart; - int paddingLength = originalLength - data.size() - 4; - if (paddingLength < 0) { - paddingLength = MinPaddingLength; - } - ByteVector padding = ByteVector::fromUInt(paddingLength); - padding.resize(paddingLength + 4); - padding[0] = (char)(FLAC::MetadataBlock::Padding | LastBlockFlag); - data.append(padding); - - // Write the data to the file - - insert(data, d->flacStart, originalLength); - d->hasXiphComment = true; - - // Update ID3 tags - - if(ID3v2Tag()) { - if(d->hasID3v2) { - if(d->ID3v2Location < d->flacStart) - debug("FLAC::File::save() -- This can't be right -- an ID3v2 tag after the " - "start of the FLAC bytestream? Not writing the ID3v2 tag."); - else - insert(ID3v2Tag()->render(), d->ID3v2Location, d->ID3v2OriginalSize); - } - else - insert(ID3v2Tag()->render(), 0, 0); - } - - if(ID3v1Tag()) { - seek(-128, End); - writeBlock(ID3v1Tag()->render()); - } - - return true; -} - -ID3v2::Tag *FLAC::File::ID3v2Tag(bool create) -{ - if(!create || d->tag[FlacID3v2Index]) - return static_cast<ID3v2::Tag *>(d->tag[FlacID3v2Index]); - - d->tag.set(FlacID3v2Index, new ID3v2::Tag); - return static_cast<ID3v2::Tag *>(d->tag[FlacID3v2Index]); -} - -ID3v1::Tag *FLAC::File::ID3v1Tag(bool create) -{ - return d->tag.access<ID3v1::Tag>(FlacID3v1Index, create); -} - -Ogg::XiphComment *FLAC::File::xiphComment(bool create) -{ - return d->tag.access<Ogg::XiphComment>(FlacXiphIndex, create); -} - -void FLAC::File::setID3v2FrameFactory(const ID3v2::FrameFactory *factory) -{ - d->ID3v2FrameFactory = factory; -} - - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void FLAC::File::read(bool readProperties, Properties::ReadStyle propertiesStyle) -{ - // Look for an ID3v2 tag - - d->ID3v2Location = findID3v2(); - - if(d->ID3v2Location >= 0) { - - d->tag.set(FlacID3v2Index, new ID3v2::Tag(this, d->ID3v2Location, d->ID3v2FrameFactory)); - - d->ID3v2OriginalSize = ID3v2Tag()->header()->completeTagSize(); - - if(ID3v2Tag()->header()->tagSize() <= 0) - d->tag.set(FlacID3v2Index, 0); - else - d->hasID3v2 = true; - } - - // Look for an ID3v1 tag - - d->ID3v1Location = findID3v1(); - - if(d->ID3v1Location >= 0) { - d->tag.set(FlacID3v1Index, new ID3v1::Tag(this, d->ID3v1Location)); - d->hasID3v1 = true; - } - - // Look for FLAC metadata, including vorbis comments - - scan(); - - if(!isValid()) - return; - - if(d->hasXiphComment) - d->tag.set(FlacXiphIndex, new Ogg::XiphComment(xiphCommentData())); - else - d->tag.set(FlacXiphIndex, new Ogg::XiphComment); - - if(readProperties) - d->properties = new Properties(streamInfoData(), streamLength(), propertiesStyle); -} - -ByteVector FLAC::File::streamInfoData() -{ - return isValid() ? d->streamInfoData : ByteVector(); -} - -ByteVector FLAC::File::xiphCommentData() const -{ - return (isValid() && d->hasXiphComment) ? d->xiphCommentData : ByteVector(); -} - -long FLAC::File::streamLength() -{ - return d->streamLength; -} - -void FLAC::File::scan() -{ - // Scan the metadata pages - - if(d->scanned) - return; - - if(!isValid()) - return; - - long nextBlockOffset; - - if(d->hasID3v2) - nextBlockOffset = find("fLaC", d->ID3v2Location + d->ID3v2OriginalSize); - else - nextBlockOffset = find("fLaC"); - - if(nextBlockOffset < 0) { - debug("FLAC::File::scan() -- FLAC stream not found"); - setValid(false); - return; - } - - nextBlockOffset += 4; - d->flacStart = nextBlockOffset; - - seek(nextBlockOffset); - - ByteVector header = readBlock(4); - - // Header format (from spec): - // <1> Last-metadata-block flag - // <7> BLOCK_TYPE - // 0 : STREAMINFO - // 1 : PADDING - // .. - // 4 : VORBIS_COMMENT - // .. - // <24> Length of metadata to follow - - char blockType = header[0] & 0x7f; - bool isLastBlock = (header[0] & 0x80) != 0; - uint length = header.mid(1, 3).toUInt(); - - // First block should be the stream_info metadata - - if(blockType != MetadataBlock::StreamInfo) { - debug("FLAC::File::scan() -- invalid FLAC stream"); - setValid(false); - return; - } - - d->streamInfoData = readBlock(length); - d->blocks.append(new UnknownMetadataBlock(blockType, d->streamInfoData)); - nextBlockOffset += length + 4; - - // Search through the remaining metadata - while(!isLastBlock) { - - header = readBlock(4); - blockType = header[0] & 0x7f; - isLastBlock = (header[0] & 0x80) != 0; - length = header.mid(1, 3).toUInt(); - - ByteVector data = readBlock(length); - if(data.size() != length) { - debug("FLAC::File::scan() -- FLAC stream corrupted"); - setValid(false); - return; - } - - MetadataBlock *block = 0; - - // Found the vorbis-comment - if(blockType == MetadataBlock::VorbisComment) { - if(!d->hasXiphComment) { - d->xiphCommentData = data; - d->hasXiphComment = true; - } - else { - debug("FLAC::File::scan() -- multiple Vorbis Comment blocks found, using the first one"); - } - } - else if(blockType == MetadataBlock::Picture) { - FLAC::Picture *picture = new FLAC::Picture(); - if(picture->parse(data)) { - block = picture; - } - else { - debug("FLAC::File::scan() -- invalid picture found, discarting"); - delete picture; - } - } - - if(!block) { - block = new UnknownMetadataBlock(blockType, data); - } - if(block->code() != MetadataBlock::Padding) { - d->blocks.append(block); - } - else { - delete block; - } - - nextBlockOffset += length + 4; - - if(nextBlockOffset >= File::length()) { - debug("FLAC::File::scan() -- FLAC stream corrupted"); - setValid(false); - return; - } - seek(nextBlockOffset); - } - - // End of metadata, now comes the datastream - - d->streamStart = nextBlockOffset; - d->streamLength = File::length() - d->streamStart; - - if(d->hasID3v1) - d->streamLength -= 128; - - d->scanned = true; -} - -long FLAC::File::findID3v1() -{ - if(!isValid()) - return -1; - - seek(-128, End); - long p = tell(); - - if(readBlock(3) == ID3v1::Tag::fileIdentifier()) - return p; - - return -1; -} - -long FLAC::File::findID3v2() -{ - if(!isValid()) - return -1; - - seek(0); - - if(readBlock(3) == ID3v2::Header::fileIdentifier()) - return 0; - - return -1; -} - -List<FLAC::Picture *> FLAC::File::pictureList() -{ - List<Picture *> pictures; - for(uint i = 0; i < d->blocks.size(); i++) { - Picture *picture = dynamic_cast<Picture *>(d->blocks[i]); - if(picture) { - pictures.append(picture); - } - } - return pictures; -} - -void FLAC::File::addPicture(Picture *picture) -{ - d->blocks.append(picture); -} - -void FLAC::File::removePicture(Picture *picture, bool del) -{ - MetadataBlock *block = picture; - List<MetadataBlock *>::Iterator it = d->blocks.find(block); - if(it != d->blocks.end()) - d->blocks.erase(it); - - if(del) - delete picture; -} - -void FLAC::File::removePictures() -{ - List<MetadataBlock *> newBlocks; - for(uint i = 0; i < d->blocks.size(); i++) { - Picture *picture = dynamic_cast<Picture *>(d->blocks[i]); - if(picture) { - delete picture; - } - else { - newBlocks.append(d->blocks[i]); - } - } - d->blocks = newBlocks; -} - diff --git a/platform/win32/msvc/external/taglib/taglib/flac/flacfile.h b/platform/win32/msvc/external/taglib/taglib/flac/flacfile.h deleted file mode 100644 index 716d4478cce..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/flac/flacfile.h +++ /dev/null @@ -1,261 +0,0 @@ -/*************************************************************************** - copyright : (C) 2003 by Allan Sandfeld Jensen - email : kde@carewolf.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_FLACFILE_H -#define TAGLIB_FLACFILE_H - -#include "taglib_export.h" -#include "tfile.h" -#include "tlist.h" -#include "tag.h" - -#include "flacpicture.h" -#include "flacproperties.h" - -namespace TagLib { - - class Tag; - namespace ID3v2 { class FrameFactory; class Tag; } - namespace ID3v1 { class Tag; } - namespace Ogg { class XiphComment; } - - //! An implementation of FLAC metadata - - /*! - * This is implementation of FLAC metadata for non-Ogg FLAC files. At some - * point when Ogg / FLAC is more common there will be a similar implementation - * under the Ogg hiearchy. - * - * This supports ID3v1, ID3v2 and Xiph style comments as well as reading stream - * properties from the file. - */ - - namespace FLAC { - - //! An implementation of TagLib::File with FLAC specific methods - - /*! - * This implements and provides an interface for FLAC files to the - * TagLib::Tag and TagLib::AudioProperties interfaces by way of implementing - * the abstract TagLib::File API as well as providing some additional - * information specific to FLAC files. - */ - - class TAGLIB_EXPORT File : public TagLib::File - { - public: - /*! - * Contructs a FLAC file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - * - * \deprecated This constructor will be dropped in favor of the one below - * in a future version. - */ - File(FileName file, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Contructs a FLAC file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - * - * If this file contains and ID3v2 tag the frames will be created using - * \a frameFactory. - */ - // BIC: merge with the above constructor - File(FileName file, ID3v2::FrameFactory *frameFactory, - bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Contructs a FLAC file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - * - * If this file contains and ID3v2 tag the frames will be created using - * \a frameFactory. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - */ - // BIC: merge with the above constructor - File(IOStream *stream, ID3v2::FrameFactory *frameFactory, - bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Destroys this instance of the File. - */ - virtual ~File(); - - /*! - * Returns the Tag for this file. This will be a union of XiphComment, - * ID3v1 and ID3v2 tags. - * - * \see ID3v2Tag() - * \see ID3v1Tag() - * \see XiphComment() - */ - virtual TagLib::Tag *tag() const; - - /*! - * Implements the unified property interface -- export function. - * If the file contains more than one tag (e.g. XiphComment and ID3v1), - * only the first one (in the order XiphComment, ID3v2, ID3v1) will be - * converted to the PropertyMap. - */ - PropertyMap properties() const; - - void removeUnsupportedProperties(const StringList &); - - /*! - * Implements the unified property interface -- import function. - * As with the export, only one tag is taken into account. If the file - * has no tag at all, a XiphComment will be created. - */ - PropertyMap setProperties(const PropertyMap &); - - /*! - * Returns the FLAC::Properties for this file. If no audio properties - * were read then this will return a null pointer. - */ - virtual Properties *audioProperties() const; - - /*! - * Save the file. This will primarily save the XiphComment, but - * will also keep any old ID3-tags up to date. If the file - * has no XiphComment, one will be constructed from the ID3-tags. - * - * This returns true if the save was successful. - */ - virtual bool save(); - - /*! - * Returns a pointer to the ID3v2 tag of the file. - * - * If \a create is false (the default) this will return a null pointer - * if there is no valid ID3v2 tag. If \a create is true it will create - * an ID3v2 tag if one does not exist. - * - * \note The Tag <b>is still</b> owned by the FLAC::File and should not be - * deleted by the user. It will be deleted when the file (object) is - * destroyed. - */ - ID3v2::Tag *ID3v2Tag(bool create = false); - - /*! - * Returns a pointer to the ID3v1 tag of the file. - * - * If \a create is false (the default) this will return a null pointer - * if there is no valid ID3v1 tag. If \a create is true it will create - * an ID3v1 tag if one does not exist. - * - * \note The Tag <b>is still</b> owned by the FLAC::File and should not be - * deleted by the user. It will be deleted when the file (object) is - * destroyed. - */ - ID3v1::Tag *ID3v1Tag(bool create = false); - - /*! - * Returns a pointer to the XiphComment for the file. - * - * If \a create is false (the default) this will return a null pointer - * if there is no valid XiphComment. If \a create is true it will create - * a XiphComment if one does not exist. - * - * \note The Tag <b>is still</b> owned by the FLAC::File and should not be - * deleted by the user. It will be deleted when the file (object) is - * destroyed. - */ - Ogg::XiphComment *xiphComment(bool create = false); - - /*! - * Set the ID3v2::FrameFactory to something other than the default. This - * can be used to specify the way that ID3v2 frames will be interpreted - * when - * - * \see ID3v2FrameFactory - */ - void setID3v2FrameFactory(const ID3v2::FrameFactory *factory); - - /*! - * Returns the block of data used by FLAC::Properties for parsing the - * stream properties. - * - * \deprecated This method will not be public in a future release. - */ - ByteVector streamInfoData(); // BIC: remove - - /*! - * Returns the length of the audio-stream, used by FLAC::Properties for - * calculating the bitrate. - * - * \deprecated This method will not be public in a future release. - */ - long streamLength(); // BIC: remove - - /*! - * Returns a list of pictures attached to the FLAC file. - */ - List<Picture *> pictureList(); - - /*! - * Removes an attached picture. If \a del is true the picture's memory - * will be freed; if it is false, it must be deleted by the user. - */ - void removePicture(Picture *picture, bool del = true); - - /*! - * Remove all attached images. - */ - void removePictures(); - - /*! - * Add a new picture to the file. The file takes ownership of the - * picture and will handle freeing its memory. - * - * \note The file will be saved only after calling save(). - */ - void addPicture(Picture *picture); - - private: - File(const File &); - File &operator=(const File &); - - void read(bool readProperties, Properties::ReadStyle propertiesStyle); - void scan(); - long findID3v2(); - long findID3v1(); - ByteVector xiphCommentData() const; - long findPaddingBreak(long nextPageOffset, long targetOffset, bool *isLast); - - class FilePrivate; - FilePrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/flac/flacmetadatablock.cpp b/platform/win32/msvc/external/taglib/taglib/flac/flacmetadatablock.cpp deleted file mode 100644 index 7d161c27de3..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/flac/flacmetadatablock.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/************************************************************************** - copyright : (C) 2010 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <taglib.h> -#include <tdebug.h> -#include "flacmetadatablock.h" - -using namespace TagLib; - -class FLAC::MetadataBlock::MetadataBlockPrivate -{ -public: - MetadataBlockPrivate() {} - -}; - -FLAC::MetadataBlock::MetadataBlock() -{ - d = 0; -} - -FLAC::MetadataBlock::~MetadataBlock() -{ -} - diff --git a/platform/win32/msvc/external/taglib/taglib/flac/flacmetadatablock.h b/platform/win32/msvc/external/taglib/taglib/flac/flacmetadatablock.h deleted file mode 100644 index 41bca318df7..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/flac/flacmetadatablock.h +++ /dev/null @@ -1,75 +0,0 @@ -/************************************************************************** - copyright : (C) 2010 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_FLACMETADATABLOCK_H -#define TAGLIB_FLACMETADATABLOCK_H - -#include "tlist.h" -#include "tbytevector.h" -#include "taglib_export.h" - -namespace TagLib { - - namespace FLAC { - - class TAGLIB_EXPORT MetadataBlock - { - public: - MetadataBlock(); - virtual ~MetadataBlock(); - - enum BlockType { - StreamInfo = 0, - Padding, - Application, - SeekTable, - VorbisComment, - CueSheet, - Picture - }; - - /*! - * Returns the FLAC metadata block type. - */ - virtual int code() const = 0; - - /*! - * Render the content of the block. - */ - virtual ByteVector render() const = 0; - - private: - MetadataBlock(const MetadataBlock &item); - MetadataBlock &operator=(const MetadataBlock &item); - - class MetadataBlockPrivate; - MetadataBlockPrivate *d; - }; - - } - -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/flac/flacpicture.cpp b/platform/win32/msvc/external/taglib/taglib/flac/flacpicture.cpp deleted file mode 100644 index 36019248a67..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/flac/flacpicture.cpp +++ /dev/null @@ -1,221 +0,0 @@ -/************************************************************************** - copyright : (C) 2010 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <taglib.h> -#include <tdebug.h> -#include "flacpicture.h" - -using namespace TagLib; - -class FLAC::Picture::PicturePrivate -{ -public: - PicturePrivate() : - type(FLAC::Picture::Other), - width(0), - height(0), - colorDepth(0), - numColors(0) - {} - - Type type; - String mimeType; - String description; - int width; - int height; - int colorDepth; - int numColors; - ByteVector data; -}; - -FLAC::Picture::Picture() -{ - d = new PicturePrivate; -} - -FLAC::Picture::Picture(const ByteVector &data) -{ - d = new PicturePrivate; - parse(data); -} - -FLAC::Picture::~Picture() -{ - delete d; -} - -int FLAC::Picture::code() const -{ - return FLAC::MetadataBlock::Picture; -} - -bool FLAC::Picture::parse(const ByteVector &data) -{ - if(data.size() < 32) { - debug("A picture block must contain at least 5 bytes."); - return false; - } - - int pos = 0; - d->type = FLAC::Picture::Type(data.mid(pos, 4).toUInt()); - pos += 4; - uint mimeTypeLength = data.mid(pos, 4).toUInt(); - pos += 4; - if(pos + mimeTypeLength + 24 > data.size()) { - debug("Invalid picture block."); - return false; - } - d->mimeType = String(data.mid(pos, mimeTypeLength), String::UTF8); - pos += mimeTypeLength; - uint descriptionLength = data.mid(pos, 4).toUInt(); - pos += 4; - if(pos + descriptionLength + 20 > data.size()) { - debug("Invalid picture block."); - return false; - } - d->description = String(data.mid(pos, descriptionLength), String::UTF8); - pos += descriptionLength; - d->width = data.mid(pos, 4).toUInt(); - pos += 4; - d->height = data.mid(pos, 4).toUInt(); - pos += 4; - d->colorDepth = data.mid(pos, 4).toUInt(); - pos += 4; - d->numColors = data.mid(pos, 4).toUInt(); - pos += 4; - uint dataLength = data.mid(pos, 4).toUInt(); - pos += 4; - if(pos + dataLength > data.size()) { - debug("Invalid picture block."); - return false; - } - d->data = data.mid(pos, dataLength); - - return true; -} - -ByteVector FLAC::Picture::render() const -{ - ByteVector result; - result.append(ByteVector::fromUInt(d->type)); - ByteVector mimeTypeData = d->mimeType.data(String::UTF8); - result.append(ByteVector::fromUInt(mimeTypeData.size())); - result.append(mimeTypeData); - ByteVector descriptionData = d->description.data(String::UTF8); - result.append(ByteVector::fromUInt(descriptionData.size())); - result.append(descriptionData); - result.append(ByteVector::fromUInt(d->width)); - result.append(ByteVector::fromUInt(d->height)); - result.append(ByteVector::fromUInt(d->colorDepth)); - result.append(ByteVector::fromUInt(d->numColors)); - result.append(ByteVector::fromUInt(d->data.size())); - result.append(d->data); - return result; -} - -FLAC::Picture::Type FLAC::Picture::type() const -{ - return d->type; -} - -void FLAC::Picture::setType(FLAC::Picture::Type type) -{ - d->type = type; -} - -String FLAC::Picture::mimeType() const -{ - return d->mimeType; -} - -void FLAC::Picture::setMimeType(const String &mimeType) -{ - d->mimeType = mimeType; -} - -String FLAC::Picture::description() const -{ - return d->description; -} - -void FLAC::Picture::setDescription(const String &description) -{ - d->description = description; -} - -int FLAC::Picture::width() const -{ - return d->width; -} - -void FLAC::Picture::setWidth(int width) -{ - d->width = width; -} - -int FLAC::Picture::height() const -{ - return d->height; -} - -void FLAC::Picture::setHeight(int height) -{ - d->height = height; -} - -int FLAC::Picture::colorDepth() const -{ - return d->colorDepth; -} - -void FLAC::Picture::setColorDepth(int colorDepth) -{ - d->colorDepth = colorDepth; -} - -int FLAC::Picture::numColors() const -{ - return d->numColors; -} - -void FLAC::Picture::setNumColors(int numColors) -{ - d->numColors = numColors; -} - -ByteVector FLAC::Picture::data() const -{ - return d->data; -} - -void FLAC::Picture::setData(const ByteVector &data) -{ - d->data = data; -} - diff --git a/platform/win32/msvc/external/taglib/taglib/flac/flacpicture.h b/platform/win32/msvc/external/taglib/taglib/flac/flacpicture.h deleted file mode 100644 index b6def57a79a..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/flac/flacpicture.h +++ /dev/null @@ -1,208 +0,0 @@ -/************************************************************************** - copyright : (C) 2010 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_FLACPICTURE_H -#define TAGLIB_FLACPICTURE_H - -#include "tlist.h" -#include "tstring.h" -#include "tbytevector.h" -#include "taglib_export.h" -#include "flacmetadatablock.h" - -namespace TagLib { - - namespace FLAC { - - class TAGLIB_EXPORT Picture : public MetadataBlock - { - public: - - /*! - * This describes the function or content of the picture. - */ - enum Type { - //! A type not enumerated below - Other = 0x00, - //! 32x32 PNG image that should be used as the file icon - FileIcon = 0x01, - //! File icon of a different size or format - OtherFileIcon = 0x02, - //! Front cover image of the album - FrontCover = 0x03, - //! Back cover image of the album - BackCover = 0x04, - //! Inside leaflet page of the album - LeafletPage = 0x05, - //! Image from the album itself - Media = 0x06, - //! Picture of the lead artist or soloist - LeadArtist = 0x07, - //! Picture of the artist or performer - Artist = 0x08, - //! Picture of the conductor - Conductor = 0x09, - //! Picture of the band or orchestra - Band = 0x0A, - //! Picture of the composer - Composer = 0x0B, - //! Picture of the lyricist or text writer - Lyricist = 0x0C, - //! Picture of the recording location or studio - RecordingLocation = 0x0D, - //! Picture of the artists during recording - DuringRecording = 0x0E, - //! Picture of the artists during performance - DuringPerformance = 0x0F, - //! Picture from a movie or video related to the track - MovieScreenCapture = 0x10, - //! Picture of a large, coloured fish - ColouredFish = 0x11, - //! Illustration related to the track - Illustration = 0x12, - //! Logo of the band or performer - BandLogo = 0x13, - //! Logo of the publisher (record company) - PublisherLogo = 0x14 - }; - - Picture(); - Picture(const ByteVector &data); - ~Picture(); - - /*! - * Returns the type of the image. - */ - Type type() const; - - /*! - * Sets the type of the image. - */ - void setType(Type type); - - /*! - * Returns the mime type of the image. This should in most cases be - * "image/png" or "image/jpeg". - */ - String mimeType() const; - - /*! - * Sets the mime type of the image. This should in most cases be - * "image/png" or "image/jpeg". - */ - void setMimeType(const String &m); - - /*! - * Returns a text description of the image. - */ - - String description() const; - - /*! - * Sets a textual description of the image to \a desc. - */ - - void setDescription(const String &desc); - - /*! - * Returns the width of the image. - */ - int width() const; - - /*! - * Sets the width of the image. - */ - void setWidth(int w); - - /*! - * Returns the height of the image. - */ - int height() const; - - /*! - * Sets the height of the image. - */ - void setHeight(int h); - - /*! - * Returns the color depth (in bits-per-pixel) of the image. - */ - int colorDepth() const; - - /*! - * Sets the color depth (in bits-per-pixel) of the image. - */ - void setColorDepth(int depth); - - /*! - * Returns the number of colors used on the image.. - */ - int numColors() const; - - /*! - * Sets the number of colors used on the image (for indexed images). - */ - void setNumColors(int numColors); - - /*! - * Returns the image data. - */ - ByteVector data() const; - - /*! - * Sets the image data. - */ - void setData(const ByteVector &data); - - /*! - * Returns the FLAC metadata block type. - */ - int code() const; - - /*! - * Render the content to the FLAC picture block format. - */ - ByteVector render() const; - - /*! - * Parse the picture data in the FLAC picture block format. - */ - bool parse(const ByteVector &rawData); - - private: - Picture(const Picture &item); - Picture &operator=(const Picture &item); - - class PicturePrivate; - PicturePrivate *d; - }; - - typedef List<Picture> PictureList; - - } - -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/flac/flacproperties.cpp b/platform/win32/msvc/external/taglib/taglib/flac/flacproperties.cpp deleted file mode 100644 index 8bdc5d8dc19..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/flac/flacproperties.cpp +++ /dev/null @@ -1,169 +0,0 @@ -/*************************************************************************** - copyright : (C) 2003 by Allan Sandfeld Jensen - email : kde@carewolf.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tstring.h> -#include <tdebug.h> - -#include "flacproperties.h" -#include "flacfile.h" - -using namespace TagLib; - -class FLAC::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate(ByteVector d, long st, ReadStyle s) : - data(d), - streamLength(st), - style(s), - length(0), - bitrate(0), - sampleRate(0), - sampleWidth(0), - channels(0), - sampleFrames(0) {} - - ByteVector data; - long streamLength; - ReadStyle style; - int length; - int bitrate; - int sampleRate; - int sampleWidth; - int channels; - unsigned long long sampleFrames; - ByteVector signature; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -FLAC::Properties::Properties(ByteVector data, long streamLength, ReadStyle style) : AudioProperties(style) -{ - d = new PropertiesPrivate(data, streamLength, style); - read(); -} - -FLAC::Properties::Properties(File *file, ReadStyle style) : AudioProperties(style) -{ - d = new PropertiesPrivate(file->streamInfoData(), file->streamLength(), style); - read(); -} - -FLAC::Properties::~Properties() -{ - delete d; -} - -int FLAC::Properties::length() const -{ - return d->length; -} - -int FLAC::Properties::bitrate() const -{ - return d->bitrate; -} - -int FLAC::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int FLAC::Properties::sampleWidth() const -{ - return d->sampleWidth; -} - -int FLAC::Properties::channels() const -{ - return d->channels; -} - -unsigned long long FLAC::Properties::sampleFrames() const -{ - return d->sampleFrames; -} - -ByteVector FLAC::Properties::signature() const -{ - return d->signature; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void FLAC::Properties::read() -{ - if(d->data.size() < 18) { - debug("FLAC::Properties::read() - FLAC properties must contain at least 18 bytes."); - return; - } - - int pos = 0; - - // Minimum block size (in samples) - pos += 2; - - // Maximum block size (in samples) - pos += 2; - - // Minimum frame size (in bytes) - pos += 3; - - // Maximum frame size (in bytes) - pos += 3; - - uint flags = d->data.mid(pos, 4).toUInt(true); - pos += 4; - - d->sampleRate = flags >> 12; - d->channels = ((flags >> 9) & 7) + 1; - d->sampleWidth = ((flags >> 4) & 31) + 1; - - // The last 4 bits are the most significant 4 bits for the 36 bit - // stream length in samples. (Audio files measured in days) - - unsigned long long hi = flags & 0xf; - unsigned long long lo = d->data.mid(pos, 4).toUInt(true); - pos += 4; - - d->sampleFrames = (hi << 32) | lo; - - if(d->sampleRate > 0) - d->length = int(d->sampleFrames / d->sampleRate); - - // Uncompressed bitrate: - - //d->bitrate = ((d->sampleRate * d->channels) / 1000) * d->sampleWidth; - - // Real bitrate: - - d->bitrate = d->length > 0 ? ((d->streamLength * 8UL) / d->length) / 1000 : 0; - - d->signature = d->data.mid(pos, 32); -} diff --git a/platform/win32/msvc/external/taglib/taglib/flac/flacproperties.h b/platform/win32/msvc/external/taglib/taglib/flac/flacproperties.h deleted file mode 100644 index c1458981994..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/flac/flacproperties.h +++ /dev/null @@ -1,103 +0,0 @@ -/*************************************************************************** - copyright : (C) 2003 by Allan Sandfeld Jensen - email : kde@carewolf.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_FLACPROPERTIES_H -#define TAGLIB_FLACPROPERTIES_H - -#include "taglib_export.h" -#include "audioproperties.h" - -namespace TagLib { - - namespace FLAC { - - class File; - - //! An implementation of audio property reading for FLAC - - /*! - * This reads the data from an FLAC stream found in the AudioProperties - * API. - */ - - class TAGLIB_EXPORT Properties : public AudioProperties - { - public: - /*! - * Create an instance of FLAC::Properties with the data read from the - * ByteVector \a data. - */ - // BIC: switch to const reference - Properties(ByteVector data, long streamLength, ReadStyle style = Average); - - /*! - * Create an instance of FLAC::Properties with the data read from the - * FLAC::File \a file. - */ - // BIC: remove - Properties(File *file, ReadStyle style = Average); - - /*! - * Destroys this FLAC::Properties instance. - */ - virtual ~Properties(); - - // Reimplementations. - - virtual int length() const; - virtual int bitrate() const; - virtual int sampleRate() const; - virtual int channels() const; - - /*! - * Returns the sample width as read from the FLAC identification - * header. - */ - int sampleWidth() const; - - /*! - * Return the number of sample frames - */ - unsigned long long sampleFrames() const; - - /*! - * Returns the MD5 signature of the uncompressed audio stream as read - * from the stream info header header. - */ - ByteVector signature() const; - - private: - Properties(const Properties &); - Properties &operator=(const Properties &); - - void read(); - - class PropertiesPrivate; - PropertiesPrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/flac/flacunknownmetadatablock.cpp b/platform/win32/msvc/external/taglib/taglib/flac/flacunknownmetadatablock.cpp deleted file mode 100644 index 1265affbb3b..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/flac/flacunknownmetadatablock.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/************************************************************************** - copyright : (C) 2010 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <taglib.h> -#include <tdebug.h> -#include <tstring.h> -#include "flacunknownmetadatablock.h" - -using namespace TagLib; - -class FLAC::UnknownMetadataBlock::UnknownMetadataBlockPrivate -{ -public: - UnknownMetadataBlockPrivate() : code(0) {} - - int code; - ByteVector data; -}; - -FLAC::UnknownMetadataBlock::UnknownMetadataBlock(int code, const ByteVector &data) -{ - d = new UnknownMetadataBlockPrivate; - d->code = code; - //debug(String(data.toHex())); - d->data = data; -} - -FLAC::UnknownMetadataBlock::~UnknownMetadataBlock() -{ - delete d; -} - -int FLAC::UnknownMetadataBlock::code() const -{ - return d->code; -} - -void FLAC::UnknownMetadataBlock::setCode(int code) -{ - d->code = code; -} - -ByteVector FLAC::UnknownMetadataBlock::data() const -{ - return d->data; -} - -void FLAC::UnknownMetadataBlock::setData(const ByteVector &data) -{ - d->data = data; -} - -ByteVector FLAC::UnknownMetadataBlock::render() const -{ - return d->data; -} - diff --git a/platform/win32/msvc/external/taglib/taglib/flac/flacunknownmetadatablock.h b/platform/win32/msvc/external/taglib/taglib/flac/flacunknownmetadatablock.h deleted file mode 100644 index 3030254e329..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/flac/flacunknownmetadatablock.h +++ /dev/null @@ -1,81 +0,0 @@ -/************************************************************************** - copyright : (C) 2010 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_FLACUNKNOWNMETADATABLOCK_H -#define TAGLIB_FLACUNKNOWNMETADATABLOCK_H - -#include "tlist.h" -#include "tbytevector.h" -#include "taglib_export.h" -#include "flacmetadatablock.h" - -namespace TagLib { - - namespace FLAC { - - class TAGLIB_EXPORT UnknownMetadataBlock : public MetadataBlock - { - public: - UnknownMetadataBlock(int blockType, const ByteVector &data); - ~UnknownMetadataBlock(); - - /*! - * Returns the FLAC metadata block type. - */ - int code() const; - - /*! - * Sets the FLAC metadata block type. - */ - void setCode(int code); - - /*! - * Returns the FLAC metadata block type. - */ - ByteVector data() const; - - /*! - * Sets the FLAC metadata block type. - */ - void setData(const ByteVector &data); - - /*! - * Render the content of the block. - */ - ByteVector render() const; - - private: - UnknownMetadataBlock(const MetadataBlock &item); - UnknownMetadataBlock &operator=(const MetadataBlock &item); - - class UnknownMetadataBlockPrivate; - UnknownMetadataBlockPrivate *d; - }; - - } - -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/it/itfile.cpp b/platform/win32/msvc/external/taglib/taglib/it/itfile.cpp deleted file mode 100644 index 4e049518edb..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/it/itfile.cpp +++ /dev/null @@ -1,328 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "tstringlist.h" -#include "itfile.h" -#include "tdebug.h" -#include "modfileprivate.h" -#include "tpropertymap.h" - -using namespace TagLib; -using namespace IT; - -class IT::File::FilePrivate -{ -public: - FilePrivate(AudioProperties::ReadStyle propertiesStyle) - : tag(), properties(propertiesStyle) - { - } - - Mod::Tag tag; - IT::Properties properties; -}; - -IT::File::File(FileName file, bool readProperties, - AudioProperties::ReadStyle propertiesStyle) : - Mod::FileBase(file), - d(new FilePrivate(propertiesStyle)) -{ - read(readProperties); -} - -IT::File::File(IOStream *stream, bool readProperties, - AudioProperties::ReadStyle propertiesStyle) : - Mod::FileBase(stream), - d(new FilePrivate(propertiesStyle)) -{ - read(readProperties); -} - -IT::File::~File() -{ - delete d; -} - -Mod::Tag *IT::File::tag() const -{ - return &d->tag; -} - -PropertyMap IT::File::properties() const -{ - return d->tag.properties(); -} - -PropertyMap IT::File::setProperties(const PropertyMap &properties) -{ - return d->tag.setProperties(properties); -} - -IT::Properties *IT::File::audioProperties() const -{ - return &d->properties; -} - -bool IT::File::save() -{ - if(readOnly()) - { - debug("IT::File::save() - Cannot save to a read only file."); - return false; - } - seek(4); - writeString(d->tag.title(), 25); - writeByte(0); - - seek(2, Current); - - ushort length = 0; - ushort instrumentCount = 0; - ushort sampleCount = 0; - - if(!readU16L(length) || !readU16L(instrumentCount) || !readU16L(sampleCount)) - return false; - - seek(15, Current); - - // write comment as instrument and sample names: - StringList lines = d->tag.comment().split("\n"); - for(ushort i = 0; i < instrumentCount; ++ i) { - seek(192L + length + ((long)i << 2)); - ulong instrumentOffset = 0; - if(!readU32L(instrumentOffset)) - return false; - - seek(instrumentOffset + 32); - - if(i < lines.size()) - writeString(lines[i], 25); - else - writeString(String::null, 25); - writeByte(0); - } - - for(ushort i = 0; i < sampleCount; ++ i) { - seek(192L + length + ((long)instrumentCount << 2) + ((long)i << 2)); - ulong sampleOffset = 0; - if(!readU32L(sampleOffset)) - return false; - - seek(sampleOffset + 20); - - if((TagLib::uint)(i + instrumentCount) < lines.size()) - writeString(lines[i + instrumentCount], 25); - else - writeString(String::null, 25); - writeByte(0); - } - - // write rest as message: - StringList messageLines; - for(uint i = instrumentCount + sampleCount; i < lines.size(); ++ i) - messageLines.append(lines[i]); - ByteVector message = messageLines.toString("\r").data(String::Latin1); - - // it's actually not really stated if the message needs a - // terminating NUL but it does not hurt to add one: - if(message.size() > 7999) - message.resize(7999); - message.append((char)0); - - ushort special = 0; - ushort messageLength = 0; - ulong messageOffset = 0; - - seek(46); - if(!readU16L(special)) - return false; - - ulong fileSize = File::length(); - if(special & Properties::MessageAttached) { - seek(54); - if(!readU16L(messageLength) || !readU32L(messageOffset)) - return false; - - if(messageLength == 0) - messageOffset = fileSize; - } - else - { - messageOffset = fileSize; - seek(46); - writeU16L(special | 0x1); - } - - if(messageOffset + messageLength >= fileSize) { - // append new message - seek(54); - writeU16L(message.size()); - writeU32L(messageOffset); - seek(messageOffset); - writeBlock(message); - truncate(messageOffset + message.size()); - } - else { - // Only overwrite existing message. - // I'd need to parse (understand!) the whole file for more. - // Although I could just move the message to the end of file - // and let the existing one be, but that would waste space. - message.resize(messageLength, 0); - seek(messageOffset); - writeBlock(message); - } - return true; -} - -void IT::File::read(bool) -{ - if(!isOpen()) - return; - - seek(0); - READ_ASSERT(readBlock(4) == "IMPM"); - READ_STRING(d->tag.setTitle, 26); - - seek(2, Current); - - READ_U16L_AS(length); - READ_U16L_AS(instrumentCount); - READ_U16L_AS(sampleCount); - - d->properties.setInstrumentCount(instrumentCount); - d->properties.setSampleCount(sampleCount); - READ_U16L(d->properties.setPatternCount); - READ_U16L(d->properties.setVersion); - READ_U16L(d->properties.setCompatibleVersion); - READ_U16L(d->properties.setFlags); - READ_U16L_AS(special); - d->properties.setSpecial(special); - READ_BYTE(d->properties.setGlobalVolume); - READ_BYTE(d->properties.setMixVolume); - READ_BYTE(d->properties.setBpmSpeed); - READ_BYTE(d->properties.setTempo); - READ_BYTE(d->properties.setPanningSeparation); - READ_BYTE(d->properties.setPitchWheelDepth); - - // IT supports some kind of comment tag. Still, the - // sample/instrument names are abused as comments so - // I just add all together. - String message; - if(special & Properties::MessageAttached) { - READ_U16L_AS(messageLength); - READ_U32L_AS(messageOffset); - seek(messageOffset); - ByteVector messageBytes = readBlock(messageLength); - READ_ASSERT(messageBytes.size() == messageLength); - int index = messageBytes.find((char) 0); - if(index > -1) - messageBytes.resize(index, 0); - messageBytes.replace('\r', '\n'); - message = messageBytes; - } - - seek(64); - - ByteVector pannings = readBlock(64); - ByteVector volumes = readBlock(64); - READ_ASSERT(pannings.size() == 64 && volumes.size() == 64); - int channels = 0; - for(int i = 0; i < 64; ++ i) { - // Strictly speaking an IT file has always 64 channels, but - // I don't count disabled and muted channels. - // But this always gives 64 channels for all my files anyway. - // Strangely VLC does report other values. I wonder how VLC - // gets it's values. - if((unsigned char) pannings[i] < 128 && volumes[i] > 0) - ++channels; - } - d->properties.setChannels(channels); - - // real length might be shorter because of skips and terminator - ushort realLength = 0; - for(ushort i = 0; i < length; ++ i) { - READ_BYTE_AS(order); - if(order == 255) break; - if(order != 254) ++ realLength; - } - d->properties.setLengthInPatterns(realLength); - - StringList comment; - // Note: I found files that have nil characters somewhere - // in the instrument/sample names and more characters - // afterwards. The spec does not mention such a case. - // Currently I just discard anything after a nil, but - // e.g. VLC seems to interprete a nil as a space. I - // don't know what is the proper behaviour. - for(ushort i = 0; i < instrumentCount; ++ i) { - seek(192L + length + ((long)i << 2)); - READ_U32L_AS(instrumentOffset); - seek(instrumentOffset); - - ByteVector instrumentMagic = readBlock(4); - READ_ASSERT(instrumentMagic == "IMPI"); - - READ_STRING_AS(dosFileName, 13); - - seek(15, Current); - - READ_STRING_AS(instrumentName, 26); - comment.append(instrumentName); - } - - for(ushort i = 0; i < sampleCount; ++ i) { - seek(192L + length + ((long)instrumentCount << 2) + ((long)i << 2)); - READ_U32L_AS(sampleOffset); - - seek(sampleOffset); - - ByteVector sampleMagic = readBlock(4); - READ_ASSERT(sampleMagic == "IMPS"); - - READ_STRING_AS(dosFileName, 13); - READ_BYTE_AS(globalVolume); - READ_BYTE_AS(sampleFlags); - READ_BYTE_AS(sampleVolume); - READ_STRING_AS(sampleName, 26); - /* - READ_BYTE_AS(sampleCvt); - READ_BYTE_AS(samplePanning); - READ_U32L_AS(sampleLength); - READ_U32L_AS(loopStart); - READ_U32L_AS(loopStop); - READ_U32L_AS(c5speed); - READ_U32L_AS(sustainLoopStart); - READ_U32L_AS(sustainLoopEnd); - READ_U32L_AS(sampleDataOffset); - READ_BYTE_AS(vibratoSpeed); - READ_BYTE_AS(vibratoDepth); - READ_BYTE_AS(vibratoRate); - READ_BYTE_AS(vibratoType); - */ - - comment.append(sampleName); - } - - if(message.size() > 0) - comment.append(message); - d->tag.setComment(comment.toString("\n")); - d->tag.setTrackerName("Impulse Tracker"); -} diff --git a/platform/win32/msvc/external/taglib/taglib/it/itfile.h b/platform/win32/msvc/external/taglib/taglib/it/itfile.h deleted file mode 100644 index 5584b7cd9ac..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/it/itfile.h +++ /dev/null @@ -1,105 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef TAGLIB_ITFILE_H -#define TAGLIB_ITFILE_H - -#include "tfile.h" -#include "audioproperties.h" -#include "taglib_export.h" -#include "modfilebase.h" -#include "modtag.h" -#include "itproperties.h" - -namespace TagLib { - - namespace IT { - - class TAGLIB_EXPORT File : public Mod::FileBase { - public: - /*! - * Contructs a Impulse Tracker file from \a file. If \a readProperties - * is true the file's audio properties will also be read using - * \a propertiesStyle. If false, \a propertiesStyle is ignored. - */ - File(FileName file, bool readProperties = true, - AudioProperties::ReadStyle propertiesStyle = - AudioProperties::Average); - - /*! - * Contructs a Impulse Tracker file from \a stream. If \a readProperties - * is true the file's audio properties will also be read using - * \a propertiesStyle. If false, \a propertiesStyle is ignored. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - */ - File(IOStream *stram, bool readProperties = true, - AudioProperties::ReadStyle propertiesStyle = - AudioProperties::Average); - - /*! - * Destroys this instance of the File. - */ - virtual ~File(); - - Mod::Tag *tag() const; - - /*! - * Forwards to Mod::Tag::properties(). - * BIC: will be removed once File::toDict() is made virtual - */ - PropertyMap properties() const; - - /*! - * Forwards to Mod::Tag::setProperties(). - * BIC: will be removed once File::setProperties() is made virtual - */ - PropertyMap setProperties(const PropertyMap &); - - /*! - * Returns the IT::Properties for this file. If no audio properties - * were read then this will return a null pointer. - */ - IT::Properties *audioProperties() const; - - /*! - * Save the file. - * This is the same as calling save(AllTags); - * - * \note Saving Impulse Tracker tags is not supported. - */ - bool save(); - - - private: - File(const File &); - File &operator=(const File &); - - void read(bool readProperties); - - class FilePrivate; - FilePrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/it/itproperties.cpp b/platform/win32/msvc/external/taglib/taglib/it/itproperties.cpp deleted file mode 100644 index 7a328fb9451..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/it/itproperties.cpp +++ /dev/null @@ -1,245 +0,0 @@ -/*************************************************************************** - copyright :(C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "itproperties.h" - -using namespace TagLib; -using namespace IT; - -class IT::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate() : - channels(0), - lengthInPatterns(0), - instrumentCount(0), - sampleCount(0), - patternCount(0), - version(0), - compatibleVersion(0), - flags(0), - special(0), - globalVolume(0), - mixVolume(0), - tempo(0), - bpmSpeed(0), - panningSeparation(0), - pitchWheelDepth(0) - { - } - - int channels; - ushort lengthInPatterns; - ushort instrumentCount; - ushort sampleCount; - ushort patternCount; - ushort version; - ushort compatibleVersion; - ushort flags; - ushort special; - uchar globalVolume; - uchar mixVolume; - uchar tempo; - uchar bpmSpeed; - uchar panningSeparation; - uchar pitchWheelDepth; -}; - -IT::Properties::Properties(AudioProperties::ReadStyle propertiesStyle) : - AudioProperties(propertiesStyle), - d(new PropertiesPrivate) -{ -} - -IT::Properties::~Properties() -{ - delete d; -} - -int IT::Properties::length() const -{ - return 0; -} - -int IT::Properties::bitrate() const -{ - return 0; -} - -int IT::Properties::sampleRate() const -{ - return 0; -} - -int IT::Properties::channels() const -{ - return d->channels; -} - -TagLib::ushort IT::Properties::lengthInPatterns() const -{ - return d->lengthInPatterns; -} - -bool IT::Properties::stereo() const -{ - return d->flags & Stereo; -} - -TagLib::ushort IT::Properties::instrumentCount() const -{ - return d->instrumentCount; -} - -TagLib::ushort IT::Properties::sampleCount() const -{ - return d->sampleCount; -} - -TagLib::ushort IT::Properties::patternCount() const -{ - return d->patternCount; -} - -TagLib::ushort IT::Properties::version() const -{ - return d->version; -} - -TagLib::ushort IT::Properties::compatibleVersion() const -{ - return d->compatibleVersion; -} - -TagLib::ushort IT::Properties::flags() const -{ - return d->flags; -} - -TagLib::ushort IT::Properties::special() const -{ - return d->special; -} - -uchar IT::Properties::globalVolume() const -{ - return d->globalVolume; -} - -uchar IT::Properties::mixVolume() const -{ - return d->mixVolume; -} - -uchar IT::Properties::tempo() const -{ - return d->tempo; -} - -uchar IT::Properties::bpmSpeed() const -{ - return d->bpmSpeed; -} - -uchar IT::Properties::panningSeparation() const -{ - return d->panningSeparation; -} - -uchar IT::Properties::pitchWheelDepth() const -{ - return d->pitchWheelDepth; -} - -void IT::Properties::setChannels(int channels) -{ - d->channels = channels; -} - -void IT::Properties::setLengthInPatterns(ushort lengthInPatterns) -{ - d->lengthInPatterns = lengthInPatterns; -} - -void IT::Properties::setInstrumentCount(ushort instrumentCount) -{ - d->instrumentCount = instrumentCount; -} - -void IT::Properties::setSampleCount(ushort sampleCount) -{ - d->sampleCount = sampleCount; -} - -void IT::Properties::setPatternCount(ushort patternCount) -{ - d->patternCount = patternCount; -} - -void IT::Properties::setFlags(ushort flags) -{ - d->flags = flags; -} - -void IT::Properties::setSpecial(ushort special) -{ - d->special = special; -} - -void IT::Properties::setCompatibleVersion(ushort compatibleVersion) -{ - d->compatibleVersion = compatibleVersion; -} - -void IT::Properties::setVersion(ushort version) -{ - d->version = version; -} - -void IT::Properties::setGlobalVolume(uchar globalVolume) -{ - d->globalVolume = globalVolume; -} - -void IT::Properties::setMixVolume(uchar mixVolume) -{ - d->mixVolume = mixVolume; -} - -void IT::Properties::setTempo(uchar tempo) -{ - d->tempo = tempo; -} - -void IT::Properties::setBpmSpeed(uchar bpmSpeed) -{ - d->bpmSpeed = bpmSpeed; -} - -void IT::Properties::setPanningSeparation(uchar panningSeparation) -{ - d->panningSeparation = panningSeparation; -} - -void IT::Properties::setPitchWheelDepth(uchar pitchWheelDepth) -{ - d->pitchWheelDepth = pitchWheelDepth; -} diff --git a/platform/win32/msvc/external/taglib/taglib/it/itproperties.h b/platform/win32/msvc/external/taglib/taglib/it/itproperties.h deleted file mode 100644 index da2a7c4fb8a..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/it/itproperties.h +++ /dev/null @@ -1,101 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef TAGLIB_ITPROPERTIES_H -#define TAGLIB_ITPROPERTIES_H - -#include "taglib.h" -#include "audioproperties.h" - -namespace TagLib { - namespace IT { - class TAGLIB_EXPORT Properties : public AudioProperties { - friend class File; - public: - /*! Flag bits. */ - enum { - Stereo = 1, - Vol0MixOptimizations = 2, - UseInstruments = 4, - LinearSlides = 8, - OldEffects = 16, - LinkEffects = 32, - UseMidiPitchController = 64, - RequestEmbeddedMidiConf = 128 - }; - - /*! Special bits. */ - enum { - MessageAttached = 1, - MidiConfEmbedded = 8 - }; - - Properties(AudioProperties::ReadStyle propertiesStyle); - virtual ~Properties(); - - int length() const; - int bitrate() const; - int sampleRate() const; - int channels() const; - - ushort lengthInPatterns() const; - bool stereo() const; - ushort instrumentCount() const; - ushort sampleCount() const; - ushort patternCount() const; - ushort version() const; - ushort compatibleVersion() const; - ushort flags() const; - ushort special() const; - uchar globalVolume() const; - uchar mixVolume() const; - uchar tempo() const; - uchar bpmSpeed() const; - uchar panningSeparation() const; - uchar pitchWheelDepth() const; - - void setChannels(int channels); - void setLengthInPatterns(ushort lengthInPatterns); - void setInstrumentCount(ushort instrumentCount); - void setSampleCount (ushort sampleCount); - void setPatternCount(ushort patternCount); - void setVersion (ushort version); - void setCompatibleVersion(ushort compatibleVersion); - void setFlags (ushort flags); - void setSpecial (ushort special); - void setGlobalVolume(uchar globalVolume); - void setMixVolume (uchar mixVolume); - void setTempo (uchar tempo); - void setBpmSpeed (uchar bpmSpeed); - void setPanningSeparation(uchar panningSeparation); - void setPitchWheelDepth (uchar pitchWheelDepth); - - private: - Properties(const Properties&); - Properties &operator=(const Properties&); - - class PropertiesPrivate; - PropertiesPrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mod/modfile.cpp b/platform/win32/msvc/external/taglib/taglib/mod/modfile.cpp deleted file mode 100644 index 25fc8715abb..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mod/modfile.cpp +++ /dev/null @@ -1,185 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "modfile.h" -#include "tstringlist.h" -#include "tdebug.h" -#include "modfileprivate.h" -#include "tpropertymap.h" - -using namespace TagLib; -using namespace Mod; - -class Mod::File::FilePrivate -{ -public: - FilePrivate(AudioProperties::ReadStyle propertiesStyle) - : properties(propertiesStyle) - { - } - - Mod::Tag tag; - Mod::Properties properties; -}; - -Mod::File::File(FileName file, bool readProperties, - AudioProperties::ReadStyle propertiesStyle) : - Mod::FileBase(file), - d(new FilePrivate(propertiesStyle)) -{ - read(readProperties); -} - -Mod::File::File(IOStream *stream, bool readProperties, - AudioProperties::ReadStyle propertiesStyle) : - Mod::FileBase(stream), - d(new FilePrivate(propertiesStyle)) -{ - read(readProperties); -} - -Mod::File::~File() -{ - delete d; -} - -Mod::Tag *Mod::File::tag() const -{ - return &d->tag; -} - -Mod::Properties *Mod::File::audioProperties() const -{ - return &d->properties; -} - -PropertyMap Mod::File::properties() const -{ - return d->tag.properties(); -} - -PropertyMap Mod::File::setProperties(const PropertyMap &properties) -{ - return d->tag.setProperties(properties); -} - -bool Mod::File::save() -{ - if(readOnly()) { - debug("Mod::File::save() - Cannot save to a read only file."); - return false; - } - seek(0); - writeString(d->tag.title(), 20); - StringList lines = d->tag.comment().split("\n"); - uint n = std::min(lines.size(), d->properties.instrumentCount()); - for(uint i = 0; i < n; ++ i) { - writeString(lines[i], 22); - seek(8, Current); - } - - for(uint i = n; i < d->properties.instrumentCount(); ++ i) { - writeString(String::null, 22); - seek(8, Current); - } - return true; -} - -void Mod::File::read(bool) -{ - if(!isOpen()) - return; - - seek(1080); - ByteVector modId = readBlock(4); - READ_ASSERT(modId.size() == 4); - - int channels = 4; - uint instruments = 31; - if(modId == "M.K." || modId == "M!K!" || modId == "M&K!" || modId == "N.T.") { - d->tag.setTrackerName("ProTracker"); - channels = 4; - } - else if(modId.startsWith("FLT") || modId.startsWith("TDZ")) { - d->tag.setTrackerName("StarTrekker"); - char digit = modId[3]; - READ_ASSERT(digit >= '0' && digit <= '9'); - channels = digit - '0'; - } - else if(modId.endsWith("CHN")) { - d->tag.setTrackerName("StarTrekker"); - char digit = modId[0]; - READ_ASSERT(digit >= '0' && digit <= '9'); - channels = digit - '0'; - } - else if(modId == "CD81" || modId == "OKTA") { - d->tag.setTrackerName("Atari Oktalyzer"); - channels = 8; - } - else if(modId.endsWith("CH") || modId.endsWith("CN")) { - d->tag.setTrackerName("TakeTracker"); - char digit = modId[0]; - READ_ASSERT(digit >= '0' && digit <= '9'); - channels = (digit - '0') * 10; - digit = modId[1]; - READ_ASSERT(digit >= '0' && digit <= '9'); - channels += digit - '0'; - } - else { - // Not sure if this is correct. I'd need a file - // created with NoiseTracker to check this. - d->tag.setTrackerName("NoiseTracker"); // probably - channels = 4; - instruments = 15; - } - d->properties.setChannels(channels); - d->properties.setInstrumentCount(instruments); - - seek(0); - READ_STRING(d->tag.setTitle, 20); - - StringList comment; - for(uint i = 0; i < instruments; ++ i) { - READ_STRING_AS(instrumentName, 22); - // value in words, * 2 (<< 1) for bytes: - READ_U16B_AS(sampleLength); - - READ_BYTE_AS(fineTuneByte); - int fineTune = fineTuneByte & 0xF; - // > 7 means negative value - if(fineTune > 7) fineTune -= 16; - - READ_BYTE_AS(volume); - if(volume > 64) volume = 64; - // volume in decibels: 20 * log10(volume / 64) - - // value in words, * 2 (<< 1) for bytes: - READ_U16B_AS(repeatStart); - // value in words, * 2 (<< 1) for bytes: - READ_U16B_AS(repatLength); - - comment.append(instrumentName); - } - - READ_BYTE(d->properties.setLengthInPatterns); - - d->tag.setComment(comment.toString("\n")); -} diff --git a/platform/win32/msvc/external/taglib/taglib/mod/modfile.h b/platform/win32/msvc/external/taglib/taglib/mod/modfile.h deleted file mode 100644 index ad1e43b88a3..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mod/modfile.h +++ /dev/null @@ -1,106 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef TAGLIB_MODFILE_H -#define TAGLIB_MODFILE_H - -#include "tfile.h" -#include "audioproperties.h" -#include "taglib_export.h" -#include "modfilebase.h" -#include "modtag.h" -#include "modproperties.h" - -namespace TagLib { - - namespace Mod { - - class TAGLIB_EXPORT File : public TagLib::Mod::FileBase - { - public: - /*! - * Contructs a Protracker file from \a file. If \a readProperties - * is true the file's audio properties will also be read using - * \a propertiesStyle. If false, \a propertiesStyle is ignored. - */ - File(FileName file, bool readProperties = true, - AudioProperties::ReadStyle propertiesStyle = - AudioProperties::Average); - - /*! - * Contructs a Protracker file from \a stream. If \a readProperties - * is true the file's audio properties will also be read using - * \a propertiesStyle. If false, \a propertiesStyle is ignored. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - */ - File(IOStream *stream, bool readProperties = true, - AudioProperties::ReadStyle propertiesStyle = - AudioProperties::Average); - - /*! - * Destroys this instance of the File. - */ - virtual ~File(); - - Mod::Tag *tag() const; - - /*! - * Implements the unified property interface -- export function. - * Forwards to Mod::Tag::properties(). - */ - PropertyMap properties() const; - - /*! - * Implements the unified property interface -- import function. - * Forwards to Mod::Tag::setProperties(). - */ - PropertyMap setProperties(const PropertyMap &); - /*! - * Returns the Mod::Properties for this file. If no audio properties - * were read then this will return a null pointer. - */ - Mod::Properties *audioProperties() const; - - /*! - * Save the file. - * This is the same as calling save(AllTags); - * - * \note Saving Protracker tags is not supported. - */ - bool save(); - - private: - File(const File &); - File &operator=(const File &); - - void read(bool readProperties); - - class FilePrivate; - FilePrivate *d; - }; - - } - -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mod/modfilebase.cpp b/platform/win32/msvc/external/taglib/taglib/mod/modfilebase.cpp deleted file mode 100644 index e074dac855c..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mod/modfilebase.cpp +++ /dev/null @@ -1,120 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "tdebug.h" -#include "modfilebase.h" - -using namespace TagLib; -using namespace Mod; - -Mod::FileBase::FileBase(FileName file) : TagLib::File(file) -{ -} - -Mod::FileBase::FileBase(IOStream *stream) : TagLib::File(stream) -{ -} - -void Mod::FileBase::writeString(const String &s, ulong size, char padding) -{ - ByteVector data(s.data(String::Latin1)); - data.resize(size, padding); - writeBlock(data); -} - -bool Mod::FileBase::readString(String &s, ulong size) -{ - ByteVector data(readBlock(size)); - if(data.size() < size) return false; - int index = data.find((char) 0); - if(index > -1) - { - data.resize(index); - } - data.replace((char) 0xff, ' '); - - s = data; - return true; -} - -void Mod::FileBase::writeByte(uchar byte) -{ - ByteVector data(1, byte); - writeBlock(data); -} - -void Mod::FileBase::writeU16L(ushort number) -{ - writeBlock(ByteVector::fromShort(number, false)); -} - -void Mod::FileBase::writeU32L(ulong number) -{ - writeBlock(ByteVector::fromUInt(number, false)); -} - -void Mod::FileBase::writeU16B(ushort number) -{ - writeBlock(ByteVector::fromShort(number, true)); -} - -void Mod::FileBase::writeU32B(ulong number) -{ - writeBlock(ByteVector::fromUInt(number, true)); -} - -bool Mod::FileBase::readByte(uchar &byte) -{ - ByteVector data(readBlock(1)); - if(data.size() < 1) return false; - byte = data[0]; - return true; -} - -bool Mod::FileBase::readU16L(ushort &number) -{ - ByteVector data(readBlock(2)); - if(data.size() < 2) return false; - number = data.toUShort(false); - return true; -} - -bool Mod::FileBase::readU32L(ulong &number) { - ByteVector data(readBlock(4)); - if(data.size() < 4) return false; - number = data.toUInt(false); - return true; -} - -bool Mod::FileBase::readU16B(ushort &number) -{ - ByteVector data(readBlock(2)); - if(data.size() < 2) return false; - number = data.toUShort(true); - return true; -} - -bool Mod::FileBase::readU32B(ulong &number) { - ByteVector data(readBlock(4)); - if(data.size() < 4) return false; - number = data.toUInt(true); - return true; -} diff --git a/platform/win32/msvc/external/taglib/taglib/mod/modfilebase.h b/platform/win32/msvc/external/taglib/taglib/mod/modfilebase.h deleted file mode 100644 index 383bde11898..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mod/modfilebase.h +++ /dev/null @@ -1,62 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef TAGLIB_MODFILEBASE_H -#define TAGLIB_MODFILEBASE_H - -#include "taglib.h" -#include "tfile.h" -#include "tstring.h" -#include "tlist.h" -#include "taglib_export.h" - -#include <algorithm> - -namespace TagLib { - - namespace Mod { - - class TAGLIB_EXPORT FileBase : public TagLib::File - { - protected: - FileBase(FileName file); - FileBase(IOStream *stream); - - void writeString(const String &s, ulong size, char padding = 0); - void writeByte(uchar byte); - void writeU16L(ushort number); - void writeU32L(ulong number); - void writeU16B(ushort number); - void writeU32B(ulong number); - - bool readString(String &s, ulong size); - bool readByte(uchar &byte); - bool readU16L(ushort &number); - bool readU32L(ulong &number); - bool readU16B(ushort &number); - bool readU32B(ulong &number); - }; - - } - -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mod/modfileprivate.h b/platform/win32/msvc/external/taglib/taglib/mod/modfileprivate.h deleted file mode 100644 index 19a30019905..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mod/modfileprivate.h +++ /dev/null @@ -1,67 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef TAGLIB_MODFILEPRIVATE_H -#define TAGLIB_MODFILEPRIVATE_H - -// some helper-macros only used internally by (s3m|it|xm)file.cpp -#define READ_ASSERT(cond) \ - if(!(cond)) \ - { \ - setValid(false); \ - return; \ - } - -#define READ(setter,type,read) \ - { \ - type number; \ - READ_ASSERT(read(number)); \ - setter(number); \ - } - -#define READ_BYTE(setter) READ(setter,uchar,readByte) -#define READ_U16L(setter) READ(setter,ushort,readU16L) -#define READ_U32L(setter) READ(setter,ulong,readU32L) -#define READ_U16B(setter) READ(setter,ushort,readU16B) -#define READ_U32B(setter) READ(setter,ulong,readU32B) - -#define READ_STRING(setter,size) \ - { \ - String s; \ - READ_ASSERT(readString(s, size)); \ - setter(s); \ - } - -#define READ_AS(type,name,read) \ - type name = 0; \ - READ_ASSERT(read(name)); - -#define READ_BYTE_AS(name) READ_AS(uchar,name,readByte) -#define READ_U16L_AS(name) READ_AS(ushort,name,readU16L) -#define READ_U32L_AS(name) READ_AS(ulong,name,readU32L) -#define READ_U16B_AS(name) READ_AS(ushort,name,readU16B) -#define READ_U32B_AS(name) READ_AS(ulong,name,readU32B) - -#define READ_STRING_AS(name,size) \ - String name; \ - READ_ASSERT(readString(name, size)); - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mod/modproperties.cpp b/platform/win32/msvc/external/taglib/taglib/mod/modproperties.cpp deleted file mode 100644 index 4d3c354846e..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mod/modproperties.cpp +++ /dev/null @@ -1,96 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "modproperties.h" - -using namespace TagLib; -using namespace Mod; - -class Mod::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate() : - channels(0), - instrumentCount(0), - lengthInPatterns(0) - { - } - - int channels; - uint instrumentCount; - uchar lengthInPatterns; -}; - -Mod::Properties::Properties(AudioProperties::ReadStyle propertiesStyle) : - AudioProperties(propertiesStyle), - d(new PropertiesPrivate) -{ -} - -Mod::Properties::~Properties() -{ - delete d; -} - -int Mod::Properties::length() const -{ - return 0; -} - -int Mod::Properties::bitrate() const -{ - return 0; -} - -int Mod::Properties::sampleRate() const -{ - return 0; -} - -int Mod::Properties::channels() const -{ - return d->channels; -} - -TagLib::uint Mod::Properties::instrumentCount() const -{ - return d->instrumentCount; -} - -uchar Mod::Properties::lengthInPatterns() const -{ - return d->lengthInPatterns; -} - -void Mod::Properties::setChannels(int channels) -{ - d->channels = channels; -} - -void Mod::Properties::setInstrumentCount(uint instrumentCount) -{ - d->instrumentCount = instrumentCount; -} - -void Mod::Properties::setLengthInPatterns(uchar lengthInPatterns) -{ - d->lengthInPatterns = lengthInPatterns; -} diff --git a/platform/win32/msvc/external/taglib/taglib/mod/modproperties.h b/platform/win32/msvc/external/taglib/taglib/mod/modproperties.h deleted file mode 100644 index d50353a480f..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mod/modproperties.h +++ /dev/null @@ -1,65 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef TAGLIB_MODPROPERTIES_H -#define TAGLIB_MODPROPERTIES_H - -#include "taglib.h" -#include "audioproperties.h" - -namespace TagLib { - - namespace Mod { - - class TAGLIB_EXPORT Properties : public AudioProperties - { - public: - Properties(AudioProperties::ReadStyle propertiesStyle); - virtual ~Properties(); - - int length() const; - int bitrate() const; - int sampleRate() const; - int channels() const; - - uint instrumentCount() const; - uchar lengthInPatterns() const; - - void setChannels(int channels); - - void setInstrumentCount(uint sampleCount); - void setLengthInPatterns(uchar lengthInPatterns); - - private: - friend class File; - - Properties(const Properties&); - Properties &operator=(const Properties&); - - class PropertiesPrivate; - PropertiesPrivate *d; - }; - - } - -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mod/modtag.cpp b/platform/win32/msvc/external/taglib/taglib/mod/modtag.cpp deleted file mode 100644 index 14c4c741f5f..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mod/modtag.cpp +++ /dev/null @@ -1,168 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "modtag.h" -#include "tstringlist.h" -#include "tpropertymap.h" - -using namespace TagLib; -using namespace Mod; - -class Mod::Tag::TagPrivate -{ -public: - TagPrivate() - { - } - - String title; - String comment; - String trackerName; -}; - -Mod::Tag::Tag() : TagLib::Tag() -{ - d = new TagPrivate; -} - -Mod::Tag::~Tag() -{ - delete d; -} - -String Mod::Tag::title() const -{ - return d->title; -} - -String Mod::Tag::artist() const -{ - return String::null; -} - -String Mod::Tag::album() const -{ - return String::null; -} - -String Mod::Tag::comment() const -{ - return d->comment; -} - -String Mod::Tag::genre() const -{ - return String::null; -} - -TagLib::uint Mod::Tag::year() const -{ - return 0; -} - -TagLib::uint Mod::Tag::track() const -{ - return 0; -} - -String Mod::Tag::trackerName() const -{ - return d->trackerName; -} - -void Mod::Tag::setTitle(const String &title) -{ - d->title = title; -} - -void Mod::Tag::setArtist(const String &) -{ -} - -void Mod::Tag::setAlbum(const String &) -{ -} - -void Mod::Tag::setComment(const String &comment) -{ - d->comment = comment; -} - -void Mod::Tag::setGenre(const String &) -{ -} - -void Mod::Tag::setYear(uint) -{ -} - -void Mod::Tag::setTrack(uint) -{ -} - -void Mod::Tag::setTrackerName(const String &trackerName) -{ - d->trackerName = trackerName; -} - -PropertyMap Mod::Tag::properties() const -{ - PropertyMap properties; - properties["TITLE"] = d->title; - properties["COMMENT"] = d->comment; - if(!(d->trackerName.isNull())) - properties["TRACKERNAME"] = d->trackerName; - return properties; -} - -PropertyMap Mod::Tag::setProperties(const PropertyMap &origProps) -{ - PropertyMap properties(origProps); - properties.removeEmpty(); - StringList oneValueSet; - if(properties.contains("TITLE")) { - d->title = properties["TITLE"].front(); - oneValueSet.append("TITLE"); - } else - d->title = String::null; - - if(properties.contains("COMMENT")) { - d->comment = properties["COMMENT"].front(); - oneValueSet.append("COMMENT"); - } else - d->comment = String::null; - - if(properties.contains("TRACKERNAME")) { - d->trackerName = properties["TRACKERNAME"].front(); - oneValueSet.append("TRACKERNAME"); - } else - d->trackerName = String::null; - - // for each tag that has been set above, remove the first entry in the corresponding - // value list. The others will be returned as unsupported by this format. - for(StringList::Iterator it = oneValueSet.begin(); it != oneValueSet.end(); ++it) { - if(properties[*it].size() == 1) - properties.erase(*it); - else - properties[*it].erase( properties[*it].begin() ); - } - return properties; -} diff --git a/platform/win32/msvc/external/taglib/taglib/mod/modtag.h b/platform/win32/msvc/external/taglib/taglib/mod/modtag.h deleted file mode 100644 index f33e33f291c..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mod/modtag.h +++ /dev/null @@ -1,190 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef TAGLIB_MODTAG_H -#define TAGLIB_MODTAG_H - -#include "tag.h" - -namespace TagLib { - - namespace Mod { - - /*! - * Tags for module files (Mod, S3M, IT, XM). - * - * Note that only the \a title is supported as such by most - * module file formats. Except for XM files the \a trackerName - * is derived from the file format or the flavour of the file - * format. For XM files it is stored in the file. - * - * The \a comment tag is not strictly supported by module files, - * but it is common practice to abuse instrument/sample/pattern - * names as multiline comments. TagLib does so as well. - */ - class TAGLIB_EXPORT Tag : public TagLib::Tag - { - public: - Tag(); - virtual ~Tag(); - - /*! - * Returns the track name; if no track name is present in the tag - * String::null will be returned. - */ - String title() const; - - /*! - * Not supported by module files. Therefore always returns String::null. - */ - String artist() const; - - /*! - * Not supported by module files. Therefore always returns String::null. - */ - String album() const; - - /*! - * Returns the track comment derived from the instrument/sample/pattern - * names; if no comment is present in the tag String::null will be - * returned. - */ - String comment() const; - - /*! - * Not supported by module files. Therefore always returns String::null. - */ - String genre() const; - - /*! - * Not supported by module files. Therefore always returns 0. - */ - uint year() const; - - /*! - * Not supported by module files. Therefore always returns 0. - */ - uint track() const; - - /*! - * Returns the name of the tracker used to create/edit the module file. - * Only XM files store this tag to the file as such, for other formats - * (Mod, S3M, IT) this is derived from the file type or the flavour of - * the file type. Therefore only XM files might have an empty - * (String::null) tracker name. - */ - String trackerName() const; - - /*! - * Sets the title to \a title. If \a title is String::null then this - * value will be cleared. - * - * The length limits per file type are (1 characetr = 1 byte): - * Mod 20 characters, S3M 27 characters, IT 25 characters and XM 20 - * characters. - */ - void setTitle(const String &title); - - /*! - * Not supported by module files and therefore ignored. - */ - void setArtist(const String &artist); - - /*! - * Not supported by module files and therefore ignored. - */ - void setAlbum(const String &album); - - /*! - * Sets the comment to \a comment. If \a comment is String::null then - * this value will be cleared. - * - * Note that module file formats don't actually support a comment tag. - * Instead the names of instruments/patterns/samples are abused as - * a multiline comment. Because of this the number of lines in a - * module file is fixed to the number of instruments/patterns/samples. - * - * Also note that the instrument/pattern/sample name length is limited - * an thus the line length in comments are limited. Too big comments - * will be truncated. - * - * The line length limits per file type are (1 characetr = 1 byte): - * Mod 22 characters, S3M 27 characters, IT 25 characters and XM 22 - * characters. - */ - void setComment(const String &comment); - - /*! - * Not supported by module files and therefore ignored. - */ - void setGenre(const String &genre); - - /*! - * Not supported by module files and therefore ignored. - */ - void setYear(uint year); - - /*! - * Not supported by module files and therefore ignored. - */ - void setTrack(uint track); - - /*! - * Sets the tracker name to \a trackerName. If \a trackerName is - * String::null then this value will be cleared. - * - * Note that only XM files support this tag. Setting the - * tracker name for other module file formats will be ignored. - * - * The length of this tag is limited to 20 characters (1 character - * = 1 byte). - */ - void setTrackerName(const String &trackerName); - - /*! - * Implements the unified property interface -- export function. - * Since the module tag is very limited, the exported map is as well. - */ - PropertyMap properties() const; - - /*! - * Implements the unified property interface -- import function. - * Because of the limitations of the module file tag, any tags besides - * COMMENT, TITLE and, if it is an XM file, TRACKERNAME, will be - * returened. Additionally, if the map contains tags with multiple values, - * all but the first will be contained in the returned map of unsupported - * properties. - */ - PropertyMap setProperties(const PropertyMap &); - - private: - Tag(const Tag &); - Tag &operator=(const Tag &); - - class TagPrivate; - TagPrivate *d; - }; - - } - -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mp4/mp4atom.cpp b/platform/win32/msvc/external/taglib/taglib/mp4/mp4atom.cpp deleted file mode 100644 index 1681ec805b4..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mp4/mp4atom.cpp +++ /dev/null @@ -1,198 +0,0 @@ -/************************************************************************** - copyright : (C) 2007 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <tdebug.h> -#include <tstring.h> -#include "mp4atom.h" - -using namespace TagLib; - -const char *MP4::Atom::containers[11] = { - "moov", "udta", "mdia", "meta", "ilst", - "stbl", "minf", "moof", "traf", "trak", - "stsd" -}; - -MP4::Atom::Atom(File *file) -{ - offset = file->tell(); - ByteVector header = file->readBlock(8); - if (header.size() != 8) { - // The atom header must be 8 bytes long, otherwise there is either - // trailing garbage or the file is truncated - debug("MP4: Couldn't read 8 bytes of data for atom header"); - length = 0; - file->seek(0, File::End); - return; - } - - length = header.mid(0, 4).toUInt(); - - if (length == 1) { - long long longLength = file->readBlock(8).toLongLong(); - if (longLength >= 8 && longLength <= 0xFFFFFFFF) { - // The atom has a 64-bit length, but it's actually a 32-bit value - length = (long)longLength; - } - else { - debug("MP4: 64-bit atoms are not supported"); - length = 0; - file->seek(0, File::End); - return; - } - } - if (length < 8) { - debug("MP4: Invalid atom size"); - length = 0; - file->seek(0, File::End); - return; - } - - name = header.mid(4, 4); - - for(int i = 0; i < numContainers; i++) { - if(name == containers[i]) { - if(name == "meta") { - file->seek(4, File::Current); - } - else if(name == "stsd") { - file->seek(8, File::Current); - } - while(file->tell() < offset + length) { - MP4::Atom *child = new MP4::Atom(file); - children.append(child); - if (child->length == 0) - return; - } - return; - } - } - - file->seek(offset + length); -} - -MP4::Atom::~Atom() -{ - for(unsigned int i = 0; i < children.size(); i++) { - delete children[i]; - } - children.clear(); -} - -MP4::Atom * -MP4::Atom::find(const char *name1, const char *name2, const char *name3, const char *name4) -{ - if(name1 == 0) { - return this; - } - for(unsigned int i = 0; i < children.size(); i++) { - if(children[i]->name == name1) { - return children[i]->find(name2, name3, name4); - } - } - return 0; -} - -MP4::AtomList -MP4::Atom::findall(const char *name, bool recursive) -{ - MP4::AtomList result; - for(unsigned int i = 0; i < children.size(); i++) { - if(children[i]->name == name) { - result.append(children[i]); - } - if(recursive) { - result.append(children[i]->findall(name, recursive)); - } - } - return result; -} - -bool -MP4::Atom::path(MP4::AtomList &path, const char *name1, const char *name2, const char *name3) -{ - path.append(this); - if(name1 == 0) { - return true; - } - for(unsigned int i = 0; i < children.size(); i++) { - if(children[i]->name == name1) { - return children[i]->path(path, name2, name3); - } - } - return false; -} - -MP4::Atoms::Atoms(File *file) -{ - file->seek(0, File::End); - long end = file->tell(); - file->seek(0); - while(file->tell() + 8 <= end) { - MP4::Atom *atom = new MP4::Atom(file); - atoms.append(atom); - if (atom->length == 0) - break; - } -} - -MP4::Atoms::~Atoms() -{ - for(unsigned int i = 0; i < atoms.size(); i++) { - delete atoms[i]; - } - atoms.clear(); -} - -MP4::Atom * -MP4::Atoms::find(const char *name1, const char *name2, const char *name3, const char *name4) -{ - for(unsigned int i = 0; i < atoms.size(); i++) { - if(atoms[i]->name == name1) { - return atoms[i]->find(name2, name3, name4); - } - } - return 0; -} - -MP4::AtomList -MP4::Atoms::path(const char *name1, const char *name2, const char *name3, const char *name4) -{ - MP4::AtomList path; - for(unsigned int i = 0; i < atoms.size(); i++) { - if(atoms[i]->name == name1) { - if(!atoms[i]->path(path, name2, name3, name4)) { - path.clear(); - } - return path; - } - } - return path; -} - diff --git a/platform/win32/msvc/external/taglib/taglib/mp4/mp4atom.h b/platform/win32/msvc/external/taglib/taglib/mp4/mp4atom.h deleted file mode 100644 index ea5091a8b43..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mp4/mp4atom.h +++ /dev/null @@ -1,111 +0,0 @@ -/************************************************************************** - copyright : (C) 2007,2011 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -// This file is not part of the public API! - -#ifndef DO_NOT_DOCUMENT - -#ifndef TAGLIB_MP4ATOM_H -#define TAGLIB_MP4ATOM_H - -#include "tfile.h" -#include "tlist.h" - -namespace TagLib { - - namespace MP4 { - - class Atom; - typedef TagLib::List<Atom *> AtomList; - - enum AtomDataType - { - TypeImplicit = 0, // for use with tags for which no type needs to be indicated because only one type is allowed - TypeUTF8 = 1, // without any count or null terminator - TypeUTF16 = 2, // also known as UTF-16BE - TypeSJIS = 3, // deprecated unless it is needed for special Japanese characters - TypeHTML = 6, // the HTML file header specifies which HTML version - TypeXML = 7, // the XML header must identify the DTD or schemas - TypeUUID = 8, // also known as GUID; stored as 16 bytes in binary (valid as an ID) - TypeISRC = 9, // stored as UTF-8 text (valid as an ID) - TypeMI3P = 10, // stored as UTF-8 text (valid as an ID) - TypeGIF = 12, // (deprecated) a GIF image - TypeJPEG = 13, // a JPEG image - TypePNG = 14, // a PNG image - TypeURL = 15, // absolute, in UTF-8 characters - TypeDuration = 16, // in milliseconds, 32-bit integer - TypeDateTime = 17, // in UTC, counting seconds since midnight, January 1, 1904; 32 or 64-bits - TypeGenred = 18, // a list of enumerated values - TypeInteger = 21, // a signed big-endian integer with length one of { 1,2,3,4,8 } bytes - TypeRIAAPA = 24, // RIAA parental advisory; { -1=no, 1=yes, 0=unspecified }, 8-bit ingteger - TypeUPC = 25, // Universal Product Code, in text UTF-8 format (valid as an ID) - TypeBMP = 27, // Windows bitmap image - TypeUndefined = 255 // undefined - }; - - struct AtomData { - AtomData(AtomDataType type, ByteVector data) : type(type), locale(0), data(data) {} - AtomDataType type; - int locale; - ByteVector data; - }; - - typedef TagLib::List<AtomData> AtomDataList; - - class Atom - { - public: - Atom(File *file); - ~Atom(); - Atom *find(const char *name1, const char *name2 = 0, const char *name3 = 0, const char *name4 = 0); - bool path(AtomList &path, const char *name1, const char *name2 = 0, const char *name3 = 0); - AtomList findall(const char *name, bool recursive = false); - long offset; - long length; - TagLib::ByteVector name; - AtomList children; - private: - static const int numContainers = 11; - static const char *containers[11]; - }; - - //! Root-level atoms - class Atoms - { - public: - Atoms(File *file); - ~Atoms(); - Atom *find(const char *name1, const char *name2 = 0, const char *name3 = 0, const char *name4 = 0); - AtomList path(const char *name1, const char *name2 = 0, const char *name3 = 0, const char *name4 = 0); - AtomList atoms; - }; - - } - -} - -#endif - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mp4/mp4coverart.cpp b/platform/win32/msvc/external/taglib/taglib/mp4/mp4coverart.cpp deleted file mode 100644 index 928e3c4aa2f..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mp4/mp4coverart.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/************************************************************************** - copyright : (C) 2009 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <taglib.h> -#include <tdebug.h> -#include "mp4coverart.h" - -using namespace TagLib; - -class MP4::CoverArt::CoverArtPrivate : public RefCounter -{ -public: - CoverArtPrivate() : RefCounter(), format(MP4::CoverArt::JPEG) {} - - Format format; - ByteVector data; -}; - -MP4::CoverArt::CoverArt(Format format, const ByteVector &data) -{ - d = new CoverArtPrivate; - d->format = format; - d->data = data; -} - -MP4::CoverArt::CoverArt(const CoverArt &item) : d(item.d) -{ - d->ref(); -} - -MP4::CoverArt & -MP4::CoverArt::operator=(const CoverArt &item) -{ - if(d->deref()) { - delete d; - } - d = item.d; - d->ref(); - return *this; -} - -MP4::CoverArt::~CoverArt() -{ - if(d->deref()) { - delete d; - } -} - -MP4::CoverArt::Format -MP4::CoverArt::format() const -{ - return d->format; -} - -ByteVector -MP4::CoverArt::data() const -{ - return d->data; -} - diff --git a/platform/win32/msvc/external/taglib/taglib/mp4/mp4coverart.h b/platform/win32/msvc/external/taglib/taglib/mp4/mp4coverart.h deleted file mode 100644 index 804ab785219..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mp4/mp4coverart.h +++ /dev/null @@ -1,74 +0,0 @@ -/************************************************************************** - copyright : (C) 2009 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_MP4COVERART_H -#define TAGLIB_MP4COVERART_H - -#include "tlist.h" -#include "tbytevector.h" -#include "taglib_export.h" -#include "mp4atom.h" - -namespace TagLib { - - namespace MP4 { - - class TAGLIB_EXPORT CoverArt - { - public: - /*! - * This describes the image type. - */ - enum Format { - JPEG = TypeJPEG, - PNG = TypePNG, - BMP = TypeBMP, - GIF = TypeGIF - }; - - CoverArt(Format format, const ByteVector &data); - ~CoverArt(); - - CoverArt(const CoverArt &item); - CoverArt &operator=(const CoverArt &item); - - //! Format of the image - Format format() const; - - //! The image data - ByteVector data() const; - - private: - class CoverArtPrivate; - CoverArtPrivate *d; - }; - - typedef List<CoverArt> CoverArtList; - - } - -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mp4/mp4file.cpp b/platform/win32/msvc/external/taglib/taglib/mp4/mp4file.cpp deleted file mode 100644 index 02185575da4..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mp4/mp4file.cpp +++ /dev/null @@ -1,149 +0,0 @@ -/************************************************************************** - copyright : (C) 2007 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <tdebug.h> -#include <tstring.h> -#include "mp4atom.h" -#include "mp4tag.h" -#include "mp4file.h" - -using namespace TagLib; - -class MP4::File::FilePrivate -{ -public: - FilePrivate() : tag(0), atoms(0), properties(0) - { - } - - ~FilePrivate() - { - if(atoms) { - delete atoms; - atoms = 0; - } - if(tag) { - delete tag; - tag = 0; - } - if(properties) { - delete properties; - properties = 0; - } - } - - MP4::Tag *tag; - MP4::Atoms *atoms; - MP4::Properties *properties; -}; - -MP4::File::File(FileName file, bool readProperties, AudioProperties::ReadStyle audioPropertiesStyle) - : TagLib::File(file) -{ - d = new FilePrivate; - read(readProperties, audioPropertiesStyle); -} - -MP4::File::File(IOStream *stream, bool readProperties, AudioProperties::ReadStyle audioPropertiesStyle) - : TagLib::File(stream) -{ - d = new FilePrivate; - read(readProperties, audioPropertiesStyle); -} - -MP4::File::~File() -{ - delete d; -} - -MP4::Tag * -MP4::File::tag() const -{ - return d->tag; -} - -MP4::Properties * -MP4::File::audioProperties() const -{ - return d->properties; -} - -bool -MP4::File::checkValid(const MP4::AtomList &list) -{ - for(uint i = 0; i < list.size(); i++) { - if(list[i]->length == 0) - return false; - if(!checkValid(list[i]->children)) - return false; - } - return true; -} - -void -MP4::File::read(bool readProperties, Properties::ReadStyle audioPropertiesStyle) -{ - if(!isValid()) - return; - - d->atoms = new Atoms(this); - if (!checkValid(d->atoms->atoms)) { - setValid(false); - return; - } - - // must have a moov atom, otherwise consider it invalid - MP4::Atom *moov = d->atoms->find("moov"); - if(!moov) { - setValid(false); - return; - } - - d->tag = new Tag(this, d->atoms); - if(readProperties) { - d->properties = new Properties(this, d->atoms, audioPropertiesStyle); - } -} - -bool -MP4::File::save() -{ - if(readOnly()) { - debug("MP4::File::save() -- File is read only."); - return false; - } - - if(!isValid()) { - debug("MP4::File::save() -- Trying to save invalid file."); - return false; - } - - return d->tag->save(); -} - diff --git a/platform/win32/msvc/external/taglib/taglib/mp4/mp4file.h b/platform/win32/msvc/external/taglib/taglib/mp4/mp4file.h deleted file mode 100644 index 2ed3bea581e..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mp4/mp4file.h +++ /dev/null @@ -1,116 +0,0 @@ -/************************************************************************** - copyright : (C) 2007 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_MP4FILE_H -#define TAGLIB_MP4FILE_H - -#include "tag.h" -#include "tfile.h" -#include "taglib_export.h" -#include "mp4properties.h" -#include "mp4tag.h" - -namespace TagLib { - - //! An implementation of MP4 (AAC, ALAC, ...) metadata - namespace MP4 { - - class Atoms; - - /*! - * This implements and provides an interface for MP4 files to the - * TagLib::Tag and TagLib::AudioProperties interfaces by way of implementing - * the abstract TagLib::File API as well as providing some additional - * information specific to MP4 files. - */ - class TAGLIB_EXPORT File : public TagLib::File - { - public: - /*! - * Contructs a MP4 file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - * - * \note In the current implementation, both \a readProperties and - * \a propertiesStyle are ignored. - */ - File(FileName file, bool readProperties = true, Properties::ReadStyle audioPropertiesStyle = Properties::Average); - - /*! - * Contructs a MP4 file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - * - * \note In the current implementation, both \a readProperties and - * \a propertiesStyle are ignored. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - */ - File(IOStream *stream, bool readProperties = true, Properties::ReadStyle audioPropertiesStyle = Properties::Average); - - /*! - * Destroys this instance of the File. - */ - virtual ~File(); - - /*! - * Returns a pointer to the MP4 tag of the file. - * - * MP4::Tag implements the tag interface, so this serves as the - * reimplementation of TagLib::File::tag(). - * - * \note The Tag <b>is still</b> owned by the MP4::File and should not be - * deleted by the user. It will be deleted when the file (object) is - * destroyed. - */ - Tag *tag() const; - - /*! - * Returns the MP4 audio properties for this file. - */ - Properties *audioProperties() const; - - /*! - * Save the file. - * - * This returns true if the save was successful. - */ - bool save(); - - private: - - void read(bool readProperties, Properties::ReadStyle audioPropertiesStyle); - bool checkValid(const MP4::AtomList &list); - - class FilePrivate; - FilePrivate *d; - }; - - } - -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mp4/mp4item.cpp b/platform/win32/msvc/external/taglib/taglib/mp4/mp4item.cpp deleted file mode 100644 index af2cc65c80d..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mp4/mp4item.cpp +++ /dev/null @@ -1,209 +0,0 @@ -/************************************************************************** - copyright : (C) 2007 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <taglib.h> -#include <tdebug.h> -#include "mp4item.h" - -using namespace TagLib; - -class MP4::Item::ItemPrivate : public RefCounter -{ -public: - ItemPrivate() : RefCounter(), valid(true), atomDataType(TypeUndefined) {} - - bool valid; - AtomDataType atomDataType; - union { - bool m_bool; - int m_int; - IntPair m_intPair; - uchar m_byte; - uint m_uint; - long long m_longlong; - }; - StringList m_stringList; - ByteVectorList m_byteVectorList; - MP4::CoverArtList m_coverArtList; -}; - -MP4::Item::Item() -{ - d = new ItemPrivate; - d->valid = false; -} - -MP4::Item::Item(const Item &item) : d(item.d) -{ - d->ref(); -} - -MP4::Item & -MP4::Item::operator=(const Item &item) -{ - if(d->deref()) { - delete d; - } - d = item.d; - d->ref(); - return *this; -} - -MP4::Item::~Item() -{ - if(d->deref()) { - delete d; - } -} - -MP4::Item::Item(bool value) -{ - d = new ItemPrivate; - d->m_bool = value; -} - -MP4::Item::Item(int value) -{ - d = new ItemPrivate; - d->m_int = value; -} - -MP4::Item::Item(uchar value) -{ - d = new ItemPrivate; - d->m_byte = value; -} - -MP4::Item::Item(uint value) -{ - d = new ItemPrivate; - d->m_uint = value; -} - -MP4::Item::Item(long long value) -{ - d = new ItemPrivate; - d->m_longlong = value; -} - -MP4::Item::Item(int value1, int value2) -{ - d = new ItemPrivate; - d->m_intPair.first = value1; - d->m_intPair.second = value2; -} - -MP4::Item::Item(const ByteVectorList &value) -{ - d = new ItemPrivate; - d->m_byteVectorList = value; -} - -MP4::Item::Item(const StringList &value) -{ - d = new ItemPrivate; - d->m_stringList = value; -} - -MP4::Item::Item(const MP4::CoverArtList &value) -{ - d = new ItemPrivate; - d->m_coverArtList = value; -} - -void MP4::Item::setAtomDataType(MP4::AtomDataType type) -{ - d->atomDataType = type; -} - -MP4::AtomDataType MP4::Item::atomDataType() const -{ - return d->atomDataType; -} - -bool -MP4::Item::toBool() const -{ - return d->m_bool; -} - -int -MP4::Item::toInt() const -{ - return d->m_int; -} - -uchar -MP4::Item::toByte() const -{ - return d->m_byte; -} - -TagLib::uint -MP4::Item::toUInt() const -{ - return d->m_uint; -} - -long long -MP4::Item::toLongLong() const -{ - return d->m_longlong; -} - -MP4::Item::IntPair -MP4::Item::toIntPair() const -{ - return d->m_intPair; -} - -StringList -MP4::Item::toStringList() const -{ - return d->m_stringList; -} - -ByteVectorList -MP4::Item::toByteVectorList() const -{ - return d->m_byteVectorList; -} - -MP4::CoverArtList -MP4::Item::toCoverArtList() const -{ - return d->m_coverArtList; -} - -bool -MP4::Item::isValid() const -{ - return d->valid; -} - diff --git a/platform/win32/msvc/external/taglib/taglib/mp4/mp4item.h b/platform/win32/msvc/external/taglib/taglib/mp4/mp4item.h deleted file mode 100644 index be7aa1a17fc..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mp4/mp4item.h +++ /dev/null @@ -1,83 +0,0 @@ -/************************************************************************** - copyright : (C) 2007 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_MP4ITEM_H -#define TAGLIB_MP4ITEM_H - -#include "tstringlist.h" -#include "mp4coverart.h" -#include "taglib_export.h" - -namespace TagLib { - - namespace MP4 { - - class TAGLIB_EXPORT Item - { - public: - struct IntPair { - int first, second; - }; - - Item(); - Item(const Item &item); - Item &operator=(const Item &item); - ~Item(); - - Item(int value); - Item(uchar value); - Item(uint value); - Item(long long value); - Item(bool value); - Item(int first, int second); - Item(const StringList &value); - Item(const ByteVectorList &value); - Item(const CoverArtList &value); - - void setAtomDataType(AtomDataType type); - AtomDataType atomDataType() const; - - int toInt() const; - uchar toByte() const; - uint toUInt() const; - long long toLongLong() const; - bool toBool() const; - IntPair toIntPair() const; - StringList toStringList() const; - ByteVectorList toByteVectorList() const; - CoverArtList toCoverArtList() const; - - bool isValid() const; - - private: - class ItemPrivate; - ItemPrivate *d; - }; - - } - -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mp4/mp4properties.cpp b/platform/win32/msvc/external/taglib/taglib/mp4/mp4properties.cpp deleted file mode 100644 index d2d04167c47..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mp4/mp4properties.cpp +++ /dev/null @@ -1,195 +0,0 @@ -/************************************************************************** - copyright : (C) 2007 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <tdebug.h> -#include <tstring.h> -#include "mp4file.h" -#include "mp4atom.h" -#include "mp4properties.h" - -using namespace TagLib; - -class MP4::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate() : length(0), bitrate(0), sampleRate(0), channels(0), bitsPerSample(0), encrypted(false) {} - - int length; - int bitrate; - int sampleRate; - int channels; - int bitsPerSample; - bool encrypted; -}; - -MP4::Properties::Properties(File *file, MP4::Atoms *atoms, ReadStyle style) - : AudioProperties(style) -{ - d = new PropertiesPrivate; - - MP4::Atom *moov = atoms->find("moov"); - if(!moov) { - debug("MP4: Atom 'moov' not found"); - return; - } - - MP4::Atom *trak = 0; - ByteVector data; - - MP4::AtomList trakList = moov->findall("trak"); - for (unsigned int i = 0; i < trakList.size(); i++) { - trak = trakList[i]; - MP4::Atom *hdlr = trak->find("mdia", "hdlr"); - if(!hdlr) { - debug("MP4: Atom 'trak.mdia.hdlr' not found"); - return; - } - file->seek(hdlr->offset); - data = file->readBlock(hdlr->length); - if(data.mid(16, 4) == "soun") { - break; - } - trak = 0; - } - if (!trak) { - debug("MP4: No audio tracks"); - return; - } - - MP4::Atom *mdhd = trak->find("mdia", "mdhd"); - if(!mdhd) { - debug("MP4: Atom 'trak.mdia.mdhd' not found"); - return; - } - - file->seek(mdhd->offset); - data = file->readBlock(mdhd->length); - uint version = data[8]; - if(version == 1) { - if (data.size() < 36 + 8) { - debug("MP4: Atom 'trak.mdia.mdhd' is smaller than expected"); - return; - } - long long unit = data.mid(28, 8).toLongLong(); - long long length = data.mid(36, 8).toLongLong(); - d->length = unit ? int(length / unit) : 0; - } - else { - if (data.size() < 24 + 4) { - debug("MP4: Atom 'trak.mdia.mdhd' is smaller than expected"); - return; - } - unsigned int unit = data.mid(20, 4).toUInt(); - unsigned int length = data.mid(24, 4).toUInt(); - d->length = unit ? length / unit : 0; - } - - MP4::Atom *atom = trak->find("mdia", "minf", "stbl", "stsd"); - if(!atom) { - return; - } - - file->seek(atom->offset); - data = file->readBlock(atom->length); - if(data.mid(20, 4) == "mp4a") { - d->channels = data.mid(40, 2).toShort(); - d->bitsPerSample = data.mid(42, 2).toShort(); - d->sampleRate = data.mid(46, 4).toUInt(); - if(data.mid(56, 4) == "esds" && data[64] == 0x03) { - long pos = 65; - if(data.mid(pos, 3) == "\x80\x80\x80") { - pos += 3; - } - pos += 4; - if(data[pos] == 0x04) { - pos += 1; - if(data.mid(pos, 3) == "\x80\x80\x80") { - pos += 3; - } - pos += 10; - d->bitrate = (data.mid(pos, 4).toUInt() + 500) / 1000; - } - } - } - else if (data.mid(20, 4) == "alac") { - if (atom->length == 88 && data.mid(56, 4) == "alac") { - d->bitsPerSample = data.at(69); - d->channels = data.at(73); - d->bitrate = data.mid(80, 4).toUInt() / 1000; - d->sampleRate = data.mid(84, 4).toUInt(); - } - } - - MP4::Atom *drms = atom->find("drms"); - if(drms) { - d->encrypted = true; - } -} - -MP4::Properties::~Properties() -{ - delete d; -} - -int -MP4::Properties::channels() const -{ - return d->channels; -} - -int -MP4::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int -MP4::Properties::length() const -{ - return d->length; -} - -int -MP4::Properties::bitrate() const -{ - return d->bitrate; -} - -int -MP4::Properties::bitsPerSample() const -{ - return d->bitsPerSample; -} - -bool -MP4::Properties::isEncrypted() const -{ - return d->encrypted; -} - diff --git a/platform/win32/msvc/external/taglib/taglib/mp4/mp4properties.h b/platform/win32/msvc/external/taglib/taglib/mp4/mp4properties.h deleted file mode 100644 index 7906824d8f4..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mp4/mp4properties.h +++ /dev/null @@ -1,62 +0,0 @@ -/************************************************************************** - copyright : (C) 2007 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_MP4PROPERTIES_H -#define TAGLIB_MP4PROPERTIES_H - -#include "taglib_export.h" -#include "audioproperties.h" - -namespace TagLib { - - namespace MP4 { - - class Atoms; - class File; - - //! An implementation of MP4 audio properties - class TAGLIB_EXPORT Properties : public AudioProperties - { - public: - Properties(File *file, Atoms *atoms, ReadStyle style = Average); - virtual ~Properties(); - - virtual int length() const; - virtual int bitrate() const; - virtual int sampleRate() const; - virtual int channels() const; - virtual int bitsPerSample() const; - bool isEncrypted() const; - - private: - class PropertiesPrivate; - PropertiesPrivate *d; - }; - - } - -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mp4/mp4tag.cpp b/platform/win32/msvc/external/taglib/taglib/mp4/mp4tag.cpp deleted file mode 100644 index fc75fb456a1..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mp4/mp4tag.cpp +++ /dev/null @@ -1,758 +0,0 @@ -/************************************************************************** - copyright : (C) 2007,2011 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <tdebug.h> -#include <tstring.h> -#include "mp4atom.h" -#include "mp4tag.h" -#include "id3v1genres.h" - -using namespace TagLib; - -class MP4::Tag::TagPrivate -{ -public: - TagPrivate() : file(0), atoms(0) {} - ~TagPrivate() {} - TagLib::File *file; - Atoms *atoms; - ItemListMap items; -}; - -MP4::Tag::Tag() -{ - d = new TagPrivate; -} - -MP4::Tag::Tag(TagLib::File *file, MP4::Atoms *atoms) -{ - d = new TagPrivate; - d->file = file; - d->atoms = atoms; - - MP4::Atom *ilst = atoms->find("moov", "udta", "meta", "ilst"); - if(!ilst) { - //debug("Atom moov.udta.meta.ilst not found."); - return; - } - - for(unsigned int i = 0; i < ilst->children.size(); i++) { - MP4::Atom *atom = ilst->children[i]; - file->seek(atom->offset + 8); - if(atom->name == "----") { - parseFreeForm(atom, file); - } - else if(atom->name == "trkn" || atom->name == "disk") { - parseIntPair(atom, file); - } - else if(atom->name == "cpil" || atom->name == "pgap" || atom->name == "pcst" || - atom->name == "hdvd") { - parseBool(atom, file); - } - else if(atom->name == "tmpo") { - parseInt(atom, file); - } - else if(atom->name == "tvsn" || atom->name == "tves" || atom->name == "cnID" || - atom->name == "sfID" || atom->name == "atID" || atom->name == "geID") { - parseUInt(atom, file); - } - else if(atom->name == "plID") { - parseLongLong(atom, file); - } - else if(atom->name == "stik" || atom->name == "rtng" || atom->name == "akID") { - parseByte(atom, file); - } - else if(atom->name == "gnre") { - parseGnre(atom, file); - } - else if(atom->name == "covr") { - parseCovr(atom, file); - } - else { - parseText(atom, file); - } - } -} - -MP4::Tag::~Tag() -{ - delete d; -} - -MP4::AtomDataList -MP4::Tag::parseData2(MP4::Atom *atom, TagLib::File *file, int expectedFlags, bool freeForm) -{ - AtomDataList result; - ByteVector data = file->readBlock(atom->length - 8); - int i = 0; - unsigned int pos = 0; - while(pos < data.size()) { - int length = data.mid(pos, 4).toUInt(); - ByteVector name = data.mid(pos + 4, 4); - int flags = data.mid(pos + 8, 4).toUInt(); - if(freeForm && i < 2) { - if(i == 0 && name != "mean") { - debug("MP4: Unexpected atom \"" + name + "\", expecting \"mean\""); - return result; - } - else if(i == 1 && name != "name") { - debug("MP4: Unexpected atom \"" + name + "\", expecting \"name\""); - return result; - } - result.append(AtomData(AtomDataType(flags), data.mid(pos + 12, length - 12))); - } - else { - if(name != "data") { - debug("MP4: Unexpected atom \"" + name + "\", expecting \"data\""); - return result; - } - if(expectedFlags == -1 || flags == expectedFlags) { - result.append(AtomData(AtomDataType(flags), data.mid(pos + 16, length - 16))); - } - } - pos += length; - i++; - } - return result; -} - -ByteVectorList -MP4::Tag::parseData(MP4::Atom *atom, TagLib::File *file, int expectedFlags, bool freeForm) -{ - AtomDataList data = parseData2(atom, file, expectedFlags, freeForm); - ByteVectorList result; - for(uint i = 0; i < data.size(); i++) { - result.append(data[i].data); - } - return result; -} - -void -MP4::Tag::parseInt(MP4::Atom *atom, TagLib::File *file) -{ - ByteVectorList data = parseData(atom, file); - if(data.size()) { - d->items.insert(atom->name, (int)data[0].toShort()); - } -} - -void -MP4::Tag::parseUInt(MP4::Atom *atom, TagLib::File *file) -{ - ByteVectorList data = parseData(atom, file); - if(data.size()) { - d->items.insert(atom->name, data[0].toUInt()); - } -} - -void -MP4::Tag::parseLongLong(MP4::Atom *atom, TagLib::File *file) -{ - ByteVectorList data = parseData(atom, file); - if(data.size()) { - d->items.insert(atom->name, data[0].toLongLong()); - } -} - -void -MP4::Tag::parseByte(MP4::Atom *atom, TagLib::File *file) -{ - ByteVectorList data = parseData(atom, file); - if(data.size()) { - d->items.insert(atom->name, (uchar)data[0].at(0)); - } -} - -void -MP4::Tag::parseGnre(MP4::Atom *atom, TagLib::File *file) -{ - ByteVectorList data = parseData(atom, file); - if(data.size()) { - int idx = (int)data[0].toShort(); - if(!d->items.contains("\251gen") && idx > 0) { - d->items.insert("\251gen", StringList(ID3v1::genre(idx - 1))); - } - } -} - -void -MP4::Tag::parseIntPair(MP4::Atom *atom, TagLib::File *file) -{ - ByteVectorList data = parseData(atom, file); - if(data.size()) { - int a = data[0].mid(2, 2).toShort(); - int b = data[0].mid(4, 2).toShort(); - d->items.insert(atom->name, MP4::Item(a, b)); - } -} - -void -MP4::Tag::parseBool(MP4::Atom *atom, TagLib::File *file) -{ - ByteVectorList data = parseData(atom, file); - if(data.size()) { - bool value = data[0].size() ? data[0][0] != '\0' : false; - d->items.insert(atom->name, value); - } -} - -void -MP4::Tag::parseText(MP4::Atom *atom, TagLib::File *file, int expectedFlags) -{ - ByteVectorList data = parseData(atom, file, expectedFlags); - if(data.size()) { - StringList value; - for(unsigned int i = 0; i < data.size(); i++) { - value.append(String(data[i], String::UTF8)); - } - d->items.insert(atom->name, value); - } -} - -void -MP4::Tag::parseFreeForm(MP4::Atom *atom, TagLib::File *file) -{ - AtomDataList data = parseData2(atom, file, -1, true); - if(data.size() > 2) { - String name = "----:" + String(data[0].data, String::UTF8) + ':' + String(data[1].data, String::UTF8); - AtomDataType type = data[2].type; - for(uint i = 2; i < data.size(); i++) { - if(data[i].type != type) { - debug("MP4: We currently don't support values with multiple types"); - break; - } - } - if(type == TypeUTF8) { - StringList value; - for(uint i = 2; i < data.size(); i++) { - value.append(String(data[i].data, String::UTF8)); - } - Item item(value); - item.setAtomDataType(type); - d->items.insert(name, item); - } - else { - ByteVectorList value; - for(uint i = 2; i < data.size(); i++) { - value.append(data[i].data); - } - Item item(value); - item.setAtomDataType(type); - d->items.insert(name, item); - } - } -} - -void -MP4::Tag::parseCovr(MP4::Atom *atom, TagLib::File *file) -{ - MP4::CoverArtList value; - ByteVector data = file->readBlock(atom->length - 8); - unsigned int pos = 0; - while(pos < data.size()) { - int length = data.mid(pos, 4).toUInt(); - ByteVector name = data.mid(pos + 4, 4); - int flags = data.mid(pos + 8, 4).toUInt(); - if(name != "data") { - debug("MP4: Unexpected atom \"" + name + "\", expecting \"data\""); - break; - } - if(flags == TypeJPEG || flags == TypePNG || flags == TypeBMP || flags == TypeGIF) { - value.append(MP4::CoverArt(MP4::CoverArt::Format(flags), - data.mid(pos + 16, length - 16))); - } - pos += length; - } - if(value.size() > 0) - d->items.insert(atom->name, value); -} - -ByteVector -MP4::Tag::padIlst(const ByteVector &data, int length) -{ - if (length == -1) { - length = ((data.size() + 1023) & ~1023) - data.size(); - } - return renderAtom("free", ByteVector(length, '\1')); -} - -ByteVector -MP4::Tag::renderAtom(const ByteVector &name, const ByteVector &data) -{ - return ByteVector::fromUInt(data.size() + 8) + name + data; -} - -ByteVector -MP4::Tag::renderData(const ByteVector &name, int flags, const ByteVectorList &data) -{ - ByteVector result; - for(unsigned int i = 0; i < data.size(); i++) { - result.append(renderAtom("data", ByteVector::fromUInt(flags) + ByteVector(4, '\0') + data[i])); - } - return renderAtom(name, result); -} - -ByteVector -MP4::Tag::renderBool(const ByteVector &name, MP4::Item &item) -{ - ByteVectorList data; - data.append(ByteVector(1, item.toBool() ? '\1' : '\0')); - return renderData(name, TypeInteger, data); -} - -ByteVector -MP4::Tag::renderInt(const ByteVector &name, MP4::Item &item) -{ - ByteVectorList data; - data.append(ByteVector::fromShort(item.toInt())); - return renderData(name, TypeInteger, data); -} - -ByteVector -MP4::Tag::renderUInt(const ByteVector &name, MP4::Item &item) -{ - ByteVectorList data; - data.append(ByteVector::fromUInt(item.toUInt())); - return renderData(name, TypeInteger, data); -} - -ByteVector -MP4::Tag::renderLongLong(const ByteVector &name, MP4::Item &item) -{ - ByteVectorList data; - data.append(ByteVector::fromLongLong(item.toLongLong())); - return renderData(name, TypeInteger, data); -} - -ByteVector -MP4::Tag::renderByte(const ByteVector &name, MP4::Item &item) -{ - ByteVectorList data; - data.append(ByteVector(1, item.toByte())); - return renderData(name, TypeInteger, data); -} - -ByteVector -MP4::Tag::renderIntPair(const ByteVector &name, MP4::Item &item) -{ - ByteVectorList data; - data.append(ByteVector(2, '\0') + - ByteVector::fromShort(item.toIntPair().first) + - ByteVector::fromShort(item.toIntPair().second) + - ByteVector(2, '\0')); - return renderData(name, TypeImplicit, data); -} - -ByteVector -MP4::Tag::renderIntPairNoTrailing(const ByteVector &name, MP4::Item &item) -{ - ByteVectorList data; - data.append(ByteVector(2, '\0') + - ByteVector::fromShort(item.toIntPair().first) + - ByteVector::fromShort(item.toIntPair().second)); - return renderData(name, TypeImplicit, data); -} - -ByteVector -MP4::Tag::renderText(const ByteVector &name, MP4::Item &item, int flags) -{ - ByteVectorList data; - StringList value = item.toStringList(); - for(unsigned int i = 0; i < value.size(); i++) { - data.append(value[i].data(String::UTF8)); - } - return renderData(name, flags, data); -} - -ByteVector -MP4::Tag::renderCovr(const ByteVector &name, MP4::Item &item) -{ - ByteVector data; - MP4::CoverArtList value = item.toCoverArtList(); - for(unsigned int i = 0; i < value.size(); i++) { - data.append(renderAtom("data", ByteVector::fromUInt(value[i].format()) + - ByteVector(4, '\0') + value[i].data())); - } - return renderAtom(name, data); -} - -ByteVector -MP4::Tag::renderFreeForm(const String &name, MP4::Item &item) -{ - StringList header = StringList::split(name, ":"); - if (header.size() != 3) { - debug("MP4: Invalid free-form item name \"" + name + "\""); - return ByteVector::null; - } - ByteVector data; - data.append(renderAtom("mean", ByteVector::fromUInt(0) + header[1].data(String::UTF8))); - data.append(renderAtom("name", ByteVector::fromUInt(0) + header[2].data(String::UTF8))); - AtomDataType type = item.atomDataType(); - if(type == TypeUndefined) { - if(!item.toStringList().isEmpty()) { - type = TypeUTF8; - } - else { - type = TypeImplicit; - } - } - if(type == TypeUTF8) { - StringList value = item.toStringList(); - for(unsigned int i = 0; i < value.size(); i++) { - data.append(renderAtom("data", ByteVector::fromUInt(type) + ByteVector(4, '\0') + value[i].data(String::UTF8))); - } - } - else { - ByteVectorList value = item.toByteVectorList(); - for(unsigned int i = 0; i < value.size(); i++) { - data.append(renderAtom("data", ByteVector::fromUInt(type) + ByteVector(4, '\0') + value[i])); - } - } - return renderAtom("----", data); -} - -bool -MP4::Tag::save() -{ - ByteVector data; - for(MP4::ItemListMap::Iterator i = d->items.begin(); i != d->items.end(); i++) { - const String name = i->first; - if(name.startsWith("----")) { - data.append(renderFreeForm(name, i->second)); - } - else if(name == "trkn") { - data.append(renderIntPair(name.data(String::Latin1), i->second)); - } - else if(name == "disk") { - data.append(renderIntPairNoTrailing(name.data(String::Latin1), i->second)); - } - else if(name == "cpil" || name == "pgap" || name == "pcst" || name == "hdvd") { - data.append(renderBool(name.data(String::Latin1), i->second)); - } - else if(name == "tmpo") { - data.append(renderInt(name.data(String::Latin1), i->second)); - } - else if(name == "tvsn" || name == "tves" || name == "cnID" || - name == "sfID" || name == "atID" || name == "geID") { - data.append(renderUInt(name.data(String::Latin1), i->second)); - } - else if(name == "plID") { - data.append(renderLongLong(name.data(String::Latin1), i->second)); - } - else if(name == "stik" || name == "rtng" || name == "akID") { - data.append(renderByte(name.data(String::Latin1), i->second)); - } - else if(name == "covr") { - data.append(renderCovr(name.data(String::Latin1), i->second)); - } - else if(name.size() == 4){ - data.append(renderText(name.data(String::Latin1), i->second)); - } - else { - debug("MP4: Unknown item name \"" + name + "\""); - } - } - data = renderAtom("ilst", data); - - AtomList path = d->atoms->path("moov", "udta", "meta", "ilst"); - if(path.size() == 4) { - saveExisting(data, path); - } - else { - saveNew(data); - } - - return true; -} - -void -MP4::Tag::updateParents(AtomList &path, long delta, int ignore) -{ - for(unsigned int i = 0; i < path.size() - ignore; i++) { - d->file->seek(path[i]->offset); - long size = d->file->readBlock(4).toUInt(); - // 64-bit - if (size == 1) { - d->file->seek(4, File::Current); // Skip name - long long longSize = d->file->readBlock(8).toLongLong(); - // Seek the offset of the 64-bit size - d->file->seek(path[i]->offset + 8); - d->file->writeBlock(ByteVector::fromLongLong(longSize + delta)); - } - // 32-bit - else { - d->file->seek(path[i]->offset); - d->file->writeBlock(ByteVector::fromUInt(size + delta)); - } - } -} - -void -MP4::Tag::updateOffsets(long delta, long offset) -{ - MP4::Atom *moov = d->atoms->find("moov"); - if(moov) { - MP4::AtomList stco = moov->findall("stco", true); - for(unsigned int i = 0; i < stco.size(); i++) { - MP4::Atom *atom = stco[i]; - if(atom->offset > offset) { - atom->offset += delta; - } - d->file->seek(atom->offset + 12); - ByteVector data = d->file->readBlock(atom->length - 12); - unsigned int count = data.mid(0, 4).toUInt(); - d->file->seek(atom->offset + 16); - int pos = 4; - while(count--) { - long o = data.mid(pos, 4).toUInt(); - if(o > offset) { - o += delta; - } - d->file->writeBlock(ByteVector::fromUInt(o)); - pos += 4; - } - } - - MP4::AtomList co64 = moov->findall("co64", true); - for(unsigned int i = 0; i < co64.size(); i++) { - MP4::Atom *atom = co64[i]; - if(atom->offset > offset) { - atom->offset += delta; - } - d->file->seek(atom->offset + 12); - ByteVector data = d->file->readBlock(atom->length - 12); - unsigned int count = data.mid(0, 4).toUInt(); - d->file->seek(atom->offset + 16); - int pos = 4; - while(count--) { - long long o = data.mid(pos, 8).toLongLong(); - if(o > offset) { - o += delta; - } - d->file->writeBlock(ByteVector::fromLongLong(o)); - pos += 8; - } - } - } - - MP4::Atom *moof = d->atoms->find("moof"); - if(moof) { - MP4::AtomList tfhd = moof->findall("tfhd", true); - for(unsigned int i = 0; i < tfhd.size(); i++) { - MP4::Atom *atom = tfhd[i]; - if(atom->offset > offset) { - atom->offset += delta; - } - d->file->seek(atom->offset + 9); - ByteVector data = d->file->readBlock(atom->offset - 9); - unsigned int flags = (ByteVector(1, '\0') + data.mid(0, 3)).toUInt(); - if(flags & 1) { - long long o = data.mid(7, 8).toLongLong(); - if(o > offset) { - o += delta; - } - d->file->seek(atom->offset + 16); - d->file->writeBlock(ByteVector::fromLongLong(o)); - } - } - } -} - -void -MP4::Tag::saveNew(ByteVector &data) -{ - data = renderAtom("meta", TagLib::ByteVector(4, '\0') + - renderAtom("hdlr", TagLib::ByteVector(8, '\0') + TagLib::ByteVector("mdirappl") + TagLib::ByteVector(9, '\0')) + - data + padIlst(data)); - - AtomList path = d->atoms->path("moov", "udta"); - if(path.size() != 2) { - path = d->atoms->path("moov"); - data = renderAtom("udta", data); - } - - long offset = path[path.size() - 1]->offset + 8; - d->file->insert(data, offset, 0); - - updateParents(path, data.size()); - updateOffsets(data.size(), offset); -} - -void -MP4::Tag::saveExisting(ByteVector &data, AtomList &path) -{ - MP4::Atom *ilst = path[path.size() - 1]; - long offset = ilst->offset; - long length = ilst->length; - - MP4::Atom *meta = path[path.size() - 2]; - AtomList::Iterator index = meta->children.find(ilst); - - // check if there is an atom before 'ilst', and possibly use it as padding - if(index != meta->children.begin()) { - AtomList::Iterator prevIndex = index; - prevIndex--; - MP4::Atom *prev = *prevIndex; - if(prev->name == "free") { - offset = prev->offset; - length += prev->length; - } - } - // check if there is an atom after 'ilst', and possibly use it as padding - AtomList::Iterator nextIndex = index; - nextIndex++; - if(nextIndex != meta->children.end()) { - MP4::Atom *next = *nextIndex; - if(next->name == "free") { - length += next->length; - } - } - - long delta = data.size() - length; - if(delta > 0 || (delta < 0 && delta > -8)) { - data.append(padIlst(data)); - delta = data.size() - length; - } - else if(delta < 0) { - data.append(padIlst(data, -delta - 8)); - delta = 0; - } - - d->file->insert(data, offset, length); - - if(delta) { - updateParents(path, delta, 1); - updateOffsets(delta, offset); - } -} - -String -MP4::Tag::title() const -{ - if(d->items.contains("\251nam")) - return d->items["\251nam"].toStringList().toString(", "); - return String::null; -} - -String -MP4::Tag::artist() const -{ - if(d->items.contains("\251ART")) - return d->items["\251ART"].toStringList().toString(", "); - return String::null; -} - -String -MP4::Tag::album() const -{ - if(d->items.contains("\251alb")) - return d->items["\251alb"].toStringList().toString(", "); - return String::null; -} - -String -MP4::Tag::comment() const -{ - if(d->items.contains("\251cmt")) - return d->items["\251cmt"].toStringList().toString(", "); - return String::null; -} - -String -MP4::Tag::genre() const -{ - if(d->items.contains("\251gen")) - return d->items["\251gen"].toStringList().toString(", "); - return String::null; -} - -unsigned int -MP4::Tag::year() const -{ - if(d->items.contains("\251day")) - return d->items["\251day"].toStringList().toString().toInt(); - return 0; -} - -unsigned int -MP4::Tag::track() const -{ - if(d->items.contains("trkn")) - return d->items["trkn"].toIntPair().first; - return 0; -} - -void -MP4::Tag::setTitle(const String &value) -{ - d->items["\251nam"] = StringList(value); -} - -void -MP4::Tag::setArtist(const String &value) -{ - d->items["\251ART"] = StringList(value); -} - -void -MP4::Tag::setAlbum(const String &value) -{ - d->items["\251alb"] = StringList(value); -} - -void -MP4::Tag::setComment(const String &value) -{ - d->items["\251cmt"] = StringList(value); -} - -void -MP4::Tag::setGenre(const String &value) -{ - d->items["\251gen"] = StringList(value); -} - -void -MP4::Tag::setYear(uint value) -{ - d->items["\251day"] = StringList(String::number(value)); -} - -void -MP4::Tag::setTrack(uint value) -{ - d->items["trkn"] = MP4::Item(value, 0); -} - -MP4::ItemListMap & -MP4::Tag::itemListMap() -{ - return d->items; -} - diff --git a/platform/win32/msvc/external/taglib/taglib/mp4/mp4tag.h b/platform/win32/msvc/external/taglib/taglib/mp4/mp4tag.h deleted file mode 100644 index b5ea6ebbc5e..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mp4/mp4tag.h +++ /dev/null @@ -1,112 +0,0 @@ -/************************************************************************** - copyright : (C) 2007,2011 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_MP4TAG_H -#define TAGLIB_MP4TAG_H - -#include "tag.h" -#include "tbytevectorlist.h" -#include "tfile.h" -#include "tmap.h" -#include "tstringlist.h" -#include "taglib_export.h" -#include "mp4atom.h" -#include "mp4item.h" - -namespace TagLib { - - namespace MP4 { - - typedef TagLib::Map<String, Item> ItemListMap; - - class TAGLIB_EXPORT Tag: public TagLib::Tag - { - public: - Tag(); - Tag(TagLib::File *file, Atoms *atoms); - ~Tag(); - bool save(); - - String title() const; - String artist() const; - String album() const; - String comment() const; - String genre() const; - uint year() const; - uint track() const; - - void setTitle(const String &value); - void setArtist(const String &value); - void setAlbum(const String &value); - void setComment(const String &value); - void setGenre(const String &value); - void setYear(uint value); - void setTrack(uint value); - - ItemListMap &itemListMap(); - - private: - AtomDataList parseData2(Atom *atom, TagLib::File *file, int expectedFlags = -1, bool freeForm = false); - TagLib::ByteVectorList parseData(Atom *atom, TagLib::File *file, int expectedFlags = -1, bool freeForm = false); - void parseText(Atom *atom, TagLib::File *file, int expectedFlags = 1); - void parseFreeForm(Atom *atom, TagLib::File *file); - void parseInt(Atom *atom, TagLib::File *file); - void parseByte(Atom *atom, TagLib::File *file); - void parseUInt(Atom *atom, TagLib::File *file); - void parseLongLong(Atom *atom, TagLib::File *file); - void parseGnre(Atom *atom, TagLib::File *file); - void parseIntPair(Atom *atom, TagLib::File *file); - void parseBool(Atom *atom, TagLib::File *file); - void parseCovr(Atom *atom, TagLib::File *file); - - TagLib::ByteVector padIlst(const ByteVector &data, int length = -1); - TagLib::ByteVector renderAtom(const ByteVector &name, const TagLib::ByteVector &data); - TagLib::ByteVector renderData(const ByteVector &name, int flags, const TagLib::ByteVectorList &data); - TagLib::ByteVector renderText(const ByteVector &name, Item &item, int flags = TypeUTF8); - TagLib::ByteVector renderFreeForm(const String &name, Item &item); - TagLib::ByteVector renderBool(const ByteVector &name, Item &item); - TagLib::ByteVector renderInt(const ByteVector &name, Item &item); - TagLib::ByteVector renderByte(const ByteVector &name, Item &item); - TagLib::ByteVector renderUInt(const ByteVector &name, Item &item); - TagLib::ByteVector renderLongLong(const ByteVector &name, Item &item); - TagLib::ByteVector renderIntPair(const ByteVector &name, Item &item); - TagLib::ByteVector renderIntPairNoTrailing(const ByteVector &name, Item &item); - TagLib::ByteVector renderCovr(const ByteVector &name, Item &item); - - void updateParents(AtomList &path, long delta, int ignore = 0); - void updateOffsets(long delta, long offset); - - void saveNew(TagLib::ByteVector &data); - void saveExisting(TagLib::ByteVector &data, AtomList &path); - - class TagPrivate; - TagPrivate *d; - }; - - } - -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpc/mpcfile.cpp b/platform/win32/msvc/external/taglib/taglib/mpc/mpcfile.cpp deleted file mode 100644 index 519a0467550..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpc/mpcfile.cpp +++ /dev/null @@ -1,360 +0,0 @@ -/*************************************************************************** - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tbytevector.h> -#include <tstring.h> -#include <tagunion.h> -#include <tdebug.h> -#include <tpropertymap.h> - -#include "mpcfile.h" -#include "id3v1tag.h" -#include "id3v2header.h" -#include "apetag.h" -#include "apefooter.h" - -using namespace TagLib; - -namespace -{ - enum { MPCAPEIndex, MPCID3v1Index }; -} - -class MPC::File::FilePrivate -{ -public: - FilePrivate() : - APELocation(-1), - APESize(0), - ID3v1Location(-1), - ID3v2Header(0), - ID3v2Location(-1), - ID3v2Size(0), - properties(0), - scanned(false), - hasAPE(false), - hasID3v1(false), - hasID3v2(false) {} - - ~FilePrivate() - { - delete ID3v2Header; - delete properties; - } - - long APELocation; - uint APESize; - - long ID3v1Location; - - ID3v2::Header *ID3v2Header; - long ID3v2Location; - uint ID3v2Size; - - TagUnion tag; - - Properties *properties; - bool scanned; - - // These indicate whether the file *on disk* has these tags, not if - // this data structure does. This is used in computing offsets. - - bool hasAPE; - bool hasID3v1; - bool hasID3v2; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -MPC::File::File(FileName file, bool readProperties, - Properties::ReadStyle propertiesStyle) : TagLib::File(file) -{ - d = new FilePrivate; - read(readProperties, propertiesStyle); -} - -MPC::File::File(IOStream *stream, bool readProperties, - Properties::ReadStyle propertiesStyle) : TagLib::File(stream) -{ - d = new FilePrivate; - read(readProperties, propertiesStyle); -} - -MPC::File::~File() -{ - delete d; -} - -TagLib::Tag *MPC::File::tag() const -{ - return &d->tag; -} - -PropertyMap MPC::File::properties() const -{ - if(d->hasAPE) - return d->tag.access<APE::Tag>(MPCAPEIndex, false)->properties(); - if(d->hasID3v1) - return d->tag.access<ID3v1::Tag>(MPCID3v1Index, false)->properties(); - return PropertyMap(); -} - -void MPC::File::removeUnsupportedProperties(const StringList &properties) -{ - if(d->hasAPE) - d->tag.access<APE::Tag>(MPCAPEIndex, false)->removeUnsupportedProperties(properties); - if(d->hasID3v1) - d->tag.access<ID3v1::Tag>(MPCID3v1Index, false)->removeUnsupportedProperties(properties); -} - -PropertyMap MPC::File::setProperties(const PropertyMap &properties) -{ - if(d->hasAPE) - return d->tag.access<APE::Tag>(MPCAPEIndex, false)->setProperties(properties); - else if(d->hasID3v1) - return d->tag.access<ID3v1::Tag>(MPCID3v1Index, false)->setProperties(properties); - else - return d->tag.access<APE::Tag>(APE, true)->setProperties(properties); -} - - -MPC::Properties *MPC::File::audioProperties() const -{ - return d->properties; -} - -bool MPC::File::save() -{ - if(readOnly()) { - debug("MPC::File::save() -- File is read only."); - return false; - } - - // Possibly strip ID3v2 tag - - if(d->hasID3v2 && !d->ID3v2Header) { - removeBlock(d->ID3v2Location, d->ID3v2Size); - d->hasID3v2 = false; - if(d->hasID3v1) - d->ID3v1Location -= d->ID3v2Size; - if(d->hasAPE) - d->APELocation -= d->ID3v2Size; - } - - // Update ID3v1 tag - - if(ID3v1Tag()) { - if(d->hasID3v1) { - seek(d->ID3v1Location); - writeBlock(ID3v1Tag()->render()); - } - else { - seek(0, End); - d->ID3v1Location = tell(); - writeBlock(ID3v1Tag()->render()); - d->hasID3v1 = true; - } - } else - if(d->hasID3v1) { - removeBlock(d->ID3v1Location, 128); - d->hasID3v1 = false; - if(d->hasAPE) { - if(d->APELocation > d->ID3v1Location) - d->APELocation -= 128; - } - } - - // Update APE tag - - if(APETag()) { - if(d->hasAPE) - insert(APETag()->render(), d->APELocation, d->APESize); - else { - if(d->hasID3v1) { - insert(APETag()->render(), d->ID3v1Location, 0); - d->APESize = APETag()->footer()->completeTagSize(); - d->hasAPE = true; - d->APELocation = d->ID3v1Location; - d->ID3v1Location += d->APESize; - } - else { - seek(0, End); - d->APELocation = tell(); - writeBlock(APETag()->render()); - d->APESize = APETag()->footer()->completeTagSize(); - d->hasAPE = true; - } - } - } - else - if(d->hasAPE) { - removeBlock(d->APELocation, d->APESize); - d->hasAPE = false; - if(d->hasID3v1) { - if(d->ID3v1Location > d->APELocation) - d->ID3v1Location -= d->APESize; - } - } - - return true; -} - -ID3v1::Tag *MPC::File::ID3v1Tag(bool create) -{ - return d->tag.access<ID3v1::Tag>(MPCID3v1Index, create); -} - -APE::Tag *MPC::File::APETag(bool create) -{ - return d->tag.access<APE::Tag>(MPCAPEIndex, create); -} - -void MPC::File::strip(int tags) -{ - if(tags & ID3v1) { - d->tag.set(MPCID3v1Index, 0); - APETag(true); - } - - if(tags & ID3v2) { - delete d->ID3v2Header; - d->ID3v2Header = 0; - } - - if(tags & APE) { - d->tag.set(MPCAPEIndex, 0); - - if(!ID3v1Tag()) - APETag(true); - } -} - -void MPC::File::remove(int tags) -{ - strip(tags); -} - - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void MPC::File::read(bool readProperties, Properties::ReadStyle /* propertiesStyle */) -{ - // Look for an ID3v1 tag - - d->ID3v1Location = findID3v1(); - - if(d->ID3v1Location >= 0) { - d->tag.set(MPCID3v1Index, new ID3v1::Tag(this, d->ID3v1Location)); - d->hasID3v1 = true; - } - - // Look for an APE tag - - findAPE(); - - d->APELocation = findAPE(); - - if(d->APELocation >= 0) { - d->tag.set(MPCAPEIndex, new APE::Tag(this, d->APELocation)); - - d->APESize = APETag()->footer()->completeTagSize(); - d->APELocation = d->APELocation + APETag()->footer()->size() - d->APESize; - d->hasAPE = true; - } - - if(!d->hasID3v1) - APETag(true); - - // Look for and skip an ID3v2 tag - - d->ID3v2Location = findID3v2(); - - if(d->ID3v2Location >= 0) { - seek(d->ID3v2Location); - d->ID3v2Header = new ID3v2::Header(readBlock(ID3v2::Header::size())); - d->ID3v2Size = d->ID3v2Header->completeTagSize(); - d->hasID3v2 = true; - } - - if(d->hasID3v2) - seek(d->ID3v2Location + d->ID3v2Size); - else - seek(0); - - // Look for MPC metadata - - if(readProperties) { - d->properties = new Properties(this, length() - d->ID3v2Size - d->APESize); - } -} - -long MPC::File::findAPE() -{ - if(!isValid()) - return -1; - - if(d->hasID3v1) - seek(-160, End); - else - seek(-32, End); - - long p = tell(); - - if(readBlock(8) == APE::Tag::fileIdentifier()) - return p; - - return -1; -} - -long MPC::File::findID3v1() -{ - if(!isValid()) - return -1; - - seek(-128, End); - long p = tell(); - - if(readBlock(3) == ID3v1::Tag::fileIdentifier()) - return p; - - return -1; -} - -long MPC::File::findID3v2() -{ - if(!isValid()) - return -1; - - seek(0); - - if(readBlock(3) == ID3v2::Header::fileIdentifier()) - return 0; - - return -1; -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpc/mpcfile.h b/platform/win32/msvc/external/taglib/taglib/mpc/mpcfile.h deleted file mode 100644 index 167b768e1ea..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpc/mpcfile.h +++ /dev/null @@ -1,204 +0,0 @@ -/*************************************************************************** - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_MPCFILE_H -#define TAGLIB_MPCFILE_H - -#include "taglib_export.h" -#include "tfile.h" -#include "tag.h" - -#include "mpcproperties.h" - -#include "tlist.h" - -namespace TagLib { - - class Tag; - - namespace ID3v1 { class Tag; } - namespace APE { class Tag; } - - //! An implementation of MPC metadata - - /*! - * This is implementation of MPC metadata. - * - * This supports ID3v1 and APE (v1 and v2) style comments as well as reading stream - * properties from the file. ID3v2 tags are invalid in MPC-files, but will be skipped - * and ignored. - */ - - namespace MPC { - - //! An implementation of TagLib::File with MPC specific methods - - /*! - * This implements and provides an interface for MPC files to the - * TagLib::Tag and TagLib::AudioProperties interfaces by way of implementing - * the abstract TagLib::File API as well as providing some additional - * information specific to MPC files. - * The only invalid tag combination supported is an ID3v1 tag after an APE tag. - */ - - class TAGLIB_EXPORT File : public TagLib::File - { - public: - /*! - * This set of flags is used for various operations and is suitable for - * being OR-ed together. - */ - enum TagTypes { - //! Empty set. Matches no tag types. - NoTags = 0x0000, - //! Matches ID3v1 tags. - ID3v1 = 0x0001, - //! Matches ID3v2 tags. - ID3v2 = 0x0002, - //! Matches APE tags. - APE = 0x0004, - //! Matches all tag types. - AllTags = 0xffff - }; - - /*! - * Contructs an MPC file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - */ - File(FileName file, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Contructs an MPC file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - */ - File(IOStream *stream, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Destroys this instance of the File. - */ - virtual ~File(); - - /*! - * Returns the Tag for this file. This will be an APE tag, an ID3v1 tag - * or a combination of the two. - */ - virtual TagLib::Tag *tag() const; - - /*! - * Implements the unified property interface -- export function. - * If the file contains both an APE and an ID3v1 tag, only the APE - * tag will be converted to the PropertyMap. - */ - PropertyMap properties() const; - - void removeUnsupportedProperties(const StringList &properties); - - /*! - * Implements the unified property interface -- import function. - * As with the export, only one tag is taken into account. If the file - * has no tag at all, an APE tag will be created. - */ - PropertyMap setProperties(const PropertyMap &); - - /*! - * Returns the MPC::Properties for this file. If no audio properties - * were read then this will return a null pointer. - */ - virtual Properties *audioProperties() const; - - /*! - * Saves the file. - */ - virtual bool save(); - - /*! - * Returns a pointer to the ID3v1 tag of the file. - * - * If \a create is false (the default) this will return a null pointer - * if there is no valid ID3v1 tag. If \a create is true it will create - * an ID3v1 tag if one does not exist. If there is already an APE tag, the - * new ID3v1 tag will be placed after it. - * - * \note The Tag <b>is still</b> owned by the APE::File and should not be - * deleted by the user. It will be deleted when the file (object) is - * destroyed. - */ - ID3v1::Tag *ID3v1Tag(bool create = false); - - /*! - * Returns a pointer to the APE tag of the file. - * - * If \a create is false (the default) this will return a null pointer - * if there is no valid APE tag. If \a create is true it will create - * a APE tag if one does not exist. If there is already an ID3v1 tag, thes - * new APE tag will be placed before it. - * - * \note The Tag <b>is still</b> owned by the APE::File and should not be - * deleted by the user. It will be deleted when the file (object) is - * destroyed. - */ - APE::Tag *APETag(bool create = false); - - /*! - * This will remove the tags that match the OR-ed together TagTypes from the - * file. By default it removes all tags. - * - * \warning This will also invalidate pointers to the tags - * as their memory will be freed. - * - * \note In order to make the removal permanent save() still needs to be called. - */ - void strip(int tags = AllTags); - - /*! - * \deprecated - * \see strip - */ - void remove(int tags = AllTags); - - private: - File(const File &); - File &operator=(const File &); - - void read(bool readProperties, Properties::ReadStyle propertiesStyle); - void scan(); - long findAPE(); - long findID3v1(); - long findID3v2(); - - class FilePrivate; - FilePrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpc/mpcproperties.cpp b/platform/win32/msvc/external/taglib/taglib/mpc/mpcproperties.cpp deleted file mode 100644 index 23d419872f0..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpc/mpcproperties.cpp +++ /dev/null @@ -1,316 +0,0 @@ -/*************************************************************************** - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tstring.h> -#include <tdebug.h> -#include <bitset> -#include <math.h> - -#include "mpcproperties.h" -#include "mpcfile.h" - -using namespace TagLib; - -class MPC::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate(long length, ReadStyle s) : - streamLength(length), - style(s), - version(0), - length(0), - bitrate(0), - sampleRate(0), - channels(0), - totalFrames(0), - sampleFrames(0), - trackGain(0), - trackPeak(0), - albumGain(0), - albumPeak(0) {} - - long streamLength; - ReadStyle style; - int version; - int length; - int bitrate; - int sampleRate; - int channels; - uint totalFrames; - uint sampleFrames; - uint trackGain; - uint trackPeak; - uint albumGain; - uint albumPeak; - String flags; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -MPC::Properties::Properties(const ByteVector &data, long streamLength, ReadStyle style) : AudioProperties(style) -{ - d = new PropertiesPrivate(streamLength, style); - readSV7(data); -} - -MPC::Properties::Properties(File *file, long streamLength, ReadStyle style) : AudioProperties(style) -{ - d = new PropertiesPrivate(streamLength, style); - ByteVector magic = file->readBlock(4); - if(magic == "MPCK") { - // Musepack version 8 - readSV8(file); - } - else { - // Musepack version 7 or older, fixed size header - readSV7(magic + file->readBlock(MPC::HeaderSize - 4)); - } -} - -MPC::Properties::~Properties() -{ - delete d; -} - -int MPC::Properties::length() const -{ - return d->length; -} - -int MPC::Properties::bitrate() const -{ - return d->bitrate; -} - -int MPC::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int MPC::Properties::channels() const -{ - return d->channels; -} - -int MPC::Properties::mpcVersion() const -{ - return d->version; -} - -TagLib::uint MPC::Properties::totalFrames() const -{ - return d->totalFrames; -} - -TagLib::uint MPC::Properties::sampleFrames() const -{ - return d->sampleFrames; -} - -int MPC::Properties::trackGain() const -{ - return d->trackGain; -} - -int MPC::Properties::trackPeak() const -{ - return d->trackPeak; -} - -int MPC::Properties::albumGain() const -{ - return d->albumGain; -} - -int MPC::Properties::albumPeak() const -{ - return d->albumPeak; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -unsigned long readSize(File *file, TagLib::uint &sizelength) -{ - unsigned char tmp; - unsigned long size = 0; - - do { - ByteVector b = file->readBlock(1); - tmp = b[0]; - size = (size << 7) | (tmp & 0x7F); - sizelength++; - } while((tmp & 0x80)); - return size; -} - -unsigned long readSize(const ByteVector &data, TagLib::uint &sizelength) -{ - unsigned char tmp; - unsigned long size = 0; - unsigned long pos = 0; - - do { - tmp = data[pos++]; - size = (size << 7) | (tmp & 0x7F); - sizelength++; - } while((tmp & 0x80) && (pos < data.size())); - return size; -} - -static const unsigned short sftable [4] = { 44100, 48000, 37800, 32000 }; - -void MPC::Properties::readSV8(File *file) -{ - bool readSH = false, readRG = false; - - while(!readSH && !readRG) { - ByteVector packetType = file->readBlock(2); - uint packetSizeLength = 0; - unsigned long packetSize = readSize(file, packetSizeLength); - unsigned long dataSize = packetSize - 2 - packetSizeLength; - - if(packetType == "SH") { - // Stream Header - // http://trac.musepack.net/wiki/SV8Specification#StreamHeaderPacket - ByteVector data = file->readBlock(dataSize); - readSH = true; - - TagLib::uint pos = 4; - d->version = data[pos]; - pos += 1; - d->sampleFrames = readSize(data.mid(pos), pos); - ulong begSilence = readSize(data.mid(pos), pos); - - std::bitset<16> flags(TAGLIB_CONSTRUCT_BITSET(data.mid(pos, 2).toUShort(true))); - pos += 2; - - d->sampleRate = sftable[flags[15] * 4 + flags[14] * 2 + flags[13]]; - d->channels = flags[7] * 8 + flags[6] * 4 + flags[5] * 2 + flags[4] + 1; - - if((d->sampleFrames - begSilence) != 0) - d->bitrate = (int)(d->streamLength * 8.0 * d->sampleRate / (d->sampleFrames - begSilence)); - d->bitrate = d->bitrate / 1000; - - d->length = (d->sampleFrames - begSilence) / d->sampleRate; - } - - else if (packetType == "RG") { - // Replay Gain - // http://trac.musepack.net/wiki/SV8Specification#ReplaygainPacket - ByteVector data = file->readBlock(dataSize); - readRG = true; - - int replayGainVersion = data[0]; - if(replayGainVersion == 1) { - d->trackGain = data.mid(1, 2).toUInt(true); - d->trackPeak = data.mid(3, 2).toUInt(true); - d->albumGain = data.mid(5, 2).toUInt(true); - d->albumPeak = data.mid(7, 2).toUInt(true); - } - } - - else if(packetType == "SE") { - break; - } - - else { - file->seek(dataSize, File::Current); - } - } -} - -void MPC::Properties::readSV7(const ByteVector &data) -{ - if(data.startsWith("MP+")) { - d->version = data[3] & 15; - if(d->version < 7) - return; - - d->totalFrames = data.mid(4, 4).toUInt(false); - - std::bitset<32> flags(TAGLIB_CONSTRUCT_BITSET(data.mid(8, 4).toUInt(false))); - d->sampleRate = sftable[flags[17] * 2 + flags[16]]; - d->channels = 2; - - uint gapless = data.mid(5, 4).toUInt(false); - - d->trackGain = data.mid(14,2).toShort(false); - d->trackPeak = data.mid(12,2).toUInt(false); - d->albumGain = data.mid(18,2).toShort(false); - d->albumPeak = data.mid(16,2).toUInt(false); - - // convert gain info - if(d->trackGain != 0) { - int tmp = (int)((64.82 - (short)d->trackGain / 100.) * 256. + .5); - if(tmp >= (1 << 16) || tmp < 0) tmp = 0; - d->trackGain = tmp; - } - - if(d->albumGain != 0) { - int tmp = (int)((64.82 - d->albumGain / 100.) * 256. + .5); - if(tmp >= (1 << 16) || tmp < 0) tmp = 0; - d->albumGain = tmp; - } - - if (d->trackPeak != 0) - d->trackPeak = (int)(log10((double)d->trackPeak) * 20 * 256 + .5); - - if (d->albumPeak != 0) - d->albumPeak = (int)(log10((double)d->albumPeak) * 20 * 256 + .5); - - bool trueGapless = (gapless >> 31) & 0x0001; - if(trueGapless) { - uint lastFrameSamples = (gapless >> 20) & 0x07FF; - d->sampleFrames = d->totalFrames * 1152 - lastFrameSamples; - } - else - d->sampleFrames = d->totalFrames * 1152 - 576; - } - else { - uint headerData = data.mid(0, 4).toUInt(false); - - d->bitrate = (headerData >> 23) & 0x01ff; - d->version = (headerData >> 11) & 0x03ff; - d->sampleRate = 44100; - d->channels = 2; - - if(d->version >= 5) - d->totalFrames = data.mid(4, 4).toUInt(false); - else - d->totalFrames = data.mid(6, 2).toUInt(false); - - d->sampleFrames = d->totalFrames * 1152 - 576; - } - - d->length = d->sampleRate > 0 ? (d->sampleFrames + (d->sampleRate / 2)) / d->sampleRate : 0; - - if(!d->bitrate) - d->bitrate = d->length > 0 ? ((d->streamLength * 8L) / d->length) / 1000 : 0; -} - diff --git a/platform/win32/msvc/external/taglib/taglib/mpc/mpcproperties.h b/platform/win32/msvc/external/taglib/taglib/mpc/mpcproperties.h deleted file mode 100644 index adf40d83996..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpc/mpcproperties.h +++ /dev/null @@ -1,122 +0,0 @@ -/*************************************************************************** - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_MPCPROPERTIES_H -#define TAGLIB_MPCPROPERTIES_H - -#include "taglib_export.h" -#include "audioproperties.h" - -namespace TagLib { - - namespace MPC { - - class File; - - static const uint HeaderSize = 8*7; - - //! An implementation of audio property reading for MPC - - /*! - * This reads the data from an MPC stream found in the AudioProperties - * API. - */ - - class TAGLIB_EXPORT Properties : public AudioProperties - { - public: - /*! - * Create an instance of MPC::Properties with the data read from the - * ByteVector \a data. - * - * This constructor is deprecated. It only works for MPC version up to 7. - */ - Properties(const ByteVector &data, long streamLength, ReadStyle style = Average); - - /*! - * Create an instance of MPC::Properties with the data read directly - * from a MPC::File. - */ - Properties(File *file, long streamLength, ReadStyle style = Average); - - /*! - * Destroys this MPC::Properties instance. - */ - virtual ~Properties(); - - // Reimplementations. - - virtual int length() const; - virtual int bitrate() const; - virtual int sampleRate() const; - virtual int channels() const; - - /*! - * Returns the version of the bitstream (SV4-SV8) - */ - int mpcVersion() const; - uint totalFrames() const; - uint sampleFrames() const; - - /*! - * Returns the track gain as an integer value, - * to convert to dB: trackGain in dB = 64.82 - (trackGain / 256) - */ - int trackGain() const; - - /*! - * Returns the track peak as an integer value, - * to convert to dB: trackPeak in dB = trackPeak / 256 - * to convert to floating [-1..1]: trackPeak = 10^(trackPeak / 256 / 20)/32768 - */ - int trackPeak() const; - - /*! - * Returns the album gain as an integer value, - * to convert to dB: albumGain in dB = 64.82 - (albumGain / 256) - */ - int albumGain() const; - - /*! - * Returns the album peak as an integer value, - * to convert to dB: albumPeak in dB = albumPeak / 256 - * to convert to floating [-1..1]: albumPeak = 10^(albumPeak / 256 / 20)/32768 - */ - int albumPeak() const; - - private: - Properties(const Properties &); - Properties &operator=(const Properties &); - - void readSV7(const ByteVector &data); - void readSV8(File *file); - - class PropertiesPrivate; - PropertiesPrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v1/id3v1genres.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v1/id3v1genres.cpp deleted file mode 100644 index eba4c526efa..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v1/id3v1genres.cpp +++ /dev/null @@ -1,219 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org -***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include "id3v1genres.h" - -using namespace TagLib; - -namespace TagLib { - namespace ID3v1 { - - static const int genresSize = 148; - static const String genres[] = { - "Blues", - "Classic Rock", - "Country", - "Dance", - "Disco", - "Funk", - "Grunge", - "Hip-Hop", - "Jazz", - "Metal", - "New Age", - "Oldies", - "Other", - "Pop", - "R&B", - "Rap", - "Reggae", - "Rock", - "Techno", - "Industrial", - "Alternative", - "Ska", - "Death Metal", - "Pranks", - "Soundtrack", - "Euro-Techno", - "Ambient", - "Trip-Hop", - "Vocal", - "Jazz+Funk", - "Fusion", - "Trance", - "Classical", - "Instrumental", - "Acid", - "House", - "Game", - "Sound Clip", - "Gospel", - "Noise", - "Alternative Rock", - "Bass", - "Soul", - "Punk", - "Space", - "Meditative", - "Instrumental Pop", - "Instrumental Rock", - "Ethnic", - "Gothic", - "Darkwave", - "Techno-Industrial", - "Electronic", - "Pop-Folk", - "Eurodance", - "Dream", - "Southern Rock", - "Comedy", - "Cult", - "Gangsta", - "Top 40", - "Christian Rap", - "Pop/Funk", - "Jungle", - "Native American", - "Cabaret", - "New Wave", - "Psychedelic", - "Rave", - "Showtunes", - "Trailer", - "Lo-Fi", - "Tribal", - "Acid Punk", - "Acid Jazz", - "Polka", - "Retro", - "Musical", - "Rock & Roll", - "Hard Rock", - "Folk", - "Folk/Rock", - "National Folk", - "Swing", - "Fusion", - "Bebob", - "Latin", - "Revival", - "Celtic", - "Bluegrass", - "Avantgarde", - "Gothic Rock", - "Progressive Rock", - "Psychedelic Rock", - "Symphonic Rock", - "Slow Rock", - "Big Band", - "Chorus", - "Easy Listening", - "Acoustic", - "Humour", - "Speech", - "Chanson", - "Opera", - "Chamber Music", - "Sonata", - "Symphony", - "Booty Bass", - "Primus", - "Porn Groove", - "Satire", - "Slow Jam", - "Club", - "Tango", - "Samba", - "Folklore", - "Ballad", - "Power Ballad", - "Rhythmic Soul", - "Freestyle", - "Duet", - "Punk Rock", - "Drum Solo", - "A Cappella", - "Euro-House", - "Dance Hall", - "Goa", - "Drum & Bass", - "Club-House", - "Hardcore", - "Terror", - "Indie", - "BritPop", - "Negerpunk", - "Polsk Punk", - "Beat", - "Christian Gangsta Rap", - "Heavy Metal", - "Black Metal", - "Crossover", - "Contemporary Christian", - "Christian Rock", - "Merengue", - "Salsa", - "Thrash Metal", - "Anime", - "Jpop", - "Synthpop" - }; - } -} - -StringList ID3v1::genreList() -{ - static StringList l; - if(l.isEmpty()) { - for(int i = 0; i < genresSize; i++) - l.append(genres[i]); - } - return l; -} - -ID3v1::GenreMap ID3v1::genreMap() -{ - static GenreMap m; - if(m.isEmpty()) { - for(int i = 0; i < genresSize; i++) - m.insert(genres[i], i); - } - return m; -} - -String ID3v1::genre(int i) -{ - if(i >= 0 && i < genresSize) - return genres[i] + String::null; // always make a copy - return String::null; -} - -int ID3v1::genreIndex(const String &name) -{ - if(genreMap().contains(name)) - return genreMap()[name]; - return 255; -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v1/id3v1genres.h b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v1/id3v1genres.h deleted file mode 100644 index 271f7259036..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v1/id3v1genres.h +++ /dev/null @@ -1,66 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_ID3V1GENRE_H -#define TAGLIB_ID3V1GENRE_H - -#include "tmap.h" -#include "tstringlist.h" -#include "taglib_export.h" - -namespace TagLib { - namespace ID3v1 { - - typedef Map<String, int> GenreMap; - - /*! - * Returns the list of canonical ID3v1 genre names in the order that they - * are listed in the standard. - */ - StringList TAGLIB_EXPORT genreList(); - - /*! - * A "reverse mapping" that goes from the canonical ID3v1 genre name to the - * respective genre number. genreMap()["Rock"] == - */ - GenreMap TAGLIB_EXPORT genreMap(); - - /*! - * Returns the name of the genre at \a index in the ID3v1 genre list. If - * \a index is out of range -- less than zero or greater than 146 -- a null - * string will be returned. - */ - String TAGLIB_EXPORT genre(int index); - - /*! - * Returns the genre index for the (case sensitive) genre \a name. If the - * genre is not in the list 255 (which signifies an unknown genre in ID3v1) - * will be returned. - */ - int TAGLIB_EXPORT genreIndex(const String &name); - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v1/id3v1tag.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v1/id3v1tag.cpp deleted file mode 100644 index e9eb47bf1f8..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v1/id3v1tag.cpp +++ /dev/null @@ -1,255 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tdebug.h> -#include <tfile.h> - -#include "id3v1tag.h" -#include "id3v1genres.h" - -using namespace TagLib; -using namespace ID3v1; - -class ID3v1::Tag::TagPrivate -{ -public: - TagPrivate() : file(0), tagOffset(-1), track(0), genre(255) {} - - File *file; - long tagOffset; - - String title; - String artist; - String album; - String year; - String comment; - uchar track; - uchar genre; - - static const StringHandler *stringHandler; -}; - -static const StringHandler defaultStringHandler; -const ID3v1::StringHandler *ID3v1::Tag::TagPrivate::stringHandler = &defaultStringHandler; - -//////////////////////////////////////////////////////////////////////////////// -// StringHandler implementation -//////////////////////////////////////////////////////////////////////////////// - -StringHandler::StringHandler() -{ -} - -String ID3v1::StringHandler::parse(const ByteVector &data) const -{ - return String(data, String::Latin1).stripWhiteSpace(); -} - -ByteVector ID3v1::StringHandler::render(const String &s) const -{ - if(!s.isLatin1()) - { - return ByteVector(); - } - - return s.data(String::Latin1); -} - -//////////////////////////////////////////////////////////////////////////////// -// public methods -//////////////////////////////////////////////////////////////////////////////// - -ID3v1::Tag::Tag() : TagLib::Tag() -{ - d = new TagPrivate; -} - -ID3v1::Tag::Tag(File *file, long tagOffset) : TagLib::Tag() -{ - d = new TagPrivate; - d->file = file; - d->tagOffset = tagOffset; - - read(); -} - -ID3v1::Tag::~Tag() -{ - delete d; -} - -ByteVector ID3v1::Tag::render() const -{ - ByteVector data; - - data.append(fileIdentifier()); - data.append(TagPrivate::stringHandler->render(d->title).resize(30)); - data.append(TagPrivate::stringHandler->render(d->artist).resize(30)); - data.append(TagPrivate::stringHandler->render(d->album).resize(30)); - data.append(TagPrivate::stringHandler->render(d->year).resize(4)); - data.append(TagPrivate::stringHandler->render(d->comment).resize(28)); - data.append(char(0)); - data.append(char(d->track)); - data.append(char(d->genre)); - - return data; -} - -ByteVector ID3v1::Tag::fileIdentifier() -{ - return ByteVector::fromCString("TAG"); -} - -String ID3v1::Tag::title() const -{ - return d->title; -} - -String ID3v1::Tag::artist() const -{ - return d->artist; -} - -String ID3v1::Tag::album() const -{ - return d->album; -} - -String ID3v1::Tag::comment() const -{ - return d->comment; -} - -String ID3v1::Tag::genre() const -{ - return ID3v1::genre(d->genre); -} - -TagLib::uint ID3v1::Tag::year() const -{ - return d->year.toInt(); -} - -TagLib::uint ID3v1::Tag::track() const -{ - return d->track; -} - -void ID3v1::Tag::setTitle(const String &s) -{ - d->title = s; -} - -void ID3v1::Tag::setArtist(const String &s) -{ - d->artist = s; -} - -void ID3v1::Tag::setAlbum(const String &s) -{ - d->album = s; -} - -void ID3v1::Tag::setComment(const String &s) -{ - d->comment = s; -} - -void ID3v1::Tag::setGenre(const String &s) -{ - d->genre = ID3v1::genreIndex(s); -} - -void ID3v1::Tag::setYear(uint i) -{ - d->year = i > 0 ? String::number(i) : String::null; -} - -void ID3v1::Tag::setTrack(uint i) -{ - d->track = i < 256 ? i : 0; -} - -void ID3v1::Tag::setStringHandler(const StringHandler *handler) -{ - if (handler) - TagPrivate::stringHandler = handler; - else - TagPrivate::stringHandler = &defaultStringHandler; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected methods -//////////////////////////////////////////////////////////////////////////////// - -void ID3v1::Tag::read() -{ - if(d->file && d->file->isValid()) { - d->file->seek(d->tagOffset); - // read the tag -- always 128 bytes - ByteVector data = d->file->readBlock(128); - - // some initial sanity checking - if(data.size() == 128 && data.startsWith("TAG")) - parse(data); - else - debug("ID3v1 tag is not valid or could not be read at the specified offset."); - } -} - -void ID3v1::Tag::parse(const ByteVector &data) -{ - int offset = 3; - - d->title = TagPrivate::stringHandler->parse(data.mid(offset, 30)); - offset += 30; - - d->artist = TagPrivate::stringHandler->parse(data.mid(offset, 30)); - offset += 30; - - d->album = TagPrivate::stringHandler->parse(data.mid(offset, 30)); - offset += 30; - - d->year = TagPrivate::stringHandler->parse(data.mid(offset, 4)); - offset += 4; - - // Check for ID3v1.1 -- Note that ID3v1 *does not* support "track zero" -- this - // is not a bug in TagLib. Since a zeroed byte is what we would expect to - // indicate the end of a C-String, specifically the comment string, a value of - // zero must be assumed to be just that. - - if(data[offset + 28] == 0 && data[offset + 29] != 0) { - // ID3v1.1 detected - - d->comment = TagPrivate::stringHandler->parse(data.mid(offset, 28)); - d->track = uchar(data[offset + 29]); - } - else - d->comment = data.mid(offset, 30); - - offset += 30; - - d->genre = uchar(data[offset]); -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v1/id3v1tag.h b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v1/id3v1tag.h deleted file mode 100644 index 9332d4dce5a..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v1/id3v1tag.h +++ /dev/null @@ -1,187 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_ID3V1TAG_H -#define TAGLIB_ID3V1TAG_H - -#include "tag.h" -#include "tbytevector.h" -#include "taglib_export.h" - -namespace TagLib { - - class File; - - //! An ID3v1 implementation - - namespace ID3v1 { - - //! A abstraction for the string to data encoding in ID3v1 tags. - - /*! - * ID3v1 should in theory always contain ISO-8859-1 (Latin1) data. In - * practice it does not. TagLib by default only supports ISO-8859-1 data - * in ID3v1 tags. - * - * However by subclassing this class and reimplementing parse() and render() - * and setting your reimplementation as the default with - * ID3v1::Tag::setStringHandler() you can define how you would like these - * transformations to be done. - * - * \warning It is advisable <b>not</b> to write non-ISO-8859-1 data to ID3v1 - * tags. Please consider disabling the writing of ID3v1 tags in the case - * that the data is not ISO-8859-1. - * - * \see ID3v1::Tag::setStringHandler() - */ - - class TAGLIB_EXPORT StringHandler - { - TAGLIB_IGNORE_MISSING_DESTRUCTOR - public: - // BIC: Add virtual destructor. - StringHandler(); - - /*! - * Decode a string from \a data. The default implementation assumes that - * \a data is an ISO-8859-1 (Latin1) character array. - */ - virtual String parse(const ByteVector &data) const; - - /*! - * Encode a ByteVector with the data from \a s. The default implementation - * assumes that \a s is an ISO-8859-1 (Latin1) string. If the string is - * does not conform to ISO-8859-1, no value is written. - * - * \warning It is recommended that you <b>not</b> override this method, but - * instead do not write an ID3v1 tag in the case that the data is not - * ISO-8859-1. - */ - virtual ByteVector render(const String &s) const; - }; - - //! The main class in the ID3v1 implementation - - /*! - * This is an implementation of the ID3v1 format. ID3v1 is both the simplist - * and most common of tag formats but is rather limited. Because of its - * pervasiveness and the way that applications have been written around the - * fields that it provides, the generic TagLib::Tag API is a mirror of what is - * provided by ID3v1. - * - * ID3v1 tags should generally only contain Latin1 information. However because - * many applications do not follow this rule there is now support for overriding - * the ID3v1 string handling using the ID3v1::StringHandler class. Please see - * the documentation for that class for more information. - * - * \see StringHandler - * - * \note Most fields are truncated to a maximum of 28-30 bytes. The - * truncation happens automatically when the tag is rendered. - */ - - class TAGLIB_EXPORT Tag : public TagLib::Tag - { - public: - /*! - * Create an ID3v1 tag with default values. - */ - Tag(); - - /*! - * Create an ID3v1 tag and parse the data in \a file starting at - * \a tagOffset. - */ - Tag(File *file, long tagOffset); - - /*! - * Destroys this Tag instance. - */ - virtual ~Tag(); - - /*! - * Renders the in memory values to a ByteVector suitable for writing to - * the file. - */ - ByteVector render() const; - - /*! - * Returns the string "TAG" suitable for usage in locating the tag in a - * file. - */ - static ByteVector fileIdentifier(); - - // Reimplementations. - - virtual String title() const; - virtual String artist() const; - virtual String album() const; - virtual String comment() const; - virtual String genre() const; - virtual uint year() const; - virtual uint track() const; - - virtual void setTitle(const String &s); - virtual void setArtist(const String &s); - virtual void setAlbum(const String &s); - virtual void setComment(const String &s); - virtual void setGenre(const String &s); - virtual void setYear(uint i); - virtual void setTrack(uint i); - - /*! - * Sets the string handler that decides how the ID3v1 data will be - * converted to and from binary data. - * If the parameter \a handler is null, the previous handler is - * released and default ISO-8859-1 handler is restored. - * - * \note The caller is responsible for deleting the previous handler - * as needed after it is released. - * - * \see StringHandler - */ - static void setStringHandler(const StringHandler *handler); - - protected: - /*! - * Reads from the file specified in the constructor. - */ - void read(); - /*! - * Pareses the body of the tag in \a data. - */ - void parse(const ByteVector &data); - - private: - Tag(const Tag &); - Tag &operator=(const Tag &); - - class TagPrivate; - TagPrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/attachedpictureframe.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/attachedpictureframe.cpp deleted file mode 100644 index 86f8e355582..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/attachedpictureframe.cpp +++ /dev/null @@ -1,222 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include "attachedpictureframe.h" - -#include <tstringlist.h> -#include <tdebug.h> - -using namespace TagLib; -using namespace ID3v2; - -class AttachedPictureFrame::AttachedPictureFramePrivate -{ -public: - AttachedPictureFramePrivate() : textEncoding(String::Latin1), - type(AttachedPictureFrame::Other) {} - - String::Type textEncoding; - String mimeType; - AttachedPictureFrame::Type type; - String description; - ByteVector data; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -AttachedPictureFrame::AttachedPictureFrame() : Frame("APIC") -{ - d = new AttachedPictureFramePrivate; -} - -AttachedPictureFrame::AttachedPictureFrame(const ByteVector &data) : Frame(data) -{ - d = new AttachedPictureFramePrivate; - setData(data); -} - -AttachedPictureFrame::~AttachedPictureFrame() -{ - delete d; -} - -String AttachedPictureFrame::toString() const -{ - String s = "[" + d->mimeType + "]"; - return d->description.isEmpty() ? s : d->description + " " + s; -} - -String::Type AttachedPictureFrame::textEncoding() const -{ - return d->textEncoding; -} - -void AttachedPictureFrame::setTextEncoding(String::Type t) -{ - d->textEncoding = t; -} - -String AttachedPictureFrame::mimeType() const -{ - return d->mimeType; -} - -void AttachedPictureFrame::setMimeType(const String &m) -{ - d->mimeType = m; -} - -AttachedPictureFrame::Type AttachedPictureFrame::type() const -{ - return d->type; -} - -void AttachedPictureFrame::setType(Type t) -{ - d->type = t; -} - -String AttachedPictureFrame::description() const -{ - return d->description; -} - -void AttachedPictureFrame::setDescription(const String &desc) -{ - d->description = desc; -} - -ByteVector AttachedPictureFrame::picture() const -{ - return d->data; -} - -void AttachedPictureFrame::setPicture(const ByteVector &p) -{ - d->data = p; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void AttachedPictureFrame::parseFields(const ByteVector &data) -{ - if(data.size() < 5) { - debug("A picture frame must contain at least 5 bytes."); - return; - } - - d->textEncoding = String::Type(data[0]); - - int pos = 1; - - d->mimeType = readStringField(data, String::Latin1, &pos); - /* Now we need at least two more bytes available */ - if (uint(pos) + 1 >= data.size()) { - debug("Truncated picture frame."); - return; - } - - d->type = (TagLib::ID3v2::AttachedPictureFrame::Type)data[pos++]; - d->description = readStringField(data, d->textEncoding, &pos); - - d->data = data.mid(pos); -} - -ByteVector AttachedPictureFrame::renderFields() const -{ - ByteVector data; - - String::Type encoding = checkTextEncoding(d->description, d->textEncoding); - - data.append(char(encoding)); - data.append(d->mimeType.data(String::Latin1)); - data.append(textDelimiter(String::Latin1)); - data.append(char(d->type)); - data.append(d->description.data(encoding)); - data.append(textDelimiter(encoding)); - data.append(d->data); - - return data; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -AttachedPictureFrame::AttachedPictureFrame(const ByteVector &data, Header *h) : Frame(h) -{ - d = new AttachedPictureFramePrivate; - parseFields(fieldData(data)); -} - -//////////////////////////////////////////////////////////////////////////////// -// support for ID3v2.2 PIC frames -//////////////////////////////////////////////////////////////////////////////// - -void AttachedPictureFrameV22::parseFields(const ByteVector &data) -{ - if(data.size() < 5) { - debug("A picture frame must contain at least 5 bytes."); - return; - } - - d->textEncoding = String::Type(data[0]); - - int pos = 1; - - String fixedString = String(data.mid(pos, 3), String::Latin1); - pos += 3; - // convert fixed string image type to mime string - if (fixedString.upper() == "JPG") { - d->mimeType = "image/jpeg"; - } else if (fixedString.upper() == "PNG") { - d->mimeType = "image/png"; - } else { - debug("probably unsupported image type"); - d->mimeType = "image/" + fixedString; - } - - d->type = (TagLib::ID3v2::AttachedPictureFrame::Type)data[pos++]; - d->description = readStringField(data, d->textEncoding, &pos); - - d->data = data.mid(pos); -} - -AttachedPictureFrameV22::AttachedPictureFrameV22(const ByteVector &data, Header *h) -{ - // set v2.2 header to make fieldData work correctly - setHeader(h, true); - - parseFields(fieldData(data)); - - // now set the v2.4 header - Frame::Header *newHeader = new Frame::Header("APIC"); - newHeader->setFrameSize(h->frameSize()); - setHeader(newHeader, true); -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/attachedpictureframe.h b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/attachedpictureframe.h deleted file mode 100644 index 55067bd2dd4..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/attachedpictureframe.h +++ /dev/null @@ -1,230 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_ATTACHEDPICTUREFRAME_H -#define TAGLIB_ATTACHEDPICTUREFRAME_H - -#include "id3v2frame.h" -#include "id3v2header.h" -#include "taglib_export.h" - -namespace TagLib { - - namespace ID3v2 { - - //! An ID3v2 attached picture frame implementation - - /*! - * This is an implementation of ID3v2 attached pictures. Pictures may be - * included in tags, one per APIC frame (but there may be multiple APIC - * frames in a single tag). These pictures are usually in either JPEG or - * PNG format. - */ - - class TAGLIB_EXPORT AttachedPictureFrame : public Frame - { - friend class FrameFactory; - - public: - - /*! - * This describes the function or content of the picture. - */ - enum Type { - //! A type not enumerated below - Other = 0x00, - //! 32x32 PNG image that should be used as the file icon - FileIcon = 0x01, - //! File icon of a different size or format - OtherFileIcon = 0x02, - //! Front cover image of the album - FrontCover = 0x03, - //! Back cover image of the album - BackCover = 0x04, - //! Inside leaflet page of the album - LeafletPage = 0x05, - //! Image from the album itself - Media = 0x06, - //! Picture of the lead artist or soloist - LeadArtist = 0x07, - //! Picture of the artist or performer - Artist = 0x08, - //! Picture of the conductor - Conductor = 0x09, - //! Picture of the band or orchestra - Band = 0x0A, - //! Picture of the composer - Composer = 0x0B, - //! Picture of the lyricist or text writer - Lyricist = 0x0C, - //! Picture of the recording location or studio - RecordingLocation = 0x0D, - //! Picture of the artists during recording - DuringRecording = 0x0E, - //! Picture of the artists during performance - DuringPerformance = 0x0F, - //! Picture from a movie or video related to the track - MovieScreenCapture = 0x10, - //! Picture of a large, coloured fish - ColouredFish = 0x11, - //! Illustration related to the track - Illustration = 0x12, - //! Logo of the band or performer - BandLogo = 0x13, - //! Logo of the publisher (record company) - PublisherLogo = 0x14 - }; - - /*! - * Constructs an empty picture frame. The description, content and text - * encoding should be set manually. - */ - AttachedPictureFrame(); - - /*! - * Constructs an AttachedPicture frame based on \a data. - */ - explicit AttachedPictureFrame(const ByteVector &data); - - /*! - * Destroys the AttahcedPictureFrame instance. - */ - virtual ~AttachedPictureFrame(); - - /*! - * Returns a string containing the description and mime-type - */ - virtual String toString() const; - - /*! - * Returns the text encoding used for the description. - * - * \see setTextEncoding() - * \see description() - */ - String::Type textEncoding() const; - - /*! - * Set the text encoding used for the description. - * - * \see description() - */ - void setTextEncoding(String::Type t); - - /*! - * Returns the mime type of the image. This should in most cases be - * "image/png" or "image/jpeg". - */ - String mimeType() const; - - /*! - * Sets the mime type of the image. This should in most cases be - * "image/png" or "image/jpeg". - */ - void setMimeType(const String &m); - - /*! - * Returns the type of the image. - * - * \see Type - * \see setType() - */ - Type type() const; - - /*! - * Sets the type for the image. - * - * \see Type - * \see type() - */ - void setType(Type t); - - /*! - * Returns a text description of the image. - * - * \see setDescription() - * \see textEncoding() - * \see setTextEncoding() - */ - - String description() const; - - /*! - * Sets a textual description of the image to \a desc. - * - * \see description() - * \see textEncoding() - * \see setTextEncoding() - */ - - void setDescription(const String &desc); - - /*! - * Returns the image data as a ByteVector. - * - * \note ByteVector has a data() method that returns a const char * which - * should make it easy to export this data to external programs. - * - * \see setPicture() - * \see mimeType() - */ - ByteVector picture() const; - - /*! - * Sets the image data to \a p. \a p should be of the type specified in - * this frame's mime-type specification. - * - * \see picture() - * \see mimeType() - * \see setMimeType() - */ - void setPicture(const ByteVector &p); - - protected: - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; - class AttachedPictureFramePrivate; - AttachedPictureFramePrivate *d; - - private: - AttachedPictureFrame(const AttachedPictureFrame &); - AttachedPictureFrame &operator=(const AttachedPictureFrame &); - AttachedPictureFrame(const ByteVector &data, Header *h); - - }; - - //! support for ID3v2.2 PIC frames - class TAGLIB_EXPORT AttachedPictureFrameV22 : public AttachedPictureFrame - { - protected: - virtual void parseFields(const ByteVector &data); - private: - AttachedPictureFrameV22(const ByteVector &data, Header *h); - friend class FrameFactory; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/commentsframe.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/commentsframe.cpp deleted file mode 100644 index deaa9d9a283..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/commentsframe.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tbytevectorlist.h> -#include <id3v2tag.h> -#include <tdebug.h> -#include <tstringlist.h> - -#include "commentsframe.h" -#include "tpropertymap.h" - -using namespace TagLib; -using namespace ID3v2; - -class CommentsFrame::CommentsFramePrivate -{ -public: - CommentsFramePrivate() : textEncoding(String::Latin1) {} - String::Type textEncoding; - ByteVector language; - String description; - String text; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -CommentsFrame::CommentsFrame(String::Type encoding) : Frame("COMM") -{ - d = new CommentsFramePrivate; - d->textEncoding = encoding; -} - -CommentsFrame::CommentsFrame(const ByteVector &data) : Frame(data) -{ - d = new CommentsFramePrivate; - setData(data); -} - -CommentsFrame::~CommentsFrame() -{ - delete d; -} - -String CommentsFrame::toString() const -{ - return d->text; -} - -ByteVector CommentsFrame::language() const -{ - return d->language; -} - -String CommentsFrame::description() const -{ - return d->description; -} - -String CommentsFrame::text() const -{ - return d->text; -} - -void CommentsFrame::setLanguage(const ByteVector &languageEncoding) -{ - d->language = languageEncoding.mid(0, 3); -} - -void CommentsFrame::setDescription(const String &s) -{ - d->description = s; -} - -void CommentsFrame::setText(const String &s) -{ - d->text = s; -} - -String::Type CommentsFrame::textEncoding() const -{ - return d->textEncoding; -} - -void CommentsFrame::setTextEncoding(String::Type encoding) -{ - d->textEncoding = encoding; -} - -PropertyMap CommentsFrame::asProperties() const -{ - String key = description().upper(); - PropertyMap map; - if(key.isEmpty() || key == "COMMENT") - map.insert("COMMENT", text()); - else if(key.isNull()) - map.unsupportedData().append(L"COMM/" + description()); - else - map.insert("COMMENT:" + key, text()); - return map; -} - -CommentsFrame *CommentsFrame::findByDescription(const ID3v2::Tag *tag, const String &d) // static -{ - ID3v2::FrameList comments = tag->frameList("COMM"); - - for(ID3v2::FrameList::ConstIterator it = comments.begin(); - it != comments.end(); - ++it) - { - CommentsFrame *frame = dynamic_cast<CommentsFrame *>(*it); - if(frame && frame->description() == d) - return frame; - } - - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void CommentsFrame::parseFields(const ByteVector &data) -{ - if(data.size() < 5) { - debug("A comment frame must contain at least 5 bytes."); - return; - } - - d->textEncoding = String::Type(data[0]); - d->language = data.mid(1, 3); - - int byteAlign = d->textEncoding == String::Latin1 || d->textEncoding == String::UTF8 ? 1 : 2; - - ByteVectorList l = ByteVectorList::split(data.mid(4), textDelimiter(d->textEncoding), byteAlign, 2); - - if(l.size() == 2) { - if(d->textEncoding == String::Latin1) { - d->description = Tag::latin1StringHandler()->parse(l.front()); - d->text = Tag::latin1StringHandler()->parse(l.back()); - } else { - d->description = String(l.front(), d->textEncoding); - d->text = String(l.back(), d->textEncoding); - } - } -} - -ByteVector CommentsFrame::renderFields() const -{ - ByteVector v; - - String::Type encoding = d->textEncoding; - - encoding = checkTextEncoding(d->description, encoding); - encoding = checkTextEncoding(d->text, encoding); - - v.append(char(encoding)); - v.append(d->language.size() == 3 ? d->language : "XXX"); - v.append(d->description.data(encoding)); - v.append(textDelimiter(encoding)); - v.append(d->text.data(encoding)); - - return v; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -CommentsFrame::CommentsFrame(const ByteVector &data, Header *h) : Frame(h) -{ - d = new CommentsFramePrivate(); - parseFields(fieldData(data)); -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/commentsframe.h b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/commentsframe.h deleted file mode 100644 index f65f6f01c26..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/commentsframe.h +++ /dev/null @@ -1,179 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_COMMENTSFRAME_H -#define TAGLIB_COMMENTSFRAME_H - -#include "id3v2frame.h" -#include "taglib_export.h" - -namespace TagLib { - - namespace ID3v2 { - - //! An implementation of ID3v2 comments - - /*! - * This implements the ID3v2 comment format. An ID3v2 comment concists of - * a language encoding, a description and a single text field. - */ - - class TAGLIB_EXPORT CommentsFrame : public Frame - { - friend class FrameFactory; - - public: - /*! - * Construct an empty comment frame that will use the text encoding - * \a encoding. - */ - explicit CommentsFrame(String::Type encoding = String::Latin1); - - /*! - * Construct a comment based on the data in \a data. - */ - explicit CommentsFrame(const ByteVector &data); - - /*! - * Destroys this CommentFrame instance. - */ - virtual ~CommentsFrame(); - - /*! - * Returns the text of this comment. - * - * \see text() - */ - virtual String toString() const; - - /*! - * Returns the language encoding as a 3 byte encoding as specified by - * <a href="http://en.wikipedia.org/wiki/ISO_639">ISO-639-2</a>. - * - * \note Most taggers simply ignore this value. - * - * \see setLanguage() - */ - ByteVector language() const; - - /*! - * Returns the description of this comment. - * - * \note Most taggers simply ignore this value. - * - * \see setDescription() - */ - String description() const; - - /*! - * Returns the text of this comment. - * - * \see setText() - */ - String text() const; - - /*! - * Set the language using the 3 byte language code from - * <a href="http://en.wikipedia.org/wiki/ISO_639">ISO-639-2</a> to - * \a languageCode. - * - * \see language() - */ - void setLanguage(const ByteVector &languageCode); - - /*! - * Sets the description of the comment to \a s. - * - * \see decription() - */ - void setDescription(const String &s); - - /*! - * Sets the text portion of the comment to \a s. - * - * \see text() - */ - virtual void setText(const String &s); - - /*! - * Returns the text encoding that will be used in rendering this frame. - * This defaults to the type that was either specified in the constructor - * or read from the frame when parsed. - * - * \see setTextEncoding() - * \see render() - */ - String::Type textEncoding() const; - - /*! - * Sets the text encoding to be used when rendering this frame to - * \a encoding. - * - * \see textEncoding() - * \see render() - */ - void setTextEncoding(String::Type encoding); - - /*! - * Parses this frame as PropertyMap with a single key. - * - if description() is empty or "COMMENT", the key will be "COMMENT" - * - if description() is not a valid PropertyMap key, the frame will be - * marked unsupported by an entry "COMM/<description>" in the unsupportedData() - * attribute of the returned map. - * - otherwise, the key will be "COMMENT:<description>" - * - The single value will be the frame's text(). - */ - PropertyMap asProperties() const; - - /*! - * Comments each have a unique description. This searches for a comment - * frame with the decription \a d and returns a pointer to it. If no - * frame is found that matches the given description null is returned. - * - * \see description() - */ - static CommentsFrame *findByDescription(const Tag *tag, const String &d); - - protected: - // Reimplementations. - - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; - - private: - /*! - * The constructor used by the FrameFactory. - */ - CommentsFrame(const ByteVector &data, Header *h); - CommentsFrame(const CommentsFrame &); - CommentsFrame &operator=(const CommentsFrame &); - - class CommentsFramePrivate; - CommentsFramePrivate *d; - }; - - } -} -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/generalencapsulatedobjectframe.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/generalencapsulatedobjectframe.cpp deleted file mode 100644 index fa3509b1313..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/generalencapsulatedobjectframe.cpp +++ /dev/null @@ -1,176 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - copyright : (C) 2006 by Aaron VonderHaar - email : avh4@users.sourceforge.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tdebug.h> - -#include "generalencapsulatedobjectframe.h" - -using namespace TagLib; -using namespace ID3v2; - -class GeneralEncapsulatedObjectFrame::GeneralEncapsulatedObjectFramePrivate -{ -public: - GeneralEncapsulatedObjectFramePrivate() : textEncoding(String::Latin1) {} - - String::Type textEncoding; - String mimeType; - String fileName; - String description; - ByteVector data; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -GeneralEncapsulatedObjectFrame::GeneralEncapsulatedObjectFrame() : Frame("GEOB") -{ - d = new GeneralEncapsulatedObjectFramePrivate; -} - -GeneralEncapsulatedObjectFrame::GeneralEncapsulatedObjectFrame(const ByteVector &data) : Frame(data) -{ - d = new GeneralEncapsulatedObjectFramePrivate; - setData(data); -} - -GeneralEncapsulatedObjectFrame::~GeneralEncapsulatedObjectFrame() -{ - delete d; -} - -String GeneralEncapsulatedObjectFrame::toString() const -{ - String text = "[" + d->mimeType + "]"; - - if(!d->fileName.isEmpty()) - text += " " + d->fileName; - - if(!d->description.isEmpty()) - text += " \"" + d->description + "\""; - - return text; -} - -String::Type GeneralEncapsulatedObjectFrame::textEncoding() const -{ - return d->textEncoding; -} - -void GeneralEncapsulatedObjectFrame::setTextEncoding(String::Type encoding) -{ - d->textEncoding = encoding; -} - -String GeneralEncapsulatedObjectFrame::mimeType() const -{ - return d->mimeType; -} - -void GeneralEncapsulatedObjectFrame::setMimeType(const String &type) -{ - d->mimeType = type; -} - -String GeneralEncapsulatedObjectFrame::fileName() const -{ - return d->fileName; -} - -void GeneralEncapsulatedObjectFrame::setFileName(const String &name) -{ - d->fileName = name; -} - -String GeneralEncapsulatedObjectFrame::description() const -{ - return d->description; -} - -void GeneralEncapsulatedObjectFrame::setDescription(const String &desc) -{ - d->description = desc; -} - -ByteVector GeneralEncapsulatedObjectFrame::object() const -{ - return d->data; -} - -void GeneralEncapsulatedObjectFrame::setObject(const ByteVector &data) -{ - d->data = data; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void GeneralEncapsulatedObjectFrame::parseFields(const ByteVector &data) -{ - if(data.size() < 4) { - debug("An object frame must contain at least 4 bytes."); - return; - } - - d->textEncoding = String::Type(data[0]); - - int pos = 1; - - d->mimeType = readStringField(data, String::Latin1, &pos); - d->fileName = readStringField(data, d->textEncoding, &pos); - d->description = readStringField(data, d->textEncoding, &pos); - - d->data = data.mid(pos); -} - -ByteVector GeneralEncapsulatedObjectFrame::renderFields() const -{ - ByteVector data; - - data.append(char(d->textEncoding)); - data.append(d->mimeType.data(String::Latin1)); - data.append(textDelimiter(String::Latin1)); - data.append(d->fileName.data(d->textEncoding)); - data.append(textDelimiter(d->textEncoding)); - data.append(d->description.data(d->textEncoding)); - data.append(textDelimiter(d->textEncoding)); - data.append(d->data); - - return data; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -GeneralEncapsulatedObjectFrame::GeneralEncapsulatedObjectFrame(const ByteVector &data, Header *h) : Frame(h) -{ - d = new GeneralEncapsulatedObjectFramePrivate; - parseFields(fieldData(data)); -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/generalencapsulatedobjectframe.h b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/generalencapsulatedobjectframe.h deleted file mode 100644 index 42f854ccd3b..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/generalencapsulatedobjectframe.h +++ /dev/null @@ -1,178 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - copyright : (C) 2006 by Aaron VonderHaar - email : avh4@users.sourceforge.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_GENERALENCAPSULATEDOBJECT_H -#define TAGLIB_GENERALENCAPSULATEDOBJECT_H - -#include "id3v2frame.h" -#include "id3v2header.h" -#include "taglib_export.h" - -namespace TagLib { - - namespace ID3v2 { - - //! An ID3v2 general encapsulated object frame implementation - - /*! - * This is an implementation of ID3v2 general encapsulated objects. - * Arbitrary binary data may be included in tags, stored in GEOB frames. - * There may be multiple GEOB frames in a single tag. Each GEOB it - * labelled with a content description (which may be blank), a required - * mime-type, and a file name (may be blank). The content description - * uniquely identifies the GEOB frame in the tag. - */ - - class TAGLIB_EXPORT GeneralEncapsulatedObjectFrame : public Frame - { - friend class FrameFactory; - - public: - - /*! - * Constructs an empty object frame. The description, file name and text - * encoding should be set manually. - */ - GeneralEncapsulatedObjectFrame(); - - /*! - * Constructs a GeneralEncapsulatedObjectFrame frame based on \a data. - * - * \warning This is \em not data for the encapsulated object, for that use - * setObject(). This constructor is used when reading the frame from the - * disk. - */ - explicit GeneralEncapsulatedObjectFrame(const ByteVector &data); - - /*! - * Destroys the GeneralEncapsulatedObjectFrame instance. - */ - virtual ~GeneralEncapsulatedObjectFrame(); - - /*! - * Returns a string containing the description, file name and mime-type - */ - virtual String toString() const; - - /*! - * Returns the text encoding used for the description and file name. - * - * \see setTextEncoding() - * \see description() - * \see fileName() - */ - String::Type textEncoding() const; - - /*! - * Set the text encoding used for the description and file name. - * - * \see description() - * \see fileName() - */ - void setTextEncoding(String::Type encoding); - - /*! - * Returns the mime type of the object. - */ - String mimeType() const; - - /*! - * Sets the mime type of the object. - */ - void setMimeType(const String &type); - - /*! - * Returns the file name of the object. - * - * \see setFileName() - */ - String fileName() const; - - /*! - * Sets the file name for the object. - * - * \see fileName() - */ - void setFileName(const String &name); - - /*! - * Returns the content description of the object. - * - * \see setDescription() - * \see textEncoding() - * \see setTextEncoding() - */ - - String description() const; - - /*! - * Sets the content description of the object to \a desc. - * - * \see description() - * \see textEncoding() - * \see setTextEncoding() - */ - - void setDescription(const String &desc); - - /*! - * Returns the object data as a ByteVector. - * - * \note ByteVector has a data() method that returns a const char * which - * should make it easy to export this data to external programs. - * - * \see setObject() - * \see mimeType() - */ - ByteVector object() const; - - /*! - * Sets the object data to \a data. \a data should be of the type specified in - * this frame's mime-type specification. - * - * \see object() - * \see mimeType() - * \see setMimeType() - */ - void setObject(const ByteVector &object); - - protected: - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; - - private: - GeneralEncapsulatedObjectFrame(const ByteVector &data, Header *h); - GeneralEncapsulatedObjectFrame(const GeneralEncapsulatedObjectFrame &); - GeneralEncapsulatedObjectFrame &operator=(const GeneralEncapsulatedObjectFrame &); - - class GeneralEncapsulatedObjectFramePrivate; - GeneralEncapsulatedObjectFramePrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/ownershipframe.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/ownershipframe.cpp deleted file mode 100644 index 9451c4c459f..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/ownershipframe.cpp +++ /dev/null @@ -1,162 +0,0 @@ -/*************************************************************************** - copyright : (C) 2012 by Rupert Daniel - email : rupert@cancelmonday.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tdebug.h> - -#include "ownershipframe.h" -#include <id3v2tag.h> - -using namespace TagLib; -using namespace ID3v2; - -class OwnershipFrame::OwnershipFramePrivate -{ -public: - String pricePaid; - String datePurchased; - String seller; - String::Type textEncoding; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -OwnershipFrame::OwnershipFrame(String::Type encoding) : Frame("OWNE") -{ - d = new OwnershipFramePrivate; - d->textEncoding = encoding; -} - -OwnershipFrame::OwnershipFrame(const ByteVector &data) : Frame(data) -{ - d = new OwnershipFramePrivate; - setData(data); -} - -OwnershipFrame::~OwnershipFrame() -{ - delete d; -} - -String OwnershipFrame::toString() const -{ - return "pricePaid=" + d->pricePaid + " datePurchased=" + d->datePurchased + " seller=" + d->seller; -} - -String OwnershipFrame::pricePaid() const -{ - return d->pricePaid; -} - -void OwnershipFrame::setPricePaid(const String &s) -{ - d->pricePaid = s; -} - -String OwnershipFrame::datePurchased() const -{ - return d->datePurchased; -} - -void OwnershipFrame::setDatePurchased(const String &s) -{ - d->datePurchased = s; -} - -String OwnershipFrame::seller() const -{ - return d->seller; -} - -void OwnershipFrame::setSeller(const String &s) -{ - d->seller = s; -} - -String::Type OwnershipFrame::textEncoding() const -{ - return d->textEncoding; -} - -void OwnershipFrame::setTextEncoding(String::Type encoding) -{ - d->textEncoding = encoding; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void OwnershipFrame::parseFields(const ByteVector &data) -{ - int pos = 0; - - // Get the text encoding - d->textEncoding = String::Type(data[0]); - pos += 1; - - // Read the price paid this is a null terminate string - d->pricePaid = readStringField(data, String::Latin1, &pos); - - // If we don't have at least 8 bytes left then don't parse the rest of the - // data - if(data.size() - pos < 8) { - return; - } - - // Read the date purchased YYYYMMDD - d->datePurchased = String(data.mid(pos, 8)); - pos += 8; - - // Read the seller - if(d->textEncoding == String::Latin1) - d->seller = Tag::latin1StringHandler()->parse(data.mid(pos)); - else - d->seller = String(data.mid(pos), d->textEncoding); -} - -ByteVector OwnershipFrame::renderFields() const -{ - ByteVector v; - - v.append(char(d->textEncoding)); - v.append(d->pricePaid.data(String::Latin1)); - v.append(textDelimiter(String::Latin1)); - v.append(d->datePurchased.data(String::Latin1)); - v.append(d->seller.data(d->textEncoding)); - - return v; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -OwnershipFrame::OwnershipFrame(const ByteVector &data, Header *h) : Frame(h) -{ - d = new OwnershipFramePrivate; - parseFields(fieldData(data)); -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/ownershipframe.h b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/ownershipframe.h deleted file mode 100644 index 34fc912961e..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/ownershipframe.h +++ /dev/null @@ -1,151 +0,0 @@ -/*************************************************************************** - copyright : (C) 2012 by Rupert Daniel - email : rupert@cancelmonday.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_OWNERSHIPFRAME_H -#define TAGLIB_OWNERSHIPFRAME_H - -#include "id3v2frame.h" -#include "taglib_export.h" - -namespace TagLib { - - namespace ID3v2 { - - //! An implementation of ID3v2 "ownership" - - /*! - * This implements the ID3v2 ownership (OWNE frame). It consists of - * a price paid, a date purchased (YYYYMMDD) and the name of the seller. - */ - - class TAGLIB_EXPORT OwnershipFrame : public Frame - { - friend class FrameFactory; - - public: - /*! - * Construct an empty ownership frame. - */ - explicit OwnershipFrame(String::Type encoding = String::Latin1); - - /*! - * Construct a ownership based on the data in \a data. - */ - explicit OwnershipFrame(const ByteVector &data); - - /*! - * Destroys this OwnershipFrame instance. - */ - virtual ~OwnershipFrame(); - - /*! - * Returns the text of this popularimeter. - * - * \see text() - */ - virtual String toString() const; - - /*! - * Returns the date purchased. - * - * \see setDatePurchased() - */ - String datePurchased() const; - - /*! - * Set the date purchased. - * - * \see datePurchased() - */ - void setDatePurchased(const String &datePurchased); - - /*! - * Returns the price paid. - * - * \see setPricePaid() - */ - String pricePaid() const; - - /*! - * Set the price paid. - * - * \see pricePaid() - */ - void setPricePaid(const String &pricePaid); - - /*! - * Returns the seller. - * - * \see setSeller() - */ - String seller() const; - - /*! - * Set the seller. - * - * \see seller() - */ - void setSeller(const String &seller); - - /*! - * Returns the text encoding that will be used in rendering this frame. - * This defaults to the type that was either specified in the constructor - * or read from the frame when parsed. - * - * \see setTextEncoding() - * \see render() - */ - String::Type textEncoding() const; - - /*! - * Sets the text encoding to be used when rendering this frame to - * \a encoding. - * - * \see textEncoding() - * \see render() - */ - void setTextEncoding(String::Type encoding); - - protected: - // Reimplementations. - - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; - - private: - /*! - * The constructor used by the FrameFactory. - */ - OwnershipFrame(const ByteVector &data, Header *h); - OwnershipFrame(const OwnershipFrame &); - OwnershipFrame &operator=(const OwnershipFrame &); - - class OwnershipFramePrivate; - OwnershipFramePrivate *d; - }; - - } -} -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/popularimeterframe.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/popularimeterframe.cpp deleted file mode 100644 index cfe8c9f448c..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/popularimeterframe.cpp +++ /dev/null @@ -1,137 +0,0 @@ -/*************************************************************************** - copyright : (C) 2008 by Lukas Lalinsky - email : lalinsky@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tdebug.h> - -#include "popularimeterframe.h" - -using namespace TagLib; -using namespace ID3v2; - -class PopularimeterFrame::PopularimeterFramePrivate -{ -public: - PopularimeterFramePrivate() : rating(0), counter(0) {} - String email; - int rating; - TagLib::uint counter; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -PopularimeterFrame::PopularimeterFrame() : Frame("POPM") -{ - d = new PopularimeterFramePrivate; -} - -PopularimeterFrame::PopularimeterFrame(const ByteVector &data) : Frame(data) -{ - d = new PopularimeterFramePrivate; - setData(data); -} - -PopularimeterFrame::~PopularimeterFrame() -{ - delete d; -} - -String PopularimeterFrame::toString() const -{ - return d->email + " rating=" + String::number(d->rating) + " counter=" + String::number(d->counter); -} - -String PopularimeterFrame::email() const -{ - return d->email; -} - -void PopularimeterFrame::setEmail(const String &s) -{ - d->email = s; -} - -int PopularimeterFrame::rating() const -{ - return d->rating; -} - -void PopularimeterFrame::setRating(int s) -{ - d->rating = s; -} - -TagLib::uint PopularimeterFrame::counter() const -{ - return d->counter; -} - -void PopularimeterFrame::setCounter(TagLib::uint s) -{ - d->counter = s; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void PopularimeterFrame::parseFields(const ByteVector &data) -{ - int pos = 0, size = int(data.size()); - - d->email = readStringField(data, String::Latin1, &pos); - - d->rating = 0; - d->counter = 0; - if(pos < size) { - d->rating = (unsigned char)(data[pos++]); - if(pos < size) { - d->counter = data.mid(pos, 4).toUInt(); - } - } -} - -ByteVector PopularimeterFrame::renderFields() const -{ - ByteVector data; - - data.append(d->email.data(String::Latin1)); - data.append(textDelimiter(String::Latin1)); - data.append(char(d->rating)); - data.append(ByteVector::fromUInt(d->counter)); - - return data; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -PopularimeterFrame::PopularimeterFrame(const ByteVector &data, Header *h) : Frame(h) -{ - d = new PopularimeterFramePrivate; - parseFields(fieldData(data)); -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/popularimeterframe.h b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/popularimeterframe.h deleted file mode 100644 index d39f1aa8f0b..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/popularimeterframe.h +++ /dev/null @@ -1,132 +0,0 @@ -/*************************************************************************** - copyright : (C) 2008 by Lukas Lalinsky - email : lalinsky@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_POPULARIMETERFRAME_H -#define TAGLIB_POPULARIMETERFRAME_H - -#include "id3v2frame.h" -#include "taglib_export.h" - -namespace TagLib { - - namespace ID3v2 { - - //! An implementation of ID3v2 "popularimeter" - - /*! - * This implements the ID3v2 popularimeter (POPM frame). It concists of - * an email, a rating and an optional counter. - */ - - class TAGLIB_EXPORT PopularimeterFrame : public Frame - { - friend class FrameFactory; - - public: - /*! - * Construct an empty popularimeter frame. - */ - explicit PopularimeterFrame(); - - /*! - * Construct a popularimeter based on the data in \a data. - */ - explicit PopularimeterFrame(const ByteVector &data); - - /*! - * Destroys this PopularimeterFrame instance. - */ - virtual ~PopularimeterFrame(); - - /*! - * Returns the text of this popularimeter. - * - * \see text() - */ - virtual String toString() const; - - /*! - * Returns the email. - * - * \see setEmail() - */ - String email() const; - - /*! - * Set the email. - * - * \see email() - */ - void setEmail(const String &email); - - /*! - * Returns the rating. - * - * \see setRating() - */ - int rating() const; - - /*! - * Set the rating. - * - * \see rating() - */ - void setRating(int rating); - - /*! - * Returns the counter. - * - * \see setCounter() - */ - uint counter() const; - - /*! - * Set the counter. - * - * \see counter() - */ - void setCounter(uint counter); - - protected: - // Reimplementations. - - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; - - private: - /*! - * The constructor used by the FrameFactory. - */ - PopularimeterFrame(const ByteVector &data, Header *h); - PopularimeterFrame(const PopularimeterFrame &); - PopularimeterFrame &operator=(const PopularimeterFrame &); - - class PopularimeterFramePrivate; - PopularimeterFramePrivate *d; - }; - - } -} -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/privateframe.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/privateframe.cpp deleted file mode 100644 index 24ee0f350c1..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/privateframe.cpp +++ /dev/null @@ -1,128 +0,0 @@ -/*************************************************************************** - copyright : (C) 2008 by Serkan Kalyoncu - copyright : (C) 2008 by Scott Wheeler - email : wheeler@kde.org -***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tbytevectorlist.h> -#include <id3v2tag.h> -#include <tdebug.h> - -#include "privateframe.h" - -using namespace TagLib; -using namespace ID3v2; - - -class PrivateFrame::PrivateFramePrivate -{ -public: - ByteVector data; - String owner; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -PrivateFrame::PrivateFrame() : Frame("PRIV") -{ - d = new PrivateFramePrivate; -} - -PrivateFrame::PrivateFrame(const ByteVector &data) : Frame(data) -{ - d = new PrivateFramePrivate; - setData(data); -} - -PrivateFrame::~PrivateFrame() -{ - delete d; -} - -String PrivateFrame::toString() const -{ - return d->owner; -} - -String PrivateFrame::owner() const -{ - return d->owner; -} - -ByteVector PrivateFrame::data() const -{ - return d->data; -} - -void PrivateFrame::setOwner(const String &s) -{ - d->owner = s; -} - -void PrivateFrame::setData(const ByteVector & data) -{ - d->data = data; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void PrivateFrame::parseFields(const ByteVector &data) -{ - if(data.size() < 2) { - debug("A private frame must contain at least 2 bytes."); - return; - } - - // Owner identifier is assumed to be Latin1 - - const int byteAlign = 1; - const int endOfOwner = data.find(textDelimiter(String::Latin1), 0, byteAlign); - - d->owner = String(data.mid(0, endOfOwner)); - d->data = data.mid(endOfOwner + 1); -} - -ByteVector PrivateFrame::renderFields() const -{ - ByteVector v; - - v.append(d->owner.data(String::Latin1)); - v.append(textDelimiter(String::Latin1)); - v.append(d->data); - - return v; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -PrivateFrame::PrivateFrame(const ByteVector &data, Header *h) : Frame(h) -{ - d = new PrivateFramePrivate(); - parseFields(fieldData(data)); -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/privateframe.h b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/privateframe.h deleted file mode 100644 index 06f82f32e8c..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/privateframe.h +++ /dev/null @@ -1,111 +0,0 @@ -/*************************************************************************** - copyright : (C) 2008 by Serkan Kalyoncu - copyright : (C) 2008 by Scott Wheeler - email : wheeler@kde.org -***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_PRIVATEFRAME_H -#define TAGLIB_PRIVATEFRAME_H - -#include "id3v2frame.h" -#include "taglib_export.h" - -namespace TagLib { - - namespace ID3v2 { - - //! An implementation of ID3v2 privateframe - - class TAGLIB_EXPORT PrivateFrame : public Frame - { - friend class FrameFactory; - - public: - /*! - * Construct an empty private frame. - */ - PrivateFrame(); - - /*! - * Construct a private frame based on the data in \a data. - * - * \note This is the constructor used when parsing the frame from a file. - */ - explicit PrivateFrame(const ByteVector &data); - - /*! - * Destroys this private frame instance. - */ - virtual ~PrivateFrame(); - - /*! - * Returns the text of this private frame, currently just the owner. - * - * \see text() - */ - virtual String toString() const; - - /*! - * \return The owner of the private frame. - * \note This should contain an email address or link to a website. - */ - String owner() const; - - /*! - * - */ - ByteVector data() const; - - /*! - * Sets the owner of the frame to \a s. - * \note This should contain an email address or link to a website. - */ - void setOwner(const String &s); - - /*! - * - */ - void setData(const ByteVector &v); - - protected: - // Reimplementations. - - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; - - private: - /*! - * The constructor used by the FrameFactory. - */ - PrivateFrame(const ByteVector &data, Header *h); - - PrivateFrame(const PrivateFrame &); - PrivateFrame &operator=(const PrivateFrame &); - - class PrivateFramePrivate; - PrivateFramePrivate *d; - }; - - } -} -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/relativevolumeframe.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/relativevolumeframe.cpp deleted file mode 100644 index 955b3ad0337..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/relativevolumeframe.cpp +++ /dev/null @@ -1,236 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tdebug.h> -#include <tmap.h> - -#include "relativevolumeframe.h" - -using namespace TagLib; -using namespace ID3v2; - -static inline int bitsToBytes(int i) -{ - return i % 8 == 0 ? i / 8 : (i - i % 8) / 8 + 1; -} - -struct ChannelData -{ - ChannelData() : channelType(RelativeVolumeFrame::Other), volumeAdjustment(0) {} - - RelativeVolumeFrame::ChannelType channelType; - short volumeAdjustment; - RelativeVolumeFrame::PeakVolume peakVolume; -}; - -class RelativeVolumeFrame::RelativeVolumeFramePrivate -{ -public: - String identification; - Map<ChannelType, ChannelData> channels; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -RelativeVolumeFrame::RelativeVolumeFrame() : Frame("RVA2") -{ - d = new RelativeVolumeFramePrivate; -} - -RelativeVolumeFrame::RelativeVolumeFrame(const ByteVector &data) : Frame(data) -{ - d = new RelativeVolumeFramePrivate; - setData(data); -} - -RelativeVolumeFrame::~RelativeVolumeFrame() -{ - delete d; -} - -String RelativeVolumeFrame::toString() const -{ - return d->identification; -} - -List<RelativeVolumeFrame::ChannelType> RelativeVolumeFrame::channels() const -{ - List<ChannelType> l; - - Map<ChannelType, ChannelData>::ConstIterator it = d->channels.begin(); - for(; it != d->channels.end(); ++it) - l.append((*it).first); - - return l; -} - -// deprecated - -RelativeVolumeFrame::ChannelType RelativeVolumeFrame::channelType() const -{ - return MasterVolume; -} - -// deprecated - -void RelativeVolumeFrame::setChannelType(ChannelType) -{ - -} - -short RelativeVolumeFrame::volumeAdjustmentIndex(ChannelType type) const -{ - return d->channels.contains(type) ? d->channels[type].volumeAdjustment : 0; -} - -short RelativeVolumeFrame::volumeAdjustmentIndex() const -{ - return volumeAdjustmentIndex(MasterVolume); -} - -void RelativeVolumeFrame::setVolumeAdjustmentIndex(short index, ChannelType type) -{ - d->channels[type].volumeAdjustment = index; -} - -void RelativeVolumeFrame::setVolumeAdjustmentIndex(short index) -{ - setVolumeAdjustmentIndex(index, MasterVolume); -} - -float RelativeVolumeFrame::volumeAdjustment(ChannelType type) const -{ - return d->channels.contains(type) ? float(d->channels[type].volumeAdjustment) / float(512) : 0; -} - -float RelativeVolumeFrame::volumeAdjustment() const -{ - return volumeAdjustment(MasterVolume); -} - -void RelativeVolumeFrame::setVolumeAdjustment(float adjustment, ChannelType type) -{ - d->channels[type].volumeAdjustment = short(adjustment * float(512)); -} - -void RelativeVolumeFrame::setVolumeAdjustment(float adjustment) -{ - setVolumeAdjustment(adjustment, MasterVolume); -} - -RelativeVolumeFrame::PeakVolume RelativeVolumeFrame::peakVolume(ChannelType type) const -{ - return d->channels.contains(type) ? d->channels[type].peakVolume : PeakVolume(); -} - -RelativeVolumeFrame::PeakVolume RelativeVolumeFrame::peakVolume() const -{ - return peakVolume(MasterVolume); -} - -void RelativeVolumeFrame::setPeakVolume(const PeakVolume &peak, ChannelType type) -{ - d->channels[type].peakVolume = peak; -} - -void RelativeVolumeFrame::setPeakVolume(const PeakVolume &peak) -{ - setPeakVolume(peak, MasterVolume); -} - -String RelativeVolumeFrame::identification() const -{ - return d->identification; -} - -void RelativeVolumeFrame::setIdentification(const String &s) -{ - d->identification = s; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void RelativeVolumeFrame::parseFields(const ByteVector &data) -{ - int pos = 0; - d->identification = readStringField(data, String::Latin1, &pos); - - // Each channel is at least 4 bytes. - - while(pos <= (int)data.size() - 4) { - - - ChannelType type = ChannelType(data[pos]); - pos += 1; - - ChannelData &channel = d->channels[type]; - - channel.volumeAdjustment = data.mid(pos, 2).toShort(); - pos += 2; - - channel.peakVolume.bitsRepresentingPeak = data[pos]; - pos += 1; - - int bytes = bitsToBytes(channel.peakVolume.bitsRepresentingPeak); - channel.peakVolume.peakVolume = data.mid(pos, bytes); - pos += bytes; - } -} - -ByteVector RelativeVolumeFrame::renderFields() const -{ - ByteVector data; - - data.append(d->identification.data(String::Latin1)); - data.append(textDelimiter(String::Latin1)); - - Map<ChannelType, ChannelData>::ConstIterator it = d->channels.begin(); - - for(; it != d->channels.end(); ++it) { - ChannelType type = (*it).first; - const ChannelData &channel = (*it).second; - - data.append(char(type)); - data.append(ByteVector::fromShort(channel.volumeAdjustment)); - data.append(char(channel.peakVolume.bitsRepresentingPeak)); - data.append(channel.peakVolume.peakVolume); - } - - return data; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -RelativeVolumeFrame::RelativeVolumeFrame(const ByteVector &data, Header *h) : Frame(h) -{ - d = new RelativeVolumeFramePrivate; - parseFields(fieldData(data)); -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/relativevolumeframe.h b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/relativevolumeframe.h deleted file mode 100644 index dad4e7d4e02..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/relativevolumeframe.h +++ /dev/null @@ -1,274 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_RELATIVEVOLUMEFRAME_H -#define TAGLIB_RELATIVEVOLUMEFRAME_H - -#include "tlist.h" -#include "id3v2frame.h" -#include "taglib_export.h" - -namespace TagLib { - - namespace ID3v2 { - - //! An ID3v2 relative volume adjustment frame implementation - - /*! - * This is an implementation of ID3v2 relative volume adjustment. The - * presence of this frame makes it possible to specify an increase in volume - * for an audio file or specific audio tracks in that file. - * - * Multiple relative volume adjustment frames may be present in the tag - * each with a unique identification and describing volume adjustment for - * different channel types. - */ - - class TAGLIB_EXPORT RelativeVolumeFrame : public Frame - { - friend class FrameFactory; - - public: - - /*! - * This indicates the type of volume adjustment that should be applied. - */ - enum ChannelType { - //! A type not enumerated below - Other = 0x00, - //! The master volume for the track - MasterVolume = 0x01, - //! The front right audio channel - FrontRight = 0x02, - //! The front left audio channel - FrontLeft = 0x03, - //! The back right audio channel - BackRight = 0x04, - //! The back left audio channel - BackLeft = 0x05, - //! The front center audio channel - FrontCentre = 0x06, - //! The back center audio channel - BackCentre = 0x07, - //! The subwoofer audio channel - Subwoofer = 0x08 - }; - - //! Struct that stores the relevant values for ID3v2 peak volume - - /*! - * The peak volume is described as a series of bits that is padded to fill - * a block of bytes. These two values should always be updated in tandem. - */ - struct PeakVolume - { - /*! - * Constructs an empty peak volume description. - */ - PeakVolume() : bitsRepresentingPeak(0) {} - /*! - * The number of bits (in the range of 0 to 255) used to describe the - * peak volume. - */ - unsigned char bitsRepresentingPeak; - /*! - * The array of bits (represented as a series of bytes) used to describe - * the peak volume. - */ - ByteVector peakVolume; - }; - - /*! - * Constructs a RelativeVolumeFrame. The relevant data should be set - * manually. - */ - RelativeVolumeFrame(); - - /*! - * Constructs a RelativeVolumeFrame based on the contents of \a data. - */ - RelativeVolumeFrame(const ByteVector &data); - - /*! - * Destroys the RelativeVolumeFrame instance. - */ - virtual ~RelativeVolumeFrame(); - - /*! - * Returns the frame's identification. - * - * \see identification() - */ - virtual String toString() const; - - /*! - * Returns a list of channels with information currently in the frame. - */ - List<ChannelType> channels() const; - - /*! - * \deprecated Always returns master volume. - */ - ChannelType channelType() const; - - /*! - * \deprecated This method no longer has any effect. - */ - void setChannelType(ChannelType t); - - /* - * There was a terrible API goof here, and while this can't be changed to - * the way it appears below for binary compaibility reasons, let's at - * least pretend that it looks clean. - */ - -#ifdef DOXYGEN - - /*! - * Returns the relative volume adjustment "index". As indicated by the - * ID3v2 standard this is a 16-bit signed integer that reflects the - * decibils of adjustment when divided by 512. - * - * This defaults to returning the value for the master volume channel if - * available and returns 0 if the specified channel does not exist. - * - * \see setVolumeAdjustmentIndex() - * \see volumeAjustment() - */ - short volumeAdjustmentIndex(ChannelType type = MasterVolume) const; - - /*! - * Set the volume adjustment to \a index. As indicated by the ID3v2 - * standard this is a 16-bit signed integer that reflects the decibils of - * adjustment when divided by 512. - * - * By default this sets the value for the master volume. - * - * \see volumeAdjustmentIndex() - * \see setVolumeAjustment() - */ - void setVolumeAdjustmentIndex(short index, ChannelType type = MasterVolume); - - /*! - * Returns the relative volume adjustment in decibels. - * - * \note Because this is actually stored internally as an "index" to this - * value the value returned by this method may not be identical to the - * value set using setVolumeAdjustment(). - * - * This defaults to returning the value for the master volume channel if - * available and returns 0 if the specified channel does not exist. - * - * \see setVolumeAdjustment() - * \see volumeAdjustmentIndex() - */ - float volumeAdjustment(ChannelType type = MasterVolume) const; - - /*! - * Set the relative volume adjustment in decibels to \a adjustment. - * - * By default this sets the value for the master volume. - * - * \note Because this is actually stored internally as an "index" to this - * value the value set by this method may not be identical to the one - * returned by volumeAdjustment(). - * - * \see setVolumeAdjustment() - * \see volumeAdjustmentIndex() - */ - void setVolumeAdjustment(float adjustment, ChannelType type = MasterVolume); - - /*! - * Returns the peak volume (represented as a length and a string of bits). - * - * This defaults to returning the value for the master volume channel if - * available and returns 0 if the specified channel does not exist. - * - * \see setPeakVolume() - */ - PeakVolume peakVolume(ChannelType type = MasterVolume) const; - - /*! - * Sets the peak volume to \a peak. - * - * By default this sets the value for the master volume. - * - * \see peakVolume() - */ - void setPeakVolume(const PeakVolume &peak, ChannelType type = MasterVolume); - -#else - - // BIC: Combine each of the following pairs of functions (or maybe just - // rework this junk altogether). - - short volumeAdjustmentIndex(ChannelType type) const; - short volumeAdjustmentIndex() const; - - void setVolumeAdjustmentIndex(short index, ChannelType type); - void setVolumeAdjustmentIndex(short index); - - float volumeAdjustment(ChannelType type) const; - float volumeAdjustment() const; - - void setVolumeAdjustment(float adjustment, ChannelType type); - void setVolumeAdjustment(float adjustment); - - PeakVolume peakVolume(ChannelType type) const; - PeakVolume peakVolume() const; - - void setPeakVolume(const PeakVolume &peak, ChannelType type); - void setPeakVolume(const PeakVolume &peak); - -#endif - - /*! - * Returns the identification for this frame. - */ - String identification() const; - - /*! - * Sets the identification of the frame to \a s. The string - * is used to identify the situation and/or device where this - * adjustment should apply. - */ - void setIdentification(const String &s); - - protected: - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; - - private: - RelativeVolumeFrame(const ByteVector &data, Header *h); - RelativeVolumeFrame(const RelativeVolumeFrame &); - RelativeVolumeFrame &operator=(const RelativeVolumeFrame &); - - class RelativeVolumeFramePrivate; - RelativeVolumeFramePrivate *d; - }; - - } -} -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/textidentificationframe.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/textidentificationframe.cpp deleted file mode 100644 index 3287063ca63..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/textidentificationframe.cpp +++ /dev/null @@ -1,429 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tbytevectorlist.h> -#include <id3v2tag.h> -#include "textidentificationframe.h" -#include "tpropertymap.h" -#include "id3v1genres.h" - -using namespace TagLib; -using namespace ID3v2; - -class TextIdentificationFrame::TextIdentificationFramePrivate -{ -public: - TextIdentificationFramePrivate() : textEncoding(String::Latin1) {} - String::Type textEncoding; - StringList fieldList; -}; - -//////////////////////////////////////////////////////////////////////////////// -// TextIdentificationFrame public members -//////////////////////////////////////////////////////////////////////////////// - -TextIdentificationFrame::TextIdentificationFrame(const ByteVector &type, String::Type encoding) : - Frame(type) -{ - d = new TextIdentificationFramePrivate; - d->textEncoding = encoding; -} - -TextIdentificationFrame::TextIdentificationFrame(const ByteVector &data) : - Frame(data) -{ - d = new TextIdentificationFramePrivate; - setData(data); -} - -TextIdentificationFrame *TextIdentificationFrame::createTIPLFrame(const PropertyMap &properties) // static -{ - TextIdentificationFrame *frame = new TextIdentificationFrame("TIPL"); - StringList l; - for(PropertyMap::ConstIterator it = properties.begin(); it != properties.end(); ++it){ - l.append(it->first); - l.append(it->second.toString(",")); // comma-separated list of names - } - frame->setText(l); - return frame; -} - -TextIdentificationFrame *TextIdentificationFrame::createTMCLFrame(const PropertyMap &properties) // static -{ - TextIdentificationFrame *frame = new TextIdentificationFrame("TMCL"); - StringList l; - for(PropertyMap::ConstIterator it = properties.begin(); it != properties.end(); ++it){ - if(!it->first.startsWith(instrumentPrefix)) // should not happen - continue; - l.append(it->first.substr(instrumentPrefix.size())); - l.append(it->second.toString(",")); - } - frame->setText(l); - return frame; -} - -TextIdentificationFrame::~TextIdentificationFrame() -{ - delete d; -} - -void TextIdentificationFrame::setText(const StringList &l) -{ - d->fieldList = l; -} - -void TextIdentificationFrame::setText(const String &s) -{ - d->fieldList = s; -} - -String TextIdentificationFrame::toString() const -{ - return d->fieldList.toString(); -} - -StringList TextIdentificationFrame::fieldList() const -{ - return d->fieldList; -} - -String::Type TextIdentificationFrame::textEncoding() const -{ - return d->textEncoding; -} - -void TextIdentificationFrame::setTextEncoding(String::Type encoding) -{ - d->textEncoding = encoding; -} - -// array of allowed TIPL prefixes and their corresponding key value -static const TagLib::uint involvedPeopleSize = 5; -static const char* involvedPeople[][2] = { - {"ARRANGER", "ARRANGER"}, - {"ENGINEER", "ENGINEER"}, - {"PRODUCER", "PRODUCER"}, - {"DJ-MIX", "DJMIXER"}, - {"MIX", "MIXER"}, -}; - -const KeyConversionMap &TextIdentificationFrame::involvedPeopleMap() // static -{ - static KeyConversionMap m; - if(m.isEmpty()) - for(uint i = 0; i < involvedPeopleSize; ++i) - m.insert(involvedPeople[i][1], involvedPeople[i][0]); - return m; -} - -PropertyMap TextIdentificationFrame::asProperties() const -{ - if(frameID() == "TIPL") - return makeTIPLProperties(); - if(frameID() == "TMCL") - return makeTMCLProperties(); - PropertyMap map; - String tagName = frameIDToKey(frameID()); - if(tagName.isNull()) { - map.unsupportedData().append(frameID()); - return map; - } - StringList values = fieldList(); - if(tagName == "GENRE") { - // Special case: Support ID3v1-style genre numbers. They are not officially supported in - // ID3v2, however it seems that still a lot of programs use them. - for(StringList::Iterator it = values.begin(); it != values.end(); ++it) { - bool ok = false; - int test = it->toInt(&ok); // test if the genre value is an integer - if(ok) - *it = ID3v1::genre(test); - } - } else if(tagName == "DATE") { - for(StringList::Iterator it = values.begin(); it != values.end(); ++it) { - // ID3v2 specifies ISO8601 timestamps which contain a 'T' as separator between date and time. - // Since this is unusual in other formats, the T is removed. - int tpos = it->find("T"); - if(tpos != -1) - (*it)[tpos] = ' '; - } - } - PropertyMap ret; - ret.insert(tagName, values); - return ret; -} - -//////////////////////////////////////////////////////////////////////////////// -// TextIdentificationFrame protected members -//////////////////////////////////////////////////////////////////////////////// - -void TextIdentificationFrame::parseFields(const ByteVector &data) -{ - // Don't try to parse invalid frames - - if(data.size() < 2) - return; - - // read the string data type (the first byte of the field data) - - d->textEncoding = String::Type(data[0]); - - // split the byte array into chunks based on the string type (two byte delimiter - // for unicode encodings) - - int byteAlign = d->textEncoding == String::Latin1 || d->textEncoding == String::UTF8 ? 1 : 2; - - // build a small counter to strip nulls off the end of the field - - int dataLength = data.size() - 1; - - while(dataLength > 0 && data[dataLength] == 0) - dataLength--; - - while(dataLength % byteAlign != 0) - dataLength++; - - ByteVectorList l = ByteVectorList::split(data.mid(1, dataLength), textDelimiter(d->textEncoding), byteAlign); - - d->fieldList.clear(); - - // append those split values to the list and make sure that the new string's - // type is the same specified for this frame - - for(ByteVectorList::Iterator it = l.begin(); it != l.end(); it++) { - if(!(*it).isEmpty()) { - if(d->textEncoding == String::Latin1) - d->fieldList.append(Tag::latin1StringHandler()->parse(*it)); - else - d->fieldList.append(String(*it, d->textEncoding)); - } - } -} - -ByteVector TextIdentificationFrame::renderFields() const -{ - String::Type encoding = checkTextEncoding(d->fieldList, d->textEncoding); - - ByteVector v; - - v.append(char(encoding)); - - for(StringList::ConstIterator it = d->fieldList.begin(); it != d->fieldList.end(); it++) { - - // Since the field list is null delimited, if this is not the first - // element in the list, append the appropriate delimiter for this - // encoding. - - if(it != d->fieldList.begin()) - v.append(textDelimiter(encoding)); - - v.append((*it).data(encoding)); - } - - return v; -} - -//////////////////////////////////////////////////////////////////////////////// -// TextIdentificationFrame private members -//////////////////////////////////////////////////////////////////////////////// - -TextIdentificationFrame::TextIdentificationFrame(const ByteVector &data, Header *h) : Frame(h) -{ - d = new TextIdentificationFramePrivate; - parseFields(fieldData(data)); -} - -PropertyMap TextIdentificationFrame::makeTIPLProperties() const -{ - PropertyMap map; - if(fieldList().size() % 2 != 0){ - // according to the ID3 spec, TIPL must contain an even number of entries - map.unsupportedData().append(frameID()); - return map; - } - StringList l = fieldList(); - for(StringList::ConstIterator it = l.begin(); it != l.end(); ++it) { - bool found = false; - for(uint i = 0; i < involvedPeopleSize; ++i) - if(*it == involvedPeople[i][0]) { - map.insert(involvedPeople[i][1], (++it)->split(",")); - found = true; - break; - } - if(!found){ - // invalid involved role -> mark whole frame as unsupported in order to be consisten with writing - map.clear(); - map.unsupportedData().append(frameID()); - return map; - } - } - return map; -} - -PropertyMap TextIdentificationFrame::makeTMCLProperties() const -{ - PropertyMap map; - if(fieldList().size() % 2 != 0){ - // according to the ID3 spec, TMCL must contain an even number of entries - map.unsupportedData().append(frameID()); - return map; - } - StringList l = fieldList(); - for(StringList::ConstIterator it = l.begin(); it != l.end(); ++it) { - String instrument = it->upper(); - if(instrument.isNull()) { - // instrument is not a valid key -> frame unsupported - map.clear(); - map.unsupportedData().append(frameID()); - return map; - } - map.insert(L"PERFORMER:" + instrument, (++it)->split(",")); - } - return map; -} - -//////////////////////////////////////////////////////////////////////////////// -// UserTextIdentificationFrame public members -//////////////////////////////////////////////////////////////////////////////// - -UserTextIdentificationFrame::UserTextIdentificationFrame(String::Type encoding) : - TextIdentificationFrame("TXXX", encoding), - d(0) -{ - StringList l; - l.append(String::null); - l.append(String::null); - setText(l); -} - - -UserTextIdentificationFrame::UserTextIdentificationFrame(const ByteVector &data) : - TextIdentificationFrame(data) -{ - checkFields(); -} - -UserTextIdentificationFrame::UserTextIdentificationFrame(const String &description, const StringList &values, String::Type encoding) : - TextIdentificationFrame("TXXX", encoding), - d(0) -{ - setDescription(description); - setText(values); -} - -String UserTextIdentificationFrame::toString() const -{ - return "[" + description() + "] " + fieldList().toString(); -} - -String UserTextIdentificationFrame::description() const -{ - return !TextIdentificationFrame::fieldList().isEmpty() - ? TextIdentificationFrame::fieldList().front() - : String::null; -} - -StringList UserTextIdentificationFrame::fieldList() const -{ - // TODO: remove this function - - return TextIdentificationFrame::fieldList(); -} - -void UserTextIdentificationFrame::setText(const String &text) -{ - if(description().isEmpty()) - setDescription(String::null); - - TextIdentificationFrame::setText(StringList(description()).append(text)); -} - -void UserTextIdentificationFrame::setText(const StringList &fields) -{ - if(description().isEmpty()) - setDescription(String::null); - - TextIdentificationFrame::setText(StringList(description()).append(fields)); -} - -void UserTextIdentificationFrame::setDescription(const String &s) -{ - StringList l = fieldList(); - - if(l.isEmpty()) - l.append(s); - else - l[0] = s; - - TextIdentificationFrame::setText(l); -} - -PropertyMap UserTextIdentificationFrame::asProperties() const -{ - String tagName = description(); - - PropertyMap map; - String key = tagName.upper(); - if(key.isNull()) // this frame's description is not a valid PropertyMap key -> add to unsupported list - map.unsupportedData().append(L"TXXX/" + description()); - else { - StringList v = fieldList(); - for(StringList::ConstIterator it = v.begin(); it != v.end(); ++it) - if(*it != description()) - map.insert(key, *it); - } - return map; -} - -UserTextIdentificationFrame *UserTextIdentificationFrame::find( - ID3v2::Tag *tag, const String &description) // static -{ - FrameList l = tag->frameList("TXXX"); - for(FrameList::Iterator it = l.begin(); it != l.end(); ++it) { - UserTextIdentificationFrame *f = dynamic_cast<UserTextIdentificationFrame *>(*it); - if(f && f->description() == description) - return f; - } - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// -// UserTextIdentificationFrame private members -//////////////////////////////////////////////////////////////////////////////// - -UserTextIdentificationFrame::UserTextIdentificationFrame(const ByteVector &data, Header *h) : - TextIdentificationFrame(data, h) -{ - checkFields(); -} - -void UserTextIdentificationFrame::checkFields() -{ - int fields = fieldList().size(); - - if(fields == 0) - setDescription(String::null); - if(fields <= 1) - setText(String::null); -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/textidentificationframe.h b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/textidentificationframe.h deleted file mode 100644 index 58ed63e690d..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/textidentificationframe.h +++ /dev/null @@ -1,313 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_TEXTIDENTIFICATIONFRAME_H -#define TAGLIB_TEXTIDENTIFICATIONFRAME_H - -#include "tstringlist.h" -#include "tmap.h" -#include "taglib_export.h" - -#include "id3v2frame.h" - -namespace TagLib { - - namespace ID3v2 { - - class Tag; - typedef Map<String, String> KeyConversionMap; - - //! An ID3v2 text identification frame implementation - - /*! - * This is an implementation of the most common type of ID3v2 frame -- text - * identification frames. There are a number of variations on this. Those - * enumerated in the ID3v2.4 standard are: - * - * <ul> - * <li><b>TALB</b> Album/Movie/Show title</li> - * <li><b>TBPM</b> BPM (beats per minute)</li> - * <li><b>TCOM</b> Composer</li> - * <li><b>TCON</b> Content type</li> - * <li><b>TCOP</b> Copyright message</li> - * <li><b>TDEN</b> Encoding time</li> - * <li><b>TDLY</b> Playlist delay</li> - * <li><b>TDOR</b> Original release time</li> - * <li><b>TDRC</b> Recording time</li> - * <li><b>TDRL</b> Release time</li> - * <li><b>TDTG</b> Tagging time</li> - * <li><b>TENC</b> Encoded by</li> - * <li><b>TEXT</b> Lyricist/Text writer</li> - * <li><b>TFLT</b> File type</li> - * <li><b>TIPL</b> Involved people list</li> - * <li><b>TIT1</b> Content group description</li> - * <li><b>TIT2</b> Title/songname/content description</li> - * <li><b>TIT3</b> Subtitle/Description refinement</li> - * <li><b>TKEY</b> Initial key</li> - * <li><b>TLAN</b> Language(s)</li> - * <li><b>TLEN</b> Length</li> - * <li><b>TMCL</b> Musician credits list</li> - * <li><b>TMED</b> Media type</li> - * <li><b>TMOO</b> Mood</li> - * <li><b>TOAL</b> Original album/movie/show title</li> - * <li><b>TOFN</b> Original filename</li> - * <li><b>TOLY</b> Original lyricist(s)/text writer(s)</li> - * <li><b>TOPE</b> Original artist(s)/performer(s)</li> - * <li><b>TOWN</b> File owner/licensee</li> - * <li><b>TPE1</b> Lead performer(s)/Soloist(s)</li> - * <li><b>TPE2</b> Band/orchestra/accompaniment</li> - * <li><b>TPE3</b> Conductor/performer refinement</li> - * <li><b>TPE4</b> Interpreted, remixed, or otherwise modified by</li> - * <li><b>TPOS</b> Part of a set</li> - * <li><b>TPRO</b> Produced notice</li> - * <li><b>TPUB</b> Publisher</li> - * <li><b>TRCK</b> Track number/Position in set</li> - * <li><b>TRSN</b> Internet radio station name</li> - * <li><b>TRSO</b> Internet radio station owner</li> - * <li><b>TSOA</b> Album sort order</li> - * <li><b>TSOP</b> Performer sort order</li> - * <li><b>TSOT</b> Title sort order</li> - * <li><b>TSRC</b> ISRC (international standard recording code)</li> - * <li><b>TSSE</b> Software/Hardware and settings used for encoding</li> - * <li><b>TSST</b> Set subtitle</li> - * </ul> - * - * The ID3v2 Frames document gives a description of each of these formats - * and the expected order of strings in each. ID3v2::Header::frameID() can - * be used to determine the frame type. - * - * \note If non-Latin1 compatible strings are used with this class, even if - * the text encoding is set to Latin1, the frame will be written using UTF8 - * (with the encoding flag appropriately set in the output). - */ - - class TAGLIB_EXPORT TextIdentificationFrame : public Frame - { - friend class FrameFactory; - - public: - /*! - * Construct an empty frame of type \a type. Uses \a encoding as the - * default text encoding. - * - * \note In this case you must specify the text encoding as it - * resolves the ambiguity between constructors. - * - * \note Please see the note in the class description regarding Latin1. - */ - TextIdentificationFrame(const ByteVector &type, String::Type encoding); - - /*! - * This is a dual purpose constructor. \a data can either be binary data - * that should be parsed or (at a minimum) the frame ID. - */ - explicit TextIdentificationFrame(const ByteVector &data); - - /*! - * This is a special factory method to create a TIPL (involved people list) - * frame from the given \a properties. Will parse key=[list of values] data - * into the TIPL format as specified in the ID3 standard. - */ - static TextIdentificationFrame *createTIPLFrame(const PropertyMap &properties); - - /*! - * This is a special factory method to create a TMCL (musician credits list) - * frame from the given \a properties. Will parse key=[list of values] data - * into the TMCL format as specified in the ID3 standard, where key should be - * of the form instrumentPrefix:instrument. - */ - static TextIdentificationFrame *createTMCLFrame(const PropertyMap &properties); - /*! - * Destroys this TextIdentificationFrame instance. - */ - virtual ~TextIdentificationFrame(); - - /*! - * Text identification frames are a list of string fields. - * - * This function will accept either a StringList or a String (using the - * StringList constructor that accepts a single String). - * - * \note This will not change the text encoding of the frame even if the - * strings passed in are not of the same encoding. Please use - * setEncoding(s.type()) if you wish to change the encoding of the frame. - */ - void setText(const StringList &l); - - // Reimplementations. - - virtual void setText(const String &s); - virtual String toString() const; - - /*! - * Returns the text encoding that will be used in rendering this frame. - * This defaults to the type that was either specified in the constructor - * or read from the frame when parsed. - * - * \note Please see the note in the class description regarding Latin1. - * - * \see setTextEncoding() - * \see render() - */ - String::Type textEncoding() const; - - /*! - * Sets the text encoding to be used when rendering this frame to - * \a encoding. - * - * \note Please see the note in the class description regarding Latin1. - * - * \see textEncoding() - * \see render() - */ - void setTextEncoding(String::Type encoding); - - /*! - * Returns a list of the strings in this frame. - */ - StringList fieldList() const; - - /*! - * Returns a KeyConversionMap mapping a role as it would be used in a PropertyMap - * to the corresponding key used in a TIPL ID3 frame to describe that role. - */ - static const KeyConversionMap &involvedPeopleMap(); - - PropertyMap asProperties() const; - - protected: - // Reimplementations. - - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; - - /*! - * The constructor used by the FrameFactory. - */ - TextIdentificationFrame(const ByteVector &data, Header *h); - - private: - TextIdentificationFrame(const TextIdentificationFrame &); - TextIdentificationFrame &operator=(const TextIdentificationFrame &); - - /*! - * Parses the special structure of a TIPL frame - * Only the whitelisted roles "ARRANGER", "ENGINEER", "PRODUCER", - * "DJMIXER" (ID3: "DJ-MIX") and "MIXER" (ID3: "MIX") are allowed. - */ - PropertyMap makeTIPLProperties() const; - /*! - * Parses the special structure of a TMCL frame. - */ - PropertyMap makeTMCLProperties() const; - class TextIdentificationFramePrivate; - TextIdentificationFramePrivate *d; - }; - - /*! - * This is a specialization of text identification frames that allows for - * user defined entries. Each entry has a description in addition to the - * normal list of fields that a text identification frame has. - * - * This description identifies the frame and must be unique. - */ - - //! An ID3v2 custom text identification frame implementationx - - class TAGLIB_EXPORT UserTextIdentificationFrame : public TextIdentificationFrame - { - friend class FrameFactory; - - public: - /*! - * Constructs an empty user defined text identification frame. For this to be - * a useful frame both a description and text must be set. - */ - explicit UserTextIdentificationFrame(String::Type encoding = String::Latin1); - - /*! - * Creates a frame based on \a data. - */ - explicit UserTextIdentificationFrame(const ByteVector &data); - - /*! - * Creates a user defined text identification frame with the given \a description - * and \a values. - */ - UserTextIdentificationFrame(const String &description, const StringList &values, String::Type encoding = String::UTF8); - - virtual String toString() const; - - /*! - * Returns the description for this frame. - */ - String description() const; - - /*! - * Sets the description of the frame to \a s. \a s must be unique. You can - * check for the presence of another user defined text frame of the same type - * using find() and testing for null. - */ - void setDescription(const String &s); - - StringList fieldList() const; - void setText(const String &text); - void setText(const StringList &fields); - - /*! - * A UserTextIdentificationFrame is parsed into a PropertyMap as follows: - * - the key is the frame's description, uppercased - * - if the description contains '::', only the substring after that - * separator is considered as key (compatibility with exfalso) - * - if the above rules don't yield a valid key (e.g. containing non-ASCII - * characters), the returned map will contain an entry "TXXX/<description>" - * in its unsupportedData() list. - * - The values will be copies of the fieldList(). - * - If the description() appears as value in fieldList(), it will be omitted - * in the value list, in order to be compatible with TagLib which copies - * the description() into the fieldList(). - */ - PropertyMap asProperties() const; - - /*! - * Searches for the user defined text frame with the description \a description - * in \a tag. This returns null if no matching frames were found. - */ - static UserTextIdentificationFrame *find(Tag *tag, const String &description); - - private: - UserTextIdentificationFrame(const ByteVector &data, Header *h); - UserTextIdentificationFrame(const TextIdentificationFrame &); - UserTextIdentificationFrame &operator=(const UserTextIdentificationFrame &); - - void checkFields(); - - class UserTextIdentificationFramePrivate; - UserTextIdentificationFramePrivate *d; - }; - - } -} -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/uniquefileidentifierframe.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/uniquefileidentifierframe.cpp deleted file mode 100644 index e12583ade51..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/uniquefileidentifierframe.cpp +++ /dev/null @@ -1,118 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tbytevectorlist.h> -#include <tdebug.h> - -#include "uniquefileidentifierframe.h" - -using namespace TagLib; -using namespace ID3v2; - -class UniqueFileIdentifierFrame::UniqueFileIdentifierFramePrivate -{ -public: - String owner; - ByteVector identifier; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public methods -//////////////////////////////////////////////////////////////////////////////// - -UniqueFileIdentifierFrame::UniqueFileIdentifierFrame(const ByteVector &data) : - ID3v2::Frame(data) -{ - d = new UniqueFileIdentifierFramePrivate; - setData(data); -} - -UniqueFileIdentifierFrame::UniqueFileIdentifierFrame(const String &owner, const ByteVector &id) : - ID3v2::Frame("UFID") -{ - d = new UniqueFileIdentifierFramePrivate; - d->owner = owner; - d->identifier = id; -} - -UniqueFileIdentifierFrame::~UniqueFileIdentifierFrame() -{ - delete d; -} - -String UniqueFileIdentifierFrame::owner() const -{ - return d->owner; -} - -ByteVector UniqueFileIdentifierFrame::identifier() const -{ - return d->identifier; -} - -void UniqueFileIdentifierFrame::setOwner(const String &s) -{ - d->owner = s; -} - -void UniqueFileIdentifierFrame::setIdentifier(const ByteVector &v) -{ - d->identifier = v; -} - -String UniqueFileIdentifierFrame::toString() const -{ - return String::null; -} - -void UniqueFileIdentifierFrame::parseFields(const ByteVector &data) -{ - if(data.size() < 1) { - debug("An UFID frame must contain at least 1 byte."); - return; - } - - int pos = 0; - d->owner = readStringField(data, String::Latin1, &pos); - d->identifier = data.mid(pos); -} - -ByteVector UniqueFileIdentifierFrame::renderFields() const -{ - ByteVector data; - - data.append(d->owner.data(String::Latin1)); - data.append(char(0)); - data.append(d->identifier); - - return data; -} - -UniqueFileIdentifierFrame::UniqueFileIdentifierFrame(const ByteVector &data, Header *h) : - Frame(h) -{ - d = new UniqueFileIdentifierFramePrivate; - parseFields(fieldData(data)); -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/uniquefileidentifierframe.h b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/uniquefileidentifierframe.h deleted file mode 100644 index 0cf4b8f6e01..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/uniquefileidentifierframe.h +++ /dev/null @@ -1,113 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_UNIQUEFILEIDENTIFIERFRAME -#define TAGLIB_UNIQUEFILEIDENTIFIERFRAME - -#include "id3v2frame.h" - -namespace TagLib { - - namespace ID3v2 { - - /*! - * This is an implementation of ID3v2 unique file identifier frames. This - * frame is used to identify the file in an arbitrary database identified - * by the owner field. - */ - - //! An implementation of ID3v2 unique identifier frames - - class TAGLIB_EXPORT UniqueFileIdentifierFrame : public ID3v2::Frame - { - friend class FrameFactory; - - public: - /*! - * Creates a uniqe file identifier frame based on \a data. - */ - UniqueFileIdentifierFrame(const ByteVector &data); - - /*! - * Creates a unique file identifier frame with the owner \a owner and - * the identification \a id. - */ - UniqueFileIdentifierFrame(const String &owner, const ByteVector &id); - - /*! - * Destroys the frame. - */ - ~UniqueFileIdentifierFrame(); - - /*! - * Returns the owner for the frame; essentially this is the key for - * determining which identification scheme this key belongs to. This - * will usually either be an email address or URL for the person or tool - * used to create the unique identifier. - * - * \see setOwner() - */ - String owner() const; - - /*! - * Returns the unique identifier. Though sometimes this is a text string - * it also may be binary data and as much should be assumed when handling - * it. - */ - ByteVector identifier() const; - - /*! - * Sets the owner of the identification scheme to \a s. - * - * \see owner() - */ - void setOwner(const String &s); - - /*! - * Sets the unique file identifier to \a v. - * - * \see identifier() - */ - void setIdentifier(const ByteVector &v); - - virtual String toString() const; - - protected: - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; - - private: - UniqueFileIdentifierFrame(const UniqueFileIdentifierFrame &); - UniqueFileIdentifierFrame &operator=(const UniqueFileIdentifierFrame &); - - UniqueFileIdentifierFrame(const ByteVector &data, Header *h); - - class UniqueFileIdentifierFramePrivate; - UniqueFileIdentifierFramePrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/unknownframe.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/unknownframe.cpp deleted file mode 100644 index 4def028ba22..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/unknownframe.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include "unknownframe.h" - -using namespace TagLib; -using namespace ID3v2; - -class UnknownFrame::UnknownFramePrivate -{ -public: - ByteVector fieldData; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -UnknownFrame::UnknownFrame(const ByteVector &data) : Frame(data) -{ - d = new UnknownFramePrivate; - setData(data); -} - -UnknownFrame::~UnknownFrame() -{ - delete d; -} - -String UnknownFrame::toString() const -{ - return String::null; -} - -ByteVector UnknownFrame::data() const -{ - return d->fieldData; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void UnknownFrame::parseFields(const ByteVector &data) -{ - d->fieldData = data; -} - -ByteVector UnknownFrame::renderFields() const -{ - return d->fieldData; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -UnknownFrame::UnknownFrame(const ByteVector &data, Header *h) : Frame(h) -{ - d = new UnknownFramePrivate; - parseFields(fieldData(data)); -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/unknownframe.h b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/unknownframe.h deleted file mode 100644 index 6559f4ed254..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/unknownframe.h +++ /dev/null @@ -1,79 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_UNKNOWNFRAME_H -#define TAGLIB_UNKNOWNFRAME_H - -#include "id3v2frame.h" -#include "taglib_export.h" - -namespace TagLib { - - namespace ID3v2 { - - //! A frame type \e unknown to TagLib. - - /*! - * This class represents a frame type not known (or more often simply - * unimplemented) in TagLib. This is here provide a basic API for - * manipulating the binary data of unknown frames and to provide a means - * of rendering such \e unknown frames. - * - * Please note that a cleaner way of handling frame types that TagLib - * does not understand is to subclass ID3v2::Frame and ID3v2::FrameFactory - * to have your frame type supported through the standard ID3v2 mechanism. - */ - - class TAGLIB_EXPORT UnknownFrame : public Frame - { - friend class FrameFactory; - - public: - UnknownFrame(const ByteVector &data); - virtual ~UnknownFrame(); - - virtual String toString() const; - - /*! - * Returns the field data (everything but the header) for this frame. - */ - ByteVector data() const; - - protected: - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; - - private: - UnknownFrame(const ByteVector &data, Header *h); - UnknownFrame(const UnknownFrame &); - UnknownFrame &operator=(const UnknownFrame &); - - class UnknownFramePrivate; - UnknownFramePrivate *d; - }; - - } -} -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/unsynchronizedlyricsframe.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/unsynchronizedlyricsframe.cpp deleted file mode 100644 index 8f96cb8d0a9..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/unsynchronizedlyricsframe.cpp +++ /dev/null @@ -1,193 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - copyright : (C) 2006 by Urs Fleisch - email : ufleisch@users.sourceforge.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include "unsynchronizedlyricsframe.h" -#include <tbytevectorlist.h> -#include <id3v2tag.h> -#include <tdebug.h> -#include <tpropertymap.h> - -using namespace TagLib; -using namespace ID3v2; - -class UnsynchronizedLyricsFrame::UnsynchronizedLyricsFramePrivate -{ -public: - UnsynchronizedLyricsFramePrivate() : textEncoding(String::Latin1) {} - String::Type textEncoding; - ByteVector language; - String description; - String text; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -UnsynchronizedLyricsFrame::UnsynchronizedLyricsFrame(String::Type encoding) : - Frame("USLT") -{ - d = new UnsynchronizedLyricsFramePrivate; - d->textEncoding = encoding; -} - -UnsynchronizedLyricsFrame::UnsynchronizedLyricsFrame(const ByteVector &data) : - Frame(data) -{ - d = new UnsynchronizedLyricsFramePrivate; - setData(data); -} - -UnsynchronizedLyricsFrame::~UnsynchronizedLyricsFrame() -{ - delete d; -} - -String UnsynchronizedLyricsFrame::toString() const -{ - return d->text; -} - -ByteVector UnsynchronizedLyricsFrame::language() const -{ - return d->language; -} - -String UnsynchronizedLyricsFrame::description() const -{ - return d->description; -} - -String UnsynchronizedLyricsFrame::text() const -{ - return d->text; -} - -void UnsynchronizedLyricsFrame::setLanguage(const ByteVector &languageEncoding) -{ - d->language = languageEncoding.mid(0, 3); -} - -void UnsynchronizedLyricsFrame::setDescription(const String &s) -{ - d->description = s; -} - -void UnsynchronizedLyricsFrame::setText(const String &s) -{ - d->text = s; -} - - -String::Type UnsynchronizedLyricsFrame::textEncoding() const -{ - return d->textEncoding; -} - -void UnsynchronizedLyricsFrame::setTextEncoding(String::Type encoding) -{ - d->textEncoding = encoding; -} - -PropertyMap UnsynchronizedLyricsFrame::asProperties() const -{ - PropertyMap map; - String key = description().upper(); - if(key.isEmpty() || key.upper() == "LYRICS") - map.insert("LYRICS", text()); - else if(key.isNull()) - map.unsupportedData().append(L"USLT/" + description()); - else - map.insert("LYRICS:" + key, text()); - return map; -} - -UnsynchronizedLyricsFrame *UnsynchronizedLyricsFrame::findByDescription(const ID3v2::Tag *tag, const String &d) // static -{ - ID3v2::FrameList lyrics = tag->frameList("USLT"); - - for(ID3v2::FrameList::ConstIterator it = lyrics.begin(); it != lyrics.end(); ++it){ - UnsynchronizedLyricsFrame *frame = dynamic_cast<UnsynchronizedLyricsFrame *>(*it); - if(frame && frame->description() == d) - return frame; - } - return 0; -} -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void UnsynchronizedLyricsFrame::parseFields(const ByteVector &data) -{ - if(data.size() < 5) { - debug("An unsynchronized lyrics frame must contain at least 5 bytes."); - return; - } - - d->textEncoding = String::Type(data[0]); - d->language = data.mid(1, 3); - - int byteAlign - = d->textEncoding == String::Latin1 || d->textEncoding == String::UTF8 ? 1 : 2; - - ByteVectorList l = - ByteVectorList::split(data.mid(4), textDelimiter(d->textEncoding), byteAlign, 2); - - if(l.size() == 2) { - if(d->textEncoding == String::Latin1) { - d->description = Tag::latin1StringHandler()->parse(l.front()); - d->text = Tag::latin1StringHandler()->parse(l.back()); - } else { - d->description = String(l.front(), d->textEncoding); - d->text = String(l.back(), d->textEncoding); - } - } -} - -ByteVector UnsynchronizedLyricsFrame::renderFields() const -{ - ByteVector v; - - v.append(char(d->textEncoding)); - v.append(d->language.size() == 3 ? d->language : "XXX"); - v.append(d->description.data(d->textEncoding)); - v.append(textDelimiter(d->textEncoding)); - v.append(d->text.data(d->textEncoding)); - - return v; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -UnsynchronizedLyricsFrame::UnsynchronizedLyricsFrame(const ByteVector &data, Header *h) - : Frame(h) -{ - d = new UnsynchronizedLyricsFramePrivate(); - parseFields(fieldData(data)); -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/unsynchronizedlyricsframe.h b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/unsynchronizedlyricsframe.h deleted file mode 100644 index 3af354fcd59..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/unsynchronizedlyricsframe.h +++ /dev/null @@ -1,179 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - copyright : (C) 2006 by Urs Fleisch - email : ufleisch@users.sourceforge.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_UNSYNCHRONIZEDLYRICSFRAME_H -#define TAGLIB_UNSYNCHRONIZEDLYRICSFRAME_H - -#include "id3v2frame.h" - -namespace TagLib { - - namespace ID3v2 { - - //! ID3v2 unsynchronized lyrics frame - /*! - * An implementation of ID3v2 unsynchronized lyrics. - */ - class TAGLIB_EXPORT UnsynchronizedLyricsFrame : public Frame - { - friend class FrameFactory; - - public: - /*! - * Construct an empty unsynchronized lyrics frame that will use the text encoding - * \a encoding. - */ - explicit UnsynchronizedLyricsFrame(String::Type encoding = String::Latin1); - - /*! - * Construct a unsynchronized lyrics frame based on the data in \a data. - */ - explicit UnsynchronizedLyricsFrame(const ByteVector &data); - - /*! - * Destroys this UnsynchronizedLyricsFrame instance. - */ - virtual ~UnsynchronizedLyricsFrame(); - - /*! - * Returns the text of this unsynchronized lyrics frame. - * - * \see text() - */ - virtual String toString() const; - - /*! - * Returns the language encoding as a 3 byte encoding as specified by - * <a href="http://en.wikipedia.org/wiki/ISO_639">ISO-639-2</a>. - * - * \note Most taggers simply ignore this value. - * - * \see setLanguage() - */ - ByteVector language() const; - - /*! - * Returns the description of this unsynchronized lyrics frame. - * - * \note Most taggers simply ignore this value. - * - * \see setDescription() - */ - String description() const; - - /*! - * Returns the text of this unsynchronized lyrics frame. - * - * \see setText() - */ - String text() const; - - /*! - * Set the language using the 3 byte language code from - * <a href="http://en.wikipedia.org/wiki/ISO_639">ISO-639-2</a> to - * \a languageCode. - * - * \see language() - */ - void setLanguage(const ByteVector &languageCode); - - /*! - * Sets the description of the unsynchronized lyrics frame to \a s. - * - * \see decription() - */ - void setDescription(const String &s); - - /*! - * Sets the text portion of the unsynchronized lyrics frame to \a s. - * - * \see text() - */ - virtual void setText(const String &s); - - /*! - * Returns the text encoding that will be used in rendering this frame. - * This defaults to the type that was either specified in the constructor - * or read from the frame when parsed. - * - * \see setTextEncoding() - * \see render() - */ - String::Type textEncoding() const; - - /*! - * Sets the text encoding to be used when rendering this frame to - * \a encoding. - * - * \see textEncoding() - * \see render() - */ - void setTextEncoding(String::Type encoding); - - - /*! Parses this frame as PropertyMap with a single key. - * - if description() is empty or "LYRICS", the key will be "LYRICS" - * - if description() is not a valid PropertyMap key, the frame will be - * marked unsupported by an entry "USLT/<description>" in the unsupportedData() - * attribute of the returned map. - * - otherwise, the key will be "LYRICS:<description>" - * - The single value will be the frame's text(). - * Note that currently the language() field is not supported by the PropertyMap - * interface. - */ - PropertyMap asProperties() const; - - /*! - * LyricsFrames each have a unique description. This searches for a lyrics - * frame with the decription \a d and returns a pointer to it. If no - * frame is found that matches the given description null is returned. - * - * \see description() - */ - static UnsynchronizedLyricsFrame *findByDescription(const Tag *tag, const String &d); - - protected: - // Reimplementations. - - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; - - private: - /*! - * The constructor used by the FrameFactory. - */ - UnsynchronizedLyricsFrame(const ByteVector &data, Header *h); - UnsynchronizedLyricsFrame(const UnsynchronizedLyricsFrame &); - UnsynchronizedLyricsFrame &operator=(const UnsynchronizedLyricsFrame &); - - class UnsynchronizedLyricsFramePrivate; - UnsynchronizedLyricsFramePrivate *d; - }; - - } -} -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/urllinkframe.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/urllinkframe.cpp deleted file mode 100644 index 6bcbbda4593..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/urllinkframe.cpp +++ /dev/null @@ -1,230 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - copyright : (C) 2006 by Urs Fleisch - email : ufleisch@users.sourceforge.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include "urllinkframe.h" -#include "id3v2tag.h" -#include <tdebug.h> -#include <tstringlist.h> -#include <tpropertymap.h> - -using namespace TagLib; -using namespace ID3v2; - -class UrlLinkFrame::UrlLinkFramePrivate -{ -public: - String url; -}; - -class UserUrlLinkFrame::UserUrlLinkFramePrivate -{ -public: - UserUrlLinkFramePrivate() : textEncoding(String::Latin1) {} - String::Type textEncoding; - String description; -}; - -UrlLinkFrame::UrlLinkFrame(const ByteVector &data) : - Frame(data) -{ - d = new UrlLinkFramePrivate; - setData(data); -} - -UrlLinkFrame::~UrlLinkFrame() -{ - delete d; -} - -void UrlLinkFrame::setUrl(const String &s) -{ - d->url = s; -} - -String UrlLinkFrame::url() const -{ - return d->url; -} - -void UrlLinkFrame::setText(const String &s) -{ - setUrl(s); -} - -String UrlLinkFrame::toString() const -{ - return url(); -} - -PropertyMap UrlLinkFrame::asProperties() const -{ - String key = frameIDToKey(frameID()); - PropertyMap map; - if(key.isNull()) - // unknown W*** frame - this normally shouldn't happen - map.unsupportedData().append(frameID()); - else - map.insert(key, url()); - return map; -} - -void UrlLinkFrame::parseFields(const ByteVector &data) -{ - d->url = String(data); -} - -ByteVector UrlLinkFrame::renderFields() const -{ - return d->url.data(String::Latin1); -} - -UrlLinkFrame::UrlLinkFrame(const ByteVector &data, Header *h) : Frame(h) -{ - d = new UrlLinkFramePrivate; - parseFields(fieldData(data)); -} - - -UserUrlLinkFrame::UserUrlLinkFrame(String::Type encoding) : - UrlLinkFrame("WXXX") -{ - d = new UserUrlLinkFramePrivate; - d->textEncoding = encoding; -} - -UserUrlLinkFrame::UserUrlLinkFrame(const ByteVector &data) : - UrlLinkFrame(data) -{ - d = new UserUrlLinkFramePrivate; - setData(data); -} - -UserUrlLinkFrame::~UserUrlLinkFrame() -{ - delete d; -} - -String UserUrlLinkFrame::toString() const -{ - return "[" + description() + "] " + url(); -} - -String::Type UserUrlLinkFrame::textEncoding() const -{ - return d->textEncoding; -} - -void UserUrlLinkFrame::setTextEncoding(String::Type encoding) -{ - d->textEncoding = encoding; -} - -String UserUrlLinkFrame::description() const -{ - return d->description; -} - -void UserUrlLinkFrame::setDescription(const String &s) -{ - d->description = s; -} - -PropertyMap UserUrlLinkFrame::asProperties() const -{ - PropertyMap map; - String key = description().upper(); - if(key.isEmpty() || key.upper() == "URL") - map.insert("URL", url()); - else if(key.isNull()) - map.unsupportedData().append(L"WXXX/" + description()); - else - map.insert("URL:" + key, url()); - return map; -} - -UserUrlLinkFrame *UserUrlLinkFrame::find(ID3v2::Tag *tag, const String &description) // static -{ - FrameList l = tag->frameList("WXXX"); - for(FrameList::Iterator it = l.begin(); it != l.end(); ++it) { - UserUrlLinkFrame *f = dynamic_cast<UserUrlLinkFrame *>(*it); - if(f && f->description() == description) - return f; - } - return 0; -} - -void UserUrlLinkFrame::parseFields(const ByteVector &data) -{ - if(data.size() < 2) { - debug("A user URL link frame must contain at least 2 bytes."); - return; - } - - int pos = 0; - - d->textEncoding = String::Type(data[0]); - pos += 1; - - if(d->textEncoding == String::Latin1 || d->textEncoding == String::UTF8) { - int offset = data.find(textDelimiter(d->textEncoding), pos); - if(offset < pos) - return; - - d->description = String(data.mid(pos, offset - pos), d->textEncoding); - pos = offset + 1; - } - else { - int len = data.mid(pos).find(textDelimiter(d->textEncoding), 0, 2); - if(len < 0) - return; - - d->description = String(data.mid(pos, len), d->textEncoding); - pos += len + 2; - } - - setUrl(String(data.mid(pos))); -} - -ByteVector UserUrlLinkFrame::renderFields() const -{ - ByteVector v; - - String::Type encoding = checkTextEncoding(d->description, d->textEncoding); - - v.append(char(encoding)); - v.append(d->description.data(encoding)); - v.append(textDelimiter(encoding)); - v.append(url().data(String::Latin1)); - - return v; -} - -UserUrlLinkFrame::UserUrlLinkFrame(const ByteVector &data, Header *h) : UrlLinkFrame(data, h) -{ - d = new UserUrlLinkFramePrivate; - parseFields(fieldData(data)); -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/urllinkframe.h b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/urllinkframe.h deleted file mode 100644 index 7ac966b2c45..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/frames/urllinkframe.h +++ /dev/null @@ -1,189 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - copyright : (C) 2006 by Urs Fleisch - email : ufleisch@users.sourceforge.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_URLLINKFRAME_H -#define TAGLIB_URLLINKFRAME_H - -#include "id3v2frame.h" - -namespace TagLib { - - namespace ID3v2 { - - //! ID3v2 URL frame - /*! - * An implementation of ID3v2 URL link frames. - */ - class TAGLIB_EXPORT UrlLinkFrame : public Frame - { - friend class FrameFactory; - - public: - /*! - * This is a dual purpose constructor. \a data can either be binary data - * that should be parsed or (at a minimum) the frame ID. - */ - explicit UrlLinkFrame(const ByteVector &data); - - /*! - * Destroys this UrlLinkFrame instance. - */ - virtual ~UrlLinkFrame(); - - /*! - * Returns the URL. - */ - virtual String url() const; - - /*! - * Sets the URL to \a s. - */ - virtual void setUrl(const String &s); - - // Reimplementations. - - virtual void setText(const String &s); - virtual String toString() const; - PropertyMap asProperties() const; - - protected: - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; - - /*! - * The constructor used by the FrameFactory. - */ - UrlLinkFrame(const ByteVector &data, Header *h); - - private: - UrlLinkFrame(const UrlLinkFrame &); - UrlLinkFrame &operator=(const UrlLinkFrame &); - - class UrlLinkFramePrivate; - UrlLinkFramePrivate *d; - }; - - //! ID3v2 User defined URL frame - - /*! - * This is a specialization of URL link frames that allows for - * user defined entries. Each entry has a description in addition to the - * normal list of fields that a URL link frame has. - * - * This description identifies the frame and must be unique. - */ - class TAGLIB_EXPORT UserUrlLinkFrame : public UrlLinkFrame - { - friend class FrameFactory; - - public: - /*! - * Constructs an empty user defined URL link frame. For this to be - * a useful frame both a description and text must be set. - */ - explicit UserUrlLinkFrame(String::Type encoding = String::Latin1); - - /*! - * This is a dual purpose constructor. \a data can either be binary data - * that should be parsed or (at a minimum) the frame ID. - */ - explicit UserUrlLinkFrame(const ByteVector &data); - - /*! - * Destroys this UserUrlLinkFrame instance. - */ - virtual ~UserUrlLinkFrame(); - - // Reimplementations. - - virtual String toString() const; - - /*! - * Returns the text encoding that will be used in rendering this frame. - * This defaults to the type that was either specified in the constructor - * or read from the frame when parsed. - * - * \see setTextEncoding() - * \see render() - */ - String::Type textEncoding() const; - - /*! - * Sets the text encoding to be used when rendering this frame to - * \a encoding. - * - * \see textEncoding() - * \see render() - */ - void setTextEncoding(String::Type encoding); - - /*! - * Returns the description for this frame. - */ - String description() const; - - /*! - * Sets the description of the frame to \a s. \a s must be unique. - */ - void setDescription(const String &s); - - /*! - * Parses the UserUrlLinkFrame as PropertyMap. The description() is taken as key, - * and the URL as single value. - * - if description() is empty, the key will be "URL". - * - otherwise, if description() is not a valid key (e.g. containing non-ASCII - * characters), the returned map will contain an entry "WXXX/<description>" - * in its unsupportedData() list. - */ - PropertyMap asProperties() const; - - /*! - * Searches for the user defined url frame with the description \a description - * in \a tag. This returns null if no matching frames were found. - */ - static UserUrlLinkFrame *find(Tag *tag, const String &description); - - protected: - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; - - /*! - * The constructor used by the FrameFactory. - */ - UserUrlLinkFrame(const ByteVector &data, Header *h); - - private: - UserUrlLinkFrame(const UserUrlLinkFrame &); - UserUrlLinkFrame &operator=(const UserUrlLinkFrame &); - - class UserUrlLinkFramePrivate; - UserUrlLinkFramePrivate *d; - }; - - } -} -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2.2.0.txt b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2.2.0.txt deleted file mode 100644 index a69bddd32a3..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2.2.0.txt +++ /dev/null @@ -1,1660 +0,0 @@ - -Informal standard M. Nilsson -Document: id3v2-00.txt 26th March 1998 - - - ID3 tag version 2 - -Status of this document - - This document is an Informal standard and is released so that - implementors could have a set standard before the formal standard is - set. The formal standard will use another version number if not - identical to what is described in this document. The contents in this - document may change for clarifications but never for added or altered - functionallity. - - Distribution of this document is unlimited. - - -Abstract - - The recent gain of popularity for MPEG layer III audio files on the - internet forced a standardised way of storing information about an - audio file within itself to determinate its origin and contents. - - Today the most accepted way to do this is with the so called ID3 tag, - which is simple but very limited and in some cases very unsuitable. - The ID3 tag has very limited space in every field, very limited - numbers of fields, not expandable or upgradeable and is placed at the - end of a the file, which is unsuitable for streaming audio. This draft - is an attempt to answer these issues with a new version of the ID3 - tag. - - -1. Table of contents - - 2. Conventions in this document - 3. ID3v2 overview - 3.1. ID3v2 header - 3.2. ID3v2 frames overview - 4. Declared ID3v2 frames - 4.1. Unique file identifier - 4.2. Text information frames - 4.2.1. Text information frames - details - 4.2.2. User defined text information frame - 4.3. URL link frames - 4.3.1. URL link frames - details - 4.3.2. User defined URL link frame - 4.4. Involved people list - 4.5. Music CD Identifier - 4.6. Event timing codes - 4.7. MPEG location lookup table - 4.8. Synced tempo codes - 4.9. Unsychronised lyrics/text transcription - 4.10. Synchronised lyrics/text - 4.11. Comments - 4.12. Relative volume adjustment - 4.13. Equalisation - 4.14. Reverb - 4.15. Attached picture - 4.16. General encapsulated object - 4.17. Play counter - 4.18. Popularimeter - 4.19. Recommended buffer size - 4.20. Encrypted meta frame - 4.21. Audio encryption - 4.22. Linked information - 5. The 'unsynchronisation scheme' - 6. Copyright - 7. References - 8. Appendix - A. Appendix A - ID3-Tag Specification V1.1 - A.1. Overview - A.2. ID3v1 Implementation - A.3. Genre List - A.4. Track addition - ID3v1.1 - 9. Author's Address - - -2. Conventions in this document - - In the examples, text within "" is a text string exactly as it appears - in a file. Numbers preceded with $ are hexadecimal and numbers - preceded with % are binary. $xx is used to indicate a byte with - unknown content. %x is used to indicate a bit with unknown content. - The most significant bit (MSB) of a byte is called 'bit 7' and the - least significant bit (LSB) is called 'bit 0'. - - A tag is the whole tag described in this document. A frame is a block - of information in the tag. The tag consists of a header, frames and - optional padding. A field is a piece of information; one value, a - string etc. A numeric string is a string that consists of the - characters 0-9 only. - - -3. ID3v2 overview - - The two biggest design goals were to be able to implement ID3v2 - without disturbing old software too much and that ID3v2 should be - expandable. - - The first criterion is met by the simple fact that the MPEG [MPEG] - decoding software uses a syncsignal, embedded in the audiostream, to - 'lock on to' the audio. Since the ID3v2 tag doesn't contain a valid - syncsignal, no software will attempt to play the tag. If, for any - reason, coincidence make a syncsignal appear within the tag it will be - taken care of by the 'unsynchronisation scheme' described in section - 5. - - The second criterion has made a more noticeable impact on the design - of the ID3v2 tag. It is constructed as a container for several - information blocks, called frames, whose format need not be known to - the software that encounters them. At the start of every frame there - is an identifier that explains the frames's format and content, and a - size descriptor that allows software to skip unknown frames. - - If a total revision of the ID3v2 tag should be needed, there is a - version number and a size descriptor in the ID3v2 header. - - The ID3 tag described in this document is mainly targeted to files - encoded with MPEG-2 layer I, MPEG-2 layer II, MPEG-2 layer III and - MPEG-2.5, but may work with other types of encoded audio. - - The bitorder in ID3v2 is most significant bit first (MSB). The - byteorder in multibyte numbers is most significant byte first (e.g. - $12345678 would be encoded $12 34 56 78). - - It is permitted to include padding after all the final frame (at the - end of the ID3 tag), making the size of all the frames together - smaller than the size given in the head of the tag. A possible purpose - of this padding is to allow for adding a few additional frames or - enlarge existing frames within the tag without having to rewrite the - entire file. The value of the padding bytes must be $00. - - -3.1. ID3v2 header - - The ID3v2 tag header, which should be the first information in the - file, is 10 bytes as follows: - - ID3/file identifier "ID3" - ID3 version $02 00 - ID3 flags %xx000000 - ID3 size 4 * %0xxxxxxx - - The first three bytes of the tag are always "ID3" to indicate that - this is an ID3 tag, directly followed by the two version bytes. The - first byte of ID3 version is it's major version, while the second byte - is its revision number. All revisions are backwards compatible while - major versions are not. If software with ID3v2 and below support - should encounter version three or higher it should simply ignore the - whole tag. Version and revision will never be $FF. - - The first bit (bit 7) in the 'ID3 flags' is indicating whether or not - unsynchronisation is used (see section 5 for details); a set bit - indicates usage. - - The second bit (bit 6) is indicating whether or not compression is - used; a set bit indicates usage. Since no compression scheme has been - decided yet, the ID3 decoder (for now) should just ignore the entire - tag if the compression bit is set. - - The ID3 tag size is encoded with four bytes where the first bit (bit - 7) is set to zero in every byte, making a total of 28 bits. The zeroed - bits are ignored, so a 257 bytes long tag is represented as $00 00 02 - 01. - - The ID3 tag size is the size of the complete tag after - unsychronisation, including padding, excluding the header (total tag - size - 10). The reason to use 28 bits (representing up to 256MB) for - size description is that we don't want to run out of space here. - - A ID3v2 tag can be detected with the following pattern: - $49 44 33 yy yy xx zz zz zz zz - Where yy is less than $FF, xx is the 'flags' byte and zz is less than - $80. - - -3.2. ID3v2 frames overview - - The headers of the frames are similar in their construction. They - consist of one three character identifier (capital A-Z and 0-9) and - one three byte size field, making a total of six bytes. The header is - excluded from the size. Identifiers beginning with "X", "Y" and "Z" - are for experimental use and free for everyone to use. Have in mind - that someone else might have used the same identifier as you. All - other identifiers are either used or reserved for future use. - - The three character frame identifier is followed by a three byte size - descriptor, making a total header size of six bytes in every frame. - The size is calculated as framesize excluding frame identifier and - size descriptor (frame size - 6). - - There is no fixed order of the frames' appearance in the tag, although - it is desired that the frames are arranged in order of significance - concerning the recognition of the file. An example of such order: - UFI, MCI, TT2 ... - - A tag must contain at least one frame. A frame must be at least 1 byte - big, excluding the 6-byte header. - - If nothing else is said a string is represented as ISO-8859-1 - [ISO-8859-1] characters in the range $20 - $FF. All unicode strings - [UNICODE] use 16-bit unicode 2.0 (ISO/IEC 10646-1:1993, UCS-2). All - numeric strings are always encoded as ISO-8859-1. Terminated strings - are terminated with $00 if encoded with ISO-8859-1 and $00 00 if - encoded as unicode. If nothing else is said newline character is - forbidden. In ISO-8859-1 a new line is represented, when allowed, with - $0A only. Frames that allow different types of text encoding have a - text encoding description byte directly after the frame size. If - ISO-8859-1 is used this byte should be $00, if unicode is used it - should be $01. - - The three byte language field is used to describe the language of the - frame's content, according to ISO-639-2 [ISO-639-2]. - - All URLs [URL] may be relative, e.g. "picture.png", "../doc.txt". - - If a frame is longer than it should be, e.g. having more fields than - specified in this document, that indicates that additions to the - frame have been made in a later version of the ID3 standard. This - is reflected by the revision number in the header of the tag. - - -4. Declared ID3v2 frames - - The following frames are declared in this draft. - - 4.19 BUF Recommended buffer size - - 4.17 CNT Play counter - 4.11 COM Comments - 4.21 CRA Audio encryption - 4.20 CRM Encrypted meta frame - - 4.6 ETC Event timing codes - 4.13 EQU Equalization - - 4.16 GEO General encapsulated object - - 4.4 IPL Involved people list - - 4.22 LNK Linked information - - 4.5 MCI Music CD Identifier - 4.7 MLL MPEG location lookup table - - 4.15 PIC Attached picture - 4.18 POP Popularimeter - - 4.14 REV Reverb - 4.12 RVA Relative volume adjustment - - 4.10 SLT Synchronized lyric/text - 4.8 STC Synced tempo codes - - 4.2.1 TAL Album/Movie/Show title - 4.2.1 TBP BPM (Beats Per Minute) - 4.2.1 TCM Composer - 4.2.1 TCO Content type - 4.2.1 TCR Copyright message - 4.2.1 TDA Date - 4.2.1 TDY Playlist delay - 4.2.1 TEN Encoded by - 4.2.1 TFT File type - 4.2.1 TIM Time - 4.2.1 TKE Initial key - 4.2.1 TLA Language(s) - 4.2.1 TLE Length - 4.2.1 TMT Media type - 4.2.1 TOA Original artist(s)/performer(s) - 4.2.1 TOF Original filename - 4.2.1 TOL Original Lyricist(s)/text writer(s) - 4.2.1 TOR Original release year - 4.2.1 TOT Original album/Movie/Show title - 4.2.1 TP1 Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group - 4.2.1 TP2 Band/Orchestra/Accompaniment - 4.2.1 TP3 Conductor/Performer refinement - 4.2.1 TP4 Interpreted, remixed, or otherwise modified by - 4.2.1 TPA Part of a set - 4.2.1 TPB Publisher - 4.2.1 TRC ISRC (International Standard Recording Code) - 4.2.1 TRD Recording dates - 4.2.1 TRK Track number/Position in set - 4.2.1 TSI Size - 4.2.1 TSS Software/hardware and settings used for encoding - 4.2.1 TT1 Content group description - 4.2.1 TT2 Title/Songname/Content description - 4.2.1 TT3 Subtitle/Description refinement - 4.2.1 TXT Lyricist/text writer - 4.2.2 TXX User defined text information frame - 4.2.1 TYE Year - - 4.1 UFI Unique file identifier - 4.9 ULT Unsychronized lyric/text transcription - - 4.3.1 WAF Official audio file webpage - 4.3.1 WAR Official artist/performer webpage - 4.3.1 WAS Official audio source webpage - 4.3.1 WCM Commercial information - 4.3.1 WCP Copyright/Legal information - 4.3.1 WPB Publishers official webpage - 4.3.2 WXX User defined URL link frame - - -4.1. Unique file identifier - - This frame's purpose is to be able to identify the audio file in a - database that may contain more information relevant to the content. - Since standardisation of such a database is beyond this document, all - frames begin with a null-terminated string with a URL [URL] containing - an email address, or a link to a location where an email address can - be found, that belongs to the organisation responsible for this - specific database implementation. Questions regarding the database - should be sent to the indicated email address. The URL should not be - used for the actual database queries. If a $00 is found directly after - the 'Frame size' the whole frame should be ignored, and preferably be - removed. The 'Owner identifier' is then followed by the actual - identifier, which may be up to 64 bytes. There may be more than one - "UFI" frame in a tag, but only one with the same 'Owner identifier'. - - Unique file identifier "UFI" - Frame size $xx xx xx - Owner identifier <textstring> $00 - Identifier <up to 64 bytes binary data> - - -4.2. Text information frames - - The text information frames are the most important frames, containing - information like artist, album and more. There may only be one text - information frame of its kind in an tag. If the textstring is followed - by a termination ($00 (00)) all the following information should be - ignored and not be displayed. All the text information frames have the - following format: - - Text information identifier "T00" - "TZZ" , excluding "TXX", - described in 4.2.2. - Frame size $xx xx xx - Text encoding $xx - Information <textstring> - - -4.2.1. Text information frames - details - - TT1 - The 'Content group description' frame is used if the sound belongs to - a larger category of sounds/music. For example, classical music is - often sorted in different musical sections (e.g. "Piano Concerto", - "Weather - Hurricane"). - - TT2 - The 'Title/Songname/Content description' frame is the actual name of - the piece (e.g. "Adagio", "Hurricane Donna"). - - TT3 - The 'Subtitle/Description refinement' frame is used for information - directly related to the contents title (e.g. "Op. 16" or "Performed - live at wembley"). - - TP1 - The 'Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group' is - used for the main artist(s). They are seperated with the "/" - character. - - TP2 - The 'Band/Orchestra/Accompaniment' frame is used for additional - information about the performers in the recording. - - TP3 - The 'Conductor' frame is used for the name of the conductor. - - TP4 - The 'Interpreted, remixed, or otherwise modified by' frame contains - more information about the people behind a remix and similar - interpretations of another existing piece. - - TCM - The 'Composer(s)' frame is intended for the name of the composer(s). - They are seperated with the "/" character. - - TXT - The 'Lyricist(s)/text writer(s)' frame is intended for the writer(s) - of the text or lyrics in the recording. They are seperated with the - "/" character. - - TLA - The 'Language(s)' frame should contain the languages of the text or - lyrics in the audio file. The language is represented with three - characters according to ISO-639-2. If more than one language is used - in the text their language codes should follow according to their - usage. - - TCO - The content type, which previously (in ID3v1.1, see appendix A) was - stored as a one byte numeric value only, is now a numeric string. You - may use one or several of the types as ID3v1.1 did or, since the - category list would be impossible to maintain with accurate and up to - date categories, define your own. - References to the ID3v1 genres can be made by, as first byte, enter - "(" followed by a number from the genres list (section A.3.) and - ended with a ")" character. This is optionally followed by a - refinement, e.g. "(21)" or "(4)Eurodisco". Several references can be - made in the same frame, e.g. "(51)(39)". If the refinement should - begin with a "(" character it should be replaced with "((", e.g. "((I - can figure out any genre)" or "(55)((I think...)". The following new - content types is defined in ID3v2 and is implemented in the same way - as the numerig content types, e.g. "(RX)". - - RX Remix - CR Cover - - TAL - The 'Album/Movie/Show title' frame is intended for the title of the - recording(/source of sound) which the audio in the file is taken from. - - TPA - The 'Part of a set' frame is a numeric string that describes which - part of a set the audio came from. This frame is used if the source - described in the "TAL" frame is divided into several mediums, e.g. a - double CD. The value may be extended with a "/" character and a - numeric string containing the total number of parts in the set. E.g. - "1/2". - - TRK - The 'Track number/Position in set' frame is a numeric string - containing the order number of the audio-file on its original - recording. This may be extended with a "/" character and a numeric - string containing the total numer of tracks/elements on the original - recording. E.g. "4/9". - - TRC - The 'ISRC' frame should contian the International Standard Recording - Code [ISRC]. - - TYE - The 'Year' frame is a numeric string with a year of the recording. - This frames is always four characters long (until the year 10000). - - TDA - The 'Date' frame is a numeric string in the DDMM format containing - the date for the recording. This field is always four characters - long. - - TIM - The 'Time' frame is a numeric string in the HHMM format containing - the time for the recording. This field is always four characters - long. - - TRD - The 'Recording dates' frame is a intended to be used as complement to - the "TYE", "TDA" and "TIM" frames. E.g. "4th-7th June, 12th June" in - combination with the "TYE" frame. - - TMT - The 'Media type' frame describes from which media the sound - originated. This may be a textstring or a reference to the predefined - media types found in the list below. References are made within "(" - and ")" and are optionally followed by a text refinement, e.g. "(MC) - with four channels". If a text refinement should begin with a "(" - character it should be replaced with "((" in the same way as in the - "TCO" frame. Predefined refinements is appended after the media type, - e.g. "(CD/S)" or "(VID/PAL/VHS)". - - DIG Other digital media - /A Analog transfer from media - - ANA Other analog media - /WAC Wax cylinder - /8CA 8-track tape cassette - - CD CD - /A Analog transfer from media - /DD DDD - /AD ADD - /AA AAD - - LD Laserdisc - /A Analog transfer from media - - TT Turntable records - /33 33.33 rpm - /45 45 rpm - /71 71.29 rpm - /76 76.59 rpm - /78 78.26 rpm - /80 80 rpm - - MD MiniDisc - /A Analog transfer from media - - DAT DAT - /A Analog transfer from media - /1 standard, 48 kHz/16 bits, linear - /2 mode 2, 32 kHz/16 bits, linear - /3 mode 3, 32 kHz/12 bits, nonlinear, low speed - /4 mode 4, 32 kHz/12 bits, 4 channels - /5 mode 5, 44.1 kHz/16 bits, linear - /6 mode 6, 44.1 kHz/16 bits, 'wide track' play - - DCC DCC - /A Analog transfer from media - - DVD DVD - /A Analog transfer from media - - TV Television - /PAL PAL - /NTSC NTSC - /SECAM SECAM - - VID Video - /PAL PAL - /NTSC NTSC - /SECAM SECAM - /VHS VHS - /SVHS S-VHS - /BETA BETAMAX - - RAD Radio - /FM FM - /AM AM - /LW LW - /MW MW - - TEL Telephone - /I ISDN - - MC MC (normal cassette) - /4 4.75 cm/s (normal speed for a two sided cassette) - /9 9.5 cm/s - /I Type I cassette (ferric/normal) - /II Type II cassette (chrome) - /III Type III cassette (ferric chrome) - /IV Type IV cassette (metal) - - REE Reel - /9 9.5 cm/s - /19 19 cm/s - /38 38 cm/s - /76 76 cm/s - /I Type I cassette (ferric/normal) - /II Type II cassette (chrome) - /III Type III cassette (ferric chrome) - /IV Type IV cassette (metal) - - TFT - The 'File type' frame indicates which type of audio this tag defines. - The following type and refinements are defined: - - MPG MPEG Audio - /1 MPEG 2 layer I - /2 MPEG 2 layer II - /3 MPEG 2 layer III - /2.5 MPEG 2.5 - /AAC Advanced audio compression - - but other types may be used, not for these types though. This is used - in a similar way to the predefined types in the "TMT" frame, but - without parenthesis. If this frame is not present audio type is - assumed to be "MPG". - - TBP - BPM is short for beats per minute, and is easily computed by - dividing the number of beats in a musical piece with its length. To - get a more accurate result, do the BPM calculation on the main-part - only. To acquire best result measure the time between each beat and - calculate individual BPM for each beat and use the median value as - result. BPM is an integer and represented as a numerical string. - - TCR - The 'Copyright message' frame, which must begin with a year and a - space character (making five characters), is intended for the - copyright holder of the original sound, not the audio file itself. The - absence of this frame means only that the copyright information is - unavailable or has been removed, and must not be interpreted to mean - that the sound is public domain. Every time this field is displayed - the field must be preceded with "Copyright " (C) " ", where (C) is one - character showing a C in a circle. - - TPB - The 'Publisher' frame simply contains the name of the label or - publisher. - - TEN - The 'Encoded by' frame contains the name of the person or - organisation that encoded the audio file. This field may contain a - copyright message, if the audio file also is copyrighted by the - encoder. - - TSS - The 'Software/hardware and settings used for encoding' frame - includes the used audio encoder and its settings when the file was - encoded. Hardware refers to hardware encoders, not the computer on - which a program was run. - - TOF - The 'Original filename' frame contains the preferred filename for the - file, since some media doesn't allow the desired length of the - filename. The filename is case sensitive and includes its suffix. - - TLE - The 'Length' frame contains the length of the audiofile in - milliseconds, represented as a numeric string. - - TSI - The 'Size' frame contains the size of the audiofile in bytes - excluding the tag, represented as a numeric string. - - TDY - The 'Playlist delay' defines the numbers of milliseconds of silence - between every song in a playlist. The player should use the "ETC" - frame, if present, to skip initial silence and silence at the end of - the audio to match the 'Playlist delay' time. The time is represented - as a numeric string. - - TKE - The 'Initial key' frame contains the musical key in which the sound - starts. It is represented as a string with a maximum length of three - characters. The ground keys are represented with "A","B","C","D","E", - "F" and "G" and halfkeys represented with "b" and "#". Minor is - represented as "m". Example "Cbm". Off key is represented with an "o" - only. - - TOT - The 'Original album/Movie/Show title' frame is intended for the title - of the original recording(/source of sound), if for example the music - in the file should be a cover of a previously released song. - - TOA - The 'Original artist(s)/performer(s)' frame is intended for the - performer(s) of the original recording, if for example the music in - the file should be a cover of a previously released song. The - performers are seperated with the "/" character. - - TOL - The 'Original Lyricist(s)/text writer(s)' frame is intended for the - text writer(s) of the original recording, if for example the music in - the file should be a cover of a previously released song. The text - writers are seperated with the "/" character. - - TOR - The 'Original release year' frame is intended for the year when the - original recording, if for example the music in the file should be a - cover of a previously released song, was released. The field is - formatted as in the "TDY" frame. - - -4.2.2. User defined text information frame - - This frame is intended for one-string text information concerning the - audiofile in a similar way to the other "T"xx frames. The frame body - consists of a description of the string, represented as a terminated - string, followed by the actual string. There may be more than one - "TXX" frame in each tag, but only one with the same description. - - User defined... "TXX" - Frame size $xx xx xx - Text encoding $xx - Description <textstring> $00 (00) - Value <textstring> - - -4.3. URL link frames - - With these frames dynamic data such as webpages with touring - information, price information or plain ordinary news can be added to - the tag. There may only be one URL [URL] link frame of its kind in an - tag, except when stated otherwise in the frame description. If the - textstring is followed by a termination ($00 (00)) all the following - information should be ignored and not be displayed. All URL link - frames have the following format: - - URL link frame "W00" - "WZZ" , excluding "WXX" - (described in 4.3.2.) - Frame size $xx xx xx - URL <textstring> - - -4.3.1. URL link frames - details - - WAF - The 'Official audio file webpage' frame is a URL pointing at a file - specific webpage. - - WAR - The 'Official artist/performer webpage' frame is a URL pointing at - the artists official webpage. There may be more than one "WAR" frame - in a tag if the audio contains more than one performer. - - WAS - The 'Official audio source webpage' frame is a URL pointing at the - official webpage for the source of the audio file, e.g. a movie. - - WCM - The 'Commercial information' frame is a URL pointing at a webpage - with information such as where the album can be bought. There may be - more than one "WCM" frame in a tag. - - WCP - The 'Copyright/Legal information' frame is a URL pointing at a - webpage where the terms of use and ownership of the file is described. - - WPB - The 'Publishers official webpage' frame is a URL pointing at the - official wepage for the publisher. - - -4.3.2. User defined URL link frame - - This frame is intended for URL [URL] links concerning the audiofile in - a similar way to the other "W"xx frames. The frame body consists of a - description of the string, represented as a terminated string, - followed by the actual URL. The URL is always encoded with ISO-8859-1 - [ISO-8859-1]. There may be more than one "WXX" frame in each tag, but - only one with the same description. - - User defined... "WXX" - Frame size $xx xx xx - Text encoding $xx - Description <textstring> $00 (00) - URL <textstring> - - -4.4. Involved people list - - Since there might be a lot of people contributing to an audio file in - various ways, such as musicians and technicians, the 'Text - information frames' are often insufficient to list everyone involved - in a project. The 'Involved people list' is a frame containing the - names of those involved, and how they were involved. The body simply - contains a terminated string with the involvement directly followed by - a terminated string with the involvee followed by a new involvement - and so on. There may only be one "IPL" frame in each tag. - - Involved people list "IPL" - Frame size $xx xx xx - Text encoding $xx - People list strings <textstrings> - - -4.5. Music CD Identifier - - This frame is intended for music that comes from a CD, so that the CD - can be identified in databases such as the CDDB [CDDB]. The frame - consists of a binary dump of the Table Of Contents, TOC, from the CD, - which is a header of 4 bytes and then 8 bytes/track on the CD making a - maximum of 804 bytes. This frame requires a present and valid "TRK" - frame. There may only be one "MCI" frame in each tag. - - Music CD identifier "MCI" - Frame size $xx xx xx - CD TOC <binary data> - - -4.6. Event timing codes - - This frame allows synchronisation with key events in a song or sound. - The head is: - - Event timing codes "ETC" - Frame size $xx xx xx - Time stamp format $xx - - Where time stamp format is: - - $01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit - $02 Absolute time, 32 bit sized, using milliseconds as unit - - Abolute time means that every stamp contains the time from the - beginning of the file. - - Followed by a list of key events in the following format: - - Type of event $xx - Time stamp $xx (xx ...) - - The 'Time stamp' is set to zero if directly at the beginning of the - sound or after the previous event. All events should be sorted in - chronological order. The type of event is as follows: - - $00 padding (has no meaning) - $01 end of initial silence - $02 intro start - $03 mainpart start - $04 outro start - $05 outro end - $06 verse begins - $07 refrain begins - $08 interlude - $09 theme start - $0A variation - $0B key change - $0C time change - $0D unwanted noise (Snap, Crackle & Pop) - - $0E-$DF reserved for future use - - $E0-$EF not predefined sync 0-F - - $F0-$FC reserved for future use - - $FD audio end (start of silence) - $FE audio file ends - $FF one more byte of events follows (all the following bytes with - the value $FF have the same function) - - The 'Not predefined sync's ($E0-EF) are for user events. You might - want to synchronise your music to something, like setting of an - explosion on-stage, turning on your screensaver etc. - - There may only be one "ETC" frame in each tag. - - -4.7. MPEG location lookup table - - To increase performance and accuracy of jumps within a MPEG [MPEG] - audio file, frames with timecodes in different locations in the file - might be useful. The ID3 frame includes references that the software - can use to calculate positions in the file. After the frame header is - a descriptor of how much the 'frame counter' should increase for every - reference. If this value is two then the first reference points out - the second frame, the 2nd reference the 4th frame, the 3rd reference - the 6th frame etc. In a similar way the 'bytes between reference' and - 'milliseconds between reference' points out bytes and milliseconds - respectively. - - Each reference consists of two parts; a certain number of bits, as - defined in 'bits for bytes deviation', that describes the difference - between what is said in 'bytes between reference' and the reality and - a certain number of bits, as defined in 'bits for milliseconds - deviation', that describes the difference between what is said in - 'milliseconds between reference' and the reality. The number of bits - in every reference, i.e. 'bits for bytes deviation'+'bits for - milliseconds deviation', must be a multiple of four. There may only be - one "MLL" frame in each tag. - - Location lookup table "MLL" - ID3 frame size $xx xx xx - MPEG frames between reference $xx xx - Bytes between reference $xx xx xx - Milliseconds between reference $xx xx xx - Bits for bytes deviation $xx - Bits for milliseconds dev. $xx - - Then for every reference the following data is included; - - Deviation in bytes %xxx.... - Deviation in milliseconds %xxx.... - - -4.8. Synced tempo codes - - For a more accurate description of the tempo of a musical piece this - frame might be used. After the header follows one byte describing - which time stamp format should be used. Then follows one or more tempo - codes. Each tempo code consists of one tempo part and one time part. - The tempo is in BPM described with one or two bytes. If the first byte - has the value $FF, one more byte follows, which is added to the first - giving a range from 2 - 510 BPM, since $00 and $01 is reserved. $00 is - used to describe a beat-free time period, which is not the same as a - music-free time period. $01 is used to indicate one single beat-stroke - followed by a beat-free period. - - The tempo descriptor is followed by a time stamp. Every time the tempo - in the music changes, a tempo descriptor may indicate this for the - player. All tempo descriptors should be sorted in chronological order. - The first beat-stroke in a time-period is at the same time as the beat - description occurs. There may only be one "STC" frame in each tag. - - Synced tempo codes "STC" - Frame size $xx xx xx - Time stamp format $xx - Tempo data <binary data> - - Where time stamp format is: - - $01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit - $02 Absolute time, 32 bit sized, using milliseconds as unit - - Abolute time means that every stamp contains the time from the - beginning of the file. - - -4.9. Unsychronised lyrics/text transcription - - This frame contains the lyrics of the song or a text transcription of - other vocal activities. The head includes an encoding descriptor and - a content descriptor. The body consists of the actual text. The - 'Content descriptor' is a terminated string. If no descriptor is - entered, 'Content descriptor' is $00 (00) only. Newline characters - are allowed in the text. Maximum length for the descriptor is 64 - bytes. There may be more than one lyrics/text frame in each tag, but - only one with the same language and content descriptor. - - Unsynced lyrics/text "ULT" - Frame size $xx xx xx - Text encoding $xx - Language $xx xx xx - Content descriptor <textstring> $00 (00) - Lyrics/text <textstring> - - -4.10. Synchronised lyrics/text - - This is another way of incorporating the words, said or sung lyrics, - in the audio file as text, this time, however, in sync with the audio. - It might also be used to describing events e.g. occurring on a stage - or on the screen in sync with the audio. The header includes a content - descriptor, represented with as terminated textstring. If no - descriptor is entered, 'Content descriptor' is $00 (00) only. - - Synced lyrics/text "SLT" - Frame size $xx xx xx - Text encoding $xx - Language $xx xx xx - Time stamp format $xx - Content type $xx - Content descriptor <textstring> $00 (00) - - - Encoding: $00 ISO-8859-1 [ISO-8859-1] character set is used => $00 - is sync identifier. - $01 Unicode [UNICODE] character set is used => $00 00 is - sync identifier. - - Content type: $00 is other - $01 is lyrics - $02 is text transcription - $03 is movement/part name (e.g. "Adagio") - $04 is events (e.g. "Don Quijote enters the stage") - $05 is chord (e.g. "Bb F Fsus") - - Time stamp format is: - - $01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit - $02 Absolute time, 32 bit sized, using milliseconds as unit - - Abolute time means that every stamp contains the time from the - beginning of the file. - - The text that follows the frame header differs from that of the - unsynchronised lyrics/text transcription in one major way. Each - syllable (or whatever size of text is considered to be convenient by - the encoder) is a null terminated string followed by a time stamp - denoting where in the sound file it belongs. Each sync thus has the - following structure: - - Terminated text to be synced (typically a syllable) - Sync identifier (terminator to above string) $00 (00) - Time stamp $xx (xx ...) - - The 'time stamp' is set to zero or the whole sync is omitted if - located directly at the beginning of the sound. All time stamps should - be sorted in chronological order. The sync can be considered as a - validator of the subsequent string. - - Newline characters are allowed in all "SLT" frames and should be used - after every entry (name, event etc.) in a frame with the content type - $03 - $04. - - A few considerations regarding whitespace characters: Whitespace - separating words should mark the beginning of a new word, thus - occurring in front of the first syllable of a new word. This is also - valid for new line characters. A syllable followed by a comma should - not be broken apart with a sync (both the syllable and the comma - should be before the sync). - - An example: The "ULT" passage - - "Strangers in the night" $0A "Exchanging glances" - - would be "SLT" encoded as: - - "Strang" $00 xx xx "ers" $00 xx xx " in" $00 xx xx " the" $00 xx xx - " night" $00 xx xx 0A "Ex" $00 xx xx "chang" $00 xx xx "ing" $00 xx - xx "glan" $00 xx xx "ces" $00 xx xx - - There may be more than one "SLT" frame in each tag, but only one with - the same language and content descriptor. - - -4.11. Comments - - This frame replaces the old 30-character comment field in ID3v1. It - consists of a frame head followed by encoding, language and content - descriptors and is ended with the actual comment as a text string. - Newline characters are allowed in the comment text string. There may - be more than one comment frame in each tag, but only one with the same - language and content descriptor. - - Comment "COM" - Frame size $xx xx xx - Text encoding $xx - Language $xx xx xx - Short content description <textstring> $00 (00) - The actual text <textstring> - - -4.12. Relative volume adjustment - - This is a more subjective function than the previous ones. It allows - the user to say how much he wants to increase/decrease the volume on - each channel while the file is played. The purpose is to be able to - align all files to a reference volume, so that you don't have to - change the volume constantly. This frame may also be used to balance - adjust the audio. If the volume peak levels are known then this could - be described with the 'Peak volume right' and 'Peak volume left' - field. If Peakvolume is not known these fields could be left zeroed - or completely omitted. There may only be one "RVA" frame in each - tag. - - Relative volume adjustment "RVA" - Frame size $xx xx xx - Increment/decrement %000000xx - Bits used for volume descr. $xx - Relative volume change, right $xx xx (xx ...) - Relative volume change, left $xx xx (xx ...) - Peak volume right $xx xx (xx ...) - Peak volume left $xx xx (xx ...) - - In the increment/decrement field bit 0 is used to indicate the right - channel and bit 1 is used to indicate the left channel. 1 is - increment and 0 is decrement. - - The 'bits used for volume description' field is normally $10 (16 bits) - for MPEG 2 layer I, II and III [MPEG] and MPEG 2.5. This value may not - be $00. The volume is always represented with whole bytes, padded in - the beginning (highest bits) when 'bits used for volume description' - is not a multiple of eight. - - -4.13. Equalisation - - This is another subjective, alignment frame. It allows the user to - predefine an equalisation curve within the audio file. There may only - be one "EQU" frame in each tag. - - Equalisation "EQU" - Frame size $xx xx xx - Adjustment bits $xx - - The 'adjustment bits' field defines the number of bits used for - representation of the adjustment. This is normally $10 (16 bits) for - MPEG 2 layer I, II and III [MPEG] and MPEG 2.5. This value may not be - $00. - - This is followed by 2 bytes + ('adjustment bits' rounded up to the - nearest byte) for every equalisation band in the following format, - giving a frequency range of 0 - 32767Hz: - - Increment/decrement %x (MSB of the Frequency) - Frequency (lower 15 bits) - Adjustment $xx (xx ...) - - The increment/decrement bit is 1 for increment and 0 for decrement. - The equalisation bands should be ordered increasingly with reference - to frequency. All frequencies don't have to be declared. Adjustments - with the value $00 should be omitted. A frequency should only be - described once in the frame. - - -4.14. Reverb - - Yet another subjective one. You may here adjust echoes of different - kinds. Reverb left/right is the delay between every bounce in ms. - Reverb bounces left/right is the number of bounces that should be - made. $FF equals an infinite number of bounces. Feedback is the amount - of volume that should be returned to the next echo bounce. $00 is 0%, - $FF is 100%. If this value were $7F, there would be 50% volume - reduction on the first bounce, yet 50% on the second and so on. Left - to left means the sound from the left bounce to be played in the left - speaker, while left to right means sound from the left bounce to be - played in the right speaker. - - 'Premix left to right' is the amount of left sound to be mixed in the - right before any reverb is applied, where $00 id 0% and $FF is 100%. - 'Premix right to left' does the same thing, but right to left. Setting - both premix to $FF would result in a mono output (if the reverb is - applied symmetric). There may only be one "REV" frame in each tag. - - Reverb settings "REV" - Frame size $00 00 0C - Reverb left (ms) $xx xx - Reverb right (ms) $xx xx - Reverb bounces, left $xx - Reverb bounces, right $xx - Reverb feedback, left to left $xx - Reverb feedback, left to right $xx - Reverb feedback, right to right $xx - Reverb feedback, right to left $xx - Premix left to right $xx - Premix right to left $xx - - -4.15. Attached picture - - This frame contains a picture directly related to the audio file. - Image format is preferably "PNG" [PNG] or "JPG" [JFIF]. Description - is a short description of the picture, represented as a terminated - textstring. The description has a maximum length of 64 characters, - but may be empty. There may be several pictures attached to one file, - each in their individual "PIC" frame, but only one with the same - content descriptor. There may only be one picture with the picture - type declared as picture type $01 and $02 respectively. There is a - possibility to put only a link to the image file by using the 'image - format' "-->" and having a complete URL [URL] instead of picture data. - The use of linked files should however be used restrictively since - there is the risk of separation of files. - - Attached picture "PIC" - Frame size $xx xx xx - Text encoding $xx - Image format $xx xx xx - Picture type $xx - Description <textstring> $00 (00) - Picture data <binary data> - - - Picture type: $00 Other - $01 32x32 pixels 'file icon' (PNG only) - $02 Other file icon - $03 Cover (front) - $04 Cover (back) - $05 Leaflet page - $06 Media (e.g. lable side of CD) - $07 Lead artist/lead performer/soloist - $08 Artist/performer - $09 Conductor - $0A Band/Orchestra - $0B Composer - $0C Lyricist/text writer - $0D Recording Location - $0E During recording - $0F During performance - $10 Movie/video screen capture - $11 A bright coloured fish - $12 Illustration - $13 Band/artist logotype - $14 Publisher/Studio logotype - - -4.16. General encapsulated object - - In this frame any type of file can be encapsulated. After the header, - 'Frame size' and 'Encoding' follows 'MIME type' [MIME] and 'Filename' - for the encapsulated object, both represented as terminated strings - encoded with ISO 8859-1 [ISO-8859-1]. The filename is case sensitive. - Then follows a content description as terminated string, encoded as - 'Encoding'. The last thing in the frame is the actual object. The - first two strings may be omitted, leaving only their terminations. - MIME type is always an ISO-8859-1 text string. There may be more than - one "GEO" frame in each tag, but only one with the same content - descriptor. - - General encapsulated object "GEO" - Frame size $xx xx xx - Text encoding $xx - MIME type <textstring> $00 - Filename <textstring> $00 (00) - Content description <textstring> $00 (00) - Encapsulated object <binary data> - - -4.17. Play counter - - This is simply a counter of the number of times a file has been - played. The value is increased by one every time the file begins to - play. There may only be one "CNT" frame in each tag. When the counter - reaches all one's, one byte is inserted in front of the counter thus - making the counter eight bits bigger. The counter must be at least - 32-bits long to begin with. - - Play counter "CNT" - Frame size $xx xx xx - Counter $xx xx xx xx (xx ...) - - -4.18. Popularimeter - - The purpose of this frame is to specify how good an audio file is. - Many interesting applications could be found to this frame such as a - playlist that features better audiofiles more often than others or it - could be used to profile a persons taste and find other 'good' files - by comparing people's profiles. The frame is very simple. It contains - the email address to the user, one rating byte and a four byte play - counter, intended to be increased with one for every time the file is - played. The email is a terminated string. The rating is 1-255 where - 1 is worst and 255 is best. 0 is unknown. If no personal counter is - wanted it may be omitted. When the counter reaches all one's, one - byte is inserted in front of the counter thus making the counter - eight bits bigger in the same away as the play counter ("CNT"). - There may be more than one "POP" frame in each tag, but only one with - the same email address. - - Popularimeter "POP" - Frame size $xx xx xx - Email to user <textstring> $00 - Rating $xx - Counter $xx xx xx xx (xx ...) - - -4.19. Recommended buffer size - - Sometimes the server from which a audio file is streamed is aware of - transmission or coding problems resulting in interruptions in the - audio stream. In these cases, the size of the buffer can be - recommended by the server using this frame. If the 'embedded info - flag' is true (1) then this indicates that an ID3 tag with the - maximum size described in 'Buffer size' may occur in the audiostream. - In such case the tag should reside between two MPEG [MPEG] frames, if - the audio is MPEG encoded. If the position of the next tag is known, - 'offset to next tag' may be used. The offset is calculated from the - end of tag in which this frame resides to the first byte of the header - in the next. This field may be omitted. Embedded tags is currently not - recommended since this could render unpredictable behaviour from - present software/hardware. The 'Buffer size' should be kept to a - minimum. There may only be one "BUF" frame in each tag. - - Recommended buffer size "BUF" - Frame size $xx xx xx - Buffer size $xx xx xx - Embedded info flag %0000000x - Offset to next tag $xx xx xx xx - - -4.20. Encrypted meta frame - - This frame contains one or more encrypted frames. This enables - protection of copyrighted information such as pictures and text, that - people might want to pay extra for. Since standardisation of such an - encryption scheme is beyond this document, all "CRM" frames begin with - a terminated string with a URL [URL] containing an email address, or a - link to a location where an email adress can be found, that belongs to - the organisation responsible for this specific encrypted meta frame. - - Questions regarding the encrypted frame should be sent to the - indicated email address. If a $00 is found directly after the 'Frame - size', the whole frame should be ignored, and preferably be removed. - The 'Owner identifier' is then followed by a short content description - and explanation as to why it's encrypted. After the - 'content/explanation' description, the actual encrypted block follows. - - When an ID3v2 decoder encounters a "CRM" frame, it should send the - datablock to the 'plugin' with the corresponding 'owner identifier' - and expect to receive either a datablock with one or several ID3v2 - frames after each other or an error. There may be more than one "CRM" - frames in a tag, but only one with the same 'owner identifier'. - - Encrypted meta frame "CRM" - Frame size $xx xx xx - Owner identifier <textstring> $00 (00) - Content/explanation <textstring> $00 (00) - Encrypted datablock <binary data> - - -4.21. Audio encryption - - This frame indicates if the actual audio stream is encrypted, and by - whom. Since standardisation of such encrypion scheme is beyond this - document, all "CRA" frames begin with a terminated string with a - URL containing an email address, or a link to a location where an - email address can be found, that belongs to the organisation - responsible for this specific encrypted audio file. Questions - regarding the encrypted audio should be sent to the email address - specified. If a $00 is found directly after the 'Frame size' and the - audiofile indeed is encrypted, the whole file may be considered - useless. - - After the 'Owner identifier', a pointer to an unencrypted part of the - audio can be specified. The 'Preview start' and 'Preview length' is - described in frames. If no part is unencrypted, these fields should be - left zeroed. After the 'preview length' field follows optionally a - datablock required for decryption of the audio. There may be more than - one "CRA" frames in a tag, but only one with the same 'Owner - identifier'. - - Audio encryption "CRA" - Frame size $xx xx xx - Owner identifier <textstring> $00 (00) - Preview start $xx xx - Preview length $xx xx - Encryption info <binary data> - - -4.22. Linked information - - To keep space waste as low as possible this frame may be used to link - information from another ID3v2 tag that might reside in another audio - file or alone in a binary file. It is recommended that this method is - only used when the files are stored on a CD-ROM or other circumstances - when the risk of file seperation is low. The frame contains a frame - identifier, which is the frame that should be linked into this tag, a - URL [URL] field, where a reference to the file where the frame is - given, and additional ID data, if needed. Data should be retrieved - from the first tag found in the file to which this link points. There - may be more than one "LNK" frame in a tag, but only one with the same - contents. A linked frame is to be considered as part of the tag and - has the same restrictions as if it was a physical part of the tag - (i.e. only one "REV" frame allowed, whether it's linked or not). - - Linked information "LNK" - Frame size $xx xx xx - Frame identifier $xx xx xx - URL <textstring> $00 (00) - Additional ID data <textstring(s)> - - Frames that may be linked and need no additional data are "IPL", - "MCI", "ETC", "LLT", "STC", "RVA", "EQU", "REV", "BUF", the text - information frames and the URL link frames. - - The "TXX", "PIC", "GEO", "CRM" and "CRA" frames may be linked with the - content descriptor as additional ID data. - - The "COM", "SLT" and "ULT" frames may be linked with three bytes of - language descriptor directly followed by a content descriptor as - additional ID data. - - -5. The 'unsynchronisation scheme' - - The only purpose of the 'unsychronisation scheme' is to make the ID3v2 - tag as compatible as possible with existing software. There is no use - in 'unsynchronising' tags if the file is only to be processed by new - software. Unsynchronisation may only be made with MPEG 2 layer I, II - and III and MPEG 2.5 files. - - Whenever a false synchronisation is found within the tag, one zeroed - byte is inserted after the first false synchronisation byte. The - format of a correct sync that should be altered by ID3 encoders is as - follows: - - %11111111 111xxxxx - - And should be replaced with: - - %11111111 00000000 111xxxxx - - This has the side effect that all $FF 00 combinations have to be - altered, so they won't be affected by the decoding process. Therefore - all the $FF 00 combinations have to be replaced with the $FF 00 00 - combination during the unsynchonisation. - - To indicate usage of the unsynchronisation, the first bit in 'ID3 - flags' should be set. This bit should only be set if the tag - contained a, now corrected, false synchronisation. The bit should - only be clear if the tag does not contain any false synchronisations. - - Do bear in mind, that if a compression scheme is used by the encoder, - the unsyncronisation scheme should be applied *afterwards*. When - decoding a compressed, 'unsyncronised' file, the 'unsyncronisation - scheme' should be parsed first, compression afterwards. - - -6. Copyright - - Copyright (C) Martin Nilsson 1998. All Rights Reserved. - - This document and translations of it may be copied and furnished to - others, and derivative works that comment on or otherwise explain it - or assist in its implementation may be prepared, copied, published - and distributed, in whole or in part, without restriction of any - kind, provided that a reference to this document is included on all - such copies and derivative works. However, this document itself may - not be modified in any way and reissued as the original document. - - The limited permissions granted above are perpetual and will not be - revoked. - - This document and the information contained herein is provided on an - "AS IS" basis and THE AUTHORS DISCLAIMS ALL WARRANTIES, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE - INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED - WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - - -7. References - - [CDDB] Compact Disc Data Base - - <url:http://www.cddb.com> - - [ISO-639-2] ISO/FDIS 639-2. - Codes for the representation of names of languages, Part 2: Alpha-3 - code. Technical committee / subcommittee: TC 37 / SC 2 - - [ISO-8859-1] ISO/IEC DIS 8859-1. - 8-bit single-byte coded graphic character sets, Part 1: Latin - alphabet No. 1. Technical committee / subcommittee: JTC 1 / SC 2 - - [ISRC] ISO 3901:1986 - International Standard Recording Code (ISRC). - Technical committee / subcommittee: TC 46 / SC 9 - - [JFIF] JPEG File Interchange Format, version 1.02 - - <url:http://www.w3.org/Graphics/JPEG/jfif.txt> - - [MIME] Freed, N. and N. Borenstein, "Multipurpose Internet Mail - Extensions (MIME) Part One: Format of Internet Message Bodies", - RFC 2045, November 1996. - - <url:ftp://ftp.isi.edu/in-notes/rfc2045.txt> - - [MPEG] ISO/IEC 11172-3:1993. - Coding of moving pictures and associated audio for digital storage - media at up to about 1,5 Mbit/s, Part 3: Audio. - Technical committee / subcommittee: JTC 1 / SC 29 - and - ISO/IEC 13818-3:1995 - Generic coding of moving pictures and associated audio information, - Part 3: Audio. - Technical committee / subcommittee: JTC 1 / SC 29 - and - ISO/IEC DIS 13818-3 - Generic coding of moving pictures and associated audio information, - Part 3: Audio (Revision of ISO/IEC 13818-3:1995) - - - [PNG] Portable Network Graphics, version 1.0 - - <url:http://www.w3.org/TR/REC-png-multi.html> - - [UNICODE] ISO/IEC 10646-1:1993. - Universal Multiple-Octet Coded Character Set (UCS), Part 1: - Architecture and Basic Multilingual Plane. Technical committee - / subcommittee: JTC 1 / SC 2 - - <url:http://www.unicode.org> - - [URL] T. Berners-Lee, L. Masinter & M. McCahill, "Uniform Resource - Locators (URL).", RFC 1738, December 1994. - - <url:ftp://ftp.isi.edu/in-notes/rfc1738.txt> - - -8. Appendix - - -A. Appendix A - ID3-Tag Specification V1.1 - - ID3-Tag Specification V1.1 (12 dec 1997) by Michael Mutschler - <amiga2@info2.rus.uni-stuttgart.de>, edited for space and clarity - reasons. - - -A.1. Overview - - The ID3-Tag is an information field for MPEG Layer 3 audio files. - Since a standalone MP3 doesn't provide a method of storing other - information than those directly needed for replay reasons, the - ID3-tag was invented by Eric Kemp in 1996. - - A revision from ID3v1 to ID3v1.1 was made by Michael Mutschler to - support track number information is described in A.4. - - -A.2. ID3v1 Implementation - - The Information is stored in the last 128 bytes of an MP3. The Tag - has got the following fields, and the offsets given here, are from - 0-127. - - Field Length Offsets - Tag 3 0-2 - Songname 30 3-32 - Artist 30 33-62 - Album 30 63-92 - Year 4 93-96 - Comment 30 97-126 - Genre 1 127 - - - The string-fields contain ASCII-data, coded in ISO-Latin 1 codepage. - Strings which are smaller than the field length are padded with zero- - bytes. - - Tag: The tag is valid if this field contains the string "TAG". This - has to be uppercase! - - Songname: This field contains the title of the MP3 (string as - above). - - Artist: This field contains the artist of the MP3 (string as above). - - Album: this field contains the album where the MP3 comes from - (string as above). - - Year: this field contains the year when this song has originally - been released (string as above). - - Comment: this field contains a comment for the MP3 (string as - above). Revision to this field has been made in ID3v1.1. See - A.4. - - Genre: this byte contains the offset of a genre in a predefined - list the byte is treated as an unsigned byte. The offset is - starting from 0. See A.3. - - -A.3. Genre List - - The following genres is defined in ID3v1 - - 0.Blues - 1.Classic Rock - 2.Country - 3.Dance - 4.Disco - 5.Funk - 6.Grunge - 7.Hip-Hop - 8.Jazz - 9.Metal - 10.New Age - 11.Oldies - 12.Other - 13.Pop - 14.R&B - 15.Rap - 16.Reggae - 17.Rock - 18.Techno - 19.Industrial - 20.Alternative - 21.Ska - 22.Death Metal - 23.Pranks - 24.Soundtrack - 25.Euro-Techno - 26.Ambient - 27.Trip-Hop - 28.Vocal - 29.Jazz+Funk - 30.Fusion - 31.Trance - 32.Classical - 33.Instrumental - 34.Acid - 35.House - 36.Game - 37.Sound Clip - 38.Gospel - 39.Noise - 40.AlternRock - 41.Bass - 42.Soul - 43.Punk - 44.Space - 45.Meditative - 46.Instrumental Pop - 47.Instrumental Rock - 48.Ethnic - 49.Gothic - 50.Darkwave - 51.Techno-Industrial - 52.Electronic - 53.Pop-Folk - 54.Eurodance - 55.Dream - 56.Southern Rock - 57.Comedy - 58.Cult - 59.Gangsta - 60.Top 40 - 61.Christian Rap - 62.Pop/Funk - 63.Jungle - 64.Native American - 65.Cabaret - 66.New Wave - 67.Psychadelic - 68.Rave - 69.Showtunes - 70.Trailer - 71.Lo-Fi - 72.Tribal - 73.Acid Punk - 74.Acid Jazz - 75.Polka - 76.Retro - 77.Musical - 78.Rock & Roll - 79.Hard Rock - - The following genres are Winamp extensions - - 80.Folk - 81.Folk-Rock - 82.National Folk - 83.Swing - 84.Fast Fusion - 85.Bebob - 86.Latin - 87.Revival - 88.Celtic - 89.Bluegrass - 90.Avantgarde - 91.Gothic Rock - 92.Progressive Rock - 93.Psychedelic Rock - 94.Symphonic Rock - 95.Slow Rock - 96.Big Band - 97.Chorus - 98.Easy Listening - 99.Acoustic - 100.Humour - 101.Speech - 102.Chanson - 103.Opera - 104.Chamber Music - 105.Sonata - 106.Symphony - 107.Booty Bass - 108.Primus - 109.Porn Groove - 110.Satire - 111.Slow Jam - 112.Club - 113.Tango - 114.Samba - 115.Folklore - 116.Ballad - 117.Power Ballad - 118.Rhythmic Soul - 119.Freestyle - 120.Duet - 121.Punk Rock - 122.Drum Solo - 123.A capella - 124.Euro-House - 125.Dance Hall - - -A.4. Track addition - ID3v1.1 - - In ID3v1.1, Michael Mutschler revised the specification of the - comment field in order to implement the track number. The new format - of the comment field is a 28 character string followed by a mandatory - null ($00) character and the original album tracknumber stored as an - unsigned byte-size integer. In such cases where the 29th byte is not - the null character or when the 30th is a null character, the - tracknumber is to be considered undefined. - - -9. Author's Address - - Martin Nilsson - Rydsvägen 246 C. 30 - S-584 34 Linköping - Sweden - - Email: nilsson@id3.org - - Co-authors: - - Johan Sundström Email: johan@id3.org - - diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2.3.0.txt b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2.3.0.txt deleted file mode 100644 index b4ed763ee10..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2.3.0.txt +++ /dev/null @@ -1,2022 +0,0 @@ -Informal standard M. Nilsson -Document: id3v2.3.0.txt 3rd February 1999 - - - ID3 tag version 2.3.0 - -Status of this document - - This document is an informal standard and replaces the ID3v2.2.0 - standard [ID3v2]. The informal standard is released so that - implementors could have a set standard before a formal standard is - set. The formal standard will use another version or revision number - if not identical to what is described in this document. The contents - in this document may change for clarifications but never for added or - altered functionallity. - - Distribution of this document is unlimited. - - -Abstract - - This document describes the ID3v2.3.0, which is a more developed - version of the ID3v2 informal standard [ID3v2] (version 2.2.0), - evolved from the ID3 tagging system. The ID3v2 offers a flexible way - of storing information about an audio file within itself to determine - its origin and contents. The information may be technical - information, such as equalisation curves, as well as related meta - information, such as title, performer, copyright etc. - - -1. Table of contents - - 2. Conventions in this document - 3. ID3v2 overview - 3.1. ID3v2 header - 3.2. ID3v2 extended header - 3.3. ID3v2 frames overview - 3.3.1. Frame header flags - 3.3.2. Default flags - 4. Declared ID3v2 frames - 4.1. Unique file identifier - 4.2. Text information frames - 4.2.1. Text information frames - details - 4.2.2. User defined text information frame - 4.3. URL link frames - 4.3.1. URL link frames - details - 4.3.2. User defined URL link frame - 4.4. Involved people list - 4.5. Music CD Identifier - 4.6. Event timing codes - 4.7. MPEG location lookup table - 4.8. Synced tempo codes - 4.9. Unsychronised lyrics/text transcription - 4.10. Synchronised lyrics/text - 4.11. Comments - 4.12. Relative volume adjustment - 4.13. Equalisation - 4.14. Reverb - 4.15. Attached picture - 4.16. General encapsulated object - 4.17. Play counter - 4.18. Popularimeter - 4.19. Recommended buffer size - 4.20. Audio encryption - 4.21. Linked information - 4.22. Position synchronisation frame - 4.23. Terms of use - 4.24. Ownership frame - 4.25. Commercial frame - 4.26. Encryption method registration - 4.27. Group identification registration - 4.28. Private frame - 5. The 'unsynchronisation scheme' - 6. Copyright - 7. References - 8. Appendix - A. Appendix A - Genre List from ID3v1 - 9. Author's Address - - -2. Conventions in this document - - In the examples, text within "" is a text string exactly as it - appears in a file. Numbers preceded with $ are hexadecimal and - numbers preceded with % are binary. $xx is used to indicate a byte - with unknown content. %x is used to indicate a bit with unknown - content. The most significant bit (MSB) of a byte is called 'bit 7' - and the least significant bit (LSB) is called 'bit 0'. - - A tag is the whole tag described in this document. A frame is a block - of information in the tag. The tag consists of a header, frames and - optional padding. A field is a piece of information; one value, a - string etc. A numeric string is a string that consists of the - characters 0-9 only. - - -3. ID3v2 overview - - The two biggest design goals were to be able to implement ID3v2 - without disturbing old software too much and that ID3v2 should be - as flexible and expandable as possible. - - The first criterion is met by the simple fact that the MPEG [MPEG] - decoding software uses a syncsignal, embedded in the audiostream, to - 'lock on to' the audio. Since the ID3v2 tag doesn't contain a valid - syncsignal, no software will attempt to play the tag. If, for any - reason, coincidence make a syncsignal appear within the tag it will - be taken care of by the 'unsynchronisation scheme' described in - section 5. - - The second criterion has made a more noticeable impact on the design - of the ID3v2 tag. It is constructed as a container for several - information blocks, called frames, whose format need not be known to - the software that encounters them. At the start of every frame there - is an identifier that explains the frames' format and content, and a - size descriptor that allows software to skip unknown frames. - - If a total revision of the ID3v2 tag should be needed, there is a - version number and a size descriptor in the ID3v2 header. - - The ID3 tag described in this document is mainly targeted at files - encoded with MPEG-1/2 layer I, MPEG-1/2 layer II, MPEG-1/2 layer III - and MPEG-2.5, but may work with other types of encoded audio. - - The bitorder in ID3v2 is most significant bit first (MSB). The - byteorder in multibyte numbers is most significant byte first (e.g. - $12345678 would be encoded $12 34 56 78). - - It is permitted to include padding after all the final frame (at the - end of the ID3 tag), making the size of all the frames together - smaller than the size given in the head of the tag. A possible - purpose of this padding is to allow for adding a few additional - frames or enlarge existing frames within the tag without having to - rewrite the entire file. The value of the padding bytes must be $00. - - -3.1. ID3v2 header - - The ID3v2 tag header, which should be the first information in the - file, is 10 bytes as follows: - - ID3v2/file identifier "ID3" - ID3v2 version $03 00 - ID3v2 flags %abc00000 - ID3v2 size 4 * %0xxxxxxx - - The first three bytes of the tag are always "ID3" to indicate that - this is an ID3v2 tag, directly followed by the two version bytes. The - first byte of ID3v2 version is it's major version, while the second - byte is its revision number. In this case this is ID3v2.3.0. All - revisions are backwards compatible while major versions are not. If - software with ID3v2.2.0 and below support should encounter version - three or higher it should simply ignore the whole tag. Version and - revision will never be $FF. - - The version is followed by one the ID3v2 flags field, of which - currently only three flags are used. - - - a - Unsynchronisation - - Bit 7 in the 'ID3v2 flags' indicates whether or not - unsynchronisation is used (see section 5 for details); a set bit - indicates usage. - - - b - Extended header - - The second bit (bit 6) indicates whether or not the header is - followed by an extended header. The extended header is described in - section 3.2. - - - c - Experimental indicator - - The third bit (bit 5) should be used as an 'experimental - indicator'. This flag should always be set when the tag is in an - experimental stage. - - All the other flags should be cleared. If one of these undefined - flags are set that might mean that the tag is not readable for a - parser that does not know the flags function. - - The ID3v2 tag size is encoded with four bytes where the most - significant bit (bit 7) is set to zero in every byte, making a total - of 28 bits. The zeroed bits are ignored, so a 257 bytes long tag is - represented as $00 00 02 01. - - The ID3v2 tag size is the size of the complete tag after - unsychronisation, including padding, excluding the header but not - excluding the extended header (total tag size - 10). Only 28 bits - (representing up to 256MB) are used in the size description to avoid - the introducuction of 'false syncsignals'. - - An ID3v2 tag can be detected with the following pattern: - $49 44 33 yy yy xx zz zz zz zz - Where yy is less than $FF, xx is the 'flags' byte and zz is less than - $80. - - -3.2. ID3v2 extended header - - The extended header contains information that is not vital to the - correct parsing of the tag information, hence the extended header is - optional. - - Extended header size $xx xx xx xx - Extended Flags $xx xx - Size of padding $xx xx xx xx - - Where the 'Extended header size', currently 6 or 10 bytes, excludes - itself. The 'Size of padding' is simply the total tag size excluding - the frames and the headers, in other words the padding. The extended - header is considered separate from the header proper, and as such is - subject to unsynchronisation. - - The extended flags are a secondary flag set which describes further - attributes of the tag. These attributes are currently defined as - follows - - %x0000000 00000000 - - - x - CRC data present - - If this flag is set four bytes of CRC-32 data is appended to the - extended header. The CRC should be calculated before - unsynchronisation on the data between the extended header and the - padding, i.e. the frames and only the frames. - - Total frame CRC $xx xx xx xx - - -3.3. ID3v2 frame overview - - As the tag consists of a tag header and a tag body with one or more - frames, all the frames consists of a frame header followed by one or - more fields containing the actual information. The layout of the - frame header: - - Frame ID $xx xx xx xx (four characters) - Size $xx xx xx xx - Flags $xx xx - - The frame ID made out of the characters capital A-Z and 0-9. - Identifiers beginning with "X", "Y" and "Z" are for experimental use - and free for everyone to use, without the need to set the - experimental bit in the tag header. Have in mind that someone else - might have used the same identifier as you. All other identifiers are - either used or reserved for future use. - - The frame ID is followed by a size descriptor, making a total header - size of ten bytes in every frame. The size is calculated as frame - size excluding frame header (frame size - 10). - - In the frame header the size descriptor is followed by two flags - bytes. These flags are described in section 3.3.1. - - There is no fixed order of the frames' appearance in the tag, - although it is desired that the frames are arranged in order of - significance concerning the recognition of the file. An example of - such order: UFID, TIT2, MCDI, TRCK ... - - A tag must contain at least one frame. A frame must be at least 1 - byte big, excluding the header. - - If nothing else is said a string is represented as ISO-8859-1 - [ISO-8859-1] characters in the range $20 - $FF. Such strings are - represented as <text string>, or <full text string> if newlines are - allowed, in the frame descriptions. All Unicode strings [UNICODE] use - 16-bit unicode 2.0 (ISO/IEC 10646-1:1993, UCS-2). Unicode strings - must begin with the Unicode BOM ($FF FE or $FE FF) to identify the - byte order. - - All numeric strings and URLs [URL] are always encoded as ISO-8859-1. - Terminated strings are terminated with $00 if encoded with ISO-8859-1 - and $00 00 if encoded as unicode. If nothing else is said newline - character is forbidden. In ISO-8859-1 a new line is represented, when - allowed, with $0A only. Frames that allow different types of text - encoding have a text encoding description byte directly after the - frame size. If ISO-8859-1 is used this byte should be $00, if Unicode - is used it should be $01. Strings dependent on encoding is - represented as <text string according to encoding>, or <full text - string according to encoding> if newlines are allowed. Any empty - Unicode strings which are NULL-terminated may have the Unicode BOM - followed by a Unicode NULL ($FF FE 00 00 or $FE FF 00 00). - - The three byte language field is used to describe the language of the - frame's content, according to ISO-639-2 [ISO-639-2]. - - All URLs [URL] may be relative, e.g. "picture.png", "../doc.txt". - - If a frame is longer than it should be, e.g. having more fields than - specified in this document, that indicates that additions to the - frame have been made in a later version of the ID3v2 standard. This - is reflected by the revision number in the header of the tag. - - -3.3.1. Frame header flags - - In the frame header the size descriptor is followed by two flags - bytes. All unused flags must be cleared. The first byte is for - 'status messages' and the second byte is for encoding purposes. If an - unknown flag is set in the first byte the frame may not be changed - without the bit cleared. If an unknown flag is set in the second byte - it is likely to not be readable. The flags field is defined as - follows. - - %abc00000 %ijk00000 - - - a - Tag alter preservation - - This flag tells the software what to do with this frame if it is - unknown and the tag is altered in any way. This applies to all - kinds of alterations, including adding more padding and reordering - the frames. - - 0 Frame should be preserved. - 1 Frame should be discarded. - - - b - File alter preservation - - This flag tells the software what to do with this frame if it is - unknown and the file, excluding the tag, is altered. This does not - apply when the audio is completely replaced with other audio data. - - 0 Frame should be preserved. - 1 Frame should be discarded. - - - c - Read only - - This flag, if set, tells the software that the contents of this - frame is intended to be read only. Changing the contents might - break something, e.g. a signature. If the contents are changed, - without knowledge in why the frame was flagged read only and - without taking the proper means to compensate, e.g. recalculating - the signature, the bit should be cleared. - - - i - Compression - - This flag indicates whether or not the frame is compressed. - - 0 Frame is not compressed. - 1 Frame is compressed using zlib [zlib] with 4 bytes for - 'decompressed size' appended to the frame header. - - - j - Encryption - - This flag indicates wether or not the frame is enrypted. If set - one byte indicating with which method it was encrypted will be - appended to the frame header. See section 4.26. for more - information about encryption method registration. - - 0 Frame is not encrypted. - 1 Frame is encrypted. - - - k - Grouping identity - - This flag indicates whether or not this frame belongs in a group - with other frames. If set a group identifier byte is added to the - frame header. Every frame with the same group identifier belongs - to the same group. - - 0 Frame does not contain group information - 1 Frame contains group information - - - Some flags indicates that the frame header is extended with - additional information. This information will be added to the frame - header in the same order as the flags indicating the additions. I.e. - the four bytes of decompressed size will preceed the encryption - method byte. These additions to the frame header, while not included - in the frame header size but are included in the 'frame size' field, - are not subject to encryption or compression. - - -3.3.2. Default flags - - The default settings for the frames described in this document can be - divided into the following classes. The flags may be set differently - if found more suitable by the software. - - 1. Discarded if tag is altered, discarded if file is altered. - - None. - - 2. Discarded if tag is altered, preserved if file is altered. - - None. - - 3. Preserved if tag is altered, discarded if file is altered. - - AENC, ETCO, EQUA, MLLT, POSS, SYLT, SYTC, RVAD, TENC, TLEN, TSIZ - - 4. Preserved if tag is altered, preserved if file is altered. - - The rest of the frames. - - -4. Declared ID3v2 frames - - The following frames are declared in this draft. - - 4.21 AENC Audio encryption - 4.15 APIC Attached picture - - 4.11 COMM Comments - 4.25 COMR Commercial frame - - 4.26 ENCR Encryption method registration - 4.13 EQUA Equalization - 4.6 ETCO Event timing codes - - 4.16 GEOB General encapsulated object - 4.27 GRID Group identification registration - - 4.4 IPLS Involved people list - - 4.21 LINK Linked information - - 4.5 MCDI Music CD identifier - 4.7 MLLT MPEG location lookup table - - 4.24 OWNE Ownership frame - - 4.28. PRIV Private frame - 4.17 PCNT Play counter - 4.18 POPM Popularimeter - 4.22 POSS Position synchronisation frame - - 4.19 RBUF Recommended buffer size - 4.12 RVAD Relative volume adjustment - 4.14 RVRB Reverb - - 4.10 SYLT Synchronized lyric/text - 4.8 SYTC Synchronized tempo codes - - 4.2.1 TALB Album/Movie/Show title - 4.2.1 TBPM BPM (beats per minute) - 4.2.1 TCOM Composer - 4.2.1 TCON Content type - 4.2.1 TCOP Copyright message - 4.2.1 TDAT Date - 4.2.1 TDLY Playlist delay - 4.2.1 TENC Encoded by - 4.2.1 TEXT Lyricist/Text writer - 4.2.1 TFLT File type - 4.2.1 TIME Time - 4.2.1 TIT1 Content group description - 4.2.1 TIT2 Title/songname/content description - 4.2.1 TIT3 Subtitle/Description refinement - 4.2.1 TKEY Initial key - 4.2.1 TLAN Language(s) - 4.2.1 TLEN Length - 4.2.1 TMED Media type - 4.2.1 TOAL Original album/movie/show title - 4.2.1 TOFN Original filename - 4.2.1 TOLY Original lyricist(s)/text writer(s) - 4.2.1 TOPE Original artist(s)/performer(s) - 4.2.1 TORY Original release year - 4.2.1 TOWN File owner/licensee - 4.2.1 TPE1 Lead performer(s)/Soloist(s) - 4.2.1 TPE2 Band/orchestra/accompaniment - 4.2.1 TPE3 Conductor/performer refinement - 4.2.1 TPE4 Interpreted, remixed, or otherwise modified by - 4.2.1 TPOS Part of a set - 4.2.1 TPUB Publisher - 4.2.1 TRCK Track number/Position in set - 4.2.1 TRDA Recording dates - 4.2.1 TRSN Internet radio station name - 4.2.1 TRSO Internet radio station owner - 4.2.1 TSIZ Size - 4.2.1 TSRC ISRC (international standard recording code) - 4.2.1 TSSE Software/Hardware and settings used for encoding - 4.2.1 TYER Year - 4.2.2 TXXX User defined text information frame - - 4.1 UFID Unique file identifier - 4.23 USER Terms of use - 4.9 USLT Unsychronized lyric/text transcription - - 4.3.1 WCOM Commercial information - 4.3.1 WCOP Copyright/Legal information - 4.3.1 WOAF Official audio file webpage - 4.3.1 WOAR Official artist/performer webpage - 4.3.1 WOAS Official audio source webpage - 4.3.1 WORS Official internet radio station homepage - 4.3.1 WPAY Payment - 4.3.1 WPUB Publishers official webpage - 4.3.2 WXXX User defined URL link frame - - -4.1. Unique file identifier - - This frame's purpose is to be able to identify the audio file in a - database that may contain more information relevant to the content. - Since standardisation of such a database is beyond this document, all - frames begin with a null-terminated string with a URL [URL] - containing an email address, or a link to a location where an email - address can be found, that belongs to the organisation responsible - for this specific database implementation. Questions regarding the - database should be sent to the indicated email address. The URL - should not be used for the actual database queries. The string - "<a href="http://www.id3.org/dummy/ufid.html">http://www.id3.org/dummy/ufid.html</a>" should be used for tests. - Software that isn't told otherwise may safely remove such frames. The - 'Owner identifier' must be non-empty (more than just a termination). - The 'Owner identifier' is then followed by the actual identifier, - which may be up to 64 bytes. There may be more than one "UFID" frame - in a tag, but only one with the same 'Owner identifier'. - - <Header for 'Unique file identifier', ID: "UFID"> - Owner identifier <text string> $00 - Identifier <up to 64 bytes binary data> - - -4.2. Text information frames - - The text information frames are the most important frames, containing - information like artist, album and more. There may only be one text - information frame of its kind in an tag. If the textstring is - followed by a termination ($00 (00)) all the following information - should be ignored and not be displayed. All text frame identifiers - begin with "T". Only text frame identifiers begin with "T", with the - exception of the "TXXX" frame. All the text information frames have - the following format: - - <Header for 'Text information frame', ID: "T000" - "TZZZ", - excluding "TXXX" described in 4.2.2.> - Text encoding $xx - Information <text string according to encoding> - - -4.2.1. Text information frames - details - - TALB - The 'Album/Movie/Show title' frame is intended for the title of the - recording(/source of sound) which the audio in the file is taken - from. - - TBPM - The 'BPM' frame contains the number of beats per minute in the - mainpart of the audio. The BPM is an integer and represented as a - numerical string. - - TCOM - The 'Composer(s)' frame is intended for the name of the composer(s). - They are seperated with the "/" character. - - TCON - The 'Content type', which previously was stored as a one byte numeric - value only, is now a numeric string. You may use one or several of - the types as ID3v1.1 did or, since the category list would be - impossible to maintain with accurate and up to date categories, - define your own. - - References to the ID3v1 genres can be made by, as first byte, enter - "(" followed by a number from the genres list (appendix A.) and - ended with a ")" character. This is optionally followed by a - refinement, e.g. "(21)" or "(4)Eurodisco". Several references can be - made in the same frame, e.g. "(51)(39)". If the refinement should - begin with a "(" character it should be replaced with "((", e.g. "((I - can figure out any genre)" or "(55)((I think...)". The following new - content types is defined in ID3v2 and is implemented in the same way - as the numerig content types, e.g. "(RX)". - - RX Remix - CR Cover - - TCOP - The 'Copyright message' frame, which must begin with a year and a - space character (making five characters), is intended for the - copyright holder of the original sound, not the audio file itself. - The absence of this frame means only that the copyright information - is unavailable or has been removed, and must not be interpreted to - mean that the sound is public domain. Every time this field is - displayed the field must be preceded with "Copyright " (C) " ", where - (C) is one character showing a C in a circle. - - TDAT - The 'Date' frame is a numeric string in the DDMM format containing - the date for the recording. This field is always four characters - long. - - TDLY - The 'Playlist delay' defines the numbers of milliseconds of silence - between every song in a playlist. The player should use the "ETC" - frame, if present, to skip initial silence and silence at the end of - the audio to match the 'Playlist delay' time. The time is represented - as a numeric string. - - TENC - The 'Encoded by' frame contains the name of the person or - organisation that encoded the audio file. This field may contain a - copyright message, if the audio file also is copyrighted by the - encoder. - - TEXT - The 'Lyricist(s)/Text writer(s)' frame is intended for the writer(s) - of the text or lyrics in the recording. They are seperated with the - "/" character. - - TFLT - The 'File type' frame indicates which type of audio this tag defines. - The following type and refinements are defined: - - MPG MPEG Audio - /1 MPEG 1/2 layer I - /2 MPEG 1/2 layer II - /3 MPEG 1/2 layer III - /2.5 MPEG 2.5 - /AAC Advanced audio compression - VQF Transform-domain Weighted Interleave Vector Quantization - PCM Pulse Code Modulated audio - - but other types may be used, not for these types though. This is used - in a similar way to the predefined types in the "TMED" frame, but - without parentheses. If this frame is not present audio type is - assumed to be "MPG". - - TIME - The 'Time' frame is a numeric string in the HHMM format containing - the time for the recording. This field is always four characters - long. - - TIT1 - The 'Content group description' frame is used if the sound belongs to - a larger category of sounds/music. For example, classical music is - often sorted in different musical sections (e.g. "Piano Concerto", - "Weather - Hurricane"). - - TIT2 - The 'Title/Songname/Content description' frame is the actual name of - the piece (e.g. "Adagio", "Hurricane Donna"). - - TIT3 - The 'Subtitle/Description refinement' frame is used for information - directly related to the contents title (e.g. "Op. 16" or "Performed - live at Wembley"). - - TKEY - The 'Initial key' frame contains the musical key in which the sound - starts. It is represented as a string with a maximum length of three - characters. The ground keys are represented with "A","B","C","D","E", - "F" and "G" and halfkeys represented with "b" and "#". Minor is - represented as "m". Example "Cbm". Off key is represented with an "o" - only. - - TLAN - The 'Language(s)' frame should contain the languages of the text or - lyrics spoken or sung in the audio. The language is represented with - three characters according to ISO-639-2. If more than one language is - used in the text their language codes should follow according to - their usage. - - TLEN - The 'Length' frame contains the length of the audiofile in - milliseconds, represented as a numeric string. - - TMED - The 'Media type' frame describes from which media the sound - originated. This may be a text string or a reference to the - predefined media types found in the list below. References are made - within "(" and ")" and are optionally followed by a text refinement, - e.g. "(MC) with four channels". If a text refinement should begin - with a "(" character it should be replaced with "((" in the same way - as in the "TCO" frame. Predefined refinements is appended after the - media type, e.g. "(CD/A)" or "(VID/PAL/VHS)". - - DIG Other digital media - /A Analog transfer from media - - ANA Other analog media - /WAC Wax cylinder - /8CA 8-track tape cassette - - CD CD - /A Analog transfer from media - /DD DDD - /AD ADD - /AA AAD - - LD Laserdisc - /A Analog transfer from media - - TT Turntable records - /33 33.33 rpm - /45 45 rpm - /71 71.29 rpm - /76 76.59 rpm - /78 78.26 rpm - /80 80 rpm - - MD MiniDisc - /A Analog transfer from media - - DAT DAT - /A Analog transfer from media - /1 standard, 48 kHz/16 bits, linear - /2 mode 2, 32 kHz/16 bits, linear - /3 mode 3, 32 kHz/12 bits, nonlinear, low speed - /4 mode 4, 32 kHz/12 bits, 4 channels - /5 mode 5, 44.1 kHz/16 bits, linear - /6 mode 6, 44.1 kHz/16 bits, 'wide track' play - - DCC DCC - /A Analog transfer from media - - DVD DVD - /A Analog transfer from media - - TV Television - /PAL PAL - /NTSC NTSC - /SECAM SECAM - - VID Video - /PAL PAL - /NTSC NTSC - /SECAM SECAM - /VHS VHS - /SVHS S-VHS - /BETA BETAMAX - - RAD Radio - /FM FM - /AM AM - /LW LW - /MW MW - - TEL Telephone - /I ISDN - - MC MC (normal cassette) - /4 4.75 cm/s (normal speed for a two sided cassette) - /9 9.5 cm/s - /I Type I cassette (ferric/normal) - /II Type II cassette (chrome) - /III Type III cassette (ferric chrome) - /IV Type IV cassette (metal) - - REE Reel - /9 9.5 cm/s - /19 19 cm/s - /38 38 cm/s - /76 76 cm/s - /I Type I cassette (ferric/normal) - /II Type II cassette (chrome) - /III Type III cassette (ferric chrome) - /IV Type IV cassette (metal) - - TOAL - The 'Original album/movie/show title' frame is intended for the title - of the original recording (or source of sound), if for example the - music in the file should be a cover of a previously released song. - - TOFN - The 'Original filename' frame contains the preferred filename for the - file, since some media doesn't allow the desired length of the - filename. The filename is case sensitive and includes its suffix. - - TOLY - The 'Original lyricist(s)/text writer(s)' frame is intended for the - text writer(s) of the original recording, if for example the music in - the file should be a cover of a previously released song. The text - writers are seperated with the "/" character. - - TOPE - The 'Original artist(s)/performer(s)' frame is intended for the - performer(s) of the original recording, if for example the music in - the file should be a cover of a previously released song. The - performers are seperated with the "/" character. - - TORY - The 'Original release year' frame is intended for the year when the - original recording, if for example the music in the file should be a - cover of a previously released song, was released. The field is - formatted as in the "TYER" frame. - - TOWN - The 'File owner/licensee' frame contains the name of the owner or - licensee of the file and it's contents. - - TPE1 - The 'Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group' is - used for the main artist(s). They are seperated with the "/" - character. - - TPE2 - The 'Band/Orchestra/Accompaniment' frame is used for additional - information about the performers in the recording. - - TPE3 - The 'Conductor' frame is used for the name of the conductor. - - TPE4 - The 'Interpreted, remixed, or otherwise modified by' frame contains - more information about the people behind a remix and similar - interpretations of another existing piece. - - TPOS - The 'Part of a set' frame is a numeric string that describes which - part of a set the audio came from. This frame is used if the source - described in the "TALB" frame is divided into several mediums, e.g. a - double CD. The value may be extended with a "/" character and a - numeric string containing the total number of parts in the set. E.g. - "1/2". - - TPUB - The 'Publisher' frame simply contains the name of the label or - publisher. - - TRCK - The 'Track number/Position in set' frame is a numeric string - containing the order number of the audio-file on its original - recording. This may be extended with a "/" character and a numeric - string containing the total numer of tracks/elements on the original - recording. E.g. "4/9". - - TRDA - The 'Recording dates' frame is a intended to be used as complement to - the "TYER", "TDAT" and "TIME" frames. E.g. "4th-7th June, 12th June" - in combination with the "TYER" frame. - - TRSN - The 'Internet radio station name' frame contains the name of the - internet radio station from which the audio is streamed. - - TRSO - The 'Internet radio station owner' frame contains the name of the - owner of the internet radio station from which the audio is - streamed. - - TSIZ - The 'Size' frame contains the size of the audiofile in bytes, - excluding the ID3v2 tag, represented as a numeric string. - - TSRC - The 'ISRC' frame should contain the International Standard Recording - Code [ISRC] (12 characters). - - TSSE - The 'Software/Hardware and settings used for encoding' frame - includes the used audio encoder and its settings when the file was - encoded. Hardware refers to hardware encoders, not the computer on - which a program was run. - - TYER - The 'Year' frame is a numeric string with a year of the recording. - This frames is always four characters long (until the year 10000). - - -4.2.2. User defined text information frame - - This frame is intended for one-string text information concerning the - audiofile in a similar way to the other "T"-frames. The frame body - consists of a description of the string, represented as a terminated - string, followed by the actual string. There may be more than one - "TXXX" frame in each tag, but only one with the same description. - - <Header for 'User defined text information frame', ID: "TXXX"> - Text encoding $xx - Description <text string according to encoding> $00 (00) - Value <text string according to encoding> - - -4.3. URL link frames - - With these frames dynamic data such as webpages with touring - information, price information or plain ordinary news can be added to - the tag. There may only be one URL [URL] link frame of its kind in an - tag, except when stated otherwise in the frame description. If the - textstring is followed by a termination ($00 (00)) all the following - information should be ignored and not be displayed. All URL link - frame identifiers begins with "W". Only URL link frame identifiers - begins with "W". All URL link frames have the following format: - - <Header for 'URL link frame', ID: "W000" - "WZZZ", excluding "WXXX" - described in 4.3.2.> - URL <text string> - - -4.3.1. URL link frames - details - - WCOM - The 'Commercial information' frame is a URL pointing at a webpage - with information such as where the album can be bought. There may be - more than one "WCOM" frame in a tag, but not with the same content. - - WCOP - The 'Copyright/Legal information' frame is a URL pointing at a - webpage where the terms of use and ownership of the file is - described. - - WOAF - The 'Official audio file webpage' frame is a URL pointing at a file - specific webpage. - - WOAR - The 'Official artist/performer webpage' frame is a URL pointing at - the artists official webpage. There may be more than one "WOAR" frame - in a tag if the audio contains more than one performer, but not with - the same content. - - WOAS - The 'Official audio source webpage' frame is a URL pointing at the - official webpage for the source of the audio file, e.g. a movie. - - WORS - The 'Official internet radio station homepage' contains a URL - pointing at the homepage of the internet radio station. - - WPAY - The 'Payment' frame is a URL pointing at a webpage that will handle - the process of paying for this file. - - WPUB - The 'Publishers official webpage' frame is a URL pointing at the - official wepage for the publisher. - - -4.3.2. User defined URL link frame - - This frame is intended for URL [URL] links concerning the audiofile - in a similar way to the other "W"-frames. The frame body consists - of a description of the string, represented as a terminated string, - followed by the actual URL. The URL is always encoded with ISO-8859-1 - [ISO-8859-1]. There may be more than one "WXXX" frame in each tag, - but only one with the same description. - - <Header for 'User defined URL link frame', ID: "WXXX"> - Text encoding $xx - Description <text string according to encoding> $00 (00) - URL <text string> - - -4.4. Involved people list - - Since there might be a lot of people contributing to an audio file in - various ways, such as musicians and technicians, the 'Text - information frames' are often insufficient to list everyone involved - in a project. The 'Involved people list' is a frame containing the - names of those involved, and how they were involved. The body simply - contains a terminated string with the involvement directly followed - by a terminated string with the involvee followed by a new - involvement and so on. There may only be one "IPLS" frame in each - tag. - - <Header for 'Involved people list', ID: "IPLS"> - Text encoding $xx - People list strings <text strings according to encoding> - - -4.5. Music CD identifier - - This frame is intended for music that comes from a CD, so that the CD - can be identified in databases such as the CDDB [CDDB]. The frame - consists of a binary dump of the Table Of Contents, TOC, from the CD, - which is a header of 4 bytes and then 8 bytes/track on the CD plus 8 - bytes for the 'lead out' making a maximum of 804 bytes. The offset to - the beginning of every track on the CD should be described with a - four bytes absolute CD-frame address per track, and not with absolute - time. This frame requires a present and valid "TRCK" frame, even if - the CD's only got one track. There may only be one "MCDI" frame in - each tag. - - <Header for 'Music CD identifier', ID: "MCDI"> - CD TOC <binary data> - - -4.6. Event timing codes - - This frame allows synchronisation with key events in a song or sound. - The header is: - - <Header for 'Event timing codes', ID: "ETCO"> - Time stamp format $xx - - Where time stamp format is: - - $01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit - $02 Absolute time, 32 bit sized, using milliseconds as unit - - Abolute time means that every stamp contains the time from the - beginning of the file. - - Followed by a list of key events in the following format: - - Type of event $xx - Time stamp $xx (xx ...) - - The 'Time stamp' is set to zero if directly at the beginning of the - sound or after the previous event. All events should be sorted in - chronological order. The type of event is as follows: - - $00 padding (has no meaning) - $01 end of initial silence - $02 intro start - $03 mainpart start - $04 outro start - $05 outro end - $06 verse start - $07 refrain start - $08 interlude start - $09 theme start - $0A variation start - $0B key change - $0C time change - $0D momentary unwanted noise (Snap, Crackle & Pop) - $0E sustained noise - $0F sustained noise end - $10 intro end - $11 mainpart end - $12 verse end - $13 refrain end - $14 theme end - - $15-$DF reserved for future use - - $E0-$EF not predefined sync 0-F - - $F0-$FC reserved for future use - - $FD audio end (start of silence) - $FE audio file ends - $FF one more byte of events follows (all the following bytes with - the value $FF have the same function) - - Terminating the start events such as "intro start" is not required. - The 'Not predefined sync's ($E0-EF) are for user events. You might - want to synchronise your music to something, like setting of an - explosion on-stage, turning on your screensaver etc. - - There may only be one "ETCO" frame in each tag. - - -4.7. MPEG location lookup table - - To increase performance and accuracy of jumps within a MPEG [MPEG] - audio file, frames with timecodes in different locations in the file - might be useful. The ID3v2 frame includes references that the - software can use to calculate positions in the file. After the frame - header is a descriptor of how much the 'frame counter' should - increase for every reference. If this value is two then the first - reference points out the second frame, the 2nd reference the 4th - frame, the 3rd reference the 6th frame etc. In a similar way the - 'bytes between reference' and 'milliseconds between reference' points - out bytes and milliseconds respectively. - - Each reference consists of two parts; a certain number of bits, as - defined in 'bits for bytes deviation', that describes the difference - between what is said in 'bytes between reference' and the reality and - a certain number of bits, as defined in 'bits for milliseconds - deviation', that describes the difference between what is said in - 'milliseconds between reference' and the reality. The number of bits - in every reference, i.e. 'bits for bytes deviation'+'bits for - milliseconds deviation', must be a multiple of four. There may only - be one "MLLT" frame in each tag. - - <Header for 'Location lookup table', ID: "MLLT"> - MPEG frames between reference $xx xx - Bytes between reference $xx xx xx - Milliseconds between reference $xx xx xx - Bits for bytes deviation $xx - Bits for milliseconds dev. $xx - - Then for every reference the following data is included; - - Deviation in bytes %xxx.... - Deviation in milliseconds %xxx.... - - -4.8. Synchronised tempo codes - - For a more accurate description of the tempo of a musical piece this - frame might be used. After the header follows one byte describing - which time stamp format should be used. Then follows one or more - tempo codes. Each tempo code consists of one tempo part and one time - part. The tempo is in BPM described with one or two bytes. If the - first byte has the value $FF, one more byte follows, which is added - to the first giving a range from 2 - 510 BPM, since $00 and $01 is - reserved. $00 is used to describe a beat-free time period, which is - not the same as a music-free time period. $01 is used to indicate one - single beat-stroke followed by a beat-free period. - - The tempo descriptor is followed by a time stamp. Every time the - tempo in the music changes, a tempo descriptor may indicate this for - the player. All tempo descriptors should be sorted in chronological - order. The first beat-stroke in a time-period is at the same time as - the beat description occurs. There may only be one "SYTC" frame in - each tag. - - <Header for 'Synchronised tempo codes', ID: "SYTC"> - Time stamp format $xx - Tempo data <binary data> - - Where time stamp format is: - - $01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit - $02 Absolute time, 32 bit sized, using milliseconds as unit - - Abolute time means that every stamp contains the time from the - beginning of the file. - - -4.9. Unsychronised lyrics/text transcription - - This frame contains the lyrics of the song or a text transcription of - other vocal activities. The head includes an encoding descriptor and - a content descriptor. The body consists of the actual text. The - 'Content descriptor' is a terminated string. If no descriptor is - entered, 'Content descriptor' is $00 (00) only. Newline characters - are allowed in the text. There may be more than one 'Unsynchronised - lyrics/text transcription' frame in each tag, but only one with the - same language and content descriptor. - - <Header for 'Unsynchronised lyrics/text transcription', ID: "USLT"> - Text encoding $xx - Language $xx xx xx - Content descriptor <text string according to encoding> $00 (00) - Lyrics/text <full text string according to encoding> - - -4.10. Synchronised lyrics/text - - This is another way of incorporating the words, said or sung lyrics, - in the audio file as text, this time, however, in sync with the - audio. It might also be used to describing events e.g. occurring on a - stage or on the screen in sync with the audio. The header includes a - content descriptor, represented with as terminated textstring. If no - descriptor is entered, 'Content descriptor' is $00 (00) only. - - <Header for 'Synchronised lyrics/text', ID: "SYLT"> - Text encoding $xx - Language $xx xx xx - Time stamp format $xx - Content type $xx - Content descriptor <text string according to encoding> $00 (00) - - - Encoding: $00 ISO-8859-1 [ISO-8859-1] character set is used => $00 - is sync identifier. - $01 Unicode [UNICODE] character set is used => $00 00 is - sync identifier. - - Content type: $00 is other - $01 is lyrics - $02 is text transcription - $03 is movement/part name (e.g. "Adagio") - $04 is events (e.g. "Don Quijote enters the stage") - $05 is chord (e.g. "Bb F Fsus") - $06 is trivia/'pop up' information - - Time stamp format is: - - $01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit - $02 Absolute time, 32 bit sized, using milliseconds as unit - - Abolute time means that every stamp contains the time from the - beginning of the file. - - The text that follows the frame header differs from that of the - unsynchronised lyrics/text transcription in one major way. Each - syllable (or whatever size of text is considered to be convenient by - the encoder) is a null terminated string followed by a time stamp - denoting where in the sound file it belongs. Each sync thus has the - following structure: - - Terminated text to be synced (typically a syllable) - Sync identifier (terminator to above string) $00 (00) - Time stamp $xx (xx ...) - - The 'time stamp' is set to zero or the whole sync is omitted if - located directly at the beginning of the sound. All time stamps - should be sorted in chronological order. The sync can be considered - as a validator of the subsequent string. - - Newline ($0A) characters are allowed in all "SYLT" frames and should - be used after every entry (name, event etc.) in a frame with the - content type $03 - $04. - - A few considerations regarding whitespace characters: Whitespace - separating words should mark the beginning of a new word, thus - occurring in front of the first syllable of a new word. This is also - valid for new line characters. A syllable followed by a comma should - not be broken apart with a sync (both the syllable and the comma - should be before the sync). - - An example: The "USLT" passage - - "Strangers in the night" $0A "Exchanging glances" - - would be "SYLT" encoded as: - - "Strang" $00 xx xx "ers" $00 xx xx " in" $00 xx xx " the" $00 xx xx - " night" $00 xx xx 0A "Ex" $00 xx xx "chang" $00 xx xx "ing" $00 xx - xx "glan" $00 xx xx "ces" $00 xx xx - - There may be more than one "SYLT" frame in each tag, but only one - with the same language and content descriptor. - - -4.11. Comments - - This frame is indended for any kind of full text information that - does not fit in any other frame. It consists of a frame header - followed by encoding, language and content descriptors and is ended - with the actual comment as a text string. Newline characters are - allowed in the comment text string. There may be more than one - comment frame in each tag, but only one with the same language and - content descriptor. - - <Header for 'Comment', ID: "COMM"> - Text encoding $xx - Language $xx xx xx - Short content descrip. <text string according to encoding> $00 (00) - The actual text <full text string according to encoding> - - -4.12. Relative volume adjustment - - This is a more subjective function than the previous ones. It allows - the user to say how much he wants to increase/decrease the volume on - each channel while the file is played. The purpose is to be able to - align all files to a reference volume, so that you don't have to - change the volume constantly. This frame may also be used to balance - adjust the audio. If the volume peak levels are known then this could - be described with the 'Peak volume right' and 'Peak volume left' - field. If Peakvolume is not known these fields could be left zeroed - or, if no other data follows, be completely omitted. There may only - be one "RVAD" frame in each tag. - - <Header for 'Relative volume adjustment', ID: "RVAD"> - Increment/decrement %00xxxxxx - Bits used for volume descr. $xx - Relative volume change, right $xx xx (xx ...) - Relative volume change, left $xx xx (xx ...) - Peak volume right $xx xx (xx ...) - Peak volume left $xx xx (xx ...) - - In the increment/decrement field bit 0 is used to indicate the right - channel and bit 1 is used to indicate the left channel. 1 is - increment and 0 is decrement. - - The 'bits used for volume description' field is normally $10 (16 - bits) for MPEG 2 layer I, II and III [MPEG] and MPEG 2.5. This value - may not be $00. The volume is always represented with whole bytes, - padded in the beginning (highest bits) when 'bits used for volume - description' is not a multiple of eight. - - This datablock is then optionally followed by a volume definition for - the left and right back channels. If this information is appended to - the frame the first two channels will be treated as front channels. - In the increment/decrement field bit 2 is used to indicate the right - back channel and bit 3 for the left back channel. - - Relative volume change, right back $xx xx (xx ...) - Relative volume change, left back $xx xx (xx ...) - Peak volume right back $xx xx (xx ...) - Peak volume left back $xx xx (xx ...) - - If the center channel adjustment is present the following is appended - to the existing frame, after the left and right back channels. The - center channel is represented by bit 4 in the increase/decrease - field. - - Relative volume change, center $xx xx (xx ...) - Peak volume center $xx xx (xx ...) - - If the bass channel adjustment is present the following is appended - to the existing frame, after the center channel. The bass channel is - represented by bit 5 in the increase/decrease field. - - Relative volume change, bass $xx xx (xx ...) - Peak volume bass $xx xx (xx ...) - - -4.13. Equalisation - - This is another subjective, alignment frame. It allows the user to - predefine an equalisation curve within the audio file. There may only - be one "EQUA" frame in each tag. - - <Header of 'Equalisation', ID: "EQUA"> - Adjustment bits $xx - - The 'adjustment bits' field defines the number of bits used for - representation of the adjustment. This is normally $10 (16 bits) for - MPEG 2 layer I, II and III [MPEG] and MPEG 2.5. This value may not be - $00. - - This is followed by 2 bytes + ('adjustment bits' rounded up to the - nearest byte) for every equalisation band in the following format, - giving a frequency range of 0 - 32767Hz: - - Increment/decrement %x (MSB of the Frequency) - Frequency (lower 15 bits) - Adjustment $xx (xx ...) - - The increment/decrement bit is 1 for increment and 0 for decrement. - The equalisation bands should be ordered increasingly with reference - to frequency. All frequencies don't have to be declared. The - equalisation curve in the reading software should be interpolated - between the values in this frame. Three equal adjustments for three - subsequent frequencies. A frequency should only be described once in - the frame. - - -4.14. Reverb - - Yet another subjective one. You may here adjust echoes of different - kinds. Reverb left/right is the delay between every bounce in ms. - Reverb bounces left/right is the number of bounces that should be - made. $FF equals an infinite number of bounces. Feedback is the - amount of volume that should be returned to the next echo bounce. $00 - is 0%, $FF is 100%. If this value were $7F, there would be 50% volume - reduction on the first bounce, 50% of that on the second and so on. - Left to left means the sound from the left bounce to be played in the - left speaker, while left to right means sound from the left bounce to - be played in the right speaker. - - 'Premix left to right' is the amount of left sound to be mixed in the - right before any reverb is applied, where $00 id 0% and $FF is 100%. - 'Premix right to left' does the same thing, but right to left. - Setting both premix to $FF would result in a mono output (if the - reverb is applied symmetric). There may only be one "RVRB" frame in - each tag. - - <Header for 'Reverb', ID: "RVRB"> - Reverb left (ms) $xx xx - Reverb right (ms) $xx xx - Reverb bounces, left $xx - Reverb bounces, right $xx - Reverb feedback, left to left $xx - Reverb feedback, left to right $xx - Reverb feedback, right to right $xx - Reverb feedback, right to left $xx - Premix left to right $xx - Premix right to left $xx - - -4.15. Attached picture - - This frame contains a picture directly related to the audio file. - Image format is the MIME type and subtype [MIME] for the image. In - the event that the MIME media type name is omitted, "image/" will be - implied. The "image/png" [PNG] or "image/jpeg" [JFIF] picture format - should be used when interoperability is wanted. Description is a - short description of the picture, represented as a terminated - textstring. The description has a maximum length of 64 characters, - but may be empty. There may be several pictures attached to one file, - each in their individual "APIC" frame, but only one with the same - content descriptor. There may only be one picture with the picture - type declared as picture type $01 and $02 respectively. There is the - possibility to put only a link to the image file by using the 'MIME - type' "-->" and having a complete URL [URL] instead of picture data. - The use of linked files should however be used sparingly since there - is the risk of separation of files. - - <Header for 'Attached picture', ID: "APIC"> - Text encoding $xx - MIME type <text string> $00 - Picture type $xx - Description <text string according to encoding> $00 (00) - Picture data <binary data> - - - Picture type: $00 Other - $01 32x32 pixels 'file icon' (PNG only) - $02 Other file icon - $03 Cover (front) - $04 Cover (back) - $05 Leaflet page - $06 Media (e.g. lable side of CD) - $07 Lead artist/lead performer/soloist - $08 Artist/performer - $09 Conductor - $0A Band/Orchestra - $0B Composer - $0C Lyricist/text writer - $0D Recording Location - $0E During recording - $0F During performance - $10 Movie/video screen capture - $11 A bright coloured fish - $12 Illustration - $13 Band/artist logotype - $14 Publisher/Studio logotype - - -4.16. General encapsulated object - - In this frame any type of file can be encapsulated. After the header, - 'Frame size' and 'Encoding' follows 'MIME type' [MIME] represented as - as a terminated string encoded with ISO 8859-1 [ISO-8859-1]. The - filename is case sensitive and is encoded as 'Encoding'. Then follows - a content description as terminated string, encoded as 'Encoding'. - The last thing in the frame is the actual object. The first two - strings may be omitted, leaving only their terminations. MIME type is - always an ISO-8859-1 text string. There may be more than one "GEOB" - frame in each tag, but only one with the same content descriptor. - - <Header for 'General encapsulated object', ID: "GEOB"> - Text encoding $xx - MIME type <text string> $00 - Filename <text string according to encoding> $00 (00) - Content description <text string according to encóding> $00 (00) - Encapsulated object <binary data> - - -4.17. Play counter - - This is simply a counter of the number of times a file has been - played. The value is increased by one every time the file begins to - play. There may only be one "PCNT" frame in each tag. When the - counter reaches all one's, one byte is inserted in front of the - counter thus making the counter eight bits bigger. The counter must - be at least 32-bits long to begin with. - - <Header for 'Play counter', ID: "PCNT"> - Counter $xx xx xx xx (xx ...) - - -4.18. Popularimeter - - The purpose of this frame is to specify how good an audio file is. - Many interesting applications could be found to this frame such as a - playlist that features better audiofiles more often than others or it - could be used to profile a person's taste and find other 'good' files - by comparing people's profiles. The frame is very simple. It contains - the email address to the user, one rating byte and a four byte play - counter, intended to be increased with one for every time the file is - played. The email is a terminated string. The rating is 1-255 where - 1 is worst and 255 is best. 0 is unknown. If no personal counter is - wanted it may be omitted. When the counter reaches all one's, one - byte is inserted in front of the counter thus making the counter - eight bits bigger in the same away as the play counter ("PCNT"). - There may be more than one "POPM" frame in each tag, but only one - with the same email address. - - <Header for 'Popularimeter', ID: "POPM"> - Email to user <text string> $00 - Rating $xx - Counter $xx xx xx xx (xx ...) - - -4.19. Recommended buffer size - - Sometimes the server from which a audio file is streamed is aware of - transmission or coding problems resulting in interruptions in the - audio stream. In these cases, the size of the buffer can be - recommended by the server using this frame. If the 'embedded info - flag' is true (1) then this indicates that an ID3 tag with the - maximum size described in 'Buffer size' may occur in the audiostream. - In such case the tag should reside between two MPEG [MPEG] frames, if - the audio is MPEG encoded. If the position of the next tag is known, - 'offset to next tag' may be used. The offset is calculated from the - end of tag in which this frame resides to the first byte of the - header in the next. This field may be omitted. Embedded tags are - generally not recommended since this could render unpredictable - behaviour from present software/hardware. - - For applications like streaming audio it might be an idea to embed - tags into the audio stream though. If the clients connects to - individual connections like HTTP and there is a possibility to begin - every transmission with a tag, then this tag should include a - 'recommended buffer size' frame. If the client is connected to a - arbitrary point in the stream, such as radio or multicast, then the - 'recommended buffer size' frame should be included in every tag. - Every tag that is picked up after the initial/first tag is to be - considered as an update of the previous one. E.g. if there is a - "TIT2" frame in the first received tag and one in the second tag, - then the first should be 'replaced' with the second. - - The 'Buffer size' should be kept to a minimum. There may only be one - "RBUF" frame in each tag. - - <Header for 'Recommended buffer size', ID: "RBUF"> - Buffer size $xx xx xx - Embedded info flag %0000000x - Offset to next tag $xx xx xx xx - - -4.20. Audio encryption - - This frame indicates if the actual audio stream is encrypted, and by - whom. Since standardisation of such encrypion scheme is beyond this - document, all "AENC" frames begin with a terminated string with a - URL containing an email address, or a link to a location where an - email address can be found, that belongs to the organisation - responsible for this specific encrypted audio file. Questions - regarding the encrypted audio should be sent to the email address - specified. If a $00 is found directly after the 'Frame size' and the - audiofile indeed is encrypted, the whole file may be considered - useless. - - After the 'Owner identifier', a pointer to an unencrypted part of the - audio can be specified. The 'Preview start' and 'Preview length' is - described in frames. If no part is unencrypted, these fields should - be left zeroed. After the 'preview length' field follows optionally a - datablock required for decryption of the audio. There may be more - than one "AENC" frames in a tag, but only one with the same 'Owner - identifier'. - - <Header for 'Audio encryption', ID: "AENC"> - Owner identifier <text string> $00 - Preview start $xx xx - Preview length $xx xx - Encryption info <binary data> - - -4.21. Linked information - - To keep space waste as low as possible this frame may be used to link - information from another ID3v2 tag that might reside in another audio - file or alone in a binary file. It is recommended that this method is - only used when the files are stored on a CD-ROM or other - circumstances when the risk of file seperation is low. The frame - contains a frame identifier, which is the frame that should be linked - into this tag, a URL [URL] field, where a reference to the file where - the frame is given, and additional ID data, if needed. Data should be - retrieved from the first tag found in the file to which this link - points. There may be more than one "LINK" frame in a tag, but only - one with the same contents. A linked frame is to be considered as - part of the tag and has the same restrictions as if it was a physical - part of the tag (i.e. only one "RVRB" frame allowed, whether it's - linked or not). - - <Header for 'Linked information', ID: "LINK"> - Frame identifier $xx xx xx - URL <text string> $00 - ID and additional data <text string(s)> - - Frames that may be linked and need no additional data are "IPLS", - "MCID", "ETCO", "MLLT", "SYTC", "RVAD", "EQUA", "RVRB", "RBUF", the - text information frames and the URL link frames. - - The "TXXX", "APIC", "GEOB" and "AENC" frames may be linked with - the content descriptor as additional ID data. - - The "COMM", "SYLT" and "USLT" frames may be linked with three bytes - of language descriptor directly followed by a content descriptor as - additional ID data. - - -4.22. Position synchronisation frame - - This frame delivers information to the listener of how far into the - audio stream he picked up; in effect, it states the time offset of - the first frame in the stream. The frame layout is: - - <Head for 'Position synchronisation', ID: "POSS"> - Time stamp format $xx - Position $xx (xx ...) - - Where time stamp format is: - - $01 Absolute time, 32 bit sized, using MPEG frames as unit - $02 Absolute time, 32 bit sized, using milliseconds as unit - - and position is where in the audio the listener starts to receive, - i.e. the beginning of the next frame. If this frame is used in the - beginning of a file the value is always 0. There may only be one - "POSS" frame in each tag. - - -4.23. Terms of use frame - - This frame contains a brief description of the terms of use and - ownership of the file. More detailed information concerning the legal - terms might be available through the "WCOP" frame. Newlines are - allowed in the text. There may only be one "USER" frame in a tag. - - <Header for 'Terms of use frame', ID: "USER"> - Text encoding $xx - Language $xx xx xx - The actual text <text string according to encoding> - - -4.24. Ownership frame - - The ownership frame might be used as a reminder of a made transaction - or, if signed, as proof. Note that the "USER" and "TOWN" frames are - good to use in conjunction with this one. The frame begins, after the - frame ID, size and encoding fields, with a 'price payed' field. The - first three characters of this field contains the currency used for - the transaction, encoded according to ISO 4217 [ISO-4217] alphabetic - currency code. Concatenated to this is the actual price payed, as a - numerical string using "." as the decimal separator. Next is an 8 - character date string (YYYYMMDD) followed by a string with the name - of the seller as the last field in the frame. There may only be one - "OWNE" frame in a tag. - - <Header for 'Ownership frame', ID: "OWNE"> - Text encoding $xx - Price payed <text string> $00 - Date of purch. <text string> - Seller <text string according to encoding> - - -4.25. Commercial frame - - This frame enables several competing offers in the same tag by - bundling all needed information. That makes this frame rather complex - but it's an easier solution than if one tries to achieve the same - result with several frames. The frame begins, after the frame ID, - size and encoding fields, with a price string field. A price is - constructed by one three character currency code, encoded according - to ISO 4217 [ISO-4217] alphabetic currency code, followed by a - numerical value where "." is used as decimal seperator. In the price - string several prices may be concatenated, seperated by a "/" - character, but there may only be one currency of each type. - - The price string is followed by an 8 character date string in the - format YYYYMMDD, describing for how long the price is valid. After - that is a contact URL, with which the user can contact the seller, - followed by a one byte 'received as' field. It describes how the - audio is delivered when bought according to the following list: - - $00 Other - $01 Standard CD album with other songs - $02 Compressed audio on CD - $03 File over the Internet - $04 Stream over the Internet - $05 As note sheets - $06 As note sheets in a book with other sheets - $07 Music on other media - $08 Non-musical merchandise - - Next follows a terminated string with the name of the seller followed - by a terminated string with a short description of the product. The - last thing is the ability to include a company logotype. The first of - them is the 'Picture MIME type' field containing information about - which picture format is used. In the event that the MIME media type - name is omitted, "image/" will be implied. Currently only "image/png" - and "image/jpeg" are allowed. This format string is followed by the - binary picture data. This two last fields may be omitted if no - picture is to attach. - - <Header for 'Commercial frame', ID: "COMR"> - Text encoding $xx - Price string <text string> $00 - Valid until <text string> - Contact URL <text string> $00 - Received as $xx - Name of seller <text string according to encoding> $00 (00) - Description <text string according to encoding> $00 (00) - Picture MIME type <string> $00 - Seller logo <binary data> - - -4.26. Encryption method registration - - To identify with which method a frame has been encrypted the - encryption method must be registered in the tag with this frame. The - 'Owner identifier' is a null-terminated string with a URL [URL] - containing an email address, or a link to a location where an email - address can be found, that belongs to the organisation responsible - for this specific encryption method. Questions regarding the - encryption method should be sent to the indicated email address. The - 'Method symbol' contains a value that is associated with this method - throughout the whole tag. Values below $80 are reserved. The 'Method - symbol' may optionally be followed by encryption specific data. There - may be several "ENCR" frames in a tag but only one containing the - same symbol and only one containing the same owner identifier. The - method must be used somewhere in the tag. See section 3.3.1, flag j - for more information. - - <Header for 'Encryption method registration', ID: "ENCR"> - Owner identifier <text string> $00 - Method symbol $xx - Encryption data <binary data> - - -4.27. Group identification registration - - This frame enables grouping of otherwise unrelated frames. This can - be used when some frames are to be signed. To identify which frames - belongs to a set of frames a group identifier must be registered in - the tag with this frame. The 'Owner identifier' is a null-terminated - string with a URL [URL] containing an email address, or a link to a - location where an email address can be found, that belongs to the - organisation responsible for this grouping. Questions regarding the - grouping should be sent to the indicated email address. The 'Group - symbol' contains a value that associates the frame with this group - throughout the whole tag. Values below $80 are reserved. The 'Group - symbol' may optionally be followed by some group specific data, e.g. - a digital signature. There may be several "GRID" frames in a tag but - only one containing the same symbol and only one containing the same - owner identifier. The group symbol must be used somewhere in the tag. - See section 3.3.1, flag j for more information. - - <Header for 'Group ID registration', ID: "GRID"> - Owner identifier <text string> $00 - Group symbol $xx - Group dependent data <binary data> - - -4.28. Private frame - - This frame is used to contain information from a software producer - that its program uses and does not fit into the other frames. The - frame consists of an 'Owner identifier' string and the binary data. - The 'Owner identifier' is a null-terminated string with a URL [URL] - containing an email address, or a link to a location where an email - address can be found, that belongs to the organisation responsible - for the frame. Questions regarding the frame should be sent to the - indicated email address. The tag may contain more than one "PRIV" - frame but only with different contents. It is recommended to keep the - number of "PRIV" frames as low as possible. - - <Header for 'Private frame', ID: "PRIV"> - Owner identifier <text string> $00 - The private data <binary data> - - -5. The 'unsynchronisation scheme' - - The only purpose of the 'unsynchronisation scheme' is to make the - ID3v2 tag as compatible as possible with existing software. There is - no use in 'unsynchronising' tags if the file is only to be processed - by new software. Unsynchronisation may only be made with MPEG 2 layer - I, II and III and MPEG 2.5 files. - - Whenever a false synchronisation is found within the tag, one zeroed - byte is inserted after the first false synchronisation byte. The - format of a correct sync that should be altered by ID3 encoders is as - follows: - - %11111111 111xxxxx - - And should be replaced with: - - %11111111 00000000 111xxxxx - - This has the side effect that all $FF 00 combinations have to be - altered, so they won't be affected by the decoding process. Therefore - all the $FF 00 combinations have to be replaced with the $FF 00 00 - combination during the unsynchronisation. - - To indicate usage of the unsynchronisation, the first bit in 'ID3 - flags' should be set. This bit should only be set if the tag - contains a, now corrected, false synchronisation. The bit should - only be clear if the tag does not contain any false synchronisations. - - Do bear in mind, that if a compression scheme is used by the encoder, - the unsynchronisation scheme should be applied *afterwards*. When - decoding a compressed, 'unsynchronised' file, the 'unsynchronisation - scheme' should be parsed first, decompression afterwards. - - If the last byte in the tag is $FF, and there is a need to eliminate - false synchronisations in the tag, at least one byte of padding - should be added. - - -6. Copyright - - Copyright (C) Martin Nilsson 1998. All Rights Reserved. - - This document and translations of it may be copied and furnished to - others, and derivative works that comment on or otherwise explain it - or assist in its implementation may be prepared, copied, published - and distributed, in whole or in part, without restriction of any - kind, provided that a reference to this document is included on all - such copies and derivative works. However, this document itself may - not be modified in any way and reissued as the original document. - - The limited permissions granted above are perpetual and will not be - revoked. - - This document and the information contained herein is provided on an - "AS IS" basis and THE AUTHORS DISCLAIMS ALL WARRANTIES, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF - THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED - WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - - -7. References - - [CDDB] Compact Disc Data Base - - http://www.cddb.com - - [ID3v2] Martin Nilsson, "ID3v2 informal standard". - - http://www.id3lib.org/id3/id3v2-00.txt - - [ISO-639-2] ISO/FDIS 639-2. - Codes for the representation of names of languages, Part 2: Alpha-3 - code. Technical committee / subcommittee: TC 37 / SC 2 - - [ISO-4217] ISO 4217:1995. - Codes for the representation of currencies and funds. - Technical committee / subcommittee: TC 68 - - [ISO-8859-1] ISO/IEC DIS 8859-1. - 8-bit single-byte coded graphic character sets, Part 1: Latin - alphabet No. 1. Technical committee / subcommittee: JTC 1 / SC 2 - - [ISRC] ISO 3901:1986 - International Standard Recording Code (ISRC). - Technical committee / subcommittee: TC 46 / SC 9 - - [JFIF] JPEG File Interchange Format, version 1.02 - - http://www.w3.org/Graphics/JPEG/jfif.txt">http://www.w3.org/Graphics/JPEG/jfif.txt - - [MIME] Freed, N. and N. Borenstein, "Multipurpose Internet Mail - Extensions (MIME) Part One: Format of Internet Message Bodies", - RFC 2045, November 1996. - - ftp://ftp.isi.edu/in-notes/rfc2045.txt">ftp://ftp.isi.edu/in-notes/rfc2045.txt - - [MPEG] ISO/IEC 11172-3:1993. - Coding of moving pictures and associated audio for digital storage - media at up to about 1,5 Mbit/s, Part 3: Audio. - Technical committee / subcommittee: JTC 1 / SC 29 - and - ISO/IEC 13818-3:1995 - Generic coding of moving pictures and associated audio information, - Part 3: Audio. - Technical committee / subcommittee: JTC 1 / SC 29 - and - ISO/IEC DIS 13818-3 - Generic coding of moving pictures and associated audio information, - Part 3: Audio (Revision of ISO/IEC 13818-3:1995) - - - [PNG] Portable Network Graphics, version 1.0 - - http://www.w3.org/TR/REC-png-multi.html - - [UNICODE] ISO/IEC 10646-1:1993. - Universal Multiple-Octet Coded Character Set (UCS), Part 1: - Architecture and Basic Multilingual Plane. - Technical committee / subcommittee: JTC 1 / SC 2 - - http://www.unicode.org/ - - [URL] T. Berners-Lee, L. Masinter & M. McCahill, "Uniform Resource - Locators (URL).", RFC 1738, December 1994. - - ftp://ftp.isi.edu/in-notes/rfc1738.txt - - [ZLIB] P. Deutsch, Aladdin Enterprises & J-L. Gailly, "ZLIB - Compressed - Data Format Specification version 3.3", RFC 1950, May 1996. - - ftp://ftp.isi.edu/in-notes/rfc1950.txt - - -8. Appendix - - -A. Appendix A - Genre List from ID3v1 - - The following genres is defined in ID3v1 - - 0.Blues - 1.Classic Rock - 2.Country - 3.Dance - 4.Disco - 5.Funk - 6.Grunge - 7.Hip-Hop - 8.Jazz - 9.Metal - 10.New Age - 11.Oldies - 12.Other - 13.Pop - 14.R&B - 15.Rap - 16.Reggae - 17.Rock - 18.Techno - 19.Industrial - 20.Alternative - 21.Ska - 22.Death Metal - 23.Pranks - 24.Soundtrack - 25.Euro-Techno - 26.Ambient - 27.Trip-Hop - 28.Vocal - 29.Jazz+Funk - 30.Fusion - 31.Trance - 32.Classical - 33.Instrumental - 34.Acid - 35.House - 36.Game - 37.Sound Clip - 38.Gospel - 39.Noise - 40.AlternRock - 41.Bass - 42.Soul - 43.Punk - 44.Space - 45.Meditative - 46.Instrumental Pop - 47.Instrumental Rock - 48.Ethnic - 49.Gothic - 50.Darkwave - 51.Techno-Industrial - 52.Electronic - 53.Pop-Folk - 54.Eurodance - 55.Dream - 56.Southern Rock - 57.Comedy - 58.Cult - 59.Gangsta - 60.Top 40 - 61.Christian Rap - 62.Pop/Funk - 63.Jungle - 64.Native American - 65.Cabaret - 66.New Wave - 67.Psychadelic - 68.Rave - 69.Showtunes - 70.Trailer - 71.Lo-Fi - 72.Tribal - 73.Acid Punk - 74.Acid Jazz - 75.Polka - 76.Retro - 77.Musical - 78.Rock & Roll - 79.Hard Rock - - The following genres are Winamp extensions - - 80.Folk - 81.Folk-Rock - 82.National Folk - 83.Swing - 84.Fast Fusion - 85.Bebob - 86.Latin - 87.Revival - 88.Celtic - 89.Bluegrass - 90.Avantgarde - 91.Gothic Rock - 92.Progressive Rock - 93.Psychedelic Rock - 94.Symphonic Rock - 95.Slow Rock - 96.Big Band - 97.Chorus - 98.Easy Listening - 99.Acoustic - 100.Humour - 101.Speech - 102.Chanson - 103.Opera - 104.Chamber Music - 105.Sonata - 106.Symphony - 107.Booty Bass - 108.Primus - 109.Porn Groove - 110.Satire - 111.Slow Jam - 112.Club - 113.Tango - 114.Samba - 115.Folklore - 116.Ballad - 117.Power Ballad - 118.Rhythmic Soul - 119.Freestyle - 120.Duet - 121.Punk Rock - 122.Drum Solo - 123.Acapella - 124.Euro-House - 125.Dance Hall - - -9. Author's Address - - Written by - - Martin Nilsson - Rydsvägen 246 C. 30 - S-584 34 Linköping - Sweden - - Email: nilsson@id3.org - - - Edited by - - Dirk Mahoney - 57 Pechey Street - Chermside Q - Australia 4032 - - Email: dirk@id3.org - - - Johan Sundström - Alsättersgatan 5 A. 34 - S-584 35 Linköping - Sweden - - Email: johan@id3.org diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2.4.0-frames.txt b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2.4.0-frames.txt deleted file mode 100644 index 74a21bed3d4..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2.4.0-frames.txt +++ /dev/null @@ -1,1734 +0,0 @@ -$Id$ - -Informal standard M. Nilsson -Document: id3v2.4.0-frames.txt 1st November 2000 - - - ID3 tag version 2.4.0 - Native Frames - -Status of this document - - This document is an informal standard and replaces the ID3v2.3.0 - standard [ID3v2]. A formal standard will use another revision number - even if the content is identical to document. The contents in this - document may change for clarifications but never for added or altered - functionallity. - - Distribution of this document is unlimited. - - -Abstract - - This document describes the frames natively supported by ID3v2.4.0, - which is a revised version of the ID3v2 informal standard [ID3v2.3.0] - version 2.3.0. The ID3v2 offers a flexible way of storing audio meta - information within audio file itself. The information may be - technical information, such as equalisation curves, as well as title, - performer, copyright etc. - - ID3v2.4.0 is meant to be as close as possible to ID3v2.3.0 in order - to allow for implementations to be revised as easily as possible. - - -1. Table of contents - - 2. Conventions in this document - 3. Default flags - 4. Declared ID3v2 frames - 4.1. Unique file identifier - 4.2. Text information frames - 4.2.1. Identification frames - 4.2.2. Involved persons frames - 4.2.3. Derived and subjective properties frames - 4.2.4. Rights and license frames - 4.2.5. Other text frames - 4.2.6. User defined text information frame - 4.3. URL link frames - 4.3.1. URL link frames - details - 4.3.2. User defined URL link frame - 4.4. Music CD Identifier - 4.5. Event timing codes - 4.6. MPEG location lookup table - 4.7. Synced tempo codes - 4.8. Unsynchronised lyrics/text transcription - 4.9. Synchronised lyrics/text - 4.10. Comments - 4.11. Relative volume adjustment (2) - 4.12. Equalisation (2) - 4.13. Reverb - 4.14. Attached picture - 4.15. General encapsulated object - 4.16. Play counter - 4.17. Popularimeter - 4.18. Recommended buffer size - 4.19. Audio encryption - 4.20. Linked information - 4.21. Position synchronisation frame - 4.22. Terms of use - 4.23. Ownership frame - 4.24. Commercial frame - 4.25. Encryption method registration - 4.26. Group identification registration - 4.27. Private frame - 4.28. Signature frame - 4.29. Seek frame - 4.30. Audio seek point index - 5. Copyright - 6. References - 7. Appendix - A. Appendix A - Genre List from ID3v1 - 8. Author's Address - - -2. Conventions in this document - - Text within "" is a text string exactly as it appears in a tag. - Numbers preceded with $ are hexadecimal and numbers preceded with % - are binary. $xx is used to indicate a byte with unknown content. %x - is used to indicate a bit with unknown content. The most significant - bit (MSB) of a byte is called 'bit 7' and the least significant bit - (LSB) is called 'bit 0'. - - A tag is the whole tag described the ID3v2 main structure document - [ID3v2-strct]. A frame is a block of information in the tag. The tag - consists of a header, frames and optional padding. A field is a piece - of information; one value, a string etc. A numeric string is a string - that consists of the characters "0123456789" only. - - The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", - "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this - document are to be interpreted as described in RFC 2119 [KEYWORDS]. - - -3. Default flags - - The default settings for the frames described in this document can be - divided into the following classes. The flags may be set differently - if found more suitable by the software. - - 1. Discarded if tag is altered, discarded if file is altered. - - None. - - 2. Discarded if tag is altered, preserved if file is altered. - - None. - - 3. Preserved if tag is altered, discarded if file is altered. - - ASPI, AENC, ETCO, EQU2, MLLT, POSS, SEEK, SYLT, SYTC, RVA2, TENC, - TLEN - - 4. Preserved if tag is altered, preserved if file is altered. - - The rest of the frames. - - -4. Declared ID3v2 frames - - The following frames are declared in this draft. - - 4.19 AENC Audio encryption - 4.14 APIC Attached picture - 4.30 ASPI Audio seek point index - - 4.10 COMM Comments - 4.24 COMR Commercial frame - - 4.25 ENCR Encryption method registration - 4.12 EQU2 Equalisation (2) - 4.5 ETCO Event timing codes - - 4.15 GEOB General encapsulated object - 4.26 GRID Group identification registration - - 4.20 LINK Linked information - - 4.4 MCDI Music CD identifier - 4.6 MLLT MPEG location lookup table - - 4.23 OWNE Ownership frame - - 4.27 PRIV Private frame - 4.16 PCNT Play counter - 4.17 POPM Popularimeter - 4.21 POSS Position synchronisation frame - - 4.18 RBUF Recommended buffer size - 4.11 RVA2 Relative volume adjustment (2) - 4.13 RVRB Reverb - - 4.29 SEEK Seek frame - 4.28 SIGN Signature frame - 4.9 SYLT Synchronised lyric/text - 4.7 SYTC Synchronised tempo codes - - 4.2.1 TALB Album/Movie/Show title - 4.2.3 TBPM BPM (beats per minute) - 4.2.2 TCOM Composer - 4.2.3 TCON Content type - 4.2.4 TCOP Copyright message - 4.2.5 TDEN Encoding time - 4.2.5 TDLY Playlist delay - 4.2.5 TDOR Original release time - 4.2.5 TDRC Recording time - 4.2.5 TDRL Release time - 4.2.5 TDTG Tagging time - 4.2.2 TENC Encoded by - 4.2.2 TEXT Lyricist/Text writer - 4.2.3 TFLT File type - 4.2.2 TIPL Involved people list - 4.2.1 TIT1 Content group description - 4.2.1 TIT2 Title/songname/content description - 4.2.1 TIT3 Subtitle/Description refinement - 4.2.3 TKEY Initial key - 4.2.3 TLAN Language(s) - 4.2.3 TLEN Length - 4.2.2 TMCL Musician credits list - 4.2.3 TMED Media type - 4.2.3 TMOO Mood - 4.2.1 TOAL Original album/movie/show title - 4.2.5 TOFN Original filename - 4.2.2 TOLY Original lyricist(s)/text writer(s) - 4.2.2 TOPE Original artist(s)/performer(s) - 4.2.4 TOWN File owner/licensee - 4.2.2 TPE1 Lead performer(s)/Soloist(s) - 4.2.2 TPE2 Band/orchestra/accompaniment - 4.2.2 TPE3 Conductor/performer refinement - 4.2.2 TPE4 Interpreted, remixed, or otherwise modified by - 4.2.1 TPOS Part of a set - 4.2.4 TPRO Produced notice - 4.2.4 TPUB Publisher - 4.2.1 TRCK Track number/Position in set - 4.2.4 TRSN Internet radio station name - 4.2.4 TRSO Internet radio station owner - 4.2.5 TSOA Album sort order - 4.2.5 TSOP Performer sort order - 4.2.5 TSOT Title sort order - 4.2.1 TSRC ISRC (international standard recording code) - 4.2.5 TSSE Software/Hardware and settings used for encoding - 4.2.1 TSST Set subtitle - 4.2.2 TXXX User defined text information frame - - 4.1 UFID Unique file identifier - 4.22 USER Terms of use - 4.8 USLT Unsynchronised lyric/text transcription - - 4.3.1 WCOM Commercial information - 4.3.1 WCOP Copyright/Legal information - 4.3.1 WOAF Official audio file webpage - 4.3.1 WOAR Official artist/performer webpage - 4.3.1 WOAS Official audio source webpage - 4.3.1 WORS Official Internet radio station homepage - 4.3.1 WPAY Payment - 4.3.1 WPUB Publishers official webpage - 4.3.2 WXXX User defined URL link frame - - -4.1. Unique file identifier - - This frame's purpose is to be able to identify the audio file in a - database, that may provide more information relevant to the content. - Since standardisation of such a database is beyond this document, all - UFID frames begin with an 'owner identifier' field. It is a null- - terminated string with a URL [URL] containing an email address, or a - link to a location where an email address can be found, that belongs - to the organisation responsible for this specific database - implementation. Questions regarding the database should be sent to - the indicated email address. The URL should not be used for the - actual database queries. The string - "http://www.id3.org/dummy/ufid.html" should be used for tests. The - 'Owner identifier' must be non-empty (more than just a termination). - The 'Owner identifier' is then followed by the actual identifier, - which may be up to 64 bytes. There may be more than one "UFID" frame - in a tag, but only one with the same 'Owner identifier'. - - <Header for 'Unique file identifier', ID: "UFID"> - Owner identifier <text string> $00 - Identifier <up to 64 bytes binary data> - - -4.2. Text information frames - - The text information frames are often the most important frames, - containing information like artist, album and more. There may only be - one text information frame of its kind in an tag. All text - information frames supports multiple strings, stored as a null - separated list, where null is reperesented by the termination code - for the charater encoding. All text frame identifiers begin with "T". - Only text frame identifiers begin with "T", with the exception of the - "TXXX" frame. All the text information frames have the following - format: - - <Header for 'Text information frame', ID: "T000" - "TZZZ", - excluding "TXXX" described in 4.2.6.> - Text encoding $xx - Information <text string(s) according to encoding> - - -4.2.1. Identification frames - - TIT1 - The 'Content group description' frame is used if the sound belongs to - a larger category of sounds/music. For example, classical music is - often sorted in different musical sections (e.g. "Piano Concerto", - "Weather - Hurricane"). - - TIT2 - The 'Title/Songname/Content description' frame is the actual name of - the piece (e.g. "Adagio", "Hurricane Donna"). - - TIT3 - The 'Subtitle/Description refinement' frame is used for information - directly related to the contents title (e.g. "Op. 16" or "Performed - live at Wembley"). - - TALB - The 'Album/Movie/Show title' frame is intended for the title of the - recording (or source of sound) from which the audio in the file is - taken. - - TOAL - The 'Original album/movie/show title' frame is intended for the title - of the original recording (or source of sound), if for example the - music in the file should be a cover of a previously released song. - - TRCK - The 'Track number/Position in set' frame is a numeric string - containing the order number of the audio-file on its original - recording. This MAY be extended with a "/" character and a numeric - string containing the total number of tracks/elements on the original - recording. E.g. "4/9". - - TPOS - The 'Part of a set' frame is a numeric string that describes which - part of a set the audio came from. This frame is used if the source - described in the "TALB" frame is divided into several mediums, e.g. a - double CD. The value MAY be extended with a "/" character and a - numeric string containing the total number of parts in the set. E.g. - "1/2". - - TSST - The 'Set subtitle' frame is intended for the subtitle of the part of - a set this track belongs to. - - TSRC - The 'ISRC' frame should contain the International Standard Recording - Code [ISRC] (12 characters). - - -4.2.2. Involved persons frames - - TPE1 - The 'Lead artist/Lead performer/Soloist/Performing group' is - used for the main artist. - - TPE2 - The 'Band/Orchestra/Accompaniment' frame is used for additional - information about the performers in the recording. - - TPE3 - The 'Conductor' frame is used for the name of the conductor. - - TPE4 - The 'Interpreted, remixed, or otherwise modified by' frame contains - more information about the people behind a remix and similar - interpretations of another existing piece. - - TOPE - The 'Original artist/performer' frame is intended for the performer - of the original recording, if for example the music in the file - should be a cover of a previously released song. - - TEXT - The 'Lyricist/Text writer' frame is intended for the writer of the - text or lyrics in the recording. - - TOLY - The 'Original lyricist/text writer' frame is intended for the - text writer of the original recording, if for example the music in - the file should be a cover of a previously released song. - - TCOM - The 'Composer' frame is intended for the name of the composer. - - TMCL - The 'Musician credits list' is intended as a mapping between - instruments and the musician that played it. Every odd field is an - instrument and every even is an artist or a comma delimited list of - artists. - - TIPL - The 'Involved people list' is very similar to the musician credits - list, but maps between functions, like producer, and names. - - TENC - The 'Encoded by' frame contains the name of the person or - organisation that encoded the audio file. This field may contain a - copyright message, if the audio file also is copyrighted by the - encoder. - - -4.2.3. Derived and subjective properties frames - - TBPM - The 'BPM' frame contains the number of beats per minute in the - main part of the audio. The BPM is an integer and represented as a - numerical string. - - TLEN - The 'Length' frame contains the length of the audio file in - milliseconds, represented as a numeric string. - - TKEY - The 'Initial key' frame contains the musical key in which the sound - starts. It is represented as a string with a maximum length of three - characters. The ground keys are represented with "A","B","C","D","E", - "F" and "G" and halfkeys represented with "b" and "#". Minor is - represented as "m", e.g. "Dbm" $00. Off key is represented with an - "o" only. - - TLAN - The 'Language' frame should contain the languages of the text or - lyrics spoken or sung in the audio. The language is represented with - three characters according to ISO-639-2 [ISO-639-2]. If more than one - language is used in the text their language codes should follow - according to the amount of their usage, e.g. "eng" $00 "sve" $00. - - TCON - The 'Content type', which ID3v1 was stored as a one byte numeric - value only, is now a string. You may use one or several of the ID3v1 - types as numerical strings, or, since the category list would be - impossible to maintain with accurate and up to date categories, - define your own. Example: "21" $00 "Eurodisco" $00 - - You may also use any of the following keywords: - - RX Remix - CR Cover - - TFLT - The 'File type' frame indicates which type of audio this tag defines. - The following types and refinements are defined: - - MIME MIME type follows - MPG MPEG Audio - /1 MPEG 1/2 layer I - /2 MPEG 1/2 layer II - /3 MPEG 1/2 layer III - /2.5 MPEG 2.5 - /AAC Advanced audio compression - VQF Transform-domain Weighted Interleave Vector Quantisation - PCM Pulse Code Modulated audio - - but other types may be used, but not for these types though. This is - used in a similar way to the predefined types in the "TMED" frame, - but without parentheses. If this frame is not present audio type is - assumed to be "MPG". - - TMED - The 'Media type' frame describes from which media the sound - originated. This may be a text string or a reference to the - predefined media types found in the list below. Example: - "VID/PAL/VHS" $00. - - DIG Other digital media - /A Analogue transfer from media - - ANA Other analogue media - /WAC Wax cylinder - /8CA 8-track tape cassette - - CD CD - /A Analogue transfer from media - /DD DDD - /AD ADD - /AA AAD - - LD Laserdisc - - TT Turntable records - /33 33.33 rpm - /45 45 rpm - /71 71.29 rpm - /76 76.59 rpm - /78 78.26 rpm - /80 80 rpm - - MD MiniDisc - /A Analogue transfer from media - - DAT DAT - /A Analogue transfer from media - /1 standard, 48 kHz/16 bits, linear - /2 mode 2, 32 kHz/16 bits, linear - /3 mode 3, 32 kHz/12 bits, non-linear, low speed - /4 mode 4, 32 kHz/12 bits, 4 channels - /5 mode 5, 44.1 kHz/16 bits, linear - /6 mode 6, 44.1 kHz/16 bits, 'wide track' play - - DCC DCC - /A Analogue transfer from media - - DVD DVD - /A Analogue transfer from media - - TV Television - /PAL PAL - /NTSC NTSC - /SECAM SECAM - - VID Video - /PAL PAL - /NTSC NTSC - /SECAM SECAM - /VHS VHS - /SVHS S-VHS - /BETA BETAMAX - - RAD Radio - /FM FM - /AM AM - /LW LW - /MW MW - - TEL Telephone - /I ISDN - - MC MC (normal cassette) - /4 4.75 cm/s (normal speed for a two sided cassette) - /9 9.5 cm/s - /I Type I cassette (ferric/normal) - /II Type II cassette (chrome) - /III Type III cassette (ferric chrome) - /IV Type IV cassette (metal) - - REE Reel - /9 9.5 cm/s - /19 19 cm/s - /38 38 cm/s - /76 76 cm/s - /I Type I cassette (ferric/normal) - /II Type II cassette (chrome) - /III Type III cassette (ferric chrome) - /IV Type IV cassette (metal) - - TMOO - The 'Mood' frame is intended to reflect the mood of the audio with a - few keywords, e.g. "Romantic" or "Sad". - - -4.2.4. Rights and license frames - - TCOP - The 'Copyright message' frame, in which the string must begin with a - year and a space character (making five characters), is intended for - the copyright holder of the original sound, not the audio file - itself. The absence of this frame means only that the copyright - information is unavailable or has been removed, and must not be - interpreted to mean that the audio is public domain. Every time this - field is displayed the field must be preceded with "Copyright " (C) " - ", where (C) is one character showing a C in a circle. - - TPRO - The 'Produced notice' frame, in which the string must begin with a - year and a space character (making five characters), is intended for - the production copyright holder of the original sound, not the audio - file itself. The absence of this frame means only that the production - copyright information is unavailable or has been removed, and must - not be interpreted to mean that the audio is public domain. Every - time this field is displayed the field must be preceded with - "Produced " (P) " ", where (P) is one character showing a P in a - circle. - - TPUB - The 'Publisher' frame simply contains the name of the label or - publisher. - - TOWN - The 'File owner/licensee' frame contains the name of the owner or - licensee of the file and it's contents. - - TRSN - The 'Internet radio station name' frame contains the name of the - internet radio station from which the audio is streamed. - - TRSO - The 'Internet radio station owner' frame contains the name of the - owner of the internet radio station from which the audio is - streamed. - -4.2.5. Other text frames - - TOFN - The 'Original filename' frame contains the preferred filename for the - file, since some media doesn't allow the desired length of the - filename. The filename is case sensitive and includes its suffix. - - TDLY - The 'Playlist delay' defines the numbers of milliseconds of silence - that should be inserted before this audio. The value zero indicates - that this is a part of a multifile audio track that should be played - continuously. - - TDEN - The 'Encoding time' frame contains a timestamp describing when the - audio was encoded. Timestamp format is described in the ID3v2 - structure document [ID3v2-strct]. - - TDOR - The 'Original release time' frame contains a timestamp describing - when the original recording of the audio was released. Timestamp - format is described in the ID3v2 structure document [ID3v2-strct]. - - TDRC - The 'Recording time' frame contains a timestamp describing when the - audio was recorded. Timestamp format is described in the ID3v2 - structure document [ID3v2-strct]. - - TDRL - The 'Release time' frame contains a timestamp describing when the - audio was first released. Timestamp format is described in the ID3v2 - structure document [ID3v2-strct]. - - TDTG - The 'Tagging time' frame contains a timestamp describing then the - audio was tagged. Timestamp format is described in the ID3v2 - structure document [ID3v2-strct]. - - TSSE - The 'Software/Hardware and settings used for encoding' frame - includes the used audio encoder and its settings when the file was - encoded. Hardware refers to hardware encoders, not the computer on - which a program was run. - - TSOA - The 'Album sort order' frame defines a string which should be used - instead of the album name (TALB) for sorting purposes. E.g. an album - named "A Soundtrack" might preferably be sorted as "Soundtrack". - - TSOP - The 'Performer sort order' frame defines a string which should be - used instead of the performer (TPE2) for sorting purposes. - - TSOT - The 'Title sort order' frame defines a string which should be used - instead of the title (TIT2) for sorting purposes. - - -4.2.6. User defined text information frame - - This frame is intended for one-string text information concerning the - audio file in a similar way to the other "T"-frames. The frame body - consists of a description of the string, represented as a terminated - string, followed by the actual string. There may be more than one - "TXXX" frame in each tag, but only one with the same description. - - <Header for 'User defined text information frame', ID: "TXXX"> - Text encoding $xx - Description <text string according to encoding> $00 (00) - Value <text string according to encoding> - - -4.3. URL link frames - - With these frames dynamic data such as webpages with touring - information, price information or plain ordinary news can be added to - the tag. There may only be one URL [URL] link frame of its kind in an - tag, except when stated otherwise in the frame description. If the - text string is followed by a string termination, all the following - information should be ignored and not be displayed. All URL link - frame identifiers begins with "W". Only URL link frame identifiers - begins with "W", except for "WXXX". All URL link frames have the - following format: - - <Header for 'URL link frame', ID: "W000" - "WZZZ", excluding "WXXX" - described in 4.3.2.> - URL <text string> - - -4.3.1. URL link frames - details - - WCOM - The 'Commercial information' frame is a URL pointing at a webpage - with information such as where the album can be bought. There may be - more than one "WCOM" frame in a tag, but not with the same content. - - WCOP - The 'Copyright/Legal information' frame is a URL pointing at a - webpage where the terms of use and ownership of the file is - described. - - WOAF - The 'Official audio file webpage' frame is a URL pointing at a file - specific webpage. - - WOAR - The 'Official artist/performer webpage' frame is a URL pointing at - the artists official webpage. There may be more than one "WOAR" frame - in a tag if the audio contains more than one performer, but not with - the same content. - - WOAS - The 'Official audio source webpage' frame is a URL pointing at the - official webpage for the source of the audio file, e.g. a movie. - - WORS - The 'Official Internet radio station homepage' contains a URL - pointing at the homepage of the internet radio station. - - WPAY - The 'Payment' frame is a URL pointing at a webpage that will handle - the process of paying for this file. - - WPUB - The 'Publishers official webpage' frame is a URL pointing at the - official webpage for the publisher. - - -4.3.2. User defined URL link frame - - This frame is intended for URL [URL] links concerning the audio file - in a similar way to the other "W"-frames. The frame body consists - of a description of the string, represented as a terminated string, - followed by the actual URL. The URL is always encoded with ISO-8859-1 - [ISO-8859-1]. There may be more than one "WXXX" frame in each tag, - but only one with the same description. - - <Header for 'User defined URL link frame', ID: "WXXX"> - Text encoding $xx - Description <text string according to encoding> $00 (00) - URL <text string> - - -4.4. Music CD identifier - - This frame is intended for music that comes from a CD, so that the CD - can be identified in databases such as the CDDB [CDDB]. The frame - consists of a binary dump of the Table Of Contents, TOC, from the CD, - which is a header of 4 bytes and then 8 bytes/track on the CD plus 8 - bytes for the 'lead out', making a maximum of 804 bytes. The offset - to the beginning of every track on the CD should be described with a - four bytes absolute CD-frame address per track, and not with absolute - time. When this frame is used the presence of a valid "TRCK" frame is - REQUIRED, even if the CD's only got one track. It is recommended that - this frame is always added to tags originating from CDs. There may - only be one "MCDI" frame in each tag. - - <Header for 'Music CD identifier', ID: "MCDI"> - CD TOC <binary data> - - -4.5. Event timing codes - - This frame allows synchronisation with key events in the audio. The - header is: - - <Header for 'Event timing codes', ID: "ETCO"> - Time stamp format $xx - - Where time stamp format is: - - $01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit - $02 Absolute time, 32 bit sized, using milliseconds as unit - - Absolute time means that every stamp contains the time from the - beginning of the file. - - Followed by a list of key events in the following format: - - Type of event $xx - Time stamp $xx (xx ...) - - The 'Time stamp' is set to zero if directly at the beginning of the - sound or after the previous event. All events MUST be sorted in - chronological order. The type of event is as follows: - - $00 padding (has no meaning) - $01 end of initial silence - $02 intro start - $03 main part start - $04 outro start - $05 outro end - $06 verse start - $07 refrain start - $08 interlude start - $09 theme start - $0A variation start - $0B key change - $0C time change - $0D momentary unwanted noise (Snap, Crackle & Pop) - $0E sustained noise - $0F sustained noise end - $10 intro end - $11 main part end - $12 verse end - $13 refrain end - $14 theme end - $15 profanity - $16 profanity end - - $17-$DF reserved for future use - - $E0-$EF not predefined synch 0-F - - $F0-$FC reserved for future use - - $FD audio end (start of silence) - $FE audio file ends - $FF one more byte of events follows (all the following bytes with - the value $FF have the same function) - - Terminating the start events such as "intro start" is OPTIONAL. The - 'Not predefined synch's ($E0-EF) are for user events. You might want - to synchronise your music to something, like setting off an explosion - on-stage, activating a screensaver etc. - - There may only be one "ETCO" frame in each tag. - - -4.6. MPEG location lookup table - - To increase performance and accuracy of jumps within a MPEG [MPEG] - audio file, frames with time codes in different locations in the file - might be useful. This ID3v2 frame includes references that the - software can use to calculate positions in the file. After the frame - header follows a descriptor of how much the 'frame counter' should be - increased for every reference. If this value is two then the first - reference points out the second frame, the 2nd reference the 4th - frame, the 3rd reference the 6th frame etc. In a similar way the - 'bytes between reference' and 'milliseconds between reference' points - out bytes and milliseconds respectively. - - Each reference consists of two parts; a certain number of bits, as - defined in 'bits for bytes deviation', that describes the difference - between what is said in 'bytes between reference' and the reality and - a certain number of bits, as defined in 'bits for milliseconds - deviation', that describes the difference between what is said in - 'milliseconds between reference' and the reality. The number of bits - in every reference, i.e. 'bits for bytes deviation'+'bits for - milliseconds deviation', must be a multiple of four. There may only - be one "MLLT" frame in each tag. - - <Header for 'Location lookup table', ID: "MLLT"> - MPEG frames between reference $xx xx - Bytes between reference $xx xx xx - Milliseconds between reference $xx xx xx - Bits for bytes deviation $xx - Bits for milliseconds dev. $xx - - Then for every reference the following data is included; - - Deviation in bytes %xxx.... - Deviation in milliseconds %xxx.... - - -4.7. Synchronised tempo codes - - For a more accurate description of the tempo of a musical piece, this - frame might be used. After the header follows one byte describing - which time stamp format should be used. Then follows one or more - tempo codes. Each tempo code consists of one tempo part and one time - part. The tempo is in BPM described with one or two bytes. If the - first byte has the value $FF, one more byte follows, which is added - to the first giving a range from 2 - 510 BPM, since $00 and $01 is - reserved. $00 is used to describe a beat-free time period, which is - not the same as a music-free time period. $01 is used to indicate one - single beat-stroke followed by a beat-free period. - - The tempo descriptor is followed by a time stamp. Every time the - tempo in the music changes, a tempo descriptor may indicate this for - the player. All tempo descriptors MUST be sorted in chronological - order. The first beat-stroke in a time-period is at the same time as - the beat description occurs. There may only be one "SYTC" frame in - each tag. - - <Header for 'Synchronised tempo codes', ID: "SYTC"> - Time stamp format $xx - Tempo data <binary data> - - Where time stamp format is: - - $01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit - $02 Absolute time, 32 bit sized, using milliseconds as unit - - Absolute time means that every stamp contains the time from the - beginning of the file. - - -4.8. Unsynchronised lyrics/text transcription - - This frame contains the lyrics of the song or a text transcription of - other vocal activities. The head includes an encoding descriptor and - a content descriptor. The body consists of the actual text. The - 'Content descriptor' is a terminated string. If no descriptor is - entered, 'Content descriptor' is $00 (00) only. Newline characters - are allowed in the text. There may be more than one 'Unsynchronised - lyrics/text transcription' frame in each tag, but only one with the - same language and content descriptor. - - <Header for 'Unsynchronised lyrics/text transcription', ID: "USLT"> - Text encoding $xx - Language $xx xx xx - Content descriptor <text string according to encoding> $00 (00) - Lyrics/text <full text string according to encoding> - - -4.9. Synchronised lyrics/text - - This is another way of incorporating the words, said or sung lyrics, - in the audio file as text, this time, however, in sync with the - audio. It might also be used to describing events e.g. occurring on a - stage or on the screen in sync with the audio. The header includes a - content descriptor, represented with as terminated text string. If no - descriptor is entered, 'Content descriptor' is $00 (00) only. - - <Header for 'Synchronised lyrics/text', ID: "SYLT"> - Text encoding $xx - Language $xx xx xx - Time stamp format $xx - Content type $xx - Content descriptor <text string according to encoding> $00 (00) - - Content type: $00 is other - $01 is lyrics - $02 is text transcription - $03 is movement/part name (e.g. "Adagio") - $04 is events (e.g. "Don Quijote enters the stage") - $05 is chord (e.g. "Bb F Fsus") - $06 is trivia/'pop up' information - $07 is URLs to webpages - $08 is URLs to images - - Time stamp format: - - $01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit - $02 Absolute time, 32 bit sized, using milliseconds as unit - - Absolute time means that every stamp contains the time from the - beginning of the file. - - The text that follows the frame header differs from that of the - unsynchronised lyrics/text transcription in one major way. Each - syllable (or whatever size of text is considered to be convenient by - the encoder) is a null terminated string followed by a time stamp - denoting where in the sound file it belongs. Each sync thus has the - following structure: - - Terminated text to be synced (typically a syllable) - Sync identifier (terminator to above string) $00 (00) - Time stamp $xx (xx ...) - - The 'time stamp' is set to zero or the whole sync is omitted if - located directly at the beginning of the sound. All time stamps - should be sorted in chronological order. The sync can be considered - as a validator of the subsequent string. - - Newline characters are allowed in all "SYLT" frames and MUST be used - after every entry (name, event etc.) in a frame with the content type - $03 - $04. - - A few considerations regarding whitespace characters: Whitespace - separating words should mark the beginning of a new word, thus - occurring in front of the first syllable of a new word. This is also - valid for new line characters. A syllable followed by a comma should - not be broken apart with a sync (both the syllable and the comma - should be before the sync). - - An example: The "USLT" passage - - "Strangers in the night" $0A "Exchanging glances" - - would be "SYLT" encoded as: - - "Strang" $00 xx xx "ers" $00 xx xx " in" $00 xx xx " the" $00 xx xx - " night" $00 xx xx 0A "Ex" $00 xx xx "chang" $00 xx xx "ing" $00 xx - xx "glan" $00 xx xx "ces" $00 xx xx - - There may be more than one "SYLT" frame in each tag, but only one - with the same language and content descriptor. - - -4.10. Comments - - This frame is intended for any kind of full text information that - does not fit in any other frame. It consists of a frame header - followed by encoding, language and content descriptors and is ended - with the actual comment as a text string. Newline characters are - allowed in the comment text string. There may be more than one - comment frame in each tag, but only one with the same language and - content descriptor. - - <Header for 'Comment', ID: "COMM"> - Text encoding $xx - Language $xx xx xx - Short content descrip. <text string according to encoding> $00 (00) - The actual text <full text string according to encoding> - - -4.11. Relative volume adjustment (2) - - This is a more subjective frame than the previous ones. It allows the - user to say how much he wants to increase/decrease the volume on each - channel when the file is played. The purpose is to be able to align - all files to a reference volume, so that you don't have to change the - volume constantly. This frame may also be used to balance adjust the - audio. The volume adjustment is encoded as a fixed point decibel - value, 16 bit signed integer representing (adjustment*512), giving - +/- 64 dB with a precision of 0.001953125 dB. E.g. +2 dB is stored as - $04 00 and -2 dB is $FC 00. There may be more than one "RVA2" frame - in each tag, but only one with the same identification string. - - <Header for 'Relative volume adjustment (2)', ID: "RVA2"> - Identification <text string> $00 - - The 'identification' string is used to identify the situation and/or - device where this adjustment should apply. The following is then - repeated for every channel - - Type of channel $xx - Volume adjustment $xx xx - Bits representing peak $xx - Peak volume $xx (xx ...) - - - Type of channel: $00 Other - $01 Master volume - $02 Front right - $03 Front left - $04 Back right - $05 Back left - $06 Front centre - $07 Back centre - $08 Subwoofer - - Bits representing peak can be any number between 0 and 255. 0 means - that there is no peak volume field. The peak volume field is always - padded to whole bytes, setting the most significant bits to zero. - - -4.12. Equalisation (2) - - This is another subjective, alignment frame. It allows the user to - predefine an equalisation curve within the audio file. There may be - more than one "EQU2" frame in each tag, but only one with the same - identification string. - - <Header of 'Equalisation (2)', ID: "EQU2"> - Interpolation method $xx - Identification <text string> $00 - - The 'interpolation method' describes which method is preferred when - an interpolation between the adjustment point that follows. The - following methods are currently defined: - - $00 Band - No interpolation is made. A jump from one adjustment level to - another occurs in the middle between two adjustment points. - $01 Linear - Interpolation between adjustment points is linear. - - The 'identification' string is used to identify the situation and/or - device where this adjustment should apply. The following is then - repeated for every adjustment point - - Frequency $xx xx - Volume adjustment $xx xx - - The frequency is stored in units of 1/2 Hz, giving it a range from 0 - to 32767 Hz. - - The volume adjustment is encoded as a fixed point decibel value, 16 - bit signed integer representing (adjustment*512), giving +/- 64 dB - with a precision of 0.001953125 dB. E.g. +2 dB is stored as $04 00 - and -2 dB is $FC 00. - - Adjustment points should be ordered by frequency and one frequency - should only be described once in the frame. - - -4.13. Reverb - - Yet another subjective frame, with which you can adjust echoes of - different kinds. Reverb left/right is the delay between every bounce - in ms. Reverb bounces left/right is the number of bounces that should - be made. $FF equals an infinite number of bounces. Feedback is the - amount of volume that should be returned to the next echo bounce. $00 - is 0%, $FF is 100%. If this value were $7F, there would be 50% volume - reduction on the first bounce, 50% of that on the second and so on. - Left to left means the sound from the left bounce to be played in the - left speaker, while left to right means sound from the left bounce to - be played in the right speaker. - - 'Premix left to right' is the amount of left sound to be mixed in the - right before any reverb is applied, where $00 id 0% and $FF is 100%. - 'Premix right to left' does the same thing, but right to left. - Setting both premix to $FF would result in a mono output (if the - reverb is applied symmetric). There may only be one "RVRB" frame in - each tag. - - <Header for 'Reverb', ID: "RVRB"> - Reverb left (ms) $xx xx - Reverb right (ms) $xx xx - Reverb bounces, left $xx - Reverb bounces, right $xx - Reverb feedback, left to left $xx - Reverb feedback, left to right $xx - Reverb feedback, right to right $xx - Reverb feedback, right to left $xx - Premix left to right $xx - Premix right to left $xx - - -4.14. Attached picture - - This frame contains a picture directly related to the audio file. - Image format is the MIME type and subtype [MIME] for the image. In - the event that the MIME media type name is omitted, "image/" will be - implied. The "image/png" [PNG] or "image/jpeg" [JFIF] picture format - should be used when interoperability is wanted. Description is a - short description of the picture, represented as a terminated - text string. There may be several pictures attached to one file, each - in their individual "APIC" frame, but only one with the same content - descriptor. There may only be one picture with the picture type - declared as picture type $01 and $02 respectively. There is the - possibility to put only a link to the image file by using the 'MIME - type' "-->" and having a complete URL [URL] instead of picture data. - The use of linked files should however be used sparingly since there - is the risk of separation of files. - - <Header for 'Attached picture', ID: "APIC"> - Text encoding $xx - MIME type <text string> $00 - Picture type $xx - Description <text string according to encoding> $00 (00) - Picture data <binary data> - - - Picture type: $00 Other - $01 32x32 pixels 'file icon' (PNG only) - $02 Other file icon - $03 Cover (front) - $04 Cover (back) - $05 Leaflet page - $06 Media (e.g. label side of CD) - $07 Lead artist/lead performer/soloist - $08 Artist/performer - $09 Conductor - $0A Band/Orchestra - $0B Composer - $0C Lyricist/text writer - $0D Recording Location - $0E During recording - $0F During performance - $10 Movie/video screen capture - $11 A bright coloured fish - $12 Illustration - $13 Band/artist logotype - $14 Publisher/Studio logotype - - -4.15. General encapsulated object - - In this frame any type of file can be encapsulated. After the header, - 'Frame size' and 'Encoding' follows 'MIME type' [MIME] represented as - as a terminated string encoded with ISO 8859-1 [ISO-8859-1]. The - filename is case sensitive and is encoded as 'Encoding'. Then follows - a content description as terminated string, encoded as 'Encoding'. - The last thing in the frame is the actual object. The first two - strings may be omitted, leaving only their terminations. MIME type is - always an ISO-8859-1 text string. There may be more than one "GEOB" - frame in each tag, but only one with the same content descriptor. - - <Header for 'General encapsulated object', ID: "GEOB"> - Text encoding $xx - MIME type <text string> $00 - Filename <text string according to encoding> $00 (00) - Content description <text string according to encoding> $00 (00) - Encapsulated object <binary data> - - -4.16. Play counter - - This is simply a counter of the number of times a file has been - played. The value is increased by one every time the file begins to - play. There may only be one "PCNT" frame in each tag. When the - counter reaches all one's, one byte is inserted in front of the - counter thus making the counter eight bits bigger. The counter must - be at least 32-bits long to begin with. - - <Header for 'Play counter', ID: "PCNT"> - Counter $xx xx xx xx (xx ...) - - -4.17. Popularimeter - - The purpose of this frame is to specify how good an audio file is. - Many interesting applications could be found to this frame such as a - playlist that features better audio files more often than others or - it could be used to profile a person's taste and find other 'good' - files by comparing people's profiles. The frame contains the email - address to the user, one rating byte and a four byte play counter, - intended to be increased with one for every time the file is played. - The email is a terminated string. The rating is 1-255 where 1 is - worst and 255 is best. 0 is unknown. If no personal counter is wanted - it may be omitted. When the counter reaches all one's, one byte is - inserted in front of the counter thus making the counter eight bits - bigger in the same away as the play counter ("PCNT"). There may be - more than one "POPM" frame in each tag, but only one with the same - email address. - - <Header for 'Popularimeter', ID: "POPM"> - Email to user <text string> $00 - Rating $xx - Counter $xx xx xx xx (xx ...) - - -4.18. Recommended buffer size - - Sometimes the server from which an audio file is streamed is aware of - transmission or coding problems resulting in interruptions in the - audio stream. In these cases, the size of the buffer can be - recommended by the server using this frame. If the 'embedded info - flag' is true (1) then this indicates that an ID3 tag with the - maximum size described in 'Buffer size' may occur in the audio - stream. In such case the tag should reside between two MPEG [MPEG] - frames, if the audio is MPEG encoded. If the position of the next tag - is known, 'offset to next tag' may be used. The offset is calculated - from the end of tag in which this frame resides to the first byte of - the header in the next. This field may be omitted. Embedded tags are - generally not recommended since this could render unpredictable - behaviour from present software/hardware. - - For applications like streaming audio it might be an idea to embed - tags into the audio stream though. If the clients connects to - individual connections like HTTP and there is a possibility to begin - every transmission with a tag, then this tag should include a - 'recommended buffer size' frame. If the client is connected to a - arbitrary point in the stream, such as radio or multicast, then the - 'recommended buffer size' frame SHOULD be included in every tag. - - The 'Buffer size' should be kept to a minimum. There may only be one - "RBUF" frame in each tag. - - <Header for 'Recommended buffer size', ID: "RBUF"> - Buffer size $xx xx xx - Embedded info flag %0000000x - Offset to next tag $xx xx xx xx - - -4.19. Audio encryption - - This frame indicates if the actual audio stream is encrypted, and by - whom. Since standardisation of such encryption scheme is beyond this - document, all "AENC" frames begin with a terminated string with a - URL containing an email address, or a link to a location where an - email address can be found, that belongs to the organisation - responsible for this specific encrypted audio file. Questions - regarding the encrypted audio should be sent to the email address - specified. If a $00 is found directly after the 'Frame size' and the - audio file indeed is encrypted, the whole file may be considered - useless. - - After the 'Owner identifier', a pointer to an unencrypted part of the - audio can be specified. The 'Preview start' and 'Preview length' is - described in frames. If no part is unencrypted, these fields should - be left zeroed. After the 'preview length' field follows optionally a - data block required for decryption of the audio. There may be more - than one "AENC" frames in a tag, but only one with the same 'Owner - identifier'. - - <Header for 'Audio encryption', ID: "AENC"> - Owner identifier <text string> $00 - Preview start $xx xx - Preview length $xx xx - Encryption info <binary data> - - -4.20. Linked information - - To keep information duplication as low as possible this frame may be - used to link information from another ID3v2 tag that might reside in - another audio file or alone in a binary file. It is RECOMMENDED that - this method is only used when the files are stored on a CD-ROM or - other circumstances when the risk of file separation is low. The - frame contains a frame identifier, which is the frame that should be - linked into this tag, a URL [URL] field, where a reference to the - file where the frame is given, and additional ID data, if needed. - Data should be retrieved from the first tag found in the file to - which this link points. There may be more than one "LINK" frame in a - tag, but only one with the same contents. A linked frame is to be - considered as part of the tag and has the same restrictions as if it - was a physical part of the tag (i.e. only one "RVRB" frame allowed, - whether it's linked or not). - - <Header for 'Linked information', ID: "LINK"> - Frame identifier $xx xx xx xx - URL <text string> $00 - ID and additional data <text string(s)> - - Frames that may be linked and need no additional data are "ASPI", - "ETCO", "EQU2", "MCID", "MLLT", "OWNE", "RVA2", "RVRB", "SYTC", the - text information frames and the URL link frames. - - The "AENC", "APIC", "GEOB" and "TXXX" frames may be linked with - the content descriptor as additional ID data. - - The "USER" frame may be linked with the language field as additional - ID data. - - The "PRIV" frame may be linked with the owner identifier as - additional ID data. - - The "COMM", "SYLT" and "USLT" frames may be linked with three bytes - of language descriptor directly followed by a content descriptor as - additional ID data. - - -4.21. Position synchronisation frame - - This frame delivers information to the listener of how far into the - audio stream he picked up; in effect, it states the time offset from - the first frame in the stream. The frame layout is: - - <Head for 'Position synchronisation', ID: "POSS"> - Time stamp format $xx - Position $xx (xx ...) - - Where time stamp format is: - - $01 Absolute time, 32 bit sized, using MPEG frames as unit - $02 Absolute time, 32 bit sized, using milliseconds as unit - - and position is where in the audio the listener starts to receive, - i.e. the beginning of the next frame. If this frame is used in the - beginning of a file the value is always 0. There may only be one - "POSS" frame in each tag. - - -4.22. Terms of use frame - - This frame contains a brief description of the terms of use and - ownership of the file. More detailed information concerning the legal - terms might be available through the "WCOP" frame. Newlines are - allowed in the text. There may be more than one 'Terms of use' frame - in a tag, but only one with the same 'Language'. - - <Header for 'Terms of use frame', ID: "USER"> - Text encoding $xx - Language $xx xx xx - The actual text <text string according to encoding> - - -4.23. Ownership frame - - The ownership frame might be used as a reminder of a made transaction - or, if signed, as proof. Note that the "USER" and "TOWN" frames are - good to use in conjunction with this one. The frame begins, after the - frame ID, size and encoding fields, with a 'price paid' field. The - first three characters of this field contains the currency used for - the transaction, encoded according to ISO 4217 [ISO-4217] alphabetic - currency code. Concatenated to this is the actual price paid, as a - numerical string using "." as the decimal separator. Next is an 8 - character date string (YYYYMMDD) followed by a string with the name - of the seller as the last field in the frame. There may only be one - "OWNE" frame in a tag. - - <Header for 'Ownership frame', ID: "OWNE"> - Text encoding $xx - Price paid <text string> $00 - Date of purch. <text string> - Seller <text string according to encoding> - - -4.24. Commercial frame - - This frame enables several competing offers in the same tag by - bundling all needed information. That makes this frame rather complex - but it's an easier solution than if one tries to achieve the same - result with several frames. The frame begins, after the frame ID, - size and encoding fields, with a price string field. A price is - constructed by one three character currency code, encoded according - to ISO 4217 [ISO-4217] alphabetic currency code, followed by a - numerical value where "." is used as decimal separator. In the price - string several prices may be concatenated, separated by a "/" - character, but there may only be one currency of each type. - - The price string is followed by an 8 character date string in the - format YYYYMMDD, describing for how long the price is valid. After - that is a contact URL, with which the user can contact the seller, - followed by a one byte 'received as' field. It describes how the - audio is delivered when bought according to the following list: - - $00 Other - $01 Standard CD album with other songs - $02 Compressed audio on CD - $03 File over the Internet - $04 Stream over the Internet - $05 As note sheets - $06 As note sheets in a book with other sheets - $07 Music on other media - $08 Non-musical merchandise - - Next follows a terminated string with the name of the seller followed - by a terminated string with a short description of the product. The - last thing is the ability to include a company logotype. The first of - them is the 'Picture MIME type' field containing information about - which picture format is used. In the event that the MIME media type - name is omitted, "image/" will be implied. Currently only "image/png" - and "image/jpeg" are allowed. This format string is followed by the - binary picture data. This two last fields may be omitted if no - picture is attached. There may be more than one 'commercial frame' in - a tag, but no two may be identical. - - <Header for 'Commercial frame', ID: "COMR"> - Text encoding $xx - Price string <text string> $00 - Valid until <text string> - Contact URL <text string> $00 - Received as $xx - Name of seller <text string according to encoding> $00 (00) - Description <text string according to encoding> $00 (00) - Picture MIME type <string> $00 - Seller logo <binary data> - - -4.25. Encryption method registration - - To identify with which method a frame has been encrypted the - encryption method must be registered in the tag with this frame. The - 'Owner identifier' is a null-terminated string with a URL [URL] - containing an email address, or a link to a location where an email - address can be found, that belongs to the organisation responsible - for this specific encryption method. Questions regarding the - encryption method should be sent to the indicated email address. The - 'Method symbol' contains a value that is associated with this method - throughout the whole tag, in the range $80-F0. All other values are - reserved. The 'Method symbol' may optionally be followed by - encryption specific data. There may be several "ENCR" frames in a tag - but only one containing the same symbol and only one containing the - same owner identifier. The method must be used somewhere in the tag. - See the description of the frame encryption flag in the ID3v2 - structure document [ID3v2-strct] for more information. - - <Header for 'Encryption method registration', ID: "ENCR"> - Owner identifier <text string> $00 - Method symbol $xx - Encryption data <binary data> - - -4.26. Group identification registration - - This frame enables grouping of otherwise unrelated frames. This can - be used when some frames are to be signed. To identify which frames - belongs to a set of frames a group identifier must be registered in - the tag with this frame. The 'Owner identifier' is a null-terminated - string with a URL [URL] containing an email address, or a link to a - location where an email address can be found, that belongs to the - organisation responsible for this grouping. Questions regarding the - grouping should be sent to the indicated email address. The 'Group - symbol' contains a value that associates the frame with this group - throughout the whole tag, in the range $80-F0. All other values are - reserved. The 'Group symbol' may optionally be followed by some group - specific data, e.g. a digital signature. There may be several "GRID" - frames in a tag but only one containing the same symbol and only one - containing the same owner identifier. The group symbol must be used - somewhere in the tag. See the description of the frame grouping flag - in the ID3v2 structure document [ID3v2-strct] for more information. - - <Header for 'Group ID registration', ID: "GRID"> - Owner identifier <text string> $00 - Group symbol $xx - Group dependent data <binary data> - - -4.27. Private frame - - This frame is used to contain information from a software producer - that its program uses and does not fit into the other frames. The - frame consists of an 'Owner identifier' string and the binary data. - The 'Owner identifier' is a null-terminated string with a URL [URL] - containing an email address, or a link to a location where an email - address can be found, that belongs to the organisation responsible - for the frame. Questions regarding the frame should be sent to the - indicated email address. The tag may contain more than one "PRIV" - frame but only with different contents. - - <Header for 'Private frame', ID: "PRIV"> - Owner identifier <text string> $00 - The private data <binary data> - - -4.28. Signature frame - - This frame enables a group of frames, grouped with the 'Group - identification registration', to be signed. Although signatures can - reside inside the registration frame, it might be desired to store - the signature elsewhere, e.g. in watermarks. There may be more than - one 'signature frame' in a tag, but no two may be identical. - - <Header for 'Signature frame', ID: "SIGN"> - Group symbol $xx - Signature <binary data> - - -4.29. Seek frame - - This frame indicates where other tags in a file/stream can be found. - The 'minimum offset to next tag' is calculated from the end of this - tag to the beginning of the next. There may only be one 'seek frame' - in a tag. - - <Header for 'Seek frame', ID: "SEEK"> - Minimum offset to next tag $xx xx xx xx - - -4.30. Audio seek point index - - Audio files with variable bit rates are intrinsically difficult to - deal with in the case of seeking within the file. The ASPI frame - makes seeking easier by providing a list a seek points within the - audio file. The seek points are a fractional offset within the audio - data, providing a starting point from which to find an appropriate - point to start decoding. The presence of an ASPI frame requires the - existence of a TLEN frame, indicating the duration of the file in - milliseconds. There may only be one 'audio seek point index' frame in - a tag. - - <Header for 'Seek Point Index', ID: "ASPI"> - Indexed data start (S) $xx xx xx xx - Indexed data length (L) $xx xx xx xx - Number of index points (N) $xx xx - Bits per index point (b) $xx - - Then for every index point the following data is included; - - Fraction at index (Fi) $xx (xx) - - 'Indexed data start' is a byte offset from the beginning of the file. - 'Indexed data length' is the byte length of the audio data being - indexed. 'Number of index points' is the number of index points, as - the name implies. The recommended number is 100. 'Bits per index - point' is 8 or 16, depending on the chosen precision. 8 bits works - well for short files (less than 5 minutes of audio), while 16 bits is - advantageous for long files. 'Fraction at index' is the numerator of - the fraction representing a relative position in the data. The - denominator is 2 to the power of b. - - Here are the algorithms to be used in the calculation. The known data - must be the offset of the start of the indexed data (S), the offset - of the end of the indexed data (E), the number of index points (N), - the offset at index i (Oi). We calculate the fraction at index i - (Fi). - - Oi is the offset of the frame whose start is soonest after the point - for which the time offset is (i/N * duration). - - The frame data should be calculated as follows: - - Fi = Oi/L * 2^b (rounded down to the nearest integer) - - Offset calculation should be calculated as follows from data in the - frame: - - Oi = (Fi/2^b)*L (rounded up to the nearest integer) - - -5. Copyright - - Copyright (C) Martin Nilsson 2000. All Rights Reserved. - - This document and translations of it may be copied and furnished to - others, and derivative works that comment on or otherwise explain it - or assist in its implementation may be prepared, copied, published - and distributed, in whole or in part, without restriction of any - kind, provided that a reference to this document is included on all - such copies and derivative works. However, this document itself may - not be modified in any way and reissued as the original document. - - The limited permissions granted above are perpetual and will not be - revoked. - - This document and the information contained herein is provided on an - "AS IS" basis and THE AUTHORS DISCLAIMS ALL WARRANTIES, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF - THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED - WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - - -6. References - - [CDDB] Compact Disc Data Base - - <url:http://www.cddb.com> - - [ID3v2.3.0] Martin Nilsson, "ID3v2 informal standard". - - <url:http://www.id3.org/id3v2.3.0.txt> - - [ID3v2-strct] Martin Nilsson, - "ID3 tag version 2.4.0 - Main Structure" - - <url:http//www.id3.org/id3v2.4.0-structure.txt> - - [ISO-639-2] ISO/FDIS 639-2. - Codes for the representation of names of languages, Part 2: Alpha-3 - code. Technical committee / subcommittee: TC 37 / SC 2 - - [ISO-4217] ISO 4217:1995. - Codes for the representation of currencies and funds. - Technical committee / subcommittee: TC 68 - - [ISO-8859-1] ISO/IEC DIS 8859-1. - 8-bit single-byte coded graphic character sets, Part 1: Latin - alphabet No. 1. Technical committee / subcommittee: JTC 1 / SC 2 - - [ISRC] ISO 3901:1986 - International Standard Recording Code (ISRC). - Technical committee / subcommittee: TC 46 / SC 9 - - [JFIF] JPEG File Interchange Format, version 1.02 - - <url:http://www.w3.org/Graphics/JPEG/jfif.txt> - - [KEYWORDS] S. Bradner, 'Key words for use in RFCs to Indicate - Requirement Levels', RFC 2119, March 1997. - - <url:ftp://ftp.isi.edu/in-notes/rfc2119.txt> - - [MIME] Freed, N. and N. Borenstein, "Multipurpose Internet Mail - Extensions (MIME) Part One: Format of Internet Message Bodies", - RFC 2045, November 1996. - - <url:ftp://ftp.isi.edu/in-notes/rfc2045.txt> - - [MPEG] ISO/IEC 11172-3:1993. - Coding of moving pictures and associated audio for digital storage - media at up to about 1,5 Mbit/s, Part 3: Audio. - Technical committee / subcommittee: JTC 1 / SC 29 - and - ISO/IEC 13818-3:1995 - Generic coding of moving pictures and associated audio information, - Part 3: Audio. - Technical committee / subcommittee: JTC 1 / SC 29 - and - ISO/IEC DIS 13818-3 - Generic coding of moving pictures and associated audio information, - Part 3: Audio (Revision of ISO/IEC 13818-3:1995) - - - [PNG] Portable Network Graphics, version 1.0 - - <url:http://www.w3.org/TR/REC-png-multi.html> - - [URL] T. Berners-Lee, L. Masinter & M. McCahill, "Uniform Resource - Locators (URL).", RFC 1738, December 1994. - - <url:ftp://ftp.isi.edu/in-notes/rfc1738.txt> - - [ZLIB] P. Deutsch, Aladdin Enterprises & J-L. Gailly, "ZLIB - Compressed - Data Format Specification version 3.3", RFC 1950, May 1996. - - <url:ftp://ftp.isi.edu/in-notes/rfc1950.txt> - - -7. Appendix - - -A. Appendix A - Genre List from ID3v1 - - The following genres is defined in ID3v1 - - 0.Blues - 1.Classic Rock - 2.Country - 3.Dance - 4.Disco - 5.Funk - 6.Grunge - 7.Hip-Hop - 8.Jazz - 9.Metal - 10.New Age - 11.Oldies - 12.Other - 13.Pop - 14.R&B - 15.Rap - 16.Reggae - 17.Rock - 18.Techno - 19.Industrial - 20.Alternative - 21.Ska - 22.Death Metal - 23.Pranks - 24.Soundtrack - 25.Euro-Techno - 26.Ambient - 27.Trip-Hop - 28.Vocal - 29.Jazz+Funk - 30.Fusion - 31.Trance - 32.Classical - 33.Instrumental - 34.Acid - 35.House - 36.Game - 37.Sound Clip - 38.Gospel - 39.Noise - 40.AlternRock - 41.Bass - 42.Soul - 43.Punk - 44.Space - 45.Meditative - 46.Instrumental Pop - 47.Instrumental Rock - 48.Ethnic - 49.Gothic - 50.Darkwave - 51.Techno-Industrial - 52.Electronic - 53.Pop-Folk - 54.Eurodance - 55.Dream - 56.Southern Rock - 57.Comedy - 58.Cult - 59.Gangsta - 60.Top 40 - 61.Christian Rap - 62.Pop/Funk - 63.Jungle - 64.Native American - 65.Cabaret - 66.New Wave - 67.Psychadelic - 68.Rave - 69.Showtunes - 70.Trailer - 71.Lo-Fi - 72.Tribal - 73.Acid Punk - 74.Acid Jazz - 75.Polka - 76.Retro - 77.Musical - 78.Rock & Roll - 79.Hard Rock - - -8. Author's Address - - Written by - - Martin Nilsson - Rydsvägen 246 C. 30 - SE-584 34 Linköping - Sweden - - Email: nilsson@id3.org diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2.4.0-structure.txt b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2.4.0-structure.txt deleted file mode 100644 index 5fa156a0add..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2.4.0-structure.txt +++ /dev/null @@ -1,733 +0,0 @@ - -Informal standard M. Nilsson -Document: id3v2.4.0-structure.txt 16 September 2001 - - - ID3 tag version 2.4.0 - Main Structure - -Status of this document - - This document is an informal standard and replaces the ID3v2.3.0 - standard [ID3v2]. A formal standard will use another revision number - even if the content is identical to document. The contents in this - document may change for clarifications but never for added or altered - functionallity. - - Distribution of this document is unlimited. - - -Abstract - - This document describes the main structure of ID3v2.4.0, which is a - revised version of the ID3v2 informal standard [ID3v2] version - 2.3.0. The ID3v2 offers a flexible way of storing audio meta - information within the audio file itself. The information may be - technical information, such as equalisation curves, as well as - title, performer, copyright etc. - - ID3v2.4.0 is meant to be as close as possible to ID3v2.3.0 in order - to allow for implementations to be revised as easily as possible. - - -1. Table of contents - - Status of this document - Abstract - 1. Table of contents - 2. Conventions in this document - 2. Standard overview - 3. ID3v2 overview - 3.1. ID3v2 header - 3.2. ID3v2 extended header - 3.3. Padding - 3.4. ID3v2 footer - 4. ID3v2 frames overview - 4.1. Frame header flags - 4.1.1. Frame status flags - 4.1.2. Frame format flags - 5. Tag location - 6. Unsynchronisation - 6.1. The unsynchronisation scheme - 6.2. Synchsafe integers - 7. Copyright - 8. References - 9. Author's Address - - -2. Conventions in this document - - Text within "" is a text string exactly as it appears in a tag. - Numbers preceded with $ are hexadecimal and numbers preceded with % - are binary. $xx is used to indicate a byte with unknown content. %x - is used to indicate a bit with unknown content. The most significant - bit (MSB) of a byte is called 'bit 7' and the least significant bit - (LSB) is called 'bit 0'. - - A tag is the whole tag described in this document. A frame is a block - of information in the tag. The tag consists of a header, frames and - optional padding. A field is a piece of information; one value, a - string etc. A numeric string is a string that consists of the - characters "0123456789" only. - - The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", - "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this - document are to be interpreted as described in RFC 2119 [KEYWORDS]. - - -3. ID3v2 overview - - ID3v2 is a general tagging format for audio, which makes it possible - to store meta data about the audio inside the audio file itself. The - ID3 tag described in this document is mainly targeted at files - encoded with MPEG-1/2 layer I, MPEG-1/2 layer II, MPEG-1/2 layer III - and MPEG-2.5, but may work with other types of encoded audio or as a - stand alone format for audio meta data. - - ID3v2 is designed to be as flexible and expandable as possible to - meet new meta information needs that might arise. To achieve that - ID3v2 is constructed as a container for several information blocks, - called frames, whose format need not be known to the software that - encounters them. At the start of every frame is an unique and - predefined identifier, a size descriptor that allows software to skip - unknown frames and a flags field. The flags describes encoding - details and if the frame should remain in the tag, should it be - unknown to the software, if the file is altered. - - The bitorder in ID3v2 is most significant bit first (MSB). The - byteorder in multibyte numbers is most significant byte first (e.g. - $12345678 would be encoded $12 34 56 78), also known as big endian - and network byte order. - - Overall tag structure: - - +-----------------------------+ - | Header (10 bytes) | - +-----------------------------+ - | Extended Header | - | (variable length, OPTIONAL) | - +-----------------------------+ - | Frames (variable length) | - +-----------------------------+ - | Padding | - | (variable length, OPTIONAL) | - +-----------------------------+ - | Footer (10 bytes, OPTIONAL) | - +-----------------------------+ - - In general, padding and footer are mutually exclusive. See details in - sections 3.3, 3.4 and 5. - - -3.1. ID3v2 header - - The first part of the ID3v2 tag is the 10 byte tag header, laid out - as follows: - - ID3v2/file identifier "ID3" - ID3v2 version $04 00 - ID3v2 flags %abcd0000 - ID3v2 size 4 * %0xxxxxxx - - The first three bytes of the tag are always "ID3", to indicate that - this is an ID3v2 tag, directly followed by the two version bytes. The - first byte of ID3v2 version is its major version, while the second - byte is its revision number. In this case this is ID3v2.4.0. All - revisions are backwards compatible while major versions are not. If - software with ID3v2.4.0 and below support should encounter version - five or higher it should simply ignore the whole tag. Version or - revision will never be $FF. - - The version is followed by the ID3v2 flags field, of which currently - four flags are used. - - - a - Unsynchronisation - - Bit 7 in the 'ID3v2 flags' indicates whether or not - unsynchronisation is applied on all frames (see section 6.1 for - details); a set bit indicates usage. - - - b - Extended header - - The second bit (bit 6) indicates whether or not the header is - followed by an extended header. The extended header is described in - section 3.2. A set bit indicates the presence of an extended - header. - - - c - Experimental indicator - - The third bit (bit 5) is used as an 'experimental indicator'. This - flag SHALL always be set when the tag is in an experimental stage. - - - d - Footer present - - Bit 4 indicates that a footer (section 3.4) is present at the very - end of the tag. A set bit indicates the presence of a footer. - - - All the other flags MUST be cleared. If one of these undefined flags - are set, the tag might not be readable for a parser that does not - know the flags function. - - The ID3v2 tag size is stored as a 32 bit synchsafe integer (section - 6.2), making a total of 28 effective bits (representing up to 256MB). - - The ID3v2 tag size is the sum of the byte length of the extended - header, the padding and the frames after unsynchronisation. If a - footer is present this equals to ('total size' - 20) bytes, otherwise - ('total size' - 10) bytes. - - An ID3v2 tag can be detected with the following pattern: - $49 44 33 yy yy xx zz zz zz zz - Where yy is less than $FF, xx is the 'flags' byte and zz is less than - $80. - - -3.2. Extended header - - The extended header contains information that can provide further - insight in the structure of the tag, but is not vital to the correct - parsing of the tag information; hence the extended header is - optional. - - Extended header size 4 * %0xxxxxxx - Number of flag bytes $01 - Extended Flags $xx - - Where the 'Extended header size' is the size of the whole extended - header, stored as a 32 bit synchsafe integer. An extended header can - thus never have a size of fewer than six bytes. - - The extended flags field, with its size described by 'number of flag - bytes', is defined as: - - %0bcd0000 - - Each flag that is set in the extended header has data attached, which - comes in the order in which the flags are encountered (i.e. the data - for flag 'b' comes before the data for flag 'c'). Unset flags cannot - have any attached data. All unknown flags MUST be unset and their - corresponding data removed when a tag is modified. - - Every set flag's data starts with a length byte, which contains a - value between 0 and 127 ($00 - $7f), followed by data that has the - field length indicated by the length byte. If a flag has no attached - data, the value $00 is used as length byte. - - - b - Tag is an update - - If this flag is set, the present tag is an update of a tag found - earlier in the present file or stream. If frames defined as unique - are found in the present tag, they are to override any - corresponding ones found in the earlier tag. This flag has no - corresponding data. - - Flag data length $00 - - c - CRC data present - - If this flag is set, a CRC-32 [ISO-3309] data is included in the - extended header. The CRC is calculated on all the data between the - header and footer as indicated by the header's tag length field, - minus the extended header. Note that this includes the padding (if - there is any), but excludes the footer. The CRC-32 is stored as an - 35 bit synchsafe integer, leaving the upper four bits always - zeroed. - - Flag data length $05 - Total frame CRC 5 * %0xxxxxxx - - d - Tag restrictions - - For some applications it might be desired to restrict a tag in more - ways than imposed by the ID3v2 specification. Note that the - presence of these restrictions does not affect how the tag is - decoded, merely how it was restricted before encoding. If this flag - is set the tag is restricted as follows: - - Flag data length $01 - Restrictions %ppqrrstt - - p - Tag size restrictions - - 00 No more than 128 frames and 1 MB total tag size. - 01 No more than 64 frames and 128 KB total tag size. - 10 No more than 32 frames and 40 KB total tag size. - 11 No more than 32 frames and 4 KB total tag size. - - q - Text encoding restrictions - - 0 No restrictions - 1 Strings are only encoded with ISO-8859-1 [ISO-8859-1] or - UTF-8 [UTF-8]. - - r - Text fields size restrictions - - 00 No restrictions - 01 No string is longer than 1024 characters. - 10 No string is longer than 128 characters. - 11 No string is longer than 30 characters. - - Note that nothing is said about how many bytes is used to - represent those characters, since it is encoding dependent. If a - text frame consists of more than one string, the sum of the - strungs is restricted as stated. - - s - Image encoding restrictions - - 0 No restrictions - 1 Images are encoded only with PNG [PNG] or JPEG [JFIF]. - - t - Image size restrictions - - 00 No restrictions - 01 All images are 256x256 pixels or smaller. - 10 All images are 64x64 pixels or smaller. - 11 All images are exactly 64x64 pixels, unless required - otherwise. - - -3.3. Padding - - It is OPTIONAL to include padding after the final frame (at the end - of the ID3 tag), making the size of all the frames together smaller - than the size given in the tag header. A possible purpose of this - padding is to allow for adding a few additional frames or enlarge - existing frames within the tag without having to rewrite the entire - file. The value of the padding bytes must be $00. A tag MUST NOT have - any padding between the frames or between the tag header and the - frames. Furthermore it MUST NOT have any padding when a tag footer is - added to the tag. - - -3.4. ID3v2 footer - - To speed up the process of locating an ID3v2 tag when searching from - the end of a file, a footer can be added to the tag. It is REQUIRED - to add a footer to an appended tag, i.e. a tag located after all - audio data. The footer is a copy of the header, but with a different - identifier. - - ID3v2 identifier "3DI" - ID3v2 version $04 00 - ID3v2 flags %abcd0000 - ID3v2 size 4 * %0xxxxxxx - - -4. ID3v2 frame overview - - All ID3v2 frames consists of one frame header followed by one or more - fields containing the actual information. The header is always 10 - bytes and laid out as follows: - - Frame ID $xx xx xx xx (four characters) - Size 4 * %0xxxxxxx - Flags $xx xx - - The frame ID is made out of the characters capital A-Z and 0-9. - Identifiers beginning with "X", "Y" and "Z" are for experimental - frames and free for everyone to use, without the need to set the - experimental bit in the tag header. Bear in mind that someone else - might have used the same identifier as you. All other identifiers are - either used or reserved for future use. - - The frame ID is followed by a size descriptor containing the size of - the data in the final frame, after encryption, compression and - unsynchronisation. The size is excluding the frame header ('total - frame size' - 10 bytes) and stored as a 32 bit synchsafe integer. - - In the frame header the size descriptor is followed by two flag - bytes. These flags are described in section 4.1. - - There is no fixed order of the frames' appearance in the tag, - although it is desired that the frames are arranged in order of - significance concerning the recognition of the file. An example of - such order: UFID, TIT2, MCDI, TRCK ... - - A tag MUST contain at least one frame. A frame must be at least 1 - byte big, excluding the header. - - If nothing else is said, strings, including numeric strings and URLs - [URL], are represented as ISO-8859-1 [ISO-8859-1] characters in the - range $20 - $FF. Such strings are represented in frame descriptions - as <text string>, or <full text string> if newlines are allowed. If - nothing else is said newline character is forbidden. In ISO-8859-1 a - newline is represented, when allowed, with $0A only. - - Frames that allow different types of text encoding contains a text - encoding description byte. Possible encodings: - - $00 ISO-8859-1 [ISO-8859-1]. Terminated with $00. - $01 UTF-16 [UTF-16] encoded Unicode [UNICODE] with BOM. All - strings in the same frame SHALL have the same byteorder. - Terminated with $00 00. - $02 UTF-16BE [UTF-16] encoded Unicode [UNICODE] without BOM. - Terminated with $00 00. - $03 UTF-8 [UTF-8] encoded Unicode [UNICODE]. Terminated with $00. - - Strings dependent on encoding are represented in frame descriptions - as <text string according to encoding>, or <full text string - according to encoding> if newlines are allowed. Any empty strings of - type $01 which are NULL-terminated may have the Unicode BOM followed - by a Unicode NULL ($FF FE 00 00 or $FE FF 00 00). - - The timestamp fields are based on a subset of ISO 8601. When being as - precise as possible the format of a time string is - yyyy-MM-ddTHH:mm:ss (year, "-", month, "-", day, "T", hour (out of - 24), ":", minutes, ":", seconds), but the precision may be reduced by - removing as many time indicators as wanted. Hence valid timestamps - are - yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-ddTHH, yyyy-MM-ddTHH:mm and - yyyy-MM-ddTHH:mm:ss. All time stamps are UTC. For durations, use - the slash character as described in 8601, and for multiple non- - contiguous dates, use multiple strings, if allowed by the frame - definition. - - The three byte language field, present in several frames, is used to - describe the language of the frame's content, according to ISO-639-2 - [ISO-639-2]. The language should be represented in lower case. If the - language is not known the string "XXX" should be used. - - All URLs [URL] MAY be relative, e.g. "picture.png", "../doc.txt". - - If a frame is longer than it should be, e.g. having more fields than - specified in this document, that indicates that additions to the - frame have been made in a later version of the ID3v2 standard. This - is reflected by the revision number in the header of the tag. - - -4.1. Frame header flags - - In the frame header the size descriptor is followed by two flag - bytes. All unused flags MUST be cleared. The first byte is for - 'status messages' and the second byte is a format description. If an - unknown flag is set in the first byte the frame MUST NOT be changed - without that bit cleared. If an unknown flag is set in the second - byte the frame is likely to not be readable. Some flags in the second - byte indicates that extra information is added to the header. These - fields of extra information is ordered as the flags that indicates - them. The flags field is defined as follows (l and o left out because - ther resemblence to one and zero): - - %0abc0000 %0h00kmnp - - Some frame format flags indicate that additional information fields - are added to the frame. This information is added after the frame - header and before the frame data in the same order as the flags that - indicates them. I.e. the four bytes of decompressed size will precede - the encryption method byte. These additions affects the 'frame size' - field, but are not subject to encryption or compression. - - The default status flags setting for a frame is, unless stated - otherwise, 'preserved if tag is altered' and 'preserved if file is - altered', i.e. %00000000. - - -4.1.1. Frame status flags - - a - Tag alter preservation - - This flag tells the tag parser what to do with this frame if it is - unknown and the tag is altered in any way. This applies to all - kinds of alterations, including adding more padding and reordering - the frames. - - 0 Frame should be preserved. - 1 Frame should be discarded. - - - b - File alter preservation - - This flag tells the tag parser what to do with this frame if it is - unknown and the file, excluding the tag, is altered. This does not - apply when the audio is completely replaced with other audio data. - - 0 Frame should be preserved. - 1 Frame should be discarded. - - - c - Read only - - This flag, if set, tells the software that the contents of this - frame are intended to be read only. Changing the contents might - break something, e.g. a signature. If the contents are changed, - without knowledge of why the frame was flagged read only and - without taking the proper means to compensate, e.g. recalculating - the signature, the bit MUST be cleared. - - -4.1.2. Frame format flags - - h - Grouping identity - - This flag indicates whether or not this frame belongs in a group - with other frames. If set, a group identifier byte is added to the - frame. Every frame with the same group identifier belongs to the - same group. - - 0 Frame does not contain group information - 1 Frame contains group information - - - k - Compression - - This flag indicates whether or not the frame is compressed. - A 'Data Length Indicator' byte MUST be included in the frame. - - 0 Frame is not compressed. - 1 Frame is compressed using zlib [zlib] deflate method. - If set, this requires the 'Data Length Indicator' bit - to be set as well. - - - m - Encryption - - This flag indicates whether or not the frame is encrypted. If set, - one byte indicating with which method it was encrypted will be - added to the frame. See description of the ENCR frame for more - information about encryption method registration. Encryption - should be done after compression. Whether or not setting this flag - requires the presence of a 'Data Length Indicator' depends on the - specific algorithm used. - - 0 Frame is not encrypted. - 1 Frame is encrypted. - - n - Unsynchronisation - - This flag indicates whether or not unsynchronisation was applied - to this frame. See section 6 for details on unsynchronisation. - If this flag is set all data from the end of this header to the - end of this frame has been unsynchronised. Although desirable, the - presence of a 'Data Length Indicator' is not made mandatory by - unsynchronisation. - - 0 Frame has not been unsynchronised. - 1 Frame has been unsyrchronised. - - p - Data length indicator - - This flag indicates that a data length indicator has been added to - the frame. The data length indicator is the value one would write - as the 'Frame length' if all of the frame format flags were - zeroed, represented as a 32 bit synchsafe integer. - - 0 There is no Data Length Indicator. - 1 A data length Indicator has been added to the frame. - - -5. Tag location - - The default location of an ID3v2 tag is prepended to the audio so - that players can benefit from the information when the data is - streamed. It is however possible to append the tag, or make a - prepend/append combination. When deciding upon where an unembedded - tag should be located, the following order of preference SHOULD be - considered. - - 1. Prepend the tag. - - 2. Prepend a tag with all vital information and add a second tag at - the end of the file, before tags from other tagging systems. The - first tag is required to have a SEEK frame. - - 3. Add a tag at the end of the file, before tags from other tagging - systems. - - In case 2 and 3 the tag can simply be appended if no other known tags - are present. The suggested method to find ID3v2 tags are: - - 1. Look for a prepended tag using the pattern found in section 3.1. - - 2. If a SEEK frame was found, use its values to guide further - searching. - - 3. Look for a tag footer, scanning from the back of the file. - - For every new tag that is found, the old tag should be discarded - unless the update flag in the extended header (section 3.2) is set. - - -6. Unsynchronisation - - The only purpose of unsynchronisation is to make the ID3v2 tag as - compatible as possible with existing software and hardware. There is - no use in 'unsynchronising' tags if the file is only to be processed - only by ID3v2 aware software and hardware. Unsynchronisation is only - useful with tags in MPEG 1/2 layer I, II and III, MPEG 2.5 and AAC - files. - - -6.1. The unsynchronisation scheme - - Whenever a false synchronisation is found within the tag, one zeroed - byte is inserted after the first false synchronisation byte. The - format of synchronisations that should be altered by ID3 encoders is - as follows: - - %11111111 111xxxxx - - and should be replaced with: - - %11111111 00000000 111xxxxx - - This has the side effect that all $FF 00 combinations have to be - altered, so they will not be affected by the decoding process. - Therefore all the $FF 00 combinations have to be replaced with the - $FF 00 00 combination during the unsynchronisation. - - To indicate usage of the unsynchronisation, the unsynchronisation - flag in the frame header should be set. This bit MUST be set if the - frame was altered by the unsynchronisation and SHOULD NOT be set if - unaltered. If all frames in the tag are unsynchronised the - unsynchronisation flag in the tag header SHOULD be set. It MUST NOT - be set if the tag has a frame which is not unsynchronised. - - Assume the first byte of the audio to be $FF. The special case when - the last byte of the last frame is $FF and no padding nor footer is - used will then introduce a false synchronisation. This can be solved - by adding a footer, adding padding or unsynchronising the frame and - add $00 to the end of the frame data, thus adding more byte to the - frame size than a normal unsynchronisation would. Although not - preferred, it is allowed to apply the last method on all frames - ending with $FF. - - It is preferred that the tag is either completely unsynchronised or - not unsynchronised at all. A completely unsynchronised tag has no - false synchonisations in it, as defined above, and does not end with - $FF. A completely non-unsynchronised tag contains no unsynchronised - frames, and thus the unsynchronisation flag in the header is cleared. - - Do bear in mind, that if compression or encryption is used, the - unsynchronisation scheme MUST be applied afterwards. When decoding an - unsynchronised frame, the unsynchronisation scheme MUST be reversed - first, encryption and decompression afterwards. - - -6.2. Synchsafe integers - - In some parts of the tag it is inconvenient to use the - unsychronisation scheme because the size of unsynchronised data is - not known in advance, which is particularly problematic with size - descriptors. The solution in ID3v2 is to use synchsafe integers, in - which there can never be any false synchs. Synchsafe integers are - integers that keep its highest bit (bit 7) zeroed, making seven bits - out of eight available. Thus a 32 bit synchsafe integer can store 28 - bits of information. - - Example: - - 255 (%11111111) encoded as a 16 bit synchsafe integer is 383 - (%00000001 01111111). - - -7. Copyright - - Copyright (C) Martin Nilsson 2000. All Rights Reserved. - - This document and translations of it may be copied and furnished to - others, and derivative works that comment on or otherwise explain it - or assist in its implementation may be prepared, copied, published - and distributed, in whole or in part, without restriction of any - kind, provided that a reference to this document is included on all - such copies and derivative works. However, this document itself may - not be modified in any way and reissued as the original document. - - The limited permissions granted above are perpetual and will not be - revoked. - - This document and the information contained herein is provided on an - 'AS IS' basis and THE AUTHORS DISCLAIMS ALL WARRANTIES, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF - THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED - WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - - -8. References - - [ID3v2] Martin Nilsson, 'ID3v2 informal standard'. - - <url:http://www.id3.org/id3v2.3.0.txt> - - [ISO-639-2] ISO/FDIS 639-2. - 'Codes for the representation of names of languages, Part 2: Alpha-3 - code.' Technical committee / subcommittee: TC 37 / SC 2 - - [ISO-3309] ISO 3309 - 'Information Processing Systems--Data Communication High-Level Data - Link Control Procedure--Frame Structure', IS 3309, October 1984, 3rd - Edition. - - [ISO-8859-1] ISO/IEC DIS 8859-1. - '8-bit single-byte coded graphic character sets, Part 1: Latin - alphabet No. 1.' Technical committee / subcommittee: JTC 1 / SC 2 - - [JFIF] 'JPEG File Interchange Format, version 1.02' - - <url:http://www.w3.org/Graphics/JPEG/jfif.txt> - - [KEYWORDS] S. Bradner, 'Key words for use in RFCs to Indicate - Requirement Levels', RFC 2119, March 1997. - - <url:ftp://ftp.isi.edu/in-notes/rfc2119.txt> - - [MPEG] ISO/IEC 11172-3:1993. - 'Coding of moving pictures and associated audio for digital storage - media at up to about 1,5 Mbit/s, Part 3: Audio.' - Technical committee / subcommittee: JTC 1 / SC 29 - and - ISO/IEC 13818-3:1995 - 'Generic coding of moving pictures and associated audio information, - Part 3: Audio.' - Technical committee / subcommittee: JTC 1 / SC 29 - and - ISO/IEC DIS 13818-3 - 'Generic coding of moving pictures and associated audio information, - Part 3: Audio (Revision of ISO/IEC 13818-3:1995)' - - [PNG] 'Portable Network Graphics, version 1.0' - - <url:http://www.w3.org/TR/REC-png-multi.html> - - [UNICODE] The Unicode Consortium, - 'The Unicode Standard Version 3.0', ISBN 0-201-61633-5. - - <url:http://www.unicode.org/unicode/standard/versions/Unicode3.0.htm> - - [URL] T. Berners-Lee, L. Masinter & M. McCahill, 'Uniform Resource - Locators (URL)', RFC 1738, December 1994. - - <url:ftp://ftp.isi.edu/in-notes/rfc1738.txt> - - [UTF-8] F. Yergeau, 'UTF-8, a transformation format of ISO 10646', - RFC 2279, January 1998. - - <url:ftp://ftp.isi.edu/in-notes/rfc2279.txt> - - [UTF-16] F. Yergeau, 'UTF-16, an encoding of ISO 10646', RFC 2781, - February 2000. - - <url:ftp://ftp.isi.edu/in-notes/rfc2781.txt> - - [ZLIB] P. Deutsch, Aladdin Enterprises & J-L. Gailly, 'ZLIB - Compressed Data Format Specification version 3.3', RFC 1950, - May 1996. - - <url:ftp://ftp.isi.edu/in-notes/rfc1950.txt> - - -9. Author's Address - - Written by - - Martin Nilsson - Rydsvägen 246 C. 30 - SE-584 34 Linköping - Sweden - - Email: nilsson@id3.org - diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2extendedheader.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2extendedheader.cpp deleted file mode 100644 index ddcfd452f6e..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2extendedheader.cpp +++ /dev/null @@ -1,71 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include "id3v2extendedheader.h" -#include "id3v2synchdata.h" - -using namespace TagLib; -using namespace ID3v2; - -class ExtendedHeader::ExtendedHeaderPrivate -{ -public: - ExtendedHeaderPrivate() : size(0) {} - - uint size; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public methods -//////////////////////////////////////////////////////////////////////////////// - -ExtendedHeader::ExtendedHeader() -{ - d = new ExtendedHeaderPrivate(); -} - -ExtendedHeader::~ExtendedHeader() -{ - delete d; -} - -TagLib::uint ExtendedHeader::size() const -{ - return d->size; -} - -void ExtendedHeader::setData(const ByteVector &data) -{ - parse(data); -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void ExtendedHeader::parse(const ByteVector &data) -{ - d->size = SynchData::toUInt(data.mid(0, 4)); // (structure 3.2 "Extended header size") -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2extendedheader.h b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2extendedheader.h deleted file mode 100644 index d7227e9d184..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2extendedheader.h +++ /dev/null @@ -1,93 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_ID3V2EXTENDEDHEADER_H -#define TAGLIB_ID3V2EXTENDEDHEADER_H - -#include "taglib_export.h" -#include "tbytevector.h" -#include "taglib.h" - -namespace TagLib { - - namespace ID3v2 { - - //! ID3v2 extended header implementation - - /*! - * This class implements ID3v2 extended headers. It attempts to follow, - * both semantically and programatically, the structure specified in - * the ID3v2 standard. The API is based on the properties of ID3v2 extended - * headers specified there. If any of the terms used in this documentation - * are unclear please check the specification in the linked section. - * (Structure, <a href="id3v2-structure.html#3.2">3.2</a>) - */ - - class TAGLIB_EXPORT ExtendedHeader - { - public: - /*! - * Constructs an empty ID3v2 extended header. - */ - ExtendedHeader(); - - /*! - * Destroys the extended header. - */ - virtual ~ExtendedHeader(); - - /*! - * Returns the size of the extended header. This is variable for the - * extended header. - */ - uint size() const; - - /*! - * Sets the data that will be used as the extended header. Since the - * length is not known before the extended header has been parsed, this - * should just be a pointer to the first byte of the extended header. It - * will determine the length internally and make that available through - * size(). - */ - void setData(const ByteVector &data); - - protected: - /*! - * Called by setData() to parse the extended header data. It makes this - * information available through the public API. - */ - void parse(const ByteVector &data); - - private: - ExtendedHeader(const ExtendedHeader &); - ExtendedHeader &operator=(const ExtendedHeader &); - - class ExtendedHeaderPrivate; - ExtendedHeaderPrivate *d; - }; - - } -} -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2footer.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2footer.cpp deleted file mode 100644 index defbb17ef81..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2footer.cpp +++ /dev/null @@ -1,60 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include "id3v2footer.h" -#include "id3v2header.h" - -using namespace TagLib; -using namespace ID3v2; - -class Footer::FooterPrivate -{ -public: - static const uint size = 10; -}; - -Footer::Footer() -{ - -} - -Footer::~Footer() -{ - -} - -TagLib::uint Footer::size() -{ - return FooterPrivate::size; -} - -ByteVector Footer::render(const Header *header) const -{ - ByteVector headerData = header->render(); - headerData[0] = '3'; - headerData[1] = 'D'; - headerData[2] = 'I'; - return headerData; -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2footer.h b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2footer.h deleted file mode 100644 index 1374a149574..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2footer.h +++ /dev/null @@ -1,82 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_ID3V2FOOTER_H -#define TAGLIB_ID3V2FOOTER_H - -#include "taglib_export.h" -#include "tbytevector.h" - -namespace TagLib { - - namespace ID3v2 { - - class Header; - - //! ID3v2 footer implementation - - /*! - * Per the ID3v2 specification, the tag's footer is just a copy of the - * information in the header. As such there is no API for reading the - * data from the header, it can just as easily be done from the header. - * - * In fact, at this point, TagLib does not even parse the footer since - * it is not useful internally. However, if the flag to include a footer - * has been set in the ID3v2::Tag, TagLib will render a footer. - */ - - class TAGLIB_EXPORT Footer - { - public: - /*! - * Constructs an empty ID3v2 footer. - */ - Footer(); - /*! - * Destroys the footer. - */ - virtual ~Footer(); - - /*! - * Returns the size of the footer. Presently this is always 10 bytes. - */ - static uint size(); - - /*! - * Renders the footer based on the data in \a header. - */ - ByteVector render(const Header *header) const; - - private: - Footer(const Footer &); - Footer &operator=(const Footer &); - - class FooterPrivate; - FooterPrivate *d; - }; - - } -} -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2frame.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2frame.cpp deleted file mode 100644 index e15adc8c03d..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2frame.cpp +++ /dev/null @@ -1,791 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#if HAVE_ZLIB -#include <zlib.h> -#endif - -#include <bitset> - -#include <tdebug.h> -#include <tstringlist.h> - -#include "id3v2tag.h" -#include "id3v2frame.h" -#include "id3v2synchdata.h" -#include "tpropertymap.h" -#include "frames/textidentificationframe.h" -#include "frames/urllinkframe.h" -#include "frames/unsynchronizedlyricsframe.h" -#include "frames/commentsframe.h" -#include "frames/unknownframe.h" - -using namespace TagLib; -using namespace ID3v2; - -class Frame::FramePrivate -{ -public: - FramePrivate() : - header(0) - {} - - ~FramePrivate() - { - delete header; - } - - Frame::Header *header; -}; - -namespace -{ - bool isValidFrameID(const ByteVector &frameID) - { - if(frameID.size() != 4) - return false; - - for(ByteVector::ConstIterator it = frameID.begin(); it != frameID.end(); it++) { - if( (*it < 'A' || *it > 'Z') && (*it < '0' || *it > '9') ) { - return false; - } - } - return true; - } -} - -//////////////////////////////////////////////////////////////////////////////// -// static methods -//////////////////////////////////////////////////////////////////////////////// - -TagLib::uint Frame::headerSize() -{ - return Header::size(); -} - -TagLib::uint Frame::headerSize(uint version) -{ - return Header::size(version); -} - -ByteVector Frame::textDelimiter(String::Type t) -{ - ByteVector d = char(0); - if(t == String::UTF16 || t == String::UTF16BE || t == String::UTF16LE) - d.append(char(0)); - return d; -} - -const String Frame::instrumentPrefix("PERFORMER:"); -const String Frame::commentPrefix("COMMENT:"); -const String Frame::lyricsPrefix("LYRICS:"); -const String Frame::urlPrefix("URL:"); - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Frame *Frame::createTextualFrame(const String &key, const StringList &values) //static -{ - // check if the key is contained in the key<=>frameID mapping - ByteVector frameID = keyToFrameID(key); - if(!frameID.isNull()) { - if(frameID[0] == 'T'){ // text frame - TextIdentificationFrame *frame = new TextIdentificationFrame(frameID, String::UTF8); - frame->setText(values); - return frame; - } else if(values.size() == 1){ // URL frame (not WXXX); support only one value - UrlLinkFrame* frame = new UrlLinkFrame(frameID); - frame->setUrl(values.front()); - return frame; - } - } - // now we check if it's one of the "special" cases: - // -LYRICS: depending on the number of values, use USLT or TXXX (with description=LYRICS) - if((key == "LYRICS" || key.startsWith(lyricsPrefix)) && values.size() == 1){ - UnsynchronizedLyricsFrame *frame = new UnsynchronizedLyricsFrame(); - frame->setDescription(key == "LYRICS" ? key : key.substr(lyricsPrefix.size())); - frame->setText(values.front()); - return frame; - } - // -URL: depending on the number of values, use WXXX or TXXX (with description=URL) - if((key == "URL" || key.startsWith(urlPrefix)) && values.size() == 1){ - UserUrlLinkFrame *frame = new UserUrlLinkFrame(String::UTF8); - frame->setDescription(key == "URL" ? key : key.substr(urlPrefix.size())); - frame->setUrl(values.front()); - return frame; - } - // -COMMENT: depending on the number of values, use COMM or TXXX (with description=COMMENT) - if((key == "COMMENT" || key.startsWith(commentPrefix)) && values.size() == 1){ - CommentsFrame *frame = new CommentsFrame(String::UTF8); - frame->setDescription(key == "COMMENT" ? key : key.substr(commentPrefix.size())); - frame->setText(values.front()); - return frame; - } - // if non of the above cases apply, we use a TXXX frame with the key as description - return new UserTextIdentificationFrame(key, values, String::UTF8); -} - -Frame::~Frame() -{ - delete d; -} - -ByteVector Frame::frameID() const -{ - if(d->header) - return d->header->frameID(); - else - return ByteVector::null; -} - -TagLib::uint Frame::size() const -{ - if(d->header) - return d->header->frameSize(); - else - return 0; -} - -void Frame::setData(const ByteVector &data) -{ - parse(data); -} - -void Frame::setText(const String &) -{ - -} - -ByteVector Frame::render() const -{ - ByteVector fieldData = renderFields(); - d->header->setFrameSize(fieldData.size()); - ByteVector headerData = d->header->render(); - - return headerData + fieldData; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -Frame::Frame(const ByteVector &data) -{ - d = new FramePrivate; - d->header = new Header(data); -} - -Frame::Frame(Header *h) -{ - d = new FramePrivate; - d->header = h; -} - -Frame::Header *Frame::header() const -{ - return d->header; -} - -void Frame::setHeader(Header *h, bool deleteCurrent) -{ - if(deleteCurrent) - delete d->header; - - d->header = h; -} - -void Frame::parse(const ByteVector &data) -{ - if(d->header) - d->header->setData(data); - else - d->header = new Header(data); - - parseFields(fieldData(data)); -} - -ByteVector Frame::fieldData(const ByteVector &frameData) const -{ - uint headerSize = Header::size(d->header->version()); - - uint frameDataOffset = headerSize; - uint frameDataLength = size(); - - if(d->header->compression() || d->header->dataLengthIndicator()) { - frameDataLength = SynchData::toUInt(frameData.mid(headerSize, 4)); - frameDataOffset += 4; - } - -#if HAVE_ZLIB - if(d->header->compression() && - !d->header->encryption()) - { - ByteVector data(frameDataLength); - uLongf uLongTmp = frameDataLength; - ::uncompress((Bytef *) data.data(), - (uLongf *) &uLongTmp, - (Bytef *) frameData.data() + frameDataOffset, - size()); - return data; - } - else -#endif - return frameData.mid(frameDataOffset, frameDataLength); -} - -String Frame::readStringField(const ByteVector &data, String::Type encoding, int *position) -{ - int start = 0; - - if(!position) - position = &start; - - ByteVector delimiter = textDelimiter(encoding); - - int end = data.find(delimiter, *position, delimiter.size()); - - if(end < *position) - return String::null; - - String str; - if(encoding == String::Latin1) - str = Tag::latin1StringHandler()->parse(data.mid(*position, end - *position)); - else - str = String(data.mid(*position, end - *position), encoding); - - *position = end + delimiter.size(); - - return str; -} - -String::Type Frame::checkEncoding(const StringList &fields, String::Type encoding) // static -{ - return checkEncoding(fields, encoding, 4); -} - -String::Type Frame::checkEncoding(const StringList &fields, String::Type encoding, uint version) // static -{ - if((encoding == String::UTF8 || encoding == String::UTF16BE) && version != 4) - return String::UTF16; - - if(encoding != String::Latin1) - return encoding; - - for(StringList::ConstIterator it = fields.begin(); it != fields.end(); ++it) { - if(!(*it).isLatin1()) { - if(version == 4) { - debug("Frame::checkEncoding() -- Rendering using UTF8."); - return String::UTF8; - } - else { - debug("Frame::checkEncoding() -- Rendering using UTF16."); - return String::UTF16; - } - } - } - - return String::Latin1; -} - -String::Type Frame::checkTextEncoding(const StringList &fields, String::Type encoding) const -{ - return checkEncoding(fields, encoding, header()->version()); -} - -static const TagLib::uint frameTranslationSize = 51; -static const char *frameTranslation[][2] = { - // Text information frames - { "TALB", "ALBUM"}, - { "TBPM", "BPM" }, - { "TCOM", "COMPOSER" }, - { "TCON", "GENRE" }, - { "TCOP", "COPYRIGHT" }, - { "TDEN", "ENCODINGTIME" }, - { "TDLY", "PLAYLISTDELAY" }, - { "TDOR", "ORIGINALDATE" }, - { "TDRC", "DATE" }, - // { "TRDA", "DATE" }, // id3 v2.3, replaced by TDRC in v2.4 - // { "TDAT", "DATE" }, // id3 v2.3, replaced by TDRC in v2.4 - // { "TYER", "DATE" }, // id3 v2.3, replaced by TDRC in v2.4 - // { "TIME", "DATE" }, // id3 v2.3, replaced by TDRC in v2.4 - { "TDRL", "RELEASEDATE" }, - { "TDTG", "TAGGINGDATE" }, - { "TENC", "ENCODEDBY" }, - { "TEXT", "LYRICIST" }, - { "TFLT", "FILETYPE" }, - //{ "TIPL", "INVOLVEDPEOPLE" }, handled separately - { "TIT1", "CONTENTGROUP" }, - { "TIT2", "TITLE"}, - { "TIT3", "SUBTITLE" }, - { "TKEY", "INITIALKEY" }, - { "TLAN", "LANGUAGE" }, - { "TLEN", "LENGTH" }, - //{ "TMCL", "MUSICIANCREDITS" }, handled separately - { "TMED", "MEDIATYPE" }, - { "TMOO", "MOOD" }, - { "TOAL", "ORIGINALALBUM" }, - { "TOFN", "ORIGINALFILENAME" }, - { "TOLY", "ORIGINALLYRICIST" }, - { "TOPE", "ORIGINALARTIST" }, - { "TOWN", "OWNER" }, - { "TPE1", "ARTIST"}, - { "TPE2", "ALBUMARTIST" }, // id3's spec says 'PERFORMER', but most programs use 'ALBUMARTIST' - { "TPE3", "CONDUCTOR" }, - { "TPE4", "REMIXER" }, // could also be ARRANGER - { "TPOS", "DISCNUMBER" }, - { "TPRO", "PRODUCEDNOTICE" }, - { "TPUB", "PUBLISHER" }, - { "TRCK", "TRACKNUMBER" }, - { "TRSN", "RADIOSTATION" }, - { "TRSO", "RADIOSTATIONOWNER" }, - { "TSOA", "ALBUMSORT" }, - { "TSOP", "ARTISTSORT" }, - { "TSOT", "TITLESORT" }, - { "TSO2", "ALBUMARTISTSORT" }, // non-standard, used by iTunes - { "TSRC", "ISRC" }, - { "TSSE", "ENCODING" }, - // URL frames - { "WCOP", "COPYRIGHTURL" }, - { "WOAF", "FILEWEBPAGE" }, - { "WOAR", "ARTISTWEBPAGE" }, - { "WOAS", "AUDIOSOURCEWEBPAGE" }, - { "WORS", "RADIOSTATIONWEBPAGE" }, - { "WPAY", "PAYMENTWEBPAGE" }, - { "WPUB", "PUBLISHERWEBPAGE" }, - //{ "WXXX", "URL"}, handled specially - // Other frames - { "COMM", "COMMENT" }, - //{ "USLT", "LYRICS" }, handled specially -}; - -Map<ByteVector, String> &idMap() -{ - static Map<ByteVector, String> m; - if(m.isEmpty()) - for(size_t i = 0; i < frameTranslationSize; ++i) - m[frameTranslation[i][0]] = frameTranslation[i][1]; - return m; -} - -// list of deprecated frames and their successors -static const TagLib::uint deprecatedFramesSize = 4; -static const char *deprecatedFrames[][2] = { - {"TRDA", "TDRC"}, // 2.3 -> 2.4 (http://en.wikipedia.org/wiki/ID3) - {"TDAT", "TDRC"}, // 2.3 -> 2.4 - {"TYER", "TDRC"}, // 2.3 -> 2.4 - {"TIME", "TDRC"}, // 2.3 -> 2.4 -}; - -Map<ByteVector,ByteVector> &deprecationMap() -{ - static Map<ByteVector,ByteVector> depMap; - if(depMap.isEmpty()) - for(TagLib::uint i = 0; i < deprecatedFramesSize; ++i) - depMap[deprecatedFrames[i][0]] = deprecatedFrames[i][1]; - return depMap; -} - -String Frame::frameIDToKey(const ByteVector &id) -{ - Map<ByteVector, String> &m = idMap(); - if(m.contains(id)) - return m[id]; - if(deprecationMap().contains(id)) - return m[deprecationMap()[id]]; - return String::null; -} - -ByteVector Frame::keyToFrameID(const String &s) -{ - static Map<String, ByteVector> m; - if(m.isEmpty()) - for(size_t i = 0; i < frameTranslationSize; ++i) - m[frameTranslation[i][1]] = frameTranslation[i][0]; - if(m.contains(s.upper())) - return m[s]; - return ByteVector::null; -} - -PropertyMap Frame::asProperties() const -{ - if(dynamic_cast< const UnknownFrame *>(this)) { - PropertyMap m; - m.unsupportedData().append("UNKNOWN/" + frameID()); - return m; - } - const ByteVector &id = frameID(); - // workaround until this function is virtual - if(id == "TXXX") - return dynamic_cast< const UserTextIdentificationFrame* >(this)->asProperties(); - else if(id[0] == 'T') - return dynamic_cast< const TextIdentificationFrame* >(this)->asProperties(); - else if(id == "WXXX") - return dynamic_cast< const UserUrlLinkFrame* >(this)->asProperties(); - else if(id[0] == 'W') - return dynamic_cast< const UrlLinkFrame* >(this)->asProperties(); - else if(id == "COMM") - return dynamic_cast< const CommentsFrame* >(this)->asProperties(); - else if(id == "USLT") - return dynamic_cast< const UnsynchronizedLyricsFrame* >(this)->asProperties(); - PropertyMap m; - m.unsupportedData().append(id); - return m; -} - -void Frame::splitProperties(const PropertyMap &original, PropertyMap &singleFrameProperties, - PropertyMap &tiplProperties, PropertyMap &tmclProperties) -{ - - singleFrameProperties.clear(); - tiplProperties.clear(); - tmclProperties.clear(); - for(PropertyMap::ConstIterator it = original.begin(); it != original.end(); ++it) { - if(TextIdentificationFrame::involvedPeopleMap().contains(it->first)) - tiplProperties.insert(it->first, it->second); - else if(it->first.startsWith(TextIdentificationFrame::instrumentPrefix)) - tmclProperties.insert(it->first, it->second); - else - singleFrameProperties.insert(it->first, it->second); - } -} - -//////////////////////////////////////////////////////////////////////////////// -// Frame::Header class -//////////////////////////////////////////////////////////////////////////////// - -class Frame::Header::HeaderPrivate -{ -public: - HeaderPrivate() : - frameSize(0), - version(4), - tagAlterPreservation(false), - fileAlterPreservation(false), - readOnly(false), - groupingIdentity(false), - compression(false), - encryption(false), - unsynchronisation(false), - dataLengthIndicator(false) - {} - - ByteVector frameID; - uint frameSize; - uint version; - - // flags - - bool tagAlterPreservation; - bool fileAlterPreservation; - bool readOnly; - bool groupingIdentity; - bool compression; - bool encryption; - bool unsynchronisation; - bool dataLengthIndicator; -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members (Frame::Header) -//////////////////////////////////////////////////////////////////////////////// - -TagLib::uint Frame::Header::size() -{ - return size(4); -} - -TagLib::uint Frame::Header::size(uint version) -{ - switch(version) { - case 0: - case 1: - case 2: - return 6; - case 3: - case 4: - default: - return 10; - } -} - -//////////////////////////////////////////////////////////////////////////////// -// public members (Frame::Header) -//////////////////////////////////////////////////////////////////////////////// - -Frame::Header::Header(const ByteVector &data, bool synchSafeInts) -{ - d = new HeaderPrivate; - setData(data, synchSafeInts); -} - -Frame::Header::Header(const ByteVector &data, uint version) -{ - d = new HeaderPrivate; - setData(data, version); -} - -Frame::Header::~Header() -{ - delete d; -} - -void Frame::Header::setData(const ByteVector &data, bool synchSafeInts) -{ - setData(data, uint(synchSafeInts ? 4 : 3)); -} - -void Frame::Header::setData(const ByteVector &data, uint version) -{ - d->version = version; - - switch(version) { - case 0: - case 1: - case 2: - { - // ID3v2.2 - - if(data.size() < 3) { - debug("You must at least specify a frame ID."); - return; - } - - // Set the frame ID -- the first three bytes - - d->frameID = data.mid(0, 3); - - // If the full header information was not passed in, do not continue to the - // steps to parse the frame size and flags. - - if(data.size() < 6) { - d->frameSize = 0; - return; - } - - d->frameSize = data.mid(3, 3).toUInt(); - - break; - } - case 3: - { - // ID3v2.3 - - if(data.size() < 4) { - debug("You must at least specify a frame ID."); - return; - } - - // Set the frame ID -- the first four bytes - - d->frameID = data.mid(0, 4); - - // If the full header information was not passed in, do not continue to the - // steps to parse the frame size and flags. - - if(data.size() < 10) { - d->frameSize = 0; - return; - } - - // Set the size -- the frame size is the four bytes starting at byte four in - // the frame header (structure 4) - - d->frameSize = data.mid(4, 4).toUInt(); - - { // read the first byte of flags - std::bitset<8> flags(data[8]); - d->tagAlterPreservation = flags[7]; // (structure 3.3.1.a) - d->fileAlterPreservation = flags[6]; // (structure 3.3.1.b) - d->readOnly = flags[5]; // (structure 3.3.1.c) - } - - { // read the second byte of flags - std::bitset<8> flags(data[9]); - d->compression = flags[7]; // (structure 3.3.1.i) - d->encryption = flags[6]; // (structure 3.3.1.j) - d->groupingIdentity = flags[5]; // (structure 3.3.1.k) - } - break; - } - case 4: - default: - { - // ID3v2.4 - - if(data.size() < 4) { - debug("You must at least specify a frame ID."); - return; - } - - // Set the frame ID -- the first four bytes - - d->frameID = data.mid(0, 4); - - // If the full header information was not passed in, do not continue to the - // steps to parse the frame size and flags. - - if(data.size() < 10) { - d->frameSize = 0; - return; - } - - // Set the size -- the frame size is the four bytes starting at byte four in - // the frame header (structure 4) - - d->frameSize = SynchData::toUInt(data.mid(4, 4)); -#ifndef NO_ITUNES_HACKS - // iTunes writes v2.4 tags with v2.3-like frame sizes - if(d->frameSize > 127) { - if(!isValidFrameID(data.mid(d->frameSize + 10, 4))) { - unsigned int uintSize = data.mid(4, 4).toUInt(); - if(isValidFrameID(data.mid(uintSize + 10, 4))) { - d->frameSize = uintSize; - } - } - } -#endif - - { // read the first byte of flags - std::bitset<8> flags(data[8]); - d->tagAlterPreservation = flags[6]; // (structure 4.1.1.a) - d->fileAlterPreservation = flags[5]; // (structure 4.1.1.b) - d->readOnly = flags[4]; // (structure 4.1.1.c) - } - - { // read the second byte of flags - std::bitset<8> flags(data[9]); - d->groupingIdentity = flags[6]; // (structure 4.1.2.h) - d->compression = flags[3]; // (structure 4.1.2.k) - d->encryption = flags[2]; // (structure 4.1.2.m) - d->unsynchronisation = flags[1]; // (structure 4.1.2.n) - d->dataLengthIndicator = flags[0]; // (structure 4.1.2.p) - } - break; - } - } -} - -ByteVector Frame::Header::frameID() const -{ - return d->frameID; -} - -void Frame::Header::setFrameID(const ByteVector &id) -{ - d->frameID = id.mid(0, 4); -} - -TagLib::uint Frame::Header::frameSize() const -{ - return d->frameSize; -} - -void Frame::Header::setFrameSize(uint size) -{ - d->frameSize = size; -} - -TagLib::uint Frame::Header::version() const -{ - return d->version; -} - -void Frame::Header::setVersion(TagLib::uint version) -{ - d->version = version; -} - -bool Frame::Header::tagAlterPreservation() const -{ - return d->tagAlterPreservation; -} - -void Frame::Header::setTagAlterPreservation(bool preserve) -{ - d->tagAlterPreservation = preserve; -} - -bool Frame::Header::fileAlterPreservation() const -{ - return d->fileAlterPreservation; -} - -bool Frame::Header::readOnly() const -{ - return d->readOnly; -} - -bool Frame::Header::groupingIdentity() const -{ - return d->groupingIdentity; -} - -bool Frame::Header::compression() const -{ - return d->compression; -} - -bool Frame::Header::encryption() const -{ - return d->encryption; -} - -bool Frame::Header::unsycronisation() const -{ - return unsynchronisation(); -} - -bool Frame::Header::unsynchronisation() const -{ - return d->unsynchronisation; -} - -bool Frame::Header::dataLengthIndicator() const -{ - return d->dataLengthIndicator; -} - -ByteVector Frame::Header::render() const -{ - ByteVector flags(2, char(0)); // just blank for the moment - - ByteVector v = d->frameID + - (d->version == 3 - ? ByteVector::fromUInt(d->frameSize) - : SynchData::fromUInt(d->frameSize)) + - flags; - - return v; -} - -bool Frame::Header::frameAlterPreservation() const -{ - return fileAlterPreservation(); -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2frame.h b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2frame.h deleted file mode 100644 index 95c4070b4fd..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2frame.h +++ /dev/null @@ -1,509 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_ID3V2FRAME_H -#define TAGLIB_ID3V2FRAME_H - -#include "tstring.h" -#include "tbytevector.h" -#include "taglib_export.h" - -namespace TagLib { - - class StringList; - class PropertyMap; - - namespace ID3v2 { - - class Tag; - class FrameFactory; - - //! ID3v2 frame implementation - - /*! - * This class is the main ID3v2 frame implementation. In ID3v2, a tag is - * split between a collection of frames (which are in turn split into fields - * (Structure, <a href="id3v2-structure.html#4">4</a>) - * (<a href="id3v2-frames.html">Frames</a>). This class provides an API for - * gathering information about and modifying ID3v2 frames. Funtionallity - * specific to a given frame type is handed in one of the many subclasses. - */ - - class TAGLIB_EXPORT Frame - { - friend class Tag; - friend class FrameFactory; - - public: - - /*! - * Creates a textual frame which corresponds to a single key in the PropertyMap - * interface. These are all (User)TextIdentificationFrames except TIPL and TMCL, - * all (User)URLLinkFrames, CommentsFrames, and UnsynchronizedLyricsFrame. - */ - static Frame *createTextualFrame(const String &key, const StringList &values); - - /*! - * Destroys this Frame instance. - */ - virtual ~Frame(); - - /*! - * Returns the Frame ID (Structure, <a href="id3v2-structure.html#4">4</a>) - * (Frames, <a href="id3v2-frames.html#4">4</a>) - */ - ByteVector frameID() const; - - /*! - * Returns the size of the frame. - */ - uint size() const; - - /*! - * Returns the size of the frame header - * - * \deprecated This is only accurate for ID3v2.3 or ID3v2.4. Please use - * the call below which accepts an ID3v2 version number. In the next - * non-binary compatible release this will be made into a non-static - * member that checks the internal ID3v2 version. - */ - static uint headerSize(); // BIC: remove and make non-static - - /*! - * Returns the size of the frame header for the given ID3v2 version. - * - * \deprecated Please see the explanation above. - */ - static uint headerSize(uint version); // BIC: remove and make non-static - - /*! - * Sets the data that will be used as the frame. Since the length is not - * known before the frame has been parsed, this should just be a pointer to - * the first byte of the frame. It will determine the length internally - * and make that available through size(). - */ - void setData(const ByteVector &data); - - /*! - * Set the text of frame in the sanest way possible. This should only be - * reimplemented in frames where there is some logical mapping to text. - * - * \note If the frame type supports multiple text encodings, this will not - * change the text encoding of the frame; the string will be converted to - * that frame's encoding. Please use the specific APIs of the frame types - * to set the encoding if that is desired. - */ - virtual void setText(const String &text); - - /*! - * This returns the textual representation of the data in the frame. - * Subclasses must reimplement this method to provide a string - * representation of the frame's data. - */ - virtual String toString() const = 0; - - /*! - * Render the frame back to its binary format in a ByteVector. - */ - ByteVector render() const; - - /*! - * Returns the text delimiter that is used between fields for the string - * type \a t. - */ - static ByteVector textDelimiter(String::Type t); - - /*! - * The string with which an instrument name is prefixed to build a key in a PropertyMap; - * used to translate PropertyMaps to TMCL frames. In the current implementation, this - * is "PERFORMER:". - */ - static const String instrumentPrefix; - /*! - * The PropertyMap key prefix which triggers the use of a COMM frame instead of a TXXX - * frame for a non-standard key. In the current implementation, this is "COMMENT:". - */ - static const String commentPrefix; - /*! - * The PropertyMap key prefix which triggers the use of a USLT frame instead of a TXXX - * frame for a non-standard key. In the current implementation, this is "LYRICS:". - */ - static const String lyricsPrefix; - /*! - * The PropertyMap key prefix which triggers the use of a WXXX frame instead of a TXX - * frame for a non-standard key. In the current implementation, this is "URL:". - */ - static const String urlPrefix; - - protected: - class Header; - - /*! - * Constructs an ID3v2 frame using \a data to read the header information. - * All other processing of \a data should be handled in a subclass. - * - * \note This need not contain anything more than a frame ID, but - * \e must constain at least that. - */ - explicit Frame(const ByteVector &data); - - /*! - * This creates an Frame using the header \a h. - * - * The ownership of this header will be assigned to the frame and the - * header will be deleted when the frame is destroyed. - */ - Frame(Header *h); - - /*! - * Returns a pointer to the frame header. - */ - Header *header() const; - - /*! - * Sets the header to \a h. If \a deleteCurrent is true, this will free - * the memory of the current header. - * - * The ownership of this header will be assigned to the frame and the - * header will be deleted when the frame is destroyed. - */ - void setHeader(Header *h, bool deleteCurrent = true); - - /*! - * Called by setData() to parse the frame data. It makes this information - * available through the public API. - */ - void parse(const ByteVector &data); - - /*! - * Called by parse() to parse the field data. It makes this information - * available through the public API. This must be overridden by the - * subclasses. - */ - virtual void parseFields(const ByteVector &data) = 0; - - /*! - * Render the field data back to a binary format in a ByteVector. This - * must be overridden by subclasses. - */ - virtual ByteVector renderFields() const = 0; - - /*! - * Returns a ByteVector containing the field data given the frame data. - * This correctly adjusts for the header size plus any additional frame - * data that's specified in the frame header flags. - */ - ByteVector fieldData(const ByteVector &frameData) const; - - /*! - * Reads a String of type \a encodiong from the ByteVector \a data. If \a - * position is passed in it is used both as the starting point and is - * updated to replect the position just after the string that has been read. - * This is useful for reading strings sequentially. - */ - String readStringField(const ByteVector &data, String::Type encoding, - int *positon = 0); - - /*! - * Checks a the list of string values to see if they can be used with the - * specified encoding and returns the recommended encoding. - */ - // BIC: remove and make non-static - static String::Type checkEncoding(const StringList &fields, - String::Type encoding); - - /*! - * Checks a the list of string values to see if they can be used with the - * specified encoding and returns the recommended encoding. This method - * also checks the ID3v2 version and makes sure the encoding can be used - * in the specified version. - */ - // BIC: remove and make non-static - static String::Type checkEncoding(const StringList &fields, - String::Type encoding, uint version); - - /*! - * Checks a the list of string values to see if they can be used with the - * specified encoding and returns the recommended encoding. This method - * also checks the ID3v2 version and makes sure the encoding can be used - * in the version specified by the frame's header. - */ - String::Type checkTextEncoding(const StringList &fields, - String::Type encoding) const; - - - /*! - * Parses the contents of this frame as PropertyMap. If that fails, the returend - * PropertyMap will be empty, and its unsupportedData() will contain this frame's - * ID. - * BIC: Will be a virtual function in future releases. - */ - PropertyMap asProperties() const; - - /*! - * Returns an appropriate ID3 frame ID for the given free-form tag key. This method - * will return ByteVector::null if no specialized translation is found. - */ - static ByteVector keyToFrameID(const String &); - - /*! - * Returns a free-form tag name for the given ID3 frame ID. Note that this does not work - * for general frame IDs such as TXXX or WXXX; in such a case String::null is returned. - */ - static String frameIDToKey(const ByteVector &); - - - /*! - * This helper function splits the PropertyMap \a original into three ProperytMaps - * \a singleFrameProperties, \a tiplProperties, and \a tmclProperties, such that: - * - \a singleFrameProperties contains only of keys which can be represented with - * exactly one ID3 frame per key. In the current implementation - * this is everything except for the fixed "involved people" keys and keys of the - * form "TextIdentificationFrame::instrumentPrefix" + "instrument", which are - * mapped to a TMCL frame. - * - \a tiplProperties will consist of those keys that are present in - * TextIdentificationFrame::involvedPeopleMap() - * - \a tmclProperties contains the "musician credits" keys which should be mapped - * to a TMCL frame - */ - static void splitProperties(const PropertyMap &original, PropertyMap &singleFrameProperties, - PropertyMap &tiplProperties, PropertyMap &tmclProperties); - - private: - Frame(const Frame &); - Frame &operator=(const Frame &); - - class FramePrivate; - friend class FramePrivate; - FramePrivate *d; - }; - - //! ID3v2 frame header implementation - - /*! - * The ID3v2 Frame Header (Structure, <a href="id3v2-structure.html#4">4</a>) - * - * Every ID3v2::Frame has an associated header that gives some general - * properties of the frame and also makes it possible to identify the frame - * type. - * - * As such when reading an ID3v2 tag ID3v2::FrameFactory first creates the - * frame headers and then creates the appropriate Frame subclass based on - * the type and attaches the header. - */ - - class TAGLIB_EXPORT Frame::Header - { - public: - /*! - * Construct a Frame Header based on \a data. \a data must at least - * contain a 4 byte frame ID, and optionally can contain flag data and the - * frame size. i.e. Just the frame id -- "TALB" -- is a valid value. - * - * \deprecated Please use the constructor below that accepts a version - * number. - */ - Header(const ByteVector &data, bool synchSafeInts); - - /*! - * Construct a Frame Header based on \a data. \a data must at least - * contain a 4 byte frame ID, and optionally can contain flag data and the - * frame size. i.e. Just the frame id -- "TALB" -- is a valid value. - * - * \a version should be the ID3v2 version of the tag. - */ - explicit Header(const ByteVector &data, uint version = 4); - - /*! - * Destroys this Header instance. - */ - virtual ~Header(); - - /*! - * Sets the data for the Header. - * - * \deprecated Please use the version below that accepts an ID3v2 version - * number. - */ - void setData(const ByteVector &data, bool synchSafeInts); - - /*! - * Sets the data for the Header. \a version should indicate the ID3v2 - * version number of the tag that this frame is contained in. - */ - void setData(const ByteVector &data, uint version = 4); - - /*! - * Returns the Frame ID (Structure, <a href="id3v2-structure.html#4">4</a>) - * (Frames, <a href="id3v2-frames.html#4">4</a>) - */ - ByteVector frameID() const; - - /*! - * Sets the frame's ID to \a id. Only the first four bytes of \a id will - * be used. - * - * \warning This method should in general be avoided. It exists simply to - * provide a mechanism for transforming frames from a deprecated frame type - * to a newer one -- i.e. TYER to TDRC from ID3v2.3 to ID3v2.4. - */ - void setFrameID(const ByteVector &id); - - /*! - * Returns the size of the frame data portion, as set when setData() was - * called or set explicitly via setFrameSize(). - */ - uint frameSize() const; - - /*! - * Sets the size of the frame data portion. - */ - void setFrameSize(uint size); - - /*! - * Returns the ID3v2 version of the header, as passed in from the - * construction of the header or set via setVersion(). - */ - uint version() const; - - /*! - * Sets the ID3v2 version of the header, changing has impact on the - * correct parsing/rendering of frame data. - */ - void setVersion(uint version); - - /*! - * Returns the size of the frame header in bytes. - * - * \deprecated Please use the version of this method that accepts a - * version. This is only accurate for ID3v2.3 and ID3v2.4. This will be - * removed in the next binary incompatible release (2.0) and will be - * replaced with a non-static method that checks the frame version. - */ - static uint size(); - - /*! - * Returns the size of the frame header in bytes for the ID3v2 version - * that's given. - * - * \deprecated Please see the explanation in the version above. - */ - static uint size(uint version); - - /*! - * Returns true if the flag for tag alter preservation is set. - * - * The semantics are a little backwards from what would seem natural - * (setting the preservation flag to throw away the frame), but this - * follows the ID3v2 standard. - * - * \see setTagAlterPreservation() - */ - bool tagAlterPreservation() const; - - /*! - * Sets the flag for preservation of this frame if the tag is set. If - * this is set to true the frame will not be written when the tag is - * saved. - * - * The semantics are a little backwards from what would seem natural - * (setting the preservation flag to throw away the frame), but this - * follows the ID3v2 standard. - * - * \see tagAlterPreservation() - */ - void setTagAlterPreservation(bool discard); - - /*! - * Returns true if the flag for file alter preservation is set. - * - * \note This flag is currently ignored internally in TagLib. - */ - bool fileAlterPreservation() const; - - /*! - * Returns true if the frame is meant to be read only. - * - * \note This flag is currently ignored internally in TagLib. - */ - bool readOnly() const; - - /*! - * Returns true if the flag for the grouping identifity is set. - * - * \note This flag is currently ignored internally in TagLib. - */ - bool groupingIdentity() const; - - /*! - * Returns true if compression is enabled for this frame. - * - * \note This flag is currently ignored internally in TagLib. - */ - bool compression() const; - - /*! - * Returns true if encryption is enabled for this frame. - * - * \note This flag is currently ignored internally in TagLib. - */ - bool encryption() const; - -#ifndef DO_NOT_DOCUMENT - bool unsycronisation() const; -#endif - - /*! - * Returns true if unsynchronisation is enabled for this frame. - */ - bool unsynchronisation() const; - - /*! - * Returns true if the flag for a data length indicator is set. - */ - bool dataLengthIndicator() const; - - /*! - * Render the Header back to binary format in a ByteVector. - */ - ByteVector render() const; - - /*! - * \deprecated - */ - bool frameAlterPreservation() const; - - private: - Header(const Header &); - Header &operator=(const Header &); - - class HeaderPrivate; - HeaderPrivate *d; - }; - - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2framefactory.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2framefactory.cpp deleted file mode 100644 index 7e2e98a8a26..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2framefactory.cpp +++ /dev/null @@ -1,447 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <tdebug.h> - -#include "id3v2framefactory.h" -#include "id3v2synchdata.h" -#include "id3v1genres.h" - -#include "frames/attachedpictureframe.h" -#include "frames/commentsframe.h" -#include "frames/relativevolumeframe.h" -#include "frames/textidentificationframe.h" -#include "frames/uniquefileidentifierframe.h" -#include "frames/unknownframe.h" -#include "frames/generalencapsulatedobjectframe.h" -#include "frames/urllinkframe.h" -#include "frames/unsynchronizedlyricsframe.h" -#include "frames/popularimeterframe.h" -#include "frames/privateframe.h" -#include "frames/ownershipframe.h" - -using namespace TagLib; -using namespace ID3v2; - -class FrameFactory::FrameFactoryPrivate -{ -public: - FrameFactoryPrivate() : - defaultEncoding(String::Latin1), - useDefaultEncoding(false) {} - - String::Type defaultEncoding; - bool useDefaultEncoding; - - template <class T> void setTextEncoding(T *frame) - { - if(useDefaultEncoding) - frame->setTextEncoding(defaultEncoding); - } -}; - -FrameFactory FrameFactory::factory; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -FrameFactory *FrameFactory::instance() -{ - return &factory; -} - -Frame *FrameFactory::createFrame(const ByteVector &data, bool synchSafeInts) const -{ - return createFrame(data, uint(synchSafeInts ? 4 : 3)); -} - -Frame *FrameFactory::createFrame(const ByteVector &data, uint version) const -{ - Header tagHeader; - tagHeader.setMajorVersion(version); - return createFrame(data, &tagHeader); -} - -Frame *FrameFactory::createFrame(const ByteVector &origData, Header *tagHeader) const -{ - ByteVector data = origData; - uint version = tagHeader->majorVersion(); - Frame::Header *header = new Frame::Header(data, version); - ByteVector frameID = header->frameID(); - - // A quick sanity check -- make sure that the frameID is 4 uppercase Latin1 - // characters. Also make sure that there is data in the frame. - - if(!frameID.size() == (version < 3 ? 3 : 4) || - header->frameSize() <= uint(header->dataLengthIndicator() ? 4 : 0) || - header->frameSize() > data.size()) - { - delete header; - return 0; - } - - for(ByteVector::ConstIterator it = frameID.begin(); it != frameID.end(); it++) { - if( (*it < 'A' || *it > 'Z') && (*it < '0' || *it > '9') ) { - delete header; - return 0; - } - } - - if(version > 3 && (tagHeader->unsynchronisation() || header->unsynchronisation())) { - // Data lengths are not part of the encoded data, but since they are synch-safe - // integers they will be never actually encoded. - ByteVector frameData = data.mid(Frame::Header::size(version), header->frameSize()); - frameData = SynchData::decode(frameData); - data = data.mid(0, Frame::Header::size(version)) + frameData; - } - - // TagLib doesn't mess with encrypted frames, so just treat them - // as unknown frames. - -#if HAVE_ZLIB == 0 - if(header->compression()) { - debug("Compressed frames are currently not supported."); - return new UnknownFrame(data, header); - } -#endif - if(header->encryption()) { - debug("Encrypted frames are currently not supported."); - return new UnknownFrame(data, header); - } - - if(!updateFrame(header)) { - header->setTagAlterPreservation(true); - return new UnknownFrame(data, header); - } - - // updateFrame() might have updated the frame ID. - - frameID = header->frameID(); - - // This is where things get necissarily nasty. Here we determine which - // Frame subclass (or if none is found simply an Frame) based - // on the frame ID. Since there are a lot of possibilities, that means - // a lot of if blocks. - - // Text Identification (frames 4.2) - - if(frameID.startsWith("T")) { - - TextIdentificationFrame *f = frameID != "TXXX" - ? new TextIdentificationFrame(data, header) - : new UserTextIdentificationFrame(data, header); - - d->setTextEncoding(f); - - if(frameID == "TCON") - updateGenre(f); - - return f; - } - - // Comments (frames 4.10) - - if(frameID == "COMM") { - CommentsFrame *f = new CommentsFrame(data, header); - d->setTextEncoding(f); - return f; - } - - // Attached Picture (frames 4.14) - - if(frameID == "APIC") { - AttachedPictureFrame *f = new AttachedPictureFrame(data, header); - d->setTextEncoding(f); - return f; - } - - // ID3v2.2 Attached Picture - - if(frameID == "PIC") { - AttachedPictureFrame *f = new AttachedPictureFrameV22(data, header); - d->setTextEncoding(f); - return f; - } - - // Relative Volume Adjustment (frames 4.11) - - if(frameID == "RVA2") - return new RelativeVolumeFrame(data, header); - - // Unique File Identifier (frames 4.1) - - if(frameID == "UFID") - return new UniqueFileIdentifierFrame(data, header); - - // General Encapsulated Object (frames 4.15) - - if(frameID == "GEOB") { - GeneralEncapsulatedObjectFrame *f = new GeneralEncapsulatedObjectFrame(data, header); - d->setTextEncoding(f); - return f; - } - - // URL link (frames 4.3) - - if(frameID.startsWith("W")) { - if(frameID != "WXXX") { - return new UrlLinkFrame(data, header); - } - else { - UserUrlLinkFrame *f = new UserUrlLinkFrame(data, header); - d->setTextEncoding(f); - return f; - } - } - - // Unsynchronized lyric/text transcription (frames 4.8) - - if(frameID == "USLT") { - UnsynchronizedLyricsFrame *f = new UnsynchronizedLyricsFrame(data, header); - if(d->useDefaultEncoding) - f->setTextEncoding(d->defaultEncoding); - return f; - } - - // Popularimeter (frames 4.17) - - if(frameID == "POPM") - return new PopularimeterFrame(data, header); - - // Private (frames 4.27) - - if(frameID == "PRIV") - return new PrivateFrame(data, header); - - // Ownership (frames 4.22) - - if(frameID == "OWNE") { - OwnershipFrame *f = new OwnershipFrame(data, header); - d->setTextEncoding(f); - return f; - } - - return new UnknownFrame(data, header); -} - -String::Type FrameFactory::defaultTextEncoding() const -{ - return d->defaultEncoding; -} - -void FrameFactory::setDefaultTextEncoding(String::Type encoding) -{ - d->useDefaultEncoding = true; - d->defaultEncoding = encoding; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -FrameFactory::FrameFactory() -{ - d = new FrameFactoryPrivate; -} - -FrameFactory::~FrameFactory() -{ - delete d; -} - -bool FrameFactory::updateFrame(Frame::Header *header) const -{ - TagLib::ByteVector frameID = header->frameID(); - - switch(header->version()) { - - case 2: // ID3v2.2 - { - if(frameID == "CRM" || - frameID == "EQU" || - frameID == "LNK" || - frameID == "RVA" || - frameID == "TIM" || - frameID == "TSI" || - frameID == "TDA") - { - debug("ID3v2.4 no longer supports the frame type " + String(frameID) + - ". It will be discarded from the tag."); - return false; - } - - // ID3v2.2 only used 3 bytes for the frame ID, so we need to convert all of - // the frames to their 4 byte ID3v2.4 equivalent. - - convertFrame("BUF", "RBUF", header); - convertFrame("CNT", "PCNT", header); - convertFrame("COM", "COMM", header); - convertFrame("CRA", "AENC", header); - convertFrame("ETC", "ETCO", header); - convertFrame("GEO", "GEOB", header); - convertFrame("IPL", "TIPL", header); - convertFrame("MCI", "MCDI", header); - convertFrame("MLL", "MLLT", header); - convertFrame("POP", "POPM", header); - convertFrame("REV", "RVRB", header); - convertFrame("SLT", "SYLT", header); - convertFrame("STC", "SYTC", header); - convertFrame("TAL", "TALB", header); - convertFrame("TBP", "TBPM", header); - convertFrame("TCM", "TCOM", header); - convertFrame("TCO", "TCON", header); - convertFrame("TCP", "TCMP", header); - convertFrame("TCR", "TCOP", header); - convertFrame("TDY", "TDLY", header); - convertFrame("TEN", "TENC", header); - convertFrame("TFT", "TFLT", header); - convertFrame("TKE", "TKEY", header); - convertFrame("TLA", "TLAN", header); - convertFrame("TLE", "TLEN", header); - convertFrame("TMT", "TMED", header); - convertFrame("TOA", "TOAL", header); - convertFrame("TOF", "TOFN", header); - convertFrame("TOL", "TOLY", header); - convertFrame("TOR", "TDOR", header); - convertFrame("TOT", "TOAL", header); - convertFrame("TP1", "TPE1", header); - convertFrame("TP2", "TPE2", header); - convertFrame("TP3", "TPE3", header); - convertFrame("TP4", "TPE4", header); - convertFrame("TPA", "TPOS", header); - convertFrame("TPB", "TPUB", header); - convertFrame("TRC", "TSRC", header); - convertFrame("TRD", "TDRC", header); - convertFrame("TRK", "TRCK", header); - convertFrame("TS2", "TSO2", header); - convertFrame("TSA", "TSOA", header); - convertFrame("TSC", "TSOC", header); - convertFrame("TSP", "TSOP", header); - convertFrame("TSS", "TSSE", header); - convertFrame("TST", "TSOT", header); - convertFrame("TT1", "TIT1", header); - convertFrame("TT2", "TIT2", header); - convertFrame("TT3", "TIT3", header); - convertFrame("TXT", "TOLY", header); - convertFrame("TXX", "TXXX", header); - convertFrame("TYE", "TDRC", header); - convertFrame("UFI", "UFID", header); - convertFrame("ULT", "USLT", header); - convertFrame("WAF", "WOAF", header); - convertFrame("WAR", "WOAR", header); - convertFrame("WAS", "WOAS", header); - convertFrame("WCM", "WCOM", header); - convertFrame("WCP", "WCOP", header); - convertFrame("WPB", "WPUB", header); - convertFrame("WXX", "WXXX", header); - - break; - } - - case 3: // ID3v2.3 - { - if(frameID == "EQUA" || - frameID == "RVAD" || - frameID == "TIME" || - frameID == "TRDA" || - frameID == "TSIZ" || - frameID == "TDAT") - { - debug("ID3v2.4 no longer supports the frame type " + String(frameID) + - ". It will be discarded from the tag."); - return false; - } - - convertFrame("TORY", "TDOR", header); - convertFrame("TYER", "TDRC", header); - convertFrame("IPLS", "TIPL", header); - - break; - } - - default: - - // This should catch a typo that existed in TagLib up to and including - // version 1.1 where TRDC was used for the year rather than TDRC. - - convertFrame("TRDC", "TDRC", header); - break; - } - - return true; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void FrameFactory::convertFrame(const char *from, const char *to, - Frame::Header *header) const -{ - if(header->frameID() != from) - return; - - // debug("ID3v2.4 no longer supports the frame type " + String(from) + " It has" + - // "been converted to the type " + String(to) + "."); - - header->setFrameID(to); -} - -void FrameFactory::updateGenre(TextIdentificationFrame *frame) const -{ - StringList fields = frame->fieldList(); - StringList newfields; - - for(StringList::Iterator it = fields.begin(); it != fields.end(); ++it) { - String s = *it; - int end = s.find(")"); - - if(s.startsWith("(") && end > 0) { - // "(12)Genre" - String text = s.substr(end + 1); - bool ok; - int number = s.substr(1, end - 1).toInt(&ok); - if(ok && number >= 0 && number <= 255 && !(ID3v1::genre(number) == text)) - newfields.append(s.substr(1, end - 1)); - if(!text.isEmpty()) - newfields.append(text); - } - else { - // "Genre" or "12" - newfields.append(s); - } - } - - if(newfields.isEmpty()) - fields.append(String::null); - - frame->setText(newfields); - -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2framefactory.h b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2framefactory.h deleted file mode 100644 index 762d7eb3e6b..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2framefactory.h +++ /dev/null @@ -1,166 +0,0 @@ - /*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_ID3V2FRAMEFACTORY_H -#define TAGLIB_ID3V2FRAMEFACTORY_H - -#include "taglib_export.h" -#include "tbytevector.h" -#include "id3v2frame.h" -#include "id3v2header.h" - -namespace TagLib { - - namespace ID3v2 { - - class TextIdentificationFrame; - - //! A factory for creating ID3v2 frames during parsing - - /*! - * This factory abstracts away the frame creation process and instantiates - * the appropriate ID3v2::Frame subclasses based on the contents of the - * data. - * - * Reimplementing this factory is the key to adding support for frame types - * not directly supported by TagLib to your application. To do so you would - * subclass this factory reimplement createFrame(). Then by setting your - * factory to be the default factory in ID3v2::Tag constructor or with - * MPEG::File::setID3v2FrameFactory() you can implement behavior that will - * allow for new ID3v2::Frame subclasses (also provided by you) to be used. - * - * This implements both <i>abstract factory</i> and <i>singleton</i> patterns - * of which more information is available on the web and in software design - * textbooks (Notably <i>Design Patters</i>). - * - * \note You do not need to use this factory to create new frames to add to - * an ID3v2::Tag. You can instantiate frame subclasses directly (with new) - * and add them to a tag using ID3v2::Tag::addFrame() - * - * \see ID3v2::Tag::addFrame() - */ - - class TAGLIB_EXPORT FrameFactory - { - public: - static FrameFactory *instance(); - /*! - * Create a frame based on \a data. \a synchSafeInts should only be set - * false if we are parsing an old tag (v2.3 or older) that does not support - * synchsafe ints. - * - * \deprecated Please use the method below that accepts a ID3v2::Header - * instance in new code. - */ - Frame *createFrame(const ByteVector &data, bool synchSafeInts) const; - - /*! - * Create a frame based on \a data. \a version should indicate the ID3v2 - * version of the tag. As ID3v2.4 is the most current version of the - * standard 4 is the default. - * - * \deprecated Please use the method below that accepts a ID3v2::Header - * instance in new code. - */ - Frame *createFrame(const ByteVector &data, uint version = 4) const; - - /*! - * Create a frame based on \a data. \a tagHeader should be a valid - * ID3v2::Header instance. - */ - // BIC: make virtual - Frame *createFrame(const ByteVector &data, Header *tagHeader) const; - - /*! - * Returns the default text encoding for text frames. If setTextEncoding() - * has not been explicitly called this will only be used for new text - * frames. However, if this value has been set explicitly all frames will be - * converted to this type (unless it's explitly set differently for the - * individual frame) when being rendered. - * - * \see setDefaultTextEncoding() - */ - String::Type defaultTextEncoding() const; - - /*! - * Set the default text encoding for all text frames that are created to - * \a encoding. If no value is set the frames with either default to the - * encoding type that was parsed and new frames default to Latin1. - * - * Valid string types for ID3v2 tags are Latin1, UTF8, UTF16 and UTF16BE. - * - * \see defaultTextEncoding() - */ - void setDefaultTextEncoding(String::Type encoding); - - protected: - /*! - * Constructs a frame factory. Because this is a singleton this method is - * protected, but may be used for subclasses. - */ - FrameFactory(); - - /*! - * Destroys the frame factory. - */ - virtual ~FrameFactory(); - - /*! - * This method checks for compliance to the current ID3v2 standard (2.4) - * and does nothing in the common case. However if a frame is found that - * is not compatible with the current standard, this method either updates - * the frame or indicates that it should be discarded. - * - * This method with return true (with or without changes to the frame) if - * this frame should be kept or false if it should be discarded. - * - * See the id3v2.4.0-changes.txt document for further information. - */ - virtual bool updateFrame(Frame::Header *header) const; - - private: - FrameFactory(const FrameFactory &); - FrameFactory &operator=(const FrameFactory &); - - /*! - * This method is used internally to convert a frame from ID \a from to ID - * \a to. If the frame matches the \a from pattern and converts the frame - * ID in the \a header or simply does nothing if the frame ID does not match. - */ - void convertFrame(const char *from, const char *to, - Frame::Header *header) const; - - void updateGenre(TextIdentificationFrame *frame) const; - - static FrameFactory factory; - - class FrameFactoryPrivate; - FrameFactoryPrivate *d; - }; - - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2header.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2header.cpp deleted file mode 100644 index ad6b3aa78c9..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2header.cpp +++ /dev/null @@ -1,243 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <iostream> -#include <bitset> - -#include <tstring.h> -#include <tdebug.h> - -#include "id3v2header.h" -#include "id3v2footer.h" -#include "id3v2synchdata.h" - -using namespace TagLib; -using namespace ID3v2; - -class Header::HeaderPrivate -{ -public: - HeaderPrivate() : majorVersion(4), - revisionNumber(0), - unsynchronisation(false), - extendedHeader(false), - experimentalIndicator(false), - footerPresent(false), - tagSize(0) {} - - ~HeaderPrivate() {} - - uint majorVersion; - uint revisionNumber; - - bool unsynchronisation; - bool extendedHeader; - bool experimentalIndicator; - bool footerPresent; - - uint tagSize; - - static const uint size = 10; -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -TagLib::uint Header::size() -{ - return HeaderPrivate::size; -} - -ByteVector Header::fileIdentifier() -{ - return ByteVector::fromCString("ID3"); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Header::Header() -{ - d = new HeaderPrivate; -} - -Header::Header(const ByteVector &data) -{ - d = new HeaderPrivate; - parse(data); -} - -Header::~Header() -{ - delete d; -} - -TagLib::uint Header::majorVersion() const -{ - return d->majorVersion; -} - -void Header::setMajorVersion(TagLib::uint version) -{ - d->majorVersion = version; -} - -TagLib::uint Header::revisionNumber() const -{ - return d->revisionNumber; -} - -bool Header::unsynchronisation() const -{ - return d->unsynchronisation; -} - -bool Header::extendedHeader() const -{ - return d->extendedHeader; -} - -bool Header::experimentalIndicator() const -{ - return d->experimentalIndicator; -} - -bool Header::footerPresent() const -{ - return d->footerPresent; -} - -TagLib::uint Header::tagSize() const -{ - return d->tagSize; -} - -TagLib::uint Header::completeTagSize() const -{ - if(d->footerPresent) - return d->tagSize + d->size + Footer::size(); - else - return d->tagSize + d->size; -} - -void Header::setTagSize(uint s) -{ - d->tagSize = s; -} - -void Header::setData(const ByteVector &data) -{ - parse(data); -} - -ByteVector Header::render() const -{ - ByteVector v; - - // add the file identifier -- "ID3" - v.append(fileIdentifier()); - - // add the version number -- we always render a 2.4.0 tag regardless of what - // the tag originally was. - - v.append(char(majorVersion())); - v.append(char(0)); - - // Currently we don't actually support writing extended headers, footers or - // unsynchronized tags, make sure that the flags are set accordingly. - - d->extendedHeader = false; - d->footerPresent = false; - d->unsynchronisation = false; - - // render and add the flags - std::bitset<8> flags; - - flags[7] = d->unsynchronisation; - flags[6] = d->extendedHeader; - flags[5] = d->experimentalIndicator; - flags[4] = d->footerPresent; - - v.append(char(flags.to_ulong())); - - // add the size - v.append(SynchData::fromUInt(d->tagSize)); - - return v; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void Header::parse(const ByteVector &data) -{ - if(data.size() < size()) - return; - - - // do some sanity checking -- even in ID3v2.3.0 and less the tag size is a - // synch-safe integer, so all bytes must be less than 128. If this is not - // true then this is an invalid tag. - - // note that we're doing things a little out of order here -- the size is - // later in the bytestream than the version - - ByteVector sizeData = data.mid(6, 4); - - if(sizeData.size() != 4) { - d->tagSize = 0; - debug("TagLib::ID3v2::Header::parse() - The tag size as read was 0 bytes!"); - return; - } - - for(ByteVector::Iterator it = sizeData.begin(); it != sizeData.end(); it++) { - if(uchar(*it) >= 128) { - d->tagSize = 0; - debug("TagLib::ID3v2::Header::parse() - One of the size bytes in the id3v2 header was greater than the allowed 128."); - return; - } - } - - // The first three bytes, data[0..2], are the File Identifier, "ID3". (structure 3.1 "file identifier") - - // Read the version number from the fourth and fifth bytes. - d->majorVersion = data[3]; // (structure 3.1 "major version") - d->revisionNumber = data[4]; // (structure 3.1 "revision number") - - // Read the flags, the first four bits of the sixth byte. - std::bitset<8> flags(data[5]); - - d->unsynchronisation = flags[7]; // (structure 3.1.a) - d->extendedHeader = flags[6]; // (structure 3.1.b) - d->experimentalIndicator = flags[5]; // (structure 3.1.c) - d->footerPresent = flags[4]; // (structure 3.1.d) - - // Get the size from the remaining four bytes (read above) - - d->tagSize = SynchData::toUInt(sizeData); // (structure 3.1 "size") -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2header.h b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2header.h deleted file mode 100644 index 307ba96c824..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2header.h +++ /dev/null @@ -1,175 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_ID3V2HEADER_H -#define TAGLIB_ID3V2HEADER_H - -#include "tbytevector.h" -#include "taglib_export.h" - -namespace TagLib { - - namespace ID3v2 { - - //! An implementation of ID3v2 headers - - /*! - * This class implements ID3v2 headers. It attempts to follow, both - * semantically and programatically, the structure specified in - * the ID3v2 standard. The API is based on the properties of ID3v2 headers - * specified there. If any of the terms used in this documentation are - * unclear please check the specification in the linked section. - * (Structure, <a href="id3v2-structure.html#3.1">3.1</a>) - */ - - class TAGLIB_EXPORT Header - { - public: - /*! - * Constructs an empty ID3v2 header. - */ - Header(); - - /*! - * Constructs an ID3v2 header based on \a data. parse() is called - * immediately. - */ - Header(const ByteVector &data); - - /*! - * Destroys the header. - */ - virtual ~Header(); - - /*! - * Returns the major version number. (Note: This is the 4, not the 2 in - * ID3v2.4.0. The 2 is implied.) - */ - uint majorVersion() const; - - /*! - * Set the the major version number to \a version. (Note: This is - * the 4, not the 2 in ID3v2.4.0. The 2 is implied.) - * \see majorVersion() - * - * \note This is used by the internal parser; this will not change the - * version which is written and in general should not be called by API - * users. - */ - void setMajorVersion(uint version); - - /*! - * Returns the revision number. (Note: This is the 0, not the 4 in - * ID3v2.4.0. The 2 is implied.) - */ - uint revisionNumber() const; - - /*! - * Returns true if unsynchronisation has been applied to all frames. - */ - bool unsynchronisation() const; - - /*! - * Returns true if an extended header is present in the tag. - */ - bool extendedHeader() const; - - /*! - * Returns true if the experimental indicator flag is set. - */ - bool experimentalIndicator() const; - - /*! - * Returns true if a footer is present in the tag. - */ - bool footerPresent() const; - /*! - * Returns the tag size in bytes. This is the size of the frame content. - * The size of the \e entire tag will be this plus the header size (10 - * bytes) and, if present, the footer size (potentially another 10 bytes). - * - * \note This is the value as read from the header to which TagLib attempts - * to provide an API to; it was not a design decision on the part of TagLib - * to not include the mentioned portions of the tag in the \e size. - * - * \see completeTagSize() - */ - uint tagSize() const; - - /*! - * Returns the tag size, including the header and, if present, the footer - * size. - * - * \see tagSize() - */ - uint completeTagSize() const; - - /*! - * Set the tag size to \a s. - * \see tagSize() - */ - void setTagSize(uint s); - - /*! - * Returns the size of the header. Presently this is always 10 bytes. - */ - static uint size(); - - /*! - * Returns the string used to identify and ID3v2 tag inside of a file. - * Presently this is always "ID3". - */ - static ByteVector fileIdentifier(); - - /*! - * Sets the data that will be used as the header. 10 bytes, starting from - * the beginning of \a data are used. - */ - void setData(const ByteVector &data); - - /*! - * Renders the Header back to binary format. - */ - ByteVector render() const; - - protected: - /*! - * Called by setData() to parse the header data. It makes this information - * available through the public API. - */ - void parse(const ByteVector &data); - - private: - Header(const Header &); - Header &operator=(const Header &); - - class HeaderPrivate; - HeaderPrivate *d; - }; - - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2synchdata.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2synchdata.cpp deleted file mode 100644 index d4bab6795a2..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2synchdata.cpp +++ /dev/null @@ -1,77 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <iostream> - -#include "id3v2synchdata.h" - -using namespace TagLib; -using namespace ID3v2; - -TagLib::uint SynchData::toUInt(const ByteVector &data) -{ - uint sum = 0; - bool notSynchSafe = false; - int last = data.size() > 4 ? 3 : data.size() - 1; - - for(int i = 0; i <= last; i++) { - if(data[i] & 0x80) { - notSynchSafe = true; - break; - } - - sum |= (data[i] & 0x7f) << ((last - i) * 7); - } - - if(notSynchSafe) { - // Invalid data; assume this was created by some buggy software that just - // put normal integers here rather than syncsafe ones, and try it that - // way. - sum = (data.size() > 4) ? data.mid(0, 4).toUInt() : data.toUInt(); - } - - return sum; -} - -ByteVector SynchData::fromUInt(uint value) -{ - ByteVector v(4, 0); - - for(int i = 0; i < 4; i++) - v[i] = uchar(value >> ((3 - i) * 7) & 0x7f); - - return v; -} - -ByteVector SynchData::decode(const ByteVector &data) -{ - ByteVector result = data; - - ByteVector pattern(2, char(0)); - pattern[0] = '\xFF'; - pattern[1] = '\x00'; - - return result.replace(pattern, '\xFF'); -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2synchdata.h b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2synchdata.h deleted file mode 100644 index 4a1f596a93e..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2synchdata.h +++ /dev/null @@ -1,70 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_ID3V2SYNCHDATA_H -#define TAGLIB_ID3V2SYNCHDATA_H - -#include "tbytevector.h" -#include "taglib.h" - -namespace TagLib { - - namespace ID3v2 { - - //! A few functions for ID3v2 synch safe integer conversion - - /*! - * In the ID3v2.4 standard most integer values are encoded as "synch safe" - * integers which are encoded in such a way that they will not give false - * MPEG syncs and confuse MPEG decoders. This namespace provides some - * methods for converting to and from these values to ByteVectors for - * things rendering and parsing ID3v2 data. - */ - - namespace SynchData - { - /*! - * This returns the unsigned integer value of \a data where \a data is a - * ByteVector that contains a \e synchsafe integer (Structure, - * <a href="id3v2-structure.html#6.2">6.2</a>). The default \a length of - * 4 is used if another value is not specified. - */ - TAGLIB_EXPORT uint toUInt(const ByteVector &data); - - /*! - * Returns a 4 byte (32 bit) synchsafe integer based on \a value. - */ - TAGLIB_EXPORT ByteVector fromUInt(uint value); - - /*! - * Convert the data from unsynchronized data to its original format. - */ - TAGLIB_EXPORT ByteVector decode(const ByteVector &input); - } - - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2tag.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2tag.cpp deleted file mode 100644 index 54e63920364..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2tag.cpp +++ /dev/null @@ -1,724 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tfile.h> - -#include "id3v2tag.h" -#include "id3v2header.h" -#include "id3v2extendedheader.h" -#include "id3v2footer.h" -#include "id3v2synchdata.h" -#include "tbytevector.h" -#include "id3v1genres.h" -#include "tpropertymap.h" -#include <tdebug.h> - -#include "frames/textidentificationframe.h" -#include "frames/commentsframe.h" -#include "frames/urllinkframe.h" -#include "frames/uniquefileidentifierframe.h" -#include "frames/unsynchronizedlyricsframe.h" -#include "frames/unknownframe.h" - -using namespace TagLib; -using namespace ID3v2; - -class ID3v2::Tag::TagPrivate -{ -public: - TagPrivate() : file(0), tagOffset(-1), extendedHeader(0), footer(0), paddingSize(0) - { - frameList.setAutoDelete(true); - } - ~TagPrivate() - { - delete extendedHeader; - delete footer; - } - - File *file; - long tagOffset; - const FrameFactory *factory; - - Header header; - ExtendedHeader *extendedHeader; - Footer *footer; - - int paddingSize; - - FrameListMap frameListMap; - FrameList frameList; - - static const Latin1StringHandler *stringHandler; -}; - -static const Latin1StringHandler defaultStringHandler; -const ID3v2::Latin1StringHandler *ID3v2::Tag::TagPrivate::stringHandler = &defaultStringHandler; - -//////////////////////////////////////////////////////////////////////////////// -// StringHandler implementation -//////////////////////////////////////////////////////////////////////////////// - -Latin1StringHandler::Latin1StringHandler() -{ -} - -Latin1StringHandler::~Latin1StringHandler() -{ -} - -String Latin1StringHandler::parse(const ByteVector &data) const -{ - return String(data, String::Latin1); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -ID3v2::Tag::Tag() : TagLib::Tag() -{ - d = new TagPrivate; - d->factory = FrameFactory::instance(); -} - -ID3v2::Tag::Tag(File *file, long tagOffset, const FrameFactory *factory) : - TagLib::Tag() -{ - d = new TagPrivate; - - d->file = file; - d->tagOffset = tagOffset; - d->factory = factory; - - read(); -} - -ID3v2::Tag::~Tag() -{ - delete d; -} - - -String ID3v2::Tag::title() const -{ - if(!d->frameListMap["TIT2"].isEmpty()) - return d->frameListMap["TIT2"].front()->toString(); - return String::null; -} - -String ID3v2::Tag::artist() const -{ - if(!d->frameListMap["TPE1"].isEmpty()) - return d->frameListMap["TPE1"].front()->toString(); - return String::null; -} - -String ID3v2::Tag::album() const -{ - if(!d->frameListMap["TALB"].isEmpty()) - return d->frameListMap["TALB"].front()->toString(); - return String::null; -} - -String ID3v2::Tag::comment() const -{ - const FrameList &comments = d->frameListMap["COMM"]; - - if(comments.isEmpty()) - return String::null; - - for(FrameList::ConstIterator it = comments.begin(); it != comments.end(); ++it) - { - CommentsFrame *frame = dynamic_cast<CommentsFrame *>(*it); - - if(frame && frame->description().isEmpty()) - return (*it)->toString(); - } - - return comments.front()->toString(); -} - -String ID3v2::Tag::genre() const -{ - // TODO: In the next major version (TagLib 2.0) a list of multiple genres - // should be separated by " / " instead of " ". For the moment to keep - // the behavior the same as released versions it is being left with " ". - - if(d->frameListMap["TCON"].isEmpty() || - !dynamic_cast<TextIdentificationFrame *>(d->frameListMap["TCON"].front())) - { - return String::null; - } - - // ID3v2.4 lists genres as the fields in its frames field list. If the field - // is simply a number it can be assumed that it is an ID3v1 genre number. - // Here was assume that if an ID3v1 string is present that it should be - // appended to the genre string. Multiple fields will be appended as the - // string is built. - - TextIdentificationFrame *f = static_cast<TextIdentificationFrame *>( - d->frameListMap["TCON"].front()); - - StringList fields = f->fieldList(); - - StringList genres; - - for(StringList::Iterator it = fields.begin(); it != fields.end(); ++it) { - - if((*it).isEmpty()) - continue; - - bool ok; - int number = (*it).toInt(&ok); - if(ok && number >= 0 && number <= 255) { - *it = ID3v1::genre(number); - } - - if(std::find(genres.begin(), genres.end(), *it) == genres.end()) - genres.append(*it); - } - - return genres.toString(); -} - -TagLib::uint ID3v2::Tag::year() const -{ - if(!d->frameListMap["TDRC"].isEmpty()) - return d->frameListMap["TDRC"].front()->toString().substr(0, 4).toInt(); - return 0; -} - -TagLib::uint ID3v2::Tag::track() const -{ - if(!d->frameListMap["TRCK"].isEmpty()) - return d->frameListMap["TRCK"].front()->toString().toInt(); - return 0; -} - -void ID3v2::Tag::setTitle(const String &s) -{ - setTextFrame("TIT2", s); -} - -void ID3v2::Tag::setArtist(const String &s) -{ - setTextFrame("TPE1", s); -} - -void ID3v2::Tag::setAlbum(const String &s) -{ - setTextFrame("TALB", s); -} - -void ID3v2::Tag::setComment(const String &s) -{ - if(s.isEmpty()) { - removeFrames("COMM"); - return; - } - - if(!d->frameListMap["COMM"].isEmpty()) - d->frameListMap["COMM"].front()->setText(s); - else { - CommentsFrame *f = new CommentsFrame(d->factory->defaultTextEncoding()); - addFrame(f); - f->setText(s); - } -} - -void ID3v2::Tag::setGenre(const String &s) -{ - if(s.isEmpty()) { - removeFrames("TCON"); - return; - } - - // iTunes can't handle correctly encoded ID3v2.4 numerical genres. Just use - // strings until iTunes sucks less. - -#ifdef NO_ITUNES_HACKS - - int index = ID3v1::genreIndex(s); - - if(index != 255) - setTextFrame("TCON", String::number(index)); - else - setTextFrame("TCON", s); - -#else - - setTextFrame("TCON", s); - -#endif -} - -void ID3v2::Tag::setYear(uint i) -{ - if(i <= 0) { - removeFrames("TDRC"); - return; - } - setTextFrame("TDRC", String::number(i)); -} - -void ID3v2::Tag::setTrack(uint i) -{ - if(i <= 0) { - removeFrames("TRCK"); - return; - } - setTextFrame("TRCK", String::number(i)); -} - -bool ID3v2::Tag::isEmpty() const -{ - return d->frameList.isEmpty(); -} - -Header *ID3v2::Tag::header() const -{ - return &(d->header); -} - -ExtendedHeader *ID3v2::Tag::extendedHeader() const -{ - return d->extendedHeader; -} - -Footer *ID3v2::Tag::footer() const -{ - return d->footer; -} - -const FrameListMap &ID3v2::Tag::frameListMap() const -{ - return d->frameListMap; -} - -const FrameList &ID3v2::Tag::frameList() const -{ - return d->frameList; -} - -const FrameList &ID3v2::Tag::frameList(const ByteVector &frameID) const -{ - return d->frameListMap[frameID]; -} - -void ID3v2::Tag::addFrame(Frame *frame) -{ - d->frameList.append(frame); - d->frameListMap[frame->frameID()].append(frame); -} - -void ID3v2::Tag::removeFrame(Frame *frame, bool del) -{ - // remove the frame from the frame list - FrameList::Iterator it = d->frameList.find(frame); - d->frameList.erase(it); - - // ...and from the frame list map - it = d->frameListMap[frame->frameID()].find(frame); - d->frameListMap[frame->frameID()].erase(it); - - // ...and delete as desired - if(del) - delete frame; -} - -void ID3v2::Tag::removeFrames(const ByteVector &id) -{ - FrameList l = d->frameListMap[id]; - for(FrameList::Iterator it = l.begin(); it != l.end(); ++it) - removeFrame(*it, true); -} - -PropertyMap ID3v2::Tag::properties() const -{ - PropertyMap properties; - for(FrameList::ConstIterator it = frameList().begin(); it != frameList().end(); ++it) { - PropertyMap props = (*it)->asProperties(); - properties.merge(props); - } - return properties; -} - -void ID3v2::Tag::removeUnsupportedProperties(const StringList &properties) -{ - for(StringList::ConstIterator it = properties.begin(); it != properties.end(); ++it){ - if(it->startsWith("UNKNOWN/")) { - String frameID = it->substr(String("UNKNOWN/").size()); - if(frameID.size() != 4) - continue; // invalid specification - ByteVector id = frameID.data(String::Latin1); - // delete all unknown frames of given type - FrameList l = frameList(id); - for(FrameList::ConstIterator fit = l.begin(); fit != l.end(); fit++) - if (dynamic_cast<const UnknownFrame *>(*fit) != 0) - removeFrame(*fit); - } else if(it->size() == 4){ - ByteVector id = it->data(String::Latin1); - removeFrames(id); - } else { - ByteVector id = it->substr(0,4).data(String::Latin1); - if(it->size() <= 5) - continue; // invalid specification - String description = it->substr(5); - Frame *frame = 0; - if(id == "TXXX") - frame = UserTextIdentificationFrame::find(this, description); - else if(id == "WXXX") - frame = UserUrlLinkFrame::find(this, description); - else if(id == "COMM") - frame = CommentsFrame::findByDescription(this, description); - else if(id == "USLT") - frame = UnsynchronizedLyricsFrame::findByDescription(this, description); - if(frame) - removeFrame(frame); - } - } -} - -PropertyMap ID3v2::Tag::setProperties(const PropertyMap &origProps) -{ - FrameList framesToDelete; - // we split up the PropertyMap into the "normal" keys and the "complicated" ones, - // which are those according to TIPL or TMCL frames. - PropertyMap properties; - PropertyMap tiplProperties; - PropertyMap tmclProperties; - Frame::splitProperties(origProps, properties, tiplProperties, tmclProperties); - for(FrameListMap::ConstIterator it = frameListMap().begin(); it != frameListMap().end(); ++it){ - for(FrameList::ConstIterator lit = it->second.begin(); lit != it->second.end(); ++lit){ - PropertyMap frameProperties = (*lit)->asProperties(); - if(it->first == "TIPL") { - if (tiplProperties != frameProperties) - framesToDelete.append(*lit); - else - tiplProperties.erase(frameProperties); - } else if(it->first == "TMCL") { - if (tmclProperties != frameProperties) - framesToDelete.append(*lit); - else - tmclProperties.erase(frameProperties); - } else if(!properties.contains(frameProperties)) - framesToDelete.append(*lit); - else - properties.erase(frameProperties); - } - } - for(FrameList::ConstIterator it = framesToDelete.begin(); it != framesToDelete.end(); ++it) - removeFrame(*it); - - // now create remaining frames: - // start with the involved people list (TIPL) - if(!tiplProperties.isEmpty()) - addFrame(TextIdentificationFrame::createTIPLFrame(tiplProperties)); - // proceed with the musician credit list (TMCL) - if(!tmclProperties.isEmpty()) - addFrame(TextIdentificationFrame::createTMCLFrame(tmclProperties)); - // now create the "one key per frame" frames - for(PropertyMap::ConstIterator it = properties.begin(); it != properties.end(); ++it) - addFrame(Frame::createTextualFrame(it->first, it->second)); - return PropertyMap(); // ID3 implements the complete PropertyMap interface, so an empty map is returned -} - -ByteVector ID3v2::Tag::render() const -{ - return render(4); -} - -void ID3v2::Tag::downgradeFrames(FrameList *frames, FrameList *newFrames) const -{ - const char *unsupportedFrames[] = { - "ASPI", "EQU2", "RVA2", "SEEK", "SIGN", "TDRL", "TDTG", - "TMOO", "TPRO", "TSOA", "TSOT", "TSST", "TSOP", 0 - }; - ID3v2::TextIdentificationFrame *frameTDOR = 0; - ID3v2::TextIdentificationFrame *frameTDRC = 0; - ID3v2::TextIdentificationFrame *frameTIPL = 0; - ID3v2::TextIdentificationFrame *frameTMCL = 0; - for(FrameList::Iterator it = d->frameList.begin(); it != d->frameList.end(); it++) { - ID3v2::Frame *frame = *it; - ByteVector frameID = frame->header()->frameID(); - for(int i = 0; unsupportedFrames[i]; i++) { - if(frameID == unsupportedFrames[i]) { - debug("A frame that is not supported in ID3v2.3 \'" - + String(frameID) + "\' has been discarded"); - frame = 0; - break; - } - } - if(frame && frameID == "TDOR") { - frameTDOR = dynamic_cast<ID3v2::TextIdentificationFrame *>(frame); - frame = 0; - } - if(frame && frameID == "TDRC") { - frameTDRC = dynamic_cast<ID3v2::TextIdentificationFrame *>(frame); - frame = 0; - } - if(frame && frameID == "TIPL") { - frameTIPL = dynamic_cast<ID3v2::TextIdentificationFrame *>(frame); - frame = 0; - } - if(frame && frameID == "TMCL") { - frameTMCL = dynamic_cast<ID3v2::TextIdentificationFrame *>(frame); - frame = 0; - } - if(frame) { - frames->append(frame); - } - } - if(frameTDOR) { - String content = frameTDOR->toString(); - if(content.size() >= 4) { - ID3v2::TextIdentificationFrame *frameTORY = new ID3v2::TextIdentificationFrame("TORY", String::Latin1); - frameTORY->setText(content.substr(0, 4)); - frames->append(frameTORY); - newFrames->append(frameTORY); - } - } - if(frameTDRC) { - String content = frameTDRC->toString(); - if(content.size() >= 4) { - ID3v2::TextIdentificationFrame *frameTYER = new ID3v2::TextIdentificationFrame("TYER", String::Latin1); - frameTYER->setText(content.substr(0, 4)); - frames->append(frameTYER); - newFrames->append(frameTYER); - if(content.size() >= 10 && content[4] == '-' && content[7] == '-') { - ID3v2::TextIdentificationFrame *frameTDAT = new ID3v2::TextIdentificationFrame("TDAT", String::Latin1); - frameTDAT->setText(content.substr(8, 2) + content.substr(5, 2)); - frames->append(frameTDAT); - newFrames->append(frameTDAT); - if(content.size() >= 16 && content[10] == 'T' && content[13] == ':') { - ID3v2::TextIdentificationFrame *frameTIME = new ID3v2::TextIdentificationFrame("TIME", String::Latin1); - frameTIME->setText(content.substr(11, 2) + content.substr(14, 2)); - frames->append(frameTIME); - newFrames->append(frameTIME); - } - } - } - } - if(frameTIPL || frameTMCL) { - ID3v2::TextIdentificationFrame *frameIPLS = new ID3v2::TextIdentificationFrame("IPLS", String::Latin1); - StringList people; - if(frameTMCL) { - StringList v24People = frameTMCL->fieldList(); - for(uint i = 0; i + 1 < v24People.size(); i += 2) { - people.append(v24People[i]); - people.append(v24People[i+1]); - } - } - if(frameTIPL) { - StringList v24People = frameTIPL->fieldList(); - for(uint i = 0; i + 1 < v24People.size(); i += 2) { - people.append(v24People[i]); - people.append(v24People[i+1]); - } - } - frameIPLS->setText(people); - frames->append(frameIPLS); - newFrames->append(frameIPLS); - } -} - - -ByteVector ID3v2::Tag::render(int version) const -{ - // We need to render the "tag data" first so that we have to correct size to - // render in the tag's header. The "tag data" -- everything that is included - // in ID3v2::Header::tagSize() -- includes the extended header, frames and - // padding, but does not include the tag's header or footer. - - ByteVector tagData; - - if(version != 3 && version != 4) { - debug("Unknown ID3v2 version, using ID3v2.4"); - version = 4; - } - - // TODO: Render the extended header. - - // Loop through the frames rendering them and adding them to the tagData. - - FrameList newFrames; - newFrames.setAutoDelete(true); - - FrameList frameList; - if(version == 4) { - frameList = d->frameList; - } - else { - downgradeFrames(&frameList, &newFrames); - } - - for(FrameList::Iterator it = frameList.begin(); it != frameList.end(); it++) { - (*it)->header()->setVersion(version); - if((*it)->header()->frameID().size() != 4) { - debug("A frame of unsupported or unknown type \'" - + String((*it)->header()->frameID()) + "\' has been discarded"); - continue; - } - if(!(*it)->header()->tagAlterPreservation()) - tagData.append((*it)->render()); - } - - // Compute the amount of padding, and append that to tagData. - - uint paddingSize = 0; - uint originalSize = d->header.tagSize(); - - if(tagData.size() < originalSize) - paddingSize = originalSize - tagData.size(); - else - paddingSize = 1024; - - tagData.append(ByteVector(paddingSize, char(0))); - - // Set the version and data size. - d->header.setMajorVersion(version); - d->header.setTagSize(tagData.size()); - - // TODO: This should eventually include d->footer->render(). - return d->header.render() + tagData; -} - -Latin1StringHandler const *ID3v2::Tag::latin1StringHandler() -{ - return TagPrivate::stringHandler; -} - -void ID3v2::Tag::setLatin1StringHandler(const Latin1StringHandler *handler) -{ - if(handler) - TagPrivate::stringHandler = handler; - else - TagPrivate::stringHandler = &defaultStringHandler; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void ID3v2::Tag::read() -{ - if(d->file && d->file->isOpen()) { - - d->file->seek(d->tagOffset); - d->header.setData(d->file->readBlock(Header::size())); - - // if the tag size is 0, then this is an invalid tag (tags must contain at - // least one frame) - - if(d->header.tagSize() == 0) - return; - - parse(d->file->readBlock(d->header.tagSize())); - } -} - -void ID3v2::Tag::parse(const ByteVector &origData) -{ - ByteVector data = origData; - - if(d->header.unsynchronisation() && d->header.majorVersion() <= 3) - data = SynchData::decode(data); - - uint frameDataPosition = 0; - uint frameDataLength = data.size(); - - // check for extended header - - if(d->header.extendedHeader()) { - if(!d->extendedHeader) - d->extendedHeader = new ExtendedHeader; - d->extendedHeader->setData(data); - if(d->extendedHeader->size() <= data.size()) { - frameDataPosition += d->extendedHeader->size(); - frameDataLength -= d->extendedHeader->size(); - } - } - - // check for footer -- we don't actually need to parse it, as it *must* - // contain the same data as the header, but we do need to account for its - // size. - - if(d->header.footerPresent() && Footer::size() <= frameDataLength) - frameDataLength -= Footer::size(); - - // parse frames - - // Make sure that there is at least enough room in the remaining frame data for - // a frame header. - - while(frameDataPosition < frameDataLength - Frame::headerSize(d->header.majorVersion())) { - - // If the next data is position is 0, assume that we've hit the padding - // portion of the frame data. - - if(data.at(frameDataPosition) == 0) { - if(d->header.footerPresent()) { - debug("Padding *and* a footer found. This is not allowed by the spec."); - } - - d->paddingSize = frameDataLength - frameDataPosition; - return; - } - - Frame *frame = d->factory->createFrame(data.mid(frameDataPosition), - &d->header); - - if(!frame) - return; - - // Checks to make sure that frame parsed correctly. - - if(frame->size() <= 0) { - delete frame; - return; - } - - frameDataPosition += frame->size() + Frame::headerSize(d->header.majorVersion()); - addFrame(frame); - } -} - -void ID3v2::Tag::setTextFrame(const ByteVector &id, const String &value) -{ - if(value.isEmpty()) { - removeFrames(id); - return; - } - - if(!d->frameListMap[id].isEmpty()) - d->frameListMap[id].front()->setText(value); - else { - const String::Type encoding = d->factory->defaultTextEncoding(); - TextIdentificationFrame *f = new TextIdentificationFrame(id, encoding); - addFrame(f); - f->setText(value); - } -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2tag.h b/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2tag.h deleted file mode 100644 index 5fd5c1f125a..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/id3v2/id3v2tag.h +++ /dev/null @@ -1,412 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_ID3V2TAG_H -#define TAGLIB_ID3V2TAG_H - -#include "tag.h" -#include "tbytevector.h" -#include "tstring.h" -#include "tlist.h" -#include "tmap.h" -#include "taglib_export.h" - -#include "id3v2framefactory.h" - -namespace TagLib { - - class File; - - //! An ID3v2 implementation - - /*! - * This is a relatively complete and flexible framework for working with ID3v2 - * tags. - * - * \see ID3v2::Tag - */ - - namespace ID3v2 { - - class Header; - class ExtendedHeader; - class Footer; - - typedef List<Frame *> FrameList; - typedef Map<ByteVector, FrameList> FrameListMap; - - //! An abstraction for the ISO-8859-1 string to data encoding in ID3v2 tags. - - /*! - * ID3v2 tag can store strings in ISO-8859-1 (Latin1), and TagLib only - * supports genuine ISO-8859-1 by default. However, in practice, non - * ISO-8859-1 encodings are often used instead of ISO-8859-1, such as - * Windows-1252 for western languages, Shift_JIS for Japanese and so on. - * - * Here is an option to read such tags by subclassing this class, - * reimplementing parse() and setting your reimplementation as the default - * with ID3v2::Tag::setStringHandler(). - * - * \note Writing non-ISO-8859-1 tags is not implemented intentionally. - * Use UTF-16 or UTF-8 instead. - * - * \see ID3v2::Tag::setStringHandler() - */ - class TAGLIB_EXPORT Latin1StringHandler - { - public: - Latin1StringHandler(); - virtual ~Latin1StringHandler(); - - /*! - * Decode a string from \a data. The default implementation assumes that - * \a data is an ISO-8859-1 (Latin1) character array. - */ - virtual String parse(const ByteVector &data) const; - }; - - //! The main class in the ID3v2 implementation - - /*! - * This is the main class in the ID3v2 implementation. It serves two - * functions. This first, as is obvious from the public API, is to provide a - * container for the other ID3v2 related classes. In addition, through the - * read() and parse() protected methods, it provides the most basic level of - * parsing. In these methods the ID3v2 tag is extracted from the file and - * split into data components. - * - * ID3v2 tags have several parts, TagLib attempts to provide an interface - * for them all. header(), footer() and extendedHeader() corespond to those - * data structures in the ID3v2 standard and the APIs for the classes that - * they return attempt to reflect this. - * - * Also ID3v2 tags are built up from a list of frames, which are in turn - * have a header and a list of fields. TagLib provides two ways of accessing - * the list of frames that are in a given ID3v2 tag. The first is simply - * via the frameList() method. This is just a list of pointers to the frames. - * The second is a map from the frame type -- i.e. "COMM" for comments -- and - * a list of frames of that type. (In some cases ID3v2 allows for multiple - * frames of the same type, hence this being a map to a list rather than just - * a map to an individual frame.) - * - * More information on the structure of frames can be found in the ID3v2::Frame - * class. - * - * read() and parse() pass binary data to the other ID3v2 class structures, - * they do not handle parsing of flags or fields, for instace. Those are - * handled by similar functions within those classes. - * - * \note All pointers to data structures within the tag will become invalid - * when the tag is destroyed. - * - * \warning Dealing with the nasty details of ID3v2 is not for the faint of - * heart and should not be done without much meditation on the spec. It's - * rather long, but if you're planning on messing with this class and others - * that deal with the details of ID3v2 (rather than the nice, safe, abstract - * TagLib::Tag and friends), it's worth your time to familiarize yourself - * with said spec (which is distrubuted with the TagLib sources). TagLib - * tries to do most of the work, but with a little luck, you can still - * convince it to generate invalid ID3v2 tags. The APIs for ID3v2 assume a - * working knowledge of ID3v2 structure. You're been warned. - */ - - class TAGLIB_EXPORT Tag : public TagLib::Tag - { - public: - /*! - * Constructs an empty ID3v2 tag. - * - * \note You must create at least one frame for this tag to be valid. - */ - Tag(); - - /*! - * Constructs an ID3v2 tag read from \a file starting at \a tagOffset. - * \a factory specifies which FrameFactory will be used for the - * construction of new frames. - * - * \note You should be able to ignore the \a factory parameter in almost - * all situations. You would want to specify your own FrameFactory - * subclass in the case that you are extending TagLib to support additional - * frame types, which would be incorperated into your factory. - * - * \see FrameFactory - */ - Tag(File *file, long tagOffset, - const FrameFactory *factory = FrameFactory::instance()); - - /*! - * Destroys this Tag instance. - */ - virtual ~Tag(); - - // Reimplementations. - - virtual String title() const; - virtual String artist() const; - virtual String album() const; - virtual String comment() const; - virtual String genre() const; - virtual uint year() const; - virtual uint track() const; - - virtual void setTitle(const String &s); - virtual void setArtist(const String &s); - virtual void setAlbum(const String &s); - virtual void setComment(const String &s); - virtual void setGenre(const String &s); - virtual void setYear(uint i); - virtual void setTrack(uint i); - - virtual bool isEmpty() const; - - /*! - * Returns a pointer to the tag's header. - */ - Header *header() const; - - /*! - * Returns a pointer to the tag's extended header or null if there is no - * extended header. - */ - ExtendedHeader *extendedHeader() const; - - /*! - * Returns a pointer to the tag's footer or null if there is no footer. - * - * \deprecated I don't see any reason to keep this around since there's - * nothing useful to be retrieved from the footer, but well, again, I'm - * prone to change my mind, so this gets to stay around until near a - * release. - */ - Footer *footer() const; - - /*! - * Returns a reference to the frame list map. This is an FrameListMap of - * all of the frames in the tag. - * - * This is the most convenient structure for accessing the tag's frames. - * Many frame types allow multiple instances of the same frame type so this - * is a map of lists. In most cases however there will only be a single - * frame of a certain type. - * - * Let's say for instance that you wanted to access the frame for total - * beats per minute -- the TBPM frame. - * - * \code - * TagLib::MPEG::File f("foo.mp3"); - * - * // Check to make sure that it has an ID3v2 tag - * - * if(f.ID3v2Tag()) { - * - * // Get the list of frames for a specific frame type - * - * TagLib::ID3v2::FrameList l = f.ID3v2Tag()->frameListMap()["TBPM"]; - * - * if(!l.isEmpty()) - * std::cout << l.front()->toString() << std::endl; - * } - * - * \endcode - * - * \warning You should not modify this data structure directly, instead - * use addFrame() and removeFrame(). - * - * \see frameList() - */ - const FrameListMap &frameListMap() const; - - /*! - * Returns a reference to the frame list. This is an FrameList of all of - * the frames in the tag in the order that they were parsed. - * - * This can be useful if for example you want iterate over the tag's frames - * in the order that they occur in the tag. - * - * \warning You should not modify this data structure directly, instead - * use addFrame() and removeFrame(). - */ - const FrameList &frameList() const; - - /*! - * Returns the frame list for frames with the id \a frameID or an empty - * list if there are no frames of that type. This is just a convenience - * and is equivalent to: - * - * \code - * frameListMap()[frameID]; - * \endcode - * - * \see frameListMap() - */ - const FrameList &frameList(const ByteVector &frameID) const; - - /*! - * Add a frame to the tag. At this point the tag takes ownership of - * the frame and will handle freeing its memory. - * - * \note Using this method will invalidate any pointers on the list - * returned by frameList() - */ - void addFrame(Frame *frame); - - /*! - * Remove a frame from the tag. If \a del is true the frame's memory - * will be freed; if it is false, it must be deleted by the user. - * - * \note Using this method will invalidate any pointers on the list - * returned by frameList() - */ - void removeFrame(Frame *frame, bool del = true); - - /*! - * Remove all frames of type \a id from the tag and free their memory. - * - * \note Using this method will invalidate any pointers on the list - * returned by frameList() - */ - void removeFrames(const ByteVector &id); - - /*! - * Implements the unified property interface -- export function. - * This function does some work to translate the hard-specified ID3v2 - * frame types into a free-form string-to-stringlist PropertyMap: - * - if ID3v2 frame ID is known by Frame::frameIDToKey(), the returned - * key is used - * - if the frame ID is "TXXX" (user text frame), the description() is - * used as key - * - if the frame ID is "WXXX" (user url frame), - * - if the description is empty or "URL", the key "URL" is used - * - otherwise, the key "URL:<description>" is used; - * - if the frame ID is "COMM" (comments frame), - * - if the description is empty or "COMMENT", the key "COMMENT" - * is used - * - otherwise, the key "COMMENT:<description>" is used; - * - if the frame ID is "USLT" (unsynchronized lyrics), - * - if the description is empty or "LYRICS", the key "LYRICS" is used - * - otherwise, the key "LYRICS:<description>" is used; - * - if the frame ID is "TIPL" (involved peoples list), and if all the - * roles defined in the frame are known in TextIdentificationFrame::involvedPeopleMap(), - * then "<role>=<name>" will be contained in the returned obejct for each - * - if the frame ID is "TMCL" (musician credit list), then - * "PERFORMER:<instrument>=<name>" will be contained in the returned - * PropertyMap for each defined musician - * In any other case, the unsupportedData() of the returned object will contain - * the frame's ID and, in case of a frame ID which is allowed to appear more than - * once, the description, separated by a "/". - * - */ - PropertyMap properties() const; - - /*! - * Removes unsupported frames given by \a properties. The elements of - * \a properties must be taken from properties().unsupportedData(); they - * are of one of the following forms: - * - a four-character frame ID, if the ID3 specification allows only one - * frame with that ID (thus, the frame is uniquely determined) - * - frameID + "/" + description(), when the ID is one of "TXXX", "WXXX", - * "COMM", or "USLT", - * - "UNKNOWN/" + frameID, for frames that could not be parsed by TagLib. - * In that case, *all* unknown frames with the given ID will be removed. - */ - void removeUnsupportedProperties(const StringList &properties); - - /*! - * Implements the unified property interface -- import function. - * See the comments in properties(). - */ - PropertyMap setProperties(const PropertyMap &); - - /*! - * Render the tag back to binary data, suitable to be written to disk. - */ - ByteVector render() const; - - /*! - * Render the tag back to binary data, suitable to be written to disk. - * - * The \a version parameter specifies the version of the rendered - * ID3v2 tag. It can be either 4 or 3. - */ - // BIC: combine with the above method - ByteVector render(int version) const; - - /*! - * Gets the current string handler that decides how the "Latin-1" data - * will be converted to and from binary data. - * - * \see Latin1StringHandler - */ - static Latin1StringHandler const *latin1StringHandler(); - - /*! - * Sets the string handler that decides how the "Latin-1" data will be - * converted to and from binary data. - * If the parameter \a handler is null, the previous handler is - * released and default ISO-8859-1 handler is restored. - * - * \note The caller is responsible for deleting the previous handler - * as needed after it is released. - * - * \see Latin1StringHandler - */ - static void setLatin1StringHandler(const Latin1StringHandler *handler); - - protected: - /*! - * Reads data from the file specified in the constructor. It does basic - * parsing of the data in the largest chunks. It partitions the tag into - * the Header, the body of the tag (which contains the ExtendedHeader and - * frames) and Footer. - */ - void read(); - - /*! - * This is called by read to parse the body of the tag. It determines if an - * extended header exists and adds frames to the FrameListMap. - */ - void parse(const ByteVector &data); - - /*! - * Sets the value of the text frame with the Frame ID \a id to \a value. - * If the frame does not exist, it is created. - */ - void setTextFrame(const ByteVector &id, const String &value); - - void downgradeFrames(FrameList *existingFrames, FrameList *newFrames) const; - - private: - Tag(const Tag &); - Tag &operator=(const Tag &); - - class TagPrivate; - TagPrivate *d; - }; - - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/mpegfile.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/mpegfile.cpp deleted file mode 100644 index 6ebff897aa8..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/mpegfile.cpp +++ /dev/null @@ -1,644 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tagunion.h> -#include <id3v2tag.h> -#include <id3v2header.h> -#include <id3v1tag.h> -#include <apefooter.h> -#include <apetag.h> -#include <tdebug.h> - -#include <bitset> - -#include "mpegfile.h" -#include "mpegheader.h" -#include "tpropertymap.h" - -using namespace TagLib; - -namespace -{ - enum { ID3v2Index = 0, APEIndex = 1, ID3v1Index = 2 }; -} - -class MPEG::File::FilePrivate -{ -public: - FilePrivate(ID3v2::FrameFactory *frameFactory = ID3v2::FrameFactory::instance()) : - ID3v2FrameFactory(frameFactory), - ID3v2Location(-1), - ID3v2OriginalSize(0), - APELocation(-1), - APEFooterLocation(-1), - APEOriginalSize(0), - ID3v1Location(-1), - hasID3v2(false), - hasID3v1(false), - hasAPE(false), - properties(0) - { - - } - - ~FilePrivate() - { - delete properties; - } - - const ID3v2::FrameFactory *ID3v2FrameFactory; - - long ID3v2Location; - uint ID3v2OriginalSize; - - long APELocation; - long APEFooterLocation; - uint APEOriginalSize; - - long ID3v1Location; - - TagUnion tag; - - // These indicate whether the file *on disk* has these tags, not if - // this data structure does. This is used in computing offsets. - - bool hasID3v2; - bool hasID3v1; - bool hasAPE; - - Properties *properties; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -MPEG::File::File(FileName file, bool readProperties, - Properties::ReadStyle propertiesStyle) : TagLib::File(file) -{ - d = new FilePrivate; - - if(isOpen()) - read(readProperties, propertiesStyle); -} - -MPEG::File::File(FileName file, ID3v2::FrameFactory *frameFactory, - bool readProperties, Properties::ReadStyle propertiesStyle) : - TagLib::File(file) -{ - d = new FilePrivate(frameFactory); - - if(isOpen()) - read(readProperties, propertiesStyle); -} - -MPEG::File::File(IOStream *stream, ID3v2::FrameFactory *frameFactory, - bool readProperties, Properties::ReadStyle propertiesStyle) : - TagLib::File(stream) -{ - d = new FilePrivate(frameFactory); - - if(isOpen()) - read(readProperties, propertiesStyle); -} - -MPEG::File::~File() -{ - delete d; -} - -TagLib::Tag *MPEG::File::tag() const -{ - return &d->tag; -} - -PropertyMap MPEG::File::properties() const -{ - // once Tag::properties() is virtual, this case distinction could actually be done - // within TagUnion. - if(d->hasID3v2) - return d->tag.access<ID3v2::Tag>(ID3v2Index, false)->properties(); - if(d->hasAPE) - return d->tag.access<APE::Tag>(APEIndex, false)->properties(); - if(d->hasID3v1) - return d->tag.access<ID3v1::Tag>(ID3v1Index, false)->properties(); - return PropertyMap(); -} - -void MPEG::File::removeUnsupportedProperties(const StringList &properties) -{ - if(d->hasID3v2) - d->tag.access<ID3v2::Tag>(ID3v2Index, false)->removeUnsupportedProperties(properties); - else if(d->hasAPE) - d->tag.access<APE::Tag>(APEIndex, false)->removeUnsupportedProperties(properties); - else if(d->hasID3v1) - d->tag.access<ID3v1::Tag>(ID3v1Index, false)->removeUnsupportedProperties(properties); -} -PropertyMap MPEG::File::setProperties(const PropertyMap &properties) -{ - if(d->hasID3v2) - return d->tag.access<ID3v2::Tag>(ID3v2Index, false)->setProperties(properties); - else if(d->hasAPE) - return d->tag.access<APE::Tag>(APEIndex, false)->setProperties(properties); - else if(d->hasID3v1) - return d->tag.access<ID3v1::Tag>(ID3v1Index, false)->setProperties(properties); - else - return d->tag.access<ID3v2::Tag>(ID3v2Index, true)->setProperties(properties); -} - -MPEG::Properties *MPEG::File::audioProperties() const -{ - return d->properties; -} - -bool MPEG::File::save() -{ - return save(AllTags); -} - -bool MPEG::File::save(int tags) -{ - return save(tags, true); -} - -bool MPEG::File::save(int tags, bool stripOthers) -{ - return save(tags, stripOthers, 4); -} - -bool MPEG::File::save(int tags, bool stripOthers, int id3v2Version) -{ - if(tags == NoTags && stripOthers) - return strip(AllTags); - - if(!ID3v2Tag() && !ID3v1Tag() && !APETag()) { - - if((d->hasID3v1 || d->hasID3v2 || d->hasAPE) && stripOthers) - return strip(AllTags); - - return true; - } - - if(readOnly()) { - debug("MPEG::File::save() -- File is read only."); - return false; - } - - // Create the tags if we've been asked to. Copy the values from the tag that - // does exist into the new tag, except if the existing tag is to be stripped. - - if((tags & ID3v2) && ID3v1Tag() && !(stripOthers && !(tags & ID3v1))) - Tag::duplicate(ID3v1Tag(), ID3v2Tag(true), false); - - if((tags & ID3v1) && d->tag[ID3v2Index] && !(stripOthers && !(tags & ID3v2))) - Tag::duplicate(ID3v2Tag(), ID3v1Tag(true), false); - - bool success = true; - - if(ID3v2 & tags) { - - if(ID3v2Tag() && !ID3v2Tag()->isEmpty()) { - - if(!d->hasID3v2) - d->ID3v2Location = 0; - - insert(ID3v2Tag()->render(id3v2Version), d->ID3v2Location, d->ID3v2OriginalSize); - - d->hasID3v2 = true; - - // v1 tag location has changed, update if it exists - - if(ID3v1Tag()) - d->ID3v1Location = findID3v1(); - - // APE tag location has changed, update if it exists - - if(APETag()) - findAPE(); - } - else if(stripOthers) - success = strip(ID3v2, false) && success; - } - else if(d->hasID3v2 && stripOthers) - success = strip(ID3v2) && success; - - if(ID3v1 & tags) { - if(ID3v1Tag() && !ID3v1Tag()->isEmpty()) { - int offset = d->hasID3v1 ? -128 : 0; - seek(offset, End); - writeBlock(ID3v1Tag()->render()); - d->hasID3v1 = true; - d->ID3v1Location = findID3v1(); - } - else if(stripOthers) - success = strip(ID3v1) && success; - } - else if(d->hasID3v1 && stripOthers) - success = strip(ID3v1, false) && success; - - // Dont save an APE-tag unless one has been created - - if((APE & tags) && APETag()) { - if(d->hasAPE) - insert(APETag()->render(), d->APELocation, d->APEOriginalSize); - else { - if(d->hasID3v1) { - insert(APETag()->render(), d->ID3v1Location, 0); - d->APEOriginalSize = APETag()->footer()->completeTagSize(); - d->hasAPE = true; - d->APELocation = d->ID3v1Location; - d->ID3v1Location += d->APEOriginalSize; - } - else { - seek(0, End); - d->APELocation = tell(); - APE::Tag *apeTag = d->tag.access<APE::Tag>(APEIndex, false); - d->APEFooterLocation = d->APELocation - + apeTag->footer()->completeTagSize() - - APE::Footer::size(); - writeBlock(APETag()->render()); - d->APEOriginalSize = APETag()->footer()->completeTagSize(); - d->hasAPE = true; - } - } - } - else if(d->hasAPE && stripOthers) - success = strip(APE, false) && success; - - return success; -} - -ID3v2::Tag *MPEG::File::ID3v2Tag(bool create) -{ - return d->tag.access<ID3v2::Tag>(ID3v2Index, create); -} - -ID3v1::Tag *MPEG::File::ID3v1Tag(bool create) -{ - return d->tag.access<ID3v1::Tag>(ID3v1Index, create); -} - -APE::Tag *MPEG::File::APETag(bool create) -{ - return d->tag.access<APE::Tag>(APEIndex, create); -} - -bool MPEG::File::strip(int tags) -{ - return strip(tags, true); -} - -bool MPEG::File::strip(int tags, bool freeMemory) -{ - if(readOnly()) { - debug("MPEG::File::strip() - Cannot strip tags from a read only file."); - return false; - } - - if((tags & ID3v2) && d->hasID3v2) { - removeBlock(d->ID3v2Location, d->ID3v2OriginalSize); - d->ID3v2Location = -1; - d->ID3v2OriginalSize = 0; - d->hasID3v2 = false; - - if(freeMemory) - d->tag.set(ID3v2Index, 0); - - // v1 tag location has changed, update if it exists - - if(ID3v1Tag()) - d->ID3v1Location = findID3v1(); - - // APE tag location has changed, update if it exists - - if(APETag()) - findAPE(); - } - - if((tags & ID3v1) && d->hasID3v1) { - truncate(d->ID3v1Location); - d->ID3v1Location = -1; - d->hasID3v1 = false; - - if(freeMemory) - d->tag.set(ID3v1Index, 0); - } - - if((tags & APE) && d->hasAPE) { - removeBlock(d->APELocation, d->APEOriginalSize); - d->APELocation = -1; - d->APEFooterLocation = -1; - d->hasAPE = false; - if(d->hasID3v1) { - if(d->ID3v1Location > d->APELocation) - d->ID3v1Location -= d->APEOriginalSize; - } - - if(freeMemory) - d->tag.set(APEIndex, 0); - } - - return true; -} - -void MPEG::File::setID3v2FrameFactory(const ID3v2::FrameFactory *factory) -{ - d->ID3v2FrameFactory = factory; -} - -long MPEG::File::nextFrameOffset(long position) -{ - bool foundLastSyncPattern = false; - - ByteVector buffer; - - while(true) { - seek(position); - buffer = readBlock(bufferSize()); - - if(buffer.size() <= 0) - return -1; - - if(foundLastSyncPattern && secondSynchByte(buffer[0])) - return position - 1; - - for(uint i = 0; i < buffer.size() - 1; i++) { - if(uchar(buffer[i]) == 0xff && secondSynchByte(buffer[i + 1])) - return position + i; - } - - foundLastSyncPattern = uchar(buffer[buffer.size() - 1]) == 0xff; - position += buffer.size(); - } -} - -long MPEG::File::previousFrameOffset(long position) -{ - bool foundFirstSyncPattern = false; - ByteVector buffer; - - while (position > 0) { - long size = ulong(position) < bufferSize() ? position : bufferSize(); - position -= size; - - seek(position); - buffer = readBlock(size); - - if(buffer.size() <= 0) - break; - - if(foundFirstSyncPattern && uchar(buffer[buffer.size() - 1]) == 0xff) - return position + buffer.size() - 1; - - for(int i = buffer.size() - 2; i >= 0; i--) { - if(uchar(buffer[i]) == 0xff && secondSynchByte(buffer[i + 1])) - return position + i; - } - - foundFirstSyncPattern = secondSynchByte(buffer[0]); - } - return -1; -} - -long MPEG::File::firstFrameOffset() -{ - long position = 0; - - if(ID3v2Tag()) - position = d->ID3v2Location + ID3v2Tag()->header()->completeTagSize(); - - return nextFrameOffset(position); -} - -long MPEG::File::lastFrameOffset() -{ - return previousFrameOffset(ID3v1Tag() ? d->ID3v1Location - 1 : length()); -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void MPEG::File::read(bool readProperties, Properties::ReadStyle propertiesStyle) -{ - // Look for an ID3v2 tag - - d->ID3v2Location = findID3v2(); - - if(d->ID3v2Location >= 0) { - - d->tag.set(ID3v2Index, new ID3v2::Tag(this, d->ID3v2Location, d->ID3v2FrameFactory)); - - d->ID3v2OriginalSize = ID3v2Tag()->header()->completeTagSize(); - - if(ID3v2Tag()->header()->tagSize() <= 0) - d->tag.set(ID3v2Index, 0); - else - d->hasID3v2 = true; - } - - // Look for an ID3v1 tag - - d->ID3v1Location = findID3v1(); - - if(d->ID3v1Location >= 0) { - d->tag.set(ID3v1Index, new ID3v1::Tag(this, d->ID3v1Location)); - d->hasID3v1 = true; - } - - // Look for an APE tag - - findAPE(); - - if(d->APELocation >= 0) { - - d->tag.set(APEIndex, new APE::Tag(this, d->APEFooterLocation)); - d->APEOriginalSize = APETag()->footer()->completeTagSize(); - d->hasAPE = true; - } - - if(readProperties) - d->properties = new Properties(this, propertiesStyle); - - // Make sure that we have our default tag types available. - - ID3v2Tag(true); - ID3v1Tag(true); -} - -long MPEG::File::findID3v2() -{ - // This method is based on the contents of TagLib::File::find(), but because - // of some subtlteies -- specifically the need to look for the bit pattern of - // an MPEG sync, it has been modified for use here. - - if(isValid() && ID3v2::Header::fileIdentifier().size() <= bufferSize()) { - - // The position in the file that the current buffer starts at. - - long bufferOffset = 0; - ByteVector buffer; - - // These variables are used to keep track of a partial match that happens at - // the end of a buffer. - - int previousPartialMatch = -1; - bool previousPartialSynchMatch = false; - - // Save the location of the current read pointer. We will restore the - // position using seek() before all returns. - - long originalPosition = tell(); - - // Start the search at the beginning of the file. - - seek(0); - - // This loop is the crux of the find method. There are three cases that we - // want to account for: - // (1) The previously searched buffer contained a partial match of the search - // pattern and we want to see if the next one starts with the remainder of - // that pattern. - // - // (2) The search pattern is wholly contained within the current buffer. - // - // (3) The current buffer ends with a partial match of the pattern. We will - // note this for use in the next itteration, where we will check for the rest - // of the pattern. - - for(buffer = readBlock(bufferSize()); buffer.size() > 0; buffer = readBlock(bufferSize())) { - - // (1) previous partial match - - if(previousPartialSynchMatch && secondSynchByte(buffer[0])) - return -1; - - if(previousPartialMatch >= 0 && int(bufferSize()) > previousPartialMatch) { - const int patternOffset = (bufferSize() - previousPartialMatch); - if(buffer.containsAt(ID3v2::Header::fileIdentifier(), 0, patternOffset)) { - seek(originalPosition); - return bufferOffset - bufferSize() + previousPartialMatch; - } - } - - // (2) pattern contained in current buffer - - long location = buffer.find(ID3v2::Header::fileIdentifier()); - if(location >= 0) { - seek(originalPosition); - return bufferOffset + location; - } - - int firstSynchByte = buffer.find(char(uchar(255))); - - // Here we have to loop because there could be several of the first - // (11111111) byte, and we want to check all such instances until we find - // a full match (11111111 111) or hit the end of the buffer. - - while(firstSynchByte >= 0) { - - // if this *is not* at the end of the buffer - - if(firstSynchByte < int(buffer.size()) - 1) { - if(secondSynchByte(buffer[firstSynchByte + 1])) { - // We've found the frame synch pattern. - seek(originalPosition); - return -1; - } - else { - - // We found 11111111 at the end of the current buffer indicating a - // partial match of the synch pattern. The find() below should - // return -1 and break out of the loop. - - previousPartialSynchMatch = true; - } - } - - // Check in the rest of the buffer. - - firstSynchByte = buffer.find(char(uchar(255)), firstSynchByte + 1); - } - - // (3) partial match - - previousPartialMatch = buffer.endsWithPartialMatch(ID3v2::Header::fileIdentifier()); - - bufferOffset += bufferSize(); - } - - // Since we hit the end of the file, reset the status before continuing. - - clear(); - - seek(originalPosition); - } - - return -1; -} - -long MPEG::File::findID3v1() -{ - if(isValid()) { - seek(-128, End); - long p = tell(); - - if(readBlock(3) == ID3v1::Tag::fileIdentifier()) - return p; - } - return -1; -} - -void MPEG::File::findAPE() -{ - if(isValid()) { - seek(d->hasID3v1 ? -160 : -32, End); - - long p = tell(); - - if(readBlock(8) == APE::Tag::fileIdentifier()) { - d->APEFooterLocation = p; - seek(d->APEFooterLocation); - APE::Footer footer(readBlock(APE::Footer::size())); - d->APELocation = d->APEFooterLocation - footer.completeTagSize() - + APE::Footer::size(); - return; - } - } - - d->APELocation = -1; - d->APEFooterLocation = -1; -} - -bool MPEG::File::secondSynchByte(char byte) -{ - if(uchar(byte) == 0xff) - return false; - - std::bitset<8> b(byte); - - // check to see if the byte matches 111xxxxx - return b.test(7) && b.test(6) && b.test(5); -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/mpegfile.h b/platform/win32/msvc/external/taglib/taglib/mpeg/mpegfile.h deleted file mode 100644 index 9967a99125f..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/mpegfile.h +++ /dev/null @@ -1,326 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_MPEGFILE_H -#define TAGLIB_MPEGFILE_H - -#include "taglib_export.h" -#include "tfile.h" -#include "tag.h" - -#include "mpegproperties.h" - -namespace TagLib { - - namespace ID3v2 { class Tag; class FrameFactory; } - namespace ID3v1 { class Tag; } - namespace APE { class Tag; } - - //! An implementation of TagLib::File with MPEG (MP3) specific methods - - namespace MPEG { - - //! An MPEG file class with some useful methods specific to MPEG - - /*! - * This implements the generic TagLib::File API and additionally provides - * access to properties that are distinct to MPEG files, notably access - * to the different ID3 tags. - */ - - class TAGLIB_EXPORT File : public TagLib::File - { - public: - /*! - * This set of flags is used for various operations and is suitable for - * being OR-ed together. - */ - enum TagTypes { - //! Empty set. Matches no tag types. - NoTags = 0x0000, - //! Matches ID3v1 tags. - ID3v1 = 0x0001, - //! Matches ID3v2 tags. - ID3v2 = 0x0002, - //! Matches APE tags. - APE = 0x0004, - //! Matches all tag types. - AllTags = 0xffff - }; - - /*! - * Contructs an MPEG file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - * - * \deprecated This constructor will be dropped in favor of the one below - * in a future version. - */ - File(FileName file, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Contructs an MPEG file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. The frames will be created using - * \a frameFactory. - * - * \deprecated This constructor will be dropped in favor of the one below - * in a future version. - */ - File(FileName file, ID3v2::FrameFactory *frameFactory, - bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Contructs an MPEG file from \a stream. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. The frames will be created using - * \a frameFactory. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - */ - // BIC: merge with the above constructor - File(IOStream *stream, ID3v2::FrameFactory *frameFactory, - bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Destroys this instance of the File. - */ - virtual ~File(); - - /*! - * Returns a pointer to a tag that is the union of the ID3v2 and ID3v1 - * tags. The ID3v2 tag is given priority in reading the information -- if - * requested information exists in both the ID3v2 tag and the ID3v1 tag, - * the information from the ID3v2 tag will be returned. - * - * If you would like more granular control over the content of the tags, - * with the concession of generality, use the tag-type specific calls. - * - * \note As this tag is not implemented as an ID3v2 tag or an ID3v1 tag, - * but a union of the two this pointer may not be cast to the specific - * tag types. - * - * \see ID3v1Tag() - * \see ID3v2Tag() - * \see APETag() - */ - virtual Tag *tag() const; - - /*! - * Implements the unified property interface -- export function. - * If the file contains more than one tag, only the - * first one (in the order ID3v2, APE, ID3v1) will be converted to the - * PropertyMap. - */ - PropertyMap properties() const; - - void removeUnsupportedProperties(const StringList &properties); - - /*! - * Implements the unified tag dictionary interface -- import function. - * As with the export, only one tag is taken into account. If the file - * has no tag at all, ID3v2 will be created. - */ - PropertyMap setProperties(const PropertyMap &); - - /*! - * Returns the MPEG::Properties for this file. If no audio properties - * were read then this will return a null pointer. - */ - virtual Properties *audioProperties() const; - - /*! - * Save the file. If at least one tag -- ID3v1 or ID3v2 -- exists this - * will duplicate its content into the other tag. This returns true - * if saving was successful. - * - * If neither exists or if both tags are empty, this will strip the tags - * from the file. - * - * This is the same as calling save(AllTags); - * - * If you would like more granular control over the content of the tags, - * with the concession of generality, use paramaterized save call below. - * - * \see save(int tags) - */ - virtual bool save(); - - /*! - * Save the file. This will attempt to save all of the tag types that are - * specified by OR-ing together TagTypes values. The save() method above - * uses AllTags. This returns true if saving was successful. - * - * This strips all tags not included in the mask, but does not modify them - * in memory, so later calls to save() which make use of these tags will - * remain valid. This also strips empty tags. - */ - bool save(int tags); - - /*! - * Save the file. This will attempt to save all of the tag types that are - * specified by OR-ing together TagTypes values. The save() method above - * uses AllTags. This returns true if saving was successful. - * - * If \a stripOthers is true this strips all tags not included in the mask, - * but does not modify them in memory, so later calls to save() which make - * use of these tags will remain valid. This also strips empty tags. - */ - // BIC: combine with the above method - bool save(int tags, bool stripOthers); - - /*! - * Save the file. This will attempt to save all of the tag types that are - * specified by OR-ing together TagTypes values. The save() method above - * uses AllTags. This returns true if saving was successful. - * - * If \a stripOthers is true this strips all tags not included in the mask, - * but does not modify them in memory, so later calls to save() which make - * use of these tags will remain valid. This also strips empty tags. - * - * The \a id3v2Version parameter specifies the version of the saved - * ID3v2 tag. It can be either 4 or 3. - */ - // BIC: combine with the above method - bool save(int tags, bool stripOthers, int id3v2Version); - - /*! - * Returns a pointer to the ID3v2 tag of the file. - * - * A tag will always be returned, regardless of whether there is a - * tag in the file or not. Use ID3v2::Tag::isEmpty() to check if - * the tag contains no data. - * - * \note The Tag <b>is still</b> owned by the MPEG::File and should not be - * deleted by the user. It will be deleted when the file (object) is - * destroyed. - */ - ID3v2::Tag *ID3v2Tag(bool create = false); - - /*! - * Returns a pointer to the ID3v1 tag of the file. - * - * A tag will always be returned, regardless of whether there is a - * tag in the file or not. Use Tag::isEmpty() to check if - * the tag contains no data. - * - * \note The Tag <b>is still</b> owned by the MPEG::File and should not be - * deleted by the user. It will be deleted when the file (object) is - * destroyed. - */ - ID3v1::Tag *ID3v1Tag(bool create = false); - - /*! - * Returns a pointer to the APE tag of the file. - * - * If \a create is false (the default) this will return a null pointer - * if there is no valid APE tag. If \a create is true it will create - * an APE tag if one does not exist. - * - * \note The Tag <b>is still</b> owned by the MPEG::File and should not be - * deleted by the user. It will be deleted when the file (object) is - * destroyed. - */ - APE::Tag *APETag(bool create = false); - - /*! - * This will strip the tags that match the OR-ed together TagTypes from the - * file. By default it strips all tags. It returns true if the tags are - * successfully stripped. - * - * This is equivalent to strip(tags, true) - * - * \note This will also invalidate pointers to the ID3 and APE tags - * as their memory will be freed. - */ - bool strip(int tags = AllTags); - - /*! - * This will strip the tags that match the OR-ed together TagTypes from the - * file. By default it strips all tags. It returns true if the tags are - * successfully stripped. - * - * If \a freeMemory is true the ID3 and APE tags will be deleted and - * pointers to them will be invalidated. - */ - // BIC: merge with the method above - bool strip(int tags, bool freeMemory); - - /*! - * Set the ID3v2::FrameFactory to something other than the default. - * - * \see ID3v2FrameFactory - */ - void setID3v2FrameFactory(const ID3v2::FrameFactory *factory); - - /*! - * Returns the position in the file of the first MPEG frame. - */ - long firstFrameOffset(); - - /*! - * Returns the position in the file of the next MPEG frame, - * using the current position as start - */ - long nextFrameOffset(long position); - - /*! - * Returns the position in the file of the previous MPEG frame, - * using the current position as start - */ - long previousFrameOffset(long position); - - /*! - * Returns the position in the file of the last MPEG frame. - */ - long lastFrameOffset(); - - private: - File(const File &); - File &operator=(const File &); - - void read(bool readProperties, Properties::ReadStyle propertiesStyle); - long findID3v2(); - long findID3v1(); - void findAPE(); - - /*! - * MPEG frames can be recognized by the bit pattern 11111111 111, so the - * first byte is easy to check for, however checking to see if the second byte - * starts with \e 111 is a bit more tricky, hence this member function. - */ - static bool secondSynchByte(char byte); - - class FilePrivate; - FilePrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/mpegheader.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/mpegheader.cpp deleted file mode 100644 index c715dbc1435..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/mpegheader.cpp +++ /dev/null @@ -1,276 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <bitset> - -#include <tbytevector.h> -#include <tstring.h> -#include <tdebug.h> - -#include "mpegheader.h" - -using namespace TagLib; - -class MPEG::Header::HeaderPrivate : public RefCounter -{ -public: - HeaderPrivate() : - isValid(false), - version(Version1), - layer(0), - protectionEnabled(false), - sampleRate(0), - isPadded(false), - channelMode(Stereo), - isCopyrighted(false), - isOriginal(false), - frameLength(0), - samplesPerFrame(0) {} - - bool isValid; - Version version; - int layer; - bool protectionEnabled; - int bitrate; - int sampleRate; - bool isPadded; - ChannelMode channelMode; - bool isCopyrighted; - bool isOriginal; - int frameLength; - int samplesPerFrame; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -MPEG::Header::Header(const ByteVector &data) -{ - d = new HeaderPrivate; - parse(data); -} - -MPEG::Header::Header(const Header &h) : d(h.d) -{ - d->ref(); -} - -MPEG::Header::~Header() -{ - if (d->deref()) - delete d; -} - -bool MPEG::Header::isValid() const -{ - return d->isValid; -} - -MPEG::Header::Version MPEG::Header::version() const -{ - return d->version; -} - -int MPEG::Header::layer() const -{ - return d->layer; -} - -bool MPEG::Header::protectionEnabled() const -{ - return d->protectionEnabled; -} - -int MPEG::Header::bitrate() const -{ - return d->bitrate; -} - -int MPEG::Header::sampleRate() const -{ - return d->sampleRate; -} - -bool MPEG::Header::isPadded() const -{ - return d->isPadded; -} - -MPEG::Header::ChannelMode MPEG::Header::channelMode() const -{ - return d->channelMode; -} - -bool MPEG::Header::isCopyrighted() const -{ - return d->isCopyrighted; -} - -bool MPEG::Header::isOriginal() const -{ - return d->isOriginal; -} - -int MPEG::Header::frameLength() const -{ - return d->frameLength; -} - -int MPEG::Header::samplesPerFrame() const -{ - return d->samplesPerFrame; -} - -MPEG::Header &MPEG::Header::operator=(const Header &h) -{ - if(&h == this) - return *this; - - if(d->deref()) - delete d; - - d = h.d; - d->ref(); - return *this; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void MPEG::Header::parse(const ByteVector &data) -{ - if(data.size() < 4 || uchar(data[0]) != 0xff) { - debug("MPEG::Header::parse() -- First byte did not match MPEG synch."); - return; - } - - std::bitset<32> flags(TAGLIB_CONSTRUCT_BITSET(data.toUInt())); - - // Check for the second byte's part of the MPEG synch - - if(!flags[23] || !flags[22] || !flags[21]) { - debug("MPEG::Header::parse() -- Second byte did not match MPEG synch."); - return; - } - - // Set the MPEG version - - if(!flags[20] && !flags[19]) - d->version = Version2_5; - else if(flags[20] && !flags[19]) - d->version = Version2; - else if(flags[20] && flags[19]) - d->version = Version1; - - // Set the MPEG layer - - if(!flags[18] && flags[17]) - d->layer = 3; - else if(flags[18] && !flags[17]) - d->layer = 2; - else if(flags[18] && flags[17]) - d->layer = 1; - - d->protectionEnabled = !flags[16]; - - // Set the bitrate - - static const int bitrates[2][3][16] = { - { // Version 1 - { 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 0 }, // layer 1 - { 0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 0 }, // layer 2 - { 0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 0 } // layer 3 - }, - { // Version 2 or 2.5 - { 0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 0 }, // layer 1 - { 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 0 }, // layer 2 - { 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 0 } // layer 3 - } - }; - - const int versionIndex = d->version == Version1 ? 0 : 1; - const int layerIndex = d->layer > 0 ? d->layer - 1 : 0; - - // The bitrate index is encoded as the first 4 bits of the 3rd byte, - // i.e. 1111xxxx - - int i = uchar(data[2]) >> 4; - - d->bitrate = bitrates[versionIndex][layerIndex][i]; - - // Set the sample rate - - static const int sampleRates[3][4] = { - { 44100, 48000, 32000, 0 }, // Version 1 - { 22050, 24000, 16000, 0 }, // Version 2 - { 11025, 12000, 8000, 0 } // Version 2.5 - }; - - // The sample rate index is encoded as two bits in the 3nd byte, i.e. xxxx11xx - - i = uchar(data[2]) >> 2 & 0x03; - - d->sampleRate = sampleRates[d->version][i]; - - if(d->sampleRate == 0) { - debug("MPEG::Header::parse() -- Invalid sample rate."); - return; - } - - // The channel mode is encoded as a 2 bit value at the end of the 3nd byte, - // i.e. xxxxxx11 - - d->channelMode = ChannelMode((uchar(data[3]) & 0xC0) >> 6); - - // TODO: Add mode extension for completeness - - d->isOriginal = flags[2]; - d->isCopyrighted = flags[3]; - d->isPadded = flags[9]; - - // Calculate the frame length - - if(d->layer == 1) - d->frameLength = 24000 * 2 * d->bitrate / d->sampleRate + int(d->isPadded); - else - d->frameLength = 72000 * d->bitrate / d->sampleRate + int(d->isPadded); - - // Samples per frame - - static const int samplesPerFrame[3][2] = { - // MPEG1, 2/2.5 - { 384, 384 }, // Layer I - { 1152, 1152 }, // Layer II - { 1152, 576 } // Layer III - }; - - d->samplesPerFrame = samplesPerFrame[layerIndex][versionIndex]; - - // Now that we're done parsing, set this to be a valid frame. - - d->isValid = true; -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/mpegheader.h b/platform/win32/msvc/external/taglib/taglib/mpeg/mpegheader.h deleted file mode 100644 index 020ebd06030..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/mpegheader.h +++ /dev/null @@ -1,166 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_MPEGHEADER_H -#define TAGLIB_MPEGHEADER_H - -#include "taglib_export.h" - -namespace TagLib { - - class ByteVector; - - namespace MPEG { - - //! An implementation of MP3 frame headers - - /*! - * This is an implementation of MPEG Layer III headers. The API follows more - * or less the binary format of these headers. I've used - * <a href="http://www.mp3-tech.org/programmer/frame_header.html">this</a> - * document as a reference. - */ - - class TAGLIB_EXPORT Header - { - public: - /*! - * Parses an MPEG header based on \a data. - */ - Header(const ByteVector &data); - - /*! - * Does a shallow copy of \a h. - */ - Header(const Header &h); - - /*! - * Destroys this Header instance. - */ - virtual ~Header(); - - /*! - * Returns true if the frame is at least an appropriate size and has - * legal values. - */ - bool isValid() const; - - /*! - * The MPEG Version. - */ - enum Version { - //! MPEG Version 1 - Version1 = 0, - //! MPEG Version 2 - Version2 = 1, - //! MPEG Version 2.5 - Version2_5 = 2 - }; - - /*! - * Returns the MPEG Version of the header. - */ - Version version() const; - - /*! - * Returns the layer version. This will be between the values 1-3. - */ - int layer() const; - - /*! - * Returns true if the MPEG protection bit is enabled. - */ - bool protectionEnabled() const; - - /*! - * Returns the bitrate encoded in the header. - */ - int bitrate() const; - - /*! - * Returns the sample rate in Hz. - */ - int sampleRate() const; - - /*! - * Returns true if the frame is padded. - */ - bool isPadded() const; - - /*! - * There are a few combinations or one or two channel audio that are - * possible: - */ - enum ChannelMode { - //! Stereo - Stereo = 0, - //! Stereo - JointStereo = 1, - //! Dual Mono - DualChannel = 2, - //! Mono - SingleChannel = 3 - }; - - /*! - * Returns the channel mode for this frame. - */ - ChannelMode channelMode() const; - - /*! - * Returns true if the copyrighted bit is set. - */ - bool isCopyrighted() const; - - /*! - * Returns true if the "original" bit is set. - */ - bool isOriginal() const; - - /*! - * Returns the frame length. - */ - int frameLength() const; - - /*! - * Returns the number of frames per sample. - */ - int samplesPerFrame() const; - - /*! - * Makes a shallow copy of the header. - */ - Header &operator=(const Header &h); - - private: - void parse(const ByteVector &data); - - class HeaderPrivate; - HeaderPrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/mpegproperties.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/mpegproperties.cpp deleted file mode 100644 index 3af956643b3..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/mpegproperties.cpp +++ /dev/null @@ -1,254 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tdebug.h> -#include <tstring.h> - -#include "mpegproperties.h" -#include "mpegfile.h" -#include "xingheader.h" - -using namespace TagLib; - -class MPEG::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate(File *f, ReadStyle s) : - file(f), - xingHeader(0), - style(s), - length(0), - bitrate(0), - sampleRate(0), - channels(0), - layer(0), - version(Header::Version1), - channelMode(Header::Stereo), - protectionEnabled(false), - isCopyrighted(false), - isOriginal(false) {} - - ~PropertiesPrivate() - { - delete xingHeader; - } - - File *file; - XingHeader *xingHeader; - ReadStyle style; - int length; - int bitrate; - int sampleRate; - int channels; - int layer; - Header::Version version; - Header::ChannelMode channelMode; - bool protectionEnabled; - bool isCopyrighted; - bool isOriginal; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -MPEG::Properties::Properties(File *file, ReadStyle style) : AudioProperties(style) -{ - d = new PropertiesPrivate(file, style); - - if(file && file->isOpen()) - read(); -} - -MPEG::Properties::~Properties() -{ - delete d; -} - -int MPEG::Properties::length() const -{ - return d->length; -} - -int MPEG::Properties::bitrate() const -{ - return d->bitrate; -} - -int MPEG::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int MPEG::Properties::channels() const -{ - return d->channels; -} - -const MPEG::XingHeader *MPEG::Properties::xingHeader() const -{ - return d->xingHeader; -} - -MPEG::Header::Version MPEG::Properties::version() const -{ - return d->version; -} - -int MPEG::Properties::layer() const -{ - return d->layer; -} - -bool MPEG::Properties::protectionEnabled() const -{ - return d->protectionEnabled; -} - -MPEG::Header::ChannelMode MPEG::Properties::channelMode() const -{ - return d->channelMode; -} - -bool MPEG::Properties::isCopyrighted() const -{ - return d->isCopyrighted; -} - -bool MPEG::Properties::isOriginal() const -{ - return d->isOriginal; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void MPEG::Properties::read() -{ - // Since we've likely just looked for the ID3v1 tag, start at the end of the - // file where we're least likely to have to have to move the disk head. - - long last = d->file->lastFrameOffset(); - - if(last < 0) { - debug("MPEG::Properties::read() -- Could not find a valid last MPEG frame in the stream."); - return; - } - - d->file->seek(last); - Header lastHeader(d->file->readBlock(4)); - - long first = d->file->firstFrameOffset(); - - if(first < 0) { - debug("MPEG::Properties::read() -- Could not find a valid first MPEG frame in the stream."); - return; - } - - if(!lastHeader.isValid()) { - - long pos = last; - - while(pos > first) { - - pos = d->file->previousFrameOffset(pos); - - if(pos < 0) - break; - - d->file->seek(pos); - Header header(d->file->readBlock(4)); - - if(header.isValid()) { - lastHeader = header; - last = pos; - break; - } - } - } - - // Now jump back to the front of the file and read what we need from there. - - d->file->seek(first); - Header firstHeader(d->file->readBlock(4)); - - if(!firstHeader.isValid() || !lastHeader.isValid()) { - debug("MPEG::Properties::read() -- Page headers were invalid."); - return; - } - - // Check for a Xing header that will help us in gathering information about a - // VBR stream. - - int xingHeaderOffset = MPEG::XingHeader::xingHeaderOffset(firstHeader.version(), - firstHeader.channelMode()); - - d->file->seek(first + xingHeaderOffset); - d->xingHeader = new XingHeader(d->file->readBlock(16)); - - // Read the length and the bitrate from the Xing header. - - if(d->xingHeader->isValid() && - firstHeader.sampleRate() > 0 && - d->xingHeader->totalFrames() > 0) - { - double timePerFrame = - double(firstHeader.samplesPerFrame()) / firstHeader.sampleRate(); - - double length = timePerFrame * d->xingHeader->totalFrames(); - - d->length = int(length); - d->bitrate = d->length > 0 ? (int)(d->xingHeader->totalSize() * 8 / length / 1000) : 0; - } - else { - // Since there was no valid Xing header found, we hope that we're in a constant - // bitrate file. - - delete d->xingHeader; - d->xingHeader = 0; - - // TODO: Make this more robust with audio property detection for VBR without a - // Xing header. - - if(firstHeader.frameLength() > 0 && firstHeader.bitrate() > 0) { - int frames = (last - first) / firstHeader.frameLength() + 1; - - d->length = int(float(firstHeader.frameLength() * frames) / - float(firstHeader.bitrate() * 125) + 0.5); - d->bitrate = firstHeader.bitrate(); - } - } - - - d->sampleRate = firstHeader.sampleRate(); - d->channels = firstHeader.channelMode() == Header::SingleChannel ? 1 : 2; - d->version = firstHeader.version(); - d->layer = firstHeader.layer(); - d->protectionEnabled = firstHeader.protectionEnabled(); - d->channelMode = firstHeader.channelMode(); - d->isCopyrighted = firstHeader.isCopyrighted(); - d->isOriginal = firstHeader.isOriginal(); -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/mpegproperties.h b/platform/win32/msvc/external/taglib/taglib/mpeg/mpegproperties.h deleted file mode 100644 index 72e594ff5b8..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/mpegproperties.h +++ /dev/null @@ -1,118 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_MPEGPROPERTIES_H -#define TAGLIB_MPEGPROPERTIES_H - -#include "taglib_export.h" -#include "audioproperties.h" - -#include "mpegheader.h" - -namespace TagLib { - - namespace MPEG { - - class File; - class XingHeader; - - //! An implementation of audio property reading for MP3 - - /*! - * This reads the data from an MPEG Layer III stream found in the - * AudioProperties API. - */ - - class TAGLIB_EXPORT Properties : public AudioProperties - { - public: - /*! - * Create an instance of MPEG::Properties with the data read from the - * MPEG::File \a file. - */ - Properties(File *file, ReadStyle style = Average); - - /*! - * Destroys this MPEG Properties instance. - */ - virtual ~Properties(); - - // Reimplementations. - - virtual int length() const; - virtual int bitrate() const; - virtual int sampleRate() const; - virtual int channels() const; - - /*! - * Returns a pointer to the XingHeader if one exists or null if no - * XingHeader was found. - */ - - const XingHeader *xingHeader() const; - - /*! - * Returns the MPEG Version of the file. - */ - Header::Version version() const; - - /*! - * Returns the layer version. This will be between the values 1-3. - */ - int layer() const; - - /*! - * Returns true if the MPEG protection bit is enabled. - */ - bool protectionEnabled() const; - - /*! - * Returns the channel mode for this frame. - */ - Header::ChannelMode channelMode() const; - - /*! - * Returns true if the copyrighted bit is set. - */ - bool isCopyrighted() const; - - /*! - * Returns true if the "original" bit is set. - */ - bool isOriginal() const; - - private: - Properties(const Properties &); - Properties &operator=(const Properties &); - - void read(); - - class PropertiesPrivate; - PropertiesPrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/xingheader.cpp b/platform/win32/msvc/external/taglib/taglib/mpeg/xingheader.cpp deleted file mode 100644 index 1ba932de3cb..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/xingheader.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/*************************************************************************** - copyright : (C) 2003 by Ismael Orenstein - email : orenstein@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tbytevector.h> -#include <tstring.h> -#include <tdebug.h> - -#include "xingheader.h" - -using namespace TagLib; - -class MPEG::XingHeader::XingHeaderPrivate -{ -public: - XingHeaderPrivate() : - frames(0), - size(0), - valid(false) - {} - - uint frames; - uint size; - bool valid; -}; - -MPEG::XingHeader::XingHeader(const ByteVector &data) -{ - d = new XingHeaderPrivate; - parse(data); -} - -MPEG::XingHeader::~XingHeader() -{ - delete d; -} - -bool MPEG::XingHeader::isValid() const -{ - return d->valid; -} - -TagLib::uint MPEG::XingHeader::totalFrames() const -{ - return d->frames; -} - -TagLib::uint MPEG::XingHeader::totalSize() const -{ - return d->size; -} - -int MPEG::XingHeader::xingHeaderOffset(TagLib::MPEG::Header::Version v, - TagLib::MPEG::Header::ChannelMode c) -{ - if(v == MPEG::Header::Version1) { - if(c == MPEG::Header::SingleChannel) - return 0x15; - else - return 0x24; - } - else { - if(c == MPEG::Header::SingleChannel) - return 0x0D; - else - return 0x15; - } -} - -void MPEG::XingHeader::parse(const ByteVector &data) -{ - // Check to see if a valid Xing header is available. - - if(!data.startsWith("Xing") && !data.startsWith("Info")) - return; - - // If the XingHeader doesn't contain the number of frames and the total stream - // info it's invalid. - - if(!(data[7] & 0x01)) { - debug("MPEG::XingHeader::parse() -- Xing header doesn't contain the total number of frames."); - return; - } - - if(!(data[7] & 0x02)) { - debug("MPEG::XingHeader::parse() -- Xing header doesn't contain the total stream size."); - return; - } - - d->frames = data.mid(8, 4).toUInt(); - d->size = data.mid(12, 4).toUInt(); - - d->valid = true; -} diff --git a/platform/win32/msvc/external/taglib/taglib/mpeg/xingheader.h b/platform/win32/msvc/external/taglib/taglib/mpeg/xingheader.h deleted file mode 100644 index ffe7494d552..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/mpeg/xingheader.h +++ /dev/null @@ -1,100 +0,0 @@ -/*************************************************************************** - copyright : (C) 2003 by Ismael Orenstein - email : orenstein@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_XINGHEADER_H -#define TAGLIB_XINGHEADER_H - -#include "mpegheader.h" -#include "taglib_export.h" - -namespace TagLib { - - class ByteVector; - - namespace MPEG { - - //! An implementation of the Xing VBR headers - - /*! - * This is a minimalistic implementation of the Xing VBR headers. Xing - * headers are often added to VBR (variable bit rate) MP3 streams to make it - * easy to compute the length and quality of a VBR stream. Our implementation - * is only concerned with the total size of the stream (so that we can - * calculate the total playing time and the average bitrate). It uses - * <a href="http://home.pcisys.net/~melanson/codecs/mp3extensions.txt">this text</a> - * and the XMMS sources as references. - */ - - class TAGLIB_EXPORT XingHeader - { - public: - /*! - * Parses a Xing header based on \a data. The data must be at least 16 - * bytes long (anything longer than this is discarded). - */ - XingHeader(const ByteVector &data); - - /*! - * Destroy this XingHeader instance. - */ - virtual ~XingHeader(); - - /*! - * Returns true if the data was parsed properly and if there is a valid - * Xing header present. - */ - bool isValid() const; - - /*! - * Returns the total number of frames. - */ - uint totalFrames() const; - - /*! - * Returns the total size of stream in bytes. - */ - uint totalSize() const; - - /*! - * Returns the offset for the start of this Xing header, given the - * version and channels of the frame - */ - // BIC: rename to offset() - static int xingHeaderOffset(TagLib::MPEG::Header::Version v, - TagLib::MPEG::Header::ChannelMode c); - - private: - XingHeader(const XingHeader &); - XingHeader &operator=(const XingHeader &); - - void parse(const ByteVector &data); - - class XingHeaderPrivate; - XingHeaderPrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/ogg/flac/oggflacfile.cpp b/platform/win32/msvc/external/taglib/taglib/ogg/flac/oggflacfile.cpp deleted file mode 100644 index 9d9c303d7c0..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ogg/flac/oggflacfile.cpp +++ /dev/null @@ -1,276 +0,0 @@ -/*************************************************************************** - copyright : (C) 2004-2005 by Allan Sandfeld Jensen - email : kde@carewolf.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tbytevector.h> -#include <tstring.h> -#include <tdebug.h> - -#include <xiphcomment.h> -#include "oggflacfile.h" - -using namespace TagLib; -using TagLib::FLAC::Properties; - -class Ogg::FLAC::File::FilePrivate -{ -public: - FilePrivate() : - comment(0), - properties(0), - streamStart(0), - streamLength(0), - scanned(false), - hasXiphComment(false), - commentPacket(0) {} - - ~FilePrivate() - { - delete comment; - delete properties; - } - - Ogg::XiphComment *comment; - - Properties *properties; - ByteVector streamInfoData; - ByteVector xiphCommentData; - long streamStart; - long streamLength; - bool scanned; - - bool hasXiphComment; - int commentPacket; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Ogg::FLAC::File::File(FileName file, bool readProperties, - Properties::ReadStyle propertiesStyle) : Ogg::File(file) -{ - d = new FilePrivate; - read(readProperties, propertiesStyle); -} - -Ogg::FLAC::File::File(IOStream *stream, bool readProperties, - Properties::ReadStyle propertiesStyle) : Ogg::File(stream) -{ - d = new FilePrivate; - read(readProperties, propertiesStyle); -} - -Ogg::FLAC::File::~File() -{ - delete d; -} - -Ogg::XiphComment *Ogg::FLAC::File::tag() const -{ - return d->comment; -} - -Properties *Ogg::FLAC::File::audioProperties() const -{ - return d->properties; -} - - -bool Ogg::FLAC::File::save() -{ - d->xiphCommentData = d->comment->render(false); - - // Create FLAC metadata-block: - - // Put the size in the first 32 bit (I assume no more than 24 bit are used) - - ByteVector v = ByteVector::fromUInt(d->xiphCommentData.size()); - - // Set the type of the metadata-block to be a Xiph / Vorbis comment - - v[0] = 4; - - // Append the comment-data after the 32 bit header - - v.append(d->xiphCommentData); - - // Save the packet at the old spot - // FIXME: Use padding if size is increasing - - setPacket(d->commentPacket, v); - - return Ogg::File::save(); -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void Ogg::FLAC::File::read(bool readProperties, Properties::ReadStyle propertiesStyle) -{ - // Sanity: Check if we really have an Ogg/FLAC file - -/* - ByteVector oggHeader = packet(0); - - if (oggHeader.mid(28,4) != "fLaC") { - debug("Ogg::FLAC::File::read() -- Not an Ogg/FLAC file"); - setValid(false); - return; - }*/ - - // Look for FLAC metadata, including vorbis comments - - scan(); - - if (!d->scanned) { - setValid(false); - return; - } - - - if(d->hasXiphComment) - d->comment = new Ogg::XiphComment(xiphCommentData()); - else - d->comment = new Ogg::XiphComment; - - - if(readProperties) - d->properties = new Properties(streamInfoData(), streamLength(), propertiesStyle); -} - -ByteVector Ogg::FLAC::File::streamInfoData() -{ - scan(); - return d->streamInfoData; -} - -ByteVector Ogg::FLAC::File::xiphCommentData() -{ - scan(); - return d->xiphCommentData; -} - -long Ogg::FLAC::File::streamLength() -{ - scan(); - return d->streamLength; -} - -void Ogg::FLAC::File::scan() -{ - // Scan the metadata pages - - if(d->scanned) - return; - - if(!isValid()) - return; - - int ipacket = 0; - long overhead = 0; - - ByteVector metadataHeader = packet(ipacket); - if(metadataHeader.isNull()) - return; - - ByteVector header; - - if (!metadataHeader.startsWith("fLaC")) { - // FLAC 1.1.2+ - if (metadataHeader.mid(1,4) != "FLAC") return; - - if (metadataHeader[5] != 1) return; // not version 1 - - metadataHeader = metadataHeader.mid(13); - } - else { - // FLAC 1.1.0 & 1.1.1 - metadataHeader = packet(++ipacket); - - if(metadataHeader.isNull()) - return; - - } - - header = metadataHeader.mid(0,4); - // Header format (from spec): - // <1> Last-metadata-block flag - // <7> BLOCK_TYPE - // 0 : STREAMINFO - // 1 : PADDING - // .. - // 4 : VORBIS_COMMENT - // .. - // <24> Length of metadata to follow - - char blockType = header[0] & 0x7f; - bool lastBlock = (header[0] & 0x80) != 0; - uint length = header.mid(1, 3).toUInt(); - overhead += length; - - // Sanity: First block should be the stream_info metadata - - if(blockType != 0) { - debug("Ogg::FLAC::File::scan() -- Invalid Ogg/FLAC stream"); - return; - } - - d->streamInfoData = metadataHeader.mid(4,length); - - // Search through the remaining metadata - - while(!lastBlock) { - metadataHeader = packet(++ipacket); - - if(metadataHeader.isNull()) - return; - - header = metadataHeader.mid(0, 4); - blockType = header[0] & 0x7f; - lastBlock = (header[0] & 0x80) != 0; - length = header.mid(1, 3).toUInt(); - overhead += length; - - if(blockType == 1) { - // debug("Ogg::FLAC::File::scan() -- Padding found"); - } - else if(blockType == 4) { - // debug("Ogg::FLAC::File::scan() -- Vorbis-comments found"); - d->xiphCommentData = metadataHeader.mid(4, length); - d->hasXiphComment = true; - d->commentPacket = ipacket; - } - else if(blockType > 5) { - debug("Ogg::FLAC::File::scan() -- Unknown metadata block"); - } - } - - // End of metadata, now comes the datastream - d->streamStart = overhead; - d->streamLength = File::length() - d->streamStart; - - d->scanned = true; -} diff --git a/platform/win32/msvc/external/taglib/taglib/ogg/flac/oggflacfile.h b/platform/win32/msvc/external/taglib/taglib/ogg/flac/oggflacfile.h deleted file mode 100644 index 8558cfdfa18..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ogg/flac/oggflacfile.h +++ /dev/null @@ -1,129 +0,0 @@ -/*************************************************************************** - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_OGGFLACFILE_H -#define TAGLIB_OGGFLACFILE_H - -#include "taglib_export.h" -#include "oggfile.h" -#include "xiphcomment.h" - -#include "flacproperties.h" - -namespace TagLib { - - class Tag; - - namespace Ogg { - - //! An implementation of Ogg FLAC metadata - - /*! - * This is implementation of FLAC metadata for Ogg FLAC files. For "pure" - * FLAC files look under the FLAC hiearchy. - * - * Unlike "pure" FLAC-files, Ogg FLAC only supports Xiph-comments, - * while the audio-properties are the same. - */ - namespace FLAC { - - using TagLib::FLAC::Properties; - - //! An implementation of TagLib::File with Ogg/FLAC specific methods - - /*! - * This implements and provides an interface for Ogg/FLAC files to the - * TagLib::Tag and TagLib::AudioProperties interfaces by way of implementing - * the abstract TagLib::File API as well as providing some additional - * information specific to Ogg FLAC files. - */ - - class TAGLIB_EXPORT File : public Ogg::File - { - public: - /*! - * Contructs an Ogg/FLAC file from \a file. If \a readProperties is true - * the file's audio properties will also be read using \a propertiesStyle. - * If false, \a propertiesStyle is ignored. - */ - File(FileName file, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Contructs an Ogg/FLAC file from \a file. If \a readProperties is true - * the file's audio properties will also be read using \a propertiesStyle. - * If false, \a propertiesStyle is ignored. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - */ - File(IOStream *stream, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Destroys this instance of the File. - */ - virtual ~File(); - - /*! - * Returns the Tag for this file. This will always be a XiphComment. - */ - virtual XiphComment *tag() const; - - /*! - * Returns the FLAC::Properties for this file. If no audio properties - * were read then this will return a null pointer. - */ - virtual Properties *audioProperties() const; - - /*! - * Save the file. This will primarily save and update the XiphComment. - * Returns true if the save is successful. - */ - virtual bool save(); - - /*! - * Returns the length of the audio-stream, used by FLAC::Properties for - * calculating the bitrate. - */ - long streamLength(); - - private: - File(const File &); - File &operator=(const File &); - - void read(bool readProperties, Properties::ReadStyle propertiesStyle); - void scan(); - ByteVector streamInfoData(); - ByteVector xiphCommentData(); - - class FilePrivate; - FilePrivate *d; - }; - } // namespace FLAC - } // namespace Ogg -} // namespace TagLib - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/ogg/oggfile.cpp b/platform/win32/msvc/external/taglib/taglib/ogg/oggfile.cpp deleted file mode 100644 index cc30f9ce19e..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ogg/oggfile.cpp +++ /dev/null @@ -1,432 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tbytevectorlist.h> -#include <tmap.h> -#include <tstring.h> -#include <tdebug.h> - -#include "oggfile.h" -#include "oggpage.h" -#include "oggpageheader.h" - -using namespace TagLib; - -class Ogg::File::FilePrivate -{ -public: - FilePrivate() : - streamSerialNumber(0), - firstPageHeader(0), - lastPageHeader(0), - currentPage(0), - currentPacketPage(0) - { - pages.setAutoDelete(true); - } - - ~FilePrivate() - { - delete firstPageHeader; - delete lastPageHeader; - } - - uint streamSerialNumber; - List<Page *> pages; - PageHeader *firstPageHeader; - PageHeader *lastPageHeader; - std::vector< List<int> > packetToPageMap; - Map<int, ByteVector> dirtyPackets; - List<int> dirtyPages; - - //! The current page for the reader -- used by nextPage() - Page *currentPage; - //! The current page for the packet parser -- used by packet() - Page *currentPacketPage; - //! The packets for the currentPacketPage -- used by packet() - ByteVectorList currentPackets; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Ogg::File::~File() -{ - delete d; -} - -ByteVector Ogg::File::packet(uint i) -{ - // Check to see if we're called setPacket() for this packet since the last - // save: - - if(d->dirtyPackets.contains(i)) - return d->dirtyPackets[i]; - - // If we haven't indexed the page where the packet we're interested in starts, - // begin reading pages until we have. - - while(d->packetToPageMap.size() <= i) { - if(!nextPage()) { - debug("Ogg::File::packet() -- Could not find the requested packet."); - return ByteVector::null; - } - } - - // Start reading at the first page that contains part (or all) of this packet. - // If the last read stopped at the packet that we're interested in, don't - // reread its packet list. (This should make sequential packet reads fast.) - - uint pageIndex = d->packetToPageMap[i].front(); - if(d->currentPacketPage != d->pages[pageIndex]) { - d->currentPacketPage = d->pages[pageIndex]; - d->currentPackets = d->currentPacketPage->packets(); - } - - // If the packet is completely contained in the first page that it's in, then - // just return it now. - - if(d->currentPacketPage->containsPacket(i) & Page::CompletePacket) - return d->currentPackets[i - d->currentPacketPage->firstPacketIndex()]; - - // If the packet is *not* completely contained in the first page that it's a - // part of then that packet trails off the end of the page. Continue appending - // the pages' packet data until we hit a page that either does not end with the - // packet that we're fetching or where the last packet is complete. - - ByteVector packet = d->currentPackets.back(); - while(d->currentPacketPage->containsPacket(i) & Page::EndsWithPacket && - !d->currentPacketPage->header()->lastPacketCompleted()) - { - pageIndex++; - if(pageIndex == d->pages.size()) { - if(!nextPage()) { - debug("Ogg::File::packet() -- Could not find the requested packet."); - return ByteVector::null; - } - } - d->currentPacketPage = d->pages[pageIndex]; - d->currentPackets = d->currentPacketPage->packets(); - packet.append(d->currentPackets.front()); - } - - return packet; -} - -void Ogg::File::setPacket(uint i, const ByteVector &p) -{ - while(d->packetToPageMap.size() <= i) { - if(!nextPage()) { - debug("Ogg::File::setPacket() -- Could not set the requested packet."); - return; - } - } - - List<int>::ConstIterator it = d->packetToPageMap[i].begin(); - for(; it != d->packetToPageMap[i].end(); ++it) - d->dirtyPages.sortedInsert(*it, true); - - d->dirtyPackets.insert(i, p); -} - -const Ogg::PageHeader *Ogg::File::firstPageHeader() -{ - if(d->firstPageHeader) - return d->firstPageHeader->isValid() ? d->firstPageHeader : 0; - - long firstPageHeaderOffset = find("OggS"); - - if(firstPageHeaderOffset < 0) - return 0; - - d->firstPageHeader = new PageHeader(this, firstPageHeaderOffset); - return d->firstPageHeader->isValid() ? d->firstPageHeader : 0; -} - -const Ogg::PageHeader *Ogg::File::lastPageHeader() -{ - if(d->lastPageHeader) - return d->lastPageHeader->isValid() ? d->lastPageHeader : 0; - - long lastPageHeaderOffset = rfind("OggS"); - - if(lastPageHeaderOffset < 0) - return 0; - - d->lastPageHeader = new PageHeader(this, lastPageHeaderOffset); - return d->lastPageHeader->isValid() ? d->lastPageHeader : 0; -} - -bool Ogg::File::save() -{ - if(readOnly()) { - debug("Ogg::File::save() - Cannot save to a read only file."); - return false; - } - - List<int> pageGroup; - - for(List<int>::ConstIterator it = d->dirtyPages.begin(); it != d->dirtyPages.end(); ++it) { - if(!pageGroup.isEmpty() && pageGroup.back() + 1 != *it) { - writePageGroup(pageGroup); - pageGroup.clear(); - } - else - pageGroup.append(*it); - } - writePageGroup(pageGroup); - d->dirtyPages.clear(); - d->dirtyPackets.clear(); - - return true; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -Ogg::File::File(FileName file) : TagLib::File(file) -{ - d = new FilePrivate; -} - -Ogg::File::File(IOStream *stream) : TagLib::File(stream) -{ - d = new FilePrivate; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -bool Ogg::File::nextPage() -{ - long nextPageOffset; - int currentPacket; - - if(d->pages.isEmpty()) { - currentPacket = 0; - nextPageOffset = find("OggS"); - if(nextPageOffset < 0) - return false; - } - else { - if(d->currentPage->header()->lastPageOfStream()) - return false; - - if(d->currentPage->header()->lastPacketCompleted()) - currentPacket = d->currentPage->firstPacketIndex() + d->currentPage->packetCount(); - else - currentPacket = d->currentPage->firstPacketIndex() + d->currentPage->packetCount() - 1; - - nextPageOffset = d->currentPage->fileOffset() + d->currentPage->size(); - } - - // Read the next page and add it to the page list. - - d->currentPage = new Page(this, nextPageOffset); - - if(!d->currentPage->header()->isValid()) { - delete d->currentPage; - d->currentPage = 0; - return false; - } - - d->currentPage->setFirstPacketIndex(currentPacket); - - if(d->pages.isEmpty()) - d->streamSerialNumber = d->currentPage->header()->streamSerialNumber(); - - d->pages.append(d->currentPage); - - // Loop through the packets in the page that we just read appending the - // current page number to the packet to page map for each packet. - - for(uint i = 0; i < d->currentPage->packetCount(); i++) { - uint currentPacket = d->currentPage->firstPacketIndex() + i; - if(d->packetToPageMap.size() <= currentPacket) - d->packetToPageMap.push_back(List<int>()); - d->packetToPageMap[currentPacket].append(d->pages.size() - 1); - } - - return true; -} - -void Ogg::File::writePageGroup(const List<int> &thePageGroup) -{ - if(thePageGroup.isEmpty()) - return; - - - // pages in the pageGroup and packets must be equivalent - // (originalSize and size of packets would not work together), - // therefore we sometimes have to add pages to the group - List<int> pageGroup(thePageGroup); - while (!d->pages[pageGroup.back()]->header()->lastPacketCompleted()) { - if (d->currentPage->header()->pageSequenceNumber() == pageGroup.back()) { - if (nextPage() == false) { - debug("broken ogg file"); - return; - } - pageGroup.append(d->currentPage->header()->pageSequenceNumber()); - } else { - pageGroup.append(pageGroup.back() + 1); - } - } - - ByteVectorList packets; - - // If the first page of the group isn't dirty, append its partial content here. - - if(!d->dirtyPages.contains(d->pages[pageGroup.front()]->firstPacketIndex())) - packets.append(d->pages[pageGroup.front()]->packets().front()); - - int previousPacket = -1; - int originalSize = 0; - - for(List<int>::ConstIterator it = pageGroup.begin(); it != pageGroup.end(); ++it) { - uint firstPacket = d->pages[*it]->firstPacketIndex(); - uint lastPacket = firstPacket + d->pages[*it]->packetCount() - 1; - - List<int>::ConstIterator last = --pageGroup.end(); - - for(uint i = firstPacket; i <= lastPacket; i++) { - - if(it == last && i == lastPacket && !d->dirtyPages.contains(i)) - packets.append(d->pages[*it]->packets().back()); - else if(int(i) != previousPacket) { - previousPacket = i; - packets.append(packet(i)); - } - } - originalSize += d->pages[*it]->size(); - } - - const bool continued = d->pages[pageGroup.front()]->header()->firstPacketContinued(); - const bool completed = d->pages[pageGroup.back()]->header()->lastPacketCompleted(); - - // TODO: This pagination method isn't accurate for what's being done here. - // This should account for real possibilities like non-aligned packets and such. - - List<Page *> pages = Page::paginate(packets, Page::SinglePagePerGroup, - d->streamSerialNumber, pageGroup.front(), - continued, completed); - - List<Page *> renumberedPages; - - // Correct the page numbering of following pages - - if (pages.back()->header()->pageSequenceNumber() != pageGroup.back()) { - - // TODO: change the internal data structure so that we don't need to hold the - // complete file in memory (is unavoidable at the moment) - - // read the complete stream - while(!d->currentPage->header()->lastPageOfStream()) { - if(nextPage() == false) { - debug("broken ogg file"); - break; - } - } - - // create a gap for the new pages - int numberOfNewPages = pages.back()->header()->pageSequenceNumber() - pageGroup.back(); - List<Page *>::Iterator pageIter = d->pages.begin(); - for(int i = 0; i < pageGroup.back(); i++) { - if(pageIter != d->pages.end()) { - ++pageIter; - } - else { - debug("Ogg::File::writePageGroup() -- Page sequence is broken in original file."); - break; - } - } - - ++pageIter; - for(; pageIter != d->pages.end(); ++pageIter) { - Ogg::Page *newPage = - (*pageIter)->getCopyWithNewPageSequenceNumber( - (*pageIter)->header()->pageSequenceNumber() + numberOfNewPages); - - ByteVector data; - data.append(newPage->render()); - insert(data, newPage->fileOffset(), data.size()); - - renumberedPages.append(newPage); - } - } - - // insert the new data - - ByteVector data; - for(List<Page *>::ConstIterator it = pages.begin(); it != pages.end(); ++it) - data.append((*it)->render()); - - // The insertion algorithms could also be improve to queue and prioritize data - // on the way out. Currently it requires rewriting the file for every page - // group rather than just once; however, for tagging applications there will - // generally only be one page group, so it's not worth the time for the - // optimization at the moment. - - insert(data, d->pages[pageGroup.front()]->fileOffset(), originalSize); - - // Update the page index to include the pages we just created and to delete the - // old pages. - - // First step: Pages that contain the comment data - - for(List<Page *>::ConstIterator it = pages.begin(); it != pages.end(); ++it) { - const unsigned int index = (*it)->header()->pageSequenceNumber(); - if(index < d->pages.size()) { - delete d->pages[index]; - d->pages[index] = *it; - } - else if(index == d->pages.size()) { - d->pages.append(*it); - } - else { - // oops - there's a hole in the sequence - debug("Ogg::File::writePageGroup() -- Page sequence is broken."); - } - } - - // Second step: the renumbered pages - - for(List<Page *>::ConstIterator it = renumberedPages.begin(); it != renumberedPages.end(); ++it) { - const unsigned int index = (*it)->header()->pageSequenceNumber(); - if(index < d->pages.size()) { - delete d->pages[index]; - d->pages[index] = *it; - } - else if(index == d->pages.size()) { - d->pages.append(*it); - } - else { - // oops - there's a hole in the sequence - debug("Ogg::File::writePageGroup() -- Page sequence is broken."); - } - } -} diff --git a/platform/win32/msvc/external/taglib/taglib/ogg/oggfile.h b/platform/win32/msvc/external/taglib/taglib/ogg/oggfile.h deleted file mode 100644 index b36daecb1db..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ogg/oggfile.h +++ /dev/null @@ -1,126 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include "taglib_export.h" -#include "tfile.h" -#include "tbytevectorlist.h" - -#ifndef TAGLIB_OGGFILE_H -#define TAGLIB_OGGFILE_H - -namespace TagLib { - - //! A namespace for the classes used by Ogg-based metadata files - - namespace Ogg { - - class PageHeader; - - //! An implementation of TagLib::File with some helpers for Ogg based formats - - /*! - * This is an implementation of Ogg file page and packet rendering and is of - * use to Ogg based formats. While the API is small this handles the - * non-trivial details of breaking up an Ogg stream into packets and makes - * these available (via subclassing) to the codec meta data implementations. - */ - - class TAGLIB_EXPORT File : public TagLib::File - { - public: - virtual ~File(); - - /*! - * Returns the packet contents for the i-th packet (starting from zero) - * in the Ogg bitstream. - * - * \warning The requires reading at least the packet header for every page - * up to the requested page. - */ - ByteVector packet(uint i); - - /*! - * Sets the packet with index \a i to the value \a p. - */ - void setPacket(uint i, const ByteVector &p); - - /*! - * Returns a pointer to the PageHeader for the first page in the stream or - * null if the page could not be found. - */ - const PageHeader *firstPageHeader(); - - /*! - * Returns a pointer to the PageHeader for the last page in the stream or - * null if the page could not be found. - */ - const PageHeader *lastPageHeader(); - - virtual bool save(); - - protected: - /*! - * Contructs an Ogg file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - * - * \note This constructor is protected since Ogg::File shouldn't be - * instantiated directly but rather should be used through the codec - * specific subclasses. - */ - File(FileName file); - - /*! - * Contructs an Ogg file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - * - * \note This constructor is protected since Ogg::File shouldn't be - * instantiated directly but rather should be used through the codec - * specific subclasses. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - */ - File(IOStream *stream); - - private: - File(const File &); - File &operator=(const File &); - - /*! - * Reads the next page and updates the internal "current page" pointer. - */ - bool nextPage(); - void writePageGroup(const List<int> &group); - - class FilePrivate; - FilePrivate *d; - }; - - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/ogg/oggpage.cpp b/platform/win32/msvc/external/taglib/taglib/ogg/oggpage.cpp deleted file mode 100644 index e5f767ec1a8..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ogg/oggpage.cpp +++ /dev/null @@ -1,340 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tstring.h> -#include <tdebug.h> - -#include "oggpage.h" -#include "oggpageheader.h" -#include "oggfile.h" - -using namespace TagLib; - -class Ogg::Page::PagePrivate -{ -public: - PagePrivate(File *f = 0, long pageOffset = -1) : - file(f), - fileOffset(pageOffset), - packetOffset(0), - header(f, pageOffset), - firstPacketIndex(-1) - { - if(file) { - packetOffset = fileOffset + header.size(); - packetSizes = header.packetSizes(); - dataSize = header.dataSize(); - } - } - - File *file; - long fileOffset; - long packetOffset; - int dataSize; - List<int> packetSizes; - PageHeader header; - int firstPacketIndex; - ByteVectorList packets; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Ogg::Page::Page(Ogg::File *file, long pageOffset) -{ - d = new PagePrivate(file, pageOffset); -} - -Ogg::Page::~Page() -{ - delete d; -} - -long Ogg::Page::fileOffset() const -{ - return d->fileOffset; -} - -const Ogg::PageHeader *Ogg::Page::header() const -{ - return &d->header; -} - -int Ogg::Page::firstPacketIndex() const -{ - return d->firstPacketIndex; -} - -void Ogg::Page::setFirstPacketIndex(int index) -{ - d->firstPacketIndex = index; -} - -Ogg::Page::ContainsPacketFlags Ogg::Page::containsPacket(int index) const -{ - int lastPacketIndex = d->firstPacketIndex + packetCount() - 1; - if(index < d->firstPacketIndex || index > lastPacketIndex) - return DoesNotContainPacket; - - ContainsPacketFlags flags = DoesNotContainPacket; - - if(index == d->firstPacketIndex) - flags = ContainsPacketFlags(flags | BeginsWithPacket); - - if(index == lastPacketIndex) - flags = ContainsPacketFlags(flags | EndsWithPacket); - - // If there's only one page and it's complete: - - if(packetCount() == 1 && - !d->header.firstPacketContinued() && - d->header.lastPacketCompleted()) - { - flags = ContainsPacketFlags(flags | CompletePacket); - } - - // Or if there is more than one page and the page is - // (a) the first page and it's complete or - // (b) the last page and it's complete or - // (c) a page in the middle. - else if(packetCount() > 1 && - ((flags & BeginsWithPacket && !d->header.firstPacketContinued()) || - (flags & EndsWithPacket && d->header.lastPacketCompleted()) || - (!(flags & BeginsWithPacket) && !(flags & EndsWithPacket)))) - { - flags = ContainsPacketFlags(flags | CompletePacket); - } - - return flags; -} - -TagLib::uint Ogg::Page::packetCount() const -{ - return d->header.packetSizes().size(); -} - -ByteVectorList Ogg::Page::packets() const -{ - if(!d->packets.isEmpty()) - return d->packets; - - ByteVectorList l; - - if(d->file && d->header.isValid()) { - - d->file->seek(d->packetOffset); - - List<int> packetSizes = d->header.packetSizes(); - - List<int>::ConstIterator it = packetSizes.begin(); - for(; it != packetSizes.end(); ++it) - l.append(d->file->readBlock(*it)); - } - else - debug("Ogg::Page::packets() -- attempting to read packets from an invalid page."); - - return l; -} - -int Ogg::Page::size() const -{ - return d->header.size() + d->header.dataSize(); -} - -ByteVector Ogg::Page::render() const -{ - ByteVector data; - - data.append(d->header.render()); - - if(d->packets.isEmpty()) { - if(d->file) { - d->file->seek(d->packetOffset); - data.append(d->file->readBlock(d->dataSize)); - } - else - debug("Ogg::Page::render() -- this page is empty!"); - } - else { - ByteVectorList::ConstIterator it = d->packets.begin(); - for(; it != d->packets.end(); ++it) - data.append(*it); - } - - // Compute and set the checksum for the Ogg page. The checksum is taken over - // the entire page with the 4 bytes reserved for the checksum zeroed and then - // inserted in bytes 22-25 of the page header. - - ByteVector checksum = ByteVector::fromUInt(data.checksum(), false); - for(int i = 0; i < 4; i++) - data[i + 22] = checksum[i]; - - return data; -} - -List<Ogg::Page *> Ogg::Page::paginate(const ByteVectorList &packets, - PaginationStrategy strategy, - uint streamSerialNumber, - int firstPage, - bool firstPacketContinued, - bool lastPacketCompleted, - bool containsLastPacket) -{ - List<Page *> l; - - int totalSize = 0; - - for(ByteVectorList::ConstIterator it = packets.begin(); it != packets.end(); ++it) - totalSize += (*it).size(); - - // Handle creation of multiple pages with appropriate pagination. - if(strategy == Repaginate || totalSize + packets.size() > 255 * 255) { - - // SPLITSIZE must be a multiple of 255 in order to get the lacing values right - // create pages of about 8KB each -#define SPLITSIZE (32*255) - - int pageIndex = 0; - - for(ByteVectorList::ConstIterator it = packets.begin(); it != packets.end(); ++it) { - bool continued = false; - - // mark very first packet? - if(firstPacketContinued && it==packets.begin()) { - continued = true; - } - - // append to buf - ByteVector packetBuf; - packetBuf.append(*it); - - while(packetBuf.size() > SPLITSIZE) { - // output a Page - ByteVector packetForOnePage; - packetForOnePage.resize(SPLITSIZE); - std::copy(packetBuf.begin(), packetBuf.begin() + SPLITSIZE, packetForOnePage.begin()); - - ByteVectorList packetList; - packetList.append(packetForOnePage); - Page *p = new Page(packetList, streamSerialNumber, firstPage+pageIndex, continued, false, false); - l.append(p); - - pageIndex++; - continued = true; - packetBuf = packetBuf.mid(SPLITSIZE); - } - - ByteVectorList::ConstIterator jt = it; - ++jt; - bool lastPacketInList = (jt == packets.end()); - - // output a page for the rest (we output one packet per page, so this one should be completed) - ByteVectorList packetList; - packetList.append(packetBuf); - - bool isVeryLastPacket = false; - if(containsLastPacket) { - // mark the very last output page as last of stream - ByteVectorList::ConstIterator jt = it; - ++jt; - if(jt == packets.end()) { - isVeryLastPacket = true; - } - } - - Page *p = new Page(packetList, streamSerialNumber, firstPage+pageIndex, continued, - lastPacketInList ? lastPacketCompleted : true, - isVeryLastPacket); - pageIndex++; - - l.append(p); - } - } - else { - Page *p = new Page(packets, streamSerialNumber, firstPage, firstPacketContinued, - lastPacketCompleted, containsLastPacket); - l.append(p); - } - - return l; -} - -Ogg::Page* Ogg::Page::getCopyWithNewPageSequenceNumber(int sequenceNumber) -{ - Page *pResultPage = NULL; - - // TODO: a copy constructor would be helpful - - if(d->file == 0) { - pResultPage = new Page( - d->packets, - d->header.streamSerialNumber(), - sequenceNumber, - d->header.firstPacketContinued(), - d->header.lastPacketCompleted(), - d->header.lastPageOfStream()); - } - else - { - pResultPage = new Page(d->file, d->fileOffset); - pResultPage->d->header.setPageSequenceNumber(sequenceNumber); - } - return pResultPage; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -Ogg::Page::Page(const ByteVectorList &packets, - uint streamSerialNumber, - int pageNumber, - bool firstPacketContinued, - bool lastPacketCompleted, - bool containsLastPacket) -{ - d = new PagePrivate; - - ByteVector data; - List<int> packetSizes; - - d->header.setFirstPageOfStream(pageNumber == 0 && !firstPacketContinued); - d->header.setLastPageOfStream(containsLastPacket); - d->header.setFirstPacketContinued(firstPacketContinued); - d->header.setLastPacketCompleted(lastPacketCompleted); - d->header.setStreamSerialNumber(streamSerialNumber); - d->header.setPageSequenceNumber(pageNumber); - - // Build a page from the list of packets. - - for(ByteVectorList::ConstIterator it = packets.begin(); it != packets.end(); ++it) { - packetSizes.append((*it).size()); - data.append(*it); - } - d->packets = packets; - d->header.setPacketSizes(packetSizes); -} - diff --git a/platform/win32/msvc/external/taglib/taglib/ogg/oggpage.h b/platform/win32/msvc/external/taglib/taglib/ogg/oggpage.h deleted file mode 100644 index e9f4840c52e..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ogg/oggpage.h +++ /dev/null @@ -1,211 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_OGGPAGE_H -#define TAGLIB_OGGPAGE_H - -#include "taglib_export.h" -#include "tbytevectorlist.h" - -namespace TagLib { - - namespace Ogg { - - class File; - class PageHeader; - - //! An implementation of Ogg pages - - /*! - * This is an implementation of the pages that make up an Ogg stream. - * This handles parsing pages and breaking them down into packets and handles - * the details of packets spanning multiple pages and pages that contiain - * multiple packets. - * - * In most Xiph.org formats the comments are found in the first few packets, - * this however is a reasonably complete implementation of Ogg pages that - * could potentially be useful for non-meta data purposes. - */ - - class TAGLIB_EXPORT Page - { - public: - /*! - * Read an Ogg page from the \a file at the position \a pageOffset. - */ - Page(File *file, long pageOffset); - - virtual ~Page(); - - /*! - * Returns the page's position within the file (in bytes). - */ - long fileOffset() const; - - /*! - * Returns a pointer to the header for this page. This pointer will become - * invalid when the page is deleted. - */ - const PageHeader *header() const; - - /*! - * Returns a copy of the page with \a sequenceNumber set as sequence number. - * - * \see header() - * \see PageHeader::setPageSequenceNumber() - */ - Page* getCopyWithNewPageSequenceNumber(int sequenceNumber); - - /*! - * Returns the index of the first packet wholly or partially contained in - * this page. - * - * \see setFirstPacketIndex() - */ - int firstPacketIndex() const; - - /*! - * Sets the index of the first packet in the page. - * - * \see firstPacketIndex() - */ - void setFirstPacketIndex(int index); - - /*! - * When checking to see if a page contains a given packet this set of flags - * represents the possible values for that packets status in the page. - * - * \see containsPacket() - */ - enum ContainsPacketFlags { - //! No part of the packet is contained in the page - DoesNotContainPacket = 0x0000, - //! The packet is wholly contained in the page - CompletePacket = 0x0001, - //! The page starts with the given packet - BeginsWithPacket = 0x0002, - //! The page ends with the given packet - EndsWithPacket = 0x0004 - }; - - /*! - * Checks to see if the specified \a packet is contained in the current - * page. - * - * \see ContainsPacketFlags - */ - ContainsPacketFlags containsPacket(int index) const; - - /*! - * Returns the number of packets (whole or partial) in this page. - */ - uint packetCount() const; - - /*! - * Returns a list of the packets in this page. - * - * \note Either or both the first and last packets may be only partial. - * \see PageHeader::firstPacketContinued() - */ - ByteVectorList packets() const; - - /*! - * Returns the size of the page in bytes. - */ - int size() const; - - ByteVector render() const; - - /*! - * Defines a strategy for pagination, or grouping pages into Ogg packets, - * for use with pagination methods. - * - * \note Yes, I'm aware that this is not a canonical "Strategy Pattern", - * the term was simply convenient. - */ - enum PaginationStrategy { - /*! - * Attempt to put the specified set of packets into a single Ogg packet. - * If the sum of the packet data is greater than will fit into a single - * Ogg page -- 65280 bytes -- this will fall back to repagination using - * the recommended page sizes. - */ - SinglePagePerGroup, - /*! - * Split the packet or group of packets into pages that conform to the - * sizes recommended in the Ogg standard. - */ - Repaginate - }; - - /*! - * Pack \a packets into Ogg pages using the \a strategy for pagination. - * The page number indicater inside of the rendered packets will start - * with \a firstPage and be incremented for each page rendered. - * \a containsLastPacket should be set to true if \a packets contains the - * last page in the stream and will set the appropriate flag in the last - * rendered Ogg page's header. \a streamSerialNumber should be set to - * the serial number for this stream. - * - * \note The "absolute granule position" is currently always zeroed using - * this method as this suffices for the comment headers. - * - * \warning The pages returned by this method must be deleted by the user. - * You can use List<T>::setAutoDelete(true) to set these pages to be - * automatically deleted when this list passes out of scope. - * - * \see PaginationStrategy - * \see List::setAutoDelete() - */ - static List<Page *> paginate(const ByteVectorList &packets, - PaginationStrategy strategy, - uint streamSerialNumber, - int firstPage, - bool firstPacketContinued = false, - bool lastPacketCompleted = true, - bool containsLastPacket = false); - - protected: - /*! - * Creates an Ogg packet based on the data in \a packets. The page number - * for each page will be set to \a pageNumber. - */ - Page(const ByteVectorList &packets, - uint streamSerialNumber, - int pageNumber, - bool firstPacketContinued = false, - bool lastPacketCompleted = true, - bool containsLastPacket = false); - - private: - Page(const Page &); - Page &operator=(const Page &); - - class PagePrivate; - PagePrivate *d; - }; - } -} -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/ogg/oggpageheader.cpp b/platform/win32/msvc/external/taglib/taglib/ogg/oggpageheader.cpp deleted file mode 100644 index f9608ab7f74..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ogg/oggpageheader.cpp +++ /dev/null @@ -1,323 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <stdlib.h> - -#include <bitset> - -#include <tstring.h> -#include <tdebug.h> -#include <taglib.h> - -#include "oggpageheader.h" -#include "oggfile.h" - -using namespace TagLib; - -class Ogg::PageHeader::PageHeaderPrivate -{ -public: - PageHeaderPrivate(File *f, long pageOffset) : - file(f), - fileOffset(pageOffset), - isValid(false), - firstPacketContinued(false), - lastPacketCompleted(false), - firstPageOfStream(false), - lastPageOfStream(false), - absoluteGranularPosition(0), - streamSerialNumber(0), - pageSequenceNumber(-1), - size(0), - dataSize(0) - {} - - File *file; - long fileOffset; - bool isValid; - List<int> packetSizes; - bool firstPacketContinued; - bool lastPacketCompleted; - bool firstPageOfStream; - bool lastPageOfStream; - long long absoluteGranularPosition; - uint streamSerialNumber; - int pageSequenceNumber; - int size; - int dataSize; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Ogg::PageHeader::PageHeader(Ogg::File *file, long pageOffset) -{ - d = new PageHeaderPrivate(file, pageOffset); - if(file && pageOffset >= 0) - read(); -} - -Ogg::PageHeader::~PageHeader() -{ - delete d; -} - -bool Ogg::PageHeader::isValid() const -{ - return d->isValid; -} - -List<int> Ogg::PageHeader::packetSizes() const -{ - return d->packetSizes; -} - -void Ogg::PageHeader::setPacketSizes(const List<int> &sizes) -{ - d->packetSizes = sizes; -} - -bool Ogg::PageHeader::firstPacketContinued() const -{ - return d->firstPacketContinued; -} - -void Ogg::PageHeader::setFirstPacketContinued(bool continued) -{ - d->firstPacketContinued = continued; -} - -bool Ogg::PageHeader::lastPacketCompleted() const -{ - return d->lastPacketCompleted; -} - -void Ogg::PageHeader::setLastPacketCompleted(bool completed) -{ - d->lastPacketCompleted = completed; -} - -bool Ogg::PageHeader::firstPageOfStream() const -{ - return d->firstPageOfStream; -} - -void Ogg::PageHeader::setFirstPageOfStream(bool first) -{ - d->firstPageOfStream = first; -} - -bool Ogg::PageHeader::lastPageOfStream() const -{ - return d->lastPageOfStream; -} - -void Ogg::PageHeader::setLastPageOfStream(bool last) -{ - d->lastPageOfStream = last; -} - -long long Ogg::PageHeader::absoluteGranularPosition() const -{ - return d->absoluteGranularPosition; -} - -void Ogg::PageHeader::setAbsoluteGranularPosition(long long agp) -{ - d->absoluteGranularPosition = agp; -} - -int Ogg::PageHeader::pageSequenceNumber() const -{ - return d->pageSequenceNumber; -} - -void Ogg::PageHeader::setPageSequenceNumber(int sequenceNumber) -{ - d->pageSequenceNumber = sequenceNumber; -} - -TagLib::uint Ogg::PageHeader::streamSerialNumber() const -{ - return d->streamSerialNumber; -} - -void Ogg::PageHeader::setStreamSerialNumber(uint n) -{ - d->streamSerialNumber = n; -} - -int Ogg::PageHeader::size() const -{ - return d->size; -} - -int Ogg::PageHeader::dataSize() const -{ - return d->dataSize; -} - -ByteVector Ogg::PageHeader::render() const -{ - ByteVector data; - - // capture patern - - data.append("OggS"); - - // stream structure version - - data.append(char(0)); - - // header type flag - - std::bitset<8> flags; - flags[0] = d->firstPacketContinued; - flags[1] = d->pageSequenceNumber == 0; - flags[2] = d->lastPageOfStream; - - data.append(char(flags.to_ulong())); - - // absolute granular position - - data.append(ByteVector::fromLongLong(d->absoluteGranularPosition, false)); - - // stream serial number - - data.append(ByteVector::fromUInt(d->streamSerialNumber, false)); - - // page sequence number - - data.append(ByteVector::fromUInt(d->pageSequenceNumber, false)); - - // checksum -- this is left empty and should be filled in by the Ogg::Page - // class - - data.append(ByteVector(4, 0)); - - // page segment count and page segment table - - ByteVector pageSegments = lacingValues(); - - data.append(char(uchar(pageSegments.size()))); - data.append(pageSegments); - - return data; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void Ogg::PageHeader::read() -{ - d->file->seek(d->fileOffset); - - // An Ogg page header is at least 27 bytes, so we'll go ahead and read that - // much and then get the rest when we're ready for it. - - ByteVector data = d->file->readBlock(27); - - // Sanity check -- make sure that we were in fact able to read as much data as - // we asked for and that the page begins with "OggS". - - if(data.size() != 27 || !data.startsWith("OggS")) { - debug("Ogg::PageHeader::read() -- error reading page header"); - return; - } - - std::bitset<8> flags(data[5]); - - d->firstPacketContinued = flags.test(0); - d->firstPageOfStream = flags.test(1); - d->lastPageOfStream = flags.test(2); - - d->absoluteGranularPosition = data.mid(6, 8).toLongLong(false); - d->streamSerialNumber = data.mid(14, 4).toUInt(false); - d->pageSequenceNumber = data.mid(18, 4).toUInt(false); - - // Byte number 27 is the number of page segments, which is the only variable - // length portion of the page header. After reading the number of page - // segments we'll then read in the corresponding data for this count. - - int pageSegmentCount = uchar(data[26]); - - ByteVector pageSegments = d->file->readBlock(pageSegmentCount); - - // Another sanity check. - - if(pageSegmentCount < 1 || int(pageSegments.size()) != pageSegmentCount) - return; - - // The base size of an Ogg page 27 bytes plus the number of lacing values. - - d->size = 27 + pageSegmentCount; - - int packetSize = 0; - - for(int i = 0; i < pageSegmentCount; i++) { - d->dataSize += uchar(pageSegments[i]); - packetSize += uchar(pageSegments[i]); - - if(uchar(pageSegments[i]) < 255) { - d->packetSizes.append(packetSize); - packetSize = 0; - } - } - - if(packetSize > 0) { - d->packetSizes.append(packetSize); - d->lastPacketCompleted = false; - } - else - d->lastPacketCompleted = true; - - d->isValid = true; -} - -ByteVector Ogg::PageHeader::lacingValues() const -{ - ByteVector data; - - List<int> sizes = d->packetSizes; - for(List<int>::ConstIterator it = sizes.begin(); it != sizes.end(); ++it) { - - // The size of a packet in an Ogg page is indicated by a series of "lacing - // values" where the sum of the values is the packet size in bytes. Each of - // these values is a byte. A value of less than 255 (0xff) indicates the end - // of the packet. - - div_t n = div(*it, 255); - - for(int i = 0; i < n.quot; i++) - data.append(char(uchar(255))); - - if(it != --sizes.end() || d->lastPacketCompleted) - data.append(char(uchar(n.rem))); - } - - return data; -} diff --git a/platform/win32/msvc/external/taglib/taglib/ogg/oggpageheader.h b/platform/win32/msvc/external/taglib/taglib/ogg/oggpageheader.h deleted file mode 100644 index 742710a4c2f..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ogg/oggpageheader.h +++ /dev/null @@ -1,232 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_OGGPAGEHEADER_H -#define TAGLIB_OGGPAGEHEADER_H - -#include "tlist.h" -#include "tbytevector.h" -#include "taglib_export.h" - -namespace TagLib { - - namespace Ogg { - - class File; - - //! An implementation of the page headers associated with each Ogg::Page - - /*! - * This class implements Ogg page headers which contain the information - * about Ogg pages needed to break them into packets which can be passed on - * to the codecs. - */ - - class TAGLIB_EXPORT PageHeader - { - public: - /*! - * Reads a PageHeader from \a file starting at \a pageOffset. The defaults - * create a page with no (and as such, invalid) data that must be set - * later. - */ - PageHeader(File *file = 0, long pageOffset = -1); - - /*! - * Deletes this instance of the PageHeader. - */ - virtual ~PageHeader(); - - /*! - * Returns true if the header parsed properly and is valid. - */ - bool isValid() const; - - /*! - * Ogg pages contain a list of packets (which are used by the contained - * codecs). The sizes of these pages is encoded in the page header. This - * returns a list of the packet sizes in bytes. - * - * \see setPacketSizes() - */ - List<int> packetSizes() const; - - /*! - * Sets the sizes of the packets in this page to \a sizes. Internally this - * updates the lacing values in the header. - * - * \see packetSizes() - */ - void setPacketSizes(const List<int> &sizes); - - /*! - * Some packets can be <i>continued</i> across multiple pages. If the - * first packet in the current page is a continuation this will return - * true. If this is page starts with a new packet this will return false. - * - * \see lastPacketCompleted() - * \see setFirstPacketContinued() - */ - bool firstPacketContinued() const; - - /*! - * Sets the internal flag indicating if the first packet in this page is - * continued to \a continued. - * - * \see firstPacketContinued() - */ - void setFirstPacketContinued(bool continued); - - /*! - * Returns true if the last packet of this page is completely contained in - * this page. - * - * \see firstPacketContinued() - * \see setLastPacketCompleted() - */ - bool lastPacketCompleted() const; - - /*! - * Sets the internal flag indicating if the last packet in this page is - * complete to \a completed. - * - * \see lastPacketCompleted() - */ - void setLastPacketCompleted(bool completed); - - /*! - * This returns true if this is the first page of the Ogg (logical) stream. - * - * \see setFirstPageOfStream() - */ - bool firstPageOfStream() const; - - /*! - * Marks this page as the first page of the Ogg stream. - * - * \see firstPageOfStream() - */ - void setFirstPageOfStream(bool first); - - /*! - * This returns true if this is the last page of the Ogg (logical) stream. - * - * \see setLastPageOfStream() - */ - bool lastPageOfStream() const; - - /*! - * Marks this page as the last page of the Ogg stream. - * - * \see lastPageOfStream() - */ - void setLastPageOfStream(bool last); - - /*! - * A special value of containing the position of the packet to be - * interpreted by the codec. In the case of Vorbis this contains the PCM - * value and is used to calculate the length of the stream. - * - * \see setAbsoluteGranularPosition() - */ - long long absoluteGranularPosition() const; - - /*! - * A special value of containing the position of the packet to be - * interpreted by the codec. It is only supported here so that it may be - * coppied from one page to another. - * - * \see absoluteGranularPosition() - */ - void setAbsoluteGranularPosition(long long agp); - - /*! - * Every Ogg logical stream is given a random serial number which is common - * to every page in that logical stream. This returns the serial number of - * the stream associated with this packet. - * - * \see setStreamSerialNumber() - */ - uint streamSerialNumber() const; - - /*! - * Every Ogg logical stream is given a random serial number which is common - * to every page in that logical stream. This sets this pages serial - * number. This method should be used when adding new pages to a logical - * stream. - * - * \see streamSerialNumber() - */ - void setStreamSerialNumber(uint n); - - /*! - * Returns the index of the page within the Ogg stream. This helps make it - * possible to determine if pages have been lost. - * - * \see setPageSequenceNumber() - */ - int pageSequenceNumber() const; - - /*! - * Sets the page's position in the stream to \a sequenceNumber. - * - * \see pageSequenceNumber() - */ - void setPageSequenceNumber(int sequenceNumber); - - /*! - * Returns the complete header size. - */ - int size() const; - - /*! - * Returns the size of the data portion of the page -- i.e. the size of the - * page less the header size. - */ - int dataSize() const; - - /*! - * Render the page header to binary data. - * - * \note The checksum -- bytes 22 - 25 -- will be left empty and must be - * filled in when rendering the entire page. - */ - ByteVector render() const; - - private: - PageHeader(const PageHeader &); - PageHeader &operator=(const PageHeader &); - - void read(); - ByteVector lacingValues() const; - - class PageHeaderPrivate; - PageHeaderPrivate *d; - }; - - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/ogg/speex/speexfile.cpp b/platform/win32/msvc/external/taglib/taglib/ogg/speex/speexfile.cpp deleted file mode 100644 index 3a4940a26a3..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ogg/speex/speexfile.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/*************************************************************************** - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - (original Vorbis implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <bitset> - -#include <tstring.h> -#include <tdebug.h> - -#include "speexfile.h" - -using namespace TagLib; -using namespace TagLib::Ogg; - -class Speex::File::FilePrivate -{ -public: - FilePrivate() : - comment(0), - properties(0) {} - - ~FilePrivate() - { - delete comment; - delete properties; - } - - Ogg::XiphComment *comment; - Properties *properties; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Speex::File::File(FileName file, bool readProperties, - Properties::ReadStyle propertiesStyle) : Ogg::File(file) -{ - d = new FilePrivate; - read(readProperties, propertiesStyle); -} - -Speex::File::File(IOStream *stream, bool readProperties, - Properties::ReadStyle propertiesStyle) : Ogg::File(stream) -{ - d = new FilePrivate; - read(readProperties, propertiesStyle); -} - -Speex::File::~File() -{ - delete d; -} - -Ogg::XiphComment *Speex::File::tag() const -{ - return d->comment; -} - -Speex::Properties *Speex::File::audioProperties() const -{ - return d->properties; -} - -bool Speex::File::save() -{ - if(!d->comment) - d->comment = new Ogg::XiphComment; - - setPacket(1, d->comment->render()); - - return Ogg::File::save(); -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void Speex::File::read(bool readProperties, Properties::ReadStyle propertiesStyle) -{ - ByteVector speexHeaderData = packet(0); - - if(!speexHeaderData.startsWith("Speex ")) { - debug("Speex::File::read() -- invalid Speex identification header"); - return; - } - - ByteVector commentHeaderData = packet(1); - - d->comment = new Ogg::XiphComment(commentHeaderData); - - if(readProperties) - d->properties = new Properties(this, propertiesStyle); -} diff --git a/platform/win32/msvc/external/taglib/taglib/ogg/speex/speexfile.h b/platform/win32/msvc/external/taglib/taglib/ogg/speex/speexfile.h deleted file mode 100644 index dfe51ec4d0b..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ogg/speex/speexfile.h +++ /dev/null @@ -1,110 +0,0 @@ -/*************************************************************************** - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - (original Vorbis implementation) -***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_SPEEXFILE_H -#define TAGLIB_SPEEXFILE_H - -#include "oggfile.h" -#include "xiphcomment.h" - -#include "speexproperties.h" - -namespace TagLib { - - namespace Ogg { - - //! A namespace containing classes for Speex metadata - - namespace Speex { - - //! An implementation of Ogg::File with Speex specific methods - - /*! - * This is the central class in the Ogg Speex metadata processing collection - * of classes. It's built upon Ogg::File which handles processing of the Ogg - * logical bitstream and breaking it down into pages which are handled by - * the codec implementations, in this case Speex specifically. - */ - - class TAGLIB_EXPORT File : public Ogg::File - { - public: - /*! - * Contructs a Speex file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - */ - File(FileName file, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Contructs a Speex file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - */ - File(IOStream *stream, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Destroys this instance of the File. - */ - virtual ~File(); - - /*! - * Returns the XiphComment for this file. XiphComment implements the tag - * interface, so this serves as the reimplementation of - * TagLib::File::tag(). - */ - virtual Ogg::XiphComment *tag() const; - - /*! - * Returns the Speex::Properties for this file. If no audio properties - * were read then this will return a null pointer. - */ - virtual Properties *audioProperties() const; - - virtual bool save(); - - private: - File(const File &); - File &operator=(const File &); - - void read(bool readProperties, Properties::ReadStyle propertiesStyle); - - class FilePrivate; - FilePrivate *d; - }; - } - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/ogg/speex/speexproperties.cpp b/platform/win32/msvc/external/taglib/taglib/ogg/speex/speexproperties.cpp deleted file mode 100644 index 980f12dfd4c..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ogg/speex/speexproperties.cpp +++ /dev/null @@ -1,170 +0,0 @@ -/*************************************************************************** - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - (original Vorbis implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tstring.h> -#include <tdebug.h> - -#include <oggpageheader.h> - -#include "speexproperties.h" -#include "speexfile.h" - -using namespace TagLib; -using namespace TagLib::Ogg; - -class Speex::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate(File *f, ReadStyle s) : - file(f), - style(s), - length(0), - bitrate(0), - sampleRate(0), - channels(0), - speexVersion(0), - vbr(false), - mode(0) {} - - File *file; - ReadStyle style; - int length; - int bitrate; - int sampleRate; - int channels; - int speexVersion; - bool vbr; - int mode; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Speex::Properties::Properties(File *file, ReadStyle style) : AudioProperties(style) -{ - d = new PropertiesPrivate(file, style); - read(); -} - -Speex::Properties::~Properties() -{ - delete d; -} - -int Speex::Properties::length() const -{ - return d->length; -} - -int Speex::Properties::bitrate() const -{ - return int(float(d->bitrate) / float(1000) + 0.5); -} - -int Speex::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int Speex::Properties::channels() const -{ - return d->channels; -} - -int Speex::Properties::speexVersion() const -{ - return d->speexVersion; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void Speex::Properties::read() -{ - // Get the identification header from the Ogg implementation. - - ByteVector data = d->file->packet(0); - - int pos = 28; - - // speex_version_id; /**< Version for Speex (for checking compatibility) */ - d->speexVersion = data.mid(pos, 4).toUInt(false); - pos += 4; - - // header_size; /**< Total size of the header ( sizeof(SpeexHeader) ) */ - pos += 4; - - // rate; /**< Sampling rate used */ - d->sampleRate = data.mid(pos, 4).toUInt(false); - pos += 4; - - // mode; /**< Mode used (0 for narrowband, 1 for wideband) */ - d->mode = data.mid(pos, 4).toUInt(false); - pos += 4; - - // mode_bitstream_version; /**< Version ID of the bit-stream */ - pos += 4; - - // nb_channels; /**< Number of channels encoded */ - d->channels = data.mid(pos, 4).toUInt(false); - pos += 4; - - // bitrate; /**< Bit-rate used */ - d->bitrate = data.mid(pos, 4).toUInt(false); - pos += 4; - - // frame_size; /**< Size of frames */ - // unsigned int frameSize = data.mid(pos, 4).toUInt(false); - pos += 4; - - // vbr; /**< 1 for a VBR encoding, 0 otherwise */ - d->vbr = data.mid(pos, 4).toUInt(false) == 1; - pos += 4; - - // frames_per_packet; /**< Number of frames stored per Ogg packet */ - // unsigned int framesPerPacket = data.mid(pos, 4).toUInt(false); - - const Ogg::PageHeader *first = d->file->firstPageHeader(); - const Ogg::PageHeader *last = d->file->lastPageHeader(); - - if(first && last) { - long long start = first->absoluteGranularPosition(); - long long end = last->absoluteGranularPosition(); - - if(start >= 0 && end >= 0 && d->sampleRate > 0) - d->length = (int) ((end - start) / (long long) d->sampleRate); - else - debug("Speex::Properties::read() -- Either the PCM values for the start or " - "end of this file was incorrect or the sample rate is zero."); - } - else - debug("Speex::Properties::read() -- Could not find valid first and last Ogg pages."); -} diff --git a/platform/win32/msvc/external/taglib/taglib/ogg/speex/speexproperties.h b/platform/win32/msvc/external/taglib/taglib/ogg/speex/speexproperties.h deleted file mode 100644 index 4720bd881bf..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ogg/speex/speexproperties.h +++ /dev/null @@ -1,89 +0,0 @@ -/*************************************************************************** - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - (original Vorbis implementation) -***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_SPEEXPROPERTIES_H -#define TAGLIB_SPEEXPROPERTIES_H - -#include "audioproperties.h" - -namespace TagLib { - - namespace Ogg { - - namespace Speex { - - class File; - - //! An implementation of audio property reading for Ogg Speex - - /*! - * This reads the data from an Ogg Speex stream found in the AudioProperties - * API. - */ - - class TAGLIB_EXPORT Properties : public AudioProperties - { - public: - /*! - * Create an instance of Speex::Properties with the data read from the - * Speex::File \a file. - */ - Properties(File *file, ReadStyle style = Average); - - /*! - * Destroys this Speex::Properties instance. - */ - virtual ~Properties(); - - // Reimplementations. - - virtual int length() const; - virtual int bitrate() const; - virtual int sampleRate() const; - virtual int channels() const; - - /*! - * Returns the Speex version, currently "0" (as specified by the spec). - */ - int speexVersion() const; - - private: - Properties(const Properties &); - Properties &operator=(const Properties &); - - void read(); - - class PropertiesPrivate; - PropertiesPrivate *d; - }; - } - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/ogg/vorbis/vorbisfile.cpp b/platform/win32/msvc/external/taglib/taglib/ogg/vorbis/vorbisfile.cpp deleted file mode 100644 index e2eed9e2567..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ogg/vorbis/vorbisfile.cpp +++ /dev/null @@ -1,136 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <bitset> - -#include <tstring.h> -#include <tdebug.h> -#include <tpropertymap.h> - -#include "vorbisfile.h" - - -using namespace TagLib; - -class Vorbis::File::FilePrivate -{ -public: - FilePrivate() : - comment(0), - properties(0) {} - - ~FilePrivate() - { - delete comment; - delete properties; - } - - Ogg::XiphComment *comment; - Properties *properties; -}; - -namespace TagLib { - /*! - * Vorbis headers can be found with one type ID byte and the string "vorbis" in - * an Ogg stream. 0x03 indicates the comment header. - */ - static const char vorbisCommentHeaderID[] = { 0x03, 'v', 'o', 'r', 'b', 'i', 's', 0 }; -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Vorbis::File::File(FileName file, bool readProperties, - Properties::ReadStyle propertiesStyle) : Ogg::File(file) -{ - d = new FilePrivate; - read(readProperties, propertiesStyle); -} - -Vorbis::File::File(IOStream *stream, bool readProperties, - Properties::ReadStyle propertiesStyle) : Ogg::File(stream) -{ - d = new FilePrivate; - read(readProperties, propertiesStyle); -} - -Vorbis::File::~File() -{ - delete d; -} - -Ogg::XiphComment *Vorbis::File::tag() const -{ - return d->comment; -} - -PropertyMap Vorbis::File::properties() const -{ - return d->comment->properties(); -} - -PropertyMap Vorbis::File::setProperties(const PropertyMap &properties) -{ - return d->comment->setProperties(properties); -} - -Vorbis::Properties *Vorbis::File::audioProperties() const -{ - return d->properties; -} - -bool Vorbis::File::save() -{ - ByteVector v(vorbisCommentHeaderID); - - if(!d->comment) - d->comment = new Ogg::XiphComment; - v.append(d->comment->render()); - - setPacket(1, v); - - return Ogg::File::save(); -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void Vorbis::File::read(bool readProperties, Properties::ReadStyle propertiesStyle) -{ - ByteVector commentHeaderData = packet(1); - - if(commentHeaderData.mid(0, 7) != vorbisCommentHeaderID) { - debug("Vorbis::File::read() - Could not find the Vorbis comment header."); - setValid(false); - return; - } - - d->comment = new Ogg::XiphComment(commentHeaderData.mid(7)); - - if(readProperties) - d->properties = new Properties(this, propertiesStyle); -} diff --git a/platform/win32/msvc/external/taglib/taglib/ogg/vorbis/vorbisfile.h b/platform/win32/msvc/external/taglib/taglib/ogg/vorbis/vorbisfile.h deleted file mode 100644 index 6e4d4fc4242..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ogg/vorbis/vorbisfile.h +++ /dev/null @@ -1,142 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_VORBISFILE_H -#define TAGLIB_VORBISFILE_H - -#include "taglib_export.h" -#include "oggfile.h" -#include "xiphcomment.h" - -#include "vorbisproperties.h" - -namespace TagLib { - -/* - * This is just to make this appear to be in the Ogg namespace in the - * documentation. The typedef below will make this work with the current code. - * In the next BIC version of TagLib this will be really moved into the Ogg - * namespace. - */ - -#ifdef DOXYGEN - namespace Ogg { -#endif - - //! A namespace containing classes for Vorbis metadata - - namespace Vorbis { - - - //! An implementation of Ogg::File with Vorbis specific methods - - /*! - * This is the central class in the Ogg Vorbis metadata processing collection - * of classes. It's built upon Ogg::File which handles processing of the Ogg - * logical bitstream and breaking it down into pages which are handled by - * the codec implementations, in this case Vorbis specifically. - */ - - class TAGLIB_EXPORT File : public Ogg::File - { - public: - /*! - * Contructs a Vorbis file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - */ - File(FileName file, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Contructs a Vorbis file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - */ - File(IOStream *stream, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Destroys this instance of the File. - */ - virtual ~File(); - - /*! - * Returns the XiphComment for this file. XiphComment implements the tag - * interface, so this serves as the reimplementation of - * TagLib::File::tag(). - */ - virtual Ogg::XiphComment *tag() const; - - - /*! - * Implements the unified property interface -- export function. - * This forwards directly to XiphComment::properties(). - */ - PropertyMap properties() const; - - /*! - * Implements the unified tag dictionary interface -- import function. - * Like properties(), this is a forwarder to the file's XiphComment. - */ - PropertyMap setProperties(const PropertyMap &); - - /*! - * Returns the Vorbis::Properties for this file. If no audio properties - * were read then this will return a null pointer. - */ - virtual Properties *audioProperties() const; - - virtual bool save(); - - private: - File(const File &); - File &operator=(const File &); - - void read(bool readProperties, Properties::ReadStyle propertiesStyle); - - class FilePrivate; - FilePrivate *d; - }; - } - -/* - * To keep compatibility with the current version put Vorbis in the Ogg namespace - * only in the docs and provide a typedef to make it work. In the next BIC - * version this will be removed and it will only exist in the Ogg namespace. - */ - -#ifdef DOXYGEN - } -#else - namespace Ogg { namespace Vorbis { typedef TagLib::Vorbis::File File; } } -#endif - -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/ogg/vorbis/vorbisproperties.cpp b/platform/win32/msvc/external/taglib/taglib/ogg/vorbis/vorbisproperties.cpp deleted file mode 100644 index c67e16773e5..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ogg/vorbis/vorbisproperties.cpp +++ /dev/null @@ -1,183 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tstring.h> -#include <tdebug.h> - -#include <oggpageheader.h> - -#include "vorbisproperties.h" -#include "vorbisfile.h" - -using namespace TagLib; - -class Vorbis::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate(File *f, ReadStyle s) : - file(f), - style(s), - length(0), - bitrate(0), - sampleRate(0), - channels(0), - vorbisVersion(0), - bitrateMaximum(0), - bitrateNominal(0), - bitrateMinimum(0) {} - - File *file; - ReadStyle style; - int length; - int bitrate; - int sampleRate; - int channels; - int vorbisVersion; - int bitrateMaximum; - int bitrateNominal; - int bitrateMinimum; -}; - -namespace TagLib { - /*! - * Vorbis headers can be found with one type ID byte and the string "vorbis" in - * an Ogg stream. 0x01 indicates the setup header. - */ - static const char vorbisSetupHeaderID[] = { 0x01, 'v', 'o', 'r', 'b', 'i', 's', 0 }; -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Vorbis::Properties::Properties(File *file, ReadStyle style) : AudioProperties(style) -{ - d = new PropertiesPrivate(file, style); - read(); -} - -Vorbis::Properties::~Properties() -{ - delete d; -} - -int Vorbis::Properties::length() const -{ - return d->length; -} - -int Vorbis::Properties::bitrate() const -{ - return int(float(d->bitrate) / float(1000) + 0.5); -} - -int Vorbis::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int Vorbis::Properties::channels() const -{ - return d->channels; -} - -int Vorbis::Properties::vorbisVersion() const -{ - return d->vorbisVersion; -} - -int Vorbis::Properties::bitrateMaximum() const -{ - return d->bitrateMaximum; -} - -int Vorbis::Properties::bitrateNominal() const -{ - return d->bitrateNominal; -} - -int Vorbis::Properties::bitrateMinimum() const -{ - return d->bitrateMinimum; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void Vorbis::Properties::read() -{ - // Get the identification header from the Ogg implementation. - - ByteVector data = d->file->packet(0); - - int pos = 0; - - if(data.mid(pos, 7) != vorbisSetupHeaderID) { - debug("Vorbis::Properties::read() -- invalid Vorbis identification header"); - return; - } - - pos += 7; - - d->vorbisVersion = data.mid(pos, 4).toUInt(false); - pos += 4; - - d->channels = uchar(data[pos]); - pos += 1; - - d->sampleRate = data.mid(pos, 4).toUInt(false); - pos += 4; - - d->bitrateMaximum = data.mid(pos, 4).toUInt(false); - pos += 4; - - d->bitrateNominal = data.mid(pos, 4).toUInt(false); - pos += 4; - - d->bitrateMinimum = data.mid(pos, 4).toUInt(false); - - // TODO: Later this should be only the "fast" mode. - d->bitrate = d->bitrateNominal; - - // Find the length of the file. See http://wiki.xiph.org/VorbisStreamLength/ - // for my notes on the topic. - - const Ogg::PageHeader *first = d->file->firstPageHeader(); - const Ogg::PageHeader *last = d->file->lastPageHeader(); - - if(first && last) { - long long start = first->absoluteGranularPosition(); - long long end = last->absoluteGranularPosition(); - - if(start >= 0 && end >= 0 && d->sampleRate > 0) - d->length = (int)((end - start) / (long long) d->sampleRate); - else - debug("Vorbis::Properties::read() -- Either the PCM values for the start or " - "end of this file was incorrect or the sample rate is zero."); - } - else - debug("Vorbis::Properties::read() -- Could not find valid first and last Ogg pages."); -} diff --git a/platform/win32/msvc/external/taglib/taglib/ogg/vorbis/vorbisproperties.h b/platform/win32/msvc/external/taglib/taglib/ogg/vorbis/vorbisproperties.h deleted file mode 100644 index de46985b68c..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ogg/vorbis/vorbisproperties.h +++ /dev/null @@ -1,125 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_VORBISPROPERTIES_H -#define TAGLIB_VORBISPROPERTIES_H - -#include "taglib_export.h" -#include "audioproperties.h" - -namespace TagLib { - -/* - * This is just to make this appear to be in the Ogg namespace in the - * documentation. The typedef below will make this work with the current code. - * In the next BIC version of TagLib this will be really moved into the Ogg - * namespace. - */ - -#ifdef DOXYGEN - namespace Ogg { -#endif - - namespace Vorbis { - - class File; - - //! An implementation of audio property reading for Ogg Vorbis - - /*! - * This reads the data from an Ogg Vorbis stream found in the AudioProperties - * API. - */ - - class TAGLIB_EXPORT Properties : public AudioProperties - { - public: - /*! - * Create an instance of Vorbis::Properties with the data read from the - * Vorbis::File \a file. - */ - Properties(File *file, ReadStyle style = Average); - - /*! - * Destroys this VorbisProperties instance. - */ - virtual ~Properties(); - - // Reimplementations. - - virtual int length() const; - virtual int bitrate() const; - virtual int sampleRate() const; - virtual int channels() const; - - /*! - * Returns the Vorbis version, currently "0" (as specified by the spec). - */ - int vorbisVersion() const; - - /*! - * Returns the maximum bitrate as read from the Vorbis identification - * header. - */ - int bitrateMaximum() const; - - /*! - * Returns the nominal bitrate as read from the Vorbis identification - * header. - */ - int bitrateNominal() const; - - /*! - * Returns the minimum bitrate as read from the Vorbis identification - * header. - */ - int bitrateMinimum() const; - - private: - Properties(const Properties &); - Properties &operator=(const Properties &); - - void read(); - - class PropertiesPrivate; - PropertiesPrivate *d; - }; - } - -/* - * To keep compatibility with the current version put Vorbis in the Ogg namespace - * only in the docs and provide a typedef to make it work. In the next BIC - * version this will be removed and it will only exist in the Ogg namespace. - */ - -#ifdef DOXYGEN - } -#else - namespace Ogg { namespace Vorbis { typedef TagLib::AudioProperties AudioProperties; } } -#endif - -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/ogg/xiphcomment.cpp b/platform/win32/msvc/external/taglib/taglib/ogg/xiphcomment.cpp deleted file mode 100644 index 675614b3fb7..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ogg/xiphcomment.cpp +++ /dev/null @@ -1,382 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tbytevector.h> -#include <tdebug.h> - -#include <xiphcomment.h> -#include <tpropertymap.h> - -using namespace TagLib; - -class Ogg::XiphComment::XiphCommentPrivate -{ -public: - FieldListMap fieldListMap; - String vendorID; - String commentField; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Ogg::XiphComment::XiphComment() : TagLib::Tag() -{ - d = new XiphCommentPrivate; -} - -Ogg::XiphComment::XiphComment(const ByteVector &data) : TagLib::Tag() -{ - d = new XiphCommentPrivate; - parse(data); -} - -Ogg::XiphComment::~XiphComment() -{ - delete d; -} - -String Ogg::XiphComment::title() const -{ - if(d->fieldListMap["TITLE"].isEmpty()) - return String::null; - return d->fieldListMap["TITLE"].front(); -} - -String Ogg::XiphComment::artist() const -{ - if(d->fieldListMap["ARTIST"].isEmpty()) - return String::null; - return d->fieldListMap["ARTIST"].front(); -} - -String Ogg::XiphComment::album() const -{ - if(d->fieldListMap["ALBUM"].isEmpty()) - return String::null; - return d->fieldListMap["ALBUM"].front(); -} - -String Ogg::XiphComment::comment() const -{ - if(!d->fieldListMap["DESCRIPTION"].isEmpty()) { - d->commentField = "DESCRIPTION"; - return d->fieldListMap["DESCRIPTION"].front(); - } - - if(!d->fieldListMap["COMMENT"].isEmpty()) { - d->commentField = "COMMENT"; - return d->fieldListMap["COMMENT"].front(); - } - - return String::null; -} - -String Ogg::XiphComment::genre() const -{ - if(d->fieldListMap["GENRE"].isEmpty()) - return String::null; - return d->fieldListMap["GENRE"].front(); -} - -TagLib::uint Ogg::XiphComment::year() const -{ - if(!d->fieldListMap["DATE"].isEmpty()) - return d->fieldListMap["DATE"].front().toInt(); - if(!d->fieldListMap["YEAR"].isEmpty()) - return d->fieldListMap["YEAR"].front().toInt(); - return 0; -} - -TagLib::uint Ogg::XiphComment::track() const -{ - if(!d->fieldListMap["TRACKNUMBER"].isEmpty()) - return d->fieldListMap["TRACKNUMBER"].front().toInt(); - if(!d->fieldListMap["TRACKNUM"].isEmpty()) - return d->fieldListMap["TRACKNUM"].front().toInt(); - return 0; -} - -void Ogg::XiphComment::setTitle(const String &s) -{ - addField("TITLE", s); -} - -void Ogg::XiphComment::setArtist(const String &s) -{ - addField("ARTIST", s); -} - -void Ogg::XiphComment::setAlbum(const String &s) -{ - addField("ALBUM", s); -} - -void Ogg::XiphComment::setComment(const String &s) -{ - addField(d->commentField.isEmpty() ? "DESCRIPTION" : d->commentField, s); -} - -void Ogg::XiphComment::setGenre(const String &s) -{ - addField("GENRE", s); -} - -void Ogg::XiphComment::setYear(uint i) -{ - removeField("YEAR"); - if(i == 0) - removeField("DATE"); - else - addField("DATE", String::number(i)); -} - -void Ogg::XiphComment::setTrack(uint i) -{ - removeField("TRACKNUM"); - if(i == 0) - removeField("TRACKNUMBER"); - else - addField("TRACKNUMBER", String::number(i)); -} - -bool Ogg::XiphComment::isEmpty() const -{ - FieldListMap::ConstIterator it = d->fieldListMap.begin(); - for(; it != d->fieldListMap.end(); ++it) - if(!(*it).second.isEmpty()) - return false; - - return true; -} - -TagLib::uint Ogg::XiphComment::fieldCount() const -{ - uint count = 0; - - FieldListMap::ConstIterator it = d->fieldListMap.begin(); - for(; it != d->fieldListMap.end(); ++it) - count += (*it).second.size(); - - return count; -} - -const Ogg::FieldListMap &Ogg::XiphComment::fieldListMap() const -{ - return d->fieldListMap; -} - -PropertyMap Ogg::XiphComment::properties() const -{ - return d->fieldListMap; -} - -PropertyMap Ogg::XiphComment::setProperties(const PropertyMap &properties) -{ - // check which keys are to be deleted - StringList toRemove; - for(FieldListMap::ConstIterator it = d->fieldListMap.begin(); it != d->fieldListMap.end(); ++it) - if (!properties.contains(it->first)) - toRemove.append(it->first); - - for(StringList::ConstIterator it = toRemove.begin(); it != toRemove.end(); ++it) - removeField(*it); - - // now go through keys in \a properties and check that the values match those in the xiph comment - PropertyMap invalid; - PropertyMap::ConstIterator it = properties.begin(); - for(; it != properties.end(); ++it) - { - if(!checkKey(it->first)) - invalid.insert(it->first, it->second); - else if(!d->fieldListMap.contains(it->first) || !(it->second == d->fieldListMap[it->first])) { - const StringList &sl = it->second; - if(sl.size() == 0) - // zero size string list -> remove the tag with all values - removeField(it->first); - else { - // replace all strings in the list for the tag - StringList::ConstIterator valueIterator = sl.begin(); - addField(it->first, *valueIterator, true); - ++valueIterator; - for(; valueIterator != sl.end(); ++valueIterator) - addField(it->first, *valueIterator, false); - } - } - } - return invalid; -} - -bool Ogg::XiphComment::checkKey(const String &key) -{ - if(key.size() < 1) - return false; - for(String::ConstIterator it = key.begin(); it != key.end(); it++) - // forbid non-printable, non-ascii, '=' (#61) and '~' (#126) - if (*it < 32 || *it >= 128 || *it == 61 || *it == 126) - return false; - return true; -} - -String Ogg::XiphComment::vendorID() const -{ - return d->vendorID; -} - -void Ogg::XiphComment::addField(const String &key, const String &value, bool replace) -{ - if(replace) - removeField(key.upper()); - - if(!key.isEmpty() && !value.isEmpty()) - d->fieldListMap[key.upper()].append(value); -} - -void Ogg::XiphComment::removeField(const String &key, const String &value) -{ - if(!value.isNull()) { - StringList::Iterator it = d->fieldListMap[key].begin(); - while(it != d->fieldListMap[key].end()) { - if(value == *it) - it = d->fieldListMap[key].erase(it); - else - it++; - } - } - else - d->fieldListMap.erase(key); -} - -bool Ogg::XiphComment::contains(const String &key) const -{ - return d->fieldListMap.contains(key) && !d->fieldListMap[key].isEmpty(); -} - -ByteVector Ogg::XiphComment::render() const -{ - return render(true); -} - -ByteVector Ogg::XiphComment::render(bool addFramingBit) const -{ - ByteVector data; - - // Add the vendor ID length and the vendor ID. It's important to use the - // length of the data(String::UTF8) rather than the length of the the string - // since this is UTF8 text and there may be more characters in the data than - // in the UTF16 string. - - ByteVector vendorData = d->vendorID.data(String::UTF8); - - data.append(ByteVector::fromUInt(vendorData.size(), false)); - data.append(vendorData); - - // Add the number of fields. - - data.append(ByteVector::fromUInt(fieldCount(), false)); - - // Iterate over the the field lists. Our iterator returns a - // std::pair<String, StringList> where the first String is the field name and - // the StringList is the values associated with that field. - - FieldListMap::ConstIterator it = d->fieldListMap.begin(); - for(; it != d->fieldListMap.end(); ++it) { - - // And now iterate over the values of the current list. - - String fieldName = (*it).first; - StringList values = (*it).second; - - StringList::ConstIterator valuesIt = values.begin(); - for(; valuesIt != values.end(); ++valuesIt) { - ByteVector fieldData = fieldName.data(String::UTF8); - fieldData.append('='); - fieldData.append((*valuesIt).data(String::UTF8)); - - data.append(ByteVector::fromUInt(fieldData.size(), false)); - data.append(fieldData); - } - } - - // Append the "framing bit". - - if(addFramingBit) - data.append(char(1)); - - return data; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void Ogg::XiphComment::parse(const ByteVector &data) -{ - // The first thing in the comment data is the vendor ID length, followed by a - // UTF8 string with the vendor ID. - - uint pos = 0; - - uint vendorLength = data.mid(0, 4).toUInt(false); - pos += 4; - - d->vendorID = String(data.mid(pos, vendorLength), String::UTF8); - pos += vendorLength; - - // Next the number of fields in the comment vector. - - uint commentFields = data.mid(pos, 4).toUInt(false); - pos += 4; - - if(commentFields > (data.size() - 8) / 4) { - return; - } - - for(uint i = 0; i < commentFields; i++) { - - // Each comment field is in the format "KEY=value" in a UTF8 string and has - // 4 bytes before the text starts that gives the length. - - uint commentLength = data.mid(pos, 4).toUInt(false); - pos += 4; - - String comment = String(data.mid(pos, commentLength), String::UTF8); - pos += commentLength; - if(pos > data.size()) { - break; - } - - int commentSeparatorPosition = comment.find("="); - if(commentSeparatorPosition == -1) { - break; - } - - String key = comment.substr(0, commentSeparatorPosition); - String value = comment.substr(commentSeparatorPosition + 1); - - addField(key, value, false); - } -} diff --git a/platform/win32/msvc/external/taglib/taglib/ogg/xiphcomment.h b/platform/win32/msvc/external/taglib/taglib/ogg/xiphcomment.h deleted file mode 100644 index 54f3070bf39..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/ogg/xiphcomment.h +++ /dev/null @@ -1,225 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_VORBISCOMMENT_H -#define TAGLIB_VORBISCOMMENT_H - -#include "tag.h" -#include "tlist.h" -#include "tmap.h" -#include "tstring.h" -#include "tstringlist.h" -#include "tbytevector.h" -#include "taglib_export.h" - -namespace TagLib { - - namespace Ogg { - - /*! - * A mapping between a list of field names, or keys, and a list of values - * associated with that field. - * - * \see XiphComment::fieldListMap() - */ - typedef Map<String, StringList> FieldListMap; - - //! Ogg Vorbis comment implementation - - /*! - * This class is an implementation of the Ogg Vorbis comment specification, - * to be found in section 5 of the Ogg Vorbis specification. Because this - * format is also used in other (currently unsupported) Xiph.org formats, it - * has been made part of a generic implementation rather than being limited - * to strictly Vorbis. - * - * Vorbis comments are a simple vector of keys and values, called fields. - * Multiple values for a given key are supported. - * - * \see fieldListMap() - */ - - class TAGLIB_EXPORT XiphComment : public TagLib::Tag - { - public: - /*! - * Constructs an empty Vorbis comment. - */ - XiphComment(); - - /*! - * Constructs a Vorbis comment from \a data. - */ - XiphComment(const ByteVector &data); - - /*! - * Destroys this instance of the XiphComment. - */ - virtual ~XiphComment(); - - virtual String title() const; - virtual String artist() const; - virtual String album() const; - virtual String comment() const; - virtual String genre() const; - virtual uint year() const; - virtual uint track() const; - - virtual void setTitle(const String &s); - virtual void setArtist(const String &s); - virtual void setAlbum(const String &s); - virtual void setComment(const String &s); - virtual void setGenre(const String &s); - virtual void setYear(uint i); - virtual void setTrack(uint i); - - virtual bool isEmpty() const; - - /*! - * Returns the number of fields present in the comment. - */ - uint fieldCount() const; - - /*! - * Returns a reference to the map of field lists. Because Xiph comments - * support multiple fields with the same key, a pure Map would not work. - * As such this is a Map of string lists, keyed on the comment field name. - * - * The standard set of Xiph/Vorbis fields (which may or may not be - * contained in any specific comment) is: - * - * <ul> - * <li>TITLE</li> - * <li>VERSION</li> - * <li>ALBUM</li> - * <li>ARTIST</li> - * <li>PERFORMER</li> - * <li>COPYRIGHT</li> - * <li>ORGANIZATION</li> - * <li>DESCRIPTION</li> - * <li>GENRE</li> - * <li>DATE</li> - * <li>LOCATION</li> - * <li>CONTACT</li> - * <li>ISRC</li> - * </ul> - * - * For a more detailed description of these fields, please see the Ogg - * Vorbis specification, section 5.2.2.1. - * - * \note The Ogg Vorbis comment specification does allow these key values - * to be either upper or lower case. However, it is conventional for them - * to be upper case. As such, TagLib, when parsing a Xiph/Vorbis comment, - * converts all fields to uppercase. When you are using this data - * structure, you will need to specify the field name in upper case. - * - * \warning You should not modify this data structure directly, instead - * use addField() and removeField(). - */ - const FieldListMap &fieldListMap() const; - - /*! - * Implements the unified property interface -- export function. - * The result is a one-to-one match of the Xiph comment, since it is - * completely compatible with the property interface (in fact, a Xiph - * comment is nothing more than a map from tag names to list of values, - * as is the dict interface). - */ - PropertyMap properties() const; - - /*! - * Implements the unified property interface -- import function. - * The tags from the given map will be stored one-to-one in the file, - * except for invalid keys (less than one character, non-ASCII, or - * containing '=' or '~') in which case the according values will - * be contained in the returned PropertyMap. - */ - PropertyMap setProperties(const PropertyMap&); - - /*! - * Check if the given String is a valid Xiph comment key. - */ - static bool checkKey(const String&); - - /*! - * Returns the vendor ID of the Ogg Vorbis encoder. libvorbis 1.0 as the - * most common case always returns "Xiph.Org libVorbis I 20020717". - */ - String vendorID() const; - - /*! - * Add the field specified by \a key with the data \a value. If \a replace - * is true, then all of the other fields with the same key will be removed - * first. - * - * If the field value is empty, the field will be removed. - */ - void addField(const String &key, const String &value, bool replace = true); - - /*! - * Remove the field specified by \a key with the data \a value. If - * \a value is null, all of the fields with the given key will be removed. - */ - void removeField(const String &key, const String &value = String::null); - - /*! - * Returns true if the field is contained within the comment. - * - * \note This is safer than checking for membership in the FieldListMap. - */ - bool contains(const String &key) const; - - /*! - * Renders the comment to a ByteVector suitable for inserting into a file. - */ - ByteVector render() const; // BIC: remove and merge with below - - /*! - * Renders the comment to a ByteVector suitable for inserting into a file. - * - * If \a addFramingBit is true the standard Vorbis comment framing bit will - * be appended. However some formats (notably FLAC) do not work with this - * in place. - */ - ByteVector render(bool addFramingBit) const; - - protected: - /*! - * Reads the tag from the file specified in the constructor and fills the - * FieldListMap. - */ - void parse(const ByteVector &data); - - private: - XiphComment(const XiphComment &); - XiphComment &operator=(const XiphComment &); - - class XiphCommentPrivate; - XiphCommentPrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/riff/aiff/aifffile.cpp b/platform/win32/msvc/external/taglib/taglib/riff/aiff/aifffile.cpp deleted file mode 100644 index ece84f05804..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/riff/aiff/aifffile.cpp +++ /dev/null @@ -1,138 +0,0 @@ -/*************************************************************************** - copyright : (C) 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tbytevector.h> -#include <tdebug.h> -#include <id3v2tag.h> -#include <tstringlist.h> -#include <tpropertymap.h> - -#include "aifffile.h" - -using namespace TagLib; - -class RIFF::AIFF::File::FilePrivate -{ -public: - FilePrivate() : - properties(0), - tag(0), - tagChunkID("ID3 ") - { - - } - - ~FilePrivate() - { - delete properties; - delete tag; - } - - Properties *properties; - ID3v2::Tag *tag; - ByteVector tagChunkID; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -RIFF::AIFF::File::File(FileName file, bool readProperties, - Properties::ReadStyle propertiesStyle) : RIFF::File(file, BigEndian) -{ - d = new FilePrivate; - if(isOpen()) - read(readProperties, propertiesStyle); -} - -RIFF::AIFF::File::File(IOStream *stream, bool readProperties, - Properties::ReadStyle propertiesStyle) : RIFF::File(stream, BigEndian) -{ - d = new FilePrivate; - if(isOpen()) - read(readProperties, propertiesStyle); -} - -RIFF::AIFF::File::~File() -{ - delete d; -} - -ID3v2::Tag *RIFF::AIFF::File::tag() const -{ - return d->tag; -} - -PropertyMap RIFF::AIFF::File::properties() const -{ - return d->tag->properties(); -} - -PropertyMap RIFF::AIFF::File::setProperties(const PropertyMap &properties) -{ - return d->tag->setProperties(properties); -} - - -RIFF::AIFF::Properties *RIFF::AIFF::File::audioProperties() const -{ - return d->properties; -} - -bool RIFF::AIFF::File::save() -{ - if(readOnly()) { - debug("RIFF::AIFF::File::save() -- File is read only."); - return false; - } - - if(!isValid()) { - debug("RIFF::AIFF::File::save() -- Trying to save invalid file."); - return false; - } - - setChunkData(d->tagChunkID, d->tag->render()); - - return true; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void RIFF::AIFF::File::read(bool readProperties, Properties::ReadStyle propertiesStyle) -{ - for(uint i = 0; i < chunkCount(); i++) { - if(chunkName(i) == "ID3 " || chunkName(i) == "id3 ") { - d->tagChunkID = chunkName(i); - d->tag = new ID3v2::Tag(this, chunkOffset(i)); - } - else if(chunkName(i) == "COMM" && readProperties) - d->properties = new Properties(chunkData(i), propertiesStyle); - } - - if(!d->tag) - d->tag = new ID3v2::Tag; -} diff --git a/platform/win32/msvc/external/taglib/taglib/riff/aiff/aifffile.h b/platform/win32/msvc/external/taglib/taglib/riff/aiff/aifffile.h deleted file mode 100644 index e1284db08df..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/riff/aiff/aifffile.h +++ /dev/null @@ -1,125 +0,0 @@ -/*************************************************************************** - copyright : (C) 2008 by Scott Wheeler - email : wheeler@kde.org -***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_AIFFFILE_H -#define TAGLIB_AIFFFILE_H - -#include "rifffile.h" -#include "id3v2tag.h" -#include "aiffproperties.h" - -namespace TagLib { - - namespace RIFF { - - //! An implementation of AIFF metadata - - /*! - * This is implementation of AIFF metadata. - * - * This supports an ID3v2 tag as well as reading stream from the ID3 RIFF - * chunk as well as properties from the file. - */ - - namespace AIFF { - - //! An implementation of TagLib::File with AIFF specific methods - - /*! - * This implements and provides an interface for AIFF files to the - * TagLib::Tag and TagLib::AudioProperties interfaces by way of implementing - * the abstract TagLib::File API as well as providing some additional - * information specific to AIFF files. - */ - - class TAGLIB_EXPORT File : public TagLib::RIFF::File - { - public: - /*! - * Contructs an AIFF file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - */ - File(FileName file, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Contructs an AIFF file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - */ - File(IOStream *stream, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Destroys this instance of the File. - */ - virtual ~File(); - - /*! - * Returns the Tag for this file. - */ - virtual ID3v2::Tag *tag() const; - - /*! - * Implements the unified property interface -- export function. - * This method forwards to ID3v2::Tag::properties(). - */ - PropertyMap properties() const; - - /*! - * Implements the unified property interface -- import function. - * This method forwards to ID3v2::Tag::setProperties(). - */ - PropertyMap setProperties(const PropertyMap &); - - /*! - * Returns the AIFF::Properties for this file. If no audio properties - * were read then this will return a null pointer. - */ - virtual Properties *audioProperties() const; - - /*! - * Saves the file. - */ - virtual bool save(); - - private: - File(const File &); - File &operator=(const File &); - - void read(bool readProperties, Properties::ReadStyle propertiesStyle); - - class FilePrivate; - FilePrivate *d; - }; - } - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/riff/aiff/aiffproperties.cpp b/platform/win32/msvc/external/taglib/taglib/riff/aiff/aiffproperties.cpp deleted file mode 100644 index 3ea275825d6..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/riff/aiff/aiffproperties.cpp +++ /dev/null @@ -1,160 +0,0 @@ -/*************************************************************************** - copyright : (C) 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tstring.h> -#include <tdebug.h> -#include <cmath> -// ldexp is a c99 function, which might not be defined in <cmath> -// so we pull in math.h too and hope it does the right (wrong) thing -// wrt. c99 functions in C++ -#include <math.h> - -#include "aiffproperties.h" - -//////////////////////////////////////////////////////////////////////////////// -// nasty 80-bit float helpers -//////////////////////////////////////////////////////////////////////////////// - -#define UnsignedToFloat(u) (((double)((long)(u - 2147483647L - 1))) + 2147483648.0) - -static double ConvertFromIeeeExtended(unsigned char *bytes) -{ - double f; - int expon; - unsigned long hiMant, loMant; - - expon = ((bytes[0] & 0x7F) << 8) | (bytes[1] & 0xFF); - - hiMant = ((unsigned long)(bytes[2] & 0xFF) << 24) | - ((unsigned long)(bytes[3] & 0xFF) << 16) | - ((unsigned long)(bytes[4] & 0xFF) << 8) | - ((unsigned long)(bytes[5] & 0xFF)); - - loMant = ((unsigned long)(bytes[6] & 0xFF) << 24) | - ((unsigned long)(bytes[7] & 0xFF) << 16) | - ((unsigned long)(bytes[8] & 0xFF) << 8) | - ((unsigned long)(bytes[9] & 0xFF)); - - if (expon == 0 && hiMant == 0 && loMant == 0) - f = 0; - else { - if(expon == 0x7FFF) /* Infinity or NaN */ - f = HUGE_VAL; - else { - expon -= 16383; - f = ldexp(UnsignedToFloat(hiMant), expon -= 31); - f += ldexp(UnsignedToFloat(loMant), expon -= 32); - } - } - - if(bytes[0] & 0x80) - return -f; - else - return f; -} - -using namespace TagLib; - -class RIFF::AIFF::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate() : - length(0), - bitrate(0), - sampleRate(0), - channels(0), - sampleWidth(0), - sampleFrames(0) - { - - } - - int length; - int bitrate; - int sampleRate; - int channels; - int sampleWidth; - uint sampleFrames; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -RIFF::AIFF::Properties::Properties(const ByteVector &data, ReadStyle style) : AudioProperties(style) -{ - d = new PropertiesPrivate; - read(data); -} - -RIFF::AIFF::Properties::~Properties() -{ - delete d; -} - -int RIFF::AIFF::Properties::length() const -{ - return d->length; -} - -int RIFF::AIFF::Properties::bitrate() const -{ - return d->bitrate; -} - -int RIFF::AIFF::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int RIFF::AIFF::Properties::channels() const -{ - return d->channels; -} - -int RIFF::AIFF::Properties::sampleWidth() const -{ - return d->sampleWidth; -} - -TagLib::uint RIFF::AIFF::Properties::sampleFrames() const -{ - return d->sampleFrames; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void RIFF::AIFF::Properties::read(const ByteVector &data) -{ - d->channels = data.mid(0, 2).toShort(); - d->sampleFrames = data.mid(2, 4).toUInt(); - d->sampleWidth = data.mid(6, 2).toShort(); - double sampleRate = ConvertFromIeeeExtended(reinterpret_cast<unsigned char *>(data.mid(8, 10).data())); - d->sampleRate = (int)sampleRate; - d->bitrate = (int)((sampleRate * d->sampleWidth * d->channels) / 1000.0); - d->length = d->sampleRate > 0 ? d->sampleFrames / d->sampleRate : 0; -} diff --git a/platform/win32/msvc/external/taglib/taglib/riff/aiff/aiffproperties.h b/platform/win32/msvc/external/taglib/taglib/riff/aiff/aiffproperties.h deleted file mode 100644 index 68e90b792c9..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/riff/aiff/aiffproperties.h +++ /dev/null @@ -1,83 +0,0 @@ -/*************************************************************************** - copyright : (C) 2008 by Scott Wheeler - email : wheeler@kde.org -***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_AIFFPROPERTIES_H -#define TAGLIB_AIFFPROPERTIES_H - -#include "audioproperties.h" - -namespace TagLib { - - namespace RIFF { - - namespace AIFF { - - class File; - - //! An implementation of audio property reading for AIFF - - /*! - * This reads the data from an AIFF stream found in the AudioProperties - * API. - */ - - class TAGLIB_EXPORT Properties : public AudioProperties - { - public: - /*! - * Create an instance of AIFF::Properties with the data read from the - * ByteVector \a data. - */ - Properties(const ByteVector &data, ReadStyle style); - - /*! - * Destroys this AIFF::Properties instance. - */ - virtual ~Properties(); - - // Reimplementations. - - virtual int length() const; - virtual int bitrate() const; - virtual int sampleRate() const; - virtual int channels() const; - - int sampleWidth() const; - uint sampleFrames() const; - - private: - Properties(const Properties &); - Properties &operator=(const Properties &); - - void read(const ByteVector &data); - - class PropertiesPrivate; - PropertiesPrivate *d; - }; - } - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/riff/rifffile.cpp b/platform/win32/msvc/external/taglib/taglib/riff/rifffile.cpp deleted file mode 100644 index df3b36635ad..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/riff/rifffile.cpp +++ /dev/null @@ -1,283 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tbytevector.h> -#include <tdebug.h> -#include <tstring.h> - -#include "rifffile.h" -#include <vector> - -using namespace TagLib; - -struct Chunk -{ - ByteVector name; - TagLib::uint offset; - TagLib::uint size; - char padding; -}; - -class RIFF::File::FilePrivate -{ -public: - FilePrivate() : - endianness(BigEndian), - size(0) - { - - } - Endianness endianness; - ByteVector type; - TagLib::uint size; - ByteVector format; - - std::vector<Chunk> chunks; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -RIFF::File::~File() -{ - delete d; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -RIFF::File::File(FileName file, Endianness endianness) : TagLib::File(file) -{ - d = new FilePrivate; - d->endianness = endianness; - - if(isOpen()) - read(); -} - -RIFF::File::File(IOStream *stream, Endianness endianness) : TagLib::File(stream) -{ - d = new FilePrivate; - d->endianness = endianness; - - if(isOpen()) - read(); -} - -TagLib::uint RIFF::File::riffSize() const -{ - return d->size; -} - -TagLib::uint RIFF::File::chunkCount() const -{ - return d->chunks.size(); -} - -TagLib::uint RIFF::File::chunkDataSize(uint i) const -{ - return d->chunks[i].size; -} - -TagLib::uint RIFF::File::chunkOffset(uint i) const -{ - return d->chunks[i].offset; -} - -TagLib::uint RIFF::File::chunkPadding(uint i) const -{ - return d->chunks[i].padding; -} - -ByteVector RIFF::File::chunkName(uint i) const -{ - if(i >= chunkCount()) - return ByteVector::null; - - return d->chunks[i].name; -} - -ByteVector RIFF::File::chunkData(uint i) -{ - if(i >= chunkCount()) - return ByteVector::null; - - // Offset for the first subchunk's data - - long begin = 12 + 8; - - for(uint it = 0; it < i; it++) - begin += 8 + d->chunks[it].size + d->chunks[it].padding; - - seek(begin); - - return readBlock(d->chunks[i].size); -} - -void RIFF::File::setChunkData(const ByteVector &name, const ByteVector &data) -{ - if(d->chunks.size() == 0) { - debug("RIFF::File::setChunkData - No valid chunks found."); - return; - } - - for(uint i = 0; i < d->chunks.size(); i++) { - if(d->chunks[i].name == name) { - - // First we update the global size - - d->size += ((data.size() + 1) & ~1) - (d->chunks[i].size + d->chunks[i].padding); - insert(ByteVector::fromUInt(d->size, d->endianness == BigEndian), 4, 4); - - // Now update the specific chunk - - writeChunk(name, data, d->chunks[i].offset - 8, d->chunks[i].size + d->chunks[i].padding + 8); - - d->chunks[i].size = data.size(); - d->chunks[i].padding = (data.size() & 0x01) ? 1 : 0; - - // Now update the internal offsets - - for(i++; i < d->chunks.size(); i++) - d->chunks[i].offset = d->chunks[i-1].offset + 8 + d->chunks[i-1].size + d->chunks[i-1].padding; - - return; - } - } - - // Couldn't find an existing chunk, so let's create a new one. - - uint i = d->chunks.size() - 1; - ulong offset = d->chunks[i].offset + d->chunks[i].size; - - // First we update the global size - - d->size += (offset & 1) + data.size() + 8; - insert(ByteVector::fromUInt(d->size, d->endianness == BigEndian), 4, 4); - - // Now add the chunk to the file - - writeChunk(name, data, offset, std::max(ulong(0), length() - offset), (offset & 1) ? 1 : 0); - - // And update our internal structure - - if (offset & 1) { - d->chunks[i].padding = 1; - offset++; - } - - Chunk chunk; - chunk.name = name; - chunk.size = data.size(); - chunk.offset = offset + 8; - chunk.padding = (data.size() & 0x01) ? 1 : 0; - - d->chunks.push_back(chunk); -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -static bool isValidChunkID(const ByteVector &name) -{ - if(name.size() != 4) { - return false; - } - for(int i = 0; i < 4; i++) { - if(name[i] < 32 || name[i] > 127) { - return false; - } - } - return true; -} - -void RIFF::File::read() -{ - bool bigEndian = (d->endianness == BigEndian); - - d->type = readBlock(4); - d->size = readBlock(4).toUInt(bigEndian); - d->format = readBlock(4); - - // + 8: chunk header at least, fix for additional junk bytes - while(tell() + 8 <= length()) { - ByteVector chunkName = readBlock(4); - uint chunkSize = readBlock(4).toUInt(bigEndian); - - if(!isValidChunkID(chunkName)) { - debug("RIFF::File::read() -- Chunk '" + chunkName + "' has invalid ID"); - setValid(false); - break; - } - - if(tell() + chunkSize > uint(length())) { - debug("RIFF::File::read() -- Chunk '" + chunkName + "' has invalid size (larger than the file size)"); - setValid(false); - break; - } - - Chunk chunk; - chunk.name = chunkName; - chunk.size = chunkSize; - chunk.offset = tell(); - - seek(chunk.size, Current); - - // check padding - chunk.padding = 0; - long uPosNotPadded = tell(); - if((uPosNotPadded & 0x01) != 0) { - ByteVector iByte = readBlock(1); - if((iByte.size() != 1) || (iByte[0] != 0)) { - // not well formed, re-seek - seek(uPosNotPadded, Beginning); - } - else { - chunk.padding = 1; - } - } - d->chunks.push_back(chunk); - - } -} - -void RIFF::File::writeChunk(const ByteVector &name, const ByteVector &data, - ulong offset, ulong replace, uint leadingPadding) -{ - ByteVector combined; - if(leadingPadding) { - combined.append(ByteVector(leadingPadding, '\x00')); - } - combined.append(name); - combined.append(ByteVector::fromUInt(data.size(), d->endianness == BigEndian)); - combined.append(data); - if((data.size() & 0x01) != 0) { - combined.append('\x00'); - } - insert(combined, offset, replace); -} diff --git a/platform/win32/msvc/external/taglib/taglib/riff/rifffile.h b/platform/win32/msvc/external/taglib/taglib/riff/rifffile.h deleted file mode 100644 index e418dbb6751..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/riff/rifffile.h +++ /dev/null @@ -1,122 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_RIFFFILE_H -#define TAGLIB_RIFFFILE_H - -#include "taglib_export.h" -#include "tfile.h" - -namespace TagLib { - - //! An implementation of TagLib::File with RIFF specific methods - - namespace RIFF { - - //! An RIFF file class with some useful methods specific to RIFF - - /*! - * This implements the generic TagLib::File API and additionally provides - * access to properties that are distinct to RIFF files, notably access - * to the different ID3 tags. - */ - - class TAGLIB_EXPORT File : public TagLib::File - { - public: - /*! - * Destroys this instance of the File. - */ - virtual ~File(); - - protected: - - enum Endianness { BigEndian, LittleEndian }; - - File(FileName file, Endianness endianness); - File(IOStream *stream, Endianness endianness); - - /*! - * \return The size of the main RIFF chunk. - */ - uint riffSize() const; - - /*! - * \return The number of chunks in the file. - */ - uint chunkCount() const; - - /*! - * \return The offset within the file for the selected chunk number. - */ - uint chunkOffset(uint i) const; - - /*! - * \return The size of the chunk data. - */ - uint chunkDataSize(uint i) const; - - /*! - * \return The size of the padding after the chunk (can be either 0 or 1). - */ - uint chunkPadding(uint i) const; - - /*! - * \return The name of the specified chunk, for instance, "COMM" or "ID3 " - */ - ByteVector chunkName(uint i) const; - - /*! - * Reads the chunk data from the file and returns it. - * - * \note This \e will move the read pointer for the file. - */ - ByteVector chunkData(uint i); - - /*! - * Sets the data for the chunk \a name to \a data. If a chunk with the - * given name already exists it will be overwritten, otherwise it will be - * created after the existing chunks. - * - * \warning This will update the file immediately. - */ - void setChunkData(const ByteVector &name, const ByteVector &data); - - private: - File(const File &); - File &operator=(const File &); - - void read(); - void writeChunk(const ByteVector &name, const ByteVector &data, - ulong offset, ulong replace = 0, - uint leadingPadding = 0); - - class FilePrivate; - FilePrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/riff/wav/wavfile.cpp b/platform/win32/msvc/external/taglib/taglib/riff/wav/wavfile.cpp deleted file mode 100644 index 613db4ef9de..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/riff/wav/wavfile.cpp +++ /dev/null @@ -1,145 +0,0 @@ -/*************************************************************************** - copyright : (C) 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tbytevector.h> -#include <tdebug.h> -#include <id3v2tag.h> -#include <tstringlist.h> -#include <tpropertymap.h> - -#include "wavfile.h" - -using namespace TagLib; - -class RIFF::WAV::File::FilePrivate -{ -public: - FilePrivate() : - properties(0), - tag(0), - tagChunkID("ID3 ") - { - - } - - ~FilePrivate() - { - delete properties; - delete tag; - } - - Properties *properties; - ID3v2::Tag *tag; - ByteVector tagChunkID; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -RIFF::WAV::File::File(FileName file, bool readProperties, - Properties::ReadStyle propertiesStyle) : RIFF::File(file, LittleEndian) -{ - d = new FilePrivate; - if(isOpen()) - read(readProperties, propertiesStyle); -} - -RIFF::WAV::File::File(IOStream *stream, bool readProperties, - Properties::ReadStyle propertiesStyle) : RIFF::File(stream, LittleEndian) -{ - d = new FilePrivate; - if(isOpen()) - read(readProperties, propertiesStyle); -} - -RIFF::WAV::File::~File() -{ - delete d; -} - -ID3v2::Tag *RIFF::WAV::File::tag() const -{ - return d->tag; -} - -PropertyMap RIFF::WAV::File::properties() const -{ - return d->tag->properties(); -} - -PropertyMap RIFF::WAV::File::setProperties(const PropertyMap &properties) -{ - return d->tag->setProperties(properties); -} - - -RIFF::WAV::Properties *RIFF::WAV::File::audioProperties() const -{ - return d->properties; -} - -bool RIFF::WAV::File::save() -{ - if(readOnly()) { - debug("RIFF::WAV::File::save() -- File is read only."); - return false; - } - - if(!isValid()) { - debug("RIFF::WAV::File::save() -- Trying to save invalid file."); - return false; - } - - setChunkData(d->tagChunkID, d->tag->render()); - - return true; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void RIFF::WAV::File::read(bool readProperties, Properties::ReadStyle propertiesStyle) -{ - ByteVector formatData; - uint streamLength = 0; - for(uint i = 0; i < chunkCount(); i++) { - if(chunkName(i) == "ID3 " || chunkName(i) == "id3 ") { - d->tagChunkID = chunkName(i); - d->tag = new ID3v2::Tag(this, chunkOffset(i)); - } - else if(chunkName(i) == "fmt " && readProperties) - formatData = chunkData(i); - else if(chunkName(i) == "data" && readProperties) - streamLength = chunkDataSize(i); - } - - if(!formatData.isEmpty()) - d->properties = new Properties(formatData, streamLength, propertiesStyle); - - if(!d->tag) - d->tag = new ID3v2::Tag; -} diff --git a/platform/win32/msvc/external/taglib/taglib/riff/wav/wavfile.h b/platform/win32/msvc/external/taglib/taglib/riff/wav/wavfile.h deleted file mode 100644 index 1c470870769..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/riff/wav/wavfile.h +++ /dev/null @@ -1,125 +0,0 @@ -/*************************************************************************** - copyright : (C) 2008 by Scott Wheeler - email : wheeler@kde.org -***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_WAVFILE_H -#define TAGLIB_WAVFILE_H - -#include "rifffile.h" -#include "id3v2tag.h" -#include "wavproperties.h" - -namespace TagLib { - - namespace RIFF { - - //! An implementation of WAV metadata - - /*! - * This is implementation of WAV metadata. - * - * This supports an ID3v2 tag as well as reading stream from the ID3 RIFF - * chunk as well as properties from the file. - */ - - namespace WAV { - - //! An implementation of TagLib::File with WAV specific methods - - /*! - * This implements and provides an interface for WAV files to the - * TagLib::Tag and TagLib::AudioProperties interfaces by way of implementing - * the abstract TagLib::File API as well as providing some additional - * information specific to WAV files. - */ - - class TAGLIB_EXPORT File : public TagLib::RIFF::File - { - public: - /*! - * Contructs an WAV file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - */ - File(FileName file, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Contructs an WAV file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - */ - File(IOStream *stream, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Destroys this instance of the File. - */ - virtual ~File(); - - /*! - * Returns the Tag for this file. - */ - virtual ID3v2::Tag *tag() const; - - /*! - * Implements the unified property interface -- export function. - * This method forwards to ID3v2::Tag::properties(). - */ - PropertyMap properties() const; - - /*! - * Implements the unified property interface -- import function. - * This method forwards to ID3v2::Tag::setProperties(). - */ - PropertyMap setProperties(const PropertyMap &); - - /*! - * Returns the WAV::Properties for this file. If no audio properties - * were read then this will return a null pointer. - */ - virtual Properties *audioProperties() const; - - /*! - * Saves the file. - */ - virtual bool save(); - - private: - File(const File &); - File &operator=(const File &); - - void read(bool readProperties, Properties::ReadStyle propertiesStyle); - - class FilePrivate; - FilePrivate *d; - }; - } - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/riff/wav/wavproperties.cpp b/platform/win32/msvc/external/taglib/taglib/riff/wav/wavproperties.cpp deleted file mode 100644 index 9e7ea70ccc0..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/riff/wav/wavproperties.cpp +++ /dev/null @@ -1,129 +0,0 @@ -/*************************************************************************** - copyright : (C) 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include "wavproperties.h" - -#include <tstring.h> -#include <tdebug.h> -#include <cmath> -#include <math.h> - -using namespace TagLib; - -class RIFF::WAV::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate(uint streamLength = 0) : - format(0), - length(0), - bitrate(0), - sampleRate(0), - channels(0), - sampleWidth(0), - sampleFrames(0), - streamLength(streamLength) - { - - } - - short format; - int length; - int bitrate; - int sampleRate; - int channels; - int sampleWidth; - uint sampleFrames; - uint streamLength; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -RIFF::WAV::Properties::Properties(const ByteVector &data, ReadStyle style) : AudioProperties(style) -{ - d = new PropertiesPrivate(); - read(data); -} - -RIFF::WAV::Properties::Properties(const ByteVector &data, uint streamLength, ReadStyle style) : AudioProperties(style) -{ - d = new PropertiesPrivate(streamLength); - read(data); -} - -RIFF::WAV::Properties::~Properties() -{ - delete d; -} - -int RIFF::WAV::Properties::length() const -{ - return d->length; -} - -int RIFF::WAV::Properties::bitrate() const -{ - return d->bitrate; -} - -int RIFF::WAV::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int RIFF::WAV::Properties::channels() const -{ - return d->channels; -} - -int RIFF::WAV::Properties::sampleWidth() const -{ - return d->sampleWidth; -} - -TagLib::uint RIFF::WAV::Properties::sampleFrames() const -{ - return d->sampleFrames; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void RIFF::WAV::Properties::read(const ByteVector &data) -{ - d->format = data.mid(0, 2).toShort(false); - d->channels = data.mid(2, 2).toShort(false); - d->sampleRate = data.mid(4, 4).toUInt(false); - d->sampleWidth = data.mid(14, 2).toShort(false); - - uint byteRate = data.mid(8, 4).toUInt(false); - d->bitrate = byteRate * 8 / 1000; - - d->length = byteRate > 0 ? d->streamLength / byteRate : 0; - if(d->channels > 0 && d->sampleWidth > 0) - d->sampleFrames = d->streamLength / (d->channels * ((d->sampleWidth + 7) / 8)); -} diff --git a/platform/win32/msvc/external/taglib/taglib/riff/wav/wavproperties.h b/platform/win32/msvc/external/taglib/taglib/riff/wav/wavproperties.h deleted file mode 100644 index 2023f5392ca..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/riff/wav/wavproperties.h +++ /dev/null @@ -1,92 +0,0 @@ -/*************************************************************************** - copyright : (C) 2008 by Scott Wheeler - email : wheeler@kde.org -***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_WAVPROPERTIES_H -#define TAGLIB_WAVPROPERTIES_H - -#include "taglib.h" -#include "audioproperties.h" - -namespace TagLib { - - class ByteVector; - - namespace RIFF { - - namespace WAV { - - class File; - - //! An implementation of audio property reading for WAV - - /*! - * This reads the data from an WAV stream found in the AudioProperties - * API. - */ - - class TAGLIB_EXPORT Properties : public AudioProperties - { - public: - /*! - * Create an instance of WAV::Properties with the data read from the - * ByteVector \a data. - */ - Properties(const ByteVector &data, ReadStyle style); - - /*! - * Create an instance of WAV::Properties with the data read from the - * ByteVector \a data and the length calculated using \a streamLength. - */ - Properties(const ByteVector &data, uint streamLength, ReadStyle style); - - /*! - * Destroys this WAV::Properties instance. - */ - virtual ~Properties(); - - // Reimplementations. - - virtual int length() const; - virtual int bitrate() const; - virtual int sampleRate() const; - virtual int channels() const; - - int sampleWidth() const; - uint sampleFrames() const; - - private: - Properties(const Properties &); - Properties &operator=(const Properties &); - - void read(const ByteVector &data); - - class PropertiesPrivate; - PropertiesPrivate *d; - }; - } - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/s3m/s3mfile.cpp b/platform/win32/msvc/external/taglib/taglib/s3m/s3mfile.cpp deleted file mode 100644 index 7ffdf910b72..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/s3m/s3mfile.cpp +++ /dev/null @@ -1,241 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "s3mfile.h" -#include "tstringlist.h" -#include "tdebug.h" -#include "modfileprivate.h" -#include "tpropertymap.h" - -#include <iostream> - -using namespace TagLib; -using namespace S3M; - -class S3M::File::FilePrivate -{ -public: - FilePrivate(AudioProperties::ReadStyle propertiesStyle) - : properties(propertiesStyle) - { - } - - Mod::Tag tag; - S3M::Properties properties; -}; - -S3M::File::File(FileName file, bool readProperties, - AudioProperties::ReadStyle propertiesStyle) : - Mod::FileBase(file), - d(new FilePrivate(propertiesStyle)) -{ - read(readProperties); -} - -S3M::File::File(IOStream *stream, bool readProperties, - AudioProperties::ReadStyle propertiesStyle) : - Mod::FileBase(stream), - d(new FilePrivate(propertiesStyle)) -{ - read(readProperties); -} - -S3M::File::~File() -{ - delete d; -} - -Mod::Tag *S3M::File::tag() const -{ - return &d->tag; -} - -PropertyMap S3M::File::properties() const -{ - return d->tag.properties(); -} - -PropertyMap S3M::File::setProperties(const PropertyMap &properties) -{ - return d->tag.setProperties(properties); -} - -S3M::Properties *S3M::File::audioProperties() const -{ - return &d->properties; -} - -bool S3M::File::save() -{ - if(readOnly()) { - debug("S3M::File::save() - Cannot save to a read only file."); - return false; - } - // note: if title starts with "Extended Module: " - // the file would look like an .xm file - seek(0); - writeString(d->tag.title(), 27); - // string terminating NUL is not optional: - writeByte(0); - - seek(32); - - ushort length = 0; - ushort sampleCount = 0; - - if(!readU16L(length) || !readU16L(sampleCount)) - return false; - - seek(28, Current); - - int channels = 0; - for(int i = 0; i < 32; ++ i) { - uchar setting = 0; - if(!readByte(setting)) - return false; - // or if(setting >= 128)? - // or channels = i + 1;? - // need a better spec! - if(setting != 0xff) ++ channels; - } - - seek(channels, Current); - - StringList lines = d->tag.comment().split("\n"); - // write comment as sample names: - for(ushort i = 0; i < sampleCount; ++ i) { - seek(96L + length + ((long)i << 1)); - - ushort instrumentOffset = 0; - if(!readU16L(instrumentOffset)) - return false; - seek(((long)instrumentOffset << 4) + 48); - - if(i < lines.size()) - writeString(lines[i], 27); - else - writeString(String::null, 27); - // string terminating NUL is not optional: - writeByte(0); - } - return true; -} - -void S3M::File::read(bool) -{ - if(!isOpen()) - return; - - READ_STRING(d->tag.setTitle, 28); - READ_BYTE_AS(mark); - READ_BYTE_AS(type); - - READ_ASSERT(mark == 0x1A && type == 0x10); - - seek(32); - - READ_U16L_AS(length); - READ_U16L_AS(sampleCount); - - d->properties.setSampleCount(sampleCount); - - READ_U16L(d->properties.setPatternCount); - READ_U16L(d->properties.setFlags); - READ_U16L(d->properties.setTrackerVersion); - READ_U16L(d->properties.setFileFormatVersion); - - READ_ASSERT(readBlock(4) == "SCRM"); - - READ_BYTE(d->properties.setGlobalVolume); - READ_BYTE(d->properties.setBpmSpeed); - READ_BYTE(d->properties.setTempo); - - READ_BYTE_AS(masterVolume); - d->properties.setMasterVolume(masterVolume & 0x7f); - d->properties.setStereo((masterVolume & 0x80) != 0); - - // I've seen players who call the next two bytes - // "ultra click" and "use panning values" (if == 0xFC). - // I don't see them in any spec, though. - // Hm, but there is "UltraClick-removal" and some other - // variables in ScreamTracker IIIs GUI. - - seek(12, Current); - - int channels = 0; - for(int i = 0; i < 32; ++ i) { - READ_BYTE_AS(setting); - // or if(setting >= 128)? - // or channels = i + 1;? - // need a better spec! - if(setting != 0xff) ++ channels; - } - d->properties.setChannels(channels); - - seek(96); - ushort realLength = 0; - for(ushort i = 0; i < length; ++ i) { - READ_BYTE_AS(order); - if(order == 255) break; - if(order != 254) ++ realLength; - } - d->properties.setLengthInPatterns(realLength); - - seek(channels, Current); - - // Note: The S3M spec mentions samples and instruments, but in - // the header there are only pointers to instruments. - // However, there I never found instruments (SCRI) but - // instead samples (SCRS). - StringList comment; - for(ushort i = 0; i < sampleCount; ++ i) { - seek(96L + length + ((long)i << 1)); - - READ_U16L_AS(sampleHeaderOffset); - seek((long)sampleHeaderOffset << 4); - - READ_BYTE_AS(sampleType); - READ_STRING_AS(dosFileName, 13); - READ_U16L_AS(sampleDataOffset); - READ_U32L_AS(sampleLength); - READ_U32L_AS(repeatStart); - READ_U32L_AS(repeatStop); - READ_BYTE_AS(sampleVolume); - - seek(1, Current); - - READ_BYTE_AS(packing); - READ_BYTE_AS(sampleFlags); - READ_U32L_AS(baseFrequency); - - seek(12, Current); - - READ_STRING_AS(sampleName, 28); - // The next 4 bytes should be "SCRS", but I've found - // files that are otherwise ok with 4 nils instead. - // READ_ASSERT(readBlock(4) == "SCRS"); - - comment.append(sampleName); - } - - d->tag.setComment(comment.toString("\n")); - d->tag.setTrackerName("ScreamTracker III"); -} diff --git a/platform/win32/msvc/external/taglib/taglib/s3m/s3mfile.h b/platform/win32/msvc/external/taglib/taglib/s3m/s3mfile.h deleted file mode 100644 index c862108ee58..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/s3m/s3mfile.h +++ /dev/null @@ -1,104 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef TAGLIB_S3MFILE_H -#define TAGLIB_S3MFILE_H - -#include "tfile.h" -#include "audioproperties.h" -#include "taglib_export.h" -#include "modfilebase.h" -#include "modtag.h" -#include "s3mproperties.h" - -namespace TagLib { - - namespace S3M { - - class TAGLIB_EXPORT File : public Mod::FileBase { - public: - /*! - * Contructs a ScreamTracker III file from \a file. If \a readProperties - * is true the file's audio properties will also be read using - * \a propertiesStyle. If false, \a propertiesStyle is ignored. - */ - File(FileName file, bool readProperties = true, - AudioProperties::ReadStyle propertiesStyle = - AudioProperties::Average); - - /*! - * Contructs a ScreamTracker III file from \a stream. If \a readProperties - * is true the file's audio properties will also be read using - * \a propertiesStyle. If false, \a propertiesStyle is ignored. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - */ - File(IOStream *stream, bool readProperties = true, - AudioProperties::ReadStyle propertiesStyle = - AudioProperties::Average); - - /*! - * Destroys this instance of the File. - */ - virtual ~File(); - - Mod::Tag *tag() const; - - /*! - * Implements the unified property interface -- export function. - * Forwards to Mod::Tag::properties(). - */ - PropertyMap properties() const; - - /*! - * Implements the unified property interface -- import function. - * Forwards to Mod::Tag::setProperties(). - */ - PropertyMap setProperties(const PropertyMap &); - - /*! - * Returns the S3M::Properties for this file. If no audio properties - * were read then this will return a null pointer. - */ - S3M::Properties *audioProperties() const; - - /*! - * Save the file. - * This is the same as calling save(AllTags); - * - * \note Saving ScreamTracker III tags is not supported. - */ - bool save(); - - private: - File(const File &); - File &operator=(const File &); - - void read(bool readProperties); - - class FilePrivate; - FilePrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/s3m/s3mproperties.cpp b/platform/win32/msvc/external/taglib/taglib/s3m/s3mproperties.cpp deleted file mode 100644 index a1a010a39a5..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/s3m/s3mproperties.cpp +++ /dev/null @@ -1,204 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "s3mproperties.h" - -using namespace TagLib; -using namespace S3M; - -class S3M::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate() : - lengthInPatterns(0), - channels(0), - stereo(false), - sampleCount(0), - patternCount(0), - flags(0), - trackerVersion(0), - fileFormatVersion(0), - globalVolume(0), - masterVolume(0), - tempo(0), - bpmSpeed(0) - { - } - - ushort lengthInPatterns; - int channels; - bool stereo; - ushort sampleCount; - ushort patternCount; - ushort flags; - ushort trackerVersion; - ushort fileFormatVersion; - uchar globalVolume; - uchar masterVolume; - uchar tempo; - uchar bpmSpeed; -}; - -S3M::Properties::Properties(AudioProperties::ReadStyle propertiesStyle) : - AudioProperties(propertiesStyle), - d(new PropertiesPrivate) -{ -} - -S3M::Properties::~Properties() -{ - delete d; -} - -int S3M::Properties::length() const -{ - return 0; -} - -int S3M::Properties::bitrate() const -{ - return 0; -} - -int S3M::Properties::sampleRate() const -{ - return 0; -} - -int S3M::Properties::channels() const -{ - return d->channels; -} - -TagLib::ushort S3M::Properties::lengthInPatterns() const -{ - return d->lengthInPatterns; -} - -bool S3M::Properties::stereo() const -{ - return d->stereo; -} - -TagLib::ushort S3M::Properties::sampleCount() const -{ - return d->sampleCount; -} - -TagLib::ushort S3M::Properties::patternCount() const -{ - return d->patternCount; -} - -TagLib::ushort S3M::Properties::flags() const -{ - return d->flags; -} - -TagLib::ushort S3M::Properties::trackerVersion() const -{ - return d->trackerVersion; -} - -TagLib::ushort S3M::Properties::fileFormatVersion() const -{ - return d->fileFormatVersion; -} - -uchar S3M::Properties::globalVolume() const -{ - return d->globalVolume; -} - -uchar S3M::Properties::masterVolume() const -{ - return d->masterVolume; -} - -uchar S3M::Properties::tempo() const -{ - return d->tempo; -} - -uchar S3M::Properties::bpmSpeed() const -{ - return d->bpmSpeed; -} - -void S3M::Properties::setLengthInPatterns(ushort lengthInPatterns) -{ - d->lengthInPatterns = lengthInPatterns; -} - -void S3M::Properties::setChannels(int channels) -{ - d->channels = channels; -} - -void S3M::Properties::setStereo(bool stereo) -{ - d->stereo = stereo; -} - -void S3M::Properties::setSampleCount(ushort sampleCount) -{ - d->sampleCount = sampleCount; -} - -void S3M::Properties::setPatternCount(ushort patternCount) -{ - d->patternCount = patternCount; -} - -void S3M::Properties::setFlags(ushort flags) -{ - d->flags = flags; -} - -void S3M::Properties::setTrackerVersion(ushort trackerVersion) -{ - d->trackerVersion = trackerVersion; -} - -void S3M::Properties::setFileFormatVersion(ushort fileFormatVersion) -{ - d->fileFormatVersion = fileFormatVersion; -} - -void S3M::Properties::setGlobalVolume(uchar globalVolume) -{ - d->globalVolume = globalVolume; -} - -void S3M::Properties::setMasterVolume(uchar masterVolume) -{ - d->masterVolume = masterVolume; -} - -void S3M::Properties::setTempo(uchar tempo) -{ - d->tempo = tempo; -} - -void S3M::Properties::setBpmSpeed(uchar bpmSpeed) -{ - d->bpmSpeed = bpmSpeed; -} diff --git a/platform/win32/msvc/external/taglib/taglib/s3m/s3mproperties.h b/platform/win32/msvc/external/taglib/taglib/s3m/s3mproperties.h deleted file mode 100644 index 6e9f1d29381..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/s3m/s3mproperties.h +++ /dev/null @@ -1,88 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef TAGLIB_S3MPROPERTIES_H -#define TAGLIB_S3MPROPERTIES_H - -#include "taglib.h" -#include "audioproperties.h" - -namespace TagLib { - namespace S3M { - class TAGLIB_EXPORT Properties : public AudioProperties { - friend class File; - public: - /*! Flag bits. */ - enum { - ST2Vibrato = 1, - ST2Tempo = 2, - AmigaSlides = 4, - Vol0MixOptimizations = 8, - AmigaLimits = 16, - EnableFilter = 32, - CustomData = 128 - }; - - Properties(AudioProperties::ReadStyle propertiesStyle); - virtual ~Properties(); - - int length() const; - int bitrate() const; - int sampleRate() const; - int channels() const; - - ushort lengthInPatterns() const; - bool stereo() const; - ushort sampleCount() const; - ushort patternCount() const; - ushort flags() const; - ushort trackerVersion() const; - ushort fileFormatVersion() const; - uchar globalVolume() const; - uchar masterVolume() const; - uchar tempo() const; - uchar bpmSpeed() const; - - void setChannels(int channels); - - void setLengthInPatterns (ushort lengthInPatterns); - void setStereo (bool stereo); - void setSampleCount (ushort sampleCount); - void setPatternCount (ushort patternCount); - void setFlags (ushort flags); - void setTrackerVersion (ushort trackerVersion); - void setFileFormatVersion(ushort fileFormatVersion); - void setGlobalVolume (uchar globalVolume); - void setMasterVolume (uchar masterVolume); - void setTempo (uchar tempo); - void setBpmSpeed (uchar bpmSpeed); - - private: - Properties(const Properties&); - Properties &operator=(const Properties&); - - class PropertiesPrivate; - PropertiesPrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/tag.cpp b/platform/win32/msvc/external/taglib/taglib/tag.cpp deleted file mode 100644 index 676340817b4..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/tag.cpp +++ /dev/null @@ -1,180 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include "tag.h" -#include "tstringlist.h" -#include "tpropertymap.h" - -using namespace TagLib; - -class Tag::TagPrivate -{ - -}; - -Tag::Tag() -{ - -} - -Tag::~Tag() -{ - -} - -bool Tag::isEmpty() const -{ - return (title().isEmpty() && - artist().isEmpty() && - album().isEmpty() && - comment().isEmpty() && - genre().isEmpty() && - year() == 0 && - track() == 0); -} - -PropertyMap Tag::properties() const -{ - PropertyMap map; - if(!(title().isNull())) - map["TITLE"].append(title()); - if(!(artist().isNull())) - map["ARTIST"].append(artist()); - if(!(album().isNull())) - map["ALBUM"].append(album()); - if(!(comment().isNull())) - map["COMMENT"].append(comment()); - if(!(genre().isNull())) - map["GENRE"].append(genre()); - if(!(year() == 0)) - map["DATE"].append(String::number(year())); - if(!(track() == 0)) - map["TRACKNUMBER"].append(String::number(track())); - return map; -} - -void Tag::removeUnsupportedProperties(const StringList&) -{ -} - -PropertyMap Tag::setProperties(const PropertyMap &origProps) -{ - PropertyMap properties(origProps); - properties.removeEmpty(); - StringList oneValueSet; - // can this be simplified by using some preprocessor defines / function pointers? - if(properties.contains("TITLE")) { - setTitle(properties["TITLE"].front()); - oneValueSet.append("TITLE"); - } else - setTitle(String::null); - - if(properties.contains("ARTIST")) { - setArtist(properties["ARTIST"].front()); - oneValueSet.append("ARTIST"); - } else - setArtist(String::null); - - if(properties.contains("ALBUM")) { - setAlbum(properties["ALBUM"].front()); - oneValueSet.append("ALBUM"); - } else - setAlbum(String::null); - - if(properties.contains("COMMENT")) { - setComment(properties["COMMENT"].front()); - oneValueSet.append("COMMENT"); - } else - setComment(String::null); - - if(properties.contains("GENRE")) { - setGenre(properties["GENRE"].front()); - oneValueSet.append("GENRE"); - } else - setGenre(String::null); - - if(properties.contains("DATE")) { - bool ok; - int date = properties["DATE"].front().toInt(&ok); - if(ok) { - setYear(date); - oneValueSet.append("DATE"); - } else - setYear(0); - } - else - setYear(0); - - if(properties.contains("TRACKNUMBER")) { - bool ok; - int track = properties["TRACKNUMBER"].front().toInt(&ok); - if(ok) { - setTrack(track); - oneValueSet.append("TRACKNUMBER"); - } else - setTrack(0); - } - else - setYear(0); - - // for each tag that has been set above, remove the first entry in the corresponding - // value list. The others will be returned as unsupported by this format. - for(StringList::Iterator it = oneValueSet.begin(); it != oneValueSet.end(); ++it) { - if(properties[*it].size() == 1) - properties.erase(*it); - else - properties[*it].erase( properties[*it].begin() ); - } - return properties; -} - -void Tag::duplicate(const Tag *source, Tag *target, bool overwrite) // static -{ - if(overwrite) { - target->setTitle(source->title()); - target->setArtist(source->artist()); - target->setAlbum(source->album()); - target->setComment(source->comment()); - target->setGenre(source->genre()); - target->setYear(source->year()); - target->setTrack(source->track()); - } - else { - if(target->title().isEmpty()) - target->setTitle(source->title()); - if(target->artist().isEmpty()) - target->setArtist(source->artist()); - if(target->album().isEmpty()) - target->setAlbum(source->album()); - if(target->comment().isEmpty()) - target->setComment(source->comment()); - if(target->genre().isEmpty()) - target->setGenre(source->genre()); - if(target->year() <= 0) - target->setYear(source->year()); - if(target->track() <= 0) - target->setTrack(source->track()); - } -} diff --git a/platform/win32/msvc/external/taglib/taglib/tag.h b/platform/win32/msvc/external/taglib/taglib/tag.h deleted file mode 100644 index 76c9a82af1c..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/tag.h +++ /dev/null @@ -1,201 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_TAG_H -#define TAGLIB_TAG_H - -#include "taglib_export.h" -#include "tstring.h" - -namespace TagLib { - - //! A simple, generic interface to common audio meta data fields - - /*! - * This is an attempt to abstract away the difference in the meta data formats - * of various audio codecs and tagging schemes. As such it is generally a - * subset of what is available in the specific formats but should be suitable - * for most applications. This is meant to compliment the generic APIs found - * in TagLib::AudioProperties, TagLib::File and TagLib::FileRef. - */ - - class PropertyMap; - - class TAGLIB_EXPORT Tag - { - public: - - /*! - * Detroys this Tag instance. - */ - virtual ~Tag(); - - /*! - * Exports the tags of the file as dictionary mapping (human readable) tag - * names (Strings) to StringLists of tag values. - * The default implementation in this class considers only the usual built-in - * tags (artist, album, ...) and only one value per key. - */ - PropertyMap properties() const; - - /*! - * Removes unsupported properties, or a subset of them, from the tag. - * The parameter \a properties must contain only entries from - * properties().unsupportedData(). - * BIC: Will become virtual in future releases. Currently the non-virtual - * standard implementation of TagLib::Tag does nothing, since there are - * no unsupported elements. - */ - void removeUnsupportedProperties(const StringList& properties); - - /*! - * Sets the tags of this File to those specified in \a properties. This default - * implementation sets only the tags for which setter methods exist in this class - * (artist, album, ...), and only one value per key; the rest will be contained - * in the returned PropertyMap. - */ - PropertyMap setProperties(const PropertyMap &properties); - - /*! - * Returns the track name; if no track name is present in the tag - * String::null will be returned. - */ - virtual String title() const = 0; - - /*! - * Returns the artist name; if no artist name is present in the tag - * String::null will be returned. - */ - virtual String artist() const = 0; - - /*! - * Returns the album name; if no album name is present in the tag - * String::null will be returned. - */ - virtual String album() const = 0; - - /*! - * Returns the track comment; if no comment is present in the tag - * String::null will be returned. - */ - virtual String comment() const = 0; - - /*! - * Returns the genre name; if no genre is present in the tag String::null - * will be returned. - */ - virtual String genre() const = 0; - - /*! - * Returns the year; if there is no year set, this will return 0. - */ - virtual uint year() const = 0; - - /*! - * Returns the track number; if there is no track number set, this will - * return 0. - */ - virtual uint track() const = 0; - - /*! - * Sets the title to \a s. If \a s is String::null then this value will be - * cleared. - */ - virtual void setTitle(const String &s) = 0; - - /*! - * Sets the artist to \a s. If \a s is String::null then this value will be - * cleared. - */ - virtual void setArtist(const String &s) = 0; - - /*! - * Sets the album to \a s. If \a s is String::null then this value will be - * cleared. - */ - virtual void setAlbum(const String &s) = 0; - - /*! - * Sets the comment to \a s. If \a s is String::null then this value will be - * cleared. - */ - virtual void setComment(const String &s) = 0; - - /*! - * Sets the genre to \a s. If \a s is String::null then this value will be - * cleared. For tag formats that use a fixed set of genres, the appropriate - * value will be selected based on a string comparison. A list of available - * genres for those formats should be available in that type's - * implementation. - */ - virtual void setGenre(const String &s) = 0; - - /*! - * Sets the year to \a i. If \a s is 0 then this value will be cleared. - */ - virtual void setYear(uint i) = 0; - - /*! - * Sets the track to \a i. If \a s is 0 then this value will be cleared. - */ - virtual void setTrack(uint i) = 0; - - /*! - * Returns true if the tag does not contain any data. This should be - * reimplemented in subclasses that provide more than the basic tagging - * abilities in this class. - */ - virtual bool isEmpty() const; - - /*! - * Copies the generic data from one tag to another. - * - * \note This will no affect any of the lower level details of the tag. For - * instance if any of the tag type specific data (maybe a URL for a band) is - * set, this will not modify or copy that. This just copies using the API - * in this class. - * - * If \a overwrite is true then the values will be unconditionally copied. - * If false only empty values will be overwritten. - */ - static void duplicate(const Tag *source, Tag *target, bool overwrite = true); - - protected: - /*! - * Construct a Tag. This is protected since tags should only be instantiated - * through subclasses. - */ - Tag(); - - private: - Tag(const Tag &); - Tag &operator=(const Tag &); - - class TagPrivate; - TagPrivate *d; - }; -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/taglib_config.h.cmake b/platform/win32/msvc/external/taglib/taglib/taglib_config.h.cmake deleted file mode 100644 index 0f499e2c2de..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/taglib_config.h.cmake +++ /dev/null @@ -1,4 +0,0 @@ -/* taglib_config.h. Generated by cmake from taglib_config.h.cmake */ - -#define TAGLIB_WITH_ASF 1 -#define TAGLIB_WITH_MP4 1 diff --git a/platform/win32/msvc/external/taglib/taglib/taglib_export.h b/platform/win32/msvc/external/taglib/taglib/taglib_export.h deleted file mode 100644 index 3e868551710..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/taglib_export.h +++ /dev/null @@ -1,47 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_EXPORT_H -#define TAGLIB_EXPORT_H - -#if defined(TAGLIB_STATIC) -#define TAGLIB_EXPORT -#elif (defined(_WIN32) || defined(_WIN64)) -#ifdef MAKE_TAGLIB_LIB -#define TAGLIB_EXPORT __declspec(dllexport) -#else -#define TAGLIB_EXPORT __declspec(dllimport) -#endif -#elif defined(__GNUC__) && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 1) -#define TAGLIB_EXPORT __attribute__ ((visibility("default"))) -#else -#define TAGLIB_EXPORT -#endif - -#ifndef TAGLIB_NO_CONFIG -#include "taglib_config.h" -#endif - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/tagunion.cpp b/platform/win32/msvc/external/taglib/taglib/tagunion.cpp deleted file mode 100644 index 52d7136b464..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/tagunion.cpp +++ /dev/null @@ -1,186 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include "tagunion.h" -#include "tstringlist.h" - -using namespace TagLib; - -#define stringUnion(method) \ - if(tag(0) && !tag(0)->method().isEmpty()) \ - return tag(0)->method(); \ - if(tag(1) && !tag(1)->method().isEmpty()) \ - return tag(1)->method(); \ - if(tag(2) && !tag(2)->method().isEmpty()) \ - return tag(2)->method(); \ - return String::null \ - -#define numberUnion(method) \ - if(tag(0) && tag(0)->method() > 0) \ - return tag(0)->method(); \ - if(tag(1) && tag(1)->method() > 0) \ - return tag(1)->method(); \ - if(tag(2) && tag(2)->method() > 0) \ - return tag(2)->method(); \ - return 0 - -#define setUnion(method, value) \ - if(tag(0)) \ - tag(0)->set##method(value); \ - if(tag(1)) \ - tag(1)->set##method(value); \ - if(tag(2)) \ - tag(2)->set##method(value); \ - -class TagUnion::TagUnionPrivate -{ -public: - TagUnionPrivate() : tags(3, static_cast<Tag *>(0)) - { - - } - - ~TagUnionPrivate() - { - delete tags[0]; - delete tags[1]; - delete tags[2]; - } - - std::vector<Tag *> tags; -}; - -TagUnion::TagUnion(Tag *first, Tag *second, Tag *third) -{ - d = new TagUnionPrivate; - - d->tags[0] = first; - d->tags[1] = second; - d->tags[2] = third; -} - -TagUnion::~TagUnion() -{ - delete d; -} - -Tag *TagUnion::operator[](int index) const -{ - return tag(index); -} - -Tag *TagUnion::tag(int index) const -{ - return d->tags[index]; -} - -void TagUnion::set(int index, Tag *tag) -{ - delete d->tags[index]; - d->tags[index] = tag; -} - -String TagUnion::title() const -{ - stringUnion(title); -} - -String TagUnion::artist() const -{ - stringUnion(artist); -} - -String TagUnion::album() const -{ - stringUnion(album); -} - -String TagUnion::comment() const -{ - stringUnion(comment); -} - -String TagUnion::genre() const -{ - stringUnion(genre); -} - -TagLib::uint TagUnion::year() const -{ - numberUnion(year); -} - -TagLib::uint TagUnion::track() const -{ - numberUnion(track); -} - -void TagUnion::setTitle(const String &s) -{ - setUnion(Title, s); -} - -void TagUnion::setArtist(const String &s) -{ - setUnion(Artist, s); -} - -void TagUnion::setAlbum(const String &s) -{ - setUnion(Album, s); -} - -void TagUnion::setComment(const String &s) -{ - setUnion(Comment, s); -} - -void TagUnion::setGenre(const String &s) -{ - setUnion(Genre, s); -} - -void TagUnion::setYear(uint i) -{ - setUnion(Year, i); -} - -void TagUnion::setTrack(uint i) -{ - setUnion(Track, i); -} - -bool TagUnion::isEmpty() const -{ - if(d->tags[0] && !d->tags[0]->isEmpty()) - return false; - if(d->tags[1] && !d->tags[1]->isEmpty()) - return false; - if(d->tags[2] && !d->tags[2]->isEmpty()) - return false; - - return true; -} - diff --git a/platform/win32/msvc/external/taglib/taglib/tagunion.h b/platform/win32/msvc/external/taglib/taglib/tagunion.h deleted file mode 100644 index e94d523a3bd..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/tagunion.h +++ /dev/null @@ -1,95 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_TAGUNION_H -#define TAGLIB_TAGUNION_H - -#include "tag.h" - -#ifndef DO_NOT_DOCUMENT - -namespace TagLib { - - /*! - * \internal - */ - - class TagUnion : public Tag - { - public: - - enum AccessType { Read, Write }; - - /*! - * Creates a TagLib::Tag that is the union of \a first, \a second, and - * \a third. The TagUnion takes ownership of these tags and will handle - * their deletion. - */ - TagUnion(Tag *first = 0, Tag *second = 0, Tag *third = 0); - - virtual ~TagUnion(); - - Tag *operator[](int index) const; - Tag *tag(int index) const; - - void set(int index, Tag *tag); - - virtual String title() const; - virtual String artist() const; - virtual String album() const; - virtual String comment() const; - virtual String genre() const; - virtual uint year() const; - virtual uint track() const; - - virtual void setTitle(const String &s); - virtual void setArtist(const String &s); - virtual void setAlbum(const String &s); - virtual void setComment(const String &s); - virtual void setGenre(const String &s); - virtual void setYear(uint i); - virtual void setTrack(uint i); - virtual bool isEmpty() const; - - template <class T> T *access(int index, bool create) - { - if(!create || tag(index)) - return static_cast<T *>(tag(index)); - - set(index, new T); - return static_cast<T *>(tag(index)); - } - - private: - TagUnion(const Tag &); - TagUnion &operator=(const Tag &); - - class TagUnionPrivate; - TagUnionPrivate *d; - }; -} - -#endif -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/taglib.h b/platform/win32/msvc/external/taglib/taglib/toolkit/taglib.h deleted file mode 100644 index dda9c83c2ff..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/taglib.h +++ /dev/null @@ -1,226 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_H -#define TAGLIB_H - -#define TAGLIB_MAJOR_VERSION 1 -#define TAGLIB_MINOR_VERSION 7 -#define TAGLIB_PATCH_VERSION 0 - -#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 1)) -#define TAGLIB_IGNORE_MISSING_DESTRUCTOR _Pragma("GCC diagnostic ignored \"-Wnon-virtual-dtor\"") -#else -#define TAGLIB_IGNORE_MISSING_DESTRUCTOR -#endif - -#if (defined(_MSC_VER) && _MSC_VER >= 1600) -#define TAGLIB_CONSTRUCT_BITSET(x) static_cast<unsigned long long>(x) -#else -#define TAGLIB_CONSTRUCT_BITSET(x) static_cast<unsigned long>(x) -#endif - -#include <string> - -#ifdef __APPLE__ -# include <libkern/OSAtomic.h> -# define TAGLIB_ATOMIC_MAC -#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) -# define NOMINMAX -# include <windows.h> -# define TAGLIB_ATOMIC_WIN -#elif defined (__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 401) \ - && (defined(__i386__) || defined(__i486__) || defined(__i586__) || \ - defined(__i686__) || defined(__x86_64) || defined(__ia64)) \ - && !defined(__INTEL_COMPILER) -# define TAGLIB_ATOMIC_GCC -#elif defined(__ia64) && defined(__INTEL_COMPILER) -# include <ia64intrin.h> -# define TAGLIB_ATOMIC_GCC -#endif - -//! A namespace for all TagLib related classes and functions - -/*! - * This namespace contains everything in TagLib. For projects working with - * TagLib extensively it may be convenient to add a - * \code - * using namespace TagLib; - * \endcode - */ - -namespace TagLib { - - class String; - - typedef wchar_t wchar; - typedef unsigned char uchar; - typedef unsigned short ushort; - typedef unsigned int uint; - typedef unsigned long ulong; - - /*! - * Unfortunately std::wstring isn't defined on some systems, (i.e. GCC < 3) - * so I'm providing something here that should be constant. - */ - typedef std::basic_string<wchar> wstring; - -#ifndef DO_NOT_DOCUMENT // Tell Doxygen to skip this class. - /*! - * \internal - * This is just used as a base class for shared classes in TagLib. - * - * \warning This <b>is not</b> part of the TagLib public API! - */ - - class RefCounter - { - public: - RefCounter() : refCount(1) {} - -#ifdef TAGLIB_ATOMIC_MAC - void ref() { OSAtomicIncrement32Barrier(const_cast<int32_t*>(&refCount)); } - bool deref() { return ! OSAtomicDecrement32Barrier(const_cast<int32_t*>(&refCount)); } - int32_t count() { return refCount; } - private: - volatile int32_t refCount; -#elif defined(TAGLIB_ATOMIC_WIN) - void ref() { InterlockedIncrement(&refCount); } - bool deref() { return ! InterlockedDecrement(&refCount); } - long count() { return refCount; } - private: - volatile long refCount; -#elif defined(TAGLIB_ATOMIC_GCC) - void ref() { __sync_add_and_fetch(&refCount, 1); } - bool deref() { return ! __sync_sub_and_fetch(&refCount, 1); } - int count() { return refCount; } - private: - volatile int refCount; -#else - void ref() { refCount++; } - bool deref() { return ! --refCount; } - int count() { return refCount; } - private: - uint refCount; -#endif - - }; - -#endif // DO_NOT_DOCUMENT - -} - -/*! - * \mainpage TagLib - * - * \section intro Introduction - * - * TagLib is a library for reading and editing audio meta data, commonly know as \e tags. - * - * Features: - * - A clean, high level, C++ API to handling audio meta data. - * - Format specific APIs for advanced API users. - * - ID3v1, ID3v2, APE, FLAC, Xiph, iTunes-style MP4 and WMA tag formats. - * - MP3, MPC, FLAC, MP4, ASF, AIFF, WAV, TrueAudio, WavPack, Ogg FLAC, Ogg Vorbis and Speex file formats. - * - Basic audio file properties such as length, sample rate, etc. - * - Long term binary and source compatibility. - * - Extensible design, notably the ability to add other formats or extend current formats as a library user. - * - Full support for unicode and internationalized tags. - * - Dual <a href="http://www.mozilla.org/MPL/MPL-1.1.html">MPL</a> and - * <a href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html">LGPL</a> licenses. - * - No external toolkit dependancies. - * - * \section why Why TagLib? - * - * TagLib originally was written to provide an updated and improved ID3v2 implementation in C++ for use - * in a variety of Open Source projects. Since development began in 2002 and the 1.0 release in 2004 - * it has expanded to cover a wide variety of tag and file formats and is used in a wide variety of - * Open Source and proprietary applications. It now supports a variety of UNIXes, including Apple's OS - * X, as well as Microsoft Windows. - * - * \section commercial Usage in Commercial Applications - * - * TagLib's licenses \e do allow usage within propriety (\e closed) applications, however TagLib is \e not - * public domain. Please note the requirements of the LGPL or MPL, and adhere to at least one of them. - * In simple terms, you must at a minimum note your usage of TagLib, note the licensing terms of TagLib and - * if you make changes to TagLib publish them. Please review the licenses above before using TagLib in your - * software. Note that you may choose either the MPL or the LGPL, you do not have to fulfill the - * requirements of both. - * - * \section installing Installing TagLib - * - * Please see the <a href="http://developer.kde.org/~wheeler/taglib.html">TagLib website</a> for the latest - * downloads. - * - * TagLib can be built using the CMake build system. TagLib installs a taglib-config and pkg-config file to - * make it easier to integrate into various build systems. Note that TagLib's include install directory \e must - * be included in the header include path. Simply adding <taglib/tag.h> will \e not work. - * - * \section start Getting Started - * - * TagLib provides both simple, abstract APIs which make it possible to ignore the differences between tagging - * formats and format specific APIs which allow programmers to work with the features of specific tagging - * schemes. There is a similar abstraction mechanism for AudioProperties. - * - * The best place to start is with the <b>Class Hierarchy</b> linked at the top of the page. The File and - * AudioProperties classes and their subclasses are the core of TagLib. The FileRef class is also a convenient - * way for using a value-based handle. - * - * \note When working with FileRef please consider that it has only the most basic (extension-based) file - * type resolution. Please see its documentation on how to plug in more advanced file type resolution. (Such - * resolution may be part of later TagLib releases by default.) - * - * Here's a very simple example with TagLib: - * - * \code - * - * TagLib::FileRef f("Latex Solar Beef.mp3"); - * TagLib::String artist = f.tag()->artist(); // artist == "Frank Zappa" - * - * f.tag()->setAlbum("Fillmore East"); - * f.save(); - * - * TagLib::FileRef g("Free City Rhymes.ogg"); - * TagLib::String album = g.tag()->album(); // album == "NYC Ghosts & Flowers" - * - * g.tag()->setTrack(1); - * g.save(); - * - * \endcode - * - * More examples can be found in the \e examples directory of the source distribution. - * - * \section Contact - * - * Questions about TagLib should be directed to the TagLib mailing list, not directly to the author. - * - * - <a href="http://developer.kde.org/~wheeler/taglib/">TagLib Homepage</a> - * - <a href="https://mail.kde.org/mailman/listinfo/taglib-devel">TagLib Mailing List (taglib-devel@kde.org)</a> - * - * \author Scott Wheeler <wheeler@kde.org> et al. - * - */ - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tbytevector.cpp b/platform/win32/msvc/external/taglib/taglib/toolkit/tbytevector.cpp deleted file mode 100644 index 59e3a9ed30a..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tbytevector.cpp +++ /dev/null @@ -1,732 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <iostream> - -#include <tstring.h> -#include <tdebug.h> - -#include <string.h> - -#include "tbytevector.h" - -// This is a bit ugly to keep writing over and over again. - -// A rather obscure feature of the C++ spec that I hadn't thought of that makes -// working with C libs much more effecient. There's more here: -// -// http://www.informit.com/isapi/product_id~{9C84DAB4-FE6E-49C5-BB0A-FB50331233EA}/content/index.asp - -#define DATA(x) (&(x->data[0])) - -namespace TagLib { - static const char hexTable[17] = "0123456789abcdef"; - - static const uint crcTable[256] = { - 0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b, - 0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61, - 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, 0x4c11db70, 0x48d0c6c7, - 0x4593e01e, 0x4152fda9, 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75, - 0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, - 0x709f7b7a, 0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039, - 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58, 0xbaea46ef, - 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d, - 0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, 0xc7361b4c, 0xc3f706fb, - 0xceb42022, 0xca753d95, 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, - 0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0, - 0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072, - 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x018aeb13, 0x054bf6a4, - 0x0808d07d, 0x0cc9cdca, 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde, - 0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08, - 0x571d7dd1, 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba, - 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b, 0xbb60adfc, - 0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6, - 0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, 0xe0b41de7, 0xe4750050, - 0xe9362689, 0xedf73b3e, 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, - 0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34, - 0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637, - 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, 0x4f040d56, 0x4bc510e1, - 0x46863638, 0x42472b8f, 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53, - 0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, - 0x3f9b762c, 0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff, - 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e, 0xf5ee4bb9, - 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b, - 0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, - 0xcda1f604, 0xc960ebb3, 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, - 0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71, - 0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3, - 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, 0x4e8ee645, 0x4a4ffbf2, - 0x470cdd2b, 0x43cdc09c, 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8, - 0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e, - 0x18197087, 0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec, - 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d, 0x2056cd3a, - 0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0, - 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, 0xe3a1cbc1, 0xe760d676, - 0xea23f0af, 0xeee2ed18, 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, - 0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662, - 0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668, - 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4 - }; - - /*! - * A templatized KMP find that works both with a ByteVector and a ByteVectorMirror. - */ - - template <class Vector> - int vectorFind(const Vector &v, const Vector &pattern, uint offset, int byteAlign) - { - if(pattern.size() > v.size() || offset > v.size() - 1) - return -1; - - // Let's go ahead and special case a pattern of size one since that's common - // and easy to make fast. - - if(pattern.size() == 1) { - char p = pattern[0]; - for(uint i = offset; i < v.size(); i++) { - if(v[i] == p && (i - offset) % byteAlign == 0) - return i; - } - return -1; - } - - uchar lastOccurrence[256]; - - for(uint i = 0; i < 256; ++i) - lastOccurrence[i] = uchar(pattern.size()); - - for(uint i = 0; i < pattern.size() - 1; ++i) - lastOccurrence[uchar(pattern[i])] = uchar(pattern.size() - i - 1); - - for(uint i = pattern.size() - 1 + offset; i < v.size(); i += lastOccurrence[uchar(v.at(i))]) { - int iBuffer = i; - int iPattern = pattern.size() - 1; - - while(iPattern >= 0 && v.at(iBuffer) == pattern[iPattern]) { - --iBuffer; - --iPattern; - } - - if(-1 == iPattern && (iBuffer + 1 - offset) % byteAlign == 0) - return iBuffer + 1; - } - - return -1; - } - - /*! - * Wraps the accessors to a ByteVector to make the search algorithm access the - * elements in reverse. - * - * \see vectorFind() - * \see ByteVector::rfind() - */ - - class ByteVectorMirror - { - public: - ByteVectorMirror(const ByteVector &source) : v(source) {} - - char operator[](int index) const - { - return v[v.size() - index - 1]; - } - - char at(int index) const - { - return v.at(v.size() - index - 1); - } - - ByteVectorMirror mid(uint index, uint length = 0xffffffff) const - { - return length == 0xffffffff ? v.mid(0, index) : v.mid(index - length, length); - } - - uint size() const - { - return v.size(); - } - - int find(const ByteVectorMirror &pattern, uint offset = 0, int byteAlign = 1) const - { - ByteVectorMirror v(*this); - - if(offset > 0) { - offset = size() - offset - pattern.size(); - if(offset >= size()) - offset = 0; - } - - const int pos = vectorFind<ByteVectorMirror>(v, pattern, offset, byteAlign); - - // If the offset is zero then we need to adjust the location in the search - // to be appropriately reversed. If not we need to account for the fact - // that the recursive call (called from the above line) has already ajusted - // for this but that the normal templatized find above will add the offset - // to the returned value. - // - // This is a little confusing at first if you don't first stop to think - // through the logic involved in the forward search. - - if(pos == -1) - return -1; - - return size() - pos - pattern.size(); - } - - private: - const ByteVector &v; - }; - - template <class T> - T toNumber(const std::vector<char> &data, bool mostSignificantByteFirst) - { - T sum = 0; - - if(data.size() <= 0) { - debug("ByteVectorMirror::toNumber<T>() -- data is empty, returning 0"); - return sum; - } - - uint size = sizeof(T); - uint last = data.size() > size ? size - 1 : data.size() - 1; - - for(uint i = 0; i <= last; i++) - sum |= (T) uchar(data[i]) << ((mostSignificantByteFirst ? last - i : i) * 8); - - return sum; - } - - template <class T> - ByteVector fromNumber(T value, bool mostSignificantByteFirst) - { - int size = sizeof(T); - - ByteVector v(size, 0); - - for(int i = 0; i < size; i++) - v[i] = uchar(value >> ((mostSignificantByteFirst ? size - 1 - i : i) * 8) & 0xff); - - return v; - } -} - -using namespace TagLib; - -class ByteVector::ByteVectorPrivate : public RefCounter -{ -public: - ByteVectorPrivate() : RefCounter(), size(0) {} - ByteVectorPrivate(const std::vector<char> &v) : RefCounter(), data(v), size(v.size()) {} - ByteVectorPrivate(TagLib::uint len, char value) : RefCounter(), data(len, value), size(len) {} - - std::vector<char> data; - - // std::vector<T>::size() is very slow, so we'll cache the value - - uint size; -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -ByteVector ByteVector::null; - -ByteVector ByteVector::fromCString(const char *s, uint length) -{ - ByteVector v; - - if(length == 0xffffffff) - v.setData(s); - else - v.setData(s, length); - - return v; -} - -ByteVector ByteVector::fromUInt(uint value, bool mostSignificantByteFirst) -{ - return fromNumber<uint>(value, mostSignificantByteFirst); -} - -ByteVector ByteVector::fromShort(short value, bool mostSignificantByteFirst) -{ - return fromNumber<short>(value, mostSignificantByteFirst); -} - -ByteVector ByteVector::fromLongLong(long long value, bool mostSignificantByteFirst) -{ - return fromNumber<long long>(value, mostSignificantByteFirst); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -ByteVector::ByteVector() -{ - d = new ByteVectorPrivate; -} - -ByteVector::ByteVector(uint size, char value) -{ - d = new ByteVectorPrivate(size, value); -} - -ByteVector::ByteVector(const ByteVector &v) : d(v.d) -{ - d->ref(); -} - -ByteVector::ByteVector(char c) -{ - d = new ByteVectorPrivate; - d->data.push_back(c); - d->size = 1; -} - -ByteVector::ByteVector(const char *data, uint length) -{ - d = new ByteVectorPrivate; - setData(data, length); -} - -ByteVector::ByteVector(const char *data) -{ - d = new ByteVectorPrivate; - setData(data); -} - -ByteVector::~ByteVector() -{ - if(d->deref()) - delete d; -} - -ByteVector &ByteVector::setData(const char *data, uint length) -{ - detach(); - - resize(length); - - if(length > 0) - ::memcpy(DATA(d), data, length); - - return *this; -} - -ByteVector &ByteVector::setData(const char *data) -{ - return setData(data, ::strlen(data)); -} - -char *ByteVector::data() -{ - detach(); - return size() > 0 ? DATA(d) : 0; -} - -const char *ByteVector::data() const -{ - return size() > 0 ? DATA(d) : 0; -} - -ByteVector ByteVector::mid(uint index, uint length) const -{ - ByteVector v; - - if(index > size()) - return v; - - ConstIterator endIt; - - if(length < size() - index) - endIt = d->data.begin() + index + length; - else - endIt = d->data.end(); - - v.d->data.insert(v.d->data.begin(), ConstIterator(d->data.begin() + index), endIt); - v.d->size = v.d->data.size(); - - return v; -} - -char ByteVector::at(uint index) const -{ - return index < size() ? d->data[index] : 0; -} - -int ByteVector::find(const ByteVector &pattern, uint offset, int byteAlign) const -{ - return vectorFind<ByteVector>(*this, pattern, offset, byteAlign); -} - -int ByteVector::rfind(const ByteVector &pattern, uint offset, int byteAlign) const -{ - // Ok, this is a little goofy, but pretty cool after it sinks in. Instead of - // reversing the find method's Boyer-Moore search algorithm I created a "mirror" - // for a ByteVector to reverse the behavior of the accessors. - - ByteVectorMirror v(*this); - ByteVectorMirror p(pattern); - - return v.find(p, offset, byteAlign); -} - -bool ByteVector::containsAt(const ByteVector &pattern, uint offset, uint patternOffset, uint patternLength) const -{ - if(pattern.size() < patternLength) - patternLength = pattern.size(); - - // do some sanity checking -- all of these things are needed for the search to be valid - - if(patternLength > size() || offset >= size() || patternOffset >= pattern.size() || patternLength == 0) - return false; - - // loop through looking for a mismatch - - for(uint i = 0; i < patternLength - patternOffset; i++) { - if(at(i + offset) != pattern[i + patternOffset]) - return false; - } - - return true; -} - -bool ByteVector::startsWith(const ByteVector &pattern) const -{ - return containsAt(pattern, 0); -} - -bool ByteVector::endsWith(const ByteVector &pattern) const -{ - return containsAt(pattern, size() - pattern.size()); -} - -ByteVector &ByteVector::replace(const ByteVector &pattern, const ByteVector &with) -{ - if(pattern.size() == 0 || pattern.size() > size()) - return *this; - - const uint withSize = with.size(); - const uint patternSize = pattern.size(); - int offset = 0; - - if(withSize == patternSize) { - // I think this case might be common enough to optimize it - detach(); - offset = find(pattern); - while(offset >= 0) { - ::memcpy(data() + offset, with.data(), withSize); - offset = find(pattern, offset + withSize); - } - return *this; - } - - // calculate new size: - uint newSize = 0; - for(;;) { - int next = find(pattern, offset); - if(next < 0) { - if(offset == 0) - // pattern not found, do nothing: - return *this; - newSize += size() - offset; - break; - } - newSize += (next - offset) + withSize; - offset = next + patternSize; - } - - // new private data of appropriate size: - ByteVectorPrivate *newData = new ByteVectorPrivate(newSize, 0); - char *target = DATA(newData); - const char *source = data(); - - // copy modified data into new private data: - offset = 0; - for(;;) { - int next = find(pattern, offset); - if(next < 0) { - ::memcpy(target, source + offset, size() - offset); - break; - } - int chunkSize = next - offset; - ::memcpy(target, source + offset, chunkSize); - target += chunkSize; - ::memcpy(target, with.data(), withSize); - target += withSize; - offset += chunkSize + patternSize; - } - - // replace private data: - if(d->deref()) - delete d; - - d = newData; - - return *this; -} - -int ByteVector::endsWithPartialMatch(const ByteVector &pattern) const -{ - if(pattern.size() > size()) - return -1; - - const int startIndex = size() - pattern.size(); - - // try to match the last n-1 bytes from the vector (where n is the pattern - // size) -- continue trying to match n-2, n-3...1 bytes - - for(uint i = 1; i < pattern.size(); i++) { - if(containsAt(pattern, startIndex + i, 0, pattern.size() - i)) - return startIndex + i; - } - - return -1; -} - -ByteVector &ByteVector::append(const ByteVector &v) -{ - if(v.d->size == 0) - return *this; // Simply return if appending nothing. - - detach(); - - uint originalSize = d->size; - resize(d->size + v.d->size); - ::memcpy(DATA(d) + originalSize, DATA(v.d), v.size()); - - return *this; -} - -ByteVector &ByteVector::clear() -{ - detach(); - d->data.clear(); - d->size = 0; - - return *this; -} - -TagLib::uint ByteVector::size() const -{ - return d->size; -} - -ByteVector &ByteVector::resize(uint size, char padding) -{ - if(d->size < size) { - d->data.reserve(size); - d->data.insert(d->data.end(), size - d->size, padding); - } - else - d->data.erase(d->data.begin() + size, d->data.end()); - - d->size = size; - - return *this; -} - -ByteVector::Iterator ByteVector::begin() -{ - return d->data.begin(); -} - -ByteVector::ConstIterator ByteVector::begin() const -{ - return d->data.begin(); -} - -ByteVector::Iterator ByteVector::end() -{ - return d->data.end(); -} - -ByteVector::ConstIterator ByteVector::end() const -{ - return d->data.end(); -} - -bool ByteVector::isNull() const -{ - return d == null.d; -} - -bool ByteVector::isEmpty() const -{ - return d->data.size() == 0; -} - -TagLib::uint ByteVector::checksum() const -{ - uint sum = 0; - for(ByteVector::ConstIterator it = begin(); it != end(); ++it) - sum = (sum << 8) ^ crcTable[((sum >> 24) & 0xff) ^ uchar(*it)]; - return sum; -} - -TagLib::uint ByteVector::toUInt(bool mostSignificantByteFirst) const -{ - return toNumber<uint>(d->data, mostSignificantByteFirst); -} - -short ByteVector::toShort(bool mostSignificantByteFirst) const -{ - return toNumber<unsigned short>(d->data, mostSignificantByteFirst); -} - -unsigned short ByteVector::toUShort(bool mostSignificantByteFirst) const -{ - return toNumber<unsigned short>(d->data, mostSignificantByteFirst); -} - -long long ByteVector::toLongLong(bool mostSignificantByteFirst) const -{ - return toNumber<unsigned long long>(d->data, mostSignificantByteFirst); -} - -const char &ByteVector::operator[](int index) const -{ - return d->data[index]; -} - -char &ByteVector::operator[](int index) -{ - detach(); - - return d->data[index]; -} - -bool ByteVector::operator==(const ByteVector &v) const -{ - if(d->size != v.d->size) - return false; - - return ::memcmp(data(), v.data(), size()) == 0; -} - -bool ByteVector::operator!=(const ByteVector &v) const -{ - return !operator==(v); -} - -bool ByteVector::operator==(const char *s) const -{ - if(d->size != ::strlen(s)) - return false; - - return ::memcmp(data(), s, d->size) == 0; -} - -bool ByteVector::operator!=(const char *s) const -{ - return !operator==(s); -} - -bool ByteVector::operator<(const ByteVector &v) const -{ - int result = ::memcmp(data(), v.data(), d->size < v.d->size ? d->size : v.d->size); - - if(result != 0) - return result < 0; - else - return size() < v.size(); -} - -bool ByteVector::operator>(const ByteVector &v) const -{ - return v < *this; -} - -ByteVector ByteVector::operator+(const ByteVector &v) const -{ - ByteVector sum(*this); - sum.append(v); - return sum; -} - -ByteVector &ByteVector::operator=(const ByteVector &v) -{ - if(&v == this) - return *this; - - if(d->deref()) - delete d; - - d = v.d; - d->ref(); - return *this; -} - -ByteVector &ByteVector::operator=(char c) -{ - *this = ByteVector(c); - return *this; -} - -ByteVector &ByteVector::operator=(const char *data) -{ - *this = ByteVector(data); - return *this; -} - -ByteVector ByteVector::toHex() const -{ - ByteVector encoded(size() * 2); - - uint j = 0; - for(uint i = 0; i < size(); i++) { - unsigned char c = d->data[i]; - encoded[j++] = hexTable[(c >> 4) & 0x0F]; - encoded[j++] = hexTable[(c ) & 0x0F]; - } - - return encoded; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void ByteVector::detach() -{ - if(d->count() > 1) { - d->deref(); - d = new ByteVectorPrivate(d->data); - } -} - -//////////////////////////////////////////////////////////////////////////////// -// related functions -//////////////////////////////////////////////////////////////////////////////// - -std::ostream &operator<<(std::ostream &s, const ByteVector &v) -{ - for(TagLib::uint i = 0; i < v.size(); i++) - s << v[i]; - return s; -} diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tbytevector.h b/platform/win32/msvc/external/taglib/taglib/toolkit/tbytevector.h deleted file mode 100644 index 0c58326300d..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tbytevector.h +++ /dev/null @@ -1,425 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_BYTEVECTOR_H -#define TAGLIB_BYTEVECTOR_H - -#include "taglib.h" -#include "taglib_export.h" - -#include <vector> -#include <iostream> - -namespace TagLib { - - //! A byte vector - - /*! - * This class provides a byte vector with some methods that are useful for - * tagging purposes. Many of the search functions are tailored to what is - * useful for finding tag related paterns in a data array. - */ - - class TAGLIB_EXPORT ByteVector - { - public: -#ifndef DO_NOT_DOCUMENT - typedef std::vector<char>::iterator Iterator; - typedef std::vector<char>::const_iterator ConstIterator; -#endif - - /*! - * Constructs an empty byte vector. - */ - ByteVector(); - - /*! - * Construct a vector of size \a size with all values set to \a value by - * default. - */ - ByteVector(uint size, char value = 0); - - /*! - * Contructs a byte vector that is a copy of \a v. - */ - ByteVector(const ByteVector &v); - - /*! - * Contructs a byte vector that contains \a c. - */ - ByteVector(char c); - - /*! - * Constructs a byte vector that copies \a data for up to \a length bytes. - */ - ByteVector(const char *data, uint length); - - /*! - * Constructs a byte vector that copies \a data up to the first null - * byte. The behavior is undefined if \a data is not null terminated. - * This is particularly useful for constructing byte arrays from string - * constants. - */ - ByteVector(const char *data); - - /*! - * Destroys this ByteVector instance. - */ - virtual ~ByteVector(); - - /*! - * Sets the data for the byte array using the first \a length bytes of \a data - */ - ByteVector &setData(const char *data, uint length); - - /*! - * Sets the data for the byte array copies \a data up to the first null - * byte. The behavior is undefined if \a data is not null terminated. - */ - ByteVector &setData(const char *data); - - /*! - * Returns a pointer to the internal data structure. - * - * \warning Care should be taken when modifying this data structure as it is - * easy to corrupt the ByteVector when doing so. Specifically, while the - * data may be changed, its length may not be. - */ - char *data(); - - /*! - * Returns a pointer to the internal data structure which may not be modified. - */ - const char *data() const; - - /*! - * Returns a byte vector made up of the bytes starting at \a index and - * for \a length bytes. If \a length is not specified it will return the bytes - * from \a index to the end of the vector. - */ - ByteVector mid(uint index, uint length = 0xffffffff) const; - - /*! - * This essentially performs the same as operator[](), but instead of causing - * a runtime error if the index is out of bounds, it will return a null byte. - */ - char at(uint index) const; - - /*! - * Searches the ByteVector for \a pattern starting at \a offset and returns - * the offset. Returns -1 if the pattern was not found. If \a byteAlign is - * specified the pattern will only be matched if it starts on a byte divisible - * by \a byteAlign (starting from \a offset). - */ - int find(const ByteVector &pattern, uint offset = 0, int byteAlign = 1) const; - - /*! - * Searches the ByteVector for \a pattern starting from either the end of the - * vector or \a offset and returns the offset. Returns -1 if the pattern was - * not found. If \a byteAlign is specified the pattern will only be matched - * if it starts on a byte divisible by \a byteAlign (starting from \a offset). - */ - int rfind(const ByteVector &pattern, uint offset = 0, int byteAlign = 1) const; - - /*! - * Checks to see if the vector contains the \a pattern starting at position - * \a offset. Optionally, if you only want to search for part of the pattern - * you can specify an offset within the pattern to start from. Also, you can - * specify to only check for the first \a patternLength bytes of \a pattern with - * the \a patternLength argument. - */ - bool containsAt(const ByteVector &pattern, uint offset, uint patternOffset = 0, uint patternLength = 0xffffffff) const; - - /*! - * Returns true if the vector starts with \a pattern. - */ - bool startsWith(const ByteVector &pattern) const; - - /*! - * Returns true if the vector ends with \a pattern. - */ - bool endsWith(const ByteVector &pattern) const; - - /*! - * Replaces \a pattern with \a with and returns a reference to the ByteVector - * after the operation. This \e does modify the vector. - */ - ByteVector &replace(const ByteVector &pattern, const ByteVector &with); - - /*! - * Checks for a partial match of \a pattern at the end of the vector. It - * returns the offset of the partial match within the vector, or -1 if the - * pattern is not found. This method is particularly useful when searching for - * patterns that start in one vector and end in another. When combined with - * startsWith() it can be used to find a pattern that overlaps two buffers. - * - * \note This will not match the complete pattern at the end of the string; use - * endsWith() for that. - */ - int endsWithPartialMatch(const ByteVector &pattern) const; - - /*! - * Appends \a v to the end of the ByteVector. - */ - ByteVector &append(const ByteVector &v); - - /*! - * Clears the data. - */ - ByteVector &clear(); - - /*! - * Returns the size of the array. - */ - uint size() const; - - /*! - * Resize the vector to \a size. If the vector is currently less than - * \a size, pad the remaining spaces with \a padding. Returns a reference - * to the resized vector. - */ - ByteVector &resize(uint size, char padding = 0); - - /*! - * Returns an Iterator that points to the front of the vector. - */ - Iterator begin(); - - /*! - * Returns a ConstIterator that points to the front of the vector. - */ - ConstIterator begin() const; - - /*! - * Returns an Iterator that points to the back of the vector. - */ - Iterator end(); - - /*! - * Returns a ConstIterator that points to the back of the vector. - */ - ConstIterator end() const; - - /*! - * Returns true if the vector is null. - * - * \note A vector may be empty without being null. - * \see isEmpty() - */ - bool isNull() const; - - /*! - * Returns true if the ByteVector is empty. - * - * \see size() - * \see isNull() - */ - bool isEmpty() const; - - /*! - * Returns a CRC checksum of the byte vector's data. - */ - uint checksum() const; - - /*! - * Converts the first 4 bytes of the vector to an unsigned integer. - * - * If \a mostSignificantByteFirst is true this will operate left to right - * evaluating the integer. For example if \a mostSignificantByteFirst is - * true then $00 $00 $00 $01 == 0x00000001 == 1, if false, $01 00 00 00 == - * 0x01000000 == 1. - * - * \see fromUInt() - */ - uint toUInt(bool mostSignificantByteFirst = true) const; - - /*! - * Converts the first 2 bytes of the vector to a short. - * - * If \a mostSignificantByteFirst is true this will operate left to right - * evaluating the integer. For example if \a mostSignificantByteFirst is - * true then $00 $01 == 0x0001 == 1, if false, $01 00 == 0x01000000 == 1. - * - * \see fromShort() - */ - short toShort(bool mostSignificantByteFirst = true) const; - - /*! - * Converts the first 2 bytes of the vector to a unsigned short. - * - * If \a mostSignificantByteFirst is true this will operate left to right - * evaluating the integer. For example if \a mostSignificantByteFirst is - * true then $00 $01 == 0x0001 == 1, if false, $01 00 == 0x01000000 == 1. - * - * \see fromShort() - */ - unsigned short toUShort(bool mostSignificantByteFirst = true) const; - - /*! - * Converts the first 8 bytes of the vector to a (signed) long long. - * - * If \a mostSignificantByteFirst is true this will operate left to right - * evaluating the integer. For example if \a mostSignificantByteFirst is - * true then $00 00 00 00 00 00 00 01 == 0x0000000000000001 == 1, - * if false, $01 00 00 00 00 00 00 00 == 0x0100000000000000 == 1. - * - * \see fromUInt() - */ - long long toLongLong(bool mostSignificantByteFirst = true) const; - - /*! - * Creates a 4 byte ByteVector based on \a value. If - * \a mostSignificantByteFirst is true, then this will operate left to right - * in building the ByteVector. For example if \a mostSignificantByteFirst is - * true then $00 00 00 01 == 0x00000001 == 1, if false, $01 00 00 00 == - * 0x01000000 == 1. - * - * \see toUInt() - */ - static ByteVector fromUInt(uint value, bool mostSignificantByteFirst = true); - - /*! - * Creates a 2 byte ByteVector based on \a value. If - * \a mostSignificantByteFirst is true, then this will operate left to right - * in building the ByteVector. For example if \a mostSignificantByteFirst is - * true then $00 01 == 0x0001 == 1, if false, $01 00 == 0x0100 == 1. - * - * \see toShort() - */ - static ByteVector fromShort(short value, bool mostSignificantByteFirst = true); - - /*! - * Creates a 8 byte ByteVector based on \a value. If - * \a mostSignificantByteFirst is true, then this will operate left to right - * in building the ByteVector. For example if \a mostSignificantByteFirst is - * true then $00 00 00 01 == 0x0000000000000001 == 1, if false, - * $01 00 00 00 00 00 00 00 == 0x0100000000000000 == 1. - * - * \see toLongLong() - */ - static ByteVector fromLongLong(long long value, bool mostSignificantByteFirst = true); - - /*! - * Returns a ByteVector based on the CString \a s. - */ - static ByteVector fromCString(const char *s, uint length = 0xffffffff); - - /*! - * Returns a const refernence to the byte at \a index. - */ - const char &operator[](int index) const; - - /*! - * Returns a reference to the byte at \a index. - */ - char &operator[](int index); - - /*! - * Returns true if this ByteVector and \a v are equal. - */ - bool operator==(const ByteVector &v) const; - - /*! - * Returns true if this ByteVector and \a v are not equal. - */ - bool operator!=(const ByteVector &v) const; - - /*! - * Returns true if this ByteVector and the null terminated C string \a s - * contain the same data. - */ - bool operator==(const char *s) const; - - /*! - * Returns true if this ByteVector and the null terminated C string \a s - * do not contain the same data. - */ - bool operator!=(const char *s) const; - - /*! - * Returns true if this ByteVector is less than \a v. The value of the - * vectors is determined by evaluating the character from left to right, and - * in the event one vector is a superset of the other, the size is used. - */ - bool operator<(const ByteVector &v) const; - - /*! - * Returns true if this ByteVector is greater than \a v. - */ - bool operator>(const ByteVector &v) const; - - /*! - * Returns a vector that is \a v appended to this vector. - */ - ByteVector operator+(const ByteVector &v) const; - - /*! - * Copies ByteVector \a v. - */ - ByteVector &operator=(const ByteVector &v); - - /*! - * Copies ByteVector \a v. - */ - ByteVector &operator=(char c); - - /*! - * Copies ByteVector \a v. - */ - ByteVector &operator=(const char *data); - - /*! - * A static, empty ByteVector which is convenient and fast (since returning - * an empty or "null" value does not require instantiating a new ByteVector). - */ - static ByteVector null; - - /*! - * Returns a hex-encoded copy of the byte vector. - */ - ByteVector toHex() const; - - protected: - /* - * If this ByteVector is being shared via implicit sharing, do a deep copy - * of the data and separate from the shared members. This should be called - * by all non-const subclass members. - */ - void detach(); - - private: - class ByteVectorPrivate; - ByteVectorPrivate *d; - }; - -} - -/*! - * \relates TagLib::ByteVector - * Streams the ByteVector \a v to the output stream \a s. - */ -TAGLIB_EXPORT std::ostream &operator<<(std::ostream &s, const TagLib::ByteVector &v); - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tbytevectorlist.cpp b/platform/win32/msvc/external/taglib/taglib/toolkit/tbytevectorlist.cpp deleted file mode 100644 index 7ea893f11b8..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tbytevectorlist.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include "tbytevectorlist.h" - -using namespace TagLib; - -class ByteVectorListPrivate -{ - -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -ByteVectorList ByteVectorList::split(const ByteVector &v, const ByteVector &pattern, - int byteAlign) -{ - return split(v, pattern, byteAlign, 0); -} - -ByteVectorList ByteVectorList::split(const ByteVector &v, const ByteVector &pattern, - int byteAlign, int max) -{ - ByteVectorList l; - - uint previousOffset = 0; - for(int offset = v.find(pattern, 0, byteAlign); - offset != -1 && (max == 0 || max > int(l.size()) + 1); - offset = v.find(pattern, offset + pattern.size(), byteAlign)) - { - if(offset - previousOffset >= 1) - l.append(v.mid(previousOffset, offset - previousOffset)); - else - l.append(ByteVector::null); - - previousOffset = offset + pattern.size(); - } - - if(previousOffset < v.size()) - l.append(v.mid(previousOffset, v.size() - previousOffset)); - - return l; -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -ByteVectorList::ByteVectorList() : List<ByteVector>() -{ - -} - -ByteVectorList::ByteVectorList(const ByteVectorList &l) : List<ByteVector>(l) -{ - -} - -ByteVectorList::~ByteVectorList() -{ - -} - -ByteVector ByteVectorList::toByteVector(const ByteVector &separator) const -{ - ByteVector v; - - ConstIterator it = begin(); - - while(it != end()) { - v.append(*it); - it++; - if(it != end()) - v.append(separator); - } - - return v; -} diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tbytevectorlist.h b/platform/win32/msvc/external/taglib/taglib/toolkit/tbytevectorlist.h deleted file mode 100644 index 5852583a0a5..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tbytevectorlist.h +++ /dev/null @@ -1,91 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_BYTEVECTORLIST_H -#define TAGLIB_BYTEVECTORLIST_H - -#include "taglib_export.h" -#include "tbytevector.h" -#include "tlist.h" - -namespace TagLib { - - //! A list of ByteVectors - - /*! - * A List specialization with some handy features useful for ByteVectors. - */ - - class TAGLIB_EXPORT ByteVectorList : public List<ByteVector> - { - public: - - /*! - * Construct an empty ByteVectorList. - */ - ByteVectorList(); - - /*! - * Destroys this ByteVectorList instance. - */ - virtual ~ByteVectorList(); - - /*! - * Make a shallow, implicitly shared, copy of \a l. Because this is - * implicitly shared, this method is lightweight and suitable for - * pass-by-value usage. - */ - ByteVectorList(const ByteVectorList &l); - - /*! - * Convert the ByteVectorList to a ByteVector separated by \a separator. By - * default a space is used. - */ - ByteVector toByteVector(const ByteVector &separator = " ") const; - - /*! - * Splits the ByteVector \a v into several strings at \a pattern. This will - * not include the pattern in the returned ByteVectors. - */ - static ByteVectorList split(const ByteVector &v, const ByteVector &pattern, - int byteAlign = 1); - /*! - * Splits the ByteVector \a v into several strings at \a pattern. This will - * not include the pattern in the returned ByteVectors. \a max is the - * maximum number of entries that will be separated. If \a max for instance - * is 2 then a maximum of 1 match will be found and the vector will be split - * on that match. - */ - // BIC: merge with the function above - static ByteVectorList split(const ByteVector &v, const ByteVector &pattern, - int byteAlign, int max); - private: - class ByteVectorListPrivate; - ByteVectorListPrivate *d; - }; - -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tbytevectorstream.cpp b/platform/win32/msvc/external/taglib/taglib/toolkit/tbytevectorstream.cpp deleted file mode 100644 index dc480a2637c..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tbytevectorstream.cpp +++ /dev/null @@ -1,167 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Lukas Lalinsky - email : lalinsky@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include "tbytevectorstream.h" -#include "tstring.h" -#include "tdebug.h" - -#include <stdio.h> -#include <string.h> - -#include <stdlib.h> - -using namespace TagLib; - -class ByteVectorStream::ByteVectorStreamPrivate -{ -public: - ByteVectorStreamPrivate(const ByteVector &data); - - ByteVector data; - long position; -}; - -ByteVectorStream::ByteVectorStreamPrivate::ByteVectorStreamPrivate(const ByteVector &data) : - data(data), - position(0) -{ -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -ByteVectorStream::ByteVectorStream(const ByteVector &data) -{ - d = new ByteVectorStreamPrivate(data); -} - -ByteVectorStream::~ByteVectorStream() -{ - delete d; -} - -FileName ByteVectorStream::name() const -{ - return FileName(""); // XXX do we need a name? -} - -ByteVector ByteVectorStream::readBlock(ulong length) -{ - if(length == 0) - return ByteVector::null; - - ByteVector v = d->data.mid(d->position, length); - d->position += v.size(); - return v; -} - -void ByteVectorStream::writeBlock(const ByteVector &data) -{ - uint size = data.size(); - if(long(d->position + size) > length()) { - truncate(d->position + size); - } - memcpy(d->data.data() + d->position, data.data(), size); - d->position += size; -} - -void ByteVectorStream::insert(const ByteVector &data, ulong start, ulong replace) -{ - long sizeDiff = data.size() - replace; - if(sizeDiff < 0) { - removeBlock(start + data.size(), -sizeDiff); - } - else if(sizeDiff > 0) { - truncate(length() + sizeDiff); - ulong readPosition = start + replace; - ulong writePosition = start + data.size(); - memmove(d->data.data() + writePosition, d->data.data() + readPosition, length() - sizeDiff - readPosition); - } - seek(start); - writeBlock(data); -} - -void ByteVectorStream::removeBlock(ulong start, ulong length) -{ - ulong readPosition = start + length; - ulong writePosition = start; - if(readPosition < ulong(ByteVectorStream::length())) { - ulong bytesToMove = ByteVectorStream::length() - readPosition; - memmove(d->data.data() + writePosition, d->data.data() + readPosition, bytesToMove); - writePosition += bytesToMove; - } - d->position = writePosition; - truncate(writePosition); -} - -bool ByteVectorStream::readOnly() const -{ - return false; -} - -bool ByteVectorStream::isOpen() const -{ - return true; -} - -void ByteVectorStream::seek(long offset, Position p) -{ - switch(p) { - case Beginning: - d->position = offset; - break; - case Current: - d->position += offset; - break; - case End: - d->position = length() - offset; - break; - } -} - -void ByteVectorStream::clear() -{ -} - -long ByteVectorStream::tell() const -{ - return d->position; -} - -long ByteVectorStream::length() -{ - return d->data.size(); -} - -void ByteVectorStream::truncate(long length) -{ - d->data.resize(length); -} - -ByteVector *ByteVectorStream::data() -{ - return &d->data; -} diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tbytevectorstream.h b/platform/win32/msvc/external/taglib/taglib/toolkit/tbytevectorstream.h deleted file mode 100644 index 456b854e0fe..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tbytevectorstream.h +++ /dev/null @@ -1,145 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Lukas Lalinsky - email : lalinsky@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_BYTEVECTORSTREAM_H -#define TAGLIB_BYTEVECTORSTREAM_H - -#include "taglib_export.h" -#include "taglib.h" -#include "tbytevector.h" -#include "tiostream.h" - -namespace TagLib { - - class String; - class Tag; - class AudioProperties; - - //! In-memory Stream class using ByteVector for its storage. - - class TAGLIB_EXPORT ByteVectorStream : public IOStream - { - public: - /*! - * Construct a File object and opens the \a file. \a file should be a - * be a C-string in the local file system encoding. - */ - ByteVectorStream(const ByteVector &data); - - /*! - * Destroys this ByteVectorStream instance. - */ - virtual ~ByteVectorStream(); - - /*! - * Returns the file name in the local file system encoding. - */ - FileName name() const; - - /*! - * Reads a block of size \a length at the current get pointer. - */ - ByteVector readBlock(ulong length); - - /*! - * Attempts to write the block \a data at the current get pointer. If the - * file is currently only opened read only -- i.e. readOnly() returns true -- - * this attempts to reopen the file in read/write mode. - * - * \note This should be used instead of using the streaming output operator - * for a ByteVector. And even this function is significantly slower than - * doing output with a char[]. - */ - void writeBlock(const ByteVector &data); - - /*! - * Insert \a data at position \a start in the file overwriting \a replace - * bytes of the original content. - * - * \note This method is slow since it requires rewriting all of the file - * after the insertion point. - */ - void insert(const ByteVector &data, ulong start = 0, ulong replace = 0); - - /*! - * Removes a block of the file starting a \a start and continuing for - * \a length bytes. - * - * \note This method is slow since it involves rewriting all of the file - * after the removed portion. - */ - void removeBlock(ulong start = 0, ulong length = 0); - - /*! - * Returns true if the file is read only (or if the file can not be opened). - */ - bool readOnly() const; - - /*! - * Since the file can currently only be opened as an argument to the - * constructor (sort-of by design), this returns if that open succeeded. - */ - bool isOpen() const; - - /*! - * Move the I/O pointer to \a offset in the file from position \a p. This - * defaults to seeking from the beginning of the file. - * - * \see Position - */ - void seek(long offset, Position p = Beginning); - - /*! - * Reset the end-of-file and error flags on the file. - */ - void clear(); - - /*! - * Returns the current offset within the file. - */ - long tell() const; - - /*! - * Returns the length of the file. - */ - long length(); - - /*! - * Truncates the file to a \a length. - */ - void truncate(long length); - - ByteVector *data(); - - protected: - - private: - class ByteVectorStreamPrivate; - ByteVectorStreamPrivate *d; - }; - -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tdebug.cpp b/platform/win32/msvc/external/taglib/taglib/toolkit/tdebug.cpp deleted file mode 100644 index 522b68c9794..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tdebug.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef NDEBUG -#include <iostream> -#include <bitset> - -#include "tdebug.h" -#include "tstring.h" - -using namespace TagLib; - -void TagLib::debug(const String &s) -{ - std::cerr << "TagLib: " << s << std::endl; -} - -void TagLib::debugData(const ByteVector &v) -{ - for(uint i = 0; i < v.size(); i++) { - - std::cout << "*** [" << i << "] - '" << char(v[i]) << "' - int " << int(v[i]) - << std::endl; - - std::bitset<8> b(v[i]); - - for(int j = 0; j < 8; j++) - std::cout << i << ":" << j << " " << b.test(j) << std::endl; - - std::cout << std::endl; - } -} -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tdebug.h b/platform/win32/msvc/external/taglib/taglib/toolkit/tdebug.h deleted file mode 100644 index 5204fe707d9..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tdebug.h +++ /dev/null @@ -1,71 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_DEBUG_H -#define TAGLIB_DEBUG_H - -namespace TagLib { - - class String; - class ByteVector; - -#ifndef DO_NOT_DOCUMENT -#ifndef NDEBUG - - /*! - * A simple function that prints debugging output to cerr if debugging is - * not disabled. - * - * \warning Do not use this outside of TagLib, it could lead to undefined - * symbols in your build if TagLib is built with NDEBUG defined and your - * application is not. - * - * \internal - */ - void debug(const String &s); - - /*! - * For debugging binary data. - * - * \warning Do not use this outside of TagLib, it could lead to undefined - * symbols in your build if TagLib is built with NDEBUG defined and your - * application is not. - * - * \internal - */ - void debugData(const ByteVector &v); - -#else - - // Define these to an empty statement if debugging is disabled. - -#define debug(x) -#define debugData(x) - -#endif -#endif -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tfile.cpp b/platform/win32/msvc/external/taglib/taglib/toolkit/tfile.cpp deleted file mode 100644 index d0a6116fbed..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tfile.cpp +++ /dev/null @@ -1,498 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include "tfile.h" -#include "tfilestream.h" -#include "tstring.h" -#include "tdebug.h" -#include "tpropertymap.h" - -#include <stdio.h> -#include <string.h> -#include <sys/stat.h> - -#ifdef _WIN32 -# include <wchar.h> -# include <windows.h> -# include <io.h> -# define ftruncate _chsize -#else -# include <unistd.h> -#endif - -#include <stdlib.h> - -#ifndef R_OK -# define R_OK 4 -#endif -#ifndef W_OK -# define W_OK 2 -#endif - -#include "asffile.h" -#include "mpegfile.h" -#include "vorbisfile.h" -#include "flacfile.h" -#include "oggflacfile.h" -#include "mpcfile.h" -#include "mp4file.h" -#include "wavpackfile.h" -#include "speexfile.h" -#include "trueaudiofile.h" -#include "aifffile.h" -#include "wavfile.h" -#include "apefile.h" -#include "modfile.h" -#include "s3mfile.h" -#include "itfile.h" -#include "xmfile.h" - -using namespace TagLib; - -class File::FilePrivate -{ -public: - FilePrivate(IOStream *stream, bool owner); - - IOStream *stream; - bool streamOwner; - bool valid; - static const uint bufferSize = 1024; -}; - -File::FilePrivate::FilePrivate(IOStream *stream, bool owner) : - stream(stream), - streamOwner(owner), - valid(true) -{ -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -File::File(FileName fileName) -{ - IOStream *stream = new FileStream(fileName); - d = new FilePrivate(stream, true); -} - -File::File(IOStream *stream) -{ - d = new FilePrivate(stream, false); -} - -File::~File() -{ - if(d->stream && d->streamOwner) - delete d->stream; - delete d; -} - -FileName File::name() const -{ - return d->stream->name(); -} - -PropertyMap File::properties() const -{ - // ugly workaround until this method is virtual - if(dynamic_cast<const APE::File* >(this)) - return dynamic_cast<const APE::File* >(this)->properties(); - if(dynamic_cast<const FLAC::File* >(this)) - return dynamic_cast<const FLAC::File* >(this)->properties(); - if(dynamic_cast<const IT::File* >(this)) - return dynamic_cast<const IT::File* >(this)->properties(); - if(dynamic_cast<const Mod::File* >(this)) - return dynamic_cast<const Mod::File* >(this)->properties(); - if(dynamic_cast<const MPC::File* >(this)) - return dynamic_cast<const MPC::File* >(this)->properties(); - if(dynamic_cast<const MPEG::File* >(this)) - return dynamic_cast<const MPEG::File* >(this)->properties(); - if(dynamic_cast<const Ogg::FLAC::File* >(this)) - return dynamic_cast<const Ogg::FLAC::File* >(this)->properties(); - if(dynamic_cast<const Ogg::Speex::File* >(this)) - return dynamic_cast<const Ogg::Speex::File* >(this)->properties(); - if(dynamic_cast<const Ogg::Vorbis::File* >(this)) - return dynamic_cast<const Ogg::Vorbis::File* >(this)->properties(); - if(dynamic_cast<const RIFF::AIFF::File* >(this)) - return dynamic_cast<const RIFF::AIFF::File* >(this)->properties(); - if(dynamic_cast<const RIFF::WAV::File* >(this)) - return dynamic_cast<const RIFF::WAV::File* >(this)->properties(); - if(dynamic_cast<const S3M::File* >(this)) - return dynamic_cast<const S3M::File* >(this)->properties(); - if(dynamic_cast<const TrueAudio::File* >(this)) - return dynamic_cast<const TrueAudio::File* >(this)->properties(); - if(dynamic_cast<const WavPack::File* >(this)) - return dynamic_cast<const WavPack::File* >(this)->properties(); - if(dynamic_cast<const XM::File* >(this)) - return dynamic_cast<const XM::File* >(this)->properties(); - // no specialized implementation available -> use generic one - // - ASF: ugly format, largely undocumented, not worth implementing - // dict interface ... - // - MP4: taglib's MP4::Tag does not really support anything beyond - // the basic implementation, therefor we use just the default Tag - // interface - return tag()->properties(); -} - -void File::removeUnsupportedProperties(const StringList &properties) -{ - // here we only consider those formats that could possibly contain - // unsupported properties - if(dynamic_cast<APE::File* >(this)) - dynamic_cast<APE::File* >(this)->removeUnsupportedProperties(properties); - else if(dynamic_cast<FLAC::File* >(this)) - dynamic_cast<FLAC::File* >(this)->removeUnsupportedProperties(properties); - else if(dynamic_cast<MPC::File* >(this)) - dynamic_cast<MPC::File* >(this)->removeUnsupportedProperties(properties); - else if(dynamic_cast<MPEG::File* >(this)) - dynamic_cast<MPEG::File* >(this)->removeUnsupportedProperties(properties); - else if(dynamic_cast<Ogg::FLAC::File* >(this)) - dynamic_cast<Ogg::FLAC::File* >(this)->removeUnsupportedProperties(properties); - else if(dynamic_cast<Ogg::Speex::File* >(this)) - dynamic_cast<Ogg::Speex::File* >(this)->removeUnsupportedProperties(properties); - else if(dynamic_cast<Ogg::Vorbis::File* >(this)) - dynamic_cast<Ogg::Vorbis::File* >(this)->removeUnsupportedProperties(properties); - else if(dynamic_cast<RIFF::AIFF::File* >(this)) - dynamic_cast<RIFF::AIFF::File* >(this)->removeUnsupportedProperties(properties); - else if(dynamic_cast<RIFF::WAV::File* >(this)) - dynamic_cast<RIFF::WAV::File* >(this)->removeUnsupportedProperties(properties); - else if(dynamic_cast<S3M::File* >(this)) - dynamic_cast<S3M::File* >(this)->removeUnsupportedProperties(properties); - else if(dynamic_cast<TrueAudio::File* >(this)) - dynamic_cast<TrueAudio::File* >(this)->removeUnsupportedProperties(properties); - else if(dynamic_cast<WavPack::File* >(this)) - dynamic_cast<WavPack::File* >(this)->removeUnsupportedProperties(properties); - else if(dynamic_cast<XM::File* >(this)) - dynamic_cast<XM::File* >(this)->removeUnsupportedProperties(properties); - else - tag()->removeUnsupportedProperties(properties); -} - -PropertyMap File::setProperties(const PropertyMap &properties) -{ - if(dynamic_cast<APE::File* >(this)) - return dynamic_cast<APE::File* >(this)->setProperties(properties); - else if(dynamic_cast<FLAC::File* >(this)) - return dynamic_cast<FLAC::File* >(this)->setProperties(properties); - else if(dynamic_cast<IT::File* >(this)) - return dynamic_cast<IT::File* >(this)->setProperties(properties); - else if(dynamic_cast<Mod::File* >(this)) - return dynamic_cast<Mod::File* >(this)->setProperties(properties); - else if(dynamic_cast<MPC::File* >(this)) - return dynamic_cast<MPC::File* >(this)->setProperties(properties); - else if(dynamic_cast<MPEG::File* >(this)) - return dynamic_cast<MPEG::File* >(this)->setProperties(properties); - else if(dynamic_cast<Ogg::FLAC::File* >(this)) - return dynamic_cast<Ogg::FLAC::File* >(this)->setProperties(properties); - else if(dynamic_cast<Ogg::Speex::File* >(this)) - return dynamic_cast<Ogg::Speex::File* >(this)->setProperties(properties); - else if(dynamic_cast<Ogg::Vorbis::File* >(this)) - return dynamic_cast<Ogg::Vorbis::File* >(this)->setProperties(properties); - else if(dynamic_cast<RIFF::AIFF::File* >(this)) - return dynamic_cast<RIFF::AIFF::File* >(this)->setProperties(properties); - else if(dynamic_cast<RIFF::WAV::File* >(this)) - return dynamic_cast<RIFF::WAV::File* >(this)->setProperties(properties); - else if(dynamic_cast<S3M::File* >(this)) - return dynamic_cast<S3M::File* >(this)->setProperties(properties); - else if(dynamic_cast<TrueAudio::File* >(this)) - return dynamic_cast<TrueAudio::File* >(this)->setProperties(properties); - else if(dynamic_cast<WavPack::File* >(this)) - return dynamic_cast<WavPack::File* >(this)->setProperties(properties); - else if(dynamic_cast<XM::File* >(this)) - return dynamic_cast<XM::File* >(this)->setProperties(properties); - else - return tag()->setProperties(properties); -} - -ByteVector File::readBlock(ulong length) -{ - return d->stream->readBlock(length); -} - -void File::writeBlock(const ByteVector &data) -{ - d->stream->writeBlock(data); -} - -long File::find(const ByteVector &pattern, long fromOffset, const ByteVector &before) -{ - if(!d->stream || pattern.size() > d->bufferSize) - return -1; - - // The position in the file that the current buffer starts at. - - long bufferOffset = fromOffset; - ByteVector buffer; - - // These variables are used to keep track of a partial match that happens at - // the end of a buffer. - - int previousPartialMatch = -1; - int beforePreviousPartialMatch = -1; - - // Save the location of the current read pointer. We will restore the - // position using seek() before all returns. - - long originalPosition = tell(); - - // Start the search at the offset. - - seek(fromOffset); - - // This loop is the crux of the find method. There are three cases that we - // want to account for: - // - // (1) The previously searched buffer contained a partial match of the search - // pattern and we want to see if the next one starts with the remainder of - // that pattern. - // - // (2) The search pattern is wholly contained within the current buffer. - // - // (3) The current buffer ends with a partial match of the pattern. We will - // note this for use in the next itteration, where we will check for the rest - // of the pattern. - // - // All three of these are done in two steps. First we check for the pattern - // and do things appropriately if a match (or partial match) is found. We - // then check for "before". The order is important because it gives priority - // to "real" matches. - - for(buffer = readBlock(d->bufferSize); buffer.size() > 0; buffer = readBlock(d->bufferSize)) { - - // (1) previous partial match - - if(previousPartialMatch >= 0 && int(d->bufferSize) > previousPartialMatch) { - const int patternOffset = (d->bufferSize - previousPartialMatch); - if(buffer.containsAt(pattern, 0, patternOffset)) { - seek(originalPosition); - return bufferOffset - d->bufferSize + previousPartialMatch; - } - } - - if(!before.isNull() && beforePreviousPartialMatch >= 0 && int(d->bufferSize) > beforePreviousPartialMatch) { - const int beforeOffset = (d->bufferSize - beforePreviousPartialMatch); - if(buffer.containsAt(before, 0, beforeOffset)) { - seek(originalPosition); - return -1; - } - } - - // (2) pattern contained in current buffer - - long location = buffer.find(pattern); - if(location >= 0) { - seek(originalPosition); - return bufferOffset + location; - } - - if(!before.isNull() && buffer.find(before) >= 0) { - seek(originalPosition); - return -1; - } - - // (3) partial match - - previousPartialMatch = buffer.endsWithPartialMatch(pattern); - - if(!before.isNull()) - beforePreviousPartialMatch = buffer.endsWithPartialMatch(before); - - bufferOffset += d->bufferSize; - } - - // Since we hit the end of the file, reset the status before continuing. - - clear(); - - seek(originalPosition); - - return -1; -} - - -long File::rfind(const ByteVector &pattern, long fromOffset, const ByteVector &before) -{ - if(!d->stream || pattern.size() > d->bufferSize) - return -1; - - // The position in the file that the current buffer starts at. - - ByteVector buffer; - - // These variables are used to keep track of a partial match that happens at - // the end of a buffer. - - /* - int previousPartialMatch = -1; - int beforePreviousPartialMatch = -1; - */ - - // Save the location of the current read pointer. We will restore the - // position using seek() before all returns. - - long originalPosition = tell(); - - // Start the search at the offset. - - long bufferOffset; - if(fromOffset == 0) { - seek(-1 * int(d->bufferSize), End); - bufferOffset = tell(); - } - else { - seek(fromOffset + -1 * int(d->bufferSize), Beginning); - bufferOffset = tell(); - } - - // See the notes in find() for an explanation of this algorithm. - - for(buffer = readBlock(d->bufferSize); buffer.size() > 0; buffer = readBlock(d->bufferSize)) { - - // TODO: (1) previous partial match - - // (2) pattern contained in current buffer - - long location = buffer.rfind(pattern); - if(location >= 0) { - seek(originalPosition); - return bufferOffset + location; - } - - if(!before.isNull() && buffer.find(before) >= 0) { - seek(originalPosition); - return -1; - } - - // TODO: (3) partial match - - bufferOffset -= d->bufferSize; - seek(bufferOffset); - } - - // Since we hit the end of the file, reset the status before continuing. - - clear(); - - seek(originalPosition); - - return -1; -} - -void File::insert(const ByteVector &data, ulong start, ulong replace) -{ - d->stream->insert(data, start, replace); -} - -void File::removeBlock(ulong start, ulong length) -{ - d->stream->removeBlock(start, length); -} - -bool File::readOnly() const -{ - return d->stream->readOnly(); -} - -bool File::isOpen() const -{ - return d->stream->isOpen(); -} - -bool File::isValid() const -{ - return isOpen() && d->valid; -} - -void File::seek(long offset, Position p) -{ - d->stream->seek(offset, IOStream::Position(p)); -} - -void File::truncate(long length) -{ - d->stream->truncate(length); -} - -void File::clear() -{ - d->stream->clear(); -} - -long File::tell() const -{ - return d->stream->tell(); -} - -long File::length() -{ - return d->stream->length(); -} - -bool File::isReadable(const char *file) -{ - -#if defined(_MSC_VER) && (_MSC_VER >= 1400) // VC++2005 or later - - return _access_s(file, R_OK) == 0; - -#else - - return access(file, R_OK) == 0; - -#endif - -} - -bool File::isWritable(const char *file) -{ - -#if defined(_MSC_VER) && (_MSC_VER >= 1400) // VC++2005 or later - - return _access_s(file, W_OK) == 0; - -#else - - return access(file, W_OK) == 0; - -#endif - -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -TagLib::uint File::bufferSize() -{ - return FilePrivate::bufferSize; -} - -void File::setValid(bool valid) -{ - d->valid = valid; -} - diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tfile.h b/platform/win32/msvc/external/taglib/taglib/toolkit/tfile.h deleted file mode 100644 index 7e6f2b9369c..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tfile.h +++ /dev/null @@ -1,298 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_FILE_H -#define TAGLIB_FILE_H - -#include "taglib_export.h" -#include "taglib.h" -#include "tag.h" -#include "tbytevector.h" -#include "tiostream.h" - -namespace TagLib { - - class String; - class Tag; - class AudioProperties; - class PropertyMap; - - //! A file class with some useful methods for tag manipulation - - /*! - * This class is a basic file class with some methods that are particularly - * useful for tag editors. It has methods to take advantage of - * ByteVector and a binary search method for finding patterns in a file. - */ - - class TAGLIB_EXPORT File - { - public: - /*! - * Position in the file used for seeking. - */ - enum Position { - //! Seek from the beginning of the file. - Beginning, - //! Seek from the current position in the file. - Current, - //! Seek from the end of the file. - End - }; - - /*! - * Destroys this File instance. - */ - virtual ~File(); - - /*! - * Returns the file name in the local file system encoding. - */ - FileName name() const; - - /*! - * Returns a pointer to this file's tag. This should be reimplemented in - * the concrete subclasses. - */ - virtual Tag *tag() const = 0; - - /*! - * Exports the tags of the file as dictionary mapping (human readable) tag - * names (Strings) to StringLists of tag values. Calls the according specialization - * in the File subclasses. - * For each metadata object of the file that could not be parsed into the PropertyMap - * format, the returend map's unsupportedData() list will contain one entry identifying - * that object (e.g. the frame type for ID3v2 tags). Use removeUnsupportedProperties() - * to remove (a subset of) them. - * BIC: Will be made virtual in future releases. - */ - PropertyMap properties() const; - - /*! - * Removes unsupported properties, or a subset of them, from the file's metadata. - * The parameter \a properties must contain only entries from - * properties().unsupportedData(). - * BIC: Will be mad virtual in future releases. - */ - void removeUnsupportedProperties(const StringList& properties); - - /*! - * Sets the tags of this File to those specified in \a properties. Calls the - * according specialization method in the subclasses of File to do the translation - * into the format-specific details. - * If some value(s) could not be written imported to the specific metadata format, - * the returned PropertyMap will contain those value(s). Otherwise it will be empty, - * indicating that no problems occured. - * BIC: will become pure virtual in the future - */ - PropertyMap setProperties(const PropertyMap &properties); - /*! - * Returns a pointer to this file's audio properties. This should be - * reimplemented in the concrete subclasses. If no audio properties were - * read then this will return a null pointer. - */ - virtual AudioProperties *audioProperties() const = 0; - - /*! - * Save the file and its associated tags. This should be reimplemented in - * the concrete subclasses. Returns true if the save succeeds. - * - * \warning On UNIX multiple processes are able to write to the same file at - * the same time. This can result in serious file corruption. If you are - * developing a program that makes use of TagLib from multiple processes you - * must insure that you are only doing writes to a particular file from one - * of them. - */ - virtual bool save() = 0; - - /*! - * Reads a block of size \a length at the current get pointer. - */ - ByteVector readBlock(ulong length); - - /*! - * Attempts to write the block \a data at the current get pointer. If the - * file is currently only opened read only -- i.e. readOnly() returns true -- - * this attempts to reopen the file in read/write mode. - * - * \note This should be used instead of using the streaming output operator - * for a ByteVector. And even this function is significantly slower than - * doing output with a char[]. - */ - void writeBlock(const ByteVector &data); - - /*! - * Returns the offset in the file that \a pattern occurs at or -1 if it can - * not be found. If \a before is set, the search will only continue until the - * pattern \a before is found. This is useful for tagging purposes to search - * for a tag before the synch frame. - * - * Searching starts at \a fromOffset, which defaults to the beginning of the - * file. - * - * \note This has the practial limitation that \a pattern can not be longer - * than the buffer size used by readBlock(). Currently this is 1024 bytes. - */ - long find(const ByteVector &pattern, - long fromOffset = 0, - const ByteVector &before = ByteVector::null); - - /*! - * Returns the offset in the file that \a pattern occurs at or -1 if it can - * not be found. If \a before is set, the search will only continue until the - * pattern \a before is found. This is useful for tagging purposes to search - * for a tag before the synch frame. - * - * Searching starts at \a fromOffset and proceeds from the that point to the - * beginning of the file and defaults to the end of the file. - * - * \note This has the practial limitation that \a pattern can not be longer - * than the buffer size used by readBlock(). Currently this is 1024 bytes. - */ - long rfind(const ByteVector &pattern, - long fromOffset = 0, - const ByteVector &before = ByteVector::null); - - /*! - * Insert \a data at position \a start in the file overwriting \a replace - * bytes of the original content. - * - * \note This method is slow since it requires rewriting all of the file - * after the insertion point. - */ - void insert(const ByteVector &data, ulong start = 0, ulong replace = 0); - - /*! - * Removes a block of the file starting a \a start and continuing for - * \a length bytes. - * - * \note This method is slow since it involves rewriting all of the file - * after the removed portion. - */ - void removeBlock(ulong start = 0, ulong length = 0); - - /*! - * Returns true if the file is read only (or if the file can not be opened). - */ - bool readOnly() const; - - /*! - * Since the file can currently only be opened as an argument to the - * constructor (sort-of by design), this returns if that open succeeded. - */ - bool isOpen() const; - - /*! - * Returns true if the file is open and readble. - */ - bool isValid() const; - - /*! - * Move the I/O pointer to \a offset in the file from position \a p. This - * defaults to seeking from the beginning of the file. - * - * \see Position - */ - void seek(long offset, Position p = Beginning); - - /*! - * Reset the end-of-file and error flags on the file. - */ - void clear(); - - /*! - * Returns the current offset within the file. - */ - long tell() const; - - /*! - * Returns the length of the file. - */ - long length(); - - /*! - * Returns true if \a file can be opened for reading. If the file does not - * exist, this will return false. - * - * \deprecated - */ - static bool isReadable(const char *file); - - /*! - * Returns true if \a file can be opened for writing. - * - * \deprecated - */ - static bool isWritable(const char *name); - - protected: - /*! - * Construct a File object and opens the \a file. \a file should be a - * be a C-string in the local file system encoding. - * - * \note Constructor is protected since this class should only be - * instantiated through subclasses. - */ - File(FileName file); - - /*! - * Construct a File object and use the \a stream instance. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - * - * \note Constructor is protected since this class should only be - * instantiated through subclasses. - */ - File(IOStream *stream); - - /*! - * Marks the file as valid or invalid. - * - * \see isValid() - */ - void setValid(bool valid); - - /*! - * Truncates the file to a \a length. - */ - void truncate(long length); - - /*! - * Returns the buffer size that is used for internal buffering. - */ - static uint bufferSize(); - - private: - File(const File &); - File &operator=(const File &); - - class FilePrivate; - FilePrivate *d; - }; - -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tfilestream.cpp b/platform/win32/msvc/external/taglib/taglib/toolkit/tfilestream.cpp deleted file mode 100644 index b1fd9f80aff..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tfilestream.cpp +++ /dev/null @@ -1,417 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include "tfilestream.h" -#include "tstring.h" -#include "tdebug.h" - -#include <stdio.h> -#include <string.h> -#include <sys/stat.h> - -#ifdef _WIN32 -# include <wchar.h> -# include <windows.h> -# include <io.h> -# define ftruncate _chsize -#else -# include <unistd.h> -#endif - -#include <stdlib.h> - -#ifndef R_OK -# define R_OK 4 -#endif -#ifndef W_OK -# define W_OK 2 -#endif - -using namespace TagLib; - -#ifdef _WIN32 - -typedef FileName FileNameHandle; - -#else - -struct FileNameHandle : public std::string -{ - FileNameHandle(FileName name) : std::string(name) {} - operator FileName () const { return c_str(); } -}; - -#endif - -namespace { - FILE *openFile(const FileName &path, bool readOnly) - { - // Calls a proper variation of fopen() depending on the compiling environment. - -#if defined(_WIN32) - -# if defined(_MSC_VER) && (_MSC_VER >= 1400) - - // Visual C++ 2005 or later. - - FILE *file; - errno_t err; - - if(wcslen(path) > 0) - err = _wfopen_s(&file, path, readOnly ? L"rb" : L"rb+"); - else - err = fopen_s(&file, path, readOnly ? "rb" : "rb+"); - - if(err == 0) - return file; - else - return NULL; - -# else // defined(_MSC_VER) && (_MSC_VER >= 1400) - - // Visual C++.NET 2003 or earlier. - - if(wcslen(path) > 0) - return _wfopen(path, readOnly ? L"rb" : L"rb+"); - else - return fopen(path, readOnly ? "rb" : "rb+"); - -# endif // defined(_MSC_VER) && (_MSC_VER >= 1400) - -#else // defined(_WIN32) - - // Non-Win32 - - return fopen(path, readOnly ? "rb" : "rb+"); - -#endif // defined(_WIN32) - } -} - -class FileStream::FileStreamPrivate -{ -public: - FileStreamPrivate(FileName fileName, bool openReadOnly); - - FILE *file; - - FileNameHandle name; - - bool readOnly; - ulong size; - static const uint bufferSize = 1024; -}; - -FileStream::FileStreamPrivate::FileStreamPrivate(FileName fileName, bool openReadOnly) : - file(0), - name(fileName), - readOnly(true), - size(0) -{ - // First try with read / write mode, if that fails, fall back to read only. - - if(!openReadOnly) - file = openFile(name, false); - - if(file) - readOnly = false; - else - file = openFile(name, true); - - if(!file) { - debug("Could not open file " + String((const char *) name)); - } -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -FileStream::FileStream(FileName file, bool openReadOnly) -{ - d = new FileStreamPrivate(file, openReadOnly); -} - -FileStream::~FileStream() -{ - if(d->file) - fclose(d->file); - delete d; -} - -FileName FileStream::name() const -{ - return d->name; -} - -ByteVector FileStream::readBlock(ulong length) -{ - if(!d->file) { - debug("FileStream::readBlock() -- Invalid File"); - return ByteVector::null; - } - - if(length == 0) - return ByteVector::null; - - if(length > FileStreamPrivate::bufferSize && - length > ulong(FileStream::length())) - { - length = FileStream::length(); - } - - ByteVector v(static_cast<uint>(length)); - const int count = fread(v.data(), sizeof(char), length, d->file); - v.resize(count); - return v; -} - -void FileStream::writeBlock(const ByteVector &data) -{ - if(!d->file) - return; - - if(d->readOnly) { - debug("File::writeBlock() -- attempted to write to a file that is not writable"); - return; - } - - fwrite(data.data(), sizeof(char), data.size(), d->file); -} - -void FileStream::insert(const ByteVector &data, ulong start, ulong replace) -{ - if(!d->file) - return; - - if(data.size() == replace) { - seek(start); - writeBlock(data); - return; - } - else if(data.size() < replace) { - seek(start); - writeBlock(data); - removeBlock(start + data.size(), replace - data.size()); - return; - } - - // Woohoo! Faster (about 20%) than id3lib at last. I had to get hardcore - // and avoid TagLib's high level API for rendering just copying parts of - // the file that don't contain tag data. - // - // Now I'll explain the steps in this ugliness: - - // First, make sure that we're working with a buffer that is longer than - // the *differnce* in the tag sizes. We want to avoid overwriting parts - // that aren't yet in memory, so this is necessary. - - ulong bufferLength = bufferSize(); - - while(data.size() - replace > bufferLength) - bufferLength += bufferSize(); - - // Set where to start the reading and writing. - - long readPosition = start + replace; - long writePosition = start; - - ByteVector buffer; - ByteVector aboutToOverwrite(static_cast<uint>(bufferLength)); - - // This is basically a special case of the loop below. Here we're just - // doing the same steps as below, but since we aren't using the same buffer - // size -- instead we're using the tag size -- this has to be handled as a - // special case. We're also using File::writeBlock() just for the tag. - // That's a bit slower than using char *'s so, we're only doing it here. - - seek(readPosition); - int bytesRead = fread(aboutToOverwrite.data(), sizeof(char), bufferLength, d->file); - readPosition += bufferLength; - - seek(writePosition); - writeBlock(data); - writePosition += data.size(); - - buffer = aboutToOverwrite; - - // In case we've already reached the end of file... - - buffer.resize(bytesRead); - - // Ok, here's the main loop. We want to loop until the read fails, which - // means that we hit the end of the file. - - while(!buffer.isEmpty()) { - - // Seek to the current read position and read the data that we're about - // to overwrite. Appropriately increment the readPosition. - - seek(readPosition); - bytesRead = fread(aboutToOverwrite.data(), sizeof(char), bufferLength, d->file); - aboutToOverwrite.resize(bytesRead); - readPosition += bufferLength; - - // Check to see if we just read the last block. We need to call clear() - // if we did so that the last write succeeds. - - if(ulong(bytesRead) < bufferLength) - clear(); - - // Seek to the write position and write our buffer. Increment the - // writePosition. - - seek(writePosition); - fwrite(buffer.data(), sizeof(char), buffer.size(), d->file); - writePosition += buffer.size(); - - // Make the current buffer the data that we read in the beginning. - - buffer = aboutToOverwrite; - - // Again, we need this for the last write. We don't want to write garbage - // at the end of our file, so we need to set the buffer size to the amount - // that we actually read. - - bufferLength = bytesRead; - } -} - -void FileStream::removeBlock(ulong start, ulong length) -{ - if(!d->file) - return; - - ulong bufferLength = bufferSize(); - - long readPosition = start + length; - long writePosition = start; - - ByteVector buffer(static_cast<uint>(bufferLength)); - - ulong bytesRead = 1; - - while(bytesRead != 0) { - seek(readPosition); - bytesRead = fread(buffer.data(), sizeof(char), bufferLength, d->file); - readPosition += bytesRead; - - // Check to see if we just read the last block. We need to call clear() - // if we did so that the last write succeeds. - - if(bytesRead < bufferLength) - clear(); - - seek(writePosition); - fwrite(buffer.data(), sizeof(char), bytesRead, d->file); - writePosition += bytesRead; - } - truncate(writePosition); -} - -bool FileStream::readOnly() const -{ - return d->readOnly; -} - -bool FileStream::isOpen() const -{ - return (d->file != NULL); -} - -void FileStream::seek(long offset, Position p) -{ - if(!d->file) { - debug("File::seek() -- trying to seek in a file that isn't opened."); - return; - } - - switch(p) { - case Beginning: - fseek(d->file, offset, SEEK_SET); - break; - case Current: - fseek(d->file, offset, SEEK_CUR); - break; - case End: - fseek(d->file, offset, SEEK_END); - break; - } -} - -void FileStream::clear() -{ - clearerr(d->file); -} - -long FileStream::tell() const -{ - return ftell(d->file); -} - -long FileStream::length() -{ - // Do some caching in case we do multiple calls. - - if(d->size > 0) - return d->size; - - if(!d->file) - return 0; - - long curpos = tell(); - - seek(0, End); - long endpos = tell(); - - seek(curpos, Beginning); - - d->size = endpos; - return endpos; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void FileStream::truncate(long length) -{ - -#if defined(_MSC_VER) && (_MSC_VER >= 1400) // VC++2005 or later - - ftruncate(_fileno(d->file), length); - -#else - - ftruncate(fileno(d->file), length); - -#endif - -} - -TagLib::uint FileStream::bufferSize() -{ - return FileStreamPrivate::bufferSize; -} diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tfilestream.h b/platform/win32/msvc/external/taglib/taglib/toolkit/tfilestream.h deleted file mode 100644 index fa113b738a7..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tfilestream.h +++ /dev/null @@ -1,154 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_FILESTREAM_H -#define TAGLIB_FILESTREAM_H - -#include "taglib_export.h" -#include "taglib.h" -#include "tbytevector.h" -#include "tiostream.h" - -namespace TagLib { - - class String; - class Tag; - class AudioProperties; - - //! A file class with some useful methods for tag manipulation - - /*! - * This class is a basic file class with some methods that are particularly - * useful for tag editors. It has methods to take advantage of - * ByteVector and a binary search method for finding patterns in a file. - */ - - class TAGLIB_EXPORT FileStream : public IOStream - { - public: - /*! - * Construct a File object and opens the \a file. \a file should be a - * be a C-string in the local file system encoding. - */ - FileStream(FileName file, bool openReadOnly = false); - - /*! - * Destroys this FileStream instance. - */ - virtual ~FileStream(); - - /*! - * Returns the file name in the local file system encoding. - */ - FileName name() const; - - /*! - * Reads a block of size \a length at the current get pointer. - */ - ByteVector readBlock(ulong length); - - /*! - * Attempts to write the block \a data at the current get pointer. If the - * file is currently only opened read only -- i.e. readOnly() returns true -- - * this attempts to reopen the file in read/write mode. - * - * \note This should be used instead of using the streaming output operator - * for a ByteVector. And even this function is significantly slower than - * doing output with a char[]. - */ - void writeBlock(const ByteVector &data); - - /*! - * Insert \a data at position \a start in the file overwriting \a replace - * bytes of the original content. - * - * \note This method is slow since it requires rewriting all of the file - * after the insertion point. - */ - void insert(const ByteVector &data, ulong start = 0, ulong replace = 0); - - /*! - * Removes a block of the file starting a \a start and continuing for - * \a length bytes. - * - * \note This method is slow since it involves rewriting all of the file - * after the removed portion. - */ - void removeBlock(ulong start = 0, ulong length = 0); - - /*! - * Returns true if the file is read only (or if the file can not be opened). - */ - bool readOnly() const; - - /*! - * Since the file can currently only be opened as an argument to the - * constructor (sort-of by design), this returns if that open succeeded. - */ - bool isOpen() const; - - /*! - * Move the I/O pointer to \a offset in the file from position \a p. This - * defaults to seeking from the beginning of the file. - * - * \see Position - */ - void seek(long offset, Position p = Beginning); - - /*! - * Reset the end-of-file and error flags on the file. - */ - void clear(); - - /*! - * Returns the current offset within the file. - */ - long tell() const; - - /*! - * Returns the length of the file. - */ - long length(); - - /*! - * Truncates the file to a \a length. - */ - void truncate(long length); - - protected: - - /*! - * Returns the buffer size that is used for internal buffering. - */ - static uint bufferSize(); - - private: - class FileStreamPrivate; - FileStreamPrivate *d; - }; - -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tiostream.cpp b/platform/win32/msvc/external/taglib/taglib/toolkit/tiostream.cpp deleted file mode 100644 index e7b60dd7508..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tiostream.cpp +++ /dev/null @@ -1,45 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Lukas Lalinsky - email : lalinsky@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include "tiostream.h" - -using namespace TagLib; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -IOStream::IOStream() -{ -} - -IOStream::~IOStream() -{ -} - -void IOStream::clear() -{ -} - diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tiostream.h b/platform/win32/msvc/external/taglib/taglib/toolkit/tiostream.h deleted file mode 100644 index 3e7de22aa51..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tiostream.h +++ /dev/null @@ -1,160 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Lukas Lalinsky - email : lalinsky@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_IOSTREAM_H -#define TAGLIB_IOSTREAM_H - -#include "taglib_export.h" -#include "taglib.h" -#include "tbytevector.h" - -namespace TagLib { - -#ifdef _WIN32 - class TAGLIB_EXPORT FileName - { - public: - FileName(const wchar_t *name) : m_wname(name) {} - FileName(const char *name) : m_name(name) {} - operator const wchar_t *() const { return m_wname.c_str(); } - operator const char *() const { return m_name.c_str(); } - private: - std::string m_name; - std::wstring m_wname; - }; -#else - typedef const char *FileName; -#endif - - //! An abstract class that provides operations on a sequence of bytes - - class TAGLIB_EXPORT IOStream - { - public: - /*! - * Position in the file used for seeking. - */ - enum Position { - //! Seek from the beginning of the file. - Beginning, - //! Seek from the current position in the file. - Current, - //! Seek from the end of the file. - End - }; - - IOStream(); - - /*! - * Destroys this IOStream instance. - */ - virtual ~IOStream(); - - /*! - * Returns the stream name in the local file system encoding. - */ - virtual FileName name() const = 0; - - /*! - * Reads a block of size \a length at the current get pointer. - */ - virtual ByteVector readBlock(ulong length) = 0; - - /*! - * Attempts to write the block \a data at the current get pointer. If the - * file is currently only opened read only -- i.e. readOnly() returns true -- - * this attempts to reopen the file in read/write mode. - * - * \note This should be used instead of using the streaming output operator - * for a ByteVector. And even this function is significantly slower than - * doing output with a char[]. - */ - virtual void writeBlock(const ByteVector &data) = 0; - - /*! - * Insert \a data at position \a start in the file overwriting \a replace - * bytes of the original content. - * - * \note This method is slow since it requires rewriting all of the file - * after the insertion point. - */ - virtual void insert(const ByteVector &data, ulong start = 0, ulong replace = 0) = 0; - - /*! - * Removes a block of the file starting a \a start and continuing for - * \a length bytes. - * - * \note This method is slow since it involves rewriting all of the file - * after the removed portion. - */ - virtual void removeBlock(ulong start = 0, ulong length = 0) = 0; - - /*! - * Returns true if the file is read only (or if the file can not be opened). - */ - virtual bool readOnly() const = 0; - - /*! - * Since the file can currently only be opened as an argument to the - * constructor (sort-of by design), this returns if that open succeeded. - */ - virtual bool isOpen() const = 0; - - /*! - * Move the I/O pointer to \a offset in the stream from position \a p. This - * defaults to seeking from the beginning of the stream. - * - * \see Position - */ - virtual void seek(long offset, Position p = Beginning) = 0; - - /*! - * Reset the end-of-stream and error flags on the stream. - */ - virtual void clear(); - - /*! - * Returns the current offset within the stream. - */ - virtual long tell() const = 0; - - /*! - * Returns the length of the stream. - */ - virtual long length() = 0; - - /*! - * Truncates the stream to a \a length. - */ - virtual void truncate(long length) = 0; - - private: - IOStream(const IOStream &); - IOStream &operator=(const IOStream &); - }; - -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tlist.h b/platform/win32/msvc/external/taglib/taglib/toolkit/tlist.h deleted file mode 100644 index 0099dad56d0..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tlist.h +++ /dev/null @@ -1,257 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_LIST_H -#define TAGLIB_LIST_H - -#include "taglib.h" - -#include <list> - -namespace TagLib { - - //! A generic, implicitly shared list. - - /*! - * This is basic generic list that's somewhere between a std::list and a - * QValueList. This class is implicitly shared. For example: - * - * \code - * - * TagLib::List<int> l = someOtherIntList; - * - * \endcode - * - * The above example is very cheap. This also makes lists suitable for the - * return types of functions. The above example will just copy a pointer rather - * than copying the data in the list. When your \e shared list's data changes, - * only \e then will the data be copied. - */ - - template <class T> class List - { - public: -#ifndef DO_NOT_DOCUMENT - typedef typename std::list<T>::iterator Iterator; - typedef typename std::list<T>::const_iterator ConstIterator; -#endif - - /*! - * Constructs an empty list. - */ - List(); - - /*! - * Make a shallow, implicitly shared, copy of \a l. Because this is - * implicitly shared, this method is lightweight and suitable for - * pass-by-value usage. - */ - List(const List<T> &l); - - /*! - * Destroys this List instance. If auto deletion is enabled and this list - * contains a pointer type all of the memebers are also deleted. - */ - virtual ~List(); - - /*! - * Returns an STL style iterator to the beginning of the list. See - * std::list::const_iterator for the semantics. - */ - Iterator begin(); - - /*! - * Returns an STL style constant iterator to the beginning of the list. See - * std::list::iterator for the semantics. - */ - ConstIterator begin() const; - - /*! - * Returns an STL style iterator to the end of the list. See - * std::list::iterator for the semantics. - */ - Iterator end(); - - /*! - * Returns an STL style constant iterator to the end of the list. See - * std::list::const_iterator for the semantics. - */ - ConstIterator end() const; - - /*! - * Inserts a copy of \a value before \a it. - */ - Iterator insert(Iterator it, const T &value); - - /*! - * Inserts the \a value into the list. This assumes that the list is - * currently sorted. If \a unique is true then the value will not - * be inserted if it is already in the list. - */ - List<T> &sortedInsert(const T &value, bool unique = false); - - /*! - * Appends \a item to the end of the list and returns a reference to the - * list. - */ - List<T> &append(const T &item); - - /*! - * Appends all of the values in \a l to the end of the list and returns a - * reference to the list. - */ - List<T> &append(const List<T> &l); - - /*! - * Prepends \a item to the beginning list and returns a reference to the - * list. - */ - List<T> &prepend(const T &item); - - /*! - * Prepends all of the items in \a l to the beginning list and returns a - * reference to the list. - */ - List<T> &prepend(const List<T> &l); - - /*! - * Clears the list. If auto deletion is enabled and this list contains a - * pointer type the members are also deleted. - * - * \see setAutoDelete() - */ - List<T> &clear(); - - /*! - * Returns the number of elements in the list. - */ - uint size() const; - bool isEmpty() const; - - /*! - * Find the first occurrence of \a value. - */ - Iterator find(const T &value); - - /*! - * Find the first occurrence of \a value. - */ - ConstIterator find(const T &value) const; - - /*! - * Returns true if the list contains \a value. - */ - bool contains(const T &value) const; - - /*! - * Erase the item at \a it from the list. - */ - Iterator erase(Iterator it); - - /*! - * Returns a reference to the first item in the list. - */ - const T &front() const; - - /*! - * Returns a reference to the first item in the list. - */ - T &front(); - - /*! - * Returns a reference to the last item in the list. - */ - const T &back() const; - - /*! - * Returns a reference to the last item in the list. - */ - T &back(); - - /*! - * Auto delete the members of the list when the last reference to the list - * passes out of scope. This will have no effect on lists which do not - * contain a pointer type. - * - * \note This relies on partial template instantiation -- most modern C++ - * compilers should now support this. - */ - void setAutoDelete(bool autoDelete); - - /*! - * Returns a reference to item \a i in the list. - * - * \warning This method is slow. Use iterators to loop through the list. - */ - T &operator[](uint i); - - /*! - * Returns a const reference to item \a i in the list. - * - * \warning This method is slow. Use iterators to loop through the list. - */ - const T &operator[](uint i) const; - - /*! - * Make a shallow, implicitly shared, copy of \a l. Because this is - * implicitly shared, this method is lightweight and suitable for - * pass-by-value usage. - */ - List<T> &operator=(const List<T> &l); - - /*! - * Compares this list with \a l and returns true if all of the elements are - * the same. - */ - bool operator==(const List<T> &l) const; - - /*! - * Compares this list with \a l and returns true if the lists differ. - */ - bool operator!=(const List<T> &l) const; - - protected: - /* - * If this List is being shared via implicit sharing, do a deep copy of the - * data and separate from the shared members. This should be called by all - * non-const subclass members. - */ - void detach(); - - private: -#ifndef DO_NOT_DOCUMENT - template <class TP> class ListPrivate; - ListPrivate<T> *d; -#endif - }; - -} - -// Since GCC doesn't support the "export" keyword, we have to include the -// implementation. - -#include "tlist.tcc" - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tlist.tcc b/platform/win32/msvc/external/taglib/taglib/toolkit/tlist.tcc deleted file mode 100644 index 37817f0592c..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tlist.tcc +++ /dev/null @@ -1,322 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <algorithm> - -namespace TagLib { - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -// The functionality of List<T>::setAutoDelete() is implemented here partial -// template specialization. This is implemented in such a way that calling -// setAutoDelete() on non-pointer types will simply have no effect. - -// A base for the generic and specialized private class types. New -// non-templatized members should be added here. - -class ListPrivateBase : public RefCounter -{ -public: - ListPrivateBase() : autoDelete(false) {} - bool autoDelete; -}; - -// A generic implementation - -template <class T> -template <class TP> class List<T>::ListPrivate : public ListPrivateBase -{ -public: - ListPrivate() : ListPrivateBase() {} - ListPrivate(const std::list<TP> &l) : ListPrivateBase(), list(l) {} - void clear() { - list.clear(); - } - std::list<TP> list; -}; - -// A partial specialization for all pointer types that implements the -// setAutoDelete() functionality. - -template <class T> -template <class TP> class List<T>::ListPrivate<TP *> : public ListPrivateBase -{ -public: - ListPrivate() : ListPrivateBase() {} - ListPrivate(const std::list<TP *> &l) : ListPrivateBase(), list(l) {} - ~ListPrivate() { - clear(); - } - void clear() { - if(autoDelete) { - typename std::list<TP *>::const_iterator it = list.begin(); - for(; it != list.end(); ++it) - delete *it; - } - list.clear(); - } - std::list<TP *> list; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -template <class T> -List<T>::List() -{ - d = new ListPrivate<T>; -} - -template <class T> -List<T>::List(const List<T> &l) : d(l.d) -{ - d->ref(); -} - -template <class T> -List<T>::~List() -{ - if(d->deref()) - delete d; -} - -template <class T> -typename List<T>::Iterator List<T>::begin() -{ - detach(); - return d->list.begin(); -} - -template <class T> -typename List<T>::ConstIterator List<T>::begin() const -{ - return d->list.begin(); -} - -template <class T> -typename List<T>::Iterator List<T>::end() -{ - detach(); - return d->list.end(); -} - -template <class T> -typename List<T>::ConstIterator List<T>::end() const -{ - return d->list.end(); -} - -template <class T> -typename List<T>::Iterator List<T>::insert(Iterator it, const T &item) -{ - detach(); - return d->list.insert(it, item); -} - -template <class T> -List<T> &List<T>::sortedInsert(const T &value, bool unique) -{ - detach(); - Iterator it = begin(); - while(it != end() && *it < value) - ++it; - if(unique && it != end() && *it == value) - return *this; - insert(it, value); - return *this; -} - -template <class T> -List<T> &List<T>::append(const T &item) -{ - detach(); - d->list.push_back(item); - return *this; -} - -template <class T> -List<T> &List<T>::append(const List<T> &l) -{ - detach(); - d->list.insert(d->list.end(), l.begin(), l.end()); - return *this; -} - -template <class T> -List<T> &List<T>::prepend(const T &item) -{ - detach(); - d->list.push_front(item); - return *this; -} - -template <class T> -List<T> &List<T>::prepend(const List<T> &l) -{ - detach(); - d->list.insert(d->list.begin(), l.begin(), l.end()); - return *this; -} - -template <class T> -List<T> &List<T>::clear() -{ - detach(); - d->clear(); - return *this; -} - -template <class T> -TagLib::uint List<T>::size() const -{ - return d->list.size(); -} - -template <class T> -bool List<T>::isEmpty() const -{ - return d->list.empty(); -} - -template <class T> -typename List<T>::Iterator List<T>::find(const T &value) -{ - return std::find(d->list.begin(), d->list.end(), value); -} - -template <class T> -typename List<T>::ConstIterator List<T>::find(const T &value) const -{ - return std::find(d->list.begin(), d->list.end(), value); -} - -template <class T> -bool List<T>::contains(const T &value) const -{ - return std::find(d->list.begin(), d->list.end(), value) != d->list.end(); -} - -template <class T> -typename List<T>::Iterator List<T>::erase(Iterator it) -{ - return d->list.erase(it); -} - -template <class T> -const T &List<T>::front() const -{ - return d->list.front(); -} - -template <class T> -T &List<T>::front() -{ - detach(); - return d->list.front(); -} - -template <class T> -const T &List<T>::back() const -{ - return d->list.back(); -} - -template <class T> -void List<T>::setAutoDelete(bool autoDelete) -{ - d->autoDelete = autoDelete; -} - -template <class T> -T &List<T>::back() -{ - detach(); - return d->list.back(); -} - -template <class T> -T &List<T>::operator[](uint i) -{ - Iterator it = d->list.begin(); - - for(uint j = 0; j < i; j++) - ++it; - - return *it; -} - -template <class T> -const T &List<T>::operator[](uint i) const -{ - ConstIterator it = d->list.begin(); - - for(uint j = 0; j < i; j++) - ++it; - - return *it; -} - -template <class T> -List<T> &List<T>::operator=(const List<T> &l) -{ - if(&l == this) - return *this; - - if(d->deref()) - delete d; - d = l.d; - d->ref(); - return *this; -} - -template <class T> -bool List<T>::operator==(const List<T> &l) const -{ - return d->list == l.d->list; -} - -template <class T> -bool List<T>::operator!=(const List<T> &l) const -{ - return d->list != l.d->list; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -template <class T> -void List<T>::detach() -{ - if(d->count() > 1) { - d->deref(); - d = new ListPrivate<T>(d->list); - } -} - -} // namespace TagLib diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tmap.h b/platform/win32/msvc/external/taglib/taglib/toolkit/tmap.h deleted file mode 100644 index a7d99303572..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tmap.h +++ /dev/null @@ -1,199 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_MAP_H -#define TAGLIB_MAP_H - -#include <map> - -#include "taglib.h" - -namespace TagLib { - - //! A generic, implicitly shared map. - - /*! - * This implements a standard map container that associates a key with a value - * and has fast key-based lookups. This map is also implicitly shared making - * it suitable for pass-by-value usage. - */ - - template <class Key, class T> class Map - { - public: -#ifndef DO_NOT_DOCUMENT -#ifdef WANT_CLASS_INSTANTIATION_OF_MAP - // Some STL implementations get snippy over the use of the - // class keyword to distinguish different templates; Sun Studio - // in particular finds multiple specializations in certain rare - // cases and complains about that. GCC doesn't seem to mind, - // and uses the typedefs further below without the class keyword. - // Not all the specializations of Map can use the class keyword - // (when T is not actually a class type), so don't apply this - // generally. - typedef typename std::map<class Key, class T>::iterator Iterator; - typedef typename std::map<class Key, class T>::const_iterator ConstIterator; -#else - typedef typename std::map<Key, T>::iterator Iterator; - typedef typename std::map<Key, T>::const_iterator ConstIterator; -#endif -#endif - - /*! - * Constructs an empty Map. - */ - Map(); - - /*! - * Make a shallow, implicitly shared, copy of \a m. Because this is - * implicitly shared, this method is lightweight and suitable for - * pass-by-value usage. - */ - Map(const Map<Key, T> &m); - - /*! - * Destroys this instance of the Map. - */ - virtual ~Map(); - - /*! - * Returns an STL style iterator to the beginning of the map. See - * std::map::iterator for the semantics. - */ - Iterator begin(); - - /*! - * Returns an STL style iterator to the beginning of the map. See - * std::map::const_iterator for the semantics. - */ - ConstIterator begin() const; - - /*! - * Returns an STL style iterator to the end of the map. See - * std::map::iterator for the semantics. - */ - Iterator end(); - - /*! - * Returns an STL style iterator to the end of the map. See - * std::map::const_iterator for the semantics. - */ - ConstIterator end() const; - - /*! - * Inserts \a value under \a key in the map. If a value for \a key already - * exists it will be overwritten. - */ - Map<Key, T> &insert(const Key &key, const T &value); - - /*! - * Removes all of the elements from elements from the map. This however - * will not delete pointers if the mapped type is a pointer type. - */ - Map<Key, T> &clear(); - - /*! - * The number of elements in the map. - * - * \see isEmpty() - */ - uint size() const; - - /*! - * Returns true if the map is empty. - * - * \see size() - */ - bool isEmpty() const; - - /*! - * Find the first occurrence of \a key. - */ - Iterator find(const Key &key); - - /*! - * Find the first occurrence of \a key. - */ - ConstIterator find(const Key &key) const; - - /*! - * Returns true if the map contains an instance of \a key. - */ - bool contains(const Key &key) const; - - /*! - * Erase the item at \a it from the list. - */ - Map<Key, T> &erase(Iterator it); - - /*! - * Erase the item with \a key from the list. - */ - Map<Key, T> &erase(const Key &key); - - /*! - * Returns a reference to the value associated with \a key. - * - * \note This has undefined behavior if the key is not present in the map. - */ - const T &operator[](const Key &key) const; - - /*! - * Returns a reference to the value associated with \a key. - * - * \note This has undefined behavior if the key is not present in the map. - */ - T &operator[](const Key &key); - - /*! - * Make a shallow, implicitly shared, copy of \a m. Because this is - * implicitly shared, this method is lightweight and suitable for - * pass-by-value usage. - */ - Map<Key, T> &operator=(const Map<Key, T> &m); - - protected: - /* - * If this List is being shared via implicit sharing, do a deep copy of the - * data and separate from the shared members. This should be called by all - * non-const subclass members. - */ - void detach(); - - private: -#ifndef DO_NOT_DOCUMENT - template <class KeyP, class TP> class MapPrivate; - MapPrivate<Key, T> *d; -#endif - }; - -} - -// Since GCC doesn't support the "export" keyword, we have to include the -// implementation. - -#include "tmap.tcc" - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tmap.tcc b/platform/win32/msvc/external/taglib/taglib/toolkit/tmap.tcc deleted file mode 100644 index 0f2b99332e5..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tmap.tcc +++ /dev/null @@ -1,196 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -namespace TagLib { - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -template <class Key, class T> -template <class KeyP, class TP> -class Map<Key, T>::MapPrivate : public RefCounter -{ -public: - MapPrivate() : RefCounter() {} -#ifdef WANT_CLASS_INSTANTIATION_OF_MAP - MapPrivate(const std::map<class KeyP, class TP>& m) : RefCounter(), map(m) {} - std::map<class KeyP, class TP> map; -#else - MapPrivate(const std::map<KeyP, TP>& m) : RefCounter(), map(m) {} - std::map<KeyP, TP> map; -#endif -}; - -template <class Key, class T> -Map<Key, T>::Map() -{ - d = new MapPrivate<Key, T>; -} - -template <class Key, class T> -Map<Key, T>::Map(const Map<Key, T> &m) : d(m.d) -{ - d->ref(); -} - -template <class Key, class T> -Map<Key, T>::~Map() -{ - if(d->deref()) - delete(d); -} - -template <class Key, class T> -typename Map<Key, T>::Iterator Map<Key, T>::begin() -{ - detach(); - return d->map.begin(); -} - -template <class Key, class T> -typename Map<Key, T>::ConstIterator Map<Key, T>::begin() const -{ - return d->map.begin(); -} - -template <class Key, class T> -typename Map<Key, T>::Iterator Map<Key, T>::end() -{ - detach(); - return d->map.end(); -} - -template <class Key, class T> -typename Map<Key, T>::ConstIterator Map<Key, T>::end() const -{ - return d->map.end(); -} - -template <class Key, class T> -Map<Key, T> &Map<Key, T>::insert(const Key &key, const T &value) -{ - detach(); - d->map[key] = value; - return *this; -} - -template <class Key, class T> -Map<Key, T> &Map<Key, T>::clear() -{ - detach(); - d->map.clear(); - return *this; -} - -template <class Key, class T> -bool Map<Key, T>::isEmpty() const -{ - return d->map.empty(); -} - -template <class Key, class T> -typename Map<Key, T>::Iterator Map<Key, T>::find(const Key &key) -{ - detach(); - return d->map.find(key); -} - -template <class Key, class T> -typename Map<Key,T>::ConstIterator Map<Key, T>::find(const Key &key) const -{ - return d->map.find(key); -} - -template <class Key, class T> -bool Map<Key, T>::contains(const Key &key) const -{ - return d->map.find(key) != d->map.end(); -} - -template <class Key, class T> -Map<Key, T> &Map<Key,T>::erase(Iterator it) -{ - detach(); - d->map.erase(it); - return *this; -} - -template <class Key, class T> -Map<Key, T> &Map<Key,T>::erase(const Key &key) -{ - detach(); - Iterator it = d->map.find(key); - if(it != d->map.end()) - d->map.erase(it); - return *this; -} - -template <class Key, class T> -TagLib::uint Map<Key, T>::size() const -{ - return d->map.size(); -} - -template <class Key, class T> -const T &Map<Key, T>::operator[](const Key &key) const -{ - return d->map[key]; -} - -template <class Key, class T> -T &Map<Key, T>::operator[](const Key &key) -{ - detach(); - return d->map[key]; -} - -template <class Key, class T> -Map<Key, T> &Map<Key, T>::operator=(const Map<Key, T> &m) -{ - if(&m == this) - return *this; - - if(d->deref()) - delete(d); - d = m.d; - d->ref(); - return *this; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -template <class Key, class T> -void Map<Key, T>::detach() -{ - if(d->count() > 1) { - d->deref(); - d = new MapPrivate<Key, T>(d->map); - } -} - -} // namespace TagLib diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tpropertymap.cpp b/platform/win32/msvc/external/taglib/taglib/toolkit/tpropertymap.cpp deleted file mode 100644 index 3317cc92749..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tpropertymap.cpp +++ /dev/null @@ -1,173 +0,0 @@ -/*************************************************************************** - copyright : (C) 2012 by Michael Helmling - email : helmling@mathematik.uni-kl.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "tpropertymap.h" -using namespace TagLib; - - -PropertyMap::PropertyMap() : SimplePropertyMap() -{ -} - -PropertyMap::PropertyMap(const PropertyMap &m) : SimplePropertyMap(m), unsupported(m.unsupported) -{ -} - -PropertyMap::PropertyMap(const SimplePropertyMap &m) -{ - for(SimplePropertyMap::ConstIterator it = m.begin(); it != m.end(); ++it){ - String key = it->first.upper(); - if(!key.isNull()) - insert(it->first, it->second); - else - unsupported.append(it->first); - } -} - -PropertyMap::~PropertyMap() -{ -} - -bool PropertyMap::insert(const String &key, const StringList &values) -{ - String realKey = key.upper(); - Iterator result = SimplePropertyMap::find(realKey); - if(result == end()) - SimplePropertyMap::insert(realKey, values); - else - SimplePropertyMap::operator[](realKey).append(values); - return true; -} - -bool PropertyMap::replace(const String &key, const StringList &values) -{ - String realKey = key.upper(); - SimplePropertyMap::erase(realKey); - SimplePropertyMap::insert(realKey, values); - return true; -} - -PropertyMap::Iterator PropertyMap::find(const String &key) -{ - return SimplePropertyMap::find(key.upper()); -} - -PropertyMap::ConstIterator PropertyMap::find(const String &key) const -{ - return SimplePropertyMap::find(key.upper()); -} - -bool PropertyMap::contains(const String &key) const -{ - return SimplePropertyMap::contains(key.upper()); -} - -bool PropertyMap::contains(const PropertyMap &other) const -{ - for(ConstIterator it = other.begin(); it != other.end(); ++it) { - if(!SimplePropertyMap::contains(it->first)) - return false; - if ((*this)[it->first] != it->second) - return false; - } - return true; -} - -PropertyMap &PropertyMap::erase(const String &key) -{ - SimplePropertyMap::erase(key.upper()); - return *this; -} - -PropertyMap &PropertyMap::erase(const PropertyMap &other) -{ - for(ConstIterator it = other.begin(); it != other.end(); ++it) - erase(it->first); - return *this; -} - -PropertyMap &PropertyMap::merge(const PropertyMap &other) -{ - for(PropertyMap::ConstIterator it = other.begin(); it != other.end(); ++it) - insert(it->first, it->second); - unsupported.append(other.unsupported); - return *this; -} - -const StringList &PropertyMap::operator[](const String &key) const -{ - return SimplePropertyMap::operator[](key.upper()); -} - -StringList &PropertyMap::operator[](const String &key) -{ - return SimplePropertyMap::operator[](key.upper()); -} - -bool PropertyMap::operator==(const PropertyMap &other) const -{ - for(ConstIterator it = other.begin(); it != other.end(); ++it) { - ConstIterator thisFind = find(it->first); - if( thisFind == end() || (thisFind->second != it->second) ) - return false; - } - for(ConstIterator it = begin(); it != end(); ++it) { - ConstIterator otherFind = other.find(it->first); - if( otherFind == other.end() || (otherFind->second != it->second) ) - return false; - } - return unsupported == other.unsupported; -} - -bool PropertyMap::operator!=(const PropertyMap &other) const -{ - return !(*this == other); -} - -String PropertyMap::toString() const -{ - String ret = ""; - for(ConstIterator it = begin(); it != end(); ++it) - ret += it->first+"="+it->second.toString(", ") + "\n"; - if(!unsupported.isEmpty()) - ret += "Unsupported Data: " + unsupported.toString(", ") + "\n"; - return ret; -} - -void PropertyMap::removeEmpty() -{ - StringList emptyKeys; - for(Iterator it = begin(); it != end(); ++it) - if(it->second.isEmpty()) - emptyKeys.append(it->first); - for(StringList::Iterator emptyIt = emptyKeys.begin(); emptyIt != emptyKeys.end(); emptyIt++ ) - erase(*emptyIt); -} - -StringList &PropertyMap::unsupportedData() -{ - return unsupported; -} - -const StringList &PropertyMap::unsupportedData() const -{ - return unsupported; -} diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tpropertymap.h b/platform/win32/msvc/external/taglib/taglib/toolkit/tpropertymap.h deleted file mode 100644 index 7f59b21ea03..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tpropertymap.h +++ /dev/null @@ -1,174 +0,0 @@ -/*************************************************************************** - copyright : (C) 2012 by Michael Helmling - email : helmling@mathematik.uni-kl.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef PROPERTYMAP_H_ -#define PROPERTYMAP_H_ - -#include "tmap.h" -#include "tstringlist.h" - -namespace TagLib { - - typedef Map<String,StringList> SimplePropertyMap; - - //! A map for format-independent <key,valuelist> tag representations. - - /*! - * This map implements a generic representation of textual audio metadata - * ("tags") realized as pairs of a case-insensitive key - * and a nonempty list of corresponding values, each value being an an arbitrary - * unicode String. - * - * Note that most metadata formats pose additional conditions on the tag keys. The - * most popular ones (Vorbis, APE, ID3v2) should support all ASCII only words of - * length between 2 and 16. - */ - - class TAGLIB_EXPORT PropertyMap: public SimplePropertyMap - { - public: - - typedef SimplePropertyMap::Iterator Iterator; - typedef SimplePropertyMap::ConstIterator ConstIterator; - - PropertyMap(); - - PropertyMap(const PropertyMap &m); - - /*! - * Creates a PropertyMap initialized from a SimplePropertyMap. Copies all - * entries from \a m that have valid keys. - * Invalid keys will be appended to the unsupportedData() list. - */ - PropertyMap(const SimplePropertyMap &m); - - virtual ~PropertyMap(); - - /*! - * Inserts \a values under \a key in the map. If \a key already exists, - * then \values will be appended to the existing StringList. - * The returned value indicates success, i.e. whether \a key is a - * valid key. - */ - bool insert(const String &key, const StringList &values); - - /*! - * Replaces any existing values for \a key with the given \a values, - * and simply insert them if \a key did not exist before. - * The returned value indicates success, i.e. whether \a key is a - * valid key. - */ - bool replace(const String &key, const StringList &values); - - /*! - * Find the first occurrence of \a key. - */ - Iterator find(const String &key); - - /*! - * Find the first occurrence of \a key. - */ - ConstIterator find(const String &key) const; - - /*! - * Returns true if the map contains values for \a key. - */ - bool contains(const String &key) const; - - /*! - * Returns true if this map contains all keys of \a other - * and the values coincide for that keys. Does not take - * the unsupportedData list into account. - */ - bool contains(const PropertyMap &other) const; - - /*! - * Erase the \a key and its values from the map. - */ - PropertyMap &erase(const String &key); - - /*! - * Erases from this map all keys that appear in \a other. - */ - PropertyMap &erase(const PropertyMap &other); - - /*! - * Merge the contents of \a other into this PropertyMap. - * If a key is contained in both maps, the values of the second - * are appended to that of the first. - * The unsupportedData() lists are concatenated as well. - */ - PropertyMap &merge(const PropertyMap &other); - - /*! - * Returns a reference to the value associated with \a key. - * - * \note: If \a key is not contained in the map, an empty - * StringList is returned without error. - */ - const StringList &operator[](const String &key) const; - - /*! - * Returns a reference to the value associated with \a key. - * - * \note: If \a key is not contained in the map, an empty - * StringList is returned. You can also directly add entries - * by using this function as an lvalue. - */ - StringList &operator[](const String &key); - - /*! - * Returns true if and only if \other has the same contents as this map. - */ - bool operator==(const PropertyMap &other) const; - - /*! - * Returns false if and only \other has the same contents as this map. - */ - bool operator!=(const PropertyMap &other) const; - - /*! - * If a PropertyMap is read from a File object using File::properties(), - * the StringList returned from this function will represent metadata - * that could not be parsed into the PropertyMap representation. This could - * be e.g. binary data, unknown ID3 frames, etc. - * You can remove items from the returned list, which tells TagLib to remove - * those unsupported elements if you call File::setProperties() with the - * same PropertyMap as argument. - */ - StringList &unsupportedData(); - const StringList &unsupportedData() const; - - /*! - * Removes all entries which have an empty value list. - */ - void removeEmpty(); - - String toString() const; - - private: - - - StringList unsupported; - }; - -} -#endif /* PROPERTYMAP_H_ */ diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tstring.cpp b/platform/win32/msvc/external/taglib/taglib/toolkit/tstring.cpp deleted file mode 100644 index 292f35333fd..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tstring.cpp +++ /dev/null @@ -1,844 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include "tstring.h" -#include "unicode.h" -#include "tdebug.h" -#include "tstringlist.h" - -#include <iostream> - -#include <string.h> - -namespace TagLib { - - inline unsigned short byteSwap(unsigned short x) - { - return (((x) >> 8) & 0xff) | (((x) & 0xff) << 8); - } - - inline unsigned short combine(unsigned char c1, unsigned char c2) - { - return (c1 << 8) | c2; - } -} - -using namespace TagLib; - -class String::StringPrivate : public RefCounter -{ -public: - StringPrivate(const wstring &s) : - RefCounter(), - data(s), - CString(0) {} - - StringPrivate() : - RefCounter(), - CString(0) {} - - ~StringPrivate() { - delete [] CString; - } - - wstring data; - - /*! - * This is only used to hold the a pointer to the most recent value of - * toCString. - */ - char *CString; -}; - -String String::null; - -//////////////////////////////////////////////////////////////////////////////// - -String::String() -{ - d = new StringPrivate; -} - -String::String(const String &s) : d(s.d) -{ - d->ref(); -} - -String::String(const std::string &s, Type t) -{ - d = new StringPrivate; - - if(t == UTF16 || t == UTF16BE || t == UTF16LE) { - debug("String::String() -- A std::string should not contain UTF16."); - return; - } - - int length = s.length(); - d->data.resize(length); - wstring::iterator targetIt = d->data.begin(); - - for(std::string::const_iterator it = s.begin(); it != s.end(); it++) { - *targetIt = uchar(*it); - ++targetIt; - } - - prepare(t); -} - -String::String(const wstring &s, Type t) -{ - d = new StringPrivate(s); - prepare(t); -} - -String::String(const wchar_t *s, Type t) -{ - d = new StringPrivate(s); - prepare(t); -} - -String::String(const char *s, Type t) -{ - d = new StringPrivate; - - if(t == UTF16 || t == UTF16BE || t == UTF16LE) { - debug("String::String() -- A const char * should not contain UTF16."); - return; - } - - int length = ::strlen(s); - d->data.resize(length); - - wstring::iterator targetIt = d->data.begin(); - - for(int i = 0; i < length; i++) { - *targetIt = uchar(s[i]); - ++targetIt; - } - - prepare(t); -} - -String::String(wchar_t c, Type t) -{ - d = new StringPrivate; - d->data += c; - prepare(t); -} - -String::String(char c, Type t) -{ - d = new StringPrivate; - - if(t == UTF16 || t == UTF16BE || t == UTF16LE) { - debug("String::String() -- A std::string should not contain UTF16."); - return; - } - - d->data += uchar(c); - prepare(t); -} - -String::String(const ByteVector &v, Type t) -{ - d = new StringPrivate; - - if(v.isEmpty()) - return; - - if(t == Latin1 || t == UTF8) { - - int length = 0; - d->data.resize(v.size()); - wstring::iterator targetIt = d->data.begin(); - for(ByteVector::ConstIterator it = v.begin(); it != v.end() && (*it); ++it) { - *targetIt = uchar(*it); - ++targetIt; - ++length; - } - d->data.resize(length); - } - else { - d->data.resize(v.size() / 2); - wstring::iterator targetIt = d->data.begin(); - - for(ByteVector::ConstIterator it = v.begin(); - it != v.end() && it + 1 != v.end() && combine(*it, *(it + 1)); - it += 2) - { - *targetIt = combine(*it, *(it + 1)); - ++targetIt; - } - } - prepare(t); -} - -//////////////////////////////////////////////////////////////////////////////// - -String::~String() -{ - if(d->deref()) - delete d; -} - -std::string String::to8Bit(bool unicode) const -{ - std::string s; - s.resize(d->data.size()); - - if(!unicode) { - std::string::iterator targetIt = s.begin(); - for(wstring::const_iterator it = d->data.begin(); it != d->data.end(); it++) { - *targetIt = char(*it); - ++targetIt; - } - return s; - } - - const int outputBufferSize = d->data.size() * 3 + 1; - - Unicode::UTF16 *sourceBuffer = new Unicode::UTF16[d->data.size() + 1]; - Unicode::UTF8 *targetBuffer = new Unicode::UTF8[outputBufferSize]; - - for(unsigned int i = 0; i < d->data.size(); i++) - sourceBuffer[i] = Unicode::UTF16(d->data[i]); - - const Unicode::UTF16 *source = sourceBuffer; - Unicode::UTF8 *target = targetBuffer; - - Unicode::ConversionResult result = - Unicode::ConvertUTF16toUTF8(&source, sourceBuffer + d->data.size(), - &target, targetBuffer + outputBufferSize, - Unicode::lenientConversion); - - if(result != Unicode::conversionOK) { - debug("String::to8Bit() - Unicode conversion error."); - } - - int newSize = target - targetBuffer; - s.resize(newSize); - targetBuffer[newSize] = 0; - - s = (char *) targetBuffer; - - delete [] sourceBuffer; - delete [] targetBuffer; - - return s; -} - -TagLib::wstring String::toWString() const -{ - return d->data; -} - -const char *String::toCString(bool unicode) const -{ - delete [] d->CString; - - std::string buffer = to8Bit(unicode); - d->CString = new char[buffer.size() + 1]; - -#if defined(_MSC_VER) && (_MSC_VER >= 1400) // VC++2005 or later - - strcpy_s(d->CString, buffer.size() + 1, buffer.c_str()); - -#else - - strcpy(d->CString, buffer.c_str()); - -#endif - - return d->CString; -} - -String::Iterator String::begin() -{ - return d->data.begin(); -} - -String::ConstIterator String::begin() const -{ - return d->data.begin(); -} - -String::Iterator String::end() -{ - return d->data.end(); -} - -String::ConstIterator String::end() const -{ - return d->data.end(); -} - -int String::find(const String &s, int offset) const -{ - wstring::size_type position = d->data.find(s.d->data, offset); - - if(position != wstring::npos) - return position; - else - return -1; -} - -int String::rfind(const String &s, int offset) const -{ - wstring::size_type position = - d->data.rfind(s.d->data, offset == -1 ? wstring::npos : offset); - - if(position != wstring::npos) - return position; - else - return -1; -} - -StringList String::split(const String &separator) const -{ - StringList list; - for(int index = 0;;) - { - int sep = find(separator, index); - if(sep < 0) - { - list.append(substr(index, size() - index)); - break; - } - else - { - list.append(substr(index, sep - index)); - index = sep + separator.size(); - } - } - return list; -} - -bool String::startsWith(const String &s) const -{ - if(s.length() > length()) - return false; - - return substr(0, s.length()) == s; -} - -String String::substr(uint position, uint n) const -{ - String s; - s.d->data = d->data.substr(position, n); - return s; -} - -String &String::append(const String &s) -{ - detach(); - d->data += s.d->data; - return *this; -} - -String String::upper() const -{ - String s; - - static int shift = 'A' - 'a'; - - for(wstring::const_iterator it = d->data.begin(); it != d->data.end(); ++it) { - if(*it >= 'a' && *it <= 'z') - s.d->data.push_back(*it + shift); - else - s.d->data.push_back(*it); - } - - return s; -} - -TagLib::uint String::size() const -{ - return d->data.size(); -} - -TagLib::uint String::length() const -{ - return size(); -} - -bool String::isEmpty() const -{ - return d->data.size() == 0; -} - -bool String::isNull() const -{ - return d == null.d; -} - -ByteVector String::data(Type t) const -{ - ByteVector v; - - switch(t) { - - case Latin1: - { - for(wstring::const_iterator it = d->data.begin(); it != d->data.end(); it++) - v.append(char(*it)); - break; - } - case UTF8: - { - std::string s = to8Bit(true); - v.setData(s.c_str(), s.length()); - break; - } - case UTF16: - { - // Assume that if we're doing UTF16 and not UTF16BE that we want little - // endian encoding. (Byte Order Mark) - - v.append(char(0xff)); - v.append(char(0xfe)); - - for(wstring::const_iterator it = d->data.begin(); it != d->data.end(); it++) { - - char c1 = *it & 0xff; - char c2 = *it >> 8; - - v.append(c1); - v.append(c2); - } - break; - } - case UTF16BE: - { - for(wstring::const_iterator it = d->data.begin(); it != d->data.end(); it++) { - - char c1 = *it >> 8; - char c2 = *it & 0xff; - - v.append(c1); - v.append(c2); - } - break; - } - case UTF16LE: - { - for(wstring::const_iterator it = d->data.begin(); it != d->data.end(); it++) { - - char c1 = *it & 0xff; - char c2 = *it >> 8; - - v.append(c1); - v.append(c2); - } - break; - } - } - - return v; -} - -int String::toInt() const -{ - return toInt(0); -} - -int String::toInt(bool *ok) const -{ - int value = 0; - - uint size = d->data.size(); - bool negative = size > 0 && d->data[0] == '-'; - uint start = negative ? 1 : 0; - uint i = start; - - for(; i < size && d->data[i] >= '0' && d->data[i] <= '9'; i++) - value = value * 10 + (d->data[i] - '0'); - - if(negative) - value = value * -1; - - if(ok) - *ok = (size > start && i == size); - - return value; -} - -String String::stripWhiteSpace() const -{ - wstring::const_iterator begin = d->data.begin(); - wstring::const_iterator end = d->data.end(); - - while(begin != end && - (*begin == '\t' || *begin == '\n' || *begin == '\f' || - *begin == '\r' || *begin == ' ')) - { - ++begin; - } - - if(begin == end) - return null; - - // There must be at least one non-whitespace character here for us to have - // gotten this far, so we should be safe not doing bounds checking. - - do { - --end; - } while(*end == '\t' || *end == '\n' || - *end == '\f' || *end == '\r' || *end == ' '); - - return String(wstring(begin, end + 1)); -} - -bool String::isLatin1() const -{ - for(wstring::const_iterator it = d->data.begin(); it != d->data.end(); it++) { - if(*it >= 256) - return false; - } - return true; -} - -bool String::isAscii() const -{ - for(wstring::const_iterator it = d->data.begin(); it != d->data.end(); it++) { - if(*it >= 128) - return false; - } - return true; -} - -String String::number(int n) // static -{ - if(n == 0) - return String("0"); - - String charStack; - - bool negative = n < 0; - - if(negative) - n = n * -1; - - while(n > 0) { - int remainder = n % 10; - charStack += char(remainder + '0'); - n = (n - remainder) / 10; - } - - String s; - - if(negative) - s += '-'; - - for(int i = charStack.d->data.size() - 1; i >= 0; i--) - s += charStack.d->data[i]; - - return s; -} - -TagLib::wchar &String::operator[](int i) -{ - detach(); - - return d->data[i]; -} - -const TagLib::wchar &String::operator[](int i) const -{ - return d->data[i]; -} - -bool String::operator==(const String &s) const -{ - return d == s.d || d->data == s.d->data; -} - -bool String::operator!=(const String &s) const -{ - return !operator==(s); -} - -String &String::operator+=(const String &s) -{ - detach(); - - d->data += s.d->data; - return *this; -} - -String &String::operator+=(const wchar_t *s) -{ - detach(); - - d->data += s; - return *this; -} - -String &String::operator+=(const char *s) -{ - detach(); - - for(int i = 0; s[i] != 0; i++) - d->data += uchar(s[i]); - return *this; -} - -String &String::operator+=(wchar_t c) -{ - detach(); - - d->data += c; - return *this; -} - -String &String::operator+=(char c) -{ - detach(); - - d->data += uchar(c); - return *this; -} - -String &String::operator=(const String &s) -{ - if(&s == this) - return *this; - - if(d->deref()) - delete d; - d = s.d; - d->ref(); - return *this; -} - -String &String::operator=(const std::string &s) -{ - if(d->deref()) - delete d; - - d = new StringPrivate; - - d->data.resize(s.size()); - - wstring::iterator targetIt = d->data.begin(); - for(std::string::const_iterator it = s.begin(); it != s.end(); it++) { - *targetIt = uchar(*it); - ++targetIt; - } - - return *this; -} - -String &String::operator=(const wstring &s) -{ - if(d->deref()) - delete d; - d = new StringPrivate(s); - return *this; -} - -String &String::operator=(const wchar_t *s) -{ - if(d->deref()) - delete d; - d = new StringPrivate(s); - return *this; -} - -String &String::operator=(char c) -{ - if(d->deref()) - delete d; - d = new StringPrivate; - d->data += uchar(c); - return *this; -} - -String &String::operator=(wchar_t c) -{ - if(d->deref()) - delete d; - d = new StringPrivate; - d->data += c; - return *this; -} - -String &String::operator=(const char *s) -{ - if(d->deref()) - delete d; - - d = new StringPrivate; - - int length = ::strlen(s); - d->data.resize(length); - - wstring::iterator targetIt = d->data.begin(); - for(int i = 0; i < length; i++) { - *targetIt = uchar(s[i]); - ++targetIt; - } - - return *this; -} - -String &String::operator=(const ByteVector &v) -{ - if(d->deref()) - delete d; - - d = new StringPrivate; - d->data.resize(v.size()); - wstring::iterator targetIt = d->data.begin(); - - uint i = 0; - - for(ByteVector::ConstIterator it = v.begin(); it != v.end() && (*it); ++it) { - *targetIt = uchar(*it); - ++targetIt; - ++i; - } - - // If we hit a null in the ByteVector, shrink the string again. - - d->data.resize(i); - - return *this; -} - -bool String::operator<(const String &s) const -{ - return d->data < s.d->data; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void String::detach() -{ - if(d->count() > 1) { - d->deref(); - d = new StringPrivate(d->data); - } -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void String::prepare(Type t) -{ - switch(t) { - case UTF16: - { - if(d->data.size() >= 1 && (d->data[0] == 0xfeff || d->data[0] == 0xfffe)) { - bool swap = d->data[0] != 0xfeff; - d->data.erase(d->data.begin(), d->data.begin() + 1); - if(swap) { - for(uint i = 0; i < d->data.size(); i++) - d->data[i] = byteSwap((unsigned short)d->data[i]); - } - } - else { - debug("String::prepare() - Invalid UTF16 string."); - d->data.erase(d->data.begin(), d->data.end()); - } - break; - } - case UTF8: - { - int bufferSize = d->data.size() + 1; - Unicode::UTF8 *sourceBuffer = new Unicode::UTF8[bufferSize]; - Unicode::UTF16 *targetBuffer = new Unicode::UTF16[bufferSize]; - - unsigned int i = 0; - for(; i < d->data.size(); i++) - sourceBuffer[i] = Unicode::UTF8(d->data[i]); - sourceBuffer[i] = 0; - - const Unicode::UTF8 *source = sourceBuffer; - Unicode::UTF16 *target = targetBuffer; - - Unicode::ConversionResult result = - Unicode::ConvertUTF8toUTF16(&source, sourceBuffer + bufferSize, - &target, targetBuffer + bufferSize, - Unicode::lenientConversion); - - if(result != Unicode::conversionOK) { - debug("String::prepare() - Unicode conversion error."); - } - - int newSize = target != targetBuffer ? target - targetBuffer - 1 : 0; - d->data.resize(newSize); - - for(int i = 0; i < newSize; i++) - d->data[i] = targetBuffer[i]; - - delete [] sourceBuffer; - delete [] targetBuffer; - - break; - } - case UTF16LE: - { - for(uint i = 0; i < d->data.size(); i++) - d->data[i] = byteSwap((unsigned short)d->data[i]); - break; - } - default: - break; - } -} - -//////////////////////////////////////////////////////////////////////////////// -// related functions -//////////////////////////////////////////////////////////////////////////////// - -const TagLib::String operator+(const TagLib::String &s1, const TagLib::String &s2) -{ - String s(s1); - s.append(s2); - return s; -} - -const TagLib::String operator+(const char *s1, const TagLib::String &s2) -{ - String s(s1); - s.append(s2); - return s; -} - -const TagLib::String operator+(const TagLib::String &s1, const char *s2) -{ - String s(s1); - s.append(s2); - return s; -} - -std::ostream &operator<<(std::ostream &s, const String &str) -{ - s << str.to8Bit(); - return s; -} diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tstring.h b/platform/win32/msvc/external/taglib/taglib/toolkit/tstring.h deleted file mode 100644 index 759a175ae64..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tstring.h +++ /dev/null @@ -1,496 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_STRING_H -#define TAGLIB_STRING_H - -#include "taglib_export.h" -#include "taglib.h" -#include "tbytevector.h" - -#include <string> -#include <iostream> - -/*! - * \relates TagLib::String - * - * Converts a QString to a TagLib::String without a requirement to link to Qt. - * - * \note consider conversion via usual char-by-char for loop to avoid UTF16->UTF8->UTF16 - * conversion happening in the background - */ -#define QStringToTString(s) TagLib::String(s.utf8().data(), TagLib::String::UTF8) - -/*! - * \relates TagLib::String - * - * Converts a TagLib::String to a QString without a requirement to link to Qt. - * - * \note consider conversion via usual char-by-char for loop to avoid UTF16->UTF8->UTF16 - * conversion happening in the background - * - */ -#define TStringToQString(s) QString::fromUtf8(s.toCString(true)) - -namespace TagLib { - - class StringList; - - //! A \e wide string class suitable for unicode. - - /*! - * This is an implicitly shared \e wide string. For storage it uses - * TagLib::wstring, but as this is an <i>implementation detail</i> this of - * course could change. Strings are stored internally as UTF-16BE. (Without - * the BOM (Byte Order Mark) - * - * The use of implicit sharing means that copying a string is cheap, the only - * \e cost comes into play when the copy is modified. Prior to that the string - * just has a pointer to the data of the \e parent String. This also makes - * this class suitable as a function return type. - * - * In addition to adding implicit sharing, this class keeps track of four - * possible encodings, which are the four supported by the ID3v2 standard. - */ - - class TAGLIB_EXPORT String - { - public: - -#ifndef DO_NOT_DOCUMENT - typedef std::basic_string<wchar>::iterator Iterator; - typedef std::basic_string<wchar>::const_iterator ConstIterator; -#endif - - /** - * The four types of string encodings supported by the ID3v2 specification. - * ID3v1 is assumed to be Latin1 and Ogg Vorbis comments use UTF8. - */ - enum Type { - /*! - * IS08859-1, or <i>Latin1</i> encoding. 8 bit characters. - */ - Latin1 = 0, - /*! - * UTF16 with a <i>byte order mark</i>. 16 bit characters. - */ - UTF16 = 1, - /*! - * UTF16 <i>big endian</i>. 16 bit characters. This is the encoding used - * internally by TagLib. - */ - UTF16BE = 2, - /*! - * UTF8 encoding. Characters are usually 8 bits but can be up to 32. - */ - UTF8 = 3, - /*! - * UTF16 <i>little endian</i>. 16 bit characters. - */ - UTF16LE = 4 - }; - - /*! - * Constructs an empty String. - */ - String(); - - /*! - * Make a shallow, implicitly shared, copy of \a s. Because this is - * implicitly shared, this method is lightweight and suitable for - * pass-by-value usage. - */ - String(const String &s); - - /*! - * Makes a deep copy of the data in \a s. - * - * \note This should only be used with the 8-bit codecs Latin1 and UTF8, when - * used with other codecs it will simply print a warning and exit. - */ - String(const std::string &s, Type t = Latin1); - - /*! - * Makes a deep copy of the data in \a s. - */ - String(const wstring &s, Type t = UTF16BE); - - /*! - * Makes a deep copy of the data in \a s. - */ - String(const wchar_t *s, Type t = UTF16BE); - - /*! - * Makes a deep copy of the data in \a c. - * - * \note This should only be used with the 8-bit codecs Latin1 and UTF8, when - * used with other codecs it will simply print a warning and exit. - */ - String(char c, Type t = Latin1); - - /*! - * Makes a deep copy of the data in \a c. - */ - String(wchar_t c, Type t = Latin1); - - - /*! - * Makes a deep copy of the data in \a s. - * - * \note This should only be used with the 8-bit codecs Latin1 and UTF8, when - * used with other codecs it will simply print a warning and exit. - */ - String(const char *s, Type t = Latin1); - - /*! - * Makes a deep copy of the data in \a s. - * - * \note This should only be used with the 8-bit codecs Latin1 and UTF8, when - * used with other codecs it will simply print a warning and exit. - */ - String(const ByteVector &v, Type t = Latin1); - - /*! - * Destroys this String instance. - */ - virtual ~String(); - - /*! - * If \a unicode if false (the default) this will return a \e Latin1 encoded - * std::string. If it is true the returned std::wstring will be UTF-8 - * encoded. - */ - std::string to8Bit(bool unicode = false) const; - - /*! - * Returns a wstring version of the TagLib string as a wide string. - */ - wstring toWString() const; - - /*! - * Creates and returns a C-String based on the data. This string is still - * owned by the String (class) and as such should not be deleted by the user. - * - * If \a unicode if false (the default) this string will be encoded in - * \e Latin1. If it is true the returned C-String will be UTF-8 encoded. - * - * This string remains valid until the String instance is destroyed or - * another export method is called. - * - * \warning This however has the side effect that this C-String will remain - * in memory <b>in addition to</b> other memory that is consumed by the - * String instance. So, this method should not be used on large strings or - * where memory is critical. - */ - const char *toCString(bool unicode = false) const; - - /*! - * Returns an iterator pointing to the beginning of the string. - */ - Iterator begin(); - - /*! - * Returns a const iterator pointing to the beginning of the string. - */ - ConstIterator begin() const; - - /*! - * Returns an iterator pointing to the end of the string (the position - * after the last character). - */ - Iterator end(); - - /*! - * Returns a const iterator pointing to the end of the string (the position - * after the last character). - */ - ConstIterator end() const; - - /*! - * Finds the first occurrence of pattern \a s in this string starting from - * \a offset. If the pattern is not found, -1 is returned. - */ - int find(const String &s, int offset = 0) const; - - /*! - * Finds the last occurrence of pattern \a s in this string, searched backwards, - * either from the end of the string or starting from \a offset. If the pattern - * is not found, -1 is returned. - */ - int rfind(const String &s, int offset = -1) const; - - /*! - * Splits the string on each occurrence of \a separator. - */ - StringList split(const String &separator = " ") const; - - /*! - * Returns true if the strings starts with the substring \a s. - */ - bool startsWith(const String &s) const; - - /*! - * Extract a substring from this string starting at \a position and - * continuing for \a n characters. - */ - String substr(uint position, uint n = 0xffffffff) const; - - /*! - * Append \a s to the current string and return a reference to the current - * string. - */ - String &append(const String &s); - - /*! - * Returns an upper case version of the string. - * - * \warning This only works for the characters in US-ASCII, i.e. A-Z. - */ - String upper() const; - - /*! - * Returns the size of the string. - */ - uint size() const; - - /*! - * Returns the length of the string. Equivalent to size(). - */ - uint length() const; - - /*! - * Returns true if the string is empty. - * - * \see isNull() - */ - bool isEmpty() const; - - /*! - * Returns true if this string is null -- i.e. it is a copy of the - * String::null string. - * - * \note A string can be empty and not null. - * \see isEmpty() - */ - bool isNull() const; - - /*! - * Returns a ByteVector containing the string's data. If \a t is Latin1 or - * UTF8, this will return a vector of 8 bit characters, otherwise it will use - * 16 bit characters. - */ - ByteVector data(Type t) const; - - /*! - * Convert the string to an integer. - * - * Returns the integer if the conversion was successfull or 0 if the - * string does not represent a number. - */ - // BIC: merge with the method below - int toInt() const; - - /*! - * Convert the string to an integer. - * - * If the conversion was successfull, it sets the value of \a *ok to - * true and returns the integer. Otherwise it sets \a *ok to false - * and the result is undefined. - */ - int toInt(bool *ok) const; - - /*! - * Returns a string with the leading and trailing whitespace stripped. - */ - String stripWhiteSpace() const; - - /*! - * Returns true if the file only uses characters required by Latin1. - */ - bool isLatin1() const; - - /*! - * Returns true if the file only uses characters required by (7-bit) ASCII. - */ - bool isAscii() const; - - /*! - * Converts the base-10 integer \a n to a string. - */ - static String number(int n); - - /*! - * Returns a reference to the character at position \a i. - */ - wchar &operator[](int i); - - /*! - * Returns a const reference to the character at position \a i. - */ - const wchar &operator[](int i) const; - - /*! - * Compares each character of the String with each character of \a s and - * returns true if the strings match. - */ - bool operator==(const String &s) const; - - /*! - * Compares each character of the String with each character of \a s and - * returns false if the strings match. - */ - bool operator!=(const String &s) const; - - /*! - * Appends \a s to the end of the String. - */ - String &operator+=(const String &s); - - /*! - * Appends \a s to the end of the String. - */ - String &operator+=(const wchar_t* s); - - /*! - * Appends \a s to the end of the String. - */ - String &operator+=(const char* s); - - /*! - * Appends \a s to the end of the String. - */ - String &operator+=(wchar_t c); - - /*! - * Appends \a c to the end of the String. - */ - String &operator+=(char c); - - /*! - * Performs a shallow, implicitly shared, copy of \a s, overwriting the - * String's current data. - */ - String &operator=(const String &s); - - /*! - * Performs a deep copy of the data in \a s. - */ - String &operator=(const std::string &s); - - /*! - * Performs a deep copy of the data in \a s. - */ - String &operator=(const wstring &s); - - /*! - * Performs a deep copy of the data in \a s. - */ - String &operator=(const wchar_t *s); - - /*! - * Performs a deep copy of the data in \a s. - */ - String &operator=(char c); - - /*! - * Performs a deep copy of the data in \a s. - */ - String &operator=(wchar_t c); - - /*! - * Performs a deep copy of the data in \a s. - */ - String &operator=(const char *s); - - /*! - * Performs a deep copy of the data in \a v. - */ - String &operator=(const ByteVector &v); - - /*! - * To be able to use this class in a Map, this operator needed to be - * implemented. Returns true if \a s is less than this string in a bytewise - * comparison. - */ - bool operator<(const String &s) const; - - /*! - * A null string provided for convenience. - */ - static String null; - - protected: - /*! - * If this String is being shared via implicit sharing, do a deep copy of the - * data and separate from the shared members. This should be called by all - * non-const subclass members. - */ - void detach(); - - private: - /*! - * This checks to see if the string is in \e UTF-16 (with BOM) or \e UTF-8 - * format and if so converts it to \e UTF-16BE for internal use. \e Latin1 - * does not require conversion since it is a subset of \e UTF-16BE and - * \e UTF16-BE requires no conversion since it is used internally. - */ - void prepare(Type t); - - class StringPrivate; - StringPrivate *d; - }; - -} - -/*! - * \relates TagLib::String - * - * Concatenates \a s1 and \a s2 and returns the result as a string. - */ -TAGLIB_EXPORT const TagLib::String operator+(const TagLib::String &s1, const TagLib::String &s2); - -/*! - * \relates TagLib::String - * - * Concatenates \a s1 and \a s2 and returns the result as a string. - */ -TAGLIB_EXPORT const TagLib::String operator+(const char *s1, const TagLib::String &s2); - -/*! - * \relates TagLib::String - * - * Concatenates \a s1 and \a s2 and returns the result as a string. - */ -TAGLIB_EXPORT const TagLib::String operator+(const TagLib::String &s1, const char *s2); - - -/*! - * \relates TagLib::String - * - * Send the string to an output stream. - */ -TAGLIB_EXPORT std::ostream &operator<<(std::ostream &s, const TagLib::String &str); - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tstringlist.cpp b/platform/win32/msvc/external/taglib/taglib/toolkit/tstringlist.cpp deleted file mode 100644 index 655fe6c4b5c..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tstringlist.cpp +++ /dev/null @@ -1,123 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include "tstringlist.h" - -using namespace TagLib; - -class StringListPrivate -{ - -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -StringList StringList::split(const String &s, const String &pattern) -{ - StringList l; - - int previousOffset = 0; - for(int offset = s.find(pattern); offset != -1; offset = s.find(pattern, offset + 1)) { - l.append(s.substr(previousOffset, offset - previousOffset)); - previousOffset = offset + 1; - } - - l.append(s.substr(previousOffset, s.size() - previousOffset)); - - return l; -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -StringList::StringList() : List<String>() -{ - -} - -StringList::StringList(const StringList &l) : List<String>(l) -{ - -} - -StringList::StringList(const String &s) : List<String>() -{ - append(s); -} - -StringList::StringList(const ByteVectorList &bl, String::Type t) : List<String>() -{ - ByteVectorList::ConstIterator i = bl.begin(); - for(;i != bl.end(); i++) { - append(String(*i, t)); - } -} - -StringList::~StringList() -{ - -} - -String StringList::toString(const String &separator) const -{ - String s; - - ConstIterator it = begin(); - ConstIterator itEnd = end(); - - while(it != itEnd) { - s += *it; - it++; - if(it != itEnd) - s += separator; - } - - return s; -} - -StringList &StringList::append(const String &s) -{ - List<String>::append(s); - return *this; -} - -StringList &StringList::append(const StringList &l) -{ - List<String>::append(l); - return *this; -} - -//////////////////////////////////////////////////////////////////////////////// -// related functions -//////////////////////////////////////////////////////////////////////////////// - -std::ostream &operator<<(std::ostream &s, const StringList &l) -{ - s << l.toString(); - return s; -} diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/tstringlist.h b/platform/win32/msvc/external/taglib/taglib/toolkit/tstringlist.h deleted file mode 100644 index f94b50f5abb..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/tstringlist.h +++ /dev/null @@ -1,115 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_STRINGLIST_H -#define TAGLIB_STRINGLIST_H - -#include "tstring.h" -#include "tlist.h" -#include "tbytevectorlist.h" -#include "taglib_export.h" - -#include <iostream> - -namespace TagLib { - - //! A list of strings - - /*! - * This is a spcialization of the List class with some members convention for - * string operations. - */ - - class TAGLIB_EXPORT StringList : public List<String> - { - public: - - /*! - * Constructs an empty StringList. - */ - StringList(); - - /*! - * Make a shallow, implicitly shared, copy of \a l. Because this is - * implicitly shared, this method is lightweight and suitable for - * pass-by-value usage. - */ - StringList(const StringList &l); - - /*! - * Constructs a StringList with \a s as a member. - */ - StringList(const String &s); - - /*! - * Makes a deep copy of the data in \a vl. - * - * \note This should only be used with the 8-bit codecs Latin1 and UTF8, when - * used with other codecs it will simply print a warning and exit. - */ - StringList(const ByteVectorList &vl, String::Type t = String::Latin1); - - /*! - * Destroys this StringList instance. - */ - virtual ~StringList(); - - /*! - * Concatenate the list of strings into one string separated by \a separator. - */ - String toString(const String &separator = " ") const; - - /*! - * Appends \a s to the end of the list and returns a reference to the - * list. - */ - StringList &append(const String &s); - - /*! - * Appends all of the values in \a l to the end of the list and returns a - * reference to the list. - */ - StringList &append(const StringList &l); - - /*! - * Splits the String \a s into several strings at \a pattern. This will not include - * the pattern in the returned strings. - */ - static StringList split(const String &s, const String &pattern); - - private: - class StringListPrivate; - StringListPrivate *d; - }; - -} - -/*! - * \related TagLib::StringList - * Send the StringList to an output stream. - */ -std::ostream &operator<<(std::ostream &s, const TagLib::StringList &l); - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/unicode.cpp b/platform/win32/msvc/external/taglib/taglib/toolkit/unicode.cpp deleted file mode 100644 index 1b26977e526..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/unicode.cpp +++ /dev/null @@ -1,303 +0,0 @@ -/******************************************************************************* - * * - * THIS FILE IS INCLUDED IN TAGLIB, BUT IS NOT COPYRIGHTED BY THE TAGLIB * - * AUTHORS, NOT PART OF THE TAGLIB API AND COULD GO AWAY AT ANY POINT IN TIME. * - * AS SUCH IT SHOULD BE CONSIERED FOR INTERNAL USE ONLY. * - * * - *******************************************************************************/ - -/* - * Copyright 2001 Unicode, Inc. - * - * Disclaimer - * - * This source code is provided as is by Unicode, Inc. No claims are - * made as to fitness for any particular purpose. No warranties of any - * kind are expressed or implied. The recipient agrees to determine - * applicability of information provided. If this file has been - * purchased on magnetic or optical media from Unicode, Inc., the - * sole remedy for any claim will be exchange of defective media - * within 90 days of receipt. - * - * Limitations on Rights to Redistribute This Code - * - * Unicode, Inc. hereby grants the right to freely use the information - * supplied in this file in the creation of products supporting the - * Unicode Standard, and to make copies of this file in any form - * for internal or external distribution as long as this notice - * remains attached. - */ - -/* - * This file has been modified by Scott Wheeler <wheeler@kde.org> to remove - * the UTF32 conversion functions and to place the appropriate functions - * in their own C++ namespace. - */ - -/* --------------------------------------------------------------------- - - Conversions between UTF32, UTF-16, and UTF-8. Source code file. - Author: Mark E. Davis, 1994. - Rev History: Rick McGowan, fixes & updates May 2001. - Sept 2001: fixed const & error conditions per - mods suggested by S. Parent & A. Lillich. - - See the header file "ConvertUTF.h" for complete documentation. - ------------------------------------------------------------------------- */ - - -#include "unicode.h" -#include <stdio.h> - -#define UNI_SUR_HIGH_START (UTF32)0xD800 -#define UNI_SUR_HIGH_END (UTF32)0xDBFF -#define UNI_SUR_LOW_START (UTF32)0xDC00 -#define UNI_SUR_LOW_END (UTF32)0xDFFF -#define false 0 -#define true 1 - -namespace Unicode { - -static const int halfShift = 10; /* used for shifting by 10 bits */ - -static const UTF32 halfBase = 0x0010000UL; -static const UTF32 halfMask = 0x3FFUL; - -/* - * Index into the table below with the first byte of a UTF-8 sequence to - * get the number of trailing bytes that are supposed to follow it. - */ -static const char trailingBytesForUTF8[256] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5 -}; - -/* - * Magic values subtracted from a buffer value during UTF8 conversion. - * This table contains as many values as there might be trailing bytes - * in a UTF-8 sequence. - */ -static const UTF32 offsetsFromUTF8[6] = { 0x00000000UL, 0x00003080UL, 0x000E2080UL, - 0x03C82080UL, 0xFA082080UL, 0x82082080UL }; - -/* - * Once the bits are split out into bytes of UTF-8, this is a mask OR-ed - * into the first byte, depending on how many bytes follow. There are - * as many entries in this table as there are UTF-8 sequence types. - * (I.e., one byte sequence, two byte... six byte sequence.) - */ -static const UTF8 firstByteMark[7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC }; - -/* --------------------------------------------------------------------- */ - -/* The interface converts a whole buffer to avoid function-call overhead. - * Constants have been gathered. Loops & conditionals have been removed as - * much as possible for efficiency, in favor of drop-through switches. - * (See "Note A" at the bottom of the file for equivalent code.) - * If your compiler supports it, the "isLegalUTF8" call can be turned - * into an inline function. - */ - -/* --------------------------------------------------------------------- */ - -ConversionResult ConvertUTF16toUTF8 ( - const UTF16** sourceStart, const UTF16* sourceEnd, - UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags) { - ConversionResult result = conversionOK; - const UTF16* source = *sourceStart; - UTF8* target = *targetStart; - while (source < sourceEnd) { - UTF32 ch; - unsigned short bytesToWrite = 0; - const UTF32 byteMask = 0xBF; - const UTF32 byteMark = 0x80; - const UTF16* oldSource = source; /* In case we have to back up because of target overflow. */ - ch = *source++; - /* If we have a surrogate pair, convert to UTF32 first. */ - if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_HIGH_END && source < sourceEnd) { - UTF32 ch2 = *source; - if (ch2 >= UNI_SUR_LOW_START && ch2 <= UNI_SUR_LOW_END) { - ch = ((ch - UNI_SUR_HIGH_START) << halfShift) - + (ch2 - UNI_SUR_LOW_START) + halfBase; - ++source; - } else if (flags == strictConversion) { /* it's an unpaired high surrogate */ - --source; /* return to the illegal value itself */ - result = sourceIllegal; - break; - } - } else if ((flags == strictConversion) && (ch >= UNI_SUR_LOW_START && ch <= UNI_SUR_LOW_END)) { - --source; /* return to the illegal value itself */ - result = sourceIllegal; - break; - } - /* Figure out how many bytes the result will require */ - if (ch < (UTF32)0x80) { bytesToWrite = 1; - } else if (ch < (UTF32)0x800) { bytesToWrite = 2; - } else if (ch < (UTF32)0x10000) { bytesToWrite = 3; - } else if (ch < (UTF32)0x200000) { bytesToWrite = 4; - } else { bytesToWrite = 2; - ch = UNI_REPLACEMENT_CHAR; - } - // printf("bytes to write = %i\n", bytesToWrite); - target += bytesToWrite; - if (target > targetEnd) { - source = oldSource; /* Back up source pointer! */ - target -= bytesToWrite; result = targetExhausted; break; - } - switch (bytesToWrite) { /* note: everything falls through. */ - case 4: *--target = (ch | byteMark) & byteMask; ch >>= 6; - case 3: *--target = (ch | byteMark) & byteMask; ch >>= 6; - case 2: *--target = (ch | byteMark) & byteMask; ch >>= 6; - case 1: *--target = (UTF8)(ch | firstByteMark[bytesToWrite]); - } - target += bytesToWrite; - } - *sourceStart = source; - *targetStart = target; - return result; -} - -/* --------------------------------------------------------------------- */ - -/* - * Utility routine to tell whether a sequence of bytes is legal UTF-8. - * This must be called with the length pre-determined by the first byte. - * If not calling this from ConvertUTF8to*, then the length can be set by: - * length = trailingBytesForUTF8[*source]+1; - * and the sequence is illegal right away if there aren't that many bytes - * available. - * If presented with a length > 4, this returns false. The Unicode - * definition of UTF-8 goes up to 4-byte sequences. - */ - -static Boolean isLegalUTF8(const UTF8 *source, int length) { - UTF8 a; - const UTF8 *srcptr = source+length; - switch (length) { - default: return false; - /* Everything else falls through when "true"... */ - case 4: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return false; - case 3: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return false; - case 2: if ((a = (*--srcptr)) > 0xBF) return false; - switch (*source) { - /* no fall-through in this inner switch */ - case 0xE0: if (a < 0xA0) return false; break; - case 0xF0: if (a < 0x90) return false; break; - case 0xF4: if (a > 0x8F) return false; break; - default: if (a < 0x80) return false; - } - case 1: if (*source >= 0x80 && *source < 0xC2) return false; - if (*source > 0xF4) return false; - } - return true; -} - -/* --------------------------------------------------------------------- */ - -/* - * Exported function to return whether a UTF-8 sequence is legal or not. - * This is not used here; it's just exported. - */ -Boolean isLegalUTF8Sequence(const UTF8 *source, const UTF8 *sourceEnd) { - int length = trailingBytesForUTF8[*source]+1; - if (source+length > sourceEnd) { - return false; - } - return isLegalUTF8(source, length); -} - -/* --------------------------------------------------------------------- */ - -ConversionResult ConvertUTF8toUTF16 ( - const UTF8** sourceStart, const UTF8* sourceEnd, - UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags) { - ConversionResult result = conversionOK; - const UTF8* source = *sourceStart; - UTF16* target = *targetStart; - while (source < sourceEnd) { - UTF32 ch = 0; - unsigned short extraBytesToRead = trailingBytesForUTF8[*source]; - if (source + extraBytesToRead >= sourceEnd) { - result = sourceExhausted; break; - } - /* Do this check whether lenient or strict */ - if (! isLegalUTF8(source, extraBytesToRead+1)) { - result = sourceIllegal; - break; - } - /* - * The cases all fall through. See "Note A" below. - */ - switch (extraBytesToRead) { - case 3: ch += *source++; ch <<= 6; - case 2: ch += *source++; ch <<= 6; - case 1: ch += *source++; ch <<= 6; - case 0: ch += *source++; - } - ch -= offsetsFromUTF8[extraBytesToRead]; - - if (target >= targetEnd) { - source -= (extraBytesToRead+1); /* Back up source pointer! */ - result = targetExhausted; break; - } - if (ch <= UNI_MAX_BMP) { /* Target is a character <= 0xFFFF */ - if ((flags == strictConversion) && (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END)) { - source -= (extraBytesToRead+1); /* return to the illegal value itself */ - result = sourceIllegal; - break; - } else { - *target++ = (UTF16)ch; /* normal case */ - } - } else if (ch > UNI_MAX_UTF16) { - if (flags == strictConversion) { - result = sourceIllegal; - source -= (extraBytesToRead+1); /* return to the start */ - break; /* Bail out; shouldn't continue */ - } else { - *target++ = UNI_REPLACEMENT_CHAR; - } - } else { - /* target is a character in range 0xFFFF - 0x10FFFF. */ - if (target + 1 >= targetEnd) { - source -= (extraBytesToRead+1); /* Back up source pointer! */ - result = targetExhausted; break; - } - ch -= halfBase; - *target++ = (UTF16)((ch >> halfShift) + UNI_SUR_HIGH_START); - *target++ = (ch & halfMask) + UNI_SUR_LOW_START; - } - } - *sourceStart = source; - *targetStart = target; - return result; -} - -} - -/* --------------------------------------------------------------------- - - Note A. - The fall-through switches in UTF-8 reading code save a - temp variable, some decrements & conditionals. The switches - are equivalent to the following loop: - { - int tmpBytesToRead = extraBytesToRead+1; - do { - ch += *source++; - --tmpBytesToRead; - if (tmpBytesToRead) ch <<= 6; - } while (tmpBytesToRead > 0); - } - In UTF-8 writing code, the switches on "bytesToWrite" are - similarly unrolled loops. - - --------------------------------------------------------------------- */ - - diff --git a/platform/win32/msvc/external/taglib/taglib/toolkit/unicode.h b/platform/win32/msvc/external/taglib/taglib/toolkit/unicode.h deleted file mode 100644 index cf7eb3c5694..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/toolkit/unicode.h +++ /dev/null @@ -1,149 +0,0 @@ -#ifndef TAGLIB_UNICODE_H -#define TAGLIB_UNICODE_H - -/******************************************************************************* - * * - * THIS FILE IS INCLUDED IN TAGLIB, BUT IS NOT COPYRIGHTED BY THE TAGLIB * - * AUTHORS, NOT PART OF THE TAGLIB API AND COULD GO AWAY AT ANY POINT IN TIME. * - * AS SUCH IT SHOULD BE CONSIERED FOR INTERNAL USE ONLY. * - * * - *******************************************************************************/ - -#ifndef DO_NOT_DOCUMENT // tell Doxygen not to document this header - -/* - * Copyright 2001 Unicode, Inc. - * - * Disclaimer - * - * This source code is provided as is by Unicode, Inc. No claims are - * made as to fitness for any particular purpose. No warranties of any - * kind are expressed or implied. The recipient agrees to determine - * applicability of information provided. If this file has been - * purchased on magnetic or optical media from Unicode, Inc., the - * sole remedy for any claim will be exchange of defective media - * within 90 days of receipt. - * - * Limitations on Rights to Redistribute This Code - * - * Unicode, Inc. hereby grants the right to freely use the information - * supplied in this file in the creation of products supporting the - * Unicode Standard, and to make copies of this file in any form - * for internal or external distribution as long as this notice - * remains attached. - */ - -/* - * This file has been modified by Scott Wheeler <wheeler@kde.org> to remove - * the UTF32 conversion functions and to place the appropriate functions - * in their own C++ namespace. - */ - -/* --------------------------------------------------------------------- - - Conversions between UTF32, UTF-16, and UTF-8. Header file. - - Several functions are included here, forming a complete set of - conversions between the three formats. UTF-7 is not included - here, but is handled in a separate source file. - - Each of these routines takes pointers to input buffers and output - buffers. The input buffers are const. - - Each routine converts the text between *sourceStart and sourceEnd, - putting the result into the buffer between *targetStart and - targetEnd. Note: the end pointers are *after* the last item: e.g. - *(sourceEnd - 1) is the last item. - - The return result indicates whether the conversion was successful, - and if not, whether the problem was in the source or target buffers. - (Only the first encountered problem is indicated.) - - After the conversion, *sourceStart and *targetStart are both - updated to point to the end of last text successfully converted in - the respective buffers. - - Input parameters: - sourceStart - pointer to a pointer to the source buffer. - The contents of this are modified on return so that - it points at the next thing to be converted. - targetStart - similarly, pointer to pointer to the target buffer. - sourceEnd, targetEnd - respectively pointers to the ends of the - two buffers, for overflow checking only. - - These conversion functions take a ConversionFlags argument. When this - flag is set to strict, both irregular sequences and isolated surrogates - will cause an error. When the flag is set to lenient, both irregular - sequences and isolated surrogates are converted. - - Whether the flag is strict or lenient, all illegal sequences will cause - an error return. This includes sequences such as: <F4 90 80 80>, <C0 80>, - or <A0> in UTF-8, and values above 0x10FFFF in UTF-32. Conformant code - must check for illegal sequences. - - When the flag is set to lenient, characters over 0x10FFFF are converted - to the replacement character; otherwise (when the flag is set to strict) - they constitute an error. - - Output parameters: - The value "sourceIllegal" is returned from some routines if the input - sequence is malformed. When "sourceIllegal" is returned, the source - value will point to the illegal value that caused the problem. E.g., - in UTF-8 when a sequence is malformed, it points to the start of the - malformed sequence. - - Author: Mark E. Davis, 1994. - Rev History: Rick McGowan, fixes & updates May 2001. - Fixes & updates, Sept 2001. - ------------------------------------------------------------------------- */ - -/* --------------------------------------------------------------------- - The following 4 definitions are compiler-specific. - The C standard does not guarantee that wchar_t has at least - 16 bits, so wchar_t is no less portable than unsigned short! - All should be unsigned values to avoid sign extension during - bit mask & shift operations. ------------------------------------------------------------------------- */ - -/* Some fundamental constants */ -#define UNI_REPLACEMENT_CHAR (UTF32)0x0000FFFD -#define UNI_MAX_BMP (UTF32)0x0000FFFF -#define UNI_MAX_UTF16 (UTF32)0x0010FFFF -#define UNI_MAX_UTF32 (UTF32)0x7FFFFFFF - -namespace Unicode { - -typedef unsigned long UTF32; /* at least 32 bits */ -typedef unsigned short UTF16; /* at least 16 bits */ -typedef unsigned char UTF8; /* typically 8 bits */ -typedef unsigned char Boolean; /* 0 or 1 */ - -typedef enum { - conversionOK = 0, /* conversion successful */ - sourceExhausted = 1, /* partial character in source, but hit end */ - targetExhausted = 2, /* insuff. room in target for conversion */ - sourceIllegal = 3 /* source sequence is illegal/malformed */ -} ConversionResult; - -typedef enum { - strictConversion = 0, - lenientConversion -} ConversionFlags; - -ConversionResult ConvertUTF8toUTF16 ( - const UTF8** sourceStart, const UTF8* sourceEnd, - UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags); - -ConversionResult ConvertUTF16toUTF8 ( - const UTF16** sourceStart, const UTF16* sourceEnd, - UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags); - -Boolean isLegalUTF8Sequence(const UTF8 *source, const UTF8 *sourceEnd); - -} // namespace Unicode - -/* --------------------------------------------------------------------- */ - -#endif -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/trueaudio/trueaudiofile.cpp b/platform/win32/msvc/external/taglib/taglib/trueaudio/trueaudiofile.cpp deleted file mode 100644 index 9efc6e9def7..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/trueaudio/trueaudiofile.cpp +++ /dev/null @@ -1,312 +0,0 @@ -/*************************************************************************** - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - (original MPC implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tbytevector.h> -#include <tstring.h> -#include <tdebug.h> -#include <tagunion.h> -#include <tstringlist.h> -#include <tpropertymap.h> - -#include "trueaudiofile.h" -#include "id3v1tag.h" -#include "id3v2tag.h" -#include "id3v2header.h" - -using namespace TagLib; - -namespace -{ - enum { TrueAudioID3v2Index = 0, TrueAudioID3v1Index = 1 }; -} - -class TrueAudio::File::FilePrivate -{ -public: - FilePrivate(const ID3v2::FrameFactory *frameFactory = ID3v2::FrameFactory::instance()) : - ID3v2FrameFactory(frameFactory), - ID3v2Location(-1), - ID3v2OriginalSize(0), - ID3v1Location(-1), - properties(0), - hasID3v1(false), - hasID3v2(false) {} - - ~FilePrivate() - { - delete properties; - } - - const ID3v2::FrameFactory *ID3v2FrameFactory; - long ID3v2Location; - uint ID3v2OriginalSize; - - long ID3v1Location; - - TagUnion tag; - - Properties *properties; - - // These indicate whether the file *on disk* has these tags, not if - // this data structure does. This is used in computing offsets. - - bool hasID3v1; - bool hasID3v2; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -TrueAudio::File::File(FileName file, bool readProperties, - Properties::ReadStyle propertiesStyle) : TagLib::File(file) -{ - d = new FilePrivate; - if(isOpen()) - read(readProperties, propertiesStyle); -} - -TrueAudio::File::File(FileName file, ID3v2::FrameFactory *frameFactory, - bool readProperties, Properties::ReadStyle propertiesStyle) : - TagLib::File(file) -{ - d = new FilePrivate(frameFactory); - if(isOpen()) - read(readProperties, propertiesStyle); -} - -TrueAudio::File::File(IOStream *stream, bool readProperties, - Properties::ReadStyle propertiesStyle) : TagLib::File(stream) -{ - d = new FilePrivate; - if(isOpen()) - read(readProperties, propertiesStyle); -} - -TrueAudio::File::File(IOStream *stream, ID3v2::FrameFactory *frameFactory, - bool readProperties, Properties::ReadStyle propertiesStyle) : - TagLib::File(stream) -{ - d = new FilePrivate(frameFactory); - if(isOpen()) - read(readProperties, propertiesStyle); -} - -TrueAudio::File::~File() -{ - delete d; -} - -TagLib::Tag *TrueAudio::File::tag() const -{ - return &d->tag; -} - -PropertyMap TrueAudio::File::properties() const -{ - // once Tag::properties() is virtual, this case distinction could actually be done - // within TagUnion. - if(d->hasID3v2) - return d->tag.access<ID3v2::Tag>(TrueAudioID3v2Index, false)->properties(); - if(d->hasID3v1) - return d->tag.access<ID3v1::Tag>(TrueAudioID3v1Index, false)->properties(); - return PropertyMap(); -} - -PropertyMap TrueAudio::File::setProperties(const PropertyMap &properties) -{ - if(d->hasID3v2) - return d->tag.access<ID3v2::Tag>(TrueAudioID3v2Index, false)->setProperties(properties); - else if(d->hasID3v1) - return d->tag.access<ID3v1::Tag>(TrueAudioID3v1Index, false)->setProperties(properties); - else - return d->tag.access<ID3v2::Tag>(TrueAudioID3v2Index, true)->setProperties(properties); -} - -TrueAudio::Properties *TrueAudio::File::audioProperties() const -{ - return d->properties; -} - -void TrueAudio::File::setID3v2FrameFactory(const ID3v2::FrameFactory *factory) -{ - d->ID3v2FrameFactory = factory; -} - -bool TrueAudio::File::save() -{ - if(readOnly()) { - debug("TrueAudio::File::save() -- File is read only."); - return false; - } - - // Update ID3v2 tag - - if(ID3v2Tag() && !ID3v2Tag()->isEmpty()) { - if(!d->hasID3v2) { - d->ID3v2Location = 0; - d->ID3v2OriginalSize = 0; - } - ByteVector data = ID3v2Tag()->render(); - insert(data, d->ID3v2Location, d->ID3v2OriginalSize); - d->ID3v1Location -= d->ID3v2OriginalSize - data.size(); - d->ID3v2OriginalSize = data.size(); - d->hasID3v2 = true; - } - else if(d->hasID3v2) { - removeBlock(d->ID3v2Location, d->ID3v2OriginalSize); - d->ID3v1Location -= d->ID3v2OriginalSize; - d->ID3v2Location = -1; - d->ID3v2OriginalSize = 0; - d->hasID3v2 = false; - } - - // Update ID3v1 tag - - if(ID3v1Tag() && !ID3v1Tag()->isEmpty()) { - if(!d->hasID3v1) { - seek(0, End); - d->ID3v1Location = tell(); - } - else - seek(d->ID3v1Location); - writeBlock(ID3v1Tag()->render()); - d->hasID3v1 = true; - } - else if(d->hasID3v1) { - removeBlock(d->ID3v1Location, 128); - d->ID3v1Location = -1; - d->hasID3v1 = false; - } - - return true; -} - -ID3v1::Tag *TrueAudio::File::ID3v1Tag(bool create) -{ - return d->tag.access<ID3v1::Tag>(TrueAudioID3v1Index, create); -} - -ID3v2::Tag *TrueAudio::File::ID3v2Tag(bool create) -{ - return d->tag.access<ID3v2::Tag>(TrueAudioID3v2Index, create); -} - -void TrueAudio::File::strip(int tags) -{ - if(tags & ID3v1) { - d->tag.set(TrueAudioID3v1Index, 0); - ID3v2Tag(true); - } - - if(tags & ID3v2) { - d->tag.set(TrueAudioID3v2Index, 0); - - if(!ID3v1Tag()) - ID3v2Tag(true); - } -} - - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void TrueAudio::File::read(bool readProperties, Properties::ReadStyle /* propertiesStyle */) -{ - // Look for an ID3v2 tag - - d->ID3v2Location = findID3v2(); - - if(d->ID3v2Location >= 0) { - - d->tag.set(TrueAudioID3v2Index, new ID3v2::Tag(this, d->ID3v2Location, d->ID3v2FrameFactory)); - - d->ID3v2OriginalSize = ID3v2Tag()->header()->completeTagSize(); - - if(ID3v2Tag()->header()->tagSize() <= 0) - d->tag.set(TrueAudioID3v2Index, 0); - else - d->hasID3v2 = true; - } - - // Look for an ID3v1 tag - - d->ID3v1Location = findID3v1(); - - if(d->ID3v1Location >= 0) { - d->tag.set(TrueAudioID3v1Index, new ID3v1::Tag(this, d->ID3v1Location)); - d->hasID3v1 = true; - } - - if(!d->hasID3v1) - ID3v2Tag(true); - - // Look for TrueAudio metadata - - if(readProperties) { - if(d->ID3v2Location >= 0) { - seek(d->ID3v2Location + d->ID3v2OriginalSize); - d->properties = new Properties(readBlock(TrueAudio::HeaderSize), - length() - d->ID3v2OriginalSize); - } - else { - seek(0); - d->properties = new Properties(readBlock(TrueAudio::HeaderSize), - length()); - } - } -} - -long TrueAudio::File::findID3v1() -{ - if(!isValid()) - return -1; - - seek(-128, End); - long p = tell(); - - if(readBlock(3) == ID3v1::Tag::fileIdentifier()) - return p; - - return -1; -} - -long TrueAudio::File::findID3v2() -{ - if(!isValid()) - return -1; - - seek(0); - - if(readBlock(3) == ID3v2::Header::fileIdentifier()) - return 0; - - return -1; -} diff --git a/platform/win32/msvc/external/taglib/taglib/trueaudio/trueaudiofile.h b/platform/win32/msvc/external/taglib/taglib/trueaudio/trueaudiofile.h deleted file mode 100644 index e3e1fe62829..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/trueaudio/trueaudiofile.h +++ /dev/null @@ -1,218 +0,0 @@ -/*************************************************************************** - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - (original MPC implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_TRUEAUDIOFILE_H -#define TAGLIB_TRUEAUDIOFILE_H - -#include "tfile.h" -#include "trueaudioproperties.h" - -namespace TagLib { - - class Tag; - - namespace ID3v2 { class Tag; class FrameFactory; } - namespace ID3v1 { class Tag; } - - //! An implementation of TrueAudio metadata - - /*! - * This is implementation of TrueAudio metadata. - * - * This supports ID3v1 and ID3v2 tags as well as reading stream - * properties from the file. - */ - - namespace TrueAudio { - - //! An implementation of TagLib::File with TrueAudio specific methods - - /*! - * This implements and provides an interface for TrueAudio files to the - * TagLib::Tag and TagLib::AudioProperties interfaces by way of implementing - * the abstract TagLib::File API as well as providing some additional - * information specific to TrueAudio files. - */ - - class TAGLIB_EXPORT File : public TagLib::File - { - public: - /*! - * This set of flags is used for various operations and is suitable for - * being OR-ed together. - */ - enum TagTypes { - //! Empty set. Matches no tag types. - NoTags = 0x0000, - //! Matches ID3v1 tags. - ID3v1 = 0x0001, - //! Matches ID3v2 tags. - ID3v2 = 0x0002, - //! Matches all tag types. - AllTags = 0xffff - }; - - /*! - * Contructs an TrueAudio file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - */ - File(FileName file, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Contructs an TrueAudio file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. The frames will be created using - * \a frameFactory. - */ - File(FileName file, ID3v2::FrameFactory *frameFactory, - bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Contructs an TrueAudio file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - */ - File(IOStream *stream, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Contructs an TrueAudio file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. The frames will be created using - * \a frameFactory. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - */ - File(IOStream *stream, ID3v2::FrameFactory *frameFactory, - bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Destroys this instance of the File. - */ - virtual ~File(); - - /*! - * Returns the Tag for this file. - */ - virtual TagLib::Tag *tag() const; - - /*! - * Implements the unified property interface -- export function. - * If the file contains both ID3v1 and v2 tags, only ID3v2 will be - * converted to the PropertyMap. - */ - PropertyMap properties() const; - - /*! - * Implements the unified property interface -- import function. - * As with the export, only one tag is taken into account. If the file - * has no tag at all, ID3v2 will be created. - */ - PropertyMap setProperties(const PropertyMap &); - - /*! - * Returns the TrueAudio::Properties for this file. If no audio properties - * were read then this will return a null pointer. - */ - virtual Properties *audioProperties() const; - - /*! - * Set the ID3v2::FrameFactory to something other than the default. - * - * \see ID3v2FrameFactory - */ - void setID3v2FrameFactory(const ID3v2::FrameFactory *factory); - - /*! - * Saves the file. - */ - virtual bool save(); - - /*! - * Returns a pointer to the ID3v2 tag of the file. - * - * If \a create is false (the default) this will return a null pointer - * if there is no valid ID3v2 tag. If \a create is true it will create - * an ID3v1 tag if one does not exist. If there is already an APE tag, the - * new ID3v1 tag will be placed after it. - * - * \note The Tag <b>is still</b> owned by the TrueAudio::File and should not be - * deleted by the user. It will be deleted when the file (object) is - * destroyed. - */ - ID3v1::Tag *ID3v1Tag(bool create = false); - - /*! - * Returns a pointer to the ID3v1 tag of the file. - * - * If \a create is false (the default) this will return a null pointer - * if there is no valid ID3v1 tag. If \a create is true it will create - * an ID3v1 tag if one does not exist. If there is already an APE tag, the - * new ID3v1 tag will be placed after it. - * - * \note The Tag <b>is still</b> owned by the TrueAudio::File and should not be - * deleted by the user. It will be deleted when the file (object) is - * destroyed. - */ - ID3v2::Tag *ID3v2Tag(bool create = false); - - /*! - * This will remove the tags that match the OR-ed together TagTypes from the - * file. By default it removes all tags. - * - * \note This will also invalidate pointers to the tags - * as their memory will be freed. - * \note In order to make the removal permanent save() still needs to be called - */ - void strip(int tags = AllTags); - - private: - File(const File &); - File &operator=(const File &); - - void read(bool readProperties, Properties::ReadStyle propertiesStyle); - void scan(); - long findID3v1(); - long findID3v2(); - - class FilePrivate; - FilePrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/trueaudio/trueaudioproperties.cpp b/platform/win32/msvc/external/taglib/taglib/trueaudio/trueaudioproperties.cpp deleted file mode 100644 index 9b251ff18e0..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/trueaudio/trueaudioproperties.cpp +++ /dev/null @@ -1,150 +0,0 @@ -/*************************************************************************** - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - (original MPC implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tstring.h> -#include <tdebug.h> -#include <bitset> - -#include "trueaudioproperties.h" -#include "trueaudiofile.h" - -using namespace TagLib; - -class TrueAudio::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate(const ByteVector &d, long length, ReadStyle s) : - data(d), - streamLength(length), - style(s), - version(0), - length(0), - bitrate(0), - sampleRate(0), - channels(0), - bitsPerSample(0), - sampleFrames(0) {} - - ByteVector data; - long streamLength; - ReadStyle style; - int version; - int length; - int bitrate; - int sampleRate; - int channels; - int bitsPerSample; - uint sampleFrames; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -TrueAudio::Properties::Properties(const ByteVector &data, long streamLength, ReadStyle style) : AudioProperties(style) -{ - d = new PropertiesPrivate(data, streamLength, style); - read(); -} - -TrueAudio::Properties::~Properties() -{ - delete d; -} - -int TrueAudio::Properties::length() const -{ - return d->length; -} - -int TrueAudio::Properties::bitrate() const -{ - return d->bitrate; -} - -int TrueAudio::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int TrueAudio::Properties::bitsPerSample() const -{ - return d->bitsPerSample; -} - -int TrueAudio::Properties::channels() const -{ - return d->channels; -} - -TagLib::uint TrueAudio::Properties::sampleFrames() const -{ - return d->sampleFrames; -} - -int TrueAudio::Properties::ttaVersion() const -{ - return d->version; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void TrueAudio::Properties::read() -{ - if(!d->data.startsWith("TTA")) - return; - - int pos = 3; - - d->version = d->data[pos] - '0'; - pos += 1; - - // According to http://en.true-audio.com/TTA_Lossless_Audio_Codec_-_Format_Description - // TTA2 headers are in development, and have a different format - if(1 == d->version) { - // Skip the audio format - pos += 2; - - d->channels = d->data.mid(pos, 2).toShort(false); - pos += 2; - - d->bitsPerSample = d->data.mid(pos, 2).toShort(false); - pos += 2; - - d->sampleRate = d->data.mid(pos, 4).toUInt(false); - pos += 4; - - d->sampleFrames = d->data.mid(pos, 4).toUInt(false); - d->length = d->sampleRate > 0 ? d->sampleFrames / d->sampleRate : 0; - - d->bitrate = d->length > 0 ? ((d->streamLength * 8L) / d->length) / 1000 : 0; - } -} diff --git a/platform/win32/msvc/external/taglib/taglib/trueaudio/trueaudioproperties.h b/platform/win32/msvc/external/taglib/taglib/trueaudio/trueaudioproperties.h deleted file mode 100644 index 126b6788b4a..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/trueaudio/trueaudioproperties.h +++ /dev/null @@ -1,98 +0,0 @@ -/*************************************************************************** - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - (original MPC implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_TRUEAUDIOPROPERTIES_H -#define TAGLIB_TRUEAUDIOPROPERTIES_H - -#include "audioproperties.h" - -namespace TagLib { - - namespace TrueAudio { - - class File; - - static const uint HeaderSize = 18; - - //! An implementation of audio property reading for TrueAudio - - /*! - * This reads the data from an TrueAudio stream found in the AudioProperties - * API. - */ - - class TAGLIB_EXPORT Properties : public AudioProperties - { - public: - /*! - * Create an instance of TrueAudio::Properties with the data read from the - * ByteVector \a data. - */ - Properties(const ByteVector &data, long streamLength, ReadStyle style = Average); - - /*! - * Destroys this TrueAudio::Properties instance. - */ - virtual ~Properties(); - - // Reimplementations. - - virtual int length() const; - virtual int bitrate() const; - virtual int sampleRate() const; - virtual int channels() const; - - /*! - * Returns number of bits per sample. - */ - int bitsPerSample() const; - - /*! - * Returns the total number of sample frames - */ - uint sampleFrames() const; - - /*! - * Returns the major version number. - */ - int ttaVersion() const; - - private: - Properties(const Properties &); - Properties &operator=(const Properties &); - - void read(); - - class PropertiesPrivate; - PropertiesPrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/wavpack/wavpackfile.cpp b/platform/win32/msvc/external/taglib/taglib/wavpack/wavpackfile.cpp deleted file mode 100644 index 49f7923e74a..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/wavpack/wavpackfile.cpp +++ /dev/null @@ -1,294 +0,0 @@ -/*************************************************************************** - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - (original MPC implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tbytevector.h> -#include <tstring.h> -#include <tdebug.h> -#include <tagunion.h> -#include <tpropertymap.h> - -#include "wavpackfile.h" -#include "id3v1tag.h" -#include "id3v2header.h" -#include "apetag.h" -#include "apefooter.h" - -using namespace TagLib; - -namespace -{ - enum { WavAPEIndex, WavID3v1Index }; -} - -class WavPack::File::FilePrivate -{ -public: - FilePrivate() : - APELocation(-1), - APESize(0), - ID3v1Location(-1), - properties(0), - hasAPE(false), - hasID3v1(false) {} - - ~FilePrivate() - { - delete properties; - } - - long APELocation; - uint APESize; - - long ID3v1Location; - - TagUnion tag; - - Properties *properties; - - // These indicate whether the file *on disk* has these tags, not if - // this data structure does. This is used in computing offsets. - - bool hasAPE; - bool hasID3v1; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -WavPack::File::File(FileName file, bool readProperties, - Properties::ReadStyle propertiesStyle) : TagLib::File(file) -{ - d = new FilePrivate; - read(readProperties, propertiesStyle); -} - -WavPack::File::File(IOStream *stream, bool readProperties, - Properties::ReadStyle propertiesStyle) : TagLib::File(stream) -{ - d = new FilePrivate; - read(readProperties, propertiesStyle); -} - -WavPack::File::~File() -{ - delete d; -} - -TagLib::Tag *WavPack::File::tag() const -{ - return &d->tag; -} - -PropertyMap WavPack::File::properties() const -{ - if(d->hasAPE) - return d->tag.access<APE::Tag>(WavAPEIndex, false)->properties(); - if(d->hasID3v1) - return d->tag.access<ID3v1::Tag>(WavID3v1Index, false)->properties(); - return PropertyMap(); -} - -PropertyMap WavPack::File::setProperties(const PropertyMap &properties) -{ - if(d->hasAPE) - return d->tag.access<APE::Tag>(WavAPEIndex, false)->setProperties(properties); - else if(d->hasID3v1) - return d->tag.access<ID3v1::Tag>(WavID3v1Index, false)->setProperties(properties); - else - return d->tag.access<APE::Tag>(APE, true)->setProperties(properties); -} - -WavPack::Properties *WavPack::File::audioProperties() const -{ - return d->properties; -} - -bool WavPack::File::save() -{ - if(readOnly()) { - debug("WavPack::File::save() -- File is read only."); - return false; - } - - // Update ID3v1 tag - - if(ID3v1Tag()) { - if(d->hasID3v1) { - seek(d->ID3v1Location); - writeBlock(ID3v1Tag()->render()); - } - else { - seek(0, End); - d->ID3v1Location = tell(); - writeBlock(ID3v1Tag()->render()); - d->hasID3v1 = true; - } - } - else { - if(d->hasID3v1) { - removeBlock(d->ID3v1Location, 128); - d->hasID3v1 = false; - if(d->hasAPE) { - if(d->APELocation > d->ID3v1Location) - d->APELocation -= 128; - } - } - } - - // Update APE tag - - if(APETag()) { - if(d->hasAPE) - insert(APETag()->render(), d->APELocation, d->APESize); - else { - if(d->hasID3v1) { - insert(APETag()->render(), d->ID3v1Location, 0); - d->APESize = APETag()->footer()->completeTagSize(); - d->hasAPE = true; - d->APELocation = d->ID3v1Location; - d->ID3v1Location += d->APESize; - } - else { - seek(0, End); - d->APELocation = tell(); - writeBlock(APETag()->render()); - d->APESize = APETag()->footer()->completeTagSize(); - d->hasAPE = true; - } - } - } - else { - if(d->hasAPE) { - removeBlock(d->APELocation, d->APESize); - d->hasAPE = false; - if(d->hasID3v1) { - if(d->ID3v1Location > d->APELocation) { - d->ID3v1Location -= d->APESize; - } - } - } - } - - return true; -} - -ID3v1::Tag *WavPack::File::ID3v1Tag(bool create) -{ - return d->tag.access<ID3v1::Tag>(WavID3v1Index, create); -} - -APE::Tag *WavPack::File::APETag(bool create) -{ - return d->tag.access<APE::Tag>(WavAPEIndex, create); -} - -void WavPack::File::strip(int tags) -{ - if(tags & ID3v1) { - d->tag.set(WavID3v1Index, 0); - APETag(true); - } - - if(tags & APE) { - d->tag.set(WavAPEIndex, 0); - - if(!ID3v1Tag()) - APETag(true); - } -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void WavPack::File::read(bool readProperties, Properties::ReadStyle /* propertiesStyle */) -{ - // Look for an ID3v1 tag - - d->ID3v1Location = findID3v1(); - - if(d->ID3v1Location >= 0) { - d->tag.set(WavID3v1Index, new ID3v1::Tag(this, d->ID3v1Location)); - d->hasID3v1 = true; - } - - // Look for an APE tag - - d->APELocation = findAPE(); - - if(d->APELocation >= 0) { - d->tag.set(WavAPEIndex, new APE::Tag(this, d->APELocation)); - d->APESize = APETag()->footer()->completeTagSize(); - d->APELocation = d->APELocation + APETag()->footer()->size() - d->APESize; - d->hasAPE = true; - } - - if(!d->hasID3v1) - APETag(true); - - // Look for WavPack audio properties - - if(readProperties) { - seek(0); - d->properties = new Properties(this, length() - d->APESize); - } -} - -long WavPack::File::findAPE() -{ - if(!isValid()) - return -1; - - if(d->hasID3v1) - seek(-160, End); - else - seek(-32, End); - - long p = tell(); - - if(readBlock(8) == APE::Tag::fileIdentifier()) - return p; - - return -1; -} - -long WavPack::File::findID3v1() -{ - if(!isValid()) - return -1; - - seek(-128, End); - long p = tell(); - - if(readBlock(3) == ID3v1::Tag::fileIdentifier()) - return p; - - return -1; -} diff --git a/platform/win32/msvc/external/taglib/taglib/wavpack/wavpackfile.h b/platform/win32/msvc/external/taglib/taglib/wavpack/wavpackfile.h deleted file mode 100644 index 5bbbc65a190..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/wavpack/wavpackfile.h +++ /dev/null @@ -1,189 +0,0 @@ -/*************************************************************************** - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - (original MPC implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_WVFILE_H -#define TAGLIB_WVFILE_H - -#include "tfile.h" -#include "taglib_export.h" -#include "wavpackproperties.h" - -namespace TagLib { - - class Tag; - - namespace ID3v1 { class Tag; } - namespace APE { class Tag; } - - //! An implementation of WavPack metadata - - /*! - * This is implementation of WavPack metadata. - * - * This supports ID3v1 and APE (v1 and v2) style comments as well as reading stream - * properties from the file. - */ - - namespace WavPack { - - //! An implementation of TagLib::File with WavPack specific methods - - /*! - * This implements and provides an interface for WavPack files to the - * TagLib::Tag and TagLib::AudioProperties interfaces by way of implementing - * the abstract TagLib::File API as well as providing some additional - * information specific to WavPack files. - */ - - class TAGLIB_EXPORT File : public TagLib::File - { - public: - /*! - * This set of flags is used for various operations and is suitable for - * being OR-ed together. - */ - enum TagTypes { - //! Empty set. Matches no tag types. - NoTags = 0x0000, - //! Matches ID3v1 tags. - ID3v1 = 0x0001, - //! Matches APE tags. - APE = 0x0002, - //! Matches all tag types. - AllTags = 0xffff - }; - - /*! - * Contructs an WavPack file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - */ - File(FileName file, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Contructs an WavPack file from \a file. If \a readProperties is true the - * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - */ - File(IOStream *stream, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Destroys this instance of the File. - */ - virtual ~File(); - - /*! - * Returns the Tag for this file. This will be an APE tag, an ID3v1 tag - * or a combination of the two. - */ - virtual TagLib::Tag *tag() const; - - /*! - * Implements the unified property interface -- export function. - * If the file contains both an APE and an ID3v1 tag, only APE - * will be converted to the PropertyMap. - */ - PropertyMap properties() const; - - /*! - * Implements the unified property interface -- import function. - * As for the export, only one tag is taken into account. If the file - * has no tag at all, APE will be created. - */ - PropertyMap setProperties(const PropertyMap&); - - /*! - * Returns the MPC::Properties for this file. If no audio properties - * were read then this will return a null pointer. - */ - virtual Properties *audioProperties() const; - - /*! - * Saves the file. - */ - virtual bool save(); - - /*! - * Returns a pointer to the ID3v1 tag of the file. - * - * If \a create is false (the default) this will return a null pointer - * if there is no valid ID3v1 tag. If \a create is true it will create - * an ID3v1 tag if one does not exist. If there is already an APE tag, the - * new ID3v1 tag will be placed after it. - * - * \note The Tag <b>is still</b> owned by the APE::File and should not be - * deleted by the user. It will be deleted when the file (object) is - * destroyed. - */ - ID3v1::Tag *ID3v1Tag(bool create = false); - - /*! - * Returns a pointer to the APE tag of the file. - * - * If \a create is false (the default) this will return a null pointer - * if there is no valid APE tag. If \a create is true it will create - * a APE tag if one does not exist. - * - * \note The Tag <b>is still</b> owned by the APE::File and should not be - * deleted by the user. It will be deleted when the file (object) is - * destroyed. - */ - APE::Tag *APETag(bool create = false); - - /*! - * This will remove the tags that match the OR-ed together TagTypes from the - * file. By default it removes all tags. - * - * \note This will also invalidate pointers to the tags - * as their memory will be freed. - * \note In order to make the removal permanent save() still needs to be called - */ - void strip(int tags = AllTags); - - private: - File(const File &); - File &operator=(const File &); - - void read(bool readProperties, Properties::ReadStyle propertiesStyle); - void scan(); - long findID3v1(); - long findAPE(); - - class FilePrivate; - FilePrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/wavpack/wavpackproperties.cpp b/platform/win32/msvc/external/taglib/taglib/wavpack/wavpackproperties.cpp deleted file mode 100644 index 1715f425d0a..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/wavpack/wavpackproperties.cpp +++ /dev/null @@ -1,202 +0,0 @@ -/*************************************************************************** - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - (original MPC implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tstring.h> -#include <tdebug.h> - -#include "wavpackproperties.h" -#include "wavpackfile.h" - -using namespace TagLib; - -class WavPack::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate(const ByteVector &d, long length, ReadStyle s) : - data(d), - streamLength(length), - style(s), - length(0), - bitrate(0), - sampleRate(0), - channels(0), - version(0), - bitsPerSample(0), - sampleFrames(0), - file(0) {} - - ByteVector data; - long streamLength; - ReadStyle style; - int length; - int bitrate; - int sampleRate; - int channels; - int version; - int bitsPerSample; - uint sampleFrames; - File *file; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -WavPack::Properties::Properties(const ByteVector &data, long streamLength, ReadStyle style) : AudioProperties(style) -{ - d = new PropertiesPrivate(data, streamLength, style); - read(); -} - -WavPack::Properties::Properties(File *file, long streamLength, ReadStyle style) : AudioProperties(style) -{ - ByteVector data = file->readBlock(32); - d = new PropertiesPrivate(data, streamLength, style); - d->file = file; - read(); -} - -WavPack::Properties::~Properties() -{ - delete d; -} - -int WavPack::Properties::length() const -{ - return d->length; -} - -int WavPack::Properties::bitrate() const -{ - return d->bitrate; -} - -int WavPack::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int WavPack::Properties::channels() const -{ - return d->channels; -} - -int WavPack::Properties::version() const -{ - return d->version; -} - -int WavPack::Properties::bitsPerSample() const -{ - return d->bitsPerSample; -} - -TagLib::uint WavPack::Properties::sampleFrames() const -{ - return d->sampleFrames; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -static const unsigned int sample_rates[] = { 6000, 8000, 9600, 11025, 12000, - 16000, 22050, 24000, 32000, 44100, 48000, 64000, 88200, 96000, 192000 }; - -#define BYTES_STORED 3 -#define MONO_FLAG 4 - -#define SHIFT_LSB 13 -#define SHIFT_MASK (0x1fL << SHIFT_LSB) - -#define SRATE_LSB 23 -#define SRATE_MASK (0xfL << SRATE_LSB) - -#define MIN_STREAM_VERS 0x402 -#define MAX_STREAM_VERS 0x410 - -#define FINAL_BLOCK 0x1000 - -void WavPack::Properties::read() -{ - if(!d->data.startsWith("wvpk")) - return; - - d->version = d->data.mid(8, 2).toShort(false); - if(d->version < MIN_STREAM_VERS || d->version > MAX_STREAM_VERS) - return; - - unsigned int flags = d->data.mid(24, 4).toUInt(false); - d->bitsPerSample = ((flags & BYTES_STORED) + 1) * 8 - - ((flags & SHIFT_MASK) >> SHIFT_LSB); - d->sampleRate = sample_rates[(flags & SRATE_MASK) >> SRATE_LSB]; - d->channels = (flags & MONO_FLAG) ? 1 : 2; - - unsigned int samples = d->data.mid(12, 4).toUInt(false); - if(samples == ~0u) { - if(d->file && d->style != Fast) { - samples = seekFinalIndex(); - } - else { - samples = 0; - } - } - d->length = d->sampleRate > 0 ? (samples + (d->sampleRate / 2)) / d->sampleRate : 0; - d->sampleFrames = samples; - - d->bitrate = d->length > 0 ? ((d->streamLength * 8L) / d->length) / 1000 : 0; -} - -unsigned int WavPack::Properties::seekFinalIndex() -{ - ByteVector blockID("wvpk", 4); - - long offset = d->streamLength; - while(offset > 0) { - offset = d->file->rfind(blockID, offset); - if(offset == -1) - return 0; - d->file->seek(offset); - ByteVector data = d->file->readBlock(32); - if(data.size() != 32) - return 0; - int version = data.mid(8, 2).toShort(false); - if(version < MIN_STREAM_VERS || version > MAX_STREAM_VERS) - continue; - unsigned int flags = data.mid(24, 4).toUInt(false); - if(!(flags & FINAL_BLOCK)) - return 0; - unsigned int blockIndex = data.mid(16, 4).toUInt(false); - unsigned int blockSamples = data.mid(20, 4).toUInt(false); - return blockIndex + blockSamples; - } - - return 0; -} - diff --git a/platform/win32/msvc/external/taglib/taglib/wavpack/wavpackproperties.h b/platform/win32/msvc/external/taglib/taglib/wavpack/wavpackproperties.h deleted file mode 100644 index bd2209da209..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/wavpack/wavpackproperties.h +++ /dev/null @@ -1,105 +0,0 @@ -/*************************************************************************** - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - (original MPC implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_WVPROPERTIES_H -#define TAGLIB_WVPROPERTIES_H - -#include "taglib_export.h" -#include "audioproperties.h" - -namespace TagLib { - - namespace WavPack { - - class File; - - static const uint HeaderSize = 32; - - //! An implementation of audio property reading for WavPack - - /*! - * This reads the data from an WavPack stream found in the AudioProperties - * API. - */ - - class TAGLIB_EXPORT Properties : public AudioProperties - { - public: - /*! - * Create an instance of WavPack::Properties with the data read from the - * ByteVector \a data. - * - * \deprecated This constructor will be dropped in favor of the one below - * in a future version. - */ - Properties(const ByteVector &data, long streamLength, ReadStyle style = Average); - - /*! - * Create an instance of WavPack::Properties. - */ - // BIC: merge with the above constructor - Properties(File *file, long streamLength, ReadStyle style = Average); - - /*! - * Destroys this WavPack::Properties instance. - */ - virtual ~Properties(); - - // Reimplementations. - - virtual int length() const; - virtual int bitrate() const; - virtual int sampleRate() const; - virtual int channels() const; - - /*! - * Returns number of bits per sample. - */ - int bitsPerSample() const; - uint sampleFrames() const; - - /*! - * Returns WavPack version. - */ - int version() const; - - private: - Properties(const Properties &); - Properties &operator=(const Properties &); - - void read(); - unsigned int seekFinalIndex(); - - class PropertiesPrivate; - PropertiesPrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/xm/xmfile.cpp b/platform/win32/msvc/external/taglib/taglib/xm/xmfile.cpp deleted file mode 100644 index 272e5fe0b7e..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/xm/xmfile.cpp +++ /dev/null @@ -1,648 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "tstringlist.h" -#include "tdebug.h" -#include "xmfile.h" -#include "modfileprivate.h" -#include "tpropertymap.h" - -#include <string.h> -#include <algorithm> - -using namespace TagLib; -using namespace XM; -using TagLib::uint; -using TagLib::ushort; -using TagLib::ulong; - -/*! - * The Reader classes are helpers to make handling of the stripped XM - * format more easy. In the stripped XM format certain header sizes might - * be smaller than one would expect. The fields that are not included - * are then just some predefined valued (e.g. 0). - * - * Using these classes this code: - * - * if(headerSize >= 4) { - * if(!readU16L(value1)) ERROR(); - * if(headerSize >= 8) { - * if(!readU16L(value2)) ERROR(); - * if(headerSize >= 12) { - * if(!readString(value3, 22)) ERROR(); - * ... - * } - * } - * } - * - * Becomes: - * - * StructReader header; - * header.u16L(value1).u16L(value2).string(value3, 22). ...; - * if(header.read(*this, headerSize) < std::min(header.size(), headerSize)) - * ERROR(); - * - * Maybe if this is useful to other formats these classes can be moved to - * their own public files. - */ -class Reader -{ -public: - virtual ~Reader() - { - } - - /*! - * Reads associated values from \a file, but never reads more - * then \a limit bytes. - */ - virtual uint read(TagLib::File &file, uint limit) = 0; - - /*! - * Returns the number of bytes this reader would like to read. - */ - virtual uint size() const = 0; -}; - -class SkipReader : public Reader -{ -public: - SkipReader(uint size) : m_size(size) - { - } - - uint read(TagLib::File &file, uint limit) - { - uint count = std::min(m_size, limit); - file.seek(count, TagLib::File::Current); - return count; - } - - uint size() const - { - return m_size; - } - -private: - uint m_size; -}; - -template<typename T> -class ValueReader : public Reader -{ -public: - ValueReader(T &value) : value(value) - { - } - -protected: - T &value; -}; - -class StringReader : public ValueReader<String> -{ -public: - StringReader(String &string, uint size) : - ValueReader<String>(string), m_size(size) - { - } - - uint read(TagLib::File &file, uint limit) - { - ByteVector data = file.readBlock(std::min(m_size, limit)); - uint count = data.size(); - int index = data.find((char) 0); - if(index > -1) { - data.resize(index); - } - data.replace((char) 0xff, ' '); - value = data; - return count; - } - - uint size() const - { - return m_size; - } - -private: - uint m_size; -}; - -class ByteReader : public ValueReader<uchar> -{ -public: - ByteReader(uchar &byte) : ValueReader<uchar>(byte) {} - - uint read(TagLib::File &file, uint limit) - { - ByteVector data = file.readBlock(std::min(1U,limit)); - if(data.size() > 0) { - value = data[0]; - } - return data.size(); - } - - uint size() const - { - return 1; - } -}; - -template<typename T> -class NumberReader : public ValueReader<T> -{ -public: - NumberReader(T &value, bool bigEndian) : - ValueReader<T>(value), bigEndian(bigEndian) - { - } - -protected: - bool bigEndian; -}; - -class U16Reader : public NumberReader<ushort> -{ -public: - U16Reader(ushort &value, bool bigEndian) - : NumberReader<ushort>(value, bigEndian) {} - - uint read(TagLib::File &file, uint limit) - { - ByteVector data = file.readBlock(std::min(2U,limit)); - value = data.toUShort(bigEndian); - return data.size(); - } - - uint size() const - { - return 2; - } -}; - -class U32Reader : public NumberReader<ulong> -{ -public: - U32Reader(ulong &value, bool bigEndian = true) : - NumberReader<ulong>(value, bigEndian) - { - } - - uint read(TagLib::File &file, uint limit) - { - ByteVector data = file.readBlock(std::min(4U,limit)); - value = data.toUInt(bigEndian); - return data.size(); - } - - uint size() const - { - return 4; - } -}; - -class StructReader : public Reader -{ -public: - StructReader() - { - m_readers.setAutoDelete(true); - } - - /*! - * Add a nested reader. This reader takes ownership. - */ - StructReader &reader(Reader *reader) - { - m_readers.append(reader); - return *this; - } - - /*! - * Don't read anything but skip \a size bytes. - */ - StructReader &skip(uint size) - { - m_readers.append(new SkipReader(size)); - return *this; - } - - /*! - * Read a string of \a size characters (bytes) into \a string. - */ - StructReader &string(String &string, uint size) - { - m_readers.append(new StringReader(string, size)); - return *this; - } - - /*! - * Read a byte into \a byte. - */ - StructReader &byte(uchar &byte) - { - m_readers.append(new ByteReader(byte)); - return *this; - } - - /*! - * Read a unsigned 16 Bit integer into \a number. The byte order - * is controlled by \a bigEndian. - */ - StructReader &u16(ushort &number, bool bigEndian) - { - m_readers.append(new U16Reader(number, bigEndian)); - return *this; - } - - /*! - * Read a unsigned 16 Bit little endian integer into \a number. - */ - StructReader &u16L(ushort &number) - { - return u16(number, false); - } - - /*! - * Read a unsigned 16 Bit big endian integer into \a number. - */ - StructReader &u16B(ushort &number) - { - return u16(number, true); - } - - /*! - * Read a unsigned 32 Bit integer into \a number. The byte order - * is controlled by \a bigEndian. - */ - StructReader &u32(ulong &number, bool bigEndian) - { - m_readers.append(new U32Reader(number, bigEndian)); - return *this; - } - - /*! - * Read a unsigned 32 Bit little endian integer into \a number. - */ - StructReader &u32L(ulong &number) - { - return u32(number, false); - } - - /*! - * Read a unsigned 32 Bit big endian integer into \a number. - */ - StructReader &u32B(ulong &number) - { - return u32(number, true); - } - - uint size() const - { - uint size = 0; - for(List<Reader*>::ConstIterator i = m_readers.begin(); - i != m_readers.end(); ++ i) { - size += (*i)->size(); - } - return size; - } - - uint read(TagLib::File &file, uint limit) - { - uint sumcount = 0; - for(List<Reader*>::Iterator i = m_readers.begin(); - limit > 0 && i != m_readers.end(); ++ i) { - uint count = (*i)->read(file, limit); - limit -= count; - sumcount += count; - } - return sumcount; - } - -private: - List<Reader*> m_readers; -}; - -class XM::File::FilePrivate -{ -public: - FilePrivate(AudioProperties::ReadStyle propertiesStyle) - : tag(), properties(propertiesStyle) - { - } - - Mod::Tag tag; - XM::Properties properties; -}; - -XM::File::File(FileName file, bool readProperties, - AudioProperties::ReadStyle propertiesStyle) : - Mod::FileBase(file), - d(new FilePrivate(propertiesStyle)) -{ - read(readProperties); -} - -XM::File::File(IOStream *stream, bool readProperties, - AudioProperties::ReadStyle propertiesStyle) : - Mod::FileBase(stream), - d(new FilePrivate(propertiesStyle)) -{ - read(readProperties); -} - -XM::File::~File() -{ - delete d; -} - -Mod::Tag *XM::File::tag() const -{ - return &d->tag; -} - -PropertyMap XM::File::properties() const -{ - return d->tag.properties(); -} - -PropertyMap XM::File::setProperties(const PropertyMap &properties) -{ - return d->tag.setProperties(properties); -} - -XM::Properties *XM::File::audioProperties() const -{ - return &d->properties; -} - -bool XM::File::save() -{ - if(readOnly()) { - debug("XM::File::save() - Cannot save to a read only file."); - return false; - } - seek(17); - writeString(d->tag.title(), 20); - seek(1, Current); - writeString(d->tag.trackerName(), 20); - seek(2, Current); - ulong headerSize = 0; - if(!readU32L(headerSize)) - return false; - seek(2+2+2, Current); - - ushort patternCount = 0; - ushort instrumentCount = 0; - if(!readU16L(patternCount) || !readU16L(instrumentCount)) - return false; - - seek(60 + headerSize); - - // need to read patterns again in order to seek to the instruments: - for(ushort i = 0; i < patternCount; ++ i) { - ulong patternHeaderLength = 0; - if(!readU32L(patternHeaderLength) || patternHeaderLength < 4) - return false; - - ushort dataSize = 0; - StructReader pattern; - pattern.skip(3).u16L(dataSize); - - uint count = pattern.read(*this, patternHeaderLength - 4U); - if(count != std::min(patternHeaderLength - 4U, (ulong)pattern.size())) - return false; - - seek(patternHeaderLength - (4 + count) + dataSize, Current); - } - - StringList lines = d->tag.comment().split("\n"); - uint sampleNameIndex = instrumentCount; - for(ushort i = 0; i < instrumentCount; ++ i) { - ulong instrumentHeaderSize = 0; - if(!readU32L(instrumentHeaderSize) || instrumentHeaderSize < 4) - return false; - - uint len = std::min(22UL, instrumentHeaderSize - 4U); - if(i > lines.size()) - writeString(String::null, len); - else - writeString(lines[i], len); - - long offset = 0; - if(instrumentHeaderSize >= 29U) { - ushort sampleCount = 0; - seek(1, Current); - if(!readU16L(sampleCount)) - return false; - - if(sampleCount > 0) { - ulong sampleHeaderSize = 0; - if(instrumentHeaderSize < 33U || !readU32L(sampleHeaderSize)) - return false; - // skip unhandeled header proportion: - seek(instrumentHeaderSize - 33, Current); - - for(ushort j = 0; j < sampleCount; ++ j) { - if(sampleHeaderSize > 4U) { - ulong sampleLength = 0; - if(!readU32L(sampleLength)) - return false; - offset += sampleLength; - - seek(std::min(sampleHeaderSize, 14UL), Current); - if(sampleHeaderSize > 18U) { - uint len = std::min(sampleHeaderSize - 18U, 22UL); - if(sampleNameIndex >= lines.size()) - writeString(String::null, len); - else - writeString(lines[sampleNameIndex ++], len); - seek(sampleHeaderSize - (18U + len), Current); - } - } - else { - seek(sampleHeaderSize, Current); - } - } - } - else { - offset = instrumentHeaderSize - 29; - } - } - else { - offset = instrumentHeaderSize - (4 + len); - } - seek(offset, Current); - } - - return true; -} - -void XM::File::read(bool) -{ - if(!isOpen()) - return; - - seek(0); - ByteVector magic = readBlock(17); - // it's all 0x00 for stripped XM files: - READ_ASSERT(magic == "Extended Module: " || magic == ByteVector(17, 0)); - - READ_STRING(d->tag.setTitle, 20); - READ_BYTE_AS(escape); - // in stripped XM files this is 0x00: - READ_ASSERT(escape == 0x1A || escape == 0x00); - - READ_STRING(d->tag.setTrackerName, 20); - READ_U16L(d->properties.setVersion); - - READ_U32L_AS(headerSize); - READ_ASSERT(headerSize >= 4); - - ushort length = 0; - ushort restartPosition = 0; - ushort channels = 0; - ushort patternCount = 0; - ushort instrumentCount = 0; - ushort flags = 0; - ushort tempo = 0; - ushort bpmSpeed = 0; - - StructReader header; - header.u16L(length) - .u16L(restartPosition) - .u16L(channels) - .u16L(patternCount) - .u16L(instrumentCount) - .u16L(flags) - .u16L(tempo) - .u16L(bpmSpeed); - - uint count = header.read(*this, headerSize - 4U); - uint size = std::min(headerSize - 4U, (ulong)header.size()); - - READ_ASSERT(count == size); - - d->properties.setLengthInPatterns(length); - d->properties.setRestartPosition(restartPosition); - d->properties.setChannels(channels); - d->properties.setPatternCount(patternCount); - d->properties.setInstrumentCount(instrumentCount); - d->properties.setFlags(flags); - d->properties.setTempo(tempo); - d->properties.setBpmSpeed(bpmSpeed); - - seek(60 + headerSize); - - // read patterns: - for(ushort i = 0; i < patternCount; ++ i) { - READ_U32L_AS(patternHeaderLength); - READ_ASSERT(patternHeaderLength >= 4); - - uchar packingType = 0; - ushort rowCount = 0; - ushort dataSize = 0; - StructReader pattern; - pattern.byte(packingType).u16L(rowCount).u16L(dataSize); - - uint count = pattern.read(*this, patternHeaderLength - 4U); - READ_ASSERT(count == std::min(patternHeaderLength - 4U, (ulong)pattern.size())); - - seek(patternHeaderLength - (4 + count) + dataSize, Current); - } - - StringList intrumentNames; - StringList sampleNames; - uint sumSampleCount = 0; - - // read instruments: - for(ushort i = 0; i < instrumentCount; ++ i) { - READ_U32L_AS(instrumentHeaderSize); - READ_ASSERT(instrumentHeaderSize >= 4); - - String instrumentName; - uchar instrumentType = 0; - ushort sampleCount = 0; - - StructReader instrument; - instrument.string(instrumentName, 22).byte(instrumentType).u16L(sampleCount); - - // 4 for instrumentHeaderSize - uint count = 4 + instrument.read(*this, instrumentHeaderSize - 4U); - READ_ASSERT(count == std::min(instrumentHeaderSize, (ulong)instrument.size() + 4)); - - ulong sampleHeaderSize = 0; - long offset = 0; - if(sampleCount > 0) { - sumSampleCount += sampleCount; - // wouldn't know which header size to assume otherwise: - READ_ASSERT(instrumentHeaderSize >= count + 4 && readU32L(sampleHeaderSize)); - // skip unhandeled header proportion: - seek(instrumentHeaderSize - count - 4, Current); - - for(ushort j = 0; j < sampleCount; ++ j) { - ulong sampleLength = 0; - ulong loopStart = 0; - ulong loopLength = 0; - uchar volume = 0; - uchar finetune = 0; - uchar sampleType = 0; - uchar panning = 0; - uchar noteNumber = 0; - uchar compression = 0; - String sampleName; - StructReader sample; - sample.u32L(sampleLength) - .u32L(loopStart) - .u32L(loopLength) - .byte(volume) - .byte(finetune) - .byte(sampleType) - .byte(panning) - .byte(noteNumber) - .byte(compression) - .string(sampleName, 22); - - uint count = sample.read(*this, sampleHeaderSize); - READ_ASSERT(count == std::min(sampleHeaderSize, (ulong)sample.size())); - // skip unhandeled header proportion: - seek(sampleHeaderSize - count, Current); - - offset += sampleLength; - sampleNames.append(sampleName); - } - } - else { - offset = instrumentHeaderSize - count; - } - intrumentNames.append(instrumentName); - seek(offset, Current); - } - - d->properties.setSampleCount(sumSampleCount); - String comment(intrumentNames.toString("\n")); - if(sampleNames.size() > 0) { - comment += "\n"; - comment += sampleNames.toString("\n"); - } - d->tag.setComment(comment); -} diff --git a/platform/win32/msvc/external/taglib/taglib/xm/xmfile.h b/platform/win32/msvc/external/taglib/taglib/xm/xmfile.h deleted file mode 100644 index 9d1bb71c687..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/xm/xmfile.h +++ /dev/null @@ -1,104 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef TAGLIB_XMFILE_H -#define TAGLIB_XMFILE_H - -#include "tfile.h" -#include "audioproperties.h" -#include "taglib_export.h" -#include "modfilebase.h" -#include "modtag.h" -#include "xmproperties.h" - -namespace TagLib { - - namespace XM { - - class TAGLIB_EXPORT File : public Mod::FileBase { - public: - /*! - * Contructs a Extended Module file from \a file. If \a readProperties - * is true the file's audio properties will also be read using - * \a propertiesStyle. If false, \a propertiesStyle is ignored. - */ - File(FileName file, bool readProperties = true, - AudioProperties::ReadStyle propertiesStyle = - AudioProperties::Average); - - /*! - * Contructs a Extended Module file from \a stream. If \a readProperties - * is true the file's audio properties will also be read using - * \a propertiesStyle. If false, \a propertiesStyle is ignored. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - */ - File(IOStream *stream, bool readProperties = true, - AudioProperties::ReadStyle propertiesStyle = - AudioProperties::Average); - - /*! - * Destroys this instance of the File. - */ - virtual ~File(); - - Mod::Tag *tag() const; - - /*! - * Implements the unified property interface -- export function. - * Forwards to Mod::Tag::properties(). - */ - PropertyMap properties() const; - - /*! - * Implements the unified property interface -- import function. - * Forwards to Mod::Tag::setProperties(). - */ - PropertyMap setProperties(const PropertyMap &); - - /*! - * Returns the XM::Properties for this file. If no audio properties - * were read then this will return a null pointer. - */ - XM::Properties *audioProperties() const; - - /*! - * Save the file. - * This is the same as calling save(AllTags); - * - * \note Saving Extended Module tags is not supported. - */ - bool save(); - - private: - File(const File &); - File &operator=(const File &); - - void read(bool readProperties); - - class FilePrivate; - FilePrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/taglib/xm/xmproperties.cpp b/platform/win32/msvc/external/taglib/taglib/xm/xmproperties.cpp deleted file mode 100644 index 45da02bd3d3..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/xm/xmproperties.cpp +++ /dev/null @@ -1,180 +0,0 @@ -/*************************************************************************** - copyright :(C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include "xmproperties.h" - -using namespace TagLib; -using namespace XM; - -class XM::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate() : - lengthInPatterns(0), - channels(0), - version(0), - restartPosition(0), - patternCount(0), - instrumentCount(0), - sampleCount(0), - flags(0), - tempo(0), - bpmSpeed(0) - { - } - - ushort lengthInPatterns; - int channels; - ushort version; - ushort restartPosition; - ushort patternCount; - ushort instrumentCount; - uint sampleCount; - ushort flags; - ushort tempo; - ushort bpmSpeed; -}; - -XM::Properties::Properties(AudioProperties::ReadStyle propertiesStyle) : - AudioProperties(propertiesStyle), - d(new PropertiesPrivate) -{ -} - -XM::Properties::~Properties() -{ - delete d; -} - -int XM::Properties::length() const -{ - return 0; -} - -int XM::Properties::bitrate() const -{ - return 0; -} - -int XM::Properties::sampleRate() const -{ - return 0; -} - -int XM::Properties::channels() const -{ - return d->channels; -} - -TagLib::ushort XM::Properties::lengthInPatterns() const -{ - return d->lengthInPatterns; -} - -TagLib::ushort XM::Properties::version() const -{ - return d->version; -} - -TagLib::ushort XM::Properties::restartPosition() const -{ - return d->restartPosition; -} - -TagLib::ushort XM::Properties::patternCount() const -{ - return d->patternCount; -} - -TagLib::ushort XM::Properties::instrumentCount() const -{ - return d->instrumentCount; -} - -TagLib::uint XM::Properties::sampleCount() const -{ - return d->sampleCount; -} - -TagLib::ushort XM::Properties::flags() const -{ - return d->flags; -} - -TagLib::ushort XM::Properties::tempo() const -{ - return d->tempo; -} - -TagLib::ushort XM::Properties::bpmSpeed() const -{ - return d->bpmSpeed; -} - -void XM::Properties::setLengthInPatterns(ushort lengthInPatterns) -{ - d->lengthInPatterns = lengthInPatterns; -} - -void XM::Properties::setChannels(int channels) -{ - d->channels = channels; -} - -void XM::Properties::setVersion(ushort version) -{ - d->version = version; -} - -void XM::Properties::setRestartPosition(ushort restartPosition) -{ - d->restartPosition = restartPosition; -} - -void XM::Properties::setPatternCount(ushort patternCount) -{ - d->patternCount = patternCount; -} - -void XM::Properties::setInstrumentCount(ushort instrumentCount) -{ - d->instrumentCount = instrumentCount; -} - -void XM::Properties::setSampleCount(uint sampleCount) -{ - d->sampleCount = sampleCount; -} - -void XM::Properties::setFlags(ushort flags) -{ - d->flags = flags; -} - -void XM::Properties::setTempo(ushort tempo) -{ - d->tempo = tempo; -} - -void XM::Properties::setBpmSpeed(ushort bpmSpeed) -{ - d->bpmSpeed = bpmSpeed; -} diff --git a/platform/win32/msvc/external/taglib/taglib/xm/xmproperties.h b/platform/win32/msvc/external/taglib/taglib/xm/xmproperties.h deleted file mode 100644 index 9b6624a77c5..00000000000 --- a/platform/win32/msvc/external/taglib/taglib/xm/xmproperties.h +++ /dev/null @@ -1,79 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef TAGLIB_XMPROPERTIES_H -#define TAGLIB_XMPROPERTIES_H - -#include "taglib.h" -#include "tstring.h" -#include "audioproperties.h" - -namespace TagLib { - namespace XM { - class Properties : public AudioProperties { - friend class File; - public: - /*! Flag bits. */ - enum { - LinearFreqTable = 1 // otherwise its the amiga freq. table - }; - - Properties(AudioProperties::ReadStyle propertiesStyle); - virtual ~Properties(); - - int length() const; - int bitrate() const; - int sampleRate() const; - int channels() const; - - ushort lengthInPatterns() const; - ushort version() const; - ushort restartPosition() const; - ushort patternCount() const; - ushort instrumentCount() const; - uint sampleCount() const; - ushort flags() const; - ushort tempo() const; - ushort bpmSpeed() const; - - void setChannels(int channels); - - void setLengthInPatterns(ushort lengthInPatterns); - void setVersion(ushort version); - void setRestartPosition(ushort restartPosition); - void setPatternCount(ushort patternCount); - void setInstrumentCount(ushort instrumentCount); - void setSampleCount(uint sampleCount); - void setFlags(ushort flags); - void setTempo(ushort tempo); - void setBpmSpeed(ushort bpmSpeed); - - private: - Properties(const Properties&); - Properties &operator=(const Properties&); - - class PropertiesPrivate; - PropertiesPrivate *d; - }; - } -} - -#endif diff --git a/platform/win32/msvc/external/taglib/tests/CMakeLists.txt b/platform/win32/msvc/external/taglib/tests/CMakeLists.txt deleted file mode 100644 index 38ba4d25f0d..00000000000 --- a/platform/win32/msvc/external/taglib/tests/CMakeLists.txt +++ /dev/null @@ -1,70 +0,0 @@ -INCLUDE_DIRECTORIES( - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/toolkit - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ape - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/asf - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpeg/id3v1 - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpeg/id3v2 - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpeg/id3v2/frames - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpeg - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpc - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mp4 - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/riff - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/riff/aiff - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/riff/wav - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/trueaudio - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ogg - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ogg/vorbis - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ogg/flac - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/flac - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/wavpack - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mod - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/s3m - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/it - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/xm -) - -SET(test_runner_SRCS - main.cpp - test_list.cpp - test_map.cpp - test_mpeg.cpp - test_synchdata.cpp - test_trueaudio.cpp - test_bytevector.cpp - test_bytevectorlist.cpp - test_bytevectorstream.cpp - test_string.cpp - test_propertymap.cpp - test_fileref.cpp - test_id3v1.cpp - test_id3v2.cpp - test_xiphcomment.cpp - test_aiff.cpp - test_riff.cpp - test_ogg.cpp - test_oggflac.cpp - test_flac.cpp - test_flacpicture.cpp - test_flacunknownmetadatablock.cpp - test_ape.cpp - test_apetag.cpp - test_wav.cpp - test_wavpack.cpp - test_mp4.cpp - test_mp4item.cpp - test_mp4coverart.cpp - test_asf.cpp - test_mod.cpp - test_s3m.cpp - test_it.cpp - test_xm.cpp - test_mpc.cpp -) - -ADD_EXECUTABLE(test_runner ${test_runner_SRCS}) -TARGET_LINK_LIBRARIES(test_runner tag ${CPPUNIT_LIBRARIES}) - -ADD_TEST(test_runner test_runner) -ADD_CUSTOM_TARGET(check COMMAND ${CMAKE_CTEST_COMMAND} -V - DEPENDS test_runner) diff --git a/platform/win32/msvc/external/taglib/tests/data/005411.id3 b/platform/win32/msvc/external/taglib/tests/data/005411.id3 deleted file mode 100644 index ab2e0997a0b..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/005411.id3 and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/64bit.mp4 b/platform/win32/msvc/external/taglib/tests/data/64bit.mp4 deleted file mode 100644 index 0bd7f9f33df..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/64bit.mp4 and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/broken-tenc.id3 b/platform/win32/msvc/external/taglib/tests/data/broken-tenc.id3 deleted file mode 100644 index 809040506f2..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/broken-tenc.id3 and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/changed.mod b/platform/win32/msvc/external/taglib/tests/data/changed.mod deleted file mode 100644 index 13dcea8bc98..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/changed.mod and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/changed.s3m b/platform/win32/msvc/external/taglib/tests/data/changed.s3m deleted file mode 100644 index 37bd49cdd47..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/changed.s3m and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/changed.xm b/platform/win32/msvc/external/taglib/tests/data/changed.xm deleted file mode 100644 index bb5db3ddd45..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/changed.xm and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/click.mpc b/platform/win32/msvc/external/taglib/tests/data/click.mpc deleted file mode 100644 index a41f14e9ea2..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/click.mpc and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/click.wv b/platform/win32/msvc/external/taglib/tests/data/click.wv deleted file mode 100644 index f8bd1a8513c..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/click.wv and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/compressed_id3_frame.mp3 b/platform/win32/msvc/external/taglib/tests/data/compressed_id3_frame.mp3 deleted file mode 100644 index 60bc895633b..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/compressed_id3_frame.mp3 and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/covr-junk.m4a b/platform/win32/msvc/external/taglib/tests/data/covr-junk.m4a deleted file mode 100644 index ac80cb29d25..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/covr-junk.m4a and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/empty.aiff b/platform/win32/msvc/external/taglib/tests/data/empty.aiff deleted file mode 100644 index 849b762da5a..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/empty.aiff and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/empty.ogg b/platform/win32/msvc/external/taglib/tests/data/empty.ogg deleted file mode 100644 index aa533104d6f..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/empty.ogg and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/empty.spx b/platform/win32/msvc/external/taglib/tests/data/empty.spx deleted file mode 100644 index 70572b4587f..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/empty.spx and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/empty.tta b/platform/win32/msvc/external/taglib/tests/data/empty.tta deleted file mode 100644 index 9cc00ba8156..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/empty.tta and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/empty.wav b/platform/win32/msvc/external/taglib/tests/data/empty.wav deleted file mode 100644 index 74b5a6de7b0..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/empty.wav and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/empty_alac.m4a b/platform/win32/msvc/external/taglib/tests/data/empty_alac.m4a deleted file mode 100644 index 8c678321847..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/empty_alac.m4a and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/empty_flac.oga b/platform/win32/msvc/external/taglib/tests/data/empty_flac.oga deleted file mode 100644 index 444587fd0cf..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/empty_flac.oga and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/empty_vorbis.oga b/platform/win32/msvc/external/taglib/tests/data/empty_vorbis.oga deleted file mode 100644 index aa533104d6f..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/empty_vorbis.oga and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/gnre.m4a b/platform/win32/msvc/external/taglib/tests/data/gnre.m4a deleted file mode 100644 index f925ea9eb5d..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/gnre.m4a and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/has-tags.m4a b/platform/win32/msvc/external/taglib/tests/data/has-tags.m4a deleted file mode 100644 index f48a28b5203..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/has-tags.m4a and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/id3v22-tda.mp3 b/platform/win32/msvc/external/taglib/tests/data/id3v22-tda.mp3 deleted file mode 100644 index d89ae1c4473..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/id3v22-tda.mp3 and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/ilst-is-last.m4a b/platform/win32/msvc/external/taglib/tests/data/ilst-is-last.m4a deleted file mode 100644 index c56c8049802..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/ilst-is-last.m4a and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/mac-390-hdr.ape b/platform/win32/msvc/external/taglib/tests/data/mac-390-hdr.ape deleted file mode 100644 index c703e2e2fd5..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/mac-390-hdr.ape and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/mac-396.ape b/platform/win32/msvc/external/taglib/tests/data/mac-396.ape deleted file mode 100644 index fa7ae414946..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/mac-396.ape and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/mac-399.ape b/platform/win32/msvc/external/taglib/tests/data/mac-399.ape deleted file mode 100644 index ae895ba21cb..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/mac-399.ape and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/mpeg2.mp3 b/platform/win32/msvc/external/taglib/tests/data/mpeg2.mp3 deleted file mode 100644 index 13e8d53df6f..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/mpeg2.mp3 and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/multiple-vc.flac b/platform/win32/msvc/external/taglib/tests/data/multiple-vc.flac deleted file mode 100644 index 93d9a8a14a2..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/multiple-vc.flac and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/no-tags.3g2 b/platform/win32/msvc/external/taglib/tests/data/no-tags.3g2 deleted file mode 100644 index d31a6ce96d7..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/no-tags.3g2 and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/no-tags.flac b/platform/win32/msvc/external/taglib/tests/data/no-tags.flac deleted file mode 100644 index 41714416760..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/no-tags.flac and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/no-tags.m4a b/platform/win32/msvc/external/taglib/tests/data/no-tags.m4a deleted file mode 100644 index ba4e92baef2..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/no-tags.m4a and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/no_length.wv b/platform/win32/msvc/external/taglib/tests/data/no_length.wv deleted file mode 100644 index c06d1071d5a..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/no_length.wv and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/noise.aif b/platform/win32/msvc/external/taglib/tests/data/noise.aif deleted file mode 100644 index 310b995e3c6..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/noise.aif and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/noise_odd.aif b/platform/win32/msvc/external/taglib/tests/data/noise_odd.aif deleted file mode 100644 index bccfd7283c4..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/noise_odd.aif and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/rare_frames.mp3 b/platform/win32/msvc/external/taglib/tests/data/rare_frames.mp3 deleted file mode 100644 index e485337f9e4..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/rare_frames.mp3 and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/silence-1.wma b/platform/win32/msvc/external/taglib/tests/data/silence-1.wma deleted file mode 100644 index e06f9176648..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/silence-1.wma and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/silence-44-s.flac b/platform/win32/msvc/external/taglib/tests/data/silence-44-s.flac deleted file mode 100644 index 24e15deb8c8..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/silence-44-s.flac and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/stripped.xm b/platform/win32/msvc/external/taglib/tests/data/stripped.xm deleted file mode 100644 index 57055f5f192..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/stripped.xm and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/sv4_header.mpc b/platform/win32/msvc/external/taglib/tests/data/sv4_header.mpc deleted file mode 100644 index 214f7ac4eb7..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/sv4_header.mpc and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/sv5_header.mpc b/platform/win32/msvc/external/taglib/tests/data/sv5_header.mpc deleted file mode 100644 index 6d17e65f0f8..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/sv5_header.mpc and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/sv8_header.mpc b/platform/win32/msvc/external/taglib/tests/data/sv8_header.mpc deleted file mode 100644 index 3405545a294..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/sv8_header.mpc and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/test.it b/platform/win32/msvc/external/taglib/tests/data/test.it deleted file mode 100644 index 379444b9186..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/test.it and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/test.mod b/platform/win32/msvc/external/taglib/tests/data/test.mod deleted file mode 100644 index 136b6119187..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/test.mod and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/test.ogg b/platform/win32/msvc/external/taglib/tests/data/test.ogg deleted file mode 100644 index 220f76f0cef..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/test.ogg and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/test.s3m b/platform/win32/msvc/external/taglib/tests/data/test.s3m deleted file mode 100644 index 668250bb787..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/test.s3m and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/test.xm b/platform/win32/msvc/external/taglib/tests/data/test.xm deleted file mode 100644 index b09d91324bb..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/test.xm and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/unsynch.id3 b/platform/win32/msvc/external/taglib/tests/data/unsynch.id3 deleted file mode 100644 index cfe6ee1a6f1..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/unsynch.id3 and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/w000.mp3 b/platform/win32/msvc/external/taglib/tests/data/w000.mp3 deleted file mode 100644 index f9c22617645..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/w000.mp3 and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/xing.mp3 b/platform/win32/msvc/external/taglib/tests/data/xing.mp3 deleted file mode 100644 index 0c880151b6b..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/xing.mp3 and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/data/zero-size-chunk.wav b/platform/win32/msvc/external/taglib/tests/data/zero-size-chunk.wav deleted file mode 100644 index 8517e797dc8..00000000000 Binary files a/platform/win32/msvc/external/taglib/tests/data/zero-size-chunk.wav and /dev/null differ diff --git a/platform/win32/msvc/external/taglib/tests/main.cpp b/platform/win32/msvc/external/taglib/tests/main.cpp deleted file mode 100644 index ab89dc3e701..00000000000 --- a/platform/win32/msvc/external/taglib/tests/main.cpp +++ /dev/null @@ -1,57 +0,0 @@ -#include <stdlib.h> -#include <string.h> -#include <fstream> -#include <stdexcept> -#include <cppunit/TestResult.h> -#include <cppunit/TestResultCollector.h> -#include <cppunit/TestRunner.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <cppunit/BriefTestProgressListener.h> -#include <cppunit/CompilerOutputter.h> -#include <cppunit/XmlOutputter.h> - -int main(int argc, char* argv[]) -{ - std::string testPath = (argc > 1) ? std::string(argv[1]) : ""; - - // Create the event manager and test controller - CppUnit::TestResult controller; - - // Add a listener that colllects test result - CppUnit::TestResultCollector result; - controller.addListener(&result); - - // Add a listener that print dots as test run. - CppUnit::BriefTestProgressListener progress; - controller.addListener(&progress); - - // Add the top suite to the test runner - CppUnit::TestRunner runner; - runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); - - try { - std::cout << "Running " << testPath; - runner.run(controller, testPath); - - std::cerr << std::endl; - - // Print test in a compiler compatible format. - CppUnit::CompilerOutputter outputter(&result, std::cerr); - outputter.write(); - - char *xml = ::getenv("CPPUNIT_XML"); - if(xml && !::strcmp(xml, "1")) { - std::ofstream xmlfileout("cpptestresults.xml"); - CppUnit::XmlOutputter xmlout(&result, xmlfileout); - xmlout.write(); - } - } - catch(std::invalid_argument &e){ - std::cerr << std::endl - << "ERROR: " << e.what() - << std::endl; - return 0; - } - - return result.wasSuccessful() ? 0 : 1; -} diff --git a/platform/win32/msvc/external/taglib/tests/test_aiff.cpp b/platform/win32/msvc/external/taglib/tests/test_aiff.cpp deleted file mode 100644 index df1c5ac123f..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_aiff.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <string> -#include <stdio.h> -#include <tag.h> -#include <tbytevectorlist.h> -#include <aifffile.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestAIFF : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestAIFF); - CPPUNIT_TEST(testReading); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testReading() - { - ScopedFileCopy copy("empty", ".aiff"); - string filename = copy.fileName(); - - RIFF::AIFF::File *f = new RIFF::AIFF::File(filename.c_str()); - CPPUNIT_ASSERT_EQUAL(705, f->audioProperties()->bitrate()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestAIFF); diff --git a/platform/win32/msvc/external/taglib/tests/test_ape.cpp b/platform/win32/msvc/external/taglib/tests/test_ape.cpp deleted file mode 100644 index c95ff0c22d6..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_ape.cpp +++ /dev/null @@ -1,52 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <string> -#include <stdio.h> -#include <tag.h> -#include <tstringlist.h> -#include <tbytevectorlist.h> -#include <apefile.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestAPE : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestAPE); - CPPUNIT_TEST(testProperties399); - CPPUNIT_TEST(testProperties396); - CPPUNIT_TEST(testProperties390); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testProperties399() - { - APE::File f(TEST_FILE_PATH_C("mac-399.ape")); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->length()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - } - - void testProperties396() - { - APE::File f(TEST_FILE_PATH_C("mac-396.ape")); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->length()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - } - - void testProperties390() - { - APE::File f(TEST_FILE_PATH_C("mac-390-hdr.ape")); - CPPUNIT_ASSERT_EQUAL(15, f.audioProperties()->length()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestAPE); diff --git a/platform/win32/msvc/external/taglib/tests/test_apetag.cpp b/platform/win32/msvc/external/taglib/tests/test_apetag.cpp deleted file mode 100644 index 0c63f0b6f26..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_apetag.cpp +++ /dev/null @@ -1,104 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <string> -#include <stdio.h> -#include <tag.h> -#include <tstringlist.h> -#include <tbytevectorlist.h> -#include <tpropertymap.h> -#include <apetag.h> -#include <tdebug.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestAPETag : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestAPETag); - CPPUNIT_TEST(testIsEmpty); - CPPUNIT_TEST(testIsEmpty2); - CPPUNIT_TEST(testPropertyInterface1); - CPPUNIT_TEST(testPropertyInterface2); - CPPUNIT_TEST(testInvalidKeys); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testIsEmpty() - { - APE::Tag tag; - CPPUNIT_ASSERT(tag.isEmpty()); - tag.addValue("COMPOSER", "Mike Oldfield"); - CPPUNIT_ASSERT(!tag.isEmpty()); - } - - void testIsEmpty2() - { - APE::Tag tag; - CPPUNIT_ASSERT(tag.isEmpty()); - tag.setArtist("Mike Oldfield"); - CPPUNIT_ASSERT(!tag.isEmpty()); - } - - void testPropertyInterface1() - { - APE::Tag tag; - PropertyMap dict = tag.properties(); - CPPUNIT_ASSERT(dict.isEmpty()); - dict["ARTIST"] = String("artist 1"); - dict["ARTIST"].append("artist 2"); - dict["TRACKNUMBER"].append("17"); - tag.setProperties(dict); - CPPUNIT_ASSERT_EQUAL(String("17"), tag.itemListMap()["TRACK"].values()[0]); - CPPUNIT_ASSERT_EQUAL(2u, tag.itemListMap()["ARTIST"].values().size()); - CPPUNIT_ASSERT_EQUAL(String("artist 1"), tag.artist()); - CPPUNIT_ASSERT_EQUAL(17u, tag.track()); - } - - void testPropertyInterface2() - { - APE::Tag tag; - APE::Item item1 = APE::Item("TRACK", "17"); - tag.setItem("TRACK", item1); - - APE::Item item2 = APE::Item(); - item2.setType(APE::Item::Binary); - tag.setItem("TESTBINARY", item2); - - PropertyMap properties = tag.properties(); - CPPUNIT_ASSERT_EQUAL(1u, properties.unsupportedData().size()); - CPPUNIT_ASSERT(properties.contains("TRACKNUMBER")); - CPPUNIT_ASSERT(!properties.contains("TRACK")); - CPPUNIT_ASSERT(tag.itemListMap().contains("TESTBINARY")); - - tag.removeUnsupportedProperties(properties.unsupportedData()); - CPPUNIT_ASSERT(!tag.itemListMap().contains("TESTBINARY")); - - APE::Item item3 = APE::Item("TRACKNUMBER", "29"); - tag.setItem("TRACKNUMBER", item3); - properties = tag.properties(); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(2), properties["TRACKNUMBER"].size()); - CPPUNIT_ASSERT_EQUAL(String("17"), properties["TRACKNUMBER"][0]); - CPPUNIT_ASSERT_EQUAL(String("29"), properties["TRACKNUMBER"][1]); - - } - - void testInvalidKeys() - { - PropertyMap properties; - properties["A"] = String("invalid key: one character"); - properties["MP+"] = String("invalid key: forbidden string"); - properties["A B~C"] = String("valid key: space and tilde"); - properties["ARTIST"] = String("valid key: normal one"); - - APE::Tag tag; - PropertyMap unsuccessful = tag.setProperties(properties); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(2), unsuccessful.size()); - CPPUNIT_ASSERT(unsuccessful.contains("A")); - CPPUNIT_ASSERT(unsuccessful.contains("MP+")); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestAPETag); - diff --git a/platform/win32/msvc/external/taglib/tests/test_asf.cpp b/platform/win32/msvc/external/taglib/tests/test_asf.cpp deleted file mode 100644 index 51981342b54..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_asf.cpp +++ /dev/null @@ -1,220 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <string> -#include <stdio.h> -#include <tag.h> -#include <tstringlist.h> -#include <tbytevectorlist.h> -#include <asffile.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestASF : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestASF); - CPPUNIT_TEST(testProperties); - CPPUNIT_TEST(testRead); - CPPUNIT_TEST(testSaveMultipleValues); - CPPUNIT_TEST(testSaveStream); - CPPUNIT_TEST(testSaveLanguage); - CPPUNIT_TEST(testDWordTrackNumber); - CPPUNIT_TEST(testSaveLargeValue); - CPPUNIT_TEST(testSavePicture); - CPPUNIT_TEST(testSaveMultiplePictures); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testProperties() - { - ASF::File f(TEST_FILE_PATH_C("silence-1.wma")); - CPPUNIT_ASSERT_EQUAL(4, f.audioProperties()->length()); - CPPUNIT_ASSERT_EQUAL(64, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(48000, f.audioProperties()->sampleRate()); - } - - void testRead() - { - ASF::File f(TEST_FILE_PATH_C("silence-1.wma")); - CPPUNIT_ASSERT_EQUAL(String("test"), f.tag()->title()); - } - - void testSaveMultipleValues() - { - ScopedFileCopy copy("silence-1", ".wma"); - string newname = copy.fileName(); - - ASF::File *f = new ASF::File(newname.c_str()); - ASF::AttributeList values; - values.append("Foo"); - values.append("Bar"); - f->tag()->attributeListMap()["WM/AlbumTitle"] = values; - f->save(); - delete f; - - f = new ASF::File(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(2, (int)f->tag()->attributeListMap()["WM/AlbumTitle"].size()); - delete f; - } - - void testDWordTrackNumber() - { - ScopedFileCopy copy("silence-1", ".wma"); - string newname = copy.fileName(); - - ASF::File *f = new ASF::File(newname.c_str()); - CPPUNIT_ASSERT(!f->tag()->attributeListMap().contains("WM/TrackNumber")); - f->tag()->setAttribute("WM/TrackNumber", (unsigned int)(123)); - f->save(); - delete f; - - f = new ASF::File(newname.c_str()); - CPPUNIT_ASSERT(f->tag()->attributeListMap().contains("WM/TrackNumber")); - CPPUNIT_ASSERT_EQUAL(ASF::Attribute::DWordType, f->tag()->attributeListMap()["WM/TrackNumber"].front().type()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(123), f->tag()->track()); - f->tag()->setTrack(234); - f->save(); - delete f; - - f = new ASF::File(newname.c_str()); - CPPUNIT_ASSERT(f->tag()->attributeListMap().contains("WM/TrackNumber")); - CPPUNIT_ASSERT_EQUAL(ASF::Attribute::UnicodeType, f->tag()->attributeListMap()["WM/TrackNumber"].front().type()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(234), f->tag()->track()); - delete f; - } - - void testSaveStream() - { - ScopedFileCopy copy("silence-1", ".wma"); - string newname = copy.fileName(); - - ASF::File *f = new ASF::File(newname.c_str()); - ASF::AttributeList values; - ASF::Attribute attr("Foo"); - attr.setStream(43); - values.append(attr); - f->tag()->attributeListMap()["WM/AlbumTitle"] = values; - f->save(); - delete f; - - f = new ASF::File(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(43, f->tag()->attributeListMap()["WM/AlbumTitle"][0].stream()); - delete f; - } - - void testSaveLanguage() - { - ScopedFileCopy copy("silence-1", ".wma"); - string newname = copy.fileName(); - - ASF::File *f = new ASF::File(newname.c_str()); - ASF::AttributeList values; - ASF::Attribute attr("Foo"); - attr.setStream(32); - attr.setLanguage(56); - values.append(attr); - f->tag()->attributeListMap()["WM/AlbumTitle"] = values; - f->save(); - delete f; - - f = new ASF::File(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(32, f->tag()->attributeListMap()["WM/AlbumTitle"][0].stream()); - CPPUNIT_ASSERT_EQUAL(56, f->tag()->attributeListMap()["WM/AlbumTitle"][0].language()); - delete f; - } - - void testSaveLargeValue() - { - ScopedFileCopy copy("silence-1", ".wma"); - string newname = copy.fileName(); - - ASF::File *f = new ASF::File(newname.c_str()); - ASF::AttributeList values; - ASF::Attribute attr(ByteVector(70000, 'x')); - values.append(attr); - f->tag()->attributeListMap()["WM/Blob"] = values; - f->save(); - delete f; - - f = new ASF::File(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(ByteVector(70000, 'x'), f->tag()->attributeListMap()["WM/Blob"][0].toByteVector()); - delete f; - } - - void testSavePicture() - { - ScopedFileCopy copy("silence-1", ".wma"); - string newname = copy.fileName(); - - ASF::File *f = new ASF::File(newname.c_str()); - ASF::AttributeList values; - ASF::Picture picture; - picture.setMimeType("image/jpeg"); - picture.setType(ASF::Picture::FrontCover); - picture.setDescription("description"); - picture.setPicture("data"); - ASF::Attribute attr(picture); - values.append(attr); - f->tag()->attributeListMap()["WM/Picture"] = values; - f->save(); - delete f; - - f = new ASF::File(newname.c_str()); - ASF::AttributeList values2 = f->tag()->attributeListMap()["WM/Picture"]; - CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), values2.size()); - ASF::Attribute attr2 = values2.front(); - ASF::Picture picture2 = attr2.toPicture(); - CPPUNIT_ASSERT(picture2.isValid()); - CPPUNIT_ASSERT_EQUAL(String("image/jpeg"), picture2.mimeType()); - CPPUNIT_ASSERT_EQUAL(ASF::Picture::FrontCover, picture2.type()); - CPPUNIT_ASSERT_EQUAL(String("description"), picture2.description()); - CPPUNIT_ASSERT_EQUAL(ByteVector("data"), picture2.picture()); - delete f; - } - - void testSaveMultiplePictures() - { - ScopedFileCopy copy("silence-1", ".wma"); - string newname = copy.fileName(); - - ASF::File *f = new ASF::File(newname.c_str()); - ASF::AttributeList values; - ASF::Picture picture; - picture.setMimeType("image/jpeg"); - picture.setType(ASF::Picture::FrontCover); - picture.setDescription("description"); - picture.setPicture("data"); - values.append(ASF::Attribute(picture)); - ASF::Picture picture2; - picture2.setMimeType("image/png"); - picture2.setType(ASF::Picture::BackCover); - picture2.setDescription("back cover"); - picture2.setPicture("PNG data"); - values.append(ASF::Attribute(picture2)); - f->tag()->attributeListMap()["WM/Picture"] = values; - f->save(); - delete f; - - f = new ASF::File(newname.c_str()); - ASF::AttributeList values2 = f->tag()->attributeListMap()["WM/Picture"]; - CPPUNIT_ASSERT_EQUAL(TagLib::uint(2), values2.size()); - ASF::Picture picture3 = values2[1].toPicture(); - CPPUNIT_ASSERT(picture3.isValid()); - CPPUNIT_ASSERT_EQUAL(String("image/jpeg"), picture3.mimeType()); - CPPUNIT_ASSERT_EQUAL(ASF::Picture::FrontCover, picture3.type()); - CPPUNIT_ASSERT_EQUAL(String("description"), picture3.description()); - CPPUNIT_ASSERT_EQUAL(ByteVector("data"), picture3.picture()); - ASF::Picture picture4 = values2[0].toPicture(); - CPPUNIT_ASSERT(picture4.isValid()); - CPPUNIT_ASSERT_EQUAL(String("image/png"), picture4.mimeType()); - CPPUNIT_ASSERT_EQUAL(ASF::Picture::BackCover, picture4.type()); - CPPUNIT_ASSERT_EQUAL(String("back cover"), picture4.description()); - CPPUNIT_ASSERT_EQUAL(ByteVector("PNG data"), picture4.picture()); - delete f; - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestASF); diff --git a/platform/win32/msvc/external/taglib/tests/test_bytevector.cpp b/platform/win32/msvc/external/taglib/tests/test_bytevector.cpp deleted file mode 100644 index 2ac78b34c18..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_bytevector.cpp +++ /dev/null @@ -1,241 +0,0 @@ -/* Copyright (C) 2003 Scott Wheeler <wheeler@kde.org> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include <cppunit/extensions/HelperMacros.h> -#include <tbytevector.h> -#include <tbytevectorlist.h> - -using namespace std; -using namespace TagLib; - -class TestByteVector : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestByteVector); - CPPUNIT_TEST(testByteVector); - CPPUNIT_TEST(testFind1); - CPPUNIT_TEST(testFind2); - CPPUNIT_TEST(testRfind1); - CPPUNIT_TEST(testRfind2); - CPPUNIT_TEST(testToHex); - CPPUNIT_TEST(testToUShort); - CPPUNIT_TEST(testReplace); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testConversion(unsigned int i, unsigned char a, unsigned char b, unsigned char c, unsigned char d) - { - ByteVector v(4, 0); - - v[3] = a; - v[2] = b; - v[1] = c; - v[0] = d; - CPPUNIT_ASSERT(v.toUInt(false) == i); - - v[0] = a; - v[1] = b; - v[2] = c; - v[3] = d; - CPPUNIT_ASSERT(v.toUInt() == i); - } - - void testByteVector() - { - ByteVector v("foobar"); - - CPPUNIT_ASSERT(v.find("ob") == 2); - CPPUNIT_ASSERT(v.find('b') == 3); - - ByteVector n(4, 0); - n[0] = 1; - CPPUNIT_ASSERT(n.toUInt(true) == 16777216); - CPPUNIT_ASSERT(n.toUInt(false) == 1); - CPPUNIT_ASSERT(ByteVector::fromUInt(16777216, true) == n); - CPPUNIT_ASSERT(ByteVector::fromUInt(1, false) == n); - - CPPUNIT_ASSERT(ByteVector::fromUInt(0xa0).toUInt() == 0xa0); - - testConversion(0x000000a0, 0x00, 0x00, 0x00, 0xa0); - testConversion(0xd50bf072, 0xd5, 0x0b, 0xf0, 0x72); - - ByteVector intVector(2, 0); - intVector[0] = char(0xfc); - intVector[1] = char(0x00); - CPPUNIT_ASSERT(intVector.toShort() == -1024); - intVector[0] = char(0x04); - intVector[1] = char(0x00); - CPPUNIT_ASSERT(intVector.toShort() == 1024); - - CPPUNIT_ASSERT(ByteVector::fromLongLong(1).toLongLong() == 1); - CPPUNIT_ASSERT(ByteVector::fromLongLong(0).toLongLong() == 0); - CPPUNIT_ASSERT(ByteVector::fromLongLong(0xffffffffffffffffLL).toLongLong() == -1); - CPPUNIT_ASSERT(ByteVector::fromLongLong(0xfffffffffffffffeLL).toLongLong() == -2); - CPPUNIT_ASSERT(ByteVector::fromLongLong(1024).toLongLong() == 1024); - - ByteVector a1("foo"); - a1.append("bar"); - CPPUNIT_ASSERT(a1 == "foobar"); - - ByteVector a2("foo"); - a2.append("b"); - CPPUNIT_ASSERT(a2 == "foob"); - - ByteVector a3; - a3.append("b"); - CPPUNIT_ASSERT(a3 == "b"); - - ByteVector s1("foo"); - CPPUNIT_ASSERT(ByteVectorList::split(s1, " ").size() == 1); - - ByteVector s2("f"); - CPPUNIT_ASSERT(ByteVectorList::split(s2, " ").size() == 1); - - - CPPUNIT_ASSERT(ByteVector().size() == 0); - CPPUNIT_ASSERT(ByteVector("asdf").clear().size() == 0); - CPPUNIT_ASSERT(ByteVector("asdf").clear() == ByteVector()); - } - - void testFind1() - { - CPPUNIT_ASSERT_EQUAL(4, ByteVector("....SggO."). find("SggO")); - CPPUNIT_ASSERT_EQUAL(4, ByteVector("....SggO."). find("SggO", 0)); - CPPUNIT_ASSERT_EQUAL(4, ByteVector("....SggO."). find("SggO", 1)); - CPPUNIT_ASSERT_EQUAL(4, ByteVector("....SggO."). find("SggO", 2)); - CPPUNIT_ASSERT_EQUAL(4, ByteVector("....SggO."). find("SggO", 3)); - CPPUNIT_ASSERT_EQUAL(4, ByteVector("....SggO."). find("SggO", 4)); - CPPUNIT_ASSERT_EQUAL(-1, ByteVector("....SggO."). find("SggO", 5)); - CPPUNIT_ASSERT_EQUAL(-1, ByteVector("....SggO."). find("SggO", 6)); - CPPUNIT_ASSERT_EQUAL(-1, ByteVector("....SggO."). find("SggO", 7)); - CPPUNIT_ASSERT_EQUAL(-1, ByteVector("....SggO."). find("SggO", 8)); - } - - void testFind2() - { - CPPUNIT_ASSERT_EQUAL(0, ByteVector("\x01", 1).find("\x01")); - CPPUNIT_ASSERT_EQUAL(0, ByteVector("\x01\x02", 2).find("\x01\x02")); - CPPUNIT_ASSERT_EQUAL(-1, ByteVector("\x01", 1).find("\x02")); - CPPUNIT_ASSERT_EQUAL(-1, ByteVector("\x01\x02", 2).find("\x01\x03")); - } - - void testRfind1() - { - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind("OggS", 0)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind("OggS", 1)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind("OggS", 2)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind("OggS", 3)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind("OggS", 4)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind("OggS", 5)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind("OggS", 6)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind("OggS", 7)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind("OggS", 8)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind("OggS")); - } - - void testRfind2() - { - ByteVector r0("**************"); - ByteVector r1("OggS**********"); - ByteVector r2("**********OggS"); - ByteVector r3("OggS******OggS"); - ByteVector r4("OggS*OggS*OggS"); - - CPPUNIT_ASSERT_EQUAL(-1, r0.find("OggS")); - CPPUNIT_ASSERT_EQUAL(-1, r0.rfind("OggS")); - CPPUNIT_ASSERT_EQUAL(0, r1.find("OggS")); - CPPUNIT_ASSERT_EQUAL(0, r1.rfind("OggS")); - CPPUNIT_ASSERT_EQUAL(10, r2.find("OggS")); - CPPUNIT_ASSERT_EQUAL(10, r2.rfind("OggS")); - CPPUNIT_ASSERT_EQUAL(0, r3.find("OggS")); - CPPUNIT_ASSERT_EQUAL(10, r3.rfind("OggS")); - CPPUNIT_ASSERT_EQUAL(10, r4.rfind("OggS")); - CPPUNIT_ASSERT_EQUAL(10, r4.rfind("OggS", 0)); - CPPUNIT_ASSERT_EQUAL(5, r4.rfind("OggS", 7)); - CPPUNIT_ASSERT_EQUAL(10, r4.rfind("OggS", 12)); - } - - void testToHex() - { - ByteVector v("\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f", 16); - - CPPUNIT_ASSERT_EQUAL(ByteVector("f0e1d2c3b4a5968778695a4b3c2d1e0f"), v.toHex()); - } - - void testToUShort() - { - CPPUNIT_ASSERT_EQUAL((unsigned short)0xFFFF, ByteVector("\xff\xff", 2).toUShort()); - CPPUNIT_ASSERT_EQUAL((unsigned short)0x0001, ByteVector("\x00\x01", 2).toUShort()); - CPPUNIT_ASSERT_EQUAL((unsigned short)0x0100, ByteVector("\x00\x01", 2).toUShort(false)); - CPPUNIT_ASSERT_EQUAL((unsigned short)0xFF01, ByteVector("\xFF\x01", 2).toUShort()); - CPPUNIT_ASSERT_EQUAL((unsigned short)0x01FF, ByteVector("\xFF\x01", 2).toUShort(false)); - } - - void testReplace() - { - { - ByteVector a("abcdabf"); - a.replace(ByteVector(""), ByteVector("<a>")); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcdabf"), a); - } - { - ByteVector a("abcdabf"); - a.replace(ByteVector("foobartoolong"), ByteVector("<a>")); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcdabf"), a); - } - { - ByteVector a("abcdabf"); - a.replace(ByteVector("xx"), ByteVector("yy")); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcdabf"), a); - } - { - ByteVector a("abcdabf"); - a.replace(ByteVector("a"), ByteVector("x")); - CPPUNIT_ASSERT_EQUAL(ByteVector("xbcdxbf"), a); - } - { - ByteVector a("abcdabf"); - a.replace(ByteVector("ab"), ByteVector("xy")); - CPPUNIT_ASSERT_EQUAL(ByteVector("xycdxyf"), a); - } - { - ByteVector a("abcdabf"); - a.replace(ByteVector("a"), ByteVector("<a>")); - CPPUNIT_ASSERT_EQUAL(ByteVector("<a>bcd<a>bf"), a); - } - { - ByteVector a("abcdabf"); - a.replace(ByteVector("ab"), ByteVector("x")); - CPPUNIT_ASSERT_EQUAL(ByteVector("xcdxf"), a); - } - { - ByteVector a("abcdabf"); - a.replace(ByteVector("ab"), ByteVector()); - CPPUNIT_ASSERT_EQUAL(ByteVector("cdf"), a); - } - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestByteVector); diff --git a/platform/win32/msvc/external/taglib/tests/test_bytevectorlist.cpp b/platform/win32/msvc/external/taglib/tests/test_bytevectorlist.cpp deleted file mode 100644 index f090fcdcbe1..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_bytevectorlist.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <tbytevector.h> -#include <tbytevectorlist.h> - -using namespace std; -using namespace TagLib; - -class TestByteVectorList : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestByteVectorList); - CPPUNIT_TEST(testSplitSingleChar); - CPPUNIT_TEST(testSplitSingleChar_2); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testSplitSingleChar() - { - ByteVector v("a b"); - - ByteVectorList l = ByteVectorList::split(v, " "); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(2), l.size()); - CPPUNIT_ASSERT_EQUAL(ByteVector("a"), l[0]); - CPPUNIT_ASSERT_EQUAL(ByteVector("b"), l[1]); - } - - void testSplitSingleChar_2() - { - ByteVector v("a"); - - ByteVectorList l = ByteVectorList::split(v, " "); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), l.size()); - CPPUNIT_ASSERT_EQUAL(ByteVector("a"), l[0]); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestByteVectorList); diff --git a/platform/win32/msvc/external/taglib/tests/test_bytevectorstream.cpp b/platform/win32/msvc/external/taglib/tests/test_bytevectorstream.cpp deleted file mode 100644 index b5114679844..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_bytevectorstream.cpp +++ /dev/null @@ -1,92 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <tbytevectorstream.h> - -using namespace std; -using namespace TagLib; - -class TestByteVectorStream : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestByteVectorStream); - CPPUNIT_TEST(testInitialData); - CPPUNIT_TEST(testWriteBlock); - CPPUNIT_TEST(testWriteBlockResize); - CPPUNIT_TEST(testReadBlock); - CPPUNIT_TEST(testRemoveBlock); - CPPUNIT_TEST(testInsert); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testInitialData() - { - ByteVector v("abcd"); - ByteVectorStream stream(v); - - CPPUNIT_ASSERT_EQUAL(ByteVector("abcd"), *stream.data()); - } - - void testWriteBlock() - { - ByteVector v("abcd"); - ByteVectorStream stream(v); - - stream.seek(1); - stream.writeBlock(ByteVector("xx")); - CPPUNIT_ASSERT_EQUAL(ByteVector("axxd"), *stream.data()); - } - - void testWriteBlockResize() - { - ByteVector v("abcd"); - ByteVectorStream stream(v); - - stream.seek(3); - stream.writeBlock(ByteVector("xx")); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcxx"), *stream.data()); - stream.seek(5); - stream.writeBlock(ByteVector("yy")); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcxxyy"), *stream.data()); - } - - void testReadBlock() - { - ByteVector v("abcd"); - ByteVectorStream stream(v); - - CPPUNIT_ASSERT_EQUAL(ByteVector("a"), stream.readBlock(1)); - CPPUNIT_ASSERT_EQUAL(ByteVector("bc"), stream.readBlock(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("d"), stream.readBlock(3)); - CPPUNIT_ASSERT_EQUAL(ByteVector::null, stream.readBlock(3)); - } - - void testRemoveBlock() - { - ByteVector v("abcd"); - ByteVectorStream stream(v); - - stream.removeBlock(1, 1); - CPPUNIT_ASSERT_EQUAL(ByteVector("acd"), *stream.data()); - stream.removeBlock(0, 2); - CPPUNIT_ASSERT_EQUAL(ByteVector("d"), *stream.data()); - stream.removeBlock(0, 2); - CPPUNIT_ASSERT_EQUAL(ByteVector(""), *stream.data()); - } - - void testInsert() - { - ByteVector v("abcd"); - ByteVectorStream stream(v); - - stream.insert(ByteVector("xx"), 1, 1); - CPPUNIT_ASSERT_EQUAL(ByteVector("axxcd"), *stream.data()); - stream.insert(ByteVector("yy"), 0, 2); - CPPUNIT_ASSERT_EQUAL(ByteVector("yyxcd"), *stream.data()); - stream.insert(ByteVector("foa"), 3, 2); - CPPUNIT_ASSERT_EQUAL(ByteVector("yyxfoa"), *stream.data()); - stream.insert(ByteVector("123"), 3, 0); - CPPUNIT_ASSERT_EQUAL(ByteVector("yyx123foa"), *stream.data()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestByteVectorStream); diff --git a/platform/win32/msvc/external/taglib/tests/test_fileref.cpp b/platform/win32/msvc/external/taglib/tests/test_fileref.cpp deleted file mode 100644 index 3268fdb4385..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_fileref.cpp +++ /dev/null @@ -1,150 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <string> -#include <stdio.h> -#include <tag.h> -#include <fileref.h> -#include <oggflacfile.h> -#include <vorbisfile.h> -#include "utils.h" -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -using namespace std; -using namespace TagLib; - -class TestFileRef : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestFileRef); - CPPUNIT_TEST(testASF); - CPPUNIT_TEST(testMusepack); - CPPUNIT_TEST(testVorbis); - CPPUNIT_TEST(testSpeex); - CPPUNIT_TEST(testFLAC); - CPPUNIT_TEST(testMP3); - CPPUNIT_TEST(testOGA_FLAC); - CPPUNIT_TEST(testOGA_Vorbis); - CPPUNIT_TEST(testMP4_1); - CPPUNIT_TEST(testMP4_2); - CPPUNIT_TEST(testMP4_3); - CPPUNIT_TEST(testTrueAudio); - CPPUNIT_TEST(testAPE); - CPPUNIT_TEST_SUITE_END(); - -public: - - void fileRefSave(const string &filename, const string &ext) - { - ScopedFileCopy copy(filename, ext); - string newname = copy.fileName(); - - FileRef *f = new FileRef(newname.c_str()); - CPPUNIT_ASSERT(!f->isNull()); - f->tag()->setArtist("test artist"); - f->tag()->setTitle("test title"); - f->tag()->setGenre("Test!"); - f->tag()->setAlbum("albummmm"); - f->tag()->setTrack(5); - f->tag()->setYear(2020); - f->save(); - delete f; - - f = new FileRef(newname.c_str()); - CPPUNIT_ASSERT(!f->isNull()); - CPPUNIT_ASSERT_EQUAL(f->tag()->artist(), String("test artist")); - CPPUNIT_ASSERT_EQUAL(f->tag()->title(), String("test title")); - CPPUNIT_ASSERT_EQUAL(f->tag()->genre(), String("Test!")); - CPPUNIT_ASSERT_EQUAL(f->tag()->album(), String("albummmm")); - CPPUNIT_ASSERT_EQUAL(f->tag()->track(), TagLib::uint(5)); - CPPUNIT_ASSERT_EQUAL(f->tag()->year(), TagLib::uint(2020)); - f->tag()->setArtist("ttest artist"); - f->tag()->setTitle("ytest title"); - f->tag()->setGenre("uTest!"); - f->tag()->setAlbum("ialbummmm"); - f->tag()->setTrack(7); - f->tag()->setYear(2080); - f->save(); - delete f; - - f = new FileRef(newname.c_str()); - CPPUNIT_ASSERT(!f->isNull()); - CPPUNIT_ASSERT_EQUAL(f->tag()->artist(), String("ttest artist")); - CPPUNIT_ASSERT_EQUAL(f->tag()->title(), String("ytest title")); - CPPUNIT_ASSERT_EQUAL(f->tag()->genre(), String("uTest!")); - CPPUNIT_ASSERT_EQUAL(f->tag()->album(), String("ialbummmm")); - CPPUNIT_ASSERT_EQUAL(f->tag()->track(), TagLib::uint(7)); - CPPUNIT_ASSERT_EQUAL(f->tag()->year(), TagLib::uint(2080)); - delete f; - } - - void testMusepack() - { - fileRefSave("click", ".mpc"); - } - - void testASF() - { - fileRefSave("silence-1", ".wma"); - } - - void testVorbis() - { - fileRefSave("empty", ".ogg"); - } - - void testSpeex() - { - fileRefSave("empty", ".spx"); - } - - void testFLAC() - { - fileRefSave("no-tags", ".flac"); - } - - void testMP3() - { - fileRefSave("xing", ".mp3"); - } - - void testTrueAudio() - { - fileRefSave("empty", ".tta"); - } - - void testMP4_1() - { - fileRefSave("has-tags", ".m4a"); - } - - void testMP4_2() - { - fileRefSave("no-tags", ".m4a"); - } - - void testMP4_3() - { - fileRefSave("no-tags", ".3g2"); - } - - void testOGA_FLAC() - { - FileRef *f = new FileRef(TEST_FILE_PATH_C("empty_flac.oga")); - CPPUNIT_ASSERT(dynamic_cast<Ogg::Vorbis::File *>(f->file()) == NULL); - CPPUNIT_ASSERT(dynamic_cast<Ogg::FLAC::File *>(f->file()) != NULL); - } - - void testOGA_Vorbis() - { - FileRef *f = new FileRef(TEST_FILE_PATH_C("empty_vorbis.oga")); - CPPUNIT_ASSERT(dynamic_cast<Ogg::Vorbis::File *>(f->file()) != NULL); - CPPUNIT_ASSERT(dynamic_cast<Ogg::FLAC::File *>(f->file()) == NULL); - } - - void testAPE() - { - fileRefSave("mac-399.ape", ".ape"); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestFileRef); diff --git a/platform/win32/msvc/external/taglib/tests/test_flac.cpp b/platform/win32/msvc/external/taglib/tests/test_flac.cpp deleted file mode 100644 index 992a02b87e7..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_flac.cpp +++ /dev/null @@ -1,236 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <string> -#include <stdio.h> -#include <tag.h> -#include <tstringlist.h> -#include <tbytevectorlist.h> -#include <tpropertymap.h> -#include <flacfile.h> -#include <xiphcomment.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestFLAC : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestFLAC); - CPPUNIT_TEST(testSignature); - CPPUNIT_TEST(testMultipleCommentBlocks); - CPPUNIT_TEST(testReadPicture); - CPPUNIT_TEST(testAddPicture); - CPPUNIT_TEST(testReplacePicture); - CPPUNIT_TEST(testRemoveAllPictures); - CPPUNIT_TEST(testRepeatedSave); - CPPUNIT_TEST(testSaveMultipleValues); - CPPUNIT_TEST(testDict); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testSignature() - { - FLAC::File f(TEST_FILE_PATH_C("no-tags.flac")); - CPPUNIT_ASSERT_EQUAL(ByteVector("a1b141f766e9849ac3db1030a20a3c77"), f.audioProperties()->signature().toHex()); - } - - void testMultipleCommentBlocks() - { - ScopedFileCopy copy("multiple-vc", ".flac"); - string newname = copy.fileName(); - - FLAC::File *f = new FLAC::File(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(String("Artist 1"), f->tag()->artist()); - f->tag()->setArtist("The Artist"); - f->save(); - delete f; - - f = new FLAC::File(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(String("The Artist"), f->tag()->artist()); - delete f; - } - - void testReadPicture() - { - ScopedFileCopy copy("silence-44-s", ".flac"); - string newname = copy.fileName(); - - FLAC::File *f = new FLAC::File(newname.c_str()); - List<FLAC::Picture *> lst = f->pictureList(); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), lst.size()); - - FLAC::Picture *pic = lst.front(); - CPPUNIT_ASSERT_EQUAL(FLAC::Picture::FrontCover, pic->type()); - CPPUNIT_ASSERT_EQUAL(1, pic->width()); - CPPUNIT_ASSERT_EQUAL(1, pic->height()); - CPPUNIT_ASSERT_EQUAL(24, pic->colorDepth()); - CPPUNIT_ASSERT_EQUAL(0, pic->numColors()); - CPPUNIT_ASSERT_EQUAL(String("image/png"), pic->mimeType()); - CPPUNIT_ASSERT_EQUAL(String("A pixel."), pic->description()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(150), pic->data().size()); - } - - void testAddPicture() - { - ScopedFileCopy copy("silence-44-s", ".flac"); - string newname = copy.fileName(); - - FLAC::File *f = new FLAC::File(newname.c_str()); - List<FLAC::Picture *> lst = f->pictureList(); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), lst.size()); - - FLAC::Picture *newpic = new FLAC::Picture(); - newpic->setType(FLAC::Picture::BackCover); - newpic->setWidth(5); - newpic->setHeight(6); - newpic->setColorDepth(16); - newpic->setNumColors(7); - newpic->setMimeType("image/jpeg"); - newpic->setDescription("new image"); - newpic->setData("JPEG data"); - f->addPicture(newpic); - f->save(); - - f = new FLAC::File(newname.c_str()); - lst = f->pictureList(); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(2), lst.size()); - - FLAC::Picture *pic = lst[0]; - CPPUNIT_ASSERT_EQUAL(FLAC::Picture::FrontCover, pic->type()); - CPPUNIT_ASSERT_EQUAL(1, pic->width()); - CPPUNIT_ASSERT_EQUAL(1, pic->height()); - CPPUNIT_ASSERT_EQUAL(24, pic->colorDepth()); - CPPUNIT_ASSERT_EQUAL(0, pic->numColors()); - CPPUNIT_ASSERT_EQUAL(String("image/png"), pic->mimeType()); - CPPUNIT_ASSERT_EQUAL(String("A pixel."), pic->description()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(150), pic->data().size()); - - pic = lst[1]; - CPPUNIT_ASSERT_EQUAL(FLAC::Picture::BackCover, pic->type()); - CPPUNIT_ASSERT_EQUAL(5, pic->width()); - CPPUNIT_ASSERT_EQUAL(6, pic->height()); - CPPUNIT_ASSERT_EQUAL(16, pic->colorDepth()); - CPPUNIT_ASSERT_EQUAL(7, pic->numColors()); - CPPUNIT_ASSERT_EQUAL(String("image/jpeg"), pic->mimeType()); - CPPUNIT_ASSERT_EQUAL(String("new image"), pic->description()); - CPPUNIT_ASSERT_EQUAL(ByteVector("JPEG data"), pic->data()); - } - - void testReplacePicture() - { - ScopedFileCopy copy("silence-44-s", ".flac"); - string newname = copy.fileName(); - - FLAC::File *f = new FLAC::File(newname.c_str()); - List<FLAC::Picture *> lst = f->pictureList(); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), lst.size()); - - FLAC::Picture *newpic = new FLAC::Picture(); - newpic->setType(FLAC::Picture::BackCover); - newpic->setWidth(5); - newpic->setHeight(6); - newpic->setColorDepth(16); - newpic->setNumColors(7); - newpic->setMimeType("image/jpeg"); - newpic->setDescription("new image"); - newpic->setData("JPEG data"); - f->removePictures(); - f->addPicture(newpic); - f->save(); - - f = new FLAC::File(newname.c_str()); - lst = f->pictureList(); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), lst.size()); - - FLAC::Picture *pic = lst[0]; - CPPUNIT_ASSERT_EQUAL(FLAC::Picture::BackCover, pic->type()); - CPPUNIT_ASSERT_EQUAL(5, pic->width()); - CPPUNIT_ASSERT_EQUAL(6, pic->height()); - CPPUNIT_ASSERT_EQUAL(16, pic->colorDepth()); - CPPUNIT_ASSERT_EQUAL(7, pic->numColors()); - CPPUNIT_ASSERT_EQUAL(String("image/jpeg"), pic->mimeType()); - CPPUNIT_ASSERT_EQUAL(String("new image"), pic->description()); - CPPUNIT_ASSERT_EQUAL(ByteVector("JPEG data"), pic->data()); - } - - void testRemoveAllPictures() - { - ScopedFileCopy copy("silence-44-s", ".flac"); - string newname = copy.fileName(); - - FLAC::File *f = new FLAC::File(newname.c_str()); - List<FLAC::Picture *> lst = f->pictureList(); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), lst.size()); - - f->removePictures(); - f->save(); - - f = new FLAC::File(newname.c_str()); - lst = f->pictureList(); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(0), lst.size()); - } - - void testRepeatedSave() - { - ScopedFileCopy copy("silence-44-s", ".flac"); - string newname = copy.fileName(); - - FLAC::File *f = new FLAC::File(newname.c_str()); - Tag *tag = f->tag(); - CPPUNIT_ASSERT_EQUAL(String("Silence"), tag->title()); - tag->setTitle("NEW TITLE"); - f->save(); - CPPUNIT_ASSERT_EQUAL(String("NEW TITLE"), tag->title()); - tag->setTitle("NEW TITLE 2"); - f->save(); - CPPUNIT_ASSERT_EQUAL(String("NEW TITLE 2"), tag->title()); - - f = new FLAC::File(newname.c_str()); - tag = f->tag(); - CPPUNIT_ASSERT_EQUAL(String("NEW TITLE 2"), tag->title()); - } - - void testSaveMultipleValues() - { - ScopedFileCopy copy("silence-44-s", ".flac"); - string newname = copy.fileName(); - - FLAC::File *f = new FLAC::File(newname.c_str()); - Ogg::XiphComment* c = f->xiphComment(true); - c->addField("ARTIST", "artist 1", true); - c->addField("ARTIST", "artist 2", false); - f->save(); - delete f; - - f = new FLAC::File(newname.c_str()); - c = f->xiphComment(true); - Ogg::FieldListMap m = c->fieldListMap(); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(2), m["ARTIST"].size()); - CPPUNIT_ASSERT_EQUAL(String("artist 1"), m["ARTIST"][0]); - CPPUNIT_ASSERT_EQUAL(String("artist 2"), m["ARTIST"][1]); - } - - void testDict() - { - // test unicode & multiple values with dict interface - ScopedFileCopy copy("silence-44-s", ".flac"); - string newname = copy.fileName(); - - FLAC::File *f = new FLAC::File(newname.c_str()); - PropertyMap dict; - dict["ARTIST"].append("artøst 1"); - dict["ARTIST"].append("artöst 2"); - f->setProperties(dict); - f->save(); - delete f; - - f = new FLAC::File(newname.c_str()); - dict = f->properties(); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(2), dict["ARTIST"].size()); - CPPUNIT_ASSERT_EQUAL(String("artøst 1"), dict["ARTIST"][0]); - CPPUNIT_ASSERT_EQUAL(String("artöst 2"), dict["ARTIST"][1]); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestFLAC); diff --git a/platform/win32/msvc/external/taglib/tests/test_flacpicture.cpp b/platform/win32/msvc/external/taglib/tests/test_flacpicture.cpp deleted file mode 100644 index 5ed13951b0b..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_flacpicture.cpp +++ /dev/null @@ -1,48 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <string> -#include <stdio.h> -#include <tag.h> -#include <tstringlist.h> -#include <tbytevectorlist.h> -#include <flacfile.h> -#include <flacmetadatablock.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestFLACPicture : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestFLACPicture); - CPPUNIT_TEST(testParse); - CPPUNIT_TEST(testPassThrough); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testParse() - { - char data[] = { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x2F, 0x70, 0x6E, 0x67, 0x00, 0x00, 0x00, 0x08, 0x41, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6C, 0x2E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x08, 0x02, 0x00, 0x00, 0x00, 0x90, 0x77, 0x53, 0xDE, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0B, 0x13, 0x00, 0x00, 0x0B, 0x13, 0x01, 0x00, 0x9A, 0x9C, 0x18, 0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4D, 0x45, 0x07, 0xD6, 0x0B, 0x1C, 0x0A, 0x36, 0x06, 0x08, 0x44, 0x3D, 0x32, 0x00, 0x00, 0x00, 0x1D, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6F, 0x6D, 0x6D, 0x65, 0x6E, 0x74, 0x00, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x54, 0x68, 0x65, 0x20, 0x47, 0x49, 0x4D, 0x50, 0xEF, 0x64, 0x25, 0x6E, 0x00, 0x00, 0x00, 0x0C, 0x49, 0x44, 0x41, 0x54, 0x08, 0xD7, 0x63, 0xF8, 0xFF, 0xFF, 0x3F, 0x00, 0x05, 0xFE, 0x02, 0xFE, 0xDC, 0xCC, 0x59, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82 }; - FLAC::Picture pic(ByteVector(data, 199)); - - CPPUNIT_ASSERT_EQUAL(3, int(pic.type())); - CPPUNIT_ASSERT_EQUAL(1, pic.width()); - CPPUNIT_ASSERT_EQUAL(1, pic.height()); - CPPUNIT_ASSERT_EQUAL(24, pic.colorDepth()); - CPPUNIT_ASSERT_EQUAL(0, pic.numColors()); - CPPUNIT_ASSERT_EQUAL(String("image/png"), pic.mimeType()); - CPPUNIT_ASSERT_EQUAL(String("A pixel."), pic.description()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(150), pic.data().size()); - } - - void testPassThrough() - { - char data[] = { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x2F, 0x70, 0x6E, 0x67, 0x00, 0x00, 0x00, 0x08, 0x41, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6C, 0x2E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x08, 0x02, 0x00, 0x00, 0x00, 0x90, 0x77, 0x53, 0xDE, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0B, 0x13, 0x00, 0x00, 0x0B, 0x13, 0x01, 0x00, 0x9A, 0x9C, 0x18, 0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4D, 0x45, 0x07, 0xD6, 0x0B, 0x1C, 0x0A, 0x36, 0x06, 0x08, 0x44, 0x3D, 0x32, 0x00, 0x00, 0x00, 0x1D, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6F, 0x6D, 0x6D, 0x65, 0x6E, 0x74, 0x00, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x54, 0x68, 0x65, 0x20, 0x47, 0x49, 0x4D, 0x50, 0xEF, 0x64, 0x25, 0x6E, 0x00, 0x00, 0x00, 0x0C, 0x49, 0x44, 0x41, 0x54, 0x08, 0xD7, 0x63, 0xF8, 0xFF, 0xFF, 0x3F, 0x00, 0x05, 0xFE, 0x02, 0xFE, 0xDC, 0xCC, 0x59, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82 }; - FLAC::Picture pic(ByteVector(data, 199)); - CPPUNIT_ASSERT_EQUAL(ByteVector(data, 199), pic.render()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestFLACPicture); - diff --git a/platform/win32/msvc/external/taglib/tests/test_flacunknownmetadatablock.cpp b/platform/win32/msvc/external/taglib/tests/test_flacunknownmetadatablock.cpp deleted file mode 100644 index 2a99a1eec5e..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_flacunknownmetadatablock.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <string> -#include <stdio.h> -#include <tag.h> -#include <tstringlist.h> -#include <tbytevectorlist.h> -#include <flacunknownmetadatablock.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestFLACUnknownMetadataBlock : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestFLACUnknownMetadataBlock); - CPPUNIT_TEST(testAccessors); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testAccessors() - { - ByteVector data("abc\x01", 4); - FLAC::UnknownMetadataBlock block(42, data); - CPPUNIT_ASSERT_EQUAL(42, block.code()); - CPPUNIT_ASSERT_EQUAL(data, block.data()); - CPPUNIT_ASSERT_EQUAL(data, block.render()); - ByteVector data2("xxx", 3); - block.setCode(13); - block.setData(data2); - CPPUNIT_ASSERT_EQUAL(13, block.code()); - CPPUNIT_ASSERT_EQUAL(data2, block.data()); - CPPUNIT_ASSERT_EQUAL(data2, block.render()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestFLACUnknownMetadataBlock); diff --git a/platform/win32/msvc/external/taglib/tests/test_id3v1.cpp b/platform/win32/msvc/external/taglib/tests/test_id3v1.cpp deleted file mode 100644 index 308225c2f84..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_id3v1.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <string> -#include <stdio.h> -#include <id3v1tag.h> - -using namespace std; -using namespace TagLib; - -class TestID3v1 : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestID3v1); - CPPUNIT_TEST(testStripWhiteSpace); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testStripWhiteSpace() - { - ID3v1::StringHandler h; - CPPUNIT_ASSERT_EQUAL(String("Foo"), h.parse(ByteVector("Foo "))); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestID3v1); diff --git a/platform/win32/msvc/external/taglib/tests/test_id3v2.cpp b/platform/win32/msvc/external/taglib/tests/test_id3v2.cpp deleted file mode 100644 index d3fbfee956d..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_id3v2.cpp +++ /dev/null @@ -1,719 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <string> -#include <stdio.h> -// so evil :( -#define protected public -#include <id3v2tag.h> -#include <mpegfile.h> -#include <id3v2frame.h> -#undef protected -#include <uniquefileidentifierframe.h> -#include <textidentificationframe.h> -#include <attachedpictureframe.h> -#include <unsynchronizedlyricsframe.h> -#include <generalencapsulatedobjectframe.h> -#include <relativevolumeframe.h> -#include <popularimeterframe.h> -#include <urllinkframe.h> -#include <ownershipframe.h> -#include <tdebug.h> -#include <tpropertymap.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class PublicFrame : public ID3v2::Frame -{ - public: - PublicFrame() : ID3v2::Frame(ByteVector("XXXX\0\0\0\0\0\0", 10)) {} - String readStringField(const ByteVector &data, String::Type encoding, - int *positon = 0) - { return ID3v2::Frame::readStringField(data, encoding, positon); } - virtual String toString() const { return String::null; } - virtual void parseFields(const ByteVector &) {} - virtual ByteVector renderFields() const { return ByteVector::null; } -}; - -class TestID3v2 : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestID3v2); - CPPUNIT_TEST(testUnsynchDecode); - CPPUNIT_TEST(testDowngradeUTF8ForID3v23); - CPPUNIT_TEST(testUTF16BEDelimiter); - CPPUNIT_TEST(testUTF16Delimiter); - CPPUNIT_TEST(testReadStringField); - CPPUNIT_TEST(testParseAPIC); - CPPUNIT_TEST(testParseAPIC_UTF16_BOM); - CPPUNIT_TEST(testParseAPICv22); - CPPUNIT_TEST(testDontRender22); - CPPUNIT_TEST(testParseGEOB); - CPPUNIT_TEST(testPOPMtoString); - CPPUNIT_TEST(testParsePOPM); - CPPUNIT_TEST(testParsePOPMWithoutCounter); - CPPUNIT_TEST(testRenderPOPM); - CPPUNIT_TEST(testPOPMFromFile); - CPPUNIT_TEST(testParseRelativeVolumeFrame); - CPPUNIT_TEST(testParseUniqueFileIdentifierFrame); - CPPUNIT_TEST(testParseEmptyUniqueFileIdentifierFrame); - CPPUNIT_TEST(testBrokenFrame1); - CPPUNIT_TEST(testItunes24FrameSize); - CPPUNIT_TEST(testParseUrlLinkFrame); - CPPUNIT_TEST(testRenderUrlLinkFrame); - CPPUNIT_TEST(testParseUserUrlLinkFrame); - CPPUNIT_TEST(testRenderUserUrlLinkFrame); - CPPUNIT_TEST(testParseOwnershipFrame); - CPPUNIT_TEST(testRenderOwnershipFrame); - CPPUNIT_TEST(testSaveUTF16Comment); - CPPUNIT_TEST(testUpdateGenre23_1); - CPPUNIT_TEST(testUpdateGenre23_2); - CPPUNIT_TEST(testUpdateGenre24); - CPPUNIT_TEST(testUpdateDate22); - CPPUNIT_TEST(testDowngradeTo23); - // CPPUNIT_TEST(testUpdateFullDate22); TODO TYE+TDA should be upgraded to TDRC together - CPPUNIT_TEST(testCompressedFrameWithBrokenLength); - CPPUNIT_TEST(testW000); - CPPUNIT_TEST(testPropertyInterface); - CPPUNIT_TEST(testPropertyInterface2); - CPPUNIT_TEST(testDeleteFrame); - CPPUNIT_TEST(testSaveAndStripID3v1ShouldNotAddFrameFromID3v1ToId3v2); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testUnsynchDecode() - { - MPEG::File f(TEST_FILE_PATH_C("unsynch.id3"), false); - CPPUNIT_ASSERT(f.tag()); - CPPUNIT_ASSERT_EQUAL(String("My babe just cares for me"), f.tag()->title()); - } - - void testDowngradeUTF8ForID3v23() - { - ID3v2::TextIdentificationFrame f(ByteVector("TPE1"), String::UTF8); - StringList sl; - sl.append("Foo"); - f.setText(sl); - f.header()->setVersion(3); - ByteVector data = f.render(); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4+4+2+1+6+2), data.size()); - ID3v2::TextIdentificationFrame f2(data); - CPPUNIT_ASSERT_EQUAL(sl, f2.fieldList()); - CPPUNIT_ASSERT_EQUAL(String::UTF16, f2.textEncoding()); - } - - void testUTF16BEDelimiter() - { - ID3v2::TextIdentificationFrame f(ByteVector("TPE1"), String::UTF16BE); - StringList sl; - sl.append("Foo"); - sl.append("Bar"); - f.setText(sl); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4+4+2+1+6+2+6), f.render().size()); - } - - void testUTF16Delimiter() - { - ID3v2::TextIdentificationFrame f(ByteVector("TPE1"), String::UTF16); - StringList sl; - sl.append("Foo"); - sl.append("Bar"); - f.setText(sl); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4+4+2+1+8+2+8), f.render().size()); - } - - void testBrokenFrame1() - { - MPEG::File f(TEST_FILE_PATH_C("broken-tenc.id3"), false); - CPPUNIT_ASSERT(f.tag()); - CPPUNIT_ASSERT(!f.ID3v2Tag()->frameListMap().contains("TENC")); - } - - void testReadStringField() - { - PublicFrame f; - ByteVector data("abc\0", 4); - String str = f.readStringField(data, String::Latin1); - CPPUNIT_ASSERT_EQUAL(String("abc"), str); - } - - // http://bugs.kde.org/show_bug.cgi?id=151078 - void testParseAPIC() - { - ID3v2::AttachedPictureFrame f(ByteVector("APIC" - "\x00\x00\x00\x07" - "\x00\x00" - "\x00" - "m\x00" - "\x01" - "d\x00" - "\x00", 17)); - CPPUNIT_ASSERT_EQUAL(String("m"), f.mimeType()); - CPPUNIT_ASSERT_EQUAL(ID3v2::AttachedPictureFrame::FileIcon, f.type()); - CPPUNIT_ASSERT_EQUAL(String("d"), f.description()); - } - - void testParseAPIC_UTF16_BOM() - { - ID3v2::AttachedPictureFrame f(ByteVector( - "\x41\x50\x49\x43\x00\x02\x0c\x59\x00\x00\x01\x69\x6d\x61\x67\x65" - "\x2f\x6a\x70\x65\x67\x00\x00\xfe\xff\x00\x63\x00\x6f\x00\x76\x00" - "\x65\x00\x72\x00\x2e\x00\x6a\x00\x70\x00\x67\x00\x00\xff\xd8\xff", - 16 * 3)); - CPPUNIT_ASSERT_EQUAL(String("image/jpeg"), f.mimeType()); - CPPUNIT_ASSERT_EQUAL(ID3v2::AttachedPictureFrame::Other, f.type()); - CPPUNIT_ASSERT_EQUAL(String("cover.jpg"), f.description()); - CPPUNIT_ASSERT_EQUAL(ByteVector("\xff\xd8\xff", 3), f.picture()); - } - - void testParseAPICv22() - { - ID3v2::FrameFactory *factory = ID3v2::FrameFactory::instance(); - ByteVector data = ByteVector("PIC" - "\x00\x00\x08" - "\x00" - "JPG" - "\x01" - "d\x00" - "\x00", 18); - ID3v2::AttachedPictureFrame *frame = - static_cast<TagLib::ID3v2::AttachedPictureFrame*>(factory->createFrame(data, TagLib::uint(2))); - - CPPUNIT_ASSERT(frame); - CPPUNIT_ASSERT_EQUAL(String("image/jpeg"), frame->mimeType()); - CPPUNIT_ASSERT_EQUAL(ID3v2::AttachedPictureFrame::FileIcon, frame->type()); - CPPUNIT_ASSERT_EQUAL(String("d"), frame->description()); - } - - void testDontRender22() - { - ID3v2::FrameFactory *factory = ID3v2::FrameFactory::instance(); - ByteVector data = ByteVector("FOO" - "\x00\x00\x08" - "\x00" - "JPG" - "\x01" - "d\x00" - "\x00", 18); - ID3v2::AttachedPictureFrame *frame = - static_cast<TagLib::ID3v2::AttachedPictureFrame*>(factory->createFrame(data, TagLib::uint(2))); - - CPPUNIT_ASSERT(frame); - - ID3v2::Tag tag; - tag.addFrame(frame); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(1034), tag.render().size()); - } - - // http://bugs.kde.org/show_bug.cgi?id=151078 - void testParseGEOB() - { - ID3v2::GeneralEncapsulatedObjectFrame f(ByteVector("GEOB" - "\x00\x00\x00\x08" - "\x00\x00" - "\x00" - "m\x00" - "f\x00" - "d\x00" - "\x00", 18)); - CPPUNIT_ASSERT_EQUAL(String("m"), f.mimeType()); - CPPUNIT_ASSERT_EQUAL(String("f"), f.fileName()); - CPPUNIT_ASSERT_EQUAL(String("d"), f.description()); - } - - void testParsePOPM() - { - ID3v2::PopularimeterFrame f(ByteVector("POPM" - "\x00\x00\x00\x17" - "\x00\x00" - "email@example.com\x00" - "\x02" - "\x00\x00\x00\x03", 33)); - CPPUNIT_ASSERT_EQUAL(String("email@example.com"), f.email()); - CPPUNIT_ASSERT_EQUAL(2, f.rating()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(3), f.counter()); - } - - void testParsePOPMWithoutCounter() - { - ID3v2::PopularimeterFrame f(ByteVector("POPM" - "\x00\x00\x00\x13" - "\x00\x00" - "email@example.com\x00" - "\x02", 29)); - CPPUNIT_ASSERT_EQUAL(String("email@example.com"), f.email()); - CPPUNIT_ASSERT_EQUAL(2, f.rating()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(0), f.counter()); - } - - void testRenderPOPM() - { - ID3v2::PopularimeterFrame f; - f.setEmail("email@example.com"); - f.setRating(2); - f.setCounter(3); - CPPUNIT_ASSERT_EQUAL( - ByteVector("POPM" - "\x00\x00\x00\x17" - "\x00\x00" - "email@example.com\x00" - "\x02" - "\x00\x00\x00\x03", 33), - f.render()); - } - - void testPOPMtoString() - { - ID3v2::PopularimeterFrame f; - f.setEmail("email@example.com"); - f.setRating(2); - f.setCounter(3); - CPPUNIT_ASSERT_EQUAL( - String("email@example.com rating=2 counter=3"), f.toString()); - } - - void testPOPMFromFile() - { - ScopedFileCopy copy("xing", ".mp3"); - string newname = copy.fileName(); - - ID3v2::PopularimeterFrame *f = new ID3v2::PopularimeterFrame(); - f->setEmail("email@example.com"); - f->setRating(200); - f->setCounter(3); - - MPEG::File foo(newname.c_str()); - foo.ID3v2Tag()->addFrame(f); - foo.save(); - - MPEG::File bar(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(String("email@example.com"), dynamic_cast<ID3v2::PopularimeterFrame *>(bar.ID3v2Tag()->frameList("POPM").front())->email()); - CPPUNIT_ASSERT_EQUAL(200, dynamic_cast<ID3v2::PopularimeterFrame *>(bar.ID3v2Tag()->frameList("POPM").front())->rating()); - } - - // http://bugs.kde.org/show_bug.cgi?id=150481 - void testParseRelativeVolumeFrame() - { - ID3v2::RelativeVolumeFrame f( - ByteVector("RVA2" // Frame ID - "\x00\x00\x00\x0B" // Frame size - "\x00\x00" // Frame flags - "ident\x00" // Identification - "\x02" // Type of channel - "\x00\x0F" // Volume adjustment - "\x08" // Bits representing peak - "\x45", 21)); // Peak volume - CPPUNIT_ASSERT_EQUAL(String("ident"), f.identification()); - CPPUNIT_ASSERT_EQUAL(15.0f / 512.0f, - f.volumeAdjustment(ID3v2::RelativeVolumeFrame::FrontRight)); - CPPUNIT_ASSERT_EQUAL((uchar)8, - f.peakVolume(ID3v2::RelativeVolumeFrame::FrontRight).bitsRepresentingPeak); - CPPUNIT_ASSERT_EQUAL(ByteVector("\x45"), - f.peakVolume(ID3v2::RelativeVolumeFrame::FrontRight).peakVolume); - } - - void testParseUniqueFileIdentifierFrame() - { - ID3v2::UniqueFileIdentifierFrame f( - ByteVector("UFID" // Frame ID - "\x00\x00\x00\x09" // Frame size - "\x00\x00" // Frame flags - "owner\x00" // Owner identifier - "\x00\x01\x02", 19)); // Identifier - CPPUNIT_ASSERT_EQUAL(String("owner"), - f.owner()); - CPPUNIT_ASSERT_EQUAL(ByteVector("\x00\x01\x02", 3), - f.identifier()); - } - - void testParseEmptyUniqueFileIdentifierFrame() - { - ID3v2::UniqueFileIdentifierFrame f( - ByteVector("UFID" // Frame ID - "\x00\x00\x00\x01" // Frame size - "\x00\x00" // Frame flags - "\x00" // Owner identifier - "", 11)); // Identifier - CPPUNIT_ASSERT_EQUAL(String(), - f.owner()); - CPPUNIT_ASSERT_EQUAL(ByteVector(), - f.identifier()); - } - - void testParseUrlLinkFrame() - { - ID3v2::UrlLinkFrame f( - ByteVector("WOAF" // Frame ID - "\x00\x00\x00\x12" // Frame size - "\x00\x00" // Frame flags - "http://example.com", 28)); // URL - CPPUNIT_ASSERT_EQUAL(String("http://example.com"), f.url()); - } - - void testRenderUrlLinkFrame() - { - ID3v2::UrlLinkFrame f("WOAF"); - f.setUrl("http://example.com"); - CPPUNIT_ASSERT_EQUAL( - ByteVector("WOAF" // Frame ID - "\x00\x00\x00\x12" // Frame size - "\x00\x00" // Frame flags - "http://example.com", 28), // URL - f.render()); - } - - void testParseUserUrlLinkFrame() - { - ID3v2::UserUrlLinkFrame f( - ByteVector("WXXX" // Frame ID - "\x00\x00\x00\x17" // Frame size - "\x00\x00" // Frame flags - "\x00" // Text encoding - "foo\x00" // Description - "http://example.com", 33)); // URL - CPPUNIT_ASSERT_EQUAL(String("foo"), f.description()); - CPPUNIT_ASSERT_EQUAL(String("http://example.com"), f.url()); - } - - void testRenderUserUrlLinkFrame() - { - ID3v2::UserUrlLinkFrame f; - f.setDescription("foo"); - f.setUrl("http://example.com"); - CPPUNIT_ASSERT_EQUAL( - ByteVector("WXXX" // Frame ID - "\x00\x00\x00\x17" // Frame size - "\x00\x00" // Frame flags - "\x00" // Text encoding - "foo\x00" // Description - "http://example.com", 33), // URL - f.render()); - } - - void testParseOwnershipFrame() - { - ID3v2::OwnershipFrame f( - ByteVector("OWNE" // Frame ID - "\x00\x00\x00\x19" // Frame size - "\x00\x00" // Frame flags - "\x00" // Text encoding - "GBP1.99\x00" // Price paid - "20120905" // Date of purchase - "Beatport", 35)); // Seller - CPPUNIT_ASSERT_EQUAL(String("GBP1.99"), f.pricePaid()); - CPPUNIT_ASSERT_EQUAL(String("20120905"), f.datePurchased()); - CPPUNIT_ASSERT_EQUAL(String("Beatport"), f.seller()); - } - - void testRenderOwnershipFrame() - { - ID3v2::OwnershipFrame f; - f.setPricePaid("GBP1.99"); - f.setDatePurchased("20120905"); - f.setSeller("Beatport"); - CPPUNIT_ASSERT_EQUAL( - ByteVector("OWNE" // Frame ID - "\x00\x00\x00\x19" // Frame size - "\x00\x00" // Frame flags - "\x00" // Text encoding - "GBP1.99\x00" // Price paid - "20120905" // Date of purchase - "Beatport", 35), // URL - f.render()); - } - - void testItunes24FrameSize() - { - MPEG::File f(TEST_FILE_PATH_C("005411.id3"), false); - CPPUNIT_ASSERT(f.tag()); - CPPUNIT_ASSERT(f.ID3v2Tag()->frameListMap().contains("TIT2")); - CPPUNIT_ASSERT_EQUAL(String("Sunshine Superman"), f.ID3v2Tag()->frameListMap()["TIT2"].front()->toString()); - } - - void testSaveUTF16Comment() - { - String::Type defaultEncoding = ID3v2::FrameFactory::instance()->defaultTextEncoding(); - ScopedFileCopy copy("xing", ".mp3"); - string newname = copy.fileName(); - ID3v2::FrameFactory::instance()->setDefaultTextEncoding(String::UTF16); - MPEG::File foo(newname.c_str()); - foo.strip(); - foo.tag()->setComment("Test comment!"); - foo.save(); - MPEG::File bar(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(String("Test comment!"), bar.tag()->comment()); - ID3v2::FrameFactory::instance()->setDefaultTextEncoding(defaultEncoding); - } - - void testUpdateGenre23_1() - { - // "Refinement" is the same as the ID3v1 genre - duplicate - ID3v2::FrameFactory *factory = ID3v2::FrameFactory::instance(); - ByteVector data = ByteVector("TCON" // Frame ID - "\x00\x00\x00\x10" // Frame size - "\x00\x00" // Frame flags - "\x00" // Encoding - "(22)Death Metal", 26); // Text - ID3v2::TextIdentificationFrame *frame = - static_cast<TagLib::ID3v2::TextIdentificationFrame*>(factory->createFrame(data, TagLib::uint(3))); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), frame->fieldList().size()); - CPPUNIT_ASSERT_EQUAL(String("Death Metal"), frame->fieldList()[0]); - - ID3v2::Tag tag; - tag.addFrame(frame); - CPPUNIT_ASSERT_EQUAL(String("Death Metal"), tag.genre()); - } - - void testUpdateGenre23_2() - { - // "Refinement" is different from the ID3v1 genre - ID3v2::FrameFactory *factory = ID3v2::FrameFactory::instance(); - ByteVector data = ByteVector("TCON" // Frame ID - "\x00\x00\x00\x13" // Frame size - "\x00\x00" // Frame flags - "\x00" // Encoding - "(4)Eurodisco", 23); // Text - ID3v2::TextIdentificationFrame *frame = - static_cast<TagLib::ID3v2::TextIdentificationFrame*>(factory->createFrame(data, TagLib::uint(3))); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(2), frame->fieldList().size()); - CPPUNIT_ASSERT_EQUAL(String("4"), frame->fieldList()[0]); - CPPUNIT_ASSERT_EQUAL(String("Eurodisco"), frame->fieldList()[1]); - - ID3v2::Tag tag; - tag.addFrame(frame); - CPPUNIT_ASSERT_EQUAL(String("Disco Eurodisco"), tag.genre()); - } - - void testUpdateGenre24() - { - ID3v2::FrameFactory *factory = ID3v2::FrameFactory::instance(); - ByteVector data = ByteVector("TCON" // Frame ID - "\x00\x00\x00\x0D" // Frame size - "\x00\x00" // Frame flags - "\0" // Encoding - "14\0Eurodisco", 23); // Text - ID3v2::TextIdentificationFrame *frame = - static_cast<TagLib::ID3v2::TextIdentificationFrame*>(factory->createFrame(data, TagLib::uint(4))); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(2), frame->fieldList().size()); - CPPUNIT_ASSERT_EQUAL(String("14"), frame->fieldList()[0]); - CPPUNIT_ASSERT_EQUAL(String("Eurodisco"), frame->fieldList()[1]); - - ID3v2::Tag tag; - tag.addFrame(frame); - CPPUNIT_ASSERT_EQUAL(String("R&B Eurodisco"), tag.genre()); - } - - void testUpdateDate22() - { - MPEG::File f(TEST_FILE_PATH_C("id3v22-tda.mp3"), false); - CPPUNIT_ASSERT(f.tag()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(2010), f.tag()->year()); - } - - void testUpdateFullDate22() - { - MPEG::File f(TEST_FILE_PATH_C("id3v22-tda.mp3"), false); - CPPUNIT_ASSERT(f.tag()); - CPPUNIT_ASSERT_EQUAL(String("2010-04-03"), f.ID3v2Tag()->frameListMap()["TDRC"].front()->toString()); - } - - void testDowngradeTo23() - { - ScopedFileCopy copy("xing", ".mp3"); - string newname = copy.fileName(); - - ID3v2::TextIdentificationFrame *tf; - MPEG::File foo(newname.c_str()); - tf = new ID3v2::TextIdentificationFrame("TDOR", String::Latin1); - tf->setText("2011-03-16"); - foo.ID3v2Tag()->addFrame(tf); - tf = new ID3v2::TextIdentificationFrame("TDRC", String::Latin1); - tf->setText("2012-04-17T12:01"); - foo.ID3v2Tag()->addFrame(tf); - tf = new ID3v2::TextIdentificationFrame("TMCL", String::Latin1); - tf->setText(StringList().append("Guitar").append("Artist 1").append("Drums").append("Artist 2")); - foo.ID3v2Tag()->addFrame(tf); - tf = new ID3v2::TextIdentificationFrame("TIPL", String::Latin1); - tf->setText(StringList().append("Producer").append("Artist 3").append("Mastering").append("Artist 4")); - foo.ID3v2Tag()->addFrame(tf); - foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TDRL", String::Latin1)); - foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TDTG", String::Latin1)); - foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TMOO", String::Latin1)); - foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TPRO", String::Latin1)); - foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TSOA", String::Latin1)); - foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TSOT", String::Latin1)); - foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TSST", String::Latin1)); - foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TSOP", String::Latin1)); - foo.save(MPEG::File::AllTags, true, 3); - - MPEG::File bar(newname.c_str()); - tf = static_cast<ID3v2::TextIdentificationFrame *>(bar.ID3v2Tag()->frameList("TDOR").front()); - CPPUNIT_ASSERT(tf); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), tf->fieldList().size()); - CPPUNIT_ASSERT_EQUAL(String("2011"), tf->fieldList().front()); - tf = static_cast<ID3v2::TextIdentificationFrame *>(bar.ID3v2Tag()->frameList("TDRC").front()); - CPPUNIT_ASSERT(tf); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), tf->fieldList().size()); - CPPUNIT_ASSERT_EQUAL(String("2012"), tf->fieldList().front()); - tf = dynamic_cast<ID3v2::TextIdentificationFrame *>(bar.ID3v2Tag()->frameList("TIPL").front()); - CPPUNIT_ASSERT(tf); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(8), tf->fieldList().size()); - CPPUNIT_ASSERT_EQUAL(String("Guitar"), tf->fieldList()[0]); - CPPUNIT_ASSERT_EQUAL(String("Artist 1"), tf->fieldList()[1]); - CPPUNIT_ASSERT_EQUAL(String("Drums"), tf->fieldList()[2]); - CPPUNIT_ASSERT_EQUAL(String("Artist 2"), tf->fieldList()[3]); - CPPUNIT_ASSERT_EQUAL(String("Producer"), tf->fieldList()[4]); - CPPUNIT_ASSERT_EQUAL(String("Artist 3"), tf->fieldList()[5]); - CPPUNIT_ASSERT_EQUAL(String("Mastering"), tf->fieldList()[6]); - CPPUNIT_ASSERT_EQUAL(String("Artist 4"), tf->fieldList()[7]); - CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TDRL")); - CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TDTG")); - CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TMOO")); - CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TPRO")); - CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TSOA")); - CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TSOT")); - CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TSST")); - CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TSOP")); - } - - void testCompressedFrameWithBrokenLength() - { - MPEG::File f(TEST_FILE_PATH_C("compressed_id3_frame.mp3"), false); - CPPUNIT_ASSERT(f.ID3v2Tag()->frameListMap().contains("APIC")); - ID3v2::AttachedPictureFrame *frame = - static_cast<TagLib::ID3v2::AttachedPictureFrame*>(f.ID3v2Tag()->frameListMap()["APIC"].front()); - CPPUNIT_ASSERT(frame); - CPPUNIT_ASSERT_EQUAL(String("image/bmp"), frame->mimeType()); - CPPUNIT_ASSERT_EQUAL(ID3v2::AttachedPictureFrame::Other, frame->type()); - CPPUNIT_ASSERT_EQUAL(String(""), frame->description()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(86414), frame->picture().size()); - } - - void testW000() - { - MPEG::File f(TEST_FILE_PATH_C("w000.mp3"), false); - CPPUNIT_ASSERT(f.ID3v2Tag()->frameListMap().contains("W000")); - ID3v2::UrlLinkFrame *frame = - dynamic_cast<TagLib::ID3v2::UrlLinkFrame*>(f.ID3v2Tag()->frameListMap()["W000"].front()); - CPPUNIT_ASSERT(frame); - CPPUNIT_ASSERT_EQUAL(String("lukas.lalinsky@example.com____"), frame->url()); - } - - void testPropertyInterface() - { - ScopedFileCopy copy("rare_frames", ".mp3"); - string newname = copy.fileName(); - MPEG::File f(newname.c_str()); - PropertyMap dict = f.ID3v2Tag(false)->properties(); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(6), dict.size()); - - CPPUNIT_ASSERT(dict.contains("USERTEXTDESCRIPTION1")); - CPPUNIT_ASSERT(dict.contains("QuodLibet::USERTEXTDESCRIPTION2")); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(2), dict["USERTEXTDESCRIPTION1"].size()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(2), dict["QuodLibet::USERTEXTDESCRIPTION2"].size()); - CPPUNIT_ASSERT_EQUAL(String("userTextData1"), dict["USERTEXTDESCRIPTION1"][0]); - CPPUNIT_ASSERT_EQUAL(String("userTextData2"), dict["USERTEXTDESCRIPTION1"][1]); - CPPUNIT_ASSERT_EQUAL(String("userTextData1"), dict["QuodLibet::USERTEXTDESCRIPTION2"][0]); - CPPUNIT_ASSERT_EQUAL(String("userTextData2"), dict["QuodLibet::USERTEXTDESCRIPTION2"][1]); - - CPPUNIT_ASSERT_EQUAL(String("Pop"), dict["GENRE"].front()); - - CPPUNIT_ASSERT_EQUAL(String("http://a.user.url"), dict["URL:USERURL"].front()); - - CPPUNIT_ASSERT_EQUAL(String("http://a.user.url/with/empty/description"), dict["URL"].front()); - CPPUNIT_ASSERT_EQUAL(String("A COMMENT"), dict["COMMENT"].front()); - - CPPUNIT_ASSERT_EQUAL(1u, dict.unsupportedData().size()); - CPPUNIT_ASSERT_EQUAL(String("UFID"), dict.unsupportedData().front()); - } - - void testPropertyInterface2() - { - ID3v2::Tag tag; - ID3v2::UnsynchronizedLyricsFrame *frame1 = new ID3v2::UnsynchronizedLyricsFrame(); - frame1->setDescription("test"); - frame1->setText("la-la-la test"); - tag.addFrame(frame1); - - ID3v2::UnsynchronizedLyricsFrame *frame2 = new ID3v2::UnsynchronizedLyricsFrame(); - frame2->setDescription(""); - frame2->setText("la-la-la nodescription"); - tag.addFrame(frame2); - - ID3v2::AttachedPictureFrame *frame3 = new ID3v2::AttachedPictureFrame(); - frame3->setDescription("test picture"); - tag.addFrame(frame3); - - ID3v2::TextIdentificationFrame *frame4 = new ID3v2::TextIdentificationFrame("TIPL"); - frame4->setText("single value is invalid for TIPL"); - tag.addFrame(frame4); - - ID3v2::TextIdentificationFrame *frame5 = new ID3v2::TextIdentificationFrame("TMCL"); - StringList tmclData; - tmclData.append("VIOLIN"); - tmclData.append("a violinist"); - tmclData.append("PIANO"); - tmclData.append("a pianist"); - frame5->setText(tmclData); - tag.addFrame(frame5); - - PropertyMap properties = tag.properties(); - - CPPUNIT_ASSERT_EQUAL(2u, properties.unsupportedData().size()); - CPPUNIT_ASSERT(properties.unsupportedData().contains("TIPL")); - CPPUNIT_ASSERT(properties.unsupportedData().contains("APIC")); - - CPPUNIT_ASSERT(properties.contains("PERFORMER:VIOLIN")); - CPPUNIT_ASSERT(properties.contains("PERFORMER:PIANO")); - CPPUNIT_ASSERT_EQUAL(String("a violinist"), properties["PERFORMER:VIOLIN"].front()); - CPPUNIT_ASSERT_EQUAL(String("a pianist"), properties["PERFORMER:PIANO"].front()); - - CPPUNIT_ASSERT(properties.contains("LYRICS")); - CPPUNIT_ASSERT(properties.contains("LYRICS:TEST")); - - tag.removeUnsupportedProperties(properties.unsupportedData()); - CPPUNIT_ASSERT(tag.frameList("APIC").isEmpty()); - CPPUNIT_ASSERT(tag.frameList("TIPL").isEmpty()); - } - - void testDeleteFrame() - { - ScopedFileCopy copy("rare_frames", ".mp3"); - string newname = copy.fileName(); - MPEG::File f(newname.c_str()); - ID3v2::Tag *t = f.ID3v2Tag(); - ID3v2::Frame *frame = t->frameList("TCON")[0]; - CPPUNIT_ASSERT_EQUAL(1u, t->frameList("TCON").size()); - t->removeFrame(frame, true); - f.save(MPEG::File::ID3v2); - - MPEG::File f2(newname.c_str()); - t = f2.ID3v2Tag(); - CPPUNIT_ASSERT(t->frameList("TCON").isEmpty()); - } - - void testSaveAndStripID3v1ShouldNotAddFrameFromID3v1ToId3v2() - { - ScopedFileCopy copy("xing", ".mp3"); - string newname = copy.fileName(); - - { - MPEG::File foo(newname.c_str()); - foo.tag()->setArtist("Artist"); - foo.save(MPEG::File::ID3v1 | MPEG::File::ID3v2); - } - - { - MPEG::File bar(newname.c_str()); - bar.ID3v2Tag()->removeFrames("TPE1"); - // Should strip ID3v1 here and not add old values to ID3v2 again - bar.save(MPEG::File::ID3v2, true); - } - - MPEG::File f(newname.c_str()); - CPPUNIT_ASSERT(!f.ID3v2Tag()->frameListMap().contains("TPE1")); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestID3v2); diff --git a/platform/win32/msvc/external/taglib/tests/test_it.cpp b/platform/win32/msvc/external/taglib/tests/test_it.cpp deleted file mode 100644 index 53d8ea0eb86..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_it.cpp +++ /dev/null @@ -1,136 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include <cppunit/extensions/HelperMacros.h> -#include <itfile.h> -#include <tstringlist.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; -using TagLib::uint; - -static const String titleBefore("test song name"); -static const String titleAfter("changed title"); - -static const String commentBefore( - "This is a sample name.\n" - "In module file formats\n" - "sample names are abused\n" - "as multiline comments.\n" - " "); - -static const String newComment( - "This is a sample name!\n" - "In module file formats\n" - "sample names are abused\n" - "as multiline comments.\n" - "-----------------------------------\n" - "The previous line is truncated but starting with this line\n" - "the comment is not limeted in the line length but to 8000\n" - "additional characters (bytes).\n" - "\n" - "This is because it is saved in the 'message' proportion of\n" - "IT files."); - -static const String commentAfter( - "This is a sample name!\n" - "In module file formats\n" - "sample names are abused\n" - "as multiline comments.\n" - "-------------------------\n" - "The previous line is truncated but starting with this line\n" - "the comment is not limeted in the line length but to 8000\n" - "additional characters (bytes).\n" - "\n" - "This is because it is saved in the 'message' proportion of\n" - "IT files."); - -class TestIT : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestIT); - CPPUNIT_TEST(testReadTags); - CPPUNIT_TEST(testWriteTags); - CPPUNIT_TEST_SUITE_END(); - -public: - void testReadTags() - { - testRead(TEST_FILE_PATH_C("test.it"), titleBefore, commentBefore); - } - - void testWriteTags() - { - ScopedFileCopy copy("test", ".it"); - { - IT::File file(copy.fileName().c_str()); - CPPUNIT_ASSERT(file.tag() != 0); - file.tag()->setTitle(titleAfter); - file.tag()->setComment(newComment); - file.tag()->setTrackerName("won't be saved"); - CPPUNIT_ASSERT(file.save()); - } - testRead(copy.fileName().c_str(), titleAfter, commentAfter); - } - -private: - void testRead(FileName fileName, const String &title, const String &comment) - { - IT::File file(fileName); - - CPPUNIT_ASSERT(file.isValid()); - - IT::Properties *p = file.audioProperties(); - Mod::Tag *t = file.tag(); - - CPPUNIT_ASSERT(0 != p); - CPPUNIT_ASSERT(0 != t); - - CPPUNIT_ASSERT_EQUAL( 0, p->length()); - CPPUNIT_ASSERT_EQUAL( 0, p->bitrate()); - CPPUNIT_ASSERT_EQUAL( 0, p->sampleRate()); - CPPUNIT_ASSERT_EQUAL(64, p->channels()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 0, p->lengthInPatterns()); - CPPUNIT_ASSERT_EQUAL(true, p->stereo()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 0, p->instrumentCount()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 5, p->sampleCount()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 1, p->patternCount()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort)535, p->version()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort)532, p->compatibleVersion()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 9, p->flags()); - CPPUNIT_ASSERT_EQUAL((TagLib::uchar)128, p->globalVolume()); - CPPUNIT_ASSERT_EQUAL((TagLib::uchar) 48, p->mixVolume()); - CPPUNIT_ASSERT_EQUAL((TagLib::uchar)125, p->tempo()); - CPPUNIT_ASSERT_EQUAL((TagLib::uchar) 6, p->bpmSpeed()); - CPPUNIT_ASSERT_EQUAL((TagLib::uchar)128, p->panningSeparation()); - CPPUNIT_ASSERT_EQUAL((TagLib::uchar) 0, p->pitchWheelDepth()); - CPPUNIT_ASSERT_EQUAL(title, t->title()); - CPPUNIT_ASSERT_EQUAL(String::null, t->artist()); - CPPUNIT_ASSERT_EQUAL(String::null, t->album()); - CPPUNIT_ASSERT_EQUAL(comment, t->comment()); - CPPUNIT_ASSERT_EQUAL(String::null, t->genre()); - CPPUNIT_ASSERT_EQUAL(0U, t->year()); - CPPUNIT_ASSERT_EQUAL(0U, t->track()); - CPPUNIT_ASSERT_EQUAL(String("Impulse Tracker"), t->trackerName()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestIT); diff --git a/platform/win32/msvc/external/taglib/tests/test_list.cpp b/platform/win32/msvc/external/taglib/tests/test_list.cpp deleted file mode 100644 index 39cbaf0a658..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_list.cpp +++ /dev/null @@ -1,58 +0,0 @@ -/* Copyright (C) 2003 Scott Wheeler <wheeler@kde.org> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include <cppunit/extensions/HelperMacros.h> -#include <tlist.h> - -using namespace std; -using namespace TagLib; - -class TestList : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestList); - CPPUNIT_TEST(testList); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testList() - { - List<int> l1; - List<int> l2; - List<int> l3; - l1.append(2); - l2.append(3); - l2.append(4); - l1.append(l2); - l1.prepend(1); - l3.append(1); - l3.append(2); - l3.append(3); - l3.append(4); - CPPUNIT_ASSERT(l1 == l3); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestList); diff --git a/platform/win32/msvc/external/taglib/tests/test_map.cpp b/platform/win32/msvc/external/taglib/tests/test_map.cpp deleted file mode 100644 index b6f77aae328..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_map.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <tstring.h> -#include <tmap.h> - -using namespace std; -using namespace TagLib; - -class TestMap : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestMap); - CPPUNIT_TEST(testInsert); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testInsert() - { - Map<String, int> m; - m.insert("foo", 3); - CPPUNIT_ASSERT_EQUAL(3, m["foo"]); - m.insert("foo", 7); - CPPUNIT_ASSERT_EQUAL(7, m["foo"]); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestMap); diff --git a/platform/win32/msvc/external/taglib/tests/test_mod.cpp b/platform/win32/msvc/external/taglib/tests/test_mod.cpp deleted file mode 100644 index 05657c1318b..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_mod.cpp +++ /dev/null @@ -1,126 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include <cppunit/extensions/HelperMacros.h> -#include <modfile.h> -#include <tpropertymap.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -static const String titleBefore("title of song"); -static const String titleAfter("changed title"); - -static const String commentBefore( - "Instrument names\n" - "are abused as\n" - "comments in\n" - "module file formats.\n" - "-+-+-+-+-+-+-+-+-+-+-+\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); - -static const String newComment( - "This line will be truncated because it is too long for a mod instrument name.\n" - "This line is ok."); - -static const String commentAfter( - "This line will be trun\n" - "This line is ok.\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); - -class TestMod : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestMod); - CPPUNIT_TEST(testReadTags); - CPPUNIT_TEST(testWriteTags); - CPPUNIT_TEST(testPropertyInterface); - CPPUNIT_TEST_SUITE_END(); - -public: - void testReadTags() - { - testRead(TEST_FILE_PATH_C("test.mod"), titleBefore, commentBefore); - } - - void testWriteTags() - { - ScopedFileCopy copy("test", ".mod"); - { - Mod::File file(copy.fileName().c_str()); - CPPUNIT_ASSERT(file.tag() != 0); - file.tag()->setTitle(titleAfter); - file.tag()->setComment(newComment); - CPPUNIT_ASSERT(file.save()); - } - testRead(copy.fileName().c_str(), titleAfter, commentAfter); - CPPUNIT_ASSERT(fileEqual( - copy.fileName(), - TEST_FILE_PATH_C("changed.mod"))); - } - - void testPropertyInterface() - { - Mod::Tag t; - PropertyMap properties; - properties["BLA"] = String("bla"); - properties["ARTIST"] = String("artist1"); - properties["ARTIST"].append("artist2"); - properties["TITLE"] = String("title"); - - PropertyMap unsupported = t.setProperties(properties); - CPPUNIT_ASSERT(unsupported.contains("BLA")); - CPPUNIT_ASSERT(unsupported.contains("ARTIST")); - CPPUNIT_ASSERT_EQUAL(properties["ARTIST"], unsupported["ARTIST"]); - CPPUNIT_ASSERT(!unsupported.contains("TITLE")); - } - -private: - void testRead(FileName fileName, const String &title, const String &comment) - { - Mod::File file(fileName); - - CPPUNIT_ASSERT(file.isValid()); - - Mod::Properties *p = file.audioProperties(); - Mod::Tag *t = file.tag(); - - CPPUNIT_ASSERT(0 != p); - CPPUNIT_ASSERT(0 != t); - - CPPUNIT_ASSERT_EQUAL(0, p->length()); - CPPUNIT_ASSERT_EQUAL(0, p->bitrate()); - CPPUNIT_ASSERT_EQUAL(0, p->sampleRate()); - CPPUNIT_ASSERT_EQUAL(8, p->channels()); - CPPUNIT_ASSERT_EQUAL(31U, p->instrumentCount()); - CPPUNIT_ASSERT_EQUAL((uchar)1, p->lengthInPatterns()); - CPPUNIT_ASSERT_EQUAL(title, t->title()); - CPPUNIT_ASSERT_EQUAL(String::null, t->artist()); - CPPUNIT_ASSERT_EQUAL(String::null, t->album()); - CPPUNIT_ASSERT_EQUAL(comment, t->comment()); - CPPUNIT_ASSERT_EQUAL(String::null, t->genre()); - CPPUNIT_ASSERT_EQUAL(0U, t->year()); - CPPUNIT_ASSERT_EQUAL(0U, t->track()); - CPPUNIT_ASSERT_EQUAL(String("StarTrekker"), t->trackerName()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestMod); diff --git a/platform/win32/msvc/external/taglib/tests/test_mp4.cpp b/platform/win32/msvc/external/taglib/tests/test_mp4.cpp deleted file mode 100644 index 14a4df8e81a..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_mp4.cpp +++ /dev/null @@ -1,229 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <string> -#include <stdio.h> -#include <tag.h> -#include <mp4tag.h> -#include <tbytevectorlist.h> -#include <mp4atom.h> -#include <mp4file.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestMP4 : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestMP4); - CPPUNIT_TEST(testPropertiesAAC); - CPPUNIT_TEST(testPropertiesALAC); - CPPUNIT_TEST(testFreeForm); - CPPUNIT_TEST(testCheckValid); - CPPUNIT_TEST(testUpdateStco); - CPPUNIT_TEST(testSaveExisingWhenIlstIsLast); - CPPUNIT_TEST(test64BitAtom); - CPPUNIT_TEST(testGnre); - CPPUNIT_TEST(testCovrRead); - CPPUNIT_TEST(testCovrWrite); - CPPUNIT_TEST(testCovrRead2); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testPropertiesAAC() - { - MP4::File f(TEST_FILE_PATH_C("has-tags.m4a")); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->length()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(16, ((MP4::Properties *)f.audioProperties())->bitsPerSample()); - } - - void testPropertiesALAC() - { - MP4::File f(TEST_FILE_PATH_C("empty_alac.m4a")); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->length()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(16, ((MP4::Properties *)f.audioProperties())->bitsPerSample()); - } - - void testCheckValid() - { - MP4::File f(TEST_FILE_PATH_C("empty.aiff")); - CPPUNIT_ASSERT(!f.isValid()); - MP4::File f2(TEST_FILE_PATH_C("has-tags.m4a")); - CPPUNIT_ASSERT(f2.isValid()); - } - - void testUpdateStco() - { - ScopedFileCopy copy("no-tags", ".3g2"); - string filename = copy.fileName(); - - MP4::File *f = new MP4::File(filename.c_str()); - f->tag()->setArtist(ByteVector(3000, 'x')); - - ByteVectorList data1; - { - MP4::Atoms a(f); - MP4::Atom *stco = a.find("moov")->findall("stco", true)[0]; - f->seek(stco->offset + 12); - ByteVector data = f->readBlock(stco->length - 12); - unsigned int count = data.mid(0, 4).toUInt(); - int pos = 4; - while (count--) { - unsigned int offset = data.mid(pos, 4).toUInt(); - f->seek(offset); - data1.append(f->readBlock(20)); - pos += 4; - } - } - - f->save(); - delete f; - f = new MP4::File(filename.c_str()); - - { - MP4::Atoms a(f); - MP4::Atom *stco = a.find("moov")->findall("stco", true)[0]; - f->seek(stco->offset + 12); - ByteVector data = f->readBlock(stco->length - 12); - unsigned int count = data.mid(0, 4).toUInt(); - int pos = 4, i = 0; - while (count--) { - unsigned int offset = data.mid(pos, 4).toUInt(); - f->seek(offset); - CPPUNIT_ASSERT_EQUAL(data1[i], f->readBlock(20)); - pos += 4; - i++; - } - } - - delete f; - } - - void testFreeForm() - { - ScopedFileCopy copy("has-tags", ".m4a"); - string filename = copy.fileName(); - - MP4::File *f = new MP4::File(filename.c_str()); - CPPUNIT_ASSERT(f->tag()->itemListMap().contains("----:com.apple.iTunes:iTunNORM")); - f->tag()->itemListMap()["----:org.kde.TagLib:Foo"] = StringList("Bar"); - f->save(); - delete f; - - f = new MP4::File(filename.c_str()); - CPPUNIT_ASSERT(f->tag()->itemListMap().contains("----:org.kde.TagLib:Foo")); - CPPUNIT_ASSERT_EQUAL(String("Bar"), f->tag()->itemListMap()["----:org.kde.TagLib:Foo"].toStringList()[0]); - f->save(); - delete f; - } - - void testSaveExisingWhenIlstIsLast() - { - ScopedFileCopy copy("ilst-is-last", ".m4a"); - string filename = copy.fileName(); - - MP4::File *f = new MP4::File(filename.c_str()); - CPPUNIT_ASSERT_EQUAL(String("82,164"), f->tag()->itemListMap()["----:com.apple.iTunes:replaygain_track_minmax"].toStringList()[0]); - CPPUNIT_ASSERT_EQUAL(String("Pearl Jam"), f->tag()->artist()); - f->tag()->setComment("foo"); - f->save(); - delete f; - - f = new MP4::File(filename.c_str()); - CPPUNIT_ASSERT_EQUAL(String("82,164"), f->tag()->itemListMap()["----:com.apple.iTunes:replaygain_track_minmax"].toStringList()[0]); - CPPUNIT_ASSERT_EQUAL(String("Pearl Jam"), f->tag()->artist()); - CPPUNIT_ASSERT_EQUAL(String("foo"), f->tag()->comment()); - } - - void test64BitAtom() - { - ScopedFileCopy copy("64bit", ".mp4"); - string filename = copy.fileName(); - - MP4::File *f = new MP4::File(filename.c_str()); - CPPUNIT_ASSERT_EQUAL(true, f->tag()->itemListMap()["cpil"].toBool()); - - MP4::Atoms *atoms = new MP4::Atoms(f); - MP4::Atom *moov = atoms->atoms[0]; - CPPUNIT_ASSERT_EQUAL(long(77), moov->length); - - f->tag()->itemListMap()["pgap"] = true; - f->save(); - - f = new MP4::File(filename.c_str()); - CPPUNIT_ASSERT_EQUAL(true, f->tag()->itemListMap()["cpil"].toBool()); - CPPUNIT_ASSERT_EQUAL(true, f->tag()->itemListMap()["pgap"].toBool()); - - atoms = new MP4::Atoms(f); - moov = atoms->atoms[0]; - // original size + 'pgap' size + padding - CPPUNIT_ASSERT_EQUAL(long(77 + 25 + 974), moov->length); - } - - void testGnre() - { - MP4::File *f = new MP4::File(TEST_FILE_PATH_C("gnre.m4a")); - CPPUNIT_ASSERT_EQUAL(TagLib::String("Ska"), f->tag()->genre()); - delete f; - } - - void testCovrRead() - { - MP4::File *f = new MP4::File(TEST_FILE_PATH_C("has-tags.m4a")); - CPPUNIT_ASSERT(f->tag()->itemListMap().contains("covr")); - MP4::CoverArtList l = f->tag()->itemListMap()["covr"].toCoverArtList(); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(2), l.size()); - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::PNG, l[0].format()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(79), l[0].data().size()); - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::JPEG, l[1].format()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(287), l[1].data().size()); - delete f; - } - - void testCovrWrite() - { - ScopedFileCopy copy("has-tags", ".m4a"); - string filename = copy.fileName(); - - MP4::File *f = new MP4::File(filename.c_str()); - CPPUNIT_ASSERT(f->tag()->itemListMap().contains("covr")); - MP4::CoverArtList l = f->tag()->itemListMap()["covr"].toCoverArtList(); - l.append(MP4::CoverArt(MP4::CoverArt::PNG, "foo")); - f->tag()->itemListMap()["covr"] = l; - f->save(); - delete f; - - f = new MP4::File(filename.c_str()); - CPPUNIT_ASSERT(f->tag()->itemListMap().contains("covr")); - l = f->tag()->itemListMap()["covr"].toCoverArtList(); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(3), l.size()); - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::PNG, l[0].format()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(79), l[0].data().size()); - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::JPEG, l[1].format()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(287), l[1].data().size()); - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::PNG, l[2].format()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(3), l[2].data().size()); - delete f; - } - - void testCovrRead2() - { - MP4::File *f = new MP4::File(TEST_FILE_PATH_C("covr-junk.m4a")); - CPPUNIT_ASSERT(f->tag()->itemListMap().contains("covr")); - MP4::CoverArtList l = f->tag()->itemListMap()["covr"].toCoverArtList(); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(2), l.size()); - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::PNG, l[0].format()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(79), l[0].data().size()); - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::JPEG, l[1].format()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(287), l[1].data().size()); - delete f; - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestMP4); diff --git a/platform/win32/msvc/external/taglib/tests/test_mp4coverart.cpp b/platform/win32/msvc/external/taglib/tests/test_mp4coverart.cpp deleted file mode 100644 index 75c6ad03809..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_mp4coverart.cpp +++ /dev/null @@ -1,49 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <string> -#include <stdio.h> -#include <tag.h> -#include <mp4coverart.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestMP4CoverArt : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestMP4CoverArt); - CPPUNIT_TEST(testSimple); - CPPUNIT_TEST(testList); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testSimple() - { - MP4::CoverArt c(MP4::CoverArt::PNG, "foo"); - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::PNG, c.format()); - CPPUNIT_ASSERT_EQUAL(ByteVector("foo"), c.data()); - - MP4::CoverArt c2(c); - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::PNG, c2.format()); - CPPUNIT_ASSERT_EQUAL(ByteVector("foo"), c2.data()); - - MP4::CoverArt c3 = c; - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::PNG, c3.format()); - CPPUNIT_ASSERT_EQUAL(ByteVector("foo"), c3.data()); - } - - void testList() - { - MP4::CoverArtList l; - l.append(MP4::CoverArt(MP4::CoverArt::PNG, "foo")); - l.append(MP4::CoverArt(MP4::CoverArt::JPEG, "bar")); - - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::PNG, l[0].format()); - CPPUNIT_ASSERT_EQUAL(ByteVector("foo"), l[0].data()); - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::JPEG, l[1].format()); - CPPUNIT_ASSERT_EQUAL(ByteVector("bar"), l[1].data()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestMP4CoverArt); diff --git a/platform/win32/msvc/external/taglib/tests/test_mp4item.cpp b/platform/win32/msvc/external/taglib/tests/test_mp4item.cpp deleted file mode 100644 index 68ba0c8d940..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_mp4item.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <string> -#include <stdio.h> -#include <tag.h> -#include <mp4coverart.h> -#include <mp4item.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestMP4Item : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestMP4Item); - CPPUNIT_TEST(testCoverArtList); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testCoverArtList() - { - MP4::CoverArtList l; - l.append(MP4::CoverArt(MP4::CoverArt::PNG, "foo")); - l.append(MP4::CoverArt(MP4::CoverArt::JPEG, "bar")); - - MP4::Item i(l); - MP4::CoverArtList l2 = i.toCoverArtList(); - - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::PNG, l[0].format()); - CPPUNIT_ASSERT_EQUAL(ByteVector("foo"), l[0].data()); - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::JPEG, l[1].format()); - CPPUNIT_ASSERT_EQUAL(ByteVector("bar"), l[1].data()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestMP4Item); diff --git a/platform/win32/msvc/external/taglib/tests/test_mpc.cpp b/platform/win32/msvc/external/taglib/tests/test_mpc.cpp deleted file mode 100644 index 12da6ed3feb..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_mpc.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <string> -#include <stdio.h> -#include <tag.h> -#include <tstringlist.h> -#include <tbytevectorlist.h> -#include <mpcfile.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestMPC : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestMPC); - CPPUNIT_TEST(testPropertiesSV8); - CPPUNIT_TEST(testPropertiesSV7); - CPPUNIT_TEST(testPropertiesSV5); - CPPUNIT_TEST(testPropertiesSV4); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testPropertiesSV8() - { - MPC::File f(TEST_FILE_PATH_C("sv8_header.mpc")); - CPPUNIT_ASSERT_EQUAL(8, f.audioProperties()->mpcVersion()); - CPPUNIT_ASSERT_EQUAL(1, f.audioProperties()->length()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - } - - void testPropertiesSV7() - { - MPC::File f(TEST_FILE_PATH_C("click.mpc")); - CPPUNIT_ASSERT_EQUAL(7, f.audioProperties()->mpcVersion()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->length()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - } - - void testPropertiesSV5() - { - MPC::File f(TEST_FILE_PATH_C("sv5_header.mpc")); - CPPUNIT_ASSERT_EQUAL(5, f.audioProperties()->mpcVersion()); - CPPUNIT_ASSERT_EQUAL(26, f.audioProperties()->length()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - } - - void testPropertiesSV4() - { - MPC::File f(TEST_FILE_PATH_C("sv4_header.mpc")); - CPPUNIT_ASSERT_EQUAL(4, f.audioProperties()->mpcVersion()); - CPPUNIT_ASSERT_EQUAL(26, f.audioProperties()->length()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestMPC); diff --git a/platform/win32/msvc/external/taglib/tests/test_mpeg.cpp b/platform/win32/msvc/external/taglib/tests/test_mpeg.cpp deleted file mode 100644 index 973803f908d..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_mpeg.cpp +++ /dev/null @@ -1,81 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <string> -#include <stdio.h> -#include <mpegfile.h> -#include <id3v2tag.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestMPEG : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestMPEG); - CPPUNIT_TEST(testVersion2DurationWithXingHeader); - CPPUNIT_TEST(testSaveID3v24); - CPPUNIT_TEST(testSaveID3v24WrongParam); - CPPUNIT_TEST(testSaveID3v23); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testVersion2DurationWithXingHeader() - { - MPEG::File f(TEST_FILE_PATH_C("mpeg2.mp3")); - CPPUNIT_ASSERT_EQUAL(5387, f.audioProperties()->length()); - } - - void testSaveID3v24() - { - ScopedFileCopy copy("xing", ".mp3"); - string newname = copy.fileName(); - - String xxx = ByteVector(254, 'X'); - MPEG::File f(newname.c_str()); - f.tag()->setTitle(xxx); - f.tag()->setArtist("Artist A"); - f.save(MPEG::File::AllTags, true, 4); - - MPEG::File f2(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4), f2.ID3v2Tag()->header()->majorVersion()); - CPPUNIT_ASSERT_EQUAL(String("Artist A"), f2.tag()->artist()); - CPPUNIT_ASSERT_EQUAL(xxx, f2.tag()->title()); - } - - void testSaveID3v24WrongParam() - { - ScopedFileCopy copy("xing", ".mp3"); - string newname = copy.fileName(); - - String xxx = ByteVector(254, 'X'); - MPEG::File f(newname.c_str()); - f.tag()->setTitle(xxx); - f.tag()->setArtist("Artist A"); - f.save(MPEG::File::AllTags, true, 8); - - MPEG::File f2(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4), f2.ID3v2Tag()->header()->majorVersion()); - CPPUNIT_ASSERT_EQUAL(String("Artist A"), f2.tag()->artist()); - CPPUNIT_ASSERT_EQUAL(xxx, f2.tag()->title()); - } - - void testSaveID3v23() - { - ScopedFileCopy copy("xing", ".mp3"); - string newname = copy.fileName(); - - String xxx = ByteVector(254, 'X'); - MPEG::File f(newname.c_str()); - f.tag()->setTitle(xxx); - f.tag()->setArtist("Artist A"); - f.save(MPEG::File::AllTags, true, 3); - - MPEG::File f2(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(3), f2.ID3v2Tag()->header()->majorVersion()); - CPPUNIT_ASSERT_EQUAL(String("Artist A"), f2.tag()->artist()); - CPPUNIT_ASSERT_EQUAL(xxx, f2.tag()->title()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestMPEG); diff --git a/platform/win32/msvc/external/taglib/tests/test_ogg.cpp b/platform/win32/msvc/external/taglib/tests/test_ogg.cpp deleted file mode 100644 index fb7a262addd..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_ogg.cpp +++ /dev/null @@ -1,104 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <string> -#include <stdio.h> -#include <tag.h> -#include <tstringlist.h> -#include <tbytevectorlist.h> -#include <tpropertymap.h> -#include <oggfile.h> -#include <vorbisfile.h> -#include <oggpageheader.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestOGG : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestOGG); - CPPUNIT_TEST(testSimple); - CPPUNIT_TEST(testSplitPackets); - CPPUNIT_TEST(testDictInterface1); - CPPUNIT_TEST(testDictInterface2); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testSimple() - { - ScopedFileCopy copy("empty", ".ogg"); - string newname = copy.fileName(); - - Vorbis::File *f = new Vorbis::File(newname.c_str()); - f->tag()->setArtist("The Artist"); - f->save(); - delete f; - - f = new Vorbis::File(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(String("The Artist"), f->tag()->artist()); - delete f; - } - - void testSplitPackets() - { - ScopedFileCopy copy("empty", ".ogg"); - string newname = copy.fileName(); - - Vorbis::File *f = new Vorbis::File(newname.c_str()); - f->tag()->addField("test", ByteVector(128 * 1024, 'x') + ByteVector(1, '\0')); - f->save(); - delete f; - - f = new Vorbis::File(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(19, f->lastPageHeader()->pageSequenceNumber()); - delete f; - } - - void testDictInterface1() - { - ScopedFileCopy copy("empty", ".ogg"); - string newname = copy.fileName(); - - Vorbis::File *f = new Vorbis::File(newname.c_str()); - - CPPUNIT_ASSERT_EQUAL(TagLib::uint(0), f->tag()->properties().size()); - - PropertyMap newTags; - StringList values("value 1"); - values.append("value 2"); - newTags["ARTIST"] = values; - f->tag()->setProperties(newTags); - - PropertyMap map = f->tag()->properties(); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), map.size()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(2), map["ARTIST"].size()); - CPPUNIT_ASSERT_EQUAL(String("value 1"), map["ARTIST"][0]); - delete f; - - } - - void testDictInterface2() - { - ScopedFileCopy copy("test", ".ogg"); - string newname = copy.fileName(); - - Vorbis::File *f = new Vorbis::File(newname.c_str()); - PropertyMap tags = f->tag()->properties(); - - CPPUNIT_ASSERT_EQUAL(TagLib::uint(2), tags["UNUSUALTAG"].size()); - CPPUNIT_ASSERT_EQUAL(String("usual value"), tags["UNUSUALTAG"][0]); - CPPUNIT_ASSERT_EQUAL(String("another value"), tags["UNUSUALTAG"][1]); - CPPUNIT_ASSERT_EQUAL(String(L"öäüoΣø"), tags["UNICODETAG"][0]); - - tags["UNICODETAG"][0] = L"νεω ναλυε"; - tags.erase("UNUSUALTAG"); - f->tag()->setProperties(tags); - CPPUNIT_ASSERT_EQUAL(String(L"νεω ναλυε"), f->tag()->properties()["UNICODETAG"][0]); - CPPUNIT_ASSERT_EQUAL(false, f->tag()->properties().contains("UNUSUALTAG")); - - delete f; - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestOGG); diff --git a/platform/win32/msvc/external/taglib/tests/test_oggflac.cpp b/platform/win32/msvc/external/taglib/tests/test_oggflac.cpp deleted file mode 100644 index c1837175362..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_oggflac.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <string> -#include <stdio.h> -#include <tag.h> -#include <tstringlist.h> -#include <tbytevectorlist.h> -#include <oggfile.h> -#include <oggflacfile.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestOggFLAC : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestOggFLAC); - CPPUNIT_TEST(testFramingBit); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testFramingBit() - { - ScopedFileCopy copy("empty_flac", ".oga"); - string newname = copy.fileName(); - - Ogg::FLAC::File *f = new Ogg::FLAC::File(newname.c_str()); - f->tag()->setArtist("The Artist"); - f->save(); - delete f; - - f = new Ogg::FLAC::File(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(String("The Artist"), f->tag()->artist()); - - f->seek(0, File::End); - int size = f->tell(); - CPPUNIT_ASSERT_EQUAL(9134, size); - - delete f; - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestOggFLAC); diff --git a/platform/win32/msvc/external/taglib/tests/test_propertymap.cpp b/platform/win32/msvc/external/taglib/tests/test_propertymap.cpp deleted file mode 100644 index d0b2fbb7a69..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_propertymap.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <tpropertymap.h> -class TestPropertyMap : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestPropertyMap); - CPPUNIT_TEST(testInvalidKeys); - CPPUNIT_TEST_SUITE_END(); - -public: - void testInvalidKeys() - { - TagLib::PropertyMap map1; - CPPUNIT_ASSERT(map1.isEmpty()); - map1["ÄÖÜ"].append("test"); - CPPUNIT_ASSERT_EQUAL(map1.size(), 1u); - - TagLib::PropertyMap map2; - map2["ÄÖÜ"].append("test"); - CPPUNIT_ASSERT(map1 == map2); - CPPUNIT_ASSERT(map1.contains(map2)); - - map2["ARTIST"] = TagLib::String("Test Artist"); - CPPUNIT_ASSERT(map1 != map2); - CPPUNIT_ASSERT(map2.contains(map1)); - - map2["ÄÖÜ"].append("test 2"); - CPPUNIT_ASSERT(!map2.contains(map1)); - - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestPropertyMap); diff --git a/platform/win32/msvc/external/taglib/tests/test_riff.cpp b/platform/win32/msvc/external/taglib/tests/test_riff.cpp deleted file mode 100644 index 43b2f8bbe29..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_riff.cpp +++ /dev/null @@ -1,198 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <string> -#include <stdio.h> -#include <tag.h> -#include <tbytevectorlist.h> -#include <rifffile.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class PublicRIFF : public RIFF::File -{ -public: - PublicRIFF(FileName file) : RIFF::File(file, BigEndian) {}; - TagLib::uint riffSize() { return RIFF::File::riffSize(); }; - TagLib::uint chunkCount() { return RIFF::File::chunkCount(); }; - TagLib::uint chunkOffset(TagLib::uint i) { return RIFF::File::chunkOffset(i); }; - TagLib::uint chunkPadding(TagLib::uint i) { return RIFF::File::chunkPadding(i); }; - TagLib::uint chunkDataSize(TagLib::uint i) { return RIFF::File::chunkDataSize(i); }; - ByteVector chunkName(TagLib::uint i) { return RIFF::File::chunkName(i); }; - ByteVector chunkData(TagLib::uint i) { return RIFF::File::chunkData(i); }; - void setChunkData(const ByteVector &name, const ByteVector &data) { - RIFF::File::setChunkData(name, data); - }; - virtual TagLib::Tag* tag() const { return 0; }; - virtual TagLib::AudioProperties* audioProperties() const { return 0;}; - virtual bool save() { return false; }; -}; - -class TestRIFF : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestRIFF); - CPPUNIT_TEST(testPadding); - CPPUNIT_TEST(testLastChunkAtEvenPosition); - CPPUNIT_TEST(testLastChunkAtEvenPosition2); - CPPUNIT_TEST(testLastChunkAtEvenPosition3); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testPadding() - { - ScopedFileCopy copy("empty", ".aiff"); - string filename = copy.fileName(); - - PublicRIFF *f = new PublicRIFF(filename.c_str()); - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f->chunkName(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(0x1728 + 8), f->chunkOffset(2)); - - f->setChunkData("TEST", "foo"); - delete f; - - f = new PublicRIFF(filename.c_str()); - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f->chunkName(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("foo"), f->chunkData(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(3), f->chunkDataSize(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(0x1728 + 8), f->chunkOffset(2)); - - f->setChunkData("SSND", "abcd"); - - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f->chunkName(1)); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcd"), f->chunkData(1)); - - f->seek(f->chunkOffset(1)); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcd"), f->readBlock(4)); - - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f->chunkName(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("foo"), f->chunkData(2)); - - f->seek(f->chunkOffset(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("foo"), f->readBlock(3)); - - delete f; - - f = new PublicRIFF(filename.c_str()); - - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f->chunkName(1)); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcd"), f->chunkData(1)); - - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f->chunkName(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("foo"), f->chunkData(2)); - } - - void testLastChunkAtEvenPosition() - { - ScopedFileCopy copy("noise", ".aif"); - string filename = copy.fileName(); - - PublicRIFF *f = new PublicRIFF(filename.c_str()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(0xff0 + 8), f->chunkOffset(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(311), f->chunkDataSize(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f->chunkName(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), f->chunkPadding(2)); - CPPUNIT_ASSERT_EQUAL(long(4400), f->length()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4399 - 8), f->riffSize()); - f->setChunkData("TEST", "abcd"); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4088), f->chunkOffset(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(311), f->chunkDataSize(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f->chunkName(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), f->chunkPadding(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4408), f->chunkOffset(3)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4), f->chunkDataSize(3)); - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f->chunkName(3)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(0), f->chunkPadding(3)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4412 - 8), f->riffSize()); - delete f; - - f = new PublicRIFF(filename.c_str()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4088), f->chunkOffset(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(311), f->chunkDataSize(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f->chunkName(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), f->chunkPadding(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4408), f->chunkOffset(3)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4), f->chunkDataSize(3)); - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f->chunkName(3)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(0), f->chunkPadding(3)); - CPPUNIT_ASSERT_EQUAL(long(4412), f->length()); - delete f; - } - - void testLastChunkAtEvenPosition2() - { - ScopedFileCopy copy("noise_odd", ".aif"); - string filename = copy.fileName(); - - PublicRIFF *f = new PublicRIFF(filename.c_str()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(0xff0 + 8), f->chunkOffset(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(311), f->chunkDataSize(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f->chunkName(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(0), f->chunkPadding(2)); - CPPUNIT_ASSERT_EQUAL(long(4399), f->length()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4399 - 8), f->riffSize()); - f->setChunkData("TEST", "abcd"); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4088), f->chunkOffset(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(311), f->chunkDataSize(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f->chunkName(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), f->chunkPadding(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4408), f->chunkOffset(3)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4), f->chunkDataSize(3)); - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f->chunkName(3)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(0), f->chunkPadding(3)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4412 - 8), f->riffSize()); - delete f; - - f = new PublicRIFF(filename.c_str()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4088), f->chunkOffset(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(311), f->chunkDataSize(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f->chunkName(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), f->chunkPadding(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4408), f->chunkOffset(3)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4), f->chunkDataSize(3)); - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f->chunkName(3)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(0), f->chunkPadding(3)); - CPPUNIT_ASSERT_EQUAL(long(4412), f->length()); - delete f; - } - - void testLastChunkAtEvenPosition3() - { - ScopedFileCopy copy("noise_odd", ".aif"); - string filename = copy.fileName(); - - PublicRIFF *f = new PublicRIFF(filename.c_str()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(0xff0 + 8), f->chunkOffset(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(311), f->chunkDataSize(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f->chunkName(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(0), f->chunkPadding(2)); - CPPUNIT_ASSERT_EQUAL(long(4399), f->length()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4399 - 8), f->riffSize()); - f->setChunkData("TEST", "abc"); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4088), f->chunkOffset(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(311), f->chunkDataSize(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f->chunkName(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), f->chunkPadding(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4408), f->chunkOffset(3)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(3), f->chunkDataSize(3)); - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f->chunkName(3)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), f->chunkPadding(3)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4411 - 8), f->riffSize()); - delete f; - - f = new PublicRIFF(filename.c_str()); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4088), f->chunkOffset(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(311), f->chunkDataSize(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f->chunkName(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), f->chunkPadding(2)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(4408), f->chunkOffset(3)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(3), f->chunkDataSize(3)); - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f->chunkName(3)); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), f->chunkPadding(3)); - CPPUNIT_ASSERT_EQUAL(long(4412), f->length()); - delete f; - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestRIFF); diff --git a/platform/win32/msvc/external/taglib/tests/test_s3m.cpp b/platform/win32/msvc/external/taglib/tests/test_s3m.cpp deleted file mode 100644 index a6ecc084c8a..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_s3m.cpp +++ /dev/null @@ -1,123 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include <cppunit/extensions/HelperMacros.h> -#include <s3mfile.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -static const String titleBefore("test song name"); -static const String titleAfter("changed title"); - -static const String commentBefore( - "This is an instrument name.\n" - "Module file formats\n" - "abuse instrument names\n" - "as multiline comments.\n" - " "); - -static const String newComment( - "This is an instrument name!\n" - "Module file formats\n" - "abuse instrument names\n" - "as multiline comments.\n" - "-----------------------------------\n" - "This line will be dropped and the previous is truncated."); - -static const String commentAfter( - "This is an instrument name!\n" - "Module file formats\n" - "abuse instrument names\n" - "as multiline comments.\n" - "---------------------------"); - -class TestS3M : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestS3M); - CPPUNIT_TEST(testReadTags); - CPPUNIT_TEST(testWriteTags); - CPPUNIT_TEST_SUITE_END(); - -public: - void testReadTags() - { - testRead(TEST_FILE_PATH_C("test.s3m"), titleBefore, commentBefore); - } - - void testWriteTags() - { - ScopedFileCopy copy("test", ".s3m"); - { - S3M::File file(copy.fileName().c_str()); - CPPUNIT_ASSERT(file.tag() != 0); - file.tag()->setTitle(titleAfter); - file.tag()->setComment(newComment); - file.tag()->setTrackerName("won't be saved"); - CPPUNIT_ASSERT(file.save()); - } - testRead(copy.fileName().c_str(), titleAfter, commentAfter); - CPPUNIT_ASSERT(fileEqual( - copy.fileName(), - TEST_FILE_PATH_C("changed.s3m"))); - } - -private: - void testRead(FileName fileName, const String &title, const String &comment) - { - S3M::File file(fileName); - - CPPUNIT_ASSERT(file.isValid()); - - S3M::Properties *p = file.audioProperties(); - Mod::Tag *t = file.tag(); - - CPPUNIT_ASSERT(0 != p); - CPPUNIT_ASSERT(0 != t); - - CPPUNIT_ASSERT_EQUAL( 0, p->length()); - CPPUNIT_ASSERT_EQUAL( 0, p->bitrate()); - CPPUNIT_ASSERT_EQUAL( 0, p->sampleRate()); - CPPUNIT_ASSERT_EQUAL(16, p->channels()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 0, p->lengthInPatterns()); - CPPUNIT_ASSERT_EQUAL(false, p->stereo()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 5, p->sampleCount()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 1, p->patternCount()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 0, p->flags()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort)4896, p->trackerVersion()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 2, p->fileFormatVersion()); - CPPUNIT_ASSERT_EQUAL((TagLib::uchar) 64, p->globalVolume()); - CPPUNIT_ASSERT_EQUAL((TagLib::uchar) 48, p->masterVolume()); - CPPUNIT_ASSERT_EQUAL((TagLib::uchar)125, p->tempo()); - CPPUNIT_ASSERT_EQUAL((TagLib::uchar) 6, p->bpmSpeed()); - CPPUNIT_ASSERT_EQUAL(title, t->title()); - CPPUNIT_ASSERT_EQUAL(String::null, t->artist()); - CPPUNIT_ASSERT_EQUAL(String::null, t->album()); - CPPUNIT_ASSERT_EQUAL(comment, t->comment()); - CPPUNIT_ASSERT_EQUAL(String::null, t->genre()); - CPPUNIT_ASSERT_EQUAL(0U, t->year()); - CPPUNIT_ASSERT_EQUAL(0U, t->track()); - CPPUNIT_ASSERT_EQUAL(String("ScreamTracker III"), t->trackerName()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestS3M); diff --git a/platform/win32/msvc/external/taglib/tests/test_string.cpp b/platform/win32/msvc/external/taglib/tests/test_string.cpp deleted file mode 100644 index 79b32c3ad85..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_string.cpp +++ /dev/null @@ -1,206 +0,0 @@ -/* Copyright (C) 2003 Scott Wheeler <wheeler@kde.org> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include <cppunit/extensions/HelperMacros.h> -#include <tstring.h> -#include <string.h> - -using namespace std; -using namespace TagLib; - -class TestString : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestString); - CPPUNIT_TEST(testString); - CPPUNIT_TEST(testRfind); - CPPUNIT_TEST(testUTF16Encode); - CPPUNIT_TEST(testUTF16Decode); - CPPUNIT_TEST(testUTF16DecodeInvalidBOM); - CPPUNIT_TEST(testUTF16DecodeEmptyWithBOM); - CPPUNIT_TEST(testAppendCharDetach); - CPPUNIT_TEST(testAppendStringDetach); - CPPUNIT_TEST(testToInt); - CPPUNIT_TEST(testSubstr); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testString() - { - String s = "taglib string"; - ByteVector v = "taglib string"; - CPPUNIT_ASSERT(v == s.data(String::Latin1)); - - char str[] = "taglib string"; - CPPUNIT_ASSERT(strcmp(s.toCString(), str) == 0); - - String unicode("José Carlos", String::UTF8); - CPPUNIT_ASSERT(strcmp(unicode.toCString(), "Jos\xe9 Carlos") == 0); - - String latin = "Jos\xe9 Carlos"; - CPPUNIT_ASSERT(strcmp(latin.toCString(true), "José Carlos") == 0); - - String unicode2(unicode.to8Bit(true), String::UTF8); - CPPUNIT_ASSERT(unicode == unicode2); - - CPPUNIT_ASSERT(strcmp(String::number(0).toCString(), "0") == 0); - CPPUNIT_ASSERT(strcmp(String::number(12345678).toCString(), "12345678") == 0); - CPPUNIT_ASSERT(strcmp(String::number(-12345678).toCString(), "-12345678") == 0); - - String n = "123"; - CPPUNIT_ASSERT(n.toInt() == 123); - - n = "-123"; - CPPUNIT_ASSERT(n.toInt() == -123); - - CPPUNIT_ASSERT(String("0").toInt() == 0); - CPPUNIT_ASSERT(String("1").toInt() == 1); - - CPPUNIT_ASSERT(String(" foo ").stripWhiteSpace() == String("foo")); - CPPUNIT_ASSERT(String("foo ").stripWhiteSpace() == String("foo")); - CPPUNIT_ASSERT(String(" foo").stripWhiteSpace() == String("foo")); - - CPPUNIT_ASSERT(memcmp(String("foo").data(String::Latin1).data(), "foo", 3) == 0); - CPPUNIT_ASSERT(memcmp(String("f").data(String::Latin1).data(), "f", 1) == 0); - - ByteVector utf16 = unicode.data(String::UTF16); - - // Check to make sure that the BOM is there and that the data size is correct - - CPPUNIT_ASSERT(utf16.size() == 2 + (unicode.size() * 2)); - - CPPUNIT_ASSERT(unicode == String(utf16, String::UTF16)); - } - - void testUTF16Encode() - { - String a("foo"); - ByteVector b("\0f\0o\0o", 6); - ByteVector c("f\0o\0o\0", 6); - ByteVector d("\377\376f\0o\0o\0", 8); - CPPUNIT_ASSERT(a.data(String::UTF16BE) != a.data(String::UTF16LE)); - CPPUNIT_ASSERT(b == a.data(String::UTF16BE)); - CPPUNIT_ASSERT(c == a.data(String::UTF16LE)); - CPPUNIT_ASSERT_EQUAL(d, a.data(String::UTF16)); - } - - void testUTF16Decode() - { - String a("foo"); - ByteVector b("\0f\0o\0o", 6); - ByteVector c("f\0o\0o\0", 6); - ByteVector d("\377\376f\0o\0o\0", 8); - CPPUNIT_ASSERT_EQUAL(a, String(b, String::UTF16BE)); - CPPUNIT_ASSERT_EQUAL(a, String(c, String::UTF16LE)); - CPPUNIT_ASSERT_EQUAL(a, String(d, String::UTF16)); - } - - // this test is expected to print "TagLib: String::prepare() - - // Invalid UTF16 string." on the console 3 times - void testUTF16DecodeInvalidBOM() - { - ByteVector b(" ", 1); - ByteVector c(" ", 2); - ByteVector d(" \0f\0o\0o", 8); - CPPUNIT_ASSERT_EQUAL(String(), String(b, String::UTF16)); - CPPUNIT_ASSERT_EQUAL(String(), String(c, String::UTF16)); - CPPUNIT_ASSERT_EQUAL(String(), String(d, String::UTF16)); - } - - void testUTF16DecodeEmptyWithBOM() - { - ByteVector a("\377\376", 2); - ByteVector b("\376\377", 2); - CPPUNIT_ASSERT_EQUAL(String(), String(a, String::UTF16)); - CPPUNIT_ASSERT_EQUAL(String(), String(b, String::UTF16)); - } - - void testAppendStringDetach() - { - String a("a"); - String b = a; - a += "b"; - CPPUNIT_ASSERT_EQUAL(String("ab"), a); - CPPUNIT_ASSERT_EQUAL(String("a"), b); - } - - void testAppendCharDetach() - { - String a("a"); - String b = a; - a += 'b'; - CPPUNIT_ASSERT_EQUAL(String("ab"), a); - CPPUNIT_ASSERT_EQUAL(String("a"), b); - } - - void testRfind() - { - CPPUNIT_ASSERT_EQUAL(-1, String("foo.bar").rfind(".", 0)); - CPPUNIT_ASSERT_EQUAL(-1, String("foo.bar").rfind(".", 1)); - CPPUNIT_ASSERT_EQUAL(-1, String("foo.bar").rfind(".", 2)); - CPPUNIT_ASSERT_EQUAL(3, String("foo.bar").rfind(".", 3)); - CPPUNIT_ASSERT_EQUAL(3, String("foo.bar").rfind(".", 4)); - CPPUNIT_ASSERT_EQUAL(3, String("foo.bar").rfind(".", 5)); - CPPUNIT_ASSERT_EQUAL(3, String("foo.bar").rfind(".", 6)); - CPPUNIT_ASSERT_EQUAL(3, String("foo.bar").rfind(".", 7)); - CPPUNIT_ASSERT_EQUAL(3, String("foo.bar").rfind(".")); - } - - void testToInt() - { - bool ok; - CPPUNIT_ASSERT_EQUAL(String("123").toInt(&ok), 123); - CPPUNIT_ASSERT_EQUAL(ok, true); - - CPPUNIT_ASSERT_EQUAL(String("-123").toInt(&ok), -123); - CPPUNIT_ASSERT_EQUAL(ok, true); - - CPPUNIT_ASSERT_EQUAL(String("abc").toInt(&ok), 0); - CPPUNIT_ASSERT_EQUAL(ok, false); - - CPPUNIT_ASSERT_EQUAL(String("1x").toInt(&ok), 1); - CPPUNIT_ASSERT_EQUAL(ok, false); - - CPPUNIT_ASSERT_EQUAL(String("").toInt(&ok), 0); - CPPUNIT_ASSERT_EQUAL(ok, false); - - CPPUNIT_ASSERT_EQUAL(String("-").toInt(&ok), 0); - CPPUNIT_ASSERT_EQUAL(ok, false); - - CPPUNIT_ASSERT_EQUAL(String("123").toInt(), 123); - CPPUNIT_ASSERT_EQUAL(String("-123").toInt(), -123); - CPPUNIT_ASSERT_EQUAL(String("123aa").toInt(), 123); - CPPUNIT_ASSERT_EQUAL(String("-123aa").toInt(), -123); - } - - void testSubstr() - { - CPPUNIT_ASSERT_EQUAL(String("01"), String("0123456").substr(0, 2)); - CPPUNIT_ASSERT_EQUAL(String("12"), String("0123456").substr(1, 2)); - CPPUNIT_ASSERT_EQUAL(String("123456"), String("0123456").substr(1, 200)); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestString); diff --git a/platform/win32/msvc/external/taglib/tests/test_synchdata.cpp b/platform/win32/msvc/external/taglib/tests/test_synchdata.cpp deleted file mode 100644 index 1113ee43081..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_synchdata.cpp +++ /dev/null @@ -1,107 +0,0 @@ -/* Copyright (C) 2003 Scott Wheeler <wheeler@kde.org> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include <cppunit/extensions/HelperMacros.h> -#include <id3v2synchdata.h> - -using namespace std; -using namespace TagLib; - -class TestID3v2SynchData : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestID3v2SynchData); - CPPUNIT_TEST(test1); - CPPUNIT_TEST(test2); - CPPUNIT_TEST(test3); - CPPUNIT_TEST(testToUIntBroken); - CPPUNIT_TEST(testToUIntBrokenAndTooLarge); - CPPUNIT_TEST(testDecode1); - CPPUNIT_TEST(testDecode2); - CPPUNIT_TEST_SUITE_END(); - -public: - - void test1() - { - char data[] = { 0, 0, 0, 127 }; - ByteVector v(data, 4); - - CPPUNIT_ASSERT_EQUAL(ID3v2::SynchData::toUInt(v), TagLib::uint(127)); - CPPUNIT_ASSERT_EQUAL(ID3v2::SynchData::fromUInt(127), v); - } - - void test2() - { - char data[] = { 0, 0, 1, 0 }; - ByteVector v(data, 4); - - CPPUNIT_ASSERT_EQUAL(ID3v2::SynchData::toUInt(v), TagLib::uint(128)); - CPPUNIT_ASSERT_EQUAL(ID3v2::SynchData::fromUInt(128), v); - } - - void test3() - { - char data[] = { 0, 0, 1, 1 }; - ByteVector v(data, 4); - - CPPUNIT_ASSERT_EQUAL(ID3v2::SynchData::toUInt(v), TagLib::uint(129)); - CPPUNIT_ASSERT_EQUAL(ID3v2::SynchData::fromUInt(129), v); - } - - void testToUIntBroken() - { - char data[] = { 0, 0, 0, -1 }; - char data2[] = { 0, 0, -1, -1 }; - - CPPUNIT_ASSERT_EQUAL(TagLib::uint(255), ID3v2::SynchData::toUInt(ByteVector(data, 4))); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(65535), ID3v2::SynchData::toUInt(ByteVector(data2, 4))); - } - - void testToUIntBrokenAndTooLarge() - { - char data[] = { 0, 0, 0, -1, 0 }; - ByteVector v(data, 5); - - CPPUNIT_ASSERT_EQUAL(TagLib::uint(255), ID3v2::SynchData::toUInt(v)); - } - - void testDecode1() - { - ByteVector a("\xff\x00\x00", 3); - a = ID3v2::SynchData::decode(a); - CPPUNIT_ASSERT_EQUAL((unsigned int)2, a.size()); - CPPUNIT_ASSERT_EQUAL(ByteVector("\xff\x00", 2), a); - } - - void testDecode2() - { - ByteVector a("\xff\x44", 2); - a = ID3v2::SynchData::decode(a); - CPPUNIT_ASSERT_EQUAL((unsigned int)2, a.size()); - CPPUNIT_ASSERT_EQUAL(ByteVector("\xff\x44", 2), a); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestID3v2SynchData); diff --git a/platform/win32/msvc/external/taglib/tests/test_trueaudio.cpp b/platform/win32/msvc/external/taglib/tests/test_trueaudio.cpp deleted file mode 100644 index 5ff114cf02b..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_trueaudio.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <string> -#include <stdio.h> -#include <trueaudiofile.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestTrueAudio : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestTrueAudio); - CPPUNIT_TEST(testReadPropertiesWithoutID3v2); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testReadPropertiesWithoutID3v2() - { - TrueAudio::File f(TEST_FILE_PATH_C("empty.tta")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->length()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestTrueAudio); diff --git a/platform/win32/msvc/external/taglib/tests/test_wav.cpp b/platform/win32/msvc/external/taglib/tests/test_wav.cpp deleted file mode 100644 index d17ce2cc7b2..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_wav.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <string> -#include <stdio.h> -#include <tag.h> -#include <tbytevectorlist.h> -#include <wavfile.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestWAV : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestWAV); - CPPUNIT_TEST(testLength); - CPPUNIT_TEST(testZeroSizeDataChunk); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testLength() - { - RIFF::WAV::File f(TEST_FILE_PATH_C("empty.wav")); - CPPUNIT_ASSERT_EQUAL(true, f.isValid()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->length()); - } - - void testZeroSizeDataChunk() - { - RIFF::WAV::File f(TEST_FILE_PATH_C("zero-size-chunk.wav")); - CPPUNIT_ASSERT_EQUAL(false, f.isValid()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestWAV); diff --git a/platform/win32/msvc/external/taglib/tests/test_wavpack.cpp b/platform/win32/msvc/external/taglib/tests/test_wavpack.cpp deleted file mode 100644 index 085fa2daa2f..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_wavpack.cpp +++ /dev/null @@ -1,40 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <string> -#include <stdio.h> -#include <tag.h> -#include <tbytevectorlist.h> -#include <wavpackfile.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestWavPack : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestWavPack); - CPPUNIT_TEST(testBasic); - CPPUNIT_TEST(testLengthScan); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testBasic() - { - WavPack::File f(TEST_FILE_PATH_C("no_length.wv")); - WavPack::Properties *props = f.audioProperties(); - CPPUNIT_ASSERT_EQUAL(44100, props->sampleRate()); - CPPUNIT_ASSERT_EQUAL(2, props->channels()); - CPPUNIT_ASSERT_EQUAL(1, props->bitrate()); - CPPUNIT_ASSERT_EQUAL(0x407, props->version()); - } - - void testLengthScan() - { - WavPack::File f(TEST_FILE_PATH_C("no_length.wv")); - WavPack::Properties *props = f.audioProperties(); - CPPUNIT_ASSERT_EQUAL(4, props->length()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestWavPack); diff --git a/platform/win32/msvc/external/taglib/tests/test_xiphcomment.cpp b/platform/win32/msvc/external/taglib/tests/test_xiphcomment.cpp deleted file mode 100644 index a98aea6169b..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_xiphcomment.cpp +++ /dev/null @@ -1,79 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <string> -#include <stdio.h> -#include <xiphcomment.h> -#include <tpropertymap.h> -#include <tdebug.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestXiphComment : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestXiphComment); - CPPUNIT_TEST(testYear); - CPPUNIT_TEST(testSetYear); - CPPUNIT_TEST(testTrack); - CPPUNIT_TEST(testSetTrack); - CPPUNIT_TEST(testInvalidKeys); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testYear() - { - Ogg::XiphComment cmt; - CPPUNIT_ASSERT_EQUAL(TagLib::uint(0), cmt.year()); - cmt.addField("YEAR", "2009"); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(2009), cmt.year()); - cmt.addField("DATE", "2008"); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(2008), cmt.year()); - } - - void testSetYear() - { - Ogg::XiphComment cmt; - cmt.addField("YEAR", "2009"); - cmt.addField("DATE", "2008"); - cmt.setYear(1995); - CPPUNIT_ASSERT(cmt.fieldListMap()["YEAR"].isEmpty()); - CPPUNIT_ASSERT_EQUAL(String("1995"), cmt.fieldListMap()["DATE"].front()); - } - - void testTrack() - { - Ogg::XiphComment cmt; - CPPUNIT_ASSERT_EQUAL(TagLib::uint(0), cmt.track()); - cmt.addField("TRACKNUM", "7"); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(7), cmt.track()); - cmt.addField("TRACKNUMBER", "8"); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(8), cmt.track()); - } - - void testSetTrack() - { - Ogg::XiphComment cmt; - cmt.addField("TRACKNUM", "7"); - cmt.addField("TRACKNUMBER", "8"); - cmt.setTrack(3); - CPPUNIT_ASSERT(cmt.fieldListMap()["TRACKNUM"].isEmpty()); - CPPUNIT_ASSERT_EQUAL(String("3"), cmt.fieldListMap()["TRACKNUMBER"].front()); - } - - void testInvalidKeys() - { - PropertyMap map; - map[""] = String("invalid key: empty string"); - map["A=B"] = String("invalid key: contains '='"); - map["A~B"] = String("invalid key: contains '~'"); - - Ogg::XiphComment cmt; - PropertyMap unsuccessful = cmt.setProperties(map); - CPPUNIT_ASSERT_EQUAL(TagLib::uint(3), unsuccessful.size()); - CPPUNIT_ASSERT(cmt.properties().isEmpty()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestXiphComment); diff --git a/platform/win32/msvc/external/taglib/tests/test_xm.cpp b/platform/win32/msvc/external/taglib/tests/test_xm.cpp deleted file mode 100644 index 70b3967ee73..00000000000 --- a/platform/win32/msvc/external/taglib/tests/test_xm.cpp +++ /dev/null @@ -1,216 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#include <cppunit/extensions/HelperMacros.h> -#include <xmfile.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -static const String titleBefore("title of song"); -static const String titleAfter("changed title"); - -static const String trackerNameBefore("MilkyTracker "); -static const String trackerNameAfter("TagLib"); - -static const String commentBefore( - "Instrument names\n" - "are abused as\n" - "comments in\n" - "module file formats.\n" - "-+-+-+-+-+-+-+-+-+-+-+\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n" - "Sample\n" - "names\n" - "are sometimes\n" - "also abused as\n" - "comments."); - -static const String newCommentShort( - "Instrument names\n" - "are abused as\n" - "comments in\n" - "module file formats.\n" - "======================\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n" - "Sample names\n" - "are sometimes\n" - "also abused as\n" - "comments."); - -static const String newCommentLong( - "Instrument names\n" - "are abused as\n" - "comments in\n" - "module file formats.\n" - "======================\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n" - "Sample names\n" - "are sometimes\n" - "also abused as\n" - "comments.\n" - "\n\n\n\n\n\n\n" - "TEST"); - -static const String commentAfter( - "Instrument names\n" - "are abused as\n" - "comments in\n" - "module file formats.\n" - "======================\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n" - "Sample names\n" - "are sometimes\n" - "also abused as\n" - "comments.\n"); - -class TestXM : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestXM); - CPPUNIT_TEST(testReadTags); - CPPUNIT_TEST(testReadStrippedTags); - CPPUNIT_TEST(testWriteTagsShort); - CPPUNIT_TEST(testWriteTagsLong); - CPPUNIT_TEST_SUITE_END(); - -public: - void testReadTags() - { - testRead(TEST_FILE_PATH_C("test.xm"), titleBefore, - commentBefore, trackerNameBefore); - } - - void testReadStrippedTags() - { - XM::File file(TEST_FILE_PATH_C("stripped.xm")); - CPPUNIT_ASSERT(file.isValid()); - - XM::Properties *p = file.audioProperties(); - Mod::Tag *t = file.tag(); - - CPPUNIT_ASSERT(0 != p); - CPPUNIT_ASSERT(0 != t); - - CPPUNIT_ASSERT_EQUAL(0, p->length()); - CPPUNIT_ASSERT_EQUAL(0, p->bitrate()); - CPPUNIT_ASSERT_EQUAL(0, p->sampleRate()); - CPPUNIT_ASSERT_EQUAL(8, p->channels()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 1, p->lengthInPatterns()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 0, p->version()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 0 , p->restartPosition()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 1, p->patternCount()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 0, p->instrumentCount()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 1, p->flags()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 6, p->tempo()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort)125, p->bpmSpeed()); - CPPUNIT_ASSERT_EQUAL(titleBefore, t->title()); - CPPUNIT_ASSERT_EQUAL(String::null, t->artist()); - CPPUNIT_ASSERT_EQUAL(String::null, t->album()); - CPPUNIT_ASSERT_EQUAL(String::null, t->comment()); - CPPUNIT_ASSERT_EQUAL(String::null, t->genre()); - CPPUNIT_ASSERT_EQUAL(0U, t->year()); - CPPUNIT_ASSERT_EQUAL(0U, t->track()); - CPPUNIT_ASSERT_EQUAL(String::null, t->trackerName()); - } - - void testWriteTagsShort() - { - testWriteTags(newCommentShort); - } - - void testWriteTagsLong() - { - testWriteTags(newCommentLong); - } - -private: - void testRead(FileName fileName, const String &title, - const String &comment, const String &trackerName) - { - XM::File file(fileName); - - CPPUNIT_ASSERT(file.isValid()); - - XM::Properties *p = file.audioProperties(); - Mod::Tag *t = file.tag(); - - CPPUNIT_ASSERT(0 != p); - CPPUNIT_ASSERT(0 != t); - - CPPUNIT_ASSERT_EQUAL(0, p->length()); - CPPUNIT_ASSERT_EQUAL(0, p->bitrate()); - CPPUNIT_ASSERT_EQUAL(0, p->sampleRate()); - CPPUNIT_ASSERT_EQUAL(8, p->channels()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 1, p->lengthInPatterns()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort)260, p->version()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 0, p->restartPosition()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 1, p->patternCount()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort)128, p->instrumentCount()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 1, p->flags()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 6, p->tempo()); - CPPUNIT_ASSERT_EQUAL((TagLib::ushort)125, p->bpmSpeed()); - CPPUNIT_ASSERT_EQUAL(title, t->title()); - CPPUNIT_ASSERT_EQUAL(String::null, t->artist()); - CPPUNIT_ASSERT_EQUAL(String::null, t->album()); - CPPUNIT_ASSERT_EQUAL(comment, t->comment()); - CPPUNIT_ASSERT_EQUAL(String::null, t->genre()); - CPPUNIT_ASSERT_EQUAL(0U, t->year()); - CPPUNIT_ASSERT_EQUAL(0U, t->track()); - CPPUNIT_ASSERT_EQUAL(trackerName, t->trackerName()); - } - - void testWriteTags(const String &comment) - { - ScopedFileCopy copy("test", ".xm"); - { - XM::File file(copy.fileName().c_str()); - CPPUNIT_ASSERT(file.tag() != 0); - file.tag()->setTitle(titleAfter); - file.tag()->setComment(comment); - file.tag()->setTrackerName(trackerNameAfter); - CPPUNIT_ASSERT(file.save()); - } - testRead(copy.fileName().c_str(), titleAfter, - commentAfter, trackerNameAfter); - CPPUNIT_ASSERT(fileEqual( - copy.fileName(), - TEST_FILE_PATH_C("changed.xm"))); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestXM); diff --git a/platform/win32/msvc/external/taglib/tests/utils.h b/platform/win32/msvc/external/taglib/tests/utils.h deleted file mode 100644 index 39e15ce93fc..00000000000 --- a/platform/win32/msvc/external/taglib/tests/utils.h +++ /dev/null @@ -1,102 +0,0 @@ -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#ifdef _WIN32 -#include <windows.h> -#else -#include <unistd.h> -#include <fcntl.h> -#include <sys/fcntl.h> -#endif -#include <stdio.h> -#include <string.h> -#include <string> -#include <fstream> - -using namespace std; - -inline string testFilePath(const string &filename) -{ - return string(TESTS_DIR "data/") + filename; -} - -#define TEST_FILE_PATH_C(f) testFilePath(f).c_str() - -inline string copyFile(const string &filename, const string &ext) -{ - string newname = string(tempnam(NULL, NULL)) + ext; - string oldname = testFilePath(filename) + ext; -#ifdef _WIN32 - CopyFile(oldname.c_str(), newname.c_str(), FALSE); - SetFileAttributes(newname.c_str(), GetFileAttributes(newname.c_str()) & ~FILE_ATTRIBUTE_READONLY); -#else - char buffer[4096]; - int bytes; - int inf = open(oldname.c_str(), O_RDONLY); - int outf = open(newname.c_str(), O_CREAT | O_EXCL | O_RDWR, S_IRUSR | S_IWUSR); - while((bytes = read(inf, buffer, sizeof(buffer))) > 0) - write(outf, buffer, bytes); - close(outf); - close(inf); -#endif - return newname; -} - -inline void deleteFile(const string &filename) -{ - remove(filename.c_str()); -} - -inline bool fileEqual(const string &filename1, const string &filename2) -{ - char buf1[BUFSIZ]; - char buf2[BUFSIZ]; - - ifstream stream1(filename1.c_str(), ios_base::in | ios_base::binary); - ifstream stream2(filename2.c_str(), ios_base::in | ios_base::binary); - - if(!stream1 && !stream2) return true; - if(!stream1 || !stream2) return false; - - for(;;) - { - stream1.read(buf1, BUFSIZ); - stream2.read(buf2, BUFSIZ); - - streamsize n1 = stream1.gcount(); - streamsize n2 = stream2.gcount(); - - if(n1 != n2) return false; - - if(n1 == 0) break; - - if(memcmp(buf1, buf2, n1) != 0) return false; - } - - return stream1.good() == stream2.good(); -} - -class ScopedFileCopy -{ -public: - ScopedFileCopy(const string &filename, const string &ext, bool deleteFile=true) - { - m_deleteFile = deleteFile; - m_filename = copyFile(filename, ext); - } - - ~ScopedFileCopy() - { - if(m_deleteFile) - deleteFile(m_filename); - } - - string fileName() - { - return m_filename; - } - -private: - bool m_deleteFile; - string m_filename; -}; diff --git a/platform/win32/msvc/external/zlib/CMakeLists.txt b/platform/win32/msvc/external/zlib/CMakeLists.txt deleted file mode 100644 index 0c0247cc516..00000000000 --- a/platform/win32/msvc/external/zlib/CMakeLists.txt +++ /dev/null @@ -1,249 +0,0 @@ -cmake_minimum_required(VERSION 2.4.4) -set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON) - -project(zlib C) - -set(VERSION "1.2.8") - -option(ASM686 "Enable building i686 assembly implementation") -option(AMD64 "Enable building amd64 assembly implementation") - -set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables") -set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries") -set(INSTALL_INC_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Installation directory for headers") -set(INSTALL_MAN_DIR "${CMAKE_INSTALL_PREFIX}/share/man" CACHE PATH "Installation directory for manual pages") -set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_PREFIX}/share/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files") - -include(CheckTypeSize) -include(CheckFunctionExists) -include(CheckIncludeFile) -include(CheckCSourceCompiles) -enable_testing() - -check_include_file(sys/types.h HAVE_SYS_TYPES_H) -check_include_file(stdint.h HAVE_STDINT_H) -check_include_file(stddef.h HAVE_STDDEF_H) - -# -# Check to see if we have large file support -# -set(CMAKE_REQUIRED_DEFINITIONS -D_LARGEFILE64_SOURCE=1) -# We add these other definitions here because CheckTypeSize.cmake -# in CMake 2.4.x does not automatically do so and we want -# compatibility with CMake 2.4.x. -if(HAVE_SYS_TYPES_H) - list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_SYS_TYPES_H) -endif() -if(HAVE_STDINT_H) - list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_STDINT_H) -endif() -if(HAVE_STDDEF_H) - list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_STDDEF_H) -endif() -check_type_size(off64_t OFF64_T) -if(HAVE_OFF64_T) - add_definitions(-D_LARGEFILE64_SOURCE=1) -endif() -set(CMAKE_REQUIRED_DEFINITIONS) # clear variable - -# -# Check for fseeko -# -check_function_exists(fseeko HAVE_FSEEKO) -if(NOT HAVE_FSEEKO) - add_definitions(-DNO_FSEEKO) -endif() - -# -# Check for unistd.h -# -check_include_file(unistd.h Z_HAVE_UNISTD_H) - -if(MSVC) - set(CMAKE_DEBUG_POSTFIX "d") - add_definitions(-D_CRT_SECURE_NO_DEPRECATE) - add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE) - include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -endif() - -if(NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR) - # If we're doing an out of source build and the user has a zconf.h - # in their source tree... - if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h) - message(STATUS "Renaming") - message(STATUS " ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h") - message(STATUS "to 'zconf.h.included' because this file is included with zlib") - message(STATUS "but CMake generates it automatically in the build directory.") - file(RENAME ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.included) - endif() -endif() - -set(ZLIB_PC ${CMAKE_CURRENT_BINARY_DIR}/zlib.pc) -configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zlib.pc.cmakein - ${ZLIB_PC} @ONLY) -configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.cmakein - ${CMAKE_CURRENT_BINARY_DIR}/zconf.h @ONLY) -include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}) - - -#============================================================================ -# zlib -#============================================================================ - -set(ZLIB_PUBLIC_HDRS - ${CMAKE_CURRENT_BINARY_DIR}/zconf.h - zlib.h -) -set(ZLIB_PRIVATE_HDRS - crc32.h - deflate.h - gzguts.h - inffast.h - inffixed.h - inflate.h - inftrees.h - trees.h - zutil.h -) -set(ZLIB_SRCS - adler32.c - compress.c - crc32.c - deflate.c - gzclose.c - gzlib.c - gzread.c - gzwrite.c - inflate.c - infback.c - inftrees.c - inffast.c - trees.c - uncompr.c - zutil.c -) - -if(NOT MINGW) - set(ZLIB_DLL_SRCS - win32/zlib1.rc # If present will override custom build rule below. - ) -endif() - -if(CMAKE_COMPILER_IS_GNUCC) - if(ASM686) - set(ZLIB_ASMS contrib/asm686/match.S) - elseif (AMD64) - set(ZLIB_ASMS contrib/amd64/amd64-match.S) - endif () - - if(ZLIB_ASMS) - add_definitions(-DASMV) - set_source_files_properties(${ZLIB_ASMS} PROPERTIES LANGUAGE C COMPILE_FLAGS -DNO_UNDERLINE) - endif() -endif() - -if(MSVC) - if(ASM686) - ENABLE_LANGUAGE(ASM_MASM) - set(ZLIB_ASMS - contrib/masmx86/inffas32.asm - contrib/masmx86/match686.asm - ) - elseif (AMD64) - ENABLE_LANGUAGE(ASM_MASM) - set(ZLIB_ASMS - contrib/masmx64/gvmat64.asm - contrib/masmx64/inffasx64.asm - ) - endif() - - if(ZLIB_ASMS) - add_definitions(-DASMV -DASMINF) - endif() -endif() - -# parse the full version number from zlib.h and include in ZLIB_FULL_VERSION -file(READ ${CMAKE_CURRENT_SOURCE_DIR}/zlib.h _zlib_h_contents) -string(REGEX REPLACE ".*#define[ \t]+ZLIB_VERSION[ \t]+\"([-0-9A-Za-z.]+)\".*" - "\\1" ZLIB_FULL_VERSION ${_zlib_h_contents}) - -if(MINGW) - # This gets us DLL resource information when compiling on MinGW. - if(NOT CMAKE_RC_COMPILER) - set(CMAKE_RC_COMPILER windres.exe) - endif() - - add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj - COMMAND ${CMAKE_RC_COMPILER} - -D GCC_WINDRES - -I ${CMAKE_CURRENT_SOURCE_DIR} - -I ${CMAKE_CURRENT_BINARY_DIR} - -o ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj - -i ${CMAKE_CURRENT_SOURCE_DIR}/win32/zlib1.rc) - set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj) -endif(MINGW) - -add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) -add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) -set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL) -set_target_properties(zlib PROPERTIES SOVERSION 1) - -if(NOT CYGWIN) - # This property causes shared libraries on Linux to have the full version - # encoded into their final filename. We disable this on Cygwin because - # it causes cygz-${ZLIB_FULL_VERSION}.dll to be created when cygz.dll - # seems to be the default. - # - # This has no effect with MSVC, on that platform the version info for - # the DLL comes from the resource file win32/zlib1.rc - set_target_properties(zlib PROPERTIES VERSION ${ZLIB_FULL_VERSION}) -endif() - -if(UNIX) - # On unix-like platforms the library is almost always called libz - set_target_properties(zlib zlibstatic PROPERTIES OUTPUT_NAME z) - if(NOT APPLE) - set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"") - endif() -elseif(BUILD_SHARED_LIBS AND WIN32) - # Creates zlib1.dll when building shared library version - set_target_properties(zlib PROPERTIES SUFFIX "1.dll") -endif() - -if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL ) - install(TARGETS zlib zlibstatic - RUNTIME DESTINATION "${INSTALL_BIN_DIR}" - ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" - LIBRARY DESTINATION "${INSTALL_LIB_DIR}" ) -endif() -if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL ) - install(FILES ${ZLIB_PUBLIC_HDRS} DESTINATION "${INSTALL_INC_DIR}") -endif() -if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL ) - install(FILES zlib.3 DESTINATION "${INSTALL_MAN_DIR}/man3") -endif() -if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL ) - install(FILES ${ZLIB_PC} DESTINATION "${INSTALL_PKGCONFIG_DIR}") -endif() - -#============================================================================ -# Example binaries -#============================================================================ - -add_executable(example test/example.c) -target_link_libraries(example zlib) -add_test(example example) - -add_executable(minigzip test/minigzip.c) -target_link_libraries(minigzip zlib) - -if(HAVE_OFF64_T) - add_executable(example64 test/example.c) - target_link_libraries(example64 zlib) - set_target_properties(example64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64") - add_test(example64 example64) - - add_executable(minigzip64 test/minigzip.c) - target_link_libraries(minigzip64 zlib) - set_target_properties(minigzip64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64") -endif() diff --git a/platform/win32/msvc/external/zlib/ChangeLog b/platform/win32/msvc/external/zlib/ChangeLog deleted file mode 100644 index f22aabaef53..00000000000 --- a/platform/win32/msvc/external/zlib/ChangeLog +++ /dev/null @@ -1,1472 +0,0 @@ - - ChangeLog file for zlib - -Changes in 1.2.8 (28 Apr 2013) -- Update contrib/minizip/iowin32.c for Windows RT [Vollant] -- Do not force Z_CONST for C++ -- Clean up contrib/vstudio [Ro§] -- Correct spelling error in zlib.h -- Fix mixed line endings in contrib/vstudio - -Changes in 1.2.7.3 (13 Apr 2013) -- Fix version numbers and DLL names in contrib/vstudio/*/zlib.rc - -Changes in 1.2.7.2 (13 Apr 2013) -- Change check for a four-byte type back to hexadecimal -- Fix typo in win32/Makefile.msc -- Add casts in gzwrite.c for pointer differences - -Changes in 1.2.7.1 (24 Mar 2013) -- Replace use of unsafe string functions with snprintf if available -- Avoid including stddef.h on Windows for Z_SOLO compile [Niessink] -- Fix gzgetc undefine when Z_PREFIX set [Turk] -- Eliminate use of mktemp in Makefile (not always available) -- Fix bug in 'F' mode for gzopen() -- Add inflateGetDictionary() function -- Correct comment in deflate.h -- Use _snprintf for snprintf in Microsoft C -- On Darwin, only use /usr/bin/libtool if libtool is not Apple -- Delete "--version" file if created by "ar --version" [Richard G.] -- Fix configure check for veracity of compiler error return codes -- Fix CMake compilation of static lib for MSVC2010 x64 -- Remove unused variable in infback9.c -- Fix argument checks in gzlog_compress() and gzlog_write() -- Clean up the usage of z_const and respect const usage within zlib -- Clean up examples/gzlog.[ch] comparisons of different types -- Avoid shift equal to bits in type (caused endless loop) -- Fix unintialized value bug in gzputc() introduced by const patches -- Fix memory allocation error in examples/zran.c [Nor] -- Fix bug where gzopen(), gzclose() would write an empty file -- Fix bug in gzclose() when gzwrite() runs out of memory -- Check for input buffer malloc failure in examples/gzappend.c -- Add note to contrib/blast to use binary mode in stdio -- Fix comparisons of differently signed integers in contrib/blast -- Check for invalid code length codes in contrib/puff -- Fix serious but very rare decompression bug in inftrees.c -- Update inflateBack() comments, since inflate() can be faster -- Use underscored I/O function names for WINAPI_FAMILY -- Add _tr_flush_bits to the external symbols prefixed by --zprefix -- Add contrib/vstudio/vc10 pre-build step for static only -- Quote --version-script argument in CMakeLists.txt -- Don't specify --version-script on Apple platforms in CMakeLists.txt -- Fix casting error in contrib/testzlib/testzlib.c -- Fix types in contrib/minizip to match result of get_crc_table() -- Simplify contrib/vstudio/vc10 with 'd' suffix -- Add TOP support to win32/Makefile.msc -- Suport i686 and amd64 assembler builds in CMakeLists.txt -- Fix typos in the use of _LARGEFILE64_SOURCE in zconf.h -- Add vc11 and vc12 build files to contrib/vstudio -- Add gzvprintf() as an undocumented function in zlib -- Fix configure for Sun shell -- Remove runtime check in configure for four-byte integer type -- Add casts and consts to ease user conversion to C++ -- Add man pages for minizip and miniunzip -- In Makefile uninstall, don't rm if preceding cd fails -- Do not return Z_BUF_ERROR if deflateParam() has nothing to write - -Changes in 1.2.7 (2 May 2012) -- Replace use of memmove() with a simple copy for portability -- Test for existence of strerror -- Restore gzgetc_ for backward compatibility with 1.2.6 -- Fix build with non-GNU make on Solaris -- Require gcc 4.0 or later on Mac OS X to use the hidden attribute -- Include unistd.h for Watcom C -- Use __WATCOMC__ instead of __WATCOM__ -- Do not use the visibility attribute if NO_VIZ defined -- Improve the detection of no hidden visibility attribute -- Avoid using __int64 for gcc or solo compilation -- Cast to char * in gzprintf to avoid warnings [Zinser] -- Fix make_vms.com for VAX [Zinser] -- Don't use library or built-in byte swaps -- Simplify test and use of gcc hidden attribute -- Fix bug in gzclose_w() when gzwrite() fails to allocate memory -- Add "x" (O_EXCL) and "e" (O_CLOEXEC) modes support to gzopen() -- Fix bug in test/minigzip.c for configure --solo -- Fix contrib/vstudio project link errors [Mohanathas] -- Add ability to choose the builder in make_vms.com [Schweda] -- Add DESTDIR support to mingw32 win32/Makefile.gcc -- Fix comments in win32/Makefile.gcc for proper usage -- Allow overriding the default install locations for cmake -- Generate and install the pkg-config file with cmake -- Build both a static and a shared version of zlib with cmake -- Include version symbols for cmake builds -- If using cmake with MSVC, add the source directory to the includes -- Remove unneeded EXTRA_CFLAGS from win32/Makefile.gcc [Truta] -- Move obsolete emx makefile to old [Truta] -- Allow the use of -Wundef when compiling or using zlib -- Avoid the use of the -u option with mktemp -- Improve inflate() documentation on the use of Z_FINISH -- Recognize clang as gcc -- Add gzopen_w() in Windows for wide character path names -- Rename zconf.h in CMakeLists.txt to move it out of the way -- Add source directory in CMakeLists.txt for building examples -- Look in build directory for zlib.pc in CMakeLists.txt -- Remove gzflags from zlibvc.def in vc9 and vc10 -- Fix contrib/minizip compilation in the MinGW environment -- Update ./configure for Solaris, support --64 [Mooney] -- Remove -R. from Solaris shared build (possible security issue) -- Avoid race condition for parallel make (-j) running example -- Fix type mismatch between get_crc_table() and crc_table -- Fix parsing of version with "-" in CMakeLists.txt [Snider, Ziegler] -- Fix the path to zlib.map in CMakeLists.txt -- Force the native libtool in Mac OS X to avoid GNU libtool [Beebe] -- Add instructions to win32/Makefile.gcc for shared install [Torri] - -Changes in 1.2.6.1 (12 Feb 2012) -- Avoid the use of the Objective-C reserved name "id" -- Include io.h in gzguts.h for Microsoft compilers -- Fix problem with ./configure --prefix and gzgetc macro -- Include gz_header definition when compiling zlib solo -- Put gzflags() functionality back in zutil.c -- Avoid library header include in crc32.c for Z_SOLO -- Use name in GCC_CLASSIC as C compiler for coverage testing, if set -- Minor cleanup in contrib/minizip/zip.c [Vollant] -- Update make_vms.com [Zinser] -- Remove unnecessary gzgetc_ function -- Use optimized byte swap operations for Microsoft and GNU [Snyder] -- Fix minor typo in zlib.h comments [Rzesniowiecki] - -Changes in 1.2.6 (29 Jan 2012) -- Update the Pascal interface in contrib/pascal -- Fix function numbers for gzgetc_ in zlibvc.def files -- Fix configure.ac for contrib/minizip [Schiffer] -- Fix large-entry detection in minizip on 64-bit systems [Schiffer] -- Have ./configure use the compiler return code for error indication -- Fix CMakeLists.txt for cross compilation [McClure] -- Fix contrib/minizip/zip.c for 64-bit architectures [Dalsnes] -- Fix compilation of contrib/minizip on FreeBSD [Marquez] -- Correct suggested usages in win32/Makefile.msc [Shachar, Horvath] -- Include io.h for Turbo C / Borland C on all platforms [Truta] -- Make version explicit in contrib/minizip/configure.ac [Bosmans] -- Avoid warning for no encryption in contrib/minizip/zip.c [Vollant] -- Minor cleanup up contrib/minizip/unzip.c [Vollant] -- Fix bug when compiling minizip with C++ [Vollant] -- Protect for long name and extra fields in contrib/minizip [Vollant] -- Avoid some warnings in contrib/minizip [Vollant] -- Add -I../.. -L../.. to CFLAGS for minizip and miniunzip -- Add missing libs to minizip linker command -- Add support for VPATH builds in contrib/minizip -- Add an --enable-demos option to contrib/minizip/configure -- Add the generation of configure.log by ./configure -- Exit when required parameters not provided to win32/Makefile.gcc -- Have gzputc return the character written instead of the argument -- Use the -m option on ldconfig for BSD systems [Tobias] -- Correct in zlib.map when deflateResetKeep was added - -Changes in 1.2.5.3 (15 Jan 2012) -- Restore gzgetc function for binary compatibility -- Do not use _lseeki64 under Borland C++ [Truta] -- Update win32/Makefile.msc to build test/*.c [Truta] -- Remove old/visualc6 given CMakefile and other alternatives -- Update AS400 build files and documentation [Monnerat] -- Update win32/Makefile.gcc to build test/*.c [Truta] -- Permit stronger flushes after Z_BLOCK flushes -- Avoid extraneous empty blocks when doing empty flushes -- Permit Z_NULL arguments to deflatePending -- Allow deflatePrime() to insert bits in the middle of a stream -- Remove second empty static block for Z_PARTIAL_FLUSH -- Write out all of the available bits when using Z_BLOCK -- Insert the first two strings in the hash table after a flush - -Changes in 1.2.5.2 (17 Dec 2011) -- fix ld error: unable to find version dependency 'ZLIB_1.2.5' -- use relative symlinks for shared libs -- Avoid searching past window for Z_RLE strategy -- Assure that high-water mark initialization is always applied in deflate -- Add assertions to fill_window() in deflate.c to match comments -- Update python link in README -- Correct spelling error in gzread.c -- Fix bug in gzgets() for a concatenated empty gzip stream -- Correct error in comment for gz_make() -- Change gzread() and related to ignore junk after gzip streams -- Allow gzread() and related to continue after gzclearerr() -- Allow gzrewind() and gzseek() after a premature end-of-file -- Simplify gzseek() now that raw after gzip is ignored -- Change gzgetc() to a macro for speed (~40% speedup in testing) -- Fix gzclose() to return the actual error last encountered -- Always add large file support for windows -- Include zconf.h for windows large file support -- Include zconf.h.cmakein for windows large file support -- Update zconf.h.cmakein on make distclean -- Merge vestigial vsnprintf determination from zutil.h to gzguts.h -- Clarify how gzopen() appends in zlib.h comments -- Correct documentation of gzdirect() since junk at end now ignored -- Add a transparent write mode to gzopen() when 'T' is in the mode -- Update python link in zlib man page -- Get inffixed.h and MAKEFIXED result to match -- Add a ./config --solo option to make zlib subset with no libary use -- Add undocumented inflateResetKeep() function for CAB file decoding -- Add --cover option to ./configure for gcc coverage testing -- Add #define ZLIB_CONST option to use const in the z_stream interface -- Add comment to gzdopen() in zlib.h to use dup() when using fileno() -- Note behavior of uncompress() to provide as much data as it can -- Add files in contrib/minizip to aid in building libminizip -- Split off AR options in Makefile.in and configure -- Change ON macro to Z_ARG to avoid application conflicts -- Facilitate compilation with Borland C++ for pragmas and vsnprintf -- Include io.h for Turbo C / Borland C++ -- Move example.c and minigzip.c to test/ -- Simplify incomplete code table filling in inflate_table() -- Remove code from inflate.c and infback.c that is impossible to execute -- Test the inflate code with full coverage -- Allow deflateSetDictionary, inflateSetDictionary at any time (in raw) -- Add deflateResetKeep and fix inflateResetKeep to retain dictionary -- Fix gzwrite.c to accommodate reduced memory zlib compilation -- Have inflate() with Z_FINISH avoid the allocation of a window -- Do not set strm->adler when doing raw inflate -- Fix gzeof() to behave just like feof() when read is not past end of file -- Fix bug in gzread.c when end-of-file is reached -- Avoid use of Z_BUF_ERROR in gz* functions except for premature EOF -- Document gzread() capability to read concurrently written files -- Remove hard-coding of resource compiler in CMakeLists.txt [Blammo] - -Changes in 1.2.5.1 (10 Sep 2011) -- Update FAQ entry on shared builds (#13) -- Avoid symbolic argument to chmod in Makefile.in -- Fix bug and add consts in contrib/puff [Oberhumer] -- Update contrib/puff/zeros.raw test file to have all block types -- Add full coverage test for puff in contrib/puff/Makefile -- Fix static-only-build install in Makefile.in -- Fix bug in unzGetCurrentFileInfo() in contrib/minizip [Kuno] -- Add libz.a dependency to shared in Makefile.in for parallel builds -- Spell out "number" (instead of "nb") in zlib.h for total_in, total_out -- Replace $(...) with `...` in configure for non-bash sh [Bowler] -- Add darwin* to Darwin* and solaris* to SunOS\ 5* in configure [Groffen] -- Add solaris* to Linux* in configure to allow gcc use [Groffen] -- Add *bsd* to Linux* case in configure [Bar-Lev] -- Add inffast.obj to dependencies in win32/Makefile.msc -- Correct spelling error in deflate.h [Kohler] -- Change libzdll.a again to libz.dll.a (!) in win32/Makefile.gcc -- Add test to configure for GNU C looking for gcc in output of $cc -v -- Add zlib.pc generation to win32/Makefile.gcc [Weigelt] -- Fix bug in zlib.h for _FILE_OFFSET_BITS set and _LARGEFILE64_SOURCE not -- Add comment in zlib.h that adler32_combine with len2 < 0 makes no sense -- Make NO_DIVIDE option in adler32.c much faster (thanks to John Reiser) -- Make stronger test in zconf.h to include unistd.h for LFS -- Apply Darwin patches for 64-bit file offsets to contrib/minizip [Slack] -- Fix zlib.h LFS support when Z_PREFIX used -- Add updated as400 support (removed from old) [Monnerat] -- Avoid deflate sensitivity to volatile input data -- Avoid division in adler32_combine for NO_DIVIDE -- Clarify the use of Z_FINISH with deflateBound() amount of space -- Set binary for output file in puff.c -- Use u4 type for crc_table to avoid conversion warnings -- Apply casts in zlib.h to avoid conversion warnings -- Add OF to prototypes for adler32_combine_ and crc32_combine_ [Miller] -- Improve inflateSync() documentation to note indeterminancy -- Add deflatePending() function to return the amount of pending output -- Correct the spelling of "specification" in FAQ [Randers-Pehrson] -- Add a check in configure for stdarg.h, use for gzprintf() -- Check that pointers fit in ints when gzprint() compiled old style -- Add dummy name before $(SHAREDLIBV) in Makefile [Bar-Lev, Bowler] -- Delete line in configure that adds -L. libz.a to LDFLAGS [Weigelt] -- Add debug records in assmebler code [Londer] -- Update RFC references to use http://tools.ietf.org/html/... [Li] -- Add --archs option, use of libtool to configure for Mac OS X [Borstel] - -Changes in 1.2.5 (19 Apr 2010) -- Disable visibility attribute in win32/Makefile.gcc [Bar-Lev] -- Default to libdir as sharedlibdir in configure [Nieder] -- Update copyright dates on modified source files -- Update trees.c to be able to generate modified trees.h -- Exit configure for MinGW, suggesting win32/Makefile.gcc -- Check for NULL path in gz_open [Homurlu] - -Changes in 1.2.4.5 (18 Apr 2010) -- Set sharedlibdir in configure [Torok] -- Set LDFLAGS in Makefile.in [Bar-Lev] -- Avoid mkdir objs race condition in Makefile.in [Bowler] -- Add ZLIB_INTERNAL in front of internal inter-module functions and arrays -- Define ZLIB_INTERNAL to hide internal functions and arrays for GNU C -- Don't use hidden attribute when it is a warning generator (e.g. Solaris) - -Changes in 1.2.4.4 (18 Apr 2010) -- Fix CROSS_PREFIX executable testing, CHOST extract, mingw* [Torok] -- Undefine _LARGEFILE64_SOURCE in zconf.h if it is zero, but not if empty -- Try to use bash or ksh regardless of functionality of /bin/sh -- Fix configure incompatibility with NetBSD sh -- Remove attempt to run under bash or ksh since have better NetBSD fix -- Fix win32/Makefile.gcc for MinGW [Bar-Lev] -- Add diagnostic messages when using CROSS_PREFIX in configure -- Added --sharedlibdir option to configure [Weigelt] -- Use hidden visibility attribute when available [Frysinger] - -Changes in 1.2.4.3 (10 Apr 2010) -- Only use CROSS_PREFIX in configure for ar and ranlib if they exist -- Use CROSS_PREFIX for nm [Bar-Lev] -- Assume _LARGEFILE64_SOURCE defined is equivalent to true -- Avoid use of undefined symbols in #if with && and || -- Make *64 prototypes in gzguts.h consistent with functions -- Add -shared load option for MinGW in configure [Bowler] -- Move z_off64_t to public interface, use instead of off64_t -- Remove ! from shell test in configure (not portable to Solaris) -- Change +0 macro tests to -0 for possibly increased portability - -Changes in 1.2.4.2 (9 Apr 2010) -- Add consistent carriage returns to readme.txt's in masmx86 and masmx64 -- Really provide prototypes for *64 functions when building without LFS -- Only define unlink() in minigzip.c if unistd.h not included -- Update README to point to contrib/vstudio project files -- Move projects/vc6 to old/ and remove projects/ -- Include stdlib.h in minigzip.c for setmode() definition under WinCE -- Clean up assembler builds in win32/Makefile.msc [Rowe] -- Include sys/types.h for Microsoft for off_t definition -- Fix memory leak on error in gz_open() -- Symbolize nm as $NM in configure [Weigelt] -- Use TEST_LDSHARED instead of LDSHARED to link test programs [Weigelt] -- Add +0 to _FILE_OFFSET_BITS and _LFS64_LARGEFILE in case not defined -- Fix bug in gzeof() to take into account unused input data -- Avoid initialization of structures with variables in puff.c -- Updated win32/README-WIN32.txt [Rowe] - -Changes in 1.2.4.1 (28 Mar 2010) -- Remove the use of [a-z] constructs for sed in configure [gentoo 310225] -- Remove $(SHAREDLIB) from LIBS in Makefile.in [Creech] -- Restore "for debugging" comment on sprintf() in gzlib.c -- Remove fdopen for MVS from gzguts.h -- Put new README-WIN32.txt in win32 [Rowe] -- Add check for shell to configure and invoke another shell if needed -- Fix big fat stinking bug in gzseek() on uncompressed files -- Remove vestigial F_OPEN64 define in zutil.h -- Set and check the value of _LARGEFILE_SOURCE and _LARGEFILE64_SOURCE -- Avoid errors on non-LFS systems when applications define LFS macros -- Set EXE to ".exe" in configure for MINGW [Kahle] -- Match crc32() in crc32.c exactly to the prototype in zlib.h [Sherrill] -- Add prefix for cross-compilation in win32/makefile.gcc [Bar-Lev] -- Add DLL install in win32/makefile.gcc [Bar-Lev] -- Allow Linux* or linux* from uname in configure [Bar-Lev] -- Allow ldconfig to be redefined in configure and Makefile.in [Bar-Lev] -- Add cross-compilation prefixes to configure [Bar-Lev] -- Match type exactly in gz_load() invocation in gzread.c -- Match type exactly of zcalloc() in zutil.c to zlib.h alloc_func -- Provide prototypes for *64 functions when building zlib without LFS -- Don't use -lc when linking shared library on MinGW -- Remove errno.h check in configure and vestigial errno code in zutil.h - -Changes in 1.2.4 (14 Mar 2010) -- Fix VER3 extraction in configure for no fourth subversion -- Update zlib.3, add docs to Makefile.in to make .pdf out of it -- Add zlib.3.pdf to distribution -- Don't set error code in gzerror() if passed pointer is NULL -- Apply destination directory fixes to CMakeLists.txt [Lowman] -- Move #cmakedefine's to a new zconf.in.cmakein -- Restore zconf.h for builds that don't use configure or cmake -- Add distclean to dummy Makefile for convenience -- Update and improve INDEX, README, and FAQ -- Update CMakeLists.txt for the return of zconf.h [Lowman] -- Update contrib/vstudio/vc9 and vc10 [Vollant] -- Change libz.dll.a back to libzdll.a in win32/Makefile.gcc -- Apply license and readme changes to contrib/asm686 [Raiter] -- Check file name lengths and add -c option in minigzip.c [Li] -- Update contrib/amd64 and contrib/masmx86/ [Vollant] -- Avoid use of "eof" parameter in trees.c to not shadow library variable -- Update make_vms.com for removal of zlibdefs.h [Zinser] -- Update assembler code and vstudio projects in contrib [Vollant] -- Remove outdated assembler code contrib/masm686 and contrib/asm586 -- Remove old vc7 and vc8 from contrib/vstudio -- Update win32/Makefile.msc, add ZLIB_VER_SUBREVISION [Rowe] -- Fix memory leaks in gzclose_r() and gzclose_w(), file leak in gz_open() -- Add contrib/gcc_gvmat64 for longest_match and inflate_fast [Vollant] -- Remove *64 functions from win32/zlib.def (they're not 64-bit yet) -- Fix bug in void-returning vsprintf() case in gzwrite.c -- Fix name change from inflate.h in contrib/inflate86/inffas86.c -- Check if temporary file exists before removing in make_vms.com [Zinser] -- Fix make install and uninstall for --static option -- Fix usage of _MSC_VER in gzguts.h and zutil.h [Truta] -- Update readme.txt in contrib/masmx64 and masmx86 to assemble - -Changes in 1.2.3.9 (21 Feb 2010) -- Expunge gzio.c -- Move as400 build information to old -- Fix updates in contrib/minizip and contrib/vstudio -- Add const to vsnprintf test in configure to avoid warnings [Weigelt] -- Delete zconf.h (made by configure) [Weigelt] -- Change zconf.in.h to zconf.h.in per convention [Weigelt] -- Check for NULL buf in gzgets() -- Return empty string for gzgets() with len == 1 (like fgets()) -- Fix description of gzgets() in zlib.h for end-of-file, NULL return -- Update minizip to 1.1 [Vollant] -- Avoid MSVC loss of data warnings in gzread.c, gzwrite.c -- Note in zlib.h that gzerror() should be used to distinguish from EOF -- Remove use of snprintf() from gzlib.c -- Fix bug in gzseek() -- Update contrib/vstudio, adding vc9 and vc10 [Kuno, Vollant] -- Fix zconf.h generation in CMakeLists.txt [Lowman] -- Improve comments in zconf.h where modified by configure - -Changes in 1.2.3.8 (13 Feb 2010) -- Clean up text files (tabs, trailing whitespace, etc.) [Oberhumer] -- Use z_off64_t in gz_zero() and gz_skip() to match state->skip -- Avoid comparison problem when sizeof(int) == sizeof(z_off64_t) -- Revert to Makefile.in from 1.2.3.6 (live with the clutter) -- Fix missing error return in gzflush(), add zlib.h note -- Add *64 functions to zlib.map [Levin] -- Fix signed/unsigned comparison in gz_comp() -- Use SFLAGS when testing shared linking in configure -- Add --64 option to ./configure to use -m64 with gcc -- Fix ./configure --help to correctly name options -- Have make fail if a test fails [Levin] -- Avoid buffer overrun in contrib/masmx64/gvmat64.asm [Simpson] -- Remove assembler object files from contrib - -Changes in 1.2.3.7 (24 Jan 2010) -- Always gzopen() with O_LARGEFILE if available -- Fix gzdirect() to work immediately after gzopen() or gzdopen() -- Make gzdirect() more precise when the state changes while reading -- Improve zlib.h documentation in many places -- Catch memory allocation failure in gz_open() -- Complete close operation if seek forward in gzclose_w() fails -- Return Z_ERRNO from gzclose_r() if close() fails -- Return Z_STREAM_ERROR instead of EOF for gzclose() being passed NULL -- Return zero for gzwrite() errors to match zlib.h description -- Return -1 on gzputs() error to match zlib.h description -- Add zconf.in.h to allow recovery from configure modification [Weigelt] -- Fix static library permissions in Makefile.in [Weigelt] -- Avoid warnings in configure tests that hide functionality [Weigelt] -- Add *BSD and DragonFly to Linux case in configure [gentoo 123571] -- Change libzdll.a to libz.dll.a in win32/Makefile.gcc [gentoo 288212] -- Avoid access of uninitialized data for first inflateReset2 call [Gomes] -- Keep object files in subdirectories to reduce the clutter somewhat -- Remove default Makefile and zlibdefs.h, add dummy Makefile -- Add new external functions to Z_PREFIX, remove duplicates, z_z_ -> z_ -- Remove zlibdefs.h completely -- modify zconf.h instead - -Changes in 1.2.3.6 (17 Jan 2010) -- Avoid void * arithmetic in gzread.c and gzwrite.c -- Make compilers happier with const char * for gz_error message -- Avoid unused parameter warning in inflate.c -- Avoid signed-unsigned comparison warning in inflate.c -- Indent #pragma's for traditional C -- Fix usage of strwinerror() in glib.c, change to gz_strwinerror() -- Correct email address in configure for system options -- Update make_vms.com and add make_vms.com to contrib/minizip [Zinser] -- Update zlib.map [Brown] -- Fix Makefile.in for Solaris 10 make of example64 and minizip64 [Torok] -- Apply various fixes to CMakeLists.txt [Lowman] -- Add checks on len in gzread() and gzwrite() -- Add error message for no more room for gzungetc() -- Remove zlib version check in gzwrite() -- Defer compression of gzprintf() result until need to -- Use snprintf() in gzdopen() if available -- Remove USE_MMAP configuration determination (only used by minigzip) -- Remove examples/pigz.c (available separately) -- Update examples/gun.c to 1.6 - -Changes in 1.2.3.5 (8 Jan 2010) -- Add space after #if in zutil.h for some compilers -- Fix relatively harmless bug in deflate_fast() [Exarevsky] -- Fix same problem in deflate_slow() -- Add $(SHAREDLIBV) to LIBS in Makefile.in [Brown] -- Add deflate_rle() for faster Z_RLE strategy run-length encoding -- Add deflate_huff() for faster Z_HUFFMAN_ONLY encoding -- Change name of "write" variable in inffast.c to avoid library collisions -- Fix premature EOF from gzread() in gzio.c [Brown] -- Use zlib header window size if windowBits is 0 in inflateInit2() -- Remove compressBound() call in deflate.c to avoid linking compress.o -- Replace use of errno in gz* with functions, support WinCE [Alves] -- Provide alternative to perror() in minigzip.c for WinCE [Alves] -- Don't use _vsnprintf on later versions of MSVC [Lowman] -- Add CMake build script and input file [Lowman] -- Update contrib/minizip to 1.1 [Svensson, Vollant] -- Moved nintendods directory from contrib to . -- Replace gzio.c with a new set of routines with the same functionality -- Add gzbuffer(), gzoffset(), gzclose_r(), gzclose_w() as part of above -- Update contrib/minizip to 1.1b -- Change gzeof() to return 0 on error instead of -1 to agree with zlib.h - -Changes in 1.2.3.4 (21 Dec 2009) -- Use old school .SUFFIXES in Makefile.in for FreeBSD compatibility -- Update comments in configure and Makefile.in for default --shared -- Fix test -z's in configure [Marquess] -- Build examplesh and minigzipsh when not testing -- Change NULL's to Z_NULL's in deflate.c and in comments in zlib.h -- Import LDFLAGS from the environment in configure -- Fix configure to populate SFLAGS with discovered CFLAGS options -- Adapt make_vms.com to the new Makefile.in [Zinser] -- Add zlib2ansi script for C++ compilation [Marquess] -- Add _FILE_OFFSET_BITS=64 test to make test (when applicable) -- Add AMD64 assembler code for longest match to contrib [Teterin] -- Include options from $SFLAGS when doing $LDSHARED -- Simplify 64-bit file support by introducing z_off64_t type -- Make shared object files in objs directory to work around old Sun cc -- Use only three-part version number for Darwin shared compiles -- Add rc option to ar in Makefile.in for when ./configure not run -- Add -WI,-rpath,. to LDFLAGS for OSF 1 V4* -- Set LD_LIBRARYN32_PATH for SGI IRIX shared compile -- Protect against _FILE_OFFSET_BITS being defined when compiling zlib -- Rename Makefile.in targets allstatic to static and allshared to shared -- Fix static and shared Makefile.in targets to be independent -- Correct error return bug in gz_open() by setting state [Brown] -- Put spaces before ;;'s in configure for better sh compatibility -- Add pigz.c (parallel implementation of gzip) to examples/ -- Correct constant in crc32.c to UL [Leventhal] -- Reject negative lengths in crc32_combine() -- Add inflateReset2() function to work like inflateEnd()/inflateInit2() -- Include sys/types.h for _LARGEFILE64_SOURCE [Brown] -- Correct typo in doc/algorithm.txt [Janik] -- Fix bug in adler32_combine() [Zhu] -- Catch missing-end-of-block-code error in all inflates and in puff - Assures that random input to inflate eventually results in an error -- Added enough.c (calculation of ENOUGH for inftrees.h) to examples/ -- Update ENOUGH and its usage to reflect discovered bounds -- Fix gzerror() error report on empty input file [Brown] -- Add ush casts in trees.c to avoid pedantic runtime errors -- Fix typo in zlib.h uncompress() description [Reiss] -- Correct inflate() comments with regard to automatic header detection -- Remove deprecation comment on Z_PARTIAL_FLUSH (it stays) -- Put new version of gzlog (2.0) in examples with interruption recovery -- Add puff compile option to permit invalid distance-too-far streams -- Add puff TEST command options, ability to read piped input -- Prototype the *64 functions in zlib.h when _FILE_OFFSET_BITS == 64, but - _LARGEFILE64_SOURCE not defined -- Fix Z_FULL_FLUSH to truly erase the past by resetting s->strstart -- Fix deflateSetDictionary() to use all 32K for output consistency -- Remove extraneous #define MIN_LOOKAHEAD in deflate.c (in deflate.h) -- Clear bytes after deflate lookahead to avoid use of uninitialized data -- Change a limit in inftrees.c to be more transparent to Coverity Prevent -- Update win32/zlib.def with exported symbols from zlib.h -- Correct spelling errors in zlib.h [Willem, Sobrado] -- Allow Z_BLOCK for deflate() to force a new block -- Allow negative bits in inflatePrime() to delete existing bit buffer -- Add Z_TREES flush option to inflate() to return at end of trees -- Add inflateMark() to return current state information for random access -- Add Makefile for NintendoDS to contrib [Costa] -- Add -w in configure compile tests to avoid spurious warnings [Beucler] -- Fix typos in zlib.h comments for deflateSetDictionary() -- Fix EOF detection in transparent gzread() [Maier] - -Changes in 1.2.3.3 (2 October 2006) -- Make --shared the default for configure, add a --static option -- Add compile option to permit invalid distance-too-far streams -- Add inflateUndermine() function which is required to enable above -- Remove use of "this" variable name for C++ compatibility [Marquess] -- Add testing of shared library in make test, if shared library built -- Use ftello() and fseeko() if available instead of ftell() and fseek() -- Provide two versions of all functions that use the z_off_t type for - binary compatibility -- a normal version and a 64-bit offset version, - per the Large File Support Extension when _LARGEFILE64_SOURCE is - defined; use the 64-bit versions by default when _FILE_OFFSET_BITS - is defined to be 64 -- Add a --uname= option to configure to perhaps help with cross-compiling - -Changes in 1.2.3.2 (3 September 2006) -- Turn off silly Borland warnings [Hay] -- Use off64_t and define _LARGEFILE64_SOURCE when present -- Fix missing dependency on inffixed.h in Makefile.in -- Rig configure --shared to build both shared and static [Teredesai, Truta] -- Remove zconf.in.h and instead create a new zlibdefs.h file -- Fix contrib/minizip/unzip.c non-encrypted after encrypted [Vollant] -- Add treebuild.xml (see http://treebuild.metux.de/) [Weigelt] - -Changes in 1.2.3.1 (16 August 2006) -- Add watcom directory with OpenWatcom make files [Daniel] -- Remove #undef of FAR in zconf.in.h for MVS [Fedtke] -- Update make_vms.com [Zinser] -- Use -fPIC for shared build in configure [Teredesai, Nicholson] -- Use only major version number for libz.so on IRIX and OSF1 [Reinholdtsen] -- Use fdopen() (not _fdopen()) for Interix in zutil.h [BŠck] -- Add some FAQ entries about the contrib directory -- Update the MVS question in the FAQ -- Avoid extraneous reads after EOF in gzio.c [Brown] -- Correct spelling of "successfully" in gzio.c [Randers-Pehrson] -- Add comments to zlib.h about gzerror() usage [Brown] -- Set extra flags in gzip header in gzopen() like deflate() does -- Make configure options more compatible with double-dash conventions - [Weigelt] -- Clean up compilation under Solaris SunStudio cc [Rowe, Reinholdtsen] -- Fix uninstall target in Makefile.in [Truta] -- Add pkgconfig support [Weigelt] -- Use $(DESTDIR) macro in Makefile.in [Reinholdtsen, Weigelt] -- Replace set_data_type() with a more accurate detect_data_type() in - trees.c, according to the txtvsbin.txt document [Truta] -- Swap the order of #include <stdio.h> and #include "zlib.h" in - gzio.c, example.c and minigzip.c [Truta] -- Shut up annoying VS2005 warnings about standard C deprecation [Rowe, - Truta] (where?) -- Fix target "clean" from win32/Makefile.bor [Truta] -- Create .pdb and .manifest files in win32/makefile.msc [Ziegler, Rowe] -- Update zlib www home address in win32/DLL_FAQ.txt [Truta] -- Update contrib/masmx86/inffas32.asm for VS2005 [Vollant, Van Wassenhove] -- Enable browse info in the "Debug" and "ASM Debug" configurations in - the Visual C++ 6 project, and set (non-ASM) "Debug" as default [Truta] -- Add pkgconfig support [Weigelt] -- Add ZLIB_VER_MAJOR, ZLIB_VER_MINOR and ZLIB_VER_REVISION in zlib.h, - for use in win32/zlib1.rc [Polushin, Rowe, Truta] -- Add a document that explains the new text detection scheme to - doc/txtvsbin.txt [Truta] -- Add rfc1950.txt, rfc1951.txt and rfc1952.txt to doc/ [Truta] -- Move algorithm.txt into doc/ [Truta] -- Synchronize FAQ with website -- Fix compressBound(), was low for some pathological cases [Fearnley] -- Take into account wrapper variations in deflateBound() -- Set examples/zpipe.c input and output to binary mode for Windows -- Update examples/zlib_how.html with new zpipe.c (also web site) -- Fix some warnings in examples/gzlog.c and examples/zran.c (it seems - that gcc became pickier in 4.0) -- Add zlib.map for Linux: "All symbols from zlib-1.1.4 remain - un-versioned, the patch adds versioning only for symbols introduced in - zlib-1.2.0 or later. It also declares as local those symbols which are - not designed to be exported." [Levin] -- Update Z_PREFIX list in zconf.in.h, add --zprefix option to configure -- Do not initialize global static by default in trees.c, add a response - NO_INIT_GLOBAL_POINTERS to initialize them if needed [Marquess] -- Don't use strerror() in gzio.c under WinCE [Yakimov] -- Don't use errno.h in zutil.h under WinCE [Yakimov] -- Move arguments for AR to its usage to allow replacing ar [Marot] -- Add HAVE_VISIBILITY_PRAGMA in zconf.in.h for Mozilla [Randers-Pehrson] -- Improve inflateInit() and inflateInit2() documentation -- Fix structure size comment in inflate.h -- Change configure help option from --h* to --help [Santos] - -Changes in 1.2.3 (18 July 2005) -- Apply security vulnerability fixes to contrib/infback9 as well -- Clean up some text files (carriage returns, trailing space) -- Update testzlib, vstudio, masmx64, and masmx86 in contrib [Vollant] - -Changes in 1.2.2.4 (11 July 2005) -- Add inflatePrime() function for starting inflation at bit boundary -- Avoid some Visual C warnings in deflate.c -- Avoid more silly Visual C warnings in inflate.c and inftrees.c for 64-bit - compile -- Fix some spelling errors in comments [Betts] -- Correct inflateInit2() error return documentation in zlib.h -- Add zran.c example of compressed data random access to examples - directory, shows use of inflatePrime() -- Fix cast for assignments to strm->state in inflate.c and infback.c -- Fix zlibCompileFlags() in zutil.c to use 1L for long shifts [Oberhumer] -- Move declarations of gf2 functions to right place in crc32.c [Oberhumer] -- Add cast in trees.c t avoid a warning [Oberhumer] -- Avoid some warnings in fitblk.c, gun.c, gzjoin.c in examples [Oberhumer] -- Update make_vms.com [Zinser] -- Initialize state->write in inflateReset() since copied in inflate_fast() -- Be more strict on incomplete code sets in inflate_table() and increase - ENOUGH and MAXD -- this repairs a possible security vulnerability for - invalid inflate input. Thanks to Tavis Ormandy and Markus Oberhumer for - discovering the vulnerability and providing test cases. -- Add ia64 support to configure for HP-UX [Smith] -- Add error return to gzread() for format or i/o error [Levin] -- Use malloc.h for OS/2 [Necasek] - -Changes in 1.2.2.3 (27 May 2005) -- Replace 1U constants in inflate.c and inftrees.c for 64-bit compile -- Typecast fread() return values in gzio.c [Vollant] -- Remove trailing space in minigzip.c outmode (VC++ can't deal with it) -- Fix crc check bug in gzread() after gzungetc() [Heiner] -- Add the deflateTune() function to adjust internal compression parameters -- Add a fast gzip decompressor, gun.c, to examples (use of inflateBack) -- Remove an incorrect assertion in examples/zpipe.c -- Add C++ wrapper in infback9.h [Donais] -- Fix bug in inflateCopy() when decoding fixed codes -- Note in zlib.h how much deflateSetDictionary() actually uses -- Remove USE_DICT_HEAD in deflate.c (would mess up inflate if used) -- Add _WIN32_WCE to define WIN32 in zconf.in.h [Spencer] -- Don't include stderr.h or errno.h for _WIN32_WCE in zutil.h [Spencer] -- Add gzdirect() function to indicate transparent reads -- Update contrib/minizip [Vollant] -- Fix compilation of deflate.c when both ASMV and FASTEST [Oberhumer] -- Add casts in crc32.c to avoid warnings [Oberhumer] -- Add contrib/masmx64 [Vollant] -- Update contrib/asm586, asm686, masmx86, testzlib, vstudio [Vollant] - -Changes in 1.2.2.2 (30 December 2004) -- Replace structure assignments in deflate.c and inflate.c with zmemcpy to - avoid implicit memcpy calls (portability for no-library compilation) -- Increase sprintf() buffer size in gzdopen() to allow for large numbers -- Add INFLATE_STRICT to check distances against zlib header -- Improve WinCE errno handling and comments [Chang] -- Remove comment about no gzip header processing in FAQ -- Add Z_FIXED strategy option to deflateInit2() to force fixed trees -- Add updated make_vms.com [Coghlan], update README -- Create a new "examples" directory, move gzappend.c there, add zpipe.c, - fitblk.c, gzlog.[ch], gzjoin.c, and zlib_how.html. -- Add FAQ entry and comments in deflate.c on uninitialized memory access -- Add Solaris 9 make options in configure [Gilbert] -- Allow strerror() usage in gzio.c for STDC -- Fix DecompressBuf in contrib/delphi/ZLib.pas [ManChesTer] -- Update contrib/masmx86/inffas32.asm and gvmat32.asm [Vollant] -- Use z_off_t for adler32_combine() and crc32_combine() lengths -- Make adler32() much faster for small len -- Use OS_CODE in deflate() default gzip header - -Changes in 1.2.2.1 (31 October 2004) -- Allow inflateSetDictionary() call for raw inflate -- Fix inflate header crc check bug for file names and comments -- Add deflateSetHeader() and gz_header structure for custom gzip headers -- Add inflateGetheader() to retrieve gzip headers -- Add crc32_combine() and adler32_combine() functions -- Add alloc_func, free_func, in_func, out_func to Z_PREFIX list -- Use zstreamp consistently in zlib.h (inflate_back functions) -- Remove GUNZIP condition from definition of inflate_mode in inflate.h - and in contrib/inflate86/inffast.S [Truta, Anderson] -- Add support for AMD64 in contrib/inflate86/inffas86.c [Anderson] -- Update projects/README.projects and projects/visualc6 [Truta] -- Update win32/DLL_FAQ.txt [Truta] -- Avoid warning under NO_GZCOMPRESS in gzio.c; fix typo [Truta] -- Deprecate Z_ASCII; use Z_TEXT instead [Truta] -- Use a new algorithm for setting strm->data_type in trees.c [Truta] -- Do not define an exit() prototype in zutil.c unless DEBUG defined -- Remove prototype of exit() from zutil.c, example.c, minigzip.c [Truta] -- Add comment in zlib.h for Z_NO_FLUSH parameter to deflate() -- Fix Darwin build version identification [Peterson] - -Changes in 1.2.2 (3 October 2004) -- Update zlib.h comments on gzip in-memory processing -- Set adler to 1 in inflateReset() to support Java test suite [Walles] -- Add contrib/dotzlib [Ravn] -- Update win32/DLL_FAQ.txt [Truta] -- Update contrib/minizip [Vollant] -- Move contrib/visual-basic.txt to old/ [Truta] -- Fix assembler builds in projects/visualc6/ [Truta] - -Changes in 1.2.1.2 (9 September 2004) -- Update INDEX file -- Fix trees.c to update strm->data_type (no one ever noticed!) -- Fix bug in error case in inflate.c, infback.c, and infback9.c [Brown] -- Add "volatile" to crc table flag declaration (for DYNAMIC_CRC_TABLE) -- Add limited multitasking protection to DYNAMIC_CRC_TABLE -- Add NO_vsnprintf for VMS in zutil.h [Mozilla] -- Don't declare strerror() under VMS [Mozilla] -- Add comment to DYNAMIC_CRC_TABLE to use get_crc_table() to initialize -- Update contrib/ada [Anisimkov] -- Update contrib/minizip [Vollant] -- Fix configure to not hardcode directories for Darwin [Peterson] -- Fix gzio.c to not return error on empty files [Brown] -- Fix indentation; update version in contrib/delphi/ZLib.pas and - contrib/pascal/zlibpas.pas [Truta] -- Update mkasm.bat in contrib/masmx86 [Truta] -- Update contrib/untgz [Truta] -- Add projects/README.projects [Truta] -- Add project for MS Visual C++ 6.0 in projects/visualc6 [Cadieux, Truta] -- Update win32/DLL_FAQ.txt [Truta] -- Update list of Z_PREFIX symbols in zconf.h [Randers-Pehrson, Truta] -- Remove an unnecessary assignment to curr in inftrees.c [Truta] -- Add OS/2 to exe builds in configure [Poltorak] -- Remove err dummy parameter in zlib.h [Kientzle] - -Changes in 1.2.1.1 (9 January 2004) -- Update email address in README -- Several FAQ updates -- Fix a big fat bug in inftrees.c that prevented decoding valid - dynamic blocks with only literals and no distance codes -- - Thanks to "Hot Emu" for the bug report and sample file -- Add a note to puff.c on no distance codes case. - -Changes in 1.2.1 (17 November 2003) -- Remove a tab in contrib/gzappend/gzappend.c -- Update some interfaces in contrib for new zlib functions -- Update zlib version number in some contrib entries -- Add Windows CE definition for ptrdiff_t in zutil.h [Mai, Truta] -- Support shared libraries on Hurd and KFreeBSD [Brown] -- Fix error in NO_DIVIDE option of adler32.c - -Changes in 1.2.0.8 (4 November 2003) -- Update version in contrib/delphi/ZLib.pas and contrib/pascal/zlibpas.pas -- Add experimental NO_DIVIDE #define in adler32.c - - Possibly faster on some processors (let me know if it is) -- Correct Z_BLOCK to not return on first inflate call if no wrap -- Fix strm->data_type on inflate() return to correctly indicate EOB -- Add deflatePrime() function for appending in the middle of a byte -- Add contrib/gzappend for an example of appending to a stream -- Update win32/DLL_FAQ.txt [Truta] -- Delete Turbo C comment in README [Truta] -- Improve some indentation in zconf.h [Truta] -- Fix infinite loop on bad input in configure script [Church] -- Fix gzeof() for concatenated gzip files [Johnson] -- Add example to contrib/visual-basic.txt [Michael B.] -- Add -p to mkdir's in Makefile.in [vda] -- Fix configure to properly detect presence or lack of printf functions -- Add AS400 support [Monnerat] -- Add a little Cygwin support [Wilson] - -Changes in 1.2.0.7 (21 September 2003) -- Correct some debug formats in contrib/infback9 -- Cast a type in a debug statement in trees.c -- Change search and replace delimiter in configure from % to # [Beebe] -- Update contrib/untgz to 0.2 with various fixes [Truta] -- Add build support for Amiga [Nikl] -- Remove some directories in old that have been updated to 1.2 -- Add dylib building for Mac OS X in configure and Makefile.in -- Remove old distribution stuff from Makefile -- Update README to point to DLL_FAQ.txt, and add comment on Mac OS X -- Update links in README - -Changes in 1.2.0.6 (13 September 2003) -- Minor FAQ updates -- Update contrib/minizip to 1.00 [Vollant] -- Remove test of gz functions in example.c when GZ_COMPRESS defined [Truta] -- Update POSTINC comment for 68060 [Nikl] -- Add contrib/infback9 with deflate64 decoding (unsupported) -- For MVS define NO_vsnprintf and undefine FAR [van Burik] -- Add pragma for fdopen on MVS [van Burik] - -Changes in 1.2.0.5 (8 September 2003) -- Add OF to inflateBackEnd() declaration in zlib.h -- Remember start when using gzdopen in the middle of a file -- Use internal off_t counters in gz* functions to properly handle seeks -- Perform more rigorous check for distance-too-far in inffast.c -- Add Z_BLOCK flush option to return from inflate at block boundary -- Set strm->data_type on return from inflate - - Indicate bits unused, if at block boundary, and if in last block -- Replace size_t with ptrdiff_t in crc32.c, and check for correct size -- Add condition so old NO_DEFLATE define still works for compatibility -- FAQ update regarding the Windows DLL [Truta] -- INDEX update: add qnx entry, remove aix entry [Truta] -- Install zlib.3 into mandir [Wilson] -- Move contrib/zlib_dll_FAQ.txt to win32/DLL_FAQ.txt; update [Truta] -- Adapt the zlib interface to the new DLL convention guidelines [Truta] -- Introduce ZLIB_WINAPI macro to allow the export of functions using - the WINAPI calling convention, for Visual Basic [Vollant, Truta] -- Update msdos and win32 scripts and makefiles [Truta] -- Export symbols by name, not by ordinal, in win32/zlib.def [Truta] -- Add contrib/ada [Anisimkov] -- Move asm files from contrib/vstudio/vc70_32 to contrib/asm386 [Truta] -- Rename contrib/asm386 to contrib/masmx86 [Truta, Vollant] -- Add contrib/masm686 [Truta] -- Fix offsets in contrib/inflate86 and contrib/masmx86/inffas32.asm - [Truta, Vollant] -- Update contrib/delphi; rename to contrib/pascal; add example [Truta] -- Remove contrib/delphi2; add a new contrib/delphi [Truta] -- Avoid inclusion of the nonstandard <memory.h> in contrib/iostream, - and fix some method prototypes [Truta] -- Fix the ZCR_SEED2 constant to avoid warnings in contrib/minizip - [Truta] -- Avoid the use of backslash (\) in contrib/minizip [Vollant] -- Fix file time handling in contrib/untgz; update makefiles [Truta] -- Update contrib/vstudio/vc70_32 to comply with the new DLL guidelines - [Vollant] -- Remove contrib/vstudio/vc15_16 [Vollant] -- Rename contrib/vstudio/vc70_32 to contrib/vstudio/vc7 [Truta] -- Update README.contrib [Truta] -- Invert the assignment order of match_head and s->prev[...] in - INSERT_STRING [Truta] -- Compare TOO_FAR with 32767 instead of 32768, to avoid 16-bit warnings - [Truta] -- Compare function pointers with 0, not with NULL or Z_NULL [Truta] -- Fix prototype of syncsearch in inflate.c [Truta] -- Introduce ASMINF macro to be enabled when using an ASM implementation - of inflate_fast [Truta] -- Change NO_DEFLATE to NO_GZCOMPRESS [Truta] -- Modify test_gzio in example.c to take a single file name as a - parameter [Truta] -- Exit the example.c program if gzopen fails [Truta] -- Add type casts around strlen in example.c [Truta] -- Remove casting to sizeof in minigzip.c; give a proper type - to the variable compared with SUFFIX_LEN [Truta] -- Update definitions of STDC and STDC99 in zconf.h [Truta] -- Synchronize zconf.h with the new Windows DLL interface [Truta] -- Use SYS16BIT instead of __32BIT__ to distinguish between - 16- and 32-bit platforms [Truta] -- Use far memory allocators in small 16-bit memory models for - Turbo C [Truta] -- Add info about the use of ASMV, ASMINF and ZLIB_WINAPI in - zlibCompileFlags [Truta] -- Cygwin has vsnprintf [Wilson] -- In Windows16, OS_CODE is 0, as in MSDOS [Truta] -- In Cygwin, OS_CODE is 3 (Unix), not 11 (Windows32) [Wilson] - -Changes in 1.2.0.4 (10 August 2003) -- Minor FAQ updates -- Be more strict when checking inflateInit2's windowBits parameter -- Change NO_GUNZIP compile option to NO_GZIP to cover deflate as well -- Add gzip wrapper option to deflateInit2 using windowBits -- Add updated QNX rule in configure and qnx directory [Bonnefoy] -- Make inflate distance-too-far checks more rigorous -- Clean up FAR usage in inflate -- Add casting to sizeof() in gzio.c and minigzip.c - -Changes in 1.2.0.3 (19 July 2003) -- Fix silly error in gzungetc() implementation [Vollant] -- Update contrib/minizip and contrib/vstudio [Vollant] -- Fix printf format in example.c -- Correct cdecl support in zconf.in.h [Anisimkov] -- Minor FAQ updates - -Changes in 1.2.0.2 (13 July 2003) -- Add ZLIB_VERNUM in zlib.h for numerical preprocessor comparisons -- Attempt to avoid warnings in crc32.c for pointer-int conversion -- Add AIX to configure, remove aix directory [Bakker] -- Add some casts to minigzip.c -- Improve checking after insecure sprintf() or vsprintf() calls -- Remove #elif's from crc32.c -- Change leave label to inf_leave in inflate.c and infback.c to avoid - library conflicts -- Remove inflate gzip decoding by default--only enable gzip decoding by - special request for stricter backward compatibility -- Add zlibCompileFlags() function to return compilation information -- More typecasting in deflate.c to avoid warnings -- Remove leading underscore from _Capital #defines [Truta] -- Fix configure to link shared library when testing -- Add some Windows CE target adjustments [Mai] -- Remove #define ZLIB_DLL in zconf.h [Vollant] -- Add zlib.3 [Rodgers] -- Update RFC URL in deflate.c and algorithm.txt [Mai] -- Add zlib_dll_FAQ.txt to contrib [Truta] -- Add UL to some constants [Truta] -- Update minizip and vstudio [Vollant] -- Remove vestigial NEED_DUMMY_RETURN from zconf.in.h -- Expand use of NO_DUMMY_DECL to avoid all dummy structures -- Added iostream3 to contrib [Schwardt] -- Replace rewind() with fseek() for WinCE [Truta] -- Improve setting of zlib format compression level flags - - Report 0 for huffman and rle strategies and for level == 0 or 1 - - Report 2 only for level == 6 -- Only deal with 64K limit when necessary at compile time [Truta] -- Allow TOO_FAR check to be turned off at compile time [Truta] -- Add gzclearerr() function [Souza] -- Add gzungetc() function - -Changes in 1.2.0.1 (17 March 2003) -- Add Z_RLE strategy for run-length encoding [Truta] - - When Z_RLE requested, restrict matches to distance one - - Update zlib.h, minigzip.c, gzopen(), gzdopen() for Z_RLE -- Correct FASTEST compilation to allow level == 0 -- Clean up what gets compiled for FASTEST -- Incorporate changes to zconf.in.h [Vollant] - - Refine detection of Turbo C need for dummy returns - - Refine ZLIB_DLL compilation - - Include additional header file on VMS for off_t typedef -- Try to use _vsnprintf where it supplants vsprintf [Vollant] -- Add some casts in inffast.c -- Enchance comments in zlib.h on what happens if gzprintf() tries to - write more than 4095 bytes before compression -- Remove unused state from inflateBackEnd() -- Remove exit(0) from minigzip.c, example.c -- Get rid of all those darn tabs -- Add "check" target to Makefile.in that does the same thing as "test" -- Add "mostlyclean" and "maintainer-clean" targets to Makefile.in -- Update contrib/inflate86 [Anderson] -- Update contrib/testzlib, contrib/vstudio, contrib/minizip [Vollant] -- Add msdos and win32 directories with makefiles [Truta] -- More additions and improvements to the FAQ - -Changes in 1.2.0 (9 March 2003) -- New and improved inflate code - - About 20% faster - - Does not allocate 32K window unless and until needed - - Automatically detects and decompresses gzip streams - - Raw inflate no longer needs an extra dummy byte at end - - Added inflateBack functions using a callback interface--even faster - than inflate, useful for file utilities (gzip, zip) - - Added inflateCopy() function to record state for random access on - externally generated deflate streams (e.g. in gzip files) - - More readable code (I hope) -- New and improved crc32() - - About 50% faster, thanks to suggestions from Rodney Brown -- Add deflateBound() and compressBound() functions -- Fix memory leak in deflateInit2() -- Permit setting dictionary for raw deflate (for parallel deflate) -- Fix const declaration for gzwrite() -- Check for some malloc() failures in gzio.c -- Fix bug in gzopen() on single-byte file 0x1f -- Fix bug in gzread() on concatenated file with 0x1f at end of buffer - and next buffer doesn't start with 0x8b -- Fix uncompress() to return Z_DATA_ERROR on truncated input -- Free memory at end of example.c -- Remove MAX #define in trees.c (conflicted with some libraries) -- Fix static const's in deflate.c, gzio.c, and zutil.[ch] -- Declare malloc() and free() in gzio.c if STDC not defined -- Use malloc() instead of calloc() in zutil.c if int big enough -- Define STDC for AIX -- Add aix/ with approach for compiling shared library on AIX -- Add HP-UX support for shared libraries in configure -- Add OpenUNIX support for shared libraries in configure -- Use $cc instead of gcc to build shared library -- Make prefix directory if needed when installing -- Correct Macintosh avoidance of typedef Byte in zconf.h -- Correct Turbo C memory allocation when under Linux -- Use libz.a instead of -lz in Makefile (assure use of compiled library) -- Update configure to check for snprintf or vsnprintf functions and their - return value, warn during make if using an insecure function -- Fix configure problem with compile-time knowledge of HAVE_UNISTD_H that - is lost when library is used--resolution is to build new zconf.h -- Documentation improvements (in zlib.h): - - Document raw deflate and inflate - - Update RFCs URL - - Point out that zlib and gzip formats are different - - Note that Z_BUF_ERROR is not fatal - - Document string limit for gzprintf() and possible buffer overflow - - Note requirement on avail_out when flushing - - Note permitted values of flush parameter of inflate() -- Add some FAQs (and even answers) to the FAQ -- Add contrib/inflate86/ for x86 faster inflate -- Add contrib/blast/ for PKWare Data Compression Library decompression -- Add contrib/puff/ simple inflate for deflate format description - -Changes in 1.1.4 (11 March 2002) -- ZFREE was repeated on same allocation on some error conditions. - This creates a security problem described in - http://www.zlib.org/advisory-2002-03-11.txt -- Returned incorrect error (Z_MEM_ERROR) on some invalid data -- Avoid accesses before window for invalid distances with inflate window - less than 32K. -- force windowBits > 8 to avoid a bug in the encoder for a window size - of 256 bytes. (A complete fix will be available in 1.1.5). - -Changes in 1.1.3 (9 July 1998) -- fix "an inflate input buffer bug that shows up on rare but persistent - occasions" (Mark) -- fix gzread and gztell for concatenated .gz files (Didier Le Botlan) -- fix gzseek(..., SEEK_SET) in write mode -- fix crc check after a gzeek (Frank Faubert) -- fix miniunzip when the last entry in a zip file is itself a zip file - (J Lillge) -- add contrib/asm586 and contrib/asm686 (Brian Raiter) - See http://www.muppetlabs.com/~breadbox/software/assembly.html -- add support for Delphi 3 in contrib/delphi (Bob Dellaca) -- add support for C++Builder 3 and Delphi 3 in contrib/delphi2 (Davide Moretti) -- do not exit prematurely in untgz if 0 at start of block (Magnus Holmgren) -- use macro EXTERN instead of extern to support DLL for BeOS (Sander Stoks) -- added a FAQ file - -- Support gzdopen on Mac with Metrowerks (Jason Linhart) -- Do not redefine Byte on Mac (Brad Pettit & Jason Linhart) -- define SEEK_END too if SEEK_SET is not defined (Albert Chin-A-Young) -- avoid some warnings with Borland C (Tom Tanner) -- fix a problem in contrib/minizip/zip.c for 16-bit MSDOS (Gilles Vollant) -- emulate utime() for WIN32 in contrib/untgz (Gilles Vollant) -- allow several arguments to configure (Tim Mooney, Frodo Looijaard) -- use libdir and includedir in Makefile.in (Tim Mooney) -- support shared libraries on OSF1 V4 (Tim Mooney) -- remove so_locations in "make clean" (Tim Mooney) -- fix maketree.c compilation error (Glenn, Mark) -- Python interface to zlib now in Python 1.5 (Jeremy Hylton) -- new Makefile.riscos (Rich Walker) -- initialize static descriptors in trees.c for embedded targets (Nick Smith) -- use "foo-gz" in example.c for RISCOS and VMS (Nick Smith) -- add the OS/2 files in Makefile.in too (Andrew Zabolotny) -- fix fdopen and halloc macros for Microsoft C 6.0 (Tom Lane) -- fix maketree.c to allow clean compilation of inffixed.h (Mark) -- fix parameter check in deflateCopy (Gunther Nikl) -- cleanup trees.c, use compressed_len only in debug mode (Christian Spieler) -- Many portability patches by Christian Spieler: - . zutil.c, zutil.h: added "const" for zmem* - . Make_vms.com: fixed some typos - . Make_vms.com: msdos/Makefile.*: removed zutil.h from some dependency lists - . msdos/Makefile.msc: remove "default rtl link library" info from obj files - . msdos/Makefile.*: use model-dependent name for the built zlib library - . msdos/Makefile.emx, nt/Makefile.emx, nt/Makefile.gcc: - new makefiles, for emx (DOS/OS2), emx&rsxnt and mingw32 (Windows 9x / NT) -- use define instead of typedef for Bytef also for MSC small/medium (Tom Lane) -- replace __far with _far for better portability (Christian Spieler, Tom Lane) -- fix test for errno.h in configure (Tim Newsham) - -Changes in 1.1.2 (19 March 98) -- added contrib/minzip, mini zip and unzip based on zlib (Gilles Vollant) - See http://www.winimage.com/zLibDll/unzip.html -- preinitialize the inflate tables for fixed codes, to make the code - completely thread safe (Mark) -- some simplifications and slight speed-up to the inflate code (Mark) -- fix gzeof on non-compressed files (Allan Schrum) -- add -std1 option in configure for OSF1 to fix gzprintf (Martin Mokrejs) -- use default value of 4K for Z_BUFSIZE for 16-bit MSDOS (Tim Wegner + Glenn) -- added os2/Makefile.def and os2/zlib.def (Andrew Zabolotny) -- add shared lib support for UNIX_SV4.2MP (MATSUURA Takanori) -- do not wrap extern "C" around system includes (Tom Lane) -- mention zlib binding for TCL in README (Andreas Kupries) -- added amiga/Makefile.pup for Amiga powerUP SAS/C PPC (Andreas Kleinert) -- allow "make install prefix=..." even after configure (Glenn Randers-Pehrson) -- allow "configure --prefix $HOME" (Tim Mooney) -- remove warnings in example.c and gzio.c (Glenn Randers-Pehrson) -- move Makefile.sas to amiga/Makefile.sas - -Changes in 1.1.1 (27 Feb 98) -- fix macros _tr_tally_* in deflate.h for debug mode (Glenn Randers-Pehrson) -- remove block truncation heuristic which had very marginal effect for zlib - (smaller lit_bufsize than in gzip 1.2.4) and degraded a little the - compression ratio on some files. This also allows inlining _tr_tally for - matches in deflate_slow. -- added msdos/Makefile.w32 for WIN32 Microsoft Visual C++ (Bob Frazier) - -Changes in 1.1.0 (24 Feb 98) -- do not return STREAM_END prematurely in inflate (John Bowler) -- revert to the zlib 1.0.8 inflate to avoid the gcc 2.8.0 bug (Jeremy Buhler) -- compile with -DFASTEST to get compression code optimized for speed only -- in minigzip, try mmap'ing the input file first (Miguel Albrecht) -- increase size of I/O buffers in minigzip.c and gzio.c (not a big gain - on Sun but significant on HP) - -- add a pointer to experimental unzip library in README (Gilles Vollant) -- initialize variable gcc in configure (Chris Herborth) - -Changes in 1.0.9 (17 Feb 1998) -- added gzputs and gzgets functions -- do not clear eof flag in gzseek (Mark Diekhans) -- fix gzseek for files in transparent mode (Mark Diekhans) -- do not assume that vsprintf returns the number of bytes written (Jens Krinke) -- replace EXPORT with ZEXPORT to avoid conflict with other programs -- added compress2 in zconf.h, zlib.def, zlib.dnt -- new asm code from Gilles Vollant in contrib/asm386 -- simplify the inflate code (Mark): - . Replace ZALLOC's in huft_build() with single ZALLOC in inflate_blocks_new() - . ZALLOC the length list in inflate_trees_fixed() instead of using stack - . ZALLOC the value area for huft_build() instead of using stack - . Simplify Z_FINISH check in inflate() - -- Avoid gcc 2.8.0 comparison bug a little differently than zlib 1.0.8 -- in inftrees.c, avoid cc -O bug on HP (Farshid Elahi) -- in zconf.h move the ZLIB_DLL stuff earlier to avoid problems with - the declaration of FAR (Gilles VOllant) -- install libz.so* with mode 755 (executable) instead of 644 (Marc Lehmann) -- read_buf buf parameter of type Bytef* instead of charf* -- zmemcpy parameters are of type Bytef*, not charf* (Joseph Strout) -- do not redeclare unlink in minigzip.c for WIN32 (John Bowler) -- fix check for presence of directories in "make install" (Ian Willis) - -Changes in 1.0.8 (27 Jan 1998) -- fixed offsets in contrib/asm386/gvmat32.asm (Gilles Vollant) -- fix gzgetc and gzputc for big endian systems (Markus Oberhumer) -- added compress2() to allow setting the compression level -- include sys/types.h to get off_t on some systems (Marc Lehmann & QingLong) -- use constant arrays for the static trees in trees.c instead of computing - them at run time (thanks to Ken Raeburn for this suggestion). To create - trees.h, compile with GEN_TREES_H and run "make test". -- check return code of example in "make test" and display result -- pass minigzip command line options to file_compress -- simplifying code of inflateSync to avoid gcc 2.8 bug - -- support CC="gcc -Wall" in configure -s (QingLong) -- avoid a flush caused by ftell in gzopen for write mode (Ken Raeburn) -- fix test for shared library support to avoid compiler warnings -- zlib.lib -> zlib.dll in msdos/zlib.rc (Gilles Vollant) -- check for TARGET_OS_MAC in addition to MACOS (Brad Pettit) -- do not use fdopen for Metrowerks on Mac (Brad Pettit)) -- add checks for gzputc and gzputc in example.c -- avoid warnings in gzio.c and deflate.c (Andreas Kleinert) -- use const for the CRC table (Ken Raeburn) -- fixed "make uninstall" for shared libraries -- use Tracev instead of Trace in infblock.c -- in example.c use correct compressed length for test_sync -- suppress +vnocompatwarnings in configure for HPUX (not always supported) - -Changes in 1.0.7 (20 Jan 1998) -- fix gzseek which was broken in write mode -- return error for gzseek to negative absolute position -- fix configure for Linux (Chun-Chung Chen) -- increase stack space for MSC (Tim Wegner) -- get_crc_table and inflateSyncPoint are EXPORTed (Gilles Vollant) -- define EXPORTVA for gzprintf (Gilles Vollant) -- added man page zlib.3 (Rick Rodgers) -- for contrib/untgz, fix makedir() and improve Makefile - -- check gzseek in write mode in example.c -- allocate extra buffer for seeks only if gzseek is actually called -- avoid signed/unsigned comparisons (Tim Wegner, Gilles Vollant) -- add inflateSyncPoint in zconf.h -- fix list of exported functions in nt/zlib.dnt and mdsos/zlib.def - -Changes in 1.0.6 (19 Jan 1998) -- add functions gzprintf, gzputc, gzgetc, gztell, gzeof, gzseek, gzrewind and - gzsetparams (thanks to Roland Giersig and Kevin Ruland for some of this code) -- Fix a deflate bug occurring only with compression level 0 (thanks to - Andy Buckler for finding this one). -- In minigzip, pass transparently also the first byte for .Z files. -- return Z_BUF_ERROR instead of Z_OK if output buffer full in uncompress() -- check Z_FINISH in inflate (thanks to Marc Schluper) -- Implement deflateCopy (thanks to Adam Costello) -- make static libraries by default in configure, add --shared option. -- move MSDOS or Windows specific files to directory msdos -- suppress the notion of partial flush to simplify the interface - (but the symbol Z_PARTIAL_FLUSH is kept for compatibility with 1.0.4) -- suppress history buffer provided by application to simplify the interface - (this feature was not implemented anyway in 1.0.4) -- next_in and avail_in must be initialized before calling inflateInit or - inflateInit2 -- add EXPORT in all exported functions (for Windows DLL) -- added Makefile.nt (thanks to Stephen Williams) -- added the unsupported "contrib" directory: - contrib/asm386/ by Gilles Vollant <info@winimage.com> - 386 asm code replacing longest_match(). - contrib/iostream/ by Kevin Ruland <kevin@rodin.wustl.edu> - A C++ I/O streams interface to the zlib gz* functions - contrib/iostream2/ by Tyge Løvset <Tyge.Lovset@cmr.no> - Another C++ I/O streams interface - contrib/untgz/ by "Pedro A. Aranda Guti\irrez" <paag@tid.es> - A very simple tar.gz file extractor using zlib - contrib/visual-basic.txt by Carlos Rios <c_rios@sonda.cl> - How to use compress(), uncompress() and the gz* functions from VB. -- pass params -f (filtered data), -h (huffman only), -1 to -9 (compression - level) in minigzip (thanks to Tom Lane) - -- use const for rommable constants in deflate -- added test for gzseek and gztell in example.c -- add undocumented function inflateSyncPoint() (hack for Paul Mackerras) -- add undocumented function zError to convert error code to string - (for Tim Smithers) -- Allow compilation of gzio with -DNO_DEFLATE to avoid the compression code. -- Use default memcpy for Symantec MSDOS compiler. -- Add EXPORT keyword for check_func (needed for Windows DLL) -- add current directory to LD_LIBRARY_PATH for "make test" -- create also a link for libz.so.1 -- added support for FUJITSU UXP/DS (thanks to Toshiaki Nomura) -- use $(SHAREDLIB) instead of libz.so in Makefile.in (for HPUX) -- added -soname for Linux in configure (Chun-Chung Chen, -- assign numbers to the exported functions in zlib.def (for Windows DLL) -- add advice in zlib.h for best usage of deflateSetDictionary -- work around compiler bug on Atari (cast Z_NULL in call of s->checkfn) -- allow compilation with ANSI keywords only enabled for TurboC in large model -- avoid "versionString"[0] (Borland bug) -- add NEED_DUMMY_RETURN for Borland -- use variable z_verbose for tracing in debug mode (L. Peter Deutsch). -- allow compilation with CC -- defined STDC for OS/2 (David Charlap) -- limit external names to 8 chars for MVS (Thomas Lund) -- in minigzip.c, use static buffers only for 16-bit systems -- fix suffix check for "minigzip -d foo.gz" -- do not return an error for the 2nd of two consecutive gzflush() (Felix Lee) -- use _fdopen instead of fdopen for MSC >= 6.0 (Thomas Fanslau) -- added makelcc.bat for lcc-win32 (Tom St Denis) -- in Makefile.dj2, use copy and del instead of install and rm (Frank Donahoe) -- Avoid expanded $Id$. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion. -- check for unistd.h in configure (for off_t) -- remove useless check parameter in inflate_blocks_free -- avoid useless assignment of s->check to itself in inflate_blocks_new -- do not flush twice in gzclose (thanks to Ken Raeburn) -- rename FOPEN as F_OPEN to avoid clash with /usr/include/sys/file.h -- use NO_ERRNO_H instead of enumeration of operating systems with errno.h -- work around buggy fclose on pipes for HP/UX -- support zlib DLL with BORLAND C++ 5.0 (thanks to Glenn Randers-Pehrson) -- fix configure if CC is already equal to gcc - -Changes in 1.0.5 (3 Jan 98) -- Fix inflate to terminate gracefully when fed corrupted or invalid data -- Use const for rommable constants in inflate -- Eliminate memory leaks on error conditions in inflate -- Removed some vestigial code in inflate -- Update web address in README - -Changes in 1.0.4 (24 Jul 96) -- In very rare conditions, deflate(s, Z_FINISH) could fail to produce an EOF - bit, so the decompressor could decompress all the correct data but went - on to attempt decompressing extra garbage data. This affected minigzip too. -- zlibVersion and gzerror return const char* (needed for DLL) -- port to RISCOS (no fdopen, no multiple dots, no unlink, no fileno) -- use z_error only for DEBUG (avoid problem with DLLs) - -Changes in 1.0.3 (2 Jul 96) -- use z_streamp instead of z_stream *, which is now a far pointer in MSDOS - small and medium models; this makes the library incompatible with previous - versions for these models. (No effect in large model or on other systems.) -- return OK instead of BUF_ERROR if previous deflate call returned with - avail_out as zero but there is nothing to do -- added memcmp for non STDC compilers -- define NO_DUMMY_DECL for more Mac compilers (.h files merged incorrectly) -- define __32BIT__ if __386__ or i386 is defined (pb. with Watcom and SCO) -- better check for 16-bit mode MSC (avoids problem with Symantec) - -Changes in 1.0.2 (23 May 96) -- added Windows DLL support -- added a function zlibVersion (for the DLL support) -- fixed declarations using Bytef in infutil.c (pb with MSDOS medium model) -- Bytef is define's instead of typedef'd only for Borland C -- avoid reading uninitialized memory in example.c -- mention in README that the zlib format is now RFC1950 -- updated Makefile.dj2 -- added algorithm.doc - -Changes in 1.0.1 (20 May 96) [1.0 skipped to avoid confusion] -- fix array overlay in deflate.c which sometimes caused bad compressed data -- fix inflate bug with empty stored block -- fix MSDOS medium model which was broken in 0.99 -- fix deflateParams() which could generated bad compressed data. -- Bytef is define'd instead of typedef'ed (work around Borland bug) -- added an INDEX file -- new makefiles for DJGPP (Makefile.dj2), 32-bit Borland (Makefile.b32), - Watcom (Makefile.wat), Amiga SAS/C (Makefile.sas) -- speed up adler32 for modern machines without auto-increment -- added -ansi for IRIX in configure -- static_init_done in trees.c is an int -- define unlink as delete for VMS -- fix configure for QNX -- add configure branch for SCO and HPUX -- avoid many warnings (unused variables, dead assignments, etc...) -- no fdopen for BeOS -- fix the Watcom fix for 32 bit mode (define FAR as empty) -- removed redefinition of Byte for MKWERKS -- work around an MWKERKS bug (incorrect merge of all .h files) - -Changes in 0.99 (27 Jan 96) -- allow preset dictionary shared between compressor and decompressor -- allow compression level 0 (no compression) -- add deflateParams in zlib.h: allow dynamic change of compression level - and compression strategy. -- test large buffers and deflateParams in example.c -- add optional "configure" to build zlib as a shared library -- suppress Makefile.qnx, use configure instead -- fixed deflate for 64-bit systems (detected on Cray) -- fixed inflate_blocks for 64-bit systems (detected on Alpha) -- declare Z_DEFLATED in zlib.h (possible parameter for deflateInit2) -- always return Z_BUF_ERROR when deflate() has nothing to do -- deflateInit and inflateInit are now macros to allow version checking -- prefix all global functions and types with z_ with -DZ_PREFIX -- make falloc completely reentrant (inftrees.c) -- fixed very unlikely race condition in ct_static_init -- free in reverse order of allocation to help memory manager -- use zlib-1.0/* instead of zlib/* inside the tar.gz -- make zlib warning-free with "gcc -O3 -Wall -Wwrite-strings -Wpointer-arith - -Wconversion -Wstrict-prototypes -Wmissing-prototypes" -- allow gzread on concatenated .gz files -- deflateEnd now returns Z_DATA_ERROR if it was premature -- deflate is finally (?) fully deterministic (no matches beyond end of input) -- Document Z_SYNC_FLUSH -- add uninstall in Makefile -- Check for __cpluplus in zlib.h -- Better test in ct_align for partial flush -- avoid harmless warnings for Borland C++ -- initialize hash_head in deflate.c -- avoid warning on fdopen (gzio.c) for HP cc -Aa -- include stdlib.h for STDC compilers -- include errno.h for Cray -- ignore error if ranlib doesn't exist -- call ranlib twice for NeXTSTEP -- use exec_prefix instead of prefix for libz.a -- renamed ct_* as _tr_* to avoid conflict with applications -- clear z->msg in inflateInit2 before any error return -- initialize opaque in example.c, gzio.c, deflate.c and inflate.c -- fixed typo in zconf.h (_GNUC__ => __GNUC__) -- check for WIN32 in zconf.h and zutil.c (avoid farmalloc in 32-bit mode) -- fix typo in Make_vms.com (f$trnlnm -> f$getsyi) -- in fcalloc, normalize pointer if size > 65520 bytes -- don't use special fcalloc for 32 bit Borland C++ -- use STDC instead of __GO32__ to avoid redeclaring exit, calloc, etc... -- use Z_BINARY instead of BINARY -- document that gzclose after gzdopen will close the file -- allow "a" as mode in gzopen. -- fix error checking in gzread -- allow skipping .gz extra-field on pipes -- added reference to Perl interface in README -- put the crc table in FAR data (I dislike more and more the medium model :) -- added get_crc_table -- added a dimension to all arrays (Borland C can't count). -- workaround Borland C bug in declaration of inflate_codes_new & inflate_fast -- guard against multiple inclusion of *.h (for precompiled header on Mac) -- Watcom C pretends to be Microsoft C small model even in 32 bit mode. -- don't use unsized arrays to avoid silly warnings by Visual C++: - warning C4746: 'inflate_mask' : unsized array treated as '__far' - (what's wrong with far data in far model?). -- define enum out of inflate_blocks_state to allow compilation with C++ - -Changes in 0.95 (16 Aug 95) -- fix MSDOS small and medium model (now easier to adapt to any compiler) -- inlined send_bits -- fix the final (:-) bug for deflate with flush (output was correct but - not completely flushed in rare occasions). -- default window size is same for compression and decompression - (it's now sufficient to set MAX_WBITS in zconf.h). -- voidp -> voidpf and voidnp -> voidp (for consistency with other - typedefs and because voidnp was not near in large model). - -Changes in 0.94 (13 Aug 95) -- support MSDOS medium model -- fix deflate with flush (could sometimes generate bad output) -- fix deflateReset (zlib header was incorrectly suppressed) -- added support for VMS -- allow a compression level in gzopen() -- gzflush now calls fflush -- For deflate with flush, flush even if no more input is provided. -- rename libgz.a as libz.a -- avoid complex expression in infcodes.c triggering Turbo C bug -- work around a problem with gcc on Alpha (in INSERT_STRING) -- don't use inline functions (problem with some gcc versions) -- allow renaming of Byte, uInt, etc... with #define. -- avoid warning about (unused) pointer before start of array in deflate.c -- avoid various warnings in gzio.c, example.c, infblock.c, adler32.c, zutil.c -- avoid reserved word 'new' in trees.c - -Changes in 0.93 (25 June 95) -- temporarily disable inline functions -- make deflate deterministic -- give enough lookahead for PARTIAL_FLUSH -- Set binary mode for stdin/stdout in minigzip.c for OS/2 -- don't even use signed char in inflate (not portable enough) -- fix inflate memory leak for segmented architectures - -Changes in 0.92 (3 May 95) -- don't assume that char is signed (problem on SGI) -- Clear bit buffer when starting a stored block -- no memcpy on Pyramid -- suppressed inftest.c -- optimized fill_window, put longest_match inline for gcc -- optimized inflate on stored blocks. -- untabify all sources to simplify patches - -Changes in 0.91 (2 May 95) -- Default MEM_LEVEL is 8 (not 9 for Unix) as documented in zlib.h -- Document the memory requirements in zconf.h -- added "make install" -- fix sync search logic in inflateSync -- deflate(Z_FULL_FLUSH) now works even if output buffer too short -- after inflateSync, don't scare people with just "lo world" -- added support for DJGPP - -Changes in 0.9 (1 May 95) -- don't assume that zalloc clears the allocated memory (the TurboC bug - was Mark's bug after all :) -- let again gzread copy uncompressed data unchanged (was working in 0.71) -- deflate(Z_FULL_FLUSH), inflateReset and inflateSync are now fully implemented -- added a test of inflateSync in example.c -- moved MAX_WBITS to zconf.h because users might want to change that. -- document explicitly that zalloc(64K) on MSDOS must return a normalized - pointer (zero offset) -- added Makefiles for Microsoft C, Turbo C, Borland C++ -- faster crc32() - -Changes in 0.8 (29 April 95) -- added fast inflate (inffast.c) -- deflate(Z_FINISH) now returns Z_STREAM_END when done. Warning: this - is incompatible with previous versions of zlib which returned Z_OK. -- work around a TurboC compiler bug (bad code for b << 0, see infutil.h) - (actually that was not a compiler bug, see 0.81 above) -- gzread no longer reads one extra byte in certain cases -- In gzio destroy(), don't reference a freed structure -- avoid many warnings for MSDOS -- avoid the ERROR symbol which is used by MS Windows - -Changes in 0.71 (14 April 95) -- Fixed more MSDOS compilation problems :( There is still a bug with - TurboC large model. - -Changes in 0.7 (14 April 95) -- Added full inflate support. -- Simplified the crc32() interface. The pre- and post-conditioning - (one's complement) is now done inside crc32(). WARNING: this is - incompatible with previous versions; see zlib.h for the new usage. - -Changes in 0.61 (12 April 95) -- workaround for a bug in TurboC. example and minigzip now work on MSDOS. - -Changes in 0.6 (11 April 95) -- added minigzip.c -- added gzdopen to reopen a file descriptor as gzFile -- added transparent reading of non-gziped files in gzread. -- fixed bug in gzread (don't read crc as data) -- fixed bug in destroy (gzio.c) (don't return Z_STREAM_END for gzclose). -- don't allocate big arrays in the stack (for MSDOS) -- fix some MSDOS compilation problems - -Changes in 0.5: -- do real compression in deflate.c. Z_PARTIAL_FLUSH is supported but - not yet Z_FULL_FLUSH. -- support decompression but only in a single step (forced Z_FINISH) -- added opaque object for zalloc and zfree. -- added deflateReset and inflateReset -- added a variable zlib_version for consistency checking. -- renamed the 'filter' parameter of deflateInit2 as 'strategy'. - Added Z_FILTERED and Z_HUFFMAN_ONLY constants. - -Changes in 0.4: -- avoid "zip" everywhere, use zlib instead of ziplib. -- suppress Z_BLOCK_FLUSH, interpret Z_PARTIAL_FLUSH as block flush - if compression method == 8. -- added adler32 and crc32 -- renamed deflateOptions as deflateInit2, call one or the other but not both -- added the method parameter for deflateInit2. -- added inflateInit2 -- simplied considerably deflateInit and inflateInit by not supporting - user-provided history buffer. This is supported only in deflateInit2 - and inflateInit2. - -Changes in 0.3: -- prefix all macro names with Z_ -- use Z_FINISH instead of deflateEnd to finish compression. -- added Z_HUFFMAN_ONLY -- added gzerror() diff --git a/platform/win32/msvc/external/zlib/FAQ b/platform/win32/msvc/external/zlib/FAQ deleted file mode 100644 index 99b7cf92e45..00000000000 --- a/platform/win32/msvc/external/zlib/FAQ +++ /dev/null @@ -1,368 +0,0 @@ - - Frequently Asked Questions about zlib - - -If your question is not there, please check the zlib home page -http://zlib.net/ which may have more recent information. -The lastest zlib FAQ is at http://zlib.net/zlib_faq.html - - - 1. Is zlib Y2K-compliant? - - Yes. zlib doesn't handle dates. - - 2. Where can I get a Windows DLL version? - - The zlib sources can be compiled without change to produce a DLL. See the - file win32/DLL_FAQ.txt in the zlib distribution. Pointers to the - precompiled DLL are found in the zlib web site at http://zlib.net/ . - - 3. Where can I get a Visual Basic interface to zlib? - - See - * http://marknelson.us/1997/01/01/zlib-engine/ - * win32/DLL_FAQ.txt in the zlib distribution - - 4. compress() returns Z_BUF_ERROR. - - Make sure that before the call of compress(), the length of the compressed - buffer is equal to the available size of the compressed buffer and not - zero. For Visual Basic, check that this parameter is passed by reference - ("as any"), not by value ("as long"). - - 5. deflate() or inflate() returns Z_BUF_ERROR. - - Before making the call, make sure that avail_in and avail_out are not zero. - When setting the parameter flush equal to Z_FINISH, also make sure that - avail_out is big enough to allow processing all pending input. Note that a - Z_BUF_ERROR is not fatal--another call to deflate() or inflate() can be - made with more input or output space. A Z_BUF_ERROR may in fact be - unavoidable depending on how the functions are used, since it is not - possible to tell whether or not there is more output pending when - strm.avail_out returns with zero. See http://zlib.net/zlib_how.html for a - heavily annotated example. - - 6. Where's the zlib documentation (man pages, etc.)? - - It's in zlib.h . Examples of zlib usage are in the files test/example.c - and test/minigzip.c, with more in examples/ . - - 7. Why don't you use GNU autoconf or libtool or ...? - - Because we would like to keep zlib as a very small and simple package. - zlib is rather portable and doesn't need much configuration. - - 8. I found a bug in zlib. - - Most of the time, such problems are due to an incorrect usage of zlib. - Please try to reproduce the problem with a small program and send the - corresponding source to us at zlib@gzip.org . Do not send multi-megabyte - data files without prior agreement. - - 9. Why do I get "undefined reference to gzputc"? - - If "make test" produces something like - - example.o(.text+0x154): undefined reference to `gzputc' - - check that you don't have old files libz.* in /usr/lib, /usr/local/lib or - /usr/X11R6/lib. Remove any old versions, then do "make install". - -10. I need a Delphi interface to zlib. - - See the contrib/delphi directory in the zlib distribution. - -11. Can zlib handle .zip archives? - - Not by itself, no. See the directory contrib/minizip in the zlib - distribution. - -12. Can zlib handle .Z files? - - No, sorry. You have to spawn an uncompress or gunzip subprocess, or adapt - the code of uncompress on your own. - -13. How can I make a Unix shared library? - - By default a shared (and a static) library is built for Unix. So: - - make distclean - ./configure - make - -14. How do I install a shared zlib library on Unix? - - After the above, then: - - make install - - However, many flavors of Unix come with a shared zlib already installed. - Before going to the trouble of compiling a shared version of zlib and - trying to install it, you may want to check if it's already there! If you - can #include <zlib.h>, it's there. The -lz option will probably link to - it. You can check the version at the top of zlib.h or with the - ZLIB_VERSION symbol defined in zlib.h . - -15. I have a question about OttoPDF. - - We are not the authors of OttoPDF. The real author is on the OttoPDF web - site: Joel Hainley, jhainley@myndkryme.com. - -16. Can zlib decode Flate data in an Adobe PDF file? - - Yes. See http://www.pdflib.com/ . To modify PDF forms, see - http://sourceforge.net/projects/acroformtool/ . - -17. Why am I getting this "register_frame_info not found" error on Solaris? - - After installing zlib 1.1.4 on Solaris 2.6, running applications using zlib - generates an error such as: - - ld.so.1: rpm: fatal: relocation error: file /usr/local/lib/libz.so: - symbol __register_frame_info: referenced symbol not found - - The symbol __register_frame_info is not part of zlib, it is generated by - the C compiler (cc or gcc). You must recompile applications using zlib - which have this problem. This problem is specific to Solaris. See - http://www.sunfreeware.com for Solaris versions of zlib and applications - using zlib. - -18. Why does gzip give an error on a file I make with compress/deflate? - - The compress and deflate functions produce data in the zlib format, which - is different and incompatible with the gzip format. The gz* functions in - zlib on the other hand use the gzip format. Both the zlib and gzip formats - use the same compressed data format internally, but have different headers - and trailers around the compressed data. - -19. Ok, so why are there two different formats? - - The gzip format was designed to retain the directory information about a - single file, such as the name and last modification date. The zlib format - on the other hand was designed for in-memory and communication channel - applications, and has a much more compact header and trailer and uses a - faster integrity check than gzip. - -20. Well that's nice, but how do I make a gzip file in memory? - - You can request that deflate write the gzip format instead of the zlib - format using deflateInit2(). You can also request that inflate decode the - gzip format using inflateInit2(). Read zlib.h for more details. - -21. Is zlib thread-safe? - - Yes. However any library routines that zlib uses and any application- - provided memory allocation routines must also be thread-safe. zlib's gz* - functions use stdio library routines, and most of zlib's functions use the - library memory allocation routines by default. zlib's *Init* functions - allow for the application to provide custom memory allocation routines. - - Of course, you should only operate on any given zlib or gzip stream from a - single thread at a time. - -22. Can I use zlib in my commercial application? - - Yes. Please read the license in zlib.h. - -23. Is zlib under the GNU license? - - No. Please read the license in zlib.h. - -24. The license says that altered source versions must be "plainly marked". So - what exactly do I need to do to meet that requirement? - - You need to change the ZLIB_VERSION and ZLIB_VERNUM #defines in zlib.h. In - particular, the final version number needs to be changed to "f", and an - identification string should be appended to ZLIB_VERSION. Version numbers - x.x.x.f are reserved for modifications to zlib by others than the zlib - maintainers. For example, if the version of the base zlib you are altering - is "1.2.3.4", then in zlib.h you should change ZLIB_VERNUM to 0x123f, and - ZLIB_VERSION to something like "1.2.3.f-zachary-mods-v3". You can also - update the version strings in deflate.c and inftrees.c. - - For altered source distributions, you should also note the origin and - nature of the changes in zlib.h, as well as in ChangeLog and README, along - with the dates of the alterations. The origin should include at least your - name (or your company's name), and an email address to contact for help or - issues with the library. - - Note that distributing a compiled zlib library along with zlib.h and - zconf.h is also a source distribution, and so you should change - ZLIB_VERSION and ZLIB_VERNUM and note the origin and nature of the changes - in zlib.h as you would for a full source distribution. - -25. Will zlib work on a big-endian or little-endian architecture, and can I - exchange compressed data between them? - - Yes and yes. - -26. Will zlib work on a 64-bit machine? - - Yes. It has been tested on 64-bit machines, and has no dependence on any - data types being limited to 32-bits in length. If you have any - difficulties, please provide a complete problem report to zlib@gzip.org - -27. Will zlib decompress data from the PKWare Data Compression Library? - - No. The PKWare DCL uses a completely different compressed data format than - does PKZIP and zlib. However, you can look in zlib's contrib/blast - directory for a possible solution to your problem. - -28. Can I access data randomly in a compressed stream? - - No, not without some preparation. If when compressing you periodically use - Z_FULL_FLUSH, carefully write all the pending data at those points, and - keep an index of those locations, then you can start decompression at those - points. You have to be careful to not use Z_FULL_FLUSH too often, since it - can significantly degrade compression. Alternatively, you can scan a - deflate stream once to generate an index, and then use that index for - random access. See examples/zran.c . - -29. Does zlib work on MVS, OS/390, CICS, etc.? - - It has in the past, but we have not heard of any recent evidence. There - were working ports of zlib 1.1.4 to MVS, but those links no longer work. - If you know of recent, successful applications of zlib on these operating - systems, please let us know. Thanks. - -30. Is there some simpler, easier to read version of inflate I can look at to - understand the deflate format? - - First off, you should read RFC 1951. Second, yes. Look in zlib's - contrib/puff directory. - -31. Does zlib infringe on any patents? - - As far as we know, no. In fact, that was originally the whole point behind - zlib. Look here for some more information: - - http://www.gzip.org/#faq11 - -32. Can zlib work with greater than 4 GB of data? - - Yes. inflate() and deflate() will process any amount of data correctly. - Each call of inflate() or deflate() is limited to input and output chunks - of the maximum value that can be stored in the compiler's "unsigned int" - type, but there is no limit to the number of chunks. Note however that the - strm.total_in and strm_total_out counters may be limited to 4 GB. These - counters are provided as a convenience and are not used internally by - inflate() or deflate(). The application can easily set up its own counters - updated after each call of inflate() or deflate() to count beyond 4 GB. - compress() and uncompress() may be limited to 4 GB, since they operate in a - single call. gzseek() and gztell() may be limited to 4 GB depending on how - zlib is compiled. See the zlibCompileFlags() function in zlib.h. - - The word "may" appears several times above since there is a 4 GB limit only - if the compiler's "long" type is 32 bits. If the compiler's "long" type is - 64 bits, then the limit is 16 exabytes. - -33. Does zlib have any security vulnerabilities? - - The only one that we are aware of is potentially in gzprintf(). If zlib is - compiled to use sprintf() or vsprintf(), then there is no protection - against a buffer overflow of an 8K string space (or other value as set by - gzbuffer()), other than the caller of gzprintf() assuring that the output - will not exceed 8K. On the other hand, if zlib is compiled to use - snprintf() or vsnprintf(), which should normally be the case, then there is - no vulnerability. The ./configure script will display warnings if an - insecure variation of sprintf() will be used by gzprintf(). Also the - zlibCompileFlags() function will return information on what variant of - sprintf() is used by gzprintf(). - - If you don't have snprintf() or vsnprintf() and would like one, you can - find a portable implementation here: - - http://www.ijs.si/software/snprintf/ - - Note that you should be using the most recent version of zlib. Versions - 1.1.3 and before were subject to a double-free vulnerability, and versions - 1.2.1 and 1.2.2 were subject to an access exception when decompressing - invalid compressed data. - -34. Is there a Java version of zlib? - - Probably what you want is to use zlib in Java. zlib is already included - as part of the Java SDK in the java.util.zip package. If you really want - a version of zlib written in the Java language, look on the zlib home - page for links: http://zlib.net/ . - -35. I get this or that compiler or source-code scanner warning when I crank it - up to maximally-pedantic. Can't you guys write proper code? - - Many years ago, we gave up attempting to avoid warnings on every compiler - in the universe. It just got to be a waste of time, and some compilers - were downright silly as well as contradicted each other. So now, we simply - make sure that the code always works. - -36. Valgrind (or some similar memory access checker) says that deflate is - performing a conditional jump that depends on an uninitialized value. - Isn't that a bug? - - No. That is intentional for performance reasons, and the output of deflate - is not affected. This only started showing up recently since zlib 1.2.x - uses malloc() by default for allocations, whereas earlier versions used - calloc(), which zeros out the allocated memory. Even though the code was - correct, versions 1.2.4 and later was changed to not stimulate these - checkers. - -37. Will zlib read the (insert any ancient or arcane format here) compressed - data format? - - Probably not. Look in the comp.compression FAQ for pointers to various - formats and associated software. - -38. How can I encrypt/decrypt zip files with zlib? - - zlib doesn't support encryption. The original PKZIP encryption is very - weak and can be broken with freely available programs. To get strong - encryption, use GnuPG, http://www.gnupg.org/ , which already includes zlib - compression. For PKZIP compatible "encryption", look at - http://www.info-zip.org/ - -39. What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings? - - "gzip" is the gzip format, and "deflate" is the zlib format. They should - probably have called the second one "zlib" instead to avoid confusion with - the raw deflate compressed data format. While the HTTP 1.1 RFC 2616 - correctly points to the zlib specification in RFC 1950 for the "deflate" - transfer encoding, there have been reports of servers and browsers that - incorrectly produce or expect raw deflate data per the deflate - specification in RFC 1951, most notably Microsoft. So even though the - "deflate" transfer encoding using the zlib format would be the more - efficient approach (and in fact exactly what the zlib format was designed - for), using the "gzip" transfer encoding is probably more reliable due to - an unfortunate choice of name on the part of the HTTP 1.1 authors. - - Bottom line: use the gzip format for HTTP 1.1 encoding. - -40. Does zlib support the new "Deflate64" format introduced by PKWare? - - No. PKWare has apparently decided to keep that format proprietary, since - they have not documented it as they have previous compression formats. In - any case, the compression improvements are so modest compared to other more - modern approaches, that it's not worth the effort to implement. - -41. I'm having a problem with the zip functions in zlib, can you help? - - There are no zip functions in zlib. You are probably using minizip by - Giles Vollant, which is found in the contrib directory of zlib. It is not - part of zlib. In fact none of the stuff in contrib is part of zlib. The - files in there are not supported by the zlib authors. You need to contact - the authors of the respective contribution for help. - -42. The match.asm code in contrib is under the GNU General Public License. - Since it's part of zlib, doesn't that mean that all of zlib falls under the - GNU GPL? - - No. The files in contrib are not part of zlib. They were contributed by - other authors and are provided as a convenience to the user within the zlib - distribution. Each item in contrib has its own license. - -43. Is zlib subject to export controls? What is its ECCN? - - zlib is not subject to export controls, and so is classified as EAR99. - -44. Can you please sign these lengthy legal documents and fax them back to us - so that we can use your software in our product? - - No. Go away. Shoo. diff --git a/platform/win32/msvc/external/zlib/INDEX b/platform/win32/msvc/external/zlib/INDEX deleted file mode 100644 index 2ba06412048..00000000000 --- a/platform/win32/msvc/external/zlib/INDEX +++ /dev/null @@ -1,68 +0,0 @@ -CMakeLists.txt cmake build file -ChangeLog history of changes -FAQ Frequently Asked Questions about zlib -INDEX this file -Makefile dummy Makefile that tells you to ./configure -Makefile.in template for Unix Makefile -README guess what -configure configure script for Unix -make_vms.com makefile for VMS -test/example.c zlib usages examples for build testing -test/minigzip.c minimal gzip-like functionality for build testing -test/infcover.c inf*.c code coverage for build coverage testing -treebuild.xml XML description of source file dependencies -zconf.h.cmakein zconf.h template for cmake -zconf.h.in zconf.h template for configure -zlib.3 Man page for zlib -zlib.3.pdf Man page in PDF format -zlib.map Linux symbol information -zlib.pc.in Template for pkg-config descriptor -zlib.pc.cmakein zlib.pc template for cmake -zlib2ansi perl script to convert source files for C++ compilation - -amiga/ makefiles for Amiga SAS C -as400/ makefiles for AS/400 -doc/ documentation for formats and algorithms -msdos/ makefiles for MSDOS -nintendods/ makefile for Nintendo DS -old/ makefiles for various architectures and zlib documentation - files that have not yet been updated for zlib 1.2.x -qnx/ makefiles for QNX -watcom/ makefiles for OpenWatcom -win32/ makefiles for Windows - - zlib public header files (required for library use): -zconf.h -zlib.h - - private source files used to build the zlib library: -adler32.c -compress.c -crc32.c -crc32.h -deflate.c -deflate.h -gzclose.c -gzguts.h -gzlib.c -gzread.c -gzwrite.c -infback.c -inffast.c -inffast.h -inffixed.h -inflate.c -inflate.h -inftrees.c -inftrees.h -trees.c -trees.h -uncompr.c -zutil.c -zutil.h - - source files for sample programs -See examples/README.examples - - unsupported contributions by third parties -See contrib/README.contrib diff --git a/platform/win32/msvc/external/zlib/Makefile.in b/platform/win32/msvc/external/zlib/Makefile.in deleted file mode 100644 index c61aa3008d4..00000000000 --- a/platform/win32/msvc/external/zlib/Makefile.in +++ /dev/null @@ -1,288 +0,0 @@ -# Makefile for zlib -# Copyright (C) 1995-2013 Jean-loup Gailly, Mark Adler -# For conditions of distribution and use, see copyright notice in zlib.h - -# To compile and test, type: -# ./configure; make test -# Normally configure builds both a static and a shared library. -# If you want to build just a static library, use: ./configure --static - -# To use the asm code, type: -# cp contrib/asm?86/match.S ./match.S -# make LOC=-DASMV OBJA=match.o - -# To install /usr/local/lib/libz.* and /usr/local/include/zlib.h, type: -# make install -# To install in $HOME instead of /usr/local, use: -# make install prefix=$HOME - -CC=cc - -CFLAGS=-O -#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7 -#CFLAGS=-g -DDEBUG -#CFLAGS=-O3 -Wall -Wwrite-strings -Wpointer-arith -Wconversion \ -# -Wstrict-prototypes -Wmissing-prototypes - -SFLAGS=-O -LDFLAGS= -TEST_LDFLAGS=-L. libz.a -LDSHARED=$(CC) -CPP=$(CC) -E - -STATICLIB=libz.a -SHAREDLIB=libz.so -SHAREDLIBV=libz.so.1.2.8 -SHAREDLIBM=libz.so.1 -LIBS=$(STATICLIB) $(SHAREDLIBV) - -AR=ar -ARFLAGS=rc -RANLIB=ranlib -LDCONFIG=ldconfig -LDSHAREDLIBC=-lc -TAR=tar -SHELL=/bin/sh -EXE= - -prefix = /usr/local -exec_prefix = ${prefix} -libdir = ${exec_prefix}/lib -sharedlibdir = ${libdir} -includedir = ${prefix}/include -mandir = ${prefix}/share/man -man3dir = ${mandir}/man3 -pkgconfigdir = ${libdir}/pkgconfig - -OBJZ = adler32.o crc32.o deflate.o infback.o inffast.o inflate.o inftrees.o trees.o zutil.o -OBJG = compress.o uncompr.o gzclose.o gzlib.o gzread.o gzwrite.o -OBJC = $(OBJZ) $(OBJG) - -PIC_OBJZ = adler32.lo crc32.lo deflate.lo infback.lo inffast.lo inflate.lo inftrees.lo trees.lo zutil.lo -PIC_OBJG = compress.lo uncompr.lo gzclose.lo gzlib.lo gzread.lo gzwrite.lo -PIC_OBJC = $(PIC_OBJZ) $(PIC_OBJG) - -# to use the asm code: make OBJA=match.o, PIC_OBJA=match.lo -OBJA = -PIC_OBJA = - -OBJS = $(OBJC) $(OBJA) - -PIC_OBJS = $(PIC_OBJC) $(PIC_OBJA) - -all: static shared - -static: example$(EXE) minigzip$(EXE) - -shared: examplesh$(EXE) minigzipsh$(EXE) - -all64: example64$(EXE) minigzip64$(EXE) - -check: test - -test: all teststatic testshared - -teststatic: static - @TMPST=tmpst_$$; \ - if echo hello world | ./minigzip | ./minigzip -d && ./example $$TMPST ; then \ - echo ' *** zlib test OK ***'; \ - else \ - echo ' *** zlib test FAILED ***'; false; \ - fi; \ - rm -f $$TMPST - -testshared: shared - @LD_LIBRARY_PATH=`pwd`:$(LD_LIBRARY_PATH) ; export LD_LIBRARY_PATH; \ - LD_LIBRARYN32_PATH=`pwd`:$(LD_LIBRARYN32_PATH) ; export LD_LIBRARYN32_PATH; \ - DYLD_LIBRARY_PATH=`pwd`:$(DYLD_LIBRARY_PATH) ; export DYLD_LIBRARY_PATH; \ - SHLIB_PATH=`pwd`:$(SHLIB_PATH) ; export SHLIB_PATH; \ - TMPSH=tmpsh_$$; \ - if echo hello world | ./minigzipsh | ./minigzipsh -d && ./examplesh $$TMPSH; then \ - echo ' *** zlib shared test OK ***'; \ - else \ - echo ' *** zlib shared test FAILED ***'; false; \ - fi; \ - rm -f $$TMPSH - -test64: all64 - @TMP64=tmp64_$$; \ - if echo hello world | ./minigzip64 | ./minigzip64 -d && ./example64 $$TMP64; then \ - echo ' *** zlib 64-bit test OK ***'; \ - else \ - echo ' *** zlib 64-bit test FAILED ***'; false; \ - fi; \ - rm -f $$TMP64 - -infcover.o: test/infcover.c zlib.h zconf.h - $(CC) $(CFLAGS) -I. -c -o $@ test/infcover.c - -infcover: infcover.o libz.a - $(CC) $(CFLAGS) -o $@ infcover.o libz.a - -cover: infcover - rm -f *.gcda - ./infcover - gcov inf*.c - -libz.a: $(OBJS) - $(AR) $(ARFLAGS) $@ $(OBJS) - -@ ($(RANLIB) $@ || true) >/dev/null 2>&1 - -match.o: match.S - $(CPP) match.S > _match.s - $(CC) -c _match.s - mv _match.o match.o - rm -f _match.s - -match.lo: match.S - $(CPP) match.S > _match.s - $(CC) -c -fPIC _match.s - mv _match.o match.lo - rm -f _match.s - -example.o: test/example.c zlib.h zconf.h - $(CC) $(CFLAGS) -I. -c -o $@ test/example.c - -minigzip.o: test/minigzip.c zlib.h zconf.h - $(CC) $(CFLAGS) -I. -c -o $@ test/minigzip.c - -example64.o: test/example.c zlib.h zconf.h - $(CC) $(CFLAGS) -I. -D_FILE_OFFSET_BITS=64 -c -o $@ test/example.c - -minigzip64.o: test/minigzip.c zlib.h zconf.h - $(CC) $(CFLAGS) -I. -D_FILE_OFFSET_BITS=64 -c -o $@ test/minigzip.c - -.SUFFIXES: .lo - -.c.lo: - -@mkdir objs 2>/dev/null || test -d objs - $(CC) $(SFLAGS) -DPIC -c -o objs/$*.o $< - -@mv objs/$*.o $@ - -placebo $(SHAREDLIBV): $(PIC_OBJS) libz.a - $(LDSHARED) $(SFLAGS) -o $@ $(PIC_OBJS) $(LDSHAREDLIBC) $(LDFLAGS) - rm -f $(SHAREDLIB) $(SHAREDLIBM) - ln -s $@ $(SHAREDLIB) - ln -s $@ $(SHAREDLIBM) - -@rmdir objs - -example$(EXE): example.o $(STATICLIB) - $(CC) $(CFLAGS) -o $@ example.o $(TEST_LDFLAGS) - -minigzip$(EXE): minigzip.o $(STATICLIB) - $(CC) $(CFLAGS) -o $@ minigzip.o $(TEST_LDFLAGS) - -examplesh$(EXE): example.o $(SHAREDLIBV) - $(CC) $(CFLAGS) -o $@ example.o -L. $(SHAREDLIBV) - -minigzipsh$(EXE): minigzip.o $(SHAREDLIBV) - $(CC) $(CFLAGS) -o $@ minigzip.o -L. $(SHAREDLIBV) - -example64$(EXE): example64.o $(STATICLIB) - $(CC) $(CFLAGS) -o $@ example64.o $(TEST_LDFLAGS) - -minigzip64$(EXE): minigzip64.o $(STATICLIB) - $(CC) $(CFLAGS) -o $@ minigzip64.o $(TEST_LDFLAGS) - -install-libs: $(LIBS) - -@if [ ! -d $(DESTDIR)$(exec_prefix) ]; then mkdir -p $(DESTDIR)$(exec_prefix); fi - -@if [ ! -d $(DESTDIR)$(libdir) ]; then mkdir -p $(DESTDIR)$(libdir); fi - -@if [ ! -d $(DESTDIR)$(sharedlibdir) ]; then mkdir -p $(DESTDIR)$(sharedlibdir); fi - -@if [ ! -d $(DESTDIR)$(man3dir) ]; then mkdir -p $(DESTDIR)$(man3dir); fi - -@if [ ! -d $(DESTDIR)$(pkgconfigdir) ]; then mkdir -p $(DESTDIR)$(pkgconfigdir); fi - cp $(STATICLIB) $(DESTDIR)$(libdir) - chmod 644 $(DESTDIR)$(libdir)/$(STATICLIB) - -@($(RANLIB) $(DESTDIR)$(libdir)/libz.a || true) >/dev/null 2>&1 - -@if test -n "$(SHAREDLIBV)"; then \ - cp $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir); \ - echo "cp $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)"; \ - chmod 755 $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBV); \ - echo "chmod 755 $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBV)"; \ - rm -f $(DESTDIR)$(sharedlibdir)/$(SHAREDLIB) $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBM); \ - ln -s $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)/$(SHAREDLIB); \ - ln -s $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBM); \ - ($(LDCONFIG) || true) >/dev/null 2>&1; \ - fi - cp zlib.3 $(DESTDIR)$(man3dir) - chmod 644 $(DESTDIR)$(man3dir)/zlib.3 - cp zlib.pc $(DESTDIR)$(pkgconfigdir) - chmod 644 $(DESTDIR)$(pkgconfigdir)/zlib.pc -# The ranlib in install is needed on NeXTSTEP which checks file times -# ldconfig is for Linux - -install: install-libs - -@if [ ! -d $(DESTDIR)$(includedir) ]; then mkdir -p $(DESTDIR)$(includedir); fi - cp zlib.h zconf.h $(DESTDIR)$(includedir) - chmod 644 $(DESTDIR)$(includedir)/zlib.h $(DESTDIR)$(includedir)/zconf.h - -uninstall: - cd $(DESTDIR)$(includedir) && rm -f zlib.h zconf.h - cd $(DESTDIR)$(libdir) && rm -f libz.a; \ - if test -n "$(SHAREDLIBV)" -a -f $(SHAREDLIBV); then \ - rm -f $(SHAREDLIBV) $(SHAREDLIB) $(SHAREDLIBM); \ - fi - cd $(DESTDIR)$(man3dir) && rm -f zlib.3 - cd $(DESTDIR)$(pkgconfigdir) && rm -f zlib.pc - -docs: zlib.3.pdf - -zlib.3.pdf: zlib.3 - groff -mandoc -f H -T ps zlib.3 | ps2pdf - zlib.3.pdf - -zconf.h.cmakein: zconf.h.in - -@ TEMPFILE=zconfh_$$; \ - echo "/#define ZCONF_H/ a\\\\\n#cmakedefine Z_PREFIX\\\\\n#cmakedefine Z_HAVE_UNISTD_H\n" >> $$TEMPFILE &&\ - sed -f $$TEMPFILE zconf.h.in > zconf.h.cmakein &&\ - touch -r zconf.h.in zconf.h.cmakein &&\ - rm $$TEMPFILE - -zconf: zconf.h.in - cp -p zconf.h.in zconf.h - -mostlyclean: clean -clean: - rm -f *.o *.lo *~ \ - example$(EXE) minigzip$(EXE) examplesh$(EXE) minigzipsh$(EXE) \ - example64$(EXE) minigzip64$(EXE) \ - infcover \ - libz.* foo.gz so_locations \ - _match.s maketree contrib/infback9/*.o - rm -rf objs - rm -f *.gcda *.gcno *.gcov - rm -f contrib/infback9/*.gcda contrib/infback9/*.gcno contrib/infback9/*.gcov - -maintainer-clean: distclean -distclean: clean zconf zconf.h.cmakein docs - rm -f Makefile zlib.pc configure.log - -@rm -f .DS_Store - -@printf 'all:\n\t-@echo "Please use ./configure first. Thank you."\n' > Makefile - -@printf '\ndistclean:\n\tmake -f Makefile.in distclean\n' >> Makefile - -@touch -r Makefile.in Makefile - -tags: - etags *.[ch] - -depend: - makedepend -- $(CFLAGS) -- *.[ch] - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -adler32.o zutil.o: zutil.h zlib.h zconf.h -gzclose.o gzlib.o gzread.o gzwrite.o: zlib.h zconf.h gzguts.h -compress.o example.o minigzip.o uncompr.o: zlib.h zconf.h -crc32.o: zutil.h zlib.h zconf.h crc32.h -deflate.o: deflate.h zutil.h zlib.h zconf.h -infback.o inflate.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h inffixed.h -inffast.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h -inftrees.o: zutil.h zlib.h zconf.h inftrees.h -trees.o: deflate.h zutil.h zlib.h zconf.h trees.h - -adler32.lo zutil.lo: zutil.h zlib.h zconf.h -gzclose.lo gzlib.lo gzread.lo gzwrite.lo: zlib.h zconf.h gzguts.h -compress.lo example.lo minigzip.lo uncompr.lo: zlib.h zconf.h -crc32.lo: zutil.h zlib.h zconf.h crc32.h -deflate.lo: deflate.h zutil.h zlib.h zconf.h -infback.lo inflate.lo: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h inffixed.h -inffast.lo: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h -inftrees.lo: zutil.h zlib.h zconf.h inftrees.h -trees.lo: deflate.h zutil.h zlib.h zconf.h trees.h diff --git a/platform/win32/msvc/external/zlib/README b/platform/win32/msvc/external/zlib/README deleted file mode 100644 index 5ca9d127eda..00000000000 --- a/platform/win32/msvc/external/zlib/README +++ /dev/null @@ -1,115 +0,0 @@ -ZLIB DATA COMPRESSION LIBRARY - -zlib 1.2.8 is a general purpose data compression library. All the code is -thread safe. The data format used by the zlib library is described by RFCs -(Request for Comments) 1950 to 1952 in the files -http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and -rfc1952 (gzip format). - -All functions of the compression library are documented in the file zlib.h -(volunteer to write man pages welcome, contact zlib@gzip.org). A usage example -of the library is given in the file test/example.c which also tests that -the library is working correctly. Another example is given in the file -test/minigzip.c. The compression library itself is composed of all source -files in the root directory. - -To compile all files and run the test program, follow the instructions given at -the top of Makefile.in. In short "./configure; make test", and if that goes -well, "make install" should work for most flavors of Unix. For Windows, use -one of the special makefiles in win32/ or contrib/vstudio/ . For VMS, use -make_vms.com. - -Questions about zlib should be sent to <zlib@gzip.org>, or to Gilles Vollant -<info@winimage.com> for the Windows DLL version. The zlib home page is -http://zlib.net/ . Before reporting a problem, please check this site to -verify that you have the latest version of zlib; otherwise get the latest -version and check whether the problem still exists or not. - -PLEASE read the zlib FAQ http://zlib.net/zlib_faq.html before asking for help. - -Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan. 1997 -issue of Dr. Dobb's Journal; a copy of the article is available at -http://marknelson.us/1997/01/01/zlib-engine/ . - -The changes made in version 1.2.8 are documented in the file ChangeLog. - -Unsupported third party contributions are provided in directory contrib/ . - -zlib is available in Java using the java.util.zip package, documented at -http://java.sun.com/developer/technicalArticles/Programming/compression/ . - -A Perl interface to zlib written by Paul Marquess <pmqs@cpan.org> is available -at CPAN (Comprehensive Perl Archive Network) sites, including -http://search.cpan.org/~pmqs/IO-Compress-Zlib/ . - -A Python interface to zlib written by A.M. Kuchling <amk@amk.ca> is -available in Python 1.5 and later versions, see -http://docs.python.org/library/zlib.html . - -zlib is built into tcl: http://wiki.tcl.tk/4610 . - -An experimental package to read and write files in .zip format, written on top -of zlib by Gilles Vollant <info@winimage.com>, is available in the -contrib/minizip directory of zlib. - - -Notes for some targets: - -- For Windows DLL versions, please see win32/DLL_FAQ.txt - -- For 64-bit Irix, deflate.c must be compiled without any optimization. With - -O, one libpng test fails. The test works in 32 bit mode (with the -n32 - compiler flag). The compiler bug has been reported to SGI. - -- zlib doesn't work with gcc 2.6.3 on a DEC 3000/300LX under OSF/1 2.1 it works - when compiled with cc. - -- On Digital Unix 4.0D (formely OSF/1) on AlphaServer, the cc option -std1 is - necessary to get gzprintf working correctly. This is done by configure. - -- zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works with - other compilers. Use "make test" to check your compiler. - -- gzdopen is not supported on RISCOS or BEOS. - -- For PalmOs, see http://palmzlib.sourceforge.net/ - - -Acknowledgments: - - The deflate format used by zlib was defined by Phil Katz. The deflate and - zlib specifications were written by L. Peter Deutsch. Thanks to all the - people who reported problems and suggested various improvements in zlib; they - are too numerous to cite here. - -Copyright notice: - - (C) 1995-2013 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - -If you use the zlib library in a product, we would appreciate *not* receiving -lengthy legal documents to sign. The sources are provided for free but without -warranty of any kind. The library has been entirely written by Jean-loup -Gailly and Mark Adler; it does not include third-party code. - -If you redistribute modified sources, we would appreciate that you include in -the file ChangeLog history information documenting your changes. Please read -the FAQ for more information on the distribution of modified source versions. diff --git a/platform/win32/msvc/external/zlib/adler32.c b/platform/win32/msvc/external/zlib/adler32.c deleted file mode 100644 index a868f073d8a..00000000000 --- a/platform/win32/msvc/external/zlib/adler32.c +++ /dev/null @@ -1,179 +0,0 @@ -/* adler32.c -- compute the Adler-32 checksum of a data stream - * Copyright (C) 1995-2011 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#include "zutil.h" - -#define local static - -local uLong adler32_combine_ OF((uLong adler1, uLong adler2, z_off64_t len2)); - -#define BASE 65521 /* largest prime smaller than 65536 */ -#define NMAX 5552 -/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */ - -#define DO1(buf,i) {adler += (buf)[i]; sum2 += adler;} -#define DO2(buf,i) DO1(buf,i); DO1(buf,i+1); -#define DO4(buf,i) DO2(buf,i); DO2(buf,i+2); -#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4); -#define DO16(buf) DO8(buf,0); DO8(buf,8); - -/* use NO_DIVIDE if your processor does not do division in hardware -- - try it both ways to see which is faster */ -#ifdef NO_DIVIDE -/* note that this assumes BASE is 65521, where 65536 % 65521 == 15 - (thank you to John Reiser for pointing this out) */ -# define CHOP(a) \ - do { \ - unsigned long tmp = a >> 16; \ - a &= 0xffffUL; \ - a += (tmp << 4) - tmp; \ - } while (0) -# define MOD28(a) \ - do { \ - CHOP(a); \ - if (a >= BASE) a -= BASE; \ - } while (0) -# define MOD(a) \ - do { \ - CHOP(a); \ - MOD28(a); \ - } while (0) -# define MOD63(a) \ - do { /* this assumes a is not negative */ \ - z_off64_t tmp = a >> 32; \ - a &= 0xffffffffL; \ - a += (tmp << 8) - (tmp << 5) + tmp; \ - tmp = a >> 16; \ - a &= 0xffffL; \ - a += (tmp << 4) - tmp; \ - tmp = a >> 16; \ - a &= 0xffffL; \ - a += (tmp << 4) - tmp; \ - if (a >= BASE) a -= BASE; \ - } while (0) -#else -# define MOD(a) a %= BASE -# define MOD28(a) a %= BASE -# define MOD63(a) a %= BASE -#endif - -/* ========================================================================= */ -uLong ZEXPORT adler32(adler, buf, len) - uLong adler; - const Bytef *buf; - uInt len; -{ - unsigned long sum2; - unsigned n; - - /* split Adler-32 into component sums */ - sum2 = (adler >> 16) & 0xffff; - adler &= 0xffff; - - /* in case user likes doing a byte at a time, keep it fast */ - if (len == 1) { - adler += buf[0]; - if (adler >= BASE) - adler -= BASE; - sum2 += adler; - if (sum2 >= BASE) - sum2 -= BASE; - return adler | (sum2 << 16); - } - - /* initial Adler-32 value (deferred check for len == 1 speed) */ - if (buf == Z_NULL) - return 1L; - - /* in case short lengths are provided, keep it somewhat fast */ - if (len < 16) { - while (len--) { - adler += *buf++; - sum2 += adler; - } - if (adler >= BASE) - adler -= BASE; - MOD28(sum2); /* only added so many BASE's */ - return adler | (sum2 << 16); - } - - /* do length NMAX blocks -- requires just one modulo operation */ - while (len >= NMAX) { - len -= NMAX; - n = NMAX / 16; /* NMAX is divisible by 16 */ - do { - DO16(buf); /* 16 sums unrolled */ - buf += 16; - } while (--n); - MOD(adler); - MOD(sum2); - } - - /* do remaining bytes (less than NMAX, still just one modulo) */ - if (len) { /* avoid modulos if none remaining */ - while (len >= 16) { - len -= 16; - DO16(buf); - buf += 16; - } - while (len--) { - adler += *buf++; - sum2 += adler; - } - MOD(adler); - MOD(sum2); - } - - /* return recombined sums */ - return adler | (sum2 << 16); -} - -/* ========================================================================= */ -local uLong adler32_combine_(adler1, adler2, len2) - uLong adler1; - uLong adler2; - z_off64_t len2; -{ - unsigned long sum1; - unsigned long sum2; - unsigned rem; - - /* for negative len, return invalid adler32 as a clue for debugging */ - if (len2 < 0) - return 0xffffffffUL; - - /* the derivation of this formula is left as an exercise for the reader */ - MOD63(len2); /* assumes len2 >= 0 */ - rem = (unsigned)len2; - sum1 = adler1 & 0xffff; - sum2 = rem * sum1; - MOD(sum2); - sum1 += (adler2 & 0xffff) + BASE - 1; - sum2 += ((adler1 >> 16) & 0xffff) + ((adler2 >> 16) & 0xffff) + BASE - rem; - if (sum1 >= BASE) sum1 -= BASE; - if (sum1 >= BASE) sum1 -= BASE; - if (sum2 >= (BASE << 1)) sum2 -= (BASE << 1); - if (sum2 >= BASE) sum2 -= BASE; - return sum1 | (sum2 << 16); -} - -/* ========================================================================= */ -uLong ZEXPORT adler32_combine(adler1, adler2, len2) - uLong adler1; - uLong adler2; - z_off_t len2; -{ - return adler32_combine_(adler1, adler2, len2); -} - -uLong ZEXPORT adler32_combine64(adler1, adler2, len2) - uLong adler1; - uLong adler2; - z_off64_t len2; -{ - return adler32_combine_(adler1, adler2, len2); -} diff --git a/platform/win32/msvc/external/zlib/amiga/Makefile.pup b/platform/win32/msvc/external/zlib/amiga/Makefile.pup deleted file mode 100644 index 8940c120fbb..00000000000 --- a/platform/win32/msvc/external/zlib/amiga/Makefile.pup +++ /dev/null @@ -1,69 +0,0 @@ -# Amiga powerUP (TM) Makefile -# makefile for libpng and SAS C V6.58/7.00 PPC compiler -# Copyright (C) 1998 by Andreas R. Kleinert - -LIBNAME = libzip.a - -CC = scppc -CFLAGS = NOSTKCHK NOSINT OPTIMIZE OPTGO OPTPEEP OPTINLOCAL OPTINL \ - OPTLOOP OPTRDEP=8 OPTDEP=8 OPTCOMP=8 NOVER -AR = ppc-amigaos-ar cr -RANLIB = ppc-amigaos-ranlib -LD = ppc-amigaos-ld -r -LDFLAGS = -o -LDLIBS = LIB:scppc.a LIB:end.o -RM = delete quiet - -OBJS = adler32.o compress.o crc32.o gzclose.o gzlib.o gzread.o gzwrite.o \ - uncompr.o deflate.o trees.o zutil.o inflate.o infback.o inftrees.o inffast.o - -TEST_OBJS = example.o minigzip.o - -all: example minigzip - -check: test -test: all - example - echo hello world | minigzip | minigzip -d - -$(LIBNAME): $(OBJS) - $(AR) $@ $(OBJS) - -$(RANLIB) $@ - -example: example.o $(LIBNAME) - $(LD) $(LDFLAGS) $@ LIB:c_ppc.o $@.o $(LIBNAME) $(LDLIBS) - -minigzip: minigzip.o $(LIBNAME) - $(LD) $(LDFLAGS) $@ LIB:c_ppc.o $@.o $(LIBNAME) $(LDLIBS) - -mostlyclean: clean -clean: - $(RM) *.o example minigzip $(LIBNAME) foo.gz - -zip: - zip -ul9 zlib README ChangeLog Makefile Make????.??? Makefile.?? \ - descrip.mms *.[ch] - -tgz: - cd ..; tar cfz zlib/zlib.tgz zlib/README zlib/ChangeLog zlib/Makefile \ - zlib/Make????.??? zlib/Makefile.?? zlib/descrip.mms zlib/*.[ch] - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -adler32.o: zlib.h zconf.h -compress.o: zlib.h zconf.h -crc32.o: crc32.h zlib.h zconf.h -deflate.o: deflate.h zutil.h zlib.h zconf.h -example.o: zlib.h zconf.h -gzclose.o: zlib.h zconf.h gzguts.h -gzlib.o: zlib.h zconf.h gzguts.h -gzread.o: zlib.h zconf.h gzguts.h -gzwrite.o: zlib.h zconf.h gzguts.h -inffast.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h -inflate.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h -infback.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h -inftrees.o: zutil.h zlib.h zconf.h inftrees.h -minigzip.o: zlib.h zconf.h -trees.o: deflate.h zutil.h zlib.h zconf.h trees.h -uncompr.o: zlib.h zconf.h -zutil.o: zutil.h zlib.h zconf.h diff --git a/platform/win32/msvc/external/zlib/amiga/Makefile.sas b/platform/win32/msvc/external/zlib/amiga/Makefile.sas deleted file mode 100644 index 749e2915271..00000000000 --- a/platform/win32/msvc/external/zlib/amiga/Makefile.sas +++ /dev/null @@ -1,68 +0,0 @@ -# SMakefile for zlib -# Modified from the standard UNIX Makefile Copyright Jean-loup Gailly -# Osma Ahvenlampi <Osma.Ahvenlampi@hut.fi> -# Amiga, SAS/C 6.56 & Smake - -CC=sc -CFLAGS=OPT -#CFLAGS=OPT CPU=68030 -#CFLAGS=DEBUG=LINE -LDFLAGS=LIB z.lib - -SCOPTIONS=OPTSCHED OPTINLINE OPTALIAS OPTTIME OPTINLOCAL STRMERGE \ - NOICONS PARMS=BOTH NOSTACKCHECK UTILLIB NOVERSION ERRORREXX \ - DEF=POSTINC - -OBJS = adler32.o compress.o crc32.o gzclose.o gzlib.o gzread.o gzwrite.o \ - uncompr.o deflate.o trees.o zutil.o inflate.o infback.o inftrees.o inffast.o - -TEST_OBJS = example.o minigzip.o - -all: SCOPTIONS example minigzip - -check: test -test: all - example - echo hello world | minigzip | minigzip -d - -install: z.lib - copy clone zlib.h zconf.h INCLUDE: - copy clone z.lib LIB: - -z.lib: $(OBJS) - oml z.lib r $(OBJS) - -example: example.o z.lib - $(CC) $(CFLAGS) LINK TO $@ example.o $(LDFLAGS) - -minigzip: minigzip.o z.lib - $(CC) $(CFLAGS) LINK TO $@ minigzip.o $(LDFLAGS) - -mostlyclean: clean -clean: - -delete force quiet example minigzip *.o z.lib foo.gz *.lnk SCOPTIONS - -SCOPTIONS: Makefile.sas - copy to $@ <from < -$(SCOPTIONS) -< - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -adler32.o: zlib.h zconf.h -compress.o: zlib.h zconf.h -crc32.o: crc32.h zlib.h zconf.h -deflate.o: deflate.h zutil.h zlib.h zconf.h -example.o: zlib.h zconf.h -gzclose.o: zlib.h zconf.h gzguts.h -gzlib.o: zlib.h zconf.h gzguts.h -gzread.o: zlib.h zconf.h gzguts.h -gzwrite.o: zlib.h zconf.h gzguts.h -inffast.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h -inflate.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h -infback.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h -inftrees.o: zutil.h zlib.h zconf.h inftrees.h -minigzip.o: zlib.h zconf.h -trees.o: deflate.h zutil.h zlib.h zconf.h trees.h -uncompr.o: zlib.h zconf.h -zutil.o: zutil.h zlib.h zconf.h diff --git a/platform/win32/msvc/external/zlib/as400/bndsrc b/platform/win32/msvc/external/zlib/as400/bndsrc deleted file mode 100644 index 98814fd4c14..00000000000 --- a/platform/win32/msvc/external/zlib/as400/bndsrc +++ /dev/null @@ -1,215 +0,0 @@ -STRPGMEXP PGMLVL(*CURRENT) SIGNATURE('ZLIB') - -/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ -/* Version 1.1.3 entry points. */ -/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ - -/********************************************************************/ -/* *MODULE ADLER32 ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("adler32") - -/********************************************************************/ -/* *MODULE COMPRESS ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("compress") - EXPORT SYMBOL("compress2") - -/********************************************************************/ -/* *MODULE CRC32 ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("crc32") - EXPORT SYMBOL("get_crc_table") - -/********************************************************************/ -/* *MODULE DEFLATE ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("deflate") - EXPORT SYMBOL("deflateEnd") - EXPORT SYMBOL("deflateSetDictionary") - EXPORT SYMBOL("deflateCopy") - EXPORT SYMBOL("deflateReset") - EXPORT SYMBOL("deflateParams") - EXPORT SYMBOL("deflatePrime") - EXPORT SYMBOL("deflateInit_") - EXPORT SYMBOL("deflateInit2_") - -/********************************************************************/ -/* *MODULE GZIO ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("gzopen") - EXPORT SYMBOL("gzdopen") - EXPORT SYMBOL("gzsetparams") - EXPORT SYMBOL("gzread") - EXPORT SYMBOL("gzwrite") - EXPORT SYMBOL("gzprintf") - EXPORT SYMBOL("gzputs") - EXPORT SYMBOL("gzgets") - EXPORT SYMBOL("gzputc") - EXPORT SYMBOL("gzgetc") - EXPORT SYMBOL("gzflush") - EXPORT SYMBOL("gzseek") - EXPORT SYMBOL("gzrewind") - EXPORT SYMBOL("gztell") - EXPORT SYMBOL("gzeof") - EXPORT SYMBOL("gzclose") - EXPORT SYMBOL("gzerror") - -/********************************************************************/ -/* *MODULE INFLATE ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("inflate") - EXPORT SYMBOL("inflateEnd") - EXPORT SYMBOL("inflateSetDictionary") - EXPORT SYMBOL("inflateSync") - EXPORT SYMBOL("inflateReset") - EXPORT SYMBOL("inflateInit_") - EXPORT SYMBOL("inflateInit2_") - EXPORT SYMBOL("inflateSyncPoint") - -/********************************************************************/ -/* *MODULE UNCOMPR ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("uncompress") - -/********************************************************************/ -/* *MODULE ZUTIL ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("zlibVersion") - EXPORT SYMBOL("zError") - -/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ -/* Version 1.2.1 additional entry points. */ -/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ - -/********************************************************************/ -/* *MODULE COMPRESS ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("compressBound") - -/********************************************************************/ -/* *MODULE DEFLATE ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("deflateBound") - -/********************************************************************/ -/* *MODULE GZIO ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("gzungetc") - EXPORT SYMBOL("gzclearerr") - -/********************************************************************/ -/* *MODULE INFBACK ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("inflateBack") - EXPORT SYMBOL("inflateBackEnd") - EXPORT SYMBOL("inflateBackInit_") - -/********************************************************************/ -/* *MODULE INFLATE ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("inflateCopy") - -/********************************************************************/ -/* *MODULE ZUTIL ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("zlibCompileFlags") - -/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ -/* Version 1.2.5 additional entry points. */ -/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ - -/********************************************************************/ -/* *MODULE ADLER32 ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("adler32_combine") - EXPORT SYMBOL("adler32_combine64") - -/********************************************************************/ -/* *MODULE CRC32 ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("crc32_combine") - EXPORT SYMBOL("crc32_combine64") - -/********************************************************************/ -/* *MODULE GZLIB ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("gzbuffer") - EXPORT SYMBOL("gzoffset") - EXPORT SYMBOL("gzoffset64") - EXPORT SYMBOL("gzopen64") - EXPORT SYMBOL("gzseek64") - EXPORT SYMBOL("gztell64") - -/********************************************************************/ -/* *MODULE GZREAD ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("gzclose_r") - -/********************************************************************/ -/* *MODULE GZWRITE ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("gzclose_w") - -/********************************************************************/ -/* *MODULE INFLATE ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("inflateMark") - EXPORT SYMBOL("inflatePrime") - EXPORT SYMBOL("inflateReset2") - EXPORT SYMBOL("inflateUndermine") - -/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ -/* Version 1.2.6 additional entry points. */ -/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ - -/********************************************************************/ -/* *MODULE DEFLATE ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("deflateResetKeep") - EXPORT SYMBOL("deflatePending") - -/********************************************************************/ -/* *MODULE GZWRITE ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("gzgetc_") - -/********************************************************************/ -/* *MODULE INFLATE ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("inflateResetKeep") - -/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ -/* Version 1.2.8 additional entry points. */ -/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ - -/********************************************************************/ -/* *MODULE INFLATE ZLIB 01/02/01 00:15:09 */ -/********************************************************************/ - - EXPORT SYMBOL("inflateGetDictionary") - -ENDPGMEXP diff --git a/platform/win32/msvc/external/zlib/as400/compile.clp b/platform/win32/msvc/external/zlib/as400/compile.clp deleted file mode 100644 index e3f47c63872..00000000000 --- a/platform/win32/msvc/external/zlib/as400/compile.clp +++ /dev/null @@ -1,110 +0,0 @@ -/******************************************************************************/ -/* */ -/* ZLIB */ -/* */ -/* Compile sources into modules and link them into a service program. */ -/* */ -/******************************************************************************/ - - PGM - -/* Configuration adjustable parameters. */ - - DCL VAR(&SRCLIB) TYPE(*CHAR) LEN(10) + - VALUE('ZLIB') /* Source library. */ - DCL VAR(&SRCFILE) TYPE(*CHAR) LEN(10) + - VALUE('SOURCES') /* Source member file. */ - DCL VAR(&CTLFILE) TYPE(*CHAR) LEN(10) + - VALUE('TOOLS') /* Control member file. */ - - DCL VAR(&MODLIB) TYPE(*CHAR) LEN(10) + - VALUE('ZLIB') /* Module library. */ - - DCL VAR(&SRVLIB) TYPE(*CHAR) LEN(10) + - VALUE('LGPL') /* Service program library. */ - - DCL VAR(&CFLAGS) TYPE(*CHAR) + - VALUE('OPTIMIZE(40)') /* Compile options. */ - - DCL VAR(&TGTRLS) TYPE(*CHAR) + - VALUE('V5R3M0') /* Target release. */ - - -/* Working storage. */ - - DCL VAR(&CMDLEN) TYPE(*DEC) LEN(15 5) VALUE(300) /* Command length. */ - DCL VAR(&CMD) TYPE(*CHAR) LEN(512) - DCL VAR(&FIXDCMD) TYPE(*CHAR) LEN(512) - - -/* Compile sources into modules. */ - - CHGVAR VAR(&FIXDCMD) VALUE('CRTCMOD' *BCAT &CFLAGS *BCAT + - 'SYSIFCOPT(*IFS64IO)' *BCAT + - 'DEFINE(''_LARGEFILE64_SOURCE''' *BCAT + - '''_LFS64_LARGEFILE=1'') TGTRLS(' *TCAT &TGTRLS *TCAT + - ') SRCFILE(' *TCAT &SRCLIB *TCAT '/' *TCAT + - &SRCFILE *TCAT ') MODULE(' *TCAT &MODLIB *TCAT '/') - - - CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'ADLER32)') - CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN) - - CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'COMPRESS)') - CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN) - - CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'CRC32)') - CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN) - - CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'DEFLATE)') - CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN) - - CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'GZCLOSE)') - CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN) - - CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'GZLIB)') - CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN) - - CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'GZREAD)') - CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN) - - CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'GZWRITE)') - CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN) - - CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'INFBACK)') - CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN) - - CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'INFFAST)') - CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN) - - CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'INFLATE)') - CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN) - - CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'INFTREES)') - CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN) - - CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'TREES)') - CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN) - - CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'UNCOMPR)') - CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN) - - CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'ZUTIL)') - CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN) - - -/* Link modules into a service program. */ - - CRTSRVPGM SRVPGM(&SRVLIB/ZLIB) + - MODULE(&MODLIB/ADLER32 &MODLIB/COMPRESS + - &MODLIB/CRC32 &MODLIB/DEFLATE + - &MODLIB/GZCLOSE &MODLIB/GZLIB + - &MODLIB/GZREAD &MODLIB/GZWRITE + - &MODLIB/INFBACK &MODLIB/INFFAST + - &MODLIB/INFLATE &MODLIB/INFTREES + - &MODLIB/TREES &MODLIB/UNCOMPR + - &MODLIB/ZUTIL) + - SRCFILE(&SRCLIB/&CTLFILE) SRCMBR(BNDSRC) + - TEXT('ZLIB 1.2.8') TGTRLS(&TGTRLS) - - ENDPGM diff --git a/platform/win32/msvc/external/zlib/as400/readme.txt b/platform/win32/msvc/external/zlib/as400/readme.txt deleted file mode 100644 index 7b5d93bf51f..00000000000 --- a/platform/win32/msvc/external/zlib/as400/readme.txt +++ /dev/null @@ -1,115 +0,0 @@ - ZLIB version 1.2.8 for AS400 installation instructions - -I) From an AS400 *SAVF file: - -1) Unpacking archive to an AS400 save file - -On the AS400: - -_ Create the ZLIB AS400 library: - - CRTLIB LIB(ZLIB) TYPE(*PROD) TEXT('ZLIB compression API library') - -_ Create a work save file, for example: - - CRTSAVF FILE(ZLIB/ZLIBSAVF) - -On a PC connected to the target AS400: - -_ Unpack the save file image to a PC file "ZLIBSAVF" -_ Upload this file into the save file on the AS400, for example - using ftp in BINARY mode. - - -2) Populating the ZLIB AS400 source library - -On the AS400: - -_ Extract the saved objects into the ZLIB AS400 library using: - -RSTOBJ OBJ(*ALL) SAVLIB(ZLIB) DEV(*SAVF) SAVF(ZLIB/ZLIBSAVF) RSTLIB(ZLIB) - - -3) Customize installation: - -_ Edit CL member ZLIB/TOOLS(COMPILE) and change parameters if needed, - according to the comments. - -_ Compile this member with: - - CRTCLPGM PGM(ZLIB/COMPILE) SRCFILE(ZLIB/TOOLS) SRCMBR(COMPILE) - - -4) Compile and generate the service program: - -_ This can now be done by executing: - - CALL PGM(ZLIB/COMPILE) - - - -II) From the original source distribution: - -1) On the AS400, create the source library: - - CRTLIB LIB(ZLIB) TYPE(*PROD) TEXT('ZLIB compression API library') - -2) Create the source files: - - CRTSRCPF FILE(ZLIB/SOURCES) RCDLEN(112) TEXT('ZLIB library modules') - CRTSRCPF FILE(ZLIB/H) RCDLEN(112) TEXT('ZLIB library includes') - CRTSRCPF FILE(ZLIB/TOOLS) RCDLEN(112) TEXT('ZLIB library control utilities') - -3) From the machine hosting the distribution files, upload them (with - FTP in text mode, for example) according to the following table: - - Original AS400 AS400 AS400 AS400 - file file member type description - SOURCES Original ZLIB C subprogram sources - adler32.c ADLER32 C ZLIB - Compute the Adler-32 checksum of a dta strm - compress.c COMPRESS C ZLIB - Compress a memory buffer - crc32.c CRC32 C ZLIB - Compute the CRC-32 of a data stream - deflate.c DEFLATE C ZLIB - Compress data using the deflation algorithm - gzclose.c GZCLOSE C ZLIB - Close .gz files - gzlib.c GZLIB C ZLIB - Miscellaneous .gz files IO support - gzread.c GZREAD C ZLIB - Read .gz files - gzwrite.c GZWRITE C ZLIB - Write .gz files - infback.c INFBACK C ZLIB - Inflate using a callback interface - inffast.c INFFAST C ZLIB - Fast proc. literals & length/distance pairs - inflate.c INFLATE C ZLIB - Interface to inflate modules - inftrees.c INFTREES C ZLIB - Generate Huffman trees for efficient decode - trees.c TREES C ZLIB - Output deflated data using Huffman coding - uncompr.c UNCOMPR C ZLIB - Decompress a memory buffer - zutil.c ZUTIL C ZLIB - Target dependent utility functions - H Original ZLIB C and ILE/RPG include files - crc32.h CRC32 C ZLIB - CRC32 tables - deflate.h DEFLATE C ZLIB - Internal compression state - gzguts.h GZGUTS C ZLIB - Definitions for the gzclose module - inffast.h INFFAST C ZLIB - Header to use inffast.c - inffixed.h INFFIXED C ZLIB - Table for decoding fixed codes - inflate.h INFLATE C ZLIB - Internal inflate state definitions - inftrees.h INFTREES C ZLIB - Header to use inftrees.c - trees.h TREES C ZLIB - Created automatically with -DGEN_TREES_H - zconf.h ZCONF C ZLIB - Compression library configuration - zlib.h ZLIB C ZLIB - Compression library C user interface - as400/zlib.inc ZLIB.INC RPGLE ZLIB - Compression library ILE RPG user interface - zutil.h ZUTIL C ZLIB - Internal interface and configuration - TOOLS Building source software & AS/400 README - as400/bndsrc BNDSRC Entry point exportation list - as400/compile.clp COMPILE CLP Compile sources & generate service program - as400/readme.txt README TXT Installation instructions - -4) Continue as in I)3). - - - - -Notes: For AS400 ILE RPG programmers, a /copy member defining the ZLIB - API prototypes for ILE RPG can be found in ZLIB/H(ZLIB.INC). - Please read comments in this member for more information. - - Remember that most foreign textual data are ASCII coded: this - implementation does not handle conversion from/to ASCII, so - text data code conversions must be done explicitely. - - Mainly for the reason above, always open zipped files in binary mode. diff --git a/platform/win32/msvc/external/zlib/as400/zlib.inc b/platform/win32/msvc/external/zlib/as400/zlib.inc deleted file mode 100644 index 7341a6d8187..00000000000 --- a/platform/win32/msvc/external/zlib/as400/zlib.inc +++ /dev/null @@ -1,451 +0,0 @@ - * ZLIB.INC - Interface to the general purpose compression library - * - * ILE RPG400 version by Patrick Monnerat, DATASPHERE. - * Version 1.2.8 - * - * - * WARNING: - * Procedures inflateInit(), inflateInit2(), deflateInit(), - * deflateInit2() and inflateBackInit() need to be called with - * two additional arguments: - * the package version string and the stream control structure. - * size. This is needed because RPG lacks some macro feature. - * Call these procedures as: - * inflateInit(...: ZLIB_VERSION: %size(z_stream)) - * - /if not defined(ZLIB_H_) - /define ZLIB_H_ - * - ************************************************************************** - * Constants - ************************************************************************** - * - * Versioning information. - * - D ZLIB_VERSION C '1.2.8' - D ZLIB_VERNUM C X'1280' - D ZLIB_VER_MAJOR C 1 - D ZLIB_VER_MINOR C 2 - D ZLIB_VER_REVISION... - D C 8 - D ZLIB_VER_SUBREVISION... - D C 0 - * - * Other equates. - * - D Z_NO_FLUSH C 0 - D Z_PARTIAL_FLUSH... - D C 1 - D Z_SYNC_FLUSH C 2 - D Z_FULL_FLUSH C 3 - D Z_FINISH C 4 - D Z_BLOCK C 5 - D Z_TREES C 6 - * - D Z_OK C 0 - D Z_STREAM_END C 1 - D Z_NEED_DICT C 2 - D Z_ERRNO C -1 - D Z_STREAM_ERROR C -2 - D Z_DATA_ERROR C -3 - D Z_MEM_ERROR C -4 - D Z_BUF_ERROR C -5 - DZ_VERSION_ERROR C -6 - * - D Z_NO_COMPRESSION... - D C 0 - D Z_BEST_SPEED C 1 - D Z_BEST_COMPRESSION... - D C 9 - D Z_DEFAULT_COMPRESSION... - D C -1 - * - D Z_FILTERED C 1 - D Z_HUFFMAN_ONLY C 2 - D Z_RLE C 3 - D Z_DEFAULT_STRATEGY... - D C 0 - * - D Z_BINARY C 0 - D Z_ASCII C 1 - D Z_UNKNOWN C 2 - * - D Z_DEFLATED C 8 - * - D Z_NULL C 0 - * - ************************************************************************** - * Types - ************************************************************************** - * - D z_streamp S * Stream struct ptr - D gzFile S * File pointer - D z_off_t S 10i 0 Stream offsets - D z_off64_t S 20i 0 Stream offsets - * - ************************************************************************** - * Structures - ************************************************************************** - * - * The GZIP encode/decode stream support structure. - * - D z_stream DS align based(z_streamp) - D zs_next_in * Next input byte - D zs_avail_in 10U 0 Byte cnt at next_in - D zs_total_in 10U 0 Total bytes read - D zs_next_out * Output buffer ptr - D zs_avail_out 10U 0 Room left @ next_out - D zs_total_out 10U 0 Total bytes written - D zs_msg * Last errmsg or null - D zs_state * Internal state - D zs_zalloc * procptr Int. state allocator - D zs_free * procptr Int. state dealloc. - D zs_opaque * Private alloc. data - D zs_data_type 10i 0 ASC/BIN best guess - D zs_adler 10u 0 Uncompr. adler32 val - D 10U 0 Reserved - D 10U 0 Ptr. alignment - * - ************************************************************************** - * Utility function prototypes - ************************************************************************** - * - D compress PR 10I 0 extproc('compress') - D dest 65535 options(*varsize) Destination buffer - D destLen 10U 0 Destination length - D source 65535 const options(*varsize) Source buffer - D sourceLen 10u 0 value Source length - * - D compress2 PR 10I 0 extproc('compress2') - D dest 65535 options(*varsize) Destination buffer - D destLen 10U 0 Destination length - D source 65535 const options(*varsize) Source buffer - D sourceLen 10U 0 value Source length - D level 10I 0 value Compression level - * - D compressBound PR 10U 0 extproc('compressBound') - D sourceLen 10U 0 value - * - D uncompress PR 10I 0 extproc('uncompress') - D dest 65535 options(*varsize) Destination buffer - D destLen 10U 0 Destination length - D source 65535 const options(*varsize) Source buffer - D sourceLen 10U 0 value Source length - * - /if not defined(LARGE_FILES) - D gzopen PR extproc('gzopen') - D like(gzFile) - D path * value options(*string) File pathname - D mode * value options(*string) Open mode - /else - D gzopen PR extproc('gzopen64') - D like(gzFile) - D path * value options(*string) File pathname - D mode * value options(*string) Open mode - * - D gzopen64 PR extproc('gzopen64') - D like(gzFile) - D path * value options(*string) File pathname - D mode * value options(*string) Open mode - /endif - * - D gzdopen PR extproc('gzdopen') - D like(gzFile) - D fd 10I 0 value File descriptor - D mode * value options(*string) Open mode - * - D gzbuffer PR 10I 0 extproc('gzbuffer') - D file value like(gzFile) File pointer - D size 10U 0 value - * - D gzsetparams PR 10I 0 extproc('gzsetparams') - D file value like(gzFile) File pointer - D level 10I 0 value - D strategy 10I 0 value - * - D gzread PR 10I 0 extproc('gzread') - D file value like(gzFile) File pointer - D buf 65535 options(*varsize) Buffer - D len 10u 0 value Buffer length - * - D gzwrite PR 10I 0 extproc('gzwrite') - D file value like(gzFile) File pointer - D buf 65535 const options(*varsize) Buffer - D len 10u 0 value Buffer length - * - D gzputs PR 10I 0 extproc('gzputs') - D file value like(gzFile) File pointer - D s * value options(*string) String to output - * - D gzgets PR * extproc('gzgets') - D file value like(gzFile) File pointer - D buf 65535 options(*varsize) Read buffer - D len 10i 0 value Buffer length - * - D gzputc PR 10i 0 extproc('gzputc') - D file value like(gzFile) File pointer - D c 10I 0 value Character to write - * - D gzgetc PR 10i 0 extproc('gzgetc') - D file value like(gzFile) File pointer - * - D gzgetc_ PR 10i 0 extproc('gzgetc_') - D file value like(gzFile) File pointer - * - D gzungetc PR 10i 0 extproc('gzungetc') - D c 10I 0 value Character to push - D file value like(gzFile) File pointer - * - D gzflush PR 10i 0 extproc('gzflush') - D file value like(gzFile) File pointer - D flush 10I 0 value Type of flush - * - /if not defined(LARGE_FILES) - D gzseek PR extproc('gzseek') - D like(z_off_t) - D file value like(gzFile) File pointer - D offset value like(z_off_t) Offset - D whence 10i 0 value Origin - /else - D gzseek PR extproc('gzseek64') - D like(z_off_t) - D file value like(gzFile) File pointer - D offset value like(z_off_t) Offset - D whence 10i 0 value Origin - * - D gzseek64 PR extproc('gzseek64') - D like(z_off64_t) - D file value like(gzFile) File pointer - D offset value like(z_off64_t) Offset - D whence 10i 0 value Origin - /endif - * - D gzrewind PR 10i 0 extproc('gzrewind') - D file value like(gzFile) File pointer - * - /if not defined(LARGE_FILES) - D gztell PR extproc('gztell') - D like(z_off_t) - D file value like(gzFile) File pointer - /else - D gztell PR extproc('gztell64') - D like(z_off_t) - D file value like(gzFile) File pointer - * - D gztell64 PR extproc('gztell64') - D like(z_off64_t) - D file value like(gzFile) File pointer - /endif - * - /if not defined(LARGE_FILES) - D gzoffset PR extproc('gzoffset') - D like(z_off_t) - D file value like(gzFile) File pointer - /else - D gzoffset PR extproc('gzoffset64') - D like(z_off_t) - D file value like(gzFile) File pointer - * - D gzoffset64 PR extproc('gzoffset64') - D like(z_off64_t) - D file value like(gzFile) File pointer - /endif - * - D gzeof PR 10i 0 extproc('gzeof') - D file value like(gzFile) File pointer - * - D gzclose_r PR 10i 0 extproc('gzclose_r') - D file value like(gzFile) File pointer - * - D gzclose_w PR 10i 0 extproc('gzclose_w') - D file value like(gzFile) File pointer - * - D gzclose PR 10i 0 extproc('gzclose') - D file value like(gzFile) File pointer - * - D gzerror PR * extproc('gzerror') Error string - D file value like(gzFile) File pointer - D errnum 10I 0 Error code - * - D gzclearerr PR extproc('gzclearerr') - D file value like(gzFile) File pointer - * - ************************************************************************** - * Basic function prototypes - ************************************************************************** - * - D zlibVersion PR * extproc('zlibVersion') Version string - * - D deflateInit PR 10I 0 extproc('deflateInit_') Init. compression - D strm like(z_stream) Compression stream - D level 10I 0 value Compression level - D version * value options(*string) Version string - D stream_size 10i 0 value Stream struct. size - * - D deflate PR 10I 0 extproc('deflate') Compress data - D strm like(z_stream) Compression stream - D flush 10I 0 value Flush type required - * - D deflateEnd PR 10I 0 extproc('deflateEnd') Termin. compression - D strm like(z_stream) Compression stream - * - D inflateInit PR 10I 0 extproc('inflateInit_') Init. expansion - D strm like(z_stream) Expansion stream - D version * value options(*string) Version string - D stream_size 10i 0 value Stream struct. size - * - D inflate PR 10I 0 extproc('inflate') Expand data - D strm like(z_stream) Expansion stream - D flush 10I 0 value Flush type required - * - D inflateEnd PR 10I 0 extproc('inflateEnd') Termin. expansion - D strm like(z_stream) Expansion stream - * - ************************************************************************** - * Advanced function prototypes - ************************************************************************** - * - D deflateInit2 PR 10I 0 extproc('deflateInit2_') Init. compression - D strm like(z_stream) Compression stream - D level 10I 0 value Compression level - D method 10I 0 value Compression method - D windowBits 10I 0 value log2(window size) - D memLevel 10I 0 value Mem/cmpress tradeoff - D strategy 10I 0 value Compression stategy - D version * value options(*string) Version string - D stream_size 10i 0 value Stream struct. size - * - D deflateSetDictionary... - D PR 10I 0 extproc('deflateSetDictionary') Init. dictionary - D strm like(z_stream) Compression stream - D dictionary 65535 const options(*varsize) Dictionary bytes - D dictLength 10U 0 value Dictionary length - * - D deflateCopy PR 10I 0 extproc('deflateCopy') Compress strm 2 strm - D dest like(z_stream) Destination stream - D source like(z_stream) Source stream - * - D deflateReset PR 10I 0 extproc('deflateReset') End and init. stream - D strm like(z_stream) Compression stream - * - D deflateParams PR 10I 0 extproc('deflateParams') Change level & strat - D strm like(z_stream) Compression stream - D level 10I 0 value Compression level - D strategy 10I 0 value Compression stategy - * - D deflateBound PR 10U 0 extproc('deflateBound') Change level & strat - D strm like(z_stream) Compression stream - D sourcelen 10U 0 value Compression level - * - D deflatePending PR 10I 0 extproc('deflatePending') Change level & strat - D strm like(z_stream) Compression stream - D pending 10U 0 Pending bytes - D bits 10I 0 Pending bits - * - D deflatePrime PR 10I 0 extproc('deflatePrime') Change level & strat - D strm like(z_stream) Compression stream - D bits 10I 0 value # of bits to insert - D value 10I 0 value Bits to insert - * - D inflateInit2 PR 10I 0 extproc('inflateInit2_') Init. expansion - D strm like(z_stream) Expansion stream - D windowBits 10I 0 value log2(window size) - D version * value options(*string) Version string - D stream_size 10i 0 value Stream struct. size - * - D inflateSetDictionary... - D PR 10I 0 extproc('inflateSetDictionary') Init. dictionary - D strm like(z_stream) Expansion stream - D dictionary 65535 const options(*varsize) Dictionary bytes - D dictLength 10U 0 value Dictionary length - * - D inflateGetDictionary... - D PR 10I 0 extproc('inflateGetDictionary') Get dictionary - D strm like(z_stream) Expansion stream - D dictionary 65535 options(*varsize) Dictionary bytes - D dictLength 10U 0 Dictionary length - * - D inflateSync PR 10I 0 extproc('inflateSync') Sync. expansion - D strm like(z_stream) Expansion stream - * - D inflateCopy PR 10I 0 extproc('inflateCopy') - D dest like(z_stream) Destination stream - D source like(z_stream) Source stream - * - D inflateReset PR 10I 0 extproc('inflateReset') End and init. stream - D strm like(z_stream) Expansion stream - * - D inflateReset2 PR 10I 0 extproc('inflateReset2') End and init. stream - D strm like(z_stream) Expansion stream - D windowBits 10I 0 value Log2(buffer size) - * - D inflatePrime PR 10I 0 extproc('inflatePrime') Insert bits - D strm like(z_stream) Expansion stream - D bits 10I 0 value Bit count - D value 10I 0 value Bits to insert - * - D inflateMark PR 10I 0 extproc('inflateMark') Get inflate info - D strm like(z_stream) Expansion stream - * - D inflateBackInit... - D PR 10I 0 extproc('inflateBackInit_') - D strm like(z_stream) Expansion stream - D windowBits 10I 0 value Log2(buffer size) - D window 65535 options(*varsize) Buffer - D version * value options(*string) Version string - D stream_size 10i 0 value Stream struct. size - * - D inflateBack PR 10I 0 extproc('inflateBack') - D strm like(z_stream) Expansion stream - D in * value procptr Input function - D in_desc * value Input descriptor - D out * value procptr Output function - D out_desc * value Output descriptor - * - D inflateBackEnd PR 10I 0 extproc('inflateBackEnd') - D strm like(z_stream) Expansion stream - * - D zlibCompileFlags... - D PR 10U 0 extproc('zlibCompileFlags') - * - ************************************************************************** - * Checksum function prototypes - ************************************************************************** - * - D adler32 PR 10U 0 extproc('adler32') New checksum - D adler 10U 0 value Old checksum - D buf 65535 const options(*varsize) Bytes to accumulate - D len 10U 0 value Buffer length - * - D crc32 PR 10U 0 extproc('crc32') New checksum - D crc 10U 0 value Old checksum - D buf 65535 const options(*varsize) Bytes to accumulate - D len 10U 0 value Buffer length - * - ************************************************************************** - * Miscellaneous function prototypes - ************************************************************************** - * - D zError PR * extproc('zError') Error string - D err 10I 0 value Error code - * - D inflateSyncPoint... - D PR 10I 0 extproc('inflateSyncPoint') - D strm like(z_stream) Expansion stream - * - D get_crc_table PR * extproc('get_crc_table') Ptr to ulongs - * - D inflateUndermine... - D PR 10I 0 extproc('inflateUndermine') - D strm like(z_stream) Expansion stream - D arg 10I 0 value Error code - * - D inflateResetKeep... - D PR 10I 0 extproc('inflateResetKeep') End and init. stream - D strm like(z_stream) Expansion stream - * - D deflateResetKeep... - D PR 10I 0 extproc('deflateResetKeep') End and init. stream - D strm like(z_stream) Expansion stream - * - /endif diff --git a/platform/win32/msvc/external/zlib/compress.c b/platform/win32/msvc/external/zlib/compress.c deleted file mode 100644 index 6e9762676a0..00000000000 --- a/platform/win32/msvc/external/zlib/compress.c +++ /dev/null @@ -1,80 +0,0 @@ -/* compress.c -- compress a memory buffer - * Copyright (C) 1995-2005 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#define ZLIB_INTERNAL -#include "zlib.h" - -/* =========================================================================== - Compresses the source buffer into the destination buffer. The level - parameter has the same meaning as in deflateInit. sourceLen is the byte - length of the source buffer. Upon entry, destLen is the total size of the - destination buffer, which must be at least 0.1% larger than sourceLen plus - 12 bytes. Upon exit, destLen is the actual size of the compressed buffer. - - compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_BUF_ERROR if there was not enough room in the output buffer, - Z_STREAM_ERROR if the level parameter is invalid. -*/ -int ZEXPORT compress2 (dest, destLen, source, sourceLen, level) - Bytef *dest; - uLongf *destLen; - const Bytef *source; - uLong sourceLen; - int level; -{ - z_stream stream; - int err; - - stream.next_in = (z_const Bytef *)source; - stream.avail_in = (uInt)sourceLen; -#ifdef MAXSEG_64K - /* Check for source > 64K on 16-bit machine: */ - if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR; -#endif - stream.next_out = dest; - stream.avail_out = (uInt)*destLen; - if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR; - - stream.zalloc = (alloc_func)0; - stream.zfree = (free_func)0; - stream.opaque = (voidpf)0; - - err = deflateInit(&stream, level); - if (err != Z_OK) return err; - - err = deflate(&stream, Z_FINISH); - if (err != Z_STREAM_END) { - deflateEnd(&stream); - return err == Z_OK ? Z_BUF_ERROR : err; - } - *destLen = stream.total_out; - - err = deflateEnd(&stream); - return err; -} - -/* =========================================================================== - */ -int ZEXPORT compress (dest, destLen, source, sourceLen) - Bytef *dest; - uLongf *destLen; - const Bytef *source; - uLong sourceLen; -{ - return compress2(dest, destLen, source, sourceLen, Z_DEFAULT_COMPRESSION); -} - -/* =========================================================================== - If the default memLevel or windowBits for deflateInit() is changed, then - this function needs to be updated. - */ -uLong ZEXPORT compressBound (sourceLen) - uLong sourceLen; -{ - return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + - (sourceLen >> 25) + 13; -} diff --git a/platform/win32/msvc/external/zlib/configure b/platform/win32/msvc/external/zlib/configure deleted file mode 100644 index b77a8a8cf95..00000000000 --- a/platform/win32/msvc/external/zlib/configure +++ /dev/null @@ -1,831 +0,0 @@ -#!/bin/sh -# configure script for zlib. -# -# Normally configure builds both a static and a shared library. -# If you want to build just a static library, use: ./configure --static -# -# To impose specific compiler or flags or install directory, use for example: -# prefix=$HOME CC=cc CFLAGS="-O4" ./configure -# or for csh/tcsh users: -# (setenv prefix $HOME; setenv CC cc; setenv CFLAGS "-O4"; ./configure) - -# Incorrect settings of CC or CFLAGS may prevent creating a shared library. -# If you have problems, try without defining CC and CFLAGS before reporting -# an error. - -# start off configure.log -echo -------------------- >> configure.log -echo $0 $* >> configure.log -date >> configure.log - -# set command prefix for cross-compilation -if [ -n "${CHOST}" ]; then - uname="`echo "${CHOST}" | sed -e 's/^[^-]*-\([^-]*\)$/\1/' -e 's/^[^-]*-[^-]*-\([^-]*\)$/\1/' -e 's/^[^-]*-[^-]*-\([^-]*\)-.*$/\1/'`" - CROSS_PREFIX="${CHOST}-" -fi - -# destination name for static library -STATICLIB=libz.a - -# extract zlib version numbers from zlib.h -VER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h` -VER3=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\\.[0-9]*\).*/\1/p' < zlib.h` -VER2=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\)\\..*/\1/p' < zlib.h` -VER1=`sed -n -e '/VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < zlib.h` - -# establish commands for library building -if "${CROSS_PREFIX}ar" --version >/dev/null 2>/dev/null || test $? -lt 126; then - AR=${AR-"${CROSS_PREFIX}ar"} - test -n "${CROSS_PREFIX}" && echo Using ${AR} | tee -a configure.log -else - AR=${AR-"ar"} - test -n "${CROSS_PREFIX}" && echo Using ${AR} | tee -a configure.log -fi -ARFLAGS=${ARFLAGS-"rc"} -if "${CROSS_PREFIX}ranlib" --version >/dev/null 2>/dev/null || test $? -lt 126; then - RANLIB=${RANLIB-"${CROSS_PREFIX}ranlib"} - test -n "${CROSS_PREFIX}" && echo Using ${RANLIB} | tee -a configure.log -else - RANLIB=${RANLIB-"ranlib"} -fi -if "${CROSS_PREFIX}nm" --version >/dev/null 2>/dev/null || test $? -lt 126; then - NM=${NM-"${CROSS_PREFIX}nm"} - test -n "${CROSS_PREFIX}" && echo Using ${NM} | tee -a configure.log -else - NM=${NM-"nm"} -fi - -# set defaults before processing command line options -LDCONFIG=${LDCONFIG-"ldconfig"} -LDSHAREDLIBC="${LDSHAREDLIBC--lc}" -ARCHS= -prefix=${prefix-/usr/local} -exec_prefix=${exec_prefix-'${prefix}'} -libdir=${libdir-'${exec_prefix}/lib'} -sharedlibdir=${sharedlibdir-'${libdir}'} -includedir=${includedir-'${prefix}/include'} -mandir=${mandir-'${prefix}/share/man'} -shared_ext='.so' -shared=1 -solo=0 -cover=0 -zprefix=0 -zconst=0 -build64=0 -gcc=0 -old_cc="$CC" -old_cflags="$CFLAGS" -OBJC='$(OBJZ) $(OBJG)' -PIC_OBJC='$(PIC_OBJZ) $(PIC_OBJG)' - -# leave this script, optionally in a bad way -leave() -{ - if test "$*" != "0"; then - echo "** $0 aborting." | tee -a configure.log - fi - rm -f $test.[co] $test $test$shared_ext $test.gcno ./--version - echo -------------------- >> configure.log - echo >> configure.log - echo >> configure.log - exit $1 -} - -# process command line options -while test $# -ge 1 -do -case "$1" in - -h* | --help) - echo 'usage:' | tee -a configure.log - echo ' configure [--const] [--zprefix] [--prefix=PREFIX] [--eprefix=EXPREFIX]' | tee -a configure.log - echo ' [--static] [--64] [--libdir=LIBDIR] [--sharedlibdir=LIBDIR]' | tee -a configure.log - echo ' [--includedir=INCLUDEDIR] [--archs="-arch i386 -arch x86_64"]' | tee -a configure.log - exit 0 ;; - -p*=* | --prefix=*) prefix=`echo $1 | sed 's/.*=//'`; shift ;; - -e*=* | --eprefix=*) exec_prefix=`echo $1 | sed 's/.*=//'`; shift ;; - -l*=* | --libdir=*) libdir=`echo $1 | sed 's/.*=//'`; shift ;; - --sharedlibdir=*) sharedlibdir=`echo $1 | sed 's/.*=//'`; shift ;; - -i*=* | --includedir=*) includedir=`echo $1 | sed 's/.*=//'`;shift ;; - -u*=* | --uname=*) uname=`echo $1 | sed 's/.*=//'`;shift ;; - -p* | --prefix) prefix="$2"; shift; shift ;; - -e* | --eprefix) exec_prefix="$2"; shift; shift ;; - -l* | --libdir) libdir="$2"; shift; shift ;; - -i* | --includedir) includedir="$2"; shift; shift ;; - -s* | --shared | --enable-shared) shared=1; shift ;; - -t | --static) shared=0; shift ;; - --solo) solo=1; shift ;; - --cover) cover=1; shift ;; - -z* | --zprefix) zprefix=1; shift ;; - -6* | --64) build64=1; shift ;; - -a*=* | --archs=*) ARCHS=`echo $1 | sed 's/.*=//'`; shift ;; - --sysconfdir=*) echo "ignored option: --sysconfdir" | tee -a configure.log; shift ;; - --localstatedir=*) echo "ignored option: --localstatedir" | tee -a configure.log; shift ;; - -c* | --const) zconst=1; shift ;; - *) - echo "unknown option: $1" | tee -a configure.log - echo "$0 --help for help" | tee -a configure.log - leave 1;; - esac -done - -# temporary file name -test=ztest$$ - -# put arguments in log, also put test file in log if used in arguments -show() -{ - case "$*" in - *$test.c*) - echo === $test.c === >> configure.log - cat $test.c >> configure.log - echo === >> configure.log;; - esac - echo $* >> configure.log -} - -# check for gcc vs. cc and set compile and link flags based on the system identified by uname -cat > $test.c <<EOF -extern int getchar(); -int hello() {return getchar();} -EOF - -test -z "$CC" && echo Checking for ${CROSS_PREFIX}gcc... | tee -a configure.log -cc=${CC-${CROSS_PREFIX}gcc} -cflags=${CFLAGS-"-O3"} -# to force the asm version use: CFLAGS="-O3 -DASMV" ./configure -case "$cc" in - *gcc*) gcc=1 ;; - *clang*) gcc=1 ;; -esac -case `$cc -v 2>&1` in - *gcc*) gcc=1 ;; -esac - -show $cc -c $test.c -if test "$gcc" -eq 1 && ($cc -c $test.c) >> configure.log 2>&1; then - echo ... using gcc >> configure.log - CC="$cc" - CFLAGS="${CFLAGS--O3} ${ARCHS}" - SFLAGS="${CFLAGS--O3} -fPIC" - LDFLAGS="${LDFLAGS} ${ARCHS}" - if test $build64 -eq 1; then - CFLAGS="${CFLAGS} -m64" - SFLAGS="${SFLAGS} -m64" - fi - if test "${ZLIBGCCWARN}" = "YES"; then - if test "$zconst" -eq 1; then - CFLAGS="${CFLAGS} -Wall -Wextra -Wcast-qual -pedantic -DZLIB_CONST" - else - CFLAGS="${CFLAGS} -Wall -Wextra -pedantic" - fi - fi - if test -z "$uname"; then - uname=`(uname -s || echo unknown) 2>/dev/null` - fi - case "$uname" in - Linux* | linux* | GNU | GNU/* | solaris*) - LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map"} ;; - *BSD | *bsd* | DragonFly) - LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map"} - LDCONFIG="ldconfig -m" ;; - CYGWIN* | Cygwin* | cygwin* | OS/2*) - EXE='.exe' ;; - MINGW* | mingw*) -# temporary bypass - rm -f $test.[co] $test $test$shared_ext - echo "Please use win32/Makefile.gcc instead." | tee -a configure.log - leave 1 - LDSHARED=${LDSHARED-"$cc -shared"} - LDSHAREDLIBC="" - EXE='.exe' ;; - QNX*) # This is for QNX6. I suppose that the QNX rule below is for QNX2,QNX4 - # (alain.bonnefoy@icbt.com) - LDSHARED=${LDSHARED-"$cc -shared -Wl,-hlibz.so.1"} ;; - HP-UX*) - LDSHARED=${LDSHARED-"$cc -shared $SFLAGS"} - case `(uname -m || echo unknown) 2>/dev/null` in - ia64) - shared_ext='.so' - SHAREDLIB='libz.so' ;; - *) - shared_ext='.sl' - SHAREDLIB='libz.sl' ;; - esac ;; - Darwin* | darwin*) - shared_ext='.dylib' - SHAREDLIB=libz$shared_ext - SHAREDLIBV=libz.$VER$shared_ext - SHAREDLIBM=libz.$VER1$shared_ext - LDSHARED=${LDSHARED-"$cc -dynamiclib -install_name $libdir/$SHAREDLIBM -compatibility_version $VER1 -current_version $VER3"} - if libtool -V 2>&1 | grep Apple > /dev/null; then - AR="libtool" - else - AR="/usr/bin/libtool" - fi - ARFLAGS="-o" ;; - *) LDSHARED=${LDSHARED-"$cc -shared"} ;; - esac -else - # find system name and corresponding cc options - CC=${CC-cc} - gcc=0 - echo ... using $CC >> configure.log - if test -z "$uname"; then - uname=`(uname -sr || echo unknown) 2>/dev/null` - fi - case "$uname" in - HP-UX*) SFLAGS=${CFLAGS-"-O +z"} - CFLAGS=${CFLAGS-"-O"} -# LDSHARED=${LDSHARED-"ld -b +vnocompatwarnings"} - LDSHARED=${LDSHARED-"ld -b"} - case `(uname -m || echo unknown) 2>/dev/null` in - ia64) - shared_ext='.so' - SHAREDLIB='libz.so' ;; - *) - shared_ext='.sl' - SHAREDLIB='libz.sl' ;; - esac ;; - IRIX*) SFLAGS=${CFLAGS-"-ansi -O2 -rpath ."} - CFLAGS=${CFLAGS-"-ansi -O2"} - LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so.1"} ;; - OSF1\ V4*) SFLAGS=${CFLAGS-"-O -std1"} - CFLAGS=${CFLAGS-"-O -std1"} - LDFLAGS="${LDFLAGS} -Wl,-rpath,." - LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so -Wl,-msym -Wl,-rpath,$(libdir) -Wl,-set_version,${VER}:1.0"} ;; - OSF1*) SFLAGS=${CFLAGS-"-O -std1"} - CFLAGS=${CFLAGS-"-O -std1"} - LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so.1"} ;; - QNX*) SFLAGS=${CFLAGS-"-4 -O"} - CFLAGS=${CFLAGS-"-4 -O"} - LDSHARED=${LDSHARED-"cc"} - RANLIB=${RANLIB-"true"} - AR="cc" - ARFLAGS="-A" ;; - SCO_SV\ 3.2*) SFLAGS=${CFLAGS-"-O3 -dy -KPIC "} - CFLAGS=${CFLAGS-"-O3"} - LDSHARED=${LDSHARED-"cc -dy -KPIC -G"} ;; - SunOS\ 5* | solaris*) - LDSHARED=${LDSHARED-"cc -G -h libz$shared_ext.$VER1"} - SFLAGS=${CFLAGS-"-fast -KPIC"} - CFLAGS=${CFLAGS-"-fast"} - if test $build64 -eq 1; then - # old versions of SunPRO/Workshop/Studio don't support -m64, - # but newer ones do. Check for it. - flag64=`$CC -flags | egrep -- '^-m64'` - if test x"$flag64" != x"" ; then - CFLAGS="${CFLAGS} -m64" - SFLAGS="${SFLAGS} -m64" - else - case `(uname -m || echo unknown) 2>/dev/null` in - i86*) - SFLAGS="$SFLAGS -xarch=amd64" - CFLAGS="$CFLAGS -xarch=amd64" ;; - *) - SFLAGS="$SFLAGS -xarch=v9" - CFLAGS="$CFLAGS -xarch=v9" ;; - esac - fi - fi - ;; - SunOS\ 4*) SFLAGS=${CFLAGS-"-O2 -PIC"} - CFLAGS=${CFLAGS-"-O2"} - LDSHARED=${LDSHARED-"ld"} ;; - SunStudio\ 9*) SFLAGS=${CFLAGS-"-fast -xcode=pic32 -xtarget=ultra3 -xarch=v9b"} - CFLAGS=${CFLAGS-"-fast -xtarget=ultra3 -xarch=v9b"} - LDSHARED=${LDSHARED-"cc -xarch=v9b"} ;; - UNIX_System_V\ 4.2.0) - SFLAGS=${CFLAGS-"-KPIC -O"} - CFLAGS=${CFLAGS-"-O"} - LDSHARED=${LDSHARED-"cc -G"} ;; - UNIX_SV\ 4.2MP) - SFLAGS=${CFLAGS-"-Kconform_pic -O"} - CFLAGS=${CFLAGS-"-O"} - LDSHARED=${LDSHARED-"cc -G"} ;; - OpenUNIX\ 5) - SFLAGS=${CFLAGS-"-KPIC -O"} - CFLAGS=${CFLAGS-"-O"} - LDSHARED=${LDSHARED-"cc -G"} ;; - AIX*) # Courtesy of dbakker@arrayasolutions.com - SFLAGS=${CFLAGS-"-O -qmaxmem=8192"} - CFLAGS=${CFLAGS-"-O -qmaxmem=8192"} - LDSHARED=${LDSHARED-"xlc -G"} ;; - # send working options for other systems to zlib@gzip.org - *) SFLAGS=${CFLAGS-"-O"} - CFLAGS=${CFLAGS-"-O"} - LDSHARED=${LDSHARED-"cc -shared"} ;; - esac -fi - -# destination names for shared library if not defined above -SHAREDLIB=${SHAREDLIB-"libz$shared_ext"} -SHAREDLIBV=${SHAREDLIBV-"libz$shared_ext.$VER"} -SHAREDLIBM=${SHAREDLIBM-"libz$shared_ext.$VER1"} - -echo >> configure.log - -# define functions for testing compiler and library characteristics and logging the results - -cat > $test.c <<EOF -#error error -EOF -if ($CC -c $CFLAGS $test.c) 2>/dev/null; then - try() - { - show $* - test "`( $* ) 2>&1 | tee -a configure.log`" = "" - } - echo - using any output from compiler to indicate an error >> configure.log -else -try() -{ - show $* - ( $* ) >> configure.log 2>&1 - ret=$? - if test $ret -ne 0; then - echo "(exit code "$ret")" >> configure.log - fi - return $ret -} -fi - -tryboth() -{ - show $* - got=`( $* ) 2>&1` - ret=$? - printf %s "$got" >> configure.log - if test $ret -ne 0; then - return $ret - fi - test "$got" = "" -} - -cat > $test.c << EOF -int foo() { return 0; } -EOF -echo "Checking for obsessive-compulsive compiler options..." >> configure.log -if try $CC -c $CFLAGS $test.c; then - : -else - echo "Compiler error reporting is too harsh for $0 (perhaps remove -Werror)." | tee -a configure.log - leave 1 -fi - -echo >> configure.log - -# see if shared library build supported -cat > $test.c <<EOF -extern int getchar(); -int hello() {return getchar();} -EOF -if test $shared -eq 1; then - echo Checking for shared library support... | tee -a configure.log - # we must test in two steps (cc then ld), required at least on SunOS 4.x - if try $CC -w -c $SFLAGS $test.c && - try $LDSHARED $SFLAGS -o $test$shared_ext $test.o; then - echo Building shared library $SHAREDLIBV with $CC. | tee -a configure.log - elif test -z "$old_cc" -a -z "$old_cflags"; then - echo No shared library support. | tee -a configure.log - shared=0; - else - echo 'No shared library support; try without defining CC and CFLAGS' | tee -a configure.log - shared=0; - fi -fi -if test $shared -eq 0; then - LDSHARED="$CC" - ALL="static" - TEST="all teststatic" - SHAREDLIB="" - SHAREDLIBV="" - SHAREDLIBM="" - echo Building static library $STATICLIB version $VER with $CC. | tee -a configure.log -else - ALL="static shared" - TEST="all teststatic testshared" -fi - -# check for underscores in external names for use by assembler code -CPP=${CPP-"$CC -E"} -case $CFLAGS in - *ASMV*) - echo >> configure.log - show "$NM $test.o | grep _hello" - if test "`$NM $test.o | grep _hello | tee -a configure.log`" = ""; then - CPP="$CPP -DNO_UNDERLINE" - echo Checking for underline in external names... No. | tee -a configure.log - else - echo Checking for underline in external names... Yes. | tee -a configure.log - fi ;; -esac - -echo >> configure.log - -# check for large file support, and if none, check for fseeko() -cat > $test.c <<EOF -#include <sys/types.h> -off64_t dummy = 0; -EOF -if try $CC -c $CFLAGS -D_LARGEFILE64_SOURCE=1 $test.c; then - CFLAGS="${CFLAGS} -D_LARGEFILE64_SOURCE=1" - SFLAGS="${SFLAGS} -D_LARGEFILE64_SOURCE=1" - ALL="${ALL} all64" - TEST="${TEST} test64" - echo "Checking for off64_t... Yes." | tee -a configure.log - echo "Checking for fseeko... Yes." | tee -a configure.log -else - echo "Checking for off64_t... No." | tee -a configure.log - echo >> configure.log - cat > $test.c <<EOF -#include <stdio.h> -int main(void) { - fseeko(NULL, 0, 0); - return 0; -} -EOF - if try $CC $CFLAGS -o $test $test.c; then - echo "Checking for fseeko... Yes." | tee -a configure.log - else - CFLAGS="${CFLAGS} -DNO_FSEEKO" - SFLAGS="${SFLAGS} -DNO_FSEEKO" - echo "Checking for fseeko... No." | tee -a configure.log - fi -fi - -echo >> configure.log - -# check for strerror() for use by gz* functions -cat > $test.c <<EOF -#include <string.h> -#include <errno.h> -int main() { return strlen(strerror(errno)); } -EOF -if try $CC $CFLAGS -o $test $test.c; then - echo "Checking for strerror... Yes." | tee -a configure.log -else - CFLAGS="${CFLAGS} -DNO_STRERROR" - SFLAGS="${SFLAGS} -DNO_STRERROR" - echo "Checking for strerror... No." | tee -a configure.log -fi - -# copy clean zconf.h for subsequent edits -cp -p zconf.h.in zconf.h - -echo >> configure.log - -# check for unistd.h and save result in zconf.h -cat > $test.c <<EOF -#include <unistd.h> -int main() { return 0; } -EOF -if try $CC -c $CFLAGS $test.c; then - sed < zconf.h "/^#ifdef HAVE_UNISTD_H.* may be/s/def HAVE_UNISTD_H\(.*\) may be/ 1\1 was/" > zconf.temp.h - mv zconf.temp.h zconf.h - echo "Checking for unistd.h... Yes." | tee -a configure.log -else - echo "Checking for unistd.h... No." | tee -a configure.log -fi - -echo >> configure.log - -# check for stdarg.h and save result in zconf.h -cat > $test.c <<EOF -#include <stdarg.h> -int main() { return 0; } -EOF -if try $CC -c $CFLAGS $test.c; then - sed < zconf.h "/^#ifdef HAVE_STDARG_H.* may be/s/def HAVE_STDARG_H\(.*\) may be/ 1\1 was/" > zconf.temp.h - mv zconf.temp.h zconf.h - echo "Checking for stdarg.h... Yes." | tee -a configure.log -else - echo "Checking for stdarg.h... No." | tee -a configure.log -fi - -# if the z_ prefix was requested, save that in zconf.h -if test $zprefix -eq 1; then - sed < zconf.h "/#ifdef Z_PREFIX.* may be/s/def Z_PREFIX\(.*\) may be/ 1\1 was/" > zconf.temp.h - mv zconf.temp.h zconf.h - echo >> configure.log - echo "Using z_ prefix on all symbols." | tee -a configure.log -fi - -# if --solo compilation was requested, save that in zconf.h and remove gz stuff from object lists -if test $solo -eq 1; then - sed '/#define ZCONF_H/a\ -#define Z_SOLO - -' < zconf.h > zconf.temp.h - mv zconf.temp.h zconf.h -OBJC='$(OBJZ)' -PIC_OBJC='$(PIC_OBJZ)' -fi - -# if code coverage testing was requested, use older gcc if defined, e.g. "gcc-4.2" on Mac OS X -if test $cover -eq 1; then - CFLAGS="${CFLAGS} -fprofile-arcs -ftest-coverage" - if test -n "$GCC_CLASSIC"; then - CC=$GCC_CLASSIC - fi -fi - -echo >> configure.log - -# conduct a series of tests to resolve eight possible cases of using "vs" or "s" printf functions -# (using stdarg or not), with or without "n" (proving size of buffer), and with or without a -# return value. The most secure result is vsnprintf() with a return value. snprintf() with a -# return value is secure as well, but then gzprintf() will be limited to 20 arguments. -cat > $test.c <<EOF -#include <stdio.h> -#include <stdarg.h> -#include "zconf.h" -int main() -{ -#ifndef STDC - choke me -#endif - return 0; -} -EOF -if try $CC -c $CFLAGS $test.c; then - echo "Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf()." | tee -a configure.log - - echo >> configure.log - cat > $test.c <<EOF -#include <stdio.h> -#include <stdarg.h> -int mytest(const char *fmt, ...) -{ - char buf[20]; - va_list ap; - va_start(ap, fmt); - vsnprintf(buf, sizeof(buf), fmt, ap); - va_end(ap); - return 0; -} -int main() -{ - return (mytest("Hello%d\n", 1)); -} -EOF - if try $CC $CFLAGS -o $test $test.c; then - echo "Checking for vsnprintf() in stdio.h... Yes." | tee -a configure.log - - echo >> configure.log - cat >$test.c <<EOF -#include <stdio.h> -#include <stdarg.h> -int mytest(const char *fmt, ...) -{ - int n; - char buf[20]; - va_list ap; - va_start(ap, fmt); - n = vsnprintf(buf, sizeof(buf), fmt, ap); - va_end(ap); - return n; -} -int main() -{ - return (mytest("Hello%d\n", 1)); -} -EOF - - if try $CC -c $CFLAGS $test.c; then - echo "Checking for return value of vsnprintf()... Yes." | tee -a configure.log - else - CFLAGS="$CFLAGS -DHAS_vsnprintf_void" - SFLAGS="$SFLAGS -DHAS_vsnprintf_void" - echo "Checking for return value of vsnprintf()... No." | tee -a configure.log - echo " WARNING: apparently vsnprintf() does not return a value. zlib" | tee -a configure.log - echo " can build but will be open to possible string-format security" | tee -a configure.log - echo " vulnerabilities." | tee -a configure.log - fi - else - CFLAGS="$CFLAGS -DNO_vsnprintf" - SFLAGS="$SFLAGS -DNO_vsnprintf" - echo "Checking for vsnprintf() in stdio.h... No." | tee -a configure.log - echo " WARNING: vsnprintf() not found, falling back to vsprintf(). zlib" | tee -a configure.log - echo " can build but will be open to possible buffer-overflow security" | tee -a configure.log - echo " vulnerabilities." | tee -a configure.log - - echo >> configure.log - cat >$test.c <<EOF -#include <stdio.h> -#include <stdarg.h> -int mytest(const char *fmt, ...) -{ - int n; - char buf[20]; - va_list ap; - va_start(ap, fmt); - n = vsprintf(buf, fmt, ap); - va_end(ap); - return n; -} -int main() -{ - return (mytest("Hello%d\n", 1)); -} -EOF - - if try $CC -c $CFLAGS $test.c; then - echo "Checking for return value of vsprintf()... Yes." | tee -a configure.log - else - CFLAGS="$CFLAGS -DHAS_vsprintf_void" - SFLAGS="$SFLAGS -DHAS_vsprintf_void" - echo "Checking for return value of vsprintf()... No." | tee -a configure.log - echo " WARNING: apparently vsprintf() does not return a value. zlib" | tee -a configure.log - echo " can build but will be open to possible string-format security" | tee -a configure.log - echo " vulnerabilities." | tee -a configure.log - fi - fi -else - echo "Checking whether to use vs[n]printf() or s[n]printf()... using s[n]printf()." | tee -a configure.log - - echo >> configure.log - cat >$test.c <<EOF -#include <stdio.h> -int mytest() -{ - char buf[20]; - snprintf(buf, sizeof(buf), "%s", "foo"); - return 0; -} -int main() -{ - return (mytest()); -} -EOF - - if try $CC $CFLAGS -o $test $test.c; then - echo "Checking for snprintf() in stdio.h... Yes." | tee -a configure.log - - echo >> configure.log - cat >$test.c <<EOF -#include <stdio.h> -int mytest() -{ - char buf[20]; - return snprintf(buf, sizeof(buf), "%s", "foo"); -} -int main() -{ - return (mytest()); -} -EOF - - if try $CC -c $CFLAGS $test.c; then - echo "Checking for return value of snprintf()... Yes." | tee -a configure.log - else - CFLAGS="$CFLAGS -DHAS_snprintf_void" - SFLAGS="$SFLAGS -DHAS_snprintf_void" - echo "Checking for return value of snprintf()... No." | tee -a configure.log - echo " WARNING: apparently snprintf() does not return a value. zlib" | tee -a configure.log - echo " can build but will be open to possible string-format security" | tee -a configure.log - echo " vulnerabilities." | tee -a configure.log - fi - else - CFLAGS="$CFLAGS -DNO_snprintf" - SFLAGS="$SFLAGS -DNO_snprintf" - echo "Checking for snprintf() in stdio.h... No." | tee -a configure.log - echo " WARNING: snprintf() not found, falling back to sprintf(). zlib" | tee -a configure.log - echo " can build but will be open to possible buffer-overflow security" | tee -a configure.log - echo " vulnerabilities." | tee -a configure.log - - echo >> configure.log - cat >$test.c <<EOF -#include <stdio.h> -int mytest() -{ - char buf[20]; - return sprintf(buf, "%s", "foo"); -} -int main() -{ - return (mytest()); -} -EOF - - if try $CC -c $CFLAGS $test.c; then - echo "Checking for return value of sprintf()... Yes." | tee -a configure.log - else - CFLAGS="$CFLAGS -DHAS_sprintf_void" - SFLAGS="$SFLAGS -DHAS_sprintf_void" - echo "Checking for return value of sprintf()... No." | tee -a configure.log - echo " WARNING: apparently sprintf() does not return a value. zlib" | tee -a configure.log - echo " can build but will be open to possible string-format security" | tee -a configure.log - echo " vulnerabilities." | tee -a configure.log - fi - fi -fi - -# see if we can hide zlib internal symbols that are linked between separate source files -if test "$gcc" -eq 1; then - echo >> configure.log - cat > $test.c <<EOF -#define ZLIB_INTERNAL __attribute__((visibility ("hidden"))) -int ZLIB_INTERNAL foo; -int main() -{ - return 0; -} -EOF - if tryboth $CC -c $CFLAGS $test.c; then - CFLAGS="$CFLAGS -DHAVE_HIDDEN" - SFLAGS="$SFLAGS -DHAVE_HIDDEN" - echo "Checking for attribute(visibility) support... Yes." | tee -a configure.log - else - echo "Checking for attribute(visibility) support... No." | tee -a configure.log - fi -fi - -# show the results in the log -echo >> configure.log -echo ALL = $ALL >> configure.log -echo AR = $AR >> configure.log -echo ARFLAGS = $ARFLAGS >> configure.log -echo CC = $CC >> configure.log -echo CFLAGS = $CFLAGS >> configure.log -echo CPP = $CPP >> configure.log -echo EXE = $EXE >> configure.log -echo LDCONFIG = $LDCONFIG >> configure.log -echo LDFLAGS = $LDFLAGS >> configure.log -echo LDSHARED = $LDSHARED >> configure.log -echo LDSHAREDLIBC = $LDSHAREDLIBC >> configure.log -echo OBJC = $OBJC >> configure.log -echo PIC_OBJC = $PIC_OBJC >> configure.log -echo RANLIB = $RANLIB >> configure.log -echo SFLAGS = $SFLAGS >> configure.log -echo SHAREDLIB = $SHAREDLIB >> configure.log -echo SHAREDLIBM = $SHAREDLIBM >> configure.log -echo SHAREDLIBV = $SHAREDLIBV >> configure.log -echo STATICLIB = $STATICLIB >> configure.log -echo TEST = $TEST >> configure.log -echo VER = $VER >> configure.log -echo Z_U4 = $Z_U4 >> configure.log -echo exec_prefix = $exec_prefix >> configure.log -echo includedir = $includedir >> configure.log -echo libdir = $libdir >> configure.log -echo mandir = $mandir >> configure.log -echo prefix = $prefix >> configure.log -echo sharedlibdir = $sharedlibdir >> configure.log -echo uname = $uname >> configure.log - -# udpate Makefile with the configure results -sed < Makefile.in " -/^CC *=/s#=.*#=$CC# -/^CFLAGS *=/s#=.*#=$CFLAGS# -/^SFLAGS *=/s#=.*#=$SFLAGS# -/^LDFLAGS *=/s#=.*#=$LDFLAGS# -/^LDSHARED *=/s#=.*#=$LDSHARED# -/^CPP *=/s#=.*#=$CPP# -/^STATICLIB *=/s#=.*#=$STATICLIB# -/^SHAREDLIB *=/s#=.*#=$SHAREDLIB# -/^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV# -/^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM# -/^AR *=/s#=.*#=$AR# -/^ARFLAGS *=/s#=.*#=$ARFLAGS# -/^RANLIB *=/s#=.*#=$RANLIB# -/^LDCONFIG *=/s#=.*#=$LDCONFIG# -/^LDSHAREDLIBC *=/s#=.*#=$LDSHAREDLIBC# -/^EXE *=/s#=.*#=$EXE# -/^prefix *=/s#=.*#=$prefix# -/^exec_prefix *=/s#=.*#=$exec_prefix# -/^libdir *=/s#=.*#=$libdir# -/^sharedlibdir *=/s#=.*#=$sharedlibdir# -/^includedir *=/s#=.*#=$includedir# -/^mandir *=/s#=.*#=$mandir# -/^OBJC *=/s#=.*#= $OBJC# -/^PIC_OBJC *=/s#=.*#= $PIC_OBJC# -/^all: */s#:.*#: $ALL# -/^test: */s#:.*#: $TEST# -" > Makefile - -# create zlib.pc with the configure results -sed < zlib.pc.in " -/^CC *=/s#=.*#=$CC# -/^CFLAGS *=/s#=.*#=$CFLAGS# -/^CPP *=/s#=.*#=$CPP# -/^LDSHARED *=/s#=.*#=$LDSHARED# -/^STATICLIB *=/s#=.*#=$STATICLIB# -/^SHAREDLIB *=/s#=.*#=$SHAREDLIB# -/^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV# -/^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM# -/^AR *=/s#=.*#=$AR# -/^ARFLAGS *=/s#=.*#=$ARFLAGS# -/^RANLIB *=/s#=.*#=$RANLIB# -/^EXE *=/s#=.*#=$EXE# -/^prefix *=/s#=.*#=$prefix# -/^exec_prefix *=/s#=.*#=$exec_prefix# -/^libdir *=/s#=.*#=$libdir# -/^sharedlibdir *=/s#=.*#=$sharedlibdir# -/^includedir *=/s#=.*#=$includedir# -/^mandir *=/s#=.*#=$mandir# -/^LDFLAGS *=/s#=.*#=$LDFLAGS# -" | sed -e " -s/\@VERSION\@/$VER/g; -" > zlib.pc - -# done -leave 0 diff --git a/platform/win32/msvc/external/zlib/contrib/README.contrib b/platform/win32/msvc/external/zlib/contrib/README.contrib deleted file mode 100644 index c66349b7c67..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/README.contrib +++ /dev/null @@ -1,78 +0,0 @@ -All files under this contrib directory are UNSUPPORTED. There were -provided by users of zlib and were not tested by the authors of zlib. -Use at your own risk. Please contact the authors of the contributions -for help about these, not the zlib authors. Thanks. - - -ada/ by Dmitriy Anisimkov <anisimkov@yahoo.com> - Support for Ada - See http://zlib-ada.sourceforge.net/ - -amd64/ by Mikhail Teterin <mi@ALDAN.algebra.com> - asm code for AMD64 - See patch at http://www.freebsd.org/cgi/query-pr.cgi?pr=bin/96393 - -asm686/ by Brian Raiter <breadbox@muppetlabs.com> - asm code for Pentium and PPro/PII, using the AT&T (GNU as) syntax - See http://www.muppetlabs.com/~breadbox/software/assembly.html - -blast/ by Mark Adler <madler@alumni.caltech.edu> - Decompressor for output of PKWare Data Compression Library (DCL) - -delphi/ by Cosmin Truta <cosmint@cs.ubbcluj.ro> - Support for Delphi and C++ Builder - -dotzlib/ by Henrik Ravn <henrik@ravn.com> - Support for Microsoft .Net and Visual C++ .Net - -gcc_gvmat64/by Gilles Vollant <info@winimage.com> - GCC Version of x86 64-bit (AMD64 and Intel EM64t) code for x64 - assembler to replace longest_match() and inflate_fast() - -infback9/ by Mark Adler <madler@alumni.caltech.edu> - Unsupported diffs to infback to decode the deflate64 format - -inflate86/ by Chris Anderson <christop@charm.net> - Tuned x86 gcc asm code to replace inflate_fast() - -iostream/ by Kevin Ruland <kevin@rodin.wustl.edu> - A C++ I/O streams interface to the zlib gz* functions - -iostream2/ by Tyge Løvset <Tyge.Lovset@cmr.no> - Another C++ I/O streams interface - -iostream3/ by Ludwig Schwardt <schwardt@sun.ac.za> - and Kevin Ruland <kevin@rodin.wustl.edu> - Yet another C++ I/O streams interface - -masmx64/ by Gilles Vollant <info@winimage.com> - x86 64-bit (AMD64 and Intel EM64t) code for x64 assembler to - replace longest_match() and inflate_fast(), also masm x86 - 64-bits translation of Chris Anderson inflate_fast() - -masmx86/ by Gilles Vollant <info@winimage.com> - x86 asm code to replace longest_match() and inflate_fast(), - for Visual C++ and MASM (32 bits). - Based on Brian Raiter (asm686) and Chris Anderson (inflate86) - -minizip/ by Gilles Vollant <info@winimage.com> - Mini zip and unzip based on zlib - Includes Zip64 support by Mathias Svensson <mathias@result42.com> - See http://www.winimage.com/zLibDll/unzip.html - -pascal/ by Bob Dellaca <bobdl@xtra.co.nz> et al. - Support for Pascal - -puff/ by Mark Adler <madler@alumni.caltech.edu> - Small, low memory usage inflate. Also serves to provide an - unambiguous description of the deflate format. - -testzlib/ by Gilles Vollant <info@winimage.com> - Example of the use of zlib - -untgz/ by Pedro A. Aranda Gutierrez <paag@tid.es> - A very simple tar.gz file extractor using zlib - -vstudio/ by Gilles Vollant <info@winimage.com> - Building a minizip-enhanced zlib with Microsoft Visual Studio - Includes vc11 from kreuzerkrieg and vc12 from davispuh diff --git a/platform/win32/msvc/external/zlib/contrib/ada/buffer_demo.adb b/platform/win32/msvc/external/zlib/contrib/ada/buffer_demo.adb deleted file mode 100644 index 46b8638107f..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/ada/buffer_demo.adb +++ /dev/null @@ -1,106 +0,0 @@ ----------------------------------------------------------------- --- ZLib for Ada thick binding. -- --- -- --- Copyright (C) 2002-2004 Dmitriy Anisimkov -- --- -- --- Open source license information is in the zlib.ads file. -- ----------------------------------------------------------------- --- --- $Id: buffer_demo.adb,v 1.3 2004/09/06 06:55:35 vagul Exp $ - --- This demo program provided by Dr Steve Sangwine <sjs@essex.ac.uk> --- --- Demonstration of a problem with Zlib-Ada (already fixed) when a buffer --- of exactly the correct size is used for decompressed data, and the last --- few bytes passed in to Zlib are checksum bytes. - --- This program compresses a string of text, and then decompresses the --- compressed text into a buffer of the same size as the original text. - -with Ada.Streams; use Ada.Streams; -with Ada.Text_IO; - -with ZLib; use ZLib; - -procedure Buffer_Demo is - EOL : Character renames ASCII.LF; - Text : constant String - := "Four score and seven years ago our fathers brought forth," & EOL & - "upon this continent, a new nation, conceived in liberty," & EOL & - "and dedicated to the proposition that `all men are created equal'."; - - Source : Stream_Element_Array (1 .. Text'Length); - for Source'Address use Text'Address; - -begin - Ada.Text_IO.Put (Text); - Ada.Text_IO.New_Line; - Ada.Text_IO.Put_Line - ("Uncompressed size : " & Positive'Image (Text'Length) & " bytes"); - - declare - Compressed_Data : Stream_Element_Array (1 .. Text'Length); - L : Stream_Element_Offset; - begin - Compress : declare - Compressor : Filter_Type; - I : Stream_Element_Offset; - begin - Deflate_Init (Compressor); - - -- Compress the whole of T at once. - - Translate (Compressor, Source, I, Compressed_Data, L, Finish); - pragma Assert (I = Source'Last); - - Close (Compressor); - - Ada.Text_IO.Put_Line - ("Compressed size : " - & Stream_Element_Offset'Image (L) & " bytes"); - end Compress; - - -- Now we decompress the data, passing short blocks of data to Zlib - -- (because this demonstrates the problem - the last block passed will - -- contain checksum information and there will be no output, only a - -- check inside Zlib that the checksum is correct). - - Decompress : declare - Decompressor : Filter_Type; - - Uncompressed_Data : Stream_Element_Array (1 .. Text'Length); - - Block_Size : constant := 4; - -- This makes sure that the last block contains - -- only Adler checksum data. - - P : Stream_Element_Offset := Compressed_Data'First - 1; - O : Stream_Element_Offset; - begin - Inflate_Init (Decompressor); - - loop - Translate - (Decompressor, - Compressed_Data - (P + 1 .. Stream_Element_Offset'Min (P + Block_Size, L)), - P, - Uncompressed_Data - (Total_Out (Decompressor) + 1 .. Uncompressed_Data'Last), - O, - No_Flush); - - Ada.Text_IO.Put_Line - ("Total in : " & Count'Image (Total_In (Decompressor)) & - ", out : " & Count'Image (Total_Out (Decompressor))); - - exit when P = L; - end loop; - - Ada.Text_IO.New_Line; - Ada.Text_IO.Put_Line - ("Decompressed text matches original text : " - & Boolean'Image (Uncompressed_Data = Source)); - end Decompress; - end; -end Buffer_Demo; diff --git a/platform/win32/msvc/external/zlib/contrib/ada/mtest.adb b/platform/win32/msvc/external/zlib/contrib/ada/mtest.adb deleted file mode 100644 index c4dfd080f0c..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/ada/mtest.adb +++ /dev/null @@ -1,156 +0,0 @@ ----------------------------------------------------------------- --- ZLib for Ada thick binding. -- --- -- --- Copyright (C) 2002-2003 Dmitriy Anisimkov -- --- -- --- Open source license information is in the zlib.ads file. -- ----------------------------------------------------------------- --- Continuous test for ZLib multithreading. If the test would fail --- we should provide thread safe allocation routines for the Z_Stream. --- --- $Id: mtest.adb,v 1.4 2004/07/23 07:49:54 vagul Exp $ - -with ZLib; -with Ada.Streams; -with Ada.Numerics.Discrete_Random; -with Ada.Text_IO; -with Ada.Exceptions; -with Ada.Task_Identification; - -procedure MTest is - use Ada.Streams; - use ZLib; - - Stop : Boolean := False; - - pragma Atomic (Stop); - - subtype Visible_Symbols is Stream_Element range 16#20# .. 16#7E#; - - package Random_Elements is - new Ada.Numerics.Discrete_Random (Visible_Symbols); - - task type Test_Task; - - task body Test_Task is - Buffer : Stream_Element_Array (1 .. 100_000); - Gen : Random_Elements.Generator; - - Buffer_First : Stream_Element_Offset; - Compare_First : Stream_Element_Offset; - - Deflate : Filter_Type; - Inflate : Filter_Type; - - procedure Further (Item : in Stream_Element_Array); - - procedure Read_Buffer - (Item : out Ada.Streams.Stream_Element_Array; - Last : out Ada.Streams.Stream_Element_Offset); - - ------------- - -- Further -- - ------------- - - procedure Further (Item : in Stream_Element_Array) is - - procedure Compare (Item : in Stream_Element_Array); - - ------------- - -- Compare -- - ------------- - - procedure Compare (Item : in Stream_Element_Array) is - Next_First : Stream_Element_Offset := Compare_First + Item'Length; - begin - if Buffer (Compare_First .. Next_First - 1) /= Item then - raise Program_Error; - end if; - - Compare_First := Next_First; - end Compare; - - procedure Compare_Write is new ZLib.Write (Write => Compare); - begin - Compare_Write (Inflate, Item, No_Flush); - end Further; - - ----------------- - -- Read_Buffer -- - ----------------- - - procedure Read_Buffer - (Item : out Ada.Streams.Stream_Element_Array; - Last : out Ada.Streams.Stream_Element_Offset) - is - Buff_Diff : Stream_Element_Offset := Buffer'Last - Buffer_First; - Next_First : Stream_Element_Offset; - begin - if Item'Length <= Buff_Diff then - Last := Item'Last; - - Next_First := Buffer_First + Item'Length; - - Item := Buffer (Buffer_First .. Next_First - 1); - - Buffer_First := Next_First; - else - Last := Item'First + Buff_Diff; - Item (Item'First .. Last) := Buffer (Buffer_First .. Buffer'Last); - Buffer_First := Buffer'Last + 1; - end if; - end Read_Buffer; - - procedure Translate is new Generic_Translate - (Data_In => Read_Buffer, - Data_Out => Further); - - begin - Random_Elements.Reset (Gen); - - Buffer := (others => 20); - - Main : loop - for J in Buffer'Range loop - Buffer (J) := Random_Elements.Random (Gen); - - Deflate_Init (Deflate); - Inflate_Init (Inflate); - - Buffer_First := Buffer'First; - Compare_First := Buffer'First; - - Translate (Deflate); - - if Compare_First /= Buffer'Last + 1 then - raise Program_Error; - end if; - - Ada.Text_IO.Put_Line - (Ada.Task_Identification.Image - (Ada.Task_Identification.Current_Task) - & Stream_Element_Offset'Image (J) - & ZLib.Count'Image (Total_Out (Deflate))); - - Close (Deflate); - Close (Inflate); - - exit Main when Stop; - end loop; - end loop Main; - exception - when E : others => - Ada.Text_IO.Put_Line (Ada.Exceptions.Exception_Information (E)); - Stop := True; - end Test_Task; - - Test : array (1 .. 4) of Test_Task; - - pragma Unreferenced (Test); - - Dummy : Character; - -begin - Ada.Text_IO.Get_Immediate (Dummy); - Stop := True; -end MTest; diff --git a/platform/win32/msvc/external/zlib/contrib/ada/read.adb b/platform/win32/msvc/external/zlib/contrib/ada/read.adb deleted file mode 100644 index 1f2efbfeb80..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/ada/read.adb +++ /dev/null @@ -1,156 +0,0 @@ ----------------------------------------------------------------- --- ZLib for Ada thick binding. -- --- -- --- Copyright (C) 2002-2003 Dmitriy Anisimkov -- --- -- --- Open source license information is in the zlib.ads file. -- ----------------------------------------------------------------- - --- $Id: read.adb,v 1.8 2004/05/31 10:53:40 vagul Exp $ - --- Test/demo program for the generic read interface. - -with Ada.Numerics.Discrete_Random; -with Ada.Streams; -with Ada.Text_IO; - -with ZLib; - -procedure Read is - - use Ada.Streams; - - ------------------------------------ - -- Test configuration parameters -- - ------------------------------------ - - File_Size : Stream_Element_Offset := 100_000; - - Continuous : constant Boolean := False; - -- If this constant is True, the test would be repeated again and again, - -- with increment File_Size for every iteration. - - Header : constant ZLib.Header_Type := ZLib.Default; - -- Do not use Header other than Default in ZLib versions 1.1.4 and older. - - Init_Random : constant := 8; - -- We are using the same random sequence, in case of we catch bug, - -- so we would be able to reproduce it. - - -- End -- - - Pack_Size : Stream_Element_Offset; - Offset : Stream_Element_Offset; - - Filter : ZLib.Filter_Type; - - subtype Visible_Symbols - is Stream_Element range 16#20# .. 16#7E#; - - package Random_Elements is new - Ada.Numerics.Discrete_Random (Visible_Symbols); - - Gen : Random_Elements.Generator; - Period : constant Stream_Element_Offset := 200; - -- Period constant variable for random generator not to be very random. - -- Bigger period, harder random. - - Read_Buffer : Stream_Element_Array (1 .. 2048); - Read_First : Stream_Element_Offset; - Read_Last : Stream_Element_Offset; - - procedure Reset; - - procedure Read - (Item : out Stream_Element_Array; - Last : out Stream_Element_Offset); - -- this procedure is for generic instantiation of - -- ZLib.Read - -- reading data from the File_In. - - procedure Read is new ZLib.Read - (Read, - Read_Buffer, - Rest_First => Read_First, - Rest_Last => Read_Last); - - ---------- - -- Read -- - ---------- - - procedure Read - (Item : out Stream_Element_Array; - Last : out Stream_Element_Offset) is - begin - Last := Stream_Element_Offset'Min - (Item'Last, - Item'First + File_Size - Offset); - - for J in Item'First .. Last loop - if J < Item'First + Period then - Item (J) := Random_Elements.Random (Gen); - else - Item (J) := Item (J - Period); - end if; - - Offset := Offset + 1; - end loop; - end Read; - - ----------- - -- Reset -- - ----------- - - procedure Reset is - begin - Random_Elements.Reset (Gen, Init_Random); - Pack_Size := 0; - Offset := 1; - Read_First := Read_Buffer'Last + 1; - Read_Last := Read_Buffer'Last; - end Reset; - -begin - Ada.Text_IO.Put_Line ("ZLib " & ZLib.Version); - - loop - for Level in ZLib.Compression_Level'Range loop - - Ada.Text_IO.Put ("Level =" - & ZLib.Compression_Level'Image (Level)); - - -- Deflate using generic instantiation. - - ZLib.Deflate_Init - (Filter, - Level, - Header => Header); - - Reset; - - Ada.Text_IO.Put - (Stream_Element_Offset'Image (File_Size) & " ->"); - - loop - declare - Buffer : Stream_Element_Array (1 .. 1024); - Last : Stream_Element_Offset; - begin - Read (Filter, Buffer, Last); - - Pack_Size := Pack_Size + Last - Buffer'First + 1; - - exit when Last < Buffer'Last; - end; - end loop; - - Ada.Text_IO.Put_Line (Stream_Element_Offset'Image (Pack_Size)); - - ZLib.Close (Filter); - end loop; - - exit when not Continuous; - - File_Size := File_Size + 1; - end loop; -end Read; diff --git a/platform/win32/msvc/external/zlib/contrib/ada/readme.txt b/platform/win32/msvc/external/zlib/contrib/ada/readme.txt deleted file mode 100644 index ce4d2cadf0d..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/ada/readme.txt +++ /dev/null @@ -1,65 +0,0 @@ - ZLib for Ada thick binding (ZLib.Ada) - Release 1.3 - -ZLib.Ada is a thick binding interface to the popular ZLib data -compression library, available at http://www.gzip.org/zlib/. -It provides Ada-style access to the ZLib C library. - - - Here are the main changes since ZLib.Ada 1.2: - -- Attension: ZLib.Read generic routine have a initialization requirement - for Read_Last parameter now. It is a bit incompartible with previous version, - but extends functionality, we could use new parameters Allow_Read_Some and - Flush now. - -- Added Is_Open routines to ZLib and ZLib.Streams packages. - -- Add pragma Assert to check Stream_Element is 8 bit. - -- Fix extraction to buffer with exact known decompressed size. Error reported by - Steve Sangwine. - -- Fix definition of ULong (changed to unsigned_long), fix regression on 64 bits - computers. Patch provided by Pascal Obry. - -- Add Status_Error exception definition. - -- Add pragma Assertion that Ada.Streams.Stream_Element size is 8 bit. - - - How to build ZLib.Ada under GNAT - -You should have the ZLib library already build on your computer, before -building ZLib.Ada. Make the directory of ZLib.Ada sources current and -issue the command: - - gnatmake test -largs -L<directory where libz.a is> -lz - -Or use the GNAT project file build for GNAT 3.15 or later: - - gnatmake -Pzlib.gpr -L<directory where libz.a is> - - - How to build ZLib.Ada under Aonix ObjectAda for Win32 7.2.2 - -1. Make a project with all *.ads and *.adb files from the distribution. -2. Build the libz.a library from the ZLib C sources. -3. Rename libz.a to z.lib. -4. Add the library z.lib to the project. -5. Add the libc.lib library from the ObjectAda distribution to the project. -6. Build the executable using test.adb as a main procedure. - - - How to use ZLib.Ada - -The source files test.adb and read.adb are small demo programs that show -the main functionality of ZLib.Ada. - -The routines from the package specifications are commented. - - -Homepage: http://zlib-ada.sourceforge.net/ -Author: Dmitriy Anisimkov <anisimkov@yahoo.com> - -Contributors: Pascal Obry <pascal@obry.org>, Steve Sangwine <sjs@essex.ac.uk> diff --git a/platform/win32/msvc/external/zlib/contrib/ada/test.adb b/platform/win32/msvc/external/zlib/contrib/ada/test.adb deleted file mode 100644 index 90773acfa18..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/ada/test.adb +++ /dev/null @@ -1,463 +0,0 @@ ----------------------------------------------------------------- --- ZLib for Ada thick binding. -- --- -- --- Copyright (C) 2002-2003 Dmitriy Anisimkov -- --- -- --- Open source license information is in the zlib.ads file. -- ----------------------------------------------------------------- - --- $Id: test.adb,v 1.17 2003/08/12 12:13:30 vagul Exp $ - --- The program has a few aims. --- 1. Test ZLib.Ada95 thick binding functionality. --- 2. Show the example of use main functionality of the ZLib.Ada95 binding. --- 3. Build this program automatically compile all ZLib.Ada95 packages under --- GNAT Ada95 compiler. - -with ZLib.Streams; -with Ada.Streams.Stream_IO; -with Ada.Numerics.Discrete_Random; - -with Ada.Text_IO; - -with Ada.Calendar; - -procedure Test is - - use Ada.Streams; - use Stream_IO; - - ------------------------------------ - -- Test configuration parameters -- - ------------------------------------ - - File_Size : Count := 100_000; - Continuous : constant Boolean := False; - - Header : constant ZLib.Header_Type := ZLib.Default; - -- ZLib.None; - -- ZLib.Auto; - -- ZLib.GZip; - -- Do not use Header other then Default in ZLib versions 1.1.4 - -- and older. - - Strategy : constant ZLib.Strategy_Type := ZLib.Default_Strategy; - Init_Random : constant := 10; - - -- End -- - - In_File_Name : constant String := "testzlib.in"; - -- Name of the input file - - Z_File_Name : constant String := "testzlib.zlb"; - -- Name of the compressed file. - - Out_File_Name : constant String := "testzlib.out"; - -- Name of the decompressed file. - - File_In : File_Type; - File_Out : File_Type; - File_Back : File_Type; - File_Z : ZLib.Streams.Stream_Type; - - Filter : ZLib.Filter_Type; - - Time_Stamp : Ada.Calendar.Time; - - procedure Generate_File; - -- Generate file of spetsified size with some random data. - -- The random data is repeatable, for the good compression. - - procedure Compare_Streams - (Left, Right : in out Root_Stream_Type'Class); - -- The procedure compearing data in 2 streams. - -- It is for compare data before and after compression/decompression. - - procedure Compare_Files (Left, Right : String); - -- Compare files. Based on the Compare_Streams. - - procedure Copy_Streams - (Source, Target : in out Root_Stream_Type'Class; - Buffer_Size : in Stream_Element_Offset := 1024); - -- Copying data from one stream to another. It is for test stream - -- interface of the library. - - procedure Data_In - (Item : out Stream_Element_Array; - Last : out Stream_Element_Offset); - -- this procedure is for generic instantiation of - -- ZLib.Generic_Translate. - -- reading data from the File_In. - - procedure Data_Out (Item : in Stream_Element_Array); - -- this procedure is for generic instantiation of - -- ZLib.Generic_Translate. - -- writing data to the File_Out. - - procedure Stamp; - -- Store the timestamp to the local variable. - - procedure Print_Statistic (Msg : String; Data_Size : ZLib.Count); - -- Print the time statistic with the message. - - procedure Translate is new ZLib.Generic_Translate - (Data_In => Data_In, - Data_Out => Data_Out); - -- This procedure is moving data from File_In to File_Out - -- with compression or decompression, depend on initialization of - -- Filter parameter. - - ------------------- - -- Compare_Files -- - ------------------- - - procedure Compare_Files (Left, Right : String) is - Left_File, Right_File : File_Type; - begin - Open (Left_File, In_File, Left); - Open (Right_File, In_File, Right); - Compare_Streams (Stream (Left_File).all, Stream (Right_File).all); - Close (Left_File); - Close (Right_File); - end Compare_Files; - - --------------------- - -- Compare_Streams -- - --------------------- - - procedure Compare_Streams - (Left, Right : in out Ada.Streams.Root_Stream_Type'Class) - is - Left_Buffer, Right_Buffer : Stream_Element_Array (0 .. 16#FFF#); - Left_Last, Right_Last : Stream_Element_Offset; - begin - loop - Read (Left, Left_Buffer, Left_Last); - Read (Right, Right_Buffer, Right_Last); - - if Left_Last /= Right_Last then - Ada.Text_IO.Put_Line ("Compare error :" - & Stream_Element_Offset'Image (Left_Last) - & " /= " - & Stream_Element_Offset'Image (Right_Last)); - - raise Constraint_Error; - - elsif Left_Buffer (0 .. Left_Last) - /= Right_Buffer (0 .. Right_Last) - then - Ada.Text_IO.Put_Line ("ERROR: IN and OUT files is not equal."); - raise Constraint_Error; - - end if; - - exit when Left_Last < Left_Buffer'Last; - end loop; - end Compare_Streams; - - ------------------ - -- Copy_Streams -- - ------------------ - - procedure Copy_Streams - (Source, Target : in out Ada.Streams.Root_Stream_Type'Class; - Buffer_Size : in Stream_Element_Offset := 1024) - is - Buffer : Stream_Element_Array (1 .. Buffer_Size); - Last : Stream_Element_Offset; - begin - loop - Read (Source, Buffer, Last); - Write (Target, Buffer (1 .. Last)); - - exit when Last < Buffer'Last; - end loop; - end Copy_Streams; - - ------------- - -- Data_In -- - ------------- - - procedure Data_In - (Item : out Stream_Element_Array; - Last : out Stream_Element_Offset) is - begin - Read (File_In, Item, Last); - end Data_In; - - -------------- - -- Data_Out -- - -------------- - - procedure Data_Out (Item : in Stream_Element_Array) is - begin - Write (File_Out, Item); - end Data_Out; - - ------------------- - -- Generate_File -- - ------------------- - - procedure Generate_File is - subtype Visible_Symbols is Stream_Element range 16#20# .. 16#7E#; - - package Random_Elements is - new Ada.Numerics.Discrete_Random (Visible_Symbols); - - Gen : Random_Elements.Generator; - Buffer : Stream_Element_Array := (1 .. 77 => 16#20#) & 10; - - Buffer_Count : constant Count := File_Size / Buffer'Length; - -- Number of same buffers in the packet. - - Density : constant Count := 30; -- from 0 to Buffer'Length - 2; - - procedure Fill_Buffer (J, D : in Count); - -- Change the part of the buffer. - - ----------------- - -- Fill_Buffer -- - ----------------- - - procedure Fill_Buffer (J, D : in Count) is - begin - for K in 0 .. D loop - Buffer - (Stream_Element_Offset ((J + K) mod (Buffer'Length - 1) + 1)) - := Random_Elements.Random (Gen); - - end loop; - end Fill_Buffer; - - begin - Random_Elements.Reset (Gen, Init_Random); - - Create (File_In, Out_File, In_File_Name); - - Fill_Buffer (1, Buffer'Length - 2); - - for J in 1 .. Buffer_Count loop - Write (File_In, Buffer); - - Fill_Buffer (J, Density); - end loop; - - -- fill remain size. - - Write - (File_In, - Buffer - (1 .. Stream_Element_Offset - (File_Size - Buffer'Length * Buffer_Count))); - - Flush (File_In); - Close (File_In); - end Generate_File; - - --------------------- - -- Print_Statistic -- - --------------------- - - procedure Print_Statistic (Msg : String; Data_Size : ZLib.Count) is - use Ada.Calendar; - use Ada.Text_IO; - - package Count_IO is new Integer_IO (ZLib.Count); - - Curr_Dur : Duration := Clock - Time_Stamp; - begin - Put (Msg); - - Set_Col (20); - Ada.Text_IO.Put ("size ="); - - Count_IO.Put - (Data_Size, - Width => Stream_IO.Count'Image (File_Size)'Length); - - Put_Line (" duration =" & Duration'Image (Curr_Dur)); - end Print_Statistic; - - ----------- - -- Stamp -- - ----------- - - procedure Stamp is - begin - Time_Stamp := Ada.Calendar.Clock; - end Stamp; - -begin - Ada.Text_IO.Put_Line ("ZLib " & ZLib.Version); - - loop - Generate_File; - - for Level in ZLib.Compression_Level'Range loop - - Ada.Text_IO.Put_Line ("Level =" - & ZLib.Compression_Level'Image (Level)); - - -- Test generic interface. - Open (File_In, In_File, In_File_Name); - Create (File_Out, Out_File, Z_File_Name); - - Stamp; - - -- Deflate using generic instantiation. - - ZLib.Deflate_Init - (Filter => Filter, - Level => Level, - Strategy => Strategy, - Header => Header); - - Translate (Filter); - Print_Statistic ("Generic compress", ZLib.Total_Out (Filter)); - ZLib.Close (Filter); - - Close (File_In); - Close (File_Out); - - Open (File_In, In_File, Z_File_Name); - Create (File_Out, Out_File, Out_File_Name); - - Stamp; - - -- Inflate using generic instantiation. - - ZLib.Inflate_Init (Filter, Header => Header); - - Translate (Filter); - Print_Statistic ("Generic decompress", ZLib.Total_Out (Filter)); - - ZLib.Close (Filter); - - Close (File_In); - Close (File_Out); - - Compare_Files (In_File_Name, Out_File_Name); - - -- Test stream interface. - - -- Compress to the back stream. - - Open (File_In, In_File, In_File_Name); - Create (File_Back, Out_File, Z_File_Name); - - Stamp; - - ZLib.Streams.Create - (Stream => File_Z, - Mode => ZLib.Streams.Out_Stream, - Back => ZLib.Streams.Stream_Access - (Stream (File_Back)), - Back_Compressed => True, - Level => Level, - Strategy => Strategy, - Header => Header); - - Copy_Streams - (Source => Stream (File_In).all, - Target => File_Z); - - -- Flushing internal buffers to the back stream. - - ZLib.Streams.Flush (File_Z, ZLib.Finish); - - Print_Statistic ("Write compress", - ZLib.Streams.Write_Total_Out (File_Z)); - - ZLib.Streams.Close (File_Z); - - Close (File_In); - Close (File_Back); - - -- Compare reading from original file and from - -- decompression stream. - - Open (File_In, In_File, In_File_Name); - Open (File_Back, In_File, Z_File_Name); - - ZLib.Streams.Create - (Stream => File_Z, - Mode => ZLib.Streams.In_Stream, - Back => ZLib.Streams.Stream_Access - (Stream (File_Back)), - Back_Compressed => True, - Header => Header); - - Stamp; - Compare_Streams (Stream (File_In).all, File_Z); - - Print_Statistic ("Read decompress", - ZLib.Streams.Read_Total_Out (File_Z)); - - ZLib.Streams.Close (File_Z); - Close (File_In); - Close (File_Back); - - -- Compress by reading from compression stream. - - Open (File_Back, In_File, In_File_Name); - Create (File_Out, Out_File, Z_File_Name); - - ZLib.Streams.Create - (Stream => File_Z, - Mode => ZLib.Streams.In_Stream, - Back => ZLib.Streams.Stream_Access - (Stream (File_Back)), - Back_Compressed => False, - Level => Level, - Strategy => Strategy, - Header => Header); - - Stamp; - Copy_Streams - (Source => File_Z, - Target => Stream (File_Out).all); - - Print_Statistic ("Read compress", - ZLib.Streams.Read_Total_Out (File_Z)); - - ZLib.Streams.Close (File_Z); - - Close (File_Out); - Close (File_Back); - - -- Decompress to decompression stream. - - Open (File_In, In_File, Z_File_Name); - Create (File_Back, Out_File, Out_File_Name); - - ZLib.Streams.Create - (Stream => File_Z, - Mode => ZLib.Streams.Out_Stream, - Back => ZLib.Streams.Stream_Access - (Stream (File_Back)), - Back_Compressed => False, - Header => Header); - - Stamp; - - Copy_Streams - (Source => Stream (File_In).all, - Target => File_Z); - - Print_Statistic ("Write decompress", - ZLib.Streams.Write_Total_Out (File_Z)); - - ZLib.Streams.Close (File_Z); - Close (File_In); - Close (File_Back); - - Compare_Files (In_File_Name, Out_File_Name); - end loop; - - Ada.Text_IO.Put_Line (Count'Image (File_Size) & " Ok."); - - exit when not Continuous; - - File_Size := File_Size + 1; - end loop; -end Test; diff --git a/platform/win32/msvc/external/zlib/contrib/ada/zlib-streams.adb b/platform/win32/msvc/external/zlib/contrib/ada/zlib-streams.adb deleted file mode 100644 index b6497bae286..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/ada/zlib-streams.adb +++ /dev/null @@ -1,225 +0,0 @@ ----------------------------------------------------------------- --- ZLib for Ada thick binding. -- --- -- --- Copyright (C) 2002-2003 Dmitriy Anisimkov -- --- -- --- Open source license information is in the zlib.ads file. -- ----------------------------------------------------------------- - --- $Id: zlib-streams.adb,v 1.10 2004/05/31 10:53:40 vagul Exp $ - -with Ada.Unchecked_Deallocation; - -package body ZLib.Streams is - - ----------- - -- Close -- - ----------- - - procedure Close (Stream : in out Stream_Type) is - procedure Free is new Ada.Unchecked_Deallocation - (Stream_Element_Array, Buffer_Access); - begin - if Stream.Mode = Out_Stream or Stream.Mode = Duplex then - -- We should flush the data written by the writer. - - Flush (Stream, Finish); - - Close (Stream.Writer); - end if; - - if Stream.Mode = In_Stream or Stream.Mode = Duplex then - Close (Stream.Reader); - Free (Stream.Buffer); - end if; - end Close; - - ------------ - -- Create -- - ------------ - - procedure Create - (Stream : out Stream_Type; - Mode : in Stream_Mode; - Back : in Stream_Access; - Back_Compressed : in Boolean; - Level : in Compression_Level := Default_Compression; - Strategy : in Strategy_Type := Default_Strategy; - Header : in Header_Type := Default; - Read_Buffer_Size : in Ada.Streams.Stream_Element_Offset - := Default_Buffer_Size; - Write_Buffer_Size : in Ada.Streams.Stream_Element_Offset - := Default_Buffer_Size) - is - - subtype Buffer_Subtype is Stream_Element_Array (1 .. Read_Buffer_Size); - - procedure Init_Filter - (Filter : in out Filter_Type; - Compress : in Boolean); - - ----------------- - -- Init_Filter -- - ----------------- - - procedure Init_Filter - (Filter : in out Filter_Type; - Compress : in Boolean) is - begin - if Compress then - Deflate_Init - (Filter, Level, Strategy, Header => Header); - else - Inflate_Init (Filter, Header => Header); - end if; - end Init_Filter; - - begin - Stream.Back := Back; - Stream.Mode := Mode; - - if Mode = Out_Stream or Mode = Duplex then - Init_Filter (Stream.Writer, Back_Compressed); - Stream.Buffer_Size := Write_Buffer_Size; - else - Stream.Buffer_Size := 0; - end if; - - if Mode = In_Stream or Mode = Duplex then - Init_Filter (Stream.Reader, not Back_Compressed); - - Stream.Buffer := new Buffer_Subtype; - Stream.Rest_First := Stream.Buffer'Last + 1; - Stream.Rest_Last := Stream.Buffer'Last; - end if; - end Create; - - ----------- - -- Flush -- - ----------- - - procedure Flush - (Stream : in out Stream_Type; - Mode : in Flush_Mode := Sync_Flush) - is - Buffer : Stream_Element_Array (1 .. Stream.Buffer_Size); - Last : Stream_Element_Offset; - begin - loop - Flush (Stream.Writer, Buffer, Last, Mode); - - Ada.Streams.Write (Stream.Back.all, Buffer (1 .. Last)); - - exit when Last < Buffer'Last; - end loop; - end Flush; - - ------------- - -- Is_Open -- - ------------- - - function Is_Open (Stream : Stream_Type) return Boolean is - begin - return Is_Open (Stream.Reader) or else Is_Open (Stream.Writer); - end Is_Open; - - ---------- - -- Read -- - ---------- - - procedure Read - (Stream : in out Stream_Type; - Item : out Stream_Element_Array; - Last : out Stream_Element_Offset) - is - - procedure Read - (Item : out Stream_Element_Array; - Last : out Stream_Element_Offset); - - ---------- - -- Read -- - ---------- - - procedure Read - (Item : out Stream_Element_Array; - Last : out Stream_Element_Offset) is - begin - Ada.Streams.Read (Stream.Back.all, Item, Last); - end Read; - - procedure Read is new ZLib.Read - (Read => Read, - Buffer => Stream.Buffer.all, - Rest_First => Stream.Rest_First, - Rest_Last => Stream.Rest_Last); - - begin - Read (Stream.Reader, Item, Last); - end Read; - - ------------------- - -- Read_Total_In -- - ------------------- - - function Read_Total_In (Stream : in Stream_Type) return Count is - begin - return Total_In (Stream.Reader); - end Read_Total_In; - - -------------------- - -- Read_Total_Out -- - -------------------- - - function Read_Total_Out (Stream : in Stream_Type) return Count is - begin - return Total_Out (Stream.Reader); - end Read_Total_Out; - - ----------- - -- Write -- - ----------- - - procedure Write - (Stream : in out Stream_Type; - Item : in Stream_Element_Array) - is - - procedure Write (Item : in Stream_Element_Array); - - ----------- - -- Write -- - ----------- - - procedure Write (Item : in Stream_Element_Array) is - begin - Ada.Streams.Write (Stream.Back.all, Item); - end Write; - - procedure Write is new ZLib.Write - (Write => Write, - Buffer_Size => Stream.Buffer_Size); - - begin - Write (Stream.Writer, Item, No_Flush); - end Write; - - -------------------- - -- Write_Total_In -- - -------------------- - - function Write_Total_In (Stream : in Stream_Type) return Count is - begin - return Total_In (Stream.Writer); - end Write_Total_In; - - --------------------- - -- Write_Total_Out -- - --------------------- - - function Write_Total_Out (Stream : in Stream_Type) return Count is - begin - return Total_Out (Stream.Writer); - end Write_Total_Out; - -end ZLib.Streams; diff --git a/platform/win32/msvc/external/zlib/contrib/ada/zlib-streams.ads b/platform/win32/msvc/external/zlib/contrib/ada/zlib-streams.ads deleted file mode 100644 index f0193c6baee..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/ada/zlib-streams.ads +++ /dev/null @@ -1,114 +0,0 @@ ----------------------------------------------------------------- --- ZLib for Ada thick binding. -- --- -- --- Copyright (C) 2002-2003 Dmitriy Anisimkov -- --- -- --- Open source license information is in the zlib.ads file. -- ----------------------------------------------------------------- - --- $Id: zlib-streams.ads,v 1.12 2004/05/31 10:53:40 vagul Exp $ - -package ZLib.Streams is - - type Stream_Mode is (In_Stream, Out_Stream, Duplex); - - type Stream_Access is access all Ada.Streams.Root_Stream_Type'Class; - - type Stream_Type is - new Ada.Streams.Root_Stream_Type with private; - - procedure Read - (Stream : in out Stream_Type; - Item : out Ada.Streams.Stream_Element_Array; - Last : out Ada.Streams.Stream_Element_Offset); - - procedure Write - (Stream : in out Stream_Type; - Item : in Ada.Streams.Stream_Element_Array); - - procedure Flush - (Stream : in out Stream_Type; - Mode : in Flush_Mode := Sync_Flush); - -- Flush the written data to the back stream, - -- all data placed to the compressor is flushing to the Back stream. - -- Should not be used untill necessary, becouse it is decreasing - -- compression. - - function Read_Total_In (Stream : in Stream_Type) return Count; - pragma Inline (Read_Total_In); - -- Return total number of bytes read from back stream so far. - - function Read_Total_Out (Stream : in Stream_Type) return Count; - pragma Inline (Read_Total_Out); - -- Return total number of bytes read so far. - - function Write_Total_In (Stream : in Stream_Type) return Count; - pragma Inline (Write_Total_In); - -- Return total number of bytes written so far. - - function Write_Total_Out (Stream : in Stream_Type) return Count; - pragma Inline (Write_Total_Out); - -- Return total number of bytes written to the back stream. - - procedure Create - (Stream : out Stream_Type; - Mode : in Stream_Mode; - Back : in Stream_Access; - Back_Compressed : in Boolean; - Level : in Compression_Level := Default_Compression; - Strategy : in Strategy_Type := Default_Strategy; - Header : in Header_Type := Default; - Read_Buffer_Size : in Ada.Streams.Stream_Element_Offset - := Default_Buffer_Size; - Write_Buffer_Size : in Ada.Streams.Stream_Element_Offset - := Default_Buffer_Size); - -- Create the Comression/Decompression stream. - -- If mode is In_Stream then Write operation is disabled. - -- If mode is Out_Stream then Read operation is disabled. - - -- If Back_Compressed is true then - -- Data written to the Stream is compressing to the Back stream - -- and data read from the Stream is decompressed data from the Back stream. - - -- If Back_Compressed is false then - -- Data written to the Stream is decompressing to the Back stream - -- and data read from the Stream is compressed data from the Back stream. - - -- !!! When the Need_Header is False ZLib-Ada is using undocumented - -- ZLib 1.1.4 functionality to do not create/wait for ZLib headers. - - function Is_Open (Stream : Stream_Type) return Boolean; - - procedure Close (Stream : in out Stream_Type); - -private - - use Ada.Streams; - - type Buffer_Access is access all Stream_Element_Array; - - type Stream_Type - is new Root_Stream_Type with - record - Mode : Stream_Mode; - - Buffer : Buffer_Access; - Rest_First : Stream_Element_Offset; - Rest_Last : Stream_Element_Offset; - -- Buffer for Read operation. - -- We need to have this buffer in the record - -- becouse not all read data from back stream - -- could be processed during the read operation. - - Buffer_Size : Stream_Element_Offset; - -- Buffer size for write operation. - -- We do not need to have this buffer - -- in the record becouse all data could be - -- processed in the write operation. - - Back : Stream_Access; - Reader : Filter_Type; - Writer : Filter_Type; - end record; - -end ZLib.Streams; diff --git a/platform/win32/msvc/external/zlib/contrib/ada/zlib-thin.adb b/platform/win32/msvc/external/zlib/contrib/ada/zlib-thin.adb deleted file mode 100644 index 0ca4a712046..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/ada/zlib-thin.adb +++ /dev/null @@ -1,141 +0,0 @@ ----------------------------------------------------------------- --- ZLib for Ada thick binding. -- --- -- --- Copyright (C) 2002-2003 Dmitriy Anisimkov -- --- -- --- Open source license information is in the zlib.ads file. -- ----------------------------------------------------------------- - --- $Id: zlib-thin.adb,v 1.8 2003/12/14 18:27:31 vagul Exp $ - -package body ZLib.Thin is - - ZLIB_VERSION : constant Chars_Ptr := zlibVersion; - - Z_Stream_Size : constant Int := Z_Stream'Size / System.Storage_Unit; - - -------------- - -- Avail_In -- - -------------- - - function Avail_In (Strm : in Z_Stream) return UInt is - begin - return Strm.Avail_In; - end Avail_In; - - --------------- - -- Avail_Out -- - --------------- - - function Avail_Out (Strm : in Z_Stream) return UInt is - begin - return Strm.Avail_Out; - end Avail_Out; - - ------------------ - -- Deflate_Init -- - ------------------ - - function Deflate_Init - (strm : Z_Streamp; - level : Int; - method : Int; - windowBits : Int; - memLevel : Int; - strategy : Int) - return Int is - begin - return deflateInit2 - (strm, - level, - method, - windowBits, - memLevel, - strategy, - ZLIB_VERSION, - Z_Stream_Size); - end Deflate_Init; - - ------------------ - -- Inflate_Init -- - ------------------ - - function Inflate_Init (strm : Z_Streamp; windowBits : Int) return Int is - begin - return inflateInit2 (strm, windowBits, ZLIB_VERSION, Z_Stream_Size); - end Inflate_Init; - - ------------------------ - -- Last_Error_Message -- - ------------------------ - - function Last_Error_Message (Strm : in Z_Stream) return String is - use Interfaces.C.Strings; - begin - if Strm.msg = Null_Ptr then - return ""; - else - return Value (Strm.msg); - end if; - end Last_Error_Message; - - ------------ - -- Set_In -- - ------------ - - procedure Set_In - (Strm : in out Z_Stream; - Buffer : in Voidp; - Size : in UInt) is - begin - Strm.Next_In := Buffer; - Strm.Avail_In := Size; - end Set_In; - - ------------------ - -- Set_Mem_Func -- - ------------------ - - procedure Set_Mem_Func - (Strm : in out Z_Stream; - Opaque : in Voidp; - Alloc : in alloc_func; - Free : in free_func) is - begin - Strm.opaque := Opaque; - Strm.zalloc := Alloc; - Strm.zfree := Free; - end Set_Mem_Func; - - ------------- - -- Set_Out -- - ------------- - - procedure Set_Out - (Strm : in out Z_Stream; - Buffer : in Voidp; - Size : in UInt) is - begin - Strm.Next_Out := Buffer; - Strm.Avail_Out := Size; - end Set_Out; - - -------------- - -- Total_In -- - -------------- - - function Total_In (Strm : in Z_Stream) return ULong is - begin - return Strm.Total_In; - end Total_In; - - --------------- - -- Total_Out -- - --------------- - - function Total_Out (Strm : in Z_Stream) return ULong is - begin - return Strm.Total_Out; - end Total_Out; - -end ZLib.Thin; diff --git a/platform/win32/msvc/external/zlib/contrib/ada/zlib-thin.ads b/platform/win32/msvc/external/zlib/contrib/ada/zlib-thin.ads deleted file mode 100644 index d4407eb800d..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/ada/zlib-thin.ads +++ /dev/null @@ -1,450 +0,0 @@ ----------------------------------------------------------------- --- ZLib for Ada thick binding. -- --- -- --- Copyright (C) 2002-2003 Dmitriy Anisimkov -- --- -- --- Open source license information is in the zlib.ads file. -- ----------------------------------------------------------------- - --- $Id: zlib-thin.ads,v 1.11 2004/07/23 06:33:11 vagul Exp $ - -with Interfaces.C.Strings; - -with System; - -private package ZLib.Thin is - - -- From zconf.h - - MAX_MEM_LEVEL : constant := 9; -- zconf.h:105 - -- zconf.h:105 - MAX_WBITS : constant := 15; -- zconf.h:115 - -- 32K LZ77 window - -- zconf.h:115 - SEEK_SET : constant := 8#0000#; -- zconf.h:244 - -- Seek from beginning of file. - -- zconf.h:244 - SEEK_CUR : constant := 1; -- zconf.h:245 - -- Seek from current position. - -- zconf.h:245 - SEEK_END : constant := 2; -- zconf.h:246 - -- Set file pointer to EOF plus "offset" - -- zconf.h:246 - - type Byte is new Interfaces.C.unsigned_char; -- 8 bits - -- zconf.h:214 - type UInt is new Interfaces.C.unsigned; -- 16 bits or more - -- zconf.h:216 - type Int is new Interfaces.C.int; - - type ULong is new Interfaces.C.unsigned_long; -- 32 bits or more - -- zconf.h:217 - subtype Chars_Ptr is Interfaces.C.Strings.chars_ptr; - - type ULong_Access is access ULong; - type Int_Access is access Int; - - subtype Voidp is System.Address; -- zconf.h:232 - - subtype Byte_Access is Voidp; - - Nul : constant Voidp := System.Null_Address; - -- end from zconf - - Z_NO_FLUSH : constant := 8#0000#; -- zlib.h:125 - -- zlib.h:125 - Z_PARTIAL_FLUSH : constant := 1; -- zlib.h:126 - -- will be removed, use - -- Z_SYNC_FLUSH instead - -- zlib.h:126 - Z_SYNC_FLUSH : constant := 2; -- zlib.h:127 - -- zlib.h:127 - Z_FULL_FLUSH : constant := 3; -- zlib.h:128 - -- zlib.h:128 - Z_FINISH : constant := 4; -- zlib.h:129 - -- zlib.h:129 - Z_OK : constant := 8#0000#; -- zlib.h:132 - -- zlib.h:132 - Z_STREAM_END : constant := 1; -- zlib.h:133 - -- zlib.h:133 - Z_NEED_DICT : constant := 2; -- zlib.h:134 - -- zlib.h:134 - Z_ERRNO : constant := -1; -- zlib.h:135 - -- zlib.h:135 - Z_STREAM_ERROR : constant := -2; -- zlib.h:136 - -- zlib.h:136 - Z_DATA_ERROR : constant := -3; -- zlib.h:137 - -- zlib.h:137 - Z_MEM_ERROR : constant := -4; -- zlib.h:138 - -- zlib.h:138 - Z_BUF_ERROR : constant := -5; -- zlib.h:139 - -- zlib.h:139 - Z_VERSION_ERROR : constant := -6; -- zlib.h:140 - -- zlib.h:140 - Z_NO_COMPRESSION : constant := 8#0000#; -- zlib.h:145 - -- zlib.h:145 - Z_BEST_SPEED : constant := 1; -- zlib.h:146 - -- zlib.h:146 - Z_BEST_COMPRESSION : constant := 9; -- zlib.h:147 - -- zlib.h:147 - Z_DEFAULT_COMPRESSION : constant := -1; -- zlib.h:148 - -- zlib.h:148 - Z_FILTERED : constant := 1; -- zlib.h:151 - -- zlib.h:151 - Z_HUFFMAN_ONLY : constant := 2; -- zlib.h:152 - -- zlib.h:152 - Z_DEFAULT_STRATEGY : constant := 8#0000#; -- zlib.h:153 - -- zlib.h:153 - Z_BINARY : constant := 8#0000#; -- zlib.h:156 - -- zlib.h:156 - Z_ASCII : constant := 1; -- zlib.h:157 - -- zlib.h:157 - Z_UNKNOWN : constant := 2; -- zlib.h:158 - -- zlib.h:158 - Z_DEFLATED : constant := 8; -- zlib.h:161 - -- zlib.h:161 - Z_NULL : constant := 8#0000#; -- zlib.h:164 - -- for initializing zalloc, zfree, opaque - -- zlib.h:164 - type gzFile is new Voidp; -- zlib.h:646 - - type Z_Stream is private; - - type Z_Streamp is access all Z_Stream; -- zlib.h:89 - - type alloc_func is access function - (Opaque : Voidp; - Items : UInt; - Size : UInt) - return Voidp; -- zlib.h:63 - - type free_func is access procedure (opaque : Voidp; address : Voidp); - - function zlibVersion return Chars_Ptr; - - function Deflate (strm : Z_Streamp; flush : Int) return Int; - - function DeflateEnd (strm : Z_Streamp) return Int; - - function Inflate (strm : Z_Streamp; flush : Int) return Int; - - function InflateEnd (strm : Z_Streamp) return Int; - - function deflateSetDictionary - (strm : Z_Streamp; - dictionary : Byte_Access; - dictLength : UInt) - return Int; - - function deflateCopy (dest : Z_Streamp; source : Z_Streamp) return Int; - -- zlib.h:478 - - function deflateReset (strm : Z_Streamp) return Int; -- zlib.h:495 - - function deflateParams - (strm : Z_Streamp; - level : Int; - strategy : Int) - return Int; -- zlib.h:506 - - function inflateSetDictionary - (strm : Z_Streamp; - dictionary : Byte_Access; - dictLength : UInt) - return Int; -- zlib.h:548 - - function inflateSync (strm : Z_Streamp) return Int; -- zlib.h:565 - - function inflateReset (strm : Z_Streamp) return Int; -- zlib.h:580 - - function compress - (dest : Byte_Access; - destLen : ULong_Access; - source : Byte_Access; - sourceLen : ULong) - return Int; -- zlib.h:601 - - function compress2 - (dest : Byte_Access; - destLen : ULong_Access; - source : Byte_Access; - sourceLen : ULong; - level : Int) - return Int; -- zlib.h:615 - - function uncompress - (dest : Byte_Access; - destLen : ULong_Access; - source : Byte_Access; - sourceLen : ULong) - return Int; - - function gzopen (path : Chars_Ptr; mode : Chars_Ptr) return gzFile; - - function gzdopen (fd : Int; mode : Chars_Ptr) return gzFile; - - function gzsetparams - (file : gzFile; - level : Int; - strategy : Int) - return Int; - - function gzread - (file : gzFile; - buf : Voidp; - len : UInt) - return Int; - - function gzwrite - (file : in gzFile; - buf : in Voidp; - len : in UInt) - return Int; - - function gzprintf (file : in gzFile; format : in Chars_Ptr) return Int; - - function gzputs (file : in gzFile; s : in Chars_Ptr) return Int; - - function gzgets - (file : gzFile; - buf : Chars_Ptr; - len : Int) - return Chars_Ptr; - - function gzputc (file : gzFile; char : Int) return Int; - - function gzgetc (file : gzFile) return Int; - - function gzflush (file : gzFile; flush : Int) return Int; - - function gzseek - (file : gzFile; - offset : Int; - whence : Int) - return Int; - - function gzrewind (file : gzFile) return Int; - - function gztell (file : gzFile) return Int; - - function gzeof (file : gzFile) return Int; - - function gzclose (file : gzFile) return Int; - - function gzerror (file : gzFile; errnum : Int_Access) return Chars_Ptr; - - function adler32 - (adler : ULong; - buf : Byte_Access; - len : UInt) - return ULong; - - function crc32 - (crc : ULong; - buf : Byte_Access; - len : UInt) - return ULong; - - function deflateInit - (strm : Z_Streamp; - level : Int; - version : Chars_Ptr; - stream_size : Int) - return Int; - - function deflateInit2 - (strm : Z_Streamp; - level : Int; - method : Int; - windowBits : Int; - memLevel : Int; - strategy : Int; - version : Chars_Ptr; - stream_size : Int) - return Int; - - function Deflate_Init - (strm : Z_Streamp; - level : Int; - method : Int; - windowBits : Int; - memLevel : Int; - strategy : Int) - return Int; - pragma Inline (Deflate_Init); - - function inflateInit - (strm : Z_Streamp; - version : Chars_Ptr; - stream_size : Int) - return Int; - - function inflateInit2 - (strm : in Z_Streamp; - windowBits : in Int; - version : in Chars_Ptr; - stream_size : in Int) - return Int; - - function inflateBackInit - (strm : in Z_Streamp; - windowBits : in Int; - window : in Byte_Access; - version : in Chars_Ptr; - stream_size : in Int) - return Int; - -- Size of window have to be 2**windowBits. - - function Inflate_Init (strm : Z_Streamp; windowBits : Int) return Int; - pragma Inline (Inflate_Init); - - function zError (err : Int) return Chars_Ptr; - - function inflateSyncPoint (z : Z_Streamp) return Int; - - function get_crc_table return ULong_Access; - - -- Interface to the available fields of the z_stream structure. - -- The application must update next_in and avail_in when avail_in has - -- dropped to zero. It must update next_out and avail_out when avail_out - -- has dropped to zero. The application must initialize zalloc, zfree and - -- opaque before calling the init function. - - procedure Set_In - (Strm : in out Z_Stream; - Buffer : in Voidp; - Size : in UInt); - pragma Inline (Set_In); - - procedure Set_Out - (Strm : in out Z_Stream; - Buffer : in Voidp; - Size : in UInt); - pragma Inline (Set_Out); - - procedure Set_Mem_Func - (Strm : in out Z_Stream; - Opaque : in Voidp; - Alloc : in alloc_func; - Free : in free_func); - pragma Inline (Set_Mem_Func); - - function Last_Error_Message (Strm : in Z_Stream) return String; - pragma Inline (Last_Error_Message); - - function Avail_Out (Strm : in Z_Stream) return UInt; - pragma Inline (Avail_Out); - - function Avail_In (Strm : in Z_Stream) return UInt; - pragma Inline (Avail_In); - - function Total_In (Strm : in Z_Stream) return ULong; - pragma Inline (Total_In); - - function Total_Out (Strm : in Z_Stream) return ULong; - pragma Inline (Total_Out); - - function inflateCopy - (dest : in Z_Streamp; - Source : in Z_Streamp) - return Int; - - function compressBound (Source_Len : in ULong) return ULong; - - function deflateBound - (Strm : in Z_Streamp; - Source_Len : in ULong) - return ULong; - - function gzungetc (C : in Int; File : in gzFile) return Int; - - function zlibCompileFlags return ULong; - -private - - type Z_Stream is record -- zlib.h:68 - Next_In : Voidp := Nul; -- next input byte - Avail_In : UInt := 0; -- number of bytes available at next_in - Total_In : ULong := 0; -- total nb of input bytes read so far - Next_Out : Voidp := Nul; -- next output byte should be put there - Avail_Out : UInt := 0; -- remaining free space at next_out - Total_Out : ULong := 0; -- total nb of bytes output so far - msg : Chars_Ptr; -- last error message, NULL if no error - state : Voidp; -- not visible by applications - zalloc : alloc_func := null; -- used to allocate the internal state - zfree : free_func := null; -- used to free the internal state - opaque : Voidp; -- private data object passed to - -- zalloc and zfree - data_type : Int; -- best guess about the data type: - -- ascii or binary - adler : ULong; -- adler32 value of the uncompressed - -- data - reserved : ULong; -- reserved for future use - end record; - - pragma Convention (C, Z_Stream); - - pragma Import (C, zlibVersion, "zlibVersion"); - pragma Import (C, Deflate, "deflate"); - pragma Import (C, DeflateEnd, "deflateEnd"); - pragma Import (C, Inflate, "inflate"); - pragma Import (C, InflateEnd, "inflateEnd"); - pragma Import (C, deflateSetDictionary, "deflateSetDictionary"); - pragma Import (C, deflateCopy, "deflateCopy"); - pragma Import (C, deflateReset, "deflateReset"); - pragma Import (C, deflateParams, "deflateParams"); - pragma Import (C, inflateSetDictionary, "inflateSetDictionary"); - pragma Import (C, inflateSync, "inflateSync"); - pragma Import (C, inflateReset, "inflateReset"); - pragma Import (C, compress, "compress"); - pragma Import (C, compress2, "compress2"); - pragma Import (C, uncompress, "uncompress"); - pragma Import (C, gzopen, "gzopen"); - pragma Import (C, gzdopen, "gzdopen"); - pragma Import (C, gzsetparams, "gzsetparams"); - pragma Import (C, gzread, "gzread"); - pragma Import (C, gzwrite, "gzwrite"); - pragma Import (C, gzprintf, "gzprintf"); - pragma Import (C, gzputs, "gzputs"); - pragma Import (C, gzgets, "gzgets"); - pragma Import (C, gzputc, "gzputc"); - pragma Import (C, gzgetc, "gzgetc"); - pragma Import (C, gzflush, "gzflush"); - pragma Import (C, gzseek, "gzseek"); - pragma Import (C, gzrewind, "gzrewind"); - pragma Import (C, gztell, "gztell"); - pragma Import (C, gzeof, "gzeof"); - pragma Import (C, gzclose, "gzclose"); - pragma Import (C, gzerror, "gzerror"); - pragma Import (C, adler32, "adler32"); - pragma Import (C, crc32, "crc32"); - pragma Import (C, deflateInit, "deflateInit_"); - pragma Import (C, inflateInit, "inflateInit_"); - pragma Import (C, deflateInit2, "deflateInit2_"); - pragma Import (C, inflateInit2, "inflateInit2_"); - pragma Import (C, zError, "zError"); - pragma Import (C, inflateSyncPoint, "inflateSyncPoint"); - pragma Import (C, get_crc_table, "get_crc_table"); - - -- since zlib 1.2.0: - - pragma Import (C, inflateCopy, "inflateCopy"); - pragma Import (C, compressBound, "compressBound"); - pragma Import (C, deflateBound, "deflateBound"); - pragma Import (C, gzungetc, "gzungetc"); - pragma Import (C, zlibCompileFlags, "zlibCompileFlags"); - - pragma Import (C, inflateBackInit, "inflateBackInit_"); - - -- I stopped binding the inflateBack routines, becouse realize that - -- it does not support zlib and gzip headers for now, and have no - -- symmetric deflateBack routines. - -- ZLib-Ada is symmetric regarding deflate/inflate data transformation - -- and has a similar generic callback interface for the - -- deflate/inflate transformation based on the regular Deflate/Inflate - -- routines. - - -- pragma Import (C, inflateBack, "inflateBack"); - -- pragma Import (C, inflateBackEnd, "inflateBackEnd"); - -end ZLib.Thin; diff --git a/platform/win32/msvc/external/zlib/contrib/ada/zlib.adb b/platform/win32/msvc/external/zlib/contrib/ada/zlib.adb deleted file mode 100644 index 8b6fd686ac7..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/ada/zlib.adb +++ /dev/null @@ -1,701 +0,0 @@ ----------------------------------------------------------------- --- ZLib for Ada thick binding. -- --- -- --- Copyright (C) 2002-2004 Dmitriy Anisimkov -- --- -- --- Open source license information is in the zlib.ads file. -- ----------------------------------------------------------------- - --- $Id: zlib.adb,v 1.31 2004/09/06 06:53:19 vagul Exp $ - -with Ada.Exceptions; -with Ada.Unchecked_Conversion; -with Ada.Unchecked_Deallocation; - -with Interfaces.C.Strings; - -with ZLib.Thin; - -package body ZLib is - - use type Thin.Int; - - type Z_Stream is new Thin.Z_Stream; - - type Return_Code_Enum is - (OK, - STREAM_END, - NEED_DICT, - ERRNO, - STREAM_ERROR, - DATA_ERROR, - MEM_ERROR, - BUF_ERROR, - VERSION_ERROR); - - type Flate_Step_Function is access - function (Strm : in Thin.Z_Streamp; Flush : in Thin.Int) return Thin.Int; - pragma Convention (C, Flate_Step_Function); - - type Flate_End_Function is access - function (Ctrm : in Thin.Z_Streamp) return Thin.Int; - pragma Convention (C, Flate_End_Function); - - type Flate_Type is record - Step : Flate_Step_Function; - Done : Flate_End_Function; - end record; - - subtype Footer_Array is Stream_Element_Array (1 .. 8); - - Simple_GZip_Header : constant Stream_Element_Array (1 .. 10) - := (16#1f#, 16#8b#, -- Magic header - 16#08#, -- Z_DEFLATED - 16#00#, -- Flags - 16#00#, 16#00#, 16#00#, 16#00#, -- Time - 16#00#, -- XFlags - 16#03# -- OS code - ); - -- The simplest gzip header is not for informational, but just for - -- gzip format compatibility. - -- Note that some code below is using assumption - -- Simple_GZip_Header'Last > Footer_Array'Last, so do not make - -- Simple_GZip_Header'Last <= Footer_Array'Last. - - Return_Code : constant array (Thin.Int range <>) of Return_Code_Enum - := (0 => OK, - 1 => STREAM_END, - 2 => NEED_DICT, - -1 => ERRNO, - -2 => STREAM_ERROR, - -3 => DATA_ERROR, - -4 => MEM_ERROR, - -5 => BUF_ERROR, - -6 => VERSION_ERROR); - - Flate : constant array (Boolean) of Flate_Type - := (True => (Step => Thin.Deflate'Access, - Done => Thin.DeflateEnd'Access), - False => (Step => Thin.Inflate'Access, - Done => Thin.InflateEnd'Access)); - - Flush_Finish : constant array (Boolean) of Flush_Mode - := (True => Finish, False => No_Flush); - - procedure Raise_Error (Stream : in Z_Stream); - pragma Inline (Raise_Error); - - procedure Raise_Error (Message : in String); - pragma Inline (Raise_Error); - - procedure Check_Error (Stream : in Z_Stream; Code : in Thin.Int); - - procedure Free is new Ada.Unchecked_Deallocation - (Z_Stream, Z_Stream_Access); - - function To_Thin_Access is new Ada.Unchecked_Conversion - (Z_Stream_Access, Thin.Z_Streamp); - - procedure Translate_GZip - (Filter : in out Filter_Type; - In_Data : in Ada.Streams.Stream_Element_Array; - In_Last : out Ada.Streams.Stream_Element_Offset; - Out_Data : out Ada.Streams.Stream_Element_Array; - Out_Last : out Ada.Streams.Stream_Element_Offset; - Flush : in Flush_Mode); - -- Separate translate routine for make gzip header. - - procedure Translate_Auto - (Filter : in out Filter_Type; - In_Data : in Ada.Streams.Stream_Element_Array; - In_Last : out Ada.Streams.Stream_Element_Offset; - Out_Data : out Ada.Streams.Stream_Element_Array; - Out_Last : out Ada.Streams.Stream_Element_Offset; - Flush : in Flush_Mode); - -- translate routine without additional headers. - - ----------------- - -- Check_Error -- - ----------------- - - procedure Check_Error (Stream : in Z_Stream; Code : in Thin.Int) is - use type Thin.Int; - begin - if Code /= Thin.Z_OK then - Raise_Error - (Return_Code_Enum'Image (Return_Code (Code)) - & ": " & Last_Error_Message (Stream)); - end if; - end Check_Error; - - ----------- - -- Close -- - ----------- - - procedure Close - (Filter : in out Filter_Type; - Ignore_Error : in Boolean := False) - is - Code : Thin.Int; - begin - if not Ignore_Error and then not Is_Open (Filter) then - raise Status_Error; - end if; - - Code := Flate (Filter.Compression).Done (To_Thin_Access (Filter.Strm)); - - if Ignore_Error or else Code = Thin.Z_OK then - Free (Filter.Strm); - else - declare - Error_Message : constant String - := Last_Error_Message (Filter.Strm.all); - begin - Free (Filter.Strm); - Ada.Exceptions.Raise_Exception - (ZLib_Error'Identity, - Return_Code_Enum'Image (Return_Code (Code)) - & ": " & Error_Message); - end; - end if; - end Close; - - ----------- - -- CRC32 -- - ----------- - - function CRC32 - (CRC : in Unsigned_32; - Data : in Ada.Streams.Stream_Element_Array) - return Unsigned_32 - is - use Thin; - begin - return Unsigned_32 (crc32 (ULong (CRC), - Data'Address, - Data'Length)); - end CRC32; - - procedure CRC32 - (CRC : in out Unsigned_32; - Data : in Ada.Streams.Stream_Element_Array) is - begin - CRC := CRC32 (CRC, Data); - end CRC32; - - ------------------ - -- Deflate_Init -- - ------------------ - - procedure Deflate_Init - (Filter : in out Filter_Type; - Level : in Compression_Level := Default_Compression; - Strategy : in Strategy_Type := Default_Strategy; - Method : in Compression_Method := Deflated; - Window_Bits : in Window_Bits_Type := Default_Window_Bits; - Memory_Level : in Memory_Level_Type := Default_Memory_Level; - Header : in Header_Type := Default) - is - use type Thin.Int; - Win_Bits : Thin.Int := Thin.Int (Window_Bits); - begin - if Is_Open (Filter) then - raise Status_Error; - end if; - - -- We allow ZLib to make header only in case of default header type. - -- Otherwise we would either do header by ourselfs, or do not do - -- header at all. - - if Header = None or else Header = GZip then - Win_Bits := -Win_Bits; - end if; - - -- For the GZip CRC calculation and make headers. - - if Header = GZip then - Filter.CRC := 0; - Filter.Offset := Simple_GZip_Header'First; - else - Filter.Offset := Simple_GZip_Header'Last + 1; - end if; - - Filter.Strm := new Z_Stream; - Filter.Compression := True; - Filter.Stream_End := False; - Filter.Header := Header; - - if Thin.Deflate_Init - (To_Thin_Access (Filter.Strm), - Level => Thin.Int (Level), - method => Thin.Int (Method), - windowBits => Win_Bits, - memLevel => Thin.Int (Memory_Level), - strategy => Thin.Int (Strategy)) /= Thin.Z_OK - then - Raise_Error (Filter.Strm.all); - end if; - end Deflate_Init; - - ----------- - -- Flush -- - ----------- - - procedure Flush - (Filter : in out Filter_Type; - Out_Data : out Ada.Streams.Stream_Element_Array; - Out_Last : out Ada.Streams.Stream_Element_Offset; - Flush : in Flush_Mode) - is - No_Data : Stream_Element_Array := (1 .. 0 => 0); - Last : Stream_Element_Offset; - begin - Translate (Filter, No_Data, Last, Out_Data, Out_Last, Flush); - end Flush; - - ----------------------- - -- Generic_Translate -- - ----------------------- - - procedure Generic_Translate - (Filter : in out ZLib.Filter_Type; - In_Buffer_Size : in Integer := Default_Buffer_Size; - Out_Buffer_Size : in Integer := Default_Buffer_Size) - is - In_Buffer : Stream_Element_Array - (1 .. Stream_Element_Offset (In_Buffer_Size)); - Out_Buffer : Stream_Element_Array - (1 .. Stream_Element_Offset (Out_Buffer_Size)); - Last : Stream_Element_Offset; - In_Last : Stream_Element_Offset; - In_First : Stream_Element_Offset; - Out_Last : Stream_Element_Offset; - begin - Main : loop - Data_In (In_Buffer, Last); - - In_First := In_Buffer'First; - - loop - Translate - (Filter => Filter, - In_Data => In_Buffer (In_First .. Last), - In_Last => In_Last, - Out_Data => Out_Buffer, - Out_Last => Out_Last, - Flush => Flush_Finish (Last < In_Buffer'First)); - - if Out_Buffer'First <= Out_Last then - Data_Out (Out_Buffer (Out_Buffer'First .. Out_Last)); - end if; - - exit Main when Stream_End (Filter); - - -- The end of in buffer. - - exit when In_Last = Last; - - In_First := In_Last + 1; - end loop; - end loop Main; - - end Generic_Translate; - - ------------------ - -- Inflate_Init -- - ------------------ - - procedure Inflate_Init - (Filter : in out Filter_Type; - Window_Bits : in Window_Bits_Type := Default_Window_Bits; - Header : in Header_Type := Default) - is - use type Thin.Int; - Win_Bits : Thin.Int := Thin.Int (Window_Bits); - - procedure Check_Version; - -- Check the latest header types compatibility. - - procedure Check_Version is - begin - if Version <= "1.1.4" then - Raise_Error - ("Inflate header type " & Header_Type'Image (Header) - & " incompatible with ZLib version " & Version); - end if; - end Check_Version; - - begin - if Is_Open (Filter) then - raise Status_Error; - end if; - - case Header is - when None => - Check_Version; - - -- Inflate data without headers determined - -- by negative Win_Bits. - - Win_Bits := -Win_Bits; - when GZip => - Check_Version; - - -- Inflate gzip data defined by flag 16. - - Win_Bits := Win_Bits + 16; - when Auto => - Check_Version; - - -- Inflate with automatic detection - -- of gzip or native header defined by flag 32. - - Win_Bits := Win_Bits + 32; - when Default => null; - end case; - - Filter.Strm := new Z_Stream; - Filter.Compression := False; - Filter.Stream_End := False; - Filter.Header := Header; - - if Thin.Inflate_Init - (To_Thin_Access (Filter.Strm), Win_Bits) /= Thin.Z_OK - then - Raise_Error (Filter.Strm.all); - end if; - end Inflate_Init; - - ------------- - -- Is_Open -- - ------------- - - function Is_Open (Filter : in Filter_Type) return Boolean is - begin - return Filter.Strm /= null; - end Is_Open; - - ----------------- - -- Raise_Error -- - ----------------- - - procedure Raise_Error (Message : in String) is - begin - Ada.Exceptions.Raise_Exception (ZLib_Error'Identity, Message); - end Raise_Error; - - procedure Raise_Error (Stream : in Z_Stream) is - begin - Raise_Error (Last_Error_Message (Stream)); - end Raise_Error; - - ---------- - -- Read -- - ---------- - - procedure Read - (Filter : in out Filter_Type; - Item : out Ada.Streams.Stream_Element_Array; - Last : out Ada.Streams.Stream_Element_Offset; - Flush : in Flush_Mode := No_Flush) - is - In_Last : Stream_Element_Offset; - Item_First : Ada.Streams.Stream_Element_Offset := Item'First; - V_Flush : Flush_Mode := Flush; - - begin - pragma Assert (Rest_First in Buffer'First .. Buffer'Last + 1); - pragma Assert (Rest_Last in Buffer'First - 1 .. Buffer'Last); - - loop - if Rest_Last = Buffer'First - 1 then - V_Flush := Finish; - - elsif Rest_First > Rest_Last then - Read (Buffer, Rest_Last); - Rest_First := Buffer'First; - - if Rest_Last < Buffer'First then - V_Flush := Finish; - end if; - end if; - - Translate - (Filter => Filter, - In_Data => Buffer (Rest_First .. Rest_Last), - In_Last => In_Last, - Out_Data => Item (Item_First .. Item'Last), - Out_Last => Last, - Flush => V_Flush); - - Rest_First := In_Last + 1; - - exit when Stream_End (Filter) - or else Last = Item'Last - or else (Last >= Item'First and then Allow_Read_Some); - - Item_First := Last + 1; - end loop; - end Read; - - ---------------- - -- Stream_End -- - ---------------- - - function Stream_End (Filter : in Filter_Type) return Boolean is - begin - if Filter.Header = GZip and Filter.Compression then - return Filter.Stream_End - and then Filter.Offset = Footer_Array'Last + 1; - else - return Filter.Stream_End; - end if; - end Stream_End; - - -------------- - -- Total_In -- - -------------- - - function Total_In (Filter : in Filter_Type) return Count is - begin - return Count (Thin.Total_In (To_Thin_Access (Filter.Strm).all)); - end Total_In; - - --------------- - -- Total_Out -- - --------------- - - function Total_Out (Filter : in Filter_Type) return Count is - begin - return Count (Thin.Total_Out (To_Thin_Access (Filter.Strm).all)); - end Total_Out; - - --------------- - -- Translate -- - --------------- - - procedure Translate - (Filter : in out Filter_Type; - In_Data : in Ada.Streams.Stream_Element_Array; - In_Last : out Ada.Streams.Stream_Element_Offset; - Out_Data : out Ada.Streams.Stream_Element_Array; - Out_Last : out Ada.Streams.Stream_Element_Offset; - Flush : in Flush_Mode) is - begin - if Filter.Header = GZip and then Filter.Compression then - Translate_GZip - (Filter => Filter, - In_Data => In_Data, - In_Last => In_Last, - Out_Data => Out_Data, - Out_Last => Out_Last, - Flush => Flush); - else - Translate_Auto - (Filter => Filter, - In_Data => In_Data, - In_Last => In_Last, - Out_Data => Out_Data, - Out_Last => Out_Last, - Flush => Flush); - end if; - end Translate; - - -------------------- - -- Translate_Auto -- - -------------------- - - procedure Translate_Auto - (Filter : in out Filter_Type; - In_Data : in Ada.Streams.Stream_Element_Array; - In_Last : out Ada.Streams.Stream_Element_Offset; - Out_Data : out Ada.Streams.Stream_Element_Array; - Out_Last : out Ada.Streams.Stream_Element_Offset; - Flush : in Flush_Mode) - is - use type Thin.Int; - Code : Thin.Int; - - begin - if not Is_Open (Filter) then - raise Status_Error; - end if; - - if Out_Data'Length = 0 and then In_Data'Length = 0 then - raise Constraint_Error; - end if; - - Set_Out (Filter.Strm.all, Out_Data'Address, Out_Data'Length); - Set_In (Filter.Strm.all, In_Data'Address, In_Data'Length); - - Code := Flate (Filter.Compression).Step - (To_Thin_Access (Filter.Strm), - Thin.Int (Flush)); - - if Code = Thin.Z_STREAM_END then - Filter.Stream_End := True; - else - Check_Error (Filter.Strm.all, Code); - end if; - - In_Last := In_Data'Last - - Stream_Element_Offset (Avail_In (Filter.Strm.all)); - Out_Last := Out_Data'Last - - Stream_Element_Offset (Avail_Out (Filter.Strm.all)); - end Translate_Auto; - - -------------------- - -- Translate_GZip -- - -------------------- - - procedure Translate_GZip - (Filter : in out Filter_Type; - In_Data : in Ada.Streams.Stream_Element_Array; - In_Last : out Ada.Streams.Stream_Element_Offset; - Out_Data : out Ada.Streams.Stream_Element_Array; - Out_Last : out Ada.Streams.Stream_Element_Offset; - Flush : in Flush_Mode) - is - Out_First : Stream_Element_Offset; - - procedure Add_Data (Data : in Stream_Element_Array); - -- Add data to stream from the Filter.Offset till necessary, - -- used for add gzip headr/footer. - - procedure Put_32 - (Item : in out Stream_Element_Array; - Data : in Unsigned_32); - pragma Inline (Put_32); - - -------------- - -- Add_Data -- - -------------- - - procedure Add_Data (Data : in Stream_Element_Array) is - Data_First : Stream_Element_Offset renames Filter.Offset; - Data_Last : Stream_Element_Offset; - Data_Len : Stream_Element_Offset; -- -1 - Out_Len : Stream_Element_Offset; -- -1 - begin - Out_First := Out_Last + 1; - - if Data_First > Data'Last then - return; - end if; - - Data_Len := Data'Last - Data_First; - Out_Len := Out_Data'Last - Out_First; - - if Data_Len <= Out_Len then - Out_Last := Out_First + Data_Len; - Data_Last := Data'Last; - else - Out_Last := Out_Data'Last; - Data_Last := Data_First + Out_Len; - end if; - - Out_Data (Out_First .. Out_Last) := Data (Data_First .. Data_Last); - - Data_First := Data_Last + 1; - Out_First := Out_Last + 1; - end Add_Data; - - ------------ - -- Put_32 -- - ------------ - - procedure Put_32 - (Item : in out Stream_Element_Array; - Data : in Unsigned_32) - is - D : Unsigned_32 := Data; - begin - for J in Item'First .. Item'First + 3 loop - Item (J) := Stream_Element (D and 16#FF#); - D := Shift_Right (D, 8); - end loop; - end Put_32; - - begin - Out_Last := Out_Data'First - 1; - - if not Filter.Stream_End then - Add_Data (Simple_GZip_Header); - - Translate_Auto - (Filter => Filter, - In_Data => In_Data, - In_Last => In_Last, - Out_Data => Out_Data (Out_First .. Out_Data'Last), - Out_Last => Out_Last, - Flush => Flush); - - CRC32 (Filter.CRC, In_Data (In_Data'First .. In_Last)); - end if; - - if Filter.Stream_End and then Out_Last <= Out_Data'Last then - -- This detection method would work only when - -- Simple_GZip_Header'Last > Footer_Array'Last - - if Filter.Offset = Simple_GZip_Header'Last + 1 then - Filter.Offset := Footer_Array'First; - end if; - - declare - Footer : Footer_Array; - begin - Put_32 (Footer, Filter.CRC); - Put_32 (Footer (Footer'First + 4 .. Footer'Last), - Unsigned_32 (Total_In (Filter))); - Add_Data (Footer); - end; - end if; - end Translate_GZip; - - ------------- - -- Version -- - ------------- - - function Version return String is - begin - return Interfaces.C.Strings.Value (Thin.zlibVersion); - end Version; - - ----------- - -- Write -- - ----------- - - procedure Write - (Filter : in out Filter_Type; - Item : in Ada.Streams.Stream_Element_Array; - Flush : in Flush_Mode := No_Flush) - is - Buffer : Stream_Element_Array (1 .. Buffer_Size); - In_Last : Stream_Element_Offset; - Out_Last : Stream_Element_Offset; - In_First : Stream_Element_Offset := Item'First; - begin - if Item'Length = 0 and Flush = No_Flush then - return; - end if; - - loop - Translate - (Filter => Filter, - In_Data => Item (In_First .. Item'Last), - In_Last => In_Last, - Out_Data => Buffer, - Out_Last => Out_Last, - Flush => Flush); - - if Out_Last >= Buffer'First then - Write (Buffer (1 .. Out_Last)); - end if; - - exit when In_Last = Item'Last or Stream_End (Filter); - - In_First := In_Last + 1; - end loop; - end Write; - -end ZLib; diff --git a/platform/win32/msvc/external/zlib/contrib/ada/zlib.ads b/platform/win32/msvc/external/zlib/contrib/ada/zlib.ads deleted file mode 100644 index 79ffc4095cf..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/ada/zlib.ads +++ /dev/null @@ -1,328 +0,0 @@ ------------------------------------------------------------------------------- --- ZLib for Ada thick binding. -- --- -- --- Copyright (C) 2002-2004 Dmitriy Anisimkov -- --- -- --- This library 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 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 -- --- General Public License for more details. -- --- -- --- You should have received a copy of the GNU 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. -- --- -- --- As a special exception, if other files instantiate generics from this -- --- unit, or you link this unit with other files to produce an executable, -- --- this unit does not by itself cause the resulting executable to be -- --- covered by the GNU General Public License. This exception does not -- --- however invalidate any other reasons why the executable file might be -- --- covered by the GNU Public License. -- ------------------------------------------------------------------------------- - --- $Id: zlib.ads,v 1.26 2004/09/06 06:53:19 vagul Exp $ - -with Ada.Streams; - -with Interfaces; - -package ZLib is - - ZLib_Error : exception; - Status_Error : exception; - - type Compression_Level is new Integer range -1 .. 9; - - type Flush_Mode is private; - - type Compression_Method is private; - - type Window_Bits_Type is new Integer range 8 .. 15; - - type Memory_Level_Type is new Integer range 1 .. 9; - - type Unsigned_32 is new Interfaces.Unsigned_32; - - type Strategy_Type is private; - - type Header_Type is (None, Auto, Default, GZip); - -- Header type usage have a some limitation for inflate. - -- See comment for Inflate_Init. - - subtype Count is Ada.Streams.Stream_Element_Count; - - Default_Memory_Level : constant Memory_Level_Type := 8; - Default_Window_Bits : constant Window_Bits_Type := 15; - - ---------------------------------- - -- Compression method constants -- - ---------------------------------- - - Deflated : constant Compression_Method; - -- Only one method allowed in this ZLib version - - --------------------------------- - -- Compression level constants -- - --------------------------------- - - No_Compression : constant Compression_Level := 0; - Best_Speed : constant Compression_Level := 1; - Best_Compression : constant Compression_Level := 9; - Default_Compression : constant Compression_Level := -1; - - -------------------------- - -- Flush mode constants -- - -------------------------- - - No_Flush : constant Flush_Mode; - -- Regular way for compression, no flush - - Partial_Flush : constant Flush_Mode; - -- Will be removed, use Z_SYNC_FLUSH instead - - Sync_Flush : constant Flush_Mode; - -- All pending output is flushed to the output buffer and the output - -- is aligned on a byte boundary, so that the decompressor can get all - -- input data available so far. (In particular avail_in is zero after the - -- call if enough output space has been provided before the call.) - -- Flushing may degrade compression for some compression algorithms and so - -- it should be used only when necessary. - - Block_Flush : constant Flush_Mode; - -- Z_BLOCK requests that inflate() stop - -- if and when it get to the next deflate block boundary. When decoding the - -- zlib or gzip format, this will cause inflate() to return immediately - -- after the header and before the first block. When doing a raw inflate, - -- inflate() will go ahead and process the first block, and will return - -- when it gets to the end of that block, or when it runs out of data. - - Full_Flush : constant Flush_Mode; - -- All output is flushed as with SYNC_FLUSH, and the compression state - -- is reset so that decompression can restart from this point if previous - -- compressed data has been damaged or if random access is desired. Using - -- Full_Flush too often can seriously degrade the compression. - - Finish : constant Flush_Mode; - -- Just for tell the compressor that input data is complete. - - ------------------------------------ - -- Compression strategy constants -- - ------------------------------------ - - -- RLE stategy could be used only in version 1.2.0 and later. - - Filtered : constant Strategy_Type; - Huffman_Only : constant Strategy_Type; - RLE : constant Strategy_Type; - Default_Strategy : constant Strategy_Type; - - Default_Buffer_Size : constant := 4096; - - type Filter_Type is tagged limited private; - -- The filter is for compression and for decompression. - -- The usage of the type is depend of its initialization. - - function Version return String; - pragma Inline (Version); - -- Return string representation of the ZLib version. - - procedure Deflate_Init - (Filter : in out Filter_Type; - Level : in Compression_Level := Default_Compression; - Strategy : in Strategy_Type := Default_Strategy; - Method : in Compression_Method := Deflated; - Window_Bits : in Window_Bits_Type := Default_Window_Bits; - Memory_Level : in Memory_Level_Type := Default_Memory_Level; - Header : in Header_Type := Default); - -- Compressor initialization. - -- When Header parameter is Auto or Default, then default zlib header - -- would be provided for compressed data. - -- When Header is GZip, then gzip header would be set instead of - -- default header. - -- When Header is None, no header would be set for compressed data. - - procedure Inflate_Init - (Filter : in out Filter_Type; - Window_Bits : in Window_Bits_Type := Default_Window_Bits; - Header : in Header_Type := Default); - -- Decompressor initialization. - -- Default header type mean that ZLib default header is expecting in the - -- input compressed stream. - -- Header type None mean that no header is expecting in the input stream. - -- GZip header type mean that GZip header is expecting in the - -- input compressed stream. - -- Auto header type mean that header type (GZip or Native) would be - -- detected automatically in the input stream. - -- Note that header types parameter values None, GZip and Auto are - -- supported for inflate routine only in ZLib versions 1.2.0.2 and later. - -- Deflate_Init is supporting all header types. - - function Is_Open (Filter : in Filter_Type) return Boolean; - pragma Inline (Is_Open); - -- Is the filter opened for compression or decompression. - - procedure Close - (Filter : in out Filter_Type; - Ignore_Error : in Boolean := False); - -- Closing the compression or decompressor. - -- If stream is closing before the complete and Ignore_Error is False, - -- The exception would be raised. - - generic - with procedure Data_In - (Item : out Ada.Streams.Stream_Element_Array; - Last : out Ada.Streams.Stream_Element_Offset); - with procedure Data_Out - (Item : in Ada.Streams.Stream_Element_Array); - procedure Generic_Translate - (Filter : in out Filter_Type; - In_Buffer_Size : in Integer := Default_Buffer_Size; - Out_Buffer_Size : in Integer := Default_Buffer_Size); - -- Compress/decompress data fetch from Data_In routine and pass the result - -- to the Data_Out routine. User should provide Data_In and Data_Out - -- for compression/decompression data flow. - -- Compression or decompression depend on Filter initialization. - - function Total_In (Filter : in Filter_Type) return Count; - pragma Inline (Total_In); - -- Returns total number of input bytes read so far - - function Total_Out (Filter : in Filter_Type) return Count; - pragma Inline (Total_Out); - -- Returns total number of bytes output so far - - function CRC32 - (CRC : in Unsigned_32; - Data : in Ada.Streams.Stream_Element_Array) - return Unsigned_32; - pragma Inline (CRC32); - -- Compute CRC32, it could be necessary for make gzip format - - procedure CRC32 - (CRC : in out Unsigned_32; - Data : in Ada.Streams.Stream_Element_Array); - pragma Inline (CRC32); - -- Compute CRC32, it could be necessary for make gzip format - - ------------------------------------------------- - -- Below is more complex low level routines. -- - ------------------------------------------------- - - procedure Translate - (Filter : in out Filter_Type; - In_Data : in Ada.Streams.Stream_Element_Array; - In_Last : out Ada.Streams.Stream_Element_Offset; - Out_Data : out Ada.Streams.Stream_Element_Array; - Out_Last : out Ada.Streams.Stream_Element_Offset; - Flush : in Flush_Mode); - -- Compress/decompress the In_Data buffer and place the result into - -- Out_Data. In_Last is the index of last element from In_Data accepted by - -- the Filter. Out_Last is the last element of the received data from - -- Filter. To tell the filter that incoming data are complete put the - -- Flush parameter to Finish. - - function Stream_End (Filter : in Filter_Type) return Boolean; - pragma Inline (Stream_End); - -- Return the true when the stream is complete. - - procedure Flush - (Filter : in out Filter_Type; - Out_Data : out Ada.Streams.Stream_Element_Array; - Out_Last : out Ada.Streams.Stream_Element_Offset; - Flush : in Flush_Mode); - pragma Inline (Flush); - -- Flushing the data from the compressor. - - generic - with procedure Write - (Item : in Ada.Streams.Stream_Element_Array); - -- User should provide this routine for accept - -- compressed/decompressed data. - - Buffer_Size : in Ada.Streams.Stream_Element_Offset - := Default_Buffer_Size; - -- Buffer size for Write user routine. - - procedure Write - (Filter : in out Filter_Type; - Item : in Ada.Streams.Stream_Element_Array; - Flush : in Flush_Mode := No_Flush); - -- Compress/Decompress data from Item to the generic parameter procedure - -- Write. Output buffer size could be set in Buffer_Size generic parameter. - - generic - with procedure Read - (Item : out Ada.Streams.Stream_Element_Array; - Last : out Ada.Streams.Stream_Element_Offset); - -- User should provide data for compression/decompression - -- thru this routine. - - Buffer : in out Ada.Streams.Stream_Element_Array; - -- Buffer for keep remaining data from the previous - -- back read. - - Rest_First, Rest_Last : in out Ada.Streams.Stream_Element_Offset; - -- Rest_First have to be initialized to Buffer'Last + 1 - -- Rest_Last have to be initialized to Buffer'Last - -- before usage. - - Allow_Read_Some : in Boolean := False; - -- Is it allowed to return Last < Item'Last before end of data. - - procedure Read - (Filter : in out Filter_Type; - Item : out Ada.Streams.Stream_Element_Array; - Last : out Ada.Streams.Stream_Element_Offset; - Flush : in Flush_Mode := No_Flush); - -- Compress/Decompress data from generic parameter procedure Read to the - -- Item. User should provide Buffer and initialized Rest_First, Rest_Last - -- indicators. If Allow_Read_Some is True, Read routines could return - -- Last < Item'Last only at end of stream. - -private - - use Ada.Streams; - - pragma Assert (Ada.Streams.Stream_Element'Size = 8); - pragma Assert (Ada.Streams.Stream_Element'Modulus = 2**8); - - type Flush_Mode is new Integer range 0 .. 5; - - type Compression_Method is new Integer range 8 .. 8; - - type Strategy_Type is new Integer range 0 .. 3; - - No_Flush : constant Flush_Mode := 0; - Partial_Flush : constant Flush_Mode := 1; - Sync_Flush : constant Flush_Mode := 2; - Full_Flush : constant Flush_Mode := 3; - Finish : constant Flush_Mode := 4; - Block_Flush : constant Flush_Mode := 5; - - Filtered : constant Strategy_Type := 1; - Huffman_Only : constant Strategy_Type := 2; - RLE : constant Strategy_Type := 3; - Default_Strategy : constant Strategy_Type := 0; - - Deflated : constant Compression_Method := 8; - - type Z_Stream; - - type Z_Stream_Access is access all Z_Stream; - - type Filter_Type is tagged limited record - Strm : Z_Stream_Access; - Compression : Boolean; - Stream_End : Boolean; - Header : Header_Type; - CRC : Unsigned_32; - Offset : Stream_Element_Offset; - -- Offset for gzip header/footer output. - end record; - -end ZLib; diff --git a/platform/win32/msvc/external/zlib/contrib/ada/zlib.gpr b/platform/win32/msvc/external/zlib/contrib/ada/zlib.gpr deleted file mode 100644 index 296b22aa966..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/ada/zlib.gpr +++ /dev/null @@ -1,20 +0,0 @@ -project Zlib is - - for Languages use ("Ada"); - for Source_Dirs use ("."); - for Object_Dir use "."; - for Main use ("test.adb", "mtest.adb", "read.adb", "buffer_demo"); - - package Compiler is - for Default_Switches ("ada") use ("-gnatwcfilopru", "-gnatVcdfimorst", "-gnatyabcefhiklmnoprst"); - end Compiler; - - package Linker is - for Default_Switches ("ada") use ("-lz"); - end Linker; - - package Builder is - for Default_Switches ("ada") use ("-s", "-gnatQ"); - end Builder; - -end Zlib; diff --git a/platform/win32/msvc/external/zlib/contrib/amd64/amd64-match.S b/platform/win32/msvc/external/zlib/contrib/amd64/amd64-match.S deleted file mode 100644 index 81d4a1c9494..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/amd64/amd64-match.S +++ /dev/null @@ -1,452 +0,0 @@ -/* - * match.S -- optimized version of longest_match() - * based on the similar work by Gilles Vollant, and Brian Raiter, written 1998 - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the BSD License. Use by owners of Che Guevarra - * parafernalia is prohibited, where possible, and highly discouraged - * elsewhere. - */ - -#ifndef NO_UNDERLINE -# define match_init _match_init -# define longest_match _longest_match -#endif - -#define scanend ebx -#define scanendw bx -#define chainlenwmask edx /* high word: current chain len low word: s->wmask */ -#define curmatch rsi -#define curmatchd esi -#define windowbestlen r8 -#define scanalign r9 -#define scanalignd r9d -#define window r10 -#define bestlen r11 -#define bestlend r11d -#define scanstart r12d -#define scanstartw r12w -#define scan r13 -#define nicematch r14d -#define limit r15 -#define limitd r15d -#define prev rcx - -/* - * The 258 is a "magic number, not a parameter -- changing it - * breaks the hell loose - */ -#define MAX_MATCH (258) -#define MIN_MATCH (3) -#define MIN_LOOKAHEAD (MAX_MATCH + MIN_MATCH + 1) -#define MAX_MATCH_8 ((MAX_MATCH + 7) & ~7) - -/* stack frame offsets */ -#define LocalVarsSize (112) -#define _chainlenwmask ( 8-LocalVarsSize)(%rsp) -#define _windowbestlen (16-LocalVarsSize)(%rsp) -#define save_r14 (24-LocalVarsSize)(%rsp) -#define save_rsi (32-LocalVarsSize)(%rsp) -#define save_rbx (40-LocalVarsSize)(%rsp) -#define save_r12 (56-LocalVarsSize)(%rsp) -#define save_r13 (64-LocalVarsSize)(%rsp) -#define save_r15 (80-LocalVarsSize)(%rsp) - - -.globl match_init, longest_match - -/* - * On AMD64 the first argument of a function (in our case -- the pointer to - * deflate_state structure) is passed in %rdi, hence our offsets below are - * all off of that. - */ - -/* you can check the structure offset by running - -#include <stdlib.h> -#include <stdio.h> -#include "deflate.h" - -void print_depl() -{ -deflate_state ds; -deflate_state *s=&ds; -printf("size pointer=%u\n",(int)sizeof(void*)); - -printf("#define dsWSize (%3u)(%%rdi)\n",(int)(((char*)&(s->w_size))-((char*)s))); -printf("#define dsWMask (%3u)(%%rdi)\n",(int)(((char*)&(s->w_mask))-((char*)s))); -printf("#define dsWindow (%3u)(%%rdi)\n",(int)(((char*)&(s->window))-((char*)s))); -printf("#define dsPrev (%3u)(%%rdi)\n",(int)(((char*)&(s->prev))-((char*)s))); -printf("#define dsMatchLen (%3u)(%%rdi)\n",(int)(((char*)&(s->match_length))-((char*)s))); -printf("#define dsPrevMatch (%3u)(%%rdi)\n",(int)(((char*)&(s->prev_match))-((char*)s))); -printf("#define dsStrStart (%3u)(%%rdi)\n",(int)(((char*)&(s->strstart))-((char*)s))); -printf("#define dsMatchStart (%3u)(%%rdi)\n",(int)(((char*)&(s->match_start))-((char*)s))); -printf("#define dsLookahead (%3u)(%%rdi)\n",(int)(((char*)&(s->lookahead))-((char*)s))); -printf("#define dsPrevLen (%3u)(%%rdi)\n",(int)(((char*)&(s->prev_length))-((char*)s))); -printf("#define dsMaxChainLen (%3u)(%%rdi)\n",(int)(((char*)&(s->max_chain_length))-((char*)s))); -printf("#define dsGoodMatch (%3u)(%%rdi)\n",(int)(((char*)&(s->good_match))-((char*)s))); -printf("#define dsNiceMatch (%3u)(%%rdi)\n",(int)(((char*)&(s->nice_match))-((char*)s))); -} - -*/ - - -/* - to compile for XCode 3.2 on MacOSX x86_64 - - run "gcc -g -c -DXCODE_MAC_X64_STRUCTURE amd64-match.S" - */ - - -#ifndef CURRENT_LINX_XCODE_MAC_X64_STRUCTURE -#define dsWSize ( 68)(%rdi) -#define dsWMask ( 76)(%rdi) -#define dsWindow ( 80)(%rdi) -#define dsPrev ( 96)(%rdi) -#define dsMatchLen (144)(%rdi) -#define dsPrevMatch (148)(%rdi) -#define dsStrStart (156)(%rdi) -#define dsMatchStart (160)(%rdi) -#define dsLookahead (164)(%rdi) -#define dsPrevLen (168)(%rdi) -#define dsMaxChainLen (172)(%rdi) -#define dsGoodMatch (188)(%rdi) -#define dsNiceMatch (192)(%rdi) - -#else - -#ifndef STRUCT_OFFSET -# define STRUCT_OFFSET (0) -#endif - - -#define dsWSize ( 56 + STRUCT_OFFSET)(%rdi) -#define dsWMask ( 64 + STRUCT_OFFSET)(%rdi) -#define dsWindow ( 72 + STRUCT_OFFSET)(%rdi) -#define dsPrev ( 88 + STRUCT_OFFSET)(%rdi) -#define dsMatchLen (136 + STRUCT_OFFSET)(%rdi) -#define dsPrevMatch (140 + STRUCT_OFFSET)(%rdi) -#define dsStrStart (148 + STRUCT_OFFSET)(%rdi) -#define dsMatchStart (152 + STRUCT_OFFSET)(%rdi) -#define dsLookahead (156 + STRUCT_OFFSET)(%rdi) -#define dsPrevLen (160 + STRUCT_OFFSET)(%rdi) -#define dsMaxChainLen (164 + STRUCT_OFFSET)(%rdi) -#define dsGoodMatch (180 + STRUCT_OFFSET)(%rdi) -#define dsNiceMatch (184 + STRUCT_OFFSET)(%rdi) - -#endif - - - - -.text - -/* uInt longest_match(deflate_state *deflatestate, IPos curmatch) */ - -longest_match: -/* - * Retrieve the function arguments. %curmatch will hold cur_match - * throughout the entire function (passed via rsi on amd64). - * rdi will hold the pointer to the deflate_state (first arg on amd64) - */ - mov %rsi, save_rsi - mov %rbx, save_rbx - mov %r12, save_r12 - mov %r13, save_r13 - mov %r14, save_r14 - mov %r15, save_r15 - -/* uInt wmask = s->w_mask; */ -/* unsigned chain_length = s->max_chain_length; */ -/* if (s->prev_length >= s->good_match) { */ -/* chain_length >>= 2; */ -/* } */ - - movl dsPrevLen, %eax - movl dsGoodMatch, %ebx - cmpl %ebx, %eax - movl dsWMask, %eax - movl dsMaxChainLen, %chainlenwmask - jl LastMatchGood - shrl $2, %chainlenwmask -LastMatchGood: - -/* chainlen is decremented once beforehand so that the function can */ -/* use the sign flag instead of the zero flag for the exit test. */ -/* It is then shifted into the high word, to make room for the wmask */ -/* value, which it will always accompany. */ - - decl %chainlenwmask - shll $16, %chainlenwmask - orl %eax, %chainlenwmask - -/* if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead; */ - - movl dsNiceMatch, %eax - movl dsLookahead, %ebx - cmpl %eax, %ebx - jl LookaheadLess - movl %eax, %ebx -LookaheadLess: movl %ebx, %nicematch - -/* register Bytef *scan = s->window + s->strstart; */ - - mov dsWindow, %window - movl dsStrStart, %limitd - lea (%limit, %window), %scan - -/* Determine how many bytes the scan ptr is off from being */ -/* dword-aligned. */ - - mov %scan, %scanalign - negl %scanalignd - andl $3, %scanalignd - -/* IPos limit = s->strstart > (IPos)MAX_DIST(s) ? */ -/* s->strstart - (IPos)MAX_DIST(s) : NIL; */ - - movl dsWSize, %eax - subl $MIN_LOOKAHEAD, %eax - xorl %ecx, %ecx - subl %eax, %limitd - cmovng %ecx, %limitd - -/* int best_len = s->prev_length; */ - - movl dsPrevLen, %bestlend - -/* Store the sum of s->window + best_len in %windowbestlen locally, and in memory. */ - - lea (%window, %bestlen), %windowbestlen - mov %windowbestlen, _windowbestlen - -/* register ush scan_start = *(ushf*)scan; */ -/* register ush scan_end = *(ushf*)(scan+best_len-1); */ -/* Posf *prev = s->prev; */ - - movzwl (%scan), %scanstart - movzwl -1(%scan, %bestlen), %scanend - mov dsPrev, %prev - -/* Jump into the main loop. */ - - movl %chainlenwmask, _chainlenwmask - jmp LoopEntry - -.balign 16 - -/* do { - * match = s->window + cur_match; - * if (*(ushf*)(match+best_len-1) != scan_end || - * *(ushf*)match != scan_start) continue; - * [...] - * } while ((cur_match = prev[cur_match & wmask]) > limit - * && --chain_length != 0); - * - * Here is the inner loop of the function. The function will spend the - * majority of its time in this loop, and majority of that time will - * be spent in the first ten instructions. - */ -LookupLoop: - andl %chainlenwmask, %curmatchd - movzwl (%prev, %curmatch, 2), %curmatchd - cmpl %limitd, %curmatchd - jbe LeaveNow - subl $0x00010000, %chainlenwmask - js LeaveNow -LoopEntry: cmpw -1(%windowbestlen, %curmatch), %scanendw - jne LookupLoop - cmpw %scanstartw, (%window, %curmatch) - jne LookupLoop - -/* Store the current value of chainlen. */ - movl %chainlenwmask, _chainlenwmask - -/* %scan is the string under scrutiny, and %prev to the string we */ -/* are hoping to match it up with. In actuality, %esi and %edi are */ -/* both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and %edx is */ -/* initialized to -(MAX_MATCH_8 - scanalign). */ - - mov $(-MAX_MATCH_8), %rdx - lea (%curmatch, %window), %windowbestlen - lea MAX_MATCH_8(%windowbestlen, %scanalign), %windowbestlen - lea MAX_MATCH_8(%scan, %scanalign), %prev - -/* the prefetching below makes very little difference... */ - prefetcht1 (%windowbestlen, %rdx) - prefetcht1 (%prev, %rdx) - -/* - * Test the strings for equality, 8 bytes at a time. At the end, - * adjust %rdx so that it is offset to the exact byte that mismatched. - * - * It should be confessed that this loop usually does not represent - * much of the total running time. Replacing it with a more - * straightforward "rep cmpsb" would not drastically degrade - * performance -- unrolling it, for example, makes no difference. - */ - -#undef USE_SSE /* works, but is 6-7% slower, than non-SSE... */ - -LoopCmps: -#ifdef USE_SSE - /* Preload the SSE registers */ - movdqu (%windowbestlen, %rdx), %xmm1 - movdqu (%prev, %rdx), %xmm2 - pcmpeqb %xmm2, %xmm1 - movdqu 16(%windowbestlen, %rdx), %xmm3 - movdqu 16(%prev, %rdx), %xmm4 - pcmpeqb %xmm4, %xmm3 - movdqu 32(%windowbestlen, %rdx), %xmm5 - movdqu 32(%prev, %rdx), %xmm6 - pcmpeqb %xmm6, %xmm5 - movdqu 48(%windowbestlen, %rdx), %xmm7 - movdqu 48(%prev, %rdx), %xmm8 - pcmpeqb %xmm8, %xmm7 - - /* Check the comparisions' results */ - pmovmskb %xmm1, %rax - notw %ax - bsfw %ax, %ax - jnz LeaveLoopCmps - - /* this is the only iteration of the loop with a possibility of having - incremented rdx by 0x108 (each loop iteration add 16*4 = 0x40 - and (0x40*4)+8=0x108 */ - add $8, %rdx - jz LenMaximum - add $8, %rdx - - - pmovmskb %xmm3, %rax - notw %ax - bsfw %ax, %ax - jnz LeaveLoopCmps - - - add $16, %rdx - - - pmovmskb %xmm5, %rax - notw %ax - bsfw %ax, %ax - jnz LeaveLoopCmps - - add $16, %rdx - - - pmovmskb %xmm7, %rax - notw %ax - bsfw %ax, %ax - jnz LeaveLoopCmps - - add $16, %rdx - - jmp LoopCmps -LeaveLoopCmps: add %rax, %rdx -#else - mov (%windowbestlen, %rdx), %rax - xor (%prev, %rdx), %rax - jnz LeaveLoopCmps - - mov 8(%windowbestlen, %rdx), %rax - xor 8(%prev, %rdx), %rax - jnz LeaveLoopCmps8 - - mov 16(%windowbestlen, %rdx), %rax - xor 16(%prev, %rdx), %rax - jnz LeaveLoopCmps16 - - add $24, %rdx - jnz LoopCmps - jmp LenMaximum -# if 0 -/* - * This three-liner is tantalizingly simple, but bsf is a slow instruction, - * and the complicated alternative down below is quite a bit faster. Sad... - */ - -LeaveLoopCmps: bsf %rax, %rax /* find the first non-zero bit */ - shrl $3, %eax /* divide by 8 to get the byte */ - add %rax, %rdx -# else -LeaveLoopCmps16: - add $8, %rdx -LeaveLoopCmps8: - add $8, %rdx -LeaveLoopCmps: testl $0xFFFFFFFF, %eax /* Check the first 4 bytes */ - jnz Check16 - add $4, %rdx - shr $32, %rax -Check16: testw $0xFFFF, %ax - jnz LenLower - add $2, %rdx - shrl $16, %eax -LenLower: subb $1, %al - adc $0, %rdx -# endif -#endif - -/* Calculate the length of the match. If it is longer than MAX_MATCH, */ -/* then automatically accept it as the best possible match and leave. */ - - lea (%prev, %rdx), %rax - sub %scan, %rax - cmpl $MAX_MATCH, %eax - jge LenMaximum - -/* If the length of the match is not longer than the best match we */ -/* have so far, then forget it and return to the lookup loop. */ - - cmpl %bestlend, %eax - jg LongerMatch - mov _windowbestlen, %windowbestlen - mov dsPrev, %prev - movl _chainlenwmask, %edx - jmp LookupLoop - -/* s->match_start = cur_match; */ -/* best_len = len; */ -/* if (len >= nice_match) break; */ -/* scan_end = *(ushf*)(scan+best_len-1); */ - -LongerMatch: - movl %eax, %bestlend - movl %curmatchd, dsMatchStart - cmpl %nicematch, %eax - jge LeaveNow - - lea (%window, %bestlen), %windowbestlen - mov %windowbestlen, _windowbestlen - - movzwl -1(%scan, %rax), %scanend - mov dsPrev, %prev - movl _chainlenwmask, %chainlenwmask - jmp LookupLoop - -/* Accept the current string, with the maximum possible length. */ - -LenMaximum: - movl $MAX_MATCH, %bestlend - movl %curmatchd, dsMatchStart - -/* if ((uInt)best_len <= s->lookahead) return (uInt)best_len; */ -/* return s->lookahead; */ - -LeaveNow: - movl dsLookahead, %eax - cmpl %eax, %bestlend - cmovngl %bestlend, %eax -LookaheadRet: - -/* Restore the registers and return from whence we came. */ - - mov save_rsi, %rsi - mov save_rbx, %rbx - mov save_r12, %r12 - mov save_r13, %r13 - mov save_r14, %r14 - mov save_r15, %r15 - - ret - -match_init: ret diff --git a/platform/win32/msvc/external/zlib/contrib/asm686/README.686 b/platform/win32/msvc/external/zlib/contrib/asm686/README.686 deleted file mode 100644 index a0bf3bea4af..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/asm686/README.686 +++ /dev/null @@ -1,51 +0,0 @@ -This is a patched version of zlib, modified to use -Pentium-Pro-optimized assembly code in the deflation algorithm. The -files changed/added by this patch are: - -README.686 -match.S - -The speedup that this patch provides varies, depending on whether the -compiler used to build the original version of zlib falls afoul of the -PPro's speed traps. My own tests show a speedup of around 10-20% at -the default compression level, and 20-30% using -9, against a version -compiled using gcc 2.7.2.3. Your mileage may vary. - -Note that this code has been tailored for the PPro/PII in particular, -and will not perform particuarly well on a Pentium. - -If you are using an assembler other than GNU as, you will have to -translate match.S to use your assembler's syntax. (Have fun.) - -Brian Raiter -breadbox@muppetlabs.com -April, 1998 - - -Added for zlib 1.1.3: - -The patches come from -http://www.muppetlabs.com/~breadbox/software/assembly.html - -To compile zlib with this asm file, copy match.S to the zlib directory -then do: - -CFLAGS="-O3 -DASMV" ./configure -make OBJA=match.o - - -Update: - -I've been ignoring these assembly routines for years, believing that -gcc's generated code had caught up with it sometime around gcc 2.95 -and the major rearchitecting of the Pentium 4. However, I recently -learned that, despite what I believed, this code still has some life -in it. On the Pentium 4 and AMD64 chips, it continues to run about 8% -faster than the code produced by gcc 4.1. - -In acknowledgement of its continuing usefulness, I've altered the -license to match that of the rest of zlib. Share and Enjoy! - -Brian Raiter -breadbox@muppetlabs.com -April, 2007 diff --git a/platform/win32/msvc/external/zlib/contrib/asm686/match.S b/platform/win32/msvc/external/zlib/contrib/asm686/match.S deleted file mode 100644 index fa421092785..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/asm686/match.S +++ /dev/null @@ -1,357 +0,0 @@ -/* match.S -- x86 assembly version of the zlib longest_match() function. - * Optimized for the Intel 686 chips (PPro and later). - * - * Copyright (C) 1998, 2007 Brian Raiter <breadbox@muppetlabs.com> - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the author be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * 3. This notice may not be removed or altered from any source distribution. - */ - -#ifndef NO_UNDERLINE -#define match_init _match_init -#define longest_match _longest_match -#endif - -#define MAX_MATCH (258) -#define MIN_MATCH (3) -#define MIN_LOOKAHEAD (MAX_MATCH + MIN_MATCH + 1) -#define MAX_MATCH_8 ((MAX_MATCH + 7) & ~7) - -/* stack frame offsets */ - -#define chainlenwmask 0 /* high word: current chain len */ - /* low word: s->wmask */ -#define window 4 /* local copy of s->window */ -#define windowbestlen 8 /* s->window + bestlen */ -#define scanstart 16 /* first two bytes of string */ -#define scanend 12 /* last two bytes of string */ -#define scanalign 20 /* dword-misalignment of string */ -#define nicematch 24 /* a good enough match size */ -#define bestlen 28 /* size of best match so far */ -#define scan 32 /* ptr to string wanting match */ - -#define LocalVarsSize (36) -/* saved ebx 36 */ -/* saved edi 40 */ -/* saved esi 44 */ -/* saved ebp 48 */ -/* return address 52 */ -#define deflatestate 56 /* the function arguments */ -#define curmatch 60 - -/* All the +zlib1222add offsets are due to the addition of fields - * in zlib in the deflate_state structure since the asm code was first written - * (if you compile with zlib 1.0.4 or older, use "zlib1222add equ (-4)"). - * (if you compile with zlib between 1.0.5 and 1.2.2.1, use "zlib1222add equ 0"). - * if you compile with zlib 1.2.2.2 or later , use "zlib1222add equ 8"). - */ - -#define zlib1222add (8) - -#define dsWSize (36+zlib1222add) -#define dsWMask (44+zlib1222add) -#define dsWindow (48+zlib1222add) -#define dsPrev (56+zlib1222add) -#define dsMatchLen (88+zlib1222add) -#define dsPrevMatch (92+zlib1222add) -#define dsStrStart (100+zlib1222add) -#define dsMatchStart (104+zlib1222add) -#define dsLookahead (108+zlib1222add) -#define dsPrevLen (112+zlib1222add) -#define dsMaxChainLen (116+zlib1222add) -#define dsGoodMatch (132+zlib1222add) -#define dsNiceMatch (136+zlib1222add) - - -.file "match.S" - -.globl match_init, longest_match - -.text - -/* uInt longest_match(deflate_state *deflatestate, IPos curmatch) */ -.cfi_sections .debug_frame - -longest_match: - -.cfi_startproc -/* Save registers that the compiler may be using, and adjust %esp to */ -/* make room for our stack frame. */ - - pushl %ebp - .cfi_def_cfa_offset 8 - .cfi_offset ebp, -8 - pushl %edi - .cfi_def_cfa_offset 12 - pushl %esi - .cfi_def_cfa_offset 16 - pushl %ebx - .cfi_def_cfa_offset 20 - subl $LocalVarsSize, %esp - .cfi_def_cfa_offset LocalVarsSize+20 - -/* Retrieve the function arguments. %ecx will hold cur_match */ -/* throughout the entire function. %edx will hold the pointer to the */ -/* deflate_state structure during the function's setup (before */ -/* entering the main loop). */ - - movl deflatestate(%esp), %edx - movl curmatch(%esp), %ecx - -/* uInt wmask = s->w_mask; */ -/* unsigned chain_length = s->max_chain_length; */ -/* if (s->prev_length >= s->good_match) { */ -/* chain_length >>= 2; */ -/* } */ - - movl dsPrevLen(%edx), %eax - movl dsGoodMatch(%edx), %ebx - cmpl %ebx, %eax - movl dsWMask(%edx), %eax - movl dsMaxChainLen(%edx), %ebx - jl LastMatchGood - shrl $2, %ebx -LastMatchGood: - -/* chainlen is decremented once beforehand so that the function can */ -/* use the sign flag instead of the zero flag for the exit test. */ -/* It is then shifted into the high word, to make room for the wmask */ -/* value, which it will always accompany. */ - - decl %ebx - shll $16, %ebx - orl %eax, %ebx - movl %ebx, chainlenwmask(%esp) - -/* if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead; */ - - movl dsNiceMatch(%edx), %eax - movl dsLookahead(%edx), %ebx - cmpl %eax, %ebx - jl LookaheadLess - movl %eax, %ebx -LookaheadLess: movl %ebx, nicematch(%esp) - -/* register Bytef *scan = s->window + s->strstart; */ - - movl dsWindow(%edx), %esi - movl %esi, window(%esp) - movl dsStrStart(%edx), %ebp - lea (%esi,%ebp), %edi - movl %edi, scan(%esp) - -/* Determine how many bytes the scan ptr is off from being */ -/* dword-aligned. */ - - movl %edi, %eax - negl %eax - andl $3, %eax - movl %eax, scanalign(%esp) - -/* IPos limit = s->strstart > (IPos)MAX_DIST(s) ? */ -/* s->strstart - (IPos)MAX_DIST(s) : NIL; */ - - movl dsWSize(%edx), %eax - subl $MIN_LOOKAHEAD, %eax - subl %eax, %ebp - jg LimitPositive - xorl %ebp, %ebp -LimitPositive: - -/* int best_len = s->prev_length; */ - - movl dsPrevLen(%edx), %eax - movl %eax, bestlen(%esp) - -/* Store the sum of s->window + best_len in %esi locally, and in %esi. */ - - addl %eax, %esi - movl %esi, windowbestlen(%esp) - -/* register ush scan_start = *(ushf*)scan; */ -/* register ush scan_end = *(ushf*)(scan+best_len-1); */ -/* Posf *prev = s->prev; */ - - movzwl (%edi), %ebx - movl %ebx, scanstart(%esp) - movzwl -1(%edi,%eax), %ebx - movl %ebx, scanend(%esp) - movl dsPrev(%edx), %edi - -/* Jump into the main loop. */ - - movl chainlenwmask(%esp), %edx - jmp LoopEntry - -.balign 16 - -/* do { - * match = s->window + cur_match; - * if (*(ushf*)(match+best_len-1) != scan_end || - * *(ushf*)match != scan_start) continue; - * [...] - * } while ((cur_match = prev[cur_match & wmask]) > limit - * && --chain_length != 0); - * - * Here is the inner loop of the function. The function will spend the - * majority of its time in this loop, and majority of that time will - * be spent in the first ten instructions. - * - * Within this loop: - * %ebx = scanend - * %ecx = curmatch - * %edx = chainlenwmask - i.e., ((chainlen << 16) | wmask) - * %esi = windowbestlen - i.e., (window + bestlen) - * %edi = prev - * %ebp = limit - */ -LookupLoop: - andl %edx, %ecx - movzwl (%edi,%ecx,2), %ecx - cmpl %ebp, %ecx - jbe LeaveNow - subl $0x00010000, %edx - js LeaveNow -LoopEntry: movzwl -1(%esi,%ecx), %eax - cmpl %ebx, %eax - jnz LookupLoop - movl window(%esp), %eax - movzwl (%eax,%ecx), %eax - cmpl scanstart(%esp), %eax - jnz LookupLoop - -/* Store the current value of chainlen. */ - - movl %edx, chainlenwmask(%esp) - -/* Point %edi to the string under scrutiny, and %esi to the string we */ -/* are hoping to match it up with. In actuality, %esi and %edi are */ -/* both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and %edx is */ -/* initialized to -(MAX_MATCH_8 - scanalign). */ - - movl window(%esp), %esi - movl scan(%esp), %edi - addl %ecx, %esi - movl scanalign(%esp), %eax - movl $(-MAX_MATCH_8), %edx - lea MAX_MATCH_8(%edi,%eax), %edi - lea MAX_MATCH_8(%esi,%eax), %esi - -/* Test the strings for equality, 8 bytes at a time. At the end, - * adjust %edx so that it is offset to the exact byte that mismatched. - * - * We already know at this point that the first three bytes of the - * strings match each other, and they can be safely passed over before - * starting the compare loop. So what this code does is skip over 0-3 - * bytes, as much as necessary in order to dword-align the %edi - * pointer. (%esi will still be misaligned three times out of four.) - * - * It should be confessed that this loop usually does not represent - * much of the total running time. Replacing it with a more - * straightforward "rep cmpsb" would not drastically degrade - * performance. - */ -LoopCmps: - movl (%esi,%edx), %eax - xorl (%edi,%edx), %eax - jnz LeaveLoopCmps - movl 4(%esi,%edx), %eax - xorl 4(%edi,%edx), %eax - jnz LeaveLoopCmps4 - addl $8, %edx - jnz LoopCmps - jmp LenMaximum -LeaveLoopCmps4: addl $4, %edx -LeaveLoopCmps: testl $0x0000FFFF, %eax - jnz LenLower - addl $2, %edx - shrl $16, %eax -LenLower: subb $1, %al - adcl $0, %edx - -/* Calculate the length of the match. If it is longer than MAX_MATCH, */ -/* then automatically accept it as the best possible match and leave. */ - - lea (%edi,%edx), %eax - movl scan(%esp), %edi - subl %edi, %eax - cmpl $MAX_MATCH, %eax - jge LenMaximum - -/* If the length of the match is not longer than the best match we */ -/* have so far, then forget it and return to the lookup loop. */ - - movl deflatestate(%esp), %edx - movl bestlen(%esp), %ebx - cmpl %ebx, %eax - jg LongerMatch - movl windowbestlen(%esp), %esi - movl dsPrev(%edx), %edi - movl scanend(%esp), %ebx - movl chainlenwmask(%esp), %edx - jmp LookupLoop - -/* s->match_start = cur_match; */ -/* best_len = len; */ -/* if (len >= nice_match) break; */ -/* scan_end = *(ushf*)(scan+best_len-1); */ - -LongerMatch: movl nicematch(%esp), %ebx - movl %eax, bestlen(%esp) - movl %ecx, dsMatchStart(%edx) - cmpl %ebx, %eax - jge LeaveNow - movl window(%esp), %esi - addl %eax, %esi - movl %esi, windowbestlen(%esp) - movzwl -1(%edi,%eax), %ebx - movl dsPrev(%edx), %edi - movl %ebx, scanend(%esp) - movl chainlenwmask(%esp), %edx - jmp LookupLoop - -/* Accept the current string, with the maximum possible length. */ - -LenMaximum: movl deflatestate(%esp), %edx - movl $MAX_MATCH, bestlen(%esp) - movl %ecx, dsMatchStart(%edx) - -/* if ((uInt)best_len <= s->lookahead) return (uInt)best_len; */ -/* return s->lookahead; */ - -LeaveNow: - movl deflatestate(%esp), %edx - movl bestlen(%esp), %ebx - movl dsLookahead(%edx), %eax - cmpl %eax, %ebx - jg LookaheadRet - movl %ebx, %eax -LookaheadRet: - -/* Restore the stack and return from whence we came. */ - - addl $LocalVarsSize, %esp - .cfi_def_cfa_offset 20 - popl %ebx - .cfi_def_cfa_offset 16 - popl %esi - .cfi_def_cfa_offset 12 - popl %edi - .cfi_def_cfa_offset 8 - popl %ebp - .cfi_def_cfa_offset 4 -.cfi_endproc -match_init: ret diff --git a/platform/win32/msvc/external/zlib/contrib/blast/README b/platform/win32/msvc/external/zlib/contrib/blast/README deleted file mode 100644 index e3a60b3f5cc..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/blast/README +++ /dev/null @@ -1,4 +0,0 @@ -Read blast.h for purpose and usage. - -Mark Adler -madler@alumni.caltech.edu diff --git a/platform/win32/msvc/external/zlib/contrib/blast/blast.c b/platform/win32/msvc/external/zlib/contrib/blast/blast.c deleted file mode 100644 index 69ef0fe00e8..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/blast/blast.c +++ /dev/null @@ -1,446 +0,0 @@ -/* blast.c - * Copyright (C) 2003, 2012 Mark Adler - * For conditions of distribution and use, see copyright notice in blast.h - * version 1.2, 24 Oct 2012 - * - * blast.c decompresses data compressed by the PKWare Compression Library. - * This function provides functionality similar to the explode() function of - * the PKWare library, hence the name "blast". - * - * This decompressor is based on the excellent format description provided by - * Ben Rudiak-Gould in comp.compression on August 13, 2001. Interestingly, the - * example Ben provided in the post is incorrect. The distance 110001 should - * instead be 111000. When corrected, the example byte stream becomes: - * - * 00 04 82 24 25 8f 80 7f - * - * which decompresses to "AIAIAIAIAIAIA" (without the quotes). - */ - -/* - * Change history: - * - * 1.0 12 Feb 2003 - First version - * 1.1 16 Feb 2003 - Fixed distance check for > 4 GB uncompressed data - * 1.2 24 Oct 2012 - Add note about using binary mode in stdio - * - Fix comparisons of differently signed integers - */ - -#include <setjmp.h> /* for setjmp(), longjmp(), and jmp_buf */ -#include "blast.h" /* prototype for blast() */ - -#define local static /* for local function definitions */ -#define MAXBITS 13 /* maximum code length */ -#define MAXWIN 4096 /* maximum window size */ - -/* input and output state */ -struct state { - /* input state */ - blast_in infun; /* input function provided by user */ - void *inhow; /* opaque information passed to infun() */ - unsigned char *in; /* next input location */ - unsigned left; /* available input at in */ - int bitbuf; /* bit buffer */ - int bitcnt; /* number of bits in bit buffer */ - - /* input limit error return state for bits() and decode() */ - jmp_buf env; - - /* output state */ - blast_out outfun; /* output function provided by user */ - void *outhow; /* opaque information passed to outfun() */ - unsigned next; /* index of next write location in out[] */ - int first; /* true to check distances (for first 4K) */ - unsigned char out[MAXWIN]; /* output buffer and sliding window */ -}; - -/* - * Return need bits from the input stream. This always leaves less than - * eight bits in the buffer. bits() works properly for need == 0. - * - * Format notes: - * - * - Bits are stored in bytes from the least significant bit to the most - * significant bit. Therefore bits are dropped from the bottom of the bit - * buffer, using shift right, and new bytes are appended to the top of the - * bit buffer, using shift left. - */ -local int bits(struct state *s, int need) -{ - int val; /* bit accumulator */ - - /* load at least need bits into val */ - val = s->bitbuf; - while (s->bitcnt < need) { - if (s->left == 0) { - s->left = s->infun(s->inhow, &(s->in)); - if (s->left == 0) longjmp(s->env, 1); /* out of input */ - } - val |= (int)(*(s->in)++) << s->bitcnt; /* load eight bits */ - s->left--; - s->bitcnt += 8; - } - - /* drop need bits and update buffer, always zero to seven bits left */ - s->bitbuf = val >> need; - s->bitcnt -= need; - - /* return need bits, zeroing the bits above that */ - return val & ((1 << need) - 1); -} - -/* - * Huffman code decoding tables. count[1..MAXBITS] is the number of symbols of - * each length, which for a canonical code are stepped through in order. - * symbol[] are the symbol values in canonical order, where the number of - * entries is the sum of the counts in count[]. The decoding process can be - * seen in the function decode() below. - */ -struct huffman { - short *count; /* number of symbols of each length */ - short *symbol; /* canonically ordered symbols */ -}; - -/* - * Decode a code from the stream s using huffman table h. Return the symbol or - * a negative value if there is an error. If all of the lengths are zero, i.e. - * an empty code, or if the code is incomplete and an invalid code is received, - * then -9 is returned after reading MAXBITS bits. - * - * Format notes: - * - * - The codes as stored in the compressed data are bit-reversed relative to - * a simple integer ordering of codes of the same lengths. Hence below the - * bits are pulled from the compressed data one at a time and used to - * build the code value reversed from what is in the stream in order to - * permit simple integer comparisons for decoding. - * - * - The first code for the shortest length is all ones. Subsequent codes of - * the same length are simply integer decrements of the previous code. When - * moving up a length, a one bit is appended to the code. For a complete - * code, the last code of the longest length will be all zeros. To support - * this ordering, the bits pulled during decoding are inverted to apply the - * more "natural" ordering starting with all zeros and incrementing. - */ -local int decode(struct state *s, struct huffman *h) -{ - int len; /* current number of bits in code */ - int code; /* len bits being decoded */ - int first; /* first code of length len */ - int count; /* number of codes of length len */ - int index; /* index of first code of length len in symbol table */ - int bitbuf; /* bits from stream */ - int left; /* bits left in next or left to process */ - short *next; /* next number of codes */ - - bitbuf = s->bitbuf; - left = s->bitcnt; - code = first = index = 0; - len = 1; - next = h->count + 1; - while (1) { - while (left--) { - code |= (bitbuf & 1) ^ 1; /* invert code */ - bitbuf >>= 1; - count = *next++; - if (code < first + count) { /* if length len, return symbol */ - s->bitbuf = bitbuf; - s->bitcnt = (s->bitcnt - len) & 7; - return h->symbol[index + (code - first)]; - } - index += count; /* else update for next length */ - first += count; - first <<= 1; - code <<= 1; - len++; - } - left = (MAXBITS+1) - len; - if (left == 0) break; - if (s->left == 0) { - s->left = s->infun(s->inhow, &(s->in)); - if (s->left == 0) longjmp(s->env, 1); /* out of input */ - } - bitbuf = *(s->in)++; - s->left--; - if (left > 8) left = 8; - } - return -9; /* ran out of codes */ -} - -/* - * Given a list of repeated code lengths rep[0..n-1], where each byte is a - * count (high four bits + 1) and a code length (low four bits), generate the - * list of code lengths. This compaction reduces the size of the object code. - * Then given the list of code lengths length[0..n-1] representing a canonical - * Huffman code for n symbols, construct the tables required to decode those - * codes. Those tables are the number of codes of each length, and the symbols - * sorted by length, retaining their original order within each length. The - * return value is zero for a complete code set, negative for an over- - * subscribed code set, and positive for an incomplete code set. The tables - * can be used if the return value is zero or positive, but they cannot be used - * if the return value is negative. If the return value is zero, it is not - * possible for decode() using that table to return an error--any stream of - * enough bits will resolve to a symbol. If the return value is positive, then - * it is possible for decode() using that table to return an error for received - * codes past the end of the incomplete lengths. - */ -local int construct(struct huffman *h, const unsigned char *rep, int n) -{ - int symbol; /* current symbol when stepping through length[] */ - int len; /* current length when stepping through h->count[] */ - int left; /* number of possible codes left of current length */ - short offs[MAXBITS+1]; /* offsets in symbol table for each length */ - short length[256]; /* code lengths */ - - /* convert compact repeat counts into symbol bit length list */ - symbol = 0; - do { - len = *rep++; - left = (len >> 4) + 1; - len &= 15; - do { - length[symbol++] = len; - } while (--left); - } while (--n); - n = symbol; - - /* count number of codes of each length */ - for (len = 0; len <= MAXBITS; len++) - h->count[len] = 0; - for (symbol = 0; symbol < n; symbol++) - (h->count[length[symbol]])++; /* assumes lengths are within bounds */ - if (h->count[0] == n) /* no codes! */ - return 0; /* complete, but decode() will fail */ - - /* check for an over-subscribed or incomplete set of lengths */ - left = 1; /* one possible code of zero length */ - for (len = 1; len <= MAXBITS; len++) { - left <<= 1; /* one more bit, double codes left */ - left -= h->count[len]; /* deduct count from possible codes */ - if (left < 0) return left; /* over-subscribed--return negative */ - } /* left > 0 means incomplete */ - - /* generate offsets into symbol table for each length for sorting */ - offs[1] = 0; - for (len = 1; len < MAXBITS; len++) - offs[len + 1] = offs[len] + h->count[len]; - - /* - * put symbols in table sorted by length, by symbol order within each - * length - */ - for (symbol = 0; symbol < n; symbol++) - if (length[symbol] != 0) - h->symbol[offs[length[symbol]]++] = symbol; - - /* return zero for complete set, positive for incomplete set */ - return left; -} - -/* - * Decode PKWare Compression Library stream. - * - * Format notes: - * - * - First byte is 0 if literals are uncoded or 1 if they are coded. Second - * byte is 4, 5, or 6 for the number of extra bits in the distance code. - * This is the base-2 logarithm of the dictionary size minus six. - * - * - Compressed data is a combination of literals and length/distance pairs - * terminated by an end code. Literals are either Huffman coded or - * uncoded bytes. A length/distance pair is a coded length followed by a - * coded distance to represent a string that occurs earlier in the - * uncompressed data that occurs again at the current location. - * - * - A bit preceding a literal or length/distance pair indicates which comes - * next, 0 for literals, 1 for length/distance. - * - * - If literals are uncoded, then the next eight bits are the literal, in the - * normal bit order in th stream, i.e. no bit-reversal is needed. Similarly, - * no bit reversal is needed for either the length extra bits or the distance - * extra bits. - * - * - Literal bytes are simply written to the output. A length/distance pair is - * an instruction to copy previously uncompressed bytes to the output. The - * copy is from distance bytes back in the output stream, copying for length - * bytes. - * - * - Distances pointing before the beginning of the output data are not - * permitted. - * - * - Overlapped copies, where the length is greater than the distance, are - * allowed and common. For example, a distance of one and a length of 518 - * simply copies the last byte 518 times. A distance of four and a length of - * twelve copies the last four bytes three times. A simple forward copy - * ignoring whether the length is greater than the distance or not implements - * this correctly. - */ -local int decomp(struct state *s) -{ - int lit; /* true if literals are coded */ - int dict; /* log2(dictionary size) - 6 */ - int symbol; /* decoded symbol, extra bits for distance */ - int len; /* length for copy */ - unsigned dist; /* distance for copy */ - int copy; /* copy counter */ - unsigned char *from, *to; /* copy pointers */ - static int virgin = 1; /* build tables once */ - static short litcnt[MAXBITS+1], litsym[256]; /* litcode memory */ - static short lencnt[MAXBITS+1], lensym[16]; /* lencode memory */ - static short distcnt[MAXBITS+1], distsym[64]; /* distcode memory */ - static struct huffman litcode = {litcnt, litsym}; /* length code */ - static struct huffman lencode = {lencnt, lensym}; /* length code */ - static struct huffman distcode = {distcnt, distsym};/* distance code */ - /* bit lengths of literal codes */ - static const unsigned char litlen[] = { - 11, 124, 8, 7, 28, 7, 188, 13, 76, 4, 10, 8, 12, 10, 12, 10, 8, 23, 8, - 9, 7, 6, 7, 8, 7, 6, 55, 8, 23, 24, 12, 11, 7, 9, 11, 12, 6, 7, 22, 5, - 7, 24, 6, 11, 9, 6, 7, 22, 7, 11, 38, 7, 9, 8, 25, 11, 8, 11, 9, 12, - 8, 12, 5, 38, 5, 38, 5, 11, 7, 5, 6, 21, 6, 10, 53, 8, 7, 24, 10, 27, - 44, 253, 253, 253, 252, 252, 252, 13, 12, 45, 12, 45, 12, 61, 12, 45, - 44, 173}; - /* bit lengths of length codes 0..15 */ - static const unsigned char lenlen[] = {2, 35, 36, 53, 38, 23}; - /* bit lengths of distance codes 0..63 */ - static const unsigned char distlen[] = {2, 20, 53, 230, 247, 151, 248}; - static const short base[16] = { /* base for length codes */ - 3, 2, 4, 5, 6, 7, 8, 9, 10, 12, 16, 24, 40, 72, 136, 264}; - static const char extra[16] = { /* extra bits for length codes */ - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8}; - - /* set up decoding tables (once--might not be thread-safe) */ - if (virgin) { - construct(&litcode, litlen, sizeof(litlen)); - construct(&lencode, lenlen, sizeof(lenlen)); - construct(&distcode, distlen, sizeof(distlen)); - virgin = 0; - } - - /* read header */ - lit = bits(s, 8); - if (lit > 1) return -1; - dict = bits(s, 8); - if (dict < 4 || dict > 6) return -2; - - /* decode literals and length/distance pairs */ - do { - if (bits(s, 1)) { - /* get length */ - symbol = decode(s, &lencode); - len = base[symbol] + bits(s, extra[symbol]); - if (len == 519) break; /* end code */ - - /* get distance */ - symbol = len == 2 ? 2 : dict; - dist = decode(s, &distcode) << symbol; - dist += bits(s, symbol); - dist++; - if (s->first && dist > s->next) - return -3; /* distance too far back */ - - /* copy length bytes from distance bytes back */ - do { - to = s->out + s->next; - from = to - dist; - copy = MAXWIN; - if (s->next < dist) { - from += copy; - copy = dist; - } - copy -= s->next; - if (copy > len) copy = len; - len -= copy; - s->next += copy; - do { - *to++ = *from++; - } while (--copy); - if (s->next == MAXWIN) { - if (s->outfun(s->outhow, s->out, s->next)) return 1; - s->next = 0; - s->first = 0; - } - } while (len != 0); - } - else { - /* get literal and write it */ - symbol = lit ? decode(s, &litcode) : bits(s, 8); - s->out[s->next++] = symbol; - if (s->next == MAXWIN) { - if (s->outfun(s->outhow, s->out, s->next)) return 1; - s->next = 0; - s->first = 0; - } - } - } while (1); - return 0; -} - -/* See comments in blast.h */ -int blast(blast_in infun, void *inhow, blast_out outfun, void *outhow) -{ - struct state s; /* input/output state */ - int err; /* return value */ - - /* initialize input state */ - s.infun = infun; - s.inhow = inhow; - s.left = 0; - s.bitbuf = 0; - s.bitcnt = 0; - - /* initialize output state */ - s.outfun = outfun; - s.outhow = outhow; - s.next = 0; - s.first = 1; - - /* return if bits() or decode() tries to read past available input */ - if (setjmp(s.env) != 0) /* if came back here via longjmp(), */ - err = 2; /* then skip decomp(), return error */ - else - err = decomp(&s); /* decompress */ - - /* write any leftover output and update the error code if needed */ - if (err != 1 && s.next && s.outfun(s.outhow, s.out, s.next) && err == 0) - err = 1; - return err; -} - -#ifdef TEST -/* Example of how to use blast() */ -#include <stdio.h> -#include <stdlib.h> - -#define CHUNK 16384 - -local unsigned inf(void *how, unsigned char **buf) -{ - static unsigned char hold[CHUNK]; - - *buf = hold; - return fread(hold, 1, CHUNK, (FILE *)how); -} - -local int outf(void *how, unsigned char *buf, unsigned len) -{ - return fwrite(buf, 1, len, (FILE *)how) != len; -} - -/* Decompress a PKWare Compression Library stream from stdin to stdout */ -int main(void) -{ - int ret, n; - - /* decompress to stdout */ - ret = blast(inf, stdin, outf, stdout); - if (ret != 0) fprintf(stderr, "blast error: %d\n", ret); - - /* see if there are any leftover bytes */ - n = 0; - while (getchar() != EOF) n++; - if (n) fprintf(stderr, "blast warning: %d unused bytes of input\n", n); - - /* return blast() error code */ - return ret; -} -#endif diff --git a/platform/win32/msvc/external/zlib/contrib/blast/blast.h b/platform/win32/msvc/external/zlib/contrib/blast/blast.h deleted file mode 100644 index 658cfd32004..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/blast/blast.h +++ /dev/null @@ -1,75 +0,0 @@ -/* blast.h -- interface for blast.c - Copyright (C) 2003, 2012 Mark Adler - version 1.2, 24 Oct 2012 - - This software is provided 'as-is', without any express or implied - warranty. In no event will the author be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Mark Adler madler@alumni.caltech.edu - */ - - -/* - * blast() decompresses the PKWare Data Compression Library (DCL) compressed - * format. It provides the same functionality as the explode() function in - * that library. (Note: PKWare overused the "implode" verb, and the format - * used by their library implode() function is completely different and - * incompatible with the implode compression method supported by PKZIP.) - * - * The binary mode for stdio functions should be used to assure that the - * compressed data is not corrupted when read or written. For example: - * fopen(..., "rb") and fopen(..., "wb"). - */ - - -typedef unsigned (*blast_in)(void *how, unsigned char **buf); -typedef int (*blast_out)(void *how, unsigned char *buf, unsigned len); -/* Definitions for input/output functions passed to blast(). See below for - * what the provided functions need to do. - */ - - -int blast(blast_in infun, void *inhow, blast_out outfun, void *outhow); -/* Decompress input to output using the provided infun() and outfun() calls. - * On success, the return value of blast() is zero. If there is an error in - * the source data, i.e. it is not in the proper format, then a negative value - * is returned. If there is not enough input available or there is not enough - * output space, then a positive error is returned. - * - * The input function is invoked: len = infun(how, &buf), where buf is set by - * infun() to point to the input buffer, and infun() returns the number of - * available bytes there. If infun() returns zero, then blast() returns with - * an input error. (blast() only asks for input if it needs it.) inhow is for - * use by the application to pass an input descriptor to infun(), if desired. - * - * The output function is invoked: err = outfun(how, buf, len), where the bytes - * to be written are buf[0..len-1]. If err is not zero, then blast() returns - * with an output error. outfun() is always called with len <= 4096. outhow - * is for use by the application to pass an output descriptor to outfun(), if - * desired. - * - * The return codes are: - * - * 2: ran out of input before completing decompression - * 1: output error before completing decompression - * 0: successful decompression - * -1: literal flag not zero or one - * -2: dictionary size not in 4..6 - * -3: distance is too far back - * - * At the bottom of blast.c is an example program that uses blast() that can be - * compiled to produce a command-line decompression filter by defining TEST. - */ diff --git a/platform/win32/msvc/external/zlib/contrib/blast/test.pk b/platform/win32/msvc/external/zlib/contrib/blast/test.pk deleted file mode 100644 index be10b2bbb25..00000000000 Binary files a/platform/win32/msvc/external/zlib/contrib/blast/test.pk and /dev/null differ diff --git a/platform/win32/msvc/external/zlib/contrib/blast/test.txt b/platform/win32/msvc/external/zlib/contrib/blast/test.txt deleted file mode 100644 index bfdf1c5dca0..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/blast/test.txt +++ /dev/null @@ -1 +0,0 @@ -AIAIAIAIAIAIA \ No newline at end of file diff --git a/platform/win32/msvc/external/zlib/contrib/delphi/ZLib.pas b/platform/win32/msvc/external/zlib/contrib/delphi/ZLib.pas deleted file mode 100644 index a579974f044..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/delphi/ZLib.pas +++ /dev/null @@ -1,557 +0,0 @@ -{*******************************************************} -{ } -{ Borland Delphi Supplemental Components } -{ ZLIB Data Compression Interface Unit } -{ } -{ Copyright (c) 1997,99 Borland Corporation } -{ } -{*******************************************************} - -{ Updated for zlib 1.2.x by Cosmin Truta <cosmint@cs.ubbcluj.ro> } - -unit ZLib; - -interface - -uses SysUtils, Classes; - -type - TAlloc = function (AppData: Pointer; Items, Size: Integer): Pointer; cdecl; - TFree = procedure (AppData, Block: Pointer); cdecl; - - // Internal structure. Ignore. - TZStreamRec = packed record - next_in: PChar; // next input byte - avail_in: Integer; // number of bytes available at next_in - total_in: Longint; // total nb of input bytes read so far - - next_out: PChar; // next output byte should be put here - avail_out: Integer; // remaining free space at next_out - total_out: Longint; // total nb of bytes output so far - - msg: PChar; // last error message, NULL if no error - internal: Pointer; // not visible by applications - - zalloc: TAlloc; // used to allocate the internal state - zfree: TFree; // used to free the internal state - AppData: Pointer; // private data object passed to zalloc and zfree - - data_type: Integer; // best guess about the data type: ascii or binary - adler: Longint; // adler32 value of the uncompressed data - reserved: Longint; // reserved for future use - end; - - // Abstract ancestor class - TCustomZlibStream = class(TStream) - private - FStrm: TStream; - FStrmPos: Integer; - FOnProgress: TNotifyEvent; - FZRec: TZStreamRec; - FBuffer: array [Word] of Char; - protected - procedure Progress(Sender: TObject); dynamic; - property OnProgress: TNotifyEvent read FOnProgress write FOnProgress; - constructor Create(Strm: TStream); - end; - -{ TCompressionStream compresses data on the fly as data is written to it, and - stores the compressed data to another stream. - - TCompressionStream is write-only and strictly sequential. Reading from the - stream will raise an exception. Using Seek to move the stream pointer - will raise an exception. - - Output data is cached internally, written to the output stream only when - the internal output buffer is full. All pending output data is flushed - when the stream is destroyed. - - The Position property returns the number of uncompressed bytes of - data that have been written to the stream so far. - - CompressionRate returns the on-the-fly percentage by which the original - data has been compressed: (1 - (CompressedBytes / UncompressedBytes)) * 100 - If raw data size = 100 and compressed data size = 25, the CompressionRate - is 75% - - The OnProgress event is called each time the output buffer is filled and - written to the output stream. This is useful for updating a progress - indicator when you are writing a large chunk of data to the compression - stream in a single call.} - - - TCompressionLevel = (clNone, clFastest, clDefault, clMax); - - TCompressionStream = class(TCustomZlibStream) - private - function GetCompressionRate: Single; - public - constructor Create(CompressionLevel: TCompressionLevel; Dest: TStream); - destructor Destroy; override; - function Read(var Buffer; Count: Longint): Longint; override; - function Write(const Buffer; Count: Longint): Longint; override; - function Seek(Offset: Longint; Origin: Word): Longint; override; - property CompressionRate: Single read GetCompressionRate; - property OnProgress; - end; - -{ TDecompressionStream decompresses data on the fly as data is read from it. - - Compressed data comes from a separate source stream. TDecompressionStream - is read-only and unidirectional; you can seek forward in the stream, but not - backwards. The special case of setting the stream position to zero is - allowed. Seeking forward decompresses data until the requested position in - the uncompressed data has been reached. Seeking backwards, seeking relative - to the end of the stream, requesting the size of the stream, and writing to - the stream will raise an exception. - - The Position property returns the number of bytes of uncompressed data that - have been read from the stream so far. - - The OnProgress event is called each time the internal input buffer of - compressed data is exhausted and the next block is read from the input stream. - This is useful for updating a progress indicator when you are reading a - large chunk of data from the decompression stream in a single call.} - - TDecompressionStream = class(TCustomZlibStream) - public - constructor Create(Source: TStream); - destructor Destroy; override; - function Read(var Buffer; Count: Longint): Longint; override; - function Write(const Buffer; Count: Longint): Longint; override; - function Seek(Offset: Longint; Origin: Word): Longint; override; - property OnProgress; - end; - - - -{ CompressBuf compresses data, buffer to buffer, in one call. - In: InBuf = ptr to compressed data - InBytes = number of bytes in InBuf - Out: OutBuf = ptr to newly allocated buffer containing decompressed data - OutBytes = number of bytes in OutBuf } -procedure CompressBuf(const InBuf: Pointer; InBytes: Integer; - out OutBuf: Pointer; out OutBytes: Integer); - - -{ DecompressBuf decompresses data, buffer to buffer, in one call. - In: InBuf = ptr to compressed data - InBytes = number of bytes in InBuf - OutEstimate = zero, or est. size of the decompressed data - Out: OutBuf = ptr to newly allocated buffer containing decompressed data - OutBytes = number of bytes in OutBuf } -procedure DecompressBuf(const InBuf: Pointer; InBytes: Integer; - OutEstimate: Integer; out OutBuf: Pointer; out OutBytes: Integer); - -{ DecompressToUserBuf decompresses data, buffer to buffer, in one call. - In: InBuf = ptr to compressed data - InBytes = number of bytes in InBuf - Out: OutBuf = ptr to user-allocated buffer to contain decompressed data - BufSize = number of bytes in OutBuf } -procedure DecompressToUserBuf(const InBuf: Pointer; InBytes: Integer; - const OutBuf: Pointer; BufSize: Integer); - -const - zlib_version = '1.2.8'; - -type - EZlibError = class(Exception); - ECompressionError = class(EZlibError); - EDecompressionError = class(EZlibError); - -implementation - -uses ZLibConst; - -const - Z_NO_FLUSH = 0; - Z_PARTIAL_FLUSH = 1; - Z_SYNC_FLUSH = 2; - Z_FULL_FLUSH = 3; - Z_FINISH = 4; - - Z_OK = 0; - Z_STREAM_END = 1; - Z_NEED_DICT = 2; - Z_ERRNO = (-1); - Z_STREAM_ERROR = (-2); - Z_DATA_ERROR = (-3); - Z_MEM_ERROR = (-4); - Z_BUF_ERROR = (-5); - Z_VERSION_ERROR = (-6); - - Z_NO_COMPRESSION = 0; - Z_BEST_SPEED = 1; - Z_BEST_COMPRESSION = 9; - Z_DEFAULT_COMPRESSION = (-1); - - Z_FILTERED = 1; - Z_HUFFMAN_ONLY = 2; - Z_RLE = 3; - Z_DEFAULT_STRATEGY = 0; - - Z_BINARY = 0; - Z_ASCII = 1; - Z_UNKNOWN = 2; - - Z_DEFLATED = 8; - - -{$L adler32.obj} -{$L compress.obj} -{$L crc32.obj} -{$L deflate.obj} -{$L infback.obj} -{$L inffast.obj} -{$L inflate.obj} -{$L inftrees.obj} -{$L trees.obj} -{$L uncompr.obj} -{$L zutil.obj} - -procedure adler32; external; -procedure compressBound; external; -procedure crc32; external; -procedure deflateInit2_; external; -procedure deflateParams; external; - -function _malloc(Size: Integer): Pointer; cdecl; -begin - Result := AllocMem(Size); -end; - -procedure _free(Block: Pointer); cdecl; -begin - FreeMem(Block); -end; - -procedure _memset(P: Pointer; B: Byte; count: Integer); cdecl; -begin - FillChar(P^, count, B); -end; - -procedure _memcpy(dest, source: Pointer; count: Integer); cdecl; -begin - Move(source^, dest^, count); -end; - - - -// deflate compresses data -function deflateInit_(var strm: TZStreamRec; level: Integer; version: PChar; - recsize: Integer): Integer; external; -function deflate(var strm: TZStreamRec; flush: Integer): Integer; external; -function deflateEnd(var strm: TZStreamRec): Integer; external; - -// inflate decompresses data -function inflateInit_(var strm: TZStreamRec; version: PChar; - recsize: Integer): Integer; external; -function inflate(var strm: TZStreamRec; flush: Integer): Integer; external; -function inflateEnd(var strm: TZStreamRec): Integer; external; -function inflateReset(var strm: TZStreamRec): Integer; external; - - -function zlibAllocMem(AppData: Pointer; Items, Size: Integer): Pointer; cdecl; -begin -// GetMem(Result, Items*Size); - Result := AllocMem(Items * Size); -end; - -procedure zlibFreeMem(AppData, Block: Pointer); cdecl; -begin - FreeMem(Block); -end; - -{function zlibCheck(code: Integer): Integer; -begin - Result := code; - if code < 0 then - raise EZlibError.Create('error'); //!! -end;} - -function CCheck(code: Integer): Integer; -begin - Result := code; - if code < 0 then - raise ECompressionError.Create('error'); //!! -end; - -function DCheck(code: Integer): Integer; -begin - Result := code; - if code < 0 then - raise EDecompressionError.Create('error'); //!! -end; - -procedure CompressBuf(const InBuf: Pointer; InBytes: Integer; - out OutBuf: Pointer; out OutBytes: Integer); -var - strm: TZStreamRec; - P: Pointer; -begin - FillChar(strm, sizeof(strm), 0); - strm.zalloc := zlibAllocMem; - strm.zfree := zlibFreeMem; - OutBytes := ((InBytes + (InBytes div 10) + 12) + 255) and not 255; - GetMem(OutBuf, OutBytes); - try - strm.next_in := InBuf; - strm.avail_in := InBytes; - strm.next_out := OutBuf; - strm.avail_out := OutBytes; - CCheck(deflateInit_(strm, Z_BEST_COMPRESSION, zlib_version, sizeof(strm))); - try - while CCheck(deflate(strm, Z_FINISH)) <> Z_STREAM_END do - begin - P := OutBuf; - Inc(OutBytes, 256); - ReallocMem(OutBuf, OutBytes); - strm.next_out := PChar(Integer(OutBuf) + (Integer(strm.next_out) - Integer(P))); - strm.avail_out := 256; - end; - finally - CCheck(deflateEnd(strm)); - end; - ReallocMem(OutBuf, strm.total_out); - OutBytes := strm.total_out; - except - FreeMem(OutBuf); - raise - end; -end; - - -procedure DecompressBuf(const InBuf: Pointer; InBytes: Integer; - OutEstimate: Integer; out OutBuf: Pointer; out OutBytes: Integer); -var - strm: TZStreamRec; - P: Pointer; - BufInc: Integer; -begin - FillChar(strm, sizeof(strm), 0); - strm.zalloc := zlibAllocMem; - strm.zfree := zlibFreeMem; - BufInc := (InBytes + 255) and not 255; - if OutEstimate = 0 then - OutBytes := BufInc - else - OutBytes := OutEstimate; - GetMem(OutBuf, OutBytes); - try - strm.next_in := InBuf; - strm.avail_in := InBytes; - strm.next_out := OutBuf; - strm.avail_out := OutBytes; - DCheck(inflateInit_(strm, zlib_version, sizeof(strm))); - try - while DCheck(inflate(strm, Z_NO_FLUSH)) <> Z_STREAM_END do - begin - P := OutBuf; - Inc(OutBytes, BufInc); - ReallocMem(OutBuf, OutBytes); - strm.next_out := PChar(Integer(OutBuf) + (Integer(strm.next_out) - Integer(P))); - strm.avail_out := BufInc; - end; - finally - DCheck(inflateEnd(strm)); - end; - ReallocMem(OutBuf, strm.total_out); - OutBytes := strm.total_out; - except - FreeMem(OutBuf); - raise - end; -end; - -procedure DecompressToUserBuf(const InBuf: Pointer; InBytes: Integer; - const OutBuf: Pointer; BufSize: Integer); -var - strm: TZStreamRec; -begin - FillChar(strm, sizeof(strm), 0); - strm.zalloc := zlibAllocMem; - strm.zfree := zlibFreeMem; - strm.next_in := InBuf; - strm.avail_in := InBytes; - strm.next_out := OutBuf; - strm.avail_out := BufSize; - DCheck(inflateInit_(strm, zlib_version, sizeof(strm))); - try - if DCheck(inflate(strm, Z_FINISH)) <> Z_STREAM_END then - raise EZlibError.CreateRes(@sTargetBufferTooSmall); - finally - DCheck(inflateEnd(strm)); - end; -end; - -// TCustomZlibStream - -constructor TCustomZLibStream.Create(Strm: TStream); -begin - inherited Create; - FStrm := Strm; - FStrmPos := Strm.Position; - FZRec.zalloc := zlibAllocMem; - FZRec.zfree := zlibFreeMem; -end; - -procedure TCustomZLibStream.Progress(Sender: TObject); -begin - if Assigned(FOnProgress) then FOnProgress(Sender); -end; - - -// TCompressionStream - -constructor TCompressionStream.Create(CompressionLevel: TCompressionLevel; - Dest: TStream); -const - Levels: array [TCompressionLevel] of ShortInt = - (Z_NO_COMPRESSION, Z_BEST_SPEED, Z_DEFAULT_COMPRESSION, Z_BEST_COMPRESSION); -begin - inherited Create(Dest); - FZRec.next_out := FBuffer; - FZRec.avail_out := sizeof(FBuffer); - CCheck(deflateInit_(FZRec, Levels[CompressionLevel], zlib_version, sizeof(FZRec))); -end; - -destructor TCompressionStream.Destroy; -begin - FZRec.next_in := nil; - FZRec.avail_in := 0; - try - if FStrm.Position <> FStrmPos then FStrm.Position := FStrmPos; - while (CCheck(deflate(FZRec, Z_FINISH)) <> Z_STREAM_END) - and (FZRec.avail_out = 0) do - begin - FStrm.WriteBuffer(FBuffer, sizeof(FBuffer)); - FZRec.next_out := FBuffer; - FZRec.avail_out := sizeof(FBuffer); - end; - if FZRec.avail_out < sizeof(FBuffer) then - FStrm.WriteBuffer(FBuffer, sizeof(FBuffer) - FZRec.avail_out); - finally - deflateEnd(FZRec); - end; - inherited Destroy; -end; - -function TCompressionStream.Read(var Buffer; Count: Longint): Longint; -begin - raise ECompressionError.CreateRes(@sInvalidStreamOp); -end; - -function TCompressionStream.Write(const Buffer; Count: Longint): Longint; -begin - FZRec.next_in := @Buffer; - FZRec.avail_in := Count; - if FStrm.Position <> FStrmPos then FStrm.Position := FStrmPos; - while (FZRec.avail_in > 0) do - begin - CCheck(deflate(FZRec, 0)); - if FZRec.avail_out = 0 then - begin - FStrm.WriteBuffer(FBuffer, sizeof(FBuffer)); - FZRec.next_out := FBuffer; - FZRec.avail_out := sizeof(FBuffer); - FStrmPos := FStrm.Position; - Progress(Self); - end; - end; - Result := Count; -end; - -function TCompressionStream.Seek(Offset: Longint; Origin: Word): Longint; -begin - if (Offset = 0) and (Origin = soFromCurrent) then - Result := FZRec.total_in - else - raise ECompressionError.CreateRes(@sInvalidStreamOp); -end; - -function TCompressionStream.GetCompressionRate: Single; -begin - if FZRec.total_in = 0 then - Result := 0 - else - Result := (1.0 - (FZRec.total_out / FZRec.total_in)) * 100.0; -end; - - -// TDecompressionStream - -constructor TDecompressionStream.Create(Source: TStream); -begin - inherited Create(Source); - FZRec.next_in := FBuffer; - FZRec.avail_in := 0; - DCheck(inflateInit_(FZRec, zlib_version, sizeof(FZRec))); -end; - -destructor TDecompressionStream.Destroy; -begin - FStrm.Seek(-FZRec.avail_in, 1); - inflateEnd(FZRec); - inherited Destroy; -end; - -function TDecompressionStream.Read(var Buffer; Count: Longint): Longint; -begin - FZRec.next_out := @Buffer; - FZRec.avail_out := Count; - if FStrm.Position <> FStrmPos then FStrm.Position := FStrmPos; - while (FZRec.avail_out > 0) do - begin - if FZRec.avail_in = 0 then - begin - FZRec.avail_in := FStrm.Read(FBuffer, sizeof(FBuffer)); - if FZRec.avail_in = 0 then - begin - Result := Count - FZRec.avail_out; - Exit; - end; - FZRec.next_in := FBuffer; - FStrmPos := FStrm.Position; - Progress(Self); - end; - CCheck(inflate(FZRec, 0)); - end; - Result := Count; -end; - -function TDecompressionStream.Write(const Buffer; Count: Longint): Longint; -begin - raise EDecompressionError.CreateRes(@sInvalidStreamOp); -end; - -function TDecompressionStream.Seek(Offset: Longint; Origin: Word): Longint; -var - I: Integer; - Buf: array [0..4095] of Char; -begin - if (Offset = 0) and (Origin = soFromBeginning) then - begin - DCheck(inflateReset(FZRec)); - FZRec.next_in := FBuffer; - FZRec.avail_in := 0; - FStrm.Position := 0; - FStrmPos := 0; - end - else if ( (Offset >= 0) and (Origin = soFromCurrent)) or - ( ((Offset - FZRec.total_out) > 0) and (Origin = soFromBeginning)) then - begin - if Origin = soFromBeginning then Dec(Offset, FZRec.total_out); - if Offset > 0 then - begin - for I := 1 to Offset div sizeof(Buf) do - ReadBuffer(Buf, sizeof(Buf)); - ReadBuffer(Buf, Offset mod sizeof(Buf)); - end; - end - else - raise EDecompressionError.CreateRes(@sInvalidStreamOp); - Result := FZRec.total_out; -end; - - -end. diff --git a/platform/win32/msvc/external/zlib/contrib/delphi/ZLibConst.pas b/platform/win32/msvc/external/zlib/contrib/delphi/ZLibConst.pas deleted file mode 100644 index cdfe13671d3..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/delphi/ZLibConst.pas +++ /dev/null @@ -1,11 +0,0 @@ -unit ZLibConst; - -interface - -resourcestring - sTargetBufferTooSmall = 'ZLib error: target buffer may be too small'; - sInvalidStreamOp = 'Invalid stream operation'; - -implementation - -end. diff --git a/platform/win32/msvc/external/zlib/contrib/delphi/readme.txt b/platform/win32/msvc/external/zlib/contrib/delphi/readme.txt deleted file mode 100644 index 2dc9a8bba2f..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/delphi/readme.txt +++ /dev/null @@ -1,76 +0,0 @@ - -Overview -======== - -This directory contains an update to the ZLib interface unit, -distributed by Borland as a Delphi supplemental component. - -The original ZLib unit is Copyright (c) 1997,99 Borland Corp., -and is based on zlib version 1.0.4. There are a series of bugs -and security problems associated with that old zlib version, and -we recommend the users to update their ZLib unit. - - -Summary of modifications -======================== - -- Improved makefile, adapted to zlib version 1.2.1. - -- Some field types from TZStreamRec are changed from Integer to - Longint, for consistency with the zlib.h header, and for 64-bit - readiness. - -- The zlib_version constant is updated. - -- The new Z_RLE strategy has its corresponding symbolic constant. - -- The allocation and deallocation functions and function types - (TAlloc, TFree, zlibAllocMem and zlibFreeMem) are now cdecl, - and _malloc and _free are added as C RTL stubs. As a result, - the original C sources of zlib can be compiled out of the box, - and linked to the ZLib unit. - - -Suggestions for improvements -============================ - -Currently, the ZLib unit provides only a limited wrapper around -the zlib library, and much of the original zlib functionality is -missing. Handling compressed file formats like ZIP/GZIP or PNG -cannot be implemented without having this functionality. -Applications that handle these formats are either using their own, -duplicated code, or not using the ZLib unit at all. - -Here are a few suggestions: - -- Checksum class wrappers around adler32() and crc32(), similar - to the Java classes that implement the java.util.zip.Checksum - interface. - -- The ability to read and write raw deflate streams, without the - zlib stream header and trailer. Raw deflate streams are used - in the ZIP file format. - -- The ability to read and write gzip streams, used in the GZIP - file format, and normally produced by the gzip program. - -- The ability to select a different compression strategy, useful - to PNG and MNG image compression, and to multimedia compression - in general. Besides the compression level - - TCompressionLevel = (clNone, clFastest, clDefault, clMax); - - which, in fact, could have used the 'z' prefix and avoided - TColor-like symbols - - TCompressionLevel = (zcNone, zcFastest, zcDefault, zcMax); - - there could be a compression strategy - - TCompressionStrategy = (zsDefault, zsFiltered, zsHuffmanOnly, zsRle); - -- ZIP and GZIP stream handling via TStreams. - - --- -Cosmin Truta <cosmint@cs.ubbcluj.ro> diff --git a/platform/win32/msvc/external/zlib/contrib/delphi/zlibd32.mak b/platform/win32/msvc/external/zlib/contrib/delphi/zlibd32.mak deleted file mode 100644 index 9bb00b7cc42..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/delphi/zlibd32.mak +++ /dev/null @@ -1,99 +0,0 @@ -# Makefile for zlib -# For use with Delphi and C++ Builder under Win32 -# Updated for zlib 1.2.x by Cosmin Truta - -# ------------ Borland C++ ------------ - -# This project uses the Delphi (fastcall/register) calling convention: -LOC = -DZEXPORT=__fastcall -DZEXPORTVA=__cdecl - -CC = bcc32 -LD = bcc32 -AR = tlib -# do not use "-pr" in CFLAGS -CFLAGS = -a -d -k- -O2 $(LOC) -LDFLAGS = - - -# variables -ZLIB_LIB = zlib.lib - -OBJ1 = adler32.obj compress.obj crc32.obj deflate.obj gzclose.obj gzlib.obj gzread.obj -OBJ2 = gzwrite.obj infback.obj inffast.obj inflate.obj inftrees.obj trees.obj uncompr.obj zutil.obj -OBJP1 = +adler32.obj+compress.obj+crc32.obj+deflate.obj+gzclose.obj+gzlib.obj+gzread.obj -OBJP2 = +gzwrite.obj+infback.obj+inffast.obj+inflate.obj+inftrees.obj+trees.obj+uncompr.obj+zutil.obj - - -# targets -all: $(ZLIB_LIB) example.exe minigzip.exe - -.c.obj: - $(CC) -c $(CFLAGS) $*.c - -adler32.obj: adler32.c zlib.h zconf.h - -compress.obj: compress.c zlib.h zconf.h - -crc32.obj: crc32.c zlib.h zconf.h crc32.h - -deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h - -gzclose.obj: gzclose.c zlib.h zconf.h gzguts.h - -gzlib.obj: gzlib.c zlib.h zconf.h gzguts.h - -gzread.obj: gzread.c zlib.h zconf.h gzguts.h - -gzwrite.obj: gzwrite.c zlib.h zconf.h gzguts.h - -infback.obj: infback.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h inffixed.h - -inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h - -inflate.obj: inflate.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h inffixed.h - -inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h - -trees.obj: trees.c zutil.h zlib.h zconf.h deflate.h trees.h - -uncompr.obj: uncompr.c zlib.h zconf.h - -zutil.obj: zutil.c zutil.h zlib.h zconf.h - -example.obj: test/example.c zlib.h zconf.h - -minigzip.obj: test/minigzip.c zlib.h zconf.h - - -# For the sake of the old Borland make, -# the command line is cut to fit in the MS-DOS 128 byte limit: -$(ZLIB_LIB): $(OBJ1) $(OBJ2) - -del $(ZLIB_LIB) - $(AR) $(ZLIB_LIB) $(OBJP1) - $(AR) $(ZLIB_LIB) $(OBJP2) - - -# testing -test: example.exe minigzip.exe - example - echo hello world | minigzip | minigzip -d - -example.exe: example.obj $(ZLIB_LIB) - $(LD) $(LDFLAGS) example.obj $(ZLIB_LIB) - -minigzip.exe: minigzip.obj $(ZLIB_LIB) - $(LD) $(LDFLAGS) minigzip.obj $(ZLIB_LIB) - - -# cleanup -clean: - -del *.obj - -del *.exe - -del *.lib - -del *.tds - -del zlib.bak - -del foo.gz - diff --git a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib.build b/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib.build deleted file mode 100644 index 7f90d6bc7c4..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib.build +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<project name="DotZLib" default="build" basedir="./DotZLib"> - <description>A .Net wrapper library around ZLib1.dll</description> - - <property name="nunit.location" value="c:/program files/NUnit V2.1/bin" /> - <property name="build.root" value="bin" /> - - <property name="debug" value="true" /> - <property name="nunit" value="true" /> - - <property name="build.folder" value="${build.root}/debug/" if="${debug}" /> - <property name="build.folder" value="${build.root}/release/" unless="${debug}" /> - - <target name="clean" description="Remove all generated files"> - <delete dir="${build.root}" failonerror="false" /> - </target> - - <target name="build" description="compiles the source code"> - - <mkdir dir="${build.folder}" /> - <csc target="library" output="${build.folder}DotZLib.dll" debug="${debug}"> - <references basedir="${nunit.location}"> - <includes if="${nunit}" name="nunit.framework.dll" /> - </references> - <sources> - <includes name="*.cs" /> - <excludes name="UnitTests.cs" unless="${nunit}" /> - </sources> - <arg value="/d:nunit" if="${nunit}" /> - </csc> - </target> - -</project> \ No newline at end of file diff --git a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib.chm b/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib.chm deleted file mode 100644 index f214a444aeb..00000000000 Binary files a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib.chm and /dev/null differ diff --git a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs b/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs deleted file mode 100644 index 0491bfc2b03..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; - -// -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -// -[assembly: AssemblyTitle("DotZLib")] -[assembly: AssemblyDescription(".Net bindings for ZLib compression dll 1.2.x")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Henrik Ravn")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("(c) 2004 by Henrik Ravn")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Revision and Build Numbers -// by using the '*' as shown below: - -[assembly: AssemblyVersion("1.0.*")] - -// -// In order to sign your assembly you must specify a key to use. Refer to the -// Microsoft .NET Framework documentation for more information on assembly signing. -// -// Use the attributes below to control which key is used for signing. -// -// Notes: -// (*) If no key is specified, the assembly is not signed. -// (*) KeyName refers to a key that has been installed in the Crypto Service -// Provider (CSP) on your machine. KeyFile refers to a file which contains -// a key. -// (*) If the KeyFile and the KeyName values are both specified, the -// following processing occurs: -// (1) If the KeyName can be found in the CSP, that key is used. -// (2) If the KeyName does not exist and the KeyFile does exist, the key -// in the KeyFile is installed into the CSP and used. -// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility. -// When specifying the KeyFile, the location of the KeyFile should be -// relative to the project output directory which is -// %Project Directory%\obj\<configuration>. For example, if your KeyFile is -// located in the project directory, you would specify the AssemblyKeyFile -// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")] -// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework -// documentation for more information on this. -// -[assembly: AssemblyDelaySign(false)] -[assembly: AssemblyKeyFile("")] -[assembly: AssemblyKeyName("")] diff --git a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs b/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs deleted file mode 100644 index 788b2fceced..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs +++ /dev/null @@ -1,202 +0,0 @@ -// -// © Copyright Henrik Ravn 2004 -// -// Use, modification and distribution are subject to the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -using System; -using System.Runtime.InteropServices; -using System.Text; - - -namespace DotZLib -{ - #region ChecksumGeneratorBase - /// <summary> - /// Implements the common functionality needed for all <see cref="ChecksumGenerator"/>s - /// </summary> - /// <example></example> - public abstract class ChecksumGeneratorBase : ChecksumGenerator - { - /// <summary> - /// The value of the current checksum - /// </summary> - protected uint _current; - - /// <summary> - /// Initializes a new instance of the checksum generator base - the current checksum is - /// set to zero - /// </summary> - public ChecksumGeneratorBase() - { - _current = 0; - } - - /// <summary> - /// Initializes a new instance of the checksum generator basewith a specified value - /// </summary> - /// <param name="initialValue">The value to set the current checksum to</param> - public ChecksumGeneratorBase(uint initialValue) - { - _current = initialValue; - } - - /// <summary> - /// Resets the current checksum to zero - /// </summary> - public void Reset() { _current = 0; } - - /// <summary> - /// Gets the current checksum value - /// </summary> - public uint Value { get { return _current; } } - - /// <summary> - /// Updates the current checksum with part of an array of bytes - /// </summary> - /// <param name="data">The data to update the checksum with</param> - /// <param name="offset">Where in <c>data</c> to start updating</param> - /// <param name="count">The number of bytes from <c>data</c> to use</param> - /// <exception cref="ArgumentException">The sum of offset and count is larger than the length of <c>data</c></exception> - /// <exception cref="NullReferenceException"><c>data</c> is a null reference</exception> - /// <exception cref="ArgumentOutOfRangeException">Offset or count is negative.</exception> - /// <remarks>All the other <c>Update</c> methods are implmeneted in terms of this one. - /// This is therefore the only method a derived class has to implement</remarks> - public abstract void Update(byte[] data, int offset, int count); - - /// <summary> - /// Updates the current checksum with an array of bytes. - /// </summary> - /// <param name="data">The data to update the checksum with</param> - public void Update(byte[] data) - { - Update(data, 0, data.Length); - } - - /// <summary> - /// Updates the current checksum with the data from a string - /// </summary> - /// <param name="data">The string to update the checksum with</param> - /// <remarks>The characters in the string are converted by the UTF-8 encoding</remarks> - public void Update(string data) - { - Update(Encoding.UTF8.GetBytes(data)); - } - - /// <summary> - /// Updates the current checksum with the data from a string, using a specific encoding - /// </summary> - /// <param name="data">The string to update the checksum with</param> - /// <param name="encoding">The encoding to use</param> - public void Update(string data, Encoding encoding) - { - Update(encoding.GetBytes(data)); - } - - } - #endregion - - #region CRC32 - /// <summary> - /// Implements a CRC32 checksum generator - /// </summary> - public sealed class CRC32Checksum : ChecksumGeneratorBase - { - #region DLL imports - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern uint crc32(uint crc, int data, uint length); - - #endregion - - /// <summary> - /// Initializes a new instance of the CRC32 checksum generator - /// </summary> - public CRC32Checksum() : base() {} - - /// <summary> - /// Initializes a new instance of the CRC32 checksum generator with a specified value - /// </summary> - /// <param name="initialValue">The value to set the current checksum to</param> - public CRC32Checksum(uint initialValue) : base(initialValue) {} - - /// <summary> - /// Updates the current checksum with part of an array of bytes - /// </summary> - /// <param name="data">The data to update the checksum with</param> - /// <param name="offset">Where in <c>data</c> to start updating</param> - /// <param name="count">The number of bytes from <c>data</c> to use</param> - /// <exception cref="ArgumentException">The sum of offset and count is larger than the length of <c>data</c></exception> - /// <exception cref="NullReferenceException"><c>data</c> is a null reference</exception> - /// <exception cref="ArgumentOutOfRangeException">Offset or count is negative.</exception> - public override void Update(byte[] data, int offset, int count) - { - if (offset < 0 || count < 0) throw new ArgumentOutOfRangeException(); - if ((offset+count) > data.Length) throw new ArgumentException(); - GCHandle hData = GCHandle.Alloc(data, GCHandleType.Pinned); - try - { - _current = crc32(_current, hData.AddrOfPinnedObject().ToInt32()+offset, (uint)count); - } - finally - { - hData.Free(); - } - } - - } - #endregion - - #region Adler - /// <summary> - /// Implements a checksum generator that computes the Adler checksum on data - /// </summary> - public sealed class AdlerChecksum : ChecksumGeneratorBase - { - #region DLL imports - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern uint adler32(uint adler, int data, uint length); - - #endregion - - /// <summary> - /// Initializes a new instance of the Adler checksum generator - /// </summary> - public AdlerChecksum() : base() {} - - /// <summary> - /// Initializes a new instance of the Adler checksum generator with a specified value - /// </summary> - /// <param name="initialValue">The value to set the current checksum to</param> - public AdlerChecksum(uint initialValue) : base(initialValue) {} - - /// <summary> - /// Updates the current checksum with part of an array of bytes - /// </summary> - /// <param name="data">The data to update the checksum with</param> - /// <param name="offset">Where in <c>data</c> to start updating</param> - /// <param name="count">The number of bytes from <c>data</c> to use</param> - /// <exception cref="ArgumentException">The sum of offset and count is larger than the length of <c>data</c></exception> - /// <exception cref="NullReferenceException"><c>data</c> is a null reference</exception> - /// <exception cref="ArgumentOutOfRangeException">Offset or count is negative.</exception> - public override void Update(byte[] data, int offset, int count) - { - if (offset < 0 || count < 0) throw new ArgumentOutOfRangeException(); - if ((offset+count) > data.Length) throw new ArgumentException(); - GCHandle hData = GCHandle.Alloc(data, GCHandleType.Pinned); - try - { - _current = adler32(_current, hData.AddrOfPinnedObject().ToInt32()+offset, (uint)count); - } - finally - { - hData.Free(); - } - } - - } - #endregion - -} \ No newline at end of file diff --git a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs b/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs deleted file mode 100644 index c1cab3a02c6..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs +++ /dev/null @@ -1,83 +0,0 @@ -// -// © Copyright Henrik Ravn 2004 -// -// Use, modification and distribution are subject to the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -using System; -using System.Diagnostics; - -namespace DotZLib -{ - - /// <summary> - /// This class implements a circular buffer - /// </summary> - internal class CircularBuffer - { - #region Private data - private int _capacity; - private int _head; - private int _tail; - private int _size; - private byte[] _buffer; - #endregion - - public CircularBuffer(int capacity) - { - Debug.Assert( capacity > 0 ); - _buffer = new byte[capacity]; - _capacity = capacity; - _head = 0; - _tail = 0; - _size = 0; - } - - public int Size { get { return _size; } } - - public int Put(byte[] source, int offset, int count) - { - Debug.Assert( count > 0 ); - int trueCount = Math.Min(count, _capacity - Size); - for (int i = 0; i < trueCount; ++i) - _buffer[(_tail+i) % _capacity] = source[offset+i]; - _tail += trueCount; - _tail %= _capacity; - _size += trueCount; - return trueCount; - } - - public bool Put(byte b) - { - if (Size == _capacity) // no room - return false; - _buffer[_tail++] = b; - _tail %= _capacity; - ++_size; - return true; - } - - public int Get(byte[] destination, int offset, int count) - { - int trueCount = Math.Min(count,Size); - for (int i = 0; i < trueCount; ++i) - destination[offset + i] = _buffer[(_head+i) % _capacity]; - _head += trueCount; - _head %= _capacity; - _size -= trueCount; - return trueCount; - } - - public int Get() - { - if (Size == 0) - return -1; - - int result = (int)_buffer[_head++ % _capacity]; - --_size; - return result; - } - - } -} diff --git a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/CodecBase.cs b/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/CodecBase.cs deleted file mode 100644 index 42e6da3a565..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/CodecBase.cs +++ /dev/null @@ -1,198 +0,0 @@ -// -// © Copyright Henrik Ravn 2004 -// -// Use, modification and distribution are subject to the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -using System; -using System.Runtime.InteropServices; - -namespace DotZLib -{ - /// <summary> - /// Implements the common functionality needed for all <see cref="Codec"/>s - /// </summary> - public abstract class CodecBase : Codec, IDisposable - { - - #region Data members - - /// <summary> - /// Instance of the internal zlib buffer structure that is - /// passed to all functions in the zlib dll - /// </summary> - internal ZStream _ztream = new ZStream(); - - /// <summary> - /// True if the object instance has been disposed, false otherwise - /// </summary> - protected bool _isDisposed = false; - - /// <summary> - /// The size of the internal buffers - /// </summary> - protected const int kBufferSize = 16384; - - private byte[] _outBuffer = new byte[kBufferSize]; - private byte[] _inBuffer = new byte[kBufferSize]; - - private GCHandle _hInput; - private GCHandle _hOutput; - - private uint _checksum = 0; - - #endregion - - /// <summary> - /// Initializes a new instance of the <c>CodeBase</c> class. - /// </summary> - public CodecBase() - { - try - { - _hInput = GCHandle.Alloc(_inBuffer, GCHandleType.Pinned); - _hOutput = GCHandle.Alloc(_outBuffer, GCHandleType.Pinned); - } - catch (Exception) - { - CleanUp(false); - throw; - } - } - - - #region Codec Members - - /// <summary> - /// Occurs when more processed data are available. - /// </summary> - public event DataAvailableHandler DataAvailable; - - /// <summary> - /// Fires the <see cref="DataAvailable"/> event - /// </summary> - protected void OnDataAvailable() - { - if (_ztream.total_out > 0) - { - if (DataAvailable != null) - DataAvailable( _outBuffer, 0, (int)_ztream.total_out); - resetOutput(); - } - } - - /// <summary> - /// Adds more data to the codec to be processed. - /// </summary> - /// <param name="data">Byte array containing the data to be added to the codec</param> - /// <remarks>Adding data may, or may not, raise the <c>DataAvailable</c> event</remarks> - public void Add(byte[] data) - { - Add(data,0,data.Length); - } - - /// <summary> - /// Adds more data to the codec to be processed. - /// </summary> - /// <param name="data">Byte array containing the data to be added to the codec</param> - /// <param name="offset">The index of the first byte to add from <c>data</c></param> - /// <param name="count">The number of bytes to add</param> - /// <remarks>Adding data may, or may not, raise the <c>DataAvailable</c> event</remarks> - /// <remarks>This must be implemented by a derived class</remarks> - public abstract void Add(byte[] data, int offset, int count); - - /// <summary> - /// Finishes up any pending data that needs to be processed and handled. - /// </summary> - /// <remarks>This must be implemented by a derived class</remarks> - public abstract void Finish(); - - /// <summary> - /// Gets the checksum of the data that has been added so far - /// </summary> - public uint Checksum { get { return _checksum; } } - - #endregion - - #region Destructor & IDisposable stuff - - /// <summary> - /// Destroys this instance - /// </summary> - ~CodecBase() - { - CleanUp(false); - } - - /// <summary> - /// Releases any unmanaged resources and calls the <see cref="CleanUp()"/> method of the derived class - /// </summary> - public void Dispose() - { - CleanUp(true); - } - - /// <summary> - /// Performs any codec specific cleanup - /// </summary> - /// <remarks>This must be implemented by a derived class</remarks> - protected abstract void CleanUp(); - - // performs the release of the handles and calls the dereived CleanUp() - private void CleanUp(bool isDisposing) - { - if (!_isDisposed) - { - CleanUp(); - if (_hInput.IsAllocated) - _hInput.Free(); - if (_hOutput.IsAllocated) - _hOutput.Free(); - - _isDisposed = true; - } - } - - - #endregion - - #region Helper methods - - /// <summary> - /// Copies a number of bytes to the internal codec buffer - ready for proccesing - /// </summary> - /// <param name="data">The byte array that contains the data to copy</param> - /// <param name="startIndex">The index of the first byte to copy</param> - /// <param name="count">The number of bytes to copy from <c>data</c></param> - protected void copyInput(byte[] data, int startIndex, int count) - { - Array.Copy(data, startIndex, _inBuffer,0, count); - _ztream.next_in = _hInput.AddrOfPinnedObject(); - _ztream.total_in = 0; - _ztream.avail_in = (uint)count; - - } - - /// <summary> - /// Resets the internal output buffers to a known state - ready for processing - /// </summary> - protected void resetOutput() - { - _ztream.total_out = 0; - _ztream.avail_out = kBufferSize; - _ztream.next_out = _hOutput.AddrOfPinnedObject(); - } - - /// <summary> - /// Updates the running checksum property - /// </summary> - /// <param name="newSum">The new checksum value</param> - protected void setChecksum(uint newSum) - { - _checksum = newSum; - } - #endregion - - } -} diff --git a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/Deflater.cs b/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/Deflater.cs deleted file mode 100644 index c2477925b62..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/Deflater.cs +++ /dev/null @@ -1,106 +0,0 @@ -// -// © Copyright Henrik Ravn 2004 -// -// Use, modification and distribution are subject to the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -using System; -using System.Diagnostics; -using System.Runtime.InteropServices; - -namespace DotZLib -{ - - /// <summary> - /// Implements a data compressor, using the deflate algorithm in the ZLib dll - /// </summary> - public sealed class Deflater : CodecBase - { - #region Dll imports - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl, CharSet=CharSet.Ansi)] - private static extern int deflateInit_(ref ZStream sz, int level, string vs, int size); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern int deflate(ref ZStream sz, int flush); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern int deflateReset(ref ZStream sz); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern int deflateEnd(ref ZStream sz); - #endregion - - /// <summary> - /// Constructs an new instance of the <c>Deflater</c> - /// </summary> - /// <param name="level">The compression level to use for this <c>Deflater</c></param> - public Deflater(CompressLevel level) : base() - { - int retval = deflateInit_(ref _ztream, (int)level, Info.Version, Marshal.SizeOf(_ztream)); - if (retval != 0) - throw new ZLibException(retval, "Could not initialize deflater"); - - resetOutput(); - } - - /// <summary> - /// Adds more data to the codec to be processed. - /// </summary> - /// <param name="data">Byte array containing the data to be added to the codec</param> - /// <param name="offset">The index of the first byte to add from <c>data</c></param> - /// <param name="count">The number of bytes to add</param> - /// <remarks>Adding data may, or may not, raise the <c>DataAvailable</c> event</remarks> - public override void Add(byte[] data, int offset, int count) - { - if (data == null) throw new ArgumentNullException(); - if (offset < 0 || count < 0) throw new ArgumentOutOfRangeException(); - if ((offset+count) > data.Length) throw new ArgumentException(); - - int total = count; - int inputIndex = offset; - int err = 0; - - while (err >= 0 && inputIndex < total) - { - copyInput(data, inputIndex, Math.Min(total - inputIndex, kBufferSize)); - while (err >= 0 && _ztream.avail_in > 0) - { - err = deflate(ref _ztream, (int)FlushTypes.None); - if (err == 0) - while (_ztream.avail_out == 0) - { - OnDataAvailable(); - err = deflate(ref _ztream, (int)FlushTypes.None); - } - inputIndex += (int)_ztream.total_in; - } - } - setChecksum( _ztream.adler ); - } - - - /// <summary> - /// Finishes up any pending data that needs to be processed and handled. - /// </summary> - public override void Finish() - { - int err; - do - { - err = deflate(ref _ztream, (int)FlushTypes.Finish); - OnDataAvailable(); - } - while (err == 0); - setChecksum( _ztream.adler ); - deflateReset(ref _ztream); - resetOutput(); - } - - /// <summary> - /// Closes the internal zlib deflate stream - /// </summary> - protected override void CleanUp() { deflateEnd(ref _ztream); } - - } -} diff --git a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/DotZLib.cs b/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/DotZLib.cs deleted file mode 100644 index be184b4c71b..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/DotZLib.cs +++ /dev/null @@ -1,288 +0,0 @@ -// -// © Copyright Henrik Ravn 2004 -// -// Use, modification and distribution are subject to the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -using System; -using System.IO; -using System.Runtime.InteropServices; -using System.Text; - - -namespace DotZLib -{ - - #region Internal types - - /// <summary> - /// Defines constants for the various flush types used with zlib - /// </summary> - internal enum FlushTypes - { - None, Partial, Sync, Full, Finish, Block - } - - #region ZStream structure - // internal mapping of the zlib zstream structure for marshalling - [StructLayoutAttribute(LayoutKind.Sequential, Pack=4, Size=0, CharSet=CharSet.Ansi)] - internal struct ZStream - { - public IntPtr next_in; - public uint avail_in; - public uint total_in; - - public IntPtr next_out; - public uint avail_out; - public uint total_out; - - [MarshalAs(UnmanagedType.LPStr)] - string msg; - uint state; - - uint zalloc; - uint zfree; - uint opaque; - - int data_type; - public uint adler; - uint reserved; - } - - #endregion - - #endregion - - #region Public enums - /// <summary> - /// Defines constants for the available compression levels in zlib - /// </summary> - public enum CompressLevel : int - { - /// <summary> - /// The default compression level with a reasonable compromise between compression and speed - /// </summary> - Default = -1, - /// <summary> - /// No compression at all. The data are passed straight through. - /// </summary> - None = 0, - /// <summary> - /// The maximum compression rate available. - /// </summary> - Best = 9, - /// <summary> - /// The fastest available compression level. - /// </summary> - Fastest = 1 - } - #endregion - - #region Exception classes - /// <summary> - /// The exception that is thrown when an error occurs on the zlib dll - /// </summary> - public class ZLibException : ApplicationException - { - /// <summary> - /// Initializes a new instance of the <see cref="ZLibException"/> class with a specified - /// error message and error code - /// </summary> - /// <param name="errorCode">The zlib error code that caused the exception</param> - /// <param name="msg">A message that (hopefully) describes the error</param> - public ZLibException(int errorCode, string msg) : base(String.Format("ZLib error {0} {1}", errorCode, msg)) - { - } - - /// <summary> - /// Initializes a new instance of the <see cref="ZLibException"/> class with a specified - /// error code - /// </summary> - /// <param name="errorCode">The zlib error code that caused the exception</param> - public ZLibException(int errorCode) : base(String.Format("ZLib error {0}", errorCode)) - { - } - } - #endregion - - #region Interfaces - - /// <summary> - /// Declares methods and properties that enables a running checksum to be calculated - /// </summary> - public interface ChecksumGenerator - { - /// <summary> - /// Gets the current value of the checksum - /// </summary> - uint Value { get; } - - /// <summary> - /// Clears the current checksum to 0 - /// </summary> - void Reset(); - - /// <summary> - /// Updates the current checksum with an array of bytes - /// </summary> - /// <param name="data">The data to update the checksum with</param> - void Update(byte[] data); - - /// <summary> - /// Updates the current checksum with part of an array of bytes - /// </summary> - /// <param name="data">The data to update the checksum with</param> - /// <param name="offset">Where in <c>data</c> to start updating</param> - /// <param name="count">The number of bytes from <c>data</c> to use</param> - /// <exception cref="ArgumentException">The sum of offset and count is larger than the length of <c>data</c></exception> - /// <exception cref="ArgumentNullException"><c>data</c> is a null reference</exception> - /// <exception cref="ArgumentOutOfRangeException">Offset or count is negative.</exception> - void Update(byte[] data, int offset, int count); - - /// <summary> - /// Updates the current checksum with the data from a string - /// </summary> - /// <param name="data">The string to update the checksum with</param> - /// <remarks>The characters in the string are converted by the UTF-8 encoding</remarks> - void Update(string data); - - /// <summary> - /// Updates the current checksum with the data from a string, using a specific encoding - /// </summary> - /// <param name="data">The string to update the checksum with</param> - /// <param name="encoding">The encoding to use</param> - void Update(string data, Encoding encoding); - } - - - /// <summary> - /// Represents the method that will be called from a codec when new data - /// are available. - /// </summary> - /// <paramref name="data">The byte array containing the processed data</paramref> - /// <paramref name="startIndex">The index of the first processed byte in <c>data</c></paramref> - /// <paramref name="count">The number of processed bytes available</paramref> - /// <remarks>On return from this method, the data may be overwritten, so grab it while you can. - /// You cannot assume that startIndex will be zero. - /// </remarks> - public delegate void DataAvailableHandler(byte[] data, int startIndex, int count); - - /// <summary> - /// Declares methods and events for implementing compressors/decompressors - /// </summary> - public interface Codec - { - /// <summary> - /// Occurs when more processed data are available. - /// </summary> - event DataAvailableHandler DataAvailable; - - /// <summary> - /// Adds more data to the codec to be processed. - /// </summary> - /// <param name="data">Byte array containing the data to be added to the codec</param> - /// <remarks>Adding data may, or may not, raise the <c>DataAvailable</c> event</remarks> - void Add(byte[] data); - - /// <summary> - /// Adds more data to the codec to be processed. - /// </summary> - /// <param name="data">Byte array containing the data to be added to the codec</param> - /// <param name="offset">The index of the first byte to add from <c>data</c></param> - /// <param name="count">The number of bytes to add</param> - /// <remarks>Adding data may, or may not, raise the <c>DataAvailable</c> event</remarks> - void Add(byte[] data, int offset, int count); - - /// <summary> - /// Finishes up any pending data that needs to be processed and handled. - /// </summary> - void Finish(); - - /// <summary> - /// Gets the checksum of the data that has been added so far - /// </summary> - uint Checksum { get; } - - - } - - #endregion - - #region Classes - /// <summary> - /// Encapsulates general information about the ZLib library - /// </summary> - public class Info - { - #region DLL imports - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern uint zlibCompileFlags(); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern string zlibVersion(); - #endregion - - #region Private stuff - private uint _flags; - - // helper function that unpacks a bitsize mask - private static int bitSize(uint bits) - { - switch (bits) - { - case 0: return 16; - case 1: return 32; - case 2: return 64; - } - return -1; - } - #endregion - - /// <summary> - /// Constructs an instance of the <c>Info</c> class. - /// </summary> - public Info() - { - _flags = zlibCompileFlags(); - } - - /// <summary> - /// True if the library is compiled with debug info - /// </summary> - public bool HasDebugInfo { get { return 0 != (_flags & 0x100); } } - - /// <summary> - /// True if the library is compiled with assembly optimizations - /// </summary> - public bool UsesAssemblyCode { get { return 0 != (_flags & 0x200); } } - - /// <summary> - /// Gets the size of the unsigned int that was compiled into Zlib - /// </summary> - public int SizeOfUInt { get { return bitSize(_flags & 3); } } - - /// <summary> - /// Gets the size of the unsigned long that was compiled into Zlib - /// </summary> - public int SizeOfULong { get { return bitSize((_flags >> 2) & 3); } } - - /// <summary> - /// Gets the size of the pointers that were compiled into Zlib - /// </summary> - public int SizeOfPointer { get { return bitSize((_flags >> 4) & 3); } } - - /// <summary> - /// Gets the size of the z_off_t type that was compiled into Zlib - /// </summary> - public int SizeOfOffset { get { return bitSize((_flags >> 6) & 3); } } - - /// <summary> - /// Gets the version of ZLib as a string, e.g. "1.2.1" - /// </summary> - public static string Version { get { return zlibVersion(); } } - } - - #endregion - -} diff --git a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj b/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj deleted file mode 100644 index 71eeb8590af..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj +++ /dev/null @@ -1,141 +0,0 @@ -<VisualStudioProject> - <CSHARP - ProjectType = "Local" - ProductVersion = "7.10.3077" - SchemaVersion = "2.0" - ProjectGuid = "{BB1EE0B1-1808-46CB-B786-949D91117FC5}" - > - <Build> - <Settings - ApplicationIcon = "" - AssemblyKeyContainerName = "" - AssemblyName = "DotZLib" - AssemblyOriginatorKeyFile = "" - DefaultClientScript = "JScript" - DefaultHTMLPageLayout = "Grid" - DefaultTargetSchema = "IE50" - DelaySign = "false" - OutputType = "Library" - PreBuildEvent = "" - PostBuildEvent = "" - RootNamespace = "DotZLib" - RunPostBuildEvent = "OnBuildSuccess" - StartupObject = "" - > - <Config - Name = "Debug" - AllowUnsafeBlocks = "false" - BaseAddress = "285212672" - CheckForOverflowUnderflow = "false" - ConfigurationOverrideFile = "" - DefineConstants = "DEBUG;TRACE" - DocumentationFile = "docs\DotZLib.xml" - DebugSymbols = "true" - FileAlignment = "4096" - IncrementalBuild = "false" - NoStdLib = "false" - NoWarn = "1591" - Optimize = "false" - OutputPath = "bin\Debug\" - RegisterForComInterop = "false" - RemoveIntegerChecks = "false" - TreatWarningsAsErrors = "false" - WarningLevel = "4" - /> - <Config - Name = "Release" - AllowUnsafeBlocks = "false" - BaseAddress = "285212672" - CheckForOverflowUnderflow = "false" - ConfigurationOverrideFile = "" - DefineConstants = "TRACE" - DocumentationFile = "docs\DotZLib.xml" - DebugSymbols = "false" - FileAlignment = "4096" - IncrementalBuild = "false" - NoStdLib = "false" - NoWarn = "" - Optimize = "true" - OutputPath = "bin\Release\" - RegisterForComInterop = "false" - RemoveIntegerChecks = "false" - TreatWarningsAsErrors = "false" - WarningLevel = "4" - /> - </Settings> - <References> - <Reference - Name = "System" - AssemblyName = "System" - HintPath = "C:\WINNT\Microsoft.NET\Framework\v1.1.4322\System.dll" - /> - <Reference - Name = "System.Data" - AssemblyName = "System.Data" - HintPath = "C:\WINNT\Microsoft.NET\Framework\v1.1.4322\System.Data.dll" - /> - <Reference - Name = "System.XML" - AssemblyName = "System.Xml" - HintPath = "C:\WINNT\Microsoft.NET\Framework\v1.1.4322\System.XML.dll" - /> - <Reference - Name = "nunit.framework" - AssemblyName = "nunit.framework" - HintPath = "E:\apps\NUnit V2.1\\bin\nunit.framework.dll" - AssemblyFolderKey = "hklm\dn\nunit.framework" - /> - </References> - </Build> - <Files> - <Include> - <File - RelPath = "AssemblyInfo.cs" - SubType = "Code" - BuildAction = "Compile" - /> - <File - RelPath = "ChecksumImpl.cs" - SubType = "Code" - BuildAction = "Compile" - /> - <File - RelPath = "CircularBuffer.cs" - SubType = "Code" - BuildAction = "Compile" - /> - <File - RelPath = "CodecBase.cs" - SubType = "Code" - BuildAction = "Compile" - /> - <File - RelPath = "Deflater.cs" - SubType = "Code" - BuildAction = "Compile" - /> - <File - RelPath = "DotZLib.cs" - SubType = "Code" - BuildAction = "Compile" - /> - <File - RelPath = "GZipStream.cs" - SubType = "Code" - BuildAction = "Compile" - /> - <File - RelPath = "Inflater.cs" - SubType = "Code" - BuildAction = "Compile" - /> - <File - RelPath = "UnitTests.cs" - SubType = "Code" - BuildAction = "Compile" - /> - </Include> - </Files> - </CSHARP> -</VisualStudioProject> - diff --git a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/GZipStream.cs b/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/GZipStream.cs deleted file mode 100644 index b161300b185..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/GZipStream.cs +++ /dev/null @@ -1,301 +0,0 @@ -// -// © Copyright Henrik Ravn 2004 -// -// Use, modification and distribution are subject to the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -using System; -using System.IO; -using System.Runtime.InteropServices; - -namespace DotZLib -{ - /// <summary> - /// Implements a compressed <see cref="Stream"/>, in GZip (.gz) format. - /// </summary> - public class GZipStream : Stream, IDisposable - { - #region Dll Imports - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl, CharSet=CharSet.Ansi)] - private static extern IntPtr gzopen(string name, string mode); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern int gzclose(IntPtr gzFile); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern int gzwrite(IntPtr gzFile, int data, int length); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern int gzread(IntPtr gzFile, int data, int length); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern int gzgetc(IntPtr gzFile); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern int gzputc(IntPtr gzFile, int c); - - #endregion - - #region Private data - private IntPtr _gzFile; - private bool _isDisposed = false; - private bool _isWriting; - #endregion - - #region Constructors - /// <summary> - /// Creates a new file as a writeable GZipStream - /// </summary> - /// <param name="fileName">The name of the compressed file to create</param> - /// <param name="level">The compression level to use when adding data</param> - /// <exception cref="ZLibException">If an error occurred in the internal zlib function</exception> - public GZipStream(string fileName, CompressLevel level) - { - _isWriting = true; - _gzFile = gzopen(fileName, String.Format("wb{0}", (int)level)); - if (_gzFile == IntPtr.Zero) - throw new ZLibException(-1, "Could not open " + fileName); - } - - /// <summary> - /// Opens an existing file as a readable GZipStream - /// </summary> - /// <param name="fileName">The name of the file to open</param> - /// <exception cref="ZLibException">If an error occurred in the internal zlib function</exception> - public GZipStream(string fileName) - { - _isWriting = false; - _gzFile = gzopen(fileName, "rb"); - if (_gzFile == IntPtr.Zero) - throw new ZLibException(-1, "Could not open " + fileName); - - } - #endregion - - #region Access properties - /// <summary> - /// Returns true of this stream can be read from, false otherwise - /// </summary> - public override bool CanRead - { - get - { - return !_isWriting; - } - } - - - /// <summary> - /// Returns false. - /// </summary> - public override bool CanSeek - { - get - { - return false; - } - } - - /// <summary> - /// Returns true if this tsream is writeable, false otherwise - /// </summary> - public override bool CanWrite - { - get - { - return _isWriting; - } - } - #endregion - - #region Destructor & IDispose stuff - - /// <summary> - /// Destroys this instance - /// </summary> - ~GZipStream() - { - cleanUp(false); - } - - /// <summary> - /// Closes the external file handle - /// </summary> - public void Dispose() - { - cleanUp(true); - } - - // Does the actual closing of the file handle. - private void cleanUp(bool isDisposing) - { - if (!_isDisposed) - { - gzclose(_gzFile); - _isDisposed = true; - } - } - #endregion - - #region Basic reading and writing - /// <summary> - /// Attempts to read a number of bytes from the stream. - /// </summary> - /// <param name="buffer">The destination data buffer</param> - /// <param name="offset">The index of the first destination byte in <c>buffer</c></param> - /// <param name="count">The number of bytes requested</param> - /// <returns>The number of bytes read</returns> - /// <exception cref="ArgumentNullException">If <c>buffer</c> is null</exception> - /// <exception cref="ArgumentOutOfRangeException">If <c>count</c> or <c>offset</c> are negative</exception> - /// <exception cref="ArgumentException">If <c>offset</c> + <c>count</c> is > buffer.Length</exception> - /// <exception cref="NotSupportedException">If this stream is not readable.</exception> - /// <exception cref="ObjectDisposedException">If this stream has been disposed.</exception> - public override int Read(byte[] buffer, int offset, int count) - { - if (!CanRead) throw new NotSupportedException(); - if (buffer == null) throw new ArgumentNullException(); - if (offset < 0 || count < 0) throw new ArgumentOutOfRangeException(); - if ((offset+count) > buffer.Length) throw new ArgumentException(); - if (_isDisposed) throw new ObjectDisposedException("GZipStream"); - - GCHandle h = GCHandle.Alloc(buffer, GCHandleType.Pinned); - int result; - try - { - result = gzread(_gzFile, h.AddrOfPinnedObject().ToInt32() + offset, count); - if (result < 0) - throw new IOException(); - } - finally - { - h.Free(); - } - return result; - } - - /// <summary> - /// Attempts to read a single byte from the stream. - /// </summary> - /// <returns>The byte that was read, or -1 in case of error or End-Of-File</returns> - public override int ReadByte() - { - if (!CanRead) throw new NotSupportedException(); - if (_isDisposed) throw new ObjectDisposedException("GZipStream"); - return gzgetc(_gzFile); - } - - /// <summary> - /// Writes a number of bytes to the stream - /// </summary> - /// <param name="buffer"></param> - /// <param name="offset"></param> - /// <param name="count"></param> - /// <exception cref="ArgumentNullException">If <c>buffer</c> is null</exception> - /// <exception cref="ArgumentOutOfRangeException">If <c>count</c> or <c>offset</c> are negative</exception> - /// <exception cref="ArgumentException">If <c>offset</c> + <c>count</c> is > buffer.Length</exception> - /// <exception cref="NotSupportedException">If this stream is not writeable.</exception> - /// <exception cref="ObjectDisposedException">If this stream has been disposed.</exception> - public override void Write(byte[] buffer, int offset, int count) - { - if (!CanWrite) throw new NotSupportedException(); - if (buffer == null) throw new ArgumentNullException(); - if (offset < 0 || count < 0) throw new ArgumentOutOfRangeException(); - if ((offset+count) > buffer.Length) throw new ArgumentException(); - if (_isDisposed) throw new ObjectDisposedException("GZipStream"); - - GCHandle h = GCHandle.Alloc(buffer, GCHandleType.Pinned); - try - { - int result = gzwrite(_gzFile, h.AddrOfPinnedObject().ToInt32() + offset, count); - if (result < 0) - throw new IOException(); - } - finally - { - h.Free(); - } - } - - /// <summary> - /// Writes a single byte to the stream - /// </summary> - /// <param name="value">The byte to add to the stream.</param> - /// <exception cref="NotSupportedException">If this stream is not writeable.</exception> - /// <exception cref="ObjectDisposedException">If this stream has been disposed.</exception> - public override void WriteByte(byte value) - { - if (!CanWrite) throw new NotSupportedException(); - if (_isDisposed) throw new ObjectDisposedException("GZipStream"); - - int result = gzputc(_gzFile, (int)value); - if (result < 0) - throw new IOException(); - } - #endregion - - #region Position & length stuff - /// <summary> - /// Not supported. - /// </summary> - /// <param name="value"></param> - /// <exception cref="NotSupportedException">Always thrown</exception> - public override void SetLength(long value) - { - throw new NotSupportedException(); - } - - /// <summary> - /// Not suppported. - /// </summary> - /// <param name="offset"></param> - /// <param name="origin"></param> - /// <returns></returns> - /// <exception cref="NotSupportedException">Always thrown</exception> - public override long Seek(long offset, SeekOrigin origin) - { - throw new NotSupportedException(); - } - - /// <summary> - /// Flushes the <c>GZipStream</c>. - /// </summary> - /// <remarks>In this implementation, this method does nothing. This is because excessive - /// flushing may degrade the achievable compression rates.</remarks> - public override void Flush() - { - // left empty on purpose - } - - /// <summary> - /// Gets/sets the current position in the <c>GZipStream</c>. Not suppported. - /// </summary> - /// <remarks>In this implementation this property is not supported</remarks> - /// <exception cref="NotSupportedException">Always thrown</exception> - public override long Position - { - get - { - throw new NotSupportedException(); - } - set - { - throw new NotSupportedException(); - } - } - - /// <summary> - /// Gets the size of the stream. Not suppported. - /// </summary> - /// <remarks>In this implementation this property is not supported</remarks> - /// <exception cref="NotSupportedException">Always thrown</exception> - public override long Length - { - get - { - throw new NotSupportedException(); - } - } - #endregion - } -} diff --git a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/Inflater.cs b/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/Inflater.cs deleted file mode 100644 index 8ed5451d664..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/Inflater.cs +++ /dev/null @@ -1,105 +0,0 @@ -// -// © Copyright Henrik Ravn 2004 -// -// Use, modification and distribution are subject to the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -using System; -using System.Diagnostics; -using System.Runtime.InteropServices; - -namespace DotZLib -{ - - /// <summary> - /// Implements a data decompressor, using the inflate algorithm in the ZLib dll - /// </summary> - public class Inflater : CodecBase - { - #region Dll imports - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl, CharSet=CharSet.Ansi)] - private static extern int inflateInit_(ref ZStream sz, string vs, int size); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern int inflate(ref ZStream sz, int flush); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern int inflateReset(ref ZStream sz); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern int inflateEnd(ref ZStream sz); - #endregion - - /// <summary> - /// Constructs an new instance of the <c>Inflater</c> - /// </summary> - public Inflater() : base() - { - int retval = inflateInit_(ref _ztream, Info.Version, Marshal.SizeOf(_ztream)); - if (retval != 0) - throw new ZLibException(retval, "Could not initialize inflater"); - - resetOutput(); - } - - - /// <summary> - /// Adds more data to the codec to be processed. - /// </summary> - /// <param name="data">Byte array containing the data to be added to the codec</param> - /// <param name="offset">The index of the first byte to add from <c>data</c></param> - /// <param name="count">The number of bytes to add</param> - /// <remarks>Adding data may, or may not, raise the <c>DataAvailable</c> event</remarks> - public override void Add(byte[] data, int offset, int count) - { - if (data == null) throw new ArgumentNullException(); - if (offset < 0 || count < 0) throw new ArgumentOutOfRangeException(); - if ((offset+count) > data.Length) throw new ArgumentException(); - - int total = count; - int inputIndex = offset; - int err = 0; - - while (err >= 0 && inputIndex < total) - { - copyInput(data, inputIndex, Math.Min(total - inputIndex, kBufferSize)); - err = inflate(ref _ztream, (int)FlushTypes.None); - if (err == 0) - while (_ztream.avail_out == 0) - { - OnDataAvailable(); - err = inflate(ref _ztream, (int)FlushTypes.None); - } - - inputIndex += (int)_ztream.total_in; - } - setChecksum( _ztream.adler ); - } - - - /// <summary> - /// Finishes up any pending data that needs to be processed and handled. - /// </summary> - public override void Finish() - { - int err; - do - { - err = inflate(ref _ztream, (int)FlushTypes.Finish); - OnDataAvailable(); - } - while (err == 0); - setChecksum( _ztream.adler ); - inflateReset(ref _ztream); - resetOutput(); - } - - /// <summary> - /// Closes the internal zlib inflate stream - /// </summary> - protected override void CleanUp() { inflateEnd(ref _ztream); } - - - } -} diff --git a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/UnitTests.cs b/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/UnitTests.cs deleted file mode 100644 index b273d54b348..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/dotzlib/DotZLib/UnitTests.cs +++ /dev/null @@ -1,274 +0,0 @@ -// -// © Copyright Henrik Ravn 2004 -// -// Use, modification and distribution are subject to the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -using System; -using System.Collections; -using System.IO; - -// uncomment the define below to include unit tests -//#define nunit -#if nunit -using NUnit.Framework; - -// Unit tests for the DotZLib class library -// ---------------------------------------- -// -// Use this with NUnit 2 from http://www.nunit.org -// - -namespace DotZLibTests -{ - using DotZLib; - - // helper methods - internal class Utils - { - public static bool byteArrEqual( byte[] lhs, byte[] rhs ) - { - if (lhs.Length != rhs.Length) - return false; - for (int i = lhs.Length-1; i >= 0; --i) - if (lhs[i] != rhs[i]) - return false; - return true; - } - - } - - - [TestFixture] - public class CircBufferTests - { - #region Circular buffer tests - [Test] - public void SinglePutGet() - { - CircularBuffer buf = new CircularBuffer(10); - Assert.AreEqual( 0, buf.Size ); - Assert.AreEqual( -1, buf.Get() ); - - Assert.IsTrue(buf.Put( 1 )); - Assert.AreEqual( 1, buf.Size ); - Assert.AreEqual( 1, buf.Get() ); - Assert.AreEqual( 0, buf.Size ); - Assert.AreEqual( -1, buf.Get() ); - } - - [Test] - public void BlockPutGet() - { - CircularBuffer buf = new CircularBuffer(10); - byte[] arr = {1,2,3,4,5,6,7,8,9,10}; - Assert.AreEqual( 10, buf.Put(arr,0,10) ); - Assert.AreEqual( 10, buf.Size ); - Assert.IsFalse( buf.Put(11) ); - Assert.AreEqual( 1, buf.Get() ); - Assert.IsTrue( buf.Put(11) ); - - byte[] arr2 = (byte[])arr.Clone(); - Assert.AreEqual( 9, buf.Get(arr2,1,9) ); - Assert.IsTrue( Utils.byteArrEqual(arr,arr2) ); - } - - #endregion - } - - [TestFixture] - public class ChecksumTests - { - #region CRC32 Tests - [Test] - public void CRC32_Null() - { - CRC32Checksum crc32 = new CRC32Checksum(); - Assert.AreEqual( 0, crc32.Value ); - - crc32 = new CRC32Checksum(1); - Assert.AreEqual( 1, crc32.Value ); - - crc32 = new CRC32Checksum(556); - Assert.AreEqual( 556, crc32.Value ); - } - - [Test] - public void CRC32_Data() - { - CRC32Checksum crc32 = new CRC32Checksum(); - byte[] data = { 1,2,3,4,5,6,7 }; - crc32.Update(data); - Assert.AreEqual( 0x70e46888, crc32.Value ); - - crc32 = new CRC32Checksum(); - crc32.Update("penguin"); - Assert.AreEqual( 0x0e5c1a120, crc32.Value ); - - crc32 = new CRC32Checksum(1); - crc32.Update("penguin"); - Assert.AreEqual(0x43b6aa94, crc32.Value); - - } - #endregion - - #region Adler tests - - [Test] - public void Adler_Null() - { - AdlerChecksum adler = new AdlerChecksum(); - Assert.AreEqual(0, adler.Value); - - adler = new AdlerChecksum(1); - Assert.AreEqual( 1, adler.Value ); - - adler = new AdlerChecksum(556); - Assert.AreEqual( 556, adler.Value ); - } - - [Test] - public void Adler_Data() - { - AdlerChecksum adler = new AdlerChecksum(1); - byte[] data = { 1,2,3,4,5,6,7 }; - adler.Update(data); - Assert.AreEqual( 0x5b001d, adler.Value ); - - adler = new AdlerChecksum(); - adler.Update("penguin"); - Assert.AreEqual(0x0bcf02f6, adler.Value ); - - adler = new AdlerChecksum(1); - adler.Update("penguin"); - Assert.AreEqual(0x0bd602f7, adler.Value); - - } - #endregion - } - - [TestFixture] - public class InfoTests - { - #region Info tests - [Test] - public void Info_Version() - { - Info info = new Info(); - Assert.AreEqual("1.2.8", Info.Version); - Assert.AreEqual(32, info.SizeOfUInt); - Assert.AreEqual(32, info.SizeOfULong); - Assert.AreEqual(32, info.SizeOfPointer); - Assert.AreEqual(32, info.SizeOfOffset); - } - #endregion - } - - [TestFixture] - public class DeflateInflateTests - { - #region Deflate tests - [Test] - public void Deflate_Init() - { - using (Deflater def = new Deflater(CompressLevel.Default)) - { - } - } - - private ArrayList compressedData = new ArrayList(); - private uint adler1; - - private ArrayList uncompressedData = new ArrayList(); - private uint adler2; - - public void CDataAvail(byte[] data, int startIndex, int count) - { - for (int i = 0; i < count; ++i) - compressedData.Add(data[i+startIndex]); - } - - [Test] - public void Deflate_Compress() - { - compressedData.Clear(); - - byte[] testData = new byte[35000]; - for (int i = 0; i < testData.Length; ++i) - testData[i] = 5; - - using (Deflater def = new Deflater((CompressLevel)5)) - { - def.DataAvailable += new DataAvailableHandler(CDataAvail); - def.Add(testData); - def.Finish(); - adler1 = def.Checksum; - } - } - #endregion - - #region Inflate tests - [Test] - public void Inflate_Init() - { - using (Inflater inf = new Inflater()) - { - } - } - - private void DDataAvail(byte[] data, int startIndex, int count) - { - for (int i = 0; i < count; ++i) - uncompressedData.Add(data[i+startIndex]); - } - - [Test] - public void Inflate_Expand() - { - uncompressedData.Clear(); - - using (Inflater inf = new Inflater()) - { - inf.DataAvailable += new DataAvailableHandler(DDataAvail); - inf.Add((byte[])compressedData.ToArray(typeof(byte))); - inf.Finish(); - adler2 = inf.Checksum; - } - Assert.AreEqual( adler1, adler2 ); - } - #endregion - } - - [TestFixture] - public class GZipStreamTests - { - #region GZipStream test - [Test] - public void GZipStream_WriteRead() - { - using (GZipStream gzOut = new GZipStream("gzstream.gz", CompressLevel.Best)) - { - BinaryWriter writer = new BinaryWriter(gzOut); - writer.Write("hi there"); - writer.Write(Math.PI); - writer.Write(42); - } - - using (GZipStream gzIn = new GZipStream("gzstream.gz")) - { - BinaryReader reader = new BinaryReader(gzIn); - string s = reader.ReadString(); - Assert.AreEqual("hi there",s); - double d = reader.ReadDouble(); - Assert.AreEqual(Math.PI, d); - int i = reader.ReadInt32(); - Assert.AreEqual(42,i); - } - - } - #endregion - } -} - -#endif diff --git a/platform/win32/msvc/external/zlib/contrib/dotzlib/LICENSE_1_0.txt b/platform/win32/msvc/external/zlib/contrib/dotzlib/LICENSE_1_0.txt deleted file mode 100644 index 30aac2cf479..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/dotzlib/LICENSE_1_0.txt +++ /dev/null @@ -1,23 +0,0 @@ -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/platform/win32/msvc/external/zlib/contrib/dotzlib/readme.txt b/platform/win32/msvc/external/zlib/contrib/dotzlib/readme.txt deleted file mode 100644 index b2395720d4c..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/dotzlib/readme.txt +++ /dev/null @@ -1,58 +0,0 @@ -This directory contains a .Net wrapper class library for the ZLib1.dll - -The wrapper includes support for inflating/deflating memory buffers, -.Net streaming wrappers for the gz streams part of zlib, and wrappers -for the checksum parts of zlib. See DotZLib/UnitTests.cs for examples. - -Directory structure: --------------------- - -LICENSE_1_0.txt - License file. -readme.txt - This file. -DotZLib.chm - Class library documentation -DotZLib.build - NAnt build file -DotZLib.sln - Microsoft Visual Studio 2003 solution file - -DotZLib\*.cs - Source files for the class library - -Unit tests: ------------ -The file DotZLib/UnitTests.cs contains unit tests for use with NUnit 2.1 or higher. -To include unit tests in the build, define nunit before building. - - -Build instructions: -------------------- - -1. Using Visual Studio.Net 2003: - Open DotZLib.sln in VS.Net and build from there. Output file (DotZLib.dll) - will be found ./DotZLib/bin/release or ./DotZLib/bin/debug, depending on - you are building the release or debug version of the library. Check - DotZLib/UnitTests.cs for instructions on how to include unit tests in the - build. - -2. Using NAnt: - Open a command prompt with access to the build environment and run nant - in the same directory as the DotZLib.build file. - You can define 2 properties on the nant command-line to control the build: - debug={true|false} to toggle between release/debug builds (default=true). - nunit={true|false} to include or esclude unit tests (default=true). - Also the target clean will remove binaries. - Output file (DotZLib.dll) will be found in either ./DotZLib/bin/release - or ./DotZLib/bin/debug, depending on whether you are building the release - or debug version of the library. - - Examples: - nant -D:debug=false -D:nunit=false - will build a release mode version of the library without unit tests. - nant - will build a debug version of the library with unit tests - nant clean - will remove all previously built files. - - ---------------------------------- -Copyright (c) Henrik Ravn 2004 - -Use, modification and distribution are subject to the Boost Software License, Version 1.0. -(See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/platform/win32/msvc/external/zlib/contrib/gcc_gvmat64/gvmat64.S b/platform/win32/msvc/external/zlib/contrib/gcc_gvmat64/gvmat64.S deleted file mode 100644 index dd858ddbd16..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/gcc_gvmat64/gvmat64.S +++ /dev/null @@ -1,574 +0,0 @@ -/* -;uInt longest_match_x64( -; deflate_state *s, -; IPos cur_match); // current match - -; gvmat64.S -- Asm portion of the optimized longest_match for 32 bits x86_64 -; (AMD64 on Athlon 64, Opteron, Phenom -; and Intel EM64T on Pentium 4 with EM64T, Pentium D, Core 2 Duo, Core I5/I7) -; this file is translation from gvmat64.asm to GCC 4.x (for Linux, Mac XCode) -; Copyright (C) 1995-2010 Jean-loup Gailly, Brian Raiter and Gilles Vollant. -; -; File written by Gilles Vollant, by converting to assembly the longest_match -; from Jean-loup Gailly in deflate.c of zLib and infoZip zip. -; and by taking inspiration on asm686 with masm, optimised assembly code -; from Brian Raiter, written 1998 -; -; This software is provided 'as-is', without any express or implied -; warranty. In no event will the authors be held liable for any damages -; arising from the use of this software. -; -; Permission is granted to anyone to use this software for any purpose, -; including commercial applications, and to alter it and redistribute it -; freely, subject to the following restrictions: -; -; 1. The origin of this software must not be misrepresented; you must not -; claim that you wrote the original software. If you use this software -; in a product, an acknowledgment in the product documentation would be -; appreciated but is not required. -; 2. Altered source versions must be plainly marked as such, and must not be -; misrepresented as being the original software -; 3. This notice may not be removed or altered from any source distribution. -; -; http://www.zlib.net -; http://www.winimage.com/zLibDll -; http://www.muppetlabs.com/~breadbox/software/assembly.html -; -; to compile this file for zLib, I use option: -; gcc -c -arch x86_64 gvmat64.S - - -;uInt longest_match(s, cur_match) -; deflate_state *s; -; IPos cur_match; // current match / -; -; with XCode for Mac, I had strange error with some jump on intel syntax -; this is why BEFORE_JMP and AFTER_JMP are used - */ - - -#define BEFORE_JMP .att_syntax -#define AFTER_JMP .intel_syntax noprefix - -#ifndef NO_UNDERLINE -# define match_init _match_init -# define longest_match _longest_match -#endif - -.intel_syntax noprefix - -.globl match_init, longest_match -.text -longest_match: - - - -#define LocalVarsSize 96 -/* -; register used : rax,rbx,rcx,rdx,rsi,rdi,r8,r9,r10,r11,r12 -; free register : r14,r15 -; register can be saved : rsp -*/ - -#define chainlenwmask (rsp + 8 - LocalVarsSize) -#define nicematch (rsp + 16 - LocalVarsSize) - -#define save_rdi (rsp + 24 - LocalVarsSize) -#define save_rsi (rsp + 32 - LocalVarsSize) -#define save_rbx (rsp + 40 - LocalVarsSize) -#define save_rbp (rsp + 48 - LocalVarsSize) -#define save_r12 (rsp + 56 - LocalVarsSize) -#define save_r13 (rsp + 64 - LocalVarsSize) -#define save_r14 (rsp + 72 - LocalVarsSize) -#define save_r15 (rsp + 80 - LocalVarsSize) - - -/* -; all the +4 offsets are due to the addition of pending_buf_size (in zlib -; in the deflate_state structure since the asm code was first written -; (if you compile with zlib 1.0.4 or older, remove the +4). -; Note : these value are good with a 8 bytes boundary pack structure -*/ - -#define MAX_MATCH 258 -#define MIN_MATCH 3 -#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1) - -/* -;;; Offsets for fields in the deflate_state structure. These numbers -;;; are calculated from the definition of deflate_state, with the -;;; assumption that the compiler will dword-align the fields. (Thus, -;;; changing the definition of deflate_state could easily cause this -;;; program to crash horribly, without so much as a warning at -;;; compile time. Sigh.) - -; all the +zlib1222add offsets are due to the addition of fields -; in zlib in the deflate_state structure since the asm code was first written -; (if you compile with zlib 1.0.4 or older, use "zlib1222add equ (-4)"). -; (if you compile with zlib between 1.0.5 and 1.2.2.1, use "zlib1222add equ 0"). -; if you compile with zlib 1.2.2.2 or later , use "zlib1222add equ 8"). -*/ - - - -/* you can check the structure offset by running - -#include <stdlib.h> -#include <stdio.h> -#include "deflate.h" - -void print_depl() -{ -deflate_state ds; -deflate_state *s=&ds; -printf("size pointer=%u\n",(int)sizeof(void*)); - -printf("#define dsWSize %u\n",(int)(((char*)&(s->w_size))-((char*)s))); -printf("#define dsWMask %u\n",(int)(((char*)&(s->w_mask))-((char*)s))); -printf("#define dsWindow %u\n",(int)(((char*)&(s->window))-((char*)s))); -printf("#define dsPrev %u\n",(int)(((char*)&(s->prev))-((char*)s))); -printf("#define dsMatchLen %u\n",(int)(((char*)&(s->match_length))-((char*)s))); -printf("#define dsPrevMatch %u\n",(int)(((char*)&(s->prev_match))-((char*)s))); -printf("#define dsStrStart %u\n",(int)(((char*)&(s->strstart))-((char*)s))); -printf("#define dsMatchStart %u\n",(int)(((char*)&(s->match_start))-((char*)s))); -printf("#define dsLookahead %u\n",(int)(((char*)&(s->lookahead))-((char*)s))); -printf("#define dsPrevLen %u\n",(int)(((char*)&(s->prev_length))-((char*)s))); -printf("#define dsMaxChainLen %u\n",(int)(((char*)&(s->max_chain_length))-((char*)s))); -printf("#define dsGoodMatch %u\n",(int)(((char*)&(s->good_match))-((char*)s))); -printf("#define dsNiceMatch %u\n",(int)(((char*)&(s->nice_match))-((char*)s))); -} -*/ - -#define dsWSize 68 -#define dsWMask 76 -#define dsWindow 80 -#define dsPrev 96 -#define dsMatchLen 144 -#define dsPrevMatch 148 -#define dsStrStart 156 -#define dsMatchStart 160 -#define dsLookahead 164 -#define dsPrevLen 168 -#define dsMaxChainLen 172 -#define dsGoodMatch 188 -#define dsNiceMatch 192 - -#define window_size [ rcx + dsWSize] -#define WMask [ rcx + dsWMask] -#define window_ad [ rcx + dsWindow] -#define prev_ad [ rcx + dsPrev] -#define strstart [ rcx + dsStrStart] -#define match_start [ rcx + dsMatchStart] -#define Lookahead [ rcx + dsLookahead] //; 0ffffffffh on infozip -#define prev_length [ rcx + dsPrevLen] -#define max_chain_length [ rcx + dsMaxChainLen] -#define good_match [ rcx + dsGoodMatch] -#define nice_match [ rcx + dsNiceMatch] - -/* -; windows: -; parameter 1 in rcx(deflate state s), param 2 in rdx (cur match) - -; see http://weblogs.asp.net/oldnewthing/archive/2004/01/14/58579.aspx and -; http://msdn.microsoft.com/library/en-us/kmarch/hh/kmarch/64bitAMD_8e951dd2-ee77-4728-8702-55ce4b5dd24a.xml.asp -; -; All registers must be preserved across the call, except for -; rax, rcx, rdx, r8, r9, r10, and r11, which are scratch. - -; -; gcc on macosx-linux: -; see http://www.x86-64.org/documentation/abi-0.99.pdf -; param 1 in rdi, param 2 in rsi -; rbx, rsp, rbp, r12 to r15 must be preserved - -;;; Save registers that the compiler may be using, and adjust esp to -;;; make room for our stack frame. - - -;;; Retrieve the function arguments. r8d will hold cur_match -;;; throughout the entire function. edx will hold the pointer to the -;;; deflate_state structure during the function's setup (before -;;; entering the main loop. - -; ms: parameter 1 in rcx (deflate_state* s), param 2 in edx -> r8 (cur match) -; mac: param 1 in rdi, param 2 rsi -; this clear high 32 bits of r8, which can be garbage in both r8 and rdx -*/ - mov [save_rbx],rbx - mov [save_rbp],rbp - - - mov rcx,rdi - - mov r8d,esi - - - mov [save_r12],r12 - mov [save_r13],r13 - mov [save_r14],r14 - mov [save_r15],r15 - - -//;;; uInt wmask = s->w_mask; -//;;; unsigned chain_length = s->max_chain_length; -//;;; if (s->prev_length >= s->good_match) { -//;;; chain_length >>= 2; -//;;; } - - - mov edi, prev_length - mov esi, good_match - mov eax, WMask - mov ebx, max_chain_length - cmp edi, esi - jl LastMatchGood - shr ebx, 2 -LastMatchGood: - -//;;; chainlen is decremented once beforehand so that the function can -//;;; use the sign flag instead of the zero flag for the exit test. -//;;; It is then shifted into the high word, to make room for the wmask -//;;; value, which it will always accompany. - - dec ebx - shl ebx, 16 - or ebx, eax - -//;;; on zlib only -//;;; if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead; - - - - mov eax, nice_match - mov [chainlenwmask], ebx - mov r10d, Lookahead - cmp r10d, eax - cmovnl r10d, eax - mov [nicematch],r10d - - - -//;;; register Bytef *scan = s->window + s->strstart; - mov r10, window_ad - mov ebp, strstart - lea r13, [r10 + rbp] - -//;;; Determine how many bytes the scan ptr is off from being -//;;; dword-aligned. - - mov r9,r13 - neg r13 - and r13,3 - -//;;; IPos limit = s->strstart > (IPos)MAX_DIST(s) ? -//;;; s->strstart - (IPos)MAX_DIST(s) : NIL; - - - mov eax, window_size - sub eax, MIN_LOOKAHEAD - - - xor edi,edi - sub ebp, eax - - mov r11d, prev_length - - cmovng ebp,edi - -//;;; int best_len = s->prev_length; - - -//;;; Store the sum of s->window + best_len in esi locally, and in esi. - - lea rsi,[r10+r11] - -//;;; register ush scan_start = *(ushf*)scan; -//;;; register ush scan_end = *(ushf*)(scan+best_len-1); -//;;; Posf *prev = s->prev; - - movzx r12d,word ptr [r9] - movzx ebx, word ptr [r9 + r11 - 1] - - mov rdi, prev_ad - -//;;; Jump into the main loop. - - mov edx, [chainlenwmask] - - cmp bx,word ptr [rsi + r8 - 1] - jz LookupLoopIsZero - - - -LookupLoop1: - and r8d, edx - - movzx r8d, word ptr [rdi + r8*2] - cmp r8d, ebp - jbe LeaveNow - - - - sub edx, 0x00010000 - BEFORE_JMP - js LeaveNow - AFTER_JMP - -LoopEntry1: - cmp bx,word ptr [rsi + r8 - 1] - BEFORE_JMP - jz LookupLoopIsZero - AFTER_JMP - -LookupLoop2: - and r8d, edx - - movzx r8d, word ptr [rdi + r8*2] - cmp r8d, ebp - BEFORE_JMP - jbe LeaveNow - AFTER_JMP - sub edx, 0x00010000 - BEFORE_JMP - js LeaveNow - AFTER_JMP - -LoopEntry2: - cmp bx,word ptr [rsi + r8 - 1] - BEFORE_JMP - jz LookupLoopIsZero - AFTER_JMP - -LookupLoop4: - and r8d, edx - - movzx r8d, word ptr [rdi + r8*2] - cmp r8d, ebp - BEFORE_JMP - jbe LeaveNow - AFTER_JMP - sub edx, 0x00010000 - BEFORE_JMP - js LeaveNow - AFTER_JMP - -LoopEntry4: - - cmp bx,word ptr [rsi + r8 - 1] - BEFORE_JMP - jnz LookupLoop1 - jmp LookupLoopIsZero - AFTER_JMP -/* -;;; do { -;;; match = s->window + cur_match; -;;; if (*(ushf*)(match+best_len-1) != scan_end || -;;; *(ushf*)match != scan_start) continue; -;;; [...] -;;; } while ((cur_match = prev[cur_match & wmask]) > limit -;;; && --chain_length != 0); -;;; -;;; Here is the inner loop of the function. The function will spend the -;;; majority of its time in this loop, and majority of that time will -;;; be spent in the first ten instructions. -;;; -;;; Within this loop: -;;; ebx = scanend -;;; r8d = curmatch -;;; edx = chainlenwmask - i.e., ((chainlen << 16) | wmask) -;;; esi = windowbestlen - i.e., (window + bestlen) -;;; edi = prev -;;; ebp = limit -*/ -.balign 16 -LookupLoop: - and r8d, edx - - movzx r8d, word ptr [rdi + r8*2] - cmp r8d, ebp - BEFORE_JMP - jbe LeaveNow - AFTER_JMP - sub edx, 0x00010000 - BEFORE_JMP - js LeaveNow - AFTER_JMP - -LoopEntry: - - cmp bx,word ptr [rsi + r8 - 1] - BEFORE_JMP - jnz LookupLoop1 - AFTER_JMP -LookupLoopIsZero: - cmp r12w, word ptr [r10 + r8] - BEFORE_JMP - jnz LookupLoop1 - AFTER_JMP - - -//;;; Store the current value of chainlen. - mov [chainlenwmask], edx -/* -;;; Point edi to the string under scrutiny, and esi to the string we -;;; are hoping to match it up with. In actuality, esi and edi are -;;; both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and edx is -;;; initialized to -(MAX_MATCH_8 - scanalign). -*/ - lea rsi,[r8+r10] - mov rdx, 0xfffffffffffffef8 //; -(MAX_MATCH_8) - lea rsi, [rsi + r13 + 0x0108] //;MAX_MATCH_8] - lea rdi, [r9 + r13 + 0x0108] //;MAX_MATCH_8] - - prefetcht1 [rsi+rdx] - prefetcht1 [rdi+rdx] - -/* -;;; Test the strings for equality, 8 bytes at a time. At the end, -;;; adjust rdx so that it is offset to the exact byte that mismatched. -;;; -;;; We already know at this point that the first three bytes of the -;;; strings match each other, and they can be safely passed over before -;;; starting the compare loop. So what this code does is skip over 0-3 -;;; bytes, as much as necessary in order to dword-align the edi -;;; pointer. (rsi will still be misaligned three times out of four.) -;;; -;;; It should be confessed that this loop usually does not represent -;;; much of the total running time. Replacing it with a more -;;; straightforward "rep cmpsb" would not drastically degrade -;;; performance. -*/ - -LoopCmps: - mov rax, [rsi + rdx] - xor rax, [rdi + rdx] - jnz LeaveLoopCmps - - mov rax, [rsi + rdx + 8] - xor rax, [rdi + rdx + 8] - jnz LeaveLoopCmps8 - - - mov rax, [rsi + rdx + 8+8] - xor rax, [rdi + rdx + 8+8] - jnz LeaveLoopCmps16 - - add rdx,8+8+8 - - BEFORE_JMP - jnz LoopCmps - jmp LenMaximum - AFTER_JMP - -LeaveLoopCmps16: add rdx,8 -LeaveLoopCmps8: add rdx,8 -LeaveLoopCmps: - - test eax, 0x0000FFFF - jnz LenLower - - test eax,0xffffffff - - jnz LenLower32 - - add rdx,4 - shr rax,32 - or ax,ax - BEFORE_JMP - jnz LenLower - AFTER_JMP - -LenLower32: - shr eax,16 - add rdx,2 - -LenLower: - sub al, 1 - adc rdx, 0 -//;;; Calculate the length of the match. If it is longer than MAX_MATCH, -//;;; then automatically accept it as the best possible match and leave. - - lea rax, [rdi + rdx] - sub rax, r9 - cmp eax, MAX_MATCH - BEFORE_JMP - jge LenMaximum - AFTER_JMP -/* -;;; If the length of the match is not longer than the best match we -;;; have so far, then forget it and return to the lookup loop. -;/////////////////////////////////// -*/ - cmp eax, r11d - jg LongerMatch - - lea rsi,[r10+r11] - - mov rdi, prev_ad - mov edx, [chainlenwmask] - BEFORE_JMP - jmp LookupLoop - AFTER_JMP -/* -;;; s->match_start = cur_match; -;;; best_len = len; -;;; if (len >= nice_match) break; -;;; scan_end = *(ushf*)(scan+best_len-1); -*/ -LongerMatch: - mov r11d, eax - mov match_start, r8d - cmp eax, [nicematch] - BEFORE_JMP - jge LeaveNow - AFTER_JMP - - lea rsi,[r10+rax] - - movzx ebx, word ptr [r9 + rax - 1] - mov rdi, prev_ad - mov edx, [chainlenwmask] - BEFORE_JMP - jmp LookupLoop - AFTER_JMP - -//;;; Accept the current string, with the maximum possible length. - -LenMaximum: - mov r11d,MAX_MATCH - mov match_start, r8d - -//;;; if ((uInt)best_len <= s->lookahead) return (uInt)best_len; -//;;; return s->lookahead; - -LeaveNow: - mov eax, Lookahead - cmp r11d, eax - cmovng eax, r11d - - - -//;;; Restore the stack and return from whence we came. - - -// mov rsi,[save_rsi] -// mov rdi,[save_rdi] - mov rbx,[save_rbx] - mov rbp,[save_rbp] - mov r12,[save_r12] - mov r13,[save_r13] - mov r14,[save_r14] - mov r15,[save_r15] - - - ret 0 -//; please don't remove this string ! -//; Your can freely use gvmat64 in any free or commercial app -//; but it is far better don't remove the string in the binary! - // db 0dh,0ah,"asm686 with masm, optimised assembly code from Brian Raiter, written 1998, converted to amd 64 by Gilles Vollant 2005",0dh,0ah,0 - - -match_init: - ret 0 - - diff --git a/platform/win32/msvc/external/zlib/contrib/infback9/README b/platform/win32/msvc/external/zlib/contrib/infback9/README deleted file mode 100644 index e75ed132948..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/infback9/README +++ /dev/null @@ -1 +0,0 @@ -See infback9.h for what this is and how to use it. diff --git a/platform/win32/msvc/external/zlib/contrib/infback9/infback9.c b/platform/win32/msvc/external/zlib/contrib/infback9/infback9.c deleted file mode 100644 index 05fb3e33807..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/infback9/infback9.c +++ /dev/null @@ -1,615 +0,0 @@ -/* infback9.c -- inflate deflate64 data using a call-back interface - * Copyright (C) 1995-2008 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "zutil.h" -#include "infback9.h" -#include "inftree9.h" -#include "inflate9.h" - -#define WSIZE 65536UL - -/* - strm provides memory allocation functions in zalloc and zfree, or - Z_NULL to use the library memory allocation functions. - - window is a user-supplied window and output buffer that is 64K bytes. - */ -int ZEXPORT inflateBack9Init_(strm, window, version, stream_size) -z_stream FAR *strm; -unsigned char FAR *window; -const char *version; -int stream_size; -{ - struct inflate_state FAR *state; - - if (version == Z_NULL || version[0] != ZLIB_VERSION[0] || - stream_size != (int)(sizeof(z_stream))) - return Z_VERSION_ERROR; - if (strm == Z_NULL || window == Z_NULL) - return Z_STREAM_ERROR; - strm->msg = Z_NULL; /* in case we return an error */ - if (strm->zalloc == (alloc_func)0) { - strm->zalloc = zcalloc; - strm->opaque = (voidpf)0; - } - if (strm->zfree == (free_func)0) strm->zfree = zcfree; - state = (struct inflate_state FAR *)ZALLOC(strm, 1, - sizeof(struct inflate_state)); - if (state == Z_NULL) return Z_MEM_ERROR; - Tracev((stderr, "inflate: allocated\n")); - strm->state = (voidpf)state; - state->window = window; - return Z_OK; -} - -/* - Build and output length and distance decoding tables for fixed code - decoding. - */ -#ifdef MAKEFIXED -#include <stdio.h> - -void makefixed9(void) -{ - unsigned sym, bits, low, size; - code *next, *lenfix, *distfix; - struct inflate_state state; - code fixed[544]; - - /* literal/length table */ - sym = 0; - while (sym < 144) state.lens[sym++] = 8; - while (sym < 256) state.lens[sym++] = 9; - while (sym < 280) state.lens[sym++] = 7; - while (sym < 288) state.lens[sym++] = 8; - next = fixed; - lenfix = next; - bits = 9; - inflate_table9(LENS, state.lens, 288, &(next), &(bits), state.work); - - /* distance table */ - sym = 0; - while (sym < 32) state.lens[sym++] = 5; - distfix = next; - bits = 5; - inflate_table9(DISTS, state.lens, 32, &(next), &(bits), state.work); - - /* write tables */ - puts(" /* inffix9.h -- table for decoding deflate64 fixed codes"); - puts(" * Generated automatically by makefixed9()."); - puts(" */"); - puts(""); - puts(" /* WARNING: this file should *not* be used by applications."); - puts(" It is part of the implementation of this library and is"); - puts(" subject to change. Applications should only use zlib.h."); - puts(" */"); - puts(""); - size = 1U << 9; - printf(" static const code lenfix[%u] = {", size); - low = 0; - for (;;) { - if ((low % 6) == 0) printf("\n "); - printf("{%u,%u,%d}", lenfix[low].op, lenfix[low].bits, - lenfix[low].val); - if (++low == size) break; - putchar(','); - } - puts("\n };"); - size = 1U << 5; - printf("\n static const code distfix[%u] = {", size); - low = 0; - for (;;) { - if ((low % 5) == 0) printf("\n "); - printf("{%u,%u,%d}", distfix[low].op, distfix[low].bits, - distfix[low].val); - if (++low == size) break; - putchar(','); - } - puts("\n };"); -} -#endif /* MAKEFIXED */ - -/* Macros for inflateBack(): */ - -/* Clear the input bit accumulator */ -#define INITBITS() \ - do { \ - hold = 0; \ - bits = 0; \ - } while (0) - -/* Assure that some input is available. If input is requested, but denied, - then return a Z_BUF_ERROR from inflateBack(). */ -#define PULL() \ - do { \ - if (have == 0) { \ - have = in(in_desc, &next); \ - if (have == 0) { \ - next = Z_NULL; \ - ret = Z_BUF_ERROR; \ - goto inf_leave; \ - } \ - } \ - } while (0) - -/* Get a byte of input into the bit accumulator, or return from inflateBack() - with an error if there is no input available. */ -#define PULLBYTE() \ - do { \ - PULL(); \ - have--; \ - hold += (unsigned long)(*next++) << bits; \ - bits += 8; \ - } while (0) - -/* Assure that there are at least n bits in the bit accumulator. If there is - not enough available input to do that, then return from inflateBack() with - an error. */ -#define NEEDBITS(n) \ - do { \ - while (bits < (unsigned)(n)) \ - PULLBYTE(); \ - } while (0) - -/* Return the low n bits of the bit accumulator (n <= 16) */ -#define BITS(n) \ - ((unsigned)hold & ((1U << (n)) - 1)) - -/* Remove n bits from the bit accumulator */ -#define DROPBITS(n) \ - do { \ - hold >>= (n); \ - bits -= (unsigned)(n); \ - } while (0) - -/* Remove zero to seven bits as needed to go to a byte boundary */ -#define BYTEBITS() \ - do { \ - hold >>= bits & 7; \ - bits -= bits & 7; \ - } while (0) - -/* Assure that some output space is available, by writing out the window - if it's full. If the write fails, return from inflateBack() with a - Z_BUF_ERROR. */ -#define ROOM() \ - do { \ - if (left == 0) { \ - put = window; \ - left = WSIZE; \ - wrap = 1; \ - if (out(out_desc, put, (unsigned)left)) { \ - ret = Z_BUF_ERROR; \ - goto inf_leave; \ - } \ - } \ - } while (0) - -/* - strm provides the memory allocation functions and window buffer on input, - and provides information on the unused input on return. For Z_DATA_ERROR - returns, strm will also provide an error message. - - in() and out() are the call-back input and output functions. When - inflateBack() needs more input, it calls in(). When inflateBack() has - filled the window with output, or when it completes with data in the - window, it calls out() to write out the data. The application must not - change the provided input until in() is called again or inflateBack() - returns. The application must not change the window/output buffer until - inflateBack() returns. - - in() and out() are called with a descriptor parameter provided in the - inflateBack() call. This parameter can be a structure that provides the - information required to do the read or write, as well as accumulated - information on the input and output such as totals and check values. - - in() should return zero on failure. out() should return non-zero on - failure. If either in() or out() fails, than inflateBack() returns a - Z_BUF_ERROR. strm->next_in can be checked for Z_NULL to see whether it - was in() or out() that caused in the error. Otherwise, inflateBack() - returns Z_STREAM_END on success, Z_DATA_ERROR for an deflate format - error, or Z_MEM_ERROR if it could not allocate memory for the state. - inflateBack() can also return Z_STREAM_ERROR if the input parameters - are not correct, i.e. strm is Z_NULL or the state was not initialized. - */ -int ZEXPORT inflateBack9(strm, in, in_desc, out, out_desc) -z_stream FAR *strm; -in_func in; -void FAR *in_desc; -out_func out; -void FAR *out_desc; -{ - struct inflate_state FAR *state; - z_const unsigned char FAR *next; /* next input */ - unsigned char FAR *put; /* next output */ - unsigned have; /* available input */ - unsigned long left; /* available output */ - inflate_mode mode; /* current inflate mode */ - int lastblock; /* true if processing last block */ - int wrap; /* true if the window has wrapped */ - unsigned char FAR *window; /* allocated sliding window, if needed */ - unsigned long hold; /* bit buffer */ - unsigned bits; /* bits in bit buffer */ - unsigned extra; /* extra bits needed */ - unsigned long length; /* literal or length of data to copy */ - unsigned long offset; /* distance back to copy string from */ - unsigned long copy; /* number of stored or match bytes to copy */ - unsigned char FAR *from; /* where to copy match bytes from */ - code const FAR *lencode; /* starting table for length/literal codes */ - code const FAR *distcode; /* starting table for distance codes */ - unsigned lenbits; /* index bits for lencode */ - unsigned distbits; /* index bits for distcode */ - code here; /* current decoding table entry */ - code last; /* parent table entry */ - unsigned len; /* length to copy for repeats, bits to drop */ - int ret; /* return code */ - static const unsigned short order[19] = /* permutation of code lengths */ - {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; -#include "inffix9.h" - - /* Check that the strm exists and that the state was initialized */ - if (strm == Z_NULL || strm->state == Z_NULL) - return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - - /* Reset the state */ - strm->msg = Z_NULL; - mode = TYPE; - lastblock = 0; - wrap = 0; - window = state->window; - next = strm->next_in; - have = next != Z_NULL ? strm->avail_in : 0; - hold = 0; - bits = 0; - put = window; - left = WSIZE; - lencode = Z_NULL; - distcode = Z_NULL; - - /* Inflate until end of block marked as last */ - for (;;) - switch (mode) { - case TYPE: - /* determine and dispatch block type */ - if (lastblock) { - BYTEBITS(); - mode = DONE; - break; - } - NEEDBITS(3); - lastblock = BITS(1); - DROPBITS(1); - switch (BITS(2)) { - case 0: /* stored block */ - Tracev((stderr, "inflate: stored block%s\n", - lastblock ? " (last)" : "")); - mode = STORED; - break; - case 1: /* fixed block */ - lencode = lenfix; - lenbits = 9; - distcode = distfix; - distbits = 5; - Tracev((stderr, "inflate: fixed codes block%s\n", - lastblock ? " (last)" : "")); - mode = LEN; /* decode codes */ - break; - case 2: /* dynamic block */ - Tracev((stderr, "inflate: dynamic codes block%s\n", - lastblock ? " (last)" : "")); - mode = TABLE; - break; - case 3: - strm->msg = (char *)"invalid block type"; - mode = BAD; - } - DROPBITS(2); - break; - - case STORED: - /* get and verify stored block length */ - BYTEBITS(); /* go to byte boundary */ - NEEDBITS(32); - if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { - strm->msg = (char *)"invalid stored block lengths"; - mode = BAD; - break; - } - length = (unsigned)hold & 0xffff; - Tracev((stderr, "inflate: stored length %lu\n", - length)); - INITBITS(); - - /* copy stored block from input to output */ - while (length != 0) { - copy = length; - PULL(); - ROOM(); - if (copy > have) copy = have; - if (copy > left) copy = left; - zmemcpy(put, next, copy); - have -= copy; - next += copy; - left -= copy; - put += copy; - length -= copy; - } - Tracev((stderr, "inflate: stored end\n")); - mode = TYPE; - break; - - case TABLE: - /* get dynamic table entries descriptor */ - NEEDBITS(14); - state->nlen = BITS(5) + 257; - DROPBITS(5); - state->ndist = BITS(5) + 1; - DROPBITS(5); - state->ncode = BITS(4) + 4; - DROPBITS(4); - if (state->nlen > 286) { - strm->msg = (char *)"too many length symbols"; - mode = BAD; - break; - } - Tracev((stderr, "inflate: table sizes ok\n")); - - /* get code length code lengths (not a typo) */ - state->have = 0; - while (state->have < state->ncode) { - NEEDBITS(3); - state->lens[order[state->have++]] = (unsigned short)BITS(3); - DROPBITS(3); - } - while (state->have < 19) - state->lens[order[state->have++]] = 0; - state->next = state->codes; - lencode = (code const FAR *)(state->next); - lenbits = 7; - ret = inflate_table9(CODES, state->lens, 19, &(state->next), - &(lenbits), state->work); - if (ret) { - strm->msg = (char *)"invalid code lengths set"; - mode = BAD; - break; - } - Tracev((stderr, "inflate: code lengths ok\n")); - - /* get length and distance code code lengths */ - state->have = 0; - while (state->have < state->nlen + state->ndist) { - for (;;) { - here = lencode[BITS(lenbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if (here.val < 16) { - NEEDBITS(here.bits); - DROPBITS(here.bits); - state->lens[state->have++] = here.val; - } - else { - if (here.val == 16) { - NEEDBITS(here.bits + 2); - DROPBITS(here.bits); - if (state->have == 0) { - strm->msg = (char *)"invalid bit length repeat"; - mode = BAD; - break; - } - len = (unsigned)(state->lens[state->have - 1]); - copy = 3 + BITS(2); - DROPBITS(2); - } - else if (here.val == 17) { - NEEDBITS(here.bits + 3); - DROPBITS(here.bits); - len = 0; - copy = 3 + BITS(3); - DROPBITS(3); - } - else { - NEEDBITS(here.bits + 7); - DROPBITS(here.bits); - len = 0; - copy = 11 + BITS(7); - DROPBITS(7); - } - if (state->have + copy > state->nlen + state->ndist) { - strm->msg = (char *)"invalid bit length repeat"; - mode = BAD; - break; - } - while (copy--) - state->lens[state->have++] = (unsigned short)len; - } - } - - /* handle error breaks in while */ - if (mode == BAD) break; - - /* check for end-of-block code (better have one) */ - if (state->lens[256] == 0) { - strm->msg = (char *)"invalid code -- missing end-of-block"; - mode = BAD; - break; - } - - /* build code tables -- note: do not change the lenbits or distbits - values here (9 and 6) without reading the comments in inftree9.h - concerning the ENOUGH constants, which depend on those values */ - state->next = state->codes; - lencode = (code const FAR *)(state->next); - lenbits = 9; - ret = inflate_table9(LENS, state->lens, state->nlen, - &(state->next), &(lenbits), state->work); - if (ret) { - strm->msg = (char *)"invalid literal/lengths set"; - mode = BAD; - break; - } - distcode = (code const FAR *)(state->next); - distbits = 6; - ret = inflate_table9(DISTS, state->lens + state->nlen, - state->ndist, &(state->next), &(distbits), - state->work); - if (ret) { - strm->msg = (char *)"invalid distances set"; - mode = BAD; - break; - } - Tracev((stderr, "inflate: codes ok\n")); - mode = LEN; - - case LEN: - /* get a literal, length, or end-of-block code */ - for (;;) { - here = lencode[BITS(lenbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if (here.op && (here.op & 0xf0) == 0) { - last = here; - for (;;) { - here = lencode[last.val + - (BITS(last.bits + last.op) >> last.bits)]; - if ((unsigned)(last.bits + here.bits) <= bits) break; - PULLBYTE(); - } - DROPBITS(last.bits); - } - DROPBITS(here.bits); - length = (unsigned)here.val; - - /* process literal */ - if (here.op == 0) { - Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? - "inflate: literal '%c'\n" : - "inflate: literal 0x%02x\n", here.val)); - ROOM(); - *put++ = (unsigned char)(length); - left--; - mode = LEN; - break; - } - - /* process end of block */ - if (here.op & 32) { - Tracevv((stderr, "inflate: end of block\n")); - mode = TYPE; - break; - } - - /* invalid code */ - if (here.op & 64) { - strm->msg = (char *)"invalid literal/length code"; - mode = BAD; - break; - } - - /* length code -- get extra bits, if any */ - extra = (unsigned)(here.op) & 31; - if (extra != 0) { - NEEDBITS(extra); - length += BITS(extra); - DROPBITS(extra); - } - Tracevv((stderr, "inflate: length %lu\n", length)); - - /* get distance code */ - for (;;) { - here = distcode[BITS(distbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if ((here.op & 0xf0) == 0) { - last = here; - for (;;) { - here = distcode[last.val + - (BITS(last.bits + last.op) >> last.bits)]; - if ((unsigned)(last.bits + here.bits) <= bits) break; - PULLBYTE(); - } - DROPBITS(last.bits); - } - DROPBITS(here.bits); - if (here.op & 64) { - strm->msg = (char *)"invalid distance code"; - mode = BAD; - break; - } - offset = (unsigned)here.val; - - /* get distance extra bits, if any */ - extra = (unsigned)(here.op) & 15; - if (extra != 0) { - NEEDBITS(extra); - offset += BITS(extra); - DROPBITS(extra); - } - if (offset > WSIZE - (wrap ? 0: left)) { - strm->msg = (char *)"invalid distance too far back"; - mode = BAD; - break; - } - Tracevv((stderr, "inflate: distance %lu\n", offset)); - - /* copy match from window to output */ - do { - ROOM(); - copy = WSIZE - offset; - if (copy < left) { - from = put + copy; - copy = left - copy; - } - else { - from = put - offset; - copy = left; - } - if (copy > length) copy = length; - length -= copy; - left -= copy; - do { - *put++ = *from++; - } while (--copy); - } while (length != 0); - break; - - case DONE: - /* inflate stream terminated properly -- write leftover output */ - ret = Z_STREAM_END; - if (left < WSIZE) { - if (out(out_desc, window, (unsigned)(WSIZE - left))) - ret = Z_BUF_ERROR; - } - goto inf_leave; - - case BAD: - ret = Z_DATA_ERROR; - goto inf_leave; - - default: /* can't happen, but makes compilers happy */ - ret = Z_STREAM_ERROR; - goto inf_leave; - } - - /* Return unused input */ - inf_leave: - strm->next_in = next; - strm->avail_in = have; - return ret; -} - -int ZEXPORT inflateBack9End(strm) -z_stream FAR *strm; -{ - if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0) - return Z_STREAM_ERROR; - ZFREE(strm, strm->state); - strm->state = Z_NULL; - Tracev((stderr, "inflate: end\n")); - return Z_OK; -} diff --git a/platform/win32/msvc/external/zlib/contrib/infback9/infback9.h b/platform/win32/msvc/external/zlib/contrib/infback9/infback9.h deleted file mode 100644 index 1073c0a38e6..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/infback9/infback9.h +++ /dev/null @@ -1,37 +0,0 @@ -/* infback9.h -- header for using inflateBack9 functions - * Copyright (C) 2003 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* - * This header file and associated patches provide a decoder for PKWare's - * undocumented deflate64 compression method (method 9). Use with infback9.c, - * inftree9.h, inftree9.c, and inffix9.h. These patches are not supported. - * This should be compiled with zlib, since it uses zutil.h and zutil.o. - * This code has not yet been tested on 16-bit architectures. See the - * comments in zlib.h for inflateBack() usage. These functions are used - * identically, except that there is no windowBits parameter, and a 64K - * window must be provided. Also if int's are 16 bits, then a zero for - * the third parameter of the "out" function actually means 65536UL. - * zlib.h must be included before this header file. - */ - -#ifdef __cplusplus -extern "C" { -#endif - -ZEXTERN int ZEXPORT inflateBack9 OF((z_stream FAR *strm, - in_func in, void FAR *in_desc, - out_func out, void FAR *out_desc)); -ZEXTERN int ZEXPORT inflateBack9End OF((z_stream FAR *strm)); -ZEXTERN int ZEXPORT inflateBack9Init_ OF((z_stream FAR *strm, - unsigned char FAR *window, - const char *version, - int stream_size)); -#define inflateBack9Init(strm, window) \ - inflateBack9Init_((strm), (window), \ - ZLIB_VERSION, sizeof(z_stream)) - -#ifdef __cplusplus -} -#endif diff --git a/platform/win32/msvc/external/zlib/contrib/infback9/inffix9.h b/platform/win32/msvc/external/zlib/contrib/infback9/inffix9.h deleted file mode 100644 index ee5671d2df6..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/infback9/inffix9.h +++ /dev/null @@ -1,107 +0,0 @@ - /* inffix9.h -- table for decoding deflate64 fixed codes - * Generated automatically by makefixed9(). - */ - - /* WARNING: this file should *not* be used by applications. - It is part of the implementation of this library and is - subject to change. Applications should only use zlib.h. - */ - - static const code lenfix[512] = { - {96,7,0},{0,8,80},{0,8,16},{132,8,115},{130,7,31},{0,8,112}, - {0,8,48},{0,9,192},{128,7,10},{0,8,96},{0,8,32},{0,9,160}, - {0,8,0},{0,8,128},{0,8,64},{0,9,224},{128,7,6},{0,8,88}, - {0,8,24},{0,9,144},{131,7,59},{0,8,120},{0,8,56},{0,9,208}, - {129,7,17},{0,8,104},{0,8,40},{0,9,176},{0,8,8},{0,8,136}, - {0,8,72},{0,9,240},{128,7,4},{0,8,84},{0,8,20},{133,8,227}, - {131,7,43},{0,8,116},{0,8,52},{0,9,200},{129,7,13},{0,8,100}, - {0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232}, - {128,7,8},{0,8,92},{0,8,28},{0,9,152},{132,7,83},{0,8,124}, - {0,8,60},{0,9,216},{130,7,23},{0,8,108},{0,8,44},{0,9,184}, - {0,8,12},{0,8,140},{0,8,76},{0,9,248},{128,7,3},{0,8,82}, - {0,8,18},{133,8,163},{131,7,35},{0,8,114},{0,8,50},{0,9,196}, - {129,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2},{0,8,130}, - {0,8,66},{0,9,228},{128,7,7},{0,8,90},{0,8,26},{0,9,148}, - {132,7,67},{0,8,122},{0,8,58},{0,9,212},{130,7,19},{0,8,106}, - {0,8,42},{0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244}, - {128,7,5},{0,8,86},{0,8,22},{65,8,0},{131,7,51},{0,8,118}, - {0,8,54},{0,9,204},{129,7,15},{0,8,102},{0,8,38},{0,9,172}, - {0,8,6},{0,8,134},{0,8,70},{0,9,236},{128,7,9},{0,8,94}, - {0,8,30},{0,9,156},{132,7,99},{0,8,126},{0,8,62},{0,9,220}, - {130,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142}, - {0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{133,8,131}, - {130,7,31},{0,8,113},{0,8,49},{0,9,194},{128,7,10},{0,8,97}, - {0,8,33},{0,9,162},{0,8,1},{0,8,129},{0,8,65},{0,9,226}, - {128,7,6},{0,8,89},{0,8,25},{0,9,146},{131,7,59},{0,8,121}, - {0,8,57},{0,9,210},{129,7,17},{0,8,105},{0,8,41},{0,9,178}, - {0,8,9},{0,8,137},{0,8,73},{0,9,242},{128,7,4},{0,8,85}, - {0,8,21},{144,8,3},{131,7,43},{0,8,117},{0,8,53},{0,9,202}, - {129,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133}, - {0,8,69},{0,9,234},{128,7,8},{0,8,93},{0,8,29},{0,9,154}, - {132,7,83},{0,8,125},{0,8,61},{0,9,218},{130,7,23},{0,8,109}, - {0,8,45},{0,9,186},{0,8,13},{0,8,141},{0,8,77},{0,9,250}, - {128,7,3},{0,8,83},{0,8,19},{133,8,195},{131,7,35},{0,8,115}, - {0,8,51},{0,9,198},{129,7,11},{0,8,99},{0,8,35},{0,9,166}, - {0,8,3},{0,8,131},{0,8,67},{0,9,230},{128,7,7},{0,8,91}, - {0,8,27},{0,9,150},{132,7,67},{0,8,123},{0,8,59},{0,9,214}, - {130,7,19},{0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139}, - {0,8,75},{0,9,246},{128,7,5},{0,8,87},{0,8,23},{77,8,0}, - {131,7,51},{0,8,119},{0,8,55},{0,9,206},{129,7,15},{0,8,103}, - {0,8,39},{0,9,174},{0,8,7},{0,8,135},{0,8,71},{0,9,238}, - {128,7,9},{0,8,95},{0,8,31},{0,9,158},{132,7,99},{0,8,127}, - {0,8,63},{0,9,222},{130,7,27},{0,8,111},{0,8,47},{0,9,190}, - {0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80}, - {0,8,16},{132,8,115},{130,7,31},{0,8,112},{0,8,48},{0,9,193}, - {128,7,10},{0,8,96},{0,8,32},{0,9,161},{0,8,0},{0,8,128}, - {0,8,64},{0,9,225},{128,7,6},{0,8,88},{0,8,24},{0,9,145}, - {131,7,59},{0,8,120},{0,8,56},{0,9,209},{129,7,17},{0,8,104}, - {0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72},{0,9,241}, - {128,7,4},{0,8,84},{0,8,20},{133,8,227},{131,7,43},{0,8,116}, - {0,8,52},{0,9,201},{129,7,13},{0,8,100},{0,8,36},{0,9,169}, - {0,8,4},{0,8,132},{0,8,68},{0,9,233},{128,7,8},{0,8,92}, - {0,8,28},{0,9,153},{132,7,83},{0,8,124},{0,8,60},{0,9,217}, - {130,7,23},{0,8,108},{0,8,44},{0,9,185},{0,8,12},{0,8,140}, - {0,8,76},{0,9,249},{128,7,3},{0,8,82},{0,8,18},{133,8,163}, - {131,7,35},{0,8,114},{0,8,50},{0,9,197},{129,7,11},{0,8,98}, - {0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229}, - {128,7,7},{0,8,90},{0,8,26},{0,9,149},{132,7,67},{0,8,122}, - {0,8,58},{0,9,213},{130,7,19},{0,8,106},{0,8,42},{0,9,181}, - {0,8,10},{0,8,138},{0,8,74},{0,9,245},{128,7,5},{0,8,86}, - {0,8,22},{65,8,0},{131,7,51},{0,8,118},{0,8,54},{0,9,205}, - {129,7,15},{0,8,102},{0,8,38},{0,9,173},{0,8,6},{0,8,134}, - {0,8,70},{0,9,237},{128,7,9},{0,8,94},{0,8,30},{0,9,157}, - {132,7,99},{0,8,126},{0,8,62},{0,9,221},{130,7,27},{0,8,110}, - {0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253}, - {96,7,0},{0,8,81},{0,8,17},{133,8,131},{130,7,31},{0,8,113}, - {0,8,49},{0,9,195},{128,7,10},{0,8,97},{0,8,33},{0,9,163}, - {0,8,1},{0,8,129},{0,8,65},{0,9,227},{128,7,6},{0,8,89}, - {0,8,25},{0,9,147},{131,7,59},{0,8,121},{0,8,57},{0,9,211}, - {129,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9},{0,8,137}, - {0,8,73},{0,9,243},{128,7,4},{0,8,85},{0,8,21},{144,8,3}, - {131,7,43},{0,8,117},{0,8,53},{0,9,203},{129,7,13},{0,8,101}, - {0,8,37},{0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235}, - {128,7,8},{0,8,93},{0,8,29},{0,9,155},{132,7,83},{0,8,125}, - {0,8,61},{0,9,219},{130,7,23},{0,8,109},{0,8,45},{0,9,187}, - {0,8,13},{0,8,141},{0,8,77},{0,9,251},{128,7,3},{0,8,83}, - {0,8,19},{133,8,195},{131,7,35},{0,8,115},{0,8,51},{0,9,199}, - {129,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131}, - {0,8,67},{0,9,231},{128,7,7},{0,8,91},{0,8,27},{0,9,151}, - {132,7,67},{0,8,123},{0,8,59},{0,9,215},{130,7,19},{0,8,107}, - {0,8,43},{0,9,183},{0,8,11},{0,8,139},{0,8,75},{0,9,247}, - {128,7,5},{0,8,87},{0,8,23},{77,8,0},{131,7,51},{0,8,119}, - {0,8,55},{0,9,207},{129,7,15},{0,8,103},{0,8,39},{0,9,175}, - {0,8,7},{0,8,135},{0,8,71},{0,9,239},{128,7,9},{0,8,95}, - {0,8,31},{0,9,159},{132,7,99},{0,8,127},{0,8,63},{0,9,223}, - {130,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143}, - {0,8,79},{0,9,255} - }; - - static const code distfix[32] = { - {128,5,1},{135,5,257},{131,5,17},{139,5,4097},{129,5,5}, - {137,5,1025},{133,5,65},{141,5,16385},{128,5,3},{136,5,513}, - {132,5,33},{140,5,8193},{130,5,9},{138,5,2049},{134,5,129}, - {142,5,32769},{128,5,2},{135,5,385},{131,5,25},{139,5,6145}, - {129,5,7},{137,5,1537},{133,5,97},{141,5,24577},{128,5,4}, - {136,5,769},{132,5,49},{140,5,12289},{130,5,13},{138,5,3073}, - {134,5,193},{142,5,49153} - }; diff --git a/platform/win32/msvc/external/zlib/contrib/infback9/inflate9.h b/platform/win32/msvc/external/zlib/contrib/infback9/inflate9.h deleted file mode 100644 index ee9a79394b6..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/infback9/inflate9.h +++ /dev/null @@ -1,47 +0,0 @@ -/* inflate9.h -- internal inflate state definition - * Copyright (C) 1995-2003 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -/* Possible inflate modes between inflate() calls */ -typedef enum { - TYPE, /* i: waiting for type bits, including last-flag bit */ - STORED, /* i: waiting for stored size (length and complement) */ - TABLE, /* i: waiting for dynamic block table lengths */ - LEN, /* i: waiting for length/lit code */ - DONE, /* finished check, done -- remain here until reset */ - BAD /* got a data error -- remain here until reset */ -} inflate_mode; - -/* - State transitions between above modes - - - (most modes can go to the BAD mode -- not shown for clarity) - - Read deflate blocks: - TYPE -> STORED or TABLE or LEN or DONE - STORED -> TYPE - TABLE -> LENLENS -> CODELENS -> LEN - Read deflate codes: - LEN -> LEN or TYPE - */ - -/* state maintained between inflate() calls. Approximately 7K bytes. */ -struct inflate_state { - /* sliding window */ - unsigned char FAR *window; /* allocated sliding window, if needed */ - /* dynamic table building */ - unsigned ncode; /* number of code length code lengths */ - unsigned nlen; /* number of length code lengths */ - unsigned ndist; /* number of distance code lengths */ - unsigned have; /* number of code lengths in lens[] */ - code FAR *next; /* next available space in codes[] */ - unsigned short lens[320]; /* temporary storage for code lengths */ - unsigned short work[288]; /* work area for code table building */ - code codes[ENOUGH]; /* space for code tables */ -}; diff --git a/platform/win32/msvc/external/zlib/contrib/infback9/inftree9.c b/platform/win32/msvc/external/zlib/contrib/infback9/inftree9.c deleted file mode 100644 index 4a73ad215f5..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/infback9/inftree9.c +++ /dev/null @@ -1,324 +0,0 @@ -/* inftree9.c -- generate Huffman trees for efficient decoding - * Copyright (C) 1995-2013 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "zutil.h" -#include "inftree9.h" - -#define MAXBITS 15 - -const char inflate9_copyright[] = - " inflate9 1.2.8 Copyright 1995-2013 Mark Adler "; -/* - If you use the zlib library in a product, an acknowledgment is welcome - in the documentation of your product. If for some reason you cannot - include such an acknowledgment, I would appreciate that you keep this - copyright string in the executable of your product. - */ - -/* - Build a set of tables to decode the provided canonical Huffman code. - The code lengths are lens[0..codes-1]. The result starts at *table, - whose indices are 0..2^bits-1. work is a writable array of at least - lens shorts, which is used as a work area. type is the type of code - to be generated, CODES, LENS, or DISTS. On return, zero is success, - -1 is an invalid code, and +1 means that ENOUGH isn't enough. table - on return points to the next available entry's address. bits is the - requested root table index bits, and on return it is the actual root - table index bits. It will differ if the request is greater than the - longest code or if it is less than the shortest code. - */ -int inflate_table9(type, lens, codes, table, bits, work) -codetype type; -unsigned short FAR *lens; -unsigned codes; -code FAR * FAR *table; -unsigned FAR *bits; -unsigned short FAR *work; -{ - unsigned len; /* a code's length in bits */ - unsigned sym; /* index of code symbols */ - unsigned min, max; /* minimum and maximum code lengths */ - unsigned root; /* number of index bits for root table */ - unsigned curr; /* number of index bits for current table */ - unsigned drop; /* code bits to drop for sub-table */ - int left; /* number of prefix codes available */ - unsigned used; /* code entries in table used */ - unsigned huff; /* Huffman code */ - unsigned incr; /* for incrementing code, index */ - unsigned fill; /* index for replicating entries */ - unsigned low; /* low bits for current root entry */ - unsigned mask; /* mask for low root bits */ - code this; /* table entry for duplication */ - code FAR *next; /* next available space in table */ - const unsigned short FAR *base; /* base value table to use */ - const unsigned short FAR *extra; /* extra bits table to use */ - int end; /* use base and extra for symbol > end */ - unsigned short count[MAXBITS+1]; /* number of codes of each length */ - unsigned short offs[MAXBITS+1]; /* offsets in table for each length */ - static const unsigned short lbase[31] = { /* Length codes 257..285 base */ - 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, - 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, - 131, 163, 195, 227, 3, 0, 0}; - static const unsigned short lext[31] = { /* Length codes 257..285 extra */ - 128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, - 130, 130, 130, 130, 131, 131, 131, 131, 132, 132, 132, 132, - 133, 133, 133, 133, 144, 72, 78}; - static const unsigned short dbase[32] = { /* Distance codes 0..31 base */ - 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, - 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, - 4097, 6145, 8193, 12289, 16385, 24577, 32769, 49153}; - static const unsigned short dext[32] = { /* Distance codes 0..31 extra */ - 128, 128, 128, 128, 129, 129, 130, 130, 131, 131, 132, 132, - 133, 133, 134, 134, 135, 135, 136, 136, 137, 137, 138, 138, - 139, 139, 140, 140, 141, 141, 142, 142}; - - /* - Process a set of code lengths to create a canonical Huffman code. The - code lengths are lens[0..codes-1]. Each length corresponds to the - symbols 0..codes-1. The Huffman code is generated by first sorting the - symbols by length from short to long, and retaining the symbol order - for codes with equal lengths. Then the code starts with all zero bits - for the first code of the shortest length, and the codes are integer - increments for the same length, and zeros are appended as the length - increases. For the deflate format, these bits are stored backwards - from their more natural integer increment ordering, and so when the - decoding tables are built in the large loop below, the integer codes - are incremented backwards. - - This routine assumes, but does not check, that all of the entries in - lens[] are in the range 0..MAXBITS. The caller must assure this. - 1..MAXBITS is interpreted as that code length. zero means that that - symbol does not occur in this code. - - The codes are sorted by computing a count of codes for each length, - creating from that a table of starting indices for each length in the - sorted table, and then entering the symbols in order in the sorted - table. The sorted table is work[], with that space being provided by - the caller. - - The length counts are used for other purposes as well, i.e. finding - the minimum and maximum length codes, determining if there are any - codes at all, checking for a valid set of lengths, and looking ahead - at length counts to determine sub-table sizes when building the - decoding tables. - */ - - /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */ - for (len = 0; len <= MAXBITS; len++) - count[len] = 0; - for (sym = 0; sym < codes; sym++) - count[lens[sym]]++; - - /* bound code lengths, force root to be within code lengths */ - root = *bits; - for (max = MAXBITS; max >= 1; max--) - if (count[max] != 0) break; - if (root > max) root = max; - if (max == 0) return -1; /* no codes! */ - for (min = 1; min <= MAXBITS; min++) - if (count[min] != 0) break; - if (root < min) root = min; - - /* check for an over-subscribed or incomplete set of lengths */ - left = 1; - for (len = 1; len <= MAXBITS; len++) { - left <<= 1; - left -= count[len]; - if (left < 0) return -1; /* over-subscribed */ - } - if (left > 0 && (type == CODES || max != 1)) - return -1; /* incomplete set */ - - /* generate offsets into symbol table for each length for sorting */ - offs[1] = 0; - for (len = 1; len < MAXBITS; len++) - offs[len + 1] = offs[len] + count[len]; - - /* sort symbols by length, by symbol order within each length */ - for (sym = 0; sym < codes; sym++) - if (lens[sym] != 0) work[offs[lens[sym]]++] = (unsigned short)sym; - - /* - Create and fill in decoding tables. In this loop, the table being - filled is at next and has curr index bits. The code being used is huff - with length len. That code is converted to an index by dropping drop - bits off of the bottom. For codes where len is less than drop + curr, - those top drop + curr - len bits are incremented through all values to - fill the table with replicated entries. - - root is the number of index bits for the root table. When len exceeds - root, sub-tables are created pointed to by the root entry with an index - of the low root bits of huff. This is saved in low to check for when a - new sub-table should be started. drop is zero when the root table is - being filled, and drop is root when sub-tables are being filled. - - When a new sub-table is needed, it is necessary to look ahead in the - code lengths to determine what size sub-table is needed. The length - counts are used for this, and so count[] is decremented as codes are - entered in the tables. - - used keeps track of how many table entries have been allocated from the - provided *table space. It is checked for LENS and DIST tables against - the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in - the initial root table size constants. See the comments in inftree9.h - for more information. - - sym increments through all symbols, and the loop terminates when - all codes of length max, i.e. all codes, have been processed. This - routine permits incomplete codes, so another loop after this one fills - in the rest of the decoding tables with invalid code markers. - */ - - /* set up for code type */ - switch (type) { - case CODES: - base = extra = work; /* dummy value--not used */ - end = 19; - break; - case LENS: - base = lbase; - base -= 257; - extra = lext; - extra -= 257; - end = 256; - break; - default: /* DISTS */ - base = dbase; - extra = dext; - end = -1; - } - - /* initialize state for loop */ - huff = 0; /* starting code */ - sym = 0; /* starting code symbol */ - len = min; /* starting code length */ - next = *table; /* current table to fill in */ - curr = root; /* current table index bits */ - drop = 0; /* current bits to drop from code for index */ - low = (unsigned)(-1); /* trigger new sub-table when len > root */ - used = 1U << root; /* use root table entries */ - mask = used - 1; /* mask for comparing low */ - - /* check available table space */ - if ((type == LENS && used >= ENOUGH_LENS) || - (type == DISTS && used >= ENOUGH_DISTS)) - return 1; - - /* process all codes and make table entries */ - for (;;) { - /* create table entry */ - this.bits = (unsigned char)(len - drop); - if ((int)(work[sym]) < end) { - this.op = (unsigned char)0; - this.val = work[sym]; - } - else if ((int)(work[sym]) > end) { - this.op = (unsigned char)(extra[work[sym]]); - this.val = base[work[sym]]; - } - else { - this.op = (unsigned char)(32 + 64); /* end of block */ - this.val = 0; - } - - /* replicate for those indices with low len bits equal to huff */ - incr = 1U << (len - drop); - fill = 1U << curr; - do { - fill -= incr; - next[(huff >> drop) + fill] = this; - } while (fill != 0); - - /* backwards increment the len-bit code huff */ - incr = 1U << (len - 1); - while (huff & incr) - incr >>= 1; - if (incr != 0) { - huff &= incr - 1; - huff += incr; - } - else - huff = 0; - - /* go to next symbol, update count, len */ - sym++; - if (--(count[len]) == 0) { - if (len == max) break; - len = lens[work[sym]]; - } - - /* create new sub-table if needed */ - if (len > root && (huff & mask) != low) { - /* if first time, transition to sub-tables */ - if (drop == 0) - drop = root; - - /* increment past last table */ - next += 1U << curr; - - /* determine length of next table */ - curr = len - drop; - left = (int)(1 << curr); - while (curr + drop < max) { - left -= count[curr + drop]; - if (left <= 0) break; - curr++; - left <<= 1; - } - - /* check for enough space */ - used += 1U << curr; - if ((type == LENS && used >= ENOUGH_LENS) || - (type == DISTS && used >= ENOUGH_DISTS)) - return 1; - - /* point entry in root table to sub-table */ - low = huff & mask; - (*table)[low].op = (unsigned char)curr; - (*table)[low].bits = (unsigned char)root; - (*table)[low].val = (unsigned short)(next - *table); - } - } - - /* - Fill in rest of table for incomplete codes. This loop is similar to the - loop above in incrementing huff for table indices. It is assumed that - len is equal to curr + drop, so there is no loop needed to increment - through high index bits. When the current sub-table is filled, the loop - drops back to the root table to fill in any remaining entries there. - */ - this.op = (unsigned char)64; /* invalid code marker */ - this.bits = (unsigned char)(len - drop); - this.val = (unsigned short)0; - while (huff != 0) { - /* when done with sub-table, drop back to root table */ - if (drop != 0 && (huff & mask) != low) { - drop = 0; - len = root; - next = *table; - curr = root; - this.bits = (unsigned char)len; - } - - /* put invalid code marker in table */ - next[huff >> drop] = this; - - /* backwards increment the len-bit code huff */ - incr = 1U << (len - 1); - while (huff & incr) - incr >>= 1; - if (incr != 0) { - huff &= incr - 1; - huff += incr; - } - else - huff = 0; - } - - /* set return parameters */ - *table += used; - *bits = root; - return 0; -} diff --git a/platform/win32/msvc/external/zlib/contrib/infback9/inftree9.h b/platform/win32/msvc/external/zlib/contrib/infback9/inftree9.h deleted file mode 100644 index 5ab21f0c6d1..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/infback9/inftree9.h +++ /dev/null @@ -1,61 +0,0 @@ -/* inftree9.h -- header to use inftree9.c - * Copyright (C) 1995-2008 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -/* Structure for decoding tables. Each entry provides either the - information needed to do the operation requested by the code that - indexed that table entry, or it provides a pointer to another - table that indexes more bits of the code. op indicates whether - the entry is a pointer to another table, a literal, a length or - distance, an end-of-block, or an invalid code. For a table - pointer, the low four bits of op is the number of index bits of - that table. For a length or distance, the low four bits of op - is the number of extra bits to get after the code. bits is - the number of bits in this code or part of the code to drop off - of the bit buffer. val is the actual byte to output in the case - of a literal, the base length or distance, or the offset from - the current table to the next table. Each entry is four bytes. */ -typedef struct { - unsigned char op; /* operation, extra bits, table bits */ - unsigned char bits; /* bits in this part of the code */ - unsigned short val; /* offset in table or code value */ -} code; - -/* op values as set by inflate_table(): - 00000000 - literal - 0000tttt - table link, tttt != 0 is the number of table index bits - 100eeeee - length or distance, eeee is the number of extra bits - 01100000 - end of block - 01000000 - invalid code - */ - -/* Maximum size of the dynamic table. The maximum number of code structures is - 1446, which is the sum of 852 for literal/length codes and 594 for distance - codes. These values were found by exhaustive searches using the program - examples/enough.c found in the zlib distribtution. The arguments to that - program are the number of symbols, the initial root table size, and the - maximum bit length of a code. "enough 286 9 15" for literal/length codes - returns returns 852, and "enough 32 6 15" for distance codes returns 594. - The initial root table size (9 or 6) is found in the fifth argument of the - inflate_table() calls in infback9.c. If the root table size is changed, - then these maximum sizes would be need to be recalculated and updated. */ -#define ENOUGH_LENS 852 -#define ENOUGH_DISTS 594 -#define ENOUGH (ENOUGH_LENS+ENOUGH_DISTS) - -/* Type of code to build for inflate_table9() */ -typedef enum { - CODES, - LENS, - DISTS -} codetype; - -extern int inflate_table9 OF((codetype type, unsigned short FAR *lens, - unsigned codes, code FAR * FAR *table, - unsigned FAR *bits, unsigned short FAR *work)); diff --git a/platform/win32/msvc/external/zlib/contrib/inflate86/inffas86.c b/platform/win32/msvc/external/zlib/contrib/inflate86/inffas86.c deleted file mode 100644 index 7292f67b753..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/inflate86/inffas86.c +++ /dev/null @@ -1,1157 +0,0 @@ -/* inffas86.c is a hand tuned assembler version of - * - * inffast.c -- fast decoding - * Copyright (C) 1995-2003 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - * - * Copyright (C) 2003 Chris Anderson <christop@charm.net> - * Please use the copyright conditions above. - * - * Dec-29-2003 -- I added AMD64 inflate asm support. This version is also - * slightly quicker on x86 systems because, instead of using rep movsb to copy - * data, it uses rep movsw, which moves data in 2-byte chunks instead of single - * bytes. I've tested the AMD64 code on a Fedora Core 1 + the x86_64 updates - * from http://fedora.linux.duke.edu/fc1_x86_64 - * which is running on an Athlon 64 3000+ / Gigabyte GA-K8VT800M system with - * 1GB ram. The 64-bit version is about 4% faster than the 32-bit version, - * when decompressing mozilla-source-1.3.tar.gz. - * - * Mar-13-2003 -- Most of this is derived from inffast.S which is derived from - * the gcc -S output of zlib-1.2.0/inffast.c. Zlib-1.2.0 is in beta release at - * the moment. I have successfully compiled and tested this code with gcc2.96, - * gcc3.2, icc5.0, msvc6.0. It is very close to the speed of inffast.S - * compiled with gcc -DNO_MMX, but inffast.S is still faster on the P3 with MMX - * enabled. I will attempt to merge the MMX code into this version. Newer - * versions of this and inffast.S can be found at - * http://www.eetbeetee.com/zlib/ and http://www.charm.net/~christop/zlib/ - */ - -#include "zutil.h" -#include "inftrees.h" -#include "inflate.h" -#include "inffast.h" - -/* Mark Adler's comments from inffast.c: */ - -/* - Decode literal, length, and distance codes and write out the resulting - literal and match bytes until either not enough input or output is - available, an end-of-block is encountered, or a data error is encountered. - When large enough input and output buffers are supplied to inflate(), for - example, a 16K input buffer and a 64K output buffer, more than 95% of the - inflate execution time is spent in this routine. - - Entry assumptions: - - state->mode == LEN - strm->avail_in >= 6 - strm->avail_out >= 258 - start >= strm->avail_out - state->bits < 8 - - On return, state->mode is one of: - - LEN -- ran out of enough output space or enough available input - TYPE -- reached end of block code, inflate() to interpret next block - BAD -- error in block data - - Notes: - - - The maximum input bits used by a length/distance pair is 15 bits for the - length code, 5 bits for the length extra, 15 bits for the distance code, - and 13 bits for the distance extra. This totals 48 bits, or six bytes. - Therefore if strm->avail_in >= 6, then there is enough input to avoid - checking for available input while decoding. - - - The maximum bytes that a single length/distance pair can output is 258 - bytes, which is the maximum length that can be coded. inflate_fast() - requires strm->avail_out >= 258 for each loop to avoid checking for - output space. - */ -void inflate_fast(strm, start) -z_streamp strm; -unsigned start; /* inflate()'s starting value for strm->avail_out */ -{ - struct inflate_state FAR *state; - struct inffast_ar { -/* 64 32 x86 x86_64 */ -/* ar offset register */ -/* 0 0 */ void *esp; /* esp save */ -/* 8 4 */ void *ebp; /* ebp save */ -/* 16 8 */ unsigned char FAR *in; /* esi rsi local strm->next_in */ -/* 24 12 */ unsigned char FAR *last; /* r9 while in < last */ -/* 32 16 */ unsigned char FAR *out; /* edi rdi local strm->next_out */ -/* 40 20 */ unsigned char FAR *beg; /* inflate()'s init next_out */ -/* 48 24 */ unsigned char FAR *end; /* r10 while out < end */ -/* 56 28 */ unsigned char FAR *window;/* size of window, wsize!=0 */ -/* 64 32 */ code const FAR *lcode; /* ebp rbp local strm->lencode */ -/* 72 36 */ code const FAR *dcode; /* r11 local strm->distcode */ -/* 80 40 */ unsigned long hold; /* edx rdx local strm->hold */ -/* 88 44 */ unsigned bits; /* ebx rbx local strm->bits */ -/* 92 48 */ unsigned wsize; /* window size */ -/* 96 52 */ unsigned write; /* window write index */ -/*100 56 */ unsigned lmask; /* r12 mask for lcode */ -/*104 60 */ unsigned dmask; /* r13 mask for dcode */ -/*108 64 */ unsigned len; /* r14 match length */ -/*112 68 */ unsigned dist; /* r15 match distance */ -/*116 72 */ unsigned status; /* set when state chng*/ - } ar; - -#if defined( __GNUC__ ) && defined( __amd64__ ) && ! defined( __i386 ) -#define PAD_AVAIL_IN 6 -#define PAD_AVAIL_OUT 258 -#else -#define PAD_AVAIL_IN 5 -#define PAD_AVAIL_OUT 257 -#endif - - /* copy state to local variables */ - state = (struct inflate_state FAR *)strm->state; - ar.in = strm->next_in; - ar.last = ar.in + (strm->avail_in - PAD_AVAIL_IN); - ar.out = strm->next_out; - ar.beg = ar.out - (start - strm->avail_out); - ar.end = ar.out + (strm->avail_out - PAD_AVAIL_OUT); - ar.wsize = state->wsize; - ar.write = state->wnext; - ar.window = state->window; - ar.hold = state->hold; - ar.bits = state->bits; - ar.lcode = state->lencode; - ar.dcode = state->distcode; - ar.lmask = (1U << state->lenbits) - 1; - ar.dmask = (1U << state->distbits) - 1; - - /* decode literals and length/distances until end-of-block or not enough - input data or output space */ - - /* align in on 1/2 hold size boundary */ - while (((unsigned long)(void *)ar.in & (sizeof(ar.hold) / 2 - 1)) != 0) { - ar.hold += (unsigned long)*ar.in++ << ar.bits; - ar.bits += 8; - } - -#if defined( __GNUC__ ) && defined( __amd64__ ) && ! defined( __i386 ) - __asm__ __volatile__ ( -" leaq %0, %%rax\n" -" movq %%rbp, 8(%%rax)\n" /* save regs rbp and rsp */ -" movq %%rsp, (%%rax)\n" -" movq %%rax, %%rsp\n" /* make rsp point to &ar */ -" movq 16(%%rsp), %%rsi\n" /* rsi = in */ -" movq 32(%%rsp), %%rdi\n" /* rdi = out */ -" movq 24(%%rsp), %%r9\n" /* r9 = last */ -" movq 48(%%rsp), %%r10\n" /* r10 = end */ -" movq 64(%%rsp), %%rbp\n" /* rbp = lcode */ -" movq 72(%%rsp), %%r11\n" /* r11 = dcode */ -" movq 80(%%rsp), %%rdx\n" /* rdx = hold */ -" movl 88(%%rsp), %%ebx\n" /* ebx = bits */ -" movl 100(%%rsp), %%r12d\n" /* r12d = lmask */ -" movl 104(%%rsp), %%r13d\n" /* r13d = dmask */ - /* r14d = len */ - /* r15d = dist */ -" cld\n" -" cmpq %%rdi, %%r10\n" -" je .L_one_time\n" /* if only one decode left */ -" cmpq %%rsi, %%r9\n" -" je .L_one_time\n" -" jmp .L_do_loop\n" - -".L_one_time:\n" -" movq %%r12, %%r8\n" /* r8 = lmask */ -" cmpb $32, %%bl\n" -" ja .L_get_length_code_one_time\n" - -" lodsl\n" /* eax = *(uint *)in++ */ -" movb %%bl, %%cl\n" /* cl = bits, needs it for shifting */ -" addb $32, %%bl\n" /* bits += 32 */ -" shlq %%cl, %%rax\n" -" orq %%rax, %%rdx\n" /* hold |= *((uint *)in)++ << bits */ -" jmp .L_get_length_code_one_time\n" - -".align 32,0x90\n" -".L_while_test:\n" -" cmpq %%rdi, %%r10\n" -" jbe .L_break_loop\n" -" cmpq %%rsi, %%r9\n" -" jbe .L_break_loop\n" - -".L_do_loop:\n" -" movq %%r12, %%r8\n" /* r8 = lmask */ -" cmpb $32, %%bl\n" -" ja .L_get_length_code\n" /* if (32 < bits) */ - -" lodsl\n" /* eax = *(uint *)in++ */ -" movb %%bl, %%cl\n" /* cl = bits, needs it for shifting */ -" addb $32, %%bl\n" /* bits += 32 */ -" shlq %%cl, %%rax\n" -" orq %%rax, %%rdx\n" /* hold |= *((uint *)in)++ << bits */ - -".L_get_length_code:\n" -" andq %%rdx, %%r8\n" /* r8 &= hold */ -" movl (%%rbp,%%r8,4), %%eax\n" /* eax = lcode[hold & lmask] */ - -" movb %%ah, %%cl\n" /* cl = this.bits */ -" subb %%ah, %%bl\n" /* bits -= this.bits */ -" shrq %%cl, %%rdx\n" /* hold >>= this.bits */ - -" testb %%al, %%al\n" -" jnz .L_test_for_length_base\n" /* if (op != 0) 45.7% */ - -" movq %%r12, %%r8\n" /* r8 = lmask */ -" shrl $16, %%eax\n" /* output this.val char */ -" stosb\n" - -".L_get_length_code_one_time:\n" -" andq %%rdx, %%r8\n" /* r8 &= hold */ -" movl (%%rbp,%%r8,4), %%eax\n" /* eax = lcode[hold & lmask] */ - -".L_dolen:\n" -" movb %%ah, %%cl\n" /* cl = this.bits */ -" subb %%ah, %%bl\n" /* bits -= this.bits */ -" shrq %%cl, %%rdx\n" /* hold >>= this.bits */ - -" testb %%al, %%al\n" -" jnz .L_test_for_length_base\n" /* if (op != 0) 45.7% */ - -" shrl $16, %%eax\n" /* output this.val char */ -" stosb\n" -" jmp .L_while_test\n" - -".align 32,0x90\n" -".L_test_for_length_base:\n" -" movl %%eax, %%r14d\n" /* len = this */ -" shrl $16, %%r14d\n" /* len = this.val */ -" movb %%al, %%cl\n" - -" testb $16, %%al\n" -" jz .L_test_for_second_level_length\n" /* if ((op & 16) == 0) 8% */ -" andb $15, %%cl\n" /* op &= 15 */ -" jz .L_decode_distance\n" /* if (!op) */ - -".L_add_bits_to_len:\n" -" subb %%cl, %%bl\n" -" xorl %%eax, %%eax\n" -" incl %%eax\n" -" shll %%cl, %%eax\n" -" decl %%eax\n" -" andl %%edx, %%eax\n" /* eax &= hold */ -" shrq %%cl, %%rdx\n" -" addl %%eax, %%r14d\n" /* len += hold & mask[op] */ - -".L_decode_distance:\n" -" movq %%r13, %%r8\n" /* r8 = dmask */ -" cmpb $32, %%bl\n" -" ja .L_get_distance_code\n" /* if (32 < bits) */ - -" lodsl\n" /* eax = *(uint *)in++ */ -" movb %%bl, %%cl\n" /* cl = bits, needs it for shifting */ -" addb $32, %%bl\n" /* bits += 32 */ -" shlq %%cl, %%rax\n" -" orq %%rax, %%rdx\n" /* hold |= *((uint *)in)++ << bits */ - -".L_get_distance_code:\n" -" andq %%rdx, %%r8\n" /* r8 &= hold */ -" movl (%%r11,%%r8,4), %%eax\n" /* eax = dcode[hold & dmask] */ - -".L_dodist:\n" -" movl %%eax, %%r15d\n" /* dist = this */ -" shrl $16, %%r15d\n" /* dist = this.val */ -" movb %%ah, %%cl\n" -" subb %%ah, %%bl\n" /* bits -= this.bits */ -" shrq %%cl, %%rdx\n" /* hold >>= this.bits */ -" movb %%al, %%cl\n" /* cl = this.op */ - -" testb $16, %%al\n" /* if ((op & 16) == 0) */ -" jz .L_test_for_second_level_dist\n" -" andb $15, %%cl\n" /* op &= 15 */ -" jz .L_check_dist_one\n" - -".L_add_bits_to_dist:\n" -" subb %%cl, %%bl\n" -" xorl %%eax, %%eax\n" -" incl %%eax\n" -" shll %%cl, %%eax\n" -" decl %%eax\n" /* (1 << op) - 1 */ -" andl %%edx, %%eax\n" /* eax &= hold */ -" shrq %%cl, %%rdx\n" -" addl %%eax, %%r15d\n" /* dist += hold & ((1 << op) - 1) */ - -".L_check_window:\n" -" movq %%rsi, %%r8\n" /* save in so from can use it's reg */ -" movq %%rdi, %%rax\n" -" subq 40(%%rsp), %%rax\n" /* nbytes = out - beg */ - -" cmpl %%r15d, %%eax\n" -" jb .L_clip_window\n" /* if (dist > nbytes) 4.2% */ - -" movl %%r14d, %%ecx\n" /* ecx = len */ -" movq %%rdi, %%rsi\n" -" subq %%r15, %%rsi\n" /* from = out - dist */ - -" sarl %%ecx\n" -" jnc .L_copy_two\n" /* if len % 2 == 0 */ - -" rep movsw\n" -" movb (%%rsi), %%al\n" -" movb %%al, (%%rdi)\n" -" incq %%rdi\n" - -" movq %%r8, %%rsi\n" /* move in back to %rsi, toss from */ -" jmp .L_while_test\n" - -".L_copy_two:\n" -" rep movsw\n" -" movq %%r8, %%rsi\n" /* move in back to %rsi, toss from */ -" jmp .L_while_test\n" - -".align 32,0x90\n" -".L_check_dist_one:\n" -" cmpl $1, %%r15d\n" /* if dist 1, is a memset */ -" jne .L_check_window\n" -" cmpq %%rdi, 40(%%rsp)\n" /* if out == beg, outside window */ -" je .L_check_window\n" - -" movl %%r14d, %%ecx\n" /* ecx = len */ -" movb -1(%%rdi), %%al\n" -" movb %%al, %%ah\n" - -" sarl %%ecx\n" -" jnc .L_set_two\n" -" movb %%al, (%%rdi)\n" -" incq %%rdi\n" - -".L_set_two:\n" -" rep stosw\n" -" jmp .L_while_test\n" - -".align 32,0x90\n" -".L_test_for_second_level_length:\n" -" testb $64, %%al\n" -" jnz .L_test_for_end_of_block\n" /* if ((op & 64) != 0) */ - -" xorl %%eax, %%eax\n" -" incl %%eax\n" -" shll %%cl, %%eax\n" -" decl %%eax\n" -" andl %%edx, %%eax\n" /* eax &= hold */ -" addl %%r14d, %%eax\n" /* eax += len */ -" movl (%%rbp,%%rax,4), %%eax\n" /* eax = lcode[val+(hold&mask[op])]*/ -" jmp .L_dolen\n" - -".align 32,0x90\n" -".L_test_for_second_level_dist:\n" -" testb $64, %%al\n" -" jnz .L_invalid_distance_code\n" /* if ((op & 64) != 0) */ - -" xorl %%eax, %%eax\n" -" incl %%eax\n" -" shll %%cl, %%eax\n" -" decl %%eax\n" -" andl %%edx, %%eax\n" /* eax &= hold */ -" addl %%r15d, %%eax\n" /* eax += dist */ -" movl (%%r11,%%rax,4), %%eax\n" /* eax = dcode[val+(hold&mask[op])]*/ -" jmp .L_dodist\n" - -".align 32,0x90\n" -".L_clip_window:\n" -" movl %%eax, %%ecx\n" /* ecx = nbytes */ -" movl 92(%%rsp), %%eax\n" /* eax = wsize, prepare for dist cmp */ -" negl %%ecx\n" /* nbytes = -nbytes */ - -" cmpl %%r15d, %%eax\n" -" jb .L_invalid_distance_too_far\n" /* if (dist > wsize) */ - -" addl %%r15d, %%ecx\n" /* nbytes = dist - nbytes */ -" cmpl $0, 96(%%rsp)\n" -" jne .L_wrap_around_window\n" /* if (write != 0) */ - -" movq 56(%%rsp), %%rsi\n" /* from = window */ -" subl %%ecx, %%eax\n" /* eax -= nbytes */ -" addq %%rax, %%rsi\n" /* from += wsize - nbytes */ - -" movl %%r14d, %%eax\n" /* eax = len */ -" cmpl %%ecx, %%r14d\n" -" jbe .L_do_copy\n" /* if (nbytes >= len) */ - -" subl %%ecx, %%eax\n" /* eax -= nbytes */ -" rep movsb\n" -" movq %%rdi, %%rsi\n" -" subq %%r15, %%rsi\n" /* from = &out[ -dist ] */ -" jmp .L_do_copy\n" - -".align 32,0x90\n" -".L_wrap_around_window:\n" -" movl 96(%%rsp), %%eax\n" /* eax = write */ -" cmpl %%eax, %%ecx\n" -" jbe .L_contiguous_in_window\n" /* if (write >= nbytes) */ - -" movl 92(%%rsp), %%esi\n" /* from = wsize */ -" addq 56(%%rsp), %%rsi\n" /* from += window */ -" addq %%rax, %%rsi\n" /* from += write */ -" subq %%rcx, %%rsi\n" /* from -= nbytes */ -" subl %%eax, %%ecx\n" /* nbytes -= write */ - -" movl %%r14d, %%eax\n" /* eax = len */ -" cmpl %%ecx, %%eax\n" -" jbe .L_do_copy\n" /* if (nbytes >= len) */ - -" subl %%ecx, %%eax\n" /* len -= nbytes */ -" rep movsb\n" -" movq 56(%%rsp), %%rsi\n" /* from = window */ -" movl 96(%%rsp), %%ecx\n" /* nbytes = write */ -" cmpl %%ecx, %%eax\n" -" jbe .L_do_copy\n" /* if (nbytes >= len) */ - -" subl %%ecx, %%eax\n" /* len -= nbytes */ -" rep movsb\n" -" movq %%rdi, %%rsi\n" -" subq %%r15, %%rsi\n" /* from = out - dist */ -" jmp .L_do_copy\n" - -".align 32,0x90\n" -".L_contiguous_in_window:\n" -" movq 56(%%rsp), %%rsi\n" /* rsi = window */ -" addq %%rax, %%rsi\n" -" subq %%rcx, %%rsi\n" /* from += write - nbytes */ - -" movl %%r14d, %%eax\n" /* eax = len */ -" cmpl %%ecx, %%eax\n" -" jbe .L_do_copy\n" /* if (nbytes >= len) */ - -" subl %%ecx, %%eax\n" /* len -= nbytes */ -" rep movsb\n" -" movq %%rdi, %%rsi\n" -" subq %%r15, %%rsi\n" /* from = out - dist */ -" jmp .L_do_copy\n" /* if (nbytes >= len) */ - -".align 32,0x90\n" -".L_do_copy:\n" -" movl %%eax, %%ecx\n" /* ecx = len */ -" rep movsb\n" - -" movq %%r8, %%rsi\n" /* move in back to %esi, toss from */ -" jmp .L_while_test\n" - -".L_test_for_end_of_block:\n" -" testb $32, %%al\n" -" jz .L_invalid_literal_length_code\n" -" movl $1, 116(%%rsp)\n" -" jmp .L_break_loop_with_status\n" - -".L_invalid_literal_length_code:\n" -" movl $2, 116(%%rsp)\n" -" jmp .L_break_loop_with_status\n" - -".L_invalid_distance_code:\n" -" movl $3, 116(%%rsp)\n" -" jmp .L_break_loop_with_status\n" - -".L_invalid_distance_too_far:\n" -" movl $4, 116(%%rsp)\n" -" jmp .L_break_loop_with_status\n" - -".L_break_loop:\n" -" movl $0, 116(%%rsp)\n" - -".L_break_loop_with_status:\n" -/* put in, out, bits, and hold back into ar and pop esp */ -" movq %%rsi, 16(%%rsp)\n" /* in */ -" movq %%rdi, 32(%%rsp)\n" /* out */ -" movl %%ebx, 88(%%rsp)\n" /* bits */ -" movq %%rdx, 80(%%rsp)\n" /* hold */ -" movq (%%rsp), %%rax\n" /* restore rbp and rsp */ -" movq 8(%%rsp), %%rbp\n" -" movq %%rax, %%rsp\n" - : - : "m" (ar) - : "memory", "%rax", "%rbx", "%rcx", "%rdx", "%rsi", "%rdi", - "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15" - ); -#elif ( defined( __GNUC__ ) || defined( __ICC ) ) && defined( __i386 ) - __asm__ __volatile__ ( -" leal %0, %%eax\n" -" movl %%esp, (%%eax)\n" /* save esp, ebp */ -" movl %%ebp, 4(%%eax)\n" -" movl %%eax, %%esp\n" -" movl 8(%%esp), %%esi\n" /* esi = in */ -" movl 16(%%esp), %%edi\n" /* edi = out */ -" movl 40(%%esp), %%edx\n" /* edx = hold */ -" movl 44(%%esp), %%ebx\n" /* ebx = bits */ -" movl 32(%%esp), %%ebp\n" /* ebp = lcode */ - -" cld\n" -" jmp .L_do_loop\n" - -".align 32,0x90\n" -".L_while_test:\n" -" cmpl %%edi, 24(%%esp)\n" /* out < end */ -" jbe .L_break_loop\n" -" cmpl %%esi, 12(%%esp)\n" /* in < last */ -" jbe .L_break_loop\n" - -".L_do_loop:\n" -" cmpb $15, %%bl\n" -" ja .L_get_length_code\n" /* if (15 < bits) */ - -" xorl %%eax, %%eax\n" -" lodsw\n" /* al = *(ushort *)in++ */ -" movb %%bl, %%cl\n" /* cl = bits, needs it for shifting */ -" addb $16, %%bl\n" /* bits += 16 */ -" shll %%cl, %%eax\n" -" orl %%eax, %%edx\n" /* hold |= *((ushort *)in)++ << bits */ - -".L_get_length_code:\n" -" movl 56(%%esp), %%eax\n" /* eax = lmask */ -" andl %%edx, %%eax\n" /* eax &= hold */ -" movl (%%ebp,%%eax,4), %%eax\n" /* eax = lcode[hold & lmask] */ - -".L_dolen:\n" -" movb %%ah, %%cl\n" /* cl = this.bits */ -" subb %%ah, %%bl\n" /* bits -= this.bits */ -" shrl %%cl, %%edx\n" /* hold >>= this.bits */ - -" testb %%al, %%al\n" -" jnz .L_test_for_length_base\n" /* if (op != 0) 45.7% */ - -" shrl $16, %%eax\n" /* output this.val char */ -" stosb\n" -" jmp .L_while_test\n" - -".align 32,0x90\n" -".L_test_for_length_base:\n" -" movl %%eax, %%ecx\n" /* len = this */ -" shrl $16, %%ecx\n" /* len = this.val */ -" movl %%ecx, 64(%%esp)\n" /* save len */ -" movb %%al, %%cl\n" - -" testb $16, %%al\n" -" jz .L_test_for_second_level_length\n" /* if ((op & 16) == 0) 8% */ -" andb $15, %%cl\n" /* op &= 15 */ -" jz .L_decode_distance\n" /* if (!op) */ -" cmpb %%cl, %%bl\n" -" jae .L_add_bits_to_len\n" /* if (op <= bits) */ - -" movb %%cl, %%ch\n" /* stash op in ch, freeing cl */ -" xorl %%eax, %%eax\n" -" lodsw\n" /* al = *(ushort *)in++ */ -" movb %%bl, %%cl\n" /* cl = bits, needs it for shifting */ -" addb $16, %%bl\n" /* bits += 16 */ -" shll %%cl, %%eax\n" -" orl %%eax, %%edx\n" /* hold |= *((ushort *)in)++ << bits */ -" movb %%ch, %%cl\n" /* move op back to ecx */ - -".L_add_bits_to_len:\n" -" subb %%cl, %%bl\n" -" xorl %%eax, %%eax\n" -" incl %%eax\n" -" shll %%cl, %%eax\n" -" decl %%eax\n" -" andl %%edx, %%eax\n" /* eax &= hold */ -" shrl %%cl, %%edx\n" -" addl %%eax, 64(%%esp)\n" /* len += hold & mask[op] */ - -".L_decode_distance:\n" -" cmpb $15, %%bl\n" -" ja .L_get_distance_code\n" /* if (15 < bits) */ - -" xorl %%eax, %%eax\n" -" lodsw\n" /* al = *(ushort *)in++ */ -" movb %%bl, %%cl\n" /* cl = bits, needs it for shifting */ -" addb $16, %%bl\n" /* bits += 16 */ -" shll %%cl, %%eax\n" -" orl %%eax, %%edx\n" /* hold |= *((ushort *)in)++ << bits */ - -".L_get_distance_code:\n" -" movl 60(%%esp), %%eax\n" /* eax = dmask */ -" movl 36(%%esp), %%ecx\n" /* ecx = dcode */ -" andl %%edx, %%eax\n" /* eax &= hold */ -" movl (%%ecx,%%eax,4), %%eax\n"/* eax = dcode[hold & dmask] */ - -".L_dodist:\n" -" movl %%eax, %%ebp\n" /* dist = this */ -" shrl $16, %%ebp\n" /* dist = this.val */ -" movb %%ah, %%cl\n" -" subb %%ah, %%bl\n" /* bits -= this.bits */ -" shrl %%cl, %%edx\n" /* hold >>= this.bits */ -" movb %%al, %%cl\n" /* cl = this.op */ - -" testb $16, %%al\n" /* if ((op & 16) == 0) */ -" jz .L_test_for_second_level_dist\n" -" andb $15, %%cl\n" /* op &= 15 */ -" jz .L_check_dist_one\n" -" cmpb %%cl, %%bl\n" -" jae .L_add_bits_to_dist\n" /* if (op <= bits) 97.6% */ - -" movb %%cl, %%ch\n" /* stash op in ch, freeing cl */ -" xorl %%eax, %%eax\n" -" lodsw\n" /* al = *(ushort *)in++ */ -" movb %%bl, %%cl\n" /* cl = bits, needs it for shifting */ -" addb $16, %%bl\n" /* bits += 16 */ -" shll %%cl, %%eax\n" -" orl %%eax, %%edx\n" /* hold |= *((ushort *)in)++ << bits */ -" movb %%ch, %%cl\n" /* move op back to ecx */ - -".L_add_bits_to_dist:\n" -" subb %%cl, %%bl\n" -" xorl %%eax, %%eax\n" -" incl %%eax\n" -" shll %%cl, %%eax\n" -" decl %%eax\n" /* (1 << op) - 1 */ -" andl %%edx, %%eax\n" /* eax &= hold */ -" shrl %%cl, %%edx\n" -" addl %%eax, %%ebp\n" /* dist += hold & ((1 << op) - 1) */ - -".L_check_window:\n" -" movl %%esi, 8(%%esp)\n" /* save in so from can use it's reg */ -" movl %%edi, %%eax\n" -" subl 20(%%esp), %%eax\n" /* nbytes = out - beg */ - -" cmpl %%ebp, %%eax\n" -" jb .L_clip_window\n" /* if (dist > nbytes) 4.2% */ - -" movl 64(%%esp), %%ecx\n" /* ecx = len */ -" movl %%edi, %%esi\n" -" subl %%ebp, %%esi\n" /* from = out - dist */ - -" sarl %%ecx\n" -" jnc .L_copy_two\n" /* if len % 2 == 0 */ - -" rep movsw\n" -" movb (%%esi), %%al\n" -" movb %%al, (%%edi)\n" -" incl %%edi\n" - -" movl 8(%%esp), %%esi\n" /* move in back to %esi, toss from */ -" movl 32(%%esp), %%ebp\n" /* ebp = lcode */ -" jmp .L_while_test\n" - -".L_copy_two:\n" -" rep movsw\n" -" movl 8(%%esp), %%esi\n" /* move in back to %esi, toss from */ -" movl 32(%%esp), %%ebp\n" /* ebp = lcode */ -" jmp .L_while_test\n" - -".align 32,0x90\n" -".L_check_dist_one:\n" -" cmpl $1, %%ebp\n" /* if dist 1, is a memset */ -" jne .L_check_window\n" -" cmpl %%edi, 20(%%esp)\n" -" je .L_check_window\n" /* out == beg, if outside window */ - -" movl 64(%%esp), %%ecx\n" /* ecx = len */ -" movb -1(%%edi), %%al\n" -" movb %%al, %%ah\n" - -" sarl %%ecx\n" -" jnc .L_set_two\n" -" movb %%al, (%%edi)\n" -" incl %%edi\n" - -".L_set_two:\n" -" rep stosw\n" -" movl 32(%%esp), %%ebp\n" /* ebp = lcode */ -" jmp .L_while_test\n" - -".align 32,0x90\n" -".L_test_for_second_level_length:\n" -" testb $64, %%al\n" -" jnz .L_test_for_end_of_block\n" /* if ((op & 64) != 0) */ - -" xorl %%eax, %%eax\n" -" incl %%eax\n" -" shll %%cl, %%eax\n" -" decl %%eax\n" -" andl %%edx, %%eax\n" /* eax &= hold */ -" addl 64(%%esp), %%eax\n" /* eax += len */ -" movl (%%ebp,%%eax,4), %%eax\n" /* eax = lcode[val+(hold&mask[op])]*/ -" jmp .L_dolen\n" - -".align 32,0x90\n" -".L_test_for_second_level_dist:\n" -" testb $64, %%al\n" -" jnz .L_invalid_distance_code\n" /* if ((op & 64) != 0) */ - -" xorl %%eax, %%eax\n" -" incl %%eax\n" -" shll %%cl, %%eax\n" -" decl %%eax\n" -" andl %%edx, %%eax\n" /* eax &= hold */ -" addl %%ebp, %%eax\n" /* eax += dist */ -" movl 36(%%esp), %%ecx\n" /* ecx = dcode */ -" movl (%%ecx,%%eax,4), %%eax\n" /* eax = dcode[val+(hold&mask[op])]*/ -" jmp .L_dodist\n" - -".align 32,0x90\n" -".L_clip_window:\n" -" movl %%eax, %%ecx\n" -" movl 48(%%esp), %%eax\n" /* eax = wsize */ -" negl %%ecx\n" /* nbytes = -nbytes */ -" movl 28(%%esp), %%esi\n" /* from = window */ - -" cmpl %%ebp, %%eax\n" -" jb .L_invalid_distance_too_far\n" /* if (dist > wsize) */ - -" addl %%ebp, %%ecx\n" /* nbytes = dist - nbytes */ -" cmpl $0, 52(%%esp)\n" -" jne .L_wrap_around_window\n" /* if (write != 0) */ - -" subl %%ecx, %%eax\n" -" addl %%eax, %%esi\n" /* from += wsize - nbytes */ - -" movl 64(%%esp), %%eax\n" /* eax = len */ -" cmpl %%ecx, %%eax\n" -" jbe .L_do_copy\n" /* if (nbytes >= len) */ - -" subl %%ecx, %%eax\n" /* len -= nbytes */ -" rep movsb\n" -" movl %%edi, %%esi\n" -" subl %%ebp, %%esi\n" /* from = out - dist */ -" jmp .L_do_copy\n" - -".align 32,0x90\n" -".L_wrap_around_window:\n" -" movl 52(%%esp), %%eax\n" /* eax = write */ -" cmpl %%eax, %%ecx\n" -" jbe .L_contiguous_in_window\n" /* if (write >= nbytes) */ - -" addl 48(%%esp), %%esi\n" /* from += wsize */ -" addl %%eax, %%esi\n" /* from += write */ -" subl %%ecx, %%esi\n" /* from -= nbytes */ -" subl %%eax, %%ecx\n" /* nbytes -= write */ - -" movl 64(%%esp), %%eax\n" /* eax = len */ -" cmpl %%ecx, %%eax\n" -" jbe .L_do_copy\n" /* if (nbytes >= len) */ - -" subl %%ecx, %%eax\n" /* len -= nbytes */ -" rep movsb\n" -" movl 28(%%esp), %%esi\n" /* from = window */ -" movl 52(%%esp), %%ecx\n" /* nbytes = write */ -" cmpl %%ecx, %%eax\n" -" jbe .L_do_copy\n" /* if (nbytes >= len) */ - -" subl %%ecx, %%eax\n" /* len -= nbytes */ -" rep movsb\n" -" movl %%edi, %%esi\n" -" subl %%ebp, %%esi\n" /* from = out - dist */ -" jmp .L_do_copy\n" - -".align 32,0x90\n" -".L_contiguous_in_window:\n" -" addl %%eax, %%esi\n" -" subl %%ecx, %%esi\n" /* from += write - nbytes */ - -" movl 64(%%esp), %%eax\n" /* eax = len */ -" cmpl %%ecx, %%eax\n" -" jbe .L_do_copy\n" /* if (nbytes >= len) */ - -" subl %%ecx, %%eax\n" /* len -= nbytes */ -" rep movsb\n" -" movl %%edi, %%esi\n" -" subl %%ebp, %%esi\n" /* from = out - dist */ -" jmp .L_do_copy\n" /* if (nbytes >= len) */ - -".align 32,0x90\n" -".L_do_copy:\n" -" movl %%eax, %%ecx\n" -" rep movsb\n" - -" movl 8(%%esp), %%esi\n" /* move in back to %esi, toss from */ -" movl 32(%%esp), %%ebp\n" /* ebp = lcode */ -" jmp .L_while_test\n" - -".L_test_for_end_of_block:\n" -" testb $32, %%al\n" -" jz .L_invalid_literal_length_code\n" -" movl $1, 72(%%esp)\n" -" jmp .L_break_loop_with_status\n" - -".L_invalid_literal_length_code:\n" -" movl $2, 72(%%esp)\n" -" jmp .L_break_loop_with_status\n" - -".L_invalid_distance_code:\n" -" movl $3, 72(%%esp)\n" -" jmp .L_break_loop_with_status\n" - -".L_invalid_distance_too_far:\n" -" movl 8(%%esp), %%esi\n" -" movl $4, 72(%%esp)\n" -" jmp .L_break_loop_with_status\n" - -".L_break_loop:\n" -" movl $0, 72(%%esp)\n" - -".L_break_loop_with_status:\n" -/* put in, out, bits, and hold back into ar and pop esp */ -" movl %%esi, 8(%%esp)\n" /* save in */ -" movl %%edi, 16(%%esp)\n" /* save out */ -" movl %%ebx, 44(%%esp)\n" /* save bits */ -" movl %%edx, 40(%%esp)\n" /* save hold */ -" movl 4(%%esp), %%ebp\n" /* restore esp, ebp */ -" movl (%%esp), %%esp\n" - : - : "m" (ar) - : "memory", "%eax", "%ebx", "%ecx", "%edx", "%esi", "%edi" - ); -#elif defined( _MSC_VER ) && ! defined( _M_AMD64 ) - __asm { - lea eax, ar - mov [eax], esp /* save esp, ebp */ - mov [eax+4], ebp - mov esp, eax - mov esi, [esp+8] /* esi = in */ - mov edi, [esp+16] /* edi = out */ - mov edx, [esp+40] /* edx = hold */ - mov ebx, [esp+44] /* ebx = bits */ - mov ebp, [esp+32] /* ebp = lcode */ - - cld - jmp L_do_loop - -ALIGN 4 -L_while_test: - cmp [esp+24], edi - jbe L_break_loop - cmp [esp+12], esi - jbe L_break_loop - -L_do_loop: - cmp bl, 15 - ja L_get_length_code /* if (15 < bits) */ - - xor eax, eax - lodsw /* al = *(ushort *)in++ */ - mov cl, bl /* cl = bits, needs it for shifting */ - add bl, 16 /* bits += 16 */ - shl eax, cl - or edx, eax /* hold |= *((ushort *)in)++ << bits */ - -L_get_length_code: - mov eax, [esp+56] /* eax = lmask */ - and eax, edx /* eax &= hold */ - mov eax, [ebp+eax*4] /* eax = lcode[hold & lmask] */ - -L_dolen: - mov cl, ah /* cl = this.bits */ - sub bl, ah /* bits -= this.bits */ - shr edx, cl /* hold >>= this.bits */ - - test al, al - jnz L_test_for_length_base /* if (op != 0) 45.7% */ - - shr eax, 16 /* output this.val char */ - stosb - jmp L_while_test - -ALIGN 4 -L_test_for_length_base: - mov ecx, eax /* len = this */ - shr ecx, 16 /* len = this.val */ - mov [esp+64], ecx /* save len */ - mov cl, al - - test al, 16 - jz L_test_for_second_level_length /* if ((op & 16) == 0) 8% */ - and cl, 15 /* op &= 15 */ - jz L_decode_distance /* if (!op) */ - cmp bl, cl - jae L_add_bits_to_len /* if (op <= bits) */ - - mov ch, cl /* stash op in ch, freeing cl */ - xor eax, eax - lodsw /* al = *(ushort *)in++ */ - mov cl, bl /* cl = bits, needs it for shifting */ - add bl, 16 /* bits += 16 */ - shl eax, cl - or edx, eax /* hold |= *((ushort *)in)++ << bits */ - mov cl, ch /* move op back to ecx */ - -L_add_bits_to_len: - sub bl, cl - xor eax, eax - inc eax - shl eax, cl - dec eax - and eax, edx /* eax &= hold */ - shr edx, cl - add [esp+64], eax /* len += hold & mask[op] */ - -L_decode_distance: - cmp bl, 15 - ja L_get_distance_code /* if (15 < bits) */ - - xor eax, eax - lodsw /* al = *(ushort *)in++ */ - mov cl, bl /* cl = bits, needs it for shifting */ - add bl, 16 /* bits += 16 */ - shl eax, cl - or edx, eax /* hold |= *((ushort *)in)++ << bits */ - -L_get_distance_code: - mov eax, [esp+60] /* eax = dmask */ - mov ecx, [esp+36] /* ecx = dcode */ - and eax, edx /* eax &= hold */ - mov eax, [ecx+eax*4]/* eax = dcode[hold & dmask] */ - -L_dodist: - mov ebp, eax /* dist = this */ - shr ebp, 16 /* dist = this.val */ - mov cl, ah - sub bl, ah /* bits -= this.bits */ - shr edx, cl /* hold >>= this.bits */ - mov cl, al /* cl = this.op */ - - test al, 16 /* if ((op & 16) == 0) */ - jz L_test_for_second_level_dist - and cl, 15 /* op &= 15 */ - jz L_check_dist_one - cmp bl, cl - jae L_add_bits_to_dist /* if (op <= bits) 97.6% */ - - mov ch, cl /* stash op in ch, freeing cl */ - xor eax, eax - lodsw /* al = *(ushort *)in++ */ - mov cl, bl /* cl = bits, needs it for shifting */ - add bl, 16 /* bits += 16 */ - shl eax, cl - or edx, eax /* hold |= *((ushort *)in)++ << bits */ - mov cl, ch /* move op back to ecx */ - -L_add_bits_to_dist: - sub bl, cl - xor eax, eax - inc eax - shl eax, cl - dec eax /* (1 << op) - 1 */ - and eax, edx /* eax &= hold */ - shr edx, cl - add ebp, eax /* dist += hold & ((1 << op) - 1) */ - -L_check_window: - mov [esp+8], esi /* save in so from can use it's reg */ - mov eax, edi - sub eax, [esp+20] /* nbytes = out - beg */ - - cmp eax, ebp - jb L_clip_window /* if (dist > nbytes) 4.2% */ - - mov ecx, [esp+64] /* ecx = len */ - mov esi, edi - sub esi, ebp /* from = out - dist */ - - sar ecx, 1 - jnc L_copy_two - - rep movsw - mov al, [esi] - mov [edi], al - inc edi - - mov esi, [esp+8] /* move in back to %esi, toss from */ - mov ebp, [esp+32] /* ebp = lcode */ - jmp L_while_test - -L_copy_two: - rep movsw - mov esi, [esp+8] /* move in back to %esi, toss from */ - mov ebp, [esp+32] /* ebp = lcode */ - jmp L_while_test - -ALIGN 4 -L_check_dist_one: - cmp ebp, 1 /* if dist 1, is a memset */ - jne L_check_window - cmp [esp+20], edi - je L_check_window /* out == beg, if outside window */ - - mov ecx, [esp+64] /* ecx = len */ - mov al, [edi-1] - mov ah, al - - sar ecx, 1 - jnc L_set_two - mov [edi], al /* memset out with from[-1] */ - inc edi - -L_set_two: - rep stosw - mov ebp, [esp+32] /* ebp = lcode */ - jmp L_while_test - -ALIGN 4 -L_test_for_second_level_length: - test al, 64 - jnz L_test_for_end_of_block /* if ((op & 64) != 0) */ - - xor eax, eax - inc eax - shl eax, cl - dec eax - and eax, edx /* eax &= hold */ - add eax, [esp+64] /* eax += len */ - mov eax, [ebp+eax*4] /* eax = lcode[val+(hold&mask[op])]*/ - jmp L_dolen - -ALIGN 4 -L_test_for_second_level_dist: - test al, 64 - jnz L_invalid_distance_code /* if ((op & 64) != 0) */ - - xor eax, eax - inc eax - shl eax, cl - dec eax - and eax, edx /* eax &= hold */ - add eax, ebp /* eax += dist */ - mov ecx, [esp+36] /* ecx = dcode */ - mov eax, [ecx+eax*4] /* eax = dcode[val+(hold&mask[op])]*/ - jmp L_dodist - -ALIGN 4 -L_clip_window: - mov ecx, eax - mov eax, [esp+48] /* eax = wsize */ - neg ecx /* nbytes = -nbytes */ - mov esi, [esp+28] /* from = window */ - - cmp eax, ebp - jb L_invalid_distance_too_far /* if (dist > wsize) */ - - add ecx, ebp /* nbytes = dist - nbytes */ - cmp dword ptr [esp+52], 0 - jne L_wrap_around_window /* if (write != 0) */ - - sub eax, ecx - add esi, eax /* from += wsize - nbytes */ - - mov eax, [esp+64] /* eax = len */ - cmp eax, ecx - jbe L_do_copy /* if (nbytes >= len) */ - - sub eax, ecx /* len -= nbytes */ - rep movsb - mov esi, edi - sub esi, ebp /* from = out - dist */ - jmp L_do_copy - -ALIGN 4 -L_wrap_around_window: - mov eax, [esp+52] /* eax = write */ - cmp ecx, eax - jbe L_contiguous_in_window /* if (write >= nbytes) */ - - add esi, [esp+48] /* from += wsize */ - add esi, eax /* from += write */ - sub esi, ecx /* from -= nbytes */ - sub ecx, eax /* nbytes -= write */ - - mov eax, [esp+64] /* eax = len */ - cmp eax, ecx - jbe L_do_copy /* if (nbytes >= len) */ - - sub eax, ecx /* len -= nbytes */ - rep movsb - mov esi, [esp+28] /* from = window */ - mov ecx, [esp+52] /* nbytes = write */ - cmp eax, ecx - jbe L_do_copy /* if (nbytes >= len) */ - - sub eax, ecx /* len -= nbytes */ - rep movsb - mov esi, edi - sub esi, ebp /* from = out - dist */ - jmp L_do_copy - -ALIGN 4 -L_contiguous_in_window: - add esi, eax - sub esi, ecx /* from += write - nbytes */ - - mov eax, [esp+64] /* eax = len */ - cmp eax, ecx - jbe L_do_copy /* if (nbytes >= len) */ - - sub eax, ecx /* len -= nbytes */ - rep movsb - mov esi, edi - sub esi, ebp /* from = out - dist */ - jmp L_do_copy - -ALIGN 4 -L_do_copy: - mov ecx, eax - rep movsb - - mov esi, [esp+8] /* move in back to %esi, toss from */ - mov ebp, [esp+32] /* ebp = lcode */ - jmp L_while_test - -L_test_for_end_of_block: - test al, 32 - jz L_invalid_literal_length_code - mov dword ptr [esp+72], 1 - jmp L_break_loop_with_status - -L_invalid_literal_length_code: - mov dword ptr [esp+72], 2 - jmp L_break_loop_with_status - -L_invalid_distance_code: - mov dword ptr [esp+72], 3 - jmp L_break_loop_with_status - -L_invalid_distance_too_far: - mov esi, [esp+4] - mov dword ptr [esp+72], 4 - jmp L_break_loop_with_status - -L_break_loop: - mov dword ptr [esp+72], 0 - -L_break_loop_with_status: -/* put in, out, bits, and hold back into ar and pop esp */ - mov [esp+8], esi /* save in */ - mov [esp+16], edi /* save out */ - mov [esp+44], ebx /* save bits */ - mov [esp+40], edx /* save hold */ - mov ebp, [esp+4] /* restore esp, ebp */ - mov esp, [esp] - } -#else -#error "x86 architecture not defined" -#endif - - if (ar.status > 1) { - if (ar.status == 2) - strm->msg = "invalid literal/length code"; - else if (ar.status == 3) - strm->msg = "invalid distance code"; - else - strm->msg = "invalid distance too far back"; - state->mode = BAD; - } - else if ( ar.status == 1 ) { - state->mode = TYPE; - } - - /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ - ar.len = ar.bits >> 3; - ar.in -= ar.len; - ar.bits -= ar.len << 3; - ar.hold &= (1U << ar.bits) - 1; - - /* update state and return */ - strm->next_in = ar.in; - strm->next_out = ar.out; - strm->avail_in = (unsigned)(ar.in < ar.last ? - PAD_AVAIL_IN + (ar.last - ar.in) : - PAD_AVAIL_IN - (ar.in - ar.last)); - strm->avail_out = (unsigned)(ar.out < ar.end ? - PAD_AVAIL_OUT + (ar.end - ar.out) : - PAD_AVAIL_OUT - (ar.out - ar.end)); - state->hold = ar.hold; - state->bits = ar.bits; - return; -} - diff --git a/platform/win32/msvc/external/zlib/contrib/inflate86/inffast.S b/platform/win32/msvc/external/zlib/contrib/inflate86/inffast.S deleted file mode 100644 index 2245a2905bd..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/inflate86/inffast.S +++ /dev/null @@ -1,1368 +0,0 @@ -/* - * inffast.S is a hand tuned assembler version of: - * - * inffast.c -- fast decoding - * Copyright (C) 1995-2003 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - * - * Copyright (C) 2003 Chris Anderson <christop@charm.net> - * Please use the copyright conditions above. - * - * This version (Jan-23-2003) of inflate_fast was coded and tested under - * GNU/Linux on a pentium 3, using the gcc-3.2 compiler distribution. On that - * machine, I found that gzip style archives decompressed about 20% faster than - * the gcc-3.2 -O3 -fomit-frame-pointer compiled version. Your results will - * depend on how large of a buffer is used for z_stream.next_in & next_out - * (8K-32K worked best for my 256K cpu cache) and how much overhead there is in - * stream processing I/O and crc32/addler32. In my case, this routine used - * 70% of the cpu time and crc32 used 20%. - * - * I am confident that this version will work in the general case, but I have - * not tested a wide variety of datasets or a wide variety of platforms. - * - * Jan-24-2003 -- Added -DUSE_MMX define for slightly faster inflating. - * It should be a runtime flag instead of compile time flag... - * - * Jan-26-2003 -- Added runtime check for MMX support with cpuid instruction. - * With -DUSE_MMX, only MMX code is compiled. With -DNO_MMX, only non-MMX code - * is compiled. Without either option, runtime detection is enabled. Runtime - * detection should work on all modern cpus and the recomended algorithm (flip - * ID bit on eflags and then use the cpuid instruction) is used in many - * multimedia applications. Tested under win2k with gcc-2.95 and gas-2.12 - * distributed with cygwin3. Compiling with gcc-2.95 -c inffast.S -o - * inffast.obj generates a COFF object which can then be linked with MSVC++ - * compiled code. Tested under FreeBSD 4.7 with gcc-2.95. - * - * Jan-28-2003 -- Tested Athlon XP... MMX mode is slower than no MMX (and - * slower than compiler generated code). Adjusted cpuid check to use the MMX - * code only for Pentiums < P4 until I have more data on the P4. Speed - * improvment is only about 15% on the Athlon when compared with code generated - * with MSVC++. Not sure yet, but I think the P4 will also be slower using the - * MMX mode because many of it's x86 ALU instructions execute in .5 cycles and - * have less latency than MMX ops. Added code to buffer the last 11 bytes of - * the input stream since the MMX code grabs bits in chunks of 32, which - * differs from the inffast.c algorithm. I don't think there would have been - * read overruns where a page boundary was crossed (a segfault), but there - * could have been overruns when next_in ends on unaligned memory (unintialized - * memory read). - * - * Mar-13-2003 -- P4 MMX is slightly slower than P4 NO_MMX. I created a C - * version of the non-MMX code so that it doesn't depend on zstrm and zstate - * structure offsets which are hard coded in this file. This was last tested - * with zlib-1.2.0 which is currently in beta testing, newer versions of this - * and inffas86.c can be found at http://www.eetbeetee.com/zlib/ and - * http://www.charm.net/~christop/zlib/ - */ - - -/* - * if you have underscore linking problems (_inflate_fast undefined), try - * using -DGAS_COFF - */ -#if ! defined( GAS_COFF ) && ! defined( GAS_ELF ) - -#if defined( WIN32 ) || defined( __CYGWIN__ ) -#define GAS_COFF /* windows object format */ -#else -#define GAS_ELF -#endif - -#endif /* ! GAS_COFF && ! GAS_ELF */ - - -#if defined( GAS_COFF ) - -/* coff externals have underscores */ -#define inflate_fast _inflate_fast -#define inflate_fast_use_mmx _inflate_fast_use_mmx - -#endif /* GAS_COFF */ - - -.file "inffast.S" - -.globl inflate_fast - -.text -.align 4,0 -.L_invalid_literal_length_code_msg: -.string "invalid literal/length code" - -.align 4,0 -.L_invalid_distance_code_msg: -.string "invalid distance code" - -.align 4,0 -.L_invalid_distance_too_far_msg: -.string "invalid distance too far back" - -#if ! defined( NO_MMX ) -.align 4,0 -.L_mask: /* mask[N] = ( 1 << N ) - 1 */ -.long 0 -.long 1 -.long 3 -.long 7 -.long 15 -.long 31 -.long 63 -.long 127 -.long 255 -.long 511 -.long 1023 -.long 2047 -.long 4095 -.long 8191 -.long 16383 -.long 32767 -.long 65535 -.long 131071 -.long 262143 -.long 524287 -.long 1048575 -.long 2097151 -.long 4194303 -.long 8388607 -.long 16777215 -.long 33554431 -.long 67108863 -.long 134217727 -.long 268435455 -.long 536870911 -.long 1073741823 -.long 2147483647 -.long 4294967295 -#endif /* NO_MMX */ - -.text - -/* - * struct z_stream offsets, in zlib.h - */ -#define next_in_strm 0 /* strm->next_in */ -#define avail_in_strm 4 /* strm->avail_in */ -#define next_out_strm 12 /* strm->next_out */ -#define avail_out_strm 16 /* strm->avail_out */ -#define msg_strm 24 /* strm->msg */ -#define state_strm 28 /* strm->state */ - -/* - * struct inflate_state offsets, in inflate.h - */ -#define mode_state 0 /* state->mode */ -#define wsize_state 32 /* state->wsize */ -#define write_state 40 /* state->write */ -#define window_state 44 /* state->window */ -#define hold_state 48 /* state->hold */ -#define bits_state 52 /* state->bits */ -#define lencode_state 68 /* state->lencode */ -#define distcode_state 72 /* state->distcode */ -#define lenbits_state 76 /* state->lenbits */ -#define distbits_state 80 /* state->distbits */ - -/* - * inflate_fast's activation record - */ -#define local_var_size 64 /* how much local space for vars */ -#define strm_sp 88 /* first arg: z_stream * (local_var_size + 24) */ -#define start_sp 92 /* second arg: unsigned int (local_var_size + 28) */ - -/* - * offsets for local vars on stack - */ -#define out 60 /* unsigned char* */ -#define window 56 /* unsigned char* */ -#define wsize 52 /* unsigned int */ -#define write 48 /* unsigned int */ -#define in 44 /* unsigned char* */ -#define beg 40 /* unsigned char* */ -#define buf 28 /* char[ 12 ] */ -#define len 24 /* unsigned int */ -#define last 20 /* unsigned char* */ -#define end 16 /* unsigned char* */ -#define dcode 12 /* code* */ -#define lcode 8 /* code* */ -#define dmask 4 /* unsigned int */ -#define lmask 0 /* unsigned int */ - -/* - * typedef enum inflate_mode consts, in inflate.h - */ -#define INFLATE_MODE_TYPE 11 /* state->mode flags enum-ed in inflate.h */ -#define INFLATE_MODE_BAD 26 - - -#if ! defined( USE_MMX ) && ! defined( NO_MMX ) - -#define RUN_TIME_MMX - -#define CHECK_MMX 1 -#define DO_USE_MMX 2 -#define DONT_USE_MMX 3 - -.globl inflate_fast_use_mmx - -.data - -.align 4,0 -inflate_fast_use_mmx: /* integer flag for run time control 1=check,2=mmx,3=no */ -.long CHECK_MMX - -#if defined( GAS_ELF ) -/* elf info */ -.type inflate_fast_use_mmx,@object -.size inflate_fast_use_mmx,4 -#endif - -#endif /* RUN_TIME_MMX */ - -#if defined( GAS_COFF ) -/* coff info: scl 2 = extern, type 32 = function */ -.def inflate_fast; .scl 2; .type 32; .endef -#endif - -.text - -.align 32,0x90 -inflate_fast: - pushl %edi - pushl %esi - pushl %ebp - pushl %ebx - pushf /* save eflags (strm_sp, state_sp assumes this is 32 bits) */ - subl $local_var_size, %esp - cld - -#define strm_r %esi -#define state_r %edi - - movl strm_sp(%esp), strm_r - movl state_strm(strm_r), state_r - - /* in = strm->next_in; - * out = strm->next_out; - * last = in + strm->avail_in - 11; - * beg = out - (start - strm->avail_out); - * end = out + (strm->avail_out - 257); - */ - movl avail_in_strm(strm_r), %edx - movl next_in_strm(strm_r), %eax - - addl %eax, %edx /* avail_in += next_in */ - subl $11, %edx /* avail_in -= 11 */ - - movl %eax, in(%esp) - movl %edx, last(%esp) - - movl start_sp(%esp), %ebp - movl avail_out_strm(strm_r), %ecx - movl next_out_strm(strm_r), %ebx - - subl %ecx, %ebp /* start -= avail_out */ - negl %ebp /* start = -start */ - addl %ebx, %ebp /* start += next_out */ - - subl $257, %ecx /* avail_out -= 257 */ - addl %ebx, %ecx /* avail_out += out */ - - movl %ebx, out(%esp) - movl %ebp, beg(%esp) - movl %ecx, end(%esp) - - /* wsize = state->wsize; - * write = state->write; - * window = state->window; - * hold = state->hold; - * bits = state->bits; - * lcode = state->lencode; - * dcode = state->distcode; - * lmask = ( 1 << state->lenbits ) - 1; - * dmask = ( 1 << state->distbits ) - 1; - */ - - movl lencode_state(state_r), %eax - movl distcode_state(state_r), %ecx - - movl %eax, lcode(%esp) - movl %ecx, dcode(%esp) - - movl $1, %eax - movl lenbits_state(state_r), %ecx - shll %cl, %eax - decl %eax - movl %eax, lmask(%esp) - - movl $1, %eax - movl distbits_state(state_r), %ecx - shll %cl, %eax - decl %eax - movl %eax, dmask(%esp) - - movl wsize_state(state_r), %eax - movl write_state(state_r), %ecx - movl window_state(state_r), %edx - - movl %eax, wsize(%esp) - movl %ecx, write(%esp) - movl %edx, window(%esp) - - movl hold_state(state_r), %ebp - movl bits_state(state_r), %ebx - -#undef strm_r -#undef state_r - -#define in_r %esi -#define from_r %esi -#define out_r %edi - - movl in(%esp), in_r - movl last(%esp), %ecx - cmpl in_r, %ecx - ja .L_align_long /* if in < last */ - - addl $11, %ecx /* ecx = &in[ avail_in ] */ - subl in_r, %ecx /* ecx = avail_in */ - movl $12, %eax - subl %ecx, %eax /* eax = 12 - avail_in */ - leal buf(%esp), %edi - rep movsb /* memcpy( buf, in, avail_in ) */ - movl %eax, %ecx - xorl %eax, %eax - rep stosb /* memset( &buf[ avail_in ], 0, 12 - avail_in ) */ - leal buf(%esp), in_r /* in = buf */ - movl in_r, last(%esp) /* last = in, do just one iteration */ - jmp .L_is_aligned - - /* align in_r on long boundary */ -.L_align_long: - testl $3, in_r - jz .L_is_aligned - xorl %eax, %eax - movb (in_r), %al - incl in_r - movl %ebx, %ecx - addl $8, %ebx - shll %cl, %eax - orl %eax, %ebp - jmp .L_align_long - -.L_is_aligned: - movl out(%esp), out_r - -#if defined( NO_MMX ) - jmp .L_do_loop -#endif - -#if defined( USE_MMX ) - jmp .L_init_mmx -#endif - -/*** Runtime MMX check ***/ - -#if defined( RUN_TIME_MMX ) -.L_check_mmx: - cmpl $DO_USE_MMX, inflate_fast_use_mmx - je .L_init_mmx - ja .L_do_loop /* > 2 */ - - pushl %eax - pushl %ebx - pushl %ecx - pushl %edx - pushf - movl (%esp), %eax /* copy eflags to eax */ - xorl $0x200000, (%esp) /* try toggling ID bit of eflags (bit 21) - * to see if cpu supports cpuid... - * ID bit method not supported by NexGen but - * bios may load a cpuid instruction and - * cpuid may be disabled on Cyrix 5-6x86 */ - popf - pushf - popl %edx /* copy new eflags to edx */ - xorl %eax, %edx /* test if ID bit is flipped */ - jz .L_dont_use_mmx /* not flipped if zero */ - xorl %eax, %eax - cpuid - cmpl $0x756e6547, %ebx /* check for GenuineIntel in ebx,ecx,edx */ - jne .L_dont_use_mmx - cmpl $0x6c65746e, %ecx - jne .L_dont_use_mmx - cmpl $0x49656e69, %edx - jne .L_dont_use_mmx - movl $1, %eax - cpuid /* get cpu features */ - shrl $8, %eax - andl $15, %eax - cmpl $6, %eax /* check for Pentium family, is 0xf for P4 */ - jne .L_dont_use_mmx - testl $0x800000, %edx /* test if MMX feature is set (bit 23) */ - jnz .L_use_mmx - jmp .L_dont_use_mmx -.L_use_mmx: - movl $DO_USE_MMX, inflate_fast_use_mmx - jmp .L_check_mmx_pop -.L_dont_use_mmx: - movl $DONT_USE_MMX, inflate_fast_use_mmx -.L_check_mmx_pop: - popl %edx - popl %ecx - popl %ebx - popl %eax - jmp .L_check_mmx -#endif - - -/*** Non-MMX code ***/ - -#if defined ( NO_MMX ) || defined( RUN_TIME_MMX ) - -#define hold_r %ebp -#define bits_r %bl -#define bitslong_r %ebx - -.align 32,0x90 -.L_while_test: - /* while (in < last && out < end) - */ - cmpl out_r, end(%esp) - jbe .L_break_loop /* if (out >= end) */ - - cmpl in_r, last(%esp) - jbe .L_break_loop - -.L_do_loop: - /* regs: %esi = in, %ebp = hold, %bl = bits, %edi = out - * - * do { - * if (bits < 15) { - * hold |= *((unsigned short *)in)++ << bits; - * bits += 16 - * } - * this = lcode[hold & lmask] - */ - cmpb $15, bits_r - ja .L_get_length_code /* if (15 < bits) */ - - xorl %eax, %eax - lodsw /* al = *(ushort *)in++ */ - movb bits_r, %cl /* cl = bits, needs it for shifting */ - addb $16, bits_r /* bits += 16 */ - shll %cl, %eax - orl %eax, hold_r /* hold |= *((ushort *)in)++ << bits */ - -.L_get_length_code: - movl lmask(%esp), %edx /* edx = lmask */ - movl lcode(%esp), %ecx /* ecx = lcode */ - andl hold_r, %edx /* edx &= hold */ - movl (%ecx,%edx,4), %eax /* eax = lcode[hold & lmask] */ - -.L_dolen: - /* regs: %esi = in, %ebp = hold, %bl = bits, %edi = out - * - * dolen: - * bits -= this.bits; - * hold >>= this.bits - */ - movb %ah, %cl /* cl = this.bits */ - subb %ah, bits_r /* bits -= this.bits */ - shrl %cl, hold_r /* hold >>= this.bits */ - - /* check if op is a literal - * if (op == 0) { - * PUP(out) = this.val; - * } - */ - testb %al, %al - jnz .L_test_for_length_base /* if (op != 0) 45.7% */ - - shrl $16, %eax /* output this.val char */ - stosb - jmp .L_while_test - -.L_test_for_length_base: - /* regs: %esi = in, %ebp = hold, %bl = bits, %edi = out, %edx = len - * - * else if (op & 16) { - * len = this.val - * op &= 15 - * if (op) { - * if (op > bits) { - * hold |= *((unsigned short *)in)++ << bits; - * bits += 16 - * } - * len += hold & mask[op]; - * bits -= op; - * hold >>= op; - * } - */ -#define len_r %edx - movl %eax, len_r /* len = this */ - shrl $16, len_r /* len = this.val */ - movb %al, %cl - - testb $16, %al - jz .L_test_for_second_level_length /* if ((op & 16) == 0) 8% */ - andb $15, %cl /* op &= 15 */ - jz .L_save_len /* if (!op) */ - cmpb %cl, bits_r - jae .L_add_bits_to_len /* if (op <= bits) */ - - movb %cl, %ch /* stash op in ch, freeing cl */ - xorl %eax, %eax - lodsw /* al = *(ushort *)in++ */ - movb bits_r, %cl /* cl = bits, needs it for shifting */ - addb $16, bits_r /* bits += 16 */ - shll %cl, %eax - orl %eax, hold_r /* hold |= *((ushort *)in)++ << bits */ - movb %ch, %cl /* move op back to ecx */ - -.L_add_bits_to_len: - movl $1, %eax - shll %cl, %eax - decl %eax - subb %cl, bits_r - andl hold_r, %eax /* eax &= hold */ - shrl %cl, hold_r - addl %eax, len_r /* len += hold & mask[op] */ - -.L_save_len: - movl len_r, len(%esp) /* save len */ -#undef len_r - -.L_decode_distance: - /* regs: %esi = in, %ebp = hold, %bl = bits, %edi = out, %edx = dist - * - * if (bits < 15) { - * hold |= *((unsigned short *)in)++ << bits; - * bits += 16 - * } - * this = dcode[hold & dmask]; - * dodist: - * bits -= this.bits; - * hold >>= this.bits; - * op = this.op; - */ - - cmpb $15, bits_r - ja .L_get_distance_code /* if (15 < bits) */ - - xorl %eax, %eax - lodsw /* al = *(ushort *)in++ */ - movb bits_r, %cl /* cl = bits, needs it for shifting */ - addb $16, bits_r /* bits += 16 */ - shll %cl, %eax - orl %eax, hold_r /* hold |= *((ushort *)in)++ << bits */ - -.L_get_distance_code: - movl dmask(%esp), %edx /* edx = dmask */ - movl dcode(%esp), %ecx /* ecx = dcode */ - andl hold_r, %edx /* edx &= hold */ - movl (%ecx,%edx,4), %eax /* eax = dcode[hold & dmask] */ - -#define dist_r %edx -.L_dodist: - movl %eax, dist_r /* dist = this */ - shrl $16, dist_r /* dist = this.val */ - movb %ah, %cl - subb %ah, bits_r /* bits -= this.bits */ - shrl %cl, hold_r /* hold >>= this.bits */ - - /* if (op & 16) { - * dist = this.val - * op &= 15 - * if (op > bits) { - * hold |= *((unsigned short *)in)++ << bits; - * bits += 16 - * } - * dist += hold & mask[op]; - * bits -= op; - * hold >>= op; - */ - movb %al, %cl /* cl = this.op */ - - testb $16, %al /* if ((op & 16) == 0) */ - jz .L_test_for_second_level_dist - andb $15, %cl /* op &= 15 */ - jz .L_check_dist_one - cmpb %cl, bits_r - jae .L_add_bits_to_dist /* if (op <= bits) 97.6% */ - - movb %cl, %ch /* stash op in ch, freeing cl */ - xorl %eax, %eax - lodsw /* al = *(ushort *)in++ */ - movb bits_r, %cl /* cl = bits, needs it for shifting */ - addb $16, bits_r /* bits += 16 */ - shll %cl, %eax - orl %eax, hold_r /* hold |= *((ushort *)in)++ << bits */ - movb %ch, %cl /* move op back to ecx */ - -.L_add_bits_to_dist: - movl $1, %eax - shll %cl, %eax - decl %eax /* (1 << op) - 1 */ - subb %cl, bits_r - andl hold_r, %eax /* eax &= hold */ - shrl %cl, hold_r - addl %eax, dist_r /* dist += hold & ((1 << op) - 1) */ - jmp .L_check_window - -.L_check_window: - /* regs: %esi = from, %ebp = hold, %bl = bits, %edi = out, %edx = dist - * %ecx = nbytes - * - * nbytes = out - beg; - * if (dist <= nbytes) { - * from = out - dist; - * do { - * PUP(out) = PUP(from); - * } while (--len > 0) { - * } - */ - - movl in_r, in(%esp) /* save in so from can use it's reg */ - movl out_r, %eax - subl beg(%esp), %eax /* nbytes = out - beg */ - - cmpl dist_r, %eax - jb .L_clip_window /* if (dist > nbytes) 4.2% */ - - movl len(%esp), %ecx - movl out_r, from_r - subl dist_r, from_r /* from = out - dist */ - - subl $3, %ecx - movb (from_r), %al - movb %al, (out_r) - movb 1(from_r), %al - movb 2(from_r), %dl - addl $3, from_r - movb %al, 1(out_r) - movb %dl, 2(out_r) - addl $3, out_r - rep movsb - - movl in(%esp), in_r /* move in back to %esi, toss from */ - jmp .L_while_test - -.align 16,0x90 -.L_check_dist_one: - cmpl $1, dist_r - jne .L_check_window - cmpl out_r, beg(%esp) - je .L_check_window - - decl out_r - movl len(%esp), %ecx - movb (out_r), %al - subl $3, %ecx - - movb %al, 1(out_r) - movb %al, 2(out_r) - movb %al, 3(out_r) - addl $4, out_r - rep stosb - - jmp .L_while_test - -.align 16,0x90 -.L_test_for_second_level_length: - /* else if ((op & 64) == 0) { - * this = lcode[this.val + (hold & mask[op])]; - * } - */ - testb $64, %al - jnz .L_test_for_end_of_block /* if ((op & 64) != 0) */ - - movl $1, %eax - shll %cl, %eax - decl %eax - andl hold_r, %eax /* eax &= hold */ - addl %edx, %eax /* eax += this.val */ - movl lcode(%esp), %edx /* edx = lcode */ - movl (%edx,%eax,4), %eax /* eax = lcode[val + (hold&mask[op])] */ - jmp .L_dolen - -.align 16,0x90 -.L_test_for_second_level_dist: - /* else if ((op & 64) == 0) { - * this = dcode[this.val + (hold & mask[op])]; - * } - */ - testb $64, %al - jnz .L_invalid_distance_code /* if ((op & 64) != 0) */ - - movl $1, %eax - shll %cl, %eax - decl %eax - andl hold_r, %eax /* eax &= hold */ - addl %edx, %eax /* eax += this.val */ - movl dcode(%esp), %edx /* edx = dcode */ - movl (%edx,%eax,4), %eax /* eax = dcode[val + (hold&mask[op])] */ - jmp .L_dodist - -.align 16,0x90 -.L_clip_window: - /* regs: %esi = from, %ebp = hold, %bl = bits, %edi = out, %edx = dist - * %ecx = nbytes - * - * else { - * if (dist > wsize) { - * invalid distance - * } - * from = window; - * nbytes = dist - nbytes; - * if (write == 0) { - * from += wsize - nbytes; - */ -#define nbytes_r %ecx - movl %eax, nbytes_r - movl wsize(%esp), %eax /* prepare for dist compare */ - negl nbytes_r /* nbytes = -nbytes */ - movl window(%esp), from_r /* from = window */ - - cmpl dist_r, %eax - jb .L_invalid_distance_too_far /* if (dist > wsize) */ - - addl dist_r, nbytes_r /* nbytes = dist - nbytes */ - cmpl $0, write(%esp) - jne .L_wrap_around_window /* if (write != 0) */ - - subl nbytes_r, %eax - addl %eax, from_r /* from += wsize - nbytes */ - - /* regs: %esi = from, %ebp = hold, %bl = bits, %edi = out, %edx = dist - * %ecx = nbytes, %eax = len - * - * if (nbytes < len) { - * len -= nbytes; - * do { - * PUP(out) = PUP(from); - * } while (--nbytes); - * from = out - dist; - * } - * } - */ -#define len_r %eax - movl len(%esp), len_r - cmpl nbytes_r, len_r - jbe .L_do_copy1 /* if (nbytes >= len) */ - - subl nbytes_r, len_r /* len -= nbytes */ - rep movsb - movl out_r, from_r - subl dist_r, from_r /* from = out - dist */ - jmp .L_do_copy1 - - cmpl nbytes_r, len_r - jbe .L_do_copy1 /* if (nbytes >= len) */ - - subl nbytes_r, len_r /* len -= nbytes */ - rep movsb - movl out_r, from_r - subl dist_r, from_r /* from = out - dist */ - jmp .L_do_copy1 - -.L_wrap_around_window: - /* regs: %esi = from, %ebp = hold, %bl = bits, %edi = out, %edx = dist - * %ecx = nbytes, %eax = write, %eax = len - * - * else if (write < nbytes) { - * from += wsize + write - nbytes; - * nbytes -= write; - * if (nbytes < len) { - * len -= nbytes; - * do { - * PUP(out) = PUP(from); - * } while (--nbytes); - * from = window; - * nbytes = write; - * if (nbytes < len) { - * len -= nbytes; - * do { - * PUP(out) = PUP(from); - * } while(--nbytes); - * from = out - dist; - * } - * } - * } - */ -#define write_r %eax - movl write(%esp), write_r - cmpl write_r, nbytes_r - jbe .L_contiguous_in_window /* if (write >= nbytes) */ - - addl wsize(%esp), from_r - addl write_r, from_r - subl nbytes_r, from_r /* from += wsize + write - nbytes */ - subl write_r, nbytes_r /* nbytes -= write */ -#undef write_r - - movl len(%esp), len_r - cmpl nbytes_r, len_r - jbe .L_do_copy1 /* if (nbytes >= len) */ - - subl nbytes_r, len_r /* len -= nbytes */ - rep movsb - movl window(%esp), from_r /* from = window */ - movl write(%esp), nbytes_r /* nbytes = write */ - cmpl nbytes_r, len_r - jbe .L_do_copy1 /* if (nbytes >= len) */ - - subl nbytes_r, len_r /* len -= nbytes */ - rep movsb - movl out_r, from_r - subl dist_r, from_r /* from = out - dist */ - jmp .L_do_copy1 - -.L_contiguous_in_window: - /* regs: %esi = from, %ebp = hold, %bl = bits, %edi = out, %edx = dist - * %ecx = nbytes, %eax = write, %eax = len - * - * else { - * from += write - nbytes; - * if (nbytes < len) { - * len -= nbytes; - * do { - * PUP(out) = PUP(from); - * } while (--nbytes); - * from = out - dist; - * } - * } - */ -#define write_r %eax - addl write_r, from_r - subl nbytes_r, from_r /* from += write - nbytes */ -#undef write_r - - movl len(%esp), len_r - cmpl nbytes_r, len_r - jbe .L_do_copy1 /* if (nbytes >= len) */ - - subl nbytes_r, len_r /* len -= nbytes */ - rep movsb - movl out_r, from_r - subl dist_r, from_r /* from = out - dist */ - -.L_do_copy1: - /* regs: %esi = from, %esi = in, %ebp = hold, %bl = bits, %edi = out - * %eax = len - * - * while (len > 0) { - * PUP(out) = PUP(from); - * len--; - * } - * } - * } while (in < last && out < end); - */ -#undef nbytes_r -#define in_r %esi - movl len_r, %ecx - rep movsb - - movl in(%esp), in_r /* move in back to %esi, toss from */ - jmp .L_while_test - -#undef len_r -#undef dist_r - -#endif /* NO_MMX || RUN_TIME_MMX */ - - -/*** MMX code ***/ - -#if defined( USE_MMX ) || defined( RUN_TIME_MMX ) - -.align 32,0x90 -.L_init_mmx: - emms - -#undef bits_r -#undef bitslong_r -#define bitslong_r %ebp -#define hold_mm %mm0 - movd %ebp, hold_mm - movl %ebx, bitslong_r - -#define used_mm %mm1 -#define dmask2_mm %mm2 -#define lmask2_mm %mm3 -#define lmask_mm %mm4 -#define dmask_mm %mm5 -#define tmp_mm %mm6 - - movd lmask(%esp), lmask_mm - movq lmask_mm, lmask2_mm - movd dmask(%esp), dmask_mm - movq dmask_mm, dmask2_mm - pxor used_mm, used_mm - movl lcode(%esp), %ebx /* ebx = lcode */ - jmp .L_do_loop_mmx - -.align 32,0x90 -.L_while_test_mmx: - /* while (in < last && out < end) - */ - cmpl out_r, end(%esp) - jbe .L_break_loop /* if (out >= end) */ - - cmpl in_r, last(%esp) - jbe .L_break_loop - -.L_do_loop_mmx: - psrlq used_mm, hold_mm /* hold_mm >>= last bit length */ - - cmpl $32, bitslong_r - ja .L_get_length_code_mmx /* if (32 < bits) */ - - movd bitslong_r, tmp_mm - movd (in_r), %mm7 - addl $4, in_r - psllq tmp_mm, %mm7 - addl $32, bitslong_r - por %mm7, hold_mm /* hold_mm |= *((uint *)in)++ << bits */ - -.L_get_length_code_mmx: - pand hold_mm, lmask_mm - movd lmask_mm, %eax - movq lmask2_mm, lmask_mm - movl (%ebx,%eax,4), %eax /* eax = lcode[hold & lmask] */ - -.L_dolen_mmx: - movzbl %ah, %ecx /* ecx = this.bits */ - movd %ecx, used_mm - subl %ecx, bitslong_r /* bits -= this.bits */ - - testb %al, %al - jnz .L_test_for_length_base_mmx /* if (op != 0) 45.7% */ - - shrl $16, %eax /* output this.val char */ - stosb - jmp .L_while_test_mmx - -.L_test_for_length_base_mmx: -#define len_r %edx - movl %eax, len_r /* len = this */ - shrl $16, len_r /* len = this.val */ - - testb $16, %al - jz .L_test_for_second_level_length_mmx /* if ((op & 16) == 0) 8% */ - andl $15, %eax /* op &= 15 */ - jz .L_decode_distance_mmx /* if (!op) */ - - psrlq used_mm, hold_mm /* hold_mm >>= last bit length */ - movd %eax, used_mm - movd hold_mm, %ecx - subl %eax, bitslong_r - andl .L_mask(,%eax,4), %ecx - addl %ecx, len_r /* len += hold & mask[op] */ - -.L_decode_distance_mmx: - psrlq used_mm, hold_mm /* hold_mm >>= last bit length */ - - cmpl $32, bitslong_r - ja .L_get_dist_code_mmx /* if (32 < bits) */ - - movd bitslong_r, tmp_mm - movd (in_r), %mm7 - addl $4, in_r - psllq tmp_mm, %mm7 - addl $32, bitslong_r - por %mm7, hold_mm /* hold_mm |= *((uint *)in)++ << bits */ - -.L_get_dist_code_mmx: - movl dcode(%esp), %ebx /* ebx = dcode */ - pand hold_mm, dmask_mm - movd dmask_mm, %eax - movq dmask2_mm, dmask_mm - movl (%ebx,%eax,4), %eax /* eax = dcode[hold & lmask] */ - -.L_dodist_mmx: -#define dist_r %ebx - movzbl %ah, %ecx /* ecx = this.bits */ - movl %eax, dist_r - shrl $16, dist_r /* dist = this.val */ - subl %ecx, bitslong_r /* bits -= this.bits */ - movd %ecx, used_mm - - testb $16, %al /* if ((op & 16) == 0) */ - jz .L_test_for_second_level_dist_mmx - andl $15, %eax /* op &= 15 */ - jz .L_check_dist_one_mmx - -.L_add_bits_to_dist_mmx: - psrlq used_mm, hold_mm /* hold_mm >>= last bit length */ - movd %eax, used_mm /* save bit length of current op */ - movd hold_mm, %ecx /* get the next bits on input stream */ - subl %eax, bitslong_r /* bits -= op bits */ - andl .L_mask(,%eax,4), %ecx /* ecx = hold & mask[op] */ - addl %ecx, dist_r /* dist += hold & mask[op] */ - -.L_check_window_mmx: - movl in_r, in(%esp) /* save in so from can use it's reg */ - movl out_r, %eax - subl beg(%esp), %eax /* nbytes = out - beg */ - - cmpl dist_r, %eax - jb .L_clip_window_mmx /* if (dist > nbytes) 4.2% */ - - movl len_r, %ecx - movl out_r, from_r - subl dist_r, from_r /* from = out - dist */ - - subl $3, %ecx - movb (from_r), %al - movb %al, (out_r) - movb 1(from_r), %al - movb 2(from_r), %dl - addl $3, from_r - movb %al, 1(out_r) - movb %dl, 2(out_r) - addl $3, out_r - rep movsb - - movl in(%esp), in_r /* move in back to %esi, toss from */ - movl lcode(%esp), %ebx /* move lcode back to %ebx, toss dist */ - jmp .L_while_test_mmx - -.align 16,0x90 -.L_check_dist_one_mmx: - cmpl $1, dist_r - jne .L_check_window_mmx - cmpl out_r, beg(%esp) - je .L_check_window_mmx - - decl out_r - movl len_r, %ecx - movb (out_r), %al - subl $3, %ecx - - movb %al, 1(out_r) - movb %al, 2(out_r) - movb %al, 3(out_r) - addl $4, out_r - rep stosb - - movl lcode(%esp), %ebx /* move lcode back to %ebx, toss dist */ - jmp .L_while_test_mmx - -.align 16,0x90 -.L_test_for_second_level_length_mmx: - testb $64, %al - jnz .L_test_for_end_of_block /* if ((op & 64) != 0) */ - - andl $15, %eax - psrlq used_mm, hold_mm /* hold_mm >>= last bit length */ - movd hold_mm, %ecx - andl .L_mask(,%eax,4), %ecx - addl len_r, %ecx - movl (%ebx,%ecx,4), %eax /* eax = lcode[hold & lmask] */ - jmp .L_dolen_mmx - -.align 16,0x90 -.L_test_for_second_level_dist_mmx: - testb $64, %al - jnz .L_invalid_distance_code /* if ((op & 64) != 0) */ - - andl $15, %eax - psrlq used_mm, hold_mm /* hold_mm >>= last bit length */ - movd hold_mm, %ecx - andl .L_mask(,%eax,4), %ecx - movl dcode(%esp), %eax /* ecx = dcode */ - addl dist_r, %ecx - movl (%eax,%ecx,4), %eax /* eax = lcode[hold & lmask] */ - jmp .L_dodist_mmx - -.align 16,0x90 -.L_clip_window_mmx: -#define nbytes_r %ecx - movl %eax, nbytes_r - movl wsize(%esp), %eax /* prepare for dist compare */ - negl nbytes_r /* nbytes = -nbytes */ - movl window(%esp), from_r /* from = window */ - - cmpl dist_r, %eax - jb .L_invalid_distance_too_far /* if (dist > wsize) */ - - addl dist_r, nbytes_r /* nbytes = dist - nbytes */ - cmpl $0, write(%esp) - jne .L_wrap_around_window_mmx /* if (write != 0) */ - - subl nbytes_r, %eax - addl %eax, from_r /* from += wsize - nbytes */ - - cmpl nbytes_r, len_r - jbe .L_do_copy1_mmx /* if (nbytes >= len) */ - - subl nbytes_r, len_r /* len -= nbytes */ - rep movsb - movl out_r, from_r - subl dist_r, from_r /* from = out - dist */ - jmp .L_do_copy1_mmx - - cmpl nbytes_r, len_r - jbe .L_do_copy1_mmx /* if (nbytes >= len) */ - - subl nbytes_r, len_r /* len -= nbytes */ - rep movsb - movl out_r, from_r - subl dist_r, from_r /* from = out - dist */ - jmp .L_do_copy1_mmx - -.L_wrap_around_window_mmx: -#define write_r %eax - movl write(%esp), write_r - cmpl write_r, nbytes_r - jbe .L_contiguous_in_window_mmx /* if (write >= nbytes) */ - - addl wsize(%esp), from_r - addl write_r, from_r - subl nbytes_r, from_r /* from += wsize + write - nbytes */ - subl write_r, nbytes_r /* nbytes -= write */ -#undef write_r - - cmpl nbytes_r, len_r - jbe .L_do_copy1_mmx /* if (nbytes >= len) */ - - subl nbytes_r, len_r /* len -= nbytes */ - rep movsb - movl window(%esp), from_r /* from = window */ - movl write(%esp), nbytes_r /* nbytes = write */ - cmpl nbytes_r, len_r - jbe .L_do_copy1_mmx /* if (nbytes >= len) */ - - subl nbytes_r, len_r /* len -= nbytes */ - rep movsb - movl out_r, from_r - subl dist_r, from_r /* from = out - dist */ - jmp .L_do_copy1_mmx - -.L_contiguous_in_window_mmx: -#define write_r %eax - addl write_r, from_r - subl nbytes_r, from_r /* from += write - nbytes */ -#undef write_r - - cmpl nbytes_r, len_r - jbe .L_do_copy1_mmx /* if (nbytes >= len) */ - - subl nbytes_r, len_r /* len -= nbytes */ - rep movsb - movl out_r, from_r - subl dist_r, from_r /* from = out - dist */ - -.L_do_copy1_mmx: -#undef nbytes_r -#define in_r %esi - movl len_r, %ecx - rep movsb - - movl in(%esp), in_r /* move in back to %esi, toss from */ - movl lcode(%esp), %ebx /* move lcode back to %ebx, toss dist */ - jmp .L_while_test_mmx - -#undef hold_r -#undef bitslong_r - -#endif /* USE_MMX || RUN_TIME_MMX */ - - -/*** USE_MMX, NO_MMX, and RUNTIME_MMX from here on ***/ - -.L_invalid_distance_code: - /* else { - * strm->msg = "invalid distance code"; - * state->mode = BAD; - * } - */ - movl $.L_invalid_distance_code_msg, %ecx - movl $INFLATE_MODE_BAD, %edx - jmp .L_update_stream_state - -.L_test_for_end_of_block: - /* else if (op & 32) { - * state->mode = TYPE; - * break; - * } - */ - testb $32, %al - jz .L_invalid_literal_length_code /* if ((op & 32) == 0) */ - - movl $0, %ecx - movl $INFLATE_MODE_TYPE, %edx - jmp .L_update_stream_state - -.L_invalid_literal_length_code: - /* else { - * strm->msg = "invalid literal/length code"; - * state->mode = BAD; - * } - */ - movl $.L_invalid_literal_length_code_msg, %ecx - movl $INFLATE_MODE_BAD, %edx - jmp .L_update_stream_state - -.L_invalid_distance_too_far: - /* strm->msg = "invalid distance too far back"; - * state->mode = BAD; - */ - movl in(%esp), in_r /* from_r has in's reg, put in back */ - movl $.L_invalid_distance_too_far_msg, %ecx - movl $INFLATE_MODE_BAD, %edx - jmp .L_update_stream_state - -.L_update_stream_state: - /* set strm->msg = %ecx, strm->state->mode = %edx */ - movl strm_sp(%esp), %eax - testl %ecx, %ecx /* if (msg != NULL) */ - jz .L_skip_msg - movl %ecx, msg_strm(%eax) /* strm->msg = msg */ -.L_skip_msg: - movl state_strm(%eax), %eax /* state = strm->state */ - movl %edx, mode_state(%eax) /* state->mode = edx (BAD | TYPE) */ - jmp .L_break_loop - -.align 32,0x90 -.L_break_loop: - -/* - * Regs: - * - * bits = %ebp when mmx, and in %ebx when non-mmx - * hold = %hold_mm when mmx, and in %ebp when non-mmx - * in = %esi - * out = %edi - */ - -#if defined( USE_MMX ) || defined( RUN_TIME_MMX ) - -#if defined( RUN_TIME_MMX ) - - cmpl $DO_USE_MMX, inflate_fast_use_mmx - jne .L_update_next_in - -#endif /* RUN_TIME_MMX */ - - movl %ebp, %ebx - -.L_update_next_in: - -#endif - -#define strm_r %eax -#define state_r %edx - - /* len = bits >> 3; - * in -= len; - * bits -= len << 3; - * hold &= (1U << bits) - 1; - * state->hold = hold; - * state->bits = bits; - * strm->next_in = in; - * strm->next_out = out; - */ - movl strm_sp(%esp), strm_r - movl %ebx, %ecx - movl state_strm(strm_r), state_r - shrl $3, %ecx - subl %ecx, in_r - shll $3, %ecx - subl %ecx, %ebx - movl out_r, next_out_strm(strm_r) - movl %ebx, bits_state(state_r) - movl %ebx, %ecx - - leal buf(%esp), %ebx - cmpl %ebx, last(%esp) - jne .L_buf_not_used /* if buf != last */ - - subl %ebx, in_r /* in -= buf */ - movl next_in_strm(strm_r), %ebx - movl %ebx, last(%esp) /* last = strm->next_in */ - addl %ebx, in_r /* in += strm->next_in */ - movl avail_in_strm(strm_r), %ebx - subl $11, %ebx - addl %ebx, last(%esp) /* last = &strm->next_in[ avail_in - 11 ] */ - -.L_buf_not_used: - movl in_r, next_in_strm(strm_r) - - movl $1, %ebx - shll %cl, %ebx - decl %ebx - -#if defined( USE_MMX ) || defined( RUN_TIME_MMX ) - -#if defined( RUN_TIME_MMX ) - - cmpl $DO_USE_MMX, inflate_fast_use_mmx - jne .L_update_hold - -#endif /* RUN_TIME_MMX */ - - psrlq used_mm, hold_mm /* hold_mm >>= last bit length */ - movd hold_mm, %ebp - - emms - -.L_update_hold: - -#endif /* USE_MMX || RUN_TIME_MMX */ - - andl %ebx, %ebp - movl %ebp, hold_state(state_r) - -#define last_r %ebx - - /* strm->avail_in = in < last ? 11 + (last - in) : 11 - (in - last) */ - movl last(%esp), last_r - cmpl in_r, last_r - jbe .L_last_is_smaller /* if (in >= last) */ - - subl in_r, last_r /* last -= in */ - addl $11, last_r /* last += 11 */ - movl last_r, avail_in_strm(strm_r) - jmp .L_fixup_out -.L_last_is_smaller: - subl last_r, in_r /* in -= last */ - negl in_r /* in = -in */ - addl $11, in_r /* in += 11 */ - movl in_r, avail_in_strm(strm_r) - -#undef last_r -#define end_r %ebx - -.L_fixup_out: - /* strm->avail_out = out < end ? 257 + (end - out) : 257 - (out - end)*/ - movl end(%esp), end_r - cmpl out_r, end_r - jbe .L_end_is_smaller /* if (out >= end) */ - - subl out_r, end_r /* end -= out */ - addl $257, end_r /* end += 257 */ - movl end_r, avail_out_strm(strm_r) - jmp .L_done -.L_end_is_smaller: - subl end_r, out_r /* out -= end */ - negl out_r /* out = -out */ - addl $257, out_r /* out += 257 */ - movl out_r, avail_out_strm(strm_r) - -#undef end_r -#undef strm_r -#undef state_r - -.L_done: - addl $local_var_size, %esp - popf - popl %ebx - popl %ebp - popl %esi - popl %edi - ret - -#if defined( GAS_ELF ) -/* elf info */ -.type inflate_fast,@function -.size inflate_fast,.-inflate_fast -#endif diff --git a/platform/win32/msvc/external/zlib/contrib/iostream/test.cpp b/platform/win32/msvc/external/zlib/contrib/iostream/test.cpp deleted file mode 100644 index 7d265b3b5c0..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/iostream/test.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "zfstream.h" - -int main() { - - // Construct a stream object with this filebuffer. Anything sent - // to this stream will go to standard out. - gzofstream os( 1, ios::out ); - - // This text is getting compressed and sent to stdout. - // To prove this, run 'test | zcat'. - os << "Hello, Mommy" << endl; - - os << setcompressionlevel( Z_NO_COMPRESSION ); - os << "hello, hello, hi, ho!" << endl; - - setcompressionlevel( os, Z_DEFAULT_COMPRESSION ) - << "I'm compressing again" << endl; - - os.close(); - - return 0; - -} diff --git a/platform/win32/msvc/external/zlib/contrib/iostream/zfstream.cpp b/platform/win32/msvc/external/zlib/contrib/iostream/zfstream.cpp deleted file mode 100644 index d0cd85faaf5..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/iostream/zfstream.cpp +++ /dev/null @@ -1,329 +0,0 @@ - -#include "zfstream.h" - -gzfilebuf::gzfilebuf() : - file(NULL), - mode(0), - own_file_descriptor(0) -{ } - -gzfilebuf::~gzfilebuf() { - - sync(); - if ( own_file_descriptor ) - close(); - -} - -gzfilebuf *gzfilebuf::open( const char *name, - int io_mode ) { - - if ( is_open() ) - return NULL; - - char char_mode[10]; - char *p = char_mode; - - if ( io_mode & ios::in ) { - mode = ios::in; - *p++ = 'r'; - } else if ( io_mode & ios::app ) { - mode = ios::app; - *p++ = 'a'; - } else { - mode = ios::out; - *p++ = 'w'; - } - - if ( io_mode & ios::binary ) { - mode |= ios::binary; - *p++ = 'b'; - } - - // Hard code the compression level - if ( io_mode & (ios::out|ios::app )) { - *p++ = '9'; - } - - // Put the end-of-string indicator - *p = '\0'; - - if ( (file = gzopen(name, char_mode)) == NULL ) - return NULL; - - own_file_descriptor = 1; - - return this; - -} - -gzfilebuf *gzfilebuf::attach( int file_descriptor, - int io_mode ) { - - if ( is_open() ) - return NULL; - - char char_mode[10]; - char *p = char_mode; - - if ( io_mode & ios::in ) { - mode = ios::in; - *p++ = 'r'; - } else if ( io_mode & ios::app ) { - mode = ios::app; - *p++ = 'a'; - } else { - mode = ios::out; - *p++ = 'w'; - } - - if ( io_mode & ios::binary ) { - mode |= ios::binary; - *p++ = 'b'; - } - - // Hard code the compression level - if ( io_mode & (ios::out|ios::app )) { - *p++ = '9'; - } - - // Put the end-of-string indicator - *p = '\0'; - - if ( (file = gzdopen(file_descriptor, char_mode)) == NULL ) - return NULL; - - own_file_descriptor = 0; - - return this; - -} - -gzfilebuf *gzfilebuf::close() { - - if ( is_open() ) { - - sync(); - gzclose( file ); - file = NULL; - - } - - return this; - -} - -int gzfilebuf::setcompressionlevel( int comp_level ) { - - return gzsetparams(file, comp_level, -2); - -} - -int gzfilebuf::setcompressionstrategy( int comp_strategy ) { - - return gzsetparams(file, -2, comp_strategy); - -} - - -streampos gzfilebuf::seekoff( streamoff off, ios::seek_dir dir, int which ) { - - return streampos(EOF); - -} - -int gzfilebuf::underflow() { - - // If the file hasn't been opened for reading, error. - if ( !is_open() || !(mode & ios::in) ) - return EOF; - - // if a buffer doesn't exists, allocate one. - if ( !base() ) { - - if ( (allocate()) == EOF ) - return EOF; - setp(0,0); - - } else { - - if ( in_avail() ) - return (unsigned char) *gptr(); - - if ( out_waiting() ) { - if ( flushbuf() == EOF ) - return EOF; - } - - } - - // Attempt to fill the buffer. - - int result = fillbuf(); - if ( result == EOF ) { - // disable get area - setg(0,0,0); - return EOF; - } - - return (unsigned char) *gptr(); - -} - -int gzfilebuf::overflow( int c ) { - - if ( !is_open() || !(mode & ios::out) ) - return EOF; - - if ( !base() ) { - if ( allocate() == EOF ) - return EOF; - setg(0,0,0); - } else { - if (in_avail()) { - return EOF; - } - if (out_waiting()) { - if (flushbuf() == EOF) - return EOF; - } - } - - int bl = blen(); - setp( base(), base() + bl); - - if ( c != EOF ) { - - *pptr() = c; - pbump(1); - - } - - return 0; - -} - -int gzfilebuf::sync() { - - if ( !is_open() ) - return EOF; - - if ( out_waiting() ) - return flushbuf(); - - return 0; - -} - -int gzfilebuf::flushbuf() { - - int n; - char *q; - - q = pbase(); - n = pptr() - q; - - if ( gzwrite( file, q, n) < n ) - return EOF; - - setp(0,0); - - return 0; - -} - -int gzfilebuf::fillbuf() { - - int required; - char *p; - - p = base(); - - required = blen(); - - int t = gzread( file, p, required ); - - if ( t <= 0) return EOF; - - setg( base(), base(), base()+t); - - return t; - -} - -gzfilestream_common::gzfilestream_common() : - ios( gzfilestream_common::rdbuf() ) -{ } - -gzfilestream_common::~gzfilestream_common() -{ } - -void gzfilestream_common::attach( int fd, int io_mode ) { - - if ( !buffer.attach( fd, io_mode) ) - clear( ios::failbit | ios::badbit ); - else - clear(); - -} - -void gzfilestream_common::open( const char *name, int io_mode ) { - - if ( !buffer.open( name, io_mode ) ) - clear( ios::failbit | ios::badbit ); - else - clear(); - -} - -void gzfilestream_common::close() { - - if ( !buffer.close() ) - clear( ios::failbit | ios::badbit ); - -} - -gzfilebuf *gzfilestream_common::rdbuf() -{ - return &buffer; -} - -gzifstream::gzifstream() : - ios( gzfilestream_common::rdbuf() ) -{ - clear( ios::badbit ); -} - -gzifstream::gzifstream( const char *name, int io_mode ) : - ios( gzfilestream_common::rdbuf() ) -{ - gzfilestream_common::open( name, io_mode ); -} - -gzifstream::gzifstream( int fd, int io_mode ) : - ios( gzfilestream_common::rdbuf() ) -{ - gzfilestream_common::attach( fd, io_mode ); -} - -gzifstream::~gzifstream() { } - -gzofstream::gzofstream() : - ios( gzfilestream_common::rdbuf() ) -{ - clear( ios::badbit ); -} - -gzofstream::gzofstream( const char *name, int io_mode ) : - ios( gzfilestream_common::rdbuf() ) -{ - gzfilestream_common::open( name, io_mode ); -} - -gzofstream::gzofstream( int fd, int io_mode ) : - ios( gzfilestream_common::rdbuf() ) -{ - gzfilestream_common::attach( fd, io_mode ); -} - -gzofstream::~gzofstream() { } diff --git a/platform/win32/msvc/external/zlib/contrib/iostream/zfstream.h b/platform/win32/msvc/external/zlib/contrib/iostream/zfstream.h deleted file mode 100644 index ed79098a3ad..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/iostream/zfstream.h +++ /dev/null @@ -1,128 +0,0 @@ - -#ifndef zfstream_h -#define zfstream_h - -#include <fstream.h> -#include "zlib.h" - -class gzfilebuf : public streambuf { - -public: - - gzfilebuf( ); - virtual ~gzfilebuf(); - - gzfilebuf *open( const char *name, int io_mode ); - gzfilebuf *attach( int file_descriptor, int io_mode ); - gzfilebuf *close(); - - int setcompressionlevel( int comp_level ); - int setcompressionstrategy( int comp_strategy ); - - inline int is_open() const { return (file !=NULL); } - - virtual streampos seekoff( streamoff, ios::seek_dir, int ); - - virtual int sync(); - -protected: - - virtual int underflow(); - virtual int overflow( int = EOF ); - -private: - - gzFile file; - short mode; - short own_file_descriptor; - - int flushbuf(); - int fillbuf(); - -}; - -class gzfilestream_common : virtual public ios { - - friend class gzifstream; - friend class gzofstream; - friend gzofstream &setcompressionlevel( gzofstream &, int ); - friend gzofstream &setcompressionstrategy( gzofstream &, int ); - -public: - virtual ~gzfilestream_common(); - - void attach( int fd, int io_mode ); - void open( const char *name, int io_mode ); - void close(); - -protected: - gzfilestream_common(); - -private: - gzfilebuf *rdbuf(); - - gzfilebuf buffer; - -}; - -class gzifstream : public gzfilestream_common, public istream { - -public: - - gzifstream(); - gzifstream( const char *name, int io_mode = ios::in ); - gzifstream( int fd, int io_mode = ios::in ); - - virtual ~gzifstream(); - -}; - -class gzofstream : public gzfilestream_common, public ostream { - -public: - - gzofstream(); - gzofstream( const char *name, int io_mode = ios::out ); - gzofstream( int fd, int io_mode = ios::out ); - - virtual ~gzofstream(); - -}; - -template<class T> class gzomanip { - friend gzofstream &operator<<(gzofstream &, const gzomanip<T> &); -public: - gzomanip(gzofstream &(*f)(gzofstream &, T), T v) : func(f), val(v) { } -private: - gzofstream &(*func)(gzofstream &, T); - T val; -}; - -template<class T> gzofstream &operator<<(gzofstream &s, const gzomanip<T> &m) -{ - return (*m.func)(s, m.val); -} - -inline gzofstream &setcompressionlevel( gzofstream &s, int l ) -{ - (s.rdbuf())->setcompressionlevel(l); - return s; -} - -inline gzofstream &setcompressionstrategy( gzofstream &s, int l ) -{ - (s.rdbuf())->setcompressionstrategy(l); - return s; -} - -inline gzomanip<int> setcompressionlevel(int l) -{ - return gzomanip<int>(&setcompressionlevel,l); -} - -inline gzomanip<int> setcompressionstrategy(int l) -{ - return gzomanip<int>(&setcompressionstrategy,l); -} - -#endif diff --git a/platform/win32/msvc/external/zlib/contrib/iostream2/zstream.h b/platform/win32/msvc/external/zlib/contrib/iostream2/zstream.h deleted file mode 100644 index 43d2332b79b..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/iostream2/zstream.h +++ /dev/null @@ -1,307 +0,0 @@ -/* - * - * Copyright (c) 1997 - * Christian Michelsen Research AS - * Advanced Computing - * Fantoftvegen 38, 5036 BERGEN, Norway - * http://www.cmr.no - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Christian Michelsen Research AS makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - -#ifndef ZSTREAM__H -#define ZSTREAM__H - -/* - * zstream.h - C++ interface to the 'zlib' general purpose compression library - * $Id: zstream.h 1.1 1997-06-25 12:00:56+02 tyge Exp tyge $ - */ - -#include <strstream.h> -#include <string.h> -#include <stdio.h> -#include "zlib.h" - -#if defined(_WIN32) -# include <fcntl.h> -# include <io.h> -# define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY) -#else -# define SET_BINARY_MODE(file) -#endif - -class zstringlen { -public: - zstringlen(class izstream&); - zstringlen(class ozstream&, const char*); - size_t value() const { return val.word; } -private: - struct Val { unsigned char byte; size_t word; } val; -}; - -// ----------------------------- izstream ----------------------------- - -class izstream -{ - public: - izstream() : m_fp(0) {} - izstream(FILE* fp) : m_fp(0) { open(fp); } - izstream(const char* name) : m_fp(0) { open(name); } - ~izstream() { close(); } - - /* Opens a gzip (.gz) file for reading. - * open() can be used to read a file which is not in gzip format; - * in this case read() will directly read from the file without - * decompression. errno can be checked to distinguish two error - * cases (if errno is zero, the zlib error is Z_MEM_ERROR). - */ - void open(const char* name) { - if (m_fp) close(); - m_fp = ::gzopen(name, "rb"); - } - - void open(FILE* fp) { - SET_BINARY_MODE(fp); - if (m_fp) close(); - m_fp = ::gzdopen(fileno(fp), "rb"); - } - - /* Flushes all pending input if necessary, closes the compressed file - * and deallocates all the (de)compression state. The return value is - * the zlib error number (see function error() below). - */ - int close() { - int r = ::gzclose(m_fp); - m_fp = 0; return r; - } - - /* Binary read the given number of bytes from the compressed file. - */ - int read(void* buf, size_t len) { - return ::gzread(m_fp, buf, len); - } - - /* Returns the error message for the last error which occurred on the - * given compressed file. errnum is set to zlib error number. If an - * error occurred in the file system and not in the compression library, - * errnum is set to Z_ERRNO and the application may consult errno - * to get the exact error code. - */ - const char* error(int* errnum) { - return ::gzerror(m_fp, errnum); - } - - gzFile fp() { return m_fp; } - - private: - gzFile m_fp; -}; - -/* - * Binary read the given (array of) object(s) from the compressed file. - * If the input file was not in gzip format, read() copies the objects number - * of bytes into the buffer. - * returns the number of uncompressed bytes actually read - * (0 for end of file, -1 for error). - */ -template <class T, class Items> -inline int read(izstream& zs, T* x, Items items) { - return ::gzread(zs.fp(), x, items*sizeof(T)); -} - -/* - * Binary input with the '>' operator. - */ -template <class T> -inline izstream& operator>(izstream& zs, T& x) { - ::gzread(zs.fp(), &x, sizeof(T)); - return zs; -} - - -inline zstringlen::zstringlen(izstream& zs) { - zs > val.byte; - if (val.byte == 255) zs > val.word; - else val.word = val.byte; -} - -/* - * Read length of string + the string with the '>' operator. - */ -inline izstream& operator>(izstream& zs, char* x) { - zstringlen len(zs); - ::gzread(zs.fp(), x, len.value()); - x[len.value()] = '\0'; - return zs; -} - -inline char* read_string(izstream& zs) { - zstringlen len(zs); - char* x = new char[len.value()+1]; - ::gzread(zs.fp(), x, len.value()); - x[len.value()] = '\0'; - return x; -} - -// ----------------------------- ozstream ----------------------------- - -class ozstream -{ - public: - ozstream() : m_fp(0), m_os(0) { - } - ozstream(FILE* fp, int level = Z_DEFAULT_COMPRESSION) - : m_fp(0), m_os(0) { - open(fp, level); - } - ozstream(const char* name, int level = Z_DEFAULT_COMPRESSION) - : m_fp(0), m_os(0) { - open(name, level); - } - ~ozstream() { - close(); - } - - /* Opens a gzip (.gz) file for writing. - * The compression level parameter should be in 0..9 - * errno can be checked to distinguish two error cases - * (if errno is zero, the zlib error is Z_MEM_ERROR). - */ - void open(const char* name, int level = Z_DEFAULT_COMPRESSION) { - char mode[4] = "wb\0"; - if (level != Z_DEFAULT_COMPRESSION) mode[2] = '0'+level; - if (m_fp) close(); - m_fp = ::gzopen(name, mode); - } - - /* open from a FILE pointer. - */ - void open(FILE* fp, int level = Z_DEFAULT_COMPRESSION) { - SET_BINARY_MODE(fp); - char mode[4] = "wb\0"; - if (level != Z_DEFAULT_COMPRESSION) mode[2] = '0'+level; - if (m_fp) close(); - m_fp = ::gzdopen(fileno(fp), mode); - } - - /* Flushes all pending output if necessary, closes the compressed file - * and deallocates all the (de)compression state. The return value is - * the zlib error number (see function error() below). - */ - int close() { - if (m_os) { - ::gzwrite(m_fp, m_os->str(), m_os->pcount()); - delete[] m_os->str(); delete m_os; m_os = 0; - } - int r = ::gzclose(m_fp); m_fp = 0; return r; - } - - /* Binary write the given number of bytes into the compressed file. - */ - int write(const void* buf, size_t len) { - return ::gzwrite(m_fp, (voidp) buf, len); - } - - /* Flushes all pending output into the compressed file. The parameter - * _flush is as in the deflate() function. The return value is the zlib - * error number (see function gzerror below). flush() returns Z_OK if - * the flush_ parameter is Z_FINISH and all output could be flushed. - * flush() should be called only when strictly necessary because it can - * degrade compression. - */ - int flush(int _flush) { - os_flush(); - return ::gzflush(m_fp, _flush); - } - - /* Returns the error message for the last error which occurred on the - * given compressed file. errnum is set to zlib error number. If an - * error occurred in the file system and not in the compression library, - * errnum is set to Z_ERRNO and the application may consult errno - * to get the exact error code. - */ - const char* error(int* errnum) { - return ::gzerror(m_fp, errnum); - } - - gzFile fp() { return m_fp; } - - ostream& os() { - if (m_os == 0) m_os = new ostrstream; - return *m_os; - } - - void os_flush() { - if (m_os && m_os->pcount()>0) { - ostrstream* oss = new ostrstream; - oss->fill(m_os->fill()); - oss->flags(m_os->flags()); - oss->precision(m_os->precision()); - oss->width(m_os->width()); - ::gzwrite(m_fp, m_os->str(), m_os->pcount()); - delete[] m_os->str(); delete m_os; m_os = oss; - } - } - - private: - gzFile m_fp; - ostrstream* m_os; -}; - -/* - * Binary write the given (array of) object(s) into the compressed file. - * returns the number of uncompressed bytes actually written - * (0 in case of error). - */ -template <class T, class Items> -inline int write(ozstream& zs, const T* x, Items items) { - return ::gzwrite(zs.fp(), (voidp) x, items*sizeof(T)); -} - -/* - * Binary output with the '<' operator. - */ -template <class T> -inline ozstream& operator<(ozstream& zs, const T& x) { - ::gzwrite(zs.fp(), (voidp) &x, sizeof(T)); - return zs; -} - -inline zstringlen::zstringlen(ozstream& zs, const char* x) { - val.byte = 255; val.word = ::strlen(x); - if (val.word < 255) zs < (val.byte = val.word); - else zs < val; -} - -/* - * Write length of string + the string with the '<' operator. - */ -inline ozstream& operator<(ozstream& zs, const char* x) { - zstringlen len(zs, x); - ::gzwrite(zs.fp(), (voidp) x, len.value()); - return zs; -} - -#ifdef _MSC_VER -inline ozstream& operator<(ozstream& zs, char* const& x) { - return zs < (const char*) x; -} -#endif - -/* - * Ascii write with the << operator; - */ -template <class T> -inline ostream& operator<<(ozstream& zs, const T& x) { - zs.os_flush(); - return zs.os() << x; -} - -#endif diff --git a/platform/win32/msvc/external/zlib/contrib/iostream2/zstream_test.cpp b/platform/win32/msvc/external/zlib/contrib/iostream2/zstream_test.cpp deleted file mode 100644 index 6273f62d62a..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/iostream2/zstream_test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include "zstream.h" -#include <math.h> -#include <stdlib.h> -#include <iomanip.h> - -void main() { - char h[256] = "Hello"; - char* g = "Goodbye"; - ozstream out("temp.gz"); - out < "This works well" < h < g; - out.close(); - - izstream in("temp.gz"); // read it back - char *x = read_string(in), *y = new char[256], z[256]; - in > y > z; - in.close(); - cout << x << endl << y << endl << z << endl; - - out.open("temp.gz"); // try ascii output; zcat temp.gz to see the results - out << setw(50) << setfill('#') << setprecision(20) << x << endl << y << endl << z << endl; - out << z << endl << y << endl << x << endl; - out << 1.1234567890123456789 << endl; - - delete[] x; delete[] y; -} diff --git a/platform/win32/msvc/external/zlib/contrib/iostream3/README b/platform/win32/msvc/external/zlib/contrib/iostream3/README deleted file mode 100644 index f7b319ab91a..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/iostream3/README +++ /dev/null @@ -1,35 +0,0 @@ -These classes provide a C++ stream interface to the zlib library. It allows you -to do things like: - - gzofstream outf("blah.gz"); - outf << "These go into the gzip file " << 123 << endl; - -It does this by deriving a specialized stream buffer for gzipped files, which is -the way Stroustrup would have done it. :-> - -The gzifstream and gzofstream classes were originally written by Kevin Ruland -and made available in the zlib contrib/iostream directory. The older version still -compiles under gcc 2.xx, but not under gcc 3.xx, which sparked the development of -this version. - -The new classes are as standard-compliant as possible, closely following the -approach of the standard library's fstream classes. It compiles under gcc versions -3.2 and 3.3, but not under gcc 2.xx. This is mainly due to changes in the standard -library naming scheme. The new version of gzifstream/gzofstream/gzfilebuf differs -from the previous one in the following respects: -- added showmanyc -- added setbuf, with support for unbuffered output via setbuf(0,0) -- a few bug fixes of stream behavior -- gzipped output file opened with default compression level instead of maximum level -- setcompressionlevel()/strategy() members replaced by single setcompression() - -The code is provided "as is", with the permission to use, copy, modify, distribute -and sell it for any purpose without fee. - -Ludwig Schwardt -<schwardt@sun.ac.za> - -DSP Lab -Electrical & Electronic Engineering Department -University of Stellenbosch -South Africa diff --git a/platform/win32/msvc/external/zlib/contrib/iostream3/TODO b/platform/win32/msvc/external/zlib/contrib/iostream3/TODO deleted file mode 100644 index 7032f97be04..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/iostream3/TODO +++ /dev/null @@ -1,17 +0,0 @@ -Possible upgrades to gzfilebuf: - -- The ability to do putback (e.g. putbackfail) - -- The ability to seek (zlib supports this, but could be slow/tricky) - -- Simultaneous read/write access (does it make sense?) - -- Support for ios_base::ate open mode - -- Locale support? - -- Check public interface to see which calls give problems - (due to dependence on library internals) - -- Override operator<<(ostream&, gzfilebuf*) to allow direct copying - of stream buffer to stream ( i.e. os << is.rdbuf(); ) diff --git a/platform/win32/msvc/external/zlib/contrib/iostream3/test.cc b/platform/win32/msvc/external/zlib/contrib/iostream3/test.cc deleted file mode 100644 index 94235334f25..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/iostream3/test.cc +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Test program for gzifstream and gzofstream - * - * by Ludwig Schwardt <schwardt@sun.ac.za> - * original version by Kevin Ruland <kevin@rodin.wustl.edu> - */ - -#include "zfstream.h" -#include <iostream> // for cout - -int main() { - - gzofstream outf; - gzifstream inf; - char buf[80]; - - outf.open("test1.txt.gz"); - outf << "The quick brown fox sidestepped the lazy canine\n" - << 1.3 << "\nPlan " << 9 << std::endl; - outf.close(); - std::cout << "Wrote the following message to 'test1.txt.gz' (check with zcat or zless):\n" - << "The quick brown fox sidestepped the lazy canine\n" - << 1.3 << "\nPlan " << 9 << std::endl; - - std::cout << "\nReading 'test1.txt.gz' (buffered) produces:\n"; - inf.open("test1.txt.gz"); - while (inf.getline(buf,80,'\n')) { - std::cout << buf << "\t(" << inf.rdbuf()->in_avail() << " chars left in buffer)\n"; - } - inf.close(); - - outf.rdbuf()->pubsetbuf(0,0); - outf.open("test2.txt.gz"); - outf << setcompression(Z_NO_COMPRESSION) - << "The quick brown fox sidestepped the lazy canine\n" - << 1.3 << "\nPlan " << 9 << std::endl; - outf.close(); - std::cout << "\nWrote the same message to 'test2.txt.gz' in uncompressed form"; - - std::cout << "\nReading 'test2.txt.gz' (unbuffered) produces:\n"; - inf.rdbuf()->pubsetbuf(0,0); - inf.open("test2.txt.gz"); - while (inf.getline(buf,80,'\n')) { - std::cout << buf << "\t(" << inf.rdbuf()->in_avail() << " chars left in buffer)\n"; - } - inf.close(); - - return 0; - -} diff --git a/platform/win32/msvc/external/zlib/contrib/iostream3/zfstream.cc b/platform/win32/msvc/external/zlib/contrib/iostream3/zfstream.cc deleted file mode 100644 index 94eb933444a..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/iostream3/zfstream.cc +++ /dev/null @@ -1,479 +0,0 @@ -/* - * A C++ I/O streams interface to the zlib gz* functions - * - * by Ludwig Schwardt <schwardt@sun.ac.za> - * original version by Kevin Ruland <kevin@rodin.wustl.edu> - * - * This version is standard-compliant and compatible with gcc 3.x. - */ - -#include "zfstream.h" -#include <cstring> // for strcpy, strcat, strlen (mode strings) -#include <cstdio> // for BUFSIZ - -// Internal buffer sizes (default and "unbuffered" versions) -#define BIGBUFSIZE BUFSIZ -#define SMALLBUFSIZE 1 - -/*****************************************************************************/ - -// Default constructor -gzfilebuf::gzfilebuf() -: file(NULL), io_mode(std::ios_base::openmode(0)), own_fd(false), - buffer(NULL), buffer_size(BIGBUFSIZE), own_buffer(true) -{ - // No buffers to start with - this->disable_buffer(); -} - -// Destructor -gzfilebuf::~gzfilebuf() -{ - // Sync output buffer and close only if responsible for file - // (i.e. attached streams should be left open at this stage) - this->sync(); - if (own_fd) - this->close(); - // Make sure internal buffer is deallocated - this->disable_buffer(); -} - -// Set compression level and strategy -int -gzfilebuf::setcompression(int comp_level, - int comp_strategy) -{ - return gzsetparams(file, comp_level, comp_strategy); -} - -// Open gzipped file -gzfilebuf* -gzfilebuf::open(const char *name, - std::ios_base::openmode mode) -{ - // Fail if file already open - if (this->is_open()) - return NULL; - // Don't support simultaneous read/write access (yet) - if ((mode & std::ios_base::in) && (mode & std::ios_base::out)) - return NULL; - - // Build mode string for gzopen and check it [27.8.1.3.2] - char char_mode[6] = "\0\0\0\0\0"; - if (!this->open_mode(mode, char_mode)) - return NULL; - - // Attempt to open file - if ((file = gzopen(name, char_mode)) == NULL) - return NULL; - - // On success, allocate internal buffer and set flags - this->enable_buffer(); - io_mode = mode; - own_fd = true; - return this; -} - -// Attach to gzipped file -gzfilebuf* -gzfilebuf::attach(int fd, - std::ios_base::openmode mode) -{ - // Fail if file already open - if (this->is_open()) - return NULL; - // Don't support simultaneous read/write access (yet) - if ((mode & std::ios_base::in) && (mode & std::ios_base::out)) - return NULL; - - // Build mode string for gzdopen and check it [27.8.1.3.2] - char char_mode[6] = "\0\0\0\0\0"; - if (!this->open_mode(mode, char_mode)) - return NULL; - - // Attempt to attach to file - if ((file = gzdopen(fd, char_mode)) == NULL) - return NULL; - - // On success, allocate internal buffer and set flags - this->enable_buffer(); - io_mode = mode; - own_fd = false; - return this; -} - -// Close gzipped file -gzfilebuf* -gzfilebuf::close() -{ - // Fail immediately if no file is open - if (!this->is_open()) - return NULL; - // Assume success - gzfilebuf* retval = this; - // Attempt to sync and close gzipped file - if (this->sync() == -1) - retval = NULL; - if (gzclose(file) < 0) - retval = NULL; - // File is now gone anyway (postcondition [27.8.1.3.8]) - file = NULL; - own_fd = false; - // Destroy internal buffer if it exists - this->disable_buffer(); - return retval; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -// Convert int open mode to mode string -bool -gzfilebuf::open_mode(std::ios_base::openmode mode, - char* c_mode) const -{ - bool testb = mode & std::ios_base::binary; - bool testi = mode & std::ios_base::in; - bool testo = mode & std::ios_base::out; - bool testt = mode & std::ios_base::trunc; - bool testa = mode & std::ios_base::app; - - // Check for valid flag combinations - see [27.8.1.3.2] (Table 92) - // Original zfstream hardcoded the compression level to maximum here... - // Double the time for less than 1% size improvement seems - // excessive though - keeping it at the default level - // To change back, just append "9" to the next three mode strings - if (!testi && testo && !testt && !testa) - strcpy(c_mode, "w"); - if (!testi && testo && !testt && testa) - strcpy(c_mode, "a"); - if (!testi && testo && testt && !testa) - strcpy(c_mode, "w"); - if (testi && !testo && !testt && !testa) - strcpy(c_mode, "r"); - // No read/write mode yet -// if (testi && testo && !testt && !testa) -// strcpy(c_mode, "r+"); -// if (testi && testo && testt && !testa) -// strcpy(c_mode, "w+"); - - // Mode string should be empty for invalid combination of flags - if (strlen(c_mode) == 0) - return false; - if (testb) - strcat(c_mode, "b"); - return true; -} - -// Determine number of characters in internal get buffer -std::streamsize -gzfilebuf::showmanyc() -{ - // Calls to underflow will fail if file not opened for reading - if (!this->is_open() || !(io_mode & std::ios_base::in)) - return -1; - // Make sure get area is in use - if (this->gptr() && (this->gptr() < this->egptr())) - return std::streamsize(this->egptr() - this->gptr()); - else - return 0; -} - -// Fill get area from gzipped file -gzfilebuf::int_type -gzfilebuf::underflow() -{ - // If something is left in the get area by chance, return it - // (this shouldn't normally happen, as underflow is only supposed - // to be called when gptr >= egptr, but it serves as error check) - if (this->gptr() && (this->gptr() < this->egptr())) - return traits_type::to_int_type(*(this->gptr())); - - // If the file hasn't been opened for reading, produce error - if (!this->is_open() || !(io_mode & std::ios_base::in)) - return traits_type::eof(); - - // Attempt to fill internal buffer from gzipped file - // (buffer must be guaranteed to exist...) - int bytes_read = gzread(file, buffer, buffer_size); - // Indicates error or EOF - if (bytes_read <= 0) - { - // Reset get area - this->setg(buffer, buffer, buffer); - return traits_type::eof(); - } - // Make all bytes read from file available as get area - this->setg(buffer, buffer, buffer + bytes_read); - - // Return next character in get area - return traits_type::to_int_type(*(this->gptr())); -} - -// Write put area to gzipped file -gzfilebuf::int_type -gzfilebuf::overflow(int_type c) -{ - // Determine whether put area is in use - if (this->pbase()) - { - // Double-check pointer range - if (this->pptr() > this->epptr() || this->pptr() < this->pbase()) - return traits_type::eof(); - // Add extra character to buffer if not EOF - if (!traits_type::eq_int_type(c, traits_type::eof())) - { - *(this->pptr()) = traits_type::to_char_type(c); - this->pbump(1); - } - // Number of characters to write to file - int bytes_to_write = this->pptr() - this->pbase(); - // Overflow doesn't fail if nothing is to be written - if (bytes_to_write > 0) - { - // If the file hasn't been opened for writing, produce error - if (!this->is_open() || !(io_mode & std::ios_base::out)) - return traits_type::eof(); - // If gzipped file won't accept all bytes written to it, fail - if (gzwrite(file, this->pbase(), bytes_to_write) != bytes_to_write) - return traits_type::eof(); - // Reset next pointer to point to pbase on success - this->pbump(-bytes_to_write); - } - } - // Write extra character to file if not EOF - else if (!traits_type::eq_int_type(c, traits_type::eof())) - { - // If the file hasn't been opened for writing, produce error - if (!this->is_open() || !(io_mode & std::ios_base::out)) - return traits_type::eof(); - // Impromptu char buffer (allows "unbuffered" output) - char_type last_char = traits_type::to_char_type(c); - // If gzipped file won't accept this character, fail - if (gzwrite(file, &last_char, 1) != 1) - return traits_type::eof(); - } - - // If you got here, you have succeeded (even if c was EOF) - // The return value should therefore be non-EOF - if (traits_type::eq_int_type(c, traits_type::eof())) - return traits_type::not_eof(c); - else - return c; -} - -// Assign new buffer -std::streambuf* -gzfilebuf::setbuf(char_type* p, - std::streamsize n) -{ - // First make sure stuff is sync'ed, for safety - if (this->sync() == -1) - return NULL; - // If buffering is turned off on purpose via setbuf(0,0), still allocate one... - // "Unbuffered" only really refers to put [27.8.1.4.10], while get needs at - // least a buffer of size 1 (very inefficient though, therefore make it bigger?) - // This follows from [27.5.2.4.3]/12 (gptr needs to point at something, it seems) - if (!p || !n) - { - // Replace existing buffer (if any) with small internal buffer - this->disable_buffer(); - buffer = NULL; - buffer_size = 0; - own_buffer = true; - this->enable_buffer(); - } - else - { - // Replace existing buffer (if any) with external buffer - this->disable_buffer(); - buffer = p; - buffer_size = n; - own_buffer = false; - this->enable_buffer(); - } - return this; -} - -// Write put area to gzipped file (i.e. ensures that put area is empty) -int -gzfilebuf::sync() -{ - return traits_type::eq_int_type(this->overflow(), traits_type::eof()) ? -1 : 0; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -// Allocate internal buffer -void -gzfilebuf::enable_buffer() -{ - // If internal buffer required, allocate one - if (own_buffer && !buffer) - { - // Check for buffered vs. "unbuffered" - if (buffer_size > 0) - { - // Allocate internal buffer - buffer = new char_type[buffer_size]; - // Get area starts empty and will be expanded by underflow as need arises - this->setg(buffer, buffer, buffer); - // Setup entire internal buffer as put area. - // The one-past-end pointer actually points to the last element of the buffer, - // so that overflow(c) can safely add the extra character c to the sequence. - // These pointers remain in place for the duration of the buffer - this->setp(buffer, buffer + buffer_size - 1); - } - else - { - // Even in "unbuffered" case, (small?) get buffer is still required - buffer_size = SMALLBUFSIZE; - buffer = new char_type[buffer_size]; - this->setg(buffer, buffer, buffer); - // "Unbuffered" means no put buffer - this->setp(0, 0); - } - } - else - { - // If buffer already allocated, reset buffer pointers just to make sure no - // stale chars are lying around - this->setg(buffer, buffer, buffer); - this->setp(buffer, buffer + buffer_size - 1); - } -} - -// Destroy internal buffer -void -gzfilebuf::disable_buffer() -{ - // If internal buffer exists, deallocate it - if (own_buffer && buffer) - { - // Preserve unbuffered status by zeroing size - if (!this->pbase()) - buffer_size = 0; - delete[] buffer; - buffer = NULL; - this->setg(0, 0, 0); - this->setp(0, 0); - } - else - { - // Reset buffer pointers to initial state if external buffer exists - this->setg(buffer, buffer, buffer); - if (buffer) - this->setp(buffer, buffer + buffer_size - 1); - else - this->setp(0, 0); - } -} - -/*****************************************************************************/ - -// Default constructor initializes stream buffer -gzifstream::gzifstream() -: std::istream(NULL), sb() -{ this->init(&sb); } - -// Initialize stream buffer and open file -gzifstream::gzifstream(const char* name, - std::ios_base::openmode mode) -: std::istream(NULL), sb() -{ - this->init(&sb); - this->open(name, mode); -} - -// Initialize stream buffer and attach to file -gzifstream::gzifstream(int fd, - std::ios_base::openmode mode) -: std::istream(NULL), sb() -{ - this->init(&sb); - this->attach(fd, mode); -} - -// Open file and go into fail() state if unsuccessful -void -gzifstream::open(const char* name, - std::ios_base::openmode mode) -{ - if (!sb.open(name, mode | std::ios_base::in)) - this->setstate(std::ios_base::failbit); - else - this->clear(); -} - -// Attach to file and go into fail() state if unsuccessful -void -gzifstream::attach(int fd, - std::ios_base::openmode mode) -{ - if (!sb.attach(fd, mode | std::ios_base::in)) - this->setstate(std::ios_base::failbit); - else - this->clear(); -} - -// Close file -void -gzifstream::close() -{ - if (!sb.close()) - this->setstate(std::ios_base::failbit); -} - -/*****************************************************************************/ - -// Default constructor initializes stream buffer -gzofstream::gzofstream() -: std::ostream(NULL), sb() -{ this->init(&sb); } - -// Initialize stream buffer and open file -gzofstream::gzofstream(const char* name, - std::ios_base::openmode mode) -: std::ostream(NULL), sb() -{ - this->init(&sb); - this->open(name, mode); -} - -// Initialize stream buffer and attach to file -gzofstream::gzofstream(int fd, - std::ios_base::openmode mode) -: std::ostream(NULL), sb() -{ - this->init(&sb); - this->attach(fd, mode); -} - -// Open file and go into fail() state if unsuccessful -void -gzofstream::open(const char* name, - std::ios_base::openmode mode) -{ - if (!sb.open(name, mode | std::ios_base::out)) - this->setstate(std::ios_base::failbit); - else - this->clear(); -} - -// Attach to file and go into fail() state if unsuccessful -void -gzofstream::attach(int fd, - std::ios_base::openmode mode) -{ - if (!sb.attach(fd, mode | std::ios_base::out)) - this->setstate(std::ios_base::failbit); - else - this->clear(); -} - -// Close file -void -gzofstream::close() -{ - if (!sb.close()) - this->setstate(std::ios_base::failbit); -} diff --git a/platform/win32/msvc/external/zlib/contrib/iostream3/zfstream.h b/platform/win32/msvc/external/zlib/contrib/iostream3/zfstream.h deleted file mode 100644 index 8574479ae1e..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/iostream3/zfstream.h +++ /dev/null @@ -1,466 +0,0 @@ -/* - * A C++ I/O streams interface to the zlib gz* functions - * - * by Ludwig Schwardt <schwardt@sun.ac.za> - * original version by Kevin Ruland <kevin@rodin.wustl.edu> - * - * This version is standard-compliant and compatible with gcc 3.x. - */ - -#ifndef ZFSTREAM_H -#define ZFSTREAM_H - -#include <istream> // not iostream, since we don't need cin/cout -#include <ostream> -#include "zlib.h" - -/*****************************************************************************/ - -/** - * @brief Gzipped file stream buffer class. - * - * This class implements basic_filebuf for gzipped files. It doesn't yet support - * seeking (allowed by zlib but slow/limited), putback and read/write access - * (tricky). Otherwise, it attempts to be a drop-in replacement for the standard - * file streambuf. -*/ -class gzfilebuf : public std::streambuf -{ -public: - // Default constructor. - gzfilebuf(); - - // Destructor. - virtual - ~gzfilebuf(); - - /** - * @brief Set compression level and strategy on the fly. - * @param comp_level Compression level (see zlib.h for allowed values) - * @param comp_strategy Compression strategy (see zlib.h for allowed values) - * @return Z_OK on success, Z_STREAM_ERROR otherwise. - * - * Unfortunately, these parameters cannot be modified separately, as the - * previous zfstream version assumed. Since the strategy is seldom changed, - * it can default and setcompression(level) then becomes like the old - * setcompressionlevel(level). - */ - int - setcompression(int comp_level, - int comp_strategy = Z_DEFAULT_STRATEGY); - - /** - * @brief Check if file is open. - * @return True if file is open. - */ - bool - is_open() const { return (file != NULL); } - - /** - * @brief Open gzipped file. - * @param name File name. - * @param mode Open mode flags. - * @return @c this on success, NULL on failure. - */ - gzfilebuf* - open(const char* name, - std::ios_base::openmode mode); - - /** - * @brief Attach to already open gzipped file. - * @param fd File descriptor. - * @param mode Open mode flags. - * @return @c this on success, NULL on failure. - */ - gzfilebuf* - attach(int fd, - std::ios_base::openmode mode); - - /** - * @brief Close gzipped file. - * @return @c this on success, NULL on failure. - */ - gzfilebuf* - close(); - -protected: - /** - * @brief Convert ios open mode int to mode string used by zlib. - * @return True if valid mode flag combination. - */ - bool - open_mode(std::ios_base::openmode mode, - char* c_mode) const; - - /** - * @brief Number of characters available in stream buffer. - * @return Number of characters. - * - * This indicates number of characters in get area of stream buffer. - * These characters can be read without accessing the gzipped file. - */ - virtual std::streamsize - showmanyc(); - - /** - * @brief Fill get area from gzipped file. - * @return First character in get area on success, EOF on error. - * - * This actually reads characters from gzipped file to stream - * buffer. Always buffered. - */ - virtual int_type - underflow(); - - /** - * @brief Write put area to gzipped file. - * @param c Extra character to add to buffer contents. - * @return Non-EOF on success, EOF on error. - * - * This actually writes characters in stream buffer to - * gzipped file. With unbuffered output this is done one - * character at a time. - */ - virtual int_type - overflow(int_type c = traits_type::eof()); - - /** - * @brief Installs external stream buffer. - * @param p Pointer to char buffer. - * @param n Size of external buffer. - * @return @c this on success, NULL on failure. - * - * Call setbuf(0,0) to enable unbuffered output. - */ - virtual std::streambuf* - setbuf(char_type* p, - std::streamsize n); - - /** - * @brief Flush stream buffer to file. - * @return 0 on success, -1 on error. - * - * This calls underflow(EOF) to do the job. - */ - virtual int - sync(); - -// -// Some future enhancements -// -// virtual int_type uflow(); -// virtual int_type pbackfail(int_type c = traits_type::eof()); -// virtual pos_type -// seekoff(off_type off, -// std::ios_base::seekdir way, -// std::ios_base::openmode mode = std::ios_base::in|std::ios_base::out); -// virtual pos_type -// seekpos(pos_type sp, -// std::ios_base::openmode mode = std::ios_base::in|std::ios_base::out); - -private: - /** - * @brief Allocate internal buffer. - * - * This function is safe to call multiple times. It will ensure - * that a proper internal buffer exists if it is required. If the - * buffer already exists or is external, the buffer pointers will be - * reset to their original state. - */ - void - enable_buffer(); - - /** - * @brief Destroy internal buffer. - * - * This function is safe to call multiple times. It will ensure - * that the internal buffer is deallocated if it exists. In any - * case, it will also reset the buffer pointers. - */ - void - disable_buffer(); - - /** - * Underlying file pointer. - */ - gzFile file; - - /** - * Mode in which file was opened. - */ - std::ios_base::openmode io_mode; - - /** - * @brief True if this object owns file descriptor. - * - * This makes the class responsible for closing the file - * upon destruction. - */ - bool own_fd; - - /** - * @brief Stream buffer. - * - * For simplicity this remains allocated on the free store for the - * entire life span of the gzfilebuf object, unless replaced by setbuf. - */ - char_type* buffer; - - /** - * @brief Stream buffer size. - * - * Defaults to system default buffer size (typically 8192 bytes). - * Modified by setbuf. - */ - std::streamsize buffer_size; - - /** - * @brief True if this object owns stream buffer. - * - * This makes the class responsible for deleting the buffer - * upon destruction. - */ - bool own_buffer; -}; - -/*****************************************************************************/ - -/** - * @brief Gzipped file input stream class. - * - * This class implements ifstream for gzipped files. Seeking and putback - * is not supported yet. -*/ -class gzifstream : public std::istream -{ -public: - // Default constructor - gzifstream(); - - /** - * @brief Construct stream on gzipped file to be opened. - * @param name File name. - * @param mode Open mode flags (forced to contain ios::in). - */ - explicit - gzifstream(const char* name, - std::ios_base::openmode mode = std::ios_base::in); - - /** - * @brief Construct stream on already open gzipped file. - * @param fd File descriptor. - * @param mode Open mode flags (forced to contain ios::in). - */ - explicit - gzifstream(int fd, - std::ios_base::openmode mode = std::ios_base::in); - - /** - * Obtain underlying stream buffer. - */ - gzfilebuf* - rdbuf() const - { return const_cast<gzfilebuf*>(&sb); } - - /** - * @brief Check if file is open. - * @return True if file is open. - */ - bool - is_open() { return sb.is_open(); } - - /** - * @brief Open gzipped file. - * @param name File name. - * @param mode Open mode flags (forced to contain ios::in). - * - * Stream will be in state good() if file opens successfully; - * otherwise in state fail(). This differs from the behavior of - * ifstream, which never sets the state to good() and therefore - * won't allow you to reuse the stream for a second file unless - * you manually clear() the state. The choice is a matter of - * convenience. - */ - void - open(const char* name, - std::ios_base::openmode mode = std::ios_base::in); - - /** - * @brief Attach to already open gzipped file. - * @param fd File descriptor. - * @param mode Open mode flags (forced to contain ios::in). - * - * Stream will be in state good() if attach succeeded; otherwise - * in state fail(). - */ - void - attach(int fd, - std::ios_base::openmode mode = std::ios_base::in); - - /** - * @brief Close gzipped file. - * - * Stream will be in state fail() if close failed. - */ - void - close(); - -private: - /** - * Underlying stream buffer. - */ - gzfilebuf sb; -}; - -/*****************************************************************************/ - -/** - * @brief Gzipped file output stream class. - * - * This class implements ofstream for gzipped files. Seeking and putback - * is not supported yet. -*/ -class gzofstream : public std::ostream -{ -public: - // Default constructor - gzofstream(); - - /** - * @brief Construct stream on gzipped file to be opened. - * @param name File name. - * @param mode Open mode flags (forced to contain ios::out). - */ - explicit - gzofstream(const char* name, - std::ios_base::openmode mode = std::ios_base::out); - - /** - * @brief Construct stream on already open gzipped file. - * @param fd File descriptor. - * @param mode Open mode flags (forced to contain ios::out). - */ - explicit - gzofstream(int fd, - std::ios_base::openmode mode = std::ios_base::out); - - /** - * Obtain underlying stream buffer. - */ - gzfilebuf* - rdbuf() const - { return const_cast<gzfilebuf*>(&sb); } - - /** - * @brief Check if file is open. - * @return True if file is open. - */ - bool - is_open() { return sb.is_open(); } - - /** - * @brief Open gzipped file. - * @param name File name. - * @param mode Open mode flags (forced to contain ios::out). - * - * Stream will be in state good() if file opens successfully; - * otherwise in state fail(). This differs from the behavior of - * ofstream, which never sets the state to good() and therefore - * won't allow you to reuse the stream for a second file unless - * you manually clear() the state. The choice is a matter of - * convenience. - */ - void - open(const char* name, - std::ios_base::openmode mode = std::ios_base::out); - - /** - * @brief Attach to already open gzipped file. - * @param fd File descriptor. - * @param mode Open mode flags (forced to contain ios::out). - * - * Stream will be in state good() if attach succeeded; otherwise - * in state fail(). - */ - void - attach(int fd, - std::ios_base::openmode mode = std::ios_base::out); - - /** - * @brief Close gzipped file. - * - * Stream will be in state fail() if close failed. - */ - void - close(); - -private: - /** - * Underlying stream buffer. - */ - gzfilebuf sb; -}; - -/*****************************************************************************/ - -/** - * @brief Gzipped file output stream manipulator class. - * - * This class defines a two-argument manipulator for gzofstream. It is used - * as base for the setcompression(int,int) manipulator. -*/ -template<typename T1, typename T2> - class gzomanip2 - { - public: - // Allows insertor to peek at internals - template <typename Ta, typename Tb> - friend gzofstream& - operator<<(gzofstream&, - const gzomanip2<Ta,Tb>&); - - // Constructor - gzomanip2(gzofstream& (*f)(gzofstream&, T1, T2), - T1 v1, - T2 v2); - private: - // Underlying manipulator function - gzofstream& - (*func)(gzofstream&, T1, T2); - - // Arguments for manipulator function - T1 val1; - T2 val2; - }; - -/*****************************************************************************/ - -// Manipulator function thunks through to stream buffer -inline gzofstream& -setcompression(gzofstream &gzs, int l, int s = Z_DEFAULT_STRATEGY) -{ - (gzs.rdbuf())->setcompression(l, s); - return gzs; -} - -// Manipulator constructor stores arguments -template<typename T1, typename T2> - inline - gzomanip2<T1,T2>::gzomanip2(gzofstream &(*f)(gzofstream &, T1, T2), - T1 v1, - T2 v2) - : func(f), val1(v1), val2(v2) - { } - -// Insertor applies underlying manipulator function to stream -template<typename T1, typename T2> - inline gzofstream& - operator<<(gzofstream& s, const gzomanip2<T1,T2>& m) - { return (*m.func)(s, m.val1, m.val2); } - -// Insert this onto stream to simplify setting of compression level -inline gzomanip2<int,int> -setcompression(int l, int s = Z_DEFAULT_STRATEGY) -{ return gzomanip2<int,int>(&setcompression, l, s); } - -#endif // ZFSTREAM_H diff --git a/platform/win32/msvc/external/zlib/contrib/masmx64/bld_ml64.bat b/platform/win32/msvc/external/zlib/contrib/masmx64/bld_ml64.bat deleted file mode 100644 index 8f9343d0afd..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/masmx64/bld_ml64.bat +++ /dev/null @@ -1,2 +0,0 @@ -ml64.exe /Flinffasx64 /c /Zi inffasx64.asm -ml64.exe /Flgvmat64 /c /Zi gvmat64.asm diff --git a/platform/win32/msvc/external/zlib/contrib/masmx64/gvmat64.asm b/platform/win32/msvc/external/zlib/contrib/masmx64/gvmat64.asm deleted file mode 100644 index 9879c28b908..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/masmx64/gvmat64.asm +++ /dev/null @@ -1,553 +0,0 @@ -;uInt longest_match_x64( -; deflate_state *s, -; IPos cur_match); /* current match */ - -; gvmat64.asm -- Asm portion of the optimized longest_match for 32 bits x86_64 -; (AMD64 on Athlon 64, Opteron, Phenom -; and Intel EM64T on Pentium 4 with EM64T, Pentium D, Core 2 Duo, Core I5/I7) -; Copyright (C) 1995-2010 Jean-loup Gailly, Brian Raiter and Gilles Vollant. -; -; File written by Gilles Vollant, by converting to assembly the longest_match -; from Jean-loup Gailly in deflate.c of zLib and infoZip zip. -; -; and by taking inspiration on asm686 with masm, optimised assembly code -; from Brian Raiter, written 1998 -; -; This software is provided 'as-is', without any express or implied -; warranty. In no event will the authors be held liable for any damages -; arising from the use of this software. -; -; Permission is granted to anyone to use this software for any purpose, -; including commercial applications, and to alter it and redistribute it -; freely, subject to the following restrictions: -; -; 1. The origin of this software must not be misrepresented; you must not -; claim that you wrote the original software. If you use this software -; in a product, an acknowledgment in the product documentation would be -; appreciated but is not required. -; 2. Altered source versions must be plainly marked as such, and must not be -; misrepresented as being the original software -; 3. This notice may not be removed or altered from any source distribution. -; -; -; -; http://www.zlib.net -; http://www.winimage.com/zLibDll -; http://www.muppetlabs.com/~breadbox/software/assembly.html -; -; to compile this file for infozip Zip, I use option: -; ml64.exe /Flgvmat64 /c /Zi /DINFOZIP gvmat64.asm -; -; to compile this file for zLib, I use option: -; ml64.exe /Flgvmat64 /c /Zi gvmat64.asm -; Be carrefull to adapt zlib1222add below to your version of zLib -; (if you use a version of zLib before 1.0.4 or after 1.2.2.2, change -; value of zlib1222add later) -; -; This file compile with Microsoft Macro Assembler (x64) for AMD64 -; -; ml64.exe is given with Visual Studio 2005/2008/2010 and Windows WDK -; -; (you can get Windows WDK with ml64 for AMD64 from -; http://www.microsoft.com/whdc/Devtools/wdk/default.mspx for low price) -; - - -;uInt longest_match(s, cur_match) -; deflate_state *s; -; IPos cur_match; /* current match */ -.code -longest_match PROC - - -;LocalVarsSize equ 88 - LocalVarsSize equ 72 - -; register used : rax,rbx,rcx,rdx,rsi,rdi,r8,r9,r10,r11,r12 -; free register : r14,r15 -; register can be saved : rsp - - chainlenwmask equ rsp + 8 - LocalVarsSize ; high word: current chain len - ; low word: s->wmask -;window equ rsp + xx - LocalVarsSize ; local copy of s->window ; stored in r10 -;windowbestlen equ rsp + xx - LocalVarsSize ; s->window + bestlen , use r10+r11 -;scanstart equ rsp + xx - LocalVarsSize ; first two bytes of string ; stored in r12w -;scanend equ rsp + xx - LocalVarsSize ; last two bytes of string use ebx -;scanalign equ rsp + xx - LocalVarsSize ; dword-misalignment of string r13 -;bestlen equ rsp + xx - LocalVarsSize ; size of best match so far -> r11d -;scan equ rsp + xx - LocalVarsSize ; ptr to string wanting match -> r9 -IFDEF INFOZIP -ELSE - nicematch equ (rsp + 16 - LocalVarsSize) ; a good enough match size -ENDIF - -save_rdi equ rsp + 24 - LocalVarsSize -save_rsi equ rsp + 32 - LocalVarsSize -save_rbx equ rsp + 40 - LocalVarsSize -save_rbp equ rsp + 48 - LocalVarsSize -save_r12 equ rsp + 56 - LocalVarsSize -save_r13 equ rsp + 64 - LocalVarsSize -;save_r14 equ rsp + 72 - LocalVarsSize -;save_r15 equ rsp + 80 - LocalVarsSize - - -; summary of register usage -; scanend ebx -; scanendw bx -; chainlenwmask edx -; curmatch rsi -; curmatchd esi -; windowbestlen r8 -; scanalign r9 -; scanalignd r9d -; window r10 -; bestlen r11 -; bestlend r11d -; scanstart r12d -; scanstartw r12w -; scan r13 -; nicematch r14d -; limit r15 -; limitd r15d -; prev rcx - -; all the +4 offsets are due to the addition of pending_buf_size (in zlib -; in the deflate_state structure since the asm code was first written -; (if you compile with zlib 1.0.4 or older, remove the +4). -; Note : these value are good with a 8 bytes boundary pack structure - - - MAX_MATCH equ 258 - MIN_MATCH equ 3 - MIN_LOOKAHEAD equ (MAX_MATCH+MIN_MATCH+1) - - -;;; Offsets for fields in the deflate_state structure. These numbers -;;; are calculated from the definition of deflate_state, with the -;;; assumption that the compiler will dword-align the fields. (Thus, -;;; changing the definition of deflate_state could easily cause this -;;; program to crash horribly, without so much as a warning at -;;; compile time. Sigh.) - -; all the +zlib1222add offsets are due to the addition of fields -; in zlib in the deflate_state structure since the asm code was first written -; (if you compile with zlib 1.0.4 or older, use "zlib1222add equ (-4)"). -; (if you compile with zlib between 1.0.5 and 1.2.2.1, use "zlib1222add equ 0"). -; if you compile with zlib 1.2.2.2 or later , use "zlib1222add equ 8"). - - -IFDEF INFOZIP - -_DATA SEGMENT -COMM window_size:DWORD -; WMask ; 7fff -COMM window:BYTE:010040H -COMM prev:WORD:08000H -; MatchLen : unused -; PrevMatch : unused -COMM strstart:DWORD -COMM match_start:DWORD -; Lookahead : ignore -COMM prev_length:DWORD ; PrevLen -COMM max_chain_length:DWORD -COMM good_match:DWORD -COMM nice_match:DWORD -prev_ad equ OFFSET prev -window_ad equ OFFSET window -nicematch equ nice_match -_DATA ENDS -WMask equ 07fffh - -ELSE - - IFNDEF zlib1222add - zlib1222add equ 8 - ENDIF -dsWSize equ 56+zlib1222add+(zlib1222add/2) -dsWMask equ 64+zlib1222add+(zlib1222add/2) -dsWindow equ 72+zlib1222add -dsPrev equ 88+zlib1222add -dsMatchLen equ 128+zlib1222add -dsPrevMatch equ 132+zlib1222add -dsStrStart equ 140+zlib1222add -dsMatchStart equ 144+zlib1222add -dsLookahead equ 148+zlib1222add -dsPrevLen equ 152+zlib1222add -dsMaxChainLen equ 156+zlib1222add -dsGoodMatch equ 172+zlib1222add -dsNiceMatch equ 176+zlib1222add - -window_size equ [ rcx + dsWSize] -WMask equ [ rcx + dsWMask] -window_ad equ [ rcx + dsWindow] -prev_ad equ [ rcx + dsPrev] -strstart equ [ rcx + dsStrStart] -match_start equ [ rcx + dsMatchStart] -Lookahead equ [ rcx + dsLookahead] ; 0ffffffffh on infozip -prev_length equ [ rcx + dsPrevLen] -max_chain_length equ [ rcx + dsMaxChainLen] -good_match equ [ rcx + dsGoodMatch] -nice_match equ [ rcx + dsNiceMatch] -ENDIF - -; parameter 1 in r8(deflate state s), param 2 in rdx (cur match) - -; see http://weblogs.asp.net/oldnewthing/archive/2004/01/14/58579.aspx and -; http://msdn.microsoft.com/library/en-us/kmarch/hh/kmarch/64bitAMD_8e951dd2-ee77-4728-8702-55ce4b5dd24a.xml.asp -; -; All registers must be preserved across the call, except for -; rax, rcx, rdx, r8, r9, r10, and r11, which are scratch. - - - -;;; Save registers that the compiler may be using, and adjust esp to -;;; make room for our stack frame. - - -;;; Retrieve the function arguments. r8d will hold cur_match -;;; throughout the entire function. edx will hold the pointer to the -;;; deflate_state structure during the function's setup (before -;;; entering the main loop. - -; parameter 1 in rcx (deflate_state* s), param 2 in edx -> r8 (cur match) - -; this clear high 32 bits of r8, which can be garbage in both r8 and rdx - - mov [save_rdi],rdi - mov [save_rsi],rsi - mov [save_rbx],rbx - mov [save_rbp],rbp -IFDEF INFOZIP - mov r8d,ecx -ELSE - mov r8d,edx -ENDIF - mov [save_r12],r12 - mov [save_r13],r13 -; mov [save_r14],r14 -; mov [save_r15],r15 - - -;;; uInt wmask = s->w_mask; -;;; unsigned chain_length = s->max_chain_length; -;;; if (s->prev_length >= s->good_match) { -;;; chain_length >>= 2; -;;; } - - mov edi, prev_length - mov esi, good_match - mov eax, WMask - mov ebx, max_chain_length - cmp edi, esi - jl LastMatchGood - shr ebx, 2 -LastMatchGood: - -;;; chainlen is decremented once beforehand so that the function can -;;; use the sign flag instead of the zero flag for the exit test. -;;; It is then shifted into the high word, to make room for the wmask -;;; value, which it will always accompany. - - dec ebx - shl ebx, 16 - or ebx, eax - -;;; on zlib only -;;; if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead; - -IFDEF INFOZIP - mov [chainlenwmask], ebx -; on infozip nice_match = [nice_match] -ELSE - mov eax, nice_match - mov [chainlenwmask], ebx - mov r10d, Lookahead - cmp r10d, eax - cmovnl r10d, eax - mov [nicematch],r10d -ENDIF - -;;; register Bytef *scan = s->window + s->strstart; - mov r10, window_ad - mov ebp, strstart - lea r13, [r10 + rbp] - -;;; Determine how many bytes the scan ptr is off from being -;;; dword-aligned. - - mov r9,r13 - neg r13 - and r13,3 - -;;; IPos limit = s->strstart > (IPos)MAX_DIST(s) ? -;;; s->strstart - (IPos)MAX_DIST(s) : NIL; -IFDEF INFOZIP - mov eax,07efah ; MAX_DIST = (WSIZE-MIN_LOOKAHEAD) (0x8000-(3+8+1)) -ELSE - mov eax, window_size - sub eax, MIN_LOOKAHEAD -ENDIF - xor edi,edi - sub ebp, eax - - mov r11d, prev_length - - cmovng ebp,edi - -;;; int best_len = s->prev_length; - - -;;; Store the sum of s->window + best_len in esi locally, and in esi. - - lea rsi,[r10+r11] - -;;; register ush scan_start = *(ushf*)scan; -;;; register ush scan_end = *(ushf*)(scan+best_len-1); -;;; Posf *prev = s->prev; - - movzx r12d,word ptr [r9] - movzx ebx, word ptr [r9 + r11 - 1] - - mov rdi, prev_ad - -;;; Jump into the main loop. - - mov edx, [chainlenwmask] - - cmp bx,word ptr [rsi + r8 - 1] - jz LookupLoopIsZero - -LookupLoop1: - and r8d, edx - - movzx r8d, word ptr [rdi + r8*2] - cmp r8d, ebp - jbe LeaveNow - sub edx, 00010000h - js LeaveNow - -LoopEntry1: - cmp bx,word ptr [rsi + r8 - 1] - jz LookupLoopIsZero - -LookupLoop2: - and r8d, edx - - movzx r8d, word ptr [rdi + r8*2] - cmp r8d, ebp - jbe LeaveNow - sub edx, 00010000h - js LeaveNow - -LoopEntry2: - cmp bx,word ptr [rsi + r8 - 1] - jz LookupLoopIsZero - -LookupLoop4: - and r8d, edx - - movzx r8d, word ptr [rdi + r8*2] - cmp r8d, ebp - jbe LeaveNow - sub edx, 00010000h - js LeaveNow - -LoopEntry4: - - cmp bx,word ptr [rsi + r8 - 1] - jnz LookupLoop1 - jmp LookupLoopIsZero - - -;;; do { -;;; match = s->window + cur_match; -;;; if (*(ushf*)(match+best_len-1) != scan_end || -;;; *(ushf*)match != scan_start) continue; -;;; [...] -;;; } while ((cur_match = prev[cur_match & wmask]) > limit -;;; && --chain_length != 0); -;;; -;;; Here is the inner loop of the function. The function will spend the -;;; majority of its time in this loop, and majority of that time will -;;; be spent in the first ten instructions. -;;; -;;; Within this loop: -;;; ebx = scanend -;;; r8d = curmatch -;;; edx = chainlenwmask - i.e., ((chainlen << 16) | wmask) -;;; esi = windowbestlen - i.e., (window + bestlen) -;;; edi = prev -;;; ebp = limit - -LookupLoop: - and r8d, edx - - movzx r8d, word ptr [rdi + r8*2] - cmp r8d, ebp - jbe LeaveNow - sub edx, 00010000h - js LeaveNow - -LoopEntry: - - cmp bx,word ptr [rsi + r8 - 1] - jnz LookupLoop1 -LookupLoopIsZero: - cmp r12w, word ptr [r10 + r8] - jnz LookupLoop1 - - -;;; Store the current value of chainlen. - mov [chainlenwmask], edx - -;;; Point edi to the string under scrutiny, and esi to the string we -;;; are hoping to match it up with. In actuality, esi and edi are -;;; both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and edx is -;;; initialized to -(MAX_MATCH_8 - scanalign). - - lea rsi,[r8+r10] - mov rdx, 0fffffffffffffef8h; -(MAX_MATCH_8) - lea rsi, [rsi + r13 + 0108h] ;MAX_MATCH_8] - lea rdi, [r9 + r13 + 0108h] ;MAX_MATCH_8] - - prefetcht1 [rsi+rdx] - prefetcht1 [rdi+rdx] - - -;;; Test the strings for equality, 8 bytes at a time. At the end, -;;; adjust rdx so that it is offset to the exact byte that mismatched. -;;; -;;; We already know at this point that the first three bytes of the -;;; strings match each other, and they can be safely passed over before -;;; starting the compare loop. So what this code does is skip over 0-3 -;;; bytes, as much as necessary in order to dword-align the edi -;;; pointer. (rsi will still be misaligned three times out of four.) -;;; -;;; It should be confessed that this loop usually does not represent -;;; much of the total running time. Replacing it with a more -;;; straightforward "rep cmpsb" would not drastically degrade -;;; performance. - - -LoopCmps: - mov rax, [rsi + rdx] - xor rax, [rdi + rdx] - jnz LeaveLoopCmps - - mov rax, [rsi + rdx + 8] - xor rax, [rdi + rdx + 8] - jnz LeaveLoopCmps8 - - - mov rax, [rsi + rdx + 8+8] - xor rax, [rdi + rdx + 8+8] - jnz LeaveLoopCmps16 - - add rdx,8+8+8 - - jnz short LoopCmps - jmp short LenMaximum -LeaveLoopCmps16: add rdx,8 -LeaveLoopCmps8: add rdx,8 -LeaveLoopCmps: - - test eax, 0000FFFFh - jnz LenLower - - test eax,0ffffffffh - - jnz LenLower32 - - add rdx,4 - shr rax,32 - or ax,ax - jnz LenLower - -LenLower32: - shr eax,16 - add rdx,2 -LenLower: sub al, 1 - adc rdx, 0 -;;; Calculate the length of the match. If it is longer than MAX_MATCH, -;;; then automatically accept it as the best possible match and leave. - - lea rax, [rdi + rdx] - sub rax, r9 - cmp eax, MAX_MATCH - jge LenMaximum - -;;; If the length of the match is not longer than the best match we -;;; have so far, then forget it and return to the lookup loop. -;/////////////////////////////////// - - cmp eax, r11d - jg LongerMatch - - lea rsi,[r10+r11] - - mov rdi, prev_ad - mov edx, [chainlenwmask] - jmp LookupLoop - -;;; s->match_start = cur_match; -;;; best_len = len; -;;; if (len >= nice_match) break; -;;; scan_end = *(ushf*)(scan+best_len-1); - -LongerMatch: - mov r11d, eax - mov match_start, r8d - cmp eax, [nicematch] - jge LeaveNow - - lea rsi,[r10+rax] - - movzx ebx, word ptr [r9 + rax - 1] - mov rdi, prev_ad - mov edx, [chainlenwmask] - jmp LookupLoop - -;;; Accept the current string, with the maximum possible length. - -LenMaximum: - mov r11d,MAX_MATCH - mov match_start, r8d - -;;; if ((uInt)best_len <= s->lookahead) return (uInt)best_len; -;;; return s->lookahead; - -LeaveNow: -IFDEF INFOZIP - mov eax,r11d -ELSE - mov eax, Lookahead - cmp r11d, eax - cmovng eax, r11d -ENDIF - -;;; Restore the stack and return from whence we came. - - - mov rsi,[save_rsi] - mov rdi,[save_rdi] - mov rbx,[save_rbx] - mov rbp,[save_rbp] - mov r12,[save_r12] - mov r13,[save_r13] -; mov r14,[save_r14] -; mov r15,[save_r15] - - - ret 0 -; please don't remove this string ! -; Your can freely use gvmat64 in any free or commercial app -; but it is far better don't remove the string in the binary! - db 0dh,0ah,"asm686 with masm, optimised assembly code from Brian Raiter, written 1998, converted to amd 64 by Gilles Vollant 2005",0dh,0ah,0 -longest_match ENDP - -match_init PROC - ret 0 -match_init ENDP - - -END diff --git a/platform/win32/msvc/external/zlib/contrib/masmx64/inffas8664.c b/platform/win32/msvc/external/zlib/contrib/masmx64/inffas8664.c deleted file mode 100644 index e8af06fa023..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/masmx64/inffas8664.c +++ /dev/null @@ -1,186 +0,0 @@ -/* inffas8664.c is a hand tuned assembler version of inffast.c - fast decoding - * version for AMD64 on Windows using Microsoft C compiler - * - * Copyright (C) 1995-2003 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - * - * Copyright (C) 2003 Chris Anderson <christop@charm.net> - * Please use the copyright conditions above. - * - * 2005 - Adaptation to Microsoft C Compiler for AMD64 by Gilles Vollant - * - * inffas8664.c call function inffas8664fnc in inffasx64.asm - * inffasx64.asm is automatically convert from AMD64 portion of inffas86.c - * - * Dec-29-2003 -- I added AMD64 inflate asm support. This version is also - * slightly quicker on x86 systems because, instead of using rep movsb to copy - * data, it uses rep movsw, which moves data in 2-byte chunks instead of single - * bytes. I've tested the AMD64 code on a Fedora Core 1 + the x86_64 updates - * from http://fedora.linux.duke.edu/fc1_x86_64 - * which is running on an Athlon 64 3000+ / Gigabyte GA-K8VT800M system with - * 1GB ram. The 64-bit version is about 4% faster than the 32-bit version, - * when decompressing mozilla-source-1.3.tar.gz. - * - * Mar-13-2003 -- Most of this is derived from inffast.S which is derived from - * the gcc -S output of zlib-1.2.0/inffast.c. Zlib-1.2.0 is in beta release at - * the moment. I have successfully compiled and tested this code with gcc2.96, - * gcc3.2, icc5.0, msvc6.0. It is very close to the speed of inffast.S - * compiled with gcc -DNO_MMX, but inffast.S is still faster on the P3 with MMX - * enabled. I will attempt to merge the MMX code into this version. Newer - * versions of this and inffast.S can be found at - * http://www.eetbeetee.com/zlib/ and http://www.charm.net/~christop/zlib/ - * - */ - -#include <stdio.h> -#include "zutil.h" -#include "inftrees.h" -#include "inflate.h" -#include "inffast.h" - -/* Mark Adler's comments from inffast.c: */ - -/* - Decode literal, length, and distance codes and write out the resulting - literal and match bytes until either not enough input or output is - available, an end-of-block is encountered, or a data error is encountered. - When large enough input and output buffers are supplied to inflate(), for - example, a 16K input buffer and a 64K output buffer, more than 95% of the - inflate execution time is spent in this routine. - - Entry assumptions: - - state->mode == LEN - strm->avail_in >= 6 - strm->avail_out >= 258 - start >= strm->avail_out - state->bits < 8 - - On return, state->mode is one of: - - LEN -- ran out of enough output space or enough available input - TYPE -- reached end of block code, inflate() to interpret next block - BAD -- error in block data - - Notes: - - - The maximum input bits used by a length/distance pair is 15 bits for the - length code, 5 bits for the length extra, 15 bits for the distance code, - and 13 bits for the distance extra. This totals 48 bits, or six bytes. - Therefore if strm->avail_in >= 6, then there is enough input to avoid - checking for available input while decoding. - - - The maximum bytes that a single length/distance pair can output is 258 - bytes, which is the maximum length that can be coded. inflate_fast() - requires strm->avail_out >= 258 for each loop to avoid checking for - output space. - */ - - - - typedef struct inffast_ar { -/* 64 32 x86 x86_64 */ -/* ar offset register */ -/* 0 0 */ void *esp; /* esp save */ -/* 8 4 */ void *ebp; /* ebp save */ -/* 16 8 */ unsigned char FAR *in; /* esi rsi local strm->next_in */ -/* 24 12 */ unsigned char FAR *last; /* r9 while in < last */ -/* 32 16 */ unsigned char FAR *out; /* edi rdi local strm->next_out */ -/* 40 20 */ unsigned char FAR *beg; /* inflate()'s init next_out */ -/* 48 24 */ unsigned char FAR *end; /* r10 while out < end */ -/* 56 28 */ unsigned char FAR *window;/* size of window, wsize!=0 */ -/* 64 32 */ code const FAR *lcode; /* ebp rbp local strm->lencode */ -/* 72 36 */ code const FAR *dcode; /* r11 local strm->distcode */ -/* 80 40 */ size_t /*unsigned long */hold; /* edx rdx local strm->hold */ -/* 88 44 */ unsigned bits; /* ebx rbx local strm->bits */ -/* 92 48 */ unsigned wsize; /* window size */ -/* 96 52 */ unsigned write; /* window write index */ -/*100 56 */ unsigned lmask; /* r12 mask for lcode */ -/*104 60 */ unsigned dmask; /* r13 mask for dcode */ -/*108 64 */ unsigned len; /* r14 match length */ -/*112 68 */ unsigned dist; /* r15 match distance */ -/*116 72 */ unsigned status; /* set when state chng*/ - } type_ar; -#ifdef ASMINF - -void inflate_fast(strm, start) -z_streamp strm; -unsigned start; /* inflate()'s starting value for strm->avail_out */ -{ - struct inflate_state FAR *state; - type_ar ar; - void inffas8664fnc(struct inffast_ar * par); - - - -#if (defined( __GNUC__ ) && defined( __amd64__ ) && ! defined( __i386 )) || (defined(_MSC_VER) && defined(_M_AMD64)) -#define PAD_AVAIL_IN 6 -#define PAD_AVAIL_OUT 258 -#else -#define PAD_AVAIL_IN 5 -#define PAD_AVAIL_OUT 257 -#endif - - /* copy state to local variables */ - state = (struct inflate_state FAR *)strm->state; - - ar.in = strm->next_in; - ar.last = ar.in + (strm->avail_in - PAD_AVAIL_IN); - ar.out = strm->next_out; - ar.beg = ar.out - (start - strm->avail_out); - ar.end = ar.out + (strm->avail_out - PAD_AVAIL_OUT); - ar.wsize = state->wsize; - ar.write = state->wnext; - ar.window = state->window; - ar.hold = state->hold; - ar.bits = state->bits; - ar.lcode = state->lencode; - ar.dcode = state->distcode; - ar.lmask = (1U << state->lenbits) - 1; - ar.dmask = (1U << state->distbits) - 1; - - /* decode literals and length/distances until end-of-block or not enough - input data or output space */ - - /* align in on 1/2 hold size boundary */ - while (((size_t)(void *)ar.in & (sizeof(ar.hold) / 2 - 1)) != 0) { - ar.hold += (unsigned long)*ar.in++ << ar.bits; - ar.bits += 8; - } - - inffas8664fnc(&ar); - - if (ar.status > 1) { - if (ar.status == 2) - strm->msg = "invalid literal/length code"; - else if (ar.status == 3) - strm->msg = "invalid distance code"; - else - strm->msg = "invalid distance too far back"; - state->mode = BAD; - } - else if ( ar.status == 1 ) { - state->mode = TYPE; - } - - /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ - ar.len = ar.bits >> 3; - ar.in -= ar.len; - ar.bits -= ar.len << 3; - ar.hold &= (1U << ar.bits) - 1; - - /* update state and return */ - strm->next_in = ar.in; - strm->next_out = ar.out; - strm->avail_in = (unsigned)(ar.in < ar.last ? - PAD_AVAIL_IN + (ar.last - ar.in) : - PAD_AVAIL_IN - (ar.in - ar.last)); - strm->avail_out = (unsigned)(ar.out < ar.end ? - PAD_AVAIL_OUT + (ar.end - ar.out) : - PAD_AVAIL_OUT - (ar.out - ar.end)); - state->hold = (unsigned long)ar.hold; - state->bits = ar.bits; - return; -} - -#endif diff --git a/platform/win32/msvc/external/zlib/contrib/masmx64/inffasx64.asm b/platform/win32/msvc/external/zlib/contrib/masmx64/inffasx64.asm deleted file mode 100644 index 60a8d89b718..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/masmx64/inffasx64.asm +++ /dev/null @@ -1,396 +0,0 @@ -; inffasx64.asm is a hand tuned assembler version of inffast.c - fast decoding -; version for AMD64 on Windows using Microsoft C compiler -; -; inffasx64.asm is automatically convert from AMD64 portion of inffas86.c -; inffasx64.asm is called by inffas8664.c, which contain more info. - - -; to compile this file, I use option -; ml64.exe /Flinffasx64 /c /Zi inffasx64.asm -; with Microsoft Macro Assembler (x64) for AMD64 -; - -; This file compile with Microsoft Macro Assembler (x64) for AMD64 -; -; ml64.exe is given with Visual Studio 2005/2008/2010 and Windows WDK -; -; (you can get Windows WDK with ml64 for AMD64 from -; http://www.microsoft.com/whdc/Devtools/wdk/default.mspx for low price) -; - - -.code -inffas8664fnc PROC - -; see http://weblogs.asp.net/oldnewthing/archive/2004/01/14/58579.aspx and -; http://msdn.microsoft.com/library/en-us/kmarch/hh/kmarch/64bitAMD_8e951dd2-ee77-4728-8702-55ce4b5dd24a.xml.asp -; -; All registers must be preserved across the call, except for -; rax, rcx, rdx, r8, r-9, r10, and r11, which are scratch. - - - mov [rsp-8],rsi - mov [rsp-16],rdi - mov [rsp-24],r12 - mov [rsp-32],r13 - mov [rsp-40],r14 - mov [rsp-48],r15 - mov [rsp-56],rbx - - mov rax,rcx - - mov [rax+8], rbp ; /* save regs rbp and rsp */ - mov [rax], rsp - - mov rsp, rax ; /* make rsp point to &ar */ - - mov rsi, [rsp+16] ; /* rsi = in */ - mov rdi, [rsp+32] ; /* rdi = out */ - mov r9, [rsp+24] ; /* r9 = last */ - mov r10, [rsp+48] ; /* r10 = end */ - mov rbp, [rsp+64] ; /* rbp = lcode */ - mov r11, [rsp+72] ; /* r11 = dcode */ - mov rdx, [rsp+80] ; /* rdx = hold */ - mov ebx, [rsp+88] ; /* ebx = bits */ - mov r12d, [rsp+100] ; /* r12d = lmask */ - mov r13d, [rsp+104] ; /* r13d = dmask */ - ; /* r14d = len */ - ; /* r15d = dist */ - - - cld - cmp r10, rdi - je L_one_time ; /* if only one decode left */ - cmp r9, rsi - - jne L_do_loop - - -L_one_time: - mov r8, r12 ; /* r8 = lmask */ - cmp bl, 32 - ja L_get_length_code_one_time - - lodsd ; /* eax = *(uint *)in++ */ - mov cl, bl ; /* cl = bits, needs it for shifting */ - add bl, 32 ; /* bits += 32 */ - shl rax, cl - or rdx, rax ; /* hold |= *((uint *)in)++ << bits */ - jmp L_get_length_code_one_time - -ALIGN 4 -L_while_test: - cmp r10, rdi - jbe L_break_loop - cmp r9, rsi - jbe L_break_loop - -L_do_loop: - mov r8, r12 ; /* r8 = lmask */ - cmp bl, 32 - ja L_get_length_code ; /* if (32 < bits) */ - - lodsd ; /* eax = *(uint *)in++ */ - mov cl, bl ; /* cl = bits, needs it for shifting */ - add bl, 32 ; /* bits += 32 */ - shl rax, cl - or rdx, rax ; /* hold |= *((uint *)in)++ << bits */ - -L_get_length_code: - and r8, rdx ; /* r8 &= hold */ - mov eax, [rbp+r8*4] ; /* eax = lcode[hold & lmask] */ - - mov cl, ah ; /* cl = this.bits */ - sub bl, ah ; /* bits -= this.bits */ - shr rdx, cl ; /* hold >>= this.bits */ - - test al, al - jnz L_test_for_length_base ; /* if (op != 0) 45.7% */ - - mov r8, r12 ; /* r8 = lmask */ - shr eax, 16 ; /* output this.val char */ - stosb - -L_get_length_code_one_time: - and r8, rdx ; /* r8 &= hold */ - mov eax, [rbp+r8*4] ; /* eax = lcode[hold & lmask] */ - -L_dolen: - mov cl, ah ; /* cl = this.bits */ - sub bl, ah ; /* bits -= this.bits */ - shr rdx, cl ; /* hold >>= this.bits */ - - test al, al - jnz L_test_for_length_base ; /* if (op != 0) 45.7% */ - - shr eax, 16 ; /* output this.val char */ - stosb - jmp L_while_test - -ALIGN 4 -L_test_for_length_base: - mov r14d, eax ; /* len = this */ - shr r14d, 16 ; /* len = this.val */ - mov cl, al - - test al, 16 - jz L_test_for_second_level_length ; /* if ((op & 16) == 0) 8% */ - and cl, 15 ; /* op &= 15 */ - jz L_decode_distance ; /* if (!op) */ - -L_add_bits_to_len: - sub bl, cl - xor eax, eax - inc eax - shl eax, cl - dec eax - and eax, edx ; /* eax &= hold */ - shr rdx, cl - add r14d, eax ; /* len += hold & mask[op] */ - -L_decode_distance: - mov r8, r13 ; /* r8 = dmask */ - cmp bl, 32 - ja L_get_distance_code ; /* if (32 < bits) */ - - lodsd ; /* eax = *(uint *)in++ */ - mov cl, bl ; /* cl = bits, needs it for shifting */ - add bl, 32 ; /* bits += 32 */ - shl rax, cl - or rdx, rax ; /* hold |= *((uint *)in)++ << bits */ - -L_get_distance_code: - and r8, rdx ; /* r8 &= hold */ - mov eax, [r11+r8*4] ; /* eax = dcode[hold & dmask] */ - -L_dodist: - mov r15d, eax ; /* dist = this */ - shr r15d, 16 ; /* dist = this.val */ - mov cl, ah - sub bl, ah ; /* bits -= this.bits */ - shr rdx, cl ; /* hold >>= this.bits */ - mov cl, al ; /* cl = this.op */ - - test al, 16 ; /* if ((op & 16) == 0) */ - jz L_test_for_second_level_dist - and cl, 15 ; /* op &= 15 */ - jz L_check_dist_one - -L_add_bits_to_dist: - sub bl, cl - xor eax, eax - inc eax - shl eax, cl - dec eax ; /* (1 << op) - 1 */ - and eax, edx ; /* eax &= hold */ - shr rdx, cl - add r15d, eax ; /* dist += hold & ((1 << op) - 1) */ - -L_check_window: - mov r8, rsi ; /* save in so from can use it's reg */ - mov rax, rdi - sub rax, [rsp+40] ; /* nbytes = out - beg */ - - cmp eax, r15d - jb L_clip_window ; /* if (dist > nbytes) 4.2% */ - - mov ecx, r14d ; /* ecx = len */ - mov rsi, rdi - sub rsi, r15 ; /* from = out - dist */ - - sar ecx, 1 - jnc L_copy_two ; /* if len % 2 == 0 */ - - rep movsw - mov al, [rsi] - mov [rdi], al - inc rdi - - mov rsi, r8 ; /* move in back to %rsi, toss from */ - jmp L_while_test - -L_copy_two: - rep movsw - mov rsi, r8 ; /* move in back to %rsi, toss from */ - jmp L_while_test - -ALIGN 4 -L_check_dist_one: - cmp r15d, 1 ; /* if dist 1, is a memset */ - jne L_check_window - cmp [rsp+40], rdi ; /* if out == beg, outside window */ - je L_check_window - - mov ecx, r14d ; /* ecx = len */ - mov al, [rdi-1] - mov ah, al - - sar ecx, 1 - jnc L_set_two - mov [rdi], al - inc rdi - -L_set_two: - rep stosw - jmp L_while_test - -ALIGN 4 -L_test_for_second_level_length: - test al, 64 - jnz L_test_for_end_of_block ; /* if ((op & 64) != 0) */ - - xor eax, eax - inc eax - shl eax, cl - dec eax - and eax, edx ; /* eax &= hold */ - add eax, r14d ; /* eax += len */ - mov eax, [rbp+rax*4] ; /* eax = lcode[val+(hold&mask[op])]*/ - jmp L_dolen - -ALIGN 4 -L_test_for_second_level_dist: - test al, 64 - jnz L_invalid_distance_code ; /* if ((op & 64) != 0) */ - - xor eax, eax - inc eax - shl eax, cl - dec eax - and eax, edx ; /* eax &= hold */ - add eax, r15d ; /* eax += dist */ - mov eax, [r11+rax*4] ; /* eax = dcode[val+(hold&mask[op])]*/ - jmp L_dodist - -ALIGN 4 -L_clip_window: - mov ecx, eax ; /* ecx = nbytes */ - mov eax, [rsp+92] ; /* eax = wsize, prepare for dist cmp */ - neg ecx ; /* nbytes = -nbytes */ - - cmp eax, r15d - jb L_invalid_distance_too_far ; /* if (dist > wsize) */ - - add ecx, r15d ; /* nbytes = dist - nbytes */ - cmp dword ptr [rsp+96], 0 - jne L_wrap_around_window ; /* if (write != 0) */ - - mov rsi, [rsp+56] ; /* from = window */ - sub eax, ecx ; /* eax -= nbytes */ - add rsi, rax ; /* from += wsize - nbytes */ - - mov eax, r14d ; /* eax = len */ - cmp r14d, ecx - jbe L_do_copy ; /* if (nbytes >= len) */ - - sub eax, ecx ; /* eax -= nbytes */ - rep movsb - mov rsi, rdi - sub rsi, r15 ; /* from = &out[ -dist ] */ - jmp L_do_copy - -ALIGN 4 -L_wrap_around_window: - mov eax, [rsp+96] ; /* eax = write */ - cmp ecx, eax - jbe L_contiguous_in_window ; /* if (write >= nbytes) */ - - mov esi, [rsp+92] ; /* from = wsize */ - add rsi, [rsp+56] ; /* from += window */ - add rsi, rax ; /* from += write */ - sub rsi, rcx ; /* from -= nbytes */ - sub ecx, eax ; /* nbytes -= write */ - - mov eax, r14d ; /* eax = len */ - cmp eax, ecx - jbe L_do_copy ; /* if (nbytes >= len) */ - - sub eax, ecx ; /* len -= nbytes */ - rep movsb - mov rsi, [rsp+56] ; /* from = window */ - mov ecx, [rsp+96] ; /* nbytes = write */ - cmp eax, ecx - jbe L_do_copy ; /* if (nbytes >= len) */ - - sub eax, ecx ; /* len -= nbytes */ - rep movsb - mov rsi, rdi - sub rsi, r15 ; /* from = out - dist */ - jmp L_do_copy - -ALIGN 4 -L_contiguous_in_window: - mov rsi, [rsp+56] ; /* rsi = window */ - add rsi, rax - sub rsi, rcx ; /* from += write - nbytes */ - - mov eax, r14d ; /* eax = len */ - cmp eax, ecx - jbe L_do_copy ; /* if (nbytes >= len) */ - - sub eax, ecx ; /* len -= nbytes */ - rep movsb - mov rsi, rdi - sub rsi, r15 ; /* from = out - dist */ - jmp L_do_copy ; /* if (nbytes >= len) */ - -ALIGN 4 -L_do_copy: - mov ecx, eax ; /* ecx = len */ - rep movsb - - mov rsi, r8 ; /* move in back to %esi, toss from */ - jmp L_while_test - -L_test_for_end_of_block: - test al, 32 - jz L_invalid_literal_length_code - mov dword ptr [rsp+116], 1 - jmp L_break_loop_with_status - -L_invalid_literal_length_code: - mov dword ptr [rsp+116], 2 - jmp L_break_loop_with_status - -L_invalid_distance_code: - mov dword ptr [rsp+116], 3 - jmp L_break_loop_with_status - -L_invalid_distance_too_far: - mov dword ptr [rsp+116], 4 - jmp L_break_loop_with_status - -L_break_loop: - mov dword ptr [rsp+116], 0 - -L_break_loop_with_status: -; /* put in, out, bits, and hold back into ar and pop esp */ - mov [rsp+16], rsi ; /* in */ - mov [rsp+32], rdi ; /* out */ - mov [rsp+88], ebx ; /* bits */ - mov [rsp+80], rdx ; /* hold */ - - mov rax, [rsp] ; /* restore rbp and rsp */ - mov rbp, [rsp+8] - mov rsp, rax - - - - mov rsi,[rsp-8] - mov rdi,[rsp-16] - mov r12,[rsp-24] - mov r13,[rsp-32] - mov r14,[rsp-40] - mov r15,[rsp-48] - mov rbx,[rsp-56] - - ret 0 -; : -; : "m" (ar) -; : "memory", "%rax", "%rbx", "%rcx", "%rdx", "%rsi", "%rdi", -; "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15" -; ); - -inffas8664fnc ENDP -;_TEXT ENDS -END diff --git a/platform/win32/msvc/external/zlib/contrib/masmx64/readme.txt b/platform/win32/msvc/external/zlib/contrib/masmx64/readme.txt deleted file mode 100644 index 2da6733412a..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/masmx64/readme.txt +++ /dev/null @@ -1,31 +0,0 @@ -Summary -------- -This directory contains ASM implementations of the functions -longest_match() and inflate_fast(), for 64 bits x86 (both AMD64 and Intel EM64t), -for use with Microsoft Macro Assembler (x64) for AMD64 and Microsoft C++ 64 bits. - -gvmat64.asm is written by Gilles Vollant (2005), by using Brian Raiter 686/32 bits - assembly optimized version from Jean-loup Gailly original longest_match function - -inffasx64.asm and inffas8664.c were written by Chris Anderson, by optimizing - original function from Mark Adler - -Use instructions ----------------- -Assemble the .asm files using MASM and put the object files into the zlib source -directory. You can also get object files here: - - http://www.winimage.com/zLibDll/zlib124_masm_obj.zip - -define ASMV and ASMINF in your project. Include inffas8664.c in your source tree, -and inffasx64.obj and gvmat64.obj as object to link. - - -Build instructions ------------------- -run bld_64.bat with Microsoft Macro Assembler (x64) for AMD64 (ml64.exe) - -ml64.exe is given with Visual Studio 2005, Windows 2003 server DDK - -You can get Windows 2003 server DDK with ml64 and cl for AMD64 from - http://www.microsoft.com/whdc/devtools/ddk/default.mspx for low price) diff --git a/platform/win32/msvc/external/zlib/contrib/masmx86/bld_ml32.bat b/platform/win32/msvc/external/zlib/contrib/masmx86/bld_ml32.bat deleted file mode 100644 index e1b86bf68a9..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/masmx86/bld_ml32.bat +++ /dev/null @@ -1,2 +0,0 @@ -ml /coff /Zi /c /Flmatch686.lst match686.asm -ml /coff /Zi /c /Flinffas32.lst inffas32.asm diff --git a/platform/win32/msvc/external/zlib/contrib/masmx86/inffas32.asm b/platform/win32/msvc/external/zlib/contrib/masmx86/inffas32.asm deleted file mode 100644 index 03d20f838bf..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/masmx86/inffas32.asm +++ /dev/null @@ -1,1080 +0,0 @@ -;/* inffas32.asm is a hand tuned assembler version of inffast.c -- fast decoding -; * -; * inffas32.asm is derivated from inffas86.c, with translation of assembly code -; * -; * Copyright (C) 1995-2003 Mark Adler -; * For conditions of distribution and use, see copyright notice in zlib.h -; * -; * Copyright (C) 2003 Chris Anderson <christop@charm.net> -; * Please use the copyright conditions above. -; * -; * Mar-13-2003 -- Most of this is derived from inffast.S which is derived from -; * the gcc -S output of zlib-1.2.0/inffast.c. Zlib-1.2.0 is in beta release at -; * the moment. I have successfully compiled and tested this code with gcc2.96, -; * gcc3.2, icc5.0, msvc6.0. It is very close to the speed of inffast.S -; * compiled with gcc -DNO_MMX, but inffast.S is still faster on the P3 with MMX -; * enabled. I will attempt to merge the MMX code into this version. Newer -; * versions of this and inffast.S can be found at -; * http://www.eetbeetee.com/zlib/ and http://www.charm.net/~christop/zlib/ -; * -; * 2005 : modification by Gilles Vollant -; */ -; For Visual C++ 4.x and higher and ML 6.x and higher -; ml.exe is in directory \MASM611C of Win95 DDK -; ml.exe is also distributed in http://www.masm32.com/masmdl.htm -; and in VC++2003 toolkit at http://msdn.microsoft.com/visualc/vctoolkit2003/ -; -; -; compile with command line option -; ml /coff /Zi /c /Flinffas32.lst inffas32.asm - -; if you define NO_GZIP (see inflate.h), compile with -; ml /coff /Zi /c /Flinffas32.lst /DNO_GUNZIP inffas32.asm - - -; zlib122sup is 0 fort zlib 1.2.2.1 and lower -; zlib122sup is 8 fort zlib 1.2.2.2 and more (with addition of dmax and head -; in inflate_state in inflate.h) -zlib1222sup equ 8 - - -IFDEF GUNZIP - INFLATE_MODE_TYPE equ 11 - INFLATE_MODE_BAD equ 26 -ELSE - IFNDEF NO_GUNZIP - INFLATE_MODE_TYPE equ 11 - INFLATE_MODE_BAD equ 26 - ELSE - INFLATE_MODE_TYPE equ 3 - INFLATE_MODE_BAD equ 17 - ENDIF -ENDIF - - -; 75 "inffast.S" -;FILE "inffast.S" - -;;;GLOBAL _inflate_fast - -;;;SECTION .text - - - - .586p - .mmx - - name inflate_fast_x86 - .MODEL FLAT - -_DATA segment -inflate_fast_use_mmx: - dd 1 - - -_TEXT segment - - - -ALIGN 4 - db 'Fast decoding Code from Chris Anderson' - db 0 - -ALIGN 4 -invalid_literal_length_code_msg: - db 'invalid literal/length code' - db 0 - -ALIGN 4 -invalid_distance_code_msg: - db 'invalid distance code' - db 0 - -ALIGN 4 -invalid_distance_too_far_msg: - db 'invalid distance too far back' - db 0 - - -ALIGN 4 -inflate_fast_mask: -dd 0 -dd 1 -dd 3 -dd 7 -dd 15 -dd 31 -dd 63 -dd 127 -dd 255 -dd 511 -dd 1023 -dd 2047 -dd 4095 -dd 8191 -dd 16383 -dd 32767 -dd 65535 -dd 131071 -dd 262143 -dd 524287 -dd 1048575 -dd 2097151 -dd 4194303 -dd 8388607 -dd 16777215 -dd 33554431 -dd 67108863 -dd 134217727 -dd 268435455 -dd 536870911 -dd 1073741823 -dd 2147483647 -dd 4294967295 - - -mode_state equ 0 ;/* state->mode */ -wsize_state equ (32+zlib1222sup) ;/* state->wsize */ -write_state equ (36+4+zlib1222sup) ;/* state->write */ -window_state equ (40+4+zlib1222sup) ;/* state->window */ -hold_state equ (44+4+zlib1222sup) ;/* state->hold */ -bits_state equ (48+4+zlib1222sup) ;/* state->bits */ -lencode_state equ (64+4+zlib1222sup) ;/* state->lencode */ -distcode_state equ (68+4+zlib1222sup) ;/* state->distcode */ -lenbits_state equ (72+4+zlib1222sup) ;/* state->lenbits */ -distbits_state equ (76+4+zlib1222sup) ;/* state->distbits */ - - -;;SECTION .text -; 205 "inffast.S" -;GLOBAL inflate_fast_use_mmx - -;SECTION .data - - -; GLOBAL inflate_fast_use_mmx:object -;.size inflate_fast_use_mmx, 4 -; 226 "inffast.S" -;SECTION .text - -ALIGN 4 -_inflate_fast proc near -.FPO (16, 4, 0, 0, 1, 0) - push edi - push esi - push ebp - push ebx - pushfd - sub esp,64 - cld - - - - - mov esi, [esp+88] - mov edi, [esi+28] - - - - - - - - mov edx, [esi+4] - mov eax, [esi+0] - - add edx,eax - sub edx,11 - - mov [esp+44],eax - mov [esp+20],edx - - mov ebp, [esp+92] - mov ecx, [esi+16] - mov ebx, [esi+12] - - sub ebp,ecx - neg ebp - add ebp,ebx - - sub ecx,257 - add ecx,ebx - - mov [esp+60],ebx - mov [esp+40],ebp - mov [esp+16],ecx -; 285 "inffast.S" - mov eax, [edi+lencode_state] - mov ecx, [edi+distcode_state] - - mov [esp+8],eax - mov [esp+12],ecx - - mov eax,1 - mov ecx, [edi+lenbits_state] - shl eax,cl - dec eax - mov [esp+0],eax - - mov eax,1 - mov ecx, [edi+distbits_state] - shl eax,cl - dec eax - mov [esp+4],eax - - mov eax, [edi+wsize_state] - mov ecx, [edi+write_state] - mov edx, [edi+window_state] - - mov [esp+52],eax - mov [esp+48],ecx - mov [esp+56],edx - - mov ebp, [edi+hold_state] - mov ebx, [edi+bits_state] -; 321 "inffast.S" - mov esi, [esp+44] - mov ecx, [esp+20] - cmp ecx,esi - ja L_align_long - - add ecx,11 - sub ecx,esi - mov eax,12 - sub eax,ecx - lea edi, [esp+28] - rep movsb - mov ecx,eax - xor eax,eax - rep stosb - lea esi, [esp+28] - mov [esp+20],esi - jmp L_is_aligned - - -L_align_long: - test esi,3 - jz L_is_aligned - xor eax,eax - mov al, [esi] - inc esi - mov ecx,ebx - add ebx,8 - shl eax,cl - or ebp,eax - jmp L_align_long - -L_is_aligned: - mov edi, [esp+60] -; 366 "inffast.S" -L_check_mmx: - cmp dword ptr [inflate_fast_use_mmx],2 - je L_init_mmx - ja L_do_loop - - push eax - push ebx - push ecx - push edx - pushfd - mov eax, [esp] - xor dword ptr [esp],0200000h - - - - - popfd - pushfd - pop edx - xor edx,eax - jz L_dont_use_mmx - xor eax,eax - cpuid - cmp ebx,0756e6547h - jne L_dont_use_mmx - cmp ecx,06c65746eh - jne L_dont_use_mmx - cmp edx,049656e69h - jne L_dont_use_mmx - mov eax,1 - cpuid - shr eax,8 - and eax,15 - cmp eax,6 - jne L_dont_use_mmx - test edx,0800000h - jnz L_use_mmx - jmp L_dont_use_mmx -L_use_mmx: - mov dword ptr [inflate_fast_use_mmx],2 - jmp L_check_mmx_pop -L_dont_use_mmx: - mov dword ptr [inflate_fast_use_mmx],3 -L_check_mmx_pop: - pop edx - pop ecx - pop ebx - pop eax - jmp L_check_mmx -; 426 "inffast.S" -ALIGN 4 -L_do_loop: -; 437 "inffast.S" - cmp bl,15 - ja L_get_length_code - - xor eax,eax - lodsw - mov cl,bl - add bl,16 - shl eax,cl - or ebp,eax - -L_get_length_code: - mov edx, [esp+0] - mov ecx, [esp+8] - and edx,ebp - mov eax, [ecx+edx*4] - -L_dolen: - - - - - - - mov cl,ah - sub bl,ah - shr ebp,cl - - - - - - - test al,al - jnz L_test_for_length_base - - shr eax,16 - stosb - -L_while_test: - - - cmp [esp+16],edi - jbe L_break_loop - - cmp [esp+20],esi - ja L_do_loop - jmp L_break_loop - -L_test_for_length_base: -; 502 "inffast.S" - mov edx,eax - shr edx,16 - mov cl,al - - test al,16 - jz L_test_for_second_level_length - and cl,15 - jz L_save_len - cmp bl,cl - jae L_add_bits_to_len - - mov ch,cl - xor eax,eax - lodsw - mov cl,bl - add bl,16 - shl eax,cl - or ebp,eax - mov cl,ch - -L_add_bits_to_len: - mov eax,1 - shl eax,cl - dec eax - sub bl,cl - and eax,ebp - shr ebp,cl - add edx,eax - -L_save_len: - mov [esp+24],edx - - -L_decode_distance: -; 549 "inffast.S" - cmp bl,15 - ja L_get_distance_code - - xor eax,eax - lodsw - mov cl,bl - add bl,16 - shl eax,cl - or ebp,eax - -L_get_distance_code: - mov edx, [esp+4] - mov ecx, [esp+12] - and edx,ebp - mov eax, [ecx+edx*4] - - -L_dodist: - mov edx,eax - shr edx,16 - mov cl,ah - sub bl,ah - shr ebp,cl -; 584 "inffast.S" - mov cl,al - - test al,16 - jz L_test_for_second_level_dist - and cl,15 - jz L_check_dist_one - cmp bl,cl - jae L_add_bits_to_dist - - mov ch,cl - xor eax,eax - lodsw - mov cl,bl - add bl,16 - shl eax,cl - or ebp,eax - mov cl,ch - -L_add_bits_to_dist: - mov eax,1 - shl eax,cl - dec eax - sub bl,cl - and eax,ebp - shr ebp,cl - add edx,eax - jmp L_check_window - -L_check_window: -; 625 "inffast.S" - mov [esp+44],esi - mov eax,edi - sub eax, [esp+40] - - cmp eax,edx - jb L_clip_window - - mov ecx, [esp+24] - mov esi,edi - sub esi,edx - - sub ecx,3 - mov al, [esi] - mov [edi],al - mov al, [esi+1] - mov dl, [esi+2] - add esi,3 - mov [edi+1],al - mov [edi+2],dl - add edi,3 - rep movsb - - mov esi, [esp+44] - jmp L_while_test - -ALIGN 4 -L_check_dist_one: - cmp edx,1 - jne L_check_window - cmp [esp+40],edi - je L_check_window - - dec edi - mov ecx, [esp+24] - mov al, [edi] - sub ecx,3 - - mov [edi+1],al - mov [edi+2],al - mov [edi+3],al - add edi,4 - rep stosb - - jmp L_while_test - -ALIGN 4 -L_test_for_second_level_length: - - - - - test al,64 - jnz L_test_for_end_of_block - - mov eax,1 - shl eax,cl - dec eax - and eax,ebp - add eax,edx - mov edx, [esp+8] - mov eax, [edx+eax*4] - jmp L_dolen - -ALIGN 4 -L_test_for_second_level_dist: - - - - - test al,64 - jnz L_invalid_distance_code - - mov eax,1 - shl eax,cl - dec eax - and eax,ebp - add eax,edx - mov edx, [esp+12] - mov eax, [edx+eax*4] - jmp L_dodist - -ALIGN 4 -L_clip_window: -; 721 "inffast.S" - mov ecx,eax - mov eax, [esp+52] - neg ecx - mov esi, [esp+56] - - cmp eax,edx - jb L_invalid_distance_too_far - - add ecx,edx - cmp dword ptr [esp+48],0 - jne L_wrap_around_window - - sub eax,ecx - add esi,eax -; 749 "inffast.S" - mov eax, [esp+24] - cmp eax,ecx - jbe L_do_copy1 - - sub eax,ecx - rep movsb - mov esi,edi - sub esi,edx - jmp L_do_copy1 - - cmp eax,ecx - jbe L_do_copy1 - - sub eax,ecx - rep movsb - mov esi,edi - sub esi,edx - jmp L_do_copy1 - -L_wrap_around_window: -; 793 "inffast.S" - mov eax, [esp+48] - cmp ecx,eax - jbe L_contiguous_in_window - - add esi, [esp+52] - add esi,eax - sub esi,ecx - sub ecx,eax - - - mov eax, [esp+24] - cmp eax,ecx - jbe L_do_copy1 - - sub eax,ecx - rep movsb - mov esi, [esp+56] - mov ecx, [esp+48] - cmp eax,ecx - jbe L_do_copy1 - - sub eax,ecx - rep movsb - mov esi,edi - sub esi,edx - jmp L_do_copy1 - -L_contiguous_in_window: -; 836 "inffast.S" - add esi,eax - sub esi,ecx - - - mov eax, [esp+24] - cmp eax,ecx - jbe L_do_copy1 - - sub eax,ecx - rep movsb - mov esi,edi - sub esi,edx - -L_do_copy1: -; 862 "inffast.S" - mov ecx,eax - rep movsb - - mov esi, [esp+44] - jmp L_while_test -; 878 "inffast.S" -ALIGN 4 -L_init_mmx: - emms - - - - - - movd mm0,ebp - mov ebp,ebx -; 896 "inffast.S" - movd mm4,dword ptr [esp+0] - movq mm3,mm4 - movd mm5,dword ptr [esp+4] - movq mm2,mm5 - pxor mm1,mm1 - mov ebx, [esp+8] - jmp L_do_loop_mmx - -ALIGN 4 -L_do_loop_mmx: - psrlq mm0,mm1 - - cmp ebp,32 - ja L_get_length_code_mmx - - movd mm6,ebp - movd mm7,dword ptr [esi] - add esi,4 - psllq mm7,mm6 - add ebp,32 - por mm0,mm7 - -L_get_length_code_mmx: - pand mm4,mm0 - movd eax,mm4 - movq mm4,mm3 - mov eax, [ebx+eax*4] - -L_dolen_mmx: - movzx ecx,ah - movd mm1,ecx - sub ebp,ecx - - test al,al - jnz L_test_for_length_base_mmx - - shr eax,16 - stosb - -L_while_test_mmx: - - - cmp [esp+16],edi - jbe L_break_loop - - cmp [esp+20],esi - ja L_do_loop_mmx - jmp L_break_loop - -L_test_for_length_base_mmx: - - mov edx,eax - shr edx,16 - - test al,16 - jz L_test_for_second_level_length_mmx - and eax,15 - jz L_decode_distance_mmx - - psrlq mm0,mm1 - movd mm1,eax - movd ecx,mm0 - sub ebp,eax - and ecx, [inflate_fast_mask+eax*4] - add edx,ecx - -L_decode_distance_mmx: - psrlq mm0,mm1 - - cmp ebp,32 - ja L_get_dist_code_mmx - - movd mm6,ebp - movd mm7,dword ptr [esi] - add esi,4 - psllq mm7,mm6 - add ebp,32 - por mm0,mm7 - -L_get_dist_code_mmx: - mov ebx, [esp+12] - pand mm5,mm0 - movd eax,mm5 - movq mm5,mm2 - mov eax, [ebx+eax*4] - -L_dodist_mmx: - - movzx ecx,ah - mov ebx,eax - shr ebx,16 - sub ebp,ecx - movd mm1,ecx - - test al,16 - jz L_test_for_second_level_dist_mmx - and eax,15 - jz L_check_dist_one_mmx - -L_add_bits_to_dist_mmx: - psrlq mm0,mm1 - movd mm1,eax - movd ecx,mm0 - sub ebp,eax - and ecx, [inflate_fast_mask+eax*4] - add ebx,ecx - -L_check_window_mmx: - mov [esp+44],esi - mov eax,edi - sub eax, [esp+40] - - cmp eax,ebx - jb L_clip_window_mmx - - mov ecx,edx - mov esi,edi - sub esi,ebx - - sub ecx,3 - mov al, [esi] - mov [edi],al - mov al, [esi+1] - mov dl, [esi+2] - add esi,3 - mov [edi+1],al - mov [edi+2],dl - add edi,3 - rep movsb - - mov esi, [esp+44] - mov ebx, [esp+8] - jmp L_while_test_mmx - -ALIGN 4 -L_check_dist_one_mmx: - cmp ebx,1 - jne L_check_window_mmx - cmp [esp+40],edi - je L_check_window_mmx - - dec edi - mov ecx,edx - mov al, [edi] - sub ecx,3 - - mov [edi+1],al - mov [edi+2],al - mov [edi+3],al - add edi,4 - rep stosb - - mov ebx, [esp+8] - jmp L_while_test_mmx - -ALIGN 4 -L_test_for_second_level_length_mmx: - test al,64 - jnz L_test_for_end_of_block - - and eax,15 - psrlq mm0,mm1 - movd ecx,mm0 - and ecx, [inflate_fast_mask+eax*4] - add ecx,edx - mov eax, [ebx+ecx*4] - jmp L_dolen_mmx - -ALIGN 4 -L_test_for_second_level_dist_mmx: - test al,64 - jnz L_invalid_distance_code - - and eax,15 - psrlq mm0,mm1 - movd ecx,mm0 - and ecx, [inflate_fast_mask+eax*4] - mov eax, [esp+12] - add ecx,ebx - mov eax, [eax+ecx*4] - jmp L_dodist_mmx - -ALIGN 4 -L_clip_window_mmx: - - mov ecx,eax - mov eax, [esp+52] - neg ecx - mov esi, [esp+56] - - cmp eax,ebx - jb L_invalid_distance_too_far - - add ecx,ebx - cmp dword ptr [esp+48],0 - jne L_wrap_around_window_mmx - - sub eax,ecx - add esi,eax - - cmp edx,ecx - jbe L_do_copy1_mmx - - sub edx,ecx - rep movsb - mov esi,edi - sub esi,ebx - jmp L_do_copy1_mmx - - cmp edx,ecx - jbe L_do_copy1_mmx - - sub edx,ecx - rep movsb - mov esi,edi - sub esi,ebx - jmp L_do_copy1_mmx - -L_wrap_around_window_mmx: - - mov eax, [esp+48] - cmp ecx,eax - jbe L_contiguous_in_window_mmx - - add esi, [esp+52] - add esi,eax - sub esi,ecx - sub ecx,eax - - - cmp edx,ecx - jbe L_do_copy1_mmx - - sub edx,ecx - rep movsb - mov esi, [esp+56] - mov ecx, [esp+48] - cmp edx,ecx - jbe L_do_copy1_mmx - - sub edx,ecx - rep movsb - mov esi,edi - sub esi,ebx - jmp L_do_copy1_mmx - -L_contiguous_in_window_mmx: - - add esi,eax - sub esi,ecx - - - cmp edx,ecx - jbe L_do_copy1_mmx - - sub edx,ecx - rep movsb - mov esi,edi - sub esi,ebx - -L_do_copy1_mmx: - - - mov ecx,edx - rep movsb - - mov esi, [esp+44] - mov ebx, [esp+8] - jmp L_while_test_mmx -; 1174 "inffast.S" -L_invalid_distance_code: - - - - - - mov ecx, invalid_distance_code_msg - mov edx,INFLATE_MODE_BAD - jmp L_update_stream_state - -L_test_for_end_of_block: - - - - - - test al,32 - jz L_invalid_literal_length_code - - mov ecx,0 - mov edx,INFLATE_MODE_TYPE - jmp L_update_stream_state - -L_invalid_literal_length_code: - - - - - - mov ecx, invalid_literal_length_code_msg - mov edx,INFLATE_MODE_BAD - jmp L_update_stream_state - -L_invalid_distance_too_far: - - - - mov esi, [esp+44] - mov ecx, invalid_distance_too_far_msg - mov edx,INFLATE_MODE_BAD - jmp L_update_stream_state - -L_update_stream_state: - - mov eax, [esp+88] - test ecx,ecx - jz L_skip_msg - mov [eax+24],ecx -L_skip_msg: - mov eax, [eax+28] - mov [eax+mode_state],edx - jmp L_break_loop - -ALIGN 4 -L_break_loop: -; 1243 "inffast.S" - cmp dword ptr [inflate_fast_use_mmx],2 - jne L_update_next_in - - - - mov ebx,ebp - -L_update_next_in: -; 1266 "inffast.S" - mov eax, [esp+88] - mov ecx,ebx - mov edx, [eax+28] - shr ecx,3 - sub esi,ecx - shl ecx,3 - sub ebx,ecx - mov [eax+12],edi - mov [edx+bits_state],ebx - mov ecx,ebx - - lea ebx, [esp+28] - cmp [esp+20],ebx - jne L_buf_not_used - - sub esi,ebx - mov ebx, [eax+0] - mov [esp+20],ebx - add esi,ebx - mov ebx, [eax+4] - sub ebx,11 - add [esp+20],ebx - -L_buf_not_used: - mov [eax+0],esi - - mov ebx,1 - shl ebx,cl - dec ebx - - - - - - cmp dword ptr [inflate_fast_use_mmx],2 - jne L_update_hold - - - - psrlq mm0,mm1 - movd ebp,mm0 - - emms - -L_update_hold: - - - - and ebp,ebx - mov [edx+hold_state],ebp - - - - - mov ebx, [esp+20] - cmp ebx,esi - jbe L_last_is_smaller - - sub ebx,esi - add ebx,11 - mov [eax+4],ebx - jmp L_fixup_out -L_last_is_smaller: - sub esi,ebx - neg esi - add esi,11 - mov [eax+4],esi - - - - -L_fixup_out: - - mov ebx, [esp+16] - cmp ebx,edi - jbe L_end_is_smaller - - sub ebx,edi - add ebx,257 - mov [eax+16],ebx - jmp L_done -L_end_is_smaller: - sub edi,ebx - neg edi - add edi,257 - mov [eax+16],edi - - - - - -L_done: - add esp,64 - popfd - pop ebx - pop ebp - pop esi - pop edi - ret -_inflate_fast endp - -_TEXT ends -end diff --git a/platform/win32/msvc/external/zlib/contrib/masmx86/match686.asm b/platform/win32/msvc/external/zlib/contrib/masmx86/match686.asm deleted file mode 100644 index 3b09212f8a2..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/masmx86/match686.asm +++ /dev/null @@ -1,479 +0,0 @@ -; match686.asm -- Asm portion of the optimized longest_match for 32 bits x86 -; Copyright (C) 1995-1996 Jean-loup Gailly, Brian Raiter and Gilles Vollant. -; File written by Gilles Vollant, by converting match686.S from Brian Raiter -; for MASM. This is as assembly version of longest_match -; from Jean-loup Gailly in deflate.c -; -; http://www.zlib.net -; http://www.winimage.com/zLibDll -; http://www.muppetlabs.com/~breadbox/software/assembly.html -; -; For Visual C++ 4.x and higher and ML 6.x and higher -; ml.exe is distributed in -; http://www.microsoft.com/downloads/details.aspx?FamilyID=7a1c9da0-0510-44a2-b042-7ef370530c64 -; -; this file contain two implementation of longest_match -; -; this longest_match was written by Brian raiter (1998), optimized for Pentium Pro -; (and the faster known version of match_init on modern Core 2 Duo and AMD Phenom) -; -; for using an assembly version of longest_match, you need define ASMV in project -; -; compile the asm file running -; ml /coff /Zi /c /Flmatch686.lst match686.asm -; and do not include match686.obj in your project -; -; note: contrib of zLib 1.2.3 and earlier contained both a deprecated version for -; Pentium (prior Pentium Pro) and this version for Pentium Pro and modern processor -; with autoselect (with cpu detection code) -; if you want support the old pentium optimization, you can still use these version -; -; this file is not optimized for old pentium, but it compatible with all x86 32 bits -; processor (starting 80386) -; -; -; see below : zlib1222add must be adjuster if you use a zlib version < 1.2.2.2 - -;uInt longest_match(s, cur_match) -; deflate_state *s; -; IPos cur_match; /* current match */ - - NbStack equ 76 - cur_match equ dword ptr[esp+NbStack-0] - str_s equ dword ptr[esp+NbStack-4] -; 5 dword on top (ret,ebp,esi,edi,ebx) - adrret equ dword ptr[esp+NbStack-8] - pushebp equ dword ptr[esp+NbStack-12] - pushedi equ dword ptr[esp+NbStack-16] - pushesi equ dword ptr[esp+NbStack-20] - pushebx equ dword ptr[esp+NbStack-24] - - chain_length equ dword ptr [esp+NbStack-28] - limit equ dword ptr [esp+NbStack-32] - best_len equ dword ptr [esp+NbStack-36] - window equ dword ptr [esp+NbStack-40] - prev equ dword ptr [esp+NbStack-44] - scan_start equ word ptr [esp+NbStack-48] - wmask equ dword ptr [esp+NbStack-52] - match_start_ptr equ dword ptr [esp+NbStack-56] - nice_match equ dword ptr [esp+NbStack-60] - scan equ dword ptr [esp+NbStack-64] - - windowlen equ dword ptr [esp+NbStack-68] - match_start equ dword ptr [esp+NbStack-72] - strend equ dword ptr [esp+NbStack-76] - NbStackAdd equ (NbStack-24) - - .386p - - name gvmatch - .MODEL FLAT - - - -; all the +zlib1222add offsets are due to the addition of fields -; in zlib in the deflate_state structure since the asm code was first written -; (if you compile with zlib 1.0.4 or older, use "zlib1222add equ (-4)"). -; (if you compile with zlib between 1.0.5 and 1.2.2.1, use "zlib1222add equ 0"). -; if you compile with zlib 1.2.2.2 or later , use "zlib1222add equ 8"). - - zlib1222add equ 8 - -; Note : these value are good with a 8 bytes boundary pack structure - dep_chain_length equ 74h+zlib1222add - dep_window equ 30h+zlib1222add - dep_strstart equ 64h+zlib1222add - dep_prev_length equ 70h+zlib1222add - dep_nice_match equ 88h+zlib1222add - dep_w_size equ 24h+zlib1222add - dep_prev equ 38h+zlib1222add - dep_w_mask equ 2ch+zlib1222add - dep_good_match equ 84h+zlib1222add - dep_match_start equ 68h+zlib1222add - dep_lookahead equ 6ch+zlib1222add - - -_TEXT segment - -IFDEF NOUNDERLINE - public longest_match - public match_init -ELSE - public _longest_match - public _match_init -ENDIF - - MAX_MATCH equ 258 - MIN_MATCH equ 3 - MIN_LOOKAHEAD equ (MAX_MATCH+MIN_MATCH+1) - - - -MAX_MATCH equ 258 -MIN_MATCH equ 3 -MIN_LOOKAHEAD equ (MAX_MATCH + MIN_MATCH + 1) -MAX_MATCH_8_ equ ((MAX_MATCH + 7) AND 0FFF0h) - - -;;; stack frame offsets - -chainlenwmask equ esp + 0 ; high word: current chain len - ; low word: s->wmask -window equ esp + 4 ; local copy of s->window -windowbestlen equ esp + 8 ; s->window + bestlen -scanstart equ esp + 16 ; first two bytes of string -scanend equ esp + 12 ; last two bytes of string -scanalign equ esp + 20 ; dword-misalignment of string -nicematch equ esp + 24 ; a good enough match size -bestlen equ esp + 28 ; size of best match so far -scan equ esp + 32 ; ptr to string wanting match - -LocalVarsSize equ 36 -; saved ebx byte esp + 36 -; saved edi byte esp + 40 -; saved esi byte esp + 44 -; saved ebp byte esp + 48 -; return address byte esp + 52 -deflatestate equ esp + 56 ; the function arguments -curmatch equ esp + 60 - -;;; Offsets for fields in the deflate_state structure. These numbers -;;; are calculated from the definition of deflate_state, with the -;;; assumption that the compiler will dword-align the fields. (Thus, -;;; changing the definition of deflate_state could easily cause this -;;; program to crash horribly, without so much as a warning at -;;; compile time. Sigh.) - -dsWSize equ 36+zlib1222add -dsWMask equ 44+zlib1222add -dsWindow equ 48+zlib1222add -dsPrev equ 56+zlib1222add -dsMatchLen equ 88+zlib1222add -dsPrevMatch equ 92+zlib1222add -dsStrStart equ 100+zlib1222add -dsMatchStart equ 104+zlib1222add -dsLookahead equ 108+zlib1222add -dsPrevLen equ 112+zlib1222add -dsMaxChainLen equ 116+zlib1222add -dsGoodMatch equ 132+zlib1222add -dsNiceMatch equ 136+zlib1222add - - -;;; match686.asm -- Pentium-Pro-optimized version of longest_match() -;;; Written for zlib 1.1.2 -;;; Copyright (C) 1998 Brian Raiter <breadbox@muppetlabs.com> -;;; You can look at http://www.muppetlabs.com/~breadbox/software/assembly.html -;;; -;; -;; This software is provided 'as-is', without any express or implied -;; warranty. In no event will the authors be held liable for any damages -;; arising from the use of this software. -;; -;; Permission is granted to anyone to use this software for any purpose, -;; including commercial applications, and to alter it and redistribute it -;; freely, subject to the following restrictions: -;; -;; 1. The origin of this software must not be misrepresented; you must not -;; claim that you wrote the original software. If you use this software -;; in a product, an acknowledgment in the product documentation would be -;; appreciated but is not required. -;; 2. Altered source versions must be plainly marked as such, and must not be -;; misrepresented as being the original software -;; 3. This notice may not be removed or altered from any source distribution. -;; - -;GLOBAL _longest_match, _match_init - - -;SECTION .text - -;;; uInt longest_match(deflate_state *deflatestate, IPos curmatch) - -;_longest_match: - IFDEF NOUNDERLINE - longest_match proc near - ELSE - _longest_match proc near - ENDIF -.FPO (9, 4, 0, 0, 1, 0) - -;;; Save registers that the compiler may be using, and adjust esp to -;;; make room for our stack frame. - - push ebp - push edi - push esi - push ebx - sub esp, LocalVarsSize - -;;; Retrieve the function arguments. ecx will hold cur_match -;;; throughout the entire function. edx will hold the pointer to the -;;; deflate_state structure during the function's setup (before -;;; entering the main loop. - - mov edx, [deflatestate] - mov ecx, [curmatch] - -;;; uInt wmask = s->w_mask; -;;; unsigned chain_length = s->max_chain_length; -;;; if (s->prev_length >= s->good_match) { -;;; chain_length >>= 2; -;;; } - - mov eax, [edx + dsPrevLen] - mov ebx, [edx + dsGoodMatch] - cmp eax, ebx - mov eax, [edx + dsWMask] - mov ebx, [edx + dsMaxChainLen] - jl LastMatchGood - shr ebx, 2 -LastMatchGood: - -;;; chainlen is decremented once beforehand so that the function can -;;; use the sign flag instead of the zero flag for the exit test. -;;; It is then shifted into the high word, to make room for the wmask -;;; value, which it will always accompany. - - dec ebx - shl ebx, 16 - or ebx, eax - mov [chainlenwmask], ebx - -;;; if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead; - - mov eax, [edx + dsNiceMatch] - mov ebx, [edx + dsLookahead] - cmp ebx, eax - jl LookaheadLess - mov ebx, eax -LookaheadLess: mov [nicematch], ebx - -;;; register Bytef *scan = s->window + s->strstart; - - mov esi, [edx + dsWindow] - mov [window], esi - mov ebp, [edx + dsStrStart] - lea edi, [esi + ebp] - mov [scan], edi - -;;; Determine how many bytes the scan ptr is off from being -;;; dword-aligned. - - mov eax, edi - neg eax - and eax, 3 - mov [scanalign], eax - -;;; IPos limit = s->strstart > (IPos)MAX_DIST(s) ? -;;; s->strstart - (IPos)MAX_DIST(s) : NIL; - - mov eax, [edx + dsWSize] - sub eax, MIN_LOOKAHEAD - sub ebp, eax - jg LimitPositive - xor ebp, ebp -LimitPositive: - -;;; int best_len = s->prev_length; - - mov eax, [edx + dsPrevLen] - mov [bestlen], eax - -;;; Store the sum of s->window + best_len in esi locally, and in esi. - - add esi, eax - mov [windowbestlen], esi - -;;; register ush scan_start = *(ushf*)scan; -;;; register ush scan_end = *(ushf*)(scan+best_len-1); -;;; Posf *prev = s->prev; - - movzx ebx, word ptr [edi] - mov [scanstart], ebx - movzx ebx, word ptr [edi + eax - 1] - mov [scanend], ebx - mov edi, [edx + dsPrev] - -;;; Jump into the main loop. - - mov edx, [chainlenwmask] - jmp short LoopEntry - -align 4 - -;;; do { -;;; match = s->window + cur_match; -;;; if (*(ushf*)(match+best_len-1) != scan_end || -;;; *(ushf*)match != scan_start) continue; -;;; [...] -;;; } while ((cur_match = prev[cur_match & wmask]) > limit -;;; && --chain_length != 0); -;;; -;;; Here is the inner loop of the function. The function will spend the -;;; majority of its time in this loop, and majority of that time will -;;; be spent in the first ten instructions. -;;; -;;; Within this loop: -;;; ebx = scanend -;;; ecx = curmatch -;;; edx = chainlenwmask - i.e., ((chainlen << 16) | wmask) -;;; esi = windowbestlen - i.e., (window + bestlen) -;;; edi = prev -;;; ebp = limit - -LookupLoop: - and ecx, edx - movzx ecx, word ptr [edi + ecx*2] - cmp ecx, ebp - jbe LeaveNow - sub edx, 00010000h - js LeaveNow -LoopEntry: movzx eax, word ptr [esi + ecx - 1] - cmp eax, ebx - jnz LookupLoop - mov eax, [window] - movzx eax, word ptr [eax + ecx] - cmp eax, [scanstart] - jnz LookupLoop - -;;; Store the current value of chainlen. - - mov [chainlenwmask], edx - -;;; Point edi to the string under scrutiny, and esi to the string we -;;; are hoping to match it up with. In actuality, esi and edi are -;;; both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and edx is -;;; initialized to -(MAX_MATCH_8 - scanalign). - - mov esi, [window] - mov edi, [scan] - add esi, ecx - mov eax, [scanalign] - mov edx, 0fffffef8h; -(MAX_MATCH_8) - lea edi, [edi + eax + 0108h] ;MAX_MATCH_8] - lea esi, [esi + eax + 0108h] ;MAX_MATCH_8] - -;;; Test the strings for equality, 8 bytes at a time. At the end, -;;; adjust edx so that it is offset to the exact byte that mismatched. -;;; -;;; We already know at this point that the first three bytes of the -;;; strings match each other, and they can be safely passed over before -;;; starting the compare loop. So what this code does is skip over 0-3 -;;; bytes, as much as necessary in order to dword-align the edi -;;; pointer. (esi will still be misaligned three times out of four.) -;;; -;;; It should be confessed that this loop usually does not represent -;;; much of the total running time. Replacing it with a more -;;; straightforward "rep cmpsb" would not drastically degrade -;;; performance. - -LoopCmps: - mov eax, [esi + edx] - xor eax, [edi + edx] - jnz LeaveLoopCmps - mov eax, [esi + edx + 4] - xor eax, [edi + edx + 4] - jnz LeaveLoopCmps4 - add edx, 8 - jnz LoopCmps - jmp short LenMaximum -LeaveLoopCmps4: add edx, 4 -LeaveLoopCmps: test eax, 0000FFFFh - jnz LenLower - add edx, 2 - shr eax, 16 -LenLower: sub al, 1 - adc edx, 0 - -;;; Calculate the length of the match. If it is longer than MAX_MATCH, -;;; then automatically accept it as the best possible match and leave. - - lea eax, [edi + edx] - mov edi, [scan] - sub eax, edi - cmp eax, MAX_MATCH - jge LenMaximum - -;;; If the length of the match is not longer than the best match we -;;; have so far, then forget it and return to the lookup loop. - - mov edx, [deflatestate] - mov ebx, [bestlen] - cmp eax, ebx - jg LongerMatch - mov esi, [windowbestlen] - mov edi, [edx + dsPrev] - mov ebx, [scanend] - mov edx, [chainlenwmask] - jmp LookupLoop - -;;; s->match_start = cur_match; -;;; best_len = len; -;;; if (len >= nice_match) break; -;;; scan_end = *(ushf*)(scan+best_len-1); - -LongerMatch: mov ebx, [nicematch] - mov [bestlen], eax - mov [edx + dsMatchStart], ecx - cmp eax, ebx - jge LeaveNow - mov esi, [window] - add esi, eax - mov [windowbestlen], esi - movzx ebx, word ptr [edi + eax - 1] - mov edi, [edx + dsPrev] - mov [scanend], ebx - mov edx, [chainlenwmask] - jmp LookupLoop - -;;; Accept the current string, with the maximum possible length. - -LenMaximum: mov edx, [deflatestate] - mov dword ptr [bestlen], MAX_MATCH - mov [edx + dsMatchStart], ecx - -;;; if ((uInt)best_len <= s->lookahead) return (uInt)best_len; -;;; return s->lookahead; - -LeaveNow: - mov edx, [deflatestate] - mov ebx, [bestlen] - mov eax, [edx + dsLookahead] - cmp ebx, eax - jg LookaheadRet - mov eax, ebx -LookaheadRet: - -;;; Restore the stack and return from whence we came. - - add esp, LocalVarsSize - pop ebx - pop esi - pop edi - pop ebp - - ret -; please don't remove this string ! -; Your can freely use match686 in any free or commercial app if you don't remove the string in the binary! - db 0dh,0ah,"asm686 with masm, optimised assembly code from Brian Raiter, written 1998",0dh,0ah - - - IFDEF NOUNDERLINE - longest_match endp - ELSE - _longest_match endp - ENDIF - - IFDEF NOUNDERLINE - match_init proc near - ret - match_init endp - ELSE - _match_init proc near - ret - _match_init endp - ENDIF - - -_TEXT ends -end diff --git a/platform/win32/msvc/external/zlib/contrib/masmx86/readme.txt b/platform/win32/msvc/external/zlib/contrib/masmx86/readme.txt deleted file mode 100644 index 3271f720a1a..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/masmx86/readme.txt +++ /dev/null @@ -1,27 +0,0 @@ - -Summary -------- -This directory contains ASM implementations of the functions -longest_match() and inflate_fast(). - - -Use instructions ----------------- -Assemble using MASM, and copy the object files into the zlib source -directory, then run the appropriate makefile, as suggested below. You can -donwload MASM from here: - - http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=7a1c9da0-0510-44a2-b042-7ef370530c64 - -You can also get objects files here: - - http://www.winimage.com/zLibDll/zlib124_masm_obj.zip - -Build instructions ------------------- -* With Microsoft C and MASM: -nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" OBJA="match686.obj inffas32.obj" - -* With Borland C and TASM: -make -f win32/Makefile.bor LOCAL_ZLIB="-DASMV -DASMINF" OBJA="match686.obj inffas32.obj" OBJPA="+match686c.obj+match686.obj+inffas32.obj" - diff --git a/platform/win32/msvc/external/zlib/contrib/minizip/Makefile.am b/platform/win32/msvc/external/zlib/contrib/minizip/Makefile.am deleted file mode 100644 index d343011ebc3..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/minizip/Makefile.am +++ /dev/null @@ -1,45 +0,0 @@ -lib_LTLIBRARIES = libminizip.la - -if COND_DEMOS -bin_PROGRAMS = miniunzip minizip -endif - -zlib_top_srcdir = $(top_srcdir)/../.. -zlib_top_builddir = $(top_builddir)/../.. - -AM_CPPFLAGS = -I$(zlib_top_srcdir) -AM_LDFLAGS = -L$(zlib_top_builddir) - -if WIN32 -iowin32_src = iowin32.c -iowin32_h = iowin32.h -endif - -libminizip_la_SOURCES = \ - ioapi.c \ - mztools.c \ - unzip.c \ - zip.c \ - ${iowin32_src} - -libminizip_la_LDFLAGS = $(AM_LDFLAGS) -version-info 1:0:0 -lz - -minizip_includedir = $(includedir)/minizip -minizip_include_HEADERS = \ - crypt.h \ - ioapi.h \ - mztools.h \ - unzip.h \ - zip.h \ - ${iowin32_h} - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = minizip.pc - -EXTRA_PROGRAMS = miniunzip minizip - -miniunzip_SOURCES = miniunz.c -miniunzip_LDADD = libminizip.la - -minizip_SOURCES = minizip.c -minizip_LDADD = libminizip.la -lz diff --git a/platform/win32/msvc/external/zlib/contrib/minizip/MiniZip64_Changes.txt b/platform/win32/msvc/external/zlib/contrib/minizip/MiniZip64_Changes.txt deleted file mode 100644 index 13a1bd91a9b..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/minizip/MiniZip64_Changes.txt +++ /dev/null @@ -1,6 +0,0 @@ - -MiniZip 1.1 was derrived from MiniZip at version 1.01f - -Change in 1.0 (Okt 2009) - - **TODO - Add history** - diff --git a/platform/win32/msvc/external/zlib/contrib/minizip/MiniZip64_info.txt b/platform/win32/msvc/external/zlib/contrib/minizip/MiniZip64_info.txt deleted file mode 100644 index 57d71524208..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/minizip/MiniZip64_info.txt +++ /dev/null @@ -1,74 +0,0 @@ -MiniZip - Copyright (c) 1998-2010 - by Gilles Vollant - version 1.1 64 bits from Mathias Svensson - -Introduction ---------------------- -MiniZip 1.1 is built from MiniZip 1.0 by Gilles Vollant ( http://www.winimage.com/zLibDll/minizip.html ) - -When adding ZIP64 support into minizip it would result into risk of breaking compatibility with minizip 1.0. -All possible work was done for compatibility. - - -Background ---------------------- -When adding ZIP64 support Mathias Svensson found that Even Rouault have added ZIP64 -support for unzip.c into minizip for a open source project called gdal ( http://www.gdal.org/ ) - -That was used as a starting point. And after that ZIP64 support was added to zip.c -some refactoring and code cleanup was also done. - - -Changed from MiniZip 1.0 to MiniZip 1.1 ---------------------------------------- -* Added ZIP64 support for unzip ( by Even Rouault ) -* Added ZIP64 support for zip ( by Mathias Svensson ) -* Reverted some changed that Even Rouault did. -* Bunch of patches received from Gulles Vollant that he received for MiniZip from various users. -* Added unzip patch for BZIP Compression method (patch create by Daniel Borca) -* Added BZIP Compress method for zip -* Did some refactoring and code cleanup - - -Credits - - Gilles Vollant - Original MiniZip author - Even Rouault - ZIP64 unzip Support - Daniel Borca - BZip Compression method support in unzip - Mathias Svensson - ZIP64 zip support - Mathias Svensson - BZip Compression method support in zip - - Resources - - ZipLayout http://result42.com/projects/ZipFileLayout - Command line tool for Windows that shows the layout and information of the headers in a zip archive. - Used when debugging and validating the creation of zip files using MiniZip64 - - - ZIP App Note http://www.pkware.com/documents/casestudies/APPNOTE.TXT - Zip File specification - - -Notes. - * To be able to use BZip compression method in zip64.c or unzip64.c the BZIP2 lib is needed and HAVE_BZIP2 need to be defined. - -License ----------------------------------------------------------- - Condition of use and distribution are the same than zlib : - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - ----------------------------------------------------------- - diff --git a/platform/win32/msvc/external/zlib/contrib/minizip/configure.ac b/platform/win32/msvc/external/zlib/contrib/minizip/configure.ac deleted file mode 100644 index 827a4e05770..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/minizip/configure.ac +++ /dev/null @@ -1,32 +0,0 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. - -AC_INIT([minizip], [1.2.8], [bugzilla.redhat.com]) -AC_CONFIG_SRCDIR([minizip.c]) -AM_INIT_AUTOMAKE([foreign]) -LT_INIT - -AC_MSG_CHECKING([whether to build example programs]) -AC_ARG_ENABLE([demos], AC_HELP_STRING([--enable-demos], [build example programs])) -AM_CONDITIONAL([COND_DEMOS], [test "$enable_demos" = yes]) -if test "$enable_demos" = yes -then - AC_MSG_RESULT([yes]) -else - AC_MSG_RESULT([no]) -fi - -case "${host}" in - *-mingw* | mingw*) - WIN32="yes" - ;; - *) - ;; -esac -AM_CONDITIONAL([WIN32], [test "${WIN32}" = "yes"]) - - -AC_SUBST([HAVE_UNISTD_H], [0]) -AC_CHECK_HEADER([unistd.h], [HAVE_UNISTD_H=1], []) -AC_CONFIG_FILES([Makefile minizip.pc]) -AC_OUTPUT diff --git a/platform/win32/msvc/external/zlib/contrib/minizip/crypt.h b/platform/win32/msvc/external/zlib/contrib/minizip/crypt.h deleted file mode 100644 index 1e9e8200b20..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/minizip/crypt.h +++ /dev/null @@ -1,131 +0,0 @@ -/* crypt.h -- base code for crypt/uncrypt ZIPfile - - - Version 1.01e, February 12th, 2005 - - Copyright (C) 1998-2005 Gilles Vollant - - This code is a modified version of crypting code in Infozip distribution - - The encryption/decryption parts of this source code (as opposed to the - non-echoing password parts) were originally written in Europe. The - whole source package can be freely distributed, including from the USA. - (Prior to January 2000, re-export from the US was a violation of US law.) - - This encryption code is a direct transcription of the algorithm from - Roger Schlafly, described by Phil Katz in the file appnote.txt. This - file (appnote.txt) is distributed with the PKZIP program (even in the - version without encryption capabilities). - - If you don't need crypting in your application, just define symbols - NOCRYPT and NOUNCRYPT. - - This code support the "Traditional PKWARE Encryption". - - The new AES encryption added on Zip format by Winzip (see the page - http://www.winzip.com/aes_info.htm ) and PKWare PKZip 5.x Strong - Encryption is not supported. -*/ - -#define CRC32(c, b) ((*(pcrc_32_tab+(((int)(c) ^ (b)) & 0xff))) ^ ((c) >> 8)) - -/*********************************************************************** - * Return the next byte in the pseudo-random sequence - */ -static int decrypt_byte(unsigned long* pkeys, const z_crc_t* pcrc_32_tab) -{ - unsigned temp; /* POTENTIAL BUG: temp*(temp^1) may overflow in an - * unpredictable manner on 16-bit systems; not a problem - * with any known compiler so far, though */ - - temp = ((unsigned)(*(pkeys+2)) & 0xffff) | 2; - return (int)(((temp * (temp ^ 1)) >> 8) & 0xff); -} - -/*********************************************************************** - * Update the encryption keys with the next byte of plain text - */ -static int update_keys(unsigned long* pkeys,const z_crc_t* pcrc_32_tab,int c) -{ - (*(pkeys+0)) = CRC32((*(pkeys+0)), c); - (*(pkeys+1)) += (*(pkeys+0)) & 0xff; - (*(pkeys+1)) = (*(pkeys+1)) * 134775813L + 1; - { - register int keyshift = (int)((*(pkeys+1)) >> 24); - (*(pkeys+2)) = CRC32((*(pkeys+2)), keyshift); - } - return c; -} - - -/*********************************************************************** - * Initialize the encryption keys and the random header according to - * the given password. - */ -static void init_keys(const char* passwd,unsigned long* pkeys,const z_crc_t* pcrc_32_tab) -{ - *(pkeys+0) = 305419896L; - *(pkeys+1) = 591751049L; - *(pkeys+2) = 878082192L; - while (*passwd != '\0') { - update_keys(pkeys,pcrc_32_tab,(int)*passwd); - passwd++; - } -} - -#define zdecode(pkeys,pcrc_32_tab,c) \ - (update_keys(pkeys,pcrc_32_tab,c ^= decrypt_byte(pkeys,pcrc_32_tab))) - -#define zencode(pkeys,pcrc_32_tab,c,t) \ - (t=decrypt_byte(pkeys,pcrc_32_tab), update_keys(pkeys,pcrc_32_tab,c), t^(c)) - -#ifdef INCLUDECRYPTINGCODE_IFCRYPTALLOWED - -#define RAND_HEAD_LEN 12 - /* "last resort" source for second part of crypt seed pattern */ -# ifndef ZCR_SEED2 -# define ZCR_SEED2 3141592654UL /* use PI as default pattern */ -# endif - -static int crypthead(const char* passwd, /* password string */ - unsigned char* buf, /* where to write header */ - int bufSize, - unsigned long* pkeys, - const z_crc_t* pcrc_32_tab, - unsigned long crcForCrypting) -{ - int n; /* index in random header */ - int t; /* temporary */ - int c; /* random byte */ - unsigned char header[RAND_HEAD_LEN-2]; /* random header */ - static unsigned calls = 0; /* ensure different random header each time */ - - if (bufSize<RAND_HEAD_LEN) - return 0; - - /* First generate RAND_HEAD_LEN-2 random bytes. We encrypt the - * output of rand() to get less predictability, since rand() is - * often poorly implemented. - */ - if (++calls == 1) - { - srand((unsigned)(time(NULL) ^ ZCR_SEED2)); - } - init_keys(passwd, pkeys, pcrc_32_tab); - for (n = 0; n < RAND_HEAD_LEN-2; n++) - { - c = (rand() >> 7) & 0xff; - header[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, c, t); - } - /* Encrypt random header (last two bytes is high word of crc) */ - init_keys(passwd, pkeys, pcrc_32_tab); - for (n = 0; n < RAND_HEAD_LEN-2; n++) - { - buf[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, header[n], t); - } - buf[n++] = (unsigned char)zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 16) & 0xff, t); - buf[n++] = (unsigned char)zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 24) & 0xff, t); - return n; -} - -#endif diff --git a/platform/win32/msvc/external/zlib/contrib/minizip/ioapi.c b/platform/win32/msvc/external/zlib/contrib/minizip/ioapi.c deleted file mode 100644 index 7f5c191b2af..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/minizip/ioapi.c +++ /dev/null @@ -1,247 +0,0 @@ -/* ioapi.h -- IO base function header for compress/uncompress .zip - part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications for Zip64 support - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) - - For more info read MiniZip_info.txt - -*/ - -#if defined(_WIN32) && (!(defined(_CRT_SECURE_NO_WARNINGS))) - #define _CRT_SECURE_NO_WARNINGS -#endif - -#if defined(__APPLE__) || defined(IOAPI_NO_64) -// In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions -#define FOPEN_FUNC(filename, mode) fopen(filename, mode) -#define FTELLO_FUNC(stream) ftello(stream) -#define FSEEKO_FUNC(stream, offset, origin) fseeko(stream, offset, origin) -#else -#define FOPEN_FUNC(filename, mode) fopen64(filename, mode) -#define FTELLO_FUNC(stream) ftello64(stream) -#define FSEEKO_FUNC(stream, offset, origin) fseeko64(stream, offset, origin) -#endif - - -#include "ioapi.h" - -voidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode) -{ - if (pfilefunc->zfile_func64.zopen64_file != NULL) - return (*(pfilefunc->zfile_func64.zopen64_file)) (pfilefunc->zfile_func64.opaque,filename,mode); - else - { - return (*(pfilefunc->zopen32_file))(pfilefunc->zfile_func64.opaque,(const char*)filename,mode); - } -} - -long call_zseek64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin) -{ - if (pfilefunc->zfile_func64.zseek64_file != NULL) - return (*(pfilefunc->zfile_func64.zseek64_file)) (pfilefunc->zfile_func64.opaque,filestream,offset,origin); - else - { - uLong offsetTruncated = (uLong)offset; - if (offsetTruncated != offset) - return -1; - else - return (*(pfilefunc->zseek32_file))(pfilefunc->zfile_func64.opaque,filestream,offsetTruncated,origin); - } -} - -ZPOS64_T call_ztell64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream) -{ - if (pfilefunc->zfile_func64.zseek64_file != NULL) - return (*(pfilefunc->zfile_func64.ztell64_file)) (pfilefunc->zfile_func64.opaque,filestream); - else - { - uLong tell_uLong = (*(pfilefunc->ztell32_file))(pfilefunc->zfile_func64.opaque,filestream); - if ((tell_uLong) == MAXU32) - return (ZPOS64_T)-1; - else - return tell_uLong; - } -} - -void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32) -{ - p_filefunc64_32->zfile_func64.zopen64_file = NULL; - p_filefunc64_32->zopen32_file = p_filefunc32->zopen_file; - p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file; - p_filefunc64_32->zfile_func64.zread_file = p_filefunc32->zread_file; - p_filefunc64_32->zfile_func64.zwrite_file = p_filefunc32->zwrite_file; - p_filefunc64_32->zfile_func64.ztell64_file = NULL; - p_filefunc64_32->zfile_func64.zseek64_file = NULL; - p_filefunc64_32->zfile_func64.zclose_file = p_filefunc32->zclose_file; - p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file; - p_filefunc64_32->zfile_func64.opaque = p_filefunc32->opaque; - p_filefunc64_32->zseek32_file = p_filefunc32->zseek_file; - p_filefunc64_32->ztell32_file = p_filefunc32->ztell_file; -} - - - -static voidpf ZCALLBACK fopen_file_func OF((voidpf opaque, const char* filename, int mode)); -static uLong ZCALLBACK fread_file_func OF((voidpf opaque, voidpf stream, void* buf, uLong size)); -static uLong ZCALLBACK fwrite_file_func OF((voidpf opaque, voidpf stream, const void* buf,uLong size)); -static ZPOS64_T ZCALLBACK ftell64_file_func OF((voidpf opaque, voidpf stream)); -static long ZCALLBACK fseek64_file_func OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)); -static int ZCALLBACK fclose_file_func OF((voidpf opaque, voidpf stream)); -static int ZCALLBACK ferror_file_func OF((voidpf opaque, voidpf stream)); - -static voidpf ZCALLBACK fopen_file_func (voidpf opaque, const char* filename, int mode) -{ - FILE* file = NULL; - const char* mode_fopen = NULL; - if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ) - mode_fopen = "rb"; - else - if (mode & ZLIB_FILEFUNC_MODE_EXISTING) - mode_fopen = "r+b"; - else - if (mode & ZLIB_FILEFUNC_MODE_CREATE) - mode_fopen = "wb"; - - if ((filename!=NULL) && (mode_fopen != NULL)) - file = fopen(filename, mode_fopen); - return file; -} - -static voidpf ZCALLBACK fopen64_file_func (voidpf opaque, const void* filename, int mode) -{ - FILE* file = NULL; - const char* mode_fopen = NULL; - if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ) - mode_fopen = "rb"; - else - if (mode & ZLIB_FILEFUNC_MODE_EXISTING) - mode_fopen = "r+b"; - else - if (mode & ZLIB_FILEFUNC_MODE_CREATE) - mode_fopen = "wb"; - - if ((filename!=NULL) && (mode_fopen != NULL)) - file = FOPEN_FUNC((const char*)filename, mode_fopen); - return file; -} - - -static uLong ZCALLBACK fread_file_func (voidpf opaque, voidpf stream, void* buf, uLong size) -{ - uLong ret; - ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream); - return ret; -} - -static uLong ZCALLBACK fwrite_file_func (voidpf opaque, voidpf stream, const void* buf, uLong size) -{ - uLong ret; - ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream); - return ret; -} - -static long ZCALLBACK ftell_file_func (voidpf opaque, voidpf stream) -{ - long ret; - ret = ftell((FILE *)stream); - return ret; -} - - -static ZPOS64_T ZCALLBACK ftell64_file_func (voidpf opaque, voidpf stream) -{ - ZPOS64_T ret; - ret = FTELLO_FUNC((FILE *)stream); - return ret; -} - -static long ZCALLBACK fseek_file_func (voidpf opaque, voidpf stream, uLong offset, int origin) -{ - int fseek_origin=0; - long ret; - switch (origin) - { - case ZLIB_FILEFUNC_SEEK_CUR : - fseek_origin = SEEK_CUR; - break; - case ZLIB_FILEFUNC_SEEK_END : - fseek_origin = SEEK_END; - break; - case ZLIB_FILEFUNC_SEEK_SET : - fseek_origin = SEEK_SET; - break; - default: return -1; - } - ret = 0; - if (fseek((FILE *)stream, offset, fseek_origin) != 0) - ret = -1; - return ret; -} - -static long ZCALLBACK fseek64_file_func (voidpf opaque, voidpf stream, ZPOS64_T offset, int origin) -{ - int fseek_origin=0; - long ret; - switch (origin) - { - case ZLIB_FILEFUNC_SEEK_CUR : - fseek_origin = SEEK_CUR; - break; - case ZLIB_FILEFUNC_SEEK_END : - fseek_origin = SEEK_END; - break; - case ZLIB_FILEFUNC_SEEK_SET : - fseek_origin = SEEK_SET; - break; - default: return -1; - } - ret = 0; - - if(FSEEKO_FUNC((FILE *)stream, offset, fseek_origin) != 0) - ret = -1; - - return ret; -} - - -static int ZCALLBACK fclose_file_func (voidpf opaque, voidpf stream) -{ - int ret; - ret = fclose((FILE *)stream); - return ret; -} - -static int ZCALLBACK ferror_file_func (voidpf opaque, voidpf stream) -{ - int ret; - ret = ferror((FILE *)stream); - return ret; -} - -void fill_fopen_filefunc (pzlib_filefunc_def) - zlib_filefunc_def* pzlib_filefunc_def; -{ - pzlib_filefunc_def->zopen_file = fopen_file_func; - pzlib_filefunc_def->zread_file = fread_file_func; - pzlib_filefunc_def->zwrite_file = fwrite_file_func; - pzlib_filefunc_def->ztell_file = ftell_file_func; - pzlib_filefunc_def->zseek_file = fseek_file_func; - pzlib_filefunc_def->zclose_file = fclose_file_func; - pzlib_filefunc_def->zerror_file = ferror_file_func; - pzlib_filefunc_def->opaque = NULL; -} - -void fill_fopen64_filefunc (zlib_filefunc64_def* pzlib_filefunc_def) -{ - pzlib_filefunc_def->zopen64_file = fopen64_file_func; - pzlib_filefunc_def->zread_file = fread_file_func; - pzlib_filefunc_def->zwrite_file = fwrite_file_func; - pzlib_filefunc_def->ztell64_file = ftell64_file_func; - pzlib_filefunc_def->zseek64_file = fseek64_file_func; - pzlib_filefunc_def->zclose_file = fclose_file_func; - pzlib_filefunc_def->zerror_file = ferror_file_func; - pzlib_filefunc_def->opaque = NULL; -} diff --git a/platform/win32/msvc/external/zlib/contrib/minizip/ioapi.h b/platform/win32/msvc/external/zlib/contrib/minizip/ioapi.h deleted file mode 100644 index 8dcbdb06e35..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/minizip/ioapi.h +++ /dev/null @@ -1,208 +0,0 @@ -/* ioapi.h -- IO base function header for compress/uncompress .zip - part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications for Zip64 support - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) - - For more info read MiniZip_info.txt - - Changes - - Oct-2009 - Defined ZPOS64_T to fpos_t on windows and u_int64_t on linux. (might need to find a better why for this) - Oct-2009 - Change to fseeko64, ftello64 and fopen64 so large files would work on linux. - More if/def section may be needed to support other platforms - Oct-2009 - Defined fxxxx64 calls to normal fopen/ftell/fseek so they would compile on windows. - (but you should use iowin32.c for windows instead) - -*/ - -#ifndef _ZLIBIOAPI64_H -#define _ZLIBIOAPI64_H - -#if (!defined(_WIN32)) && (!defined(WIN32)) && (!defined(__APPLE__)) - - // Linux needs this to support file operation on files larger then 4+GB - // But might need better if/def to select just the platforms that needs them. - - #ifndef __USE_FILE_OFFSET64 - #define __USE_FILE_OFFSET64 - #endif - #ifndef __USE_LARGEFILE64 - #define __USE_LARGEFILE64 - #endif - #ifndef _LARGEFILE64_SOURCE - #define _LARGEFILE64_SOURCE - #endif - #ifndef _FILE_OFFSET_BIT - #define _FILE_OFFSET_BIT 64 - #endif - -#endif - -#include <stdio.h> -#include <stdlib.h> -#include "zlib.h" - -#if defined(USE_FILE32API) -#define fopen64 fopen -#define ftello64 ftell -#define fseeko64 fseek -#else -#ifdef __FreeBSD__ -#define fopen64 fopen -#define ftello64 ftello -#define fseeko64 fseeko -#endif -#ifdef _MSC_VER - #define fopen64 fopen - #if (_MSC_VER >= 1400) && (!(defined(NO_MSCVER_FILE64_FUNC))) - #define ftello64 _ftelli64 - #define fseeko64 _fseeki64 - #else // old MSC - #define ftello64 ftell - #define fseeko64 fseek - #endif -#endif -#endif - -/* -#ifndef ZPOS64_T - #ifdef _WIN32 - #define ZPOS64_T fpos_t - #else - #include <stdint.h> - #define ZPOS64_T uint64_t - #endif -#endif -*/ - -#ifdef HAVE_MINIZIP64_CONF_H -#include "mz64conf.h" -#endif - -/* a type choosen by DEFINE */ -#ifdef HAVE_64BIT_INT_CUSTOM -typedef 64BIT_INT_CUSTOM_TYPE ZPOS64_T; -#else -#ifdef HAS_STDINT_H -#include "stdint.h" -typedef uint64_t ZPOS64_T; -#else - -/* Maximum unsigned 32-bit value used as placeholder for zip64 */ -#define MAXU32 0xffffffff - -#if defined(_MSC_VER) || defined(__BORLANDC__) -typedef unsigned __int64 ZPOS64_T; -#else -typedef unsigned long long int ZPOS64_T; -#endif -#endif -#endif - - - -#ifdef __cplusplus -extern "C" { -#endif - - -#define ZLIB_FILEFUNC_SEEK_CUR (1) -#define ZLIB_FILEFUNC_SEEK_END (2) -#define ZLIB_FILEFUNC_SEEK_SET (0) - -#define ZLIB_FILEFUNC_MODE_READ (1) -#define ZLIB_FILEFUNC_MODE_WRITE (2) -#define ZLIB_FILEFUNC_MODE_READWRITEFILTER (3) - -#define ZLIB_FILEFUNC_MODE_EXISTING (4) -#define ZLIB_FILEFUNC_MODE_CREATE (8) - - -#ifndef ZCALLBACK - #if (defined(WIN32) || defined(_WIN32) || defined (WINDOWS) || defined (_WINDOWS)) && defined(CALLBACK) && defined (USEWINDOWS_CALLBACK) - #define ZCALLBACK CALLBACK - #else - #define ZCALLBACK - #endif -#endif - - - - -typedef voidpf (ZCALLBACK *open_file_func) OF((voidpf opaque, const char* filename, int mode)); -typedef uLong (ZCALLBACK *read_file_func) OF((voidpf opaque, voidpf stream, void* buf, uLong size)); -typedef uLong (ZCALLBACK *write_file_func) OF((voidpf opaque, voidpf stream, const void* buf, uLong size)); -typedef int (ZCALLBACK *close_file_func) OF((voidpf opaque, voidpf stream)); -typedef int (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream)); - -typedef long (ZCALLBACK *tell_file_func) OF((voidpf opaque, voidpf stream)); -typedef long (ZCALLBACK *seek_file_func) OF((voidpf opaque, voidpf stream, uLong offset, int origin)); - - -/* here is the "old" 32 bits structure structure */ -typedef struct zlib_filefunc_def_s -{ - open_file_func zopen_file; - read_file_func zread_file; - write_file_func zwrite_file; - tell_file_func ztell_file; - seek_file_func zseek_file; - close_file_func zclose_file; - testerror_file_func zerror_file; - voidpf opaque; -} zlib_filefunc_def; - -typedef ZPOS64_T (ZCALLBACK *tell64_file_func) OF((voidpf opaque, voidpf stream)); -typedef long (ZCALLBACK *seek64_file_func) OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)); -typedef voidpf (ZCALLBACK *open64_file_func) OF((voidpf opaque, const void* filename, int mode)); - -typedef struct zlib_filefunc64_def_s -{ - open64_file_func zopen64_file; - read_file_func zread_file; - write_file_func zwrite_file; - tell64_file_func ztell64_file; - seek64_file_func zseek64_file; - close_file_func zclose_file; - testerror_file_func zerror_file; - voidpf opaque; -} zlib_filefunc64_def; - -void fill_fopen64_filefunc OF((zlib_filefunc64_def* pzlib_filefunc_def)); -void fill_fopen_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); - -/* now internal definition, only for zip.c and unzip.h */ -typedef struct zlib_filefunc64_32_def_s -{ - zlib_filefunc64_def zfile_func64; - open_file_func zopen32_file; - tell_file_func ztell32_file; - seek_file_func zseek32_file; -} zlib_filefunc64_32_def; - - -#define ZREAD64(filefunc,filestream,buf,size) ((*((filefunc).zfile_func64.zread_file)) ((filefunc).zfile_func64.opaque,filestream,buf,size)) -#define ZWRITE64(filefunc,filestream,buf,size) ((*((filefunc).zfile_func64.zwrite_file)) ((filefunc).zfile_func64.opaque,filestream,buf,size)) -//#define ZTELL64(filefunc,filestream) ((*((filefunc).ztell64_file)) ((filefunc).opaque,filestream)) -//#define ZSEEK64(filefunc,filestream,pos,mode) ((*((filefunc).zseek64_file)) ((filefunc).opaque,filestream,pos,mode)) -#define ZCLOSE64(filefunc,filestream) ((*((filefunc).zfile_func64.zclose_file)) ((filefunc).zfile_func64.opaque,filestream)) -#define ZERROR64(filefunc,filestream) ((*((filefunc).zfile_func64.zerror_file)) ((filefunc).zfile_func64.opaque,filestream)) - -voidpf call_zopen64 OF((const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode)); -long call_zseek64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin)); -ZPOS64_T call_ztell64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream)); - -void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32); - -#define ZOPEN64(filefunc,filename,mode) (call_zopen64((&(filefunc)),(filename),(mode))) -#define ZTELL64(filefunc,filestream) (call_ztell64((&(filefunc)),(filestream))) -#define ZSEEK64(filefunc,filestream,pos,mode) (call_zseek64((&(filefunc)),(filestream),(pos),(mode))) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/platform/win32/msvc/external/zlib/contrib/minizip/iowin32.c b/platform/win32/msvc/external/zlib/contrib/minizip/iowin32.c deleted file mode 100644 index a46d96c7fdd..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/minizip/iowin32.c +++ /dev/null @@ -1,461 +0,0 @@ -/* iowin32.c -- IO base function header for compress/uncompress .zip - Version 1.1, February 14h, 2010 - part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications for Zip64 support - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) - - For more info read MiniZip_info.txt - -*/ - -#include <stdlib.h> - -#include "zlib.h" -#include "ioapi.h" -#include "iowin32.h" - -#ifndef INVALID_HANDLE_VALUE -#define INVALID_HANDLE_VALUE (0xFFFFFFFF) -#endif - -#ifndef INVALID_SET_FILE_POINTER -#define INVALID_SET_FILE_POINTER ((DWORD)-1) -#endif - - -#if defined(WINAPI_FAMILY_PARTITION) && (!(defined(IOWIN32_USING_WINRT_API))) -#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) -#define IOWIN32_USING_WINRT_API 1 -#endif -#endif - -voidpf ZCALLBACK win32_open_file_func OF((voidpf opaque, const char* filename, int mode)); -uLong ZCALLBACK win32_read_file_func OF((voidpf opaque, voidpf stream, void* buf, uLong size)); -uLong ZCALLBACK win32_write_file_func OF((voidpf opaque, voidpf stream, const void* buf, uLong size)); -ZPOS64_T ZCALLBACK win32_tell64_file_func OF((voidpf opaque, voidpf stream)); -long ZCALLBACK win32_seek64_file_func OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)); -int ZCALLBACK win32_close_file_func OF((voidpf opaque, voidpf stream)); -int ZCALLBACK win32_error_file_func OF((voidpf opaque, voidpf stream)); - -typedef struct -{ - HANDLE hf; - int error; -} WIN32FILE_IOWIN; - - -static void win32_translate_open_mode(int mode, - DWORD* lpdwDesiredAccess, - DWORD* lpdwCreationDisposition, - DWORD* lpdwShareMode, - DWORD* lpdwFlagsAndAttributes) -{ - *lpdwDesiredAccess = *lpdwShareMode = *lpdwFlagsAndAttributes = *lpdwCreationDisposition = 0; - - if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ) - { - *lpdwDesiredAccess = GENERIC_READ; - *lpdwCreationDisposition = OPEN_EXISTING; - *lpdwShareMode = FILE_SHARE_READ; - } - else if (mode & ZLIB_FILEFUNC_MODE_EXISTING) - { - *lpdwDesiredAccess = GENERIC_WRITE | GENERIC_READ; - *lpdwCreationDisposition = OPEN_EXISTING; - } - else if (mode & ZLIB_FILEFUNC_MODE_CREATE) - { - *lpdwDesiredAccess = GENERIC_WRITE | GENERIC_READ; - *lpdwCreationDisposition = CREATE_ALWAYS; - } -} - -static voidpf win32_build_iowin(HANDLE hFile) -{ - voidpf ret=NULL; - - if ((hFile != NULL) && (hFile != INVALID_HANDLE_VALUE)) - { - WIN32FILE_IOWIN w32fiow; - w32fiow.hf = hFile; - w32fiow.error = 0; - ret = malloc(sizeof(WIN32FILE_IOWIN)); - - if (ret==NULL) - CloseHandle(hFile); - else - *((WIN32FILE_IOWIN*)ret) = w32fiow; - } - return ret; -} - -voidpf ZCALLBACK win32_open64_file_func (voidpf opaque,const void* filename,int mode) -{ - const char* mode_fopen = NULL; - DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ; - HANDLE hFile = NULL; - - win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes); - -#ifdef IOWIN32_USING_WINRT_API -#ifdef UNICODE - if ((filename!=NULL) && (dwDesiredAccess != 0)) - hFile = CreateFile2((LPCTSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL); -#else - if ((filename!=NULL) && (dwDesiredAccess != 0)) - { - WCHAR filenameW[FILENAME_MAX + 0x200 + 1]; - MultiByteToWideChar(CP_ACP,0,(const char*)filename,-1,filenameW,FILENAME_MAX + 0x200); - hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL); - } -#endif -#else - if ((filename!=NULL) && (dwDesiredAccess != 0)) - hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL); -#endif - - return win32_build_iowin(hFile); -} - - -voidpf ZCALLBACK win32_open64_file_funcA (voidpf opaque,const void* filename,int mode) -{ - const char* mode_fopen = NULL; - DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ; - HANDLE hFile = NULL; - - win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes); - -#ifdef IOWIN32_USING_WINRT_API - if ((filename!=NULL) && (dwDesiredAccess != 0)) - { - WCHAR filenameW[FILENAME_MAX + 0x200 + 1]; - MultiByteToWideChar(CP_ACP,0,(const char*)filename,-1,filenameW,FILENAME_MAX + 0x200); - hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL); - } -#else - if ((filename!=NULL) && (dwDesiredAccess != 0)) - hFile = CreateFileA((LPCSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL); -#endif - - return win32_build_iowin(hFile); -} - - -voidpf ZCALLBACK win32_open64_file_funcW (voidpf opaque,const void* filename,int mode) -{ - const char* mode_fopen = NULL; - DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ; - HANDLE hFile = NULL; - - win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes); - -#ifdef IOWIN32_USING_WINRT_API - if ((filename!=NULL) && (dwDesiredAccess != 0)) - hFile = CreateFile2((LPCWSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition,NULL); -#else - if ((filename!=NULL) && (dwDesiredAccess != 0)) - hFile = CreateFileW((LPCWSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL); -#endif - - return win32_build_iowin(hFile); -} - - -voidpf ZCALLBACK win32_open_file_func (voidpf opaque,const char* filename,int mode) -{ - const char* mode_fopen = NULL; - DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ; - HANDLE hFile = NULL; - - win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes); - -#ifdef IOWIN32_USING_WINRT_API -#ifdef UNICODE - if ((filename!=NULL) && (dwDesiredAccess != 0)) - hFile = CreateFile2((LPCTSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL); -#else - if ((filename!=NULL) && (dwDesiredAccess != 0)) - { - WCHAR filenameW[FILENAME_MAX + 0x200 + 1]; - MultiByteToWideChar(CP_ACP,0,(const char*)filename,-1,filenameW,FILENAME_MAX + 0x200); - hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL); - } -#endif -#else - if ((filename!=NULL) && (dwDesiredAccess != 0)) - hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL); -#endif - - return win32_build_iowin(hFile); -} - - -uLong ZCALLBACK win32_read_file_func (voidpf opaque, voidpf stream, void* buf,uLong size) -{ - uLong ret=0; - HANDLE hFile = NULL; - if (stream!=NULL) - hFile = ((WIN32FILE_IOWIN*)stream) -> hf; - - if (hFile != NULL) - { - if (!ReadFile(hFile, buf, size, &ret, NULL)) - { - DWORD dwErr = GetLastError(); - if (dwErr == ERROR_HANDLE_EOF) - dwErr = 0; - ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; - } - } - - return ret; -} - - -uLong ZCALLBACK win32_write_file_func (voidpf opaque,voidpf stream,const void* buf,uLong size) -{ - uLong ret=0; - HANDLE hFile = NULL; - if (stream!=NULL) - hFile = ((WIN32FILE_IOWIN*)stream) -> hf; - - if (hFile != NULL) - { - if (!WriteFile(hFile, buf, size, &ret, NULL)) - { - DWORD dwErr = GetLastError(); - if (dwErr == ERROR_HANDLE_EOF) - dwErr = 0; - ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; - } - } - - return ret; -} - -static BOOL MySetFilePointerEx(HANDLE hFile, LARGE_INTEGER pos, LARGE_INTEGER *newPos, DWORD dwMoveMethod) -{ -#ifdef IOWIN32_USING_WINRT_API - return SetFilePointerEx(hFile, pos, newPos, dwMoveMethod); -#else - LONG lHigh = pos.HighPart; - DWORD dwNewPos = SetFilePointer(hFile, pos.LowPart, &lHigh, FILE_CURRENT); - BOOL fOk = TRUE; - if (dwNewPos == 0xFFFFFFFF) - if (GetLastError() != NO_ERROR) - fOk = FALSE; - if ((newPos != NULL) && (fOk)) - { - newPos->LowPart = dwNewPos; - newPos->HighPart = lHigh; - } - return fOk; -#endif -} - -long ZCALLBACK win32_tell_file_func (voidpf opaque,voidpf stream) -{ - long ret=-1; - HANDLE hFile = NULL; - if (stream!=NULL) - hFile = ((WIN32FILE_IOWIN*)stream) -> hf; - if (hFile != NULL) - { - LARGE_INTEGER pos; - pos.QuadPart = 0; - - if (!MySetFilePointerEx(hFile, pos, &pos, FILE_CURRENT)) - { - DWORD dwErr = GetLastError(); - ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; - ret = -1; - } - else - ret=(long)pos.LowPart; - } - return ret; -} - -ZPOS64_T ZCALLBACK win32_tell64_file_func (voidpf opaque, voidpf stream) -{ - ZPOS64_T ret= (ZPOS64_T)-1; - HANDLE hFile = NULL; - if (stream!=NULL) - hFile = ((WIN32FILE_IOWIN*)stream)->hf; - - if (hFile) - { - LARGE_INTEGER pos; - pos.QuadPart = 0; - - if (!MySetFilePointerEx(hFile, pos, &pos, FILE_CURRENT)) - { - DWORD dwErr = GetLastError(); - ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; - ret = (ZPOS64_T)-1; - } - else - ret=pos.QuadPart; - } - return ret; -} - - -long ZCALLBACK win32_seek_file_func (voidpf opaque,voidpf stream,uLong offset,int origin) -{ - DWORD dwMoveMethod=0xFFFFFFFF; - HANDLE hFile = NULL; - - long ret=-1; - if (stream!=NULL) - hFile = ((WIN32FILE_IOWIN*)stream) -> hf; - switch (origin) - { - case ZLIB_FILEFUNC_SEEK_CUR : - dwMoveMethod = FILE_CURRENT; - break; - case ZLIB_FILEFUNC_SEEK_END : - dwMoveMethod = FILE_END; - break; - case ZLIB_FILEFUNC_SEEK_SET : - dwMoveMethod = FILE_BEGIN; - break; - default: return -1; - } - - if (hFile != NULL) - { - LARGE_INTEGER pos; - pos.QuadPart = offset; - if (!MySetFilePointerEx(hFile, pos, NULL, dwMoveMethod)) - { - DWORD dwErr = GetLastError(); - ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; - ret = -1; - } - else - ret=0; - } - return ret; -} - -long ZCALLBACK win32_seek64_file_func (voidpf opaque, voidpf stream,ZPOS64_T offset,int origin) -{ - DWORD dwMoveMethod=0xFFFFFFFF; - HANDLE hFile = NULL; - long ret=-1; - - if (stream!=NULL) - hFile = ((WIN32FILE_IOWIN*)stream)->hf; - - switch (origin) - { - case ZLIB_FILEFUNC_SEEK_CUR : - dwMoveMethod = FILE_CURRENT; - break; - case ZLIB_FILEFUNC_SEEK_END : - dwMoveMethod = FILE_END; - break; - case ZLIB_FILEFUNC_SEEK_SET : - dwMoveMethod = FILE_BEGIN; - break; - default: return -1; - } - - if (hFile) - { - LARGE_INTEGER pos; - pos.QuadPart = offset; - if (!MySetFilePointerEx(hFile, pos, NULL, FILE_CURRENT)) - { - DWORD dwErr = GetLastError(); - ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; - ret = -1; - } - else - ret=0; - } - return ret; -} - -int ZCALLBACK win32_close_file_func (voidpf opaque, voidpf stream) -{ - int ret=-1; - - if (stream!=NULL) - { - HANDLE hFile; - hFile = ((WIN32FILE_IOWIN*)stream) -> hf; - if (hFile != NULL) - { - CloseHandle(hFile); - ret=0; - } - free(stream); - } - return ret; -} - -int ZCALLBACK win32_error_file_func (voidpf opaque,voidpf stream) -{ - int ret=-1; - if (stream!=NULL) - { - ret = ((WIN32FILE_IOWIN*)stream) -> error; - } - return ret; -} - -void fill_win32_filefunc (zlib_filefunc_def* pzlib_filefunc_def) -{ - pzlib_filefunc_def->zopen_file = win32_open_file_func; - pzlib_filefunc_def->zread_file = win32_read_file_func; - pzlib_filefunc_def->zwrite_file = win32_write_file_func; - pzlib_filefunc_def->ztell_file = win32_tell_file_func; - pzlib_filefunc_def->zseek_file = win32_seek_file_func; - pzlib_filefunc_def->zclose_file = win32_close_file_func; - pzlib_filefunc_def->zerror_file = win32_error_file_func; - pzlib_filefunc_def->opaque = NULL; -} - -void fill_win32_filefunc64(zlib_filefunc64_def* pzlib_filefunc_def) -{ - pzlib_filefunc_def->zopen64_file = win32_open64_file_func; - pzlib_filefunc_def->zread_file = win32_read_file_func; - pzlib_filefunc_def->zwrite_file = win32_write_file_func; - pzlib_filefunc_def->ztell64_file = win32_tell64_file_func; - pzlib_filefunc_def->zseek64_file = win32_seek64_file_func; - pzlib_filefunc_def->zclose_file = win32_close_file_func; - pzlib_filefunc_def->zerror_file = win32_error_file_func; - pzlib_filefunc_def->opaque = NULL; -} - - -void fill_win32_filefunc64A(zlib_filefunc64_def* pzlib_filefunc_def) -{ - pzlib_filefunc_def->zopen64_file = win32_open64_file_funcA; - pzlib_filefunc_def->zread_file = win32_read_file_func; - pzlib_filefunc_def->zwrite_file = win32_write_file_func; - pzlib_filefunc_def->ztell64_file = win32_tell64_file_func; - pzlib_filefunc_def->zseek64_file = win32_seek64_file_func; - pzlib_filefunc_def->zclose_file = win32_close_file_func; - pzlib_filefunc_def->zerror_file = win32_error_file_func; - pzlib_filefunc_def->opaque = NULL; -} - - -void fill_win32_filefunc64W(zlib_filefunc64_def* pzlib_filefunc_def) -{ - pzlib_filefunc_def->zopen64_file = win32_open64_file_funcW; - pzlib_filefunc_def->zread_file = win32_read_file_func; - pzlib_filefunc_def->zwrite_file = win32_write_file_func; - pzlib_filefunc_def->ztell64_file = win32_tell64_file_func; - pzlib_filefunc_def->zseek64_file = win32_seek64_file_func; - pzlib_filefunc_def->zclose_file = win32_close_file_func; - pzlib_filefunc_def->zerror_file = win32_error_file_func; - pzlib_filefunc_def->opaque = NULL; -} diff --git a/platform/win32/msvc/external/zlib/contrib/minizip/iowin32.h b/platform/win32/msvc/external/zlib/contrib/minizip/iowin32.h deleted file mode 100644 index 0ca0969a7d0..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/minizip/iowin32.h +++ /dev/null @@ -1,28 +0,0 @@ -/* iowin32.h -- IO base function header for compress/uncompress .zip - Version 1.1, February 14h, 2010 - part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications for Zip64 support - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) - - For more info read MiniZip_info.txt - -*/ - -#include <windows.h> - - -#ifdef __cplusplus -extern "C" { -#endif - -void fill_win32_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); -void fill_win32_filefunc64 OF((zlib_filefunc64_def* pzlib_filefunc_def)); -void fill_win32_filefunc64A OF((zlib_filefunc64_def* pzlib_filefunc_def)); -void fill_win32_filefunc64W OF((zlib_filefunc64_def* pzlib_filefunc_def)); - -#ifdef __cplusplus -} -#endif diff --git a/platform/win32/msvc/external/zlib/contrib/minizip/make_vms.com b/platform/win32/msvc/external/zlib/contrib/minizip/make_vms.com deleted file mode 100644 index 9ac13a98fa5..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/minizip/make_vms.com +++ /dev/null @@ -1,25 +0,0 @@ -$ if f$search("ioapi.h_orig") .eqs. "" then copy ioapi.h ioapi.h_orig -$ open/write zdef vmsdefs.h -$ copy sys$input: zdef -$ deck -#define unix -#define fill_zlib_filefunc64_32_def_from_filefunc32 fillzffunc64from -#define Write_Zip64EndOfCentralDirectoryLocator Write_Zip64EoDLocator -#define Write_Zip64EndOfCentralDirectoryRecord Write_Zip64EoDRecord -#define Write_EndOfCentralDirectoryRecord Write_EoDRecord -$ eod -$ close zdef -$ copy vmsdefs.h,ioapi.h_orig ioapi.h -$ cc/include=[--]/prefix=all ioapi.c -$ cc/include=[--]/prefix=all miniunz.c -$ cc/include=[--]/prefix=all unzip.c -$ cc/include=[--]/prefix=all minizip.c -$ cc/include=[--]/prefix=all zip.c -$ link miniunz,unzip,ioapi,[--]libz.olb/lib -$ link minizip,zip,ioapi,[--]libz.olb/lib -$ mcr []minizip test minizip_info.txt -$ mcr []miniunz -l test.zip -$ rename minizip_info.txt; minizip_info.txt_old -$ mcr []miniunz test.zip -$ delete test.zip;* -$exit diff --git a/platform/win32/msvc/external/zlib/contrib/minizip/miniunz.c b/platform/win32/msvc/external/zlib/contrib/minizip/miniunz.c deleted file mode 100644 index 3d65401be5c..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/minizip/miniunz.c +++ /dev/null @@ -1,660 +0,0 @@ -/* - miniunz.c - Version 1.1, February 14h, 2010 - sample part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications of Unzip for Zip64 - Copyright (C) 2007-2008 Even Rouault - - Modifications for Zip64 support on both zip and unzip - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) -*/ - -#if (!defined(_WIN32)) && (!defined(WIN32)) && (!defined(__APPLE__)) - #ifndef __USE_FILE_OFFSET64 - #define __USE_FILE_OFFSET64 - #endif - #ifndef __USE_LARGEFILE64 - #define __USE_LARGEFILE64 - #endif - #ifndef _LARGEFILE64_SOURCE - #define _LARGEFILE64_SOURCE - #endif - #ifndef _FILE_OFFSET_BIT - #define _FILE_OFFSET_BIT 64 - #endif -#endif - -#ifdef __APPLE__ -// In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions -#define FOPEN_FUNC(filename, mode) fopen(filename, mode) -#define FTELLO_FUNC(stream) ftello(stream) -#define FSEEKO_FUNC(stream, offset, origin) fseeko(stream, offset, origin) -#else -#define FOPEN_FUNC(filename, mode) fopen64(filename, mode) -#define FTELLO_FUNC(stream) ftello64(stream) -#define FSEEKO_FUNC(stream, offset, origin) fseeko64(stream, offset, origin) -#endif - - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <time.h> -#include <errno.h> -#include <fcntl.h> - -#ifdef _WIN32 -# include <direct.h> -# include <io.h> -#else -# include <unistd.h> -# include <utime.h> -#endif - - -#include "unzip.h" - -#define CASESENSITIVITY (0) -#define WRITEBUFFERSIZE (8192) -#define MAXFILENAME (256) - -#ifdef _WIN32 -#define USEWIN32IOAPI -#include "iowin32.h" -#endif -/* - mini unzip, demo of unzip package - - usage : - Usage : miniunz [-exvlo] file.zip [file_to_extract] [-d extractdir] - - list the file in the zipfile, and print the content of FILE_ID.ZIP or README.TXT - if it exists -*/ - - -/* change_file_date : change the date/time of a file - filename : the filename of the file where date/time must be modified - dosdate : the new date at the MSDos format (4 bytes) - tmu_date : the SAME new date at the tm_unz format */ -void change_file_date(filename,dosdate,tmu_date) - const char *filename; - uLong dosdate; - tm_unz tmu_date; -{ -#ifdef _WIN32 - HANDLE hFile; - FILETIME ftm,ftLocal,ftCreate,ftLastAcc,ftLastWrite; - - hFile = CreateFileA(filename,GENERIC_READ | GENERIC_WRITE, - 0,NULL,OPEN_EXISTING,0,NULL); - GetFileTime(hFile,&ftCreate,&ftLastAcc,&ftLastWrite); - DosDateTimeToFileTime((WORD)(dosdate>>16),(WORD)dosdate,&ftLocal); - LocalFileTimeToFileTime(&ftLocal,&ftm); - SetFileTime(hFile,&ftm,&ftLastAcc,&ftm); - CloseHandle(hFile); -#else -#ifdef unix || __APPLE__ - struct utimbuf ut; - struct tm newdate; - newdate.tm_sec = tmu_date.tm_sec; - newdate.tm_min=tmu_date.tm_min; - newdate.tm_hour=tmu_date.tm_hour; - newdate.tm_mday=tmu_date.tm_mday; - newdate.tm_mon=tmu_date.tm_mon; - if (tmu_date.tm_year > 1900) - newdate.tm_year=tmu_date.tm_year - 1900; - else - newdate.tm_year=tmu_date.tm_year ; - newdate.tm_isdst=-1; - - ut.actime=ut.modtime=mktime(&newdate); - utime(filename,&ut); -#endif -#endif -} - - -/* mymkdir and change_file_date are not 100 % portable - As I don't know well Unix, I wait feedback for the unix portion */ - -int mymkdir(dirname) - const char* dirname; -{ - int ret=0; -#ifdef _WIN32 - ret = _mkdir(dirname); -#elif unix - ret = mkdir (dirname,0775); -#elif __APPLE__ - ret = mkdir (dirname,0775); -#endif - return ret; -} - -int makedir (newdir) - char *newdir; -{ - char *buffer ; - char *p; - int len = (int)strlen(newdir); - - if (len <= 0) - return 0; - - buffer = (char*)malloc(len+1); - if (buffer==NULL) - { - printf("Error allocating memory\n"); - return UNZ_INTERNALERROR; - } - strcpy(buffer,newdir); - - if (buffer[len-1] == '/') { - buffer[len-1] = '\0'; - } - if (mymkdir(buffer) == 0) - { - free(buffer); - return 1; - } - - p = buffer+1; - while (1) - { - char hold; - - while(*p && *p != '\\' && *p != '/') - p++; - hold = *p; - *p = 0; - if ((mymkdir(buffer) == -1) && (errno == ENOENT)) - { - printf("couldn't create directory %s\n",buffer); - free(buffer); - return 0; - } - if (hold == 0) - break; - *p++ = hold; - } - free(buffer); - return 1; -} - -void do_banner() -{ - printf("MiniUnz 1.01b, demo of zLib + Unz package written by Gilles Vollant\n"); - printf("more info at http://www.winimage.com/zLibDll/unzip.html\n\n"); -} - -void do_help() -{ - printf("Usage : miniunz [-e] [-x] [-v] [-l] [-o] [-p password] file.zip [file_to_extr.] [-d extractdir]\n\n" \ - " -e Extract without pathname (junk paths)\n" \ - " -x Extract with pathname\n" \ - " -v list files\n" \ - " -l list files\n" \ - " -d directory to extract into\n" \ - " -o overwrite files without prompting\n" \ - " -p extract crypted file using password\n\n"); -} - -void Display64BitsSize(ZPOS64_T n, int size_char) -{ - /* to avoid compatibility problem , we do here the conversion */ - char number[21]; - int offset=19; - int pos_string = 19; - number[20]=0; - for (;;) { - number[offset]=(char)((n%10)+'0'); - if (number[offset] != '0') - pos_string=offset; - n/=10; - if (offset==0) - break; - offset--; - } - { - int size_display_string = 19-pos_string; - while (size_char > size_display_string) - { - size_char--; - printf(" "); - } - } - - printf("%s",&number[pos_string]); -} - -int do_list(uf) - unzFile uf; -{ - uLong i; - unz_global_info64 gi; - int err; - - err = unzGetGlobalInfo64(uf,&gi); - if (err!=UNZ_OK) - printf("error %d with zipfile in unzGetGlobalInfo \n",err); - printf(" Length Method Size Ratio Date Time CRC-32 Name\n"); - printf(" ------ ------ ---- ----- ---- ---- ------ ----\n"); - for (i=0;i<gi.number_entry;i++) - { - char filename_inzip[256]; - unz_file_info64 file_info; - uLong ratio=0; - const char *string_method; - char charCrypt=' '; - err = unzGetCurrentFileInfo64(uf,&file_info,filename_inzip,sizeof(filename_inzip),NULL,0,NULL,0); - if (err!=UNZ_OK) - { - printf("error %d with zipfile in unzGetCurrentFileInfo\n",err); - break; - } - if (file_info.uncompressed_size>0) - ratio = (uLong)((file_info.compressed_size*100)/file_info.uncompressed_size); - - /* display a '*' if the file is crypted */ - if ((file_info.flag & 1) != 0) - charCrypt='*'; - - if (file_info.compression_method==0) - string_method="Stored"; - else - if (file_info.compression_method==Z_DEFLATED) - { - uInt iLevel=(uInt)((file_info.flag & 0x6)/2); - if (iLevel==0) - string_method="Defl:N"; - else if (iLevel==1) - string_method="Defl:X"; - else if ((iLevel==2) || (iLevel==3)) - string_method="Defl:F"; /* 2:fast , 3 : extra fast*/ - } - else - if (file_info.compression_method==Z_BZIP2ED) - { - string_method="BZip2 "; - } - else - string_method="Unkn. "; - - Display64BitsSize(file_info.uncompressed_size,7); - printf(" %6s%c",string_method,charCrypt); - Display64BitsSize(file_info.compressed_size,7); - printf(" %3lu%% %2.2lu-%2.2lu-%2.2lu %2.2lu:%2.2lu %8.8lx %s\n", - ratio, - (uLong)file_info.tmu_date.tm_mon + 1, - (uLong)file_info.tmu_date.tm_mday, - (uLong)file_info.tmu_date.tm_year % 100, - (uLong)file_info.tmu_date.tm_hour,(uLong)file_info.tmu_date.tm_min, - (uLong)file_info.crc,filename_inzip); - if ((i+1)<gi.number_entry) - { - err = unzGoToNextFile(uf); - if (err!=UNZ_OK) - { - printf("error %d with zipfile in unzGoToNextFile\n",err); - break; - } - } - } - - return 0; -} - - -int do_extract_currentfile(uf,popt_extract_without_path,popt_overwrite,password) - unzFile uf; - const int* popt_extract_without_path; - int* popt_overwrite; - const char* password; -{ - char filename_inzip[256]; - char* filename_withoutpath; - char* p; - int err=UNZ_OK; - FILE *fout=NULL; - void* buf; - uInt size_buf; - - unz_file_info64 file_info; - uLong ratio=0; - err = unzGetCurrentFileInfo64(uf,&file_info,filename_inzip,sizeof(filename_inzip),NULL,0,NULL,0); - - if (err!=UNZ_OK) - { - printf("error %d with zipfile in unzGetCurrentFileInfo\n",err); - return err; - } - - size_buf = WRITEBUFFERSIZE; - buf = (void*)malloc(size_buf); - if (buf==NULL) - { - printf("Error allocating memory\n"); - return UNZ_INTERNALERROR; - } - - p = filename_withoutpath = filename_inzip; - while ((*p) != '\0') - { - if (((*p)=='/') || ((*p)=='\\')) - filename_withoutpath = p+1; - p++; - } - - if ((*filename_withoutpath)=='\0') - { - if ((*popt_extract_without_path)==0) - { - printf("creating directory: %s\n",filename_inzip); - mymkdir(filename_inzip); - } - } - else - { - const char* write_filename; - int skip=0; - - if ((*popt_extract_without_path)==0) - write_filename = filename_inzip; - else - write_filename = filename_withoutpath; - - err = unzOpenCurrentFilePassword(uf,password); - if (err!=UNZ_OK) - { - printf("error %d with zipfile in unzOpenCurrentFilePassword\n",err); - } - - if (((*popt_overwrite)==0) && (err==UNZ_OK)) - { - char rep=0; - FILE* ftestexist; - ftestexist = FOPEN_FUNC(write_filename,"rb"); - if (ftestexist!=NULL) - { - fclose(ftestexist); - do - { - char answer[128]; - int ret; - - printf("The file %s exists. Overwrite ? [y]es, [n]o, [A]ll: ",write_filename); - ret = scanf("%1s",answer); - if (ret != 1) - { - exit(EXIT_FAILURE); - } - rep = answer[0] ; - if ((rep>='a') && (rep<='z')) - rep -= 0x20; - } - while ((rep!='Y') && (rep!='N') && (rep!='A')); - } - - if (rep == 'N') - skip = 1; - - if (rep == 'A') - *popt_overwrite=1; - } - - if ((skip==0) && (err==UNZ_OK)) - { - fout=FOPEN_FUNC(write_filename,"wb"); - /* some zipfile don't contain directory alone before file */ - if ((fout==NULL) && ((*popt_extract_without_path)==0) && - (filename_withoutpath!=(char*)filename_inzip)) - { - char c=*(filename_withoutpath-1); - *(filename_withoutpath-1)='\0'; - makedir(write_filename); - *(filename_withoutpath-1)=c; - fout=FOPEN_FUNC(write_filename,"wb"); - } - - if (fout==NULL) - { - printf("error opening %s\n",write_filename); - } - } - - if (fout!=NULL) - { - printf(" extracting: %s\n",write_filename); - - do - { - err = unzReadCurrentFile(uf,buf,size_buf); - if (err<0) - { - printf("error %d with zipfile in unzReadCurrentFile\n",err); - break; - } - if (err>0) - if (fwrite(buf,err,1,fout)!=1) - { - printf("error in writing extracted file\n"); - err=UNZ_ERRNO; - break; - } - } - while (err>0); - if (fout) - fclose(fout); - - if (err==0) - change_file_date(write_filename,file_info.dosDate, - file_info.tmu_date); - } - - if (err==UNZ_OK) - { - err = unzCloseCurrentFile (uf); - if (err!=UNZ_OK) - { - printf("error %d with zipfile in unzCloseCurrentFile\n",err); - } - } - else - unzCloseCurrentFile(uf); /* don't lose the error */ - } - - free(buf); - return err; -} - - -int do_extract(uf,opt_extract_without_path,opt_overwrite,password) - unzFile uf; - int opt_extract_without_path; - int opt_overwrite; - const char* password; -{ - uLong i; - unz_global_info64 gi; - int err; - FILE* fout=NULL; - - err = unzGetGlobalInfo64(uf,&gi); - if (err!=UNZ_OK) - printf("error %d with zipfile in unzGetGlobalInfo \n",err); - - for (i=0;i<gi.number_entry;i++) - { - if (do_extract_currentfile(uf,&opt_extract_without_path, - &opt_overwrite, - password) != UNZ_OK) - break; - - if ((i+1)<gi.number_entry) - { - err = unzGoToNextFile(uf); - if (err!=UNZ_OK) - { - printf("error %d with zipfile in unzGoToNextFile\n",err); - break; - } - } - } - - return 0; -} - -int do_extract_onefile(uf,filename,opt_extract_without_path,opt_overwrite,password) - unzFile uf; - const char* filename; - int opt_extract_without_path; - int opt_overwrite; - const char* password; -{ - int err = UNZ_OK; - if (unzLocateFile(uf,filename,CASESENSITIVITY)!=UNZ_OK) - { - printf("file %s not found in the zipfile\n",filename); - return 2; - } - - if (do_extract_currentfile(uf,&opt_extract_without_path, - &opt_overwrite, - password) == UNZ_OK) - return 0; - else - return 1; -} - - -int main(argc,argv) - int argc; - char *argv[]; -{ - const char *zipfilename=NULL; - const char *filename_to_extract=NULL; - const char *password=NULL; - char filename_try[MAXFILENAME+16] = ""; - int i; - int ret_value=0; - int opt_do_list=0; - int opt_do_extract=1; - int opt_do_extract_withoutpath=0; - int opt_overwrite=0; - int opt_extractdir=0; - const char *dirname=NULL; - unzFile uf=NULL; - - do_banner(); - if (argc==1) - { - do_help(); - return 0; - } - else - { - for (i=1;i<argc;i++) - { - if ((*argv[i])=='-') - { - const char *p=argv[i]+1; - - while ((*p)!='\0') - { - char c=*(p++);; - if ((c=='l') || (c=='L')) - opt_do_list = 1; - if ((c=='v') || (c=='V')) - opt_do_list = 1; - if ((c=='x') || (c=='X')) - opt_do_extract = 1; - if ((c=='e') || (c=='E')) - opt_do_extract = opt_do_extract_withoutpath = 1; - if ((c=='o') || (c=='O')) - opt_overwrite=1; - if ((c=='d') || (c=='D')) - { - opt_extractdir=1; - dirname=argv[i+1]; - } - - if (((c=='p') || (c=='P')) && (i+1<argc)) - { - password=argv[i+1]; - i++; - } - } - } - else - { - if (zipfilename == NULL) - zipfilename = argv[i]; - else if ((filename_to_extract==NULL) && (!opt_extractdir)) - filename_to_extract = argv[i] ; - } - } - } - - if (zipfilename!=NULL) - { - -# ifdef USEWIN32IOAPI - zlib_filefunc64_def ffunc; -# endif - - strncpy(filename_try, zipfilename,MAXFILENAME-1); - /* strncpy doesnt append the trailing NULL, of the string is too long. */ - filename_try[ MAXFILENAME ] = '\0'; - -# ifdef USEWIN32IOAPI - fill_win32_filefunc64A(&ffunc); - uf = unzOpen2_64(zipfilename,&ffunc); -# else - uf = unzOpen64(zipfilename); -# endif - if (uf==NULL) - { - strcat(filename_try,".zip"); -# ifdef USEWIN32IOAPI - uf = unzOpen2_64(filename_try,&ffunc); -# else - uf = unzOpen64(filename_try); -# endif - } - } - - if (uf==NULL) - { - printf("Cannot open %s or %s.zip\n",zipfilename,zipfilename); - return 1; - } - printf("%s opened\n",filename_try); - - if (opt_do_list==1) - ret_value = do_list(uf); - else if (opt_do_extract==1) - { -#ifdef _WIN32 - if (opt_extractdir && _chdir(dirname)) -#else - if (opt_extractdir && chdir(dirname)) -#endif - { - printf("Error changing into %s, aborting\n", dirname); - exit(-1); - } - - if (filename_to_extract == NULL) - ret_value = do_extract(uf, opt_do_extract_withoutpath, opt_overwrite, password); - else - ret_value = do_extract_onefile(uf, filename_to_extract, opt_do_extract_withoutpath, opt_overwrite, password); - } - - unzClose(uf); - - return ret_value; -} diff --git a/platform/win32/msvc/external/zlib/contrib/minizip/miniunzip.1 b/platform/win32/msvc/external/zlib/contrib/minizip/miniunzip.1 deleted file mode 100644 index 111ac69190f..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/minizip/miniunzip.1 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Hey, EMACS: -*- nroff -*- -.TH miniunzip 1 "Nov 7, 2001" -.\" Please adjust this date whenever revising the manpage. -.\" -.\" Some roff macros, for reference: -.\" .nh disable hyphenation -.\" .hy enable hyphenation -.\" .ad l left justify -.\" .ad b justify to both left and right margins -.\" .nf disable filling -.\" .fi enable filling -.\" .br insert line break -.\" .sp <n> insert n+1 empty lines -.\" for manpage-specific macros, see man(7) -.SH NAME -miniunzip - uncompress and examine ZIP archives -.SH SYNOPSIS -.B miniunzip -.RI [ -exvlo ] -zipfile [ files_to_extract ] [-d tempdir] -.SH DESCRIPTION -.B minizip -is a simple tool which allows the extraction of compressed file -archives in the ZIP format used by the MS-DOS utility PKZIP. It was -written as a demonstration of the -.IR zlib (3) -library and therefore lack many of the features of the -.IR unzip (1) -program. -.SH OPTIONS -A number of options are supported. With the exception of -.BI \-d\ tempdir -these must be supplied before any -other arguments and are: -.TP -.BI \-l\ ,\ \-\-v -List the files in the archive without extracting them. -.TP -.B \-o -Overwrite files without prompting for confirmation. -.TP -.B \-x -Extract files (default). -.PP -The -.I zipfile -argument is the name of the archive to process. The next argument can be used -to specify a single file to extract from the archive. - -Lastly, the following option can be specified at the end of the command-line: -.TP -.BI \-d\ tempdir -Extract the archive in the directory -.I tempdir -rather than the current directory. -.SH SEE ALSO -.BR minizip (1), -.BR zlib (3), -.BR unzip (1). -.SH AUTHOR -This program was written by Gilles Vollant. This manual page was -written by Mark Brown <broonie@sirena.org.uk>. The -d tempdir option -was added by Dirk Eddelbuettel <edd@debian.org>. diff --git a/platform/win32/msvc/external/zlib/contrib/minizip/minizip.1 b/platform/win32/msvc/external/zlib/contrib/minizip/minizip.1 deleted file mode 100644 index 1154484c1cc..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/minizip/minizip.1 +++ /dev/null @@ -1,46 +0,0 @@ -.\" Hey, EMACS: -*- nroff -*- -.TH minizip 1 "May 2, 2001" -.\" Please adjust this date whenever revising the manpage. -.\" -.\" Some roff macros, for reference: -.\" .nh disable hyphenation -.\" .hy enable hyphenation -.\" .ad l left justify -.\" .ad b justify to both left and right margins -.\" .nf disable filling -.\" .fi enable filling -.\" .br insert line break -.\" .sp <n> insert n+1 empty lines -.\" for manpage-specific macros, see man(7) -.SH NAME -minizip - create ZIP archives -.SH SYNOPSIS -.B minizip -.RI [ -o ] -zipfile [ " files" ... ] -.SH DESCRIPTION -.B minizip -is a simple tool which allows the creation of compressed file archives -in the ZIP format used by the MS-DOS utility PKZIP. It was written as -a demonstration of the -.IR zlib (3) -library and therefore lack many of the features of the -.IR zip (1) -program. -.SH OPTIONS -The first argument supplied is the name of the ZIP archive to create or -.RI -o -in which case it is ignored and the second argument treated as the -name of the ZIP file. If the ZIP file already exists it will be -overwritten. -.PP -Subsequent arguments specify a list of files to place in the ZIP -archive. If none are specified then an empty archive will be created. -.SH SEE ALSO -.BR miniunzip (1), -.BR zlib (3), -.BR zip (1). -.SH AUTHOR -This program was written by Gilles Vollant. This manual page was -written by Mark Brown <broonie@sirena.org.uk>. - diff --git a/platform/win32/msvc/external/zlib/contrib/minizip/minizip.c b/platform/win32/msvc/external/zlib/contrib/minizip/minizip.c deleted file mode 100644 index 4288962ecef..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/minizip/minizip.c +++ /dev/null @@ -1,520 +0,0 @@ -/* - minizip.c - Version 1.1, February 14h, 2010 - sample part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications of Unzip for Zip64 - Copyright (C) 2007-2008 Even Rouault - - Modifications for Zip64 support on both zip and unzip - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) -*/ - - -#if (!defined(_WIN32)) && (!defined(WIN32)) && (!defined(__APPLE__)) - #ifndef __USE_FILE_OFFSET64 - #define __USE_FILE_OFFSET64 - #endif - #ifndef __USE_LARGEFILE64 - #define __USE_LARGEFILE64 - #endif - #ifndef _LARGEFILE64_SOURCE - #define _LARGEFILE64_SOURCE - #endif - #ifndef _FILE_OFFSET_BIT - #define _FILE_OFFSET_BIT 64 - #endif -#endif - -#ifdef __APPLE__ -// In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions -#define FOPEN_FUNC(filename, mode) fopen(filename, mode) -#define FTELLO_FUNC(stream) ftello(stream) -#define FSEEKO_FUNC(stream, offset, origin) fseeko(stream, offset, origin) -#else -#define FOPEN_FUNC(filename, mode) fopen64(filename, mode) -#define FTELLO_FUNC(stream) ftello64(stream) -#define FSEEKO_FUNC(stream, offset, origin) fseeko64(stream, offset, origin) -#endif - - - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <time.h> -#include <errno.h> -#include <fcntl.h> - -#ifdef _WIN32 -# include <direct.h> -# include <io.h> -#else -# include <unistd.h> -# include <utime.h> -# include <sys/types.h> -# include <sys/stat.h> -#endif - -#include "zip.h" - -#ifdef _WIN32 - #define USEWIN32IOAPI - #include "iowin32.h" -#endif - - - -#define WRITEBUFFERSIZE (16384) -#define MAXFILENAME (256) - -#ifdef _WIN32 -uLong filetime(f, tmzip, dt) - char *f; /* name of file to get info on */ - tm_zip *tmzip; /* return value: access, modific. and creation times */ - uLong *dt; /* dostime */ -{ - int ret = 0; - { - FILETIME ftLocal; - HANDLE hFind; - WIN32_FIND_DATAA ff32; - - hFind = FindFirstFileA(f,&ff32); - if (hFind != INVALID_HANDLE_VALUE) - { - FileTimeToLocalFileTime(&(ff32.ftLastWriteTime),&ftLocal); - FileTimeToDosDateTime(&ftLocal,((LPWORD)dt)+1,((LPWORD)dt)+0); - FindClose(hFind); - ret = 1; - } - } - return ret; -} -#else -#ifdef unix || __APPLE__ -uLong filetime(f, tmzip, dt) - char *f; /* name of file to get info on */ - tm_zip *tmzip; /* return value: access, modific. and creation times */ - uLong *dt; /* dostime */ -{ - int ret=0; - struct stat s; /* results of stat() */ - struct tm* filedate; - time_t tm_t=0; - - if (strcmp(f,"-")!=0) - { - char name[MAXFILENAME+1]; - int len = strlen(f); - if (len > MAXFILENAME) - len = MAXFILENAME; - - strncpy(name, f,MAXFILENAME-1); - /* strncpy doesnt append the trailing NULL, of the string is too long. */ - name[ MAXFILENAME ] = '\0'; - - if (name[len - 1] == '/') - name[len - 1] = '\0'; - /* not all systems allow stat'ing a file with / appended */ - if (stat(name,&s)==0) - { - tm_t = s.st_mtime; - ret = 1; - } - } - filedate = localtime(&tm_t); - - tmzip->tm_sec = filedate->tm_sec; - tmzip->tm_min = filedate->tm_min; - tmzip->tm_hour = filedate->tm_hour; - tmzip->tm_mday = filedate->tm_mday; - tmzip->tm_mon = filedate->tm_mon ; - tmzip->tm_year = filedate->tm_year; - - return ret; -} -#else -uLong filetime(f, tmzip, dt) - char *f; /* name of file to get info on */ - tm_zip *tmzip; /* return value: access, modific. and creation times */ - uLong *dt; /* dostime */ -{ - return 0; -} -#endif -#endif - - - - -int check_exist_file(filename) - const char* filename; -{ - FILE* ftestexist; - int ret = 1; - ftestexist = FOPEN_FUNC(filename,"rb"); - if (ftestexist==NULL) - ret = 0; - else - fclose(ftestexist); - return ret; -} - -void do_banner() -{ - printf("MiniZip 1.1, demo of zLib + MiniZip64 package, written by Gilles Vollant\n"); - printf("more info on MiniZip at http://www.winimage.com/zLibDll/minizip.html\n\n"); -} - -void do_help() -{ - printf("Usage : minizip [-o] [-a] [-0 to -9] [-p password] [-j] file.zip [files_to_add]\n\n" \ - " -o Overwrite existing file.zip\n" \ - " -a Append to existing file.zip\n" \ - " -0 Store only\n" \ - " -1 Compress faster\n" \ - " -9 Compress better\n\n" \ - " -j exclude path. store only the file name.\n\n"); -} - -/* calculate the CRC32 of a file, - because to encrypt a file, we need known the CRC32 of the file before */ -int getFileCrc(const char* filenameinzip,void*buf,unsigned long size_buf,unsigned long* result_crc) -{ - unsigned long calculate_crc=0; - int err=ZIP_OK; - FILE * fin = FOPEN_FUNC(filenameinzip,"rb"); - - unsigned long size_read = 0; - unsigned long total_read = 0; - if (fin==NULL) - { - err = ZIP_ERRNO; - } - - if (err == ZIP_OK) - do - { - err = ZIP_OK; - size_read = (int)fread(buf,1,size_buf,fin); - if (size_read < size_buf) - if (feof(fin)==0) - { - printf("error in reading %s\n",filenameinzip); - err = ZIP_ERRNO; - } - - if (size_read>0) - calculate_crc = crc32(calculate_crc,buf,size_read); - total_read += size_read; - - } while ((err == ZIP_OK) && (size_read>0)); - - if (fin) - fclose(fin); - - *result_crc=calculate_crc; - printf("file %s crc %lx\n", filenameinzip, calculate_crc); - return err; -} - -int isLargeFile(const char* filename) -{ - int largeFile = 0; - ZPOS64_T pos = 0; - FILE* pFile = FOPEN_FUNC(filename, "rb"); - - if(pFile != NULL) - { - int n = FSEEKO_FUNC(pFile, 0, SEEK_END); - pos = FTELLO_FUNC(pFile); - - printf("File : %s is %lld bytes\n", filename, pos); - - if(pos >= 0xffffffff) - largeFile = 1; - - fclose(pFile); - } - - return largeFile; -} - -int main(argc,argv) - int argc; - char *argv[]; -{ - int i; - int opt_overwrite=0; - int opt_compress_level=Z_DEFAULT_COMPRESSION; - int opt_exclude_path=0; - int zipfilenamearg = 0; - char filename_try[MAXFILENAME+16]; - int zipok; - int err=0; - int size_buf=0; - void* buf=NULL; - const char* password=NULL; - - - do_banner(); - if (argc==1) - { - do_help(); - return 0; - } - else - { - for (i=1;i<argc;i++) - { - if ((*argv[i])=='-') - { - const char *p=argv[i]+1; - - while ((*p)!='\0') - { - char c=*(p++);; - if ((c=='o') || (c=='O')) - opt_overwrite = 1; - if ((c=='a') || (c=='A')) - opt_overwrite = 2; - if ((c>='0') && (c<='9')) - opt_compress_level = c-'0'; - if ((c=='j') || (c=='J')) - opt_exclude_path = 1; - - if (((c=='p') || (c=='P')) && (i+1<argc)) - { - password=argv[i+1]; - i++; - } - } - } - else - { - if (zipfilenamearg == 0) - { - zipfilenamearg = i ; - } - } - } - } - - size_buf = WRITEBUFFERSIZE; - buf = (void*)malloc(size_buf); - if (buf==NULL) - { - printf("Error allocating memory\n"); - return ZIP_INTERNALERROR; - } - - if (zipfilenamearg==0) - { - zipok=0; - } - else - { - int i,len; - int dot_found=0; - - zipok = 1 ; - strncpy(filename_try, argv[zipfilenamearg],MAXFILENAME-1); - /* strncpy doesnt append the trailing NULL, of the string is too long. */ - filename_try[ MAXFILENAME ] = '\0'; - - len=(int)strlen(filename_try); - for (i=0;i<len;i++) - if (filename_try[i]=='.') - dot_found=1; - - if (dot_found==0) - strcat(filename_try,".zip"); - - if (opt_overwrite==2) - { - /* if the file don't exist, we not append file */ - if (check_exist_file(filename_try)==0) - opt_overwrite=1; - } - else - if (opt_overwrite==0) - if (check_exist_file(filename_try)!=0) - { - char rep=0; - do - { - char answer[128]; - int ret; - printf("The file %s exists. Overwrite ? [y]es, [n]o, [a]ppend : ",filename_try); - ret = scanf("%1s",answer); - if (ret != 1) - { - exit(EXIT_FAILURE); - } - rep = answer[0] ; - if ((rep>='a') && (rep<='z')) - rep -= 0x20; - } - while ((rep!='Y') && (rep!='N') && (rep!='A')); - if (rep=='N') - zipok = 0; - if (rep=='A') - opt_overwrite = 2; - } - } - - if (zipok==1) - { - zipFile zf; - int errclose; -# ifdef USEWIN32IOAPI - zlib_filefunc64_def ffunc; - fill_win32_filefunc64A(&ffunc); - zf = zipOpen2_64(filename_try,(opt_overwrite==2) ? 2 : 0,NULL,&ffunc); -# else - zf = zipOpen64(filename_try,(opt_overwrite==2) ? 2 : 0); -# endif - - if (zf == NULL) - { - printf("error opening %s\n",filename_try); - err= ZIP_ERRNO; - } - else - printf("creating %s\n",filename_try); - - for (i=zipfilenamearg+1;(i<argc) && (err==ZIP_OK);i++) - { - if (!((((*(argv[i]))=='-') || ((*(argv[i]))=='/')) && - ((argv[i][1]=='o') || (argv[i][1]=='O') || - (argv[i][1]=='a') || (argv[i][1]=='A') || - (argv[i][1]=='p') || (argv[i][1]=='P') || - ((argv[i][1]>='0') || (argv[i][1]<='9'))) && - (strlen(argv[i]) == 2))) - { - FILE * fin; - int size_read; - const char* filenameinzip = argv[i]; - const char *savefilenameinzip; - zip_fileinfo zi; - unsigned long crcFile=0; - int zip64 = 0; - - zi.tmz_date.tm_sec = zi.tmz_date.tm_min = zi.tmz_date.tm_hour = - zi.tmz_date.tm_mday = zi.tmz_date.tm_mon = zi.tmz_date.tm_year = 0; - zi.dosDate = 0; - zi.internal_fa = 0; - zi.external_fa = 0; - filetime(filenameinzip,&zi.tmz_date,&zi.dosDate); - -/* - err = zipOpenNewFileInZip(zf,filenameinzip,&zi, - NULL,0,NULL,0,NULL / * comment * /, - (opt_compress_level != 0) ? Z_DEFLATED : 0, - opt_compress_level); -*/ - if ((password != NULL) && (err==ZIP_OK)) - err = getFileCrc(filenameinzip,buf,size_buf,&crcFile); - - zip64 = isLargeFile(filenameinzip); - - /* The path name saved, should not include a leading slash. */ - /*if it did, windows/xp and dynazip couldn't read the zip file. */ - savefilenameinzip = filenameinzip; - while( savefilenameinzip[0] == '\\' || savefilenameinzip[0] == '/' ) - { - savefilenameinzip++; - } - - /*should the zip file contain any path at all?*/ - if( opt_exclude_path ) - { - const char *tmpptr; - const char *lastslash = 0; - for( tmpptr = savefilenameinzip; *tmpptr; tmpptr++) - { - if( *tmpptr == '\\' || *tmpptr == '/') - { - lastslash = tmpptr; - } - } - if( lastslash != NULL ) - { - savefilenameinzip = lastslash+1; // base filename follows last slash. - } - } - - /**/ - err = zipOpenNewFileInZip3_64(zf,savefilenameinzip,&zi, - NULL,0,NULL,0,NULL /* comment*/, - (opt_compress_level != 0) ? Z_DEFLATED : 0, - opt_compress_level,0, - /* -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, */ - -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, - password,crcFile, zip64); - - if (err != ZIP_OK) - printf("error in opening %s in zipfile\n",filenameinzip); - else - { - fin = FOPEN_FUNC(filenameinzip,"rb"); - if (fin==NULL) - { - err=ZIP_ERRNO; - printf("error in opening %s for reading\n",filenameinzip); - } - } - - if (err == ZIP_OK) - do - { - err = ZIP_OK; - size_read = (int)fread(buf,1,size_buf,fin); - if (size_read < size_buf) - if (feof(fin)==0) - { - printf("error in reading %s\n",filenameinzip); - err = ZIP_ERRNO; - } - - if (size_read>0) - { - err = zipWriteInFileInZip (zf,buf,size_read); - if (err<0) - { - printf("error in writing %s in the zipfile\n", - filenameinzip); - } - - } - } while ((err == ZIP_OK) && (size_read>0)); - - if (fin) - fclose(fin); - - if (err<0) - err=ZIP_ERRNO; - else - { - err = zipCloseFileInZip(zf); - if (err!=ZIP_OK) - printf("error in closing %s in the zipfile\n", - filenameinzip); - } - } - } - errclose = zipClose(zf,NULL); - if (errclose != ZIP_OK) - printf("error in closing %s\n",filename_try); - } - else - { - do_help(); - } - - free(buf); - return 0; -} diff --git a/platform/win32/msvc/external/zlib/contrib/minizip/minizip.pc.in b/platform/win32/msvc/external/zlib/contrib/minizip/minizip.pc.in deleted file mode 100644 index 69b5b7fdcb3..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/minizip/minizip.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@/minizip - -Name: minizip -Description: Minizip zip file manipulation library -Requires: -Version: @PACKAGE_VERSION@ -Libs: -L${libdir} -lminizip -Libs.private: -lz -Cflags: -I${includedir} diff --git a/platform/win32/msvc/external/zlib/contrib/minizip/mztools.c b/platform/win32/msvc/external/zlib/contrib/minizip/mztools.c deleted file mode 100644 index 96891c2e0b7..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/minizip/mztools.c +++ /dev/null @@ -1,291 +0,0 @@ -/* - Additional tools for Minizip - Code: Xavier Roche '2004 - License: Same as ZLIB (www.gzip.org) -*/ - -/* Code */ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include "zlib.h" -#include "unzip.h" - -#define READ_8(adr) ((unsigned char)*(adr)) -#define READ_16(adr) ( READ_8(adr) | (READ_8(adr+1) << 8) ) -#define READ_32(adr) ( READ_16(adr) | (READ_16((adr)+2) << 16) ) - -#define WRITE_8(buff, n) do { \ - *((unsigned char*)(buff)) = (unsigned char) ((n) & 0xff); \ -} while(0) -#define WRITE_16(buff, n) do { \ - WRITE_8((unsigned char*)(buff), n); \ - WRITE_8(((unsigned char*)(buff)) + 1, (n) >> 8); \ -} while(0) -#define WRITE_32(buff, n) do { \ - WRITE_16((unsigned char*)(buff), (n) & 0xffff); \ - WRITE_16((unsigned char*)(buff) + 2, (n) >> 16); \ -} while(0) - -extern int ZEXPORT unzRepair(file, fileOut, fileOutTmp, nRecovered, bytesRecovered) -const char* file; -const char* fileOut; -const char* fileOutTmp; -uLong* nRecovered; -uLong* bytesRecovered; -{ - int err = Z_OK; - FILE* fpZip = fopen(file, "rb"); - FILE* fpOut = fopen(fileOut, "wb"); - FILE* fpOutCD = fopen(fileOutTmp, "wb"); - if (fpZip != NULL && fpOut != NULL) { - int entries = 0; - uLong totalBytes = 0; - char header[30]; - char filename[1024]; - char extra[1024]; - int offset = 0; - int offsetCD = 0; - while ( fread(header, 1, 30, fpZip) == 30 ) { - int currentOffset = offset; - - /* File entry */ - if (READ_32(header) == 0x04034b50) { - unsigned int version = READ_16(header + 4); - unsigned int gpflag = READ_16(header + 6); - unsigned int method = READ_16(header + 8); - unsigned int filetime = READ_16(header + 10); - unsigned int filedate = READ_16(header + 12); - unsigned int crc = READ_32(header + 14); /* crc */ - unsigned int cpsize = READ_32(header + 18); /* compressed size */ - unsigned int uncpsize = READ_32(header + 22); /* uncompressed sz */ - unsigned int fnsize = READ_16(header + 26); /* file name length */ - unsigned int extsize = READ_16(header + 28); /* extra field length */ - filename[0] = extra[0] = '\0'; - - /* Header */ - if (fwrite(header, 1, 30, fpOut) == 30) { - offset += 30; - } else { - err = Z_ERRNO; - break; - } - - /* Filename */ - if (fnsize > 0) { - if (fnsize < sizeof(filename)) { - if (fread(filename, 1, fnsize, fpZip) == fnsize) { - if (fwrite(filename, 1, fnsize, fpOut) == fnsize) { - offset += fnsize; - } else { - err = Z_ERRNO; - break; - } - } else { - err = Z_ERRNO; - break; - } - } else { - err = Z_ERRNO; - break; - } - } else { - err = Z_STREAM_ERROR; - break; - } - - /* Extra field */ - if (extsize > 0) { - if (extsize < sizeof(extra)) { - if (fread(extra, 1, extsize, fpZip) == extsize) { - if (fwrite(extra, 1, extsize, fpOut) == extsize) { - offset += extsize; - } else { - err = Z_ERRNO; - break; - } - } else { - err = Z_ERRNO; - break; - } - } else { - err = Z_ERRNO; - break; - } - } - - /* Data */ - { - int dataSize = cpsize; - if (dataSize == 0) { - dataSize = uncpsize; - } - if (dataSize > 0) { - char* data = malloc(dataSize); - if (data != NULL) { - if ((int)fread(data, 1, dataSize, fpZip) == dataSize) { - if ((int)fwrite(data, 1, dataSize, fpOut) == dataSize) { - offset += dataSize; - totalBytes += dataSize; - } else { - err = Z_ERRNO; - } - } else { - err = Z_ERRNO; - } - free(data); - if (err != Z_OK) { - break; - } - } else { - err = Z_MEM_ERROR; - break; - } - } - } - - /* Central directory entry */ - { - char header[46]; - char* comment = ""; - int comsize = (int) strlen(comment); - WRITE_32(header, 0x02014b50); - WRITE_16(header + 4, version); - WRITE_16(header + 6, version); - WRITE_16(header + 8, gpflag); - WRITE_16(header + 10, method); - WRITE_16(header + 12, filetime); - WRITE_16(header + 14, filedate); - WRITE_32(header + 16, crc); - WRITE_32(header + 20, cpsize); - WRITE_32(header + 24, uncpsize); - WRITE_16(header + 28, fnsize); - WRITE_16(header + 30, extsize); - WRITE_16(header + 32, comsize); - WRITE_16(header + 34, 0); /* disk # */ - WRITE_16(header + 36, 0); /* int attrb */ - WRITE_32(header + 38, 0); /* ext attrb */ - WRITE_32(header + 42, currentOffset); - /* Header */ - if (fwrite(header, 1, 46, fpOutCD) == 46) { - offsetCD += 46; - - /* Filename */ - if (fnsize > 0) { - if (fwrite(filename, 1, fnsize, fpOutCD) == fnsize) { - offsetCD += fnsize; - } else { - err = Z_ERRNO; - break; - } - } else { - err = Z_STREAM_ERROR; - break; - } - - /* Extra field */ - if (extsize > 0) { - if (fwrite(extra, 1, extsize, fpOutCD) == extsize) { - offsetCD += extsize; - } else { - err = Z_ERRNO; - break; - } - } - - /* Comment field */ - if (comsize > 0) { - if ((int)fwrite(comment, 1, comsize, fpOutCD) == comsize) { - offsetCD += comsize; - } else { - err = Z_ERRNO; - break; - } - } - - - } else { - err = Z_ERRNO; - break; - } - } - - /* Success */ - entries++; - - } else { - break; - } - } - - /* Final central directory */ - { - int entriesZip = entries; - char header[22]; - char* comment = ""; // "ZIP File recovered by zlib/minizip/mztools"; - int comsize = (int) strlen(comment); - if (entriesZip > 0xffff) { - entriesZip = 0xffff; - } - WRITE_32(header, 0x06054b50); - WRITE_16(header + 4, 0); /* disk # */ - WRITE_16(header + 6, 0); /* disk # */ - WRITE_16(header + 8, entriesZip); /* hack */ - WRITE_16(header + 10, entriesZip); /* hack */ - WRITE_32(header + 12, offsetCD); /* size of CD */ - WRITE_32(header + 16, offset); /* offset to CD */ - WRITE_16(header + 20, comsize); /* comment */ - - /* Header */ - if (fwrite(header, 1, 22, fpOutCD) == 22) { - - /* Comment field */ - if (comsize > 0) { - if ((int)fwrite(comment, 1, comsize, fpOutCD) != comsize) { - err = Z_ERRNO; - } - } - - } else { - err = Z_ERRNO; - } - } - - /* Final merge (file + central directory) */ - fclose(fpOutCD); - if (err == Z_OK) { - fpOutCD = fopen(fileOutTmp, "rb"); - if (fpOutCD != NULL) { - int nRead; - char buffer[8192]; - while ( (nRead = (int)fread(buffer, 1, sizeof(buffer), fpOutCD)) > 0) { - if ((int)fwrite(buffer, 1, nRead, fpOut) != nRead) { - err = Z_ERRNO; - break; - } - } - fclose(fpOutCD); - } - } - - /* Close */ - fclose(fpZip); - fclose(fpOut); - - /* Wipe temporary file */ - (void)remove(fileOutTmp); - - /* Number of recovered entries */ - if (err == Z_OK) { - if (nRecovered != NULL) { - *nRecovered = entries; - } - if (bytesRecovered != NULL) { - *bytesRecovered = totalBytes; - } - } - } else { - err = Z_STREAM_ERROR; - } - return err; -} diff --git a/platform/win32/msvc/external/zlib/contrib/minizip/mztools.h b/platform/win32/msvc/external/zlib/contrib/minizip/mztools.h deleted file mode 100644 index a49a426ec2f..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/minizip/mztools.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - Additional tools for Minizip - Code: Xavier Roche '2004 - License: Same as ZLIB (www.gzip.org) -*/ - -#ifndef _zip_tools_H -#define _zip_tools_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _ZLIB_H -#include "zlib.h" -#endif - -#include "unzip.h" - -/* Repair a ZIP file (missing central directory) - file: file to recover - fileOut: output file after recovery - fileOutTmp: temporary file name used for recovery -*/ -extern int ZEXPORT unzRepair(const char* file, - const char* fileOut, - const char* fileOutTmp, - uLong* nRecovered, - uLong* bytesRecovered); - - -#ifdef __cplusplus -} -#endif - - -#endif diff --git a/platform/win32/msvc/external/zlib/contrib/minizip/unzip.c b/platform/win32/msvc/external/zlib/contrib/minizip/unzip.c deleted file mode 100644 index 909350435a5..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/minizip/unzip.c +++ /dev/null @@ -1,2125 +0,0 @@ -/* unzip.c -- IO for uncompress .zip files using zlib - Version 1.1, February 14h, 2010 - part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications of Unzip for Zip64 - Copyright (C) 2007-2008 Even Rouault - - Modifications for Zip64 support on both zip and unzip - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) - - For more info read MiniZip_info.txt - - - ------------------------------------------------------------------------------------ - Decryption code comes from crypt.c by Info-ZIP but has been greatly reduced in terms of - compatibility with older software. The following is from the original crypt.c. - Code woven in by Terry Thorsen 1/2003. - - Copyright (c) 1990-2000 Info-ZIP. All rights reserved. - - See the accompanying file LICENSE, version 2000-Apr-09 or later - (the contents of which are also included in zip.h) for terms of use. - If, for some reason, all these files are missing, the Info-ZIP license - also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html - - crypt.c (full version) by Info-ZIP. Last revised: [see crypt.h] - - The encryption/decryption parts of this source code (as opposed to the - non-echoing password parts) were originally written in Europe. The - whole source package can be freely distributed, including from the USA. - (Prior to January 2000, re-export from the US was a violation of US law.) - - This encryption code is a direct transcription of the algorithm from - Roger Schlafly, described by Phil Katz in the file appnote.txt. This - file (appnote.txt) is distributed with the PKZIP program (even in the - version without encryption capabilities). - - ------------------------------------------------------------------------------------ - - Changes in unzip.c - - 2007-2008 - Even Rouault - Addition of cpl_unzGetCurrentFileZStreamPos - 2007-2008 - Even Rouault - Decoration of symbol names unz* -> cpl_unz* - 2007-2008 - Even Rouault - Remove old C style function prototypes - 2007-2008 - Even Rouault - Add unzip support for ZIP64 - - Copyright (C) 2007-2008 Even Rouault - - - Oct-2009 - Mathias Svensson - Removed cpl_* from symbol names (Even Rouault added them but since this is now moved to a new project (minizip64) I renamed them again). - Oct-2009 - Mathias Svensson - Fixed problem if uncompressed size was > 4G and compressed size was <4G - should only read the compressed/uncompressed size from the Zip64 format if - the size from normal header was 0xFFFFFFFF - Oct-2009 - Mathias Svensson - Applied some bug fixes from paches recived from Gilles Vollant - Oct-2009 - Mathias Svensson - Applied support to unzip files with compression mathod BZIP2 (bzip2 lib is required) - Patch created by Daniel Borca - - Jan-2010 - back to unzip and minizip 1.0 name scheme, with compatibility layer - - Copyright (C) 1998 - 2010 Gilles Vollant, Even Rouault, Mathias Svensson - -*/ - - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#ifndef NOUNCRYPT - #define NOUNCRYPT -#endif - -#include "zlib.h" -#include "unzip.h" - -#ifdef STDC -# include <stddef.h> -# include <string.h> -# include <stdlib.h> -#endif -#ifdef NO_ERRNO_H - extern int errno; -#else -# include <errno.h> -#endif - - -#ifndef local -# define local static -#endif -/* compile with -Dlocal if your debugger can't find static symbols */ - - -#ifndef CASESENSITIVITYDEFAULT_NO -# if !defined(unix) && !defined(CASESENSITIVITYDEFAULT_YES) -# define CASESENSITIVITYDEFAULT_NO -# endif -#endif - - -#ifndef UNZ_BUFSIZE -#define UNZ_BUFSIZE (16384) -#endif - -#ifndef UNZ_MAXFILENAMEINZIP -#define UNZ_MAXFILENAMEINZIP (256) -#endif - -#ifndef ALLOC -# define ALLOC(size) (malloc(size)) -#endif -#ifndef TRYFREE -# define TRYFREE(p) {if (p) free(p);} -#endif - -#define SIZECENTRALDIRITEM (0x2e) -#define SIZEZIPLOCALHEADER (0x1e) - - -const char unz_copyright[] = - " unzip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll"; - -/* unz_file_info_interntal contain internal info about a file in zipfile*/ -typedef struct unz_file_info64_internal_s -{ - ZPOS64_T offset_curfile;/* relative offset of local header 8 bytes */ -} unz_file_info64_internal; - - -/* file_in_zip_read_info_s contain internal information about a file in zipfile, - when reading and decompress it */ -typedef struct -{ - char *read_buffer; /* internal buffer for compressed data */ - z_stream stream; /* zLib stream structure for inflate */ - -#ifdef HAVE_BZIP2 - bz_stream bstream; /* bzLib stream structure for bziped */ -#endif - - ZPOS64_T pos_in_zipfile; /* position in byte on the zipfile, for fseek*/ - uLong stream_initialised; /* flag set if stream structure is initialised*/ - - ZPOS64_T offset_local_extrafield;/* offset of the local extra field */ - uInt size_local_extrafield;/* size of the local extra field */ - ZPOS64_T pos_local_extrafield; /* position in the local extra field in read*/ - ZPOS64_T total_out_64; - - uLong crc32; /* crc32 of all data uncompressed */ - uLong crc32_wait; /* crc32 we must obtain after decompress all */ - ZPOS64_T rest_read_compressed; /* number of byte to be decompressed */ - ZPOS64_T rest_read_uncompressed;/*number of byte to be obtained after decomp*/ - zlib_filefunc64_32_def z_filefunc; - voidpf filestream; /* io structore of the zipfile */ - uLong compression_method; /* compression method (0==store) */ - ZPOS64_T byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ - int raw; -} file_in_zip64_read_info_s; - - -/* unz64_s contain internal information about the zipfile -*/ -typedef struct -{ - zlib_filefunc64_32_def z_filefunc; - int is64bitOpenFunction; - voidpf filestream; /* io structore of the zipfile */ - unz_global_info64 gi; /* public global information */ - ZPOS64_T byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ - ZPOS64_T num_file; /* number of the current file in the zipfile*/ - ZPOS64_T pos_in_central_dir; /* pos of the current file in the central dir*/ - ZPOS64_T current_file_ok; /* flag about the usability of the current file*/ - ZPOS64_T central_pos; /* position of the beginning of the central dir*/ - - ZPOS64_T size_central_dir; /* size of the central directory */ - ZPOS64_T offset_central_dir; /* offset of start of central directory with - respect to the starting disk number */ - - unz_file_info64 cur_file_info; /* public info about the current file in zip*/ - unz_file_info64_internal cur_file_info_internal; /* private info about it*/ - file_in_zip64_read_info_s* pfile_in_zip_read; /* structure about the current - file if we are decompressing it */ - int encrypted; - - int isZip64; - -# ifndef NOUNCRYPT - unsigned long keys[3]; /* keys defining the pseudo-random sequence */ - const z_crc_t* pcrc_32_tab; -# endif -} unz64_s; - - -#ifndef NOUNCRYPT -#include "crypt.h" -#endif - -/* =========================================================================== - Read a byte from a gz_stream; update next_in and avail_in. Return EOF - for end of file. - IN assertion: the stream s has been sucessfully opened for reading. -*/ - - -local int unz64local_getByte OF(( - const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream, - int *pi)); - -local int unz64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, int *pi) -{ - unsigned char c; - int err = (int)ZREAD64(*pzlib_filefunc_def,filestream,&c,1); - if (err==1) - { - *pi = (int)c; - return UNZ_OK; - } - else - { - if (ZERROR64(*pzlib_filefunc_def,filestream)) - return UNZ_ERRNO; - else - return UNZ_EOF; - } -} - - -/* =========================================================================== - Reads a long in LSB order from the given gz_stream. Sets -*/ -local int unz64local_getShort OF(( - const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream, - uLong *pX)); - -local int unz64local_getShort (const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream, - uLong *pX) -{ - uLong x ; - int i = 0; - int err; - - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x = (uLong)i; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((uLong)i)<<8; - - if (err==UNZ_OK) - *pX = x; - else - *pX = 0; - return err; -} - -local int unz64local_getLong OF(( - const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream, - uLong *pX)); - -local int unz64local_getLong (const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream, - uLong *pX) -{ - uLong x ; - int i = 0; - int err; - - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x = (uLong)i; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((uLong)i)<<8; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((uLong)i)<<16; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((uLong)i)<<24; - - if (err==UNZ_OK) - *pX = x; - else - *pX = 0; - return err; -} - -local int unz64local_getLong64 OF(( - const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream, - ZPOS64_T *pX)); - - -local int unz64local_getLong64 (const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream, - ZPOS64_T *pX) -{ - ZPOS64_T x ; - int i = 0; - int err; - - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x = (ZPOS64_T)i; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((ZPOS64_T)i)<<8; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((ZPOS64_T)i)<<16; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((ZPOS64_T)i)<<24; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((ZPOS64_T)i)<<32; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((ZPOS64_T)i)<<40; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((ZPOS64_T)i)<<48; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((ZPOS64_T)i)<<56; - - if (err==UNZ_OK) - *pX = x; - else - *pX = 0; - return err; -} - -/* My own strcmpi / strcasecmp */ -local int strcmpcasenosensitive_internal (const char* fileName1, const char* fileName2) -{ - for (;;) - { - char c1=*(fileName1++); - char c2=*(fileName2++); - if ((c1>='a') && (c1<='z')) - c1 -= 0x20; - if ((c2>='a') && (c2<='z')) - c2 -= 0x20; - if (c1=='\0') - return ((c2=='\0') ? 0 : -1); - if (c2=='\0') - return 1; - if (c1<c2) - return -1; - if (c1>c2) - return 1; - } -} - - -#ifdef CASESENSITIVITYDEFAULT_NO -#define CASESENSITIVITYDEFAULTVALUE 2 -#else -#define CASESENSITIVITYDEFAULTVALUE 1 -#endif - -#ifndef STRCMPCASENOSENTIVEFUNCTION -#define STRCMPCASENOSENTIVEFUNCTION strcmpcasenosensitive_internal -#endif - -/* - Compare two filename (fileName1,fileName2). - If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) - If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi - or strcasecmp) - If iCaseSenisivity = 0, case sensitivity is defaut of your operating system - (like 1 on Unix, 2 on Windows) - -*/ -extern int ZEXPORT unzStringFileNameCompare (const char* fileName1, - const char* fileName2, - int iCaseSensitivity) - -{ - if (iCaseSensitivity==0) - iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE; - - if (iCaseSensitivity==1) - return strcmp(fileName1,fileName2); - - return STRCMPCASENOSENTIVEFUNCTION(fileName1,fileName2); -} - -#ifndef BUFREADCOMMENT -#define BUFREADCOMMENT (0x400) -#endif - -/* - Locate the Central directory of a zipfile (at the end, just before - the global comment) -*/ -local ZPOS64_T unz64local_SearchCentralDir OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream)); -local ZPOS64_T unz64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream) -{ - unsigned char* buf; - ZPOS64_T uSizeFile; - ZPOS64_T uBackRead; - ZPOS64_T uMaxBack=0xffff; /* maximum size of global comment */ - ZPOS64_T uPosFound=0; - - if (ZSEEK64(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0) - return 0; - - - uSizeFile = ZTELL64(*pzlib_filefunc_def,filestream); - - if (uMaxBack>uSizeFile) - uMaxBack = uSizeFile; - - buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); - if (buf==NULL) - return 0; - - uBackRead = 4; - while (uBackRead<uMaxBack) - { - uLong uReadSize; - ZPOS64_T uReadPos ; - int i; - if (uBackRead+BUFREADCOMMENT>uMaxBack) - uBackRead = uMaxBack; - else - uBackRead+=BUFREADCOMMENT; - uReadPos = uSizeFile-uBackRead ; - - uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? - (BUFREADCOMMENT+4) : (uLong)(uSizeFile-uReadPos); - if (ZSEEK64(*pzlib_filefunc_def,filestream,uReadPos,ZLIB_FILEFUNC_SEEK_SET)!=0) - break; - - if (ZREAD64(*pzlib_filefunc_def,filestream,buf,uReadSize)!=uReadSize) - break; - - for (i=(int)uReadSize-3; (i--)>0;) - if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && - ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06)) - { - uPosFound = uReadPos+i; - break; - } - - if (uPosFound!=0) - break; - } - TRYFREE(buf); - return uPosFound; -} - - -/* - Locate the Central directory 64 of a zipfile (at the end, just before - the global comment) -*/ -local ZPOS64_T unz64local_SearchCentralDir64 OF(( - const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream)); - -local ZPOS64_T unz64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream) -{ - unsigned char* buf; - ZPOS64_T uSizeFile; - ZPOS64_T uBackRead; - ZPOS64_T uMaxBack=0xffff; /* maximum size of global comment */ - ZPOS64_T uPosFound=0; - uLong uL; - ZPOS64_T relativeOffset; - - if (ZSEEK64(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0) - return 0; - - - uSizeFile = ZTELL64(*pzlib_filefunc_def,filestream); - - if (uMaxBack>uSizeFile) - uMaxBack = uSizeFile; - - buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); - if (buf==NULL) - return 0; - - uBackRead = 4; - while (uBackRead<uMaxBack) - { - uLong uReadSize; - ZPOS64_T uReadPos; - int i; - if (uBackRead+BUFREADCOMMENT>uMaxBack) - uBackRead = uMaxBack; - else - uBackRead+=BUFREADCOMMENT; - uReadPos = uSizeFile-uBackRead ; - - uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? - (BUFREADCOMMENT+4) : (uLong)(uSizeFile-uReadPos); - if (ZSEEK64(*pzlib_filefunc_def,filestream,uReadPos,ZLIB_FILEFUNC_SEEK_SET)!=0) - break; - - if (ZREAD64(*pzlib_filefunc_def,filestream,buf,uReadSize)!=uReadSize) - break; - - for (i=(int)uReadSize-3; (i--)>0;) - if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && - ((*(buf+i+2))==0x06) && ((*(buf+i+3))==0x07)) - { - uPosFound = uReadPos+i; - break; - } - - if (uPosFound!=0) - break; - } - TRYFREE(buf); - if (uPosFound == 0) - return 0; - - /* Zip64 end of central directory locator */ - if (ZSEEK64(*pzlib_filefunc_def,filestream, uPosFound,ZLIB_FILEFUNC_SEEK_SET)!=0) - return 0; - - /* the signature, already checked */ - if (unz64local_getLong(pzlib_filefunc_def,filestream,&uL)!=UNZ_OK) - return 0; - - /* number of the disk with the start of the zip64 end of central directory */ - if (unz64local_getLong(pzlib_filefunc_def,filestream,&uL)!=UNZ_OK) - return 0; - if (uL != 0) - return 0; - - /* relative offset of the zip64 end of central directory record */ - if (unz64local_getLong64(pzlib_filefunc_def,filestream,&relativeOffset)!=UNZ_OK) - return 0; - - /* total number of disks */ - if (unz64local_getLong(pzlib_filefunc_def,filestream,&uL)!=UNZ_OK) - return 0; - if (uL != 1) - return 0; - - /* Goto end of central directory record */ - if (ZSEEK64(*pzlib_filefunc_def,filestream, relativeOffset,ZLIB_FILEFUNC_SEEK_SET)!=0) - return 0; - - /* the signature */ - if (unz64local_getLong(pzlib_filefunc_def,filestream,&uL)!=UNZ_OK) - return 0; - - if (uL != 0x06064b50) - return 0; - - return relativeOffset; -} - -/* - Open a Zip file. path contain the full pathname (by example, - on a Windows NT computer "c:\\test\\zlib114.zip" or on an Unix computer - "zlib/zlib114.zip". - If the zipfile cannot be opened (file doesn't exist or in not valid), the - return value is NULL. - Else, the return value is a unzFile Handle, usable with other function - of this unzip package. -*/ -local unzFile unzOpenInternal (const void *path, - zlib_filefunc64_32_def* pzlib_filefunc64_32_def, - int is64bitOpenFunction) -{ - unz64_s us; - unz64_s *s; - ZPOS64_T central_pos; - uLong uL; - - uLong number_disk; /* number of the current dist, used for - spaning ZIP, unsupported, always 0*/ - uLong number_disk_with_CD; /* number the the disk with central dir, used - for spaning ZIP, unsupported, always 0*/ - ZPOS64_T number_entry_CD; /* total number of entries in - the central dir - (same than number_entry on nospan) */ - - int err=UNZ_OK; - - if (unz_copyright[0]!=' ') - return NULL; - - us.z_filefunc.zseek32_file = NULL; - us.z_filefunc.ztell32_file = NULL; - if (pzlib_filefunc64_32_def==NULL) - fill_fopen64_filefunc(&us.z_filefunc.zfile_func64); - else - us.z_filefunc = *pzlib_filefunc64_32_def; - us.is64bitOpenFunction = is64bitOpenFunction; - - - - us.filestream = ZOPEN64(us.z_filefunc, - path, - ZLIB_FILEFUNC_MODE_READ | - ZLIB_FILEFUNC_MODE_EXISTING); - if (us.filestream==NULL) - return NULL; - - central_pos = unz64local_SearchCentralDir64(&us.z_filefunc,us.filestream); - if (central_pos) - { - uLong uS; - ZPOS64_T uL64; - - us.isZip64 = 1; - - if (ZSEEK64(us.z_filefunc, us.filestream, - central_pos,ZLIB_FILEFUNC_SEEK_SET)!=0) - err=UNZ_ERRNO; - - /* the signature, already checked */ - if (unz64local_getLong(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK) - err=UNZ_ERRNO; - - /* size of zip64 end of central directory record */ - if (unz64local_getLong64(&us.z_filefunc, us.filestream,&uL64)!=UNZ_OK) - err=UNZ_ERRNO; - - /* version made by */ - if (unz64local_getShort(&us.z_filefunc, us.filestream,&uS)!=UNZ_OK) - err=UNZ_ERRNO; - - /* version needed to extract */ - if (unz64local_getShort(&us.z_filefunc, us.filestream,&uS)!=UNZ_OK) - err=UNZ_ERRNO; - - /* number of this disk */ - if (unz64local_getLong(&us.z_filefunc, us.filestream,&number_disk)!=UNZ_OK) - err=UNZ_ERRNO; - - /* number of the disk with the start of the central directory */ - if (unz64local_getLong(&us.z_filefunc, us.filestream,&number_disk_with_CD)!=UNZ_OK) - err=UNZ_ERRNO; - - /* total number of entries in the central directory on this disk */ - if (unz64local_getLong64(&us.z_filefunc, us.filestream,&us.gi.number_entry)!=UNZ_OK) - err=UNZ_ERRNO; - - /* total number of entries in the central directory */ - if (unz64local_getLong64(&us.z_filefunc, us.filestream,&number_entry_CD)!=UNZ_OK) - err=UNZ_ERRNO; - - if ((number_entry_CD!=us.gi.number_entry) || - (number_disk_with_CD!=0) || - (number_disk!=0)) - err=UNZ_BADZIPFILE; - - /* size of the central directory */ - if (unz64local_getLong64(&us.z_filefunc, us.filestream,&us.size_central_dir)!=UNZ_OK) - err=UNZ_ERRNO; - - /* offset of start of central directory with respect to the - starting disk number */ - if (unz64local_getLong64(&us.z_filefunc, us.filestream,&us.offset_central_dir)!=UNZ_OK) - err=UNZ_ERRNO; - - us.gi.size_comment = 0; - } - else - { - central_pos = unz64local_SearchCentralDir(&us.z_filefunc,us.filestream); - if (central_pos==0) - err=UNZ_ERRNO; - - us.isZip64 = 0; - - if (ZSEEK64(us.z_filefunc, us.filestream, - central_pos,ZLIB_FILEFUNC_SEEK_SET)!=0) - err=UNZ_ERRNO; - - /* the signature, already checked */ - if (unz64local_getLong(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK) - err=UNZ_ERRNO; - - /* number of this disk */ - if (unz64local_getShort(&us.z_filefunc, us.filestream,&number_disk)!=UNZ_OK) - err=UNZ_ERRNO; - - /* number of the disk with the start of the central directory */ - if (unz64local_getShort(&us.z_filefunc, us.filestream,&number_disk_with_CD)!=UNZ_OK) - err=UNZ_ERRNO; - - /* total number of entries in the central dir on this disk */ - if (unz64local_getShort(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK) - err=UNZ_ERRNO; - us.gi.number_entry = uL; - - /* total number of entries in the central dir */ - if (unz64local_getShort(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK) - err=UNZ_ERRNO; - number_entry_CD = uL; - - if ((number_entry_CD!=us.gi.number_entry) || - (number_disk_with_CD!=0) || - (number_disk!=0)) - err=UNZ_BADZIPFILE; - - /* size of the central directory */ - if (unz64local_getLong(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK) - err=UNZ_ERRNO; - us.size_central_dir = uL; - - /* offset of start of central directory with respect to the - starting disk number */ - if (unz64local_getLong(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK) - err=UNZ_ERRNO; - us.offset_central_dir = uL; - - /* zipfile comment length */ - if (unz64local_getShort(&us.z_filefunc, us.filestream,&us.gi.size_comment)!=UNZ_OK) - err=UNZ_ERRNO; - } - - if ((central_pos<us.offset_central_dir+us.size_central_dir) && - (err==UNZ_OK)) - err=UNZ_BADZIPFILE; - - if (err!=UNZ_OK) - { - ZCLOSE64(us.z_filefunc, us.filestream); - return NULL; - } - - us.byte_before_the_zipfile = central_pos - - (us.offset_central_dir+us.size_central_dir); - us.central_pos = central_pos; - us.pfile_in_zip_read = NULL; - us.encrypted = 0; - - - s=(unz64_s*)ALLOC(sizeof(unz64_s)); - if( s != NULL) - { - *s=us; - unzGoToFirstFile((unzFile)s); - } - return (unzFile)s; -} - - -extern unzFile ZEXPORT unzOpen2 (const char *path, - zlib_filefunc_def* pzlib_filefunc32_def) -{ - if (pzlib_filefunc32_def != NULL) - { - zlib_filefunc64_32_def zlib_filefunc64_32_def_fill; - fill_zlib_filefunc64_32_def_from_filefunc32(&zlib_filefunc64_32_def_fill,pzlib_filefunc32_def); - return unzOpenInternal(path, &zlib_filefunc64_32_def_fill, 0); - } - else - return unzOpenInternal(path, NULL, 0); -} - -extern unzFile ZEXPORT unzOpen2_64 (const void *path, - zlib_filefunc64_def* pzlib_filefunc_def) -{ - if (pzlib_filefunc_def != NULL) - { - zlib_filefunc64_32_def zlib_filefunc64_32_def_fill; - zlib_filefunc64_32_def_fill.zfile_func64 = *pzlib_filefunc_def; - zlib_filefunc64_32_def_fill.ztell32_file = NULL; - zlib_filefunc64_32_def_fill.zseek32_file = NULL; - return unzOpenInternal(path, &zlib_filefunc64_32_def_fill, 1); - } - else - return unzOpenInternal(path, NULL, 1); -} - -extern unzFile ZEXPORT unzOpen (const char *path) -{ - return unzOpenInternal(path, NULL, 0); -} - -extern unzFile ZEXPORT unzOpen64 (const void *path) -{ - return unzOpenInternal(path, NULL, 1); -} - -/* - Close a ZipFile opened with unzOpen. - If there is files inside the .Zip opened with unzOpenCurrentFile (see later), - these files MUST be closed with unzCloseCurrentFile before call unzClose. - return UNZ_OK if there is no problem. */ -extern int ZEXPORT unzClose (unzFile file) -{ - unz64_s* s; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - - if (s->pfile_in_zip_read!=NULL) - unzCloseCurrentFile(file); - - ZCLOSE64(s->z_filefunc, s->filestream); - TRYFREE(s); - return UNZ_OK; -} - - -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. */ -extern int ZEXPORT unzGetGlobalInfo64 (unzFile file, unz_global_info64* pglobal_info) -{ - unz64_s* s; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - *pglobal_info=s->gi; - return UNZ_OK; -} - -extern int ZEXPORT unzGetGlobalInfo (unzFile file, unz_global_info* pglobal_info32) -{ - unz64_s* s; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - /* to do : check if number_entry is not truncated */ - pglobal_info32->number_entry = (uLong)s->gi.number_entry; - pglobal_info32->size_comment = s->gi.size_comment; - return UNZ_OK; -} -/* - Translate date/time from Dos format to tm_unz (readable more easilty) -*/ -local void unz64local_DosDateToTmuDate (ZPOS64_T ulDosDate, tm_unz* ptm) -{ - ZPOS64_T uDate; - uDate = (ZPOS64_T)(ulDosDate>>16); - ptm->tm_mday = (uInt)(uDate&0x1f) ; - ptm->tm_mon = (uInt)((((uDate)&0x1E0)/0x20)-1) ; - ptm->tm_year = (uInt)(((uDate&0x0FE00)/0x0200)+1980) ; - - ptm->tm_hour = (uInt) ((ulDosDate &0xF800)/0x800); - ptm->tm_min = (uInt) ((ulDosDate&0x7E0)/0x20) ; - ptm->tm_sec = (uInt) (2*(ulDosDate&0x1f)) ; -} - -/* - Get Info about the current file in the zipfile, with internal only info -*/ -local int unz64local_GetCurrentFileInfoInternal OF((unzFile file, - unz_file_info64 *pfile_info, - unz_file_info64_internal - *pfile_info_internal, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize)); - -local int unz64local_GetCurrentFileInfoInternal (unzFile file, - unz_file_info64 *pfile_info, - unz_file_info64_internal - *pfile_info_internal, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize) -{ - unz64_s* s; - unz_file_info64 file_info; - unz_file_info64_internal file_info_internal; - int err=UNZ_OK; - uLong uMagic; - long lSeek=0; - uLong uL; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - if (ZSEEK64(s->z_filefunc, s->filestream, - s->pos_in_central_dir+s->byte_before_the_zipfile, - ZLIB_FILEFUNC_SEEK_SET)!=0) - err=UNZ_ERRNO; - - - /* we check the magic */ - if (err==UNZ_OK) - { - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uMagic) != UNZ_OK) - err=UNZ_ERRNO; - else if (uMagic!=0x02014b50) - err=UNZ_BADZIPFILE; - } - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.version) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.version_needed) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.flag) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.compression_method) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&file_info.dosDate) != UNZ_OK) - err=UNZ_ERRNO; - - unz64local_DosDateToTmuDate(file_info.dosDate,&file_info.tmu_date); - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&file_info.crc) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uL) != UNZ_OK) - err=UNZ_ERRNO; - file_info.compressed_size = uL; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uL) != UNZ_OK) - err=UNZ_ERRNO; - file_info.uncompressed_size = uL; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.size_filename) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.size_file_extra) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.size_file_comment) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.disk_num_start) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.internal_fa) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&file_info.external_fa) != UNZ_OK) - err=UNZ_ERRNO; - - // relative offset of local header - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uL) != UNZ_OK) - err=UNZ_ERRNO; - file_info_internal.offset_curfile = uL; - - lSeek+=file_info.size_filename; - if ((err==UNZ_OK) && (szFileName!=NULL)) - { - uLong uSizeRead ; - if (file_info.size_filename<fileNameBufferSize) - { - *(szFileName+file_info.size_filename)='\0'; - uSizeRead = file_info.size_filename; - } - else - uSizeRead = fileNameBufferSize; - - if ((file_info.size_filename>0) && (fileNameBufferSize>0)) - if (ZREAD64(s->z_filefunc, s->filestream,szFileName,uSizeRead)!=uSizeRead) - err=UNZ_ERRNO; - lSeek -= uSizeRead; - } - - // Read extrafield - if ((err==UNZ_OK) && (extraField!=NULL)) - { - ZPOS64_T uSizeRead ; - if (file_info.size_file_extra<extraFieldBufferSize) - uSizeRead = file_info.size_file_extra; - else - uSizeRead = extraFieldBufferSize; - - if (lSeek!=0) - { - if (ZSEEK64(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0) - lSeek=0; - else - err=UNZ_ERRNO; - } - - if ((file_info.size_file_extra>0) && (extraFieldBufferSize>0)) - if (ZREAD64(s->z_filefunc, s->filestream,extraField,(uLong)uSizeRead)!=uSizeRead) - err=UNZ_ERRNO; - - lSeek += file_info.size_file_extra - (uLong)uSizeRead; - } - else - lSeek += file_info.size_file_extra; - - - if ((err==UNZ_OK) && (file_info.size_file_extra != 0)) - { - uLong acc = 0; - - // since lSeek now points to after the extra field we need to move back - lSeek -= file_info.size_file_extra; - - if (lSeek!=0) - { - if (ZSEEK64(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0) - lSeek=0; - else - err=UNZ_ERRNO; - } - - while(acc < file_info.size_file_extra) - { - uLong headerId; - uLong dataSize; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&headerId) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&dataSize) != UNZ_OK) - err=UNZ_ERRNO; - - /* ZIP64 extra fields */ - if (headerId == 0x0001) - { - uLong uL; - - if(file_info.uncompressed_size == MAXU32) - { - if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info.uncompressed_size) != UNZ_OK) - err=UNZ_ERRNO; - } - - if(file_info.compressed_size == MAXU32) - { - if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info.compressed_size) != UNZ_OK) - err=UNZ_ERRNO; - } - - if(file_info_internal.offset_curfile == MAXU32) - { - /* Relative Header offset */ - if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info_internal.offset_curfile) != UNZ_OK) - err=UNZ_ERRNO; - } - - if(file_info.disk_num_start == MAXU32) - { - /* Disk Start Number */ - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uL) != UNZ_OK) - err=UNZ_ERRNO; - } - - } - else - { - if (ZSEEK64(s->z_filefunc, s->filestream,dataSize,ZLIB_FILEFUNC_SEEK_CUR)!=0) - err=UNZ_ERRNO; - } - - acc += 2 + 2 + dataSize; - } - } - - if ((err==UNZ_OK) && (szComment!=NULL)) - { - uLong uSizeRead ; - if (file_info.size_file_comment<commentBufferSize) - { - *(szComment+file_info.size_file_comment)='\0'; - uSizeRead = file_info.size_file_comment; - } - else - uSizeRead = commentBufferSize; - - if (lSeek!=0) - { - if (ZSEEK64(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0) - lSeek=0; - else - err=UNZ_ERRNO; - } - - if ((file_info.size_file_comment>0) && (commentBufferSize>0)) - if (ZREAD64(s->z_filefunc, s->filestream,szComment,uSizeRead)!=uSizeRead) - err=UNZ_ERRNO; - lSeek+=file_info.size_file_comment - uSizeRead; - } - else - lSeek+=file_info.size_file_comment; - - - if ((err==UNZ_OK) && (pfile_info!=NULL)) - *pfile_info=file_info; - - if ((err==UNZ_OK) && (pfile_info_internal!=NULL)) - *pfile_info_internal=file_info_internal; - - return err; -} - - - -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. -*/ -extern int ZEXPORT unzGetCurrentFileInfo64 (unzFile file, - unz_file_info64 * pfile_info, - char * szFileName, uLong fileNameBufferSize, - void *extraField, uLong extraFieldBufferSize, - char* szComment, uLong commentBufferSize) -{ - return unz64local_GetCurrentFileInfoInternal(file,pfile_info,NULL, - szFileName,fileNameBufferSize, - extraField,extraFieldBufferSize, - szComment,commentBufferSize); -} - -extern int ZEXPORT unzGetCurrentFileInfo (unzFile file, - unz_file_info * pfile_info, - char * szFileName, uLong fileNameBufferSize, - void *extraField, uLong extraFieldBufferSize, - char* szComment, uLong commentBufferSize) -{ - int err; - unz_file_info64 file_info64; - err = unz64local_GetCurrentFileInfoInternal(file,&file_info64,NULL, - szFileName,fileNameBufferSize, - extraField,extraFieldBufferSize, - szComment,commentBufferSize); - if ((err==UNZ_OK) && (pfile_info != NULL)) - { - pfile_info->version = file_info64.version; - pfile_info->version_needed = file_info64.version_needed; - pfile_info->flag = file_info64.flag; - pfile_info->compression_method = file_info64.compression_method; - pfile_info->dosDate = file_info64.dosDate; - pfile_info->crc = file_info64.crc; - - pfile_info->size_filename = file_info64.size_filename; - pfile_info->size_file_extra = file_info64.size_file_extra; - pfile_info->size_file_comment = file_info64.size_file_comment; - - pfile_info->disk_num_start = file_info64.disk_num_start; - pfile_info->internal_fa = file_info64.internal_fa; - pfile_info->external_fa = file_info64.external_fa; - - pfile_info->tmu_date = file_info64.tmu_date, - - - pfile_info->compressed_size = (uLong)file_info64.compressed_size; - pfile_info->uncompressed_size = (uLong)file_info64.uncompressed_size; - - } - return err; -} -/* - Set the current file of the zipfile to the first file. - return UNZ_OK if there is no problem -*/ -extern int ZEXPORT unzGoToFirstFile (unzFile file) -{ - int err=UNZ_OK; - unz64_s* s; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - s->pos_in_central_dir=s->offset_central_dir; - s->num_file=0; - err=unz64local_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - s->current_file_ok = (err == UNZ_OK); - return err; -} - -/* - Set the current file of the zipfile to the next file. - return UNZ_OK if there is no problem - return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. -*/ -extern int ZEXPORT unzGoToNextFile (unzFile file) -{ - unz64_s* s; - int err; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - if (s->gi.number_entry != 0xffff) /* 2^16 files overflow hack */ - if (s->num_file+1==s->gi.number_entry) - return UNZ_END_OF_LIST_OF_FILE; - - s->pos_in_central_dir += SIZECENTRALDIRITEM + s->cur_file_info.size_filename + - s->cur_file_info.size_file_extra + s->cur_file_info.size_file_comment ; - s->num_file++; - err = unz64local_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - s->current_file_ok = (err == UNZ_OK); - return err; -} - - -/* - Try locate the file szFileName in the zipfile. - For the iCaseSensitivity signification, see unzStringFileNameCompare - - return value : - UNZ_OK if the file is found. It becomes the current file. - UNZ_END_OF_LIST_OF_FILE if the file is not found -*/ -extern int ZEXPORT unzLocateFile (unzFile file, const char *szFileName, int iCaseSensitivity) -{ - unz64_s* s; - int err; - - /* We remember the 'current' position in the file so that we can jump - * back there if we fail. - */ - unz_file_info64 cur_file_infoSaved; - unz_file_info64_internal cur_file_info_internalSaved; - ZPOS64_T num_fileSaved; - ZPOS64_T pos_in_central_dirSaved; - - - if (file==NULL) - return UNZ_PARAMERROR; - - if (strlen(szFileName)>=UNZ_MAXFILENAMEINZIP) - return UNZ_PARAMERROR; - - s=(unz64_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - - /* Save the current state */ - num_fileSaved = s->num_file; - pos_in_central_dirSaved = s->pos_in_central_dir; - cur_file_infoSaved = s->cur_file_info; - cur_file_info_internalSaved = s->cur_file_info_internal; - - err = unzGoToFirstFile(file); - - while (err == UNZ_OK) - { - char szCurrentFileName[UNZ_MAXFILENAMEINZIP+1]; - err = unzGetCurrentFileInfo64(file,NULL, - szCurrentFileName,sizeof(szCurrentFileName)-1, - NULL,0,NULL,0); - if (err == UNZ_OK) - { - if (unzStringFileNameCompare(szCurrentFileName, - szFileName,iCaseSensitivity)==0) - return UNZ_OK; - err = unzGoToNextFile(file); - } - } - - /* We failed, so restore the state of the 'current file' to where we - * were. - */ - s->num_file = num_fileSaved ; - s->pos_in_central_dir = pos_in_central_dirSaved ; - s->cur_file_info = cur_file_infoSaved; - s->cur_file_info_internal = cur_file_info_internalSaved; - return err; -} - - -/* -/////////////////////////////////////////// -// Contributed by Ryan Haksi (mailto://cryogen@infoserve.net) -// I need random access -// -// Further optimization could be realized by adding an ability -// to cache the directory in memory. The goal being a single -// comprehensive file read to put the file I need in a memory. -*/ - -/* -typedef struct unz_file_pos_s -{ - ZPOS64_T pos_in_zip_directory; // offset in file - ZPOS64_T num_of_file; // # of file -} unz_file_pos; -*/ - -extern int ZEXPORT unzGetFilePos64(unzFile file, unz64_file_pos* file_pos) -{ - unz64_s* s; - - if (file==NULL || file_pos==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - - file_pos->pos_in_zip_directory = s->pos_in_central_dir; - file_pos->num_of_file = s->num_file; - - return UNZ_OK; -} - -extern int ZEXPORT unzGetFilePos( - unzFile file, - unz_file_pos* file_pos) -{ - unz64_file_pos file_pos64; - int err = unzGetFilePos64(file,&file_pos64); - if (err==UNZ_OK) - { - file_pos->pos_in_zip_directory = (uLong)file_pos64.pos_in_zip_directory; - file_pos->num_of_file = (uLong)file_pos64.num_of_file; - } - return err; -} - -extern int ZEXPORT unzGoToFilePos64(unzFile file, const unz64_file_pos* file_pos) -{ - unz64_s* s; - int err; - - if (file==NULL || file_pos==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - - /* jump to the right spot */ - s->pos_in_central_dir = file_pos->pos_in_zip_directory; - s->num_file = file_pos->num_of_file; - - /* set the current file */ - err = unz64local_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - /* return results */ - s->current_file_ok = (err == UNZ_OK); - return err; -} - -extern int ZEXPORT unzGoToFilePos( - unzFile file, - unz_file_pos* file_pos) -{ - unz64_file_pos file_pos64; - if (file_pos == NULL) - return UNZ_PARAMERROR; - - file_pos64.pos_in_zip_directory = file_pos->pos_in_zip_directory; - file_pos64.num_of_file = file_pos->num_of_file; - return unzGoToFilePos64(file,&file_pos64); -} - -/* -// Unzip Helper Functions - should be here? -/////////////////////////////////////////// -*/ - -/* - Read the local header of the current zipfile - Check the coherency of the local header and info in the end of central - directory about this file - store in *piSizeVar the size of extra info in local header - (filename and size of extra field data) -*/ -local int unz64local_CheckCurrentFileCoherencyHeader (unz64_s* s, uInt* piSizeVar, - ZPOS64_T * poffset_local_extrafield, - uInt * psize_local_extrafield) -{ - uLong uMagic,uData,uFlags; - uLong size_filename; - uLong size_extra_field; - int err=UNZ_OK; - - *piSizeVar = 0; - *poffset_local_extrafield = 0; - *psize_local_extrafield = 0; - - if (ZSEEK64(s->z_filefunc, s->filestream,s->cur_file_info_internal.offset_curfile + - s->byte_before_the_zipfile,ZLIB_FILEFUNC_SEEK_SET)!=0) - return UNZ_ERRNO; - - - if (err==UNZ_OK) - { - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uMagic) != UNZ_OK) - err=UNZ_ERRNO; - else if (uMagic!=0x04034b50) - err=UNZ_BADZIPFILE; - } - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) - err=UNZ_ERRNO; -/* - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.wVersion)) - err=UNZ_BADZIPFILE; -*/ - if (unz64local_getShort(&s->z_filefunc, s->filestream,&uFlags) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compression_method)) - err=UNZ_BADZIPFILE; - - if ((err==UNZ_OK) && (s->cur_file_info.compression_method!=0) && -/* #ifdef HAVE_BZIP2 */ - (s->cur_file_info.compression_method!=Z_BZIP2ED) && -/* #endif */ - (s->cur_file_info.compression_method!=Z_DEFLATED)) - err=UNZ_BADZIPFILE; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* date/time */ - err=UNZ_ERRNO; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* crc */ - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.crc) && ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* size compr */ - err=UNZ_ERRNO; - else if (uData != 0xFFFFFFFF && (err==UNZ_OK) && (uData!=s->cur_file_info.compressed_size) && ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* size uncompr */ - err=UNZ_ERRNO; - else if (uData != 0xFFFFFFFF && (err==UNZ_OK) && (uData!=s->cur_file_info.uncompressed_size) && ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&size_filename) != UNZ_OK) - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (size_filename!=s->cur_file_info.size_filename)) - err=UNZ_BADZIPFILE; - - *piSizeVar += (uInt)size_filename; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&size_extra_field) != UNZ_OK) - err=UNZ_ERRNO; - *poffset_local_extrafield= s->cur_file_info_internal.offset_curfile + - SIZEZIPLOCALHEADER + size_filename; - *psize_local_extrafield = (uInt)size_extra_field; - - *piSizeVar += (uInt)size_extra_field; - - return err; -} - -/* - Open for reading data the current file in the zipfile. - If there is no error and the file is opened, the return value is UNZ_OK. -*/ -extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method, - int* level, int raw, const char* password) -{ - int err=UNZ_OK; - uInt iSizeVar; - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - ZPOS64_T offset_local_extrafield; /* offset of the local extra field */ - uInt size_local_extrafield; /* size of the local extra field */ -# ifndef NOUNCRYPT - char source[12]; -# else - if (password != NULL) - return UNZ_PARAMERROR; -# endif - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - if (!s->current_file_ok) - return UNZ_PARAMERROR; - - if (s->pfile_in_zip_read != NULL) - unzCloseCurrentFile(file); - - if (unz64local_CheckCurrentFileCoherencyHeader(s,&iSizeVar, &offset_local_extrafield,&size_local_extrafield)!=UNZ_OK) - return UNZ_BADZIPFILE; - - pfile_in_zip_read_info = (file_in_zip64_read_info_s*)ALLOC(sizeof(file_in_zip64_read_info_s)); - if (pfile_in_zip_read_info==NULL) - return UNZ_INTERNALERROR; - - pfile_in_zip_read_info->read_buffer=(char*)ALLOC(UNZ_BUFSIZE); - pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield; - pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield; - pfile_in_zip_read_info->pos_local_extrafield=0; - pfile_in_zip_read_info->raw=raw; - - if (pfile_in_zip_read_info->read_buffer==NULL) - { - TRYFREE(pfile_in_zip_read_info); - return UNZ_INTERNALERROR; - } - - pfile_in_zip_read_info->stream_initialised=0; - - if (method!=NULL) - *method = (int)s->cur_file_info.compression_method; - - if (level!=NULL) - { - *level = 6; - switch (s->cur_file_info.flag & 0x06) - { - case 6 : *level = 1; break; - case 4 : *level = 2; break; - case 2 : *level = 9; break; - } - } - - if ((s->cur_file_info.compression_method!=0) && -/* #ifdef HAVE_BZIP2 */ - (s->cur_file_info.compression_method!=Z_BZIP2ED) && -/* #endif */ - (s->cur_file_info.compression_method!=Z_DEFLATED)) - - err=UNZ_BADZIPFILE; - - pfile_in_zip_read_info->crc32_wait=s->cur_file_info.crc; - pfile_in_zip_read_info->crc32=0; - pfile_in_zip_read_info->total_out_64=0; - pfile_in_zip_read_info->compression_method = s->cur_file_info.compression_method; - pfile_in_zip_read_info->filestream=s->filestream; - pfile_in_zip_read_info->z_filefunc=s->z_filefunc; - pfile_in_zip_read_info->byte_before_the_zipfile=s->byte_before_the_zipfile; - - pfile_in_zip_read_info->stream.total_out = 0; - - if ((s->cur_file_info.compression_method==Z_BZIP2ED) && (!raw)) - { -#ifdef HAVE_BZIP2 - pfile_in_zip_read_info->bstream.bzalloc = (void *(*) (void *, int, int))0; - pfile_in_zip_read_info->bstream.bzfree = (free_func)0; - pfile_in_zip_read_info->bstream.opaque = (voidpf)0; - pfile_in_zip_read_info->bstream.state = (voidpf)0; - - pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; - pfile_in_zip_read_info->stream.zfree = (free_func)0; - pfile_in_zip_read_info->stream.opaque = (voidpf)0; - pfile_in_zip_read_info->stream.next_in = (voidpf)0; - pfile_in_zip_read_info->stream.avail_in = 0; - - err=BZ2_bzDecompressInit(&pfile_in_zip_read_info->bstream, 0, 0); - if (err == Z_OK) - pfile_in_zip_read_info->stream_initialised=Z_BZIP2ED; - else - { - TRYFREE(pfile_in_zip_read_info); - return err; - } -#else - pfile_in_zip_read_info->raw=1; -#endif - } - else if ((s->cur_file_info.compression_method==Z_DEFLATED) && (!raw)) - { - pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; - pfile_in_zip_read_info->stream.zfree = (free_func)0; - pfile_in_zip_read_info->stream.opaque = (voidpf)0; - pfile_in_zip_read_info->stream.next_in = 0; - pfile_in_zip_read_info->stream.avail_in = 0; - - err=inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS); - if (err == Z_OK) - pfile_in_zip_read_info->stream_initialised=Z_DEFLATED; - else - { - TRYFREE(pfile_in_zip_read_info); - return err; - } - /* windowBits is passed < 0 to tell that there is no zlib header. - * Note that in this case inflate *requires* an extra "dummy" byte - * after the compressed stream in order to complete decompression and - * return Z_STREAM_END. - * In unzip, i don't wait absolutely Z_STREAM_END because I known the - * size of both compressed and uncompressed data - */ - } - pfile_in_zip_read_info->rest_read_compressed = - s->cur_file_info.compressed_size ; - pfile_in_zip_read_info->rest_read_uncompressed = - s->cur_file_info.uncompressed_size ; - - - pfile_in_zip_read_info->pos_in_zipfile = - s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER + - iSizeVar; - - pfile_in_zip_read_info->stream.avail_in = (uInt)0; - - s->pfile_in_zip_read = pfile_in_zip_read_info; - s->encrypted = 0; - -# ifndef NOUNCRYPT - if (password != NULL) - { - int i; - s->pcrc_32_tab = get_crc_table(); - init_keys(password,s->keys,s->pcrc_32_tab); - if (ZSEEK64(s->z_filefunc, s->filestream, - s->pfile_in_zip_read->pos_in_zipfile + - s->pfile_in_zip_read->byte_before_the_zipfile, - SEEK_SET)!=0) - return UNZ_INTERNALERROR; - if(ZREAD64(s->z_filefunc, s->filestream,source, 12)<12) - return UNZ_INTERNALERROR; - - for (i = 0; i<12; i++) - zdecode(s->keys,s->pcrc_32_tab,source[i]); - - s->pfile_in_zip_read->pos_in_zipfile+=12; - s->encrypted=1; - } -# endif - - - return UNZ_OK; -} - -extern int ZEXPORT unzOpenCurrentFile (unzFile file) -{ - return unzOpenCurrentFile3(file, NULL, NULL, 0, NULL); -} - -extern int ZEXPORT unzOpenCurrentFilePassword (unzFile file, const char* password) -{ - return unzOpenCurrentFile3(file, NULL, NULL, 0, password); -} - -extern int ZEXPORT unzOpenCurrentFile2 (unzFile file, int* method, int* level, int raw) -{ - return unzOpenCurrentFile3(file, method, level, raw, NULL); -} - -/** Addition for GDAL : START */ - -extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64( unzFile file) -{ - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - s=(unz64_s*)file; - if (file==NULL) - return 0; //UNZ_PARAMERROR; - pfile_in_zip_read_info=s->pfile_in_zip_read; - if (pfile_in_zip_read_info==NULL) - return 0; //UNZ_PARAMERROR; - return pfile_in_zip_read_info->pos_in_zipfile + - pfile_in_zip_read_info->byte_before_the_zipfile; -} - -/** Addition for GDAL : END */ - -/* - Read bytes from the current file. - buf contain buffer where data must be copied - len the size of buf. - - return the number of byte copied if somes bytes are copied - return 0 if the end of file was reached - return <0 with error code if there is an error - (UNZ_ERRNO for IO error, or zLib error for uncompress error) -*/ -extern int ZEXPORT unzReadCurrentFile (unzFile file, voidp buf, unsigned len) -{ - int err=UNZ_OK; - uInt iRead = 0; - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - - if (pfile_in_zip_read_info->read_buffer == NULL) - return UNZ_END_OF_LIST_OF_FILE; - if (len==0) - return 0; - - pfile_in_zip_read_info->stream.next_out = (Bytef*)buf; - - pfile_in_zip_read_info->stream.avail_out = (uInt)len; - - if ((len>pfile_in_zip_read_info->rest_read_uncompressed) && - (!(pfile_in_zip_read_info->raw))) - pfile_in_zip_read_info->stream.avail_out = - (uInt)pfile_in_zip_read_info->rest_read_uncompressed; - - if ((len>pfile_in_zip_read_info->rest_read_compressed+ - pfile_in_zip_read_info->stream.avail_in) && - (pfile_in_zip_read_info->raw)) - pfile_in_zip_read_info->stream.avail_out = - (uInt)pfile_in_zip_read_info->rest_read_compressed+ - pfile_in_zip_read_info->stream.avail_in; - - while (pfile_in_zip_read_info->stream.avail_out>0) - { - if ((pfile_in_zip_read_info->stream.avail_in==0) && - (pfile_in_zip_read_info->rest_read_compressed>0)) - { - uInt uReadThis = UNZ_BUFSIZE; - if (pfile_in_zip_read_info->rest_read_compressed<uReadThis) - uReadThis = (uInt)pfile_in_zip_read_info->rest_read_compressed; - if (uReadThis == 0) - return UNZ_EOF; - if (ZSEEK64(pfile_in_zip_read_info->z_filefunc, - pfile_in_zip_read_info->filestream, - pfile_in_zip_read_info->pos_in_zipfile + - pfile_in_zip_read_info->byte_before_the_zipfile, - ZLIB_FILEFUNC_SEEK_SET)!=0) - return UNZ_ERRNO; - if (ZREAD64(pfile_in_zip_read_info->z_filefunc, - pfile_in_zip_read_info->filestream, - pfile_in_zip_read_info->read_buffer, - uReadThis)!=uReadThis) - return UNZ_ERRNO; - - -# ifndef NOUNCRYPT - if(s->encrypted) - { - uInt i; - for(i=0;i<uReadThis;i++) - pfile_in_zip_read_info->read_buffer[i] = - zdecode(s->keys,s->pcrc_32_tab, - pfile_in_zip_read_info->read_buffer[i]); - } -# endif - - - pfile_in_zip_read_info->pos_in_zipfile += uReadThis; - - pfile_in_zip_read_info->rest_read_compressed-=uReadThis; - - pfile_in_zip_read_info->stream.next_in = - (Bytef*)pfile_in_zip_read_info->read_buffer; - pfile_in_zip_read_info->stream.avail_in = (uInt)uReadThis; - } - - if ((pfile_in_zip_read_info->compression_method==0) || (pfile_in_zip_read_info->raw)) - { - uInt uDoCopy,i ; - - if ((pfile_in_zip_read_info->stream.avail_in == 0) && - (pfile_in_zip_read_info->rest_read_compressed == 0)) - return (iRead==0) ? UNZ_EOF : iRead; - - if (pfile_in_zip_read_info->stream.avail_out < - pfile_in_zip_read_info->stream.avail_in) - uDoCopy = pfile_in_zip_read_info->stream.avail_out ; - else - uDoCopy = pfile_in_zip_read_info->stream.avail_in ; - - for (i=0;i<uDoCopy;i++) - *(pfile_in_zip_read_info->stream.next_out+i) = - *(pfile_in_zip_read_info->stream.next_in+i); - - pfile_in_zip_read_info->total_out_64 = pfile_in_zip_read_info->total_out_64 + uDoCopy; - - pfile_in_zip_read_info->crc32 = crc32(pfile_in_zip_read_info->crc32, - pfile_in_zip_read_info->stream.next_out, - uDoCopy); - pfile_in_zip_read_info->rest_read_uncompressed-=uDoCopy; - pfile_in_zip_read_info->stream.avail_in -= uDoCopy; - pfile_in_zip_read_info->stream.avail_out -= uDoCopy; - pfile_in_zip_read_info->stream.next_out += uDoCopy; - pfile_in_zip_read_info->stream.next_in += uDoCopy; - pfile_in_zip_read_info->stream.total_out += uDoCopy; - iRead += uDoCopy; - } - else if (pfile_in_zip_read_info->compression_method==Z_BZIP2ED) - { -#ifdef HAVE_BZIP2 - uLong uTotalOutBefore,uTotalOutAfter; - const Bytef *bufBefore; - uLong uOutThis; - - pfile_in_zip_read_info->bstream.next_in = (char*)pfile_in_zip_read_info->stream.next_in; - pfile_in_zip_read_info->bstream.avail_in = pfile_in_zip_read_info->stream.avail_in; - pfile_in_zip_read_info->bstream.total_in_lo32 = pfile_in_zip_read_info->stream.total_in; - pfile_in_zip_read_info->bstream.total_in_hi32 = 0; - pfile_in_zip_read_info->bstream.next_out = (char*)pfile_in_zip_read_info->stream.next_out; - pfile_in_zip_read_info->bstream.avail_out = pfile_in_zip_read_info->stream.avail_out; - pfile_in_zip_read_info->bstream.total_out_lo32 = pfile_in_zip_read_info->stream.total_out; - pfile_in_zip_read_info->bstream.total_out_hi32 = 0; - - uTotalOutBefore = pfile_in_zip_read_info->bstream.total_out_lo32; - bufBefore = (const Bytef *)pfile_in_zip_read_info->bstream.next_out; - - err=BZ2_bzDecompress(&pfile_in_zip_read_info->bstream); - - uTotalOutAfter = pfile_in_zip_read_info->bstream.total_out_lo32; - uOutThis = uTotalOutAfter-uTotalOutBefore; - - pfile_in_zip_read_info->total_out_64 = pfile_in_zip_read_info->total_out_64 + uOutThis; - - pfile_in_zip_read_info->crc32 = crc32(pfile_in_zip_read_info->crc32,bufBefore, (uInt)(uOutThis)); - pfile_in_zip_read_info->rest_read_uncompressed -= uOutThis; - iRead += (uInt)(uTotalOutAfter - uTotalOutBefore); - - pfile_in_zip_read_info->stream.next_in = (Bytef*)pfile_in_zip_read_info->bstream.next_in; - pfile_in_zip_read_info->stream.avail_in = pfile_in_zip_read_info->bstream.avail_in; - pfile_in_zip_read_info->stream.total_in = pfile_in_zip_read_info->bstream.total_in_lo32; - pfile_in_zip_read_info->stream.next_out = (Bytef*)pfile_in_zip_read_info->bstream.next_out; - pfile_in_zip_read_info->stream.avail_out = pfile_in_zip_read_info->bstream.avail_out; - pfile_in_zip_read_info->stream.total_out = pfile_in_zip_read_info->bstream.total_out_lo32; - - if (err==BZ_STREAM_END) - return (iRead==0) ? UNZ_EOF : iRead; - if (err!=BZ_OK) - break; -#endif - } // end Z_BZIP2ED - else - { - ZPOS64_T uTotalOutBefore,uTotalOutAfter; - const Bytef *bufBefore; - ZPOS64_T uOutThis; - int flush=Z_SYNC_FLUSH; - - uTotalOutBefore = pfile_in_zip_read_info->stream.total_out; - bufBefore = pfile_in_zip_read_info->stream.next_out; - - /* - if ((pfile_in_zip_read_info->rest_read_uncompressed == - pfile_in_zip_read_info->stream.avail_out) && - (pfile_in_zip_read_info->rest_read_compressed == 0)) - flush = Z_FINISH; - */ - err=inflate(&pfile_in_zip_read_info->stream,flush); - - if ((err>=0) && (pfile_in_zip_read_info->stream.msg!=NULL)) - err = Z_DATA_ERROR; - - uTotalOutAfter = pfile_in_zip_read_info->stream.total_out; - uOutThis = uTotalOutAfter-uTotalOutBefore; - - pfile_in_zip_read_info->total_out_64 = pfile_in_zip_read_info->total_out_64 + uOutThis; - - pfile_in_zip_read_info->crc32 = - crc32(pfile_in_zip_read_info->crc32,bufBefore, - (uInt)(uOutThis)); - - pfile_in_zip_read_info->rest_read_uncompressed -= - uOutThis; - - iRead += (uInt)(uTotalOutAfter - uTotalOutBefore); - - if (err==Z_STREAM_END) - return (iRead==0) ? UNZ_EOF : iRead; - if (err!=Z_OK) - break; - } - } - - if (err==Z_OK) - return iRead; - return err; -} - - -/* - Give the current position in uncompressed data -*/ -extern z_off_t ZEXPORT unztell (unzFile file) -{ - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - return (z_off_t)pfile_in_zip_read_info->stream.total_out; -} - -extern ZPOS64_T ZEXPORT unztell64 (unzFile file) -{ - - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return (ZPOS64_T)-1; - s=(unz64_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return (ZPOS64_T)-1; - - return pfile_in_zip_read_info->total_out_64; -} - - -/* - return 1 if the end of file was reached, 0 elsewhere -*/ -extern int ZEXPORT unzeof (unzFile file) -{ - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - if (pfile_in_zip_read_info->rest_read_uncompressed == 0) - return 1; - else - return 0; -} - - - -/* -Read extra field from the current file (opened by unzOpenCurrentFile) -This is the local-header version of the extra field (sometimes, there is -more info in the local-header version than in the central-header) - - if buf==NULL, it return the size of the local extra field that can be read - - if buf!=NULL, len is the size of the buffer, the extra header is copied in - buf. - the return value is the number of bytes copied in buf, or (if <0) - the error code -*/ -extern int ZEXPORT unzGetLocalExtrafield (unzFile file, voidp buf, unsigned len) -{ - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - uInt read_now; - ZPOS64_T size_to_read; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - size_to_read = (pfile_in_zip_read_info->size_local_extrafield - - pfile_in_zip_read_info->pos_local_extrafield); - - if (buf==NULL) - return (int)size_to_read; - - if (len>size_to_read) - read_now = (uInt)size_to_read; - else - read_now = (uInt)len ; - - if (read_now==0) - return 0; - - if (ZSEEK64(pfile_in_zip_read_info->z_filefunc, - pfile_in_zip_read_info->filestream, - pfile_in_zip_read_info->offset_local_extrafield + - pfile_in_zip_read_info->pos_local_extrafield, - ZLIB_FILEFUNC_SEEK_SET)!=0) - return UNZ_ERRNO; - - if (ZREAD64(pfile_in_zip_read_info->z_filefunc, - pfile_in_zip_read_info->filestream, - buf,read_now)!=read_now) - return UNZ_ERRNO; - - return (int)read_now; -} - -/* - Close the file in zip opened with unzOpenCurrentFile - Return UNZ_CRCERROR if all the file was read but the CRC is not good -*/ -extern int ZEXPORT unzCloseCurrentFile (unzFile file) -{ - int err=UNZ_OK; - - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - - if ((pfile_in_zip_read_info->rest_read_uncompressed == 0) && - (!pfile_in_zip_read_info->raw)) - { - if (pfile_in_zip_read_info->crc32 != pfile_in_zip_read_info->crc32_wait) - err=UNZ_CRCERROR; - } - - - TRYFREE(pfile_in_zip_read_info->read_buffer); - pfile_in_zip_read_info->read_buffer = NULL; - if (pfile_in_zip_read_info->stream_initialised == Z_DEFLATED) - inflateEnd(&pfile_in_zip_read_info->stream); -#ifdef HAVE_BZIP2 - else if (pfile_in_zip_read_info->stream_initialised == Z_BZIP2ED) - BZ2_bzDecompressEnd(&pfile_in_zip_read_info->bstream); -#endif - - - pfile_in_zip_read_info->stream_initialised = 0; - TRYFREE(pfile_in_zip_read_info); - - s->pfile_in_zip_read=NULL; - - return err; -} - - -/* - Get the global comment string of the ZipFile, in the szComment buffer. - uSizeBuf is the size of the szComment buffer. - return the number of byte copied or an error code <0 -*/ -extern int ZEXPORT unzGetGlobalComment (unzFile file, char * szComment, uLong uSizeBuf) -{ - unz64_s* s; - uLong uReadThis ; - if (file==NULL) - return (int)UNZ_PARAMERROR; - s=(unz64_s*)file; - - uReadThis = uSizeBuf; - if (uReadThis>s->gi.size_comment) - uReadThis = s->gi.size_comment; - - if (ZSEEK64(s->z_filefunc,s->filestream,s->central_pos+22,ZLIB_FILEFUNC_SEEK_SET)!=0) - return UNZ_ERRNO; - - if (uReadThis>0) - { - *szComment='\0'; - if (ZREAD64(s->z_filefunc,s->filestream,szComment,uReadThis)!=uReadThis) - return UNZ_ERRNO; - } - - if ((szComment != NULL) && (uSizeBuf > s->gi.size_comment)) - *(szComment+s->gi.size_comment)='\0'; - return (int)uReadThis; -} - -/* Additions by RX '2004 */ -extern ZPOS64_T ZEXPORT unzGetOffset64(unzFile file) -{ - unz64_s* s; - - if (file==NULL) - return 0; //UNZ_PARAMERROR; - s=(unz64_s*)file; - if (!s->current_file_ok) - return 0; - if (s->gi.number_entry != 0 && s->gi.number_entry != 0xffff) - if (s->num_file==s->gi.number_entry) - return 0; - return s->pos_in_central_dir; -} - -extern uLong ZEXPORT unzGetOffset (unzFile file) -{ - ZPOS64_T offset64; - - if (file==NULL) - return 0; //UNZ_PARAMERROR; - offset64 = unzGetOffset64(file); - return (uLong)offset64; -} - -extern int ZEXPORT unzSetOffset64(unzFile file, ZPOS64_T pos) -{ - unz64_s* s; - int err; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - - s->pos_in_central_dir = pos; - s->num_file = s->gi.number_entry; /* hack */ - err = unz64local_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - s->current_file_ok = (err == UNZ_OK); - return err; -} - -extern int ZEXPORT unzSetOffset (unzFile file, uLong pos) -{ - return unzSetOffset64(file,pos); -} diff --git a/platform/win32/msvc/external/zlib/contrib/minizip/unzip.h b/platform/win32/msvc/external/zlib/contrib/minizip/unzip.h deleted file mode 100644 index 2104e391507..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/minizip/unzip.h +++ /dev/null @@ -1,437 +0,0 @@ -/* unzip.h -- IO for uncompress .zip files using zlib - Version 1.1, February 14h, 2010 - part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications of Unzip for Zip64 - Copyright (C) 2007-2008 Even Rouault - - Modifications for Zip64 support on both zip and unzip - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) - - For more info read MiniZip_info.txt - - --------------------------------------------------------------------------------- - - Condition of use and distribution are the same than zlib : - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - --------------------------------------------------------------------------------- - - Changes - - See header of unzip64.c - -*/ - -#ifndef _unz64_H -#define _unz64_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _ZLIB_H -#include "zlib.h" -#endif - -#ifndef _ZLIBIOAPI_H -#include "ioapi.h" -#endif - -#ifdef HAVE_BZIP2 -#include "bzlib.h" -#endif - -#define Z_BZIP2ED 12 - -#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP) -/* like the STRICT of WIN32, we define a pointer that cannot be converted - from (void*) without cast */ -typedef struct TagunzFile__ { int unused; } unzFile__; -typedef unzFile__ *unzFile; -#else -typedef voidp unzFile; -#endif - - -#define UNZ_OK (0) -#define UNZ_END_OF_LIST_OF_FILE (-100) -#define UNZ_ERRNO (Z_ERRNO) -#define UNZ_EOF (0) -#define UNZ_PARAMERROR (-102) -#define UNZ_BADZIPFILE (-103) -#define UNZ_INTERNALERROR (-104) -#define UNZ_CRCERROR (-105) - -/* tm_unz contain date/time info */ -typedef struct tm_unz_s -{ - uInt tm_sec; /* seconds after the minute - [0,59] */ - uInt tm_min; /* minutes after the hour - [0,59] */ - uInt tm_hour; /* hours since midnight - [0,23] */ - uInt tm_mday; /* day of the month - [1,31] */ - uInt tm_mon; /* months since January - [0,11] */ - uInt tm_year; /* years - [1980..2044] */ -} tm_unz; - -/* unz_global_info structure contain global data about the ZIPfile - These data comes from the end of central dir */ -typedef struct unz_global_info64_s -{ - ZPOS64_T number_entry; /* total number of entries in - the central dir on this disk */ - uLong size_comment; /* size of the global comment of the zipfile */ -} unz_global_info64; - -typedef struct unz_global_info_s -{ - uLong number_entry; /* total number of entries in - the central dir on this disk */ - uLong size_comment; /* size of the global comment of the zipfile */ -} unz_global_info; - -/* unz_file_info contain information about a file in the zipfile */ -typedef struct unz_file_info64_s -{ - uLong version; /* version made by 2 bytes */ - uLong version_needed; /* version needed to extract 2 bytes */ - uLong flag; /* general purpose bit flag 2 bytes */ - uLong compression_method; /* compression method 2 bytes */ - uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ - uLong crc; /* crc-32 4 bytes */ - ZPOS64_T compressed_size; /* compressed size 8 bytes */ - ZPOS64_T uncompressed_size; /* uncompressed size 8 bytes */ - uLong size_filename; /* filename length 2 bytes */ - uLong size_file_extra; /* extra field length 2 bytes */ - uLong size_file_comment; /* file comment length 2 bytes */ - - uLong disk_num_start; /* disk number start 2 bytes */ - uLong internal_fa; /* internal file attributes 2 bytes */ - uLong external_fa; /* external file attributes 4 bytes */ - - tm_unz tmu_date; -} unz_file_info64; - -typedef struct unz_file_info_s -{ - uLong version; /* version made by 2 bytes */ - uLong version_needed; /* version needed to extract 2 bytes */ - uLong flag; /* general purpose bit flag 2 bytes */ - uLong compression_method; /* compression method 2 bytes */ - uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ - uLong crc; /* crc-32 4 bytes */ - uLong compressed_size; /* compressed size 4 bytes */ - uLong uncompressed_size; /* uncompressed size 4 bytes */ - uLong size_filename; /* filename length 2 bytes */ - uLong size_file_extra; /* extra field length 2 bytes */ - uLong size_file_comment; /* file comment length 2 bytes */ - - uLong disk_num_start; /* disk number start 2 bytes */ - uLong internal_fa; /* internal file attributes 2 bytes */ - uLong external_fa; /* external file attributes 4 bytes */ - - tm_unz tmu_date; -} unz_file_info; - -extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1, - const char* fileName2, - int iCaseSensitivity)); -/* - Compare two filename (fileName1,fileName2). - If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) - If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi - or strcasecmp) - If iCaseSenisivity = 0, case sensitivity is defaut of your operating system - (like 1 on Unix, 2 on Windows) -*/ - - -extern unzFile ZEXPORT unzOpen OF((const char *path)); -extern unzFile ZEXPORT unzOpen64 OF((const void *path)); -/* - Open a Zip file. path contain the full pathname (by example, - on a Windows XP computer "c:\\zlib\\zlib113.zip" or on an Unix computer - "zlib/zlib113.zip". - If the zipfile cannot be opened (file don't exist or in not valid), the - return value is NULL. - Else, the return value is a unzFile Handle, usable with other function - of this unzip package. - the "64" function take a const void* pointer, because the path is just the - value passed to the open64_file_func callback. - Under Windows, if UNICODE is defined, using fill_fopen64_filefunc, the path - is a pointer to a wide unicode string (LPCTSTR is LPCWSTR), so const char* - does not describe the reality -*/ - - -extern unzFile ZEXPORT unzOpen2 OF((const char *path, - zlib_filefunc_def* pzlib_filefunc_def)); -/* - Open a Zip file, like unzOpen, but provide a set of file low level API - for read/write the zip file (see ioapi.h) -*/ - -extern unzFile ZEXPORT unzOpen2_64 OF((const void *path, - zlib_filefunc64_def* pzlib_filefunc_def)); -/* - Open a Zip file, like unz64Open, but provide a set of file low level API - for read/write the zip file (see ioapi.h) -*/ - -extern int ZEXPORT unzClose OF((unzFile file)); -/* - Close a ZipFile opened with unzOpen. - If there is files inside the .Zip opened with unzOpenCurrentFile (see later), - these files MUST be closed with unzCloseCurrentFile before call unzClose. - return UNZ_OK if there is no problem. */ - -extern int ZEXPORT unzGetGlobalInfo OF((unzFile file, - unz_global_info *pglobal_info)); - -extern int ZEXPORT unzGetGlobalInfo64 OF((unzFile file, - unz_global_info64 *pglobal_info)); -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. */ - - -extern int ZEXPORT unzGetGlobalComment OF((unzFile file, - char *szComment, - uLong uSizeBuf)); -/* - Get the global comment string of the ZipFile, in the szComment buffer. - uSizeBuf is the size of the szComment buffer. - return the number of byte copied or an error code <0 -*/ - - -/***************************************************************************/ -/* Unzip package allow you browse the directory of the zipfile */ - -extern int ZEXPORT unzGoToFirstFile OF((unzFile file)); -/* - Set the current file of the zipfile to the first file. - return UNZ_OK if there is no problem -*/ - -extern int ZEXPORT unzGoToNextFile OF((unzFile file)); -/* - Set the current file of the zipfile to the next file. - return UNZ_OK if there is no problem - return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. -*/ - -extern int ZEXPORT unzLocateFile OF((unzFile file, - const char *szFileName, - int iCaseSensitivity)); -/* - Try locate the file szFileName in the zipfile. - For the iCaseSensitivity signification, see unzStringFileNameCompare - - return value : - UNZ_OK if the file is found. It becomes the current file. - UNZ_END_OF_LIST_OF_FILE if the file is not found -*/ - - -/* ****************************************** */ -/* Ryan supplied functions */ -/* unz_file_info contain information about a file in the zipfile */ -typedef struct unz_file_pos_s -{ - uLong pos_in_zip_directory; /* offset in zip file directory */ - uLong num_of_file; /* # of file */ -} unz_file_pos; - -extern int ZEXPORT unzGetFilePos( - unzFile file, - unz_file_pos* file_pos); - -extern int ZEXPORT unzGoToFilePos( - unzFile file, - unz_file_pos* file_pos); - -typedef struct unz64_file_pos_s -{ - ZPOS64_T pos_in_zip_directory; /* offset in zip file directory */ - ZPOS64_T num_of_file; /* # of file */ -} unz64_file_pos; - -extern int ZEXPORT unzGetFilePos64( - unzFile file, - unz64_file_pos* file_pos); - -extern int ZEXPORT unzGoToFilePos64( - unzFile file, - const unz64_file_pos* file_pos); - -/* ****************************************** */ - -extern int ZEXPORT unzGetCurrentFileInfo64 OF((unzFile file, - unz_file_info64 *pfile_info, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize)); - -extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file, - unz_file_info *pfile_info, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize)); -/* - Get Info about the current file - if pfile_info!=NULL, the *pfile_info structure will contain somes info about - the current file - if szFileName!=NULL, the filemane string will be copied in szFileName - (fileNameBufferSize is the size of the buffer) - if extraField!=NULL, the extra field information will be copied in extraField - (extraFieldBufferSize is the size of the buffer). - This is the Central-header version of the extra field - if szComment!=NULL, the comment string of the file will be copied in szComment - (commentBufferSize is the size of the buffer) -*/ - - -/** Addition for GDAL : START */ - -extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64 OF((unzFile file)); - -/** Addition for GDAL : END */ - - -/***************************************************************************/ -/* for reading the content of the current zipfile, you can open it, read data - from it, and close it (you can close it before reading all the file) - */ - -extern int ZEXPORT unzOpenCurrentFile OF((unzFile file)); -/* - Open for reading data the current file in the zipfile. - If there is no error, the return value is UNZ_OK. -*/ - -extern int ZEXPORT unzOpenCurrentFilePassword OF((unzFile file, - const char* password)); -/* - Open for reading data the current file in the zipfile. - password is a crypting password - If there is no error, the return value is UNZ_OK. -*/ - -extern int ZEXPORT unzOpenCurrentFile2 OF((unzFile file, - int* method, - int* level, - int raw)); -/* - Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) - if raw==1 - *method will receive method of compression, *level will receive level of - compression - note : you can set level parameter as NULL (if you did not want known level, - but you CANNOT set method parameter as NULL -*/ - -extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file, - int* method, - int* level, - int raw, - const char* password)); -/* - Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) - if raw==1 - *method will receive method of compression, *level will receive level of - compression - note : you can set level parameter as NULL (if you did not want known level, - but you CANNOT set method parameter as NULL -*/ - - -extern int ZEXPORT unzCloseCurrentFile OF((unzFile file)); -/* - Close the file in zip opened with unzOpenCurrentFile - Return UNZ_CRCERROR if all the file was read but the CRC is not good -*/ - -extern int ZEXPORT unzReadCurrentFile OF((unzFile file, - voidp buf, - unsigned len)); -/* - Read bytes from the current file (opened by unzOpenCurrentFile) - buf contain buffer where data must be copied - len the size of buf. - - return the number of byte copied if somes bytes are copied - return 0 if the end of file was reached - return <0 with error code if there is an error - (UNZ_ERRNO for IO error, or zLib error for uncompress error) -*/ - -extern z_off_t ZEXPORT unztell OF((unzFile file)); - -extern ZPOS64_T ZEXPORT unztell64 OF((unzFile file)); -/* - Give the current position in uncompressed data -*/ - -extern int ZEXPORT unzeof OF((unzFile file)); -/* - return 1 if the end of file was reached, 0 elsewhere -*/ - -extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file, - voidp buf, - unsigned len)); -/* - Read extra field from the current file (opened by unzOpenCurrentFile) - This is the local-header version of the extra field (sometimes, there is - more info in the local-header version than in the central-header) - - if buf==NULL, it return the size of the local extra field - - if buf!=NULL, len is the size of the buffer, the extra header is copied in - buf. - the return value is the number of bytes copied in buf, or (if <0) - the error code -*/ - -/***************************************************************************/ - -/* Get the current file offset */ -extern ZPOS64_T ZEXPORT unzGetOffset64 (unzFile file); -extern uLong ZEXPORT unzGetOffset (unzFile file); - -/* Set the current file offset */ -extern int ZEXPORT unzSetOffset64 (unzFile file, ZPOS64_T pos); -extern int ZEXPORT unzSetOffset (unzFile file, uLong pos); - - - -#ifdef __cplusplus -} -#endif - -#endif /* _unz64_H */ diff --git a/platform/win32/msvc/external/zlib/contrib/minizip/zip.c b/platform/win32/msvc/external/zlib/contrib/minizip/zip.c deleted file mode 100644 index ea54853e858..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/minizip/zip.c +++ /dev/null @@ -1,2007 +0,0 @@ -/* zip.c -- IO on .zip files using zlib - Version 1.1, February 14h, 2010 - part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications for Zip64 support - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) - - For more info read MiniZip_info.txt - - Changes - Oct-2009 - Mathias Svensson - Remove old C style function prototypes - Oct-2009 - Mathias Svensson - Added Zip64 Support when creating new file archives - Oct-2009 - Mathias Svensson - Did some code cleanup and refactoring to get better overview of some functions. - Oct-2009 - Mathias Svensson - Added zipRemoveExtraInfoBlock to strip extra field data from its ZIP64 data - It is used when recreting zip archive with RAW when deleting items from a zip. - ZIP64 data is automaticly added to items that needs it, and existing ZIP64 data need to be removed. - Oct-2009 - Mathias Svensson - Added support for BZIP2 as compression mode (bzip2 lib is required) - Jan-2010 - back to unzip and minizip 1.0 name scheme, with compatibility layer - -*/ - - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <time.h> -#include "zlib.h" -#include "zip.h" - -#ifdef STDC -# include <stddef.h> -# include <string.h> -# include <stdlib.h> -#endif -#ifdef NO_ERRNO_H - extern int errno; -#else -# include <errno.h> -#endif - - -#ifndef local -# define local static -#endif -/* compile with -Dlocal if your debugger can't find static symbols */ - -#ifndef VERSIONMADEBY -# define VERSIONMADEBY (0x0) /* platform depedent */ -#endif - -#ifndef Z_BUFSIZE -#define Z_BUFSIZE (64*1024) //(16384) -#endif - -#ifndef Z_MAXFILENAMEINZIP -#define Z_MAXFILENAMEINZIP (256) -#endif - -#ifndef ALLOC -# define ALLOC(size) (malloc(size)) -#endif -#ifndef TRYFREE -# define TRYFREE(p) {if (p) free(p);} -#endif - -/* -#define SIZECENTRALDIRITEM (0x2e) -#define SIZEZIPLOCALHEADER (0x1e) -*/ - -/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */ - - -// NOT sure that this work on ALL platform -#define MAKEULONG64(a, b) ((ZPOS64_T)(((unsigned long)(a)) | ((ZPOS64_T)((unsigned long)(b))) << 32)) - -#ifndef SEEK_CUR -#define SEEK_CUR 1 -#endif - -#ifndef SEEK_END -#define SEEK_END 2 -#endif - -#ifndef SEEK_SET -#define SEEK_SET 0 -#endif - -#ifndef DEF_MEM_LEVEL -#if MAX_MEM_LEVEL >= 8 -# define DEF_MEM_LEVEL 8 -#else -# define DEF_MEM_LEVEL MAX_MEM_LEVEL -#endif -#endif -const char zip_copyright[] =" zip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll"; - - -#define SIZEDATA_INDATABLOCK (4096-(4*4)) - -#define LOCALHEADERMAGIC (0x04034b50) -#define CENTRALHEADERMAGIC (0x02014b50) -#define ENDHEADERMAGIC (0x06054b50) -#define ZIP64ENDHEADERMAGIC (0x6064b50) -#define ZIP64ENDLOCHEADERMAGIC (0x7064b50) - -#define FLAG_LOCALHEADER_OFFSET (0x06) -#define CRC_LOCALHEADER_OFFSET (0x0e) - -#define SIZECENTRALHEADER (0x2e) /* 46 */ - -typedef struct linkedlist_datablock_internal_s -{ - struct linkedlist_datablock_internal_s* next_datablock; - uLong avail_in_this_block; - uLong filled_in_this_block; - uLong unused; /* for future use and alignement */ - unsigned char data[SIZEDATA_INDATABLOCK]; -} linkedlist_datablock_internal; - -typedef struct linkedlist_data_s -{ - linkedlist_datablock_internal* first_block; - linkedlist_datablock_internal* last_block; -} linkedlist_data; - - -typedef struct -{ - z_stream stream; /* zLib stream structure for inflate */ -#ifdef HAVE_BZIP2 - bz_stream bstream; /* bzLib stream structure for bziped */ -#endif - - int stream_initialised; /* 1 is stream is initialised */ - uInt pos_in_buffered_data; /* last written byte in buffered_data */ - - ZPOS64_T pos_local_header; /* offset of the local header of the file - currenty writing */ - char* central_header; /* central header data for the current file */ - uLong size_centralExtra; - uLong size_centralheader; /* size of the central header for cur file */ - uLong size_centralExtraFree; /* Extra bytes allocated to the centralheader but that are not used */ - uLong flag; /* flag of the file currently writing */ - - int method; /* compression method of file currenty wr.*/ - int raw; /* 1 for directly writing raw data */ - Byte buffered_data[Z_BUFSIZE];/* buffer contain compressed data to be writ*/ - uLong dosDate; - uLong crc32; - int encrypt; - int zip64; /* Add ZIP64 extened information in the extra field */ - ZPOS64_T pos_zip64extrainfo; - ZPOS64_T totalCompressedData; - ZPOS64_T totalUncompressedData; -#ifndef NOCRYPT - unsigned long keys[3]; /* keys defining the pseudo-random sequence */ - const z_crc_t* pcrc_32_tab; - int crypt_header_size; -#endif -} curfile64_info; - -typedef struct -{ - zlib_filefunc64_32_def z_filefunc; - voidpf filestream; /* io structore of the zipfile */ - linkedlist_data central_dir;/* datablock with central dir in construction*/ - int in_opened_file_inzip; /* 1 if a file in the zip is currently writ.*/ - curfile64_info ci; /* info on the file curretly writing */ - - ZPOS64_T begin_pos; /* position of the beginning of the zipfile */ - ZPOS64_T add_position_when_writting_offset; - ZPOS64_T number_entry; - -#ifndef NO_ADDFILEINEXISTINGZIP - char *globalcomment; -#endif - -} zip64_internal; - - -#ifndef NOCRYPT -#define INCLUDECRYPTINGCODE_IFCRYPTALLOWED -#include "crypt.h" -#endif - -local linkedlist_datablock_internal* allocate_new_datablock() -{ - linkedlist_datablock_internal* ldi; - ldi = (linkedlist_datablock_internal*) - ALLOC(sizeof(linkedlist_datablock_internal)); - if (ldi!=NULL) - { - ldi->next_datablock = NULL ; - ldi->filled_in_this_block = 0 ; - ldi->avail_in_this_block = SIZEDATA_INDATABLOCK ; - } - return ldi; -} - -local void free_datablock(linkedlist_datablock_internal* ldi) -{ - while (ldi!=NULL) - { - linkedlist_datablock_internal* ldinext = ldi->next_datablock; - TRYFREE(ldi); - ldi = ldinext; - } -} - -local void init_linkedlist(linkedlist_data* ll) -{ - ll->first_block = ll->last_block = NULL; -} - -local void free_linkedlist(linkedlist_data* ll) -{ - free_datablock(ll->first_block); - ll->first_block = ll->last_block = NULL; -} - - -local int add_data_in_datablock(linkedlist_data* ll, const void* buf, uLong len) -{ - linkedlist_datablock_internal* ldi; - const unsigned char* from_copy; - - if (ll==NULL) - return ZIP_INTERNALERROR; - - if (ll->last_block == NULL) - { - ll->first_block = ll->last_block = allocate_new_datablock(); - if (ll->first_block == NULL) - return ZIP_INTERNALERROR; - } - - ldi = ll->last_block; - from_copy = (unsigned char*)buf; - - while (len>0) - { - uInt copy_this; - uInt i; - unsigned char* to_copy; - - if (ldi->avail_in_this_block==0) - { - ldi->next_datablock = allocate_new_datablock(); - if (ldi->next_datablock == NULL) - return ZIP_INTERNALERROR; - ldi = ldi->next_datablock ; - ll->last_block = ldi; - } - - if (ldi->avail_in_this_block < len) - copy_this = (uInt)ldi->avail_in_this_block; - else - copy_this = (uInt)len; - - to_copy = &(ldi->data[ldi->filled_in_this_block]); - - for (i=0;i<copy_this;i++) - *(to_copy+i)=*(from_copy+i); - - ldi->filled_in_this_block += copy_this; - ldi->avail_in_this_block -= copy_this; - from_copy += copy_this ; - len -= copy_this; - } - return ZIP_OK; -} - - - -/****************************************************************************/ - -#ifndef NO_ADDFILEINEXISTINGZIP -/* =========================================================================== - Inputs a long in LSB order to the given file - nbByte == 1, 2 ,4 or 8 (byte, short or long, ZPOS64_T) -*/ - -local int zip64local_putValue OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T x, int nbByte)); -local int zip64local_putValue (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T x, int nbByte) -{ - unsigned char buf[8]; - int n; - for (n = 0; n < nbByte; n++) - { - buf[n] = (unsigned char)(x & 0xff); - x >>= 8; - } - if (x != 0) - { /* data overflow - hack for ZIP64 (X Roche) */ - for (n = 0; n < nbByte; n++) - { - buf[n] = 0xff; - } - } - - if (ZWRITE64(*pzlib_filefunc_def,filestream,buf,nbByte)!=(uLong)nbByte) - return ZIP_ERRNO; - else - return ZIP_OK; -} - -local void zip64local_putValue_inmemory OF((void* dest, ZPOS64_T x, int nbByte)); -local void zip64local_putValue_inmemory (void* dest, ZPOS64_T x, int nbByte) -{ - unsigned char* buf=(unsigned char*)dest; - int n; - for (n = 0; n < nbByte; n++) { - buf[n] = (unsigned char)(x & 0xff); - x >>= 8; - } - - if (x != 0) - { /* data overflow - hack for ZIP64 */ - for (n = 0; n < nbByte; n++) - { - buf[n] = 0xff; - } - } -} - -/****************************************************************************/ - - -local uLong zip64local_TmzDateToDosDate(const tm_zip* ptm) -{ - uLong year = (uLong)ptm->tm_year; - if (year>=1980) - year-=1980; - else if (year>=80) - year-=80; - return - (uLong) (((ptm->tm_mday) + (32 * (ptm->tm_mon+1)) + (512 * year)) << 16) | - ((ptm->tm_sec/2) + (32* ptm->tm_min) + (2048 * (uLong)ptm->tm_hour)); -} - - -/****************************************************************************/ - -local int zip64local_getByte OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, int *pi)); - -local int zip64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def,voidpf filestream,int* pi) -{ - unsigned char c; - int err = (int)ZREAD64(*pzlib_filefunc_def,filestream,&c,1); - if (err==1) - { - *pi = (int)c; - return ZIP_OK; - } - else - { - if (ZERROR64(*pzlib_filefunc_def,filestream)) - return ZIP_ERRNO; - else - return ZIP_EOF; - } -} - - -/* =========================================================================== - Reads a long in LSB order from the given gz_stream. Sets -*/ -local int zip64local_getShort OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX)); - -local int zip64local_getShort (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong* pX) -{ - uLong x ; - int i = 0; - int err; - - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x = (uLong)i; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((uLong)i)<<8; - - if (err==ZIP_OK) - *pX = x; - else - *pX = 0; - return err; -} - -local int zip64local_getLong OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX)); - -local int zip64local_getLong (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong* pX) -{ - uLong x ; - int i = 0; - int err; - - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x = (uLong)i; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((uLong)i)<<8; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((uLong)i)<<16; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((uLong)i)<<24; - - if (err==ZIP_OK) - *pX = x; - else - *pX = 0; - return err; -} - -local int zip64local_getLong64 OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX)); - - -local int zip64local_getLong64 (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX) -{ - ZPOS64_T x; - int i = 0; - int err; - - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x = (ZPOS64_T)i; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((ZPOS64_T)i)<<8; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((ZPOS64_T)i)<<16; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((ZPOS64_T)i)<<24; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((ZPOS64_T)i)<<32; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((ZPOS64_T)i)<<40; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((ZPOS64_T)i)<<48; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((ZPOS64_T)i)<<56; - - if (err==ZIP_OK) - *pX = x; - else - *pX = 0; - - return err; -} - -#ifndef BUFREADCOMMENT -#define BUFREADCOMMENT (0x400) -#endif -/* - Locate the Central directory of a zipfile (at the end, just before - the global comment) -*/ -local ZPOS64_T zip64local_SearchCentralDir OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream)); - -local ZPOS64_T zip64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream) -{ - unsigned char* buf; - ZPOS64_T uSizeFile; - ZPOS64_T uBackRead; - ZPOS64_T uMaxBack=0xffff; /* maximum size of global comment */ - ZPOS64_T uPosFound=0; - - if (ZSEEK64(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0) - return 0; - - - uSizeFile = ZTELL64(*pzlib_filefunc_def,filestream); - - if (uMaxBack>uSizeFile) - uMaxBack = uSizeFile; - - buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); - if (buf==NULL) - return 0; - - uBackRead = 4; - while (uBackRead<uMaxBack) - { - uLong uReadSize; - ZPOS64_T uReadPos ; - int i; - if (uBackRead+BUFREADCOMMENT>uMaxBack) - uBackRead = uMaxBack; - else - uBackRead+=BUFREADCOMMENT; - uReadPos = uSizeFile-uBackRead ; - - uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? - (BUFREADCOMMENT+4) : (uLong)(uSizeFile-uReadPos); - if (ZSEEK64(*pzlib_filefunc_def,filestream,uReadPos,ZLIB_FILEFUNC_SEEK_SET)!=0) - break; - - if (ZREAD64(*pzlib_filefunc_def,filestream,buf,uReadSize)!=uReadSize) - break; - - for (i=(int)uReadSize-3; (i--)>0;) - if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && - ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06)) - { - uPosFound = uReadPos+i; - break; - } - - if (uPosFound!=0) - break; - } - TRYFREE(buf); - return uPosFound; -} - -/* -Locate the End of Zip64 Central directory locator and from there find the CD of a zipfile (at the end, just before -the global comment) -*/ -local ZPOS64_T zip64local_SearchCentralDir64 OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream)); - -local ZPOS64_T zip64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream) -{ - unsigned char* buf; - ZPOS64_T uSizeFile; - ZPOS64_T uBackRead; - ZPOS64_T uMaxBack=0xffff; /* maximum size of global comment */ - ZPOS64_T uPosFound=0; - uLong uL; - ZPOS64_T relativeOffset; - - if (ZSEEK64(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0) - return 0; - - uSizeFile = ZTELL64(*pzlib_filefunc_def,filestream); - - if (uMaxBack>uSizeFile) - uMaxBack = uSizeFile; - - buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); - if (buf==NULL) - return 0; - - uBackRead = 4; - while (uBackRead<uMaxBack) - { - uLong uReadSize; - ZPOS64_T uReadPos; - int i; - if (uBackRead+BUFREADCOMMENT>uMaxBack) - uBackRead = uMaxBack; - else - uBackRead+=BUFREADCOMMENT; - uReadPos = uSizeFile-uBackRead ; - - uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? - (BUFREADCOMMENT+4) : (uLong)(uSizeFile-uReadPos); - if (ZSEEK64(*pzlib_filefunc_def,filestream,uReadPos,ZLIB_FILEFUNC_SEEK_SET)!=0) - break; - - if (ZREAD64(*pzlib_filefunc_def,filestream,buf,uReadSize)!=uReadSize) - break; - - for (i=(int)uReadSize-3; (i--)>0;) - { - // Signature "0x07064b50" Zip64 end of central directory locater - if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && ((*(buf+i+2))==0x06) && ((*(buf+i+3))==0x07)) - { - uPosFound = uReadPos+i; - break; - } - } - - if (uPosFound!=0) - break; - } - - TRYFREE(buf); - if (uPosFound == 0) - return 0; - - /* Zip64 end of central directory locator */ - if (ZSEEK64(*pzlib_filefunc_def,filestream, uPosFound,ZLIB_FILEFUNC_SEEK_SET)!=0) - return 0; - - /* the signature, already checked */ - if (zip64local_getLong(pzlib_filefunc_def,filestream,&uL)!=ZIP_OK) - return 0; - - /* number of the disk with the start of the zip64 end of central directory */ - if (zip64local_getLong(pzlib_filefunc_def,filestream,&uL)!=ZIP_OK) - return 0; - if (uL != 0) - return 0; - - /* relative offset of the zip64 end of central directory record */ - if (zip64local_getLong64(pzlib_filefunc_def,filestream,&relativeOffset)!=ZIP_OK) - return 0; - - /* total number of disks */ - if (zip64local_getLong(pzlib_filefunc_def,filestream,&uL)!=ZIP_OK) - return 0; - if (uL != 1) - return 0; - - /* Goto Zip64 end of central directory record */ - if (ZSEEK64(*pzlib_filefunc_def,filestream, relativeOffset,ZLIB_FILEFUNC_SEEK_SET)!=0) - return 0; - - /* the signature */ - if (zip64local_getLong(pzlib_filefunc_def,filestream,&uL)!=ZIP_OK) - return 0; - - if (uL != 0x06064b50) // signature of 'Zip64 end of central directory' - return 0; - - return relativeOffset; -} - -int LoadCentralDirectoryRecord(zip64_internal* pziinit) -{ - int err=ZIP_OK; - ZPOS64_T byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ - - ZPOS64_T size_central_dir; /* size of the central directory */ - ZPOS64_T offset_central_dir; /* offset of start of central directory */ - ZPOS64_T central_pos; - uLong uL; - - uLong number_disk; /* number of the current dist, used for - spaning ZIP, unsupported, always 0*/ - uLong number_disk_with_CD; /* number the the disk with central dir, used - for spaning ZIP, unsupported, always 0*/ - ZPOS64_T number_entry; - ZPOS64_T number_entry_CD; /* total number of entries in - the central dir - (same than number_entry on nospan) */ - uLong VersionMadeBy; - uLong VersionNeeded; - uLong size_comment; - - int hasZIP64Record = 0; - - // check first if we find a ZIP64 record - central_pos = zip64local_SearchCentralDir64(&pziinit->z_filefunc,pziinit->filestream); - if(central_pos > 0) - { - hasZIP64Record = 1; - } - else if(central_pos == 0) - { - central_pos = zip64local_SearchCentralDir(&pziinit->z_filefunc,pziinit->filestream); - } - -/* disable to allow appending to empty ZIP archive - if (central_pos==0) - err=ZIP_ERRNO; -*/ - - if(hasZIP64Record) - { - ZPOS64_T sizeEndOfCentralDirectory; - if (ZSEEK64(pziinit->z_filefunc, pziinit->filestream, central_pos, ZLIB_FILEFUNC_SEEK_SET) != 0) - err=ZIP_ERRNO; - - /* the signature, already checked */ - if (zip64local_getLong(&pziinit->z_filefunc, pziinit->filestream,&uL)!=ZIP_OK) - err=ZIP_ERRNO; - - /* size of zip64 end of central directory record */ - if (zip64local_getLong64(&pziinit->z_filefunc, pziinit->filestream, &sizeEndOfCentralDirectory)!=ZIP_OK) - err=ZIP_ERRNO; - - /* version made by */ - if (zip64local_getShort(&pziinit->z_filefunc, pziinit->filestream, &VersionMadeBy)!=ZIP_OK) - err=ZIP_ERRNO; - - /* version needed to extract */ - if (zip64local_getShort(&pziinit->z_filefunc, pziinit->filestream, &VersionNeeded)!=ZIP_OK) - err=ZIP_ERRNO; - - /* number of this disk */ - if (zip64local_getLong(&pziinit->z_filefunc, pziinit->filestream,&number_disk)!=ZIP_OK) - err=ZIP_ERRNO; - - /* number of the disk with the start of the central directory */ - if (zip64local_getLong(&pziinit->z_filefunc, pziinit->filestream,&number_disk_with_CD)!=ZIP_OK) - err=ZIP_ERRNO; - - /* total number of entries in the central directory on this disk */ - if (zip64local_getLong64(&pziinit->z_filefunc, pziinit->filestream, &number_entry)!=ZIP_OK) - err=ZIP_ERRNO; - - /* total number of entries in the central directory */ - if (zip64local_getLong64(&pziinit->z_filefunc, pziinit->filestream,&number_entry_CD)!=ZIP_OK) - err=ZIP_ERRNO; - - if ((number_entry_CD!=number_entry) || (number_disk_with_CD!=0) || (number_disk!=0)) - err=ZIP_BADZIPFILE; - - /* size of the central directory */ - if (zip64local_getLong64(&pziinit->z_filefunc, pziinit->filestream,&size_central_dir)!=ZIP_OK) - err=ZIP_ERRNO; - - /* offset of start of central directory with respect to the - starting disk number */ - if (zip64local_getLong64(&pziinit->z_filefunc, pziinit->filestream,&offset_central_dir)!=ZIP_OK) - err=ZIP_ERRNO; - - // TODO.. - // read the comment from the standard central header. - size_comment = 0; - } - else - { - // Read End of central Directory info - if (ZSEEK64(pziinit->z_filefunc, pziinit->filestream, central_pos,ZLIB_FILEFUNC_SEEK_SET)!=0) - err=ZIP_ERRNO; - - /* the signature, already checked */ - if (zip64local_getLong(&pziinit->z_filefunc, pziinit->filestream,&uL)!=ZIP_OK) - err=ZIP_ERRNO; - - /* number of this disk */ - if (zip64local_getShort(&pziinit->z_filefunc, pziinit->filestream,&number_disk)!=ZIP_OK) - err=ZIP_ERRNO; - - /* number of the disk with the start of the central directory */ - if (zip64local_getShort(&pziinit->z_filefunc, pziinit->filestream,&number_disk_with_CD)!=ZIP_OK) - err=ZIP_ERRNO; - - /* total number of entries in the central dir on this disk */ - number_entry = 0; - if (zip64local_getShort(&pziinit->z_filefunc, pziinit->filestream, &uL)!=ZIP_OK) - err=ZIP_ERRNO; - else - number_entry = uL; - - /* total number of entries in the central dir */ - number_entry_CD = 0; - if (zip64local_getShort(&pziinit->z_filefunc, pziinit->filestream, &uL)!=ZIP_OK) - err=ZIP_ERRNO; - else - number_entry_CD = uL; - - if ((number_entry_CD!=number_entry) || (number_disk_with_CD!=0) || (number_disk!=0)) - err=ZIP_BADZIPFILE; - - /* size of the central directory */ - size_central_dir = 0; - if (zip64local_getLong(&pziinit->z_filefunc, pziinit->filestream, &uL)!=ZIP_OK) - err=ZIP_ERRNO; - else - size_central_dir = uL; - - /* offset of start of central directory with respect to the starting disk number */ - offset_central_dir = 0; - if (zip64local_getLong(&pziinit->z_filefunc, pziinit->filestream, &uL)!=ZIP_OK) - err=ZIP_ERRNO; - else - offset_central_dir = uL; - - - /* zipfile global comment length */ - if (zip64local_getShort(&pziinit->z_filefunc, pziinit->filestream, &size_comment)!=ZIP_OK) - err=ZIP_ERRNO; - } - - if ((central_pos<offset_central_dir+size_central_dir) && - (err==ZIP_OK)) - err=ZIP_BADZIPFILE; - - if (err!=ZIP_OK) - { - ZCLOSE64(pziinit->z_filefunc, pziinit->filestream); - return ZIP_ERRNO; - } - - if (size_comment>0) - { - pziinit->globalcomment = (char*)ALLOC(size_comment+1); - if (pziinit->globalcomment) - { - size_comment = ZREAD64(pziinit->z_filefunc, pziinit->filestream, pziinit->globalcomment,size_comment); - pziinit->globalcomment[size_comment]=0; - } - } - - byte_before_the_zipfile = central_pos - (offset_central_dir+size_central_dir); - pziinit->add_position_when_writting_offset = byte_before_the_zipfile; - - { - ZPOS64_T size_central_dir_to_read = size_central_dir; - size_t buf_size = SIZEDATA_INDATABLOCK; - void* buf_read = (void*)ALLOC(buf_size); - if (ZSEEK64(pziinit->z_filefunc, pziinit->filestream, offset_central_dir + byte_before_the_zipfile, ZLIB_FILEFUNC_SEEK_SET) != 0) - err=ZIP_ERRNO; - - while ((size_central_dir_to_read>0) && (err==ZIP_OK)) - { - ZPOS64_T read_this = SIZEDATA_INDATABLOCK; - if (read_this > size_central_dir_to_read) - read_this = size_central_dir_to_read; - - if (ZREAD64(pziinit->z_filefunc, pziinit->filestream,buf_read,(uLong)read_this) != read_this) - err=ZIP_ERRNO; - - if (err==ZIP_OK) - err = add_data_in_datablock(&pziinit->central_dir,buf_read, (uLong)read_this); - - size_central_dir_to_read-=read_this; - } - TRYFREE(buf_read); - } - pziinit->begin_pos = byte_before_the_zipfile; - pziinit->number_entry = number_entry_CD; - - if (ZSEEK64(pziinit->z_filefunc, pziinit->filestream, offset_central_dir+byte_before_the_zipfile,ZLIB_FILEFUNC_SEEK_SET) != 0) - err=ZIP_ERRNO; - - return err; -} - - -#endif /* !NO_ADDFILEINEXISTINGZIP*/ - - -/************************************************************/ -extern zipFile ZEXPORT zipOpen3 (const void *pathname, int append, zipcharpc* globalcomment, zlib_filefunc64_32_def* pzlib_filefunc64_32_def) -{ - zip64_internal ziinit; - zip64_internal* zi; - int err=ZIP_OK; - - ziinit.z_filefunc.zseek32_file = NULL; - ziinit.z_filefunc.ztell32_file = NULL; - if (pzlib_filefunc64_32_def==NULL) - fill_fopen64_filefunc(&ziinit.z_filefunc.zfile_func64); - else - ziinit.z_filefunc = *pzlib_filefunc64_32_def; - - ziinit.filestream = ZOPEN64(ziinit.z_filefunc, - pathname, - (append == APPEND_STATUS_CREATE) ? - (ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_WRITE | ZLIB_FILEFUNC_MODE_CREATE) : - (ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_WRITE | ZLIB_FILEFUNC_MODE_EXISTING)); - - if (ziinit.filestream == NULL) - return NULL; - - if (append == APPEND_STATUS_CREATEAFTER) - ZSEEK64(ziinit.z_filefunc,ziinit.filestream,0,SEEK_END); - - ziinit.begin_pos = ZTELL64(ziinit.z_filefunc,ziinit.filestream); - ziinit.in_opened_file_inzip = 0; - ziinit.ci.stream_initialised = 0; - ziinit.number_entry = 0; - ziinit.add_position_when_writting_offset = 0; - init_linkedlist(&(ziinit.central_dir)); - - - - zi = (zip64_internal*)ALLOC(sizeof(zip64_internal)); - if (zi==NULL) - { - ZCLOSE64(ziinit.z_filefunc,ziinit.filestream); - return NULL; - } - - /* now we add file in a zipfile */ -# ifndef NO_ADDFILEINEXISTINGZIP - ziinit.globalcomment = NULL; - if (append == APPEND_STATUS_ADDINZIP) - { - // Read and Cache Central Directory Records - err = LoadCentralDirectoryRecord(&ziinit); - } - - if (globalcomment) - { - *globalcomment = ziinit.globalcomment; - } -# endif /* !NO_ADDFILEINEXISTINGZIP*/ - - if (err != ZIP_OK) - { -# ifndef NO_ADDFILEINEXISTINGZIP - TRYFREE(ziinit.globalcomment); -# endif /* !NO_ADDFILEINEXISTINGZIP*/ - TRYFREE(zi); - return NULL; - } - else - { - *zi = ziinit; - return (zipFile)zi; - } -} - -extern zipFile ZEXPORT zipOpen2 (const char *pathname, int append, zipcharpc* globalcomment, zlib_filefunc_def* pzlib_filefunc32_def) -{ - if (pzlib_filefunc32_def != NULL) - { - zlib_filefunc64_32_def zlib_filefunc64_32_def_fill; - fill_zlib_filefunc64_32_def_from_filefunc32(&zlib_filefunc64_32_def_fill,pzlib_filefunc32_def); - return zipOpen3(pathname, append, globalcomment, &zlib_filefunc64_32_def_fill); - } - else - return zipOpen3(pathname, append, globalcomment, NULL); -} - -extern zipFile ZEXPORT zipOpen2_64 (const void *pathname, int append, zipcharpc* globalcomment, zlib_filefunc64_def* pzlib_filefunc_def) -{ - if (pzlib_filefunc_def != NULL) - { - zlib_filefunc64_32_def zlib_filefunc64_32_def_fill; - zlib_filefunc64_32_def_fill.zfile_func64 = *pzlib_filefunc_def; - zlib_filefunc64_32_def_fill.ztell32_file = NULL; - zlib_filefunc64_32_def_fill.zseek32_file = NULL; - return zipOpen3(pathname, append, globalcomment, &zlib_filefunc64_32_def_fill); - } - else - return zipOpen3(pathname, append, globalcomment, NULL); -} - - - -extern zipFile ZEXPORT zipOpen (const char* pathname, int append) -{ - return zipOpen3((const void*)pathname,append,NULL,NULL); -} - -extern zipFile ZEXPORT zipOpen64 (const void* pathname, int append) -{ - return zipOpen3(pathname,append,NULL,NULL); -} - -int Write_LocalFileHeader(zip64_internal* zi, const char* filename, uInt size_extrafield_local, const void* extrafield_local) -{ - /* write the local header */ - int err; - uInt size_filename = (uInt)strlen(filename); - uInt size_extrafield = size_extrafield_local; - - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)LOCALHEADERMAGIC, 4); - - if (err==ZIP_OK) - { - if(zi->ci.zip64) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)45,2);/* version needed to extract */ - else - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)20,2);/* version needed to extract */ - } - - if (err==ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.flag,2); - - if (err==ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.method,2); - - if (err==ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.dosDate,4); - - // CRC / Compressed size / Uncompressed size will be filled in later and rewritten later - if (err==ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* crc 32, unknown */ - if (err==ZIP_OK) - { - if(zi->ci.zip64) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0xFFFFFFFF,4); /* compressed size, unknown */ - else - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* compressed size, unknown */ - } - if (err==ZIP_OK) - { - if(zi->ci.zip64) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0xFFFFFFFF,4); /* uncompressed size, unknown */ - else - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* uncompressed size, unknown */ - } - - if (err==ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_filename,2); - - if(zi->ci.zip64) - { - size_extrafield += 20; - } - - if (err==ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_extrafield,2); - - if ((err==ZIP_OK) && (size_filename > 0)) - { - if (ZWRITE64(zi->z_filefunc,zi->filestream,filename,size_filename)!=size_filename) - err = ZIP_ERRNO; - } - - if ((err==ZIP_OK) && (size_extrafield_local > 0)) - { - if (ZWRITE64(zi->z_filefunc, zi->filestream, extrafield_local, size_extrafield_local) != size_extrafield_local) - err = ZIP_ERRNO; - } - - - if ((err==ZIP_OK) && (zi->ci.zip64)) - { - // write the Zip64 extended info - short HeaderID = 1; - short DataSize = 16; - ZPOS64_T CompressedSize = 0; - ZPOS64_T UncompressedSize = 0; - - // Remember position of Zip64 extended info for the local file header. (needed when we update size after done with file) - zi->ci.pos_zip64extrainfo = ZTELL64(zi->z_filefunc,zi->filestream); - - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (short)HeaderID,2); - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (short)DataSize,2); - - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)UncompressedSize,8); - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)CompressedSize,8); - } - - return err; -} - -/* - NOTE. - When writing RAW the ZIP64 extended information in extrafield_local and extrafield_global needs to be stripped - before calling this function it can be done with zipRemoveExtraInfoBlock - - It is not done here because then we need to realloc a new buffer since parameters are 'const' and I want to minimize - unnecessary allocations. - */ -extern int ZEXPORT zipOpenNewFileInZip4_64 (zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void* extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level, int raw, - int windowBits,int memLevel, int strategy, - const char* password, uLong crcForCrypting, - uLong versionMadeBy, uLong flagBase, int zip64) -{ - zip64_internal* zi; - uInt size_filename; - uInt size_comment; - uInt i; - int err = ZIP_OK; - -# ifdef NOCRYPT - (crcForCrypting); - if (password != NULL) - return ZIP_PARAMERROR; -# endif - - if (file == NULL) - return ZIP_PARAMERROR; - -#ifdef HAVE_BZIP2 - if ((method!=0) && (method!=Z_DEFLATED) && (method!=Z_BZIP2ED)) - return ZIP_PARAMERROR; -#else - if ((method!=0) && (method!=Z_DEFLATED)) - return ZIP_PARAMERROR; -#endif - - zi = (zip64_internal*)file; - - if (zi->in_opened_file_inzip == 1) - { - err = zipCloseFileInZip (file); - if (err != ZIP_OK) - return err; - } - - if (filename==NULL) - filename="-"; - - if (comment==NULL) - size_comment = 0; - else - size_comment = (uInt)strlen(comment); - - size_filename = (uInt)strlen(filename); - - if (zipfi == NULL) - zi->ci.dosDate = 0; - else - { - if (zipfi->dosDate != 0) - zi->ci.dosDate = zipfi->dosDate; - else - zi->ci.dosDate = zip64local_TmzDateToDosDate(&zipfi->tmz_date); - } - - zi->ci.flag = flagBase; - if ((level==8) || (level==9)) - zi->ci.flag |= 2; - if (level==2) - zi->ci.flag |= 4; - if (level==1) - zi->ci.flag |= 6; - if (password != NULL) - zi->ci.flag |= 1; - - zi->ci.crc32 = 0; - zi->ci.method = method; - zi->ci.encrypt = 0; - zi->ci.stream_initialised = 0; - zi->ci.pos_in_buffered_data = 0; - zi->ci.raw = raw; - zi->ci.pos_local_header = ZTELL64(zi->z_filefunc,zi->filestream); - - zi->ci.size_centralheader = SIZECENTRALHEADER + size_filename + size_extrafield_global + size_comment; - zi->ci.size_centralExtraFree = 32; // Extra space we have reserved in case we need to add ZIP64 extra info data - - zi->ci.central_header = (char*)ALLOC((uInt)zi->ci.size_centralheader + zi->ci.size_centralExtraFree); - - zi->ci.size_centralExtra = size_extrafield_global; - zip64local_putValue_inmemory(zi->ci.central_header,(uLong)CENTRALHEADERMAGIC,4); - /* version info */ - zip64local_putValue_inmemory(zi->ci.central_header+4,(uLong)versionMadeBy,2); - zip64local_putValue_inmemory(zi->ci.central_header+6,(uLong)20,2); - zip64local_putValue_inmemory(zi->ci.central_header+8,(uLong)zi->ci.flag,2); - zip64local_putValue_inmemory(zi->ci.central_header+10,(uLong)zi->ci.method,2); - zip64local_putValue_inmemory(zi->ci.central_header+12,(uLong)zi->ci.dosDate,4); - zip64local_putValue_inmemory(zi->ci.central_header+16,(uLong)0,4); /*crc*/ - zip64local_putValue_inmemory(zi->ci.central_header+20,(uLong)0,4); /*compr size*/ - zip64local_putValue_inmemory(zi->ci.central_header+24,(uLong)0,4); /*uncompr size*/ - zip64local_putValue_inmemory(zi->ci.central_header+28,(uLong)size_filename,2); - zip64local_putValue_inmemory(zi->ci.central_header+30,(uLong)size_extrafield_global,2); - zip64local_putValue_inmemory(zi->ci.central_header+32,(uLong)size_comment,2); - zip64local_putValue_inmemory(zi->ci.central_header+34,(uLong)0,2); /*disk nm start*/ - - if (zipfi==NULL) - zip64local_putValue_inmemory(zi->ci.central_header+36,(uLong)0,2); - else - zip64local_putValue_inmemory(zi->ci.central_header+36,(uLong)zipfi->internal_fa,2); - - if (zipfi==NULL) - zip64local_putValue_inmemory(zi->ci.central_header+38,(uLong)0,4); - else - zip64local_putValue_inmemory(zi->ci.central_header+38,(uLong)zipfi->external_fa,4); - - if(zi->ci.pos_local_header >= 0xffffffff) - zip64local_putValue_inmemory(zi->ci.central_header+42,(uLong)0xffffffff,4); - else - zip64local_putValue_inmemory(zi->ci.central_header+42,(uLong)zi->ci.pos_local_header - zi->add_position_when_writting_offset,4); - - for (i=0;i<size_filename;i++) - *(zi->ci.central_header+SIZECENTRALHEADER+i) = *(filename+i); - - for (i=0;i<size_extrafield_global;i++) - *(zi->ci.central_header+SIZECENTRALHEADER+size_filename+i) = - *(((const char*)extrafield_global)+i); - - for (i=0;i<size_comment;i++) - *(zi->ci.central_header+SIZECENTRALHEADER+size_filename+ - size_extrafield_global+i) = *(comment+i); - if (zi->ci.central_header == NULL) - return ZIP_INTERNALERROR; - - zi->ci.zip64 = zip64; - zi->ci.totalCompressedData = 0; - zi->ci.totalUncompressedData = 0; - zi->ci.pos_zip64extrainfo = 0; - - err = Write_LocalFileHeader(zi, filename, size_extrafield_local, extrafield_local); - -#ifdef HAVE_BZIP2 - zi->ci.bstream.avail_in = (uInt)0; - zi->ci.bstream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.bstream.next_out = (char*)zi->ci.buffered_data; - zi->ci.bstream.total_in_hi32 = 0; - zi->ci.bstream.total_in_lo32 = 0; - zi->ci.bstream.total_out_hi32 = 0; - zi->ci.bstream.total_out_lo32 = 0; -#endif - - zi->ci.stream.avail_in = (uInt)0; - zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.stream.next_out = zi->ci.buffered_data; - zi->ci.stream.total_in = 0; - zi->ci.stream.total_out = 0; - zi->ci.stream.data_type = Z_BINARY; - -#ifdef HAVE_BZIP2 - if ((err==ZIP_OK) && (zi->ci.method == Z_DEFLATED || zi->ci.method == Z_BZIP2ED) && (!zi->ci.raw)) -#else - if ((err==ZIP_OK) && (zi->ci.method == Z_DEFLATED) && (!zi->ci.raw)) -#endif - { - if(zi->ci.method == Z_DEFLATED) - { - zi->ci.stream.zalloc = (alloc_func)0; - zi->ci.stream.zfree = (free_func)0; - zi->ci.stream.opaque = (voidpf)0; - - if (windowBits>0) - windowBits = -windowBits; - - err = deflateInit2(&zi->ci.stream, level, Z_DEFLATED, windowBits, memLevel, strategy); - - if (err==Z_OK) - zi->ci.stream_initialised = Z_DEFLATED; - } - else if(zi->ci.method == Z_BZIP2ED) - { -#ifdef HAVE_BZIP2 - // Init BZip stuff here - zi->ci.bstream.bzalloc = 0; - zi->ci.bstream.bzfree = 0; - zi->ci.bstream.opaque = (voidpf)0; - - err = BZ2_bzCompressInit(&zi->ci.bstream, level, 0,35); - if(err == BZ_OK) - zi->ci.stream_initialised = Z_BZIP2ED; -#endif - } - - } - -# ifndef NOCRYPT - zi->ci.crypt_header_size = 0; - if ((err==Z_OK) && (password != NULL)) - { - unsigned char bufHead[RAND_HEAD_LEN]; - unsigned int sizeHead; - zi->ci.encrypt = 1; - zi->ci.pcrc_32_tab = get_crc_table(); - /*init_keys(password,zi->ci.keys,zi->ci.pcrc_32_tab);*/ - - sizeHead=crypthead(password,bufHead,RAND_HEAD_LEN,zi->ci.keys,zi->ci.pcrc_32_tab,crcForCrypting); - zi->ci.crypt_header_size = sizeHead; - - if (ZWRITE64(zi->z_filefunc,zi->filestream,bufHead,sizeHead) != sizeHead) - err = ZIP_ERRNO; - } -# endif - - if (err==Z_OK) - zi->in_opened_file_inzip = 1; - return err; -} - -extern int ZEXPORT zipOpenNewFileInZip4 (zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void* extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level, int raw, - int windowBits,int memLevel, int strategy, - const char* password, uLong crcForCrypting, - uLong versionMadeBy, uLong flagBase) -{ - return zipOpenNewFileInZip4_64 (file, filename, zipfi, - extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, - comment, method, level, raw, - windowBits, memLevel, strategy, - password, crcForCrypting, versionMadeBy, flagBase, 0); -} - -extern int ZEXPORT zipOpenNewFileInZip3 (zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void* extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level, int raw, - int windowBits,int memLevel, int strategy, - const char* password, uLong crcForCrypting) -{ - return zipOpenNewFileInZip4_64 (file, filename, zipfi, - extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, - comment, method, level, raw, - windowBits, memLevel, strategy, - password, crcForCrypting, VERSIONMADEBY, 0, 0); -} - -extern int ZEXPORT zipOpenNewFileInZip3_64(zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void* extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level, int raw, - int windowBits,int memLevel, int strategy, - const char* password, uLong crcForCrypting, int zip64) -{ - return zipOpenNewFileInZip4_64 (file, filename, zipfi, - extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, - comment, method, level, raw, - windowBits, memLevel, strategy, - password, crcForCrypting, VERSIONMADEBY, 0, zip64); -} - -extern int ZEXPORT zipOpenNewFileInZip2(zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void* extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level, int raw) -{ - return zipOpenNewFileInZip4_64 (file, filename, zipfi, - extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, - comment, method, level, raw, - -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, - NULL, 0, VERSIONMADEBY, 0, 0); -} - -extern int ZEXPORT zipOpenNewFileInZip2_64(zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void* extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level, int raw, int zip64) -{ - return zipOpenNewFileInZip4_64 (file, filename, zipfi, - extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, - comment, method, level, raw, - -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, - NULL, 0, VERSIONMADEBY, 0, zip64); -} - -extern int ZEXPORT zipOpenNewFileInZip64 (zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void*extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level, int zip64) -{ - return zipOpenNewFileInZip4_64 (file, filename, zipfi, - extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, - comment, method, level, 0, - -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, - NULL, 0, VERSIONMADEBY, 0, zip64); -} - -extern int ZEXPORT zipOpenNewFileInZip (zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void*extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level) -{ - return zipOpenNewFileInZip4_64 (file, filename, zipfi, - extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, - comment, method, level, 0, - -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, - NULL, 0, VERSIONMADEBY, 0, 0); -} - -local int zip64FlushWriteBuffer(zip64_internal* zi) -{ - int err=ZIP_OK; - - if (zi->ci.encrypt != 0) - { -#ifndef NOCRYPT - uInt i; - int t; - for (i=0;i<zi->ci.pos_in_buffered_data;i++) - zi->ci.buffered_data[i] = zencode(zi->ci.keys, zi->ci.pcrc_32_tab, zi->ci.buffered_data[i],t); -#endif - } - - if (ZWRITE64(zi->z_filefunc,zi->filestream,zi->ci.buffered_data,zi->ci.pos_in_buffered_data) != zi->ci.pos_in_buffered_data) - err = ZIP_ERRNO; - - zi->ci.totalCompressedData += zi->ci.pos_in_buffered_data; - -#ifdef HAVE_BZIP2 - if(zi->ci.method == Z_BZIP2ED) - { - zi->ci.totalUncompressedData += zi->ci.bstream.total_in_lo32; - zi->ci.bstream.total_in_lo32 = 0; - zi->ci.bstream.total_in_hi32 = 0; - } - else -#endif - { - zi->ci.totalUncompressedData += zi->ci.stream.total_in; - zi->ci.stream.total_in = 0; - } - - - zi->ci.pos_in_buffered_data = 0; - - return err; -} - -extern int ZEXPORT zipWriteInFileInZip (zipFile file,const void* buf,unsigned int len) -{ - zip64_internal* zi; - int err=ZIP_OK; - - if (file == NULL) - return ZIP_PARAMERROR; - zi = (zip64_internal*)file; - - if (zi->in_opened_file_inzip == 0) - return ZIP_PARAMERROR; - - zi->ci.crc32 = crc32(zi->ci.crc32,buf,(uInt)len); - -#ifdef HAVE_BZIP2 - if(zi->ci.method == Z_BZIP2ED && (!zi->ci.raw)) - { - zi->ci.bstream.next_in = (void*)buf; - zi->ci.bstream.avail_in = len; - err = BZ_RUN_OK; - - while ((err==BZ_RUN_OK) && (zi->ci.bstream.avail_in>0)) - { - if (zi->ci.bstream.avail_out == 0) - { - if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO) - err = ZIP_ERRNO; - zi->ci.bstream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.bstream.next_out = (char*)zi->ci.buffered_data; - } - - - if(err != BZ_RUN_OK) - break; - - if ((zi->ci.method == Z_BZIP2ED) && (!zi->ci.raw)) - { - uLong uTotalOutBefore_lo = zi->ci.bstream.total_out_lo32; -// uLong uTotalOutBefore_hi = zi->ci.bstream.total_out_hi32; - err=BZ2_bzCompress(&zi->ci.bstream, BZ_RUN); - - zi->ci.pos_in_buffered_data += (uInt)(zi->ci.bstream.total_out_lo32 - uTotalOutBefore_lo) ; - } - } - - if(err == BZ_RUN_OK) - err = ZIP_OK; - } - else -#endif - { - zi->ci.stream.next_in = (Bytef*)buf; - zi->ci.stream.avail_in = len; - - while ((err==ZIP_OK) && (zi->ci.stream.avail_in>0)) - { - if (zi->ci.stream.avail_out == 0) - { - if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO) - err = ZIP_ERRNO; - zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.stream.next_out = zi->ci.buffered_data; - } - - - if(err != ZIP_OK) - break; - - if ((zi->ci.method == Z_DEFLATED) && (!zi->ci.raw)) - { - uLong uTotalOutBefore = zi->ci.stream.total_out; - err=deflate(&zi->ci.stream, Z_NO_FLUSH); - if(uTotalOutBefore > zi->ci.stream.total_out) - { - int bBreak = 0; - bBreak++; - } - - zi->ci.pos_in_buffered_data += (uInt)(zi->ci.stream.total_out - uTotalOutBefore) ; - } - else - { - uInt copy_this,i; - if (zi->ci.stream.avail_in < zi->ci.stream.avail_out) - copy_this = zi->ci.stream.avail_in; - else - copy_this = zi->ci.stream.avail_out; - - for (i = 0; i < copy_this; i++) - *(((char*)zi->ci.stream.next_out)+i) = - *(((const char*)zi->ci.stream.next_in)+i); - { - zi->ci.stream.avail_in -= copy_this; - zi->ci.stream.avail_out-= copy_this; - zi->ci.stream.next_in+= copy_this; - zi->ci.stream.next_out+= copy_this; - zi->ci.stream.total_in+= copy_this; - zi->ci.stream.total_out+= copy_this; - zi->ci.pos_in_buffered_data += copy_this; - } - } - }// while(...) - } - - return err; -} - -extern int ZEXPORT zipCloseFileInZipRaw (zipFile file, uLong uncompressed_size, uLong crc32) -{ - return zipCloseFileInZipRaw64 (file, uncompressed_size, crc32); -} - -extern int ZEXPORT zipCloseFileInZipRaw64 (zipFile file, ZPOS64_T uncompressed_size, uLong crc32) -{ - zip64_internal* zi; - ZPOS64_T compressed_size; - uLong invalidValue = 0xffffffff; - short datasize = 0; - int err=ZIP_OK; - - if (file == NULL) - return ZIP_PARAMERROR; - zi = (zip64_internal*)file; - - if (zi->in_opened_file_inzip == 0) - return ZIP_PARAMERROR; - zi->ci.stream.avail_in = 0; - - if ((zi->ci.method == Z_DEFLATED) && (!zi->ci.raw)) - { - while (err==ZIP_OK) - { - uLong uTotalOutBefore; - if (zi->ci.stream.avail_out == 0) - { - if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO) - err = ZIP_ERRNO; - zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.stream.next_out = zi->ci.buffered_data; - } - uTotalOutBefore = zi->ci.stream.total_out; - err=deflate(&zi->ci.stream, Z_FINISH); - zi->ci.pos_in_buffered_data += (uInt)(zi->ci.stream.total_out - uTotalOutBefore) ; - } - } - else if ((zi->ci.method == Z_BZIP2ED) && (!zi->ci.raw)) - { -#ifdef HAVE_BZIP2 - err = BZ_FINISH_OK; - while (err==BZ_FINISH_OK) - { - uLong uTotalOutBefore; - if (zi->ci.bstream.avail_out == 0) - { - if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO) - err = ZIP_ERRNO; - zi->ci.bstream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.bstream.next_out = (char*)zi->ci.buffered_data; - } - uTotalOutBefore = zi->ci.bstream.total_out_lo32; - err=BZ2_bzCompress(&zi->ci.bstream, BZ_FINISH); - if(err == BZ_STREAM_END) - err = Z_STREAM_END; - - zi->ci.pos_in_buffered_data += (uInt)(zi->ci.bstream.total_out_lo32 - uTotalOutBefore); - } - - if(err == BZ_FINISH_OK) - err = ZIP_OK; -#endif - } - - if (err==Z_STREAM_END) - err=ZIP_OK; /* this is normal */ - - if ((zi->ci.pos_in_buffered_data>0) && (err==ZIP_OK)) - { - if (zip64FlushWriteBuffer(zi)==ZIP_ERRNO) - err = ZIP_ERRNO; - } - - if ((zi->ci.method == Z_DEFLATED) && (!zi->ci.raw)) - { - int tmp_err = deflateEnd(&zi->ci.stream); - if (err == ZIP_OK) - err = tmp_err; - zi->ci.stream_initialised = 0; - } -#ifdef HAVE_BZIP2 - else if((zi->ci.method == Z_BZIP2ED) && (!zi->ci.raw)) - { - int tmperr = BZ2_bzCompressEnd(&zi->ci.bstream); - if (err==ZIP_OK) - err = tmperr; - zi->ci.stream_initialised = 0; - } -#endif - - if (!zi->ci.raw) - { - crc32 = (uLong)zi->ci.crc32; - uncompressed_size = zi->ci.totalUncompressedData; - } - compressed_size = zi->ci.totalCompressedData; - -# ifndef NOCRYPT - compressed_size += zi->ci.crypt_header_size; -# endif - - // update Current Item crc and sizes, - if(compressed_size >= 0xffffffff || uncompressed_size >= 0xffffffff || zi->ci.pos_local_header >= 0xffffffff) - { - /*version Made by*/ - zip64local_putValue_inmemory(zi->ci.central_header+4,(uLong)45,2); - /*version needed*/ - zip64local_putValue_inmemory(zi->ci.central_header+6,(uLong)45,2); - - } - - zip64local_putValue_inmemory(zi->ci.central_header+16,crc32,4); /*crc*/ - - - if(compressed_size >= 0xffffffff) - zip64local_putValue_inmemory(zi->ci.central_header+20, invalidValue,4); /*compr size*/ - else - zip64local_putValue_inmemory(zi->ci.central_header+20, compressed_size,4); /*compr size*/ - - /// set internal file attributes field - if (zi->ci.stream.data_type == Z_ASCII) - zip64local_putValue_inmemory(zi->ci.central_header+36,(uLong)Z_ASCII,2); - - if(uncompressed_size >= 0xffffffff) - zip64local_putValue_inmemory(zi->ci.central_header+24, invalidValue,4); /*uncompr size*/ - else - zip64local_putValue_inmemory(zi->ci.central_header+24, uncompressed_size,4); /*uncompr size*/ - - // Add ZIP64 extra info field for uncompressed size - if(uncompressed_size >= 0xffffffff) - datasize += 8; - - // Add ZIP64 extra info field for compressed size - if(compressed_size >= 0xffffffff) - datasize += 8; - - // Add ZIP64 extra info field for relative offset to local file header of current file - if(zi->ci.pos_local_header >= 0xffffffff) - datasize += 8; - - if(datasize > 0) - { - char* p = NULL; - - if((uLong)(datasize + 4) > zi->ci.size_centralExtraFree) - { - // we can not write more data to the buffer that we have room for. - return ZIP_BADZIPFILE; - } - - p = zi->ci.central_header + zi->ci.size_centralheader; - - // Add Extra Information Header for 'ZIP64 information' - zip64local_putValue_inmemory(p, 0x0001, 2); // HeaderID - p += 2; - zip64local_putValue_inmemory(p, datasize, 2); // DataSize - p += 2; - - if(uncompressed_size >= 0xffffffff) - { - zip64local_putValue_inmemory(p, uncompressed_size, 8); - p += 8; - } - - if(compressed_size >= 0xffffffff) - { - zip64local_putValue_inmemory(p, compressed_size, 8); - p += 8; - } - - if(zi->ci.pos_local_header >= 0xffffffff) - { - zip64local_putValue_inmemory(p, zi->ci.pos_local_header, 8); - p += 8; - } - - // Update how much extra free space we got in the memory buffer - // and increase the centralheader size so the new ZIP64 fields are included - // ( 4 below is the size of HeaderID and DataSize field ) - zi->ci.size_centralExtraFree -= datasize + 4; - zi->ci.size_centralheader += datasize + 4; - - // Update the extra info size field - zi->ci.size_centralExtra += datasize + 4; - zip64local_putValue_inmemory(zi->ci.central_header+30,(uLong)zi->ci.size_centralExtra,2); - } - - if (err==ZIP_OK) - err = add_data_in_datablock(&zi->central_dir, zi->ci.central_header, (uLong)zi->ci.size_centralheader); - - free(zi->ci.central_header); - - if (err==ZIP_OK) - { - // Update the LocalFileHeader with the new values. - - ZPOS64_T cur_pos_inzip = ZTELL64(zi->z_filefunc,zi->filestream); - - if (ZSEEK64(zi->z_filefunc,zi->filestream, zi->ci.pos_local_header + 14,ZLIB_FILEFUNC_SEEK_SET)!=0) - err = ZIP_ERRNO; - - if (err==ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,crc32,4); /* crc 32, unknown */ - - if(uncompressed_size >= 0xffffffff || compressed_size >= 0xffffffff ) - { - if(zi->ci.pos_zip64extrainfo > 0) - { - // Update the size in the ZIP64 extended field. - if (ZSEEK64(zi->z_filefunc,zi->filestream, zi->ci.pos_zip64extrainfo + 4,ZLIB_FILEFUNC_SEEK_SET)!=0) - err = ZIP_ERRNO; - - if (err==ZIP_OK) /* compressed size, unknown */ - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, uncompressed_size, 8); - - if (err==ZIP_OK) /* uncompressed size, unknown */ - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, compressed_size, 8); - } - else - err = ZIP_BADZIPFILE; // Caller passed zip64 = 0, so no room for zip64 info -> fatal - } - else - { - if (err==ZIP_OK) /* compressed size, unknown */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,compressed_size,4); - - if (err==ZIP_OK) /* uncompressed size, unknown */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,uncompressed_size,4); - } - - if (ZSEEK64(zi->z_filefunc,zi->filestream, cur_pos_inzip,ZLIB_FILEFUNC_SEEK_SET)!=0) - err = ZIP_ERRNO; - } - - zi->number_entry ++; - zi->in_opened_file_inzip = 0; - - return err; -} - -extern int ZEXPORT zipCloseFileInZip (zipFile file) -{ - return zipCloseFileInZipRaw (file,0,0); -} - -int Write_Zip64EndOfCentralDirectoryLocator(zip64_internal* zi, ZPOS64_T zip64eocd_pos_inzip) -{ - int err = ZIP_OK; - ZPOS64_T pos = zip64eocd_pos_inzip - zi->add_position_when_writting_offset; - - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)ZIP64ENDLOCHEADERMAGIC,4); - - /*num disks*/ - if (err==ZIP_OK) /* number of the disk with the start of the central directory */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); - - /*relative offset*/ - if (err==ZIP_OK) /* Relative offset to the Zip64EndOfCentralDirectory */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream, pos,8); - - /*total disks*/ /* Do not support spawning of disk so always say 1 here*/ - if (err==ZIP_OK) /* number of the disk with the start of the central directory */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)1,4); - - return err; -} - -int Write_Zip64EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip) -{ - int err = ZIP_OK; - - uLong Zip64DataSize = 44; - - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)ZIP64ENDHEADERMAGIC,4); - - if (err==ZIP_OK) /* size of this 'zip64 end of central directory' */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(ZPOS64_T)Zip64DataSize,8); // why ZPOS64_T of this ? - - if (err==ZIP_OK) /* version made by */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)45,2); - - if (err==ZIP_OK) /* version needed */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)45,2); - - if (err==ZIP_OK) /* number of this disk */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); - - if (err==ZIP_OK) /* number of the disk with the start of the central directory */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); - - if (err==ZIP_OK) /* total number of entries in the central dir on this disk */ - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, zi->number_entry, 8); - - if (err==ZIP_OK) /* total number of entries in the central dir */ - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, zi->number_entry, 8); - - if (err==ZIP_OK) /* size of the central directory */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(ZPOS64_T)size_centraldir,8); - - if (err==ZIP_OK) /* offset of start of central directory with respect to the starting disk number */ - { - ZPOS64_T pos = centraldir_pos_inzip - zi->add_position_when_writting_offset; - err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (ZPOS64_T)pos,8); - } - return err; -} -int Write_EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip) -{ - int err = ZIP_OK; - - /*signature*/ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)ENDHEADERMAGIC,4); - - if (err==ZIP_OK) /* number of this disk */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,2); - - if (err==ZIP_OK) /* number of the disk with the start of the central directory */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,2); - - if (err==ZIP_OK) /* total number of entries in the central dir on this disk */ - { - { - if(zi->number_entry >= 0xFFFF) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0xffff,2); // use value in ZIP64 record - else - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->number_entry,2); - } - } - - if (err==ZIP_OK) /* total number of entries in the central dir */ - { - if(zi->number_entry >= 0xFFFF) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0xffff,2); // use value in ZIP64 record - else - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->number_entry,2); - } - - if (err==ZIP_OK) /* size of the central directory */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_centraldir,4); - - if (err==ZIP_OK) /* offset of start of central directory with respect to the starting disk number */ - { - ZPOS64_T pos = centraldir_pos_inzip - zi->add_position_when_writting_offset; - if(pos >= 0xffffffff) - { - err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (uLong)0xffffffff,4); - } - else - err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (uLong)(centraldir_pos_inzip - zi->add_position_when_writting_offset),4); - } - - return err; -} - -int Write_GlobalComment(zip64_internal* zi, const char* global_comment) -{ - int err = ZIP_OK; - uInt size_global_comment = 0; - - if(global_comment != NULL) - size_global_comment = (uInt)strlen(global_comment); - - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_global_comment,2); - - if (err == ZIP_OK && size_global_comment > 0) - { - if (ZWRITE64(zi->z_filefunc,zi->filestream, global_comment, size_global_comment) != size_global_comment) - err = ZIP_ERRNO; - } - return err; -} - -extern int ZEXPORT zipClose (zipFile file, const char* global_comment) -{ - zip64_internal* zi; - int err = 0; - uLong size_centraldir = 0; - ZPOS64_T centraldir_pos_inzip; - ZPOS64_T pos; - - if (file == NULL) - return ZIP_PARAMERROR; - - zi = (zip64_internal*)file; - - if (zi->in_opened_file_inzip == 1) - { - err = zipCloseFileInZip (file); - } - -#ifndef NO_ADDFILEINEXISTINGZIP - if (global_comment==NULL) - global_comment = zi->globalcomment; -#endif - - centraldir_pos_inzip = ZTELL64(zi->z_filefunc,zi->filestream); - - if (err==ZIP_OK) - { - linkedlist_datablock_internal* ldi = zi->central_dir.first_block; - while (ldi!=NULL) - { - if ((err==ZIP_OK) && (ldi->filled_in_this_block>0)) - { - if (ZWRITE64(zi->z_filefunc,zi->filestream, ldi->data, ldi->filled_in_this_block) != ldi->filled_in_this_block) - err = ZIP_ERRNO; - } - - size_centraldir += ldi->filled_in_this_block; - ldi = ldi->next_datablock; - } - } - free_linkedlist(&(zi->central_dir)); - - pos = centraldir_pos_inzip - zi->add_position_when_writting_offset; - if(pos >= 0xffffffff || zi->number_entry > 0xFFFF) - { - ZPOS64_T Zip64EOCDpos = ZTELL64(zi->z_filefunc,zi->filestream); - Write_Zip64EndOfCentralDirectoryRecord(zi, size_centraldir, centraldir_pos_inzip); - - Write_Zip64EndOfCentralDirectoryLocator(zi, Zip64EOCDpos); - } - - if (err==ZIP_OK) - err = Write_EndOfCentralDirectoryRecord(zi, size_centraldir, centraldir_pos_inzip); - - if(err == ZIP_OK) - err = Write_GlobalComment(zi, global_comment); - - if (ZCLOSE64(zi->z_filefunc,zi->filestream) != 0) - if (err == ZIP_OK) - err = ZIP_ERRNO; - -#ifndef NO_ADDFILEINEXISTINGZIP - TRYFREE(zi->globalcomment); -#endif - TRYFREE(zi); - - return err; -} - -extern int ZEXPORT zipRemoveExtraInfoBlock (char* pData, int* dataLen, short sHeader) -{ - char* p = pData; - int size = 0; - char* pNewHeader; - char* pTmp; - short header; - short dataSize; - - int retVal = ZIP_OK; - - if(pData == NULL || *dataLen < 4) - return ZIP_PARAMERROR; - - pNewHeader = (char*)ALLOC(*dataLen); - pTmp = pNewHeader; - - while(p < (pData + *dataLen)) - { - header = *(short*)p; - dataSize = *(((short*)p)+1); - - if( header == sHeader ) // Header found. - { - p += dataSize + 4; // skip it. do not copy to temp buffer - } - else - { - // Extra Info block should not be removed, So copy it to the temp buffer. - memcpy(pTmp, p, dataSize + 4); - p += dataSize + 4; - size += dataSize + 4; - } - - } - - if(size < *dataLen) - { - // clean old extra info block. - memset(pData,0, *dataLen); - - // copy the new extra info block over the old - if(size > 0) - memcpy(pData, pNewHeader, size); - - // set the new extra info size - *dataLen = size; - - retVal = ZIP_OK; - } - else - retVal = ZIP_ERRNO; - - TRYFREE(pNewHeader); - - return retVal; -} diff --git a/platform/win32/msvc/external/zlib/contrib/minizip/zip.h b/platform/win32/msvc/external/zlib/contrib/minizip/zip.h deleted file mode 100644 index 8aaebb62343..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/minizip/zip.h +++ /dev/null @@ -1,362 +0,0 @@ -/* zip.h -- IO on .zip files using zlib - Version 1.1, February 14h, 2010 - part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications for Zip64 support - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) - - For more info read MiniZip_info.txt - - --------------------------------------------------------------------------- - - Condition of use and distribution are the same than zlib : - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - --------------------------------------------------------------------------- - - Changes - - See header of zip.h - -*/ - -#ifndef _zip12_H -#define _zip12_H - -#ifdef __cplusplus -extern "C" { -#endif - -//#define HAVE_BZIP2 - -#ifndef _ZLIB_H -#include "zlib.h" -#endif - -#ifndef _ZLIBIOAPI_H -#include "ioapi.h" -#endif - -#ifdef HAVE_BZIP2 -#include "bzlib.h" -#endif - -#define Z_BZIP2ED 12 - -#if defined(STRICTZIP) || defined(STRICTZIPUNZIP) -/* like the STRICT of WIN32, we define a pointer that cannot be converted - from (void*) without cast */ -typedef struct TagzipFile__ { int unused; } zipFile__; -typedef zipFile__ *zipFile; -#else -typedef voidp zipFile; -#endif - -#define ZIP_OK (0) -#define ZIP_EOF (0) -#define ZIP_ERRNO (Z_ERRNO) -#define ZIP_PARAMERROR (-102) -#define ZIP_BADZIPFILE (-103) -#define ZIP_INTERNALERROR (-104) - -#ifndef DEF_MEM_LEVEL -# if MAX_MEM_LEVEL >= 8 -# define DEF_MEM_LEVEL 8 -# else -# define DEF_MEM_LEVEL MAX_MEM_LEVEL -# endif -#endif -/* default memLevel */ - -/* tm_zip contain date/time info */ -typedef struct tm_zip_s -{ - uInt tm_sec; /* seconds after the minute - [0,59] */ - uInt tm_min; /* minutes after the hour - [0,59] */ - uInt tm_hour; /* hours since midnight - [0,23] */ - uInt tm_mday; /* day of the month - [1,31] */ - uInt tm_mon; /* months since January - [0,11] */ - uInt tm_year; /* years - [1980..2044] */ -} tm_zip; - -typedef struct -{ - tm_zip tmz_date; /* date in understandable format */ - uLong dosDate; /* if dos_date == 0, tmu_date is used */ -/* uLong flag; */ /* general purpose bit flag 2 bytes */ - - uLong internal_fa; /* internal file attributes 2 bytes */ - uLong external_fa; /* external file attributes 4 bytes */ -} zip_fileinfo; - -typedef const char* zipcharpc; - - -#define APPEND_STATUS_CREATE (0) -#define APPEND_STATUS_CREATEAFTER (1) -#define APPEND_STATUS_ADDINZIP (2) - -extern zipFile ZEXPORT zipOpen OF((const char *pathname, int append)); -extern zipFile ZEXPORT zipOpen64 OF((const void *pathname, int append)); -/* - Create a zipfile. - pathname contain on Windows XP a filename like "c:\\zlib\\zlib113.zip" or on - an Unix computer "zlib/zlib113.zip". - if the file pathname exist and append==APPEND_STATUS_CREATEAFTER, the zip - will be created at the end of the file. - (useful if the file contain a self extractor code) - if the file pathname exist and append==APPEND_STATUS_ADDINZIP, we will - add files in existing zip (be sure you don't add file that doesn't exist) - If the zipfile cannot be opened, the return value is NULL. - Else, the return value is a zipFile Handle, usable with other function - of this zip package. -*/ - -/* Note : there is no delete function into a zipfile. - If you want delete file into a zipfile, you must open a zipfile, and create another - Of couse, you can use RAW reading and writing to copy the file you did not want delte -*/ - -extern zipFile ZEXPORT zipOpen2 OF((const char *pathname, - int append, - zipcharpc* globalcomment, - zlib_filefunc_def* pzlib_filefunc_def)); - -extern zipFile ZEXPORT zipOpen2_64 OF((const void *pathname, - int append, - zipcharpc* globalcomment, - zlib_filefunc64_def* pzlib_filefunc_def)); - -extern int ZEXPORT zipOpenNewFileInZip OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level)); - -extern int ZEXPORT zipOpenNewFileInZip64 OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level, - int zip64)); - -/* - Open a file in the ZIP for writing. - filename : the filename in zip (if NULL, '-' without quote will be used - *zipfi contain supplemental information - if extrafield_local!=NULL and size_extrafield_local>0, extrafield_local - contains the extrafield data the the local header - if extrafield_global!=NULL and size_extrafield_global>0, extrafield_global - contains the extrafield data the the local header - if comment != NULL, comment contain the comment string - method contain the compression method (0 for store, Z_DEFLATED for deflate) - level contain the level of compression (can be Z_DEFAULT_COMPRESSION) - zip64 is set to 1 if a zip64 extended information block should be added to the local file header. - this MUST be '1' if the uncompressed size is >= 0xffffffff. - -*/ - - -extern int ZEXPORT zipOpenNewFileInZip2 OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level, - int raw)); - - -extern int ZEXPORT zipOpenNewFileInZip2_64 OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level, - int raw, - int zip64)); -/* - Same than zipOpenNewFileInZip, except if raw=1, we write raw file - */ - -extern int ZEXPORT zipOpenNewFileInZip3 OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level, - int raw, - int windowBits, - int memLevel, - int strategy, - const char* password, - uLong crcForCrypting)); - -extern int ZEXPORT zipOpenNewFileInZip3_64 OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level, - int raw, - int windowBits, - int memLevel, - int strategy, - const char* password, - uLong crcForCrypting, - int zip64 - )); - -/* - Same than zipOpenNewFileInZip2, except - windowBits,memLevel,,strategy : see parameter strategy in deflateInit2 - password : crypting password (NULL for no crypting) - crcForCrypting : crc of file to compress (needed for crypting) - */ - -extern int ZEXPORT zipOpenNewFileInZip4 OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level, - int raw, - int windowBits, - int memLevel, - int strategy, - const char* password, - uLong crcForCrypting, - uLong versionMadeBy, - uLong flagBase - )); - - -extern int ZEXPORT zipOpenNewFileInZip4_64 OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level, - int raw, - int windowBits, - int memLevel, - int strategy, - const char* password, - uLong crcForCrypting, - uLong versionMadeBy, - uLong flagBase, - int zip64 - )); -/* - Same than zipOpenNewFileInZip4, except - versionMadeBy : value for Version made by field - flag : value for flag field (compression level info will be added) - */ - - -extern int ZEXPORT zipWriteInFileInZip OF((zipFile file, - const void* buf, - unsigned len)); -/* - Write data in the zipfile -*/ - -extern int ZEXPORT zipCloseFileInZip OF((zipFile file)); -/* - Close the current file in the zipfile -*/ - -extern int ZEXPORT zipCloseFileInZipRaw OF((zipFile file, - uLong uncompressed_size, - uLong crc32)); - -extern int ZEXPORT zipCloseFileInZipRaw64 OF((zipFile file, - ZPOS64_T uncompressed_size, - uLong crc32)); - -/* - Close the current file in the zipfile, for file opened with - parameter raw=1 in zipOpenNewFileInZip2 - uncompressed_size and crc32 are value for the uncompressed size -*/ - -extern int ZEXPORT zipClose OF((zipFile file, - const char* global_comment)); -/* - Close the zipfile -*/ - - -extern int ZEXPORT zipRemoveExtraInfoBlock OF((char* pData, int* dataLen, short sHeader)); -/* - zipRemoveExtraInfoBlock - Added by Mathias Svensson - - Remove extra information block from a extra information data for the local file header or central directory header - - It is needed to remove ZIP64 extra information blocks when before data is written if using RAW mode. - - 0x0001 is the signature header for the ZIP64 extra information blocks - - usage. - Remove ZIP64 Extra information from a central director extra field data - zipRemoveExtraInfoBlock(pCenDirExtraFieldData, &nCenDirExtraFieldDataLen, 0x0001); - - Remove ZIP64 Extra information from a Local File Header extra field data - zipRemoveExtraInfoBlock(pLocalHeaderExtraFieldData, &nLocalHeaderExtraFieldDataLen, 0x0001); -*/ - -#ifdef __cplusplus -} -#endif - -#endif /* _zip64_H */ diff --git a/platform/win32/msvc/external/zlib/contrib/pascal/example.pas b/platform/win32/msvc/external/zlib/contrib/pascal/example.pas deleted file mode 100644 index 5518b36a730..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/pascal/example.pas +++ /dev/null @@ -1,599 +0,0 @@ -(* example.c -- usage example of the zlib compression library - * Copyright (C) 1995-2003 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - * - * Pascal translation - * Copyright (C) 1998 by Jacques Nomssi Nzali. - * For conditions of distribution and use, see copyright notice in readme.txt - * - * Adaptation to the zlibpas interface - * Copyright (C) 2003 by Cosmin Truta. - * For conditions of distribution and use, see copyright notice in readme.txt - *) - -program example; - -{$DEFINE TEST_COMPRESS} -{DO NOT $DEFINE TEST_GZIO} -{$DEFINE TEST_DEFLATE} -{$DEFINE TEST_INFLATE} -{$DEFINE TEST_FLUSH} -{$DEFINE TEST_SYNC} -{$DEFINE TEST_DICT} - -uses SysUtils, zlibpas; - -const TESTFILE = 'foo.gz'; - -(* "hello world" would be more standard, but the repeated "hello" - * stresses the compression code better, sorry... - *) -const hello: PChar = 'hello, hello!'; - -const dictionary: PChar = 'hello'; - -var dictId: LongInt; (* Adler32 value of the dictionary *) - -procedure CHECK_ERR(err: Integer; msg: String); -begin - if err <> Z_OK then - begin - WriteLn(msg, ' error: ', err); - Halt(1); - end; -end; - -procedure EXIT_ERR(const msg: String); -begin - WriteLn('Error: ', msg); - Halt(1); -end; - -(* =========================================================================== - * Test compress and uncompress - *) -{$IFDEF TEST_COMPRESS} -procedure test_compress(compr: Pointer; comprLen: LongInt; - uncompr: Pointer; uncomprLen: LongInt); -var err: Integer; - len: LongInt; -begin - len := StrLen(hello)+1; - - err := compress(compr, comprLen, hello, len); - CHECK_ERR(err, 'compress'); - - StrCopy(PChar(uncompr), 'garbage'); - - err := uncompress(uncompr, uncomprLen, compr, comprLen); - CHECK_ERR(err, 'uncompress'); - - if StrComp(PChar(uncompr), hello) <> 0 then - EXIT_ERR('bad uncompress') - else - WriteLn('uncompress(): ', PChar(uncompr)); -end; -{$ENDIF} - -(* =========================================================================== - * Test read/write of .gz files - *) -{$IFDEF TEST_GZIO} -procedure test_gzio(const fname: PChar; (* compressed file name *) - uncompr: Pointer; - uncomprLen: LongInt); -var err: Integer; - len: Integer; - zfile: gzFile; - pos: LongInt; -begin - len := StrLen(hello)+1; - - zfile := gzopen(fname, 'wb'); - if zfile = NIL then - begin - WriteLn('gzopen error'); - Halt(1); - end; - gzputc(zfile, 'h'); - if gzputs(zfile, 'ello') <> 4 then - begin - WriteLn('gzputs err: ', gzerror(zfile, err)); - Halt(1); - end; - {$IFDEF GZ_FORMAT_STRING} - if gzprintf(zfile, ', %s!', 'hello') <> 8 then - begin - WriteLn('gzprintf err: ', gzerror(zfile, err)); - Halt(1); - end; - {$ELSE} - if gzputs(zfile, ', hello!') <> 8 then - begin - WriteLn('gzputs err: ', gzerror(zfile, err)); - Halt(1); - end; - {$ENDIF} - gzseek(zfile, 1, SEEK_CUR); (* add one zero byte *) - gzclose(zfile); - - zfile := gzopen(fname, 'rb'); - if zfile = NIL then - begin - WriteLn('gzopen error'); - Halt(1); - end; - - StrCopy(PChar(uncompr), 'garbage'); - - if gzread(zfile, uncompr, uncomprLen) <> len then - begin - WriteLn('gzread err: ', gzerror(zfile, err)); - Halt(1); - end; - if StrComp(PChar(uncompr), hello) <> 0 then - begin - WriteLn('bad gzread: ', PChar(uncompr)); - Halt(1); - end - else - WriteLn('gzread(): ', PChar(uncompr)); - - pos := gzseek(zfile, -8, SEEK_CUR); - if (pos <> 6) or (gztell(zfile) <> pos) then - begin - WriteLn('gzseek error, pos=', pos, ', gztell=', gztell(zfile)); - Halt(1); - end; - - if gzgetc(zfile) <> ' ' then - begin - WriteLn('gzgetc error'); - Halt(1); - end; - - if gzungetc(' ', zfile) <> ' ' then - begin - WriteLn('gzungetc error'); - Halt(1); - end; - - gzgets(zfile, PChar(uncompr), uncomprLen); - uncomprLen := StrLen(PChar(uncompr)); - if uncomprLen <> 7 then (* " hello!" *) - begin - WriteLn('gzgets err after gzseek: ', gzerror(zfile, err)); - Halt(1); - end; - if StrComp(PChar(uncompr), hello + 6) <> 0 then - begin - WriteLn('bad gzgets after gzseek'); - Halt(1); - end - else - WriteLn('gzgets() after gzseek: ', PChar(uncompr)); - - gzclose(zfile); -end; -{$ENDIF} - -(* =========================================================================== - * Test deflate with small buffers - *) -{$IFDEF TEST_DEFLATE} -procedure test_deflate(compr: Pointer; comprLen: LongInt); -var c_stream: z_stream; (* compression stream *) - err: Integer; - len: LongInt; -begin - len := StrLen(hello)+1; - - c_stream.zalloc := NIL; - c_stream.zfree := NIL; - c_stream.opaque := NIL; - - err := deflateInit(c_stream, Z_DEFAULT_COMPRESSION); - CHECK_ERR(err, 'deflateInit'); - - c_stream.next_in := hello; - c_stream.next_out := compr; - - while (c_stream.total_in <> len) and - (c_stream.total_out < comprLen) do - begin - c_stream.avail_out := 1; { force small buffers } - c_stream.avail_in := 1; - err := deflate(c_stream, Z_NO_FLUSH); - CHECK_ERR(err, 'deflate'); - end; - - (* Finish the stream, still forcing small buffers: *) - while TRUE do - begin - c_stream.avail_out := 1; - err := deflate(c_stream, Z_FINISH); - if err = Z_STREAM_END then - break; - CHECK_ERR(err, 'deflate'); - end; - - err := deflateEnd(c_stream); - CHECK_ERR(err, 'deflateEnd'); -end; -{$ENDIF} - -(* =========================================================================== - * Test inflate with small buffers - *) -{$IFDEF TEST_INFLATE} -procedure test_inflate(compr: Pointer; comprLen : LongInt; - uncompr: Pointer; uncomprLen : LongInt); -var err: Integer; - d_stream: z_stream; (* decompression stream *) -begin - StrCopy(PChar(uncompr), 'garbage'); - - d_stream.zalloc := NIL; - d_stream.zfree := NIL; - d_stream.opaque := NIL; - - d_stream.next_in := compr; - d_stream.avail_in := 0; - d_stream.next_out := uncompr; - - err := inflateInit(d_stream); - CHECK_ERR(err, 'inflateInit'); - - while (d_stream.total_out < uncomprLen) and - (d_stream.total_in < comprLen) do - begin - d_stream.avail_out := 1; (* force small buffers *) - d_stream.avail_in := 1; - err := inflate(d_stream, Z_NO_FLUSH); - if err = Z_STREAM_END then - break; - CHECK_ERR(err, 'inflate'); - end; - - err := inflateEnd(d_stream); - CHECK_ERR(err, 'inflateEnd'); - - if StrComp(PChar(uncompr), hello) <> 0 then - EXIT_ERR('bad inflate') - else - WriteLn('inflate(): ', PChar(uncompr)); -end; -{$ENDIF} - -(* =========================================================================== - * Test deflate with large buffers and dynamic change of compression level - *) -{$IFDEF TEST_DEFLATE} -procedure test_large_deflate(compr: Pointer; comprLen: LongInt; - uncompr: Pointer; uncomprLen: LongInt); -var c_stream: z_stream; (* compression stream *) - err: Integer; -begin - c_stream.zalloc := NIL; - c_stream.zfree := NIL; - c_stream.opaque := NIL; - - err := deflateInit(c_stream, Z_BEST_SPEED); - CHECK_ERR(err, 'deflateInit'); - - c_stream.next_out := compr; - c_stream.avail_out := Integer(comprLen); - - (* At this point, uncompr is still mostly zeroes, so it should compress - * very well: - *) - c_stream.next_in := uncompr; - c_stream.avail_in := Integer(uncomprLen); - err := deflate(c_stream, Z_NO_FLUSH); - CHECK_ERR(err, 'deflate'); - if c_stream.avail_in <> 0 then - EXIT_ERR('deflate not greedy'); - - (* Feed in already compressed data and switch to no compression: *) - deflateParams(c_stream, Z_NO_COMPRESSION, Z_DEFAULT_STRATEGY); - c_stream.next_in := compr; - c_stream.avail_in := Integer(comprLen div 2); - err := deflate(c_stream, Z_NO_FLUSH); - CHECK_ERR(err, 'deflate'); - - (* Switch back to compressing mode: *) - deflateParams(c_stream, Z_BEST_COMPRESSION, Z_FILTERED); - c_stream.next_in := uncompr; - c_stream.avail_in := Integer(uncomprLen); - err := deflate(c_stream, Z_NO_FLUSH); - CHECK_ERR(err, 'deflate'); - - err := deflate(c_stream, Z_FINISH); - if err <> Z_STREAM_END then - EXIT_ERR('deflate should report Z_STREAM_END'); - - err := deflateEnd(c_stream); - CHECK_ERR(err, 'deflateEnd'); -end; -{$ENDIF} - -(* =========================================================================== - * Test inflate with large buffers - *) -{$IFDEF TEST_INFLATE} -procedure test_large_inflate(compr: Pointer; comprLen: LongInt; - uncompr: Pointer; uncomprLen: LongInt); -var err: Integer; - d_stream: z_stream; (* decompression stream *) -begin - StrCopy(PChar(uncompr), 'garbage'); - - d_stream.zalloc := NIL; - d_stream.zfree := NIL; - d_stream.opaque := NIL; - - d_stream.next_in := compr; - d_stream.avail_in := Integer(comprLen); - - err := inflateInit(d_stream); - CHECK_ERR(err, 'inflateInit'); - - while TRUE do - begin - d_stream.next_out := uncompr; (* discard the output *) - d_stream.avail_out := Integer(uncomprLen); - err := inflate(d_stream, Z_NO_FLUSH); - if err = Z_STREAM_END then - break; - CHECK_ERR(err, 'large inflate'); - end; - - err := inflateEnd(d_stream); - CHECK_ERR(err, 'inflateEnd'); - - if d_stream.total_out <> 2 * uncomprLen + comprLen div 2 then - begin - WriteLn('bad large inflate: ', d_stream.total_out); - Halt(1); - end - else - WriteLn('large_inflate(): OK'); -end; -{$ENDIF} - -(* =========================================================================== - * Test deflate with full flush - *) -{$IFDEF TEST_FLUSH} -procedure test_flush(compr: Pointer; var comprLen : LongInt); -var c_stream: z_stream; (* compression stream *) - err: Integer; - len: Integer; -begin - len := StrLen(hello)+1; - - c_stream.zalloc := NIL; - c_stream.zfree := NIL; - c_stream.opaque := NIL; - - err := deflateInit(c_stream, Z_DEFAULT_COMPRESSION); - CHECK_ERR(err, 'deflateInit'); - - c_stream.next_in := hello; - c_stream.next_out := compr; - c_stream.avail_in := 3; - c_stream.avail_out := Integer(comprLen); - err := deflate(c_stream, Z_FULL_FLUSH); - CHECK_ERR(err, 'deflate'); - - Inc(PByteArray(compr)^[3]); (* force an error in first compressed block *) - c_stream.avail_in := len - 3; - - err := deflate(c_stream, Z_FINISH); - if err <> Z_STREAM_END then - CHECK_ERR(err, 'deflate'); - - err := deflateEnd(c_stream); - CHECK_ERR(err, 'deflateEnd'); - - comprLen := c_stream.total_out; -end; -{$ENDIF} - -(* =========================================================================== - * Test inflateSync() - *) -{$IFDEF TEST_SYNC} -procedure test_sync(compr: Pointer; comprLen: LongInt; - uncompr: Pointer; uncomprLen : LongInt); -var err: Integer; - d_stream: z_stream; (* decompression stream *) -begin - StrCopy(PChar(uncompr), 'garbage'); - - d_stream.zalloc := NIL; - d_stream.zfree := NIL; - d_stream.opaque := NIL; - - d_stream.next_in := compr; - d_stream.avail_in := 2; (* just read the zlib header *) - - err := inflateInit(d_stream); - CHECK_ERR(err, 'inflateInit'); - - d_stream.next_out := uncompr; - d_stream.avail_out := Integer(uncomprLen); - - inflate(d_stream, Z_NO_FLUSH); - CHECK_ERR(err, 'inflate'); - - d_stream.avail_in := Integer(comprLen-2); (* read all compressed data *) - err := inflateSync(d_stream); (* but skip the damaged part *) - CHECK_ERR(err, 'inflateSync'); - - err := inflate(d_stream, Z_FINISH); - if err <> Z_DATA_ERROR then - EXIT_ERR('inflate should report DATA_ERROR'); - (* Because of incorrect adler32 *) - - err := inflateEnd(d_stream); - CHECK_ERR(err, 'inflateEnd'); - - WriteLn('after inflateSync(): hel', PChar(uncompr)); -end; -{$ENDIF} - -(* =========================================================================== - * Test deflate with preset dictionary - *) -{$IFDEF TEST_DICT} -procedure test_dict_deflate(compr: Pointer; comprLen: LongInt); -var c_stream: z_stream; (* compression stream *) - err: Integer; -begin - c_stream.zalloc := NIL; - c_stream.zfree := NIL; - c_stream.opaque := NIL; - - err := deflateInit(c_stream, Z_BEST_COMPRESSION); - CHECK_ERR(err, 'deflateInit'); - - err := deflateSetDictionary(c_stream, dictionary, StrLen(dictionary)); - CHECK_ERR(err, 'deflateSetDictionary'); - - dictId := c_stream.adler; - c_stream.next_out := compr; - c_stream.avail_out := Integer(comprLen); - - c_stream.next_in := hello; - c_stream.avail_in := StrLen(hello)+1; - - err := deflate(c_stream, Z_FINISH); - if err <> Z_STREAM_END then - EXIT_ERR('deflate should report Z_STREAM_END'); - - err := deflateEnd(c_stream); - CHECK_ERR(err, 'deflateEnd'); -end; -{$ENDIF} - -(* =========================================================================== - * Test inflate with a preset dictionary - *) -{$IFDEF TEST_DICT} -procedure test_dict_inflate(compr: Pointer; comprLen: LongInt; - uncompr: Pointer; uncomprLen: LongInt); -var err: Integer; - d_stream: z_stream; (* decompression stream *) -begin - StrCopy(PChar(uncompr), 'garbage'); - - d_stream.zalloc := NIL; - d_stream.zfree := NIL; - d_stream.opaque := NIL; - - d_stream.next_in := compr; - d_stream.avail_in := Integer(comprLen); - - err := inflateInit(d_stream); - CHECK_ERR(err, 'inflateInit'); - - d_stream.next_out := uncompr; - d_stream.avail_out := Integer(uncomprLen); - - while TRUE do - begin - err := inflate(d_stream, Z_NO_FLUSH); - if err = Z_STREAM_END then - break; - if err = Z_NEED_DICT then - begin - if d_stream.adler <> dictId then - EXIT_ERR('unexpected dictionary'); - err := inflateSetDictionary(d_stream, dictionary, StrLen(dictionary)); - end; - CHECK_ERR(err, 'inflate with dict'); - end; - - err := inflateEnd(d_stream); - CHECK_ERR(err, 'inflateEnd'); - - if StrComp(PChar(uncompr), hello) <> 0 then - EXIT_ERR('bad inflate with dict') - else - WriteLn('inflate with dictionary: ', PChar(uncompr)); -end; -{$ENDIF} - -var compr, uncompr: Pointer; - comprLen, uncomprLen: LongInt; - -begin - if zlibVersion^ <> ZLIB_VERSION[1] then - EXIT_ERR('Incompatible zlib version'); - - WriteLn('zlib version: ', zlibVersion); - WriteLn('zlib compile flags: ', Format('0x%x', [zlibCompileFlags])); - - comprLen := 10000 * SizeOf(Integer); (* don't overflow on MSDOS *) - uncomprLen := comprLen; - GetMem(compr, comprLen); - GetMem(uncompr, uncomprLen); - if (compr = NIL) or (uncompr = NIL) then - EXIT_ERR('Out of memory'); - (* compr and uncompr are cleared to avoid reading uninitialized - * data and to ensure that uncompr compresses well. - *) - FillChar(compr^, comprLen, 0); - FillChar(uncompr^, uncomprLen, 0); - - {$IFDEF TEST_COMPRESS} - WriteLn('** Testing compress'); - test_compress(compr, comprLen, uncompr, uncomprLen); - {$ENDIF} - - {$IFDEF TEST_GZIO} - WriteLn('** Testing gzio'); - if ParamCount >= 1 then - test_gzio(ParamStr(1), uncompr, uncomprLen) - else - test_gzio(TESTFILE, uncompr, uncomprLen); - {$ENDIF} - - {$IFDEF TEST_DEFLATE} - WriteLn('** Testing deflate with small buffers'); - test_deflate(compr, comprLen); - {$ENDIF} - {$IFDEF TEST_INFLATE} - WriteLn('** Testing inflate with small buffers'); - test_inflate(compr, comprLen, uncompr, uncomprLen); - {$ENDIF} - - {$IFDEF TEST_DEFLATE} - WriteLn('** Testing deflate with large buffers'); - test_large_deflate(compr, comprLen, uncompr, uncomprLen); - {$ENDIF} - {$IFDEF TEST_INFLATE} - WriteLn('** Testing inflate with large buffers'); - test_large_inflate(compr, comprLen, uncompr, uncomprLen); - {$ENDIF} - - {$IFDEF TEST_FLUSH} - WriteLn('** Testing deflate with full flush'); - test_flush(compr, comprLen); - {$ENDIF} - {$IFDEF TEST_SYNC} - WriteLn('** Testing inflateSync'); - test_sync(compr, comprLen, uncompr, uncomprLen); - {$ENDIF} - comprLen := uncomprLen; - - {$IFDEF TEST_DICT} - WriteLn('** Testing deflate and inflate with preset dictionary'); - test_dict_deflate(compr, comprLen); - test_dict_inflate(compr, comprLen, uncompr, uncomprLen); - {$ENDIF} - - FreeMem(compr, comprLen); - FreeMem(uncompr, uncomprLen); -end. diff --git a/platform/win32/msvc/external/zlib/contrib/pascal/readme.txt b/platform/win32/msvc/external/zlib/contrib/pascal/readme.txt deleted file mode 100644 index 60e87c8a331..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/pascal/readme.txt +++ /dev/null @@ -1,76 +0,0 @@ - -This directory contains a Pascal (Delphi, Kylix) interface to the -zlib data compression library. - - -Directory listing -================= - -zlibd32.mak makefile for Borland C++ -example.pas usage example of zlib -zlibpas.pas the Pascal interface to zlib -readme.txt this file - - -Compatibility notes -=================== - -- Although the name "zlib" would have been more normal for the - zlibpas unit, this name is already taken by Borland's ZLib unit. - This is somehow unfortunate, because that unit is not a genuine - interface to the full-fledged zlib functionality, but a suite of - class wrappers around zlib streams. Other essential features, - such as checksums, are missing. - It would have been more appropriate for that unit to have a name - like "ZStreams", or something similar. - -- The C and zlib-supplied types int, uInt, long, uLong, etc. are - translated directly into Pascal types of similar sizes (Integer, - LongInt, etc.), to avoid namespace pollution. In particular, - there is no conversion of unsigned int into a Pascal unsigned - integer. The Word type is non-portable and has the same size - (16 bits) both in a 16-bit and in a 32-bit environment, unlike - Integer. Even if there is a 32-bit Cardinal type, there is no - real need for unsigned int in zlib under a 32-bit environment. - -- Except for the callbacks, the zlib function interfaces are - assuming the calling convention normally used in Pascal - (__pascal for DOS and Windows16, __fastcall for Windows32). - Since the cdecl keyword is used, the old Turbo Pascal does - not work with this interface. - -- The gz* function interfaces are not translated, to avoid - interfacing problems with the C runtime library. Besides, - gzprintf(gzFile file, const char *format, ...) - cannot be translated into Pascal. - - -Legal issues -============ - -The zlibpas interface is: - Copyright (C) 1995-2003 Jean-loup Gailly and Mark Adler. - Copyright (C) 1998 by Bob Dellaca. - Copyright (C) 2003 by Cosmin Truta. - -The example program is: - Copyright (C) 1995-2003 by Jean-loup Gailly. - Copyright (C) 1998,1999,2000 by Jacques Nomssi Nzali. - Copyright (C) 2003 by Cosmin Truta. - - This software is provided 'as-is', without any express or implied - warranty. In no event will the author be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - diff --git a/platform/win32/msvc/external/zlib/contrib/pascal/zlibd32.mak b/platform/win32/msvc/external/zlib/contrib/pascal/zlibd32.mak deleted file mode 100644 index 9bb00b7cc42..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/pascal/zlibd32.mak +++ /dev/null @@ -1,99 +0,0 @@ -# Makefile for zlib -# For use with Delphi and C++ Builder under Win32 -# Updated for zlib 1.2.x by Cosmin Truta - -# ------------ Borland C++ ------------ - -# This project uses the Delphi (fastcall/register) calling convention: -LOC = -DZEXPORT=__fastcall -DZEXPORTVA=__cdecl - -CC = bcc32 -LD = bcc32 -AR = tlib -# do not use "-pr" in CFLAGS -CFLAGS = -a -d -k- -O2 $(LOC) -LDFLAGS = - - -# variables -ZLIB_LIB = zlib.lib - -OBJ1 = adler32.obj compress.obj crc32.obj deflate.obj gzclose.obj gzlib.obj gzread.obj -OBJ2 = gzwrite.obj infback.obj inffast.obj inflate.obj inftrees.obj trees.obj uncompr.obj zutil.obj -OBJP1 = +adler32.obj+compress.obj+crc32.obj+deflate.obj+gzclose.obj+gzlib.obj+gzread.obj -OBJP2 = +gzwrite.obj+infback.obj+inffast.obj+inflate.obj+inftrees.obj+trees.obj+uncompr.obj+zutil.obj - - -# targets -all: $(ZLIB_LIB) example.exe minigzip.exe - -.c.obj: - $(CC) -c $(CFLAGS) $*.c - -adler32.obj: adler32.c zlib.h zconf.h - -compress.obj: compress.c zlib.h zconf.h - -crc32.obj: crc32.c zlib.h zconf.h crc32.h - -deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h - -gzclose.obj: gzclose.c zlib.h zconf.h gzguts.h - -gzlib.obj: gzlib.c zlib.h zconf.h gzguts.h - -gzread.obj: gzread.c zlib.h zconf.h gzguts.h - -gzwrite.obj: gzwrite.c zlib.h zconf.h gzguts.h - -infback.obj: infback.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h inffixed.h - -inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h - -inflate.obj: inflate.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h inffixed.h - -inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h - -trees.obj: trees.c zutil.h zlib.h zconf.h deflate.h trees.h - -uncompr.obj: uncompr.c zlib.h zconf.h - -zutil.obj: zutil.c zutil.h zlib.h zconf.h - -example.obj: test/example.c zlib.h zconf.h - -minigzip.obj: test/minigzip.c zlib.h zconf.h - - -# For the sake of the old Borland make, -# the command line is cut to fit in the MS-DOS 128 byte limit: -$(ZLIB_LIB): $(OBJ1) $(OBJ2) - -del $(ZLIB_LIB) - $(AR) $(ZLIB_LIB) $(OBJP1) - $(AR) $(ZLIB_LIB) $(OBJP2) - - -# testing -test: example.exe minigzip.exe - example - echo hello world | minigzip | minigzip -d - -example.exe: example.obj $(ZLIB_LIB) - $(LD) $(LDFLAGS) example.obj $(ZLIB_LIB) - -minigzip.exe: minigzip.obj $(ZLIB_LIB) - $(LD) $(LDFLAGS) minigzip.obj $(ZLIB_LIB) - - -# cleanup -clean: - -del *.obj - -del *.exe - -del *.lib - -del *.tds - -del zlib.bak - -del foo.gz - diff --git a/platform/win32/msvc/external/zlib/contrib/pascal/zlibpas.pas b/platform/win32/msvc/external/zlib/contrib/pascal/zlibpas.pas deleted file mode 100644 index e6a0782b48c..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/pascal/zlibpas.pas +++ /dev/null @@ -1,276 +0,0 @@ -(* zlibpas -- Pascal interface to the zlib data compression library - * - * Copyright (C) 2003 Cosmin Truta. - * Derived from original sources by Bob Dellaca. - * For conditions of distribution and use, see copyright notice in readme.txt - *) - -unit zlibpas; - -interface - -const - ZLIB_VERSION = '1.2.8'; - ZLIB_VERNUM = $1280; - -type - alloc_func = function(opaque: Pointer; items, size: Integer): Pointer; - cdecl; - free_func = procedure(opaque, address: Pointer); - cdecl; - - in_func = function(opaque: Pointer; var buf: PByte): Integer; - cdecl; - out_func = function(opaque: Pointer; buf: PByte; size: Integer): Integer; - cdecl; - - z_streamp = ^z_stream; - z_stream = packed record - next_in: PChar; (* next input byte *) - avail_in: Integer; (* number of bytes available at next_in *) - total_in: LongInt; (* total nb of input bytes read so far *) - - next_out: PChar; (* next output byte should be put there *) - avail_out: Integer; (* remaining free space at next_out *) - total_out: LongInt; (* total nb of bytes output so far *) - - msg: PChar; (* last error message, NULL if no error *) - state: Pointer; (* not visible by applications *) - - zalloc: alloc_func; (* used to allocate the internal state *) - zfree: free_func; (* used to free the internal state *) - opaque: Pointer; (* private data object passed to zalloc and zfree *) - - data_type: Integer; (* best guess about the data type: ascii or binary *) - adler: LongInt; (* adler32 value of the uncompressed data *) - reserved: LongInt; (* reserved for future use *) - end; - - gz_headerp = ^gz_header; - gz_header = packed record - text: Integer; (* true if compressed data believed to be text *) - time: LongInt; (* modification time *) - xflags: Integer; (* extra flags (not used when writing a gzip file) *) - os: Integer; (* operating system *) - extra: PChar; (* pointer to extra field or Z_NULL if none *) - extra_len: Integer; (* extra field length (valid if extra != Z_NULL) *) - extra_max: Integer; (* space at extra (only when reading header) *) - name: PChar; (* pointer to zero-terminated file name or Z_NULL *) - name_max: Integer; (* space at name (only when reading header) *) - comment: PChar; (* pointer to zero-terminated comment or Z_NULL *) - comm_max: Integer; (* space at comment (only when reading header) *) - hcrc: Integer; (* true if there was or will be a header crc *) - done: Integer; (* true when done reading gzip header *) - end; - -(* constants *) -const - Z_NO_FLUSH = 0; - Z_PARTIAL_FLUSH = 1; - Z_SYNC_FLUSH = 2; - Z_FULL_FLUSH = 3; - Z_FINISH = 4; - Z_BLOCK = 5; - Z_TREES = 6; - - Z_OK = 0; - Z_STREAM_END = 1; - Z_NEED_DICT = 2; - Z_ERRNO = -1; - Z_STREAM_ERROR = -2; - Z_DATA_ERROR = -3; - Z_MEM_ERROR = -4; - Z_BUF_ERROR = -5; - Z_VERSION_ERROR = -6; - - Z_NO_COMPRESSION = 0; - Z_BEST_SPEED = 1; - Z_BEST_COMPRESSION = 9; - Z_DEFAULT_COMPRESSION = -1; - - Z_FILTERED = 1; - Z_HUFFMAN_ONLY = 2; - Z_RLE = 3; - Z_FIXED = 4; - Z_DEFAULT_STRATEGY = 0; - - Z_BINARY = 0; - Z_TEXT = 1; - Z_ASCII = 1; - Z_UNKNOWN = 2; - - Z_DEFLATED = 8; - -(* basic functions *) -function zlibVersion: PChar; -function deflateInit(var strm: z_stream; level: Integer): Integer; -function deflate(var strm: z_stream; flush: Integer): Integer; -function deflateEnd(var strm: z_stream): Integer; -function inflateInit(var strm: z_stream): Integer; -function inflate(var strm: z_stream; flush: Integer): Integer; -function inflateEnd(var strm: z_stream): Integer; - -(* advanced functions *) -function deflateInit2(var strm: z_stream; level, method, windowBits, - memLevel, strategy: Integer): Integer; -function deflateSetDictionary(var strm: z_stream; const dictionary: PChar; - dictLength: Integer): Integer; -function deflateCopy(var dest, source: z_stream): Integer; -function deflateReset(var strm: z_stream): Integer; -function deflateParams(var strm: z_stream; level, strategy: Integer): Integer; -function deflateTune(var strm: z_stream; good_length, max_lazy, nice_length, max_chain: Integer): Integer; -function deflateBound(var strm: z_stream; sourceLen: LongInt): LongInt; -function deflatePending(var strm: z_stream; var pending: Integer; var bits: Integer): Integer; -function deflatePrime(var strm: z_stream; bits, value: Integer): Integer; -function deflateSetHeader(var strm: z_stream; head: gz_header): Integer; -function inflateInit2(var strm: z_stream; windowBits: Integer): Integer; -function inflateSetDictionary(var strm: z_stream; const dictionary: PChar; - dictLength: Integer): Integer; -function inflateSync(var strm: z_stream): Integer; -function inflateCopy(var dest, source: z_stream): Integer; -function inflateReset(var strm: z_stream): Integer; -function inflateReset2(var strm: z_stream; windowBits: Integer): Integer; -function inflatePrime(var strm: z_stream; bits, value: Integer): Integer; -function inflateMark(var strm: z_stream): LongInt; -function inflateGetHeader(var strm: z_stream; var head: gz_header): Integer; -function inflateBackInit(var strm: z_stream; - windowBits: Integer; window: PChar): Integer; -function inflateBack(var strm: z_stream; in_fn: in_func; in_desc: Pointer; - out_fn: out_func; out_desc: Pointer): Integer; -function inflateBackEnd(var strm: z_stream): Integer; -function zlibCompileFlags: LongInt; - -(* utility functions *) -function compress(dest: PChar; var destLen: LongInt; - const source: PChar; sourceLen: LongInt): Integer; -function compress2(dest: PChar; var destLen: LongInt; - const source: PChar; sourceLen: LongInt; - level: Integer): Integer; -function compressBound(sourceLen: LongInt): LongInt; -function uncompress(dest: PChar; var destLen: LongInt; - const source: PChar; sourceLen: LongInt): Integer; - -(* checksum functions *) -function adler32(adler: LongInt; const buf: PChar; len: Integer): LongInt; -function adler32_combine(adler1, adler2, len2: LongInt): LongInt; -function crc32(crc: LongInt; const buf: PChar; len: Integer): LongInt; -function crc32_combine(crc1, crc2, len2: LongInt): LongInt; - -(* various hacks, don't look :) *) -function deflateInit_(var strm: z_stream; level: Integer; - const version: PChar; stream_size: Integer): Integer; -function inflateInit_(var strm: z_stream; const version: PChar; - stream_size: Integer): Integer; -function deflateInit2_(var strm: z_stream; - level, method, windowBits, memLevel, strategy: Integer; - const version: PChar; stream_size: Integer): Integer; -function inflateInit2_(var strm: z_stream; windowBits: Integer; - const version: PChar; stream_size: Integer): Integer; -function inflateBackInit_(var strm: z_stream; - windowBits: Integer; window: PChar; - const version: PChar; stream_size: Integer): Integer; - - -implementation - -{$L adler32.obj} -{$L compress.obj} -{$L crc32.obj} -{$L deflate.obj} -{$L infback.obj} -{$L inffast.obj} -{$L inflate.obj} -{$L inftrees.obj} -{$L trees.obj} -{$L uncompr.obj} -{$L zutil.obj} - -function adler32; external; -function adler32_combine; external; -function compress; external; -function compress2; external; -function compressBound; external; -function crc32; external; -function crc32_combine; external; -function deflate; external; -function deflateBound; external; -function deflateCopy; external; -function deflateEnd; external; -function deflateInit_; external; -function deflateInit2_; external; -function deflateParams; external; -function deflatePending; external; -function deflatePrime; external; -function deflateReset; external; -function deflateSetDictionary; external; -function deflateSetHeader; external; -function deflateTune; external; -function inflate; external; -function inflateBack; external; -function inflateBackEnd; external; -function inflateBackInit_; external; -function inflateCopy; external; -function inflateEnd; external; -function inflateGetHeader; external; -function inflateInit_; external; -function inflateInit2_; external; -function inflateMark; external; -function inflatePrime; external; -function inflateReset; external; -function inflateReset2; external; -function inflateSetDictionary; external; -function inflateSync; external; -function uncompress; external; -function zlibCompileFlags; external; -function zlibVersion; external; - -function deflateInit(var strm: z_stream; level: Integer): Integer; -begin - Result := deflateInit_(strm, level, ZLIB_VERSION, sizeof(z_stream)); -end; - -function deflateInit2(var strm: z_stream; level, method, windowBits, memLevel, - strategy: Integer): Integer; -begin - Result := deflateInit2_(strm, level, method, windowBits, memLevel, strategy, - ZLIB_VERSION, sizeof(z_stream)); -end; - -function inflateInit(var strm: z_stream): Integer; -begin - Result := inflateInit_(strm, ZLIB_VERSION, sizeof(z_stream)); -end; - -function inflateInit2(var strm: z_stream; windowBits: Integer): Integer; -begin - Result := inflateInit2_(strm, windowBits, ZLIB_VERSION, sizeof(z_stream)); -end; - -function inflateBackInit(var strm: z_stream; - windowBits: Integer; window: PChar): Integer; -begin - Result := inflateBackInit_(strm, windowBits, window, - ZLIB_VERSION, sizeof(z_stream)); -end; - -function _malloc(Size: Integer): Pointer; cdecl; -begin - GetMem(Result, Size); -end; - -procedure _free(Block: Pointer); cdecl; -begin - FreeMem(Block); -end; - -procedure _memset(P: Pointer; B: Byte; count: Integer); cdecl; -begin - FillChar(P^, count, B); -end; - -procedure _memcpy(dest, source: Pointer; count: Integer); cdecl; -begin - Move(source^, dest^, count); -end; - -end. diff --git a/platform/win32/msvc/external/zlib/contrib/puff/README b/platform/win32/msvc/external/zlib/contrib/puff/README deleted file mode 100644 index bbc4cb595ec..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/puff/README +++ /dev/null @@ -1,63 +0,0 @@ -Puff -- A Simple Inflate -3 Mar 2003 -Mark Adler -madler@alumni.caltech.edu - -What this is -- - -puff.c provides the routine puff() to decompress the deflate data format. It -does so more slowly than zlib, but the code is about one-fifth the size of the -inflate code in zlib, and written to be very easy to read. - -Why I wrote this -- - -puff.c was written to document the deflate format unambiguously, by virtue of -being working C code. It is meant to supplement RFC 1951, which formally -describes the deflate format. I have received many questions on details of the -deflate format, and I hope that reading this code will answer those questions. -puff.c is heavily commented with details of the deflate format, especially -those little nooks and cranies of the format that might not be obvious from a -specification. - -puff.c may also be useful in applications where code size or memory usage is a -very limited resource, and speed is not as important. - -How to use it -- - -Well, most likely you should just be reading puff.c and using zlib for actual -applications, but if you must ... - -Include puff.h in your code, which provides this prototype: - -int puff(unsigned char *dest, /* pointer to destination pointer */ - unsigned long *destlen, /* amount of output space */ - unsigned char *source, /* pointer to source data pointer */ - unsigned long *sourcelen); /* amount of input available */ - -Then you can call puff() to decompress a deflate stream that is in memory in -its entirety at source, to a sufficiently sized block of memory for the -decompressed data at dest. puff() is the only external symbol in puff.c The -only C library functions that puff.c needs are setjmp() and longjmp(), which -are used to simplify error checking in the code to improve readabilty. puff.c -does no memory allocation, and uses less than 2K bytes off of the stack. - -If destlen is not enough space for the uncompressed data, then inflate will -return an error without writing more than destlen bytes. Note that this means -that in order to decompress the deflate data successfully, you need to know -the size of the uncompressed data ahead of time. - -If needed, puff() can determine the size of the uncompressed data with no -output space. This is done by passing dest equal to (unsigned char *)0. Then -the initial value of *destlen is ignored and *destlen is set to the length of -the uncompressed data. So if the size of the uncompressed data is not known, -then two passes of puff() can be used--first to determine the size, and second -to do the actual inflation after allocating the appropriate memory. Not -pretty, but it works. (This is one of the reasons you should be using zlib.) - -The deflate format is self-terminating. If the deflate stream does not end -in *sourcelen bytes, puff() will return an error without reading at or past -endsource. - -On return, *sourcelen is updated to the amount of input data consumed, and -*destlen is updated to the size of the uncompressed data. See the comments -in puff.c for the possible return codes for puff(). diff --git a/platform/win32/msvc/external/zlib/contrib/puff/puff.c b/platform/win32/msvc/external/zlib/contrib/puff/puff.c deleted file mode 100644 index ba58483d570..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/puff/puff.c +++ /dev/null @@ -1,840 +0,0 @@ -/* - * puff.c - * Copyright (C) 2002-2013 Mark Adler - * For conditions of distribution and use, see copyright notice in puff.h - * version 2.3, 21 Jan 2013 - * - * puff.c is a simple inflate written to be an unambiguous way to specify the - * deflate format. It is not written for speed but rather simplicity. As a - * side benefit, this code might actually be useful when small code is more - * important than speed, such as bootstrap applications. For typical deflate - * data, zlib's inflate() is about four times as fast as puff(). zlib's - * inflate compiles to around 20K on my machine, whereas puff.c compiles to - * around 4K on my machine (a PowerPC using GNU cc). If the faster decode() - * function here is used, then puff() is only twice as slow as zlib's - * inflate(). - * - * All dynamically allocated memory comes from the stack. The stack required - * is less than 2K bytes. This code is compatible with 16-bit int's and - * assumes that long's are at least 32 bits. puff.c uses the short data type, - * assumed to be 16 bits, for arrays in order to to conserve memory. The code - * works whether integers are stored big endian or little endian. - * - * In the comments below are "Format notes" that describe the inflate process - * and document some of the less obvious aspects of the format. This source - * code is meant to supplement RFC 1951, which formally describes the deflate - * format: - * - * http://www.zlib.org/rfc-deflate.html - */ - -/* - * Change history: - * - * 1.0 10 Feb 2002 - First version - * 1.1 17 Feb 2002 - Clarifications of some comments and notes - * - Update puff() dest and source pointers on negative - * errors to facilitate debugging deflators - * - Remove longest from struct huffman -- not needed - * - Simplify offs[] index in construct() - * - Add input size and checking, using longjmp() to - * maintain easy readability - * - Use short data type for large arrays - * - Use pointers instead of long to specify source and - * destination sizes to avoid arbitrary 4 GB limits - * 1.2 17 Mar 2002 - Add faster version of decode(), doubles speed (!), - * but leave simple version for readabilty - * - Make sure invalid distances detected if pointers - * are 16 bits - * - Fix fixed codes table error - * - Provide a scanning mode for determining size of - * uncompressed data - * 1.3 20 Mar 2002 - Go back to lengths for puff() parameters [Gailly] - * - Add a puff.h file for the interface - * - Add braces in puff() for else do [Gailly] - * - Use indexes instead of pointers for readability - * 1.4 31 Mar 2002 - Simplify construct() code set check - * - Fix some comments - * - Add FIXLCODES #define - * 1.5 6 Apr 2002 - Minor comment fixes - * 1.6 7 Aug 2002 - Minor format changes - * 1.7 3 Mar 2003 - Added test code for distribution - * - Added zlib-like license - * 1.8 9 Jan 2004 - Added some comments on no distance codes case - * 1.9 21 Feb 2008 - Fix bug on 16-bit integer architectures [Pohland] - * - Catch missing end-of-block symbol error - * 2.0 25 Jul 2008 - Add #define to permit distance too far back - * - Add option in TEST code for puff to write the data - * - Add option in TEST code to skip input bytes - * - Allow TEST code to read from piped stdin - * 2.1 4 Apr 2010 - Avoid variable initialization for happier compilers - * - Avoid unsigned comparisons for even happier compilers - * 2.2 25 Apr 2010 - Fix bug in variable initializations [Oberhumer] - * - Add const where appropriate [Oberhumer] - * - Split if's and ?'s for coverage testing - * - Break out test code to separate file - * - Move NIL to puff.h - * - Allow incomplete code only if single code length is 1 - * - Add full code coverage test to Makefile - * 2.3 21 Jan 2013 - Check for invalid code length codes in dynamic blocks - */ - -#include <setjmp.h> /* for setjmp(), longjmp(), and jmp_buf */ -#include "puff.h" /* prototype for puff() */ - -#define local static /* for local function definitions */ - -/* - * Maximums for allocations and loops. It is not useful to change these -- - * they are fixed by the deflate format. - */ -#define MAXBITS 15 /* maximum bits in a code */ -#define MAXLCODES 286 /* maximum number of literal/length codes */ -#define MAXDCODES 30 /* maximum number of distance codes */ -#define MAXCODES (MAXLCODES+MAXDCODES) /* maximum codes lengths to read */ -#define FIXLCODES 288 /* number of fixed literal/length codes */ - -/* input and output state */ -struct state { - /* output state */ - unsigned char *out; /* output buffer */ - unsigned long outlen; /* available space at out */ - unsigned long outcnt; /* bytes written to out so far */ - - /* input state */ - const unsigned char *in; /* input buffer */ - unsigned long inlen; /* available input at in */ - unsigned long incnt; /* bytes read so far */ - int bitbuf; /* bit buffer */ - int bitcnt; /* number of bits in bit buffer */ - - /* input limit error return state for bits() and decode() */ - jmp_buf env; -}; - -/* - * Return need bits from the input stream. This always leaves less than - * eight bits in the buffer. bits() works properly for need == 0. - * - * Format notes: - * - * - Bits are stored in bytes from the least significant bit to the most - * significant bit. Therefore bits are dropped from the bottom of the bit - * buffer, using shift right, and new bytes are appended to the top of the - * bit buffer, using shift left. - */ -local int bits(struct state *s, int need) -{ - long val; /* bit accumulator (can use up to 20 bits) */ - - /* load at least need bits into val */ - val = s->bitbuf; - while (s->bitcnt < need) { - if (s->incnt == s->inlen) - longjmp(s->env, 1); /* out of input */ - val |= (long)(s->in[s->incnt++]) << s->bitcnt; /* load eight bits */ - s->bitcnt += 8; - } - - /* drop need bits and update buffer, always zero to seven bits left */ - s->bitbuf = (int)(val >> need); - s->bitcnt -= need; - - /* return need bits, zeroing the bits above that */ - return (int)(val & ((1L << need) - 1)); -} - -/* - * Process a stored block. - * - * Format notes: - * - * - After the two-bit stored block type (00), the stored block length and - * stored bytes are byte-aligned for fast copying. Therefore any leftover - * bits in the byte that has the last bit of the type, as many as seven, are - * discarded. The value of the discarded bits are not defined and should not - * be checked against any expectation. - * - * - The second inverted copy of the stored block length does not have to be - * checked, but it's probably a good idea to do so anyway. - * - * - A stored block can have zero length. This is sometimes used to byte-align - * subsets of the compressed data for random access or partial recovery. - */ -local int stored(struct state *s) -{ - unsigned len; /* length of stored block */ - - /* discard leftover bits from current byte (assumes s->bitcnt < 8) */ - s->bitbuf = 0; - s->bitcnt = 0; - - /* get length and check against its one's complement */ - if (s->incnt + 4 > s->inlen) - return 2; /* not enough input */ - len = s->in[s->incnt++]; - len |= s->in[s->incnt++] << 8; - if (s->in[s->incnt++] != (~len & 0xff) || - s->in[s->incnt++] != ((~len >> 8) & 0xff)) - return -2; /* didn't match complement! */ - - /* copy len bytes from in to out */ - if (s->incnt + len > s->inlen) - return 2; /* not enough input */ - if (s->out != NIL) { - if (s->outcnt + len > s->outlen) - return 1; /* not enough output space */ - while (len--) - s->out[s->outcnt++] = s->in[s->incnt++]; - } - else { /* just scanning */ - s->outcnt += len; - s->incnt += len; - } - - /* done with a valid stored block */ - return 0; -} - -/* - * Huffman code decoding tables. count[1..MAXBITS] is the number of symbols of - * each length, which for a canonical code are stepped through in order. - * symbol[] are the symbol values in canonical order, where the number of - * entries is the sum of the counts in count[]. The decoding process can be - * seen in the function decode() below. - */ -struct huffman { - short *count; /* number of symbols of each length */ - short *symbol; /* canonically ordered symbols */ -}; - -/* - * Decode a code from the stream s using huffman table h. Return the symbol or - * a negative value if there is an error. If all of the lengths are zero, i.e. - * an empty code, or if the code is incomplete and an invalid code is received, - * then -10 is returned after reading MAXBITS bits. - * - * Format notes: - * - * - The codes as stored in the compressed data are bit-reversed relative to - * a simple integer ordering of codes of the same lengths. Hence below the - * bits are pulled from the compressed data one at a time and used to - * build the code value reversed from what is in the stream in order to - * permit simple integer comparisons for decoding. A table-based decoding - * scheme (as used in zlib) does not need to do this reversal. - * - * - The first code for the shortest length is all zeros. Subsequent codes of - * the same length are simply integer increments of the previous code. When - * moving up a length, a zero bit is appended to the code. For a complete - * code, the last code of the longest length will be all ones. - * - * - Incomplete codes are handled by this decoder, since they are permitted - * in the deflate format. See the format notes for fixed() and dynamic(). - */ -#ifdef SLOW -local int decode(struct state *s, const struct huffman *h) -{ - int len; /* current number of bits in code */ - int code; /* len bits being decoded */ - int first; /* first code of length len */ - int count; /* number of codes of length len */ - int index; /* index of first code of length len in symbol table */ - - code = first = index = 0; - for (len = 1; len <= MAXBITS; len++) { - code |= bits(s, 1); /* get next bit */ - count = h->count[len]; - if (code - count < first) /* if length len, return symbol */ - return h->symbol[index + (code - first)]; - index += count; /* else update for next length */ - first += count; - first <<= 1; - code <<= 1; - } - return -10; /* ran out of codes */ -} - -/* - * A faster version of decode() for real applications of this code. It's not - * as readable, but it makes puff() twice as fast. And it only makes the code - * a few percent larger. - */ -#else /* !SLOW */ -local int decode(struct state *s, const struct huffman *h) -{ - int len; /* current number of bits in code */ - int code; /* len bits being decoded */ - int first; /* first code of length len */ - int count; /* number of codes of length len */ - int index; /* index of first code of length len in symbol table */ - int bitbuf; /* bits from stream */ - int left; /* bits left in next or left to process */ - short *next; /* next number of codes */ - - bitbuf = s->bitbuf; - left = s->bitcnt; - code = first = index = 0; - len = 1; - next = h->count + 1; - while (1) { - while (left--) { - code |= bitbuf & 1; - bitbuf >>= 1; - count = *next++; - if (code - count < first) { /* if length len, return symbol */ - s->bitbuf = bitbuf; - s->bitcnt = (s->bitcnt - len) & 7; - return h->symbol[index + (code - first)]; - } - index += count; /* else update for next length */ - first += count; - first <<= 1; - code <<= 1; - len++; - } - left = (MAXBITS+1) - len; - if (left == 0) - break; - if (s->incnt == s->inlen) - longjmp(s->env, 1); /* out of input */ - bitbuf = s->in[s->incnt++]; - if (left > 8) - left = 8; - } - return -10; /* ran out of codes */ -} -#endif /* SLOW */ - -/* - * Given the list of code lengths length[0..n-1] representing a canonical - * Huffman code for n symbols, construct the tables required to decode those - * codes. Those tables are the number of codes of each length, and the symbols - * sorted by length, retaining their original order within each length. The - * return value is zero for a complete code set, negative for an over- - * subscribed code set, and positive for an incomplete code set. The tables - * can be used if the return value is zero or positive, but they cannot be used - * if the return value is negative. If the return value is zero, it is not - * possible for decode() using that table to return an error--any stream of - * enough bits will resolve to a symbol. If the return value is positive, then - * it is possible for decode() using that table to return an error for received - * codes past the end of the incomplete lengths. - * - * Not used by decode(), but used for error checking, h->count[0] is the number - * of the n symbols not in the code. So n - h->count[0] is the number of - * codes. This is useful for checking for incomplete codes that have more than - * one symbol, which is an error in a dynamic block. - * - * Assumption: for all i in 0..n-1, 0 <= length[i] <= MAXBITS - * This is assured by the construction of the length arrays in dynamic() and - * fixed() and is not verified by construct(). - * - * Format notes: - * - * - Permitted and expected examples of incomplete codes are one of the fixed - * codes and any code with a single symbol which in deflate is coded as one - * bit instead of zero bits. See the format notes for fixed() and dynamic(). - * - * - Within a given code length, the symbols are kept in ascending order for - * the code bits definition. - */ -local int construct(struct huffman *h, const short *length, int n) -{ - int symbol; /* current symbol when stepping through length[] */ - int len; /* current length when stepping through h->count[] */ - int left; /* number of possible codes left of current length */ - short offs[MAXBITS+1]; /* offsets in symbol table for each length */ - - /* count number of codes of each length */ - for (len = 0; len <= MAXBITS; len++) - h->count[len] = 0; - for (symbol = 0; symbol < n; symbol++) - (h->count[length[symbol]])++; /* assumes lengths are within bounds */ - if (h->count[0] == n) /* no codes! */ - return 0; /* complete, but decode() will fail */ - - /* check for an over-subscribed or incomplete set of lengths */ - left = 1; /* one possible code of zero length */ - for (len = 1; len <= MAXBITS; len++) { - left <<= 1; /* one more bit, double codes left */ - left -= h->count[len]; /* deduct count from possible codes */ - if (left < 0) - return left; /* over-subscribed--return negative */ - } /* left > 0 means incomplete */ - - /* generate offsets into symbol table for each length for sorting */ - offs[1] = 0; - for (len = 1; len < MAXBITS; len++) - offs[len + 1] = offs[len] + h->count[len]; - - /* - * put symbols in table sorted by length, by symbol order within each - * length - */ - for (symbol = 0; symbol < n; symbol++) - if (length[symbol] != 0) - h->symbol[offs[length[symbol]]++] = symbol; - - /* return zero for complete set, positive for incomplete set */ - return left; -} - -/* - * Decode literal/length and distance codes until an end-of-block code. - * - * Format notes: - * - * - Compressed data that is after the block type if fixed or after the code - * description if dynamic is a combination of literals and length/distance - * pairs terminated by and end-of-block code. Literals are simply Huffman - * coded bytes. A length/distance pair is a coded length followed by a - * coded distance to represent a string that occurs earlier in the - * uncompressed data that occurs again at the current location. - * - * - Literals, lengths, and the end-of-block code are combined into a single - * code of up to 286 symbols. They are 256 literals (0..255), 29 length - * symbols (257..285), and the end-of-block symbol (256). - * - * - There are 256 possible lengths (3..258), and so 29 symbols are not enough - * to represent all of those. Lengths 3..10 and 258 are in fact represented - * by just a length symbol. Lengths 11..257 are represented as a symbol and - * some number of extra bits that are added as an integer to the base length - * of the length symbol. The number of extra bits is determined by the base - * length symbol. These are in the static arrays below, lens[] for the base - * lengths and lext[] for the corresponding number of extra bits. - * - * - The reason that 258 gets its own symbol is that the longest length is used - * often in highly redundant files. Note that 258 can also be coded as the - * base value 227 plus the maximum extra value of 31. While a good deflate - * should never do this, it is not an error, and should be decoded properly. - * - * - If a length is decoded, including its extra bits if any, then it is - * followed a distance code. There are up to 30 distance symbols. Again - * there are many more possible distances (1..32768), so extra bits are added - * to a base value represented by the symbol. The distances 1..4 get their - * own symbol, but the rest require extra bits. The base distances and - * corresponding number of extra bits are below in the static arrays dist[] - * and dext[]. - * - * - Literal bytes are simply written to the output. A length/distance pair is - * an instruction to copy previously uncompressed bytes to the output. The - * copy is from distance bytes back in the output stream, copying for length - * bytes. - * - * - Distances pointing before the beginning of the output data are not - * permitted. - * - * - Overlapped copies, where the length is greater than the distance, are - * allowed and common. For example, a distance of one and a length of 258 - * simply copies the last byte 258 times. A distance of four and a length of - * twelve copies the last four bytes three times. A simple forward copy - * ignoring whether the length is greater than the distance or not implements - * this correctly. You should not use memcpy() since its behavior is not - * defined for overlapped arrays. You should not use memmove() or bcopy() - * since though their behavior -is- defined for overlapping arrays, it is - * defined to do the wrong thing in this case. - */ -local int codes(struct state *s, - const struct huffman *lencode, - const struct huffman *distcode) -{ - int symbol; /* decoded symbol */ - int len; /* length for copy */ - unsigned dist; /* distance for copy */ - static const short lens[29] = { /* Size base for length codes 257..285 */ - 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, - 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258}; - static const short lext[29] = { /* Extra bits for length codes 257..285 */ - 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, - 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0}; - static const short dists[30] = { /* Offset base for distance codes 0..29 */ - 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, - 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, - 8193, 12289, 16385, 24577}; - static const short dext[30] = { /* Extra bits for distance codes 0..29 */ - 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, - 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, - 12, 12, 13, 13}; - - /* decode literals and length/distance pairs */ - do { - symbol = decode(s, lencode); - if (symbol < 0) - return symbol; /* invalid symbol */ - if (symbol < 256) { /* literal: symbol is the byte */ - /* write out the literal */ - if (s->out != NIL) { - if (s->outcnt == s->outlen) - return 1; - s->out[s->outcnt] = symbol; - } - s->outcnt++; - } - else if (symbol > 256) { /* length */ - /* get and compute length */ - symbol -= 257; - if (symbol >= 29) - return -10; /* invalid fixed code */ - len = lens[symbol] + bits(s, lext[symbol]); - - /* get and check distance */ - symbol = decode(s, distcode); - if (symbol < 0) - return symbol; /* invalid symbol */ - dist = dists[symbol] + bits(s, dext[symbol]); -#ifndef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR - if (dist > s->outcnt) - return -11; /* distance too far back */ -#endif - - /* copy length bytes from distance bytes back */ - if (s->out != NIL) { - if (s->outcnt + len > s->outlen) - return 1; - while (len--) { - s->out[s->outcnt] = -#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR - dist > s->outcnt ? - 0 : -#endif - s->out[s->outcnt - dist]; - s->outcnt++; - } - } - else - s->outcnt += len; - } - } while (symbol != 256); /* end of block symbol */ - - /* done with a valid fixed or dynamic block */ - return 0; -} - -/* - * Process a fixed codes block. - * - * Format notes: - * - * - This block type can be useful for compressing small amounts of data for - * which the size of the code descriptions in a dynamic block exceeds the - * benefit of custom codes for that block. For fixed codes, no bits are - * spent on code descriptions. Instead the code lengths for literal/length - * codes and distance codes are fixed. The specific lengths for each symbol - * can be seen in the "for" loops below. - * - * - The literal/length code is complete, but has two symbols that are invalid - * and should result in an error if received. This cannot be implemented - * simply as an incomplete code since those two symbols are in the "middle" - * of the code. They are eight bits long and the longest literal/length\ - * code is nine bits. Therefore the code must be constructed with those - * symbols, and the invalid symbols must be detected after decoding. - * - * - The fixed distance codes also have two invalid symbols that should result - * in an error if received. Since all of the distance codes are the same - * length, this can be implemented as an incomplete code. Then the invalid - * codes are detected while decoding. - */ -local int fixed(struct state *s) -{ - static int virgin = 1; - static short lencnt[MAXBITS+1], lensym[FIXLCODES]; - static short distcnt[MAXBITS+1], distsym[MAXDCODES]; - static struct huffman lencode, distcode; - - /* build fixed huffman tables if first call (may not be thread safe) */ - if (virgin) { - int symbol; - short lengths[FIXLCODES]; - - /* construct lencode and distcode */ - lencode.count = lencnt; - lencode.symbol = lensym; - distcode.count = distcnt; - distcode.symbol = distsym; - - /* literal/length table */ - for (symbol = 0; symbol < 144; symbol++) - lengths[symbol] = 8; - for (; symbol < 256; symbol++) - lengths[symbol] = 9; - for (; symbol < 280; symbol++) - lengths[symbol] = 7; - for (; symbol < FIXLCODES; symbol++) - lengths[symbol] = 8; - construct(&lencode, lengths, FIXLCODES); - - /* distance table */ - for (symbol = 0; symbol < MAXDCODES; symbol++) - lengths[symbol] = 5; - construct(&distcode, lengths, MAXDCODES); - - /* do this just once */ - virgin = 0; - } - - /* decode data until end-of-block code */ - return codes(s, &lencode, &distcode); -} - -/* - * Process a dynamic codes block. - * - * Format notes: - * - * - A dynamic block starts with a description of the literal/length and - * distance codes for that block. New dynamic blocks allow the compressor to - * rapidly adapt to changing data with new codes optimized for that data. - * - * - The codes used by the deflate format are "canonical", which means that - * the actual bits of the codes are generated in an unambiguous way simply - * from the number of bits in each code. Therefore the code descriptions - * are simply a list of code lengths for each symbol. - * - * - The code lengths are stored in order for the symbols, so lengths are - * provided for each of the literal/length symbols, and for each of the - * distance symbols. - * - * - If a symbol is not used in the block, this is represented by a zero as - * as the code length. This does not mean a zero-length code, but rather - * that no code should be created for this symbol. There is no way in the - * deflate format to represent a zero-length code. - * - * - The maximum number of bits in a code is 15, so the possible lengths for - * any code are 1..15. - * - * - The fact that a length of zero is not permitted for a code has an - * interesting consequence. Normally if only one symbol is used for a given - * code, then in fact that code could be represented with zero bits. However - * in deflate, that code has to be at least one bit. So for example, if - * only a single distance base symbol appears in a block, then it will be - * represented by a single code of length one, in particular one 0 bit. This - * is an incomplete code, since if a 1 bit is received, it has no meaning, - * and should result in an error. So incomplete distance codes of one symbol - * should be permitted, and the receipt of invalid codes should be handled. - * - * - It is also possible to have a single literal/length code, but that code - * must be the end-of-block code, since every dynamic block has one. This - * is not the most efficient way to create an empty block (an empty fixed - * block is fewer bits), but it is allowed by the format. So incomplete - * literal/length codes of one symbol should also be permitted. - * - * - If there are only literal codes and no lengths, then there are no distance - * codes. This is represented by one distance code with zero bits. - * - * - The list of up to 286 length/literal lengths and up to 30 distance lengths - * are themselves compressed using Huffman codes and run-length encoding. In - * the list of code lengths, a 0 symbol means no code, a 1..15 symbol means - * that length, and the symbols 16, 17, and 18 are run-length instructions. - * Each of 16, 17, and 18 are follwed by extra bits to define the length of - * the run. 16 copies the last length 3 to 6 times. 17 represents 3 to 10 - * zero lengths, and 18 represents 11 to 138 zero lengths. Unused symbols - * are common, hence the special coding for zero lengths. - * - * - The symbols for 0..18 are Huffman coded, and so that code must be - * described first. This is simply a sequence of up to 19 three-bit values - * representing no code (0) or the code length for that symbol (1..7). - * - * - A dynamic block starts with three fixed-size counts from which is computed - * the number of literal/length code lengths, the number of distance code - * lengths, and the number of code length code lengths (ok, you come up with - * a better name!) in the code descriptions. For the literal/length and - * distance codes, lengths after those provided are considered zero, i.e. no - * code. The code length code lengths are received in a permuted order (see - * the order[] array below) to make a short code length code length list more - * likely. As it turns out, very short and very long codes are less likely - * to be seen in a dynamic code description, hence what may appear initially - * to be a peculiar ordering. - * - * - Given the number of literal/length code lengths (nlen) and distance code - * lengths (ndist), then they are treated as one long list of nlen + ndist - * code lengths. Therefore run-length coding can and often does cross the - * boundary between the two sets of lengths. - * - * - So to summarize, the code description at the start of a dynamic block is - * three counts for the number of code lengths for the literal/length codes, - * the distance codes, and the code length codes. This is followed by the - * code length code lengths, three bits each. This is used to construct the - * code length code which is used to read the remainder of the lengths. Then - * the literal/length code lengths and distance lengths are read as a single - * set of lengths using the code length codes. Codes are constructed from - * the resulting two sets of lengths, and then finally you can start - * decoding actual compressed data in the block. - * - * - For reference, a "typical" size for the code description in a dynamic - * block is around 80 bytes. - */ -local int dynamic(struct state *s) -{ - int nlen, ndist, ncode; /* number of lengths in descriptor */ - int index; /* index of lengths[] */ - int err; /* construct() return value */ - short lengths[MAXCODES]; /* descriptor code lengths */ - short lencnt[MAXBITS+1], lensym[MAXLCODES]; /* lencode memory */ - short distcnt[MAXBITS+1], distsym[MAXDCODES]; /* distcode memory */ - struct huffman lencode, distcode; /* length and distance codes */ - static const short order[19] = /* permutation of code length codes */ - {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; - - /* construct lencode and distcode */ - lencode.count = lencnt; - lencode.symbol = lensym; - distcode.count = distcnt; - distcode.symbol = distsym; - - /* get number of lengths in each table, check lengths */ - nlen = bits(s, 5) + 257; - ndist = bits(s, 5) + 1; - ncode = bits(s, 4) + 4; - if (nlen > MAXLCODES || ndist > MAXDCODES) - return -3; /* bad counts */ - - /* read code length code lengths (really), missing lengths are zero */ - for (index = 0; index < ncode; index++) - lengths[order[index]] = bits(s, 3); - for (; index < 19; index++) - lengths[order[index]] = 0; - - /* build huffman table for code lengths codes (use lencode temporarily) */ - err = construct(&lencode, lengths, 19); - if (err != 0) /* require complete code set here */ - return -4; - - /* read length/literal and distance code length tables */ - index = 0; - while (index < nlen + ndist) { - int symbol; /* decoded value */ - int len; /* last length to repeat */ - - symbol = decode(s, &lencode); - if (symbol < 0) - return symbol; /* invalid symbol */ - if (symbol < 16) /* length in 0..15 */ - lengths[index++] = symbol; - else { /* repeat instruction */ - len = 0; /* assume repeating zeros */ - if (symbol == 16) { /* repeat last length 3..6 times */ - if (index == 0) - return -5; /* no last length! */ - len = lengths[index - 1]; /* last length */ - symbol = 3 + bits(s, 2); - } - else if (symbol == 17) /* repeat zero 3..10 times */ - symbol = 3 + bits(s, 3); - else /* == 18, repeat zero 11..138 times */ - symbol = 11 + bits(s, 7); - if (index + symbol > nlen + ndist) - return -6; /* too many lengths! */ - while (symbol--) /* repeat last or zero symbol times */ - lengths[index++] = len; - } - } - - /* check for end-of-block code -- there better be one! */ - if (lengths[256] == 0) - return -9; - - /* build huffman table for literal/length codes */ - err = construct(&lencode, lengths, nlen); - if (err && (err < 0 || nlen != lencode.count[0] + lencode.count[1])) - return -7; /* incomplete code ok only for single length 1 code */ - - /* build huffman table for distance codes */ - err = construct(&distcode, lengths + nlen, ndist); - if (err && (err < 0 || ndist != distcode.count[0] + distcode.count[1])) - return -8; /* incomplete code ok only for single length 1 code */ - - /* decode data until end-of-block code */ - return codes(s, &lencode, &distcode); -} - -/* - * Inflate source to dest. On return, destlen and sourcelen are updated to the - * size of the uncompressed data and the size of the deflate data respectively. - * On success, the return value of puff() is zero. If there is an error in the - * source data, i.e. it is not in the deflate format, then a negative value is - * returned. If there is not enough input available or there is not enough - * output space, then a positive error is returned. In that case, destlen and - * sourcelen are not updated to facilitate retrying from the beginning with the - * provision of more input data or more output space. In the case of invalid - * inflate data (a negative error), the dest and source pointers are updated to - * facilitate the debugging of deflators. - * - * puff() also has a mode to determine the size of the uncompressed output with - * no output written. For this dest must be (unsigned char *)0. In this case, - * the input value of *destlen is ignored, and on return *destlen is set to the - * size of the uncompressed output. - * - * The return codes are: - * - * 2: available inflate data did not terminate - * 1: output space exhausted before completing inflate - * 0: successful inflate - * -1: invalid block type (type == 3) - * -2: stored block length did not match one's complement - * -3: dynamic block code description: too many length or distance codes - * -4: dynamic block code description: code lengths codes incomplete - * -5: dynamic block code description: repeat lengths with no first length - * -6: dynamic block code description: repeat more than specified lengths - * -7: dynamic block code description: invalid literal/length code lengths - * -8: dynamic block code description: invalid distance code lengths - * -9: dynamic block code description: missing end-of-block code - * -10: invalid literal/length or distance code in fixed or dynamic block - * -11: distance is too far back in fixed or dynamic block - * - * Format notes: - * - * - Three bits are read for each block to determine the kind of block and - * whether or not it is the last block. Then the block is decoded and the - * process repeated if it was not the last block. - * - * - The leftover bits in the last byte of the deflate data after the last - * block (if it was a fixed or dynamic block) are undefined and have no - * expected values to check. - */ -int puff(unsigned char *dest, /* pointer to destination pointer */ - unsigned long *destlen, /* amount of output space */ - const unsigned char *source, /* pointer to source data pointer */ - unsigned long *sourcelen) /* amount of input available */ -{ - struct state s; /* input/output state */ - int last, type; /* block information */ - int err; /* return value */ - - /* initialize output state */ - s.out = dest; - s.outlen = *destlen; /* ignored if dest is NIL */ - s.outcnt = 0; - - /* initialize input state */ - s.in = source; - s.inlen = *sourcelen; - s.incnt = 0; - s.bitbuf = 0; - s.bitcnt = 0; - - /* return if bits() or decode() tries to read past available input */ - if (setjmp(s.env) != 0) /* if came back here via longjmp() */ - err = 2; /* then skip do-loop, return error */ - else { - /* process blocks until last block or error */ - do { - last = bits(&s, 1); /* one if last block */ - type = bits(&s, 2); /* block type 0..3 */ - err = type == 0 ? - stored(&s) : - (type == 1 ? - fixed(&s) : - (type == 2 ? - dynamic(&s) : - -1)); /* type == 3, invalid */ - if (err != 0) - break; /* return with error */ - } while (!last); - } - - /* update the lengths and return */ - if (err <= 0) { - *destlen = s.outcnt; - *sourcelen = s.incnt; - } - return err; -} diff --git a/platform/win32/msvc/external/zlib/contrib/puff/puff.h b/platform/win32/msvc/external/zlib/contrib/puff/puff.h deleted file mode 100644 index e23a2454316..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/puff/puff.h +++ /dev/null @@ -1,35 +0,0 @@ -/* puff.h - Copyright (C) 2002-2013 Mark Adler, all rights reserved - version 2.3, 21 Jan 2013 - - This software is provided 'as-is', without any express or implied - warranty. In no event will the author be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Mark Adler madler@alumni.caltech.edu - */ - - -/* - * See puff.c for purpose and usage. - */ -#ifndef NIL -# define NIL ((unsigned char *)0) /* for no output option */ -#endif - -int puff(unsigned char *dest, /* pointer to destination pointer */ - unsigned long *destlen, /* amount of output space */ - const unsigned char *source, /* pointer to source data pointer */ - unsigned long *sourcelen); /* amount of input available */ diff --git a/platform/win32/msvc/external/zlib/contrib/puff/pufftest.c b/platform/win32/msvc/external/zlib/contrib/puff/pufftest.c deleted file mode 100644 index 776481488c9..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/puff/pufftest.c +++ /dev/null @@ -1,165 +0,0 @@ -/* - * pufftest.c - * Copyright (C) 2002-2013 Mark Adler - * For conditions of distribution and use, see copyright notice in puff.h - * version 2.3, 21 Jan 2013 - */ - -/* Example of how to use puff(). - - Usage: puff [-w] [-f] [-nnn] file - ... | puff [-w] [-f] [-nnn] - - where file is the input file with deflate data, nnn is the number of bytes - of input to skip before inflating (e.g. to skip a zlib or gzip header), and - -w is used to write the decompressed data to stdout. -f is for coverage - testing, and causes pufftest to fail with not enough output space (-f does - a write like -w, so -w is not required). */ - -#include <stdio.h> -#include <stdlib.h> -#include "puff.h" - -#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__) -# include <fcntl.h> -# include <io.h> -# define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY) -#else -# define SET_BINARY_MODE(file) -#endif - -#define local static - -/* Return size times approximately the cube root of 2, keeping the result as 1, - 3, or 5 times a power of 2 -- the result is always > size, until the result - is the maximum value of an unsigned long, where it remains. This is useful - to keep reallocations less than ~33% over the actual data. */ -local size_t bythirds(size_t size) -{ - int n; - size_t m; - - m = size; - for (n = 0; m; n++) - m >>= 1; - if (n < 3) - return size + 1; - n -= 3; - m = size >> n; - m += m == 6 ? 2 : 1; - m <<= n; - return m > size ? m : (size_t)(-1); -} - -/* Read the input file *name, or stdin if name is NULL, into allocated memory. - Reallocate to larger buffers until the entire file is read in. Return a - pointer to the allocated data, or NULL if there was a memory allocation - failure. *len is the number of bytes of data read from the input file (even - if load() returns NULL). If the input file was empty or could not be opened - or read, *len is zero. */ -local void *load(const char *name, size_t *len) -{ - size_t size; - void *buf, *swap; - FILE *in; - - *len = 0; - buf = malloc(size = 4096); - if (buf == NULL) - return NULL; - in = name == NULL ? stdin : fopen(name, "rb"); - if (in != NULL) { - for (;;) { - *len += fread((char *)buf + *len, 1, size - *len, in); - if (*len < size) break; - size = bythirds(size); - if (size == *len || (swap = realloc(buf, size)) == NULL) { - free(buf); - buf = NULL; - break; - } - buf = swap; - } - fclose(in); - } - return buf; -} - -int main(int argc, char **argv) -{ - int ret, put = 0, fail = 0; - unsigned skip = 0; - char *arg, *name = NULL; - unsigned char *source = NULL, *dest; - size_t len = 0; - unsigned long sourcelen, destlen; - - /* process arguments */ - while (arg = *++argv, --argc) - if (arg[0] == '-') { - if (arg[1] == 'w' && arg[2] == 0) - put = 1; - else if (arg[1] == 'f' && arg[2] == 0) - fail = 1, put = 1; - else if (arg[1] >= '0' && arg[1] <= '9') - skip = (unsigned)atoi(arg + 1); - else { - fprintf(stderr, "invalid option %s\n", arg); - return 3; - } - } - else if (name != NULL) { - fprintf(stderr, "only one file name allowed\n"); - return 3; - } - else - name = arg; - source = load(name, &len); - if (source == NULL) { - fprintf(stderr, "memory allocation failure\n"); - return 4; - } - if (len == 0) { - fprintf(stderr, "could not read %s, or it was empty\n", - name == NULL ? "<stdin>" : name); - free(source); - return 3; - } - if (skip >= len) { - fprintf(stderr, "skip request of %d leaves no input\n", skip); - free(source); - return 3; - } - - /* test inflate data with offset skip */ - len -= skip; - sourcelen = (unsigned long)len; - ret = puff(NIL, &destlen, source + skip, &sourcelen); - if (ret) - fprintf(stderr, "puff() failed with return code %d\n", ret); - else { - fprintf(stderr, "puff() succeeded uncompressing %lu bytes\n", destlen); - if (sourcelen < len) fprintf(stderr, "%lu compressed bytes unused\n", - len - sourcelen); - } - - /* if requested, inflate again and write decompressd data to stdout */ - if (put && ret == 0) { - if (fail) - destlen >>= 1; - dest = malloc(destlen); - if (dest == NULL) { - fprintf(stderr, "memory allocation failure\n"); - free(source); - return 4; - } - puff(dest, &destlen, source + skip, &sourcelen); - SET_BINARY_MODE(stdout); - fwrite(dest, 1, destlen, stdout); - free(dest); - } - - /* clean up */ - free(source); - return ret; -} diff --git a/platform/win32/msvc/external/zlib/contrib/puff/zeros.raw b/platform/win32/msvc/external/zlib/contrib/puff/zeros.raw deleted file mode 100644 index 0a90e76b300..00000000000 Binary files a/platform/win32/msvc/external/zlib/contrib/puff/zeros.raw and /dev/null differ diff --git a/platform/win32/msvc/external/zlib/contrib/testzlib/testzlib.c b/platform/win32/msvc/external/zlib/contrib/testzlib/testzlib.c deleted file mode 100644 index 5f659dea00f..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/testzlib/testzlib.c +++ /dev/null @@ -1,275 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <windows.h> - -#include "zlib.h" - - -void MyDoMinus64(LARGE_INTEGER *R,LARGE_INTEGER A,LARGE_INTEGER B) -{ - R->HighPart = A.HighPart - B.HighPart; - if (A.LowPart >= B.LowPart) - R->LowPart = A.LowPart - B.LowPart; - else - { - R->LowPart = A.LowPart - B.LowPart; - R->HighPart --; - } -} - -#ifdef _M_X64 -// see http://msdn2.microsoft.com/library/twchhe95(en-us,vs.80).aspx for __rdtsc -unsigned __int64 __rdtsc(void); -void BeginCountRdtsc(LARGE_INTEGER * pbeginTime64) -{ - // printf("rdtsc = %I64x\n",__rdtsc()); - pbeginTime64->QuadPart=__rdtsc(); -} - -LARGE_INTEGER GetResRdtsc(LARGE_INTEGER beginTime64,BOOL fComputeTimeQueryPerf) -{ - LARGE_INTEGER LIres; - unsigned _int64 res=__rdtsc()-((unsigned _int64)(beginTime64.QuadPart)); - LIres.QuadPart=res; - // printf("rdtsc = %I64x\n",__rdtsc()); - return LIres; -} -#else -#ifdef _M_IX86 -void myGetRDTSC32(LARGE_INTEGER * pbeginTime64) -{ - DWORD dwEdx,dwEax; - _asm - { - rdtsc - mov dwEax,eax - mov dwEdx,edx - } - pbeginTime64->LowPart=dwEax; - pbeginTime64->HighPart=dwEdx; -} - -void BeginCountRdtsc(LARGE_INTEGER * pbeginTime64) -{ - myGetRDTSC32(pbeginTime64); -} - -LARGE_INTEGER GetResRdtsc(LARGE_INTEGER beginTime64,BOOL fComputeTimeQueryPerf) -{ - LARGE_INTEGER LIres,endTime64; - myGetRDTSC32(&endTime64); - - LIres.LowPart=LIres.HighPart=0; - MyDoMinus64(&LIres,endTime64,beginTime64); - return LIres; -} -#else -void myGetRDTSC32(LARGE_INTEGER * pbeginTime64) -{ -} - -void BeginCountRdtsc(LARGE_INTEGER * pbeginTime64) -{ -} - -LARGE_INTEGER GetResRdtsc(LARGE_INTEGER beginTime64,BOOL fComputeTimeQueryPerf) -{ - LARGE_INTEGER lr; - lr.QuadPart=0; - return lr; -} -#endif -#endif - -void BeginCountPerfCounter(LARGE_INTEGER * pbeginTime64,BOOL fComputeTimeQueryPerf) -{ - if ((!fComputeTimeQueryPerf) || (!QueryPerformanceCounter(pbeginTime64))) - { - pbeginTime64->LowPart = GetTickCount(); - pbeginTime64->HighPart = 0; - } -} - -DWORD GetMsecSincePerfCounter(LARGE_INTEGER beginTime64,BOOL fComputeTimeQueryPerf) -{ - LARGE_INTEGER endTime64,ticksPerSecond,ticks; - DWORDLONG ticksShifted,tickSecShifted; - DWORD dwLog=16+0; - DWORD dwRet; - if ((!fComputeTimeQueryPerf) || (!QueryPerformanceCounter(&endTime64))) - dwRet = (GetTickCount() - beginTime64.LowPart)*1; - else - { - MyDoMinus64(&ticks,endTime64,beginTime64); - QueryPerformanceFrequency(&ticksPerSecond); - - - { - ticksShifted = Int64ShrlMod32(*(DWORDLONG*)&ticks,dwLog); - tickSecShifted = Int64ShrlMod32(*(DWORDLONG*)&ticksPerSecond,dwLog); - - } - - dwRet = (DWORD)((((DWORD)ticksShifted)*1000)/(DWORD)(tickSecShifted)); - dwRet *=1; - } - return dwRet; -} - -int ReadFileMemory(const char* filename,long* plFileSize,unsigned char** pFilePtr) -{ - FILE* stream; - unsigned char* ptr; - int retVal=1; - stream=fopen(filename, "rb"); - if (stream==NULL) - return 0; - - fseek(stream,0,SEEK_END); - - *plFileSize=ftell(stream); - fseek(stream,0,SEEK_SET); - ptr=malloc((*plFileSize)+1); - if (ptr==NULL) - retVal=0; - else - { - if (fread(ptr, 1, *plFileSize,stream) != (*plFileSize)) - retVal=0; - } - fclose(stream); - *pFilePtr=ptr; - return retVal; -} - -int main(int argc, char *argv[]) -{ - int BlockSizeCompress=0x8000; - int BlockSizeUncompress=0x8000; - int cprLevel=Z_DEFAULT_COMPRESSION ; - long lFileSize; - unsigned char* FilePtr; - long lBufferSizeCpr; - long lBufferSizeUncpr; - long lCompressedSize=0; - unsigned char* CprPtr; - unsigned char* UncprPtr; - long lSizeCpr,lSizeUncpr; - DWORD dwGetTick,dwMsecQP; - LARGE_INTEGER li_qp,li_rdtsc,dwResRdtsc; - - if (argc<=1) - { - printf("run TestZlib <File> [BlockSizeCompress] [BlockSizeUncompress] [compres. level]\n"); - return 0; - } - - if (ReadFileMemory(argv[1],&lFileSize,&FilePtr)==0) - { - printf("error reading %s\n",argv[1]); - return 1; - } - else printf("file %s read, %u bytes\n",argv[1],lFileSize); - - if (argc>=3) - BlockSizeCompress=atol(argv[2]); - - if (argc>=4) - BlockSizeUncompress=atol(argv[3]); - - if (argc>=5) - cprLevel=(int)atol(argv[4]); - - lBufferSizeCpr = lFileSize + (lFileSize/0x10) + 0x200; - lBufferSizeUncpr = lBufferSizeCpr; - - CprPtr=(unsigned char*)malloc(lBufferSizeCpr + BlockSizeCompress); - - BeginCountPerfCounter(&li_qp,TRUE); - dwGetTick=GetTickCount(); - BeginCountRdtsc(&li_rdtsc); - { - z_stream zcpr; - int ret=Z_OK; - long lOrigToDo = lFileSize; - long lOrigDone = 0; - int step=0; - memset(&zcpr,0,sizeof(z_stream)); - deflateInit(&zcpr,cprLevel); - - zcpr.next_in = FilePtr; - zcpr.next_out = CprPtr; - - - do - { - long all_read_before = zcpr.total_in; - zcpr.avail_in = min(lOrigToDo,BlockSizeCompress); - zcpr.avail_out = BlockSizeCompress; - ret=deflate(&zcpr,(zcpr.avail_in==lOrigToDo) ? Z_FINISH : Z_SYNC_FLUSH); - lOrigDone += (zcpr.total_in-all_read_before); - lOrigToDo -= (zcpr.total_in-all_read_before); - step++; - } while (ret==Z_OK); - - lSizeCpr=zcpr.total_out; - deflateEnd(&zcpr); - dwGetTick=GetTickCount()-dwGetTick; - dwMsecQP=GetMsecSincePerfCounter(li_qp,TRUE); - dwResRdtsc=GetResRdtsc(li_rdtsc,TRUE); - printf("total compress size = %u, in %u step\n",lSizeCpr,step); - printf("time = %u msec = %f sec\n",dwGetTick,dwGetTick/(double)1000.); - printf("defcpr time QP = %u msec = %f sec\n",dwMsecQP,dwMsecQP/(double)1000.); - printf("defcpr result rdtsc = %I64x\n\n",dwResRdtsc.QuadPart); - } - - CprPtr=(unsigned char*)realloc(CprPtr,lSizeCpr); - UncprPtr=(unsigned char*)malloc(lBufferSizeUncpr + BlockSizeUncompress); - - BeginCountPerfCounter(&li_qp,TRUE); - dwGetTick=GetTickCount(); - BeginCountRdtsc(&li_rdtsc); - { - z_stream zcpr; - int ret=Z_OK; - long lOrigToDo = lSizeCpr; - long lOrigDone = 0; - int step=0; - memset(&zcpr,0,sizeof(z_stream)); - inflateInit(&zcpr); - - zcpr.next_in = CprPtr; - zcpr.next_out = UncprPtr; - - - do - { - long all_read_before = zcpr.total_in; - zcpr.avail_in = min(lOrigToDo,BlockSizeUncompress); - zcpr.avail_out = BlockSizeUncompress; - ret=inflate(&zcpr,Z_SYNC_FLUSH); - lOrigDone += (zcpr.total_in-all_read_before); - lOrigToDo -= (zcpr.total_in-all_read_before); - step++; - } while (ret==Z_OK); - - lSizeUncpr=zcpr.total_out; - inflateEnd(&zcpr); - dwGetTick=GetTickCount()-dwGetTick; - dwMsecQP=GetMsecSincePerfCounter(li_qp,TRUE); - dwResRdtsc=GetResRdtsc(li_rdtsc,TRUE); - printf("total uncompress size = %u, in %u step\n",lSizeUncpr,step); - printf("time = %u msec = %f sec\n",dwGetTick,dwGetTick/(double)1000.); - printf("uncpr time QP = %u msec = %f sec\n",dwMsecQP,dwMsecQP/(double)1000.); - printf("uncpr result rdtsc = %I64x\n\n",dwResRdtsc.QuadPart); - } - - if (lSizeUncpr==lFileSize) - { - if (memcmp(FilePtr,UncprPtr,lFileSize)==0) - printf("compare ok\n"); - - } - - return 0; -} diff --git a/platform/win32/msvc/external/zlib/contrib/testzlib/testzlib.txt b/platform/win32/msvc/external/zlib/contrib/testzlib/testzlib.txt deleted file mode 100644 index 62258f14956..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/testzlib/testzlib.txt +++ /dev/null @@ -1,10 +0,0 @@ -To build testzLib with Visual Studio 2005: - -copy to a directory file from : -- root of zLib tree -- contrib/testzlib -- contrib/masmx86 -- contrib/masmx64 -- contrib/vstudio/vc7 - -and open testzlib8.sln \ No newline at end of file diff --git a/platform/win32/msvc/external/zlib/contrib/untgz/Makefile.msc b/platform/win32/msvc/external/zlib/contrib/untgz/Makefile.msc deleted file mode 100644 index 77b86022137..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/untgz/Makefile.msc +++ /dev/null @@ -1,17 +0,0 @@ -CC=cl -CFLAGS=-MD - -untgz.exe: untgz.obj ..\..\zlib.lib - $(CC) $(CFLAGS) untgz.obj ..\..\zlib.lib - -untgz.obj: untgz.c ..\..\zlib.h - $(CC) $(CFLAGS) -c -I..\.. untgz.c - -..\..\zlib.lib: - cd ..\.. - $(MAKE) -f win32\makefile.msc - cd contrib\untgz - -clean: - -del untgz.obj - -del untgz.exe diff --git a/platform/win32/msvc/external/zlib/contrib/untgz/untgz.c b/platform/win32/msvc/external/zlib/contrib/untgz/untgz.c deleted file mode 100644 index 2c391e59867..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/untgz/untgz.c +++ /dev/null @@ -1,674 +0,0 @@ -/* - * untgz.c -- Display contents and extract files from a gzip'd TAR file - * - * written by Pedro A. Aranda Gutierrez <paag@tid.es> - * adaptation to Unix by Jean-loup Gailly <jloup@gzip.org> - * various fixes by Cosmin Truta <cosmint@cs.ubbcluj.ro> - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <time.h> -#include <errno.h> - -#include "zlib.h" - -#ifdef unix -# include <unistd.h> -#else -# include <direct.h> -# include <io.h> -#endif - -#ifdef WIN32 -#include <windows.h> -# ifndef F_OK -# define F_OK 0 -# endif -# define mkdir(dirname,mode) _mkdir(dirname) -# ifdef _MSC_VER -# define access(path,mode) _access(path,mode) -# define chmod(path,mode) _chmod(path,mode) -# define strdup(str) _strdup(str) -# endif -#else -# include <utime.h> -#endif - - -/* values used in typeflag field */ - -#define REGTYPE '0' /* regular file */ -#define AREGTYPE '\0' /* regular file */ -#define LNKTYPE '1' /* link */ -#define SYMTYPE '2' /* reserved */ -#define CHRTYPE '3' /* character special */ -#define BLKTYPE '4' /* block special */ -#define DIRTYPE '5' /* directory */ -#define FIFOTYPE '6' /* FIFO special */ -#define CONTTYPE '7' /* reserved */ - -/* GNU tar extensions */ - -#define GNUTYPE_DUMPDIR 'D' /* file names from dumped directory */ -#define GNUTYPE_LONGLINK 'K' /* long link name */ -#define GNUTYPE_LONGNAME 'L' /* long file name */ -#define GNUTYPE_MULTIVOL 'M' /* continuation of file from another volume */ -#define GNUTYPE_NAMES 'N' /* file name that does not fit into main hdr */ -#define GNUTYPE_SPARSE 'S' /* sparse file */ -#define GNUTYPE_VOLHDR 'V' /* tape/volume header */ - - -/* tar header */ - -#define BLOCKSIZE 512 -#define SHORTNAMESIZE 100 - -struct tar_header -{ /* byte offset */ - char name[100]; /* 0 */ - char mode[8]; /* 100 */ - char uid[8]; /* 108 */ - char gid[8]; /* 116 */ - char size[12]; /* 124 */ - char mtime[12]; /* 136 */ - char chksum[8]; /* 148 */ - char typeflag; /* 156 */ - char linkname[100]; /* 157 */ - char magic[6]; /* 257 */ - char version[2]; /* 263 */ - char uname[32]; /* 265 */ - char gname[32]; /* 297 */ - char devmajor[8]; /* 329 */ - char devminor[8]; /* 337 */ - char prefix[155]; /* 345 */ - /* 500 */ -}; - -union tar_buffer -{ - char buffer[BLOCKSIZE]; - struct tar_header header; -}; - -struct attr_item -{ - struct attr_item *next; - char *fname; - int mode; - time_t time; -}; - -enum { TGZ_EXTRACT, TGZ_LIST, TGZ_INVALID }; - -char *TGZfname OF((const char *)); -void TGZnotfound OF((const char *)); - -int getoct OF((char *, int)); -char *strtime OF((time_t *)); -int setfiletime OF((char *, time_t)); -void push_attr OF((struct attr_item **, char *, int, time_t)); -void restore_attr OF((struct attr_item **)); - -int ExprMatch OF((char *, char *)); - -int makedir OF((char *)); -int matchname OF((int, int, char **, char *)); - -void error OF((const char *)); -int tar OF((gzFile, int, int, int, char **)); - -void help OF((int)); -int main OF((int, char **)); - -char *prog; - -const char *TGZsuffix[] = { "\0", ".tar", ".tar.gz", ".taz", ".tgz", NULL }; - -/* return the file name of the TGZ archive */ -/* or NULL if it does not exist */ - -char *TGZfname (const char *arcname) -{ - static char buffer[1024]; - int origlen,i; - - strcpy(buffer,arcname); - origlen = strlen(buffer); - - for (i=0; TGZsuffix[i]; i++) - { - strcpy(buffer+origlen,TGZsuffix[i]); - if (access(buffer,F_OK) == 0) - return buffer; - } - return NULL; -} - - -/* error message for the filename */ - -void TGZnotfound (const char *arcname) -{ - int i; - - fprintf(stderr,"%s: Couldn't find ",prog); - for (i=0;TGZsuffix[i];i++) - fprintf(stderr,(TGZsuffix[i+1]) ? "%s%s, " : "or %s%s\n", - arcname, - TGZsuffix[i]); - exit(1); -} - - -/* convert octal digits to int */ -/* on error return -1 */ - -int getoct (char *p,int width) -{ - int result = 0; - char c; - - while (width--) - { - c = *p++; - if (c == 0) - break; - if (c == ' ') - continue; - if (c < '0' || c > '7') - return -1; - result = result * 8 + (c - '0'); - } - return result; -} - - -/* convert time_t to string */ -/* use the "YYYY/MM/DD hh:mm:ss" format */ - -char *strtime (time_t *t) -{ - struct tm *local; - static char result[32]; - - local = localtime(t); - sprintf(result,"%4d/%02d/%02d %02d:%02d:%02d", - local->tm_year+1900, local->tm_mon+1, local->tm_mday, - local->tm_hour, local->tm_min, local->tm_sec); - return result; -} - - -/* set file time */ - -int setfiletime (char *fname,time_t ftime) -{ -#ifdef WIN32 - static int isWinNT = -1; - SYSTEMTIME st; - FILETIME locft, modft; - struct tm *loctm; - HANDLE hFile; - int result; - - loctm = localtime(&ftime); - if (loctm == NULL) - return -1; - - st.wYear = (WORD)loctm->tm_year + 1900; - st.wMonth = (WORD)loctm->tm_mon + 1; - st.wDayOfWeek = (WORD)loctm->tm_wday; - st.wDay = (WORD)loctm->tm_mday; - st.wHour = (WORD)loctm->tm_hour; - st.wMinute = (WORD)loctm->tm_min; - st.wSecond = (WORD)loctm->tm_sec; - st.wMilliseconds = 0; - if (!SystemTimeToFileTime(&st, &locft) || - !LocalFileTimeToFileTime(&locft, &modft)) - return -1; - - if (isWinNT < 0) - isWinNT = (GetVersion() < 0x80000000) ? 1 : 0; - hFile = CreateFile(fname, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, - (isWinNT ? FILE_FLAG_BACKUP_SEMANTICS : 0), - NULL); - if (hFile == INVALID_HANDLE_VALUE) - return -1; - result = SetFileTime(hFile, NULL, NULL, &modft) ? 0 : -1; - CloseHandle(hFile); - return result; -#else - struct utimbuf settime; - - settime.actime = settime.modtime = ftime; - return utime(fname,&settime); -#endif -} - - -/* push file attributes */ - -void push_attr(struct attr_item **list,char *fname,int mode,time_t time) -{ - struct attr_item *item; - - item = (struct attr_item *)malloc(sizeof(struct attr_item)); - if (item == NULL) - error("Out of memory"); - item->fname = strdup(fname); - item->mode = mode; - item->time = time; - item->next = *list; - *list = item; -} - - -/* restore file attributes */ - -void restore_attr(struct attr_item **list) -{ - struct attr_item *item, *prev; - - for (item = *list; item != NULL; ) - { - setfiletime(item->fname,item->time); - chmod(item->fname,item->mode); - prev = item; - item = item->next; - free(prev); - } - *list = NULL; -} - - -/* match regular expression */ - -#define ISSPECIAL(c) (((c) == '*') || ((c) == '/')) - -int ExprMatch (char *string,char *expr) -{ - while (1) - { - if (ISSPECIAL(*expr)) - { - if (*expr == '/') - { - if (*string != '\\' && *string != '/') - return 0; - string ++; expr++; - } - else if (*expr == '*') - { - if (*expr ++ == 0) - return 1; - while (*++string != *expr) - if (*string == 0) - return 0; - } - } - else - { - if (*string != *expr) - return 0; - if (*expr++ == 0) - return 1; - string++; - } - } -} - - -/* recursive mkdir */ -/* abort on ENOENT; ignore other errors like "directory already exists" */ -/* return 1 if OK */ -/* 0 on error */ - -int makedir (char *newdir) -{ - char *buffer = strdup(newdir); - char *p; - int len = strlen(buffer); - - if (len <= 0) { - free(buffer); - return 0; - } - if (buffer[len-1] == '/') { - buffer[len-1] = '\0'; - } - if (mkdir(buffer, 0755) == 0) - { - free(buffer); - return 1; - } - - p = buffer+1; - while (1) - { - char hold; - - while(*p && *p != '\\' && *p != '/') - p++; - hold = *p; - *p = 0; - if ((mkdir(buffer, 0755) == -1) && (errno == ENOENT)) - { - fprintf(stderr,"%s: Couldn't create directory %s\n",prog,buffer); - free(buffer); - return 0; - } - if (hold == 0) - break; - *p++ = hold; - } - free(buffer); - return 1; -} - - -int matchname (int arg,int argc,char **argv,char *fname) -{ - if (arg == argc) /* no arguments given (untgz tgzarchive) */ - return 1; - - while (arg < argc) - if (ExprMatch(fname,argv[arg++])) - return 1; - - return 0; /* ignore this for the moment being */ -} - - -/* tar file list or extract */ - -int tar (gzFile in,int action,int arg,int argc,char **argv) -{ - union tar_buffer buffer; - int len; - int err; - int getheader = 1; - int remaining = 0; - FILE *outfile = NULL; - char fname[BLOCKSIZE]; - int tarmode; - time_t tartime; - struct attr_item *attributes = NULL; - - if (action == TGZ_LIST) - printf(" date time size file\n" - " ---------- -------- --------- -------------------------------------\n"); - while (1) - { - len = gzread(in, &buffer, BLOCKSIZE); - if (len < 0) - error(gzerror(in, &err)); - /* - * Always expect complete blocks to process - * the tar information. - */ - if (len != BLOCKSIZE) - { - action = TGZ_INVALID; /* force error exit */ - remaining = 0; /* force I/O cleanup */ - } - - /* - * If we have to get a tar header - */ - if (getheader >= 1) - { - /* - * if we met the end of the tar - * or the end-of-tar block, - * we are done - */ - if (len == 0 || buffer.header.name[0] == 0) - break; - - tarmode = getoct(buffer.header.mode,8); - tartime = (time_t)getoct(buffer.header.mtime,12); - if (tarmode == -1 || tartime == (time_t)-1) - { - buffer.header.name[0] = 0; - action = TGZ_INVALID; - } - - if (getheader == 1) - { - strncpy(fname,buffer.header.name,SHORTNAMESIZE); - if (fname[SHORTNAMESIZE-1] != 0) - fname[SHORTNAMESIZE] = 0; - } - else - { - /* - * The file name is longer than SHORTNAMESIZE - */ - if (strncmp(fname,buffer.header.name,SHORTNAMESIZE-1) != 0) - error("bad long name"); - getheader = 1; - } - - /* - * Act according to the type flag - */ - switch (buffer.header.typeflag) - { - case DIRTYPE: - if (action == TGZ_LIST) - printf(" %s <dir> %s\n",strtime(&tartime),fname); - if (action == TGZ_EXTRACT) - { - makedir(fname); - push_attr(&attributes,fname,tarmode,tartime); - } - break; - case REGTYPE: - case AREGTYPE: - remaining = getoct(buffer.header.size,12); - if (remaining == -1) - { - action = TGZ_INVALID; - break; - } - if (action == TGZ_LIST) - printf(" %s %9d %s\n",strtime(&tartime),remaining,fname); - else if (action == TGZ_EXTRACT) - { - if (matchname(arg,argc,argv,fname)) - { - outfile = fopen(fname,"wb"); - if (outfile == NULL) { - /* try creating directory */ - char *p = strrchr(fname, '/'); - if (p != NULL) { - *p = '\0'; - makedir(fname); - *p = '/'; - outfile = fopen(fname,"wb"); - } - } - if (outfile != NULL) - printf("Extracting %s\n",fname); - else - fprintf(stderr, "%s: Couldn't create %s",prog,fname); - } - else - outfile = NULL; - } - getheader = 0; - break; - case GNUTYPE_LONGLINK: - case GNUTYPE_LONGNAME: - remaining = getoct(buffer.header.size,12); - if (remaining < 0 || remaining >= BLOCKSIZE) - { - action = TGZ_INVALID; - break; - } - len = gzread(in, fname, BLOCKSIZE); - if (len < 0) - error(gzerror(in, &err)); - if (fname[BLOCKSIZE-1] != 0 || (int)strlen(fname) > remaining) - { - action = TGZ_INVALID; - break; - } - getheader = 2; - break; - default: - if (action == TGZ_LIST) - printf(" %s <---> %s\n",strtime(&tartime),fname); - break; - } - } - else - { - unsigned int bytes = (remaining > BLOCKSIZE) ? BLOCKSIZE : remaining; - - if (outfile != NULL) - { - if (fwrite(&buffer,sizeof(char),bytes,outfile) != bytes) - { - fprintf(stderr, - "%s: Error writing %s -- skipping\n",prog,fname); - fclose(outfile); - outfile = NULL; - remove(fname); - } - } - remaining -= bytes; - } - - if (remaining == 0) - { - getheader = 1; - if (outfile != NULL) - { - fclose(outfile); - outfile = NULL; - if (action != TGZ_INVALID) - push_attr(&attributes,fname,tarmode,tartime); - } - } - - /* - * Abandon if errors are found - */ - if (action == TGZ_INVALID) - { - error("broken archive"); - break; - } - } - - /* - * Restore file modes and time stamps - */ - restore_attr(&attributes); - - if (gzclose(in) != Z_OK) - error("failed gzclose"); - - return 0; -} - - -/* ============================================================ */ - -void help(int exitval) -{ - printf("untgz version 0.2.1\n" - " using zlib version %s\n\n", - zlibVersion()); - printf("Usage: untgz file.tgz extract all files\n" - " untgz file.tgz fname ... extract selected files\n" - " untgz -l file.tgz list archive contents\n" - " untgz -h display this help\n"); - exit(exitval); -} - -void error(const char *msg) -{ - fprintf(stderr, "%s: %s\n", prog, msg); - exit(1); -} - - -/* ============================================================ */ - -#if defined(WIN32) && defined(__GNUC__) -int _CRT_glob = 0; /* disable argument globbing in MinGW */ -#endif - -int main(int argc,char **argv) -{ - int action = TGZ_EXTRACT; - int arg = 1; - char *TGZfile; - gzFile *f; - - prog = strrchr(argv[0],'\\'); - if (prog == NULL) - { - prog = strrchr(argv[0],'/'); - if (prog == NULL) - { - prog = strrchr(argv[0],':'); - if (prog == NULL) - prog = argv[0]; - else - prog++; - } - else - prog++; - } - else - prog++; - - if (argc == 1) - help(0); - - if (strcmp(argv[arg],"-l") == 0) - { - action = TGZ_LIST; - if (argc == ++arg) - help(0); - } - else if (strcmp(argv[arg],"-h") == 0) - { - help(0); - } - - if ((TGZfile = TGZfname(argv[arg])) == NULL) - TGZnotfound(argv[arg]); - - ++arg; - if ((action == TGZ_LIST) && (arg != argc)) - help(1); - -/* - * Process the TGZ file - */ - switch(action) - { - case TGZ_LIST: - case TGZ_EXTRACT: - f = gzopen(TGZfile,"rb"); - if (f == NULL) - { - fprintf(stderr,"%s: Couldn't gzopen %s\n",prog,TGZfile); - return 1; - } - exit(tar(f, action, arg, argc, argv)); - break; - - default: - error("Unknown option"); - exit(1); - } - - return 0; -} diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/readme.txt b/platform/win32/msvc/external/zlib/contrib/vstudio/readme.txt deleted file mode 100644 index bfdcd9dd013..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/readme.txt +++ /dev/null @@ -1,65 +0,0 @@ -Building instructions for the DLL versions of Zlib 1.2.8 -======================================================== - -This directory contains projects that build zlib and minizip using -Microsoft Visual C++ 9.0/10.0. - -You don't need to build these projects yourself. You can download the -binaries from: - http://www.winimage.com/zLibDll - -More information can be found at this site. - - - - - -Build instructions for Visual Studio 2008 (32 bits or 64 bits) --------------------------------------------------------------- -- Uncompress current zlib, including all contrib/* files -- Compile assembly code (with Visual Studio Command Prompt) by running: - bld_ml64.bat (in contrib\masmx64) - bld_ml32.bat (in contrib\masmx86) -- Open contrib\vstudio\vc9\zlibvc.sln with Microsoft Visual C++ 2008 -- Or run: vcbuild /rebuild contrib\vstudio\vc9\zlibvc.sln "Release|Win32" - -Build instructions for Visual Studio 2010 (32 bits or 64 bits) --------------------------------------------------------------- -- Uncompress current zlib, including all contrib/* files -- Open contrib\vstudio\vc10\zlibvc.sln with Microsoft Visual C++ 2010 - -Build instructions for Visual Studio 2012 (32 bits or 64 bits) --------------------------------------------------------------- -- Uncompress current zlib, including all contrib/* files -- Open contrib\vstudio\vc11\zlibvc.sln with Microsoft Visual C++ 2012 - - -Important ---------- -- To use zlibwapi.dll in your application, you must define the - macro ZLIB_WINAPI when compiling your application's source files. - - -Additional notes ----------------- -- This DLL, named zlibwapi.dll, is compatible to the old zlib.dll built - by Gilles Vollant from the zlib 1.1.x sources, and distributed at - http://www.winimage.com/zLibDll - It uses the WINAPI calling convention for the exported functions, and - includes the minizip functionality. If your application needs that - particular build of zlib.dll, you can rename zlibwapi.dll to zlib.dll. - -- The new DLL was renamed because there exist several incompatible - versions of zlib.dll on the Internet. - -- There is also an official DLL build of zlib, named zlib1.dll. This one - is exporting the functions using the CDECL convention. See the file - win32\DLL_FAQ.txt found in this zlib distribution. - -- There used to be a ZLIB_DLL macro in zlib 1.1.x, but now this symbol - has a slightly different effect. To avoid compatibility problems, do - not define it here. - - -Gilles Vollant -info@winimage.com diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/miniunz.vcxproj b/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/miniunz.vcxproj deleted file mode 100644 index 74e15c90d3c..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/miniunz.vcxproj +++ /dev/null @@ -1,310 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|Itanium"> - <Configuration>Debug</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|x64"> - <Configuration>Debug</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Itanium"> - <Configuration>Release</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|x64"> - <Configuration>Release</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Label="Globals"> - <ProjectGuid>{C52F9E7B-498A-42BE-8DB4-85A15694382A}</ProjectGuid> - <Keyword>Win32Proj</Keyword> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> - <ImportGroup Label="ExtensionSettings"> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <PropertyGroup Label="UserMacros" /> - <PropertyGroup> - <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\MiniUnzip$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\MiniUnzip$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\MiniUnzip$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\MiniUnzip$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\MiniUnzip$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\MiniUnzip$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\MiniUnzip$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\MiniUnzip$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\MiniUnzip$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\MiniUnzip$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\MiniUnzip$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\MiniUnzip$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</GenerateManifest> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - </PropertyGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>true</MinimalRebuild> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>EditAndContinue</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)miniunz.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)miniunz.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <TargetMachine>MachineX86</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)miniunz.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <TargetMachine>MachineX86</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> - <Midl> - <TargetEnvironment>X64</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>true</MinimalRebuild> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)miniunz.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)miniunz.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <TargetMachine>MachineX64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>true</MinimalRebuild> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>ia64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)miniunz.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)miniunz.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> - <Midl> - <TargetEnvironment>X64</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)miniunz.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <TargetMachine>MachineX64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>ia64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)miniunz.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemGroup> - <ClCompile Include="..\..\minizip\miniunz.c" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="zlibvc.vcxproj"> - <Project>{8fd826f8-3739-44e6-8cc8-997122e53b8d}</Project> - </ProjectReference> - </ItemGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> - <ImportGroup Label="ExtensionTargets"> - </ImportGroup> -</Project> \ No newline at end of file diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters b/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters deleted file mode 100644 index 0b2a3de2dfe..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup> - <Filter Include="Source Files"> - <UniqueIdentifier>{048af943-022b-4db6-beeb-a54c34774ee2}</UniqueIdentifier> - <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm</Extensions> - </Filter> - <Filter Include="Header Files"> - <UniqueIdentifier>{c1d600d2-888f-4aea-b73e-8b0dd9befa0c}</UniqueIdentifier> - <Extensions>h;hpp;hxx;hm;inl;inc</Extensions> - </Filter> - <Filter Include="Resource Files"> - <UniqueIdentifier>{0844199a-966b-4f19-81db-1e0125e141b9}</UniqueIdentifier> - <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions> - </Filter> - </ItemGroup> - <ItemGroup> - <ClCompile Include="..\..\minizip\miniunz.c"> - <Filter>Source Files</Filter> - </ClCompile> - </ItemGroup> -</Project> \ No newline at end of file diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/minizip.vcxproj b/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/minizip.vcxproj deleted file mode 100644 index 917e15652b1..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/minizip.vcxproj +++ /dev/null @@ -1,307 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|Itanium"> - <Configuration>Debug</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|x64"> - <Configuration>Debug</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Itanium"> - <Configuration>Release</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|x64"> - <Configuration>Release</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Label="Globals"> - <ProjectGuid>{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}</ProjectGuid> - <Keyword>Win32Proj</Keyword> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> - <ImportGroup Label="ExtensionSettings"> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <PropertyGroup Label="UserMacros" /> - <PropertyGroup> - <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\MiniZip$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\MiniZip$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\MiniZip$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\MiniZip$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\$(Configuration)\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\$(Configuration)\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\$(Configuration)\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\$(Configuration)\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</LinkIncremental> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - </PropertyGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>true</MinimalRebuild> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>EditAndContinue</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)minizip.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)minizip.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <TargetMachine>MachineX86</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)minizip.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <TargetMachine>MachineX86</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> - <Midl> - <TargetEnvironment>X64</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>true</MinimalRebuild> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)minizip.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)minizip.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <TargetMachine>MachineX64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>true</MinimalRebuild> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>ia64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)minizip.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)minizip.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> - <Midl> - <TargetEnvironment>X64</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)minizip.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <TargetMachine>MachineX64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>ia64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)minizip.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemGroup> - <ClCompile Include="..\..\minizip\minizip.c" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="zlibvc.vcxproj"> - <Project>{8fd826f8-3739-44e6-8cc8-997122e53b8d}</Project> - </ProjectReference> - </ItemGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> - <ImportGroup Label="ExtensionTargets"> - </ImportGroup> -</Project> \ No newline at end of file diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters b/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters deleted file mode 100644 index dd73cd31329..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup> - <Filter Include="Source Files"> - <UniqueIdentifier>{c0419b40-bf50-40da-b153-ff74215b79de}</UniqueIdentifier> - <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm</Extensions> - </Filter> - <Filter Include="Header Files"> - <UniqueIdentifier>{bb87b070-735b-478e-92ce-7383abb2f36c}</UniqueIdentifier> - <Extensions>h;hpp;hxx;hm;inl;inc</Extensions> - </Filter> - <Filter Include="Resource Files"> - <UniqueIdentifier>{f46ab6a6-548f-43cb-ae96-681abb5bd5db}</UniqueIdentifier> - <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions> - </Filter> - </ItemGroup> - <ItemGroup> - <ClCompile Include="..\..\minizip\minizip.c"> - <Filter>Source Files</Filter> - </ClCompile> - </ItemGroup> -</Project> \ No newline at end of file diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/testzlib.vcxproj b/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/testzlib.vcxproj deleted file mode 100644 index 9088d176f8c..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/testzlib.vcxproj +++ /dev/null @@ -1,420 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|Itanium"> - <Configuration>Debug</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|x64"> - <Configuration>Debug</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="ReleaseWithoutAsm|Itanium"> - <Configuration>ReleaseWithoutAsm</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="ReleaseWithoutAsm|Win32"> - <Configuration>ReleaseWithoutAsm</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="ReleaseWithoutAsm|x64"> - <Configuration>ReleaseWithoutAsm</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Itanium"> - <Configuration>Release</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|x64"> - <Configuration>Release</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Label="Globals"> - <ProjectGuid>{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}</ProjectGuid> - <RootNamespace>testzlib</RootNamespace> - <Keyword>Win32Proj</Keyword> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - <WholeProgramOptimization>true</WholeProgramOptimization> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - <WholeProgramOptimization>true</WholeProgramOptimization> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - <WholeProgramOptimization>true</WholeProgramOptimization> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - <WholeProgramOptimization>true</WholeProgramOptimization> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <WholeProgramOptimization>true</WholeProgramOptimization> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <WholeProgramOptimization>true</WholeProgramOptimization> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> - <ImportGroup Label="ExtensionSettings"> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <PropertyGroup Label="UserMacros" /> - <PropertyGroup> - <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\TestZlib$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\TestZlib$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\TestZlib$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\TestZlib$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\TestZlib$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\TestZlib$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\TestZlib$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\TestZlib$(Configuration)\Tmp\</IntDir> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\TestZlib$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\TestZlib$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\TestZlib$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\TestZlib$(Configuration)\Tmp\</IntDir> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">ia64\TestZlib$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">ia64\TestZlib$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\TestZlib$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\TestZlib$(Configuration)\Tmp\</IntDir> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\TestZlib$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\TestZlib$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</GenerateManifest> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - </PropertyGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>true</MinimalRebuild> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerOutput>AssemblyAndSourceCode</AssemblerOutput> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>EditAndContinue</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)testzlib.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <TargetMachine>MachineX86</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'"> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <OutputFile>$(OutDir)testzlib.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <TargetMachine>MachineX86</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)testzlib.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <TargetMachine>MachineX86</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> - <ClCompile> - <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - </ClCompile> - <Link> - <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>true</MinimalRebuild> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerOutput>AssemblyAndSourceCode</AssemblerOutput> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <OutputFile>$(OutDir)testzlib.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'"> - <ClCompile> - <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - </ClCompile> - <Link> - <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <OutputFile>$(OutDir)testzlib.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> - <ClCompile> - <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - </ClCompile> - <Link> - <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <OutputFile>$(OutDir)testzlib.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemGroup> - <ClCompile Include="..\..\..\adler32.c" /> - <ClCompile Include="..\..\..\compress.c" /> - <ClCompile Include="..\..\..\crc32.c" /> - <ClCompile Include="..\..\..\deflate.c" /> - <ClCompile Include="..\..\..\infback.c" /> - <ClCompile Include="..\..\masmx64\inffas8664.c"> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> - </ClCompile> - <ClCompile Include="..\..\..\inffast.c" /> - <ClCompile Include="..\..\..\inflate.c" /> - <ClCompile Include="..\..\..\inftrees.c" /> - <ClCompile Include="..\..\testzlib\testzlib.c" /> - <ClCompile Include="..\..\..\trees.c" /> - <ClCompile Include="..\..\..\uncompr.c" /> - <ClCompile Include="..\..\..\zutil.c" /> - </ItemGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> - <ImportGroup Label="ExtensionTargets"> - </ImportGroup> -</Project> \ No newline at end of file diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters b/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters deleted file mode 100644 index 249daa89caf..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup> - <Filter Include="Source Files"> - <UniqueIdentifier>{c1f6a2e3-5da5-4955-8653-310d3efe05a9}</UniqueIdentifier> - <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm</Extensions> - </Filter> - <Filter Include="Header Files"> - <UniqueIdentifier>{c2aaffdc-2c95-4d6f-8466-4bec5890af2c}</UniqueIdentifier> - <Extensions>h;hpp;hxx;hm;inl;inc</Extensions> - </Filter> - <Filter Include="Resource Files"> - <UniqueIdentifier>{c274fe07-05f2-461c-964b-f6341e4e7eb5}</UniqueIdentifier> - <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions> - </Filter> - </ItemGroup> - <ItemGroup> - <ClCompile Include="..\..\..\adler32.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\compress.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\crc32.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\deflate.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\infback.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\masmx64\inffas8664.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\inffast.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\inflate.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\inftrees.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\testzlib\testzlib.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\trees.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\uncompr.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\zutil.c"> - <Filter>Source Files</Filter> - </ClCompile> - </ItemGroup> -</Project> \ No newline at end of file diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj b/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj deleted file mode 100644 index bcb08ff95d3..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj +++ /dev/null @@ -1,310 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|Itanium"> - <Configuration>Debug</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|x64"> - <Configuration>Debug</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Itanium"> - <Configuration>Release</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|x64"> - <Configuration>Release</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Label="Globals"> - <ProjectGuid>{C52F9E7B-498A-42BE-8DB4-85A15694366A}</ProjectGuid> - <Keyword>Win32Proj</Keyword> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> - <ImportGroup Label="ExtensionSettings"> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <PropertyGroup Label="UserMacros" /> - <PropertyGroup> - <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\TestZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\TestZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\TestZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\TestZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\TestZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\TestZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\TestZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\TestZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\TestZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\TestZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\TestZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\TestZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</GenerateManifest> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - </PropertyGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>true</MinimalRebuild> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>EditAndContinue</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)testzlibdll.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <TargetMachine>MachineX86</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)testzlibdll.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <TargetMachine>MachineX86</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> - <Midl> - <TargetEnvironment>X64</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>true</MinimalRebuild> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)testzlibdll.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <TargetMachine>MachineX64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>true</MinimalRebuild> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>ia64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)testzlibdll.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> - <Midl> - <TargetEnvironment>X64</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)testzlibdll.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <TargetMachine>MachineX64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>ia64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)testzlibdll.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemGroup> - <ClCompile Include="..\..\testzlib\testzlib.c" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="zlibvc.vcxproj"> - <Project>{8fd826f8-3739-44e6-8cc8-997122e53b8d}</Project> - </ProjectReference> - </ItemGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> - <ImportGroup Label="ExtensionTargets"> - </ImportGroup> -</Project> \ No newline at end of file diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters b/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters deleted file mode 100644 index 53a8693bb0a..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup> - <Filter Include="Source Files"> - <UniqueIdentifier>{fa61a89f-93fc-4c89-b29e-36224b7592f4}</UniqueIdentifier> - <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm</Extensions> - </Filter> - <Filter Include="Header Files"> - <UniqueIdentifier>{d4b85da0-2ba2-4934-b57f-e2584e3848ee}</UniqueIdentifier> - <Extensions>h;hpp;hxx;hm;inl;inc</Extensions> - </Filter> - <Filter Include="Resource Files"> - <UniqueIdentifier>{e573e075-00bd-4a7d-bd67-a8cc9bfc5aca}</UniqueIdentifier> - <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions> - </Filter> - </ItemGroup> - <ItemGroup> - <ClCompile Include="..\..\testzlib\testzlib.c"> - <Filter>Source Files</Filter> - </ClCompile> - </ItemGroup> -</Project> \ No newline at end of file diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/zlib.rc b/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/zlib.rc deleted file mode 100644 index 73f6476d605..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/zlib.rc +++ /dev/null @@ -1,32 +0,0 @@ -#include <windows.h> - -#define IDR_VERSION1 1 -IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE - FILEVERSION 1,2,8,0 - PRODUCTVERSION 1,2,8,0 - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK - FILEFLAGS 0 - FILEOS VOS_DOS_WINDOWS32 - FILETYPE VFT_DLL - FILESUBTYPE 0 // not used -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904E4" - //language ID = U.S. English, char set = Windows, Multilingual - - BEGIN - VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0" - VALUE "FileVersion", "1.2.8\0" - VALUE "InternalName", "zlib\0" - VALUE "OriginalFilename", "zlibwapi.dll\0" - VALUE "ProductName", "ZLib.DLL\0" - VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" - VALUE "LegalCopyright", "(C) 1995-2013 Jean-loup Gailly & Mark Adler\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0409, 1252 - END -END diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/zlibstat.vcxproj b/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/zlibstat.vcxproj deleted file mode 100644 index b9f2bbe5f0b..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/zlibstat.vcxproj +++ /dev/null @@ -1,473 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|Itanium"> - <Configuration>Debug</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|x64"> - <Configuration>Debug</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="ReleaseWithoutAsm|Itanium"> - <Configuration>ReleaseWithoutAsm</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="ReleaseWithoutAsm|Win32"> - <Configuration>ReleaseWithoutAsm</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="ReleaseWithoutAsm|x64"> - <Configuration>ReleaseWithoutAsm</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Itanium"> - <Configuration>Release</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|x64"> - <Configuration>Release</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Label="Globals"> - <ProjectGuid>{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}</ProjectGuid> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="Configuration"> - <ConfigurationType>StaticLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> - <ConfigurationType>StaticLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> - <ConfigurationType>StaticLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" Label="Configuration"> - <ConfigurationType>StaticLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="Configuration"> - <ConfigurationType>StaticLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="Configuration"> - <ConfigurationType>StaticLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="Configuration"> - <ConfigurationType>StaticLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> - <ConfigurationType>StaticLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> - <ConfigurationType>StaticLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> - <ImportGroup Label="ExtensionSettings"> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <PropertyGroup Label="UserMacros" /> - <PropertyGroup> - <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\ZlibStat$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\ZlibStat$(Configuration)\Tmp\</IntDir> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\ZlibStat$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\ZlibStat$(Configuration)\Tmp\</IntDir> - <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\ZlibStat$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\ZlibStat$(Configuration)\Tmp\</IntDir> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\ZlibStat$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\ZlibStat$(Configuration)\Tmp\</IntDir> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\ZlibStat$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\ZlibStat$(Configuration)\Tmp\</IntDir> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\ZlibStat$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\ZlibStat$(Configuration)\Tmp\</IntDir> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\ZlibStat$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\ZlibStat$(Configuration)\Tmp\</IntDir> - <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\ZlibStat$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\ZlibStat$(Configuration)\Tmp\</IntDir> - <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">ia64\ZlibStat$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">ia64\ZlibStat$(Configuration)\Tmp\</IntDir> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - </PropertyGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - <DebugInformationFormat>OldStyle</DebugInformationFormat> - </ClCompile> - <ResourceCompile> - <Culture>0x040c</Culture> - </ResourceCompile> - <Lib> - <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions> - <OutputFile>$(OutDir)zlibstat.lib</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - </Lib> - <PreBuildEvent> - <Command>cd ..\..\masmx86 -bld_ml32.bat</Command> - </PreBuildEvent> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <Culture>0x040c</Culture> - </ResourceCompile> - <Lib> - <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions> - <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)zlibstat.lib</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - </Lib> - <PreBuildEvent> - <Command>cd ..\..\masmx86 -bld_ml32.bat</Command> - </PreBuildEvent> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'"> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <Culture>0x040c</Culture> - </ResourceCompile> - <Lib> - <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions> - <OutputFile>$(OutDir)zlibstat.lib</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - </Lib> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> - <Midl> - <TargetEnvironment>X64</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - <DebugInformationFormat>OldStyle</DebugInformationFormat> - </ClCompile> - <ResourceCompile> - <Culture>0x040c</Culture> - </ResourceCompile> - <Lib> - <AdditionalOptions>/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions> - <OutputFile>$(OutDir)zlibstat.lib</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - </Lib> - <PreBuildEvent> - <Command>cd ..\..\masmx64 -bld_ml64.bat</Command> - </PreBuildEvent> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - <DebugInformationFormat>OldStyle</DebugInformationFormat> - </ClCompile> - <ResourceCompile> - <Culture>0x040c</Culture> - </ResourceCompile> - <Lib> - <AdditionalOptions>/MACHINE:IA64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions> - <OutputFile>$(OutDir)zlibstat.lib</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - </Lib> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> - <Midl> - <TargetEnvironment>X64</TargetEnvironment> - </Midl> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <Culture>0x040c</Culture> - </ResourceCompile> - <Lib> - <AdditionalOptions>/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions> - <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)zlibstat.lib</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - </Lib> - <PreBuildEvent> - <Command>cd ..\..\masmx64 -bld_ml64.bat</Command> - </PreBuildEvent> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <Culture>0x040c</Culture> - </ResourceCompile> - <Lib> - <AdditionalOptions>/MACHINE:IA64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions> - <OutputFile>$(OutDir)zlibstat.lib</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - </Lib> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'"> - <Midl> - <TargetEnvironment>X64</TargetEnvironment> - </Midl> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <Culture>0x040c</Culture> - </ResourceCompile> - <Lib> - <AdditionalOptions>/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions> - <OutputFile>$(OutDir)zlibstat.lib</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - </Lib> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <Culture>0x040c</Culture> - </ResourceCompile> - <Lib> - <AdditionalOptions>/MACHINE:IA64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions> - <OutputFile>$(OutDir)zlibstat.lib</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - </Lib> - </ItemDefinitionGroup> - <ItemGroup> - <ClCompile Include="..\..\..\adler32.c" /> - <ClCompile Include="..\..\..\compress.c" /> - <ClCompile Include="..\..\..\crc32.c" /> - <ClCompile Include="..\..\..\deflate.c" /> - <ClCompile Include="..\..\..\gzclose.c" /> - <ClCompile Include="..\..\..\gzlib.c" /> - <ClCompile Include="..\..\..\gzread.c" /> - <ClCompile Include="..\..\..\gzwrite.c" /> - <ClCompile Include="..\..\..\infback.c" /> - <ClCompile Include="..\..\masmx64\inffas8664.c"> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> - </ClCompile> - <ClCompile Include="..\..\..\inffast.c" /> - <ClCompile Include="..\..\..\inflate.c" /> - <ClCompile Include="..\..\..\inftrees.c" /> - <ClCompile Include="..\..\minizip\ioapi.c" /> - <ClCompile Include="..\..\..\trees.c" /> - <ClCompile Include="..\..\..\uncompr.c" /> - <ClCompile Include="..\..\minizip\unzip.c" /> - <ClCompile Include="..\..\minizip\zip.c" /> - <ClCompile Include="..\..\..\zutil.c" /> - </ItemGroup> - <ItemGroup> - <ResourceCompile Include="zlib.rc" /> - </ItemGroup> - <ItemGroup> - <None Include="zlibvc.def" /> - </ItemGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> - <ImportGroup Label="ExtensionTargets"> - </ImportGroup> -</Project> \ No newline at end of file diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters b/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters deleted file mode 100644 index c8c7f7ea395..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters +++ /dev/null @@ -1,77 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup> - <Filter Include="Source Files"> - <UniqueIdentifier>{174213f6-7f66-4ae8-a3a8-a1e0a1e6ffdd}</UniqueIdentifier> - </Filter> - </ItemGroup> - <ItemGroup> - <ClCompile Include="..\..\..\adler32.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\compress.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\crc32.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\deflate.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\gzclose.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\gzlib.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\gzread.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\gzwrite.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\infback.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\masmx64\inffas8664.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\inffast.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\inflate.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\inftrees.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\minizip\ioapi.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\trees.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\uncompr.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\minizip\unzip.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\minizip\zip.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\zutil.c"> - <Filter>Source Files</Filter> - </ClCompile> - </ItemGroup> - <ItemGroup> - <ResourceCompile Include="zlib.rc"> - <Filter>Source Files</Filter> - </ResourceCompile> - </ItemGroup> - <ItemGroup> - <None Include="zlibvc.def"> - <Filter>Source Files</Filter> - </None> - </ItemGroup> -</Project> \ No newline at end of file diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/zlibvc.vcxproj b/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/zlibvc.vcxproj deleted file mode 100644 index 6ff9ddb0772..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/zlibvc.vcxproj +++ /dev/null @@ -1,657 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|Itanium"> - <Configuration>Debug</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|x64"> - <Configuration>Debug</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="ReleaseWithoutAsm|Itanium"> - <Configuration>ReleaseWithoutAsm</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="ReleaseWithoutAsm|Win32"> - <Configuration>ReleaseWithoutAsm</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="ReleaseWithoutAsm|x64"> - <Configuration>ReleaseWithoutAsm</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Itanium"> - <Configuration>Release</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|x64"> - <Configuration>Release</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Label="Globals"> - <ProjectGuid>{8FD826F8-3739-44E6-8CC8-997122E53B8D}</ProjectGuid> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - <WholeProgramOptimization>true</WholeProgramOptimization> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - <WholeProgramOptimization>true</WholeProgramOptimization> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - <WholeProgramOptimization>true</WholeProgramOptimization> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - <WholeProgramOptimization>true</WholeProgramOptimization> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - <WholeProgramOptimization>true</WholeProgramOptimization> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - <WholeProgramOptimization>true</WholeProgramOptimization> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> - <ImportGroup Label="ExtensionSettings"> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <PropertyGroup Label="UserMacros" /> - <PropertyGroup> - <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\ZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\ZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\ZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\ZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\ZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\ZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\ZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\ZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\ZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\ZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\ZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\ZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">ia64\ZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">ia64\ZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\ZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\ZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\ZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\ZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</GenerateManifest> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">zlibwapid</TargetName> - <TargetName Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">zlibwapi</TargetName> - <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">zlibwapi</TargetName> - <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">zlibwapid</TargetName> - <TargetName Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">zlibwapi</TargetName> - <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">zlibwapi</TargetName> - </PropertyGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <Midl> - <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MkTypLibCompatible>true</MkTypLibCompatible> - <SuppressStartupBanner>true</SuppressStartupBanner> - <TargetEnvironment>Win32</TargetEnvironment> - <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <BrowseInformation> - </BrowseInformation> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - <DebugInformationFormat>EditAndContinue</DebugInformationFormat> - </ClCompile> - <ResourceCompile> - <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <Culture>0x040c</Culture> - </ResourceCompile> - <Link> - <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions> - <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies> - <SuppressStartupBanner>true</SuppressStartupBanner> - <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <GenerateMapFile>true</GenerateMapFile> - <SubSystem>Windows</SubSystem> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - </Link> - <PreBuildEvent> - <Command>cd ..\..\masmx86 -bld_ml32.bat</Command> - </PreBuildEvent> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'"> - <Midl> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MkTypLibCompatible>true</MkTypLibCompatible> - <SuppressStartupBanner>true</SuppressStartupBanner> - <TargetEnvironment>Win32</TargetEnvironment> - <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName> - </Midl> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile> - <AssemblerOutput>All</AssemblerOutput> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <BrowseInformation> - </BrowseInformation> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <Culture>0x040c</Culture> - </ResourceCompile> - <Link> - <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions> - <SuppressStartupBanner>true</SuppressStartupBanner> - <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> - <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile> - <GenerateMapFile>true</GenerateMapFile> - <SubSystem>Windows</SubSystem> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <Midl> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MkTypLibCompatible>true</MkTypLibCompatible> - <SuppressStartupBanner>true</SuppressStartupBanner> - <TargetEnvironment>Win32</TargetEnvironment> - <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName> - </Midl> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile> - <AssemblerOutput>All</AssemblerOutput> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <BrowseInformation> - </BrowseInformation> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <Culture>0x040c</Culture> - </ResourceCompile> - <Link> - <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions> - <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies> - <SuppressStartupBanner>true</SuppressStartupBanner> - <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> - <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile> - <GenerateMapFile>true</GenerateMapFile> - <SubSystem>Windows</SubSystem> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - </Link> - <PreBuildEvent> - <Command>cd ..\..\masmx86 -bld_ml32.bat</Command> - </PreBuildEvent> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> - <Midl> - <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MkTypLibCompatible>true</MkTypLibCompatible> - <SuppressStartupBanner>true</SuppressStartupBanner> - <TargetEnvironment>X64</TargetEnvironment> - <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <BrowseInformation> - </BrowseInformation> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <ResourceCompile> - <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <Culture>0x040c</Culture> - </ResourceCompile> - <Link> - <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies> - <SuppressStartupBanner>true</SuppressStartupBanner> - <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <GenerateMapFile>true</GenerateMapFile> - <SubSystem>Windows</SubSystem> - <TargetMachine>MachineX64</TargetMachine> - </Link> - <PreBuildEvent> - <Command>cd ..\..\masmx64 -bld_ml64.bat</Command> - </PreBuildEvent> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'"> - <Midl> - <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MkTypLibCompatible>true</MkTypLibCompatible> - <SuppressStartupBanner>true</SuppressStartupBanner> - <TargetEnvironment>Itanium</TargetEnvironment> - <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <BrowseInformation> - </BrowseInformation> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <ResourceCompile> - <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <Culture>0x040c</Culture> - </ResourceCompile> - <Link> - <OutputFile>$(OutDir)zlibwapi.dll</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile> - <GenerateMapFile>true</GenerateMapFile> - <MapFileName>$(OutDir)zlibwapi.map</MapFileName> - <SubSystem>Windows</SubSystem> - <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'"> - <Midl> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MkTypLibCompatible>true</MkTypLibCompatible> - <SuppressStartupBanner>true</SuppressStartupBanner> - <TargetEnvironment>X64</TargetEnvironment> - <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName> - </Midl> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile> - <AssemblerOutput>All</AssemblerOutput> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <BrowseInformation> - </BrowseInformation> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <Culture>0x040c</Culture> - </ResourceCompile> - <Link> - <SuppressStartupBanner>true</SuppressStartupBanner> - <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> - <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile> - <GenerateMapFile>true</GenerateMapFile> - <SubSystem>Windows</SubSystem> - <TargetMachine>MachineX64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'"> - <Midl> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MkTypLibCompatible>true</MkTypLibCompatible> - <SuppressStartupBanner>true</SuppressStartupBanner> - <TargetEnvironment>Itanium</TargetEnvironment> - <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName> - </Midl> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile> - <AssemblerOutput>All</AssemblerOutput> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <BrowseInformation> - </BrowseInformation> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <Culture>0x040c</Culture> - </ResourceCompile> - <Link> - <OutputFile>$(OutDir)zlibwapi.dll</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> - <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile> - <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile> - <GenerateMapFile>true</GenerateMapFile> - <MapFileName>$(OutDir)zlibwapi.map</MapFileName> - <SubSystem>Windows</SubSystem> - <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> - <Midl> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MkTypLibCompatible>true</MkTypLibCompatible> - <SuppressStartupBanner>true</SuppressStartupBanner> - <TargetEnvironment>X64</TargetEnvironment> - <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName> - </Midl> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile> - <AssemblerOutput>All</AssemblerOutput> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <BrowseInformation> - </BrowseInformation> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <Culture>0x040c</Culture> - </ResourceCompile> - <Link> - <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies> - <SuppressStartupBanner>true</SuppressStartupBanner> - <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> - <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile> - <GenerateMapFile>true</GenerateMapFile> - <SubSystem>Windows</SubSystem> - <TargetMachine>MachineX64</TargetMachine> - </Link> - <PreBuildEvent> - <Command>cd ..\..\masmx64 -bld_ml64.bat</Command> - </PreBuildEvent> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'"> - <Midl> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MkTypLibCompatible>true</MkTypLibCompatible> - <SuppressStartupBanner>true</SuppressStartupBanner> - <TargetEnvironment>Itanium</TargetEnvironment> - <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName> - </Midl> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile> - <AssemblerOutput>All</AssemblerOutput> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <BrowseInformation> - </BrowseInformation> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <Culture>0x040c</Culture> - </ResourceCompile> - <Link> - <OutputFile>$(OutDir)zlibwapi.dll</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> - <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile> - <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile> - <GenerateMapFile>true</GenerateMapFile> - <MapFileName>$(OutDir)zlibwapi.map</MapFileName> - <SubSystem>Windows</SubSystem> - <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemGroup> - <ClCompile Include="..\..\..\adler32.c" /> - <ClCompile Include="..\..\..\compress.c" /> - <ClCompile Include="..\..\..\crc32.c" /> - <ClCompile Include="..\..\..\deflate.c" /> - <ClCompile Include="..\..\..\gzclose.c" /> - <ClCompile Include="..\..\..\gzlib.c" /> - <ClCompile Include="..\..\..\gzread.c" /> - <ClCompile Include="..\..\..\gzwrite.c" /> - <ClCompile Include="..\..\..\infback.c" /> - <ClCompile Include="..\..\masmx64\inffas8664.c"> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> - </ClCompile> - <ClCompile Include="..\..\..\inffast.c" /> - <ClCompile Include="..\..\..\inflate.c" /> - <ClCompile Include="..\..\..\inftrees.c" /> - <ClCompile Include="..\..\minizip\ioapi.c" /> - <ClCompile Include="..\..\minizip\iowin32.c" /> - <ClCompile Include="..\..\..\trees.c" /> - <ClCompile Include="..\..\..\uncompr.c" /> - <ClCompile Include="..\..\minizip\unzip.c"> - <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions> - </ClCompile> - <ClCompile Include="..\..\minizip\zip.c"> - <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions> - </ClCompile> - <ClCompile Include="..\..\..\zutil.c" /> - </ItemGroup> - <ItemGroup> - <ResourceCompile Include="zlib.rc" /> - </ItemGroup> - <ItemGroup> - <None Include="zlibvc.def" /> - </ItemGroup> - <ItemGroup> - <ClInclude Include="..\..\..\deflate.h" /> - <ClInclude Include="..\..\..\infblock.h" /> - <ClInclude Include="..\..\..\infcodes.h" /> - <ClInclude Include="..\..\..\inffast.h" /> - <ClInclude Include="..\..\..\inftrees.h" /> - <ClInclude Include="..\..\..\infutil.h" /> - <ClInclude Include="..\..\..\zconf.h" /> - <ClInclude Include="..\..\..\zlib.h" /> - <ClInclude Include="..\..\..\zutil.h" /> - </ItemGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> - <ImportGroup Label="ExtensionTargets"> - </ImportGroup> -</Project> \ No newline at end of file diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters b/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters deleted file mode 100644 index 180b71cd61d..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters +++ /dev/null @@ -1,118 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup> - <Filter Include="Source Files"> - <UniqueIdentifier>{07934a85-8b61-443d-a0ee-b2eedb74f3cd}</UniqueIdentifier> - <Extensions>cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90</Extensions> - </Filter> - <Filter Include="Header Files"> - <UniqueIdentifier>{1d99675b-433d-4a21-9e50-ed4ab8b19762}</UniqueIdentifier> - <Extensions>h;hpp;hxx;hm;inl;fi;fd</Extensions> - </Filter> - <Filter Include="Resource Files"> - <UniqueIdentifier>{431c0958-fa71-44d0-9084-2d19d100c0cc}</UniqueIdentifier> - <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe</Extensions> - </Filter> - </ItemGroup> - <ItemGroup> - <ClCompile Include="..\..\..\adler32.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\compress.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\crc32.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\deflate.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\gzclose.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\gzlib.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\gzread.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\gzwrite.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\infback.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\masmx64\inffas8664.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\inffast.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\inflate.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\inftrees.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\minizip\ioapi.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\minizip\iowin32.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\trees.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\uncompr.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\minizip\unzip.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\minizip\zip.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\..\zutil.c"> - <Filter>Source Files</Filter> - </ClCompile> - </ItemGroup> - <ItemGroup> - <ResourceCompile Include="zlib.rc"> - <Filter>Source Files</Filter> - </ResourceCompile> - </ItemGroup> - <ItemGroup> - <None Include="zlibvc.def"> - <Filter>Source Files</Filter> - </None> - </ItemGroup> - <ItemGroup> - <ClInclude Include="..\..\..\deflate.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="..\..\..\infblock.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="..\..\..\infcodes.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="..\..\..\inffast.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="..\..\..\inftrees.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="..\..\..\infutil.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="..\..\..\zconf.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="..\..\..\zlib.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="..\..\..\zutil.h"> - <Filter>Header Files</Filter> - </ClInclude> - </ItemGroup> -</Project> \ No newline at end of file diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc11/miniunz.vcxproj b/platform/win32/msvc/external/zlib/contrib/vstudio/vc11/miniunz.vcxproj deleted file mode 100644 index 8f9f20bd329..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc11/miniunz.vcxproj +++ /dev/null @@ -1,314 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|Itanium"> - <Configuration>Debug</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|x64"> - <Configuration>Debug</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Itanium"> - <Configuration>Release</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|x64"> - <Configuration>Release</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Label="Globals"> - <ProjectGuid>{C52F9E7B-498A-42BE-8DB4-85A15694382A}</ProjectGuid> - <Keyword>Win32Proj</Keyword> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>Unicode</CharacterSet> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> - <ImportGroup Label="ExtensionSettings"> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <PropertyGroup Label="UserMacros" /> - <PropertyGroup> - <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\MiniUnzip$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\MiniUnzip$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\MiniUnzip$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\MiniUnzip$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\MiniUnzip$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\MiniUnzip$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\MiniUnzip$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\MiniUnzip$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\MiniUnzip$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\MiniUnzip$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\MiniUnzip$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\MiniUnzip$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</GenerateManifest> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - </PropertyGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>true</MinimalRebuild> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)miniunz.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)miniunz.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <TargetMachine>MachineX86</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)miniunz.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <TargetMachine>MachineX86</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> - <Midl> - <TargetEnvironment>X64</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>true</MinimalRebuild> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)miniunz.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)miniunz.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <TargetMachine>MachineX64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>true</MinimalRebuild> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>ia64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)miniunz.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)miniunz.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> - <Midl> - <TargetEnvironment>X64</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)miniunz.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <TargetMachine>MachineX64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>ia64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)miniunz.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemGroup> - <ClCompile Include="..\..\minizip\miniunz.c" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="zlibvc.vcxproj"> - <Project>{8fd826f8-3739-44e6-8cc8-997122e53b8d}</Project> - </ProjectReference> - </ItemGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> - <ImportGroup Label="ExtensionTargets"> - </ImportGroup> -</Project> \ No newline at end of file diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc11/minizip.vcxproj b/platform/win32/msvc/external/zlib/contrib/vstudio/vc11/minizip.vcxproj deleted file mode 100644 index c93d9e6fffb..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc11/minizip.vcxproj +++ /dev/null @@ -1,311 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|Itanium"> - <Configuration>Debug</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|x64"> - <Configuration>Debug</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Itanium"> - <Configuration>Release</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|x64"> - <Configuration>Release</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Label="Globals"> - <ProjectGuid>{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}</ProjectGuid> - <Keyword>Win32Proj</Keyword> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>Unicode</CharacterSet> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> - <ImportGroup Label="ExtensionSettings"> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <PropertyGroup Label="UserMacros" /> - <PropertyGroup> - <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\MiniZip$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\MiniZip$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\MiniZip$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\MiniZip$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\$(Configuration)\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\$(Configuration)\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\$(Configuration)\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\$(Configuration)\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</LinkIncremental> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - </PropertyGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>true</MinimalRebuild> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)minizip.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)minizip.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <TargetMachine>MachineX86</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)minizip.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <TargetMachine>MachineX86</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> - <Midl> - <TargetEnvironment>X64</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>true</MinimalRebuild> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)minizip.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)minizip.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <TargetMachine>MachineX64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>true</MinimalRebuild> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>ia64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)minizip.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)minizip.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> - <Midl> - <TargetEnvironment>X64</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)minizip.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <TargetMachine>MachineX64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>ia64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)minizip.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemGroup> - <ClCompile Include="..\..\minizip\minizip.c" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="zlibvc.vcxproj"> - <Project>{8fd826f8-3739-44e6-8cc8-997122e53b8d}</Project> - </ProjectReference> - </ItemGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> - <ImportGroup Label="ExtensionTargets"> - </ImportGroup> -</Project> \ No newline at end of file diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc11/testzlib.vcxproj b/platform/win32/msvc/external/zlib/contrib/vstudio/vc11/testzlib.vcxproj deleted file mode 100644 index 6d559540130..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc11/testzlib.vcxproj +++ /dev/null @@ -1,426 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|Itanium"> - <Configuration>Debug</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|x64"> - <Configuration>Debug</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="ReleaseWithoutAsm|Itanium"> - <Configuration>ReleaseWithoutAsm</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="ReleaseWithoutAsm|Win32"> - <Configuration>ReleaseWithoutAsm</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="ReleaseWithoutAsm|x64"> - <Configuration>ReleaseWithoutAsm</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Itanium"> - <Configuration>Release</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|x64"> - <Configuration>Release</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Label="Globals"> - <ProjectGuid>{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}</ProjectGuid> - <RootNamespace>testzlib</RootNamespace> - <Keyword>Win32Proj</Keyword> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - <WholeProgramOptimization>true</WholeProgramOptimization> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - <WholeProgramOptimization>true</WholeProgramOptimization> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>Unicode</CharacterSet> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - <WholeProgramOptimization>true</WholeProgramOptimization> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - <WholeProgramOptimization>true</WholeProgramOptimization> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <WholeProgramOptimization>true</WholeProgramOptimization> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <WholeProgramOptimization>true</WholeProgramOptimization> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> - <ImportGroup Label="ExtensionSettings"> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <PropertyGroup Label="UserMacros" /> - <PropertyGroup> - <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\TestZlib$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\TestZlib$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\TestZlib$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\TestZlib$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\TestZlib$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\TestZlib$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\TestZlib$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\TestZlib$(Configuration)\Tmp\</IntDir> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\TestZlib$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\TestZlib$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\TestZlib$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\TestZlib$(Configuration)\Tmp\</IntDir> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">ia64\TestZlib$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">ia64\TestZlib$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\TestZlib$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\TestZlib$(Configuration)\Tmp\</IntDir> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\TestZlib$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\TestZlib$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</GenerateManifest> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - </PropertyGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>true</MinimalRebuild> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerOutput>AssemblyAndSourceCode</AssemblerOutput> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)testzlib.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <TargetMachine>MachineX86</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'"> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <OutputFile>$(OutDir)testzlib.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <TargetMachine>MachineX86</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)testzlib.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <TargetMachine>MachineX86</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> - <ClCompile> - <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - </ClCompile> - <Link> - <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>true</MinimalRebuild> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerOutput>AssemblyAndSourceCode</AssemblerOutput> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <OutputFile>$(OutDir)testzlib.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'"> - <ClCompile> - <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - </ClCompile> - <Link> - <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <OutputFile>$(OutDir)testzlib.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> - <ClCompile> - <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - </ClCompile> - <Link> - <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <OutputFile>$(OutDir)testzlib.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemGroup> - <ClCompile Include="..\..\..\adler32.c" /> - <ClCompile Include="..\..\..\compress.c" /> - <ClCompile Include="..\..\..\crc32.c" /> - <ClCompile Include="..\..\..\deflate.c" /> - <ClCompile Include="..\..\..\infback.c" /> - <ClCompile Include="..\..\masmx64\inffas8664.c"> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> - </ClCompile> - <ClCompile Include="..\..\..\inffast.c" /> - <ClCompile Include="..\..\..\inflate.c" /> - <ClCompile Include="..\..\..\inftrees.c" /> - <ClCompile Include="..\..\testzlib\testzlib.c" /> - <ClCompile Include="..\..\..\trees.c" /> - <ClCompile Include="..\..\..\uncompr.c" /> - <ClCompile Include="..\..\..\zutil.c" /> - </ItemGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> - <ImportGroup Label="ExtensionTargets"> - </ImportGroup> -</Project> \ No newline at end of file diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj b/platform/win32/msvc/external/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj deleted file mode 100644 index 9f20c78f60b..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj +++ /dev/null @@ -1,314 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|Itanium"> - <Configuration>Debug</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|x64"> - <Configuration>Debug</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Itanium"> - <Configuration>Release</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|x64"> - <Configuration>Release</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Label="Globals"> - <ProjectGuid>{C52F9E7B-498A-42BE-8DB4-85A15694366A}</ProjectGuid> - <Keyword>Win32Proj</Keyword> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>Unicode</CharacterSet> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> - <ImportGroup Label="ExtensionSettings"> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <PropertyGroup Label="UserMacros" /> - <PropertyGroup> - <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\TestZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\TestZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\TestZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\TestZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\TestZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\TestZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\TestZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\TestZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\TestZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\TestZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\TestZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\TestZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</GenerateManifest> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - </PropertyGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>true</MinimalRebuild> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)testzlibdll.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <TargetMachine>MachineX86</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)testzlibdll.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <TargetMachine>MachineX86</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> - <Midl> - <TargetEnvironment>X64</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>true</MinimalRebuild> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)testzlibdll.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <TargetMachine>MachineX64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>true</MinimalRebuild> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>ia64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)testzlibdll.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> - <Midl> - <TargetEnvironment>X64</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)testzlibdll.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <TargetMachine>MachineX64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <OmitFramePointers>true</OmitFramePointers> - <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <BasicRuntimeChecks>Default</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeader> - </PrecompiledHeader> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <Link> - <AdditionalDependencies>ia64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)testzlibdll.exe</OutputFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemGroup> - <ClCompile Include="..\..\testzlib\testzlib.c" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="zlibvc.vcxproj"> - <Project>{8fd826f8-3739-44e6-8cc8-997122e53b8d}</Project> - </ProjectReference> - </ItemGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> - <ImportGroup Label="ExtensionTargets"> - </ImportGroup> -</Project> \ No newline at end of file diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc11/zlib.rc b/platform/win32/msvc/external/zlib/contrib/vstudio/vc11/zlib.rc deleted file mode 100644 index 73f6476d605..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc11/zlib.rc +++ /dev/null @@ -1,32 +0,0 @@ -#include <windows.h> - -#define IDR_VERSION1 1 -IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE - FILEVERSION 1,2,8,0 - PRODUCTVERSION 1,2,8,0 - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK - FILEFLAGS 0 - FILEOS VOS_DOS_WINDOWS32 - FILETYPE VFT_DLL - FILESUBTYPE 0 // not used -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904E4" - //language ID = U.S. English, char set = Windows, Multilingual - - BEGIN - VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0" - VALUE "FileVersion", "1.2.8\0" - VALUE "InternalName", "zlib\0" - VALUE "OriginalFilename", "zlibwapi.dll\0" - VALUE "ProductName", "ZLib.DLL\0" - VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" - VALUE "LegalCopyright", "(C) 1995-2013 Jean-loup Gailly & Mark Adler\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0409, 1252 - END -END diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc11/zlibstat.vcxproj b/platform/win32/msvc/external/zlib/contrib/vstudio/vc11/zlibstat.vcxproj deleted file mode 100644 index 806b76a88b6..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc11/zlibstat.vcxproj +++ /dev/null @@ -1,464 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|Itanium"> - <Configuration>Debug</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|x64"> - <Configuration>Debug</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="ReleaseWithoutAsm|Itanium"> - <Configuration>ReleaseWithoutAsm</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="ReleaseWithoutAsm|Win32"> - <Configuration>ReleaseWithoutAsm</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="ReleaseWithoutAsm|x64"> - <Configuration>ReleaseWithoutAsm</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Itanium"> - <Configuration>Release</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|x64"> - <Configuration>Release</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Label="Globals"> - <ProjectGuid>{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}</ProjectGuid> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="Configuration"> - <ConfigurationType>StaticLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> - <ConfigurationType>StaticLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> - <ConfigurationType>StaticLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - <PlatformToolset>v110</PlatformToolset> - <CharacterSet>Unicode</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" Label="Configuration"> - <ConfigurationType>StaticLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="Configuration"> - <ConfigurationType>StaticLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="Configuration"> - <ConfigurationType>StaticLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="Configuration"> - <ConfigurationType>StaticLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> - <ConfigurationType>StaticLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> - <ConfigurationType>StaticLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> - <ImportGroup Label="ExtensionSettings"> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <PropertyGroup Label="UserMacros" /> - <PropertyGroup> - <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\ZlibStat$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\ZlibStat$(Configuration)\Tmp\</IntDir> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\ZlibStat$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\ZlibStat$(Configuration)\Tmp\</IntDir> - <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\ZlibStat$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\ZlibStat$(Configuration)\Tmp\</IntDir> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\ZlibStat$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\ZlibStat$(Configuration)\Tmp\</IntDir> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\ZlibStat$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\ZlibStat$(Configuration)\Tmp\</IntDir> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\ZlibStat$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\ZlibStat$(Configuration)\Tmp\</IntDir> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\ZlibStat$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\ZlibStat$(Configuration)\Tmp\</IntDir> - <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\ZlibStat$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\ZlibStat$(Configuration)\Tmp\</IntDir> - <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">ia64\ZlibStat$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">ia64\ZlibStat$(Configuration)\Tmp\</IntDir> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - </PropertyGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - <DebugInformationFormat>OldStyle</DebugInformationFormat> - </ClCompile> - <ResourceCompile> - <Culture>0x040c</Culture> - </ResourceCompile> - <Lib> - <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions> - <OutputFile>$(OutDir)zlibstat.lib</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - </Lib> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <Culture>0x040c</Culture> - </ResourceCompile> - <Lib> - <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions> - <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)zlibstat.lib</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - </Lib> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'"> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <Culture>0x040c</Culture> - </ResourceCompile> - <Lib> - <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions> - <OutputFile>$(OutDir)zlibstat.lib</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - </Lib> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> - <Midl> - <TargetEnvironment>X64</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - <DebugInformationFormat>OldStyle</DebugInformationFormat> - </ClCompile> - <ResourceCompile> - <Culture>0x040c</Culture> - </ResourceCompile> - <Lib> - <AdditionalOptions>/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions> - <OutputFile>$(OutDir)zlibstat.lib</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - </Lib> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - <DebugInformationFormat>OldStyle</DebugInformationFormat> - </ClCompile> - <ResourceCompile> - <Culture>0x040c</Culture> - </ResourceCompile> - <Lib> - <AdditionalOptions>/MACHINE:IA64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions> - <OutputFile>$(OutDir)zlibstat.lib</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - </Lib> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> - <Midl> - <TargetEnvironment>X64</TargetEnvironment> - </Midl> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <Culture>0x040c</Culture> - </ResourceCompile> - <Lib> - <AdditionalOptions>/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions> - <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)zlibstat.lib</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - </Lib> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <Culture>0x040c</Culture> - </ResourceCompile> - <Lib> - <AdditionalOptions>/MACHINE:IA64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions> - <OutputFile>$(OutDir)zlibstat.lib</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - </Lib> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'"> - <Midl> - <TargetEnvironment>X64</TargetEnvironment> - </Midl> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <Culture>0x040c</Culture> - </ResourceCompile> - <Lib> - <AdditionalOptions>/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions> - <OutputFile>$(OutDir)zlibstat.lib</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - </Lib> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'"> - <Midl> - <TargetEnvironment>Itanium</TargetEnvironment> - </Midl> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <Culture>0x040c</Culture> - </ResourceCompile> - <Lib> - <AdditionalOptions>/MACHINE:IA64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions> - <OutputFile>$(OutDir)zlibstat.lib</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - </Lib> - </ItemDefinitionGroup> - <ItemGroup> - <ClCompile Include="..\..\..\adler32.c" /> - <ClCompile Include="..\..\..\compress.c" /> - <ClCompile Include="..\..\..\crc32.c" /> - <ClCompile Include="..\..\..\deflate.c" /> - <ClCompile Include="..\..\..\gzclose.c" /> - <ClCompile Include="..\..\..\gzlib.c" /> - <ClCompile Include="..\..\..\gzread.c" /> - <ClCompile Include="..\..\..\gzwrite.c" /> - <ClCompile Include="..\..\..\infback.c" /> - <ClCompile Include="..\..\masmx64\inffas8664.c"> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> - </ClCompile> - <ClCompile Include="..\..\..\inffast.c" /> - <ClCompile Include="..\..\..\inflate.c" /> - <ClCompile Include="..\..\..\inftrees.c" /> - <ClCompile Include="..\..\minizip\ioapi.c" /> - <ClCompile Include="..\..\..\trees.c" /> - <ClCompile Include="..\..\..\uncompr.c" /> - <ClCompile Include="..\..\minizip\unzip.c" /> - <ClCompile Include="..\..\minizip\zip.c" /> - <ClCompile Include="..\..\..\zutil.c" /> - </ItemGroup> - <ItemGroup> - <ResourceCompile Include="zlib.rc" /> - </ItemGroup> - <ItemGroup> - <None Include="zlibvc.def" /> - </ItemGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> - <ImportGroup Label="ExtensionTargets"> - </ImportGroup> -</Project> \ No newline at end of file diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc11/zlibvc.vcxproj b/platform/win32/msvc/external/zlib/contrib/vstudio/vc11/zlibvc.vcxproj deleted file mode 100644 index c65b95fdbb5..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc11/zlibvc.vcxproj +++ /dev/null @@ -1,688 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|Itanium"> - <Configuration>Debug</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|x64"> - <Configuration>Debug</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="ReleaseWithoutAsm|Itanium"> - <Configuration>ReleaseWithoutAsm</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="ReleaseWithoutAsm|Win32"> - <Configuration>ReleaseWithoutAsm</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="ReleaseWithoutAsm|x64"> - <Configuration>ReleaseWithoutAsm</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Itanium"> - <Configuration>Release</Configuration> - <Platform>Itanium</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|x64"> - <Configuration>Release</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Label="Globals"> - <ProjectGuid>{8FD826F8-3739-44E6-8CC8-997122E53B8D}</ProjectGuid> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - <WholeProgramOptimization>true</WholeProgramOptimization> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - <WholeProgramOptimization>true</WholeProgramOptimization> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - <PlatformToolset>v110</PlatformToolset> - <CharacterSet>Unicode</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - <WholeProgramOptimization>true</WholeProgramOptimization> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - <WholeProgramOptimization>true</WholeProgramOptimization> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - <WholeProgramOptimization>true</WholeProgramOptimization> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - <WholeProgramOptimization>true</WholeProgramOptimization> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <UseOfMfc>false</UseOfMfc> - <PlatformToolset>v110</PlatformToolset> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> - <ImportGroup Label="ExtensionSettings"> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <PropertyGroup Label="UserMacros" /> - <PropertyGroup> - <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\ZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\ZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\ZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\ZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\ZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\ZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\ZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\ZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\ZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">ia64\ZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\ZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\ZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">ia64\ZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">ia64\ZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\ZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\ZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</GenerateManifest> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\ZlibDll$(Configuration)\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ia64\ZlibDll$(Configuration)\Tmp\</IntDir> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</LinkIncremental> - <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">false</GenerateManifest> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> - <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet> - <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> - <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">zlibwapi</TargetName> - <TargetName Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">zlibwapi</TargetName> - <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">zlibwapi</TargetName> - <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">zlibwapi</TargetName> - <TargetName Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">zlibwapi</TargetName> - <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">zlibwapi</TargetName> - </PropertyGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <Midl> - <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MkTypLibCompatible>true</MkTypLibCompatible> - <SuppressStartupBanner>true</SuppressStartupBanner> - <TargetEnvironment>Win32</TargetEnvironment> - <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <BrowseInformation> - </BrowseInformation> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <ResourceCompile> - <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <Culture>0x040c</Culture> - </ResourceCompile> - <Link> - <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions> - <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)zlibwapi.dll</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile> - <GenerateMapFile>true</GenerateMapFile> - <MapFileName>$(OutDir)zlibwapi.map</MapFileName> - <SubSystem>Windows</SubSystem> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary> - </Link> - <PreBuildEvent> - <Command>cd ..\..\masmx86 -bld_ml32.bat</Command> - </PreBuildEvent> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'"> - <Midl> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MkTypLibCompatible>true</MkTypLibCompatible> - <SuppressStartupBanner>true</SuppressStartupBanner> - <TargetEnvironment>Win32</TargetEnvironment> - <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName> - </Midl> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile> - <AssemblerOutput>All</AssemblerOutput> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <BrowseInformation> - </BrowseInformation> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <Culture>0x040c</Culture> - </ResourceCompile> - <Link> - <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions> - <OutputFile>$(OutDir)zlibwapi.dll</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> - <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile> - <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile> - <GenerateMapFile>true</GenerateMapFile> - <MapFileName>$(OutDir)zlibwapi.map</MapFileName> - <SubSystem>Windows</SubSystem> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <Midl> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MkTypLibCompatible>true</MkTypLibCompatible> - <SuppressStartupBanner>true</SuppressStartupBanner> - <TargetEnvironment>Win32</TargetEnvironment> - <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName> - </Midl> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile> - <AssemblerOutput>All</AssemblerOutput> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <BrowseInformation> - </BrowseInformation> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <Culture>0x040c</Culture> - </ResourceCompile> - <Link> - <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions> - <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)zlibwapi.dll</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> - <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile> - <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile> - <GenerateMapFile>true</GenerateMapFile> - <MapFileName>$(OutDir)zlibwapi.map</MapFileName> - <SubSystem>Windows</SubSystem> - <RandomizedBaseAddress>false</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary> - </Link> - <PreBuildEvent> - <Command>cd ..\..\masmx86 -bld_ml32.bat</Command> - </PreBuildEvent> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> - <Midl> - <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MkTypLibCompatible>true</MkTypLibCompatible> - <SuppressStartupBanner>true</SuppressStartupBanner> - <TargetEnvironment>X64</TargetEnvironment> - <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <BrowseInformation> - </BrowseInformation> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <ResourceCompile> - <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <Culture>0x040c</Culture> - </ResourceCompile> - <Link> - <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)zlibwapi.dll</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile> - <GenerateMapFile>true</GenerateMapFile> - <MapFileName>$(OutDir)zlibwapi.map</MapFileName> - <SubSystem>Windows</SubSystem> - <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary> - <TargetMachine>MachineX64</TargetMachine> - </Link> - <PreBuildEvent> - <Command>cd ..\..\contrib\masmx64 -bld_ml64.bat</Command> - </PreBuildEvent> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'"> - <Midl> - <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MkTypLibCompatible>true</MkTypLibCompatible> - <SuppressStartupBanner>true</SuppressStartupBanner> - <TargetEnvironment>Itanium</TargetEnvironment> - <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <BrowseInformation> - </BrowseInformation> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - </ClCompile> - <ResourceCompile> - <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <Culture>0x040c</Culture> - </ResourceCompile> - <Link> - <OutputFile>$(OutDir)zlibwapi.dll</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile> - <GenerateMapFile>true</GenerateMapFile> - <MapFileName>$(OutDir)zlibwapi.map</MapFileName> - <SubSystem>Windows</SubSystem> - <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'"> - <Midl> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MkTypLibCompatible>true</MkTypLibCompatible> - <SuppressStartupBanner>true</SuppressStartupBanner> - <TargetEnvironment>X64</TargetEnvironment> - <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName> - </Midl> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile> - <AssemblerOutput>All</AssemblerOutput> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <BrowseInformation> - </BrowseInformation> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <Culture>0x040c</Culture> - </ResourceCompile> - <Link> - <OutputFile>$(OutDir)zlibwapi.dll</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> - <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile> - <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile> - <GenerateMapFile>true</GenerateMapFile> - <MapFileName>$(OutDir)zlibwapi.map</MapFileName> - <SubSystem>Windows</SubSystem> - <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary> - <TargetMachine>MachineX64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'"> - <Midl> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MkTypLibCompatible>true</MkTypLibCompatible> - <SuppressStartupBanner>true</SuppressStartupBanner> - <TargetEnvironment>Itanium</TargetEnvironment> - <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName> - </Midl> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile> - <AssemblerOutput>All</AssemblerOutput> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <BrowseInformation> - </BrowseInformation> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <Culture>0x040c</Culture> - </ResourceCompile> - <Link> - <OutputFile>$(OutDir)zlibwapi.dll</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> - <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile> - <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile> - <GenerateMapFile>true</GenerateMapFile> - <MapFileName>$(OutDir)zlibwapi.map</MapFileName> - <SubSystem>Windows</SubSystem> - <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> - <Midl> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MkTypLibCompatible>true</MkTypLibCompatible> - <SuppressStartupBanner>true</SuppressStartupBanner> - <TargetEnvironment>X64</TargetEnvironment> - <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName> - </Midl> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile> - <AssemblerOutput>All</AssemblerOutput> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <BrowseInformation> - </BrowseInformation> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <Culture>0x040c</Culture> - </ResourceCompile> - <Link> - <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies> - <OutputFile>$(OutDir)zlibwapi.dll</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> - <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile> - <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile> - <GenerateMapFile>true</GenerateMapFile> - <MapFileName>$(OutDir)zlibwapi.map</MapFileName> - <SubSystem>Windows</SubSystem> - <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary> - <TargetMachine>MachineX64</TargetMachine> - </Link> - <PreBuildEvent> - <Command>cd ..\..\masmx64 -bld_ml64.bat</Command> - </PreBuildEvent> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'"> - <Midl> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MkTypLibCompatible>true</MkTypLibCompatible> - <SuppressStartupBanner>true</SuppressStartupBanner> - <TargetEnvironment>Itanium</TargetEnvironment> - <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName> - </Midl> - <ClCompile> - <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <StringPooling>true</StringPooling> - <ExceptionHandling> - </ExceptionHandling> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <BufferSecurityCheck>false</BufferSecurityCheck> - <FunctionLevelLinking>true</FunctionLevelLinking> - <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile> - <AssemblerOutput>All</AssemblerOutput> - <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> - <ObjectFileName>$(IntDir)</ObjectFileName> - <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> - <BrowseInformation> - </BrowseInformation> - <WarningLevel>Level3</WarningLevel> - <SuppressStartupBanner>true</SuppressStartupBanner> - </ClCompile> - <ResourceCompile> - <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <Culture>0x040c</Culture> - </ResourceCompile> - <Link> - <OutputFile>$(OutDir)zlibwapi.dll</OutputFile> - <SuppressStartupBanner>true</SuppressStartupBanner> - <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> - <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile> - <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile> - <GenerateMapFile>true</GenerateMapFile> - <MapFileName>$(OutDir)zlibwapi.map</MapFileName> - <SubSystem>Windows</SubSystem> - <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary> - <TargetMachine>MachineIA64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemGroup> - <ClCompile Include="..\..\..\adler32.c" /> - <ClCompile Include="..\..\..\compress.c" /> - <ClCompile Include="..\..\..\crc32.c" /> - <ClCompile Include="..\..\..\deflate.c" /> - <ClCompile Include="..\..\..\gzclose.c" /> - <ClCompile Include="..\..\..\gzlib.c" /> - <ClCompile Include="..\..\..\gzread.c" /> - <ClCompile Include="..\..\..\gzwrite.c" /> - <ClCompile Include="..\..\..\infback.c" /> - <ClCompile Include="..\..\masmx64\inffas8664.c"> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> - </ClCompile> - <ClCompile Include="..\..\..\inffast.c" /> - <ClCompile Include="..\..\..\inflate.c" /> - <ClCompile Include="..\..\..\inftrees.c" /> - <ClCompile Include="..\..\minizip\ioapi.c" /> - <ClCompile Include="..\..\minizip\iowin32.c" /> - <ClCompile Include="..\..\..\trees.c" /> - <ClCompile Include="..\..\..\uncompr.c" /> - <ClCompile Include="..\..\minizip\unzip.c"> - <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions> - </ClCompile> - <ClCompile Include="..\..\minizip\zip.c"> - <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions> - </ClCompile> - <ClCompile Include="..\..\..\zutil.c" /> - </ItemGroup> - <ItemGroup> - <ResourceCompile Include="zlib.rc" /> - </ItemGroup> - <ItemGroup> - <None Include="zlibvc.def" /> - </ItemGroup> - <ItemGroup> - <ClInclude Include="..\..\..\deflate.h" /> - <ClInclude Include="..\..\..\infblock.h" /> - <ClInclude Include="..\..\..\infcodes.h" /> - <ClInclude Include="..\..\..\inffast.h" /> - <ClInclude Include="..\..\..\inftrees.h" /> - <ClInclude Include="..\..\..\infutil.h" /> - <ClInclude Include="..\..\..\zconf.h" /> - <ClInclude Include="..\..\..\zlib.h" /> - <ClInclude Include="..\..\..\zutil.h" /> - </ItemGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> - <ImportGroup Label="ExtensionTargets"> - </ImportGroup> -</Project> \ No newline at end of file diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc9/miniunz.vcproj b/platform/win32/msvc/external/zlib/contrib/vstudio/vc9/miniunz.vcproj deleted file mode 100644 index 7da32b91eaf..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc9/miniunz.vcproj +++ /dev/null @@ -1,565 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9.00" - Name="miniunz" - ProjectGUID="{C52F9E7B-498A-42BE-8DB4-85A15694382A}" - Keyword="Win32Proj" - TargetFrameworkVersion="131072" - > - <Platforms> - <Platform - Name="Win32" - /> - <Platform - Name="x64" - /> - <Platform - Name="Itanium" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory="x86\MiniUnzip$(ConfigurationName)" - IntermediateDirectory="x86\MiniUnzip$(ConfigurationName)\Tmp" - ConfigurationType="1" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\..;..\..\minizip" - PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE" - MinimalRebuild="true" - BasicRuntimeChecks="0" - RuntimeLibrary="1" - BufferSecurityCheck="false" - UsePrecompiledHeader="0" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="4" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="x86\ZlibDllDebug\zlibwapi.lib" - OutputFile="$(OutDir)/miniunz.exe" - LinkIncremental="2" - GenerateManifest="false" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)/miniunz.pdb" - SubSystem="1" - RandomizedBaseAddress="1" - DataExecutionPrevention="0" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory="x86\MiniUnzip$(ConfigurationName)" - IntermediateDirectory="x86\MiniUnzip$(ConfigurationName)\Tmp" - ConfigurationType="1" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="1" - OmitFramePointers="true" - AdditionalIncludeDirectories="..\..\..;..\..\minizip" - PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE" - StringPooling="true" - BasicRuntimeChecks="0" - RuntimeLibrary="0" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - UsePrecompiledHeader="0" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="x86\ZlibDllRelease\zlibwapi.lib" - OutputFile="$(OutDir)/miniunz.exe" - LinkIncremental="1" - GenerateManifest="false" - GenerateDebugInformation="true" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - OptimizeForWindows98="1" - RandomizedBaseAddress="1" - DataExecutionPrevention="0" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|x64" - OutputDirectory="x64\MiniUnzip$(ConfigurationName)" - IntermediateDirectory="x64\MiniUnzip$(ConfigurationName)\Tmp" - ConfigurationType="1" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="3" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\..;..\..\minizip" - PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64" - MinimalRebuild="true" - BasicRuntimeChecks="0" - RuntimeLibrary="3" - BufferSecurityCheck="false" - UsePrecompiledHeader="0" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="x64\ZlibDllDebug\zlibwapi.lib" - OutputFile="$(OutDir)/miniunz.exe" - LinkIncremental="2" - GenerateManifest="false" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)/miniunz.pdb" - SubSystem="1" - TargetMachine="17" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|Itanium" - OutputDirectory="ia64\MiniUnzip$(ConfigurationName)" - IntermediateDirectory="ia64\MiniUnzip$(ConfigurationName)\Tmp" - ConfigurationType="1" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="2" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\..;..\..\minizip" - PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64" - MinimalRebuild="true" - BasicRuntimeChecks="0" - RuntimeLibrary="3" - BufferSecurityCheck="false" - UsePrecompiledHeader="0" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="ia64\ZlibDllDebug\zlibwapi.lib" - OutputFile="$(OutDir)/miniunz.exe" - LinkIncremental="2" - GenerateManifest="false" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)/miniunz.pdb" - SubSystem="1" - TargetMachine="5" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|x64" - OutputDirectory="x64\MiniUnzip$(ConfigurationName)" - IntermediateDirectory="x64\MiniUnzip$(ConfigurationName)\Tmp" - ConfigurationType="1" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="3" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="1" - OmitFramePointers="true" - AdditionalIncludeDirectories="..\..\..;..\..\minizip" - PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64" - StringPooling="true" - BasicRuntimeChecks="0" - RuntimeLibrary="2" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - UsePrecompiledHeader="0" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="x64\ZlibDllRelease\zlibwapi.lib" - OutputFile="$(OutDir)/miniunz.exe" - LinkIncremental="1" - GenerateManifest="false" - GenerateDebugInformation="true" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - OptimizeForWindows98="1" - TargetMachine="17" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Itanium" - OutputDirectory="ia64\MiniUnzip$(ConfigurationName)" - IntermediateDirectory="ia64\MiniUnzip$(ConfigurationName)\Tmp" - ConfigurationType="1" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="2" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="1" - OmitFramePointers="true" - AdditionalIncludeDirectories="..\..\..;..\..\minizip" - PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64" - StringPooling="true" - BasicRuntimeChecks="0" - RuntimeLibrary="2" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - UsePrecompiledHeader="0" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="ia64\ZlibDllRelease\zlibwapi.lib" - OutputFile="$(OutDir)/miniunz.exe" - LinkIncremental="1" - GenerateManifest="false" - GenerateDebugInformation="true" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - OptimizeForWindows98="1" - TargetMachine="5" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm" - > - <File - RelativePath="..\..\minizip\miniunz.c" - > - </File> - </Filter> - <Filter - Name="Header Files" - Filter="h;hpp;hxx;hm;inl;inc" - > - </Filter> - <Filter - Name="Resource Files" - Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" - > - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc9/minizip.vcproj b/platform/win32/msvc/external/zlib/contrib/vstudio/vc9/minizip.vcproj deleted file mode 100644 index e57e07d90c3..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc9/minizip.vcproj +++ /dev/null @@ -1,562 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9.00" - Name="minizip" - ProjectGUID="{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}" - Keyword="Win32Proj" - TargetFrameworkVersion="131072" - > - <Platforms> - <Platform - Name="Win32" - /> - <Platform - Name="x64" - /> - <Platform - Name="Itanium" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory="x86\MiniZip$(ConfigurationName)" - IntermediateDirectory="x86\MiniZip$(ConfigurationName)\Tmp" - ConfigurationType="1" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\..;..\..\minizip" - PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE" - MinimalRebuild="true" - BasicRuntimeChecks="0" - RuntimeLibrary="1" - BufferSecurityCheck="false" - UsePrecompiledHeader="0" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="4" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="x86\ZlibDllDebug\zlibwapi.lib" - OutputFile="$(OutDir)/minizip.exe" - LinkIncremental="2" - GenerateManifest="false" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)/minizip.pdb" - SubSystem="1" - RandomizedBaseAddress="1" - DataExecutionPrevention="0" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory="x86\MiniZip$(ConfigurationName)" - IntermediateDirectory="x86\MiniZip$(ConfigurationName)\Tmp" - ConfigurationType="1" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="1" - OmitFramePointers="true" - AdditionalIncludeDirectories="..\..\..;..\..\minizip" - PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE" - StringPooling="true" - BasicRuntimeChecks="0" - RuntimeLibrary="0" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - UsePrecompiledHeader="0" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="x86\ZlibDllRelease\zlibwapi.lib" - OutputFile="$(OutDir)/minizip.exe" - LinkIncremental="1" - GenerateDebugInformation="true" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - OptimizeForWindows98="1" - RandomizedBaseAddress="1" - DataExecutionPrevention="0" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|x64" - OutputDirectory="x64\$(ConfigurationName)" - IntermediateDirectory="x64\$(ConfigurationName)" - ConfigurationType="1" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="3" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\..;..\..\minizip" - PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64" - MinimalRebuild="true" - BasicRuntimeChecks="0" - RuntimeLibrary="3" - BufferSecurityCheck="false" - UsePrecompiledHeader="0" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="x64\ZlibDllDebug\zlibwapi.lib" - OutputFile="$(OutDir)/minizip.exe" - LinkIncremental="2" - GenerateManifest="false" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)/minizip.pdb" - SubSystem="1" - TargetMachine="17" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|Itanium" - OutputDirectory="ia64\$(ConfigurationName)" - IntermediateDirectory="ia64\$(ConfigurationName)" - ConfigurationType="1" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="2" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\..;..\..\minizip" - PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64" - MinimalRebuild="true" - BasicRuntimeChecks="0" - RuntimeLibrary="3" - BufferSecurityCheck="false" - UsePrecompiledHeader="0" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="ia64\ZlibDllDebug\zlibwapi.lib" - OutputFile="$(OutDir)/minizip.exe" - LinkIncremental="2" - GenerateManifest="false" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)/minizip.pdb" - SubSystem="1" - TargetMachine="5" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|x64" - OutputDirectory="x64\$(ConfigurationName)" - IntermediateDirectory="x64\$(ConfigurationName)" - ConfigurationType="1" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="3" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="1" - OmitFramePointers="true" - AdditionalIncludeDirectories="..\..\..;..\..\minizip" - PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64" - StringPooling="true" - BasicRuntimeChecks="0" - RuntimeLibrary="2" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - UsePrecompiledHeader="0" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="x64\ZlibDllRelease\zlibwapi.lib" - OutputFile="$(OutDir)/minizip.exe" - LinkIncremental="1" - GenerateDebugInformation="true" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - OptimizeForWindows98="1" - TargetMachine="17" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Itanium" - OutputDirectory="ia64\$(ConfigurationName)" - IntermediateDirectory="ia64\$(ConfigurationName)" - ConfigurationType="1" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="2" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="1" - OmitFramePointers="true" - AdditionalIncludeDirectories="..\..\..;..\..\minizip" - PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64" - StringPooling="true" - BasicRuntimeChecks="0" - RuntimeLibrary="2" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - UsePrecompiledHeader="0" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="ia64\ZlibDllRelease\zlibwapi.lib" - OutputFile="$(OutDir)/minizip.exe" - LinkIncremental="1" - GenerateDebugInformation="true" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - OptimizeForWindows98="1" - TargetMachine="5" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm" - > - <File - RelativePath="..\..\minizip\minizip.c" - > - </File> - </Filter> - <Filter - Name="Header Files" - Filter="h;hpp;hxx;hm;inl;inc" - > - </Filter> - <Filter - Name="Resource Files" - Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" - > - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc9/testzlib.vcproj b/platform/win32/msvc/external/zlib/contrib/vstudio/vc9/testzlib.vcproj deleted file mode 100644 index 9cb0bf877f3..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc9/testzlib.vcproj +++ /dev/null @@ -1,852 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9,00" - Name="testzlib" - ProjectGUID="{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}" - RootNamespace="testzlib" - Keyword="Win32Proj" - TargetFrameworkVersion="131072" - > - <Platforms> - <Platform - Name="Win32" - /> - <Platform - Name="x64" - /> - <Platform - Name="Itanium" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory="x86\TestZlib$(ConfigurationName)" - IntermediateDirectory="x86\TestZlib$(ConfigurationName)\Tmp" - ConfigurationType="1" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\.." - PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" - MinimalRebuild="true" - BasicRuntimeChecks="0" - RuntimeLibrary="1" - BufferSecurityCheck="false" - UsePrecompiledHeader="0" - AssemblerOutput="4" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="4" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj" - OutputFile="$(OutDir)/testzlib.exe" - LinkIncremental="2" - GenerateManifest="false" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)/testzlib.pdb" - SubSystem="1" - RandomizedBaseAddress="1" - DataExecutionPrevention="0" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|x64" - OutputDirectory="x64\TestZlib$(ConfigurationName)" - IntermediateDirectory="x64\TestZlib$(ConfigurationName)\Tmp" - ConfigurationType="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="..\..\.." - PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" - BasicRuntimeChecks="0" - RuntimeLibrary="3" - BufferSecurityCheck="false" - AssemblerListingLocation="$(IntDir)\" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj" - GenerateManifest="false" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|Itanium" - OutputDirectory="ia64\TestZlib$(ConfigurationName)" - IntermediateDirectory="ia64\TestZlib$(ConfigurationName)\Tmp" - ConfigurationType="1" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="2" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\.." - PreprocessorDefinitions="ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64" - MinimalRebuild="true" - BasicRuntimeChecks="0" - RuntimeLibrary="3" - BufferSecurityCheck="false" - UsePrecompiledHeader="0" - AssemblerOutput="4" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - OutputFile="$(OutDir)/testzlib.exe" - LinkIncremental="2" - GenerateManifest="false" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)/testzlib.pdb" - SubSystem="1" - TargetMachine="5" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="ReleaseWithoutAsm|Win32" - OutputDirectory="x86\TestZlib$(ConfigurationName)" - IntermediateDirectory="x86\TestZlib$(ConfigurationName)\Tmp" - ConfigurationType="1" - CharacterSet="2" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="1" - OmitFramePointers="true" - AdditionalIncludeDirectories="..\..\.." - PreprocessorDefinitions="WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" - StringPooling="true" - BasicRuntimeChecks="0" - RuntimeLibrary="0" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - UsePrecompiledHeader="0" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - OutputFile="$(OutDir)/testzlib.exe" - LinkIncremental="1" - GenerateManifest="false" - GenerateDebugInformation="true" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - OptimizeForWindows98="1" - RandomizedBaseAddress="1" - DataExecutionPrevention="0" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="ReleaseWithoutAsm|x64" - OutputDirectory="x64\TestZlib$(ConfigurationName)" - IntermediateDirectory="x64\TestZlib$(ConfigurationName)\Tmp" - ConfigurationType="1" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="..\..\.." - PreprocessorDefinitions="WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" - BasicRuntimeChecks="0" - RuntimeLibrary="2" - BufferSecurityCheck="false" - AssemblerListingLocation="$(IntDir)\" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="" - GenerateManifest="false" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="ReleaseWithoutAsm|Itanium" - OutputDirectory="ia64\TestZlib$(ConfigurationName)" - IntermediateDirectory="ia64\TestZlib$(ConfigurationName)\Tmp" - ConfigurationType="1" - CharacterSet="2" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="2" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="1" - OmitFramePointers="true" - AdditionalIncludeDirectories="..\..\.." - PreprocessorDefinitions="ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64" - StringPooling="true" - BasicRuntimeChecks="0" - RuntimeLibrary="2" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - UsePrecompiledHeader="0" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - OutputFile="$(OutDir)/testzlib.exe" - LinkIncremental="1" - GenerateManifest="false" - GenerateDebugInformation="true" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - OptimizeForWindows98="1" - TargetMachine="5" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory="x86\TestZlib$(ConfigurationName)" - IntermediateDirectory="x86\TestZlib$(ConfigurationName)\Tmp" - ConfigurationType="1" - CharacterSet="2" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="1" - OmitFramePointers="true" - AdditionalIncludeDirectories="..\..\.." - PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" - StringPooling="true" - BasicRuntimeChecks="0" - RuntimeLibrary="0" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - UsePrecompiledHeader="0" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj" - OutputFile="$(OutDir)/testzlib.exe" - LinkIncremental="1" - GenerateManifest="false" - GenerateDebugInformation="true" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - OptimizeForWindows98="1" - RandomizedBaseAddress="1" - DataExecutionPrevention="0" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|x64" - OutputDirectory="x64\TestZlib$(ConfigurationName)" - IntermediateDirectory="x64\TestZlib$(ConfigurationName)\Tmp" - ConfigurationType="1" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="..\..\.." - PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" - BasicRuntimeChecks="0" - RuntimeLibrary="0" - BufferSecurityCheck="false" - AssemblerListingLocation="$(IntDir)\" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj" - GenerateManifest="false" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Itanium" - OutputDirectory="ia64\TestZlib$(ConfigurationName)" - IntermediateDirectory="ia64\TestZlib$(ConfigurationName)\Tmp" - ConfigurationType="1" - CharacterSet="2" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="2" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="1" - OmitFramePointers="true" - AdditionalIncludeDirectories="..\..\.." - PreprocessorDefinitions="ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64" - StringPooling="true" - BasicRuntimeChecks="0" - RuntimeLibrary="2" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - UsePrecompiledHeader="0" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - OutputFile="$(OutDir)/testzlib.exe" - LinkIncremental="1" - GenerateManifest="false" - GenerateDebugInformation="true" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - OptimizeForWindows98="1" - TargetMachine="5" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm" - > - <File - RelativePath="..\..\..\adler32.c" - > - </File> - <File - RelativePath="..\..\..\compress.c" - > - </File> - <File - RelativePath="..\..\..\crc32.c" - > - </File> - <File - RelativePath="..\..\..\deflate.c" - > - </File> - <File - RelativePath="..\..\..\infback.c" - > - </File> - <File - RelativePath="..\..\masmx64\inffas8664.c" - > - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCLCompilerTool" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Itanium" - ExcludedFromBuild="true" - > - <Tool - Name="VCCLCompilerTool" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseWithoutAsm|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCLCompilerTool" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseWithoutAsm|Itanium" - ExcludedFromBuild="true" - > - <Tool - Name="VCCLCompilerTool" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCLCompilerTool" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Itanium" - ExcludedFromBuild="true" - > - <Tool - Name="VCCLCompilerTool" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\inffast.c" - > - </File> - <File - RelativePath="..\..\..\inflate.c" - > - </File> - <File - RelativePath="..\..\..\inftrees.c" - > - </File> - <File - RelativePath="..\..\testzlib\testzlib.c" - > - </File> - <File - RelativePath="..\..\..\trees.c" - > - </File> - <File - RelativePath="..\..\..\uncompr.c" - > - </File> - <File - RelativePath="..\..\..\zutil.c" - > - </File> - </Filter> - <Filter - Name="Header Files" - Filter="h;hpp;hxx;hm;inl;inc" - > - </Filter> - <Filter - Name="Resource Files" - Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" - > - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc9/testzlibdll.vcproj b/platform/win32/msvc/external/zlib/contrib/vstudio/vc9/testzlibdll.vcproj deleted file mode 100644 index b1ddde05f98..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc9/testzlibdll.vcproj +++ /dev/null @@ -1,565 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9.00" - Name="TestZlibDll" - ProjectGUID="{C52F9E7B-498A-42BE-8DB4-85A15694366A}" - Keyword="Win32Proj" - TargetFrameworkVersion="131072" - > - <Platforms> - <Platform - Name="Win32" - /> - <Platform - Name="x64" - /> - <Platform - Name="Itanium" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory="x86\TestZlibDll$(ConfigurationName)" - IntermediateDirectory="x86\TestZlibDll$(ConfigurationName)\Tmp" - ConfigurationType="1" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\..;..\..\minizip" - PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE" - MinimalRebuild="true" - BasicRuntimeChecks="0" - RuntimeLibrary="1" - BufferSecurityCheck="false" - UsePrecompiledHeader="0" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="4" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="x86\ZlibDllDebug\zlibwapi.lib" - OutputFile="$(OutDir)/testzlib.exe" - LinkIncremental="2" - GenerateManifest="false" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)/testzlib.pdb" - SubSystem="1" - RandomizedBaseAddress="1" - DataExecutionPrevention="0" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory="x86\TestZlibDll$(ConfigurationName)" - IntermediateDirectory="x86\TestZlibDll$(ConfigurationName)\Tmp" - ConfigurationType="1" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="1" - OmitFramePointers="true" - AdditionalIncludeDirectories="..\..\..;..\..\minizip" - PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE" - StringPooling="true" - BasicRuntimeChecks="0" - RuntimeLibrary="0" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - UsePrecompiledHeader="0" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="x86\ZlibDllRelease\zlibwapi.lib" - OutputFile="$(OutDir)/testzlib.exe" - LinkIncremental="1" - GenerateManifest="false" - GenerateDebugInformation="true" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - OptimizeForWindows98="1" - RandomizedBaseAddress="1" - DataExecutionPrevention="0" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|x64" - OutputDirectory="x64\TestZlibDll$(ConfigurationName)" - IntermediateDirectory="x64\TestZlibDll$(ConfigurationName)\Tmp" - ConfigurationType="1" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="3" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\..;..\..\minizip" - PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64" - MinimalRebuild="true" - BasicRuntimeChecks="0" - RuntimeLibrary="3" - BufferSecurityCheck="false" - UsePrecompiledHeader="0" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="x64\ZlibDllDebug\zlibwapi.lib" - OutputFile="$(OutDir)/testzlib.exe" - LinkIncremental="2" - GenerateManifest="false" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)/testzlib.pdb" - SubSystem="1" - TargetMachine="17" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|Itanium" - OutputDirectory="ia64\TestZlibDll$(ConfigurationName)" - IntermediateDirectory="ia64\TestZlibDll$(ConfigurationName)\Tmp" - ConfigurationType="1" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="2" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\..;..\..\minizip" - PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64" - MinimalRebuild="true" - BasicRuntimeChecks="0" - RuntimeLibrary="3" - BufferSecurityCheck="false" - UsePrecompiledHeader="0" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="ia64\ZlibDllDebug\zlibwapi.lib" - OutputFile="$(OutDir)/testzlib.exe" - LinkIncremental="2" - GenerateManifest="false" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)/testzlib.pdb" - SubSystem="1" - TargetMachine="5" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|x64" - OutputDirectory="x64\TestZlibDll$(ConfigurationName)" - IntermediateDirectory="x64\TestZlibDll$(ConfigurationName)\Tmp" - ConfigurationType="1" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="3" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="1" - OmitFramePointers="true" - AdditionalIncludeDirectories="..\..\..;..\..\minizip" - PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64" - StringPooling="true" - BasicRuntimeChecks="0" - RuntimeLibrary="2" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - UsePrecompiledHeader="0" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="x64\ZlibDllRelease\zlibwapi.lib" - OutputFile="$(OutDir)/testzlib.exe" - LinkIncremental="1" - GenerateManifest="false" - GenerateDebugInformation="true" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - OptimizeForWindows98="1" - TargetMachine="17" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Itanium" - OutputDirectory="ia64\TestZlibDll$(ConfigurationName)" - IntermediateDirectory="ia64\TestZlibDll$(ConfigurationName)\Tmp" - ConfigurationType="1" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="2" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="1" - OmitFramePointers="true" - AdditionalIncludeDirectories="..\..\..;..\..\minizip" - PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64" - StringPooling="true" - BasicRuntimeChecks="0" - RuntimeLibrary="2" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - UsePrecompiledHeader="0" - AssemblerListingLocation="$(IntDir)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="ia64\ZlibDllRelease\zlibwapi.lib" - OutputFile="$(OutDir)/testzlib.exe" - LinkIncremental="1" - GenerateManifest="false" - GenerateDebugInformation="true" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - OptimizeForWindows98="1" - TargetMachine="5" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm" - > - <File - RelativePath="..\..\testzlib\testzlib.c" - > - </File> - </Filter> - <Filter - Name="Header Files" - Filter="h;hpp;hxx;hm;inl;inc" - > - </Filter> - <Filter - Name="Resource Files" - Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" - > - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc9/zlib.rc b/platform/win32/msvc/external/zlib/contrib/vstudio/vc9/zlib.rc deleted file mode 100644 index 73f6476d605..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc9/zlib.rc +++ /dev/null @@ -1,32 +0,0 @@ -#include <windows.h> - -#define IDR_VERSION1 1 -IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE - FILEVERSION 1,2,8,0 - PRODUCTVERSION 1,2,8,0 - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK - FILEFLAGS 0 - FILEOS VOS_DOS_WINDOWS32 - FILETYPE VFT_DLL - FILESUBTYPE 0 // not used -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904E4" - //language ID = U.S. English, char set = Windows, Multilingual - - BEGIN - VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0" - VALUE "FileVersion", "1.2.8\0" - VALUE "InternalName", "zlib\0" - VALUE "OriginalFilename", "zlibwapi.dll\0" - VALUE "ProductName", "ZLib.DLL\0" - VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" - VALUE "LegalCopyright", "(C) 1995-2013 Jean-loup Gailly & Mark Adler\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0409, 1252 - END -END diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc9/zlibstat.vcproj b/platform/win32/msvc/external/zlib/contrib/vstudio/vc9/zlibstat.vcproj deleted file mode 100644 index 61c76c7c5bc..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc9/zlibstat.vcproj +++ /dev/null @@ -1,835 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9,00" - Name="zlibstat" - ProjectGUID="{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}" - TargetFrameworkVersion="131072" - > - <Platforms> - <Platform - Name="Win32" - /> - <Platform - Name="x64" - /> - <Platform - Name="Itanium" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory="x86\ZlibStat$(ConfigurationName)" - IntermediateDirectory="x86\ZlibStat$(ConfigurationName)\Tmp" - ConfigurationType="4" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\..;..\..\masmx86" - PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" - ExceptionHandling="0" - RuntimeLibrary="1" - BufferSecurityCheck="false" - PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" - AssemblerListingLocation="$(IntDir)\" - ObjectFile="$(IntDir)\" - ProgramDataBaseFileName="$(OutDir)\" - WarningLevel="3" - SuppressStartupBanner="true" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="1" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - AdditionalOptions="/MACHINE:X86 /NODEFAULTLIB" - OutputFile="$(OutDir)\zlibstat.lib" - SuppressStartupBanner="true" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|x64" - OutputDirectory="x64\ZlibStat$(ConfigurationName)" - IntermediateDirectory="x64\ZlibStat$(ConfigurationName)\Tmp" - ConfigurationType="4" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="3" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\..;..\..\masmx86" - PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64" - ExceptionHandling="0" - RuntimeLibrary="3" - BufferSecurityCheck="false" - PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" - AssemblerListingLocation="$(IntDir)\" - ObjectFile="$(IntDir)\" - ProgramDataBaseFileName="$(OutDir)\" - WarningLevel="3" - SuppressStartupBanner="true" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="1" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - AdditionalOptions="/MACHINE:AMD64 /NODEFAULTLIB" - OutputFile="$(OutDir)\zlibstat.lib" - SuppressStartupBanner="true" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|Itanium" - OutputDirectory="ia64\ZlibStat$(ConfigurationName)" - IntermediateDirectory="ia64\ZlibStat$(ConfigurationName)\Tmp" - ConfigurationType="4" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="2" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\..;..\..\masmx86" - PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64" - ExceptionHandling="0" - RuntimeLibrary="3" - BufferSecurityCheck="false" - PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" - AssemblerListingLocation="$(IntDir)\" - ObjectFile="$(IntDir)\" - ProgramDataBaseFileName="$(OutDir)\" - WarningLevel="3" - SuppressStartupBanner="true" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="1" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - AdditionalOptions="/MACHINE:IA64 /NODEFAULTLIB" - OutputFile="$(OutDir)\zlibstat.lib" - SuppressStartupBanner="true" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory="x86\ZlibStat$(ConfigurationName)" - IntermediateDirectory="x86\ZlibStat$(ConfigurationName)\Tmp" - ConfigurationType="4" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - InlineFunctionExpansion="1" - AdditionalIncludeDirectories="..\..\..;..\..\masmx86" - PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF" - StringPooling="true" - ExceptionHandling="0" - RuntimeLibrary="0" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" - AssemblerListingLocation="$(IntDir)\" - ObjectFile="$(IntDir)\" - ProgramDataBaseFileName="$(OutDir)\" - WarningLevel="3" - SuppressStartupBanner="true" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - AdditionalOptions="/MACHINE:X86 /NODEFAULTLIB" - AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj " - OutputFile="$(OutDir)\zlibstat.lib" - SuppressStartupBanner="true" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|x64" - OutputDirectory="x64\ZlibStat$(ConfigurationName)" - IntermediateDirectory="x64\ZlibStat$(ConfigurationName)\Tmp" - ConfigurationType="4" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="3" - /> - <Tool - Name="VCCLCompilerTool" - InlineFunctionExpansion="1" - AdditionalIncludeDirectories="..\..\..;..\..\masmx86" - PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;WIN64" - StringPooling="true" - ExceptionHandling="0" - RuntimeLibrary="2" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" - AssemblerListingLocation="$(IntDir)\" - ObjectFile="$(IntDir)\" - ProgramDataBaseFileName="$(OutDir)\" - WarningLevel="3" - SuppressStartupBanner="true" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - AdditionalOptions="/MACHINE:AMD64 /NODEFAULTLIB" - AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj " - OutputFile="$(OutDir)\zlibstat.lib" - SuppressStartupBanner="true" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Itanium" - OutputDirectory="ia64\ZlibStat$(ConfigurationName)" - IntermediateDirectory="ia64\ZlibStat$(ConfigurationName)\Tmp" - ConfigurationType="4" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="2" - /> - <Tool - Name="VCCLCompilerTool" - InlineFunctionExpansion="1" - AdditionalIncludeDirectories="..\..\..;..\..\masmx86" - PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64" - StringPooling="true" - ExceptionHandling="0" - RuntimeLibrary="2" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" - AssemblerListingLocation="$(IntDir)\" - ObjectFile="$(IntDir)\" - ProgramDataBaseFileName="$(OutDir)\" - WarningLevel="3" - SuppressStartupBanner="true" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - AdditionalOptions="/MACHINE:IA64 /NODEFAULTLIB" - OutputFile="$(OutDir)\zlibstat.lib" - SuppressStartupBanner="true" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="ReleaseWithoutAsm|Win32" - OutputDirectory="x86\ZlibStat$(ConfigurationName)" - IntermediateDirectory="x86\ZlibStat$(ConfigurationName)\Tmp" - ConfigurationType="4" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - InlineFunctionExpansion="1" - AdditionalIncludeDirectories="..\..\..;..\..\masmx86" - PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" - StringPooling="true" - ExceptionHandling="0" - RuntimeLibrary="0" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" - AssemblerListingLocation="$(IntDir)\" - ObjectFile="$(IntDir)\" - ProgramDataBaseFileName="$(OutDir)\" - WarningLevel="3" - SuppressStartupBanner="true" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - AdditionalOptions="/MACHINE:X86 /NODEFAULTLIB" - OutputFile="$(OutDir)\zlibstat.lib" - SuppressStartupBanner="true" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="ReleaseWithoutAsm|x64" - OutputDirectory="x64\ZlibStat$(ConfigurationName)" - IntermediateDirectory="x64\ZlibStat$(ConfigurationName)\Tmp" - ConfigurationType="4" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="3" - /> - <Tool - Name="VCCLCompilerTool" - InlineFunctionExpansion="1" - AdditionalIncludeDirectories="..\..\..;..\..\masmx86" - PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64" - StringPooling="true" - ExceptionHandling="0" - RuntimeLibrary="2" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" - AssemblerListingLocation="$(IntDir)\" - ObjectFile="$(IntDir)\" - ProgramDataBaseFileName="$(OutDir)\" - WarningLevel="3" - SuppressStartupBanner="true" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - AdditionalOptions="/MACHINE:AMD64 /NODEFAULTLIB" - OutputFile="$(OutDir)\zlibstat.lib" - SuppressStartupBanner="true" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="ReleaseWithoutAsm|Itanium" - OutputDirectory="ia64\ZlibStat$(ConfigurationName)" - IntermediateDirectory="ia64\ZlibStat$(ConfigurationName)\Tmp" - ConfigurationType="4" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="2" - /> - <Tool - Name="VCCLCompilerTool" - InlineFunctionExpansion="1" - AdditionalIncludeDirectories="..\..\..;..\..\masmx86" - PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64" - StringPooling="true" - ExceptionHandling="0" - RuntimeLibrary="2" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" - AssemblerListingLocation="$(IntDir)\" - ObjectFile="$(IntDir)\" - ProgramDataBaseFileName="$(OutDir)\" - WarningLevel="3" - SuppressStartupBanner="true" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - AdditionalOptions="/MACHINE:IA64 /NODEFAULTLIB" - OutputFile="$(OutDir)\zlibstat.lib" - SuppressStartupBanner="true" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - > - <File - RelativePath="..\..\..\adler32.c" - > - </File> - <File - RelativePath="..\..\..\compress.c" - > - </File> - <File - RelativePath="..\..\..\crc32.c" - > - </File> - <File - RelativePath="..\..\..\deflate.c" - > - </File> - <File - RelativePath="..\..\..\gzclose.c" - > - </File> - <File - RelativePath="..\..\..\gzguts.h" - > - </File> - <File - RelativePath="..\..\..\gzlib.c" - > - </File> - <File - RelativePath="..\..\..\gzread.c" - > - </File> - <File - RelativePath="..\..\..\gzwrite.c" - > - </File> - <File - RelativePath="..\..\..\infback.c" - > - </File> - <File - RelativePath="..\..\masmx64\inffas8664.c" - > - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCLCompilerTool" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Itanium" - ExcludedFromBuild="true" - > - <Tool - Name="VCCLCompilerTool" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCLCompilerTool" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Itanium" - ExcludedFromBuild="true" - > - <Tool - Name="VCCLCompilerTool" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseWithoutAsm|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCLCompilerTool" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseWithoutAsm|Itanium" - ExcludedFromBuild="true" - > - <Tool - Name="VCCLCompilerTool" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\inffast.c" - > - </File> - <File - RelativePath="..\..\..\inflate.c" - > - </File> - <File - RelativePath="..\..\..\inftrees.c" - > - </File> - <File - RelativePath="..\..\minizip\ioapi.c" - > - </File> - <File - RelativePath="..\..\..\trees.c" - > - </File> - <File - RelativePath="..\..\..\uncompr.c" - > - </File> - <File - RelativePath="..\..\minizip\unzip.c" - > - </File> - <File - RelativePath="..\..\minizip\zip.c" - > - </File> - <File - RelativePath=".\zlib.rc" - > - </File> - <File - RelativePath=".\zlibvc.def" - > - </File> - <File - RelativePath="..\..\..\zutil.c" - > - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/platform/win32/msvc/external/zlib/contrib/vstudio/vc9/zlibvc.vcproj b/platform/win32/msvc/external/zlib/contrib/vstudio/vc9/zlibvc.vcproj deleted file mode 100644 index c9a89471e70..00000000000 --- a/platform/win32/msvc/external/zlib/contrib/vstudio/vc9/zlibvc.vcproj +++ /dev/null @@ -1,1156 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9,00" - Name="zlibvc" - ProjectGUID="{8FD826F8-3739-44E6-8CC8-997122E53B8D}" - RootNamespace="zlibvc" - TargetFrameworkVersion="131072" - > - <Platforms> - <Platform - Name="Win32" - /> - <Platform - Name="x64" - /> - <Platform - Name="Itanium" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory="x86\ZlibDll$(ConfigurationName)" - IntermediateDirectory="x86\ZlibDll$(ConfigurationName)\Tmp" - ConfigurationType="2" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - PreprocessorDefinitions="_DEBUG" - MkTypLibCompatible="true" - SuppressStartupBanner="true" - TargetEnvironment="1" - TypeLibraryName="$(OutDir)/zlibvc.tlb" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\..;..\..\masmx86" - PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF" - ExceptionHandling="0" - RuntimeLibrary="1" - BufferSecurityCheck="false" - PrecompiledHeaderFile="$(IntDir)/zlibvc.pch" - AssemblerListingLocation="$(IntDir)\" - ObjectFile="$(IntDir)\" - ProgramDataBaseFileName="$(OutDir)\" - BrowseInformation="0" - WarningLevel="3" - SuppressStartupBanner="true" - DebugInformationFormat="4" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalOptions="/MACHINE:I386" - AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj" - OutputFile="$(OutDir)\zlibwapi.dll" - LinkIncremental="2" - SuppressStartupBanner="true" - GenerateManifest="false" - ModuleDefinitionFile=".\zlibvc.def" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb" - GenerateMapFile="true" - MapFileName="$(OutDir)/zlibwapi.map" - SubSystem="2" - RandomizedBaseAddress="1" - DataExecutionPrevention="0" - ImportLibrary="$(OutDir)/zlibwapi.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|x64" - OutputDirectory="x64\ZlibDll$(ConfigurationName)" - IntermediateDirectory="x64\ZlibDll$(ConfigurationName)\Tmp" - ConfigurationType="2" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - PreprocessorDefinitions="_DEBUG" - MkTypLibCompatible="true" - SuppressStartupBanner="true" - TargetEnvironment="3" - TypeLibraryName="$(OutDir)/zlibvc.tlb" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\..;..\..\masmx86" - PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64" - ExceptionHandling="0" - RuntimeLibrary="3" - BufferSecurityCheck="false" - PrecompiledHeaderFile="$(IntDir)/zlibvc.pch" - AssemblerListingLocation="$(IntDir)\" - ObjectFile="$(IntDir)\" - ProgramDataBaseFileName="$(OutDir)\" - BrowseInformation="0" - WarningLevel="3" - SuppressStartupBanner="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj " - OutputFile="$(OutDir)\zlibwapi.dll" - LinkIncremental="2" - SuppressStartupBanner="true" - GenerateManifest="false" - ModuleDefinitionFile=".\zlibvc.def" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb" - GenerateMapFile="true" - MapFileName="$(OutDir)/zlibwapi.map" - SubSystem="2" - ImportLibrary="$(OutDir)/zlibwapi.lib" - TargetMachine="17" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|Itanium" - OutputDirectory="ia64\ZlibDll$(ConfigurationName)" - IntermediateDirectory="ia64\ZlibDll$(ConfigurationName)\Tmp" - ConfigurationType="2" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - PreprocessorDefinitions="_DEBUG" - MkTypLibCompatible="true" - SuppressStartupBanner="true" - TargetEnvironment="2" - TypeLibraryName="$(OutDir)/zlibvc.tlb" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\..;..\..\masmx86" - PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64" - ExceptionHandling="0" - RuntimeLibrary="3" - BufferSecurityCheck="false" - PrecompiledHeaderFile="$(IntDir)/zlibvc.pch" - AssemblerListingLocation="$(IntDir)\" - ObjectFile="$(IntDir)\" - ProgramDataBaseFileName="$(OutDir)\" - BrowseInformation="0" - WarningLevel="3" - SuppressStartupBanner="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - OutputFile="$(OutDir)\zlibwapi.dll" - LinkIncremental="2" - SuppressStartupBanner="true" - GenerateManifest="false" - ModuleDefinitionFile=".\zlibvc.def" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb" - GenerateMapFile="true" - MapFileName="$(OutDir)/zlibwapi.map" - SubSystem="2" - ImportLibrary="$(OutDir)/zlibwapi.lib" - TargetMachine="5" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="ReleaseWithoutAsm|Win32" - OutputDirectory="x86\ZlibDll$(ConfigurationName)" - IntermediateDirectory="x86\ZlibDll$(ConfigurationName)\Tmp" - ConfigurationType="2" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - PreprocessorDefinitions="NDEBUG" - MkTypLibCompatible="true" - SuppressStartupBanner="true" - TargetEnvironment="1" - TypeLibraryName="$(OutDir)/zlibvc.tlb" - /> - <Tool - Name="VCCLCompilerTool" - InlineFunctionExpansion="1" - AdditionalIncludeDirectories="..\..\..;..\..\masmx86" - PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI" - StringPooling="true" - ExceptionHandling="0" - RuntimeLibrary="2" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - PrecompiledHeaderFile="$(IntDir)/zlibvc.pch" - AssemblerOutput="2" - AssemblerListingLocation="$(IntDir)\" - ObjectFile="$(IntDir)\" - ProgramDataBaseFileName="$(OutDir)\" - BrowseInformation="0" - WarningLevel="3" - SuppressStartupBanner="true" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalOptions="/MACHINE:I386" - OutputFile="$(OutDir)\zlibwapi.dll" - LinkIncremental="1" - SuppressStartupBanner="true" - GenerateManifest="false" - IgnoreAllDefaultLibraries="false" - ModuleDefinitionFile=".\zlibvc.def" - ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb" - GenerateMapFile="true" - MapFileName="$(OutDir)/zlibwapi.map" - SubSystem="2" - OptimizeForWindows98="1" - RandomizedBaseAddress="1" - DataExecutionPrevention="0" - ImportLibrary="$(OutDir)/zlibwapi.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="ReleaseWithoutAsm|x64" - OutputDirectory="x64\ZlibDll$(ConfigurationName)" - IntermediateDirectory="x64\ZlibDll$(ConfigurationName)\Tmp" - ConfigurationType="2" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - PreprocessorDefinitions="NDEBUG" - MkTypLibCompatible="true" - SuppressStartupBanner="true" - TargetEnvironment="3" - TypeLibraryName="$(OutDir)/zlibvc.tlb" - /> - <Tool - Name="VCCLCompilerTool" - InlineFunctionExpansion="1" - AdditionalIncludeDirectories="..\..\..;..\..\masmx86" - PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64" - StringPooling="true" - ExceptionHandling="0" - RuntimeLibrary="2" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - PrecompiledHeaderFile="$(IntDir)/zlibvc.pch" - AssemblerOutput="2" - AssemblerListingLocation="$(IntDir)\" - ObjectFile="$(IntDir)\" - ProgramDataBaseFileName="$(OutDir)\" - BrowseInformation="0" - WarningLevel="3" - SuppressStartupBanner="true" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - OutputFile="$(OutDir)\zlibwapi.dll" - LinkIncremental="1" - SuppressStartupBanner="true" - GenerateManifest="false" - IgnoreAllDefaultLibraries="false" - ModuleDefinitionFile=".\zlibvc.def" - ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb" - GenerateMapFile="true" - MapFileName="$(OutDir)/zlibwapi.map" - SubSystem="2" - OptimizeForWindows98="1" - ImportLibrary="$(OutDir)/zlibwapi.lib" - TargetMachine="17" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="ReleaseWithoutAsm|Itanium" - OutputDirectory="ia64\ZlibDll$(ConfigurationName)" - IntermediateDirectory="ia64\ZlibDll$(ConfigurationName)\Tmp" - ConfigurationType="2" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - PreprocessorDefinitions="NDEBUG" - MkTypLibCompatible="true" - SuppressStartupBanner="true" - TargetEnvironment="2" - TypeLibraryName="$(OutDir)/zlibvc.tlb" - /> - <Tool - Name="VCCLCompilerTool" - InlineFunctionExpansion="1" - AdditionalIncludeDirectories="..\..\..;..\..\masmx86" - PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64" - StringPooling="true" - ExceptionHandling="0" - RuntimeLibrary="2" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - PrecompiledHeaderFile="$(IntDir)/zlibvc.pch" - AssemblerOutput="2" - AssemblerListingLocation="$(IntDir)\" - ObjectFile="$(IntDir)\" - ProgramDataBaseFileName="$(OutDir)\" - BrowseInformation="0" - WarningLevel="3" - SuppressStartupBanner="true" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - OutputFile="$(OutDir)\zlibwapi.dll" - LinkIncremental="1" - SuppressStartupBanner="true" - GenerateManifest="false" - IgnoreAllDefaultLibraries="false" - ModuleDefinitionFile=".\zlibvc.def" - ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb" - GenerateMapFile="true" - MapFileName="$(OutDir)/zlibwapi.map" - SubSystem="2" - OptimizeForWindows98="1" - ImportLibrary="$(OutDir)/zlibwapi.lib" - TargetMachine="5" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory="x86\ZlibDll$(ConfigurationName)" - IntermediateDirectory="x86\ZlibDll$(ConfigurationName)\Tmp" - ConfigurationType="2" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - PreprocessorDefinitions="NDEBUG" - MkTypLibCompatible="true" - SuppressStartupBanner="true" - TargetEnvironment="1" - TypeLibraryName="$(OutDir)/zlibvc.tlb" - /> - <Tool - Name="VCCLCompilerTool" - InlineFunctionExpansion="1" - AdditionalIncludeDirectories="..\..\..;..\..\masmx86" - PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF" - StringPooling="true" - ExceptionHandling="0" - RuntimeLibrary="0" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - PrecompiledHeaderFile="$(IntDir)/zlibvc.pch" - AssemblerOutput="2" - AssemblerListingLocation="$(IntDir)\" - ObjectFile="$(IntDir)\" - ProgramDataBaseFileName="$(OutDir)\" - BrowseInformation="0" - WarningLevel="3" - SuppressStartupBanner="true" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalOptions="/MACHINE:I386" - AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj " - OutputFile="$(OutDir)\zlibwapi.dll" - LinkIncremental="1" - SuppressStartupBanner="true" - GenerateManifest="false" - IgnoreAllDefaultLibraries="false" - ModuleDefinitionFile=".\zlibvc.def" - ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb" - GenerateMapFile="true" - MapFileName="$(OutDir)/zlibwapi.map" - SubSystem="2" - OptimizeForWindows98="1" - RandomizedBaseAddress="1" - DataExecutionPrevention="0" - ImportLibrary="$(OutDir)/zlibwapi.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|x64" - OutputDirectory="x64\ZlibDll$(ConfigurationName)" - IntermediateDirectory="x64\ZlibDll$(ConfigurationName)\Tmp" - ConfigurationType="2" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - PreprocessorDefinitions="NDEBUG" - MkTypLibCompatible="true" - SuppressStartupBanner="true" - TargetEnvironment="3" - TypeLibraryName="$(OutDir)/zlibvc.tlb" - /> - <Tool - Name="VCCLCompilerTool" - InlineFunctionExpansion="1" - AdditionalIncludeDirectories="..\..\..;..\..\masmx86" - PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64" - StringPooling="true" - ExceptionHandling="0" - RuntimeLibrary="2" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - PrecompiledHeaderFile="$(IntDir)/zlibvc.pch" - AssemblerOutput="2" - AssemblerListingLocation="$(IntDir)\" - ObjectFile="$(IntDir)\" - ProgramDataBaseFileName="$(OutDir)\" - BrowseInformation="0" - WarningLevel="3" - SuppressStartupBanner="true" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj " - OutputFile="$(OutDir)\zlibwapi.dll" - LinkIncremental="1" - SuppressStartupBanner="true" - GenerateManifest="false" - IgnoreAllDefaultLibraries="false" - ModuleDefinitionFile=".\zlibvc.def" - ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb" - GenerateMapFile="true" - MapFileName="$(OutDir)/zlibwapi.map" - SubSystem="2" - OptimizeForWindows98="1" - ImportLibrary="$(OutDir)/zlibwapi.lib" - TargetMachine="17" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Itanium" - OutputDirectory="ia64\ZlibDll$(ConfigurationName)" - IntermediateDirectory="ia64\ZlibDll$(ConfigurationName)\Tmp" - ConfigurationType="2" - InheritedPropertySheets="UpgradeFromVC70.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - PreprocessorDefinitions="NDEBUG" - MkTypLibCompatible="true" - SuppressStartupBanner="true" - TargetEnvironment="2" - TypeLibraryName="$(OutDir)/zlibvc.tlb" - /> - <Tool - Name="VCCLCompilerTool" - InlineFunctionExpansion="1" - AdditionalIncludeDirectories="..\..\..;..\..\masmx86" - PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64" - StringPooling="true" - ExceptionHandling="0" - RuntimeLibrary="2" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="true" - PrecompiledHeaderFile="$(IntDir)/zlibvc.pch" - AssemblerOutput="2" - AssemblerListingLocation="$(IntDir)\" - ObjectFile="$(IntDir)\" - ProgramDataBaseFileName="$(OutDir)\" - BrowseInformation="0" - WarningLevel="3" - SuppressStartupBanner="true" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1036" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - OutputFile="$(OutDir)\zlibwapi.dll" - LinkIncremental="1" - SuppressStartupBanner="true" - GenerateManifest="false" - IgnoreAllDefaultLibraries="false" - ModuleDefinitionFile=".\zlibvc.def" - ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb" - GenerateMapFile="true" - MapFileName="$(OutDir)/zlibwapi.map" - SubSystem="2" - OptimizeForWindows98="1" - ImportLibrary="$(OutDir)/zlibwapi.lib" - TargetMachine="5" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90" - > - <File - RelativePath="..\..\..\adler32.c" - > - </File> - <File - RelativePath="..\..\..\compress.c" - > - </File> - <File - RelativePath="..\..\..\crc32.c" - > - </File> - <File - RelativePath="..\..\..\deflate.c" - > - </File> - <File - RelativePath="..\..\..\gzclose.c" - > - </File> - <File - RelativePath="..\..\..\gzguts.h" - > - </File> - <File - RelativePath="..\..\..\gzlib.c" - > - </File> - <File - RelativePath="..\..\..\gzread.c" - > - </File> - <File - RelativePath="..\..\..\gzwrite.c" - > - </File> - <File - RelativePath="..\..\..\infback.c" - > - </File> - <File - RelativePath="..\..\masmx64\inffas8664.c" - > - <FileConfiguration - Name="Debug|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCLCompilerTool" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Itanium" - ExcludedFromBuild="true" - > - <Tool - Name="VCCLCompilerTool" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseWithoutAsm|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCLCompilerTool" - /> - </FileConfiguration> - <FileConfiguration - Name="ReleaseWithoutAsm|Itanium" - ExcludedFromBuild="true" - > - <Tool - Name="VCCLCompilerTool" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCLCompilerTool" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Itanium" - ExcludedFromBuild="true" - > - <Tool - Name="VCCLCompilerTool" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\inffast.c" - > - </File> - <File - RelativePath="..\..\..\inflate.c" - > - </File> - <File - RelativePath="..\..\..\inftrees.c" - > - </File> - <File - RelativePath="..\..\minizip\ioapi.c" - > - </File> - <File - RelativePath="..\..\minizip\iowin32.c" - > - </File> - <File - RelativePath="..\..\..\trees.c" - > - </File> - <File - RelativePath="..\..\..\uncompr.c" - > - </File> - <File - RelativePath="..\..\minizip\unzip.c" - > - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="ZLIB_INTERNAL" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|x64" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="ZLIB_INTERNAL" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Itanium" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="ZLIB_INTERNAL" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\..\minizip\zip.c" - > - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="ZLIB_INTERNAL" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|x64" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="ZLIB_INTERNAL" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Itanium" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="ZLIB_INTERNAL" - /> - </FileConfiguration> - </File> - <File - RelativePath=".\zlib.rc" - > - </File> - <File - RelativePath=".\zlibvc.def" - > - </File> - <File - RelativePath="..\..\..\zutil.c" - > - </File> - </Filter> - <Filter - Name="Header Files" - Filter="h;hpp;hxx;hm;inl;fi;fd" - > - <File - RelativePath="..\..\..\deflate.h" - > - </File> - <File - RelativePath="..\..\..\infblock.h" - > - </File> - <File - RelativePath="..\..\..\infcodes.h" - > - </File> - <File - RelativePath="..\..\..\inffast.h" - > - </File> - <File - RelativePath="..\..\..\inftrees.h" - > - </File> - <File - RelativePath="..\..\..\infutil.h" - > - </File> - <File - RelativePath="..\..\..\zconf.h" - > - </File> - <File - RelativePath="..\..\..\zlib.h" - > - </File> - <File - RelativePath="..\..\..\zutil.h" - > - </File> - </Filter> - <Filter - Name="Resource Files" - Filter="ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" - > - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/platform/win32/msvc/external/zlib/crc32.c b/platform/win32/msvc/external/zlib/crc32.c deleted file mode 100644 index 979a7190a3c..00000000000 --- a/platform/win32/msvc/external/zlib/crc32.c +++ /dev/null @@ -1,425 +0,0 @@ -/* crc32.c -- compute the CRC-32 of a data stream - * Copyright (C) 1995-2006, 2010, 2011, 2012 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - * - * Thanks to Rodney Brown <rbrown64@csc.com.au> for his contribution of faster - * CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing - * tables for updating the shift register in one step with three exclusive-ors - * instead of four steps with four exclusive-ors. This results in about a - * factor of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3. - */ - -/* @(#) $Id$ */ - -/* - Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore - protection on the static variables used to control the first-use generation - of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should - first call get_crc_table() to initialize the tables before allowing more than - one thread to use crc32(). - - DYNAMIC_CRC_TABLE and MAKECRCH can be #defined to write out crc32.h. - */ - -#ifdef MAKECRCH -# include <stdio.h> -# ifndef DYNAMIC_CRC_TABLE -# define DYNAMIC_CRC_TABLE -# endif /* !DYNAMIC_CRC_TABLE */ -#endif /* MAKECRCH */ - -#include "zutil.h" /* for STDC and FAR definitions */ - -#define local static - -/* Definitions for doing the crc four data bytes at a time. */ -#if !defined(NOBYFOUR) && defined(Z_U4) -# define BYFOUR -#endif -#ifdef BYFOUR - local unsigned long crc32_little OF((unsigned long, - const unsigned char FAR *, unsigned)); - local unsigned long crc32_big OF((unsigned long, - const unsigned char FAR *, unsigned)); -# define TBLS 8 -#else -# define TBLS 1 -#endif /* BYFOUR */ - -/* Local functions for crc concatenation */ -local unsigned long gf2_matrix_times OF((unsigned long *mat, - unsigned long vec)); -local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat)); -local uLong crc32_combine_ OF((uLong crc1, uLong crc2, z_off64_t len2)); - - -#ifdef DYNAMIC_CRC_TABLE - -local volatile int crc_table_empty = 1; -local z_crc_t FAR crc_table[TBLS][256]; -local void make_crc_table OF((void)); -#ifdef MAKECRCH - local void write_table OF((FILE *, const z_crc_t FAR *)); -#endif /* MAKECRCH */ -/* - Generate tables for a byte-wise 32-bit CRC calculation on the polynomial: - x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1. - - Polynomials over GF(2) are represented in binary, one bit per coefficient, - with the lowest powers in the most significant bit. Then adding polynomials - is just exclusive-or, and multiplying a polynomial by x is a right shift by - one. If we call the above polynomial p, and represent a byte as the - polynomial q, also with the lowest power in the most significant bit (so the - byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, - where a mod b means the remainder after dividing a by b. - - This calculation is done using the shift-register method of multiplying and - taking the remainder. The register is initialized to zero, and for each - incoming bit, x^32 is added mod p to the register if the bit is a one (where - x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by - x (which is shifting right by one and adding x^32 mod p if the bit shifted - out is a one). We start with the highest power (least significant bit) of - q and repeat for all eight bits of q. - - The first table is simply the CRC of all possible eight bit values. This is - all the information needed to generate CRCs on data a byte at a time for all - combinations of CRC register values and incoming bytes. The remaining tables - allow for word-at-a-time CRC calculation for both big-endian and little- - endian machines, where a word is four bytes. -*/ -local void make_crc_table() -{ - z_crc_t c; - int n, k; - z_crc_t poly; /* polynomial exclusive-or pattern */ - /* terms of polynomial defining this crc (except x^32): */ - static volatile int first = 1; /* flag to limit concurrent making */ - static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26}; - - /* See if another task is already doing this (not thread-safe, but better - than nothing -- significantly reduces duration of vulnerability in - case the advice about DYNAMIC_CRC_TABLE is ignored) */ - if (first) { - first = 0; - - /* make exclusive-or pattern from polynomial (0xedb88320UL) */ - poly = 0; - for (n = 0; n < (int)(sizeof(p)/sizeof(unsigned char)); n++) - poly |= (z_crc_t)1 << (31 - p[n]); - - /* generate a crc for every 8-bit value */ - for (n = 0; n < 256; n++) { - c = (z_crc_t)n; - for (k = 0; k < 8; k++) - c = c & 1 ? poly ^ (c >> 1) : c >> 1; - crc_table[0][n] = c; - } - -#ifdef BYFOUR - /* generate crc for each value followed by one, two, and three zeros, - and then the byte reversal of those as well as the first table */ - for (n = 0; n < 256; n++) { - c = crc_table[0][n]; - crc_table[4][n] = ZSWAP32(c); - for (k = 1; k < 4; k++) { - c = crc_table[0][c & 0xff] ^ (c >> 8); - crc_table[k][n] = c; - crc_table[k + 4][n] = ZSWAP32(c); - } - } -#endif /* BYFOUR */ - - crc_table_empty = 0; - } - else { /* not first */ - /* wait for the other guy to finish (not efficient, but rare) */ - while (crc_table_empty) - ; - } - -#ifdef MAKECRCH - /* write out CRC tables to crc32.h */ - { - FILE *out; - - out = fopen("crc32.h", "w"); - if (out == NULL) return; - fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n"); - fprintf(out, " * Generated automatically by crc32.c\n */\n\n"); - fprintf(out, "local const z_crc_t FAR "); - fprintf(out, "crc_table[TBLS][256] =\n{\n {\n"); - write_table(out, crc_table[0]); -# ifdef BYFOUR - fprintf(out, "#ifdef BYFOUR\n"); - for (k = 1; k < 8; k++) { - fprintf(out, " },\n {\n"); - write_table(out, crc_table[k]); - } - fprintf(out, "#endif\n"); -# endif /* BYFOUR */ - fprintf(out, " }\n};\n"); - fclose(out); - } -#endif /* MAKECRCH */ -} - -#ifdef MAKECRCH -local void write_table(out, table) - FILE *out; - const z_crc_t FAR *table; -{ - int n; - - for (n = 0; n < 256; n++) - fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : " ", - (unsigned long)(table[n]), - n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", ")); -} -#endif /* MAKECRCH */ - -#else /* !DYNAMIC_CRC_TABLE */ -/* ======================================================================== - * Tables of CRC-32s of all single-byte values, made by make_crc_table(). - */ -#include "crc32.h" -#endif /* DYNAMIC_CRC_TABLE */ - -/* ========================================================================= - * This function can be used by asm versions of crc32() - */ -const z_crc_t FAR * ZEXPORT get_crc_table() -{ -#ifdef DYNAMIC_CRC_TABLE - if (crc_table_empty) - make_crc_table(); -#endif /* DYNAMIC_CRC_TABLE */ - return (const z_crc_t FAR *)crc_table; -} - -/* ========================================================================= */ -#define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8) -#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1 - -/* ========================================================================= */ -unsigned long ZEXPORT crc32(crc, buf, len) - unsigned long crc; - const unsigned char FAR *buf; - uInt len; -{ - if (buf == Z_NULL) return 0UL; - -#ifdef DYNAMIC_CRC_TABLE - if (crc_table_empty) - make_crc_table(); -#endif /* DYNAMIC_CRC_TABLE */ - -#ifdef BYFOUR - if (sizeof(void *) == sizeof(ptrdiff_t)) { - z_crc_t endian; - - endian = 1; - if (*((unsigned char *)(&endian))) - return crc32_little(crc, buf, len); - else - return crc32_big(crc, buf, len); - } -#endif /* BYFOUR */ - crc = crc ^ 0xffffffffUL; - while (len >= 8) { - DO8; - len -= 8; - } - if (len) do { - DO1; - } while (--len); - return crc ^ 0xffffffffUL; -} - -#ifdef BYFOUR - -/* ========================================================================= */ -#define DOLIT4 c ^= *buf4++; \ - c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \ - crc_table[1][(c >> 16) & 0xff] ^ crc_table[0][c >> 24] -#define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4 - -/* ========================================================================= */ -local unsigned long crc32_little(crc, buf, len) - unsigned long crc; - const unsigned char FAR *buf; - unsigned len; -{ - register z_crc_t c; - register const z_crc_t FAR *buf4; - - c = (z_crc_t)crc; - c = ~c; - while (len && ((ptrdiff_t)buf & 3)) { - c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8); - len--; - } - - buf4 = (const z_crc_t FAR *)(const void FAR *)buf; - while (len >= 32) { - DOLIT32; - len -= 32; - } - while (len >= 4) { - DOLIT4; - len -= 4; - } - buf = (const unsigned char FAR *)buf4; - - if (len) do { - c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8); - } while (--len); - c = ~c; - return (unsigned long)c; -} - -/* ========================================================================= */ -#define DOBIG4 c ^= *++buf4; \ - c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \ - crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24] -#define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4 - -/* ========================================================================= */ -local unsigned long crc32_big(crc, buf, len) - unsigned long crc; - const unsigned char FAR *buf; - unsigned len; -{ - register z_crc_t c; - register const z_crc_t FAR *buf4; - - c = ZSWAP32((z_crc_t)crc); - c = ~c; - while (len && ((ptrdiff_t)buf & 3)) { - c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8); - len--; - } - - buf4 = (const z_crc_t FAR *)(const void FAR *)buf; - buf4--; - while (len >= 32) { - DOBIG32; - len -= 32; - } - while (len >= 4) { - DOBIG4; - len -= 4; - } - buf4++; - buf = (const unsigned char FAR *)buf4; - - if (len) do { - c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8); - } while (--len); - c = ~c; - return (unsigned long)(ZSWAP32(c)); -} - -#endif /* BYFOUR */ - -#define GF2_DIM 32 /* dimension of GF(2) vectors (length of CRC) */ - -/* ========================================================================= */ -local unsigned long gf2_matrix_times(mat, vec) - unsigned long *mat; - unsigned long vec; -{ - unsigned long sum; - - sum = 0; - while (vec) { - if (vec & 1) - sum ^= *mat; - vec >>= 1; - mat++; - } - return sum; -} - -/* ========================================================================= */ -local void gf2_matrix_square(square, mat) - unsigned long *square; - unsigned long *mat; -{ - int n; - - for (n = 0; n < GF2_DIM; n++) - square[n] = gf2_matrix_times(mat, mat[n]); -} - -/* ========================================================================= */ -local uLong crc32_combine_(crc1, crc2, len2) - uLong crc1; - uLong crc2; - z_off64_t len2; -{ - int n; - unsigned long row; - unsigned long even[GF2_DIM]; /* even-power-of-two zeros operator */ - unsigned long odd[GF2_DIM]; /* odd-power-of-two zeros operator */ - - /* degenerate case (also disallow negative lengths) */ - if (len2 <= 0) - return crc1; - - /* put operator for one zero bit in odd */ - odd[0] = 0xedb88320UL; /* CRC-32 polynomial */ - row = 1; - for (n = 1; n < GF2_DIM; n++) { - odd[n] = row; - row <<= 1; - } - - /* put operator for two zero bits in even */ - gf2_matrix_square(even, odd); - - /* put operator for four zero bits in odd */ - gf2_matrix_square(odd, even); - - /* apply len2 zeros to crc1 (first square will put the operator for one - zero byte, eight zero bits, in even) */ - do { - /* apply zeros operator for this bit of len2 */ - gf2_matrix_square(even, odd); - if (len2 & 1) - crc1 = gf2_matrix_times(even, crc1); - len2 >>= 1; - - /* if no more bits set, then done */ - if (len2 == 0) - break; - - /* another iteration of the loop with odd and even swapped */ - gf2_matrix_square(odd, even); - if (len2 & 1) - crc1 = gf2_matrix_times(odd, crc1); - len2 >>= 1; - - /* if no more bits set, then done */ - } while (len2 != 0); - - /* return combined crc */ - crc1 ^= crc2; - return crc1; -} - -/* ========================================================================= */ -uLong ZEXPORT crc32_combine(crc1, crc2, len2) - uLong crc1; - uLong crc2; - z_off_t len2; -{ - return crc32_combine_(crc1, crc2, len2); -} - -uLong ZEXPORT crc32_combine64(crc1, crc2, len2) - uLong crc1; - uLong crc2; - z_off64_t len2; -{ - return crc32_combine_(crc1, crc2, len2); -} diff --git a/platform/win32/msvc/external/zlib/crc32.h b/platform/win32/msvc/external/zlib/crc32.h deleted file mode 100644 index 9e0c7781025..00000000000 --- a/platform/win32/msvc/external/zlib/crc32.h +++ /dev/null @@ -1,441 +0,0 @@ -/* crc32.h -- tables for rapid CRC calculation - * Generated automatically by crc32.c - */ - -local const z_crc_t FAR crc_table[TBLS][256] = -{ - { - 0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL, - 0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL, - 0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL, - 0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL, - 0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL, - 0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL, - 0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL, - 0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL, - 0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL, - 0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL, - 0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL, - 0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL, - 0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL, - 0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL, - 0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL, - 0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL, - 0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL, - 0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL, - 0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL, - 0xfbd44c65UL, 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL, - 0x4adfa541UL, 0x3dd895d7UL, 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL, - 0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, 0x44042d73UL, 0x33031de5UL, - 0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, 0xbe0b1010UL, - 0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL, - 0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL, - 0x2eb40d81UL, 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL, - 0x03b6e20cUL, 0x74b1d29aUL, 0xead54739UL, 0x9dd277afUL, 0x04db2615UL, - 0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, 0x0d6d6a3eUL, 0x7a6a5aa8UL, - 0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, 0xf00f9344UL, - 0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL, - 0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL, - 0x67dd4accUL, 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL, - 0xd6d6a3e8UL, 0xa1d1937eUL, 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL, - 0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, 0xd80d2bdaUL, 0xaf0a1b4cUL, - 0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, 0x316e8eefUL, - 0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL, - 0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL, - 0xb2bd0b28UL, 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL, - 0x2cd99e8bUL, 0x5bdeae1dUL, 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL, - 0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, 0x72076785UL, 0x05005713UL, - 0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, 0x92d28e9bUL, - 0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL, - 0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL, - 0x18b74777UL, 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL, - 0x8f659effUL, 0xf862ae69UL, 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL, - 0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, 0xa7672661UL, 0xd06016f7UL, - 0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, 0x40df0b66UL, - 0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL, - 0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL, - 0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL, - 0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL, - 0x2d02ef8dUL -#ifdef BYFOUR - }, - { - 0x00000000UL, 0x191b3141UL, 0x32366282UL, 0x2b2d53c3UL, 0x646cc504UL, - 0x7d77f445UL, 0x565aa786UL, 0x4f4196c7UL, 0xc8d98a08UL, 0xd1c2bb49UL, - 0xfaefe88aUL, 0xe3f4d9cbUL, 0xacb54f0cUL, 0xb5ae7e4dUL, 0x9e832d8eUL, - 0x87981ccfUL, 0x4ac21251UL, 0x53d92310UL, 0x78f470d3UL, 0x61ef4192UL, - 0x2eaed755UL, 0x37b5e614UL, 0x1c98b5d7UL, 0x05838496UL, 0x821b9859UL, - 0x9b00a918UL, 0xb02dfadbUL, 0xa936cb9aUL, 0xe6775d5dUL, 0xff6c6c1cUL, - 0xd4413fdfUL, 0xcd5a0e9eUL, 0x958424a2UL, 0x8c9f15e3UL, 0xa7b24620UL, - 0xbea97761UL, 0xf1e8e1a6UL, 0xe8f3d0e7UL, 0xc3de8324UL, 0xdac5b265UL, - 0x5d5daeaaUL, 0x44469febUL, 0x6f6bcc28UL, 0x7670fd69UL, 0x39316baeUL, - 0x202a5aefUL, 0x0b07092cUL, 0x121c386dUL, 0xdf4636f3UL, 0xc65d07b2UL, - 0xed705471UL, 0xf46b6530UL, 0xbb2af3f7UL, 0xa231c2b6UL, 0x891c9175UL, - 0x9007a034UL, 0x179fbcfbUL, 0x0e848dbaUL, 0x25a9de79UL, 0x3cb2ef38UL, - 0x73f379ffUL, 0x6ae848beUL, 0x41c51b7dUL, 0x58de2a3cUL, 0xf0794f05UL, - 0xe9627e44UL, 0xc24f2d87UL, 0xdb541cc6UL, 0x94158a01UL, 0x8d0ebb40UL, - 0xa623e883UL, 0xbf38d9c2UL, 0x38a0c50dUL, 0x21bbf44cUL, 0x0a96a78fUL, - 0x138d96ceUL, 0x5ccc0009UL, 0x45d73148UL, 0x6efa628bUL, 0x77e153caUL, - 0xbabb5d54UL, 0xa3a06c15UL, 0x888d3fd6UL, 0x91960e97UL, 0xded79850UL, - 0xc7cca911UL, 0xece1fad2UL, 0xf5facb93UL, 0x7262d75cUL, 0x6b79e61dUL, - 0x4054b5deUL, 0x594f849fUL, 0x160e1258UL, 0x0f152319UL, 0x243870daUL, - 0x3d23419bUL, 0x65fd6ba7UL, 0x7ce65ae6UL, 0x57cb0925UL, 0x4ed03864UL, - 0x0191aea3UL, 0x188a9fe2UL, 0x33a7cc21UL, 0x2abcfd60UL, 0xad24e1afUL, - 0xb43fd0eeUL, 0x9f12832dUL, 0x8609b26cUL, 0xc94824abUL, 0xd05315eaUL, - 0xfb7e4629UL, 0xe2657768UL, 0x2f3f79f6UL, 0x362448b7UL, 0x1d091b74UL, - 0x04122a35UL, 0x4b53bcf2UL, 0x52488db3UL, 0x7965de70UL, 0x607eef31UL, - 0xe7e6f3feUL, 0xfefdc2bfUL, 0xd5d0917cUL, 0xcccba03dUL, 0x838a36faUL, - 0x9a9107bbUL, 0xb1bc5478UL, 0xa8a76539UL, 0x3b83984bUL, 0x2298a90aUL, - 0x09b5fac9UL, 0x10aecb88UL, 0x5fef5d4fUL, 0x46f46c0eUL, 0x6dd93fcdUL, - 0x74c20e8cUL, 0xf35a1243UL, 0xea412302UL, 0xc16c70c1UL, 0xd8774180UL, - 0x9736d747UL, 0x8e2de606UL, 0xa500b5c5UL, 0xbc1b8484UL, 0x71418a1aUL, - 0x685abb5bUL, 0x4377e898UL, 0x5a6cd9d9UL, 0x152d4f1eUL, 0x0c367e5fUL, - 0x271b2d9cUL, 0x3e001cddUL, 0xb9980012UL, 0xa0833153UL, 0x8bae6290UL, - 0x92b553d1UL, 0xddf4c516UL, 0xc4eff457UL, 0xefc2a794UL, 0xf6d996d5UL, - 0xae07bce9UL, 0xb71c8da8UL, 0x9c31de6bUL, 0x852aef2aUL, 0xca6b79edUL, - 0xd37048acUL, 0xf85d1b6fUL, 0xe1462a2eUL, 0x66de36e1UL, 0x7fc507a0UL, - 0x54e85463UL, 0x4df36522UL, 0x02b2f3e5UL, 0x1ba9c2a4UL, 0x30849167UL, - 0x299fa026UL, 0xe4c5aeb8UL, 0xfdde9ff9UL, 0xd6f3cc3aUL, 0xcfe8fd7bUL, - 0x80a96bbcUL, 0x99b25afdUL, 0xb29f093eUL, 0xab84387fUL, 0x2c1c24b0UL, - 0x350715f1UL, 0x1e2a4632UL, 0x07317773UL, 0x4870e1b4UL, 0x516bd0f5UL, - 0x7a468336UL, 0x635db277UL, 0xcbfad74eUL, 0xd2e1e60fUL, 0xf9ccb5ccUL, - 0xe0d7848dUL, 0xaf96124aUL, 0xb68d230bUL, 0x9da070c8UL, 0x84bb4189UL, - 0x03235d46UL, 0x1a386c07UL, 0x31153fc4UL, 0x280e0e85UL, 0x674f9842UL, - 0x7e54a903UL, 0x5579fac0UL, 0x4c62cb81UL, 0x8138c51fUL, 0x9823f45eUL, - 0xb30ea79dUL, 0xaa1596dcUL, 0xe554001bUL, 0xfc4f315aUL, 0xd7626299UL, - 0xce7953d8UL, 0x49e14f17UL, 0x50fa7e56UL, 0x7bd72d95UL, 0x62cc1cd4UL, - 0x2d8d8a13UL, 0x3496bb52UL, 0x1fbbe891UL, 0x06a0d9d0UL, 0x5e7ef3ecUL, - 0x4765c2adUL, 0x6c48916eUL, 0x7553a02fUL, 0x3a1236e8UL, 0x230907a9UL, - 0x0824546aUL, 0x113f652bUL, 0x96a779e4UL, 0x8fbc48a5UL, 0xa4911b66UL, - 0xbd8a2a27UL, 0xf2cbbce0UL, 0xebd08da1UL, 0xc0fdde62UL, 0xd9e6ef23UL, - 0x14bce1bdUL, 0x0da7d0fcUL, 0x268a833fUL, 0x3f91b27eUL, 0x70d024b9UL, - 0x69cb15f8UL, 0x42e6463bUL, 0x5bfd777aUL, 0xdc656bb5UL, 0xc57e5af4UL, - 0xee530937UL, 0xf7483876UL, 0xb809aeb1UL, 0xa1129ff0UL, 0x8a3fcc33UL, - 0x9324fd72UL - }, - { - 0x00000000UL, 0x01c26a37UL, 0x0384d46eUL, 0x0246be59UL, 0x0709a8dcUL, - 0x06cbc2ebUL, 0x048d7cb2UL, 0x054f1685UL, 0x0e1351b8UL, 0x0fd13b8fUL, - 0x0d9785d6UL, 0x0c55efe1UL, 0x091af964UL, 0x08d89353UL, 0x0a9e2d0aUL, - 0x0b5c473dUL, 0x1c26a370UL, 0x1de4c947UL, 0x1fa2771eUL, 0x1e601d29UL, - 0x1b2f0bacUL, 0x1aed619bUL, 0x18abdfc2UL, 0x1969b5f5UL, 0x1235f2c8UL, - 0x13f798ffUL, 0x11b126a6UL, 0x10734c91UL, 0x153c5a14UL, 0x14fe3023UL, - 0x16b88e7aUL, 0x177ae44dUL, 0x384d46e0UL, 0x398f2cd7UL, 0x3bc9928eUL, - 0x3a0bf8b9UL, 0x3f44ee3cUL, 0x3e86840bUL, 0x3cc03a52UL, 0x3d025065UL, - 0x365e1758UL, 0x379c7d6fUL, 0x35dac336UL, 0x3418a901UL, 0x3157bf84UL, - 0x3095d5b3UL, 0x32d36beaUL, 0x331101ddUL, 0x246be590UL, 0x25a98fa7UL, - 0x27ef31feUL, 0x262d5bc9UL, 0x23624d4cUL, 0x22a0277bUL, 0x20e69922UL, - 0x2124f315UL, 0x2a78b428UL, 0x2bbade1fUL, 0x29fc6046UL, 0x283e0a71UL, - 0x2d711cf4UL, 0x2cb376c3UL, 0x2ef5c89aUL, 0x2f37a2adUL, 0x709a8dc0UL, - 0x7158e7f7UL, 0x731e59aeUL, 0x72dc3399UL, 0x7793251cUL, 0x76514f2bUL, - 0x7417f172UL, 0x75d59b45UL, 0x7e89dc78UL, 0x7f4bb64fUL, 0x7d0d0816UL, - 0x7ccf6221UL, 0x798074a4UL, 0x78421e93UL, 0x7a04a0caUL, 0x7bc6cafdUL, - 0x6cbc2eb0UL, 0x6d7e4487UL, 0x6f38fadeUL, 0x6efa90e9UL, 0x6bb5866cUL, - 0x6a77ec5bUL, 0x68315202UL, 0x69f33835UL, 0x62af7f08UL, 0x636d153fUL, - 0x612bab66UL, 0x60e9c151UL, 0x65a6d7d4UL, 0x6464bde3UL, 0x662203baUL, - 0x67e0698dUL, 0x48d7cb20UL, 0x4915a117UL, 0x4b531f4eUL, 0x4a917579UL, - 0x4fde63fcUL, 0x4e1c09cbUL, 0x4c5ab792UL, 0x4d98dda5UL, 0x46c49a98UL, - 0x4706f0afUL, 0x45404ef6UL, 0x448224c1UL, 0x41cd3244UL, 0x400f5873UL, - 0x4249e62aUL, 0x438b8c1dUL, 0x54f16850UL, 0x55330267UL, 0x5775bc3eUL, - 0x56b7d609UL, 0x53f8c08cUL, 0x523aaabbUL, 0x507c14e2UL, 0x51be7ed5UL, - 0x5ae239e8UL, 0x5b2053dfUL, 0x5966ed86UL, 0x58a487b1UL, 0x5deb9134UL, - 0x5c29fb03UL, 0x5e6f455aUL, 0x5fad2f6dUL, 0xe1351b80UL, 0xe0f771b7UL, - 0xe2b1cfeeUL, 0xe373a5d9UL, 0xe63cb35cUL, 0xe7fed96bUL, 0xe5b86732UL, - 0xe47a0d05UL, 0xef264a38UL, 0xeee4200fUL, 0xeca29e56UL, 0xed60f461UL, - 0xe82fe2e4UL, 0xe9ed88d3UL, 0xebab368aUL, 0xea695cbdUL, 0xfd13b8f0UL, - 0xfcd1d2c7UL, 0xfe976c9eUL, 0xff5506a9UL, 0xfa1a102cUL, 0xfbd87a1bUL, - 0xf99ec442UL, 0xf85cae75UL, 0xf300e948UL, 0xf2c2837fUL, 0xf0843d26UL, - 0xf1465711UL, 0xf4094194UL, 0xf5cb2ba3UL, 0xf78d95faUL, 0xf64fffcdUL, - 0xd9785d60UL, 0xd8ba3757UL, 0xdafc890eUL, 0xdb3ee339UL, 0xde71f5bcUL, - 0xdfb39f8bUL, 0xddf521d2UL, 0xdc374be5UL, 0xd76b0cd8UL, 0xd6a966efUL, - 0xd4efd8b6UL, 0xd52db281UL, 0xd062a404UL, 0xd1a0ce33UL, 0xd3e6706aUL, - 0xd2241a5dUL, 0xc55efe10UL, 0xc49c9427UL, 0xc6da2a7eUL, 0xc7184049UL, - 0xc25756ccUL, 0xc3953cfbUL, 0xc1d382a2UL, 0xc011e895UL, 0xcb4dafa8UL, - 0xca8fc59fUL, 0xc8c97bc6UL, 0xc90b11f1UL, 0xcc440774UL, 0xcd866d43UL, - 0xcfc0d31aUL, 0xce02b92dUL, 0x91af9640UL, 0x906dfc77UL, 0x922b422eUL, - 0x93e92819UL, 0x96a63e9cUL, 0x976454abUL, 0x9522eaf2UL, 0x94e080c5UL, - 0x9fbcc7f8UL, 0x9e7eadcfUL, 0x9c381396UL, 0x9dfa79a1UL, 0x98b56f24UL, - 0x99770513UL, 0x9b31bb4aUL, 0x9af3d17dUL, 0x8d893530UL, 0x8c4b5f07UL, - 0x8e0de15eUL, 0x8fcf8b69UL, 0x8a809decUL, 0x8b42f7dbUL, 0x89044982UL, - 0x88c623b5UL, 0x839a6488UL, 0x82580ebfUL, 0x801eb0e6UL, 0x81dcdad1UL, - 0x8493cc54UL, 0x8551a663UL, 0x8717183aUL, 0x86d5720dUL, 0xa9e2d0a0UL, - 0xa820ba97UL, 0xaa6604ceUL, 0xaba46ef9UL, 0xaeeb787cUL, 0xaf29124bUL, - 0xad6fac12UL, 0xacadc625UL, 0xa7f18118UL, 0xa633eb2fUL, 0xa4755576UL, - 0xa5b73f41UL, 0xa0f829c4UL, 0xa13a43f3UL, 0xa37cfdaaUL, 0xa2be979dUL, - 0xb5c473d0UL, 0xb40619e7UL, 0xb640a7beUL, 0xb782cd89UL, 0xb2cddb0cUL, - 0xb30fb13bUL, 0xb1490f62UL, 0xb08b6555UL, 0xbbd72268UL, 0xba15485fUL, - 0xb853f606UL, 0xb9919c31UL, 0xbcde8ab4UL, 0xbd1ce083UL, 0xbf5a5edaUL, - 0xbe9834edUL - }, - { - 0x00000000UL, 0xb8bc6765UL, 0xaa09c88bUL, 0x12b5afeeUL, 0x8f629757UL, - 0x37def032UL, 0x256b5fdcUL, 0x9dd738b9UL, 0xc5b428efUL, 0x7d084f8aUL, - 0x6fbde064UL, 0xd7018701UL, 0x4ad6bfb8UL, 0xf26ad8ddUL, 0xe0df7733UL, - 0x58631056UL, 0x5019579fUL, 0xe8a530faUL, 0xfa109f14UL, 0x42acf871UL, - 0xdf7bc0c8UL, 0x67c7a7adUL, 0x75720843UL, 0xcdce6f26UL, 0x95ad7f70UL, - 0x2d111815UL, 0x3fa4b7fbUL, 0x8718d09eUL, 0x1acfe827UL, 0xa2738f42UL, - 0xb0c620acUL, 0x087a47c9UL, 0xa032af3eUL, 0x188ec85bUL, 0x0a3b67b5UL, - 0xb28700d0UL, 0x2f503869UL, 0x97ec5f0cUL, 0x8559f0e2UL, 0x3de59787UL, - 0x658687d1UL, 0xdd3ae0b4UL, 0xcf8f4f5aUL, 0x7733283fUL, 0xeae41086UL, - 0x525877e3UL, 0x40edd80dUL, 0xf851bf68UL, 0xf02bf8a1UL, 0x48979fc4UL, - 0x5a22302aUL, 0xe29e574fUL, 0x7f496ff6UL, 0xc7f50893UL, 0xd540a77dUL, - 0x6dfcc018UL, 0x359fd04eUL, 0x8d23b72bUL, 0x9f9618c5UL, 0x272a7fa0UL, - 0xbafd4719UL, 0x0241207cUL, 0x10f48f92UL, 0xa848e8f7UL, 0x9b14583dUL, - 0x23a83f58UL, 0x311d90b6UL, 0x89a1f7d3UL, 0x1476cf6aUL, 0xaccaa80fUL, - 0xbe7f07e1UL, 0x06c36084UL, 0x5ea070d2UL, 0xe61c17b7UL, 0xf4a9b859UL, - 0x4c15df3cUL, 0xd1c2e785UL, 0x697e80e0UL, 0x7bcb2f0eUL, 0xc377486bUL, - 0xcb0d0fa2UL, 0x73b168c7UL, 0x6104c729UL, 0xd9b8a04cUL, 0x446f98f5UL, - 0xfcd3ff90UL, 0xee66507eUL, 0x56da371bUL, 0x0eb9274dUL, 0xb6054028UL, - 0xa4b0efc6UL, 0x1c0c88a3UL, 0x81dbb01aUL, 0x3967d77fUL, 0x2bd27891UL, - 0x936e1ff4UL, 0x3b26f703UL, 0x839a9066UL, 0x912f3f88UL, 0x299358edUL, - 0xb4446054UL, 0x0cf80731UL, 0x1e4da8dfUL, 0xa6f1cfbaUL, 0xfe92dfecUL, - 0x462eb889UL, 0x549b1767UL, 0xec277002UL, 0x71f048bbUL, 0xc94c2fdeUL, - 0xdbf98030UL, 0x6345e755UL, 0x6b3fa09cUL, 0xd383c7f9UL, 0xc1366817UL, - 0x798a0f72UL, 0xe45d37cbUL, 0x5ce150aeUL, 0x4e54ff40UL, 0xf6e89825UL, - 0xae8b8873UL, 0x1637ef16UL, 0x048240f8UL, 0xbc3e279dUL, 0x21e91f24UL, - 0x99557841UL, 0x8be0d7afUL, 0x335cb0caUL, 0xed59b63bUL, 0x55e5d15eUL, - 0x47507eb0UL, 0xffec19d5UL, 0x623b216cUL, 0xda874609UL, 0xc832e9e7UL, - 0x708e8e82UL, 0x28ed9ed4UL, 0x9051f9b1UL, 0x82e4565fUL, 0x3a58313aUL, - 0xa78f0983UL, 0x1f336ee6UL, 0x0d86c108UL, 0xb53aa66dUL, 0xbd40e1a4UL, - 0x05fc86c1UL, 0x1749292fUL, 0xaff54e4aUL, 0x322276f3UL, 0x8a9e1196UL, - 0x982bbe78UL, 0x2097d91dUL, 0x78f4c94bUL, 0xc048ae2eUL, 0xd2fd01c0UL, - 0x6a4166a5UL, 0xf7965e1cUL, 0x4f2a3979UL, 0x5d9f9697UL, 0xe523f1f2UL, - 0x4d6b1905UL, 0xf5d77e60UL, 0xe762d18eUL, 0x5fdeb6ebUL, 0xc2098e52UL, - 0x7ab5e937UL, 0x680046d9UL, 0xd0bc21bcUL, 0x88df31eaUL, 0x3063568fUL, - 0x22d6f961UL, 0x9a6a9e04UL, 0x07bda6bdUL, 0xbf01c1d8UL, 0xadb46e36UL, - 0x15080953UL, 0x1d724e9aUL, 0xa5ce29ffUL, 0xb77b8611UL, 0x0fc7e174UL, - 0x9210d9cdUL, 0x2aacbea8UL, 0x38191146UL, 0x80a57623UL, 0xd8c66675UL, - 0x607a0110UL, 0x72cfaefeUL, 0xca73c99bUL, 0x57a4f122UL, 0xef189647UL, - 0xfdad39a9UL, 0x45115eccUL, 0x764dee06UL, 0xcef18963UL, 0xdc44268dUL, - 0x64f841e8UL, 0xf92f7951UL, 0x41931e34UL, 0x5326b1daUL, 0xeb9ad6bfUL, - 0xb3f9c6e9UL, 0x0b45a18cUL, 0x19f00e62UL, 0xa14c6907UL, 0x3c9b51beUL, - 0x842736dbUL, 0x96929935UL, 0x2e2efe50UL, 0x2654b999UL, 0x9ee8defcUL, - 0x8c5d7112UL, 0x34e11677UL, 0xa9362eceUL, 0x118a49abUL, 0x033fe645UL, - 0xbb838120UL, 0xe3e09176UL, 0x5b5cf613UL, 0x49e959fdUL, 0xf1553e98UL, - 0x6c820621UL, 0xd43e6144UL, 0xc68bceaaUL, 0x7e37a9cfUL, 0xd67f4138UL, - 0x6ec3265dUL, 0x7c7689b3UL, 0xc4caeed6UL, 0x591dd66fUL, 0xe1a1b10aUL, - 0xf3141ee4UL, 0x4ba87981UL, 0x13cb69d7UL, 0xab770eb2UL, 0xb9c2a15cUL, - 0x017ec639UL, 0x9ca9fe80UL, 0x241599e5UL, 0x36a0360bUL, 0x8e1c516eUL, - 0x866616a7UL, 0x3eda71c2UL, 0x2c6fde2cUL, 0x94d3b949UL, 0x090481f0UL, - 0xb1b8e695UL, 0xa30d497bUL, 0x1bb12e1eUL, 0x43d23e48UL, 0xfb6e592dUL, - 0xe9dbf6c3UL, 0x516791a6UL, 0xccb0a91fUL, 0x740cce7aUL, 0x66b96194UL, - 0xde0506f1UL - }, - { - 0x00000000UL, 0x96300777UL, 0x2c610eeeUL, 0xba510999UL, 0x19c46d07UL, - 0x8ff46a70UL, 0x35a563e9UL, 0xa395649eUL, 0x3288db0eUL, 0xa4b8dc79UL, - 0x1ee9d5e0UL, 0x88d9d297UL, 0x2b4cb609UL, 0xbd7cb17eUL, 0x072db8e7UL, - 0x911dbf90UL, 0x6410b71dUL, 0xf220b06aUL, 0x4871b9f3UL, 0xde41be84UL, - 0x7dd4da1aUL, 0xebe4dd6dUL, 0x51b5d4f4UL, 0xc785d383UL, 0x56986c13UL, - 0xc0a86b64UL, 0x7af962fdUL, 0xecc9658aUL, 0x4f5c0114UL, 0xd96c0663UL, - 0x633d0ffaUL, 0xf50d088dUL, 0xc8206e3bUL, 0x5e10694cUL, 0xe44160d5UL, - 0x727167a2UL, 0xd1e4033cUL, 0x47d4044bUL, 0xfd850dd2UL, 0x6bb50aa5UL, - 0xfaa8b535UL, 0x6c98b242UL, 0xd6c9bbdbUL, 0x40f9bcacUL, 0xe36cd832UL, - 0x755cdf45UL, 0xcf0dd6dcUL, 0x593dd1abUL, 0xac30d926UL, 0x3a00de51UL, - 0x8051d7c8UL, 0x1661d0bfUL, 0xb5f4b421UL, 0x23c4b356UL, 0x9995bacfUL, - 0x0fa5bdb8UL, 0x9eb80228UL, 0x0888055fUL, 0xb2d90cc6UL, 0x24e90bb1UL, - 0x877c6f2fUL, 0x114c6858UL, 0xab1d61c1UL, 0x3d2d66b6UL, 0x9041dc76UL, - 0x0671db01UL, 0xbc20d298UL, 0x2a10d5efUL, 0x8985b171UL, 0x1fb5b606UL, - 0xa5e4bf9fUL, 0x33d4b8e8UL, 0xa2c90778UL, 0x34f9000fUL, 0x8ea80996UL, - 0x18980ee1UL, 0xbb0d6a7fUL, 0x2d3d6d08UL, 0x976c6491UL, 0x015c63e6UL, - 0xf4516b6bUL, 0x62616c1cUL, 0xd8306585UL, 0x4e0062f2UL, 0xed95066cUL, - 0x7ba5011bUL, 0xc1f40882UL, 0x57c40ff5UL, 0xc6d9b065UL, 0x50e9b712UL, - 0xeab8be8bUL, 0x7c88b9fcUL, 0xdf1ddd62UL, 0x492dda15UL, 0xf37cd38cUL, - 0x654cd4fbUL, 0x5861b24dUL, 0xce51b53aUL, 0x7400bca3UL, 0xe230bbd4UL, - 0x41a5df4aUL, 0xd795d83dUL, 0x6dc4d1a4UL, 0xfbf4d6d3UL, 0x6ae96943UL, - 0xfcd96e34UL, 0x468867adUL, 0xd0b860daUL, 0x732d0444UL, 0xe51d0333UL, - 0x5f4c0aaaUL, 0xc97c0dddUL, 0x3c710550UL, 0xaa410227UL, 0x10100bbeUL, - 0x86200cc9UL, 0x25b56857UL, 0xb3856f20UL, 0x09d466b9UL, 0x9fe461ceUL, - 0x0ef9de5eUL, 0x98c9d929UL, 0x2298d0b0UL, 0xb4a8d7c7UL, 0x173db359UL, - 0x810db42eUL, 0x3b5cbdb7UL, 0xad6cbac0UL, 0x2083b8edUL, 0xb6b3bf9aUL, - 0x0ce2b603UL, 0x9ad2b174UL, 0x3947d5eaUL, 0xaf77d29dUL, 0x1526db04UL, - 0x8316dc73UL, 0x120b63e3UL, 0x843b6494UL, 0x3e6a6d0dUL, 0xa85a6a7aUL, - 0x0bcf0ee4UL, 0x9dff0993UL, 0x27ae000aUL, 0xb19e077dUL, 0x44930ff0UL, - 0xd2a30887UL, 0x68f2011eUL, 0xfec20669UL, 0x5d5762f7UL, 0xcb676580UL, - 0x71366c19UL, 0xe7066b6eUL, 0x761bd4feUL, 0xe02bd389UL, 0x5a7ada10UL, - 0xcc4add67UL, 0x6fdfb9f9UL, 0xf9efbe8eUL, 0x43beb717UL, 0xd58eb060UL, - 0xe8a3d6d6UL, 0x7e93d1a1UL, 0xc4c2d838UL, 0x52f2df4fUL, 0xf167bbd1UL, - 0x6757bca6UL, 0xdd06b53fUL, 0x4b36b248UL, 0xda2b0dd8UL, 0x4c1b0aafUL, - 0xf64a0336UL, 0x607a0441UL, 0xc3ef60dfUL, 0x55df67a8UL, 0xef8e6e31UL, - 0x79be6946UL, 0x8cb361cbUL, 0x1a8366bcUL, 0xa0d26f25UL, 0x36e26852UL, - 0x95770cccUL, 0x03470bbbUL, 0xb9160222UL, 0x2f260555UL, 0xbe3bbac5UL, - 0x280bbdb2UL, 0x925ab42bUL, 0x046ab35cUL, 0xa7ffd7c2UL, 0x31cfd0b5UL, - 0x8b9ed92cUL, 0x1daede5bUL, 0xb0c2649bUL, 0x26f263ecUL, 0x9ca36a75UL, - 0x0a936d02UL, 0xa906099cUL, 0x3f360eebUL, 0x85670772UL, 0x13570005UL, - 0x824abf95UL, 0x147ab8e2UL, 0xae2bb17bUL, 0x381bb60cUL, 0x9b8ed292UL, - 0x0dbed5e5UL, 0xb7efdc7cUL, 0x21dfdb0bUL, 0xd4d2d386UL, 0x42e2d4f1UL, - 0xf8b3dd68UL, 0x6e83da1fUL, 0xcd16be81UL, 0x5b26b9f6UL, 0xe177b06fUL, - 0x7747b718UL, 0xe65a0888UL, 0x706a0fffUL, 0xca3b0666UL, 0x5c0b0111UL, - 0xff9e658fUL, 0x69ae62f8UL, 0xd3ff6b61UL, 0x45cf6c16UL, 0x78e20aa0UL, - 0xeed20dd7UL, 0x5483044eUL, 0xc2b30339UL, 0x612667a7UL, 0xf71660d0UL, - 0x4d476949UL, 0xdb776e3eUL, 0x4a6ad1aeUL, 0xdc5ad6d9UL, 0x660bdf40UL, - 0xf03bd837UL, 0x53aebca9UL, 0xc59ebbdeUL, 0x7fcfb247UL, 0xe9ffb530UL, - 0x1cf2bdbdUL, 0x8ac2bacaUL, 0x3093b353UL, 0xa6a3b424UL, 0x0536d0baUL, - 0x9306d7cdUL, 0x2957de54UL, 0xbf67d923UL, 0x2e7a66b3UL, 0xb84a61c4UL, - 0x021b685dUL, 0x942b6f2aUL, 0x37be0bb4UL, 0xa18e0cc3UL, 0x1bdf055aUL, - 0x8def022dUL - }, - { - 0x00000000UL, 0x41311b19UL, 0x82623632UL, 0xc3532d2bUL, 0x04c56c64UL, - 0x45f4777dUL, 0x86a75a56UL, 0xc796414fUL, 0x088ad9c8UL, 0x49bbc2d1UL, - 0x8ae8effaUL, 0xcbd9f4e3UL, 0x0c4fb5acUL, 0x4d7eaeb5UL, 0x8e2d839eUL, - 0xcf1c9887UL, 0x5112c24aUL, 0x1023d953UL, 0xd370f478UL, 0x9241ef61UL, - 0x55d7ae2eUL, 0x14e6b537UL, 0xd7b5981cUL, 0x96848305UL, 0x59981b82UL, - 0x18a9009bUL, 0xdbfa2db0UL, 0x9acb36a9UL, 0x5d5d77e6UL, 0x1c6c6cffUL, - 0xdf3f41d4UL, 0x9e0e5acdUL, 0xa2248495UL, 0xe3159f8cUL, 0x2046b2a7UL, - 0x6177a9beUL, 0xa6e1e8f1UL, 0xe7d0f3e8UL, 0x2483dec3UL, 0x65b2c5daUL, - 0xaaae5d5dUL, 0xeb9f4644UL, 0x28cc6b6fUL, 0x69fd7076UL, 0xae6b3139UL, - 0xef5a2a20UL, 0x2c09070bUL, 0x6d381c12UL, 0xf33646dfUL, 0xb2075dc6UL, - 0x715470edUL, 0x30656bf4UL, 0xf7f32abbUL, 0xb6c231a2UL, 0x75911c89UL, - 0x34a00790UL, 0xfbbc9f17UL, 0xba8d840eUL, 0x79dea925UL, 0x38efb23cUL, - 0xff79f373UL, 0xbe48e86aUL, 0x7d1bc541UL, 0x3c2ade58UL, 0x054f79f0UL, - 0x447e62e9UL, 0x872d4fc2UL, 0xc61c54dbUL, 0x018a1594UL, 0x40bb0e8dUL, - 0x83e823a6UL, 0xc2d938bfUL, 0x0dc5a038UL, 0x4cf4bb21UL, 0x8fa7960aUL, - 0xce968d13UL, 0x0900cc5cUL, 0x4831d745UL, 0x8b62fa6eUL, 0xca53e177UL, - 0x545dbbbaUL, 0x156ca0a3UL, 0xd63f8d88UL, 0x970e9691UL, 0x5098d7deUL, - 0x11a9ccc7UL, 0xd2fae1ecUL, 0x93cbfaf5UL, 0x5cd76272UL, 0x1de6796bUL, - 0xdeb55440UL, 0x9f844f59UL, 0x58120e16UL, 0x1923150fUL, 0xda703824UL, - 0x9b41233dUL, 0xa76bfd65UL, 0xe65ae67cUL, 0x2509cb57UL, 0x6438d04eUL, - 0xa3ae9101UL, 0xe29f8a18UL, 0x21cca733UL, 0x60fdbc2aUL, 0xafe124adUL, - 0xeed03fb4UL, 0x2d83129fUL, 0x6cb20986UL, 0xab2448c9UL, 0xea1553d0UL, - 0x29467efbUL, 0x687765e2UL, 0xf6793f2fUL, 0xb7482436UL, 0x741b091dUL, - 0x352a1204UL, 0xf2bc534bUL, 0xb38d4852UL, 0x70de6579UL, 0x31ef7e60UL, - 0xfef3e6e7UL, 0xbfc2fdfeUL, 0x7c91d0d5UL, 0x3da0cbccUL, 0xfa368a83UL, - 0xbb07919aUL, 0x7854bcb1UL, 0x3965a7a8UL, 0x4b98833bUL, 0x0aa99822UL, - 0xc9fab509UL, 0x88cbae10UL, 0x4f5def5fUL, 0x0e6cf446UL, 0xcd3fd96dUL, - 0x8c0ec274UL, 0x43125af3UL, 0x022341eaUL, 0xc1706cc1UL, 0x804177d8UL, - 0x47d73697UL, 0x06e62d8eUL, 0xc5b500a5UL, 0x84841bbcUL, 0x1a8a4171UL, - 0x5bbb5a68UL, 0x98e87743UL, 0xd9d96c5aUL, 0x1e4f2d15UL, 0x5f7e360cUL, - 0x9c2d1b27UL, 0xdd1c003eUL, 0x120098b9UL, 0x533183a0UL, 0x9062ae8bUL, - 0xd153b592UL, 0x16c5f4ddUL, 0x57f4efc4UL, 0x94a7c2efUL, 0xd596d9f6UL, - 0xe9bc07aeUL, 0xa88d1cb7UL, 0x6bde319cUL, 0x2aef2a85UL, 0xed796bcaUL, - 0xac4870d3UL, 0x6f1b5df8UL, 0x2e2a46e1UL, 0xe136de66UL, 0xa007c57fUL, - 0x6354e854UL, 0x2265f34dUL, 0xe5f3b202UL, 0xa4c2a91bUL, 0x67918430UL, - 0x26a09f29UL, 0xb8aec5e4UL, 0xf99fdefdUL, 0x3accf3d6UL, 0x7bfde8cfUL, - 0xbc6ba980UL, 0xfd5ab299UL, 0x3e099fb2UL, 0x7f3884abUL, 0xb0241c2cUL, - 0xf1150735UL, 0x32462a1eUL, 0x73773107UL, 0xb4e17048UL, 0xf5d06b51UL, - 0x3683467aUL, 0x77b25d63UL, 0x4ed7facbUL, 0x0fe6e1d2UL, 0xccb5ccf9UL, - 0x8d84d7e0UL, 0x4a1296afUL, 0x0b238db6UL, 0xc870a09dUL, 0x8941bb84UL, - 0x465d2303UL, 0x076c381aUL, 0xc43f1531UL, 0x850e0e28UL, 0x42984f67UL, - 0x03a9547eUL, 0xc0fa7955UL, 0x81cb624cUL, 0x1fc53881UL, 0x5ef42398UL, - 0x9da70eb3UL, 0xdc9615aaUL, 0x1b0054e5UL, 0x5a314ffcUL, 0x996262d7UL, - 0xd85379ceUL, 0x174fe149UL, 0x567efa50UL, 0x952dd77bUL, 0xd41ccc62UL, - 0x138a8d2dUL, 0x52bb9634UL, 0x91e8bb1fUL, 0xd0d9a006UL, 0xecf37e5eUL, - 0xadc26547UL, 0x6e91486cUL, 0x2fa05375UL, 0xe836123aUL, 0xa9070923UL, - 0x6a542408UL, 0x2b653f11UL, 0xe479a796UL, 0xa548bc8fUL, 0x661b91a4UL, - 0x272a8abdUL, 0xe0bccbf2UL, 0xa18dd0ebUL, 0x62defdc0UL, 0x23efe6d9UL, - 0xbde1bc14UL, 0xfcd0a70dUL, 0x3f838a26UL, 0x7eb2913fUL, 0xb924d070UL, - 0xf815cb69UL, 0x3b46e642UL, 0x7a77fd5bUL, 0xb56b65dcUL, 0xf45a7ec5UL, - 0x370953eeUL, 0x763848f7UL, 0xb1ae09b8UL, 0xf09f12a1UL, 0x33cc3f8aUL, - 0x72fd2493UL - }, - { - 0x00000000UL, 0x376ac201UL, 0x6ed48403UL, 0x59be4602UL, 0xdca80907UL, - 0xebc2cb06UL, 0xb27c8d04UL, 0x85164f05UL, 0xb851130eUL, 0x8f3bd10fUL, - 0xd685970dUL, 0xe1ef550cUL, 0x64f91a09UL, 0x5393d808UL, 0x0a2d9e0aUL, - 0x3d475c0bUL, 0x70a3261cUL, 0x47c9e41dUL, 0x1e77a21fUL, 0x291d601eUL, - 0xac0b2f1bUL, 0x9b61ed1aUL, 0xc2dfab18UL, 0xf5b56919UL, 0xc8f23512UL, - 0xff98f713UL, 0xa626b111UL, 0x914c7310UL, 0x145a3c15UL, 0x2330fe14UL, - 0x7a8eb816UL, 0x4de47a17UL, 0xe0464d38UL, 0xd72c8f39UL, 0x8e92c93bUL, - 0xb9f80b3aUL, 0x3cee443fUL, 0x0b84863eUL, 0x523ac03cUL, 0x6550023dUL, - 0x58175e36UL, 0x6f7d9c37UL, 0x36c3da35UL, 0x01a91834UL, 0x84bf5731UL, - 0xb3d59530UL, 0xea6bd332UL, 0xdd011133UL, 0x90e56b24UL, 0xa78fa925UL, - 0xfe31ef27UL, 0xc95b2d26UL, 0x4c4d6223UL, 0x7b27a022UL, 0x2299e620UL, - 0x15f32421UL, 0x28b4782aUL, 0x1fdeba2bUL, 0x4660fc29UL, 0x710a3e28UL, - 0xf41c712dUL, 0xc376b32cUL, 0x9ac8f52eUL, 0xada2372fUL, 0xc08d9a70UL, - 0xf7e75871UL, 0xae591e73UL, 0x9933dc72UL, 0x1c259377UL, 0x2b4f5176UL, - 0x72f11774UL, 0x459bd575UL, 0x78dc897eUL, 0x4fb64b7fUL, 0x16080d7dUL, - 0x2162cf7cUL, 0xa4748079UL, 0x931e4278UL, 0xcaa0047aUL, 0xfdcac67bUL, - 0xb02ebc6cUL, 0x87447e6dUL, 0xdefa386fUL, 0xe990fa6eUL, 0x6c86b56bUL, - 0x5bec776aUL, 0x02523168UL, 0x3538f369UL, 0x087faf62UL, 0x3f156d63UL, - 0x66ab2b61UL, 0x51c1e960UL, 0xd4d7a665UL, 0xe3bd6464UL, 0xba032266UL, - 0x8d69e067UL, 0x20cbd748UL, 0x17a11549UL, 0x4e1f534bUL, 0x7975914aUL, - 0xfc63de4fUL, 0xcb091c4eUL, 0x92b75a4cUL, 0xa5dd984dUL, 0x989ac446UL, - 0xaff00647UL, 0xf64e4045UL, 0xc1248244UL, 0x4432cd41UL, 0x73580f40UL, - 0x2ae64942UL, 0x1d8c8b43UL, 0x5068f154UL, 0x67023355UL, 0x3ebc7557UL, - 0x09d6b756UL, 0x8cc0f853UL, 0xbbaa3a52UL, 0xe2147c50UL, 0xd57ebe51UL, - 0xe839e25aUL, 0xdf53205bUL, 0x86ed6659UL, 0xb187a458UL, 0x3491eb5dUL, - 0x03fb295cUL, 0x5a456f5eUL, 0x6d2fad5fUL, 0x801b35e1UL, 0xb771f7e0UL, - 0xeecfb1e2UL, 0xd9a573e3UL, 0x5cb33ce6UL, 0x6bd9fee7UL, 0x3267b8e5UL, - 0x050d7ae4UL, 0x384a26efUL, 0x0f20e4eeUL, 0x569ea2ecUL, 0x61f460edUL, - 0xe4e22fe8UL, 0xd388ede9UL, 0x8a36abebUL, 0xbd5c69eaUL, 0xf0b813fdUL, - 0xc7d2d1fcUL, 0x9e6c97feUL, 0xa90655ffUL, 0x2c101afaUL, 0x1b7ad8fbUL, - 0x42c49ef9UL, 0x75ae5cf8UL, 0x48e900f3UL, 0x7f83c2f2UL, 0x263d84f0UL, - 0x115746f1UL, 0x944109f4UL, 0xa32bcbf5UL, 0xfa958df7UL, 0xcdff4ff6UL, - 0x605d78d9UL, 0x5737bad8UL, 0x0e89fcdaUL, 0x39e33edbUL, 0xbcf571deUL, - 0x8b9fb3dfUL, 0xd221f5ddUL, 0xe54b37dcUL, 0xd80c6bd7UL, 0xef66a9d6UL, - 0xb6d8efd4UL, 0x81b22dd5UL, 0x04a462d0UL, 0x33cea0d1UL, 0x6a70e6d3UL, - 0x5d1a24d2UL, 0x10fe5ec5UL, 0x27949cc4UL, 0x7e2adac6UL, 0x494018c7UL, - 0xcc5657c2UL, 0xfb3c95c3UL, 0xa282d3c1UL, 0x95e811c0UL, 0xa8af4dcbUL, - 0x9fc58fcaUL, 0xc67bc9c8UL, 0xf1110bc9UL, 0x740744ccUL, 0x436d86cdUL, - 0x1ad3c0cfUL, 0x2db902ceUL, 0x4096af91UL, 0x77fc6d90UL, 0x2e422b92UL, - 0x1928e993UL, 0x9c3ea696UL, 0xab546497UL, 0xf2ea2295UL, 0xc580e094UL, - 0xf8c7bc9fUL, 0xcfad7e9eUL, 0x9613389cUL, 0xa179fa9dUL, 0x246fb598UL, - 0x13057799UL, 0x4abb319bUL, 0x7dd1f39aUL, 0x3035898dUL, 0x075f4b8cUL, - 0x5ee10d8eUL, 0x698bcf8fUL, 0xec9d808aUL, 0xdbf7428bUL, 0x82490489UL, - 0xb523c688UL, 0x88649a83UL, 0xbf0e5882UL, 0xe6b01e80UL, 0xd1dadc81UL, - 0x54cc9384UL, 0x63a65185UL, 0x3a181787UL, 0x0d72d586UL, 0xa0d0e2a9UL, - 0x97ba20a8UL, 0xce0466aaUL, 0xf96ea4abUL, 0x7c78ebaeUL, 0x4b1229afUL, - 0x12ac6fadUL, 0x25c6adacUL, 0x1881f1a7UL, 0x2feb33a6UL, 0x765575a4UL, - 0x413fb7a5UL, 0xc429f8a0UL, 0xf3433aa1UL, 0xaafd7ca3UL, 0x9d97bea2UL, - 0xd073c4b5UL, 0xe71906b4UL, 0xbea740b6UL, 0x89cd82b7UL, 0x0cdbcdb2UL, - 0x3bb10fb3UL, 0x620f49b1UL, 0x55658bb0UL, 0x6822d7bbUL, 0x5f4815baUL, - 0x06f653b8UL, 0x319c91b9UL, 0xb48adebcUL, 0x83e01cbdUL, 0xda5e5abfUL, - 0xed3498beUL - }, - { - 0x00000000UL, 0x6567bcb8UL, 0x8bc809aaUL, 0xeeafb512UL, 0x5797628fUL, - 0x32f0de37UL, 0xdc5f6b25UL, 0xb938d79dUL, 0xef28b4c5UL, 0x8a4f087dUL, - 0x64e0bd6fUL, 0x018701d7UL, 0xb8bfd64aUL, 0xddd86af2UL, 0x3377dfe0UL, - 0x56106358UL, 0x9f571950UL, 0xfa30a5e8UL, 0x149f10faUL, 0x71f8ac42UL, - 0xc8c07bdfUL, 0xada7c767UL, 0x43087275UL, 0x266fcecdUL, 0x707fad95UL, - 0x1518112dUL, 0xfbb7a43fUL, 0x9ed01887UL, 0x27e8cf1aUL, 0x428f73a2UL, - 0xac20c6b0UL, 0xc9477a08UL, 0x3eaf32a0UL, 0x5bc88e18UL, 0xb5673b0aUL, - 0xd00087b2UL, 0x6938502fUL, 0x0c5fec97UL, 0xe2f05985UL, 0x8797e53dUL, - 0xd1878665UL, 0xb4e03addUL, 0x5a4f8fcfUL, 0x3f283377UL, 0x8610e4eaUL, - 0xe3775852UL, 0x0dd8ed40UL, 0x68bf51f8UL, 0xa1f82bf0UL, 0xc49f9748UL, - 0x2a30225aUL, 0x4f579ee2UL, 0xf66f497fUL, 0x9308f5c7UL, 0x7da740d5UL, - 0x18c0fc6dUL, 0x4ed09f35UL, 0x2bb7238dUL, 0xc518969fUL, 0xa07f2a27UL, - 0x1947fdbaUL, 0x7c204102UL, 0x928ff410UL, 0xf7e848a8UL, 0x3d58149bUL, - 0x583fa823UL, 0xb6901d31UL, 0xd3f7a189UL, 0x6acf7614UL, 0x0fa8caacUL, - 0xe1077fbeUL, 0x8460c306UL, 0xd270a05eUL, 0xb7171ce6UL, 0x59b8a9f4UL, - 0x3cdf154cUL, 0x85e7c2d1UL, 0xe0807e69UL, 0x0e2fcb7bUL, 0x6b4877c3UL, - 0xa20f0dcbUL, 0xc768b173UL, 0x29c70461UL, 0x4ca0b8d9UL, 0xf5986f44UL, - 0x90ffd3fcUL, 0x7e5066eeUL, 0x1b37da56UL, 0x4d27b90eUL, 0x284005b6UL, - 0xc6efb0a4UL, 0xa3880c1cUL, 0x1ab0db81UL, 0x7fd76739UL, 0x9178d22bUL, - 0xf41f6e93UL, 0x03f7263bUL, 0x66909a83UL, 0x883f2f91UL, 0xed589329UL, - 0x546044b4UL, 0x3107f80cUL, 0xdfa84d1eUL, 0xbacff1a6UL, 0xecdf92feUL, - 0x89b82e46UL, 0x67179b54UL, 0x027027ecUL, 0xbb48f071UL, 0xde2f4cc9UL, - 0x3080f9dbUL, 0x55e74563UL, 0x9ca03f6bUL, 0xf9c783d3UL, 0x176836c1UL, - 0x720f8a79UL, 0xcb375de4UL, 0xae50e15cUL, 0x40ff544eUL, 0x2598e8f6UL, - 0x73888baeUL, 0x16ef3716UL, 0xf8408204UL, 0x9d273ebcUL, 0x241fe921UL, - 0x41785599UL, 0xafd7e08bUL, 0xcab05c33UL, 0x3bb659edUL, 0x5ed1e555UL, - 0xb07e5047UL, 0xd519ecffUL, 0x6c213b62UL, 0x094687daUL, 0xe7e932c8UL, - 0x828e8e70UL, 0xd49eed28UL, 0xb1f95190UL, 0x5f56e482UL, 0x3a31583aUL, - 0x83098fa7UL, 0xe66e331fUL, 0x08c1860dUL, 0x6da63ab5UL, 0xa4e140bdUL, - 0xc186fc05UL, 0x2f294917UL, 0x4a4ef5afUL, 0xf3762232UL, 0x96119e8aUL, - 0x78be2b98UL, 0x1dd99720UL, 0x4bc9f478UL, 0x2eae48c0UL, 0xc001fdd2UL, - 0xa566416aUL, 0x1c5e96f7UL, 0x79392a4fUL, 0x97969f5dUL, 0xf2f123e5UL, - 0x05196b4dUL, 0x607ed7f5UL, 0x8ed162e7UL, 0xebb6de5fUL, 0x528e09c2UL, - 0x37e9b57aUL, 0xd9460068UL, 0xbc21bcd0UL, 0xea31df88UL, 0x8f566330UL, - 0x61f9d622UL, 0x049e6a9aUL, 0xbda6bd07UL, 0xd8c101bfUL, 0x366eb4adUL, - 0x53090815UL, 0x9a4e721dUL, 0xff29cea5UL, 0x11867bb7UL, 0x74e1c70fUL, - 0xcdd91092UL, 0xa8beac2aUL, 0x46111938UL, 0x2376a580UL, 0x7566c6d8UL, - 0x10017a60UL, 0xfeaecf72UL, 0x9bc973caUL, 0x22f1a457UL, 0x479618efUL, - 0xa939adfdUL, 0xcc5e1145UL, 0x06ee4d76UL, 0x6389f1ceUL, 0x8d2644dcUL, - 0xe841f864UL, 0x51792ff9UL, 0x341e9341UL, 0xdab12653UL, 0xbfd69aebUL, - 0xe9c6f9b3UL, 0x8ca1450bUL, 0x620ef019UL, 0x07694ca1UL, 0xbe519b3cUL, - 0xdb362784UL, 0x35999296UL, 0x50fe2e2eUL, 0x99b95426UL, 0xfcdee89eUL, - 0x12715d8cUL, 0x7716e134UL, 0xce2e36a9UL, 0xab498a11UL, 0x45e63f03UL, - 0x208183bbUL, 0x7691e0e3UL, 0x13f65c5bUL, 0xfd59e949UL, 0x983e55f1UL, - 0x2106826cUL, 0x44613ed4UL, 0xaace8bc6UL, 0xcfa9377eUL, 0x38417fd6UL, - 0x5d26c36eUL, 0xb389767cUL, 0xd6eecac4UL, 0x6fd61d59UL, 0x0ab1a1e1UL, - 0xe41e14f3UL, 0x8179a84bUL, 0xd769cb13UL, 0xb20e77abUL, 0x5ca1c2b9UL, - 0x39c67e01UL, 0x80fea99cUL, 0xe5991524UL, 0x0b36a036UL, 0x6e511c8eUL, - 0xa7166686UL, 0xc271da3eUL, 0x2cde6f2cUL, 0x49b9d394UL, 0xf0810409UL, - 0x95e6b8b1UL, 0x7b490da3UL, 0x1e2eb11bUL, 0x483ed243UL, 0x2d596efbUL, - 0xc3f6dbe9UL, 0xa6916751UL, 0x1fa9b0ccUL, 0x7ace0c74UL, 0x9461b966UL, - 0xf10605deUL -#endif - } -}; diff --git a/platform/win32/msvc/external/zlib/deflate.c b/platform/win32/msvc/external/zlib/deflate.c deleted file mode 100644 index 696957705b7..00000000000 --- a/platform/win32/msvc/external/zlib/deflate.c +++ /dev/null @@ -1,1967 +0,0 @@ -/* deflate.c -- compress data using the deflation algorithm - * Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* - * ALGORITHM - * - * The "deflation" process depends on being able to identify portions - * of the input text which are identical to earlier input (within a - * sliding window trailing behind the input currently being processed). - * - * The most straightforward technique turns out to be the fastest for - * most input files: try all possible matches and select the longest. - * The key feature of this algorithm is that insertions into the string - * dictionary are very simple and thus fast, and deletions are avoided - * completely. Insertions are performed at each input character, whereas - * string matches are performed only when the previous match ends. So it - * is preferable to spend more time in matches to allow very fast string - * insertions and avoid deletions. The matching algorithm for small - * strings is inspired from that of Rabin & Karp. A brute force approach - * is used to find longer strings when a small match has been found. - * A similar algorithm is used in comic (by Jan-Mark Wams) and freeze - * (by Leonid Broukhis). - * A previous version of this file used a more sophisticated algorithm - * (by Fiala and Greene) which is guaranteed to run in linear amortized - * time, but has a larger average cost, uses more memory and is patented. - * However the F&G algorithm may be faster for some highly redundant - * files if the parameter max_chain_length (described below) is too large. - * - * ACKNOWLEDGEMENTS - * - * The idea of lazy evaluation of matches is due to Jan-Mark Wams, and - * I found it in 'freeze' written by Leonid Broukhis. - * Thanks to many people for bug reports and testing. - * - * REFERENCES - * - * Deutsch, L.P.,"DEFLATE Compressed Data Format Specification". - * Available in http://tools.ietf.org/html/rfc1951 - * - * A description of the Rabin and Karp algorithm is given in the book - * "Algorithms" by R. Sedgewick, Addison-Wesley, p252. - * - * Fiala,E.R., and Greene,D.H. - * Data Compression with Finite Windows, Comm.ACM, 32,4 (1989) 490-595 - * - */ - -/* @(#) $Id$ */ - -#include "deflate.h" - -const char deflate_copyright[] = - " deflate 1.2.8 Copyright 1995-2013 Jean-loup Gailly and Mark Adler "; -/* - If you use the zlib library in a product, an acknowledgment is welcome - in the documentation of your product. If for some reason you cannot - include such an acknowledgment, I would appreciate that you keep this - copyright string in the executable of your product. - */ - -/* =========================================================================== - * Function prototypes. - */ -typedef enum { - need_more, /* block not completed, need more input or more output */ - block_done, /* block flush performed */ - finish_started, /* finish started, need only more output at next deflate */ - finish_done /* finish done, accept no more input or output */ -} block_state; - -typedef block_state (*compress_func) OF((deflate_state *s, int flush)); -/* Compression function. Returns the block state after the call. */ - -local void fill_window OF((deflate_state *s)); -local block_state deflate_stored OF((deflate_state *s, int flush)); -local block_state deflate_fast OF((deflate_state *s, int flush)); -#ifndef FASTEST -local block_state deflate_slow OF((deflate_state *s, int flush)); -#endif -local block_state deflate_rle OF((deflate_state *s, int flush)); -local block_state deflate_huff OF((deflate_state *s, int flush)); -local void lm_init OF((deflate_state *s)); -local void putShortMSB OF((deflate_state *s, uInt b)); -local void flush_pending OF((z_streamp strm)); -local int read_buf OF((z_streamp strm, Bytef *buf, unsigned size)); -#ifdef ASMV - void match_init OF((void)); /* asm code initialization */ - uInt longest_match OF((deflate_state *s, IPos cur_match)); -#else -local uInt longest_match OF((deflate_state *s, IPos cur_match)); -#endif - -#ifdef DEBUG -local void check_match OF((deflate_state *s, IPos start, IPos match, - int length)); -#endif - -/* =========================================================================== - * Local data - */ - -#define NIL 0 -/* Tail of hash chains */ - -#ifndef TOO_FAR -# define TOO_FAR 4096 -#endif -/* Matches of length 3 are discarded if their distance exceeds TOO_FAR */ - -/* Values for max_lazy_match, good_match and max_chain_length, depending on - * the desired pack level (0..9). The values given below have been tuned to - * exclude worst case performance for pathological files. Better values may be - * found for specific files. - */ -typedef struct config_s { - ush good_length; /* reduce lazy search above this match length */ - ush max_lazy; /* do not perform lazy search above this match length */ - ush nice_length; /* quit search above this match length */ - ush max_chain; - compress_func func; -} config; - -#ifdef FASTEST -local const config configuration_table[2] = { -/* good lazy nice chain */ -/* 0 */ {0, 0, 0, 0, deflate_stored}, /* store only */ -/* 1 */ {4, 4, 8, 4, deflate_fast}}; /* max speed, no lazy matches */ -#else -local const config configuration_table[10] = { -/* good lazy nice chain */ -/* 0 */ {0, 0, 0, 0, deflate_stored}, /* store only */ -/* 1 */ {4, 4, 8, 4, deflate_fast}, /* max speed, no lazy matches */ -/* 2 */ {4, 5, 16, 8, deflate_fast}, -/* 3 */ {4, 6, 32, 32, deflate_fast}, - -/* 4 */ {4, 4, 16, 16, deflate_slow}, /* lazy matches */ -/* 5 */ {8, 16, 32, 32, deflate_slow}, -/* 6 */ {8, 16, 128, 128, deflate_slow}, -/* 7 */ {8, 32, 128, 256, deflate_slow}, -/* 8 */ {32, 128, 258, 1024, deflate_slow}, -/* 9 */ {32, 258, 258, 4096, deflate_slow}}; /* max compression */ -#endif - -/* Note: the deflate() code requires max_lazy >= MIN_MATCH and max_chain >= 4 - * For deflate_fast() (levels <= 3) good is ignored and lazy has a different - * meaning. - */ - -#define EQUAL 0 -/* result of memcmp for equal strings */ - -#ifndef NO_DUMMY_DECL -struct static_tree_desc_s {int dummy;}; /* for buggy compilers */ -#endif - -/* rank Z_BLOCK between Z_NO_FLUSH and Z_PARTIAL_FLUSH */ -#define RANK(f) (((f) << 1) - ((f) > 4 ? 9 : 0)) - -/* =========================================================================== - * Update a hash value with the given input byte - * IN assertion: all calls to to UPDATE_HASH are made with consecutive - * input characters, so that a running hash key can be computed from the - * previous key instead of complete recalculation each time. - */ -#define UPDATE_HASH(s,h,c) (h = (((h)<<s->hash_shift) ^ (c)) & s->hash_mask) - - -/* =========================================================================== - * Insert string str in the dictionary and set match_head to the previous head - * of the hash chain (the most recent string with same hash key). Return - * the previous length of the hash chain. - * If this file is compiled with -DFASTEST, the compression level is forced - * to 1, and no hash chains are maintained. - * IN assertion: all calls to to INSERT_STRING are made with consecutive - * input characters and the first MIN_MATCH bytes of str are valid - * (except for the last MIN_MATCH-1 bytes of the input file). - */ -#ifdef FASTEST -#define INSERT_STRING(s, str, match_head) \ - (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \ - match_head = s->head[s->ins_h], \ - s->head[s->ins_h] = (Pos)(str)) -#else -#define INSERT_STRING(s, str, match_head) \ - (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \ - match_head = s->prev[(str) & s->w_mask] = s->head[s->ins_h], \ - s->head[s->ins_h] = (Pos)(str)) -#endif - -/* =========================================================================== - * Initialize the hash table (avoiding 64K overflow for 16 bit systems). - * prev[] will be initialized on the fly. - */ -#define CLEAR_HASH(s) \ - s->head[s->hash_size-1] = NIL; \ - zmemzero((Bytef *)s->head, (unsigned)(s->hash_size-1)*sizeof(*s->head)); - -/* ========================================================================= */ -int ZEXPORT deflateInit_(strm, level, version, stream_size) - z_streamp strm; - int level; - const char *version; - int stream_size; -{ - return deflateInit2_(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, - Z_DEFAULT_STRATEGY, version, stream_size); - /* To do: ignore strm->next_in if we use it as window */ -} - -/* ========================================================================= */ -int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, - version, stream_size) - z_streamp strm; - int level; - int method; - int windowBits; - int memLevel; - int strategy; - const char *version; - int stream_size; -{ - deflate_state *s; - int wrap = 1; - static const char my_version[] = ZLIB_VERSION; - - ushf *overlay; - /* We overlay pending_buf and d_buf+l_buf. This works since the average - * output size for (length,distance) codes is <= 24 bits. - */ - - if (version == Z_NULL || version[0] != my_version[0] || - stream_size != sizeof(z_stream)) { - return Z_VERSION_ERROR; - } - if (strm == Z_NULL) return Z_STREAM_ERROR; - - strm->msg = Z_NULL; - if (strm->zalloc == (alloc_func)0) { -#ifdef Z_SOLO - return Z_STREAM_ERROR; -#else - strm->zalloc = zcalloc; - strm->opaque = (voidpf)0; -#endif - } - if (strm->zfree == (free_func)0) -#ifdef Z_SOLO - return Z_STREAM_ERROR; -#else - strm->zfree = zcfree; -#endif - -#ifdef FASTEST - if (level != 0) level = 1; -#else - if (level == Z_DEFAULT_COMPRESSION) level = 6; -#endif - - if (windowBits < 0) { /* suppress zlib wrapper */ - wrap = 0; - windowBits = -windowBits; - } -#ifdef GZIP - else if (windowBits > 15) { - wrap = 2; /* write gzip wrapper instead */ - windowBits -= 16; - } -#endif - if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method != Z_DEFLATED || - windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || - strategy < 0 || strategy > Z_FIXED) { - return Z_STREAM_ERROR; - } - if (windowBits == 8) windowBits = 9; /* until 256-byte window bug fixed */ - s = (deflate_state *) ZALLOC(strm, 1, sizeof(deflate_state)); - if (s == Z_NULL) return Z_MEM_ERROR; - strm->state = (struct internal_state FAR *)s; - s->strm = strm; - - s->wrap = wrap; - s->gzhead = Z_NULL; - s->w_bits = windowBits; - s->w_size = 1 << s->w_bits; - s->w_mask = s->w_size - 1; - - s->hash_bits = memLevel + 7; - s->hash_size = 1 << s->hash_bits; - s->hash_mask = s->hash_size - 1; - s->hash_shift = ((s->hash_bits+MIN_MATCH-1)/MIN_MATCH); - - s->window = (Bytef *) ZALLOC(strm, s->w_size, 2*sizeof(Byte)); - s->prev = (Posf *) ZALLOC(strm, s->w_size, sizeof(Pos)); - s->head = (Posf *) ZALLOC(strm, s->hash_size, sizeof(Pos)); - - s->high_water = 0; /* nothing written to s->window yet */ - - s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */ - - overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2); - s->pending_buf = (uchf *) overlay; - s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush)+2L); - - if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL || - s->pending_buf == Z_NULL) { - s->status = FINISH_STATE; - strm->msg = ERR_MSG(Z_MEM_ERROR); - deflateEnd (strm); - return Z_MEM_ERROR; - } - s->d_buf = overlay + s->lit_bufsize/sizeof(ush); - s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize; - - s->level = level; - s->strategy = strategy; - s->method = (Byte)method; - - return deflateReset(strm); -} - -/* ========================================================================= */ -int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength) - z_streamp strm; - const Bytef *dictionary; - uInt dictLength; -{ - deflate_state *s; - uInt str, n; - int wrap; - unsigned avail; - z_const unsigned char *next; - - if (strm == Z_NULL || strm->state == Z_NULL || dictionary == Z_NULL) - return Z_STREAM_ERROR; - s = strm->state; - wrap = s->wrap; - if (wrap == 2 || (wrap == 1 && s->status != INIT_STATE) || s->lookahead) - return Z_STREAM_ERROR; - - /* when using zlib wrappers, compute Adler-32 for provided dictionary */ - if (wrap == 1) - strm->adler = adler32(strm->adler, dictionary, dictLength); - s->wrap = 0; /* avoid computing Adler-32 in read_buf */ - - /* if dictionary would fill window, just replace the history */ - if (dictLength >= s->w_size) { - if (wrap == 0) { /* already empty otherwise */ - CLEAR_HASH(s); - s->strstart = 0; - s->block_start = 0L; - s->insert = 0; - } - dictionary += dictLength - s->w_size; /* use the tail */ - dictLength = s->w_size; - } - - /* insert dictionary into window and hash */ - avail = strm->avail_in; - next = strm->next_in; - strm->avail_in = dictLength; - strm->next_in = (z_const Bytef *)dictionary; - fill_window(s); - while (s->lookahead >= MIN_MATCH) { - str = s->strstart; - n = s->lookahead - (MIN_MATCH-1); - do { - UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); -#ifndef FASTEST - s->prev[str & s->w_mask] = s->head[s->ins_h]; -#endif - s->head[s->ins_h] = (Pos)str; - str++; - } while (--n); - s->strstart = str; - s->lookahead = MIN_MATCH-1; - fill_window(s); - } - s->strstart += s->lookahead; - s->block_start = (long)s->strstart; - s->insert = s->lookahead; - s->lookahead = 0; - s->match_length = s->prev_length = MIN_MATCH-1; - s->match_available = 0; - strm->next_in = next; - strm->avail_in = avail; - s->wrap = wrap; - return Z_OK; -} - -/* ========================================================================= */ -int ZEXPORT deflateResetKeep (strm) - z_streamp strm; -{ - deflate_state *s; - - if (strm == Z_NULL || strm->state == Z_NULL || - strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) { - return Z_STREAM_ERROR; - } - - strm->total_in = strm->total_out = 0; - strm->msg = Z_NULL; /* use zfree if we ever allocate msg dynamically */ - strm->data_type = Z_UNKNOWN; - - s = (deflate_state *)strm->state; - s->pending = 0; - s->pending_out = s->pending_buf; - - if (s->wrap < 0) { - s->wrap = -s->wrap; /* was made negative by deflate(..., Z_FINISH); */ - } - s->status = s->wrap ? INIT_STATE : BUSY_STATE; - strm->adler = -#ifdef GZIP - s->wrap == 2 ? crc32(0L, Z_NULL, 0) : -#endif - adler32(0L, Z_NULL, 0); - s->last_flush = Z_NO_FLUSH; - - _tr_init(s); - - return Z_OK; -} - -/* ========================================================================= */ -int ZEXPORT deflateReset (strm) - z_streamp strm; -{ - int ret; - - ret = deflateResetKeep(strm); - if (ret == Z_OK) - lm_init(strm->state); - return ret; -} - -/* ========================================================================= */ -int ZEXPORT deflateSetHeader (strm, head) - z_streamp strm; - gz_headerp head; -{ - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - if (strm->state->wrap != 2) return Z_STREAM_ERROR; - strm->state->gzhead = head; - return Z_OK; -} - -/* ========================================================================= */ -int ZEXPORT deflatePending (strm, pending, bits) - unsigned *pending; - int *bits; - z_streamp strm; -{ - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - if (pending != Z_NULL) - *pending = strm->state->pending; - if (bits != Z_NULL) - *bits = strm->state->bi_valid; - return Z_OK; -} - -/* ========================================================================= */ -int ZEXPORT deflatePrime (strm, bits, value) - z_streamp strm; - int bits; - int value; -{ - deflate_state *s; - int put; - - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - s = strm->state; - if ((Bytef *)(s->d_buf) < s->pending_out + ((Buf_size + 7) >> 3)) - return Z_BUF_ERROR; - do { - put = Buf_size - s->bi_valid; - if (put > bits) - put = bits; - s->bi_buf |= (ush)((value & ((1 << put) - 1)) << s->bi_valid); - s->bi_valid += put; - _tr_flush_bits(s); - value >>= put; - bits -= put; - } while (bits); - return Z_OK; -} - -/* ========================================================================= */ -int ZEXPORT deflateParams(strm, level, strategy) - z_streamp strm; - int level; - int strategy; -{ - deflate_state *s; - compress_func func; - int err = Z_OK; - - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - s = strm->state; - -#ifdef FASTEST - if (level != 0) level = 1; -#else - if (level == Z_DEFAULT_COMPRESSION) level = 6; -#endif - if (level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED) { - return Z_STREAM_ERROR; - } - func = configuration_table[s->level].func; - - if ((strategy != s->strategy || func != configuration_table[level].func) && - strm->total_in != 0) { - /* Flush the last buffer: */ - err = deflate(strm, Z_BLOCK); - if (err == Z_BUF_ERROR && s->pending == 0) - err = Z_OK; - } - if (s->level != level) { - s->level = level; - s->max_lazy_match = configuration_table[level].max_lazy; - s->good_match = configuration_table[level].good_length; - s->nice_match = configuration_table[level].nice_length; - s->max_chain_length = configuration_table[level].max_chain; - } - s->strategy = strategy; - return err; -} - -/* ========================================================================= */ -int ZEXPORT deflateTune(strm, good_length, max_lazy, nice_length, max_chain) - z_streamp strm; - int good_length; - int max_lazy; - int nice_length; - int max_chain; -{ - deflate_state *s; - - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - s = strm->state; - s->good_match = good_length; - s->max_lazy_match = max_lazy; - s->nice_match = nice_length; - s->max_chain_length = max_chain; - return Z_OK; -} - -/* ========================================================================= - * For the default windowBits of 15 and memLevel of 8, this function returns - * a close to exact, as well as small, upper bound on the compressed size. - * They are coded as constants here for a reason--if the #define's are - * changed, then this function needs to be changed as well. The return - * value for 15 and 8 only works for those exact settings. - * - * For any setting other than those defaults for windowBits and memLevel, - * the value returned is a conservative worst case for the maximum expansion - * resulting from using fixed blocks instead of stored blocks, which deflate - * can emit on compressed data for some combinations of the parameters. - * - * This function could be more sophisticated to provide closer upper bounds for - * every combination of windowBits and memLevel. But even the conservative - * upper bound of about 14% expansion does not seem onerous for output buffer - * allocation. - */ -uLong ZEXPORT deflateBound(strm, sourceLen) - z_streamp strm; - uLong sourceLen; -{ - deflate_state *s; - uLong complen, wraplen; - Bytef *str; - - /* conservative upper bound for compressed data */ - complen = sourceLen + - ((sourceLen + 7) >> 3) + ((sourceLen + 63) >> 6) + 5; - - /* if can't get parameters, return conservative bound plus zlib wrapper */ - if (strm == Z_NULL || strm->state == Z_NULL) - return complen + 6; - - /* compute wrapper length */ - s = strm->state; - switch (s->wrap) { - case 0: /* raw deflate */ - wraplen = 0; - break; - case 1: /* zlib wrapper */ - wraplen = 6 + (s->strstart ? 4 : 0); - break; - case 2: /* gzip wrapper */ - wraplen = 18; - if (s->gzhead != Z_NULL) { /* user-supplied gzip header */ - if (s->gzhead->extra != Z_NULL) - wraplen += 2 + s->gzhead->extra_len; - str = s->gzhead->name; - if (str != Z_NULL) - do { - wraplen++; - } while (*str++); - str = s->gzhead->comment; - if (str != Z_NULL) - do { - wraplen++; - } while (*str++); - if (s->gzhead->hcrc) - wraplen += 2; - } - break; - default: /* for compiler happiness */ - wraplen = 6; - } - - /* if not default parameters, return conservative bound */ - if (s->w_bits != 15 || s->hash_bits != 8 + 7) - return complen + wraplen; - - /* default settings: return tight bound for that case */ - return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + - (sourceLen >> 25) + 13 - 6 + wraplen; -} - -/* ========================================================================= - * Put a short in the pending buffer. The 16-bit value is put in MSB order. - * IN assertion: the stream state is correct and there is enough room in - * pending_buf. - */ -local void putShortMSB (s, b) - deflate_state *s; - uInt b; -{ - put_byte(s, (Byte)(b >> 8)); - put_byte(s, (Byte)(b & 0xff)); -} - -/* ========================================================================= - * Flush as much pending output as possible. All deflate() output goes - * through this function so some applications may wish to modify it - * to avoid allocating a large strm->next_out buffer and copying into it. - * (See also read_buf()). - */ -local void flush_pending(strm) - z_streamp strm; -{ - unsigned len; - deflate_state *s = strm->state; - - _tr_flush_bits(s); - len = s->pending; - if (len > strm->avail_out) len = strm->avail_out; - if (len == 0) return; - - zmemcpy(strm->next_out, s->pending_out, len); - strm->next_out += len; - s->pending_out += len; - strm->total_out += len; - strm->avail_out -= len; - s->pending -= len; - if (s->pending == 0) { - s->pending_out = s->pending_buf; - } -} - -/* ========================================================================= */ -int ZEXPORT deflate (strm, flush) - z_streamp strm; - int flush; -{ - int old_flush; /* value of flush param for previous deflate call */ - deflate_state *s; - - if (strm == Z_NULL || strm->state == Z_NULL || - flush > Z_BLOCK || flush < 0) { - return Z_STREAM_ERROR; - } - s = strm->state; - - if (strm->next_out == Z_NULL || - (strm->next_in == Z_NULL && strm->avail_in != 0) || - (s->status == FINISH_STATE && flush != Z_FINISH)) { - ERR_RETURN(strm, Z_STREAM_ERROR); - } - if (strm->avail_out == 0) ERR_RETURN(strm, Z_BUF_ERROR); - - s->strm = strm; /* just in case */ - old_flush = s->last_flush; - s->last_flush = flush; - - /* Write the header */ - if (s->status == INIT_STATE) { -#ifdef GZIP - if (s->wrap == 2) { - strm->adler = crc32(0L, Z_NULL, 0); - put_byte(s, 31); - put_byte(s, 139); - put_byte(s, 8); - if (s->gzhead == Z_NULL) { - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, s->level == 9 ? 2 : - (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ? - 4 : 0)); - put_byte(s, OS_CODE); - s->status = BUSY_STATE; - } - else { - put_byte(s, (s->gzhead->text ? 1 : 0) + - (s->gzhead->hcrc ? 2 : 0) + - (s->gzhead->extra == Z_NULL ? 0 : 4) + - (s->gzhead->name == Z_NULL ? 0 : 8) + - (s->gzhead->comment == Z_NULL ? 0 : 16) - ); - put_byte(s, (Byte)(s->gzhead->time & 0xff)); - put_byte(s, (Byte)((s->gzhead->time >> 8) & 0xff)); - put_byte(s, (Byte)((s->gzhead->time >> 16) & 0xff)); - put_byte(s, (Byte)((s->gzhead->time >> 24) & 0xff)); - put_byte(s, s->level == 9 ? 2 : - (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ? - 4 : 0)); - put_byte(s, s->gzhead->os & 0xff); - if (s->gzhead->extra != Z_NULL) { - put_byte(s, s->gzhead->extra_len & 0xff); - put_byte(s, (s->gzhead->extra_len >> 8) & 0xff); - } - if (s->gzhead->hcrc) - strm->adler = crc32(strm->adler, s->pending_buf, - s->pending); - s->gzindex = 0; - s->status = EXTRA_STATE; - } - } - else -#endif - { - uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8; - uInt level_flags; - - if (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2) - level_flags = 0; - else if (s->level < 6) - level_flags = 1; - else if (s->level == 6) - level_flags = 2; - else - level_flags = 3; - header |= (level_flags << 6); - if (s->strstart != 0) header |= PRESET_DICT; - header += 31 - (header % 31); - - s->status = BUSY_STATE; - putShortMSB(s, header); - - /* Save the adler32 of the preset dictionary: */ - if (s->strstart != 0) { - putShortMSB(s, (uInt)(strm->adler >> 16)); - putShortMSB(s, (uInt)(strm->adler & 0xffff)); - } - strm->adler = adler32(0L, Z_NULL, 0); - } - } -#ifdef GZIP - if (s->status == EXTRA_STATE) { - if (s->gzhead->extra != Z_NULL) { - uInt beg = s->pending; /* start of bytes to update crc */ - - while (s->gzindex < (s->gzhead->extra_len & 0xffff)) { - if (s->pending == s->pending_buf_size) { - if (s->gzhead->hcrc && s->pending > beg) - strm->adler = crc32(strm->adler, s->pending_buf + beg, - s->pending - beg); - flush_pending(strm); - beg = s->pending; - if (s->pending == s->pending_buf_size) - break; - } - put_byte(s, s->gzhead->extra[s->gzindex]); - s->gzindex++; - } - if (s->gzhead->hcrc && s->pending > beg) - strm->adler = crc32(strm->adler, s->pending_buf + beg, - s->pending - beg); - if (s->gzindex == s->gzhead->extra_len) { - s->gzindex = 0; - s->status = NAME_STATE; - } - } - else - s->status = NAME_STATE; - } - if (s->status == NAME_STATE) { - if (s->gzhead->name != Z_NULL) { - uInt beg = s->pending; /* start of bytes to update crc */ - int val; - - do { - if (s->pending == s->pending_buf_size) { - if (s->gzhead->hcrc && s->pending > beg) - strm->adler = crc32(strm->adler, s->pending_buf + beg, - s->pending - beg); - flush_pending(strm); - beg = s->pending; - if (s->pending == s->pending_buf_size) { - val = 1; - break; - } - } - val = s->gzhead->name[s->gzindex++]; - put_byte(s, val); - } while (val != 0); - if (s->gzhead->hcrc && s->pending > beg) - strm->adler = crc32(strm->adler, s->pending_buf + beg, - s->pending - beg); - if (val == 0) { - s->gzindex = 0; - s->status = COMMENT_STATE; - } - } - else - s->status = COMMENT_STATE; - } - if (s->status == COMMENT_STATE) { - if (s->gzhead->comment != Z_NULL) { - uInt beg = s->pending; /* start of bytes to update crc */ - int val; - - do { - if (s->pending == s->pending_buf_size) { - if (s->gzhead->hcrc && s->pending > beg) - strm->adler = crc32(strm->adler, s->pending_buf + beg, - s->pending - beg); - flush_pending(strm); - beg = s->pending; - if (s->pending == s->pending_buf_size) { - val = 1; - break; - } - } - val = s->gzhead->comment[s->gzindex++]; - put_byte(s, val); - } while (val != 0); - if (s->gzhead->hcrc && s->pending > beg) - strm->adler = crc32(strm->adler, s->pending_buf + beg, - s->pending - beg); - if (val == 0) - s->status = HCRC_STATE; - } - else - s->status = HCRC_STATE; - } - if (s->status == HCRC_STATE) { - if (s->gzhead->hcrc) { - if (s->pending + 2 > s->pending_buf_size) - flush_pending(strm); - if (s->pending + 2 <= s->pending_buf_size) { - put_byte(s, (Byte)(strm->adler & 0xff)); - put_byte(s, (Byte)((strm->adler >> 8) & 0xff)); - strm->adler = crc32(0L, Z_NULL, 0); - s->status = BUSY_STATE; - } - } - else - s->status = BUSY_STATE; - } -#endif - - /* Flush as much pending output as possible */ - if (s->pending != 0) { - flush_pending(strm); - if (strm->avail_out == 0) { - /* Since avail_out is 0, deflate will be called again with - * more output space, but possibly with both pending and - * avail_in equal to zero. There won't be anything to do, - * but this is not an error situation so make sure we - * return OK instead of BUF_ERROR at next call of deflate: - */ - s->last_flush = -1; - return Z_OK; - } - - /* Make sure there is something to do and avoid duplicate consecutive - * flushes. For repeated and useless calls with Z_FINISH, we keep - * returning Z_STREAM_END instead of Z_BUF_ERROR. - */ - } else if (strm->avail_in == 0 && RANK(flush) <= RANK(old_flush) && - flush != Z_FINISH) { - ERR_RETURN(strm, Z_BUF_ERROR); - } - - /* User must not provide more input after the first FINISH: */ - if (s->status == FINISH_STATE && strm->avail_in != 0) { - ERR_RETURN(strm, Z_BUF_ERROR); - } - - /* Start a new block or continue the current one. - */ - if (strm->avail_in != 0 || s->lookahead != 0 || - (flush != Z_NO_FLUSH && s->status != FINISH_STATE)) { - block_state bstate; - - bstate = s->strategy == Z_HUFFMAN_ONLY ? deflate_huff(s, flush) : - (s->strategy == Z_RLE ? deflate_rle(s, flush) : - (*(configuration_table[s->level].func))(s, flush)); - - if (bstate == finish_started || bstate == finish_done) { - s->status = FINISH_STATE; - } - if (bstate == need_more || bstate == finish_started) { - if (strm->avail_out == 0) { - s->last_flush = -1; /* avoid BUF_ERROR next call, see above */ - } - return Z_OK; - /* If flush != Z_NO_FLUSH && avail_out == 0, the next call - * of deflate should use the same flush parameter to make sure - * that the flush is complete. So we don't have to output an - * empty block here, this will be done at next call. This also - * ensures that for a very small output buffer, we emit at most - * one empty block. - */ - } - if (bstate == block_done) { - if (flush == Z_PARTIAL_FLUSH) { - _tr_align(s); - } else if (flush != Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */ - _tr_stored_block(s, (char*)0, 0L, 0); - /* For a full flush, this empty block will be recognized - * as a special marker by inflate_sync(). - */ - if (flush == Z_FULL_FLUSH) { - CLEAR_HASH(s); /* forget history */ - if (s->lookahead == 0) { - s->strstart = 0; - s->block_start = 0L; - s->insert = 0; - } - } - } - flush_pending(strm); - if (strm->avail_out == 0) { - s->last_flush = -1; /* avoid BUF_ERROR at next call, see above */ - return Z_OK; - } - } - } - Assert(strm->avail_out > 0, "bug2"); - - if (flush != Z_FINISH) return Z_OK; - if (s->wrap <= 0) return Z_STREAM_END; - - /* Write the trailer */ -#ifdef GZIP - if (s->wrap == 2) { - put_byte(s, (Byte)(strm->adler & 0xff)); - put_byte(s, (Byte)((strm->adler >> 8) & 0xff)); - put_byte(s, (Byte)((strm->adler >> 16) & 0xff)); - put_byte(s, (Byte)((strm->adler >> 24) & 0xff)); - put_byte(s, (Byte)(strm->total_in & 0xff)); - put_byte(s, (Byte)((strm->total_in >> 8) & 0xff)); - put_byte(s, (Byte)((strm->total_in >> 16) & 0xff)); - put_byte(s, (Byte)((strm->total_in >> 24) & 0xff)); - } - else -#endif - { - putShortMSB(s, (uInt)(strm->adler >> 16)); - putShortMSB(s, (uInt)(strm->adler & 0xffff)); - } - flush_pending(strm); - /* If avail_out is zero, the application will call deflate again - * to flush the rest. - */ - if (s->wrap > 0) s->wrap = -s->wrap; /* write the trailer only once! */ - return s->pending != 0 ? Z_OK : Z_STREAM_END; -} - -/* ========================================================================= */ -int ZEXPORT deflateEnd (strm) - z_streamp strm; -{ - int status; - - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - - status = strm->state->status; - if (status != INIT_STATE && - status != EXTRA_STATE && - status != NAME_STATE && - status != COMMENT_STATE && - status != HCRC_STATE && - status != BUSY_STATE && - status != FINISH_STATE) { - return Z_STREAM_ERROR; - } - - /* Deallocate in reverse order of allocations: */ - TRY_FREE(strm, strm->state->pending_buf); - TRY_FREE(strm, strm->state->head); - TRY_FREE(strm, strm->state->prev); - TRY_FREE(strm, strm->state->window); - - ZFREE(strm, strm->state); - strm->state = Z_NULL; - - return status == BUSY_STATE ? Z_DATA_ERROR : Z_OK; -} - -/* ========================================================================= - * Copy the source state to the destination state. - * To simplify the source, this is not supported for 16-bit MSDOS (which - * doesn't have enough memory anyway to duplicate compression states). - */ -int ZEXPORT deflateCopy (dest, source) - z_streamp dest; - z_streamp source; -{ -#ifdef MAXSEG_64K - return Z_STREAM_ERROR; -#else - deflate_state *ds; - deflate_state *ss; - ushf *overlay; - - - if (source == Z_NULL || dest == Z_NULL || source->state == Z_NULL) { - return Z_STREAM_ERROR; - } - - ss = source->state; - - zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream)); - - ds = (deflate_state *) ZALLOC(dest, 1, sizeof(deflate_state)); - if (ds == Z_NULL) return Z_MEM_ERROR; - dest->state = (struct internal_state FAR *) ds; - zmemcpy((voidpf)ds, (voidpf)ss, sizeof(deflate_state)); - ds->strm = dest; - - ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte)); - ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos)); - ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos)); - overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2); - ds->pending_buf = (uchf *) overlay; - - if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL || - ds->pending_buf == Z_NULL) { - deflateEnd (dest); - return Z_MEM_ERROR; - } - /* following zmemcpy do not work for 16-bit MSDOS */ - zmemcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte)); - zmemcpy((voidpf)ds->prev, (voidpf)ss->prev, ds->w_size * sizeof(Pos)); - zmemcpy((voidpf)ds->head, (voidpf)ss->head, ds->hash_size * sizeof(Pos)); - zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size); - - ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf); - ds->d_buf = overlay + ds->lit_bufsize/sizeof(ush); - ds->l_buf = ds->pending_buf + (1+sizeof(ush))*ds->lit_bufsize; - - ds->l_desc.dyn_tree = ds->dyn_ltree; - ds->d_desc.dyn_tree = ds->dyn_dtree; - ds->bl_desc.dyn_tree = ds->bl_tree; - - return Z_OK; -#endif /* MAXSEG_64K */ -} - -/* =========================================================================== - * Read a new buffer from the current input stream, update the adler32 - * and total number of bytes read. All deflate() input goes through - * this function so some applications may wish to modify it to avoid - * allocating a large strm->next_in buffer and copying from it. - * (See also flush_pending()). - */ -local int read_buf(strm, buf, size) - z_streamp strm; - Bytef *buf; - unsigned size; -{ - unsigned len = strm->avail_in; - - if (len > size) len = size; - if (len == 0) return 0; - - strm->avail_in -= len; - - zmemcpy(buf, strm->next_in, len); - if (strm->state->wrap == 1) { - strm->adler = adler32(strm->adler, buf, len); - } -#ifdef GZIP - else if (strm->state->wrap == 2) { - strm->adler = crc32(strm->adler, buf, len); - } -#endif - strm->next_in += len; - strm->total_in += len; - - return (int)len; -} - -/* =========================================================================== - * Initialize the "longest match" routines for a new zlib stream - */ -local void lm_init (s) - deflate_state *s; -{ - s->window_size = (ulg)2L*s->w_size; - - CLEAR_HASH(s); - - /* Set the default configuration parameters: - */ - s->max_lazy_match = configuration_table[s->level].max_lazy; - s->good_match = configuration_table[s->level].good_length; - s->nice_match = configuration_table[s->level].nice_length; - s->max_chain_length = configuration_table[s->level].max_chain; - - s->strstart = 0; - s->block_start = 0L; - s->lookahead = 0; - s->insert = 0; - s->match_length = s->prev_length = MIN_MATCH-1; - s->match_available = 0; - s->ins_h = 0; -#ifndef FASTEST -#ifdef ASMV - match_init(); /* initialize the asm code */ -#endif -#endif -} - -#ifndef FASTEST -/* =========================================================================== - * Set match_start to the longest match starting at the given string and - * return its length. Matches shorter or equal to prev_length are discarded, - * in which case the result is equal to prev_length and match_start is - * garbage. - * IN assertions: cur_match is the head of the hash chain for the current - * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 - * OUT assertion: the match length is not greater than s->lookahead. - */ -#ifndef ASMV -/* For 80x86 and 680x0, an optimized version will be provided in match.asm or - * match.S. The code will be functionally equivalent. - */ -local uInt longest_match(s, cur_match) - deflate_state *s; - IPos cur_match; /* current match */ -{ - unsigned chain_length = s->max_chain_length;/* max hash chain length */ - register Bytef *scan = s->window + s->strstart; /* current string */ - register Bytef *match; /* matched string */ - register int len; /* length of current match */ - int best_len = s->prev_length; /* best match length so far */ - int nice_match = s->nice_match; /* stop if match long enough */ - IPos limit = s->strstart > (IPos)MAX_DIST(s) ? - s->strstart - (IPos)MAX_DIST(s) : NIL; - /* Stop when cur_match becomes <= limit. To simplify the code, - * we prevent matches with the string of window index 0. - */ - Posf *prev = s->prev; - uInt wmask = s->w_mask; - -#ifdef UNALIGNED_OK - /* Compare two bytes at a time. Note: this is not always beneficial. - * Try with and without -DUNALIGNED_OK to check. - */ - register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1; - register ush scan_start = *(ushf*)scan; - register ush scan_end = *(ushf*)(scan+best_len-1); -#else - register Bytef *strend = s->window + s->strstart + MAX_MATCH; - register Byte scan_end1 = scan[best_len-1]; - register Byte scan_end = scan[best_len]; -#endif - - /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. - * It is easy to get rid of this optimization if necessary. - */ - Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); - - /* Do not waste too much time if we already have a good match: */ - if (s->prev_length >= s->good_match) { - chain_length >>= 2; - } - /* Do not look for matches beyond the end of the input. This is necessary - * to make deflate deterministic. - */ - if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead; - - Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); - - do { - Assert(cur_match < s->strstart, "no future"); - match = s->window + cur_match; - - /* Skip to next match if the match length cannot increase - * or if the match length is less than 2. Note that the checks below - * for insufficient lookahead only occur occasionally for performance - * reasons. Therefore uninitialized memory will be accessed, and - * conditional jumps will be made that depend on those values. - * However the length of the match is limited to the lookahead, so - * the output of deflate is not affected by the uninitialized values. - */ -#if (defined(UNALIGNED_OK) && MAX_MATCH == 258) - /* This code assumes sizeof(unsigned short) == 2. Do not use - * UNALIGNED_OK if your compiler uses a different size. - */ - if (*(ushf*)(match+best_len-1) != scan_end || - *(ushf*)match != scan_start) continue; - - /* It is not necessary to compare scan[2] and match[2] since they are - * always equal when the other bytes match, given that the hash keys - * are equal and that HASH_BITS >= 8. Compare 2 bytes at a time at - * strstart+3, +5, ... up to strstart+257. We check for insufficient - * lookahead only every 4th comparison; the 128th check will be made - * at strstart+257. If MAX_MATCH-2 is not a multiple of 8, it is - * necessary to put more guard bytes at the end of the window, or - * to check more often for insufficient lookahead. - */ - Assert(scan[2] == match[2], "scan[2]?"); - scan++, match++; - do { - } while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) && - *(ushf*)(scan+=2) == *(ushf*)(match+=2) && - *(ushf*)(scan+=2) == *(ushf*)(match+=2) && - *(ushf*)(scan+=2) == *(ushf*)(match+=2) && - scan < strend); - /* The funny "do {}" generates better code on most compilers */ - - /* Here, scan <= window+strstart+257 */ - Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); - if (*scan == *match) scan++; - - len = (MAX_MATCH - 1) - (int)(strend-scan); - scan = strend - (MAX_MATCH-1); - -#else /* UNALIGNED_OK */ - - if (match[best_len] != scan_end || - match[best_len-1] != scan_end1 || - *match != *scan || - *++match != scan[1]) continue; - - /* The check at best_len-1 can be removed because it will be made - * again later. (This heuristic is not always a win.) - * It is not necessary to compare scan[2] and match[2] since they - * are always equal when the other bytes match, given that - * the hash keys are equal and that HASH_BITS >= 8. - */ - scan += 2, match++; - Assert(*scan == *match, "match[2]?"); - - /* We check for insufficient lookahead only every 8th comparison; - * the 256th check will be made at strstart+258. - */ - do { - } while (*++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - scan < strend); - - Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); - - len = MAX_MATCH - (int)(strend - scan); - scan = strend - MAX_MATCH; - -#endif /* UNALIGNED_OK */ - - if (len > best_len) { - s->match_start = cur_match; - best_len = len; - if (len >= nice_match) break; -#ifdef UNALIGNED_OK - scan_end = *(ushf*)(scan+best_len-1); -#else - scan_end1 = scan[best_len-1]; - scan_end = scan[best_len]; -#endif - } - } while ((cur_match = prev[cur_match & wmask]) > limit - && --chain_length != 0); - - if ((uInt)best_len <= s->lookahead) return (uInt)best_len; - return s->lookahead; -} -#endif /* ASMV */ - -#else /* FASTEST */ - -/* --------------------------------------------------------------------------- - * Optimized version for FASTEST only - */ -local uInt longest_match(s, cur_match) - deflate_state *s; - IPos cur_match; /* current match */ -{ - register Bytef *scan = s->window + s->strstart; /* current string */ - register Bytef *match; /* matched string */ - register int len; /* length of current match */ - register Bytef *strend = s->window + s->strstart + MAX_MATCH; - - /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. - * It is easy to get rid of this optimization if necessary. - */ - Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); - - Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); - - Assert(cur_match < s->strstart, "no future"); - - match = s->window + cur_match; - - /* Return failure if the match length is less than 2: - */ - if (match[0] != scan[0] || match[1] != scan[1]) return MIN_MATCH-1; - - /* The check at best_len-1 can be removed because it will be made - * again later. (This heuristic is not always a win.) - * It is not necessary to compare scan[2] and match[2] since they - * are always equal when the other bytes match, given that - * the hash keys are equal and that HASH_BITS >= 8. - */ - scan += 2, match += 2; - Assert(*scan == *match, "match[2]?"); - - /* We check for insufficient lookahead only every 8th comparison; - * the 256th check will be made at strstart+258. - */ - do { - } while (*++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - scan < strend); - - Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); - - len = MAX_MATCH - (int)(strend - scan); - - if (len < MIN_MATCH) return MIN_MATCH - 1; - - s->match_start = cur_match; - return (uInt)len <= s->lookahead ? (uInt)len : s->lookahead; -} - -#endif /* FASTEST */ - -#ifdef DEBUG -/* =========================================================================== - * Check that the match at match_start is indeed a match. - */ -local void check_match(s, start, match, length) - deflate_state *s; - IPos start, match; - int length; -{ - /* check that the match is indeed a match */ - if (zmemcmp(s->window + match, - s->window + start, length) != EQUAL) { - fprintf(stderr, " start %u, match %u, length %d\n", - start, match, length); - do { - fprintf(stderr, "%c%c", s->window[match++], s->window[start++]); - } while (--length != 0); - z_error("invalid match"); - } - if (z_verbose > 1) { - fprintf(stderr,"\\[%d,%d]", start-match, length); - do { putc(s->window[start++], stderr); } while (--length != 0); - } -} -#else -# define check_match(s, start, match, length) -#endif /* DEBUG */ - -/* =========================================================================== - * Fill the window when the lookahead becomes insufficient. - * Updates strstart and lookahead. - * - * IN assertion: lookahead < MIN_LOOKAHEAD - * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD - * At least one byte has been read, or avail_in == 0; reads are - * performed for at least two bytes (required for the zip translate_eol - * option -- not supported here). - */ -local void fill_window(s) - deflate_state *s; -{ - register unsigned n, m; - register Posf *p; - unsigned more; /* Amount of free space at the end of the window. */ - uInt wsize = s->w_size; - - Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead"); - - do { - more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart); - - /* Deal with !@#$% 64K limit: */ - if (sizeof(int) <= 2) { - if (more == 0 && s->strstart == 0 && s->lookahead == 0) { - more = wsize; - - } else if (more == (unsigned)(-1)) { - /* Very unlikely, but possible on 16 bit machine if - * strstart == 0 && lookahead == 1 (input done a byte at time) - */ - more--; - } - } - - /* If the window is almost full and there is insufficient lookahead, - * move the upper half to the lower one to make room in the upper half. - */ - if (s->strstart >= wsize+MAX_DIST(s)) { - - zmemcpy(s->window, s->window+wsize, (unsigned)wsize); - s->match_start -= wsize; - s->strstart -= wsize; /* we now have strstart >= MAX_DIST */ - s->block_start -= (long) wsize; - - /* Slide the hash table (could be avoided with 32 bit values - at the expense of memory usage). We slide even when level == 0 - to keep the hash table consistent if we switch back to level > 0 - later. (Using level 0 permanently is not an optimal usage of - zlib, so we don't care about this pathological case.) - */ - n = s->hash_size; - p = &s->head[n]; - do { - m = *--p; - *p = (Pos)(m >= wsize ? m-wsize : NIL); - } while (--n); - - n = wsize; -#ifndef FASTEST - p = &s->prev[n]; - do { - m = *--p; - *p = (Pos)(m >= wsize ? m-wsize : NIL); - /* If n is not on any hash chain, prev[n] is garbage but - * its value will never be used. - */ - } while (--n); -#endif - more += wsize; - } - if (s->strm->avail_in == 0) break; - - /* If there was no sliding: - * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 && - * more == window_size - lookahead - strstart - * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1) - * => more >= window_size - 2*WSIZE + 2 - * In the BIG_MEM or MMAP case (not yet supported), - * window_size == input_size + MIN_LOOKAHEAD && - * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD. - * Otherwise, window_size == 2*WSIZE so more >= 2. - * If there was sliding, more >= WSIZE. So in all cases, more >= 2. - */ - Assert(more >= 2, "more < 2"); - - n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more); - s->lookahead += n; - - /* Initialize the hash value now that we have some input: */ - if (s->lookahead + s->insert >= MIN_MATCH) { - uInt str = s->strstart - s->insert; - s->ins_h = s->window[str]; - UPDATE_HASH(s, s->ins_h, s->window[str + 1]); -#if MIN_MATCH != 3 - Call UPDATE_HASH() MIN_MATCH-3 more times -#endif - while (s->insert) { - UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); -#ifndef FASTEST - s->prev[str & s->w_mask] = s->head[s->ins_h]; -#endif - s->head[s->ins_h] = (Pos)str; - str++; - s->insert--; - if (s->lookahead + s->insert < MIN_MATCH) - break; - } - } - /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage, - * but this is not important since only literal bytes will be emitted. - */ - - } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0); - - /* If the WIN_INIT bytes after the end of the current data have never been - * written, then zero those bytes in order to avoid memory check reports of - * the use of uninitialized (or uninitialised as Julian writes) bytes by - * the longest match routines. Update the high water mark for the next - * time through here. WIN_INIT is set to MAX_MATCH since the longest match - * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead. - */ - if (s->high_water < s->window_size) { - ulg curr = s->strstart + (ulg)(s->lookahead); - ulg init; - - if (s->high_water < curr) { - /* Previous high water mark below current data -- zero WIN_INIT - * bytes or up to end of window, whichever is less. - */ - init = s->window_size - curr; - if (init > WIN_INIT) - init = WIN_INIT; - zmemzero(s->window + curr, (unsigned)init); - s->high_water = curr + init; - } - else if (s->high_water < (ulg)curr + WIN_INIT) { - /* High water mark at or above current data, but below current data - * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up - * to end of window, whichever is less. - */ - init = (ulg)curr + WIN_INIT - s->high_water; - if (init > s->window_size - s->high_water) - init = s->window_size - s->high_water; - zmemzero(s->window + s->high_water, (unsigned)init); - s->high_water += init; - } - } - - Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, - "not enough room for search"); -} - -/* =========================================================================== - * Flush the current block, with given end-of-file flag. - * IN assertion: strstart is set to the end of the current match. - */ -#define FLUSH_BLOCK_ONLY(s, last) { \ - _tr_flush_block(s, (s->block_start >= 0L ? \ - (charf *)&s->window[(unsigned)s->block_start] : \ - (charf *)Z_NULL), \ - (ulg)((long)s->strstart - s->block_start), \ - (last)); \ - s->block_start = s->strstart; \ - flush_pending(s->strm); \ - Tracev((stderr,"[FLUSH]")); \ -} - -/* Same but force premature exit if necessary. */ -#define FLUSH_BLOCK(s, last) { \ - FLUSH_BLOCK_ONLY(s, last); \ - if (s->strm->avail_out == 0) return (last) ? finish_started : need_more; \ -} - -/* =========================================================================== - * Copy without compression as much as possible from the input stream, return - * the current block state. - * This function does not insert new strings in the dictionary since - * uncompressible data is probably not useful. This function is used - * only for the level=0 compression option. - * NOTE: this function should be optimized to avoid extra copying from - * window to pending_buf. - */ -local block_state deflate_stored(s, flush) - deflate_state *s; - int flush; -{ - /* Stored blocks are limited to 0xffff bytes, pending_buf is limited - * to pending_buf_size, and each stored block has a 5 byte header: - */ - ulg max_block_size = 0xffff; - ulg max_start; - - if (max_block_size > s->pending_buf_size - 5) { - max_block_size = s->pending_buf_size - 5; - } - - /* Copy as much as possible from input to output: */ - for (;;) { - /* Fill the window as much as possible: */ - if (s->lookahead <= 1) { - - Assert(s->strstart < s->w_size+MAX_DIST(s) || - s->block_start >= (long)s->w_size, "slide too late"); - - fill_window(s); - if (s->lookahead == 0 && flush == Z_NO_FLUSH) return need_more; - - if (s->lookahead == 0) break; /* flush the current block */ - } - Assert(s->block_start >= 0L, "block gone"); - - s->strstart += s->lookahead; - s->lookahead = 0; - - /* Emit a stored block if pending_buf will be full: */ - max_start = s->block_start + max_block_size; - if (s->strstart == 0 || (ulg)s->strstart >= max_start) { - /* strstart == 0 is possible when wraparound on 16-bit machine */ - s->lookahead = (uInt)(s->strstart - max_start); - s->strstart = (uInt)max_start; - FLUSH_BLOCK(s, 0); - } - /* Flush if we may have to slide, otherwise block_start may become - * negative and the data will be gone: - */ - if (s->strstart - (uInt)s->block_start >= MAX_DIST(s)) { - FLUSH_BLOCK(s, 0); - } - } - s->insert = 0; - if (flush == Z_FINISH) { - FLUSH_BLOCK(s, 1); - return finish_done; - } - if ((long)s->strstart > s->block_start) - FLUSH_BLOCK(s, 0); - return block_done; -} - -/* =========================================================================== - * Compress as much as possible from the input stream, return the current - * block state. - * This function does not perform lazy evaluation of matches and inserts - * new strings in the dictionary only for unmatched strings or for short - * matches. It is used only for the fast compression options. - */ -local block_state deflate_fast(s, flush) - deflate_state *s; - int flush; -{ - IPos hash_head; /* head of the hash chain */ - int bflush; /* set if current block must be flushed */ - - for (;;) { - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the next match, plus MIN_MATCH bytes to insert the - * string following the next match. - */ - if (s->lookahead < MIN_LOOKAHEAD) { - fill_window(s); - if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) { - return need_more; - } - if (s->lookahead == 0) break; /* flush the current block */ - } - - /* Insert the string window[strstart .. strstart+2] in the - * dictionary, and set hash_head to the head of the hash chain: - */ - hash_head = NIL; - if (s->lookahead >= MIN_MATCH) { - INSERT_STRING(s, s->strstart, hash_head); - } - - /* Find the longest match, discarding those <= prev_length. - * At this point we have always match_length < MIN_MATCH - */ - if (hash_head != NIL && s->strstart - hash_head <= MAX_DIST(s)) { - /* To simplify the code, we prevent matches with the string - * of window index 0 (in particular we have to avoid a match - * of the string with itself at the start of the input file). - */ - s->match_length = longest_match (s, hash_head); - /* longest_match() sets match_start */ - } - if (s->match_length >= MIN_MATCH) { - check_match(s, s->strstart, s->match_start, s->match_length); - - _tr_tally_dist(s, s->strstart - s->match_start, - s->match_length - MIN_MATCH, bflush); - - s->lookahead -= s->match_length; - - /* Insert new strings in the hash table only if the match length - * is not too large. This saves time but degrades compression. - */ -#ifndef FASTEST - if (s->match_length <= s->max_insert_length && - s->lookahead >= MIN_MATCH) { - s->match_length--; /* string at strstart already in table */ - do { - s->strstart++; - INSERT_STRING(s, s->strstart, hash_head); - /* strstart never exceeds WSIZE-MAX_MATCH, so there are - * always MIN_MATCH bytes ahead. - */ - } while (--s->match_length != 0); - s->strstart++; - } else -#endif - { - s->strstart += s->match_length; - s->match_length = 0; - s->ins_h = s->window[s->strstart]; - UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]); -#if MIN_MATCH != 3 - Call UPDATE_HASH() MIN_MATCH-3 more times -#endif - /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not - * matter since it will be recomputed at next deflate call. - */ - } - } else { - /* No match, output a literal byte */ - Tracevv((stderr,"%c", s->window[s->strstart])); - _tr_tally_lit (s, s->window[s->strstart], bflush); - s->lookahead--; - s->strstart++; - } - if (bflush) FLUSH_BLOCK(s, 0); - } - s->insert = s->strstart < MIN_MATCH-1 ? s->strstart : MIN_MATCH-1; - if (flush == Z_FINISH) { - FLUSH_BLOCK(s, 1); - return finish_done; - } - if (s->last_lit) - FLUSH_BLOCK(s, 0); - return block_done; -} - -#ifndef FASTEST -/* =========================================================================== - * Same as above, but achieves better compression. We use a lazy - * evaluation for matches: a match is finally adopted only if there is - * no better match at the next window position. - */ -local block_state deflate_slow(s, flush) - deflate_state *s; - int flush; -{ - IPos hash_head; /* head of hash chain */ - int bflush; /* set if current block must be flushed */ - - /* Process the input block. */ - for (;;) { - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the next match, plus MIN_MATCH bytes to insert the - * string following the next match. - */ - if (s->lookahead < MIN_LOOKAHEAD) { - fill_window(s); - if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) { - return need_more; - } - if (s->lookahead == 0) break; /* flush the current block */ - } - - /* Insert the string window[strstart .. strstart+2] in the - * dictionary, and set hash_head to the head of the hash chain: - */ - hash_head = NIL; - if (s->lookahead >= MIN_MATCH) { - INSERT_STRING(s, s->strstart, hash_head); - } - - /* Find the longest match, discarding those <= prev_length. - */ - s->prev_length = s->match_length, s->prev_match = s->match_start; - s->match_length = MIN_MATCH-1; - - if (hash_head != NIL && s->prev_length < s->max_lazy_match && - s->strstart - hash_head <= MAX_DIST(s)) { - /* To simplify the code, we prevent matches with the string - * of window index 0 (in particular we have to avoid a match - * of the string with itself at the start of the input file). - */ - s->match_length = longest_match (s, hash_head); - /* longest_match() sets match_start */ - - if (s->match_length <= 5 && (s->strategy == Z_FILTERED -#if TOO_FAR <= 32767 - || (s->match_length == MIN_MATCH && - s->strstart - s->match_start > TOO_FAR) -#endif - )) { - - /* If prev_match is also MIN_MATCH, match_start is garbage - * but we will ignore the current match anyway. - */ - s->match_length = MIN_MATCH-1; - } - } - /* If there was a match at the previous step and the current - * match is not better, output the previous match: - */ - if (s->prev_length >= MIN_MATCH && s->match_length <= s->prev_length) { - uInt max_insert = s->strstart + s->lookahead - MIN_MATCH; - /* Do not insert strings in hash table beyond this. */ - - check_match(s, s->strstart-1, s->prev_match, s->prev_length); - - _tr_tally_dist(s, s->strstart -1 - s->prev_match, - s->prev_length - MIN_MATCH, bflush); - - /* Insert in hash table all strings up to the end of the match. - * strstart-1 and strstart are already inserted. If there is not - * enough lookahead, the last two strings are not inserted in - * the hash table. - */ - s->lookahead -= s->prev_length-1; - s->prev_length -= 2; - do { - if (++s->strstart <= max_insert) { - INSERT_STRING(s, s->strstart, hash_head); - } - } while (--s->prev_length != 0); - s->match_available = 0; - s->match_length = MIN_MATCH-1; - s->strstart++; - - if (bflush) FLUSH_BLOCK(s, 0); - - } else if (s->match_available) { - /* If there was no match at the previous position, output a - * single literal. If there was a match but the current match - * is longer, truncate the previous match to a single literal. - */ - Tracevv((stderr,"%c", s->window[s->strstart-1])); - _tr_tally_lit(s, s->window[s->strstart-1], bflush); - if (bflush) { - FLUSH_BLOCK_ONLY(s, 0); - } - s->strstart++; - s->lookahead--; - if (s->strm->avail_out == 0) return need_more; - } else { - /* There is no previous match to compare with, wait for - * the next step to decide. - */ - s->match_available = 1; - s->strstart++; - s->lookahead--; - } - } - Assert (flush != Z_NO_FLUSH, "no flush?"); - if (s->match_available) { - Tracevv((stderr,"%c", s->window[s->strstart-1])); - _tr_tally_lit(s, s->window[s->strstart-1], bflush); - s->match_available = 0; - } - s->insert = s->strstart < MIN_MATCH-1 ? s->strstart : MIN_MATCH-1; - if (flush == Z_FINISH) { - FLUSH_BLOCK(s, 1); - return finish_done; - } - if (s->last_lit) - FLUSH_BLOCK(s, 0); - return block_done; -} -#endif /* FASTEST */ - -/* =========================================================================== - * For Z_RLE, simply look for runs of bytes, generate matches only of distance - * one. Do not maintain a hash table. (It will be regenerated if this run of - * deflate switches away from Z_RLE.) - */ -local block_state deflate_rle(s, flush) - deflate_state *s; - int flush; -{ - int bflush; /* set if current block must be flushed */ - uInt prev; /* byte at distance one to match */ - Bytef *scan, *strend; /* scan goes up to strend for length of run */ - - for (;;) { - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the longest run, plus one for the unrolled loop. - */ - if (s->lookahead <= MAX_MATCH) { - fill_window(s); - if (s->lookahead <= MAX_MATCH && flush == Z_NO_FLUSH) { - return need_more; - } - if (s->lookahead == 0) break; /* flush the current block */ - } - - /* See how many times the previous byte repeats */ - s->match_length = 0; - if (s->lookahead >= MIN_MATCH && s->strstart > 0) { - scan = s->window + s->strstart - 1; - prev = *scan; - if (prev == *++scan && prev == *++scan && prev == *++scan) { - strend = s->window + s->strstart + MAX_MATCH; - do { - } while (prev == *++scan && prev == *++scan && - prev == *++scan && prev == *++scan && - prev == *++scan && prev == *++scan && - prev == *++scan && prev == *++scan && - scan < strend); - s->match_length = MAX_MATCH - (int)(strend - scan); - if (s->match_length > s->lookahead) - s->match_length = s->lookahead; - } - Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan"); - } - - /* Emit match if have run of MIN_MATCH or longer, else emit literal */ - if (s->match_length >= MIN_MATCH) { - check_match(s, s->strstart, s->strstart - 1, s->match_length); - - _tr_tally_dist(s, 1, s->match_length - MIN_MATCH, bflush); - - s->lookahead -= s->match_length; - s->strstart += s->match_length; - s->match_length = 0; - } else { - /* No match, output a literal byte */ - Tracevv((stderr,"%c", s->window[s->strstart])); - _tr_tally_lit (s, s->window[s->strstart], bflush); - s->lookahead--; - s->strstart++; - } - if (bflush) FLUSH_BLOCK(s, 0); - } - s->insert = 0; - if (flush == Z_FINISH) { - FLUSH_BLOCK(s, 1); - return finish_done; - } - if (s->last_lit) - FLUSH_BLOCK(s, 0); - return block_done; -} - -/* =========================================================================== - * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table. - * (It will be regenerated if this run of deflate switches away from Huffman.) - */ -local block_state deflate_huff(s, flush) - deflate_state *s; - int flush; -{ - int bflush; /* set if current block must be flushed */ - - for (;;) { - /* Make sure that we have a literal to write. */ - if (s->lookahead == 0) { - fill_window(s); - if (s->lookahead == 0) { - if (flush == Z_NO_FLUSH) - return need_more; - break; /* flush the current block */ - } - } - - /* Output a literal byte */ - s->match_length = 0; - Tracevv((stderr,"%c", s->window[s->strstart])); - _tr_tally_lit (s, s->window[s->strstart], bflush); - s->lookahead--; - s->strstart++; - if (bflush) FLUSH_BLOCK(s, 0); - } - s->insert = 0; - if (flush == Z_FINISH) { - FLUSH_BLOCK(s, 1); - return finish_done; - } - if (s->last_lit) - FLUSH_BLOCK(s, 0); - return block_done; -} diff --git a/platform/win32/msvc/external/zlib/deflate.h b/platform/win32/msvc/external/zlib/deflate.h deleted file mode 100644 index ce0299edd19..00000000000 --- a/platform/win32/msvc/external/zlib/deflate.h +++ /dev/null @@ -1,346 +0,0 @@ -/* deflate.h -- internal compression state - * Copyright (C) 1995-2012 Jean-loup Gailly - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -/* @(#) $Id$ */ - -#ifndef DEFLATE_H -#define DEFLATE_H - -#include "zutil.h" - -/* define NO_GZIP when compiling if you want to disable gzip header and - trailer creation by deflate(). NO_GZIP would be used to avoid linking in - the crc code when it is not needed. For shared libraries, gzip encoding - should be left enabled. */ -#ifndef NO_GZIP -# define GZIP -#endif - -/* =========================================================================== - * Internal compression state. - */ - -#define LENGTH_CODES 29 -/* number of length codes, not counting the special END_BLOCK code */ - -#define LITERALS 256 -/* number of literal bytes 0..255 */ - -#define L_CODES (LITERALS+1+LENGTH_CODES) -/* number of Literal or Length codes, including the END_BLOCK code */ - -#define D_CODES 30 -/* number of distance codes */ - -#define BL_CODES 19 -/* number of codes used to transfer the bit lengths */ - -#define HEAP_SIZE (2*L_CODES+1) -/* maximum heap size */ - -#define MAX_BITS 15 -/* All codes must not exceed MAX_BITS bits */ - -#define Buf_size 16 -/* size of bit buffer in bi_buf */ - -#define INIT_STATE 42 -#define EXTRA_STATE 69 -#define NAME_STATE 73 -#define COMMENT_STATE 91 -#define HCRC_STATE 103 -#define BUSY_STATE 113 -#define FINISH_STATE 666 -/* Stream status */ - - -/* Data structure describing a single value and its code string. */ -typedef struct ct_data_s { - union { - ush freq; /* frequency count */ - ush code; /* bit string */ - } fc; - union { - ush dad; /* father node in Huffman tree */ - ush len; /* length of bit string */ - } dl; -} FAR ct_data; - -#define Freq fc.freq -#define Code fc.code -#define Dad dl.dad -#define Len dl.len - -typedef struct static_tree_desc_s static_tree_desc; - -typedef struct tree_desc_s { - ct_data *dyn_tree; /* the dynamic tree */ - int max_code; /* largest code with non zero frequency */ - static_tree_desc *stat_desc; /* the corresponding static tree */ -} FAR tree_desc; - -typedef ush Pos; -typedef Pos FAR Posf; -typedef unsigned IPos; - -/* A Pos is an index in the character window. We use short instead of int to - * save space in the various tables. IPos is used only for parameter passing. - */ - -typedef struct internal_state { - z_streamp strm; /* pointer back to this zlib stream */ - int status; /* as the name implies */ - Bytef *pending_buf; /* output still pending */ - ulg pending_buf_size; /* size of pending_buf */ - Bytef *pending_out; /* next pending byte to output to the stream */ - uInt pending; /* nb of bytes in the pending buffer */ - int wrap; /* bit 0 true for zlib, bit 1 true for gzip */ - gz_headerp gzhead; /* gzip header information to write */ - uInt gzindex; /* where in extra, name, or comment */ - Byte method; /* can only be DEFLATED */ - int last_flush; /* value of flush param for previous deflate call */ - - /* used by deflate.c: */ - - uInt w_size; /* LZ77 window size (32K by default) */ - uInt w_bits; /* log2(w_size) (8..16) */ - uInt w_mask; /* w_size - 1 */ - - Bytef *window; - /* Sliding window. Input bytes are read into the second half of the window, - * and move to the first half later to keep a dictionary of at least wSize - * bytes. With this organization, matches are limited to a distance of - * wSize-MAX_MATCH bytes, but this ensures that IO is always - * performed with a length multiple of the block size. Also, it limits - * the window size to 64K, which is quite useful on MSDOS. - * To do: use the user input buffer as sliding window. - */ - - ulg window_size; - /* Actual size of window: 2*wSize, except when the user input buffer - * is directly used as sliding window. - */ - - Posf *prev; - /* Link to older string with same hash index. To limit the size of this - * array to 64K, this link is maintained only for the last 32K strings. - * An index in this array is thus a window index modulo 32K. - */ - - Posf *head; /* Heads of the hash chains or NIL. */ - - uInt ins_h; /* hash index of string to be inserted */ - uInt hash_size; /* number of elements in hash table */ - uInt hash_bits; /* log2(hash_size) */ - uInt hash_mask; /* hash_size-1 */ - - uInt hash_shift; - /* Number of bits by which ins_h must be shifted at each input - * step. It must be such that after MIN_MATCH steps, the oldest - * byte no longer takes part in the hash key, that is: - * hash_shift * MIN_MATCH >= hash_bits - */ - - long block_start; - /* Window position at the beginning of the current output block. Gets - * negative when the window is moved backwards. - */ - - uInt match_length; /* length of best match */ - IPos prev_match; /* previous match */ - int match_available; /* set if previous match exists */ - uInt strstart; /* start of string to insert */ - uInt match_start; /* start of matching string */ - uInt lookahead; /* number of valid bytes ahead in window */ - - uInt prev_length; - /* Length of the best match at previous step. Matches not greater than this - * are discarded. This is used in the lazy match evaluation. - */ - - uInt max_chain_length; - /* To speed up deflation, hash chains are never searched beyond this - * length. A higher limit improves compression ratio but degrades the - * speed. - */ - - uInt max_lazy_match; - /* Attempt to find a better match only when the current match is strictly - * smaller than this value. This mechanism is used only for compression - * levels >= 4. - */ -# define max_insert_length max_lazy_match - /* Insert new strings in the hash table only if the match length is not - * greater than this length. This saves time but degrades compression. - * max_insert_length is used only for compression levels <= 3. - */ - - int level; /* compression level (1..9) */ - int strategy; /* favor or force Huffman coding*/ - - uInt good_match; - /* Use a faster search when the previous match is longer than this */ - - int nice_match; /* Stop searching when current match exceeds this */ - - /* used by trees.c: */ - /* Didn't use ct_data typedef below to suppress compiler warning */ - struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */ - struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */ - struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */ - - struct tree_desc_s l_desc; /* desc. for literal tree */ - struct tree_desc_s d_desc; /* desc. for distance tree */ - struct tree_desc_s bl_desc; /* desc. for bit length tree */ - - ush bl_count[MAX_BITS+1]; - /* number of codes at each bit length for an optimal tree */ - - int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */ - int heap_len; /* number of elements in the heap */ - int heap_max; /* element of largest frequency */ - /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used. - * The same heap array is used to build all trees. - */ - - uch depth[2*L_CODES+1]; - /* Depth of each subtree used as tie breaker for trees of equal frequency - */ - - uchf *l_buf; /* buffer for literals or lengths */ - - uInt lit_bufsize; - /* Size of match buffer for literals/lengths. There are 4 reasons for - * limiting lit_bufsize to 64K: - * - frequencies can be kept in 16 bit counters - * - if compression is not successful for the first block, all input - * data is still in the window so we can still emit a stored block even - * when input comes from standard input. (This can also be done for - * all blocks if lit_bufsize is not greater than 32K.) - * - if compression is not successful for a file smaller than 64K, we can - * even emit a stored file instead of a stored block (saving 5 bytes). - * This is applicable only for zip (not gzip or zlib). - * - creating new Huffman trees less frequently may not provide fast - * adaptation to changes in the input data statistics. (Take for - * example a binary file with poorly compressible code followed by - * a highly compressible string table.) Smaller buffer sizes give - * fast adaptation but have of course the overhead of transmitting - * trees more frequently. - * - I can't count above 4 - */ - - uInt last_lit; /* running index in l_buf */ - - ushf *d_buf; - /* Buffer for distances. To simplify the code, d_buf and l_buf have - * the same number of elements. To use different lengths, an extra flag - * array would be necessary. - */ - - ulg opt_len; /* bit length of current block with optimal trees */ - ulg static_len; /* bit length of current block with static trees */ - uInt matches; /* number of string matches in current block */ - uInt insert; /* bytes at end of window left to insert */ - -#ifdef DEBUG - ulg compressed_len; /* total bit length of compressed file mod 2^32 */ - ulg bits_sent; /* bit length of compressed data sent mod 2^32 */ -#endif - - ush bi_buf; - /* Output buffer. bits are inserted starting at the bottom (least - * significant bits). - */ - int bi_valid; - /* Number of valid bits in bi_buf. All bits above the last valid bit - * are always zero. - */ - - ulg high_water; - /* High water mark offset in window for initialized bytes -- bytes above - * this are set to zero in order to avoid memory check warnings when - * longest match routines access bytes past the input. This is then - * updated to the new high water mark. - */ - -} FAR deflate_state; - -/* Output a byte on the stream. - * IN assertion: there is enough room in pending_buf. - */ -#define put_byte(s, c) {s->pending_buf[s->pending++] = (c);} - - -#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1) -/* Minimum amount of lookahead, except at the end of the input file. - * See deflate.c for comments about the MIN_MATCH+1. - */ - -#define MAX_DIST(s) ((s)->w_size-MIN_LOOKAHEAD) -/* In order to simplify the code, particularly on 16 bit machines, match - * distances are limited to MAX_DIST instead of WSIZE. - */ - -#define WIN_INIT MAX_MATCH -/* Number of bytes after end of data in window to initialize in order to avoid - memory checker errors from longest match routines */ - - /* in trees.c */ -void ZLIB_INTERNAL _tr_init OF((deflate_state *s)); -int ZLIB_INTERNAL _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc)); -void ZLIB_INTERNAL _tr_flush_block OF((deflate_state *s, charf *buf, - ulg stored_len, int last)); -void ZLIB_INTERNAL _tr_flush_bits OF((deflate_state *s)); -void ZLIB_INTERNAL _tr_align OF((deflate_state *s)); -void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf, - ulg stored_len, int last)); - -#define d_code(dist) \ - ((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)]) -/* Mapping from a distance to a distance code. dist is the distance - 1 and - * must not have side effects. _dist_code[256] and _dist_code[257] are never - * used. - */ - -#ifndef DEBUG -/* Inline versions of _tr_tally for speed: */ - -#if defined(GEN_TREES_H) || !defined(STDC) - extern uch ZLIB_INTERNAL _length_code[]; - extern uch ZLIB_INTERNAL _dist_code[]; -#else - extern const uch ZLIB_INTERNAL _length_code[]; - extern const uch ZLIB_INTERNAL _dist_code[]; -#endif - -# define _tr_tally_lit(s, c, flush) \ - { uch cc = (c); \ - s->d_buf[s->last_lit] = 0; \ - s->l_buf[s->last_lit++] = cc; \ - s->dyn_ltree[cc].Freq++; \ - flush = (s->last_lit == s->lit_bufsize-1); \ - } -# define _tr_tally_dist(s, distance, length, flush) \ - { uch len = (length); \ - ush dist = (distance); \ - s->d_buf[s->last_lit] = dist; \ - s->l_buf[s->last_lit++] = len; \ - dist--; \ - s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \ - s->dyn_dtree[d_code(dist)].Freq++; \ - flush = (s->last_lit == s->lit_bufsize-1); \ - } -#else -# define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c) -# define _tr_tally_dist(s, distance, length, flush) \ - flush = _tr_tally(s, distance, length) -#endif - -#endif /* DEFLATE_H */ diff --git a/platform/win32/msvc/external/zlib/doc/algorithm.txt b/platform/win32/msvc/external/zlib/doc/algorithm.txt deleted file mode 100644 index c97f495020b..00000000000 --- a/platform/win32/msvc/external/zlib/doc/algorithm.txt +++ /dev/null @@ -1,209 +0,0 @@ -1. Compression algorithm (deflate) - -The deflation algorithm used by gzip (also zip and zlib) is a variation of -LZ77 (Lempel-Ziv 1977, see reference below). It finds duplicated strings in -the input data. The second occurrence of a string is replaced by a -pointer to the previous string, in the form of a pair (distance, -length). Distances are limited to 32K bytes, and lengths are limited -to 258 bytes. When a string does not occur anywhere in the previous -32K bytes, it is emitted as a sequence of literal bytes. (In this -description, `string' must be taken as an arbitrary sequence of bytes, -and is not restricted to printable characters.) - -Literals or match lengths are compressed with one Huffman tree, and -match distances are compressed with another tree. The trees are stored -in a compact form at the start of each block. The blocks can have any -size (except that the compressed data for one block must fit in -available memory). A block is terminated when deflate() determines that -it would be useful to start another block with fresh trees. (This is -somewhat similar to the behavior of LZW-based _compress_.) - -Duplicated strings are found using a hash table. All input strings of -length 3 are inserted in the hash table. A hash index is computed for -the next 3 bytes. If the hash chain for this index is not empty, all -strings in the chain are compared with the current input string, and -the longest match is selected. - -The hash chains are searched starting with the most recent strings, to -favor small distances and thus take advantage of the Huffman encoding. -The hash chains are singly linked. There are no deletions from the -hash chains, the algorithm simply discards matches that are too old. - -To avoid a worst-case situation, very long hash chains are arbitrarily -truncated at a certain length, determined by a runtime option (level -parameter of deflateInit). So deflate() does not always find the longest -possible match but generally finds a match which is long enough. - -deflate() also defers the selection of matches with a lazy evaluation -mechanism. After a match of length N has been found, deflate() searches for -a longer match at the next input byte. If a longer match is found, the -previous match is truncated to a length of one (thus producing a single -literal byte) and the process of lazy evaluation begins again. Otherwise, -the original match is kept, and the next match search is attempted only N -steps later. - -The lazy match evaluation is also subject to a runtime parameter. If -the current match is long enough, deflate() reduces the search for a longer -match, thus speeding up the whole process. If compression ratio is more -important than speed, deflate() attempts a complete second search even if -the first match is already long enough. - -The lazy match evaluation is not performed for the fastest compression -modes (level parameter 1 to 3). For these fast modes, new strings -are inserted in the hash table only when no match was found, or -when the match is not too long. This degrades the compression ratio -but saves time since there are both fewer insertions and fewer searches. - - -2. Decompression algorithm (inflate) - -2.1 Introduction - -The key question is how to represent a Huffman code (or any prefix code) so -that you can decode fast. The most important characteristic is that shorter -codes are much more common than longer codes, so pay attention to decoding the -short codes fast, and let the long codes take longer to decode. - -inflate() sets up a first level table that covers some number of bits of -input less than the length of longest code. It gets that many bits from the -stream, and looks it up in the table. The table will tell if the next -code is that many bits or less and how many, and if it is, it will tell -the value, else it will point to the next level table for which inflate() -grabs more bits and tries to decode a longer code. - -How many bits to make the first lookup is a tradeoff between the time it -takes to decode and the time it takes to build the table. If building the -table took no time (and if you had infinite memory), then there would only -be a first level table to cover all the way to the longest code. However, -building the table ends up taking a lot longer for more bits since short -codes are replicated many times in such a table. What inflate() does is -simply to make the number of bits in the first table a variable, and then -to set that variable for the maximum speed. - -For inflate, which has 286 possible codes for the literal/length tree, the size -of the first table is nine bits. Also the distance trees have 30 possible -values, and the size of the first table is six bits. Note that for each of -those cases, the table ended up one bit longer than the ``average'' code -length, i.e. the code length of an approximately flat code which would be a -little more than eight bits for 286 symbols and a little less than five bits -for 30 symbols. - - -2.2 More details on the inflate table lookup - -Ok, you want to know what this cleverly obfuscated inflate tree actually -looks like. You are correct that it's not a Huffman tree. It is simply a -lookup table for the first, let's say, nine bits of a Huffman symbol. The -symbol could be as short as one bit or as long as 15 bits. If a particular -symbol is shorter than nine bits, then that symbol's translation is duplicated -in all those entries that start with that symbol's bits. For example, if the -symbol is four bits, then it's duplicated 32 times in a nine-bit table. If a -symbol is nine bits long, it appears in the table once. - -If the symbol is longer than nine bits, then that entry in the table points -to another similar table for the remaining bits. Again, there are duplicated -entries as needed. The idea is that most of the time the symbol will be short -and there will only be one table look up. (That's whole idea behind data -compression in the first place.) For the less frequent long symbols, there -will be two lookups. If you had a compression method with really long -symbols, you could have as many levels of lookups as is efficient. For -inflate, two is enough. - -So a table entry either points to another table (in which case nine bits in -the above example are gobbled), or it contains the translation for the symbol -and the number of bits to gobble. Then you start again with the next -ungobbled bit. - -You may wonder: why not just have one lookup table for how ever many bits the -longest symbol is? The reason is that if you do that, you end up spending -more time filling in duplicate symbol entries than you do actually decoding. -At least for deflate's output that generates new trees every several 10's of -kbytes. You can imagine that filling in a 2^15 entry table for a 15-bit code -would take too long if you're only decoding several thousand symbols. At the -other extreme, you could make a new table for every bit in the code. In fact, -that's essentially a Huffman tree. But then you spend too much time -traversing the tree while decoding, even for short symbols. - -So the number of bits for the first lookup table is a trade of the time to -fill out the table vs. the time spent looking at the second level and above of -the table. - -Here is an example, scaled down: - -The code being decoded, with 10 symbols, from 1 to 6 bits long: - -A: 0 -B: 10 -C: 1100 -D: 11010 -E: 11011 -F: 11100 -G: 11101 -H: 11110 -I: 111110 -J: 111111 - -Let's make the first table three bits long (eight entries): - -000: A,1 -001: A,1 -010: A,1 -011: A,1 -100: B,2 -101: B,2 -110: -> table X (gobble 3 bits) -111: -> table Y (gobble 3 bits) - -Each entry is what the bits decode as and how many bits that is, i.e. how -many bits to gobble. Or the entry points to another table, with the number of -bits to gobble implicit in the size of the table. - -Table X is two bits long since the longest code starting with 110 is five bits -long: - -00: C,1 -01: C,1 -10: D,2 -11: E,2 - -Table Y is three bits long since the longest code starting with 111 is six -bits long: - -000: F,2 -001: F,2 -010: G,2 -011: G,2 -100: H,2 -101: H,2 -110: I,3 -111: J,3 - -So what we have here are three tables with a total of 20 entries that had to -be constructed. That's compared to 64 entries for a single table. Or -compared to 16 entries for a Huffman tree (six two entry tables and one four -entry table). Assuming that the code ideally represents the probability of -the symbols, it takes on the average 1.25 lookups per symbol. That's compared -to one lookup for the single table, or 1.66 lookups per symbol for the -Huffman tree. - -There, I think that gives you a picture of what's going on. For inflate, the -meaning of a particular symbol is often more than just a letter. It can be a -byte (a "literal"), or it can be either a length or a distance which -indicates a base value and a number of bits to fetch after the code that is -added to the base value. Or it might be the special end-of-block code. The -data structures created in inftrees.c try to encode all that information -compactly in the tables. - - -Jean-loup Gailly Mark Adler -jloup@gzip.org madler@alumni.caltech.edu - - -References: - -[LZ77] Ziv J., Lempel A., ``A Universal Algorithm for Sequential Data -Compression,'' IEEE Transactions on Information Theory, Vol. 23, No. 3, -pp. 337-343. - -``DEFLATE Compressed Data Format Specification'' available in -http://tools.ietf.org/html/rfc1951 diff --git a/platform/win32/msvc/external/zlib/doc/rfc1950.txt b/platform/win32/msvc/external/zlib/doc/rfc1950.txt deleted file mode 100644 index ce6428a0f2e..00000000000 --- a/platform/win32/msvc/external/zlib/doc/rfc1950.txt +++ /dev/null @@ -1,619 +0,0 @@ - - - - - - -Network Working Group P. Deutsch -Request for Comments: 1950 Aladdin Enterprises -Category: Informational J-L. Gailly - Info-ZIP - May 1996 - - - ZLIB Compressed Data Format Specification version 3.3 - -Status of This Memo - - This memo provides information for the Internet community. This memo - does not specify an Internet standard of any kind. Distribution of - this memo is unlimited. - -IESG Note: - - The IESG takes no position on the validity of any Intellectual - Property Rights statements contained in this document. - -Notices - - Copyright (c) 1996 L. Peter Deutsch and Jean-Loup Gailly - - Permission is granted to copy and distribute this document for any - purpose and without charge, including translations into other - languages and incorporation into compilations, provided that the - copyright notice and this notice are preserved, and that any - substantive changes or deletions from the original are clearly - marked. - - A pointer to the latest version of this and related documentation in - HTML format can be found at the URL - <ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html>. - -Abstract - - This specification defines a lossless compressed data format. The - data can be produced or consumed, even for an arbitrarily long - sequentially presented input data stream, using only an a priori - bounded amount of intermediate storage. The format presently uses - the DEFLATE compression method but can be easily extended to use - other compression methods. It can be implemented readily in a manner - not covered by patents. This specification also defines the ADLER-32 - checksum (an extension and improvement of the Fletcher checksum), - used for detection of data corruption, and provides an algorithm for - computing it. - - - - -Deutsch & Gailly Informational [Page 1] - -RFC 1950 ZLIB Compressed Data Format Specification May 1996 - - -Table of Contents - - 1. Introduction ................................................... 2 - 1.1. Purpose ................................................... 2 - 1.2. Intended audience ......................................... 3 - 1.3. Scope ..................................................... 3 - 1.4. Compliance ................................................ 3 - 1.5. Definitions of terms and conventions used ................ 3 - 1.6. Changes from previous versions ............................ 3 - 2. Detailed specification ......................................... 3 - 2.1. Overall conventions ....................................... 3 - 2.2. Data format ............................................... 4 - 2.3. Compliance ................................................ 7 - 3. References ..................................................... 7 - 4. Source code .................................................... 8 - 5. Security Considerations ........................................ 8 - 6. Acknowledgements ............................................... 8 - 7. Authors' Addresses ............................................. 8 - 8. Appendix: Rationale ............................................ 9 - 9. Appendix: Sample code ..........................................10 - -1. Introduction - - 1.1. Purpose - - The purpose of this specification is to define a lossless - compressed data format that: - - * Is independent of CPU type, operating system, file system, - and character set, and hence can be used for interchange; - - * Can be produced or consumed, even for an arbitrarily long - sequentially presented input data stream, using only an a - priori bounded amount of intermediate storage, and hence can - be used in data communications or similar structures such as - Unix filters; - - * Can use a number of different compression methods; - - * Can be implemented readily in a manner not covered by - patents, and hence can be practiced freely. - - The data format defined by this specification does not attempt to - allow random access to compressed data. - - - - - - - -Deutsch & Gailly Informational [Page 2] - -RFC 1950 ZLIB Compressed Data Format Specification May 1996 - - - 1.2. Intended audience - - This specification is intended for use by implementors of software - to compress data into zlib format and/or decompress data from zlib - format. - - The text of the specification assumes a basic background in - programming at the level of bits and other primitive data - representations. - - 1.3. Scope - - The specification specifies a compressed data format that can be - used for in-memory compression of a sequence of arbitrary bytes. - - 1.4. Compliance - - Unless otherwise indicated below, a compliant decompressor must be - able to accept and decompress any data set that conforms to all - the specifications presented here; a compliant compressor must - produce data sets that conform to all the specifications presented - here. - - 1.5. Definitions of terms and conventions used - - byte: 8 bits stored or transmitted as a unit (same as an octet). - (For this specification, a byte is exactly 8 bits, even on - machines which store a character on a number of bits different - from 8.) See below, for the numbering of bits within a byte. - - 1.6. Changes from previous versions - - Version 3.1 was the first public release of this specification. - In version 3.2, some terminology was changed and the Adler-32 - sample code was rewritten for clarity. In version 3.3, the - support for a preset dictionary was introduced, and the - specification was converted to RFC style. - -2. Detailed specification - - 2.1. Overall conventions - - In the diagrams below, a box like this: - - +---+ - | | <-- the vertical bars might be missing - +---+ - - - - -Deutsch & Gailly Informational [Page 3] - -RFC 1950 ZLIB Compressed Data Format Specification May 1996 - - - represents one byte; a box like this: - - +==============+ - | | - +==============+ - - represents a variable number of bytes. - - Bytes stored within a computer do not have a "bit order", since - they are always treated as a unit. However, a byte considered as - an integer between 0 and 255 does have a most- and least- - significant bit, and since we write numbers with the most- - significant digit on the left, we also write bytes with the most- - significant bit on the left. In the diagrams below, we number the - bits of a byte so that bit 0 is the least-significant bit, i.e., - the bits are numbered: - - +--------+ - |76543210| - +--------+ - - Within a computer, a number may occupy multiple bytes. All - multi-byte numbers in the format described here are stored with - the MOST-significant byte first (at the lower memory address). - For example, the decimal number 520 is stored as: - - 0 1 - +--------+--------+ - |00000010|00001000| - +--------+--------+ - ^ ^ - | | - | + less significant byte = 8 - + more significant byte = 2 x 256 - - 2.2. Data format - - A zlib stream has the following structure: - - 0 1 - +---+---+ - |CMF|FLG| (more-->) - +---+---+ - - - - - - - - -Deutsch & Gailly Informational [Page 4] - -RFC 1950 ZLIB Compressed Data Format Specification May 1996 - - - (if FLG.FDICT set) - - 0 1 2 3 - +---+---+---+---+ - | DICTID | (more-->) - +---+---+---+---+ - - +=====================+---+---+---+---+ - |...compressed data...| ADLER32 | - +=====================+---+---+---+---+ - - Any data which may appear after ADLER32 are not part of the zlib - stream. - - CMF (Compression Method and flags) - This byte is divided into a 4-bit compression method and a 4- - bit information field depending on the compression method. - - bits 0 to 3 CM Compression method - bits 4 to 7 CINFO Compression info - - CM (Compression method) - This identifies the compression method used in the file. CM = 8 - denotes the "deflate" compression method with a window size up - to 32K. This is the method used by gzip and PNG (see - references [1] and [2] in Chapter 3, below, for the reference - documents). CM = 15 is reserved. It might be used in a future - version of this specification to indicate the presence of an - extra field before the compressed data. - - CINFO (Compression info) - For CM = 8, CINFO is the base-2 logarithm of the LZ77 window - size, minus eight (CINFO=7 indicates a 32K window size). Values - of CINFO above 7 are not allowed in this version of the - specification. CINFO is not defined in this specification for - CM not equal to 8. - - FLG (FLaGs) - This flag byte is divided as follows: - - bits 0 to 4 FCHECK (check bits for CMF and FLG) - bit 5 FDICT (preset dictionary) - bits 6 to 7 FLEVEL (compression level) - - The FCHECK value must be such that CMF and FLG, when viewed as - a 16-bit unsigned integer stored in MSB order (CMF*256 + FLG), - is a multiple of 31. - - - - -Deutsch & Gailly Informational [Page 5] - -RFC 1950 ZLIB Compressed Data Format Specification May 1996 - - - FDICT (Preset dictionary) - If FDICT is set, a DICT dictionary identifier is present - immediately after the FLG byte. The dictionary is a sequence of - bytes which are initially fed to the compressor without - producing any compressed output. DICT is the Adler-32 checksum - of this sequence of bytes (see the definition of ADLER32 - below). The decompressor can use this identifier to determine - which dictionary has been used by the compressor. - - FLEVEL (Compression level) - These flags are available for use by specific compression - methods. The "deflate" method (CM = 8) sets these flags as - follows: - - 0 - compressor used fastest algorithm - 1 - compressor used fast algorithm - 2 - compressor used default algorithm - 3 - compressor used maximum compression, slowest algorithm - - The information in FLEVEL is not needed for decompression; it - is there to indicate if recompression might be worthwhile. - - compressed data - For compression method 8, the compressed data is stored in the - deflate compressed data format as described in the document - "DEFLATE Compressed Data Format Specification" by L. Peter - Deutsch. (See reference [3] in Chapter 3, below) - - Other compressed data formats are not specified in this version - of the zlib specification. - - ADLER32 (Adler-32 checksum) - This contains a checksum value of the uncompressed data - (excluding any dictionary data) computed according to Adler-32 - algorithm. This algorithm is a 32-bit extension and improvement - of the Fletcher algorithm, used in the ITU-T X.224 / ISO 8073 - standard. See references [4] and [5] in Chapter 3, below) - - Adler-32 is composed of two sums accumulated per byte: s1 is - the sum of all bytes, s2 is the sum of all s1 values. Both sums - are done modulo 65521. s1 is initialized to 1, s2 to zero. The - Adler-32 checksum is stored as s2*65536 + s1 in most- - significant-byte first (network) order. - - - - - - - - -Deutsch & Gailly Informational [Page 6] - -RFC 1950 ZLIB Compressed Data Format Specification May 1996 - - - 2.3. Compliance - - A compliant compressor must produce streams with correct CMF, FLG - and ADLER32, but need not support preset dictionaries. When the - zlib data format is used as part of another standard data format, - the compressor may use only preset dictionaries that are specified - by this other data format. If this other format does not use the - preset dictionary feature, the compressor must not set the FDICT - flag. - - A compliant decompressor must check CMF, FLG, and ADLER32, and - provide an error indication if any of these have incorrect values. - A compliant decompressor must give an error indication if CM is - not one of the values defined in this specification (only the - value 8 is permitted in this version), since another value could - indicate the presence of new features that would cause subsequent - data to be interpreted incorrectly. A compliant decompressor must - give an error indication if FDICT is set and DICTID is not the - identifier of a known preset dictionary. A decompressor may - ignore FLEVEL and still be compliant. When the zlib data format - is being used as a part of another standard format, a compliant - decompressor must support all the preset dictionaries specified by - the other format. When the other format does not use the preset - dictionary feature, a compliant decompressor must reject any - stream in which the FDICT flag is set. - -3. References - - [1] Deutsch, L.P.,"GZIP Compressed Data Format Specification", - available in ftp://ftp.uu.net/pub/archiving/zip/doc/ - - [2] Thomas Boutell, "PNG (Portable Network Graphics) specification", - available in ftp://ftp.uu.net/graphics/png/documents/ - - [3] Deutsch, L.P.,"DEFLATE Compressed Data Format Specification", - available in ftp://ftp.uu.net/pub/archiving/zip/doc/ - - [4] Fletcher, J. G., "An Arithmetic Checksum for Serial - Transmissions," IEEE Transactions on Communications, Vol. COM-30, - No. 1, January 1982, pp. 247-252. - - [5] ITU-T Recommendation X.224, Annex D, "Checksum Algorithms," - November, 1993, pp. 144, 145. (Available from - gopher://info.itu.ch). ITU-T X.244 is also the same as ISO 8073. - - - - - - - -Deutsch & Gailly Informational [Page 7] - -RFC 1950 ZLIB Compressed Data Format Specification May 1996 - - -4. Source code - - Source code for a C language implementation of a "zlib" compliant - library is available at ftp://ftp.uu.net/pub/archiving/zip/zlib/. - -5. Security Considerations - - A decoder that fails to check the ADLER32 checksum value may be - subject to undetected data corruption. - -6. Acknowledgements - - Trademarks cited in this document are the property of their - respective owners. - - Jean-Loup Gailly and Mark Adler designed the zlib format and wrote - the related software described in this specification. Glenn - Randers-Pehrson converted this document to RFC and HTML format. - -7. Authors' Addresses - - L. Peter Deutsch - Aladdin Enterprises - 203 Santa Margarita Ave. - Menlo Park, CA 94025 - - Phone: (415) 322-0103 (AM only) - FAX: (415) 322-1734 - EMail: <ghost@aladdin.com> - - - Jean-Loup Gailly - - EMail: <gzip@prep.ai.mit.edu> - - Questions about the technical content of this specification can be - sent by email to - - Jean-Loup Gailly <gzip@prep.ai.mit.edu> and - Mark Adler <madler@alumni.caltech.edu> - - Editorial comments on this specification can be sent by email to - - L. Peter Deutsch <ghost@aladdin.com> and - Glenn Randers-Pehrson <randeg@alumni.rpi.edu> - - - - - - -Deutsch & Gailly Informational [Page 8] - -RFC 1950 ZLIB Compressed Data Format Specification May 1996 - - -8. Appendix: Rationale - - 8.1. Preset dictionaries - - A preset dictionary is specially useful to compress short input - sequences. The compressor can take advantage of the dictionary - context to encode the input in a more compact manner. The - decompressor can be initialized with the appropriate context by - virtually decompressing a compressed version of the dictionary - without producing any output. However for certain compression - algorithms such as the deflate algorithm this operation can be - achieved without actually performing any decompression. - - The compressor and the decompressor must use exactly the same - dictionary. The dictionary may be fixed or may be chosen among a - certain number of predefined dictionaries, according to the kind - of input data. The decompressor can determine which dictionary has - been chosen by the compressor by checking the dictionary - identifier. This document does not specify the contents of - predefined dictionaries, since the optimal dictionaries are - application specific. Standard data formats using this feature of - the zlib specification must precisely define the allowed - dictionaries. - - 8.2. The Adler-32 algorithm - - The Adler-32 algorithm is much faster than the CRC32 algorithm yet - still provides an extremely low probability of undetected errors. - - The modulo on unsigned long accumulators can be delayed for 5552 - bytes, so the modulo operation time is negligible. If the bytes - are a, b, c, the second sum is 3a + 2b + c + 3, and so is position - and order sensitive, unlike the first sum, which is just a - checksum. That 65521 is prime is important to avoid a possible - large class of two-byte errors that leave the check unchanged. - (The Fletcher checksum uses 255, which is not prime and which also - makes the Fletcher check insensitive to single byte changes 0 <-> - 255.) - - The sum s1 is initialized to 1 instead of zero to make the length - of the sequence part of s2, so that the length does not have to be - checked separately. (Any sequence of zeroes has a Fletcher - checksum of zero.) - - - - - - - - -Deutsch & Gailly Informational [Page 9] - -RFC 1950 ZLIB Compressed Data Format Specification May 1996 - - -9. Appendix: Sample code - - The following C code computes the Adler-32 checksum of a data buffer. - It is written for clarity, not for speed. The sample code is in the - ANSI C programming language. Non C users may find it easier to read - with these hints: - - & Bitwise AND operator. - >> Bitwise right shift operator. When applied to an - unsigned quantity, as here, right shift inserts zero bit(s) - at the left. - << Bitwise left shift operator. Left shift inserts zero - bit(s) at the right. - ++ "n++" increments the variable n. - % modulo operator: a % b is the remainder of a divided by b. - - #define BASE 65521 /* largest prime smaller than 65536 */ - - /* - Update a running Adler-32 checksum with the bytes buf[0..len-1] - and return the updated checksum. The Adler-32 checksum should be - initialized to 1. - - Usage example: - - unsigned long adler = 1L; - - while (read_buffer(buffer, length) != EOF) { - adler = update_adler32(adler, buffer, length); - } - if (adler != original_adler) error(); - */ - unsigned long update_adler32(unsigned long adler, - unsigned char *buf, int len) - { - unsigned long s1 = adler & 0xffff; - unsigned long s2 = (adler >> 16) & 0xffff; - int n; - - for (n = 0; n < len; n++) { - s1 = (s1 + buf[n]) % BASE; - s2 = (s2 + s1) % BASE; - } - return (s2 << 16) + s1; - } - - /* Return the adler32 of the bytes buf[0..len-1] */ - - - - -Deutsch & Gailly Informational [Page 10] - -RFC 1950 ZLIB Compressed Data Format Specification May 1996 - - - unsigned long adler32(unsigned char *buf, int len) - { - return update_adler32(1L, buf, len); - } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Deutsch & Gailly Informational [Page 11] - diff --git a/platform/win32/msvc/external/zlib/doc/rfc1951.txt b/platform/win32/msvc/external/zlib/doc/rfc1951.txt deleted file mode 100644 index 403c8c722ff..00000000000 --- a/platform/win32/msvc/external/zlib/doc/rfc1951.txt +++ /dev/null @@ -1,955 +0,0 @@ - - - - - - -Network Working Group P. Deutsch -Request for Comments: 1951 Aladdin Enterprises -Category: Informational May 1996 - - - DEFLATE Compressed Data Format Specification version 1.3 - -Status of This Memo - - This memo provides information for the Internet community. This memo - does not specify an Internet standard of any kind. Distribution of - this memo is unlimited. - -IESG Note: - - The IESG takes no position on the validity of any Intellectual - Property Rights statements contained in this document. - -Notices - - Copyright (c) 1996 L. Peter Deutsch - - Permission is granted to copy and distribute this document for any - purpose and without charge, including translations into other - languages and incorporation into compilations, provided that the - copyright notice and this notice are preserved, and that any - substantive changes or deletions from the original are clearly - marked. - - A pointer to the latest version of this and related documentation in - HTML format can be found at the URL - <ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html>. - -Abstract - - This specification defines a lossless compressed data format that - compresses data using a combination of the LZ77 algorithm and Huffman - coding, with efficiency comparable to the best currently available - general-purpose compression methods. The data can be produced or - consumed, even for an arbitrarily long sequentially presented input - data stream, using only an a priori bounded amount of intermediate - storage. The format can be implemented readily in a manner not - covered by patents. - - - - - - - - -Deutsch Informational [Page 1] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - -Table of Contents - - 1. Introduction ................................................... 2 - 1.1. Purpose ................................................... 2 - 1.2. Intended audience ......................................... 3 - 1.3. Scope ..................................................... 3 - 1.4. Compliance ................................................ 3 - 1.5. Definitions of terms and conventions used ................ 3 - 1.6. Changes from previous versions ............................ 4 - 2. Compressed representation overview ............................. 4 - 3. Detailed specification ......................................... 5 - 3.1. Overall conventions ....................................... 5 - 3.1.1. Packing into bytes .................................. 5 - 3.2. Compressed block format ................................... 6 - 3.2.1. Synopsis of prefix and Huffman coding ............... 6 - 3.2.2. Use of Huffman coding in the "deflate" format ....... 7 - 3.2.3. Details of block format ............................. 9 - 3.2.4. Non-compressed blocks (BTYPE=00) ................... 11 - 3.2.5. Compressed blocks (length and distance codes) ...... 11 - 3.2.6. Compression with fixed Huffman codes (BTYPE=01) .... 12 - 3.2.7. Compression with dynamic Huffman codes (BTYPE=10) .. 13 - 3.3. Compliance ............................................... 14 - 4. Compression algorithm details ................................. 14 - 5. References .................................................... 16 - 6. Security Considerations ....................................... 16 - 7. Source code ................................................... 16 - 8. Acknowledgements .............................................. 16 - 9. Author's Address .............................................. 17 - -1. Introduction - - 1.1. Purpose - - The purpose of this specification is to define a lossless - compressed data format that: - * Is independent of CPU type, operating system, file system, - and character set, and hence can be used for interchange; - * Can be produced or consumed, even for an arbitrarily long - sequentially presented input data stream, using only an a - priori bounded amount of intermediate storage, and hence - can be used in data communications or similar structures - such as Unix filters; - * Compresses data with efficiency comparable to the best - currently available general-purpose compression methods, - and in particular considerably better than the "compress" - program; - * Can be implemented readily in a manner not covered by - patents, and hence can be practiced freely; - - - -Deutsch Informational [Page 2] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - * Is compatible with the file format produced by the current - widely used gzip utility, in that conforming decompressors - will be able to read data produced by the existing gzip - compressor. - - The data format defined by this specification does not attempt to: - - * Allow random access to compressed data; - * Compress specialized data (e.g., raster graphics) as well - as the best currently available specialized algorithms. - - A simple counting argument shows that no lossless compression - algorithm can compress every possible input data set. For the - format defined here, the worst case expansion is 5 bytes per 32K- - byte block, i.e., a size increase of 0.015% for large data sets. - English text usually compresses by a factor of 2.5 to 3; - executable files usually compress somewhat less; graphical data - such as raster images may compress much more. - - 1.2. Intended audience - - This specification is intended for use by implementors of software - to compress data into "deflate" format and/or decompress data from - "deflate" format. - - The text of the specification assumes a basic background in - programming at the level of bits and other primitive data - representations. Familiarity with the technique of Huffman coding - is helpful but not required. - - 1.3. Scope - - The specification specifies a method for representing a sequence - of bytes as a (usually shorter) sequence of bits, and a method for - packing the latter bit sequence into bytes. - - 1.4. Compliance - - Unless otherwise indicated below, a compliant decompressor must be - able to accept and decompress any data set that conforms to all - the specifications presented here; a compliant compressor must - produce data sets that conform to all the specifications presented - here. - - 1.5. Definitions of terms and conventions used - - Byte: 8 bits stored or transmitted as a unit (same as an octet). - For this specification, a byte is exactly 8 bits, even on machines - - - -Deutsch Informational [Page 3] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - which store a character on a number of bits different from eight. - See below, for the numbering of bits within a byte. - - String: a sequence of arbitrary bytes. - - 1.6. Changes from previous versions - - There have been no technical changes to the deflate format since - version 1.1 of this specification. In version 1.2, some - terminology was changed. Version 1.3 is a conversion of the - specification to RFC style. - -2. Compressed representation overview - - A compressed data set consists of a series of blocks, corresponding - to successive blocks of input data. The block sizes are arbitrary, - except that non-compressible blocks are limited to 65,535 bytes. - - Each block is compressed using a combination of the LZ77 algorithm - and Huffman coding. The Huffman trees for each block are independent - of those for previous or subsequent blocks; the LZ77 algorithm may - use a reference to a duplicated string occurring in a previous block, - up to 32K input bytes before. - - Each block consists of two parts: a pair of Huffman code trees that - describe the representation of the compressed data part, and a - compressed data part. (The Huffman trees themselves are compressed - using Huffman encoding.) The compressed data consists of a series of - elements of two types: literal bytes (of strings that have not been - detected as duplicated within the previous 32K input bytes), and - pointers to duplicated strings, where a pointer is represented as a - pair <length, backward distance>. The representation used in the - "deflate" format limits distances to 32K bytes and lengths to 258 - bytes, but does not limit the size of a block, except for - uncompressible blocks, which are limited as noted above. - - Each type of value (literals, distances, and lengths) in the - compressed data is represented using a Huffman code, using one code - tree for literals and lengths and a separate code tree for distances. - The code trees for each block appear in a compact form just before - the compressed data for that block. - - - - - - - - - - -Deutsch Informational [Page 4] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - -3. Detailed specification - - 3.1. Overall conventions In the diagrams below, a box like this: - - +---+ - | | <-- the vertical bars might be missing - +---+ - - represents one byte; a box like this: - - +==============+ - | | - +==============+ - - represents a variable number of bytes. - - Bytes stored within a computer do not have a "bit order", since - they are always treated as a unit. However, a byte considered as - an integer between 0 and 255 does have a most- and least- - significant bit, and since we write numbers with the most- - significant digit on the left, we also write bytes with the most- - significant bit on the left. In the diagrams below, we number the - bits of a byte so that bit 0 is the least-significant bit, i.e., - the bits are numbered: - - +--------+ - |76543210| - +--------+ - - Within a computer, a number may occupy multiple bytes. All - multi-byte numbers in the format described here are stored with - the least-significant byte first (at the lower memory address). - For example, the decimal number 520 is stored as: - - 0 1 - +--------+--------+ - |00001000|00000010| - +--------+--------+ - ^ ^ - | | - | + more significant byte = 2 x 256 - + less significant byte = 8 - - 3.1.1. Packing into bytes - - This document does not address the issue of the order in which - bits of a byte are transmitted on a bit-sequential medium, - since the final data format described here is byte- rather than - - - -Deutsch Informational [Page 5] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - bit-oriented. However, we describe the compressed block format - in below, as a sequence of data elements of various bit - lengths, not a sequence of bytes. We must therefore specify - how to pack these data elements into bytes to form the final - compressed byte sequence: - - * Data elements are packed into bytes in order of - increasing bit number within the byte, i.e., starting - with the least-significant bit of the byte. - * Data elements other than Huffman codes are packed - starting with the least-significant bit of the data - element. - * Huffman codes are packed starting with the most- - significant bit of the code. - - In other words, if one were to print out the compressed data as - a sequence of bytes, starting with the first byte at the - *right* margin and proceeding to the *left*, with the most- - significant bit of each byte on the left as usual, one would be - able to parse the result from right to left, with fixed-width - elements in the correct MSB-to-LSB order and Huffman codes in - bit-reversed order (i.e., with the first bit of the code in the - relative LSB position). - - 3.2. Compressed block format - - 3.2.1. Synopsis of prefix and Huffman coding - - Prefix coding represents symbols from an a priori known - alphabet by bit sequences (codes), one code for each symbol, in - a manner such that different symbols may be represented by bit - sequences of different lengths, but a parser can always parse - an encoded string unambiguously symbol-by-symbol. - - We define a prefix code in terms of a binary tree in which the - two edges descending from each non-leaf node are labeled 0 and - 1 and in which the leaf nodes correspond one-for-one with (are - labeled with) the symbols of the alphabet; then the code for a - symbol is the sequence of 0's and 1's on the edges leading from - the root to the leaf labeled with that symbol. For example: - - - - - - - - - - - -Deutsch Informational [Page 6] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - /\ Symbol Code - 0 1 ------ ---- - / \ A 00 - /\ B B 1 - 0 1 C 011 - / \ D 010 - A /\ - 0 1 - / \ - D C - - A parser can decode the next symbol from an encoded input - stream by walking down the tree from the root, at each step - choosing the edge corresponding to the next input bit. - - Given an alphabet with known symbol frequencies, the Huffman - algorithm allows the construction of an optimal prefix code - (one which represents strings with those symbol frequencies - using the fewest bits of any possible prefix codes for that - alphabet). Such a code is called a Huffman code. (See - reference [1] in Chapter 5, references for additional - information on Huffman codes.) - - Note that in the "deflate" format, the Huffman codes for the - various alphabets must not exceed certain maximum code lengths. - This constraint complicates the algorithm for computing code - lengths from symbol frequencies. Again, see Chapter 5, - references for details. - - 3.2.2. Use of Huffman coding in the "deflate" format - - The Huffman codes used for each alphabet in the "deflate" - format have two additional rules: - - * All codes of a given bit length have lexicographically - consecutive values, in the same order as the symbols - they represent; - - * Shorter codes lexicographically precede longer codes. - - - - - - - - - - - - -Deutsch Informational [Page 7] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - We could recode the example above to follow this rule as - follows, assuming that the order of the alphabet is ABCD: - - Symbol Code - ------ ---- - A 10 - B 0 - C 110 - D 111 - - I.e., 0 precedes 10 which precedes 11x, and 110 and 111 are - lexicographically consecutive. - - Given this rule, we can define the Huffman code for an alphabet - just by giving the bit lengths of the codes for each symbol of - the alphabet in order; this is sufficient to determine the - actual codes. In our example, the code is completely defined - by the sequence of bit lengths (2, 1, 3, 3). The following - algorithm generates the codes as integers, intended to be read - from most- to least-significant bit. The code lengths are - initially in tree[I].Len; the codes are produced in - tree[I].Code. - - 1) Count the number of codes for each code length. Let - bl_count[N] be the number of codes of length N, N >= 1. - - 2) Find the numerical value of the smallest code for each - code length: - - code = 0; - bl_count[0] = 0; - for (bits = 1; bits <= MAX_BITS; bits++) { - code = (code + bl_count[bits-1]) << 1; - next_code[bits] = code; - } - - 3) Assign numerical values to all codes, using consecutive - values for all codes of the same length with the base - values determined at step 2. Codes that are never used - (which have a bit length of zero) must not be assigned a - value. - - for (n = 0; n <= max_code; n++) { - len = tree[n].Len; - if (len != 0) { - tree[n].Code = next_code[len]; - next_code[len]++; - } - - - -Deutsch Informational [Page 8] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - } - - Example: - - Consider the alphabet ABCDEFGH, with bit lengths (3, 3, 3, 3, - 3, 2, 4, 4). After step 1, we have: - - N bl_count[N] - - ----------- - 2 1 - 3 5 - 4 2 - - Step 2 computes the following next_code values: - - N next_code[N] - - ------------ - 1 0 - 2 0 - 3 2 - 4 14 - - Step 3 produces the following code values: - - Symbol Length Code - ------ ------ ---- - A 3 010 - B 3 011 - C 3 100 - D 3 101 - E 3 110 - F 2 00 - G 4 1110 - H 4 1111 - - 3.2.3. Details of block format - - Each block of compressed data begins with 3 header bits - containing the following data: - - first bit BFINAL - next 2 bits BTYPE - - Note that the header bits do not necessarily begin on a byte - boundary, since a block does not necessarily occupy an integral - number of bytes. - - - - - -Deutsch Informational [Page 9] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - BFINAL is set if and only if this is the last block of the data - set. - - BTYPE specifies how the data are compressed, as follows: - - 00 - no compression - 01 - compressed with fixed Huffman codes - 10 - compressed with dynamic Huffman codes - 11 - reserved (error) - - The only difference between the two compressed cases is how the - Huffman codes for the literal/length and distance alphabets are - defined. - - In all cases, the decoding algorithm for the actual data is as - follows: - - do - read block header from input stream. - if stored with no compression - skip any remaining bits in current partially - processed byte - read LEN and NLEN (see next section) - copy LEN bytes of data to output - otherwise - if compressed with dynamic Huffman codes - read representation of code trees (see - subsection below) - loop (until end of block code recognized) - decode literal/length value from input stream - if value < 256 - copy value (literal byte) to output stream - otherwise - if value = end of block (256) - break from loop - otherwise (value = 257..285) - decode distance from input stream - - move backwards distance bytes in the output - stream, and copy length bytes from this - position to the output stream. - end loop - while not last block - - Note that a duplicated string reference may refer to a string - in a previous block; i.e., the backward distance may cross one - or more block boundaries. However a distance cannot refer past - the beginning of the output stream. (An application using a - - - -Deutsch Informational [Page 10] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - preset dictionary might discard part of the output stream; a - distance can refer to that part of the output stream anyway) - Note also that the referenced string may overlap the current - position; for example, if the last 2 bytes decoded have values - X and Y, a string reference with <length = 5, distance = 2> - adds X,Y,X,Y,X to the output stream. - - We now specify each compression method in turn. - - 3.2.4. Non-compressed blocks (BTYPE=00) - - Any bits of input up to the next byte boundary are ignored. - The rest of the block consists of the following information: - - 0 1 2 3 4... - +---+---+---+---+================================+ - | LEN | NLEN |... LEN bytes of literal data...| - +---+---+---+---+================================+ - - LEN is the number of data bytes in the block. NLEN is the - one's complement of LEN. - - 3.2.5. Compressed blocks (length and distance codes) - - As noted above, encoded data blocks in the "deflate" format - consist of sequences of symbols drawn from three conceptually - distinct alphabets: either literal bytes, from the alphabet of - byte values (0..255), or <length, backward distance> pairs, - where the length is drawn from (3..258) and the distance is - drawn from (1..32,768). In fact, the literal and length - alphabets are merged into a single alphabet (0..285), where - values 0..255 represent literal bytes, the value 256 indicates - end-of-block, and values 257..285 represent length codes - (possibly in conjunction with extra bits following the symbol - code) as follows: - - - - - - - - - - - - - - - - -Deutsch Informational [Page 11] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - Extra Extra Extra - Code Bits Length(s) Code Bits Lengths Code Bits Length(s) - ---- ---- ------ ---- ---- ------- ---- ---- ------- - 257 0 3 267 1 15,16 277 4 67-82 - 258 0 4 268 1 17,18 278 4 83-98 - 259 0 5 269 2 19-22 279 4 99-114 - 260 0 6 270 2 23-26 280 4 115-130 - 261 0 7 271 2 27-30 281 5 131-162 - 262 0 8 272 2 31-34 282 5 163-194 - 263 0 9 273 3 35-42 283 5 195-226 - 264 0 10 274 3 43-50 284 5 227-257 - 265 1 11,12 275 3 51-58 285 0 258 - 266 1 13,14 276 3 59-66 - - The extra bits should be interpreted as a machine integer - stored with the most-significant bit first, e.g., bits 1110 - represent the value 14. - - Extra Extra Extra - Code Bits Dist Code Bits Dist Code Bits Distance - ---- ---- ---- ---- ---- ------ ---- ---- -------- - 0 0 1 10 4 33-48 20 9 1025-1536 - 1 0 2 11 4 49-64 21 9 1537-2048 - 2 0 3 12 5 65-96 22 10 2049-3072 - 3 0 4 13 5 97-128 23 10 3073-4096 - 4 1 5,6 14 6 129-192 24 11 4097-6144 - 5 1 7,8 15 6 193-256 25 11 6145-8192 - 6 2 9-12 16 7 257-384 26 12 8193-12288 - 7 2 13-16 17 7 385-512 27 12 12289-16384 - 8 3 17-24 18 8 513-768 28 13 16385-24576 - 9 3 25-32 19 8 769-1024 29 13 24577-32768 - - 3.2.6. Compression with fixed Huffman codes (BTYPE=01) - - The Huffman codes for the two alphabets are fixed, and are not - represented explicitly in the data. The Huffman code lengths - for the literal/length alphabet are: - - Lit Value Bits Codes - --------- ---- ----- - 0 - 143 8 00110000 through - 10111111 - 144 - 255 9 110010000 through - 111111111 - 256 - 279 7 0000000 through - 0010111 - 280 - 287 8 11000000 through - 11000111 - - - -Deutsch Informational [Page 12] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - The code lengths are sufficient to generate the actual codes, - as described above; we show the codes in the table for added - clarity. Literal/length values 286-287 will never actually - occur in the compressed data, but participate in the code - construction. - - Distance codes 0-31 are represented by (fixed-length) 5-bit - codes, with possible additional bits as shown in the table - shown in Paragraph 3.2.5, above. Note that distance codes 30- - 31 will never actually occur in the compressed data. - - 3.2.7. Compression with dynamic Huffman codes (BTYPE=10) - - The Huffman codes for the two alphabets appear in the block - immediately after the header bits and before the actual - compressed data, first the literal/length code and then the - distance code. Each code is defined by a sequence of code - lengths, as discussed in Paragraph 3.2.2, above. For even - greater compactness, the code length sequences themselves are - compressed using a Huffman code. The alphabet for code lengths - is as follows: - - 0 - 15: Represent code lengths of 0 - 15 - 16: Copy the previous code length 3 - 6 times. - The next 2 bits indicate repeat length - (0 = 3, ... , 3 = 6) - Example: Codes 8, 16 (+2 bits 11), - 16 (+2 bits 10) will expand to - 12 code lengths of 8 (1 + 6 + 5) - 17: Repeat a code length of 0 for 3 - 10 times. - (3 bits of length) - 18: Repeat a code length of 0 for 11 - 138 times - (7 bits of length) - - A code length of 0 indicates that the corresponding symbol in - the literal/length or distance alphabet will not occur in the - block, and should not participate in the Huffman code - construction algorithm given earlier. If only one distance - code is used, it is encoded using one bit, not zero bits; in - this case there is a single code length of one, with one unused - code. One distance code of zero bits means that there are no - distance codes used at all (the data is all literals). - - We can now define the format of the block: - - 5 Bits: HLIT, # of Literal/Length codes - 257 (257 - 286) - 5 Bits: HDIST, # of Distance codes - 1 (1 - 32) - 4 Bits: HCLEN, # of Code Length codes - 4 (4 - 19) - - - -Deutsch Informational [Page 13] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - (HCLEN + 4) x 3 bits: code lengths for the code length - alphabet given just above, in the order: 16, 17, 18, - 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 - - These code lengths are interpreted as 3-bit integers - (0-7); as above, a code length of 0 means the - corresponding symbol (literal/length or distance code - length) is not used. - - HLIT + 257 code lengths for the literal/length alphabet, - encoded using the code length Huffman code - - HDIST + 1 code lengths for the distance alphabet, - encoded using the code length Huffman code - - The actual compressed data of the block, - encoded using the literal/length and distance Huffman - codes - - The literal/length symbol 256 (end of data), - encoded using the literal/length Huffman code - - The code length repeat codes can cross from HLIT + 257 to the - HDIST + 1 code lengths. In other words, all code lengths form - a single sequence of HLIT + HDIST + 258 values. - - 3.3. Compliance - - A compressor may limit further the ranges of values specified in - the previous section and still be compliant; for example, it may - limit the range of backward pointers to some value smaller than - 32K. Similarly, a compressor may limit the size of blocks so that - a compressible block fits in memory. - - A compliant decompressor must accept the full range of possible - values defined in the previous section, and must accept blocks of - arbitrary size. - -4. Compression algorithm details - - While it is the intent of this document to define the "deflate" - compressed data format without reference to any particular - compression algorithm, the format is related to the compressed - formats produced by LZ77 (Lempel-Ziv 1977, see reference [2] below); - since many variations of LZ77 are patented, it is strongly - recommended that the implementor of a compressor follow the general - algorithm presented here, which is known not to be patented per se. - The material in this section is not part of the definition of the - - - -Deutsch Informational [Page 14] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - specification per se, and a compressor need not follow it in order to - be compliant. - - The compressor terminates a block when it determines that starting a - new block with fresh trees would be useful, or when the block size - fills up the compressor's block buffer. - - The compressor uses a chained hash table to find duplicated strings, - using a hash function that operates on 3-byte sequences. At any - given point during compression, let XYZ be the next 3 input bytes to - be examined (not necessarily all different, of course). First, the - compressor examines the hash chain for XYZ. If the chain is empty, - the compressor simply writes out X as a literal byte and advances one - byte in the input. If the hash chain is not empty, indicating that - the sequence XYZ (or, if we are unlucky, some other 3 bytes with the - same hash function value) has occurred recently, the compressor - compares all strings on the XYZ hash chain with the actual input data - sequence starting at the current point, and selects the longest - match. - - The compressor searches the hash chains starting with the most recent - strings, to favor small distances and thus take advantage of the - Huffman encoding. The hash chains are singly linked. There are no - deletions from the hash chains; the algorithm simply discards matches - that are too old. To avoid a worst-case situation, very long hash - chains are arbitrarily truncated at a certain length, determined by a - run-time parameter. - - To improve overall compression, the compressor optionally defers the - selection of matches ("lazy matching"): after a match of length N has - been found, the compressor searches for a longer match starting at - the next input byte. If it finds a longer match, it truncates the - previous match to a length of one (thus producing a single literal - byte) and then emits the longer match. Otherwise, it emits the - original match, and, as described above, advances N bytes before - continuing. - - Run-time parameters also control this "lazy match" procedure. If - compression ratio is most important, the compressor attempts a - complete second search regardless of the length of the first match. - In the normal case, if the current match is "long enough", the - compressor reduces the search for a longer match, thus speeding up - the process. If speed is most important, the compressor inserts new - strings in the hash table only when no match was found, or when the - match is not "too long". This degrades the compression ratio but - saves time since there are both fewer insertions and fewer searches. - - - - - -Deutsch Informational [Page 15] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - -5. References - - [1] Huffman, D. A., "A Method for the Construction of Minimum - Redundancy Codes", Proceedings of the Institute of Radio - Engineers, September 1952, Volume 40, Number 9, pp. 1098-1101. - - [2] Ziv J., Lempel A., "A Universal Algorithm for Sequential Data - Compression", IEEE Transactions on Information Theory, Vol. 23, - No. 3, pp. 337-343. - - [3] Gailly, J.-L., and Adler, M., ZLIB documentation and sources, - available in ftp://ftp.uu.net/pub/archiving/zip/doc/ - - [4] Gailly, J.-L., and Adler, M., GZIP documentation and sources, - available as gzip-*.tar in ftp://prep.ai.mit.edu/pub/gnu/ - - [5] Schwartz, E. S., and Kallick, B. "Generating a canonical prefix - encoding." Comm. ACM, 7,3 (Mar. 1964), pp. 166-169. - - [6] Hirschberg and Lelewer, "Efficient decoding of prefix codes," - Comm. ACM, 33,4, April 1990, pp. 449-459. - -6. Security Considerations - - Any data compression method involves the reduction of redundancy in - the data. Consequently, any corruption of the data is likely to have - severe effects and be difficult to correct. Uncompressed text, on - the other hand, will probably still be readable despite the presence - of some corrupted bytes. - - It is recommended that systems using this data format provide some - means of validating the integrity of the compressed data. See - reference [3], for example. - -7. Source code - - Source code for a C language implementation of a "deflate" compliant - compressor and decompressor is available within the zlib package at - ftp://ftp.uu.net/pub/archiving/zip/zlib/. - -8. Acknowledgements - - Trademarks cited in this document are the property of their - respective owners. - - Phil Katz designed the deflate format. Jean-Loup Gailly and Mark - Adler wrote the related software described in this specification. - Glenn Randers-Pehrson converted this document to RFC and HTML format. - - - -Deutsch Informational [Page 16] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - -9. Author's Address - - L. Peter Deutsch - Aladdin Enterprises - 203 Santa Margarita Ave. - Menlo Park, CA 94025 - - Phone: (415) 322-0103 (AM only) - FAX: (415) 322-1734 - EMail: <ghost@aladdin.com> - - Questions about the technical content of this specification can be - sent by email to: - - Jean-Loup Gailly <gzip@prep.ai.mit.edu> and - Mark Adler <madler@alumni.caltech.edu> - - Editorial comments on this specification can be sent by email to: - - L. Peter Deutsch <ghost@aladdin.com> and - Glenn Randers-Pehrson <randeg@alumni.rpi.edu> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Deutsch Informational [Page 17] - diff --git a/platform/win32/msvc/external/zlib/doc/rfc1952.txt b/platform/win32/msvc/external/zlib/doc/rfc1952.txt deleted file mode 100644 index a8e51b4567f..00000000000 --- a/platform/win32/msvc/external/zlib/doc/rfc1952.txt +++ /dev/null @@ -1,675 +0,0 @@ - - - - - - -Network Working Group P. Deutsch -Request for Comments: 1952 Aladdin Enterprises -Category: Informational May 1996 - - - GZIP file format specification version 4.3 - -Status of This Memo - - This memo provides information for the Internet community. This memo - does not specify an Internet standard of any kind. Distribution of - this memo is unlimited. - -IESG Note: - - The IESG takes no position on the validity of any Intellectual - Property Rights statements contained in this document. - -Notices - - Copyright (c) 1996 L. Peter Deutsch - - Permission is granted to copy and distribute this document for any - purpose and without charge, including translations into other - languages and incorporation into compilations, provided that the - copyright notice and this notice are preserved, and that any - substantive changes or deletions from the original are clearly - marked. - - A pointer to the latest version of this and related documentation in - HTML format can be found at the URL - <ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html>. - -Abstract - - This specification defines a lossless compressed data format that is - compatible with the widely used GZIP utility. The format includes a - cyclic redundancy check value for detecting data corruption. The - format presently uses the DEFLATE method of compression but can be - easily extended to use other compression methods. The format can be - implemented readily in a manner not covered by patents. - - - - - - - - - - -Deutsch Informational [Page 1] - -RFC 1952 GZIP File Format Specification May 1996 - - -Table of Contents - - 1. Introduction ................................................... 2 - 1.1. Purpose ................................................... 2 - 1.2. Intended audience ......................................... 3 - 1.3. Scope ..................................................... 3 - 1.4. Compliance ................................................ 3 - 1.5. Definitions of terms and conventions used ................. 3 - 1.6. Changes from previous versions ............................ 3 - 2. Detailed specification ......................................... 4 - 2.1. Overall conventions ....................................... 4 - 2.2. File format ............................................... 5 - 2.3. Member format ............................................. 5 - 2.3.1. Member header and trailer ........................... 6 - 2.3.1.1. Extra field ................................... 8 - 2.3.1.2. Compliance .................................... 9 - 3. References .................................................. 9 - 4. Security Considerations .................................... 10 - 5. Acknowledgements ........................................... 10 - 6. Author's Address ........................................... 10 - 7. Appendix: Jean-Loup Gailly's gzip utility .................. 11 - 8. Appendix: Sample CRC Code .................................. 11 - -1. Introduction - - 1.1. Purpose - - The purpose of this specification is to define a lossless - compressed data format that: - - * Is independent of CPU type, operating system, file system, - and character set, and hence can be used for interchange; - * Can compress or decompress a data stream (as opposed to a - randomly accessible file) to produce another data stream, - using only an a priori bounded amount of intermediate - storage, and hence can be used in data communications or - similar structures such as Unix filters; - * Compresses data with efficiency comparable to the best - currently available general-purpose compression methods, - and in particular considerably better than the "compress" - program; - * Can be implemented readily in a manner not covered by - patents, and hence can be practiced freely; - * Is compatible with the file format produced by the current - widely used gzip utility, in that conforming decompressors - will be able to read data produced by the existing gzip - compressor. - - - - -Deutsch Informational [Page 2] - -RFC 1952 GZIP File Format Specification May 1996 - - - The data format defined by this specification does not attempt to: - - * Provide random access to compressed data; - * Compress specialized data (e.g., raster graphics) as well as - the best currently available specialized algorithms. - - 1.2. Intended audience - - This specification is intended for use by implementors of software - to compress data into gzip format and/or decompress data from gzip - format. - - The text of the specification assumes a basic background in - programming at the level of bits and other primitive data - representations. - - 1.3. Scope - - The specification specifies a compression method and a file format - (the latter assuming only that a file can store a sequence of - arbitrary bytes). It does not specify any particular interface to - a file system or anything about character sets or encodings - (except for file names and comments, which are optional). - - 1.4. Compliance - - Unless otherwise indicated below, a compliant decompressor must be - able to accept and decompress any file that conforms to all the - specifications presented here; a compliant compressor must produce - files that conform to all the specifications presented here. The - material in the appendices is not part of the specification per se - and is not relevant to compliance. - - 1.5. Definitions of terms and conventions used - - byte: 8 bits stored or transmitted as a unit (same as an octet). - (For this specification, a byte is exactly 8 bits, even on - machines which store a character on a number of bits different - from 8.) See below for the numbering of bits within a byte. - - 1.6. Changes from previous versions - - There have been no technical changes to the gzip format since - version 4.1 of this specification. In version 4.2, some - terminology was changed, and the sample CRC code was rewritten for - clarity and to eliminate the requirement for the caller to do pre- - and post-conditioning. Version 4.3 is a conversion of the - specification to RFC style. - - - -Deutsch Informational [Page 3] - -RFC 1952 GZIP File Format Specification May 1996 - - -2. Detailed specification - - 2.1. Overall conventions - - In the diagrams below, a box like this: - - +---+ - | | <-- the vertical bars might be missing - +---+ - - represents one byte; a box like this: - - +==============+ - | | - +==============+ - - represents a variable number of bytes. - - Bytes stored within a computer do not have a "bit order", since - they are always treated as a unit. However, a byte considered as - an integer between 0 and 255 does have a most- and least- - significant bit, and since we write numbers with the most- - significant digit on the left, we also write bytes with the most- - significant bit on the left. In the diagrams below, we number the - bits of a byte so that bit 0 is the least-significant bit, i.e., - the bits are numbered: - - +--------+ - |76543210| - +--------+ - - This document does not address the issue of the order in which - bits of a byte are transmitted on a bit-sequential medium, since - the data format described here is byte- rather than bit-oriented. - - Within a computer, a number may occupy multiple bytes. All - multi-byte numbers in the format described here are stored with - the least-significant byte first (at the lower memory address). - For example, the decimal number 520 is stored as: - - 0 1 - +--------+--------+ - |00001000|00000010| - +--------+--------+ - ^ ^ - | | - | + more significant byte = 2 x 256 - + less significant byte = 8 - - - -Deutsch Informational [Page 4] - -RFC 1952 GZIP File Format Specification May 1996 - - - 2.2. File format - - A gzip file consists of a series of "members" (compressed data - sets). The format of each member is specified in the following - section. The members simply appear one after another in the file, - with no additional information before, between, or after them. - - 2.3. Member format - - Each member has the following structure: - - +---+---+---+---+---+---+---+---+---+---+ - |ID1|ID2|CM |FLG| MTIME |XFL|OS | (more-->) - +---+---+---+---+---+---+---+---+---+---+ - - (if FLG.FEXTRA set) - - +---+---+=================================+ - | XLEN |...XLEN bytes of "extra field"...| (more-->) - +---+---+=================================+ - - (if FLG.FNAME set) - - +=========================================+ - |...original file name, zero-terminated...| (more-->) - +=========================================+ - - (if FLG.FCOMMENT set) - - +===================================+ - |...file comment, zero-terminated...| (more-->) - +===================================+ - - (if FLG.FHCRC set) - - +---+---+ - | CRC16 | - +---+---+ - - +=======================+ - |...compressed blocks...| (more-->) - +=======================+ - - 0 1 2 3 4 5 6 7 - +---+---+---+---+---+---+---+---+ - | CRC32 | ISIZE | - +---+---+---+---+---+---+---+---+ - - - - -Deutsch Informational [Page 5] - -RFC 1952 GZIP File Format Specification May 1996 - - - 2.3.1. Member header and trailer - - ID1 (IDentification 1) - ID2 (IDentification 2) - These have the fixed values ID1 = 31 (0x1f, \037), ID2 = 139 - (0x8b, \213), to identify the file as being in gzip format. - - CM (Compression Method) - This identifies the compression method used in the file. CM - = 0-7 are reserved. CM = 8 denotes the "deflate" - compression method, which is the one customarily used by - gzip and which is documented elsewhere. - - FLG (FLaGs) - This flag byte is divided into individual bits as follows: - - bit 0 FTEXT - bit 1 FHCRC - bit 2 FEXTRA - bit 3 FNAME - bit 4 FCOMMENT - bit 5 reserved - bit 6 reserved - bit 7 reserved - - If FTEXT is set, the file is probably ASCII text. This is - an optional indication, which the compressor may set by - checking a small amount of the input data to see whether any - non-ASCII characters are present. In case of doubt, FTEXT - is cleared, indicating binary data. For systems which have - different file formats for ascii text and binary data, the - decompressor can use FTEXT to choose the appropriate format. - We deliberately do not specify the algorithm used to set - this bit, since a compressor always has the option of - leaving it cleared and a decompressor always has the option - of ignoring it and letting some other program handle issues - of data conversion. - - If FHCRC is set, a CRC16 for the gzip header is present, - immediately before the compressed data. The CRC16 consists - of the two least significant bytes of the CRC32 for all - bytes of the gzip header up to and not including the CRC16. - [The FHCRC bit was never set by versions of gzip up to - 1.2.4, even though it was documented with a different - meaning in gzip 1.2.4.] - - If FEXTRA is set, optional extra fields are present, as - described in a following section. - - - -Deutsch Informational [Page 6] - -RFC 1952 GZIP File Format Specification May 1996 - - - If FNAME is set, an original file name is present, - terminated by a zero byte. The name must consist of ISO - 8859-1 (LATIN-1) characters; on operating systems using - EBCDIC or any other character set for file names, the name - must be translated to the ISO LATIN-1 character set. This - is the original name of the file being compressed, with any - directory components removed, and, if the file being - compressed is on a file system with case insensitive names, - forced to lower case. There is no original file name if the - data was compressed from a source other than a named file; - for example, if the source was stdin on a Unix system, there - is no file name. - - If FCOMMENT is set, a zero-terminated file comment is - present. This comment is not interpreted; it is only - intended for human consumption. The comment must consist of - ISO 8859-1 (LATIN-1) characters. Line breaks should be - denoted by a single line feed character (10 decimal). - - Reserved FLG bits must be zero. - - MTIME (Modification TIME) - This gives the most recent modification time of the original - file being compressed. The time is in Unix format, i.e., - seconds since 00:00:00 GMT, Jan. 1, 1970. (Note that this - may cause problems for MS-DOS and other systems that use - local rather than Universal time.) If the compressed data - did not come from a file, MTIME is set to the time at which - compression started. MTIME = 0 means no time stamp is - available. - - XFL (eXtra FLags) - These flags are available for use by specific compression - methods. The "deflate" method (CM = 8) sets these flags as - follows: - - XFL = 2 - compressor used maximum compression, - slowest algorithm - XFL = 4 - compressor used fastest algorithm - - OS (Operating System) - This identifies the type of file system on which compression - took place. This may be useful in determining end-of-line - convention for text files. The currently defined values are - as follows: - - - - - - -Deutsch Informational [Page 7] - -RFC 1952 GZIP File Format Specification May 1996 - - - 0 - FAT filesystem (MS-DOS, OS/2, NT/Win32) - 1 - Amiga - 2 - VMS (or OpenVMS) - 3 - Unix - 4 - VM/CMS - 5 - Atari TOS - 6 - HPFS filesystem (OS/2, NT) - 7 - Macintosh - 8 - Z-System - 9 - CP/M - 10 - TOPS-20 - 11 - NTFS filesystem (NT) - 12 - QDOS - 13 - Acorn RISCOS - 255 - unknown - - XLEN (eXtra LENgth) - If FLG.FEXTRA is set, this gives the length of the optional - extra field. See below for details. - - CRC32 (CRC-32) - This contains a Cyclic Redundancy Check value of the - uncompressed data computed according to CRC-32 algorithm - used in the ISO 3309 standard and in section 8.1.1.6.2 of - ITU-T recommendation V.42. (See http://www.iso.ch for - ordering ISO documents. See gopher://info.itu.ch for an - online version of ITU-T V.42.) - - ISIZE (Input SIZE) - This contains the size of the original (uncompressed) input - data modulo 2^32. - - 2.3.1.1. Extra field - - If the FLG.FEXTRA bit is set, an "extra field" is present in - the header, with total length XLEN bytes. It consists of a - series of subfields, each of the form: - - +---+---+---+---+==================================+ - |SI1|SI2| LEN |... LEN bytes of subfield data ...| - +---+---+---+---+==================================+ - - SI1 and SI2 provide a subfield ID, typically two ASCII letters - with some mnemonic value. Jean-Loup Gailly - <gzip@prep.ai.mit.edu> is maintaining a registry of subfield - IDs; please send him any subfield ID you wish to use. Subfield - IDs with SI2 = 0 are reserved for future use. The following - IDs are currently defined: - - - -Deutsch Informational [Page 8] - -RFC 1952 GZIP File Format Specification May 1996 - - - SI1 SI2 Data - ---------- ---------- ---- - 0x41 ('A') 0x70 ('P') Apollo file type information - - LEN gives the length of the subfield data, excluding the 4 - initial bytes. - - 2.3.1.2. Compliance - - A compliant compressor must produce files with correct ID1, - ID2, CM, CRC32, and ISIZE, but may set all the other fields in - the fixed-length part of the header to default values (255 for - OS, 0 for all others). The compressor must set all reserved - bits to zero. - - A compliant decompressor must check ID1, ID2, and CM, and - provide an error indication if any of these have incorrect - values. It must examine FEXTRA/XLEN, FNAME, FCOMMENT and FHCRC - at least so it can skip over the optional fields if they are - present. It need not examine any other part of the header or - trailer; in particular, a decompressor may ignore FTEXT and OS - and always produce binary output, and still be compliant. A - compliant decompressor must give an error indication if any - reserved bit is non-zero, since such a bit could indicate the - presence of a new field that would cause subsequent data to be - interpreted incorrectly. - -3. References - - [1] "Information Processing - 8-bit single-byte coded graphic - character sets - Part 1: Latin alphabet No.1" (ISO 8859-1:1987). - The ISO 8859-1 (Latin-1) character set is a superset of 7-bit - ASCII. Files defining this character set are available as - iso_8859-1.* in ftp://ftp.uu.net/graphics/png/documents/ - - [2] ISO 3309 - - [3] ITU-T recommendation V.42 - - [4] Deutsch, L.P.,"DEFLATE Compressed Data Format Specification", - available in ftp://ftp.uu.net/pub/archiving/zip/doc/ - - [5] Gailly, J.-L., GZIP documentation, available as gzip-*.tar in - ftp://prep.ai.mit.edu/pub/gnu/ - - [6] Sarwate, D.V., "Computation of Cyclic Redundancy Checks via Table - Look-Up", Communications of the ACM, 31(8), pp.1008-1013. - - - - -Deutsch Informational [Page 9] - -RFC 1952 GZIP File Format Specification May 1996 - - - [7] Schwaderer, W.D., "CRC Calculation", April 85 PC Tech Journal, - pp.118-133. - - [8] ftp://ftp.adelaide.edu.au/pub/rocksoft/papers/crc_v3.txt, - describing the CRC concept. - -4. Security Considerations - - Any data compression method involves the reduction of redundancy in - the data. Consequently, any corruption of the data is likely to have - severe effects and be difficult to correct. Uncompressed text, on - the other hand, will probably still be readable despite the presence - of some corrupted bytes. - - It is recommended that systems using this data format provide some - means of validating the integrity of the compressed data, such as by - setting and checking the CRC-32 check value. - -5. Acknowledgements - - Trademarks cited in this document are the property of their - respective owners. - - Jean-Loup Gailly designed the gzip format and wrote, with Mark Adler, - the related software described in this specification. Glenn - Randers-Pehrson converted this document to RFC and HTML format. - -6. Author's Address - - L. Peter Deutsch - Aladdin Enterprises - 203 Santa Margarita Ave. - Menlo Park, CA 94025 - - Phone: (415) 322-0103 (AM only) - FAX: (415) 322-1734 - EMail: <ghost@aladdin.com> - - Questions about the technical content of this specification can be - sent by email to: - - Jean-Loup Gailly <gzip@prep.ai.mit.edu> and - Mark Adler <madler@alumni.caltech.edu> - - Editorial comments on this specification can be sent by email to: - - L. Peter Deutsch <ghost@aladdin.com> and - Glenn Randers-Pehrson <randeg@alumni.rpi.edu> - - - -Deutsch Informational [Page 10] - -RFC 1952 GZIP File Format Specification May 1996 - - -7. Appendix: Jean-Loup Gailly's gzip utility - - The most widely used implementation of gzip compression, and the - original documentation on which this specification is based, were - created by Jean-Loup Gailly <gzip@prep.ai.mit.edu>. Since this - implementation is a de facto standard, we mention some more of its - features here. Again, the material in this section is not part of - the specification per se, and implementations need not follow it to - be compliant. - - When compressing or decompressing a file, gzip preserves the - protection, ownership, and modification time attributes on the local - file system, since there is no provision for representing protection - attributes in the gzip file format itself. Since the file format - includes a modification time, the gzip decompressor provides a - command line switch that assigns the modification time from the file, - rather than the local modification time of the compressed input, to - the decompressed output. - -8. Appendix: Sample CRC Code - - The following sample code represents a practical implementation of - the CRC (Cyclic Redundancy Check). (See also ISO 3309 and ITU-T V.42 - for a formal specification.) - - The sample code is in the ANSI C programming language. Non C users - may find it easier to read with these hints: - - & Bitwise AND operator. - ^ Bitwise exclusive-OR operator. - >> Bitwise right shift operator. When applied to an - unsigned quantity, as here, right shift inserts zero - bit(s) at the left. - ! Logical NOT operator. - ++ "n++" increments the variable n. - 0xNNN 0x introduces a hexadecimal (base 16) constant. - Suffix L indicates a long value (at least 32 bits). - - /* Table of CRCs of all 8-bit messages. */ - unsigned long crc_table[256]; - - /* Flag: has the table been computed? Initially false. */ - int crc_table_computed = 0; - - /* Make the table for a fast CRC. */ - void make_crc_table(void) - { - unsigned long c; - - - -Deutsch Informational [Page 11] - -RFC 1952 GZIP File Format Specification May 1996 - - - int n, k; - for (n = 0; n < 256; n++) { - c = (unsigned long) n; - for (k = 0; k < 8; k++) { - if (c & 1) { - c = 0xedb88320L ^ (c >> 1); - } else { - c = c >> 1; - } - } - crc_table[n] = c; - } - crc_table_computed = 1; - } - - /* - Update a running crc with the bytes buf[0..len-1] and return - the updated crc. The crc should be initialized to zero. Pre- and - post-conditioning (one's complement) is performed within this - function so it shouldn't be done by the caller. Usage example: - - unsigned long crc = 0L; - - while (read_buffer(buffer, length) != EOF) { - crc = update_crc(crc, buffer, length); - } - if (crc != original_crc) error(); - */ - unsigned long update_crc(unsigned long crc, - unsigned char *buf, int len) - { - unsigned long c = crc ^ 0xffffffffL; - int n; - - if (!crc_table_computed) - make_crc_table(); - for (n = 0; n < len; n++) { - c = crc_table[(c ^ buf[n]) & 0xff] ^ (c >> 8); - } - return c ^ 0xffffffffL; - } - - /* Return the CRC of the bytes buf[0..len-1]. */ - unsigned long crc(unsigned char *buf, int len) - { - return update_crc(0L, buf, len); - } - - - - -Deutsch Informational [Page 12] - diff --git a/platform/win32/msvc/external/zlib/doc/txtvsbin.txt b/platform/win32/msvc/external/zlib/doc/txtvsbin.txt deleted file mode 100644 index 3d0f0634f72..00000000000 --- a/platform/win32/msvc/external/zlib/doc/txtvsbin.txt +++ /dev/null @@ -1,107 +0,0 @@ -A Fast Method for Identifying Plain Text Files -============================================== - - -Introduction ------------- - -Given a file coming from an unknown source, it is sometimes desirable -to find out whether the format of that file is plain text. Although -this may appear like a simple task, a fully accurate detection of the -file type requires heavy-duty semantic analysis on the file contents. -It is, however, possible to obtain satisfactory results by employing -various heuristics. - -Previous versions of PKZip and other zip-compatible compression tools -were using a crude detection scheme: if more than 80% (4/5) of the bytes -found in a certain buffer are within the range [7..127], the file is -labeled as plain text, otherwise it is labeled as binary. A prominent -limitation of this scheme is the restriction to Latin-based alphabets. -Other alphabets, like Greek, Cyrillic or Asian, make extensive use of -the bytes within the range [128..255], and texts using these alphabets -are most often misidentified by this scheme; in other words, the rate -of false negatives is sometimes too high, which means that the recall -is low. Another weakness of this scheme is a reduced precision, due to -the false positives that may occur when binary files containing large -amounts of textual characters are misidentified as plain text. - -In this article we propose a new, simple detection scheme that features -a much increased precision and a near-100% recall. This scheme is -designed to work on ASCII, Unicode and other ASCII-derived alphabets, -and it handles single-byte encodings (ISO-8859, MacRoman, KOI8, etc.) -and variable-sized encodings (ISO-2022, UTF-8, etc.). Wider encodings -(UCS-2/UTF-16 and UCS-4/UTF-32) are not handled, however. - - -The Algorithm -------------- - -The algorithm works by dividing the set of bytecodes [0..255] into three -categories: -- The white list of textual bytecodes: - 9 (TAB), 10 (LF), 13 (CR), 32 (SPACE) to 255. -- The gray list of tolerated bytecodes: - 7 (BEL), 8 (BS), 11 (VT), 12 (FF), 26 (SUB), 27 (ESC). -- The black list of undesired, non-textual bytecodes: - 0 (NUL) to 6, 14 to 31. - -If a file contains at least one byte that belongs to the white list and -no byte that belongs to the black list, then the file is categorized as -plain text; otherwise, it is categorized as binary. (The boundary case, -when the file is empty, automatically falls into the latter category.) - - -Rationale ---------- - -The idea behind this algorithm relies on two observations. - -The first observation is that, although the full range of 7-bit codes -[0..127] is properly specified by the ASCII standard, most control -characters in the range [0..31] are not used in practice. The only -widely-used, almost universally-portable control codes are 9 (TAB), -10 (LF) and 13 (CR). There are a few more control codes that are -recognized on a reduced range of platforms and text viewers/editors: -7 (BEL), 8 (BS), 11 (VT), 12 (FF), 26 (SUB) and 27 (ESC); but these -codes are rarely (if ever) used alone, without being accompanied by -some printable text. Even the newer, portable text formats such as -XML avoid using control characters outside the list mentioned here. - -The second observation is that most of the binary files tend to contain -control characters, especially 0 (NUL). Even though the older text -detection schemes observe the presence of non-ASCII codes from the range -[128..255], the precision rarely has to suffer if this upper range is -labeled as textual, because the files that are genuinely binary tend to -contain both control characters and codes from the upper range. On the -other hand, the upper range needs to be labeled as textual, because it -is used by virtually all ASCII extensions. In particular, this range is -used for encoding non-Latin scripts. - -Since there is no counting involved, other than simply observing the -presence or the absence of some byte values, the algorithm produces -consistent results, regardless what alphabet encoding is being used. -(If counting were involved, it could be possible to obtain different -results on a text encoded, say, using ISO-8859-16 versus UTF-8.) - -There is an extra category of plain text files that are "polluted" with -one or more black-listed codes, either by mistake or by peculiar design -considerations. In such cases, a scheme that tolerates a small fraction -of black-listed codes would provide an increased recall (i.e. more true -positives). This, however, incurs a reduced precision overall, since -false positives are more likely to appear in binary files that contain -large chunks of textual data. Furthermore, "polluted" plain text should -be regarded as binary by general-purpose text detection schemes, because -general-purpose text processing algorithms might not be applicable. -Under this premise, it is safe to say that our detection method provides -a near-100% recall. - -Experiments have been run on many files coming from various platforms -and applications. We tried plain text files, system logs, source code, -formatted office documents, compiled object code, etc. The results -confirm the optimistic assumptions about the capabilities of this -algorithm. - - --- -Cosmin Truta -Last updated: 2006-May-28 diff --git a/platform/win32/msvc/external/zlib/examples/README.examples b/platform/win32/msvc/external/zlib/examples/README.examples deleted file mode 100644 index 56a31714e56..00000000000 --- a/platform/win32/msvc/external/zlib/examples/README.examples +++ /dev/null @@ -1,49 +0,0 @@ -This directory contains examples of the use of zlib and other relevant -programs and documentation. - -enough.c - calculation and justification of ENOUGH parameter in inftrees.h - - calculates the maximum table space used in inflate tree - construction over all possible Huffman codes - -fitblk.c - compress just enough input to nearly fill a requested output size - - zlib isn't designed to do this, but fitblk does it anyway - -gun.c - uncompress a gzip file - - illustrates the use of inflateBack() for high speed file-to-file - decompression using call-back functions - - is approximately twice as fast as gzip -d - - also provides Unix uncompress functionality, again twice as fast - -gzappend.c - append to a gzip file - - illustrates the use of the Z_BLOCK flush parameter for inflate() - - illustrates the use of deflatePrime() to start at any bit - -gzjoin.c - join gzip files without recalculating the crc or recompressing - - illustrates the use of the Z_BLOCK flush parameter for inflate() - - illustrates the use of crc32_combine() - -gzlog.c -gzlog.h - efficiently and robustly maintain a message log file in gzip format - - illustrates use of raw deflate, Z_PARTIAL_FLUSH, deflatePrime(), - and deflateSetDictionary() - - illustrates use of a gzip header extra field - -zlib_how.html - painfully comprehensive description of zpipe.c (see below) - - describes in excruciating detail the use of deflate() and inflate() - -zpipe.c - reads and writes zlib streams from stdin to stdout - - illustrates the proper use of deflate() and inflate() - - deeply commented in zlib_how.html (see above) - -zran.c - index a zlib or gzip stream and randomly access it - - illustrates the use of Z_BLOCK, inflatePrime(), and - inflateSetDictionary() to provide random access diff --git a/platform/win32/msvc/external/zlib/examples/enough.c b/platform/win32/msvc/external/zlib/examples/enough.c deleted file mode 100644 index b9911443052..00000000000 --- a/platform/win32/msvc/external/zlib/examples/enough.c +++ /dev/null @@ -1,572 +0,0 @@ -/* enough.c -- determine the maximum size of inflate's Huffman code tables over - * all possible valid and complete Huffman codes, subject to a length limit. - * Copyright (C) 2007, 2008, 2012 Mark Adler - * Version 1.4 18 August 2012 Mark Adler - */ - -/* Version history: - 1.0 3 Jan 2007 First version (derived from codecount.c version 1.4) - 1.1 4 Jan 2007 Use faster incremental table usage computation - Prune examine() search on previously visited states - 1.2 5 Jan 2007 Comments clean up - As inflate does, decrease root for short codes - Refuse cases where inflate would increase root - 1.3 17 Feb 2008 Add argument for initial root table size - Fix bug for initial root table size == max - 1 - Use a macro to compute the history index - 1.4 18 Aug 2012 Avoid shifts more than bits in type (caused endless loop!) - Clean up comparisons of different types - Clean up code indentation - */ - -/* - Examine all possible Huffman codes for a given number of symbols and a - maximum code length in bits to determine the maximum table size for zilb's - inflate. Only complete Huffman codes are counted. - - Two codes are considered distinct if the vectors of the number of codes per - length are not identical. So permutations of the symbol assignments result - in the same code for the counting, as do permutations of the assignments of - the bit values to the codes (i.e. only canonical codes are counted). - - We build a code from shorter to longer lengths, determining how many symbols - are coded at each length. At each step, we have how many symbols remain to - be coded, what the last code length used was, and how many bit patterns of - that length remain unused. Then we add one to the code length and double the - number of unused patterns to graduate to the next code length. We then - assign all portions of the remaining symbols to that code length that - preserve the properties of a correct and eventually complete code. Those - properties are: we cannot use more bit patterns than are available; and when - all the symbols are used, there are exactly zero possible bit patterns - remaining. - - The inflate Huffman decoding algorithm uses two-level lookup tables for - speed. There is a single first-level table to decode codes up to root bits - in length (root == 9 in the current inflate implementation). The table - has 1 << root entries and is indexed by the next root bits of input. Codes - shorter than root bits have replicated table entries, so that the correct - entry is pointed to regardless of the bits that follow the short code. If - the code is longer than root bits, then the table entry points to a second- - level table. The size of that table is determined by the longest code with - that root-bit prefix. If that longest code has length len, then the table - has size 1 << (len - root), to index the remaining bits in that set of - codes. Each subsequent root-bit prefix then has its own sub-table. The - total number of table entries required by the code is calculated - incrementally as the number of codes at each bit length is populated. When - all of the codes are shorter than root bits, then root is reduced to the - longest code length, resulting in a single, smaller, one-level table. - - The inflate algorithm also provides for small values of root (relative to - the log2 of the number of symbols), where the shortest code has more bits - than root. In that case, root is increased to the length of the shortest - code. This program, by design, does not handle that case, so it is verified - that the number of symbols is less than 2^(root + 1). - - In order to speed up the examination (by about ten orders of magnitude for - the default arguments), the intermediate states in the build-up of a code - are remembered and previously visited branches are pruned. The memory - required for this will increase rapidly with the total number of symbols and - the maximum code length in bits. However this is a very small price to pay - for the vast speedup. - - First, all of the possible Huffman codes are counted, and reachable - intermediate states are noted by a non-zero count in a saved-results array. - Second, the intermediate states that lead to (root + 1) bit or longer codes - are used to look at all sub-codes from those junctures for their inflate - memory usage. (The amount of memory used is not affected by the number of - codes of root bits or less in length.) Third, the visited states in the - construction of those sub-codes and the associated calculation of the table - size is recalled in order to avoid recalculating from the same juncture. - Beginning the code examination at (root + 1) bit codes, which is enabled by - identifying the reachable nodes, accounts for about six of the orders of - magnitude of improvement for the default arguments. About another four - orders of magnitude come from not revisiting previous states. Out of - approximately 2x10^16 possible Huffman codes, only about 2x10^6 sub-codes - need to be examined to cover all of the possible table memory usage cases - for the default arguments of 286 symbols limited to 15-bit codes. - - Note that an unsigned long long type is used for counting. It is quite easy - to exceed the capacity of an eight-byte integer with a large number of - symbols and a large maximum code length, so multiple-precision arithmetic - would need to replace the unsigned long long arithmetic in that case. This - program will abort if an overflow occurs. The big_t type identifies where - the counting takes place. - - An unsigned long long type is also used for calculating the number of - possible codes remaining at the maximum length. This limits the maximum - code length to the number of bits in a long long minus the number of bits - needed to represent the symbols in a flat code. The code_t type identifies - where the bit pattern counting takes place. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <assert.h> - -#define local static - -/* special data types */ -typedef unsigned long long big_t; /* type for code counting */ -typedef unsigned long long code_t; /* type for bit pattern counting */ -struct tab { /* type for been here check */ - size_t len; /* length of bit vector in char's */ - char *vec; /* allocated bit vector */ -}; - -/* The array for saving results, num[], is indexed with this triplet: - - syms: number of symbols remaining to code - left: number of available bit patterns at length len - len: number of bits in the codes currently being assigned - - Those indices are constrained thusly when saving results: - - syms: 3..totsym (totsym == total symbols to code) - left: 2..syms - 1, but only the evens (so syms == 8 -> 2, 4, 6) - len: 1..max - 1 (max == maximum code length in bits) - - syms == 2 is not saved since that immediately leads to a single code. left - must be even, since it represents the number of available bit patterns at - the current length, which is double the number at the previous length. - left ends at syms-1 since left == syms immediately results in a single code. - (left > sym is not allowed since that would result in an incomplete code.) - len is less than max, since the code completes immediately when len == max. - - The offset into the array is calculated for the three indices with the - first one (syms) being outermost, and the last one (len) being innermost. - We build the array with length max-1 lists for the len index, with syms-3 - of those for each symbol. There are totsym-2 of those, with each one - varying in length as a function of sym. See the calculation of index in - count() for the index, and the calculation of size in main() for the size - of the array. - - For the deflate example of 286 symbols limited to 15-bit codes, the array - has 284,284 entries, taking up 2.17 MB for an 8-byte big_t. More than - half of the space allocated for saved results is actually used -- not all - possible triplets are reached in the generation of valid Huffman codes. - */ - -/* The array for tracking visited states, done[], is itself indexed identically - to the num[] array as described above for the (syms, left, len) triplet. - Each element in the array is further indexed by the (mem, rem) doublet, - where mem is the amount of inflate table space used so far, and rem is the - remaining unused entries in the current inflate sub-table. Each indexed - element is simply one bit indicating whether the state has been visited or - not. Since the ranges for mem and rem are not known a priori, each bit - vector is of a variable size, and grows as needed to accommodate the visited - states. mem and rem are used to calculate a single index in a triangular - array. Since the range of mem is expected in the default case to be about - ten times larger than the range of rem, the array is skewed to reduce the - memory usage, with eight times the range for mem than for rem. See the - calculations for offset and bit in beenhere() for the details. - - For the deflate example of 286 symbols limited to 15-bit codes, the bit - vectors grow to total approximately 21 MB, in addition to the 4.3 MB done[] - array itself. - */ - -/* Globals to avoid propagating constants or constant pointers recursively */ -local int max; /* maximum allowed bit length for the codes */ -local int root; /* size of base code table in bits */ -local int large; /* largest code table so far */ -local size_t size; /* number of elements in num and done */ -local int *code; /* number of symbols assigned to each bit length */ -local big_t *num; /* saved results array for code counting */ -local struct tab *done; /* states already evaluated array */ - -/* Index function for num[] and done[] */ -#define INDEX(i,j,k) (((size_t)((i-1)>>1)*((i-2)>>1)+(j>>1)-1)*(max-1)+k-1) - -/* Free allocated space. Uses globals code, num, and done. */ -local void cleanup(void) -{ - size_t n; - - if (done != NULL) { - for (n = 0; n < size; n++) - if (done[n].len) - free(done[n].vec); - free(done); - } - if (num != NULL) - free(num); - if (code != NULL) - free(code); -} - -/* Return the number of possible Huffman codes using bit patterns of lengths - len through max inclusive, coding syms symbols, with left bit patterns of - length len unused -- return -1 if there is an overflow in the counting. - Keep a record of previous results in num to prevent repeating the same - calculation. Uses the globals max and num. */ -local big_t count(int syms, int len, int left) -{ - big_t sum; /* number of possible codes from this juncture */ - big_t got; /* value returned from count() */ - int least; /* least number of syms to use at this juncture */ - int most; /* most number of syms to use at this juncture */ - int use; /* number of bit patterns to use in next call */ - size_t index; /* index of this case in *num */ - - /* see if only one possible code */ - if (syms == left) - return 1; - - /* note and verify the expected state */ - assert(syms > left && left > 0 && len < max); - - /* see if we've done this one already */ - index = INDEX(syms, left, len); - got = num[index]; - if (got) - return got; /* we have -- return the saved result */ - - /* we need to use at least this many bit patterns so that the code won't be - incomplete at the next length (more bit patterns than symbols) */ - least = (left << 1) - syms; - if (least < 0) - least = 0; - - /* we can use at most this many bit patterns, lest there not be enough - available for the remaining symbols at the maximum length (if there were - no limit to the code length, this would become: most = left - 1) */ - most = (((code_t)left << (max - len)) - syms) / - (((code_t)1 << (max - len)) - 1); - - /* count all possible codes from this juncture and add them up */ - sum = 0; - for (use = least; use <= most; use++) { - got = count(syms - use, len + 1, (left - use) << 1); - sum += got; - if (got == (big_t)0 - 1 || sum < got) /* overflow */ - return (big_t)0 - 1; - } - - /* verify that all recursive calls are productive */ - assert(sum != 0); - - /* save the result and return it */ - num[index] = sum; - return sum; -} - -/* Return true if we've been here before, set to true if not. Set a bit in a - bit vector to indicate visiting this state. Each (syms,len,left) state - has a variable size bit vector indexed by (mem,rem). The bit vector is - lengthened if needed to allow setting the (mem,rem) bit. */ -local int beenhere(int syms, int len, int left, int mem, int rem) -{ - size_t index; /* index for this state's bit vector */ - size_t offset; /* offset in this state's bit vector */ - int bit; /* mask for this state's bit */ - size_t length; /* length of the bit vector in bytes */ - char *vector; /* new or enlarged bit vector */ - - /* point to vector for (syms,left,len), bit in vector for (mem,rem) */ - index = INDEX(syms, left, len); - mem -= 1 << root; - offset = (mem >> 3) + rem; - offset = ((offset * (offset + 1)) >> 1) + rem; - bit = 1 << (mem & 7); - - /* see if we've been here */ - length = done[index].len; - if (offset < length && (done[index].vec[offset] & bit) != 0) - return 1; /* done this! */ - - /* we haven't been here before -- set the bit to show we have now */ - - /* see if we need to lengthen the vector in order to set the bit */ - if (length <= offset) { - /* if we have one already, enlarge it, zero out the appended space */ - if (length) { - do { - length <<= 1; - } while (length <= offset); - vector = realloc(done[index].vec, length); - if (vector != NULL) - memset(vector + done[index].len, 0, length - done[index].len); - } - - /* otherwise we need to make a new vector and zero it out */ - else { - length = 1 << (len - root); - while (length <= offset) - length <<= 1; - vector = calloc(length, sizeof(char)); - } - - /* in either case, bail if we can't get the memory */ - if (vector == NULL) { - fputs("abort: unable to allocate enough memory\n", stderr); - cleanup(); - exit(1); - } - - /* install the new vector */ - done[index].len = length; - done[index].vec = vector; - } - - /* set the bit */ - done[index].vec[offset] |= bit; - return 0; -} - -/* Examine all possible codes from the given node (syms, len, left). Compute - the amount of memory required to build inflate's decoding tables, where the - number of code structures used so far is mem, and the number remaining in - the current sub-table is rem. Uses the globals max, code, root, large, and - done. */ -local void examine(int syms, int len, int left, int mem, int rem) -{ - int least; /* least number of syms to use at this juncture */ - int most; /* most number of syms to use at this juncture */ - int use; /* number of bit patterns to use in next call */ - - /* see if we have a complete code */ - if (syms == left) { - /* set the last code entry */ - code[len] = left; - - /* complete computation of memory used by this code */ - while (rem < left) { - left -= rem; - rem = 1 << (len - root); - mem += rem; - } - assert(rem == left); - - /* if this is a new maximum, show the entries used and the sub-code */ - if (mem > large) { - large = mem; - printf("max %d: ", mem); - for (use = root + 1; use <= max; use++) - if (code[use]) - printf("%d[%d] ", code[use], use); - putchar('\n'); - fflush(stdout); - } - - /* remove entries as we drop back down in the recursion */ - code[len] = 0; - return; - } - - /* prune the tree if we can */ - if (beenhere(syms, len, left, mem, rem)) - return; - - /* we need to use at least this many bit patterns so that the code won't be - incomplete at the next length (more bit patterns than symbols) */ - least = (left << 1) - syms; - if (least < 0) - least = 0; - - /* we can use at most this many bit patterns, lest there not be enough - available for the remaining symbols at the maximum length (if there were - no limit to the code length, this would become: most = left - 1) */ - most = (((code_t)left << (max - len)) - syms) / - (((code_t)1 << (max - len)) - 1); - - /* occupy least table spaces, creating new sub-tables as needed */ - use = least; - while (rem < use) { - use -= rem; - rem = 1 << (len - root); - mem += rem; - } - rem -= use; - - /* examine codes from here, updating table space as we go */ - for (use = least; use <= most; use++) { - code[len] = use; - examine(syms - use, len + 1, (left - use) << 1, - mem + (rem ? 1 << (len - root) : 0), rem << 1); - if (rem == 0) { - rem = 1 << (len - root); - mem += rem; - } - rem--; - } - - /* remove entries as we drop back down in the recursion */ - code[len] = 0; -} - -/* Look at all sub-codes starting with root + 1 bits. Look at only the valid - intermediate code states (syms, left, len). For each completed code, - calculate the amount of memory required by inflate to build the decoding - tables. Find the maximum amount of memory required and show the code that - requires that maximum. Uses the globals max, root, and num. */ -local void enough(int syms) -{ - int n; /* number of remaing symbols for this node */ - int left; /* number of unused bit patterns at this length */ - size_t index; /* index of this case in *num */ - - /* clear code */ - for (n = 0; n <= max; n++) - code[n] = 0; - - /* look at all (root + 1) bit and longer codes */ - large = 1 << root; /* base table */ - if (root < max) /* otherwise, there's only a base table */ - for (n = 3; n <= syms; n++) - for (left = 2; left < n; left += 2) - { - /* look at all reachable (root + 1) bit nodes, and the - resulting codes (complete at root + 2 or more) */ - index = INDEX(n, left, root + 1); - if (root + 1 < max && num[index]) /* reachable node */ - examine(n, root + 1, left, 1 << root, 0); - - /* also look at root bit codes with completions at root + 1 - bits (not saved in num, since complete), just in case */ - if (num[index - 1] && n <= left << 1) - examine((n - left) << 1, root + 1, (n - left) << 1, - 1 << root, 0); - } - - /* done */ - printf("done: maximum of %d table entries\n", large); -} - -/* - Examine and show the total number of possible Huffman codes for a given - maximum number of symbols, initial root table size, and maximum code length - in bits -- those are the command arguments in that order. The default - values are 286, 9, and 15 respectively, for the deflate literal/length code. - The possible codes are counted for each number of coded symbols from two to - the maximum. The counts for each of those and the total number of codes are - shown. The maximum number of inflate table entires is then calculated - across all possible codes. Each new maximum number of table entries and the - associated sub-code (starting at root + 1 == 10 bits) is shown. - - To count and examine Huffman codes that are not length-limited, provide a - maximum length equal to the number of symbols minus one. - - For the deflate literal/length code, use "enough". For the deflate distance - code, use "enough 30 6". - - This uses the %llu printf format to print big_t numbers, which assumes that - big_t is an unsigned long long. If the big_t type is changed (for example - to a multiple precision type), the method of printing will also need to be - updated. - */ -int main(int argc, char **argv) -{ - int syms; /* total number of symbols to code */ - int n; /* number of symbols to code for this run */ - big_t got; /* return value of count() */ - big_t sum; /* accumulated number of codes over n */ - code_t word; /* for counting bits in code_t */ - - /* set up globals for cleanup() */ - code = NULL; - num = NULL; - done = NULL; - - /* get arguments -- default to the deflate literal/length code */ - syms = 286; - root = 9; - max = 15; - if (argc > 1) { - syms = atoi(argv[1]); - if (argc > 2) { - root = atoi(argv[2]); - if (argc > 3) - max = atoi(argv[3]); - } - } - if (argc > 4 || syms < 2 || root < 1 || max < 1) { - fputs("invalid arguments, need: [sym >= 2 [root >= 1 [max >= 1]]]\n", - stderr); - return 1; - } - - /* if not restricting the code length, the longest is syms - 1 */ - if (max > syms - 1) - max = syms - 1; - - /* determine the number of bits in a code_t */ - for (n = 0, word = 1; word; n++, word <<= 1) - ; - - /* make sure that the calculation of most will not overflow */ - if (max > n || (code_t)(syms - 2) >= (((code_t)0 - 1) >> (max - 1))) { - fputs("abort: code length too long for internal types\n", stderr); - return 1; - } - - /* reject impossible code requests */ - if ((code_t)(syms - 1) > ((code_t)1 << max) - 1) { - fprintf(stderr, "%d symbols cannot be coded in %d bits\n", - syms, max); - return 1; - } - - /* allocate code vector */ - code = calloc(max + 1, sizeof(int)); - if (code == NULL) { - fputs("abort: unable to allocate enough memory\n", stderr); - return 1; - } - - /* determine size of saved results array, checking for overflows, - allocate and clear the array (set all to zero with calloc()) */ - if (syms == 2) /* iff max == 1 */ - num = NULL; /* won't be saving any results */ - else { - size = syms >> 1; - if (size > ((size_t)0 - 1) / (n = (syms - 1) >> 1) || - (size *= n, size > ((size_t)0 - 1) / (n = max - 1)) || - (size *= n, size > ((size_t)0 - 1) / sizeof(big_t)) || - (num = calloc(size, sizeof(big_t))) == NULL) { - fputs("abort: unable to allocate enough memory\n", stderr); - cleanup(); - return 1; - } - } - - /* count possible codes for all numbers of symbols, add up counts */ - sum = 0; - for (n = 2; n <= syms; n++) { - got = count(n, 1, 2); - sum += got; - if (got == (big_t)0 - 1 || sum < got) { /* overflow */ - fputs("abort: can't count that high!\n", stderr); - cleanup(); - return 1; - } - printf("%llu %d-codes\n", got, n); - } - printf("%llu total codes for 2 to %d symbols", sum, syms); - if (max < syms - 1) - printf(" (%d-bit length limit)\n", max); - else - puts(" (no length limit)"); - - /* allocate and clear done array for beenhere() */ - if (syms == 2) - done = NULL; - else if (size > ((size_t)0 - 1) / sizeof(struct tab) || - (done = calloc(size, sizeof(struct tab))) == NULL) { - fputs("abort: unable to allocate enough memory\n", stderr); - cleanup(); - return 1; - } - - /* find and show maximum inflate table usage */ - if (root > max) /* reduce root to max length */ - root = max; - if ((code_t)syms < ((code_t)1 << (root + 1))) - enough(syms); - else - puts("cannot handle minimum code lengths > root"); - - /* done */ - cleanup(); - return 0; -} diff --git a/platform/win32/msvc/external/zlib/examples/fitblk.c b/platform/win32/msvc/external/zlib/examples/fitblk.c deleted file mode 100644 index c61de5c9967..00000000000 --- a/platform/win32/msvc/external/zlib/examples/fitblk.c +++ /dev/null @@ -1,233 +0,0 @@ -/* fitblk.c: example of fitting compressed output to a specified size - Not copyrighted -- provided to the public domain - Version 1.1 25 November 2004 Mark Adler */ - -/* Version history: - 1.0 24 Nov 2004 First version - 1.1 25 Nov 2004 Change deflateInit2() to deflateInit() - Use fixed-size, stack-allocated raw buffers - Simplify code moving compression to subroutines - Use assert() for internal errors - Add detailed description of approach - */ - -/* Approach to just fitting a requested compressed size: - - fitblk performs three compression passes on a portion of the input - data in order to determine how much of that input will compress to - nearly the requested output block size. The first pass generates - enough deflate blocks to produce output to fill the requested - output size plus a specfied excess amount (see the EXCESS define - below). The last deflate block may go quite a bit past that, but - is discarded. The second pass decompresses and recompresses just - the compressed data that fit in the requested plus excess sized - buffer. The deflate process is terminated after that amount of - input, which is less than the amount consumed on the first pass. - The last deflate block of the result will be of a comparable size - to the final product, so that the header for that deflate block and - the compression ratio for that block will be about the same as in - the final product. The third compression pass decompresses the - result of the second step, but only the compressed data up to the - requested size minus an amount to allow the compressed stream to - complete (see the MARGIN define below). That will result in a - final compressed stream whose length is less than or equal to the - requested size. Assuming sufficient input and a requested size - greater than a few hundred bytes, the shortfall will typically be - less than ten bytes. - - If the input is short enough that the first compression completes - before filling the requested output size, then that compressed - stream is return with no recompression. - - EXCESS is chosen to be just greater than the shortfall seen in a - two pass approach similar to the above. That shortfall is due to - the last deflate block compressing more efficiently with a smaller - header on the second pass. EXCESS is set to be large enough so - that there is enough uncompressed data for the second pass to fill - out the requested size, and small enough so that the final deflate - block of the second pass will be close in size to the final deflate - block of the third and final pass. MARGIN is chosen to be just - large enough to assure that the final compression has enough room - to complete in all cases. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <assert.h> -#include "zlib.h" - -#define local static - -/* print nastygram and leave */ -local void quit(char *why) -{ - fprintf(stderr, "fitblk abort: %s\n", why); - exit(1); -} - -#define RAWLEN 4096 /* intermediate uncompressed buffer size */ - -/* compress from file to def until provided buffer is full or end of - input reached; return last deflate() return value, or Z_ERRNO if - there was read error on the file */ -local int partcompress(FILE *in, z_streamp def) -{ - int ret, flush; - unsigned char raw[RAWLEN]; - - flush = Z_NO_FLUSH; - do { - def->avail_in = fread(raw, 1, RAWLEN, in); - if (ferror(in)) - return Z_ERRNO; - def->next_in = raw; - if (feof(in)) - flush = Z_FINISH; - ret = deflate(def, flush); - assert(ret != Z_STREAM_ERROR); - } while (def->avail_out != 0 && flush == Z_NO_FLUSH); - return ret; -} - -/* recompress from inf's input to def's output; the input for inf and - the output for def are set in those structures before calling; - return last deflate() return value, or Z_MEM_ERROR if inflate() - was not able to allocate enough memory when it needed to */ -local int recompress(z_streamp inf, z_streamp def) -{ - int ret, flush; - unsigned char raw[RAWLEN]; - - flush = Z_NO_FLUSH; - do { - /* decompress */ - inf->avail_out = RAWLEN; - inf->next_out = raw; - ret = inflate(inf, Z_NO_FLUSH); - assert(ret != Z_STREAM_ERROR && ret != Z_DATA_ERROR && - ret != Z_NEED_DICT); - if (ret == Z_MEM_ERROR) - return ret; - - /* compress what was decompresed until done or no room */ - def->avail_in = RAWLEN - inf->avail_out; - def->next_in = raw; - if (inf->avail_out != 0) - flush = Z_FINISH; - ret = deflate(def, flush); - assert(ret != Z_STREAM_ERROR); - } while (ret != Z_STREAM_END && def->avail_out != 0); - return ret; -} - -#define EXCESS 256 /* empirically determined stream overage */ -#define MARGIN 8 /* amount to back off for completion */ - -/* compress from stdin to fixed-size block on stdout */ -int main(int argc, char **argv) -{ - int ret; /* return code */ - unsigned size; /* requested fixed output block size */ - unsigned have; /* bytes written by deflate() call */ - unsigned char *blk; /* intermediate and final stream */ - unsigned char *tmp; /* close to desired size stream */ - z_stream def, inf; /* zlib deflate and inflate states */ - - /* get requested output size */ - if (argc != 2) - quit("need one argument: size of output block"); - ret = strtol(argv[1], argv + 1, 10); - if (argv[1][0] != 0) - quit("argument must be a number"); - if (ret < 8) /* 8 is minimum zlib stream size */ - quit("need positive size of 8 or greater"); - size = (unsigned)ret; - - /* allocate memory for buffers and compression engine */ - blk = malloc(size + EXCESS); - def.zalloc = Z_NULL; - def.zfree = Z_NULL; - def.opaque = Z_NULL; - ret = deflateInit(&def, Z_DEFAULT_COMPRESSION); - if (ret != Z_OK || blk == NULL) - quit("out of memory"); - - /* compress from stdin until output full, or no more input */ - def.avail_out = size + EXCESS; - def.next_out = blk; - ret = partcompress(stdin, &def); - if (ret == Z_ERRNO) - quit("error reading input"); - - /* if it all fit, then size was undersubscribed -- done! */ - if (ret == Z_STREAM_END && def.avail_out >= EXCESS) { - /* write block to stdout */ - have = size + EXCESS - def.avail_out; - if (fwrite(blk, 1, have, stdout) != have || ferror(stdout)) - quit("error writing output"); - - /* clean up and print results to stderr */ - ret = deflateEnd(&def); - assert(ret != Z_STREAM_ERROR); - free(blk); - fprintf(stderr, - "%u bytes unused out of %u requested (all input)\n", - size - have, size); - return 0; - } - - /* it didn't all fit -- set up for recompression */ - inf.zalloc = Z_NULL; - inf.zfree = Z_NULL; - inf.opaque = Z_NULL; - inf.avail_in = 0; - inf.next_in = Z_NULL; - ret = inflateInit(&inf); - tmp = malloc(size + EXCESS); - if (ret != Z_OK || tmp == NULL) - quit("out of memory"); - ret = deflateReset(&def); - assert(ret != Z_STREAM_ERROR); - - /* do first recompression close to the right amount */ - inf.avail_in = size + EXCESS; - inf.next_in = blk; - def.avail_out = size + EXCESS; - def.next_out = tmp; - ret = recompress(&inf, &def); - if (ret == Z_MEM_ERROR) - quit("out of memory"); - - /* set up for next reocmpression */ - ret = inflateReset(&inf); - assert(ret != Z_STREAM_ERROR); - ret = deflateReset(&def); - assert(ret != Z_STREAM_ERROR); - - /* do second and final recompression (third compression) */ - inf.avail_in = size - MARGIN; /* assure stream will complete */ - inf.next_in = tmp; - def.avail_out = size; - def.next_out = blk; - ret = recompress(&inf, &def); - if (ret == Z_MEM_ERROR) - quit("out of memory"); - assert(ret == Z_STREAM_END); /* otherwise MARGIN too small */ - - /* done -- write block to stdout */ - have = size - def.avail_out; - if (fwrite(blk, 1, have, stdout) != have || ferror(stdout)) - quit("error writing output"); - - /* clean up and print results to stderr */ - free(tmp); - ret = inflateEnd(&inf); - assert(ret != Z_STREAM_ERROR); - ret = deflateEnd(&def); - assert(ret != Z_STREAM_ERROR); - free(blk); - fprintf(stderr, - "%u bytes unused out of %u requested (%lu input)\n", - size - have, size, def.total_in); - return 0; -} diff --git a/platform/win32/msvc/external/zlib/examples/gun.c b/platform/win32/msvc/external/zlib/examples/gun.c deleted file mode 100644 index 89e484fee60..00000000000 --- a/platform/win32/msvc/external/zlib/examples/gun.c +++ /dev/null @@ -1,702 +0,0 @@ -/* gun.c -- simple gunzip to give an example of the use of inflateBack() - * Copyright (C) 2003, 2005, 2008, 2010, 2012 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - Version 1.7 12 August 2012 Mark Adler */ - -/* Version history: - 1.0 16 Feb 2003 First version for testing of inflateBack() - 1.1 21 Feb 2005 Decompress concatenated gzip streams - Remove use of "this" variable (C++ keyword) - Fix return value for in() - Improve allocation failure checking - Add typecasting for void * structures - Add -h option for command version and usage - Add a bunch of comments - 1.2 20 Mar 2005 Add Unix compress (LZW) decompression - Copy file attributes from input file to output file - 1.3 12 Jun 2005 Add casts for error messages [Oberhumer] - 1.4 8 Dec 2006 LZW decompression speed improvements - 1.5 9 Feb 2008 Avoid warning in latest version of gcc - 1.6 17 Jan 2010 Avoid signed/unsigned comparison warnings - 1.7 12 Aug 2012 Update for z_const usage in zlib 1.2.8 - */ - -/* - gun [ -t ] [ name ... ] - - decompresses the data in the named gzip files. If no arguments are given, - gun will decompress from stdin to stdout. The names must end in .gz, -gz, - .z, -z, _z, or .Z. The uncompressed data will be written to a file name - with the suffix stripped. On success, the original file is deleted. On - failure, the output file is deleted. For most failures, the command will - continue to process the remaining names on the command line. A memory - allocation failure will abort the command. If -t is specified, then the - listed files or stdin will be tested as gzip files for integrity (without - checking for a proper suffix), no output will be written, and no files - will be deleted. - - Like gzip, gun allows concatenated gzip streams and will decompress them, - writing all of the uncompressed data to the output. Unlike gzip, gun allows - an empty file on input, and will produce no error writing an empty output - file. - - gun will also decompress files made by Unix compress, which uses LZW - compression. These files are automatically detected by virtue of their - magic header bytes. Since the end of Unix compress stream is marked by the - end-of-file, they cannot be concantenated. If a Unix compress stream is - encountered in an input file, it is the last stream in that file. - - Like gunzip and uncompress, the file attributes of the orignal compressed - file are maintained in the final uncompressed file, to the extent that the - user permissions allow it. - - On my Mac OS X PowerPC G4, gun is almost twice as fast as gunzip (version - 1.2.4) is on the same file, when gun is linked with zlib 1.2.2. Also the - LZW decompression provided by gun is about twice as fast as the standard - Unix uncompress command. - */ - -/* external functions and related types and constants */ -#include <stdio.h> /* fprintf() */ -#include <stdlib.h> /* malloc(), free() */ -#include <string.h> /* strerror(), strcmp(), strlen(), memcpy() */ -#include <errno.h> /* errno */ -#include <fcntl.h> /* open() */ -#include <unistd.h> /* read(), write(), close(), chown(), unlink() */ -#include <sys/types.h> -#include <sys/stat.h> /* stat(), chmod() */ -#include <utime.h> /* utime() */ -#include "zlib.h" /* inflateBackInit(), inflateBack(), */ - /* inflateBackEnd(), crc32() */ - -/* function declaration */ -#define local static - -/* buffer constants */ -#define SIZE 32768U /* input and output buffer sizes */ -#define PIECE 16384 /* limits i/o chunks for 16-bit int case */ - -/* structure for infback() to pass to input function in() -- it maintains the - input file and a buffer of size SIZE */ -struct ind { - int infile; - unsigned char *inbuf; -}; - -/* Load input buffer, assumed to be empty, and return bytes loaded and a - pointer to them. read() is called until the buffer is full, or until it - returns end-of-file or error. Return 0 on error. */ -local unsigned in(void *in_desc, z_const unsigned char **buf) -{ - int ret; - unsigned len; - unsigned char *next; - struct ind *me = (struct ind *)in_desc; - - next = me->inbuf; - *buf = next; - len = 0; - do { - ret = PIECE; - if ((unsigned)ret > SIZE - len) - ret = (int)(SIZE - len); - ret = (int)read(me->infile, next, ret); - if (ret == -1) { - len = 0; - break; - } - next += ret; - len += ret; - } while (ret != 0 && len < SIZE); - return len; -} - -/* structure for infback() to pass to output function out() -- it maintains the - output file, a running CRC-32 check on the output and the total number of - bytes output, both for checking against the gzip trailer. (The length in - the gzip trailer is stored modulo 2^32, so it's ok if a long is 32 bits and - the output is greater than 4 GB.) */ -struct outd { - int outfile; - int check; /* true if checking crc and total */ - unsigned long crc; - unsigned long total; -}; - -/* Write output buffer and update the CRC-32 and total bytes written. write() - is called until all of the output is written or an error is encountered. - On success out() returns 0. For a write failure, out() returns 1. If the - output file descriptor is -1, then nothing is written. - */ -local int out(void *out_desc, unsigned char *buf, unsigned len) -{ - int ret; - struct outd *me = (struct outd *)out_desc; - - if (me->check) { - me->crc = crc32(me->crc, buf, len); - me->total += len; - } - if (me->outfile != -1) - do { - ret = PIECE; - if ((unsigned)ret > len) - ret = (int)len; - ret = (int)write(me->outfile, buf, ret); - if (ret == -1) - return 1; - buf += ret; - len -= ret; - } while (len != 0); - return 0; -} - -/* next input byte macro for use inside lunpipe() and gunpipe() */ -#define NEXT() (have ? 0 : (have = in(indp, &next)), \ - last = have ? (have--, (int)(*next++)) : -1) - -/* memory for gunpipe() and lunpipe() -- - the first 256 entries of prefix[] and suffix[] are never used, could - have offset the index, but it's faster to waste the memory */ -unsigned char inbuf[SIZE]; /* input buffer */ -unsigned char outbuf[SIZE]; /* output buffer */ -unsigned short prefix[65536]; /* index to LZW prefix string */ -unsigned char suffix[65536]; /* one-character LZW suffix */ -unsigned char match[65280 + 2]; /* buffer for reversed match or gzip - 32K sliding window */ - -/* throw out what's left in the current bits byte buffer (this is a vestigial - aspect of the compressed data format derived from an implementation that - made use of a special VAX machine instruction!) */ -#define FLUSHCODE() \ - do { \ - left = 0; \ - rem = 0; \ - if (chunk > have) { \ - chunk -= have; \ - have = 0; \ - if (NEXT() == -1) \ - break; \ - chunk--; \ - if (chunk > have) { \ - chunk = have = 0; \ - break; \ - } \ - } \ - have -= chunk; \ - next += chunk; \ - chunk = 0; \ - } while (0) - -/* Decompress a compress (LZW) file from indp to outfile. The compress magic - header (two bytes) has already been read and verified. There are have bytes - of buffered input at next. strm is used for passing error information back - to gunpipe(). - - lunpipe() will return Z_OK on success, Z_BUF_ERROR for an unexpected end of - file, read error, or write error (a write error indicated by strm->next_in - not equal to Z_NULL), or Z_DATA_ERROR for invalid input. - */ -local int lunpipe(unsigned have, z_const unsigned char *next, struct ind *indp, - int outfile, z_stream *strm) -{ - int last; /* last byte read by NEXT(), or -1 if EOF */ - unsigned chunk; /* bytes left in current chunk */ - int left; /* bits left in rem */ - unsigned rem; /* unused bits from input */ - int bits; /* current bits per code */ - unsigned code; /* code, table traversal index */ - unsigned mask; /* mask for current bits codes */ - int max; /* maximum bits per code for this stream */ - unsigned flags; /* compress flags, then block compress flag */ - unsigned end; /* last valid entry in prefix/suffix tables */ - unsigned temp; /* current code */ - unsigned prev; /* previous code */ - unsigned final; /* last character written for previous code */ - unsigned stack; /* next position for reversed string */ - unsigned outcnt; /* bytes in output buffer */ - struct outd outd; /* output structure */ - unsigned char *p; - - /* set up output */ - outd.outfile = outfile; - outd.check = 0; - - /* process remainder of compress header -- a flags byte */ - flags = NEXT(); - if (last == -1) - return Z_BUF_ERROR; - if (flags & 0x60) { - strm->msg = (char *)"unknown lzw flags set"; - return Z_DATA_ERROR; - } - max = flags & 0x1f; - if (max < 9 || max > 16) { - strm->msg = (char *)"lzw bits out of range"; - return Z_DATA_ERROR; - } - if (max == 9) /* 9 doesn't really mean 9 */ - max = 10; - flags &= 0x80; /* true if block compress */ - - /* clear table */ - bits = 9; - mask = 0x1ff; - end = flags ? 256 : 255; - - /* set up: get first 9-bit code, which is the first decompressed byte, but - don't create a table entry until the next code */ - if (NEXT() == -1) /* no compressed data is ok */ - return Z_OK; - final = prev = (unsigned)last; /* low 8 bits of code */ - if (NEXT() == -1) /* missing a bit */ - return Z_BUF_ERROR; - if (last & 1) { /* code must be < 256 */ - strm->msg = (char *)"invalid lzw code"; - return Z_DATA_ERROR; - } - rem = (unsigned)last >> 1; /* remaining 7 bits */ - left = 7; - chunk = bits - 2; /* 7 bytes left in this chunk */ - outbuf[0] = (unsigned char)final; /* write first decompressed byte */ - outcnt = 1; - - /* decode codes */ - stack = 0; - for (;;) { - /* if the table will be full after this, increment the code size */ - if (end >= mask && bits < max) { - FLUSHCODE(); - bits++; - mask <<= 1; - mask++; - } - - /* get a code of length bits */ - if (chunk == 0) /* decrement chunk modulo bits */ - chunk = bits; - code = rem; /* low bits of code */ - if (NEXT() == -1) { /* EOF is end of compressed data */ - /* write remaining buffered output */ - if (outcnt && out(&outd, outbuf, outcnt)) { - strm->next_in = outbuf; /* signal write error */ - return Z_BUF_ERROR; - } - return Z_OK; - } - code += (unsigned)last << left; /* middle (or high) bits of code */ - left += 8; - chunk--; - if (bits > left) { /* need more bits */ - if (NEXT() == -1) /* can't end in middle of code */ - return Z_BUF_ERROR; - code += (unsigned)last << left; /* high bits of code */ - left += 8; - chunk--; - } - code &= mask; /* mask to current code length */ - left -= bits; /* number of unused bits */ - rem = (unsigned)last >> (8 - left); /* unused bits from last byte */ - - /* process clear code (256) */ - if (code == 256 && flags) { - FLUSHCODE(); - bits = 9; /* initialize bits and mask */ - mask = 0x1ff; - end = 255; /* empty table */ - continue; /* get next code */ - } - - /* special code to reuse last match */ - temp = code; /* save the current code */ - if (code > end) { - /* Be picky on the allowed code here, and make sure that the code - we drop through (prev) will be a valid index so that random - input does not cause an exception. The code != end + 1 check is - empirically derived, and not checked in the original uncompress - code. If this ever causes a problem, that check could be safely - removed. Leaving this check in greatly improves gun's ability - to detect random or corrupted input after a compress header. - In any case, the prev > end check must be retained. */ - if (code != end + 1 || prev > end) { - strm->msg = (char *)"invalid lzw code"; - return Z_DATA_ERROR; - } - match[stack++] = (unsigned char)final; - code = prev; - } - - /* walk through linked list to generate output in reverse order */ - p = match + stack; - while (code >= 256) { - *p++ = suffix[code]; - code = prefix[code]; - } - stack = p - match; - match[stack++] = (unsigned char)code; - final = code; - - /* link new table entry */ - if (end < mask) { - end++; - prefix[end] = (unsigned short)prev; - suffix[end] = (unsigned char)final; - } - - /* set previous code for next iteration */ - prev = temp; - - /* write output in forward order */ - while (stack > SIZE - outcnt) { - while (outcnt < SIZE) - outbuf[outcnt++] = match[--stack]; - if (out(&outd, outbuf, outcnt)) { - strm->next_in = outbuf; /* signal write error */ - return Z_BUF_ERROR; - } - outcnt = 0; - } - p = match + stack; - do { - outbuf[outcnt++] = *--p; - } while (p > match); - stack = 0; - - /* loop for next code with final and prev as the last match, rem and - left provide the first 0..7 bits of the next code, end is the last - valid table entry */ - } -} - -/* Decompress a gzip file from infile to outfile. strm is assumed to have been - successfully initialized with inflateBackInit(). The input file may consist - of a series of gzip streams, in which case all of them will be decompressed - to the output file. If outfile is -1, then the gzip stream(s) integrity is - checked and nothing is written. - - The return value is a zlib error code: Z_MEM_ERROR if out of memory, - Z_DATA_ERROR if the header or the compressed data is invalid, or if the - trailer CRC-32 check or length doesn't match, Z_BUF_ERROR if the input ends - prematurely or a write error occurs, or Z_ERRNO if junk (not a another gzip - stream) follows a valid gzip stream. - */ -local int gunpipe(z_stream *strm, int infile, int outfile) -{ - int ret, first, last; - unsigned have, flags, len; - z_const unsigned char *next = NULL; - struct ind ind, *indp; - struct outd outd; - - /* setup input buffer */ - ind.infile = infile; - ind.inbuf = inbuf; - indp = &ind; - - /* decompress concatenated gzip streams */ - have = 0; /* no input data read in yet */ - first = 1; /* looking for first gzip header */ - strm->next_in = Z_NULL; /* so Z_BUF_ERROR means EOF */ - for (;;) { - /* look for the two magic header bytes for a gzip stream */ - if (NEXT() == -1) { - ret = Z_OK; - break; /* empty gzip stream is ok */ - } - if (last != 31 || (NEXT() != 139 && last != 157)) { - strm->msg = (char *)"incorrect header check"; - ret = first ? Z_DATA_ERROR : Z_ERRNO; - break; /* not a gzip or compress header */ - } - first = 0; /* next non-header is junk */ - - /* process a compress (LZW) file -- can't be concatenated after this */ - if (last == 157) { - ret = lunpipe(have, next, indp, outfile, strm); - break; - } - - /* process remainder of gzip header */ - ret = Z_BUF_ERROR; - if (NEXT() != 8) { /* only deflate method allowed */ - if (last == -1) break; - strm->msg = (char *)"unknown compression method"; - ret = Z_DATA_ERROR; - break; - } - flags = NEXT(); /* header flags */ - NEXT(); /* discard mod time, xflgs, os */ - NEXT(); - NEXT(); - NEXT(); - NEXT(); - NEXT(); - if (last == -1) break; - if (flags & 0xe0) { - strm->msg = (char *)"unknown header flags set"; - ret = Z_DATA_ERROR; - break; - } - if (flags & 4) { /* extra field */ - len = NEXT(); - len += (unsigned)(NEXT()) << 8; - if (last == -1) break; - while (len > have) { - len -= have; - have = 0; - if (NEXT() == -1) break; - len--; - } - if (last == -1) break; - have -= len; - next += len; - } - if (flags & 8) /* file name */ - while (NEXT() != 0 && last != -1) - ; - if (flags & 16) /* comment */ - while (NEXT() != 0 && last != -1) - ; - if (flags & 2) { /* header crc */ - NEXT(); - NEXT(); - } - if (last == -1) break; - - /* set up output */ - outd.outfile = outfile; - outd.check = 1; - outd.crc = crc32(0L, Z_NULL, 0); - outd.total = 0; - - /* decompress data to output */ - strm->next_in = next; - strm->avail_in = have; - ret = inflateBack(strm, in, indp, out, &outd); - if (ret != Z_STREAM_END) break; - next = strm->next_in; - have = strm->avail_in; - strm->next_in = Z_NULL; /* so Z_BUF_ERROR means EOF */ - - /* check trailer */ - ret = Z_BUF_ERROR; - if (NEXT() != (int)(outd.crc & 0xff) || - NEXT() != (int)((outd.crc >> 8) & 0xff) || - NEXT() != (int)((outd.crc >> 16) & 0xff) || - NEXT() != (int)((outd.crc >> 24) & 0xff)) { - /* crc error */ - if (last != -1) { - strm->msg = (char *)"incorrect data check"; - ret = Z_DATA_ERROR; - } - break; - } - if (NEXT() != (int)(outd.total & 0xff) || - NEXT() != (int)((outd.total >> 8) & 0xff) || - NEXT() != (int)((outd.total >> 16) & 0xff) || - NEXT() != (int)((outd.total >> 24) & 0xff)) { - /* length error */ - if (last != -1) { - strm->msg = (char *)"incorrect length check"; - ret = Z_DATA_ERROR; - } - break; - } - - /* go back and look for another gzip stream */ - } - - /* clean up and return */ - return ret; -} - -/* Copy file attributes, from -> to, as best we can. This is best effort, so - no errors are reported. The mode bits, including suid, sgid, and the sticky - bit are copied (if allowed), the owner's user id and group id are copied - (again if allowed), and the access and modify times are copied. */ -local void copymeta(char *from, char *to) -{ - struct stat was; - struct utimbuf when; - - /* get all of from's Unix meta data, return if not a regular file */ - if (stat(from, &was) != 0 || (was.st_mode & S_IFMT) != S_IFREG) - return; - - /* set to's mode bits, ignore errors */ - (void)chmod(to, was.st_mode & 07777); - - /* copy owner's user and group, ignore errors */ - (void)chown(to, was.st_uid, was.st_gid); - - /* copy access and modify times, ignore errors */ - when.actime = was.st_atime; - when.modtime = was.st_mtime; - (void)utime(to, &when); -} - -/* Decompress the file inname to the file outnname, of if test is true, just - decompress without writing and check the gzip trailer for integrity. If - inname is NULL or an empty string, read from stdin. If outname is NULL or - an empty string, write to stdout. strm is a pre-initialized inflateBack - structure. When appropriate, copy the file attributes from inname to - outname. - - gunzip() returns 1 if there is an out-of-memory error or an unexpected - return code from gunpipe(). Otherwise it returns 0. - */ -local int gunzip(z_stream *strm, char *inname, char *outname, int test) -{ - int ret; - int infile, outfile; - - /* open files */ - if (inname == NULL || *inname == 0) { - inname = "-"; - infile = 0; /* stdin */ - } - else { - infile = open(inname, O_RDONLY, 0); - if (infile == -1) { - fprintf(stderr, "gun cannot open %s\n", inname); - return 0; - } - } - if (test) - outfile = -1; - else if (outname == NULL || *outname == 0) { - outname = "-"; - outfile = 1; /* stdout */ - } - else { - outfile = open(outname, O_CREAT | O_TRUNC | O_WRONLY, 0666); - if (outfile == -1) { - close(infile); - fprintf(stderr, "gun cannot create %s\n", outname); - return 0; - } - } - errno = 0; - - /* decompress */ - ret = gunpipe(strm, infile, outfile); - if (outfile > 2) close(outfile); - if (infile > 2) close(infile); - - /* interpret result */ - switch (ret) { - case Z_OK: - case Z_ERRNO: - if (infile > 2 && outfile > 2) { - copymeta(inname, outname); /* copy attributes */ - unlink(inname); - } - if (ret == Z_ERRNO) - fprintf(stderr, "gun warning: trailing garbage ignored in %s\n", - inname); - break; - case Z_DATA_ERROR: - if (outfile > 2) unlink(outname); - fprintf(stderr, "gun data error on %s: %s\n", inname, strm->msg); - break; - case Z_MEM_ERROR: - if (outfile > 2) unlink(outname); - fprintf(stderr, "gun out of memory error--aborting\n"); - return 1; - case Z_BUF_ERROR: - if (outfile > 2) unlink(outname); - if (strm->next_in != Z_NULL) { - fprintf(stderr, "gun write error on %s: %s\n", - outname, strerror(errno)); - } - else if (errno) { - fprintf(stderr, "gun read error on %s: %s\n", - inname, strerror(errno)); - } - else { - fprintf(stderr, "gun unexpected end of file on %s\n", - inname); - } - break; - default: - if (outfile > 2) unlink(outname); - fprintf(stderr, "gun internal error--aborting\n"); - return 1; - } - return 0; -} - -/* Process the gun command line arguments. See the command syntax near the - beginning of this source file. */ -int main(int argc, char **argv) -{ - int ret, len, test; - char *outname; - unsigned char *window; - z_stream strm; - - /* initialize inflateBack state for repeated use */ - window = match; /* reuse LZW match buffer */ - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - ret = inflateBackInit(&strm, 15, window); - if (ret != Z_OK) { - fprintf(stderr, "gun out of memory error--aborting\n"); - return 1; - } - - /* decompress each file to the same name with the suffix removed */ - argc--; - argv++; - test = 0; - if (argc && strcmp(*argv, "-h") == 0) { - fprintf(stderr, "gun 1.6 (17 Jan 2010)\n"); - fprintf(stderr, "Copyright (C) 2003-2010 Mark Adler\n"); - fprintf(stderr, "usage: gun [-t] [file1.gz [file2.Z ...]]\n"); - return 0; - } - if (argc && strcmp(*argv, "-t") == 0) { - test = 1; - argc--; - argv++; - } - if (argc) - do { - if (test) - outname = NULL; - else { - len = (int)strlen(*argv); - if (strcmp(*argv + len - 3, ".gz") == 0 || - strcmp(*argv + len - 3, "-gz") == 0) - len -= 3; - else if (strcmp(*argv + len - 2, ".z") == 0 || - strcmp(*argv + len - 2, "-z") == 0 || - strcmp(*argv + len - 2, "_z") == 0 || - strcmp(*argv + len - 2, ".Z") == 0) - len -= 2; - else { - fprintf(stderr, "gun error: no gz type on %s--skipping\n", - *argv); - continue; - } - outname = malloc(len + 1); - if (outname == NULL) { - fprintf(stderr, "gun out of memory error--aborting\n"); - ret = 1; - break; - } - memcpy(outname, *argv, len); - outname[len] = 0; - } - ret = gunzip(&strm, *argv, outname, test); - if (outname != NULL) free(outname); - if (ret) break; - } while (argv++, --argc); - else - ret = gunzip(&strm, NULL, NULL, test); - - /* clean up */ - inflateBackEnd(&strm); - return ret; -} diff --git a/platform/win32/msvc/external/zlib/examples/gzappend.c b/platform/win32/msvc/external/zlib/examples/gzappend.c deleted file mode 100644 index 662dec3794b..00000000000 --- a/platform/win32/msvc/external/zlib/examples/gzappend.c +++ /dev/null @@ -1,504 +0,0 @@ -/* gzappend -- command to append to a gzip file - - Copyright (C) 2003, 2012 Mark Adler, all rights reserved - version 1.2, 11 Oct 2012 - - This software is provided 'as-is', without any express or implied - warranty. In no event will the author be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Mark Adler madler@alumni.caltech.edu - */ - -/* - * Change history: - * - * 1.0 19 Oct 2003 - First version - * 1.1 4 Nov 2003 - Expand and clarify some comments and notes - * - Add version and copyright to help - * - Send help to stdout instead of stderr - * - Add some preemptive typecasts - * - Add L to constants in lseek() calls - * - Remove some debugging information in error messages - * - Use new data_type definition for zlib 1.2.1 - * - Simplfy and unify file operations - * - Finish off gzip file in gztack() - * - Use deflatePrime() instead of adding empty blocks - * - Keep gzip file clean on appended file read errors - * - Use in-place rotate instead of auxiliary buffer - * (Why you ask? Because it was fun to write!) - * 1.2 11 Oct 2012 - Fix for proper z_const usage - * - Check for input buffer malloc failure - */ - -/* - gzappend takes a gzip file and appends to it, compressing files from the - command line or data from stdin. The gzip file is written to directly, to - avoid copying that file, in case it's large. Note that this results in the - unfriendly behavior that if gzappend fails, the gzip file is corrupted. - - This program was written to illustrate the use of the new Z_BLOCK option of - zlib 1.2.x's inflate() function. This option returns from inflate() at each - block boundary to facilitate locating and modifying the last block bit at - the start of the final deflate block. Also whether using Z_BLOCK or not, - another required feature of zlib 1.2.x is that inflate() now provides the - number of unusued bits in the last input byte used. gzappend will not work - with versions of zlib earlier than 1.2.1. - - gzappend first decompresses the gzip file internally, discarding all but - the last 32K of uncompressed data, and noting the location of the last block - bit and the number of unused bits in the last byte of the compressed data. - The gzip trailer containing the CRC-32 and length of the uncompressed data - is verified. This trailer will be later overwritten. - - Then the last block bit is cleared by seeking back in the file and rewriting - the byte that contains it. Seeking forward, the last byte of the compressed - data is saved along with the number of unused bits to initialize deflate. - - A deflate process is initialized, using the last 32K of the uncompressed - data from the gzip file to initialize the dictionary. If the total - uncompressed data was less than 32K, then all of it is used to initialize - the dictionary. The deflate output bit buffer is also initialized with the - last bits from the original deflate stream. From here on, the data to - append is simply compressed using deflate, and written to the gzip file. - When that is complete, the new CRC-32 and uncompressed length are written - as the trailer of the gzip file. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <fcntl.h> -#include <unistd.h> -#include "zlib.h" - -#define local static -#define LGCHUNK 14 -#define CHUNK (1U << LGCHUNK) -#define DSIZE 32768U - -/* print an error message and terminate with extreme prejudice */ -local void bye(char *msg1, char *msg2) -{ - fprintf(stderr, "gzappend error: %s%s\n", msg1, msg2); - exit(1); -} - -/* return the greatest common divisor of a and b using Euclid's algorithm, - modified to be fast when one argument much greater than the other, and - coded to avoid unnecessary swapping */ -local unsigned gcd(unsigned a, unsigned b) -{ - unsigned c; - - while (a && b) - if (a > b) { - c = b; - while (a - c >= c) - c <<= 1; - a -= c; - } - else { - c = a; - while (b - c >= c) - c <<= 1; - b -= c; - } - return a + b; -} - -/* rotate list[0..len-1] left by rot positions, in place */ -local void rotate(unsigned char *list, unsigned len, unsigned rot) -{ - unsigned char tmp; - unsigned cycles; - unsigned char *start, *last, *to, *from; - - /* normalize rot and handle degenerate cases */ - if (len < 2) return; - if (rot >= len) rot %= len; - if (rot == 0) return; - - /* pointer to last entry in list */ - last = list + (len - 1); - - /* do simple left shift by one */ - if (rot == 1) { - tmp = *list; - memcpy(list, list + 1, len - 1); - *last = tmp; - return; - } - - /* do simple right shift by one */ - if (rot == len - 1) { - tmp = *last; - memmove(list + 1, list, len - 1); - *list = tmp; - return; - } - - /* otherwise do rotate as a set of cycles in place */ - cycles = gcd(len, rot); /* number of cycles */ - do { - start = from = list + cycles; /* start index is arbitrary */ - tmp = *from; /* save entry to be overwritten */ - for (;;) { - to = from; /* next step in cycle */ - from += rot; /* go right rot positions */ - if (from > last) from -= len; /* (pointer better not wrap) */ - if (from == start) break; /* all but one shifted */ - *to = *from; /* shift left */ - } - *to = tmp; /* complete the circle */ - } while (--cycles); -} - -/* structure for gzip file read operations */ -typedef struct { - int fd; /* file descriptor */ - int size; /* 1 << size is bytes in buf */ - unsigned left; /* bytes available at next */ - unsigned char *buf; /* buffer */ - z_const unsigned char *next; /* next byte in buffer */ - char *name; /* file name for error messages */ -} file; - -/* reload buffer */ -local int readin(file *in) -{ - int len; - - len = read(in->fd, in->buf, 1 << in->size); - if (len == -1) bye("error reading ", in->name); - in->left = (unsigned)len; - in->next = in->buf; - return len; -} - -/* read from file in, exit if end-of-file */ -local int readmore(file *in) -{ - if (readin(in) == 0) bye("unexpected end of ", in->name); - return 0; -} - -#define read1(in) (in->left == 0 ? readmore(in) : 0, \ - in->left--, *(in->next)++) - -/* skip over n bytes of in */ -local void skip(file *in, unsigned n) -{ - unsigned bypass; - - if (n > in->left) { - n -= in->left; - bypass = n & ~((1U << in->size) - 1); - if (bypass) { - if (lseek(in->fd, (off_t)bypass, SEEK_CUR) == -1) - bye("seeking ", in->name); - n -= bypass; - } - readmore(in); - if (n > in->left) - bye("unexpected end of ", in->name); - } - in->left -= n; - in->next += n; -} - -/* read a four-byte unsigned integer, little-endian, from in */ -unsigned long read4(file *in) -{ - unsigned long val; - - val = read1(in); - val += (unsigned)read1(in) << 8; - val += (unsigned long)read1(in) << 16; - val += (unsigned long)read1(in) << 24; - return val; -} - -/* skip over gzip header */ -local void gzheader(file *in) -{ - int flags; - unsigned n; - - if (read1(in) != 31 || read1(in) != 139) bye(in->name, " not a gzip file"); - if (read1(in) != 8) bye("unknown compression method in", in->name); - flags = read1(in); - if (flags & 0xe0) bye("unknown header flags set in", in->name); - skip(in, 6); - if (flags & 4) { - n = read1(in); - n += (unsigned)(read1(in)) << 8; - skip(in, n); - } - if (flags & 8) while (read1(in) != 0) ; - if (flags & 16) while (read1(in) != 0) ; - if (flags & 2) skip(in, 2); -} - -/* decompress gzip file "name", return strm with a deflate stream ready to - continue compression of the data in the gzip file, and return a file - descriptor pointing to where to write the compressed data -- the deflate - stream is initialized to compress using level "level" */ -local int gzscan(char *name, z_stream *strm, int level) -{ - int ret, lastbit, left, full; - unsigned have; - unsigned long crc, tot; - unsigned char *window; - off_t lastoff, end; - file gz; - - /* open gzip file */ - gz.name = name; - gz.fd = open(name, O_RDWR, 0); - if (gz.fd == -1) bye("cannot open ", name); - gz.buf = malloc(CHUNK); - if (gz.buf == NULL) bye("out of memory", ""); - gz.size = LGCHUNK; - gz.left = 0; - - /* skip gzip header */ - gzheader(&gz); - - /* prepare to decompress */ - window = malloc(DSIZE); - if (window == NULL) bye("out of memory", ""); - strm->zalloc = Z_NULL; - strm->zfree = Z_NULL; - strm->opaque = Z_NULL; - ret = inflateInit2(strm, -15); - if (ret != Z_OK) bye("out of memory", " or library mismatch"); - - /* decompress the deflate stream, saving append information */ - lastbit = 0; - lastoff = lseek(gz.fd, 0L, SEEK_CUR) - gz.left; - left = 0; - strm->avail_in = gz.left; - strm->next_in = gz.next; - crc = crc32(0L, Z_NULL, 0); - have = full = 0; - do { - /* if needed, get more input */ - if (strm->avail_in == 0) { - readmore(&gz); - strm->avail_in = gz.left; - strm->next_in = gz.next; - } - - /* set up output to next available section of sliding window */ - strm->avail_out = DSIZE - have; - strm->next_out = window + have; - - /* inflate and check for errors */ - ret = inflate(strm, Z_BLOCK); - if (ret == Z_STREAM_ERROR) bye("internal stream error!", ""); - if (ret == Z_MEM_ERROR) bye("out of memory", ""); - if (ret == Z_DATA_ERROR) - bye("invalid compressed data--format violated in", name); - - /* update crc and sliding window pointer */ - crc = crc32(crc, window + have, DSIZE - have - strm->avail_out); - if (strm->avail_out) - have = DSIZE - strm->avail_out; - else { - have = 0; - full = 1; - } - - /* process end of block */ - if (strm->data_type & 128) { - if (strm->data_type & 64) - left = strm->data_type & 0x1f; - else { - lastbit = strm->data_type & 0x1f; - lastoff = lseek(gz.fd, 0L, SEEK_CUR) - strm->avail_in; - } - } - } while (ret != Z_STREAM_END); - inflateEnd(strm); - gz.left = strm->avail_in; - gz.next = strm->next_in; - - /* save the location of the end of the compressed data */ - end = lseek(gz.fd, 0L, SEEK_CUR) - gz.left; - - /* check gzip trailer and save total for deflate */ - if (crc != read4(&gz)) - bye("invalid compressed data--crc mismatch in ", name); - tot = strm->total_out; - if ((tot & 0xffffffffUL) != read4(&gz)) - bye("invalid compressed data--length mismatch in", name); - - /* if not at end of file, warn */ - if (gz.left || readin(&gz)) - fprintf(stderr, - "gzappend warning: junk at end of gzip file overwritten\n"); - - /* clear last block bit */ - lseek(gz.fd, lastoff - (lastbit != 0), SEEK_SET); - if (read(gz.fd, gz.buf, 1) != 1) bye("reading after seek on ", name); - *gz.buf = (unsigned char)(*gz.buf ^ (1 << ((8 - lastbit) & 7))); - lseek(gz.fd, -1L, SEEK_CUR); - if (write(gz.fd, gz.buf, 1) != 1) bye("writing after seek to ", name); - - /* if window wrapped, build dictionary from window by rotating */ - if (full) { - rotate(window, DSIZE, have); - have = DSIZE; - } - - /* set up deflate stream with window, crc, total_in, and leftover bits */ - ret = deflateInit2(strm, level, Z_DEFLATED, -15, 8, Z_DEFAULT_STRATEGY); - if (ret != Z_OK) bye("out of memory", ""); - deflateSetDictionary(strm, window, have); - strm->adler = crc; - strm->total_in = tot; - if (left) { - lseek(gz.fd, --end, SEEK_SET); - if (read(gz.fd, gz.buf, 1) != 1) bye("reading after seek on ", name); - deflatePrime(strm, 8 - left, *gz.buf); - } - lseek(gz.fd, end, SEEK_SET); - - /* clean up and return */ - free(window); - free(gz.buf); - return gz.fd; -} - -/* append file "name" to gzip file gd using deflate stream strm -- if last - is true, then finish off the deflate stream at the end */ -local void gztack(char *name, int gd, z_stream *strm, int last) -{ - int fd, len, ret; - unsigned left; - unsigned char *in, *out; - - /* open file to compress and append */ - fd = 0; - if (name != NULL) { - fd = open(name, O_RDONLY, 0); - if (fd == -1) - fprintf(stderr, "gzappend warning: %s not found, skipping ...\n", - name); - } - - /* allocate buffers */ - in = malloc(CHUNK); - out = malloc(CHUNK); - if (in == NULL || out == NULL) bye("out of memory", ""); - - /* compress input file and append to gzip file */ - do { - /* get more input */ - len = read(fd, in, CHUNK); - if (len == -1) { - fprintf(stderr, - "gzappend warning: error reading %s, skipping rest ...\n", - name); - len = 0; - } - strm->avail_in = (unsigned)len; - strm->next_in = in; - if (len) strm->adler = crc32(strm->adler, in, (unsigned)len); - - /* compress and write all available output */ - do { - strm->avail_out = CHUNK; - strm->next_out = out; - ret = deflate(strm, last && len == 0 ? Z_FINISH : Z_NO_FLUSH); - left = CHUNK - strm->avail_out; - while (left) { - len = write(gd, out + CHUNK - strm->avail_out - left, left); - if (len == -1) bye("writing gzip file", ""); - left -= (unsigned)len; - } - } while (strm->avail_out == 0 && ret != Z_STREAM_END); - } while (len != 0); - - /* write trailer after last entry */ - if (last) { - deflateEnd(strm); - out[0] = (unsigned char)(strm->adler); - out[1] = (unsigned char)(strm->adler >> 8); - out[2] = (unsigned char)(strm->adler >> 16); - out[3] = (unsigned char)(strm->adler >> 24); - out[4] = (unsigned char)(strm->total_in); - out[5] = (unsigned char)(strm->total_in >> 8); - out[6] = (unsigned char)(strm->total_in >> 16); - out[7] = (unsigned char)(strm->total_in >> 24); - len = 8; - do { - ret = write(gd, out + 8 - len, len); - if (ret == -1) bye("writing gzip file", ""); - len -= ret; - } while (len); - close(gd); - } - - /* clean up and return */ - free(out); - free(in); - if (fd > 0) close(fd); -} - -/* process the compression level option if present, scan the gzip file, and - append the specified files, or append the data from stdin if no other file - names are provided on the command line -- the gzip file must be writable - and seekable */ -int main(int argc, char **argv) -{ - int gd, level; - z_stream strm; - - /* ignore command name */ - argc--; argv++; - - /* provide usage if no arguments */ - if (*argv == NULL) { - printf( - "gzappend 1.2 (11 Oct 2012) Copyright (C) 2003, 2012 Mark Adler\n" - ); - printf( - "usage: gzappend [-level] file.gz [ addthis [ andthis ... ]]\n"); - return 0; - } - - /* set compression level */ - level = Z_DEFAULT_COMPRESSION; - if (argv[0][0] == '-') { - if (argv[0][1] < '0' || argv[0][1] > '9' || argv[0][2] != 0) - bye("invalid compression level", ""); - level = argv[0][1] - '0'; - if (*++argv == NULL) bye("no gzip file name after options", ""); - } - - /* prepare to append to gzip file */ - gd = gzscan(*argv++, &strm, level); - - /* append files on command line, or from stdin if none */ - if (*argv == NULL) - gztack(NULL, gd, &strm, 1); - else - do { - gztack(*argv, gd, &strm, argv[1] == NULL); - } while (*++argv != NULL); - return 0; -} diff --git a/platform/win32/msvc/external/zlib/examples/gzjoin.c b/platform/win32/msvc/external/zlib/examples/gzjoin.c deleted file mode 100644 index 89e8098441b..00000000000 --- a/platform/win32/msvc/external/zlib/examples/gzjoin.c +++ /dev/null @@ -1,449 +0,0 @@ -/* gzjoin -- command to join gzip files into one gzip file - - Copyright (C) 2004, 2005, 2012 Mark Adler, all rights reserved - version 1.2, 14 Aug 2012 - - This software is provided 'as-is', without any express or implied - warranty. In no event will the author be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Mark Adler madler@alumni.caltech.edu - */ - -/* - * Change history: - * - * 1.0 11 Dec 2004 - First version - * 1.1 12 Jun 2005 - Changed ssize_t to long for portability - * 1.2 14 Aug 2012 - Clean up for z_const usage - */ - -/* - gzjoin takes one or more gzip files on the command line and writes out a - single gzip file that will uncompress to the concatenation of the - uncompressed data from the individual gzip files. gzjoin does this without - having to recompress any of the data and without having to calculate a new - crc32 for the concatenated uncompressed data. gzjoin does however have to - decompress all of the input data in order to find the bits in the compressed - data that need to be modified to concatenate the streams. - - gzjoin does not do an integrity check on the input gzip files other than - checking the gzip header and decompressing the compressed data. They are - otherwise assumed to be complete and correct. - - Each joint between gzip files removes at least 18 bytes of previous trailer - and subsequent header, and inserts an average of about three bytes to the - compressed data in order to connect the streams. The output gzip file - has a minimal ten-byte gzip header with no file name or modification time. - - This program was written to illustrate the use of the Z_BLOCK option of - inflate() and the crc32_combine() function. gzjoin will not compile with - versions of zlib earlier than 1.2.3. - */ - -#include <stdio.h> /* fputs(), fprintf(), fwrite(), putc() */ -#include <stdlib.h> /* exit(), malloc(), free() */ -#include <fcntl.h> /* open() */ -#include <unistd.h> /* close(), read(), lseek() */ -#include "zlib.h" - /* crc32(), crc32_combine(), inflateInit2(), inflate(), inflateEnd() */ - -#define local static - -/* exit with an error (return a value to allow use in an expression) */ -local int bail(char *why1, char *why2) -{ - fprintf(stderr, "gzjoin error: %s%s, output incomplete\n", why1, why2); - exit(1); - return 0; -} - -/* -- simple buffered file input with access to the buffer -- */ - -#define CHUNK 32768 /* must be a power of two and fit in unsigned */ - -/* bin buffered input file type */ -typedef struct { - char *name; /* name of file for error messages */ - int fd; /* file descriptor */ - unsigned left; /* bytes remaining at next */ - unsigned char *next; /* next byte to read */ - unsigned char *buf; /* allocated buffer of length CHUNK */ -} bin; - -/* close a buffered file and free allocated memory */ -local void bclose(bin *in) -{ - if (in != NULL) { - if (in->fd != -1) - close(in->fd); - if (in->buf != NULL) - free(in->buf); - free(in); - } -} - -/* open a buffered file for input, return a pointer to type bin, or NULL on - failure */ -local bin *bopen(char *name) -{ - bin *in; - - in = malloc(sizeof(bin)); - if (in == NULL) - return NULL; - in->buf = malloc(CHUNK); - in->fd = open(name, O_RDONLY, 0); - if (in->buf == NULL || in->fd == -1) { - bclose(in); - return NULL; - } - in->left = 0; - in->next = in->buf; - in->name = name; - return in; -} - -/* load buffer from file, return -1 on read error, 0 or 1 on success, with - 1 indicating that end-of-file was reached */ -local int bload(bin *in) -{ - long len; - - if (in == NULL) - return -1; - if (in->left != 0) - return 0; - in->next = in->buf; - do { - len = (long)read(in->fd, in->buf + in->left, CHUNK - in->left); - if (len < 0) - return -1; - in->left += (unsigned)len; - } while (len != 0 && in->left < CHUNK); - return len == 0 ? 1 : 0; -} - -/* get a byte from the file, bail if end of file */ -#define bget(in) (in->left ? 0 : bload(in), \ - in->left ? (in->left--, *(in->next)++) : \ - bail("unexpected end of file on ", in->name)) - -/* get a four-byte little-endian unsigned integer from file */ -local unsigned long bget4(bin *in) -{ - unsigned long val; - - val = bget(in); - val += (unsigned long)(bget(in)) << 8; - val += (unsigned long)(bget(in)) << 16; - val += (unsigned long)(bget(in)) << 24; - return val; -} - -/* skip bytes in file */ -local void bskip(bin *in, unsigned skip) -{ - /* check pointer */ - if (in == NULL) - return; - - /* easy case -- skip bytes in buffer */ - if (skip <= in->left) { - in->left -= skip; - in->next += skip; - return; - } - - /* skip what's in buffer, discard buffer contents */ - skip -= in->left; - in->left = 0; - - /* seek past multiples of CHUNK bytes */ - if (skip > CHUNK) { - unsigned left; - - left = skip & (CHUNK - 1); - if (left == 0) { - /* exact number of chunks: seek all the way minus one byte to check - for end-of-file with a read */ - lseek(in->fd, skip - 1, SEEK_CUR); - if (read(in->fd, in->buf, 1) != 1) - bail("unexpected end of file on ", in->name); - return; - } - - /* skip the integral chunks, update skip with remainder */ - lseek(in->fd, skip - left, SEEK_CUR); - skip = left; - } - - /* read more input and skip remainder */ - bload(in); - if (skip > in->left) - bail("unexpected end of file on ", in->name); - in->left -= skip; - in->next += skip; -} - -/* -- end of buffered input functions -- */ - -/* skip the gzip header from file in */ -local void gzhead(bin *in) -{ - int flags; - - /* verify gzip magic header and compression method */ - if (bget(in) != 0x1f || bget(in) != 0x8b || bget(in) != 8) - bail(in->name, " is not a valid gzip file"); - - /* get and verify flags */ - flags = bget(in); - if ((flags & 0xe0) != 0) - bail("unknown reserved bits set in ", in->name); - - /* skip modification time, extra flags, and os */ - bskip(in, 6); - - /* skip extra field if present */ - if (flags & 4) { - unsigned len; - - len = bget(in); - len += (unsigned)(bget(in)) << 8; - bskip(in, len); - } - - /* skip file name if present */ - if (flags & 8) - while (bget(in) != 0) - ; - - /* skip comment if present */ - if (flags & 16) - while (bget(in) != 0) - ; - - /* skip header crc if present */ - if (flags & 2) - bskip(in, 2); -} - -/* write a four-byte little-endian unsigned integer to out */ -local void put4(unsigned long val, FILE *out) -{ - putc(val & 0xff, out); - putc((val >> 8) & 0xff, out); - putc((val >> 16) & 0xff, out); - putc((val >> 24) & 0xff, out); -} - -/* Load up zlib stream from buffered input, bail if end of file */ -local void zpull(z_streamp strm, bin *in) -{ - if (in->left == 0) - bload(in); - if (in->left == 0) - bail("unexpected end of file on ", in->name); - strm->avail_in = in->left; - strm->next_in = in->next; -} - -/* Write header for gzip file to out and initialize trailer. */ -local void gzinit(unsigned long *crc, unsigned long *tot, FILE *out) -{ - fwrite("\x1f\x8b\x08\0\0\0\0\0\0\xff", 1, 10, out); - *crc = crc32(0L, Z_NULL, 0); - *tot = 0; -} - -/* Copy the compressed data from name, zeroing the last block bit of the last - block if clr is true, and adding empty blocks as needed to get to a byte - boundary. If clr is false, then the last block becomes the last block of - the output, and the gzip trailer is written. crc and tot maintains the - crc and length (modulo 2^32) of the output for the trailer. The resulting - gzip file is written to out. gzinit() must be called before the first call - of gzcopy() to write the gzip header and to initialize crc and tot. */ -local void gzcopy(char *name, int clr, unsigned long *crc, unsigned long *tot, - FILE *out) -{ - int ret; /* return value from zlib functions */ - int pos; /* where the "last block" bit is in byte */ - int last; /* true if processing the last block */ - bin *in; /* buffered input file */ - unsigned char *start; /* start of compressed data in buffer */ - unsigned char *junk; /* buffer for uncompressed data -- discarded */ - z_off_t len; /* length of uncompressed data (support > 4 GB) */ - z_stream strm; /* zlib inflate stream */ - - /* open gzip file and skip header */ - in = bopen(name); - if (in == NULL) - bail("could not open ", name); - gzhead(in); - - /* allocate buffer for uncompressed data and initialize raw inflate - stream */ - junk = malloc(CHUNK); - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit2(&strm, -15); - if (junk == NULL || ret != Z_OK) - bail("out of memory", ""); - - /* inflate and copy compressed data, clear last-block bit if requested */ - len = 0; - zpull(&strm, in); - start = in->next; - last = start[0] & 1; - if (last && clr) - start[0] &= ~1; - strm.avail_out = 0; - for (;;) { - /* if input used and output done, write used input and get more */ - if (strm.avail_in == 0 && strm.avail_out != 0) { - fwrite(start, 1, strm.next_in - start, out); - start = in->buf; - in->left = 0; - zpull(&strm, in); - } - - /* decompress -- return early when end-of-block reached */ - strm.avail_out = CHUNK; - strm.next_out = junk; - ret = inflate(&strm, Z_BLOCK); - switch (ret) { - case Z_MEM_ERROR: - bail("out of memory", ""); - case Z_DATA_ERROR: - bail("invalid compressed data in ", in->name); - } - - /* update length of uncompressed data */ - len += CHUNK - strm.avail_out; - - /* check for block boundary (only get this when block copied out) */ - if (strm.data_type & 128) { - /* if that was the last block, then done */ - if (last) - break; - - /* number of unused bits in last byte */ - pos = strm.data_type & 7; - - /* find the next last-block bit */ - if (pos != 0) { - /* next last-block bit is in last used byte */ - pos = 0x100 >> pos; - last = strm.next_in[-1] & pos; - if (last && clr) - in->buf[strm.next_in - in->buf - 1] &= ~pos; - } - else { - /* next last-block bit is in next unused byte */ - if (strm.avail_in == 0) { - /* don't have that byte yet -- get it */ - fwrite(start, 1, strm.next_in - start, out); - start = in->buf; - in->left = 0; - zpull(&strm, in); - } - last = strm.next_in[0] & 1; - if (last && clr) - in->buf[strm.next_in - in->buf] &= ~1; - } - } - } - - /* update buffer with unused input */ - in->left = strm.avail_in; - in->next = in->buf + (strm.next_in - in->buf); - - /* copy used input, write empty blocks to get to byte boundary */ - pos = strm.data_type & 7; - fwrite(start, 1, in->next - start - 1, out); - last = in->next[-1]; - if (pos == 0 || !clr) - /* already at byte boundary, or last file: write last byte */ - putc(last, out); - else { - /* append empty blocks to last byte */ - last &= ((0x100 >> pos) - 1); /* assure unused bits are zero */ - if (pos & 1) { - /* odd -- append an empty stored block */ - putc(last, out); - if (pos == 1) - putc(0, out); /* two more bits in block header */ - fwrite("\0\0\xff\xff", 1, 4, out); - } - else { - /* even -- append 1, 2, or 3 empty fixed blocks */ - switch (pos) { - case 6: - putc(last | 8, out); - last = 0; - case 4: - putc(last | 0x20, out); - last = 0; - case 2: - putc(last | 0x80, out); - putc(0, out); - } - } - } - - /* update crc and tot */ - *crc = crc32_combine(*crc, bget4(in), len); - *tot += (unsigned long)len; - - /* clean up */ - inflateEnd(&strm); - free(junk); - bclose(in); - - /* write trailer if this is the last gzip file */ - if (!clr) { - put4(*crc, out); - put4(*tot, out); - } -} - -/* join the gzip files on the command line, write result to stdout */ -int main(int argc, char **argv) -{ - unsigned long crc, tot; /* running crc and total uncompressed length */ - - /* skip command name */ - argc--; - argv++; - - /* show usage if no arguments */ - if (argc == 0) { - fputs("gzjoin usage: gzjoin f1.gz [f2.gz [f3.gz ...]] > fjoin.gz\n", - stderr); - return 0; - } - - /* join gzip files on command line and write to stdout */ - gzinit(&crc, &tot, stdout); - while (argc--) - gzcopy(*argv++, argc, &crc, &tot, stdout); - - /* done */ - return 0; -} diff --git a/platform/win32/msvc/external/zlib/examples/gzlog.c b/platform/win32/msvc/external/zlib/examples/gzlog.c deleted file mode 100644 index 922f878dde3..00000000000 --- a/platform/win32/msvc/external/zlib/examples/gzlog.c +++ /dev/null @@ -1,1059 +0,0 @@ -/* - * gzlog.c - * Copyright (C) 2004, 2008, 2012 Mark Adler, all rights reserved - * For conditions of distribution and use, see copyright notice in gzlog.h - * version 2.2, 14 Aug 2012 - */ - -/* - gzlog provides a mechanism for frequently appending short strings to a gzip - file that is efficient both in execution time and compression ratio. The - strategy is to write the short strings in an uncompressed form to the end of - the gzip file, only compressing when the amount of uncompressed data has - reached a given threshold. - - gzlog also provides protection against interruptions in the process due to - system crashes. The status of the operation is recorded in an extra field - in the gzip file, and is only updated once the gzip file is brought to a - valid state. The last data to be appended or compressed is saved in an - auxiliary file, so that if the operation is interrupted, it can be completed - the next time an append operation is attempted. - - gzlog maintains another auxiliary file with the last 32K of data from the - compressed portion, which is preloaded for the compression of the subsequent - data. This minimizes the impact to the compression ratio of appending. - */ - -/* - Operations Concept: - - Files (log name "foo"): - foo.gz -- gzip file with the complete log - foo.add -- last message to append or last data to compress - foo.dict -- dictionary of the last 32K of data for next compression - foo.temp -- temporary dictionary file for compression after this one - foo.lock -- lock file for reading and writing the other files - foo.repairs -- log file for log file recovery operations (not compressed) - - gzip file structure: - - fixed-length (no file name) header with extra field (see below) - - compressed data ending initially with empty stored block - - uncompressed data filling out originally empty stored block and - subsequent stored blocks as needed (16K max each) - - gzip trailer - - no junk at end (no other gzip streams) - - When appending data, the information in the first three items above plus the - foo.add file are sufficient to recover an interrupted append operation. The - extra field has the necessary information to restore the start of the last - stored block and determine where to append the data in the foo.add file, as - well as the crc and length of the gzip data before the append operation. - - The foo.add file is created before the gzip file is marked for append, and - deleted after the gzip file is marked as complete. So if the append - operation is interrupted, the data to add will still be there. If due to - some external force, the foo.add file gets deleted between when the append - operation was interrupted and when recovery is attempted, the gzip file will - still be restored, but without the appended data. - - When compressing data, the information in the first two items above plus the - foo.add file are sufficient to recover an interrupted compress operation. - The extra field has the necessary information to find the end of the - compressed data, and contains both the crc and length of just the compressed - data and of the complete set of data including the contents of the foo.add - file. - - Again, the foo.add file is maintained during the compress operation in case - of an interruption. If in the unlikely event the foo.add file with the data - to be compressed is missing due to some external force, a gzip file with - just the previous compressed data will be reconstructed. In this case, all - of the data that was to be compressed is lost (approximately one megabyte). - This will not occur if all that happened was an interruption of the compress - operation. - - The third state that is marked is the replacement of the old dictionary with - the new dictionary after a compress operation. Once compression is - complete, the gzip file is marked as being in the replace state. This - completes the gzip file, so an interrupt after being so marked does not - result in recompression. Then the dictionary file is replaced, and the gzip - file is marked as completed. This state prevents the possibility of - restarting compression with the wrong dictionary file. - - All three operations are wrapped by a lock/unlock procedure. In order to - gain exclusive access to the log files, first a foo.lock file must be - exclusively created. When all operations are complete, the lock is - released by deleting the foo.lock file. If when attempting to create the - lock file, it already exists and the modify time of the lock file is more - than five minutes old (set by the PATIENCE define below), then the old - lock file is considered stale and deleted, and the exclusive creation of - the lock file is retried. To assure that there are no false assessments - of the staleness of the lock file, the operations periodically touch the - lock file to update the modified date. - - Following is the definition of the extra field with all of the information - required to enable the above append and compress operations and their - recovery if interrupted. Multi-byte values are stored little endian - (consistent with the gzip format). File pointers are eight bytes long. - The crc's and lengths for the gzip trailer are four bytes long. (Note that - the length at the end of a gzip file is used for error checking only, and - for large files is actually the length modulo 2^32.) The stored block - length is two bytes long. The gzip extra field two-byte identification is - "ap" for append. It is assumed that writing the extra field to the file is - an "atomic" operation. That is, either all of the extra field is written - to the file, or none of it is, if the operation is interrupted right at the - point of updating the extra field. This is a reasonable assumption, since - the extra field is within the first 52 bytes of the file, which is smaller - than any expected block size for a mass storage device (usually 512 bytes or - larger). - - Extra field (35 bytes): - - Pointer to first stored block length -- this points to the two-byte length - of the first stored block, which is followed by the two-byte, one's - complement of that length. The stored block length is preceded by the - three-bit header of the stored block, which is the actual start of the - stored block in the deflate format. See the bit offset field below. - - Pointer to the last stored block length. This is the same as above, but - for the last stored block of the uncompressed data in the gzip file. - Initially this is the same as the first stored block length pointer. - When the stored block gets to 16K (see the MAX_STORE define), then a new - stored block as added, at which point the last stored block length pointer - is different from the first stored block length pointer. When they are - different, the first bit of the last stored block header is eight bits, or - one byte back from the block length. - - Compressed data crc and length. This is the crc and length of the data - that is in the compressed portion of the deflate stream. These are used - only in the event that the foo.add file containing the data to compress is - lost after a compress operation is interrupted. - - Total data crc and length. This is the crc and length of all of the data - stored in the gzip file, compressed and uncompressed. It is used to - reconstruct the gzip trailer when compressing, as well as when recovering - interrupted operations. - - Final stored block length. This is used to quickly find where to append, - and allows the restoration of the original final stored block state when - an append operation is interrupted. - - First stored block start as the number of bits back from the final stored - block first length byte. This value is in the range of 3..10, and is - stored as the low three bits of the final byte of the extra field after - subtracting three (0..7). This allows the last-block bit of the stored - block header to be updated when a new stored block is added, for the case - when the first stored block and the last stored block are the same. (When - they are different, the numbers of bits back is known to be eight.) This - also allows for new compressed data to be appended to the old compressed - data in the compress operation, overwriting the previous first stored - block, or for the compressed data to be terminated and a valid gzip file - reconstructed on the off chance that a compression operation was - interrupted and the data to compress in the foo.add file was deleted. - - The operation in process. This is the next two bits in the last byte (the - bits under the mask 0x18). The are interpreted as 0: nothing in process, - 1: append in process, 2: compress in process, 3: replace in process. - - The top three bits of the last byte in the extra field are reserved and - are currently set to zero. - - Main procedure: - - Exclusively create the foo.lock file using the O_CREAT and O_EXCL modes of - the system open() call. If the modify time of an existing lock file is - more than PATIENCE seconds old, then the lock file is deleted and the - exclusive create is retried. - - Load the extra field from the foo.gz file, and see if an operation was in - progress but not completed. If so, apply the recovery procedure below. - - Perform the append procedure with the provided data. - - If the uncompressed data in the foo.gz file is 1MB or more, apply the - compress procedure. - - Delete the foo.lock file. - - Append procedure: - - Put what to append in the foo.add file so that the operation can be - restarted if this procedure is interrupted. - - Mark the foo.gz extra field with the append operation in progress. - + Restore the original last-block bit and stored block length of the last - stored block from the information in the extra field, in case a previous - append operation was interrupted. - - Append the provided data to the last stored block, creating new stored - blocks as needed and updating the stored blocks last-block bits and - lengths. - - Update the crc and length with the new data, and write the gzip trailer. - - Write over the extra field (with a single write operation) with the new - pointers, lengths, and crc's, and mark the gzip file as not in process. - Though there is still a foo.add file, it will be ignored since nothing - is in process. If a foo.add file is leftover from a previously - completed operation, it is truncated when writing new data to it. - - Delete the foo.add file. - - Compress and replace procedures: - - Read all of the uncompressed data in the stored blocks in foo.gz and write - it to foo.add. Also write foo.temp with the last 32K of that data to - provide a dictionary for the next invocation of this procedure. - - Rewrite the extra field marking foo.gz with a compression in process. - * If there is no data provided to compress (due to a missing foo.add file - when recovering), reconstruct and truncate the foo.gz file to contain - only the previous compressed data and proceed to the step after the next - one. Otherwise ... - - Compress the data with the dictionary in foo.dict, and write to the - foo.gz file starting at the bit immediately following the last previously - compressed block. If there is no foo.dict, proceed anyway with the - compression at slightly reduced efficiency. (For the foo.dict file to be - missing requires some external failure beyond simply the interruption of - a compress operation.) During this process, the foo.lock file is - periodically touched to assure that that file is not considered stale by - another process before we're done. The deflation is terminated with a - non-last empty static block (10 bits long), that is then located and - written over by a last-bit-set empty stored block. - - Append the crc and length of the data in the gzip file (previously - calculated during the append operations). - - Write over the extra field with the updated stored block offsets, bits - back, crc's, and lengths, and mark foo.gz as in process for a replacement - of the dictionary. - @ Delete the foo.add file. - - Replace foo.dict with foo.temp. - - Write over the extra field, marking foo.gz as complete. - - Recovery procedure: - - If not a replace recovery, read in the foo.add file, and provide that data - to the appropriate recovery below. If there is no foo.add file, provide - a zero data length to the recovery. In that case, the append recovery - restores the foo.gz to the previous compressed + uncompressed data state. - For the the compress recovery, a missing foo.add file results in foo.gz - being restored to the previous compressed-only data state. - - Append recovery: - - Pick up append at + step above - - Compress recovery: - - Pick up compress at * step above - - Replace recovery: - - Pick up compress at @ step above - - Log the repair with a date stamp in foo.repairs - */ - -#include <sys/types.h> -#include <stdio.h> /* rename, fopen, fprintf, fclose */ -#include <stdlib.h> /* malloc, free */ -#include <string.h> /* strlen, strrchr, strcpy, strncpy, strcmp */ -#include <fcntl.h> /* open */ -#include <unistd.h> /* lseek, read, write, close, unlink, sleep, */ - /* ftruncate, fsync */ -#include <errno.h> /* errno */ -#include <time.h> /* time, ctime */ -#include <sys/stat.h> /* stat */ -#include <sys/time.h> /* utimes */ -#include "zlib.h" /* crc32 */ - -#include "gzlog.h" /* header for external access */ - -#define local static -typedef unsigned int uint; -typedef unsigned long ulong; - -/* Macro for debugging to deterministically force recovery operations */ -#ifdef DEBUG - #include <setjmp.h> /* longjmp */ - jmp_buf gzlog_jump; /* where to go back to */ - int gzlog_bail = 0; /* which point to bail at (1..8) */ - int gzlog_count = -1; /* number of times through to wait */ -# define BAIL(n) do { if (n == gzlog_bail && gzlog_count-- == 0) \ - longjmp(gzlog_jump, gzlog_bail); } while (0) -#else -# define BAIL(n) -#endif - -/* how old the lock file can be in seconds before considering it stale */ -#define PATIENCE 300 - -/* maximum stored block size in Kbytes -- must be in 1..63 */ -#define MAX_STORE 16 - -/* number of stored Kbytes to trigger compression (must be >= 32 to allow - dictionary construction, and <= 204 * MAX_STORE, in order for >> 10 to - discard the stored block headers contribution of five bytes each) */ -#define TRIGGER 1024 - -/* size of a deflate dictionary (this cannot be changed) */ -#define DICT 32768U - -/* values for the operation (2 bits) */ -#define NO_OP 0 -#define APPEND_OP 1 -#define COMPRESS_OP 2 -#define REPLACE_OP 3 - -/* macros to extract little-endian integers from an unsigned byte buffer */ -#define PULL2(p) ((p)[0]+((uint)((p)[1])<<8)) -#define PULL4(p) (PULL2(p)+((ulong)PULL2(p+2)<<16)) -#define PULL8(p) (PULL4(p)+((off_t)PULL4(p+4)<<32)) - -/* macros to store integers into a byte buffer in little-endian order */ -#define PUT2(p,a) do {(p)[0]=a;(p)[1]=(a)>>8;} while(0) -#define PUT4(p,a) do {PUT2(p,a);PUT2(p+2,a>>16);} while(0) -#define PUT8(p,a) do {PUT4(p,a);PUT4(p+4,a>>32);} while(0) - -/* internal structure for log information */ -#define LOGID "\106\035\172" /* should be three non-zero characters */ -struct log { - char id[4]; /* contains LOGID to detect inadvertent overwrites */ - int fd; /* file descriptor for .gz file, opened read/write */ - char *path; /* allocated path, e.g. "/var/log/foo" or "foo" */ - char *end; /* end of path, for appending suffices such as ".gz" */ - off_t first; /* offset of first stored block first length byte */ - int back; /* location of first block id in bits back from first */ - uint stored; /* bytes currently in last stored block */ - off_t last; /* offset of last stored block first length byte */ - ulong ccrc; /* crc of compressed data */ - ulong clen; /* length (modulo 2^32) of compressed data */ - ulong tcrc; /* crc of total data */ - ulong tlen; /* length (modulo 2^32) of total data */ - time_t lock; /* last modify time of our lock file */ -}; - -/* gzip header for gzlog */ -local unsigned char log_gzhead[] = { - 0x1f, 0x8b, /* magic gzip id */ - 8, /* compression method is deflate */ - 4, /* there is an extra field (no file name) */ - 0, 0, 0, 0, /* no modification time provided */ - 0, 0xff, /* no extra flags, no OS specified */ - 39, 0, 'a', 'p', 35, 0 /* extra field with "ap" subfield */ - /* 35 is EXTRA, 39 is EXTRA + 4 */ -}; - -#define HEAD sizeof(log_gzhead) /* should be 16 */ - -/* initial gzip extra field content (52 == HEAD + EXTRA + 1) */ -local unsigned char log_gzext[] = { - 52, 0, 0, 0, 0, 0, 0, 0, /* offset of first stored block length */ - 52, 0, 0, 0, 0, 0, 0, 0, /* offset of last stored block length */ - 0, 0, 0, 0, 0, 0, 0, 0, /* compressed data crc and length */ - 0, 0, 0, 0, 0, 0, 0, 0, /* total data crc and length */ - 0, 0, /* final stored block data length */ - 5 /* op is NO_OP, last bit 8 bits back */ -}; - -#define EXTRA sizeof(log_gzext) /* should be 35 */ - -/* initial gzip data and trailer */ -local unsigned char log_gzbody[] = { - 1, 0, 0, 0xff, 0xff, /* empty stored block (last) */ - 0, 0, 0, 0, /* crc */ - 0, 0, 0, 0 /* uncompressed length */ -}; - -#define BODY sizeof(log_gzbody) - -/* Exclusively create foo.lock in order to negotiate exclusive access to the - foo.* files. If the modify time of an existing lock file is greater than - PATIENCE seconds in the past, then consider the lock file to have been - abandoned, delete it, and try the exclusive create again. Save the lock - file modify time for verification of ownership. Return 0 on success, or -1 - on failure, usually due to an access restriction or invalid path. Note that - if stat() or unlink() fails, it may be due to another process noticing the - abandoned lock file a smidge sooner and deleting it, so those are not - flagged as an error. */ -local int log_lock(struct log *log) -{ - int fd; - struct stat st; - - strcpy(log->end, ".lock"); - while ((fd = open(log->path, O_CREAT | O_EXCL, 0644)) < 0) { - if (errno != EEXIST) - return -1; - if (stat(log->path, &st) == 0 && time(NULL) - st.st_mtime > PATIENCE) { - unlink(log->path); - continue; - } - sleep(2); /* relinquish the CPU for two seconds while waiting */ - } - close(fd); - if (stat(log->path, &st) == 0) - log->lock = st.st_mtime; - return 0; -} - -/* Update the modify time of the lock file to now, in order to prevent another - task from thinking that the lock is stale. Save the lock file modify time - for verification of ownership. */ -local void log_touch(struct log *log) -{ - struct stat st; - - strcpy(log->end, ".lock"); - utimes(log->path, NULL); - if (stat(log->path, &st) == 0) - log->lock = st.st_mtime; -} - -/* Check the log file modify time against what is expected. Return true if - this is not our lock. If it is our lock, touch it to keep it. */ -local int log_check(struct log *log) -{ - struct stat st; - - strcpy(log->end, ".lock"); - if (stat(log->path, &st) || st.st_mtime != log->lock) - return 1; - log_touch(log); - return 0; -} - -/* Unlock a previously acquired lock, but only if it's ours. */ -local void log_unlock(struct log *log) -{ - if (log_check(log)) - return; - strcpy(log->end, ".lock"); - unlink(log->path); - log->lock = 0; -} - -/* Check the gzip header and read in the extra field, filling in the values in - the log structure. Return op on success or -1 if the gzip header was not as - expected. op is the current operation in progress last written to the extra - field. This assumes that the gzip file has already been opened, with the - file descriptor log->fd. */ -local int log_head(struct log *log) -{ - int op; - unsigned char buf[HEAD + EXTRA]; - - if (lseek(log->fd, 0, SEEK_SET) < 0 || - read(log->fd, buf, HEAD + EXTRA) != HEAD + EXTRA || - memcmp(buf, log_gzhead, HEAD)) { - return -1; - } - log->first = PULL8(buf + HEAD); - log->last = PULL8(buf + HEAD + 8); - log->ccrc = PULL4(buf + HEAD + 16); - log->clen = PULL4(buf + HEAD + 20); - log->tcrc = PULL4(buf + HEAD + 24); - log->tlen = PULL4(buf + HEAD + 28); - log->stored = PULL2(buf + HEAD + 32); - log->back = 3 + (buf[HEAD + 34] & 7); - op = (buf[HEAD + 34] >> 3) & 3; - return op; -} - -/* Write over the extra field contents, marking the operation as op. Use fsync - to assure that the device is written to, and in the requested order. This - operation, and only this operation, is assumed to be atomic in order to - assure that the log is recoverable in the event of an interruption at any - point in the process. Return -1 if the write to foo.gz failed. */ -local int log_mark(struct log *log, int op) -{ - int ret; - unsigned char ext[EXTRA]; - - PUT8(ext, log->first); - PUT8(ext + 8, log->last); - PUT4(ext + 16, log->ccrc); - PUT4(ext + 20, log->clen); - PUT4(ext + 24, log->tcrc); - PUT4(ext + 28, log->tlen); - PUT2(ext + 32, log->stored); - ext[34] = log->back - 3 + (op << 3); - fsync(log->fd); - ret = lseek(log->fd, HEAD, SEEK_SET) < 0 || - write(log->fd, ext, EXTRA) != EXTRA ? -1 : 0; - fsync(log->fd); - return ret; -} - -/* Rewrite the last block header bits and subsequent zero bits to get to a byte - boundary, setting the last block bit if last is true, and then write the - remainder of the stored block header (length and one's complement). Leave - the file pointer after the end of the last stored block data. Return -1 if - there is a read or write failure on the foo.gz file */ -local int log_last(struct log *log, int last) -{ - int back, len, mask; - unsigned char buf[6]; - - /* determine the locations of the bytes and bits to modify */ - back = log->last == log->first ? log->back : 8; - len = back > 8 ? 2 : 1; /* bytes back from log->last */ - mask = 0x80 >> ((back - 1) & 7); /* mask for block last-bit */ - - /* get the byte to modify (one or two back) into buf[0] -- don't need to - read the byte if the last-bit is eight bits back, since in that case - the entire byte will be modified */ - buf[0] = 0; - if (back != 8 && (lseek(log->fd, log->last - len, SEEK_SET) < 0 || - read(log->fd, buf, 1) != 1)) - return -1; - - /* change the last-bit of the last stored block as requested -- note - that all bits above the last-bit are set to zero, per the type bits - of a stored block being 00 and per the convention that the bits to - bring the stream to a byte boundary are also zeros */ - buf[1] = 0; - buf[2 - len] = (*buf & (mask - 1)) + (last ? mask : 0); - - /* write the modified stored block header and lengths, move the file - pointer to after the last stored block data */ - PUT2(buf + 2, log->stored); - PUT2(buf + 4, log->stored ^ 0xffff); - return lseek(log->fd, log->last - len, SEEK_SET) < 0 || - write(log->fd, buf + 2 - len, len + 4) != len + 4 || - lseek(log->fd, log->stored, SEEK_CUR) < 0 ? -1 : 0; -} - -/* Append len bytes from data to the locked and open log file. len may be zero - if recovering and no .add file was found. In that case, the previous state - of the foo.gz file is restored. The data is appended uncompressed in - deflate stored blocks. Return -1 if there was an error reading or writing - the foo.gz file. */ -local int log_append(struct log *log, unsigned char *data, size_t len) -{ - uint put; - off_t end; - unsigned char buf[8]; - - /* set the last block last-bit and length, in case recovering an - interrupted append, then position the file pointer to append to the - block */ - if (log_last(log, 1)) - return -1; - - /* append, adding stored blocks and updating the offset of the last stored - block as needed, and update the total crc and length */ - while (len) { - /* append as much as we can to the last block */ - put = (MAX_STORE << 10) - log->stored; - if (put > len) - put = (uint)len; - if (put) { - if (write(log->fd, data, put) != put) - return -1; - BAIL(1); - log->tcrc = crc32(log->tcrc, data, put); - log->tlen += put; - log->stored += put; - data += put; - len -= put; - } - - /* if we need to, add a new empty stored block */ - if (len) { - /* mark current block as not last */ - if (log_last(log, 0)) - return -1; - - /* point to new, empty stored block */ - log->last += 4 + log->stored + 1; - log->stored = 0; - } - - /* mark last block as last, update its length */ - if (log_last(log, 1)) - return -1; - BAIL(2); - } - - /* write the new crc and length trailer, and truncate just in case (could - be recovering from partial append with a missing foo.add file) */ - PUT4(buf, log->tcrc); - PUT4(buf + 4, log->tlen); - if (write(log->fd, buf, 8) != 8 || - (end = lseek(log->fd, 0, SEEK_CUR)) < 0 || ftruncate(log->fd, end)) - return -1; - - /* write the extra field, marking the log file as done, delete .add file */ - if (log_mark(log, NO_OP)) - return -1; - strcpy(log->end, ".add"); - unlink(log->path); /* ignore error, since may not exist */ - return 0; -} - -/* Replace the foo.dict file with the foo.temp file. Also delete the foo.add - file, since the compress operation may have been interrupted before that was - done. Returns 1 if memory could not be allocated, or -1 if reading or - writing foo.gz fails, or if the rename fails for some reason other than - foo.temp not existing. foo.temp not existing is a permitted error, since - the replace operation may have been interrupted after the rename is done, - but before foo.gz is marked as complete. */ -local int log_replace(struct log *log) -{ - int ret; - char *dest; - - /* delete foo.add file */ - strcpy(log->end, ".add"); - unlink(log->path); /* ignore error, since may not exist */ - BAIL(3); - - /* rename foo.name to foo.dict, replacing foo.dict if it exists */ - strcpy(log->end, ".dict"); - dest = malloc(strlen(log->path) + 1); - if (dest == NULL) - return -2; - strcpy(dest, log->path); - strcpy(log->end, ".temp"); - ret = rename(log->path, dest); - free(dest); - if (ret && errno != ENOENT) - return -1; - BAIL(4); - - /* mark the foo.gz file as done */ - return log_mark(log, NO_OP); -} - -/* Compress the len bytes at data and append the compressed data to the - foo.gz deflate data immediately after the previous compressed data. This - overwrites the previous uncompressed data, which was stored in foo.add - and is the data provided in data[0..len-1]. If this operation is - interrupted, it picks up at the start of this routine, with the foo.add - file read in again. If there is no data to compress (len == 0), then we - simply terminate the foo.gz file after the previously compressed data, - appending a final empty stored block and the gzip trailer. Return -1 if - reading or writing the log.gz file failed, or -2 if there was a memory - allocation failure. */ -local int log_compress(struct log *log, unsigned char *data, size_t len) -{ - int fd; - uint got, max; - ssize_t dict; - off_t end; - z_stream strm; - unsigned char buf[DICT]; - - /* compress and append compressed data */ - if (len) { - /* set up for deflate, allocating memory */ - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - if (deflateInit2(&strm, Z_DEFAULT_COMPRESSION, Z_DEFLATED, -15, 8, - Z_DEFAULT_STRATEGY) != Z_OK) - return -2; - - /* read in dictionary (last 32K of data that was compressed) */ - strcpy(log->end, ".dict"); - fd = open(log->path, O_RDONLY, 0); - if (fd >= 0) { - dict = read(fd, buf, DICT); - close(fd); - if (dict < 0) { - deflateEnd(&strm); - return -1; - } - if (dict) - deflateSetDictionary(&strm, buf, (uint)dict); - } - log_touch(log); - - /* prime deflate with last bits of previous block, position write - pointer to write those bits and overwrite what follows */ - if (lseek(log->fd, log->first - (log->back > 8 ? 2 : 1), - SEEK_SET) < 0 || - read(log->fd, buf, 1) != 1 || lseek(log->fd, -1, SEEK_CUR) < 0) { - deflateEnd(&strm); - return -1; - } - deflatePrime(&strm, (8 - log->back) & 7, *buf); - - /* compress, finishing with a partial non-last empty static block */ - strm.next_in = data; - max = (((uint)0 - 1) >> 1) + 1; /* in case int smaller than size_t */ - do { - strm.avail_in = len > max ? max : (uint)len; - len -= strm.avail_in; - do { - strm.avail_out = DICT; - strm.next_out = buf; - deflate(&strm, len ? Z_NO_FLUSH : Z_PARTIAL_FLUSH); - got = DICT - strm.avail_out; - if (got && write(log->fd, buf, got) != got) { - deflateEnd(&strm); - return -1; - } - log_touch(log); - } while (strm.avail_out == 0); - } while (len); - deflateEnd(&strm); - BAIL(5); - - /* find start of empty static block -- scanning backwards the first one - bit is the second bit of the block, if the last byte is zero, then - we know the byte before that has a one in the top bit, since an - empty static block is ten bits long */ - if ((log->first = lseek(log->fd, -1, SEEK_CUR)) < 0 || - read(log->fd, buf, 1) != 1) - return -1; - log->first++; - if (*buf) { - log->back = 1; - while ((*buf & ((uint)1 << (8 - log->back++))) == 0) - ; /* guaranteed to terminate, since *buf != 0 */ - } - else - log->back = 10; - - /* update compressed crc and length */ - log->ccrc = log->tcrc; - log->clen = log->tlen; - } - else { - /* no data to compress -- fix up existing gzip stream */ - log->tcrc = log->ccrc; - log->tlen = log->clen; - } - - /* complete and truncate gzip stream */ - log->last = log->first; - log->stored = 0; - PUT4(buf, log->tcrc); - PUT4(buf + 4, log->tlen); - if (log_last(log, 1) || write(log->fd, buf, 8) != 8 || - (end = lseek(log->fd, 0, SEEK_CUR)) < 0 || ftruncate(log->fd, end)) - return -1; - BAIL(6); - - /* mark as being in the replace operation */ - if (log_mark(log, REPLACE_OP)) - return -1; - - /* execute the replace operation and mark the file as done */ - return log_replace(log); -} - -/* log a repair record to the .repairs file */ -local void log_log(struct log *log, int op, char *record) -{ - time_t now; - FILE *rec; - - now = time(NULL); - strcpy(log->end, ".repairs"); - rec = fopen(log->path, "a"); - if (rec == NULL) - return; - fprintf(rec, "%.24s %s recovery: %s\n", ctime(&now), op == APPEND_OP ? - "append" : (op == COMPRESS_OP ? "compress" : "replace"), record); - fclose(rec); - return; -} - -/* Recover the interrupted operation op. First read foo.add for recovering an - append or compress operation. Return -1 if there was an error reading or - writing foo.gz or reading an existing foo.add, or -2 if there was a memory - allocation failure. */ -local int log_recover(struct log *log, int op) -{ - int fd, ret = 0; - unsigned char *data = NULL; - size_t len = 0; - struct stat st; - - /* log recovery */ - log_log(log, op, "start"); - - /* load foo.add file if expected and present */ - if (op == APPEND_OP || op == COMPRESS_OP) { - strcpy(log->end, ".add"); - if (stat(log->path, &st) == 0 && st.st_size) { - len = (size_t)(st.st_size); - if ((off_t)len != st.st_size || - (data = malloc(st.st_size)) == NULL) { - log_log(log, op, "allocation failure"); - return -2; - } - if ((fd = open(log->path, O_RDONLY, 0)) < 0) { - log_log(log, op, ".add file read failure"); - return -1; - } - ret = (size_t)read(fd, data, len) != len; - close(fd); - if (ret) { - log_log(log, op, ".add file read failure"); - return -1; - } - log_log(log, op, "loaded .add file"); - } - else - log_log(log, op, "missing .add file!"); - } - - /* recover the interrupted operation */ - switch (op) { - case APPEND_OP: - ret = log_append(log, data, len); - break; - case COMPRESS_OP: - ret = log_compress(log, data, len); - break; - case REPLACE_OP: - ret = log_replace(log); - } - - /* log status */ - log_log(log, op, ret ? "failure" : "complete"); - - /* clean up */ - if (data != NULL) - free(data); - return ret; -} - -/* Close the foo.gz file (if open) and release the lock. */ -local void log_close(struct log *log) -{ - if (log->fd >= 0) - close(log->fd); - log->fd = -1; - log_unlock(log); -} - -/* Open foo.gz, verify the header, and load the extra field contents, after - first creating the foo.lock file to gain exclusive access to the foo.* - files. If foo.gz does not exist or is empty, then write the initial header, - extra, and body content of an empty foo.gz log file. If there is an error - creating the lock file due to access restrictions, or an error reading or - writing the foo.gz file, or if the foo.gz file is not a proper log file for - this object (e.g. not a gzip file or does not contain the expected extra - field), then return true. If there is an error, the lock is released. - Otherwise, the lock is left in place. */ -local int log_open(struct log *log) -{ - int op; - - /* release open file resource if left over -- can occur if lock lost - between gzlog_open() and gzlog_write() */ - if (log->fd >= 0) - close(log->fd); - log->fd = -1; - - /* negotiate exclusive access */ - if (log_lock(log) < 0) - return -1; - - /* open the log file, foo.gz */ - strcpy(log->end, ".gz"); - log->fd = open(log->path, O_RDWR | O_CREAT, 0644); - if (log->fd < 0) { - log_close(log); - return -1; - } - - /* if new, initialize foo.gz with an empty log, delete old dictionary */ - if (lseek(log->fd, 0, SEEK_END) == 0) { - if (write(log->fd, log_gzhead, HEAD) != HEAD || - write(log->fd, log_gzext, EXTRA) != EXTRA || - write(log->fd, log_gzbody, BODY) != BODY) { - log_close(log); - return -1; - } - strcpy(log->end, ".dict"); - unlink(log->path); - } - - /* verify log file and load extra field information */ - if ((op = log_head(log)) < 0) { - log_close(log); - return -1; - } - - /* check for interrupted process and if so, recover */ - if (op != NO_OP && log_recover(log, op)) { - log_close(log); - return -1; - } - - /* touch the lock file to prevent another process from grabbing it */ - log_touch(log); - return 0; -} - -/* See gzlog.h for the description of the external methods below */ -gzlog *gzlog_open(char *path) -{ - size_t n; - struct log *log; - - /* check arguments */ - if (path == NULL || *path == 0) - return NULL; - - /* allocate and initialize log structure */ - log = malloc(sizeof(struct log)); - if (log == NULL) - return NULL; - strcpy(log->id, LOGID); - log->fd = -1; - - /* save path and end of path for name construction */ - n = strlen(path); - log->path = malloc(n + 9); /* allow for ".repairs" */ - if (log->path == NULL) { - free(log); - return NULL; - } - strcpy(log->path, path); - log->end = log->path + n; - - /* gain exclusive access and verify log file -- may perform a - recovery operation if needed */ - if (log_open(log)) { - free(log->path); - free(log); - return NULL; - } - - /* return pointer to log structure */ - return log; -} - -/* gzlog_compress() return values: - 0: all good - -1: file i/o error (usually access issue) - -2: memory allocation failure - -3: invalid log pointer argument */ -int gzlog_compress(gzlog *logd) -{ - int fd, ret; - uint block; - size_t len, next; - unsigned char *data, buf[5]; - struct log *log = logd; - - /* check arguments */ - if (log == NULL || strcmp(log->id, LOGID)) - return -3; - - /* see if we lost the lock -- if so get it again and reload the extra - field information (it probably changed), recover last operation if - necessary */ - if (log_check(log) && log_open(log)) - return -1; - - /* create space for uncompressed data */ - len = ((size_t)(log->last - log->first) & ~(((size_t)1 << 10) - 1)) + - log->stored; - if ((data = malloc(len)) == NULL) - return -2; - - /* do statement here is just a cheap trick for error handling */ - do { - /* read in the uncompressed data */ - if (lseek(log->fd, log->first - 1, SEEK_SET) < 0) - break; - next = 0; - while (next < len) { - if (read(log->fd, buf, 5) != 5) - break; - block = PULL2(buf + 1); - if (next + block > len || - read(log->fd, (char *)data + next, block) != block) - break; - next += block; - } - if (lseek(log->fd, 0, SEEK_CUR) != log->last + 4 + log->stored) - break; - log_touch(log); - - /* write the uncompressed data to the .add file */ - strcpy(log->end, ".add"); - fd = open(log->path, O_WRONLY | O_CREAT | O_TRUNC, 0644); - if (fd < 0) - break; - ret = (size_t)write(fd, data, len) != len; - if (ret | close(fd)) - break; - log_touch(log); - - /* write the dictionary for the next compress to the .temp file */ - strcpy(log->end, ".temp"); - fd = open(log->path, O_WRONLY | O_CREAT | O_TRUNC, 0644); - if (fd < 0) - break; - next = DICT > len ? len : DICT; - ret = (size_t)write(fd, (char *)data + len - next, next) != next; - if (ret | close(fd)) - break; - log_touch(log); - - /* roll back to compressed data, mark the compress in progress */ - log->last = log->first; - log->stored = 0; - if (log_mark(log, COMPRESS_OP)) - break; - BAIL(7); - - /* compress and append the data (clears mark) */ - ret = log_compress(log, data, len); - free(data); - return ret; - } while (0); - - /* broke out of do above on i/o error */ - free(data); - return -1; -} - -/* gzlog_write() return values: - 0: all good - -1: file i/o error (usually access issue) - -2: memory allocation failure - -3: invalid log pointer argument */ -int gzlog_write(gzlog *logd, void *data, size_t len) -{ - int fd, ret; - struct log *log = logd; - - /* check arguments */ - if (log == NULL || strcmp(log->id, LOGID)) - return -3; - if (data == NULL || len <= 0) - return 0; - - /* see if we lost the lock -- if so get it again and reload the extra - field information (it probably changed), recover last operation if - necessary */ - if (log_check(log) && log_open(log)) - return -1; - - /* create and write .add file */ - strcpy(log->end, ".add"); - fd = open(log->path, O_WRONLY | O_CREAT | O_TRUNC, 0644); - if (fd < 0) - return -1; - ret = (size_t)write(fd, data, len) != len; - if (ret | close(fd)) - return -1; - log_touch(log); - - /* mark log file with append in progress */ - if (log_mark(log, APPEND_OP)) - return -1; - BAIL(8); - - /* append data (clears mark) */ - if (log_append(log, data, len)) - return -1; - - /* check to see if it's time to compress -- if not, then done */ - if (((log->last - log->first) >> 10) + (log->stored >> 10) < TRIGGER) - return 0; - - /* time to compress */ - return gzlog_compress(log); -} - -/* gzlog_close() return values: - 0: ok - -3: invalid log pointer argument */ -int gzlog_close(gzlog *logd) -{ - struct log *log = logd; - - /* check arguments */ - if (log == NULL || strcmp(log->id, LOGID)) - return -3; - - /* close the log file and release the lock */ - log_close(log); - - /* free structure and return */ - if (log->path != NULL) - free(log->path); - strcpy(log->id, "bad"); - free(log); - return 0; -} diff --git a/platform/win32/msvc/external/zlib/examples/gzlog.h b/platform/win32/msvc/external/zlib/examples/gzlog.h deleted file mode 100644 index 86f0cecba5b..00000000000 --- a/platform/win32/msvc/external/zlib/examples/gzlog.h +++ /dev/null @@ -1,91 +0,0 @@ -/* gzlog.h - Copyright (C) 2004, 2008, 2012 Mark Adler, all rights reserved - version 2.2, 14 Aug 2012 - - This software is provided 'as-is', without any express or implied - warranty. In no event will the author be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Mark Adler madler@alumni.caltech.edu - */ - -/* Version History: - 1.0 26 Nov 2004 First version - 2.0 25 Apr 2008 Complete redesign for recovery of interrupted operations - Interface changed slightly in that now path is a prefix - Compression now occurs as needed during gzlog_write() - gzlog_write() now always leaves the log file as valid gzip - 2.1 8 Jul 2012 Fix argument checks in gzlog_compress() and gzlog_write() - 2.2 14 Aug 2012 Clean up signed comparisons - */ - -/* - The gzlog object allows writing short messages to a gzipped log file, - opening the log file locked for small bursts, and then closing it. The log - object works by appending stored (uncompressed) data to the gzip file until - 1 MB has been accumulated. At that time, the stored data is compressed, and - replaces the uncompressed data in the file. The log file is truncated to - its new size at that time. After each write operation, the log file is a - valid gzip file that can decompressed to recover what was written. - - The gzlog operations can be interupted at any point due to an application or - system crash, and the log file will be recovered the next time the log is - opened with gzlog_open(). - */ - -#ifndef GZLOG_H -#define GZLOG_H - -/* gzlog object type */ -typedef void gzlog; - -/* Open a gzlog object, creating the log file if it does not exist. Return - NULL on error. Note that gzlog_open() could take a while to complete if it - has to wait to verify that a lock is stale (possibly for five minutes), or - if there is significant contention with other instantiations of this object - when locking the resource. path is the prefix of the file names created by - this object. If path is "foo", then the log file will be "foo.gz", and - other auxiliary files will be created and destroyed during the process: - "foo.dict" for a compression dictionary, "foo.temp" for a temporary (next) - dictionary, "foo.add" for data being added or compressed, "foo.lock" for the - lock file, and "foo.repairs" to log recovery operations performed due to - interrupted gzlog operations. A gzlog_open() followed by a gzlog_close() - will recover a previously interrupted operation, if any. */ -gzlog *gzlog_open(char *path); - -/* Write to a gzlog object. Return zero on success, -1 if there is a file i/o - error on any of the gzlog files (this should not happen if gzlog_open() - succeeded, unless the device has run out of space or leftover auxiliary - files have permissions or ownership that prevent their use), -2 if there is - a memory allocation failure, or -3 if the log argument is invalid (e.g. if - it was not created by gzlog_open()). This function will write data to the - file uncompressed, until 1 MB has been accumulated, at which time that data - will be compressed. The log file will be a valid gzip file upon successful - return. */ -int gzlog_write(gzlog *log, void *data, size_t len); - -/* Force compression of any uncompressed data in the log. This should be used - sparingly, if at all. The main application would be when a log file will - not be appended to again. If this is used to compress frequently while - appending, it will both significantly increase the execution time and - reduce the compression ratio. The return codes are the same as for - gzlog_write(). */ -int gzlog_compress(gzlog *log); - -/* Close a gzlog object. Return zero on success, -3 if the log argument is - invalid. The log object is freed, and so cannot be referenced again. */ -int gzlog_close(gzlog *log); - -#endif diff --git a/platform/win32/msvc/external/zlib/examples/zlib_how.html b/platform/win32/msvc/external/zlib/examples/zlib_how.html deleted file mode 100644 index 444ff1c9a32..00000000000 --- a/platform/win32/msvc/external/zlib/examples/zlib_how.html +++ /dev/null @@ -1,545 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" - "http://www.w3.org/TR/REC-html40/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> -<title>zlib Usage Example - - - -

zlib Usage Example

-We often get questions about how the deflate() and inflate() functions should be used. -Users wonder when they should provide more input, when they should use more output, -what to do with a Z_BUF_ERROR, how to make sure the process terminates properly, and -so on. So for those who have read zlib.h (a few times), and -would like further edification, below is an annotated example in C of simple routines to compress and decompress -from an input file to an output file using deflate() and inflate() respectively. The -annotations are interspersed between lines of the code. So please read between the lines. -We hope this helps explain some of the intricacies of zlib. -

-Without further adieu, here is the program zpipe.c: -


-/* zpipe.c: example of proper use of zlib's inflate() and deflate()
-   Not copyrighted -- provided to the public domain
-   Version 1.4  11 December 2005  Mark Adler */
-
-/* Version history:
-   1.0  30 Oct 2004  First version
-   1.1   8 Nov 2004  Add void casting for unused return values
-                     Use switch statement for inflate() return values
-   1.2   9 Nov 2004  Add assertions to document zlib guarantees
-   1.3   6 Apr 2005  Remove incorrect assertion in inf()
-   1.4  11 Dec 2005  Add hack to avoid MSDOS end-of-line conversions
-                     Avoid some compiler warnings for input and output buffers
- */
-
-We now include the header files for the required definitions. From -stdio.h we use fopen(), fread(), fwrite(), -feof(), ferror(), and fclose() for file i/o, and -fputs() for error messages. From string.h we use -strcmp() for command line argument processing. -From assert.h we use the assert() macro. -From zlib.h -we use the basic compression functions deflateInit(), -deflate(), and deflateEnd(), and the basic decompression -functions inflateInit(), inflate(), and -inflateEnd(). -

-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-#include "zlib.h"
-
-This is an ugly hack required to avoid corruption of the input and output data on -Windows/MS-DOS systems. Without this, those systems would assume that the input and output -files are text, and try to convert the end-of-line characters from one standard to -another. That would corrupt binary data, and in particular would render the compressed data unusable. -This sets the input and output to binary which suppresses the end-of-line conversions. -SET_BINARY_MODE() will be used later on stdin and stdout, at the beginning of main(). -

-#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__)
-#  include <fcntl.h>
-#  include <io.h>
-#  define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY)
-#else
-#  define SET_BINARY_MODE(file)
-#endif
-
-CHUNK is simply the buffer size for feeding data to and pulling data -from the zlib routines. Larger buffer sizes would be more efficient, -especially for inflate(). If the memory is available, buffers sizes -on the order of 128K or 256K bytes should be used. -

-#define CHUNK 16384
-
-The def() routine compresses data from an input file to an output file. The output data -will be in the zlib format, which is different from the gzip or zip -formats. The zlib format has a very small header of only two bytes to identify it as -a zlib stream and to provide decoding information, and a four-byte trailer with a fast -check value to verify the integrity of the uncompressed data after decoding. -

-/* Compress from file source to file dest until EOF on source.
-   def() returns Z_OK on success, Z_MEM_ERROR if memory could not be
-   allocated for processing, Z_STREAM_ERROR if an invalid compression
-   level is supplied, Z_VERSION_ERROR if the version of zlib.h and the
-   version of the library linked do not match, or Z_ERRNO if there is
-   an error reading or writing the files. */
-int def(FILE *source, FILE *dest, int level)
-{
-
-Here are the local variables for def(). ret will be used for zlib -return codes. flush will keep track of the current flushing state for deflate(), -which is either no flushing, or flush to completion after the end of the input file is reached. -have is the amount of data returned from deflate(). The strm structure -is used to pass information to and from the zlib routines, and to maintain the -deflate() state. in and out are the input and output buffers for -deflate(). -

-    int ret, flush;
-    unsigned have;
-    z_stream strm;
-    unsigned char in[CHUNK];
-    unsigned char out[CHUNK];
-
-The first thing we do is to initialize the zlib state for compression using -deflateInit(). This must be done before the first use of deflate(). -The zalloc, zfree, and opaque fields in the strm -structure must be initialized before calling deflateInit(). Here they are -set to the zlib constant Z_NULL to request that zlib use -the default memory allocation routines. An application may also choose to provide -custom memory allocation routines here. deflateInit() will allocate on the -order of 256K bytes for the internal state. -(See zlib Technical Details.) -

-deflateInit() is called with a pointer to the structure to be initialized and -the compression level, which is an integer in the range of -1 to 9. Lower compression -levels result in faster execution, but less compression. Higher levels result in -greater compression, but slower execution. The zlib constant Z_DEFAULT_COMPRESSION, -equal to -1, -provides a good compromise between compression and speed and is equivalent to level 6. -Level 0 actually does no compression at all, and in fact expands the data slightly to produce -the zlib format (it is not a byte-for-byte copy of the input). -More advanced applications of zlib -may use deflateInit2() here instead. Such an application may want to reduce how -much memory will be used, at some price in compression. Or it may need to request a -gzip header and trailer instead of a zlib header and trailer, or raw -encoding with no header or trailer at all. -

-We must check the return value of deflateInit() against the zlib constant -Z_OK to make sure that it was able to -allocate memory for the internal state, and that the provided arguments were valid. -deflateInit() will also check that the version of zlib that the zlib.h -file came from matches the version of zlib actually linked with the program. This -is especially important for environments in which zlib is a shared library. -

-Note that an application can initialize multiple, independent zlib streams, which can -operate in parallel. The state information maintained in the structure allows the zlib -routines to be reentrant. -


-    /* allocate deflate state */
-    strm.zalloc = Z_NULL;
-    strm.zfree = Z_NULL;
-    strm.opaque = Z_NULL;
-    ret = deflateInit(&strm, level);
-    if (ret != Z_OK)
-        return ret;
-
-With the pleasantries out of the way, now we can get down to business. The outer do-loop -reads all of the input file and exits at the bottom of the loop once end-of-file is reached. -This loop contains the only call of deflate(). So we must make sure that all of the -input data has been processed and that all of the output data has been generated and consumed -before we fall out of the loop at the bottom. -

-    /* compress until end of file */
-    do {
-
-We start off by reading data from the input file. The number of bytes read is put directly -into avail_in, and a pointer to those bytes is put into next_in. We also -check to see if end-of-file on the input has been reached. If we are at the end of file, then flush is set to the -zlib constant Z_FINISH, which is later passed to deflate() to -indicate that this is the last chunk of input data to compress. We need to use feof() -to check for end-of-file as opposed to seeing if fewer than CHUNK bytes have been read. The -reason is that if the input file length is an exact multiple of CHUNK, we will miss -the fact that we got to the end-of-file, and not know to tell deflate() to finish -up the compressed stream. If we are not yet at the end of the input, then the zlib -constant Z_NO_FLUSH will be passed to deflate to indicate that we are still -in the middle of the uncompressed data. -

-If there is an error in reading from the input file, the process is aborted with -deflateEnd() being called to free the allocated zlib state before returning -the error. We wouldn't want a memory leak, now would we? deflateEnd() can be called -at any time after the state has been initialized. Once that's done, deflateInit() (or -deflateInit2()) would have to be called to start a new compression process. There is -no point here in checking the deflateEnd() return code. The deallocation can't fail. -


-        strm.avail_in = fread(in, 1, CHUNK, source);
-        if (ferror(source)) {
-            (void)deflateEnd(&strm);
-            return Z_ERRNO;
-        }
-        flush = feof(source) ? Z_FINISH : Z_NO_FLUSH;
-        strm.next_in = in;
-
-The inner do-loop passes our chunk of input data to deflate(), and then -keeps calling deflate() until it is done producing output. Once there is no more -new output, deflate() is guaranteed to have consumed all of the input, i.e., -avail_in will be zero. -

-        /* run deflate() on input until output buffer not full, finish
-           compression if all of source has been read in */
-        do {
-
-Output space is provided to deflate() by setting avail_out to the number -of available output bytes and next_out to a pointer to that space. -

-            strm.avail_out = CHUNK;
-            strm.next_out = out;
-
-Now we call the compression engine itself, deflate(). It takes as many of the -avail_in bytes at next_in as it can process, and writes as many as -avail_out bytes to next_out. Those counters and pointers are then -updated past the input data consumed and the output data written. It is the amount of -output space available that may limit how much input is consumed. -Hence the inner loop to make sure that -all of the input is consumed by providing more output space each time. Since avail_in -and next_in are updated by deflate(), we don't have to mess with those -between deflate() calls until it's all used up. -

-The parameters to deflate() are a pointer to the strm structure containing -the input and output information and the internal compression engine state, and a parameter -indicating whether and how to flush data to the output. Normally deflate will consume -several K bytes of input data before producing any output (except for the header), in order -to accumulate statistics on the data for optimum compression. It will then put out a burst of -compressed data, and proceed to consume more input before the next burst. Eventually, -deflate() -must be told to terminate the stream, complete the compression with provided input data, and -write out the trailer check value. deflate() will continue to compress normally as long -as the flush parameter is Z_NO_FLUSH. Once the Z_FINISH parameter is provided, -deflate() will begin to complete the compressed output stream. However depending on how -much output space is provided, deflate() may have to be called several times until it -has provided the complete compressed stream, even after it has consumed all of the input. The flush -parameter must continue to be Z_FINISH for those subsequent calls. -

-There are other values of the flush parameter that are used in more advanced applications. You can -force deflate() to produce a burst of output that encodes all of the input data provided -so far, even if it wouldn't have otherwise, for example to control data latency on a link with -compressed data. You can also ask that deflate() do that as well as erase any history up to -that point so that what follows can be decompressed independently, for example for random access -applications. Both requests will degrade compression by an amount depending on how often such -requests are made. -

-deflate() has a return value that can indicate errors, yet we do not check it here. Why -not? Well, it turns out that deflate() can do no wrong here. Let's go through -deflate()'s return values and dispense with them one by one. The possible values are -Z_OK, Z_STREAM_END, Z_STREAM_ERROR, or Z_BUF_ERROR. Z_OK -is, well, ok. Z_STREAM_END is also ok and will be returned for the last call of -deflate(). This is already guaranteed by calling deflate() with Z_FINISH -until it has no more output. Z_STREAM_ERROR is only possible if the stream is not -initialized properly, but we did initialize it properly. There is no harm in checking for -Z_STREAM_ERROR here, for example to check for the possibility that some -other part of the application inadvertently clobbered the memory containing the zlib state. -Z_BUF_ERROR will be explained further below, but -suffice it to say that this is simply an indication that deflate() could not consume -more input or produce more output. deflate() can be called again with more output space -or more available input, which it will be in this code. -


-            ret = deflate(&strm, flush);    /* no bad return value */
-            assert(ret != Z_STREAM_ERROR);  /* state not clobbered */
-
-Now we compute how much output deflate() provided on the last call, which is the -difference between how much space was provided before the call, and how much output space -is still available after the call. Then that data, if any, is written to the output file. -We can then reuse the output buffer for the next call of deflate(). Again if there -is a file i/o error, we call deflateEnd() before returning to avoid a memory leak. -

-            have = CHUNK - strm.avail_out;
-            if (fwrite(out, 1, have, dest) != have || ferror(dest)) {
-                (void)deflateEnd(&strm);
-                return Z_ERRNO;
-            }
-
-The inner do-loop is repeated until the last deflate() call fails to fill the -provided output buffer. Then we know that deflate() has done as much as it can with -the provided input, and that all of that input has been consumed. We can then fall out of this -loop and reuse the input buffer. -

-The way we tell that deflate() has no more output is by seeing that it did not fill -the output buffer, leaving avail_out greater than zero. However suppose that -deflate() has no more output, but just so happened to exactly fill the output buffer! -avail_out is zero, and we can't tell that deflate() has done all it can. -As far as we know, deflate() -has more output for us. So we call it again. But now deflate() produces no output -at all, and avail_out remains unchanged as CHUNK. That deflate() call -wasn't able to do anything, either consume input or produce output, and so it returns -Z_BUF_ERROR. (See, I told you I'd cover this later.) However this is not a problem at -all. Now we finally have the desired indication that deflate() is really done, -and so we drop out of the inner loop to provide more input to deflate(). -

-With flush set to Z_FINISH, this final set of deflate() calls will -complete the output stream. Once that is done, subsequent calls of deflate() would return -Z_STREAM_ERROR if the flush parameter is not Z_FINISH, and do no more processing -until the state is reinitialized. -

-Some applications of zlib have two loops that call deflate() -instead of the single inner loop we have here. The first loop would call -without flushing and feed all of the data to deflate(). The second loop would call -deflate() with no more -data and the Z_FINISH parameter to complete the process. As you can see from this -example, that can be avoided by simply keeping track of the current flush state. -


-        } while (strm.avail_out == 0);
-        assert(strm.avail_in == 0);     /* all input will be used */
-
-Now we check to see if we have already processed all of the input file. That information was -saved in the flush variable, so we see if that was set to Z_FINISH. If so, -then we're done and we fall out of the outer loop. We're guaranteed to get Z_STREAM_END -from the last deflate() call, since we ran it until the last chunk of input was -consumed and all of the output was generated. -

-        /* done when last data in file processed */
-    } while (flush != Z_FINISH);
-    assert(ret == Z_STREAM_END);        /* stream will be complete */
-
-The process is complete, but we still need to deallocate the state to avoid a memory leak -(or rather more like a memory hemorrhage if you didn't do this). Then -finally we can return with a happy return value. -

-    /* clean up and return */
-    (void)deflateEnd(&strm);
-    return Z_OK;
-}
-
-Now we do the same thing for decompression in the inf() routine. inf() -decompresses what is hopefully a valid zlib stream from the input file and writes the -uncompressed data to the output file. Much of the discussion above for def() -applies to inf() as well, so the discussion here will focus on the differences between -the two. -

-/* Decompress from file source to file dest until stream ends or EOF.
-   inf() returns Z_OK on success, Z_MEM_ERROR if memory could not be
-   allocated for processing, Z_DATA_ERROR if the deflate data is
-   invalid or incomplete, Z_VERSION_ERROR if the version of zlib.h and
-   the version of the library linked do not match, or Z_ERRNO if there
-   is an error reading or writing the files. */
-int inf(FILE *source, FILE *dest)
-{
-
-The local variables have the same functionality as they do for def(). The -only difference is that there is no flush variable, since inflate() -can tell from the zlib stream itself when the stream is complete. -

-    int ret;
-    unsigned have;
-    z_stream strm;
-    unsigned char in[CHUNK];
-    unsigned char out[CHUNK];
-
-The initialization of the state is the same, except that there is no compression level, -of course, and two more elements of the structure are initialized. avail_in -and next_in must be initialized before calling inflateInit(). This -is because the application has the option to provide the start of the zlib stream in -order for inflateInit() to have access to information about the compression -method to aid in memory allocation. In the current implementation of zlib -(up through versions 1.2.x), the method-dependent memory allocations are deferred to the first call of -inflate() anyway. However those fields must be initialized since later versions -of zlib that provide more compression methods may take advantage of this interface. -In any case, no decompression is performed by inflateInit(), so the -avail_out and next_out fields do not need to be initialized before calling. -

-Here avail_in is set to zero and next_in is set to Z_NULL to -indicate that no input data is being provided. -


-    /* allocate inflate state */
-    strm.zalloc = Z_NULL;
-    strm.zfree = Z_NULL;
-    strm.opaque = Z_NULL;
-    strm.avail_in = 0;
-    strm.next_in = Z_NULL;
-    ret = inflateInit(&strm);
-    if (ret != Z_OK)
-        return ret;
-
-The outer do-loop decompresses input until inflate() indicates -that it has reached the end of the compressed data and has produced all of the uncompressed -output. This is in contrast to def() which processes all of the input file. -If end-of-file is reached before the compressed data self-terminates, then the compressed -data is incomplete and an error is returned. -

-    /* decompress until deflate stream ends or end of file */
-    do {
-
-We read input data and set the strm structure accordingly. If we've reached the -end of the input file, then we leave the outer loop and report an error, since the -compressed data is incomplete. Note that we may read more data than is eventually consumed -by inflate(), if the input file continues past the zlib stream. -For applications where zlib streams are embedded in other data, this routine would -need to be modified to return the unused data, or at least indicate how much of the input -data was not used, so the application would know where to pick up after the zlib stream. -

-        strm.avail_in = fread(in, 1, CHUNK, source);
-        if (ferror(source)) {
-            (void)inflateEnd(&strm);
-            return Z_ERRNO;
-        }
-        if (strm.avail_in == 0)
-            break;
-        strm.next_in = in;
-
-The inner do-loop has the same function it did in def(), which is to -keep calling inflate() until has generated all of the output it can with the -provided input. -

-        /* run inflate() on input until output buffer not full */
-        do {
-
-Just like in def(), the same output space is provided for each call of inflate(). -

-            strm.avail_out = CHUNK;
-            strm.next_out = out;
-
-Now we run the decompression engine itself. There is no need to adjust the flush parameter, since -the zlib format is self-terminating. The main difference here is that there are -return values that we need to pay attention to. Z_DATA_ERROR -indicates that inflate() detected an error in the zlib compressed data format, -which means that either the data is not a zlib stream to begin with, or that the data was -corrupted somewhere along the way since it was compressed. The other error to be processed is -Z_MEM_ERROR, which can occur since memory allocation is deferred until inflate() -needs it, unlike deflate(), whose memory is allocated at the start by deflateInit(). -

-Advanced applications may use -deflateSetDictionary() to prime deflate() with a set of likely data to improve the -first 32K or so of compression. This is noted in the zlib header, so inflate() -requests that that dictionary be provided before it can start to decompress. Without the dictionary, -correct decompression is not possible. For this routine, we have no idea what the dictionary is, -so the Z_NEED_DICT indication is converted to a Z_DATA_ERROR. -

-inflate() can also return Z_STREAM_ERROR, which should not be possible here, -but could be checked for as noted above for def(). Z_BUF_ERROR does not need to be -checked for here, for the same reasons noted for def(). Z_STREAM_END will be -checked for later. -


-            ret = inflate(&strm, Z_NO_FLUSH);
-            assert(ret != Z_STREAM_ERROR);  /* state not clobbered */
-            switch (ret) {
-            case Z_NEED_DICT:
-                ret = Z_DATA_ERROR;     /* and fall through */
-            case Z_DATA_ERROR:
-            case Z_MEM_ERROR:
-                (void)inflateEnd(&strm);
-                return ret;
-            }
-
-The output of inflate() is handled identically to that of deflate(). -

-            have = CHUNK - strm.avail_out;
-            if (fwrite(out, 1, have, dest) != have || ferror(dest)) {
-                (void)inflateEnd(&strm);
-                return Z_ERRNO;
-            }
-
-The inner do-loop ends when inflate() has no more output as indicated -by not filling the output buffer, just as for deflate(). In this case, we cannot -assert that strm.avail_in will be zero, since the deflate stream may end before the file -does. -

-        } while (strm.avail_out == 0);
-
-The outer do-loop ends when inflate() reports that it has reached the -end of the input zlib stream, has completed the decompression and integrity -check, and has provided all of the output. This is indicated by the inflate() -return value Z_STREAM_END. The inner loop is guaranteed to leave ret -equal to Z_STREAM_END if the last chunk of the input file read contained the end -of the zlib stream. So if the return value is not Z_STREAM_END, the -loop continues to read more input. -

-        /* done when inflate() says it's done */
-    } while (ret != Z_STREAM_END);
-
-At this point, decompression successfully completed, or we broke out of the loop due to no -more data being available from the input file. If the last inflate() return value -is not Z_STREAM_END, then the zlib stream was incomplete and a data error -is returned. Otherwise, we return with a happy return value. Of course, inflateEnd() -is called first to avoid a memory leak. -

-    /* clean up and return */
-    (void)inflateEnd(&strm);
-    return ret == Z_STREAM_END ? Z_OK : Z_DATA_ERROR;
-}
-
-That ends the routines that directly use zlib. The following routines make this -a command-line program by running data through the above routines from stdin to -stdout, and handling any errors reported by def() or inf(). -

-zerr() is used to interpret the possible error codes from def() -and inf(), as detailed in their comments above, and print out an error message. -Note that these are only a subset of the possible return values from deflate() -and inflate(). -


-/* report a zlib or i/o error */
-void zerr(int ret)
-{
-    fputs("zpipe: ", stderr);
-    switch (ret) {
-    case Z_ERRNO:
-        if (ferror(stdin))
-            fputs("error reading stdin\n", stderr);
-        if (ferror(stdout))
-            fputs("error writing stdout\n", stderr);
-        break;
-    case Z_STREAM_ERROR:
-        fputs("invalid compression level\n", stderr);
-        break;
-    case Z_DATA_ERROR:
-        fputs("invalid or incomplete deflate data\n", stderr);
-        break;
-    case Z_MEM_ERROR:
-        fputs("out of memory\n", stderr);
-        break;
-    case Z_VERSION_ERROR:
-        fputs("zlib version mismatch!\n", stderr);
-    }
-}
-
-Here is the main() routine used to test def() and inf(). The -zpipe command is simply a compression pipe from stdin to stdout, if -no arguments are given, or it is a decompression pipe if zpipe -d is used. If any other -arguments are provided, no compression or decompression is performed. Instead a usage -message is displayed. Examples are zpipe < foo.txt > foo.txt.z to compress, and -zpipe -d < foo.txt.z > foo.txt to decompress. -

-/* compress or decompress from stdin to stdout */
-int main(int argc, char **argv)
-{
-    int ret;
-
-    /* avoid end-of-line conversions */
-    SET_BINARY_MODE(stdin);
-    SET_BINARY_MODE(stdout);
-
-    /* do compression if no arguments */
-    if (argc == 1) {
-        ret = def(stdin, stdout, Z_DEFAULT_COMPRESSION);
-        if (ret != Z_OK)
-            zerr(ret);
-        return ret;
-    }
-
-    /* do decompression if -d specified */
-    else if (argc == 2 && strcmp(argv[1], "-d") == 0) {
-        ret = inf(stdin, stdout);
-        if (ret != Z_OK)
-            zerr(ret);
-        return ret;
-    }
-
-    /* otherwise, report usage */
-    else {
-        fputs("zpipe usage: zpipe [-d] < source > dest\n", stderr);
-        return 1;
-    }
-}
-
-
-Copyright (c) 2004, 2005 by Mark Adler
Last modified 11 December 2005
- - diff --git a/platform/win32/msvc/external/zlib/examples/zpipe.c b/platform/win32/msvc/external/zlib/examples/zpipe.c deleted file mode 100644 index 83535d16935..00000000000 --- a/platform/win32/msvc/external/zlib/examples/zpipe.c +++ /dev/null @@ -1,205 +0,0 @@ -/* zpipe.c: example of proper use of zlib's inflate() and deflate() - Not copyrighted -- provided to the public domain - Version 1.4 11 December 2005 Mark Adler */ - -/* Version history: - 1.0 30 Oct 2004 First version - 1.1 8 Nov 2004 Add void casting for unused return values - Use switch statement for inflate() return values - 1.2 9 Nov 2004 Add assertions to document zlib guarantees - 1.3 6 Apr 2005 Remove incorrect assertion in inf() - 1.4 11 Dec 2005 Add hack to avoid MSDOS end-of-line conversions - Avoid some compiler warnings for input and output buffers - */ - -#include -#include -#include -#include "zlib.h" - -#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__) -# include -# include -# define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY) -#else -# define SET_BINARY_MODE(file) -#endif - -#define CHUNK 16384 - -/* Compress from file source to file dest until EOF on source. - def() returns Z_OK on success, Z_MEM_ERROR if memory could not be - allocated for processing, Z_STREAM_ERROR if an invalid compression - level is supplied, Z_VERSION_ERROR if the version of zlib.h and the - version of the library linked do not match, or Z_ERRNO if there is - an error reading or writing the files. */ -int def(FILE *source, FILE *dest, int level) -{ - int ret, flush; - unsigned have; - z_stream strm; - unsigned char in[CHUNK]; - unsigned char out[CHUNK]; - - /* allocate deflate state */ - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - ret = deflateInit(&strm, level); - if (ret != Z_OK) - return ret; - - /* compress until end of file */ - do { - strm.avail_in = fread(in, 1, CHUNK, source); - if (ferror(source)) { - (void)deflateEnd(&strm); - return Z_ERRNO; - } - flush = feof(source) ? Z_FINISH : Z_NO_FLUSH; - strm.next_in = in; - - /* run deflate() on input until output buffer not full, finish - compression if all of source has been read in */ - do { - strm.avail_out = CHUNK; - strm.next_out = out; - ret = deflate(&strm, flush); /* no bad return value */ - assert(ret != Z_STREAM_ERROR); /* state not clobbered */ - have = CHUNK - strm.avail_out; - if (fwrite(out, 1, have, dest) != have || ferror(dest)) { - (void)deflateEnd(&strm); - return Z_ERRNO; - } - } while (strm.avail_out == 0); - assert(strm.avail_in == 0); /* all input will be used */ - - /* done when last data in file processed */ - } while (flush != Z_FINISH); - assert(ret == Z_STREAM_END); /* stream will be complete */ - - /* clean up and return */ - (void)deflateEnd(&strm); - return Z_OK; -} - -/* Decompress from file source to file dest until stream ends or EOF. - inf() returns Z_OK on success, Z_MEM_ERROR if memory could not be - allocated for processing, Z_DATA_ERROR if the deflate data is - invalid or incomplete, Z_VERSION_ERROR if the version of zlib.h and - the version of the library linked do not match, or Z_ERRNO if there - is an error reading or writing the files. */ -int inf(FILE *source, FILE *dest) -{ - int ret; - unsigned have; - z_stream strm; - unsigned char in[CHUNK]; - unsigned char out[CHUNK]; - - /* allocate inflate state */ - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit(&strm); - if (ret != Z_OK) - return ret; - - /* decompress until deflate stream ends or end of file */ - do { - strm.avail_in = fread(in, 1, CHUNK, source); - if (ferror(source)) { - (void)inflateEnd(&strm); - return Z_ERRNO; - } - if (strm.avail_in == 0) - break; - strm.next_in = in; - - /* run inflate() on input until output buffer not full */ - do { - strm.avail_out = CHUNK; - strm.next_out = out; - ret = inflate(&strm, Z_NO_FLUSH); - assert(ret != Z_STREAM_ERROR); /* state not clobbered */ - switch (ret) { - case Z_NEED_DICT: - ret = Z_DATA_ERROR; /* and fall through */ - case Z_DATA_ERROR: - case Z_MEM_ERROR: - (void)inflateEnd(&strm); - return ret; - } - have = CHUNK - strm.avail_out; - if (fwrite(out, 1, have, dest) != have || ferror(dest)) { - (void)inflateEnd(&strm); - return Z_ERRNO; - } - } while (strm.avail_out == 0); - - /* done when inflate() says it's done */ - } while (ret != Z_STREAM_END); - - /* clean up and return */ - (void)inflateEnd(&strm); - return ret == Z_STREAM_END ? Z_OK : Z_DATA_ERROR; -} - -/* report a zlib or i/o error */ -void zerr(int ret) -{ - fputs("zpipe: ", stderr); - switch (ret) { - case Z_ERRNO: - if (ferror(stdin)) - fputs("error reading stdin\n", stderr); - if (ferror(stdout)) - fputs("error writing stdout\n", stderr); - break; - case Z_STREAM_ERROR: - fputs("invalid compression level\n", stderr); - break; - case Z_DATA_ERROR: - fputs("invalid or incomplete deflate data\n", stderr); - break; - case Z_MEM_ERROR: - fputs("out of memory\n", stderr); - break; - case Z_VERSION_ERROR: - fputs("zlib version mismatch!\n", stderr); - } -} - -/* compress or decompress from stdin to stdout */ -int main(int argc, char **argv) -{ - int ret; - - /* avoid end-of-line conversions */ - SET_BINARY_MODE(stdin); - SET_BINARY_MODE(stdout); - - /* do compression if no arguments */ - if (argc == 1) { - ret = def(stdin, stdout, Z_DEFAULT_COMPRESSION); - if (ret != Z_OK) - zerr(ret); - return ret; - } - - /* do decompression if -d specified */ - else if (argc == 2 && strcmp(argv[1], "-d") == 0) { - ret = inf(stdin, stdout); - if (ret != Z_OK) - zerr(ret); - return ret; - } - - /* otherwise, report usage */ - else { - fputs("zpipe usage: zpipe [-d] < source > dest\n", stderr); - return 1; - } -} diff --git a/platform/win32/msvc/external/zlib/examples/zran.c b/platform/win32/msvc/external/zlib/examples/zran.c deleted file mode 100644 index 278f9ad07d2..00000000000 --- a/platform/win32/msvc/external/zlib/examples/zran.c +++ /dev/null @@ -1,409 +0,0 @@ -/* zran.c -- example of zlib/gzip stream indexing and random access - * Copyright (C) 2005, 2012 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - Version 1.1 29 Sep 2012 Mark Adler */ - -/* Version History: - 1.0 29 May 2005 First version - 1.1 29 Sep 2012 Fix memory reallocation error - */ - -/* Illustrate the use of Z_BLOCK, inflatePrime(), and inflateSetDictionary() - for random access of a compressed file. A file containing a zlib or gzip - stream is provided on the command line. The compressed stream is decoded in - its entirety, and an index built with access points about every SPAN bytes - in the uncompressed output. The compressed file is left open, and can then - be read randomly, having to decompress on the average SPAN/2 uncompressed - bytes before getting to the desired block of data. - - An access point can be created at the start of any deflate block, by saving - the starting file offset and bit of that block, and the 32K bytes of - uncompressed data that precede that block. Also the uncompressed offset of - that block is saved to provide a referece for locating a desired starting - point in the uncompressed stream. build_index() works by decompressing the - input zlib or gzip stream a block at a time, and at the end of each block - deciding if enough uncompressed data has gone by to justify the creation of - a new access point. If so, that point is saved in a data structure that - grows as needed to accommodate the points. - - To use the index, an offset in the uncompressed data is provided, for which - the latest accees point at or preceding that offset is located in the index. - The input file is positioned to the specified location in the index, and if - necessary the first few bits of the compressed data is read from the file. - inflate is initialized with those bits and the 32K of uncompressed data, and - the decompression then proceeds until the desired offset in the file is - reached. Then the decompression continues to read the desired uncompressed - data from the file. - - Another approach would be to generate the index on demand. In that case, - requests for random access reads from the compressed data would try to use - the index, but if a read far enough past the end of the index is required, - then further index entries would be generated and added. - - There is some fair bit of overhead to starting inflation for the random - access, mainly copying the 32K byte dictionary. So if small pieces of the - file are being accessed, it would make sense to implement a cache to hold - some lookahead and avoid many calls to extract() for small lengths. - - Another way to build an index would be to use inflateCopy(). That would - not be constrained to have access points at block boundaries, but requires - more memory per access point, and also cannot be saved to file due to the - use of pointers in the state. The approach here allows for storage of the - index in a file. - */ - -#include -#include -#include -#include "zlib.h" - -#define local static - -#define SPAN 1048576L /* desired distance between access points */ -#define WINSIZE 32768U /* sliding window size */ -#define CHUNK 16384 /* file input buffer size */ - -/* access point entry */ -struct point { - off_t out; /* corresponding offset in uncompressed data */ - off_t in; /* offset in input file of first full byte */ - int bits; /* number of bits (1-7) from byte at in - 1, or 0 */ - unsigned char window[WINSIZE]; /* preceding 32K of uncompressed data */ -}; - -/* access point list */ -struct access { - int have; /* number of list entries filled in */ - int size; /* number of list entries allocated */ - struct point *list; /* allocated list */ -}; - -/* Deallocate an index built by build_index() */ -local void free_index(struct access *index) -{ - if (index != NULL) { - free(index->list); - free(index); - } -} - -/* Add an entry to the access point list. If out of memory, deallocate the - existing list and return NULL. */ -local struct access *addpoint(struct access *index, int bits, - off_t in, off_t out, unsigned left, unsigned char *window) -{ - struct point *next; - - /* if list is empty, create it (start with eight points) */ - if (index == NULL) { - index = malloc(sizeof(struct access)); - if (index == NULL) return NULL; - index->list = malloc(sizeof(struct point) << 3); - if (index->list == NULL) { - free(index); - return NULL; - } - index->size = 8; - index->have = 0; - } - - /* if list is full, make it bigger */ - else if (index->have == index->size) { - index->size <<= 1; - next = realloc(index->list, sizeof(struct point) * index->size); - if (next == NULL) { - free_index(index); - return NULL; - } - index->list = next; - } - - /* fill in entry and increment how many we have */ - next = index->list + index->have; - next->bits = bits; - next->in = in; - next->out = out; - if (left) - memcpy(next->window, window + WINSIZE - left, left); - if (left < WINSIZE) - memcpy(next->window + left, window, WINSIZE - left); - index->have++; - - /* return list, possibly reallocated */ - return index; -} - -/* Make one entire pass through the compressed stream and build an index, with - access points about every span bytes of uncompressed output -- span is - chosen to balance the speed of random access against the memory requirements - of the list, about 32K bytes per access point. Note that data after the end - of the first zlib or gzip stream in the file is ignored. build_index() - returns the number of access points on success (>= 1), Z_MEM_ERROR for out - of memory, Z_DATA_ERROR for an error in the input file, or Z_ERRNO for a - file read error. On success, *built points to the resulting index. */ -local int build_index(FILE *in, off_t span, struct access **built) -{ - int ret; - off_t totin, totout; /* our own total counters to avoid 4GB limit */ - off_t last; /* totout value of last access point */ - struct access *index; /* access points being generated */ - z_stream strm; - unsigned char input[CHUNK]; - unsigned char window[WINSIZE]; - - /* initialize inflate */ - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit2(&strm, 47); /* automatic zlib or gzip decoding */ - if (ret != Z_OK) - return ret; - - /* inflate the input, maintain a sliding window, and build an index -- this - also validates the integrity of the compressed data using the check - information at the end of the gzip or zlib stream */ - totin = totout = last = 0; - index = NULL; /* will be allocated by first addpoint() */ - strm.avail_out = 0; - do { - /* get some compressed data from input file */ - strm.avail_in = fread(input, 1, CHUNK, in); - if (ferror(in)) { - ret = Z_ERRNO; - goto build_index_error; - } - if (strm.avail_in == 0) { - ret = Z_DATA_ERROR; - goto build_index_error; - } - strm.next_in = input; - - /* process all of that, or until end of stream */ - do { - /* reset sliding window if necessary */ - if (strm.avail_out == 0) { - strm.avail_out = WINSIZE; - strm.next_out = window; - } - - /* inflate until out of input, output, or at end of block -- - update the total input and output counters */ - totin += strm.avail_in; - totout += strm.avail_out; - ret = inflate(&strm, Z_BLOCK); /* return at end of block */ - totin -= strm.avail_in; - totout -= strm.avail_out; - if (ret == Z_NEED_DICT) - ret = Z_DATA_ERROR; - if (ret == Z_MEM_ERROR || ret == Z_DATA_ERROR) - goto build_index_error; - if (ret == Z_STREAM_END) - break; - - /* if at end of block, consider adding an index entry (note that if - data_type indicates an end-of-block, then all of the - uncompressed data from that block has been delivered, and none - of the compressed data after that block has been consumed, - except for up to seven bits) -- the totout == 0 provides an - entry point after the zlib or gzip header, and assures that the - index always has at least one access point; we avoid creating an - access point after the last block by checking bit 6 of data_type - */ - if ((strm.data_type & 128) && !(strm.data_type & 64) && - (totout == 0 || totout - last > span)) { - index = addpoint(index, strm.data_type & 7, totin, - totout, strm.avail_out, window); - if (index == NULL) { - ret = Z_MEM_ERROR; - goto build_index_error; - } - last = totout; - } - } while (strm.avail_in != 0); - } while (ret != Z_STREAM_END); - - /* clean up and return index (release unused entries in list) */ - (void)inflateEnd(&strm); - index->list = realloc(index->list, sizeof(struct point) * index->have); - index->size = index->have; - *built = index; - return index->size; - - /* return error */ - build_index_error: - (void)inflateEnd(&strm); - if (index != NULL) - free_index(index); - return ret; -} - -/* Use the index to read len bytes from offset into buf, return bytes read or - negative for error (Z_DATA_ERROR or Z_MEM_ERROR). If data is requested past - the end of the uncompressed data, then extract() will return a value less - than len, indicating how much as actually read into buf. This function - should not return a data error unless the file was modified since the index - was generated. extract() may also return Z_ERRNO if there is an error on - reading or seeking the input file. */ -local int extract(FILE *in, struct access *index, off_t offset, - unsigned char *buf, int len) -{ - int ret, skip; - z_stream strm; - struct point *here; - unsigned char input[CHUNK]; - unsigned char discard[WINSIZE]; - - /* proceed only if something reasonable to do */ - if (len < 0) - return 0; - - /* find where in stream to start */ - here = index->list; - ret = index->have; - while (--ret && here[1].out <= offset) - here++; - - /* initialize file and inflate state to start there */ - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit2(&strm, -15); /* raw inflate */ - if (ret != Z_OK) - return ret; - ret = fseeko(in, here->in - (here->bits ? 1 : 0), SEEK_SET); - if (ret == -1) - goto extract_ret; - if (here->bits) { - ret = getc(in); - if (ret == -1) { - ret = ferror(in) ? Z_ERRNO : Z_DATA_ERROR; - goto extract_ret; - } - (void)inflatePrime(&strm, here->bits, ret >> (8 - here->bits)); - } - (void)inflateSetDictionary(&strm, here->window, WINSIZE); - - /* skip uncompressed bytes until offset reached, then satisfy request */ - offset -= here->out; - strm.avail_in = 0; - skip = 1; /* while skipping to offset */ - do { - /* define where to put uncompressed data, and how much */ - if (offset == 0 && skip) { /* at offset now */ - strm.avail_out = len; - strm.next_out = buf; - skip = 0; /* only do this once */ - } - if (offset > WINSIZE) { /* skip WINSIZE bytes */ - strm.avail_out = WINSIZE; - strm.next_out = discard; - offset -= WINSIZE; - } - else if (offset != 0) { /* last skip */ - strm.avail_out = (unsigned)offset; - strm.next_out = discard; - offset = 0; - } - - /* uncompress until avail_out filled, or end of stream */ - do { - if (strm.avail_in == 0) { - strm.avail_in = fread(input, 1, CHUNK, in); - if (ferror(in)) { - ret = Z_ERRNO; - goto extract_ret; - } - if (strm.avail_in == 0) { - ret = Z_DATA_ERROR; - goto extract_ret; - } - strm.next_in = input; - } - ret = inflate(&strm, Z_NO_FLUSH); /* normal inflate */ - if (ret == Z_NEED_DICT) - ret = Z_DATA_ERROR; - if (ret == Z_MEM_ERROR || ret == Z_DATA_ERROR) - goto extract_ret; - if (ret == Z_STREAM_END) - break; - } while (strm.avail_out != 0); - - /* if reach end of stream, then don't keep trying to get more */ - if (ret == Z_STREAM_END) - break; - - /* do until offset reached and requested data read, or stream ends */ - } while (skip); - - /* compute number of uncompressed bytes read after offset */ - ret = skip ? 0 : len - strm.avail_out; - - /* clean up and return bytes read or error */ - extract_ret: - (void)inflateEnd(&strm); - return ret; -} - -/* Demonstrate the use of build_index() and extract() by processing the file - provided on the command line, and the extracting 16K from about 2/3rds of - the way through the uncompressed output, and writing that to stdout. */ -int main(int argc, char **argv) -{ - int len; - off_t offset; - FILE *in; - struct access *index = NULL; - unsigned char buf[CHUNK]; - - /* open input file */ - if (argc != 2) { - fprintf(stderr, "usage: zran file.gz\n"); - return 1; - } - in = fopen(argv[1], "rb"); - if (in == NULL) { - fprintf(stderr, "zran: could not open %s for reading\n", argv[1]); - return 1; - } - - /* build index */ - len = build_index(in, SPAN, &index); - if (len < 0) { - fclose(in); - switch (len) { - case Z_MEM_ERROR: - fprintf(stderr, "zran: out of memory\n"); - break; - case Z_DATA_ERROR: - fprintf(stderr, "zran: compressed data error in %s\n", argv[1]); - break; - case Z_ERRNO: - fprintf(stderr, "zran: read error on %s\n", argv[1]); - break; - default: - fprintf(stderr, "zran: error %d while building index\n", len); - } - return 1; - } - fprintf(stderr, "zran: built index with %d access points\n", len); - - /* use index by reading some bytes from an arbitrary offset */ - offset = (index->list[index->have - 1].out << 1) / 3; - len = extract(in, index, offset, buf, CHUNK); - if (len < 0) - fprintf(stderr, "zran: extraction failed: %s error\n", - len == Z_MEM_ERROR ? "out of memory" : "input corrupted"); - else { - fwrite(buf, 1, len, stdout); - fprintf(stderr, "zran: extracted %d bytes at %llu\n", len, offset); - } - - /* clean up and exit */ - free_index(index); - fclose(in); - return 0; -} diff --git a/platform/win32/msvc/external/zlib/gzclose.c b/platform/win32/msvc/external/zlib/gzclose.c deleted file mode 100644 index caeb99a3177..00000000000 --- a/platform/win32/msvc/external/zlib/gzclose.c +++ /dev/null @@ -1,25 +0,0 @@ -/* gzclose.c -- zlib gzclose() function - * Copyright (C) 2004, 2010 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "gzguts.h" - -/* gzclose() is in a separate file so that it is linked in only if it is used. - That way the other gzclose functions can be used instead to avoid linking in - unneeded compression or decompression routines. */ -int ZEXPORT gzclose(file) - gzFile file; -{ -#ifndef NO_GZCOMPRESS - gz_statep state; - - if (file == NULL) - return Z_STREAM_ERROR; - state = (gz_statep)file; - - return state->mode == GZ_READ ? gzclose_r(file) : gzclose_w(file); -#else - return gzclose_r(file); -#endif -} diff --git a/platform/win32/msvc/external/zlib/gzguts.h b/platform/win32/msvc/external/zlib/gzguts.h deleted file mode 100644 index d87659d0319..00000000000 --- a/platform/win32/msvc/external/zlib/gzguts.h +++ /dev/null @@ -1,209 +0,0 @@ -/* gzguts.h -- zlib internal header definitions for gz* operations - * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#ifdef _LARGEFILE64_SOURCE -# ifndef _LARGEFILE_SOURCE -# define _LARGEFILE_SOURCE 1 -# endif -# ifdef _FILE_OFFSET_BITS -# undef _FILE_OFFSET_BITS -# endif -#endif - -#ifdef HAVE_HIDDEN -# define ZLIB_INTERNAL __attribute__((visibility ("hidden"))) -#else -# define ZLIB_INTERNAL -#endif - -#include -#include "zlib.h" -#ifdef STDC -# include -# include -# include -#endif -#include - -#ifdef _WIN32 -# include -#endif - -#if defined(__TURBOC__) || defined(_MSC_VER) || defined(_WIN32) -# include -#endif - -#ifdef WINAPI_FAMILY -# define open _open -# define read _read -# define write _write -# define close _close -#endif - -#ifdef NO_DEFLATE /* for compatibility with old definition */ -# define NO_GZCOMPRESS -#endif - -#if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550) -# ifndef HAVE_VSNPRINTF -# define HAVE_VSNPRINTF -# endif -#endif - -#if defined(__CYGWIN__) -# ifndef HAVE_VSNPRINTF -# define HAVE_VSNPRINTF -# endif -#endif - -#if defined(MSDOS) && defined(__BORLANDC__) && (BORLANDC > 0x410) -# ifndef HAVE_VSNPRINTF -# define HAVE_VSNPRINTF -# endif -#endif - -#ifndef HAVE_VSNPRINTF -# ifdef MSDOS -/* vsnprintf may exist on some MS-DOS compilers (DJGPP?), - but for now we just assume it doesn't. */ -# define NO_vsnprintf -# endif -# ifdef __TURBOC__ -# define NO_vsnprintf -# endif -# ifdef WIN32 -/* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */ -# if !defined(vsnprintf) && !defined(NO_vsnprintf) -# if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 ) -# define vsnprintf _vsnprintf -# endif -# endif -# endif -# ifdef __SASC -# define NO_vsnprintf -# endif -# ifdef VMS -# define NO_vsnprintf -# endif -# ifdef __OS400__ -# define NO_vsnprintf -# endif -# ifdef __MVS__ -# define NO_vsnprintf -# endif -#endif - -/* unlike snprintf (which is required in C99, yet still not supported by - Microsoft more than a decade later!), _snprintf does not guarantee null - termination of the result -- however this is only used in gzlib.c where - the result is assured to fit in the space provided */ -#ifdef _MSC_VER -# define snprintf _snprintf -#endif - -#ifndef local -# define local static -#endif -/* compile with -Dlocal if your debugger can't find static symbols */ - -/* gz* functions always use library allocation functions */ -#ifndef STDC - extern voidp malloc OF((uInt size)); - extern void free OF((voidpf ptr)); -#endif - -/* get errno and strerror definition */ -#if defined UNDER_CE -# include -# define zstrerror() gz_strwinerror((DWORD)GetLastError()) -#else -# ifndef NO_STRERROR -# include -# define zstrerror() strerror(errno) -# else -# define zstrerror() "stdio error (consult errno)" -# endif -#endif - -/* provide prototypes for these when building zlib without LFS */ -#if !defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0 - ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); - ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); - ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); - ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); -#endif - -/* default memLevel */ -#if MAX_MEM_LEVEL >= 8 -# define DEF_MEM_LEVEL 8 -#else -# define DEF_MEM_LEVEL MAX_MEM_LEVEL -#endif - -/* default i/o buffer size -- double this for output when reading (this and - twice this must be able to fit in an unsigned type) */ -#define GZBUFSIZE 8192 - -/* gzip modes, also provide a little integrity check on the passed structure */ -#define GZ_NONE 0 -#define GZ_READ 7247 -#define GZ_WRITE 31153 -#define GZ_APPEND 1 /* mode set to GZ_WRITE after the file is opened */ - -/* values for gz_state how */ -#define LOOK 0 /* look for a gzip header */ -#define COPY 1 /* copy input directly */ -#define GZIP 2 /* decompress a gzip stream */ - -/* internal gzip file state data structure */ -typedef struct { - /* exposed contents for gzgetc() macro */ - struct gzFile_s x; /* "x" for exposed */ - /* x.have: number of bytes available at x.next */ - /* x.next: next output data to deliver or write */ - /* x.pos: current position in uncompressed data */ - /* used for both reading and writing */ - int mode; /* see gzip modes above */ - int fd; /* file descriptor */ - char *path; /* path or fd for error messages */ - unsigned size; /* buffer size, zero if not allocated yet */ - unsigned want; /* requested buffer size, default is GZBUFSIZE */ - unsigned char *in; /* input buffer */ - unsigned char *out; /* output buffer (double-sized when reading) */ - int direct; /* 0 if processing gzip, 1 if transparent */ - /* just for reading */ - int how; /* 0: get header, 1: copy, 2: decompress */ - z_off64_t start; /* where the gzip data started, for rewinding */ - int eof; /* true if end of input file reached */ - int past; /* true if read requested past end */ - /* just for writing */ - int level; /* compression level */ - int strategy; /* compression strategy */ - /* seek request */ - z_off64_t skip; /* amount to skip (already rewound if backwards) */ - int seek; /* true if seek request pending */ - /* error information */ - int err; /* error code */ - char *msg; /* error message */ - /* zlib inflate or deflate stream */ - z_stream strm; /* stream structure in-place (not a pointer) */ -} gz_state; -typedef gz_state FAR *gz_statep; - -/* shared functions */ -void ZLIB_INTERNAL gz_error OF((gz_statep, int, const char *)); -#if defined UNDER_CE -char ZLIB_INTERNAL *gz_strwinerror OF((DWORD error)); -#endif - -/* GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t - value -- needed when comparing unsigned to z_off64_t, which is signed - (possible z_off64_t types off_t, off64_t, and long are all signed) */ -#ifdef INT_MAX -# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > INT_MAX) -#else -unsigned ZLIB_INTERNAL gz_intmax OF((void)); -# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax()) -#endif diff --git a/platform/win32/msvc/external/zlib/gzlib.c b/platform/win32/msvc/external/zlib/gzlib.c deleted file mode 100644 index fae202ef890..00000000000 --- a/platform/win32/msvc/external/zlib/gzlib.c +++ /dev/null @@ -1,634 +0,0 @@ -/* gzlib.c -- zlib functions common to reading and writing gzip files - * Copyright (C) 2004, 2010, 2011, 2012, 2013 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "gzguts.h" - -#if defined(_WIN32) && !defined(__BORLANDC__) -# define LSEEK _lseeki64 -#else -#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 -# define LSEEK lseek64 -#else -# define LSEEK lseek -#endif -#endif - -/* Local functions */ -local void gz_reset OF((gz_statep)); -local gzFile gz_open OF((const void *, int, const char *)); - -#if defined UNDER_CE - -/* Map the Windows error number in ERROR to a locale-dependent error message - string and return a pointer to it. Typically, the values for ERROR come - from GetLastError. - - The string pointed to shall not be modified by the application, but may be - overwritten by a subsequent call to gz_strwinerror - - The gz_strwinerror function does not change the current setting of - GetLastError. */ -char ZLIB_INTERNAL *gz_strwinerror (error) - DWORD error; -{ - static char buf[1024]; - - wchar_t *msgbuf; - DWORD lasterr = GetLastError(); - DWORD chars = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM - | FORMAT_MESSAGE_ALLOCATE_BUFFER, - NULL, - error, - 0, /* Default language */ - (LPVOID)&msgbuf, - 0, - NULL); - if (chars != 0) { - /* If there is an \r\n appended, zap it. */ - if (chars >= 2 - && msgbuf[chars - 2] == '\r' && msgbuf[chars - 1] == '\n') { - chars -= 2; - msgbuf[chars] = 0; - } - - if (chars > sizeof (buf) - 1) { - chars = sizeof (buf) - 1; - msgbuf[chars] = 0; - } - - wcstombs(buf, msgbuf, chars + 1); - LocalFree(msgbuf); - } - else { - sprintf(buf, "unknown win32 error (%ld)", error); - } - - SetLastError(lasterr); - return buf; -} - -#endif /* UNDER_CE */ - -/* Reset gzip file state */ -local void gz_reset(state) - gz_statep state; -{ - state->x.have = 0; /* no output data available */ - if (state->mode == GZ_READ) { /* for reading ... */ - state->eof = 0; /* not at end of file */ - state->past = 0; /* have not read past end yet */ - state->how = LOOK; /* look for gzip header */ - } - state->seek = 0; /* no seek request pending */ - gz_error(state, Z_OK, NULL); /* clear error */ - state->x.pos = 0; /* no uncompressed data yet */ - state->strm.avail_in = 0; /* no input data yet */ -} - -/* Open a gzip file either by name or file descriptor. */ -local gzFile gz_open(path, fd, mode) - const void *path; - int fd; - const char *mode; -{ - gz_statep state; - size_t len; - int oflag; -#ifdef O_CLOEXEC - int cloexec = 0; -#endif -#ifdef O_EXCL - int exclusive = 0; -#endif - - /* check input */ - if (path == NULL) - return NULL; - - /* allocate gzFile structure to return */ - state = (gz_statep)malloc(sizeof(gz_state)); - if (state == NULL) - return NULL; - state->size = 0; /* no buffers allocated yet */ - state->want = GZBUFSIZE; /* requested buffer size */ - state->msg = NULL; /* no error message yet */ - - /* interpret mode */ - state->mode = GZ_NONE; - state->level = Z_DEFAULT_COMPRESSION; - state->strategy = Z_DEFAULT_STRATEGY; - state->direct = 0; - while (*mode) { - if (*mode >= '0' && *mode <= '9') - state->level = *mode - '0'; - else - switch (*mode) { - case 'r': - state->mode = GZ_READ; - break; -#ifndef NO_GZCOMPRESS - case 'w': - state->mode = GZ_WRITE; - break; - case 'a': - state->mode = GZ_APPEND; - break; -#endif - case '+': /* can't read and write at the same time */ - free(state); - return NULL; - case 'b': /* ignore -- will request binary anyway */ - break; -#ifdef O_CLOEXEC - case 'e': - cloexec = 1; - break; -#endif -#ifdef O_EXCL - case 'x': - exclusive = 1; - break; -#endif - case 'f': - state->strategy = Z_FILTERED; - break; - case 'h': - state->strategy = Z_HUFFMAN_ONLY; - break; - case 'R': - state->strategy = Z_RLE; - break; - case 'F': - state->strategy = Z_FIXED; - break; - case 'T': - state->direct = 1; - break; - default: /* could consider as an error, but just ignore */ - ; - } - mode++; - } - - /* must provide an "r", "w", or "a" */ - if (state->mode == GZ_NONE) { - free(state); - return NULL; - } - - /* can't force transparent read */ - if (state->mode == GZ_READ) { - if (state->direct) { - free(state); - return NULL; - } - state->direct = 1; /* for empty file */ - } - - /* save the path name for error messages */ -#ifdef _WIN32 - if (fd == -2) { - len = wcstombs(NULL, path, 0); - if (len == (size_t)-1) - len = 0; - } - else -#endif - len = strlen((const char *)path); - state->path = (char *)malloc(len + 1); - if (state->path == NULL) { - free(state); - return NULL; - } -#ifdef _WIN32 - if (fd == -2) - if (len) - wcstombs(state->path, path, len + 1); - else - *(state->path) = 0; - else -#endif -#if !defined(NO_snprintf) && !defined(NO_vsnprintf) - snprintf(state->path, len + 1, "%s", (const char *)path); -#else - strcpy(state->path, path); -#endif - - /* compute the flags for open() */ - oflag = -#ifdef O_LARGEFILE - O_LARGEFILE | -#endif -#ifdef O_BINARY - O_BINARY | -#endif -#ifdef O_CLOEXEC - (cloexec ? O_CLOEXEC : 0) | -#endif - (state->mode == GZ_READ ? - O_RDONLY : - (O_WRONLY | O_CREAT | -#ifdef O_EXCL - (exclusive ? O_EXCL : 0) | -#endif - (state->mode == GZ_WRITE ? - O_TRUNC : - O_APPEND))); - - /* open the file with the appropriate flags (or just use fd) */ - state->fd = fd > -1 ? fd : ( -#ifdef _WIN32 - fd == -2 ? _wopen(path, oflag, 0666) : -#endif - open((const char *)path, oflag, 0666)); - if (state->fd == -1) { - free(state->path); - free(state); - return NULL; - } - if (state->mode == GZ_APPEND) - state->mode = GZ_WRITE; /* simplify later checks */ - - /* save the current position for rewinding (only if reading) */ - if (state->mode == GZ_READ) { - state->start = LSEEK(state->fd, 0, SEEK_CUR); - if (state->start == -1) state->start = 0; - } - - /* initialize stream */ - gz_reset(state); - - /* return stream */ - return (gzFile)state; -} - -/* -- see zlib.h -- */ -gzFile ZEXPORT gzopen(path, mode) - const char *path; - const char *mode; -{ - return gz_open(path, -1, mode); -} - -/* -- see zlib.h -- */ -gzFile ZEXPORT gzopen64(path, mode) - const char *path; - const char *mode; -{ - return gz_open(path, -1, mode); -} - -/* -- see zlib.h -- */ -gzFile ZEXPORT gzdopen(fd, mode) - int fd; - const char *mode; -{ - char *path; /* identifier for error messages */ - gzFile gz; - - if (fd == -1 || (path = (char *)malloc(7 + 3 * sizeof(int))) == NULL) - return NULL; -#if !defined(NO_snprintf) && !defined(NO_vsnprintf) - snprintf(path, 7 + 3 * sizeof(int), "", fd); /* for debugging */ -#else - sprintf(path, "", fd); /* for debugging */ -#endif - gz = gz_open(path, fd, mode); - free(path); - return gz; -} - -/* -- see zlib.h -- */ -#ifdef _WIN32 -gzFile ZEXPORT gzopen_w(path, mode) - const wchar_t *path; - const char *mode; -{ - return gz_open(path, -2, mode); -} -#endif - -/* -- see zlib.h -- */ -int ZEXPORT gzbuffer(file, size) - gzFile file; - unsigned size; -{ - gz_statep state; - - /* get internal structure and check integrity */ - if (file == NULL) - return -1; - state = (gz_statep)file; - if (state->mode != GZ_READ && state->mode != GZ_WRITE) - return -1; - - /* make sure we haven't already allocated memory */ - if (state->size != 0) - return -1; - - /* check and set requested size */ - if (size < 2) - size = 2; /* need two bytes to check magic header */ - state->want = size; - return 0; -} - -/* -- see zlib.h -- */ -int ZEXPORT gzrewind(file) - gzFile file; -{ - gz_statep state; - - /* get internal structure */ - if (file == NULL) - return -1; - state = (gz_statep)file; - - /* check that we're reading and that there's no error */ - if (state->mode != GZ_READ || - (state->err != Z_OK && state->err != Z_BUF_ERROR)) - return -1; - - /* back up and start over */ - if (LSEEK(state->fd, state->start, SEEK_SET) == -1) - return -1; - gz_reset(state); - return 0; -} - -/* -- see zlib.h -- */ -z_off64_t ZEXPORT gzseek64(file, offset, whence) - gzFile file; - z_off64_t offset; - int whence; -{ - unsigned n; - z_off64_t ret; - gz_statep state; - - /* get internal structure and check integrity */ - if (file == NULL) - return -1; - state = (gz_statep)file; - if (state->mode != GZ_READ && state->mode != GZ_WRITE) - return -1; - - /* check that there's no error */ - if (state->err != Z_OK && state->err != Z_BUF_ERROR) - return -1; - - /* can only seek from start or relative to current position */ - if (whence != SEEK_SET && whence != SEEK_CUR) - return -1; - - /* normalize offset to a SEEK_CUR specification */ - if (whence == SEEK_SET) - offset -= state->x.pos; - else if (state->seek) - offset += state->skip; - state->seek = 0; - - /* if within raw area while reading, just go there */ - if (state->mode == GZ_READ && state->how == COPY && - state->x.pos + offset >= 0) { - ret = LSEEK(state->fd, offset - state->x.have, SEEK_CUR); - if (ret == -1) - return -1; - state->x.have = 0; - state->eof = 0; - state->past = 0; - state->seek = 0; - gz_error(state, Z_OK, NULL); - state->strm.avail_in = 0; - state->x.pos += offset; - return state->x.pos; - } - - /* calculate skip amount, rewinding if needed for back seek when reading */ - if (offset < 0) { - if (state->mode != GZ_READ) /* writing -- can't go backwards */ - return -1; - offset += state->x.pos; - if (offset < 0) /* before start of file! */ - return -1; - if (gzrewind(file) == -1) /* rewind, then skip to offset */ - return -1; - } - - /* if reading, skip what's in output buffer (one less gzgetc() check) */ - if (state->mode == GZ_READ) { - n = GT_OFF(state->x.have) || (z_off64_t)state->x.have > offset ? - (unsigned)offset : state->x.have; - state->x.have -= n; - state->x.next += n; - state->x.pos += n; - offset -= n; - } - - /* request skip (if not zero) */ - if (offset) { - state->seek = 1; - state->skip = offset; - } - return state->x.pos + offset; -} - -/* -- see zlib.h -- */ -z_off_t ZEXPORT gzseek(file, offset, whence) - gzFile file; - z_off_t offset; - int whence; -{ - z_off64_t ret; - - ret = gzseek64(file, (z_off64_t)offset, whence); - return ret == (z_off_t)ret ? (z_off_t)ret : -1; -} - -/* -- see zlib.h -- */ -z_off64_t ZEXPORT gztell64(file) - gzFile file; -{ - gz_statep state; - - /* get internal structure and check integrity */ - if (file == NULL) - return -1; - state = (gz_statep)file; - if (state->mode != GZ_READ && state->mode != GZ_WRITE) - return -1; - - /* return position */ - return state->x.pos + (state->seek ? state->skip : 0); -} - -/* -- see zlib.h -- */ -z_off_t ZEXPORT gztell(file) - gzFile file; -{ - z_off64_t ret; - - ret = gztell64(file); - return ret == (z_off_t)ret ? (z_off_t)ret : -1; -} - -/* -- see zlib.h -- */ -z_off64_t ZEXPORT gzoffset64(file) - gzFile file; -{ - z_off64_t offset; - gz_statep state; - - /* get internal structure and check integrity */ - if (file == NULL) - return -1; - state = (gz_statep)file; - if (state->mode != GZ_READ && state->mode != GZ_WRITE) - return -1; - - /* compute and return effective offset in file */ - offset = LSEEK(state->fd, 0, SEEK_CUR); - if (offset == -1) - return -1; - if (state->mode == GZ_READ) /* reading */ - offset -= state->strm.avail_in; /* don't count buffered input */ - return offset; -} - -/* -- see zlib.h -- */ -z_off_t ZEXPORT gzoffset(file) - gzFile file; -{ - z_off64_t ret; - - ret = gzoffset64(file); - return ret == (z_off_t)ret ? (z_off_t)ret : -1; -} - -/* -- see zlib.h -- */ -int ZEXPORT gzeof(file) - gzFile file; -{ - gz_statep state; - - /* get internal structure and check integrity */ - if (file == NULL) - return 0; - state = (gz_statep)file; - if (state->mode != GZ_READ && state->mode != GZ_WRITE) - return 0; - - /* return end-of-file state */ - return state->mode == GZ_READ ? state->past : 0; -} - -/* -- see zlib.h -- */ -const char * ZEXPORT gzerror(file, errnum) - gzFile file; - int *errnum; -{ - gz_statep state; - - /* get internal structure and check integrity */ - if (file == NULL) - return NULL; - state = (gz_statep)file; - if (state->mode != GZ_READ && state->mode != GZ_WRITE) - return NULL; - - /* return error information */ - if (errnum != NULL) - *errnum = state->err; - return state->err == Z_MEM_ERROR ? "out of memory" : - (state->msg == NULL ? "" : state->msg); -} - -/* -- see zlib.h -- */ -void ZEXPORT gzclearerr(file) - gzFile file; -{ - gz_statep state; - - /* get internal structure and check integrity */ - if (file == NULL) - return; - state = (gz_statep)file; - if (state->mode != GZ_READ && state->mode != GZ_WRITE) - return; - - /* clear error and end-of-file */ - if (state->mode == GZ_READ) { - state->eof = 0; - state->past = 0; - } - gz_error(state, Z_OK, NULL); -} - -/* Create an error message in allocated memory and set state->err and - state->msg accordingly. Free any previous error message already there. Do - not try to free or allocate space if the error is Z_MEM_ERROR (out of - memory). Simply save the error message as a static string. If there is an - allocation failure constructing the error message, then convert the error to - out of memory. */ -void ZLIB_INTERNAL gz_error(state, err, msg) - gz_statep state; - int err; - const char *msg; -{ - /* free previously allocated message and clear */ - if (state->msg != NULL) { - if (state->err != Z_MEM_ERROR) - free(state->msg); - state->msg = NULL; - } - - /* if fatal, set state->x.have to 0 so that the gzgetc() macro fails */ - if (err != Z_OK && err != Z_BUF_ERROR) - state->x.have = 0; - - /* set error code, and if no message, then done */ - state->err = err; - if (msg == NULL) - return; - - /* for an out of memory error, return literal string when requested */ - if (err == Z_MEM_ERROR) - return; - - /* construct error message with path */ - if ((state->msg = (char *)malloc(strlen(state->path) + strlen(msg) + 3)) == - NULL) { - state->err = Z_MEM_ERROR; - return; - } -#if !defined(NO_snprintf) && !defined(NO_vsnprintf) - snprintf(state->msg, strlen(state->path) + strlen(msg) + 3, - "%s%s%s", state->path, ": ", msg); -#else - strcpy(state->msg, state->path); - strcat(state->msg, ": "); - strcat(state->msg, msg); -#endif - return; -} - -#ifndef INT_MAX -/* portably return maximum value for an int (when limits.h presumed not - available) -- we need to do this to cover cases where 2's complement not - used, since C standard permits 1's complement and sign-bit representations, - otherwise we could just use ((unsigned)-1) >> 1 */ -unsigned ZLIB_INTERNAL gz_intmax() -{ - unsigned p, q; - - p = 1; - do { - q = p; - p <<= 1; - p++; - } while (p > q); - return q >> 1; -} -#endif diff --git a/platform/win32/msvc/external/zlib/gzread.c b/platform/win32/msvc/external/zlib/gzread.c deleted file mode 100644 index bf4538eb274..00000000000 --- a/platform/win32/msvc/external/zlib/gzread.c +++ /dev/null @@ -1,594 +0,0 @@ -/* gzread.c -- zlib functions for reading gzip files - * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "gzguts.h" - -/* Local functions */ -local int gz_load OF((gz_statep, unsigned char *, unsigned, unsigned *)); -local int gz_avail OF((gz_statep)); -local int gz_look OF((gz_statep)); -local int gz_decomp OF((gz_statep)); -local int gz_fetch OF((gz_statep)); -local int gz_skip OF((gz_statep, z_off64_t)); - -/* Use read() to load a buffer -- return -1 on error, otherwise 0. Read from - state->fd, and update state->eof, state->err, and state->msg as appropriate. - This function needs to loop on read(), since read() is not guaranteed to - read the number of bytes requested, depending on the type of descriptor. */ -local int gz_load(state, buf, len, have) - gz_statep state; - unsigned char *buf; - unsigned len; - unsigned *have; -{ - int ret; - - *have = 0; - do { - ret = read(state->fd, buf + *have, len - *have); - if (ret <= 0) - break; - *have += ret; - } while (*have < len); - if (ret < 0) { - gz_error(state, Z_ERRNO, zstrerror()); - return -1; - } - if (ret == 0) - state->eof = 1; - return 0; -} - -/* Load up input buffer and set eof flag if last data loaded -- return -1 on - error, 0 otherwise. Note that the eof flag is set when the end of the input - file is reached, even though there may be unused data in the buffer. Once - that data has been used, no more attempts will be made to read the file. - If strm->avail_in != 0, then the current data is moved to the beginning of - the input buffer, and then the remainder of the buffer is loaded with the - available data from the input file. */ -local int gz_avail(state) - gz_statep state; -{ - unsigned got; - z_streamp strm = &(state->strm); - - if (state->err != Z_OK && state->err != Z_BUF_ERROR) - return -1; - if (state->eof == 0) { - if (strm->avail_in) { /* copy what's there to the start */ - unsigned char *p = state->in; - unsigned const char *q = strm->next_in; - unsigned n = strm->avail_in; - do { - *p++ = *q++; - } while (--n); - } - if (gz_load(state, state->in + strm->avail_in, - state->size - strm->avail_in, &got) == -1) - return -1; - strm->avail_in += got; - strm->next_in = state->in; - } - return 0; -} - -/* Look for gzip header, set up for inflate or copy. state->x.have must be 0. - If this is the first time in, allocate required memory. state->how will be - left unchanged if there is no more input data available, will be set to COPY - if there is no gzip header and direct copying will be performed, or it will - be set to GZIP for decompression. If direct copying, then leftover input - data from the input buffer will be copied to the output buffer. In that - case, all further file reads will be directly to either the output buffer or - a user buffer. If decompressing, the inflate state will be initialized. - gz_look() will return 0 on success or -1 on failure. */ -local int gz_look(state) - gz_statep state; -{ - z_streamp strm = &(state->strm); - - /* allocate read buffers and inflate memory */ - if (state->size == 0) { - /* allocate buffers */ - state->in = (unsigned char *)malloc(state->want); - state->out = (unsigned char *)malloc(state->want << 1); - if (state->in == NULL || state->out == NULL) { - if (state->out != NULL) - free(state->out); - if (state->in != NULL) - free(state->in); - gz_error(state, Z_MEM_ERROR, "out of memory"); - return -1; - } - state->size = state->want; - - /* allocate inflate memory */ - state->strm.zalloc = Z_NULL; - state->strm.zfree = Z_NULL; - state->strm.opaque = Z_NULL; - state->strm.avail_in = 0; - state->strm.next_in = Z_NULL; - if (inflateInit2(&(state->strm), 15 + 16) != Z_OK) { /* gunzip */ - free(state->out); - free(state->in); - state->size = 0; - gz_error(state, Z_MEM_ERROR, "out of memory"); - return -1; - } - } - - /* get at least the magic bytes in the input buffer */ - if (strm->avail_in < 2) { - if (gz_avail(state) == -1) - return -1; - if (strm->avail_in == 0) - return 0; - } - - /* look for gzip magic bytes -- if there, do gzip decoding (note: there is - a logical dilemma here when considering the case of a partially written - gzip file, to wit, if a single 31 byte is written, then we cannot tell - whether this is a single-byte file, or just a partially written gzip - file -- for here we assume that if a gzip file is being written, then - the header will be written in a single operation, so that reading a - single byte is sufficient indication that it is not a gzip file) */ - if (strm->avail_in > 1 && - strm->next_in[0] == 31 && strm->next_in[1] == 139) { - inflateReset(strm); - state->how = GZIP; - state->direct = 0; - return 0; - } - - /* no gzip header -- if we were decoding gzip before, then this is trailing - garbage. Ignore the trailing garbage and finish. */ - if (state->direct == 0) { - strm->avail_in = 0; - state->eof = 1; - state->x.have = 0; - return 0; - } - - /* doing raw i/o, copy any leftover input to output -- this assumes that - the output buffer is larger than the input buffer, which also assures - space for gzungetc() */ - state->x.next = state->out; - if (strm->avail_in) { - memcpy(state->x.next, strm->next_in, strm->avail_in); - state->x.have = strm->avail_in; - strm->avail_in = 0; - } - state->how = COPY; - state->direct = 1; - return 0; -} - -/* Decompress from input to the provided next_out and avail_out in the state. - On return, state->x.have and state->x.next point to the just decompressed - data. If the gzip stream completes, state->how is reset to LOOK to look for - the next gzip stream or raw data, once state->x.have is depleted. Returns 0 - on success, -1 on failure. */ -local int gz_decomp(state) - gz_statep state; -{ - int ret = Z_OK; - unsigned had; - z_streamp strm = &(state->strm); - - /* fill output buffer up to end of deflate stream */ - had = strm->avail_out; - do { - /* get more input for inflate() */ - if (strm->avail_in == 0 && gz_avail(state) == -1) - return -1; - if (strm->avail_in == 0) { - gz_error(state, Z_BUF_ERROR, "unexpected end of file"); - break; - } - - /* decompress and handle errors */ - ret = inflate(strm, Z_NO_FLUSH); - if (ret == Z_STREAM_ERROR || ret == Z_NEED_DICT) { - gz_error(state, Z_STREAM_ERROR, - "internal error: inflate stream corrupt"); - return -1; - } - if (ret == Z_MEM_ERROR) { - gz_error(state, Z_MEM_ERROR, "out of memory"); - return -1; - } - if (ret == Z_DATA_ERROR) { /* deflate stream invalid */ - gz_error(state, Z_DATA_ERROR, - strm->msg == NULL ? "compressed data error" : strm->msg); - return -1; - } - } while (strm->avail_out && ret != Z_STREAM_END); - - /* update available output */ - state->x.have = had - strm->avail_out; - state->x.next = strm->next_out - state->x.have; - - /* if the gzip stream completed successfully, look for another */ - if (ret == Z_STREAM_END) - state->how = LOOK; - - /* good decompression */ - return 0; -} - -/* Fetch data and put it in the output buffer. Assumes state->x.have is 0. - Data is either copied from the input file or decompressed from the input - file depending on state->how. If state->how is LOOK, then a gzip header is - looked for to determine whether to copy or decompress. Returns -1 on error, - otherwise 0. gz_fetch() will leave state->how as COPY or GZIP unless the - end of the input file has been reached and all data has been processed. */ -local int gz_fetch(state) - gz_statep state; -{ - z_streamp strm = &(state->strm); - - do { - switch(state->how) { - case LOOK: /* -> LOOK, COPY (only if never GZIP), or GZIP */ - if (gz_look(state) == -1) - return -1; - if (state->how == LOOK) - return 0; - break; - case COPY: /* -> COPY */ - if (gz_load(state, state->out, state->size << 1, &(state->x.have)) - == -1) - return -1; - state->x.next = state->out; - return 0; - case GZIP: /* -> GZIP or LOOK (if end of gzip stream) */ - strm->avail_out = state->size << 1; - strm->next_out = state->out; - if (gz_decomp(state) == -1) - return -1; - } - } while (state->x.have == 0 && (!state->eof || strm->avail_in)); - return 0; -} - -/* Skip len uncompressed bytes of output. Return -1 on error, 0 on success. */ -local int gz_skip(state, len) - gz_statep state; - z_off64_t len; -{ - unsigned n; - - /* skip over len bytes or reach end-of-file, whichever comes first */ - while (len) - /* skip over whatever is in output buffer */ - if (state->x.have) { - n = GT_OFF(state->x.have) || (z_off64_t)state->x.have > len ? - (unsigned)len : state->x.have; - state->x.have -= n; - state->x.next += n; - state->x.pos += n; - len -= n; - } - - /* output buffer empty -- return if we're at the end of the input */ - else if (state->eof && state->strm.avail_in == 0) - break; - - /* need more data to skip -- load up output buffer */ - else { - /* get more output, looking for header if required */ - if (gz_fetch(state) == -1) - return -1; - } - return 0; -} - -/* -- see zlib.h -- */ -int ZEXPORT gzread(file, buf, len) - gzFile file; - voidp buf; - unsigned len; -{ - unsigned got, n; - gz_statep state; - z_streamp strm; - - /* get internal structure */ - if (file == NULL) - return -1; - state = (gz_statep)file; - strm = &(state->strm); - - /* check that we're reading and that there's no (serious) error */ - if (state->mode != GZ_READ || - (state->err != Z_OK && state->err != Z_BUF_ERROR)) - return -1; - - /* since an int is returned, make sure len fits in one, otherwise return - with an error (this avoids the flaw in the interface) */ - if ((int)len < 0) { - gz_error(state, Z_DATA_ERROR, "requested length does not fit in int"); - return -1; - } - - /* if len is zero, avoid unnecessary operations */ - if (len == 0) - return 0; - - /* process a skip request */ - if (state->seek) { - state->seek = 0; - if (gz_skip(state, state->skip) == -1) - return -1; - } - - /* get len bytes to buf, or less than len if at the end */ - got = 0; - do { - /* first just try copying data from the output buffer */ - if (state->x.have) { - n = state->x.have > len ? len : state->x.have; - memcpy(buf, state->x.next, n); - state->x.next += n; - state->x.have -= n; - } - - /* output buffer empty -- return if we're at the end of the input */ - else if (state->eof && strm->avail_in == 0) { - state->past = 1; /* tried to read past end */ - break; - } - - /* need output data -- for small len or new stream load up our output - buffer */ - else if (state->how == LOOK || len < (state->size << 1)) { - /* get more output, looking for header if required */ - if (gz_fetch(state) == -1) - return -1; - continue; /* no progress yet -- go back to copy above */ - /* the copy above assures that we will leave with space in the - output buffer, allowing at least one gzungetc() to succeed */ - } - - /* large len -- read directly into user buffer */ - else if (state->how == COPY) { /* read directly */ - if (gz_load(state, (unsigned char *)buf, len, &n) == -1) - return -1; - } - - /* large len -- decompress directly into user buffer */ - else { /* state->how == GZIP */ - strm->avail_out = len; - strm->next_out = (unsigned char *)buf; - if (gz_decomp(state) == -1) - return -1; - n = state->x.have; - state->x.have = 0; - } - - /* update progress */ - len -= n; - buf = (char *)buf + n; - got += n; - state->x.pos += n; - } while (len); - - /* return number of bytes read into user buffer (will fit in int) */ - return (int)got; -} - -/* -- see zlib.h -- */ -#ifdef Z_PREFIX_SET -# undef z_gzgetc -#else -# undef gzgetc -#endif -int ZEXPORT gzgetc(file) - gzFile file; -{ - int ret; - unsigned char buf[1]; - gz_statep state; - - /* get internal structure */ - if (file == NULL) - return -1; - state = (gz_statep)file; - - /* check that we're reading and that there's no (serious) error */ - if (state->mode != GZ_READ || - (state->err != Z_OK && state->err != Z_BUF_ERROR)) - return -1; - - /* try output buffer (no need to check for skip request) */ - if (state->x.have) { - state->x.have--; - state->x.pos++; - return *(state->x.next)++; - } - - /* nothing there -- try gzread() */ - ret = gzread(file, buf, 1); - return ret < 1 ? -1 : buf[0]; -} - -int ZEXPORT gzgetc_(file) -gzFile file; -{ - return gzgetc(file); -} - -/* -- see zlib.h -- */ -int ZEXPORT gzungetc(c, file) - int c; - gzFile file; -{ - gz_statep state; - - /* get internal structure */ - if (file == NULL) - return -1; - state = (gz_statep)file; - - /* check that we're reading and that there's no (serious) error */ - if (state->mode != GZ_READ || - (state->err != Z_OK && state->err != Z_BUF_ERROR)) - return -1; - - /* process a skip request */ - if (state->seek) { - state->seek = 0; - if (gz_skip(state, state->skip) == -1) - return -1; - } - - /* can't push EOF */ - if (c < 0) - return -1; - - /* if output buffer empty, put byte at end (allows more pushing) */ - if (state->x.have == 0) { - state->x.have = 1; - state->x.next = state->out + (state->size << 1) - 1; - state->x.next[0] = c; - state->x.pos--; - state->past = 0; - return c; - } - - /* if no room, give up (must have already done a gzungetc()) */ - if (state->x.have == (state->size << 1)) { - gz_error(state, Z_DATA_ERROR, "out of room to push characters"); - return -1; - } - - /* slide output data if needed and insert byte before existing data */ - if (state->x.next == state->out) { - unsigned char *src = state->out + state->x.have; - unsigned char *dest = state->out + (state->size << 1); - while (src > state->out) - *--dest = *--src; - state->x.next = dest; - } - state->x.have++; - state->x.next--; - state->x.next[0] = c; - state->x.pos--; - state->past = 0; - return c; -} - -/* -- see zlib.h -- */ -char * ZEXPORT gzgets(file, buf, len) - gzFile file; - char *buf; - int len; -{ - unsigned left, n; - char *str; - unsigned char *eol; - gz_statep state; - - /* check parameters and get internal structure */ - if (file == NULL || buf == NULL || len < 1) - return NULL; - state = (gz_statep)file; - - /* check that we're reading and that there's no (serious) error */ - if (state->mode != GZ_READ || - (state->err != Z_OK && state->err != Z_BUF_ERROR)) - return NULL; - - /* process a skip request */ - if (state->seek) { - state->seek = 0; - if (gz_skip(state, state->skip) == -1) - return NULL; - } - - /* copy output bytes up to new line or len - 1, whichever comes first -- - append a terminating zero to the string (we don't check for a zero in - the contents, let the user worry about that) */ - str = buf; - left = (unsigned)len - 1; - if (left) do { - /* assure that something is in the output buffer */ - if (state->x.have == 0 && gz_fetch(state) == -1) - return NULL; /* error */ - if (state->x.have == 0) { /* end of file */ - state->past = 1; /* read past end */ - break; /* return what we have */ - } - - /* look for end-of-line in current output buffer */ - n = state->x.have > left ? left : state->x.have; - eol = (unsigned char *)memchr(state->x.next, '\n', n); - if (eol != NULL) - n = (unsigned)(eol - state->x.next) + 1; - - /* copy through end-of-line, or remainder if not found */ - memcpy(buf, state->x.next, n); - state->x.have -= n; - state->x.next += n; - state->x.pos += n; - left -= n; - buf += n; - } while (left && eol == NULL); - - /* return terminated string, or if nothing, end of file */ - if (buf == str) - return NULL; - buf[0] = 0; - return str; -} - -/* -- see zlib.h -- */ -int ZEXPORT gzdirect(file) - gzFile file; -{ - gz_statep state; - - /* get internal structure */ - if (file == NULL) - return 0; - state = (gz_statep)file; - - /* if the state is not known, but we can find out, then do so (this is - mainly for right after a gzopen() or gzdopen()) */ - if (state->mode == GZ_READ && state->how == LOOK && state->x.have == 0) - (void)gz_look(state); - - /* return 1 if transparent, 0 if processing a gzip stream */ - return state->direct; -} - -/* -- see zlib.h -- */ -int ZEXPORT gzclose_r(file) - gzFile file; -{ - int ret, err; - gz_statep state; - - /* get internal structure */ - if (file == NULL) - return Z_STREAM_ERROR; - state = (gz_statep)file; - - /* check that we're reading */ - if (state->mode != GZ_READ) - return Z_STREAM_ERROR; - - /* free memory and close file */ - if (state->size) { - inflateEnd(&(state->strm)); - free(state->out); - free(state->in); - } - err = state->err == Z_BUF_ERROR ? Z_BUF_ERROR : Z_OK; - gz_error(state, Z_OK, NULL); - free(state->path); - ret = close(state->fd); - free(state); - return ret ? Z_ERRNO : err; -} diff --git a/platform/win32/msvc/external/zlib/gzwrite.c b/platform/win32/msvc/external/zlib/gzwrite.c deleted file mode 100644 index aa767fbf63e..00000000000 --- a/platform/win32/msvc/external/zlib/gzwrite.c +++ /dev/null @@ -1,577 +0,0 @@ -/* gzwrite.c -- zlib functions for writing gzip files - * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "gzguts.h" - -/* Local functions */ -local int gz_init OF((gz_statep)); -local int gz_comp OF((gz_statep, int)); -local int gz_zero OF((gz_statep, z_off64_t)); - -/* Initialize state for writing a gzip file. Mark initialization by setting - state->size to non-zero. Return -1 on failure or 0 on success. */ -local int gz_init(state) - gz_statep state; -{ - int ret; - z_streamp strm = &(state->strm); - - /* allocate input buffer */ - state->in = (unsigned char *)malloc(state->want); - if (state->in == NULL) { - gz_error(state, Z_MEM_ERROR, "out of memory"); - return -1; - } - - /* only need output buffer and deflate state if compressing */ - if (!state->direct) { - /* allocate output buffer */ - state->out = (unsigned char *)malloc(state->want); - if (state->out == NULL) { - free(state->in); - gz_error(state, Z_MEM_ERROR, "out of memory"); - return -1; - } - - /* allocate deflate memory, set up for gzip compression */ - strm->zalloc = Z_NULL; - strm->zfree = Z_NULL; - strm->opaque = Z_NULL; - ret = deflateInit2(strm, state->level, Z_DEFLATED, - MAX_WBITS + 16, DEF_MEM_LEVEL, state->strategy); - if (ret != Z_OK) { - free(state->out); - free(state->in); - gz_error(state, Z_MEM_ERROR, "out of memory"); - return -1; - } - } - - /* mark state as initialized */ - state->size = state->want; - - /* initialize write buffer if compressing */ - if (!state->direct) { - strm->avail_out = state->size; - strm->next_out = state->out; - state->x.next = strm->next_out; - } - return 0; -} - -/* Compress whatever is at avail_in and next_in and write to the output file. - Return -1 if there is an error writing to the output file, otherwise 0. - flush is assumed to be a valid deflate() flush value. If flush is Z_FINISH, - then the deflate() state is reset to start a new gzip stream. If gz->direct - is true, then simply write to the output file without compressing, and - ignore flush. */ -local int gz_comp(state, flush) - gz_statep state; - int flush; -{ - int ret, got; - unsigned have; - z_streamp strm = &(state->strm); - - /* allocate memory if this is the first time through */ - if (state->size == 0 && gz_init(state) == -1) - return -1; - - /* write directly if requested */ - if (state->direct) { - got = write(state->fd, strm->next_in, strm->avail_in); - if (got < 0 || (unsigned)got != strm->avail_in) { - gz_error(state, Z_ERRNO, zstrerror()); - return -1; - } - strm->avail_in = 0; - return 0; - } - - /* run deflate() on provided input until it produces no more output */ - ret = Z_OK; - do { - /* write out current buffer contents if full, or if flushing, but if - doing Z_FINISH then don't write until we get to Z_STREAM_END */ - if (strm->avail_out == 0 || (flush != Z_NO_FLUSH && - (flush != Z_FINISH || ret == Z_STREAM_END))) { - have = (unsigned)(strm->next_out - state->x.next); - if (have && ((got = write(state->fd, state->x.next, have)) < 0 || - (unsigned)got != have)) { - gz_error(state, Z_ERRNO, zstrerror()); - return -1; - } - if (strm->avail_out == 0) { - strm->avail_out = state->size; - strm->next_out = state->out; - } - state->x.next = strm->next_out; - } - - /* compress */ - have = strm->avail_out; - ret = deflate(strm, flush); - if (ret == Z_STREAM_ERROR) { - gz_error(state, Z_STREAM_ERROR, - "internal error: deflate stream corrupt"); - return -1; - } - have -= strm->avail_out; - } while (have); - - /* if that completed a deflate stream, allow another to start */ - if (flush == Z_FINISH) - deflateReset(strm); - - /* all done, no errors */ - return 0; -} - -/* Compress len zeros to output. Return -1 on error, 0 on success. */ -local int gz_zero(state, len) - gz_statep state; - z_off64_t len; -{ - int first; - unsigned n; - z_streamp strm = &(state->strm); - - /* consume whatever's left in the input buffer */ - if (strm->avail_in && gz_comp(state, Z_NO_FLUSH) == -1) - return -1; - - /* compress len zeros (len guaranteed > 0) */ - first = 1; - while (len) { - n = GT_OFF(state->size) || (z_off64_t)state->size > len ? - (unsigned)len : state->size; - if (first) { - memset(state->in, 0, n); - first = 0; - } - strm->avail_in = n; - strm->next_in = state->in; - state->x.pos += n; - if (gz_comp(state, Z_NO_FLUSH) == -1) - return -1; - len -= n; - } - return 0; -} - -/* -- see zlib.h -- */ -int ZEXPORT gzwrite(file, buf, len) - gzFile file; - voidpc buf; - unsigned len; -{ - unsigned put = len; - gz_statep state; - z_streamp strm; - - /* get internal structure */ - if (file == NULL) - return 0; - state = (gz_statep)file; - strm = &(state->strm); - - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) - return 0; - - /* since an int is returned, make sure len fits in one, otherwise return - with an error (this avoids the flaw in the interface) */ - if ((int)len < 0) { - gz_error(state, Z_DATA_ERROR, "requested length does not fit in int"); - return 0; - } - - /* if len is zero, avoid unnecessary operations */ - if (len == 0) - return 0; - - /* allocate memory if this is the first time through */ - if (state->size == 0 && gz_init(state) == -1) - return 0; - - /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return 0; - } - - /* for small len, copy to input buffer, otherwise compress directly */ - if (len < state->size) { - /* copy to input buffer, compress when full */ - do { - unsigned have, copy; - - if (strm->avail_in == 0) - strm->next_in = state->in; - have = (unsigned)((strm->next_in + strm->avail_in) - state->in); - copy = state->size - have; - if (copy > len) - copy = len; - memcpy(state->in + have, buf, copy); - strm->avail_in += copy; - state->x.pos += copy; - buf = (const char *)buf + copy; - len -= copy; - if (len && gz_comp(state, Z_NO_FLUSH) == -1) - return 0; - } while (len); - } - else { - /* consume whatever's left in the input buffer */ - if (strm->avail_in && gz_comp(state, Z_NO_FLUSH) == -1) - return 0; - - /* directly compress user buffer to file */ - strm->avail_in = len; - strm->next_in = (z_const Bytef *)buf; - state->x.pos += len; - if (gz_comp(state, Z_NO_FLUSH) == -1) - return 0; - } - - /* input was all buffered or compressed (put will fit in int) */ - return (int)put; -} - -/* -- see zlib.h -- */ -int ZEXPORT gzputc(file, c) - gzFile file; - int c; -{ - unsigned have; - unsigned char buf[1]; - gz_statep state; - z_streamp strm; - - /* get internal structure */ - if (file == NULL) - return -1; - state = (gz_statep)file; - strm = &(state->strm); - - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) - return -1; - - /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return -1; - } - - /* try writing to input buffer for speed (state->size == 0 if buffer not - initialized) */ - if (state->size) { - if (strm->avail_in == 0) - strm->next_in = state->in; - have = (unsigned)((strm->next_in + strm->avail_in) - state->in); - if (have < state->size) { - state->in[have] = c; - strm->avail_in++; - state->x.pos++; - return c & 0xff; - } - } - - /* no room in buffer or not initialized, use gz_write() */ - buf[0] = c; - if (gzwrite(file, buf, 1) != 1) - return -1; - return c & 0xff; -} - -/* -- see zlib.h -- */ -int ZEXPORT gzputs(file, str) - gzFile file; - const char *str; -{ - int ret; - unsigned len; - - /* write string */ - len = (unsigned)strlen(str); - ret = gzwrite(file, str, len); - return ret == 0 && len != 0 ? -1 : ret; -} - -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -#include - -/* -- see zlib.h -- */ -int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) -{ - int size, len; - gz_statep state; - z_streamp strm; - - /* get internal structure */ - if (file == NULL) - return -1; - state = (gz_statep)file; - strm = &(state->strm); - - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) - return 0; - - /* make sure we have some buffer space */ - if (state->size == 0 && gz_init(state) == -1) - return 0; - - /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return 0; - } - - /* consume whatever's left in the input buffer */ - if (strm->avail_in && gz_comp(state, Z_NO_FLUSH) == -1) - return 0; - - /* do the printf() into the input buffer, put length in len */ - size = (int)(state->size); - state->in[size - 1] = 0; -#ifdef NO_vsnprintf -# ifdef HAS_vsprintf_void - (void)vsprintf((char *)(state->in), format, va); - for (len = 0; len < size; len++) - if (state->in[len] == 0) break; -# else - len = vsprintf((char *)(state->in), format, va); -# endif -#else -# ifdef HAS_vsnprintf_void - (void)vsnprintf((char *)(state->in), size, format, va); - len = strlen((char *)(state->in)); -# else - len = vsnprintf((char *)(state->in), size, format, va); -# endif -#endif - - /* check that printf() results fit in buffer */ - if (len <= 0 || len >= (int)size || state->in[size - 1] != 0) - return 0; - - /* update buffer and position, defer compression until needed */ - strm->avail_in = (unsigned)len; - strm->next_in = state->in; - state->x.pos += len; - return len; -} - -int ZEXPORTVA gzprintf(gzFile file, const char *format, ...) -{ - va_list va; - int ret; - - va_start(va, format); - ret = gzvprintf(file, format, va); - va_end(va); - return ret; -} - -#else /* !STDC && !Z_HAVE_STDARG_H */ - -/* -- see zlib.h -- */ -int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, - a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) - gzFile file; - const char *format; - int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, - a11, a12, a13, a14, a15, a16, a17, a18, a19, a20; -{ - int size, len; - gz_statep state; - z_streamp strm; - - /* get internal structure */ - if (file == NULL) - return -1; - state = (gz_statep)file; - strm = &(state->strm); - - /* check that can really pass pointer in ints */ - if (sizeof(int) != sizeof(void *)) - return 0; - - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) - return 0; - - /* make sure we have some buffer space */ - if (state->size == 0 && gz_init(state) == -1) - return 0; - - /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return 0; - } - - /* consume whatever's left in the input buffer */ - if (strm->avail_in && gz_comp(state, Z_NO_FLUSH) == -1) - return 0; - - /* do the printf() into the input buffer, put length in len */ - size = (int)(state->size); - state->in[size - 1] = 0; -#ifdef NO_snprintf -# ifdef HAS_sprintf_void - sprintf((char *)(state->in), format, a1, a2, a3, a4, a5, a6, a7, a8, - a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20); - for (len = 0; len < size; len++) - if (state->in[len] == 0) break; -# else - len = sprintf((char *)(state->in), format, a1, a2, a3, a4, a5, a6, a7, a8, - a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20); -# endif -#else -# ifdef HAS_snprintf_void - snprintf((char *)(state->in), size, format, a1, a2, a3, a4, a5, a6, a7, a8, - a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20); - len = strlen((char *)(state->in)); -# else - len = snprintf((char *)(state->in), size, format, a1, a2, a3, a4, a5, a6, - a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, - a19, a20); -# endif -#endif - - /* check that printf() results fit in buffer */ - if (len <= 0 || len >= (int)size || state->in[size - 1] != 0) - return 0; - - /* update buffer and position, defer compression until needed */ - strm->avail_in = (unsigned)len; - strm->next_in = state->in; - state->x.pos += len; - return len; -} - -#endif - -/* -- see zlib.h -- */ -int ZEXPORT gzflush(file, flush) - gzFile file; - int flush; -{ - gz_statep state; - - /* get internal structure */ - if (file == NULL) - return -1; - state = (gz_statep)file; - - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) - return Z_STREAM_ERROR; - - /* check flush parameter */ - if (flush < 0 || flush > Z_FINISH) - return Z_STREAM_ERROR; - - /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return -1; - } - - /* compress remaining data with requested flush */ - gz_comp(state, flush); - return state->err; -} - -/* -- see zlib.h -- */ -int ZEXPORT gzsetparams(file, level, strategy) - gzFile file; - int level; - int strategy; -{ - gz_statep state; - z_streamp strm; - - /* get internal structure */ - if (file == NULL) - return Z_STREAM_ERROR; - state = (gz_statep)file; - strm = &(state->strm); - - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) - return Z_STREAM_ERROR; - - /* if no change is requested, then do nothing */ - if (level == state->level && strategy == state->strategy) - return Z_OK; - - /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return -1; - } - - /* change compression parameters for subsequent input */ - if (state->size) { - /* flush previous input with previous parameters before changing */ - if (strm->avail_in && gz_comp(state, Z_PARTIAL_FLUSH) == -1) - return state->err; - deflateParams(strm, level, strategy); - } - state->level = level; - state->strategy = strategy; - return Z_OK; -} - -/* -- see zlib.h -- */ -int ZEXPORT gzclose_w(file) - gzFile file; -{ - int ret = Z_OK; - gz_statep state; - - /* get internal structure */ - if (file == NULL) - return Z_STREAM_ERROR; - state = (gz_statep)file; - - /* check that we're writing */ - if (state->mode != GZ_WRITE) - return Z_STREAM_ERROR; - - /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - ret = state->err; - } - - /* flush, free memory, and close file */ - if (gz_comp(state, Z_FINISH) == -1) - ret = state->err; - if (state->size) { - if (!state->direct) { - (void)deflateEnd(&(state->strm)); - free(state->out); - } - free(state->in); - } - gz_error(state, Z_OK, NULL); - free(state->path); - if (close(state->fd) == -1) - ret = Z_ERRNO; - free(state); - return ret; -} diff --git a/platform/win32/msvc/external/zlib/infback.c b/platform/win32/msvc/external/zlib/infback.c deleted file mode 100644 index f3833c2e434..00000000000 --- a/platform/win32/msvc/external/zlib/infback.c +++ /dev/null @@ -1,640 +0,0 @@ -/* infback.c -- inflate using a call-back interface - * Copyright (C) 1995-2011 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* - This code is largely copied from inflate.c. Normally either infback.o or - inflate.o would be linked into an application--not both. The interface - with inffast.c is retained so that optimized assembler-coded versions of - inflate_fast() can be used with either inflate.c or infback.c. - */ - -#include "zutil.h" -#include "inftrees.h" -#include "inflate.h" -#include "inffast.h" - -/* function prototypes */ -local void fixedtables OF((struct inflate_state FAR *state)); - -/* - strm provides memory allocation functions in zalloc and zfree, or - Z_NULL to use the library memory allocation functions. - - windowBits is in the range 8..15, and window is a user-supplied - window and output buffer that is 2**windowBits bytes. - */ -int ZEXPORT inflateBackInit_(strm, windowBits, window, version, stream_size) -z_streamp strm; -int windowBits; -unsigned char FAR *window; -const char *version; -int stream_size; -{ - struct inflate_state FAR *state; - - if (version == Z_NULL || version[0] != ZLIB_VERSION[0] || - stream_size != (int)(sizeof(z_stream))) - return Z_VERSION_ERROR; - if (strm == Z_NULL || window == Z_NULL || - windowBits < 8 || windowBits > 15) - return Z_STREAM_ERROR; - strm->msg = Z_NULL; /* in case we return an error */ - if (strm->zalloc == (alloc_func)0) { -#ifdef Z_SOLO - return Z_STREAM_ERROR; -#else - strm->zalloc = zcalloc; - strm->opaque = (voidpf)0; -#endif - } - if (strm->zfree == (free_func)0) -#ifdef Z_SOLO - return Z_STREAM_ERROR; -#else - strm->zfree = zcfree; -#endif - state = (struct inflate_state FAR *)ZALLOC(strm, 1, - sizeof(struct inflate_state)); - if (state == Z_NULL) return Z_MEM_ERROR; - Tracev((stderr, "inflate: allocated\n")); - strm->state = (struct internal_state FAR *)state; - state->dmax = 32768U; - state->wbits = windowBits; - state->wsize = 1U << windowBits; - state->window = window; - state->wnext = 0; - state->whave = 0; - return Z_OK; -} - -/* - Return state with length and distance decoding tables and index sizes set to - fixed code decoding. Normally this returns fixed tables from inffixed.h. - If BUILDFIXED is defined, then instead this routine builds the tables the - first time it's called, and returns those tables the first time and - thereafter. This reduces the size of the code by about 2K bytes, in - exchange for a little execution time. However, BUILDFIXED should not be - used for threaded applications, since the rewriting of the tables and virgin - may not be thread-safe. - */ -local void fixedtables(state) -struct inflate_state FAR *state; -{ -#ifdef BUILDFIXED - static int virgin = 1; - static code *lenfix, *distfix; - static code fixed[544]; - - /* build fixed huffman tables if first call (may not be thread safe) */ - if (virgin) { - unsigned sym, bits; - static code *next; - - /* literal/length table */ - sym = 0; - while (sym < 144) state->lens[sym++] = 8; - while (sym < 256) state->lens[sym++] = 9; - while (sym < 280) state->lens[sym++] = 7; - while (sym < 288) state->lens[sym++] = 8; - next = fixed; - lenfix = next; - bits = 9; - inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); - - /* distance table */ - sym = 0; - while (sym < 32) state->lens[sym++] = 5; - distfix = next; - bits = 5; - inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); - - /* do this just once */ - virgin = 0; - } -#else /* !BUILDFIXED */ -# include "inffixed.h" -#endif /* BUILDFIXED */ - state->lencode = lenfix; - state->lenbits = 9; - state->distcode = distfix; - state->distbits = 5; -} - -/* Macros for inflateBack(): */ - -/* Load returned state from inflate_fast() */ -#define LOAD() \ - do { \ - put = strm->next_out; \ - left = strm->avail_out; \ - next = strm->next_in; \ - have = strm->avail_in; \ - hold = state->hold; \ - bits = state->bits; \ - } while (0) - -/* Set state from registers for inflate_fast() */ -#define RESTORE() \ - do { \ - strm->next_out = put; \ - strm->avail_out = left; \ - strm->next_in = next; \ - strm->avail_in = have; \ - state->hold = hold; \ - state->bits = bits; \ - } while (0) - -/* Clear the input bit accumulator */ -#define INITBITS() \ - do { \ - hold = 0; \ - bits = 0; \ - } while (0) - -/* Assure that some input is available. If input is requested, but denied, - then return a Z_BUF_ERROR from inflateBack(). */ -#define PULL() \ - do { \ - if (have == 0) { \ - have = in(in_desc, &next); \ - if (have == 0) { \ - next = Z_NULL; \ - ret = Z_BUF_ERROR; \ - goto inf_leave; \ - } \ - } \ - } while (0) - -/* Get a byte of input into the bit accumulator, or return from inflateBack() - with an error if there is no input available. */ -#define PULLBYTE() \ - do { \ - PULL(); \ - have--; \ - hold += (unsigned long)(*next++) << bits; \ - bits += 8; \ - } while (0) - -/* Assure that there are at least n bits in the bit accumulator. If there is - not enough available input to do that, then return from inflateBack() with - an error. */ -#define NEEDBITS(n) \ - do { \ - while (bits < (unsigned)(n)) \ - PULLBYTE(); \ - } while (0) - -/* Return the low n bits of the bit accumulator (n < 16) */ -#define BITS(n) \ - ((unsigned)hold & ((1U << (n)) - 1)) - -/* Remove n bits from the bit accumulator */ -#define DROPBITS(n) \ - do { \ - hold >>= (n); \ - bits -= (unsigned)(n); \ - } while (0) - -/* Remove zero to seven bits as needed to go to a byte boundary */ -#define BYTEBITS() \ - do { \ - hold >>= bits & 7; \ - bits -= bits & 7; \ - } while (0) - -/* Assure that some output space is available, by writing out the window - if it's full. If the write fails, return from inflateBack() with a - Z_BUF_ERROR. */ -#define ROOM() \ - do { \ - if (left == 0) { \ - put = state->window; \ - left = state->wsize; \ - state->whave = left; \ - if (out(out_desc, put, left)) { \ - ret = Z_BUF_ERROR; \ - goto inf_leave; \ - } \ - } \ - } while (0) - -/* - strm provides the memory allocation functions and window buffer on input, - and provides information on the unused input on return. For Z_DATA_ERROR - returns, strm will also provide an error message. - - in() and out() are the call-back input and output functions. When - inflateBack() needs more input, it calls in(). When inflateBack() has - filled the window with output, or when it completes with data in the - window, it calls out() to write out the data. The application must not - change the provided input until in() is called again or inflateBack() - returns. The application must not change the window/output buffer until - inflateBack() returns. - - in() and out() are called with a descriptor parameter provided in the - inflateBack() call. This parameter can be a structure that provides the - information required to do the read or write, as well as accumulated - information on the input and output such as totals and check values. - - in() should return zero on failure. out() should return non-zero on - failure. If either in() or out() fails, than inflateBack() returns a - Z_BUF_ERROR. strm->next_in can be checked for Z_NULL to see whether it - was in() or out() that caused in the error. Otherwise, inflateBack() - returns Z_STREAM_END on success, Z_DATA_ERROR for an deflate format - error, or Z_MEM_ERROR if it could not allocate memory for the state. - inflateBack() can also return Z_STREAM_ERROR if the input parameters - are not correct, i.e. strm is Z_NULL or the state was not initialized. - */ -int ZEXPORT inflateBack(strm, in, in_desc, out, out_desc) -z_streamp strm; -in_func in; -void FAR *in_desc; -out_func out; -void FAR *out_desc; -{ - struct inflate_state FAR *state; - z_const unsigned char FAR *next; /* next input */ - unsigned char FAR *put; /* next output */ - unsigned have, left; /* available input and output */ - unsigned long hold; /* bit buffer */ - unsigned bits; /* bits in bit buffer */ - unsigned copy; /* number of stored or match bytes to copy */ - unsigned char FAR *from; /* where to copy match bytes from */ - code here; /* current decoding table entry */ - code last; /* parent table entry */ - unsigned len; /* length to copy for repeats, bits to drop */ - int ret; /* return code */ - static const unsigned short order[19] = /* permutation of code lengths */ - {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; - - /* Check that the strm exists and that the state was initialized */ - if (strm == Z_NULL || strm->state == Z_NULL) - return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - - /* Reset the state */ - strm->msg = Z_NULL; - state->mode = TYPE; - state->last = 0; - state->whave = 0; - next = strm->next_in; - have = next != Z_NULL ? strm->avail_in : 0; - hold = 0; - bits = 0; - put = state->window; - left = state->wsize; - - /* Inflate until end of block marked as last */ - for (;;) - switch (state->mode) { - case TYPE: - /* determine and dispatch block type */ - if (state->last) { - BYTEBITS(); - state->mode = DONE; - break; - } - NEEDBITS(3); - state->last = BITS(1); - DROPBITS(1); - switch (BITS(2)) { - case 0: /* stored block */ - Tracev((stderr, "inflate: stored block%s\n", - state->last ? " (last)" : "")); - state->mode = STORED; - break; - case 1: /* fixed block */ - fixedtables(state); - Tracev((stderr, "inflate: fixed codes block%s\n", - state->last ? " (last)" : "")); - state->mode = LEN; /* decode codes */ - break; - case 2: /* dynamic block */ - Tracev((stderr, "inflate: dynamic codes block%s\n", - state->last ? " (last)" : "")); - state->mode = TABLE; - break; - case 3: - strm->msg = (char *)"invalid block type"; - state->mode = BAD; - } - DROPBITS(2); - break; - - case STORED: - /* get and verify stored block length */ - BYTEBITS(); /* go to byte boundary */ - NEEDBITS(32); - if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { - strm->msg = (char *)"invalid stored block lengths"; - state->mode = BAD; - break; - } - state->length = (unsigned)hold & 0xffff; - Tracev((stderr, "inflate: stored length %u\n", - state->length)); - INITBITS(); - - /* copy stored block from input to output */ - while (state->length != 0) { - copy = state->length; - PULL(); - ROOM(); - if (copy > have) copy = have; - if (copy > left) copy = left; - zmemcpy(put, next, copy); - have -= copy; - next += copy; - left -= copy; - put += copy; - state->length -= copy; - } - Tracev((stderr, "inflate: stored end\n")); - state->mode = TYPE; - break; - - case TABLE: - /* get dynamic table entries descriptor */ - NEEDBITS(14); - state->nlen = BITS(5) + 257; - DROPBITS(5); - state->ndist = BITS(5) + 1; - DROPBITS(5); - state->ncode = BITS(4) + 4; - DROPBITS(4); -#ifndef PKZIP_BUG_WORKAROUND - if (state->nlen > 286 || state->ndist > 30) { - strm->msg = (char *)"too many length or distance symbols"; - state->mode = BAD; - break; - } -#endif - Tracev((stderr, "inflate: table sizes ok\n")); - - /* get code length code lengths (not a typo) */ - state->have = 0; - while (state->have < state->ncode) { - NEEDBITS(3); - state->lens[order[state->have++]] = (unsigned short)BITS(3); - DROPBITS(3); - } - while (state->have < 19) - state->lens[order[state->have++]] = 0; - state->next = state->codes; - state->lencode = (code const FAR *)(state->next); - state->lenbits = 7; - ret = inflate_table(CODES, state->lens, 19, &(state->next), - &(state->lenbits), state->work); - if (ret) { - strm->msg = (char *)"invalid code lengths set"; - state->mode = BAD; - break; - } - Tracev((stderr, "inflate: code lengths ok\n")); - - /* get length and distance code code lengths */ - state->have = 0; - while (state->have < state->nlen + state->ndist) { - for (;;) { - here = state->lencode[BITS(state->lenbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if (here.val < 16) { - DROPBITS(here.bits); - state->lens[state->have++] = here.val; - } - else { - if (here.val == 16) { - NEEDBITS(here.bits + 2); - DROPBITS(here.bits); - if (state->have == 0) { - strm->msg = (char *)"invalid bit length repeat"; - state->mode = BAD; - break; - } - len = (unsigned)(state->lens[state->have - 1]); - copy = 3 + BITS(2); - DROPBITS(2); - } - else if (here.val == 17) { - NEEDBITS(here.bits + 3); - DROPBITS(here.bits); - len = 0; - copy = 3 + BITS(3); - DROPBITS(3); - } - else { - NEEDBITS(here.bits + 7); - DROPBITS(here.bits); - len = 0; - copy = 11 + BITS(7); - DROPBITS(7); - } - if (state->have + copy > state->nlen + state->ndist) { - strm->msg = (char *)"invalid bit length repeat"; - state->mode = BAD; - break; - } - while (copy--) - state->lens[state->have++] = (unsigned short)len; - } - } - - /* handle error breaks in while */ - if (state->mode == BAD) break; - - /* check for end-of-block code (better have one) */ - if (state->lens[256] == 0) { - strm->msg = (char *)"invalid code -- missing end-of-block"; - state->mode = BAD; - break; - } - - /* build code tables -- note: do not change the lenbits or distbits - values here (9 and 6) without reading the comments in inftrees.h - concerning the ENOUGH constants, which depend on those values */ - state->next = state->codes; - state->lencode = (code const FAR *)(state->next); - state->lenbits = 9; - ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), - &(state->lenbits), state->work); - if (ret) { - strm->msg = (char *)"invalid literal/lengths set"; - state->mode = BAD; - break; - } - state->distcode = (code const FAR *)(state->next); - state->distbits = 6; - ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, - &(state->next), &(state->distbits), state->work); - if (ret) { - strm->msg = (char *)"invalid distances set"; - state->mode = BAD; - break; - } - Tracev((stderr, "inflate: codes ok\n")); - state->mode = LEN; - - case LEN: - /* use inflate_fast() if we have enough input and output */ - if (have >= 6 && left >= 258) { - RESTORE(); - if (state->whave < state->wsize) - state->whave = state->wsize - left; - inflate_fast(strm, state->wsize); - LOAD(); - break; - } - - /* get a literal, length, or end-of-block code */ - for (;;) { - here = state->lencode[BITS(state->lenbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if (here.op && (here.op & 0xf0) == 0) { - last = here; - for (;;) { - here = state->lencode[last.val + - (BITS(last.bits + last.op) >> last.bits)]; - if ((unsigned)(last.bits + here.bits) <= bits) break; - PULLBYTE(); - } - DROPBITS(last.bits); - } - DROPBITS(here.bits); - state->length = (unsigned)here.val; - - /* process literal */ - if (here.op == 0) { - Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? - "inflate: literal '%c'\n" : - "inflate: literal 0x%02x\n", here.val)); - ROOM(); - *put++ = (unsigned char)(state->length); - left--; - state->mode = LEN; - break; - } - - /* process end of block */ - if (here.op & 32) { - Tracevv((stderr, "inflate: end of block\n")); - state->mode = TYPE; - break; - } - - /* invalid code */ - if (here.op & 64) { - strm->msg = (char *)"invalid literal/length code"; - state->mode = BAD; - break; - } - - /* length code -- get extra bits, if any */ - state->extra = (unsigned)(here.op) & 15; - if (state->extra != 0) { - NEEDBITS(state->extra); - state->length += BITS(state->extra); - DROPBITS(state->extra); - } - Tracevv((stderr, "inflate: length %u\n", state->length)); - - /* get distance code */ - for (;;) { - here = state->distcode[BITS(state->distbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if ((here.op & 0xf0) == 0) { - last = here; - for (;;) { - here = state->distcode[last.val + - (BITS(last.bits + last.op) >> last.bits)]; - if ((unsigned)(last.bits + here.bits) <= bits) break; - PULLBYTE(); - } - DROPBITS(last.bits); - } - DROPBITS(here.bits); - if (here.op & 64) { - strm->msg = (char *)"invalid distance code"; - state->mode = BAD; - break; - } - state->offset = (unsigned)here.val; - - /* get distance extra bits, if any */ - state->extra = (unsigned)(here.op) & 15; - if (state->extra != 0) { - NEEDBITS(state->extra); - state->offset += BITS(state->extra); - DROPBITS(state->extra); - } - if (state->offset > state->wsize - (state->whave < state->wsize ? - left : 0)) { - strm->msg = (char *)"invalid distance too far back"; - state->mode = BAD; - break; - } - Tracevv((stderr, "inflate: distance %u\n", state->offset)); - - /* copy match from window to output */ - do { - ROOM(); - copy = state->wsize - state->offset; - if (copy < left) { - from = put + copy; - copy = left - copy; - } - else { - from = put - state->offset; - copy = left; - } - if (copy > state->length) copy = state->length; - state->length -= copy; - left -= copy; - do { - *put++ = *from++; - } while (--copy); - } while (state->length != 0); - break; - - case DONE: - /* inflate stream terminated properly -- write leftover output */ - ret = Z_STREAM_END; - if (left < state->wsize) { - if (out(out_desc, state->window, state->wsize - left)) - ret = Z_BUF_ERROR; - } - goto inf_leave; - - case BAD: - ret = Z_DATA_ERROR; - goto inf_leave; - - default: /* can't happen, but makes compilers happy */ - ret = Z_STREAM_ERROR; - goto inf_leave; - } - - /* Return unused input */ - inf_leave: - strm->next_in = next; - strm->avail_in = have; - return ret; -} - -int ZEXPORT inflateBackEnd(strm) -z_streamp strm; -{ - if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0) - return Z_STREAM_ERROR; - ZFREE(strm, strm->state); - strm->state = Z_NULL; - Tracev((stderr, "inflate: end\n")); - return Z_OK; -} diff --git a/platform/win32/msvc/external/zlib/inffast.c b/platform/win32/msvc/external/zlib/inffast.c deleted file mode 100644 index bda59ceb6a1..00000000000 --- a/platform/win32/msvc/external/zlib/inffast.c +++ /dev/null @@ -1,340 +0,0 @@ -/* inffast.c -- fast decoding - * Copyright (C) 1995-2008, 2010, 2013 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "zutil.h" -#include "inftrees.h" -#include "inflate.h" -#include "inffast.h" - -#ifndef ASMINF - -/* Allow machine dependent optimization for post-increment or pre-increment. - Based on testing to date, - Pre-increment preferred for: - - PowerPC G3 (Adler) - - MIPS R5000 (Randers-Pehrson) - Post-increment preferred for: - - none - No measurable difference: - - Pentium III (Anderson) - - M68060 (Nikl) - */ -#ifdef POSTINC -# define OFF 0 -# define PUP(a) *(a)++ -#else -# define OFF 1 -# define PUP(a) *++(a) -#endif - -/* - Decode literal, length, and distance codes and write out the resulting - literal and match bytes until either not enough input or output is - available, an end-of-block is encountered, or a data error is encountered. - When large enough input and output buffers are supplied to inflate(), for - example, a 16K input buffer and a 64K output buffer, more than 95% of the - inflate execution time is spent in this routine. - - Entry assumptions: - - state->mode == LEN - strm->avail_in >= 6 - strm->avail_out >= 258 - start >= strm->avail_out - state->bits < 8 - - On return, state->mode is one of: - - LEN -- ran out of enough output space or enough available input - TYPE -- reached end of block code, inflate() to interpret next block - BAD -- error in block data - - Notes: - - - The maximum input bits used by a length/distance pair is 15 bits for the - length code, 5 bits for the length extra, 15 bits for the distance code, - and 13 bits for the distance extra. This totals 48 bits, or six bytes. - Therefore if strm->avail_in >= 6, then there is enough input to avoid - checking for available input while decoding. - - - The maximum bytes that a single length/distance pair can output is 258 - bytes, which is the maximum length that can be coded. inflate_fast() - requires strm->avail_out >= 258 for each loop to avoid checking for - output space. - */ -void ZLIB_INTERNAL inflate_fast(strm, start) -z_streamp strm; -unsigned start; /* inflate()'s starting value for strm->avail_out */ -{ - struct inflate_state FAR *state; - z_const unsigned char FAR *in; /* local strm->next_in */ - z_const unsigned char FAR *last; /* have enough input while in < last */ - unsigned char FAR *out; /* local strm->next_out */ - unsigned char FAR *beg; /* inflate()'s initial strm->next_out */ - unsigned char FAR *end; /* while out < end, enough space available */ -#ifdef INFLATE_STRICT - unsigned dmax; /* maximum distance from zlib header */ -#endif - unsigned wsize; /* window size or zero if not using window */ - unsigned whave; /* valid bytes in the window */ - unsigned wnext; /* window write index */ - unsigned char FAR *window; /* allocated sliding window, if wsize != 0 */ - unsigned long hold; /* local strm->hold */ - unsigned bits; /* local strm->bits */ - code const FAR *lcode; /* local strm->lencode */ - code const FAR *dcode; /* local strm->distcode */ - unsigned lmask; /* mask for first level of length codes */ - unsigned dmask; /* mask for first level of distance codes */ - code here; /* retrieved table entry */ - unsigned op; /* code bits, operation, extra bits, or */ - /* window position, window bytes to copy */ - unsigned len; /* match length, unused bytes */ - unsigned dist; /* match distance */ - unsigned char FAR *from; /* where to copy match from */ - - /* copy state to local variables */ - state = (struct inflate_state FAR *)strm->state; - in = strm->next_in - OFF; - last = in + (strm->avail_in - 5); - out = strm->next_out - OFF; - beg = out - (start - strm->avail_out); - end = out + (strm->avail_out - 257); -#ifdef INFLATE_STRICT - dmax = state->dmax; -#endif - wsize = state->wsize; - whave = state->whave; - wnext = state->wnext; - window = state->window; - hold = state->hold; - bits = state->bits; - lcode = state->lencode; - dcode = state->distcode; - lmask = (1U << state->lenbits) - 1; - dmask = (1U << state->distbits) - 1; - - /* decode literals and length/distances until end-of-block or not enough - input data or output space */ - do { - if (bits < 15) { - hold += (unsigned long)(PUP(in)) << bits; - bits += 8; - hold += (unsigned long)(PUP(in)) << bits; - bits += 8; - } - here = lcode[hold & lmask]; - dolen: - op = (unsigned)(here.bits); - hold >>= op; - bits -= op; - op = (unsigned)(here.op); - if (op == 0) { /* literal */ - Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? - "inflate: literal '%c'\n" : - "inflate: literal 0x%02x\n", here.val)); - PUP(out) = (unsigned char)(here.val); - } - else if (op & 16) { /* length base */ - len = (unsigned)(here.val); - op &= 15; /* number of extra bits */ - if (op) { - if (bits < op) { - hold += (unsigned long)(PUP(in)) << bits; - bits += 8; - } - len += (unsigned)hold & ((1U << op) - 1); - hold >>= op; - bits -= op; - } - Tracevv((stderr, "inflate: length %u\n", len)); - if (bits < 15) { - hold += (unsigned long)(PUP(in)) << bits; - bits += 8; - hold += (unsigned long)(PUP(in)) << bits; - bits += 8; - } - here = dcode[hold & dmask]; - dodist: - op = (unsigned)(here.bits); - hold >>= op; - bits -= op; - op = (unsigned)(here.op); - if (op & 16) { /* distance base */ - dist = (unsigned)(here.val); - op &= 15; /* number of extra bits */ - if (bits < op) { - hold += (unsigned long)(PUP(in)) << bits; - bits += 8; - if (bits < op) { - hold += (unsigned long)(PUP(in)) << bits; - bits += 8; - } - } - dist += (unsigned)hold & ((1U << op) - 1); -#ifdef INFLATE_STRICT - if (dist > dmax) { - strm->msg = (char *)"invalid distance too far back"; - state->mode = BAD; - break; - } -#endif - hold >>= op; - bits -= op; - Tracevv((stderr, "inflate: distance %u\n", dist)); - op = (unsigned)(out - beg); /* max distance in output */ - if (dist > op) { /* see if copy from window */ - op = dist - op; /* distance back in window */ - if (op > whave) { - if (state->sane) { - strm->msg = - (char *)"invalid distance too far back"; - state->mode = BAD; - break; - } -#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR - if (len <= op - whave) { - do { - PUP(out) = 0; - } while (--len); - continue; - } - len -= op - whave; - do { - PUP(out) = 0; - } while (--op > whave); - if (op == 0) { - from = out - dist; - do { - PUP(out) = PUP(from); - } while (--len); - continue; - } -#endif - } - from = window - OFF; - if (wnext == 0) { /* very common case */ - from += wsize - op; - if (op < len) { /* some from window */ - len -= op; - do { - PUP(out) = PUP(from); - } while (--op); - from = out - dist; /* rest from output */ - } - } - else if (wnext < op) { /* wrap around window */ - from += wsize + wnext - op; - op -= wnext; - if (op < len) { /* some from end of window */ - len -= op; - do { - PUP(out) = PUP(from); - } while (--op); - from = window - OFF; - if (wnext < len) { /* some from start of window */ - op = wnext; - len -= op; - do { - PUP(out) = PUP(from); - } while (--op); - from = out - dist; /* rest from output */ - } - } - } - else { /* contiguous in window */ - from += wnext - op; - if (op < len) { /* some from window */ - len -= op; - do { - PUP(out) = PUP(from); - } while (--op); - from = out - dist; /* rest from output */ - } - } - while (len > 2) { - PUP(out) = PUP(from); - PUP(out) = PUP(from); - PUP(out) = PUP(from); - len -= 3; - } - if (len) { - PUP(out) = PUP(from); - if (len > 1) - PUP(out) = PUP(from); - } - } - else { - from = out - dist; /* copy direct from output */ - do { /* minimum length is three */ - PUP(out) = PUP(from); - PUP(out) = PUP(from); - PUP(out) = PUP(from); - len -= 3; - } while (len > 2); - if (len) { - PUP(out) = PUP(from); - if (len > 1) - PUP(out) = PUP(from); - } - } - } - else if ((op & 64) == 0) { /* 2nd level distance code */ - here = dcode[here.val + (hold & ((1U << op) - 1))]; - goto dodist; - } - else { - strm->msg = (char *)"invalid distance code"; - state->mode = BAD; - break; - } - } - else if ((op & 64) == 0) { /* 2nd level length code */ - here = lcode[here.val + (hold & ((1U << op) - 1))]; - goto dolen; - } - else if (op & 32) { /* end-of-block */ - Tracevv((stderr, "inflate: end of block\n")); - state->mode = TYPE; - break; - } - else { - strm->msg = (char *)"invalid literal/length code"; - state->mode = BAD; - break; - } - } while (in < last && out < end); - - /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ - len = bits >> 3; - in -= len; - bits -= len << 3; - hold &= (1U << bits) - 1; - - /* update state and return */ - strm->next_in = in + OFF; - strm->next_out = out + OFF; - strm->avail_in = (unsigned)(in < last ? 5 + (last - in) : 5 - (in - last)); - strm->avail_out = (unsigned)(out < end ? - 257 + (end - out) : 257 - (out - end)); - state->hold = hold; - state->bits = bits; - return; -} - -/* - inflate_fast() speedups that turned out slower (on a PowerPC G3 750CXe): - - Using bit fields for code structure - - Different op definition to avoid & for extra bits (do & for table bits) - - Three separate decoding do-loops for direct, window, and wnext == 0 - - Special case for distance > 1 copies to do overlapped load and store copy - - Explicit branch predictions (based on measured branch probabilities) - - Deferring match copy and interspersed it with decoding subsequent codes - - Swapping literal/length else - - Swapping window/direct else - - Larger unrolled copy loops (three is about right) - - Moving len -= 3 statement into middle of loop - */ - -#endif /* !ASMINF */ diff --git a/platform/win32/msvc/external/zlib/inffast.h b/platform/win32/msvc/external/zlib/inffast.h deleted file mode 100644 index e5c1aa4ca8c..00000000000 --- a/platform/win32/msvc/external/zlib/inffast.h +++ /dev/null @@ -1,11 +0,0 @@ -/* inffast.h -- header to use inffast.c - * Copyright (C) 1995-2003, 2010 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -void ZLIB_INTERNAL inflate_fast OF((z_streamp strm, unsigned start)); diff --git a/platform/win32/msvc/external/zlib/inffixed.h b/platform/win32/msvc/external/zlib/inffixed.h deleted file mode 100644 index d6283277694..00000000000 --- a/platform/win32/msvc/external/zlib/inffixed.h +++ /dev/null @@ -1,94 +0,0 @@ - /* inffixed.h -- table for decoding fixed codes - * Generated automatically by makefixed(). - */ - - /* WARNING: this file should *not* be used by applications. - It is part of the implementation of this library and is - subject to change. Applications should only use zlib.h. - */ - - static const code lenfix[512] = { - {96,7,0},{0,8,80},{0,8,16},{20,8,115},{18,7,31},{0,8,112},{0,8,48}, - {0,9,192},{16,7,10},{0,8,96},{0,8,32},{0,9,160},{0,8,0},{0,8,128}, - {0,8,64},{0,9,224},{16,7,6},{0,8,88},{0,8,24},{0,9,144},{19,7,59}, - {0,8,120},{0,8,56},{0,9,208},{17,7,17},{0,8,104},{0,8,40},{0,9,176}, - {0,8,8},{0,8,136},{0,8,72},{0,9,240},{16,7,4},{0,8,84},{0,8,20}, - {21,8,227},{19,7,43},{0,8,116},{0,8,52},{0,9,200},{17,7,13},{0,8,100}, - {0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232},{16,7,8}, - {0,8,92},{0,8,28},{0,9,152},{20,7,83},{0,8,124},{0,8,60},{0,9,216}, - {18,7,23},{0,8,108},{0,8,44},{0,9,184},{0,8,12},{0,8,140},{0,8,76}, - {0,9,248},{16,7,3},{0,8,82},{0,8,18},{21,8,163},{19,7,35},{0,8,114}, - {0,8,50},{0,9,196},{17,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2}, - {0,8,130},{0,8,66},{0,9,228},{16,7,7},{0,8,90},{0,8,26},{0,9,148}, - {20,7,67},{0,8,122},{0,8,58},{0,9,212},{18,7,19},{0,8,106},{0,8,42}, - {0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244},{16,7,5},{0,8,86}, - {0,8,22},{64,8,0},{19,7,51},{0,8,118},{0,8,54},{0,9,204},{17,7,15}, - {0,8,102},{0,8,38},{0,9,172},{0,8,6},{0,8,134},{0,8,70},{0,9,236}, - {16,7,9},{0,8,94},{0,8,30},{0,9,156},{20,7,99},{0,8,126},{0,8,62}, - {0,9,220},{18,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142}, - {0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{21,8,131},{18,7,31}, - {0,8,113},{0,8,49},{0,9,194},{16,7,10},{0,8,97},{0,8,33},{0,9,162}, - {0,8,1},{0,8,129},{0,8,65},{0,9,226},{16,7,6},{0,8,89},{0,8,25}, - {0,9,146},{19,7,59},{0,8,121},{0,8,57},{0,9,210},{17,7,17},{0,8,105}, - {0,8,41},{0,9,178},{0,8,9},{0,8,137},{0,8,73},{0,9,242},{16,7,4}, - {0,8,85},{0,8,21},{16,8,258},{19,7,43},{0,8,117},{0,8,53},{0,9,202}, - {17,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133},{0,8,69}, - {0,9,234},{16,7,8},{0,8,93},{0,8,29},{0,9,154},{20,7,83},{0,8,125}, - {0,8,61},{0,9,218},{18,7,23},{0,8,109},{0,8,45},{0,9,186},{0,8,13}, - {0,8,141},{0,8,77},{0,9,250},{16,7,3},{0,8,83},{0,8,19},{21,8,195}, - {19,7,35},{0,8,115},{0,8,51},{0,9,198},{17,7,11},{0,8,99},{0,8,35}, - {0,9,166},{0,8,3},{0,8,131},{0,8,67},{0,9,230},{16,7,7},{0,8,91}, - {0,8,27},{0,9,150},{20,7,67},{0,8,123},{0,8,59},{0,9,214},{18,7,19}, - {0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139},{0,8,75},{0,9,246}, - {16,7,5},{0,8,87},{0,8,23},{64,8,0},{19,7,51},{0,8,119},{0,8,55}, - {0,9,206},{17,7,15},{0,8,103},{0,8,39},{0,9,174},{0,8,7},{0,8,135}, - {0,8,71},{0,9,238},{16,7,9},{0,8,95},{0,8,31},{0,9,158},{20,7,99}, - {0,8,127},{0,8,63},{0,9,222},{18,7,27},{0,8,111},{0,8,47},{0,9,190}, - {0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80},{0,8,16}, - {20,8,115},{18,7,31},{0,8,112},{0,8,48},{0,9,193},{16,7,10},{0,8,96}, - {0,8,32},{0,9,161},{0,8,0},{0,8,128},{0,8,64},{0,9,225},{16,7,6}, - {0,8,88},{0,8,24},{0,9,145},{19,7,59},{0,8,120},{0,8,56},{0,9,209}, - {17,7,17},{0,8,104},{0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72}, - {0,9,241},{16,7,4},{0,8,84},{0,8,20},{21,8,227},{19,7,43},{0,8,116}, - {0,8,52},{0,9,201},{17,7,13},{0,8,100},{0,8,36},{0,9,169},{0,8,4}, - {0,8,132},{0,8,68},{0,9,233},{16,7,8},{0,8,92},{0,8,28},{0,9,153}, - {20,7,83},{0,8,124},{0,8,60},{0,9,217},{18,7,23},{0,8,108},{0,8,44}, - {0,9,185},{0,8,12},{0,8,140},{0,8,76},{0,9,249},{16,7,3},{0,8,82}, - {0,8,18},{21,8,163},{19,7,35},{0,8,114},{0,8,50},{0,9,197},{17,7,11}, - {0,8,98},{0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229}, - {16,7,7},{0,8,90},{0,8,26},{0,9,149},{20,7,67},{0,8,122},{0,8,58}, - {0,9,213},{18,7,19},{0,8,106},{0,8,42},{0,9,181},{0,8,10},{0,8,138}, - {0,8,74},{0,9,245},{16,7,5},{0,8,86},{0,8,22},{64,8,0},{19,7,51}, - {0,8,118},{0,8,54},{0,9,205},{17,7,15},{0,8,102},{0,8,38},{0,9,173}, - {0,8,6},{0,8,134},{0,8,70},{0,9,237},{16,7,9},{0,8,94},{0,8,30}, - {0,9,157},{20,7,99},{0,8,126},{0,8,62},{0,9,221},{18,7,27},{0,8,110}, - {0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253},{96,7,0}, - {0,8,81},{0,8,17},{21,8,131},{18,7,31},{0,8,113},{0,8,49},{0,9,195}, - {16,7,10},{0,8,97},{0,8,33},{0,9,163},{0,8,1},{0,8,129},{0,8,65}, - {0,9,227},{16,7,6},{0,8,89},{0,8,25},{0,9,147},{19,7,59},{0,8,121}, - {0,8,57},{0,9,211},{17,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9}, - {0,8,137},{0,8,73},{0,9,243},{16,7,4},{0,8,85},{0,8,21},{16,8,258}, - {19,7,43},{0,8,117},{0,8,53},{0,9,203},{17,7,13},{0,8,101},{0,8,37}, - {0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235},{16,7,8},{0,8,93}, - {0,8,29},{0,9,155},{20,7,83},{0,8,125},{0,8,61},{0,9,219},{18,7,23}, - {0,8,109},{0,8,45},{0,9,187},{0,8,13},{0,8,141},{0,8,77},{0,9,251}, - {16,7,3},{0,8,83},{0,8,19},{21,8,195},{19,7,35},{0,8,115},{0,8,51}, - {0,9,199},{17,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131}, - {0,8,67},{0,9,231},{16,7,7},{0,8,91},{0,8,27},{0,9,151},{20,7,67}, - {0,8,123},{0,8,59},{0,9,215},{18,7,19},{0,8,107},{0,8,43},{0,9,183}, - {0,8,11},{0,8,139},{0,8,75},{0,9,247},{16,7,5},{0,8,87},{0,8,23}, - {64,8,0},{19,7,51},{0,8,119},{0,8,55},{0,9,207},{17,7,15},{0,8,103}, - {0,8,39},{0,9,175},{0,8,7},{0,8,135},{0,8,71},{0,9,239},{16,7,9}, - {0,8,95},{0,8,31},{0,9,159},{20,7,99},{0,8,127},{0,8,63},{0,9,223}, - {18,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143},{0,8,79}, - {0,9,255} - }; - - static const code distfix[32] = { - {16,5,1},{23,5,257},{19,5,17},{27,5,4097},{17,5,5},{25,5,1025}, - {21,5,65},{29,5,16385},{16,5,3},{24,5,513},{20,5,33},{28,5,8193}, - {18,5,9},{26,5,2049},{22,5,129},{64,5,0},{16,5,2},{23,5,385}, - {19,5,25},{27,5,6145},{17,5,7},{25,5,1537},{21,5,97},{29,5,24577}, - {16,5,4},{24,5,769},{20,5,49},{28,5,12289},{18,5,13},{26,5,3073}, - {22,5,193},{64,5,0} - }; diff --git a/platform/win32/msvc/external/zlib/inflate.c b/platform/win32/msvc/external/zlib/inflate.c deleted file mode 100644 index 870f89bb4d3..00000000000 --- a/platform/win32/msvc/external/zlib/inflate.c +++ /dev/null @@ -1,1512 +0,0 @@ -/* inflate.c -- zlib decompression - * Copyright (C) 1995-2012 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* - * Change history: - * - * 1.2.beta0 24 Nov 2002 - * - First version -- complete rewrite of inflate to simplify code, avoid - * creation of window when not needed, minimize use of window when it is - * needed, make inffast.c even faster, implement gzip decoding, and to - * improve code readability and style over the previous zlib inflate code - * - * 1.2.beta1 25 Nov 2002 - * - Use pointers for available input and output checking in inffast.c - * - Remove input and output counters in inffast.c - * - Change inffast.c entry and loop from avail_in >= 7 to >= 6 - * - Remove unnecessary second byte pull from length extra in inffast.c - * - Unroll direct copy to three copies per loop in inffast.c - * - * 1.2.beta2 4 Dec 2002 - * - Change external routine names to reduce potential conflicts - * - Correct filename to inffixed.h for fixed tables in inflate.c - * - Make hbuf[] unsigned char to match parameter type in inflate.c - * - Change strm->next_out[-state->offset] to *(strm->next_out - state->offset) - * to avoid negation problem on Alphas (64 bit) in inflate.c - * - * 1.2.beta3 22 Dec 2002 - * - Add comments on state->bits assertion in inffast.c - * - Add comments on op field in inftrees.h - * - Fix bug in reuse of allocated window after inflateReset() - * - Remove bit fields--back to byte structure for speed - * - Remove distance extra == 0 check in inflate_fast()--only helps for lengths - * - Change post-increments to pre-increments in inflate_fast(), PPC biased? - * - Add compile time option, POSTINC, to use post-increments instead (Intel?) - * - Make MATCH copy in inflate() much faster for when inflate_fast() not used - * - Use local copies of stream next and avail values, as well as local bit - * buffer and bit count in inflate()--for speed when inflate_fast() not used - * - * 1.2.beta4 1 Jan 2003 - * - Split ptr - 257 statements in inflate_table() to avoid compiler warnings - * - Move a comment on output buffer sizes from inffast.c to inflate.c - * - Add comments in inffast.c to introduce the inflate_fast() routine - * - Rearrange window copies in inflate_fast() for speed and simplification - * - Unroll last copy for window match in inflate_fast() - * - Use local copies of window variables in inflate_fast() for speed - * - Pull out common wnext == 0 case for speed in inflate_fast() - * - Make op and len in inflate_fast() unsigned for consistency - * - Add FAR to lcode and dcode declarations in inflate_fast() - * - Simplified bad distance check in inflate_fast() - * - Added inflateBackInit(), inflateBack(), and inflateBackEnd() in new - * source file infback.c to provide a call-back interface to inflate for - * programs like gzip and unzip -- uses window as output buffer to avoid - * window copying - * - * 1.2.beta5 1 Jan 2003 - * - Improved inflateBack() interface to allow the caller to provide initial - * input in strm. - * - Fixed stored blocks bug in inflateBack() - * - * 1.2.beta6 4 Jan 2003 - * - Added comments in inffast.c on effectiveness of POSTINC - * - Typecasting all around to reduce compiler warnings - * - Changed loops from while (1) or do {} while (1) to for (;;), again to - * make compilers happy - * - Changed type of window in inflateBackInit() to unsigned char * - * - * 1.2.beta7 27 Jan 2003 - * - Changed many types to unsigned or unsigned short to avoid warnings - * - Added inflateCopy() function - * - * 1.2.0 9 Mar 2003 - * - Changed inflateBack() interface to provide separate opaque descriptors - * for the in() and out() functions - * - Changed inflateBack() argument and in_func typedef to swap the length - * and buffer address return values for the input function - * - Check next_in and next_out for Z_NULL on entry to inflate() - * - * The history for versions after 1.2.0 are in ChangeLog in zlib distribution. - */ - -#include "zutil.h" -#include "inftrees.h" -#include "inflate.h" -#include "inffast.h" - -#ifdef MAKEFIXED -# ifndef BUILDFIXED -# define BUILDFIXED -# endif -#endif - -/* function prototypes */ -local void fixedtables OF((struct inflate_state FAR *state)); -local int updatewindow OF((z_streamp strm, const unsigned char FAR *end, - unsigned copy)); -#ifdef BUILDFIXED - void makefixed OF((void)); -#endif -local unsigned syncsearch OF((unsigned FAR *have, const unsigned char FAR *buf, - unsigned len)); - -int ZEXPORT inflateResetKeep(strm) -z_streamp strm; -{ - struct inflate_state FAR *state; - - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - strm->total_in = strm->total_out = state->total = 0; - strm->msg = Z_NULL; - if (state->wrap) /* to support ill-conceived Java test suite */ - strm->adler = state->wrap & 1; - state->mode = HEAD; - state->last = 0; - state->havedict = 0; - state->dmax = 32768U; - state->head = Z_NULL; - state->hold = 0; - state->bits = 0; - state->lencode = state->distcode = state->next = state->codes; - state->sane = 1; - state->back = -1; - Tracev((stderr, "inflate: reset\n")); - return Z_OK; -} - -int ZEXPORT inflateReset(strm) -z_streamp strm; -{ - struct inflate_state FAR *state; - - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - state->wsize = 0; - state->whave = 0; - state->wnext = 0; - return inflateResetKeep(strm); -} - -int ZEXPORT inflateReset2(strm, windowBits) -z_streamp strm; -int windowBits; -{ - int wrap; - struct inflate_state FAR *state; - - /* get the state */ - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - - /* extract wrap request from windowBits parameter */ - if (windowBits < 0) { - wrap = 0; - windowBits = -windowBits; - } - else { - wrap = (windowBits >> 4) + 1; -#ifdef GUNZIP - if (windowBits < 48) - windowBits &= 15; -#endif - } - - /* set number of window bits, free window if different */ - if (windowBits && (windowBits < 8 || windowBits > 15)) - return Z_STREAM_ERROR; - if (state->window != Z_NULL && state->wbits != (unsigned)windowBits) { - ZFREE(strm, state->window); - state->window = Z_NULL; - } - - /* update state and reset the rest of it */ - state->wrap = wrap; - state->wbits = (unsigned)windowBits; - return inflateReset(strm); -} - -int ZEXPORT inflateInit2_(strm, windowBits, version, stream_size) -z_streamp strm; -int windowBits; -const char *version; -int stream_size; -{ - int ret; - struct inflate_state FAR *state; - - if (version == Z_NULL || version[0] != ZLIB_VERSION[0] || - stream_size != (int)(sizeof(z_stream))) - return Z_VERSION_ERROR; - if (strm == Z_NULL) return Z_STREAM_ERROR; - strm->msg = Z_NULL; /* in case we return an error */ - if (strm->zalloc == (alloc_func)0) { -#ifdef Z_SOLO - return Z_STREAM_ERROR; -#else - strm->zalloc = zcalloc; - strm->opaque = (voidpf)0; -#endif - } - if (strm->zfree == (free_func)0) -#ifdef Z_SOLO - return Z_STREAM_ERROR; -#else - strm->zfree = zcfree; -#endif - state = (struct inflate_state FAR *) - ZALLOC(strm, 1, sizeof(struct inflate_state)); - if (state == Z_NULL) return Z_MEM_ERROR; - Tracev((stderr, "inflate: allocated\n")); - strm->state = (struct internal_state FAR *)state; - state->window = Z_NULL; - ret = inflateReset2(strm, windowBits); - if (ret != Z_OK) { - ZFREE(strm, state); - strm->state = Z_NULL; - } - return ret; -} - -int ZEXPORT inflateInit_(strm, version, stream_size) -z_streamp strm; -const char *version; -int stream_size; -{ - return inflateInit2_(strm, DEF_WBITS, version, stream_size); -} - -int ZEXPORT inflatePrime(strm, bits, value) -z_streamp strm; -int bits; -int value; -{ - struct inflate_state FAR *state; - - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - if (bits < 0) { - state->hold = 0; - state->bits = 0; - return Z_OK; - } - if (bits > 16 || state->bits + bits > 32) return Z_STREAM_ERROR; - value &= (1L << bits) - 1; - state->hold += value << state->bits; - state->bits += bits; - return Z_OK; -} - -/* - Return state with length and distance decoding tables and index sizes set to - fixed code decoding. Normally this returns fixed tables from inffixed.h. - If BUILDFIXED is defined, then instead this routine builds the tables the - first time it's called, and returns those tables the first time and - thereafter. This reduces the size of the code by about 2K bytes, in - exchange for a little execution time. However, BUILDFIXED should not be - used for threaded applications, since the rewriting of the tables and virgin - may not be thread-safe. - */ -local void fixedtables(state) -struct inflate_state FAR *state; -{ -#ifdef BUILDFIXED - static int virgin = 1; - static code *lenfix, *distfix; - static code fixed[544]; - - /* build fixed huffman tables if first call (may not be thread safe) */ - if (virgin) { - unsigned sym, bits; - static code *next; - - /* literal/length table */ - sym = 0; - while (sym < 144) state->lens[sym++] = 8; - while (sym < 256) state->lens[sym++] = 9; - while (sym < 280) state->lens[sym++] = 7; - while (sym < 288) state->lens[sym++] = 8; - next = fixed; - lenfix = next; - bits = 9; - inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); - - /* distance table */ - sym = 0; - while (sym < 32) state->lens[sym++] = 5; - distfix = next; - bits = 5; - inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); - - /* do this just once */ - virgin = 0; - } -#else /* !BUILDFIXED */ -# include "inffixed.h" -#endif /* BUILDFIXED */ - state->lencode = lenfix; - state->lenbits = 9; - state->distcode = distfix; - state->distbits = 5; -} - -#ifdef MAKEFIXED -#include - -/* - Write out the inffixed.h that is #include'd above. Defining MAKEFIXED also - defines BUILDFIXED, so the tables are built on the fly. makefixed() writes - those tables to stdout, which would be piped to inffixed.h. A small program - can simply call makefixed to do this: - - void makefixed(void); - - int main(void) - { - makefixed(); - return 0; - } - - Then that can be linked with zlib built with MAKEFIXED defined and run: - - a.out > inffixed.h - */ -void makefixed() -{ - unsigned low, size; - struct inflate_state state; - - fixedtables(&state); - puts(" /* inffixed.h -- table for decoding fixed codes"); - puts(" * Generated automatically by makefixed()."); - puts(" */"); - puts(""); - puts(" /* WARNING: this file should *not* be used by applications."); - puts(" It is part of the implementation of this library and is"); - puts(" subject to change. Applications should only use zlib.h."); - puts(" */"); - puts(""); - size = 1U << 9; - printf(" static const code lenfix[%u] = {", size); - low = 0; - for (;;) { - if ((low % 7) == 0) printf("\n "); - printf("{%u,%u,%d}", (low & 127) == 99 ? 64 : state.lencode[low].op, - state.lencode[low].bits, state.lencode[low].val); - if (++low == size) break; - putchar(','); - } - puts("\n };"); - size = 1U << 5; - printf("\n static const code distfix[%u] = {", size); - low = 0; - for (;;) { - if ((low % 6) == 0) printf("\n "); - printf("{%u,%u,%d}", state.distcode[low].op, state.distcode[low].bits, - state.distcode[low].val); - if (++low == size) break; - putchar(','); - } - puts("\n };"); -} -#endif /* MAKEFIXED */ - -/* - Update the window with the last wsize (normally 32K) bytes written before - returning. If window does not exist yet, create it. This is only called - when a window is already in use, or when output has been written during this - inflate call, but the end of the deflate stream has not been reached yet. - It is also called to create a window for dictionary data when a dictionary - is loaded. - - Providing output buffers larger than 32K to inflate() should provide a speed - advantage, since only the last 32K of output is copied to the sliding window - upon return from inflate(), and since all distances after the first 32K of - output will fall in the output data, making match copies simpler and faster. - The advantage may be dependent on the size of the processor's data caches. - */ -local int updatewindow(strm, end, copy) -z_streamp strm; -const Bytef *end; -unsigned copy; -{ - struct inflate_state FAR *state; - unsigned dist; - - state = (struct inflate_state FAR *)strm->state; - - /* if it hasn't been done already, allocate space for the window */ - if (state->window == Z_NULL) { - state->window = (unsigned char FAR *) - ZALLOC(strm, 1U << state->wbits, - sizeof(unsigned char)); - if (state->window == Z_NULL) return 1; - } - - /* if window not in use yet, initialize */ - if (state->wsize == 0) { - state->wsize = 1U << state->wbits; - state->wnext = 0; - state->whave = 0; - } - - /* copy state->wsize or less output bytes into the circular window */ - if (copy >= state->wsize) { - zmemcpy(state->window, end - state->wsize, state->wsize); - state->wnext = 0; - state->whave = state->wsize; - } - else { - dist = state->wsize - state->wnext; - if (dist > copy) dist = copy; - zmemcpy(state->window + state->wnext, end - copy, dist); - copy -= dist; - if (copy) { - zmemcpy(state->window, end - copy, copy); - state->wnext = copy; - state->whave = state->wsize; - } - else { - state->wnext += dist; - if (state->wnext == state->wsize) state->wnext = 0; - if (state->whave < state->wsize) state->whave += dist; - } - } - return 0; -} - -/* Macros for inflate(): */ - -/* check function to use adler32() for zlib or crc32() for gzip */ -#ifdef GUNZIP -# define UPDATE(check, buf, len) \ - (state->flags ? crc32(check, buf, len) : adler32(check, buf, len)) -#else -# define UPDATE(check, buf, len) adler32(check, buf, len) -#endif - -/* check macros for header crc */ -#ifdef GUNZIP -# define CRC2(check, word) \ - do { \ - hbuf[0] = (unsigned char)(word); \ - hbuf[1] = (unsigned char)((word) >> 8); \ - check = crc32(check, hbuf, 2); \ - } while (0) - -# define CRC4(check, word) \ - do { \ - hbuf[0] = (unsigned char)(word); \ - hbuf[1] = (unsigned char)((word) >> 8); \ - hbuf[2] = (unsigned char)((word) >> 16); \ - hbuf[3] = (unsigned char)((word) >> 24); \ - check = crc32(check, hbuf, 4); \ - } while (0) -#endif - -/* Load registers with state in inflate() for speed */ -#define LOAD() \ - do { \ - put = strm->next_out; \ - left = strm->avail_out; \ - next = strm->next_in; \ - have = strm->avail_in; \ - hold = state->hold; \ - bits = state->bits; \ - } while (0) - -/* Restore state from registers in inflate() */ -#define RESTORE() \ - do { \ - strm->next_out = put; \ - strm->avail_out = left; \ - strm->next_in = next; \ - strm->avail_in = have; \ - state->hold = hold; \ - state->bits = bits; \ - } while (0) - -/* Clear the input bit accumulator */ -#define INITBITS() \ - do { \ - hold = 0; \ - bits = 0; \ - } while (0) - -/* Get a byte of input into the bit accumulator, or return from inflate() - if there is no input available. */ -#define PULLBYTE() \ - do { \ - if (have == 0) goto inf_leave; \ - have--; \ - hold += (unsigned long)(*next++) << bits; \ - bits += 8; \ - } while (0) - -/* Assure that there are at least n bits in the bit accumulator. If there is - not enough available input to do that, then return from inflate(). */ -#define NEEDBITS(n) \ - do { \ - while (bits < (unsigned)(n)) \ - PULLBYTE(); \ - } while (0) - -/* Return the low n bits of the bit accumulator (n < 16) */ -#define BITS(n) \ - ((unsigned)hold & ((1U << (n)) - 1)) - -/* Remove n bits from the bit accumulator */ -#define DROPBITS(n) \ - do { \ - hold >>= (n); \ - bits -= (unsigned)(n); \ - } while (0) - -/* Remove zero to seven bits as needed to go to a byte boundary */ -#define BYTEBITS() \ - do { \ - hold >>= bits & 7; \ - bits -= bits & 7; \ - } while (0) - -/* - inflate() uses a state machine to process as much input data and generate as - much output data as possible before returning. The state machine is - structured roughly as follows: - - for (;;) switch (state) { - ... - case STATEn: - if (not enough input data or output space to make progress) - return; - ... make progress ... - state = STATEm; - break; - ... - } - - so when inflate() is called again, the same case is attempted again, and - if the appropriate resources are provided, the machine proceeds to the - next state. The NEEDBITS() macro is usually the way the state evaluates - whether it can proceed or should return. NEEDBITS() does the return if - the requested bits are not available. The typical use of the BITS macros - is: - - NEEDBITS(n); - ... do something with BITS(n) ... - DROPBITS(n); - - where NEEDBITS(n) either returns from inflate() if there isn't enough - input left to load n bits into the accumulator, or it continues. BITS(n) - gives the low n bits in the accumulator. When done, DROPBITS(n) drops - the low n bits off the accumulator. INITBITS() clears the accumulator - and sets the number of available bits to zero. BYTEBITS() discards just - enough bits to put the accumulator on a byte boundary. After BYTEBITS() - and a NEEDBITS(8), then BITS(8) would return the next byte in the stream. - - NEEDBITS(n) uses PULLBYTE() to get an available byte of input, or to return - if there is no input available. The decoding of variable length codes uses - PULLBYTE() directly in order to pull just enough bytes to decode the next - code, and no more. - - Some states loop until they get enough input, making sure that enough - state information is maintained to continue the loop where it left off - if NEEDBITS() returns in the loop. For example, want, need, and keep - would all have to actually be part of the saved state in case NEEDBITS() - returns: - - case STATEw: - while (want < need) { - NEEDBITS(n); - keep[want++] = BITS(n); - DROPBITS(n); - } - state = STATEx; - case STATEx: - - As shown above, if the next state is also the next case, then the break - is omitted. - - A state may also return if there is not enough output space available to - complete that state. Those states are copying stored data, writing a - literal byte, and copying a matching string. - - When returning, a "goto inf_leave" is used to update the total counters, - update the check value, and determine whether any progress has been made - during that inflate() call in order to return the proper return code. - Progress is defined as a change in either strm->avail_in or strm->avail_out. - When there is a window, goto inf_leave will update the window with the last - output written. If a goto inf_leave occurs in the middle of decompression - and there is no window currently, goto inf_leave will create one and copy - output to the window for the next call of inflate(). - - In this implementation, the flush parameter of inflate() only affects the - return code (per zlib.h). inflate() always writes as much as possible to - strm->next_out, given the space available and the provided input--the effect - documented in zlib.h of Z_SYNC_FLUSH. Furthermore, inflate() always defers - the allocation of and copying into a sliding window until necessary, which - provides the effect documented in zlib.h for Z_FINISH when the entire input - stream available. So the only thing the flush parameter actually does is: - when flush is set to Z_FINISH, inflate() cannot return Z_OK. Instead it - will return Z_BUF_ERROR if it has not reached the end of the stream. - */ - -int ZEXPORT inflate(strm, flush) -z_streamp strm; -int flush; -{ - struct inflate_state FAR *state; - z_const unsigned char FAR *next; /* next input */ - unsigned char FAR *put; /* next output */ - unsigned have, left; /* available input and output */ - unsigned long hold; /* bit buffer */ - unsigned bits; /* bits in bit buffer */ - unsigned in, out; /* save starting available input and output */ - unsigned copy; /* number of stored or match bytes to copy */ - unsigned char FAR *from; /* where to copy match bytes from */ - code here; /* current decoding table entry */ - code last; /* parent table entry */ - unsigned len; /* length to copy for repeats, bits to drop */ - int ret; /* return code */ -#ifdef GUNZIP - unsigned char hbuf[4]; /* buffer for gzip header crc calculation */ -#endif - static const unsigned short order[19] = /* permutation of code lengths */ - {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; - - if (strm == Z_NULL || strm->state == Z_NULL || strm->next_out == Z_NULL || - (strm->next_in == Z_NULL && strm->avail_in != 0)) - return Z_STREAM_ERROR; - - state = (struct inflate_state FAR *)strm->state; - if (state->mode == TYPE) state->mode = TYPEDO; /* skip check */ - LOAD(); - in = have; - out = left; - ret = Z_OK; - for (;;) - switch (state->mode) { - case HEAD: - if (state->wrap == 0) { - state->mode = TYPEDO; - break; - } - NEEDBITS(16); -#ifdef GUNZIP - if ((state->wrap & 2) && hold == 0x8b1f) { /* gzip header */ - state->check = crc32(0L, Z_NULL, 0); - CRC2(state->check, hold); - INITBITS(); - state->mode = FLAGS; - break; - } - state->flags = 0; /* expect zlib header */ - if (state->head != Z_NULL) - state->head->done = -1; - if (!(state->wrap & 1) || /* check if zlib header allowed */ -#else - if ( -#endif - ((BITS(8) << 8) + (hold >> 8)) % 31) { - strm->msg = (char *)"incorrect header check"; - state->mode = BAD; - break; - } - if (BITS(4) != Z_DEFLATED) { - strm->msg = (char *)"unknown compression method"; - state->mode = BAD; - break; - } - DROPBITS(4); - len = BITS(4) + 8; - if (state->wbits == 0) - state->wbits = len; - else if (len > state->wbits) { - strm->msg = (char *)"invalid window size"; - state->mode = BAD; - break; - } - state->dmax = 1U << len; - Tracev((stderr, "inflate: zlib header ok\n")); - strm->adler = state->check = adler32(0L, Z_NULL, 0); - state->mode = hold & 0x200 ? DICTID : TYPE; - INITBITS(); - break; -#ifdef GUNZIP - case FLAGS: - NEEDBITS(16); - state->flags = (int)(hold); - if ((state->flags & 0xff) != Z_DEFLATED) { - strm->msg = (char *)"unknown compression method"; - state->mode = BAD; - break; - } - if (state->flags & 0xe000) { - strm->msg = (char *)"unknown header flags set"; - state->mode = BAD; - break; - } - if (state->head != Z_NULL) - state->head->text = (int)((hold >> 8) & 1); - if (state->flags & 0x0200) CRC2(state->check, hold); - INITBITS(); - state->mode = TIME; - case TIME: - NEEDBITS(32); - if (state->head != Z_NULL) - state->head->time = hold; - if (state->flags & 0x0200) CRC4(state->check, hold); - INITBITS(); - state->mode = OS; - case OS: - NEEDBITS(16); - if (state->head != Z_NULL) { - state->head->xflags = (int)(hold & 0xff); - state->head->os = (int)(hold >> 8); - } - if (state->flags & 0x0200) CRC2(state->check, hold); - INITBITS(); - state->mode = EXLEN; - case EXLEN: - if (state->flags & 0x0400) { - NEEDBITS(16); - state->length = (unsigned)(hold); - if (state->head != Z_NULL) - state->head->extra_len = (unsigned)hold; - if (state->flags & 0x0200) CRC2(state->check, hold); - INITBITS(); - } - else if (state->head != Z_NULL) - state->head->extra = Z_NULL; - state->mode = EXTRA; - case EXTRA: - if (state->flags & 0x0400) { - copy = state->length; - if (copy > have) copy = have; - if (copy) { - if (state->head != Z_NULL && - state->head->extra != Z_NULL) { - len = state->head->extra_len - state->length; - zmemcpy(state->head->extra + len, next, - len + copy > state->head->extra_max ? - state->head->extra_max - len : copy); - } - if (state->flags & 0x0200) - state->check = crc32(state->check, next, copy); - have -= copy; - next += copy; - state->length -= copy; - } - if (state->length) goto inf_leave; - } - state->length = 0; - state->mode = NAME; - case NAME: - if (state->flags & 0x0800) { - if (have == 0) goto inf_leave; - copy = 0; - do { - len = (unsigned)(next[copy++]); - if (state->head != Z_NULL && - state->head->name != Z_NULL && - state->length < state->head->name_max) - state->head->name[state->length++] = len; - } while (len && copy < have); - if (state->flags & 0x0200) - state->check = crc32(state->check, next, copy); - have -= copy; - next += copy; - if (len) goto inf_leave; - } - else if (state->head != Z_NULL) - state->head->name = Z_NULL; - state->length = 0; - state->mode = COMMENT; - case COMMENT: - if (state->flags & 0x1000) { - if (have == 0) goto inf_leave; - copy = 0; - do { - len = (unsigned)(next[copy++]); - if (state->head != Z_NULL && - state->head->comment != Z_NULL && - state->length < state->head->comm_max) - state->head->comment[state->length++] = len; - } while (len && copy < have); - if (state->flags & 0x0200) - state->check = crc32(state->check, next, copy); - have -= copy; - next += copy; - if (len) goto inf_leave; - } - else if (state->head != Z_NULL) - state->head->comment = Z_NULL; - state->mode = HCRC; - case HCRC: - if (state->flags & 0x0200) { - NEEDBITS(16); - if (hold != (state->check & 0xffff)) { - strm->msg = (char *)"header crc mismatch"; - state->mode = BAD; - break; - } - INITBITS(); - } - if (state->head != Z_NULL) { - state->head->hcrc = (int)((state->flags >> 9) & 1); - state->head->done = 1; - } - strm->adler = state->check = crc32(0L, Z_NULL, 0); - state->mode = TYPE; - break; -#endif - case DICTID: - NEEDBITS(32); - strm->adler = state->check = ZSWAP32(hold); - INITBITS(); - state->mode = DICT; - case DICT: - if (state->havedict == 0) { - RESTORE(); - return Z_NEED_DICT; - } - strm->adler = state->check = adler32(0L, Z_NULL, 0); - state->mode = TYPE; - case TYPE: - if (flush == Z_BLOCK || flush == Z_TREES) goto inf_leave; - case TYPEDO: - if (state->last) { - BYTEBITS(); - state->mode = CHECK; - break; - } - NEEDBITS(3); - state->last = BITS(1); - DROPBITS(1); - switch (BITS(2)) { - case 0: /* stored block */ - Tracev((stderr, "inflate: stored block%s\n", - state->last ? " (last)" : "")); - state->mode = STORED; - break; - case 1: /* fixed block */ - fixedtables(state); - Tracev((stderr, "inflate: fixed codes block%s\n", - state->last ? " (last)" : "")); - state->mode = LEN_; /* decode codes */ - if (flush == Z_TREES) { - DROPBITS(2); - goto inf_leave; - } - break; - case 2: /* dynamic block */ - Tracev((stderr, "inflate: dynamic codes block%s\n", - state->last ? " (last)" : "")); - state->mode = TABLE; - break; - case 3: - strm->msg = (char *)"invalid block type"; - state->mode = BAD; - } - DROPBITS(2); - break; - case STORED: - BYTEBITS(); /* go to byte boundary */ - NEEDBITS(32); - if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { - strm->msg = (char *)"invalid stored block lengths"; - state->mode = BAD; - break; - } - state->length = (unsigned)hold & 0xffff; - Tracev((stderr, "inflate: stored length %u\n", - state->length)); - INITBITS(); - state->mode = COPY_; - if (flush == Z_TREES) goto inf_leave; - case COPY_: - state->mode = COPY; - case COPY: - copy = state->length; - if (copy) { - if (copy > have) copy = have; - if (copy > left) copy = left; - if (copy == 0) goto inf_leave; - zmemcpy(put, next, copy); - have -= copy; - next += copy; - left -= copy; - put += copy; - state->length -= copy; - break; - } - Tracev((stderr, "inflate: stored end\n")); - state->mode = TYPE; - break; - case TABLE: - NEEDBITS(14); - state->nlen = BITS(5) + 257; - DROPBITS(5); - state->ndist = BITS(5) + 1; - DROPBITS(5); - state->ncode = BITS(4) + 4; - DROPBITS(4); -#ifndef PKZIP_BUG_WORKAROUND - if (state->nlen > 286 || state->ndist > 30) { - strm->msg = (char *)"too many length or distance symbols"; - state->mode = BAD; - break; - } -#endif - Tracev((stderr, "inflate: table sizes ok\n")); - state->have = 0; - state->mode = LENLENS; - case LENLENS: - while (state->have < state->ncode) { - NEEDBITS(3); - state->lens[order[state->have++]] = (unsigned short)BITS(3); - DROPBITS(3); - } - while (state->have < 19) - state->lens[order[state->have++]] = 0; - state->next = state->codes; - state->lencode = (const code FAR *)(state->next); - state->lenbits = 7; - ret = inflate_table(CODES, state->lens, 19, &(state->next), - &(state->lenbits), state->work); - if (ret) { - strm->msg = (char *)"invalid code lengths set"; - state->mode = BAD; - break; - } - Tracev((stderr, "inflate: code lengths ok\n")); - state->have = 0; - state->mode = CODELENS; - case CODELENS: - while (state->have < state->nlen + state->ndist) { - for (;;) { - here = state->lencode[BITS(state->lenbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if (here.val < 16) { - DROPBITS(here.bits); - state->lens[state->have++] = here.val; - } - else { - if (here.val == 16) { - NEEDBITS(here.bits + 2); - DROPBITS(here.bits); - if (state->have == 0) { - strm->msg = (char *)"invalid bit length repeat"; - state->mode = BAD; - break; - } - len = state->lens[state->have - 1]; - copy = 3 + BITS(2); - DROPBITS(2); - } - else if (here.val == 17) { - NEEDBITS(here.bits + 3); - DROPBITS(here.bits); - len = 0; - copy = 3 + BITS(3); - DROPBITS(3); - } - else { - NEEDBITS(here.bits + 7); - DROPBITS(here.bits); - len = 0; - copy = 11 + BITS(7); - DROPBITS(7); - } - if (state->have + copy > state->nlen + state->ndist) { - strm->msg = (char *)"invalid bit length repeat"; - state->mode = BAD; - break; - } - while (copy--) - state->lens[state->have++] = (unsigned short)len; - } - } - - /* handle error breaks in while */ - if (state->mode == BAD) break; - - /* check for end-of-block code (better have one) */ - if (state->lens[256] == 0) { - strm->msg = (char *)"invalid code -- missing end-of-block"; - state->mode = BAD; - break; - } - - /* build code tables -- note: do not change the lenbits or distbits - values here (9 and 6) without reading the comments in inftrees.h - concerning the ENOUGH constants, which depend on those values */ - state->next = state->codes; - state->lencode = (const code FAR *)(state->next); - state->lenbits = 9; - ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), - &(state->lenbits), state->work); - if (ret) { - strm->msg = (char *)"invalid literal/lengths set"; - state->mode = BAD; - break; - } - state->distcode = (const code FAR *)(state->next); - state->distbits = 6; - ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, - &(state->next), &(state->distbits), state->work); - if (ret) { - strm->msg = (char *)"invalid distances set"; - state->mode = BAD; - break; - } - Tracev((stderr, "inflate: codes ok\n")); - state->mode = LEN_; - if (flush == Z_TREES) goto inf_leave; - case LEN_: - state->mode = LEN; - case LEN: - if (have >= 6 && left >= 258) { - RESTORE(); - inflate_fast(strm, out); - LOAD(); - if (state->mode == TYPE) - state->back = -1; - break; - } - state->back = 0; - for (;;) { - here = state->lencode[BITS(state->lenbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if (here.op && (here.op & 0xf0) == 0) { - last = here; - for (;;) { - here = state->lencode[last.val + - (BITS(last.bits + last.op) >> last.bits)]; - if ((unsigned)(last.bits + here.bits) <= bits) break; - PULLBYTE(); - } - DROPBITS(last.bits); - state->back += last.bits; - } - DROPBITS(here.bits); - state->back += here.bits; - state->length = (unsigned)here.val; - if ((int)(here.op) == 0) { - Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? - "inflate: literal '%c'\n" : - "inflate: literal 0x%02x\n", here.val)); - state->mode = LIT; - break; - } - if (here.op & 32) { - Tracevv((stderr, "inflate: end of block\n")); - state->back = -1; - state->mode = TYPE; - break; - } - if (here.op & 64) { - strm->msg = (char *)"invalid literal/length code"; - state->mode = BAD; - break; - } - state->extra = (unsigned)(here.op) & 15; - state->mode = LENEXT; - case LENEXT: - if (state->extra) { - NEEDBITS(state->extra); - state->length += BITS(state->extra); - DROPBITS(state->extra); - state->back += state->extra; - } - Tracevv((stderr, "inflate: length %u\n", state->length)); - state->was = state->length; - state->mode = DIST; - case DIST: - for (;;) { - here = state->distcode[BITS(state->distbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if ((here.op & 0xf0) == 0) { - last = here; - for (;;) { - here = state->distcode[last.val + - (BITS(last.bits + last.op) >> last.bits)]; - if ((unsigned)(last.bits + here.bits) <= bits) break; - PULLBYTE(); - } - DROPBITS(last.bits); - state->back += last.bits; - } - DROPBITS(here.bits); - state->back += here.bits; - if (here.op & 64) { - strm->msg = (char *)"invalid distance code"; - state->mode = BAD; - break; - } - state->offset = (unsigned)here.val; - state->extra = (unsigned)(here.op) & 15; - state->mode = DISTEXT; - case DISTEXT: - if (state->extra) { - NEEDBITS(state->extra); - state->offset += BITS(state->extra); - DROPBITS(state->extra); - state->back += state->extra; - } -#ifdef INFLATE_STRICT - if (state->offset > state->dmax) { - strm->msg = (char *)"invalid distance too far back"; - state->mode = BAD; - break; - } -#endif - Tracevv((stderr, "inflate: distance %u\n", state->offset)); - state->mode = MATCH; - case MATCH: - if (left == 0) goto inf_leave; - copy = out - left; - if (state->offset > copy) { /* copy from window */ - copy = state->offset - copy; - if (copy > state->whave) { - if (state->sane) { - strm->msg = (char *)"invalid distance too far back"; - state->mode = BAD; - break; - } -#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR - Trace((stderr, "inflate.c too far\n")); - copy -= state->whave; - if (copy > state->length) copy = state->length; - if (copy > left) copy = left; - left -= copy; - state->length -= copy; - do { - *put++ = 0; - } while (--copy); - if (state->length == 0) state->mode = LEN; - break; -#endif - } - if (copy > state->wnext) { - copy -= state->wnext; - from = state->window + (state->wsize - copy); - } - else - from = state->window + (state->wnext - copy); - if (copy > state->length) copy = state->length; - } - else { /* copy from output */ - from = put - state->offset; - copy = state->length; - } - if (copy > left) copy = left; - left -= copy; - state->length -= copy; - do { - *put++ = *from++; - } while (--copy); - if (state->length == 0) state->mode = LEN; - break; - case LIT: - if (left == 0) goto inf_leave; - *put++ = (unsigned char)(state->length); - left--; - state->mode = LEN; - break; - case CHECK: - if (state->wrap) { - NEEDBITS(32); - out -= left; - strm->total_out += out; - state->total += out; - if (out) - strm->adler = state->check = - UPDATE(state->check, put - out, out); - out = left; - if (( -#ifdef GUNZIP - state->flags ? hold : -#endif - ZSWAP32(hold)) != state->check) { - strm->msg = (char *)"incorrect data check"; - state->mode = BAD; - break; - } - INITBITS(); - Tracev((stderr, "inflate: check matches trailer\n")); - } -#ifdef GUNZIP - state->mode = LENGTH; - case LENGTH: - if (state->wrap && state->flags) { - NEEDBITS(32); - if (hold != (state->total & 0xffffffffUL)) { - strm->msg = (char *)"incorrect length check"; - state->mode = BAD; - break; - } - INITBITS(); - Tracev((stderr, "inflate: length matches trailer\n")); - } -#endif - state->mode = DONE; - case DONE: - ret = Z_STREAM_END; - goto inf_leave; - case BAD: - ret = Z_DATA_ERROR; - goto inf_leave; - case MEM: - return Z_MEM_ERROR; - case SYNC: - default: - return Z_STREAM_ERROR; - } - - /* - Return from inflate(), updating the total counts and the check value. - If there was no progress during the inflate() call, return a buffer - error. Call updatewindow() to create and/or update the window state. - Note: a memory error from inflate() is non-recoverable. - */ - inf_leave: - RESTORE(); - if (state->wsize || (out != strm->avail_out && state->mode < BAD && - (state->mode < CHECK || flush != Z_FINISH))) - if (updatewindow(strm, strm->next_out, out - strm->avail_out)) { - state->mode = MEM; - return Z_MEM_ERROR; - } - in -= strm->avail_in; - out -= strm->avail_out; - strm->total_in += in; - strm->total_out += out; - state->total += out; - if (state->wrap && out) - strm->adler = state->check = - UPDATE(state->check, strm->next_out - out, out); - strm->data_type = state->bits + (state->last ? 64 : 0) + - (state->mode == TYPE ? 128 : 0) + - (state->mode == LEN_ || state->mode == COPY_ ? 256 : 0); - if (((in == 0 && out == 0) || flush == Z_FINISH) && ret == Z_OK) - ret = Z_BUF_ERROR; - return ret; -} - -int ZEXPORT inflateEnd(strm) -z_streamp strm; -{ - struct inflate_state FAR *state; - if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0) - return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - if (state->window != Z_NULL) ZFREE(strm, state->window); - ZFREE(strm, strm->state); - strm->state = Z_NULL; - Tracev((stderr, "inflate: end\n")); - return Z_OK; -} - -int ZEXPORT inflateGetDictionary(strm, dictionary, dictLength) -z_streamp strm; -Bytef *dictionary; -uInt *dictLength; -{ - struct inflate_state FAR *state; - - /* check state */ - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - - /* copy dictionary */ - if (state->whave && dictionary != Z_NULL) { - zmemcpy(dictionary, state->window + state->wnext, - state->whave - state->wnext); - zmemcpy(dictionary + state->whave - state->wnext, - state->window, state->wnext); - } - if (dictLength != Z_NULL) - *dictLength = state->whave; - return Z_OK; -} - -int ZEXPORT inflateSetDictionary(strm, dictionary, dictLength) -z_streamp strm; -const Bytef *dictionary; -uInt dictLength; -{ - struct inflate_state FAR *state; - unsigned long dictid; - int ret; - - /* check state */ - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - if (state->wrap != 0 && state->mode != DICT) - return Z_STREAM_ERROR; - - /* check for correct dictionary identifier */ - if (state->mode == DICT) { - dictid = adler32(0L, Z_NULL, 0); - dictid = adler32(dictid, dictionary, dictLength); - if (dictid != state->check) - return Z_DATA_ERROR; - } - - /* copy dictionary to window using updatewindow(), which will amend the - existing dictionary if appropriate */ - ret = updatewindow(strm, dictionary + dictLength, dictLength); - if (ret) { - state->mode = MEM; - return Z_MEM_ERROR; - } - state->havedict = 1; - Tracev((stderr, "inflate: dictionary set\n")); - return Z_OK; -} - -int ZEXPORT inflateGetHeader(strm, head) -z_streamp strm; -gz_headerp head; -{ - struct inflate_state FAR *state; - - /* check state */ - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - if ((state->wrap & 2) == 0) return Z_STREAM_ERROR; - - /* save header structure */ - state->head = head; - head->done = 0; - return Z_OK; -} - -/* - Search buf[0..len-1] for the pattern: 0, 0, 0xff, 0xff. Return when found - or when out of input. When called, *have is the number of pattern bytes - found in order so far, in 0..3. On return *have is updated to the new - state. If on return *have equals four, then the pattern was found and the - return value is how many bytes were read including the last byte of the - pattern. If *have is less than four, then the pattern has not been found - yet and the return value is len. In the latter case, syncsearch() can be - called again with more data and the *have state. *have is initialized to - zero for the first call. - */ -local unsigned syncsearch(have, buf, len) -unsigned FAR *have; -const unsigned char FAR *buf; -unsigned len; -{ - unsigned got; - unsigned next; - - got = *have; - next = 0; - while (next < len && got < 4) { - if ((int)(buf[next]) == (got < 2 ? 0 : 0xff)) - got++; - else if (buf[next]) - got = 0; - else - got = 4 - got; - next++; - } - *have = got; - return next; -} - -int ZEXPORT inflateSync(strm) -z_streamp strm; -{ - unsigned len; /* number of bytes to look at or looked at */ - unsigned long in, out; /* temporary to save total_in and total_out */ - unsigned char buf[4]; /* to restore bit buffer to byte string */ - struct inflate_state FAR *state; - - /* check parameters */ - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - if (strm->avail_in == 0 && state->bits < 8) return Z_BUF_ERROR; - - /* if first time, start search in bit buffer */ - if (state->mode != SYNC) { - state->mode = SYNC; - state->hold <<= state->bits & 7; - state->bits -= state->bits & 7; - len = 0; - while (state->bits >= 8) { - buf[len++] = (unsigned char)(state->hold); - state->hold >>= 8; - state->bits -= 8; - } - state->have = 0; - syncsearch(&(state->have), buf, len); - } - - /* search available input */ - len = syncsearch(&(state->have), strm->next_in, strm->avail_in); - strm->avail_in -= len; - strm->next_in += len; - strm->total_in += len; - - /* return no joy or set up to restart inflate() on a new block */ - if (state->have != 4) return Z_DATA_ERROR; - in = strm->total_in; out = strm->total_out; - inflateReset(strm); - strm->total_in = in; strm->total_out = out; - state->mode = TYPE; - return Z_OK; -} - -/* - Returns true if inflate is currently at the end of a block generated by - Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP - implementation to provide an additional safety check. PPP uses - Z_SYNC_FLUSH but removes the length bytes of the resulting empty stored - block. When decompressing, PPP checks that at the end of input packet, - inflate is waiting for these length bytes. - */ -int ZEXPORT inflateSyncPoint(strm) -z_streamp strm; -{ - struct inflate_state FAR *state; - - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - return state->mode == STORED && state->bits == 0; -} - -int ZEXPORT inflateCopy(dest, source) -z_streamp dest; -z_streamp source; -{ - struct inflate_state FAR *state; - struct inflate_state FAR *copy; - unsigned char FAR *window; - unsigned wsize; - - /* check input */ - if (dest == Z_NULL || source == Z_NULL || source->state == Z_NULL || - source->zalloc == (alloc_func)0 || source->zfree == (free_func)0) - return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)source->state; - - /* allocate space */ - copy = (struct inflate_state FAR *) - ZALLOC(source, 1, sizeof(struct inflate_state)); - if (copy == Z_NULL) return Z_MEM_ERROR; - window = Z_NULL; - if (state->window != Z_NULL) { - window = (unsigned char FAR *) - ZALLOC(source, 1U << state->wbits, sizeof(unsigned char)); - if (window == Z_NULL) { - ZFREE(source, copy); - return Z_MEM_ERROR; - } - } - - /* copy state */ - zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream)); - zmemcpy((voidpf)copy, (voidpf)state, sizeof(struct inflate_state)); - if (state->lencode >= state->codes && - state->lencode <= state->codes + ENOUGH - 1) { - copy->lencode = copy->codes + (state->lencode - state->codes); - copy->distcode = copy->codes + (state->distcode - state->codes); - } - copy->next = copy->codes + (state->next - state->codes); - if (window != Z_NULL) { - wsize = 1U << state->wbits; - zmemcpy(window, state->window, wsize); - } - copy->window = window; - dest->state = (struct internal_state FAR *)copy; - return Z_OK; -} - -int ZEXPORT inflateUndermine(strm, subvert) -z_streamp strm; -int subvert; -{ - struct inflate_state FAR *state; - - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - state->sane = !subvert; -#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR - return Z_OK; -#else - state->sane = 1; - return Z_DATA_ERROR; -#endif -} - -long ZEXPORT inflateMark(strm) -z_streamp strm; -{ - struct inflate_state FAR *state; - - if (strm == Z_NULL || strm->state == Z_NULL) return -1L << 16; - state = (struct inflate_state FAR *)strm->state; - return ((long)(state->back) << 16) + - (state->mode == COPY ? state->length : - (state->mode == MATCH ? state->was - state->length : 0)); -} diff --git a/platform/win32/msvc/external/zlib/inflate.h b/platform/win32/msvc/external/zlib/inflate.h deleted file mode 100644 index 95f4986d400..00000000000 --- a/platform/win32/msvc/external/zlib/inflate.h +++ /dev/null @@ -1,122 +0,0 @@ -/* inflate.h -- internal inflate state definition - * Copyright (C) 1995-2009 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -/* define NO_GZIP when compiling if you want to disable gzip header and - trailer decoding by inflate(). NO_GZIP would be used to avoid linking in - the crc code when it is not needed. For shared libraries, gzip decoding - should be left enabled. */ -#ifndef NO_GZIP -# define GUNZIP -#endif - -/* Possible inflate modes between inflate() calls */ -typedef enum { - HEAD, /* i: waiting for magic header */ - FLAGS, /* i: waiting for method and flags (gzip) */ - TIME, /* i: waiting for modification time (gzip) */ - OS, /* i: waiting for extra flags and operating system (gzip) */ - EXLEN, /* i: waiting for extra length (gzip) */ - EXTRA, /* i: waiting for extra bytes (gzip) */ - NAME, /* i: waiting for end of file name (gzip) */ - COMMENT, /* i: waiting for end of comment (gzip) */ - HCRC, /* i: waiting for header crc (gzip) */ - DICTID, /* i: waiting for dictionary check value */ - DICT, /* waiting for inflateSetDictionary() call */ - TYPE, /* i: waiting for type bits, including last-flag bit */ - TYPEDO, /* i: same, but skip check to exit inflate on new block */ - STORED, /* i: waiting for stored size (length and complement) */ - COPY_, /* i/o: same as COPY below, but only first time in */ - COPY, /* i/o: waiting for input or output to copy stored block */ - TABLE, /* i: waiting for dynamic block table lengths */ - LENLENS, /* i: waiting for code length code lengths */ - CODELENS, /* i: waiting for length/lit and distance code lengths */ - LEN_, /* i: same as LEN below, but only first time in */ - LEN, /* i: waiting for length/lit/eob code */ - LENEXT, /* i: waiting for length extra bits */ - DIST, /* i: waiting for distance code */ - DISTEXT, /* i: waiting for distance extra bits */ - MATCH, /* o: waiting for output space to copy string */ - LIT, /* o: waiting for output space to write literal */ - CHECK, /* i: waiting for 32-bit check value */ - LENGTH, /* i: waiting for 32-bit length (gzip) */ - DONE, /* finished check, done -- remain here until reset */ - BAD, /* got a data error -- remain here until reset */ - MEM, /* got an inflate() memory error -- remain here until reset */ - SYNC /* looking for synchronization bytes to restart inflate() */ -} inflate_mode; - -/* - State transitions between above modes - - - (most modes can go to BAD or MEM on error -- not shown for clarity) - - Process header: - HEAD -> (gzip) or (zlib) or (raw) - (gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME -> COMMENT -> - HCRC -> TYPE - (zlib) -> DICTID or TYPE - DICTID -> DICT -> TYPE - (raw) -> TYPEDO - Read deflate blocks: - TYPE -> TYPEDO -> STORED or TABLE or LEN_ or CHECK - STORED -> COPY_ -> COPY -> TYPE - TABLE -> LENLENS -> CODELENS -> LEN_ - LEN_ -> LEN - Read deflate codes in fixed or dynamic block: - LEN -> LENEXT or LIT or TYPE - LENEXT -> DIST -> DISTEXT -> MATCH -> LEN - LIT -> LEN - Process trailer: - CHECK -> LENGTH -> DONE - */ - -/* state maintained between inflate() calls. Approximately 10K bytes. */ -struct inflate_state { - inflate_mode mode; /* current inflate mode */ - int last; /* true if processing last block */ - int wrap; /* bit 0 true for zlib, bit 1 true for gzip */ - int havedict; /* true if dictionary provided */ - int flags; /* gzip header method and flags (0 if zlib) */ - unsigned dmax; /* zlib header max distance (INFLATE_STRICT) */ - unsigned long check; /* protected copy of check value */ - unsigned long total; /* protected copy of output count */ - gz_headerp head; /* where to save gzip header information */ - /* sliding window */ - unsigned wbits; /* log base 2 of requested window size */ - unsigned wsize; /* window size or zero if not using window */ - unsigned whave; /* valid bytes in the window */ - unsigned wnext; /* window write index */ - unsigned char FAR *window; /* allocated sliding window, if needed */ - /* bit accumulator */ - unsigned long hold; /* input bit accumulator */ - unsigned bits; /* number of bits in "in" */ - /* for string and stored block copying */ - unsigned length; /* literal or length of data to copy */ - unsigned offset; /* distance back to copy string from */ - /* for table and code decoding */ - unsigned extra; /* extra bits needed */ - /* fixed and dynamic code tables */ - code const FAR *lencode; /* starting table for length/literal codes */ - code const FAR *distcode; /* starting table for distance codes */ - unsigned lenbits; /* index bits for lencode */ - unsigned distbits; /* index bits for distcode */ - /* dynamic table building */ - unsigned ncode; /* number of code length code lengths */ - unsigned nlen; /* number of length code lengths */ - unsigned ndist; /* number of distance code lengths */ - unsigned have; /* number of code lengths in lens[] */ - code FAR *next; /* next available space in codes[] */ - unsigned short lens[320]; /* temporary storage for code lengths */ - unsigned short work[288]; /* work area for code table building */ - code codes[ENOUGH]; /* space for code tables */ - int sane; /* if false, allow invalid distance too far */ - int back; /* bits back of last unprocessed length/lit */ - unsigned was; /* initial length of match */ -}; diff --git a/platform/win32/msvc/external/zlib/inftrees.c b/platform/win32/msvc/external/zlib/inftrees.c deleted file mode 100644 index 44d89cf24e1..00000000000 --- a/platform/win32/msvc/external/zlib/inftrees.c +++ /dev/null @@ -1,306 +0,0 @@ -/* inftrees.c -- generate Huffman trees for efficient decoding - * Copyright (C) 1995-2013 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "zutil.h" -#include "inftrees.h" - -#define MAXBITS 15 - -const char inflate_copyright[] = - " inflate 1.2.8 Copyright 1995-2013 Mark Adler "; -/* - If you use the zlib library in a product, an acknowledgment is welcome - in the documentation of your product. If for some reason you cannot - include such an acknowledgment, I would appreciate that you keep this - copyright string in the executable of your product. - */ - -/* - Build a set of tables to decode the provided canonical Huffman code. - The code lengths are lens[0..codes-1]. The result starts at *table, - whose indices are 0..2^bits-1. work is a writable array of at least - lens shorts, which is used as a work area. type is the type of code - to be generated, CODES, LENS, or DISTS. On return, zero is success, - -1 is an invalid code, and +1 means that ENOUGH isn't enough. table - on return points to the next available entry's address. bits is the - requested root table index bits, and on return it is the actual root - table index bits. It will differ if the request is greater than the - longest code or if it is less than the shortest code. - */ -int ZLIB_INTERNAL inflate_table(type, lens, codes, table, bits, work) -codetype type; -unsigned short FAR *lens; -unsigned codes; -code FAR * FAR *table; -unsigned FAR *bits; -unsigned short FAR *work; -{ - unsigned len; /* a code's length in bits */ - unsigned sym; /* index of code symbols */ - unsigned min, max; /* minimum and maximum code lengths */ - unsigned root; /* number of index bits for root table */ - unsigned curr; /* number of index bits for current table */ - unsigned drop; /* code bits to drop for sub-table */ - int left; /* number of prefix codes available */ - unsigned used; /* code entries in table used */ - unsigned huff; /* Huffman code */ - unsigned incr; /* for incrementing code, index */ - unsigned fill; /* index for replicating entries */ - unsigned low; /* low bits for current root entry */ - unsigned mask; /* mask for low root bits */ - code here; /* table entry for duplication */ - code FAR *next; /* next available space in table */ - const unsigned short FAR *base; /* base value table to use */ - const unsigned short FAR *extra; /* extra bits table to use */ - int end; /* use base and extra for symbol > end */ - unsigned short count[MAXBITS+1]; /* number of codes of each length */ - unsigned short offs[MAXBITS+1]; /* offsets in table for each length */ - static const unsigned short lbase[31] = { /* Length codes 257..285 base */ - 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, - 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; - static const unsigned short lext[31] = { /* Length codes 257..285 extra */ - 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, - 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78}; - static const unsigned short dbase[32] = { /* Distance codes 0..29 base */ - 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, - 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, - 8193, 12289, 16385, 24577, 0, 0}; - static const unsigned short dext[32] = { /* Distance codes 0..29 extra */ - 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, - 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, - 28, 28, 29, 29, 64, 64}; - - /* - Process a set of code lengths to create a canonical Huffman code. The - code lengths are lens[0..codes-1]. Each length corresponds to the - symbols 0..codes-1. The Huffman code is generated by first sorting the - symbols by length from short to long, and retaining the symbol order - for codes with equal lengths. Then the code starts with all zero bits - for the first code of the shortest length, and the codes are integer - increments for the same length, and zeros are appended as the length - increases. For the deflate format, these bits are stored backwards - from their more natural integer increment ordering, and so when the - decoding tables are built in the large loop below, the integer codes - are incremented backwards. - - This routine assumes, but does not check, that all of the entries in - lens[] are in the range 0..MAXBITS. The caller must assure this. - 1..MAXBITS is interpreted as that code length. zero means that that - symbol does not occur in this code. - - The codes are sorted by computing a count of codes for each length, - creating from that a table of starting indices for each length in the - sorted table, and then entering the symbols in order in the sorted - table. The sorted table is work[], with that space being provided by - the caller. - - The length counts are used for other purposes as well, i.e. finding - the minimum and maximum length codes, determining if there are any - codes at all, checking for a valid set of lengths, and looking ahead - at length counts to determine sub-table sizes when building the - decoding tables. - */ - - /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */ - for (len = 0; len <= MAXBITS; len++) - count[len] = 0; - for (sym = 0; sym < codes; sym++) - count[lens[sym]]++; - - /* bound code lengths, force root to be within code lengths */ - root = *bits; - for (max = MAXBITS; max >= 1; max--) - if (count[max] != 0) break; - if (root > max) root = max; - if (max == 0) { /* no symbols to code at all */ - here.op = (unsigned char)64; /* invalid code marker */ - here.bits = (unsigned char)1; - here.val = (unsigned short)0; - *(*table)++ = here; /* make a table to force an error */ - *(*table)++ = here; - *bits = 1; - return 0; /* no symbols, but wait for decoding to report error */ - } - for (min = 1; min < max; min++) - if (count[min] != 0) break; - if (root < min) root = min; - - /* check for an over-subscribed or incomplete set of lengths */ - left = 1; - for (len = 1; len <= MAXBITS; len++) { - left <<= 1; - left -= count[len]; - if (left < 0) return -1; /* over-subscribed */ - } - if (left > 0 && (type == CODES || max != 1)) - return -1; /* incomplete set */ - - /* generate offsets into symbol table for each length for sorting */ - offs[1] = 0; - for (len = 1; len < MAXBITS; len++) - offs[len + 1] = offs[len] + count[len]; - - /* sort symbols by length, by symbol order within each length */ - for (sym = 0; sym < codes; sym++) - if (lens[sym] != 0) work[offs[lens[sym]]++] = (unsigned short)sym; - - /* - Create and fill in decoding tables. In this loop, the table being - filled is at next and has curr index bits. The code being used is huff - with length len. That code is converted to an index by dropping drop - bits off of the bottom. For codes where len is less than drop + curr, - those top drop + curr - len bits are incremented through all values to - fill the table with replicated entries. - - root is the number of index bits for the root table. When len exceeds - root, sub-tables are created pointed to by the root entry with an index - of the low root bits of huff. This is saved in low to check for when a - new sub-table should be started. drop is zero when the root table is - being filled, and drop is root when sub-tables are being filled. - - When a new sub-table is needed, it is necessary to look ahead in the - code lengths to determine what size sub-table is needed. The length - counts are used for this, and so count[] is decremented as codes are - entered in the tables. - - used keeps track of how many table entries have been allocated from the - provided *table space. It is checked for LENS and DIST tables against - the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in - the initial root table size constants. See the comments in inftrees.h - for more information. - - sym increments through all symbols, and the loop terminates when - all codes of length max, i.e. all codes, have been processed. This - routine permits incomplete codes, so another loop after this one fills - in the rest of the decoding tables with invalid code markers. - */ - - /* set up for code type */ - switch (type) { - case CODES: - base = extra = work; /* dummy value--not used */ - end = 19; - break; - case LENS: - base = lbase; - base -= 257; - extra = lext; - extra -= 257; - end = 256; - break; - default: /* DISTS */ - base = dbase; - extra = dext; - end = -1; - } - - /* initialize state for loop */ - huff = 0; /* starting code */ - sym = 0; /* starting code symbol */ - len = min; /* starting code length */ - next = *table; /* current table to fill in */ - curr = root; /* current table index bits */ - drop = 0; /* current bits to drop from code for index */ - low = (unsigned)(-1); /* trigger new sub-table when len > root */ - used = 1U << root; /* use root table entries */ - mask = used - 1; /* mask for comparing low */ - - /* check available table space */ - if ((type == LENS && used > ENOUGH_LENS) || - (type == DISTS && used > ENOUGH_DISTS)) - return 1; - - /* process all codes and make table entries */ - for (;;) { - /* create table entry */ - here.bits = (unsigned char)(len - drop); - if ((int)(work[sym]) < end) { - here.op = (unsigned char)0; - here.val = work[sym]; - } - else if ((int)(work[sym]) > end) { - here.op = (unsigned char)(extra[work[sym]]); - here.val = base[work[sym]]; - } - else { - here.op = (unsigned char)(32 + 64); /* end of block */ - here.val = 0; - } - - /* replicate for those indices with low len bits equal to huff */ - incr = 1U << (len - drop); - fill = 1U << curr; - min = fill; /* save offset to next table */ - do { - fill -= incr; - next[(huff >> drop) + fill] = here; - } while (fill != 0); - - /* backwards increment the len-bit code huff */ - incr = 1U << (len - 1); - while (huff & incr) - incr >>= 1; - if (incr != 0) { - huff &= incr - 1; - huff += incr; - } - else - huff = 0; - - /* go to next symbol, update count, len */ - sym++; - if (--(count[len]) == 0) { - if (len == max) break; - len = lens[work[sym]]; - } - - /* create new sub-table if needed */ - if (len > root && (huff & mask) != low) { - /* if first time, transition to sub-tables */ - if (drop == 0) - drop = root; - - /* increment past last table */ - next += min; /* here min is 1 << curr */ - - /* determine length of next table */ - curr = len - drop; - left = (int)(1 << curr); - while (curr + drop < max) { - left -= count[curr + drop]; - if (left <= 0) break; - curr++; - left <<= 1; - } - - /* check for enough space */ - used += 1U << curr; - if ((type == LENS && used > ENOUGH_LENS) || - (type == DISTS && used > ENOUGH_DISTS)) - return 1; - - /* point entry in root table to sub-table */ - low = huff & mask; - (*table)[low].op = (unsigned char)curr; - (*table)[low].bits = (unsigned char)root; - (*table)[low].val = (unsigned short)(next - *table); - } - } - - /* fill in remaining table entry if code is incomplete (guaranteed to have - at most one remaining entry, since if the code is incomplete, the - maximum code length that was allowed to get this far is one bit) */ - if (huff != 0) { - here.op = (unsigned char)64; /* invalid code marker */ - here.bits = (unsigned char)(len - drop); - here.val = (unsigned short)0; - next[huff] = here; - } - - /* set return parameters */ - *table += used; - *bits = root; - return 0; -} diff --git a/platform/win32/msvc/external/zlib/inftrees.h b/platform/win32/msvc/external/zlib/inftrees.h deleted file mode 100644 index baa53a0b1a1..00000000000 --- a/platform/win32/msvc/external/zlib/inftrees.h +++ /dev/null @@ -1,62 +0,0 @@ -/* inftrees.h -- header to use inftrees.c - * Copyright (C) 1995-2005, 2010 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -/* Structure for decoding tables. Each entry provides either the - information needed to do the operation requested by the code that - indexed that table entry, or it provides a pointer to another - table that indexes more bits of the code. op indicates whether - the entry is a pointer to another table, a literal, a length or - distance, an end-of-block, or an invalid code. For a table - pointer, the low four bits of op is the number of index bits of - that table. For a length or distance, the low four bits of op - is the number of extra bits to get after the code. bits is - the number of bits in this code or part of the code to drop off - of the bit buffer. val is the actual byte to output in the case - of a literal, the base length or distance, or the offset from - the current table to the next table. Each entry is four bytes. */ -typedef struct { - unsigned char op; /* operation, extra bits, table bits */ - unsigned char bits; /* bits in this part of the code */ - unsigned short val; /* offset in table or code value */ -} code; - -/* op values as set by inflate_table(): - 00000000 - literal - 0000tttt - table link, tttt != 0 is the number of table index bits - 0001eeee - length or distance, eeee is the number of extra bits - 01100000 - end of block - 01000000 - invalid code - */ - -/* Maximum size of the dynamic table. The maximum number of code structures is - 1444, which is the sum of 852 for literal/length codes and 592 for distance - codes. These values were found by exhaustive searches using the program - examples/enough.c found in the zlib distribtution. The arguments to that - program are the number of symbols, the initial root table size, and the - maximum bit length of a code. "enough 286 9 15" for literal/length codes - returns returns 852, and "enough 30 6 15" for distance codes returns 592. - The initial root table size (9 or 6) is found in the fifth argument of the - inflate_table() calls in inflate.c and infback.c. If the root table size is - changed, then these maximum sizes would be need to be recalculated and - updated. */ -#define ENOUGH_LENS 852 -#define ENOUGH_DISTS 592 -#define ENOUGH (ENOUGH_LENS+ENOUGH_DISTS) - -/* Type of code to build for inflate_table() */ -typedef enum { - CODES, - LENS, - DISTS -} codetype; - -int ZLIB_INTERNAL inflate_table OF((codetype type, unsigned short FAR *lens, - unsigned codes, code FAR * FAR *table, - unsigned FAR *bits, unsigned short FAR *work)); diff --git a/platform/win32/msvc/external/zlib/make_vms.com b/platform/win32/msvc/external/zlib/make_vms.com deleted file mode 100644 index 65e9d0cbc8e..00000000000 --- a/platform/win32/msvc/external/zlib/make_vms.com +++ /dev/null @@ -1,867 +0,0 @@ -$! make libz under VMS written by -$! Martin P.J. Zinser -$! -$! In case of problems with the install you might contact me at -$! zinser@zinser.no-ip.info(preferred) or -$! martin.zinser@eurexchange.com (work) -$! -$! Make procedure history for Zlib -$! -$!------------------------------------------------------------------------------ -$! Version history -$! 0.01 20060120 First version to receive a number -$! 0.02 20061008 Adapt to new Makefile.in -$! 0.03 20091224 Add support for large file check -$! 0.04 20100110 Add new gzclose, gzlib, gzread, gzwrite -$! 0.05 20100221 Exchange zlibdefs.h by zconf.h.in -$! 0.06 20120111 Fix missing amiss_err, update zconf_h.in, fix new exmples -$! subdir path, update module search in makefile.in -$! 0.07 20120115 Triggered by work done by Alexey Chupahin completly redesigned -$! shared image creation -$! 0.08 20120219 Make it work on VAX again, pre-load missing symbols to shared -$! image -$! 0.09 20120305 SMS. P1 sets builder ("MMK", "MMS", " " (built-in)). -$! "" -> automatic, preference: MMK, MMS, built-in. -$! -$ on error then goto err_exit -$! -$ true = 1 -$ false = 0 -$ tmpnam = "temp_" + f$getjpi("","pid") -$ tt = tmpnam + ".txt" -$ tc = tmpnam + ".c" -$ th = tmpnam + ".h" -$ define/nolog tconfig 'th' -$ its_decc = false -$ its_vaxc = false -$ its_gnuc = false -$ s_case = False -$! -$! Setup variables holding "config" information -$! -$ Make = "''p1'" -$ name = "Zlib" -$ version = "?.?.?" -$ v_string = "ZLIB_VERSION" -$ v_file = "zlib.h" -$ ccopt = "/include = []" -$ lopts = "" -$ dnsrl = "" -$ aconf_in_file = "zconf.h.in#zconf.h_in#zconf_h.in" -$ conf_check_string = "" -$ linkonly = false -$ optfile = name + ".opt" -$ mapfile = name + ".map" -$ libdefs = "" -$ vax = f$getsyi("HW_MODEL").lt.1024 -$ axp = f$getsyi("HW_MODEL").ge.1024 .and. f$getsyi("HW_MODEL").lt.4096 -$ ia64 = f$getsyi("HW_MODEL").ge.4096 -$! -$! 2012-03-05 SMS. -$! Why is this needed? And if it is needed, why not simply ".not. vax"? -$! -$!!! if axp .or. ia64 then set proc/parse=extended -$! -$ whoami = f$parse(f$environment("Procedure"),,,,"NO_CONCEAL") -$ mydef = F$parse(whoami,,,"DEVICE") -$ mydir = f$parse(whoami,,,"DIRECTORY") - "][" -$ myproc = f$parse(whoami,,,"Name") + f$parse(whoami,,,"type") -$! -$! Check for MMK/MMS -$! -$ if (Make .eqs. "") -$ then -$ If F$Search ("Sys$System:MMS.EXE") .nes. "" Then Make = "MMS" -$ If F$Type (MMK) .eqs. "STRING" Then Make = "MMK" -$ else -$ Make = f$edit( Make, "trim") -$ endif -$! -$ gosub find_version -$! -$ open/write topt tmp.opt -$ open/write optf 'optfile' -$! -$ gosub check_opts -$! -$! Look for the compiler used -$! -$ gosub check_compiler -$ close topt -$ close optf -$! -$ if its_decc -$ then -$ ccopt = "/prefix=all" + ccopt -$ if f$trnlnm("SYS") .eqs. "" -$ then -$ if axp -$ then -$ define sys sys$library: -$ else -$ ccopt = "/decc" + ccopt -$ define sys decc$library_include: -$ endif -$ endif -$! -$! 2012-03-05 SMS. -$! Why /NAMES = AS_IS? Why not simply ".not. vax"? And why not on VAX? -$! -$ if axp .or. ia64 -$ then -$ ccopt = ccopt + "/name=as_is/opt=(inline=speed)" -$ s_case = true -$ endif -$ endif -$ if its_vaxc .or. its_gnuc -$ then -$ if f$trnlnm("SYS").eqs."" then define sys sys$library: -$ endif -$! -$! Build a fake configure input header -$! -$ open/write conf_hin config.hin -$ write conf_hin "#undef _LARGEFILE64_SOURCE" -$ close conf_hin -$! -$! -$ i = 0 -$FIND_ACONF: -$ fname = f$element(i,"#",aconf_in_file) -$ if fname .eqs. "#" then goto AMISS_ERR -$ if f$search(fname) .eqs. "" -$ then -$ i = i + 1 -$ goto find_aconf -$ endif -$ open/read/err=aconf_err aconf_in 'fname' -$ open/write aconf zconf.h -$ACONF_LOOP: -$ read/end_of_file=aconf_exit aconf_in line -$ work = f$edit(line, "compress,trim") -$ if f$extract(0,6,work) .nes. "#undef" -$ then -$ if f$extract(0,12,work) .nes. "#cmakedefine" -$ then -$ write aconf line -$ endif -$ else -$ cdef = f$element(1," ",work) -$ gosub check_config -$ endif -$ goto aconf_loop -$ACONF_EXIT: -$ write aconf "" -$ write aconf "/* VMS specifics added by make_vms.com: */" -$ write aconf "#define VMS 1" -$ write aconf "#include " -$ write aconf "#include " -$ write aconf "#ifdef _LARGEFILE" -$ write aconf "# define off64_t __off64_t" -$ write aconf "# define fopen64 fopen" -$ write aconf "# define fseeko64 fseeko" -$ write aconf "# define lseek64 lseek" -$ write aconf "# define ftello64 ftell" -$ write aconf "#endif" -$ write aconf "#if !defined( __VAX) && (__CRTL_VER >= 70312000)" -$ write aconf "# define HAVE_VSNPRINTF" -$ write aconf "#endif" -$ close aconf_in -$ close aconf -$ if f$search("''th'") .nes. "" then delete 'th';* -$! Build the thing plain or with mms -$! -$ write sys$output "Compiling Zlib sources ..." -$ if make.eqs."" -$ then -$ if (f$search( "example.obj;*") .nes. "") then delete example.obj;* -$ if (f$search( "minigzip.obj;*") .nes. "") then delete minigzip.obj;* -$ CALL MAKE adler32.OBJ "CC ''CCOPT' adler32" - - adler32.c zlib.h zconf.h -$ CALL MAKE compress.OBJ "CC ''CCOPT' compress" - - compress.c zlib.h zconf.h -$ CALL MAKE crc32.OBJ "CC ''CCOPT' crc32" - - crc32.c zlib.h zconf.h -$ CALL MAKE deflate.OBJ "CC ''CCOPT' deflate" - - deflate.c deflate.h zutil.h zlib.h zconf.h -$ CALL MAKE gzclose.OBJ "CC ''CCOPT' gzclose" - - gzclose.c zutil.h zlib.h zconf.h -$ CALL MAKE gzlib.OBJ "CC ''CCOPT' gzlib" - - gzlib.c zutil.h zlib.h zconf.h -$ CALL MAKE gzread.OBJ "CC ''CCOPT' gzread" - - gzread.c zutil.h zlib.h zconf.h -$ CALL MAKE gzwrite.OBJ "CC ''CCOPT' gzwrite" - - gzwrite.c zutil.h zlib.h zconf.h -$ CALL MAKE infback.OBJ "CC ''CCOPT' infback" - - infback.c zutil.h inftrees.h inflate.h inffast.h inffixed.h -$ CALL MAKE inffast.OBJ "CC ''CCOPT' inffast" - - inffast.c zutil.h zlib.h zconf.h inffast.h -$ CALL MAKE inflate.OBJ "CC ''CCOPT' inflate" - - inflate.c zutil.h zlib.h zconf.h infblock.h -$ CALL MAKE inftrees.OBJ "CC ''CCOPT' inftrees" - - inftrees.c zutil.h zlib.h zconf.h inftrees.h -$ CALL MAKE trees.OBJ "CC ''CCOPT' trees" - - trees.c deflate.h zutil.h zlib.h zconf.h -$ CALL MAKE uncompr.OBJ "CC ''CCOPT' uncompr" - - uncompr.c zlib.h zconf.h -$ CALL MAKE zutil.OBJ "CC ''CCOPT' zutil" - - zutil.c zutil.h zlib.h zconf.h -$ write sys$output "Building Zlib ..." -$ CALL MAKE libz.OLB "lib/crea libz.olb *.obj" *.OBJ -$ write sys$output "Building example..." -$ CALL MAKE example.OBJ "CC ''CCOPT' [.test]example" - - [.test]example.c zlib.h zconf.h -$ call make example.exe "LINK example,libz.olb/lib" example.obj libz.olb -$ write sys$output "Building minigzip..." -$ CALL MAKE minigzip.OBJ "CC ''CCOPT' [.test]minigzip" - - [.test]minigzip.c zlib.h zconf.h -$ call make minigzip.exe - - "LINK minigzip,libz.olb/lib" - - minigzip.obj libz.olb -$ else -$ gosub crea_mms -$ write sys$output "Make ''name' ''version' with ''Make' " -$ 'make' -$ endif -$! -$! Create shareable image -$! -$ gosub crea_olist -$ write sys$output "Creating libzshr.exe" -$ call map_2_shopt 'mapfile' 'optfile' -$ LINK_'lopts'/SHARE=libzshr.exe modules.opt/opt,'optfile'/opt -$ write sys$output "Zlib build completed" -$ delete/nolog tmp.opt;* -$ exit -$AMISS_ERR: -$ write sys$output "No source for config.hin found." -$ write sys$output "Tried any of ''aconf_in_file'" -$ goto err_exit -$CC_ERR: -$ write sys$output "C compiler required to build ''name'" -$ goto err_exit -$ERR_EXIT: -$ set message/facil/ident/sever/text -$ close/nolog optf -$ close/nolog topt -$ close/nolog aconf_in -$ close/nolog aconf -$ close/nolog out -$ close/nolog min -$ close/nolog mod -$ close/nolog h_in -$ write sys$output "Exiting..." -$ exit 2 -$! -$! -$MAKE: SUBROUTINE !SUBROUTINE TO CHECK DEPENDENCIES -$ V = 'F$Verify(0) -$! P1 = What we are trying to make -$! P2 = Command to make it -$! P3 - P8 What it depends on -$ -$ If F$Search(P1) .Eqs. "" Then Goto Makeit -$ Time = F$CvTime(F$File(P1,"RDT")) -$arg=3 -$Loop: -$ Argument = P'arg -$ If Argument .Eqs. "" Then Goto Exit -$ El=0 -$Loop2: -$ File = F$Element(El," ",Argument) -$ If File .Eqs. " " Then Goto Endl -$ AFile = "" -$Loop3: -$ OFile = AFile -$ AFile = F$Search(File) -$ If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl -$ If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit -$ Goto Loop3 -$NextEL: -$ El = El + 1 -$ Goto Loop2 -$EndL: -$ arg=arg+1 -$ If arg .Le. 8 Then Goto Loop -$ Goto Exit -$ -$Makeit: -$ VV=F$VERIFY(0) -$ write sys$output P2 -$ 'P2 -$ VV='F$Verify(VV) -$Exit: -$ If V Then Set Verify -$ENDSUBROUTINE -$!------------------------------------------------------------------------------ -$! -$! Check command line options and set symbols accordingly -$! -$!------------------------------------------------------------------------------ -$! Version history -$! 0.01 20041206 First version to receive a number -$! 0.02 20060126 Add new "HELP" target -$ CHECK_OPTS: -$ i = 1 -$ OPT_LOOP: -$ if i .lt. 9 -$ then -$ cparm = f$edit(p'i',"upcase") -$! -$! Check if parameter actually contains something -$! -$ if f$edit(cparm,"trim") .nes. "" -$ then -$ if cparm .eqs. "DEBUG" -$ then -$ ccopt = ccopt + "/noopt/deb" -$ lopts = lopts + "/deb" -$ endif -$ if f$locate("CCOPT=",cparm) .lt. f$length(cparm) -$ then -$ start = f$locate("=",cparm) + 1 -$ len = f$length(cparm) - start -$ ccopt = ccopt + f$extract(start,len,cparm) -$ if f$locate("AS_IS",f$edit(ccopt,"UPCASE")) .lt. f$length(ccopt) - - then s_case = true -$ endif -$ if cparm .eqs. "LINK" then linkonly = true -$ if f$locate("LOPTS=",cparm) .lt. f$length(cparm) -$ then -$ start = f$locate("=",cparm) + 1 -$ len = f$length(cparm) - start -$ lopts = lopts + f$extract(start,len,cparm) -$ endif -$ if f$locate("CC=",cparm) .lt. f$length(cparm) -$ then -$ start = f$locate("=",cparm) + 1 -$ len = f$length(cparm) - start -$ cc_com = f$extract(start,len,cparm) - if (cc_com .nes. "DECC") .and. - - (cc_com .nes. "VAXC") .and. - - (cc_com .nes. "GNUC") -$ then -$ write sys$output "Unsupported compiler choice ''cc_com' ignored" -$ write sys$output "Use DECC, VAXC, or GNUC instead" -$ else -$ if cc_com .eqs. "DECC" then its_decc = true -$ if cc_com .eqs. "VAXC" then its_vaxc = true -$ if cc_com .eqs. "GNUC" then its_gnuc = true -$ endif -$ endif -$ if f$locate("MAKE=",cparm) .lt. f$length(cparm) -$ then -$ start = f$locate("=",cparm) + 1 -$ len = f$length(cparm) - start -$ mmks = f$extract(start,len,cparm) -$ if (mmks .eqs. "MMK") .or. (mmks .eqs. "MMS") -$ then -$ make = mmks -$ else -$ write sys$output "Unsupported make choice ''mmks' ignored" -$ write sys$output "Use MMK or MMS instead" -$ endif -$ endif -$ if cparm .eqs. "HELP" then gosub bhelp -$ endif -$ i = i + 1 -$ goto opt_loop -$ endif -$ return -$!------------------------------------------------------------------------------ -$! -$! Look for the compiler used -$! -$! Version history -$! 0.01 20040223 First version to receive a number -$! 0.02 20040229 Save/set value of decc$no_rooted_search_lists -$! 0.03 20060202 Extend handling of GNU C -$! 0.04 20090402 Compaq -> hp -$CHECK_COMPILER: -$ if (.not. (its_decc .or. its_vaxc .or. its_gnuc)) -$ then -$ its_decc = (f$search("SYS$SYSTEM:DECC$COMPILER.EXE") .nes. "") -$ its_vaxc = .not. its_decc .and. (F$Search("SYS$System:VAXC.Exe") .nes. "") -$ its_gnuc = .not. (its_decc .or. its_vaxc) .and. (f$trnlnm("gnu_cc") .nes. "") -$ endif -$! -$! Exit if no compiler available -$! -$ if (.not. (its_decc .or. its_vaxc .or. its_gnuc)) -$ then goto CC_ERR -$ else -$ if its_decc -$ then -$ write sys$output "CC compiler check ... hp C" -$ if f$trnlnm("decc$no_rooted_search_lists") .nes. "" -$ then -$ dnrsl = f$trnlnm("decc$no_rooted_search_lists") -$ endif -$ define/nolog decc$no_rooted_search_lists 1 -$ else -$ if its_vaxc then write sys$output "CC compiler check ... VAX C" -$ if its_gnuc -$ then -$ write sys$output "CC compiler check ... GNU C" -$ if f$trnlnm(topt) then write topt "gnu_cc:[000000]gcclib.olb/lib" -$ if f$trnlnm(optf) then write optf "gnu_cc:[000000]gcclib.olb/lib" -$ cc = "gcc" -$ endif -$ if f$trnlnm(topt) then write topt "sys$share:vaxcrtl.exe/share" -$ if f$trnlnm(optf) then write optf "sys$share:vaxcrtl.exe/share" -$ endif -$ endif -$ return -$!------------------------------------------------------------------------------ -$! -$! If MMS/MMK are available dump out the descrip.mms if required -$! -$CREA_MMS: -$ write sys$output "Creating descrip.mms..." -$ create descrip.mms -$ open/append out descrip.mms -$ copy sys$input: out -$ deck -# descrip.mms: MMS description file for building zlib on VMS -# written by Martin P.J. Zinser -# - -OBJS = adler32.obj, compress.obj, crc32.obj, gzclose.obj, gzlib.obj\ - gzread.obj, gzwrite.obj, uncompr.obj, infback.obj\ - deflate.obj, trees.obj, zutil.obj, inflate.obj, \ - inftrees.obj, inffast.obj - -$ eod -$ write out "CFLAGS=", ccopt -$ write out "LOPTS=", lopts -$ write out "all : example.exe minigzip.exe libz.olb" -$ copy sys$input: out -$ deck - @ write sys$output " Example applications available" - -libz.olb : libz.olb($(OBJS)) - @ write sys$output " libz available" - -example.exe : example.obj libz.olb - link $(LOPTS) example,libz.olb/lib - -minigzip.exe : minigzip.obj libz.olb - link $(LOPTS) minigzip,libz.olb/lib - -clean : - delete *.obj;*,libz.olb;*,*.opt;*,*.exe;* - - -# Other dependencies. -adler32.obj : adler32.c zutil.h zlib.h zconf.h -compress.obj : compress.c zlib.h zconf.h -crc32.obj : crc32.c zutil.h zlib.h zconf.h -deflate.obj : deflate.c deflate.h zutil.h zlib.h zconf.h -example.obj : [.test]example.c zlib.h zconf.h -gzclose.obj : gzclose.c zutil.h zlib.h zconf.h -gzlib.obj : gzlib.c zutil.h zlib.h zconf.h -gzread.obj : gzread.c zutil.h zlib.h zconf.h -gzwrite.obj : gzwrite.c zutil.h zlib.h zconf.h -inffast.obj : inffast.c zutil.h zlib.h zconf.h inftrees.h inffast.h -inflate.obj : inflate.c zutil.h zlib.h zconf.h -inftrees.obj : inftrees.c zutil.h zlib.h zconf.h inftrees.h -minigzip.obj : [.test]minigzip.c zlib.h zconf.h -trees.obj : trees.c deflate.h zutil.h zlib.h zconf.h -uncompr.obj : uncompr.c zlib.h zconf.h -zutil.obj : zutil.c zutil.h zlib.h zconf.h -infback.obj : infback.c zutil.h inftrees.h inflate.h inffast.h inffixed.h -$ eod -$ close out -$ return -$!------------------------------------------------------------------------------ -$! -$! Read list of core library sources from makefile.in and create options -$! needed to build shareable image -$! -$CREA_OLIST: -$ open/read min makefile.in -$ open/write mod modules.opt -$ src_check_list = "OBJZ =#OBJG =" -$MRLOOP: -$ read/end=mrdone min rec -$ i = 0 -$SRC_CHECK_LOOP: -$ src_check = f$element(i, "#", src_check_list) -$ i = i+1 -$ if src_check .eqs. "#" then goto mrloop -$ if (f$extract(0,6,rec) .nes. src_check) then goto src_check_loop -$ rec = rec - src_check -$ gosub extra_filnam -$ if (f$element(1,"\",rec) .eqs. "\") then goto mrloop -$MRSLOOP: -$ read/end=mrdone min rec -$ gosub extra_filnam -$ if (f$element(1,"\",rec) .nes. "\") then goto mrsloop -$MRDONE: -$ close min -$ close mod -$ return -$!------------------------------------------------------------------------------ -$! -$! Take record extracted in crea_olist and split it into single filenames -$! -$EXTRA_FILNAM: -$ myrec = f$edit(rec - "\", "trim,compress") -$ i = 0 -$FELOOP: -$ srcfil = f$element(i," ", myrec) -$ if (srcfil .nes. " ") -$ then -$ write mod f$parse(srcfil,,,"NAME"), ".obj" -$ i = i + 1 -$ goto feloop -$ endif -$ return -$!------------------------------------------------------------------------------ -$! -$! Find current Zlib version number -$! -$FIND_VERSION: -$ open/read h_in 'v_file' -$hloop: -$ read/end=hdone h_in rec -$ rec = f$edit(rec,"TRIM") -$ if (f$extract(0,1,rec) .nes. "#") then goto hloop -$ rec = f$edit(rec - "#", "TRIM") -$ if f$element(0," ",rec) .nes. "define" then goto hloop -$ if f$element(1," ",rec) .eqs. v_string -$ then -$ version = 'f$element(2," ",rec)' -$ goto hdone -$ endif -$ goto hloop -$hdone: -$ close h_in -$ return -$!------------------------------------------------------------------------------ -$! -$CHECK_CONFIG: -$! -$ in_ldef = f$locate(cdef,libdefs) -$ if (in_ldef .lt. f$length(libdefs)) -$ then -$ write aconf "#define ''cdef' 1" -$ libdefs = f$extract(0,in_ldef,libdefs) + - - f$extract(in_ldef + f$length(cdef) + 1, - - f$length(libdefs) - in_ldef - f$length(cdef) - 1, - - libdefs) -$ else -$ if (f$type('cdef') .eqs. "INTEGER") -$ then -$ write aconf "#define ''cdef' ", 'cdef' -$ else -$ if (f$type('cdef') .eqs. "STRING") -$ then -$ write aconf "#define ''cdef' ", """", '''cdef'', """" -$ else -$ gosub check_cc_def -$ endif -$ endif -$ endif -$ return -$!------------------------------------------------------------------------------ -$! -$! Check if this is a define relating to the properties of the C/C++ -$! compiler -$! -$ CHECK_CC_DEF: -$ if (cdef .eqs. "_LARGEFILE64_SOURCE") -$ then -$ copy sys$input: 'tc' -$ deck -#include "tconfig" -#define _LARGEFILE -#include - -int main(){ -FILE *fp; - fp = fopen("temp.txt","r"); - fseeko(fp,1,SEEK_SET); - fclose(fp); -} - -$ eod -$ test_inv = false -$ comm_h = false -$ gosub cc_prop_check -$ return -$ endif -$ write aconf "/* ", line, " */" -$ return -$!------------------------------------------------------------------------------ -$! -$! Check for properties of C/C++ compiler -$! -$! Version history -$! 0.01 20031020 First version to receive a number -$! 0.02 20031022 Added logic for defines with value -$! 0.03 20040309 Make sure local config file gets not deleted -$! 0.04 20041230 Also write include for configure run -$! 0.05 20050103 Add processing of "comment defines" -$CC_PROP_CHECK: -$ cc_prop = true -$ is_need = false -$ is_need = (f$extract(0,4,cdef) .eqs. "NEED") .or. (test_inv .eq. true) -$ if f$search(th) .eqs. "" then create 'th' -$ set message/nofac/noident/nosever/notext -$ on error then continue -$ cc 'tmpnam' -$ if .not. ($status) then cc_prop = false -$ on error then continue -$! The headers might lie about the capabilities of the RTL -$ link 'tmpnam',tmp.opt/opt -$ if .not. ($status) then cc_prop = false -$ set message/fac/ident/sever/text -$ on error then goto err_exit -$ delete/nolog 'tmpnam'.*;*/exclude='th' -$ if (cc_prop .and. .not. is_need) .or. - - (.not. cc_prop .and. is_need) -$ then -$ write sys$output "Checking for ''cdef'... yes" -$ if f$type('cdef_val'_yes) .nes. "" -$ then -$ if f$type('cdef_val'_yes) .eqs. "INTEGER" - - then call write_config f$fao("#define !AS !UL",cdef,'cdef_val'_yes) -$ if f$type('cdef_val'_yes) .eqs. "STRING" - - then call write_config f$fao("#define !AS !AS",cdef,'cdef_val'_yes) -$ else -$ call write_config f$fao("#define !AS 1",cdef) -$ endif -$ if (cdef .eqs. "HAVE_FSEEKO") .or. (cdef .eqs. "_LARGE_FILES") .or. - - (cdef .eqs. "_LARGEFILE64_SOURCE") then - - call write_config f$string("#define _LARGEFILE 1") -$ else -$ write sys$output "Checking for ''cdef'... no" -$ if (comm_h) -$ then - call write_config f$fao("/* !AS */",line) -$ else -$ if f$type('cdef_val'_no) .nes. "" -$ then -$ if f$type('cdef_val'_no) .eqs. "INTEGER" - - then call write_config f$fao("#define !AS !UL",cdef,'cdef_val'_no) -$ if f$type('cdef_val'_no) .eqs. "STRING" - - then call write_config f$fao("#define !AS !AS",cdef,'cdef_val'_no) -$ else -$ call write_config f$fao("#undef !AS",cdef) -$ endif -$ endif -$ endif -$ return -$!------------------------------------------------------------------------------ -$! -$! Check for properties of C/C++ compiler with multiple result values -$! -$! Version history -$! 0.01 20040127 First version -$! 0.02 20050103 Reconcile changes from cc_prop up to version 0.05 -$CC_MPROP_CHECK: -$ cc_prop = true -$ i = 1 -$ idel = 1 -$ MT_LOOP: -$ if f$type(result_'i') .eqs. "STRING" -$ then -$ set message/nofac/noident/nosever/notext -$ on error then continue -$ cc 'tmpnam'_'i' -$ if .not. ($status) then cc_prop = false -$ on error then continue -$! The headers might lie about the capabilities of the RTL -$ link 'tmpnam'_'i',tmp.opt/opt -$ if .not. ($status) then cc_prop = false -$ set message/fac/ident/sever/text -$ on error then goto err_exit -$ delete/nolog 'tmpnam'_'i'.*;* -$ if (cc_prop) -$ then -$ write sys$output "Checking for ''cdef'... ", mdef_'i' -$ if f$type(mdef_'i') .eqs. "INTEGER" - - then call write_config f$fao("#define !AS !UL",cdef,mdef_'i') -$ if f$type('cdef_val'_yes) .eqs. "STRING" - - then call write_config f$fao("#define !AS !AS",cdef,mdef_'i') -$ goto msym_clean -$ else -$ i = i + 1 -$ goto mt_loop -$ endif -$ endif -$ write sys$output "Checking for ''cdef'... no" -$ call write_config f$fao("#undef !AS",cdef) -$ MSYM_CLEAN: -$ if (idel .le. msym_max) -$ then -$ delete/sym mdef_'idel' -$ idel = idel + 1 -$ goto msym_clean -$ endif -$ return -$!------------------------------------------------------------------------------ -$! -$! Write configuration to both permanent and temporary config file -$! -$! Version history -$! 0.01 20031029 First version to receive a number -$! -$WRITE_CONFIG: SUBROUTINE -$ write aconf 'p1' -$ open/append confh 'th' -$ write confh 'p1' -$ close confh -$ENDSUBROUTINE -$!------------------------------------------------------------------------------ -$! -$! Analyze the project map file and create the symbol vector for a shareable -$! image from it -$! -$! Version history -$! 0.01 20120128 First version -$! 0.02 20120226 Add pre-load logic -$! -$ MAP_2_SHOPT: Subroutine -$! -$ SAY := "WRITE_ SYS$OUTPUT" -$! -$ IF F$SEARCH("''P1'") .EQS. "" -$ THEN -$ SAY "MAP_2_SHOPT-E-NOSUCHFILE: Error, inputfile ''p1' not available" -$ goto exit_m2s -$ ENDIF -$ IF "''P2'" .EQS. "" -$ THEN -$ SAY "MAP_2_SHOPT: Error, no output file provided" -$ goto exit_m2s -$ ENDIF -$! -$ module1 = "deflate#deflateEnd#deflateInit_#deflateParams#deflateSetDictionary" -$ module2 = "gzclose#gzerror#gzgetc#gzgets#gzopen#gzprintf#gzputc#gzputs#gzread" -$ module3 = "gzseek#gztell#inflate#inflateEnd#inflateInit_#inflateSetDictionary" -$ module4 = "inflateSync#uncompress#zlibVersion#compress" -$ open/read map 'p1 -$ if axp .or. ia64 -$ then -$ open/write aopt a.opt -$ open/write bopt b.opt -$ write aopt " CASE_SENSITIVE=YES" -$ write bopt "SYMBOL_VECTOR= (-" -$ mod_sym_num = 1 -$ MOD_SYM_LOOP: -$ if f$type(module'mod_sym_num') .nes. "" -$ then -$ mod_in = 0 -$ MOD_SYM_IN: -$ shared_proc = f$element(mod_in, "#", module'mod_sym_num') -$ if shared_proc .nes. "#" -$ then -$ write aopt f$fao(" symbol_vector=(!AS/!AS=PROCEDURE)",- - f$edit(shared_proc,"upcase"),shared_proc) -$ write bopt f$fao("!AS=PROCEDURE,-",shared_proc) -$ mod_in = mod_in + 1 -$ goto mod_sym_in -$ endif -$ mod_sym_num = mod_sym_num + 1 -$ goto mod_sym_loop -$ endif -$MAP_LOOP: -$ read/end=map_end map line -$ if (f$locate("{",line).lt. f$length(line)) .or. - - (f$locate("global:", line) .lt. f$length(line)) -$ then -$ proc = true -$ goto map_loop -$ endif -$ if f$locate("}",line).lt. f$length(line) then proc = false -$ if f$locate("local:", line) .lt. f$length(line) then proc = false -$ if proc -$ then -$ shared_proc = f$edit(line,"collapse") -$ chop_semi = f$locate(";", shared_proc) -$ if chop_semi .lt. f$length(shared_proc) then - - shared_proc = f$extract(0, chop_semi, shared_proc) -$ write aopt f$fao(" symbol_vector=(!AS/!AS=PROCEDURE)",- - f$edit(shared_proc,"upcase"),shared_proc) -$ write bopt f$fao("!AS=PROCEDURE,-",shared_proc) -$ endif -$ goto map_loop -$MAP_END: -$ close/nolog aopt -$ close/nolog bopt -$ open/append libopt 'p2' -$ open/read aopt a.opt -$ open/read bopt b.opt -$ALOOP: -$ read/end=aloop_end aopt line -$ write libopt line -$ goto aloop -$ALOOP_END: -$ close/nolog aopt -$ sv = "" -$BLOOP: -$ read/end=bloop_end bopt svn -$ if (svn.nes."") -$ then -$ if (sv.nes."") then write libopt sv -$ sv = svn -$ endif -$ goto bloop -$BLOOP_END: -$ write libopt f$extract(0,f$length(sv)-2,sv), "-" -$ write libopt ")" -$ close/nolog bopt -$ delete/nolog/noconf a.opt;*,b.opt;* -$ else -$ if vax -$ then -$ open/append libopt 'p2' -$ mod_sym_num = 1 -$ VMOD_SYM_LOOP: -$ if f$type(module'mod_sym_num') .nes. "" -$ then -$ mod_in = 0 -$ VMOD_SYM_IN: -$ shared_proc = f$element(mod_in, "#", module'mod_sym_num') -$ if shared_proc .nes. "#" -$ then -$ write libopt f$fao("UNIVERSAL=!AS",- - f$edit(shared_proc,"upcase")) -$ mod_in = mod_in + 1 -$ goto vmod_sym_in -$ endif -$ mod_sym_num = mod_sym_num + 1 -$ goto vmod_sym_loop -$ endif -$VMAP_LOOP: -$ read/end=vmap_end map line -$ if (f$locate("{",line).lt. f$length(line)) .or. - - (f$locate("global:", line) .lt. f$length(line)) -$ then -$ proc = true -$ goto vmap_loop -$ endif -$ if f$locate("}",line).lt. f$length(line) then proc = false -$ if f$locate("local:", line) .lt. f$length(line) then proc = false -$ if proc -$ then -$ shared_proc = f$edit(line,"collapse") -$ chop_semi = f$locate(";", shared_proc) -$ if chop_semi .lt. f$length(shared_proc) then - - shared_proc = f$extract(0, chop_semi, shared_proc) -$ write libopt f$fao("UNIVERSAL=!AS",- - f$edit(shared_proc,"upcase")) -$ endif -$ goto vmap_loop -$VMAP_END: -$ else -$ write sys$output "Unknown Architecture (Not VAX, AXP, or IA64)" -$ write sys$output "No options file created" -$ endif -$ endif -$ EXIT_M2S: -$ close/nolog map -$ close/nolog libopt -$ endsubroutine diff --git a/platform/win32/msvc/external/zlib/msdos/Makefile.bor b/platform/win32/msvc/external/zlib/msdos/Makefile.bor deleted file mode 100644 index 3d12a2c2527..00000000000 --- a/platform/win32/msvc/external/zlib/msdos/Makefile.bor +++ /dev/null @@ -1,115 +0,0 @@ -# Makefile for zlib -# Borland C++ -# Last updated: 15-Mar-2003 - -# To use, do "make -fmakefile.bor" -# To compile in small model, set below: MODEL=s - -# WARNING: the small model is supported but only for small values of -# MAX_WBITS and MAX_MEM_LEVEL. For example: -# -DMAX_WBITS=11 -DDEF_WBITS=11 -DMAX_MEM_LEVEL=3 -# If you wish to reduce the memory requirements (default 256K for big -# objects plus a few K), you can add to the LOC macro below: -# -DMAX_MEM_LEVEL=7 -DMAX_WBITS=14 -# See zconf.h for details about the memory requirements. - -# ------------ Turbo C++, Borland C++ ------------ - -# Optional nonstandard preprocessor flags (e.g. -DMAX_MEM_LEVEL=7) -# should be added to the environment via "set LOCAL_ZLIB=-DFOO" or added -# to the declaration of LOC here: -LOC = $(LOCAL_ZLIB) - -# type for CPU required: 0: 8086, 1: 80186, 2: 80286, 3: 80386, etc. -CPU_TYP = 0 - -# memory model: one of s, m, c, l (small, medium, compact, large) -MODEL=l - -# replace bcc with tcc for Turbo C++ 1.0, with bcc32 for the 32 bit version -CC=bcc -LD=bcc -AR=tlib - -# compiler flags -# replace "-O2" by "-O -G -a -d" for Turbo C++ 1.0 -CFLAGS=-O2 -Z -m$(MODEL) $(LOC) - -LDFLAGS=-m$(MODEL) -f- - - -# variables -ZLIB_LIB = zlib_$(MODEL).lib - -OBJ1 = adler32.obj compress.obj crc32.obj deflate.obj gzclose.obj gzlib.obj gzread.obj -OBJ2 = gzwrite.obj infback.obj inffast.obj inflate.obj inftrees.obj trees.obj uncompr.obj zutil.obj -OBJP1 = +adler32.obj+compress.obj+crc32.obj+deflate.obj+gzclose.obj+gzlib.obj+gzread.obj -OBJP2 = +gzwrite.obj+infback.obj+inffast.obj+inflate.obj+inftrees.obj+trees.obj+uncompr.obj+zutil.obj - - -# targets -all: $(ZLIB_LIB) example.exe minigzip.exe - -.c.obj: - $(CC) -c $(CFLAGS) $*.c - -adler32.obj: adler32.c zlib.h zconf.h - -compress.obj: compress.c zlib.h zconf.h - -crc32.obj: crc32.c zlib.h zconf.h crc32.h - -deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h - -gzclose.obj: gzclose.c zlib.h zconf.h gzguts.h - -gzlib.obj: gzlib.c zlib.h zconf.h gzguts.h - -gzread.obj: gzread.c zlib.h zconf.h gzguts.h - -gzwrite.obj: gzwrite.c zlib.h zconf.h gzguts.h - -infback.obj: infback.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h inffixed.h - -inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h - -inflate.obj: inflate.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h inffixed.h - -inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h - -trees.obj: trees.c zutil.h zlib.h zconf.h deflate.h trees.h - -uncompr.obj: uncompr.c zlib.h zconf.h - -zutil.obj: zutil.c zutil.h zlib.h zconf.h - -example.obj: test/example.c zlib.h zconf.h - -minigzip.obj: test/minigzip.c zlib.h zconf.h - - -# the command line is cut to fit in the MS-DOS 128 byte limit: -$(ZLIB_LIB): $(OBJ1) $(OBJ2) - -del $(ZLIB_LIB) - $(AR) $(ZLIB_LIB) $(OBJP1) - $(AR) $(ZLIB_LIB) $(OBJP2) - -example.exe: example.obj $(ZLIB_LIB) - $(LD) $(LDFLAGS) example.obj $(ZLIB_LIB) - -minigzip.exe: minigzip.obj $(ZLIB_LIB) - $(LD) $(LDFLAGS) minigzip.obj $(ZLIB_LIB) - -test: example.exe minigzip.exe - example - echo hello world | minigzip | minigzip -d - -clean: - -del *.obj - -del *.lib - -del *.exe - -del zlib_*.bak - -del foo.gz diff --git a/platform/win32/msvc/external/zlib/msdos/Makefile.dj2 b/platform/win32/msvc/external/zlib/msdos/Makefile.dj2 deleted file mode 100644 index 29b03954d7b..00000000000 --- a/platform/win32/msvc/external/zlib/msdos/Makefile.dj2 +++ /dev/null @@ -1,104 +0,0 @@ -# Makefile for zlib. Modified for djgpp v2.0 by F. J. Donahoe, 3/15/96. -# Copyright (C) 1995-1998 Jean-loup Gailly. -# For conditions of distribution and use, see copyright notice in zlib.h - -# To compile, or to compile and test, type: -# -# make -fmakefile.dj2; make test -fmakefile.dj2 -# -# To install libz.a, zconf.h and zlib.h in the djgpp directories, type: -# -# make install -fmakefile.dj2 -# -# after first defining LIBRARY_PATH and INCLUDE_PATH in djgpp.env as -# in the sample below if the pattern of the DJGPP distribution is to -# be followed. Remember that, while 'es around <=> are ignored in -# makefiles, they are *not* in batch files or in djgpp.env. -# - - - - - -# [make] -# INCLUDE_PATH=%\>;INCLUDE_PATH%%\DJDIR%\include -# LIBRARY_PATH=%\>;LIBRARY_PATH%%\DJDIR%\lib -# BUTT=-m486 -# - - - - - -# Alternately, these variables may be defined below, overriding the values -# in djgpp.env, as -# INCLUDE_PATH=c:\usr\include -# LIBRARY_PATH=c:\usr\lib - -CC=gcc - -#CFLAGS=-MMD -O -#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7 -#CFLAGS=-MMD -g -DDEBUG -CFLAGS=-MMD -O3 $(BUTT) -Wall -Wwrite-strings -Wpointer-arith -Wconversion \ - -Wstrict-prototypes -Wmissing-prototypes - -# If cp.exe is available, replace "copy /Y" with "cp -fp" . -CP=copy /Y -# If gnu install.exe is available, replace $(CP) with ginstall. -INSTALL=$(CP) -# The default value of RM is "rm -f." If "rm.exe" is found, comment out: -RM=del -LDLIBS=-L. -lz -LD=$(CC) -s -o -LDSHARED=$(CC) - -INCL=zlib.h zconf.h -LIBS=libz.a - -AR=ar rcs - -prefix=/usr/local -exec_prefix = $(prefix) - -OBJS = adler32.o compress.o crc32.o gzclose.o gzlib.o gzread.o gzwrite.o \ - uncompr.o deflate.o trees.o zutil.o inflate.o infback.o inftrees.o inffast.o - -OBJA = -# to use the asm code: make OBJA=match.o - -TEST_OBJS = example.o minigzip.o - -all: example.exe minigzip.exe - -check: test -test: all - ./example - echo hello world | .\minigzip | .\minigzip -d - -%.o : %.c - $(CC) $(CFLAGS) -c $< -o $@ - -libz.a: $(OBJS) $(OBJA) - $(AR) $@ $(OBJS) $(OBJA) - -%.exe : %.o $(LIBS) - $(LD) $@ $< $(LDLIBS) - -# INCLUDE_PATH and LIBRARY_PATH were set for [make] in djgpp.env . - -.PHONY : uninstall clean - -install: $(INCL) $(LIBS) - -@if not exist $(INCLUDE_PATH)\nul mkdir $(INCLUDE_PATH) - -@if not exist $(LIBRARY_PATH)\nul mkdir $(LIBRARY_PATH) - $(INSTALL) zlib.h $(INCLUDE_PATH) - $(INSTALL) zconf.h $(INCLUDE_PATH) - $(INSTALL) libz.a $(LIBRARY_PATH) - -uninstall: - $(RM) $(INCLUDE_PATH)\zlib.h - $(RM) $(INCLUDE_PATH)\zconf.h - $(RM) $(LIBRARY_PATH)\libz.a - -clean: - $(RM) *.d - $(RM) *.o - $(RM) *.exe - $(RM) libz.a - $(RM) foo.gz - -DEPS := $(wildcard *.d) -ifneq ($(DEPS),) -include $(DEPS) -endif diff --git a/platform/win32/msvc/external/zlib/msdos/Makefile.emx b/platform/win32/msvc/external/zlib/msdos/Makefile.emx deleted file mode 100644 index 9c1b57a5857..00000000000 --- a/platform/win32/msvc/external/zlib/msdos/Makefile.emx +++ /dev/null @@ -1,69 +0,0 @@ -# Makefile for zlib. Modified for emx 0.9c by Chr. Spieler, 6/17/98. -# Copyright (C) 1995-1998 Jean-loup Gailly. -# For conditions of distribution and use, see copyright notice in zlib.h - -# To compile, or to compile and test, type: -# -# make -fmakefile.emx; make test -fmakefile.emx -# - -CC=gcc - -#CFLAGS=-MMD -O -#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7 -#CFLAGS=-MMD -g -DDEBUG -CFLAGS=-MMD -O3 $(BUTT) -Wall -Wwrite-strings -Wpointer-arith -Wconversion \ - -Wstrict-prototypes -Wmissing-prototypes - -# If cp.exe is available, replace "copy /Y" with "cp -fp" . -CP=copy /Y -# If gnu install.exe is available, replace $(CP) with ginstall. -INSTALL=$(CP) -# The default value of RM is "rm -f." If "rm.exe" is found, comment out: -RM=del -LDLIBS=-L. -lzlib -LD=$(CC) -s -o -LDSHARED=$(CC) - -INCL=zlib.h zconf.h -LIBS=zlib.a - -AR=ar rcs - -prefix=/usr/local -exec_prefix = $(prefix) - -OBJS = adler32.o compress.o crc32.o gzclose.o gzlib.o gzread.o gzwrite.o \ - uncompr.o deflate.o trees.o zutil.o inflate.o infback.o inftrees.o inffast.o - -TEST_OBJS = example.o minigzip.o - -all: example.exe minigzip.exe - -test: all - ./example - echo hello world | .\minigzip | .\minigzip -d - -%.o : %.c - $(CC) $(CFLAGS) -c $< -o $@ - -zlib.a: $(OBJS) - $(AR) $@ $(OBJS) - -%.exe : %.o $(LIBS) - $(LD) $@ $< $(LDLIBS) - - -.PHONY : clean - -clean: - $(RM) *.d - $(RM) *.o - $(RM) *.exe - $(RM) zlib.a - $(RM) foo.gz - -DEPS := $(wildcard *.d) -ifneq ($(DEPS),) -include $(DEPS) -endif diff --git a/platform/win32/msvc/external/zlib/msdos/Makefile.msc b/platform/win32/msvc/external/zlib/msdos/Makefile.msc deleted file mode 100644 index ae8378615ec..00000000000 --- a/platform/win32/msvc/external/zlib/msdos/Makefile.msc +++ /dev/null @@ -1,112 +0,0 @@ -# Makefile for zlib -# Microsoft C 5.1 or later -# Last updated: 19-Mar-2003 - -# To use, do "make makefile.msc" -# To compile in small model, set below: MODEL=S - -# If you wish to reduce the memory requirements (default 256K for big -# objects plus a few K), you can add to the LOC macro below: -# -DMAX_MEM_LEVEL=7 -DMAX_WBITS=14 -# See zconf.h for details about the memory requirements. - -# ------------- Microsoft C 5.1 and later ------------- - -# Optional nonstandard preprocessor flags (e.g. -DMAX_MEM_LEVEL=7) -# should be added to the environment via "set LOCAL_ZLIB=-DFOO" or added -# to the declaration of LOC here: -LOC = $(LOCAL_ZLIB) - -# Type for CPU required: 0: 8086, 1: 80186, 2: 80286, 3: 80386, etc. -CPU_TYP = 0 - -# Memory model: one of S, M, C, L (small, medium, compact, large) -MODEL=L - -CC=cl -CFLAGS=-nologo -A$(MODEL) -G$(CPU_TYP) -W3 -Oait -Gs $(LOC) -#-Ox generates bad code with MSC 5.1 -LIB_CFLAGS=-Zl $(CFLAGS) - -LD=link -LDFLAGS=/noi/e/st:0x1500/noe/farcall/packcode -# "/farcall/packcode" are only useful for `large code' memory models -# but should be a "no-op" for small code models. - - -# variables -ZLIB_LIB = zlib_$(MODEL).lib - -OBJ1 = adler32.obj compress.obj crc32.obj deflate.obj gzclose.obj gzlib.obj gzread.obj -OBJ2 = gzwrite.obj infback.obj inffast.obj inflate.obj inftrees.obj trees.obj uncompr.obj zutil.obj - - -# targets -all: $(ZLIB_LIB) example.exe minigzip.exe - -.c.obj: - $(CC) -c $(LIB_CFLAGS) $*.c - -adler32.obj: adler32.c zlib.h zconf.h - -compress.obj: compress.c zlib.h zconf.h - -crc32.obj: crc32.c zlib.h zconf.h crc32.h - -deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h - -gzclose.obj: gzclose.c zlib.h zconf.h gzguts.h - -gzlib.obj: gzlib.c zlib.h zconf.h gzguts.h - -gzread.obj: gzread.c zlib.h zconf.h gzguts.h - -gzwrite.obj: gzwrite.c zlib.h zconf.h gzguts.h - -infback.obj: infback.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h inffixed.h - -inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h - -inflate.obj: inflate.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h inffixed.h - -inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h - -trees.obj: trees.c zutil.h zlib.h zconf.h deflate.h trees.h - -uncompr.obj: uncompr.c zlib.h zconf.h - -zutil.obj: zutil.c zutil.h zlib.h zconf.h - -example.obj: test/example.c zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -minigzip.obj: test/minigzip.c zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - - -# the command line is cut to fit in the MS-DOS 128 byte limit: -$(ZLIB_LIB): $(OBJ1) $(OBJ2) - if exist $(ZLIB_LIB) del $(ZLIB_LIB) - lib $(ZLIB_LIB) $(OBJ1); - lib $(ZLIB_LIB) $(OBJ2); - -example.exe: example.obj $(ZLIB_LIB) - $(LD) $(LDFLAGS) example.obj,,,$(ZLIB_LIB); - -minigzip.exe: minigzip.obj $(ZLIB_LIB) - $(LD) $(LDFLAGS) minigzip.obj,,,$(ZLIB_LIB); - -test: example.exe minigzip.exe - example - echo hello world | minigzip | minigzip -d - -clean: - -del *.obj - -del *.lib - -del *.exe - -del *.map - -del zlib_*.bak - -del foo.gz diff --git a/platform/win32/msvc/external/zlib/msdos/Makefile.tc b/platform/win32/msvc/external/zlib/msdos/Makefile.tc deleted file mode 100644 index 5aec82a9d58..00000000000 --- a/platform/win32/msvc/external/zlib/msdos/Makefile.tc +++ /dev/null @@ -1,100 +0,0 @@ -# Makefile for zlib -# Turbo C 2.01, Turbo C++ 1.01 -# Last updated: 15-Mar-2003 - -# To use, do "make -fmakefile.tc" -# To compile in small model, set below: MODEL=s - -# WARNING: the small model is supported but only for small values of -# MAX_WBITS and MAX_MEM_LEVEL. For example: -# -DMAX_WBITS=11 -DMAX_MEM_LEVEL=3 -# If you wish to reduce the memory requirements (default 256K for big -# objects plus a few K), you can add to CFLAGS below: -# -DMAX_MEM_LEVEL=7 -DMAX_WBITS=14 -# See zconf.h for details about the memory requirements. - -# ------------ Turbo C 2.01, Turbo C++ 1.01 ------------ -MODEL=l -CC=tcc -LD=tcc -AR=tlib -# CFLAGS=-O2 -G -Z -m$(MODEL) -DMAX_WBITS=11 -DMAX_MEM_LEVEL=3 -CFLAGS=-O2 -G -Z -m$(MODEL) -LDFLAGS=-m$(MODEL) -f- - - -# variables -ZLIB_LIB = zlib_$(MODEL).lib - -OBJ1 = adler32.obj compress.obj crc32.obj deflate.obj gzclose.obj gzlib.obj gzread.obj -OBJ2 = gzwrite.obj infback.obj inffast.obj inflate.obj inftrees.obj trees.obj uncompr.obj zutil.obj -OBJP1 = +adler32.obj+compress.obj+crc32.obj+deflate.obj+gzclose.obj+gzlib.obj+gzread.obj -OBJP2 = +gzwrite.obj+infback.obj+inffast.obj+inflate.obj+inftrees.obj+trees.obj+uncompr.obj+zutil.obj - - -# targets -all: $(ZLIB_LIB) example.exe minigzip.exe - -.c.obj: - $(CC) -c $(CFLAGS) $*.c - -adler32.obj: adler32.c zlib.h zconf.h - -compress.obj: compress.c zlib.h zconf.h - -crc32.obj: crc32.c zlib.h zconf.h crc32.h - -deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h - -gzclose.obj: gzclose.c zlib.h zconf.h gzguts.h - -gzlib.obj: gzlib.c zlib.h zconf.h gzguts.h - -gzread.obj: gzread.c zlib.h zconf.h gzguts.h - -gzwrite.obj: gzwrite.c zlib.h zconf.h gzguts.h - -infback.obj: infback.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h inffixed.h - -inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h - -inflate.obj: inflate.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h inffixed.h - -inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h - -trees.obj: trees.c zutil.h zlib.h zconf.h deflate.h trees.h - -uncompr.obj: uncompr.c zlib.h zconf.h - -zutil.obj: zutil.c zutil.h zlib.h zconf.h - -example.obj: test/example.c zlib.h zconf.h - -minigzip.obj: test/minigzip.c zlib.h zconf.h - - -# the command line is cut to fit in the MS-DOS 128 byte limit: -$(ZLIB_LIB): $(OBJ1) $(OBJ2) - -del $(ZLIB_LIB) - $(AR) $(ZLIB_LIB) $(OBJP1) - $(AR) $(ZLIB_LIB) $(OBJP2) - -example.exe: example.obj $(ZLIB_LIB) - $(LD) $(LDFLAGS) example.obj $(ZLIB_LIB) - -minigzip.exe: minigzip.obj $(ZLIB_LIB) - $(LD) $(LDFLAGS) minigzip.obj $(ZLIB_LIB) - -test: example.exe minigzip.exe - example - echo hello world | minigzip | minigzip -d - -clean: - -del *.obj - -del *.lib - -del *.exe - -del zlib_*.bak - -del foo.gz diff --git a/platform/win32/msvc/external/zlib/nintendods/README b/platform/win32/msvc/external/zlib/nintendods/README deleted file mode 100644 index ba7a37dbe8e..00000000000 --- a/platform/win32/msvc/external/zlib/nintendods/README +++ /dev/null @@ -1,5 +0,0 @@ -This Makefile requires devkitARM (http://www.devkitpro.org/category/devkitarm/) and works inside "contrib/nds". It is based on a devkitARM template. - -Eduardo Costa -January 3, 2009 - diff --git a/platform/win32/msvc/external/zlib/old/Makefile.emx b/platform/win32/msvc/external/zlib/old/Makefile.emx deleted file mode 100644 index 4d6ab0efa66..00000000000 --- a/platform/win32/msvc/external/zlib/old/Makefile.emx +++ /dev/null @@ -1,69 +0,0 @@ -# Makefile for zlib. Modified for emx/rsxnt by Chr. Spieler, 6/16/98. -# Copyright (C) 1995-1998 Jean-loup Gailly. -# For conditions of distribution and use, see copyright notice in zlib.h - -# To compile, or to compile and test, type: -# -# make -fmakefile.emx; make test -fmakefile.emx -# - -CC=gcc -Zwin32 - -#CFLAGS=-MMD -O -#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7 -#CFLAGS=-MMD -g -DDEBUG -CFLAGS=-MMD -O3 $(BUTT) -Wall -Wwrite-strings -Wpointer-arith -Wconversion \ - -Wstrict-prototypes -Wmissing-prototypes - -# If cp.exe is available, replace "copy /Y" with "cp -fp" . -CP=copy /Y -# If gnu install.exe is available, replace $(CP) with ginstall. -INSTALL=$(CP) -# The default value of RM is "rm -f." If "rm.exe" is found, comment out: -RM=del -LDLIBS=-L. -lzlib -LD=$(CC) -s -o -LDSHARED=$(CC) - -INCL=zlib.h zconf.h -LIBS=zlib.a - -AR=ar rcs - -prefix=/usr/local -exec_prefix = $(prefix) - -OBJS = adler32.o compress.o crc32.o deflate.o gzclose.o gzlib.o gzread.o \ - gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o - -TEST_OBJS = example.o minigzip.o - -all: example.exe minigzip.exe - -test: all - ./example - echo hello world | .\minigzip | .\minigzip -d - -%.o : %.c - $(CC) $(CFLAGS) -c $< -o $@ - -zlib.a: $(OBJS) - $(AR) $@ $(OBJS) - -%.exe : %.o $(LIBS) - $(LD) $@ $< $(LDLIBS) - - -.PHONY : clean - -clean: - $(RM) *.d - $(RM) *.o - $(RM) *.exe - $(RM) zlib.a - $(RM) foo.gz - -DEPS := $(wildcard *.d) -ifneq ($(DEPS),) -include $(DEPS) -endif diff --git a/platform/win32/msvc/external/zlib/old/Makefile.riscos b/platform/win32/msvc/external/zlib/old/Makefile.riscos deleted file mode 100644 index 57e29d3fba9..00000000000 --- a/platform/win32/msvc/external/zlib/old/Makefile.riscos +++ /dev/null @@ -1,151 +0,0 @@ -# Project: zlib_1_03 -# Patched for zlib 1.1.2 rw@shadow.org.uk 19980430 -# test works out-of-the-box, installs `somewhere' on demand - -# Toolflags: -CCflags = -c -depend !Depend -IC: -g -throwback -DRISCOS -fah -C++flags = -c -depend !Depend -IC: -throwback -Linkflags = -aif -c++ -o $@ -ObjAsmflags = -throwback -NoCache -depend !Depend -CMHGflags = -LibFileflags = -c -l -o $@ -Squeezeflags = -o $@ - -# change the line below to where _you_ want the library installed. -libdest = lib:zlib - -# Final targets: -@.lib: @.o.adler32 @.o.compress @.o.crc32 @.o.deflate @.o.gzio \ - @.o.infblock @.o.infcodes @.o.inffast @.o.inflate @.o.inftrees @.o.infutil @.o.trees \ - @.o.uncompr @.o.zutil - LibFile $(LibFileflags) @.o.adler32 @.o.compress @.o.crc32 @.o.deflate \ - @.o.gzio @.o.infblock @.o.infcodes @.o.inffast @.o.inflate @.o.inftrees @.o.infutil \ - @.o.trees @.o.uncompr @.o.zutil -test: @.minigzip @.example @.lib - @copy @.lib @.libc A~C~DF~L~N~P~Q~RS~TV - @echo running tests: hang on. - @/@.minigzip -f -9 libc - @/@.minigzip -d libc-gz - @/@.minigzip -f -1 libc - @/@.minigzip -d libc-gz - @/@.minigzip -h -9 libc - @/@.minigzip -d libc-gz - @/@.minigzip -h -1 libc - @/@.minigzip -d libc-gz - @/@.minigzip -9 libc - @/@.minigzip -d libc-gz - @/@.minigzip -1 libc - @/@.minigzip -d libc-gz - @diff @.lib @.libc - @echo that should have reported '@.lib and @.libc identical' if you have diff. - @/@.example @.fred @.fred - @echo that will have given lots of hello!'s. - -@.minigzip: @.o.minigzip @.lib C:o.Stubs - Link $(Linkflags) @.o.minigzip @.lib C:o.Stubs -@.example: @.o.example @.lib C:o.Stubs - Link $(Linkflags) @.o.example @.lib C:o.Stubs - -install: @.lib - cdir $(libdest) - cdir $(libdest).h - @copy @.h.zlib $(libdest).h.zlib A~C~DF~L~N~P~Q~RS~TV - @copy @.h.zconf $(libdest).h.zconf A~C~DF~L~N~P~Q~RS~TV - @copy @.lib $(libdest).lib A~C~DF~L~N~P~Q~RS~TV - @echo okay, installed zlib in $(libdest) - -clean:; remove @.minigzip - remove @.example - remove @.libc - -wipe @.o.* F~r~cV - remove @.fred - -# User-editable dependencies: -.c.o: - cc $(ccflags) -o $@ $< - -# Static dependencies: - -# Dynamic dependencies: -o.example: c.example -o.example: h.zlib -o.example: h.zconf -o.minigzip: c.minigzip -o.minigzip: h.zlib -o.minigzip: h.zconf -o.adler32: c.adler32 -o.adler32: h.zlib -o.adler32: h.zconf -o.compress: c.compress -o.compress: h.zlib -o.compress: h.zconf -o.crc32: c.crc32 -o.crc32: h.zlib -o.crc32: h.zconf -o.deflate: c.deflate -o.deflate: h.deflate -o.deflate: h.zutil -o.deflate: h.zlib -o.deflate: h.zconf -o.gzio: c.gzio -o.gzio: h.zutil -o.gzio: h.zlib -o.gzio: h.zconf -o.infblock: c.infblock -o.infblock: h.zutil -o.infblock: h.zlib -o.infblock: h.zconf -o.infblock: h.infblock -o.infblock: h.inftrees -o.infblock: h.infcodes -o.infblock: h.infutil -o.infcodes: c.infcodes -o.infcodes: h.zutil -o.infcodes: h.zlib -o.infcodes: h.zconf -o.infcodes: h.inftrees -o.infcodes: h.infblock -o.infcodes: h.infcodes -o.infcodes: h.infutil -o.infcodes: h.inffast -o.inffast: c.inffast -o.inffast: h.zutil -o.inffast: h.zlib -o.inffast: h.zconf -o.inffast: h.inftrees -o.inffast: h.infblock -o.inffast: h.infcodes -o.inffast: h.infutil -o.inffast: h.inffast -o.inflate: c.inflate -o.inflate: h.zutil -o.inflate: h.zlib -o.inflate: h.zconf -o.inflate: h.infblock -o.inftrees: c.inftrees -o.inftrees: h.zutil -o.inftrees: h.zlib -o.inftrees: h.zconf -o.inftrees: h.inftrees -o.inftrees: h.inffixed -o.infutil: c.infutil -o.infutil: h.zutil -o.infutil: h.zlib -o.infutil: h.zconf -o.infutil: h.infblock -o.infutil: h.inftrees -o.infutil: h.infcodes -o.infutil: h.infutil -o.trees: c.trees -o.trees: h.deflate -o.trees: h.zutil -o.trees: h.zlib -o.trees: h.zconf -o.trees: h.trees -o.uncompr: c.uncompr -o.uncompr: h.zlib -o.uncompr: h.zconf -o.zutil: c.zutil -o.zutil: h.zutil -o.zutil: h.zlib -o.zutil: h.zconf diff --git a/platform/win32/msvc/external/zlib/old/README b/platform/win32/msvc/external/zlib/old/README deleted file mode 100644 index 800bf079827..00000000000 --- a/platform/win32/msvc/external/zlib/old/README +++ /dev/null @@ -1,3 +0,0 @@ -This directory contains files that have not been updated for zlib 1.2.x - -(Volunteers are encouraged to help clean this up. Thanks.) diff --git a/platform/win32/msvc/external/zlib/old/descrip.mms b/platform/win32/msvc/external/zlib/old/descrip.mms deleted file mode 100644 index 7066da5b557..00000000000 --- a/platform/win32/msvc/external/zlib/old/descrip.mms +++ /dev/null @@ -1,48 +0,0 @@ -# descrip.mms: MMS description file for building zlib on VMS -# written by Martin P.J. Zinser - -cc_defs = -c_deb = - -.ifdef __DECC__ -pref = /prefix=all -.endif - -OBJS = adler32.obj, compress.obj, crc32.obj, gzio.obj, uncompr.obj,\ - deflate.obj, trees.obj, zutil.obj, inflate.obj, infblock.obj,\ - inftrees.obj, infcodes.obj, infutil.obj, inffast.obj - -CFLAGS= $(C_DEB) $(CC_DEFS) $(PREF) - -all : example.exe minigzip.exe - @ write sys$output " Example applications available" -libz.olb : libz.olb($(OBJS)) - @ write sys$output " libz available" - -example.exe : example.obj libz.olb - link example,libz.olb/lib - -minigzip.exe : minigzip.obj libz.olb - link minigzip,libz.olb/lib,x11vms:xvmsutils.olb/lib - -clean : - delete *.obj;*,libz.olb;* - - -# Other dependencies. -adler32.obj : zutil.h zlib.h zconf.h -compress.obj : zlib.h zconf.h -crc32.obj : zutil.h zlib.h zconf.h -deflate.obj : deflate.h zutil.h zlib.h zconf.h -example.obj : zlib.h zconf.h -gzio.obj : zutil.h zlib.h zconf.h -infblock.obj : zutil.h zlib.h zconf.h infblock.h inftrees.h infcodes.h infutil.h -infcodes.obj : zutil.h zlib.h zconf.h inftrees.h infutil.h infcodes.h inffast.h -inffast.obj : zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h -inflate.obj : zutil.h zlib.h zconf.h infblock.h -inftrees.obj : zutil.h zlib.h zconf.h inftrees.h -infutil.obj : zutil.h zlib.h zconf.h inftrees.h infutil.h -minigzip.obj : zlib.h zconf.h -trees.obj : deflate.h zutil.h zlib.h zconf.h -uncompr.obj : zlib.h zconf.h -zutil.obj : zutil.h zlib.h zconf.h diff --git a/platform/win32/msvc/external/zlib/old/os2/Makefile.os2 b/platform/win32/msvc/external/zlib/old/os2/Makefile.os2 deleted file mode 100644 index a105aaa5bbd..00000000000 --- a/platform/win32/msvc/external/zlib/old/os2/Makefile.os2 +++ /dev/null @@ -1,136 +0,0 @@ -# Makefile for zlib under OS/2 using GCC (PGCC) -# For conditions of distribution and use, see copyright notice in zlib.h - -# To compile and test, type: -# cp Makefile.os2 .. -# cd .. -# make -f Makefile.os2 test - -# This makefile will build a static library z.lib, a shared library -# z.dll and a import library zdll.lib. You can use either z.lib or -# zdll.lib by specifying either -lz or -lzdll on gcc's command line - -CC=gcc -Zomf -s - -CFLAGS=-O6 -Wall -#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7 -#CFLAGS=-g -DDEBUG -#CFLAGS=-O3 -Wall -Wwrite-strings -Wpointer-arith -Wconversion \ -# -Wstrict-prototypes -Wmissing-prototypes - -#################### BUG WARNING: ##################### -## infcodes.c hits a bug in pgcc-1.0, so you have to use either -## -O# where # <= 4 or one of (-fno-ommit-frame-pointer or -fno-force-mem) -## This bug is reportedly fixed in pgcc >1.0, but this was not tested -CFLAGS+=-fno-force-mem - -LDFLAGS=-s -L. -lzdll -Zcrtdll -LDSHARED=$(CC) -s -Zomf -Zdll -Zcrtdll - -VER=1.1.0 -ZLIB=z.lib -SHAREDLIB=z.dll -SHAREDLIBIMP=zdll.lib -LIBS=$(ZLIB) $(SHAREDLIB) $(SHAREDLIBIMP) - -AR=emxomfar cr -IMPLIB=emximp -RANLIB=echo -TAR=tar -SHELL=bash - -prefix=/usr/local -exec_prefix = $(prefix) - -OBJS = adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o \ - zutil.o inflate.o infblock.o inftrees.o infcodes.o infutil.o inffast.o - -TEST_OBJS = example.o minigzip.o - -DISTFILES = README INDEX ChangeLog configure Make*[a-z0-9] *.[ch] descrip.mms \ - algorithm.txt zlib.3 msdos/Make*[a-z0-9] msdos/zlib.def msdos/zlib.rc \ - nt/Makefile.nt nt/zlib.dnt contrib/README.contrib contrib/*.txt \ - contrib/asm386/*.asm contrib/asm386/*.c \ - contrib/asm386/*.bat contrib/asm386/zlibvc.d?? contrib/iostream/*.cpp \ - contrib/iostream/*.h contrib/iostream2/*.h contrib/iostream2/*.cpp \ - contrib/untgz/Makefile contrib/untgz/*.c contrib/untgz/*.w32 - -all: example.exe minigzip.exe - -test: all - @LD_LIBRARY_PATH=.:$(LD_LIBRARY_PATH) ; export LD_LIBRARY_PATH; \ - echo hello world | ./minigzip | ./minigzip -d || \ - echo ' *** minigzip test FAILED ***' ; \ - if ./example; then \ - echo ' *** zlib test OK ***'; \ - else \ - echo ' *** zlib test FAILED ***'; \ - fi - -$(ZLIB): $(OBJS) - $(AR) $@ $(OBJS) - -@ ($(RANLIB) $@ || true) >/dev/null 2>&1 - -$(SHAREDLIB): $(OBJS) os2/z.def - $(LDSHARED) -o $@ $^ - -$(SHAREDLIBIMP): os2/z.def - $(IMPLIB) -o $@ $^ - -example.exe: example.o $(LIBS) - $(CC) $(CFLAGS) -o $@ example.o $(LDFLAGS) - -minigzip.exe: minigzip.o $(LIBS) - $(CC) $(CFLAGS) -o $@ minigzip.o $(LDFLAGS) - -clean: - rm -f *.o *~ example minigzip libz.a libz.so* foo.gz - -distclean: clean - -zip: - mv Makefile Makefile~; cp -p Makefile.in Makefile - rm -f test.c ztest*.c - v=`sed -n -e 's/\.//g' -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`;\ - zip -ul9 zlib$$v $(DISTFILES) - mv Makefile~ Makefile - -dist: - mv Makefile Makefile~; cp -p Makefile.in Makefile - rm -f test.c ztest*.c - d=zlib-`sed -n '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`;\ - rm -f $$d.tar.gz; \ - if test ! -d ../$$d; then rm -f ../$$d; ln -s `pwd` ../$$d; fi; \ - files=""; \ - for f in $(DISTFILES); do files="$$files $$d/$$f"; done; \ - cd ..; \ - GZIP=-9 $(TAR) chofz $$d/$$d.tar.gz $$files; \ - if test ! -d $$d; then rm -f $$d; fi - mv Makefile~ Makefile - -tags: - etags *.[ch] - -depend: - makedepend -- $(CFLAGS) -- *.[ch] - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -adler32.o: zlib.h zconf.h -compress.o: zlib.h zconf.h -crc32.o: zlib.h zconf.h -deflate.o: deflate.h zutil.h zlib.h zconf.h -example.o: zlib.h zconf.h -gzio.o: zutil.h zlib.h zconf.h -infblock.o: infblock.h inftrees.h infcodes.h infutil.h zutil.h zlib.h zconf.h -infcodes.o: zutil.h zlib.h zconf.h -infcodes.o: inftrees.h infblock.h infcodes.h infutil.h inffast.h -inffast.o: zutil.h zlib.h zconf.h inftrees.h -inffast.o: infblock.h infcodes.h infutil.h inffast.h -inflate.o: zutil.h zlib.h zconf.h infblock.h -inftrees.o: zutil.h zlib.h zconf.h inftrees.h -infutil.o: zutil.h zlib.h zconf.h infblock.h inftrees.h infcodes.h infutil.h -minigzip.o: zlib.h zconf.h -trees.o: deflate.h zutil.h zlib.h zconf.h trees.h -uncompr.o: zlib.h zconf.h -zutil.o: zutil.h zlib.h zconf.h diff --git a/platform/win32/msvc/external/zlib/old/visual-basic.txt b/platform/win32/msvc/external/zlib/old/visual-basic.txt deleted file mode 100644 index 57efe58124e..00000000000 --- a/platform/win32/msvc/external/zlib/old/visual-basic.txt +++ /dev/null @@ -1,160 +0,0 @@ -See below some functions declarations for Visual Basic. - -Frequently Asked Question: - -Q: Each time I use the compress function I get the -5 error (not enough - room in the output buffer). - -A: Make sure that the length of the compressed buffer is passed by - reference ("as any"), not by value ("as long"). Also check that - before the call of compress this length is equal to the total size of - the compressed buffer and not zero. - - -From: "Jon Caruana" -Subject: Re: How to port zlib declares to vb? -Date: Mon, 28 Oct 1996 18:33:03 -0600 - -Got the answer! (I haven't had time to check this but it's what I got, and -looks correct): - -He has the following routines working: - compress - uncompress - gzopen - gzwrite - gzread - gzclose - -Declares follow: (Quoted from Carlos Rios , in Vb4 form) - -#If Win16 Then 'Use Win16 calls. -Declare Function compress Lib "ZLIB.DLL" (ByVal compr As - String, comprLen As Any, ByVal buf As String, ByVal buflen - As Long) As Integer -Declare Function uncompress Lib "ZLIB.DLL" (ByVal uncompr - As String, uncomprLen As Any, ByVal compr As String, ByVal - lcompr As Long) As Integer -Declare Function gzopen Lib "ZLIB.DLL" (ByVal filePath As - String, ByVal mode As String) As Long -Declare Function gzread Lib "ZLIB.DLL" (ByVal file As - Long, ByVal uncompr As String, ByVal uncomprLen As Integer) - As Integer -Declare Function gzwrite Lib "ZLIB.DLL" (ByVal file As - Long, ByVal uncompr As String, ByVal uncomprLen As Integer) - As Integer -Declare Function gzclose Lib "ZLIB.DLL" (ByVal file As - Long) As Integer -#Else -Declare Function compress Lib "ZLIB32.DLL" - (ByVal compr As String, comprLen As Any, ByVal buf As - String, ByVal buflen As Long) As Integer -Declare Function uncompress Lib "ZLIB32.DLL" - (ByVal uncompr As String, uncomprLen As Any, ByVal compr As - String, ByVal lcompr As Long) As Long -Declare Function gzopen Lib "ZLIB32.DLL" - (ByVal file As String, ByVal mode As String) As Long -Declare Function gzread Lib "ZLIB32.DLL" - (ByVal file As Long, ByVal uncompr As String, ByVal - uncomprLen As Long) As Long -Declare Function gzwrite Lib "ZLIB32.DLL" - (ByVal file As Long, ByVal uncompr As String, ByVal - uncomprLen As Long) As Long -Declare Function gzclose Lib "ZLIB32.DLL" - (ByVal file As Long) As Long -#End If - --Jon Caruana -jon-net@usa.net -Microsoft Sitebuilder Network Level 1 Member - HTML Writer's Guild Member - - -Here is another example from Michael that he -says conforms to the VB guidelines, and that solves the problem of not -knowing the uncompressed size by storing it at the end of the file: - -'Calling the functions: -'bracket meaning: [optional] {Range of possible values} -'Call subCompressFile( [, , [level of compression {1..9}]]) -'Call subUncompressFile() - -Option Explicit -Private lngpvtPcnSml As Long 'Stores value for 'lngPercentSmaller' -Private Const SUCCESS As Long = 0 -Private Const strFilExt As String = ".cpr" -Private Declare Function lngfncCpr Lib "zlib.dll" Alias "compress2" (ByRef -dest As Any, ByRef destLen As Any, ByRef src As Any, ByVal srcLen As Long, -ByVal level As Integer) As Long -Private Declare Function lngfncUcp Lib "zlib.dll" Alias "uncompress" (ByRef -dest As Any, ByRef destLen As Any, ByRef src As Any, ByVal srcLen As Long) -As Long - -Public Sub subCompressFile(ByVal strargOriFilPth As String, Optional ByVal -strargCprFilPth As String, Optional ByVal intLvl As Integer = 9) - Dim strCprPth As String - Dim lngOriSiz As Long - Dim lngCprSiz As Long - Dim bytaryOri() As Byte - Dim bytaryCpr() As Byte - lngOriSiz = FileLen(strargOriFilPth) - ReDim bytaryOri(lngOriSiz - 1) - Open strargOriFilPth For Binary Access Read As #1 - Get #1, , bytaryOri() - Close #1 - strCprPth = IIf(strargCprFilPth = "", strargOriFilPth, strargCprFilPth) -'Select file path and name - strCprPth = strCprPth & IIf(Right(strCprPth, Len(strFilExt)) = -strFilExt, "", strFilExt) 'Add file extension if not exists - lngCprSiz = (lngOriSiz * 1.01) + 12 'Compression needs temporary a bit -more space then original file size - ReDim bytaryCpr(lngCprSiz - 1) - If lngfncCpr(bytaryCpr(0), lngCprSiz, bytaryOri(0), lngOriSiz, intLvl) = -SUCCESS Then - lngpvtPcnSml = (1# - (lngCprSiz / lngOriSiz)) * 100 - ReDim Preserve bytaryCpr(lngCprSiz - 1) - Open strCprPth For Binary Access Write As #1 - Put #1, , bytaryCpr() - Put #1, , lngOriSiz 'Add the the original size value to the end -(last 4 bytes) - Close #1 - Else - MsgBox "Compression error" - End If - Erase bytaryCpr - Erase bytaryOri -End Sub - -Public Sub subUncompressFile(ByVal strargFilPth As String) - Dim bytaryCpr() As Byte - Dim bytaryOri() As Byte - Dim lngOriSiz As Long - Dim lngCprSiz As Long - Dim strOriPth As String - lngCprSiz = FileLen(strargFilPth) - ReDim bytaryCpr(lngCprSiz - 1) - Open strargFilPth For Binary Access Read As #1 - Get #1, , bytaryCpr() - Close #1 - 'Read the original file size value: - lngOriSiz = bytaryCpr(lngCprSiz - 1) * (2 ^ 24) _ - + bytaryCpr(lngCprSiz - 2) * (2 ^ 16) _ - + bytaryCpr(lngCprSiz - 3) * (2 ^ 8) _ - + bytaryCpr(lngCprSiz - 4) - ReDim Preserve bytaryCpr(lngCprSiz - 5) 'Cut of the original size value - ReDim bytaryOri(lngOriSiz - 1) - If lngfncUcp(bytaryOri(0), lngOriSiz, bytaryCpr(0), lngCprSiz) = SUCCESS -Then - strOriPth = Left(strargFilPth, Len(strargFilPth) - Len(strFilExt)) - Open strOriPth For Binary Access Write As #1 - Put #1, , bytaryOri() - Close #1 - Else - MsgBox "Uncompression error" - End If - Erase bytaryCpr - Erase bytaryOri -End Sub -Public Property Get lngPercentSmaller() As Long - lngPercentSmaller = lngpvtPcnSml -End Property diff --git a/platform/win32/msvc/external/zlib/qnx/package.qpg b/platform/win32/msvc/external/zlib/qnx/package.qpg deleted file mode 100644 index aebf6e3ac12..00000000000 --- a/platform/win32/msvc/external/zlib/qnx/package.qpg +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Library - - Medium - - 2.0 - - - - zlib - zlib - alain.bonnefoy@icbt.com - Public - public - www.gzip.org/zlib - - - Jean-Loup Gailly,Mark Adler - www.gzip.org/zlib - - zlib@gzip.org - - - A massively spiffy yet delicately unobtrusive compression library. - zlib is designed to be a free, general-purpose, legally unencumbered, lossless data compression library for use on virtually any computer hardware and operating system. - http://www.gzip.org/zlib - - - - - 1.2.8 - Medium - Stable - - - - - - - No License - - - - Software Development/Libraries and Extensions/C Libraries - zlib,compression - qnx6 - qnx6 - None - Developer - - - - - - - - - - - - - - Install - Post - No - Ignore - - No - Optional - - - - - - - - - - - - - InstallOver - zlib - - - - - - - - - - - - - InstallOver - zlib-dev - - - - - - - - - diff --git a/platform/win32/msvc/external/zlib/test/example.c b/platform/win32/msvc/external/zlib/test/example.c deleted file mode 100644 index 138a699bd53..00000000000 --- a/platform/win32/msvc/external/zlib/test/example.c +++ /dev/null @@ -1,601 +0,0 @@ -/* example.c -- usage example of the zlib compression library - * Copyright (C) 1995-2006, 2011 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#include "zlib.h" -#include - -#ifdef STDC -# include -# include -#endif - -#if defined(VMS) || defined(RISCOS) -# define TESTFILE "foo-gz" -#else -# define TESTFILE "foo.gz" -#endif - -#define CHECK_ERR(err, msg) { \ - if (err != Z_OK) { \ - fprintf(stderr, "%s error: %d\n", msg, err); \ - exit(1); \ - } \ -} - -z_const char hello[] = "hello, hello!"; -/* "hello world" would be more standard, but the repeated "hello" - * stresses the compression code better, sorry... - */ - -const char dictionary[] = "hello"; -uLong dictId; /* Adler32 value of the dictionary */ - -void test_deflate OF((Byte *compr, uLong comprLen)); -void test_inflate OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_large_deflate OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_large_inflate OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_flush OF((Byte *compr, uLong *comprLen)); -void test_sync OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_dict_deflate OF((Byte *compr, uLong comprLen)); -void test_dict_inflate OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -int main OF((int argc, char *argv[])); - - -#ifdef Z_SOLO - -void *myalloc OF((void *, unsigned, unsigned)); -void myfree OF((void *, void *)); - -void *myalloc(q, n, m) - void *q; - unsigned n, m; -{ - q = Z_NULL; - return calloc(n, m); -} - -void myfree(void *q, void *p) -{ - q = Z_NULL; - free(p); -} - -static alloc_func zalloc = myalloc; -static free_func zfree = myfree; - -#else /* !Z_SOLO */ - -static alloc_func zalloc = (alloc_func)0; -static free_func zfree = (free_func)0; - -void test_compress OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_gzio OF((const char *fname, - Byte *uncompr, uLong uncomprLen)); - -/* =========================================================================== - * Test compress() and uncompress() - */ -void test_compress(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ - int err; - uLong len = (uLong)strlen(hello)+1; - - err = compress(compr, &comprLen, (const Bytef*)hello, len); - CHECK_ERR(err, "compress"); - - strcpy((char*)uncompr, "garbage"); - - err = uncompress(uncompr, &uncomprLen, compr, comprLen); - CHECK_ERR(err, "uncompress"); - - if (strcmp((char*)uncompr, hello)) { - fprintf(stderr, "bad uncompress\n"); - exit(1); - } else { - printf("uncompress(): %s\n", (char *)uncompr); - } -} - -/* =========================================================================== - * Test read/write of .gz files - */ -void test_gzio(fname, uncompr, uncomprLen) - const char *fname; /* compressed file name */ - Byte *uncompr; - uLong uncomprLen; -{ -#ifdef NO_GZCOMPRESS - fprintf(stderr, "NO_GZCOMPRESS -- gz* functions cannot compress\n"); -#else - int err; - int len = (int)strlen(hello)+1; - gzFile file; - z_off_t pos; - - file = gzopen(fname, "wb"); - if (file == NULL) { - fprintf(stderr, "gzopen error\n"); - exit(1); - } - gzputc(file, 'h'); - if (gzputs(file, "ello") != 4) { - fprintf(stderr, "gzputs err: %s\n", gzerror(file, &err)); - exit(1); - } - if (gzprintf(file, ", %s!", "hello") != 8) { - fprintf(stderr, "gzprintf err: %s\n", gzerror(file, &err)); - exit(1); - } - gzseek(file, 1L, SEEK_CUR); /* add one zero byte */ - gzclose(file); - - file = gzopen(fname, "rb"); - if (file == NULL) { - fprintf(stderr, "gzopen error\n"); - exit(1); - } - strcpy((char*)uncompr, "garbage"); - - if (gzread(file, uncompr, (unsigned)uncomprLen) != len) { - fprintf(stderr, "gzread err: %s\n", gzerror(file, &err)); - exit(1); - } - if (strcmp((char*)uncompr, hello)) { - fprintf(stderr, "bad gzread: %s\n", (char*)uncompr); - exit(1); - } else { - printf("gzread(): %s\n", (char*)uncompr); - } - - pos = gzseek(file, -8L, SEEK_CUR); - if (pos != 6 || gztell(file) != pos) { - fprintf(stderr, "gzseek error, pos=%ld, gztell=%ld\n", - (long)pos, (long)gztell(file)); - exit(1); - } - - if (gzgetc(file) != ' ') { - fprintf(stderr, "gzgetc error\n"); - exit(1); - } - - if (gzungetc(' ', file) != ' ') { - fprintf(stderr, "gzungetc error\n"); - exit(1); - } - - gzgets(file, (char*)uncompr, (int)uncomprLen); - if (strlen((char*)uncompr) != 7) { /* " hello!" */ - fprintf(stderr, "gzgets err after gzseek: %s\n", gzerror(file, &err)); - exit(1); - } - if (strcmp((char*)uncompr, hello + 6)) { - fprintf(stderr, "bad gzgets after gzseek\n"); - exit(1); - } else { - printf("gzgets() after gzseek: %s\n", (char*)uncompr); - } - - gzclose(file); -#endif -} - -#endif /* Z_SOLO */ - -/* =========================================================================== - * Test deflate() with small buffers - */ -void test_deflate(compr, comprLen) - Byte *compr; - uLong comprLen; -{ - z_stream c_stream; /* compression stream */ - int err; - uLong len = (uLong)strlen(hello)+1; - - c_stream.zalloc = zalloc; - c_stream.zfree = zfree; - c_stream.opaque = (voidpf)0; - - err = deflateInit(&c_stream, Z_DEFAULT_COMPRESSION); - CHECK_ERR(err, "deflateInit"); - - c_stream.next_in = (z_const unsigned char *)hello; - c_stream.next_out = compr; - - while (c_stream.total_in != len && c_stream.total_out < comprLen) { - c_stream.avail_in = c_stream.avail_out = 1; /* force small buffers */ - err = deflate(&c_stream, Z_NO_FLUSH); - CHECK_ERR(err, "deflate"); - } - /* Finish the stream, still forcing small buffers: */ - for (;;) { - c_stream.avail_out = 1; - err = deflate(&c_stream, Z_FINISH); - if (err == Z_STREAM_END) break; - CHECK_ERR(err, "deflate"); - } - - err = deflateEnd(&c_stream); - CHECK_ERR(err, "deflateEnd"); -} - -/* =========================================================================== - * Test inflate() with small buffers - */ -void test_inflate(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ - int err; - z_stream d_stream; /* decompression stream */ - - strcpy((char*)uncompr, "garbage"); - - d_stream.zalloc = zalloc; - d_stream.zfree = zfree; - d_stream.opaque = (voidpf)0; - - d_stream.next_in = compr; - d_stream.avail_in = 0; - d_stream.next_out = uncompr; - - err = inflateInit(&d_stream); - CHECK_ERR(err, "inflateInit"); - - while (d_stream.total_out < uncomprLen && d_stream.total_in < comprLen) { - d_stream.avail_in = d_stream.avail_out = 1; /* force small buffers */ - err = inflate(&d_stream, Z_NO_FLUSH); - if (err == Z_STREAM_END) break; - CHECK_ERR(err, "inflate"); - } - - err = inflateEnd(&d_stream); - CHECK_ERR(err, "inflateEnd"); - - if (strcmp((char*)uncompr, hello)) { - fprintf(stderr, "bad inflate\n"); - exit(1); - } else { - printf("inflate(): %s\n", (char *)uncompr); - } -} - -/* =========================================================================== - * Test deflate() with large buffers and dynamic change of compression level - */ -void test_large_deflate(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ - z_stream c_stream; /* compression stream */ - int err; - - c_stream.zalloc = zalloc; - c_stream.zfree = zfree; - c_stream.opaque = (voidpf)0; - - err = deflateInit(&c_stream, Z_BEST_SPEED); - CHECK_ERR(err, "deflateInit"); - - c_stream.next_out = compr; - c_stream.avail_out = (uInt)comprLen; - - /* At this point, uncompr is still mostly zeroes, so it should compress - * very well: - */ - c_stream.next_in = uncompr; - c_stream.avail_in = (uInt)uncomprLen; - err = deflate(&c_stream, Z_NO_FLUSH); - CHECK_ERR(err, "deflate"); - if (c_stream.avail_in != 0) { - fprintf(stderr, "deflate not greedy\n"); - exit(1); - } - - /* Feed in already compressed data and switch to no compression: */ - deflateParams(&c_stream, Z_NO_COMPRESSION, Z_DEFAULT_STRATEGY); - c_stream.next_in = compr; - c_stream.avail_in = (uInt)comprLen/2; - err = deflate(&c_stream, Z_NO_FLUSH); - CHECK_ERR(err, "deflate"); - - /* Switch back to compressing mode: */ - deflateParams(&c_stream, Z_BEST_COMPRESSION, Z_FILTERED); - c_stream.next_in = uncompr; - c_stream.avail_in = (uInt)uncomprLen; - err = deflate(&c_stream, Z_NO_FLUSH); - CHECK_ERR(err, "deflate"); - - err = deflate(&c_stream, Z_FINISH); - if (err != Z_STREAM_END) { - fprintf(stderr, "deflate should report Z_STREAM_END\n"); - exit(1); - } - err = deflateEnd(&c_stream); - CHECK_ERR(err, "deflateEnd"); -} - -/* =========================================================================== - * Test inflate() with large buffers - */ -void test_large_inflate(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ - int err; - z_stream d_stream; /* decompression stream */ - - strcpy((char*)uncompr, "garbage"); - - d_stream.zalloc = zalloc; - d_stream.zfree = zfree; - d_stream.opaque = (voidpf)0; - - d_stream.next_in = compr; - d_stream.avail_in = (uInt)comprLen; - - err = inflateInit(&d_stream); - CHECK_ERR(err, "inflateInit"); - - for (;;) { - d_stream.next_out = uncompr; /* discard the output */ - d_stream.avail_out = (uInt)uncomprLen; - err = inflate(&d_stream, Z_NO_FLUSH); - if (err == Z_STREAM_END) break; - CHECK_ERR(err, "large inflate"); - } - - err = inflateEnd(&d_stream); - CHECK_ERR(err, "inflateEnd"); - - if (d_stream.total_out != 2*uncomprLen + comprLen/2) { - fprintf(stderr, "bad large inflate: %ld\n", d_stream.total_out); - exit(1); - } else { - printf("large_inflate(): OK\n"); - } -} - -/* =========================================================================== - * Test deflate() with full flush - */ -void test_flush(compr, comprLen) - Byte *compr; - uLong *comprLen; -{ - z_stream c_stream; /* compression stream */ - int err; - uInt len = (uInt)strlen(hello)+1; - - c_stream.zalloc = zalloc; - c_stream.zfree = zfree; - c_stream.opaque = (voidpf)0; - - err = deflateInit(&c_stream, Z_DEFAULT_COMPRESSION); - CHECK_ERR(err, "deflateInit"); - - c_stream.next_in = (z_const unsigned char *)hello; - c_stream.next_out = compr; - c_stream.avail_in = 3; - c_stream.avail_out = (uInt)*comprLen; - err = deflate(&c_stream, Z_FULL_FLUSH); - CHECK_ERR(err, "deflate"); - - compr[3]++; /* force an error in first compressed block */ - c_stream.avail_in = len - 3; - - err = deflate(&c_stream, Z_FINISH); - if (err != Z_STREAM_END) { - CHECK_ERR(err, "deflate"); - } - err = deflateEnd(&c_stream); - CHECK_ERR(err, "deflateEnd"); - - *comprLen = c_stream.total_out; -} - -/* =========================================================================== - * Test inflateSync() - */ -void test_sync(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ - int err; - z_stream d_stream; /* decompression stream */ - - strcpy((char*)uncompr, "garbage"); - - d_stream.zalloc = zalloc; - d_stream.zfree = zfree; - d_stream.opaque = (voidpf)0; - - d_stream.next_in = compr; - d_stream.avail_in = 2; /* just read the zlib header */ - - err = inflateInit(&d_stream); - CHECK_ERR(err, "inflateInit"); - - d_stream.next_out = uncompr; - d_stream.avail_out = (uInt)uncomprLen; - - inflate(&d_stream, Z_NO_FLUSH); - CHECK_ERR(err, "inflate"); - - d_stream.avail_in = (uInt)comprLen-2; /* read all compressed data */ - err = inflateSync(&d_stream); /* but skip the damaged part */ - CHECK_ERR(err, "inflateSync"); - - err = inflate(&d_stream, Z_FINISH); - if (err != Z_DATA_ERROR) { - fprintf(stderr, "inflate should report DATA_ERROR\n"); - /* Because of incorrect adler32 */ - exit(1); - } - err = inflateEnd(&d_stream); - CHECK_ERR(err, "inflateEnd"); - - printf("after inflateSync(): hel%s\n", (char *)uncompr); -} - -/* =========================================================================== - * Test deflate() with preset dictionary - */ -void test_dict_deflate(compr, comprLen) - Byte *compr; - uLong comprLen; -{ - z_stream c_stream; /* compression stream */ - int err; - - c_stream.zalloc = zalloc; - c_stream.zfree = zfree; - c_stream.opaque = (voidpf)0; - - err = deflateInit(&c_stream, Z_BEST_COMPRESSION); - CHECK_ERR(err, "deflateInit"); - - err = deflateSetDictionary(&c_stream, - (const Bytef*)dictionary, (int)sizeof(dictionary)); - CHECK_ERR(err, "deflateSetDictionary"); - - dictId = c_stream.adler; - c_stream.next_out = compr; - c_stream.avail_out = (uInt)comprLen; - - c_stream.next_in = (z_const unsigned char *)hello; - c_stream.avail_in = (uInt)strlen(hello)+1; - - err = deflate(&c_stream, Z_FINISH); - if (err != Z_STREAM_END) { - fprintf(stderr, "deflate should report Z_STREAM_END\n"); - exit(1); - } - err = deflateEnd(&c_stream); - CHECK_ERR(err, "deflateEnd"); -} - -/* =========================================================================== - * Test inflate() with a preset dictionary - */ -void test_dict_inflate(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ - int err; - z_stream d_stream; /* decompression stream */ - - strcpy((char*)uncompr, "garbage"); - - d_stream.zalloc = zalloc; - d_stream.zfree = zfree; - d_stream.opaque = (voidpf)0; - - d_stream.next_in = compr; - d_stream.avail_in = (uInt)comprLen; - - err = inflateInit(&d_stream); - CHECK_ERR(err, "inflateInit"); - - d_stream.next_out = uncompr; - d_stream.avail_out = (uInt)uncomprLen; - - for (;;) { - err = inflate(&d_stream, Z_NO_FLUSH); - if (err == Z_STREAM_END) break; - if (err == Z_NEED_DICT) { - if (d_stream.adler != dictId) { - fprintf(stderr, "unexpected dictionary"); - exit(1); - } - err = inflateSetDictionary(&d_stream, (const Bytef*)dictionary, - (int)sizeof(dictionary)); - } - CHECK_ERR(err, "inflate with dict"); - } - - err = inflateEnd(&d_stream); - CHECK_ERR(err, "inflateEnd"); - - if (strcmp((char*)uncompr, hello)) { - fprintf(stderr, "bad inflate with dict\n"); - exit(1); - } else { - printf("inflate with dictionary: %s\n", (char *)uncompr); - } -} - -/* =========================================================================== - * Usage: example [output.gz [input.gz]] - */ - -int main(argc, argv) - int argc; - char *argv[]; -{ - Byte *compr, *uncompr; - uLong comprLen = 10000*sizeof(int); /* don't overflow on MSDOS */ - uLong uncomprLen = comprLen; - static const char* myVersion = ZLIB_VERSION; - - if (zlibVersion()[0] != myVersion[0]) { - fprintf(stderr, "incompatible zlib version\n"); - exit(1); - - } else if (strcmp(zlibVersion(), ZLIB_VERSION) != 0) { - fprintf(stderr, "warning: different zlib version\n"); - } - - printf("zlib version %s = 0x%04x, compile flags = 0x%lx\n", - ZLIB_VERSION, ZLIB_VERNUM, zlibCompileFlags()); - - compr = (Byte*)calloc((uInt)comprLen, 1); - uncompr = (Byte*)calloc((uInt)uncomprLen, 1); - /* compr and uncompr are cleared to avoid reading uninitialized - * data and to ensure that uncompr compresses well. - */ - if (compr == Z_NULL || uncompr == Z_NULL) { - printf("out of memory\n"); - exit(1); - } - -#ifdef Z_SOLO - argc = strlen(argv[0]); -#else - test_compress(compr, comprLen, uncompr, uncomprLen); - - test_gzio((argc > 1 ? argv[1] : TESTFILE), - uncompr, uncomprLen); -#endif - - test_deflate(compr, comprLen); - test_inflate(compr, comprLen, uncompr, uncomprLen); - - test_large_deflate(compr, comprLen, uncompr, uncomprLen); - test_large_inflate(compr, comprLen, uncompr, uncomprLen); - - test_flush(compr, &comprLen); - test_sync(compr, comprLen, uncompr, uncomprLen); - comprLen = uncomprLen; - - test_dict_deflate(compr, comprLen); - test_dict_inflate(compr, comprLen, uncompr, uncomprLen); - - free(compr); - free(uncompr); - - return 0; -} diff --git a/platform/win32/msvc/external/zlib/test/infcover.c b/platform/win32/msvc/external/zlib/test/infcover.c deleted file mode 100644 index fe3d9203a02..00000000000 --- a/platform/win32/msvc/external/zlib/test/infcover.c +++ /dev/null @@ -1,671 +0,0 @@ -/* infcover.c -- test zlib's inflate routines with full code coverage - * Copyright (C) 2011 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* to use, do: ./configure --cover && make cover */ - -#include -#include -#include -#include -#include "zlib.h" - -/* get definition of internal structure so we can mess with it (see pull()), - and so we can call inflate_trees() (see cover5()) */ -#define ZLIB_INTERNAL -#include "inftrees.h" -#include "inflate.h" - -#define local static - -/* -- memory tracking routines -- */ - -/* - These memory tracking routines are provided to zlib and track all of zlib's - allocations and deallocations, check for LIFO operations, keep a current - and high water mark of total bytes requested, optionally set a limit on the - total memory that can be allocated, and when done check for memory leaks. - - They are used as follows: - - z_stream strm; - mem_setup(&strm) initializes the memory tracking and sets the - zalloc, zfree, and opaque members of strm to use - memory tracking for all zlib operations on strm - mem_limit(&strm, limit) sets a limit on the total bytes requested -- a - request that exceeds this limit will result in an - allocation failure (returns NULL) -- setting the - limit to zero means no limit, which is the default - after mem_setup() - mem_used(&strm, "msg") prints to stderr "msg" and the total bytes used - mem_high(&strm, "msg") prints to stderr "msg" and the high water mark - mem_done(&strm, "msg") ends memory tracking, releases all allocations - for the tracking as well as leaked zlib blocks, if - any. If there was anything unusual, such as leaked - blocks, non-FIFO frees, or frees of addresses not - allocated, then "msg" and information about the - problem is printed to stderr. If everything is - normal, nothing is printed. mem_done resets the - strm members to Z_NULL to use the default memory - allocation routines on the next zlib initialization - using strm. - */ - -/* these items are strung together in a linked list, one for each allocation */ -struct mem_item { - void *ptr; /* pointer to allocated memory */ - size_t size; /* requested size of allocation */ - struct mem_item *next; /* pointer to next item in list, or NULL */ -}; - -/* this structure is at the root of the linked list, and tracks statistics */ -struct mem_zone { - struct mem_item *first; /* pointer to first item in list, or NULL */ - size_t total, highwater; /* total allocations, and largest total */ - size_t limit; /* memory allocation limit, or 0 if no limit */ - int notlifo, rogue; /* counts of non-LIFO frees and rogue frees */ -}; - -/* memory allocation routine to pass to zlib */ -local void *mem_alloc(void *mem, unsigned count, unsigned size) -{ - void *ptr; - struct mem_item *item; - struct mem_zone *zone = mem; - size_t len = count * (size_t)size; - - /* induced allocation failure */ - if (zone == NULL || (zone->limit && zone->total + len > zone->limit)) - return NULL; - - /* perform allocation using the standard library, fill memory with a - non-zero value to make sure that the code isn't depending on zeros */ - ptr = malloc(len); - if (ptr == NULL) - return NULL; - memset(ptr, 0xa5, len); - - /* create a new item for the list */ - item = malloc(sizeof(struct mem_item)); - if (item == NULL) { - free(ptr); - return NULL; - } - item->ptr = ptr; - item->size = len; - - /* insert item at the beginning of the list */ - item->next = zone->first; - zone->first = item; - - /* update the statistics */ - zone->total += item->size; - if (zone->total > zone->highwater) - zone->highwater = zone->total; - - /* return the allocated memory */ - return ptr; -} - -/* memory free routine to pass to zlib */ -local void mem_free(void *mem, void *ptr) -{ - struct mem_item *item, *next; - struct mem_zone *zone = mem; - - /* if no zone, just do a free */ - if (zone == NULL) { - free(ptr); - return; - } - - /* point next to the item that matches ptr, or NULL if not found -- remove - the item from the linked list if found */ - next = zone->first; - if (next) { - if (next->ptr == ptr) - zone->first = next->next; /* first one is it, remove from list */ - else { - do { /* search the linked list */ - item = next; - next = item->next; - } while (next != NULL && next->ptr != ptr); - if (next) { /* if found, remove from linked list */ - item->next = next->next; - zone->notlifo++; /* not a LIFO free */ - } - - } - } - - /* if found, update the statistics and free the item */ - if (next) { - zone->total -= next->size; - free(next); - } - - /* if not found, update the rogue count */ - else - zone->rogue++; - - /* in any case, do the requested free with the standard library function */ - free(ptr); -} - -/* set up a controlled memory allocation space for monitoring, set the stream - parameters to the controlled routines, with opaque pointing to the space */ -local void mem_setup(z_stream *strm) -{ - struct mem_zone *zone; - - zone = malloc(sizeof(struct mem_zone)); - assert(zone != NULL); - zone->first = NULL; - zone->total = 0; - zone->highwater = 0; - zone->limit = 0; - zone->notlifo = 0; - zone->rogue = 0; - strm->opaque = zone; - strm->zalloc = mem_alloc; - strm->zfree = mem_free; -} - -/* set a limit on the total memory allocation, or 0 to remove the limit */ -local void mem_limit(z_stream *strm, size_t limit) -{ - struct mem_zone *zone = strm->opaque; - - zone->limit = limit; -} - -/* show the current total requested allocations in bytes */ -local void mem_used(z_stream *strm, char *prefix) -{ - struct mem_zone *zone = strm->opaque; - - fprintf(stderr, "%s: %lu allocated\n", prefix, zone->total); -} - -/* show the high water allocation in bytes */ -local void mem_high(z_stream *strm, char *prefix) -{ - struct mem_zone *zone = strm->opaque; - - fprintf(stderr, "%s: %lu high water mark\n", prefix, zone->highwater); -} - -/* release the memory allocation zone -- if there are any surprises, notify */ -local void mem_done(z_stream *strm, char *prefix) -{ - int count = 0; - struct mem_item *item, *next; - struct mem_zone *zone = strm->opaque; - - /* show high water mark */ - mem_high(strm, prefix); - - /* free leftover allocations and item structures, if any */ - item = zone->first; - while (item != NULL) { - free(item->ptr); - next = item->next; - free(item); - item = next; - count++; - } - - /* issue alerts about anything unexpected */ - if (count || zone->total) - fprintf(stderr, "** %s: %lu bytes in %d blocks not freed\n", - prefix, zone->total, count); - if (zone->notlifo) - fprintf(stderr, "** %s: %d frees not LIFO\n", prefix, zone->notlifo); - if (zone->rogue) - fprintf(stderr, "** %s: %d frees not recognized\n", - prefix, zone->rogue); - - /* free the zone and delete from the stream */ - free(zone); - strm->opaque = Z_NULL; - strm->zalloc = Z_NULL; - strm->zfree = Z_NULL; -} - -/* -- inflate test routines -- */ - -/* Decode a hexadecimal string, set *len to length, in[] to the bytes. This - decodes liberally, in that hex digits can be adjacent, in which case two in - a row writes a byte. Or they can delimited by any non-hex character, where - the delimiters are ignored except when a single hex digit is followed by a - delimiter in which case that single digit writes a byte. The returned - data is allocated and must eventually be freed. NULL is returned if out of - memory. If the length is not needed, then len can be NULL. */ -local unsigned char *h2b(const char *hex, unsigned *len) -{ - unsigned char *in; - unsigned next, val; - - in = malloc((strlen(hex) + 1) >> 1); - if (in == NULL) - return NULL; - next = 0; - val = 1; - do { - if (*hex >= '0' && *hex <= '9') - val = (val << 4) + *hex - '0'; - else if (*hex >= 'A' && *hex <= 'F') - val = (val << 4) + *hex - 'A' + 10; - else if (*hex >= 'a' && *hex <= 'f') - val = (val << 4) + *hex - 'a' + 10; - else if (val != 1 && val < 32) /* one digit followed by delimiter */ - val += 240; /* make it look like two digits */ - if (val > 255) { /* have two digits */ - in[next++] = val & 0xff; /* save the decoded byte */ - val = 1; /* start over */ - } - } while (*hex++); /* go through the loop with the terminating null */ - if (len != NULL) - *len = next; - in = reallocf(in, next); - return in; -} - -/* generic inflate() run, where hex is the hexadecimal input data, what is the - text to include in an error message, step is how much input data to feed - inflate() on each call, or zero to feed it all, win is the window bits - parameter to inflateInit2(), len is the size of the output buffer, and err - is the error code expected from the first inflate() call (the second - inflate() call is expected to return Z_STREAM_END). If win is 47, then - header information is collected with inflateGetHeader(). If a zlib stream - is looking for a dictionary, then an empty dictionary is provided. - inflate() is run until all of the input data is consumed. */ -local void inf(char *hex, char *what, unsigned step, int win, unsigned len, - int err) -{ - int ret; - unsigned have; - unsigned char *in, *out; - z_stream strm, copy; - gz_header head; - - mem_setup(&strm); - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit2(&strm, win); - if (ret != Z_OK) { - mem_done(&strm, what); - return; - } - out = malloc(len); assert(out != NULL); - if (win == 47) { - head.extra = out; - head.extra_max = len; - head.name = out; - head.name_max = len; - head.comment = out; - head.comm_max = len; - ret = inflateGetHeader(&strm, &head); assert(ret == Z_OK); - } - in = h2b(hex, &have); assert(in != NULL); - if (step == 0 || step > have) - step = have; - strm.avail_in = step; - have -= step; - strm.next_in = in; - do { - strm.avail_out = len; - strm.next_out = out; - ret = inflate(&strm, Z_NO_FLUSH); assert(err == 9 || ret == err); - if (ret != Z_OK && ret != Z_BUF_ERROR && ret != Z_NEED_DICT) - break; - if (ret == Z_NEED_DICT) { - ret = inflateSetDictionary(&strm, in, 1); - assert(ret == Z_DATA_ERROR); - mem_limit(&strm, 1); - ret = inflateSetDictionary(&strm, out, 0); - assert(ret == Z_MEM_ERROR); - mem_limit(&strm, 0); - ((struct inflate_state *)strm.state)->mode = DICT; - ret = inflateSetDictionary(&strm, out, 0); - assert(ret == Z_OK); - ret = inflate(&strm, Z_NO_FLUSH); assert(ret == Z_BUF_ERROR); - } - ret = inflateCopy(©, &strm); assert(ret == Z_OK); - ret = inflateEnd(©); assert(ret == Z_OK); - err = 9; /* don't care next time around */ - have += strm.avail_in; - strm.avail_in = step > have ? have : step; - have -= strm.avail_in; - } while (strm.avail_in); - free(in); - free(out); - ret = inflateReset2(&strm, -8); assert(ret == Z_OK); - ret = inflateEnd(&strm); assert(ret == Z_OK); - mem_done(&strm, what); -} - -/* cover all of the lines in inflate.c up to inflate() */ -local void cover_support(void) -{ - int ret; - z_stream strm; - - mem_setup(&strm); - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit(&strm); assert(ret == Z_OK); - mem_used(&strm, "inflate init"); - ret = inflatePrime(&strm, 5, 31); assert(ret == Z_OK); - ret = inflatePrime(&strm, -1, 0); assert(ret == Z_OK); - ret = inflateSetDictionary(&strm, Z_NULL, 0); - assert(ret == Z_STREAM_ERROR); - ret = inflateEnd(&strm); assert(ret == Z_OK); - mem_done(&strm, "prime"); - - inf("63 0", "force window allocation", 0, -15, 1, Z_OK); - inf("63 18 5", "force window replacement", 0, -8, 259, Z_OK); - inf("63 18 68 30 d0 0 0", "force split window update", 4, -8, 259, Z_OK); - inf("3 0", "use fixed blocks", 0, -15, 1, Z_STREAM_END); - inf("", "bad window size", 0, 1, 0, Z_STREAM_ERROR); - - mem_setup(&strm); - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit_(&strm, ZLIB_VERSION - 1, (int)sizeof(z_stream)); - assert(ret == Z_VERSION_ERROR); - mem_done(&strm, "wrong version"); - - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit(&strm); assert(ret == Z_OK); - ret = inflateEnd(&strm); assert(ret == Z_OK); - fputs("inflate built-in memory routines\n", stderr); -} - -/* cover all inflate() header and trailer cases and code after inflate() */ -local void cover_wrap(void) -{ - int ret; - z_stream strm, copy; - unsigned char dict[257]; - - ret = inflate(Z_NULL, 0); assert(ret == Z_STREAM_ERROR); - ret = inflateEnd(Z_NULL); assert(ret == Z_STREAM_ERROR); - ret = inflateCopy(Z_NULL, Z_NULL); assert(ret == Z_STREAM_ERROR); - fputs("inflate bad parameters\n", stderr); - - inf("1f 8b 0 0", "bad gzip method", 0, 31, 0, Z_DATA_ERROR); - inf("1f 8b 8 80", "bad gzip flags", 0, 31, 0, Z_DATA_ERROR); - inf("77 85", "bad zlib method", 0, 15, 0, Z_DATA_ERROR); - inf("8 99", "set window size from header", 0, 0, 0, Z_OK); - inf("78 9c", "bad zlib window size", 0, 8, 0, Z_DATA_ERROR); - inf("78 9c 63 0 0 0 1 0 1", "check adler32", 0, 15, 1, Z_STREAM_END); - inf("1f 8b 8 1e 0 0 0 0 0 0 1 0 0 0 0 0 0", "bad header crc", 0, 47, 1, - Z_DATA_ERROR); - inf("1f 8b 8 2 0 0 0 0 0 0 1d 26 3 0 0 0 0 0 0 0 0 0", "check gzip length", - 0, 47, 0, Z_STREAM_END); - inf("78 90", "bad zlib header check", 0, 47, 0, Z_DATA_ERROR); - inf("8 b8 0 0 0 1", "need dictionary", 0, 8, 0, Z_NEED_DICT); - inf("78 9c 63 0", "compute adler32", 0, 15, 1, Z_OK); - - mem_setup(&strm); - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit2(&strm, -8); - strm.avail_in = 2; - strm.next_in = (void *)"\x63"; - strm.avail_out = 1; - strm.next_out = (void *)&ret; - mem_limit(&strm, 1); - ret = inflate(&strm, Z_NO_FLUSH); assert(ret == Z_MEM_ERROR); - ret = inflate(&strm, Z_NO_FLUSH); assert(ret == Z_MEM_ERROR); - mem_limit(&strm, 0); - memset(dict, 0, 257); - ret = inflateSetDictionary(&strm, dict, 257); - assert(ret == Z_OK); - mem_limit(&strm, (sizeof(struct inflate_state) << 1) + 256); - ret = inflatePrime(&strm, 16, 0); assert(ret == Z_OK); - strm.avail_in = 2; - strm.next_in = (void *)"\x80"; - ret = inflateSync(&strm); assert(ret == Z_DATA_ERROR); - ret = inflate(&strm, Z_NO_FLUSH); assert(ret == Z_STREAM_ERROR); - strm.avail_in = 4; - strm.next_in = (void *)"\0\0\xff\xff"; - ret = inflateSync(&strm); assert(ret == Z_OK); - (void)inflateSyncPoint(&strm); - ret = inflateCopy(©, &strm); assert(ret == Z_MEM_ERROR); - mem_limit(&strm, 0); - ret = inflateUndermine(&strm, 1); assert(ret == Z_DATA_ERROR); - (void)inflateMark(&strm); - ret = inflateEnd(&strm); assert(ret == Z_OK); - mem_done(&strm, "miscellaneous, force memory errors"); -} - -/* input and output functions for inflateBack() */ -local unsigned pull(void *desc, unsigned char **buf) -{ - static unsigned int next = 0; - static unsigned char dat[] = {0x63, 0, 2, 0}; - struct inflate_state *state; - - if (desc == Z_NULL) { - next = 0; - return 0; /* no input (already provided at next_in) */ - } - state = (void *)((z_stream *)desc)->state; - if (state != Z_NULL) - state->mode = SYNC; /* force an otherwise impossible situation */ - return next < sizeof(dat) ? (*buf = dat + next++, 1) : 0; -} - -local int push(void *desc, unsigned char *buf, unsigned len) -{ - buf += len; - return desc != Z_NULL; /* force error if desc not null */ -} - -/* cover inflateBack() up to common deflate data cases and after those */ -local void cover_back(void) -{ - int ret; - z_stream strm; - unsigned char win[32768]; - - ret = inflateBackInit_(Z_NULL, 0, win, 0, 0); - assert(ret == Z_VERSION_ERROR); - ret = inflateBackInit(Z_NULL, 0, win); assert(ret == Z_STREAM_ERROR); - ret = inflateBack(Z_NULL, Z_NULL, Z_NULL, Z_NULL, Z_NULL); - assert(ret == Z_STREAM_ERROR); - ret = inflateBackEnd(Z_NULL); assert(ret == Z_STREAM_ERROR); - fputs("inflateBack bad parameters\n", stderr); - - mem_setup(&strm); - ret = inflateBackInit(&strm, 15, win); assert(ret == Z_OK); - strm.avail_in = 2; - strm.next_in = (void *)"\x03"; - ret = inflateBack(&strm, pull, Z_NULL, push, Z_NULL); - assert(ret == Z_STREAM_END); - /* force output error */ - strm.avail_in = 3; - strm.next_in = (void *)"\x63\x00"; - ret = inflateBack(&strm, pull, Z_NULL, push, &strm); - assert(ret == Z_BUF_ERROR); - /* force mode error by mucking with state */ - ret = inflateBack(&strm, pull, &strm, push, Z_NULL); - assert(ret == Z_STREAM_ERROR); - ret = inflateBackEnd(&strm); assert(ret == Z_OK); - mem_done(&strm, "inflateBack bad state"); - - ret = inflateBackInit(&strm, 15, win); assert(ret == Z_OK); - ret = inflateBackEnd(&strm); assert(ret == Z_OK); - fputs("inflateBack built-in memory routines\n", stderr); -} - -/* do a raw inflate of data in hexadecimal with both inflate and inflateBack */ -local int try(char *hex, char *id, int err) -{ - int ret; - unsigned len, size; - unsigned char *in, *out, *win; - char *prefix; - z_stream strm; - - /* convert to hex */ - in = h2b(hex, &len); - assert(in != NULL); - - /* allocate work areas */ - size = len << 3; - out = malloc(size); - assert(out != NULL); - win = malloc(32768); - assert(win != NULL); - prefix = malloc(strlen(id) + 6); - assert(prefix != NULL); - - /* first with inflate */ - strcpy(prefix, id); - strcat(prefix, "-late"); - mem_setup(&strm); - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit2(&strm, err < 0 ? 47 : -15); - assert(ret == Z_OK); - strm.avail_in = len; - strm.next_in = in; - do { - strm.avail_out = size; - strm.next_out = out; - ret = inflate(&strm, Z_TREES); - assert(ret != Z_STREAM_ERROR && ret != Z_MEM_ERROR); - if (ret == Z_DATA_ERROR || ret == Z_NEED_DICT) - break; - } while (strm.avail_in || strm.avail_out == 0); - if (err) { - assert(ret == Z_DATA_ERROR); - assert(strcmp(id, strm.msg) == 0); - } - inflateEnd(&strm); - mem_done(&strm, prefix); - - /* then with inflateBack */ - if (err >= 0) { - strcpy(prefix, id); - strcat(prefix, "-back"); - mem_setup(&strm); - ret = inflateBackInit(&strm, 15, win); - assert(ret == Z_OK); - strm.avail_in = len; - strm.next_in = in; - ret = inflateBack(&strm, pull, Z_NULL, push, Z_NULL); - assert(ret != Z_STREAM_ERROR); - if (err) { - assert(ret == Z_DATA_ERROR); - assert(strcmp(id, strm.msg) == 0); - } - inflateBackEnd(&strm); - mem_done(&strm, prefix); - } - - /* clean up */ - free(prefix); - free(win); - free(out); - free(in); - return ret; -} - -/* cover deflate data cases in both inflate() and inflateBack() */ -local void cover_inflate(void) -{ - try("0 0 0 0 0", "invalid stored block lengths", 1); - try("3 0", "fixed", 0); - try("6", "invalid block type", 1); - try("1 1 0 fe ff 0", "stored", 0); - try("fc 0 0", "too many length or distance symbols", 1); - try("4 0 fe ff", "invalid code lengths set", 1); - try("4 0 24 49 0", "invalid bit length repeat", 1); - try("4 0 24 e9 ff ff", "invalid bit length repeat", 1); - try("4 0 24 e9 ff 6d", "invalid code -- missing end-of-block", 1); - try("4 80 49 92 24 49 92 24 71 ff ff 93 11 0", - "invalid literal/lengths set", 1); - try("4 80 49 92 24 49 92 24 f b4 ff ff c3 84", "invalid distances set", 1); - try("4 c0 81 8 0 0 0 0 20 7f eb b 0 0", "invalid literal/length code", 1); - try("2 7e ff ff", "invalid distance code", 1); - try("c c0 81 0 0 0 0 0 90 ff 6b 4 0", "invalid distance too far back", 1); - - /* also trailer mismatch just in inflate() */ - try("1f 8b 8 0 0 0 0 0 0 0 3 0 0 0 0 1", "incorrect data check", -1); - try("1f 8b 8 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 1", - "incorrect length check", -1); - try("5 c0 21 d 0 0 0 80 b0 fe 6d 2f 91 6c", "pull 17", 0); - try("5 e0 81 91 24 cb b2 2c 49 e2 f 2e 8b 9a 47 56 9f fb fe ec d2 ff 1f", - "long code", 0); - try("ed c0 1 1 0 0 0 40 20 ff 57 1b 42 2c 4f", "length extra", 0); - try("ed cf c1 b1 2c 47 10 c4 30 fa 6f 35 1d 1 82 59 3d fb be 2e 2a fc f c", - "long distance and extra", 0); - try("ed c0 81 0 0 0 0 80 a0 fd a9 17 a9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6", "window end", 0); - inf("2 8 20 80 0 3 0", "inflate_fast TYPE return", 0, -15, 258, - Z_STREAM_END); - inf("63 18 5 40 c 0", "window wrap", 3, -8, 300, Z_OK); -} - -/* cover remaining lines in inftrees.c */ -local void cover_trees(void) -{ - int ret; - unsigned bits; - unsigned short lens[16], work[16]; - code *next, table[ENOUGH_DISTS]; - - /* we need to call inflate_table() directly in order to manifest not- - enough errors, since zlib insures that enough is always enough */ - for (bits = 0; bits < 15; bits++) - lens[bits] = (unsigned short)(bits + 1); - lens[15] = 15; - next = table; - bits = 15; - ret = inflate_table(DISTS, lens, 16, &next, &bits, work); - assert(ret == 1); - next = table; - bits = 1; - ret = inflate_table(DISTS, lens, 16, &next, &bits, work); - assert(ret == 1); - fputs("inflate_table not enough errors\n", stderr); -} - -/* cover remaining inffast.c decoding and window copying */ -local void cover_fast(void) -{ - inf("e5 e0 81 ad 6d cb b2 2c c9 01 1e 59 63 ae 7d ee fb 4d fd b5 35 41 68" - " ff 7f 0f 0 0 0", "fast length extra bits", 0, -8, 258, Z_DATA_ERROR); - inf("25 fd 81 b5 6d 59 b6 6a 49 ea af 35 6 34 eb 8c b9 f6 b9 1e ef 67 49" - " 50 fe ff ff 3f 0 0", "fast distance extra bits", 0, -8, 258, - Z_DATA_ERROR); - inf("3 7e 0 0 0 0 0", "fast invalid distance code", 0, -8, 258, - Z_DATA_ERROR); - inf("1b 7 0 0 0 0 0", "fast invalid literal/length code", 0, -8, 258, - Z_DATA_ERROR); - inf("d c7 1 ae eb 38 c 4 41 a0 87 72 de df fb 1f b8 36 b1 38 5d ff ff 0", - "fast 2nd level codes and too far back", 0, -8, 258, Z_DATA_ERROR); - inf("63 18 5 8c 10 8 0 0 0 0", "very common case", 0, -8, 259, Z_OK); - inf("63 60 60 18 c9 0 8 18 18 18 26 c0 28 0 29 0 0 0", - "contiguous and wrap around window", 6, -8, 259, Z_OK); - inf("63 0 3 0 0 0 0 0", "copy direct from output", 0, -8, 259, - Z_STREAM_END); -} - -int main(void) -{ - fprintf(stderr, "%s\n", zlibVersion()); - cover_support(); - cover_wrap(); - cover_back(); - cover_inflate(); - cover_trees(); - cover_fast(); - return 0; -} diff --git a/platform/win32/msvc/external/zlib/test/minigzip.c b/platform/win32/msvc/external/zlib/test/minigzip.c deleted file mode 100644 index b3025a489a9..00000000000 --- a/platform/win32/msvc/external/zlib/test/minigzip.c +++ /dev/null @@ -1,651 +0,0 @@ -/* minigzip.c -- simulate gzip using the zlib compression library - * Copyright (C) 1995-2006, 2010, 2011 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* - * minigzip is a minimal implementation of the gzip utility. This is - * only an example of using zlib and isn't meant to replace the - * full-featured gzip. No attempt is made to deal with file systems - * limiting names to 14 or 8+3 characters, etc... Error checking is - * very limited. So use minigzip only for testing; use gzip for the - * real thing. On MSDOS, use only on file names without extension - * or in pipe mode. - */ - -/* @(#) $Id$ */ - -#include "zlib.h" -#include - -#ifdef STDC -# include -# include -#endif - -#ifdef USE_MMAP -# include -# include -# include -#endif - -#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__) -# include -# include -# ifdef UNDER_CE -# include -# endif -# define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY) -#else -# define SET_BINARY_MODE(file) -#endif - -#ifdef _MSC_VER -# define snprintf _snprintf -#endif - -#ifdef VMS -# define unlink delete -# define GZ_SUFFIX "-gz" -#endif -#ifdef RISCOS -# define unlink remove -# define GZ_SUFFIX "-gz" -# define fileno(file) file->__file -#endif -#if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os -# include /* for fileno */ -#endif - -#if !defined(Z_HAVE_UNISTD_H) && !defined(_LARGEFILE64_SOURCE) -#ifndef WIN32 /* unlink already in stdio.h for WIN32 */ - extern int unlink OF((const char *)); -#endif -#endif - -#if defined(UNDER_CE) -# include -# define perror(s) pwinerror(s) - -/* Map the Windows error number in ERROR to a locale-dependent error - message string and return a pointer to it. Typically, the values - for ERROR come from GetLastError. - - The string pointed to shall not be modified by the application, - but may be overwritten by a subsequent call to strwinerror - - The strwinerror function does not change the current setting - of GetLastError. */ - -static char *strwinerror (error) - DWORD error; -{ - static char buf[1024]; - - wchar_t *msgbuf; - DWORD lasterr = GetLastError(); - DWORD chars = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM - | FORMAT_MESSAGE_ALLOCATE_BUFFER, - NULL, - error, - 0, /* Default language */ - (LPVOID)&msgbuf, - 0, - NULL); - if (chars != 0) { - /* If there is an \r\n appended, zap it. */ - if (chars >= 2 - && msgbuf[chars - 2] == '\r' && msgbuf[chars - 1] == '\n') { - chars -= 2; - msgbuf[chars] = 0; - } - - if (chars > sizeof (buf) - 1) { - chars = sizeof (buf) - 1; - msgbuf[chars] = 0; - } - - wcstombs(buf, msgbuf, chars + 1); - LocalFree(msgbuf); - } - else { - sprintf(buf, "unknown win32 error (%ld)", error); - } - - SetLastError(lasterr); - return buf; -} - -static void pwinerror (s) - const char *s; -{ - if (s && *s) - fprintf(stderr, "%s: %s\n", s, strwinerror(GetLastError ())); - else - fprintf(stderr, "%s\n", strwinerror(GetLastError ())); -} - -#endif /* UNDER_CE */ - -#ifndef GZ_SUFFIX -# define GZ_SUFFIX ".gz" -#endif -#define SUFFIX_LEN (sizeof(GZ_SUFFIX)-1) - -#define BUFLEN 16384 -#define MAX_NAME_LEN 1024 - -#ifdef MAXSEG_64K -# define local static - /* Needed for systems with limitation on stack size. */ -#else -# define local -#endif - -#ifdef Z_SOLO -/* for Z_SOLO, create simplified gz* functions using deflate and inflate */ - -#if defined(Z_HAVE_UNISTD_H) || defined(Z_LARGE) -# include /* for unlink() */ -#endif - -void *myalloc OF((void *, unsigned, unsigned)); -void myfree OF((void *, void *)); - -void *myalloc(q, n, m) - void *q; - unsigned n, m; -{ - q = Z_NULL; - return calloc(n, m); -} - -void myfree(q, p) - void *q, *p; -{ - q = Z_NULL; - free(p); -} - -typedef struct gzFile_s { - FILE *file; - int write; - int err; - char *msg; - z_stream strm; -} *gzFile; - -gzFile gzopen OF((const char *, const char *)); -gzFile gzdopen OF((int, const char *)); -gzFile gz_open OF((const char *, int, const char *)); - -gzFile gzopen(path, mode) -const char *path; -const char *mode; -{ - return gz_open(path, -1, mode); -} - -gzFile gzdopen(fd, mode) -int fd; -const char *mode; -{ - return gz_open(NULL, fd, mode); -} - -gzFile gz_open(path, fd, mode) - const char *path; - int fd; - const char *mode; -{ - gzFile gz; - int ret; - - gz = malloc(sizeof(struct gzFile_s)); - if (gz == NULL) - return NULL; - gz->write = strchr(mode, 'w') != NULL; - gz->strm.zalloc = myalloc; - gz->strm.zfree = myfree; - gz->strm.opaque = Z_NULL; - if (gz->write) - ret = deflateInit2(&(gz->strm), -1, 8, 15 + 16, 8, 0); - else { - gz->strm.next_in = 0; - gz->strm.avail_in = Z_NULL; - ret = inflateInit2(&(gz->strm), 15 + 16); - } - if (ret != Z_OK) { - free(gz); - return NULL; - } - gz->file = path == NULL ? fdopen(fd, gz->write ? "wb" : "rb") : - fopen(path, gz->write ? "wb" : "rb"); - if (gz->file == NULL) { - gz->write ? deflateEnd(&(gz->strm)) : inflateEnd(&(gz->strm)); - free(gz); - return NULL; - } - gz->err = 0; - gz->msg = ""; - return gz; -} - -int gzwrite OF((gzFile, const void *, unsigned)); - -int gzwrite(gz, buf, len) - gzFile gz; - const void *buf; - unsigned len; -{ - z_stream *strm; - unsigned char out[BUFLEN]; - - if (gz == NULL || !gz->write) - return 0; - strm = &(gz->strm); - strm->next_in = (void *)buf; - strm->avail_in = len; - do { - strm->next_out = out; - strm->avail_out = BUFLEN; - (void)deflate(strm, Z_NO_FLUSH); - fwrite(out, 1, BUFLEN - strm->avail_out, gz->file); - } while (strm->avail_out == 0); - return len; -} - -int gzread OF((gzFile, void *, unsigned)); - -int gzread(gz, buf, len) - gzFile gz; - void *buf; - unsigned len; -{ - int ret; - unsigned got; - unsigned char in[1]; - z_stream *strm; - - if (gz == NULL || gz->write) - return 0; - if (gz->err) - return 0; - strm = &(gz->strm); - strm->next_out = (void *)buf; - strm->avail_out = len; - do { - got = fread(in, 1, 1, gz->file); - if (got == 0) - break; - strm->next_in = in; - strm->avail_in = 1; - ret = inflate(strm, Z_NO_FLUSH); - if (ret == Z_DATA_ERROR) { - gz->err = Z_DATA_ERROR; - gz->msg = strm->msg; - return 0; - } - if (ret == Z_STREAM_END) - inflateReset(strm); - } while (strm->avail_out); - return len - strm->avail_out; -} - -int gzclose OF((gzFile)); - -int gzclose(gz) - gzFile gz; -{ - z_stream *strm; - unsigned char out[BUFLEN]; - - if (gz == NULL) - return Z_STREAM_ERROR; - strm = &(gz->strm); - if (gz->write) { - strm->next_in = Z_NULL; - strm->avail_in = 0; - do { - strm->next_out = out; - strm->avail_out = BUFLEN; - (void)deflate(strm, Z_FINISH); - fwrite(out, 1, BUFLEN - strm->avail_out, gz->file); - } while (strm->avail_out == 0); - deflateEnd(strm); - } - else - inflateEnd(strm); - fclose(gz->file); - free(gz); - return Z_OK; -} - -const char *gzerror OF((gzFile, int *)); - -const char *gzerror(gz, err) - gzFile gz; - int *err; -{ - *err = gz->err; - return gz->msg; -} - -#endif - -char *prog; - -void error OF((const char *msg)); -void gz_compress OF((FILE *in, gzFile out)); -#ifdef USE_MMAP -int gz_compress_mmap OF((FILE *in, gzFile out)); -#endif -void gz_uncompress OF((gzFile in, FILE *out)); -void file_compress OF((char *file, char *mode)); -void file_uncompress OF((char *file)); -int main OF((int argc, char *argv[])); - -/* =========================================================================== - * Display error message and exit - */ -void error(msg) - const char *msg; -{ - fprintf(stderr, "%s: %s\n", prog, msg); - exit(1); -} - -/* =========================================================================== - * Compress input to output then close both files. - */ - -void gz_compress(in, out) - FILE *in; - gzFile out; -{ - local char buf[BUFLEN]; - int len; - int err; - -#ifdef USE_MMAP - /* Try first compressing with mmap. If mmap fails (minigzip used in a - * pipe), use the normal fread loop. - */ - if (gz_compress_mmap(in, out) == Z_OK) return; -#endif - for (;;) { - len = (int)fread(buf, 1, sizeof(buf), in); - if (ferror(in)) { - perror("fread"); - exit(1); - } - if (len == 0) break; - - if (gzwrite(out, buf, (unsigned)len) != len) error(gzerror(out, &err)); - } - fclose(in); - if (gzclose(out) != Z_OK) error("failed gzclose"); -} - -#ifdef USE_MMAP /* MMAP version, Miguel Albrecht */ - -/* Try compressing the input file at once using mmap. Return Z_OK if - * if success, Z_ERRNO otherwise. - */ -int gz_compress_mmap(in, out) - FILE *in; - gzFile out; -{ - int len; - int err; - int ifd = fileno(in); - caddr_t buf; /* mmap'ed buffer for the entire input file */ - off_t buf_len; /* length of the input file */ - struct stat sb; - - /* Determine the size of the file, needed for mmap: */ - if (fstat(ifd, &sb) < 0) return Z_ERRNO; - buf_len = sb.st_size; - if (buf_len <= 0) return Z_ERRNO; - - /* Now do the actual mmap: */ - buf = mmap((caddr_t) 0, buf_len, PROT_READ, MAP_SHARED, ifd, (off_t)0); - if (buf == (caddr_t)(-1)) return Z_ERRNO; - - /* Compress the whole file at once: */ - len = gzwrite(out, (char *)buf, (unsigned)buf_len); - - if (len != (int)buf_len) error(gzerror(out, &err)); - - munmap(buf, buf_len); - fclose(in); - if (gzclose(out) != Z_OK) error("failed gzclose"); - return Z_OK; -} -#endif /* USE_MMAP */ - -/* =========================================================================== - * Uncompress input to output then close both files. - */ -void gz_uncompress(in, out) - gzFile in; - FILE *out; -{ - local char buf[BUFLEN]; - int len; - int err; - - for (;;) { - len = gzread(in, buf, sizeof(buf)); - if (len < 0) error (gzerror(in, &err)); - if (len == 0) break; - - if ((int)fwrite(buf, 1, (unsigned)len, out) != len) { - error("failed fwrite"); - } - } - if (fclose(out)) error("failed fclose"); - - if (gzclose(in) != Z_OK) error("failed gzclose"); -} - - -/* =========================================================================== - * Compress the given file: create a corresponding .gz file and remove the - * original. - */ -void file_compress(file, mode) - char *file; - char *mode; -{ - local char outfile[MAX_NAME_LEN]; - FILE *in; - gzFile out; - - if (strlen(file) + strlen(GZ_SUFFIX) >= sizeof(outfile)) { - fprintf(stderr, "%s: filename too long\n", prog); - exit(1); - } - -#if !defined(NO_snprintf) && !defined(NO_vsnprintf) - snprintf(outfile, sizeof(outfile), "%s%s", file, GZ_SUFFIX); -#else - strcpy(outfile, file); - strcat(outfile, GZ_SUFFIX); -#endif - - in = fopen(file, "rb"); - if (in == NULL) { - perror(file); - exit(1); - } - out = gzopen(outfile, mode); - if (out == NULL) { - fprintf(stderr, "%s: can't gzopen %s\n", prog, outfile); - exit(1); - } - gz_compress(in, out); - - unlink(file); -} - - -/* =========================================================================== - * Uncompress the given file and remove the original. - */ -void file_uncompress(file) - char *file; -{ - local char buf[MAX_NAME_LEN]; - char *infile, *outfile; - FILE *out; - gzFile in; - size_t len = strlen(file); - - if (len + strlen(GZ_SUFFIX) >= sizeof(buf)) { - fprintf(stderr, "%s: filename too long\n", prog); - exit(1); - } - -#if !defined(NO_snprintf) && !defined(NO_vsnprintf) - snprintf(buf, sizeof(buf), "%s", file); -#else - strcpy(buf, file); -#endif - - if (len > SUFFIX_LEN && strcmp(file+len-SUFFIX_LEN, GZ_SUFFIX) == 0) { - infile = file; - outfile = buf; - outfile[len-3] = '\0'; - } else { - outfile = file; - infile = buf; -#if !defined(NO_snprintf) && !defined(NO_vsnprintf) - snprintf(buf + len, sizeof(buf) - len, "%s", GZ_SUFFIX); -#else - strcat(infile, GZ_SUFFIX); -#endif - } - in = gzopen(infile, "rb"); - if (in == NULL) { - fprintf(stderr, "%s: can't gzopen %s\n", prog, infile); - exit(1); - } - out = fopen(outfile, "wb"); - if (out == NULL) { - perror(file); - exit(1); - } - - gz_uncompress(in, out); - - unlink(infile); -} - - -/* =========================================================================== - * Usage: minigzip [-c] [-d] [-f] [-h] [-r] [-1 to -9] [files...] - * -c : write to standard output - * -d : decompress - * -f : compress with Z_FILTERED - * -h : compress with Z_HUFFMAN_ONLY - * -r : compress with Z_RLE - * -1 to -9 : compression level - */ - -int main(argc, argv) - int argc; - char *argv[]; -{ - int copyout = 0; - int uncompr = 0; - gzFile file; - char *bname, outmode[20]; - -#if !defined(NO_snprintf) && !defined(NO_vsnprintf) - snprintf(outmode, sizeof(outmode), "%s", "wb6 "); -#else - strcpy(outmode, "wb6 "); -#endif - - prog = argv[0]; - bname = strrchr(argv[0], '/'); - if (bname) - bname++; - else - bname = argv[0]; - argc--, argv++; - - if (!strcmp(bname, "gunzip")) - uncompr = 1; - else if (!strcmp(bname, "zcat")) - copyout = uncompr = 1; - - while (argc > 0) { - if (strcmp(*argv, "-c") == 0) - copyout = 1; - else if (strcmp(*argv, "-d") == 0) - uncompr = 1; - else if (strcmp(*argv, "-f") == 0) - outmode[3] = 'f'; - else if (strcmp(*argv, "-h") == 0) - outmode[3] = 'h'; - else if (strcmp(*argv, "-r") == 0) - outmode[3] = 'R'; - else if ((*argv)[0] == '-' && (*argv)[1] >= '1' && (*argv)[1] <= '9' && - (*argv)[2] == 0) - outmode[2] = (*argv)[1]; - else - break; - argc--, argv++; - } - if (outmode[3] == ' ') - outmode[3] = 0; - if (argc == 0) { - SET_BINARY_MODE(stdin); - SET_BINARY_MODE(stdout); - if (uncompr) { - file = gzdopen(fileno(stdin), "rb"); - if (file == NULL) error("can't gzdopen stdin"); - gz_uncompress(file, stdout); - } else { - file = gzdopen(fileno(stdout), outmode); - if (file == NULL) error("can't gzdopen stdout"); - gz_compress(stdin, file); - } - } else { - if (copyout) { - SET_BINARY_MODE(stdout); - } - do { - if (uncompr) { - if (copyout) { - file = gzopen(*argv, "rb"); - if (file == NULL) - fprintf(stderr, "%s: can't gzopen %s\n", prog, *argv); - else - gz_uncompress(file, stdout); - } else { - file_uncompress(*argv); - } - } else { - if (copyout) { - FILE * in = fopen(*argv, "rb"); - - if (in == NULL) { - perror(*argv); - } else { - file = gzdopen(fileno(stdout), outmode); - if (file == NULL) error("can't gzdopen stdout"); - - gz_compress(in, file); - } - - } else { - file_compress(*argv, outmode); - } - } - } while (argv++, --argc); - } - return 0; -} diff --git a/platform/win32/msvc/external/zlib/treebuild.xml b/platform/win32/msvc/external/zlib/treebuild.xml deleted file mode 100644 index 38d29d75efc..00000000000 --- a/platform/win32/msvc/external/zlib/treebuild.xml +++ /dev/null @@ -1,116 +0,0 @@ - - - - zip compression library - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/win32/msvc/external/zlib/trees.c b/platform/win32/msvc/external/zlib/trees.c deleted file mode 100644 index 1fd7759ef00..00000000000 --- a/platform/win32/msvc/external/zlib/trees.c +++ /dev/null @@ -1,1226 +0,0 @@ -/* trees.c -- output deflated data using Huffman coding - * Copyright (C) 1995-2012 Jean-loup Gailly - * detect_data_type() function provided freely by Cosmin Truta, 2006 - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* - * ALGORITHM - * - * The "deflation" process uses several Huffman trees. The more - * common source values are represented by shorter bit sequences. - * - * Each code tree is stored in a compressed form which is itself - * a Huffman encoding of the lengths of all the code strings (in - * ascending order by source values). The actual code strings are - * reconstructed from the lengths in the inflate process, as described - * in the deflate specification. - * - * REFERENCES - * - * Deutsch, L.P.,"'Deflate' Compressed Data Format Specification". - * Available in ftp.uu.net:/pub/archiving/zip/doc/deflate-1.1.doc - * - * Storer, James A. - * Data Compression: Methods and Theory, pp. 49-50. - * Computer Science Press, 1988. ISBN 0-7167-8156-5. - * - * Sedgewick, R. - * Algorithms, p290. - * Addison-Wesley, 1983. ISBN 0-201-06672-6. - */ - -/* @(#) $Id$ */ - -/* #define GEN_TREES_H */ - -#include "deflate.h" - -#ifdef DEBUG -# include -#endif - -/* =========================================================================== - * Constants - */ - -#define MAX_BL_BITS 7 -/* Bit length codes must not exceed MAX_BL_BITS bits */ - -#define END_BLOCK 256 -/* end of block literal code */ - -#define REP_3_6 16 -/* repeat previous bit length 3-6 times (2 bits of repeat count) */ - -#define REPZ_3_10 17 -/* repeat a zero length 3-10 times (3 bits of repeat count) */ - -#define REPZ_11_138 18 -/* repeat a zero length 11-138 times (7 bits of repeat count) */ - -local const int extra_lbits[LENGTH_CODES] /* extra bits for each length code */ - = {0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0}; - -local const int extra_dbits[D_CODES] /* extra bits for each distance code */ - = {0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13}; - -local const int extra_blbits[BL_CODES]/* extra bits for each bit length code */ - = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7}; - -local const uch bl_order[BL_CODES] - = {16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15}; -/* The lengths of the bit length codes are sent in order of decreasing - * probability, to avoid transmitting the lengths for unused bit length codes. - */ - -/* =========================================================================== - * Local data. These are initialized only once. - */ - -#define DIST_CODE_LEN 512 /* see definition of array dist_code below */ - -#if defined(GEN_TREES_H) || !defined(STDC) -/* non ANSI compilers may not accept trees.h */ - -local ct_data static_ltree[L_CODES+2]; -/* The static literal tree. Since the bit lengths are imposed, there is no - * need for the L_CODES extra codes used during heap construction. However - * The codes 286 and 287 are needed to build a canonical tree (see _tr_init - * below). - */ - -local ct_data static_dtree[D_CODES]; -/* The static distance tree. (Actually a trivial tree since all codes use - * 5 bits.) - */ - -uch _dist_code[DIST_CODE_LEN]; -/* Distance codes. The first 256 values correspond to the distances - * 3 .. 258, the last 256 values correspond to the top 8 bits of - * the 15 bit distances. - */ - -uch _length_code[MAX_MATCH-MIN_MATCH+1]; -/* length code for each normalized match length (0 == MIN_MATCH) */ - -local int base_length[LENGTH_CODES]; -/* First normalized length for each code (0 = MIN_MATCH) */ - -local int base_dist[D_CODES]; -/* First normalized distance for each code (0 = distance of 1) */ - -#else -# include "trees.h" -#endif /* GEN_TREES_H */ - -struct static_tree_desc_s { - const ct_data *static_tree; /* static tree or NULL */ - const intf *extra_bits; /* extra bits for each code or NULL */ - int extra_base; /* base index for extra_bits */ - int elems; /* max number of elements in the tree */ - int max_length; /* max bit length for the codes */ -}; - -local static_tree_desc static_l_desc = -{static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS}; - -local static_tree_desc static_d_desc = -{static_dtree, extra_dbits, 0, D_CODES, MAX_BITS}; - -local static_tree_desc static_bl_desc = -{(const ct_data *)0, extra_blbits, 0, BL_CODES, MAX_BL_BITS}; - -/* =========================================================================== - * Local (static) routines in this file. - */ - -local void tr_static_init OF((void)); -local void init_block OF((deflate_state *s)); -local void pqdownheap OF((deflate_state *s, ct_data *tree, int k)); -local void gen_bitlen OF((deflate_state *s, tree_desc *desc)); -local void gen_codes OF((ct_data *tree, int max_code, ushf *bl_count)); -local void build_tree OF((deflate_state *s, tree_desc *desc)); -local void scan_tree OF((deflate_state *s, ct_data *tree, int max_code)); -local void send_tree OF((deflate_state *s, ct_data *tree, int max_code)); -local int build_bl_tree OF((deflate_state *s)); -local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes, - int blcodes)); -local void compress_block OF((deflate_state *s, const ct_data *ltree, - const ct_data *dtree)); -local int detect_data_type OF((deflate_state *s)); -local unsigned bi_reverse OF((unsigned value, int length)); -local void bi_windup OF((deflate_state *s)); -local void bi_flush OF((deflate_state *s)); -local void copy_block OF((deflate_state *s, charf *buf, unsigned len, - int header)); - -#ifdef GEN_TREES_H -local void gen_trees_header OF((void)); -#endif - -#ifndef DEBUG -# define send_code(s, c, tree) send_bits(s, tree[c].Code, tree[c].Len) - /* Send a code of the given tree. c and tree must not have side effects */ - -#else /* DEBUG */ -# define send_code(s, c, tree) \ - { if (z_verbose>2) fprintf(stderr,"\ncd %3d ",(c)); \ - send_bits(s, tree[c].Code, tree[c].Len); } -#endif - -/* =========================================================================== - * Output a short LSB first on the stream. - * IN assertion: there is enough room in pendingBuf. - */ -#define put_short(s, w) { \ - put_byte(s, (uch)((w) & 0xff)); \ - put_byte(s, (uch)((ush)(w) >> 8)); \ -} - -/* =========================================================================== - * Send a value on a given number of bits. - * IN assertion: length <= 16 and value fits in length bits. - */ -#ifdef DEBUG -local void send_bits OF((deflate_state *s, int value, int length)); - -local void send_bits(s, value, length) - deflate_state *s; - int value; /* value to send */ - int length; /* number of bits */ -{ - Tracevv((stderr," l %2d v %4x ", length, value)); - Assert(length > 0 && length <= 15, "invalid length"); - s->bits_sent += (ulg)length; - - /* If not enough room in bi_buf, use (valid) bits from bi_buf and - * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid)) - * unused bits in value. - */ - if (s->bi_valid > (int)Buf_size - length) { - s->bi_buf |= (ush)value << s->bi_valid; - put_short(s, s->bi_buf); - s->bi_buf = (ush)value >> (Buf_size - s->bi_valid); - s->bi_valid += length - Buf_size; - } else { - s->bi_buf |= (ush)value << s->bi_valid; - s->bi_valid += length; - } -} -#else /* !DEBUG */ - -#define send_bits(s, value, length) \ -{ int len = length;\ - if (s->bi_valid > (int)Buf_size - len) {\ - int val = value;\ - s->bi_buf |= (ush)val << s->bi_valid;\ - put_short(s, s->bi_buf);\ - s->bi_buf = (ush)val >> (Buf_size - s->bi_valid);\ - s->bi_valid += len - Buf_size;\ - } else {\ - s->bi_buf |= (ush)(value) << s->bi_valid;\ - s->bi_valid += len;\ - }\ -} -#endif /* DEBUG */ - - -/* the arguments must not have side effects */ - -/* =========================================================================== - * Initialize the various 'constant' tables. - */ -local void tr_static_init() -{ -#if defined(GEN_TREES_H) || !defined(STDC) - static int static_init_done = 0; - int n; /* iterates over tree elements */ - int bits; /* bit counter */ - int length; /* length value */ - int code; /* code value */ - int dist; /* distance index */ - ush bl_count[MAX_BITS+1]; - /* number of codes at each bit length for an optimal tree */ - - if (static_init_done) return; - - /* For some embedded targets, global variables are not initialized: */ -#ifdef NO_INIT_GLOBAL_POINTERS - static_l_desc.static_tree = static_ltree; - static_l_desc.extra_bits = extra_lbits; - static_d_desc.static_tree = static_dtree; - static_d_desc.extra_bits = extra_dbits; - static_bl_desc.extra_bits = extra_blbits; -#endif - - /* Initialize the mapping length (0..255) -> length code (0..28) */ - length = 0; - for (code = 0; code < LENGTH_CODES-1; code++) { - base_length[code] = length; - for (n = 0; n < (1< dist code (0..29) */ - dist = 0; - for (code = 0 ; code < 16; code++) { - base_dist[code] = dist; - for (n = 0; n < (1<>= 7; /* from now on, all distances are divided by 128 */ - for ( ; code < D_CODES; code++) { - base_dist[code] = dist << 7; - for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) { - _dist_code[256 + dist++] = (uch)code; - } - } - Assert (dist == 256, "tr_static_init: 256+dist != 512"); - - /* Construct the codes of the static literal tree */ - for (bits = 0; bits <= MAX_BITS; bits++) bl_count[bits] = 0; - n = 0; - while (n <= 143) static_ltree[n++].Len = 8, bl_count[8]++; - while (n <= 255) static_ltree[n++].Len = 9, bl_count[9]++; - while (n <= 279) static_ltree[n++].Len = 7, bl_count[7]++; - while (n <= 287) static_ltree[n++].Len = 8, bl_count[8]++; - /* Codes 286 and 287 do not exist, but we must include them in the - * tree construction to get a canonical Huffman tree (longest code - * all ones) - */ - gen_codes((ct_data *)static_ltree, L_CODES+1, bl_count); - - /* The static distance tree is trivial: */ - for (n = 0; n < D_CODES; n++) { - static_dtree[n].Len = 5; - static_dtree[n].Code = bi_reverse((unsigned)n, 5); - } - static_init_done = 1; - -# ifdef GEN_TREES_H - gen_trees_header(); -# endif -#endif /* defined(GEN_TREES_H) || !defined(STDC) */ -} - -/* =========================================================================== - * Genererate the file trees.h describing the static trees. - */ -#ifdef GEN_TREES_H -# ifndef DEBUG -# include -# endif - -# define SEPARATOR(i, last, width) \ - ((i) == (last)? "\n};\n\n" : \ - ((i) % (width) == (width)-1 ? ",\n" : ", ")) - -void gen_trees_header() -{ - FILE *header = fopen("trees.h", "w"); - int i; - - Assert (header != NULL, "Can't open trees.h"); - fprintf(header, - "/* header created automatically with -DGEN_TREES_H */\n\n"); - - fprintf(header, "local const ct_data static_ltree[L_CODES+2] = {\n"); - for (i = 0; i < L_CODES+2; i++) { - fprintf(header, "{{%3u},{%3u}}%s", static_ltree[i].Code, - static_ltree[i].Len, SEPARATOR(i, L_CODES+1, 5)); - } - - fprintf(header, "local const ct_data static_dtree[D_CODES] = {\n"); - for (i = 0; i < D_CODES; i++) { - fprintf(header, "{{%2u},{%2u}}%s", static_dtree[i].Code, - static_dtree[i].Len, SEPARATOR(i, D_CODES-1, 5)); - } - - fprintf(header, "const uch ZLIB_INTERNAL _dist_code[DIST_CODE_LEN] = {\n"); - for (i = 0; i < DIST_CODE_LEN; i++) { - fprintf(header, "%2u%s", _dist_code[i], - SEPARATOR(i, DIST_CODE_LEN-1, 20)); - } - - fprintf(header, - "const uch ZLIB_INTERNAL _length_code[MAX_MATCH-MIN_MATCH+1]= {\n"); - for (i = 0; i < MAX_MATCH-MIN_MATCH+1; i++) { - fprintf(header, "%2u%s", _length_code[i], - SEPARATOR(i, MAX_MATCH-MIN_MATCH, 20)); - } - - fprintf(header, "local const int base_length[LENGTH_CODES] = {\n"); - for (i = 0; i < LENGTH_CODES; i++) { - fprintf(header, "%1u%s", base_length[i], - SEPARATOR(i, LENGTH_CODES-1, 20)); - } - - fprintf(header, "local const int base_dist[D_CODES] = {\n"); - for (i = 0; i < D_CODES; i++) { - fprintf(header, "%5u%s", base_dist[i], - SEPARATOR(i, D_CODES-1, 10)); - } - - fclose(header); -} -#endif /* GEN_TREES_H */ - -/* =========================================================================== - * Initialize the tree data structures for a new zlib stream. - */ -void ZLIB_INTERNAL _tr_init(s) - deflate_state *s; -{ - tr_static_init(); - - s->l_desc.dyn_tree = s->dyn_ltree; - s->l_desc.stat_desc = &static_l_desc; - - s->d_desc.dyn_tree = s->dyn_dtree; - s->d_desc.stat_desc = &static_d_desc; - - s->bl_desc.dyn_tree = s->bl_tree; - s->bl_desc.stat_desc = &static_bl_desc; - - s->bi_buf = 0; - s->bi_valid = 0; -#ifdef DEBUG - s->compressed_len = 0L; - s->bits_sent = 0L; -#endif - - /* Initialize the first block of the first file: */ - init_block(s); -} - -/* =========================================================================== - * Initialize a new block. - */ -local void init_block(s) - deflate_state *s; -{ - int n; /* iterates over tree elements */ - - /* Initialize the trees. */ - for (n = 0; n < L_CODES; n++) s->dyn_ltree[n].Freq = 0; - for (n = 0; n < D_CODES; n++) s->dyn_dtree[n].Freq = 0; - for (n = 0; n < BL_CODES; n++) s->bl_tree[n].Freq = 0; - - s->dyn_ltree[END_BLOCK].Freq = 1; - s->opt_len = s->static_len = 0L; - s->last_lit = s->matches = 0; -} - -#define SMALLEST 1 -/* Index within the heap array of least frequent node in the Huffman tree */ - - -/* =========================================================================== - * Remove the smallest element from the heap and recreate the heap with - * one less element. Updates heap and heap_len. - */ -#define pqremove(s, tree, top) \ -{\ - top = s->heap[SMALLEST]; \ - s->heap[SMALLEST] = s->heap[s->heap_len--]; \ - pqdownheap(s, tree, SMALLEST); \ -} - -/* =========================================================================== - * Compares to subtrees, using the tree depth as tie breaker when - * the subtrees have equal frequency. This minimizes the worst case length. - */ -#define smaller(tree, n, m, depth) \ - (tree[n].Freq < tree[m].Freq || \ - (tree[n].Freq == tree[m].Freq && depth[n] <= depth[m])) - -/* =========================================================================== - * Restore the heap property by moving down the tree starting at node k, - * exchanging a node with the smallest of its two sons if necessary, stopping - * when the heap property is re-established (each father smaller than its - * two sons). - */ -local void pqdownheap(s, tree, k) - deflate_state *s; - ct_data *tree; /* the tree to restore */ - int k; /* node to move down */ -{ - int v = s->heap[k]; - int j = k << 1; /* left son of k */ - while (j <= s->heap_len) { - /* Set j to the smallest of the two sons: */ - if (j < s->heap_len && - smaller(tree, s->heap[j+1], s->heap[j], s->depth)) { - j++; - } - /* Exit if v is smaller than both sons */ - if (smaller(tree, v, s->heap[j], s->depth)) break; - - /* Exchange v with the smallest son */ - s->heap[k] = s->heap[j]; k = j; - - /* And continue down the tree, setting j to the left son of k */ - j <<= 1; - } - s->heap[k] = v; -} - -/* =========================================================================== - * Compute the optimal bit lengths for a tree and update the total bit length - * for the current block. - * IN assertion: the fields freq and dad are set, heap[heap_max] and - * above are the tree nodes sorted by increasing frequency. - * OUT assertions: the field len is set to the optimal bit length, the - * array bl_count contains the frequencies for each bit length. - * The length opt_len is updated; static_len is also updated if stree is - * not null. - */ -local void gen_bitlen(s, desc) - deflate_state *s; - tree_desc *desc; /* the tree descriptor */ -{ - ct_data *tree = desc->dyn_tree; - int max_code = desc->max_code; - const ct_data *stree = desc->stat_desc->static_tree; - const intf *extra = desc->stat_desc->extra_bits; - int base = desc->stat_desc->extra_base; - int max_length = desc->stat_desc->max_length; - int h; /* heap index */ - int n, m; /* iterate over the tree elements */ - int bits; /* bit length */ - int xbits; /* extra bits */ - ush f; /* frequency */ - int overflow = 0; /* number of elements with bit length too large */ - - for (bits = 0; bits <= MAX_BITS; bits++) s->bl_count[bits] = 0; - - /* In a first pass, compute the optimal bit lengths (which may - * overflow in the case of the bit length tree). - */ - tree[s->heap[s->heap_max]].Len = 0; /* root of the heap */ - - for (h = s->heap_max+1; h < HEAP_SIZE; h++) { - n = s->heap[h]; - bits = tree[tree[n].Dad].Len + 1; - if (bits > max_length) bits = max_length, overflow++; - tree[n].Len = (ush)bits; - /* We overwrite tree[n].Dad which is no longer needed */ - - if (n > max_code) continue; /* not a leaf node */ - - s->bl_count[bits]++; - xbits = 0; - if (n >= base) xbits = extra[n-base]; - f = tree[n].Freq; - s->opt_len += (ulg)f * (bits + xbits); - if (stree) s->static_len += (ulg)f * (stree[n].Len + xbits); - } - if (overflow == 0) return; - - Trace((stderr,"\nbit length overflow\n")); - /* This happens for example on obj2 and pic of the Calgary corpus */ - - /* Find the first bit length which could increase: */ - do { - bits = max_length-1; - while (s->bl_count[bits] == 0) bits--; - s->bl_count[bits]--; /* move one leaf down the tree */ - s->bl_count[bits+1] += 2; /* move one overflow item as its brother */ - s->bl_count[max_length]--; - /* The brother of the overflow item also moves one step up, - * but this does not affect bl_count[max_length] - */ - overflow -= 2; - } while (overflow > 0); - - /* Now recompute all bit lengths, scanning in increasing frequency. - * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all - * lengths instead of fixing only the wrong ones. This idea is taken - * from 'ar' written by Haruhiko Okumura.) - */ - for (bits = max_length; bits != 0; bits--) { - n = s->bl_count[bits]; - while (n != 0) { - m = s->heap[--h]; - if (m > max_code) continue; - if ((unsigned) tree[m].Len != (unsigned) bits) { - Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits)); - s->opt_len += ((long)bits - (long)tree[m].Len) - *(long)tree[m].Freq; - tree[m].Len = (ush)bits; - } - n--; - } - } -} - -/* =========================================================================== - * Generate the codes for a given tree and bit counts (which need not be - * optimal). - * IN assertion: the array bl_count contains the bit length statistics for - * the given tree and the field len is set for all tree elements. - * OUT assertion: the field code is set for all tree elements of non - * zero code length. - */ -local void gen_codes (tree, max_code, bl_count) - ct_data *tree; /* the tree to decorate */ - int max_code; /* largest code with non zero frequency */ - ushf *bl_count; /* number of codes at each bit length */ -{ - ush next_code[MAX_BITS+1]; /* next code value for each bit length */ - ush code = 0; /* running code value */ - int bits; /* bit index */ - int n; /* code index */ - - /* The distribution counts are first used to generate the code values - * without bit reversal. - */ - for (bits = 1; bits <= MAX_BITS; bits++) { - next_code[bits] = code = (code + bl_count[bits-1]) << 1; - } - /* Check that the bit counts in bl_count are consistent. The last code - * must be all ones. - */ - Assert (code + bl_count[MAX_BITS]-1 == (1<dyn_tree; - const ct_data *stree = desc->stat_desc->static_tree; - int elems = desc->stat_desc->elems; - int n, m; /* iterate over heap elements */ - int max_code = -1; /* largest code with non zero frequency */ - int node; /* new node being created */ - - /* Construct the initial heap, with least frequent element in - * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. - * heap[0] is not used. - */ - s->heap_len = 0, s->heap_max = HEAP_SIZE; - - for (n = 0; n < elems; n++) { - if (tree[n].Freq != 0) { - s->heap[++(s->heap_len)] = max_code = n; - s->depth[n] = 0; - } else { - tree[n].Len = 0; - } - } - - /* The pkzip format requires that at least one distance code exists, - * and that at least one bit should be sent even if there is only one - * possible code. So to avoid special checks later on we force at least - * two codes of non zero frequency. - */ - while (s->heap_len < 2) { - node = s->heap[++(s->heap_len)] = (max_code < 2 ? ++max_code : 0); - tree[node].Freq = 1; - s->depth[node] = 0; - s->opt_len--; if (stree) s->static_len -= stree[node].Len; - /* node is 0 or 1 so it does not have extra bits */ - } - desc->max_code = max_code; - - /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, - * establish sub-heaps of increasing lengths: - */ - for (n = s->heap_len/2; n >= 1; n--) pqdownheap(s, tree, n); - - /* Construct the Huffman tree by repeatedly combining the least two - * frequent nodes. - */ - node = elems; /* next internal node of the tree */ - do { - pqremove(s, tree, n); /* n = node of least frequency */ - m = s->heap[SMALLEST]; /* m = node of next least frequency */ - - s->heap[--(s->heap_max)] = n; /* keep the nodes sorted by frequency */ - s->heap[--(s->heap_max)] = m; - - /* Create a new node father of n and m */ - tree[node].Freq = tree[n].Freq + tree[m].Freq; - s->depth[node] = (uch)((s->depth[n] >= s->depth[m] ? - s->depth[n] : s->depth[m]) + 1); - tree[n].Dad = tree[m].Dad = (ush)node; -#ifdef DUMP_BL_TREE - if (tree == s->bl_tree) { - fprintf(stderr,"\nnode %d(%d), sons %d(%d) %d(%d)", - node, tree[node].Freq, n, tree[n].Freq, m, tree[m].Freq); - } -#endif - /* and insert the new node in the heap */ - s->heap[SMALLEST] = node++; - pqdownheap(s, tree, SMALLEST); - - } while (s->heap_len >= 2); - - s->heap[--(s->heap_max)] = s->heap[SMALLEST]; - - /* At this point, the fields freq and dad are set. We can now - * generate the bit lengths. - */ - gen_bitlen(s, (tree_desc *)desc); - - /* The field len is now set, we can generate the bit codes */ - gen_codes ((ct_data *)tree, max_code, s->bl_count); -} - -/* =========================================================================== - * Scan a literal or distance tree to determine the frequencies of the codes - * in the bit length tree. - */ -local void scan_tree (s, tree, max_code) - deflate_state *s; - ct_data *tree; /* the tree to be scanned */ - int max_code; /* and its largest code of non zero frequency */ -{ - int n; /* iterates over all tree elements */ - int prevlen = -1; /* last emitted length */ - int curlen; /* length of current code */ - int nextlen = tree[0].Len; /* length of next code */ - int count = 0; /* repeat count of the current code */ - int max_count = 7; /* max repeat count */ - int min_count = 4; /* min repeat count */ - - if (nextlen == 0) max_count = 138, min_count = 3; - tree[max_code+1].Len = (ush)0xffff; /* guard */ - - for (n = 0; n <= max_code; n++) { - curlen = nextlen; nextlen = tree[n+1].Len; - if (++count < max_count && curlen == nextlen) { - continue; - } else if (count < min_count) { - s->bl_tree[curlen].Freq += count; - } else if (curlen != 0) { - if (curlen != prevlen) s->bl_tree[curlen].Freq++; - s->bl_tree[REP_3_6].Freq++; - } else if (count <= 10) { - s->bl_tree[REPZ_3_10].Freq++; - } else { - s->bl_tree[REPZ_11_138].Freq++; - } - count = 0; prevlen = curlen; - if (nextlen == 0) { - max_count = 138, min_count = 3; - } else if (curlen == nextlen) { - max_count = 6, min_count = 3; - } else { - max_count = 7, min_count = 4; - } - } -} - -/* =========================================================================== - * Send a literal or distance tree in compressed form, using the codes in - * bl_tree. - */ -local void send_tree (s, tree, max_code) - deflate_state *s; - ct_data *tree; /* the tree to be scanned */ - int max_code; /* and its largest code of non zero frequency */ -{ - int n; /* iterates over all tree elements */ - int prevlen = -1; /* last emitted length */ - int curlen; /* length of current code */ - int nextlen = tree[0].Len; /* length of next code */ - int count = 0; /* repeat count of the current code */ - int max_count = 7; /* max repeat count */ - int min_count = 4; /* min repeat count */ - - /* tree[max_code+1].Len = -1; */ /* guard already set */ - if (nextlen == 0) max_count = 138, min_count = 3; - - for (n = 0; n <= max_code; n++) { - curlen = nextlen; nextlen = tree[n+1].Len; - if (++count < max_count && curlen == nextlen) { - continue; - } else if (count < min_count) { - do { send_code(s, curlen, s->bl_tree); } while (--count != 0); - - } else if (curlen != 0) { - if (curlen != prevlen) { - send_code(s, curlen, s->bl_tree); count--; - } - Assert(count >= 3 && count <= 6, " 3_6?"); - send_code(s, REP_3_6, s->bl_tree); send_bits(s, count-3, 2); - - } else if (count <= 10) { - send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count-3, 3); - - } else { - send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count-11, 7); - } - count = 0; prevlen = curlen; - if (nextlen == 0) { - max_count = 138, min_count = 3; - } else if (curlen == nextlen) { - max_count = 6, min_count = 3; - } else { - max_count = 7, min_count = 4; - } - } -} - -/* =========================================================================== - * Construct the Huffman tree for the bit lengths and return the index in - * bl_order of the last bit length code to send. - */ -local int build_bl_tree(s) - deflate_state *s; -{ - int max_blindex; /* index of last bit length code of non zero freq */ - - /* Determine the bit length frequencies for literal and distance trees */ - scan_tree(s, (ct_data *)s->dyn_ltree, s->l_desc.max_code); - scan_tree(s, (ct_data *)s->dyn_dtree, s->d_desc.max_code); - - /* Build the bit length tree: */ - build_tree(s, (tree_desc *)(&(s->bl_desc))); - /* opt_len now includes the length of the tree representations, except - * the lengths of the bit lengths codes and the 5+5+4 bits for the counts. - */ - - /* Determine the number of bit length codes to send. The pkzip format - * requires that at least 4 bit length codes be sent. (appnote.txt says - * 3 but the actual value used is 4.) - */ - for (max_blindex = BL_CODES-1; max_blindex >= 3; max_blindex--) { - if (s->bl_tree[bl_order[max_blindex]].Len != 0) break; - } - /* Update opt_len to include the bit length tree and counts */ - s->opt_len += 3*(max_blindex+1) + 5+5+4; - Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", - s->opt_len, s->static_len)); - - return max_blindex; -} - -/* =========================================================================== - * Send the header for a block using dynamic Huffman trees: the counts, the - * lengths of the bit length codes, the literal tree and the distance tree. - * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. - */ -local void send_all_trees(s, lcodes, dcodes, blcodes) - deflate_state *s; - int lcodes, dcodes, blcodes; /* number of codes for each tree */ -{ - int rank; /* index in bl_order */ - - Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes"); - Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES, - "too many codes"); - Tracev((stderr, "\nbl counts: ")); - send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */ - send_bits(s, dcodes-1, 5); - send_bits(s, blcodes-4, 4); /* not -3 as stated in appnote.txt */ - for (rank = 0; rank < blcodes; rank++) { - Tracev((stderr, "\nbl code %2d ", bl_order[rank])); - send_bits(s, s->bl_tree[bl_order[rank]].Len, 3); - } - Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); - - send_tree(s, (ct_data *)s->dyn_ltree, lcodes-1); /* literal tree */ - Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); - - send_tree(s, (ct_data *)s->dyn_dtree, dcodes-1); /* distance tree */ - Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); -} - -/* =========================================================================== - * Send a stored block - */ -void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last) - deflate_state *s; - charf *buf; /* input block */ - ulg stored_len; /* length of input block */ - int last; /* one if this is the last block for a file */ -{ - send_bits(s, (STORED_BLOCK<<1)+last, 3); /* send block type */ -#ifdef DEBUG - s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L; - s->compressed_len += (stored_len + 4) << 3; -#endif - copy_block(s, buf, (unsigned)stored_len, 1); /* with header */ -} - -/* =========================================================================== - * Flush the bits in the bit buffer to pending output (leaves at most 7 bits) - */ -void ZLIB_INTERNAL _tr_flush_bits(s) - deflate_state *s; -{ - bi_flush(s); -} - -/* =========================================================================== - * Send one empty static block to give enough lookahead for inflate. - * This takes 10 bits, of which 7 may remain in the bit buffer. - */ -void ZLIB_INTERNAL _tr_align(s) - deflate_state *s; -{ - send_bits(s, STATIC_TREES<<1, 3); - send_code(s, END_BLOCK, static_ltree); -#ifdef DEBUG - s->compressed_len += 10L; /* 3 for block type, 7 for EOB */ -#endif - bi_flush(s); -} - -/* =========================================================================== - * Determine the best encoding for the current block: dynamic trees, static - * trees or store, and output the encoded block to the zip file. - */ -void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) - deflate_state *s; - charf *buf; /* input block, or NULL if too old */ - ulg stored_len; /* length of input block */ - int last; /* one if this is the last block for a file */ -{ - ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */ - int max_blindex = 0; /* index of last bit length code of non zero freq */ - - /* Build the Huffman trees unless a stored block is forced */ - if (s->level > 0) { - - /* Check if the file is binary or text */ - if (s->strm->data_type == Z_UNKNOWN) - s->strm->data_type = detect_data_type(s); - - /* Construct the literal and distance trees */ - build_tree(s, (tree_desc *)(&(s->l_desc))); - Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, - s->static_len)); - - build_tree(s, (tree_desc *)(&(s->d_desc))); - Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, - s->static_len)); - /* At this point, opt_len and static_len are the total bit lengths of - * the compressed block data, excluding the tree representations. - */ - - /* Build the bit length tree for the above two trees, and get the index - * in bl_order of the last bit length code to send. - */ - max_blindex = build_bl_tree(s); - - /* Determine the best encoding. Compute the block lengths in bytes. */ - opt_lenb = (s->opt_len+3+7)>>3; - static_lenb = (s->static_len+3+7)>>3; - - Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ", - opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len, - s->last_lit)); - - if (static_lenb <= opt_lenb) opt_lenb = static_lenb; - - } else { - Assert(buf != (char*)0, "lost buf"); - opt_lenb = static_lenb = stored_len + 5; /* force a stored block */ - } - -#ifdef FORCE_STORED - if (buf != (char*)0) { /* force stored block */ -#else - if (stored_len+4 <= opt_lenb && buf != (char*)0) { - /* 4: two words for the lengths */ -#endif - /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. - * Otherwise we can't have processed more than WSIZE input bytes since - * the last block flush, because compression would have been - * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to - * transform a block into a stored block. - */ - _tr_stored_block(s, buf, stored_len, last); - -#ifdef FORCE_STATIC - } else if (static_lenb >= 0) { /* force static trees */ -#else - } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) { -#endif - send_bits(s, (STATIC_TREES<<1)+last, 3); - compress_block(s, (const ct_data *)static_ltree, - (const ct_data *)static_dtree); -#ifdef DEBUG - s->compressed_len += 3 + s->static_len; -#endif - } else { - send_bits(s, (DYN_TREES<<1)+last, 3); - send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1, - max_blindex+1); - compress_block(s, (const ct_data *)s->dyn_ltree, - (const ct_data *)s->dyn_dtree); -#ifdef DEBUG - s->compressed_len += 3 + s->opt_len; -#endif - } - Assert (s->compressed_len == s->bits_sent, "bad compressed size"); - /* The above check is made mod 2^32, for files larger than 512 MB - * and uLong implemented on 32 bits. - */ - init_block(s); - - if (last) { - bi_windup(s); -#ifdef DEBUG - s->compressed_len += 7; /* align on byte boundary */ -#endif - } - Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3, - s->compressed_len-7*last)); -} - -/* =========================================================================== - * Save the match info and tally the frequency counts. Return true if - * the current block must be flushed. - */ -int ZLIB_INTERNAL _tr_tally (s, dist, lc) - deflate_state *s; - unsigned dist; /* distance of matched string */ - unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */ -{ - s->d_buf[s->last_lit] = (ush)dist; - s->l_buf[s->last_lit++] = (uch)lc; - if (dist == 0) { - /* lc is the unmatched char */ - s->dyn_ltree[lc].Freq++; - } else { - s->matches++; - /* Here, lc is the match length - MIN_MATCH */ - dist--; /* dist = match distance - 1 */ - Assert((ush)dist < (ush)MAX_DIST(s) && - (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) && - (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match"); - - s->dyn_ltree[_length_code[lc]+LITERALS+1].Freq++; - s->dyn_dtree[d_code(dist)].Freq++; - } - -#ifdef TRUNCATE_BLOCK - /* Try to guess if it is profitable to stop the current block here */ - if ((s->last_lit & 0x1fff) == 0 && s->level > 2) { - /* Compute an upper bound for the compressed length */ - ulg out_length = (ulg)s->last_lit*8L; - ulg in_length = (ulg)((long)s->strstart - s->block_start); - int dcode; - for (dcode = 0; dcode < D_CODES; dcode++) { - out_length += (ulg)s->dyn_dtree[dcode].Freq * - (5L+extra_dbits[dcode]); - } - out_length >>= 3; - Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ", - s->last_lit, in_length, out_length, - 100L - out_length*100L/in_length)); - if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1; - } -#endif - return (s->last_lit == s->lit_bufsize-1); - /* We avoid equality with lit_bufsize because of wraparound at 64K - * on 16 bit machines and because stored blocks are restricted to - * 64K-1 bytes. - */ -} - -/* =========================================================================== - * Send the block data compressed using the given Huffman trees - */ -local void compress_block(s, ltree, dtree) - deflate_state *s; - const ct_data *ltree; /* literal tree */ - const ct_data *dtree; /* distance tree */ -{ - unsigned dist; /* distance of matched string */ - int lc; /* match length or unmatched char (if dist == 0) */ - unsigned lx = 0; /* running index in l_buf */ - unsigned code; /* the code to send */ - int extra; /* number of extra bits to send */ - - if (s->last_lit != 0) do { - dist = s->d_buf[lx]; - lc = s->l_buf[lx++]; - if (dist == 0) { - send_code(s, lc, ltree); /* send a literal byte */ - Tracecv(isgraph(lc), (stderr," '%c' ", lc)); - } else { - /* Here, lc is the match length - MIN_MATCH */ - code = _length_code[lc]; - send_code(s, code+LITERALS+1, ltree); /* send the length code */ - extra = extra_lbits[code]; - if (extra != 0) { - lc -= base_length[code]; - send_bits(s, lc, extra); /* send the extra length bits */ - } - dist--; /* dist is now the match distance - 1 */ - code = d_code(dist); - Assert (code < D_CODES, "bad d_code"); - - send_code(s, code, dtree); /* send the distance code */ - extra = extra_dbits[code]; - if (extra != 0) { - dist -= base_dist[code]; - send_bits(s, dist, extra); /* send the extra distance bits */ - } - } /* literal or match pair ? */ - - /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */ - Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx, - "pendingBuf overflow"); - - } while (lx < s->last_lit); - - send_code(s, END_BLOCK, ltree); -} - -/* =========================================================================== - * Check if the data type is TEXT or BINARY, using the following algorithm: - * - TEXT if the two conditions below are satisfied: - * a) There are no non-portable control characters belonging to the - * "black list" (0..6, 14..25, 28..31). - * b) There is at least one printable character belonging to the - * "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). - * - BINARY otherwise. - * - The following partially-portable control characters form a - * "gray list" that is ignored in this detection algorithm: - * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}). - * IN assertion: the fields Freq of dyn_ltree are set. - */ -local int detect_data_type(s) - deflate_state *s; -{ - /* black_mask is the bit mask of black-listed bytes - * set bits 0..6, 14..25, and 28..31 - * 0xf3ffc07f = binary 11110011111111111100000001111111 - */ - unsigned long black_mask = 0xf3ffc07fUL; - int n; - - /* Check for non-textual ("black-listed") bytes. */ - for (n = 0; n <= 31; n++, black_mask >>= 1) - if ((black_mask & 1) && (s->dyn_ltree[n].Freq != 0)) - return Z_BINARY; - - /* Check for textual ("white-listed") bytes. */ - if (s->dyn_ltree[9].Freq != 0 || s->dyn_ltree[10].Freq != 0 - || s->dyn_ltree[13].Freq != 0) - return Z_TEXT; - for (n = 32; n < LITERALS; n++) - if (s->dyn_ltree[n].Freq != 0) - return Z_TEXT; - - /* There are no "black-listed" or "white-listed" bytes: - * this stream either is empty or has tolerated ("gray-listed") bytes only. - */ - return Z_BINARY; -} - -/* =========================================================================== - * Reverse the first len bits of a code, using straightforward code (a faster - * method would use a table) - * IN assertion: 1 <= len <= 15 - */ -local unsigned bi_reverse(code, len) - unsigned code; /* the value to invert */ - int len; /* its bit length */ -{ - register unsigned res = 0; - do { - res |= code & 1; - code >>= 1, res <<= 1; - } while (--len > 0); - return res >> 1; -} - -/* =========================================================================== - * Flush the bit buffer, keeping at most 7 bits in it. - */ -local void bi_flush(s) - deflate_state *s; -{ - if (s->bi_valid == 16) { - put_short(s, s->bi_buf); - s->bi_buf = 0; - s->bi_valid = 0; - } else if (s->bi_valid >= 8) { - put_byte(s, (Byte)s->bi_buf); - s->bi_buf >>= 8; - s->bi_valid -= 8; - } -} - -/* =========================================================================== - * Flush the bit buffer and align the output on a byte boundary - */ -local void bi_windup(s) - deflate_state *s; -{ - if (s->bi_valid > 8) { - put_short(s, s->bi_buf); - } else if (s->bi_valid > 0) { - put_byte(s, (Byte)s->bi_buf); - } - s->bi_buf = 0; - s->bi_valid = 0; -#ifdef DEBUG - s->bits_sent = (s->bits_sent+7) & ~7; -#endif -} - -/* =========================================================================== - * Copy a stored block, storing first the length and its - * one's complement if requested. - */ -local void copy_block(s, buf, len, header) - deflate_state *s; - charf *buf; /* the input data */ - unsigned len; /* its length */ - int header; /* true if block header must be written */ -{ - bi_windup(s); /* align on byte boundary */ - - if (header) { - put_short(s, (ush)len); - put_short(s, (ush)~len); -#ifdef DEBUG - s->bits_sent += 2*16; -#endif - } -#ifdef DEBUG - s->bits_sent += (ulg)len<<3; -#endif - while (len--) { - put_byte(s, *buf++); - } -} diff --git a/platform/win32/msvc/external/zlib/trees.h b/platform/win32/msvc/external/zlib/trees.h deleted file mode 100644 index d35639d82a2..00000000000 --- a/platform/win32/msvc/external/zlib/trees.h +++ /dev/null @@ -1,128 +0,0 @@ -/* header created automatically with -DGEN_TREES_H */ - -local const ct_data static_ltree[L_CODES+2] = { -{{ 12},{ 8}}, {{140},{ 8}}, {{ 76},{ 8}}, {{204},{ 8}}, {{ 44},{ 8}}, -{{172},{ 8}}, {{108},{ 8}}, {{236},{ 8}}, {{ 28},{ 8}}, {{156},{ 8}}, -{{ 92},{ 8}}, {{220},{ 8}}, {{ 60},{ 8}}, {{188},{ 8}}, {{124},{ 8}}, -{{252},{ 8}}, {{ 2},{ 8}}, {{130},{ 8}}, {{ 66},{ 8}}, {{194},{ 8}}, -{{ 34},{ 8}}, {{162},{ 8}}, {{ 98},{ 8}}, {{226},{ 8}}, {{ 18},{ 8}}, -{{146},{ 8}}, {{ 82},{ 8}}, {{210},{ 8}}, {{ 50},{ 8}}, {{178},{ 8}}, -{{114},{ 8}}, {{242},{ 8}}, {{ 10},{ 8}}, {{138},{ 8}}, {{ 74},{ 8}}, -{{202},{ 8}}, {{ 42},{ 8}}, {{170},{ 8}}, {{106},{ 8}}, {{234},{ 8}}, -{{ 26},{ 8}}, {{154},{ 8}}, {{ 90},{ 8}}, {{218},{ 8}}, {{ 58},{ 8}}, -{{186},{ 8}}, {{122},{ 8}}, {{250},{ 8}}, {{ 6},{ 8}}, {{134},{ 8}}, -{{ 70},{ 8}}, {{198},{ 8}}, {{ 38},{ 8}}, {{166},{ 8}}, {{102},{ 8}}, -{{230},{ 8}}, {{ 22},{ 8}}, {{150},{ 8}}, {{ 86},{ 8}}, {{214},{ 8}}, -{{ 54},{ 8}}, {{182},{ 8}}, {{118},{ 8}}, {{246},{ 8}}, {{ 14},{ 8}}, -{{142},{ 8}}, {{ 78},{ 8}}, {{206},{ 8}}, {{ 46},{ 8}}, {{174},{ 8}}, -{{110},{ 8}}, {{238},{ 8}}, {{ 30},{ 8}}, {{158},{ 8}}, {{ 94},{ 8}}, -{{222},{ 8}}, {{ 62},{ 8}}, {{190},{ 8}}, {{126},{ 8}}, {{254},{ 8}}, -{{ 1},{ 8}}, {{129},{ 8}}, {{ 65},{ 8}}, {{193},{ 8}}, {{ 33},{ 8}}, -{{161},{ 8}}, {{ 97},{ 8}}, {{225},{ 8}}, {{ 17},{ 8}}, {{145},{ 8}}, -{{ 81},{ 8}}, {{209},{ 8}}, {{ 49},{ 8}}, {{177},{ 8}}, {{113},{ 8}}, -{{241},{ 8}}, {{ 9},{ 8}}, {{137},{ 8}}, {{ 73},{ 8}}, {{201},{ 8}}, -{{ 41},{ 8}}, {{169},{ 8}}, {{105},{ 8}}, {{233},{ 8}}, {{ 25},{ 8}}, -{{153},{ 8}}, {{ 89},{ 8}}, {{217},{ 8}}, {{ 57},{ 8}}, {{185},{ 8}}, -{{121},{ 8}}, {{249},{ 8}}, {{ 5},{ 8}}, {{133},{ 8}}, {{ 69},{ 8}}, -{{197},{ 8}}, {{ 37},{ 8}}, {{165},{ 8}}, {{101},{ 8}}, {{229},{ 8}}, -{{ 21},{ 8}}, {{149},{ 8}}, {{ 85},{ 8}}, {{213},{ 8}}, {{ 53},{ 8}}, -{{181},{ 8}}, {{117},{ 8}}, {{245},{ 8}}, {{ 13},{ 8}}, {{141},{ 8}}, -{{ 77},{ 8}}, {{205},{ 8}}, {{ 45},{ 8}}, {{173},{ 8}}, {{109},{ 8}}, -{{237},{ 8}}, {{ 29},{ 8}}, {{157},{ 8}}, {{ 93},{ 8}}, {{221},{ 8}}, -{{ 61},{ 8}}, {{189},{ 8}}, {{125},{ 8}}, {{253},{ 8}}, {{ 19},{ 9}}, -{{275},{ 9}}, {{147},{ 9}}, {{403},{ 9}}, {{ 83},{ 9}}, {{339},{ 9}}, -{{211},{ 9}}, {{467},{ 9}}, {{ 51},{ 9}}, {{307},{ 9}}, {{179},{ 9}}, -{{435},{ 9}}, {{115},{ 9}}, {{371},{ 9}}, {{243},{ 9}}, {{499},{ 9}}, -{{ 11},{ 9}}, {{267},{ 9}}, {{139},{ 9}}, {{395},{ 9}}, {{ 75},{ 9}}, -{{331},{ 9}}, {{203},{ 9}}, {{459},{ 9}}, {{ 43},{ 9}}, {{299},{ 9}}, -{{171},{ 9}}, {{427},{ 9}}, {{107},{ 9}}, {{363},{ 9}}, {{235},{ 9}}, -{{491},{ 9}}, {{ 27},{ 9}}, {{283},{ 9}}, {{155},{ 9}}, {{411},{ 9}}, -{{ 91},{ 9}}, {{347},{ 9}}, {{219},{ 9}}, {{475},{ 9}}, {{ 59},{ 9}}, -{{315},{ 9}}, {{187},{ 9}}, {{443},{ 9}}, {{123},{ 9}}, {{379},{ 9}}, -{{251},{ 9}}, {{507},{ 9}}, {{ 7},{ 9}}, {{263},{ 9}}, {{135},{ 9}}, -{{391},{ 9}}, {{ 71},{ 9}}, {{327},{ 9}}, {{199},{ 9}}, {{455},{ 9}}, -{{ 39},{ 9}}, {{295},{ 9}}, {{167},{ 9}}, {{423},{ 9}}, {{103},{ 9}}, -{{359},{ 9}}, {{231},{ 9}}, {{487},{ 9}}, {{ 23},{ 9}}, {{279},{ 9}}, -{{151},{ 9}}, {{407},{ 9}}, {{ 87},{ 9}}, {{343},{ 9}}, {{215},{ 9}}, -{{471},{ 9}}, {{ 55},{ 9}}, {{311},{ 9}}, {{183},{ 9}}, {{439},{ 9}}, -{{119},{ 9}}, {{375},{ 9}}, {{247},{ 9}}, {{503},{ 9}}, {{ 15},{ 9}}, -{{271},{ 9}}, {{143},{ 9}}, {{399},{ 9}}, {{ 79},{ 9}}, {{335},{ 9}}, -{{207},{ 9}}, {{463},{ 9}}, {{ 47},{ 9}}, {{303},{ 9}}, {{175},{ 9}}, -{{431},{ 9}}, {{111},{ 9}}, {{367},{ 9}}, {{239},{ 9}}, {{495},{ 9}}, -{{ 31},{ 9}}, {{287},{ 9}}, {{159},{ 9}}, {{415},{ 9}}, {{ 95},{ 9}}, -{{351},{ 9}}, {{223},{ 9}}, {{479},{ 9}}, {{ 63},{ 9}}, {{319},{ 9}}, -{{191},{ 9}}, {{447},{ 9}}, {{127},{ 9}}, {{383},{ 9}}, {{255},{ 9}}, -{{511},{ 9}}, {{ 0},{ 7}}, {{ 64},{ 7}}, {{ 32},{ 7}}, {{ 96},{ 7}}, -{{ 16},{ 7}}, {{ 80},{ 7}}, {{ 48},{ 7}}, {{112},{ 7}}, {{ 8},{ 7}}, -{{ 72},{ 7}}, {{ 40},{ 7}}, {{104},{ 7}}, {{ 24},{ 7}}, {{ 88},{ 7}}, -{{ 56},{ 7}}, {{120},{ 7}}, {{ 4},{ 7}}, {{ 68},{ 7}}, {{ 36},{ 7}}, -{{100},{ 7}}, {{ 20},{ 7}}, {{ 84},{ 7}}, {{ 52},{ 7}}, {{116},{ 7}}, -{{ 3},{ 8}}, {{131},{ 8}}, {{ 67},{ 8}}, {{195},{ 8}}, {{ 35},{ 8}}, -{{163},{ 8}}, {{ 99},{ 8}}, {{227},{ 8}} -}; - -local const ct_data static_dtree[D_CODES] = { -{{ 0},{ 5}}, {{16},{ 5}}, {{ 8},{ 5}}, {{24},{ 5}}, {{ 4},{ 5}}, -{{20},{ 5}}, {{12},{ 5}}, {{28},{ 5}}, {{ 2},{ 5}}, {{18},{ 5}}, -{{10},{ 5}}, {{26},{ 5}}, {{ 6},{ 5}}, {{22},{ 5}}, {{14},{ 5}}, -{{30},{ 5}}, {{ 1},{ 5}}, {{17},{ 5}}, {{ 9},{ 5}}, {{25},{ 5}}, -{{ 5},{ 5}}, {{21},{ 5}}, {{13},{ 5}}, {{29},{ 5}}, {{ 3},{ 5}}, -{{19},{ 5}}, {{11},{ 5}}, {{27},{ 5}}, {{ 7},{ 5}}, {{23},{ 5}} -}; - -const uch ZLIB_INTERNAL _dist_code[DIST_CODE_LEN] = { - 0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, - 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, -10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, -11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, -12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, -13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, -13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, -14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, -14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, -14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, -15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, -15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, -15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17, -18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, -23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, -24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, -26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, -26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, -27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, -27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, -28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, -28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, -28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, -29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, -29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, -29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29 -}; - -const uch ZLIB_INTERNAL _length_code[MAX_MATCH-MIN_MATCH+1]= { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, -13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, -17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, -19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, -21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, -22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, -23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, -24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, -25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, -25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, -26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, -26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, -27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28 -}; - -local const int base_length[LENGTH_CODES] = { -0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, -64, 80, 96, 112, 128, 160, 192, 224, 0 -}; - -local const int base_dist[D_CODES] = { - 0, 1, 2, 3, 4, 6, 8, 12, 16, 24, - 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, - 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576 -}; - diff --git a/platform/win32/msvc/external/zlib/uncompr.c b/platform/win32/msvc/external/zlib/uncompr.c deleted file mode 100644 index 242e9493dff..00000000000 --- a/platform/win32/msvc/external/zlib/uncompr.c +++ /dev/null @@ -1,59 +0,0 @@ -/* uncompr.c -- decompress a memory buffer - * Copyright (C) 1995-2003, 2010 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#define ZLIB_INTERNAL -#include "zlib.h" - -/* =========================================================================== - Decompresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total - size of the destination buffer, which must be large enough to hold the - entire uncompressed data. (The size of the uncompressed data must have - been saved previously by the compressor and transmitted to the decompressor - by some mechanism outside the scope of this compression library.) - Upon exit, destLen is the actual size of the compressed buffer. - - uncompress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer, or Z_DATA_ERROR if the input data was corrupted. -*/ -int ZEXPORT uncompress (dest, destLen, source, sourceLen) - Bytef *dest; - uLongf *destLen; - const Bytef *source; - uLong sourceLen; -{ - z_stream stream; - int err; - - stream.next_in = (z_const Bytef *)source; - stream.avail_in = (uInt)sourceLen; - /* Check for source > 64K on 16-bit machine: */ - if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR; - - stream.next_out = dest; - stream.avail_out = (uInt)*destLen; - if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR; - - stream.zalloc = (alloc_func)0; - stream.zfree = (free_func)0; - - err = inflateInit(&stream); - if (err != Z_OK) return err; - - err = inflate(&stream, Z_FINISH); - if (err != Z_STREAM_END) { - inflateEnd(&stream); - if (err == Z_NEED_DICT || (err == Z_BUF_ERROR && stream.avail_in == 0)) - return Z_DATA_ERROR; - return err; - } - *destLen = stream.total_out; - - err = inflateEnd(&stream); - return err; -} diff --git a/platform/win32/msvc/external/zlib/watcom/watcom_f.mak b/platform/win32/msvc/external/zlib/watcom/watcom_f.mak deleted file mode 100644 index 37f4d74c19c..00000000000 --- a/platform/win32/msvc/external/zlib/watcom/watcom_f.mak +++ /dev/null @@ -1,43 +0,0 @@ -# Makefile for zlib -# OpenWatcom flat model -# Last updated: 28-Dec-2005 - -# To use, do "wmake -f watcom_f.mak" - -C_SOURCE = adler32.c compress.c crc32.c deflate.c & - gzclose.c gzlib.c gzread.c gzwrite.c & - infback.c inffast.c inflate.c inftrees.c & - trees.c uncompr.c zutil.c - -OBJS = adler32.obj compress.obj crc32.obj deflate.obj & - gzclose.obj gzlib.obj gzread.obj gzwrite.obj & - infback.obj inffast.obj inflate.obj inftrees.obj & - trees.obj uncompr.obj zutil.obj - -CC = wcc386 -LINKER = wcl386 -CFLAGS = -zq -mf -3r -fp3 -s -bt=dos -oilrtfm -fr=nul -wx -ZLIB_LIB = zlib_f.lib - -.C.OBJ: - $(CC) $(CFLAGS) $[@ - -all: $(ZLIB_LIB) example.exe minigzip.exe - -$(ZLIB_LIB): $(OBJS) - wlib -b -c $(ZLIB_LIB) -+adler32.obj -+compress.obj -+crc32.obj - wlib -b -c $(ZLIB_LIB) -+gzclose.obj -+gzlib.obj -+gzread.obj -+gzwrite.obj - wlib -b -c $(ZLIB_LIB) -+deflate.obj -+infback.obj - wlib -b -c $(ZLIB_LIB) -+inffast.obj -+inflate.obj -+inftrees.obj - wlib -b -c $(ZLIB_LIB) -+trees.obj -+uncompr.obj -+zutil.obj - -example.exe: $(ZLIB_LIB) example.obj - $(LINKER) -ldos32a -fe=example.exe example.obj $(ZLIB_LIB) - -minigzip.exe: $(ZLIB_LIB) minigzip.obj - $(LINKER) -ldos32a -fe=minigzip.exe minigzip.obj $(ZLIB_LIB) - -clean: .SYMBOLIC - del *.obj - del $(ZLIB_LIB) - @echo Cleaning done diff --git a/platform/win32/msvc/external/zlib/watcom/watcom_l.mak b/platform/win32/msvc/external/zlib/watcom/watcom_l.mak deleted file mode 100644 index 193eed7b318..00000000000 --- a/platform/win32/msvc/external/zlib/watcom/watcom_l.mak +++ /dev/null @@ -1,43 +0,0 @@ -# Makefile for zlib -# OpenWatcom large model -# Last updated: 28-Dec-2005 - -# To use, do "wmake -f watcom_l.mak" - -C_SOURCE = adler32.c compress.c crc32.c deflate.c & - gzclose.c gzlib.c gzread.c gzwrite.c & - infback.c inffast.c inflate.c inftrees.c & - trees.c uncompr.c zutil.c - -OBJS = adler32.obj compress.obj crc32.obj deflate.obj & - gzclose.obj gzlib.obj gzread.obj gzwrite.obj & - infback.obj inffast.obj inflate.obj inftrees.obj & - trees.obj uncompr.obj zutil.obj - -CC = wcc -LINKER = wcl -CFLAGS = -zq -ml -s -bt=dos -oilrtfm -fr=nul -wx -ZLIB_LIB = zlib_l.lib - -.C.OBJ: - $(CC) $(CFLAGS) $[@ - -all: $(ZLIB_LIB) example.exe minigzip.exe - -$(ZLIB_LIB): $(OBJS) - wlib -b -c $(ZLIB_LIB) -+adler32.obj -+compress.obj -+crc32.obj - wlib -b -c $(ZLIB_LIB) -+gzclose.obj -+gzlib.obj -+gzread.obj -+gzwrite.obj - wlib -b -c $(ZLIB_LIB) -+deflate.obj -+infback.obj - wlib -b -c $(ZLIB_LIB) -+inffast.obj -+inflate.obj -+inftrees.obj - wlib -b -c $(ZLIB_LIB) -+trees.obj -+uncompr.obj -+zutil.obj - -example.exe: $(ZLIB_LIB) example.obj - $(LINKER) -fe=example.exe example.obj $(ZLIB_LIB) - -minigzip.exe: $(ZLIB_LIB) minigzip.obj - $(LINKER) -fe=minigzip.exe minigzip.obj $(ZLIB_LIB) - -clean: .SYMBOLIC - del *.obj - del $(ZLIB_LIB) - @echo Cleaning done diff --git a/platform/win32/msvc/external/zlib/win32/DLL_FAQ.txt b/platform/win32/msvc/external/zlib/win32/DLL_FAQ.txt deleted file mode 100644 index 12c009018c3..00000000000 --- a/platform/win32/msvc/external/zlib/win32/DLL_FAQ.txt +++ /dev/null @@ -1,397 +0,0 @@ - - Frequently Asked Questions about ZLIB1.DLL - - -This document describes the design, the rationale, and the usage -of the official DLL build of zlib, named ZLIB1.DLL. If you have -general questions about zlib, you should see the file "FAQ" found -in the zlib distribution, or at the following location: - http://www.gzip.org/zlib/zlib_faq.html - - - 1. What is ZLIB1.DLL, and how can I get it? - - - ZLIB1.DLL is the official build of zlib as a DLL. - (Please remark the character '1' in the name.) - - Pointers to a precompiled ZLIB1.DLL can be found in the zlib - web site at: - http://www.zlib.net/ - - Applications that link to ZLIB1.DLL can rely on the following - specification: - - * The exported symbols are exclusively defined in the source - files "zlib.h" and "zlib.def", found in an official zlib - source distribution. - * The symbols are exported by name, not by ordinal. - * The exported names are undecorated. - * The calling convention of functions is "C" (CDECL). - * The ZLIB1.DLL binary is linked to MSVCRT.DLL. - - The archive in which ZLIB1.DLL is bundled contains compiled - test programs that must run with a valid build of ZLIB1.DLL. - It is recommended to download the prebuilt DLL from the zlib - web site, instead of building it yourself, to avoid potential - incompatibilities that could be introduced by your compiler - and build settings. If you do build the DLL yourself, please - make sure that it complies with all the above requirements, - and it runs with the precompiled test programs, bundled with - the original ZLIB1.DLL distribution. - - If, for any reason, you need to build an incompatible DLL, - please use a different file name. - - - 2. Why did you change the name of the DLL to ZLIB1.DLL? - What happened to the old ZLIB.DLL? - - - The old ZLIB.DLL, built from zlib-1.1.4 or earlier, required - compilation settings that were incompatible to those used by - a static build. The DLL settings were supposed to be enabled - by defining the macro ZLIB_DLL, before including "zlib.h". - Incorrect handling of this macro was silently accepted at - build time, resulting in two major problems: - - * ZLIB_DLL was missing from the old makefile. When building - the DLL, not all people added it to the build options. In - consequence, incompatible incarnations of ZLIB.DLL started - to circulate around the net. - - * When switching from using the static library to using the - DLL, applications had to define the ZLIB_DLL macro and - to recompile all the sources that contained calls to zlib - functions. Failure to do so resulted in creating binaries - that were unable to run with the official ZLIB.DLL build. - - The only possible solution that we could foresee was to make - a binary-incompatible change in the DLL interface, in order to - remove the dependency on the ZLIB_DLL macro, and to release - the new DLL under a different name. - - We chose the name ZLIB1.DLL, where '1' indicates the major - zlib version number. We hope that we will not have to break - the binary compatibility again, at least not as long as the - zlib-1.x series will last. - - There is still a ZLIB_DLL macro, that can trigger a more - efficient build and use of the DLL, but compatibility no - longer dependents on it. - - - 3. Can I build ZLIB.DLL from the new zlib sources, and replace - an old ZLIB.DLL, that was built from zlib-1.1.4 or earlier? - - - In principle, you can do it by assigning calling convention - keywords to the macros ZEXPORT and ZEXPORTVA. In practice, - it depends on what you mean by "an old ZLIB.DLL", because the - old DLL exists in several mutually-incompatible versions. - You have to find out first what kind of calling convention is - being used in your particular ZLIB.DLL build, and to use the - same one in the new build. If you don't know what this is all - about, you might be better off if you would just leave the old - DLL intact. - - - 4. Can I compile my application using the new zlib interface, and - link it to an old ZLIB.DLL, that was built from zlib-1.1.4 or - earlier? - - - The official answer is "no"; the real answer depends again on - what kind of ZLIB.DLL you have. Even if you are lucky, this - course of action is unreliable. - - If you rebuild your application and you intend to use a newer - version of zlib (post- 1.1.4), it is strongly recommended to - link it to the new ZLIB1.DLL. - - - 5. Why are the zlib symbols exported by name, and not by ordinal? - - - Although exporting symbols by ordinal is a little faster, it - is risky. Any single glitch in the maintenance or use of the - DEF file that contains the ordinals can result in incompatible - builds and frustrating crashes. Simply put, the benefits of - exporting symbols by ordinal do not justify the risks. - - Technically, it should be possible to maintain ordinals in - the DEF file, and still export the symbols by name. Ordinals - exist in every DLL, and even if the dynamic linking performed - at the DLL startup is searching for names, ordinals serve as - hints, for a faster name lookup. However, if the DEF file - contains ordinals, the Microsoft linker automatically builds - an implib that will cause the executables linked to it to use - those ordinals, and not the names. It is interesting to - notice that the GNU linker for Win32 does not suffer from this - problem. - - It is possible to avoid the DEF file if the exported symbols - are accompanied by a "__declspec(dllexport)" attribute in the - source files. You can do this in zlib by predefining the - ZLIB_DLL macro. - - - 6. I see that the ZLIB1.DLL functions use the "C" (CDECL) calling - convention. Why not use the STDCALL convention? - STDCALL is the standard convention in Win32, and I need it in - my Visual Basic project! - - (For readability, we use CDECL to refer to the convention - triggered by the "__cdecl" keyword, STDCALL to refer to - the convention triggered by "__stdcall", and FASTCALL to - refer to the convention triggered by "__fastcall".) - - - Most of the native Windows API functions (without varargs) use - indeed the WINAPI convention (which translates to STDCALL in - Win32), but the standard C functions use CDECL. If a user - application is intrinsically tied to the Windows API (e.g. - it calls native Windows API functions such as CreateFile()), - sometimes it makes sense to decorate its own functions with - WINAPI. But if ANSI C or POSIX portability is a goal (e.g. - it calls standard C functions such as fopen()), it is not a - sound decision to request the inclusion of , or to - use non-ANSI constructs, for the sole purpose to make the user - functions STDCALL-able. - - The functionality offered by zlib is not in the category of - "Windows functionality", but is more like "C functionality". - - Technically, STDCALL is not bad; in fact, it is slightly - faster than CDECL, and it works with variable-argument - functions, just like CDECL. It is unfortunate that, in spite - of using STDCALL in the Windows API, it is not the default - convention used by the C compilers that run under Windows. - The roots of the problem reside deep inside the unsafety of - the K&R-style function prototypes, where the argument types - are not specified; but that is another story for another day. - - The remaining fact is that CDECL is the default convention. - Even if an explicit convention is hard-coded into the function - prototypes inside C headers, problems may appear. The - necessity to expose the convention in users' callbacks is one - of these problems. - - The calling convention issues are also important when using - zlib in other programming languages. Some of them, like Ada - (GNAT) and Fortran (GNU G77), have C bindings implemented - initially on Unix, and relying on the C calling convention. - On the other hand, the pre- .NET versions of Microsoft Visual - Basic require STDCALL, while Borland Delphi prefers, although - it does not require, FASTCALL. - - In fairness to all possible uses of zlib outside the C - programming language, we choose the default "C" convention. - Anyone interested in different bindings or conventions is - encouraged to maintain specialized projects. The "contrib/" - directory from the zlib distribution already holds a couple - of foreign bindings, such as Ada, C++, and Delphi. - - - 7. I need a DLL for my Visual Basic project. What can I do? - - - Define the ZLIB_WINAPI macro before including "zlib.h", when - building both the DLL and the user application (except that - you don't need to define anything when using the DLL in Visual - Basic). The ZLIB_WINAPI macro will switch on the WINAPI - (STDCALL) convention. The name of this DLL must be different - than the official ZLIB1.DLL. - - Gilles Vollant has contributed a build named ZLIBWAPI.DLL, - with the ZLIB_WINAPI macro turned on, and with the minizip - functionality built in. For more information, please read - the notes inside "contrib/vstudio/readme.txt", found in the - zlib distribution. - - - 8. I need to use zlib in my Microsoft .NET project. What can I - do? - - - Henrik Ravn has contributed a .NET wrapper around zlib. Look - into contrib/dotzlib/, inside the zlib distribution. - - - 9. If my application uses ZLIB1.DLL, should I link it to - MSVCRT.DLL? Why? - - - It is not required, but it is recommended to link your - application to MSVCRT.DLL, if it uses ZLIB1.DLL. - - The executables (.EXE, .DLL, etc.) that are involved in the - same process and are using the C run-time library (i.e. they - are calling standard C functions), must link to the same - library. There are several libraries in the Win32 system: - CRTDLL.DLL, MSVCRT.DLL, the static C libraries, etc. - Since ZLIB1.DLL is linked to MSVCRT.DLL, the executables that - depend on it should also be linked to MSVCRT.DLL. - - -10. Why are you saying that ZLIB1.DLL and my application should - be linked to the same C run-time (CRT) library? I linked my - application and my DLLs to different C libraries (e.g. my - application to a static library, and my DLLs to MSVCRT.DLL), - and everything works fine. - - - If a user library invokes only pure Win32 API (accessible via - and the related headers), its DLL build will work - in any context. But if this library invokes standard C API, - things get more complicated. - - There is a single Win32 library in a Win32 system. Every - function in this library resides in a single DLL module, that - is safe to call from anywhere. On the other hand, there are - multiple versions of the C library, and each of them has its - own separate internal state. Standalone executables and user - DLLs that call standard C functions must link to a C run-time - (CRT) library, be it static or shared (DLL). Intermixing - occurs when an executable (not necessarily standalone) and a - DLL are linked to different CRTs, and both are running in the - same process. - - Intermixing multiple CRTs is possible, as long as their - internal states are kept intact. The Microsoft Knowledge Base - articles KB94248 "HOWTO: Use the C Run-Time" and KB140584 - "HOWTO: Link with the Correct C Run-Time (CRT) Library" - mention the potential problems raised by intermixing. - - If intermixing works for you, it's because your application - and DLLs are avoiding the corruption of each of the CRTs' - internal states, maybe by careful design, or maybe by fortune. - - Also note that linking ZLIB1.DLL to non-Microsoft CRTs, such - as those provided by Borland, raises similar problems. - - -11. Why are you linking ZLIB1.DLL to MSVCRT.DLL? - - - MSVCRT.DLL exists on every Windows 95 with a new service pack - installed, or with Microsoft Internet Explorer 4 or later, and - on all other Windows 4.x or later (Windows 98, Windows NT 4, - or later). It is freely distributable; if not present in the - system, it can be downloaded from Microsoft or from other - software provider for free. - - The fact that MSVCRT.DLL does not exist on a virgin Windows 95 - is not so problematic. Windows 95 is scarcely found nowadays, - Microsoft ended its support a long time ago, and many recent - applications from various vendors, including Microsoft, do not - even run on it. Furthermore, no serious user should run - Windows 95 without a proper update installed. - - -12. Why are you not linking ZLIB1.DLL to - <> ? - - - We considered and abandoned the following alternatives: - - * Linking ZLIB1.DLL to a static C library (LIBC.LIB, or - LIBCMT.LIB) is not a good option. People are using the DLL - mainly to save disk space. If you are linking your program - to a static C library, you may as well consider linking zlib - in statically, too. - - * Linking ZLIB1.DLL to CRTDLL.DLL looks appealing, because - CRTDLL.DLL is present on every Win32 installation. - Unfortunately, it has a series of problems: it does not - work properly with Microsoft's C++ libraries, it does not - provide support for 64-bit file offsets, (and so on...), - and Microsoft discontinued its support a long time ago. - - * Linking ZLIB1.DLL to MSVCR70.DLL or MSVCR71.DLL, supplied - with the Microsoft .NET platform, and Visual C++ 7.0/7.1, - raises problems related to the status of ZLIB1.DLL as a - system component. According to the Microsoft Knowledge Base - article KB326922 "INFO: Redistribution of the Shared C - Runtime Component in Visual C++ .NET", MSVCR70.DLL and - MSVCR71.DLL are not supposed to function as system DLLs, - because they may clash with MSVCRT.DLL. Instead, the - application's installer is supposed to put these DLLs - (if needed) in the application's private directory. - If ZLIB1.DLL depends on a non-system runtime, it cannot - function as a redistributable system component. - - * Linking ZLIB1.DLL to non-Microsoft runtimes, such as - Borland's, or Cygwin's, raises problems related to the - reliable presence of these runtimes on Win32 systems. - It's easier to let the DLL build of zlib up to the people - who distribute these runtimes, and who may proceed as - explained in the answer to Question 14. - - -13. If ZLIB1.DLL cannot be linked to MSVCR70.DLL or MSVCR71.DLL, - how can I build/use ZLIB1.DLL in Microsoft Visual C++ 7.0 - (Visual Studio .NET) or newer? - - - Due to the problems explained in the Microsoft Knowledge Base - article KB326922 (see the previous answer), the C runtime that - comes with the VC7 environment is no longer considered a - system component. That is, it should not be assumed that this - runtime exists, or may be installed in a system directory. - Since ZLIB1.DLL is supposed to be a system component, it may - not depend on a non-system component. - - In order to link ZLIB1.DLL and your application to MSVCRT.DLL - in VC7, you need the library of Visual C++ 6.0 or older. If - you don't have this library at hand, it's probably best not to - use ZLIB1.DLL. - - We are hoping that, in the future, Microsoft will provide a - way to build applications linked to a proper system runtime, - from the Visual C++ environment. Until then, you have a - couple of alternatives, such as linking zlib in statically. - If your application requires dynamic linking, you may proceed - as explained in the answer to Question 14. - - -14. I need to link my own DLL build to a CRT different than - MSVCRT.DLL. What can I do? - - - Feel free to rebuild the DLL from the zlib sources, and link - it the way you want. You should, however, clearly state that - your build is unofficial. You should give it a different file - name, and/or install it in a private directory that can be - accessed by your application only, and is not visible to the - others (i.e. it's neither in the PATH, nor in the SYSTEM or - SYSTEM32 directories). Otherwise, your build may clash with - applications that link to the official build. - - For example, in Cygwin, zlib is linked to the Cygwin runtime - CYGWIN1.DLL, and it is distributed under the name CYGZ.DLL. - - -15. May I include additional pieces of code that I find useful, - link them in ZLIB1.DLL, and export them? - - - No. A legitimate build of ZLIB1.DLL must not include code - that does not originate from the official zlib source code. - But you can make your own private DLL build, under a different - file name, as suggested in the previous answer. - - For example, zlib is a part of the VCL library, distributed - with Borland Delphi and C++ Builder. The DLL build of VCL - is a redistributable file, named VCLxx.DLL. - - -16. May I remove some functionality out of ZLIB1.DLL, by enabling - macros like NO_GZCOMPRESS or NO_GZIP at compile time? - - - No. A legitimate build of ZLIB1.DLL must provide the complete - zlib functionality, as implemented in the official zlib source - code. But you can make your own private DLL build, under a - different file name, as suggested in the previous answer. - - -17. I made my own ZLIB1.DLL build. Can I test it for compliance? - - - We prefer that you download the official DLL from the zlib - web site. If you need something peculiar from this DLL, you - can send your suggestion to the zlib mailing list. - - However, in case you do rebuild the DLL yourself, you can run - it with the test programs found in the DLL distribution. - Running these test programs is not a guarantee of compliance, - but a failure can imply a detected problem. - -** - -This document is written and maintained by -Cosmin Truta diff --git a/platform/win32/msvc/external/zlib/win32/Makefile.bor b/platform/win32/msvc/external/zlib/win32/Makefile.bor deleted file mode 100644 index d152bbb7ffd..00000000000 --- a/platform/win32/msvc/external/zlib/win32/Makefile.bor +++ /dev/null @@ -1,110 +0,0 @@ -# Makefile for zlib -# Borland C++ for Win32 -# -# Usage: -# make -f win32/Makefile.bor -# make -f win32/Makefile.bor LOCAL_ZLIB=-DASMV OBJA=match.obj OBJPA=+match.obj - -# ------------ Borland C++ ------------ - -# Optional nonstandard preprocessor flags (e.g. -DMAX_MEM_LEVEL=7) -# should be added to the environment via "set LOCAL_ZLIB=-DFOO" or -# added to the declaration of LOC here: -LOC = $(LOCAL_ZLIB) - -CC = bcc32 -AS = bcc32 -LD = bcc32 -AR = tlib -CFLAGS = -a -d -k- -O2 $(LOC) -ASFLAGS = $(LOC) -LDFLAGS = $(LOC) - - -# variables -ZLIB_LIB = zlib.lib - -OBJ1 = adler32.obj compress.obj crc32.obj deflate.obj gzclose.obj gzlib.obj gzread.obj -OBJ2 = gzwrite.obj infback.obj inffast.obj inflate.obj inftrees.obj trees.obj uncompr.obj zutil.obj -#OBJA = -OBJP1 = +adler32.obj+compress.obj+crc32.obj+deflate.obj+gzclose.obj+gzlib.obj+gzread.obj -OBJP2 = +gzwrite.obj+infback.obj+inffast.obj+inflate.obj+inftrees.obj+trees.obj+uncompr.obj+zutil.obj -#OBJPA= - - -# targets -all: $(ZLIB_LIB) example.exe minigzip.exe - -.c.obj: - $(CC) -c $(CFLAGS) $< - -.asm.obj: - $(AS) -c $(ASFLAGS) $< - -adler32.obj: adler32.c zlib.h zconf.h - -compress.obj: compress.c zlib.h zconf.h - -crc32.obj: crc32.c zlib.h zconf.h crc32.h - -deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h - -gzclose.obj: gzclose.c zlib.h zconf.h gzguts.h - -gzlib.obj: gzlib.c zlib.h zconf.h gzguts.h - -gzread.obj: gzread.c zlib.h zconf.h gzguts.h - -gzwrite.obj: gzwrite.c zlib.h zconf.h gzguts.h - -infback.obj: infback.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h inffixed.h - -inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h - -inflate.obj: inflate.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h inffixed.h - -inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h - -trees.obj: trees.c zutil.h zlib.h zconf.h deflate.h trees.h - -uncompr.obj: uncompr.c zlib.h zconf.h - -zutil.obj: zutil.c zutil.h zlib.h zconf.h - -example.obj: test/example.c zlib.h zconf.h - -minigzip.obj: test/minigzip.c zlib.h zconf.h - - -# For the sake of the old Borland make, -# the command line is cut to fit in the MS-DOS 128 byte limit: -$(ZLIB_LIB): $(OBJ1) $(OBJ2) $(OBJA) - -del $(ZLIB_LIB) - $(AR) $(ZLIB_LIB) $(OBJP1) - $(AR) $(ZLIB_LIB) $(OBJP2) - $(AR) $(ZLIB_LIB) $(OBJPA) - - -# testing -test: example.exe minigzip.exe - example - echo hello world | minigzip | minigzip -d - -example.exe: example.obj $(ZLIB_LIB) - $(LD) $(LDFLAGS) example.obj $(ZLIB_LIB) - -minigzip.exe: minigzip.obj $(ZLIB_LIB) - $(LD) $(LDFLAGS) minigzip.obj $(ZLIB_LIB) - - -# cleanup -clean: - -del $(ZLIB_LIB) - -del *.obj - -del *.exe - -del *.tds - -del zlib.bak - -del foo.gz diff --git a/platform/win32/msvc/external/zlib/win32/Makefile.gcc b/platform/win32/msvc/external/zlib/win32/Makefile.gcc deleted file mode 100644 index 6d1ded622bf..00000000000 --- a/platform/win32/msvc/external/zlib/win32/Makefile.gcc +++ /dev/null @@ -1,182 +0,0 @@ -# Makefile for zlib, derived from Makefile.dj2. -# Modified for mingw32 by C. Spieler, 6/16/98. -# Updated for zlib 1.2.x by Christian Spieler and Cosmin Truta, Mar-2003. -# Last updated: Mar 2012. -# Tested under Cygwin and MinGW. - -# Copyright (C) 1995-2003 Jean-loup Gailly. -# For conditions of distribution and use, see copyright notice in zlib.h - -# To compile, or to compile and test, type from the top level zlib directory: -# -# make -fwin32/Makefile.gcc; make test testdll -fwin32/Makefile.gcc -# -# To use the asm code, type: -# cp contrib/asm?86/match.S ./match.S -# make LOC=-DASMV OBJA=match.o -fwin32/Makefile.gcc -# -# To install libz.a, zconf.h and zlib.h in the system directories, type: -# -# make install -fwin32/Makefile.gcc -# -# BINARY_PATH, INCLUDE_PATH and LIBRARY_PATH must be set. -# -# To install the shared lib, append SHARED_MODE=1 to the make command : -# -# make install -fwin32/Makefile.gcc SHARED_MODE=1 - -# Note: -# If the platform is *not* MinGW (e.g. it is Cygwin or UWIN), -# the DLL name should be changed from "zlib1.dll". - -STATICLIB = libz.a -SHAREDLIB = zlib1.dll -IMPLIB = libz.dll.a - -# -# Set to 1 if shared object needs to be installed -# -SHARED_MODE=0 - -#LOC = -DASMV -#LOC = -DDEBUG -g - -PREFIX = -CC = $(PREFIX)gcc -CFLAGS = $(LOC) -O3 -Wall - -AS = $(CC) -ASFLAGS = $(LOC) -Wall - -LD = $(CC) -LDFLAGS = $(LOC) - -AR = $(PREFIX)ar -ARFLAGS = rcs - -RC = $(PREFIX)windres -RCFLAGS = --define GCC_WINDRES - -STRIP = $(PREFIX)strip - -CP = cp -fp -# If GNU install is available, replace $(CP) with install. -INSTALL = $(CP) -RM = rm -f - -prefix ?= /usr/local -exec_prefix = $(prefix) - -OBJS = adler32.o compress.o crc32.o deflate.o gzclose.o gzlib.o gzread.o \ - gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o -OBJA = - -all: $(STATICLIB) $(SHAREDLIB) $(IMPLIB) example.exe minigzip.exe example_d.exe minigzip_d.exe - -test: example.exe minigzip.exe - ./example - echo hello world | ./minigzip | ./minigzip -d - -testdll: example_d.exe minigzip_d.exe - ./example_d - echo hello world | ./minigzip_d | ./minigzip_d -d - -.c.o: - $(CC) $(CFLAGS) -c -o $@ $< - -.S.o: - $(AS) $(ASFLAGS) -c -o $@ $< - -$(STATICLIB): $(OBJS) $(OBJA) - $(AR) $(ARFLAGS) $@ $(OBJS) $(OBJA) - -$(IMPLIB): $(SHAREDLIB) - -$(SHAREDLIB): win32/zlib.def $(OBJS) $(OBJA) zlibrc.o - $(CC) -shared -Wl,--out-implib,$(IMPLIB) $(LDFLAGS) \ - -o $@ win32/zlib.def $(OBJS) $(OBJA) zlibrc.o - $(STRIP) $@ - -example.exe: example.o $(STATICLIB) - $(LD) $(LDFLAGS) -o $@ example.o $(STATICLIB) - $(STRIP) $@ - -minigzip.exe: minigzip.o $(STATICLIB) - $(LD) $(LDFLAGS) -o $@ minigzip.o $(STATICLIB) - $(STRIP) $@ - -example_d.exe: example.o $(IMPLIB) - $(LD) $(LDFLAGS) -o $@ example.o $(IMPLIB) - $(STRIP) $@ - -minigzip_d.exe: minigzip.o $(IMPLIB) - $(LD) $(LDFLAGS) -o $@ minigzip.o $(IMPLIB) - $(STRIP) $@ - -example.o: test/example.c zlib.h zconf.h - $(CC) $(CFLAGS) -I. -c -o $@ test/example.c - -minigzip.o: test/minigzip.c zlib.h zconf.h - $(CC) $(CFLAGS) -I. -c -o $@ test/minigzip.c - -zlibrc.o: win32/zlib1.rc - $(RC) $(RCFLAGS) -o $@ win32/zlib1.rc - -.PHONY: install uninstall clean - -install: zlib.h zconf.h $(STATICLIB) $(IMPLIB) - @if test -z "$(DESTDIR)$(INCLUDE_PATH)" -o -z "$(DESTDIR)$(LIBRARY_PATH)" -o -z "$(DESTDIR)$(BINARY_PATH)"; then \ - echo INCLUDE_PATH, LIBRARY_PATH, and BINARY_PATH must be specified; \ - exit 1; \ - fi - -@mkdir -p '$(DESTDIR)$(INCLUDE_PATH)' - -@mkdir -p '$(DESTDIR)$(LIBRARY_PATH)' '$(DESTDIR)$(LIBRARY_PATH)'/pkgconfig - -if [ "$(SHARED_MODE)" = "1" ]; then \ - mkdir -p '$(DESTDIR)$(BINARY_PATH)'; \ - $(INSTALL) $(SHAREDLIB) '$(DESTDIR)$(BINARY_PATH)'; \ - $(INSTALL) $(IMPLIB) '$(DESTDIR)$(LIBRARY_PATH)'; \ - fi - -$(INSTALL) zlib.h '$(DESTDIR)$(INCLUDE_PATH)' - -$(INSTALL) zconf.h '$(DESTDIR)$(INCLUDE_PATH)' - -$(INSTALL) $(STATICLIB) '$(DESTDIR)$(LIBRARY_PATH)' - sed \ - -e 's|@prefix@|${prefix}|g' \ - -e 's|@exec_prefix@|${exec_prefix}|g' \ - -e 's|@libdir@|$(LIBRARY_PATH)|g' \ - -e 's|@sharedlibdir@|$(LIBRARY_PATH)|g' \ - -e 's|@includedir@|$(INCLUDE_PATH)|g' \ - -e 's|@VERSION@|'`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' zlib.h`'|g' \ - zlib.pc.in > '$(DESTDIR)$(LIBRARY_PATH)'/pkgconfig/zlib.pc - -uninstall: - -if [ "$(SHARED_MODE)" = "1" ]; then \ - $(RM) '$(DESTDIR)$(BINARY_PATH)'/$(SHAREDLIB); \ - $(RM) '$(DESTDIR)$(LIBRARY_PATH)'/$(IMPLIB); \ - fi - -$(RM) '$(DESTDIR)$(INCLUDE_PATH)'/zlib.h - -$(RM) '$(DESTDIR)$(INCLUDE_PATH)'/zconf.h - -$(RM) '$(DESTDIR)$(LIBRARY_PATH)'/$(STATICLIB) - -clean: - -$(RM) $(STATICLIB) - -$(RM) $(SHAREDLIB) - -$(RM) $(IMPLIB) - -$(RM) *.o - -$(RM) *.exe - -$(RM) foo.gz - -adler32.o: zlib.h zconf.h -compress.o: zlib.h zconf.h -crc32.o: crc32.h zlib.h zconf.h -deflate.o: deflate.h zutil.h zlib.h zconf.h -gzclose.o: zlib.h zconf.h gzguts.h -gzlib.o: zlib.h zconf.h gzguts.h -gzread.o: zlib.h zconf.h gzguts.h -gzwrite.o: zlib.h zconf.h gzguts.h -inffast.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h -inflate.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h -infback.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h -inftrees.o: zutil.h zlib.h zconf.h inftrees.h -trees.o: deflate.h zutil.h zlib.h zconf.h trees.h -uncompr.o: zlib.h zconf.h -zutil.o: zutil.h zlib.h zconf.h diff --git a/platform/win32/msvc/external/zlib/win32/Makefile.msc b/platform/win32/msvc/external/zlib/win32/Makefile.msc deleted file mode 100644 index 67b773171da..00000000000 --- a/platform/win32/msvc/external/zlib/win32/Makefile.msc +++ /dev/null @@ -1,163 +0,0 @@ -# Makefile for zlib using Microsoft (Visual) C -# zlib is copyright (C) 1995-2006 Jean-loup Gailly and Mark Adler -# -# Usage: -# nmake -f win32/Makefile.msc (standard build) -# nmake -f win32/Makefile.msc LOC=-DFOO (nonstandard build) -# nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" \ -# OBJA="inffas32.obj match686.obj" (use ASM code, x86) -# nmake -f win32/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF -I." \ -# OBJA="inffasx64.obj gvmat64.obj inffas8664.obj" (use ASM code, x64) - -# The toplevel directory of the source tree. -# -TOP = . - -# optional build flags -LOC = - -# variables -STATICLIB = zlib.lib -SHAREDLIB = zlib1.dll -IMPLIB = zdll.lib - -CC = cl -AS = ml -LD = link -AR = lib -RC = rc -CFLAGS = -nologo -MD -W3 -O2 -Oy- -Zi -Fd"zlib" $(LOC) -WFLAGS = -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -ASFLAGS = -coff -Zi $(LOC) -LDFLAGS = -nologo -debug -incremental:no -opt:ref -ARFLAGS = -nologo -RCFLAGS = /dWIN32 /r - -OBJS = adler32.obj compress.obj crc32.obj deflate.obj gzclose.obj gzlib.obj gzread.obj \ - gzwrite.obj infback.obj inflate.obj inftrees.obj inffast.obj trees.obj uncompr.obj zutil.obj -OBJA = - - -# targets -all: $(STATICLIB) $(SHAREDLIB) $(IMPLIB) \ - example.exe minigzip.exe example_d.exe minigzip_d.exe - -$(STATICLIB): $(OBJS) $(OBJA) - $(AR) $(ARFLAGS) -out:$@ $(OBJS) $(OBJA) - -$(IMPLIB): $(SHAREDLIB) - -$(SHAREDLIB): $(TOP)/win32/zlib.def $(OBJS) $(OBJA) zlib1.res - $(LD) $(LDFLAGS) -def:$(TOP)/win32/zlib.def -dll -implib:$(IMPLIB) \ - -out:$@ -base:0x5A4C0000 $(OBJS) $(OBJA) zlib1.res - if exist $@.manifest \ - mt -nologo -manifest $@.manifest -outputresource:$@;2 - -example.exe: example.obj $(STATICLIB) - $(LD) $(LDFLAGS) example.obj $(STATICLIB) - if exist $@.manifest \ - mt -nologo -manifest $@.manifest -outputresource:$@;1 - -minigzip.exe: minigzip.obj $(STATICLIB) - $(LD) $(LDFLAGS) minigzip.obj $(STATICLIB) - if exist $@.manifest \ - mt -nologo -manifest $@.manifest -outputresource:$@;1 - -example_d.exe: example.obj $(IMPLIB) - $(LD) $(LDFLAGS) -out:$@ example.obj $(IMPLIB) - if exist $@.manifest \ - mt -nologo -manifest $@.manifest -outputresource:$@;1 - -minigzip_d.exe: minigzip.obj $(IMPLIB) - $(LD) $(LDFLAGS) -out:$@ minigzip.obj $(IMPLIB) - if exist $@.manifest \ - mt -nologo -manifest $@.manifest -outputresource:$@;1 - -{$(TOP)}.c.obj: - $(CC) -c $(WFLAGS) $(CFLAGS) $< - -{$(TOP)/test}.c.obj: - $(CC) -c -I$(TOP) $(WFLAGS) $(CFLAGS) $< - -{$(TOP)/contrib/masmx64}.c.obj: - $(CC) -c $(WFLAGS) $(CFLAGS) $< - -{$(TOP)/contrib/masmx64}.asm.obj: - $(AS) -c $(ASFLAGS) $< - -{$(TOP)/contrib/masmx86}.asm.obj: - $(AS) -c $(ASFLAGS) $< - -adler32.obj: $(TOP)/adler32.c $(TOP)/zlib.h $(TOP)/zconf.h - -compress.obj: $(TOP)/compress.c $(TOP)/zlib.h $(TOP)/zconf.h - -crc32.obj: $(TOP)/crc32.c $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/crc32.h - -deflate.obj: $(TOP)/deflate.c $(TOP)/deflate.h $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h - -gzclose.obj: $(TOP)/gzclose.c $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/gzguts.h - -gzlib.obj: $(TOP)/gzlib.c $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/gzguts.h - -gzread.obj: $(TOP)/gzread.c $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/gzguts.h - -gzwrite.obj: $(TOP)/gzwrite.c $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/gzguts.h - -infback.obj: $(TOP)/infback.c $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/inftrees.h $(TOP)/inflate.h \ - $(TOP)/inffast.h $(TOP)/inffixed.h - -inffast.obj: $(TOP)/inffast.c $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/inftrees.h $(TOP)/inflate.h \ - $(TOP)/inffast.h - -inflate.obj: $(TOP)/inflate.c $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/inftrees.h $(TOP)/inflate.h \ - $(TOP)/inffast.h $(TOP)/inffixed.h - -inftrees.obj: $(TOP)/inftrees.c $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/inftrees.h - -trees.obj: $(TOP)/trees.c $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/deflate.h $(TOP)/trees.h - -uncompr.obj: $(TOP)/uncompr.c $(TOP)/zlib.h $(TOP)/zconf.h - -zutil.obj: $(TOP)/zutil.c $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h - -gvmat64.obj: $(TOP)/contrib\masmx64\gvmat64.asm - -inffasx64.obj: $(TOP)/contrib\masmx64\inffasx64.asm - -inffas8664.obj: $(TOP)/contrib\masmx64\inffas8664.c $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h \ - $(TOP)/inftrees.h $(TOP)/inflate.h $(TOP)/inffast.h - -inffas32.obj: $(TOP)/contrib\masmx86\inffas32.asm - -match686.obj: $(TOP)/contrib\masmx86\match686.asm - -example.obj: $(TOP)/test/example.c $(TOP)/zlib.h $(TOP)/zconf.h - -minigzip.obj: $(TOP)/test/minigzip.c $(TOP)/zlib.h $(TOP)/zconf.h - -zlib1.res: $(TOP)/win32/zlib1.rc - $(RC) $(RCFLAGS) /fo$@ $(TOP)/win32/zlib1.rc - -# testing -test: example.exe minigzip.exe - example - echo hello world | minigzip | minigzip -d - -testdll: example_d.exe minigzip_d.exe - example_d - echo hello world | minigzip_d | minigzip_d -d - - -# cleanup -clean: - -del $(STATICLIB) - -del $(SHAREDLIB) - -del $(IMPLIB) - -del *.obj - -del *.res - -del *.exp - -del *.exe - -del *.pdb - -del *.manifest - -del foo.gz diff --git a/platform/win32/msvc/external/zlib/win32/README-WIN32.txt b/platform/win32/msvc/external/zlib/win32/README-WIN32.txt deleted file mode 100644 index 3d77d521e83..00000000000 --- a/platform/win32/msvc/external/zlib/win32/README-WIN32.txt +++ /dev/null @@ -1,103 +0,0 @@ -ZLIB DATA COMPRESSION LIBRARY - -zlib 1.2.8 is a general purpose data compression library. All the code is -thread safe. The data format used by the zlib library is described by RFCs -(Request for Comments) 1950 to 1952 in the files -http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format) -and rfc1952.txt (gzip format). - -All functions of the compression library are documented in the file zlib.h -(volunteer to write man pages welcome, contact zlib@gzip.org). Two compiled -examples are distributed in this package, example and minigzip. The example_d -and minigzip_d flavors validate that the zlib1.dll file is working correctly. - -Questions about zlib should be sent to . The zlib home page -is http://zlib.net/ . Before reporting a problem, please check this site to -verify that you have the latest version of zlib; otherwise get the latest -version and check whether the problem still exists or not. - -PLEASE read DLL_FAQ.txt, and the the zlib FAQ http://zlib.net/zlib_faq.html -before asking for help. - - -Manifest: - -The package zlib-1.2.8-win32-x86.zip will contain the following files: - - README-WIN32.txt This document - ChangeLog Changes since previous zlib packages - DLL_FAQ.txt Frequently asked questions about zlib1.dll - zlib.3.pdf Documentation of this library in Adobe Acrobat format - - example.exe A statically-bound example (using zlib.lib, not the dll) - example.pdb Symbolic information for debugging example.exe - - example_d.exe A zlib1.dll bound example (using zdll.lib) - example_d.pdb Symbolic information for debugging example_d.exe - - minigzip.exe A statically-bound test program (using zlib.lib, not the dll) - minigzip.pdb Symbolic information for debugging minigzip.exe - - minigzip_d.exe A zlib1.dll bound test program (using zdll.lib) - minigzip_d.pdb Symbolic information for debugging minigzip_d.exe - - zlib.h Install these files into the compilers' INCLUDE path to - zconf.h compile programs which use zlib.lib or zdll.lib - - zdll.lib Install these files into the compilers' LIB path if linking - zdll.exp a compiled program to the zlib1.dll binary - - zlib.lib Install these files into the compilers' LIB path to link zlib - zlib.pdb into compiled programs, without zlib1.dll runtime dependency - (zlib.pdb provides debugging info to the compile time linker) - - zlib1.dll Install this binary shared library into the system PATH, or - the program's runtime directory (where the .exe resides) - zlib1.pdb Install in the same directory as zlib1.dll, in order to debug - an application crash using WinDbg or similar tools. - -All .pdb files above are entirely optional, but are very useful to a developer -attempting to diagnose program misbehavior or a crash. Many additional -important files for developers can be found in the zlib127.zip source package -available from http://zlib.net/ - review that package's README file for details. - - -Acknowledgments: - -The deflate format used by zlib was defined by Phil Katz. The deflate and -zlib specifications were written by L. Peter Deutsch. Thanks to all the -people who reported problems and suggested various improvements in zlib; they -are too numerous to cite here. - - -Copyright notice: - - (C) 1995-2012 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - -If you use the zlib library in a product, we would appreciate *not* receiving -lengthy legal documents to sign. The sources are provided for free but without -warranty of any kind. The library has been entirely written by Jean-loup -Gailly and Mark Adler; it does not include third-party code. - -If you redistribute modified sources, we would appreciate that you include in -the file ChangeLog history information documenting your changes. Please read -the FAQ for more information on the distribution of modified source versions. diff --git a/platform/win32/msvc/external/zlib/win32/VisualC.txt b/platform/win32/msvc/external/zlib/win32/VisualC.txt deleted file mode 100644 index 579a5fc9e0f..00000000000 --- a/platform/win32/msvc/external/zlib/win32/VisualC.txt +++ /dev/null @@ -1,3 +0,0 @@ - -To build zlib using the Microsoft Visual C++ environment, -use the appropriate project from the projects/ directory. diff --git a/platform/win32/msvc/external/zlib/win32/zlib.def b/platform/win32/msvc/external/zlib/win32/zlib.def deleted file mode 100644 index face655183a..00000000000 --- a/platform/win32/msvc/external/zlib/win32/zlib.def +++ /dev/null @@ -1,86 +0,0 @@ -; zlib data compression library -EXPORTS -; basic functions - zlibVersion - deflate - deflateEnd - inflate - inflateEnd -; advanced functions - deflateSetDictionary - deflateCopy - deflateReset - deflateParams - deflateTune - deflateBound - deflatePending - deflatePrime - deflateSetHeader - inflateSetDictionary - inflateGetDictionary - inflateSync - inflateCopy - inflateReset - inflateReset2 - inflatePrime - inflateMark - inflateGetHeader - inflateBack - inflateBackEnd - zlibCompileFlags -; utility functions - compress - compress2 - compressBound - uncompress - gzopen - gzdopen - gzbuffer - gzsetparams - gzread - gzwrite - gzprintf - gzvprintf - gzputs - gzgets - gzputc - gzgetc - gzungetc - gzflush - gzseek - gzrewind - gztell - gzoffset - gzeof - gzdirect - gzclose - gzclose_r - gzclose_w - gzerror - gzclearerr -; large file functions - gzopen64 - gzseek64 - gztell64 - gzoffset64 - adler32_combine64 - crc32_combine64 -; checksum functions - adler32 - crc32 - adler32_combine - crc32_combine -; various hacks, don't look :) - deflateInit_ - deflateInit2_ - inflateInit_ - inflateInit2_ - inflateBackInit_ - gzgetc_ - zError - inflateSyncPoint - get_crc_table - inflateUndermine - inflateResetKeep - deflateResetKeep - gzopen_w diff --git a/platform/win32/msvc/external/zlib/win32/zlib1.rc b/platform/win32/msvc/external/zlib/win32/zlib1.rc deleted file mode 100644 index 5c0feed1b44..00000000000 --- a/platform/win32/msvc/external/zlib/win32/zlib1.rc +++ /dev/null @@ -1,40 +0,0 @@ -#include -#include "../zlib.h" - -#ifdef GCC_WINDRES -VS_VERSION_INFO VERSIONINFO -#else -VS_VERSION_INFO VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE -#endif - FILEVERSION ZLIB_VER_MAJOR,ZLIB_VER_MINOR,ZLIB_VER_REVISION,0 - PRODUCTVERSION ZLIB_VER_MAJOR,ZLIB_VER_MINOR,ZLIB_VER_REVISION,0 - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK -#ifdef _DEBUG - FILEFLAGS 1 -#else - FILEFLAGS 0 -#endif - FILEOS VOS__WINDOWS32 - FILETYPE VFT_DLL - FILESUBTYPE 0 // not used -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904E4" - //language ID = U.S. English, char set = Windows, Multilingual - BEGIN - VALUE "FileDescription", "zlib data compression library\0" - VALUE "FileVersion", ZLIB_VERSION "\0" - VALUE "InternalName", "zlib1.dll\0" - VALUE "LegalCopyright", "(C) 1995-2013 Jean-loup Gailly & Mark Adler\0" - VALUE "OriginalFilename", "zlib1.dll\0" - VALUE "ProductName", "zlib\0" - VALUE "ProductVersion", ZLIB_VERSION "\0" - VALUE "Comments", "For more information visit http://www.zlib.net/\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0409, 1252 - END -END diff --git a/platform/win32/msvc/external/zlib/zconf.h b/platform/win32/msvc/external/zlib/zconf.h deleted file mode 100644 index 9987a775530..00000000000 --- a/platform/win32/msvc/external/zlib/zconf.h +++ /dev/null @@ -1,511 +0,0 @@ -/* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2013 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#ifndef ZCONF_H -#define ZCONF_H - -/* - * If you *really* need a unique prefix for all types and library functions, - * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. - * Even better than compiling with -DZ_PREFIX would be to use configure to set - * this permanently in zconf.h using "./configure --zprefix". - */ -#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ -# define Z_PREFIX_SET - -/* all linked symbols */ -# define _dist_code z__dist_code -# define _length_code z__length_code -# define _tr_align z__tr_align -# define _tr_flush_bits z__tr_flush_bits -# define _tr_flush_block z__tr_flush_block -# define _tr_init z__tr_init -# define _tr_stored_block z__tr_stored_block -# define _tr_tally z__tr_tally -# define adler32 z_adler32 -# define adler32_combine z_adler32_combine -# define adler32_combine64 z_adler32_combine64 -# ifndef Z_SOLO -# define compress z_compress -# define compress2 z_compress2 -# define compressBound z_compressBound -# endif -# define crc32 z_crc32 -# define crc32_combine z_crc32_combine -# define crc32_combine64 z_crc32_combine64 -# define deflate z_deflate -# define deflateBound z_deflateBound -# define deflateCopy z_deflateCopy -# define deflateEnd z_deflateEnd -# define deflateInit2_ z_deflateInit2_ -# define deflateInit_ z_deflateInit_ -# define deflateParams z_deflateParams -# define deflatePending z_deflatePending -# define deflatePrime z_deflatePrime -# define deflateReset z_deflateReset -# define deflateResetKeep z_deflateResetKeep -# define deflateSetDictionary z_deflateSetDictionary -# define deflateSetHeader z_deflateSetHeader -# define deflateTune z_deflateTune -# define deflate_copyright z_deflate_copyright -# define get_crc_table z_get_crc_table -# ifndef Z_SOLO -# define gz_error z_gz_error -# define gz_intmax z_gz_intmax -# define gz_strwinerror z_gz_strwinerror -# define gzbuffer z_gzbuffer -# define gzclearerr z_gzclearerr -# define gzclose z_gzclose -# define gzclose_r z_gzclose_r -# define gzclose_w z_gzclose_w -# define gzdirect z_gzdirect -# define gzdopen z_gzdopen -# define gzeof z_gzeof -# define gzerror z_gzerror -# define gzflush z_gzflush -# define gzgetc z_gzgetc -# define gzgetc_ z_gzgetc_ -# define gzgets z_gzgets -# define gzoffset z_gzoffset -# define gzoffset64 z_gzoffset64 -# define gzopen z_gzopen -# define gzopen64 z_gzopen64 -# ifdef _WIN32 -# define gzopen_w z_gzopen_w -# endif -# define gzprintf z_gzprintf -# define gzvprintf z_gzvprintf -# define gzputc z_gzputc -# define gzputs z_gzputs -# define gzread z_gzread -# define gzrewind z_gzrewind -# define gzseek z_gzseek -# define gzseek64 z_gzseek64 -# define gzsetparams z_gzsetparams -# define gztell z_gztell -# define gztell64 z_gztell64 -# define gzungetc z_gzungetc -# define gzwrite z_gzwrite -# endif -# define inflate z_inflate -# define inflateBack z_inflateBack -# define inflateBackEnd z_inflateBackEnd -# define inflateBackInit_ z_inflateBackInit_ -# define inflateCopy z_inflateCopy -# define inflateEnd z_inflateEnd -# define inflateGetHeader z_inflateGetHeader -# define inflateInit2_ z_inflateInit2_ -# define inflateInit_ z_inflateInit_ -# define inflateMark z_inflateMark -# define inflatePrime z_inflatePrime -# define inflateReset z_inflateReset -# define inflateReset2 z_inflateReset2 -# define inflateSetDictionary z_inflateSetDictionary -# define inflateGetDictionary z_inflateGetDictionary -# define inflateSync z_inflateSync -# define inflateSyncPoint z_inflateSyncPoint -# define inflateUndermine z_inflateUndermine -# define inflateResetKeep z_inflateResetKeep -# define inflate_copyright z_inflate_copyright -# define inflate_fast z_inflate_fast -# define inflate_table z_inflate_table -# ifndef Z_SOLO -# define uncompress z_uncompress -# endif -# define zError z_zError -# ifndef Z_SOLO -# define zcalloc z_zcalloc -# define zcfree z_zcfree -# endif -# define zlibCompileFlags z_zlibCompileFlags -# define zlibVersion z_zlibVersion - -/* all zlib typedefs in zlib.h and zconf.h */ -# define Byte z_Byte -# define Bytef z_Bytef -# define alloc_func z_alloc_func -# define charf z_charf -# define free_func z_free_func -# ifndef Z_SOLO -# define gzFile z_gzFile -# endif -# define gz_header z_gz_header -# define gz_headerp z_gz_headerp -# define in_func z_in_func -# define intf z_intf -# define out_func z_out_func -# define uInt z_uInt -# define uIntf z_uIntf -# define uLong z_uLong -# define uLongf z_uLongf -# define voidp z_voidp -# define voidpc z_voidpc -# define voidpf z_voidpf - -/* all zlib structs in zlib.h and zconf.h */ -# define gz_header_s z_gz_header_s -# define internal_state z_internal_state - -#endif - -#if defined(__MSDOS__) && !defined(MSDOS) -# define MSDOS -#endif -#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) -# define OS2 -#endif -#if defined(_WINDOWS) && !defined(WINDOWS) -# define WINDOWS -#endif -#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) -# ifndef WIN32 -# define WIN32 -# endif -#endif -#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) -# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) -# ifndef SYS16BIT -# define SYS16BIT -# endif -# endif -#endif - -/* - * Compile with -DMAXSEG_64K if the alloc function cannot allocate more - * than 64k bytes at a time (needed on systems with 16-bit int). - */ -#ifdef SYS16BIT -# define MAXSEG_64K -#endif -#ifdef MSDOS -# define UNALIGNED_OK -#endif - -#ifdef __STDC_VERSION__ -# ifndef STDC -# define STDC -# endif -# if __STDC_VERSION__ >= 199901L -# ifndef STDC99 -# define STDC99 -# endif -# endif -#endif -#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) -# define STDC -#endif -#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) -# define STDC -#endif -#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) -# define STDC -#endif -#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) -# define STDC -#endif - -#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ -# define STDC -#endif - -#ifndef STDC -# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ -# define const /* note: need a more gentle solution here */ -# endif -#endif - -#if defined(ZLIB_CONST) && !defined(z_const) -# define z_const const -#else -# define z_const -#endif - -/* Some Mac compilers merge all .h files incorrectly: */ -#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) -# define NO_DUMMY_DECL -#endif - -/* Maximum value for memLevel in deflateInit2 */ -#ifndef MAX_MEM_LEVEL -# ifdef MAXSEG_64K -# define MAX_MEM_LEVEL 8 -# else -# define MAX_MEM_LEVEL 9 -# endif -#endif - -/* Maximum value for windowBits in deflateInit2 and inflateInit2. - * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files - * created by gzip. (Files created by minigzip can still be extracted by - * gzip.) - */ -#ifndef MAX_WBITS -# define MAX_WBITS 15 /* 32K LZ77 window */ -#endif - -/* The memory requirements for deflate are (in bytes): - (1 << (windowBits+2)) + (1 << (memLevel+9)) - that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) - plus a few kilobytes for small objects. For example, if you want to reduce - the default memory requirements from 256K to 128K, compile with - make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" - Of course this will generally degrade compression (there's no free lunch). - - The memory requirements for inflate are (in bytes) 1 << windowBits - that is, 32K for windowBits=15 (default value) plus a few kilobytes - for small objects. -*/ - - /* Type declarations */ - -#ifndef OF /* function prototypes */ -# ifdef STDC -# define OF(args) args -# else -# define OF(args) () -# endif -#endif - -#ifndef Z_ARG /* function prototypes for stdarg */ -# if defined(STDC) || defined(Z_HAVE_STDARG_H) -# define Z_ARG(args) args -# else -# define Z_ARG(args) () -# endif -#endif - -/* The following definitions for FAR are needed only for MSDOS mixed - * model programming (small or medium model with some far allocations). - * This was tested only with MSC; for other MSDOS compilers you may have - * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, - * just define FAR to be empty. - */ -#ifdef SYS16BIT -# if defined(M_I86SM) || defined(M_I86MM) - /* MSC small or medium model */ -# define SMALL_MEDIUM -# ifdef _MSC_VER -# define FAR _far -# else -# define FAR far -# endif -# endif -# if (defined(__SMALL__) || defined(__MEDIUM__)) - /* Turbo C small or medium model */ -# define SMALL_MEDIUM -# ifdef __BORLANDC__ -# define FAR _far -# else -# define FAR far -# endif -# endif -#endif - -#if defined(WINDOWS) || defined(WIN32) - /* If building or using zlib as a DLL, define ZLIB_DLL. - * This is not mandatory, but it offers a little performance increase. - */ -# ifdef ZLIB_DLL -# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) -# ifdef ZLIB_INTERNAL -# define ZEXTERN extern __declspec(dllexport) -# else -# define ZEXTERN extern __declspec(dllimport) -# endif -# endif -# endif /* ZLIB_DLL */ - /* If building or using zlib with the WINAPI/WINAPIV calling convention, - * define ZLIB_WINAPI. - * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. - */ -# ifdef ZLIB_WINAPI -# ifdef FAR -# undef FAR -# endif -# include - /* No need for _export, use ZLIB.DEF instead. */ - /* For complete Windows compatibility, use WINAPI, not __stdcall. */ -# define ZEXPORT WINAPI -# ifdef WIN32 -# define ZEXPORTVA WINAPIV -# else -# define ZEXPORTVA FAR CDECL -# endif -# endif -#endif - -#if defined (__BEOS__) -# ifdef ZLIB_DLL -# ifdef ZLIB_INTERNAL -# define ZEXPORT __declspec(dllexport) -# define ZEXPORTVA __declspec(dllexport) -# else -# define ZEXPORT __declspec(dllimport) -# define ZEXPORTVA __declspec(dllimport) -# endif -# endif -#endif - -#ifndef ZEXTERN -# define ZEXTERN extern -#endif -#ifndef ZEXPORT -# define ZEXPORT -#endif -#ifndef ZEXPORTVA -# define ZEXPORTVA -#endif - -#ifndef FAR -# define FAR -#endif - -#if !defined(__MACTYPES__) -typedef unsigned char Byte; /* 8 bits */ -#endif -typedef unsigned int uInt; /* 16 bits or more */ -typedef unsigned long uLong; /* 32 bits or more */ - -#ifdef SMALL_MEDIUM - /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ -# define Bytef Byte FAR -#else - typedef Byte FAR Bytef; -#endif -typedef char FAR charf; -typedef int FAR intf; -typedef uInt FAR uIntf; -typedef uLong FAR uLongf; - -#ifdef STDC - typedef void const *voidpc; - typedef void FAR *voidpf; - typedef void *voidp; -#else - typedef Byte const *voidpc; - typedef Byte FAR *voidpf; - typedef Byte *voidp; -#endif - -#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) -# include -# if (UINT_MAX == 0xffffffffUL) -# define Z_U4 unsigned -# elif (ULONG_MAX == 0xffffffffUL) -# define Z_U4 unsigned long -# elif (USHRT_MAX == 0xffffffffUL) -# define Z_U4 unsigned short -# endif -#endif - -#ifdef Z_U4 - typedef Z_U4 z_crc_t; -#else - typedef unsigned long z_crc_t; -#endif - -#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_UNISTD_H -#endif - -#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_STDARG_H -#endif - -#ifdef STDC -# ifndef Z_SOLO -# include /* for off_t */ -# endif -#endif - -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifndef Z_SOLO -# include /* for va_list */ -# endif -#endif - -#ifdef _WIN32 -# ifndef Z_SOLO -# include /* for wchar_t */ -# endif -#endif - -/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and - * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even - * though the former does not conform to the LFS document), but considering - * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as - * equivalently requesting no 64-bit operations - */ -#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 -# undef _LARGEFILE64_SOURCE -#endif - -#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) -# define Z_HAVE_UNISTD_H -#endif -#ifndef Z_SOLO -# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) -# include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ -# ifdef VMS -# include /* for off_t */ -# endif -# ifndef z_off_t -# define z_off_t off_t -# endif -# endif -#endif - -#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 -# define Z_LFS64 -#endif - -#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) -# define Z_LARGE64 -#endif - -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) -# define Z_WANT64 -#endif - -#if !defined(SEEK_SET) && !defined(Z_SOLO) -# define SEEK_SET 0 /* Seek from beginning of file. */ -# define SEEK_CUR 1 /* Seek from current position. */ -# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ -#endif - -#ifndef z_off_t -# define z_off_t long -#endif - -#if !defined(_WIN32) && defined(Z_LARGE64) -# define z_off64_t off64_t -#else -# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) -# define z_off64_t __int64 -# else -# define z_off64_t z_off_t -# endif -#endif - -/* MVS linker does not support external names larger than 8 bytes */ -#if defined(__MVS__) - #pragma map(deflateInit_,"DEIN") - #pragma map(deflateInit2_,"DEIN2") - #pragma map(deflateEnd,"DEEND") - #pragma map(deflateBound,"DEBND") - #pragma map(inflateInit_,"ININ") - #pragma map(inflateInit2_,"ININ2") - #pragma map(inflateEnd,"INEND") - #pragma map(inflateSync,"INSY") - #pragma map(inflateSetDictionary,"INSEDI") - #pragma map(compressBound,"CMBND") - #pragma map(inflate_table,"INTABL") - #pragma map(inflate_fast,"INFA") - #pragma map(inflate_copyright,"INCOPY") -#endif - -#endif /* ZCONF_H */ diff --git a/platform/win32/msvc/external/zlib/zconf.h.cmakein b/platform/win32/msvc/external/zlib/zconf.h.cmakein deleted file mode 100644 index 043019cda1d..00000000000 --- a/platform/win32/msvc/external/zlib/zconf.h.cmakein +++ /dev/null @@ -1,513 +0,0 @@ -/* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2013 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#ifndef ZCONF_H -#define ZCONF_H -#cmakedefine Z_PREFIX -#cmakedefine Z_HAVE_UNISTD_H - -/* - * If you *really* need a unique prefix for all types and library functions, - * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. - * Even better than compiling with -DZ_PREFIX would be to use configure to set - * this permanently in zconf.h using "./configure --zprefix". - */ -#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ -# define Z_PREFIX_SET - -/* all linked symbols */ -# define _dist_code z__dist_code -# define _length_code z__length_code -# define _tr_align z__tr_align -# define _tr_flush_bits z__tr_flush_bits -# define _tr_flush_block z__tr_flush_block -# define _tr_init z__tr_init -# define _tr_stored_block z__tr_stored_block -# define _tr_tally z__tr_tally -# define adler32 z_adler32 -# define adler32_combine z_adler32_combine -# define adler32_combine64 z_adler32_combine64 -# ifndef Z_SOLO -# define compress z_compress -# define compress2 z_compress2 -# define compressBound z_compressBound -# endif -# define crc32 z_crc32 -# define crc32_combine z_crc32_combine -# define crc32_combine64 z_crc32_combine64 -# define deflate z_deflate -# define deflateBound z_deflateBound -# define deflateCopy z_deflateCopy -# define deflateEnd z_deflateEnd -# define deflateInit2_ z_deflateInit2_ -# define deflateInit_ z_deflateInit_ -# define deflateParams z_deflateParams -# define deflatePending z_deflatePending -# define deflatePrime z_deflatePrime -# define deflateReset z_deflateReset -# define deflateResetKeep z_deflateResetKeep -# define deflateSetDictionary z_deflateSetDictionary -# define deflateSetHeader z_deflateSetHeader -# define deflateTune z_deflateTune -# define deflate_copyright z_deflate_copyright -# define get_crc_table z_get_crc_table -# ifndef Z_SOLO -# define gz_error z_gz_error -# define gz_intmax z_gz_intmax -# define gz_strwinerror z_gz_strwinerror -# define gzbuffer z_gzbuffer -# define gzclearerr z_gzclearerr -# define gzclose z_gzclose -# define gzclose_r z_gzclose_r -# define gzclose_w z_gzclose_w -# define gzdirect z_gzdirect -# define gzdopen z_gzdopen -# define gzeof z_gzeof -# define gzerror z_gzerror -# define gzflush z_gzflush -# define gzgetc z_gzgetc -# define gzgetc_ z_gzgetc_ -# define gzgets z_gzgets -# define gzoffset z_gzoffset -# define gzoffset64 z_gzoffset64 -# define gzopen z_gzopen -# define gzopen64 z_gzopen64 -# ifdef _WIN32 -# define gzopen_w z_gzopen_w -# endif -# define gzprintf z_gzprintf -# define gzvprintf z_gzvprintf -# define gzputc z_gzputc -# define gzputs z_gzputs -# define gzread z_gzread -# define gzrewind z_gzrewind -# define gzseek z_gzseek -# define gzseek64 z_gzseek64 -# define gzsetparams z_gzsetparams -# define gztell z_gztell -# define gztell64 z_gztell64 -# define gzungetc z_gzungetc -# define gzwrite z_gzwrite -# endif -# define inflate z_inflate -# define inflateBack z_inflateBack -# define inflateBackEnd z_inflateBackEnd -# define inflateBackInit_ z_inflateBackInit_ -# define inflateCopy z_inflateCopy -# define inflateEnd z_inflateEnd -# define inflateGetHeader z_inflateGetHeader -# define inflateInit2_ z_inflateInit2_ -# define inflateInit_ z_inflateInit_ -# define inflateMark z_inflateMark -# define inflatePrime z_inflatePrime -# define inflateReset z_inflateReset -# define inflateReset2 z_inflateReset2 -# define inflateSetDictionary z_inflateSetDictionary -# define inflateGetDictionary z_inflateGetDictionary -# define inflateSync z_inflateSync -# define inflateSyncPoint z_inflateSyncPoint -# define inflateUndermine z_inflateUndermine -# define inflateResetKeep z_inflateResetKeep -# define inflate_copyright z_inflate_copyright -# define inflate_fast z_inflate_fast -# define inflate_table z_inflate_table -# ifndef Z_SOLO -# define uncompress z_uncompress -# endif -# define zError z_zError -# ifndef Z_SOLO -# define zcalloc z_zcalloc -# define zcfree z_zcfree -# endif -# define zlibCompileFlags z_zlibCompileFlags -# define zlibVersion z_zlibVersion - -/* all zlib typedefs in zlib.h and zconf.h */ -# define Byte z_Byte -# define Bytef z_Bytef -# define alloc_func z_alloc_func -# define charf z_charf -# define free_func z_free_func -# ifndef Z_SOLO -# define gzFile z_gzFile -# endif -# define gz_header z_gz_header -# define gz_headerp z_gz_headerp -# define in_func z_in_func -# define intf z_intf -# define out_func z_out_func -# define uInt z_uInt -# define uIntf z_uIntf -# define uLong z_uLong -# define uLongf z_uLongf -# define voidp z_voidp -# define voidpc z_voidpc -# define voidpf z_voidpf - -/* all zlib structs in zlib.h and zconf.h */ -# define gz_header_s z_gz_header_s -# define internal_state z_internal_state - -#endif - -#if defined(__MSDOS__) && !defined(MSDOS) -# define MSDOS -#endif -#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) -# define OS2 -#endif -#if defined(_WINDOWS) && !defined(WINDOWS) -# define WINDOWS -#endif -#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) -# ifndef WIN32 -# define WIN32 -# endif -#endif -#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) -# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) -# ifndef SYS16BIT -# define SYS16BIT -# endif -# endif -#endif - -/* - * Compile with -DMAXSEG_64K if the alloc function cannot allocate more - * than 64k bytes at a time (needed on systems with 16-bit int). - */ -#ifdef SYS16BIT -# define MAXSEG_64K -#endif -#ifdef MSDOS -# define UNALIGNED_OK -#endif - -#ifdef __STDC_VERSION__ -# ifndef STDC -# define STDC -# endif -# if __STDC_VERSION__ >= 199901L -# ifndef STDC99 -# define STDC99 -# endif -# endif -#endif -#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) -# define STDC -#endif -#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) -# define STDC -#endif -#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) -# define STDC -#endif -#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) -# define STDC -#endif - -#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ -# define STDC -#endif - -#ifndef STDC -# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ -# define const /* note: need a more gentle solution here */ -# endif -#endif - -#if defined(ZLIB_CONST) && !defined(z_const) -# define z_const const -#else -# define z_const -#endif - -/* Some Mac compilers merge all .h files incorrectly: */ -#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) -# define NO_DUMMY_DECL -#endif - -/* Maximum value for memLevel in deflateInit2 */ -#ifndef MAX_MEM_LEVEL -# ifdef MAXSEG_64K -# define MAX_MEM_LEVEL 8 -# else -# define MAX_MEM_LEVEL 9 -# endif -#endif - -/* Maximum value for windowBits in deflateInit2 and inflateInit2. - * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files - * created by gzip. (Files created by minigzip can still be extracted by - * gzip.) - */ -#ifndef MAX_WBITS -# define MAX_WBITS 15 /* 32K LZ77 window */ -#endif - -/* The memory requirements for deflate are (in bytes): - (1 << (windowBits+2)) + (1 << (memLevel+9)) - that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) - plus a few kilobytes for small objects. For example, if you want to reduce - the default memory requirements from 256K to 128K, compile with - make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" - Of course this will generally degrade compression (there's no free lunch). - - The memory requirements for inflate are (in bytes) 1 << windowBits - that is, 32K for windowBits=15 (default value) plus a few kilobytes - for small objects. -*/ - - /* Type declarations */ - -#ifndef OF /* function prototypes */ -# ifdef STDC -# define OF(args) args -# else -# define OF(args) () -# endif -#endif - -#ifndef Z_ARG /* function prototypes for stdarg */ -# if defined(STDC) || defined(Z_HAVE_STDARG_H) -# define Z_ARG(args) args -# else -# define Z_ARG(args) () -# endif -#endif - -/* The following definitions for FAR are needed only for MSDOS mixed - * model programming (small or medium model with some far allocations). - * This was tested only with MSC; for other MSDOS compilers you may have - * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, - * just define FAR to be empty. - */ -#ifdef SYS16BIT -# if defined(M_I86SM) || defined(M_I86MM) - /* MSC small or medium model */ -# define SMALL_MEDIUM -# ifdef _MSC_VER -# define FAR _far -# else -# define FAR far -# endif -# endif -# if (defined(__SMALL__) || defined(__MEDIUM__)) - /* Turbo C small or medium model */ -# define SMALL_MEDIUM -# ifdef __BORLANDC__ -# define FAR _far -# else -# define FAR far -# endif -# endif -#endif - -#if defined(WINDOWS) || defined(WIN32) - /* If building or using zlib as a DLL, define ZLIB_DLL. - * This is not mandatory, but it offers a little performance increase. - */ -# ifdef ZLIB_DLL -# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) -# ifdef ZLIB_INTERNAL -# define ZEXTERN extern __declspec(dllexport) -# else -# define ZEXTERN extern __declspec(dllimport) -# endif -# endif -# endif /* ZLIB_DLL */ - /* If building or using zlib with the WINAPI/WINAPIV calling convention, - * define ZLIB_WINAPI. - * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. - */ -# ifdef ZLIB_WINAPI -# ifdef FAR -# undef FAR -# endif -# include - /* No need for _export, use ZLIB.DEF instead. */ - /* For complete Windows compatibility, use WINAPI, not __stdcall. */ -# define ZEXPORT WINAPI -# ifdef WIN32 -# define ZEXPORTVA WINAPIV -# else -# define ZEXPORTVA FAR CDECL -# endif -# endif -#endif - -#if defined (__BEOS__) -# ifdef ZLIB_DLL -# ifdef ZLIB_INTERNAL -# define ZEXPORT __declspec(dllexport) -# define ZEXPORTVA __declspec(dllexport) -# else -# define ZEXPORT __declspec(dllimport) -# define ZEXPORTVA __declspec(dllimport) -# endif -# endif -#endif - -#ifndef ZEXTERN -# define ZEXTERN extern -#endif -#ifndef ZEXPORT -# define ZEXPORT -#endif -#ifndef ZEXPORTVA -# define ZEXPORTVA -#endif - -#ifndef FAR -# define FAR -#endif - -#if !defined(__MACTYPES__) -typedef unsigned char Byte; /* 8 bits */ -#endif -typedef unsigned int uInt; /* 16 bits or more */ -typedef unsigned long uLong; /* 32 bits or more */ - -#ifdef SMALL_MEDIUM - /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ -# define Bytef Byte FAR -#else - typedef Byte FAR Bytef; -#endif -typedef char FAR charf; -typedef int FAR intf; -typedef uInt FAR uIntf; -typedef uLong FAR uLongf; - -#ifdef STDC - typedef void const *voidpc; - typedef void FAR *voidpf; - typedef void *voidp; -#else - typedef Byte const *voidpc; - typedef Byte FAR *voidpf; - typedef Byte *voidp; -#endif - -#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) -# include -# if (UINT_MAX == 0xffffffffUL) -# define Z_U4 unsigned -# elif (ULONG_MAX == 0xffffffffUL) -# define Z_U4 unsigned long -# elif (USHRT_MAX == 0xffffffffUL) -# define Z_U4 unsigned short -# endif -#endif - -#ifdef Z_U4 - typedef Z_U4 z_crc_t; -#else - typedef unsigned long z_crc_t; -#endif - -#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_UNISTD_H -#endif - -#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_STDARG_H -#endif - -#ifdef STDC -# ifndef Z_SOLO -# include /* for off_t */ -# endif -#endif - -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifndef Z_SOLO -# include /* for va_list */ -# endif -#endif - -#ifdef _WIN32 -# ifndef Z_SOLO -# include /* for wchar_t */ -# endif -#endif - -/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and - * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even - * though the former does not conform to the LFS document), but considering - * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as - * equivalently requesting no 64-bit operations - */ -#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 -# undef _LARGEFILE64_SOURCE -#endif - -#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) -# define Z_HAVE_UNISTD_H -#endif -#ifndef Z_SOLO -# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) -# include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ -# ifdef VMS -# include /* for off_t */ -# endif -# ifndef z_off_t -# define z_off_t off_t -# endif -# endif -#endif - -#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 -# define Z_LFS64 -#endif - -#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) -# define Z_LARGE64 -#endif - -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) -# define Z_WANT64 -#endif - -#if !defined(SEEK_SET) && !defined(Z_SOLO) -# define SEEK_SET 0 /* Seek from beginning of file. */ -# define SEEK_CUR 1 /* Seek from current position. */ -# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ -#endif - -#ifndef z_off_t -# define z_off_t long -#endif - -#if !defined(_WIN32) && defined(Z_LARGE64) -# define z_off64_t off64_t -#else -# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) -# define z_off64_t __int64 -# else -# define z_off64_t z_off_t -# endif -#endif - -/* MVS linker does not support external names larger than 8 bytes */ -#if defined(__MVS__) - #pragma map(deflateInit_,"DEIN") - #pragma map(deflateInit2_,"DEIN2") - #pragma map(deflateEnd,"DEEND") - #pragma map(deflateBound,"DEBND") - #pragma map(inflateInit_,"ININ") - #pragma map(inflateInit2_,"ININ2") - #pragma map(inflateEnd,"INEND") - #pragma map(inflateSync,"INSY") - #pragma map(inflateSetDictionary,"INSEDI") - #pragma map(compressBound,"CMBND") - #pragma map(inflate_table,"INTABL") - #pragma map(inflate_fast,"INFA") - #pragma map(inflate_copyright,"INCOPY") -#endif - -#endif /* ZCONF_H */ diff --git a/platform/win32/msvc/external/zlib/zconf.h.in b/platform/win32/msvc/external/zlib/zconf.h.in deleted file mode 100644 index 9987a775530..00000000000 --- a/platform/win32/msvc/external/zlib/zconf.h.in +++ /dev/null @@ -1,511 +0,0 @@ -/* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2013 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#ifndef ZCONF_H -#define ZCONF_H - -/* - * If you *really* need a unique prefix for all types and library functions, - * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. - * Even better than compiling with -DZ_PREFIX would be to use configure to set - * this permanently in zconf.h using "./configure --zprefix". - */ -#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ -# define Z_PREFIX_SET - -/* all linked symbols */ -# define _dist_code z__dist_code -# define _length_code z__length_code -# define _tr_align z__tr_align -# define _tr_flush_bits z__tr_flush_bits -# define _tr_flush_block z__tr_flush_block -# define _tr_init z__tr_init -# define _tr_stored_block z__tr_stored_block -# define _tr_tally z__tr_tally -# define adler32 z_adler32 -# define adler32_combine z_adler32_combine -# define adler32_combine64 z_adler32_combine64 -# ifndef Z_SOLO -# define compress z_compress -# define compress2 z_compress2 -# define compressBound z_compressBound -# endif -# define crc32 z_crc32 -# define crc32_combine z_crc32_combine -# define crc32_combine64 z_crc32_combine64 -# define deflate z_deflate -# define deflateBound z_deflateBound -# define deflateCopy z_deflateCopy -# define deflateEnd z_deflateEnd -# define deflateInit2_ z_deflateInit2_ -# define deflateInit_ z_deflateInit_ -# define deflateParams z_deflateParams -# define deflatePending z_deflatePending -# define deflatePrime z_deflatePrime -# define deflateReset z_deflateReset -# define deflateResetKeep z_deflateResetKeep -# define deflateSetDictionary z_deflateSetDictionary -# define deflateSetHeader z_deflateSetHeader -# define deflateTune z_deflateTune -# define deflate_copyright z_deflate_copyright -# define get_crc_table z_get_crc_table -# ifndef Z_SOLO -# define gz_error z_gz_error -# define gz_intmax z_gz_intmax -# define gz_strwinerror z_gz_strwinerror -# define gzbuffer z_gzbuffer -# define gzclearerr z_gzclearerr -# define gzclose z_gzclose -# define gzclose_r z_gzclose_r -# define gzclose_w z_gzclose_w -# define gzdirect z_gzdirect -# define gzdopen z_gzdopen -# define gzeof z_gzeof -# define gzerror z_gzerror -# define gzflush z_gzflush -# define gzgetc z_gzgetc -# define gzgetc_ z_gzgetc_ -# define gzgets z_gzgets -# define gzoffset z_gzoffset -# define gzoffset64 z_gzoffset64 -# define gzopen z_gzopen -# define gzopen64 z_gzopen64 -# ifdef _WIN32 -# define gzopen_w z_gzopen_w -# endif -# define gzprintf z_gzprintf -# define gzvprintf z_gzvprintf -# define gzputc z_gzputc -# define gzputs z_gzputs -# define gzread z_gzread -# define gzrewind z_gzrewind -# define gzseek z_gzseek -# define gzseek64 z_gzseek64 -# define gzsetparams z_gzsetparams -# define gztell z_gztell -# define gztell64 z_gztell64 -# define gzungetc z_gzungetc -# define gzwrite z_gzwrite -# endif -# define inflate z_inflate -# define inflateBack z_inflateBack -# define inflateBackEnd z_inflateBackEnd -# define inflateBackInit_ z_inflateBackInit_ -# define inflateCopy z_inflateCopy -# define inflateEnd z_inflateEnd -# define inflateGetHeader z_inflateGetHeader -# define inflateInit2_ z_inflateInit2_ -# define inflateInit_ z_inflateInit_ -# define inflateMark z_inflateMark -# define inflatePrime z_inflatePrime -# define inflateReset z_inflateReset -# define inflateReset2 z_inflateReset2 -# define inflateSetDictionary z_inflateSetDictionary -# define inflateGetDictionary z_inflateGetDictionary -# define inflateSync z_inflateSync -# define inflateSyncPoint z_inflateSyncPoint -# define inflateUndermine z_inflateUndermine -# define inflateResetKeep z_inflateResetKeep -# define inflate_copyright z_inflate_copyright -# define inflate_fast z_inflate_fast -# define inflate_table z_inflate_table -# ifndef Z_SOLO -# define uncompress z_uncompress -# endif -# define zError z_zError -# ifndef Z_SOLO -# define zcalloc z_zcalloc -# define zcfree z_zcfree -# endif -# define zlibCompileFlags z_zlibCompileFlags -# define zlibVersion z_zlibVersion - -/* all zlib typedefs in zlib.h and zconf.h */ -# define Byte z_Byte -# define Bytef z_Bytef -# define alloc_func z_alloc_func -# define charf z_charf -# define free_func z_free_func -# ifndef Z_SOLO -# define gzFile z_gzFile -# endif -# define gz_header z_gz_header -# define gz_headerp z_gz_headerp -# define in_func z_in_func -# define intf z_intf -# define out_func z_out_func -# define uInt z_uInt -# define uIntf z_uIntf -# define uLong z_uLong -# define uLongf z_uLongf -# define voidp z_voidp -# define voidpc z_voidpc -# define voidpf z_voidpf - -/* all zlib structs in zlib.h and zconf.h */ -# define gz_header_s z_gz_header_s -# define internal_state z_internal_state - -#endif - -#if defined(__MSDOS__) && !defined(MSDOS) -# define MSDOS -#endif -#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) -# define OS2 -#endif -#if defined(_WINDOWS) && !defined(WINDOWS) -# define WINDOWS -#endif -#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) -# ifndef WIN32 -# define WIN32 -# endif -#endif -#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) -# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) -# ifndef SYS16BIT -# define SYS16BIT -# endif -# endif -#endif - -/* - * Compile with -DMAXSEG_64K if the alloc function cannot allocate more - * than 64k bytes at a time (needed on systems with 16-bit int). - */ -#ifdef SYS16BIT -# define MAXSEG_64K -#endif -#ifdef MSDOS -# define UNALIGNED_OK -#endif - -#ifdef __STDC_VERSION__ -# ifndef STDC -# define STDC -# endif -# if __STDC_VERSION__ >= 199901L -# ifndef STDC99 -# define STDC99 -# endif -# endif -#endif -#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) -# define STDC -#endif -#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) -# define STDC -#endif -#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) -# define STDC -#endif -#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) -# define STDC -#endif - -#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ -# define STDC -#endif - -#ifndef STDC -# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ -# define const /* note: need a more gentle solution here */ -# endif -#endif - -#if defined(ZLIB_CONST) && !defined(z_const) -# define z_const const -#else -# define z_const -#endif - -/* Some Mac compilers merge all .h files incorrectly: */ -#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) -# define NO_DUMMY_DECL -#endif - -/* Maximum value for memLevel in deflateInit2 */ -#ifndef MAX_MEM_LEVEL -# ifdef MAXSEG_64K -# define MAX_MEM_LEVEL 8 -# else -# define MAX_MEM_LEVEL 9 -# endif -#endif - -/* Maximum value for windowBits in deflateInit2 and inflateInit2. - * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files - * created by gzip. (Files created by minigzip can still be extracted by - * gzip.) - */ -#ifndef MAX_WBITS -# define MAX_WBITS 15 /* 32K LZ77 window */ -#endif - -/* The memory requirements for deflate are (in bytes): - (1 << (windowBits+2)) + (1 << (memLevel+9)) - that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) - plus a few kilobytes for small objects. For example, if you want to reduce - the default memory requirements from 256K to 128K, compile with - make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" - Of course this will generally degrade compression (there's no free lunch). - - The memory requirements for inflate are (in bytes) 1 << windowBits - that is, 32K for windowBits=15 (default value) plus a few kilobytes - for small objects. -*/ - - /* Type declarations */ - -#ifndef OF /* function prototypes */ -# ifdef STDC -# define OF(args) args -# else -# define OF(args) () -# endif -#endif - -#ifndef Z_ARG /* function prototypes for stdarg */ -# if defined(STDC) || defined(Z_HAVE_STDARG_H) -# define Z_ARG(args) args -# else -# define Z_ARG(args) () -# endif -#endif - -/* The following definitions for FAR are needed only for MSDOS mixed - * model programming (small or medium model with some far allocations). - * This was tested only with MSC; for other MSDOS compilers you may have - * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, - * just define FAR to be empty. - */ -#ifdef SYS16BIT -# if defined(M_I86SM) || defined(M_I86MM) - /* MSC small or medium model */ -# define SMALL_MEDIUM -# ifdef _MSC_VER -# define FAR _far -# else -# define FAR far -# endif -# endif -# if (defined(__SMALL__) || defined(__MEDIUM__)) - /* Turbo C small or medium model */ -# define SMALL_MEDIUM -# ifdef __BORLANDC__ -# define FAR _far -# else -# define FAR far -# endif -# endif -#endif - -#if defined(WINDOWS) || defined(WIN32) - /* If building or using zlib as a DLL, define ZLIB_DLL. - * This is not mandatory, but it offers a little performance increase. - */ -# ifdef ZLIB_DLL -# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) -# ifdef ZLIB_INTERNAL -# define ZEXTERN extern __declspec(dllexport) -# else -# define ZEXTERN extern __declspec(dllimport) -# endif -# endif -# endif /* ZLIB_DLL */ - /* If building or using zlib with the WINAPI/WINAPIV calling convention, - * define ZLIB_WINAPI. - * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. - */ -# ifdef ZLIB_WINAPI -# ifdef FAR -# undef FAR -# endif -# include - /* No need for _export, use ZLIB.DEF instead. */ - /* For complete Windows compatibility, use WINAPI, not __stdcall. */ -# define ZEXPORT WINAPI -# ifdef WIN32 -# define ZEXPORTVA WINAPIV -# else -# define ZEXPORTVA FAR CDECL -# endif -# endif -#endif - -#if defined (__BEOS__) -# ifdef ZLIB_DLL -# ifdef ZLIB_INTERNAL -# define ZEXPORT __declspec(dllexport) -# define ZEXPORTVA __declspec(dllexport) -# else -# define ZEXPORT __declspec(dllimport) -# define ZEXPORTVA __declspec(dllimport) -# endif -# endif -#endif - -#ifndef ZEXTERN -# define ZEXTERN extern -#endif -#ifndef ZEXPORT -# define ZEXPORT -#endif -#ifndef ZEXPORTVA -# define ZEXPORTVA -#endif - -#ifndef FAR -# define FAR -#endif - -#if !defined(__MACTYPES__) -typedef unsigned char Byte; /* 8 bits */ -#endif -typedef unsigned int uInt; /* 16 bits or more */ -typedef unsigned long uLong; /* 32 bits or more */ - -#ifdef SMALL_MEDIUM - /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ -# define Bytef Byte FAR -#else - typedef Byte FAR Bytef; -#endif -typedef char FAR charf; -typedef int FAR intf; -typedef uInt FAR uIntf; -typedef uLong FAR uLongf; - -#ifdef STDC - typedef void const *voidpc; - typedef void FAR *voidpf; - typedef void *voidp; -#else - typedef Byte const *voidpc; - typedef Byte FAR *voidpf; - typedef Byte *voidp; -#endif - -#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) -# include -# if (UINT_MAX == 0xffffffffUL) -# define Z_U4 unsigned -# elif (ULONG_MAX == 0xffffffffUL) -# define Z_U4 unsigned long -# elif (USHRT_MAX == 0xffffffffUL) -# define Z_U4 unsigned short -# endif -#endif - -#ifdef Z_U4 - typedef Z_U4 z_crc_t; -#else - typedef unsigned long z_crc_t; -#endif - -#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_UNISTD_H -#endif - -#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_STDARG_H -#endif - -#ifdef STDC -# ifndef Z_SOLO -# include /* for off_t */ -# endif -#endif - -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifndef Z_SOLO -# include /* for va_list */ -# endif -#endif - -#ifdef _WIN32 -# ifndef Z_SOLO -# include /* for wchar_t */ -# endif -#endif - -/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and - * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even - * though the former does not conform to the LFS document), but considering - * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as - * equivalently requesting no 64-bit operations - */ -#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 -# undef _LARGEFILE64_SOURCE -#endif - -#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) -# define Z_HAVE_UNISTD_H -#endif -#ifndef Z_SOLO -# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) -# include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ -# ifdef VMS -# include /* for off_t */ -# endif -# ifndef z_off_t -# define z_off_t off_t -# endif -# endif -#endif - -#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 -# define Z_LFS64 -#endif - -#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) -# define Z_LARGE64 -#endif - -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) -# define Z_WANT64 -#endif - -#if !defined(SEEK_SET) && !defined(Z_SOLO) -# define SEEK_SET 0 /* Seek from beginning of file. */ -# define SEEK_CUR 1 /* Seek from current position. */ -# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ -#endif - -#ifndef z_off_t -# define z_off_t long -#endif - -#if !defined(_WIN32) && defined(Z_LARGE64) -# define z_off64_t off64_t -#else -# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) -# define z_off64_t __int64 -# else -# define z_off64_t z_off_t -# endif -#endif - -/* MVS linker does not support external names larger than 8 bytes */ -#if defined(__MVS__) - #pragma map(deflateInit_,"DEIN") - #pragma map(deflateInit2_,"DEIN2") - #pragma map(deflateEnd,"DEEND") - #pragma map(deflateBound,"DEBND") - #pragma map(inflateInit_,"ININ") - #pragma map(inflateInit2_,"ININ2") - #pragma map(inflateEnd,"INEND") - #pragma map(inflateSync,"INSY") - #pragma map(inflateSetDictionary,"INSEDI") - #pragma map(compressBound,"CMBND") - #pragma map(inflate_table,"INTABL") - #pragma map(inflate_fast,"INFA") - #pragma map(inflate_copyright,"INCOPY") -#endif - -#endif /* ZCONF_H */ diff --git a/platform/win32/msvc/external/zlib/zlib.3 b/platform/win32/msvc/external/zlib/zlib.3 deleted file mode 100644 index 0160e62b69f..00000000000 --- a/platform/win32/msvc/external/zlib/zlib.3 +++ /dev/null @@ -1,151 +0,0 @@ -.TH ZLIB 3 "28 Apr 2013" -.SH NAME -zlib \- compression/decompression library -.SH SYNOPSIS -[see -.I zlib.h -for full description] -.SH DESCRIPTION -The -.I zlib -library is a general purpose data compression library. -The code is thread safe, assuming that the standard library functions -used are thread safe, such as memory allocation routines. -It provides in-memory compression and decompression functions, -including integrity checks of the uncompressed data. -This version of the library supports only one compression method (deflation) -but other algorithms may be added later -with the same stream interface. -.LP -Compression can be done in a single step if the buffers are large enough -or can be done by repeated calls of the compression function. -In the latter case, -the application must provide more input and/or consume the output -(providing more output space) before each call. -.LP -The library also supports reading and writing files in -.IR gzip (1) -(.gz) format -with an interface similar to that of stdio. -.LP -The library does not install any signal handler. -The decoder checks the consistency of the compressed data, -so the library should never crash even in the case of corrupted input. -.LP -All functions of the compression library are documented in the file -.IR zlib.h . -The distribution source includes examples of use of the library -in the files -.I test/example.c -and -.IR test/minigzip.c, -as well as other examples in the -.IR examples/ -directory. -.LP -Changes to this version are documented in the file -.I ChangeLog -that accompanies the source. -.LP -.I zlib -is available in Java using the java.util.zip package: -.IP -http://java.sun.com/developer/technicalArticles/Programming/compression/ -.LP -A Perl interface to -.IR zlib , -written by Paul Marquess (pmqs@cpan.org), -is available at CPAN (Comprehensive Perl Archive Network) sites, -including: -.IP -http://search.cpan.org/~pmqs/IO-Compress-Zlib/ -.LP -A Python interface to -.IR zlib , -written by A.M. Kuchling (amk@magnet.com), -is available in Python 1.5 and later versions: -.IP -http://docs.python.org/library/zlib.html -.LP -.I zlib -is built into -.IR tcl: -.IP -http://wiki.tcl.tk/4610 -.LP -An experimental package to read and write files in .zip format, -written on top of -.I zlib -by Gilles Vollant (info@winimage.com), -is available at: -.IP -http://www.winimage.com/zLibDll/minizip.html -and also in the -.I contrib/minizip -directory of the main -.I zlib -source distribution. -.SH "SEE ALSO" -The -.I zlib -web site can be found at: -.IP -http://zlib.net/ -.LP -The data format used by the zlib library is described by RFC -(Request for Comments) 1950 to 1952 in the files: -.IP -http://tools.ietf.org/html/rfc1950 (for the zlib header and trailer format) -.br -http://tools.ietf.org/html/rfc1951 (for the deflate compressed data format) -.br -http://tools.ietf.org/html/rfc1952 (for the gzip header and trailer format) -.LP -Mark Nelson wrote an article about -.I zlib -for the Jan. 1997 issue of Dr. Dobb's Journal; -a copy of the article is available at: -.IP -http://marknelson.us/1997/01/01/zlib-engine/ -.SH "REPORTING PROBLEMS" -Before reporting a problem, -please check the -.I zlib -web site to verify that you have the latest version of -.IR zlib ; -otherwise, -obtain the latest version and see if the problem still exists. -Please read the -.I zlib -FAQ at: -.IP -http://zlib.net/zlib_faq.html -.LP -before asking for help. -Send questions and/or comments to zlib@gzip.org, -or (for the Windows DLL version) to Gilles Vollant (info@winimage.com). -.SH AUTHORS -Version 1.2.8 -Copyright (C) 1995-2013 Jean-loup Gailly (jloup@gzip.org) -and Mark Adler (madler@alumni.caltech.edu). -.LP -This software is provided "as-is," -without any express or implied warranty. -In no event will the authors be held liable for any damages -arising from the use of this software. -See the distribution directory with respect to requirements -governing redistribution. -The deflate format used by -.I zlib -was defined by Phil Katz. -The deflate and -.I zlib -specifications were written by L. Peter Deutsch. -Thanks to all the people who reported problems and suggested various -improvements in -.IR zlib ; -who are too numerous to cite here. -.LP -UNIX manual page by R. P. C. Rodgers, -U.S. National Library of Medicine (rodgers@nlm.nih.gov). -.\" end of man page diff --git a/platform/win32/msvc/external/zlib/zlib.3.pdf b/platform/win32/msvc/external/zlib/zlib.3.pdf deleted file mode 100644 index a346b5d7e24..00000000000 Binary files a/platform/win32/msvc/external/zlib/zlib.3.pdf and /dev/null differ diff --git a/platform/win32/msvc/external/zlib/zlib.h b/platform/win32/msvc/external/zlib/zlib.h deleted file mode 100644 index 3e0c7672ac5..00000000000 --- a/platform/win32/msvc/external/zlib/zlib.h +++ /dev/null @@ -1,1768 +0,0 @@ -/* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.2.8, April 28th, 2013 - - Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - - - The data format used by the zlib library is described by RFCs (Request for - Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 - (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). -*/ - -#ifndef ZLIB_H -#define ZLIB_H - -#include "zconf.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define ZLIB_VERSION "1.2.8" -#define ZLIB_VERNUM 0x1280 -#define ZLIB_VER_MAJOR 1 -#define ZLIB_VER_MINOR 2 -#define ZLIB_VER_REVISION 8 -#define ZLIB_VER_SUBREVISION 0 - -/* - The 'zlib' compression library provides in-memory compression and - decompression functions, including integrity checks of the uncompressed data. - This version of the library supports only one compression method (deflation) - but other algorithms will be added later and will have the same stream - interface. - - Compression can be done in a single step if the buffers are large enough, - or can be done by repeated calls of the compression function. In the latter - case, the application must provide more input and/or consume the output - (providing more output space) before each call. - - The compressed data format used by default by the in-memory functions is - the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped - around a deflate stream, which is itself documented in RFC 1951. - - The library also supports reading and writing files in gzip (.gz) format - with an interface similar to that of stdio using the functions that start - with "gz". The gzip format is different from the zlib format. gzip is a - gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. - - This library can optionally read and write gzip streams in memory as well. - - The zlib format was designed to be compact and fast for use in memory - and on communications channels. The gzip format was designed for single- - file compression on file systems, has a larger header than zlib to maintain - directory information, and uses a different, slower check method than zlib. - - The library does not install any signal handler. The decoder checks - the consistency of the compressed data, so the library should never crash - even in case of corrupted input. -*/ - -typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); -typedef void (*free_func) OF((voidpf opaque, voidpf address)); - -struct internal_state; - -typedef struct z_stream_s { - z_const Bytef *next_in; /* next input byte */ - uInt avail_in; /* number of bytes available at next_in */ - uLong total_in; /* total number of input bytes read so far */ - - Bytef *next_out; /* next output byte should be put there */ - uInt avail_out; /* remaining free space at next_out */ - uLong total_out; /* total number of bytes output so far */ - - z_const char *msg; /* last error message, NULL if no error */ - struct internal_state FAR *state; /* not visible by applications */ - - alloc_func zalloc; /* used to allocate the internal state */ - free_func zfree; /* used to free the internal state */ - voidpf opaque; /* private data object passed to zalloc and zfree */ - - int data_type; /* best guess about the data type: binary or text */ - uLong adler; /* adler32 value of the uncompressed data */ - uLong reserved; /* reserved for future use */ -} z_stream; - -typedef z_stream FAR *z_streamp; - -/* - gzip header information passed to and from zlib routines. See RFC 1952 - for more details on the meanings of these fields. -*/ -typedef struct gz_header_s { - int text; /* true if compressed data believed to be text */ - uLong time; /* modification time */ - int xflags; /* extra flags (not used when writing a gzip file) */ - int os; /* operating system */ - Bytef *extra; /* pointer to extra field or Z_NULL if none */ - uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ - uInt extra_max; /* space at extra (only when reading header) */ - Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ - uInt name_max; /* space at name (only when reading header) */ - Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ - uInt comm_max; /* space at comment (only when reading header) */ - int hcrc; /* true if there was or will be a header crc */ - int done; /* true when done reading gzip header (not used - when writing a gzip file) */ -} gz_header; - -typedef gz_header FAR *gz_headerp; - -/* - The application must update next_in and avail_in when avail_in has dropped - to zero. It must update next_out and avail_out when avail_out has dropped - to zero. The application must initialize zalloc, zfree and opaque before - calling the init function. All other fields are set by the compression - library and must not be updated by the application. - - The opaque value provided by the application will be passed as the first - parameter for calls of zalloc and zfree. This can be useful for custom - memory management. The compression library attaches no meaning to the - opaque value. - - zalloc must return Z_NULL if there is not enough memory for the object. - If zlib is used in a multi-threaded application, zalloc and zfree must be - thread safe. - - On 16-bit systems, the functions zalloc and zfree must be able to allocate - exactly 65536 bytes, but will not be required to allocate more than this if - the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, pointers - returned by zalloc for objects of exactly 65536 bytes *must* have their - offset normalized to zero. The default allocation function provided by this - library ensures this (see zutil.c). To reduce memory requirements and avoid - any allocation of 64K objects, at the expense of compression ratio, compile - the library with -DMAX_WBITS=14 (see zconf.h). - - The fields total_in and total_out can be used for statistics or progress - reports. After compression, total_in holds the total size of the - uncompressed data and may be saved for use in the decompressor (particularly - if the decompressor wants to decompress everything in a single step). -*/ - - /* constants */ - -#define Z_NO_FLUSH 0 -#define Z_PARTIAL_FLUSH 1 -#define Z_SYNC_FLUSH 2 -#define Z_FULL_FLUSH 3 -#define Z_FINISH 4 -#define Z_BLOCK 5 -#define Z_TREES 6 -/* Allowed flush values; see deflate() and inflate() below for details */ - -#define Z_OK 0 -#define Z_STREAM_END 1 -#define Z_NEED_DICT 2 -#define Z_ERRNO (-1) -#define Z_STREAM_ERROR (-2) -#define Z_DATA_ERROR (-3) -#define Z_MEM_ERROR (-4) -#define Z_BUF_ERROR (-5) -#define Z_VERSION_ERROR (-6) -/* Return codes for the compression/decompression functions. Negative values - * are errors, positive values are used for special but normal events. - */ - -#define Z_NO_COMPRESSION 0 -#define Z_BEST_SPEED 1 -#define Z_BEST_COMPRESSION 9 -#define Z_DEFAULT_COMPRESSION (-1) -/* compression levels */ - -#define Z_FILTERED 1 -#define Z_HUFFMAN_ONLY 2 -#define Z_RLE 3 -#define Z_FIXED 4 -#define Z_DEFAULT_STRATEGY 0 -/* compression strategy; see deflateInit2() below for details */ - -#define Z_BINARY 0 -#define Z_TEXT 1 -#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ -#define Z_UNKNOWN 2 -/* Possible values of the data_type field (though see inflate()) */ - -#define Z_DEFLATED 8 -/* The deflate compression method (the only one supported in this version) */ - -#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ - -#define zlib_version zlibVersion() -/* for compatibility with versions < 1.0.2 */ - - - /* basic functions */ - -ZEXTERN const char * ZEXPORT zlibVersion OF((void)); -/* The application can compare zlibVersion and ZLIB_VERSION for consistency. - If the first character differs, the library code actually used is not - compatible with the zlib.h header file used by the application. This check - is automatically made by deflateInit and inflateInit. - */ - -/* -ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); - - Initializes the internal stream state for compression. The fields - zalloc, zfree and opaque must be initialized before by the caller. If - zalloc and zfree are set to Z_NULL, deflateInit updates them to use default - allocation functions. - - The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: - 1 gives best speed, 9 gives best compression, 0 gives no compression at all - (the input data is simply copied a block at a time). Z_DEFAULT_COMPRESSION - requests a default compromise between speed and compression (currently - equivalent to level 6). - - deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if level is not a valid compression level, or - Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible - with the version assumed by the caller (ZLIB_VERSION). msg is set to null - if there is no error message. deflateInit does not perform any compression: - this will be done by deflate(). -*/ - - -ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); -/* - deflate compresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may introduce - some output latency (reading input without producing any output) except when - forced to flush. - - The detailed semantics are as follows. deflate performs one or both of the - following actions: - - - Compress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in and avail_in are updated and - processing will resume at this point for the next call of deflate(). - - - Provide more output starting at next_out and update next_out and avail_out - accordingly. This action is forced if the parameter flush is non zero. - Forcing flush frequently degrades the compression ratio, so this parameter - should be set only when necessary (in interactive applications). Some - output may be provided even if flush is not set. - - Before the call of deflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming more - output, and updating avail_in or avail_out accordingly; avail_out should - never be zero before the call. The application can consume the compressed - output when it wants, for example when the output buffer is full (avail_out - == 0), or after each call of deflate(). If deflate returns Z_OK and with - zero avail_out, it must be called again after making room in the output - buffer because there might be more output pending. - - Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to - decide how much data to accumulate before producing output, in order to - maximize compression. - - If the parameter flush is set to Z_SYNC_FLUSH, all pending output is - flushed to the output buffer and the output is aligned on a byte boundary, so - that the decompressor can get all input data available so far. (In - particular avail_in is zero after the call if enough output space has been - provided before the call.) Flushing may degrade compression for some - compression algorithms and so it should be used only when necessary. This - completes the current deflate block and follows it with an empty stored block - that is three bits plus filler bits to the next byte, followed by four bytes - (00 00 ff ff). - - If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the - output buffer, but the output is not aligned to a byte boundary. All of the - input data so far will be available to the decompressor, as for Z_SYNC_FLUSH. - This completes the current deflate block and follows it with an empty fixed - codes block that is 10 bits long. This assures that enough bytes are output - in order for the decompressor to finish the block before the empty fixed code - block. - - If flush is set to Z_BLOCK, a deflate block is completed and emitted, as - for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to - seven bits of the current block are held to be written as the next byte after - the next deflate block is completed. In this case, the decompressor may not - be provided enough bits at this point in order to complete decompression of - the data provided so far to the compressor. It may need to wait for the next - block to be emitted. This is for advanced applications that need to control - the emission of deflate blocks. - - If flush is set to Z_FULL_FLUSH, all output is flushed as with - Z_SYNC_FLUSH, and the compression state is reset so that decompression can - restart from this point if previous compressed data has been damaged or if - random access is desired. Using Z_FULL_FLUSH too often can seriously degrade - compression. - - If deflate returns with avail_out == 0, this function must be called again - with the same value of the flush parameter and more output space (updated - avail_out), until the flush is complete (deflate returns with non-zero - avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that - avail_out is greater than six to avoid repeated flush markers due to - avail_out == 0 on return. - - If the parameter flush is set to Z_FINISH, pending input is processed, - pending output is flushed and deflate returns with Z_STREAM_END if there was - enough output space; if deflate returns with Z_OK, this function must be - called again with Z_FINISH and more output space (updated avail_out) but no - more input data, until it returns with Z_STREAM_END or an error. After - deflate has returned Z_STREAM_END, the only possible operations on the stream - are deflateReset or deflateEnd. - - Z_FINISH can be used immediately after deflateInit if all the compression - is to be done in a single step. In this case, avail_out must be at least the - value returned by deflateBound (see below). Then deflate is guaranteed to - return Z_STREAM_END. If not enough output space is provided, deflate will - not return Z_STREAM_END, and it must be called again as described above. - - deflate() sets strm->adler to the adler32 checksum of all input read - so far (that is, total_in bytes). - - deflate() may update strm->data_type if it can make a good guess about - the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered - binary. This field is only for information purposes and does not affect the - compression algorithm in any manner. - - deflate() returns Z_OK if some progress has been made (more input - processed or more output produced), Z_STREAM_END if all input has been - consumed and all output has been produced (only when flush is set to - Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example - if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible - (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not - fatal, and deflate() can be called again with more input and more output - space to continue compressing. -*/ - - -ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any pending - output. - - deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the - stream state was inconsistent, Z_DATA_ERROR if the stream was freed - prematurely (some input or output was discarded). In the error case, msg - may be set but then points to a static string (which must not be - deallocated). -*/ - - -/* -ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); - - Initializes the internal stream state for decompression. The fields - next_in, avail_in, zalloc, zfree and opaque must be initialized before by - the caller. If next_in is not Z_NULL and avail_in is large enough (the - exact value depends on the compression method), inflateInit determines the - compression method from the zlib header and allocates all data structures - accordingly; otherwise the allocation will be deferred to the first call of - inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to - use default allocation functions. - - inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_VERSION_ERROR if the zlib library version is incompatible with the - version assumed by the caller, or Z_STREAM_ERROR if the parameters are - invalid, such as a null pointer to the structure. msg is set to null if - there is no error message. inflateInit does not perform any decompression - apart from possibly reading the zlib header if present: actual decompression - will be done by inflate(). (So next_in and avail_in may be modified, but - next_out and avail_out are unused and unchanged.) The current implementation - of inflateInit() does not process any header information -- that is deferred - until inflate() is called. -*/ - - -ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); -/* - inflate decompresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may introduce - some output latency (reading input without producing any output) except when - forced to flush. - - The detailed semantics are as follows. inflate performs one or both of the - following actions: - - - Decompress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in is updated and processing will - resume at this point for the next call of inflate(). - - - Provide more output starting at next_out and update next_out and avail_out - accordingly. inflate() provides as much output as possible, until there is - no more input data or no more space in the output buffer (see below about - the flush parameter). - - Before the call of inflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming more - output, and updating the next_* and avail_* values accordingly. The - application can consume the uncompressed output when it wants, for example - when the output buffer is full (avail_out == 0), or after each call of - inflate(). If inflate returns Z_OK and with zero avail_out, it must be - called again after making room in the output buffer because there might be - more output pending. - - The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH, - Z_BLOCK, or Z_TREES. Z_SYNC_FLUSH requests that inflate() flush as much - output as possible to the output buffer. Z_BLOCK requests that inflate() - stop if and when it gets to the next deflate block boundary. When decoding - the zlib or gzip format, this will cause inflate() to return immediately - after the header and before the first block. When doing a raw inflate, - inflate() will go ahead and process the first block, and will return when it - gets to the end of that block, or when it runs out of data. - - The Z_BLOCK option assists in appending to or combining deflate streams. - Also to assist in this, on return inflate() will set strm->data_type to the - number of unused bits in the last byte taken from strm->next_in, plus 64 if - inflate() is currently decoding the last block in the deflate stream, plus - 128 if inflate() returned immediately after decoding an end-of-block code or - decoding the complete header up to just before the first byte of the deflate - stream. The end-of-block will not be indicated until all of the uncompressed - data from that block has been written to strm->next_out. The number of - unused bits may in general be greater than seven, except when bit 7 of - data_type is set, in which case the number of unused bits will be less than - eight. data_type is set as noted here every time inflate() returns for all - flush options, and so can be used to determine the amount of currently - consumed input in bits. - - The Z_TREES option behaves as Z_BLOCK does, but it also returns when the - end of each deflate block header is reached, before any actual data in that - block is decoded. This allows the caller to determine the length of the - deflate block header for later use in random access within a deflate block. - 256 is added to the value of strm->data_type when inflate() returns - immediately after reaching the end of the deflate block header. - - inflate() should normally be called until it returns Z_STREAM_END or an - error. However if all decompression is to be performed in a single step (a - single call of inflate), the parameter flush should be set to Z_FINISH. In - this case all pending input is processed and all pending output is flushed; - avail_out must be large enough to hold all of the uncompressed data for the - operation to complete. (The size of the uncompressed data may have been - saved by the compressor for this purpose.) The use of Z_FINISH is not - required to perform an inflation in one step. However it may be used to - inform inflate that a faster approach can be used for the single inflate() - call. Z_FINISH also informs inflate to not maintain a sliding window if the - stream completes, which reduces inflate's memory footprint. If the stream - does not complete, either because not all of the stream is provided or not - enough output space is provided, then a sliding window will be allocated and - inflate() can be called again to continue the operation as if Z_NO_FLUSH had - been used. - - In this implementation, inflate() always flushes as much output as - possible to the output buffer, and always uses the faster approach on the - first call. So the effects of the flush parameter in this implementation are - on the return value of inflate() as noted below, when inflate() returns early - when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of - memory for a sliding window when Z_FINISH is used. - - If a preset dictionary is needed after this call (see inflateSetDictionary - below), inflate sets strm->adler to the Adler-32 checksum of the dictionary - chosen by the compressor and returns Z_NEED_DICT; otherwise it sets - strm->adler to the Adler-32 checksum of all output produced so far (that is, - total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described - below. At the end of the stream, inflate() checks that its computed adler32 - checksum is equal to that saved by the compressor and returns Z_STREAM_END - only if the checksum is correct. - - inflate() can decompress and check either zlib-wrapped or gzip-wrapped - deflate data. The header type is detected automatically, if requested when - initializing with inflateInit2(). Any information contained in the gzip - header is not retained, so applications that need that information should - instead use raw inflate, see inflateInit2() below, or inflateBack() and - perform their own processing of the gzip header and trailer. When processing - gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output - producted so far. The CRC-32 is checked against the gzip trailer. - - inflate() returns Z_OK if some progress has been made (more input processed - or more output produced), Z_STREAM_END if the end of the compressed data has - been reached and all uncompressed output has been produced, Z_NEED_DICT if a - preset dictionary is needed at this point, Z_DATA_ERROR if the input data was - corrupted (input stream not conforming to the zlib format or incorrect check - value), Z_STREAM_ERROR if the stream structure was inconsistent (for example - next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory, - Z_BUF_ERROR if no progress is possible or if there was not enough room in the - output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and - inflate() can be called again with more input and more output space to - continue decompressing. If Z_DATA_ERROR is returned, the application may - then call inflateSync() to look for a good compression block if a partial - recovery of the data is desired. -*/ - - -ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any pending - output. - - inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state - was inconsistent. In the error case, msg may be set but then points to a - static string (which must not be deallocated). -*/ - - - /* Advanced functions */ - -/* - The following functions are needed only in some special applications. -*/ - -/* -ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, - int level, - int method, - int windowBits, - int memLevel, - int strategy)); - - This is another version of deflateInit with more compression options. The - fields next_in, zalloc, zfree and opaque must be initialized before by the - caller. - - The method parameter is the compression method. It must be Z_DEFLATED in - this version of the library. - - The windowBits parameter is the base two logarithm of the window size - (the size of the history buffer). It should be in the range 8..15 for this - version of the library. Larger values of this parameter result in better - compression at the expense of memory usage. The default value is 15 if - deflateInit is used instead. - - windowBits can also be -8..-15 for raw deflate. In this case, -windowBits - determines the window size. deflate() will then generate raw deflate data - with no zlib header or trailer, and will not compute an adler32 check value. - - windowBits can also be greater than 15 for optional gzip encoding. Add - 16 to windowBits to write a simple gzip header and trailer around the - compressed data instead of a zlib wrapper. The gzip header will have no - file name, no extra data, no comment, no modification time (set to zero), no - header crc, and the operating system will be set to 255 (unknown). If a - gzip stream is being written, strm->adler is a crc32 instead of an adler32. - - The memLevel parameter specifies how much memory should be allocated - for the internal compression state. memLevel=1 uses minimum memory but is - slow and reduces compression ratio; memLevel=9 uses maximum memory for - optimal speed. The default value is 8. See zconf.h for total memory usage - as a function of windowBits and memLevel. - - The strategy parameter is used to tune the compression algorithm. Use the - value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a - filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no - string match), or Z_RLE to limit match distances to one (run-length - encoding). Filtered data consists mostly of small values with a somewhat - random distribution. In this case, the compression algorithm is tuned to - compress them better. The effect of Z_FILTERED is to force more Huffman - coding and less string matching; it is somewhat intermediate between - Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as - fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The - strategy parameter only affects the compression ratio but not the - correctness of the compressed output even if it is not set appropriately. - Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler - decoder for special applications. - - deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid - method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is - incompatible with the version assumed by the caller (ZLIB_VERSION). msg is - set to null if there is no error message. deflateInit2 does not perform any - compression: this will be done by deflate(). -*/ - -ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); -/* - Initializes the compression dictionary from the given byte sequence - without producing any compressed output. When using the zlib format, this - function must be called immediately after deflateInit, deflateInit2 or - deflateReset, and before any call of deflate. When doing raw deflate, this - function must be called either before any call of deflate, or immediately - after the completion of a deflate block, i.e. after all input has been - consumed and all output has been delivered when using any of the flush - options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH. The - compressor and decompressor must use exactly the same dictionary (see - inflateSetDictionary). - - The dictionary should consist of strings (byte sequences) that are likely - to be encountered later in the data to be compressed, with the most commonly - used strings preferably put towards the end of the dictionary. Using a - dictionary is most useful when the data to be compressed is short and can be - predicted with good accuracy; the data can then be compressed better than - with the default empty dictionary. - - Depending on the size of the compression data structures selected by - deflateInit or deflateInit2, a part of the dictionary may in effect be - discarded, for example if the dictionary is larger than the window size - provided in deflateInit or deflateInit2. Thus the strings most likely to be - useful should be put at the end of the dictionary, not at the front. In - addition, the current implementation of deflate will use at most the window - size minus 262 bytes of the provided dictionary. - - Upon return of this function, strm->adler is set to the adler32 value - of the dictionary; the decompressor may later use this value to determine - which dictionary has been used by the compressor. (The adler32 value - applies to the whole dictionary even if only a subset of the dictionary is - actually used by the compressor.) If a raw deflate was requested, then the - adler32 value is not computed and strm->adler is not set. - - deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a - parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is - inconsistent (for example if deflate has already been called for this stream - or if not at a block boundary for raw deflate). deflateSetDictionary does - not perform any compression: this will be done by deflate(). -*/ - -ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, - z_streamp source)); -/* - Sets the destination stream as a complete copy of the source stream. - - This function can be useful when several compression strategies will be - tried, for example when there are several ways of pre-processing the input - data with a filter. The streams that will be discarded should then be freed - by calling deflateEnd. Note that deflateCopy duplicates the internal - compression state which can be quite large, so this strategy is slow and can - consume lots of memory. - - deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if the source stream state was inconsistent - (such as zalloc being Z_NULL). msg is left unchanged in both source and - destination. -*/ - -ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); -/* - This function is equivalent to deflateEnd followed by deflateInit, - but does not free and reallocate all the internal compression state. The - stream will keep the same compression level and any other attributes that - may have been set by deflateInit2. - - deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being Z_NULL). -*/ - -ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, - int level, - int strategy)); -/* - Dynamically update the compression level and compression strategy. The - interpretation of level and strategy is as in deflateInit2. This can be - used to switch between compression and straight copy of the input data, or - to switch to a different kind of input data requiring a different strategy. - If the compression level is changed, the input available so far is - compressed with the old level (and may be flushed); the new level will take - effect only at the next call of deflate(). - - Before the call of deflateParams, the stream state must be set as for - a call of deflate(), since the currently available input may have to be - compressed and flushed. In particular, strm->avail_out must be non-zero. - - deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source - stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR if - strm->avail_out was zero. -*/ - -ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, - int good_length, - int max_lazy, - int nice_length, - int max_chain)); -/* - Fine tune deflate's internal compression parameters. This should only be - used by someone who understands the algorithm used by zlib's deflate for - searching for the best matching string, and even then only by the most - fanatic optimizer trying to squeeze out the last compressed bit for their - specific input data. Read the deflate.c source code for the meaning of the - max_lazy, good_length, nice_length, and max_chain parameters. - - deflateTune() can be called after deflateInit() or deflateInit2(), and - returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. - */ - -ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, - uLong sourceLen)); -/* - deflateBound() returns an upper bound on the compressed size after - deflation of sourceLen bytes. It must be called after deflateInit() or - deflateInit2(), and after deflateSetHeader(), if used. This would be used - to allocate an output buffer for deflation in a single pass, and so would be - called before deflate(). If that first deflate() call is provided the - sourceLen input bytes, an output buffer allocated to the size returned by - deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed - to return Z_STREAM_END. Note that it is possible for the compressed size to - be larger than the value returned by deflateBound() if flush options other - than Z_FINISH or Z_NO_FLUSH are used. -*/ - -ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm, - unsigned *pending, - int *bits)); -/* - deflatePending() returns the number of bytes and bits of output that have - been generated, but not yet provided in the available output. The bytes not - provided would be due to the available output space having being consumed. - The number of bits of output not provided are between 0 and 7, where they - await more bits to join them in order to fill out a full byte. If pending - or bits are Z_NULL, then those values are not set. - - deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. - */ - -ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, - int bits, - int value)); -/* - deflatePrime() inserts bits in the deflate output stream. The intent - is that this function is used to start off the deflate output with the bits - leftover from a previous deflate stream when appending to it. As such, this - function can only be used for raw deflate, and must be used before the first - deflate() call after a deflateInit2() or deflateReset(). bits must be less - than or equal to 16, and that many of the least significant bits of value - will be inserted in the output. - - deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough - room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the - source stream state was inconsistent. -*/ - -ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, - gz_headerp head)); -/* - deflateSetHeader() provides gzip header information for when a gzip - stream is requested by deflateInit2(). deflateSetHeader() may be called - after deflateInit2() or deflateReset() and before the first call of - deflate(). The text, time, os, extra field, name, and comment information - in the provided gz_header structure are written to the gzip header (xflag is - ignored -- the extra flags are set according to the compression level). The - caller must assure that, if not Z_NULL, name and comment are terminated with - a zero byte, and that if extra is not Z_NULL, that extra_len bytes are - available there. If hcrc is true, a gzip header crc is included. Note that - the current versions of the command-line version of gzip (up through version - 1.3.x) do not support header crc's, and will report that it is a "multi-part - gzip file" and give up. - - If deflateSetHeader is not used, the default gzip header has text false, - the time set to zero, and os set to 255, with no extra, name, or comment - fields. The gzip header is returned to the default state by deflateReset(). - - deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -/* -ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, - int windowBits)); - - This is another version of inflateInit with an extra parameter. The - fields next_in, avail_in, zalloc, zfree and opaque must be initialized - before by the caller. - - The windowBits parameter is the base two logarithm of the maximum window - size (the size of the history buffer). It should be in the range 8..15 for - this version of the library. The default value is 15 if inflateInit is used - instead. windowBits must be greater than or equal to the windowBits value - provided to deflateInit2() while compressing, or it must be equal to 15 if - deflateInit2() was not used. If a compressed stream with a larger window - size is given as input, inflate() will return with the error code - Z_DATA_ERROR instead of trying to allocate a larger window. - - windowBits can also be zero to request that inflate use the window size in - the zlib header of the compressed stream. - - windowBits can also be -8..-15 for raw inflate. In this case, -windowBits - determines the window size. inflate() will then process raw deflate data, - not looking for a zlib or gzip header, not generating a check value, and not - looking for any check values for comparison at the end of the stream. This - is for use with other formats that use the deflate compressed data format - such as zip. Those formats provide their own check values. If a custom - format is developed using the raw deflate format for compressed data, it is - recommended that a check value such as an adler32 or a crc32 be applied to - the uncompressed data as is done in the zlib, gzip, and zip formats. For - most applications, the zlib format should be used as is. Note that comments - above on the use in deflateInit2() applies to the magnitude of windowBits. - - windowBits can also be greater than 15 for optional gzip decoding. Add - 32 to windowBits to enable zlib and gzip decoding with automatic header - detection, or add 16 to decode only the gzip format (the zlib format will - return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a - crc32 instead of an adler32. - - inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_VERSION_ERROR if the zlib library version is incompatible with the - version assumed by the caller, or Z_STREAM_ERROR if the parameters are - invalid, such as a null pointer to the structure. msg is set to null if - there is no error message. inflateInit2 does not perform any decompression - apart from possibly reading the zlib header if present: actual decompression - will be done by inflate(). (So next_in and avail_in may be modified, but - next_out and avail_out are unused and unchanged.) The current implementation - of inflateInit2() does not process any header information -- that is - deferred until inflate() is called. -*/ - -ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); -/* - Initializes the decompression dictionary from the given uncompressed byte - sequence. This function must be called immediately after a call of inflate, - if that call returned Z_NEED_DICT. The dictionary chosen by the compressor - can be determined from the adler32 value returned by that call of inflate. - The compressor and decompressor must use exactly the same dictionary (see - deflateSetDictionary). For raw inflate, this function can be called at any - time to set the dictionary. If the provided dictionary is smaller than the - window and there is already data in the window, then the provided dictionary - will amend what's there. The application must insure that the dictionary - that was used for compression is provided. - - inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a - parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is - inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the - expected one (incorrect adler32 value). inflateSetDictionary does not - perform any decompression: this will be done by subsequent calls of - inflate(). -*/ - -ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm, - Bytef *dictionary, - uInt *dictLength)); -/* - Returns the sliding dictionary being maintained by inflate. dictLength is - set to the number of bytes in the dictionary, and that many bytes are copied - to dictionary. dictionary must have enough space, where 32768 bytes is - always enough. If inflateGetDictionary() is called with dictionary equal to - Z_NULL, then only the dictionary length is returned, and nothing is copied. - Similary, if dictLength is Z_NULL, then it is not set. - - inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the - stream state is inconsistent. -*/ - -ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); -/* - Skips invalid compressed data until a possible full flush point (see above - for the description of deflate with Z_FULL_FLUSH) can be found, or until all - available input is skipped. No output is provided. - - inflateSync searches for a 00 00 FF FF pattern in the compressed data. - All full flush points have this pattern, but not all occurrences of this - pattern are full flush points. - - inflateSync returns Z_OK if a possible full flush point has been found, - Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point - has been found, or Z_STREAM_ERROR if the stream structure was inconsistent. - In the success case, the application may save the current current value of - total_in which indicates where valid compressed data was found. In the - error case, the application may repeatedly call inflateSync, providing more - input each time, until success or end of the input data. -*/ - -ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, - z_streamp source)); -/* - Sets the destination stream as a complete copy of the source stream. - - This function can be useful when randomly accessing a large stream. The - first pass through the stream can periodically record the inflate state, - allowing restarting inflate at those points when randomly accessing the - stream. - - inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if the source stream state was inconsistent - (such as zalloc being Z_NULL). msg is left unchanged in both source and - destination. -*/ - -ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); -/* - This function is equivalent to inflateEnd followed by inflateInit, - but does not free and reallocate all the internal decompression state. The - stream will keep attributes that may have been set by inflateInit2. - - inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being Z_NULL). -*/ - -ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, - int windowBits)); -/* - This function is the same as inflateReset, but it also permits changing - the wrap and window size requests. The windowBits parameter is interpreted - the same as it is for inflateInit2. - - inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being Z_NULL), or if - the windowBits parameter is invalid. -*/ - -ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, - int bits, - int value)); -/* - This function inserts bits in the inflate input stream. The intent is - that this function is used to start inflating at a bit position in the - middle of a byte. The provided bits will be used before any bytes are used - from next_in. This function should only be used with raw inflate, and - should be used before the first inflate() call after inflateInit2() or - inflateReset(). bits must be less than or equal to 16, and that many of the - least significant bits of value will be inserted in the input. - - If bits is negative, then the input stream bit buffer is emptied. Then - inflatePrime() can be called again to put bits in the buffer. This is used - to clear out bits leftover after feeding inflate a block description prior - to feeding inflate codes. - - inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); -/* - This function returns two values, one in the lower 16 bits of the return - value, and the other in the remaining upper bits, obtained by shifting the - return value down 16 bits. If the upper value is -1 and the lower value is - zero, then inflate() is currently decoding information outside of a block. - If the upper value is -1 and the lower value is non-zero, then inflate is in - the middle of a stored block, with the lower value equaling the number of - bytes from the input remaining to copy. If the upper value is not -1, then - it is the number of bits back from the current bit position in the input of - the code (literal or length/distance pair) currently being processed. In - that case the lower value is the number of bytes already emitted for that - code. - - A code is being processed if inflate is waiting for more input to complete - decoding of the code, or if it has completed decoding but is waiting for - more output space to write the literal or match data. - - inflateMark() is used to mark locations in the input data for random - access, which may be at bit positions, and to note those cases where the - output of a code may span boundaries of random access blocks. The current - location in the input stream can be determined from avail_in and data_type - as noted in the description for the Z_BLOCK flush parameter for inflate. - - inflateMark returns the value noted above or -1 << 16 if the provided - source stream state was inconsistent. -*/ - -ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, - gz_headerp head)); -/* - inflateGetHeader() requests that gzip header information be stored in the - provided gz_header structure. inflateGetHeader() may be called after - inflateInit2() or inflateReset(), and before the first call of inflate(). - As inflate() processes the gzip stream, head->done is zero until the header - is completed, at which time head->done is set to one. If a zlib stream is - being decoded, then head->done is set to -1 to indicate that there will be - no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be - used to force inflate() to return immediately after header processing is - complete and before any actual data is decompressed. - - The text, time, xflags, and os fields are filled in with the gzip header - contents. hcrc is set to true if there is a header CRC. (The header CRC - was valid if done is set to one.) If extra is not Z_NULL, then extra_max - contains the maximum number of bytes to write to extra. Once done is true, - extra_len contains the actual extra field length, and extra contains the - extra field, or that field truncated if extra_max is less than extra_len. - If name is not Z_NULL, then up to name_max characters are written there, - terminated with a zero unless the length is greater than name_max. If - comment is not Z_NULL, then up to comm_max characters are written there, - terminated with a zero unless the length is greater than comm_max. When any - of extra, name, or comment are not Z_NULL and the respective field is not - present in the header, then that field is set to Z_NULL to signal its - absence. This allows the use of deflateSetHeader() with the returned - structure to duplicate the header. However if those fields are set to - allocated memory, then the application will need to save those pointers - elsewhere so that they can be eventually freed. - - If inflateGetHeader is not used, then the header information is simply - discarded. The header is always checked for validity, including the header - CRC if present. inflateReset() will reset the process to discard the header - information. The application would need to call inflateGetHeader() again to - retrieve the header from the next gzip stream. - - inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -/* -ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, - unsigned char FAR *window)); - - Initialize the internal stream state for decompression using inflateBack() - calls. The fields zalloc, zfree and opaque in strm must be initialized - before the call. If zalloc and zfree are Z_NULL, then the default library- - derived memory allocation routines are used. windowBits is the base two - logarithm of the window size, in the range 8..15. window is a caller - supplied buffer of that size. Except for special applications where it is - assured that deflate was used with small window sizes, windowBits must be 15 - and a 32K byte window must be supplied to be able to decompress general - deflate streams. - - See inflateBack() for the usage of these routines. - - inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of - the parameters are invalid, Z_MEM_ERROR if the internal state could not be - allocated, or Z_VERSION_ERROR if the version of the library does not match - the version of the header file. -*/ - -typedef unsigned (*in_func) OF((void FAR *, - z_const unsigned char FAR * FAR *)); -typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); - -ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, - in_func in, void FAR *in_desc, - out_func out, void FAR *out_desc)); -/* - inflateBack() does a raw inflate with a single call using a call-back - interface for input and output. This is potentially more efficient than - inflate() for file i/o applications, in that it avoids copying between the - output and the sliding window by simply making the window itself the output - buffer. inflate() can be faster on modern CPUs when used with large - buffers. inflateBack() trusts the application to not change the output - buffer passed by the output function, at least until inflateBack() returns. - - inflateBackInit() must be called first to allocate the internal state - and to initialize the state with the user-provided window buffer. - inflateBack() may then be used multiple times to inflate a complete, raw - deflate stream with each call. inflateBackEnd() is then called to free the - allocated state. - - A raw deflate stream is one with no zlib or gzip header or trailer. - This routine would normally be used in a utility that reads zip or gzip - files and writes out uncompressed files. The utility would decode the - header and process the trailer on its own, hence this routine expects only - the raw deflate stream to decompress. This is different from the normal - behavior of inflate(), which expects either a zlib or gzip header and - trailer around the deflate stream. - - inflateBack() uses two subroutines supplied by the caller that are then - called by inflateBack() for input and output. inflateBack() calls those - routines until it reads a complete deflate stream and writes out all of the - uncompressed data, or until it encounters an error. The function's - parameters and return types are defined above in the in_func and out_func - typedefs. inflateBack() will call in(in_desc, &buf) which should return the - number of bytes of provided input, and a pointer to that input in buf. If - there is no input available, in() must return zero--buf is ignored in that - case--and inflateBack() will return a buffer error. inflateBack() will call - out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out() - should return zero on success, or non-zero on failure. If out() returns - non-zero, inflateBack() will return with an error. Neither in() nor out() - are permitted to change the contents of the window provided to - inflateBackInit(), which is also the buffer that out() uses to write from. - The length written by out() will be at most the window size. Any non-zero - amount of input may be provided by in(). - - For convenience, inflateBack() can be provided input on the first call by - setting strm->next_in and strm->avail_in. If that input is exhausted, then - in() will be called. Therefore strm->next_in must be initialized before - calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called - immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in - must also be initialized, and then if strm->avail_in is not zero, input will - initially be taken from strm->next_in[0 .. strm->avail_in - 1]. - - The in_desc and out_desc parameters of inflateBack() is passed as the - first parameter of in() and out() respectively when they are called. These - descriptors can be optionally used to pass any information that the caller- - supplied in() and out() functions need to do their job. - - On return, inflateBack() will set strm->next_in and strm->avail_in to - pass back any unused input that was provided by the last in() call. The - return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR - if in() or out() returned an error, Z_DATA_ERROR if there was a format error - in the deflate stream (in which case strm->msg is set to indicate the nature - of the error), or Z_STREAM_ERROR if the stream was not properly initialized. - In the case of Z_BUF_ERROR, an input or output error can be distinguished - using strm->next_in which will be Z_NULL only if in() returned an error. If - strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning - non-zero. (in() will always be called before out(), so strm->next_in is - assured to be defined if out() returns non-zero.) Note that inflateBack() - cannot return Z_OK. -*/ - -ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); -/* - All memory allocated by inflateBackInit() is freed. - - inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream - state was inconsistent. -*/ - -ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); -/* Return flags indicating compile-time options. - - Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: - 1.0: size of uInt - 3.2: size of uLong - 5.4: size of voidpf (pointer) - 7.6: size of z_off_t - - Compiler, assembler, and debug options: - 8: DEBUG - 9: ASMV or ASMINF -- use ASM code - 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention - 11: 0 (reserved) - - One-time table building (smaller code, but not thread-safe if true): - 12: BUILDFIXED -- build static block decoding tables when needed - 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed - 14,15: 0 (reserved) - - Library content (indicates missing functionality): - 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking - deflate code when not needed) - 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect - and decode gzip streams (to avoid linking crc code) - 18-19: 0 (reserved) - - Operation variations (changes in library functionality): - 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate - 21: FASTEST -- deflate algorithm with only one, lowest compression level - 22,23: 0 (reserved) - - The sprintf variant used by gzprintf (zero is best): - 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format - 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! - 26: 0 = returns value, 1 = void -- 1 means inferred string length returned - - Remainder: - 27-31: 0 (reserved) - */ - -#ifndef Z_SOLO - - /* utility functions */ - -/* - The following utility functions are implemented on top of the basic - stream-oriented functions. To simplify the interface, some default options - are assumed (compression level and memory usage, standard memory allocation - functions). The source code of these utility functions can be modified if - you need special options. -*/ - -ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); -/* - Compresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total size - of the destination buffer, which must be at least the value returned by - compressBound(sourceLen). Upon exit, destLen is the actual size of the - compressed buffer. - - compress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer. -*/ - -ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen, - int level)); -/* - Compresses the source buffer into the destination buffer. The level - parameter has the same meaning as in deflateInit. sourceLen is the byte - length of the source buffer. Upon entry, destLen is the total size of the - destination buffer, which must be at least the value returned by - compressBound(sourceLen). Upon exit, destLen is the actual size of the - compressed buffer. - - compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_BUF_ERROR if there was not enough room in the output buffer, - Z_STREAM_ERROR if the level parameter is invalid. -*/ - -ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); -/* - compressBound() returns an upper bound on the compressed size after - compress() or compress2() on sourceLen bytes. It would be used before a - compress() or compress2() call to allocate the destination buffer. -*/ - -ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); -/* - Decompresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total size - of the destination buffer, which must be large enough to hold the entire - uncompressed data. (The size of the uncompressed data must have been saved - previously by the compressor and transmitted to the decompressor by some - mechanism outside the scope of this compression library.) Upon exit, destLen - is the actual size of the uncompressed buffer. - - uncompress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. In - the case where there is not enough room, uncompress() will fill the output - buffer with the uncompressed data up to that point. -*/ - - /* gzip file access functions */ - -/* - This library supports reading and writing files in gzip (.gz) format with - an interface similar to that of stdio, using the functions that start with - "gz". The gzip format is different from the zlib format. gzip is a gzip - wrapper, documented in RFC 1952, wrapped around a deflate stream. -*/ - -typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */ - -/* -ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); - - Opens a gzip (.gz) file for reading or writing. The mode parameter is as - in fopen ("rb" or "wb") but can also include a compression level ("wb9") or - a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only - compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F' - for fixed code compression as in "wb9F". (See the description of - deflateInit2 for more information about the strategy parameter.) 'T' will - request transparent writing or appending with no compression and not using - the gzip format. - - "a" can be used instead of "w" to request that the gzip stream that will - be written be appended to the file. "+" will result in an error, since - reading and writing to the same gzip file is not supported. The addition of - "x" when writing will create the file exclusively, which fails if the file - already exists. On systems that support it, the addition of "e" when - reading or writing will set the flag to close the file on an execve() call. - - These functions, as well as gzip, will read and decode a sequence of gzip - streams in a file. The append function of gzopen() can be used to create - such a file. (Also see gzflush() for another way to do this.) When - appending, gzopen does not test whether the file begins with a gzip stream, - nor does it look for the end of the gzip streams to begin appending. gzopen - will simply append a gzip stream to the existing file. - - gzopen can be used to read a file which is not in gzip format; in this - case gzread will directly read from the file without decompression. When - reading, this will be detected automatically by looking for the magic two- - byte gzip header. - - gzopen returns NULL if the file could not be opened, if there was - insufficient memory to allocate the gzFile state, or if an invalid mode was - specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). - errno can be checked to determine if the reason gzopen failed was that the - file could not be opened. -*/ - -ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); -/* - gzdopen associates a gzFile with the file descriptor fd. File descriptors - are obtained from calls like open, dup, creat, pipe or fileno (if the file - has been previously opened with fopen). The mode parameter is as in gzopen. - - The next call of gzclose on the returned gzFile will also close the file - descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor - fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd, - mode);. The duplicated descriptor should be saved to avoid a leak, since - gzdopen does not close fd if it fails. If you are using fileno() to get the - file descriptor from a FILE *, then you will have to use dup() to avoid - double-close()ing the file descriptor. Both gzclose() and fclose() will - close the associated file descriptor, so they need to have different file - descriptors. - - gzdopen returns NULL if there was insufficient memory to allocate the - gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not - provided, or '+' was provided), or if fd is -1. The file descriptor is not - used until the next gz* read, write, seek, or close operation, so gzdopen - will not detect if fd is invalid (unless fd is -1). -*/ - -ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); -/* - Set the internal buffer size used by this library's functions. The - default buffer size is 8192 bytes. This function must be called after - gzopen() or gzdopen(), and before any other calls that read or write the - file. The buffer memory allocation is always deferred to the first read or - write. Two buffers are allocated, either both of the specified size when - writing, or one of the specified size and the other twice that size when - reading. A larger buffer size of, for example, 64K or 128K bytes will - noticeably increase the speed of decompression (reading). - - The new buffer size also affects the maximum length for gzprintf(). - - gzbuffer() returns 0 on success, or -1 on failure, such as being called - too late. -*/ - -ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); -/* - Dynamically update the compression level or strategy. See the description - of deflateInit2 for the meaning of these parameters. - - gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not - opened for writing. -*/ - -ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); -/* - Reads the given number of uncompressed bytes from the compressed file. If - the input file is not in gzip format, gzread copies the given number of - bytes into the buffer directly from the file. - - After reaching the end of a gzip stream in the input, gzread will continue - to read, looking for another gzip stream. Any number of gzip streams may be - concatenated in the input file, and will all be decompressed by gzread(). - If something other than a gzip stream is encountered after a gzip stream, - that remaining trailing garbage is ignored (and no error is returned). - - gzread can be used to read a gzip file that is being concurrently written. - Upon reaching the end of the input, gzread will return with the available - data. If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then - gzclearerr can be used to clear the end of file indicator in order to permit - gzread to be tried again. Z_OK indicates that a gzip stream was completed - on the last gzread. Z_BUF_ERROR indicates that the input file ended in the - middle of a gzip stream. Note that gzread does not return -1 in the event - of an incomplete gzip stream. This error is deferred until gzclose(), which - will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip - stream. Alternatively, gzerror can be used before gzclose to detect this - case. - - gzread returns the number of uncompressed bytes actually read, less than - len for end of file, or -1 for error. -*/ - -ZEXTERN int ZEXPORT gzwrite OF((gzFile file, - voidpc buf, unsigned len)); -/* - Writes the given number of uncompressed bytes into the compressed file. - gzwrite returns the number of uncompressed bytes written or 0 in case of - error. -*/ - -ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...)); -/* - Converts, formats, and writes the arguments to the compressed file under - control of the format string, as in fprintf. gzprintf returns the number of - uncompressed bytes actually written, or 0 in case of error. The number of - uncompressed bytes written is limited to 8191, or one less than the buffer - size given to gzbuffer(). The caller should assure that this limit is not - exceeded. If it is exceeded, then gzprintf() will return an error (0) with - nothing written. In this case, there may also be a buffer overflow with - unpredictable consequences, which is possible only if zlib was compiled with - the insecure functions sprintf() or vsprintf() because the secure snprintf() - or vsnprintf() functions were not available. This can be determined using - zlibCompileFlags(). -*/ - -ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); -/* - Writes the given null-terminated string to the compressed file, excluding - the terminating null character. - - gzputs returns the number of characters written, or -1 in case of error. -*/ - -ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); -/* - Reads bytes from the compressed file until len-1 characters are read, or a - newline character is read and transferred to buf, or an end-of-file - condition is encountered. If any characters are read or if len == 1, the - string is terminated with a null character. If no characters are read due - to an end-of-file or len < 1, then the buffer is left untouched. - - gzgets returns buf which is a null-terminated string, or it returns NULL - for end-of-file or in case of error. If there was an error, the contents at - buf are indeterminate. -*/ - -ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); -/* - Writes c, converted to an unsigned char, into the compressed file. gzputc - returns the value that was written, or -1 in case of error. -*/ - -ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); -/* - Reads one byte from the compressed file. gzgetc returns this byte or -1 - in case of end of file or error. This is implemented as a macro for speed. - As such, it does not do all of the checking the other functions do. I.e. - it does not check to see if file is NULL, nor whether the structure file - points to has been clobbered or not. -*/ - -ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); -/* - Push one character back onto the stream to be read as the first character - on the next read. At least one character of push-back is allowed. - gzungetc() returns the character pushed, or -1 on failure. gzungetc() will - fail if c is -1, and may fail if a character has been pushed but not read - yet. If gzungetc is used immediately after gzopen or gzdopen, at least the - output buffer size of pushed characters is allowed. (See gzbuffer above.) - The pushed character will be discarded if the stream is repositioned with - gzseek() or gzrewind(). -*/ - -ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); -/* - Flushes all pending output into the compressed file. The parameter flush - is as in the deflate() function. The return value is the zlib error number - (see function gzerror below). gzflush is only permitted when writing. - - If the flush parameter is Z_FINISH, the remaining data is written and the - gzip stream is completed in the output. If gzwrite() is called again, a new - gzip stream will be started in the output. gzread() is able to read such - concatented gzip streams. - - gzflush should be called only when strictly necessary because it will - degrade compression if called too often. -*/ - -/* -ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, - z_off_t offset, int whence)); - - Sets the starting position for the next gzread or gzwrite on the given - compressed file. The offset represents a number of bytes in the - uncompressed data stream. The whence parameter is defined as in lseek(2); - the value SEEK_END is not supported. - - If the file is opened for reading, this function is emulated but can be - extremely slow. If the file is opened for writing, only forward seeks are - supported; gzseek then compresses a sequence of zeroes up to the new - starting position. - - gzseek returns the resulting offset location as measured in bytes from - the beginning of the uncompressed stream, or -1 in case of error, in - particular if the file is opened for writing and the new starting position - would be before the current position. -*/ - -ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); -/* - Rewinds the given file. This function is supported only for reading. - - gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) -*/ - -/* -ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); - - Returns the starting position for the next gzread or gzwrite on the given - compressed file. This position represents a number of bytes in the - uncompressed data stream, and is zero when starting, even if appending or - reading a gzip stream from the middle of a file using gzdopen(). - - gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) -*/ - -/* -ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file)); - - Returns the current offset in the file being read or written. This offset - includes the count of bytes that precede the gzip stream, for example when - appending or when using gzdopen() for reading. When reading, the offset - does not include as yet unused buffered input. This information can be used - for a progress indicator. On error, gzoffset() returns -1. -*/ - -ZEXTERN int ZEXPORT gzeof OF((gzFile file)); -/* - Returns true (1) if the end-of-file indicator has been set while reading, - false (0) otherwise. Note that the end-of-file indicator is set only if the - read tried to go past the end of the input, but came up short. Therefore, - just like feof(), gzeof() may return false even if there is no more data to - read, in the event that the last read request was for the exact number of - bytes remaining in the input file. This will happen if the input file size - is an exact multiple of the buffer size. - - If gzeof() returns true, then the read functions will return no more data, - unless the end-of-file indicator is reset by gzclearerr() and the input file - has grown since the previous end of file was detected. -*/ - -ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); -/* - Returns true (1) if file is being copied directly while reading, or false - (0) if file is a gzip stream being decompressed. - - If the input file is empty, gzdirect() will return true, since the input - does not contain a gzip stream. - - If gzdirect() is used immediately after gzopen() or gzdopen() it will - cause buffers to be allocated to allow reading the file to determine if it - is a gzip file. Therefore if gzbuffer() is used, it should be called before - gzdirect(). - - When writing, gzdirect() returns true (1) if transparent writing was - requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note: - gzdirect() is not needed when writing. Transparent writing must be - explicitly requested, so the application already knows the answer. When - linking statically, using gzdirect() will include all of the zlib code for - gzip file reading and decompression, which may not be desired.) -*/ - -ZEXTERN int ZEXPORT gzclose OF((gzFile file)); -/* - Flushes all pending output if necessary, closes the compressed file and - deallocates the (de)compression state. Note that once file is closed, you - cannot call gzerror with file, since its structures have been deallocated. - gzclose must not be called more than once on the same file, just as free - must not be called more than once on the same allocation. - - gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a - file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the - last read ended in the middle of a gzip stream, or Z_OK on success. -*/ - -ZEXTERN int ZEXPORT gzclose_r OF((gzFile file)); -ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); -/* - Same as gzclose(), but gzclose_r() is only for use when reading, and - gzclose_w() is only for use when writing or appending. The advantage to - using these instead of gzclose() is that they avoid linking in zlib - compression or decompression code that is not used when only reading or only - writing respectively. If gzclose() is used, then both compression and - decompression code will be included the application when linking to a static - zlib library. -*/ - -ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); -/* - Returns the error message for the last error which occurred on the given - compressed file. errnum is set to zlib error number. If an error occurred - in the file system and not in the compression library, errnum is set to - Z_ERRNO and the application may consult errno to get the exact error code. - - The application must not modify the returned string. Future calls to - this function may invalidate the previously returned string. If file is - closed, then the string previously returned by gzerror will no longer be - available. - - gzerror() should be used to distinguish errors from end-of-file for those - functions above that do not distinguish those cases in their return values. -*/ - -ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); -/* - Clears the error and end-of-file flags for file. This is analogous to the - clearerr() function in stdio. This is useful for continuing to read a gzip - file that is being written concurrently. -*/ - -#endif /* !Z_SOLO */ - - /* checksum functions */ - -/* - These functions are not related to compression but are exported - anyway because they might be useful in applications using the compression - library. -*/ - -ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); -/* - Update a running Adler-32 checksum with the bytes buf[0..len-1] and - return the updated checksum. If buf is Z_NULL, this function returns the - required initial value for the checksum. - - An Adler-32 checksum is almost as reliable as a CRC32 but can be computed - much faster. - - Usage example: - - uLong adler = adler32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - adler = adler32(adler, buffer, length); - } - if (adler != original_adler) error(); -*/ - -/* -ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, - z_off_t len2)); - - Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 - and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for - each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of - seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. Note - that the z_off_t type (like off_t) is a signed integer. If len2 is - negative, the result has no meaning or utility. -*/ - -ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); -/* - Update a running CRC-32 with the bytes buf[0..len-1] and return the - updated CRC-32. If buf is Z_NULL, this function returns the required - initial value for the crc. Pre- and post-conditioning (one's complement) is - performed within this function so it shouldn't be done by the application. - - Usage example: - - uLong crc = crc32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - crc = crc32(crc, buffer, length); - } - if (crc != original_crc) error(); -*/ - -/* -ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); - - Combine two CRC-32 check values into one. For two sequences of bytes, - seq1 and seq2 with lengths len1 and len2, CRC-32 check values were - calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 - check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and - len2. -*/ - - - /* various hacks, don't look :) */ - -/* deflateInit and inflateInit are macros to allow checking the zlib version - * and the compiler's view of z_stream: - */ -ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, - int windowBits, int memLevel, - int strategy, const char *version, - int stream_size)); -ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, - unsigned char FAR *window, - const char *version, - int stream_size)); -#define deflateInit(strm, level) \ - deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) -#define inflateInit(strm) \ - inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) -#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ - deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ - (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) -#define inflateInit2(strm, windowBits) \ - inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ - (int)sizeof(z_stream)) -#define inflateBackInit(strm, windowBits, window) \ - inflateBackInit_((strm), (windowBits), (window), \ - ZLIB_VERSION, (int)sizeof(z_stream)) - -#ifndef Z_SOLO - -/* gzgetc() macro and its supporting function and exposed data structure. Note - * that the real internal state is much larger than the exposed structure. - * This abbreviated structure exposes just enough for the gzgetc() macro. The - * user should not mess with these exposed elements, since their names or - * behavior could change in the future, perhaps even capriciously. They can - * only be used by the gzgetc() macro. You have been warned. - */ -struct gzFile_s { - unsigned have; - unsigned char *next; - z_off64_t pos; -}; -ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ -#ifdef Z_PREFIX_SET -# undef z_gzgetc -# define z_gzgetc(g) \ - ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) -#else -# define gzgetc(g) \ - ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) -#endif - -/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or - * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if - * both are true, the application gets the *64 functions, and the regular - * functions are changed to 64 bits) -- in case these are set on systems - * without large file support, _LFS64_LARGEFILE must also be true - */ -#ifdef Z_LARGE64 - ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); - ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); - ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); - ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t)); - ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t)); -#endif - -#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64) -# ifdef Z_PREFIX_SET -# define z_gzopen z_gzopen64 -# define z_gzseek z_gzseek64 -# define z_gztell z_gztell64 -# define z_gzoffset z_gzoffset64 -# define z_adler32_combine z_adler32_combine64 -# define z_crc32_combine z_crc32_combine64 -# else -# define gzopen gzopen64 -# define gzseek gzseek64 -# define gztell gztell64 -# define gzoffset gzoffset64 -# define adler32_combine adler32_combine64 -# define crc32_combine crc32_combine64 -# endif -# ifndef Z_LARGE64 - ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); - ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int)); - ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile)); - ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); -# endif -#else - ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *)); - ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int)); - ZEXTERN z_off_t ZEXPORT gztell OF((gzFile)); - ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); -#endif - -#else /* Z_SOLO */ - - ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); - -#endif /* !Z_SOLO */ - -/* hack for buggy compilers */ -#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) - struct internal_state {int dummy;}; -#endif - -/* undocumented functions */ -ZEXTERN const char * ZEXPORT zError OF((int)); -ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp)); -ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void)); -ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int)); -ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp)); -ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp)); -#if defined(_WIN32) && !defined(Z_SOLO) -ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path, - const char *mode)); -#endif -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifndef Z_SOLO -ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file, - const char *format, - va_list va)); -# endif -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* ZLIB_H */ diff --git a/platform/win32/msvc/external/zlib/zlib.map b/platform/win32/msvc/external/zlib/zlib.map deleted file mode 100644 index 55c6647eb46..00000000000 --- a/platform/win32/msvc/external/zlib/zlib.map +++ /dev/null @@ -1,83 +0,0 @@ -ZLIB_1.2.0 { - global: - compressBound; - deflateBound; - inflateBack; - inflateBackEnd; - inflateBackInit_; - inflateCopy; - local: - deflate_copyright; - inflate_copyright; - inflate_fast; - inflate_table; - zcalloc; - zcfree; - z_errmsg; - gz_error; - gz_intmax; - _*; -}; - -ZLIB_1.2.0.2 { - gzclearerr; - gzungetc; - zlibCompileFlags; -} ZLIB_1.2.0; - -ZLIB_1.2.0.8 { - deflatePrime; -} ZLIB_1.2.0.2; - -ZLIB_1.2.2 { - adler32_combine; - crc32_combine; - deflateSetHeader; - inflateGetHeader; -} ZLIB_1.2.0.8; - -ZLIB_1.2.2.3 { - deflateTune; - gzdirect; -} ZLIB_1.2.2; - -ZLIB_1.2.2.4 { - inflatePrime; -} ZLIB_1.2.2.3; - -ZLIB_1.2.3.3 { - adler32_combine64; - crc32_combine64; - gzopen64; - gzseek64; - gztell64; - inflateUndermine; -} ZLIB_1.2.2.4; - -ZLIB_1.2.3.4 { - inflateReset2; - inflateMark; -} ZLIB_1.2.3.3; - -ZLIB_1.2.3.5 { - gzbuffer; - gzoffset; - gzoffset64; - gzclose_r; - gzclose_w; -} ZLIB_1.2.3.4; - -ZLIB_1.2.5.1 { - deflatePending; -} ZLIB_1.2.3.5; - -ZLIB_1.2.5.2 { - deflateResetKeep; - gzgetc_; - inflateResetKeep; -} ZLIB_1.2.5.1; - -ZLIB_1.2.7.1 { - inflateGetDictionary; - gzvprintf; -} ZLIB_1.2.5.2; diff --git a/platform/win32/msvc/external/zlib/zlib.pc.cmakein b/platform/win32/msvc/external/zlib/zlib.pc.cmakein deleted file mode 100644 index a5e642938c6..00000000000 --- a/platform/win32/msvc/external/zlib/zlib.pc.cmakein +++ /dev/null @@ -1,13 +0,0 @@ -prefix=@CMAKE_INSTALL_PREFIX@ -exec_prefix=@CMAKE_INSTALL_PREFIX@ -libdir=@INSTALL_LIB_DIR@ -sharedlibdir=@INSTALL_LIB_DIR@ -includedir=@INSTALL_INC_DIR@ - -Name: zlib -Description: zlib compression library -Version: @VERSION@ - -Requires: -Libs: -L${libdir} -L${sharedlibdir} -lz -Cflags: -I${includedir} diff --git a/platform/win32/msvc/external/zlib/zlib.pc.in b/platform/win32/msvc/external/zlib/zlib.pc.in deleted file mode 100644 index 7e5acf9c77e..00000000000 --- a/platform/win32/msvc/external/zlib/zlib.pc.in +++ /dev/null @@ -1,13 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -sharedlibdir=@sharedlibdir@ -includedir=@includedir@ - -Name: zlib -Description: zlib compression library -Version: @VERSION@ - -Requires: -Libs: -L${libdir} -L${sharedlibdir} -lz -Cflags: -I${includedir} diff --git a/platform/win32/msvc/external/zlib/zlib2ansi b/platform/win32/msvc/external/zlib/zlib2ansi deleted file mode 100644 index 15e3e165f37..00000000000 --- a/platform/win32/msvc/external/zlib/zlib2ansi +++ /dev/null @@ -1,152 +0,0 @@ -#!/usr/bin/perl - -# Transform K&R C function definitions into ANSI equivalent. -# -# Author: Paul Marquess -# Version: 1.0 -# Date: 3 October 2006 - -# TODO -# -# Asumes no function pointer parameters. unless they are typedefed. -# Assumes no literal strings that look like function definitions -# Assumes functions start at the beginning of a line - -use strict; -use warnings; - -local $/; -$_ = <>; - -my $sp = qr{ \s* (?: /\* .*? \*/ )? \s* }x; # assume no nested comments - -my $d1 = qr{ $sp (?: [\w\*\s]+ $sp)* $sp \w+ $sp [\[\]\s]* $sp }x ; -my $decl = qr{ $sp (?: \w+ $sp )+ $d1 }xo ; -my $dList = qr{ $sp $decl (?: $sp , $d1 )* $sp ; $sp }xo ; - - -while (s/^ - ( # Start $1 - ( # Start $2 - .*? # Minimal eat content - ( ^ \w [\w\s\*]+ ) # $3 -- function name - \s* # optional whitespace - ) # $2 - Matched up to before parameter list - - \( \s* # Literal "(" + optional whitespace - ( [^\)]+ ) # $4 - one or more anythings except ")" - \s* \) # optional whitespace surrounding a Literal ")" - - ( (?: $dList )+ ) # $5 - - $sp ^ { # literal "{" at start of line - ) # Remember to $1 - //xsom - ) -{ - my $all = $1 ; - my $prefix = $2; - my $param_list = $4 ; - my $params = $5; - - StripComments($params); - StripComments($param_list); - $param_list =~ s/^\s+//; - $param_list =~ s/\s+$//; - - my $i = 0 ; - my %pList = map { $_ => $i++ } - split /\s*,\s*/, $param_list; - my $pMatch = '(\b' . join('|', keys %pList) . '\b)\W*$' ; - - my @params = split /\s*;\s*/, $params; - my @outParams = (); - foreach my $p (@params) - { - if ($p =~ /,/) - { - my @bits = split /\s*,\s*/, $p; - my $first = shift @bits; - $first =~ s/^\s*//; - push @outParams, $first; - $first =~ /^(\w+\s*)/; - my $type = $1 ; - push @outParams, map { $type . $_ } @bits; - } - else - { - $p =~ s/^\s+//; - push @outParams, $p; - } - } - - - my %tmp = map { /$pMatch/; $_ => $pList{$1} } - @outParams ; - - @outParams = map { " $_" } - sort { $tmp{$a} <=> $tmp{$b} } - @outParams ; - - print $prefix ; - print "(\n" . join(",\n", @outParams) . ")\n"; - print "{" ; - -} - -# Output any trailing code. -print ; -exit 0; - - -sub StripComments -{ - - no warnings; - - # Strip C & C++ coments - # From the perlfaq - $_[0] =~ - - s{ - /\* ## Start of /* ... */ comment - [^*]*\*+ ## Non-* followed by 1-or-more *'s - ( - [^/*][^*]*\*+ - )* ## 0-or-more things which don't start with / - ## but do end with '*' - / ## End of /* ... */ comment - - | ## OR C++ Comment - // ## Start of C++ comment // - [^\n]* ## followed by 0-or-more non end of line characters - - | ## OR various things which aren't comments: - - ( - " ## Start of " ... " string - ( - \\. ## Escaped char - | ## OR - [^"\\] ## Non "\ - )* - " ## End of " ... " string - - | ## OR - - ' ## Start of ' ... ' string - ( - \\. ## Escaped char - | ## OR - [^'\\] ## Non '\ - )* - ' ## End of ' ... ' string - - | ## OR - - . ## Anything other char - [^/"'\\]* ## Chars which doesn't start a comment, string or escape - ) - }{$2}gxs; - -} diff --git a/platform/win32/msvc/external/zlib/zutil.c b/platform/win32/msvc/external/zlib/zutil.c deleted file mode 100644 index 23d2ebef008..00000000000 --- a/platform/win32/msvc/external/zlib/zutil.c +++ /dev/null @@ -1,324 +0,0 @@ -/* zutil.c -- target dependent utility functions for the compression library - * Copyright (C) 1995-2005, 2010, 2011, 2012 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#include "zutil.h" -#ifndef Z_SOLO -# include "gzguts.h" -#endif - -#ifndef NO_DUMMY_DECL -struct internal_state {int dummy;}; /* for buggy compilers */ -#endif - -z_const char * const z_errmsg[10] = { -"need dictionary", /* Z_NEED_DICT 2 */ -"stream end", /* Z_STREAM_END 1 */ -"", /* Z_OK 0 */ -"file error", /* Z_ERRNO (-1) */ -"stream error", /* Z_STREAM_ERROR (-2) */ -"data error", /* Z_DATA_ERROR (-3) */ -"insufficient memory", /* Z_MEM_ERROR (-4) */ -"buffer error", /* Z_BUF_ERROR (-5) */ -"incompatible version",/* Z_VERSION_ERROR (-6) */ -""}; - - -const char * ZEXPORT zlibVersion() -{ - return ZLIB_VERSION; -} - -uLong ZEXPORT zlibCompileFlags() -{ - uLong flags; - - flags = 0; - switch ((int)(sizeof(uInt))) { - case 2: break; - case 4: flags += 1; break; - case 8: flags += 2; break; - default: flags += 3; - } - switch ((int)(sizeof(uLong))) { - case 2: break; - case 4: flags += 1 << 2; break; - case 8: flags += 2 << 2; break; - default: flags += 3 << 2; - } - switch ((int)(sizeof(voidpf))) { - case 2: break; - case 4: flags += 1 << 4; break; - case 8: flags += 2 << 4; break; - default: flags += 3 << 4; - } - switch ((int)(sizeof(z_off_t))) { - case 2: break; - case 4: flags += 1 << 6; break; - case 8: flags += 2 << 6; break; - default: flags += 3 << 6; - } -#ifdef DEBUG - flags += 1 << 8; -#endif -#if defined(ASMV) || defined(ASMINF) - flags += 1 << 9; -#endif -#ifdef ZLIB_WINAPI - flags += 1 << 10; -#endif -#ifdef BUILDFIXED - flags += 1 << 12; -#endif -#ifdef DYNAMIC_CRC_TABLE - flags += 1 << 13; -#endif -#ifdef NO_GZCOMPRESS - flags += 1L << 16; -#endif -#ifdef NO_GZIP - flags += 1L << 17; -#endif -#ifdef PKZIP_BUG_WORKAROUND - flags += 1L << 20; -#endif -#ifdef FASTEST - flags += 1L << 21; -#endif -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifdef NO_vsnprintf - flags += 1L << 25; -# ifdef HAS_vsprintf_void - flags += 1L << 26; -# endif -# else -# ifdef HAS_vsnprintf_void - flags += 1L << 26; -# endif -# endif -#else - flags += 1L << 24; -# ifdef NO_snprintf - flags += 1L << 25; -# ifdef HAS_sprintf_void - flags += 1L << 26; -# endif -# else -# ifdef HAS_snprintf_void - flags += 1L << 26; -# endif -# endif -#endif - return flags; -} - -#ifdef DEBUG - -# ifndef verbose -# define verbose 0 -# endif -int ZLIB_INTERNAL z_verbose = verbose; - -void ZLIB_INTERNAL z_error (m) - char *m; -{ - fprintf(stderr, "%s\n", m); - exit(1); -} -#endif - -/* exported to allow conversion of error code to string for compress() and - * uncompress() - */ -const char * ZEXPORT zError(err) - int err; -{ - return ERR_MSG(err); -} - -#if defined(_WIN32_WCE) - /* The Microsoft C Run-Time Library for Windows CE doesn't have - * errno. We define it as a global variable to simplify porting. - * Its value is always 0 and should not be used. - */ - int errno = 0; -#endif - -#ifndef HAVE_MEMCPY - -void ZLIB_INTERNAL zmemcpy(dest, source, len) - Bytef* dest; - const Bytef* source; - uInt len; -{ - if (len == 0) return; - do { - *dest++ = *source++; /* ??? to be unrolled */ - } while (--len != 0); -} - -int ZLIB_INTERNAL zmemcmp(s1, s2, len) - const Bytef* s1; - const Bytef* s2; - uInt len; -{ - uInt j; - - for (j = 0; j < len; j++) { - if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1; - } - return 0; -} - -void ZLIB_INTERNAL zmemzero(dest, len) - Bytef* dest; - uInt len; -{ - if (len == 0) return; - do { - *dest++ = 0; /* ??? to be unrolled */ - } while (--len != 0); -} -#endif - -#ifndef Z_SOLO - -#ifdef SYS16BIT - -#ifdef __TURBOC__ -/* Turbo C in 16-bit mode */ - -# define MY_ZCALLOC - -/* Turbo C malloc() does not allow dynamic allocation of 64K bytes - * and farmalloc(64K) returns a pointer with an offset of 8, so we - * must fix the pointer. Warning: the pointer must be put back to its - * original form in order to free it, use zcfree(). - */ - -#define MAX_PTR 10 -/* 10*64K = 640K */ - -local int next_ptr = 0; - -typedef struct ptr_table_s { - voidpf org_ptr; - voidpf new_ptr; -} ptr_table; - -local ptr_table table[MAX_PTR]; -/* This table is used to remember the original form of pointers - * to large buffers (64K). Such pointers are normalized with a zero offset. - * Since MSDOS is not a preemptive multitasking OS, this table is not - * protected from concurrent access. This hack doesn't work anyway on - * a protected system like OS/2. Use Microsoft C instead. - */ - -voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size) -{ - voidpf buf = opaque; /* just to make some compilers happy */ - ulg bsize = (ulg)items*size; - - /* If we allocate less than 65520 bytes, we assume that farmalloc - * will return a usable pointer which doesn't have to be normalized. - */ - if (bsize < 65520L) { - buf = farmalloc(bsize); - if (*(ush*)&buf != 0) return buf; - } else { - buf = farmalloc(bsize + 16L); - } - if (buf == NULL || next_ptr >= MAX_PTR) return NULL; - table[next_ptr].org_ptr = buf; - - /* Normalize the pointer to seg:0 */ - *((ush*)&buf+1) += ((ush)((uch*)buf-0) + 15) >> 4; - *(ush*)&buf = 0; - table[next_ptr++].new_ptr = buf; - return buf; -} - -void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr) -{ - int n; - if (*(ush*)&ptr != 0) { /* object < 64K */ - farfree(ptr); - return; - } - /* Find the original pointer */ - for (n = 0; n < next_ptr; n++) { - if (ptr != table[n].new_ptr) continue; - - farfree(table[n].org_ptr); - while (++n < next_ptr) { - table[n-1] = table[n]; - } - next_ptr--; - return; - } - ptr = opaque; /* just to make some compilers happy */ - Assert(0, "zcfree: ptr not found"); -} - -#endif /* __TURBOC__ */ - - -#ifdef M_I86 -/* Microsoft C in 16-bit mode */ - -# define MY_ZCALLOC - -#if (!defined(_MSC_VER) || (_MSC_VER <= 600)) -# define _halloc halloc -# define _hfree hfree -#endif - -voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, uInt items, uInt size) -{ - if (opaque) opaque = 0; /* to make compiler happy */ - return _halloc((long)items, size); -} - -void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr) -{ - if (opaque) opaque = 0; /* to make compiler happy */ - _hfree(ptr); -} - -#endif /* M_I86 */ - -#endif /* SYS16BIT */ - - -#ifndef MY_ZCALLOC /* Any system without a special alloc function */ - -#ifndef STDC -extern voidp malloc OF((uInt size)); -extern voidp calloc OF((uInt items, uInt size)); -extern void free OF((voidpf ptr)); -#endif - -voidpf ZLIB_INTERNAL zcalloc (opaque, items, size) - voidpf opaque; - unsigned items; - unsigned size; -{ - if (opaque) items += size - size; /* make compiler happy */ - return sizeof(uInt) > 2 ? (voidpf)malloc(items * size) : - (voidpf)calloc(items, size); -} - -void ZLIB_INTERNAL zcfree (opaque, ptr) - voidpf opaque; - voidpf ptr; -{ - free(ptr); - if (opaque) return; /* make compiler happy */ -} - -#endif /* MY_ZCALLOC */ - -#endif /* !Z_SOLO */ diff --git a/platform/win32/msvc/external/zlib/zutil.h b/platform/win32/msvc/external/zlib/zutil.h deleted file mode 100644 index 24ab06b1cf6..00000000000 --- a/platform/win32/msvc/external/zlib/zutil.h +++ /dev/null @@ -1,253 +0,0 @@ -/* zutil.h -- internal interface and configuration of the compression library - * Copyright (C) 1995-2013 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -/* @(#) $Id$ */ - -#ifndef ZUTIL_H -#define ZUTIL_H - -#ifdef HAVE_HIDDEN -# define ZLIB_INTERNAL __attribute__((visibility ("hidden"))) -#else -# define ZLIB_INTERNAL -#endif - -#include "zlib.h" - -#if defined(STDC) && !defined(Z_SOLO) -# if !(defined(_WIN32_WCE) && defined(_MSC_VER)) -# include -# endif -# include -# include -#endif - -#ifdef Z_SOLO - typedef long ptrdiff_t; /* guess -- will be caught if guess is wrong */ -#endif - -#ifndef local -# define local static -#endif -/* compile with -Dlocal if your debugger can't find static symbols */ - -typedef unsigned char uch; -typedef uch FAR uchf; -typedef unsigned short ush; -typedef ush FAR ushf; -typedef unsigned long ulg; - -extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ -/* (size given to avoid silly warnings with Visual C++) */ - -#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)] - -#define ERR_RETURN(strm,err) \ - return (strm->msg = ERR_MSG(err), (err)) -/* To be used only when the state is known to be valid */ - - /* common constants */ - -#ifndef DEF_WBITS -# define DEF_WBITS MAX_WBITS -#endif -/* default windowBits for decompression. MAX_WBITS is for compression only */ - -#if MAX_MEM_LEVEL >= 8 -# define DEF_MEM_LEVEL 8 -#else -# define DEF_MEM_LEVEL MAX_MEM_LEVEL -#endif -/* default memLevel */ - -#define STORED_BLOCK 0 -#define STATIC_TREES 1 -#define DYN_TREES 2 -/* The three kinds of block type */ - -#define MIN_MATCH 3 -#define MAX_MATCH 258 -/* The minimum and maximum match lengths */ - -#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */ - - /* target dependencies */ - -#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32)) -# define OS_CODE 0x00 -# ifndef Z_SOLO -# if defined(__TURBOC__) || defined(__BORLANDC__) -# if (__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__)) - /* Allow compilation with ANSI keywords only enabled */ - void _Cdecl farfree( void *block ); - void *_Cdecl farmalloc( unsigned long nbytes ); -# else -# include -# endif -# else /* MSC or DJGPP */ -# include -# endif -# endif -#endif - -#ifdef AMIGA -# define OS_CODE 0x01 -#endif - -#if defined(VAXC) || defined(VMS) -# define OS_CODE 0x02 -# define F_OPEN(name, mode) \ - fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512") -#endif - -#if defined(ATARI) || defined(atarist) -# define OS_CODE 0x05 -#endif - -#ifdef OS2 -# define OS_CODE 0x06 -# if defined(M_I86) && !defined(Z_SOLO) -# include -# endif -#endif - -#if defined(MACOS) || defined(TARGET_OS_MAC) -# define OS_CODE 0x07 -# ifndef Z_SOLO -# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os -# include /* for fdopen */ -# else -# ifndef fdopen -# define fdopen(fd,mode) NULL /* No fdopen() */ -# endif -# endif -# endif -#endif - -#ifdef TOPS20 -# define OS_CODE 0x0a -#endif - -#ifdef WIN32 -# ifndef __CYGWIN__ /* Cygwin is Unix, not Win32 */ -# define OS_CODE 0x0b -# endif -#endif - -#ifdef __50SERIES /* Prime/PRIMOS */ -# define OS_CODE 0x0f -#endif - -#if defined(_BEOS_) || defined(RISCOS) -# define fdopen(fd,mode) NULL /* No fdopen() */ -#endif - -#if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX -# if defined(_WIN32_WCE) -# define fdopen(fd,mode) NULL /* No fdopen() */ -# ifndef _PTRDIFF_T_DEFINED - typedef int ptrdiff_t; -# define _PTRDIFF_T_DEFINED -# endif -# else -# define fdopen(fd,type) _fdopen(fd,type) -# endif -#endif - -#if defined(__BORLANDC__) && !defined(MSDOS) - #pragma warn -8004 - #pragma warn -8008 - #pragma warn -8066 -#endif - -/* provide prototypes for these when building zlib without LFS */ -#if !defined(_WIN32) && \ - (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0) - ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); -#endif - - /* common defaults */ - -#ifndef OS_CODE -# define OS_CODE 0x03 /* assume Unix */ -#endif - -#ifndef F_OPEN -# define F_OPEN(name, mode) fopen((name), (mode)) -#endif - - /* functions */ - -#if defined(pyr) || defined(Z_SOLO) -# define NO_MEMCPY -#endif -#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__) - /* Use our own functions for small and medium model with MSC <= 5.0. - * You may have to use the same strategy for Borland C (untested). - * The __SC__ check is for Symantec. - */ -# define NO_MEMCPY -#endif -#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY) -# define HAVE_MEMCPY -#endif -#ifdef HAVE_MEMCPY -# ifdef SMALL_MEDIUM /* MSDOS small or medium model */ -# define zmemcpy _fmemcpy -# define zmemcmp _fmemcmp -# define zmemzero(dest, len) _fmemset(dest, 0, len) -# else -# define zmemcpy memcpy -# define zmemcmp memcmp -# define zmemzero(dest, len) memset(dest, 0, len) -# endif -#else - void ZLIB_INTERNAL zmemcpy OF((Bytef* dest, const Bytef* source, uInt len)); - int ZLIB_INTERNAL zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len)); - void ZLIB_INTERNAL zmemzero OF((Bytef* dest, uInt len)); -#endif - -/* Diagnostic functions */ -#ifdef DEBUG -# include - extern int ZLIB_INTERNAL z_verbose; - extern void ZLIB_INTERNAL z_error OF((char *m)); -# define Assert(cond,msg) {if(!(cond)) z_error(msg);} -# define Trace(x) {if (z_verbose>=0) fprintf x ;} -# define Tracev(x) {if (z_verbose>0) fprintf x ;} -# define Tracevv(x) {if (z_verbose>1) fprintf x ;} -# define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;} -# define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;} -#else -# define Assert(cond,msg) -# define Trace(x) -# define Tracev(x) -# define Tracevv(x) -# define Tracec(c,x) -# define Tracecv(c,x) -#endif - -#ifndef Z_SOLO - voidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items, - unsigned size)); - void ZLIB_INTERNAL zcfree OF((voidpf opaque, voidpf ptr)); -#endif - -#define ZALLOC(strm, items, size) \ - (*((strm)->zalloc))((strm)->opaque, (items), (size)) -#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr)) -#define TRY_FREE(s, p) {if (p) ZFREE(s, p);} - -/* Reverse the bytes in a 32-bit value */ -#define ZSWAP32(q) ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \ - (((q) & 0xff00) << 8) + (((q) & 0xff) << 24)) - -#endif /* ZUTIL_H */ diff --git a/platform/win32/msvc/include-2010/byteswap.h b/platform/win32/msvc/include-2010/byteswap.h deleted file mode 100644 index 8b137891791..00000000000 --- a/platform/win32/msvc/include-2010/byteswap.h +++ /dev/null @@ -1 +0,0 @@ - diff --git a/platform/win32/msvc/include-2010/dlfcn.h b/platform/win32/msvc/include-2010/dlfcn.h deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/platform/win32/msvc/include-2010/inttypes.h b/platform/win32/msvc/include-2010/inttypes.h deleted file mode 100644 index 4b3828a2162..00000000000 --- a/platform/win32/msvc/include-2010/inttypes.h +++ /dev/null @@ -1,305 +0,0 @@ -// ISO C9x compliant inttypes.h for Microsoft Visual Studio -// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 -// -// Copyright (c) 2006 Alexander Chemeris -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. The name of the author may be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _MSC_VER // [ -#error "Use this header only with Microsoft Visual C++ compilers!" -#endif // _MSC_VER ] - -#ifndef _MSC_INTTYPES_H_ // [ -#define _MSC_INTTYPES_H_ - -#if _MSC_VER > 1000 -#pragma once -#endif - -#include "stdint.h" - -// 7.8 Format conversion of integer types - -typedef struct { - intmax_t quot; - intmax_t rem; -} imaxdiv_t; - -// 7.8.1 Macros for format specifiers - -#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) // [ See footnote 185 at page 198 - -// The fprintf macros for signed integers are: -#define PRId8 "d" -#define PRIi8 "i" -#define PRIdLEAST8 "d" -#define PRIiLEAST8 "i" -#define PRIdFAST8 "d" -#define PRIiFAST8 "i" - -#define PRId16 "hd" -#define PRIi16 "hi" -#define PRIdLEAST16 "hd" -#define PRIiLEAST16 "hi" -#define PRIdFAST16 "hd" -#define PRIiFAST16 "hi" - -#define PRId32 "I32d" -#define PRIi32 "I32i" -#define PRIdLEAST32 "I32d" -#define PRIiLEAST32 "I32i" -#define PRIdFAST32 "I32d" -#define PRIiFAST32 "I32i" - -#define PRId64 "I64d" -#define PRIi64 "I64i" -#define PRIdLEAST64 "I64d" -#define PRIiLEAST64 "I64i" -#define PRIdFAST64 "I64d" -#define PRIiFAST64 "I64i" - -#define PRIdMAX "I64d" -#define PRIiMAX "I64i" - -#define PRIdPTR "Id" -#define PRIiPTR "Ii" - -// The fprintf macros for unsigned integers are: -#define PRIo8 "o" -#define PRIu8 "u" -#define PRIx8 "x" -#define PRIX8 "X" -#define PRIoLEAST8 "o" -#define PRIuLEAST8 "u" -#define PRIxLEAST8 "x" -#define PRIXLEAST8 "X" -#define PRIoFAST8 "o" -#define PRIuFAST8 "u" -#define PRIxFAST8 "x" -#define PRIXFAST8 "X" - -#define PRIo16 "ho" -#define PRIu16 "hu" -#define PRIx16 "hx" -#define PRIX16 "hX" -#define PRIoLEAST16 "ho" -#define PRIuLEAST16 "hu" -#define PRIxLEAST16 "hx" -#define PRIXLEAST16 "hX" -#define PRIoFAST16 "ho" -#define PRIuFAST16 "hu" -#define PRIxFAST16 "hx" -#define PRIXFAST16 "hX" - -#define PRIo32 "I32o" -#define PRIu32 "I32u" -#define PRIx32 "I32x" -#define PRIX32 "I32X" -#define PRIoLEAST32 "I32o" -#define PRIuLEAST32 "I32u" -#define PRIxLEAST32 "I32x" -#define PRIXLEAST32 "I32X" -#define PRIoFAST32 "I32o" -#define PRIuFAST32 "I32u" -#define PRIxFAST32 "I32x" -#define PRIXFAST32 "I32X" - -#define PRIo64 "I64o" -#define PRIu64 "I64u" -#define PRIx64 "I64x" -#define PRIX64 "I64X" -#define PRIoLEAST64 "I64o" -#define PRIuLEAST64 "I64u" -#define PRIxLEAST64 "I64x" -#define PRIXLEAST64 "I64X" -#define PRIoFAST64 "I64o" -#define PRIuFAST64 "I64u" -#define PRIxFAST64 "I64x" -#define PRIXFAST64 "I64X" - -#define PRIoMAX "I64o" -#define PRIuMAX "I64u" -#define PRIxMAX "I64x" -#define PRIXMAX "I64X" - -#define PRIoPTR "Io" -#define PRIuPTR "Iu" -#define PRIxPTR "Ix" -#define PRIXPTR "IX" - -// The fscanf macros for signed integers are: -#define SCNd8 "d" -#define SCNi8 "i" -#define SCNdLEAST8 "d" -#define SCNiLEAST8 "i" -#define SCNdFAST8 "d" -#define SCNiFAST8 "i" - -#define SCNd16 "hd" -#define SCNi16 "hi" -#define SCNdLEAST16 "hd" -#define SCNiLEAST16 "hi" -#define SCNdFAST16 "hd" -#define SCNiFAST16 "hi" - -#define SCNd32 "ld" -#define SCNi32 "li" -#define SCNdLEAST32 "ld" -#define SCNiLEAST32 "li" -#define SCNdFAST32 "ld" -#define SCNiFAST32 "li" - -#define SCNd64 "I64d" -#define SCNi64 "I64i" -#define SCNdLEAST64 "I64d" -#define SCNiLEAST64 "I64i" -#define SCNdFAST64 "I64d" -#define SCNiFAST64 "I64i" - -#define SCNdMAX "I64d" -#define SCNiMAX "I64i" - -#ifdef _WIN64 // [ -# define SCNdPTR "I64d" -# define SCNiPTR "I64i" -#else // _WIN64 ][ -# define SCNdPTR "ld" -# define SCNiPTR "li" -#endif // _WIN64 ] - -// The fscanf macros for unsigned integers are: -#define SCNo8 "o" -#define SCNu8 "u" -#define SCNx8 "x" -#define SCNX8 "X" -#define SCNoLEAST8 "o" -#define SCNuLEAST8 "u" -#define SCNxLEAST8 "x" -#define SCNXLEAST8 "X" -#define SCNoFAST8 "o" -#define SCNuFAST8 "u" -#define SCNxFAST8 "x" -#define SCNXFAST8 "X" - -#define SCNo16 "ho" -#define SCNu16 "hu" -#define SCNx16 "hx" -#define SCNX16 "hX" -#define SCNoLEAST16 "ho" -#define SCNuLEAST16 "hu" -#define SCNxLEAST16 "hx" -#define SCNXLEAST16 "hX" -#define SCNoFAST16 "ho" -#define SCNuFAST16 "hu" -#define SCNxFAST16 "hx" -#define SCNXFAST16 "hX" - -#define SCNo32 "lo" -#define SCNu32 "lu" -#define SCNx32 "lx" -#define SCNX32 "lX" -#define SCNoLEAST32 "lo" -#define SCNuLEAST32 "lu" -#define SCNxLEAST32 "lx" -#define SCNXLEAST32 "lX" -#define SCNoFAST32 "lo" -#define SCNuFAST32 "lu" -#define SCNxFAST32 "lx" -#define SCNXFAST32 "lX" - -#define SCNo64 "I64o" -#define SCNu64 "I64u" -#define SCNx64 "I64x" -#define SCNX64 "I64X" -#define SCNoLEAST64 "I64o" -#define SCNuLEAST64 "I64u" -#define SCNxLEAST64 "I64x" -#define SCNXLEAST64 "I64X" -#define SCNoFAST64 "I64o" -#define SCNuFAST64 "I64u" -#define SCNxFAST64 "I64x" -#define SCNXFAST64 "I64X" - -#define SCNoMAX "I64o" -#define SCNuMAX "I64u" -#define SCNxMAX "I64x" -#define SCNXMAX "I64X" - -#ifdef _WIN64 // [ -# define SCNoPTR "I64o" -# define SCNuPTR "I64u" -# define SCNxPTR "I64x" -# define SCNXPTR "I64X" -#else // _WIN64 ][ -# define SCNoPTR "lo" -# define SCNuPTR "lu" -# define SCNxPTR "lx" -# define SCNXPTR "lX" -#endif // _WIN64 ] - -#endif // __STDC_FORMAT_MACROS ] - -// 7.8.2 Functions for greatest-width integer types - -// 7.8.2.1 The imaxabs function -#define imaxabs _abs64 - -// 7.8.2.2 The imaxdiv function - -// This is modified version of div() function from Microsoft's div.c found -// in %MSVC.NET%\crt\src\div.c -#ifdef STATIC_IMAXDIV // [ -static -#else // STATIC_IMAXDIV ][ -_inline -#endif // STATIC_IMAXDIV ] -imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom) -{ - imaxdiv_t result; - - result.quot = numer / denom; - result.rem = numer % denom; - - if (numer < 0 && result.rem > 0) { - // did division wrong; must fix up - ++result.quot; - result.rem -= denom; - } - - return result; -} - -// 7.8.2.3 The strtoimax and strtoumax functions -#define strtoimax _strtoi64 -#define strtoumax _strtoui64 - -// 7.8.2.4 The wcstoimax and wcstoumax functions -#define wcstoimax _wcstoi64 -#define wcstoumax _wcstoui64 - - -#endif // _MSC_INTTYPES_H_ ] diff --git a/platform/win32/msvc/include-2010/linux/joystick.h b/platform/win32/msvc/include-2010/linux/joystick.h deleted file mode 100644 index 8b137891791..00000000000 --- a/platform/win32/msvc/include-2010/linux/joystick.h +++ /dev/null @@ -1 +0,0 @@ - diff --git a/platform/win32/msvc/include-2010/mathex.h b/platform/win32/msvc/include-2010/mathex.h deleted file mode 100644 index 3fecac5e29a..00000000000 --- a/platform/win32/msvc/include-2010/mathex.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef __MATHEX_H -#define __MATHEX_H - -#include - -// Methods missing from Visual Studio 2010 Math.h - -#ifndef isnan -#define isnan( x ) _isnan( x ) -#endif - -__inline double roundf(double x) -{ - return floor(x + 0.5); -} - -__inline int truncf( float flt ) -{ - return (int)floor( flt ); -} - -__inline long int lrint (double flt) -{ - int intgr; - _asm - { - fld flt - fistp intgr - }; - - return intgr; -} - -__inline long int lrintf (float flt) -{ - int intgr; - _asm - { - fld flt - fistp intgr - }; - - return intgr; -} - -#endif diff --git a/platform/win32/msvc/include-2010/netdb.h b/platform/win32/msvc/include-2010/netdb.h deleted file mode 100644 index 8d1c8b69c3f..00000000000 --- a/platform/win32/msvc/include-2010/netdb.h +++ /dev/null @@ -1 +0,0 @@ - diff --git a/platform/win32/msvc/include-2010/netinet/in.h b/platform/win32/msvc/include-2010/netinet/in.h deleted file mode 100644 index 8b137891791..00000000000 --- a/platform/win32/msvc/include-2010/netinet/in.h +++ /dev/null @@ -1 +0,0 @@ - diff --git a/platform/win32/msvc/include-2010/stdint.h b/platform/win32/msvc/include-2010/stdint.h deleted file mode 100644 index 213c182427c..00000000000 --- a/platform/win32/msvc/include-2010/stdint.h +++ /dev/null @@ -1,248 +0,0 @@ -// ISO C9x compliant stdint.h for Microsoft Visual Studio -// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 -// -// Copyright (c) 2006-2008 Alexander Chemeris -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. The name of the author may be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _MSC_VER // [ -#error "Use this header only with Microsoft Visual C++ compilers!" -#endif // _MSC_VER ] - -#ifndef _MSC_STDINT_H_ // [ -#define _MSC_STDINT_H_ - -#if _MSC_VER > 1000 -#pragma once -#endif - -#include -#include - - -// For Visual Studio 6 in C++ mode and for many Visual Studio versions when -// compiling for ARM we should wrap include with 'extern "C++" {}' -// or compiler give many errors like this: -// error C2733: second C linkage of overloaded function 'wmemchr' not allowed -#ifdef __cplusplus -extern "C" { -#endif -# include -#ifdef __cplusplus -} -#endif - -// Define _W64 macros to mark types changing their size, like intptr_t. -#ifndef _W64 -# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300 -# define _W64 __w64 -# else -# define _W64 -# endif -#endif - - -// 7.18.1 Integer types - -// 7.18.1.1 Exact-width integer types - -// Visual Studio 6 and Embedded Visual C++ 4 doesn't -// realize that, e.g. char has the same size as __int8 -// so we give up on __intX for them. -#if (_MSC_VER < 1300) - typedef signed char int8_t; - typedef signed short int16_t; - typedef signed int int32_t; - typedef unsigned char uint8_t; - typedef unsigned short uint16_t; - typedef unsigned int uint32_t; -#else - typedef signed __int8 int8_t; - typedef signed __int16 int16_t; - typedef signed __int32 int32_t; - typedef unsigned __int8 uint8_t; - typedef unsigned __int16 uint16_t; - typedef unsigned __int32 uint32_t; -#endif -typedef signed __int64 int64_t; -typedef unsigned __int64 uint64_t; - - -// 7.18.1.2 Minimum-width integer types -typedef int8_t int_least8_t; -typedef int16_t int_least16_t; -typedef int32_t int_least32_t; -typedef int64_t int_least64_t; -typedef uint8_t uint_least8_t; -typedef uint16_t uint_least16_t; -typedef uint32_t uint_least32_t; -typedef uint64_t uint_least64_t; - -// 7.18.1.3 Fastest minimum-width integer types -typedef int8_t int_fast8_t; -typedef int16_t int_fast16_t; -typedef int32_t int_fast32_t; -typedef int64_t int_fast64_t; -typedef uint8_t uint_fast8_t; -typedef uint16_t uint_fast16_t; -typedef uint32_t uint_fast32_t; -typedef uint64_t uint_fast64_t; - -// 7.18.1.4 Integer types capable of holding object pointers -#ifdef _WIN64 // [ - typedef signed __int64 intptr_t; - typedef unsigned __int64 uintptr_t; -#else // _WIN64 ][ - typedef _W64 signed int intptr_t; - typedef _W64 unsigned int uintptr_t; -#endif // _WIN64 ] - -// 7.18.1.5 Greatest-width integer types -typedef int64_t intmax_t; -typedef uint64_t uintmax_t; - - -// 7.18.2 Limits of specified-width integer types - -#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259 - -// 7.18.2.1 Limits of exact-width integer types -#define INT8_MIN ((int8_t)_I8_MIN) -#define INT8_MAX _I8_MAX -#define INT16_MIN ((int16_t)_I16_MIN) -#define INT16_MAX _I16_MAX -#define INT32_MIN ((int32_t)_I32_MIN) -#define INT32_MAX _I32_MAX -#define INT64_MIN ((int64_t)_I64_MIN) -#define INT64_MAX _I64_MAX -#define UINT8_MAX _UI8_MAX -#define UINT16_MAX _UI16_MAX -#define UINT32_MAX _UI32_MAX -#define UINT64_MAX _UI64_MAX - -// 7.18.2.2 Limits of minimum-width integer types -#define INT_LEAST8_MIN INT8_MIN -#define INT_LEAST8_MAX INT8_MAX -#define INT_LEAST16_MIN INT16_MIN -#define INT_LEAST16_MAX INT16_MAX -#define INT_LEAST32_MIN INT32_MIN -#define INT_LEAST32_MAX INT32_MAX -#define INT_LEAST64_MIN INT64_MIN -#define INT_LEAST64_MAX INT64_MAX -#define UINT_LEAST8_MAX UINT8_MAX -#define UINT_LEAST16_MAX UINT16_MAX -#define UINT_LEAST32_MAX UINT32_MAX -#define UINT_LEAST64_MAX UINT64_MAX - -// 7.18.2.3 Limits of fastest minimum-width integer types -#define INT_FAST8_MIN INT8_MIN -#define INT_FAST8_MAX INT8_MAX -#define INT_FAST16_MIN INT16_MIN -#define INT_FAST16_MAX INT16_MAX -#define INT_FAST32_MIN INT32_MIN -#define INT_FAST32_MAX INT32_MAX -#define INT_FAST64_MIN INT64_MIN -#define INT_FAST64_MAX INT64_MAX -#define UINT_FAST8_MAX UINT8_MAX -#define UINT_FAST16_MAX UINT16_MAX -#define UINT_FAST32_MAX UINT32_MAX -#define UINT_FAST64_MAX UINT64_MAX - -// 7.18.2.4 Limits of integer types capable of holding object pointers -#ifdef _WIN64 // [ -# define INTPTR_MIN INT64_MIN -# define INTPTR_MAX INT64_MAX -# define UINTPTR_MAX UINT64_MAX -#else // _WIN64 ][ -# define INTPTR_MIN INT32_MIN -# define INTPTR_MAX INT32_MAX -# define UINTPTR_MAX UINT32_MAX -#endif // _WIN64 ] - -// 7.18.2.5 Limits of greatest-width integer types -#define INTMAX_MIN INT64_MIN -#define INTMAX_MAX INT64_MAX -#define UINTMAX_MAX UINT64_MAX - -// 7.18.3 Limits of other integer types - -#ifdef _WIN64 // [ -# define PTRDIFF_MIN _I64_MIN -# define PTRDIFF_MAX _I64_MAX -#else // _WIN64 ][ -# define PTRDIFF_MIN _I32_MIN -# define PTRDIFF_MAX _I32_MAX -#endif // _WIN64 ] - -#define SIG_ATOMIC_MIN INT_MIN -#define SIG_ATOMIC_MAX INT_MAX - -#ifndef SIZE_MAX // [ -# ifdef _WIN64 // [ -# define SIZE_MAX _UI64_MAX -# else // _WIN64 ][ -# define SIZE_MAX _UI32_MAX -# endif // _WIN64 ] -#endif // SIZE_MAX ] - -// WCHAR_MIN and WCHAR_MAX are also defined in -#ifndef WCHAR_MIN // [ -# define WCHAR_MIN 0 -#endif // WCHAR_MIN ] -#ifndef WCHAR_MAX // [ -# define WCHAR_MAX _UI16_MAX -#endif // WCHAR_MAX ] - -#define WINT_MIN 0 -#define WINT_MAX _UI16_MAX - -#endif // __STDC_LIMIT_MACROS ] - - -// 7.18.4 Limits of other integer types - -#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260 - -// 7.18.4.1 Macros for minimum-width integer constants - -#define INT8_C(val) val##i8 -#define INT16_C(val) val##i16 -#define INT32_C(val) val##i32 -#define INT64_C(val) val##i64 - -#define UINT8_C(val) val##ui8 -#define UINT16_C(val) val##ui16 -#define UINT32_C(val) val##ui32 -#define UINT64_C(val) val##ui64 - -// 7.18.4.2 Macros for greatest-width integer constants -#define INTMAX_C INT64_C -#define UINTMAX_C UINT64_C - -#endif // __STDC_CONSTANT_MACROS ] - -#endif // _MSC_STDINT_H_ ] diff --git a/platform/win32/msvc/include-2010/sys/select.h b/platform/win32/msvc/include-2010/sys/select.h deleted file mode 100644 index 8b137891791..00000000000 --- a/platform/win32/msvc/include-2010/sys/select.h +++ /dev/null @@ -1 +0,0 @@ - diff --git a/platform/win32/msvc/include-2010/sys/socket.h b/platform/win32/msvc/include-2010/sys/socket.h deleted file mode 100644 index f6f1e5ee085..00000000000 --- a/platform/win32/msvc/include-2010/sys/socket.h +++ /dev/null @@ -1 +0,0 @@ -//#include \ No newline at end of file diff --git a/platform/win32/msvc/include-2010/sys/uio.h b/platform/win32/msvc/include-2010/sys/uio.h deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/platform/win32/msvc/include-2010/sys/un.h b/platform/win32/msvc/include-2010/sys/un.h deleted file mode 100644 index 7125214eccc..00000000000 --- a/platform/win32/msvc/include-2010/sys/un.h +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -struct sockaddr_un { - unsigned short sun_family; - char sun_path[104]; -}; - - diff --git a/platform/win32/msvc/include-2010/sys/wait.h b/platform/win32/msvc/include-2010/sys/wait.h deleted file mode 100644 index 8b137891791..00000000000 --- a/platform/win32/msvc/include-2010/sys/wait.h +++ /dev/null @@ -1 +0,0 @@ - diff --git a/platform/win32/msvc/include/GL/glext.h b/platform/win32/msvc/include/GL/glext.h deleted file mode 100644 index 095e0aa09e4..00000000000 --- a/platform/win32/msvc/include/GL/glext.h +++ /dev/null @@ -1,10764 +0,0 @@ -#ifndef __glext_h_ -#define __glext_h_ 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/* -** Copyright (c) 2013 The Khronos Group Inc. -** -** Permission is hereby granted, free of charge, to any person obtaining a -** copy of this software and/or associated documentation files (the -** "Materials"), to deal in the Materials without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Materials, and to -** permit persons to whom the Materials are furnished to do so, subject to -** the following conditions: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Materials. -** -** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -*/ -/* -** This header is generated from the Khronos OpenGL / OpenGL ES XML -** API Registry. The current version of the Registry, generator scripts -** used to make the header, and the header can be found at -** http://www.opengl.org/registry/ -** -** Khronos $Revision$ on $Date$ -*/ - -#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN 1 -#endif -#include -#endif - -#ifndef APIENTRY -#define APIENTRY -#endif -#ifndef APIENTRYP -#define APIENTRYP APIENTRY * -#endif -#ifndef GLAPI -#define GLAPI extern -#endif - -#define GL_GLEXT_VERSION 20130709 - -/* Generated C header for: - * API: gl - * Profile: compatibility - * Versions considered: .* - * Versions emitted: 1\.[2-9]|[234]\.[0-9] - * Default extensions included: gl - * Additional extensions included: _nomatch_^ - * Extensions removed: _nomatch_^ - */ - -#ifndef GL_VERSION_1_2 -#define GL_VERSION_1_2 1 -#define GL_UNSIGNED_BYTE_3_3_2 0x8032 -#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 -#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 -#define GL_UNSIGNED_INT_8_8_8_8 0x8035 -#define GL_UNSIGNED_INT_10_10_10_2 0x8036 -#define GL_TEXTURE_BINDING_3D 0x806A -#define GL_PACK_SKIP_IMAGES 0x806B -#define GL_PACK_IMAGE_HEIGHT 0x806C -#define GL_UNPACK_SKIP_IMAGES 0x806D -#define GL_UNPACK_IMAGE_HEIGHT 0x806E -#define GL_TEXTURE_3D 0x806F -#define GL_PROXY_TEXTURE_3D 0x8070 -#define GL_TEXTURE_DEPTH 0x8071 -#define GL_TEXTURE_WRAP_R 0x8072 -#define GL_MAX_3D_TEXTURE_SIZE 0x8073 -#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 -#define GL_UNSIGNED_SHORT_5_6_5 0x8363 -#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 -#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 -#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 -#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 -#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 -#define GL_BGR 0x80E0 -#define GL_BGRA 0x80E1 -#define GL_MAX_ELEMENTS_VERTICES 0x80E8 -#define GL_MAX_ELEMENTS_INDICES 0x80E9 -#define GL_CLAMP_TO_EDGE 0x812F -#define GL_TEXTURE_MIN_LOD 0x813A -#define GL_TEXTURE_MAX_LOD 0x813B -#define GL_TEXTURE_BASE_LEVEL 0x813C -#define GL_TEXTURE_MAX_LEVEL 0x813D -#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 -#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 -#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 -#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E -#define GL_RESCALE_NORMAL 0x803A -#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 -#define GL_SINGLE_COLOR 0x81F9 -#define GL_SEPARATE_SPECULAR_COLOR 0x81FA -#define GL_ALIASED_POINT_SIZE_RANGE 0x846D -typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode); -typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); -typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -GLAPI void APIENTRY glBlendEquation (GLenum mode); -GLAPI void APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); -GLAPI void APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void APIENTRY glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void APIENTRY glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -#endif -#endif /* GL_VERSION_1_2 */ - -#ifndef GL_VERSION_1_3 -#define GL_VERSION_1_3 1 -#define GL_TEXTURE0 0x84C0 -#define GL_TEXTURE1 0x84C1 -#define GL_TEXTURE2 0x84C2 -#define GL_TEXTURE3 0x84C3 -#define GL_TEXTURE4 0x84C4 -#define GL_TEXTURE5 0x84C5 -#define GL_TEXTURE6 0x84C6 -#define GL_TEXTURE7 0x84C7 -#define GL_TEXTURE8 0x84C8 -#define GL_TEXTURE9 0x84C9 -#define GL_TEXTURE10 0x84CA -#define GL_TEXTURE11 0x84CB -#define GL_TEXTURE12 0x84CC -#define GL_TEXTURE13 0x84CD -#define GL_TEXTURE14 0x84CE -#define GL_TEXTURE15 0x84CF -#define GL_TEXTURE16 0x84D0 -#define GL_TEXTURE17 0x84D1 -#define GL_TEXTURE18 0x84D2 -#define GL_TEXTURE19 0x84D3 -#define GL_TEXTURE20 0x84D4 -#define GL_TEXTURE21 0x84D5 -#define GL_TEXTURE22 0x84D6 -#define GL_TEXTURE23 0x84D7 -#define GL_TEXTURE24 0x84D8 -#define GL_TEXTURE25 0x84D9 -#define GL_TEXTURE26 0x84DA -#define GL_TEXTURE27 0x84DB -#define GL_TEXTURE28 0x84DC -#define GL_TEXTURE29 0x84DD -#define GL_TEXTURE30 0x84DE -#define GL_TEXTURE31 0x84DF -#define GL_ACTIVE_TEXTURE 0x84E0 -#define GL_MULTISAMPLE 0x809D -#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE 0x809F -#define GL_SAMPLE_COVERAGE 0x80A0 -#define GL_SAMPLE_BUFFERS 0x80A8 -#define GL_SAMPLES 0x80A9 -#define GL_SAMPLE_COVERAGE_VALUE 0x80AA -#define GL_SAMPLE_COVERAGE_INVERT 0x80AB -#define GL_TEXTURE_CUBE_MAP 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C -#define GL_COMPRESSED_RGB 0x84ED -#define GL_COMPRESSED_RGBA 0x84EE -#define GL_TEXTURE_COMPRESSION_HINT 0x84EF -#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 -#define GL_TEXTURE_COMPRESSED 0x86A1 -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 -#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 -#define GL_CLAMP_TO_BORDER 0x812D -#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 -#define GL_MAX_TEXTURE_UNITS 0x84E2 -#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 -#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 -#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 -#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 -#define GL_MULTISAMPLE_BIT 0x20000000 -#define GL_NORMAL_MAP 0x8511 -#define GL_REFLECTION_MAP 0x8512 -#define GL_COMPRESSED_ALPHA 0x84E9 -#define GL_COMPRESSED_LUMINANCE 0x84EA -#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB -#define GL_COMPRESSED_INTENSITY 0x84EC -#define GL_COMBINE 0x8570 -#define GL_COMBINE_RGB 0x8571 -#define GL_COMBINE_ALPHA 0x8572 -#define GL_SOURCE0_RGB 0x8580 -#define GL_SOURCE1_RGB 0x8581 -#define GL_SOURCE2_RGB 0x8582 -#define GL_SOURCE0_ALPHA 0x8588 -#define GL_SOURCE1_ALPHA 0x8589 -#define GL_SOURCE2_ALPHA 0x858A -#define GL_OPERAND0_RGB 0x8590 -#define GL_OPERAND1_RGB 0x8591 -#define GL_OPERAND2_RGB 0x8592 -#define GL_OPERAND0_ALPHA 0x8598 -#define GL_OPERAND1_ALPHA 0x8599 -#define GL_OPERAND2_ALPHA 0x859A -#define GL_RGB_SCALE 0x8573 -#define GL_ADD_SIGNED 0x8574 -#define GL_INTERPOLATE 0x8575 -#define GL_SUBTRACT 0x84E7 -#define GL_CONSTANT 0x8576 -#define GL_PRIMARY_COLOR 0x8577 -#define GL_PREVIOUS 0x8578 -#define GL_DOT3_RGB 0x86AE -#define GL_DOT3_RGBA 0x86AF -typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture); -typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img); -typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m); -typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m); -typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m); -typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glActiveTexture (GLenum texture); -GLAPI void APIENTRY glSampleCoverage (GLfloat value, GLboolean invert); -GLAPI void APIENTRY glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); -GLAPI void APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); -GLAPI void APIENTRY glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); -GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); -GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); -GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); -GLAPI void APIENTRY glGetCompressedTexImage (GLenum target, GLint level, GLvoid *img); -GLAPI void APIENTRY glClientActiveTexture (GLenum texture); -GLAPI void APIENTRY glMultiTexCoord1d (GLenum target, GLdouble s); -GLAPI void APIENTRY glMultiTexCoord1dv (GLenum target, const GLdouble *v); -GLAPI void APIENTRY glMultiTexCoord1f (GLenum target, GLfloat s); -GLAPI void APIENTRY glMultiTexCoord1fv (GLenum target, const GLfloat *v); -GLAPI void APIENTRY glMultiTexCoord1i (GLenum target, GLint s); -GLAPI void APIENTRY glMultiTexCoord1iv (GLenum target, const GLint *v); -GLAPI void APIENTRY glMultiTexCoord1s (GLenum target, GLshort s); -GLAPI void APIENTRY glMultiTexCoord1sv (GLenum target, const GLshort *v); -GLAPI void APIENTRY glMultiTexCoord2d (GLenum target, GLdouble s, GLdouble t); -GLAPI void APIENTRY glMultiTexCoord2dv (GLenum target, const GLdouble *v); -GLAPI void APIENTRY glMultiTexCoord2f (GLenum target, GLfloat s, GLfloat t); -GLAPI void APIENTRY glMultiTexCoord2fv (GLenum target, const GLfloat *v); -GLAPI void APIENTRY glMultiTexCoord2i (GLenum target, GLint s, GLint t); -GLAPI void APIENTRY glMultiTexCoord2iv (GLenum target, const GLint *v); -GLAPI void APIENTRY glMultiTexCoord2s (GLenum target, GLshort s, GLshort t); -GLAPI void APIENTRY glMultiTexCoord2sv (GLenum target, const GLshort *v); -GLAPI void APIENTRY glMultiTexCoord3d (GLenum target, GLdouble s, GLdouble t, GLdouble r); -GLAPI void APIENTRY glMultiTexCoord3dv (GLenum target, const GLdouble *v); -GLAPI void APIENTRY glMultiTexCoord3f (GLenum target, GLfloat s, GLfloat t, GLfloat r); -GLAPI void APIENTRY glMultiTexCoord3fv (GLenum target, const GLfloat *v); -GLAPI void APIENTRY glMultiTexCoord3i (GLenum target, GLint s, GLint t, GLint r); -GLAPI void APIENTRY glMultiTexCoord3iv (GLenum target, const GLint *v); -GLAPI void APIENTRY glMultiTexCoord3s (GLenum target, GLshort s, GLshort t, GLshort r); -GLAPI void APIENTRY glMultiTexCoord3sv (GLenum target, const GLshort *v); -GLAPI void APIENTRY glMultiTexCoord4d (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -GLAPI void APIENTRY glMultiTexCoord4dv (GLenum target, const GLdouble *v); -GLAPI void APIENTRY glMultiTexCoord4f (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -GLAPI void APIENTRY glMultiTexCoord4fv (GLenum target, const GLfloat *v); -GLAPI void APIENTRY glMultiTexCoord4i (GLenum target, GLint s, GLint t, GLint r, GLint q); -GLAPI void APIENTRY glMultiTexCoord4iv (GLenum target, const GLint *v); -GLAPI void APIENTRY glMultiTexCoord4s (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -GLAPI void APIENTRY glMultiTexCoord4sv (GLenum target, const GLshort *v); -GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *m); -GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *m); -GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *m); -GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *m); -#endif -#endif /* GL_VERSION_1_3 */ - -#ifndef GL_VERSION_1_4 -#define GL_VERSION_1_4 1 -#define GL_BLEND_DST_RGB 0x80C8 -#define GL_BLEND_SRC_RGB 0x80C9 -#define GL_BLEND_DST_ALPHA 0x80CA -#define GL_BLEND_SRC_ALPHA 0x80CB -#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 -#define GL_DEPTH_COMPONENT16 0x81A5 -#define GL_DEPTH_COMPONENT24 0x81A6 -#define GL_DEPTH_COMPONENT32 0x81A7 -#define GL_MIRRORED_REPEAT 0x8370 -#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD -#define GL_TEXTURE_LOD_BIAS 0x8501 -#define GL_INCR_WRAP 0x8507 -#define GL_DECR_WRAP 0x8508 -#define GL_TEXTURE_DEPTH_SIZE 0x884A -#define GL_TEXTURE_COMPARE_MODE 0x884C -#define GL_TEXTURE_COMPARE_FUNC 0x884D -#define GL_POINT_SIZE_MIN 0x8126 -#define GL_POINT_SIZE_MAX 0x8127 -#define GL_POINT_DISTANCE_ATTENUATION 0x8129 -#define GL_GENERATE_MIPMAP 0x8191 -#define GL_GENERATE_MIPMAP_HINT 0x8192 -#define GL_FOG_COORDINATE_SOURCE 0x8450 -#define GL_FOG_COORDINATE 0x8451 -#define GL_FRAGMENT_DEPTH 0x8452 -#define GL_CURRENT_FOG_COORDINATE 0x8453 -#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 -#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 -#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 -#define GL_FOG_COORDINATE_ARRAY 0x8457 -#define GL_COLOR_SUM 0x8458 -#define GL_CURRENT_SECONDARY_COLOR 0x8459 -#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A -#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B -#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C -#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D -#define GL_SECONDARY_COLOR_ARRAY 0x845E -#define GL_TEXTURE_FILTER_CONTROL 0x8500 -#define GL_DEPTH_TEXTURE_MODE 0x884B -#define GL_COMPARE_R_TO_TEXTURE 0x884E -typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid *const*indices, GLsizei drawcount); -typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLFOGCOORDFPROC) (GLfloat coord); -typedef void (APIENTRYP PFNGLFOGCOORDFVPROC) (const GLfloat *coord); -typedef void (APIENTRYP PFNGLFOGCOORDDPROC) (GLdouble coord); -typedef void (APIENTRYP PFNGLFOGCOORDDVPROC) (const GLdouble *coord); -typedef void (APIENTRYP PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLWINDOWPOS2DVPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLWINDOWPOS2FVPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2IPROC) (GLint x, GLint y); -typedef void (APIENTRYP PFNGLWINDOWPOS2IVPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y); -typedef void (APIENTRYP PFNGLWINDOWPOS2SVPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLWINDOWPOS3DVPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLWINDOWPOS3FVPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z); -typedef void (APIENTRYP PFNGLWINDOWPOS3IVPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC) (const GLshort *v); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -GLAPI void APIENTRY glMultiDrawArrays (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); -GLAPI void APIENTRY glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const GLvoid *const*indices, GLsizei drawcount); -GLAPI void APIENTRY glPointParameterf (GLenum pname, GLfloat param); -GLAPI void APIENTRY glPointParameterfv (GLenum pname, const GLfloat *params); -GLAPI void APIENTRY glPointParameteri (GLenum pname, GLint param); -GLAPI void APIENTRY glPointParameteriv (GLenum pname, const GLint *params); -GLAPI void APIENTRY glFogCoordf (GLfloat coord); -GLAPI void APIENTRY glFogCoordfv (const GLfloat *coord); -GLAPI void APIENTRY glFogCoordd (GLdouble coord); -GLAPI void APIENTRY glFogCoorddv (const GLdouble *coord); -GLAPI void APIENTRY glFogCoordPointer (GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void APIENTRY glSecondaryColor3b (GLbyte red, GLbyte green, GLbyte blue); -GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *v); -GLAPI void APIENTRY glSecondaryColor3d (GLdouble red, GLdouble green, GLdouble blue); -GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *v); -GLAPI void APIENTRY glSecondaryColor3f (GLfloat red, GLfloat green, GLfloat blue); -GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *v); -GLAPI void APIENTRY glSecondaryColor3i (GLint red, GLint green, GLint blue); -GLAPI void APIENTRY glSecondaryColor3iv (const GLint *v); -GLAPI void APIENTRY glSecondaryColor3s (GLshort red, GLshort green, GLshort blue); -GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *v); -GLAPI void APIENTRY glSecondaryColor3ub (GLubyte red, GLubyte green, GLubyte blue); -GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *v); -GLAPI void APIENTRY glSecondaryColor3ui (GLuint red, GLuint green, GLuint blue); -GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *v); -GLAPI void APIENTRY glSecondaryColor3us (GLushort red, GLushort green, GLushort blue); -GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *v); -GLAPI void APIENTRY glSecondaryColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void APIENTRY glWindowPos2d (GLdouble x, GLdouble y); -GLAPI void APIENTRY glWindowPos2dv (const GLdouble *v); -GLAPI void APIENTRY glWindowPos2f (GLfloat x, GLfloat y); -GLAPI void APIENTRY glWindowPos2fv (const GLfloat *v); -GLAPI void APIENTRY glWindowPos2i (GLint x, GLint y); -GLAPI void APIENTRY glWindowPos2iv (const GLint *v); -GLAPI void APIENTRY glWindowPos2s (GLshort x, GLshort y); -GLAPI void APIENTRY glWindowPos2sv (const GLshort *v); -GLAPI void APIENTRY glWindowPos3d (GLdouble x, GLdouble y, GLdouble z); -GLAPI void APIENTRY glWindowPos3dv (const GLdouble *v); -GLAPI void APIENTRY glWindowPos3f (GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glWindowPos3fv (const GLfloat *v); -GLAPI void APIENTRY glWindowPos3i (GLint x, GLint y, GLint z); -GLAPI void APIENTRY glWindowPos3iv (const GLint *v); -GLAPI void APIENTRY glWindowPos3s (GLshort x, GLshort y, GLshort z); -GLAPI void APIENTRY glWindowPos3sv (const GLshort *v); -#endif -#endif /* GL_VERSION_1_4 */ - -#ifndef GL_VERSION_1_5 -#define GL_VERSION_1_5 1 -#include -typedef ptrdiff_t GLsizeiptr; -typedef ptrdiff_t GLintptr; -#define GL_BUFFER_SIZE 0x8764 -#define GL_BUFFER_USAGE 0x8765 -#define GL_QUERY_COUNTER_BITS 0x8864 -#define GL_CURRENT_QUERY 0x8865 -#define GL_QUERY_RESULT 0x8866 -#define GL_QUERY_RESULT_AVAILABLE 0x8867 -#define GL_ARRAY_BUFFER 0x8892 -#define GL_ELEMENT_ARRAY_BUFFER 0x8893 -#define GL_ARRAY_BUFFER_BINDING 0x8894 -#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 -#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F -#define GL_READ_ONLY 0x88B8 -#define GL_WRITE_ONLY 0x88B9 -#define GL_READ_WRITE 0x88BA -#define GL_BUFFER_ACCESS 0x88BB -#define GL_BUFFER_MAPPED 0x88BC -#define GL_BUFFER_MAP_POINTER 0x88BD -#define GL_STREAM_DRAW 0x88E0 -#define GL_STREAM_READ 0x88E1 -#define GL_STREAM_COPY 0x88E2 -#define GL_STATIC_DRAW 0x88E4 -#define GL_STATIC_READ 0x88E5 -#define GL_STATIC_COPY 0x88E6 -#define GL_DYNAMIC_DRAW 0x88E8 -#define GL_DYNAMIC_READ 0x88E9 -#define GL_DYNAMIC_COPY 0x88EA -#define GL_SAMPLES_PASSED 0x8914 -#define GL_SRC1_ALPHA 0x8589 -#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 -#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 -#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 -#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899 -#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A -#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B -#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C -#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D -#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E -#define GL_FOG_COORD_SRC 0x8450 -#define GL_FOG_COORD 0x8451 -#define GL_CURRENT_FOG_COORD 0x8453 -#define GL_FOG_COORD_ARRAY_TYPE 0x8454 -#define GL_FOG_COORD_ARRAY_STRIDE 0x8455 -#define GL_FOG_COORD_ARRAY_POINTER 0x8456 -#define GL_FOG_COORD_ARRAY 0x8457 -#define GL_FOG_COORD_ARRAY_BUFFER_BINDING 0x889D -#define GL_SRC0_RGB 0x8580 -#define GL_SRC1_RGB 0x8581 -#define GL_SRC2_RGB 0x8582 -#define GL_SRC0_ALPHA 0x8588 -#define GL_SRC2_ALPHA 0x858A -typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids); -typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids); -typedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id); -typedef void (APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id); -typedef void (APIENTRYP PFNGLENDQUERYPROC) (GLenum target); -typedef void (APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params); -typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); -typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers); -typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); -typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer); -typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); -typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); -typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); -typedef void *(APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access); -typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target); -typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid **params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGenQueries (GLsizei n, GLuint *ids); -GLAPI void APIENTRY glDeleteQueries (GLsizei n, const GLuint *ids); -GLAPI GLboolean APIENTRY glIsQuery (GLuint id); -GLAPI void APIENTRY glBeginQuery (GLenum target, GLuint id); -GLAPI void APIENTRY glEndQuery (GLenum target); -GLAPI void APIENTRY glGetQueryiv (GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetQueryObjectiv (GLuint id, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetQueryObjectuiv (GLuint id, GLenum pname, GLuint *params); -GLAPI void APIENTRY glBindBuffer (GLenum target, GLuint buffer); -GLAPI void APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers); -GLAPI void APIENTRY glGenBuffers (GLsizei n, GLuint *buffers); -GLAPI GLboolean APIENTRY glIsBuffer (GLuint buffer); -GLAPI void APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); -GLAPI void APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); -GLAPI void APIENTRY glGetBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); -GLAPI void *APIENTRY glMapBuffer (GLenum target, GLenum access); -GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum target); -GLAPI void APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetBufferPointerv (GLenum target, GLenum pname, GLvoid **params); -#endif -#endif /* GL_VERSION_1_5 */ - -#ifndef GL_VERSION_2_0 -#define GL_VERSION_2_0 1 -typedef char GLchar; -#define GL_BLEND_EQUATION_RGB 0x8009 -#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 -#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 -#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 -#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 -#define GL_CURRENT_VERTEX_ATTRIB 0x8626 -#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 -#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 -#define GL_STENCIL_BACK_FUNC 0x8800 -#define GL_STENCIL_BACK_FAIL 0x8801 -#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 -#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 -#define GL_MAX_DRAW_BUFFERS 0x8824 -#define GL_DRAW_BUFFER0 0x8825 -#define GL_DRAW_BUFFER1 0x8826 -#define GL_DRAW_BUFFER2 0x8827 -#define GL_DRAW_BUFFER3 0x8828 -#define GL_DRAW_BUFFER4 0x8829 -#define GL_DRAW_BUFFER5 0x882A -#define GL_DRAW_BUFFER6 0x882B -#define GL_DRAW_BUFFER7 0x882C -#define GL_DRAW_BUFFER8 0x882D -#define GL_DRAW_BUFFER9 0x882E -#define GL_DRAW_BUFFER10 0x882F -#define GL_DRAW_BUFFER11 0x8830 -#define GL_DRAW_BUFFER12 0x8831 -#define GL_DRAW_BUFFER13 0x8832 -#define GL_DRAW_BUFFER14 0x8833 -#define GL_DRAW_BUFFER15 0x8834 -#define GL_BLEND_EQUATION_ALPHA 0x883D -#define GL_MAX_VERTEX_ATTRIBS 0x8869 -#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A -#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 -#define GL_FRAGMENT_SHADER 0x8B30 -#define GL_VERTEX_SHADER 0x8B31 -#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 -#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A -#define GL_MAX_VARYING_FLOATS 0x8B4B -#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C -#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D -#define GL_SHADER_TYPE 0x8B4F -#define GL_FLOAT_VEC2 0x8B50 -#define GL_FLOAT_VEC3 0x8B51 -#define GL_FLOAT_VEC4 0x8B52 -#define GL_INT_VEC2 0x8B53 -#define GL_INT_VEC3 0x8B54 -#define GL_INT_VEC4 0x8B55 -#define GL_BOOL 0x8B56 -#define GL_BOOL_VEC2 0x8B57 -#define GL_BOOL_VEC3 0x8B58 -#define GL_BOOL_VEC4 0x8B59 -#define GL_FLOAT_MAT2 0x8B5A -#define GL_FLOAT_MAT3 0x8B5B -#define GL_FLOAT_MAT4 0x8B5C -#define GL_SAMPLER_1D 0x8B5D -#define GL_SAMPLER_2D 0x8B5E -#define GL_SAMPLER_3D 0x8B5F -#define GL_SAMPLER_CUBE 0x8B60 -#define GL_SAMPLER_1D_SHADOW 0x8B61 -#define GL_SAMPLER_2D_SHADOW 0x8B62 -#define GL_DELETE_STATUS 0x8B80 -#define GL_COMPILE_STATUS 0x8B81 -#define GL_LINK_STATUS 0x8B82 -#define GL_VALIDATE_STATUS 0x8B83 -#define GL_INFO_LOG_LENGTH 0x8B84 -#define GL_ATTACHED_SHADERS 0x8B85 -#define GL_ACTIVE_UNIFORMS 0x8B86 -#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 -#define GL_SHADER_SOURCE_LENGTH 0x8B88 -#define GL_ACTIVE_ATTRIBUTES 0x8B89 -#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A -#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B -#define GL_SHADING_LANGUAGE_VERSION 0x8B8C -#define GL_CURRENT_PROGRAM 0x8B8D -#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 -#define GL_LOWER_LEFT 0x8CA1 -#define GL_UPPER_LEFT 0x8CA2 -#define GL_STENCIL_BACK_REF 0x8CA3 -#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 -#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 -#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 -#define GL_POINT_SPRITE 0x8861 -#define GL_COORD_REPLACE 0x8862 -#define GL_MAX_TEXTURE_COORDS 0x8871 -typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha); -typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs); -typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); -typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask); -typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask); -typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); -typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name); -typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader); -typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void); -typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type); -typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program); -typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader); -typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); -typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index); -typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); -typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); -typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); -typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name); -typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); -typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name); -typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params); -typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, GLvoid **pointer); -typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program); -typedef GLboolean (APIENTRYP PFNGLISSHADERPROC) (GLuint shader); -typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program); -typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); -typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program); -typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); -typedef void (APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); -typedef void (APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0); -typedef void (APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); -typedef void (APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); -typedef void (APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha); -GLAPI void APIENTRY glDrawBuffers (GLsizei n, const GLenum *bufs); -GLAPI void APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); -GLAPI void APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask); -GLAPI void APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask); -GLAPI void APIENTRY glAttachShader (GLuint program, GLuint shader); -GLAPI void APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name); -GLAPI void APIENTRY glCompileShader (GLuint shader); -GLAPI GLuint APIENTRY glCreateProgram (void); -GLAPI GLuint APIENTRY glCreateShader (GLenum type); -GLAPI void APIENTRY glDeleteProgram (GLuint program); -GLAPI void APIENTRY glDeleteShader (GLuint shader); -GLAPI void APIENTRY glDetachShader (GLuint program, GLuint shader); -GLAPI void APIENTRY glDisableVertexAttribArray (GLuint index); -GLAPI void APIENTRY glEnableVertexAttribArray (GLuint index); -GLAPI void APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); -GLAPI void APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); -GLAPI void APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); -GLAPI GLint APIENTRY glGetAttribLocation (GLuint program, const GLchar *name); -GLAPI void APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -GLAPI void APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -GLAPI void APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); -GLAPI GLint APIENTRY glGetUniformLocation (GLuint program, const GLchar *name); -GLAPI void APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params); -GLAPI void APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params); -GLAPI void APIENTRY glGetVertexAttribdv (GLuint index, GLenum pname, GLdouble *params); -GLAPI void APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, GLvoid **pointer); -GLAPI GLboolean APIENTRY glIsProgram (GLuint program); -GLAPI GLboolean APIENTRY glIsShader (GLuint shader); -GLAPI void APIENTRY glLinkProgram (GLuint program); -GLAPI void APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); -GLAPI void APIENTRY glUseProgram (GLuint program); -GLAPI void APIENTRY glUniform1f (GLint location, GLfloat v0); -GLAPI void APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1); -GLAPI void APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -GLAPI void APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -GLAPI void APIENTRY glUniform1i (GLint location, GLint v0); -GLAPI void APIENTRY glUniform2i (GLint location, GLint v0, GLint v1); -GLAPI void APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2); -GLAPI void APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -GLAPI void APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value); -GLAPI void APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value); -GLAPI void APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value); -GLAPI void APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value); -GLAPI void APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value); -GLAPI void APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value); -GLAPI void APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value); -GLAPI void APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value); -GLAPI void APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glValidateProgram (GLuint program); -GLAPI void APIENTRY glVertexAttrib1d (GLuint index, GLdouble x); -GLAPI void APIENTRY glVertexAttrib1dv (GLuint index, const GLdouble *v); -GLAPI void APIENTRY glVertexAttrib1f (GLuint index, GLfloat x); -GLAPI void APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v); -GLAPI void APIENTRY glVertexAttrib1s (GLuint index, GLshort x); -GLAPI void APIENTRY glVertexAttrib1sv (GLuint index, const GLshort *v); -GLAPI void APIENTRY glVertexAttrib2d (GLuint index, GLdouble x, GLdouble y); -GLAPI void APIENTRY glVertexAttrib2dv (GLuint index, const GLdouble *v); -GLAPI void APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y); -GLAPI void APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v); -GLAPI void APIENTRY glVertexAttrib2s (GLuint index, GLshort x, GLshort y); -GLAPI void APIENTRY glVertexAttrib2sv (GLuint index, const GLshort *v); -GLAPI void APIENTRY glVertexAttrib3d (GLuint index, GLdouble x, GLdouble y, GLdouble z); -GLAPI void APIENTRY glVertexAttrib3dv (GLuint index, const GLdouble *v); -GLAPI void APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v); -GLAPI void APIENTRY glVertexAttrib3s (GLuint index, GLshort x, GLshort y, GLshort z); -GLAPI void APIENTRY glVertexAttrib3sv (GLuint index, const GLshort *v); -GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint index, const GLbyte *v); -GLAPI void APIENTRY glVertexAttrib4Niv (GLuint index, const GLint *v); -GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint index, const GLshort *v); -GLAPI void APIENTRY glVertexAttrib4Nub (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint index, const GLubyte *v); -GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint index, const GLuint *v); -GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint index, const GLushort *v); -GLAPI void APIENTRY glVertexAttrib4bv (GLuint index, const GLbyte *v); -GLAPI void APIENTRY glVertexAttrib4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI void APIENTRY glVertexAttrib4dv (GLuint index, const GLdouble *v); -GLAPI void APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI void APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v); -GLAPI void APIENTRY glVertexAttrib4iv (GLuint index, const GLint *v); -GLAPI void APIENTRY glVertexAttrib4s (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -GLAPI void APIENTRY glVertexAttrib4sv (GLuint index, const GLshort *v); -GLAPI void APIENTRY glVertexAttrib4ubv (GLuint index, const GLubyte *v); -GLAPI void APIENTRY glVertexAttrib4uiv (GLuint index, const GLuint *v); -GLAPI void APIENTRY glVertexAttrib4usv (GLuint index, const GLushort *v); -GLAPI void APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); -#endif -#endif /* GL_VERSION_2_0 */ - -#ifndef GL_VERSION_2_1 -#define GL_VERSION_2_1 1 -#define GL_PIXEL_PACK_BUFFER 0x88EB -#define GL_PIXEL_UNPACK_BUFFER 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED -#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF -#define GL_FLOAT_MAT2x3 0x8B65 -#define GL_FLOAT_MAT2x4 0x8B66 -#define GL_FLOAT_MAT3x2 0x8B67 -#define GL_FLOAT_MAT3x4 0x8B68 -#define GL_FLOAT_MAT4x2 0x8B69 -#define GL_FLOAT_MAT4x3 0x8B6A -#define GL_SRGB 0x8C40 -#define GL_SRGB8 0x8C41 -#define GL_SRGB_ALPHA 0x8C42 -#define GL_SRGB8_ALPHA8 0x8C43 -#define GL_COMPRESSED_SRGB 0x8C48 -#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 -#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F -#define GL_SLUMINANCE_ALPHA 0x8C44 -#define GL_SLUMINANCE8_ALPHA8 0x8C45 -#define GL_SLUMINANCE 0x8C46 -#define GL_SLUMINANCE8 0x8C47 -#define GL_COMPRESSED_SLUMINANCE 0x8C4A -#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glUniformMatrix2x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glUniformMatrix3x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glUniformMatrix2x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glUniformMatrix4x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glUniformMatrix3x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glUniformMatrix4x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -#endif -#endif /* GL_VERSION_2_1 */ - -#ifndef GL_VERSION_3_0 -#define GL_VERSION_3_0 1 -typedef unsigned short GLhalf; -#define GL_COMPARE_REF_TO_TEXTURE 0x884E -#define GL_CLIP_DISTANCE0 0x3000 -#define GL_CLIP_DISTANCE1 0x3001 -#define GL_CLIP_DISTANCE2 0x3002 -#define GL_CLIP_DISTANCE3 0x3003 -#define GL_CLIP_DISTANCE4 0x3004 -#define GL_CLIP_DISTANCE5 0x3005 -#define GL_CLIP_DISTANCE6 0x3006 -#define GL_CLIP_DISTANCE7 0x3007 -#define GL_MAX_CLIP_DISTANCES 0x0D32 -#define GL_MAJOR_VERSION 0x821B -#define GL_MINOR_VERSION 0x821C -#define GL_NUM_EXTENSIONS 0x821D -#define GL_CONTEXT_FLAGS 0x821E -#define GL_COMPRESSED_RED 0x8225 -#define GL_COMPRESSED_RG 0x8226 -#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001 -#define GL_RGBA32F 0x8814 -#define GL_RGB32F 0x8815 -#define GL_RGBA16F 0x881A -#define GL_RGB16F 0x881B -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD -#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF -#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 -#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 -#define GL_CLAMP_READ_COLOR 0x891C -#define GL_FIXED_ONLY 0x891D -#define GL_MAX_VARYING_COMPONENTS 0x8B4B -#define GL_TEXTURE_1D_ARRAY 0x8C18 -#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 -#define GL_TEXTURE_2D_ARRAY 0x8C1A -#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B -#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C -#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D -#define GL_R11F_G11F_B10F 0x8C3A -#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B -#define GL_RGB9_E5 0x8C3D -#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E -#define GL_TEXTURE_SHARED_SIZE 0x8C3F -#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 -#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 -#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 -#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 -#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 -#define GL_PRIMITIVES_GENERATED 0x8C87 -#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 -#define GL_RASTERIZER_DISCARD 0x8C89 -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B -#define GL_INTERLEAVED_ATTRIBS 0x8C8C -#define GL_SEPARATE_ATTRIBS 0x8C8D -#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E -#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F -#define GL_RGBA32UI 0x8D70 -#define GL_RGB32UI 0x8D71 -#define GL_RGBA16UI 0x8D76 -#define GL_RGB16UI 0x8D77 -#define GL_RGBA8UI 0x8D7C -#define GL_RGB8UI 0x8D7D -#define GL_RGBA32I 0x8D82 -#define GL_RGB32I 0x8D83 -#define GL_RGBA16I 0x8D88 -#define GL_RGB16I 0x8D89 -#define GL_RGBA8I 0x8D8E -#define GL_RGB8I 0x8D8F -#define GL_RED_INTEGER 0x8D94 -#define GL_GREEN_INTEGER 0x8D95 -#define GL_BLUE_INTEGER 0x8D96 -#define GL_RGB_INTEGER 0x8D98 -#define GL_RGBA_INTEGER 0x8D99 -#define GL_BGR_INTEGER 0x8D9A -#define GL_BGRA_INTEGER 0x8D9B -#define GL_SAMPLER_1D_ARRAY 0x8DC0 -#define GL_SAMPLER_2D_ARRAY 0x8DC1 -#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 -#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 -#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 -#define GL_UNSIGNED_INT_VEC2 0x8DC6 -#define GL_UNSIGNED_INT_VEC3 0x8DC7 -#define GL_UNSIGNED_INT_VEC4 0x8DC8 -#define GL_INT_SAMPLER_1D 0x8DC9 -#define GL_INT_SAMPLER_2D 0x8DCA -#define GL_INT_SAMPLER_3D 0x8DCB -#define GL_INT_SAMPLER_CUBE 0x8DCC -#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE -#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF -#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 -#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 -#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 -#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 -#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 -#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 -#define GL_QUERY_WAIT 0x8E13 -#define GL_QUERY_NO_WAIT 0x8E14 -#define GL_QUERY_BY_REGION_WAIT 0x8E15 -#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 -#define GL_BUFFER_ACCESS_FLAGS 0x911F -#define GL_BUFFER_MAP_LENGTH 0x9120 -#define GL_BUFFER_MAP_OFFSET 0x9121 -#define GL_DEPTH_COMPONENT32F 0x8CAC -#define GL_DEPTH32F_STENCIL8 0x8CAD -#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD -#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 -#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 -#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 -#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 -#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 -#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 -#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 -#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 -#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 -#define GL_FRAMEBUFFER_DEFAULT 0x8218 -#define GL_FRAMEBUFFER_UNDEFINED 0x8219 -#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A -#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 -#define GL_DEPTH_STENCIL 0x84F9 -#define GL_UNSIGNED_INT_24_8 0x84FA -#define GL_DEPTH24_STENCIL8 0x88F0 -#define GL_TEXTURE_STENCIL_SIZE 0x88F1 -#define GL_TEXTURE_RED_TYPE 0x8C10 -#define GL_TEXTURE_GREEN_TYPE 0x8C11 -#define GL_TEXTURE_BLUE_TYPE 0x8C12 -#define GL_TEXTURE_ALPHA_TYPE 0x8C13 -#define GL_TEXTURE_DEPTH_TYPE 0x8C16 -#define GL_UNSIGNED_NORMALIZED 0x8C17 -#define GL_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_RENDERBUFFER_BINDING 0x8CA7 -#define GL_READ_FRAMEBUFFER 0x8CA8 -#define GL_DRAW_FRAMEBUFFER 0x8CA9 -#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA -#define GL_RENDERBUFFER_SAMPLES 0x8CAB -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 -#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 -#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 -#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 -#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB -#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC -#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD -#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF -#define GL_COLOR_ATTACHMENT0 0x8CE0 -#define GL_COLOR_ATTACHMENT1 0x8CE1 -#define GL_COLOR_ATTACHMENT2 0x8CE2 -#define GL_COLOR_ATTACHMENT3 0x8CE3 -#define GL_COLOR_ATTACHMENT4 0x8CE4 -#define GL_COLOR_ATTACHMENT5 0x8CE5 -#define GL_COLOR_ATTACHMENT6 0x8CE6 -#define GL_COLOR_ATTACHMENT7 0x8CE7 -#define GL_COLOR_ATTACHMENT8 0x8CE8 -#define GL_COLOR_ATTACHMENT9 0x8CE9 -#define GL_COLOR_ATTACHMENT10 0x8CEA -#define GL_COLOR_ATTACHMENT11 0x8CEB -#define GL_COLOR_ATTACHMENT12 0x8CEC -#define GL_COLOR_ATTACHMENT13 0x8CED -#define GL_COLOR_ATTACHMENT14 0x8CEE -#define GL_COLOR_ATTACHMENT15 0x8CEF -#define GL_DEPTH_ATTACHMENT 0x8D00 -#define GL_STENCIL_ATTACHMENT 0x8D20 -#define GL_FRAMEBUFFER 0x8D40 -#define GL_RENDERBUFFER 0x8D41 -#define GL_RENDERBUFFER_WIDTH 0x8D42 -#define GL_RENDERBUFFER_HEIGHT 0x8D43 -#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 -#define GL_STENCIL_INDEX1 0x8D46 -#define GL_STENCIL_INDEX4 0x8D47 -#define GL_STENCIL_INDEX8 0x8D48 -#define GL_STENCIL_INDEX16 0x8D49 -#define GL_RENDERBUFFER_RED_SIZE 0x8D50 -#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 -#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 -#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 -#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 -#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 -#define GL_MAX_SAMPLES 0x8D57 -#define GL_INDEX 0x8222 -#define GL_TEXTURE_LUMINANCE_TYPE 0x8C14 -#define GL_TEXTURE_INTENSITY_TYPE 0x8C15 -#define GL_FRAMEBUFFER_SRGB 0x8DB9 -#define GL_HALF_FLOAT 0x140B -#define GL_MAP_READ_BIT 0x0001 -#define GL_MAP_WRITE_BIT 0x0002 -#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 -#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 -#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 -#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 -#define GL_COMPRESSED_RED_RGTC1 0x8DBB -#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC -#define GL_COMPRESSED_RG_RGTC2 0x8DBD -#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE -#define GL_RG 0x8227 -#define GL_RG_INTEGER 0x8228 -#define GL_R8 0x8229 -#define GL_R16 0x822A -#define GL_RG8 0x822B -#define GL_RG16 0x822C -#define GL_R16F 0x822D -#define GL_R32F 0x822E -#define GL_RG16F 0x822F -#define GL_RG32F 0x8230 -#define GL_R8I 0x8231 -#define GL_R8UI 0x8232 -#define GL_R16I 0x8233 -#define GL_R16UI 0x8234 -#define GL_R32I 0x8235 -#define GL_R32UI 0x8236 -#define GL_RG8I 0x8237 -#define GL_RG8UI 0x8238 -#define GL_RG16I 0x8239 -#define GL_RG16UI 0x823A -#define GL_RG32I 0x823B -#define GL_RG32UI 0x823C -#define GL_VERTEX_ARRAY_BINDING 0x85B5 -#define GL_CLAMP_VERTEX_COLOR 0x891A -#define GL_CLAMP_FRAGMENT_COLOR 0x891B -#define GL_ALPHA_INTEGER 0x8D97 -typedef void (APIENTRYP PFNGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); -typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data); -typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data); -typedef void (APIENTRYP PFNGLENABLEIPROC) (GLenum target, GLuint index); -typedef void (APIENTRYP PFNGLDISABLEIPROC) (GLenum target, GLuint index); -typedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC) (GLenum target, GLuint index); -typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode); -typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC) (void); -typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer); -typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); -typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); -typedef void (APIENTRYP PFNGLCLAMPCOLORPROC) (GLenum target, GLenum clamp); -typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode); -typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC) (void); -typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint *params); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC) (GLuint index, GLint x); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC) (GLuint index, GLint x, GLint y); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC) (GLuint index, GLint x, GLint y, GLint z); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC) (GLuint index, GLuint x); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC) (GLuint index, GLuint x, GLuint y); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC) (GLuint index, const GLbyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC) (GLuint index, const GLushort *v); -typedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint *params); -typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint color, const GLchar *name); -typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar *name); -typedef void (APIENTRYP PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0); -typedef void (APIENTRYP PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1); -typedef void (APIENTRYP PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); -typedef void (APIENTRYP PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -typedef void (APIENTRYP PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint *params); -typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint *params); -typedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint *value); -typedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint *value); -typedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat *value); -typedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); -typedef const GLubyte *(APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint index); -typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer); -typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); -typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers); -typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers); -typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer); -typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); -typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers); -typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers); -typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target); -typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -typedef void *(APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); -typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length); -typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array); -typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays); -typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays); -typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glColorMaski (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); -GLAPI void APIENTRY glGetBooleani_v (GLenum target, GLuint index, GLboolean *data); -GLAPI void APIENTRY glGetIntegeri_v (GLenum target, GLuint index, GLint *data); -GLAPI void APIENTRY glEnablei (GLenum target, GLuint index); -GLAPI void APIENTRY glDisablei (GLenum target, GLuint index); -GLAPI GLboolean APIENTRY glIsEnabledi (GLenum target, GLuint index); -GLAPI void APIENTRY glBeginTransformFeedback (GLenum primitiveMode); -GLAPI void APIENTRY glEndTransformFeedback (void); -GLAPI void APIENTRY glBindBufferRange (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -GLAPI void APIENTRY glBindBufferBase (GLenum target, GLuint index, GLuint buffer); -GLAPI void APIENTRY glTransformFeedbackVaryings (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); -GLAPI void APIENTRY glGetTransformFeedbackVarying (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); -GLAPI void APIENTRY glClampColor (GLenum target, GLenum clamp); -GLAPI void APIENTRY glBeginConditionalRender (GLuint id, GLenum mode); -GLAPI void APIENTRY glEndConditionalRender (void); -GLAPI void APIENTRY glVertexAttribIPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void APIENTRY glGetVertexAttribIiv (GLuint index, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetVertexAttribIuiv (GLuint index, GLenum pname, GLuint *params); -GLAPI void APIENTRY glVertexAttribI1i (GLuint index, GLint x); -GLAPI void APIENTRY glVertexAttribI2i (GLuint index, GLint x, GLint y); -GLAPI void APIENTRY glVertexAttribI3i (GLuint index, GLint x, GLint y, GLint z); -GLAPI void APIENTRY glVertexAttribI4i (GLuint index, GLint x, GLint y, GLint z, GLint w); -GLAPI void APIENTRY glVertexAttribI1ui (GLuint index, GLuint x); -GLAPI void APIENTRY glVertexAttribI2ui (GLuint index, GLuint x, GLuint y); -GLAPI void APIENTRY glVertexAttribI3ui (GLuint index, GLuint x, GLuint y, GLuint z); -GLAPI void APIENTRY glVertexAttribI4ui (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -GLAPI void APIENTRY glVertexAttribI1iv (GLuint index, const GLint *v); -GLAPI void APIENTRY glVertexAttribI2iv (GLuint index, const GLint *v); -GLAPI void APIENTRY glVertexAttribI3iv (GLuint index, const GLint *v); -GLAPI void APIENTRY glVertexAttribI4iv (GLuint index, const GLint *v); -GLAPI void APIENTRY glVertexAttribI1uiv (GLuint index, const GLuint *v); -GLAPI void APIENTRY glVertexAttribI2uiv (GLuint index, const GLuint *v); -GLAPI void APIENTRY glVertexAttribI3uiv (GLuint index, const GLuint *v); -GLAPI void APIENTRY glVertexAttribI4uiv (GLuint index, const GLuint *v); -GLAPI void APIENTRY glVertexAttribI4bv (GLuint index, const GLbyte *v); -GLAPI void APIENTRY glVertexAttribI4sv (GLuint index, const GLshort *v); -GLAPI void APIENTRY glVertexAttribI4ubv (GLuint index, const GLubyte *v); -GLAPI void APIENTRY glVertexAttribI4usv (GLuint index, const GLushort *v); -GLAPI void APIENTRY glGetUniformuiv (GLuint program, GLint location, GLuint *params); -GLAPI void APIENTRY glBindFragDataLocation (GLuint program, GLuint color, const GLchar *name); -GLAPI GLint APIENTRY glGetFragDataLocation (GLuint program, const GLchar *name); -GLAPI void APIENTRY glUniform1ui (GLint location, GLuint v0); -GLAPI void APIENTRY glUniform2ui (GLint location, GLuint v0, GLuint v1); -GLAPI void APIENTRY glUniform3ui (GLint location, GLuint v0, GLuint v1, GLuint v2); -GLAPI void APIENTRY glUniform4ui (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -GLAPI void APIENTRY glUniform1uiv (GLint location, GLsizei count, const GLuint *value); -GLAPI void APIENTRY glUniform2uiv (GLint location, GLsizei count, const GLuint *value); -GLAPI void APIENTRY glUniform3uiv (GLint location, GLsizei count, const GLuint *value); -GLAPI void APIENTRY glUniform4uiv (GLint location, GLsizei count, const GLuint *value); -GLAPI void APIENTRY glTexParameterIiv (GLenum target, GLenum pname, const GLint *params); -GLAPI void APIENTRY glTexParameterIuiv (GLenum target, GLenum pname, const GLuint *params); -GLAPI void APIENTRY glGetTexParameterIiv (GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetTexParameterIuiv (GLenum target, GLenum pname, GLuint *params); -GLAPI void APIENTRY glClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint *value); -GLAPI void APIENTRY glClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint *value); -GLAPI void APIENTRY glClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat *value); -GLAPI void APIENTRY glClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); -GLAPI const GLubyte *APIENTRY glGetStringi (GLenum name, GLuint index); -GLAPI GLboolean APIENTRY glIsRenderbuffer (GLuint renderbuffer); -GLAPI void APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer); -GLAPI void APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers); -GLAPI void APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers); -GLAPI void APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -GLAPI void APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params); -GLAPI GLboolean APIENTRY glIsFramebuffer (GLuint framebuffer); -GLAPI void APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer); -GLAPI void APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers); -GLAPI void APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers); -GLAPI GLenum APIENTRY glCheckFramebufferStatus (GLenum target); -GLAPI void APIENTRY glFramebufferTexture1D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -GLAPI void APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -GLAPI void APIENTRY glFramebufferTexture3D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -GLAPI void APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -GLAPI void APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params); -GLAPI void APIENTRY glGenerateMipmap (GLenum target); -GLAPI void APIENTRY glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -GLAPI void APIENTRY glRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -GLAPI void APIENTRY glFramebufferTextureLayer (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -GLAPI void *APIENTRY glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); -GLAPI void APIENTRY glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length); -GLAPI void APIENTRY glBindVertexArray (GLuint array); -GLAPI void APIENTRY glDeleteVertexArrays (GLsizei n, const GLuint *arrays); -GLAPI void APIENTRY glGenVertexArrays (GLsizei n, GLuint *arrays); -GLAPI GLboolean APIENTRY glIsVertexArray (GLuint array); -#endif -#endif /* GL_VERSION_3_0 */ - -#ifndef GL_VERSION_3_1 -#define GL_VERSION_3_1 1 -#define GL_SAMPLER_2D_RECT 0x8B63 -#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 -#define GL_SAMPLER_BUFFER 0x8DC2 -#define GL_INT_SAMPLER_2D_RECT 0x8DCD -#define GL_INT_SAMPLER_BUFFER 0x8DD0 -#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 -#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 -#define GL_TEXTURE_BUFFER 0x8C2A -#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B -#define GL_TEXTURE_BINDING_BUFFER 0x8C2C -#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D -#define GL_TEXTURE_RECTANGLE 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 -#define GL_R8_SNORM 0x8F94 -#define GL_RG8_SNORM 0x8F95 -#define GL_RGB8_SNORM 0x8F96 -#define GL_RGBA8_SNORM 0x8F97 -#define GL_R16_SNORM 0x8F98 -#define GL_RG16_SNORM 0x8F99 -#define GL_RGB16_SNORM 0x8F9A -#define GL_RGBA16_SNORM 0x8F9B -#define GL_SIGNED_NORMALIZED 0x8F9C -#define GL_PRIMITIVE_RESTART 0x8F9D -#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E -#define GL_COPY_READ_BUFFER 0x8F36 -#define GL_COPY_WRITE_BUFFER 0x8F37 -#define GL_UNIFORM_BUFFER 0x8A11 -#define GL_UNIFORM_BUFFER_BINDING 0x8A28 -#define GL_UNIFORM_BUFFER_START 0x8A29 -#define GL_UNIFORM_BUFFER_SIZE 0x8A2A -#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B -#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D -#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E -#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F -#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 -#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 -#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 -#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 -#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 -#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 -#define GL_UNIFORM_TYPE 0x8A37 -#define GL_UNIFORM_SIZE 0x8A38 -#define GL_UNIFORM_NAME_LENGTH 0x8A39 -#define GL_UNIFORM_BLOCK_INDEX 0x8A3A -#define GL_UNIFORM_OFFSET 0x8A3B -#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C -#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D -#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E -#define GL_UNIFORM_BLOCK_BINDING 0x8A3F -#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 -#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 -#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 -#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 -#define GL_INVALID_INDEX 0xFFFFFFFFu -typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount); -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount); -typedef void (APIENTRYP PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer); -typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index); -typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); -typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices); -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); -typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName); -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); -typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei instancecount); -GLAPI void APIENTRY glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount); -GLAPI void APIENTRY glTexBuffer (GLenum target, GLenum internalformat, GLuint buffer); -GLAPI void APIENTRY glPrimitiveRestartIndex (GLuint index); -GLAPI void APIENTRY glCopyBufferSubData (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); -GLAPI void APIENTRY glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices); -GLAPI void APIENTRY glGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetActiveUniformName (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); -GLAPI GLuint APIENTRY glGetUniformBlockIndex (GLuint program, const GLchar *uniformBlockName); -GLAPI void APIENTRY glGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); -GLAPI void APIENTRY glUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); -#endif -#endif /* GL_VERSION_3_1 */ - -#ifndef GL_VERSION_3_2 -#define GL_VERSION_3_2 1 -typedef struct __GLsync *GLsync; -#ifndef GLEXT_64_TYPES_DEFINED -/* This code block is duplicated in glxext.h, so must be protected */ -#define GLEXT_64_TYPES_DEFINED -/* Define int32_t, int64_t, and uint64_t types for UST/MSC */ -/* (as used in the GL_EXT_timer_query extension). */ -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -#include -#elif defined(__sun__) || defined(__digital__) -#include -#if defined(__STDC__) -#if defined(__arch64__) || defined(_LP64) -typedef long int int64_t; -typedef unsigned long int uint64_t; -#else -typedef long long int int64_t; -typedef unsigned long long int uint64_t; -#endif /* __arch64__ */ -#endif /* __STDC__ */ -#elif defined( __VMS ) || defined(__sgi) -#include -#elif defined(__SCO__) || defined(__USLC__) -#include -#elif defined(__UNIXOS2__) || defined(__SOL64__) -typedef long int int32_t; -typedef long long int int64_t; -typedef unsigned long long int uint64_t; -#elif defined(_WIN32) && defined(__GNUC__) -#include -#elif defined(_WIN32) -typedef __int32 int32_t; -typedef __int64 int64_t; -typedef unsigned __int64 uint64_t; -#else -/* Fallback if nothing above works */ -#include -#endif -#endif -typedef uint64_t GLuint64; -typedef int64_t GLint64; -#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 -#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 -#define GL_LINES_ADJACENCY 0x000A -#define GL_LINE_STRIP_ADJACENCY 0x000B -#define GL_TRIANGLES_ADJACENCY 0x000C -#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D -#define GL_PROGRAM_POINT_SIZE 0x8642 -#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 -#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 -#define GL_GEOMETRY_SHADER 0x8DD9 -#define GL_GEOMETRY_VERTICES_OUT 0x8916 -#define GL_GEOMETRY_INPUT_TYPE 0x8917 -#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 -#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF -#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 -#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 -#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 -#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 -#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 -#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 -#define GL_CONTEXT_PROFILE_MASK 0x9126 -#define GL_DEPTH_CLAMP 0x864F -#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C -#define GL_FIRST_VERTEX_CONVENTION 0x8E4D -#define GL_LAST_VERTEX_CONVENTION 0x8E4E -#define GL_PROVOKING_VERTEX 0x8E4F -#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F -#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 -#define GL_OBJECT_TYPE 0x9112 -#define GL_SYNC_CONDITION 0x9113 -#define GL_SYNC_STATUS 0x9114 -#define GL_SYNC_FLAGS 0x9115 -#define GL_SYNC_FENCE 0x9116 -#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 -#define GL_UNSIGNALED 0x9118 -#define GL_SIGNALED 0x9119 -#define GL_ALREADY_SIGNALED 0x911A -#define GL_TIMEOUT_EXPIRED 0x911B -#define GL_CONDITION_SATISFIED 0x911C -#define GL_WAIT_FAILED 0x911D -#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull -#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 -#define GL_SAMPLE_POSITION 0x8E50 -#define GL_SAMPLE_MASK 0x8E51 -#define GL_SAMPLE_MASK_VALUE 0x8E52 -#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 -#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 -#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 -#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 -#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 -#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 -#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 -#define GL_TEXTURE_SAMPLES 0x9106 -#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 -#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 -#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 -#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A -#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B -#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C -#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D -#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E -#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F -#define GL_MAX_INTEGER_SAMPLES 0x9110 -typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); -typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid *const*indices, GLsizei drawcount, const GLint *basevertex); -typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC) (GLenum mode); -typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC) (GLenum condition, GLbitfield flags); -typedef GLboolean (APIENTRYP PFNGLISSYNCPROC) (GLsync sync); -typedef void (APIENTRYP PFNGLDELETESYNCPROC) (GLsync sync); -typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); -typedef void (APIENTRYP PFNGLWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); -typedef void (APIENTRYP PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64 *params); -typedef void (APIENTRYP PFNGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); -typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data); -typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); -typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val); -typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); -GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); -GLAPI void APIENTRY glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); -GLAPI void APIENTRY glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const GLvoid *const*indices, GLsizei drawcount, const GLint *basevertex); -GLAPI void APIENTRY glProvokingVertex (GLenum mode); -GLAPI GLsync APIENTRY glFenceSync (GLenum condition, GLbitfield flags); -GLAPI GLboolean APIENTRY glIsSync (GLsync sync); -GLAPI void APIENTRY glDeleteSync (GLsync sync); -GLAPI GLenum APIENTRY glClientWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout); -GLAPI void APIENTRY glWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout); -GLAPI void APIENTRY glGetInteger64v (GLenum pname, GLint64 *params); -GLAPI void APIENTRY glGetSynciv (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); -GLAPI void APIENTRY glGetInteger64i_v (GLenum target, GLuint index, GLint64 *data); -GLAPI void APIENTRY glGetBufferParameteri64v (GLenum target, GLenum pname, GLint64 *params); -GLAPI void APIENTRY glFramebufferTexture (GLenum target, GLenum attachment, GLuint texture, GLint level); -GLAPI void APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -GLAPI void APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); -GLAPI void APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val); -GLAPI void APIENTRY glSampleMaski (GLuint index, GLbitfield mask); -#endif -#endif /* GL_VERSION_3_2 */ - -#ifndef GL_VERSION_3_3 -#define GL_VERSION_3_3 1 -#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE -#define GL_SRC1_COLOR 0x88F9 -#define GL_ONE_MINUS_SRC1_COLOR 0x88FA -#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB -#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC -#define GL_ANY_SAMPLES_PASSED 0x8C2F -#define GL_SAMPLER_BINDING 0x8919 -#define GL_RGB10_A2UI 0x906F -#define GL_TEXTURE_SWIZZLE_R 0x8E42 -#define GL_TEXTURE_SWIZZLE_G 0x8E43 -#define GL_TEXTURE_SWIZZLE_B 0x8E44 -#define GL_TEXTURE_SWIZZLE_A 0x8E45 -#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 -#define GL_TIME_ELAPSED 0x88BF -#define GL_TIMESTAMP 0x8E28 -#define GL_INT_2_10_10_10_REV 0x8D9F -typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); -typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar *name); -typedef void (APIENTRYP PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint *samplers); -typedef void (APIENTRYP PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint *samplers); -typedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC) (GLuint sampler); -typedef void (APIENTRYP PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler); -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint *param); -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat *param); -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint *param); -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint *param); -typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint *params); -typedef void (APIENTRYP PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target); -typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64 *params); -typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64 *params); -typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor); -typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); -typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); -typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); -typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); -typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -typedef void (APIENTRYP PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value); -typedef void (APIENTRYP PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint *value); -typedef void (APIENTRYP PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value); -typedef void (APIENTRYP PFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint *value); -typedef void (APIENTRYP PFNGLVERTEXP4UIPROC) (GLenum type, GLuint value); -typedef void (APIENTRYP PFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint *value); -typedef void (APIENTRYP PFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords); -typedef void (APIENTRYP PFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint *coords); -typedef void (APIENTRYP PFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords); -typedef void (APIENTRYP PFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint *coords); -typedef void (APIENTRYP PFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords); -typedef void (APIENTRYP PFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint *coords); -typedef void (APIENTRYP PFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords); -typedef void (APIENTRYP PFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint *coords); -typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords); -typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); -typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords); -typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); -typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords); -typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); -typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords); -typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); -typedef void (APIENTRYP PFNGLNORMALP3UIPROC) (GLenum type, GLuint coords); -typedef void (APIENTRYP PFNGLNORMALP3UIVPROC) (GLenum type, const GLuint *coords); -typedef void (APIENTRYP PFNGLCOLORP3UIPROC) (GLenum type, GLuint color); -typedef void (APIENTRYP PFNGLCOLORP3UIVPROC) (GLenum type, const GLuint *color); -typedef void (APIENTRYP PFNGLCOLORP4UIPROC) (GLenum type, GLuint color); -typedef void (APIENTRYP PFNGLCOLORP4UIVPROC) (GLenum type, const GLuint *color); -typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color); -typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint *color); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBindFragDataLocationIndexed (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); -GLAPI GLint APIENTRY glGetFragDataIndex (GLuint program, const GLchar *name); -GLAPI void APIENTRY glGenSamplers (GLsizei count, GLuint *samplers); -GLAPI void APIENTRY glDeleteSamplers (GLsizei count, const GLuint *samplers); -GLAPI GLboolean APIENTRY glIsSampler (GLuint sampler); -GLAPI void APIENTRY glBindSampler (GLuint unit, GLuint sampler); -GLAPI void APIENTRY glSamplerParameteri (GLuint sampler, GLenum pname, GLint param); -GLAPI void APIENTRY glSamplerParameteriv (GLuint sampler, GLenum pname, const GLint *param); -GLAPI void APIENTRY glSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param); -GLAPI void APIENTRY glSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat *param); -GLAPI void APIENTRY glSamplerParameterIiv (GLuint sampler, GLenum pname, const GLint *param); -GLAPI void APIENTRY glSamplerParameterIuiv (GLuint sampler, GLenum pname, const GLuint *param); -GLAPI void APIENTRY glGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetSamplerParameterIiv (GLuint sampler, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetSamplerParameterIuiv (GLuint sampler, GLenum pname, GLuint *params); -GLAPI void APIENTRY glQueryCounter (GLuint id, GLenum target); -GLAPI void APIENTRY glGetQueryObjecti64v (GLuint id, GLenum pname, GLint64 *params); -GLAPI void APIENTRY glGetQueryObjectui64v (GLuint id, GLenum pname, GLuint64 *params); -GLAPI void APIENTRY glVertexAttribDivisor (GLuint index, GLuint divisor); -GLAPI void APIENTRY glVertexAttribP1ui (GLuint index, GLenum type, GLboolean normalized, GLuint value); -GLAPI void APIENTRY glVertexAttribP1uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -GLAPI void APIENTRY glVertexAttribP2ui (GLuint index, GLenum type, GLboolean normalized, GLuint value); -GLAPI void APIENTRY glVertexAttribP2uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -GLAPI void APIENTRY glVertexAttribP3ui (GLuint index, GLenum type, GLboolean normalized, GLuint value); -GLAPI void APIENTRY glVertexAttribP3uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -GLAPI void APIENTRY glVertexAttribP4ui (GLuint index, GLenum type, GLboolean normalized, GLuint value); -GLAPI void APIENTRY glVertexAttribP4uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -GLAPI void APIENTRY glVertexP2ui (GLenum type, GLuint value); -GLAPI void APIENTRY glVertexP2uiv (GLenum type, const GLuint *value); -GLAPI void APIENTRY glVertexP3ui (GLenum type, GLuint value); -GLAPI void APIENTRY glVertexP3uiv (GLenum type, const GLuint *value); -GLAPI void APIENTRY glVertexP4ui (GLenum type, GLuint value); -GLAPI void APIENTRY glVertexP4uiv (GLenum type, const GLuint *value); -GLAPI void APIENTRY glTexCoordP1ui (GLenum type, GLuint coords); -GLAPI void APIENTRY glTexCoordP1uiv (GLenum type, const GLuint *coords); -GLAPI void APIENTRY glTexCoordP2ui (GLenum type, GLuint coords); -GLAPI void APIENTRY glTexCoordP2uiv (GLenum type, const GLuint *coords); -GLAPI void APIENTRY glTexCoordP3ui (GLenum type, GLuint coords); -GLAPI void APIENTRY glTexCoordP3uiv (GLenum type, const GLuint *coords); -GLAPI void APIENTRY glTexCoordP4ui (GLenum type, GLuint coords); -GLAPI void APIENTRY glTexCoordP4uiv (GLenum type, const GLuint *coords); -GLAPI void APIENTRY glMultiTexCoordP1ui (GLenum texture, GLenum type, GLuint coords); -GLAPI void APIENTRY glMultiTexCoordP1uiv (GLenum texture, GLenum type, const GLuint *coords); -GLAPI void APIENTRY glMultiTexCoordP2ui (GLenum texture, GLenum type, GLuint coords); -GLAPI void APIENTRY glMultiTexCoordP2uiv (GLenum texture, GLenum type, const GLuint *coords); -GLAPI void APIENTRY glMultiTexCoordP3ui (GLenum texture, GLenum type, GLuint coords); -GLAPI void APIENTRY glMultiTexCoordP3uiv (GLenum texture, GLenum type, const GLuint *coords); -GLAPI void APIENTRY glMultiTexCoordP4ui (GLenum texture, GLenum type, GLuint coords); -GLAPI void APIENTRY glMultiTexCoordP4uiv (GLenum texture, GLenum type, const GLuint *coords); -GLAPI void APIENTRY glNormalP3ui (GLenum type, GLuint coords); -GLAPI void APIENTRY glNormalP3uiv (GLenum type, const GLuint *coords); -GLAPI void APIENTRY glColorP3ui (GLenum type, GLuint color); -GLAPI void APIENTRY glColorP3uiv (GLenum type, const GLuint *color); -GLAPI void APIENTRY glColorP4ui (GLenum type, GLuint color); -GLAPI void APIENTRY glColorP4uiv (GLenum type, const GLuint *color); -GLAPI void APIENTRY glSecondaryColorP3ui (GLenum type, GLuint color); -GLAPI void APIENTRY glSecondaryColorP3uiv (GLenum type, const GLuint *color); -#endif -#endif /* GL_VERSION_3_3 */ - -#ifndef GL_VERSION_4_0 -#define GL_VERSION_4_0 1 -#define GL_SAMPLE_SHADING 0x8C36 -#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 -#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E -#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F -#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009 -#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A -#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B -#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C -#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D -#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E -#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F -#define GL_DRAW_INDIRECT_BUFFER 0x8F3F -#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 -#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F -#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A -#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B -#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C -#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D -#define GL_MAX_VERTEX_STREAMS 0x8E71 -#define GL_DOUBLE_VEC2 0x8FFC -#define GL_DOUBLE_VEC3 0x8FFD -#define GL_DOUBLE_VEC4 0x8FFE -#define GL_DOUBLE_MAT2 0x8F46 -#define GL_DOUBLE_MAT3 0x8F47 -#define GL_DOUBLE_MAT4 0x8F48 -#define GL_DOUBLE_MAT2x3 0x8F49 -#define GL_DOUBLE_MAT2x4 0x8F4A -#define GL_DOUBLE_MAT3x2 0x8F4B -#define GL_DOUBLE_MAT3x4 0x8F4C -#define GL_DOUBLE_MAT4x2 0x8F4D -#define GL_DOUBLE_MAT4x3 0x8F4E -#define GL_ACTIVE_SUBROUTINES 0x8DE5 -#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6 -#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47 -#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48 -#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49 -#define GL_MAX_SUBROUTINES 0x8DE7 -#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 -#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A -#define GL_COMPATIBLE_SUBROUTINES 0x8E4B -#define GL_PATCHES 0x000E -#define GL_PATCH_VERTICES 0x8E72 -#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73 -#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74 -#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75 -#define GL_TESS_GEN_MODE 0x8E76 -#define GL_TESS_GEN_SPACING 0x8E77 -#define GL_TESS_GEN_VERTEX_ORDER 0x8E78 -#define GL_TESS_GEN_POINT_MODE 0x8E79 -#define GL_ISOLINES 0x8E7A -#define GL_FRACTIONAL_ODD 0x8E7B -#define GL_FRACTIONAL_EVEN 0x8E7C -#define GL_MAX_PATCH_VERTICES 0x8E7D -#define GL_MAX_TESS_GEN_LEVEL 0x8E7E -#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F -#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80 -#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81 -#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82 -#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83 -#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84 -#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85 -#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86 -#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89 -#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A -#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C -#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D -#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E -#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F -#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 -#define GL_TESS_EVALUATION_SHADER 0x8E87 -#define GL_TESS_CONTROL_SHADER 0x8E88 -#define GL_TRANSFORM_FEEDBACK 0x8E22 -#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23 -#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24 -#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 -#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 -typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC) (GLfloat value); -typedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode); -typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); -typedef void (APIENTRYP PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst); -typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); -typedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const GLvoid *indirect); -typedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const GLvoid *indirect); -typedef void (APIENTRYP PFNGLUNIFORM1DPROC) (GLint location, GLdouble x); -typedef void (APIENTRYP PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble *value); -typedef void (APIENTRYP PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble *value); -typedef void (APIENTRYP PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble *value); -typedef void (APIENTRYP PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble *params); -typedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar *name); -typedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar *name); -typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); -typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); -typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); -typedef void (APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint *indices); -typedef void (APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint *params); -typedef void (APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint *values); -typedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value); -typedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat *values); -typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id); -typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint *ids); -typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids); -typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id); -typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC) (void); -typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC) (void); -typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id); -typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream); -typedef void (APIENTRYP PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id); -typedef void (APIENTRYP PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index); -typedef void (APIENTRYP PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glMinSampleShading (GLfloat value); -GLAPI void APIENTRY glBlendEquationi (GLuint buf, GLenum mode); -GLAPI void APIENTRY glBlendEquationSeparatei (GLuint buf, GLenum modeRGB, GLenum modeAlpha); -GLAPI void APIENTRY glBlendFunci (GLuint buf, GLenum src, GLenum dst); -GLAPI void APIENTRY glBlendFuncSeparatei (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); -GLAPI void APIENTRY glDrawArraysIndirect (GLenum mode, const GLvoid *indirect); -GLAPI void APIENTRY glDrawElementsIndirect (GLenum mode, GLenum type, const GLvoid *indirect); -GLAPI void APIENTRY glUniform1d (GLint location, GLdouble x); -GLAPI void APIENTRY glUniform2d (GLint location, GLdouble x, GLdouble y); -GLAPI void APIENTRY glUniform3d (GLint location, GLdouble x, GLdouble y, GLdouble z); -GLAPI void APIENTRY glUniform4d (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI void APIENTRY glUniform1dv (GLint location, GLsizei count, const GLdouble *value); -GLAPI void APIENTRY glUniform2dv (GLint location, GLsizei count, const GLdouble *value); -GLAPI void APIENTRY glUniform3dv (GLint location, GLsizei count, const GLdouble *value); -GLAPI void APIENTRY glUniform4dv (GLint location, GLsizei count, const GLdouble *value); -GLAPI void APIENTRY glUniformMatrix2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glUniformMatrix3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glUniformMatrix4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glUniformMatrix2x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glUniformMatrix2x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glUniformMatrix3x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glUniformMatrix3x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glUniformMatrix4x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glUniformMatrix4x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glGetUniformdv (GLuint program, GLint location, GLdouble *params); -GLAPI GLint APIENTRY glGetSubroutineUniformLocation (GLuint program, GLenum shadertype, const GLchar *name); -GLAPI GLuint APIENTRY glGetSubroutineIndex (GLuint program, GLenum shadertype, const GLchar *name); -GLAPI void APIENTRY glGetActiveSubroutineUniformiv (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); -GLAPI void APIENTRY glGetActiveSubroutineUniformName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); -GLAPI void APIENTRY glGetActiveSubroutineName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); -GLAPI void APIENTRY glUniformSubroutinesuiv (GLenum shadertype, GLsizei count, const GLuint *indices); -GLAPI void APIENTRY glGetUniformSubroutineuiv (GLenum shadertype, GLint location, GLuint *params); -GLAPI void APIENTRY glGetProgramStageiv (GLuint program, GLenum shadertype, GLenum pname, GLint *values); -GLAPI void APIENTRY glPatchParameteri (GLenum pname, GLint value); -GLAPI void APIENTRY glPatchParameterfv (GLenum pname, const GLfloat *values); -GLAPI void APIENTRY glBindTransformFeedback (GLenum target, GLuint id); -GLAPI void APIENTRY glDeleteTransformFeedbacks (GLsizei n, const GLuint *ids); -GLAPI void APIENTRY glGenTransformFeedbacks (GLsizei n, GLuint *ids); -GLAPI GLboolean APIENTRY glIsTransformFeedback (GLuint id); -GLAPI void APIENTRY glPauseTransformFeedback (void); -GLAPI void APIENTRY glResumeTransformFeedback (void); -GLAPI void APIENTRY glDrawTransformFeedback (GLenum mode, GLuint id); -GLAPI void APIENTRY glDrawTransformFeedbackStream (GLenum mode, GLuint id, GLuint stream); -GLAPI void APIENTRY glBeginQueryIndexed (GLenum target, GLuint index, GLuint id); -GLAPI void APIENTRY glEndQueryIndexed (GLenum target, GLuint index); -GLAPI void APIENTRY glGetQueryIndexediv (GLenum target, GLuint index, GLenum pname, GLint *params); -#endif -#endif /* GL_VERSION_4_0 */ - -#ifndef GL_VERSION_4_1 -#define GL_VERSION_4_1 1 -#define GL_FIXED 0x140C -#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A -#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B -#define GL_LOW_FLOAT 0x8DF0 -#define GL_MEDIUM_FLOAT 0x8DF1 -#define GL_HIGH_FLOAT 0x8DF2 -#define GL_LOW_INT 0x8DF3 -#define GL_MEDIUM_INT 0x8DF4 -#define GL_HIGH_INT 0x8DF5 -#define GL_SHADER_COMPILER 0x8DFA -#define GL_SHADER_BINARY_FORMATS 0x8DF8 -#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 -#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB -#define GL_MAX_VARYING_VECTORS 0x8DFC -#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD -#define GL_RGB565 0x8D62 -#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 -#define GL_PROGRAM_BINARY_LENGTH 0x8741 -#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE -#define GL_PROGRAM_BINARY_FORMATS 0x87FF -#define GL_VERTEX_SHADER_BIT 0x00000001 -#define GL_FRAGMENT_SHADER_BIT 0x00000002 -#define GL_GEOMETRY_SHADER_BIT 0x00000004 -#define GL_TESS_CONTROL_SHADER_BIT 0x00000008 -#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010 -#define GL_ALL_SHADER_BITS 0xFFFFFFFF -#define GL_PROGRAM_SEPARABLE 0x8258 -#define GL_ACTIVE_PROGRAM 0x8259 -#define GL_PROGRAM_PIPELINE_BINDING 0x825A -#define GL_MAX_VIEWPORTS 0x825B -#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C -#define GL_VIEWPORT_BOUNDS_RANGE 0x825D -#define GL_LAYER_PROVOKING_VERTEX 0x825E -#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F -#define GL_UNDEFINED_VERTEX 0x8260 -typedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void); -typedef void (APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length); -typedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); -typedef void (APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f); -typedef void (APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d); -typedef void (APIENTRYP PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); -typedef void (APIENTRYP PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length); -typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value); -typedef void (APIENTRYP PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program); -typedef void (APIENTRYP PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program); -typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar *const*strings); -typedef void (APIENTRYP PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline); -typedef void (APIENTRYP PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint *pipelines); -typedef void (APIENTRYP PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines); -typedef GLboolean (APIENTRYP PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline); -typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint v0); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat v0); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble v0); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint v0); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint v0, GLint v1); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline); -typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble *params); -typedef void (APIENTRYP PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat *v); -typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); -typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint *v); -typedef void (APIENTRYP PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLdouble *v); -typedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLdouble n, GLdouble f); -typedef void (APIENTRYP PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat *data); -typedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble *data); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glReleaseShaderCompiler (void); -GLAPI void APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length); -GLAPI void APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); -GLAPI void APIENTRY glDepthRangef (GLfloat n, GLfloat f); -GLAPI void APIENTRY glClearDepthf (GLfloat d); -GLAPI void APIENTRY glGetProgramBinary (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); -GLAPI void APIENTRY glProgramBinary (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length); -GLAPI void APIENTRY glProgramParameteri (GLuint program, GLenum pname, GLint value); -GLAPI void APIENTRY glUseProgramStages (GLuint pipeline, GLbitfield stages, GLuint program); -GLAPI void APIENTRY glActiveShaderProgram (GLuint pipeline, GLuint program); -GLAPI GLuint APIENTRY glCreateShaderProgramv (GLenum type, GLsizei count, const GLchar *const*strings); -GLAPI void APIENTRY glBindProgramPipeline (GLuint pipeline); -GLAPI void APIENTRY glDeleteProgramPipelines (GLsizei n, const GLuint *pipelines); -GLAPI void APIENTRY glGenProgramPipelines (GLsizei n, GLuint *pipelines); -GLAPI GLboolean APIENTRY glIsProgramPipeline (GLuint pipeline); -GLAPI void APIENTRY glGetProgramPipelineiv (GLuint pipeline, GLenum pname, GLint *params); -GLAPI void APIENTRY glProgramUniform1i (GLuint program, GLint location, GLint v0); -GLAPI void APIENTRY glProgramUniform1iv (GLuint program, GLint location, GLsizei count, const GLint *value); -GLAPI void APIENTRY glProgramUniform1f (GLuint program, GLint location, GLfloat v0); -GLAPI void APIENTRY glProgramUniform1fv (GLuint program, GLint location, GLsizei count, const GLfloat *value); -GLAPI void APIENTRY glProgramUniform1d (GLuint program, GLint location, GLdouble v0); -GLAPI void APIENTRY glProgramUniform1dv (GLuint program, GLint location, GLsizei count, const GLdouble *value); -GLAPI void APIENTRY glProgramUniform1ui (GLuint program, GLint location, GLuint v0); -GLAPI void APIENTRY glProgramUniform1uiv (GLuint program, GLint location, GLsizei count, const GLuint *value); -GLAPI void APIENTRY glProgramUniform2i (GLuint program, GLint location, GLint v0, GLint v1); -GLAPI void APIENTRY glProgramUniform2iv (GLuint program, GLint location, GLsizei count, const GLint *value); -GLAPI void APIENTRY glProgramUniform2f (GLuint program, GLint location, GLfloat v0, GLfloat v1); -GLAPI void APIENTRY glProgramUniform2fv (GLuint program, GLint location, GLsizei count, const GLfloat *value); -GLAPI void APIENTRY glProgramUniform2d (GLuint program, GLint location, GLdouble v0, GLdouble v1); -GLAPI void APIENTRY glProgramUniform2dv (GLuint program, GLint location, GLsizei count, const GLdouble *value); -GLAPI void APIENTRY glProgramUniform2ui (GLuint program, GLint location, GLuint v0, GLuint v1); -GLAPI void APIENTRY glProgramUniform2uiv (GLuint program, GLint location, GLsizei count, const GLuint *value); -GLAPI void APIENTRY glProgramUniform3i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); -GLAPI void APIENTRY glProgramUniform3iv (GLuint program, GLint location, GLsizei count, const GLint *value); -GLAPI void APIENTRY glProgramUniform3f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -GLAPI void APIENTRY glProgramUniform3fv (GLuint program, GLint location, GLsizei count, const GLfloat *value); -GLAPI void APIENTRY glProgramUniform3d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); -GLAPI void APIENTRY glProgramUniform3dv (GLuint program, GLint location, GLsizei count, const GLdouble *value); -GLAPI void APIENTRY glProgramUniform3ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); -GLAPI void APIENTRY glProgramUniform3uiv (GLuint program, GLint location, GLsizei count, const GLuint *value); -GLAPI void APIENTRY glProgramUniform4i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -GLAPI void APIENTRY glProgramUniform4iv (GLuint program, GLint location, GLsizei count, const GLint *value); -GLAPI void APIENTRY glProgramUniform4f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -GLAPI void APIENTRY glProgramUniform4fv (GLuint program, GLint location, GLsizei count, const GLfloat *value); -GLAPI void APIENTRY glProgramUniform4d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); -GLAPI void APIENTRY glProgramUniform4dv (GLuint program, GLint location, GLsizei count, const GLdouble *value); -GLAPI void APIENTRY glProgramUniform4ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -GLAPI void APIENTRY glProgramUniform4uiv (GLuint program, GLint location, GLsizei count, const GLuint *value); -GLAPI void APIENTRY glProgramUniformMatrix2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glProgramUniformMatrix3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glProgramUniformMatrix4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glProgramUniformMatrix2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glProgramUniformMatrix3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glProgramUniformMatrix4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glProgramUniformMatrix2x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glProgramUniformMatrix3x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glProgramUniformMatrix2x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glProgramUniformMatrix4x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glProgramUniformMatrix3x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glProgramUniformMatrix4x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glProgramUniformMatrix2x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glProgramUniformMatrix3x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glProgramUniformMatrix2x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glProgramUniformMatrix4x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glProgramUniformMatrix3x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glProgramUniformMatrix4x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glValidateProgramPipeline (GLuint pipeline); -GLAPI void APIENTRY glGetProgramPipelineInfoLog (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -GLAPI void APIENTRY glVertexAttribL1d (GLuint index, GLdouble x); -GLAPI void APIENTRY glVertexAttribL2d (GLuint index, GLdouble x, GLdouble y); -GLAPI void APIENTRY glVertexAttribL3d (GLuint index, GLdouble x, GLdouble y, GLdouble z); -GLAPI void APIENTRY glVertexAttribL4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI void APIENTRY glVertexAttribL1dv (GLuint index, const GLdouble *v); -GLAPI void APIENTRY glVertexAttribL2dv (GLuint index, const GLdouble *v); -GLAPI void APIENTRY glVertexAttribL3dv (GLuint index, const GLdouble *v); -GLAPI void APIENTRY glVertexAttribL4dv (GLuint index, const GLdouble *v); -GLAPI void APIENTRY glVertexAttribLPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void APIENTRY glGetVertexAttribLdv (GLuint index, GLenum pname, GLdouble *params); -GLAPI void APIENTRY glViewportArrayv (GLuint first, GLsizei count, const GLfloat *v); -GLAPI void APIENTRY glViewportIndexedf (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); -GLAPI void APIENTRY glViewportIndexedfv (GLuint index, const GLfloat *v); -GLAPI void APIENTRY glScissorArrayv (GLuint first, GLsizei count, const GLint *v); -GLAPI void APIENTRY glScissorIndexed (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); -GLAPI void APIENTRY glScissorIndexedv (GLuint index, const GLint *v); -GLAPI void APIENTRY glDepthRangeArrayv (GLuint first, GLsizei count, const GLdouble *v); -GLAPI void APIENTRY glDepthRangeIndexed (GLuint index, GLdouble n, GLdouble f); -GLAPI void APIENTRY glGetFloati_v (GLenum target, GLuint index, GLfloat *data); -GLAPI void APIENTRY glGetDoublei_v (GLenum target, GLuint index, GLdouble *data); -#endif -#endif /* GL_VERSION_4_1 */ - -#ifndef GL_VERSION_4_2 -#define GL_VERSION_4_2 1 -#define GL_UNPACK_COMPRESSED_BLOCK_WIDTH 0x9127 -#define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128 -#define GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129 -#define GL_UNPACK_COMPRESSED_BLOCK_SIZE 0x912A -#define GL_PACK_COMPRESSED_BLOCK_WIDTH 0x912B -#define GL_PACK_COMPRESSED_BLOCK_HEIGHT 0x912C -#define GL_PACK_COMPRESSED_BLOCK_DEPTH 0x912D -#define GL_PACK_COMPRESSED_BLOCK_SIZE 0x912E -#define GL_NUM_SAMPLE_COUNTS 0x9380 -#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC -#define GL_ATOMIC_COUNTER_BUFFER 0x92C0 -#define GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1 -#define GL_ATOMIC_COUNTER_BUFFER_START 0x92C2 -#define GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3 -#define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4 -#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5 -#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6 -#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7 -#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8 -#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9 -#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA -#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB -#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC -#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD -#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE -#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF -#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0 -#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1 -#define GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2 -#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3 -#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4 -#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5 -#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6 -#define GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7 -#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8 -#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC -#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9 -#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA -#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB -#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001 -#define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002 -#define GL_UNIFORM_BARRIER_BIT 0x00000004 -#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008 -#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020 -#define GL_COMMAND_BARRIER_BIT 0x00000040 -#define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080 -#define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100 -#define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200 -#define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400 -#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800 -#define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000 -#define GL_ALL_BARRIER_BITS 0xFFFFFFFF -#define GL_MAX_IMAGE_UNITS 0x8F38 -#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39 -#define GL_IMAGE_BINDING_NAME 0x8F3A -#define GL_IMAGE_BINDING_LEVEL 0x8F3B -#define GL_IMAGE_BINDING_LAYERED 0x8F3C -#define GL_IMAGE_BINDING_LAYER 0x8F3D -#define GL_IMAGE_BINDING_ACCESS 0x8F3E -#define GL_IMAGE_1D 0x904C -#define GL_IMAGE_2D 0x904D -#define GL_IMAGE_3D 0x904E -#define GL_IMAGE_2D_RECT 0x904F -#define GL_IMAGE_CUBE 0x9050 -#define GL_IMAGE_BUFFER 0x9051 -#define GL_IMAGE_1D_ARRAY 0x9052 -#define GL_IMAGE_2D_ARRAY 0x9053 -#define GL_IMAGE_CUBE_MAP_ARRAY 0x9054 -#define GL_IMAGE_2D_MULTISAMPLE 0x9055 -#define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056 -#define GL_INT_IMAGE_1D 0x9057 -#define GL_INT_IMAGE_2D 0x9058 -#define GL_INT_IMAGE_3D 0x9059 -#define GL_INT_IMAGE_2D_RECT 0x905A -#define GL_INT_IMAGE_CUBE 0x905B -#define GL_INT_IMAGE_BUFFER 0x905C -#define GL_INT_IMAGE_1D_ARRAY 0x905D -#define GL_INT_IMAGE_2D_ARRAY 0x905E -#define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F -#define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060 -#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061 -#define GL_UNSIGNED_INT_IMAGE_1D 0x9062 -#define GL_UNSIGNED_INT_IMAGE_2D 0x9063 -#define GL_UNSIGNED_INT_IMAGE_3D 0x9064 -#define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065 -#define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066 -#define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067 -#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068 -#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069 -#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A -#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B -#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C -#define GL_MAX_IMAGE_SAMPLES 0x906D -#define GL_IMAGE_BINDING_FORMAT 0x906E -#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7 -#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8 -#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9 -#define GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA -#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB -#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC -#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD -#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE -#define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF -#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F -typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); -typedef void (APIENTRYP PFNGLGETINTERNALFORMATI64VPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params); -typedef void (APIENTRYP PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); -typedef void (APIENTRYP PFNGLMEMORYBARRIERPROC) (GLbitfield barriers); -typedef void (APIENTRYP PFNGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); -typedef void (APIENTRYP PFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); -typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei instancecount); -typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawArraysInstancedBaseInstance (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); -GLAPI void APIENTRY glDrawElementsInstancedBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); -GLAPI void APIENTRY glDrawElementsInstancedBaseVertexBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); -GLAPI void APIENTRY glGetInternalformati64v (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params); -GLAPI void APIENTRY glGetActiveAtomicCounterBufferiv (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); -GLAPI void APIENTRY glBindImageTexture (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); -GLAPI void APIENTRY glMemoryBarrier (GLbitfield barriers); -GLAPI void APIENTRY glTexStorage1D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); -GLAPI void APIENTRY glTexStorage2D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); -GLAPI void APIENTRY glTexStorage3D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); -GLAPI void APIENTRY glDrawTransformFeedbackInstanced (GLenum mode, GLuint id, GLsizei instancecount); -GLAPI void APIENTRY glDrawTransformFeedbackStreamInstanced (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); -#endif -#endif /* GL_VERSION_4_2 */ - -#ifndef GL_VERSION_4_3 -#define GL_VERSION_4_3 1 -typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); -#define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9 -#define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E -#define GL_COMPRESSED_RGB8_ETC2 0x9274 -#define GL_COMPRESSED_SRGB8_ETC2 0x9275 -#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276 -#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277 -#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278 -#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279 -#define GL_COMPRESSED_R11_EAC 0x9270 -#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271 -#define GL_COMPRESSED_RG11_EAC 0x9272 -#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273 -#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69 -#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A -#define GL_MAX_ELEMENT_INDEX 0x8D6B -#define GL_COMPUTE_SHADER 0x91B9 -#define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB -#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC -#define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD -#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262 -#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263 -#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264 -#define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265 -#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266 -#define GL_MAX_COMPUTE_LOCAL_INVOCATIONS 0x90EB -#define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE -#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF -#define GL_COMPUTE_LOCAL_WORK_SIZE 0x8267 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC -#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED -#define GL_DISPATCH_INDIRECT_BUFFER 0x90EE -#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF -#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 -#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 -#define GL_DEBUG_CALLBACK_FUNCTION 0x8244 -#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 -#define GL_DEBUG_SOURCE_API 0x8246 -#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 -#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 -#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 -#define GL_DEBUG_SOURCE_APPLICATION 0x824A -#define GL_DEBUG_SOURCE_OTHER 0x824B -#define GL_DEBUG_TYPE_ERROR 0x824C -#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D -#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E -#define GL_DEBUG_TYPE_PORTABILITY 0x824F -#define GL_DEBUG_TYPE_PERFORMANCE 0x8250 -#define GL_DEBUG_TYPE_OTHER 0x8251 -#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 -#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 -#define GL_DEBUG_LOGGED_MESSAGES 0x9145 -#define GL_DEBUG_SEVERITY_HIGH 0x9146 -#define GL_DEBUG_SEVERITY_MEDIUM 0x9147 -#define GL_DEBUG_SEVERITY_LOW 0x9148 -#define GL_DEBUG_TYPE_MARKER 0x8268 -#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 -#define GL_DEBUG_TYPE_POP_GROUP 0x826A -#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B -#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C -#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D -#define GL_BUFFER 0x82E0 -#define GL_SHADER 0x82E1 -#define GL_PROGRAM 0x82E2 -#define GL_QUERY 0x82E3 -#define GL_PROGRAM_PIPELINE 0x82E4 -#define GL_SAMPLER 0x82E6 -#define GL_MAX_LABEL_LENGTH 0x82E8 -#define GL_DEBUG_OUTPUT 0x92E0 -#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 -#define GL_MAX_UNIFORM_LOCATIONS 0x826E -#define GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310 -#define GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311 -#define GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312 -#define GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313 -#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314 -#define GL_MAX_FRAMEBUFFER_WIDTH 0x9315 -#define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316 -#define GL_MAX_FRAMEBUFFER_LAYERS 0x9317 -#define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318 -#define GL_INTERNALFORMAT_SUPPORTED 0x826F -#define GL_INTERNALFORMAT_PREFERRED 0x8270 -#define GL_INTERNALFORMAT_RED_SIZE 0x8271 -#define GL_INTERNALFORMAT_GREEN_SIZE 0x8272 -#define GL_INTERNALFORMAT_BLUE_SIZE 0x8273 -#define GL_INTERNALFORMAT_ALPHA_SIZE 0x8274 -#define GL_INTERNALFORMAT_DEPTH_SIZE 0x8275 -#define GL_INTERNALFORMAT_STENCIL_SIZE 0x8276 -#define GL_INTERNALFORMAT_SHARED_SIZE 0x8277 -#define GL_INTERNALFORMAT_RED_TYPE 0x8278 -#define GL_INTERNALFORMAT_GREEN_TYPE 0x8279 -#define GL_INTERNALFORMAT_BLUE_TYPE 0x827A -#define GL_INTERNALFORMAT_ALPHA_TYPE 0x827B -#define GL_INTERNALFORMAT_DEPTH_TYPE 0x827C -#define GL_INTERNALFORMAT_STENCIL_TYPE 0x827D -#define GL_MAX_WIDTH 0x827E -#define GL_MAX_HEIGHT 0x827F -#define GL_MAX_DEPTH 0x8280 -#define GL_MAX_LAYERS 0x8281 -#define GL_MAX_COMBINED_DIMENSIONS 0x8282 -#define GL_COLOR_COMPONENTS 0x8283 -#define GL_DEPTH_COMPONENTS 0x8284 -#define GL_STENCIL_COMPONENTS 0x8285 -#define GL_COLOR_RENDERABLE 0x8286 -#define GL_DEPTH_RENDERABLE 0x8287 -#define GL_STENCIL_RENDERABLE 0x8288 -#define GL_FRAMEBUFFER_RENDERABLE 0x8289 -#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A -#define GL_FRAMEBUFFER_BLEND 0x828B -#define GL_READ_PIXELS 0x828C -#define GL_READ_PIXELS_FORMAT 0x828D -#define GL_READ_PIXELS_TYPE 0x828E -#define GL_TEXTURE_IMAGE_FORMAT 0x828F -#define GL_TEXTURE_IMAGE_TYPE 0x8290 -#define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291 -#define GL_GET_TEXTURE_IMAGE_TYPE 0x8292 -#define GL_MIPMAP 0x8293 -#define GL_MANUAL_GENERATE_MIPMAP 0x8294 -#define GL_AUTO_GENERATE_MIPMAP 0x8295 -#define GL_COLOR_ENCODING 0x8296 -#define GL_SRGB_READ 0x8297 -#define GL_SRGB_WRITE 0x8298 -#define GL_FILTER 0x829A -#define GL_VERTEX_TEXTURE 0x829B -#define GL_TESS_CONTROL_TEXTURE 0x829C -#define GL_TESS_EVALUATION_TEXTURE 0x829D -#define GL_GEOMETRY_TEXTURE 0x829E -#define GL_FRAGMENT_TEXTURE 0x829F -#define GL_COMPUTE_TEXTURE 0x82A0 -#define GL_TEXTURE_SHADOW 0x82A1 -#define GL_TEXTURE_GATHER 0x82A2 -#define GL_TEXTURE_GATHER_SHADOW 0x82A3 -#define GL_SHADER_IMAGE_LOAD 0x82A4 -#define GL_SHADER_IMAGE_STORE 0x82A5 -#define GL_SHADER_IMAGE_ATOMIC 0x82A6 -#define GL_IMAGE_TEXEL_SIZE 0x82A7 -#define GL_IMAGE_COMPATIBILITY_CLASS 0x82A8 -#define GL_IMAGE_PIXEL_FORMAT 0x82A9 -#define GL_IMAGE_PIXEL_TYPE 0x82AA -#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC -#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD -#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE -#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF -#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1 -#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2 -#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3 -#define GL_CLEAR_BUFFER 0x82B4 -#define GL_TEXTURE_VIEW 0x82B5 -#define GL_VIEW_COMPATIBILITY_CLASS 0x82B6 -#define GL_FULL_SUPPORT 0x82B7 -#define GL_CAVEAT_SUPPORT 0x82B8 -#define GL_IMAGE_CLASS_4_X_32 0x82B9 -#define GL_IMAGE_CLASS_2_X_32 0x82BA -#define GL_IMAGE_CLASS_1_X_32 0x82BB -#define GL_IMAGE_CLASS_4_X_16 0x82BC -#define GL_IMAGE_CLASS_2_X_16 0x82BD -#define GL_IMAGE_CLASS_1_X_16 0x82BE -#define GL_IMAGE_CLASS_4_X_8 0x82BF -#define GL_IMAGE_CLASS_2_X_8 0x82C0 -#define GL_IMAGE_CLASS_1_X_8 0x82C1 -#define GL_IMAGE_CLASS_11_11_10 0x82C2 -#define GL_IMAGE_CLASS_10_10_10_2 0x82C3 -#define GL_VIEW_CLASS_128_BITS 0x82C4 -#define GL_VIEW_CLASS_96_BITS 0x82C5 -#define GL_VIEW_CLASS_64_BITS 0x82C6 -#define GL_VIEW_CLASS_48_BITS 0x82C7 -#define GL_VIEW_CLASS_32_BITS 0x82C8 -#define GL_VIEW_CLASS_24_BITS 0x82C9 -#define GL_VIEW_CLASS_16_BITS 0x82CA -#define GL_VIEW_CLASS_8_BITS 0x82CB -#define GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC -#define GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD -#define GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE -#define GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF -#define GL_VIEW_CLASS_RGTC1_RED 0x82D0 -#define GL_VIEW_CLASS_RGTC2_RG 0x82D1 -#define GL_VIEW_CLASS_BPTC_UNORM 0x82D2 -#define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3 -#define GL_UNIFORM 0x92E1 -#define GL_UNIFORM_BLOCK 0x92E2 -#define GL_PROGRAM_INPUT 0x92E3 -#define GL_PROGRAM_OUTPUT 0x92E4 -#define GL_BUFFER_VARIABLE 0x92E5 -#define GL_SHADER_STORAGE_BLOCK 0x92E6 -#define GL_VERTEX_SUBROUTINE 0x92E8 -#define GL_TESS_CONTROL_SUBROUTINE 0x92E9 -#define GL_TESS_EVALUATION_SUBROUTINE 0x92EA -#define GL_GEOMETRY_SUBROUTINE 0x92EB -#define GL_FRAGMENT_SUBROUTINE 0x92EC -#define GL_COMPUTE_SUBROUTINE 0x92ED -#define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE -#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF -#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0 -#define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1 -#define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2 -#define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3 -#define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4 -#define GL_ACTIVE_RESOURCES 0x92F5 -#define GL_MAX_NAME_LENGTH 0x92F6 -#define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7 -#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8 -#define GL_NAME_LENGTH 0x92F9 -#define GL_TYPE 0x92FA -#define GL_ARRAY_SIZE 0x92FB -#define GL_OFFSET 0x92FC -#define GL_BLOCK_INDEX 0x92FD -#define GL_ARRAY_STRIDE 0x92FE -#define GL_MATRIX_STRIDE 0x92FF -#define GL_IS_ROW_MAJOR 0x9300 -#define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301 -#define GL_BUFFER_BINDING 0x9302 -#define GL_BUFFER_DATA_SIZE 0x9303 -#define GL_NUM_ACTIVE_VARIABLES 0x9304 -#define GL_ACTIVE_VARIABLES 0x9305 -#define GL_REFERENCED_BY_VERTEX_SHADER 0x9306 -#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307 -#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308 -#define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309 -#define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A -#define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B -#define GL_TOP_LEVEL_ARRAY_SIZE 0x930C -#define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D -#define GL_LOCATION 0x930E -#define GL_LOCATION_INDEX 0x930F -#define GL_IS_PER_PATCH 0x92E7 -#define GL_SHADER_STORAGE_BUFFER 0x90D2 -#define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3 -#define GL_SHADER_STORAGE_BUFFER_START 0x90D4 -#define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5 -#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6 -#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7 -#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8 -#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9 -#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA -#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB -#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC -#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD -#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE -#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF -#define GL_SHADER_STORAGE_BARRIER_BIT 0x00002000 -#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39 -#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA -#define GL_TEXTURE_BUFFER_OFFSET 0x919D -#define GL_TEXTURE_BUFFER_SIZE 0x919E -#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F -#define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB -#define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC -#define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD -#define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE -#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF -#define GL_VERTEX_ATTRIB_BINDING 0x82D4 -#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5 -#define GL_VERTEX_BINDING_DIVISOR 0x82D6 -#define GL_VERTEX_BINDING_OFFSET 0x82D7 -#define GL_VERTEX_BINDING_STRIDE 0x82D8 -#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9 -#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA -#define GL_DISPLAY_LIST 0x82E7 -typedef void (APIENTRYP PFNGLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); -typedef void (APIENTRYP PFNGLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); -typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); -typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect); -typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATAPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); -typedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLINVALIDATETEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); -typedef void (APIENTRYP PFNGLINVALIDATETEXIMAGEPROC) (GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLINVALIDATEBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); -typedef void (APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC) (GLuint buffer); -typedef void (APIENTRYP PFNGLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); -typedef void (APIENTRYP PFNGLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); -typedef void (APIENTRYP PFNGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint *params); -typedef GLuint (APIENTRYP PFNGLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name); -typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); -typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params); -typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONPROC) (GLuint program, GLenum programInterface, const GLchar *name); -typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name); -typedef void (APIENTRYP PFNGLSHADERSTORAGEBLOCKBINDINGPROC) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); -typedef void (APIENTRYP PFNGLTEXBUFFERRANGEPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); -typedef void (APIENTRYP PFNGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -typedef void (APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); -typedef void (APIENTRYP PFNGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); -typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); -typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); -typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -typedef void (APIENTRYP PFNGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex); -typedef void (APIENTRYP PFNGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor); -typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); -typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); -typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam); -typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); -typedef void (APIENTRYP PFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); -typedef void (APIENTRYP PFNGLPOPDEBUGGROUPPROC) (void); -typedef void (APIENTRYP PFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); -typedef void (APIENTRYP PFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); -typedef void (APIENTRYP PFNGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label); -typedef void (APIENTRYP PFNGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glClearBufferData (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); -GLAPI void APIENTRY glClearBufferSubData (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); -GLAPI void APIENTRY glDispatchCompute (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); -GLAPI void APIENTRY glDispatchComputeIndirect (GLintptr indirect); -GLAPI void APIENTRY glCopyImageSubData (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); -GLAPI void APIENTRY glFramebufferParameteri (GLenum target, GLenum pname, GLint param); -GLAPI void APIENTRY glGetFramebufferParameteriv (GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glInvalidateTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); -GLAPI void APIENTRY glInvalidateTexImage (GLuint texture, GLint level); -GLAPI void APIENTRY glInvalidateBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr length); -GLAPI void APIENTRY glInvalidateBufferData (GLuint buffer); -GLAPI void APIENTRY glInvalidateFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments); -GLAPI void APIENTRY glInvalidateSubFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI void APIENTRY glMultiDrawArraysIndirect (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); -GLAPI void APIENTRY glMultiDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); -GLAPI void APIENTRY glGetProgramInterfaceiv (GLuint program, GLenum programInterface, GLenum pname, GLint *params); -GLAPI GLuint APIENTRY glGetProgramResourceIndex (GLuint program, GLenum programInterface, const GLchar *name); -GLAPI void APIENTRY glGetProgramResourceName (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); -GLAPI void APIENTRY glGetProgramResourceiv (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params); -GLAPI GLint APIENTRY glGetProgramResourceLocation (GLuint program, GLenum programInterface, const GLchar *name); -GLAPI GLint APIENTRY glGetProgramResourceLocationIndex (GLuint program, GLenum programInterface, const GLchar *name); -GLAPI void APIENTRY glShaderStorageBlockBinding (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); -GLAPI void APIENTRY glTexBufferRange (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); -GLAPI void APIENTRY glTexStorage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -GLAPI void APIENTRY glTexStorage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); -GLAPI void APIENTRY glTextureView (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); -GLAPI void APIENTRY glBindVertexBuffer (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); -GLAPI void APIENTRY glVertexAttribFormat (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); -GLAPI void APIENTRY glVertexAttribIFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -GLAPI void APIENTRY glVertexAttribLFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -GLAPI void APIENTRY glVertexAttribBinding (GLuint attribindex, GLuint bindingindex); -GLAPI void APIENTRY glVertexBindingDivisor (GLuint bindingindex, GLuint divisor); -GLAPI void APIENTRY glDebugMessageControl (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); -GLAPI void APIENTRY glDebugMessageInsert (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); -GLAPI void APIENTRY glDebugMessageCallback (GLDEBUGPROC callback, const void *userParam); -GLAPI GLuint APIENTRY glGetDebugMessageLog (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); -GLAPI void APIENTRY glPushDebugGroup (GLenum source, GLuint id, GLsizei length, const GLchar *message); -GLAPI void APIENTRY glPopDebugGroup (void); -GLAPI void APIENTRY glObjectLabel (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); -GLAPI void APIENTRY glGetObjectLabel (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); -GLAPI void APIENTRY glObjectPtrLabel (const void *ptr, GLsizei length, const GLchar *label); -GLAPI void APIENTRY glGetObjectPtrLabel (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); -#endif -#endif /* GL_VERSION_4_3 */ - -#ifndef GL_ARB_ES2_compatibility -#define GL_ARB_ES2_compatibility 1 -#endif /* GL_ARB_ES2_compatibility */ - -#ifndef GL_ARB_ES3_compatibility -#define GL_ARB_ES3_compatibility 1 -#endif /* GL_ARB_ES3_compatibility */ - -#ifndef GL_ARB_arrays_of_arrays -#define GL_ARB_arrays_of_arrays 1 -#endif /* GL_ARB_arrays_of_arrays */ - -#ifndef GL_ARB_base_instance -#define GL_ARB_base_instance 1 -#endif /* GL_ARB_base_instance */ - -#ifndef GL_ARB_blend_func_extended -#define GL_ARB_blend_func_extended 1 -#endif /* GL_ARB_blend_func_extended */ - -#ifndef GL_ARB_cl_event -#define GL_ARB_cl_event 1 -struct _cl_context; -struct _cl_event; -#define GL_SYNC_CL_EVENT_ARB 0x8240 -#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241 -typedef GLsync (APIENTRYP PFNGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context *context, struct _cl_event *event, GLbitfield flags); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI GLsync APIENTRY glCreateSyncFromCLeventARB (struct _cl_context *context, struct _cl_event *event, GLbitfield flags); -#endif -#endif /* GL_ARB_cl_event */ - -#ifndef GL_ARB_clear_buffer_object -#define GL_ARB_clear_buffer_object 1 -#endif /* GL_ARB_clear_buffer_object */ - -#ifndef GL_ARB_color_buffer_float -#define GL_ARB_color_buffer_float 1 -#define GL_RGBA_FLOAT_MODE_ARB 0x8820 -#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A -#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B -#define GL_CLAMP_READ_COLOR_ARB 0x891C -#define GL_FIXED_ONLY_ARB 0x891D -typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glClampColorARB (GLenum target, GLenum clamp); -#endif -#endif /* GL_ARB_color_buffer_float */ - -#ifndef GL_ARB_compatibility -#define GL_ARB_compatibility 1 -#endif /* GL_ARB_compatibility */ - -#ifndef GL_ARB_compressed_texture_pixel_storage -#define GL_ARB_compressed_texture_pixel_storage 1 -#endif /* GL_ARB_compressed_texture_pixel_storage */ - -#ifndef GL_ARB_compute_shader -#define GL_ARB_compute_shader 1 -#define GL_COMPUTE_SHADER_BIT 0x00000020 -#endif /* GL_ARB_compute_shader */ - -#ifndef GL_ARB_conservative_depth -#define GL_ARB_conservative_depth 1 -#endif /* GL_ARB_conservative_depth */ - -#ifndef GL_ARB_copy_buffer -#define GL_ARB_copy_buffer 1 -#define GL_COPY_READ_BUFFER_BINDING 0x8F36 -#define GL_COPY_WRITE_BUFFER_BINDING 0x8F37 -#endif /* GL_ARB_copy_buffer */ - -#ifndef GL_ARB_copy_image -#define GL_ARB_copy_image 1 -#endif /* GL_ARB_copy_image */ - -#ifndef GL_ARB_debug_output -#define GL_ARB_debug_output 1 -typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); -#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242 -#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243 -#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244 -#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245 -#define GL_DEBUG_SOURCE_API_ARB 0x8246 -#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247 -#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248 -#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249 -#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A -#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B -#define GL_DEBUG_TYPE_ERROR_ARB 0x824C -#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D -#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E -#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F -#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250 -#define GL_DEBUG_TYPE_OTHER_ARB 0x8251 -#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143 -#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144 -#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145 -#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146 -#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147 -#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148 -typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); -typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); -typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const void *userParam); -typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDebugMessageControlARB (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); -GLAPI void APIENTRY glDebugMessageInsertARB (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); -GLAPI void APIENTRY glDebugMessageCallbackARB (GLDEBUGPROCARB callback, const void *userParam); -GLAPI GLuint APIENTRY glGetDebugMessageLogARB (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); -#endif -#endif /* GL_ARB_debug_output */ - -#ifndef GL_ARB_depth_buffer_float -#define GL_ARB_depth_buffer_float 1 -#endif /* GL_ARB_depth_buffer_float */ - -#ifndef GL_ARB_depth_clamp -#define GL_ARB_depth_clamp 1 -#endif /* GL_ARB_depth_clamp */ - -#ifndef GL_ARB_depth_texture -#define GL_ARB_depth_texture 1 -#define GL_DEPTH_COMPONENT16_ARB 0x81A5 -#define GL_DEPTH_COMPONENT24_ARB 0x81A6 -#define GL_DEPTH_COMPONENT32_ARB 0x81A7 -#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A -#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B -#endif /* GL_ARB_depth_texture */ - -#ifndef GL_ARB_draw_buffers -#define GL_ARB_draw_buffers 1 -#define GL_MAX_DRAW_BUFFERS_ARB 0x8824 -#define GL_DRAW_BUFFER0_ARB 0x8825 -#define GL_DRAW_BUFFER1_ARB 0x8826 -#define GL_DRAW_BUFFER2_ARB 0x8827 -#define GL_DRAW_BUFFER3_ARB 0x8828 -#define GL_DRAW_BUFFER4_ARB 0x8829 -#define GL_DRAW_BUFFER5_ARB 0x882A -#define GL_DRAW_BUFFER6_ARB 0x882B -#define GL_DRAW_BUFFER7_ARB 0x882C -#define GL_DRAW_BUFFER8_ARB 0x882D -#define GL_DRAW_BUFFER9_ARB 0x882E -#define GL_DRAW_BUFFER10_ARB 0x882F -#define GL_DRAW_BUFFER11_ARB 0x8830 -#define GL_DRAW_BUFFER12_ARB 0x8831 -#define GL_DRAW_BUFFER13_ARB 0x8832 -#define GL_DRAW_BUFFER14_ARB 0x8833 -#define GL_DRAW_BUFFER15_ARB 0x8834 -typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawBuffersARB (GLsizei n, const GLenum *bufs); -#endif -#endif /* GL_ARB_draw_buffers */ - -#ifndef GL_ARB_draw_buffers_blend -#define GL_ARB_draw_buffers_blend 1 -typedef void (APIENTRYP PFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode); -typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); -typedef void (APIENTRYP PFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst); -typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendEquationiARB (GLuint buf, GLenum mode); -GLAPI void APIENTRY glBlendEquationSeparateiARB (GLuint buf, GLenum modeRGB, GLenum modeAlpha); -GLAPI void APIENTRY glBlendFunciARB (GLuint buf, GLenum src, GLenum dst); -GLAPI void APIENTRY glBlendFuncSeparateiARB (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); -#endif -#endif /* GL_ARB_draw_buffers_blend */ - -#ifndef GL_ARB_draw_elements_base_vertex -#define GL_ARB_draw_elements_base_vertex 1 -#endif /* GL_ARB_draw_elements_base_vertex */ - -#ifndef GL_ARB_draw_indirect -#define GL_ARB_draw_indirect 1 -#endif /* GL_ARB_draw_indirect */ - -#ifndef GL_ARB_draw_instanced -#define GL_ARB_draw_instanced 1 -typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawArraysInstancedARB (GLenum mode, GLint first, GLsizei count, GLsizei primcount); -GLAPI void APIENTRY glDrawElementsInstancedARB (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); -#endif -#endif /* GL_ARB_draw_instanced */ - -#ifndef GL_ARB_explicit_attrib_location -#define GL_ARB_explicit_attrib_location 1 -#endif /* GL_ARB_explicit_attrib_location */ - -#ifndef GL_ARB_explicit_uniform_location -#define GL_ARB_explicit_uniform_location 1 -#endif /* GL_ARB_explicit_uniform_location */ - -#ifndef GL_ARB_fragment_coord_conventions -#define GL_ARB_fragment_coord_conventions 1 -#endif /* GL_ARB_fragment_coord_conventions */ - -#ifndef GL_ARB_fragment_layer_viewport -#define GL_ARB_fragment_layer_viewport 1 -#endif /* GL_ARB_fragment_layer_viewport */ - -#ifndef GL_ARB_fragment_program -#define GL_ARB_fragment_program 1 -#define GL_FRAGMENT_PROGRAM_ARB 0x8804 -#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 -#define GL_PROGRAM_LENGTH_ARB 0x8627 -#define GL_PROGRAM_FORMAT_ARB 0x8876 -#define GL_PROGRAM_BINDING_ARB 0x8677 -#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 -#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 -#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 -#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 -#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 -#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 -#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 -#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 -#define GL_PROGRAM_PARAMETERS_ARB 0x88A8 -#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 -#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA -#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB -#define GL_PROGRAM_ATTRIBS_ARB 0x88AC -#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD -#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE -#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF -#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 -#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 -#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 -#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 -#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 -#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 -#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808 -#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809 -#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A -#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B -#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C -#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D -#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E -#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F -#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810 -#define GL_PROGRAM_STRING_ARB 0x8628 -#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B -#define GL_CURRENT_MATRIX_ARB 0x8641 -#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 -#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 -#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F -#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E -#define GL_MAX_TEXTURE_COORDS_ARB 0x8871 -#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 -#define GL_PROGRAM_ERROR_STRING_ARB 0x8874 -#define GL_MATRIX0_ARB 0x88C0 -#define GL_MATRIX1_ARB 0x88C1 -#define GL_MATRIX2_ARB 0x88C2 -#define GL_MATRIX3_ARB 0x88C3 -#define GL_MATRIX4_ARB 0x88C4 -#define GL_MATRIX5_ARB 0x88C5 -#define GL_MATRIX6_ARB 0x88C6 -#define GL_MATRIX7_ARB 0x88C7 -#define GL_MATRIX8_ARB 0x88C8 -#define GL_MATRIX9_ARB 0x88C9 -#define GL_MATRIX10_ARB 0x88CA -#define GL_MATRIX11_ARB 0x88CB -#define GL_MATRIX12_ARB 0x88CC -#define GL_MATRIX13_ARB 0x88CD -#define GL_MATRIX14_ARB 0x88CE -#define GL_MATRIX15_ARB 0x88CF -#define GL_MATRIX16_ARB 0x88D0 -#define GL_MATRIX17_ARB 0x88D1 -#define GL_MATRIX18_ARB 0x88D2 -#define GL_MATRIX19_ARB 0x88D3 -#define GL_MATRIX20_ARB 0x88D4 -#define GL_MATRIX21_ARB 0x88D5 -#define GL_MATRIX22_ARB 0x88D6 -#define GL_MATRIX23_ARB 0x88D7 -#define GL_MATRIX24_ARB 0x88D8 -#define GL_MATRIX25_ARB 0x88D9 -#define GL_MATRIX26_ARB 0x88DA -#define GL_MATRIX27_ARB 0x88DB -#define GL_MATRIX28_ARB 0x88DC -#define GL_MATRIX29_ARB 0x88DD -#define GL_MATRIX30_ARB 0x88DE -#define GL_MATRIX31_ARB 0x88DF -typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const GLvoid *string); -typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program); -typedef void (APIENTRYP PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs); -typedef void (APIENTRYP PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); -typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); -typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); -typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); -typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); -typedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, GLvoid *string); -typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProgramStringARB (GLenum target, GLenum format, GLsizei len, const GLvoid *string); -GLAPI void APIENTRY glBindProgramARB (GLenum target, GLuint program); -GLAPI void APIENTRY glDeleteProgramsARB (GLsizei n, const GLuint *programs); -GLAPI void APIENTRY glGenProgramsARB (GLsizei n, GLuint *programs); -GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum target, GLuint index, const GLdouble *params); -GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum target, GLuint index, const GLfloat *params); -GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum target, GLuint index, const GLdouble *params); -GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum target, GLuint index, const GLfloat *params); -GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum target, GLuint index, GLdouble *params); -GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum target, GLuint index, GLfloat *params); -GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum target, GLuint index, GLdouble *params); -GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum target, GLuint index, GLfloat *params); -GLAPI void APIENTRY glGetProgramivARB (GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetProgramStringARB (GLenum target, GLenum pname, GLvoid *string); -GLAPI GLboolean APIENTRY glIsProgramARB (GLuint program); -#endif -#endif /* GL_ARB_fragment_program */ - -#ifndef GL_ARB_fragment_program_shadow -#define GL_ARB_fragment_program_shadow 1 -#endif /* GL_ARB_fragment_program_shadow */ - -#ifndef GL_ARB_fragment_shader -#define GL_ARB_fragment_shader 1 -#define GL_FRAGMENT_SHADER_ARB 0x8B30 -#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49 -#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B -#endif /* GL_ARB_fragment_shader */ - -#ifndef GL_ARB_framebuffer_no_attachments -#define GL_ARB_framebuffer_no_attachments 1 -#endif /* GL_ARB_framebuffer_no_attachments */ - -#ifndef GL_ARB_framebuffer_object -#define GL_ARB_framebuffer_object 1 -#endif /* GL_ARB_framebuffer_object */ - -#ifndef GL_ARB_framebuffer_sRGB -#define GL_ARB_framebuffer_sRGB 1 -#endif /* GL_ARB_framebuffer_sRGB */ - -#ifndef GL_ARB_geometry_shader4 -#define GL_ARB_geometry_shader4 1 -#define GL_LINES_ADJACENCY_ARB 0x000A -#define GL_LINE_STRIP_ADJACENCY_ARB 0x000B -#define GL_TRIANGLES_ADJACENCY_ARB 0x000C -#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0x000D -#define GL_PROGRAM_POINT_SIZE_ARB 0x8642 -#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29 -#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9 -#define GL_GEOMETRY_SHADER_ARB 0x8DD9 -#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA -#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB -#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC -#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD -#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE -#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF -#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0 -#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1 -typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProgramParameteriARB (GLuint program, GLenum pname, GLint value); -GLAPI void APIENTRY glFramebufferTextureARB (GLenum target, GLenum attachment, GLuint texture, GLint level); -GLAPI void APIENTRY glFramebufferTextureLayerARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -GLAPI void APIENTRY glFramebufferTextureFaceARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); -#endif -#endif /* GL_ARB_geometry_shader4 */ - -#ifndef GL_ARB_get_program_binary -#define GL_ARB_get_program_binary 1 -#endif /* GL_ARB_get_program_binary */ - -#ifndef GL_ARB_gpu_shader5 -#define GL_ARB_gpu_shader5 1 -#endif /* GL_ARB_gpu_shader5 */ - -#ifndef GL_ARB_gpu_shader_fp64 -#define GL_ARB_gpu_shader_fp64 1 -#endif /* GL_ARB_gpu_shader_fp64 */ - -#ifndef GL_ARB_half_float_pixel -#define GL_ARB_half_float_pixel 1 -typedef unsigned short GLhalfARB; -#define GL_HALF_FLOAT_ARB 0x140B -#endif /* GL_ARB_half_float_pixel */ - -#ifndef GL_ARB_half_float_vertex -#define GL_ARB_half_float_vertex 1 -#endif /* GL_ARB_half_float_vertex */ - -#ifndef GL_ARB_imaging -#define GL_ARB_imaging 1 -#define GL_CONSTANT_COLOR 0x8001 -#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 -#define GL_CONSTANT_ALPHA 0x8003 -#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 -#define GL_BLEND_COLOR 0x8005 -#define GL_FUNC_ADD 0x8006 -#define GL_MIN 0x8007 -#define GL_MAX 0x8008 -#define GL_BLEND_EQUATION 0x8009 -#define GL_FUNC_SUBTRACT 0x800A -#define GL_FUNC_REVERSE_SUBTRACT 0x800B -#define GL_CONVOLUTION_1D 0x8010 -#define GL_CONVOLUTION_2D 0x8011 -#define GL_SEPARABLE_2D 0x8012 -#define GL_CONVOLUTION_BORDER_MODE 0x8013 -#define GL_CONVOLUTION_FILTER_SCALE 0x8014 -#define GL_CONVOLUTION_FILTER_BIAS 0x8015 -#define GL_REDUCE 0x8016 -#define GL_CONVOLUTION_FORMAT 0x8017 -#define GL_CONVOLUTION_WIDTH 0x8018 -#define GL_CONVOLUTION_HEIGHT 0x8019 -#define GL_MAX_CONVOLUTION_WIDTH 0x801A -#define GL_MAX_CONVOLUTION_HEIGHT 0x801B -#define GL_POST_CONVOLUTION_RED_SCALE 0x801C -#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D -#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E -#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F -#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 -#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 -#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 -#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 -#define GL_HISTOGRAM 0x8024 -#define GL_PROXY_HISTOGRAM 0x8025 -#define GL_HISTOGRAM_WIDTH 0x8026 -#define GL_HISTOGRAM_FORMAT 0x8027 -#define GL_HISTOGRAM_RED_SIZE 0x8028 -#define GL_HISTOGRAM_GREEN_SIZE 0x8029 -#define GL_HISTOGRAM_BLUE_SIZE 0x802A -#define GL_HISTOGRAM_ALPHA_SIZE 0x802B -#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C -#define GL_HISTOGRAM_SINK 0x802D -#define GL_MINMAX 0x802E -#define GL_MINMAX_FORMAT 0x802F -#define GL_MINMAX_SINK 0x8030 -#define GL_TABLE_TOO_LARGE 0x8031 -#define GL_COLOR_MATRIX 0x80B1 -#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 -#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 -#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 -#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 -#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 -#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 -#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 -#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 -#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA -#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB -#define GL_COLOR_TABLE 0x80D0 -#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 -#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 -#define GL_PROXY_COLOR_TABLE 0x80D3 -#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 -#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 -#define GL_COLOR_TABLE_SCALE 0x80D6 -#define GL_COLOR_TABLE_BIAS 0x80D7 -#define GL_COLOR_TABLE_FORMAT 0x80D8 -#define GL_COLOR_TABLE_WIDTH 0x80D9 -#define GL_COLOR_TABLE_RED_SIZE 0x80DA -#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB -#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC -#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD -#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE -#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF -#define GL_CONSTANT_BORDER 0x8151 -#define GL_REPLICATE_BORDER 0x8153 -#define GL_CONVOLUTION_BORDER_COLOR 0x8154 -typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); -typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); -typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); -typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); -typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); -typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); -typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target); -typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glColorTable (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); -GLAPI void APIENTRY glColorTableParameterfv (GLenum target, GLenum pname, const GLfloat *params); -GLAPI void APIENTRY glColorTableParameteriv (GLenum target, GLenum pname, const GLint *params); -GLAPI void APIENTRY glCopyColorTable (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -GLAPI void APIENTRY glGetColorTable (GLenum target, GLenum format, GLenum type, GLvoid *table); -GLAPI void APIENTRY glGetColorTableParameterfv (GLenum target, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetColorTableParameteriv (GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glColorSubTable (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); -GLAPI void APIENTRY glCopyColorSubTable (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); -GLAPI void APIENTRY glConvolutionFilter1D (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); -GLAPI void APIENTRY glConvolutionFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); -GLAPI void APIENTRY glConvolutionParameterf (GLenum target, GLenum pname, GLfloat params); -GLAPI void APIENTRY glConvolutionParameterfv (GLenum target, GLenum pname, const GLfloat *params); -GLAPI void APIENTRY glConvolutionParameteri (GLenum target, GLenum pname, GLint params); -GLAPI void APIENTRY glConvolutionParameteriv (GLenum target, GLenum pname, const GLint *params); -GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI void APIENTRY glGetConvolutionFilter (GLenum target, GLenum format, GLenum type, GLvoid *image); -GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum target, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetSeparableFilter (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); -GLAPI void APIENTRY glSeparableFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); -GLAPI void APIENTRY glGetHistogram (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -GLAPI void APIENTRY glGetHistogramParameterfv (GLenum target, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetHistogramParameteriv (GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetMinmax (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum target, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glHistogram (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); -GLAPI void APIENTRY glMinmax (GLenum target, GLenum internalformat, GLboolean sink); -GLAPI void APIENTRY glResetHistogram (GLenum target); -GLAPI void APIENTRY glResetMinmax (GLenum target); -#endif -#endif /* GL_ARB_imaging */ - -#ifndef GL_ARB_instanced_arrays -#define GL_ARB_instanced_arrays 1 -#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE -typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexAttribDivisorARB (GLuint index, GLuint divisor); -#endif -#endif /* GL_ARB_instanced_arrays */ - -#ifndef GL_ARB_internalformat_query -#define GL_ARB_internalformat_query 1 -typedef void (APIENTRYP PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGetInternalformativ (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); -#endif -#endif /* GL_ARB_internalformat_query */ - -#ifndef GL_ARB_internalformat_query2 -#define GL_ARB_internalformat_query2 1 -#define GL_SRGB_DECODE_ARB 0x8299 -#endif /* GL_ARB_internalformat_query2 */ - -#ifndef GL_ARB_invalidate_subdata -#define GL_ARB_invalidate_subdata 1 -#endif /* GL_ARB_invalidate_subdata */ - -#ifndef GL_ARB_map_buffer_alignment -#define GL_ARB_map_buffer_alignment 1 -#endif /* GL_ARB_map_buffer_alignment */ - -#ifndef GL_ARB_map_buffer_range -#define GL_ARB_map_buffer_range 1 -#endif /* GL_ARB_map_buffer_range */ - -#ifndef GL_ARB_matrix_palette -#define GL_ARB_matrix_palette 1 -#define GL_MATRIX_PALETTE_ARB 0x8840 -#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 -#define GL_MAX_PALETTE_MATRICES_ARB 0x8842 -#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 -#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 -#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 -#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 -#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 -#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 -#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849 -typedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index); -typedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices); -typedef void (APIENTRYP PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices); -typedef void (APIENTRYP PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices); -typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint index); -GLAPI void APIENTRY glMatrixIndexubvARB (GLint size, const GLubyte *indices); -GLAPI void APIENTRY glMatrixIndexusvARB (GLint size, const GLushort *indices); -GLAPI void APIENTRY glMatrixIndexuivARB (GLint size, const GLuint *indices); -GLAPI void APIENTRY glMatrixIndexPointerARB (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -#endif -#endif /* GL_ARB_matrix_palette */ - -#ifndef GL_ARB_multi_draw_indirect -#define GL_ARB_multi_draw_indirect 1 -#endif /* GL_ARB_multi_draw_indirect */ - -#ifndef GL_ARB_multisample -#define GL_ARB_multisample 1 -#define GL_MULTISAMPLE_ARB 0x809D -#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F -#define GL_SAMPLE_COVERAGE_ARB 0x80A0 -#define GL_SAMPLE_BUFFERS_ARB 0x80A8 -#define GL_SAMPLES_ARB 0x80A9 -#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA -#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB -#define GL_MULTISAMPLE_BIT_ARB 0x20000000 -typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLfloat value, GLboolean invert); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glSampleCoverageARB (GLfloat value, GLboolean invert); -#endif -#endif /* GL_ARB_multisample */ - -#ifndef GL_ARB_multitexture -#define GL_ARB_multitexture 1 -#define GL_TEXTURE0_ARB 0x84C0 -#define GL_TEXTURE1_ARB 0x84C1 -#define GL_TEXTURE2_ARB 0x84C2 -#define GL_TEXTURE3_ARB 0x84C3 -#define GL_TEXTURE4_ARB 0x84C4 -#define GL_TEXTURE5_ARB 0x84C5 -#define GL_TEXTURE6_ARB 0x84C6 -#define GL_TEXTURE7_ARB 0x84C7 -#define GL_TEXTURE8_ARB 0x84C8 -#define GL_TEXTURE9_ARB 0x84C9 -#define GL_TEXTURE10_ARB 0x84CA -#define GL_TEXTURE11_ARB 0x84CB -#define GL_TEXTURE12_ARB 0x84CC -#define GL_TEXTURE13_ARB 0x84CD -#define GL_TEXTURE14_ARB 0x84CE -#define GL_TEXTURE15_ARB 0x84CF -#define GL_TEXTURE16_ARB 0x84D0 -#define GL_TEXTURE17_ARB 0x84D1 -#define GL_TEXTURE18_ARB 0x84D2 -#define GL_TEXTURE19_ARB 0x84D3 -#define GL_TEXTURE20_ARB 0x84D4 -#define GL_TEXTURE21_ARB 0x84D5 -#define GL_TEXTURE22_ARB 0x84D6 -#define GL_TEXTURE23_ARB 0x84D7 -#define GL_TEXTURE24_ARB 0x84D8 -#define GL_TEXTURE25_ARB 0x84D9 -#define GL_TEXTURE26_ARB 0x84DA -#define GL_TEXTURE27_ARB 0x84DB -#define GL_TEXTURE28_ARB 0x84DC -#define GL_TEXTURE29_ARB 0x84DD -#define GL_TEXTURE30_ARB 0x84DE -#define GL_TEXTURE31_ARB 0x84DF -#define GL_ACTIVE_TEXTURE_ARB 0x84E0 -#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 -#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 -typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture); -typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glActiveTextureARB (GLenum texture); -GLAPI void APIENTRY glClientActiveTextureARB (GLenum texture); -GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum target, GLdouble s); -GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum target, const GLdouble *v); -GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum target, GLfloat s); -GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum target, const GLfloat *v); -GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum target, GLint s); -GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum target, const GLint *v); -GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum target, GLshort s); -GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum target, const GLshort *v); -GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum target, GLdouble s, GLdouble t); -GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum target, const GLdouble *v); -GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum target, GLfloat s, GLfloat t); -GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum target, const GLfloat *v); -GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum target, GLint s, GLint t); -GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum target, const GLint *v); -GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum target, GLshort s, GLshort t); -GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum target, const GLshort *v); -GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r); -GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum target, const GLdouble *v); -GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r); -GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum target, const GLfloat *v); -GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum target, GLint s, GLint t, GLint r); -GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum target, const GLint *v); -GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum target, GLshort s, GLshort t, GLshort r); -GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum target, const GLshort *v); -GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum target, const GLdouble *v); -GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum target, const GLfloat *v); -GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum target, GLint s, GLint t, GLint r, GLint q); -GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum target, const GLint *v); -GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum target, const GLshort *v); -#endif -#endif /* GL_ARB_multitexture */ - -#ifndef GL_ARB_occlusion_query -#define GL_ARB_occlusion_query 1 -#define GL_QUERY_COUNTER_BITS_ARB 0x8864 -#define GL_CURRENT_QUERY_ARB 0x8865 -#define GL_QUERY_RESULT_ARB 0x8866 -#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867 -#define GL_SAMPLES_PASSED_ARB 0x8914 -typedef void (APIENTRYP PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids); -typedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids); -typedef GLboolean (APIENTRYP PFNGLISQUERYARBPROC) (GLuint id); -typedef void (APIENTRYP PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id); -typedef void (APIENTRYP PFNGLENDQUERYARBPROC) (GLenum target); -typedef void (APIENTRYP PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGenQueriesARB (GLsizei n, GLuint *ids); -GLAPI void APIENTRY glDeleteQueriesARB (GLsizei n, const GLuint *ids); -GLAPI GLboolean APIENTRY glIsQueryARB (GLuint id); -GLAPI void APIENTRY glBeginQueryARB (GLenum target, GLuint id); -GLAPI void APIENTRY glEndQueryARB (GLenum target); -GLAPI void APIENTRY glGetQueryivARB (GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetQueryObjectivARB (GLuint id, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetQueryObjectuivARB (GLuint id, GLenum pname, GLuint *params); -#endif -#endif /* GL_ARB_occlusion_query */ - -#ifndef GL_ARB_occlusion_query2 -#define GL_ARB_occlusion_query2 1 -#endif /* GL_ARB_occlusion_query2 */ - -#ifndef GL_ARB_pixel_buffer_object -#define GL_ARB_pixel_buffer_object 1 -#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB -#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED -#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF -#endif /* GL_ARB_pixel_buffer_object */ - -#ifndef GL_ARB_point_parameters -#define GL_ARB_point_parameters 1 -#define GL_POINT_SIZE_MIN_ARB 0x8126 -#define GL_POINT_SIZE_MAX_ARB 0x8127 -#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 -#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 -typedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPointParameterfARB (GLenum pname, GLfloat param); -GLAPI void APIENTRY glPointParameterfvARB (GLenum pname, const GLfloat *params); -#endif -#endif /* GL_ARB_point_parameters */ - -#ifndef GL_ARB_point_sprite -#define GL_ARB_point_sprite 1 -#define GL_POINT_SPRITE_ARB 0x8861 -#define GL_COORD_REPLACE_ARB 0x8862 -#endif /* GL_ARB_point_sprite */ - -#ifndef GL_ARB_program_interface_query -#define GL_ARB_program_interface_query 1 -#endif /* GL_ARB_program_interface_query */ - -#ifndef GL_ARB_provoking_vertex -#define GL_ARB_provoking_vertex 1 -#endif /* GL_ARB_provoking_vertex */ - -#ifndef GL_ARB_robust_buffer_access_behavior -#define GL_ARB_robust_buffer_access_behavior 1 -#endif /* GL_ARB_robust_buffer_access_behavior */ - -#ifndef GL_ARB_robustness -#define GL_ARB_robustness 1 -#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004 -#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 -#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253 -#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254 -#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255 -#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 -#define GL_NO_RESET_NOTIFICATION_ARB 0x8261 -typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSARBPROC) (void); -typedef void (APIENTRYP PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid *img); -typedef void (APIENTRYP PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data); -typedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, GLvoid *img); -typedef void (APIENTRYP PFNGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); -typedef void (APIENTRYP PFNGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); -typedef void (APIENTRYP PFNGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params); -typedef void (APIENTRYP PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params); -typedef void (APIENTRYP PFNGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); -typedef void (APIENTRYP PFNGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); -typedef void (APIENTRYP PFNGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint *v); -typedef void (APIENTRYP PFNGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat *values); -typedef void (APIENTRYP PFNGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint *values); -typedef void (APIENTRYP PFNGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort *values); -typedef void (APIENTRYP PFNGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte *pattern); -typedef void (APIENTRYP PFNGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *table); -typedef void (APIENTRYP PFNGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *image); -typedef void (APIENTRYP PFNGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid *row, GLsizei columnBufSize, GLvoid *column, GLvoid *span); -typedef void (APIENTRYP PFNGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values); -typedef void (APIENTRYP PFNGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI GLenum APIENTRY glGetGraphicsResetStatusARB (void); -GLAPI void APIENTRY glGetnTexImageARB (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid *img); -GLAPI void APIENTRY glReadnPixelsARB (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data); -GLAPI void APIENTRY glGetnCompressedTexImageARB (GLenum target, GLint lod, GLsizei bufSize, GLvoid *img); -GLAPI void APIENTRY glGetnUniformfvARB (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); -GLAPI void APIENTRY glGetnUniformivARB (GLuint program, GLint location, GLsizei bufSize, GLint *params); -GLAPI void APIENTRY glGetnUniformuivARB (GLuint program, GLint location, GLsizei bufSize, GLuint *params); -GLAPI void APIENTRY glGetnUniformdvARB (GLuint program, GLint location, GLsizei bufSize, GLdouble *params); -GLAPI void APIENTRY glGetnMapdvARB (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); -GLAPI void APIENTRY glGetnMapfvARB (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); -GLAPI void APIENTRY glGetnMapivARB (GLenum target, GLenum query, GLsizei bufSize, GLint *v); -GLAPI void APIENTRY glGetnPixelMapfvARB (GLenum map, GLsizei bufSize, GLfloat *values); -GLAPI void APIENTRY glGetnPixelMapuivARB (GLenum map, GLsizei bufSize, GLuint *values); -GLAPI void APIENTRY glGetnPixelMapusvARB (GLenum map, GLsizei bufSize, GLushort *values); -GLAPI void APIENTRY glGetnPolygonStippleARB (GLsizei bufSize, GLubyte *pattern); -GLAPI void APIENTRY glGetnColorTableARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *table); -GLAPI void APIENTRY glGetnConvolutionFilterARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *image); -GLAPI void APIENTRY glGetnSeparableFilterARB (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid *row, GLsizei columnBufSize, GLvoid *column, GLvoid *span); -GLAPI void APIENTRY glGetnHistogramARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values); -GLAPI void APIENTRY glGetnMinmaxARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values); -#endif -#endif /* GL_ARB_robustness */ - -#ifndef GL_ARB_robustness_isolation -#define GL_ARB_robustness_isolation 1 -#endif /* GL_ARB_robustness_isolation */ - -#ifndef GL_ARB_sample_shading -#define GL_ARB_sample_shading 1 -#define GL_SAMPLE_SHADING_ARB 0x8C36 -#define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37 -typedef void (APIENTRYP PFNGLMINSAMPLESHADINGARBPROC) (GLfloat value); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glMinSampleShadingARB (GLfloat value); -#endif -#endif /* GL_ARB_sample_shading */ - -#ifndef GL_ARB_sampler_objects -#define GL_ARB_sampler_objects 1 -#endif /* GL_ARB_sampler_objects */ - -#ifndef GL_ARB_seamless_cube_map -#define GL_ARB_seamless_cube_map 1 -#endif /* GL_ARB_seamless_cube_map */ - -#ifndef GL_ARB_separate_shader_objects -#define GL_ARB_separate_shader_objects 1 -#endif /* GL_ARB_separate_shader_objects */ - -#ifndef GL_ARB_shader_atomic_counters -#define GL_ARB_shader_atomic_counters 1 -#endif /* GL_ARB_shader_atomic_counters */ - -#ifndef GL_ARB_shader_bit_encoding -#define GL_ARB_shader_bit_encoding 1 -#endif /* GL_ARB_shader_bit_encoding */ - -#ifndef GL_ARB_shader_image_load_store -#define GL_ARB_shader_image_load_store 1 -#endif /* GL_ARB_shader_image_load_store */ - -#ifndef GL_ARB_shader_image_size -#define GL_ARB_shader_image_size 1 -#endif /* GL_ARB_shader_image_size */ - -#ifndef GL_ARB_shader_objects -#define GL_ARB_shader_objects 1 -#ifdef __APPLE__ -typedef void *GLhandleARB; -#else -typedef unsigned int GLhandleARB; -#endif -typedef char GLcharARB; -#define GL_PROGRAM_OBJECT_ARB 0x8B40 -#define GL_SHADER_OBJECT_ARB 0x8B48 -#define GL_OBJECT_TYPE_ARB 0x8B4E -#define GL_OBJECT_SUBTYPE_ARB 0x8B4F -#define GL_FLOAT_VEC2_ARB 0x8B50 -#define GL_FLOAT_VEC3_ARB 0x8B51 -#define GL_FLOAT_VEC4_ARB 0x8B52 -#define GL_INT_VEC2_ARB 0x8B53 -#define GL_INT_VEC3_ARB 0x8B54 -#define GL_INT_VEC4_ARB 0x8B55 -#define GL_BOOL_ARB 0x8B56 -#define GL_BOOL_VEC2_ARB 0x8B57 -#define GL_BOOL_VEC3_ARB 0x8B58 -#define GL_BOOL_VEC4_ARB 0x8B59 -#define GL_FLOAT_MAT2_ARB 0x8B5A -#define GL_FLOAT_MAT3_ARB 0x8B5B -#define GL_FLOAT_MAT4_ARB 0x8B5C -#define GL_SAMPLER_1D_ARB 0x8B5D -#define GL_SAMPLER_2D_ARB 0x8B5E -#define GL_SAMPLER_3D_ARB 0x8B5F -#define GL_SAMPLER_CUBE_ARB 0x8B60 -#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61 -#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62 -#define GL_SAMPLER_2D_RECT_ARB 0x8B63 -#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 -#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80 -#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81 -#define GL_OBJECT_LINK_STATUS_ARB 0x8B82 -#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83 -#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84 -#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85 -#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86 -#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87 -#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88 -typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj); -typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC) (GLenum pname); -typedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj); -typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType); -typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length); -typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj); -typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC) (void); -typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj); -typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj); -typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj); -typedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj); -typedef void (APIENTRYP PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0); -typedef void (APIENTRYP PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1); -typedef void (APIENTRYP PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (APIENTRYP PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (APIENTRYP PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0); -typedef void (APIENTRYP PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1); -typedef void (APIENTRYP PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2); -typedef void (APIENTRYP PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (APIENTRYP PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); -typedef void (APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); -typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); -typedef void (APIENTRYP PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params); -typedef void (APIENTRYP PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params); -typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDeleteObjectARB (GLhandleARB obj); -GLAPI GLhandleARB APIENTRY glGetHandleARB (GLenum pname); -GLAPI void APIENTRY glDetachObjectARB (GLhandleARB containerObj, GLhandleARB attachedObj); -GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum shaderType); -GLAPI void APIENTRY glShaderSourceARB (GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length); -GLAPI void APIENTRY glCompileShaderARB (GLhandleARB shaderObj); -GLAPI GLhandleARB APIENTRY glCreateProgramObjectARB (void); -GLAPI void APIENTRY glAttachObjectARB (GLhandleARB containerObj, GLhandleARB obj); -GLAPI void APIENTRY glLinkProgramARB (GLhandleARB programObj); -GLAPI void APIENTRY glUseProgramObjectARB (GLhandleARB programObj); -GLAPI void APIENTRY glValidateProgramARB (GLhandleARB programObj); -GLAPI void APIENTRY glUniform1fARB (GLint location, GLfloat v0); -GLAPI void APIENTRY glUniform2fARB (GLint location, GLfloat v0, GLfloat v1); -GLAPI void APIENTRY glUniform3fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -GLAPI void APIENTRY glUniform4fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -GLAPI void APIENTRY glUniform1iARB (GLint location, GLint v0); -GLAPI void APIENTRY glUniform2iARB (GLint location, GLint v0, GLint v1); -GLAPI void APIENTRY glUniform3iARB (GLint location, GLint v0, GLint v1, GLint v2); -GLAPI void APIENTRY glUniform4iARB (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -GLAPI void APIENTRY glUniform1fvARB (GLint location, GLsizei count, const GLfloat *value); -GLAPI void APIENTRY glUniform2fvARB (GLint location, GLsizei count, const GLfloat *value); -GLAPI void APIENTRY glUniform3fvARB (GLint location, GLsizei count, const GLfloat *value); -GLAPI void APIENTRY glUniform4fvARB (GLint location, GLsizei count, const GLfloat *value); -GLAPI void APIENTRY glUniform1ivARB (GLint location, GLsizei count, const GLint *value); -GLAPI void APIENTRY glUniform2ivARB (GLint location, GLsizei count, const GLint *value); -GLAPI void APIENTRY glUniform3ivARB (GLint location, GLsizei count, const GLint *value); -GLAPI void APIENTRY glUniform4ivARB (GLint location, GLsizei count, const GLint *value); -GLAPI void APIENTRY glUniformMatrix2fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glUniformMatrix3fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glUniformMatrix4fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glGetObjectParameterfvARB (GLhandleARB obj, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetObjectParameterivARB (GLhandleARB obj, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetInfoLogARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); -GLAPI void APIENTRY glGetAttachedObjectsARB (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); -GLAPI GLint APIENTRY glGetUniformLocationARB (GLhandleARB programObj, const GLcharARB *name); -GLAPI void APIENTRY glGetActiveUniformARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); -GLAPI void APIENTRY glGetUniformfvARB (GLhandleARB programObj, GLint location, GLfloat *params); -GLAPI void APIENTRY glGetUniformivARB (GLhandleARB programObj, GLint location, GLint *params); -GLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); -#endif -#endif /* GL_ARB_shader_objects */ - -#ifndef GL_ARB_shader_precision -#define GL_ARB_shader_precision 1 -#endif /* GL_ARB_shader_precision */ - -#ifndef GL_ARB_shader_stencil_export -#define GL_ARB_shader_stencil_export 1 -#endif /* GL_ARB_shader_stencil_export */ - -#ifndef GL_ARB_shader_storage_buffer_object -#define GL_ARB_shader_storage_buffer_object 1 -#endif /* GL_ARB_shader_storage_buffer_object */ - -#ifndef GL_ARB_shader_subroutine -#define GL_ARB_shader_subroutine 1 -#endif /* GL_ARB_shader_subroutine */ - -#ifndef GL_ARB_shader_texture_lod -#define GL_ARB_shader_texture_lod 1 -#endif /* GL_ARB_shader_texture_lod */ - -#ifndef GL_ARB_shading_language_100 -#define GL_ARB_shading_language_100 1 -#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C -#endif /* GL_ARB_shading_language_100 */ - -#ifndef GL_ARB_shading_language_420pack -#define GL_ARB_shading_language_420pack 1 -#endif /* GL_ARB_shading_language_420pack */ - -#ifndef GL_ARB_shading_language_include -#define GL_ARB_shading_language_include 1 -#define GL_SHADER_INCLUDE_ARB 0x8DAE -#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9 -#define GL_NAMED_STRING_TYPE_ARB 0x8DEA -typedef void (APIENTRYP PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string); -typedef void (APIENTRYP PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name); -typedef void (APIENTRYP PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length); -typedef GLboolean (APIENTRYP PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name); -typedef void (APIENTRYP PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string); -typedef void (APIENTRYP PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLchar *name, GLenum pname, GLint *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glNamedStringARB (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string); -GLAPI void APIENTRY glDeleteNamedStringARB (GLint namelen, const GLchar *name); -GLAPI void APIENTRY glCompileShaderIncludeARB (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length); -GLAPI GLboolean APIENTRY glIsNamedStringARB (GLint namelen, const GLchar *name); -GLAPI void APIENTRY glGetNamedStringARB (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string); -GLAPI void APIENTRY glGetNamedStringivARB (GLint namelen, const GLchar *name, GLenum pname, GLint *params); -#endif -#endif /* GL_ARB_shading_language_include */ - -#ifndef GL_ARB_shading_language_packing -#define GL_ARB_shading_language_packing 1 -#endif /* GL_ARB_shading_language_packing */ - -#ifndef GL_ARB_shadow -#define GL_ARB_shadow 1 -#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C -#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D -#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E -#endif /* GL_ARB_shadow */ - -#ifndef GL_ARB_shadow_ambient -#define GL_ARB_shadow_ambient 1 -#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF -#endif /* GL_ARB_shadow_ambient */ - -#ifndef GL_ARB_stencil_texturing -#define GL_ARB_stencil_texturing 1 -#endif /* GL_ARB_stencil_texturing */ - -#ifndef GL_ARB_sync -#define GL_ARB_sync 1 -#endif /* GL_ARB_sync */ - -#ifndef GL_ARB_tessellation_shader -#define GL_ARB_tessellation_shader 1 -#endif /* GL_ARB_tessellation_shader */ - -#ifndef GL_ARB_texture_border_clamp -#define GL_ARB_texture_border_clamp 1 -#define GL_CLAMP_TO_BORDER_ARB 0x812D -#endif /* GL_ARB_texture_border_clamp */ - -#ifndef GL_ARB_texture_buffer_object -#define GL_ARB_texture_buffer_object 1 -#define GL_TEXTURE_BUFFER_ARB 0x8C2A -#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B -#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C -#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D -#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E -typedef void (APIENTRYP PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTexBufferARB (GLenum target, GLenum internalformat, GLuint buffer); -#endif -#endif /* GL_ARB_texture_buffer_object */ - -#ifndef GL_ARB_texture_buffer_object_rgb32 -#define GL_ARB_texture_buffer_object_rgb32 1 -#endif /* GL_ARB_texture_buffer_object_rgb32 */ - -#ifndef GL_ARB_texture_buffer_range -#define GL_ARB_texture_buffer_range 1 -#endif /* GL_ARB_texture_buffer_range */ - -#ifndef GL_ARB_texture_compression -#define GL_ARB_texture_compression 1 -#define GL_COMPRESSED_ALPHA_ARB 0x84E9 -#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA -#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB -#define GL_COMPRESSED_INTENSITY_ARB 0x84EC -#define GL_COMPRESSED_RGB_ARB 0x84ED -#define GL_COMPRESSED_RGBA_ARB 0x84EE -#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF -#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 -#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 -#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, GLvoid *img); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); -GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); -GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); -GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); -GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); -GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); -GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum target, GLint level, GLvoid *img); -#endif -#endif /* GL_ARB_texture_compression */ - -#ifndef GL_ARB_texture_compression_bptc -#define GL_ARB_texture_compression_bptc 1 -#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C -#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D -#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E -#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F -#endif /* GL_ARB_texture_compression_bptc */ - -#ifndef GL_ARB_texture_compression_rgtc -#define GL_ARB_texture_compression_rgtc 1 -#endif /* GL_ARB_texture_compression_rgtc */ - -#ifndef GL_ARB_texture_cube_map -#define GL_ARB_texture_cube_map 1 -#define GL_NORMAL_MAP_ARB 0x8511 -#define GL_REFLECTION_MAP_ARB 0x8512 -#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C -#endif /* GL_ARB_texture_cube_map */ - -#ifndef GL_ARB_texture_cube_map_array -#define GL_ARB_texture_cube_map_array 1 -#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009 -#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A -#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B -#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C -#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D -#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E -#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F -#endif /* GL_ARB_texture_cube_map_array */ - -#ifndef GL_ARB_texture_env_add -#define GL_ARB_texture_env_add 1 -#endif /* GL_ARB_texture_env_add */ - -#ifndef GL_ARB_texture_env_combine -#define GL_ARB_texture_env_combine 1 -#define GL_COMBINE_ARB 0x8570 -#define GL_COMBINE_RGB_ARB 0x8571 -#define GL_COMBINE_ALPHA_ARB 0x8572 -#define GL_SOURCE0_RGB_ARB 0x8580 -#define GL_SOURCE1_RGB_ARB 0x8581 -#define GL_SOURCE2_RGB_ARB 0x8582 -#define GL_SOURCE0_ALPHA_ARB 0x8588 -#define GL_SOURCE1_ALPHA_ARB 0x8589 -#define GL_SOURCE2_ALPHA_ARB 0x858A -#define GL_OPERAND0_RGB_ARB 0x8590 -#define GL_OPERAND1_RGB_ARB 0x8591 -#define GL_OPERAND2_RGB_ARB 0x8592 -#define GL_OPERAND0_ALPHA_ARB 0x8598 -#define GL_OPERAND1_ALPHA_ARB 0x8599 -#define GL_OPERAND2_ALPHA_ARB 0x859A -#define GL_RGB_SCALE_ARB 0x8573 -#define GL_ADD_SIGNED_ARB 0x8574 -#define GL_INTERPOLATE_ARB 0x8575 -#define GL_SUBTRACT_ARB 0x84E7 -#define GL_CONSTANT_ARB 0x8576 -#define GL_PRIMARY_COLOR_ARB 0x8577 -#define GL_PREVIOUS_ARB 0x8578 -#endif /* GL_ARB_texture_env_combine */ - -#ifndef GL_ARB_texture_env_crossbar -#define GL_ARB_texture_env_crossbar 1 -#endif /* GL_ARB_texture_env_crossbar */ - -#ifndef GL_ARB_texture_env_dot3 -#define GL_ARB_texture_env_dot3 1 -#define GL_DOT3_RGB_ARB 0x86AE -#define GL_DOT3_RGBA_ARB 0x86AF -#endif /* GL_ARB_texture_env_dot3 */ - -#ifndef GL_ARB_texture_float -#define GL_ARB_texture_float 1 -#define GL_TEXTURE_RED_TYPE_ARB 0x8C10 -#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11 -#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12 -#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13 -#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14 -#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15 -#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16 -#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17 -#define GL_RGBA32F_ARB 0x8814 -#define GL_RGB32F_ARB 0x8815 -#define GL_ALPHA32F_ARB 0x8816 -#define GL_INTENSITY32F_ARB 0x8817 -#define GL_LUMINANCE32F_ARB 0x8818 -#define GL_LUMINANCE_ALPHA32F_ARB 0x8819 -#define GL_RGBA16F_ARB 0x881A -#define GL_RGB16F_ARB 0x881B -#define GL_ALPHA16F_ARB 0x881C -#define GL_INTENSITY16F_ARB 0x881D -#define GL_LUMINANCE16F_ARB 0x881E -#define GL_LUMINANCE_ALPHA16F_ARB 0x881F -#endif /* GL_ARB_texture_float */ - -#ifndef GL_ARB_texture_gather -#define GL_ARB_texture_gather 1 -#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E -#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F -#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F -#endif /* GL_ARB_texture_gather */ - -#ifndef GL_ARB_texture_mirrored_repeat -#define GL_ARB_texture_mirrored_repeat 1 -#define GL_MIRRORED_REPEAT_ARB 0x8370 -#endif /* GL_ARB_texture_mirrored_repeat */ - -#ifndef GL_ARB_texture_multisample -#define GL_ARB_texture_multisample 1 -#endif /* GL_ARB_texture_multisample */ - -#ifndef GL_ARB_texture_non_power_of_two -#define GL_ARB_texture_non_power_of_two 1 -#endif /* GL_ARB_texture_non_power_of_two */ - -#ifndef GL_ARB_texture_query_levels -#define GL_ARB_texture_query_levels 1 -#endif /* GL_ARB_texture_query_levels */ - -#ifndef GL_ARB_texture_query_lod -#define GL_ARB_texture_query_lod 1 -#endif /* GL_ARB_texture_query_lod */ - -#ifndef GL_ARB_texture_rectangle -#define GL_ARB_texture_rectangle 1 -#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 -#endif /* GL_ARB_texture_rectangle */ - -#ifndef GL_ARB_texture_rg -#define GL_ARB_texture_rg 1 -#endif /* GL_ARB_texture_rg */ - -#ifndef GL_ARB_texture_rgb10_a2ui -#define GL_ARB_texture_rgb10_a2ui 1 -#endif /* GL_ARB_texture_rgb10_a2ui */ - -#ifndef GL_ARB_texture_storage -#define GL_ARB_texture_storage 1 -#endif /* GL_ARB_texture_storage */ - -#ifndef GL_ARB_texture_storage_multisample -#define GL_ARB_texture_storage_multisample 1 -#endif /* GL_ARB_texture_storage_multisample */ - -#ifndef GL_ARB_texture_swizzle -#define GL_ARB_texture_swizzle 1 -#endif /* GL_ARB_texture_swizzle */ - -#ifndef GL_ARB_texture_view -#define GL_ARB_texture_view 1 -#endif /* GL_ARB_texture_view */ - -#ifndef GL_ARB_timer_query -#define GL_ARB_timer_query 1 -#endif /* GL_ARB_timer_query */ - -#ifndef GL_ARB_transform_feedback2 -#define GL_ARB_transform_feedback2 1 -#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23 -#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24 -#endif /* GL_ARB_transform_feedback2 */ - -#ifndef GL_ARB_transform_feedback3 -#define GL_ARB_transform_feedback3 1 -#endif /* GL_ARB_transform_feedback3 */ - -#ifndef GL_ARB_transform_feedback_instanced -#define GL_ARB_transform_feedback_instanced 1 -#endif /* GL_ARB_transform_feedback_instanced */ - -#ifndef GL_ARB_transpose_matrix -#define GL_ARB_transpose_matrix 1 -#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 -#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 -#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 -#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 -typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); -typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); -typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); -typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *m); -GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *m); -GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *m); -GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *m); -#endif -#endif /* GL_ARB_transpose_matrix */ - -#ifndef GL_ARB_uniform_buffer_object -#define GL_ARB_uniform_buffer_object 1 -#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C -#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 -#endif /* GL_ARB_uniform_buffer_object */ - -#ifndef GL_ARB_vertex_array_bgra -#define GL_ARB_vertex_array_bgra 1 -#endif /* GL_ARB_vertex_array_bgra */ - -#ifndef GL_ARB_vertex_array_object -#define GL_ARB_vertex_array_object 1 -#endif /* GL_ARB_vertex_array_object */ - -#ifndef GL_ARB_vertex_attrib_64bit -#define GL_ARB_vertex_attrib_64bit 1 -#endif /* GL_ARB_vertex_attrib_64bit */ - -#ifndef GL_ARB_vertex_attrib_binding -#define GL_ARB_vertex_attrib_binding 1 -#endif /* GL_ARB_vertex_attrib_binding */ - -#ifndef GL_ARB_vertex_blend -#define GL_ARB_vertex_blend 1 -#define GL_MAX_VERTEX_UNITS_ARB 0x86A4 -#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 -#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 -#define GL_VERTEX_BLEND_ARB 0x86A7 -#define GL_CURRENT_WEIGHT_ARB 0x86A8 -#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 -#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA -#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB -#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC -#define GL_WEIGHT_ARRAY_ARB 0x86AD -#define GL_MODELVIEW0_ARB 0x1700 -#define GL_MODELVIEW1_ARB 0x850A -#define GL_MODELVIEW2_ARB 0x8722 -#define GL_MODELVIEW3_ARB 0x8723 -#define GL_MODELVIEW4_ARB 0x8724 -#define GL_MODELVIEW5_ARB 0x8725 -#define GL_MODELVIEW6_ARB 0x8726 -#define GL_MODELVIEW7_ARB 0x8727 -#define GL_MODELVIEW8_ARB 0x8728 -#define GL_MODELVIEW9_ARB 0x8729 -#define GL_MODELVIEW10_ARB 0x872A -#define GL_MODELVIEW11_ARB 0x872B -#define GL_MODELVIEW12_ARB 0x872C -#define GL_MODELVIEW13_ARB 0x872D -#define GL_MODELVIEW14_ARB 0x872E -#define GL_MODELVIEW15_ARB 0x872F -#define GL_MODELVIEW16_ARB 0x8730 -#define GL_MODELVIEW17_ARB 0x8731 -#define GL_MODELVIEW18_ARB 0x8732 -#define GL_MODELVIEW19_ARB 0x8733 -#define GL_MODELVIEW20_ARB 0x8734 -#define GL_MODELVIEW21_ARB 0x8735 -#define GL_MODELVIEW22_ARB 0x8736 -#define GL_MODELVIEW23_ARB 0x8737 -#define GL_MODELVIEW24_ARB 0x8738 -#define GL_MODELVIEW25_ARB 0x8739 -#define GL_MODELVIEW26_ARB 0x873A -#define GL_MODELVIEW27_ARB 0x873B -#define GL_MODELVIEW28_ARB 0x873C -#define GL_MODELVIEW29_ARB 0x873D -#define GL_MODELVIEW30_ARB 0x873E -#define GL_MODELVIEW31_ARB 0x873F -typedef void (APIENTRYP PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights); -typedef void (APIENTRYP PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights); -typedef void (APIENTRYP PFNGLWEIGHTIVARBPROC) (GLint size, const GLint *weights); -typedef void (APIENTRYP PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights); -typedef void (APIENTRYP PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights); -typedef void (APIENTRYP PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights); -typedef void (APIENTRYP PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights); -typedef void (APIENTRYP PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights); -typedef void (APIENTRYP PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC) (GLint count); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glWeightbvARB (GLint size, const GLbyte *weights); -GLAPI void APIENTRY glWeightsvARB (GLint size, const GLshort *weights); -GLAPI void APIENTRY glWeightivARB (GLint size, const GLint *weights); -GLAPI void APIENTRY glWeightfvARB (GLint size, const GLfloat *weights); -GLAPI void APIENTRY glWeightdvARB (GLint size, const GLdouble *weights); -GLAPI void APIENTRY glWeightubvARB (GLint size, const GLubyte *weights); -GLAPI void APIENTRY glWeightusvARB (GLint size, const GLushort *weights); -GLAPI void APIENTRY glWeightuivARB (GLint size, const GLuint *weights); -GLAPI void APIENTRY glWeightPointerARB (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void APIENTRY glVertexBlendARB (GLint count); -#endif -#endif /* GL_ARB_vertex_blend */ - -#ifndef GL_ARB_vertex_buffer_object -#define GL_ARB_vertex_buffer_object 1 -typedef ptrdiff_t GLsizeiptrARB; -typedef ptrdiff_t GLintptrARB; -#define GL_BUFFER_SIZE_ARB 0x8764 -#define GL_BUFFER_USAGE_ARB 0x8765 -#define GL_ARRAY_BUFFER_ARB 0x8892 -#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 -#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 -#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 -#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 -#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 -#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 -#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 -#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A -#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B -#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C -#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D -#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E -#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F -#define GL_READ_ONLY_ARB 0x88B8 -#define GL_WRITE_ONLY_ARB 0x88B9 -#define GL_READ_WRITE_ARB 0x88BA -#define GL_BUFFER_ACCESS_ARB 0x88BB -#define GL_BUFFER_MAPPED_ARB 0x88BC -#define GL_BUFFER_MAP_POINTER_ARB 0x88BD -#define GL_STREAM_DRAW_ARB 0x88E0 -#define GL_STREAM_READ_ARB 0x88E1 -#define GL_STREAM_COPY_ARB 0x88E2 -#define GL_STATIC_DRAW_ARB 0x88E4 -#define GL_STATIC_READ_ARB 0x88E5 -#define GL_STATIC_COPY_ARB 0x88E6 -#define GL_DYNAMIC_DRAW_ARB 0x88E8 -#define GL_DYNAMIC_READ_ARB 0x88E9 -#define GL_DYNAMIC_COPY_ARB 0x88EA -typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer); -typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers); -typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers); -typedef GLboolean (APIENTRYP PFNGLISBUFFERARBPROC) (GLuint buffer); -typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage); -typedef void (APIENTRYP PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data); -typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data); -typedef void *(APIENTRYP PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access); -typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERARBPROC) (GLenum target); -typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, GLvoid **params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBindBufferARB (GLenum target, GLuint buffer); -GLAPI void APIENTRY glDeleteBuffersARB (GLsizei n, const GLuint *buffers); -GLAPI void APIENTRY glGenBuffersARB (GLsizei n, GLuint *buffers); -GLAPI GLboolean APIENTRY glIsBufferARB (GLuint buffer); -GLAPI void APIENTRY glBufferDataARB (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage); -GLAPI void APIENTRY glBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data); -GLAPI void APIENTRY glGetBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data); -GLAPI void *APIENTRY glMapBufferARB (GLenum target, GLenum access); -GLAPI GLboolean APIENTRY glUnmapBufferARB (GLenum target); -GLAPI void APIENTRY glGetBufferParameterivARB (GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetBufferPointervARB (GLenum target, GLenum pname, GLvoid **params); -#endif -#endif /* GL_ARB_vertex_buffer_object */ - -#ifndef GL_ARB_vertex_program -#define GL_ARB_vertex_program 1 -#define GL_COLOR_SUM_ARB 0x8458 -#define GL_VERTEX_PROGRAM_ARB 0x8620 -#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 -#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 -#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 -#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 -#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 -#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 -#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 -#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 -#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 -#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A -#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 -#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 -#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 -#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 -typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); -typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid **pointer); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexAttrib1dARB (GLuint index, GLdouble x); -GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint index, const GLdouble *v); -GLAPI void APIENTRY glVertexAttrib1fARB (GLuint index, GLfloat x); -GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint index, const GLfloat *v); -GLAPI void APIENTRY glVertexAttrib1sARB (GLuint index, GLshort x); -GLAPI void APIENTRY glVertexAttrib1svARB (GLuint index, const GLshort *v); -GLAPI void APIENTRY glVertexAttrib2dARB (GLuint index, GLdouble x, GLdouble y); -GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint index, const GLdouble *v); -GLAPI void APIENTRY glVertexAttrib2fARB (GLuint index, GLfloat x, GLfloat y); -GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint index, const GLfloat *v); -GLAPI void APIENTRY glVertexAttrib2sARB (GLuint index, GLshort x, GLshort y); -GLAPI void APIENTRY glVertexAttrib2svARB (GLuint index, const GLshort *v); -GLAPI void APIENTRY glVertexAttrib3dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z); -GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint index, const GLdouble *v); -GLAPI void APIENTRY glVertexAttrib3fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint index, const GLfloat *v); -GLAPI void APIENTRY glVertexAttrib3sARB (GLuint index, GLshort x, GLshort y, GLshort z); -GLAPI void APIENTRY glVertexAttrib3svARB (GLuint index, const GLshort *v); -GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint index, const GLbyte *v); -GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint index, const GLint *v); -GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint index, const GLshort *v); -GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint index, const GLubyte *v); -GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint index, const GLuint *v); -GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint index, const GLushort *v); -GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint index, const GLbyte *v); -GLAPI void APIENTRY glVertexAttrib4dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint index, const GLdouble *v); -GLAPI void APIENTRY glVertexAttrib4fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint index, const GLfloat *v); -GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint index, const GLint *v); -GLAPI void APIENTRY glVertexAttrib4sARB (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -GLAPI void APIENTRY glVertexAttrib4svARB (GLuint index, const GLshort *v); -GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint index, const GLubyte *v); -GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint index, const GLuint *v); -GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint index, const GLushort *v); -GLAPI void APIENTRY glVertexAttribPointerARB (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); -GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint index); -GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint index); -GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint index, GLenum pname, GLdouble *params); -GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint index, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetVertexAttribivARB (GLuint index, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint index, GLenum pname, GLvoid **pointer); -#endif -#endif /* GL_ARB_vertex_program */ - -#ifndef GL_ARB_vertex_shader -#define GL_ARB_vertex_shader 1 -#define GL_VERTEX_SHADER_ARB 0x8B31 -#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A -#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B -#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C -#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D -#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89 -#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A -typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name); -typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); -typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBindAttribLocationARB (GLhandleARB programObj, GLuint index, const GLcharARB *name); -GLAPI void APIENTRY glGetActiveAttribARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); -GLAPI GLint APIENTRY glGetAttribLocationARB (GLhandleARB programObj, const GLcharARB *name); -#endif -#endif /* GL_ARB_vertex_shader */ - -#ifndef GL_ARB_vertex_type_2_10_10_10_rev -#define GL_ARB_vertex_type_2_10_10_10_rev 1 -#endif /* GL_ARB_vertex_type_2_10_10_10_rev */ - -#ifndef GL_ARB_viewport_array -#define GL_ARB_viewport_array 1 -#endif /* GL_ARB_viewport_array */ - -#ifndef GL_ARB_window_pos -#define GL_ARB_window_pos 1 -typedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLWINDOWPOS2FVARBPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y); -typedef void (APIENTRYP PFNGLWINDOWPOS2IVARBPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y); -typedef void (APIENTRYP PFNGLWINDOWPOS2SVARBPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLWINDOWPOS3DVARBPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLWINDOWPOS3FVARBPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z); -typedef void (APIENTRYP PFNGLWINDOWPOS3IVARBPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glWindowPos2dARB (GLdouble x, GLdouble y); -GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *v); -GLAPI void APIENTRY glWindowPos2fARB (GLfloat x, GLfloat y); -GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *v); -GLAPI void APIENTRY glWindowPos2iARB (GLint x, GLint y); -GLAPI void APIENTRY glWindowPos2ivARB (const GLint *v); -GLAPI void APIENTRY glWindowPos2sARB (GLshort x, GLshort y); -GLAPI void APIENTRY glWindowPos2svARB (const GLshort *v); -GLAPI void APIENTRY glWindowPos3dARB (GLdouble x, GLdouble y, GLdouble z); -GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *v); -GLAPI void APIENTRY glWindowPos3fARB (GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *v); -GLAPI void APIENTRY glWindowPos3iARB (GLint x, GLint y, GLint z); -GLAPI void APIENTRY glWindowPos3ivARB (const GLint *v); -GLAPI void APIENTRY glWindowPos3sARB (GLshort x, GLshort y, GLshort z); -GLAPI void APIENTRY glWindowPos3svARB (const GLshort *v); -#endif -#endif /* GL_ARB_window_pos */ - -#ifndef GL_KHR_debug -#define GL_KHR_debug 1 -#endif /* GL_KHR_debug */ - -#ifndef GL_KHR_texture_compression_astc_ldr -#define GL_KHR_texture_compression_astc_ldr 1 -#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 -#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1 -#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2 -#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3 -#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4 -#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5 -#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6 -#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7 -#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8 -#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9 -#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA -#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB -#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC -#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD -#endif /* GL_KHR_texture_compression_astc_ldr */ - -#ifndef GL_OES_byte_coordinates -#define GL_OES_byte_coordinates 1 -typedef void (APIENTRYP PFNGLMULTITEXCOORD1BOESPROC) (GLenum texture, GLbyte s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1BVOESPROC) (GLenum texture, const GLbyte *coords); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2BOESPROC) (GLenum texture, GLbyte s, GLbyte t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2BVOESPROC) (GLenum texture, const GLbyte *coords); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3BVOESPROC) (GLenum texture, const GLbyte *coords); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4BVOESPROC) (GLenum texture, const GLbyte *coords); -typedef void (APIENTRYP PFNGLTEXCOORD1BOESPROC) (GLbyte s); -typedef void (APIENTRYP PFNGLTEXCOORD1BVOESPROC) (const GLbyte *coords); -typedef void (APIENTRYP PFNGLTEXCOORD2BOESPROC) (GLbyte s, GLbyte t); -typedef void (APIENTRYP PFNGLTEXCOORD2BVOESPROC) (const GLbyte *coords); -typedef void (APIENTRYP PFNGLTEXCOORD3BOESPROC) (GLbyte s, GLbyte t, GLbyte r); -typedef void (APIENTRYP PFNGLTEXCOORD3BVOESPROC) (const GLbyte *coords); -typedef void (APIENTRYP PFNGLTEXCOORD4BOESPROC) (GLbyte s, GLbyte t, GLbyte r, GLbyte q); -typedef void (APIENTRYP PFNGLTEXCOORD4BVOESPROC) (const GLbyte *coords); -typedef void (APIENTRYP PFNGLVERTEX2BOESPROC) (GLbyte x); -typedef void (APIENTRYP PFNGLVERTEX2BVOESPROC) (const GLbyte *coords); -typedef void (APIENTRYP PFNGLVERTEX3BOESPROC) (GLbyte x, GLbyte y); -typedef void (APIENTRYP PFNGLVERTEX3BVOESPROC) (const GLbyte *coords); -typedef void (APIENTRYP PFNGLVERTEX4BOESPROC) (GLbyte x, GLbyte y, GLbyte z); -typedef void (APIENTRYP PFNGLVERTEX4BVOESPROC) (const GLbyte *coords); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glMultiTexCoord1bOES (GLenum texture, GLbyte s); -GLAPI void APIENTRY glMultiTexCoord1bvOES (GLenum texture, const GLbyte *coords); -GLAPI void APIENTRY glMultiTexCoord2bOES (GLenum texture, GLbyte s, GLbyte t); -GLAPI void APIENTRY glMultiTexCoord2bvOES (GLenum texture, const GLbyte *coords); -GLAPI void APIENTRY glMultiTexCoord3bOES (GLenum texture, GLbyte s, GLbyte t, GLbyte r); -GLAPI void APIENTRY glMultiTexCoord3bvOES (GLenum texture, const GLbyte *coords); -GLAPI void APIENTRY glMultiTexCoord4bOES (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q); -GLAPI void APIENTRY glMultiTexCoord4bvOES (GLenum texture, const GLbyte *coords); -GLAPI void APIENTRY glTexCoord1bOES (GLbyte s); -GLAPI void APIENTRY glTexCoord1bvOES (const GLbyte *coords); -GLAPI void APIENTRY glTexCoord2bOES (GLbyte s, GLbyte t); -GLAPI void APIENTRY glTexCoord2bvOES (const GLbyte *coords); -GLAPI void APIENTRY glTexCoord3bOES (GLbyte s, GLbyte t, GLbyte r); -GLAPI void APIENTRY glTexCoord3bvOES (const GLbyte *coords); -GLAPI void APIENTRY glTexCoord4bOES (GLbyte s, GLbyte t, GLbyte r, GLbyte q); -GLAPI void APIENTRY glTexCoord4bvOES (const GLbyte *coords); -GLAPI void APIENTRY glVertex2bOES (GLbyte x); -GLAPI void APIENTRY glVertex2bvOES (const GLbyte *coords); -GLAPI void APIENTRY glVertex3bOES (GLbyte x, GLbyte y); -GLAPI void APIENTRY glVertex3bvOES (const GLbyte *coords); -GLAPI void APIENTRY glVertex4bOES (GLbyte x, GLbyte y, GLbyte z); -GLAPI void APIENTRY glVertex4bvOES (const GLbyte *coords); -#endif -#endif /* GL_OES_byte_coordinates */ - -#ifndef GL_OES_compressed_paletted_texture -#define GL_OES_compressed_paletted_texture 1 -#define GL_PALETTE4_RGB8_OES 0x8B90 -#define GL_PALETTE4_RGBA8_OES 0x8B91 -#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 -#define GL_PALETTE4_RGBA4_OES 0x8B93 -#define GL_PALETTE4_RGB5_A1_OES 0x8B94 -#define GL_PALETTE8_RGB8_OES 0x8B95 -#define GL_PALETTE8_RGBA8_OES 0x8B96 -#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 -#define GL_PALETTE8_RGBA4_OES 0x8B98 -#define GL_PALETTE8_RGB5_A1_OES 0x8B99 -#endif /* GL_OES_compressed_paletted_texture */ - -#ifndef GL_OES_fixed_point -#define GL_OES_fixed_point 1 -typedef GLint GLfixed; -#define GL_FIXED_OES 0x140C -typedef void (APIENTRYP PFNGLALPHAFUNCXOESPROC) (GLenum func, GLfixed ref); -typedef void (APIENTRYP PFNGLCLEARCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); -typedef void (APIENTRYP PFNGLCLEARDEPTHXOESPROC) (GLfixed depth); -typedef void (APIENTRYP PFNGLCLIPPLANEXOESPROC) (GLenum plane, const GLfixed *equation); -typedef void (APIENTRYP PFNGLCOLOR4XOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); -typedef void (APIENTRYP PFNGLDEPTHRANGEXOESPROC) (GLfixed n, GLfixed f); -typedef void (APIENTRYP PFNGLFOGXOESPROC) (GLenum pname, GLfixed param); -typedef void (APIENTRYP PFNGLFOGXVOESPROC) (GLenum pname, const GLfixed *param); -typedef void (APIENTRYP PFNGLFRUSTUMXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); -typedef void (APIENTRYP PFNGLGETCLIPPLANEXOESPROC) (GLenum plane, GLfixed *equation); -typedef void (APIENTRYP PFNGLGETFIXEDVOESPROC) (GLenum pname, GLfixed *params); -typedef void (APIENTRYP PFNGLGETTEXENVXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); -typedef void (APIENTRYP PFNGLGETTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); -typedef void (APIENTRYP PFNGLLIGHTMODELXOESPROC) (GLenum pname, GLfixed param); -typedef void (APIENTRYP PFNGLLIGHTMODELXVOESPROC) (GLenum pname, const GLfixed *param); -typedef void (APIENTRYP PFNGLLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed param); -typedef void (APIENTRYP PFNGLLIGHTXVOESPROC) (GLenum light, GLenum pname, const GLfixed *params); -typedef void (APIENTRYP PFNGLLINEWIDTHXOESPROC) (GLfixed width); -typedef void (APIENTRYP PFNGLLOADMATRIXXOESPROC) (const GLfixed *m); -typedef void (APIENTRYP PFNGLMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param); -typedef void (APIENTRYP PFNGLMATERIALXVOESPROC) (GLenum face, GLenum pname, const GLfixed *param); -typedef void (APIENTRYP PFNGLMULTMATRIXXOESPROC) (const GLfixed *m); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); -typedef void (APIENTRYP PFNGLNORMAL3XOESPROC) (GLfixed nx, GLfixed ny, GLfixed nz); -typedef void (APIENTRYP PFNGLORTHOXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); -typedef void (APIENTRYP PFNGLPOINTPARAMETERXVOESPROC) (GLenum pname, const GLfixed *params); -typedef void (APIENTRYP PFNGLPOINTSIZEXOESPROC) (GLfixed size); -typedef void (APIENTRYP PFNGLPOLYGONOFFSETXOESPROC) (GLfixed factor, GLfixed units); -typedef void (APIENTRYP PFNGLROTATEXOESPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); -typedef void (APIENTRYP PFNGLSAMPLECOVERAGEOESPROC) (GLfixed value, GLboolean invert); -typedef void (APIENTRYP PFNGLSCALEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); -typedef void (APIENTRYP PFNGLTEXENVXOESPROC) (GLenum target, GLenum pname, GLfixed param); -typedef void (APIENTRYP PFNGLTEXENVXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); -typedef void (APIENTRYP PFNGLTEXPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param); -typedef void (APIENTRYP PFNGLTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); -typedef void (APIENTRYP PFNGLTRANSLATEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); -typedef void (APIENTRYP PFNGLACCUMXOESPROC) (GLenum op, GLfixed value); -typedef void (APIENTRYP PFNGLBITMAPXOESPROC) (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap); -typedef void (APIENTRYP PFNGLBLENDCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); -typedef void (APIENTRYP PFNGLCLEARACCUMXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); -typedef void (APIENTRYP PFNGLCOLOR3XOESPROC) (GLfixed red, GLfixed green, GLfixed blue); -typedef void (APIENTRYP PFNGLCOLOR3XVOESPROC) (const GLfixed *components); -typedef void (APIENTRYP PFNGLCOLOR4XVOESPROC) (const GLfixed *components); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); -typedef void (APIENTRYP PFNGLEVALCOORD1XOESPROC) (GLfixed u); -typedef void (APIENTRYP PFNGLEVALCOORD1XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP PFNGLEVALCOORD2XOESPROC) (GLfixed u, GLfixed v); -typedef void (APIENTRYP PFNGLEVALCOORD2XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP PFNGLFEEDBACKBUFFERXOESPROC) (GLsizei n, GLenum type, const GLfixed *buffer); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); -typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); -typedef void (APIENTRYP PFNGLGETLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed *params); -typedef void (APIENTRYP PFNGLGETMAPXVOESPROC) (GLenum target, GLenum query, GLfixed *v); -typedef void (APIENTRYP PFNGLGETMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param); -typedef void (APIENTRYP PFNGLGETPIXELMAPXVPROC) (GLenum map, GLint size, GLfixed *values); -typedef void (APIENTRYP PFNGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed *params); -typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERXVOESPROC) (GLenum target, GLint level, GLenum pname, GLfixed *params); -typedef void (APIENTRYP PFNGLINDEXXOESPROC) (GLfixed component); -typedef void (APIENTRYP PFNGLINDEXXVOESPROC) (const GLfixed *component); -typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXXOESPROC) (const GLfixed *m); -typedef void (APIENTRYP PFNGLMAP1XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points); -typedef void (APIENTRYP PFNGLMAP2XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points); -typedef void (APIENTRYP PFNGLMAPGRID1XOESPROC) (GLint n, GLfixed u1, GLfixed u2); -typedef void (APIENTRYP PFNGLMAPGRID2XOESPROC) (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2); -typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXXOESPROC) (const GLfixed *m); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1XOESPROC) (GLenum texture, GLfixed s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1XVOESPROC) (GLenum texture, const GLfixed *coords); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2XOESPROC) (GLenum texture, GLfixed s, GLfixed t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2XVOESPROC) (GLenum texture, const GLfixed *coords); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3XVOESPROC) (GLenum texture, const GLfixed *coords); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4XVOESPROC) (GLenum texture, const GLfixed *coords); -typedef void (APIENTRYP PFNGLNORMAL3XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP PFNGLPASSTHROUGHXOESPROC) (GLfixed token); -typedef void (APIENTRYP PFNGLPIXELMAPXPROC) (GLenum map, GLint size, const GLfixed *values); -typedef void (APIENTRYP PFNGLPIXELSTOREXPROC) (GLenum pname, GLfixed param); -typedef void (APIENTRYP PFNGLPIXELTRANSFERXOESPROC) (GLenum pname, GLfixed param); -typedef void (APIENTRYP PFNGLPIXELZOOMXOESPROC) (GLfixed xfactor, GLfixed yfactor); -typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESXOESPROC) (GLsizei n, const GLuint *textures, const GLfixed *priorities); -typedef void (APIENTRYP PFNGLRASTERPOS2XOESPROC) (GLfixed x, GLfixed y); -typedef void (APIENTRYP PFNGLRASTERPOS2XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP PFNGLRASTERPOS3XOESPROC) (GLfixed x, GLfixed y, GLfixed z); -typedef void (APIENTRYP PFNGLRASTERPOS3XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP PFNGLRASTERPOS4XOESPROC) (GLfixed x, GLfixed y, GLfixed z, GLfixed w); -typedef void (APIENTRYP PFNGLRASTERPOS4XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP PFNGLRECTXOESPROC) (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); -typedef void (APIENTRYP PFNGLRECTXVOESPROC) (const GLfixed *v1, const GLfixed *v2); -typedef void (APIENTRYP PFNGLTEXCOORD1XOESPROC) (GLfixed s); -typedef void (APIENTRYP PFNGLTEXCOORD1XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP PFNGLTEXCOORD2XOESPROC) (GLfixed s, GLfixed t); -typedef void (APIENTRYP PFNGLTEXCOORD2XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP PFNGLTEXCOORD3XOESPROC) (GLfixed s, GLfixed t, GLfixed r); -typedef void (APIENTRYP PFNGLTEXCOORD3XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP PFNGLTEXCOORD4XOESPROC) (GLfixed s, GLfixed t, GLfixed r, GLfixed q); -typedef void (APIENTRYP PFNGLTEXCOORD4XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP PFNGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param); -typedef void (APIENTRYP PFNGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed *params); -typedef void (APIENTRYP PFNGLVERTEX2XOESPROC) (GLfixed x); -typedef void (APIENTRYP PFNGLVERTEX2XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP PFNGLVERTEX3XOESPROC) (GLfixed x, GLfixed y); -typedef void (APIENTRYP PFNGLVERTEX3XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP PFNGLVERTEX4XOESPROC) (GLfixed x, GLfixed y, GLfixed z); -typedef void (APIENTRYP PFNGLVERTEX4XVOESPROC) (const GLfixed *coords); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glAlphaFuncxOES (GLenum func, GLfixed ref); -GLAPI void APIENTRY glClearColorxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); -GLAPI void APIENTRY glClearDepthxOES (GLfixed depth); -GLAPI void APIENTRY glClipPlanexOES (GLenum plane, const GLfixed *equation); -GLAPI void APIENTRY glColor4xOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); -GLAPI void APIENTRY glDepthRangexOES (GLfixed n, GLfixed f); -GLAPI void APIENTRY glFogxOES (GLenum pname, GLfixed param); -GLAPI void APIENTRY glFogxvOES (GLenum pname, const GLfixed *param); -GLAPI void APIENTRY glFrustumxOES (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); -GLAPI void APIENTRY glGetClipPlanexOES (GLenum plane, GLfixed *equation); -GLAPI void APIENTRY glGetFixedvOES (GLenum pname, GLfixed *params); -GLAPI void APIENTRY glGetTexEnvxvOES (GLenum target, GLenum pname, GLfixed *params); -GLAPI void APIENTRY glGetTexParameterxvOES (GLenum target, GLenum pname, GLfixed *params); -GLAPI void APIENTRY glLightModelxOES (GLenum pname, GLfixed param); -GLAPI void APIENTRY glLightModelxvOES (GLenum pname, const GLfixed *param); -GLAPI void APIENTRY glLightxOES (GLenum light, GLenum pname, GLfixed param); -GLAPI void APIENTRY glLightxvOES (GLenum light, GLenum pname, const GLfixed *params); -GLAPI void APIENTRY glLineWidthxOES (GLfixed width); -GLAPI void APIENTRY glLoadMatrixxOES (const GLfixed *m); -GLAPI void APIENTRY glMaterialxOES (GLenum face, GLenum pname, GLfixed param); -GLAPI void APIENTRY glMaterialxvOES (GLenum face, GLenum pname, const GLfixed *param); -GLAPI void APIENTRY glMultMatrixxOES (const GLfixed *m); -GLAPI void APIENTRY glMultiTexCoord4xOES (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); -GLAPI void APIENTRY glNormal3xOES (GLfixed nx, GLfixed ny, GLfixed nz); -GLAPI void APIENTRY glOrthoxOES (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); -GLAPI void APIENTRY glPointParameterxvOES (GLenum pname, const GLfixed *params); -GLAPI void APIENTRY glPointSizexOES (GLfixed size); -GLAPI void APIENTRY glPolygonOffsetxOES (GLfixed factor, GLfixed units); -GLAPI void APIENTRY glRotatexOES (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); -GLAPI void APIENTRY glSampleCoverageOES (GLfixed value, GLboolean invert); -GLAPI void APIENTRY glScalexOES (GLfixed x, GLfixed y, GLfixed z); -GLAPI void APIENTRY glTexEnvxOES (GLenum target, GLenum pname, GLfixed param); -GLAPI void APIENTRY glTexEnvxvOES (GLenum target, GLenum pname, const GLfixed *params); -GLAPI void APIENTRY glTexParameterxOES (GLenum target, GLenum pname, GLfixed param); -GLAPI void APIENTRY glTexParameterxvOES (GLenum target, GLenum pname, const GLfixed *params); -GLAPI void APIENTRY glTranslatexOES (GLfixed x, GLfixed y, GLfixed z); -GLAPI void APIENTRY glAccumxOES (GLenum op, GLfixed value); -GLAPI void APIENTRY glBitmapxOES (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap); -GLAPI void APIENTRY glBlendColorxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); -GLAPI void APIENTRY glClearAccumxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); -GLAPI void APIENTRY glColor3xOES (GLfixed red, GLfixed green, GLfixed blue); -GLAPI void APIENTRY glColor3xvOES (const GLfixed *components); -GLAPI void APIENTRY glColor4xvOES (const GLfixed *components); -GLAPI void APIENTRY glConvolutionParameterxOES (GLenum target, GLenum pname, GLfixed param); -GLAPI void APIENTRY glConvolutionParameterxvOES (GLenum target, GLenum pname, const GLfixed *params); -GLAPI void APIENTRY glEvalCoord1xOES (GLfixed u); -GLAPI void APIENTRY glEvalCoord1xvOES (const GLfixed *coords); -GLAPI void APIENTRY glEvalCoord2xOES (GLfixed u, GLfixed v); -GLAPI void APIENTRY glEvalCoord2xvOES (const GLfixed *coords); -GLAPI void APIENTRY glFeedbackBufferxOES (GLsizei n, GLenum type, const GLfixed *buffer); -GLAPI void APIENTRY glGetConvolutionParameterxvOES (GLenum target, GLenum pname, GLfixed *params); -GLAPI void APIENTRY glGetHistogramParameterxvOES (GLenum target, GLenum pname, GLfixed *params); -GLAPI void APIENTRY glGetLightxOES (GLenum light, GLenum pname, GLfixed *params); -GLAPI void APIENTRY glGetMapxvOES (GLenum target, GLenum query, GLfixed *v); -GLAPI void APIENTRY glGetMaterialxOES (GLenum face, GLenum pname, GLfixed param); -GLAPI void APIENTRY glGetPixelMapxv (GLenum map, GLint size, GLfixed *values); -GLAPI void APIENTRY glGetTexGenxvOES (GLenum coord, GLenum pname, GLfixed *params); -GLAPI void APIENTRY glGetTexLevelParameterxvOES (GLenum target, GLint level, GLenum pname, GLfixed *params); -GLAPI void APIENTRY glIndexxOES (GLfixed component); -GLAPI void APIENTRY glIndexxvOES (const GLfixed *component); -GLAPI void APIENTRY glLoadTransposeMatrixxOES (const GLfixed *m); -GLAPI void APIENTRY glMap1xOES (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points); -GLAPI void APIENTRY glMap2xOES (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points); -GLAPI void APIENTRY glMapGrid1xOES (GLint n, GLfixed u1, GLfixed u2); -GLAPI void APIENTRY glMapGrid2xOES (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2); -GLAPI void APIENTRY glMultTransposeMatrixxOES (const GLfixed *m); -GLAPI void APIENTRY glMultiTexCoord1xOES (GLenum texture, GLfixed s); -GLAPI void APIENTRY glMultiTexCoord1xvOES (GLenum texture, const GLfixed *coords); -GLAPI void APIENTRY glMultiTexCoord2xOES (GLenum texture, GLfixed s, GLfixed t); -GLAPI void APIENTRY glMultiTexCoord2xvOES (GLenum texture, const GLfixed *coords); -GLAPI void APIENTRY glMultiTexCoord3xOES (GLenum texture, GLfixed s, GLfixed t, GLfixed r); -GLAPI void APIENTRY glMultiTexCoord3xvOES (GLenum texture, const GLfixed *coords); -GLAPI void APIENTRY glMultiTexCoord4xvOES (GLenum texture, const GLfixed *coords); -GLAPI void APIENTRY glNormal3xvOES (const GLfixed *coords); -GLAPI void APIENTRY glPassThroughxOES (GLfixed token); -GLAPI void APIENTRY glPixelMapx (GLenum map, GLint size, const GLfixed *values); -GLAPI void APIENTRY glPixelStorex (GLenum pname, GLfixed param); -GLAPI void APIENTRY glPixelTransferxOES (GLenum pname, GLfixed param); -GLAPI void APIENTRY glPixelZoomxOES (GLfixed xfactor, GLfixed yfactor); -GLAPI void APIENTRY glPrioritizeTexturesxOES (GLsizei n, const GLuint *textures, const GLfixed *priorities); -GLAPI void APIENTRY glRasterPos2xOES (GLfixed x, GLfixed y); -GLAPI void APIENTRY glRasterPos2xvOES (const GLfixed *coords); -GLAPI void APIENTRY glRasterPos3xOES (GLfixed x, GLfixed y, GLfixed z); -GLAPI void APIENTRY glRasterPos3xvOES (const GLfixed *coords); -GLAPI void APIENTRY glRasterPos4xOES (GLfixed x, GLfixed y, GLfixed z, GLfixed w); -GLAPI void APIENTRY glRasterPos4xvOES (const GLfixed *coords); -GLAPI void APIENTRY glRectxOES (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); -GLAPI void APIENTRY glRectxvOES (const GLfixed *v1, const GLfixed *v2); -GLAPI void APIENTRY glTexCoord1xOES (GLfixed s); -GLAPI void APIENTRY glTexCoord1xvOES (const GLfixed *coords); -GLAPI void APIENTRY glTexCoord2xOES (GLfixed s, GLfixed t); -GLAPI void APIENTRY glTexCoord2xvOES (const GLfixed *coords); -GLAPI void APIENTRY glTexCoord3xOES (GLfixed s, GLfixed t, GLfixed r); -GLAPI void APIENTRY glTexCoord3xvOES (const GLfixed *coords); -GLAPI void APIENTRY glTexCoord4xOES (GLfixed s, GLfixed t, GLfixed r, GLfixed q); -GLAPI void APIENTRY glTexCoord4xvOES (const GLfixed *coords); -GLAPI void APIENTRY glTexGenxOES (GLenum coord, GLenum pname, GLfixed param); -GLAPI void APIENTRY glTexGenxvOES (GLenum coord, GLenum pname, const GLfixed *params); -GLAPI void APIENTRY glVertex2xOES (GLfixed x); -GLAPI void APIENTRY glVertex2xvOES (const GLfixed *coords); -GLAPI void APIENTRY glVertex3xOES (GLfixed x, GLfixed y); -GLAPI void APIENTRY glVertex3xvOES (const GLfixed *coords); -GLAPI void APIENTRY glVertex4xOES (GLfixed x, GLfixed y, GLfixed z); -GLAPI void APIENTRY glVertex4xvOES (const GLfixed *coords); -#endif -#endif /* GL_OES_fixed_point */ - -#ifndef GL_OES_query_matrix -#define GL_OES_query_matrix 1 -typedef GLbitfield (APIENTRYP PFNGLQUERYMATRIXXOESPROC) (GLfixed *mantissa, GLint *exponent); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI GLbitfield APIENTRY glQueryMatrixxOES (GLfixed *mantissa, GLint *exponent); -#endif -#endif /* GL_OES_query_matrix */ - -#ifndef GL_OES_read_format -#define GL_OES_read_format 1 -#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A -#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B -#endif /* GL_OES_read_format */ - -#ifndef GL_OES_single_precision -#define GL_OES_single_precision 1 -typedef void (APIENTRYP PFNGLCLEARDEPTHFOESPROC) (GLclampf depth); -typedef void (APIENTRYP PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat *equation); -typedef void (APIENTRYP PFNGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f); -typedef void (APIENTRYP PFNGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); -typedef void (APIENTRYP PFNGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat *equation); -typedef void (APIENTRYP PFNGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glClearDepthfOES (GLclampf depth); -GLAPI void APIENTRY glClipPlanefOES (GLenum plane, const GLfloat *equation); -GLAPI void APIENTRY glDepthRangefOES (GLclampf n, GLclampf f); -GLAPI void APIENTRY glFrustumfOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); -GLAPI void APIENTRY glGetClipPlanefOES (GLenum plane, GLfloat *equation); -GLAPI void APIENTRY glOrthofOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); -#endif -#endif /* GL_OES_single_precision */ - -#ifndef GL_3DFX_multisample -#define GL_3DFX_multisample 1 -#define GL_MULTISAMPLE_3DFX 0x86B2 -#define GL_SAMPLE_BUFFERS_3DFX 0x86B3 -#define GL_SAMPLES_3DFX 0x86B4 -#define GL_MULTISAMPLE_BIT_3DFX 0x20000000 -#endif /* GL_3DFX_multisample */ - -#ifndef GL_3DFX_tbuffer -#define GL_3DFX_tbuffer 1 -typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTbufferMask3DFX (GLuint mask); -#endif -#endif /* GL_3DFX_tbuffer */ - -#ifndef GL_3DFX_texture_compression_FXT1 -#define GL_3DFX_texture_compression_FXT1 1 -#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 -#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 -#endif /* GL_3DFX_texture_compression_FXT1 */ - -#ifndef GL_AMD_blend_minmax_factor -#define GL_AMD_blend_minmax_factor 1 -#define GL_FACTOR_MIN_AMD 0x901C -#define GL_FACTOR_MAX_AMD 0x901D -#endif /* GL_AMD_blend_minmax_factor */ - -#ifndef GL_AMD_conservative_depth -#define GL_AMD_conservative_depth 1 -#endif /* GL_AMD_conservative_depth */ - -#ifndef GL_AMD_debug_output -#define GL_AMD_debug_output 1 -typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam); -#define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143 -#define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144 -#define GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145 -#define GL_DEBUG_SEVERITY_HIGH_AMD 0x9146 -#define GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147 -#define GL_DEBUG_SEVERITY_LOW_AMD 0x9148 -#define GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149 -#define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A -#define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B -#define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C -#define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D -#define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E -#define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F -#define GL_DEBUG_CATEGORY_OTHER_AMD 0x9150 -typedef void (APIENTRYP PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); -typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf); -typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void *userParam); -typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDebugMessageEnableAMD (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); -GLAPI void APIENTRY glDebugMessageInsertAMD (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf); -GLAPI void APIENTRY glDebugMessageCallbackAMD (GLDEBUGPROCAMD callback, void *userParam); -GLAPI GLuint APIENTRY glGetDebugMessageLogAMD (GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message); -#endif -#endif /* GL_AMD_debug_output */ - -#ifndef GL_AMD_depth_clamp_separate -#define GL_AMD_depth_clamp_separate 1 -#define GL_DEPTH_CLAMP_NEAR_AMD 0x901E -#define GL_DEPTH_CLAMP_FAR_AMD 0x901F -#endif /* GL_AMD_depth_clamp_separate */ - -#ifndef GL_AMD_draw_buffers_blend -#define GL_AMD_draw_buffers_blend 1 -typedef void (APIENTRYP PFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst); -typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); -typedef void (APIENTRYP PFNGLBLENDEQUATIONINDEXEDAMDPROC) (GLuint buf, GLenum mode); -typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendFuncIndexedAMD (GLuint buf, GLenum src, GLenum dst); -GLAPI void APIENTRY glBlendFuncSeparateIndexedAMD (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); -GLAPI void APIENTRY glBlendEquationIndexedAMD (GLuint buf, GLenum mode); -GLAPI void APIENTRY glBlendEquationSeparateIndexedAMD (GLuint buf, GLenum modeRGB, GLenum modeAlpha); -#endif -#endif /* GL_AMD_draw_buffers_blend */ - -#ifndef GL_AMD_interleaved_elements -#define GL_AMD_interleaved_elements 1 -#define GL_VERTEX_ELEMENT_SWIZZLE_AMD 0x91A4 -#define GL_VERTEX_ID_SWIZZLE_AMD 0x91A5 -typedef void (APIENTRYP PFNGLVERTEXATTRIBPARAMETERIAMDPROC) (GLuint index, GLenum pname, GLint param); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexAttribParameteriAMD (GLuint index, GLenum pname, GLint param); -#endif -#endif /* GL_AMD_interleaved_elements */ - -#ifndef GL_AMD_multi_draw_indirect -#define GL_AMD_multi_draw_indirect 1 -typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC) (GLenum mode, const GLvoid *indirect, GLsizei primcount, GLsizei stride); -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC) (GLenum mode, GLenum type, const GLvoid *indirect, GLsizei primcount, GLsizei stride); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glMultiDrawArraysIndirectAMD (GLenum mode, const GLvoid *indirect, GLsizei primcount, GLsizei stride); -GLAPI void APIENTRY glMultiDrawElementsIndirectAMD (GLenum mode, GLenum type, const GLvoid *indirect, GLsizei primcount, GLsizei stride); -#endif -#endif /* GL_AMD_multi_draw_indirect */ - -#ifndef GL_AMD_name_gen_delete -#define GL_AMD_name_gen_delete 1 -#define GL_DATA_BUFFER_AMD 0x9151 -#define GL_PERFORMANCE_MONITOR_AMD 0x9152 -#define GL_QUERY_OBJECT_AMD 0x9153 -#define GL_VERTEX_ARRAY_OBJECT_AMD 0x9154 -#define GL_SAMPLER_OBJECT_AMD 0x9155 -typedef void (APIENTRYP PFNGLGENNAMESAMDPROC) (GLenum identifier, GLuint num, GLuint *names); -typedef void (APIENTRYP PFNGLDELETENAMESAMDPROC) (GLenum identifier, GLuint num, const GLuint *names); -typedef GLboolean (APIENTRYP PFNGLISNAMEAMDPROC) (GLenum identifier, GLuint name); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGenNamesAMD (GLenum identifier, GLuint num, GLuint *names); -GLAPI void APIENTRY glDeleteNamesAMD (GLenum identifier, GLuint num, const GLuint *names); -GLAPI GLboolean APIENTRY glIsNameAMD (GLenum identifier, GLuint name); -#endif -#endif /* GL_AMD_name_gen_delete */ - -#ifndef GL_AMD_performance_monitor -#define GL_AMD_performance_monitor 1 -#define GL_COUNTER_TYPE_AMD 0x8BC0 -#define GL_COUNTER_RANGE_AMD 0x8BC1 -#define GL_UNSIGNED_INT64_AMD 0x8BC2 -#define GL_PERCENTAGE_AMD 0x8BC3 -#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 -#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 -#define GL_PERFMON_RESULT_AMD 0x8BC6 -typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups); -typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); -typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); -typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); -typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, GLvoid *data); -typedef void (APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); -typedef void (APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); -typedef void (APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); -typedef void (APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); -typedef void (APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); -typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups); -GLAPI void APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); -GLAPI void APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); -GLAPI void APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); -GLAPI void APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, GLvoid *data); -GLAPI void APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors); -GLAPI void APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors); -GLAPI void APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); -GLAPI void APIENTRY glBeginPerfMonitorAMD (GLuint monitor); -GLAPI void APIENTRY glEndPerfMonitorAMD (GLuint monitor); -GLAPI void APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); -#endif -#endif /* GL_AMD_performance_monitor */ - -#ifndef GL_AMD_pinned_memory -#define GL_AMD_pinned_memory 1 -#define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160 -#endif /* GL_AMD_pinned_memory */ - -#ifndef GL_AMD_query_buffer_object -#define GL_AMD_query_buffer_object 1 -#define GL_QUERY_BUFFER_AMD 0x9192 -#define GL_QUERY_BUFFER_BINDING_AMD 0x9193 -#define GL_QUERY_RESULT_NO_WAIT_AMD 0x9194 -#endif /* GL_AMD_query_buffer_object */ - -#ifndef GL_AMD_sample_positions -#define GL_AMD_sample_positions 1 -#define GL_SUBSAMPLE_DISTANCE_AMD 0x883F -typedef void (APIENTRYP PFNGLSETMULTISAMPLEFVAMDPROC) (GLenum pname, GLuint index, const GLfloat *val); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glSetMultisamplefvAMD (GLenum pname, GLuint index, const GLfloat *val); -#endif -#endif /* GL_AMD_sample_positions */ - -#ifndef GL_AMD_seamless_cubemap_per_texture -#define GL_AMD_seamless_cubemap_per_texture 1 -#endif /* GL_AMD_seamless_cubemap_per_texture */ - -#ifndef GL_AMD_shader_stencil_export -#define GL_AMD_shader_stencil_export 1 -#endif /* GL_AMD_shader_stencil_export */ - -#ifndef GL_AMD_shader_trinary_minmax -#define GL_AMD_shader_trinary_minmax 1 -#endif /* GL_AMD_shader_trinary_minmax */ - -#ifndef GL_AMD_sparse_texture -#define GL_AMD_sparse_texture 1 -#define GL_VIRTUAL_PAGE_SIZE_X_AMD 0x9195 -#define GL_VIRTUAL_PAGE_SIZE_Y_AMD 0x9196 -#define GL_VIRTUAL_PAGE_SIZE_Z_AMD 0x9197 -#define GL_MAX_SPARSE_TEXTURE_SIZE_AMD 0x9198 -#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199 -#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A -#define GL_MIN_SPARSE_LEVEL_AMD 0x919B -#define GL_MIN_LOD_WARNING_AMD 0x919C -#define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001 -typedef void (APIENTRYP PFNGLTEXSTORAGESPARSEAMDPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); -typedef void (APIENTRYP PFNGLTEXTURESTORAGESPARSEAMDPROC) (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTexStorageSparseAMD (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); -GLAPI void APIENTRY glTextureStorageSparseAMD (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); -#endif -#endif /* GL_AMD_sparse_texture */ - -#ifndef GL_AMD_stencil_operation_extended -#define GL_AMD_stencil_operation_extended 1 -#define GL_SET_AMD 0x874A -#define GL_REPLACE_VALUE_AMD 0x874B -#define GL_STENCIL_OP_VALUE_AMD 0x874C -#define GL_STENCIL_BACK_OP_VALUE_AMD 0x874D -typedef void (APIENTRYP PFNGLSTENCILOPVALUEAMDPROC) (GLenum face, GLuint value); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glStencilOpValueAMD (GLenum face, GLuint value); -#endif -#endif /* GL_AMD_stencil_operation_extended */ - -#ifndef GL_AMD_texture_texture4 -#define GL_AMD_texture_texture4 1 -#endif /* GL_AMD_texture_texture4 */ - -#ifndef GL_AMD_transform_feedback3_lines_triangles -#define GL_AMD_transform_feedback3_lines_triangles 1 -#endif /* GL_AMD_transform_feedback3_lines_triangles */ - -#ifndef GL_AMD_vertex_shader_layer -#define GL_AMD_vertex_shader_layer 1 -#endif /* GL_AMD_vertex_shader_layer */ - -#ifndef GL_AMD_vertex_shader_tessellator -#define GL_AMD_vertex_shader_tessellator 1 -#define GL_SAMPLER_BUFFER_AMD 0x9001 -#define GL_INT_SAMPLER_BUFFER_AMD 0x9002 -#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003 -#define GL_TESSELLATION_MODE_AMD 0x9004 -#define GL_TESSELLATION_FACTOR_AMD 0x9005 -#define GL_DISCRETE_AMD 0x9006 -#define GL_CONTINUOUS_AMD 0x9007 -typedef void (APIENTRYP PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor); -typedef void (APIENTRYP PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTessellationFactorAMD (GLfloat factor); -GLAPI void APIENTRY glTessellationModeAMD (GLenum mode); -#endif -#endif /* GL_AMD_vertex_shader_tessellator */ - -#ifndef GL_AMD_vertex_shader_viewport_index -#define GL_AMD_vertex_shader_viewport_index 1 -#endif /* GL_AMD_vertex_shader_viewport_index */ - -#ifndef GL_APPLE_aux_depth_stencil -#define GL_APPLE_aux_depth_stencil 1 -#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14 -#endif /* GL_APPLE_aux_depth_stencil */ - -#ifndef GL_APPLE_client_storage -#define GL_APPLE_client_storage 1 -#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 -#endif /* GL_APPLE_client_storage */ - -#ifndef GL_APPLE_element_array -#define GL_APPLE_element_array 1 -#define GL_ELEMENT_ARRAY_APPLE 0x8A0C -#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D -#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E -typedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count); -typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); -typedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glElementPointerAPPLE (GLenum type, const GLvoid *pointer); -GLAPI void APIENTRY glDrawElementArrayAPPLE (GLenum mode, GLint first, GLsizei count); -GLAPI void APIENTRY glDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); -GLAPI void APIENTRY glMultiDrawElementArrayAPPLE (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); -GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount); -#endif -#endif /* GL_APPLE_element_array */ - -#ifndef GL_APPLE_fence -#define GL_APPLE_fence 1 -#define GL_DRAW_PIXELS_APPLE 0x8A0A -#define GL_FENCE_APPLE 0x8A0B -typedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint *fences); -typedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint *fences); -typedef void (APIENTRYP PFNGLSETFENCEAPPLEPROC) (GLuint fence); -typedef GLboolean (APIENTRYP PFNGLISFENCEAPPLEPROC) (GLuint fence); -typedef GLboolean (APIENTRYP PFNGLTESTFENCEAPPLEPROC) (GLuint fence); -typedef void (APIENTRYP PFNGLFINISHFENCEAPPLEPROC) (GLuint fence); -typedef GLboolean (APIENTRYP PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name); -typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGenFencesAPPLE (GLsizei n, GLuint *fences); -GLAPI void APIENTRY glDeleteFencesAPPLE (GLsizei n, const GLuint *fences); -GLAPI void APIENTRY glSetFenceAPPLE (GLuint fence); -GLAPI GLboolean APIENTRY glIsFenceAPPLE (GLuint fence); -GLAPI GLboolean APIENTRY glTestFenceAPPLE (GLuint fence); -GLAPI void APIENTRY glFinishFenceAPPLE (GLuint fence); -GLAPI GLboolean APIENTRY glTestObjectAPPLE (GLenum object, GLuint name); -GLAPI void APIENTRY glFinishObjectAPPLE (GLenum object, GLint name); -#endif -#endif /* GL_APPLE_fence */ - -#ifndef GL_APPLE_float_pixels -#define GL_APPLE_float_pixels 1 -#define GL_HALF_APPLE 0x140B -#define GL_RGBA_FLOAT32_APPLE 0x8814 -#define GL_RGB_FLOAT32_APPLE 0x8815 -#define GL_ALPHA_FLOAT32_APPLE 0x8816 -#define GL_INTENSITY_FLOAT32_APPLE 0x8817 -#define GL_LUMINANCE_FLOAT32_APPLE 0x8818 -#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819 -#define GL_RGBA_FLOAT16_APPLE 0x881A -#define GL_RGB_FLOAT16_APPLE 0x881B -#define GL_ALPHA_FLOAT16_APPLE 0x881C -#define GL_INTENSITY_FLOAT16_APPLE 0x881D -#define GL_LUMINANCE_FLOAT16_APPLE 0x881E -#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F -#define GL_COLOR_FLOAT_APPLE 0x8A0F -#endif /* GL_APPLE_float_pixels */ - -#ifndef GL_APPLE_flush_buffer_range -#define GL_APPLE_flush_buffer_range 1 -#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12 -#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13 -typedef void (APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBufferParameteriAPPLE (GLenum target, GLenum pname, GLint param); -GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum target, GLintptr offset, GLsizeiptr size); -#endif -#endif /* GL_APPLE_flush_buffer_range */ - -#ifndef GL_APPLE_object_purgeable -#define GL_APPLE_object_purgeable 1 -#define GL_BUFFER_OBJECT_APPLE 0x85B3 -#define GL_RELEASED_APPLE 0x8A19 -#define GL_VOLATILE_APPLE 0x8A1A -#define GL_RETAINED_APPLE 0x8A1B -#define GL_UNDEFINED_APPLE 0x8A1C -#define GL_PURGEABLE_APPLE 0x8A1D -typedef GLenum (APIENTRYP PFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); -typedef GLenum (APIENTRYP PFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); -typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType, GLuint name, GLenum pname, GLint *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI GLenum APIENTRY glObjectPurgeableAPPLE (GLenum objectType, GLuint name, GLenum option); -GLAPI GLenum APIENTRY glObjectUnpurgeableAPPLE (GLenum objectType, GLuint name, GLenum option); -GLAPI void APIENTRY glGetObjectParameterivAPPLE (GLenum objectType, GLuint name, GLenum pname, GLint *params); -#endif -#endif /* GL_APPLE_object_purgeable */ - -#ifndef GL_APPLE_rgb_422 -#define GL_APPLE_rgb_422 1 -#define GL_RGB_422_APPLE 0x8A1F -#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA -#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB -#endif /* GL_APPLE_rgb_422 */ - -#ifndef GL_APPLE_row_bytes -#define GL_APPLE_row_bytes 1 -#define GL_PACK_ROW_BYTES_APPLE 0x8A15 -#define GL_UNPACK_ROW_BYTES_APPLE 0x8A16 -#endif /* GL_APPLE_row_bytes */ - -#ifndef GL_APPLE_specular_vector -#define GL_APPLE_specular_vector 1 -#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 -#endif /* GL_APPLE_specular_vector */ - -#ifndef GL_APPLE_texture_range -#define GL_APPLE_texture_range 1 -#define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7 -#define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8 -#define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC -#define GL_STORAGE_PRIVATE_APPLE 0x85BD -#define GL_STORAGE_CACHED_APPLE 0x85BE -#define GL_STORAGE_SHARED_APPLE 0x85BF -typedef void (APIENTRYP PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, GLvoid **params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTextureRangeAPPLE (GLenum target, GLsizei length, const GLvoid *pointer); -GLAPI void APIENTRY glGetTexParameterPointervAPPLE (GLenum target, GLenum pname, GLvoid **params); -#endif -#endif /* GL_APPLE_texture_range */ - -#ifndef GL_APPLE_transform_hint -#define GL_APPLE_transform_hint 1 -#define GL_TRANSFORM_HINT_APPLE 0x85B1 -#endif /* GL_APPLE_transform_hint */ - -#ifndef GL_APPLE_vertex_array_object -#define GL_APPLE_vertex_array_object 1 -#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 -typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array); -typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays); -typedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, GLuint *arrays); -typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint array); -GLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei n, const GLuint *arrays); -GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei n, GLuint *arrays); -GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint array); -#endif -#endif /* GL_APPLE_vertex_array_object */ - -#ifndef GL_APPLE_vertex_array_range -#define GL_APPLE_vertex_array_range 1 -#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D -#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E -#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F -#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 -#define GL_STORAGE_CLIENT_APPLE 0x85B4 -typedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer); -typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer); -typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexArrayRangeAPPLE (GLsizei length, GLvoid *pointer); -GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei length, GLvoid *pointer); -GLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum pname, GLint param); -#endif -#endif /* GL_APPLE_vertex_array_range */ - -#ifndef GL_APPLE_vertex_program_evaluators -#define GL_APPLE_vertex_program_evaluators 1 -#define GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00 -#define GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01 -#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02 -#define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03 -#define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04 -#define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05 -#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06 -#define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07 -#define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08 -#define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09 -typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); -typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); -typedef GLboolean (APIENTRYP PFNGLISVERTEXATTRIBENABLEDAPPLEPROC) (GLuint index, GLenum pname); -typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); -typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); -typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); -typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glEnableVertexAttribAPPLE (GLuint index, GLenum pname); -GLAPI void APIENTRY glDisableVertexAttribAPPLE (GLuint index, GLenum pname); -GLAPI GLboolean APIENTRY glIsVertexAttribEnabledAPPLE (GLuint index, GLenum pname); -GLAPI void APIENTRY glMapVertexAttrib1dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); -GLAPI void APIENTRY glMapVertexAttrib1fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); -GLAPI void APIENTRY glMapVertexAttrib2dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); -GLAPI void APIENTRY glMapVertexAttrib2fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); -#endif -#endif /* GL_APPLE_vertex_program_evaluators */ - -#ifndef GL_APPLE_ycbcr_422 -#define GL_APPLE_ycbcr_422 1 -#define GL_YCBCR_422_APPLE 0x85B9 -#endif /* GL_APPLE_ycbcr_422 */ - -#ifndef GL_ATI_draw_buffers -#define GL_ATI_draw_buffers 1 -#define GL_MAX_DRAW_BUFFERS_ATI 0x8824 -#define GL_DRAW_BUFFER0_ATI 0x8825 -#define GL_DRAW_BUFFER1_ATI 0x8826 -#define GL_DRAW_BUFFER2_ATI 0x8827 -#define GL_DRAW_BUFFER3_ATI 0x8828 -#define GL_DRAW_BUFFER4_ATI 0x8829 -#define GL_DRAW_BUFFER5_ATI 0x882A -#define GL_DRAW_BUFFER6_ATI 0x882B -#define GL_DRAW_BUFFER7_ATI 0x882C -#define GL_DRAW_BUFFER8_ATI 0x882D -#define GL_DRAW_BUFFER9_ATI 0x882E -#define GL_DRAW_BUFFER10_ATI 0x882F -#define GL_DRAW_BUFFER11_ATI 0x8830 -#define GL_DRAW_BUFFER12_ATI 0x8831 -#define GL_DRAW_BUFFER13_ATI 0x8832 -#define GL_DRAW_BUFFER14_ATI 0x8833 -#define GL_DRAW_BUFFER15_ATI 0x8834 -typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawBuffersATI (GLsizei n, const GLenum *bufs); -#endif -#endif /* GL_ATI_draw_buffers */ - -#ifndef GL_ATI_element_array -#define GL_ATI_element_array 1 -#define GL_ELEMENT_ARRAY_ATI 0x8768 -#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 -#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A -typedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC) (GLenum type, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count); -typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glElementPointerATI (GLenum type, const GLvoid *pointer); -GLAPI void APIENTRY glDrawElementArrayATI (GLenum mode, GLsizei count); -GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum mode, GLuint start, GLuint end, GLsizei count); -#endif -#endif /* GL_ATI_element_array */ - -#ifndef GL_ATI_envmap_bumpmap -#define GL_ATI_envmap_bumpmap 1 -#define GL_BUMP_ROT_MATRIX_ATI 0x8775 -#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 -#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 -#define GL_BUMP_TEX_UNITS_ATI 0x8778 -#define GL_DUDV_ATI 0x8779 -#define GL_DU8DV8_ATI 0x877A -#define GL_BUMP_ENVMAP_ATI 0x877B -#define GL_BUMP_TARGET_ATI 0x877C -typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param); -typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param); -typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); -typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTexBumpParameterivATI (GLenum pname, const GLint *param); -GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum pname, const GLfloat *param); -GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum pname, GLint *param); -GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum pname, GLfloat *param); -#endif -#endif /* GL_ATI_envmap_bumpmap */ - -#ifndef GL_ATI_fragment_shader -#define GL_ATI_fragment_shader 1 -#define GL_FRAGMENT_SHADER_ATI 0x8920 -#define GL_REG_0_ATI 0x8921 -#define GL_REG_1_ATI 0x8922 -#define GL_REG_2_ATI 0x8923 -#define GL_REG_3_ATI 0x8924 -#define GL_REG_4_ATI 0x8925 -#define GL_REG_5_ATI 0x8926 -#define GL_REG_6_ATI 0x8927 -#define GL_REG_7_ATI 0x8928 -#define GL_REG_8_ATI 0x8929 -#define GL_REG_9_ATI 0x892A -#define GL_REG_10_ATI 0x892B -#define GL_REG_11_ATI 0x892C -#define GL_REG_12_ATI 0x892D -#define GL_REG_13_ATI 0x892E -#define GL_REG_14_ATI 0x892F -#define GL_REG_15_ATI 0x8930 -#define GL_REG_16_ATI 0x8931 -#define GL_REG_17_ATI 0x8932 -#define GL_REG_18_ATI 0x8933 -#define GL_REG_19_ATI 0x8934 -#define GL_REG_20_ATI 0x8935 -#define GL_REG_21_ATI 0x8936 -#define GL_REG_22_ATI 0x8937 -#define GL_REG_23_ATI 0x8938 -#define GL_REG_24_ATI 0x8939 -#define GL_REG_25_ATI 0x893A -#define GL_REG_26_ATI 0x893B -#define GL_REG_27_ATI 0x893C -#define GL_REG_28_ATI 0x893D -#define GL_REG_29_ATI 0x893E -#define GL_REG_30_ATI 0x893F -#define GL_REG_31_ATI 0x8940 -#define GL_CON_0_ATI 0x8941 -#define GL_CON_1_ATI 0x8942 -#define GL_CON_2_ATI 0x8943 -#define GL_CON_3_ATI 0x8944 -#define GL_CON_4_ATI 0x8945 -#define GL_CON_5_ATI 0x8946 -#define GL_CON_6_ATI 0x8947 -#define GL_CON_7_ATI 0x8948 -#define GL_CON_8_ATI 0x8949 -#define GL_CON_9_ATI 0x894A -#define GL_CON_10_ATI 0x894B -#define GL_CON_11_ATI 0x894C -#define GL_CON_12_ATI 0x894D -#define GL_CON_13_ATI 0x894E -#define GL_CON_14_ATI 0x894F -#define GL_CON_15_ATI 0x8950 -#define GL_CON_16_ATI 0x8951 -#define GL_CON_17_ATI 0x8952 -#define GL_CON_18_ATI 0x8953 -#define GL_CON_19_ATI 0x8954 -#define GL_CON_20_ATI 0x8955 -#define GL_CON_21_ATI 0x8956 -#define GL_CON_22_ATI 0x8957 -#define GL_CON_23_ATI 0x8958 -#define GL_CON_24_ATI 0x8959 -#define GL_CON_25_ATI 0x895A -#define GL_CON_26_ATI 0x895B -#define GL_CON_27_ATI 0x895C -#define GL_CON_28_ATI 0x895D -#define GL_CON_29_ATI 0x895E -#define GL_CON_30_ATI 0x895F -#define GL_CON_31_ATI 0x8960 -#define GL_MOV_ATI 0x8961 -#define GL_ADD_ATI 0x8963 -#define GL_MUL_ATI 0x8964 -#define GL_SUB_ATI 0x8965 -#define GL_DOT3_ATI 0x8966 -#define GL_DOT4_ATI 0x8967 -#define GL_MAD_ATI 0x8968 -#define GL_LERP_ATI 0x8969 -#define GL_CND_ATI 0x896A -#define GL_CND0_ATI 0x896B -#define GL_DOT2_ADD_ATI 0x896C -#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D -#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E -#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F -#define GL_NUM_PASSES_ATI 0x8970 -#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 -#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 -#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 -#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 -#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 -#define GL_SWIZZLE_STR_ATI 0x8976 -#define GL_SWIZZLE_STQ_ATI 0x8977 -#define GL_SWIZZLE_STR_DR_ATI 0x8978 -#define GL_SWIZZLE_STQ_DQ_ATI 0x8979 -#define GL_SWIZZLE_STRQ_ATI 0x897A -#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B -#define GL_RED_BIT_ATI 0x00000001 -#define GL_GREEN_BIT_ATI 0x00000002 -#define GL_BLUE_BIT_ATI 0x00000004 -#define GL_2X_BIT_ATI 0x00000001 -#define GL_4X_BIT_ATI 0x00000002 -#define GL_8X_BIT_ATI 0x00000004 -#define GL_HALF_BIT_ATI 0x00000008 -#define GL_QUARTER_BIT_ATI 0x00000010 -#define GL_EIGHTH_BIT_ATI 0x00000020 -#define GL_SATURATE_BIT_ATI 0x00000040 -#define GL_COMP_BIT_ATI 0x00000002 -#define GL_NEGATE_BIT_ATI 0x00000004 -#define GL_BIAS_BIT_ATI 0x00000008 -typedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range); -typedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id); -typedef void (APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id); -typedef void (APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC) (void); -typedef void (APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC) (void); -typedef void (APIENTRYP PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle); -typedef void (APIENTRYP PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle); -typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); -typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); -typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); -typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); -typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); -typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); -typedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat *value); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint range); -GLAPI void APIENTRY glBindFragmentShaderATI (GLuint id); -GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint id); -GLAPI void APIENTRY glBeginFragmentShaderATI (void); -GLAPI void APIENTRY glEndFragmentShaderATI (void); -GLAPI void APIENTRY glPassTexCoordATI (GLuint dst, GLuint coord, GLenum swizzle); -GLAPI void APIENTRY glSampleMapATI (GLuint dst, GLuint interp, GLenum swizzle); -GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); -GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); -GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); -GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); -GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); -GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); -GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint dst, const GLfloat *value); -#endif -#endif /* GL_ATI_fragment_shader */ - -#ifndef GL_ATI_map_object_buffer -#define GL_ATI_map_object_buffer 1 -typedef void *(APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer); -typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void *APIENTRY glMapObjectBufferATI (GLuint buffer); -GLAPI void APIENTRY glUnmapObjectBufferATI (GLuint buffer); -#endif -#endif /* GL_ATI_map_object_buffer */ - -#ifndef GL_ATI_meminfo -#define GL_ATI_meminfo 1 -#define GL_VBO_FREE_MEMORY_ATI 0x87FB -#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC -#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD -#endif /* GL_ATI_meminfo */ - -#ifndef GL_ATI_pixel_format_float -#define GL_ATI_pixel_format_float 1 -#define GL_RGBA_FLOAT_MODE_ATI 0x8820 -#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835 -#endif /* GL_ATI_pixel_format_float */ - -#ifndef GL_ATI_pn_triangles -#define GL_ATI_pn_triangles 1 -#define GL_PN_TRIANGLES_ATI 0x87F0 -#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 -#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 -#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 -#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 -#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 -#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 -#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7 -#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8 -typedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPNTrianglesiATI (GLenum pname, GLint param); -GLAPI void APIENTRY glPNTrianglesfATI (GLenum pname, GLfloat param); -#endif -#endif /* GL_ATI_pn_triangles */ - -#ifndef GL_ATI_separate_stencil -#define GL_ATI_separate_stencil 1 -#define GL_STENCIL_BACK_FUNC_ATI 0x8800 -#define GL_STENCIL_BACK_FAIL_ATI 0x8801 -#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 -#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803 -typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); -typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glStencilOpSeparateATI (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); -GLAPI void APIENTRY glStencilFuncSeparateATI (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); -#endif -#endif /* GL_ATI_separate_stencil */ - -#ifndef GL_ATI_text_fragment_shader -#define GL_ATI_text_fragment_shader 1 -#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 -#endif /* GL_ATI_text_fragment_shader */ - -#ifndef GL_ATI_texture_env_combine3 -#define GL_ATI_texture_env_combine3 1 -#define GL_MODULATE_ADD_ATI 0x8744 -#define GL_MODULATE_SIGNED_ADD_ATI 0x8745 -#define GL_MODULATE_SUBTRACT_ATI 0x8746 -#endif /* GL_ATI_texture_env_combine3 */ - -#ifndef GL_ATI_texture_float -#define GL_ATI_texture_float 1 -#define GL_RGBA_FLOAT32_ATI 0x8814 -#define GL_RGB_FLOAT32_ATI 0x8815 -#define GL_ALPHA_FLOAT32_ATI 0x8816 -#define GL_INTENSITY_FLOAT32_ATI 0x8817 -#define GL_LUMINANCE_FLOAT32_ATI 0x8818 -#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 -#define GL_RGBA_FLOAT16_ATI 0x881A -#define GL_RGB_FLOAT16_ATI 0x881B -#define GL_ALPHA_FLOAT16_ATI 0x881C -#define GL_INTENSITY_FLOAT16_ATI 0x881D -#define GL_LUMINANCE_FLOAT16_ATI 0x881E -#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F -#endif /* GL_ATI_texture_float */ - -#ifndef GL_ATI_texture_mirror_once -#define GL_ATI_texture_mirror_once 1 -#define GL_MIRROR_CLAMP_ATI 0x8742 -#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 -#endif /* GL_ATI_texture_mirror_once */ - -#ifndef GL_ATI_vertex_array_object -#define GL_ATI_vertex_array_object 1 -#define GL_STATIC_ATI 0x8760 -#define GL_DYNAMIC_ATI 0x8761 -#define GL_PRESERVE_ATI 0x8762 -#define GL_DISCARD_ATI 0x8763 -#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 -#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 -#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 -#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 -typedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const GLvoid *pointer, GLenum usage); -typedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer); -typedef void (APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const GLvoid *pointer, GLenum preserve); -typedef void (APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer); -typedef void (APIENTRYP PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); -typedef void (APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); -typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei size, const GLvoid *pointer, GLenum usage); -GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint buffer); -GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint buffer, GLuint offset, GLsizei size, const GLvoid *pointer, GLenum preserve); -GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint buffer, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetObjectBufferivATI (GLuint buffer, GLenum pname, GLint *params); -GLAPI void APIENTRY glFreeObjectBufferATI (GLuint buffer); -GLAPI void APIENTRY glArrayObjectATI (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); -GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum array, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetArrayObjectivATI (GLenum array, GLenum pname, GLint *params); -GLAPI void APIENTRY glVariantArrayObjectATI (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); -GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint id, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint id, GLenum pname, GLint *params); -#endif -#endif /* GL_ATI_vertex_array_object */ - -#ifndef GL_ATI_vertex_attrib_array_object -#define GL_ATI_vertex_attrib_array_object 1 -typedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexAttribArrayObjectATI (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); -GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint index, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint index, GLenum pname, GLint *params); -#endif -#endif /* GL_ATI_vertex_attrib_array_object */ - -#ifndef GL_ATI_vertex_streams -#define GL_ATI_vertex_streams 1 -#define GL_MAX_VERTEX_STREAMS_ATI 0x876B -#define GL_VERTEX_STREAM0_ATI 0x876C -#define GL_VERTEX_STREAM1_ATI 0x876D -#define GL_VERTEX_STREAM2_ATI 0x876E -#define GL_VERTEX_STREAM3_ATI 0x876F -#define GL_VERTEX_STREAM4_ATI 0x8770 -#define GL_VERTEX_STREAM5_ATI 0x8771 -#define GL_VERTEX_STREAM6_ATI 0x8772 -#define GL_VERTEX_STREAM7_ATI 0x8773 -#define GL_VERTEX_SOURCE_ATI 0x8774 -typedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x); -typedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x); -typedef void (APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x); -typedef void (APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x); -typedef void (APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords); -typedef void (APIENTRYP PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz); -typedef void (APIENTRYP PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords); -typedef void (APIENTRYP PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz); -typedef void (APIENTRYP PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); -typedef void (APIENTRYP PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz); -typedef void (APIENTRYP PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); -typedef void (APIENTRYP PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); -typedef void (APIENTRYP PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); -typedef void (APIENTRYP PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); -typedef void (APIENTRYP PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); -typedef void (APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream); -typedef void (APIENTRYP PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexStream1sATI (GLenum stream, GLshort x); -GLAPI void APIENTRY glVertexStream1svATI (GLenum stream, const GLshort *coords); -GLAPI void APIENTRY glVertexStream1iATI (GLenum stream, GLint x); -GLAPI void APIENTRY glVertexStream1ivATI (GLenum stream, const GLint *coords); -GLAPI void APIENTRY glVertexStream1fATI (GLenum stream, GLfloat x); -GLAPI void APIENTRY glVertexStream1fvATI (GLenum stream, const GLfloat *coords); -GLAPI void APIENTRY glVertexStream1dATI (GLenum stream, GLdouble x); -GLAPI void APIENTRY glVertexStream1dvATI (GLenum stream, const GLdouble *coords); -GLAPI void APIENTRY glVertexStream2sATI (GLenum stream, GLshort x, GLshort y); -GLAPI void APIENTRY glVertexStream2svATI (GLenum stream, const GLshort *coords); -GLAPI void APIENTRY glVertexStream2iATI (GLenum stream, GLint x, GLint y); -GLAPI void APIENTRY glVertexStream2ivATI (GLenum stream, const GLint *coords); -GLAPI void APIENTRY glVertexStream2fATI (GLenum stream, GLfloat x, GLfloat y); -GLAPI void APIENTRY glVertexStream2fvATI (GLenum stream, const GLfloat *coords); -GLAPI void APIENTRY glVertexStream2dATI (GLenum stream, GLdouble x, GLdouble y); -GLAPI void APIENTRY glVertexStream2dvATI (GLenum stream, const GLdouble *coords); -GLAPI void APIENTRY glVertexStream3sATI (GLenum stream, GLshort x, GLshort y, GLshort z); -GLAPI void APIENTRY glVertexStream3svATI (GLenum stream, const GLshort *coords); -GLAPI void APIENTRY glVertexStream3iATI (GLenum stream, GLint x, GLint y, GLint z); -GLAPI void APIENTRY glVertexStream3ivATI (GLenum stream, const GLint *coords); -GLAPI void APIENTRY glVertexStream3fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glVertexStream3fvATI (GLenum stream, const GLfloat *coords); -GLAPI void APIENTRY glVertexStream3dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z); -GLAPI void APIENTRY glVertexStream3dvATI (GLenum stream, const GLdouble *coords); -GLAPI void APIENTRY glVertexStream4sATI (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); -GLAPI void APIENTRY glVertexStream4svATI (GLenum stream, const GLshort *coords); -GLAPI void APIENTRY glVertexStream4iATI (GLenum stream, GLint x, GLint y, GLint z, GLint w); -GLAPI void APIENTRY glVertexStream4ivATI (GLenum stream, const GLint *coords); -GLAPI void APIENTRY glVertexStream4fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI void APIENTRY glVertexStream4fvATI (GLenum stream, const GLfloat *coords); -GLAPI void APIENTRY glVertexStream4dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI void APIENTRY glVertexStream4dvATI (GLenum stream, const GLdouble *coords); -GLAPI void APIENTRY glNormalStream3bATI (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz); -GLAPI void APIENTRY glNormalStream3bvATI (GLenum stream, const GLbyte *coords); -GLAPI void APIENTRY glNormalStream3sATI (GLenum stream, GLshort nx, GLshort ny, GLshort nz); -GLAPI void APIENTRY glNormalStream3svATI (GLenum stream, const GLshort *coords); -GLAPI void APIENTRY glNormalStream3iATI (GLenum stream, GLint nx, GLint ny, GLint nz); -GLAPI void APIENTRY glNormalStream3ivATI (GLenum stream, const GLint *coords); -GLAPI void APIENTRY glNormalStream3fATI (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); -GLAPI void APIENTRY glNormalStream3fvATI (GLenum stream, const GLfloat *coords); -GLAPI void APIENTRY glNormalStream3dATI (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); -GLAPI void APIENTRY glNormalStream3dvATI (GLenum stream, const GLdouble *coords); -GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum stream); -GLAPI void APIENTRY glVertexBlendEnviATI (GLenum pname, GLint param); -GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum pname, GLfloat param); -#endif -#endif /* GL_ATI_vertex_streams */ - -#ifndef GL_EXT_422_pixels -#define GL_EXT_422_pixels 1 -#define GL_422_EXT 0x80CC -#define GL_422_REV_EXT 0x80CD -#define GL_422_AVERAGE_EXT 0x80CE -#define GL_422_REV_AVERAGE_EXT 0x80CF -#endif /* GL_EXT_422_pixels */ - -#ifndef GL_EXT_abgr -#define GL_EXT_abgr 1 -#define GL_ABGR_EXT 0x8000 -#endif /* GL_EXT_abgr */ - -#ifndef GL_EXT_bgra -#define GL_EXT_bgra 1 -#define GL_BGR_EXT 0x80E0 -#define GL_BGRA_EXT 0x80E1 -#endif /* GL_EXT_bgra */ - -#ifndef GL_EXT_bindable_uniform -#define GL_EXT_bindable_uniform 1 -#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2 -#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3 -#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4 -#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED -#define GL_UNIFORM_BUFFER_EXT 0x8DEE -#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF -typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer); -typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location); -typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glUniformBufferEXT (GLuint program, GLint location, GLuint buffer); -GLAPI GLint APIENTRY glGetUniformBufferSizeEXT (GLuint program, GLint location); -GLAPI GLintptr APIENTRY glGetUniformOffsetEXT (GLuint program, GLint location); -#endif -#endif /* GL_EXT_bindable_uniform */ - -#ifndef GL_EXT_blend_color -#define GL_EXT_blend_color 1 -#define GL_CONSTANT_COLOR_EXT 0x8001 -#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 -#define GL_CONSTANT_ALPHA_EXT 0x8003 -#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 -#define GL_BLEND_COLOR_EXT 0x8005 -typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendColorEXT (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -#endif -#endif /* GL_EXT_blend_color */ - -#ifndef GL_EXT_blend_equation_separate -#define GL_EXT_blend_equation_separate 1 -#define GL_BLEND_EQUATION_RGB_EXT 0x8009 -#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D -typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendEquationSeparateEXT (GLenum modeRGB, GLenum modeAlpha); -#endif -#endif /* GL_EXT_blend_equation_separate */ - -#ifndef GL_EXT_blend_func_separate -#define GL_EXT_blend_func_separate 1 -#define GL_BLEND_DST_RGB_EXT 0x80C8 -#define GL_BLEND_SRC_RGB_EXT 0x80C9 -#define GL_BLEND_DST_ALPHA_EXT 0x80CA -#define GL_BLEND_SRC_ALPHA_EXT 0x80CB -typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -#endif -#endif /* GL_EXT_blend_func_separate */ - -#ifndef GL_EXT_blend_logic_op -#define GL_EXT_blend_logic_op 1 -#endif /* GL_EXT_blend_logic_op */ - -#ifndef GL_EXT_blend_minmax -#define GL_EXT_blend_minmax 1 -#define GL_MIN_EXT 0x8007 -#define GL_MAX_EXT 0x8008 -#define GL_FUNC_ADD_EXT 0x8006 -#define GL_BLEND_EQUATION_EXT 0x8009 -typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendEquationEXT (GLenum mode); -#endif -#endif /* GL_EXT_blend_minmax */ - -#ifndef GL_EXT_blend_subtract -#define GL_EXT_blend_subtract 1 -#define GL_FUNC_SUBTRACT_EXT 0x800A -#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B -#endif /* GL_EXT_blend_subtract */ - -#ifndef GL_EXT_clip_volume_hint -#define GL_EXT_clip_volume_hint 1 -#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 -#endif /* GL_EXT_clip_volume_hint */ - -#ifndef GL_EXT_cmyka -#define GL_EXT_cmyka 1 -#define GL_CMYK_EXT 0x800C -#define GL_CMYKA_EXT 0x800D -#define GL_PACK_CMYK_HINT_EXT 0x800E -#define GL_UNPACK_CMYK_HINT_EXT 0x800F -#endif /* GL_EXT_cmyka */ - -#ifndef GL_EXT_color_subtable -#define GL_EXT_color_subtable 1 -typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glColorSubTableEXT (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); -GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); -#endif -#endif /* GL_EXT_color_subtable */ - -#ifndef GL_EXT_compiled_vertex_array -#define GL_EXT_compiled_vertex_array 1 -#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 -#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 -typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count); -typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC) (void); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glLockArraysEXT (GLint first, GLsizei count); -GLAPI void APIENTRY glUnlockArraysEXT (void); -#endif -#endif /* GL_EXT_compiled_vertex_array */ - -#ifndef GL_EXT_convolution -#define GL_EXT_convolution 1 -#define GL_CONVOLUTION_1D_EXT 0x8010 -#define GL_CONVOLUTION_2D_EXT 0x8011 -#define GL_SEPARABLE_2D_EXT 0x8012 -#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 -#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 -#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 -#define GL_REDUCE_EXT 0x8016 -#define GL_CONVOLUTION_FORMAT_EXT 0x8017 -#define GL_CONVOLUTION_WIDTH_EXT 0x8018 -#define GL_CONVOLUTION_HEIGHT_EXT 0x8019 -#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A -#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B -#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C -#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D -#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E -#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F -#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 -#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 -#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 -#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 -typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); -typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); -typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); -GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); -GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum target, GLenum pname, GLfloat params); -GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params); -GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum target, GLenum pname, GLint params); -GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum target, GLenum pname, const GLint *params); -GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum target, GLenum format, GLenum type, GLvoid *image); -GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum target, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); -GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); -#endif -#endif /* GL_EXT_convolution */ - -#ifndef GL_EXT_coordinate_frame -#define GL_EXT_coordinate_frame 1 -#define GL_TANGENT_ARRAY_EXT 0x8439 -#define GL_BINORMAL_ARRAY_EXT 0x843A -#define GL_CURRENT_TANGENT_EXT 0x843B -#define GL_CURRENT_BINORMAL_EXT 0x843C -#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E -#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F -#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 -#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 -#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 -#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 -#define GL_MAP1_TANGENT_EXT 0x8444 -#define GL_MAP2_TANGENT_EXT 0x8445 -#define GL_MAP1_BINORMAL_EXT 0x8446 -#define GL_MAP2_BINORMAL_EXT 0x8447 -typedef void (APIENTRYP PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz); -typedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC) (const GLbyte *v); -typedef void (APIENTRYP PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz); -typedef void (APIENTRYP PFNGLTANGENT3DVEXTPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz); -typedef void (APIENTRYP PFNGLTANGENT3FVEXTPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz); -typedef void (APIENTRYP PFNGLTANGENT3IVEXTPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz); -typedef void (APIENTRYP PFNGLTANGENT3SVEXTPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz); -typedef void (APIENTRYP PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v); -typedef void (APIENTRYP PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz); -typedef void (APIENTRYP PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz); -typedef void (APIENTRYP PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz); -typedef void (APIENTRYP PFNGLBINORMAL3IVEXTPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz); -typedef void (APIENTRYP PFNGLBINORMAL3SVEXTPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTangent3bEXT (GLbyte tx, GLbyte ty, GLbyte tz); -GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *v); -GLAPI void APIENTRY glTangent3dEXT (GLdouble tx, GLdouble ty, GLdouble tz); -GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *v); -GLAPI void APIENTRY glTangent3fEXT (GLfloat tx, GLfloat ty, GLfloat tz); -GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *v); -GLAPI void APIENTRY glTangent3iEXT (GLint tx, GLint ty, GLint tz); -GLAPI void APIENTRY glTangent3ivEXT (const GLint *v); -GLAPI void APIENTRY glTangent3sEXT (GLshort tx, GLshort ty, GLshort tz); -GLAPI void APIENTRY glTangent3svEXT (const GLshort *v); -GLAPI void APIENTRY glBinormal3bEXT (GLbyte bx, GLbyte by, GLbyte bz); -GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *v); -GLAPI void APIENTRY glBinormal3dEXT (GLdouble bx, GLdouble by, GLdouble bz); -GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *v); -GLAPI void APIENTRY glBinormal3fEXT (GLfloat bx, GLfloat by, GLfloat bz); -GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *v); -GLAPI void APIENTRY glBinormal3iEXT (GLint bx, GLint by, GLint bz); -GLAPI void APIENTRY glBinormal3ivEXT (const GLint *v); -GLAPI void APIENTRY glBinormal3sEXT (GLshort bx, GLshort by, GLshort bz); -GLAPI void APIENTRY glBinormal3svEXT (const GLshort *v); -GLAPI void APIENTRY glTangentPointerEXT (GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void APIENTRY glBinormalPointerEXT (GLenum type, GLsizei stride, const GLvoid *pointer); -#endif -#endif /* GL_EXT_coordinate_frame */ - -#ifndef GL_EXT_copy_texture -#define GL_EXT_copy_texture 1 -typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -#endif -#endif /* GL_EXT_copy_texture */ - -#ifndef GL_EXT_cull_vertex -#define GL_EXT_cull_vertex 1 -#define GL_CULL_VERTEX_EXT 0x81AA -#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB -#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC -typedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params); -typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glCullParameterdvEXT (GLenum pname, GLdouble *params); -GLAPI void APIENTRY glCullParameterfvEXT (GLenum pname, GLfloat *params); -#endif -#endif /* GL_EXT_cull_vertex */ - -#ifndef GL_EXT_depth_bounds_test -#define GL_EXT_depth_bounds_test 1 -#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 -#define GL_DEPTH_BOUNDS_EXT 0x8891 -typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDepthBoundsEXT (GLclampd zmin, GLclampd zmax); -#endif -#endif /* GL_EXT_depth_bounds_test */ - -#ifndef GL_EXT_direct_state_access -#define GL_EXT_direct_state_access 1 -#define GL_PROGRAM_MATRIX_EXT 0x8E2D -#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E -#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F -typedef void (APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m); -typedef void (APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m); -typedef void (APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m); -typedef void (APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m); -typedef void (APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode); -typedef void (APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); -typedef void (APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); -typedef void (APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode); -typedef void (APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode); -typedef void (APIENTRYP PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); -typedef void (APIENTRYP PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); -typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); -typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture); -typedef void (APIENTRYP PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param); -typedef void (APIENTRYP PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params); -typedef void (APIENTRYP PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params); -typedef void (APIENTRYP PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); -typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); -typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); -typedef void (APIENTRYP PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat *data); -typedef void (APIENTRYP PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble *data); -typedef void (APIENTRYP PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLvoid **data); -typedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index); -typedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index); -typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index); -typedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLint *data); -typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint lod, GLvoid *img); -typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint lod, GLvoid *img); -typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); -typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); -typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); -typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); -typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const GLvoid *data, GLenum usage); -typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const GLvoid *data); -typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access); -typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer); -typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, GLvoid **params); -typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLvoid *data); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); -typedef void (APIENTRYP PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); -typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint *params); -typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint *params); -typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint *params); -typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint *params); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint *params); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint *params); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params); -typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint *params); -typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint *params); -typedef void (APIENTRYP PFNGLENABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index); -typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index); -typedef void (APIENTRYP PFNGLGETFLOATI_VEXTPROC) (GLenum pname, GLuint index, GLfloat *params); -typedef void (APIENTRYP PFNGLGETDOUBLEI_VEXTPROC) (GLenum pname, GLuint index, GLdouble *params); -typedef void (APIENTRYP PFNGLGETPOINTERI_VEXTPROC) (GLenum pname, GLuint index, GLvoid **params); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const GLvoid *string); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble *params); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat *params); -typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble *params); -typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat *params); -typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, GLvoid *string); -typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); -typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target); -typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target); -typedef void (APIENTRYP PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target); -typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); -typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum *bufs); -typedef void (APIENTRYP PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); -typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); -typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); -typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); -typedef void (APIENTRYP PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer); -typedef void (APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer); -typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (APIENTRYP PFNGLVERTEXARRAYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (APIENTRYP PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset); -typedef void (APIENTRYP PFNGLVERTEXARRAYINDEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); -typedef void (APIENTRYP PFNGLVERTEXARRAYNORMALOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); -typedef void (APIENTRYP PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (APIENTRYP PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (APIENTRYP PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); -typedef void (APIENTRYP PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset); -typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); -typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array); -typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array); -typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index); -typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index); -typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERVEXTPROC) (GLuint vaobj, GLenum pname, GLint *param); -typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERVEXTPROC) (GLuint vaobj, GLenum pname, GLvoid **param); -typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint *param); -typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLvoid **param); -typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); -typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); -typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); -typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLsizeiptr offset, GLsizeiptr size, const void *data); -typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint framebuffer, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEEXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); -typedef void (APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); -typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); -typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); -typedef void (APIENTRYP PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); -typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); -typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex); -typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor); -typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m); -GLAPI void APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m); -GLAPI void APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m); -GLAPI void APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m); -GLAPI void APIENTRY glMatrixLoadIdentityEXT (GLenum mode); -GLAPI void APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); -GLAPI void APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); -GLAPI void APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); -GLAPI void APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); -GLAPI void APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); -GLAPI void APIENTRY glMatrixPopEXT (GLenum mode); -GLAPI void APIENTRY glMatrixPushEXT (GLenum mode); -GLAPI void APIENTRY glClientAttribDefaultEXT (GLbitfield mask); -GLAPI void APIENTRY glPushClientAttribDefaultEXT (GLbitfield mask); -GLAPI void APIENTRY glTextureParameterfEXT (GLuint texture, GLenum target, GLenum pname, GLfloat param); -GLAPI void APIENTRY glTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, const GLfloat *params); -GLAPI void APIENTRY glTextureParameteriEXT (GLuint texture, GLenum target, GLenum pname, GLint param); -GLAPI void APIENTRY glTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params); -GLAPI void APIENTRY glTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void APIENTRY glTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void APIENTRY glTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void APIENTRY glTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void APIENTRY glCopyTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -GLAPI void APIENTRY glCopyTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -GLAPI void APIENTRY glCopyTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -GLAPI void APIENTRY glCopyTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI void APIENTRY glGetTextureImageEXT (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); -GLAPI void APIENTRY glGetTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetTextureLevelParameterfvEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetTextureLevelParameterivEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params); -GLAPI void APIENTRY glTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void APIENTRY glTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void APIENTRY glCopyTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI void APIENTRY glBindMultiTextureEXT (GLenum texunit, GLenum target, GLuint texture); -GLAPI void APIENTRY glMultiTexCoordPointerEXT (GLenum texunit, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void APIENTRY glMultiTexEnvfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param); -GLAPI void APIENTRY glMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); -GLAPI void APIENTRY glMultiTexEnviEXT (GLenum texunit, GLenum target, GLenum pname, GLint param); -GLAPI void APIENTRY glMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params); -GLAPI void APIENTRY glMultiTexGendEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble param); -GLAPI void APIENTRY glMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params); -GLAPI void APIENTRY glMultiTexGenfEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat param); -GLAPI void APIENTRY glMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params); -GLAPI void APIENTRY glMultiTexGeniEXT (GLenum texunit, GLenum coord, GLenum pname, GLint param); -GLAPI void APIENTRY glMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, const GLint *params); -GLAPI void APIENTRY glGetMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params); -GLAPI void APIENTRY glGetMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, GLint *params); -GLAPI void APIENTRY glMultiTexParameteriEXT (GLenum texunit, GLenum target, GLenum pname, GLint param); -GLAPI void APIENTRY glMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params); -GLAPI void APIENTRY glMultiTexParameterfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param); -GLAPI void APIENTRY glMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); -GLAPI void APIENTRY glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void APIENTRY glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void APIENTRY glMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void APIENTRY glMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void APIENTRY glCopyMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -GLAPI void APIENTRY glCopyMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -GLAPI void APIENTRY glCopyMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -GLAPI void APIENTRY glCopyMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI void APIENTRY glGetMultiTexImageEXT (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); -GLAPI void APIENTRY glGetMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetMultiTexLevelParameterfvEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetMultiTexLevelParameterivEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params); -GLAPI void APIENTRY glMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void APIENTRY glMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void APIENTRY glCopyMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI void APIENTRY glEnableClientStateIndexedEXT (GLenum array, GLuint index); -GLAPI void APIENTRY glDisableClientStateIndexedEXT (GLenum array, GLuint index); -GLAPI void APIENTRY glGetFloatIndexedvEXT (GLenum target, GLuint index, GLfloat *data); -GLAPI void APIENTRY glGetDoubleIndexedvEXT (GLenum target, GLuint index, GLdouble *data); -GLAPI void APIENTRY glGetPointerIndexedvEXT (GLenum target, GLuint index, GLvoid **data); -GLAPI void APIENTRY glEnableIndexedEXT (GLenum target, GLuint index); -GLAPI void APIENTRY glDisableIndexedEXT (GLenum target, GLuint index); -GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum target, GLuint index); -GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum target, GLuint index, GLint *data); -GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum target, GLuint index, GLboolean *data); -GLAPI void APIENTRY glCompressedTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits); -GLAPI void APIENTRY glCompressedTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits); -GLAPI void APIENTRY glCompressedTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *bits); -GLAPI void APIENTRY glCompressedTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *bits); -GLAPI void APIENTRY glCompressedTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits); -GLAPI void APIENTRY glCompressedTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits); -GLAPI void APIENTRY glGetCompressedTextureImageEXT (GLuint texture, GLenum target, GLint lod, GLvoid *img); -GLAPI void APIENTRY glCompressedMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits); -GLAPI void APIENTRY glCompressedMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits); -GLAPI void APIENTRY glCompressedMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *bits); -GLAPI void APIENTRY glCompressedMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *bits); -GLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits); -GLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits); -GLAPI void APIENTRY glGetCompressedMultiTexImageEXT (GLenum texunit, GLenum target, GLint lod, GLvoid *img); -GLAPI void APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m); -GLAPI void APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m); -GLAPI void APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m); -GLAPI void APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m); -GLAPI void APIENTRY glNamedBufferDataEXT (GLuint buffer, GLsizeiptr size, const GLvoid *data, GLenum usage); -GLAPI void APIENTRY glNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, const GLvoid *data); -GLAPI void *APIENTRY glMapNamedBufferEXT (GLuint buffer, GLenum access); -GLAPI GLboolean APIENTRY glUnmapNamedBufferEXT (GLuint buffer); -GLAPI void APIENTRY glGetNamedBufferParameterivEXT (GLuint buffer, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetNamedBufferPointervEXT (GLuint buffer, GLenum pname, GLvoid **params); -GLAPI void APIENTRY glGetNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLvoid *data); -GLAPI void APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0); -GLAPI void APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1); -GLAPI void APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -GLAPI void APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -GLAPI void APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0); -GLAPI void APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1); -GLAPI void APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); -GLAPI void APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -GLAPI void APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); -GLAPI void APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); -GLAPI void APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); -GLAPI void APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); -GLAPI void APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); -GLAPI void APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); -GLAPI void APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); -GLAPI void APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); -GLAPI void APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI void APIENTRY glTextureBufferEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); -GLAPI void APIENTRY glMultiTexBufferEXT (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); -GLAPI void APIENTRY glTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params); -GLAPI void APIENTRY glTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, const GLuint *params); -GLAPI void APIENTRY glGetTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, GLuint *params); -GLAPI void APIENTRY glMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params); -GLAPI void APIENTRY glMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, const GLuint *params); -GLAPI void APIENTRY glGetMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, GLuint *params); -GLAPI void APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0); -GLAPI void APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1); -GLAPI void APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); -GLAPI void APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -GLAPI void APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); -GLAPI void APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); -GLAPI void APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); -GLAPI void APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); -GLAPI void APIENTRY glNamedProgramLocalParameters4fvEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params); -GLAPI void APIENTRY glNamedProgramLocalParameterI4iEXT (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); -GLAPI void APIENTRY glNamedProgramLocalParameterI4ivEXT (GLuint program, GLenum target, GLuint index, const GLint *params); -GLAPI void APIENTRY glNamedProgramLocalParametersI4ivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params); -GLAPI void APIENTRY glNamedProgramLocalParameterI4uiEXT (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -GLAPI void APIENTRY glNamedProgramLocalParameterI4uivEXT (GLuint program, GLenum target, GLuint index, const GLuint *params); -GLAPI void APIENTRY glNamedProgramLocalParametersI4uivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params); -GLAPI void APIENTRY glGetNamedProgramLocalParameterIivEXT (GLuint program, GLenum target, GLuint index, GLint *params); -GLAPI void APIENTRY glGetNamedProgramLocalParameterIuivEXT (GLuint program, GLenum target, GLuint index, GLuint *params); -GLAPI void APIENTRY glEnableClientStateiEXT (GLenum array, GLuint index); -GLAPI void APIENTRY glDisableClientStateiEXT (GLenum array, GLuint index); -GLAPI void APIENTRY glGetFloati_vEXT (GLenum pname, GLuint index, GLfloat *params); -GLAPI void APIENTRY glGetDoublei_vEXT (GLenum pname, GLuint index, GLdouble *params); -GLAPI void APIENTRY glGetPointeri_vEXT (GLenum pname, GLuint index, GLvoid **params); -GLAPI void APIENTRY glNamedProgramStringEXT (GLuint program, GLenum target, GLenum format, GLsizei len, const GLvoid *string); -GLAPI void APIENTRY glNamedProgramLocalParameter4dEXT (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI void APIENTRY glNamedProgramLocalParameter4dvEXT (GLuint program, GLenum target, GLuint index, const GLdouble *params); -GLAPI void APIENTRY glNamedProgramLocalParameter4fEXT (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI void APIENTRY glNamedProgramLocalParameter4fvEXT (GLuint program, GLenum target, GLuint index, const GLfloat *params); -GLAPI void APIENTRY glGetNamedProgramLocalParameterdvEXT (GLuint program, GLenum target, GLuint index, GLdouble *params); -GLAPI void APIENTRY glGetNamedProgramLocalParameterfvEXT (GLuint program, GLenum target, GLuint index, GLfloat *params); -GLAPI void APIENTRY glGetNamedProgramivEXT (GLuint program, GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetNamedProgramStringEXT (GLuint program, GLenum target, GLenum pname, GLvoid *string); -GLAPI void APIENTRY glNamedRenderbufferStorageEXT (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); -GLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT (GLuint renderbuffer, GLenum pname, GLint *params); -GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleEXT (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleCoverageEXT (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); -GLAPI GLenum APIENTRY glCheckNamedFramebufferStatusEXT (GLuint framebuffer, GLenum target); -GLAPI void APIENTRY glNamedFramebufferTexture1DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -GLAPI void APIENTRY glNamedFramebufferTexture2DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -GLAPI void APIENTRY glNamedFramebufferTexture3DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -GLAPI void APIENTRY glNamedFramebufferRenderbufferEXT (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameterivEXT (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); -GLAPI void APIENTRY glGenerateTextureMipmapEXT (GLuint texture, GLenum target); -GLAPI void APIENTRY glGenerateMultiTexMipmapEXT (GLenum texunit, GLenum target); -GLAPI void APIENTRY glFramebufferDrawBufferEXT (GLuint framebuffer, GLenum mode); -GLAPI void APIENTRY glFramebufferDrawBuffersEXT (GLuint framebuffer, GLsizei n, const GLenum *bufs); -GLAPI void APIENTRY glFramebufferReadBufferEXT (GLuint framebuffer, GLenum mode); -GLAPI void APIENTRY glGetFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params); -GLAPI void APIENTRY glNamedCopyBufferSubDataEXT (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); -GLAPI void APIENTRY glNamedFramebufferTextureEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); -GLAPI void APIENTRY glNamedFramebufferTextureLayerEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); -GLAPI void APIENTRY glNamedFramebufferTextureFaceEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); -GLAPI void APIENTRY glTextureRenderbufferEXT (GLuint texture, GLenum target, GLuint renderbuffer); -GLAPI void APIENTRY glMultiTexRenderbufferEXT (GLenum texunit, GLenum target, GLuint renderbuffer); -GLAPI void APIENTRY glVertexArrayVertexOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); -GLAPI void APIENTRY glVertexArrayColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); -GLAPI void APIENTRY glVertexArrayEdgeFlagOffsetEXT (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset); -GLAPI void APIENTRY glVertexArrayIndexOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); -GLAPI void APIENTRY glVertexArrayNormalOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); -GLAPI void APIENTRY glVertexArrayTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); -GLAPI void APIENTRY glVertexArrayMultiTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset); -GLAPI void APIENTRY glVertexArrayFogCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); -GLAPI void APIENTRY glVertexArraySecondaryColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); -GLAPI void APIENTRY glVertexArrayVertexAttribOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset); -GLAPI void APIENTRY glVertexArrayVertexAttribIOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); -GLAPI void APIENTRY glEnableVertexArrayEXT (GLuint vaobj, GLenum array); -GLAPI void APIENTRY glDisableVertexArrayEXT (GLuint vaobj, GLenum array); -GLAPI void APIENTRY glEnableVertexArrayAttribEXT (GLuint vaobj, GLuint index); -GLAPI void APIENTRY glDisableVertexArrayAttribEXT (GLuint vaobj, GLuint index); -GLAPI void APIENTRY glGetVertexArrayIntegervEXT (GLuint vaobj, GLenum pname, GLint *param); -GLAPI void APIENTRY glGetVertexArrayPointervEXT (GLuint vaobj, GLenum pname, GLvoid **param); -GLAPI void APIENTRY glGetVertexArrayIntegeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, GLint *param); -GLAPI void APIENTRY glGetVertexArrayPointeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, GLvoid **param); -GLAPI void *APIENTRY glMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); -GLAPI void APIENTRY glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length); -GLAPI void APIENTRY glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); -GLAPI void APIENTRY glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLsizeiptr offset, GLsizeiptr size, const void *data); -GLAPI void APIENTRY glNamedFramebufferParameteriEXT (GLuint framebuffer, GLenum pname, GLint param); -GLAPI void APIENTRY glGetNamedFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params); -GLAPI void APIENTRY glProgramUniform1dEXT (GLuint program, GLint location, GLdouble x); -GLAPI void APIENTRY glProgramUniform2dEXT (GLuint program, GLint location, GLdouble x, GLdouble y); -GLAPI void APIENTRY glProgramUniform3dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); -GLAPI void APIENTRY glProgramUniform4dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI void APIENTRY glProgramUniform1dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value); -GLAPI void APIENTRY glProgramUniform2dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value); -GLAPI void APIENTRY glProgramUniform3dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value); -GLAPI void APIENTRY glProgramUniform4dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value); -GLAPI void APIENTRY glProgramUniformMatrix2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glProgramUniformMatrix3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glProgramUniformMatrix4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glProgramUniformMatrix2x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glProgramUniformMatrix2x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glProgramUniformMatrix3x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glProgramUniformMatrix3x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glProgramUniformMatrix4x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glProgramUniformMatrix4x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI void APIENTRY glTextureBufferRangeEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); -GLAPI void APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); -GLAPI void APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); -GLAPI void APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); -GLAPI void APIENTRY glTextureStorage2DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -GLAPI void APIENTRY glTextureStorage3DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); -GLAPI void APIENTRY glVertexArrayBindVertexBufferEXT (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); -GLAPI void APIENTRY glVertexArrayVertexAttribFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); -GLAPI void APIENTRY glVertexArrayVertexAttribIFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -GLAPI void APIENTRY glVertexArrayVertexAttribLFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -GLAPI void APIENTRY glVertexArrayVertexAttribBindingEXT (GLuint vaobj, GLuint attribindex, GLuint bindingindex); -GLAPI void APIENTRY glVertexArrayVertexBindingDivisorEXT (GLuint vaobj, GLuint bindingindex, GLuint divisor); -GLAPI void APIENTRY glVertexArrayVertexAttribLOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); -#endif -#endif /* GL_EXT_direct_state_access */ - -#ifndef GL_EXT_draw_buffers2 -#define GL_EXT_draw_buffers2 1 -typedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glColorMaskIndexedEXT (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); -#endif -#endif /* GL_EXT_draw_buffers2 */ - -#ifndef GL_EXT_draw_instanced -#define GL_EXT_draw_instanced 1 -typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount); -GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); -#endif -#endif /* GL_EXT_draw_instanced */ - -#ifndef GL_EXT_draw_range_elements -#define GL_EXT_draw_range_elements 1 -#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 -#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 -typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); -#endif -#endif /* GL_EXT_draw_range_elements */ - -#ifndef GL_EXT_fog_coord -#define GL_EXT_fog_coord 1 -#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 -#define GL_FOG_COORDINATE_EXT 0x8451 -#define GL_FRAGMENT_DEPTH_EXT 0x8452 -#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 -#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 -#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 -#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 -#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 -typedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC) (GLfloat coord); -typedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord); -typedef void (APIENTRYP PFNGLFOGCOORDDEXTPROC) (GLdouble coord); -typedef void (APIENTRYP PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord); -typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFogCoordfEXT (GLfloat coord); -GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *coord); -GLAPI void APIENTRY glFogCoorddEXT (GLdouble coord); -GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *coord); -GLAPI void APIENTRY glFogCoordPointerEXT (GLenum type, GLsizei stride, const GLvoid *pointer); -#endif -#endif /* GL_EXT_fog_coord */ - -#ifndef GL_EXT_framebuffer_blit -#define GL_EXT_framebuffer_blit 1 -#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 -#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 -#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6 -#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA -typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlitFramebufferEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -#endif -#endif /* GL_EXT_framebuffer_blit */ - -#ifndef GL_EXT_framebuffer_multisample -#define GL_EXT_framebuffer_multisample 1 -#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 -#define GL_MAX_SAMPLES_EXT 0x8D57 -typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -#endif -#endif /* GL_EXT_framebuffer_multisample */ - -#ifndef GL_EXT_framebuffer_multisample_blit_scaled -#define GL_EXT_framebuffer_multisample_blit_scaled 1 -#define GL_SCALED_RESOLVE_FASTEST_EXT 0x90BA -#define GL_SCALED_RESOLVE_NICEST_EXT 0x90BB -#endif /* GL_EXT_framebuffer_multisample_blit_scaled */ - -#ifndef GL_EXT_framebuffer_object -#define GL_EXT_framebuffer_object 1 -#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506 -#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 -#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 -#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 -#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 -#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 -#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 -#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 -#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA -#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB -#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC -#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD -#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF -#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 -#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 -#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 -#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 -#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 -#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 -#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 -#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 -#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 -#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 -#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA -#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB -#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC -#define GL_COLOR_ATTACHMENT13_EXT 0x8CED -#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE -#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF -#define GL_DEPTH_ATTACHMENT_EXT 0x8D00 -#define GL_STENCIL_ATTACHMENT_EXT 0x8D20 -#define GL_FRAMEBUFFER_EXT 0x8D40 -#define GL_RENDERBUFFER_EXT 0x8D41 -#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 -#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 -#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 -#define GL_STENCIL_INDEX1_EXT 0x8D46 -#define GL_STENCIL_INDEX4_EXT 0x8D47 -#define GL_STENCIL_INDEX8_EXT 0x8D48 -#define GL_STENCIL_INDEX16_EXT 0x8D49 -#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 -#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 -#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 -#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 -#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 -#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 -typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer); -typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer); -typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers); -typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers); -typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer); -typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer); -typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers); -typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers); -typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI GLboolean APIENTRY glIsRenderbufferEXT (GLuint renderbuffer); -GLAPI void APIENTRY glBindRenderbufferEXT (GLenum target, GLuint renderbuffer); -GLAPI void APIENTRY glDeleteRenderbuffersEXT (GLsizei n, const GLuint *renderbuffers); -GLAPI void APIENTRY glGenRenderbuffersEXT (GLsizei n, GLuint *renderbuffers); -GLAPI void APIENTRY glRenderbufferStorageEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -GLAPI void APIENTRY glGetRenderbufferParameterivEXT (GLenum target, GLenum pname, GLint *params); -GLAPI GLboolean APIENTRY glIsFramebufferEXT (GLuint framebuffer); -GLAPI void APIENTRY glBindFramebufferEXT (GLenum target, GLuint framebuffer); -GLAPI void APIENTRY glDeleteFramebuffersEXT (GLsizei n, const GLuint *framebuffers); -GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei n, GLuint *framebuffers); -GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT (GLenum target); -GLAPI void APIENTRY glFramebufferTexture1DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -GLAPI void APIENTRY glFramebufferTexture2DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -GLAPI void APIENTRY glFramebufferTexture3DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -GLAPI void APIENTRY glFramebufferRenderbufferEXT (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT (GLenum target, GLenum attachment, GLenum pname, GLint *params); -GLAPI void APIENTRY glGenerateMipmapEXT (GLenum target); -#endif -#endif /* GL_EXT_framebuffer_object */ - -#ifndef GL_EXT_framebuffer_sRGB -#define GL_EXT_framebuffer_sRGB 1 -#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 -#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA -#endif /* GL_EXT_framebuffer_sRGB */ - -#ifndef GL_EXT_geometry_shader4 -#define GL_EXT_geometry_shader4 1 -#define GL_GEOMETRY_SHADER_EXT 0x8DD9 -#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA -#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB -#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC -#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 -#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD -#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE -#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B -#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF -#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 -#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 -#define GL_LINES_ADJACENCY_EXT 0x000A -#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B -#define GL_TRIANGLES_ADJACENCY_EXT 0x000C -#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9 -#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 -#define GL_PROGRAM_POINT_SIZE_EXT 0x8642 -typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value); -#endif -#endif /* GL_EXT_geometry_shader4 */ - -#ifndef GL_EXT_gpu_program_parameters -#define GL_EXT_gpu_program_parameters 1 -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProgramEnvParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params); -GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params); -#endif -#endif /* GL_EXT_gpu_program_parameters */ - -#ifndef GL_EXT_gpu_shader4 -#define GL_EXT_gpu_shader4 1 -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD -#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 -#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 -#define GL_SAMPLER_BUFFER_EXT 0x8DC2 -#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3 -#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4 -#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5 -#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6 -#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7 -#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8 -#define GL_INT_SAMPLER_1D_EXT 0x8DC9 -#define GL_INT_SAMPLER_2D_EXT 0x8DCA -#define GL_INT_SAMPLER_3D_EXT 0x8DCB -#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC -#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD -#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE -#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF -#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 -#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1 -#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2 -#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3 -#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4 -#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5 -#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6 -#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7 -#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 -#define GL_MIN_PROGRAM_TEXEL_OFFSET_EXT 0x8904 -#define GL_MAX_PROGRAM_TEXEL_OFFSET_EXT 0x8905 -typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params); -typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); -typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name); -typedef void (APIENTRYP PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0); -typedef void (APIENTRYP PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1); -typedef void (APIENTRYP PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); -typedef void (APIENTRYP PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -typedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGetUniformuivEXT (GLuint program, GLint location, GLuint *params); -GLAPI void APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name); -GLAPI GLint APIENTRY glGetFragDataLocationEXT (GLuint program, const GLchar *name); -GLAPI void APIENTRY glUniform1uiEXT (GLint location, GLuint v0); -GLAPI void APIENTRY glUniform2uiEXT (GLint location, GLuint v0, GLuint v1); -GLAPI void APIENTRY glUniform3uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2); -GLAPI void APIENTRY glUniform4uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -GLAPI void APIENTRY glUniform1uivEXT (GLint location, GLsizei count, const GLuint *value); -GLAPI void APIENTRY glUniform2uivEXT (GLint location, GLsizei count, const GLuint *value); -GLAPI void APIENTRY glUniform3uivEXT (GLint location, GLsizei count, const GLuint *value); -GLAPI void APIENTRY glUniform4uivEXT (GLint location, GLsizei count, const GLuint *value); -#endif -#endif /* GL_EXT_gpu_shader4 */ - -#ifndef GL_EXT_histogram -#define GL_EXT_histogram 1 -#define GL_HISTOGRAM_EXT 0x8024 -#define GL_PROXY_HISTOGRAM_EXT 0x8025 -#define GL_HISTOGRAM_WIDTH_EXT 0x8026 -#define GL_HISTOGRAM_FORMAT_EXT 0x8027 -#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 -#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 -#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A -#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B -#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C -#define GL_HISTOGRAM_SINK_EXT 0x802D -#define GL_MINMAX_EXT 0x802E -#define GL_MINMAX_FORMAT_EXT 0x802F -#define GL_MINMAX_SINK_EXT 0x8030 -#define GL_TABLE_TOO_LARGE_EXT 0x8031 -typedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); -typedef void (APIENTRYP PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink); -typedef void (APIENTRYP PFNGLRESETHISTOGRAMEXTPROC) (GLenum target); -typedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC) (GLenum target); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGetHistogramEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum target, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetMinmaxEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum target, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glHistogramEXT (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); -GLAPI void APIENTRY glMinmaxEXT (GLenum target, GLenum internalformat, GLboolean sink); -GLAPI void APIENTRY glResetHistogramEXT (GLenum target); -GLAPI void APIENTRY glResetMinmaxEXT (GLenum target); -#endif -#endif /* GL_EXT_histogram */ - -#ifndef GL_EXT_index_array_formats -#define GL_EXT_index_array_formats 1 -#define GL_IUI_V2F_EXT 0x81AD -#define GL_IUI_V3F_EXT 0x81AE -#define GL_IUI_N3F_V2F_EXT 0x81AF -#define GL_IUI_N3F_V3F_EXT 0x81B0 -#define GL_T2F_IUI_V2F_EXT 0x81B1 -#define GL_T2F_IUI_V3F_EXT 0x81B2 -#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3 -#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4 -#endif /* GL_EXT_index_array_formats */ - -#ifndef GL_EXT_index_func -#define GL_EXT_index_func 1 -#define GL_INDEX_TEST_EXT 0x81B5 -#define GL_INDEX_TEST_FUNC_EXT 0x81B6 -#define GL_INDEX_TEST_REF_EXT 0x81B7 -typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glIndexFuncEXT (GLenum func, GLclampf ref); -#endif -#endif /* GL_EXT_index_func */ - -#ifndef GL_EXT_index_material -#define GL_EXT_index_material 1 -#define GL_INDEX_MATERIAL_EXT 0x81B8 -#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9 -#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA -typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glIndexMaterialEXT (GLenum face, GLenum mode); -#endif -#endif /* GL_EXT_index_material */ - -#ifndef GL_EXT_index_texture -#define GL_EXT_index_texture 1 -#endif /* GL_EXT_index_texture */ - -#ifndef GL_EXT_light_texture -#define GL_EXT_light_texture 1 -#define GL_FRAGMENT_MATERIAL_EXT 0x8349 -#define GL_FRAGMENT_NORMAL_EXT 0x834A -#define GL_FRAGMENT_COLOR_EXT 0x834C -#define GL_ATTENUATION_EXT 0x834D -#define GL_SHADOW_ATTENUATION_EXT 0x834E -#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F -#define GL_TEXTURE_LIGHT_EXT 0x8350 -#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 -#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352 -typedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode); -typedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC) (GLenum pname); -typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glApplyTextureEXT (GLenum mode); -GLAPI void APIENTRY glTextureLightEXT (GLenum pname); -GLAPI void APIENTRY glTextureMaterialEXT (GLenum face, GLenum mode); -#endif -#endif /* GL_EXT_light_texture */ - -#ifndef GL_EXT_misc_attribute -#define GL_EXT_misc_attribute 1 -#endif /* GL_EXT_misc_attribute */ - -#ifndef GL_EXT_multi_draw_arrays -#define GL_EXT_multi_draw_arrays 1 -typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid *const*indices, GLsizei primcount); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); -GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const GLvoid *const*indices, GLsizei primcount); -#endif -#endif /* GL_EXT_multi_draw_arrays */ - -#ifndef GL_EXT_multisample -#define GL_EXT_multisample 1 -#define GL_MULTISAMPLE_EXT 0x809D -#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F -#define GL_SAMPLE_MASK_EXT 0x80A0 -#define GL_1PASS_EXT 0x80A1 -#define GL_2PASS_0_EXT 0x80A2 -#define GL_2PASS_1_EXT 0x80A3 -#define GL_4PASS_0_EXT 0x80A4 -#define GL_4PASS_1_EXT 0x80A5 -#define GL_4PASS_2_EXT 0x80A6 -#define GL_4PASS_3_EXT 0x80A7 -#define GL_SAMPLE_BUFFERS_EXT 0x80A8 -#define GL_SAMPLES_EXT 0x80A9 -#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA -#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB -#define GL_SAMPLE_PATTERN_EXT 0x80AC -#define GL_MULTISAMPLE_BIT_EXT 0x20000000 -typedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert); -typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glSampleMaskEXT (GLclampf value, GLboolean invert); -GLAPI void APIENTRY glSamplePatternEXT (GLenum pattern); -#endif -#endif /* GL_EXT_multisample */ - -#ifndef GL_EXT_packed_depth_stencil -#define GL_EXT_packed_depth_stencil 1 -#define GL_DEPTH_STENCIL_EXT 0x84F9 -#define GL_UNSIGNED_INT_24_8_EXT 0x84FA -#define GL_DEPTH24_STENCIL8_EXT 0x88F0 -#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 -#endif /* GL_EXT_packed_depth_stencil */ - -#ifndef GL_EXT_packed_float -#define GL_EXT_packed_float 1 -#define GL_R11F_G11F_B10F_EXT 0x8C3A -#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B -#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C -#endif /* GL_EXT_packed_float */ - -#ifndef GL_EXT_packed_pixels -#define GL_EXT_packed_pixels 1 -#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 -#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 -#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 -#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 -#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 -#endif /* GL_EXT_packed_pixels */ - -#ifndef GL_EXT_paletted_texture -#define GL_EXT_paletted_texture 1 -#define GL_COLOR_INDEX1_EXT 0x80E2 -#define GL_COLOR_INDEX2_EXT 0x80E3 -#define GL_COLOR_INDEX4_EXT 0x80E4 -#define GL_COLOR_INDEX8_EXT 0x80E5 -#define GL_COLOR_INDEX12_EXT 0x80E6 -#define GL_COLOR_INDEX16_EXT 0x80E7 -#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED -typedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); -typedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *data); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glColorTableEXT (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); -GLAPI void APIENTRY glGetColorTableEXT (GLenum target, GLenum format, GLenum type, GLvoid *data); -GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum target, GLenum pname, GLfloat *params); -#endif -#endif /* GL_EXT_paletted_texture */ - -#ifndef GL_EXT_pixel_buffer_object -#define GL_EXT_pixel_buffer_object 1 -#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB -#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED -#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF -#endif /* GL_EXT_pixel_buffer_object */ - -#ifndef GL_EXT_pixel_transform -#define GL_EXT_pixel_transform 1 -#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 -#define GL_PIXEL_MAG_FILTER_EXT 0x8331 -#define GL_PIXEL_MIN_FILTER_EXT 0x8332 -#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 -#define GL_CUBIC_EXT 0x8334 -#define GL_AVERAGE_EXT 0x8335 -#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 -#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 -#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 -typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum target, GLenum pname, GLint param); -GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum target, GLenum pname, GLfloat param); -GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum target, GLenum pname, const GLint *params); -GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params); -GLAPI void APIENTRY glGetPixelTransformParameterivEXT (GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetPixelTransformParameterfvEXT (GLenum target, GLenum pname, GLfloat *params); -#endif -#endif /* GL_EXT_pixel_transform */ - -#ifndef GL_EXT_pixel_transform_color_table -#define GL_EXT_pixel_transform_color_table 1 -#endif /* GL_EXT_pixel_transform_color_table */ - -#ifndef GL_EXT_point_parameters -#define GL_EXT_point_parameters 1 -#define GL_POINT_SIZE_MIN_EXT 0x8126 -#define GL_POINT_SIZE_MAX_EXT 0x8127 -#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 -#define GL_DISTANCE_ATTENUATION_EXT 0x8129 -typedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPointParameterfEXT (GLenum pname, GLfloat param); -GLAPI void APIENTRY glPointParameterfvEXT (GLenum pname, const GLfloat *params); -#endif -#endif /* GL_EXT_point_parameters */ - -#ifndef GL_EXT_polygon_offset -#define GL_EXT_polygon_offset 1 -#define GL_POLYGON_OFFSET_EXT 0x8037 -#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 -#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 -typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat factor, GLfloat bias); -#endif -#endif /* GL_EXT_polygon_offset */ - -#ifndef GL_EXT_provoking_vertex -#define GL_EXT_provoking_vertex 1 -#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C -#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D -#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E -#define GL_PROVOKING_VERTEX_EXT 0x8E4F -typedef void (APIENTRYP PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProvokingVertexEXT (GLenum mode); -#endif -#endif /* GL_EXT_provoking_vertex */ - -#ifndef GL_EXT_rescale_normal -#define GL_EXT_rescale_normal 1 -#define GL_RESCALE_NORMAL_EXT 0x803A -#endif /* GL_EXT_rescale_normal */ - -#ifndef GL_EXT_secondary_color -#define GL_EXT_secondary_color 1 -#define GL_COLOR_SUM_EXT 0x8458 -#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 -#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A -#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B -#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C -#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D -#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte red, GLbyte green, GLbyte blue); -GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *v); -GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble red, GLdouble green, GLdouble blue); -GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *v); -GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat red, GLfloat green, GLfloat blue); -GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *v); -GLAPI void APIENTRY glSecondaryColor3iEXT (GLint red, GLint green, GLint blue); -GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *v); -GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort red, GLshort green, GLshort blue); -GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *v); -GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte red, GLubyte green, GLubyte blue); -GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *v); -GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint red, GLuint green, GLuint blue); -GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *v); -GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort red, GLushort green, GLushort blue); -GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *v); -GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -#endif -#endif /* GL_EXT_secondary_color */ - -#ifndef GL_EXT_separate_shader_objects -#define GL_EXT_separate_shader_objects 1 -#define GL_ACTIVE_PROGRAM_EXT 0x8B8D -typedef void (APIENTRYP PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program); -typedef void (APIENTRYP PFNGLACTIVEPROGRAMEXTPROC) (GLuint program); -typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const GLchar *string); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glUseShaderProgramEXT (GLenum type, GLuint program); -GLAPI void APIENTRY glActiveProgramEXT (GLuint program); -GLAPI GLuint APIENTRY glCreateShaderProgramEXT (GLenum type, const GLchar *string); -#endif -#endif /* GL_EXT_separate_shader_objects */ - -#ifndef GL_EXT_separate_specular_color -#define GL_EXT_separate_specular_color 1 -#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 -#define GL_SINGLE_COLOR_EXT 0x81F9 -#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA -#endif /* GL_EXT_separate_specular_color */ - -#ifndef GL_EXT_shader_image_load_store -#define GL_EXT_shader_image_load_store 1 -#define GL_MAX_IMAGE_UNITS_EXT 0x8F38 -#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39 -#define GL_IMAGE_BINDING_NAME_EXT 0x8F3A -#define GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B -#define GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C -#define GL_IMAGE_BINDING_LAYER_EXT 0x8F3D -#define GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E -#define GL_IMAGE_1D_EXT 0x904C -#define GL_IMAGE_2D_EXT 0x904D -#define GL_IMAGE_3D_EXT 0x904E -#define GL_IMAGE_2D_RECT_EXT 0x904F -#define GL_IMAGE_CUBE_EXT 0x9050 -#define GL_IMAGE_BUFFER_EXT 0x9051 -#define GL_IMAGE_1D_ARRAY_EXT 0x9052 -#define GL_IMAGE_2D_ARRAY_EXT 0x9053 -#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 -#define GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055 -#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056 -#define GL_INT_IMAGE_1D_EXT 0x9057 -#define GL_INT_IMAGE_2D_EXT 0x9058 -#define GL_INT_IMAGE_3D_EXT 0x9059 -#define GL_INT_IMAGE_2D_RECT_EXT 0x905A -#define GL_INT_IMAGE_CUBE_EXT 0x905B -#define GL_INT_IMAGE_BUFFER_EXT 0x905C -#define GL_INT_IMAGE_1D_ARRAY_EXT 0x905D -#define GL_INT_IMAGE_2D_ARRAY_EXT 0x905E -#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F -#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060 -#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061 -#define GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062 -#define GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063 -#define GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064 -#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065 -#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066 -#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 -#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068 -#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069 -#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A -#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B -#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C -#define GL_MAX_IMAGE_SAMPLES_EXT 0x906D -#define GL_IMAGE_BINDING_FORMAT_EXT 0x906E -#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001 -#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002 -#define GL_UNIFORM_BARRIER_BIT_EXT 0x00000004 -#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008 -#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020 -#define GL_COMMAND_BARRIER_BIT_EXT 0x00000040 -#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080 -#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100 -#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200 -#define GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400 -#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800 -#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000 -#define GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF -typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREEXTPROC) (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format); -typedef void (APIENTRYP PFNGLMEMORYBARRIEREXTPROC) (GLbitfield barriers); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBindImageTextureEXT (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format); -GLAPI void APIENTRY glMemoryBarrierEXT (GLbitfield barriers); -#endif -#endif /* GL_EXT_shader_image_load_store */ - -#ifndef GL_EXT_shadow_funcs -#define GL_EXT_shadow_funcs 1 -#endif /* GL_EXT_shadow_funcs */ - -#ifndef GL_EXT_shared_texture_palette -#define GL_EXT_shared_texture_palette 1 -#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB -#endif /* GL_EXT_shared_texture_palette */ - -#ifndef GL_EXT_stencil_clear_tag -#define GL_EXT_stencil_clear_tag 1 -#define GL_STENCIL_TAG_BITS_EXT 0x88F2 -#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3 -typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GLuint stencilClearTag); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glStencilClearTagEXT (GLsizei stencilTagBits, GLuint stencilClearTag); -#endif -#endif /* GL_EXT_stencil_clear_tag */ - -#ifndef GL_EXT_stencil_two_side -#define GL_EXT_stencil_two_side 1 -#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 -#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 -typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum face); -#endif -#endif /* GL_EXT_stencil_two_side */ - -#ifndef GL_EXT_stencil_wrap -#define GL_EXT_stencil_wrap 1 -#define GL_INCR_WRAP_EXT 0x8507 -#define GL_DECR_WRAP_EXT 0x8508 -#endif /* GL_EXT_stencil_wrap */ - -#ifndef GL_EXT_subtexture -#define GL_EXT_subtexture 1 -typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void APIENTRY glTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -#endif -#endif /* GL_EXT_subtexture */ - -#ifndef GL_EXT_texture -#define GL_EXT_texture 1 -#define GL_ALPHA4_EXT 0x803B -#define GL_ALPHA8_EXT 0x803C -#define GL_ALPHA12_EXT 0x803D -#define GL_ALPHA16_EXT 0x803E -#define GL_LUMINANCE4_EXT 0x803F -#define GL_LUMINANCE8_EXT 0x8040 -#define GL_LUMINANCE12_EXT 0x8041 -#define GL_LUMINANCE16_EXT 0x8042 -#define GL_LUMINANCE4_ALPHA4_EXT 0x8043 -#define GL_LUMINANCE6_ALPHA2_EXT 0x8044 -#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 -#define GL_LUMINANCE12_ALPHA4_EXT 0x8046 -#define GL_LUMINANCE12_ALPHA12_EXT 0x8047 -#define GL_LUMINANCE16_ALPHA16_EXT 0x8048 -#define GL_INTENSITY_EXT 0x8049 -#define GL_INTENSITY4_EXT 0x804A -#define GL_INTENSITY8_EXT 0x804B -#define GL_INTENSITY12_EXT 0x804C -#define GL_INTENSITY16_EXT 0x804D -#define GL_RGB2_EXT 0x804E -#define GL_RGB4_EXT 0x804F -#define GL_RGB5_EXT 0x8050 -#define GL_RGB8_EXT 0x8051 -#define GL_RGB10_EXT 0x8052 -#define GL_RGB12_EXT 0x8053 -#define GL_RGB16_EXT 0x8054 -#define GL_RGBA2_EXT 0x8055 -#define GL_RGBA4_EXT 0x8056 -#define GL_RGB5_A1_EXT 0x8057 -#define GL_RGBA8_EXT 0x8058 -#define GL_RGB10_A2_EXT 0x8059 -#define GL_RGBA12_EXT 0x805A -#define GL_RGBA16_EXT 0x805B -#define GL_TEXTURE_RED_SIZE_EXT 0x805C -#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D -#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E -#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F -#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 -#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 -#define GL_REPLACE_EXT 0x8062 -#define GL_PROXY_TEXTURE_1D_EXT 0x8063 -#define GL_PROXY_TEXTURE_2D_EXT 0x8064 -#define GL_TEXTURE_TOO_LARGE_EXT 0x8065 -#endif /* GL_EXT_texture */ - -#ifndef GL_EXT_texture3D -#define GL_EXT_texture3D 1 -#define GL_PACK_SKIP_IMAGES_EXT 0x806B -#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C -#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D -#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E -#define GL_TEXTURE_3D_EXT 0x806F -#define GL_PROXY_TEXTURE_3D_EXT 0x8070 -#define GL_TEXTURE_DEPTH_EXT 0x8071 -#define GL_TEXTURE_WRAP_R_EXT 0x8072 -#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 -typedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTexImage3DEXT (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void APIENTRY glTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); -#endif -#endif /* GL_EXT_texture3D */ - -#ifndef GL_EXT_texture_array -#define GL_EXT_texture_array 1 -#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 -#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 -#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A -#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B -#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C -#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D -#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF -#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E -#endif /* GL_EXT_texture_array */ - -#ifndef GL_EXT_texture_buffer_object -#define GL_EXT_texture_buffer_object 1 -#define GL_TEXTURE_BUFFER_EXT 0x8C2A -#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B -#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C -#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D -#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E -typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer); -#endif -#endif /* GL_EXT_texture_buffer_object */ - -#ifndef GL_EXT_texture_compression_latc -#define GL_EXT_texture_compression_latc 1 -#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70 -#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71 -#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72 -#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73 -#endif /* GL_EXT_texture_compression_latc */ - -#ifndef GL_EXT_texture_compression_rgtc -#define GL_EXT_texture_compression_rgtc 1 -#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB -#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC -#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD -#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE -#endif /* GL_EXT_texture_compression_rgtc */ - -#ifndef GL_EXT_texture_compression_s3tc -#define GL_EXT_texture_compression_s3tc 1 -#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 -#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 -#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 -#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 -#endif /* GL_EXT_texture_compression_s3tc */ - -#ifndef GL_EXT_texture_cube_map -#define GL_EXT_texture_cube_map 1 -#define GL_NORMAL_MAP_EXT 0x8511 -#define GL_REFLECTION_MAP_EXT 0x8512 -#define GL_TEXTURE_CUBE_MAP_EXT 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C -#endif /* GL_EXT_texture_cube_map */ - -#ifndef GL_EXT_texture_env_add -#define GL_EXT_texture_env_add 1 -#endif /* GL_EXT_texture_env_add */ - -#ifndef GL_EXT_texture_env_combine -#define GL_EXT_texture_env_combine 1 -#define GL_COMBINE_EXT 0x8570 -#define GL_COMBINE_RGB_EXT 0x8571 -#define GL_COMBINE_ALPHA_EXT 0x8572 -#define GL_RGB_SCALE_EXT 0x8573 -#define GL_ADD_SIGNED_EXT 0x8574 -#define GL_INTERPOLATE_EXT 0x8575 -#define GL_CONSTANT_EXT 0x8576 -#define GL_PRIMARY_COLOR_EXT 0x8577 -#define GL_PREVIOUS_EXT 0x8578 -#define GL_SOURCE0_RGB_EXT 0x8580 -#define GL_SOURCE1_RGB_EXT 0x8581 -#define GL_SOURCE2_RGB_EXT 0x8582 -#define GL_SOURCE0_ALPHA_EXT 0x8588 -#define GL_SOURCE1_ALPHA_EXT 0x8589 -#define GL_SOURCE2_ALPHA_EXT 0x858A -#define GL_OPERAND0_RGB_EXT 0x8590 -#define GL_OPERAND1_RGB_EXT 0x8591 -#define GL_OPERAND2_RGB_EXT 0x8592 -#define GL_OPERAND0_ALPHA_EXT 0x8598 -#define GL_OPERAND1_ALPHA_EXT 0x8599 -#define GL_OPERAND2_ALPHA_EXT 0x859A -#endif /* GL_EXT_texture_env_combine */ - -#ifndef GL_EXT_texture_env_dot3 -#define GL_EXT_texture_env_dot3 1 -#define GL_DOT3_RGB_EXT 0x8740 -#define GL_DOT3_RGBA_EXT 0x8741 -#endif /* GL_EXT_texture_env_dot3 */ - -#ifndef GL_EXT_texture_filter_anisotropic -#define GL_EXT_texture_filter_anisotropic 1 -#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE -#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF -#endif /* GL_EXT_texture_filter_anisotropic */ - -#ifndef GL_EXT_texture_integer -#define GL_EXT_texture_integer 1 -#define GL_RGBA32UI_EXT 0x8D70 -#define GL_RGB32UI_EXT 0x8D71 -#define GL_ALPHA32UI_EXT 0x8D72 -#define GL_INTENSITY32UI_EXT 0x8D73 -#define GL_LUMINANCE32UI_EXT 0x8D74 -#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75 -#define GL_RGBA16UI_EXT 0x8D76 -#define GL_RGB16UI_EXT 0x8D77 -#define GL_ALPHA16UI_EXT 0x8D78 -#define GL_INTENSITY16UI_EXT 0x8D79 -#define GL_LUMINANCE16UI_EXT 0x8D7A -#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B -#define GL_RGBA8UI_EXT 0x8D7C -#define GL_RGB8UI_EXT 0x8D7D -#define GL_ALPHA8UI_EXT 0x8D7E -#define GL_INTENSITY8UI_EXT 0x8D7F -#define GL_LUMINANCE8UI_EXT 0x8D80 -#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81 -#define GL_RGBA32I_EXT 0x8D82 -#define GL_RGB32I_EXT 0x8D83 -#define GL_ALPHA32I_EXT 0x8D84 -#define GL_INTENSITY32I_EXT 0x8D85 -#define GL_LUMINANCE32I_EXT 0x8D86 -#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87 -#define GL_RGBA16I_EXT 0x8D88 -#define GL_RGB16I_EXT 0x8D89 -#define GL_ALPHA16I_EXT 0x8D8A -#define GL_INTENSITY16I_EXT 0x8D8B -#define GL_LUMINANCE16I_EXT 0x8D8C -#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D -#define GL_RGBA8I_EXT 0x8D8E -#define GL_RGB8I_EXT 0x8D8F -#define GL_ALPHA8I_EXT 0x8D90 -#define GL_INTENSITY8I_EXT 0x8D91 -#define GL_LUMINANCE8I_EXT 0x8D92 -#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93 -#define GL_RED_INTEGER_EXT 0x8D94 -#define GL_GREEN_INTEGER_EXT 0x8D95 -#define GL_BLUE_INTEGER_EXT 0x8D96 -#define GL_ALPHA_INTEGER_EXT 0x8D97 -#define GL_RGB_INTEGER_EXT 0x8D98 -#define GL_RGBA_INTEGER_EXT 0x8D99 -#define GL_BGR_INTEGER_EXT 0x8D9A -#define GL_BGRA_INTEGER_EXT 0x8D9B -#define GL_LUMINANCE_INTEGER_EXT 0x8D9C -#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D -#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E -typedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); -typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); -typedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha); -typedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params); -GLAPI void APIENTRY glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params); -GLAPI void APIENTRY glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params); -GLAPI void APIENTRY glClearColorIiEXT (GLint red, GLint green, GLint blue, GLint alpha); -GLAPI void APIENTRY glClearColorIuiEXT (GLuint red, GLuint green, GLuint blue, GLuint alpha); -#endif -#endif /* GL_EXT_texture_integer */ - -#ifndef GL_EXT_texture_lod_bias -#define GL_EXT_texture_lod_bias 1 -#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD -#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 -#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 -#endif /* GL_EXT_texture_lod_bias */ - -#ifndef GL_EXT_texture_mirror_clamp -#define GL_EXT_texture_mirror_clamp 1 -#define GL_MIRROR_CLAMP_EXT 0x8742 -#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 -#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 -#endif /* GL_EXT_texture_mirror_clamp */ - -#ifndef GL_EXT_texture_object -#define GL_EXT_texture_object 1 -#define GL_TEXTURE_PRIORITY_EXT 0x8066 -#define GL_TEXTURE_RESIDENT_EXT 0x8067 -#define GL_TEXTURE_1D_BINDING_EXT 0x8068 -#define GL_TEXTURE_2D_BINDING_EXT 0x8069 -#define GL_TEXTURE_3D_BINDING_EXT 0x806A -typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences); -typedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture); -typedef void (APIENTRYP PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures); -typedef void (APIENTRYP PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures); -typedef GLboolean (APIENTRYP PFNGLISTEXTUREEXTPROC) (GLuint texture); -typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei n, const GLuint *textures, GLboolean *residences); -GLAPI void APIENTRY glBindTextureEXT (GLenum target, GLuint texture); -GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei n, const GLuint *textures); -GLAPI void APIENTRY glGenTexturesEXT (GLsizei n, GLuint *textures); -GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint texture); -GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei n, const GLuint *textures, const GLclampf *priorities); -#endif -#endif /* GL_EXT_texture_object */ - -#ifndef GL_EXT_texture_perturb_normal -#define GL_EXT_texture_perturb_normal 1 -#define GL_PERTURB_EXT 0x85AE -#define GL_TEXTURE_NORMAL_EXT 0x85AF -typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTextureNormalEXT (GLenum mode); -#endif -#endif /* GL_EXT_texture_perturb_normal */ - -#ifndef GL_EXT_texture_sRGB -#define GL_EXT_texture_sRGB 1 -#define GL_SRGB_EXT 0x8C40 -#define GL_SRGB8_EXT 0x8C41 -#define GL_SRGB_ALPHA_EXT 0x8C42 -#define GL_SRGB8_ALPHA8_EXT 0x8C43 -#define GL_SLUMINANCE_ALPHA_EXT 0x8C44 -#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 -#define GL_SLUMINANCE_EXT 0x8C46 -#define GL_SLUMINANCE8_EXT 0x8C47 -#define GL_COMPRESSED_SRGB_EXT 0x8C48 -#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 -#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A -#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B -#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F -#endif /* GL_EXT_texture_sRGB */ - -#ifndef GL_EXT_texture_sRGB_decode -#define GL_EXT_texture_sRGB_decode 1 -#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 -#define GL_DECODE_EXT 0x8A49 -#define GL_SKIP_DECODE_EXT 0x8A4A -#endif /* GL_EXT_texture_sRGB_decode */ - -#ifndef GL_EXT_texture_shared_exponent -#define GL_EXT_texture_shared_exponent 1 -#define GL_RGB9_E5_EXT 0x8C3D -#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E -#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F -#endif /* GL_EXT_texture_shared_exponent */ - -#ifndef GL_EXT_texture_snorm -#define GL_EXT_texture_snorm 1 -#define GL_ALPHA_SNORM 0x9010 -#define GL_LUMINANCE_SNORM 0x9011 -#define GL_LUMINANCE_ALPHA_SNORM 0x9012 -#define GL_INTENSITY_SNORM 0x9013 -#define GL_ALPHA8_SNORM 0x9014 -#define GL_LUMINANCE8_SNORM 0x9015 -#define GL_LUMINANCE8_ALPHA8_SNORM 0x9016 -#define GL_INTENSITY8_SNORM 0x9017 -#define GL_ALPHA16_SNORM 0x9018 -#define GL_LUMINANCE16_SNORM 0x9019 -#define GL_LUMINANCE16_ALPHA16_SNORM 0x901A -#define GL_INTENSITY16_SNORM 0x901B -#define GL_RED_SNORM 0x8F90 -#define GL_RG_SNORM 0x8F91 -#define GL_RGB_SNORM 0x8F92 -#define GL_RGBA_SNORM 0x8F93 -#endif /* GL_EXT_texture_snorm */ - -#ifndef GL_EXT_texture_swizzle -#define GL_EXT_texture_swizzle 1 -#define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42 -#define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43 -#define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44 -#define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45 -#define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46 -#endif /* GL_EXT_texture_swizzle */ - -#ifndef GL_EXT_timer_query -#define GL_EXT_timer_query 1 -#define GL_TIME_ELAPSED_EXT 0x88BF -typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params); -typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params); -GLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params); -#endif -#endif /* GL_EXT_timer_query */ - -#ifndef GL_EXT_transform_feedback -#define GL_EXT_transform_feedback 1 -#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E -#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84 -#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85 -#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F -#define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C -#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D -#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 -#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88 -#define GL_RASTERIZER_DISCARD_EXT 0x8C89 -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80 -#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83 -#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F -#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76 -typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode); -typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void); -typedef void (APIENTRYP PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); -typedef void (APIENTRYP PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer); -typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); -typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBeginTransformFeedbackEXT (GLenum primitiveMode); -GLAPI void APIENTRY glEndTransformFeedbackEXT (void); -GLAPI void APIENTRY glBindBufferRangeEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -GLAPI void APIENTRY glBindBufferOffsetEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset); -GLAPI void APIENTRY glBindBufferBaseEXT (GLenum target, GLuint index, GLuint buffer); -GLAPI void APIENTRY glTransformFeedbackVaryingsEXT (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); -GLAPI void APIENTRY glGetTransformFeedbackVaryingEXT (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); -#endif -#endif /* GL_EXT_transform_feedback */ - -#ifndef GL_EXT_vertex_array -#define GL_EXT_vertex_array 1 -#define GL_VERTEX_ARRAY_EXT 0x8074 -#define GL_NORMAL_ARRAY_EXT 0x8075 -#define GL_COLOR_ARRAY_EXT 0x8076 -#define GL_INDEX_ARRAY_EXT 0x8077 -#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 -#define GL_EDGE_FLAG_ARRAY_EXT 0x8079 -#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A -#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B -#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C -#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D -#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E -#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F -#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 -#define GL_COLOR_ARRAY_SIZE_EXT 0x8081 -#define GL_COLOR_ARRAY_TYPE_EXT 0x8082 -#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 -#define GL_COLOR_ARRAY_COUNT_EXT 0x8084 -#define GL_INDEX_ARRAY_TYPE_EXT 0x8085 -#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 -#define GL_INDEX_ARRAY_COUNT_EXT 0x8087 -#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 -#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 -#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A -#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B -#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C -#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D -#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E -#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F -#define GL_COLOR_ARRAY_POINTER_EXT 0x8090 -#define GL_INDEX_ARRAY_POINTER_EXT 0x8091 -#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 -#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 -typedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC) (GLint i); -typedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count); -typedef void (APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer); -typedef void (APIENTRYP PFNGLGETPOINTERVEXTPROC) (GLenum pname, GLvoid **params); -typedef void (APIENTRYP PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glArrayElementEXT (GLint i); -GLAPI void APIENTRY glColorPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -GLAPI void APIENTRY glDrawArraysEXT (GLenum mode, GLint first, GLsizei count); -GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei stride, GLsizei count, const GLboolean *pointer); -GLAPI void APIENTRY glGetPointervEXT (GLenum pname, GLvoid **params); -GLAPI void APIENTRY glIndexPointerEXT (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -GLAPI void APIENTRY glNormalPointerEXT (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -GLAPI void APIENTRY glTexCoordPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -GLAPI void APIENTRY glVertexPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -#endif -#endif /* GL_EXT_vertex_array */ - -#ifndef GL_EXT_vertex_array_bgra -#define GL_EXT_vertex_array_bgra 1 -#endif /* GL_EXT_vertex_array_bgra */ - -#ifndef GL_EXT_vertex_attrib_64bit -#define GL_EXT_vertex_attrib_64bit 1 -#define GL_DOUBLE_VEC2_EXT 0x8FFC -#define GL_DOUBLE_VEC3_EXT 0x8FFD -#define GL_DOUBLE_VEC4_EXT 0x8FFE -#define GL_DOUBLE_MAT2_EXT 0x8F46 -#define GL_DOUBLE_MAT3_EXT 0x8F47 -#define GL_DOUBLE_MAT4_EXT 0x8F48 -#define GL_DOUBLE_MAT2x3_EXT 0x8F49 -#define GL_DOUBLE_MAT2x4_EXT 0x8F4A -#define GL_DOUBLE_MAT3x2_EXT 0x8F4B -#define GL_DOUBLE_MAT3x4_EXT 0x8F4C -#define GL_DOUBLE_MAT4x2_EXT 0x8F4D -#define GL_DOUBLE_MAT4x3_EXT 0x8F4E -typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DEXTPROC) (GLuint index, GLdouble x); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DEXTPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVEXTPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVEXTPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVEXTPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVEXTPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVEXTPROC) (GLuint index, GLenum pname, GLdouble *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexAttribL1dEXT (GLuint index, GLdouble x); -GLAPI void APIENTRY glVertexAttribL2dEXT (GLuint index, GLdouble x, GLdouble y); -GLAPI void APIENTRY glVertexAttribL3dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z); -GLAPI void APIENTRY glVertexAttribL4dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI void APIENTRY glVertexAttribL1dvEXT (GLuint index, const GLdouble *v); -GLAPI void APIENTRY glVertexAttribL2dvEXT (GLuint index, const GLdouble *v); -GLAPI void APIENTRY glVertexAttribL3dvEXT (GLuint index, const GLdouble *v); -GLAPI void APIENTRY glVertexAttribL4dvEXT (GLuint index, const GLdouble *v); -GLAPI void APIENTRY glVertexAttribLPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void APIENTRY glGetVertexAttribLdvEXT (GLuint index, GLenum pname, GLdouble *params); -#endif -#endif /* GL_EXT_vertex_attrib_64bit */ - -#ifndef GL_EXT_vertex_shader -#define GL_EXT_vertex_shader 1 -#define GL_VERTEX_SHADER_EXT 0x8780 -#define GL_VERTEX_SHADER_BINDING_EXT 0x8781 -#define GL_OP_INDEX_EXT 0x8782 -#define GL_OP_NEGATE_EXT 0x8783 -#define GL_OP_DOT3_EXT 0x8784 -#define GL_OP_DOT4_EXT 0x8785 -#define GL_OP_MUL_EXT 0x8786 -#define GL_OP_ADD_EXT 0x8787 -#define GL_OP_MADD_EXT 0x8788 -#define GL_OP_FRAC_EXT 0x8789 -#define GL_OP_MAX_EXT 0x878A -#define GL_OP_MIN_EXT 0x878B -#define GL_OP_SET_GE_EXT 0x878C -#define GL_OP_SET_LT_EXT 0x878D -#define GL_OP_CLAMP_EXT 0x878E -#define GL_OP_FLOOR_EXT 0x878F -#define GL_OP_ROUND_EXT 0x8790 -#define GL_OP_EXP_BASE_2_EXT 0x8791 -#define GL_OP_LOG_BASE_2_EXT 0x8792 -#define GL_OP_POWER_EXT 0x8793 -#define GL_OP_RECIP_EXT 0x8794 -#define GL_OP_RECIP_SQRT_EXT 0x8795 -#define GL_OP_SUB_EXT 0x8796 -#define GL_OP_CROSS_PRODUCT_EXT 0x8797 -#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 -#define GL_OP_MOV_EXT 0x8799 -#define GL_OUTPUT_VERTEX_EXT 0x879A -#define GL_OUTPUT_COLOR0_EXT 0x879B -#define GL_OUTPUT_COLOR1_EXT 0x879C -#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D -#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E -#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F -#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 -#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 -#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 -#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 -#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 -#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 -#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 -#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 -#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 -#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 -#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA -#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB -#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC -#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD -#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE -#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF -#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 -#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 -#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 -#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 -#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 -#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 -#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 -#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 -#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 -#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 -#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA -#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB -#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC -#define GL_OUTPUT_FOG_EXT 0x87BD -#define GL_SCALAR_EXT 0x87BE -#define GL_VECTOR_EXT 0x87BF -#define GL_MATRIX_EXT 0x87C0 -#define GL_VARIANT_EXT 0x87C1 -#define GL_INVARIANT_EXT 0x87C2 -#define GL_LOCAL_CONSTANT_EXT 0x87C3 -#define GL_LOCAL_EXT 0x87C4 -#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 -#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 -#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 -#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 -#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE -#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF -#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 -#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 -#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 -#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 -#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 -#define GL_X_EXT 0x87D5 -#define GL_Y_EXT 0x87D6 -#define GL_Z_EXT 0x87D7 -#define GL_W_EXT 0x87D8 -#define GL_NEGATIVE_X_EXT 0x87D9 -#define GL_NEGATIVE_Y_EXT 0x87DA -#define GL_NEGATIVE_Z_EXT 0x87DB -#define GL_NEGATIVE_W_EXT 0x87DC -#define GL_ZERO_EXT 0x87DD -#define GL_ONE_EXT 0x87DE -#define GL_NEGATIVE_ONE_EXT 0x87DF -#define GL_NORMALIZED_RANGE_EXT 0x87E0 -#define GL_FULL_RANGE_EXT 0x87E1 -#define GL_CURRENT_VERTEX_EXT 0x87E2 -#define GL_MVP_MATRIX_EXT 0x87E3 -#define GL_VARIANT_VALUE_EXT 0x87E4 -#define GL_VARIANT_DATATYPE_EXT 0x87E5 -#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 -#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 -#define GL_VARIANT_ARRAY_EXT 0x87E8 -#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 -#define GL_INVARIANT_VALUE_EXT 0x87EA -#define GL_INVARIANT_DATATYPE_EXT 0x87EB -#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC -#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED -typedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC) (void); -typedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC) (void); -typedef void (APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id); -typedef GLuint (APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range); -typedef void (APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id); -typedef void (APIENTRYP PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1); -typedef void (APIENTRYP PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2); -typedef void (APIENTRYP PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); -typedef void (APIENTRYP PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); -typedef void (APIENTRYP PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); -typedef void (APIENTRYP PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); -typedef void (APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); -typedef GLuint (APIENTRYP PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components); -typedef void (APIENTRYP PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const GLvoid *addr); -typedef void (APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const GLvoid *addr); -typedef void (APIENTRYP PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte *addr); -typedef void (APIENTRYP PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort *addr); -typedef void (APIENTRYP PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint *addr); -typedef void (APIENTRYP PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat *addr); -typedef void (APIENTRYP PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble *addr); -typedef void (APIENTRYP PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte *addr); -typedef void (APIENTRYP PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort *addr); -typedef void (APIENTRYP PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint *addr); -typedef void (APIENTRYP PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const GLvoid *addr); -typedef void (APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); -typedef void (APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); -typedef GLuint (APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value); -typedef GLuint (APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value); -typedef GLuint (APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value); -typedef GLuint (APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value); -typedef GLuint (APIENTRYP PFNGLBINDPARAMETEREXTPROC) (GLenum value); -typedef GLboolean (APIENTRYP PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap); -typedef void (APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); -typedef void (APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); -typedef void (APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); -typedef void (APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, GLvoid **data); -typedef void (APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); -typedef void (APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); -typedef void (APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); -typedef void (APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); -typedef void (APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); -typedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBeginVertexShaderEXT (void); -GLAPI void APIENTRY glEndVertexShaderEXT (void); -GLAPI void APIENTRY glBindVertexShaderEXT (GLuint id); -GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint range); -GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint id); -GLAPI void APIENTRY glShaderOp1EXT (GLenum op, GLuint res, GLuint arg1); -GLAPI void APIENTRY glShaderOp2EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2); -GLAPI void APIENTRY glShaderOp3EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); -GLAPI void APIENTRY glSwizzleEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); -GLAPI void APIENTRY glWriteMaskEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); -GLAPI void APIENTRY glInsertComponentEXT (GLuint res, GLuint src, GLuint num); -GLAPI void APIENTRY glExtractComponentEXT (GLuint res, GLuint src, GLuint num); -GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum datatype, GLenum storagetype, GLenum range, GLuint components); -GLAPI void APIENTRY glSetInvariantEXT (GLuint id, GLenum type, const GLvoid *addr); -GLAPI void APIENTRY glSetLocalConstantEXT (GLuint id, GLenum type, const GLvoid *addr); -GLAPI void APIENTRY glVariantbvEXT (GLuint id, const GLbyte *addr); -GLAPI void APIENTRY glVariantsvEXT (GLuint id, const GLshort *addr); -GLAPI void APIENTRY glVariantivEXT (GLuint id, const GLint *addr); -GLAPI void APIENTRY glVariantfvEXT (GLuint id, const GLfloat *addr); -GLAPI void APIENTRY glVariantdvEXT (GLuint id, const GLdouble *addr); -GLAPI void APIENTRY glVariantubvEXT (GLuint id, const GLubyte *addr); -GLAPI void APIENTRY glVariantusvEXT (GLuint id, const GLushort *addr); -GLAPI void APIENTRY glVariantuivEXT (GLuint id, const GLuint *addr); -GLAPI void APIENTRY glVariantPointerEXT (GLuint id, GLenum type, GLuint stride, const GLvoid *addr); -GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint id); -GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint id); -GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum light, GLenum value); -GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum face, GLenum value); -GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum unit, GLenum coord, GLenum value); -GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum unit, GLenum value); -GLAPI GLuint APIENTRY glBindParameterEXT (GLenum value); -GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint id, GLenum cap); -GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data); -GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint id, GLenum value, GLint *data); -GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint id, GLenum value, GLfloat *data); -GLAPI void APIENTRY glGetVariantPointervEXT (GLuint id, GLenum value, GLvoid **data); -GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data); -GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint id, GLenum value, GLint *data); -GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint id, GLenum value, GLfloat *data); -GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint id, GLenum value, GLboolean *data); -GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint id, GLenum value, GLint *data); -GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint id, GLenum value, GLfloat *data); -#endif -#endif /* GL_EXT_vertex_shader */ - -#ifndef GL_EXT_vertex_weighting -#define GL_EXT_vertex_weighting 1 -#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3 -#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 -#define GL_MODELVIEW0_MATRIX_EXT 0x0BA6 -#define GL_MODELVIEW1_MATRIX_EXT 0x8506 -#define GL_VERTEX_WEIGHTING_EXT 0x8509 -#define GL_MODELVIEW0_EXT 0x1700 -#define GL_MODELVIEW1_EXT 0x850A -#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B -#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C -#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D -#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E -#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F -#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 -typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight); -typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight); -typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexWeightfEXT (GLfloat weight); -GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *weight); -GLAPI void APIENTRY glVertexWeightPointerEXT (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -#endif -#endif /* GL_EXT_vertex_weighting */ - -#ifndef GL_EXT_x11_sync_object -#define GL_EXT_x11_sync_object 1 -#define GL_SYNC_X11_FENCE_EXT 0x90E1 -typedef GLsync (APIENTRYP PFNGLIMPORTSYNCEXTPROC) (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI GLsync APIENTRY glImportSyncEXT (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); -#endif -#endif /* GL_EXT_x11_sync_object */ - -#ifndef GL_GREMEDY_frame_terminator -#define GL_GREMEDY_frame_terminator 1 -typedef void (APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC) (void); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFrameTerminatorGREMEDY (void); -#endif -#endif /* GL_GREMEDY_frame_terminator */ - -#ifndef GL_GREMEDY_string_marker -#define GL_GREMEDY_string_marker 1 -typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const GLvoid *string); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glStringMarkerGREMEDY (GLsizei len, const GLvoid *string); -#endif -#endif /* GL_GREMEDY_string_marker */ - -#ifndef GL_HP_convolution_border_modes -#define GL_HP_convolution_border_modes 1 -#define GL_IGNORE_BORDER_HP 0x8150 -#define GL_CONSTANT_BORDER_HP 0x8151 -#define GL_REPLICATE_BORDER_HP 0x8153 -#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154 -#endif /* GL_HP_convolution_border_modes */ - -#ifndef GL_HP_image_transform -#define GL_HP_image_transform 1 -#define GL_IMAGE_SCALE_X_HP 0x8155 -#define GL_IMAGE_SCALE_Y_HP 0x8156 -#define GL_IMAGE_TRANSLATE_X_HP 0x8157 -#define GL_IMAGE_TRANSLATE_Y_HP 0x8158 -#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159 -#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A -#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B -#define GL_IMAGE_MAG_FILTER_HP 0x815C -#define GL_IMAGE_MIN_FILTER_HP 0x815D -#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E -#define GL_CUBIC_HP 0x815F -#define GL_AVERAGE_HP 0x8160 -#define GL_IMAGE_TRANSFORM_2D_HP 0x8161 -#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162 -#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163 -typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glImageTransformParameteriHP (GLenum target, GLenum pname, GLint param); -GLAPI void APIENTRY glImageTransformParameterfHP (GLenum target, GLenum pname, GLfloat param); -GLAPI void APIENTRY glImageTransformParameterivHP (GLenum target, GLenum pname, const GLint *params); -GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum target, GLenum pname, const GLfloat *params); -GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum target, GLenum pname, GLfloat *params); -#endif -#endif /* GL_HP_image_transform */ - -#ifndef GL_HP_occlusion_test -#define GL_HP_occlusion_test 1 -#define GL_OCCLUSION_TEST_HP 0x8165 -#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 -#endif /* GL_HP_occlusion_test */ - -#ifndef GL_HP_texture_lighting -#define GL_HP_texture_lighting 1 -#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167 -#define GL_TEXTURE_POST_SPECULAR_HP 0x8168 -#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169 -#endif /* GL_HP_texture_lighting */ - -#ifndef GL_IBM_cull_vertex -#define GL_IBM_cull_vertex 1 -#define GL_CULL_VERTEX_IBM 103050 -#endif /* GL_IBM_cull_vertex */ - -#ifndef GL_IBM_multimode_draw_arrays -#define GL_IBM_multimode_draw_arrays 1 -typedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); -typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid *const*indices, GLsizei primcount, GLint modestride); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glMultiModeDrawArraysIBM (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); -GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid *const*indices, GLsizei primcount, GLint modestride); -#endif -#endif /* GL_IBM_multimode_draw_arrays */ - -#ifndef GL_IBM_rasterpos_clip -#define GL_IBM_rasterpos_clip 1 -#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262 -#endif /* GL_IBM_rasterpos_clip */ - -#ifndef GL_IBM_static_data -#define GL_IBM_static_data 1 -#define GL_ALL_STATIC_DATA_IBM 103060 -#define GL_STATIC_VERTEX_ARRAY_IBM 103061 -typedef void (APIENTRYP PFNGLFLUSHSTATICDATAIBMPROC) (GLenum target); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFlushStaticDataIBM (GLenum target); -#endif -#endif /* GL_IBM_static_data */ - -#ifndef GL_IBM_texture_mirrored_repeat -#define GL_IBM_texture_mirrored_repeat 1 -#define GL_MIRRORED_REPEAT_IBM 0x8370 -#endif /* GL_IBM_texture_mirrored_repeat */ - -#ifndef GL_IBM_vertex_array_lists -#define GL_IBM_vertex_array_lists 1 -#define GL_VERTEX_ARRAY_LIST_IBM 103070 -#define GL_NORMAL_ARRAY_LIST_IBM 103071 -#define GL_COLOR_ARRAY_LIST_IBM 103072 -#define GL_INDEX_ARRAY_LIST_IBM 103073 -#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 -#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 -#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 -#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077 -#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 -#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 -#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 -#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 -#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 -#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 -#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 -#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 -typedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid **pointer, GLint ptrstride); -typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid **pointer, GLint ptrstride); -typedef void (APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean **pointer, GLint ptrstride); -typedef void (APIENTRYP PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid **pointer, GLint ptrstride); -typedef void (APIENTRYP PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid **pointer, GLint ptrstride); -typedef void (APIENTRYP PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid **pointer, GLint ptrstride); -typedef void (APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid **pointer, GLint ptrstride); -typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid **pointer, GLint ptrstride); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glColorPointerListIBM (GLint size, GLenum type, GLint stride, const GLvoid **pointer, GLint ptrstride); -GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint size, GLenum type, GLint stride, const GLvoid **pointer, GLint ptrstride); -GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint stride, const GLboolean **pointer, GLint ptrstride); -GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum type, GLint stride, const GLvoid **pointer, GLint ptrstride); -GLAPI void APIENTRY glIndexPointerListIBM (GLenum type, GLint stride, const GLvoid **pointer, GLint ptrstride); -GLAPI void APIENTRY glNormalPointerListIBM (GLenum type, GLint stride, const GLvoid **pointer, GLint ptrstride); -GLAPI void APIENTRY glTexCoordPointerListIBM (GLint size, GLenum type, GLint stride, const GLvoid **pointer, GLint ptrstride); -GLAPI void APIENTRY glVertexPointerListIBM (GLint size, GLenum type, GLint stride, const GLvoid **pointer, GLint ptrstride); -#endif -#endif /* GL_IBM_vertex_array_lists */ - -#ifndef GL_INGR_blend_func_separate -#define GL_INGR_blend_func_separate 1 -typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -#endif -#endif /* GL_INGR_blend_func_separate */ - -#ifndef GL_INGR_color_clamp -#define GL_INGR_color_clamp 1 -#define GL_RED_MIN_CLAMP_INGR 0x8560 -#define GL_GREEN_MIN_CLAMP_INGR 0x8561 -#define GL_BLUE_MIN_CLAMP_INGR 0x8562 -#define GL_ALPHA_MIN_CLAMP_INGR 0x8563 -#define GL_RED_MAX_CLAMP_INGR 0x8564 -#define GL_GREEN_MAX_CLAMP_INGR 0x8565 -#define GL_BLUE_MAX_CLAMP_INGR 0x8566 -#define GL_ALPHA_MAX_CLAMP_INGR 0x8567 -#endif /* GL_INGR_color_clamp */ - -#ifndef GL_INGR_interlace_read -#define GL_INGR_interlace_read 1 -#define GL_INTERLACE_READ_INGR 0x8568 -#endif /* GL_INGR_interlace_read */ - -#ifndef GL_INTEL_map_texture -#define GL_INTEL_map_texture 1 -#define GL_TEXTURE_MEMORY_LAYOUT_INTEL 0x83FF -#define GL_LAYOUT_DEFAULT_INTEL 0 -#define GL_LAYOUT_LINEAR_INTEL 1 -#define GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2 -typedef void (APIENTRYP PFNGLSYNCTEXTUREINTELPROC) (GLuint texture); -typedef void (APIENTRYP PFNGLUNMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level); -typedef void *(APIENTRYP PFNGLMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level, GLbitfield access, const GLint *stride, const GLenum *layout); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glSyncTextureINTEL (GLuint texture); -GLAPI void APIENTRY glUnmapTexture2DINTEL (GLuint texture, GLint level); -GLAPI void *APIENTRY glMapTexture2DINTEL (GLuint texture, GLint level, GLbitfield access, const GLint *stride, const GLenum *layout); -#endif -#endif /* GL_INTEL_map_texture */ - -#ifndef GL_INTEL_parallel_arrays -#define GL_INTEL_parallel_arrays 1 -#define GL_PARALLEL_ARRAYS_INTEL 0x83F4 -#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 -#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 -#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 -#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8 -typedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid **pointer); -typedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const GLvoid **pointer); -typedef void (APIENTRYP PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid **pointer); -typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid **pointer); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexPointervINTEL (GLint size, GLenum type, const GLvoid **pointer); -GLAPI void APIENTRY glNormalPointervINTEL (GLenum type, const GLvoid **pointer); -GLAPI void APIENTRY glColorPointervINTEL (GLint size, GLenum type, const GLvoid **pointer); -GLAPI void APIENTRY glTexCoordPointervINTEL (GLint size, GLenum type, const GLvoid **pointer); -#endif -#endif /* GL_INTEL_parallel_arrays */ - -#ifndef GL_MESAX_texture_stack -#define GL_MESAX_texture_stack 1 -#define GL_TEXTURE_1D_STACK_MESAX 0x8759 -#define GL_TEXTURE_2D_STACK_MESAX 0x875A -#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B -#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C -#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D -#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E -#endif /* GL_MESAX_texture_stack */ - -#ifndef GL_MESA_pack_invert -#define GL_MESA_pack_invert 1 -#define GL_PACK_INVERT_MESA 0x8758 -#endif /* GL_MESA_pack_invert */ - -#ifndef GL_MESA_resize_buffers -#define GL_MESA_resize_buffers 1 -typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC) (void); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glResizeBuffersMESA (void); -#endif -#endif /* GL_MESA_resize_buffers */ - -#ifndef GL_MESA_window_pos -#define GL_MESA_window_pos 1 -typedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y); -typedef void (APIENTRYP PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y); -typedef void (APIENTRYP PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z); -typedef void (APIENTRYP PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w); -typedef void (APIENTRYP PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glWindowPos2dMESA (GLdouble x, GLdouble y); -GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *v); -GLAPI void APIENTRY glWindowPos2fMESA (GLfloat x, GLfloat y); -GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *v); -GLAPI void APIENTRY glWindowPos2iMESA (GLint x, GLint y); -GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *v); -GLAPI void APIENTRY glWindowPos2sMESA (GLshort x, GLshort y); -GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *v); -GLAPI void APIENTRY glWindowPos3dMESA (GLdouble x, GLdouble y, GLdouble z); -GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *v); -GLAPI void APIENTRY glWindowPos3fMESA (GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *v); -GLAPI void APIENTRY glWindowPos3iMESA (GLint x, GLint y, GLint z); -GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *v); -GLAPI void APIENTRY glWindowPos3sMESA (GLshort x, GLshort y, GLshort z); -GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *v); -GLAPI void APIENTRY glWindowPos4dMESA (GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *v); -GLAPI void APIENTRY glWindowPos4fMESA (GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *v); -GLAPI void APIENTRY glWindowPos4iMESA (GLint x, GLint y, GLint z, GLint w); -GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *v); -GLAPI void APIENTRY glWindowPos4sMESA (GLshort x, GLshort y, GLshort z, GLshort w); -GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *v); -#endif -#endif /* GL_MESA_window_pos */ - -#ifndef GL_MESA_ycbcr_texture -#define GL_MESA_ycbcr_texture 1 -#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA -#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB -#define GL_YCBCR_MESA 0x8757 -#endif /* GL_MESA_ycbcr_texture */ - -#ifndef GL_NVX_conditional_render -#define GL_NVX_conditional_render 1 -typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVXPROC) (GLuint id); -typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVXPROC) (void); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBeginConditionalRenderNVX (GLuint id); -GLAPI void APIENTRY glEndConditionalRenderNVX (void); -#endif -#endif /* GL_NVX_conditional_render */ - -#ifndef GL_NV_bindless_texture -#define GL_NV_bindless_texture 1 -typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture); -typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler); -typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); -typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle); -typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); -typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access); -typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle); -typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value); -typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64 *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); -typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); -typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI GLuint64 APIENTRY glGetTextureHandleNV (GLuint texture); -GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler); -GLAPI void APIENTRY glMakeTextureHandleResidentNV (GLuint64 handle); -GLAPI void APIENTRY glMakeTextureHandleNonResidentNV (GLuint64 handle); -GLAPI GLuint64 APIENTRY glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); -GLAPI void APIENTRY glMakeImageHandleResidentNV (GLuint64 handle, GLenum access); -GLAPI void APIENTRY glMakeImageHandleNonResidentNV (GLuint64 handle); -GLAPI void APIENTRY glUniformHandleui64NV (GLint location, GLuint64 value); -GLAPI void APIENTRY glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64 *value); -GLAPI void APIENTRY glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value); -GLAPI void APIENTRY glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64 *values); -GLAPI GLboolean APIENTRY glIsTextureHandleResidentNV (GLuint64 handle); -GLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle); -#endif -#endif /* GL_NV_bindless_texture */ - -#ifndef GL_NV_blend_square -#define GL_NV_blend_square 1 -#endif /* GL_NV_blend_square */ - -#ifndef GL_NV_compute_program5 -#define GL_NV_compute_program5 1 -#define GL_COMPUTE_PROGRAM_NV 0x90FB -#define GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC -#endif /* GL_NV_compute_program5 */ - -#ifndef GL_NV_conditional_render -#define GL_NV_conditional_render 1 -#define GL_QUERY_WAIT_NV 0x8E13 -#define GL_QUERY_NO_WAIT_NV 0x8E14 -#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15 -#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16 -typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode); -typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode); -GLAPI void APIENTRY glEndConditionalRenderNV (void); -#endif -#endif /* GL_NV_conditional_render */ - -#ifndef GL_NV_copy_depth_to_color -#define GL_NV_copy_depth_to_color 1 -#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E -#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F -#endif /* GL_NV_copy_depth_to_color */ - -#ifndef GL_NV_copy_image -#define GL_NV_copy_image 1 -typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATANVPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glCopyImageSubDataNV (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); -#endif -#endif /* GL_NV_copy_image */ - -#ifndef GL_NV_deep_texture3D -#define GL_NV_deep_texture3D 1 -#define GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0 -#define GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV 0x90D1 -#endif /* GL_NV_deep_texture3D */ - -#ifndef GL_NV_depth_buffer_float -#define GL_NV_depth_buffer_float 1 -#define GL_DEPTH_COMPONENT32F_NV 0x8DAB -#define GL_DEPTH32F_STENCIL8_NV 0x8DAC -#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD -#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF -typedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar); -typedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC) (GLdouble depth); -typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDepthRangedNV (GLdouble zNear, GLdouble zFar); -GLAPI void APIENTRY glClearDepthdNV (GLdouble depth); -GLAPI void APIENTRY glDepthBoundsdNV (GLdouble zmin, GLdouble zmax); -#endif -#endif /* GL_NV_depth_buffer_float */ - -#ifndef GL_NV_depth_clamp -#define GL_NV_depth_clamp 1 -#define GL_DEPTH_CLAMP_NV 0x864F -#endif /* GL_NV_depth_clamp */ - -#ifndef GL_NV_draw_texture -#define GL_NV_draw_texture 1 -typedef void (APIENTRYP PFNGLDRAWTEXTURENVPROC) (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawTextureNV (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); -#endif -#endif /* GL_NV_draw_texture */ - -#ifndef GL_NV_evaluators -#define GL_NV_evaluators 1 -#define GL_EVAL_2D_NV 0x86C0 -#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 -#define GL_MAP_TESSELLATION_NV 0x86C2 -#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 -#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 -#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 -#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 -#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 -#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 -#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 -#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA -#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB -#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC -#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD -#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE -#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF -#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 -#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 -#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 -#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 -#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 -#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 -#define GL_MAX_MAP_TESSELLATION_NV 0x86D6 -#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 -typedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *points); -typedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid *points); -typedef void (APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *points); -GLAPI void APIENTRY glMapParameterivNV (GLenum target, GLenum pname, const GLint *params); -GLAPI void APIENTRY glMapParameterfvNV (GLenum target, GLenum pname, const GLfloat *params); -GLAPI void APIENTRY glGetMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid *points); -GLAPI void APIENTRY glGetMapParameterivNV (GLenum target, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetMapParameterfvNV (GLenum target, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum target, GLuint index, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glEvalMapsNV (GLenum target, GLenum mode); -#endif -#endif /* GL_NV_evaluators */ - -#ifndef GL_NV_explicit_multisample -#define GL_NV_explicit_multisample 1 -#define GL_SAMPLE_POSITION_NV 0x8E50 -#define GL_SAMPLE_MASK_NV 0x8E51 -#define GL_SAMPLE_MASK_VALUE_NV 0x8E52 -#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53 -#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54 -#define GL_TEXTURE_RENDERBUFFER_NV 0x8E55 -#define GL_SAMPLER_RENDERBUFFER_NV 0x8E56 -#define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57 -#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58 -#define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59 -typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat *val); -typedef void (APIENTRYP PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask); -typedef void (APIENTRYP PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint renderbuffer); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGetMultisamplefvNV (GLenum pname, GLuint index, GLfloat *val); -GLAPI void APIENTRY glSampleMaskIndexedNV (GLuint index, GLbitfield mask); -GLAPI void APIENTRY glTexRenderbufferNV (GLenum target, GLuint renderbuffer); -#endif -#endif /* GL_NV_explicit_multisample */ - -#ifndef GL_NV_fence -#define GL_NV_fence 1 -#define GL_ALL_COMPLETED_NV 0x84F2 -#define GL_FENCE_STATUS_NV 0x84F3 -#define GL_FENCE_CONDITION_NV 0x84F4 -typedef void (APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); -typedef void (APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); -typedef GLboolean (APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); -typedef GLboolean (APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); -typedef void (APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); -typedef void (APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences); -GLAPI void APIENTRY glGenFencesNV (GLsizei n, GLuint *fences); -GLAPI GLboolean APIENTRY glIsFenceNV (GLuint fence); -GLAPI GLboolean APIENTRY glTestFenceNV (GLuint fence); -GLAPI void APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params); -GLAPI void APIENTRY glFinishFenceNV (GLuint fence); -GLAPI void APIENTRY glSetFenceNV (GLuint fence, GLenum condition); -#endif -#endif /* GL_NV_fence */ - -#ifndef GL_NV_float_buffer -#define GL_NV_float_buffer 1 -#define GL_FLOAT_R_NV 0x8880 -#define GL_FLOAT_RG_NV 0x8881 -#define GL_FLOAT_RGB_NV 0x8882 -#define GL_FLOAT_RGBA_NV 0x8883 -#define GL_FLOAT_R16_NV 0x8884 -#define GL_FLOAT_R32_NV 0x8885 -#define GL_FLOAT_RG16_NV 0x8886 -#define GL_FLOAT_RG32_NV 0x8887 -#define GL_FLOAT_RGB16_NV 0x8888 -#define GL_FLOAT_RGB32_NV 0x8889 -#define GL_FLOAT_RGBA16_NV 0x888A -#define GL_FLOAT_RGBA32_NV 0x888B -#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C -#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D -#define GL_FLOAT_RGBA_MODE_NV 0x888E -#endif /* GL_NV_float_buffer */ - -#ifndef GL_NV_fog_distance -#define GL_NV_fog_distance 1 -#define GL_FOG_DISTANCE_MODE_NV 0x855A -#define GL_EYE_RADIAL_NV 0x855B -#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C -#endif /* GL_NV_fog_distance */ - -#ifndef GL_NV_fragment_program -#define GL_NV_fragment_program 1 -#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868 -#define GL_FRAGMENT_PROGRAM_NV 0x8870 -#define GL_MAX_TEXTURE_COORDS_NV 0x8871 -#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 -#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 -#define GL_PROGRAM_ERROR_STRING_NV 0x8874 -typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v); -typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v); -typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params); -typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProgramNamedParameter4fNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v); -GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI void APIENTRY glProgramNamedParameter4dvNV (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v); -GLAPI void APIENTRY glGetProgramNamedParameterfvNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params); -GLAPI void APIENTRY glGetProgramNamedParameterdvNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); -#endif -#endif /* GL_NV_fragment_program */ - -#ifndef GL_NV_fragment_program2 -#define GL_NV_fragment_program2 1 -#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 -#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 -#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6 -#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7 -#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8 -#endif /* GL_NV_fragment_program2 */ - -#ifndef GL_NV_fragment_program4 -#define GL_NV_fragment_program4 1 -#endif /* GL_NV_fragment_program4 */ - -#ifndef GL_NV_fragment_program_option -#define GL_NV_fragment_program_option 1 -#endif /* GL_NV_fragment_program_option */ - -#ifndef GL_NV_framebuffer_multisample_coverage -#define GL_NV_framebuffer_multisample_coverage 1 -#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB -#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 -#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11 -#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12 -typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); -#endif -#endif /* GL_NV_framebuffer_multisample_coverage */ - -#ifndef GL_NV_geometry_program4 -#define GL_NV_geometry_program4 1 -#define GL_GEOMETRY_PROGRAM_NV 0x8C26 -#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27 -#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28 -typedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProgramVertexLimitNV (GLenum target, GLint limit); -GLAPI void APIENTRY glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level); -GLAPI void APIENTRY glFramebufferTextureLayerEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -GLAPI void APIENTRY glFramebufferTextureFaceEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); -#endif -#endif /* GL_NV_geometry_program4 */ - -#ifndef GL_NV_geometry_shader4 -#define GL_NV_geometry_shader4 1 -#endif /* GL_NV_geometry_shader4 */ - -#ifndef GL_NV_gpu_program4 -#define GL_NV_gpu_program4 1 -#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904 -#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905 -#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906 -#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907 -#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908 -#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909 -#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5 -#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6 -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); -typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params); -typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params); -typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params); -typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProgramLocalParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); -GLAPI void APIENTRY glProgramLocalParameterI4ivNV (GLenum target, GLuint index, const GLint *params); -GLAPI void APIENTRY glProgramLocalParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params); -GLAPI void APIENTRY glProgramLocalParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -GLAPI void APIENTRY glProgramLocalParameterI4uivNV (GLenum target, GLuint index, const GLuint *params); -GLAPI void APIENTRY glProgramLocalParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params); -GLAPI void APIENTRY glProgramEnvParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); -GLAPI void APIENTRY glProgramEnvParameterI4ivNV (GLenum target, GLuint index, const GLint *params); -GLAPI void APIENTRY glProgramEnvParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params); -GLAPI void APIENTRY glProgramEnvParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -GLAPI void APIENTRY glProgramEnvParameterI4uivNV (GLenum target, GLuint index, const GLuint *params); -GLAPI void APIENTRY glProgramEnvParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params); -GLAPI void APIENTRY glGetProgramLocalParameterIivNV (GLenum target, GLuint index, GLint *params); -GLAPI void APIENTRY glGetProgramLocalParameterIuivNV (GLenum target, GLuint index, GLuint *params); -GLAPI void APIENTRY glGetProgramEnvParameterIivNV (GLenum target, GLuint index, GLint *params); -GLAPI void APIENTRY glGetProgramEnvParameterIuivNV (GLenum target, GLuint index, GLuint *params); -#endif -#endif /* GL_NV_gpu_program4 */ - -#ifndef GL_NV_gpu_program5 -#define GL_NV_gpu_program5 1 -#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A -#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B -#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C -#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D -#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E -#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F -#define GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV 0x8F44 -#define GL_MAX_PROGRAM_SUBROUTINE_NUM_NV 0x8F45 -typedef void (APIENTRYP PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC) (GLenum target, GLsizei count, const GLuint *params); -typedef void (APIENTRYP PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC) (GLenum target, GLuint index, GLuint *param); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProgramSubroutineParametersuivNV (GLenum target, GLsizei count, const GLuint *params); -GLAPI void APIENTRY glGetProgramSubroutineParameteruivNV (GLenum target, GLuint index, GLuint *param); -#endif -#endif /* GL_NV_gpu_program5 */ - -#ifndef GL_NV_gpu_shader5 -#define GL_NV_gpu_shader5 1 -typedef int64_t GLint64EXT; -typedef uint64_t GLuint64EXT; -#define GL_INT64_NV 0x140E -#define GL_UNSIGNED_INT64_NV 0x140F -#define GL_INT8_NV 0x8FE0 -#define GL_INT8_VEC2_NV 0x8FE1 -#define GL_INT8_VEC3_NV 0x8FE2 -#define GL_INT8_VEC4_NV 0x8FE3 -#define GL_INT16_NV 0x8FE4 -#define GL_INT16_VEC2_NV 0x8FE5 -#define GL_INT16_VEC3_NV 0x8FE6 -#define GL_INT16_VEC4_NV 0x8FE7 -#define GL_INT64_VEC2_NV 0x8FE9 -#define GL_INT64_VEC3_NV 0x8FEA -#define GL_INT64_VEC4_NV 0x8FEB -#define GL_UNSIGNED_INT8_NV 0x8FEC -#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED -#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE -#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF -#define GL_UNSIGNED_INT16_NV 0x8FF0 -#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1 -#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2 -#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3 -#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5 -#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6 -#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7 -#define GL_FLOAT16_NV 0x8FF8 -#define GL_FLOAT16_VEC2_NV 0x8FF9 -#define GL_FLOAT16_VEC3_NV 0x8FFA -#define GL_FLOAT16_VEC4_NV 0x8FFB -typedef void (APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x); -typedef void (APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y); -typedef void (APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); -typedef void (APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); -typedef void (APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); -typedef void (APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); -typedef void (APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); -typedef void (APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); -typedef void (APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x); -typedef void (APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y); -typedef void (APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); -typedef void (APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); -typedef void (APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); -typedef void (APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); -typedef void (APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); -typedef void (APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); -typedef void (APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glUniform1i64NV (GLint location, GLint64EXT x); -GLAPI void APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y); -GLAPI void APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); -GLAPI void APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); -GLAPI void APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value); -GLAPI void APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value); -GLAPI void APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value); -GLAPI void APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value); -GLAPI void APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x); -GLAPI void APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y); -GLAPI void APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); -GLAPI void APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); -GLAPI void APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); -GLAPI void APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); -GLAPI void APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); -GLAPI void APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); -GLAPI void APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params); -GLAPI void APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x); -GLAPI void APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); -GLAPI void APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); -GLAPI void APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); -GLAPI void APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); -GLAPI void APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); -GLAPI void APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); -GLAPI void APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); -GLAPI void APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x); -GLAPI void APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); -GLAPI void APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); -GLAPI void APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); -GLAPI void APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); -GLAPI void APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); -GLAPI void APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); -GLAPI void APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); -#endif -#endif /* GL_NV_gpu_shader5 */ - -#ifndef GL_NV_half_float -#define GL_NV_half_float 1 -typedef unsigned short GLhalfNV; -#define GL_HALF_FLOAT_NV 0x140B -typedef void (APIENTRYP PFNGLVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y); -typedef void (APIENTRYP PFNGLVERTEX2HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEX3HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z); -typedef void (APIENTRYP PFNGLVERTEX3HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEX4HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); -typedef void (APIENTRYP PFNGLVERTEX4HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLNORMAL3HNVPROC) (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); -typedef void (APIENTRYP PFNGLNORMAL3HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); -typedef void (APIENTRYP PFNGLCOLOR3HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLCOLOR4HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha); -typedef void (APIENTRYP PFNGLCOLOR4HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLTEXCOORD1HNVPROC) (GLhalfNV s); -typedef void (APIENTRYP PFNGLTEXCOORD1HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLTEXCOORD2HNVPROC) (GLhalfNV s, GLhalfNV t); -typedef void (APIENTRYP PFNGLTEXCOORD2HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLTEXCOORD3HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r); -typedef void (APIENTRYP PFNGLTEXCOORD3HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLTEXCOORD4HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); -typedef void (APIENTRYP PFNGLTEXCOORD4HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalfNV s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog); -typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight); -typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertex2hNV (GLhalfNV x, GLhalfNV y); -GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *v); -GLAPI void APIENTRY glVertex3hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z); -GLAPI void APIENTRY glVertex3hvNV (const GLhalfNV *v); -GLAPI void APIENTRY glVertex4hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); -GLAPI void APIENTRY glVertex4hvNV (const GLhalfNV *v); -GLAPI void APIENTRY glNormal3hNV (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); -GLAPI void APIENTRY glNormal3hvNV (const GLhalfNV *v); -GLAPI void APIENTRY glColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue); -GLAPI void APIENTRY glColor3hvNV (const GLhalfNV *v); -GLAPI void APIENTRY glColor4hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha); -GLAPI void APIENTRY glColor4hvNV (const GLhalfNV *v); -GLAPI void APIENTRY glTexCoord1hNV (GLhalfNV s); -GLAPI void APIENTRY glTexCoord1hvNV (const GLhalfNV *v); -GLAPI void APIENTRY glTexCoord2hNV (GLhalfNV s, GLhalfNV t); -GLAPI void APIENTRY glTexCoord2hvNV (const GLhalfNV *v); -GLAPI void APIENTRY glTexCoord3hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r); -GLAPI void APIENTRY glTexCoord3hvNV (const GLhalfNV *v); -GLAPI void APIENTRY glTexCoord4hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); -GLAPI void APIENTRY glTexCoord4hvNV (const GLhalfNV *v); -GLAPI void APIENTRY glMultiTexCoord1hNV (GLenum target, GLhalfNV s); -GLAPI void APIENTRY glMultiTexCoord1hvNV (GLenum target, const GLhalfNV *v); -GLAPI void APIENTRY glMultiTexCoord2hNV (GLenum target, GLhalfNV s, GLhalfNV t); -GLAPI void APIENTRY glMultiTexCoord2hvNV (GLenum target, const GLhalfNV *v); -GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r); -GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum target, const GLhalfNV *v); -GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); -GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum target, const GLhalfNV *v); -GLAPI void APIENTRY glFogCoordhNV (GLhalfNV fog); -GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *fog); -GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue); -GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *v); -GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV weight); -GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *weight); -GLAPI void APIENTRY glVertexAttrib1hNV (GLuint index, GLhalfNV x); -GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint index, const GLhalfNV *v); -GLAPI void APIENTRY glVertexAttrib2hNV (GLuint index, GLhalfNV x, GLhalfNV y); -GLAPI void APIENTRY glVertexAttrib2hvNV (GLuint index, const GLhalfNV *v); -GLAPI void APIENTRY glVertexAttrib3hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z); -GLAPI void APIENTRY glVertexAttrib3hvNV (GLuint index, const GLhalfNV *v); -GLAPI void APIENTRY glVertexAttrib4hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); -GLAPI void APIENTRY glVertexAttrib4hvNV (GLuint index, const GLhalfNV *v); -GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint index, GLsizei n, const GLhalfNV *v); -GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint index, GLsizei n, const GLhalfNV *v); -GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint index, GLsizei n, const GLhalfNV *v); -GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint index, GLsizei n, const GLhalfNV *v); -#endif -#endif /* GL_NV_half_float */ - -#ifndef GL_NV_light_max_exponent -#define GL_NV_light_max_exponent 1 -#define GL_MAX_SHININESS_NV 0x8504 -#define GL_MAX_SPOT_EXPONENT_NV 0x8505 -#endif /* GL_NV_light_max_exponent */ - -#ifndef GL_NV_multisample_coverage -#define GL_NV_multisample_coverage 1 -#define GL_COLOR_SAMPLES_NV 0x8E20 -#endif /* GL_NV_multisample_coverage */ - -#ifndef GL_NV_multisample_filter_hint -#define GL_NV_multisample_filter_hint 1 -#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 -#endif /* GL_NV_multisample_filter_hint */ - -#ifndef GL_NV_occlusion_query -#define GL_NV_occlusion_query 1 -#define GL_PIXEL_COUNTER_BITS_NV 0x8864 -#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 -#define GL_PIXEL_COUNT_NV 0x8866 -#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 -typedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids); -typedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids); -typedef GLboolean (APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id); -typedef void (APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id); -typedef void (APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC) (void); -typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei n, GLuint *ids); -GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei n, const GLuint *ids); -GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint id); -GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint id); -GLAPI void APIENTRY glEndOcclusionQueryNV (void); -GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint id, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint id, GLenum pname, GLuint *params); -#endif -#endif /* GL_NV_occlusion_query */ - -#ifndef GL_NV_packed_depth_stencil -#define GL_NV_packed_depth_stencil 1 -#define GL_DEPTH_STENCIL_NV 0x84F9 -#define GL_UNSIGNED_INT_24_8_NV 0x84FA -#endif /* GL_NV_packed_depth_stencil */ - -#ifndef GL_NV_parameter_buffer_object -#define GL_NV_parameter_buffer_object 1 -#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0 -#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1 -#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2 -#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3 -#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4 -typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params); -typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params); -typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params); -GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params); -GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params); -#endif -#endif /* GL_NV_parameter_buffer_object */ - -#ifndef GL_NV_parameter_buffer_object2 -#define GL_NV_parameter_buffer_object2 1 -#endif /* GL_NV_parameter_buffer_object2 */ - -#ifndef GL_NV_path_rendering -#define GL_NV_path_rendering 1 -#define GL_PATH_FORMAT_SVG_NV 0x9070 -#define GL_PATH_FORMAT_PS_NV 0x9071 -#define GL_STANDARD_FONT_NAME_NV 0x9072 -#define GL_SYSTEM_FONT_NAME_NV 0x9073 -#define GL_FILE_NAME_NV 0x9074 -#define GL_PATH_STROKE_WIDTH_NV 0x9075 -#define GL_PATH_END_CAPS_NV 0x9076 -#define GL_PATH_INITIAL_END_CAP_NV 0x9077 -#define GL_PATH_TERMINAL_END_CAP_NV 0x9078 -#define GL_PATH_JOIN_STYLE_NV 0x9079 -#define GL_PATH_MITER_LIMIT_NV 0x907A -#define GL_PATH_DASH_CAPS_NV 0x907B -#define GL_PATH_INITIAL_DASH_CAP_NV 0x907C -#define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D -#define GL_PATH_DASH_OFFSET_NV 0x907E -#define GL_PATH_CLIENT_LENGTH_NV 0x907F -#define GL_PATH_FILL_MODE_NV 0x9080 -#define GL_PATH_FILL_MASK_NV 0x9081 -#define GL_PATH_FILL_COVER_MODE_NV 0x9082 -#define GL_PATH_STROKE_COVER_MODE_NV 0x9083 -#define GL_PATH_STROKE_MASK_NV 0x9084 -#define GL_COUNT_UP_NV 0x9088 -#define GL_COUNT_DOWN_NV 0x9089 -#define GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A -#define GL_CONVEX_HULL_NV 0x908B -#define GL_BOUNDING_BOX_NV 0x908D -#define GL_TRANSLATE_X_NV 0x908E -#define GL_TRANSLATE_Y_NV 0x908F -#define GL_TRANSLATE_2D_NV 0x9090 -#define GL_TRANSLATE_3D_NV 0x9091 -#define GL_AFFINE_2D_NV 0x9092 -#define GL_AFFINE_3D_NV 0x9094 -#define GL_TRANSPOSE_AFFINE_2D_NV 0x9096 -#define GL_TRANSPOSE_AFFINE_3D_NV 0x9098 -#define GL_UTF8_NV 0x909A -#define GL_UTF16_NV 0x909B -#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C -#define GL_PATH_COMMAND_COUNT_NV 0x909D -#define GL_PATH_COORD_COUNT_NV 0x909E -#define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F -#define GL_PATH_COMPUTED_LENGTH_NV 0x90A0 -#define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1 -#define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2 -#define GL_SQUARE_NV 0x90A3 -#define GL_ROUND_NV 0x90A4 -#define GL_TRIANGULAR_NV 0x90A5 -#define GL_BEVEL_NV 0x90A6 -#define GL_MITER_REVERT_NV 0x90A7 -#define GL_MITER_TRUNCATE_NV 0x90A8 -#define GL_SKIP_MISSING_GLYPH_NV 0x90A9 -#define GL_USE_MISSING_GLYPH_NV 0x90AA -#define GL_PATH_ERROR_POSITION_NV 0x90AB -#define GL_PATH_FOG_GEN_MODE_NV 0x90AC -#define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD -#define GL_ADJACENT_PAIRS_NV 0x90AE -#define GL_FIRST_TO_REST_NV 0x90AF -#define GL_PATH_GEN_MODE_NV 0x90B0 -#define GL_PATH_GEN_COEFF_NV 0x90B1 -#define GL_PATH_GEN_COLOR_FORMAT_NV 0x90B2 -#define GL_PATH_GEN_COMPONENTS_NV 0x90B3 -#define GL_PATH_STENCIL_FUNC_NV 0x90B7 -#define GL_PATH_STENCIL_REF_NV 0x90B8 -#define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9 -#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD -#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE -#define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF -#define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4 -#define GL_MOVE_TO_RESETS_NV 0x90B5 -#define GL_MOVE_TO_CONTINUES_NV 0x90B6 -#define GL_CLOSE_PATH_NV 0x00 -#define GL_MOVE_TO_NV 0x02 -#define GL_RELATIVE_MOVE_TO_NV 0x03 -#define GL_LINE_TO_NV 0x04 -#define GL_RELATIVE_LINE_TO_NV 0x05 -#define GL_HORIZONTAL_LINE_TO_NV 0x06 -#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07 -#define GL_VERTICAL_LINE_TO_NV 0x08 -#define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09 -#define GL_QUADRATIC_CURVE_TO_NV 0x0A -#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B -#define GL_CUBIC_CURVE_TO_NV 0x0C -#define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D -#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E -#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F -#define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10 -#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11 -#define GL_SMALL_CCW_ARC_TO_NV 0x12 -#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13 -#define GL_SMALL_CW_ARC_TO_NV 0x14 -#define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15 -#define GL_LARGE_CCW_ARC_TO_NV 0x16 -#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17 -#define GL_LARGE_CW_ARC_TO_NV 0x18 -#define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19 -#define GL_RESTART_PATH_NV 0xF0 -#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2 -#define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4 -#define GL_RECT_NV 0xF6 -#define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8 -#define GL_CIRCULAR_CW_ARC_TO_NV 0xFA -#define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC -#define GL_ARC_TO_NV 0xFE -#define GL_RELATIVE_ARC_TO_NV 0xFF -#define GL_BOLD_BIT_NV 0x01 -#define GL_ITALIC_BIT_NV 0x02 -#define GL_GLYPH_WIDTH_BIT_NV 0x01 -#define GL_GLYPH_HEIGHT_BIT_NV 0x02 -#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04 -#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08 -#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10 -#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20 -#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40 -#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80 -#define GL_GLYPH_HAS_KERNING_BIT_NV 0x100 -#define GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000 -#define GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000 -#define GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000 -#define GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000 -#define GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000 -#define GL_FONT_ASCENDER_BIT_NV 0x00200000 -#define GL_FONT_DESCENDER_BIT_NV 0x00400000 -#define GL_FONT_HEIGHT_BIT_NV 0x00800000 -#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000 -#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000 -#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000 -#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000 -#define GL_FONT_HAS_KERNING_BIT_NV 0x10000000 -#define GL_PRIMARY_COLOR_NV 0x852C -#define GL_SECONDARY_COLOR_NV 0x852D -typedef GLuint (APIENTRYP PFNGLGENPATHSNVPROC) (GLsizei range); -typedef void (APIENTRYP PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range); -typedef GLboolean (APIENTRYP PFNGLISPATHNVPROC) (GLuint path); -typedef void (APIENTRYP PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const GLvoid *coords); -typedef void (APIENTRYP PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const GLvoid *coords); -typedef void (APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const GLvoid *coords); -typedef void (APIENTRYP PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const GLvoid *coords); -typedef void (APIENTRYP PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const GLvoid *pathString); -typedef void (APIENTRYP PFNGLPATHGLYPHSNVPROC) (GLuint firstPathName, GLenum fontTarget, const GLvoid *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const GLvoid *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); -typedef void (APIENTRYP PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const GLvoid *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); -typedef void (APIENTRYP PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); -typedef void (APIENTRYP PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath); -typedef void (APIENTRYP PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); -typedef void (APIENTRYP PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); -typedef void (APIENTRYP PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint *value); -typedef void (APIENTRYP PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value); -typedef void (APIENTRYP PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat *value); -typedef void (APIENTRYP PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value); -typedef void (APIENTRYP PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat *dashArray); -typedef void (APIENTRYP PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask); -typedef void (APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units); -typedef void (APIENTRYP PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask); -typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask); -typedef void (APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); -typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); -typedef void (APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum func); -typedef void (APIENTRYP PFNGLPATHCOLORGENNVPROC) (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs); -typedef void (APIENTRYP PFNGLPATHTEXGENNVPROC) (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs); -typedef void (APIENTRYP PFNGLPATHFOGGENNVPROC) (GLenum genMode); -typedef void (APIENTRYP PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode); -typedef void (APIENTRYP PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode); -typedef void (APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); -typedef void (APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); -typedef void (APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint *value); -typedef void (APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat *value); -typedef void (APIENTRYP PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte *commands); -typedef void (APIENTRYP PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat *coords); -typedef void (APIENTRYP PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat *dashArray); -typedef void (APIENTRYP PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); -typedef void (APIENTRYP PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); -typedef void (APIENTRYP PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); -typedef void (APIENTRYP PFNGLGETPATHCOLORGENIVNVPROC) (GLenum color, GLenum pname, GLint *value); -typedef void (APIENTRYP PFNGLGETPATHCOLORGENFVNVPROC) (GLenum color, GLenum pname, GLfloat *value); -typedef void (APIENTRYP PFNGLGETPATHTEXGENIVNVPROC) (GLenum texCoordSet, GLenum pname, GLint *value); -typedef void (APIENTRYP PFNGLGETPATHTEXGENFVNVPROC) (GLenum texCoordSet, GLenum pname, GLfloat *value); -typedef GLboolean (APIENTRYP PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y); -typedef GLboolean (APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y); -typedef GLfloat (APIENTRYP PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments); -typedef GLboolean (APIENTRYP PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI GLuint APIENTRY glGenPathsNV (GLsizei range); -GLAPI void APIENTRY glDeletePathsNV (GLuint path, GLsizei range); -GLAPI GLboolean APIENTRY glIsPathNV (GLuint path); -GLAPI void APIENTRY glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const GLvoid *coords); -GLAPI void APIENTRY glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const GLvoid *coords); -GLAPI void APIENTRY glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const GLvoid *coords); -GLAPI void APIENTRY glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const GLvoid *coords); -GLAPI void APIENTRY glPathStringNV (GLuint path, GLenum format, GLsizei length, const GLvoid *pathString); -GLAPI void APIENTRY glPathGlyphsNV (GLuint firstPathName, GLenum fontTarget, const GLvoid *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const GLvoid *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); -GLAPI void APIENTRY glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const GLvoid *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); -GLAPI void APIENTRY glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); -GLAPI void APIENTRY glCopyPathNV (GLuint resultPath, GLuint srcPath); -GLAPI void APIENTRY glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); -GLAPI void APIENTRY glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); -GLAPI void APIENTRY glPathParameterivNV (GLuint path, GLenum pname, const GLint *value); -GLAPI void APIENTRY glPathParameteriNV (GLuint path, GLenum pname, GLint value); -GLAPI void APIENTRY glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat *value); -GLAPI void APIENTRY glPathParameterfNV (GLuint path, GLenum pname, GLfloat value); -GLAPI void APIENTRY glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat *dashArray); -GLAPI void APIENTRY glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask); -GLAPI void APIENTRY glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units); -GLAPI void APIENTRY glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask); -GLAPI void APIENTRY glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask); -GLAPI void APIENTRY glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); -GLAPI void APIENTRY glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); -GLAPI void APIENTRY glPathCoverDepthFuncNV (GLenum func); -GLAPI void APIENTRY glPathColorGenNV (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs); -GLAPI void APIENTRY glPathTexGenNV (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs); -GLAPI void APIENTRY glPathFogGenNV (GLenum genMode); -GLAPI void APIENTRY glCoverFillPathNV (GLuint path, GLenum coverMode); -GLAPI void APIENTRY glCoverStrokePathNV (GLuint path, GLenum coverMode); -GLAPI void APIENTRY glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); -GLAPI void APIENTRY glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); -GLAPI void APIENTRY glGetPathParameterivNV (GLuint path, GLenum pname, GLint *value); -GLAPI void APIENTRY glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat *value); -GLAPI void APIENTRY glGetPathCommandsNV (GLuint path, GLubyte *commands); -GLAPI void APIENTRY glGetPathCoordsNV (GLuint path, GLfloat *coords); -GLAPI void APIENTRY glGetPathDashArrayNV (GLuint path, GLfloat *dashArray); -GLAPI void APIENTRY glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); -GLAPI void APIENTRY glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); -GLAPI void APIENTRY glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); -GLAPI void APIENTRY glGetPathColorGenivNV (GLenum color, GLenum pname, GLint *value); -GLAPI void APIENTRY glGetPathColorGenfvNV (GLenum color, GLenum pname, GLfloat *value); -GLAPI void APIENTRY glGetPathTexGenivNV (GLenum texCoordSet, GLenum pname, GLint *value); -GLAPI void APIENTRY glGetPathTexGenfvNV (GLenum texCoordSet, GLenum pname, GLfloat *value); -GLAPI GLboolean APIENTRY glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y); -GLAPI GLboolean APIENTRY glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y); -GLAPI GLfloat APIENTRY glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments); -GLAPI GLboolean APIENTRY glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); -#endif -#endif /* GL_NV_path_rendering */ - -#ifndef GL_NV_pixel_data_range -#define GL_NV_pixel_data_range 1 -#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 -#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879 -#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A -#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B -#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C -#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D -typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPixelDataRangeNV (GLenum target, GLsizei length, const GLvoid *pointer); -GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum target); -#endif -#endif /* GL_NV_pixel_data_range */ - -#ifndef GL_NV_point_sprite -#define GL_NV_point_sprite 1 -#define GL_POINT_SPRITE_NV 0x8861 -#define GL_COORD_REPLACE_NV 0x8862 -#define GL_POINT_SPRITE_R_MODE_NV 0x8863 -typedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPointParameteriNV (GLenum pname, GLint param); -GLAPI void APIENTRY glPointParameterivNV (GLenum pname, const GLint *params); -#endif -#endif /* GL_NV_point_sprite */ - -#ifndef GL_NV_present_video -#define GL_NV_present_video 1 -#define GL_FRAME_NV 0x8E26 -#define GL_FIELDS_NV 0x8E27 -#define GL_CURRENT_TIME_NV 0x8E28 -#define GL_NUM_FILL_STREAMS_NV 0x8E29 -#define GL_PRESENT_TIME_NV 0x8E2A -#define GL_PRESENT_DURATION_NV 0x8E2B -typedef void (APIENTRYP PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); -typedef void (APIENTRYP PFNGLPRESENTFRAMEDUALFILLNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); -typedef void (APIENTRYP PFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint *params); -typedef void (APIENTRYP PFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT *params); -typedef void (APIENTRYP PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPresentFrameKeyedNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); -GLAPI void APIENTRY glPresentFrameDualFillNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); -GLAPI void APIENTRY glGetVideoivNV (GLuint video_slot, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetVideouivNV (GLuint video_slot, GLenum pname, GLuint *params); -GLAPI void APIENTRY glGetVideoi64vNV (GLuint video_slot, GLenum pname, GLint64EXT *params); -GLAPI void APIENTRY glGetVideoui64vNV (GLuint video_slot, GLenum pname, GLuint64EXT *params); -#endif -#endif /* GL_NV_present_video */ - -#ifndef GL_NV_primitive_restart -#define GL_NV_primitive_restart 1 -#define GL_PRIMITIVE_RESTART_NV 0x8558 -#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 -typedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC) (void); -typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPrimitiveRestartNV (void); -GLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint index); -#endif -#endif /* GL_NV_primitive_restart */ - -#ifndef GL_NV_register_combiners -#define GL_NV_register_combiners 1 -#define GL_REGISTER_COMBINERS_NV 0x8522 -#define GL_VARIABLE_A_NV 0x8523 -#define GL_VARIABLE_B_NV 0x8524 -#define GL_VARIABLE_C_NV 0x8525 -#define GL_VARIABLE_D_NV 0x8526 -#define GL_VARIABLE_E_NV 0x8527 -#define GL_VARIABLE_F_NV 0x8528 -#define GL_VARIABLE_G_NV 0x8529 -#define GL_CONSTANT_COLOR0_NV 0x852A -#define GL_CONSTANT_COLOR1_NV 0x852B -#define GL_SPARE0_NV 0x852E -#define GL_SPARE1_NV 0x852F -#define GL_DISCARD_NV 0x8530 -#define GL_E_TIMES_F_NV 0x8531 -#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 -#define GL_UNSIGNED_IDENTITY_NV 0x8536 -#define GL_UNSIGNED_INVERT_NV 0x8537 -#define GL_EXPAND_NORMAL_NV 0x8538 -#define GL_EXPAND_NEGATE_NV 0x8539 -#define GL_HALF_BIAS_NORMAL_NV 0x853A -#define GL_HALF_BIAS_NEGATE_NV 0x853B -#define GL_SIGNED_IDENTITY_NV 0x853C -#define GL_SIGNED_NEGATE_NV 0x853D -#define GL_SCALE_BY_TWO_NV 0x853E -#define GL_SCALE_BY_FOUR_NV 0x853F -#define GL_SCALE_BY_ONE_HALF_NV 0x8540 -#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 -#define GL_COMBINER_INPUT_NV 0x8542 -#define GL_COMBINER_MAPPING_NV 0x8543 -#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 -#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 -#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 -#define GL_COMBINER_MUX_SUM_NV 0x8547 -#define GL_COMBINER_SCALE_NV 0x8548 -#define GL_COMBINER_BIAS_NV 0x8549 -#define GL_COMBINER_AB_OUTPUT_NV 0x854A -#define GL_COMBINER_CD_OUTPUT_NV 0x854B -#define GL_COMBINER_SUM_OUTPUT_NV 0x854C -#define GL_MAX_GENERAL_COMBINERS_NV 0x854D -#define GL_NUM_GENERAL_COMBINERS_NV 0x854E -#define GL_COLOR_SUM_CLAMP_NV 0x854F -#define GL_COMBINER0_NV 0x8550 -#define GL_COMBINER1_NV 0x8551 -#define GL_COMBINER2_NV 0x8552 -#define GL_COMBINER3_NV 0x8553 -#define GL_COMBINER4_NV 0x8554 -#define GL_COMBINER5_NV 0x8555 -#define GL_COMBINER6_NV 0x8556 -#define GL_COMBINER7_NV 0x8557 -typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); -typedef void (APIENTRYP PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); -typedef void (APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); -typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glCombinerParameterfvNV (GLenum pname, const GLfloat *params); -GLAPI void APIENTRY glCombinerParameterfNV (GLenum pname, GLfloat param); -GLAPI void APIENTRY glCombinerParameterivNV (GLenum pname, const GLint *params); -GLAPI void APIENTRY glCombinerParameteriNV (GLenum pname, GLint param); -GLAPI void APIENTRY glCombinerInputNV (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); -GLAPI void APIENTRY glCombinerOutputNV (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); -GLAPI void APIENTRY glFinalCombinerInputNV (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); -GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum stage, GLenum portion, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum stage, GLenum portion, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum variable, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum variable, GLenum pname, GLint *params); -#endif -#endif /* GL_NV_register_combiners */ - -#ifndef GL_NV_register_combiners2 -#define GL_NV_register_combiners2 1 -#define GL_PER_STAGE_CONSTANTS_NV 0x8535 -typedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum stage, GLenum pname, const GLfloat *params); -GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum stage, GLenum pname, GLfloat *params); -#endif -#endif /* GL_NV_register_combiners2 */ - -#ifndef GL_NV_shader_atomic_counters -#define GL_NV_shader_atomic_counters 1 -#endif /* GL_NV_shader_atomic_counters */ - -#ifndef GL_NV_shader_atomic_float -#define GL_NV_shader_atomic_float 1 -#endif /* GL_NV_shader_atomic_float */ - -#ifndef GL_NV_shader_buffer_load -#define GL_NV_shader_buffer_load 1 -#define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D -#define GL_GPU_ADDRESS_NV 0x8F34 -#define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35 -typedef void (APIENTRYP PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access); -typedef void (APIENTRYP PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target); -typedef GLboolean (APIENTRYP PFNGLISBUFFERRESIDENTNVPROC) (GLenum target); -typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access); -typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer); -typedef GLboolean (APIENTRYP PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer); -typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT *params); -typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT *params); -typedef void (APIENTRYP PFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT *result); -typedef void (APIENTRYP PFNGLUNIFORMUI64NVPROC) (GLint location, GLuint64EXT value); -typedef void (APIENTRYP PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); -typedef void (APIENTRYP PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT *params); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glMakeBufferResidentNV (GLenum target, GLenum access); -GLAPI void APIENTRY glMakeBufferNonResidentNV (GLenum target); -GLAPI GLboolean APIENTRY glIsBufferResidentNV (GLenum target); -GLAPI void APIENTRY glMakeNamedBufferResidentNV (GLuint buffer, GLenum access); -GLAPI void APIENTRY glMakeNamedBufferNonResidentNV (GLuint buffer); -GLAPI GLboolean APIENTRY glIsNamedBufferResidentNV (GLuint buffer); -GLAPI void APIENTRY glGetBufferParameterui64vNV (GLenum target, GLenum pname, GLuint64EXT *params); -GLAPI void APIENTRY glGetNamedBufferParameterui64vNV (GLuint buffer, GLenum pname, GLuint64EXT *params); -GLAPI void APIENTRY glGetIntegerui64vNV (GLenum value, GLuint64EXT *result); -GLAPI void APIENTRY glUniformui64NV (GLint location, GLuint64EXT value); -GLAPI void APIENTRY glUniformui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); -GLAPI void APIENTRY glGetUniformui64vNV (GLuint program, GLint location, GLuint64EXT *params); -GLAPI void APIENTRY glProgramUniformui64NV (GLuint program, GLint location, GLuint64EXT value); -GLAPI void APIENTRY glProgramUniformui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); -#endif -#endif /* GL_NV_shader_buffer_load */ - -#ifndef GL_NV_shader_buffer_store -#define GL_NV_shader_buffer_store 1 -#define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010 -#endif /* GL_NV_shader_buffer_store */ - -#ifndef GL_NV_shader_storage_buffer_object -#define GL_NV_shader_storage_buffer_object 1 -#endif /* GL_NV_shader_storage_buffer_object */ - -#ifndef GL_NV_tessellation_program5 -#define GL_NV_tessellation_program5 1 -#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8 -#define GL_TESS_CONTROL_PROGRAM_NV 0x891E -#define GL_TESS_EVALUATION_PROGRAM_NV 0x891F -#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74 -#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75 -#endif /* GL_NV_tessellation_program5 */ - -#ifndef GL_NV_texgen_emboss -#define GL_NV_texgen_emboss 1 -#define GL_EMBOSS_LIGHT_NV 0x855D -#define GL_EMBOSS_CONSTANT_NV 0x855E -#define GL_EMBOSS_MAP_NV 0x855F -#endif /* GL_NV_texgen_emboss */ - -#ifndef GL_NV_texgen_reflection -#define GL_NV_texgen_reflection 1 -#define GL_NORMAL_MAP_NV 0x8511 -#define GL_REFLECTION_MAP_NV 0x8512 -#endif /* GL_NV_texgen_reflection */ - -#ifndef GL_NV_texture_barrier -#define GL_NV_texture_barrier 1 -typedef void (APIENTRYP PFNGLTEXTUREBARRIERNVPROC) (void); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTextureBarrierNV (void); -#endif -#endif /* GL_NV_texture_barrier */ - -#ifndef GL_NV_texture_compression_vtc -#define GL_NV_texture_compression_vtc 1 -#endif /* GL_NV_texture_compression_vtc */ - -#ifndef GL_NV_texture_env_combine4 -#define GL_NV_texture_env_combine4 1 -#define GL_COMBINE4_NV 0x8503 -#define GL_SOURCE3_RGB_NV 0x8583 -#define GL_SOURCE3_ALPHA_NV 0x858B -#define GL_OPERAND3_RGB_NV 0x8593 -#define GL_OPERAND3_ALPHA_NV 0x859B -#endif /* GL_NV_texture_env_combine4 */ - -#ifndef GL_NV_texture_expand_normal -#define GL_NV_texture_expand_normal 1 -#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F -#endif /* GL_NV_texture_expand_normal */ - -#ifndef GL_NV_texture_multisample -#define GL_NV_texture_multisample 1 -#define GL_TEXTURE_COVERAGE_SAMPLES_NV 0x9045 -#define GL_TEXTURE_COLOR_SAMPLES_NV 0x9046 -typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); -typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); -typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); -typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); -typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); -typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTexImage2DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); -GLAPI void APIENTRY glTexImage3DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); -GLAPI void APIENTRY glTextureImage2DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); -GLAPI void APIENTRY glTextureImage3DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); -GLAPI void APIENTRY glTextureImage2DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); -GLAPI void APIENTRY glTextureImage3DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); -#endif -#endif /* GL_NV_texture_multisample */ - -#ifndef GL_NV_texture_rectangle -#define GL_NV_texture_rectangle 1 -#define GL_TEXTURE_RECTANGLE_NV 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 -#endif /* GL_NV_texture_rectangle */ - -#ifndef GL_NV_texture_shader -#define GL_NV_texture_shader 1 -#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C -#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D -#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E -#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 -#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA -#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB -#define GL_DSDT_MAG_INTENSITY_NV 0x86DC -#define GL_SHADER_CONSISTENT_NV 0x86DD -#define GL_TEXTURE_SHADER_NV 0x86DE -#define GL_SHADER_OPERATION_NV 0x86DF -#define GL_CULL_MODES_NV 0x86E0 -#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 -#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 -#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 -#define GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1 -#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2 -#define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3 -#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 -#define GL_CONST_EYE_NV 0x86E5 -#define GL_PASS_THROUGH_NV 0x86E6 -#define GL_CULL_FRAGMENT_NV 0x86E7 -#define GL_OFFSET_TEXTURE_2D_NV 0x86E8 -#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 -#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA -#define GL_DOT_PRODUCT_NV 0x86EC -#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED -#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE -#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 -#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 -#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 -#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 -#define GL_HILO_NV 0x86F4 -#define GL_DSDT_NV 0x86F5 -#define GL_DSDT_MAG_NV 0x86F6 -#define GL_DSDT_MAG_VIB_NV 0x86F7 -#define GL_HILO16_NV 0x86F8 -#define GL_SIGNED_HILO_NV 0x86F9 -#define GL_SIGNED_HILO16_NV 0x86FA -#define GL_SIGNED_RGBA_NV 0x86FB -#define GL_SIGNED_RGBA8_NV 0x86FC -#define GL_SIGNED_RGB_NV 0x86FE -#define GL_SIGNED_RGB8_NV 0x86FF -#define GL_SIGNED_LUMINANCE_NV 0x8701 -#define GL_SIGNED_LUMINANCE8_NV 0x8702 -#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 -#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 -#define GL_SIGNED_ALPHA_NV 0x8705 -#define GL_SIGNED_ALPHA8_NV 0x8706 -#define GL_SIGNED_INTENSITY_NV 0x8707 -#define GL_SIGNED_INTENSITY8_NV 0x8708 -#define GL_DSDT8_NV 0x8709 -#define GL_DSDT8_MAG8_NV 0x870A -#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B -#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C -#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D -#define GL_HI_SCALE_NV 0x870E -#define GL_LO_SCALE_NV 0x870F -#define GL_DS_SCALE_NV 0x8710 -#define GL_DT_SCALE_NV 0x8711 -#define GL_MAGNITUDE_SCALE_NV 0x8712 -#define GL_VIBRANCE_SCALE_NV 0x8713 -#define GL_HI_BIAS_NV 0x8714 -#define GL_LO_BIAS_NV 0x8715 -#define GL_DS_BIAS_NV 0x8716 -#define GL_DT_BIAS_NV 0x8717 -#define GL_MAGNITUDE_BIAS_NV 0x8718 -#define GL_VIBRANCE_BIAS_NV 0x8719 -#define GL_TEXTURE_BORDER_VALUES_NV 0x871A -#define GL_TEXTURE_HI_SIZE_NV 0x871B -#define GL_TEXTURE_LO_SIZE_NV 0x871C -#define GL_TEXTURE_DS_SIZE_NV 0x871D -#define GL_TEXTURE_DT_SIZE_NV 0x871E -#define GL_TEXTURE_MAG_SIZE_NV 0x871F -#endif /* GL_NV_texture_shader */ - -#ifndef GL_NV_texture_shader2 -#define GL_NV_texture_shader2 1 -#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF -#endif /* GL_NV_texture_shader2 */ - -#ifndef GL_NV_texture_shader3 -#define GL_NV_texture_shader3 1 -#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 -#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 -#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 -#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 -#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 -#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 -#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 -#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 -#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 -#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 -#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A -#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B -#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C -#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D -#define GL_HILO8_NV 0x885E -#define GL_SIGNED_HILO8_NV 0x885F -#define GL_FORCE_BLUE_TO_ONE_NV 0x8860 -#endif /* GL_NV_texture_shader3 */ - -#ifndef GL_NV_transform_feedback -#define GL_NV_transform_feedback 1 -#define GL_BACK_PRIMARY_COLOR_NV 0x8C77 -#define GL_BACK_SECONDARY_COLOR_NV 0x8C78 -#define GL_TEXTURE_COORD_NV 0x8C79 -#define GL_CLIP_DISTANCE_NV 0x8C7A -#define GL_VERTEX_ID_NV 0x8C7B -#define GL_PRIMITIVE_ID_NV 0x8C7C -#define GL_GENERIC_ATTRIB_NV 0x8C7D -#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E -#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80 -#define GL_ACTIVE_VARYINGS_NV 0x8C81 -#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82 -#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83 -#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84 -#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85 -#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86 -#define GL_PRIMITIVES_GENERATED_NV 0x8C87 -#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88 -#define GL_RASTERIZER_DISCARD_NV 0x8C89 -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B -#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C -#define GL_SEPARATE_ATTRIBS_NV 0x8C8D -#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E -#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F -#define GL_LAYER_NV 0x8DAA -#define GL_NEXT_BUFFER_NV -2 -#define GL_SKIP_COMPONENTS4_NV -3 -#define GL_SKIP_COMPONENTS3_NV -4 -#define GL_SKIP_COMPONENTS2_NV -5 -#define GL_SKIP_COMPONENTS1_NV -6 -typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode); -typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC) (void); -typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode); -typedef void (APIENTRYP PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); -typedef void (APIENTRYP PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer); -typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); -typedef void (APIENTRYP PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name); -typedef GLint (APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name); -typedef void (APIENTRYP PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); -typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location); -typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC) (GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBeginTransformFeedbackNV (GLenum primitiveMode); -GLAPI void APIENTRY glEndTransformFeedbackNV (void); -GLAPI void APIENTRY glTransformFeedbackAttribsNV (GLuint count, const GLint *attribs, GLenum bufferMode); -GLAPI void APIENTRY glBindBufferRangeNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -GLAPI void APIENTRY glBindBufferOffsetNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset); -GLAPI void APIENTRY glBindBufferBaseNV (GLenum target, GLuint index, GLuint buffer); -GLAPI void APIENTRY glTransformFeedbackVaryingsNV (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); -GLAPI void APIENTRY glActiveVaryingNV (GLuint program, const GLchar *name); -GLAPI GLint APIENTRY glGetVaryingLocationNV (GLuint program, const GLchar *name); -GLAPI void APIENTRY glGetActiveVaryingNV (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); -GLAPI void APIENTRY glGetTransformFeedbackVaryingNV (GLuint program, GLuint index, GLint *location); -GLAPI void APIENTRY glTransformFeedbackStreamAttribsNV (GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode); -#endif -#endif /* GL_NV_transform_feedback */ - -#ifndef GL_NV_transform_feedback2 -#define GL_NV_transform_feedback2 1 -#define GL_TRANSFORM_FEEDBACK_NV 0x8E22 -#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23 -#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24 -#define GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25 -typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id); -typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint *ids); -typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSNVPROC) (GLsizei n, GLuint *ids); -typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKNVPROC) (GLuint id); -typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKNVPROC) (void); -typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKNVPROC) (void); -typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint id); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBindTransformFeedbackNV (GLenum target, GLuint id); -GLAPI void APIENTRY glDeleteTransformFeedbacksNV (GLsizei n, const GLuint *ids); -GLAPI void APIENTRY glGenTransformFeedbacksNV (GLsizei n, GLuint *ids); -GLAPI GLboolean APIENTRY glIsTransformFeedbackNV (GLuint id); -GLAPI void APIENTRY glPauseTransformFeedbackNV (void); -GLAPI void APIENTRY glResumeTransformFeedbackNV (void); -GLAPI void APIENTRY glDrawTransformFeedbackNV (GLenum mode, GLuint id); -#endif -#endif /* GL_NV_transform_feedback2 */ - -#ifndef GL_NV_vdpau_interop -#define GL_NV_vdpau_interop 1 -typedef GLintptr GLvdpauSurfaceNV; -#define GL_SURFACE_STATE_NV 0x86EB -#define GL_SURFACE_REGISTERED_NV 0x86FD -#define GL_SURFACE_MAPPED_NV 0x8700 -#define GL_WRITE_DISCARD_NV 0x88BE -typedef void (APIENTRYP PFNGLVDPAUINITNVPROC) (const GLvoid *vdpDevice, const GLvoid *getProcAddress); -typedef void (APIENTRYP PFNGLVDPAUFININVPROC) (void); -typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); -typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); -typedef void (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface); -typedef void (APIENTRYP PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface); -typedef void (APIENTRYP PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); -typedef void (APIENTRYP PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access); -typedef void (APIENTRYP PFNGLVDPAUMAPSURFACESNVPROC) (GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces); -typedef void (APIENTRYP PFNGLVDPAUUNMAPSURFACESNVPROC) (GLsizei numSurface, const GLvdpauSurfaceNV *surfaces); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVDPAUInitNV (const GLvoid *vdpDevice, const GLvoid *getProcAddress); -GLAPI void APIENTRY glVDPAUFiniNV (void); -GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV (const GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); -GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterOutputSurfaceNV (const GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); -GLAPI void APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface); -GLAPI void APIENTRY glVDPAUUnregisterSurfaceNV (GLvdpauSurfaceNV surface); -GLAPI void APIENTRY glVDPAUGetSurfaceivNV (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); -GLAPI void APIENTRY glVDPAUSurfaceAccessNV (GLvdpauSurfaceNV surface, GLenum access); -GLAPI void APIENTRY glVDPAUMapSurfacesNV (GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces); -GLAPI void APIENTRY glVDPAUUnmapSurfacesNV (GLsizei numSurface, const GLvdpauSurfaceNV *surfaces); -#endif -#endif /* GL_NV_vdpau_interop */ - -#ifndef GL_NV_vertex_array_range -#define GL_NV_vertex_array_range 1 -#define GL_VERTEX_ARRAY_RANGE_NV 0x851D -#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E -#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F -#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 -#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 -typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void); -typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const GLvoid *pointer); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFlushVertexArrayRangeNV (void); -GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei length, const GLvoid *pointer); -#endif -#endif /* GL_NV_vertex_array_range */ - -#ifndef GL_NV_vertex_array_range2 -#define GL_NV_vertex_array_range2 1 -#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 -#endif /* GL_NV_vertex_array_range2 */ - -#ifndef GL_NV_vertex_attrib_integer_64bit -#define GL_NV_vertex_attrib_integer_64bit 1 -typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT *v); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT *params); -typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexAttribL1i64NV (GLuint index, GLint64EXT x); -GLAPI void APIENTRY glVertexAttribL2i64NV (GLuint index, GLint64EXT x, GLint64EXT y); -GLAPI void APIENTRY glVertexAttribL3i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); -GLAPI void APIENTRY glVertexAttribL4i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); -GLAPI void APIENTRY glVertexAttribL1i64vNV (GLuint index, const GLint64EXT *v); -GLAPI void APIENTRY glVertexAttribL2i64vNV (GLuint index, const GLint64EXT *v); -GLAPI void APIENTRY glVertexAttribL3i64vNV (GLuint index, const GLint64EXT *v); -GLAPI void APIENTRY glVertexAttribL4i64vNV (GLuint index, const GLint64EXT *v); -GLAPI void APIENTRY glVertexAttribL1ui64NV (GLuint index, GLuint64EXT x); -GLAPI void APIENTRY glVertexAttribL2ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y); -GLAPI void APIENTRY glVertexAttribL3ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); -GLAPI void APIENTRY glVertexAttribL4ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); -GLAPI void APIENTRY glVertexAttribL1ui64vNV (GLuint index, const GLuint64EXT *v); -GLAPI void APIENTRY glVertexAttribL2ui64vNV (GLuint index, const GLuint64EXT *v); -GLAPI void APIENTRY glVertexAttribL3ui64vNV (GLuint index, const GLuint64EXT *v); -GLAPI void APIENTRY glVertexAttribL4ui64vNV (GLuint index, const GLuint64EXT *v); -GLAPI void APIENTRY glGetVertexAttribLi64vNV (GLuint index, GLenum pname, GLint64EXT *params); -GLAPI void APIENTRY glGetVertexAttribLui64vNV (GLuint index, GLenum pname, GLuint64EXT *params); -GLAPI void APIENTRY glVertexAttribLFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride); -#endif -#endif /* GL_NV_vertex_attrib_integer_64bit */ - -#ifndef GL_NV_vertex_buffer_unified_memory -#define GL_NV_vertex_buffer_unified_memory 1 -#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E -#define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F -#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20 -#define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21 -#define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22 -#define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23 -#define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24 -#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25 -#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26 -#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27 -#define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28 -#define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29 -#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A -#define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B -#define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C -#define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D -#define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E -#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F -#define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30 -#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31 -#define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32 -#define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33 -#define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40 -#define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41 -#define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42 -typedef void (APIENTRYP PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); -typedef void (APIENTRYP PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); -typedef void (APIENTRYP PFNGLNORMALFORMATNVPROC) (GLenum type, GLsizei stride); -typedef void (APIENTRYP PFNGLCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); -typedef void (APIENTRYP PFNGLINDEXFORMATNVPROC) (GLenum type, GLsizei stride); -typedef void (APIENTRYP PFNGLTEXCOORDFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); -typedef void (APIENTRYP PFNGLEDGEFLAGFORMATNVPROC) (GLsizei stride); -typedef void (APIENTRYP PFNGLSECONDARYCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); -typedef void (APIENTRYP PFNGLFOGCOORDFORMATNVPROC) (GLenum type, GLsizei stride); -typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride); -typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); -typedef void (APIENTRYP PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT *result); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBufferAddressRangeNV (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); -GLAPI void APIENTRY glVertexFormatNV (GLint size, GLenum type, GLsizei stride); -GLAPI void APIENTRY glNormalFormatNV (GLenum type, GLsizei stride); -GLAPI void APIENTRY glColorFormatNV (GLint size, GLenum type, GLsizei stride); -GLAPI void APIENTRY glIndexFormatNV (GLenum type, GLsizei stride); -GLAPI void APIENTRY glTexCoordFormatNV (GLint size, GLenum type, GLsizei stride); -GLAPI void APIENTRY glEdgeFlagFormatNV (GLsizei stride); -GLAPI void APIENTRY glSecondaryColorFormatNV (GLint size, GLenum type, GLsizei stride); -GLAPI void APIENTRY glFogCoordFormatNV (GLenum type, GLsizei stride); -GLAPI void APIENTRY glVertexAttribFormatNV (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride); -GLAPI void APIENTRY glVertexAttribIFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride); -GLAPI void APIENTRY glGetIntegerui64i_vNV (GLenum value, GLuint index, GLuint64EXT *result); -#endif -#endif /* GL_NV_vertex_buffer_unified_memory */ - -#ifndef GL_NV_vertex_program -#define GL_NV_vertex_program 1 -#define GL_VERTEX_PROGRAM_NV 0x8620 -#define GL_VERTEX_STATE_PROGRAM_NV 0x8621 -#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 -#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 -#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 -#define GL_CURRENT_ATTRIB_NV 0x8626 -#define GL_PROGRAM_LENGTH_NV 0x8627 -#define GL_PROGRAM_STRING_NV 0x8628 -#define GL_MODELVIEW_PROJECTION_NV 0x8629 -#define GL_IDENTITY_NV 0x862A -#define GL_INVERSE_NV 0x862B -#define GL_TRANSPOSE_NV 0x862C -#define GL_INVERSE_TRANSPOSE_NV 0x862D -#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E -#define GL_MAX_TRACK_MATRICES_NV 0x862F -#define GL_MATRIX0_NV 0x8630 -#define GL_MATRIX1_NV 0x8631 -#define GL_MATRIX2_NV 0x8632 -#define GL_MATRIX3_NV 0x8633 -#define GL_MATRIX4_NV 0x8634 -#define GL_MATRIX5_NV 0x8635 -#define GL_MATRIX6_NV 0x8636 -#define GL_MATRIX7_NV 0x8637 -#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 -#define GL_CURRENT_MATRIX_NV 0x8641 -#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 -#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 -#define GL_PROGRAM_PARAMETER_NV 0x8644 -#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 -#define GL_PROGRAM_TARGET_NV 0x8646 -#define GL_PROGRAM_RESIDENT_NV 0x8647 -#define GL_TRACK_MATRIX_NV 0x8648 -#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 -#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A -#define GL_PROGRAM_ERROR_POSITION_NV 0x864B -#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 -#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 -#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 -#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 -#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 -#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 -#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 -#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 -#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 -#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 -#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A -#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B -#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C -#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D -#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E -#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F -#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 -#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 -#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 -#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 -#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 -#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 -#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 -#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 -#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 -#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 -#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A -#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B -#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C -#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D -#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E -#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F -#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 -#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 -#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 -#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 -#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 -#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 -#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 -#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 -#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 -#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 -#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A -#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B -#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C -#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D -#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E -#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F -typedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences); -typedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id); -typedef void (APIENTRYP PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); -typedef void (APIENTRYP PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params); -typedef void (APIENTRYP PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs); -typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params); -typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program); -typedef void (APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid **pointer); -typedef GLboolean (APIENTRYP PFNGLISPROGRAMNVPROC) (GLuint id); -typedef void (APIENTRYP PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program); -typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLdouble *v); -typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *v); -typedef void (APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); -typedef void (APIENTRYP PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform); -typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei n, const GLuint *programs, GLboolean *residences); -GLAPI void APIENTRY glBindProgramNV (GLenum target, GLuint id); -GLAPI void APIENTRY glDeleteProgramsNV (GLsizei n, const GLuint *programs); -GLAPI void APIENTRY glExecuteProgramNV (GLenum target, GLuint id, const GLfloat *params); -GLAPI void APIENTRY glGenProgramsNV (GLsizei n, GLuint *programs); -GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum target, GLuint index, GLenum pname, GLdouble *params); -GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetProgramivNV (GLuint id, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetProgramStringNV (GLuint id, GLenum pname, GLubyte *program); -GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum target, GLuint address, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint index, GLenum pname, GLdouble *params); -GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint index, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetVertexAttribivNV (GLuint index, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint index, GLenum pname, GLvoid **pointer); -GLAPI GLboolean APIENTRY glIsProgramNV (GLuint id); -GLAPI void APIENTRY glLoadProgramNV (GLenum target, GLuint id, GLsizei len, const GLubyte *program); -GLAPI void APIENTRY glProgramParameter4dNV (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI void APIENTRY glProgramParameter4dvNV (GLenum target, GLuint index, const GLdouble *v); -GLAPI void APIENTRY glProgramParameter4fNV (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI void APIENTRY glProgramParameter4fvNV (GLenum target, GLuint index, const GLfloat *v); -GLAPI void APIENTRY glProgramParameters4dvNV (GLenum target, GLuint index, GLsizei count, const GLdouble *v); -GLAPI void APIENTRY glProgramParameters4fvNV (GLenum target, GLuint index, GLsizei count, const GLfloat *v); -GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei n, const GLuint *programs); -GLAPI void APIENTRY glTrackMatrixNV (GLenum target, GLuint address, GLenum matrix, GLenum transform); -GLAPI void APIENTRY glVertexAttribPointerNV (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void APIENTRY glVertexAttrib1dNV (GLuint index, GLdouble x); -GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint index, const GLdouble *v); -GLAPI void APIENTRY glVertexAttrib1fNV (GLuint index, GLfloat x); -GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint index, const GLfloat *v); -GLAPI void APIENTRY glVertexAttrib1sNV (GLuint index, GLshort x); -GLAPI void APIENTRY glVertexAttrib1svNV (GLuint index, const GLshort *v); -GLAPI void APIENTRY glVertexAttrib2dNV (GLuint index, GLdouble x, GLdouble y); -GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint index, const GLdouble *v); -GLAPI void APIENTRY glVertexAttrib2fNV (GLuint index, GLfloat x, GLfloat y); -GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint index, const GLfloat *v); -GLAPI void APIENTRY glVertexAttrib2sNV (GLuint index, GLshort x, GLshort y); -GLAPI void APIENTRY glVertexAttrib2svNV (GLuint index, const GLshort *v); -GLAPI void APIENTRY glVertexAttrib3dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z); -GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint index, const GLdouble *v); -GLAPI void APIENTRY glVertexAttrib3fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint index, const GLfloat *v); -GLAPI void APIENTRY glVertexAttrib3sNV (GLuint index, GLshort x, GLshort y, GLshort z); -GLAPI void APIENTRY glVertexAttrib3svNV (GLuint index, const GLshort *v); -GLAPI void APIENTRY glVertexAttrib4dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint index, const GLdouble *v); -GLAPI void APIENTRY glVertexAttrib4fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint index, const GLfloat *v); -GLAPI void APIENTRY glVertexAttrib4sNV (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -GLAPI void APIENTRY glVertexAttrib4svNV (GLuint index, const GLshort *v); -GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint index, const GLubyte *v); -GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint index, GLsizei count, const GLdouble *v); -GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint index, GLsizei count, const GLfloat *v); -GLAPI void APIENTRY glVertexAttribs1svNV (GLuint index, GLsizei count, const GLshort *v); -GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint index, GLsizei count, const GLdouble *v); -GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint index, GLsizei count, const GLfloat *v); -GLAPI void APIENTRY glVertexAttribs2svNV (GLuint index, GLsizei count, const GLshort *v); -GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint index, GLsizei count, const GLdouble *v); -GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint index, GLsizei count, const GLfloat *v); -GLAPI void APIENTRY glVertexAttribs3svNV (GLuint index, GLsizei count, const GLshort *v); -GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint index, GLsizei count, const GLdouble *v); -GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint index, GLsizei count, const GLfloat *v); -GLAPI void APIENTRY glVertexAttribs4svNV (GLuint index, GLsizei count, const GLshort *v); -GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint index, GLsizei count, const GLubyte *v); -#endif -#endif /* GL_NV_vertex_program */ - -#ifndef GL_NV_vertex_program1_1 -#define GL_NV_vertex_program1_1 1 -#endif /* GL_NV_vertex_program1_1 */ - -#ifndef GL_NV_vertex_program2 -#define GL_NV_vertex_program2 1 -#endif /* GL_NV_vertex_program2 */ - -#ifndef GL_NV_vertex_program2_option -#define GL_NV_vertex_program2_option 1 -#endif /* GL_NV_vertex_program2_option */ - -#ifndef GL_NV_vertex_program3 -#define GL_NV_vertex_program3 1 -#endif /* GL_NV_vertex_program3 */ - -#ifndef GL_NV_vertex_program4 -#define GL_NV_vertex_program4 1 -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint index, GLint x); -GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint index, GLint x, GLint y); -GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint index, GLint x, GLint y, GLint z); -GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint index, GLint x, GLint y, GLint z, GLint w); -GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint index, GLuint x); -GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint index, GLuint x, GLuint y); -GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint index, GLuint x, GLuint y, GLuint z); -GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint index, const GLint *v); -GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint index, const GLint *v); -GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint index, const GLint *v); -GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint index, const GLint *v); -GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint index, const GLuint *v); -GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint index, const GLuint *v); -GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint index, const GLuint *v); -GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint index, const GLuint *v); -GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint index, const GLbyte *v); -GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint index, const GLshort *v); -GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint index, const GLubyte *v); -GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint index, const GLushort *v); -GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint index, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint index, GLenum pname, GLuint *params); -#endif -#endif /* GL_NV_vertex_program4 */ - -#ifndef GL_NV_video_capture -#define GL_NV_video_capture 1 -#define GL_VIDEO_BUFFER_NV 0x9020 -#define GL_VIDEO_BUFFER_BINDING_NV 0x9021 -#define GL_FIELD_UPPER_NV 0x9022 -#define GL_FIELD_LOWER_NV 0x9023 -#define GL_NUM_VIDEO_CAPTURE_STREAMS_NV 0x9024 -#define GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025 -#define GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026 -#define GL_LAST_VIDEO_CAPTURE_STATUS_NV 0x9027 -#define GL_VIDEO_BUFFER_PITCH_NV 0x9028 -#define GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029 -#define GL_VIDEO_COLOR_CONVERSION_MAX_NV 0x902A -#define GL_VIDEO_COLOR_CONVERSION_MIN_NV 0x902B -#define GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C -#define GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D -#define GL_PARTIAL_SUCCESS_NV 0x902E -#define GL_SUCCESS_NV 0x902F -#define GL_FAILURE_NV 0x9030 -#define GL_YCBYCR8_422_NV 0x9031 -#define GL_YCBAYCR8A_4224_NV 0x9032 -#define GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV 0x9033 -#define GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034 -#define GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV 0x9035 -#define GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036 -#define GL_Z4Y12Z4CB12Z4CR12_444_NV 0x9037 -#define GL_VIDEO_CAPTURE_FRAME_WIDTH_NV 0x9038 -#define GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV 0x9039 -#define GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A -#define GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B -#define GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C -typedef void (APIENTRYP PFNGLBEGINVIDEOCAPTURENVPROC) (GLuint video_capture_slot); -typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset); -typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture); -typedef void (APIENTRYP PFNGLENDVIDEOCAPTURENVPROC) (GLuint video_capture_slot); -typedef void (APIENTRYP PFNGLGETVIDEOCAPTUREIVNVPROC) (GLuint video_capture_slot, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params); -typedef GLenum (APIENTRYP PFNGLVIDEOCAPTURENVPROC) (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time); -typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBeginVideoCaptureNV (GLuint video_capture_slot); -GLAPI void APIENTRY glBindVideoCaptureStreamBufferNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset); -GLAPI void APIENTRY glBindVideoCaptureStreamTextureNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture); -GLAPI void APIENTRY glEndVideoCaptureNV (GLuint video_capture_slot); -GLAPI void APIENTRY glGetVideoCaptureivNV (GLuint video_capture_slot, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetVideoCaptureStreamivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetVideoCaptureStreamfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetVideoCaptureStreamdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params); -GLAPI GLenum APIENTRY glVideoCaptureNV (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time); -GLAPI void APIENTRY glVideoCaptureStreamParameterivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params); -GLAPI void APIENTRY glVideoCaptureStreamParameterfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params); -GLAPI void APIENTRY glVideoCaptureStreamParameterdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params); -#endif -#endif /* GL_NV_video_capture */ - -#ifndef GL_OML_interlace -#define GL_OML_interlace 1 -#define GL_INTERLACE_OML 0x8980 -#define GL_INTERLACE_READ_OML 0x8981 -#endif /* GL_OML_interlace */ - -#ifndef GL_OML_resample -#define GL_OML_resample 1 -#define GL_PACK_RESAMPLE_OML 0x8984 -#define GL_UNPACK_RESAMPLE_OML 0x8985 -#define GL_RESAMPLE_REPLICATE_OML 0x8986 -#define GL_RESAMPLE_ZERO_FILL_OML 0x8987 -#define GL_RESAMPLE_AVERAGE_OML 0x8988 -#define GL_RESAMPLE_DECIMATE_OML 0x8989 -#endif /* GL_OML_resample */ - -#ifndef GL_OML_subsample -#define GL_OML_subsample 1 -#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 -#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 -#endif /* GL_OML_subsample */ - -#ifndef GL_PGI_misc_hints -#define GL_PGI_misc_hints 1 -#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8 -#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD -#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE -#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202 -#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203 -#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204 -#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C -#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D -#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E -#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F -#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210 -#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211 -#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216 -#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217 -#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218 -#define GL_FULL_STIPPLE_HINT_PGI 0x1A219 -#define GL_CLIP_NEAR_HINT_PGI 0x1A220 -#define GL_CLIP_FAR_HINT_PGI 0x1A221 -#define GL_WIDE_LINE_HINT_PGI 0x1A222 -#define GL_BACK_NORMALS_HINT_PGI 0x1A223 -typedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glHintPGI (GLenum target, GLint mode); -#endif -#endif /* GL_PGI_misc_hints */ - -#ifndef GL_PGI_vertex_hints -#define GL_PGI_vertex_hints 1 -#define GL_VERTEX_DATA_HINT_PGI 0x1A22A -#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B -#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C -#define GL_MAX_VERTEX_HINT_PGI 0x1A22D -#define GL_COLOR3_BIT_PGI 0x00010000 -#define GL_COLOR4_BIT_PGI 0x00020000 -#define GL_EDGEFLAG_BIT_PGI 0x00040000 -#define GL_INDEX_BIT_PGI 0x00080000 -#define GL_MAT_AMBIENT_BIT_PGI 0x00100000 -#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000 -#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 -#define GL_MAT_EMISSION_BIT_PGI 0x00800000 -#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 -#define GL_MAT_SHININESS_BIT_PGI 0x02000000 -#define GL_MAT_SPECULAR_BIT_PGI 0x04000000 -#define GL_NORMAL_BIT_PGI 0x08000000 -#define GL_TEXCOORD1_BIT_PGI 0x10000000 -#define GL_TEXCOORD2_BIT_PGI 0x20000000 -#define GL_TEXCOORD3_BIT_PGI 0x40000000 -#define GL_TEXCOORD4_BIT_PGI 0x80000000 -#define GL_VERTEX23_BIT_PGI 0x00000004 -#define GL_VERTEX4_BIT_PGI 0x00000008 -#endif /* GL_PGI_vertex_hints */ - -#ifndef GL_REND_screen_coordinates -#define GL_REND_screen_coordinates 1 -#define GL_SCREEN_COORDINATES_REND 0x8490 -#define GL_INVERTED_SCREEN_W_REND 0x8491 -#endif /* GL_REND_screen_coordinates */ - -#ifndef GL_S3_s3tc -#define GL_S3_s3tc 1 -#define GL_RGB_S3TC 0x83A0 -#define GL_RGB4_S3TC 0x83A1 -#define GL_RGBA_S3TC 0x83A2 -#define GL_RGBA4_S3TC 0x83A3 -#define GL_RGBA_DXT5_S3TC 0x83A4 -#define GL_RGBA4_DXT5_S3TC 0x83A5 -#endif /* GL_S3_s3tc */ - -#ifndef GL_SGIS_detail_texture -#define GL_SGIS_detail_texture 1 -#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095 -#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096 -#define GL_LINEAR_DETAIL_SGIS 0x8097 -#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098 -#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099 -#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A -#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B -#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C -typedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); -typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points); -GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum target, GLfloat *points); -#endif -#endif /* GL_SGIS_detail_texture */ - -#ifndef GL_SGIS_fog_function -#define GL_SGIS_fog_function 1 -#define GL_FOG_FUNC_SGIS 0x812A -#define GL_FOG_FUNC_POINTS_SGIS 0x812B -#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C -typedef void (APIENTRYP PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points); -typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFogFuncSGIS (GLsizei n, const GLfloat *points); -GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *points); -#endif -#endif /* GL_SGIS_fog_function */ - -#ifndef GL_SGIS_generate_mipmap -#define GL_SGIS_generate_mipmap 1 -#define GL_GENERATE_MIPMAP_SGIS 0x8191 -#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 -#endif /* GL_SGIS_generate_mipmap */ - -#ifndef GL_SGIS_multisample -#define GL_SGIS_multisample 1 -#define GL_MULTISAMPLE_SGIS 0x809D -#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F -#define GL_SAMPLE_MASK_SGIS 0x80A0 -#define GL_1PASS_SGIS 0x80A1 -#define GL_2PASS_0_SGIS 0x80A2 -#define GL_2PASS_1_SGIS 0x80A3 -#define GL_4PASS_0_SGIS 0x80A4 -#define GL_4PASS_1_SGIS 0x80A5 -#define GL_4PASS_2_SGIS 0x80A6 -#define GL_4PASS_3_SGIS 0x80A7 -#define GL_SAMPLE_BUFFERS_SGIS 0x80A8 -#define GL_SAMPLES_SGIS 0x80A9 -#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA -#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB -#define GL_SAMPLE_PATTERN_SGIS 0x80AC -typedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert); -typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glSampleMaskSGIS (GLclampf value, GLboolean invert); -GLAPI void APIENTRY glSamplePatternSGIS (GLenum pattern); -#endif -#endif /* GL_SGIS_multisample */ - -#ifndef GL_SGIS_pixel_texture -#define GL_SGIS_pixel_texture 1 -#define GL_PIXEL_TEXTURE_SGIS 0x8353 -#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354 -#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355 -#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356 -typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum pname, GLint param); -GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum pname, const GLint *params); -GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum pname, GLfloat param); -GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum pname, const GLfloat *params); -GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum pname, GLint *params); -GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum pname, GLfloat *params); -#endif -#endif /* GL_SGIS_pixel_texture */ - -#ifndef GL_SGIS_point_line_texgen -#define GL_SGIS_point_line_texgen 1 -#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 -#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 -#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 -#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 -#define GL_EYE_POINT_SGIS 0x81F4 -#define GL_OBJECT_POINT_SGIS 0x81F5 -#define GL_EYE_LINE_SGIS 0x81F6 -#define GL_OBJECT_LINE_SGIS 0x81F7 -#endif /* GL_SGIS_point_line_texgen */ - -#ifndef GL_SGIS_point_parameters -#define GL_SGIS_point_parameters 1 -#define GL_POINT_SIZE_MIN_SGIS 0x8126 -#define GL_POINT_SIZE_MAX_SGIS 0x8127 -#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128 -#define GL_DISTANCE_ATTENUATION_SGIS 0x8129 -typedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPointParameterfSGIS (GLenum pname, GLfloat param); -GLAPI void APIENTRY glPointParameterfvSGIS (GLenum pname, const GLfloat *params); -#endif -#endif /* GL_SGIS_point_parameters */ - -#ifndef GL_SGIS_sharpen_texture -#define GL_SGIS_sharpen_texture 1 -#define GL_LINEAR_SHARPEN_SGIS 0x80AD -#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE -#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF -#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0 -typedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); -typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points); -GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum target, GLfloat *points); -#endif -#endif /* GL_SGIS_sharpen_texture */ - -#ifndef GL_SGIS_texture4D -#define GL_SGIS_texture4D 1 -#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130 -#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131 -#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132 -#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133 -#define GL_TEXTURE_4D_SGIS 0x8134 -#define GL_PROXY_TEXTURE_4D_SGIS 0x8135 -#define GL_TEXTURE_4DSIZE_SGIS 0x8136 -#define GL_TEXTURE_WRAP_Q_SGIS 0x8137 -#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138 -#define GL_TEXTURE_4D_BINDING_SGIS 0x814F -typedef void (APIENTRYP PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTexImage4DSGIS (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels); -#endif -#endif /* GL_SGIS_texture4D */ - -#ifndef GL_SGIS_texture_border_clamp -#define GL_SGIS_texture_border_clamp 1 -#define GL_CLAMP_TO_BORDER_SGIS 0x812D -#endif /* GL_SGIS_texture_border_clamp */ - -#ifndef GL_SGIS_texture_color_mask -#define GL_SGIS_texture_color_mask 1 -#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF -typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); -#endif -#endif /* GL_SGIS_texture_color_mask */ - -#ifndef GL_SGIS_texture_edge_clamp -#define GL_SGIS_texture_edge_clamp 1 -#define GL_CLAMP_TO_EDGE_SGIS 0x812F -#endif /* GL_SGIS_texture_edge_clamp */ - -#ifndef GL_SGIS_texture_filter4 -#define GL_SGIS_texture_filter4 1 -#define GL_FILTER4_SGIS 0x8146 -#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147 -typedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights); -typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum target, GLenum filter, GLfloat *weights); -GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); -#endif -#endif /* GL_SGIS_texture_filter4 */ - -#ifndef GL_SGIS_texture_lod -#define GL_SGIS_texture_lod 1 -#define GL_TEXTURE_MIN_LOD_SGIS 0x813A -#define GL_TEXTURE_MAX_LOD_SGIS 0x813B -#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C -#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D -#endif /* GL_SGIS_texture_lod */ - -#ifndef GL_SGIS_texture_select -#define GL_SGIS_texture_select 1 -#define GL_DUAL_ALPHA4_SGIS 0x8110 -#define GL_DUAL_ALPHA8_SGIS 0x8111 -#define GL_DUAL_ALPHA12_SGIS 0x8112 -#define GL_DUAL_ALPHA16_SGIS 0x8113 -#define GL_DUAL_LUMINANCE4_SGIS 0x8114 -#define GL_DUAL_LUMINANCE8_SGIS 0x8115 -#define GL_DUAL_LUMINANCE12_SGIS 0x8116 -#define GL_DUAL_LUMINANCE16_SGIS 0x8117 -#define GL_DUAL_INTENSITY4_SGIS 0x8118 -#define GL_DUAL_INTENSITY8_SGIS 0x8119 -#define GL_DUAL_INTENSITY12_SGIS 0x811A -#define GL_DUAL_INTENSITY16_SGIS 0x811B -#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C -#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D -#define GL_QUAD_ALPHA4_SGIS 0x811E -#define GL_QUAD_ALPHA8_SGIS 0x811F -#define GL_QUAD_LUMINANCE4_SGIS 0x8120 -#define GL_QUAD_LUMINANCE8_SGIS 0x8121 -#define GL_QUAD_INTENSITY4_SGIS 0x8122 -#define GL_QUAD_INTENSITY8_SGIS 0x8123 -#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124 -#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125 -#endif /* GL_SGIS_texture_select */ - -#ifndef GL_SGIX_async -#define GL_SGIX_async 1 -#define GL_ASYNC_MARKER_SGIX 0x8329 -typedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC) (GLuint marker); -typedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp); -typedef GLint (APIENTRYP PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp); -typedef GLuint (APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range); -typedef void (APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range); -typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC) (GLuint marker); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint marker); -GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *markerp); -GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *markerp); -GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei range); -GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint marker, GLsizei range); -GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint marker); -#endif -#endif /* GL_SGIX_async */ - -#ifndef GL_SGIX_async_histogram -#define GL_SGIX_async_histogram 1 -#define GL_ASYNC_HISTOGRAM_SGIX 0x832C -#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D -#endif /* GL_SGIX_async_histogram */ - -#ifndef GL_SGIX_async_pixel -#define GL_SGIX_async_pixel 1 -#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C -#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D -#define GL_ASYNC_READ_PIXELS_SGIX 0x835E -#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F -#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 -#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 -#endif /* GL_SGIX_async_pixel */ - -#ifndef GL_SGIX_blend_alpha_minmax -#define GL_SGIX_blend_alpha_minmax 1 -#define GL_ALPHA_MIN_SGIX 0x8320 -#define GL_ALPHA_MAX_SGIX 0x8321 -#endif /* GL_SGIX_blend_alpha_minmax */ - -#ifndef GL_SGIX_calligraphic_fragment -#define GL_SGIX_calligraphic_fragment 1 -#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183 -#endif /* GL_SGIX_calligraphic_fragment */ - -#ifndef GL_SGIX_clipmap -#define GL_SGIX_clipmap 1 -#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170 -#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171 -#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172 -#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173 -#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174 -#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175 -#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176 -#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177 -#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178 -#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D -#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E -#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F -#endif /* GL_SGIX_clipmap */ - -#ifndef GL_SGIX_convolution_accuracy -#define GL_SGIX_convolution_accuracy 1 -#define GL_CONVOLUTION_HINT_SGIX 0x8316 -#endif /* GL_SGIX_convolution_accuracy */ - -#ifndef GL_SGIX_depth_pass_instrument -#define GL_SGIX_depth_pass_instrument 1 -#endif /* GL_SGIX_depth_pass_instrument */ - -#ifndef GL_SGIX_depth_texture -#define GL_SGIX_depth_texture 1 -#define GL_DEPTH_COMPONENT16_SGIX 0x81A5 -#define GL_DEPTH_COMPONENT24_SGIX 0x81A6 -#define GL_DEPTH_COMPONENT32_SGIX 0x81A7 -#endif /* GL_SGIX_depth_texture */ - -#ifndef GL_SGIX_flush_raster -#define GL_SGIX_flush_raster 1 -typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC) (void); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFlushRasterSGIX (void); -#endif -#endif /* GL_SGIX_flush_raster */ - -#ifndef GL_SGIX_fog_offset -#define GL_SGIX_fog_offset 1 -#define GL_FOG_OFFSET_SGIX 0x8198 -#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 -#endif /* GL_SGIX_fog_offset */ - -#ifndef GL_SGIX_fragment_lighting -#define GL_SGIX_fragment_lighting 1 -#define GL_FRAGMENT_LIGHTING_SGIX 0x8400 -#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401 -#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402 -#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403 -#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404 -#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405 -#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406 -#define GL_LIGHT_ENV_MODE_SGIX 0x8407 -#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408 -#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409 -#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A -#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B -#define GL_FRAGMENT_LIGHT0_SGIX 0x840C -#define GL_FRAGMENT_LIGHT1_SGIX 0x840D -#define GL_FRAGMENT_LIGHT2_SGIX 0x840E -#define GL_FRAGMENT_LIGHT3_SGIX 0x840F -#define GL_FRAGMENT_LIGHT4_SGIX 0x8410 -#define GL_FRAGMENT_LIGHT5_SGIX 0x8411 -#define GL_FRAGMENT_LIGHT6_SGIX 0x8412 -#define GL_FRAGMENT_LIGHT7_SGIX 0x8413 -typedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum face, GLenum mode); -GLAPI void APIENTRY glFragmentLightfSGIX (GLenum light, GLenum pname, GLfloat param); -GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum light, GLenum pname, const GLfloat *params); -GLAPI void APIENTRY glFragmentLightiSGIX (GLenum light, GLenum pname, GLint param); -GLAPI void APIENTRY glFragmentLightivSGIX (GLenum light, GLenum pname, const GLint *params); -GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum pname, GLfloat param); -GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum pname, const GLfloat *params); -GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum pname, GLint param); -GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum pname, const GLint *params); -GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum face, GLenum pname, GLfloat param); -GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum face, GLenum pname, const GLfloat *params); -GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum face, GLenum pname, GLint param); -GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum face, GLenum pname, const GLint *params); -GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum light, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum light, GLenum pname, GLint *params); -GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum face, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum face, GLenum pname, GLint *params); -GLAPI void APIENTRY glLightEnviSGIX (GLenum pname, GLint param); -#endif -#endif /* GL_SGIX_fragment_lighting */ - -#ifndef GL_SGIX_framezoom -#define GL_SGIX_framezoom 1 -#define GL_FRAMEZOOM_SGIX 0x818B -#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C -#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D -typedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC) (GLint factor); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFrameZoomSGIX (GLint factor); -#endif -#endif /* GL_SGIX_framezoom */ - -#ifndef GL_SGIX_igloo_interface -#define GL_SGIX_igloo_interface 1 -typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const GLvoid *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum pname, const GLvoid *params); -#endif -#endif /* GL_SGIX_igloo_interface */ - -#ifndef GL_SGIX_instruments -#define GL_SGIX_instruments 1 -#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180 -#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181 -typedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC) (void); -typedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer); -typedef GLint (APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p); -typedef void (APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker); -typedef void (APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC) (void); -typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI GLint APIENTRY glGetInstrumentsSGIX (void); -GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei size, GLint *buffer); -GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *marker_p); -GLAPI void APIENTRY glReadInstrumentsSGIX (GLint marker); -GLAPI void APIENTRY glStartInstrumentsSGIX (void); -GLAPI void APIENTRY glStopInstrumentsSGIX (GLint marker); -#endif -#endif /* GL_SGIX_instruments */ - -#ifndef GL_SGIX_interlace -#define GL_SGIX_interlace 1 -#define GL_INTERLACE_SGIX 0x8094 -#endif /* GL_SGIX_interlace */ - -#ifndef GL_SGIX_ir_instrument1 -#define GL_SGIX_ir_instrument1 1 -#define GL_IR_INSTRUMENT1_SGIX 0x817F -#endif /* GL_SGIX_ir_instrument1 */ - -#ifndef GL_SGIX_list_priority -#define GL_SGIX_list_priority 1 -#define GL_LIST_PRIORITY_SGIX 0x8182 -typedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint list, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetListParameterivSGIX (GLuint list, GLenum pname, GLint *params); -GLAPI void APIENTRY glListParameterfSGIX (GLuint list, GLenum pname, GLfloat param); -GLAPI void APIENTRY glListParameterfvSGIX (GLuint list, GLenum pname, const GLfloat *params); -GLAPI void APIENTRY glListParameteriSGIX (GLuint list, GLenum pname, GLint param); -GLAPI void APIENTRY glListParameterivSGIX (GLuint list, GLenum pname, const GLint *params); -#endif -#endif /* GL_SGIX_list_priority */ - -#ifndef GL_SGIX_pixel_texture -#define GL_SGIX_pixel_texture 1 -#define GL_PIXEL_TEX_GEN_SGIX 0x8139 -#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B -typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPixelTexGenSGIX (GLenum mode); -#endif -#endif /* GL_SGIX_pixel_texture */ - -#ifndef GL_SGIX_pixel_tiles -#define GL_SGIX_pixel_tiles 1 -#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E -#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F -#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140 -#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141 -#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142 -#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143 -#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144 -#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145 -#endif /* GL_SGIX_pixel_tiles */ - -#ifndef GL_SGIX_polynomial_ffd -#define GL_SGIX_polynomial_ffd 1 -#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001 -#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002 -#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194 -#define GL_TEXTURE_DEFORMATION_SGIX 0x8195 -#define GL_DEFORMATIONS_MASK_SGIX 0x8196 -#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197 -typedef void (APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points); -typedef void (APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points); -typedef void (APIENTRYP PFNGLDEFORMSGIXPROC) (GLbitfield mask); -typedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points); -GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points); -GLAPI void APIENTRY glDeformSGIX (GLbitfield mask); -GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield mask); -#endif -#endif /* GL_SGIX_polynomial_ffd */ - -#ifndef GL_SGIX_reference_plane -#define GL_SGIX_reference_plane 1 -#define GL_REFERENCE_PLANE_SGIX 0x817D -#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E -typedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *equation); -#endif -#endif /* GL_SGIX_reference_plane */ - -#ifndef GL_SGIX_resample -#define GL_SGIX_resample 1 -#define GL_PACK_RESAMPLE_SGIX 0x842C -#define GL_UNPACK_RESAMPLE_SGIX 0x842D -#define GL_RESAMPLE_REPLICATE_SGIX 0x842E -#define GL_RESAMPLE_ZERO_FILL_SGIX 0x842F -#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 -#endif /* GL_SGIX_resample */ - -#ifndef GL_SGIX_scalebias_hint -#define GL_SGIX_scalebias_hint 1 -#define GL_SCALEBIAS_HINT_SGIX 0x8322 -#endif /* GL_SGIX_scalebias_hint */ - -#ifndef GL_SGIX_shadow -#define GL_SGIX_shadow 1 -#define GL_TEXTURE_COMPARE_SGIX 0x819A -#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B -#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C -#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D -#endif /* GL_SGIX_shadow */ - -#ifndef GL_SGIX_shadow_ambient -#define GL_SGIX_shadow_ambient 1 -#define GL_SHADOW_AMBIENT_SGIX 0x80BF -#endif /* GL_SGIX_shadow_ambient */ - -#ifndef GL_SGIX_sprite -#define GL_SGIX_sprite 1 -#define GL_SPRITE_SGIX 0x8148 -#define GL_SPRITE_MODE_SGIX 0x8149 -#define GL_SPRITE_AXIS_SGIX 0x814A -#define GL_SPRITE_TRANSLATION_SGIX 0x814B -#define GL_SPRITE_AXIAL_SGIX 0x814C -#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D -#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E -typedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum pname, GLfloat param); -GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum pname, const GLfloat *params); -GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum pname, GLint param); -GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum pname, const GLint *params); -#endif -#endif /* GL_SGIX_sprite */ - -#ifndef GL_SGIX_subsample -#define GL_SGIX_subsample 1 -#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0 -#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1 -#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2 -#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3 -#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4 -#endif /* GL_SGIX_subsample */ - -#ifndef GL_SGIX_tag_sample_buffer -#define GL_SGIX_tag_sample_buffer 1 -typedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC) (void); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTagSampleBufferSGIX (void); -#endif -#endif /* GL_SGIX_tag_sample_buffer */ - -#ifndef GL_SGIX_texture_add_env -#define GL_SGIX_texture_add_env 1 -#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE -#endif /* GL_SGIX_texture_add_env */ - -#ifndef GL_SGIX_texture_coordinate_clamp -#define GL_SGIX_texture_coordinate_clamp 1 -#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 -#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A -#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B -#endif /* GL_SGIX_texture_coordinate_clamp */ - -#ifndef GL_SGIX_texture_lod_bias -#define GL_SGIX_texture_lod_bias 1 -#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E -#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F -#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190 -#endif /* GL_SGIX_texture_lod_bias */ - -#ifndef GL_SGIX_texture_multi_buffer -#define GL_SGIX_texture_multi_buffer 1 -#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E -#endif /* GL_SGIX_texture_multi_buffer */ - -#ifndef GL_SGIX_texture_scale_bias -#define GL_SGIX_texture_scale_bias 1 -#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 -#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A -#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B -#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C -#endif /* GL_SGIX_texture_scale_bias */ - -#ifndef GL_SGIX_vertex_preclip -#define GL_SGIX_vertex_preclip 1 -#define GL_VERTEX_PRECLIP_SGIX 0x83EE -#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF -#endif /* GL_SGIX_vertex_preclip */ - -#ifndef GL_SGIX_ycrcb -#define GL_SGIX_ycrcb 1 -#define GL_YCRCB_422_SGIX 0x81BB -#define GL_YCRCB_444_SGIX 0x81BC -#endif /* GL_SGIX_ycrcb */ - -#ifndef GL_SGIX_ycrcb_subsample -#define GL_SGIX_ycrcb_subsample 1 -#endif /* GL_SGIX_ycrcb_subsample */ - -#ifndef GL_SGIX_ycrcba -#define GL_SGIX_ycrcba 1 -#define GL_YCRCB_SGIX 0x8318 -#define GL_YCRCBA_SGIX 0x8319 -#endif /* GL_SGIX_ycrcba */ - -#ifndef GL_SGI_color_matrix -#define GL_SGI_color_matrix 1 -#define GL_COLOR_MATRIX_SGI 0x80B1 -#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 -#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 -#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 -#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 -#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 -#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 -#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 -#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 -#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA -#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB -#endif /* GL_SGI_color_matrix */ - -#ifndef GL_SGI_color_table -#define GL_SGI_color_table 1 -#define GL_COLOR_TABLE_SGI 0x80D0 -#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 -#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 -#define GL_PROXY_COLOR_TABLE_SGI 0x80D3 -#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 -#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 -#define GL_COLOR_TABLE_SCALE_SGI 0x80D6 -#define GL_COLOR_TABLE_BIAS_SGI 0x80D7 -#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 -#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 -#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA -#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB -#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC -#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD -#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE -#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF -typedef void (APIENTRYP PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); -typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glColorTableSGI (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); -GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum target, GLenum pname, const GLfloat *params); -GLAPI void APIENTRY glColorTableParameterivSGI (GLenum target, GLenum pname, const GLint *params); -GLAPI void APIENTRY glCopyColorTableSGI (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -GLAPI void APIENTRY glGetColorTableSGI (GLenum target, GLenum format, GLenum type, GLvoid *table); -GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum target, GLenum pname, GLfloat *params); -GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum target, GLenum pname, GLint *params); -#endif -#endif /* GL_SGI_color_table */ - -#ifndef GL_SGI_texture_color_table -#define GL_SGI_texture_color_table 1 -#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC -#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD -#endif /* GL_SGI_texture_color_table */ - -#ifndef GL_SUNX_constant_data -#define GL_SUNX_constant_data 1 -#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 -#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 -typedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC) (void); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFinishTextureSUNX (void); -#endif -#endif /* GL_SUNX_constant_data */ - -#ifndef GL_SUN_convolution_border_modes -#define GL_SUN_convolution_border_modes 1 -#define GL_WRAP_BORDER_SUN 0x81D4 -#endif /* GL_SUN_convolution_border_modes */ - -#ifndef GL_SUN_global_alpha -#define GL_SUN_global_alpha 1 -#define GL_GLOBAL_ALPHA_SUN 0x81D9 -#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor); -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor); -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor); -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor); -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor); -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor); -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor); -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte factor); -GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort factor); -GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint factor); -GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat factor); -GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble factor); -GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte factor); -GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort factor); -GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint factor); -#endif -#endif /* GL_SUN_global_alpha */ - -#ifndef GL_SUN_mesh_array -#define GL_SUN_mesh_array 1 -#define GL_QUAD_MESH_SUN 0x8614 -#define GL_TRIANGLE_MESH_SUN 0x8615 -typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum mode, GLint first, GLsizei count, GLsizei width); -#endif -#endif /* GL_SUN_mesh_array */ - -#ifndef GL_SUN_slice_accum -#define GL_SUN_slice_accum 1 -#define GL_SLICE_ACCUM_SUN 0x85CC -#endif /* GL_SUN_slice_accum */ - -#ifndef GL_SUN_triangle_list -#define GL_SUN_triangle_list 1 -#define GL_RESTART_SUN 0x0001 -#define GL_REPLACE_MIDDLE_SUN 0x0002 -#define GL_REPLACE_OLDEST_SUN 0x0003 -#define GL_TRIANGLE_LIST_SUN 0x81D7 -#define GL_REPLACEMENT_CODE_SUN 0x81D8 -#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 -#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 -#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 -#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 -#define GL_R1UI_V3F_SUN 0x85C4 -#define GL_R1UI_C4UB_V3F_SUN 0x85C5 -#define GL_R1UI_C3F_V3F_SUN 0x85C6 -#define GL_R1UI_N3F_V3F_SUN 0x85C7 -#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 -#define GL_R1UI_T2F_V3F_SUN 0x85C9 -#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA -#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const GLvoid **pointer); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint code); -GLAPI void APIENTRY glReplacementCodeusSUN (GLushort code); -GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte code); -GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *code); -GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *code); -GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *code); -GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum type, GLsizei stride, const GLvoid **pointer); -#endif -#endif /* GL_SUN_triangle_list */ - -#ifndef GL_SUN_vertex -#define GL_SUN_vertex 1 -typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v); -typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v); -typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v); -typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v); -typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v); -typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v); -typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v); -typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint *rc, const GLubyte *c, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); -GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *c, const GLfloat *v); -GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *c, const GLfloat *v); -GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *c, const GLfloat *v); -GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *n, const GLfloat *v); -GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *c, const GLfloat *n, const GLfloat *v); -GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *tc, const GLfloat *v); -GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *tc, const GLfloat *v); -GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *tc, const GLubyte *c, const GLfloat *v); -GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *v); -GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *n, const GLfloat *v); -GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint rc, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *rc, const GLfloat *v); -GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *rc, const GLubyte *c, const GLfloat *v); -GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *v); -GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *n, const GLfloat *v); -GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *v); -GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); -GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -#endif -#endif /* GL_SUN_vertex */ - -#ifndef GL_WIN_phong_shading -#define GL_WIN_phong_shading 1 -#define GL_PHONG_WIN 0x80EA -#define GL_PHONG_HINT_WIN 0x80EB -#endif /* GL_WIN_phong_shading */ - -#ifndef GL_WIN_specular_fog -#define GL_WIN_specular_fog 1 -#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC -#endif /* GL_WIN_specular_fog */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/platform/win32/msvc/include/arpa/inet.h b/platform/win32/msvc/include/arpa/inet.h deleted file mode 100644 index 26dcd6bc9d1..00000000000 --- a/platform/win32/msvc/include/arpa/inet.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -// #define inet_aton( a, b ) inet_pton( AF_INET, a, b ) diff --git a/platform/win32/msvc/include/dirent.h b/platform/win32/msvc/include/dirent.h deleted file mode 100644 index 07952dd1047..00000000000 --- a/platform/win32/msvc/include/dirent.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef DIRENT_INCLUDED -#define DIRENT_INCLUDED - -#ifndef PATH_MAX -#define PATH_MAX _MAX_PATH -#endif - -/* - - Declaration of POSIX directory browsing functions and types for Win32. - - Author: Kevlin Henney (kevlin@acm.org, kevlin@curbralan.com) - History: Created March 1997. Updated June 2003. - Rights: See end of file. - -*/ - -#ifdef __cplusplus -extern "C" -{ -#endif - -typedef struct DIR DIR; - -struct dirent -{ - char *d_name; -}; - -DIR *opendir(const char *); -int closedir(DIR *); -struct dirent *readdir(DIR *); -int readdir_r(DIR *, struct dirent *, struct dirent **); - -void rewinddir(DIR *); - -/* - - Copyright Kevlin Henney, 1997, 2003. All rights reserved. - - Permission to use, copy, modify, and distribute this software and its - documentation for any purpose is hereby granted without fee, provided - that this copyright and permissions notice appear in all copies and - derivatives. - - This software is supplied "as is" without express or implied warranty. - - But that said, if there are any problems please get in touch. - -*/ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/platform/win32/msvc/include/dlfcn.h b/platform/win32/msvc/include/dlfcn.h deleted file mode 100644 index f845fd17624..00000000000 --- a/platform/win32/msvc/include/dlfcn.h +++ /dev/null @@ -1 +0,0 @@ -// Empty File diff --git a/platform/win32/msvc/include/ifaddrs.h b/platform/win32/msvc/include/ifaddrs.h deleted file mode 100644 index 08bc49095d5..00000000000 --- a/platform/win32/msvc/include/ifaddrs.h +++ /dev/null @@ -1,6 +0,0 @@ -// This allows Visual Studio to compule without having to update mythconfig.h -// Ultimately, we should generate a mythconfig.h file specific to VS & windows - -#ifdef HAVE_GETIFADDRS -#undef HAVE_GETIFADDRS -#endif diff --git a/platform/win32/msvc/include/libgen.h b/platform/win32/msvc/include/libgen.h deleted file mode 100644 index 8b137891791..00000000000 --- a/platform/win32/msvc/include/libgen.h +++ /dev/null @@ -1 +0,0 @@ - diff --git a/platform/win32/msvc/include/mythconfig.h b/platform/win32/msvc/include/mythconfig.h deleted file mode 100644 index f47e14e6f05..00000000000 --- a/platform/win32/msvc/include/mythconfig.h +++ /dev/null @@ -1,1585 +0,0 @@ -/* Automatically generated by configure - do not modify! */ -#ifndef MYTHTV_CONFIG_H -#define MYTHTV_CONFIG_H -#define FFMPEG_CONFIGURATION "--compile-type=debug --enable-libmp3lame --enable-libx264 --enable-libvpx --enable-sdl --enable-nonfree --disable-distcc" -#define FFMPEG_LICENSE "" -#define FFMPEG_DATADIR "/usr/local/share/mythtv" -#define AVCONV_DATADIR "/usr/local/share/mythtv" -#define CC_IDENT "gcc 4.7 (Ubuntu/Linaro 4.7.3-1ubuntu1)" -#define av_restrict __restrict__ -#define EXTERN_PREFIX "" -#define EXTERN_ASM -#define SLIBSUF ".so" -#define HAVE_MMX2 HAVE_MMXEXT -#define ASMALIGN(ZEROBITS) ".p2align " #ZEROBITS "\n\t" -#define SIZEOF_INT 4 -#define SIZEOF_LONG 8 -#define ARCH_AARCH64 0 -#define ARCH_ALPHA 0 -#define ARCH_ARM 0 -#define ARCH_AVR32 0 -#define ARCH_AVR32_AP 0 -#define ARCH_AVR32_UC 0 -#define ARCH_BFIN 0 -#define ARCH_IA64 0 -#define ARCH_M68K 0 -#define ARCH_MIPS 0 -#define ARCH_MIPS64 0 -#define ARCH_PARISC 0 -#define ARCH_PPC 0 -#define ARCH_PPC64 0 -#define ARCH_S390 0 -#define ARCH_SH4 0 -#define ARCH_SPARC 0 -#define ARCH_SPARC64 0 -#define ARCH_TILEGX 0 -#define ARCH_TILEPRO 0 -#define ARCH_TOMI 0 -#define ARCH_X86 0 -#define ARCH_X86_32 0 -#define ARCH_X86_64 1 -#define HAVE_ARMV5TE 0 -#define HAVE_ARMV6 0 -#define HAVE_ARMV6T2 0 -#define HAVE_NEON 0 -#define HAVE_VFP 0 -#define HAVE_VFPV3 0 -#define HAVE_AMD3DNOW 1 -#define HAVE_AMD3DNOWEXT 1 -#define HAVE_AVX 1 -#define HAVE_FMA4 1 -#define HAVE_MMX 0 -#define HAVE_MMXEXT 0 -#define HAVE_SSE 1 -#define HAVE_SSE2 1 -#define HAVE_SSE3 1 -#define HAVE_SSE4 1 -#define HAVE_SSE42 1 -#define HAVE_SSSE3 1 -#define HAVE_ALTIVEC 0 -#define HAVE_PPC4XX 0 -#define HAVE_VIS 0 -#define HAVE_MIPSFPU 0 -#define HAVE_MIPS32R2 0 -#define HAVE_MIPSDSPR1 0 -#define HAVE_MIPSDSPR2 0 -#define HAVE_ARMV5TE_EXTERNAL 0 -#define HAVE_ARMV6_EXTERNAL 0 -#define HAVE_ARMV6T2_EXTERNAL 0 -#define HAVE_NEON_EXTERNAL 0 -#define HAVE_VFP_EXTERNAL 0 -#define HAVE_VFPV3_EXTERNAL 0 -#define HAVE_AMD3DNOW_EXTERNAL 1 -#define HAVE_AMD3DNOWEXT_EXTERNAL 1 -#define HAVE_AVX_EXTERNAL 1 -#define HAVE_FMA4_EXTERNAL 1 -#define HAVE_MMX_EXTERNAL 1 -#define HAVE_MMXEXT_EXTERNAL 1 -#define HAVE_SSE_EXTERNAL 1 -#define HAVE_SSE2_EXTERNAL 1 -#define HAVE_SSE3_EXTERNAL 1 -#define HAVE_SSE4_EXTERNAL 1 -#define HAVE_SSE42_EXTERNAL 1 -#define HAVE_SSSE3_EXTERNAL 1 -#define HAVE_ALTIVEC_EXTERNAL 0 -#define HAVE_PPC4XX_EXTERNAL 0 -#define HAVE_VIS_EXTERNAL 0 -#define HAVE_MIPSFPU_EXTERNAL 0 -#define HAVE_MIPS32R2_EXTERNAL 0 -#define HAVE_MIPSDSPR1_EXTERNAL 0 -#define HAVE_MIPSDSPR2_EXTERNAL 0 -#define HAVE_ARMV5TE_INLINE 0 -#define HAVE_ARMV6_INLINE 0 -#define HAVE_ARMV6T2_INLINE 0 -#define HAVE_NEON_INLINE 0 -#define HAVE_VFP_INLINE 0 -#define HAVE_VFPV3_INLINE 0 -#define HAVE_AMD3DNOW_INLINE 1 -#define HAVE_AMD3DNOWEXT_INLINE 1 -#define HAVE_AVX_INLINE 1 -#define HAVE_FMA4_INLINE 1 -#define HAVE_MMX_INLINE 1 -#define HAVE_MMXEXT_INLINE 1 -#define HAVE_SSE_INLINE 1 -#define HAVE_SSE2_INLINE 1 -#define HAVE_SSE3_INLINE 1 -#define HAVE_SSE4_INLINE 1 -#define HAVE_SSE42_INLINE 1 -#define HAVE_SSSE3_INLINE 1 -#define HAVE_ALTIVEC_INLINE 0 -#define HAVE_PPC4XX_INLINE 0 -#define HAVE_VIS_INLINE 0 -#define HAVE_MIPSFPU_INLINE 0 -#define HAVE_MIPS32R2_INLINE 0 -#define HAVE_MIPSDSPR1_INLINE 0 -#define HAVE_MIPSDSPR2_INLINE 0 -#define HAVE_INLINE_ASM 0 -#define HAVE_SYMVER 1 -#define HAVE_YASM 0 -#define HAVE_BIGENDIAN 0 -#define HAVE_FAST_UNALIGNED 1 -#define HAVE_INCOMPATIBLE_FORK_ABI 0 -#define HAVE_PTHREADS 1 -#define HAVE_W32THREADS 0 -#define HAVE_OS2THREADS 0 -#define HAVE_ATANF 1 -#define HAVE_ATAN2F 1 -#define HAVE_CBRT 1 -#define HAVE_CBRTF 1 -#define HAVE_COSF 1 -#define HAVE_EXP2 1 -#define HAVE_EXP2F 1 -#define HAVE_EXPF 1 -#define HAVE_ISINF 1 -#define HAVE_ISNAN 1 -#define HAVE_LDEXPF 1 -#define HAVE_LLRINT 1 -#define HAVE_LLRINTF 1 -#define HAVE_LOG2 1 -#define HAVE_LOG2F 1 -#define HAVE_LOG10F 1 -#define HAVE_LRINT 1 -#define HAVE_LRINTF 1 -#define HAVE_POWF 1 -#define HAVE_RINT 1 -#define HAVE_ROUND 1 -#define HAVE_ROUNDF 1 -#define HAVE_SINF 1 -#define HAVE_TRUNC 1 -#define HAVE_TRUNCF 1 -#define HAVE_ACCESS 1 -#define HAVE_ALIGNED_MALLOC 0 -#define HAVE_ALIGNED_STACK 1 -#define HAVE_ALSA_ASOUNDLIB_H 1 -#define HAVE_ALTIVEC_H 0 -#define HAVE_ARPA_INET_H 1 -#define HAVE_ASM_MOD_Q 0 -#define HAVE_ASM_MOD_Y 0 -#define HAVE_ASM_TYPES_H 1 -#define HAVE_ATTRIBUTE_MAY_ALIAS 1 -#define HAVE_ATTRIBUTE_PACKED 1 -#define HAVE_CDIO_PARANOIA_H 0 -#define HAVE_CDIO_PARANOIA_PARANOIA_H 0 -#define HAVE_CLOCK_GETTIME 1 -#define HAVE_CLOSESOCKET 0 -#define HAVE_CMOV 1 -#define HAVE_COMMANDLINETOARGVW 0 -#define HAVE_CPUNOP 1 -#define HAVE_CRYPTGENRANDOM 0 -#define HAVE_DCBZL 0 -#define HAVE_DEV_BKTR_IOCTL_BT848_H 0 -#define HAVE_DEV_BKTR_IOCTL_METEOR_H 0 -#define HAVE_DEV_IC_BT8XX_H 0 -#define HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H 0 -#define HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H 0 -#define HAVE_DIRECT_H 0 -#define HAVE_DLFCN_H 0 -#define HAVE_DLOPEN 1 -#define HAVE_DOS_PATHS 0 -#define HAVE_DXVA_H 0 -#define HAVE_EBP_AVAILABLE 0 -#define HAVE_EBX_AVAILABLE 1 -#define HAVE_FAST_64BIT 1 -#define HAVE_FAST_CLZ 1 -#define HAVE_FAST_CMOV 1 -#define HAVE_FCNTL 1 -#define HAVE_FORK 1 -#define HAVE_GETADDRINFO 1 -#define HAVE_GETHRTIME 0 -#define HAVE_GETOPT 1 -#define HAVE_GETPROCESSAFFINITYMASK 0 -#define HAVE_GETPROCESSMEMORYINFO 0 -#define HAVE_GETPROCESSTIMES 0 -#define HAVE_GETSYSTEMTIMEASFILETIME 0 -#define HAVE_GETRUSAGE 1 -#define HAVE_GETSERVBYPORT 1 -#define HAVE_GETTIMEOFDAY 1 -#define HAVE_GLOB 1 -#define HAVE_GNU_AS 1 -#define HAVE_GSM_H 0 -#define HAVE_IBM_ASM 0 -#define HAVE_INET_ATON 1 -#define HAVE_IO_H 0 -#define HAVE_ISATTY 1 -#define HAVE_JACK_PORT_GET_LATENCY_RANGE 0 -#define HAVE_KBHIT 0 -#define HAVE_LDBRX 0 -#define HAVE_LIBDC1394_1 0 -#define HAVE_LIBDC1394_2 0 -#define HAVE_LOCAL_ALIGNED_16 1 -#define HAVE_LOCAL_ALIGNED_8 1 -#define HAVE_LOCALTIME_R 1 -#define HAVE_LOONGSON 0 -#define HAVE_LZO1X_999_COMPRESS 0 -#define HAVE_MACHINE_IOCTL_BT848_H 0 -#define HAVE_MACHINE_IOCTL_METEOR_H 0 -#define HAVE_MAKEINFO 0 -#define HAVE_MALLOC_H 1 -#define HAVE_MAPVIEWOFFILE 0 -#define HAVE_MEMALIGN 1 -#define HAVE_MKSTEMP 1 -#define HAVE_MM_EMPTY 1 -#define HAVE_MMAP 1 -#define HAVE_MPROTECT 1 -#define HAVE_MSVCRT 0 -#define HAVE_NANOSLEEP 1 -#define HAVE_OPENJPEG_1_5_OPENJPEG_H 0 -#define HAVE_PEEKNAMEDPIPE 0 -#define HAVE_PERL 1 -#define HAVE_POD2MAN 1 -#define HAVE_POLL_H 1 -#define HAVE_POSIX_MEMALIGN 1 -#define HAVE_PTHREAD_CANCEL 1 -#define HAVE_RDTSC 0 -#define HAVE_RSYNC_CONTIMEOUT 1 -#define HAVE_SCHED_GETAFFINITY 1 -#define HAVE_SDL 1 -#define HAVE_SDL_VIDEO_SIZE 1 -#define HAVE_SETCONSOLETEXTATTRIBUTE 0 -#define HAVE_SETMODE 0 -#define HAVE_SETRLIMIT 1 -#define HAVE_SLEEP 0 -#define HAVE_SNDIO_H 0 -#define HAVE_SOCKLEN_T 1 -#define HAVE_SOUNDCARD_H 0 -#define HAVE_STRERROR_R 1 -#define HAVE_STRUCT_ADDRINFO 1 -#define HAVE_STRUCT_GROUP_SOURCE_REQ 1 -#define HAVE_STRUCT_IP_MREQ_SOURCE 1 -#define HAVE_STRUCT_IPV6_MREQ 1 -#define HAVE_STRUCT_POLLFD 1 -#define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1 -#define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0 -#define HAVE_STRUCT_SOCKADDR_IN6 1 -#define HAVE_STRUCT_SOCKADDR_SA_LEN 0 -#define HAVE_STRUCT_SOCKADDR_STORAGE 1 -#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 1 -#define HAVE_SYMVER_ASM_LABEL 0 -#define HAVE_SYMVER_GNU_ASM 1 -#define HAVE_SYSCONF 1 -#define HAVE_SYSCTL 1 -#define HAVE_SYS_MMAN_H 1 -#define HAVE_SYS_PARAM_H 1 -#define HAVE_SYS_RESOURCE_H 1 -#define HAVE_SYS_SELECT_H 1 -#define HAVE_SYS_SOUNDCARD_H 0 -#define HAVE_SYS_TIME_H 1 -#define HAVE_SYS_VIDEOIO_H 0 -#define HAVE_TERMIOS_H 1 -#define HAVE_TEXI2HTML 0 -#define HAVE_THREADS 1 -#define HAVE_UNISTD_H 1 -#define HAVE_USLEEP 1 -#define HAVE_VFP_ARGS 0 -#define HAVE_VIRTUALALLOC 0 -#define HAVE_WINDOWS_H 0 -#define HAVE_WINSOCK2_H 0 -#define HAVE_XFORM_ASM 0 -#define HAVE_XMM_CLOBBERS 1 -#define HAVE_BYTESWAP_H 0 -#define HAVE_CPU_CLIPS_NEGATIVE 0 -#define HAVE_CPU_CLIPS_POSITIVE 0 -#define HAVE_FE_CAN_2G_MODULATION 1 -#define HAVE_FTIME 1 -#define HAVE_GETIFADDRS 1 -#define HAVE_GETTIMEOFDAY 1 -#define HAVE_POSIX_FADVISE 1 -#define HAVE_LIBUDEV 0 -#define HAVE_LIBUUID 1 -#define HAVE_STDINT_H 1 -#define HAVE_SYNC_FILE_RANGE 0 -#define HAVE_SYS_ENDIAN_H 0 -#define CONFIG_BSFS 1 -#define CONFIG_DECODERS 1 -#define CONFIG_DEMUXERS 1 -#define CONFIG_ENCODERS 1 -#define CONFIG_FILTERS 1 -#define CONFIG_HWACCELS 0 -#define CONFIG_INDEVS 0 -#define CONFIG_MUXERS 1 -#define CONFIG_OUTDEVS 1 -#define CONFIG_PARSERS 1 -#define CONFIG_PROTOCOLS 1 -#define CONFIG_DOC 0 -#define CONFIG_HTMLPAGES 0 -#define CONFIG_MANPAGES 0 -#define CONFIG_PODPAGES 0 -#define CONFIG_TXTPAGES 0 -#define CONFIG_AVISYNTH 0 -#define CONFIG_BZLIB 0 -#define CONFIG_CRYSTALHD 0 -#define CONFIG_FONTCONFIG 0 -#define CONFIG_FREI0R 0 -#define CONFIG_GNUTLS 0 -#define CONFIG_ICONV 1 -#define CONFIG_LIBAACPLUS 0 -#define CONFIG_LIBASS 0 -#define CONFIG_LIBBLURAY 0 -#define CONFIG_LIBCACA 0 -#define CONFIG_LIBCDIO 0 -#define CONFIG_LIBCELT 0 -#define CONFIG_LIBDC1394 0 -#define CONFIG_LIBFAAC 0 -#define CONFIG_LIBFDK_AAC 0 -#define CONFIG_LIBFLITE 0 -#define CONFIG_LIBFREETYPE 0 -#define CONFIG_LIBGSM 0 -#define CONFIG_LIBIEC61883 0 -#define CONFIG_LIBILBC 0 -#define CONFIG_LIBMODPLUG 0 -#define CONFIG_LIBMP3LAME 1 -#define CONFIG_LIBNUT 0 -#define CONFIG_LIBOPENCORE_AMRNB 0 -#define CONFIG_LIBOPENCORE_AMRWB 0 -#define CONFIG_LIBOPENCV 0 -#define CONFIG_LIBOPENJPEG 0 -#define CONFIG_LIBOPUS 0 -#define CONFIG_LIBPULSE 0 -#define CONFIG_LIBRTMP 0 -#define CONFIG_LIBSCHROEDINGER 0 -#define CONFIG_LIBSOXR 0 -#define CONFIG_LIBSPEEX 0 -#define CONFIG_LIBSTAGEFRIGHT_H264 0 -#define CONFIG_LIBTHEORA 0 -#define CONFIG_LIBTWOLAME 0 -#define CONFIG_LIBUTVIDEO 0 -#define CONFIG_LIBV4L2 0 -#define CONFIG_LIBVO_AACENC 0 -#define CONFIG_LIBVO_AMRWBENC 0 -#define CONFIG_LIBVORBIS 0 -#define CONFIG_LIBVPX 1 -#define CONFIG_LIBX264 1 -#define CONFIG_LIBXAVS 0 -#define CONFIG_LIBXVID 0 -#define CONFIG_OPENAL 0 -#define CONFIG_OPENSSL 0 -#define CONFIG_X11GRAB 0 -#define CONFIG_ZLIB 1 -#define CONFIG_DXVA2 0 -#define CONFIG_VAAPI 0 -#define CONFIG_VDA 0 -#define CONFIG_VDPAU 0 -#define CONFIG_AVCODEC 1 -#define CONFIG_AVDEVICE 1 -#define CONFIG_AVFILTER 1 -#define CONFIG_AVFORMAT 1 -#define CONFIG_AVRESAMPLE 0 -#define CONFIG_AVUTIL 1 -#define CONFIG_POSTPROC 1 -#define CONFIG_SWRESAMPLE 1 -#define CONFIG_SWSCALE 1 -#define CONFIG_FFPLAY 1 -#define CONFIG_FFPROBE 1 -#define CONFIG_FFSERVER 1 -#define CONFIG_FFMPEG 1 -#define CONFIG_DCT 1 -#define CONFIG_DWT 1 -#define CONFIG_FAST_UNALIGNED 1 -#define CONFIG_FFT 1 -#define CONFIG_FTRAPV 0 -#define CONFIG_GPL 1 -#define CONFIG_GRAY 0 -#define CONFIG_HARDCODED_TABLES 0 -#define CONFIG_INCOMPATIBLE_FORK_ABI 0 -#define CONFIG_LSP 1 -#define CONFIG_LZO 1 -#define CONFIG_MDCT 1 -#define CONFIG_MEMALIGN_HACK 0 -#define CONFIG_MEMORY_POISONING 0 -#define CONFIG_NETWORK 1 -#define CONFIG_NONFREE 1 -#define CONFIG_PIC 1 -#define CONFIG_RDFT 1 -#define CONFIG_RUNTIME_CPUDETECT 1 -#define CONFIG_SAFE_BITSTREAM_READER 1 -#define CONFIG_SHARED 1 -#define CONFIG_SMALL 0 -#define CONFIG_SRAM 0 -#define CONFIG_STATIC 0 -#define CONFIG_SWSCALE_ALPHA 1 -#define CONFIG_THUMB 0 -#define CONFIG_VERSION3 0 -#define CONFIG_XMM_CLOBBER_TEST 0 -#define CONFIG_AANDCTTABLES 1 -#define CONFIG_AC3DSP 1 -#define CONFIG_AUDIO_FRAME_QUEUE 1 -#define CONFIG_ERROR_RESILIENCE 1 -#define CONFIG_GCRYPT 0 -#define CONFIG_GOLOMB 1 -#define CONFIG_GPLV3 0 -#define CONFIG_H264CHROMA 1 -#define CONFIG_H264DSP 1 -#define CONFIG_H264PRED 1 -#define CONFIG_H264QPEL 1 -#define CONFIG_HUFFMAN 1 -#define CONFIG_LGPLV3 0 -#define CONFIG_LPC 1 -#define CONFIG_MPEGAUDIO 1 -#define CONFIG_MPEGAUDIODSP 1 -#define CONFIG_MPEGVIDEO 1 -#define CONFIG_MPEGVIDEOENC 1 -#define CONFIG_NETTLE 0 -#define CONFIG_RANGECODER 1 -#define CONFIG_RTPDEC 1 -#define CONFIG_RTPENC_CHAIN 1 -#define CONFIG_SINEWIN 1 -#define CONFIG_VIDEODSP 1 -#define CONFIG_VP3DSP 1 -#define CONFIG_AAC_ADTSTOASC_BSF 1 -#define CONFIG_CHOMP_BSF 1 -#define CONFIG_DUMP_EXTRADATA_BSF 1 -#define CONFIG_H264_MP4TOANNEXB_BSF 1 -#define CONFIG_IMX_DUMP_HEADER_BSF 1 -#define CONFIG_MJPEG2JPEG_BSF 1 -#define CONFIG_MJPEGA_DUMP_HEADER_BSF 1 -#define CONFIG_MP3_HEADER_COMPRESS_BSF 1 -#define CONFIG_MP3_HEADER_DECOMPRESS_BSF 1 -#define CONFIG_MOV2TEXTSUB_BSF 1 -#define CONFIG_NOISE_BSF 1 -#define CONFIG_REMOVE_EXTRADATA_BSF 1 -#define CONFIG_TEXT2MOVSUB_BSF 1 -#define CONFIG_AASC_DECODER 1 -#define CONFIG_AMV_DECODER 1 -#define CONFIG_ANM_DECODER 1 -#define CONFIG_ANSI_DECODER 1 -#define CONFIG_ASV1_DECODER 1 -#define CONFIG_ASV2_DECODER 1 -#define CONFIG_AURA_DECODER 1 -#define CONFIG_AURA2_DECODER 1 -#define CONFIG_AVRP_DECODER 1 -#define CONFIG_AVRN_DECODER 1 -#define CONFIG_AVS_DECODER 1 -#define CONFIG_AVUI_DECODER 1 -#define CONFIG_AYUV_DECODER 1 -#define CONFIG_BETHSOFTVID_DECODER 1 -#define CONFIG_BFI_DECODER 1 -#define CONFIG_BINK_DECODER 1 -#define CONFIG_BMP_DECODER 1 -#define CONFIG_BMV_VIDEO_DECODER 1 -#define CONFIG_BRENDER_PIX_DECODER 1 -#define CONFIG_C93_DECODER 1 -#define CONFIG_CAVS_DECODER 1 -#define CONFIG_CDGRAPHICS_DECODER 1 -#define CONFIG_CDXL_DECODER 1 -#define CONFIG_CINEPAK_DECODER 1 -#define CONFIG_CLJR_DECODER 1 -#define CONFIG_CLLC_DECODER 1 -#define CONFIG_COMFORTNOISE_DECODER 1 -#define CONFIG_CPIA_DECODER 1 -#define CONFIG_CSCD_DECODER 1 -#define CONFIG_CYUV_DECODER 1 -#define CONFIG_DFA_DECODER 1 -#define CONFIG_DIRAC_DECODER 1 -#define CONFIG_DNXHD_DECODER 1 -#define CONFIG_DPX_DECODER 1 -#define CONFIG_DSICINVIDEO_DECODER 1 -#define CONFIG_DVVIDEO_DECODER 1 -#define CONFIG_DXA_DECODER 1 -#define CONFIG_DXTORY_DECODER 1 -#define CONFIG_EACMV_DECODER 1 -#define CONFIG_EAMAD_DECODER 1 -#define CONFIG_EATGQ_DECODER 1 -#define CONFIG_EATGV_DECODER 1 -#define CONFIG_EATQI_DECODER 1 -#define CONFIG_EIGHTBPS_DECODER 1 -#define CONFIG_EIGHTSVX_EXP_DECODER 1 -#define CONFIG_EIGHTSVX_FIB_DECODER 1 -#define CONFIG_ESCAPE124_DECODER 1 -#define CONFIG_ESCAPE130_DECODER 1 -#define CONFIG_EXR_DECODER 1 -#define CONFIG_FFV1_DECODER 1 -#define CONFIG_FFVHUFF_DECODER 1 -#define CONFIG_FLASHSV_DECODER 1 -#define CONFIG_FLASHSV2_DECODER 1 -#define CONFIG_FLIC_DECODER 1 -#define CONFIG_FLV_DECODER 1 -#define CONFIG_FOURXM_DECODER 1 -#define CONFIG_FRAPS_DECODER 1 -#define CONFIG_FRWU_DECODER 1 -#define CONFIG_GIF_DECODER 1 -#define CONFIG_H261_DECODER 1 -#define CONFIG_H263_DECODER 1 -#define CONFIG_H263I_DECODER 1 -#define CONFIG_H263P_DECODER 1 -#define CONFIG_H264_DECODER 1 -#define CONFIG_H264_CRYSTALHD_DECODER 0 -#define CONFIG_H264_VDA_DECODER 0 -#define CONFIG_H264_VDPAU_DECODER 0 -#define CONFIG_HUFFYUV_DECODER 1 -#define CONFIG_IDCIN_DECODER 1 -#define CONFIG_IFF_BYTERUN1_DECODER 1 -#define CONFIG_IFF_ILBM_DECODER 1 -#define CONFIG_INDEO2_DECODER 1 -#define CONFIG_INDEO3_DECODER 1 -#define CONFIG_INDEO4_DECODER 1 -#define CONFIG_INDEO5_DECODER 1 -#define CONFIG_INTERPLAY_VIDEO_DECODER 1 -#define CONFIG_JPEG2000_DECODER 1 -#define CONFIG_JPEGLS_DECODER 1 -#define CONFIG_JV_DECODER 1 -#define CONFIG_KGV1_DECODER 1 -#define CONFIG_KMVC_DECODER 1 -#define CONFIG_LAGARITH_DECODER 1 -#define CONFIG_LOCO_DECODER 1 -#define CONFIG_MDEC_DECODER 1 -#define CONFIG_MIMIC_DECODER 1 -#define CONFIG_MJPEG_DECODER 1 -#define CONFIG_MJPEGB_DECODER 1 -#define CONFIG_MMVIDEO_DECODER 1 -#define CONFIG_MOTIONPIXELS_DECODER 1 -#define CONFIG_MPEG_XVMC_DECODER 0 -#define CONFIG_MPEG1VIDEO_DECODER 1 -#define CONFIG_MPEG2VIDEO_DECODER 1 -#define CONFIG_MPEG4_DECODER 1 -#define CONFIG_MPEG4_CRYSTALHD_DECODER 0 -#define CONFIG_MPEG4_VDPAU_DECODER 0 -#define CONFIG_MPEGVIDEO_DECODER 1 -#define CONFIG_MPEG_VDPAU_DECODER 0 -#define CONFIG_MPEG1_VDPAU_DECODER 0 -#define CONFIG_MPEG2_CRYSTALHD_DECODER 0 -#define CONFIG_MSA1_DECODER 1 -#define CONFIG_MSMPEG4_CRYSTALHD_DECODER 0 -#define CONFIG_MSMPEG4V1_DECODER 1 -#define CONFIG_MSMPEG4V2_DECODER 1 -#define CONFIG_MSMPEG4V3_DECODER 1 -#define CONFIG_MSRLE_DECODER 1 -#define CONFIG_MSS1_DECODER 1 -#define CONFIG_MSS2_DECODER 1 -#define CONFIG_MSVIDEO1_DECODER 1 -#define CONFIG_MSZH_DECODER 1 -#define CONFIG_MTS2_DECODER 1 -#define CONFIG_MVC1_DECODER 1 -#define CONFIG_MVC2_DECODER 1 -#define CONFIG_MXPEG_DECODER 1 -#define CONFIG_NUV_DECODER 1 -#define CONFIG_PAF_VIDEO_DECODER 1 -#define CONFIG_PAM_DECODER 1 -#define CONFIG_PBM_DECODER 1 -#define CONFIG_PCX_DECODER 1 -#define CONFIG_PGM_DECODER 1 -#define CONFIG_PGMYUV_DECODER 1 -#define CONFIG_PICTOR_DECODER 1 -#define CONFIG_PNG_DECODER 1 -#define CONFIG_PPM_DECODER 1 -#define CONFIG_PRORES_DECODER 1 -#define CONFIG_PRORES_LGPL_DECODER 1 -#define CONFIG_PTX_DECODER 1 -#define CONFIG_QDRAW_DECODER 1 -#define CONFIG_QPEG_DECODER 1 -#define CONFIG_QTRLE_DECODER 1 -#define CONFIG_R10K_DECODER 1 -#define CONFIG_R210_DECODER 1 -#define CONFIG_RAWVIDEO_DECODER 1 -#define CONFIG_RL2_DECODER 1 -#define CONFIG_ROQ_DECODER 1 -#define CONFIG_RPZA_DECODER 1 -#define CONFIG_RV10_DECODER 1 -#define CONFIG_RV20_DECODER 1 -#define CONFIG_RV30_DECODER 1 -#define CONFIG_RV40_DECODER 1 -#define CONFIG_S302M_DECODER 1 -#define CONFIG_SANM_DECODER 1 -#define CONFIG_SGI_DECODER 1 -#define CONFIG_SGIRLE_DECODER 1 -#define CONFIG_SMACKER_DECODER 1 -#define CONFIG_SMC_DECODER 1 -#define CONFIG_SNOW_DECODER 1 -#define CONFIG_SP5X_DECODER 1 -#define CONFIG_SUNRAST_DECODER 1 -#define CONFIG_SVQ1_DECODER 1 -#define CONFIG_SVQ3_DECODER 1 -#define CONFIG_TARGA_DECODER 1 -#define CONFIG_TARGA_Y216_DECODER 1 -#define CONFIG_THEORA_DECODER 1 -#define CONFIG_THP_DECODER 1 -#define CONFIG_TIERTEXSEQVIDEO_DECODER 1 -#define CONFIG_TIFF_DECODER 1 -#define CONFIG_TMV_DECODER 1 -#define CONFIG_TRUEMOTION1_DECODER 1 -#define CONFIG_TRUEMOTION2_DECODER 1 -#define CONFIG_TSCC_DECODER 1 -#define CONFIG_TSCC2_DECODER 1 -#define CONFIG_TXD_DECODER 1 -#define CONFIG_ULTI_DECODER 1 -#define CONFIG_UTVIDEO_DECODER 1 -#define CONFIG_V210_DECODER 1 -#define CONFIG_V210X_DECODER 1 -#define CONFIG_V308_DECODER 1 -#define CONFIG_V408_DECODER 1 -#define CONFIG_V410_DECODER 1 -#define CONFIG_VB_DECODER 1 -#define CONFIG_VBLE_DECODER 1 -#define CONFIG_VC1_DECODER 1 -#define CONFIG_VC1_CRYSTALHD_DECODER 0 -#define CONFIG_VC1_VDPAU_DECODER 0 -#define CONFIG_VC1IMAGE_DECODER 1 -#define CONFIG_VCR1_DECODER 1 -#define CONFIG_VMDVIDEO_DECODER 1 -#define CONFIG_VMNC_DECODER 1 -#define CONFIG_VP3_DECODER 1 -#define CONFIG_VP5_DECODER 1 -#define CONFIG_VP6_DECODER 1 -#define CONFIG_VP6A_DECODER 1 -#define CONFIG_VP6F_DECODER 1 -#define CONFIG_VP8_DECODER 1 -#define CONFIG_VQA_DECODER 1 -#define CONFIG_WMV1_DECODER 1 -#define CONFIG_WMV2_DECODER 1 -#define CONFIG_WMV3_DECODER 1 -#define CONFIG_WMV3_CRYSTALHD_DECODER 0 -#define CONFIG_WMV3_VDPAU_DECODER 0 -#define CONFIG_WMV3IMAGE_DECODER 1 -#define CONFIG_WNV1_DECODER 1 -#define CONFIG_XAN_WC3_DECODER 1 -#define CONFIG_XAN_WC4_DECODER 1 -#define CONFIG_XBM_DECODER 1 -#define CONFIG_XFACE_DECODER 1 -#define CONFIG_XL_DECODER 1 -#define CONFIG_XWD_DECODER 1 -#define CONFIG_Y41P_DECODER 1 -#define CONFIG_YOP_DECODER 1 -#define CONFIG_YUV4_DECODER 1 -#define CONFIG_ZERO12V_DECODER 1 -#define CONFIG_ZEROCODEC_DECODER 1 -#define CONFIG_ZLIB_DECODER 1 -#define CONFIG_ZMBV_DECODER 1 -#define CONFIG_AAC_DECODER 1 -#define CONFIG_AAC_LATM_DECODER 1 -#define CONFIG_AC3_DECODER 1 -#define CONFIG_ALAC_DECODER 1 -#define CONFIG_ALS_DECODER 1 -#define CONFIG_AMRNB_DECODER 1 -#define CONFIG_AMRWB_DECODER 1 -#define CONFIG_APE_DECODER 1 -#define CONFIG_ATRAC1_DECODER 1 -#define CONFIG_ATRAC3_DECODER 1 -#define CONFIG_BINKAUDIO_DCT_DECODER 1 -#define CONFIG_BINKAUDIO_RDFT_DECODER 1 -#define CONFIG_BMV_AUDIO_DECODER 1 -#define CONFIG_COOK_DECODER 1 -#define CONFIG_DCA_DECODER 1 -#define CONFIG_DSICINAUDIO_DECODER 1 -#define CONFIG_EAC3_DECODER 1 -#define CONFIG_EVRC_DECODER 1 -#define CONFIG_FFWAVESYNTH_DECODER 1 -#define CONFIG_FLAC_DECODER 1 -#define CONFIG_G723_1_DECODER 1 -#define CONFIG_G729_DECODER 1 -#define CONFIG_GSM_DECODER 1 -#define CONFIG_GSM_MS_DECODER 1 -#define CONFIG_IAC_DECODER 1 -#define CONFIG_IMC_DECODER 1 -#define CONFIG_MACE3_DECODER 1 -#define CONFIG_MACE6_DECODER 1 -#define CONFIG_MLP_DECODER 1 -#define CONFIG_MP1_DECODER 1 -#define CONFIG_MP1FLOAT_DECODER 1 -#define CONFIG_MP2_DECODER 1 -#define CONFIG_MP2FLOAT_DECODER 1 -#define CONFIG_MP3_DECODER 1 -#define CONFIG_MP3FLOAT_DECODER 1 -#define CONFIG_MP3ADU_DECODER 1 -#define CONFIG_MP3ADUFLOAT_DECODER 1 -#define CONFIG_MP3ON4_DECODER 1 -#define CONFIG_MP3ON4FLOAT_DECODER 1 -#define CONFIG_MPC7_DECODER 1 -#define CONFIG_MPC8_DECODER 1 -#define CONFIG_NELLYMOSER_DECODER 1 -#define CONFIG_PAF_AUDIO_DECODER 1 -#define CONFIG_QCELP_DECODER 1 -#define CONFIG_QDM2_DECODER 1 -#define CONFIG_RA_144_DECODER 1 -#define CONFIG_RA_288_DECODER 1 -#define CONFIG_RALF_DECODER 1 -#define CONFIG_SHORTEN_DECODER 1 -#define CONFIG_SIPR_DECODER 1 -#define CONFIG_SMACKAUD_DECODER 1 -#define CONFIG_SONIC_DECODER 1 -#define CONFIG_TAK_DECODER 1 -#define CONFIG_TRUEHD_DECODER 1 -#define CONFIG_TRUESPEECH_DECODER 1 -#define CONFIG_TTA_DECODER 1 -#define CONFIG_TWINVQ_DECODER 1 -#define CONFIG_VMDAUDIO_DECODER 1 -#define CONFIG_VORBIS_DECODER 1 -#define CONFIG_WAVPACK_DECODER 1 -#define CONFIG_WMALOSSLESS_DECODER 1 -#define CONFIG_WMAPRO_DECODER 1 -#define CONFIG_WMAV1_DECODER 1 -#define CONFIG_WMAV2_DECODER 1 -#define CONFIG_WMAVOICE_DECODER 1 -#define CONFIG_WS_SND1_DECODER 1 -#define CONFIG_PCM_ALAW_DECODER 1 -#define CONFIG_PCM_BLURAY_DECODER 1 -#define CONFIG_PCM_DVD_DECODER 1 -#define CONFIG_PCM_F32BE_DECODER 1 -#define CONFIG_PCM_F32LE_DECODER 1 -#define CONFIG_PCM_F64BE_DECODER 1 -#define CONFIG_PCM_F64LE_DECODER 1 -#define CONFIG_PCM_LXF_DECODER 1 -#define CONFIG_PCM_MULAW_DECODER 1 -#define CONFIG_PCM_S8_DECODER 1 -#define CONFIG_PCM_S8_PLANAR_DECODER 1 -#define CONFIG_PCM_S16BE_DECODER 1 -#define CONFIG_PCM_S16BE_PLANAR_DECODER 1 -#define CONFIG_PCM_S16LE_DECODER 1 -#define CONFIG_PCM_S16LE_PLANAR_DECODER 1 -#define CONFIG_PCM_S24BE_DECODER 1 -#define CONFIG_PCM_S24DAUD_DECODER 1 -#define CONFIG_PCM_S24LE_DECODER 1 -#define CONFIG_PCM_S24LE_PLANAR_DECODER 1 -#define CONFIG_PCM_S32BE_DECODER 1 -#define CONFIG_PCM_S32LE_DECODER 1 -#define CONFIG_PCM_S32LE_PLANAR_DECODER 1 -#define CONFIG_PCM_U8_DECODER 1 -#define CONFIG_PCM_U16BE_DECODER 1 -#define CONFIG_PCM_U16LE_DECODER 1 -#define CONFIG_PCM_U24BE_DECODER 1 -#define CONFIG_PCM_U24LE_DECODER 1 -#define CONFIG_PCM_U32BE_DECODER 1 -#define CONFIG_PCM_U32LE_DECODER 1 -#define CONFIG_PCM_ZORK_DECODER 1 -#define CONFIG_INTERPLAY_DPCM_DECODER 1 -#define CONFIG_ROQ_DPCM_DECODER 1 -#define CONFIG_SOL_DPCM_DECODER 1 -#define CONFIG_XAN_DPCM_DECODER 1 -#define CONFIG_ADPCM_4XM_DECODER 1 -#define CONFIG_ADPCM_ADX_DECODER 1 -#define CONFIG_ADPCM_AFC_DECODER 1 -#define CONFIG_ADPCM_CT_DECODER 1 -#define CONFIG_ADPCM_EA_DECODER 1 -#define CONFIG_ADPCM_EA_MAXIS_XA_DECODER 1 -#define CONFIG_ADPCM_EA_R1_DECODER 1 -#define CONFIG_ADPCM_EA_R2_DECODER 1 -#define CONFIG_ADPCM_EA_R3_DECODER 1 -#define CONFIG_ADPCM_EA_XAS_DECODER 1 -#define CONFIG_ADPCM_G722_DECODER 1 -#define CONFIG_ADPCM_G726_DECODER 1 -#define CONFIG_ADPCM_IMA_AMV_DECODER 1 -#define CONFIG_ADPCM_IMA_APC_DECODER 1 -#define CONFIG_ADPCM_IMA_DK3_DECODER 1 -#define CONFIG_ADPCM_IMA_DK4_DECODER 1 -#define CONFIG_ADPCM_IMA_EA_EACS_DECODER 1 -#define CONFIG_ADPCM_IMA_EA_SEAD_DECODER 1 -#define CONFIG_ADPCM_IMA_ISS_DECODER 1 -#define CONFIG_ADPCM_IMA_OKI_DECODER 1 -#define CONFIG_ADPCM_IMA_QT_DECODER 1 -#define CONFIG_ADPCM_IMA_SMJPEG_DECODER 1 -#define CONFIG_ADPCM_IMA_WAV_DECODER 1 -#define CONFIG_ADPCM_IMA_WS_DECODER 1 -#define CONFIG_ADPCM_MS_DECODER 1 -#define CONFIG_ADPCM_SBPRO_2_DECODER 1 -#define CONFIG_ADPCM_SBPRO_3_DECODER 1 -#define CONFIG_ADPCM_SBPRO_4_DECODER 1 -#define CONFIG_ADPCM_SWF_DECODER 1 -#define CONFIG_ADPCM_THP_DECODER 1 -#define CONFIG_ADPCM_XA_DECODER 1 -#define CONFIG_ADPCM_YAMAHA_DECODER 1 -#define CONFIG_VIMA_DECODER 1 -#define CONFIG_ASS_DECODER 1 -#define CONFIG_DVBSUB_DECODER 1 -#define CONFIG_DVDSUB_DECODER 1 -#define CONFIG_JACOSUB_DECODER 1 -#define CONFIG_MICRODVD_DECODER 1 -#define CONFIG_MOVTEXT_DECODER 1 -#define CONFIG_MPL2_DECODER 1 -#define CONFIG_PGSSUB_DECODER 1 -#define CONFIG_PJS_DECODER 1 -#define CONFIG_REALTEXT_DECODER 1 -#define CONFIG_SAMI_DECODER 1 -#define CONFIG_SRT_DECODER 1 -#define CONFIG_SUBRIP_DECODER 1 -#define CONFIG_SUBVIEWER_DECODER 1 -#define CONFIG_SUBVIEWER1_DECODER 1 -#define CONFIG_TEXT_DECODER 1 -#define CONFIG_VPLAYER_DECODER 1 -#define CONFIG_WEBVTT_DECODER 1 -#define CONFIG_XSUB_DECODER 1 -#define CONFIG_LIBCELT_DECODER 0 -#define CONFIG_LIBGSM_DECODER 0 -#define CONFIG_LIBGSM_MS_DECODER 0 -#define CONFIG_LIBILBC_DECODER 0 -#define CONFIG_LIBOPENCORE_AMRNB_DECODER 0 -#define CONFIG_LIBOPENCORE_AMRWB_DECODER 0 -#define CONFIG_LIBOPENJPEG_DECODER 0 -#define CONFIG_LIBOPUS_DECODER 0 -#define CONFIG_LIBSCHROEDINGER_DECODER 0 -#define CONFIG_LIBSPEEX_DECODER 0 -#define CONFIG_LIBSTAGEFRIGHT_H264_DECODER 0 -#define CONFIG_LIBUTVIDEO_DECODER 0 -#define CONFIG_LIBVORBIS_DECODER 0 -#define CONFIG_LIBVPX_VP8_DECODER 1 -#define CONFIG_LIBVPX_VP9_DECODER 0 -#define CONFIG_BINTEXT_DECODER 1 -#define CONFIG_XBIN_DECODER 1 -#define CONFIG_IDF_DECODER 1 -#define CONFIG_AAC_DEMUXER 1 -#define CONFIG_AC3_DEMUXER 1 -#define CONFIG_ACT_DEMUXER 1 -#define CONFIG_ADF_DEMUXER 1 -#define CONFIG_ADX_DEMUXER 1 -#define CONFIG_AEA_DEMUXER 1 -#define CONFIG_AFC_DEMUXER 1 -#define CONFIG_AIFF_DEMUXER 1 -#define CONFIG_AMR_DEMUXER 1 -#define CONFIG_ANM_DEMUXER 1 -#define CONFIG_APC_DEMUXER 1 -#define CONFIG_APE_DEMUXER 1 -#define CONFIG_AQTITLE_DEMUXER 1 -#define CONFIG_ASF_DEMUXER 1 -#define CONFIG_ASS_DEMUXER 1 -#define CONFIG_AST_DEMUXER 1 -#define CONFIG_AU_DEMUXER 1 -#define CONFIG_AVI_DEMUXER 1 -#define CONFIG_AVISYNTH_DEMUXER 0 -#define CONFIG_AVR_DEMUXER 1 -#define CONFIG_AVS_DEMUXER 1 -#define CONFIG_BETHSOFTVID_DEMUXER 1 -#define CONFIG_BFI_DEMUXER 1 -#define CONFIG_BINTEXT_DEMUXER 1 -#define CONFIG_BINK_DEMUXER 1 -#define CONFIG_BIT_DEMUXER 1 -#define CONFIG_BMV_DEMUXER 1 -#define CONFIG_BRSTM_DEMUXER 1 -#define CONFIG_C93_DEMUXER 1 -#define CONFIG_CAF_DEMUXER 1 -#define CONFIG_CAVSVIDEO_DEMUXER 1 -#define CONFIG_CDG_DEMUXER 1 -#define CONFIG_CDXL_DEMUXER 1 -#define CONFIG_CONCAT_DEMUXER 1 -#define CONFIG_DAUD_DEMUXER 1 -#define CONFIG_DFA_DEMUXER 1 -#define CONFIG_DIRAC_DEMUXER 1 -#define CONFIG_DNXHD_DEMUXER 1 -#define CONFIG_DSICIN_DEMUXER 1 -#define CONFIG_DTS_DEMUXER 1 -#define CONFIG_DTSHD_DEMUXER 1 -#define CONFIG_DV_DEMUXER 1 -#define CONFIG_DXA_DEMUXER 1 -#define CONFIG_EA_DEMUXER 1 -#define CONFIG_EA_CDATA_DEMUXER 1 -#define CONFIG_EAC3_DEMUXER 1 -#define CONFIG_EPAF_DEMUXER 1 -#define CONFIG_FFM_DEMUXER 1 -#define CONFIG_FFMETADATA_DEMUXER 1 -#define CONFIG_FILMSTRIP_DEMUXER 1 -#define CONFIG_FLAC_DEMUXER 1 -#define CONFIG_FLIC_DEMUXER 1 -#define CONFIG_FLV_DEMUXER 1 -#define CONFIG_FOURXM_DEMUXER 1 -#define CONFIG_FRM_DEMUXER 1 -#define CONFIG_G722_DEMUXER 1 -#define CONFIG_G723_1_DEMUXER 1 -#define CONFIG_G729_DEMUXER 1 -#define CONFIG_GIF_DEMUXER 1 -#define CONFIG_GSM_DEMUXER 1 -#define CONFIG_GXF_DEMUXER 1 -#define CONFIG_H261_DEMUXER 1 -#define CONFIG_H263_DEMUXER 1 -#define CONFIG_H264_DEMUXER 1 -#define CONFIG_HLS_DEMUXER 1 -#define CONFIG_ICO_DEMUXER 1 -#define CONFIG_IDCIN_DEMUXER 1 -#define CONFIG_IDF_DEMUXER 1 -#define CONFIG_IFF_DEMUXER 1 -#define CONFIG_ILBC_DEMUXER 1 -#define CONFIG_IMAGE2_DEMUXER 1 -#define CONFIG_IMAGE2PIPE_DEMUXER 1 -#define CONFIG_INGENIENT_DEMUXER 1 -#define CONFIG_IPMOVIE_DEMUXER 1 -#define CONFIG_IRCAM_DEMUXER 1 -#define CONFIG_ISS_DEMUXER 1 -#define CONFIG_IV8_DEMUXER 1 -#define CONFIG_IVF_DEMUXER 1 -#define CONFIG_JACOSUB_DEMUXER 1 -#define CONFIG_JV_DEMUXER 1 -#define CONFIG_LATM_DEMUXER 1 -#define CONFIG_LMLM4_DEMUXER 1 -#define CONFIG_LOAS_DEMUXER 1 -#define CONFIG_LVF_DEMUXER 1 -#define CONFIG_LXF_DEMUXER 1 -#define CONFIG_M4V_DEMUXER 1 -#define CONFIG_MATROSKA_DEMUXER 1 -#define CONFIG_MGSTS_DEMUXER 1 -#define CONFIG_MICRODVD_DEMUXER 1 -#define CONFIG_MJPEG_DEMUXER 1 -#define CONFIG_MLP_DEMUXER 1 -#define CONFIG_MM_DEMUXER 1 -#define CONFIG_MMF_DEMUXER 1 -#define CONFIG_MOV_DEMUXER 1 -#define CONFIG_MP3_DEMUXER 1 -#define CONFIG_MPC_DEMUXER 1 -#define CONFIG_MPC8_DEMUXER 1 -#define CONFIG_MPEGPS_DEMUXER 1 -#define CONFIG_MPEGTS_DEMUXER 1 -#define CONFIG_MYTHTV_MPEGTS_DEMUXER 1 -#define CONFIG_MPEGTSRAW_DEMUXER 0 -#define CONFIG_MYTHTV_MPEGTSRAW_DEMUXER 1 -#define CONFIG_MPEGVIDEO_DEMUXER 1 -#define CONFIG_MPL2_DEMUXER 1 -#define CONFIG_MPSUB_DEMUXER 1 -#define CONFIG_MSNWC_TCP_DEMUXER 1 -#define CONFIG_MTV_DEMUXER 1 -#define CONFIG_MV_DEMUXER 1 -#define CONFIG_MVI_DEMUXER 1 -#define CONFIG_MXF_DEMUXER 1 -#define CONFIG_MXG_DEMUXER 1 -#define CONFIG_NC_DEMUXER 1 -#define CONFIG_NISTSPHERE_DEMUXER 1 -#define CONFIG_NSV_DEMUXER 1 -#define CONFIG_NUT_DEMUXER 1 -#define CONFIG_NUV_DEMUXER 1 -#define CONFIG_OGG_DEMUXER 1 -#define CONFIG_OMA_DEMUXER 1 -#define CONFIG_PAF_DEMUXER 1 -#define CONFIG_PCM_ALAW_DEMUXER 1 -#define CONFIG_PCM_MULAW_DEMUXER 1 -#define CONFIG_PCM_F64BE_DEMUXER 1 -#define CONFIG_PCM_F64LE_DEMUXER 1 -#define CONFIG_PCM_F32BE_DEMUXER 1 -#define CONFIG_PCM_F32LE_DEMUXER 1 -#define CONFIG_PCM_S32BE_DEMUXER 1 -#define CONFIG_PCM_S32LE_DEMUXER 1 -#define CONFIG_PCM_S24BE_DEMUXER 1 -#define CONFIG_PCM_S24LE_DEMUXER 1 -#define CONFIG_PCM_S16BE_DEMUXER 1 -#define CONFIG_PCM_S16LE_DEMUXER 1 -#define CONFIG_PCM_S8_DEMUXER 1 -#define CONFIG_PCM_U32BE_DEMUXER 1 -#define CONFIG_PCM_U32LE_DEMUXER 1 -#define CONFIG_PCM_U24BE_DEMUXER 1 -#define CONFIG_PCM_U24LE_DEMUXER 1 -#define CONFIG_PCM_U16BE_DEMUXER 1 -#define CONFIG_PCM_U16LE_DEMUXER 1 -#define CONFIG_PCM_U8_DEMUXER 1 -#define CONFIG_PJS_DEMUXER 1 -#define CONFIG_PMP_DEMUXER 1 -#define CONFIG_PVA_DEMUXER 1 -#define CONFIG_PVF_DEMUXER 1 -#define CONFIG_QCP_DEMUXER 1 -#define CONFIG_R3D_DEMUXER 1 -#define CONFIG_RAWVIDEO_DEMUXER 1 -#define CONFIG_REALTEXT_DEMUXER 1 -#define CONFIG_RL2_DEMUXER 1 -#define CONFIG_RM_DEMUXER 1 -#define CONFIG_ROQ_DEMUXER 1 -#define CONFIG_RPL_DEMUXER 1 -#define CONFIG_RSO_DEMUXER 1 -#define CONFIG_RTP_DEMUXER 1 -#define CONFIG_RTSP_DEMUXER 1 -#define CONFIG_SAMI_DEMUXER 1 -#define CONFIG_SAP_DEMUXER 1 -#define CONFIG_SBG_DEMUXER 1 -#define CONFIG_SDP_DEMUXER 1 -#define CONFIG_SEGAFILM_DEMUXER 1 -#define CONFIG_SHORTEN_DEMUXER 1 -#define CONFIG_SIFF_DEMUXER 1 -#define CONFIG_SMACKER_DEMUXER 1 -#define CONFIG_SMJPEG_DEMUXER 1 -#define CONFIG_SMUSH_DEMUXER 1 -#define CONFIG_SOL_DEMUXER 1 -#define CONFIG_SOX_DEMUXER 1 -#define CONFIG_SPDIF_DEMUXER 1 -#define CONFIG_SRT_DEMUXER 1 -#define CONFIG_STR_DEMUXER 1 -#define CONFIG_SUBVIEWER1_DEMUXER 1 -#define CONFIG_SUBVIEWER_DEMUXER 1 -#define CONFIG_SWF_DEMUXER 1 -#define CONFIG_TAK_DEMUXER 1 -#define CONFIG_TEDCAPTIONS_DEMUXER 1 -#define CONFIG_THP_DEMUXER 1 -#define CONFIG_TIERTEXSEQ_DEMUXER 1 -#define CONFIG_TMV_DEMUXER 1 -#define CONFIG_TRUEHD_DEMUXER 1 -#define CONFIG_TTA_DEMUXER 1 -#define CONFIG_TXD_DEMUXER 1 -#define CONFIG_TTY_DEMUXER 1 -#define CONFIG_VC1_DEMUXER 1 -#define CONFIG_VC1T_DEMUXER 1 -#define CONFIG_VIVO_DEMUXER 1 -#define CONFIG_VMD_DEMUXER 1 -#define CONFIG_VOBSUB_DEMUXER 1 -#define CONFIG_VOC_DEMUXER 1 -#define CONFIG_VPLAYER_DEMUXER 1 -#define CONFIG_VQF_DEMUXER 1 -#define CONFIG_W64_DEMUXER 1 -#define CONFIG_WAV_DEMUXER 1 -#define CONFIG_WC3_DEMUXER 1 -#define CONFIG_WEBVTT_DEMUXER 1 -#define CONFIG_WSAUD_DEMUXER 1 -#define CONFIG_WSVQA_DEMUXER 1 -#define CONFIG_WTV_DEMUXER 1 -#define CONFIG_WV_DEMUXER 1 -#define CONFIG_XA_DEMUXER 1 -#define CONFIG_XBIN_DEMUXER 1 -#define CONFIG_XMV_DEMUXER 1 -#define CONFIG_XWMA_DEMUXER 1 -#define CONFIG_YOP_DEMUXER 1 -#define CONFIG_YUV4MPEGPIPE_DEMUXER 1 -#define CONFIG_LIBMODPLUG_DEMUXER 0 -#define CONFIG_LIBNUT_DEMUXER 0 -#define CONFIG_A64MULTI_ENCODER 1 -#define CONFIG_A64MULTI5_ENCODER 1 -#define CONFIG_AMV_ENCODER 1 -#define CONFIG_ASV1_ENCODER 1 -#define CONFIG_ASV2_ENCODER 1 -#define CONFIG_AVRP_ENCODER 1 -#define CONFIG_AVUI_ENCODER 1 -#define CONFIG_AYUV_ENCODER 1 -#define CONFIG_BMP_ENCODER 1 -#define CONFIG_CLJR_ENCODER 1 -#define CONFIG_COMFORTNOISE_ENCODER 1 -#define CONFIG_DNXHD_ENCODER 1 -#define CONFIG_DPX_ENCODER 1 -#define CONFIG_DVVIDEO_ENCODER 1 -#define CONFIG_FFV1_ENCODER 1 -#define CONFIG_FFVHUFF_ENCODER 1 -#define CONFIG_FLASHSV_ENCODER 1 -#define CONFIG_FLASHSV2_ENCODER 1 -#define CONFIG_FLV_ENCODER 1 -#define CONFIG_GIF_ENCODER 1 -#define CONFIG_H261_ENCODER 1 -#define CONFIG_H263_ENCODER 1 -#define CONFIG_H263P_ENCODER 1 -#define CONFIG_HUFFYUV_ENCODER 1 -#define CONFIG_JPEG2000_ENCODER 1 -#define CONFIG_JPEGLS_ENCODER 1 -#define CONFIG_LJPEG_ENCODER 1 -#define CONFIG_MJPEG_ENCODER 1 -#define CONFIG_MPEG1VIDEO_ENCODER 1 -#define CONFIG_MPEG2VIDEO_ENCODER 1 -#define CONFIG_MPEG4_ENCODER 1 -#define CONFIG_MSMPEG4V2_ENCODER 1 -#define CONFIG_MSMPEG4V3_ENCODER 1 -#define CONFIG_MSVIDEO1_ENCODER 1 -#define CONFIG_PAM_ENCODER 1 -#define CONFIG_PBM_ENCODER 1 -#define CONFIG_PCX_ENCODER 1 -#define CONFIG_PGM_ENCODER 1 -#define CONFIG_PGMYUV_ENCODER 1 -#define CONFIG_PNG_ENCODER 1 -#define CONFIG_PPM_ENCODER 1 -#define CONFIG_PRORES_ENCODER 1 -#define CONFIG_PRORES_ANATOLIY_ENCODER 1 -#define CONFIG_PRORES_KOSTYA_ENCODER 1 -#define CONFIG_QTRLE_ENCODER 1 -#define CONFIG_R10K_ENCODER 1 -#define CONFIG_R210_ENCODER 1 -#define CONFIG_RAWVIDEO_ENCODER 1 -#define CONFIG_ROQ_ENCODER 1 -#define CONFIG_RV10_ENCODER 1 -#define CONFIG_RV20_ENCODER 1 -#define CONFIG_SGI_ENCODER 1 -#define CONFIG_SNOW_ENCODER 1 -#define CONFIG_SUNRAST_ENCODER 1 -#define CONFIG_SVQ1_ENCODER 1 -#define CONFIG_TARGA_ENCODER 1 -#define CONFIG_TIFF_ENCODER 1 -#define CONFIG_UTVIDEO_ENCODER 1 -#define CONFIG_V210_ENCODER 1 -#define CONFIG_V308_ENCODER 1 -#define CONFIG_V408_ENCODER 1 -#define CONFIG_V410_ENCODER 1 -#define CONFIG_WMV1_ENCODER 1 -#define CONFIG_WMV2_ENCODER 1 -#define CONFIG_XBM_ENCODER 1 -#define CONFIG_XFACE_ENCODER 1 -#define CONFIG_XWD_ENCODER 1 -#define CONFIG_Y41P_ENCODER 1 -#define CONFIG_YUV4_ENCODER 1 -#define CONFIG_ZLIB_ENCODER 1 -#define CONFIG_ZMBV_ENCODER 1 -#define CONFIG_AAC_ENCODER 1 -#define CONFIG_AC3_ENCODER 1 -#define CONFIG_AC3_FIXED_ENCODER 1 -#define CONFIG_ALAC_ENCODER 1 -#define CONFIG_DCA_ENCODER 1 -#define CONFIG_EAC3_ENCODER 1 -#define CONFIG_FLAC_ENCODER 1 -#define CONFIG_G723_1_ENCODER 1 -#define CONFIG_MP2_ENCODER 1 -#define CONFIG_NELLYMOSER_ENCODER 1 -#define CONFIG_RA_144_ENCODER 1 -#define CONFIG_SONIC_ENCODER 1 -#define CONFIG_SONIC_LS_ENCODER 1 -#define CONFIG_VORBIS_ENCODER 1 -#define CONFIG_WMAV1_ENCODER 1 -#define CONFIG_WMAV2_ENCODER 1 -#define CONFIG_PCM_ALAW_ENCODER 1 -#define CONFIG_PCM_F32BE_ENCODER 1 -#define CONFIG_PCM_F32LE_ENCODER 1 -#define CONFIG_PCM_F64BE_ENCODER 1 -#define CONFIG_PCM_F64LE_ENCODER 1 -#define CONFIG_PCM_MULAW_ENCODER 1 -#define CONFIG_PCM_S8_ENCODER 1 -#define CONFIG_PCM_S8_PLANAR_ENCODER 1 -#define CONFIG_PCM_S16BE_ENCODER 1 -#define CONFIG_PCM_S16BE_PLANAR_ENCODER 1 -#define CONFIG_PCM_S16LE_ENCODER 1 -#define CONFIG_PCM_S16LE_PLANAR_ENCODER 1 -#define CONFIG_PCM_S24BE_ENCODER 1 -#define CONFIG_PCM_S24DAUD_ENCODER 1 -#define CONFIG_PCM_S24LE_ENCODER 1 -#define CONFIG_PCM_S24LE_PLANAR_ENCODER 1 -#define CONFIG_PCM_S32BE_ENCODER 1 -#define CONFIG_PCM_S32LE_ENCODER 1 -#define CONFIG_PCM_S32LE_PLANAR_ENCODER 1 -#define CONFIG_PCM_U8_ENCODER 1 -#define CONFIG_PCM_U16BE_ENCODER 1 -#define CONFIG_PCM_U16LE_ENCODER 1 -#define CONFIG_PCM_U24BE_ENCODER 1 -#define CONFIG_PCM_U24LE_ENCODER 1 -#define CONFIG_PCM_U32BE_ENCODER 1 -#define CONFIG_PCM_U32LE_ENCODER 1 -#define CONFIG_ROQ_DPCM_ENCODER 1 -#define CONFIG_ADPCM_ADX_ENCODER 1 -#define CONFIG_ADPCM_G722_ENCODER 1 -#define CONFIG_ADPCM_G726_ENCODER 1 -#define CONFIG_ADPCM_IMA_QT_ENCODER 1 -#define CONFIG_ADPCM_IMA_WAV_ENCODER 1 -#define CONFIG_ADPCM_MS_ENCODER 1 -#define CONFIG_ADPCM_SWF_ENCODER 1 -#define CONFIG_ADPCM_YAMAHA_ENCODER 1 -#define CONFIG_ASS_ENCODER 1 -#define CONFIG_DVBSUB_ENCODER 1 -#define CONFIG_DVDSUB_ENCODER 1 -#define CONFIG_MOVTEXT_ENCODER 1 -#define CONFIG_SRT_ENCODER 1 -#define CONFIG_SUBRIP_ENCODER 1 -#define CONFIG_XSUB_ENCODER 1 -#define CONFIG_LIBFAAC_ENCODER 0 -#define CONFIG_LIBFDK_AAC_ENCODER 0 -#define CONFIG_LIBGSM_ENCODER 0 -#define CONFIG_LIBGSM_MS_ENCODER 0 -#define CONFIG_LIBILBC_ENCODER 0 -#define CONFIG_LIBMP3LAME_ENCODER 1 -#define CONFIG_LIBOPENCORE_AMRNB_ENCODER 0 -#define CONFIG_LIBOPENJPEG_ENCODER 0 -#define CONFIG_LIBOPUS_ENCODER 0 -#define CONFIG_LIBSCHROEDINGER_ENCODER 0 -#define CONFIG_LIBSPEEX_ENCODER 0 -#define CONFIG_LIBTHEORA_ENCODER 0 -#define CONFIG_LIBTWOLAME_ENCODER 0 -#define CONFIG_LIBUTVIDEO_ENCODER 0 -#define CONFIG_LIBVO_AACENC_ENCODER 0 -#define CONFIG_LIBVO_AMRWBENC_ENCODER 0 -#define CONFIG_LIBVORBIS_ENCODER 0 -#define CONFIG_LIBVPX_VP8_ENCODER 1 -#define CONFIG_LIBVPX_VP9_ENCODER 0 -#define CONFIG_LIBX264_ENCODER 1 -#define CONFIG_LIBX264RGB_ENCODER 1 -#define CONFIG_LIBXAVS_ENCODER 0 -#define CONFIG_LIBXVID_ENCODER 0 -#define CONFIG_LIBAACPLUS_ENCODER 0 -#define CONFIG_ACONVERT_FILTER 1 -#define CONFIG_AFADE_FILTER 1 -#define CONFIG_AFORMAT_FILTER 1 -#define CONFIG_ALLPASS_FILTER 1 -#define CONFIG_AMERGE_FILTER 1 -#define CONFIG_AMIX_FILTER 1 -#define CONFIG_ANULL_FILTER 1 -#define CONFIG_APAD_FILTER 1 -#define CONFIG_ARESAMPLE_FILTER 1 -#define CONFIG_ASELECT_FILTER 1 -#define CONFIG_ASENDCMD_FILTER 1 -#define CONFIG_ASETNSAMPLES_FILTER 1 -#define CONFIG_ASETPTS_FILTER 1 -#define CONFIG_ASETTB_FILTER 1 -#define CONFIG_ASHOWINFO_FILTER 1 -#define CONFIG_ASPLIT_FILTER 1 -#define CONFIG_ASTREAMSYNC_FILTER 1 -#define CONFIG_ASYNCTS_FILTER 0 -#define CONFIG_ATEMPO_FILTER 1 -#define CONFIG_BANDPASS_FILTER 1 -#define CONFIG_BANDREJECT_FILTER 1 -#define CONFIG_BASS_FILTER 1 -#define CONFIG_BIQUAD_FILTER 1 -#define CONFIG_CHANNELMAP_FILTER 1 -#define CONFIG_CHANNELSPLIT_FILTER 1 -#define CONFIG_EARWAX_FILTER 1 -#define CONFIG_EBUR128_FILTER 1 -#define CONFIG_EQUALIZER_FILTER 1 -#define CONFIG_HIGHPASS_FILTER 1 -#define CONFIG_JOIN_FILTER 1 -#define CONFIG_LOWPASS_FILTER 1 -#define CONFIG_PAN_FILTER 1 -#define CONFIG_RESAMPLE_FILTER 0 -#define CONFIG_SILENCEDETECT_FILTER 1 -#define CONFIG_TREBLE_FILTER 1 -#define CONFIG_VOLUME_FILTER 1 -#define CONFIG_VOLUMEDETECT_FILTER 1 -#define CONFIG_AEVALSRC_FILTER 1 -#define CONFIG_ANULLSRC_FILTER 1 -#define CONFIG_FLITE_FILTER 0 -#define CONFIG_ANULLSINK_FILTER 1 -#define CONFIG_ALPHAEXTRACT_FILTER 1 -#define CONFIG_ALPHAMERGE_FILTER 1 -#define CONFIG_ASS_FILTER 0 -#define CONFIG_BBOX_FILTER 1 -#define CONFIG_BLACKDETECT_FILTER 1 -#define CONFIG_BLACKFRAME_FILTER 1 -#define CONFIG_BLEND_FILTER 1 -#define CONFIG_BOXBLUR_FILTER 1 -#define CONFIG_COLORMATRIX_FILTER 1 -#define CONFIG_COPY_FILTER 1 -#define CONFIG_CROP_FILTER 1 -#define CONFIG_CROPDETECT_FILTER 1 -#define CONFIG_DECIMATE_FILTER 1 -#define CONFIG_DELOGO_FILTER 1 -#define CONFIG_DESHAKE_FILTER 1 -#define CONFIG_DRAWBOX_FILTER 1 -#define CONFIG_DRAWTEXT_FILTER 0 -#define CONFIG_EDGEDETECT_FILTER 1 -#define CONFIG_FADE_FILTER 1 -#define CONFIG_FIELD_FILTER 1 -#define CONFIG_FIELDORDER_FILTER 1 -#define CONFIG_FORMAT_FILTER 1 -#define CONFIG_FPS_FILTER 1 -#define CONFIG_FRAMESTEP_FILTER 1 -#define CONFIG_FREI0R_FILTER 0 -#define CONFIG_GEQ_FILTER 1 -#define CONFIG_GRADFUN_FILTER 1 -#define CONFIG_HFLIP_FILTER 1 -#define CONFIG_HISTEQ_FILTER 1 -#define CONFIG_HISTOGRAM_FILTER 1 -#define CONFIG_HQDN3D_FILTER 1 -#define CONFIG_HUE_FILTER 1 -#define CONFIG_IDET_FILTER 1 -#define CONFIG_IL_FILTER 1 -#define CONFIG_KERNDEINT_FILTER 1 -#define CONFIG_LUT_FILTER 1 -#define CONFIG_LUTRGB_FILTER 1 -#define CONFIG_LUTYUV_FILTER 1 -#define CONFIG_MP_FILTER 1 -#define CONFIG_NEGATE_FILTER 1 -#define CONFIG_NOFORMAT_FILTER 1 -#define CONFIG_NOISE_FILTER 1 -#define CONFIG_NULL_FILTER 1 -#define CONFIG_OCV_FILTER 0 -#define CONFIG_OVERLAY_FILTER 1 -#define CONFIG_PAD_FILTER 1 -#define CONFIG_PIXDESCTEST_FILTER 1 -#define CONFIG_PP_FILTER 1 -#define CONFIG_REMOVELOGO_FILTER 1 -#define CONFIG_SCALE_FILTER 1 -#define CONFIG_SELECT_FILTER 1 -#define CONFIG_SENDCMD_FILTER 1 -#define CONFIG_SETDAR_FILTER 1 -#define CONFIG_SETFIELD_FILTER 1 -#define CONFIG_SETPTS_FILTER 1 -#define CONFIG_SETSAR_FILTER 1 -#define CONFIG_SETTB_FILTER 1 -#define CONFIG_SHOWINFO_FILTER 1 -#define CONFIG_SMARTBLUR_FILTER 1 -#define CONFIG_SPLIT_FILTER 1 -#define CONFIG_STEREO3D_FILTER 1 -#define CONFIG_SUBTITLES_FILTER 0 -#define CONFIG_SUPER2XSAI_FILTER 1 -#define CONFIG_SWAPUV_FILTER 1 -#define CONFIG_THUMBNAIL_FILTER 1 -#define CONFIG_TILE_FILTER 1 -#define CONFIG_TINTERLACE_FILTER 1 -#define CONFIG_TRANSPOSE_FILTER 1 -#define CONFIG_UNSHARP_FILTER 1 -#define CONFIG_VFLIP_FILTER 1 -#define CONFIG_YADIF_FILTER 1 -#define CONFIG_CELLAUTO_FILTER 1 -#define CONFIG_COLOR_FILTER 1 -#define CONFIG_FREI0R_SRC_FILTER 0 -#define CONFIG_LIFE_FILTER 1 -#define CONFIG_MANDELBROT_FILTER 1 -#define CONFIG_MPTESTSRC_FILTER 1 -#define CONFIG_NULLSRC_FILTER 1 -#define CONFIG_RGBTESTSRC_FILTER 1 -#define CONFIG_SMPTEBARS_FILTER 1 -#define CONFIG_TESTSRC_FILTER 1 -#define CONFIG_NULLSINK_FILTER 1 -#define CONFIG_CONCAT_FILTER 1 -#define CONFIG_SHOWSPECTRUM_FILTER 1 -#define CONFIG_SHOWWAVES_FILTER 1 -#define CONFIG_AMOVIE_FILTER 1 -#define CONFIG_MOVIE_FILTER 1 -#define CONFIG_H263_VAAPI_HWACCEL 0 -#define CONFIG_H263_VDPAU_HWACCEL 0 -#define CONFIG_H264_DXVA2_HWACCEL 0 -#define CONFIG_H264_VAAPI_HWACCEL 0 -#define CONFIG_H264_VDA_HWACCEL 0 -#define CONFIG_H264_VDPAU_HWACCEL 0 -#define CONFIG_MPEG1_VDPAU_HWACCEL 0 -#define CONFIG_MPEG2_DXVA2_HWACCEL 0 -#define CONFIG_MPEG2_VAAPI_HWACCEL 0 -#define CONFIG_MPEG2_VDPAU_HWACCEL 0 -#define CONFIG_MPEG4_VAAPI_HWACCEL 0 -#define CONFIG_MPEG4_VDPAU_HWACCEL 0 -#define CONFIG_VC1_DXVA2_HWACCEL 0 -#define CONFIG_VC1_VAAPI_HWACCEL 0 -#define CONFIG_VC1_VDPAU_HWACCEL 0 -#define CONFIG_WMV3_DXVA2_HWACCEL 0 -#define CONFIG_WMV3_VAAPI_HWACCEL 0 -#define CONFIG_WMV3_VDPAU_HWACCEL 0 -#define CONFIG_ALSA_INDEV 1 -#define CONFIG_BKTR_INDEV 0 -#define CONFIG_DSHOW_INDEV 0 -#define CONFIG_DV1394_INDEV 1 -#define CONFIG_FBDEV_INDEV 1 -#define CONFIG_IEC61883_INDEV 0 -#define CONFIG_JACK_INDEV 0 -#define CONFIG_LAVFI_INDEV 1 -#define CONFIG_OPENAL_INDEV 0 -#define CONFIG_OSS_INDEV 1 -#define CONFIG_PULSE_INDEV 0 -#define CONFIG_SNDIO_INDEV 0 -#define CONFIG_V4L2_INDEV 1 -#define CONFIG_VFWCAP_INDEV 0 -#define CONFIG_X11GRAB_INDEV 0 -#define CONFIG_LIBCDIO_INDEV 0 -#define CONFIG_LIBDC1394_INDEV 0 -#define CONFIG_A64_MUXER 1 -#define CONFIG_AC3_MUXER 1 -#define CONFIG_ADTS_MUXER 1 -#define CONFIG_ADX_MUXER 1 -#define CONFIG_AIFF_MUXER 1 -#define CONFIG_AMR_MUXER 1 -#define CONFIG_ASF_MUXER 1 -#define CONFIG_ASS_MUXER 1 -#define CONFIG_AST_MUXER 1 -#define CONFIG_ASF_STREAM_MUXER 1 -#define CONFIG_AU_MUXER 1 -#define CONFIG_AVI_MUXER 1 -#define CONFIG_AVM2_MUXER 1 -#define CONFIG_BIT_MUXER 1 -#define CONFIG_CAF_MUXER 1 -#define CONFIG_CAVSVIDEO_MUXER 1 -#define CONFIG_CRC_MUXER 1 -#define CONFIG_DAUD_MUXER 1 -#define CONFIG_DIRAC_MUXER 1 -#define CONFIG_DNXHD_MUXER 1 -#define CONFIG_DTS_MUXER 1 -#define CONFIG_DV_MUXER 1 -#define CONFIG_EAC3_MUXER 1 -#define CONFIG_F4V_MUXER 1 -#define CONFIG_FFM_MUXER 1 -#define CONFIG_FFMETADATA_MUXER 1 -#define CONFIG_FILMSTRIP_MUXER 1 -#define CONFIG_FLAC_MUXER 1 -#define CONFIG_FLV_MUXER 1 -#define CONFIG_FRAMECRC_MUXER 1 -#define CONFIG_FRAMEMD5_MUXER 1 -#define CONFIG_G722_MUXER 1 -#define CONFIG_G723_1_MUXER 1 -#define CONFIG_GIF_MUXER 1 -#define CONFIG_GXF_MUXER 1 -#define CONFIG_H261_MUXER 1 -#define CONFIG_H263_MUXER 1 -#define CONFIG_H264_MUXER 1 -#define CONFIG_HLS_MUXER 1 -#define CONFIG_ICO_MUXER 1 -#define CONFIG_ILBC_MUXER 1 -#define CONFIG_IMAGE2_MUXER 1 -#define CONFIG_IMAGE2PIPE_MUXER 1 -#define CONFIG_IPOD_MUXER 1 -#define CONFIG_IRCAM_MUXER 1 -#define CONFIG_ISMV_MUXER 1 -#define CONFIG_IVF_MUXER 1 -#define CONFIG_JACOSUB_MUXER 1 -#define CONFIG_LATM_MUXER 1 -#define CONFIG_M4V_MUXER 1 -#define CONFIG_MD5_MUXER 1 -#define CONFIG_MATROSKA_MUXER 1 -#define CONFIG_MATROSKA_AUDIO_MUXER 1 -#define CONFIG_MICRODVD_MUXER 1 -#define CONFIG_MJPEG_MUXER 1 -#define CONFIG_MLP_MUXER 1 -#define CONFIG_MMF_MUXER 1 -#define CONFIG_MOV_MUXER 1 -#define CONFIG_MP2_MUXER 1 -#define CONFIG_MP3_MUXER 1 -#define CONFIG_MP4_MUXER 1 -#define CONFIG_MPEG1SYSTEM_MUXER 1 -#define CONFIG_MPEG1VCD_MUXER 1 -#define CONFIG_MPEG1VIDEO_MUXER 1 -#define CONFIG_MPEG2DVD_MUXER 1 -#define CONFIG_MPEG2SVCD_MUXER 1 -#define CONFIG_MPEG2VIDEO_MUXER 1 -#define CONFIG_MPEG2VOB_MUXER 1 -#define CONFIG_MPEGTS_MUXER 1 -#define CONFIG_MPEGTS_MUXER 1 -#define CONFIG_MPJPEG_MUXER 1 -#define CONFIG_MXF_MUXER 1 -#define CONFIG_MXF_D10_MUXER 1 -#define CONFIG_NULL_MUXER 1 -#define CONFIG_NUT_MUXER 1 -#define CONFIG_OGG_MUXER 1 -#define CONFIG_OMA_MUXER 1 -#define CONFIG_PCM_ALAW_MUXER 1 -#define CONFIG_PCM_MULAW_MUXER 1 -#define CONFIG_PCM_F64BE_MUXER 1 -#define CONFIG_PCM_F64LE_MUXER 1 -#define CONFIG_PCM_F32BE_MUXER 1 -#define CONFIG_PCM_F32LE_MUXER 1 -#define CONFIG_PCM_S32BE_MUXER 1 -#define CONFIG_PCM_S32LE_MUXER 1 -#define CONFIG_PCM_S24BE_MUXER 1 -#define CONFIG_PCM_S24LE_MUXER 1 -#define CONFIG_PCM_S16BE_MUXER 1 -#define CONFIG_PCM_S16LE_MUXER 1 -#define CONFIG_PCM_S8_MUXER 1 -#define CONFIG_PCM_U32BE_MUXER 1 -#define CONFIG_PCM_U32LE_MUXER 1 -#define CONFIG_PCM_U24BE_MUXER 1 -#define CONFIG_PCM_U24LE_MUXER 1 -#define CONFIG_PCM_U16BE_MUXER 1 -#define CONFIG_PCM_U16LE_MUXER 1 -#define CONFIG_PCM_U8_MUXER 1 -#define CONFIG_PSP_MUXER 1 -#define CONFIG_RAWVIDEO_MUXER 1 -#define CONFIG_RM_MUXER 1 -#define CONFIG_ROQ_MUXER 1 -#define CONFIG_RSO_MUXER 1 -#define CONFIG_RTP_MUXER 1 -#define CONFIG_RTSP_MUXER 1 -#define CONFIG_SAP_MUXER 1 -#define CONFIG_SEGMENT_MUXER 1 -#define CONFIG_STREAM_SEGMENT_MUXER 1 -#define CONFIG_SMJPEG_MUXER 1 -#define CONFIG_SMOOTHSTREAMING_MUXER 1 -#define CONFIG_SOX_MUXER 1 -#define CONFIG_SPDIF_MUXER 1 -#define CONFIG_SRT_MUXER 1 -#define CONFIG_SWF_MUXER 1 -#define CONFIG_TEE_MUXER 1 -#define CONFIG_TG2_MUXER 1 -#define CONFIG_TGP_MUXER 1 -#define CONFIG_MKVTIMESTAMP_V2_MUXER 1 -#define CONFIG_TRUEHD_MUXER 1 -#define CONFIG_VC1T_MUXER 1 -#define CONFIG_VOC_MUXER 1 -#define CONFIG_W64_MUXER 1 -#define CONFIG_WAV_MUXER 1 -#define CONFIG_WEBM_MUXER 1 -#define CONFIG_WTV_MUXER 1 -#define CONFIG_WV_MUXER 1 -#define CONFIG_YUV4MPEGPIPE_MUXER 1 -#define CONFIG_LIBNUT_MUXER 0 -#define CONFIG_ALSA_OUTDEV 1 -#define CONFIG_CACA_OUTDEV 0 -#define CONFIG_OSS_OUTDEV 1 -#define CONFIG_SDL_OUTDEV 1 -#define CONFIG_SNDIO_OUTDEV 0 -#define CONFIG_AAC_PARSER 1 -#define CONFIG_AAC_LATM_PARSER 1 -#define CONFIG_AC3_PARSER 1 -#define CONFIG_ADX_PARSER 1 -#define CONFIG_BMP_PARSER 1 -#define CONFIG_CAVSVIDEO_PARSER 1 -#define CONFIG_COOK_PARSER 1 -#define CONFIG_DCA_PARSER 1 -#define CONFIG_DIRAC_PARSER 1 -#define CONFIG_DNXHD_PARSER 1 -#define CONFIG_DVBSUB_PARSER 1 -#define CONFIG_DVDSUB_PARSER 1 -#define CONFIG_DVD_NAV_PARSER 1 -#define CONFIG_FLAC_PARSER 1 -#define CONFIG_GSM_PARSER 1 -#define CONFIG_H261_PARSER 1 -#define CONFIG_H263_PARSER 1 -#define CONFIG_H264_PARSER 1 -#define CONFIG_MJPEG_PARSER 1 -#define CONFIG_MLP_PARSER 1 -#define CONFIG_MPEG4VIDEO_PARSER 1 -#define CONFIG_MPEGAUDIO_PARSER 1 -#define CONFIG_MPEGVIDEO_PARSER 1 -#define CONFIG_PNG_PARSER 1 -#define CONFIG_PNM_PARSER 1 -#define CONFIG_RV30_PARSER 1 -#define CONFIG_RV40_PARSER 1 -#define CONFIG_TAK_PARSER 1 -#define CONFIG_VC1_PARSER 1 -#define CONFIG_VORBIS_PARSER 1 -#define CONFIG_VP3_PARSER 1 -#define CONFIG_VP8_PARSER 1 -#define CONFIG_APPLEHTTP_PROTOCOL 1 -#define CONFIG_BLURAY_PROTOCOL 0 -#define CONFIG_CACHE_PROTOCOL 1 -#define CONFIG_CONCAT_PROTOCOL 1 -#define CONFIG_CRYPTO_PROTOCOL 1 -#define CONFIG_DATA_PROTOCOL 1 -#define CONFIG_FFRTMPCRYPT_PROTOCOL 0 -#define CONFIG_FFRTMPHTTP_PROTOCOL 1 -#define CONFIG_FILE_PROTOCOL 1 -#define CONFIG_GOPHER_PROTOCOL 1 -#define CONFIG_HLS_PROTOCOL 1 -#define CONFIG_HTTP_PROTOCOL 1 -#define CONFIG_HTTPPROXY_PROTOCOL 1 -#define CONFIG_HTTPS_PROTOCOL 0 -#define CONFIG_MMSH_PROTOCOL 1 -#define CONFIG_MMST_PROTOCOL 1 -#define CONFIG_MD5_PROTOCOL 1 -#define CONFIG_PIPE_PROTOCOL 1 -#define CONFIG_RTMP_PROTOCOL 1 -#define CONFIG_RTMPE_PROTOCOL 0 -#define CONFIG_RTMPS_PROTOCOL 0 -#define CONFIG_RTMPT_PROTOCOL 1 -#define CONFIG_RTMPTE_PROTOCOL 0 -#define CONFIG_RTMPTS_PROTOCOL 0 -#define CONFIG_RTP_PROTOCOL 1 -#define CONFIG_SCTP_PROTOCOL 0 -#define CONFIG_SRTP_PROTOCOL 1 -#define CONFIG_TCP_PROTOCOL 1 -#define CONFIG_TLS_PROTOCOL 0 -#define CONFIG_UDP_PROTOCOL 1 -#define CONFIG_LIBRTMP_PROTOCOL 0 -#define CONFIG_LIBRTMPE_PROTOCOL 0 -#define CONFIG_LIBRTMPS_PROTOCOL 0 -#define CONFIG_LIBRTMPT_PROTOCOL 0 -#define CONFIG_LIBRTMPTE_PROTOCOL 0 -#define CONFIG_AUDIO_PULSE 0 -#define CONFIG_AUDIO_PULSEOUTPUT 0 -#define CONFIG_AUDIO_ALSA 0 -#define CONFIG_AUDIO_JACK 0 -#define CONFIG_AUDIO_OSS 0 -#define CONFIG_FFMPEG_PTHREADS 1 -#define CONFIG_MAC_BUNDLE 0 -#define CONFIG_PROC_OPT 0 -#define CONFIG_SILENT_CC 0 -#define CONFIG_SYMBOL_VISIBILITY 1 -#define CONFIG_BACKEND 1 -#define CONFIG_BINDINGS_PERL 0 -#define CONFIG_BINDINGS_PYTHON 0 -#define CONFIG_BINDINGS_PHP 1 -#define CONFIG_CRYSTALHD 0 -#define CONFIG_CYGWIN 0 -#define CONFIG_DARWIN 0 -#define CONFIG_DISABLE_MMX_FOR_DEBUGGING 0 -#define CONFIG_DVB 1 -#define CONFIG_FIREWIRE 0 -#define CONFIG_FRONTEND 1 -#define CONFIG_HDHOMERUN 1 -#define CONFIG_CETON 1 -#define CONFIG_HDPVR 1 -#define CONFIG_IVTV 1 -#define CONFIG_ASI 0 -#define CONFIG_JOYSTICK_MENU 1 -#define CONFIG_LIBCEC 0 -#define CONFIG_LIBCRYPTO 0 -#define CONFIG_LIBDNS_SD 1 -#define CONFIG_LIBFFTW3 1 -#define CONFIG_LIBMPEG2EXTERNAL 1 -#define CONFIG_LIBXML2 1 -#define CONFIG_LIBUDF 0 -#define CONFIG_LIRC 1 -#define CONFIG_MHEG 1 -#define CONFIG_OPENGL 1 -#define CONFIG_OPENGL_VIDEO 1 -#define CONFIG_QTSCRIPT 1 -#define CONFIG_QTDBUS 0 -#define CONFIG_SDL 1 -#define CONFIG_TAGLIB 1 -#define CONFIG_V4L2 1 -#define CONFIG_VALGRIND 0 -#define CONFIG_X11 1 -#define CONFIG_XRANDR 0 -#define CONFIG_XV 0 -#define MYTH_BUILD_CONFIG " debug use_hidesyms using_alsa using_oss using_pulse using_pulseoutput using_backend using_bindings_php using_dvb using_frontend using_hdhomerun using_ceton using_hdpvr using_ivtv using_joystick_menu using_libdns_sd using_libfftw3 using_libxml2 using_lirc using_mheg using_opengl using_opengl_video using_qtscript using_qtdbus using_sdl using_taglib using_bindings_php using_mythtranscode using_opengl using_ffmpeg_threads using_mheg using_libxml2" - -#endif /* MYTHTV_CONFIG_H */ diff --git a/platform/win32/msvc/include/strings.h b/platform/win32/msvc/include/strings.h deleted file mode 100644 index 8b137891791..00000000000 --- a/platform/win32/msvc/include/strings.h +++ /dev/null @@ -1 +0,0 @@ - diff --git a/platform/win32/msvc/include/sys/ioctl.h b/platform/win32/msvc/include/sys/ioctl.h deleted file mode 100644 index 8b137891791..00000000000 --- a/platform/win32/msvc/include/sys/ioctl.h +++ /dev/null @@ -1 +0,0 @@ - diff --git a/platform/win32/msvc/include/sys/param.h b/platform/win32/msvc/include/sys/param.h deleted file mode 100644 index 0519ecba6ea..00000000000 --- a/platform/win32/msvc/include/sys/param.h +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/platform/win32/msvc/include/sys/time.h b/platform/win32/msvc/include/sys/time.h deleted file mode 100644 index 712e5990bb0..00000000000 --- a/platform/win32/msvc/include/sys/time.h +++ /dev/null @@ -1,54 +0,0 @@ - -#ifndef __COMPAT_TIME_H__ -#define __COMPAT_TIME_H__ - -#include "compat.h" - -#include -#include -#include // for timeval - -//typedef struct timeval { -// long tv_sec; -// long tv_usec; -//} timeval; - -#if defined(_MSC_VER) || defined(__BORLANDC__) -#define EPOCHFILETIME (116444736000000000i64) -#else -#define EPOCHFILETIME (116444736000000000LL) -#endif - -__inline int gettimeofday( struct timeval *tv, void *tz ) -{ - FILETIME ft; - LARGE_INTEGER li; - __int64 t; - static int tzflag; - - if (tv) - { - GetSystemTimeAsFileTime(&ft); - li.LowPart = ft.dwLowDateTime; - li.HighPart = ft.dwHighDateTime; - t = li.QuadPart; - t -= EPOCHFILETIME; - t /= 10; - (tv)->tv_sec = (long)(t / 1000000); - (tv)->tv_usec = (long)(t % 1000000); - } - - return 0; -} - -#define utimbuf _utimbuf -#define utime( a, b ) _utime( a, b ) - -struct timezone -{ - int tz_dsttime; - int tz_minuteswest; -}; - - -#endif diff --git a/platform/win32/msvc/include/unistd.h b/platform/win32/msvc/include/unistd.h deleted file mode 100644 index 66dfb60d7f4..00000000000 --- a/platform/win32/msvc/include/unistd.h +++ /dev/null @@ -1,36 +0,0 @@ -#pragma once - -#include "compat.h" -#include "stdint.h" - -__inline unsigned int usleep( unsigned int us ) -{ - Sleep( (us + 999) / 1000 ); - return 0; -} - -__inline int close( int fd ) -{ - return _close( fd ); -} - -__inline int write( int fd, const void *buffer, unsigned int count ) -{ - return _write( fd, buffer, count ); -} - -// This doesn't belong here, but helps minimize changes to xine_demux_sputext.cpp - -#define strncasecmp _strnicmp -#define strcasecmp _stricmp - -typedef __int64 off64_t; -typedef int pid_t; - -#ifndef MAX -#define MAX( a, b ) ((a>b)?a:b) -#endif - -#ifndef MIN -#define MIN( a, b ) ((a -#include -#include /* _findfirst and _findnext set errno iff they return -1 */ -#include -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -typedef ptrdiff_t handle_type; /* C99's intptr_t not sufficiently portable */ - -struct DIR -{ - handle_type handle; /* -1 for failed rewind */ - struct _finddata_t info; - struct dirent result; /* d_name null iff first time */ - char *name; /* null-terminated char string */ -}; - -DIR *opendir(const char *name) -{ - DIR *dir = 0; - - if(name && name[0]) - { - size_t base_length = strlen(name); - const char *all = /* search pattern must end with suitable wildcard */ - strchr("/\\", name[base_length - 1]) ? "*" : "/*"; - - if((dir = (DIR *) malloc(sizeof *dir)) != 0 && - (dir->name = (char *) malloc(base_length + strlen(all) + 1)) != 0) - { - strcat(strcpy(dir->name, name), all); - - if((dir->handle = - (handle_type) _findfirst(dir->name, &dir->info)) != -1) - { - dir->result.d_name = 0; - } - else /* rollback */ - { - free(dir->name); - free(dir); - dir = 0; - } - } - else /* rollback */ - { - free(dir); - dir = 0; - errno = ENOMEM; - } - } - else - { - errno = EINVAL; - } - - return dir; -} - -int closedir(DIR *dir) -{ - int result = -1; - - if(dir) - { - if(dir->handle != -1) - { - result = _findclose(dir->handle); - } - - free(dir->name); - free(dir); - } - - if(result == -1) /* map all errors to EBADF */ - { - errno = EBADF; - } - - return result; -} - -struct dirent *readdir(DIR *dir) -{ - struct dirent *result = 0; - - if(dir && dir->handle != -1) - { - if(!dir->result.d_name || _findnext(dir->handle, &dir->info) != -1) - { - result = &dir->result; - result->d_name = dir->info.name; - } - } - else - { - errno = EBADF; - } - - return result; -} - -int readdir_r( DIR *dir, struct dirent *entry, struct dirent **result ) -{ - *result = 0; - - if(dir && dir->handle != -1) - { - if(!dir->result.d_name || _findnext(dir->handle, &dir->info) != -1) - { - *result = entry; - entry->d_name = dir->info.name; - return 0; - } - } - - return EBADF; -} - -void rewinddir(DIR *dir) -{ - if(dir && dir->handle != -1) - { - _findclose(dir->handle); - dir->handle = (handle_type) _findfirst(dir->name, &dir->info); - dir->result.d_name = 0; - } - else - { - errno = EBADF; - } -} - -#ifdef __cplusplus -} -#endif - -/* - - Copyright Kevlin Henney, 1997, 2003, 2012. All rights reserved. - - Permission to use, copy, modify, and distribute this software and its - documentation for any purpose is hereby granted without fee, provided - that this copyright and permissions notice appear in all copies and - derivatives. - - This software is supplied "as is" without express or implied warranty. - - But that said, if there are any problems please get in touch. - -*/ diff --git a/platform/win32/w64-mingw32/Installer/1 Install Mythtv.cmd b/platform/win32/w64-mingw32/Installer/1 Install Mythtv.cmd deleted file mode 100644 index d31868b342a..00000000000 --- a/platform/win32/w64-mingw32/Installer/1 Install Mythtv.cmd +++ /dev/null @@ -1,47 +0,0 @@ -echo off - -echo "1. Run Install Mythtv.cmd" -echo "2. Go to General->'Host Address and Network setup' (should be 127.0.0.1) and then exit and save." -echo "When exiting click do not fix" -echo "3. Run MythFrontend & Backend" -echo "config.xml is stored in C:\Users\%username%\AppData\Local\mythtv". Please enter your backend ip address/password if required. -echo "You may need to tweak the frontend video profiles under Setup->Video->playback and select opengl normal" - -echo "Press ctrl-x to quit the command prompt if mythtv gets stuck closing" - -echo "Ok?" -pause - - -robocopy share C:\ProgramData\ /E - -if not exist xampp-portable-windows.zip ( - curl -L "https://sourceforge.net/projects/xampp/files/XAMPP%%20Windows/8.0.9/xampp-portable-windows-x64-8.0.9-0-VS16.zip/download" > xampp-portable-windows.zip -) - -if not exist timezone_2021a_leaps.zip ( - curl -L https://downloads.mysql.com/general/timezone_2021a_leaps.zip > timezone_2021a_leaps.zip -) - -echo "copying files.." -tar -xf xampp-portable-windows.zip -tar -xf timezone_2021a_leaps.zip - -robocopy timezone_2021a_leaps\ xampp\mysql\data\mysql\ - -rmdir -r timezone_2021a_leaps /s /q - -cd xampp -start /min cmd /k "setup_xampp.bat" -TIMEOUT 5 /nobreak -start /min cmd /k "mysql\bin\mysqld --defaults-file=mysql\bin\my.ini --standalone" -TIMEOUT 7 /nobreak -echo "creating user" -"mysql\bin\mysql.exe" -u root -e "CREATE USER 'mythtv'@'localhost' IDENTIFIED BY 'mythtv';CREATE DATABASE mythconverg;GRANT ALL PRIVILEGES ON *.* TO 'mythtv'@'localhost';" - -cd .. -TIMEOUT 1 /nobreak -"bin/mythbackend.exe" -TIMEOUT 2 /nobreak -"bin/mythtv-setup.exe" -"bin/mythtv-setup.exe" diff --git a/platform/win32/w64-mingw32/Installer/2 Run MythFrontend & Backend.cmd b/platform/win32/w64-mingw32/Installer/2 Run MythFrontend & Backend.cmd deleted file mode 100644 index c99368a1042..00000000000 --- a/platform/win32/w64-mingw32/Installer/2 Run MythFrontend & Backend.cmd +++ /dev/null @@ -1,8 +0,0 @@ -cd xampp -start /min cmd /k "mysql\bin\mysqld --defaults-file=mysql\bin\my.ini --standalone" -cd .. -TIMEOUT 1 /nobreak -start cmd /k "bin\mythbackend.exe" -TIMEOUT 16 /nobreak -"bin\mythfrontend.exe" --disable-autodiscovery --noupnp -pause diff --git a/platform/win32/w64-mingw32/Installer/Run MythFrontend.cmd b/platform/win32/w64-mingw32/Installer/Run MythFrontend.cmd deleted file mode 100644 index d7f7f6d2817..00000000000 --- a/platform/win32/w64-mingw32/Installer/Run MythFrontend.cmd +++ /dev/null @@ -1 +0,0 @@ -"bin/mythfrontend.exe" --disable-autodiscovery --noupnp diff --git a/platform/win32/w64-mingw32/Installer/Run MythTv Setup.cmd b/platform/win32/w64-mingw32/Installer/Run MythTv Setup.cmd deleted file mode 100644 index 8a9ccb6a3de..00000000000 --- a/platform/win32/w64-mingw32/Installer/Run MythTv Setup.cmd +++ /dev/null @@ -1,5 +0,0 @@ -cd xampp -start /min cmd /k "mysql\bin\mysqld --defaults-file=mysql\bin\my.ini --standalone" -cd .. -"bin/mythtv-setup.exe" -pause diff --git a/platform/win32/w64-mingw32/MythBuild_MXE_libs.sh b/platform/win32/w64-mingw32/MythBuild_MXE_libs.sh deleted file mode 100755 index e88671ff766..00000000000 --- a/platform/win32/w64-mingw32/MythBuild_MXE_libs.sh +++ /dev/null @@ -1,184 +0,0 @@ -#!/bin/bash - -echo "Tested on ubuntu 2004. Run this file to build mythtv for Windows" - -sudo apt-get --assume-yes install \ - git gcc g++ wget python3 perl bzip2 lzip unzip libssl-dev \ - p7zip make autoconf automake bison flex autopoint gperf \ - libtool libtool-bin ruby intltool p7zip-full \ - pkg-config yasm mmv - -buildRoot=$PWD -while test ! -e "$buildRoot/.git" ; do - buildRoot=${buildRoot%/*} - if test "x$buildRoot" == "x" ; then - echo "Cannot find .git file or directory. Exiting." - exit - fi -done -export buildRoot -echo "Build root is $buildRoot" - -echo "Settings paths" -export buildPath=$buildRoot"/build" -export PATH=$buildPath"/mxe/usr/bin":$PATH - -if test "x$1" == "xclean" ; then - echo "Removing build tree" - rm -rf $buildPath -fi - -if test -e "$buildPath" ; then - echo "Build tree already exists" -else - echo "Creating build tree" - mkdir -p $buildPath/install/bin/plugins - mkdir -p $buildPath/themes -fi - -if test -e "$buildPath/themes/Mythbuntu-classic" ; then - echo "MythTV themes already exist" -else - echo "Cloning MythTV themes" - cd $buildPath/themes - git clone https://github.com/paul-h/MythCenterXMAS-wide.git - git clone https://github.com/wesnewell/Functionality - git clone https://github.com/MythTV-Themes/TintedGlass - git clone https://github.com/MythTV-Themes/Readability - git clone https://github.com/MythTV-Themes/Steppes - git clone https://github.com/MythTV-Themes/Retro-wide - git clone https://github.com/MythTV-Themes/LCARS - git clone https://github.com/MythTV-Themes/Childish - git clone https://github.com/MythTV-Themes/Arclight - git clone https://github.com/MythTV-Themes/Mythbuntu - git clone https://github.com/MythTV-Themes/blue-abstract-wide - git clone https://github.com/MythTV-Themes/Mythbuntu-classic -fi - -cd $buildPath -if test -d "mxe" ; then - echo "MXE already exists" -else - echo "Cloning MXE" - git clone https://github.com/mxe/mxe.git - - echo "Add SQL to QT" - sed -i 's/-no-sql-mysql /\//g' $buildPath/mxe/src/qt.mk - - cd mxe - make cc MXE_PLUGIN_DIRS=plugins/gcc8 MXE_TARGETS='i686-w64-mingw32.shared' vulkan-loader vulkan-headers qt5 nasm yasm libsamplerate taglib zlib gnutls mman-win32 pthreads libxml2 libdvdcss x264 x265 lame libass qtwebkit xvidcore libvpx vorbis flac - if test $? != 0 ; then - echo "Failed to build mxe." - exit - fi - cd .. - - find . -name \*.dll -exec cp {} \install/bin \; - - chmod -R 755 $buildPath/mxe - - echo -e "#define RTLD_LAZY 0 \n#define HAVE_DVDCSS_DVDCSS_H" | tee $buildPath/mxe/usr/i686-w64-mingw32.shared/include/dlfcn.h - - sed -i -e 's/#define GetUserName __MINGW_NAME_AW(GetUserName)//g' \ - -e 's/#define CopyFile __MINGW_NAME_AW(CopyFile)//g' \ - -e 's/#define MoveFile __MINGW_NAME_AW(MoveFile)//g' \ - $buildPath/mxe/usr/i686-w64-mingw32.shared/include/winbase.h - - #sudo apt-get --assume-yes remove yasm - - cp $buildPath/mxe/usr/x86_64-pc-linux-gnu/bin/yasm $buildPath/mxe/usr/bin/yasm - cp $buildPath/mxe/usr/bin/i686-w64-mingw32.shared-pkg-config $buildPath/mxe/usr/bin/pkg-config - cp -R $buildPath/mxe/usr/lib/gcc/i686-w64-mingw32.shared/8.4.0/include/c++ $buildPath/mxe/usr/lib/gcc/i686-w64-mingw32.shared/8.4.0/include -fi - - -cd $buildPath -if test -d "libudfread" ; then - echo "Directory libudfread already exists" -else - echo "Compiling libudfread" - git clone https://code.videolan.org/videolan/libudfread.git - cd libudfread - ./bootstrap - ./configure --prefix=$buildPath/mxe/usr/i686-w64-mingw32.shared --host=i686-w64-mingw32.shared - # libtool won't build this as a shared library without this flag. - sed -i 's/LDFLAGS = /LDFLAGS = -no-undefined/' Makefile - make -j$(nproc) - if test $? != 0 ; then - echo "Failed to build libudfread." - exit - fi - make install -fi - - -cd $buildPath -if test -d "libbluray" ; then - echo "Directory libbluray already exists" -else - git clone https://code.videolan.org/videolan/libbluray.git - chmod -R 755 libbluray - cd libbluray - git submodule update --init - - echo "Compiling libbluray" - ./bootstrap - ./configure --prefix=$buildPath/mxe/usr/i686-w64-mingw32.shared --disable-examples --with-freetype --with-libxml2 --disable-bdjava-jar --host=i686-w64-mingw32.shared - make -j$(nproc) - if test $? != 0 ; then - echo "Failed to build libbluray." - exit - fi - make install -fi - - -cd $buildPath -if test -d "libzip" ; then - echo "Directory libzip already exists" -else - echo "Compiling libzip" - git clone https://github.com/nih-at/libzip.git - chmod -R 755 libzip - cd libzip - $buildPath/mxe/usr/bin/i686-w64-mingw32.shared-cmake $buildPath/libzip - make -j$(nproc) - if test $? != 0 ; then - echo "Failed to build libzip." - exit - fi - make install -fi - - -cd $buildPath -if test -d "soundtouch" ; then - echo "Directory soundtouch already exists" -else - echo "Compiling SoundTouch" - git clone https://codeberg.org/soundtouch/soundtouch.git - chmod -R 755 soundtouch - cd soundtouch - ./bootstrap - ./configure --prefix=$buildPath/mxe/usr/i686-w64-mingw32.shared --host=i686-w64-mingw32.shared - sed -i 's/LDFLAGS = /LDFLAGS = -no-undefined/' $buildPath/soundtouch/source/SoundTouch/Makefile - make -j$(nproc) - if test $? != 0 ; then - echo "Failed to build soundtouch." - exit - fi - make install -fi - - -cd $buildPath -if test -f "$buildPath/mxe/usr/i686-w64-mingw32.shared/include/endian.h" ; then - echo "Endian.h already exists" -else - echo "Install endian.h" - git clone https://gist.github.com/PkmX/63dd23f28ba885be53a5 portable_endian - cp $buildPath/portable_endian/portable_endian.h $buildPath/mxe/usr/i686-w64-mingw32.shared/include/endian.h -fi - - -echo "Done" diff --git a/platform/win32/w64-mingw32/MythBuild_MXE_mythtv.sh b/platform/win32/w64-mingw32/MythBuild_MXE_mythtv.sh deleted file mode 100755 index 16ef7710e86..00000000000 --- a/platform/win32/w64-mingw32/MythBuild_MXE_mythtv.sh +++ /dev/null @@ -1,105 +0,0 @@ -#!/bin/bash - -buildRoot=$PWD -while test ! -e "$buildRoot/.git" ; do - buildRoot=${buildRoot%/*} - if test "x$buildRoot" == "x" ; then - echo "Cannot find root directory containing .git file or directory. Exiting." - exit - fi -done -export buildRoot -echo "Build root is $buildRoot" - -echo "Settings paths" -export buildPath=$buildRoot"/build" -export PATH=$buildPath"/mxe/usr/bin":$PATH -export qt5=$buildPath"/mxe/usr/i686-w64-mingw32.shared/qt5" -export in1=$buildPath"/mxe/usr/i686-w64-mingw32.shared" - -if test "x$1" == "xclean" ; then - echo "Removing MythTV build directory" - rm -rf $buildPath/mythtv -fi - -if test -e "$buildPath/mythtv" ; then - echo "MythTV build directory exists" -else - echo "Creating MythTV build directory" - mkdir -p $buildPath/mythtv - cd $buildRoot - cp -al mythplugins mythtv platform themestringstool $buildPath/mythtv -fi - -cd $buildPath/mythtv -if test -e .exif_patched ; then - echo "libexif source already patched" -else - echo "Patching libexif source" - patch -p1 < platform/win32/w64-mingw32/Patches/libexiv2.patch - touch .exif_patched -fi - -echo "Compiling mythtv" -cd $buildPath/mythtv/mythtv -./configure --prefix="$buildPath/install" --enable-cross-compile --cross-prefix=i686-w64-mingw32.shared- --target_os=mingw32 --arch=x86 --cpu=pentium3 --qmake=$qt5/bin/qmake --extra-cflags=-I$in1/include-I/home/ubuntu/Desktop/build/mxe/usr/lib/gcc/i686-w64-mingw32.shared/8.4.0/include/c++/i686-w64-mingw32.shared --extra-ldflags=-L$in1/lib --disable-lirc --disable-hdhomerun --disable-firewire --disable-vdpau --disable-nvdec --disable-dxva2 --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-libxvid --enable-libvpx --disable-w32threads --enable-silent_cc -if test $? != 0 ; then - echo "Configure failed." - exit -fi - -make -j$(nproc) -if test $? != 0 ; then - echo "Make failed." - exit -fi - -cp $buildPath/mythtv/mythtv/external/FFmpeg/ffmpeg_g.exe $buildPath/mythtv/mythtv/external/FFmpeg/mythffmpeg.exe -cp $buildPath/mythtv/mythtv/external/FFmpeg/ffprobe_g.exe $buildPath/mythtv/mythtv/external/FFmpeg/mythffprobe.exe -make install -if test $? != 0 ; then - echo "Make install failed." - exit -fi - -# Hack warning. The libxxx.dll.a files get installed as liblibxxx.dll.a. -cd $buildPath/install/lib -mmv -d 'liblib*' 'lib#1' - -cd $buildPath/mythtv/mythplugins -./configure --prefix="$buildPath/install" -cross-prefix=i686-w64-mingw32.shared- --disable-mytharchive -make -j$(nproc) install -if test $? != 0 ; then - echo "Make plugins failed." - exit -fi - -cp -R $buildPath/mythtv/platform/win32/w64-mingw32/Installer/. $buildPath/install/ -#cp -R $buildPath/mythtv/mythtv/src/COPYING $buildPath/install/COPYING -rsync -a --exclude=".git" $buildPath/themes $buildPath/install/share/mythtv/ - -cd $buildPath"/install/bin" - -mv opengl32.dll SOFTWARE_opengl32.dll -rm opengl32.dll - -mv libmythgame.dll plugins/libmythgame.dll -mv libmythnews.dll plugins/libmythnews.dll -mv libmythmusic.dll plugins/libmythmusic.dll -mv libmythbrowser.dll plugins/libmythbrowser.dll -mv libmythzoneminder.dll plugins/libmythzoneminder.dll - -mkdir -p platforms -mkdir -p sqldrivers -cp qwindows.dll $buildPath"/install/bin/platforms/windowplugin.dll" -cp qwindowsvistastyle.dll $buildPath"/install/bin/platforms/qwindowsvistastyle.dll" -cp qwindowsvistastyle.dll $buildPath"/install/bin/platforms/libtasn1-6.dll" -cp qsqlmysql.dll $buildPath"/install/bin/sqldrivers/qsqlmysql.dll" -cd .. - -find . -name \*.a -exec cp {} \lib \; -find . -name \*.lib -exec cp {} \lib \; - -zip -rq MythTv_Windows.zip * - -echo "Done" diff --git a/platform/win32/w64-mingw32/Patches/libexiv2.patch b/platform/win32/w64-mingw32/Patches/libexiv2.patch deleted file mode 100644 index 26d0db48fac..00000000000 --- a/platform/win32/w64-mingw32/Patches/libexiv2.patch +++ /dev/null @@ -1,285 +0,0 @@ -diff --git a/mythtv/external/libexiv2/include/exiv2/exv_conf.h b/mythtv/external/libexiv2/include/exiv2/exv_conf.h -index 99622ed5b7..ac0a9dfe20 100644 ---- a/mythtv/external/libexiv2/include/exiv2/exv_conf.h -+++ b/mythtv/external/libexiv2/include/exiv2/exv_conf.h -@@ -13,7 +13,9 @@ - /* #undef EXV_ENABLE_WEBREADY */ - - // Define if you have the `gmtime_r' function. --#define EXV_HAVE_GMTIME_R -+#ifndef _WIN32 -+ #define EXV_HAVE_GMTIME_R -+#endif - - // Define if you have the header file. - /* #undef EXV_HAVE_LIBINTL_H */ -@@ -61,10 +63,14 @@ - #define EXV_HAVE_STRINGS_H - - // Define if you have the mmap function. --#define EXV_HAVE_MMAP -+#ifndef _WIN32 -+ #define EXV_HAVE_MMAP -+#endif - - // Define if you have the munmap function. --#define EXV_HAVE_MUNMAP -+#ifndef _WIN32 -+ #define EXV_HAVE_MUNMAP -+#endif - - // Define if you have header file. - #define EXV_HAVE_SYS_STAT_H -diff --git a/mythtv/external/libexiv2/libexiv2.pro b/mythtv/external/libexiv2/libexiv2.pro -index 1ccb983477..04819c0cb3 100644 ---- a/mythtv/external/libexiv2/libexiv2.pro -+++ b/mythtv/external/libexiv2/libexiv2.pro -@@ -5,6 +5,8 @@ TARGET = mythexiv2-0.28 - target.path = $${LIBDIR} - INSTALLS = target - -+mingw:LIBS += -lz -liconv -+ - darwin { - QMAKE_CXXFLAGS = "-I. -I./include -I./include/exiv2 -I./src -I./xmpsdk/include" $${QMAKE_CXXFLAGS} - LIBS += -lexpat -liconv -lz -diff --git a/mythtv/external/libexiv2/src/crwimage_int.cpp b/mythtv/external/libexiv2/src/crwimage_int.cpp -index 9959f2310a..00bf2d333e 100644 ---- a/mythtv/external/libexiv2/src/crwimage_int.cpp -+++ b/mythtv/external/libexiv2/src/crwimage_int.cpp -@@ -1141,7 +1141,7 @@ namespace Exiv2 { - struct tm tm; - std::memset(&tm, 0x0, sizeof(tm)); - int rc = exifTime(ed->toString().c_str(), &tm); -- if (rc == 0) t = timegm(&tm); -+ //if (rc == 0) t = timegm(&tm); - } - if (t != 0) { - DataBuf buf(12); -diff --git a/mythtv/external/libexiv2/src/futils.cpp b/mythtv/external/libexiv2/src/futils.cpp -index 884fb5ff68..9948ff18e1 100644 ---- a/mythtv/external/libexiv2/src/futils.cpp -+++ b/mythtv/external/libexiv2/src/futils.cpp -@@ -479,9 +479,9 @@ namespace Exiv2 { - processHandle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, GetCurrentProcessId()); - if (processHandle != nullptr) { - TCHAR filename[MAX_PATH]; -- if (GetModuleFileNameEx(processHandle, nullptr, filename, MAX_PATH) != 0) { -+ //if (GetModuleFileNameEx(processHandle, nullptr, filename, MAX_PATH) != 0) { - ret = filename; -- } -+ //} - CloseHandle(processHandle); - } - #elif defined(__APPLE__) -@@ -526,14 +526,14 @@ namespace Exiv2 { - // enumerate loaded libraries and determine path to executable - HMODULE handles[200]; - DWORD cbNeeded; -- if ( EnumProcessModules(GetCurrentProcess(),handles,lengthof(handles),&cbNeeded)) { -- char szFilename[_MAX_PATH]; -- for ( DWORD h = 0 ; h < cbNeeded/sizeof(handles[0]) ; h++ ) { -- GetModuleFileNameA(handles[h],szFilename,lengthof(szFilename)) ; -- std::string path(szFilename); -- pushPath(path,libs,paths); -- } -- } -+ //if ( EnumProcessModules(GetCurrentProcess(),handles,lengthof(handles),&cbNeeded)) { -+ //char szFilename[_MAX_PATH]; -+ //for ( DWORD h = 0 ; h < cbNeeded/sizeof(handles[0]) ; h++ ) { -+ //GetModuleFileNameA(handles[h],szFilename,lengthof(szFilename)) ; -+ //std::string path(szFilename); -+ //pushPath(path,libs,paths); -+ //} -+ //} - #elif defined(__APPLE__) - // man 3 dyld - uint32_t count = _dyld_image_count(); -diff --git a/mythtv/external/libexiv2/src/http.cpp b/mythtv/external/libexiv2/src/http.cpp -index dc5f0ac97c..9d073fa823 100644 ---- a/mythtv/external/libexiv2/src/http.cpp -+++ b/mythtv/external/libexiv2/src/http.cpp -@@ -132,7 +132,7 @@ int sleep_ = SLEEP; - - static int forgive(int n, int& err) - { -- err = WSAGetLastError(); -+ err = 0;//WSAGetLastError(); - if (!n && !err) - return FINISH; - #ifndef WIN32 -@@ -140,7 +140,7 @@ static int forgive(int n, int& err) - return FINISH; // server hungup - #endif - bool bForgive = err == WSAEWOULDBLOCK || err == WSAENOTCONN; -- bool bError = n == SOCKET_ERROR; -+ bool bError = true;//n == SOCKET_ERROR; - if (bError && bForgive) - return 0; - return n; -@@ -192,7 +192,8 @@ static int makeNonBlocking(int sockfd) - { - #ifdef WIN32 - ULONG ioctl_opt = 1; -- return ioctlsocket(sockfd, FIONBIO, &ioctl_opt); -+ //return ioctlsocket(sockfd, FIONBIO, &ioctl_opt); -+ return 0; - #else - int result = fcntl(sockfd, F_SETFL, O_NONBLOCK); - return result >= 0 ? result : SOCKET_ERROR; -@@ -217,8 +218,8 @@ int Exiv2::http(Exiv2::Dictionary& request, Exiv2::Dictionary& response, std::st - //////////////////////////////////// - // Windows specific code - #ifdef WIN32 -- WSADATA wsaData; -- WSAStartup(MAKEWORD(2, 2), &wsaData); -+ //WSADATA wsaData; -+ //WSAStartup(MAKEWORD(2, 2), &wsaData); - #endif - - const char* servername = request["server"].c_str(); -@@ -268,41 +269,41 @@ int Exiv2::http(Exiv2::Dictionary& request, Exiv2::Dictionary& response, std::st - - //////////////////////////////////// - // open the socket -- int sockfd = (int)socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); -+ int sockfd = 0; //(int)socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); - if (sockfd < 0) - return error(errors, "unable to create socket\n", nullptr, nullptr, 0); - - // fill in the address -- struct sockaddr_in serv_addr; -- int serv_len = sizeof(serv_addr); -- memset((char*)&serv_addr, 0, serv_len); -+ //struct sockaddr_in serv_addr; -+ int serv_len = 0; //sizeof(serv_addr); -+ //memset((char*)&serv_addr, 0, serv_len); - -- serv_addr.sin_addr.s_addr = inet_addr(servername_p); -- serv_addr.sin_family = AF_INET; -- serv_addr.sin_port = htons(atoi(port_p)); -+ //serv_addr.sin_addr.s_addr = inet_addr(servername_p); -+ //serv_addr.sin_family = AF_INET; -+ //serv_addr.sin_port = htons(atoi(port_p)); - - // convert unknown servername into IP address - // http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=/rzab6/rzab6uafinet.htm -- if (serv_addr.sin_addr.s_addr == (unsigned long)INADDR_NONE) { -- struct hostent* host = gethostbyname(servername_p); -- if (!host) { -- closesocket(sockfd); -- return error(errors, "no such host", servername_p); -- } -- memcpy(&serv_addr.sin_addr, host->h_addr, sizeof(serv_addr.sin_addr)); -- } -+ //if (serv_addr.sin_addr.s_addr == (unsigned long)INADDR_NONE) { -+ //struct hostent* host = gethostbyname(servername_p); -+ //if (!host) { -+ ////closesocket(sockfd); -+ //return error(errors, "no such host", servername_p); -+ //} -+ //memcpy(&serv_addr.sin_addr, host->h_addr, sizeof(serv_addr.sin_addr)); -+ //} - - makeNonBlocking(sockfd); - - //////////////////////////////////// - // connect the socket to the server -- auto server = connect(sockfd, (const struct sockaddr*)&serv_addr, serv_len); -- if (server == SOCKET_ERROR && WSAGetLastError() != WSAEWOULDBLOCK) { -- auto errorCode = WSAGetLastError(); -- closesocket(sockfd); -- return error(errors, "error - unable to connect to server = %s port = %s wsa_error = %d", servername_p, port_p, -- errorCode); -- } -+ //auto server = connect(sockfd, (const struct sockaddr*)&serv_addr, serv_len); -+ //if (server == SOCKET_ERROR && WSAGetLastError() != WSAEWOULDBLOCK) { -+ //auto errorCode = WSAGetLastError(); -+ //closesocket(sockfd); -+ //return error(errors, "error - unable to connect to server = %s port = %s wsa_error = %d", servername_p, port_p, -+ // errorCode); -+ //} - - char buffer[32 * 1024 + 1]; - size_t buff_l = sizeof buffer - 1; -@@ -315,17 +316,17 @@ int Exiv2::http(Exiv2::Dictionary& request, Exiv2::Dictionary& response, std::st - - //////////////////////////////////// - // send the header (we'll have to wait for the connection by the non-blocking socket) -- while (sleep_ >= 0 && send(sockfd, buffer, n, 0) == SOCKET_ERROR /* && WSAGetLastError() == WSAENOTCONN */) { -- Sleep(snooze); -- sleep_ -= snooze; -- } -+ //while (sleep_ >= 0 && send(sockfd, buffer, n, 0) == SOCKET_ERROR /* && WSAGetLastError() == WSAENOTCONN */) { -+ //Sleep(snooze); -+ //sleep_ -= snooze; -+ //} - - if (sleep_ < 0) { -- auto errorCode = WSAGetLastError(); -- closesocket(server); -- closesocket(sockfd); -- return error(errors, "error - timeout connecting to server = %s port = %s wsa_error = %d", servername, port, -- errorCode); -+ //auto errorCode = WSAGetLastError(); -+ //closesocket(server); -+ //closesocket(sockfd); -+ //return error(errors, "error - timeout connecting to server = %s port = %s wsa_error = %d", servername, port, -+ // errorCode); - } - - int end = 0; // write position in buffer -@@ -335,7 +336,7 @@ int Exiv2::http(Exiv2::Dictionary& request, Exiv2::Dictionary& response, std::st - //////////////////////////////////// - // read and process the response - int err; -- n = forgive(recv(sockfd, buffer, (int)buff_l, 0), err); -+ n = false; //forgive(recv(sockfd, buffer, (int)buff_l, 0), err); - while (n >= 0 && OK(status)) { - if (n) { - end += n; -@@ -400,7 +401,7 @@ int Exiv2::http(Exiv2::Dictionary& request, Exiv2::Dictionary& response, std::st - flushBuffer(buffer, body, end, file); - } - } -- n = forgive(recv(sockfd, buffer + end, (int)(buff_l - end), 0), err); -+ n = false;//forgive(recv(sockfd, buffer + end, (int)(buff_l - end), 0), err); - if (!n) { - Sleep(snooze); - sleep_ -= snooze; -@@ -410,26 +411,26 @@ int Exiv2::http(Exiv2::Dictionary& request, Exiv2::Dictionary& response, std::st - } - - if (n != FINISH || !OK(status)) { -- snprintf(buffer, sizeof buffer, "wsa_error = %d,n = %d,sleep_ = %d status = %d", WSAGetLastError(), n, sleep_, -- status); -+ // snprintf(buffer, sizeof buffer, "wsa_error = %d,n = %d,sleep_ = %d status = %d", WSAGetLastError(), n, sleep_, -+ // status); - error(errors, buffer, nullptr, nullptr, 0); - } else if (bSearching && OK(status)) { - if (end) { - // we finished OK without finding headers, flush the buffer - flushBuffer(buffer, 0, end, file); - } else { -- auto errorCode = WSAGetLastError(); -- closesocket(server); -- closesocket(sockfd); -- return error(errors, "error - no response from server = %s port = %s wsa_error = %d", servername, port, -- errorCode); -+ //auto errorCode = WSAGetLastError(); -+ //closesocket(server); -+ //closesocket(sockfd); -+ //return error(errors, "error - no response from server = %s port = %s wsa_error = %d", servername, port, -+ // errorCode); - } - } - - //////////////////////////////////// - // close sockets -- closesocket(server); -- closesocket(sockfd); -+ //closesocket(server); -+ //closesocket(sockfd); - response["body"] = file; - return result; - }